ZGlmZiAtLWdpdCBhLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlODBkOAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0wLDAgKzEsOSBAQAorIyMgQ1B5dGhvbiBNaXJyb3IKKworaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uIGlzIGEgY3B5dGhvbiBtaXJyb3IgcmVwb3NpdG9yeS4gUHVsbCByZXF1ZXN0cworYXJlIG5vdCBhY2NlcHRlZCBvbiB0aGlzIHJlcG8gYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKyMjIyBTdWJtaXQgcGF0Y2hlcyBhdCBodHRwczovL2J1Z3MucHl0aG9uLm9yZworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgdG8gQ1B5dGhvbiwgc2VlIHRoZQorW2RldmVsb3BlcidzIGd1aWRlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8jY29udHJpYnV0aW5nKS4KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGQyNjdkMTUuLmVkNGViZmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjEsOCArMjEsNiBAQAogTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCiBMaWIvbGliMnRvMy8qLnBpY2tsZQogTGliL3Rlc3QvZGF0YS8qCi1MaWIvX3N5c2NvbmZpZ2RhdGEucHkKLUxpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCiBNaXNjL3B5dGhvbi5wYwpAQCAtNzMsNiArNzEsNyBAQAogaXBjaC8KIGxpYnB5dGhvbiouYQogbGlicHl0aG9uKi5zbyoKK2xpYnB5dGhvbiouZHlsaWIKIHBsYXRmb3JtCiBweWJ1aWxkZGlyLnR4dAogcHljb25maWcuaApkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IGNmOTQ1M2EuLjkyODk2YjcgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTIsNiArMiw3IEBACiAucHVyaWZ5CiAuc3ZuLwogXi5pZGVhLworXi52c2NvZGUvCiAuRFNfU3RvcmUKIE1ha2VmaWxlJAogTWFrZWZpbGUucHJlJApAQCAtMjUsNyArMjYsNiBAQAogcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKIE1pc2MvcHl0aG9uLnBjCiBNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJApAQCAtNDMsNiArNDMsNyBAQAogc3ludGF4OiBnbG9iCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCiAqLnN3cAogKi5vCiAqLnB5YwpAQCAtNTQsNiArNTUsNyBAQAogKi5wcm9mY2xhbmc/CiAqLnByb2ZyYXcKICouZHluCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGVkNGZjOTIuLjM5MGUxMGQgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ4LDYgKzE0OCw3IEBACiA3MzdlZmNhZGY1YTY3OGIxODRlMGZhNDMxYWFlMTEyNzZiZjA2NjQ4IHYzLjQuNAogMzYzMWJiNGEyNDkwMjkyZWJmODFkM2U5NDdhZTM2ZGExNDVkYTU2NCB2My40LjVyYzEKIDYxOWI2MWU1MDVkMGUyY2NjODUxNmIzNjZlNGRkZDE5NzFiNDZhNmYgdjMuNC41CiszNjMxYmI0YTI0OTAyOTJlYmY4MWQzZTk0N2FlMzZkYTE0NWRhNTY0IHYzLjQuNXJjMQogNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQogMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgogODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMwpAQCAtMTY1LDMgKzE2Niw5IEBACiAzN2EwN2NlZTU5NjllNmQzNjcyNTgzMTg3YTczY2Y2MzZmZjI4ZTFiIHYzLjUuMQogNjhmZWVjNjQ4OGIyNjMyN2E4NWE2MzQ2MDVkZDI4ZWNhNGRhYTVmMSB2My41LjJyYzEKIDRkZWYyYTI5MDFhNTYxOGVhNDViY2M4ZjJhMTQxMWVmMzNhZjE4YWQgdjMuNS4yCis1ODk2ZGEzNzJmYjA0NGUzODU5NWZiNzQ0OTVkZTFlMWU3YzhmYjNjIHYzLjYuMGExCiszNzg4OTM0MjM1NTIyM2UyZmMxNDM4ZGUzZGM3ZmZjZDYyNWM2MGY3IHYzLjYuMGEyCitmM2VkZjEzZGMzMzliODk0MmFlNmIzMDk3NzFhYjE5N2RkOGNlNmZhIHYzLjYuMGEzCiswMTdjZjI2MDkzNmI0NDQ3ODhjOWI2NzFkMTk1YjdiZmQ4M2RiZDI1IHYzLjYuMGE0Cis1YjBjYTRlZDVlMmYwNjY5ZDc2ZWNlN2VmOTc1YzU0NDU4MGYxMmI0IHYzLjYuMGIxCitiOWZhZGM3ZDFjM2Y5YzNjNzdmMzJmMzVhZmJlMWExY2MzODA3MGU2IHYzLjYuMGIyCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggMTBjMzI4OC4uOTFmOTM3ZiAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtMTUzLDcgKzE1Myw3IEBACiAJY3AgLXBQUiBidWlsZC9lcHViL1B5dGhvbi5lcHViIGRpc3QvcHl0aG9uLSQoRElTVFZFUlNJT04pLWRvY3MuZXB1YgogCiBjaGVjazoKLQkkKFBZVEhPTikgdG9vbHMvcnN0bGludC5weSAtaSB0b29scworCSQoUFlUSE9OKSB0b29scy9yc3RsaW50LnB5IC1pIHRvb2xzIC1pIHZlbnYKIAogc2VydmU6CiAJLi4vVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weSBidWlsZC9odG1sCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IDExMjM5NzIuLmU4ZTdlMGQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0yMjMsOCArMjIzLDcgQEAKICAgIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVgIHdpbGwgdXNlIHRoaXMgbG9jYXRpb24gYXMgdGhlIGJ1ZmZlciBhbmQgaW50ZXJwcmV0IHRoZQogICAgaW5pdGlhbCB2YWx1ZSBvZiAqXCpidWZmZXJfbGVuZ3RoKiBhcyB0aGUgYnVmZmVyIHNpemUuICBJdCB3aWxsIHRoZW4gY29weSB0aGUKICAgIGVuY29kZWQgZGF0YSBpbnRvIHRoZSBidWZmZXIgYW5kIE5VTC10ZXJtaW5hdGUgaXQuICBJZiB0aGUgYnVmZmVyIGlzIG5vdCBsYXJnZQotICAgZW5vdWdoLCBhIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSBzZXQuCi0gICBOb3RlOiBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjYgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KKyAgIGVub3VnaCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KIAogICAgSW4gYm90aCBjYXNlcywgKlwqYnVmZmVyX2xlbmd0aCogaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIGVuY29kZWQgZGF0YQogICAgd2l0aG91dCB0aGUgdHJhaWxpbmcgTlVMIGJ5dGUuCkBAIC0yNjYsMTUgKzI2NSwxMiBAQAogICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCB3aXRob3V0CiAgICBvdmVyZmxvdyBjaGVja2luZy4KIAotYGBMYGAgKDpjbGFzczpgaW50YCkgW1BZX0xPTkdfTE9OR10KLSAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4gIFRoaXMgZm9ybWF0IGlzIG9ubHkKLSAgIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpjOnR5cGU6YGxvbmcgbG9uZ2AgKG9yIDpjOnR5cGU6YF9pbnQ2NGAgb24KLSAgIFdpbmRvd3MpLgorYGBMYGAgKDpjbGFzczpgaW50YCkgW2xvbmcgbG9uZ10KKyAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4KIAotYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIFBZX0xPTkdfTE9OR10KK2BgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nIGxvbmddCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AKLSAgIHdpdGhvdXQgb3ZlcmZsb3cgY2hlY2tpbmcuICBUaGlzIGZvcm1hdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdAotICAgc3VwcG9ydCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmB1bnNpZ25lZCBfaW50NjRgIG9uIFdpbmRvd3MpLgorICAgd2l0aG91dCBvdmVyZmxvdyBjaGVja2luZy4KIAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgpAQCAtNDI0LDggKzQyMCwxNSBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCAuLi4pCiAKICAgIFBhcnNlIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBib3RoIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKLSAgIHBhcmFtZXRlcnMgaW50byBsb2NhbCB2YXJpYWJsZXMuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzczsgb24gZmFpbHVyZSwgaXQKLSAgIHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgcGFyYW1ldGVycyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gIFRoZSAqa2V5d29yZHMqIGFyZ3VtZW50IGlzIGEKKyAgICpOVUxMKi10ZXJtaW5hdGVkIGFycmF5IG9mIGtleXdvcmQgcGFyYW1ldGVyIG5hbWVzLiAgRW1wdHkgbmFtZXMgZGVub3RlCisgICA6cmVmOmBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgorICAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M7IG9uIGZhaWx1cmUsIGl0IHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUKKyAgIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIDpyZWY6YHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzCisgICAgICA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCB2YV9saXN0IHZhcmdzKQpAQCAtNTg4LDE1ICs1OTEsMTEgQEAKICAgIGBga2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nXQogICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuCiAKLSAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtQWV9MT05HX0xPTkddCi0gICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LiBPbmx5IGF2YWlsYWJsZQotICAgICAgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6Yzp0eXBlOmBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmBfaW50NjRgIG9uCi0gICAgICBXaW5kb3dzKS4KKyAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtsb25nIGxvbmddCisgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LgogCi0gICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgUFlfTE9OR19MT05HXQotICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4gT25seQotICAgICAgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCAob3IKLSAgICAgIDpjOnR5cGU6YHVuc2lnbmVkIF9pbnQ2NGAgb24gV2luZG93cykuCisgICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgbG9uZyBsb25nXQorICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4KIAogICAgYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBQeV9zc2l6ZV90YCB0byBhIFB5dGhvbiBpbnRlZ2VyLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDE5Y2JiM2IuLjI1ZmIyOWMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTMwNiw2ICszMDYsMTMgQEAKICAgIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgYW5kIHRoZSA6b3B0aW9uOmAtV2Agb3B0aW9uIGluIHRoZSBjb21tYW5kIGxpbmUKICAgIGRvY3VtZW50YXRpb24uICBUaGVyZSBpcyBubyBDIEFQSSBmb3Igd2FybmluZyBjb250cm9sLgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorCisgICBNdWNoIGxpa2UgOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIGJ1dCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBmb3IKKyAgIHNwZWNpZnlpbmcgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgdG8gcmFpc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnJlZ2lzdHJ5KQogCkBAIC0zMzQsNiArMzQxLDE0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKworICAgRnVuY3Rpb24gc2ltaWxhciB0byA6YzpmdW5jOmBQeUVycl9XYXJuRm9ybWF0YCwgYnV0ICpjYXRlZ29yeSogaXMKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AgYW5kIHBhc3MgKnNvdXJjZSogdG8gOmZ1bmM6YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogUXVlcnlpbmcgdGhlIGVycm9yIGluZGljYXRvcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC03NzQsNiArNzg5LDggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgIHwgOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgIHwgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCA3MGI5OGFlLi4yOTY1YmM5IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgICB0cmlwbGU6IG1vZHVsZTsgc2VhcmNoOyBwYXRoCiAgICAgICBzaW5nbGU6IFB5U3lzX1NldEFyZ3YoKQogICAgICAgc2luZ2xlOiBQeVN5c19TZXRBcmd2RXgoKQotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogCiAgICBJbml0aWFsaXplIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBJbiBhbiBhcHBsaWNhdGlvbiBlbWJlZGRpbmcgIFB5dGhvbiwgdGhpcwogICAgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgYW55IG90aGVyIFB5dGhvbi9DIEFQSSBmdW5jdGlvbnM7IHdpdGggdGhlCkBAIC0zNCw3ICszNCw3IEBACiAgICBtb2R1bGVzIDptb2Q6YGJ1aWx0aW5zYCwgOm1vZDpgX19tYWluX19gIGFuZCA6bW9kOmBzeXNgLiAgSXQgYWxzbyBpbml0aWFsaXplcwogICAgdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCAoYGBzeXMucGF0aGBgKS4gSXQgZG9lcyBub3Qgc2V0IGBgc3lzLmFyZ3ZgYDsgdXNlCiAgICA6YzpmdW5jOmBQeVN5c19TZXRBcmd2RXhgIGZvciB0aGF0LiAgVGhpcyBpcyBhIG5vLW9wIHdoZW4gY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lCi0gICAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBmaXJzdCkuICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWU7IGl0IGlzIGEKKyAgICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlOyBpdCBpcyBhCiAgICBmYXRhbCBlcnJvciBpZiB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAKICAgIC4uIG5vdGU6OgpAQCAtNTIsMTkgKzUyLDIwIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0lzSW5pdGlhbGl6ZWQoKQogCiAgICBSZXR1cm4gdHJ1ZSAobm9uemVybykgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBmYWxzZQotICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBpcyBjYWxsZWQsIHRoaXMgcmV0dXJucyBmYWxzZSB1bnRpbAorICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyByZXR1cm5zIGZhbHNlIHVudGlsCiAgICA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBpcyBjYWxsZWQgYWdhaW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRmluYWxpemUoKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeV9GaW5hbGl6ZUV4KCkKIAogICAgVW5kbyBhbGwgaW5pdGlhbGl6YXRpb25zIG1hZGUgYnkgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYW5kIHN1YnNlcXVlbnQgdXNlIG9mCiAgICBQeXRob24vQyBBUEkgZnVuY3Rpb25zLCBhbmQgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyAoc2VlCiAgICA6YzpmdW5jOmBQeV9OZXdJbnRlcnByZXRlcmAgYmVsb3cpIHRoYXQgd2VyZSBjcmVhdGVkIGFuZCBub3QgeWV0IGRlc3Ryb3llZCBzaW5jZQogICAgdGhlIGxhc3QgY2FsbCB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4gIElkZWFsbHksIHRoaXMgZnJlZXMgYWxsIG1lbW9yeQogICAgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBUaGlzIGlzIGEgbm8tb3Agd2hlbiBjYWxsZWQgZm9yIGEgc2Vjb25kCi0gICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuCi0gICB2YWx1ZTsgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24gYXJlIGlnbm9yZWQuCisgICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgTm9ybWFsbHkgdGhlCisgICByZXR1cm4gdmFsdWUgaXMgMC4gIElmIHRoZXJlIHdlcmUgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24KKyAgIChmbHVzaGluZyBidWZmZXJlZCBkYXRhKSwgLTEgaXMgcmV0dXJuZWQuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuICBBbiBlbWJlZGRpbmcgYXBwbGljYXRpb24KICAgIG1pZ2h0IHdhbnQgdG8gcmVzdGFydCBQeXRob24gd2l0aG91dCBoYXZpbmcgdG8gcmVzdGFydCB0aGUgYXBwbGljYXRpb24gaXRzZWxmLgpAQCAtODMsNyArODQsMTUgQEAKICAgIGZyZWVkLiAgU29tZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzIG1heSBub3QgYmUgZnJlZWQuICBTb21lCiAgICBleHRlbnNpb25zIG1heSBub3Qgd29yayBwcm9wZXJseSBpZiB0aGVpciBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGNhbGxlZCBtb3JlCiAgICB0aGFuIG9uY2U7IHRoaXMgY2FuIGhhcHBlbiBpZiBhbiBhcHBsaWNhdGlvbiBjYWxscyA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhbmQKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBtb3JlIHRoYW4gb25jZS4KKyAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIG1vcmUgdGhhbiBvbmNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9GaW5hbGl6ZSgpCisKKyAgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIHRoYXQKKyAgIGRpc3JlZ2FyZHMgdGhlIHJldHVybiB2YWx1ZS4KIAogCiBQcm9jZXNzLXdpZGUgcGFyYW1ldGVycwpAQCAtMTExLDcgKzEyMCw3IEBACiAgICBOb3RlIHRoYXQgOmRhdGE6YHN5cy5zdGRlcnJgIGFsd2F5cyB1c2VzIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IKICAgIGhhbmRsZXIsIHJlZ2FyZGxlc3Mgb2YgdGhpcyAob3IgYW55IG90aGVyKSBzZXR0aW5nLgogCi0gICBJZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgaXMgY2FsbGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgbmVlZCB0byBiZSBjYWxsZWQKKyAgIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIG5lZWQgdG8gYmUgY2FsbGVkCiAgICBhZ2FpbiBpbiBvcmRlciB0byBhZmZlY3Qgc3Vic2VxdWVudCBjYWxscyB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIAogICAgUmV0dXJucyBgYDBgYCBpZiBzdWNjZXNzZnVsLCBhIG5vbnplcm8gdmFsdWUgb24gZXJyb3IgKGUuZy4gY2FsbGluZyBhZnRlciB0aGUKQEAgLTkyMiw3ICs5MzEsNyBAQAogICAgZW50cnkuKQogCiAgICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgICAgIHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAgICAgICBzaW5nbGU6IFB5X0luaXRpYWxpemUoKQogCiAgICBFeHRlbnNpb24gbW9kdWxlcyBhcmUgc2hhcmVkIGJldHdlZW4gKHN1Yi0paW50ZXJwcmV0ZXJzIGFzIGZvbGxvd3M6IHRoZSBmaXJzdApAQCAtOTMyLDcgKzk0MSw3IEBACiAgICBhbmQgZmlsbGVkIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoaXMgY29weTsgdGhlIGV4dGVuc2lvbidzIGBgaW5pdGBgIGZ1bmN0aW9uIGlzCiAgICBub3QgY2FsbGVkLiAgTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IGZyb20gd2hhdCBoYXBwZW5zIHdoZW4gYW4gZXh0ZW5zaW9uIGlzCiAgICBpbXBvcnRlZCBhZnRlciB0aGUgaW50ZXJwcmV0ZXIgaGFzIGJlZW4gY29tcGxldGVseSByZS1pbml0aWFsaXplZCBieSBjYWxsaW5nCi0gICA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgYW5kIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgOyBpbiB0aGF0IGNhc2UsIHRoZSBleHRlbnNpb24ncworICAgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgYW5kIDpjOmZ1bmM6YFB5X0luaXRpYWxpemVgOyBpbiB0aGF0IGNhc2UsIHRoZSBleHRlbnNpb24ncwogICAgYGBpbml0bW9kdWxlYGAgZnVuY3Rpb24gKmlzKiBjYWxsZWQgYWdhaW4uCiAKICAgIC4uIGluZGV4Ojogc2luZ2xlOiBjbG9zZSgpIChpbiBtb2R1bGUgb3MpCkBAIC05NDAsMTQgKzk0OSwxNCBAQAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICp0c3RhdGUpCiAKLSAgIC4uIGluZGV4Ojogc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAuLiBpbmRleDo6IHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAKICAgIERlc3Ryb3kgdGhlIChzdWItKWludGVycHJldGVyIHJlcHJlc2VudGVkIGJ5IHRoZSBnaXZlbiB0aHJlYWQgc3RhdGUuIFRoZSBnaXZlbgogICAgdGhyZWFkIHN0YXRlIG11c3QgYmUgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlLiAgU2VlIHRoZSBkaXNjdXNzaW9uIG9mIHRocmVhZAogICAgc3RhdGVzIGJlbG93LiAgV2hlbiB0aGUgY2FsbCByZXR1cm5zLCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUgaXMgKk5VTEwqLiAgQWxsCiAgICB0aHJlYWQgc3RhdGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGludGVycHJldGVyIGFyZSBkZXN0cm95ZWQuICAoVGhlIGdsb2JhbAogICAgaW50ZXJwcmV0ZXIgbG9jayBtdXN0IGJlIGhlbGQgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhbmQgaXMgc3RpbGwgaGVsZAotICAgd2hlbiBpdCByZXR1cm5zLikgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCB3aWxsIGRlc3Ryb3kgYWxsIHN1Yi1pbnRlcnByZXRlcnMgdGhhdAorICAgd2hlbiBpdCByZXR1cm5zLikgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIHdpbGwgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyB0aGF0CiAgICBoYXZlbid0IGJlZW4gZXhwbGljaXRseSBkZXN0cm95ZWQgYXQgdGhhdCBwb2ludC4KIAogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvaW50cm8ucnN0IGIvRG9jL2MtYXBpL2ludHJvLnJzdAppbmRleCBiYzNhNzUyLi43NDY4MWQyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW50cm8ucnN0CisrKyBiL0RvYy9jLWFwaS9pbnRyby5yc3QKQEAgLTY0LDkgKzY0LDEwIEBACiBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcmllcyA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZS9weXRob252ZXJzaW9uL2AgYW5kCiA6ZmlsZTpge2V4ZWNfcHJlZml4fS9pbmNsdWRlL3B5dGhvbnZlcnNpb24vYCwgd2hlcmUgOmVudnZhcjpgcHJlZml4YCBhbmQKIDplbnZ2YXI6YGV4ZWNfcHJlZml4YCBhcmUgZGVmaW5lZCBieSB0aGUgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzIHRvIFB5dGhvbidzCi06cHJvZ3JhbTpgY29uZmlndXJlYCBzY3JpcHQgYW5kICp2ZXJzaW9uKiBpcyBgYHN5cy52ZXJzaW9uWzozXWBgLiAgT24gV2luZG93cywKLXRoZSBoZWFkZXJzIGFyZSBpbnN0YWxsZWQgaW4gOmZpbGU6YHtwcmVmaXh9L2luY2x1ZGVgLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGlzCi10aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBzcGVjaWZpZWQgdG8gdGhlIGluc3RhbGxlci4KKzpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdCBhbmQgKnZlcnNpb24qIGlzCitgYCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXWBgLiAgT24gV2luZG93cywgdGhlIGhlYWRlcnMgYXJlIGluc3RhbGxlZAoraW4gOmZpbGU6YHtwcmVmaXh9L2luY2x1ZGVgLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGlzIHRoZSBpbnN0YWxsYXRpb24KK2RpcmVjdG9yeSBzcGVjaWZpZWQgdG8gdGhlIGluc3RhbGxlci4KIAogVG8gaW5jbHVkZSB0aGUgaGVhZGVycywgcGxhY2UgYm90aCBkaXJlY3RvcmllcyAoaWYgZGlmZmVyZW50KSBvbiB5b3VyIGNvbXBpbGVyJ3MKIHNlYXJjaCBwYXRoIGZvciBpbmNsdWRlcy4gIERvICpub3QqIHBsYWNlIHRoZSBwYXJlbnQgZGlyZWN0b3JpZXMgb24gdGhlIHNlYXJjaApAQCAtNTc4LDkgKzU3OSw5IEBACiBhcHBsaWNhdGlvbiBtYXkgd2FudCB0byBzdGFydCBvdmVyIChtYWtlIGFub3RoZXIgY2FsbCB0bwogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWApIG9yIHRoZSBhcHBsaWNhdGlvbiBpcyBzaW1wbHkgZG9uZSB3aXRoIGl0cyAgdXNlIG9mCiBQeXRob24gYW5kIHdhbnRzIHRvIGZyZWUgbWVtb3J5IGFsbG9jYXRlZCBieSBQeXRob24uICBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQKLWJ5IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVgLiAgVGhlIGZ1bmN0aW9uIDpjOmZ1bmM6YFB5X0lzSW5pdGlhbGl6ZWRgIHJldHVybnMKK2J5IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAuICBUaGUgZnVuY3Rpb24gOmM6ZnVuYzpgUHlfSXNJbml0aWFsaXplZGAgcmV0dXJucwogdHJ1ZSBpZiBQeXRob24gaXMgY3VycmVudGx5IGluIHRoZSBpbml0aWFsaXplZCBzdGF0ZS4gIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQKLXRoZXNlIGZ1bmN0aW9ucyBpcyBnaXZlbiBpbiBhIGxhdGVyIGNoYXB0ZXIuIE5vdGljZSB0aGF0IDpjOmZ1bmM6YFB5X0ZpbmFsaXplYAordGhlc2UgZnVuY3Rpb25zIGlzIGdpdmVuIGluIGEgbGF0ZXIgY2hhcHRlci4gTm90aWNlIHRoYXQgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAKIGRvZXMgKm5vdCogZnJlZSBhbGwgbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUgUHl0aG9uIGludGVycHJldGVyLCBlLmcuIG1lbW9yeQogYWxsb2NhdGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzIGN1cnJlbnRseSBjYW5ub3QgYmUgcmVsZWFzZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9sb25nLnJzdCBiL0RvYy9jLWFwaS9sb25nLnJzdAppbmRleCA2OGY2YThlLi5mNTkyY2I2IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbG9uZy5yc3QKKysrIGIvRG9jL2MtYXBpL2xvbmcucnN0CkBAIC02MiwxMyArNjIsMTMgQEAKICAgICpOVUxMKiBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21Mb25nTG9uZyhQWV9MT05HX0xPTkcgdikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21Mb25nTG9uZyhsb25nIGxvbmcgdikKIAogICAgUmV0dXJuIGEgbmV3IDpjOnR5cGU6YFB5TG9uZ09iamVjdGAgb2JqZWN0IGZyb20gYSBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AsIG9yICpOVUxMKgogICAgb24gZmFpbHVyZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh1bnNpZ25lZCBQWV9MT05HX0xPTkcgdikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyB2KQogCiAgICBSZXR1cm4gYSBuZXcgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCBvYmplY3QgZnJvbSBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCwKICAgIG9yICpOVUxMKiBvbiBmYWlsdXJlLgpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICBvY2N1cnMgc2V0ICpcKm92ZXJmbG93KiB0byBgYDBgYCBhbmQgcmV0dXJuIGBgLTFgYCBhcyB1c3VhbC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUFlfTE9OR19MT05HIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICpvYmopCisuLiBjOmZ1bmN0aW9uOjogbG9uZyBsb25nIFB5TG9uZ19Bc0xvbmdMb25nKFB5T2JqZWN0ICpvYmopCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogT3ZlcmZsb3dFcnJvciAoYnVpbHQtaW4gZXhjZXB0aW9uKQpAQCAtMTYxLDcgKzE2MSw3IEBACiAgICA6Yzp0eXBlOmBsb25nYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUFlfTE9OR19MT05HIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKm9iaiwgaW50ICpvdmVyZmxvdykKKy4uIGM6ZnVuY3Rpb246OiBsb25nIGxvbmcgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqb2JqLCBpbnQgKm92ZXJmbG93KQogCiAgICBSZXR1cm4gYSBDIDpjOnR5cGU6YGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKm9iaiouICBJZiAqb2JqKiBpcyBub3QgYW4KICAgIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAsIGZpcnN0IGNhbGwgaXRzIDptZXRoOmBfX2ludF9fYCBtZXRob2QKQEAgLTIxMCwxNiArMjEwLDE2IEBACiAgICA6Yzp0eXBlOmBzaXplX3RgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiB1bnNpZ25lZCBQWV9MT05HX0xPTkcgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqcHlsb25nKQorLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIGxvbmcgbG9uZyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICpweWxvbmcpCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogT3ZlcmZsb3dFcnJvciAoYnVpbHQtaW4gZXhjZXB0aW9uKQogCi0gICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIFBZX0xPTkdfTE9OR2AgcmVwcmVzZW50YXRpb24gb2YgKnB5bG9uZyouCi0gICAqcHlsb25nKiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAuCisgICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKnB5bG9uZyouICAqcHlsb25nKgorICAgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgLgogCiAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpZiB0aGUgdmFsdWUgb2YgKnB5bG9uZyogaXMgb3V0IG9mIHJhbmdlIGZvciBhbgotICAgOmM6dHlwZTpgdW5zaWduZWQgUFlfTE9OR19MT05HYC4KKyAgIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBIG5lZ2F0aXZlICpweWxvbmcqIG5vdyByYWlzZXMgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIG5vdCA6ZXhjOmBUeXBlRXJyb3JgLgpAQCAtMjM1LDcgKzIzNSw3IEBACiAgICByZXR1cm4gdGhlIHJlZHVjdGlvbiBvZiB0aGF0IHZhbHVlIG1vZHVsbyBgYFVMT05HX01BWCArIDFgYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgUFlfTE9OR19MT05HIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICpvYmopCisuLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgbG9uZyBsb25nIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICpvYmopCiAKICAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqb2JqKi4gIElmICpvYmoqCiAgICBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCwgZmlyc3QgY2FsbCBpdHMgOm1ldGg6YF9faW50X19gCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdCBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CmluZGV4IDI5MGVmMDkuLjNmZjU0NTIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnkucnN0CisrKyBiL0RvYy9jLWFwaS9tZW1vcnkucnN0CkBAIC04NSw5ICs4NSwxMiBAQAogCiAuLiBzZWVhbHNvOjoKIAorICAgVGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlCisgICB0aGUgbWVtb3J5IGFsbG9jYXRvcnMgdXNlZCBieSBQeXRob24uCisKICAgIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NTVEFUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gcHJpbnQKLSAgIG1lbW9yeSBhbGxvY2F0aW9uIHN0YXRpc3RpY3MgZXZlcnkgdGltZSBhIG5ldyBvYmplY3QgYXJlbmEgaXMgY3JlYXRlZCwgYW5kCi0gICBvbiBzaHV0ZG93bi4KKyAgIHN0YXRpc3RpY3Mgb2YgdGhlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAgZXZlcnkgdGltZSBhCisgICBuZXcgcHltYWxsb2Mgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZCBvbiBzaHV0ZG93bi4KIAogCiBSYXcgTWVtb3J5IEludGVyZmFjZQpAQCAtMTYyLDE1ICsxNjUsMTcgQEAKIGJlaGF2aW9yIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLCBhcmUgYXZhaWxhYmxlIGZvciBhbGxvY2F0aW5nIGFuZCByZWxlYXNpbmcKIG1lbW9yeSBmcm9tIHRoZSBQeXRob24gaGVhcC4KIAotVGhlIGRlZmF1bHQgbWVtb3J5IGJsb2NrIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotOmM6ZnVuYzpgbWFsbG9jYCwgOmM6ZnVuYzpgY2FsbG9jYCwgOmM6ZnVuYzpgcmVhbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgOyBjYWxsCi1gYG1hbGxvYygxKWBgIChvciBgYGNhbGxvYygxLCAxKWBgKSB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcy4KK0J5IGRlZmF1bHQsIHRoZXNlIGZ1bmN0aW9ucyB1c2UgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvciA8cHltYWxsb2M+YC4KIAogLi4gd2FybmluZzo6CiAKICAgIFRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIG11c3QgYmUgaGVsZCB3aGVuIHVzaW5nIHRoZXNlCiAgICBmdW5jdGlvbnMuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgIFRoZSBkZWZhdWx0IGFsbG9jYXRvciBpcyBub3cgcHltYWxsb2MgaW5zdGVhZCBvZiBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4KKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5TWVtX01hbGxvYyhzaXplX3QgbikKIAogICAgQWxsb2NhdGVzICpuKiBieXRlcyBhbmQgcmV0dXJucyBhIHBvaW50ZXIgb2YgdHlwZSA6Yzp0eXBlOmB2b2lkXCpgIHRvIHRoZQpAQCAtMjkyLDE1ICsyOTcsMzIgQEAKIAogICAgRW51bSB1c2VkIHRvIGlkZW50aWZ5IGFuIGFsbG9jYXRvciBkb21haW4uIERvbWFpbnM6CiAKLSAgICogOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX1JBV2A6IGZ1bmN0aW9ucyA6YzpmdW5jOmBQeU1lbV9SYXdNYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SYXdSZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYCBhbmQKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmF3RnJlZWAKLSAgICogOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWA6IGZ1bmN0aW9ucyA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCBhbmQgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKLSAgICogOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmA6IGZ1bmN0aW9ucyA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYCBhbmQKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKKyAgIC4uIGM6dmFyOjogUFlNRU1fRE9NQUlOX1JBVwogCisgICAgICBGdW5jdGlvbnM6CisKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdSZWFsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCisKKyAgIC4uIGM6dmFyOjogUFlNRU1fRE9NQUlOX01FTQorCisgICAgICBGdW5jdGlvbnM6CisKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCwKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9GcmVlYAorCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9PQkoKKworICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9HZXRBbGxvY2F0b3IoUHlNZW1BbGxvY2F0b3JEb21haW4gZG9tYWluLCBQeU1lbUFsbG9jYXRvckV4ICphbGxvY2F0b3IpCiAKQEAgLTMyNSw0MyArMzQ3LDYyIEBACiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5TWVtX1NldHVwRGVidWdIb29rcyh2b2lkKQogCi0gICBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgZm9sbG93aW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yCi0gICBmdW5jdGlvbnM6Ci0KLSAgIC0gOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCi0gICAtIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9DYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9GcmVlYAotICAgLSA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgLCA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfQ2FsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKKyAgIFNldHVwIGhvb2tzIHRvIGRldGVjdCBidWdzIGluIHRoZSBQeXRob24gbWVtb3J5IGFsbG9jYXRvciBmdW5jdGlvbnMuCiAKICAgIE5ld2x5IGFsbG9jYXRlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweENCYGAsIGZyZWVkIG1lbW9yeSBpcwotICAgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweERCYGAuIEFkZGl0aW9uYWwgY2hlY2tzOgorICAgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweERCYGAuCiAKLSAgIC0gZGV0ZWN0IEFQSSB2aW9sYXRpb25zLCBleDogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgYnVmZmVyCisgICBSdW50aW1lIGNoZWNrczoKKworICAgLSBEZXRlY3QgQVBJIHZpb2xhdGlvbnMsIGV4OiA6YzpmdW5jOmBQeU9iamVjdF9GcmVlYCBjYWxsZWQgb24gYSBidWZmZXIKICAgICAgYWxsb2NhdGVkIGJ5IDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AKLSAgIC0gZGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKLSAgIC0gZGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorICAgLSBEZXRlY3Qgd3JpdGUgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIChidWZmZXIgdW5kZXJmbG93KQorICAgLSBEZXRlY3Qgd3JpdGUgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIChidWZmZXIgb3ZlcmZsb3cpCisgICAtIENoZWNrIHRoYXQgdGhlIDp0ZXJtOmBHSUwgPGdsb2JhbCBpbnRlcnByZXRlciBsb2NrPmAgaXMgaGVsZCB3aGVuCisgICAgIGFsbG9jYXRvciBmdW5jdGlvbnMgb2YgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OgorICAgICA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgKGV4OgorICAgICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgKSBkb21haW5zIGFyZSBjYWxsZWQKIAotICAgVGhlIGZ1bmN0aW9uIGRvZXMgbm90aGluZyBpZiBQeXRob24gaXMgbm90IGNvbXBpbGVkIGlzIGRlYnVnIG1vZGUuCisgICBPbiBlcnJvciwgdGhlIGRlYnVnIGhvb2tzIHVzZSB0aGUgOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZSB0byBnZXQgdGhlCisgICB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzIGFsbG9jYXRlZC4gVGhlIHRyYWNlYmFjayBpcyBvbmx5CisgICBkaXNwbGF5ZWQgaWYgOm1vZDpgdHJhY2VtYWxsb2NgIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgdGhlCisgICBtZW1vcnkgYmxvY2sgd2FzIHRyYWNlZC4KKworICAgVGhlc2UgaG9va3MgYXJlIGluc3RhbGxlZCBieSBkZWZhdWx0IGlmIFB5dGhvbiBpcyBjb21waWxlZCBpbiBkZWJ1ZworICAgbW9kZS4gVGhlIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHVzZWQgdG8gaW5zdGFsbAorICAgZGVidWcgaG9va3Mgb24gYSBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhpcyBmdW5jdGlvbiBub3cgYWxzbyB3b3JrcyBvbiBQeXRob24gY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLgorICAgICAgT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyBub3cgdXNlIDptb2Q6YHRyYWNlbWFsbG9jYCB0byBnZXQgdGhlIHRyYWNlYmFjaworICAgICAgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzIGFsbG9jYXRlZC4gVGhlIGRlYnVnIGhvb2tzIG5vdyBhbHNvIGNoZWNrCisgICAgICBpZiB0aGUgR0lMIGlzIGhlbGQgd2hlbiBmdW5jdGlvbnMgb2YgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgYW5kCisgICAgICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCBkb21haW5zIGFyZSBjYWxsZWQuCiAKIAotQ3VzdG9taXplIFB5T2JqZWN0IEFyZW5hIEFsbG9jYXRvcgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLi4gX3B5bWFsbG9jOgogCi1QeXRob24gaGFzIGEgKnB5bWFsbG9jKiBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpb25zIHNtYWxsZXIgdGhhbiA1MTIgYnl0ZXMuIFRoaXMKLWFsbG9jYXRvciBpcyBvcHRpbWl6ZWQgZm9yIHNtYWxsIG9iamVjdHMgd2l0aCBhIHNob3J0IGxpZmV0aW1lLiBJdCB1c2VzIG1lbW9yeQotbWFwcGluZ3MgY2FsbGVkICJhcmVuYXMiIHdpdGggYSBmaXhlZCBzaXplIG9mIDI1NiBLQi4gSXQgZmFsbHMgYmFjayB0bwotOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCBhbmQgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AgZm9yIGFsbG9jYXRpb25zIGxhcmdlcgotdGhhbiA1MTIgYnl0ZXMuICAqcHltYWxsb2MqIGlzIHRoZSBkZWZhdWx0IGFsbG9jYXRvciB1c2VkIGJ5Ci06YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgLgorVGhlIHB5bWFsbG9jIGFsbG9jYXRvcgorPT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgZGVmYXVsdCBhcmVuYSBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKK1B5dGhvbiBoYXMgYSAqcHltYWxsb2MqIGFsbG9jYXRvciBvcHRpbWl6ZWQgZm9yIHNtYWxsIG9iamVjdHMgKHNtYWxsZXIgb3IgZXF1YWwKK3RvIDUxMiBieXRlcykgd2l0aCBhIHNob3J0IGxpZmV0aW1lLiBJdCB1c2VzIG1lbW9yeSBtYXBwaW5ncyBjYWxsZWQgImFyZW5hcyIKK3dpdGggYSBmaXhlZCBzaXplIG9mIDI1NiBLQi4gSXQgZmFsbHMgYmFjayB0byA6YzpmdW5jOmBQeU1lbV9SYXdNYWxsb2NgIGFuZAorOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AgZm9yIGFsbG9jYXRpb25zIGxhcmdlciB0aGFuIDUxMiBieXRlcy4KKworKnB5bWFsbG9jKiBpcyB0aGUgZGVmYXVsdCBhbGxvY2F0b3Igb2YgdGhlIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDoKKzpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2ApIGFuZCA6YzpkYXRhOmBQWU1FTV9ET01BSU5fT0JKYCAoZXg6Cis6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBkb21haW5zLgorCitUaGUgYXJlbmEgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKICogOmM6ZnVuYzpgVmlydHVhbEFsbG9jYCBhbmQgOmM6ZnVuYzpgVmlydHVhbEZyZWVgIG9uIFdpbmRvd3MsCiAqIDpjOmZ1bmM6YG1tYXBgIGFuZCA6YzpmdW5jOmBtdW5tYXBgIGlmIGF2YWlsYWJsZSwKICogOmM6ZnVuYzpgbWFsbG9jYCBhbmQgOmM6ZnVuYzpgZnJlZWAgb3RoZXJ3aXNlLgogCitDdXN0b21pemUgcHltYWxsb2MgQXJlbmEgQWxsb2NhdG9yCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCiAuLiBjOnR5cGU6OiBQeU9iamVjdEFyZW5hQWxsb2NhdG9yCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKaW5kZXggM2U4YTkwYy4uODM3YWM3ZCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CisrKyBiL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdApAQCAtMTUwLDggKzE1MCw5IEBACiBUaGUgOmF0dHI6YG1sX2ZsYWdzYCBmaWVsZCBpcyBhIGJpdGZpZWxkIHdoaWNoIGNhbiBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZmxhZ3MuCiBUaGUgaW5kaXZpZHVhbCBmbGFncyBpbmRpY2F0ZSBlaXRoZXIgYSBjYWxsaW5nIGNvbnZlbnRpb24gb3IgYSBiaW5kaW5nCiBjb252ZW50aW9uLiAgT2YgdGhlIGNhbGxpbmcgY29udmVudGlvbiBmbGFncywgb25seSA6Y29uc3Q6YE1FVEhfVkFSQVJHU2AgYW5kCi06Y29uc3Q6YE1FVEhfS0VZV09SRFNgIGNhbiBiZSBjb21iaW5lZC4gQW55IG9mIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gZmxhZ3MKLWNhbiBiZSBjb21iaW5lZCB3aXRoIGEgYmluZGluZyBmbGFnLgorOmNvbnN0OmBNRVRIX0tFWVdPUkRTYCBjYW4gYmUgY29tYmluZWQgKGJ1dCBub3RlIHRoYXQgOmNvbnN0OmBNRVRIX0tFWVdPUkRTYAorYWxvbmUgaXMgZXF1aXZhbGVudCB0byBgYE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFNgYCkuIEFueSBvZiB0aGUgY2FsbGluZworY29udmVudGlvbiBmbGFncyBjYW4gYmUgY29tYmluZWQgd2l0aCBhIGJpbmRpbmcgZmxhZy4KIAogCiAuLiBkYXRhOjogTUVUSF9WQVJBUkdTCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3lzLnJzdCBiL0RvYy9jLWFwaS9zeXMucnN0CmluZGV4IDNkODNiMjcuLjAzNWNkYzEgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zeXMucnN0CisrKyBiL0RvYy9jLWFwaS9zeXMucnN0CkBAIC01LDYgKzUsMTcgQEAKIE9wZXJhdGluZyBTeXN0ZW0gVXRpbGl0aWVzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5T1NfRlNQYXRoKFB5T2JqZWN0ICpwYXRoKQorCisgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uIGZvciAqcGF0aCouIElmIHRoZSBvYmplY3QgaXMgYQorICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwgdGhlbiBpdHMgcmVmZXJlbmNlIGNvdW50IGlzCisgICBpbmNyZW1lbnRlZC4gSWYgdGhlIG9iamVjdCBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UsCisgICB0aGVuIDptZXRoOmB+b3MuUGF0aExpa2UuX19mc3BhdGhfX2AgaXMgcmV0dXJuZWQgYXMgbG9uZyBhcyBpdCBpcyBhCisgICA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LiBPdGhlcndpc2UgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQKKyAgIGFuZCBgYE5VTExgYCBpcyByZXR1cm5lZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeV9GZElzSW50ZXJhY3RpdmUoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogCkBAIC0yMTIsMjAgKzIyMywyNCBAQAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRXhpdChpbnQgc3RhdHVzKQogCiAgICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgICAgIHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAgICAgICBzaW5nbGU6IGV4aXQoKQogCi0gICBFeGl0IHRoZSBjdXJyZW50IHByb2Nlc3MuICBUaGlzIGNhbGxzIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBhbmQgdGhlbiBjYWxscyB0aGUKLSAgIHN0YW5kYXJkIEMgbGlicmFyeSBmdW5jdGlvbiBgYGV4aXQoc3RhdHVzKWBgLgorICAgRXhpdCB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjYWxscyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBhbmQgdGhlbiBjYWxscyB0aGUKKyAgIHN0YW5kYXJkIEMgbGlicmFyeSBmdW5jdGlvbiBgYGV4aXQoc3RhdHVzKWBgLiAgSWYgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAKKyAgIGluZGljYXRlcyBhbiBlcnJvciwgdGhlIGV4aXQgc3RhdHVzIGlzIHNldCB0byAxMjAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBFcnJvcnMgZnJvbSBmaW5hbGl6YXRpb24gbm8gbG9uZ2VyIGlnbm9yZWQuCiAKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeV9BdEV4aXQodm9pZCAoKmZ1bmMpICgpKQogCiAgICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgICAgIHNpbmdsZTogUHlfRmluYWxpemVFeCgpCiAgICAgICBzaW5nbGU6IGNsZWFudXAgZnVuY3Rpb25zCiAKLSAgIFJlZ2lzdGVyIGEgY2xlYW51cCBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYnkgOmM6ZnVuYzpgUHlfRmluYWxpemVgLiAgVGhlIGNsZWFudXAKKyAgIFJlZ2lzdGVyIGEgY2xlYW51cCBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYnkgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAuICBUaGUgY2xlYW51cAogICAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMgYW5kIHNob3VsZCByZXR1cm4gbm8gdmFsdWUuICBBdCBtb3N0CiAgICAzMiBjbGVhbnVwIGZ1bmN0aW9ucyBjYW4gYmUgcmVnaXN0ZXJlZC4gIFdoZW4gdGhlIHJlZ2lzdHJhdGlvbiBpcyBzdWNjZXNzZnVsLAogICAgOmM6ZnVuYzpgUHlfQXRFeGl0YCByZXR1cm5zIGBgMGBgOyBvbiBmYWlsdXJlLCBpdCByZXR1cm5zIGBgLTFgYC4gIFRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdW5pY29kZS5yc3QgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKaW5kZXggZWY4MjczYy4uNTUxNWVjMyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0CisrKyBiL0RvYy9jLWFwaS91bmljb2RlLnJzdApAQCAtNDQwLDcgKzQ0MCw2IEBACiAgICAuLiAlIGJlY2F1c2Ugbm90IGFsbCBjb21waWxlcnMgc3VwcG9ydCB0aGUgJXogd2lkdGggbW9kaWZpZXIgLS0gd2UgZmFrZSBpdAogICAgLi4gJSB3aGVuIG5lY2Vzc2FyeSB2aWEgaW50ZXJwb2xhdGluZyBQWV9GT1JNQVRfU0laRV9ULgogICAgLi4gJSBTaW1pbGFyIGNvbW1lbnRzIGFwcGx5IHRvIHRoZSAlbGwgd2lkdGggbW9kaWZpZXIgYW5kCi0gICAuLiAlIFBZX0ZPUk1BVF9MT05HX0xPTkcuCiAKICAgIC4uIHRhYnVsYXJjb2x1bW5zOjogfGx8bHxMfAogCkBAIC01MjUsMTEgKzUyNCw2IEBACiAgICBjb3BpZWQgYXMtaXMgdG8gdGhlIHJlc3VsdCBzdHJpbmcsIGFuZCBhbnkgZXh0cmEgYXJndW1lbnRzIGRpc2NhcmRlZC4KIAogICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoZSBgIiVsbGQiYCBhbmQgYCIlbGx1ImAgZm9ybWF0IHNwZWNpZmllcnMgYXJlIG9ubHkgYXZhaWxhYmxlCi0gICAgICB3aGVuIDpjb25zdDpgSEFWRV9MT05HX0xPTkdgIGlzIGRlZmluZWQuCi0KLSAgIC4uIG5vdGU6OgogICAgICAgVGhlIHdpZHRoIGZvcm1hdHRlciB1bml0IGlzIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIGJ5dGVzLgogICAgICAgVGhlIHByZWNpc2lvbiBmb3JtYXR0ZXIgdW5pdCBpcyBudW1iZXIgb2YgYnl0ZXMgZm9yIGBgIiVzImBgIGFuZAogICAgICAgYGAiJVYiYGAgKGlmIHRoZSBgYFB5T2JqZWN0KmBgIGFyZ3VtZW50IGlzIE5VTEwpLCBhbmQgYSBudW1iZXIgb2YKQEAgLTgxMSwzOCArODA1LDQ3IEBACiAiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBUbyBlbmNvZGUgYW5kIGRlY29kZSBmaWxlIG5hbWVzIGFuZCBvdGhlciBlbnZpcm9ubWVudCBzdHJpbmdzLAotOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbUVuY29kaW5nYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZW5jb2RpbmcsIGFuZAotYGAic3Vycm9nYXRlZXNjYXBlImBgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlcnJvciBoYW5kbGVyICg6cGVwOmAzODNgKS4gVG8KLWVuY29kZSBmaWxlIG5hbWVzIGR1cmluZyBhcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZQotdXNlZCwgcGFzc2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGFzIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uOgorOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVuY29kaW5nLCBhbmQKKzpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZXJyb3IgaGFuZGxlcgorKDpwZXA6YDM4M2AgYW5kIDpwZXA6YDUyOWApLiBUbyBlbmNvZGUgZmlsZSBuYW1lcyB0byA6Y2xhc3M6YGJ5dGVzYCBkdXJpbmcKK2FyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYCBjb252ZXJ0ZXIgc2hvdWxkIGJlIHVzZWQsIHBhc3NpbmcKKzpjOmZ1bmM6YFB5VW5pY29kZV9GU0NvbnZlcnRlcmAgYXMgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb246CiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0ZTQ29udmVydGVyKFB5T2JqZWN0KiBvYmosIHZvaWQqIHJlc3VsdCkKIAotICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGVuY29kZSA6Y2xhc3M6YHN0cmAgb2JqZWN0cyB0byA6Y2xhc3M6YGJ5dGVzYCB1c2luZworICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGVuY29kZSA6Y2xhc3M6YHN0cmAgb2JqZWN0cyAtLSBvYnRhaW5lZCBkaXJlY3RseSBvcgorICAgdGhyb3VnaCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlIC0tIHRvIDpjbGFzczpgYnl0ZXNgIHVzaW5nCiAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0YDsgOmNsYXNzOmBieXRlc2Agb2JqZWN0cyBhcmUgb3V0cHV0IGFzLWlzLgogICAgKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5Qnl0ZXNPYmplY3QqYCB3aGljaCBtdXN0IGJlIHJlbGVhc2VkIHdoZW4gaXQgaXMKICAgIG5vIGxvbmdlciB1c2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKLVRvIGRlY29kZSBmaWxlIG5hbWVzIGR1cmluZyBhcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZQotdXNlZCwgcGFzc2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfRlNEZWNvZGVyYCBhcyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbjoKK1RvIGRlY29kZSBmaWxlIG5hbWVzIHRvIDpjbGFzczpgc3RyYCBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgCitjb252ZXJ0ZXIgc2hvdWxkIGJlIHVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAgYXMgdGhlCitjb252ZXJzaW9uIGZ1bmN0aW9uOgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9GU0RlY29kZXIoUHlPYmplY3QqIG9iaiwgdm9pZCogcmVzdWx0KQogCi0gICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZGVjb2RlIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgdG8gOmNsYXNzOmBzdHJgIHVzaW5nCi0gICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZWA7IDpjbGFzczpgc3RyYCBvYmplY3RzIGFyZSBvdXRwdXQKLSAgIGFzLWlzLiAqcmVzdWx0KiBtdXN0IGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0KmAgd2hpY2ggbXVzdCBiZSByZWxlYXNlZAotICAgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZC4KKyAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBkZWNvZGUgOmNsYXNzOmBieXRlc2Agb2JqZWN0cyAtLSBvYnRhaW5lZCBlaXRoZXIKKyAgIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlIC0tIHRvCisgICA6Y2xhc3M6YHN0cmAgdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgOyA6Y2xhc3M6YHN0cmAKKyAgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4gKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdCpgIHdoaWNoCisgICBtdXN0IGJlIHJlbGVhc2VkIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKIAogICAgRGVjb2RlIGEgc3RyaW5nIHVzaW5nIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIGFuZCB0aGUKLSAgIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cy4KKyAgIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCkBAIC04NTYsMjggKzg1OSwyOCBAQAogCiAgICAgICBUaGUgOmM6ZnVuYzpgUHlfRGVjb2RlTG9jYWxlYCBmdW5jdGlvbi4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIFVzZSBgYCJzdHJpY3QiYGAgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVzZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoY29uc3QgY2hhciAqcykKIAogICAgRGVjb2RlIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB1c2luZyA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYAotICAgYW5kIHRoZSBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MuCisgICBhbmQgdGhlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCiAKICAgIFVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZWAgaWYgeW91IGtub3cgdGhlIHN0cmluZyBsZW5ndGguCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAic3RyaWN0ImBgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVc2UgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB0byA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCB3aXRoIHRoZQotICAgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLCBhbmQgcmV0dXJuCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlciwgYW5kIHJldHVybgogICAgOmNsYXNzOmBieXRlc2AuIE5vdGUgdGhhdCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBtYXkgY29udGFpbgogICAgbnVsbCBieXRlcy4KIApAQCAtODk0LDYgKzg5Nyw4IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVXNlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiB3Y2hhcl90IFN1cHBvcnQKICIiIiIiIiIiIiIiIiIiIgpkaWZmIC0tZ2l0IGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdCBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKaW5kZXggZTM4ODE5NS4uOGI0NjlmNCAxMDA2NDQKLS0tIGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdAorKysgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CkBAIC05MjEsNiArOTIxLDkgQEAKIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I6aW50Ojo6CiBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yOlB5T2JqZWN0KjpvOjA6CiAKK1B5T1NfRlNQYXRoOlB5T2JqZWN0Kjo6KzE6CitQeU9TX0ZTUGF0aDpQeU9iamVjdCo6cGF0aDowOgorCiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0Kjo6KzE6CiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0KjpjYWxsYWJsZV9vYmplY3Q6MDoKIFB5T2JqZWN0X0NhbGw6UHlPYmplY3QqOmFyZ3M6MDoKZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdCBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdAppbmRleCA2NDAzM2RjLi5hYjJmNjE2IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CkBAIC02Nyw3ICs2Nyw5IEBACiAgICAgICAgUHlfSW5pdGlhbGl6ZSgpOwogICAgICAgIFB5UnVuX1NpbXBsZVN0cmluZygiZnJvbSB0aW1lIGltcG9ydCB0aW1lLGN0aW1lXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmludCgnVG9kYXkgaXMnLCBjdGltZSh0aW1lKCkpKVxuIik7Ci0gICAgICAgUHlfRmluYWxpemUoKTsKKyAgICAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICAgICBleGl0KDEyMCk7CisgICAgICAgfQogICAgICAgIFB5TWVtX1Jhd0ZyZWUocHJvZ3JhbSk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CkBAIC03Niw3ICs3OCw3IEBACiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCB0byBpbmZvcm0gdGhlIGludGVycHJldGVyIGFib3V0IHBhdGhzIHRvIFB5dGhvbiBydW4tdGltZQogbGlicmFyaWVzLiAgTmV4dCwgdGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyBpbml0aWFsaXplZCB3aXRoCiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCwgZm9sbG93ZWQgYnkgdGhlIGV4ZWN1dGlvbiBvZiBhIGhhcmQtY29kZWQgUHl0aG9uIHNjcmlwdAotdGhhdCBwcmludHMgdGhlIGRhdGUgYW5kIHRpbWUuICBBZnRlcndhcmRzLCB0aGUgOmM6ZnVuYzpgUHlfRmluYWxpemVgIGNhbGwgc2h1dHMKK3RoYXQgcHJpbnRzIHRoZSBkYXRlIGFuZCB0aW1lLiAgQWZ0ZXJ3YXJkcywgdGhlIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGNhbGwgc2h1dHMKIHRoZSBpbnRlcnByZXRlciBkb3duLCBmb2xsb3dlZCBieSB0aGUgZW5kIG9mIHRoZSBwcm9ncmFtLiAgSW4gYSByZWFsIHByb2dyYW0sCiB5b3UgbWF5IHdhbnQgdG8gZ2V0IHRoZSBQeXRob24gc2NyaXB0IGZyb20gYW5vdGhlciBzb3VyY2UsIHBlcmhhcHMgYSB0ZXh0LWVkaXRvcgogcm91dGluZSwgYSBmaWxlLCBvciBhIGRhdGFiYXNlLiAgR2V0dGluZyB0aGUgUHl0aG9uIGNvZGUgZnJvbSBhIGZpbGUgY2FuIGJldHRlcgpkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QgYi9Eb2MvZmFxL3Byb2dyYW1taW5nLnJzdAppbmRleCA2OTQ3NTNlLi45YzVlMjBkIDEwMDY0NAotLS0gYS9Eb2MvZmFxL3Byb2dyYW1taW5nLnJzdAorKysgYi9Eb2MvZmFxL3Byb2dyYW1taW5nLnJzdApAQCAtODM4LDcgKzgzOCw4IEBACiBUbyBjb252ZXJ0LCBlLmcuLCB0aGUgbnVtYmVyIDE0NCB0byB0aGUgc3RyaW5nICcxNDQnLCB1c2UgdGhlIGJ1aWx0LWluIHR5cGUKIGNvbnN0cnVjdG9yIDpmdW5jOmBzdHJgLiAgSWYgeW91IHdhbnQgYSBoZXhhZGVjaW1hbCBvciBvY3RhbCByZXByZXNlbnRhdGlvbiwgdXNlCiB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIDpmdW5jOmBoZXhgIG9yIDpmdW5jOmBvY3RgLiAgRm9yIGZhbmN5IGZvcm1hdHRpbmcsIHNlZQotdGhlIDpyZWY6YGZvcm1hdHN0cmluZ3NgIHNlY3Rpb24sIGUuZy4gYGAiezowNGR9Ii5mb3JtYXQoMTQ0KWBgIHlpZWxkcwordGhlIDpyZWY6YGYtc3RyaW5nc2AgYW5kIDpyZWY6YGZvcm1hdHN0cmluZ3NgIHNlY3Rpb25zLAorZS5nLiBgYCJ7OjA0ZH0iLmZvcm1hdCgxNDQpYGAgeWllbGRzCiBgYCcwMTQ0J2BgIGFuZCBgYCJ7Oi4zZn0iLmZvcm1hdCgxLjAvMy4wKWBgIHlpZWxkcyBgYCcwLjMzMydgYC4KIAogCmRpZmYgLS1naXQgYS9Eb2MvZ2xvc3NhcnkucnN0IGIvRG9jL2dsb3NzYXJ5LnJzdAppbmRleCA0NWI3OTRmLi5mODBiNmRmIDEwMDY0NAotLS0gYS9Eb2MvZ2xvc3NhcnkucnN0CisrKyBiL0RvYy9nbG9zc2FyeS5yc3QKQEAgLTcxOCw2ICs3MTgsOCBAQAogCiAgICAgICAgICAgIGRlZiBmdW5jKGZvbywgYmFyPU5vbmUpOiAuLi4KIAorICAgICAgLi4gX3Bvc2l0aW9uYWwtb25seV9wYXJhbWV0ZXI6CisKICAgICAgICogOmRmbjpgcG9zaXRpb25hbC1vbmx5YDogc3BlY2lmaWVzIGFuIGFyZ3VtZW50IHRoYXQgY2FuIGJlIHN1cHBsaWVkIG9ubHkKICAgICAgICAgYnkgcG9zaXRpb24uICBQeXRob24gaGFzIG5vIHN5bnRheCBmb3IgZGVmaW5pbmcgcG9zaXRpb25hbC1vbmx5CiAgICAgICAgIHBhcmFtZXRlcnMuICBIb3dldmVyLCBzb21lIGJ1aWx0LWluIGZ1bmN0aW9ucyBoYXZlIHBvc2l0aW9uYWwtb25seQpAQCAtNzc2LDYgKzc3OCwxNiBAQAogICAgICAgT25lIG9mIHRoZSBkZWZhdWx0IDp0ZXJtOmBtZXRhIHBhdGggZmluZGVycyA8bWV0YSBwYXRoIGZpbmRlcj5gIHdoaWNoCiAgICAgICBzZWFyY2hlcyBhbiA6dGVybTpgaW1wb3J0IHBhdGhgIGZvciBtb2R1bGVzLgogCisgICBwYXRoLWxpa2Ugb2JqZWN0CisgICAgICBBbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgZmlsZSBzeXN0ZW0gcGF0aC4gQSBwYXRoLWxpa2Ugb2JqZWN0IGlzIGVpdGhlcgorICAgICAgYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0IHJlcHJlc2VudGluZyBhIHBhdGgsIG9yIGFuIG9iamVjdAorICAgICAgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBwcm90b2NvbC4gQW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMKKyAgICAgIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBwcm90b2NvbCBjYW4gYmUgY29udmVydGVkIHRvIGEgOmNsYXNzOmBzdHJgIG9yCisgICAgICA6Y2xhc3M6YGJ5dGVzYCBmaWxlIHN5c3RlbSBwYXRoIGJ5IGNhbGxpbmcgdGhlIDpmdW5jOmBvcy5mc3BhdGhgIGZ1bmN0aW9uOworICAgICAgOmZ1bmM6YG9zLmZzZGVjb2RlYCBhbmQgOmZ1bmM6YG9zLmZzZW5jb2RlYCBjYW4gYmUgdXNlZCB0byBndWFyYW50ZWUgYQorICAgICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIHJlc3VsdCBpbnN0ZWFkLCByZXNwZWN0aXZlbHkuIEludHJvZHVjZWQKKyAgICAgIGJ5IDpwZXA6YDUxOWAuCisKICAgIHBvcnRpb24KICAgICAgIEEgc2V0IG9mIGZpbGVzIGluIGEgc2luZ2xlIGRpcmVjdG9yeSAocG9zc2libHkgc3RvcmVkIGluIGEgemlwIGZpbGUpCiAgICAgICB0aGF0IGNvbnRyaWJ1dGUgdG8gYSBuYW1lc3BhY2UgcGFja2FnZSwgYXMgZGVmaW5lZCBpbiA6cGVwOmA0MjBgLgpAQCAtOTUyLDEzICs5NjQsMjUgQEAKICAgICAgIGBgJ1xyJ2BgLiAgU2VlIDpwZXA6YDI3OGAgYW5kIDpwZXA6YDMxMTZgLCBhcyB3ZWxsIGFzCiAgICAgICA6ZnVuYzpgYnl0ZXMuc3BsaXRsaW5lc2AgZm9yIGFuIGFkZGl0aW9uYWwgdXNlLgogCisgICB2YXJpYWJsZSBhbm5vdGF0aW9uCisgICAgICBBIHR5cGUgbWV0YWRhdGEgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgbW9kdWxlIGdsb2JhbCB2YXJpYWJsZSBvcgorICAgICAgYSBjbGFzcyBhdHRyaWJ1dGUuIEl0cyBzeW50YXggaXMgZXhwbGFpbmVkIGluIHNlY3Rpb24gOnJlZjpgYW5uYXNzaWduYC4KKyAgICAgIEFubm90YXRpb25zIGFyZSBzdG9yZWQgaW4gdGhlIDphdHRyOmBfX2Fubm90YXRpb25zX19gIHNwZWNpYWwKKyAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIG9yIG1vZHVsZSBvYmplY3QgYW5kIGNhbiBiZSBhY2Nlc3NlZCB1c2luZworICAgICAgOmZ1bmM6YHR5cGluZy5nZXRfdHlwZV9oaW50c2AuCisKKyAgICAgIFB5dGhvbiBpdHNlbGYgZG9lcyBub3QgYXNzaWduIGFueSBwYXJ0aWN1bGFyIG1lYW5pbmcgdG8gdmFyaWFibGUKKyAgICAgIGFubm90YXRpb25zLiBUaGV5IGFyZSBpbnRlbmRlZCB0byBiZSBpbnRlcnByZXRlZCBieSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMKKyAgICAgIG9yIHR5cGUgY2hlY2tpbmcgdG9vbHMuIFNlZSA6cGVwOmA1MjZgLCA6cGVwOmA0ODRgIHdoaWNoIGRlc2NyaWJlCisgICAgICBzb21lIG9mIHRoZWlyIHBvdGVudGlhbCB1c2VzLgorCiAgICB2aXJ0dWFsIGVudmlyb25tZW50CiAgICAgICBBIGNvb3BlcmF0aXZlbHkgaXNvbGF0ZWQgcnVudGltZSBlbnZpcm9ubWVudCB0aGF0IGFsbG93cyBQeXRob24gdXNlcnMKICAgICAgIGFuZCBhcHBsaWNhdGlvbnMgdG8gaW5zdGFsbCBhbmQgdXBncmFkZSBQeXRob24gZGlzdHJpYnV0aW9uIHBhY2thZ2VzCiAgICAgICB3aXRob3V0IGludGVyZmVyaW5nIHdpdGggdGhlIGJlaGF2aW91ciBvZiBvdGhlciBQeXRob24gYXBwbGljYXRpb25zCiAgICAgICBydW5uaW5nIG9uIHRoZSBzYW1lIHN5c3RlbS4KIAotICAgICAgU2VlIGFsc28gOnJlZjpgc2NyaXB0cy1weXZlbnZgLgorICAgICAgU2VlIGFsc28gOm1vZDpgdmVudmAuCiAKICAgIHZpcnR1YWwgbWFjaGluZQogICAgICAgQSBjb21wdXRlciBkZWZpbmVkIGVudGlyZWx5IGluIHNvZnR3YXJlLiAgUHl0aG9uJ3MgdmlydHVhbCBtYWNoaW5lCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vYXJncGFyc2UucnN0IGIvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdAppbmRleCAzYjc5YjkyLi43ZTE2MWE1IDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vYXJncGFyc2UucnN0CisrKyBiL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKQEAgLTU0Nyw3ICs1NDcsOCBAQAogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICBGaWxlICJwcm9nLnB5IiwgbGluZSAxMSwgaW4gPG1vZHVsZT4KICAgICAgICBpZiBhcmdzLnZlcmJvc2l0eSA+PSAyOgotICAgVHlwZUVycm9yOiB1bm9yZGVyYWJsZSB0eXBlczogTm9uZVR5cGUoKSA+PSBpbnQoKQorICAgVHlwZUVycm9yOiAnPj0nIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ05vbmVUeXBlJyBhbmQgJ2ludCcKKwogCiAqIEZpcnN0IG91dHB1dCB3ZW50IHdlbGwsIGFuZCBmaXhlcyB0aGUgYnVnIHdlIGhhZCBiZWZvcmUuCiAgIFRoYXQgaXMsIHdlIHdhbnQgYW55IHZhbHVlID49IDIgdG8gYmUgYXMgdmVyYm9zZSBhcyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9jbGluaWMucnN0IGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKaW5kZXggY2FhNDk3NS4uZjQzNTg4NCAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2NsaW5pYy5yc3QKKysrIGIvRG9jL2hvd3RvL2NsaW5pYy5yc3QKQEAgLTgyNyw5ICs4MjcsOSBAQAogYGAnaSdgYCAgICAgYGBpbnRgYAogYGAnSSdgYCAgICAgYGB1bnNpZ25lZF9pbnQoYml0d2lzZT1UcnVlKWBgCiBgYCdrJ2BgICAgICBgYHVuc2lnbmVkX2xvbmcoYml0d2lzZT1UcnVlKWBgCi1gYCdLJ2BgICAgICBgYHVuc2lnbmVkX1BZX0xPTkdfTE9ORyhiaXR3aXNlPVRydWUpYGAKK2BgJ0snYGAgICAgIGBgdW5zaWduZWRfbG9uZ19sb25nKGJpdHdpc2U9VHJ1ZSlgYAogYGAnbCdgYCAgICAgYGBsb25nYGAKLWBgJ0wnYGAgICAgIGBgUFlfTE9OR19MT05HYGAKK2BgJ0wnYGAgICAgIGBgbG9uZyBsb25nYGAKIGBgJ24nYGAgICAgIGBgUHlfc3NpemVfdGBgCiBgYCdPJ2BgICAgICBgYG9iamVjdGBgCiBgYCdPISdgYCAgICBgYG9iamVjdChzdWJjbGFzc19vZj0nJlB5U29tZXRoaW5nX1R5cGUnKWBgCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vaW5kZXgucnN0IGIvRG9jL2hvd3RvL2luZGV4LnJzdAppbmRleCBkZTY1OTUwLi41OTMzNDFjIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vaW5kZXgucnN0CisrKyBiL0RvYy9ob3d0by9pbmRleC5yc3QKQEAgLTI4LDQgKzI4LDUgQEAKICAgIGFyZ3BhcnNlLnJzdAogICAgaXBhZGRyZXNzLnJzdAogICAgY2xpbmljLnJzdAorICAgaW5zdHJ1bWVudGF0aW9uLnJzdAogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdCBiL0RvYy9ob3d0by9pbnN0cnVtZW50YXRpb24ucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMWE2MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdApAQCAtMCwwICsxLDQxMSBAQAorLi4gX2luc3RydW1lbnRhdGlvbjoKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0luc3RydW1lbnRpbmcgQ1B5dGhvbiB3aXRoIERUcmFjZSBhbmQgU3lzdGVtVGFwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCis6YXV0aG9yOiBEYXZpZCBNYWxjb2xtCis6YXV0aG9yOiDFgXVrYXN6IExhbmdhCisKK0RUcmFjZSBhbmQgU3lzdGVtVGFwIGFyZSBtb25pdG9yaW5nIHRvb2xzLCBlYWNoIHByb3ZpZGluZyBhIHdheSB0byBpbnNwZWN0Cit3aGF0IHRoZSBwcm9jZXNzZXMgb24gYSBjb21wdXRlciBzeXN0ZW0gYXJlIGRvaW5nLiAgVGhleSBib3RoIHVzZQorZG9tYWluLXNwZWNpZmljIGxhbmd1YWdlcyBhbGxvd2luZyBhIHVzZXIgdG8gd3JpdGUgc2NyaXB0cyB3aGljaDoKKworICAtIGZpbHRlciB3aGljaCBwcm9jZXNzZXMgYXJlIHRvIGJlIG9ic2VydmVkCisgIC0gZ2F0aGVyIGRhdGEgZnJvbSB0aGUgcHJvY2Vzc2VzIG9mIGludGVyZXN0CisgIC0gZ2VuZXJhdGUgcmVwb3J0cyBvbiB0aGUgZGF0YQorCitBcyBvZiBQeXRob24gMy42LCBDUHl0aG9uIGNhbiBiZSBidWlsdCB3aXRoIGVtYmVkZGVkICJtYXJrZXJzIiwgYWxzbwora25vd24gYXMgInByb2JlcyIsIHRoYXQgY2FuIGJlIG9ic2VydmVkIGJ5IGEgRFRyYWNlIG9yIFN5c3RlbVRhcCBzY3JpcHQsCittYWtpbmcgaXQgZWFzaWVyIHRvIG1vbml0b3Igd2hhdCB0aGUgQ1B5dGhvbiBwcm9jZXNzZXMgb24gYSBzeXN0ZW0gYXJlCitkb2luZy4KKworLi4gSSdtIHVzaW5nICIuLiBjb2RlLWJsb2NrOjogYyIgZm9yIFN5c3RlbVRhcCBzY3JpcHRzLCBhcyAiYyIgaXMgc3ludGFjdGljYWxseQorICAgdGhlIGNsb3Nlc3QgbWF0Y2ggdGhhdCBTcGhpbnggc3VwcG9ydHMKKworLi4gaW1wbC1kZXRhaWw6OgorCisgICBEVHJhY2UgbWFya2VycyBhcmUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgQ1B5dGhvbiBpbnRlcnByZXRlci4KKyAgIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgcHJvYmUgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHZlcnNpb25zIG9mCisgICBDUHl0aG9uLiBEVHJhY2Ugc2NyaXB0cyBjYW4gc3RvcCB3b3JraW5nIG9yIHdvcmsgaW5jb3JyZWN0bHkgd2l0aG91dAorICAgd2FybmluZyB3aGVuIGNoYW5naW5nIENQeXRob24gdmVyc2lvbnMuCisKKworRW5hYmxpbmcgdGhlIHN0YXRpYyBtYXJrZXJzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworbWFjT1MgY29tZXMgd2l0aCBidWlsdC1pbiBzdXBwb3J0IGZvciBEVHJhY2UuICBPbiBMaW51eCwgaW4gb3JkZXIgdG8KK2J1aWxkIENQeXRob24gd2l0aCB0aGUgZW1iZWRkZWQgbWFya2VycyBmb3IgU3lzdGVtVGFwLCB0aGUgU3lzdGVtVGFwCitkZXZlbG9wbWVudCB0b29scyBtdXN0IGJlIGluc3RhbGxlZC4KKworT24gYSBMaW51eCBtYWNoaW5lLCB0aGlzIGNhbiBiZSBkb25lIHZpYTo6CisKKyAgIHl1bSBpbnN0YWxsIHN5c3RlbXRhcC1zZHQtZGV2ZWwKKworb3I6OgorCisgICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBzeXN0ZW10YXAtc2R0LWRldgorCisKK0NQeXRob24gbXVzdCB0aGVuIGJlIGNvbmZpZ3VyZWQgYC0td2l0aC1kdHJhY2VgOjoKKworICAgY2hlY2tpbmcgZm9yIC0td2l0aC1kdHJhY2UuLi4geWVzCisKK09uIG1hY09TLCB5b3UgY2FuIGxpc3QgYXZhaWxhYmxlIERUcmFjZSBwcm9iZXMgYnkgcnVubmluZyBhIFB5dGhvbgorcHJvY2VzcyBpbiB0aGUgYmFja2dyb3VuZCBhbmQgbGlzdGluZyBhbGwgcHJvYmVzIG1hZGUgYXZhaWxhYmxlIGJ5IHRoZQorUHl0aG9uIHByb3ZpZGVyOjoKKworICAgJCBweXRob24zLjYgLXEgJgorICAgJCBzdWRvIGR0cmFjZSAtbCAtUCBweXRob24kISAgIyBvcjogZHRyYWNlIC1sIC1tIHB5dGhvbjMuNgorCisgICAgICBJRCAgIFBST1ZJREVSICAgICAgICAgICAgTU9EVUxFICAgICAgICAgICAgICAgICAgICAgICAgICBGVU5DVElPTiBOQU1FCisgICAyOTU2NCBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCBmdW5jdGlvbi1lbnRyeQorICAgMjk1NjUgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICBkdHJhY2VfZnVuY3Rpb25fZW50cnkgZnVuY3Rpb24tZW50cnkKKyAgIDI5NTY2IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0IGZ1bmN0aW9uLXJldHVybgorICAgMjk1NjcgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgIGR0cmFjZV9mdW5jdGlvbl9yZXR1cm4gZnVuY3Rpb24tcmV0dXJuCisgICAyOTU2OCBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCBnYy1kb25lCisgICAyOTU2OSBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdCBnYy1zdGFydAorICAgMjk1NzAgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQgbGluZQorICAgMjk1NzEgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgbWF5YmVfZHRyYWNlX2xpbmUgbGluZQorCitPbiBMaW51eCwgeW91IGNhbiB2ZXJpZnkgaWYgdGhlIFN5c3RlbVRhcCBzdGF0aWMgbWFya2VycyBhcmUgcHJlc2VudCBpbgordGhlIGJ1aWx0IGJpbmFyeSBieSBzZWVpbmcgaWYgaXQgY29udGFpbnMgYSAiLm5vdGUuc3RhcHNkdCIgc2VjdGlvbi4KKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgJCByZWFkZWxmIC1TIC4vcHl0aG9uIHwgZ3JlcCAubm90ZS5zdGFwc2R0CisgICBbMzBdIC5ub3RlLnN0YXBzZHQgICAgICAgIE5PVEUgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwIDAwMzA4ZDc4CisKK0lmIHlvdSd2ZSBidWlsdCBQeXRob24gYXMgYSBzaGFyZWQgbGlicmFyeSAod2l0aCAtLWVuYWJsZS1zaGFyZWQpLCB5b3UKK25lZWQgdG8gbG9vayBpbnN0ZWFkIHdpdGhpbiB0aGUgc2hhcmVkIGxpYnJhcnkuICBGb3IgZXhhbXBsZToKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgJCByZWFkZWxmIC1TIGxpYnB5dGhvbjMuM2RtLnNvLjEuMCB8IGdyZXAgLm5vdGUuc3RhcHNkdAorICAgWzI5XSAubm90ZS5zdGFwc2R0ICAgICAgICBOT1RFICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAwMDM2NWI2OAorCitTdWZmaWNpZW50bHkgbW9kZXJuIHJlYWRlbGYgY2FuIHByaW50IHRoZSBtZXRhZGF0YToKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgICQgcmVhZGVsZiAtbiAuL3B5dGhvbgorCisgICAgRGlzcGxheWluZyBub3RlcyBmb3VuZCBhdCBmaWxlIG9mZnNldCAweDAwMDAwMjU0IHdpdGggbGVuZ3RoIDB4MDAwMDAwMjA6CisgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICBEYXRhIHNpemUgICAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICAgR05VICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxMCAgICAgICAgICBOVF9HTlVfQUJJX1RBRyAoQUJJIHZlcnNpb24gdGFnKQorICAgICAgICAgICAgT1M6IExpbnV4LCBBQkk6IDIuNi4zMgorCisgICAgRGlzcGxheWluZyBub3RlcyBmb3VuZCBhdCBmaWxlIG9mZnNldCAweDAwMDAwMjc0IHdpdGggbGVuZ3RoIDB4MDAwMDAwMjQ6CisgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICBEYXRhIHNpemUgICAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICAgR05VICAgICAgICAgICAgICAgICAgMHgwMDAwMDAxNCAgICAgICAgICBOVF9HTlVfQlVJTERfSUQgKHVuaXF1ZSBidWlsZCBJRCBiaXRzdHJpbmcpCisgICAgICAgICAgICBCdWlsZCBJRDogZGY5MjRhMmIwOGE3ZTg5ZjZlMTEyNTFkNDYwMjAyMjk3N2FmMjY3MAorCisgICAgRGlzcGxheWluZyBub3RlcyBmb3VuZCBhdCBmaWxlIG9mZnNldCAweDAwMmQ2YzMwIHdpdGggbGVuZ3RoIDB4MDAwMDAxNDQ6CisgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICBEYXRhIHNpemUgICAgICAgICAgRGVzY3JpcHRpb24KKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDAzMSAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBnY19fc3RhcnQKKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA0MzcxYzMsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZjYKKyAgICAgICAgICAgIEFyZ3VtZW50czogLTRAJWVieAorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDMwICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGdjX19kb25lCisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNDM3NGUxLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmY4CisgICAgICAgICAgICBBcmd1bWVudHM6IC04QCVyYXgKKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDA0NSAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBmdW5jdGlvbl9fZW50cnkKKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA1M2RiNmMsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZTgKKyAgICAgICAgICAgIEFyZ3VtZW50czogOEAlcmJwIDhAJXIxMiAtNEAlZWF4CisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwNDYgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZnVuY3Rpb25fX3JldHVybgorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDUzZGJhOCwgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJlYQorICAgICAgICAgICAgQXJndW1lbnRzOiA4QCVyYnAgOEAlcjEyIC00QCVlYXgKKworVGhlIGFib3ZlIG1ldGFkYXRhIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZvciBTeXN0ZW1UYXAgZGVzY3JpYmluZyBob3cgaXQKK2NhbiBwYXRjaCBzdHJhdGVnaWNhbGx5LXBsYWNlZCBtYWNoaW5lIGNvZGUgaW5zdHJ1Y3Rpb25zIHRvIGVuYWJsZSB0aGUKK3RyYWNpbmcgaG9va3MgdXNlZCBieSBhIFN5c3RlbVRhcCBzY3JpcHQuCisKKworU3RhdGljIERUcmFjZSBwcm9iZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBEVHJhY2Ugc2NyaXB0IGNhbiBiZSB1c2VkIHRvIHNob3cgdGhlIGNhbGwvcmV0dXJuCitoaWVyYXJjaHkgb2YgYSBQeXRob24gc2NyaXB0LCBvbmx5IHRyYWNpbmcgd2l0aGluIHRoZSBpbnZvY2F0aW9uIG9mCithIGZ1bmN0aW9uIGNhbGxlZCAic3RhcnQiLiBJbiBvdGhlciB3b3JkcywgaW1wb3J0LXRpbWUgZnVuY3Rpb24KK2ludm9jYXRpb25zIGFyZSBub3QgZ29pbmcgdG8gYmUgbGlzdGVkOgorCisuLiBjb2RlLWJsb2NrOjogYworCisgICAgc2VsZiBpbnQgaW5kZW50OworCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisgICAgL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPnRyYWNlID0gMTsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKyAgICAvc2VsZi0+dHJhY2UvCisgICAgeworICAgICAgICAgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOworICAgICAgICAgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICAgICAgICAgIHNlbGYtPmluZGVudCsrOworICAgIH0KKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKyAgICAvc2VsZi0+dHJhY2UvCisgICAgeworICAgICAgICAgICAgc2VsZi0+aW5kZW50LS07CisgICAgICAgICAgICBwcmludGYoIiVkXHQlKnM6IiwgdGltZXN0YW1wLCAxNSwgcHJvYmVuYW1lKTsKKyAgICAgICAgICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7CisgICAgICAgICAgICBwcmludGYoIiVzOiVzOiVkXG4iLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLCBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworICAgIH0KKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKyAgICAvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCisgICAgeworICAgICAgICAgICAgc2VsZi0+dHJhY2UgPSAwOworICAgIH0KKworSXQgY2FuIGJlIGludm9rZWQgbGlrZSB0aGlzOgorCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICQgc3VkbyBkdHJhY2UgLXEgLXMgY2FsbF9zdGFjay5kIC1jICJweXRob24zLjYgc2NyaXB0LnB5IgorCitUaGUgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczo6CisKKyAgICAxNTY2NDEzNjA1MDIyODAgIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKKyAgICAxNTY2NDEzNjA1MTg4MDQgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorICAgIDE1NjY0MTM2MDUzMjc5NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorICAgIDE1NjY0MTM2MDU0NjgwNyBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyAgICAxNTY2NDEzNjA1NjMzNjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorICAgIDE1NjY0MTM2MDU3ODM2NSAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo1CisgICAgMTU2NjQxMzYwNTkxNzU3ICBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCisgICAgMTU2NjQxMzYwNjA1NTU2ICBmdW5jdGlvbi1lbnRyeTogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorICAgIDE1NjY0MTM2MDYxNzQ4MiBmdW5jdGlvbi1yZXR1cm46ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgICAgMTU2NjQxMzYwNjI5ODE0IGZ1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCisgICAgMTU2NjQxMzYwNjQyMjg1IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjYKKyAgICAxNTY2NDEzNjA2NTY3NzAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQorICAgIDE1NjY0MTM2MDY2OTcwNyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorICAgIDE1NjY0MTM2MDY4Nzg1MyAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxMworICAgIDE1NjY0MTM2MDcwMDcxOSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAorICAgIDE1NjY0MTM2MDcxOTY0MCAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorICAgIDE1NjY0MTM2MDczMjU2NyBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToyMQorICAgIDE1NjY0MTM2MDc0NzM3MCBmdW5jdGlvbi1yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOAorCisKK1N0YXRpYyBTeXN0ZW1UYXAgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBsb3ctbGV2ZWwgd2F5IHRvIHVzZSB0aGUgU3lzdGVtVGFwIGludGVncmF0aW9uIGlzIHRvIHVzZSB0aGUgc3RhdGljCittYXJrZXJzIGRpcmVjdGx5LiAgVGhpcyByZXF1aXJlcyB5b3UgdG8gZXhwbGljaXRseSBzdGF0ZSB0aGUgYmluYXJ5IGZpbGUKK2NvbnRhaW5pbmcgdGhlbS4KKworRm9yIGV4YW1wbGUsIHRoaXMgU3lzdGVtVGFwIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBzaG93IHRoZSBjYWxsL3JldHVybgoraGllcmFyY2h5IG9mIGEgUHl0aG9uIHNjcmlwdDoKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgcHJvYmUgcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX2VudHJ5IikgeworICAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgIGxpbmVubyA9ICRhcmczOworCisgICAgICAgIHByaW50ZigiJXMgPT4gJXMgaW4gJXM6JWRcXG4iLAorICAgICAgICAgICAgICAgdGhyZWFkX2luZGVudCgxKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgfQorCisgICBwcm9iZSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikgeworICAgICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgIGxpbmVubyA9ICRhcmczOworCisgICAgICAgcHJpbnRmKCIlcyA8PSAlcyBpbiAlczolZFxcbiIsCisgICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoLTEpLCBmdW5jbmFtZSwgZmlsZW5hbWUsIGxpbmVubyk7CisgICB9CisKK0l0IGNhbiBiZSBpbnZva2VkIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAgJCBzdGFwIFwKKyAgICAgc2hvdy1jYWxsLWhpZXJhcmNoeS5zdHAgXAorICAgICAtYyAiLi9weXRob24gdGVzdC5weSIKKworVGhlIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6OgorCisgICAxMTQwOCBweXRob24oODI3NCk6ICAgICAgICA9PiBfX2NvbnRhaW5zX18gaW4gTGliL19hYmNvbGwucHk6MzYyCisgICAxMTQxNCBweXRob24oODI3NCk6ICAgICAgICAgPT4gX19nZXRpdGVtX18gaW4gTGliL29zLnB5OjQyNQorICAgMTE0MTggcHl0aG9uKDgyNzQpOiAgICAgICAgICA9PiBlbmNvZGUgaW4gTGliL29zLnB5OjQ5MAorICAgMTE0MjQgcHl0aG9uKDgyNzQpOiAgICAgICAgICA8PSBlbmNvZGUgaW4gTGliL29zLnB5OjQ5MworICAgMTE0MjggcHl0aG9uKDgyNzQpOiAgICAgICAgIDw9IF9fZ2V0aXRlbV9fIGluIExpYi9vcy5weTo0MjYKKyAgIDExNDMzIHB5dGhvbig4Mjc0KTogICAgICAgIDw9IF9fY29udGFpbnNfXyBpbiBMaWIvX2FiY29sbC5weTozNjYKKword2hlcmUgdGhlIGNvbHVtbnMgYXJlOgorCisgIC0gdGltZSBpbiBtaWNyb3NlY29uZHMgc2luY2Ugc3RhcnQgb2Ygc2NyaXB0CisKKyAgLSBuYW1lIG9mIGV4ZWN1dGFibGUKKworICAtIFBJRCBvZiBwcm9jZXNzCisKK2FuZCB0aGUgcmVtYWluZGVyIGluZGljYXRlcyB0aGUgY2FsbC9yZXR1cm4gaGllcmFyY2h5IGFzIHRoZSBzY3JpcHQgZXhlY3V0ZXMuCisKK0ZvciBhIGAtLWVuYWJsZS1zaGFyZWRgIGJ1aWxkIG9mIENQeXRob24sIHRoZSBtYXJrZXJzIGFyZSBjb250YWluZWQgd2l0aGluIHRoZQorbGlicHl0aG9uIHNoYXJlZCBsaWJyYXJ5LCBhbmQgdGhlIHByb2JlJ3MgZG90dGVkIHBhdGggbmVlZHMgdG8gcmVmbGVjdCB0aGlzLiBGb3IKK2V4YW1wbGUsIHRoaXMgbGluZSBmcm9tIHRoZSBhYm92ZSBleGFtcGxlOjoKKworICAgcHJvYmUgcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX2VudHJ5IikgeworCitzaG91bGQgaW5zdGVhZCByZWFkOjoKKworICAgcHJvYmUgcHJvY2VzcygicHl0aG9uIikubGlicmFyeSgibGlicHl0aG9uMy42ZG0uc28uMS4wIikubWFyaygiZnVuY3Rpb25fX2VudHJ5IikgeworCisoYXNzdW1pbmcgYSBkZWJ1ZyBidWlsZCBvZiBDUHl0aG9uIDMuNikKKworCitBdmFpbGFibGUgc3RhdGljIG1hcmtlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBJJ20gcmV1c2luZyB0aGUgImM6ZnVuY3Rpb24iIHR5cGUgZm9yIG1hcmtlcnMKKworLi4gYzpmdW5jdGlvbjo6IGZ1bmN0aW9uX19lbnRyeShzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubykKKworICAgVGhpcyBtYXJrZXIgaW5kaWNhdGVzIHRoYXQgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBiZWd1bi4KKyAgIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLVB5dGhvbiAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworICAgVGhlIGZpbGVuYW1lLCBmdW5jdGlvbiBuYW1lLCBhbmQgbGluZSBudW1iZXIgYXJlIHByb3ZpZGVkIGJhY2sgdG8gdGhlCisgICB0cmFjaW5nIHNjcmlwdCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBhY2Nlc3NlZCB1c2luZworICAgYGAkYXJnMWBgLCBgYCRhcmcyYGAsIGBgJGFyZzNgYDoKKworICAgICAgICogYGAkYXJnMWBgIDogYGAoY29uc3QgY2hhciAqKWBgIGZpbGVuYW1lLCBhY2Nlc3NpYmxlIHVzaW5nIGBgdXNlcl9zdHJpbmcoJGFyZzEpYGAKKworICAgICAgICogYGAkYXJnMmBgIDogYGAoY29uc3QgY2hhciAqKWBgIGZ1bmN0aW9uIG5hbWUsIGFjY2Vzc2libGUgdXNpbmcKKyAgICAgICAgIGBgdXNlcl9zdHJpbmcoJGFyZzIpYGAKKworICAgICAgICogYGAkYXJnM2BgIDogYGBpbnRgYCBsaW5lIG51bWJlcgorCisuLiBjOmZ1bmN0aW9uOjogZnVuY3Rpb25fX3JldHVybihzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubykKKworICAgVGhpcyBtYXJrZXIgaXMgdGhlIGNvbnZlcnNlIG9mIDpjOmZ1bmM6YGZ1bmN0aW9uX19lbnRyeWAsIGFuZCBpbmRpY2F0ZXMgdGhhdAorICAgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBlbmRlZCAoZWl0aGVyIHZpYSBgYHJldHVybmBgLCBvciB2aWEgYW4KKyAgIGV4Y2VwdGlvbikuICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1QeXRob24gKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBmdW5jdGlvbl9fZW50cnlgCisKKy4uIGM6ZnVuY3Rpb246OiBsaW5lKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpbmRpY2F0ZXMgYSBQeXRob24gbGluZSBpcyBhYm91dCB0byBiZSBleGVjdXRlZC4gIEl0IGlzCisgICB0aGUgZXF1aXZhbGVudCBvZiBsaW5lLWJ5LWxpbmUgdHJhY2luZyB3aXRoIGEgUHl0aG9uIHByb2ZpbGVyLiAgSXQgaXMKKyAgIG5vdCB0cmlnZ2VyZWQgd2l0aGluIEMgZnVuY3Rpb25zLgorCisgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgOmM6ZnVuYzpgZnVuY3Rpb25fX2VudHJ5YC4KKworLi4gYzpmdW5jdGlvbjo6IGdjX19zdGFydChpbnQgZ2VuZXJhdGlvbikKKworICAgRmlyZXMgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIHN0YXJ0cyBhIGdhcmJhZ2UgY29sbGVjdGlvbiBjeWNsZS4KKyAgIGBgYXJnMGBgIGlzIHRoZSBnZW5lcmF0aW9uIHRvIHNjYW4sIGxpa2UgOmZ1bmM6YGdjLmNvbGxlY3QoKWAuCisKKy4uIGM6ZnVuY3Rpb246OiBnY19fZG9uZShsb25nIGNvbGxlY3RlZCkKKworICAgRmlyZXMgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGZpbmlzaGVzIGEgZ2FyYmFnZSBjb2xsZWN0aW9uCisgICBjeWNsZS4gYGBhcmcwYGAgaXMgdGhlIG51bWJlciBvZiBjb2xsZWN0ZWQgb2JqZWN0cy4KKworCitTeXN0ZW1UYXAgVGFwc2V0cworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGhpZ2hlci1sZXZlbCB3YXkgdG8gdXNlIHRoZSBTeXN0ZW1UYXAgaW50ZWdyYXRpb24gaXMgdG8gdXNlIGEgInRhcHNldCI6CitTeXN0ZW1UYXAncyBlcXVpdmFsZW50IG9mIGEgbGlicmFyeSwgd2hpY2ggaGlkZXMgc29tZSBvZiB0aGUgbG93ZXItbGV2ZWwKK2RldGFpbHMgb2YgdGhlIHN0YXRpYyBtYXJrZXJzLgorCitIZXJlIGlzIGEgdGFwc2V0IGZpbGUsIGJhc2VkIG9uIGEgbm9uLXNoYXJlZCBidWlsZCBvZiBDUHl0aG9uOgorCisuLiBjb2RlLWJsb2NrOjogYworCisgICAgLyoKKyAgICAgICBQcm92aWRlIGEgaGlnaGVyLWxldmVsIHdyYXBwaW5nIGFyb3VuZCB0aGUgZnVuY3Rpb25fX2VudHJ5IGFuZAorICAgICAgIGZ1bmN0aW9uX19yZXR1cm4gbWFya2VyczoKKyAgICAgXCovCisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLmVudHJ5ID0gcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX2VudHJ5IikKKyAgICB7CisgICAgICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICAgbGluZW5vID0gJGFyZzM7CisgICAgICAgIGZyYW1lcHRyID0gJGFyZzQKKyAgICB9CisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLnJldHVybiA9IHByb2Nlc3MoInB5dGhvbiIpLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQorICAgIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKyAgICAgICAgZnJhbWVwdHIgPSAkYXJnNAorICAgIH0KKworSWYgdGhpcyBmaWxlIGlzIGluc3RhbGxlZCBpbiBTeXN0ZW1UYXAncyB0YXBzZXQgZGlyZWN0b3J5IChlLmcuCitgYC91c3Ivc2hhcmUvc3lzdGVtdGFwL3RhcHNldGBgKSwgdGhlbiB0aGVzZSBhZGRpdGlvbmFsIHByb2JlcG9pbnRzIGJlY29tZQorYXZhaWxhYmxlOgorCisuLiBjOmZ1bmN0aW9uOjogcHl0aG9uLmZ1bmN0aW9uLmVudHJ5KHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vLCBmcmFtZXB0cikKKworICAgVGhpcyBwcm9iZSBwb2ludCBpbmRpY2F0ZXMgdGhhdCBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGJlZ3VuLgorICAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtcHl0aG9uIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisuLiBjOmZ1bmN0aW9uOjogcHl0aG9uLmZ1bmN0aW9uLnJldHVybihzdHIgZmlsZW5hbWUsIHN0ciBmdW5jbmFtZSwgaW50IGxpbmVubywgZnJhbWVwdHIpCisKKyAgIFRoaXMgcHJvYmUgcG9pbnQgaXMgdGhlIGNvbnZlcnNlIG9mIDpjOmZ1bmM6YHB5dGhvbi5mdW5jdGlvbi5yZXR1cm5gLCBhbmQKKyAgIGluZGljYXRlcyB0aGF0IGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgZW5kZWQgKGVpdGhlciB2aWEKKyAgIGBgcmV0dXJuYGAsIG9yIHZpYSBhbiBleGNlcHRpb24pLiAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtcHl0aG9uCisgICAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworCitFeGFtcGxlcworLS0tLS0tLS0KK1RoaXMgU3lzdGVtVGFwIHNjcmlwdCB1c2VzIHRoZSB0YXBzZXQgYWJvdmUgdG8gbW9yZSBjbGVhbmx5IGltcGxlbWVudCB0aGUKK2V4YW1wbGUgZ2l2ZW4gYWJvdmUgb2YgdHJhY2luZyB0aGUgUHl0aG9uIGZ1bmN0aW9uLWNhbGwgaGllcmFyY2h5LCB3aXRob3V0CituZWVkaW5nIHRvIGRpcmVjdGx5IG5hbWUgdGhlIHN0YXRpYyBtYXJrZXJzOgorCisuLiBjb2RlLWJsb2NrOjogYworCisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLmVudHJ5CisgICAgeworICAgICAgcHJpbnRmKCIlcyA9PiAlcyBpbiAlczolZFxuIiwKKyAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KDEpLCBmdW5jbmFtZSwgZmlsZW5hbWUsIGxpbmVubyk7CisgICAgfQorCisgICAgcHJvYmUgcHl0aG9uLmZ1bmN0aW9uLnJldHVybgorICAgIHsKKyAgICAgIHByaW50ZigiJXMgPD0gJXMgaW4gJXM6JWRcbiIsCisgICAgICAgICAgICAgdGhyZWFkX2luZGVudCgtMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgICB9CisKKworVGhlIGZvbGxvd2luZyBzY3JpcHQgdXNlcyB0aGUgdGFwc2V0IGFib3ZlIHRvIHByb3ZpZGUgYSB0b3AtbGlrZSB2aWV3IG9mIGFsbAorcnVubmluZyBDUHl0aG9uIGNvZGUsIHNob3dpbmcgdGhlIHRvcCAyMCBtb3N0IGZyZXF1ZW50bHktZW50ZXJlZCBieXRlY29kZQorZnJhbWVzLCBlYWNoIHNlY29uZCwgYWNyb3NzIHRoZSB3aG9sZSBzeXN0ZW06CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICBnbG9iYWwgZm5fY2FsbHM7CisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkKKyAgICB7CisgICAgICAgIGZuX2NhbGxzW3BpZCgpLCBmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVub10gKz0gMTsKKyAgICB9CisKKyAgICBwcm9iZSB0aW1lci5tcygxMDAwKSB7CisgICAgICAgIHByaW50ZigiXDAzM1sySlwwMzNbMTsxSCIpIC8qIGNsZWFyIHNjcmVlbiBcKi8KKyAgICAgICAgcHJpbnRmKCIlNnMgJTgwcyAlNnMgJTMwcyAlNnNcbiIsCisgICAgICAgICAgICAgICAiUElEIiwgIkZJTEVOQU1FIiwgIkxJTkUiLCAiRlVOQ1RJT04iLCAiQ0FMTFMiKQorICAgICAgICBmb3JlYWNoIChbcGlkLCBmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVub10gaW4gZm5fY2FsbHMtIGxpbWl0IDIwKSB7CisgICAgICAgICAgICBwcmludGYoIiU2ZCAlODBzICU2ZCAlMzBzICU2ZFxuIiwKKyAgICAgICAgICAgICAgICBwaWQsIGZpbGVuYW1lLCBsaW5lbm8sIGZ1bmNuYW1lLAorICAgICAgICAgICAgICAgIGZuX2NhbGxzW3BpZCwgZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm9dKTsKKyAgICAgICAgfQorICAgICAgICBkZWxldGUgZm5fY2FsbHM7CisgICAgfQorCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjFmNzI3Li4wMDAwMDAwCi0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotCi1pbXBvcnQgc210cGxpYgotCi1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQotZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgQWRkcmVzcwotZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgbWFrZV9tc2dpZAotCi0jIENyZWF0ZSB0aGUgYmFzZSB0ZXh0IG1lc3NhZ2UuCi1tc2cgPSBFbWFpbE1lc3NhZ2UoKQotbXNnWydTdWJqZWN0J10gPSAiQXlvbnMgYXNwZXJnZXMgcG91ciBsZSBkw6lqZXVuZXIiCi1tc2dbJ0Zyb20nXSA9IEFkZHJlc3MoIlBlcMOpIExlIFBldyIsICJwZXBlIiwgImV4YW1wbGUuY29tIikKLW1zZ1snVG8nXSA9IChBZGRyZXNzKCJQZW5lbG9wZSBQdXNzeWNhdCIsICJwZW5lbG9wZSIsICJleGFtcGxlLmNvbSIpLAotICAgICAgICAgICAgIEFkZHJlc3MoIkZhYnJldHRlIFB1c3N5Y2F0IiwgImZhYnJldHRlIiwgImV4YW1wbGUuY29tIikpCi1tc2cuc2V0X2NvbnRlbnQoIiIiXAotU2FsdXQhCi0KLUNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KLQotWzFdIGh0dHA6Ly93d3cueXVtbWx5LmNvbS9yZWNpcGUvUm9hc3RlZC1Bc3BhcmFndXMtRXBpY3VyaW91cy0yMDM3MTgKLQotLS1QZXDDqQotIiIiKQotCi0jIEFkZCB0aGUgaHRtbCB2ZXJzaW9uLiAgVGhpcyBjb252ZXJ0cyB0aGUgbWVzc2FnZSBpbnRvIGEgbXVsdGlwYXJ0L2FsdGVybmF0aXZlCi0jIGNvbnRhaW5lciwgd2l0aCB0aGUgb3JpZ2luYWwgdGV4dCBtZXNzYWdlIGFzIHRoZSBmaXJzdCBwYXJ0IGFuZCB0aGUgbmV3IGh0bWwKLSMgbWVzc2FnZSBhcyB0aGUgc2Vjb25kIHBhcnQuCi1hc3BhcmFndXNfY2lkID0gbWFrZV9tc2dpZCgpCi1tc2cuYWRkX2FsdGVybmF0aXZlKCIiIlwKLTxodG1sPgotICA8aGVhZD48L2hlYWQ+Ci0gIDxib2R5PgotICAgIDxwPlNhbHV0ITxccD4KLSAgICA8cD5DZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQKLSAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOD4KLSAgICAgICAgICAgIHJlY2lwaWUKLSAgICAgICAgPC9hPiBkw6lqZXVuZXIuCi0gICAgPC9wPgotICAgIDxpbWcgc3JjPSJjaWQ6e2FzcGFyYWd1c19jaWR9IiBcPgotICA8L2JvZHk+Ci08L2h0bWw+Ci0iIiIuZm9ybWF0KGFzcGFyYWd1c19jaWQ9YXNwYXJhZ3VzX2NpZFsxOi0xXSksIHN1YnR5cGU9J2h0bWwnKQotIyBub3RlIHRoYXQgd2UgbmVlZGVkIHRvIHBlZWwgdGhlIDw+IG9mZiB0aGUgbXNnaWQgZm9yIHVzZSBpbiB0aGUgaHRtbC4KLQotIyBOb3cgYWRkIHRoZSByZWxhdGVkIGltYWdlIHRvIHRoZSBodG1sIHBhcnQuCi13aXRoIG9wZW4oInJvYXN0ZWQtYXNwYXJhZ3VzLmpwZyIsICdyYicpIGFzIGltZzoKLSAgICBtc2cuZ2V0X3BheWxvYWQoKVsxXS5hZGRfcmVsYXRlZChpbWcucmVhZCgpLCAnaW1hZ2UnLCAnanBlZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2lkPWFzcGFyYWd1c19jaWQpCi0KLSMgTWFrZSBhIGxvY2FsIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZC4KLXdpdGggb3Blbignb3V0Z29pbmcubXNnJywgJ3diJykgYXMgZjoKLSAgICBmLndyaXRlKGJ5dGVzKG1zZykpCi0KLSMgU2VuZCB0aGUgbWVzc2FnZSB2aWEgbG9jYWwgU01UUCBzZXJ2ZXIuCi13aXRoIHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykgYXMgczoKLSAgICBzLnNlbmRfbWVzc2FnZShtc2cpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCA4NTA3MGYzLi4yZTE0MmIxCi0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKQEAgLTIsNDcgKzIsNTUgQEAKIAogaW1wb3J0IHNtdHBsaWIKIAotZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAotZnJvbSBlbWFpbC5taW1lLnRleHQgaW1wb3J0IE1JTUVUZXh0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQorZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgQWRkcmVzcworZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgbWFrZV9tc2dpZAogCi0jIG1lID09IG15IGVtYWlsIGFkZHJlc3MKLSMgeW91ID09IHJlY2lwaWVudCdzIGVtYWlsIGFkZHJlc3MKLW1lID0gIm15QGVtYWlsLmNvbSIKLXlvdSA9ICJ5b3VyQGVtYWlsLmNvbSIKKyMgQ3JlYXRlIHRoZSBiYXNlIHRleHQgbWVzc2FnZS4KK21zZyA9IEVtYWlsTWVzc2FnZSgpCittc2dbJ1N1YmplY3QnXSA9ICJBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lciIKK21zZ1snRnJvbSddID0gQWRkcmVzcygiUGVww6kgTGUgUGV3IiwgInBlcGUiLCAiZXhhbXBsZS5jb20iKQorbXNnWydUbyddID0gKEFkZHJlc3MoIlBlbmVsb3BlIFB1c3N5Y2F0IiwgInBlbmVsb3BlIiwgImV4YW1wbGUuY29tIiksCisgICAgICAgICAgICAgQWRkcmVzcygiRmFicmV0dGUgUHVzc3ljYXQiLCAiZmFicmV0dGUiLCAiZXhhbXBsZS5jb20iKSkKK21zZy5zZXRfY29udGVudCgiIiJcCitTYWx1dCEKIAotIyBDcmVhdGUgbWVzc2FnZSBjb250YWluZXIgLSB0aGUgY29ycmVjdCBNSU1FIHR5cGUgaXMgbXVsdGlwYXJ0L2FsdGVybmF0aXZlLgotbXNnID0gTUlNRU11bHRpcGFydCgnYWx0ZXJuYXRpdmUnKQotbXNnWydTdWJqZWN0J10gPSAiTGluayIKLW1zZ1snRnJvbSddID0gbWUKLW1zZ1snVG8nXSA9IHlvdQorQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgogCi0jIENyZWF0ZSB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZSAoYSBwbGFpbi10ZXh0IGFuZCBhbiBIVE1MIHZlcnNpb24pLgotdGV4dCA9ICJIaSFcbkhvdyBhcmUgeW91P1xuSGVyZSBpcyB0aGUgbGluayB5b3Ugd2FudGVkOlxuaHR0cHM6Ly93d3cucHl0aG9uLm9yZyIKLWh0bWwgPSAiIiJcCitbMV0gaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOAorCistLVBlcMOpCisiIiIpCisKKyMgQWRkIHRoZSBodG1sIHZlcnNpb24uICBUaGlzIGNvbnZlcnRzIHRoZSBtZXNzYWdlIGludG8gYSBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUKKyMgY29udGFpbmVyLCB3aXRoIHRoZSBvcmlnaW5hbCB0ZXh0IG1lc3NhZ2UgYXMgdGhlIGZpcnN0IHBhcnQgYW5kIHRoZSBuZXcgaHRtbAorIyBtZXNzYWdlIGFzIHRoZSBzZWNvbmQgcGFydC4KK2FzcGFyYWd1c19jaWQgPSBtYWtlX21zZ2lkKCkKK21zZy5hZGRfYWx0ZXJuYXRpdmUoIiIiXAogPGh0bWw+CiAgIDxoZWFkPjwvaGVhZD4KICAgPGJvZHk+Ci0gICAgPHA+SGkhPGJyPgotICAgICAgIEhvdyBhcmUgeW91Pzxicj4KLSAgICAgICBIZXJlIGlzIHRoZSA8YSBocmVmPSJodHRwczovL3d3dy5weXRob24ub3JnIj5saW5rPC9hPiB5b3Ugd2FudGVkLgorICAgIDxwPlNhbHV0ITwvcD4KKyAgICA8cD5DZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQKKyAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOD4KKyAgICAgICAgICAgIHJlY2lwaWUKKyAgICAgICAgPC9hPiBkw6lqZXVuZXIuCiAgICAgPC9wPgorICAgIDxpbWcgc3JjPSJjaWQ6e2FzcGFyYWd1c19jaWR9IiAvPgogICA8L2JvZHk+CiA8L2h0bWw+Ci0iIiIKKyIiIi5mb3JtYXQoYXNwYXJhZ3VzX2NpZD1hc3BhcmFndXNfY2lkWzE6LTFdKSwgc3VidHlwZT0naHRtbCcpCisjIG5vdGUgdGhhdCB3ZSBuZWVkZWQgdG8gcGVlbCB0aGUgPD4gb2ZmIHRoZSBtc2dpZCBmb3IgdXNlIGluIHRoZSBodG1sLgogCi0jIFJlY29yZCB0aGUgTUlNRSB0eXBlcyBvZiBib3RoIHBhcnRzIC0gdGV4dC9wbGFpbiBhbmQgdGV4dC9odG1sLgotcGFydDEgPSBNSU1FVGV4dCh0ZXh0LCAncGxhaW4nKQotcGFydDIgPSBNSU1FVGV4dChodG1sLCAnaHRtbCcpCisjIE5vdyBhZGQgdGhlIHJlbGF0ZWQgaW1hZ2UgdG8gdGhlIGh0bWwgcGFydC4KK3dpdGggb3Blbigicm9hc3RlZC1hc3BhcmFndXMuanBnIiwgJ3JiJykgYXMgaW1nOgorICAgIG1zZy5nZXRfcGF5bG9hZCgpWzFdLmFkZF9yZWxhdGVkKGltZy5yZWFkKCksICdpbWFnZScsICdqcGVnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9YXNwYXJhZ3VzX2NpZCkKIAotIyBBdHRhY2ggcGFydHMgaW50byBtZXNzYWdlIGNvbnRhaW5lci4KLSMgQWNjb3JkaW5nIHRvIFJGQyAyMDQ2LCB0aGUgbGFzdCBwYXJ0IG9mIGEgbXVsdGlwYXJ0IG1lc3NhZ2UsIGluIHRoaXMgY2FzZQotIyB0aGUgSFRNTCBtZXNzYWdlLCBpcyBiZXN0IGFuZCBwcmVmZXJyZWQuCi1tc2cuYXR0YWNoKHBhcnQxKQotbXNnLmF0dGFjaChwYXJ0MikKKyMgTWFrZSBhIGxvY2FsIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZC4KK3dpdGggb3Blbignb3V0Z29pbmcubXNnJywgJ3diJykgYXMgZjoKKyAgICBmLndyaXRlKGJ5dGVzKG1zZykpCiAKICMgU2VuZCB0aGUgbWVzc2FnZSB2aWEgbG9jYWwgU01UUCBzZXJ2ZXIuCi1zID0gc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKQotIyBzZW5kbWFpbCBmdW5jdGlvbiB0YWtlcyAzIGFyZ3VtZW50czogc2VuZGVyJ3MgYWRkcmVzcywgcmVjaXBpZW50J3MgYWRkcmVzcwotIyBhbmQgbWVzc2FnZSB0byBzZW5kIC0gaGVyZSBpdCBpcyBzZW50IGFzIG9uZSBzdHJpbmcuCi1zLnNlbmRtYWlsKG1lLCB5b3UsIG1zZy5hc19zdHJpbmcoKSkKLXMucXVpdCgpCit3aXRoIHNtdHBsaWIuU01UUCgnbG9jYWxob3N0JykgYXMgczoKKyAgICBzLnNlbmRfbWVzc2FnZShtc2cpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weQppbmRleCAzYzdjNzcwLi4wZGNmYmZiIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkKQEAgLTMsMjIgKzMsMTQgQEAKICIiIlNlbmQgdGhlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFzIGEgTUlNRSBtZXNzYWdlLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzbXRwbGliCiAjIEZvciBndWVzc2luZyBNSU1FIHR5cGUgYmFzZWQgb24gZmlsZSBuYW1lIGV4dGVuc2lvbgogaW1wb3J0IG1pbWV0eXBlcwogCiBmcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgogCi1mcm9tIGVtYWlsIGltcG9ydCBlbmNvZGVycwotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCi1mcm9tIGVtYWlsLm1pbWUuYXVkaW8gaW1wb3J0IE1JTUVBdWRpbwotZnJvbSBlbWFpbC5taW1lLmJhc2UgaW1wb3J0IE1JTUVCYXNlCi1mcm9tIGVtYWlsLm1pbWUuaW1hZ2UgaW1wb3J0IE1JTUVJbWFnZQotZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAotZnJvbSBlbWFpbC5taW1lLnRleHQgaW1wb3J0IE1JTUVUZXh0Ci0KLUNPTU1BU1BBQ0UgPSAnLCAnCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQorZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IFNNVFAKIAogCiBkZWYgbWFpbigpOgpAQCAtNDcsMTIgKzM5LDEyIEBACiAgICAgZGlyZWN0b3J5ID0gYXJncy5kaXJlY3RvcnkKICAgICBpZiBub3QgZGlyZWN0b3J5OgogICAgICAgICBkaXJlY3RvcnkgPSAnLicKLSAgICAjIENyZWF0ZSB0aGUgZW5jbG9zaW5nIChvdXRlcikgbWVzc2FnZQotICAgIG91dGVyID0gTUlNRU11bHRpcGFydCgpCi0gICAgb3V0ZXJbJ1N1YmplY3QnXSA9ICdDb250ZW50cyBvZiBkaXJlY3RvcnkgJXMnICUgb3MucGF0aC5hYnNwYXRoKGRpcmVjdG9yeSkKLSAgICBvdXRlclsnVG8nXSA9IENPTU1BU1BBQ0Uuam9pbihhcmdzLnJlY2lwaWVudHMpCi0gICAgb3V0ZXJbJ0Zyb20nXSA9IGFyZ3Muc2VuZGVyCi0gICAgb3V0ZXIucHJlYW1ibGUgPSAnWW91IHdpbGwgbm90IHNlZSB0aGlzIGluIGEgTUlNRS1hd2FyZSBtYWlsIHJlYWRlci5cbicKKyAgICAjIENyZWF0ZSB0aGUgbWVzc2FnZQorICAgIG1zZyA9IEVtYWlsTWVzc2FnZSgpCisgICAgbXNnWydTdWJqZWN0J10gPSAnQ29udGVudHMgb2YgZGlyZWN0b3J5ICVzJyAlIG9zLnBhdGguYWJzcGF0aChkaXJlY3RvcnkpCisgICAgbXNnWydUbyddID0gJywgJy5qb2luKGFyZ3MucmVjaXBpZW50cykKKyAgICBtc2dbJ0Zyb20nXSA9IGFyZ3Muc2VuZGVyCisgICAgbXNnLnByZWFtYmxlID0gJ1lvdSB3aWxsIG5vdCBzZWUgdGhpcyBpbiBhIE1JTUUtYXdhcmUgbWFpbCByZWFkZXIuXG4nCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgZmlsZW5hbWUpCkBAIC02NywzMyArNTksMTggQEAKICAgICAgICAgICAgICMgdXNlIGEgZ2VuZXJpYyBiYWctb2YtYml0cyB0eXBlLgogICAgICAgICAgICAgY3R5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJwogICAgICAgICBtYWludHlwZSwgc3VidHlwZSA9IGN0eXBlLnNwbGl0KCcvJywgMSkKLSAgICAgICAgaWYgbWFpbnR5cGUgPT0gJ3RleHQnOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGZwOgotICAgICAgICAgICAgICAgICMgTm90ZTogd2Ugc2hvdWxkIGhhbmRsZSBjYWxjdWxhdGluZyB0aGUgY2hhcnNldAotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVUZXh0KGZwLnJlYWQoKSwgX3N1YnR5cGU9c3VidHlwZSkKLSAgICAgICAgZWxpZiBtYWludHlwZSA9PSAnaW1hZ2UnOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVJbWFnZShmcC5yZWFkKCksIF9zdWJ0eXBlPXN1YnR5cGUpCi0gICAgICAgIGVsaWYgbWFpbnR5cGUgPT0gJ2F1ZGlvJzoKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAncmInKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBtc2cgPSBNSU1FQXVkaW8oZnAucmVhZCgpLCBfc3VidHlwZT1zdWJ0eXBlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVCYXNlKG1haW50eXBlLCBzdWJ0eXBlKQotICAgICAgICAgICAgICAgIG1zZy5zZXRfcGF5bG9hZChmcC5yZWFkKCkpCi0gICAgICAgICAgICAjIEVuY29kZSB0aGUgcGF5bG9hZCB1c2luZyBCYXNlNjQKLSAgICAgICAgICAgIGVuY29kZXJzLmVuY29kZV9iYXNlNjQobXNnKQotICAgICAgICAjIFNldCB0aGUgZmlsZW5hbWUgcGFyYW1ldGVyCi0gICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT1maWxlbmFtZSkKLSAgICAgICAgb3V0ZXIuYXR0YWNoKG1zZykKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgorICAgICAgICAgICAgbXNnLmFkZF9hdHRhY2htZW50KGZwLnJlYWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWludHlwZT1tYWludHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlPXN1YnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9ZmlsZW5hbWUpCiAgICAgIyBOb3cgc2VuZCBvciBzdG9yZSB0aGUgbWVzc2FnZQotICAgIGNvbXBvc2VkID0gb3V0ZXIuYXNfc3RyaW5nKCkKICAgICBpZiBhcmdzLm91dHB1dDoKLSAgICAgICAgd2l0aCBvcGVuKGFyZ3Mub3V0cHV0LCAndycpIGFzIGZwOgotICAgICAgICAgICAgZnAud3JpdGUoY29tcG9zZWQpCisgICAgICAgIHdpdGggb3BlbihhcmdzLm91dHB1dCwgJ3diJykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShtc2cuYXNfYnl0ZXMocG9saWN5PVNNVFApKQogICAgIGVsc2U6CiAgICAgICAgIHdpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgotICAgICAgICAgICAgcy5zZW5kbWFpbChhcmdzLnNlbmRlciwgYXJncy5yZWNpcGllbnRzLCBjb21wb3NlZCkKKyAgICAgICAgICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQppbmRleCA4OWM4ZjNhLi4yYzQyMTQ1IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQpAQCAtMSwxOCArMSwyNCBAQAogIyBJbXBvcnQgdGhlIGVtYWlsIG1vZHVsZXMgd2UnbGwgbmVlZAotZnJvbSBlbWFpbC5wYXJzZXIgaW1wb3J0IFBhcnNlcgorZnJvbSBlbWFpbC5wYXJzZXIgaW1wb3J0IEJ5dGVzUGFyc2VyLCBQYXJzZXIKK2Zyb20gZW1haWwucG9saWN5IGltcG9ydCBkZWZhdWx0CiAKICMgSWYgdGhlIGUtbWFpbCBoZWFkZXJzIGFyZSBpbiBhIGZpbGUsIHVuY29tbWVudCB0aGVzZSB0d28gbGluZXM6Ci0jIHdpdGggb3BlbihtZXNzYWdlZmlsZSkgYXMgZnA6Ci0jICAgICBoZWFkZXJzID0gUGFyc2VyKCkucGFyc2UoZnApCisjIHdpdGggb3BlbihtZXNzYWdlZmlsZSwgJ3JiJykgYXMgZnA6CisjICAgICBoZWFkZXJzID0gQnl0ZXNQYXJzZXIocG9saWN5PWRlZmF1bHQpLnBhcnNlKGZwKQogCi0jICBPciBmb3IgcGFyc2luZyBoZWFkZXJzIGluIGEgc3RyaW5nLCB1c2U6Ci1oZWFkZXJzID0gUGFyc2VyKCkucGFyc2VzdHIoJ0Zyb206IDx1c2VyQGV4YW1wbGUuY29tPlxuJworIyAgT3IgZm9yIHBhcnNpbmcgaGVhZGVycyBpbiBhIHN0cmluZyAodGhpcyBpcyBhbiB1bmNvbW1vbiBvcGVyYXRpb24pLCB1c2U6CitoZWFkZXJzID0gUGFyc2VyKHBvbGljeT1kZWZhdWx0KS5wYXJzZXN0cigKKyAgICAgICAgJ0Zyb206IEZvbyBCYXIgPHVzZXJAZXhhbXBsZS5jb20+XG4nCiAgICAgICAgICdUbzogPHNvbWVvbmVfZWxzZUBleGFtcGxlLmNvbT5cbicKICAgICAgICAgJ1N1YmplY3Q6IFRlc3QgbWVzc2FnZVxuJwogICAgICAgICAnXG4nCiAgICAgICAgICdCb2R5IHdvdWxkIGdvIGhlcmVcbicpCiAKICMgIE5vdyB0aGUgaGVhZGVyIGl0ZW1zIGNhbiBiZSBhY2Nlc3NlZCBhcyBhIGRpY3Rpb25hcnk6Ci1wcmludCgnVG86ICVzJyAlIGhlYWRlcnNbJ3RvJ10pCi1wcmludCgnRnJvbTogJXMnICUgaGVhZGVyc1snZnJvbSddKQotcHJpbnQoJ1N1YmplY3Q6ICVzJyAlIGhlYWRlcnNbJ3N1YmplY3QnXSkKK3ByaW50KCdUbzoge30nLmZvcm1hdChoZWFkZXJzWyd0byddKSkKK3ByaW50KCdGcm9tOiB7fScuZm9ybWF0KGhlYWRlcnNbJ2Zyb20nXSkpCitwcmludCgnU3ViamVjdDoge30nLmZvcm1hdChoZWFkZXJzWydzdWJqZWN0J10pKQorCisjIFlvdSBjYW4gYWxzbyBhY2Nlc3MgdGhlIHBhcnRzIG9mIHRoZSBhZGRyZXNzZXM6CitwcmludCgnUmVjaXBpZW50IHVzZXJuYW1lOiB7fScuZm9ybWF0KGhlYWRlcnNbJ3RvJ10uYWRkcmVzc2VzWzBdLnVzZXJuYW1lKSkKK3ByaW50KCdTZW5kZXIgbmFtZToge30nLmZvcm1hdChoZWFkZXJzWydmcm9tJ10uYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZSkpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtbWltZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5CmluZGV4IDYxZDA4MzAuLmM2MTAyNDIgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5CkBAIC0xLDMwICsxLDI5IEBACiAjIEltcG9ydCBzbXRwbGliIGZvciB0aGUgYWN0dWFsIHNlbmRpbmcgZnVuY3Rpb24KIGltcG9ydCBzbXRwbGliCiAKKyMgQW5kIGltZ2hkciB0byBmaW5kIHRoZSB0eXBlcyBvZiBvdXIgaW1hZ2VzCitpbXBvcnQgaW1naGRyCisKICMgSGVyZSBhcmUgdGhlIGVtYWlsIHBhY2thZ2UgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLm1pbWUuaW1hZ2UgaW1wb3J0IE1JTUVJbWFnZQotZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBFbWFpbE1lc3NhZ2UKIAotQ09NTUFTUEFDRSA9ICcsICcKLQotIyBDcmVhdGUgdGhlIGNvbnRhaW5lciAob3V0ZXIpIGVtYWlsIG1lc3NhZ2UuCi1tc2cgPSBNSU1FTXVsdGlwYXJ0KCkKKyMgQ3JlYXRlIHRoZSBjb250YWluZXIgZW1haWwgbWVzc2FnZS4KK21zZyA9IEVtYWlsTWVzc2FnZSgpCiBtc2dbJ1N1YmplY3QnXSA9ICdPdXIgZmFtaWx5IHJldW5pb24nCiAjIG1lID09IHRoZSBzZW5kZXIncyBlbWFpbCBhZGRyZXNzCiAjIGZhbWlseSA9IHRoZSBsaXN0IG9mIGFsbCByZWNpcGllbnRzJyBlbWFpbCBhZGRyZXNzZXMKIG1zZ1snRnJvbSddID0gbWUKLW1zZ1snVG8nXSA9IENPTU1BU1BBQ0Uuam9pbihmYW1pbHkpCittc2dbJ1RvJ10gPSAnLCAnLmpvaW4oZmFtaWx5KQogbXNnLnByZWFtYmxlID0gJ091ciBmYW1pbHkgcmV1bmlvbicKIAotIyBBc3N1bWUgd2Uga25vdyB0aGF0IHRoZSBpbWFnZSBmaWxlcyBhcmUgYWxsIGluIFBORyBmb3JtYXQKKyMgT3BlbiB0aGUgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICBVc2UgaW1naGRyIHRvIGZpZ3VyZSBvdXQgdGhlCisjIE1JTUUgc3VidHlwZSBmb3IgZWFjaCBzcGVjaWZpYyBpbWFnZS4KIGZvciBmaWxlIGluIHBuZ2ZpbGVzOgotICAgICMgT3BlbiB0aGUgZmlsZXMgaW4gYmluYXJ5IG1vZGUuICBMZXQgdGhlIE1JTUVJbWFnZSBjbGFzcyBhdXRvbWF0aWNhbGx5Ci0gICAgIyBndWVzcyB0aGUgc3BlY2lmaWMgaW1hZ2UgdHlwZS4KICAgICB3aXRoIG9wZW4oZmlsZSwgJ3JiJykgYXMgZnA6Ci0gICAgICAgIGltZyA9IE1JTUVJbWFnZShmcC5yZWFkKCkpCi0gICAgbXNnLmF0dGFjaChpbWcpCisgICAgICAgIGltZ19kYXRhID0gZnAucmVhZCgpCisgICAgbXNnLmFkZF9hdHRhY2htZW50KGltZ19kYXRhLCBtYWludHlwZT0naW1hZ2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VidHlwZT1pbWdoZHIud2hhdChOb25lLCBpbWdfZGF0YSkpCiAKICMgU2VuZCB0aGUgZW1haWwgdmlhIG91ciBvd24gU01UUCBzZXJ2ZXIuCi1zID0gc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKQotcy5zZW5kX21lc3NhZ2UobXNnKQotcy5xdWl0KCkKK3dpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgorICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLW5ldy1hcGkucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQpyZW5hbWUgdG8gRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUucHkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CmluZGV4IGI5YjhiNDEuLmY2OWVmNDAgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQpAQCAtMiwxMyArMiwxMyBAQAogaW1wb3J0IHNtdHBsaWIKIAogIyBJbXBvcnQgdGhlIGVtYWlsIG1vZHVsZXMgd2UnbGwgbmVlZAotZnJvbSBlbWFpbC5taW1lLnRleHQgaW1wb3J0IE1JTUVUZXh0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCi0jIE9wZW4gYSBwbGFpbiB0ZXh0IGZpbGUgZm9yIHJlYWRpbmcuICBGb3IgdGhpcyBleGFtcGxlLCBhc3N1bWUgdGhhdAotIyB0aGUgdGV4dCBmaWxlIGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycy4KKyMgT3BlbiB0aGUgcGxhaW4gdGV4dCBmaWxlIHdob3NlIG5hbWUgaXMgaW4gdGV4dGZpbGUgZm9yIHJlYWRpbmcuCiB3aXRoIG9wZW4odGV4dGZpbGUpIGFzIGZwOgogICAgICMgQ3JlYXRlIGEgdGV4dC9wbGFpbiBtZXNzYWdlCi0gICAgbXNnID0gTUlNRVRleHQoZnAucmVhZCgpKQorICAgIG1zZyA9IEVtYWlsTWVzc2FnZSgpCisgICAgbXNnLnNldF9jb250ZW50KGZwLnJlYWQoKSkKIAogIyBtZSA9PSB0aGUgc2VuZGVyJ3MgZW1haWwgYWRkcmVzcwogIyB5b3UgPT0gdGhlIHJlY2lwaWVudCdzIGVtYWlsIGFkZHJlc3MKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CmluZGV4IDU3NGEwYjYuLmUwYTdmMDEgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQpAQCAtMywxMSArMywxMSBAQAogIiIiVW5wYWNrIGEgTUlNRSBtZXNzYWdlIGludG8gYSBkaXJlY3Rvcnkgb2YgZmlsZXMuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGVtYWlsCi1pbXBvcnQgZXJybm8KIGltcG9ydCBtaW1ldHlwZXMKIAorZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKKwogZnJvbSBhcmdwYXJzZSBpbXBvcnQgQXJndW1lbnRQYXJzZXIKIAogCkBAIC0yMiw4ICsyMiw4IEBACiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnbXNnZmlsZScpCiAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAotICAgIHdpdGggb3BlbihhcmdzLm1zZ2ZpbGUpIGFzIGZwOgotICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmcCkKKyAgICB3aXRoIG9wZW4oYXJncy5tc2dmaWxlLCAncmInKSBhcyBmcDoKKyAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBwb2xpY3k9ZGVmYXVsdCkKIAogICAgIHRyeToKICAgICAgICAgb3MubWtkaXIoYXJncy5kaXJlY3RvcnkpCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYyBiL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCmluZGV4IDk4NmQ2NzAuLmVhZDdiZGQgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCisrKyBiL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jCkBAIC02Myw2ICs2Myw4IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQgXCIlc1wiXG4iLCBhcmd2WzFdKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIDEyMDsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvdGVzdC5weSBiL0RvYy9pbmNsdWRlcy90ZXN0LnB5CmluZGV4IDdlYmY0NmEuLjllOWQ0YTYgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy90ZXN0LnB5CisrKyBiL0RvYy9pbmNsdWRlcy90ZXN0LnB5CkBAIC0yMDQsNyArMjA0LDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMudXRpbCBpbXBvcnQgZ2V0X3BsYXRmb3JtCi1QTEFUX1NQRUMgPSAiJXMtJXMiICUgKGdldF9wbGF0Zm9ybSgpLCBzeXMudmVyc2lvblswOjNdKQorUExBVF9TUEVDID0gIiVzLSVkLiVkIiAlIChnZXRfcGxhdGZvcm0oKSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKQogc3JjID0gb3MucGF0aC5qb2luKCJidWlsZCIsICJsaWIuJXMiICUgUExBVF9TUEVDKQogc3lzLnBhdGguYXBwZW5kKHNyYykKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weSBiL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkKaW5kZXggM2E4Y2Y0Ny4uYWU1YTUwOSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weQorKysgYi9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5CkBAIC0xLDQ2ICsxLDEzIEBACi1mcm9tIGRhdGV0aW1lIGltcG9ydCB0emluZm8sIHRpbWVkZWx0YSwgZGF0ZXRpbWUKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IHR6aW5mbywgdGltZWRlbHRhLCBkYXRldGltZSwgdGltZXpvbmUKIAogWkVSTyA9IHRpbWVkZWx0YSgwKQogSE9VUiA9IHRpbWVkZWx0YShob3Vycz0xKQotCi0jIEEgVVRDIGNsYXNzLgotCi1jbGFzcyBVVEModHppbmZvKToKLSAgICAiIiJVVEMiIiIKLQotICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gWkVSTwotCi0gICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiAiVVRDIgotCi0gICAgZGVmIGRzdChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBaRVJPCi0KLXV0YyA9IFVUQygpCi0KLSMgQSBjbGFzcyBidWlsZGluZyB0emluZm8gb2JqZWN0cyBmb3IgZml4ZWQtb2Zmc2V0IHRpbWUgem9uZXMuCi0jIE5vdGUgdGhhdCBGaXhlZE9mZnNldCgwLCAiVVRDIikgaXMgYSBkaWZmZXJlbnQgd2F5IHRvIGJ1aWxkIGEKLSMgVVRDIHR6aW5mbyBvYmplY3QuCi0KLWNsYXNzIEZpeGVkT2Zmc2V0KHR6aW5mbyk6Ci0gICAgIiIiRml4ZWQgb2Zmc2V0IGluIG1pbnV0ZXMgZWFzdCBmcm9tIFVUQy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvZmZzZXQsIG5hbWUpOgotICAgICAgICBzZWxmLl9fb2Zmc2V0ID0gdGltZWRlbHRhKG1pbnV0ZXM9b2Zmc2V0KQotICAgICAgICBzZWxmLl9fbmFtZSA9IG5hbWUKLQotICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgotICAgICAgICByZXR1cm4gc2VsZi5fX29mZnNldAotCi0gICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fbmFtZQotCi0gICAgZGVmIGRzdChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBaRVJPCitTRUNPTkQgPSB0aW1lZGVsdGEoc2Vjb25kcz0xKQogCiAjIEEgY2xhc3MgY2FwdHVyaW5nIHRoZSBwbGF0Zm9ybSdzIGlkZWEgb2YgbG9jYWwgdGltZS4KLQorIyAoTWF5IHJlc3VsdCBpbiB3cm9uZyB2YWx1ZXMgb24gaGlzdG9yaWNhbCB0aW1lcyBpbgorIyAgdGltZXpvbmVzIHdoZXJlIFVUQyBvZmZzZXQgYW5kL29yIHRoZSBEU1QgcnVsZXMgaGFkCisjICBjaGFuZ2VkIGluIHRoZSBwYXN0LikKIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKIFNURE9GRlNFVCA9IHRpbWVkZWx0YShzZWNvbmRzID0gLV90aW1lLnRpbWV6b25lKQpAQCAtNTMsNiArMjAsMTYgQEAKIAogY2xhc3MgTG9jYWxUaW1lem9uZSh0emluZm8pOgogCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKyAgICAgICAgc3RhbXAgPSAoZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm89c2VsZikpIC8vIFNFQ09ORAorICAgICAgICBhcmdzID0gX3RpbWUubG9jYWx0aW1lKHN0YW1wKVs6Nl0KKyAgICAgICAgZHN0X2RpZmYgPSBEU1RESUZGIC8vIFNFQ09ORAorICAgICAgICAjIERldGVjdCBmb2xkCisgICAgICAgIGZvbGQgPSAoYXJncyA9PSBfdGltZS5sb2NhbHRpbWUoc3RhbXAgLSBkc3RfZGlmZikpCisgICAgICAgIHJldHVybiBkYXRldGltZSgqYXJncywgbWljcm9zZWNvbmQ9ZHQubWljcm9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICB0emluZm89c2VsZiwgZm9sZD1mb2xkKQorCiAgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CiAgICAgICAgIGlmIHNlbGYuX2lzZHN0KGR0KToKICAgICAgICAgICAgIHJldHVybiBEU1RPRkZTRVQKQEAgLTk5LDIwICs3NiwzNyBAQAogIyBJbiB0aGUgVVMsIHNpbmNlIDIwMDcsIERTVCBzdGFydHMgYXQgMmFtIChzdGFuZGFyZCB0aW1lKSBvbiB0aGUgc2Vjb25kCiAjIFN1bmRheSBpbiBNYXJjaCwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheSBvbiBvciBhZnRlciBNYXIgOC4KIERTVFNUQVJUXzIwMDcgPSBkYXRldGltZSgxLCAzLCA4LCAyKQotIyBhbmQgZW5kcyBhdCAyYW0gKERTVCB0aW1lOyAxYW0gc3RhbmRhcmQgdGltZSkgb24gdGhlIGZpcnN0IFN1bmRheSBvZiBOb3YuCi1EU1RFTkRfMjAwNyA9IGRhdGV0aW1lKDEsIDExLCAxLCAxKQorIyBhbmQgZW5kcyBhdCAyYW0gKERTVCB0aW1lKSBvbiB0aGUgZmlyc3QgU3VuZGF5IG9mIE5vdi4KK0RTVEVORF8yMDA3ID0gZGF0ZXRpbWUoMSwgMTEsIDEsIDIpCiAjIEZyb20gMTk4NyB0byAyMDA2LCBEU1QgdXNlZCB0byBzdGFydCBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBmaXJzdAotIyBTdW5kYXkgaW4gQXByaWwgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lOyAxYW0gc3RhbmRhcmQgdGltZSkgb24gdGhlIGxhc3QKKyMgU3VuZGF5IGluIEFwcmlsIGFuZCB0byBlbmQgYXQgMmFtIChEU1QgdGltZSkgb24gdGhlIGxhc3QKICMgU3VuZGF5IG9mIE9jdG9iZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkgb24gb3IgYWZ0ZXIgT2N0IDI1LgogRFNUU1RBUlRfMTk4N18yMDA2ID0gZGF0ZXRpbWUoMSwgNCwgMSwgMikKLURTVEVORF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCAxMCwgMjUsIDEpCitEU1RFTkRfMTk4N18yMDA2ID0gZGF0ZXRpbWUoMSwgMTAsIDI1LCAyKQogIyBGcm9tIDE5NjcgdG8gMTk4NiwgRFNUIHVzZWQgdG8gc3RhcnQgYXQgMmFtIChzdGFuZGFyZCB0aW1lKSBvbiB0aGUgbGFzdAotIyBTdW5kYXkgaW4gQXByaWwgKHRoZSBvbmUgb24gb3IgYWZ0ZXIgQXByaWwgMjQpIGFuZCB0byBlbmQgYXQgMmFtIChEU1QgdGltZTsKLSMgMWFtIHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBsYXN0IFN1bmRheSBvZiBPY3RvYmVyLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5CisjIFN1bmRheSBpbiBBcHJpbCAodGhlIG9uZSBvbiBvciBhZnRlciBBcHJpbCAyNCkgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lKQorIyBvbiB0aGUgbGFzdCBTdW5kYXkgb2YgT2N0b2Jlciwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheQogIyBvbiBvciBhZnRlciBPY3QgMjUuCiBEU1RTVEFSVF8xOTY3XzE5ODYgPSBkYXRldGltZSgxLCA0LCAyNCwgMikKIERTVEVORF8xOTY3XzE5ODYgPSBEU1RFTkRfMTk4N18yMDA2CiAKK2RlZiB1c19kc3RfcmFuZ2UoeWVhcik6CisgICAgIyBGaW5kIHN0YXJ0IGFuZCBlbmQgdGltZXMgZm9yIFVTIERTVC4gRm9yIHllYXJzIGJlZm9yZSAxOTY3LCByZXR1cm4KKyAgICAjIHN0YXJ0ID0gZW5kIGZvciBubyBEU1QuCisgICAgaWYgMjAwNiA8IHllYXI6CisgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8yMDA3LCBEU1RFTkRfMjAwNworICAgIGVsaWYgMTk4NiA8IHllYXIgPCAyMDA3OgorICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMTk4N18yMDA2LCBEU1RFTkRfMTk4N18yMDA2CisgICAgZWxpZiAxOTY2IDwgeWVhciA8IDE5ODc6CisgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTY3XzE5ODYsIERTVEVORF8xOTY3XzE5ODYKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gKGRhdGV0aW1lKHllYXIsIDEsIDEpLCApICogMgorCisgICAgc3RhcnQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0c3RhcnQucmVwbGFjZSh5ZWFyPXllYXIpKQorICAgIGVuZCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RlbmQucmVwbGFjZSh5ZWFyPXllYXIpKQorICAgIHJldHVybiBzdGFydCwgZW5kCisKKwogY2xhc3MgVVNUaW1lWm9uZSh0emluZm8pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvdXJzLCByZXBybmFtZSwgc3RkbmFtZSwgZHN0bmFtZSk6CkBAIC0xNDEsMjcgKzEzNSwzOSBAQAogICAgICAgICAgICAgIyBpbXBsZW1lbnRhdGlvbikgcGFzc2VzIGEgZGF0ZXRpbWUgd2l0aCBkdC50emluZm8gaXMgc2VsZi4KICAgICAgICAgICAgIHJldHVybiBaRVJPCiAgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgotCi0gICAgICAgICMgRmluZCBzdGFydCBhbmQgZW5kIHRpbWVzIGZvciBVUyBEU1QuIEZvciB5ZWFycyBiZWZvcmUgMTk2NywgcmV0dXJuCi0gICAgICAgICMgWkVSTyBmb3Igbm8gRFNULgotICAgICAgICBpZiAyMDA2IDwgZHQueWVhcjoKLSAgICAgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8yMDA3LCBEU1RFTkRfMjAwNwotICAgICAgICBlbGlmIDE5ODYgPCBkdC55ZWFyIDwgMjAwNzoKLSAgICAgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTg3XzIwMDYsIERTVEVORF8xOTg3XzIwMDYKLSAgICAgICAgZWxpZiAxOTY2IDwgZHQueWVhciA8IDE5ODc6Ci0gICAgICAgICAgICBkc3RzdGFydCwgZHN0ZW5kID0gRFNUU1RBUlRfMTk2N18xOTg2LCBEU1RFTkRfMTk2N18xOTg2Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gWkVSTwotCi0gICAgICAgIHN0YXJ0ID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdHN0YXJ0LnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKLSAgICAgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdGVuZC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCi0KKyAgICAgICAgc3RhcnQsIGVuZCA9IHVzX2RzdF9yYW5nZShkdC55ZWFyKQogICAgICAgICAjIENhbid0IGNvbXBhcmUgbmFpdmUgdG8gYXdhcmUgb2JqZWN0cywgc28gc3RyaXAgdGhlIHRpbWV6b25lIGZyb20KICAgICAgICAgIyBkdCBmaXJzdC4KLSAgICAgICAgaWYgc3RhcnQgPD0gZHQucmVwbGFjZSh0emluZm89Tm9uZSkgPCBlbmQ6CisgICAgICAgIGR0ID0gZHQucmVwbGFjZSh0emluZm89Tm9uZSkKKyAgICAgICAgaWYgc3RhcnQgKyBIT1VSIDw9IGR0IDwgZW5kIC0gSE9VUjoKKyAgICAgICAgICAgICMgRFNUIGlzIGluIGVmZmVjdC4KICAgICAgICAgICAgIHJldHVybiBIT1VSCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gWkVSTworICAgICAgICBpZiBlbmQgLSBIT1VSIDw9IGR0IDwgZW5kOgorICAgICAgICAgICAgIyBGb2xkIChhbiBhbWJpZ3VvdXMgaG91cik6IHVzZSBkdC5mb2xkIHRvIGRpc2FtYmlndWF0ZS4KKyAgICAgICAgICAgIHJldHVybiBaRVJPIGlmIGR0LmZvbGQgZWxzZSBIT1VSCisgICAgICAgIGlmIHN0YXJ0IDw9IGR0IDwgc3RhcnQgKyBIT1VSOgorICAgICAgICAgICAgIyBHYXAgKGEgbm9uLWV4aXN0ZW50IGhvdXIpOiByZXZlcnNlIHRoZSBmb2xkIHJ1bGUuCisgICAgICAgICAgICByZXR1cm4gSE9VUiBpZiBkdC5mb2xkIGVsc2UgWkVSTworICAgICAgICAjIERTVCBpcyBvZmYuCisgICAgICAgIHJldHVybiBaRVJPCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorICAgICAgICBzdGFydCwgZW5kID0gdXNfZHN0X3JhbmdlKGR0LnllYXIpCisgICAgICAgIHN0YXJ0ID0gc3RhcnQucmVwbGFjZSh0emluZm89c2VsZikKKyAgICAgICAgZW5kID0gZW5kLnJlcGxhY2UodHppbmZvPXNlbGYpCisgICAgICAgIHN0ZF90aW1lID0gZHQgKyBzZWxmLnN0ZG9mZnNldAorICAgICAgICBkc3RfdGltZSA9IHN0ZF90aW1lICsgSE9VUgorICAgICAgICBpZiBlbmQgPD0gZHN0X3RpbWUgPCBlbmQgKyBIT1VSOgorICAgICAgICAgICAgIyBSZXBlYXRlZCBob3VyCisgICAgICAgICAgICByZXR1cm4gc3RkX3RpbWUucmVwbGFjZShmb2xkPTEpCisgICAgICAgIGlmIHN0ZF90aW1lIDwgc3RhcnQgb3IgZHN0X3RpbWUgPj0gZW5kOgorICAgICAgICAgICAgIyBTdGFuZGFyZCB0aW1lCisgICAgICAgICAgICByZXR1cm4gc3RkX3RpbWUKKyAgICAgICAgaWYgc3RhcnQgPD0gc3RkX3RpbWUgPCBlbmQgLSBIT1VSOgorICAgICAgICAgICAgIyBEYXlsaWdodCBzYXZpbmcgdGltZQorICAgICAgICAgICAgcmV0dXJuIGRzdF90aW1lCisKIAogRWFzdGVybiAgPSBVU1RpbWVab25lKC01LCAiRWFzdGVybiIsICAiRVNUIiwgIkVEVCIpCiBDZW50cmFsICA9IFVTVGltZVpvbmUoLTYsICJDZW50cmFsIiwgICJDU1QiLCAiQ0RUIikKZGlmZiAtLWdpdCBhL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdCBiL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdAppbmRleCAxZWYzMTQ5Li5iMjI0NjVkIDEwMDY0NAotLS0gYS9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKKysrIGIvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CkBAIC0yLDkgKzIsOSBAQAogCiAuLiBfaW5zdGFsbGluZy1pbmRleDoKIAotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgSW5zdGFsbGluZyBQeXRob24gTW9kdWxlcwotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioKK0luc3RhbGxpbmcgUHl0aG9uIE1vZHVsZXMKKyoqKioqKioqKioqKioqKioqKioqKioqKioKIAogOkVtYWlsOiBkaXN0dXRpbHMtc2lnQHB5dGhvbi5vcmcKIApAQCAtMzQsMjQgKzM0LDI0IEBACiAKICogYGBwaXBgYCBpcyB0aGUgcHJlZmVycmVkIGluc3RhbGxlciBwcm9ncmFtLiBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIGl0CiAgIGlzIGluY2x1ZGVkIGJ5IGRlZmF1bHQgd2l0aCB0aGUgUHl0aG9uIGJpbmFyeSBpbnN0YWxsZXJzLgotKiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYSBzZW1pLWlzb2xhdGVkIFB5dGhvbiBlbnZpcm9ubWVudCB0aGF0IGFsbG93cworKiBBICp2aXJ0dWFsIGVudmlyb25tZW50KiBpcyBhIHNlbWktaXNvbGF0ZWQgUHl0aG9uIGVudmlyb25tZW50IHRoYXQgYWxsb3dzCiAgIHBhY2thZ2VzIHRvIGJlIGluc3RhbGxlZCBmb3IgdXNlIGJ5IGEgcGFydGljdWxhciBhcHBsaWNhdGlvbiwgcmF0aGVyIHRoYW4KLSAgYmVpbmcgaW5zdGFsbGVkIHN5c3RlbSB3aWRlCi0qIGBgcHl2ZW52YGAgaXMgdGhlIHN0YW5kYXJkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBhbmQgaGFzCisgIGJlaW5nIGluc3RhbGxlZCBzeXN0ZW0gd2lkZS4KKyogYGB2ZW52YGAgaXMgdGhlIHN0YW5kYXJkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBhbmQgaGFzCiAgIGJlZW4gcGFydCBvZiBQeXRob24gc2luY2UgUHl0aG9uIDMuMy4gU3RhcnRpbmcgd2l0aCBQeXRob24gMy40LCBpdAotICBkZWZhdWx0cyB0byBpbnN0YWxsaW5nIGBgcGlwYGAgaW50byBhbGwgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50cworICBkZWZhdWx0cyB0byBpbnN0YWxsaW5nIGBgcGlwYGAgaW50byBhbGwgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50cy4KICogYGB2aXJ0dWFsZW52YGAgaXMgYSB0aGlyZCBwYXJ0eSBhbHRlcm5hdGl2ZSAoYW5kIHByZWRlY2Vzc29yKSB0bwotICBgYHB5dmVudmBgLiBJdCBhbGxvd3MgdmlydHVhbCBlbnZpcm9ubWVudHMgdG8gYmUgdXNlZCBvbiB2ZXJzaW9ucyBvZgotICBQeXRob24gcHJpb3IgdG8gMy40LCB3aGljaCBlaXRoZXIgZG9uJ3QgcHJvdmlkZSBgYHB5dmVudmBgIGF0IGFsbCwgb3IKKyAgYGB2ZW52YGAuIEl0IGFsbG93cyB2aXJ0dWFsIGVudmlyb25tZW50cyB0byBiZSB1c2VkIG9uIHZlcnNpb25zIG9mCisgIFB5dGhvbiBwcmlvciB0byAzLjQsIHdoaWNoIGVpdGhlciBkb24ndCBwcm92aWRlIGBgdmVudmBgIGF0IGFsbCwgb3IKICAgYXJlbid0IGFibGUgdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIGBgcGlwYGAgaW50byBjcmVhdGVkIGVudmlyb25tZW50cy4KLSogdGhlIGBQeXRob24gUGFja2FnaW5nIEluZGV4IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPmBfXyBpcyBhIHB1YmxpYworKiBUaGUgYFB5dGhvbiBQYWNrYWdpbmcgSW5kZXggPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+YF9fIGlzIGEgcHVibGljCiAgIHJlcG9zaXRvcnkgb2Ygb3BlbiBzb3VyY2UgbGljZW5zZWQgcGFja2FnZXMgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBieQotICBvdGhlciBQeXRob24gdXNlcnMKKyAgb3RoZXIgUHl0aG9uIHVzZXJzLgogKiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgQXV0aG9yaXR5CiAgIDxodHRwczovL3d3dy5weXBhLmlvL2VuL2xhdGVzdC8+YF9fIGFyZSB0aGUgZ3JvdXAgb2YKICAgZGV2ZWxvcGVycyBhbmQgZG9jdW1lbnRhdGlvbiBhdXRob3JzIHJlc3BvbnNpYmxlIGZvciB0aGUgbWFpbnRlbmFuY2UgYW5kCiAgIGV2b2x1dGlvbiBvZiB0aGUgc3RhbmRhcmQgcGFja2FnaW5nIHRvb2xzIGFuZCB0aGUgYXNzb2NpYXRlZCBtZXRhZGF0YSBhbmQKLSAgZmlsZSBmb3JtYXQgc3RhbmRhcmRzLiBUaGV5IG1haW50YWluIGEgdmFyaWV0eSBvZiB0b29scywgZG9jdW1lbnRhdGlvbgorICBmaWxlIGZvcm1hdCBzdGFuZGFyZHMuIFRoZXkgbWFpbnRhaW4gYSB2YXJpZXR5IG9mIHRvb2xzLCBkb2N1bWVudGF0aW9uLAogICBhbmQgaXNzdWUgdHJhY2tlcnMgb24gYm90aCBgR2l0SHViIDxodHRwczovL2dpdGh1Yi5jb20vcHlwYT5gX18gYW5kCiAgIGBCaXRCdWNrZXQgPGh0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhLz5gX18uCiAqIGBgZGlzdHV0aWxzYGAgaXMgdGhlIG9yaWdpbmFsIGJ1aWxkIGFuZCBkaXN0cmlidXRpb24gc3lzdGVtIGZpcnN0IGFkZGVkIHRvCkBAIC02Miw2ICs2MiwxOSBAQAogICBvZiB0aGUgbWFpbGluZyBsaXN0IHVzZWQgdG8gY29vcmRpbmF0ZSBQeXRob24gcGFja2FnaW5nIHN0YW5kYXJkcwogICBkZXZlbG9wbWVudCkuCiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIGBgcHl2ZW52YGAgd2FzIHRoZSByZWNvbW1lbmRlZCB0b29sIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cyBmb3IKKyAgIFB5dGhvbiAzLjMgYW5kIDMuNCwgYW5kIGlzIGBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjYKKyAgIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXYvd2hhdHNuZXcvMy42Lmh0bWwjZGVwcmVjYXRlZC1mZWF0dXJlcz5gXy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFRoZSB1c2Ugb2YgYGB2ZW52YGAgaXMgbm93IHJlY29tbWVuZGVkIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cy4KKworLi4gc2VlYWxzbzo6CisKKyAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IENyZWF0aW5nIGFuZCB1c2luZyB2aXJ0dWFsIGVudmlyb25tZW50cworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvaW5zdGFsbGluZy8jY3JlYXRpbmctdmlydHVhbC1lbnZpcm9ubWVudHM+YF9fCisKIAogQmFzaWMgdXNhZ2UKID09PT09PT09PT09CkBAIC0xMDAsMTMgKzExMywxNCBAQAogTW9yZSBpbmZvcm1hdGlvbiBhbmQgcmVzb3VyY2VzIHJlZ2FyZGluZyBgYHBpcGBgIGFuZCBpdHMgY2FwYWJpbGl0aWVzIGNhbiBiZQogZm91bmQgaW4gdGhlIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGUgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmc+YF9fLgogCi1gYHB5dmVudmBgIGhhcyBpdHMgb3duIGRvY3VtZW50YXRpb24gYXQgOnJlZjpgc2NyaXB0cy1weXZlbnZgLiBJbnN0YWxsaW5nCi1pbnRvIGFuIGFjdGl2ZSB2aXJ0dWFsIGVudmlyb25tZW50IHVzZXMgdGhlIGNvbW1hbmRzIHNob3duIGFib3ZlLgorQ3JlYXRpb24gb2YgdmlydHVhbCBlbnZpcm9ubWVudHMgaXMgZG9uZSB0aHJvdWdoIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUuCitJbnN0YWxsaW5nIHBhY2thZ2VzIGludG8gYW4gYWN0aXZlIHZpcnR1YWwgZW52aXJvbm1lbnQgdXNlcyB0aGUgY29tbWFuZHMgc2hvd24KK2Fib3ZlLgogCiAuLiBzZWVhbHNvOjoKIAogICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IEluc3RhbGxpbmcgUHl0aG9uIERpc3RyaWJ1dGlvbiBQYWNrYWdlcwotICAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9pbnN0YWxsaW5nLz5gX18KKyAgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLz5gX18KIAogCiBIb3cgZG8gSSAuLi4/CkBAIC0xMjQsNyArMTM4LDcgQEAKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBSZXF1aXJlbWVudHMgZm9yIEluc3RhbGxpbmcgUGFja2FnZXMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9pbnN0YWxsaW5nLyNyZXF1aXJlbWVudHMtZm9yLWluc3RhbGxpbmctcGFja2FnZXM+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLyNyZXF1aXJlbWVudHMtZm9yLWluc3RhbGxpbmctcGFja2FnZXM+YF9fCiAKIAogLi4gaW5zdGFsbGluZy1wZXItdXNlci1pbnN0YWxsYXRpb246CkBAIC0xNDIsMjAgKzE1NiwxOSBAQAogQSBudW1iZXIgb2Ygc2NpZW50aWZpYyBQeXRob24gcGFja2FnZXMgaGF2ZSBjb21wbGV4IGJpbmFyeSBkZXBlbmRlbmNpZXMsIGFuZAogYXJlbid0IGN1cnJlbnRseSBlYXN5IHRvIGluc3RhbGwgdXNpbmcgYGBwaXBgYCBkaXJlY3RseS4gQXQgdGhpcyBwb2ludCBpbgogdGltZSwgaXQgd2lsbCBvZnRlbiBiZSBlYXNpZXIgZm9yIHVzZXJzIHRvIGluc3RhbGwgdGhlc2UgcGFja2FnZXMgYnkKLWBvdGhlciBtZWFucwotPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NjaWVuY2UvPmBfXworYG90aGVyIG1lYW5zIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NjaWVuY2UvPmBfXwogcmF0aGVyIHRoYW4gYXR0ZW1wdGluZyB0byBpbnN0YWxsIHRoZW0gd2l0aCBgYHBpcGBgLgogCiAuLiBzZWVhbHNvOjoKIAogICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogSW5zdGFsbGluZyBTY2llbnRpZmljIFBhY2thZ2VzCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zY2llbmNlLz5gX18KIAogCiAuLi4gd29yayB3aXRoIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiBpbnN0YWxsZWQgaW4gcGFyYWxsZWw/CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLU9uIExpbnV4LCBNYWMgT1MgWCBhbmQgb3RoZXIgUE9TSVggc3lzdGVtcywgdXNlIHRoZSB2ZXJzaW9uZWQgUHl0aG9uIGNvbW1hbmRzCitPbiBMaW51eCwgTWFjIE9TIFgsIGFuZCBvdGhlciBQT1NJWCBzeXN0ZW1zLCB1c2UgdGhlIHZlcnNpb25lZCBQeXRob24gY29tbWFuZHMKIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIGBgLW1gYCBzd2l0Y2ggdG8gcnVuIHRoZSBhcHByb3ByaWF0ZSBjb3B5IG9mCiBgYHBpcGBgOjoKIApAQCAtMTY0LDcgKzE3Nyw3IEBACiAgICBweXRob24zICAgLW0gcGlwIGluc3RhbGwgU29tZVBhY2thZ2UgICMgZGVmYXVsdCBQeXRob24gMwogICAgcHl0aG9uMy40IC1tIHBpcCBpbnN0YWxsIFNvbWVQYWNrYWdlICAjIHNwZWNpZmljYWxseSBQeXRob24gMy40CiAKLShhcHByb3ByaWF0ZWx5IHZlcnNpb25lZCBgYHBpcGBgIGNvbW1hbmRzIG1heSBhbHNvIGJlIGF2YWlsYWJsZSkKK0FwcHJvcHJpYXRlbHkgdmVyc2lvbmVkIGBgcGlwYGAgY29tbWFuZHMgbWF5IGFsc28gYmUgYXZhaWxhYmxlLgogCiBPbiBXaW5kb3dzLCB1c2UgdGhlIGBgcHlgYCBQeXRob24gbGF1bmNoZXIgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGAtbWBgCiBzd2l0Y2g6OgpAQCAtMjEyLDExICsyMjUsMTEgQEAKIHRoYW4gbmVlZGluZyB0byBidWlsZCB0aGVtIHRoZW1zZWx2ZXMuCiAKIFNvbWUgb2YgdGhlIHNvbHV0aW9ucyBmb3IgaW5zdGFsbGluZyBgc2NpZW50aWZpYyBzb2Z0d2FyZQotPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L3NjaWVuY2UvPmBfXwotdGhhdCBpcyBub3QgeWV0IGF2YWlsYWJsZSBhcyBwcmUtYnVpbHQgYGB3aGVlbGBgIGZpbGVzIG1heSBhbHNvIGhlbHAgd2l0aAorPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc2NpZW5jZS8+YF9fCit0aGF0IGFyZSBub3QgeWV0IGF2YWlsYWJsZSBhcyBwcmUtYnVpbHQgYGB3aGVlbGBgIGZpbGVzIG1heSBhbHNvIGhlbHAgd2l0aAogb2J0YWluaW5nIG90aGVyIGJpbmFyeSBleHRlbnNpb25zIHdpdGhvdXQgbmVlZGluZyB0byBidWlsZCB0aGVtIGxvY2FsbHkuCiAKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBCaW5hcnkgRXh0ZW5zaW9ucwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2V4dGVuc2lvbnMvPmBfXworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZXh0ZW5zaW9ucy8+YF9fCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKaW5kZXggYWU3MmQyNi4uOWU1MTQxNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdApAQCAtOSw2ICs5LDkgQEAKIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvYXN5bmNoYXQucHlgCiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIFBsZWFzZSB1c2UgOm1vZDpgYXN5bmNpb2AgaW5zdGVhZC4KKwogLS0tLS0tLS0tLS0tLS0KIAogLi4gbm90ZTo6CkBAIC01OCwxMyArNjEsMTMgQEAKICAgICAgIFRoZSBhc3luY2hyb25vdXMgb3V0cHV0IGJ1ZmZlciBzaXplIChkZWZhdWx0IGBgNDA5NmBgKS4KIAogICAgVW5saWtlIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIDpjbGFzczpgYXN5bmNfY2hhdGAgYWxsb3dzIHlvdSB0bwotICAgZGVmaW5lIGEgZmlyc3QtaW4tZmlyc3Qtb3V0IHF1ZXVlIChmaWZvKSBvZiAqcHJvZHVjZXJzKi4gQSBwcm9kdWNlciBuZWVkCisgICBkZWZpbmUgYSA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlIG9mICpwcm9kdWNlcnMqLiBBIHByb2R1Y2VyIG5lZWQKICAgIGhhdmUgb25seSBvbmUgbWV0aG9kLCA6bWV0aDpgbW9yZWAsIHdoaWNoIHNob3VsZCByZXR1cm4gZGF0YSB0byBiZQogICAgdHJhbnNtaXR0ZWQgb24gdGhlIGNoYW5uZWwuCiAgICBUaGUgcHJvZHVjZXIgaW5kaWNhdGVzIGV4aGF1c3Rpb24gKCppLmUuKiB0aGF0IGl0IGNvbnRhaW5zIG5vIG1vcmUgZGF0YSkgYnkKICAgIGhhdmluZyBpdHMgOm1ldGg6YG1vcmVgIG1ldGhvZCByZXR1cm4gdGhlIGVtcHR5IGJ5dGVzIG9iamVjdC4gQXQgdGhpcyBwb2ludAotICAgdGhlIDpjbGFzczpgYXN5bmNfY2hhdGAgb2JqZWN0IHJlbW92ZXMgdGhlIHByb2R1Y2VyIGZyb20gdGhlIGZpZm8gYW5kIHN0YXJ0cwotICAgdXNpbmcgdGhlIG5leHQgcHJvZHVjZXIsIGlmIGFueS4gV2hlbiB0aGUgcHJvZHVjZXIgZmlmbyBpcyBlbXB0eSB0aGUKKyAgIHRoZSA6Y2xhc3M6YGFzeW5jX2NoYXRgIG9iamVjdCByZW1vdmVzIHRoZSBwcm9kdWNlciBmcm9tIHRoZSBxdWV1ZSBhbmQgc3RhcnRzCisgICB1c2luZyB0aGUgbmV4dCBwcm9kdWNlciwgaWYgYW55LiBXaGVuIHRoZSBwcm9kdWNlciBxdWV1ZSBpcyBlbXB0eSB0aGUKICAgIDptZXRoOmBoYW5kbGVfd3JpdGVgIG1ldGhvZCBkb2VzIG5vdGhpbmcuIFlvdSB1c2UgdGhlIGNoYW5uZWwgb2JqZWN0J3MKICAgIDptZXRoOmBzZXRfdGVybWluYXRvcmAgbWV0aG9kIHRvIGRlc2NyaWJlIGhvdyB0byByZWNvZ25pemUgdGhlIGVuZCBvZiwgb3IKICAgIGFuIGltcG9ydGFudCBicmVha3BvaW50IGluLCBhbiBpbmNvbWluZyB0cmFuc21pc3Npb24gZnJvbSB0aGUgcmVtb3RlCkBAIC03OCw4ICs4MSw4IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuY2xvc2Vfd2hlbl9kb25lKCkKIAotICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIGZpZm8uIFdoZW4gdGhpcyBwcm9kdWNlciBpcyBwb3BwZWQgb2ZmCi0gICB0aGUgZmlmbyBpdCBjYXVzZXMgdGhlIGNoYW5uZWwgdG8gYmUgY2xvc2VkLgorICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIHF1ZXVlLiBXaGVuIHRoaXMgcHJvZHVjZXIgaXMgcG9wcGVkIG9mZgorICAgdGhlIHF1ZXVlIGl0IGNhdXNlcyB0aGUgY2hhbm5lbCB0byBiZSBjbG9zZWQuCiAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5jb2xsZWN0X2luY29taW5nX2RhdGEoZGF0YSkKQEAgLTkyLDcgKzk1LDcgQEAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuZGlzY2FyZF9idWZmZXJzKCkKIAogICAgSW4gZW1lcmdlbmNpZXMgdGhpcyBtZXRob2Qgd2lsbCBkaXNjYXJkIGFueSBkYXRhIGhlbGQgaW4gdGhlIGlucHV0IGFuZC9vcgotICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBmaWZvLgorICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBxdWV1ZS4KIAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmZvdW5kX3Rlcm1pbmF0b3IoKQpAQCAtMTEwLDcgKzExMyw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaChkYXRhKQogCi0gICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIGZpZm8gdG8gZW5zdXJlIGl0cyB0cmFuc21pc3Npb24uCisgICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIHF1ZXVlIHRvIGVuc3VyZSBpdHMgdHJhbnNtaXNzaW9uLgogICAgVGhpcyBpcyBhbGwgeW91IG5lZWQgdG8gZG8gdG8gaGF2ZSB0aGUgY2hhbm5lbCB3cml0ZSB0aGUgZGF0YSBvdXQgdG8gdGhlCiAgICBuZXR3b3JrLCBhbHRob3VnaCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgeW91ciBvd24gcHJvZHVjZXJzIGluIG1vcmUgY29tcGxleAogICAgc2NoZW1lcyB0byBpbXBsZW1lbnQgZW5jcnlwdGlvbiBhbmQgY2h1bmtpbmcsIGZvciBleGFtcGxlLgpAQCAtMTE4LDcgKzEyMSw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaF93aXRoX3Byb2R1Y2VyKHByb2R1Y2VyKQogCi0gICBUYWtlcyBhIHByb2R1Y2VyIG9iamVjdCBhbmQgYWRkcyBpdCB0byB0aGUgcHJvZHVjZXIgZmlmbyBhc3NvY2lhdGVkIHdpdGgKKyAgIFRha2VzIGEgcHJvZHVjZXIgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoZSBwcm9kdWNlciBxdWV1ZSBhc3NvY2lhdGVkIHdpdGgKICAgIHRoZSBjaGFubmVsLiAgV2hlbiBhbGwgY3VycmVudGx5LXB1c2hlZCBwcm9kdWNlcnMgaGF2ZSBiZWVuIGV4aGF1c3RlZCB0aGUKICAgIGNoYW5uZWwgd2lsbCBjb25zdW1lIHRoaXMgcHJvZHVjZXIncyBkYXRhIGJ5IGNhbGxpbmcgaXRzIDptZXRoOmBtb3JlYAogICAgbWV0aG9kIGFuZCBzZW5kIHRoZSBkYXRhIHRvIHRoZSByZW1vdGUgZW5kcG9pbnQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKaW5kZXggYmE1MmQ5Yi4uZWQxZDc3MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdApAQCAtMTEwLDggKzExMCw5IEBACiAgICBjYWxsZWQgYWZ0ZXIgOm1ldGg6YGNhbGxfc29vbmAgcmV0dXJucywgd2hlbiBjb250cm9sIHJldHVybnMgdG8gdGhlIGV2ZW50CiAgICBsb29wLgogCi0gICBUaGlzIG9wZXJhdGVzIGFzIGEgRklGTyBxdWV1ZSwgY2FsbGJhY2tzIGFyZSBjYWxsZWQgaW4gdGhlIG9yZGVyIGluCi0gICB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuCisgICBUaGlzIG9wZXJhdGVzIGFzIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgY2FsbGJhY2tzCisgICBhcmUgY2FsbGVkIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjaworICAgd2lsbCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgogCiAgICBBbnkgcG9zaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGxiYWNrIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgY2FsbGJhY2sgd2hlbiBpdCBpcyBjYWxsZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKaW5kZXggYzgzOGJlNy4uMTFkMzYxNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdApAQCAtMTIsNiArMTIsOSBAQAogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9hc3luY29yZS5weWAKIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgUGxlYXNlIHVzZSA6bW9kOmBhc3luY2lvYCBpbnN0ZWFkLgorCiAtLS0tLS0tLS0tLS0tLQogCiAuLiBub3RlOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdCBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAppbmRleCA4NzhkOGRiLi40ZjVmMGYyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CkBAIC01MywxMyArNTMsMTQgQEAKICAgIHRoYW4gb25lIGxpbmUgbWF5IGJlIHBhc3NlZCBhdCBhIHRpbWUuCiAKIAotLi4gZnVuY3Rpb246OiBiMmFfYmFzZTY0KGRhdGEpCisuLiBmdW5jdGlvbjo6IGIyYV9iYXNlNjQoZGF0YSwgXCosIG5ld2xpbmU9VHJ1ZSkKIAogICAgQ29udmVydCBiaW5hcnkgZGF0YSB0byBhIGxpbmUgb2YgQVNDSUkgY2hhcmFjdGVycyBpbiBiYXNlNjQgY29kaW5nLiBUaGUgcmV0dXJuCi0gICB2YWx1ZSBpcyB0aGUgY29udmVydGVkIGxpbmUsIGluY2x1ZGluZyBhIG5ld2xpbmUgY2hhci4gIFRoZSBuZXdsaW5lIGlzCi0gICBhZGRlZCBiZWNhdXNlIHRoZSBvcmlnaW5hbCB1c2UgY2FzZSBmb3IgdGhpcyBmdW5jdGlvbiB3YXMgdG8gZmVlZCBpdCBhCi0gICBzZXJpZXMgb2YgNTcgYnl0ZSBpbnB1dCBsaW5lcyB0byBnZXQgb3V0cHV0IGxpbmVzIHRoYXQgY29uZm9ybSB0byB0aGUKLSAgIE1JTUUtYmFzZTY0IHN0YW5kYXJkLiAgT3RoZXJ3aXNlIHRoZSBvdXRwdXQgY29uZm9ybXMgdG8gOnJmYzpgMzU0OGAuCisgICB2YWx1ZSBpcyB0aGUgY29udmVydGVkIGxpbmUsIGluY2x1ZGluZyBhIG5ld2xpbmUgY2hhciBpZiAqbmV3bGluZSogaXMKKyAgIHRydWUuICBUaGUgb3V0cHV0IG9mIHRoaXMgZnVuY3Rpb24gY29uZm9ybXMgdG8gOnJmYzpgMzU0OGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgKm5ld2xpbmUqIHBhcmFtZXRlci4KIAogCiAuLiBmdW5jdGlvbjo6IGEyYl9xcChkYXRhLCBoZWFkZXI9RmFsc2UpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iejIucnN0IGIvRG9jL2xpYnJhcnkvYnoyLnJzdAppbmRleCA2YzQ5ZDlmLi5kNWY2MjI1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iejIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKQEAgLTYxLDYgKzYxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgYGAneCdgYCAoZXhjbHVzaXZlIGNyZWF0aW9uKSBtb2RlIHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSkKIApAQCAtMTI4LDYgKzEzMSw5IEBACiAgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKICAgICAgIGBgTm9uZWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY21hdGgucnN0IGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CmluZGV4IDYyZGRiNmIuLmQ5MzVjNDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKQEAgLTI1Myw2ICsyNTMsNDAgQEAKIAogICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCAqZSosIGFzIGEgZmxvYXQuCiAKKy4uIGRhdGE6OiB0YXUKKworICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCAqz4QqLCBhcyBhIGZsb2F0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IGluZgorCisgICBGbG9hdGluZy1wb2ludCBwb3NpdGl2ZSBpbmZpbml0eS4gRXF1aXZhbGVudCB0byBgYGZsb2F0KCdpbmYnKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IGluZmoKKworICAgQ29tcGxleCBudW1iZXIgd2l0aCB6ZXJvIHJlYWwgcGFydCBhbmQgcG9zaXRpdmUgaW5maW5pdHkgaW1hZ2luYXJ5CisgICBwYXJ0LiBFcXVpdmFsZW50IHRvIGBgY29tcGxleCgwLjAsIGZsb2F0KCdpbmYnKSlgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBuYW4KKworICAgQSBmbG9hdGluZy1wb2ludCAibm90IGEgbnVtYmVyIiAoTmFOKSB2YWx1ZS4gIEVxdWl2YWxlbnQgdG8KKyAgIGBgZmxvYXQoJ25hbicpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogbmFuagorCisgICBDb21wbGV4IG51bWJlciB3aXRoIHplcm8gcmVhbCBwYXJ0IGFuZCBOYU4gaW1hZ2luYXJ5IHBhcnQuIEVxdWl2YWxlbnQgdG8KKyAgIGBgY29tcGxleCgwLjAsIGZsb2F0KCduYW4nKSlgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gaW5kZXg6OiBtb2R1bGU6IG1hdGgKIAogTm90ZSB0aGF0IHRoZSBzZWxlY3Rpb24gb2YgZnVuY3Rpb25zIGlzIHNpbWlsYXIsIGJ1dCBub3QgaWRlbnRpY2FsLCB0byB0aGF0IGluCkBAIC0yNzYsNSArMzEwLDMgQEAKICAgIEthaGFuLCBXOiAgQnJhbmNoIGN1dHMgZm9yIGNvbXBsZXggZWxlbWVudGFyeSBmdW5jdGlvbnM7IG9yLCBNdWNoIGFkbyBhYm91dAogICAgbm90aGluZydzIHNpZ24gYml0LiAgSW4gSXNlcmxlcywgQS4sIGFuZCBQb3dlbGwsIE0uIChlZHMuKSwgVGhlIHN0YXRlIG9mIHRoZSBhcnQKICAgIGluIG51bWVyaWNhbCBhbmFseXNpcy4gQ2xhcmVuZG9uIFByZXNzICgxOTg3KSBwcDE2NS0yMTEuCi0KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZS5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlLnJzdAppbmRleCA0NDNhZjY5Li5lMmM0N2JhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2RlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlLnJzdApAQCAtMzAsMTUgKzMwLDE5IEBACiAgICBgYHN5cy5wczFgYCBhbmQgYGBzeXMucHMyYGAsIGFuZCBpbnB1dCBidWZmZXJpbmcuCiAKIAotLi4gZnVuY3Rpb246OiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUsIGV4aXRtc2c9Tm9uZSkKIAogICAgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcnVuIGEgcmVhZC1ldmFsLXByaW50IGxvb3AuICBUaGlzIGNyZWF0ZXMgYSBuZXcKICAgIGluc3RhbmNlIG9mIDpjbGFzczpgSW50ZXJhY3RpdmVDb25zb2xlYCBhbmQgc2V0cyAqcmVhZGZ1bmMqIHRvIGJlIHVzZWQgYXMKICAgIHRoZSA6bWV0aDpgSW50ZXJhY3RpdmVDb25zb2xlLnJhd19pbnB1dGAgbWV0aG9kLCBpZiBwcm92aWRlZC4gIElmICpsb2NhbCogaXMKICAgIHByb3ZpZGVkLCBpdCBpcyBwYXNzZWQgdG8gdGhlIDpjbGFzczpgSW50ZXJhY3RpdmVDb25zb2xlYCBjb25zdHJ1Y3RvciBmb3IKICAgIHVzZSBhcyB0aGUgZGVmYXVsdCBuYW1lc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBsb29wLiAgVGhlIDptZXRoOmBpbnRlcmFjdGAKLSAgIG1ldGhvZCBvZiB0aGUgaW5zdGFuY2UgaXMgdGhlbiBydW4gd2l0aCAqYmFubmVyKiBwYXNzZWQgYXMgdGhlIGJhbm5lciB0bwotICAgdXNlLCBpZiBwcm92aWRlZC4gIFRoZSBjb25zb2xlIG9iamVjdCBpcyBkaXNjYXJkZWQgYWZ0ZXIgdXNlLgorICAgbWV0aG9kIG9mIHRoZSBpbnN0YW5jZSBpcyB0aGVuIHJ1biB3aXRoICpiYW5uZXIqIGFuZCAqZXhpdG1zZyogcGFzc2VkIGFzIHRoZQorICAgYmFubmVyIGFuZCBleGl0IG1lc3NhZ2UgdG8gdXNlLCBpZiBwcm92aWRlZC4gIFRoZSBjb25zb2xlIG9iamVjdCBpcyBkaXNjYXJkZWQKKyAgIGFmdGVyIHVzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpleGl0bXNnKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBjb21waWxlX2NvbW1hbmQoc291cmNlLCBmaWxlbmFtZT0iPGlucHV0PiIsIHN5bWJvbD0ic2luZ2xlIikKQEAgLTEzNiw3ICsxNDAsNyBAQAogaW50ZXJwcmV0ZXIgb2JqZWN0cyBhcyB3ZWxsIGFzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25zLgogCiAKLS4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdChiYW5uZXI9Tm9uZSkKKy4uIG1ldGhvZDo6IEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdChiYW5uZXI9Tm9uZSwgZXhpdG1zZz1Ob25lKQogCiAgICBDbG9zZWx5IGVtdWxhdGUgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBjb25zb2xlLiBUaGUgb3B0aW9uYWwgKmJhbm5lciogYXJndW1lbnQKICAgIHNwZWNpZnkgdGhlIGJhbm5lciB0byBwcmludCBiZWZvcmUgdGhlIGZpcnN0IGludGVyYWN0aW9uOyBieSBkZWZhdWx0IGl0IHByaW50cyBhCkBAIC0xNDQsOSArMTQ4LDE2IEBACiAgICBieSB0aGUgY2xhc3MgbmFtZSBvZiB0aGUgY29uc29sZSBvYmplY3QgaW4gcGFyZW50aGVzZXMgKHNvIGFzIG5vdCB0byBjb25mdXNlCiAgICB0aGlzIHdpdGggdGhlIHJlYWwgaW50ZXJwcmV0ZXIgLS0gc2luY2UgaXQncyBzbyBjbG9zZSEpLgogCisgICBUaGUgb3B0aW9uYWwgKmV4aXRtc2cqIGFyZ3VtZW50IHNwZWNpZmllcyBhbiBleGl0IG1lc3NhZ2UgcHJpbnRlZCB3aGVuIGV4aXRpbmcuCisgICBQYXNzIHRoZSBlbXB0eSBzdHJpbmcgdG8gc3VwcHJlc3MgdGhlIGV4aXQgbWVzc2FnZS4gSWYgKmV4aXRtc2cqIGlzIG5vdCBnaXZlbiBvcgorICAgYGBOb25lYGAsIGEgZGVmYXVsdCBtZXNzYWdlIGlzIHByaW50ZWQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUbyBzdXBwcmVzcyBwcmludGluZyBhbnkgYmFubmVyLCBwYXNzIGFuIGVtcHR5IHN0cmluZy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByaW50IGFuIGV4aXQgbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKIAogLi4gbWV0aG9kOjogSW50ZXJhY3RpdmVDb25zb2xlLnB1c2gobGluZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKaW5kZXggMDNmMDIyOC4uYWExZDEyMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CkBAIC0xMjYzLDEwICsxMjYzLDE2IEBACiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBPbmx5IGBgZXJyb3JzPSdzdHJpY3QnYGAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IGlzIHN1cHBvcnRlZC4gICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IG1iY3MgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCBtYmNzICAgICAgICAgICAgICAgfCBhbnNpLCAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IEFOU0kgY29kZXBhZ2UgKENQX0FDUCkgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IG9lbSAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgT0VNIGNvZGVwYWdlIChDUF9PRU1DUCkgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHBhbG1vcyAgICAgICAgICAgICB8ICAgICAgICAgfCBFbmNvZGluZyBvZiBQYWxtT1MgMy41ICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBwdW55Y29kZSAgICAgICAgICAgfCAgICAgICAgIHwgSW1wbGVtZW50cyA6cmZjOmAzNDkyYC4gICB8CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAppbmRleCBhZWI2YTczLi5lNGI3NWEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTQxLDEzICs0MSwxNiBAQAogOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKIDpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCiA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBSZXZlcnNpYmxlYCAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fcmV2ZXJzZWRfX2BgCiA6Y2xhc3M6YEdlbmVyYXRvcmAgICAgICAgICA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYCwgYGBfX2l0ZXJfX2BgLCBgYF9fbmV4dF9fYGAKIDpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIDpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCis6Y2xhc3M6YENvbGxlY3Rpb25gICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKIAotOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFJldmVyc2libGVgLCAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCiAKIDpjbGFzczpgTXV0YWJsZVNlcXVlbmNlYCAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIGBgYXBwZW5kYGAsIGBgcmV2ZXJzZWBgLCBgYGV4dGVuZGBgLCBgYHBvcGBgLApAQCAtNTgsOSArNjEsOSBAQAogOmNsYXNzOmBCeXRlU3RyaW5nYCAgICAgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAogCi06Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgOmNsYXNzOmBDb2xsZWN0aW9uYCAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBgYF9fbGVfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZXFfX2BgLCBgYF9fbmVfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYF9fZ3RfX2BgLCBgYF9fZ2VfX2BgLCBgYF9fYW5kX19gYCwgYGBfX29yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBfX3N1Yl9fYGAsIGBgX194b3JfX2BgLCBhbmQgYGBpc2Rpc2pvaW50YGAKIAogOmNsYXNzOmBNdXRhYmxlU2V0YCAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXRgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgY2xlYXJgYCwgYGBwb3BgYCwgYGByZW1vdmVgYCwgYGBfX2lvcl9fYGAsCkBAIC02OCw5ICs3MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWRkYGAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZGlzY2FyZGBgCiAKLTpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKKzpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIAogOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLApAQCAtMTA1LDEyICsxMDgsMjUgQEAKICAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgogICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KIAorLi4gY2xhc3M6OiBDb2xsZWN0aW9uCisKKyAgIEFCQyBmb3Igc2l6ZWQgaXRlcmFibGUgY29udGFpbmVyIGNsYXNzZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IEl0ZXJhdG9yCiAKICAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmB+aXRlcmF0b3IuX19pdGVyX19gIGFuZAogICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kcy4gIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mCiAgICA6dGVybTpgaXRlcmF0b3JgLgogCisuLiBjbGFzczo6IFJldmVyc2libGUKKworICAgQUJDIGZvciBpdGVyYWJsZSBjbGFzc2VzIHRoYXQgYWxzbyBwcm92aWRlIHRoZSA6bWV0aDpgX19yZXZlcnNlZF9fYAorICAgbWV0aG9kLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBHZW5lcmF0b3IKIAogICAgQUJDIGZvciBnZW5lcmF0b3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudCB0aGUgcHJvdG9jb2wgZGVmaW5lZCBpbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CmluZGV4IGQwYWE2MmUuLjlmM2Y1ZGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKQEAgLTc2Myw3ICs3NjMsNyBAQAogc2VsZi1kb2N1bWVudGluZyBjb2RlLiAgVGhleSBjYW4gYmUgdXNlZCB3aGVyZXZlciByZWd1bGFyIHR1cGxlcyBhcmUgdXNlZCwgYW5kCiB0aGV5IGFkZCB0aGUgYWJpbGl0eSB0byBhY2Nlc3MgZmllbGRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBwb3NpdGlvbiBpbmRleC4KIAotLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKQorLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgKiwgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlLCBtb2R1bGU9Tm9uZSkKIAogICAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bwogICAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKQEAgLTc5MCwxMiArNzkwLDIxIEBACiAgICAgYnVpbHQuICBUaGlzIG9wdGlvbiBpcyBvdXRkYXRlZDsgaW5zdGVhZCwgaXQgaXMgc2ltcGxlciB0byBwcmludCB0aGUKICAgICA6YXR0cjpgX3NvdXJjZWAgYXR0cmlidXRlLgogCisgICAgSWYgKm1vZHVsZSogaXMgZGVmaW5lZCwgdGhlIGBgX19tb2R1bGVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbmFtZWQgdHVwbGUgaXMKKyAgICBzZXQgdG8gdGhhdCB2YWx1ZS4KKwogICAgIE5hbWVkIHR1cGxlIGluc3RhbmNlcyBkbyBub3QgaGF2ZSBwZXItaW5zdGFuY2UgZGljdGlvbmFyaWVzLCBzbyB0aGV5IGFyZQogICAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCiAKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KKyAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBiZWNhbWUKKyAgICAgICA6cmVmOmBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgIEFkZGVkIHRoZSAqbW9kdWxlKiBwYXJhbWV0ZXIuCiAKIC4uIGRvY3Rlc3Q6OgogICAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTg0Niw3ICs4NTUsOSBAQAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX2FzZGljdCgpCiAKICAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBPcmRlcmVkRGljdGAgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCi0gICAgdmFsdWVzOjoKKyAgICB2YWx1ZXM6CisKKyAgICAuLiBkb2N0ZXN0OjoKIAogICAgICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCiAgICAgICAgID4+PiBwLl9hc2RpY3QoKQpAQCAtOTA4LDcgKzkxOSw5IEBACiBmdW5jdGlvbmFsaXR5IHdpdGggYSBzdWJjbGFzcy4gIEhlcmUgaXMgaG93IHRvIGFkZCBhIGNhbGN1bGF0ZWQgZmllbGQgYW5kCiBhIGZpeGVkLXdpZHRoIHByaW50IGZvcm1hdDoKIAotICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6CisuLiBkb2N0ZXN0OjoKKworICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pKToKICAgICAuLi4gICAgIF9fc2xvdHNfXyA9ICgpCiAgICAgLi4uICAgICBAcHJvcGVydHkKICAgICAuLi4gICAgIGRlZiBoeXBvdChzZWxmKToKQEAgLTk1OSw2ICs5NzIsMTEgQEAKICAgICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKICAgICAgIHN1YmNsYXNzZWQuCiAKKyAgICAqIFNlZSA6bWV0aDpgdHlwZXMuU2ltcGxlTmFtZXNwYWNlYCBmb3IgYSBtdXRhYmxlIG5hbWVzcGFjZSBiYXNlZCBvbiBhbgorICAgICAgdW5kZXJseWluZyBkaWN0aW9uYXJ5IGluc3RlYWQgb2YgYSB0dXBsZS4KKworICAgICogU2VlIDptZXRoOmB0eXBpbmcuTmFtZWRUdXBsZWAgZm9yIGEgd2F5IHRvIGFkZCB0eXBlIGhpbnRzIGZvciBuYW1lZCB0dXBsZXMuCisKIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgb2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTgwLDggKzk5OCw5IEBACiAgICAgLi4gbWV0aG9kOjogcG9waXRlbShsYXN0PVRydWUpCiAKICAgICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQotICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQotICAgICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgorICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4KKyAgICAgICAgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCisgICAgICAgIG9yIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgb3JkZXIgaWYgZmFsc2UuCiAKICAgICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAppbmRleCA1MTFjNTgxLi5jMWFmMDJiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdApAQCAtMTAyLDcgKzEwMiw4IEBACiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLCB3b3JrZXJzPTEpCiAKICAgIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5ICpkaXIqLCBjb21waWxpbmcgYWxsIDpmaWxlOmAucHlgCi0gICBmaWxlcyBhbG9uZyB0aGUgd2F5LgorICAgZmlsZXMgYWxvbmcgdGhlIHdheS4gUmV0dXJuIGEgdHJ1ZSB2YWx1ZSBpZiBhbGwgdGhlIGZpbGVzIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwKKyAgIGFuZCBhIGZhbHNlIHZhbHVlIG90aGVyd2lzZS4KIAogICAgVGhlICptYXhsZXZlbHMqIHBhcmFtZXRlciBpcyB1c2VkIHRvIGxpbWl0IHRoZSBkZXB0aCBvZiB0aGUgcmVjdXJzaW9uOyBpdAogICAgZGVmYXVsdHMgdG8gYGAxMGBgLgpAQCAtMTUyLDkgKzE1MywxMyBAQAogICAgICAgVGhlICpsZWdhY3kqIHBhcmFtZXRlciBvbmx5IHdyaXRlcyBvdXQgYGAucHljYGAgZmlsZXMsIG5vdCBgYC5weW9gYCBmaWxlcwogICAgICAgbm8gbWF0dGVyIHdoYXQgdGhlIHZhbHVlIG9mICpvcHRpbWl6ZSogaXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAotICAgQ29tcGlsZSB0aGUgZmlsZSB3aXRoIHBhdGggKmZ1bGxuYW1lKi4KKyAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouIFJldHVybiBhIHRydWUgdmFsdWUgaWYgdGhlIGZpbGUKKyAgIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgogCiAgICBJZiAqZGRpciogaXMgZ2l2ZW4sIGl0IGlzIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUgZmlsZSBiZWluZyBjb21waWxlZAogICAgZm9yIHVzZSBpbiBjb21waWxhdGlvbiB0aW1lIHRyYWNlYmFja3MsIGFuZCBpcyBhbHNvIGNvbXBpbGVkIGluIHRvIHRoZQpAQCAtMTkwLDggKzE5NSwxMCBAQAogCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1UcnVlLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKLSAgIEJ5dGUtY29tcGlsZSBhbGwgdGhlIDpmaWxlOmAucHlgIGZpbGVzIGZvdW5kIGFsb25nIGBgc3lzLnBhdGhgYC4gSWYKLSAgICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCisgICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIFJldHVybiBhCisgICB0cnVlIHZhbHVlIGlmIGFsbCB0aGUgZmlsZXMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5LCBhbmQgYSBmYWxzZSB2YWx1ZSBvdGhlcndpc2UuCisKKyAgIElmICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCiAgICBpbiB0aGUgc2VhcmNoLiAgQWxsIG90aGVyIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YGNvbXBpbGVfZGlyYAogICAgZnVuY3Rpb24uICBOb3RlIHRoYXQgdW5saWtlIHRoZSBvdGhlciBjb21waWxlIGZ1bmN0aW9ucywgYGBtYXhsZXZlbHNgYAogICAgZGVmYXVsdHMgdG8gYGAwYGAuCkBAIC0yMTcsNiArMjI0LDkgQEAKICAgIGltcG9ydCByZQogICAgY29tcGlsZWFsbC5jb21waWxlX2RpcignTGliLycsIHJ4PXJlLmNvbXBpbGUocidbL1xcXVsuXXN2bicpLCBmb3JjZT1UcnVlKQogCisgICAjIHBhdGhsaWIuUGF0aCBvYmplY3RzIGNhbiBhbHNvIGJlIHVzZWQuCisgICBpbXBvcnQgcGF0aGxpYgorICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihwYXRobGliLlBhdGgoJ0xpYi8nKSwgZm9yY2U9VHJ1ZSkKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CmluZGV4IGFlMDNmNGIuLmQ4NTU3NmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdApAQCAtMTI0LDcgKzEyNCw3IEBACiAgICBleGVjdXRvci5zdWJtaXQod2FpdF9vbl9mdXR1cmUpCiAKIAotLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9Tm9uZSkKKy4uIGNsYXNzOjogVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJykKIAogICAgQW4gOmNsYXNzOmBFeGVjdXRvcmAgc3ViY2xhc3MgdGhhdCB1c2VzIGEgcG9vbCBvZiBhdCBtb3N0ICptYXhfd29ya2VycyoKICAgIHRocmVhZHMgdG8gZXhlY3V0ZSBjYWxscyBhc3luY2hyb25vdXNseS4KQEAgLTEzNyw2ICsxMzcsMTAgQEAKICAgICAgIHNob3VsZCBiZSBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMKICAgICAgIGZvciA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSAqdGhyZWFkX25hbWVfcHJlZml4KiBhcmd1bWVudCB3YXMgYWRkZWQgdG8gYWxsb3cgdXNlcnMgdG8KKyAgICAgIGNvbnRyb2wgdGhlIHRocmVhZGluZy5UaHJlYWQgbmFtZXMgZm9yIHdvcmtlciB0aHJlYWRzIGNyZWF0ZWQgYnkKKyAgICAgIHRoZSBwb29sIGZvciBlYXNpZXIgZGVidWdnaW5nLgogCiAuLiBfdGhyZWFkcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CmluZGV4IGQ1YTBmMDkuLmYwNzQyY2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdApAQCAtMzMsMTYgKzMzLDIyIEBACiAgICAoZS5nLiA6bWV0aDpgX19pbXVsX19gLCA6bWV0aDpgX19pYW5kX19gLCBldGMuKSBmb3IgdGhlIHNhbWUgcHVycG9zZS4KICAgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLgogCi0uLiBub3RlOjoKKyAgIC4uIG5vdGU6OgogCi0gICBXaGVuIGBgTm90SW1wbGVtZW50ZWRgYCBpcyByZXR1cm5lZCwgdGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlCi0gICByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcKLSAgIG9uIHRoZSBvcGVyYXRvci4gIElmIGFsbCBhdHRlbXB0ZWQgb3BlcmF0aW9ucyByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLCB0aGUKLSAgIGludGVycHJldGVyIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgICAgV2hlbiBhIGJpbmFyeSAob3IgaW4tcGxhY2UpIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYCB0aGUKKyAgICAgIGludGVycHJldGVyIHdpbGwgdHJ5IHRoZSByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlIChvciBzb21lCisgICAgICBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRvcikuICBJZiBhbGwgYXR0ZW1wdHMgcmV0dXJuCisgICAgICBgYE5vdEltcGxlbWVudGVkYGAsIHRoZSBpbnRlcnByZXRlciB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKyAgICAgIEluY29ycmVjdGx5IHJldHVybmluZyBgYE5vdEltcGxlbWVudGVkYGAgd2lsbCByZXN1bHQgaW4gYSBtaXNsZWFkaW5nCisgICAgICBlcnJvciBtZXNzYWdlIG9yIHRoZSBgYE5vdEltcGxlbWVudGVkYGAgdmFsdWUgYmVpbmcgcmV0dXJuZWQgdG8gUHl0aG9uIGNvZGUuCiAKLSAgIFNlZQotICAgOnJlZjpgaW1wbGVtZW50aW5nLXRoZS1hcml0aG1ldGljLW9wZXJhdGlvbnNgCi0gICBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgU2VlIDpyZWY6YGltcGxlbWVudGluZy10aGUtYXJpdGhtZXRpYy1vcGVyYXRpb25zYCBmb3IgZXhhbXBsZXMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBgYE5vdEltcGxlbnRlZEVycm9yYGAgYW5kIGBgTm90SW1wbGVtZW50ZWRgYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwKKyAgICAgIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBzaW1pbGFyIG5hbWVzIGFuZCBwdXJwb3Nlcy4KKyAgICAgIFNlZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBmb3IgZGV0YWlscyBvbiB3aGVuIHRvIHVzZSBpdC4KIAogCiAuLiBkYXRhOjogRWxsaXBzaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0IGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKaW5kZXggY2Y4NWZjZC4uZGQzNGM5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKQEAgLTE4LDYgKzE4LDE4IEBACiAKIEZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBwcm92aWRlZDoKIAorLi4gY2xhc3M6OiBBYnN0cmFjdENvbnRleHRNYW5hZ2VyCisKKyAgIEFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudAorICAgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGFuZCA6bWV0aDpgb2JqZWN0Ll9fZXhpdF9fYC4gQSBkZWZhdWx0CisgICBpbXBsZW1lbnRhdGlvbiBmb3IgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGlzIHByb3ZpZGVkIHdoaWNoIHJldHVybnMKKyAgIGBgc2VsZmBgIHdoaWxlIDptZXRoOmBvYmplY3QuX19leGl0X19gIGlzIGFuIGFic3RyYWN0IG1ldGhvZCB3aGljaCBieSBkZWZhdWx0CisgICByZXR1cm5zIGBgTm9uZWBgLiBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisKIC4uIGRlY29yYXRvcjo6IGNvbnRleHRtYW5hZ2VyCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgYSA6dGVybTpgZGVjb3JhdG9yYCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhIGZhY3RvcnkKQEAgLTQ0Nyw5ICs0NTksOSBAQAogYWNxdWlzaXRpb24gYW5kIHJlbGVhc2UgZnVuY3Rpb25zLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIHZhbGlkYXRpb24gZnVuY3Rpb24sCiBhbmQgbWFwcyB0aGVtIHRvIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2w6OgogCi0gICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyLCBFeGl0U3RhY2sKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIsIEV4aXRTdGFjawogCi0gICBjbGFzcyBSZXNvdXJjZU1hbmFnZXI6CisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWNxdWlyZV9yZXNvdXJjZSwgcmVsZWFzZV9yZXNvdXJjZSwgY2hlY2tfcmVzb3VyY2Vfb2s9Tm9uZSk6CiAgICAgICAgICAgIHNlbGYuYWNxdWlyZV9yZXNvdXJjZSA9IGFjcXVpcmVfcmVzb3VyY2UKQEAgLTU3OCwxMCArNTkwLDEwIEBACiAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6ICVzJywgc2VsZi5uYW1lKQogCiAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjLCBleGNfdGIpOgotICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KHNlbGYubmFtZSkpCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6ICVzJywgc2VsZi5uYW1lKQogCiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcyBib3RoIGEgY29udGV4dCBtYW5hZ2VyOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHQucnN0CmluZGV4IGEyMWMxZTcuLmRiZDQyNzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NyeXB0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKQEAgLTY4LDcgKzY4LDcgQEAKIAogICAgQSBsaXN0IG9mIGF2YWlsYWJsZSBwYXNzd29yZCBoYXNoaW5nIGFsZ29yaXRobXMsIGFzCiAgICBgYGNyeXB0Lk1FVEhPRF8qYGAgb2JqZWN0cy4gIFRoaXMgbGlzdCBpcyBzb3J0ZWQgZnJvbSBzdHJvbmdlc3QgdG8KLSAgIHdlYWtlc3QsIGFuZCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3QgYGBjcnlwdC5NRVRIT0RfQ1JZUFRgYC4KKyAgIHdlYWtlc3QuCiAKIAogTW9kdWxlIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdCBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKaW5kZXggMWVkZGZkYy4uOGViNGI4MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CkBAIC0xNSw0ICsxNSw2IEBACiAuLiB0b2N0cmVlOjoKIAogICAgaGFzaGxpYi5yc3QKKyAgIGhhc2hsaWItYmxha2UyLnJzdAogICAgaG1hYy5yc3QKKyAgIHNlY3JldHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jc3YucnN0IGIvRG9jL2xpYnJhcnkvY3N2LnJzdAppbmRleCA3ZmI0ZmM4Li5mOTE2NTcyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jc3YucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKQEAgLTE0OSwxOCArMTQ5LDI1IEBACiAuLiBjbGFzczo6IERpY3RSZWFkZXIoY3N2ZmlsZSwgZmllbGRuYW1lcz1Ob25lLCByZXN0a2V5PU5vbmUsIHJlc3R2YWw9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3Q9J2V4Y2VsJywgKmFyZ3MsICoqa3dkcykKIAotICAgQ3JlYXRlIGFuIG9iamVjdCB3aGljaCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCi0gICBpbmZvcm1hdGlvbiByZWFkIGludG8gYSBkaWN0IHdob3NlIGtleXMgYXJlIGdpdmVuIGJ5IHRoZSBvcHRpb25hbAotICAgKmZpZWxkbmFtZXMqIHBhcmFtZXRlci4gIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOm1vZDpgc2VxdWVuY2UKLSAgIDxjb2xsZWN0aW9ucy5hYmM+YCB3aG9zZSBlbGVtZW50cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZHMgb2YgdGhlCi0gICBpbnB1dCBkYXRhIGluIG9yZGVyLiBUaGVzZSBlbGVtZW50cyBiZWNvbWUgdGhlIGtleXMgb2YgdGhlIHJlc3VsdGluZwotICAgZGljdGlvbmFyeS4gIElmIHRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIG9taXR0ZWQsIHRoZSB2YWx1ZXMgaW4gdGhlCi0gICBmaXJzdCByb3cgb2YgdGhlICpjc3ZmaWxlKiB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpZWxkbmFtZXMuICBJZiB0aGUgcm93IHJlYWQKLSAgIGhhcyBtb3JlIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGRhdGEgaXMgYWRkZWQgYXMKLSAgIGEgc2VxdWVuY2Uga2V5ZWQgYnkgdGhlIHZhbHVlIG9mICpyZXN0a2V5Ki4gIElmIHRoZSByb3cgcmVhZCBoYXMgZmV3ZXIKLSAgIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGtleXMgdGFrZSB0aGUgdmFsdWUgb2YKLSAgIHRoZSBvcHRpb25hbCAqcmVzdHZhbCogcGFyYW1ldGVyLiAgQW55IG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCi0gICBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKyAgIENyZWF0ZSBhbiBvYmplY3QgdGhhdCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCisgICBpbmZvcm1hdGlvbiBpbiBlYWNoIHJvdyB0byBhbiA6bW9kOmBPcmRlcmVkRGljdCA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3Q+YAorICAgd2hvc2Uga2V5cyBhcmUgZ2l2ZW4gYnkgdGhlIG9wdGlvbmFsICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIuCisKKyAgIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOnRlcm06YHNlcXVlbmNlYC4gIElmICpmaWVsZG5hbWVzKiBpcworICAgb21pdHRlZCwgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgcm93IG9mIHRoZSAqY3N2ZmlsZSogd2lsbCBiZSB1c2VkIGFzIHRoZQorICAgZmllbGRuYW1lcy4gIFJlZ2FyZGxlc3Mgb2YgaG93IHRoZSBmaWVsZG5hbWVzIGFyZSBkZXRlcm1pbmVkLCB0aGUgb3JkZXJlZAorICAgZGljdGlvbmFyeSBwcmVzZXJ2ZXMgdGhlaXIgb3JpZ2luYWwgb3JkZXJpbmcuCisKKyAgIElmIGEgcm93IGhhcyBtb3JlIGZpZWxkcyB0aGFuIGZpZWxkbmFtZXMsIHRoZSByZW1haW5pbmcgZGF0YSBpcyBwdXQgaW4gYQorICAgbGlzdCBhbmQgc3RvcmVkIHdpdGggdGhlIGZpZWxkbmFtZSBzcGVjaWZpZWQgYnkgKnJlc3RrZXkqICh3aGljaCBkZWZhdWx0cworICAgdG8gYGBOb25lYGApLiAgSWYgYSBub24tYmxhbmsgcm93IGhhcyBmZXdlciBmaWVsZHMgdGhhbiBmaWVsZG5hbWVzLCB0aGUKKyAgIG1pc3NpbmcgdmFsdWVzIGFyZSBmaWxsZWQtaW4gd2l0aCBgYE5vbmVgYC4KKworICAgQWxsIG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAgIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJldHVybmVkIHJvd3MgYXJlIG5vdyBvZiB0eXBlIDpjbGFzczpgT3JkZXJlZERpY3RgLgogCiAgICBBIHNob3J0IHVzYWdlIGV4YW1wbGU6OgogCkBAIC0xNzAsOSArMTc3LDExIEBACiAgICAgICAgLi4uICAgICBmb3Igcm93IGluIHJlYWRlcjoKICAgICAgICAuLi4gICAgICAgICBwcmludChyb3dbJ2ZpcnN0X25hbWUnXSwgcm93WydsYXN0X25hbWUnXSkKICAgICAgICAuLi4KLSAgICAgICBCYWtlZCBCZWFucwotICAgICAgIExvdmVseSBTcGFtCi0gICAgICAgV29uZGVyZnVsIFNwYW0KKyAgICAgICBFcmljIElkbGUKKyAgICAgICBKb2huIENsZWVzZQorCisgICAgICAgPj4+IHByaW50KHJvdykKKyAgICAgICBPcmRlcmVkRGljdChbKCdmaXJzdF9uYW1lJywgJ0pvaG4nKSwgKCdsYXN0X25hbWUnLCAnQ2xlZXNlJyldKQogCiAKIC4uIGNsYXNzOjogRGljdFdyaXRlcihjc3ZmaWxlLCBmaWVsZG5hbWVzLCByZXN0dmFsPScnLCBleHRyYXNhY3Rpb249J3JhaXNlJywgXApAQCAtMTg2LDEwICsxOTUsMTIgQEAKICAgIHdyaXR0ZW4gaWYgdGhlIGRpY3Rpb25hcnkgaXMgbWlzc2luZyBhIGtleSBpbiAqZmllbGRuYW1lcyouICBJZiB0aGUKICAgIGRpY3Rpb25hcnkgcGFzc2VkIHRvIHRoZSA6bWV0aDpgd3JpdGVyb3dgIG1ldGhvZCBjb250YWlucyBhIGtleSBub3QgZm91bmQgaW4KICAgICpmaWVsZG5hbWVzKiwgdGhlIG9wdGlvbmFsICpleHRyYXNhY3Rpb24qIHBhcmFtZXRlciBpbmRpY2F0ZXMgd2hhdCBhY3Rpb24gdG8KLSAgIHRha2UuICBJZiBpdCBpcyBzZXQgdG8gYGAncmFpc2UnYGAgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBJZiBpdCBpcwotICAgc2V0IHRvIGBgJ2lnbm9yZSdgYCwgZXh0cmEgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBpZ25vcmVkLiAgQW55IG90aGVyCi0gICBvcHRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgd3JpdGVyYAotICAgaW5zdGFuY2UuCisgICB0YWtlLgorICAgSWYgaXQgaXMgc2V0IHRvIGBgJ3JhaXNlJ2BgLCB0aGUgZGVmYXVsdCB2YWx1ZSwgYSA6ZXhjOmBWYWx1ZUVycm9yYAorICAgaXMgcmFpc2VkLgorICAgSWYgaXQgaXMgc2V0IHRvIGBgJ2lnbm9yZSdgYCwgZXh0cmEgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5IGFyZSBpZ25vcmVkLgorICAgQW55IG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAgIDpjbGFzczpgd3JpdGVyYCBpbnN0YW5jZS4KIAogICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgOmNsYXNzOmBEaWN0UmVhZGVyYCBjbGFzcywgdGhlICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIKICAgIG9mIHRoZSA6Y2xhc3M6YERpY3RXcml0ZXJgIGlzIG5vdCBvcHRpb25hbC4gIFNpbmNlIFB5dGhvbidzIDpjbGFzczpgZGljdGAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CmluZGV4IGIyNWZiYmIuLjM4NDA5MzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdApAQCAtMTIzOSw5ICsxMjM5LDEwIEBACiBjb21waWxpbmcvbGlua2luZyBhIHByb2dyYW0sIGFuZCB3aGVuIHRoZSBwcm9ncmFtIGlzIHJ1bi4KIAogVGhlIHB1cnBvc2Ugb2YgdGhlIDpmdW5jOmBmaW5kX2xpYnJhcnlgIGZ1bmN0aW9uIGlzIHRvIGxvY2F0ZSBhIGxpYnJhcnkgaW4gYSB3YXkKLXNpbWlsYXIgdG8gd2hhdCB0aGUgY29tcGlsZXIgZG9lcyAob24gcGxhdGZvcm1zIHdpdGggc2V2ZXJhbCB2ZXJzaW9ucyBvZiBhCi1zaGFyZWQgbGlicmFyeSB0aGUgbW9zdCByZWNlbnQgc2hvdWxkIGJlIGxvYWRlZCksIHdoaWxlIHRoZSBjdHlwZXMgbGlicmFyeQotbG9hZGVycyBhY3QgbGlrZSB3aGVuIGEgcHJvZ3JhbSBpcyBydW4sIGFuZCBjYWxsIHRoZSBydW50aW1lIGxvYWRlciBkaXJlY3RseS4KK3NpbWlsYXIgdG8gd2hhdCB0aGUgY29tcGlsZXIgb3IgcnVudGltZSBsb2FkZXIgZG9lcyAob24gcGxhdGZvcm1zIHdpdGggc2V2ZXJhbAordmVyc2lvbnMgb2YgYSBzaGFyZWQgbGlicmFyeSB0aGUgbW9zdCByZWNlbnQgc2hvdWxkIGJlIGxvYWRlZCksIHdoaWxlIHRoZSBjdHlwZXMKK2xpYnJhcnkgbG9hZGVycyBhY3QgbGlrZSB3aGVuIGEgcHJvZ3JhbSBpcyBydW4sIGFuZCBjYWxsIHRoZSBydW50aW1lIGxvYWRlcgorZGlyZWN0bHkuCiAKIFRoZSA6bW9kOmBjdHlwZXMudXRpbGAgbW9kdWxlIHByb3ZpZGVzIGEgZnVuY3Rpb24gd2hpY2ggY2FuIGhlbHAgdG8gZGV0ZXJtaW5lCiB0aGUgbGlicmFyeSB0byBsb2FkLgpAQCAtMTI1OSw4ICsxMjYwLDE0IEBACiBUaGUgZXhhY3QgZnVuY3Rpb25hbGl0eSBpcyBzeXN0ZW0gZGVwZW5kZW50LgogCiBPbiBMaW51eCwgOmZ1bmM6YGZpbmRfbGlicmFyeWAgdHJpZXMgdG8gcnVuIGV4dGVybmFsIHByb2dyYW1zCi0oYGAvc2Jpbi9sZGNvbmZpZ2BgLCBgYGdjY2BgLCBhbmQgYGBvYmpkdW1wYGApIHRvIGZpbmQgdGhlIGxpYnJhcnkgZmlsZS4gIEl0Ci1yZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgbGlicmFyeSBmaWxlLiAgSGVyZSBhcmUgc29tZSBleGFtcGxlczo6CisoYGAvc2Jpbi9sZGNvbmZpZ2BgLCBgYGdjY2BgLCBgYG9iamR1bXBgYCBhbmQgYGBsZGBgKSB0byBmaW5kIHRoZSBsaWJyYXJ5IGZpbGUuCitJdCByZXR1cm5zIHRoZSBmaWxlbmFtZSBvZiB0aGUgbGlicmFyeSBmaWxlLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgT24gTGludXgsIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBMRF9MSUJSQVJZX1BBVEhgYCBpcyB1c2VkCisgICB3aGVuIHNlYXJjaGluZyBmb3IgbGlicmFyaWVzLCBpZiBhIGxpYnJhcnkgY2Fubm90IGJlIGZvdW5kIGJ5IGFueSBvdGhlciBtZWFucy4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlczo6CiAKICAgID4+PiBmcm9tIGN0eXBlcy51dGlsIGltcG9ydCBmaW5kX2xpYnJhcnkKICAgID4+PiBmaW5kX2xpYnJhcnkoIm0iKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDkyNTRhZTguLmVjYWFkMDYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTUyMiw3ICs1MjIsNyBAQAogCiBJbnN0YW5jZSBtZXRob2RzOgogCi0uLiBtZXRob2Q6OiBkYXRlLnJlcGxhY2UoeWVhciwgbW9udGgsIGRheSkKKy4uIG1ldGhvZDo6IGRhdGUucmVwbGFjZSh5ZWFyPXNlbGYueWVhciwgbW9udGg9c2VsZi5tb250aCwgZGF5PXNlbGYuZGF5KQogCiAgICBSZXR1cm4gYSBkYXRlIHdpdGggdGhlIHNhbWUgdmFsdWUsIGV4Y2VwdCBmb3IgdGhvc2UgcGFyYW1ldGVycyBnaXZlbiBuZXcKICAgIHZhbHVlcyBieSB3aGljaGV2ZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZC4gIEZvciBleGFtcGxlLCBpZiBgYGQgPT0KQEAgLTYxMCw3ICs2MTAsOCBAQAogLi4gbWV0aG9kOjogZGF0ZS5fX2Zvcm1hdF9fKGZvcm1hdCkKIAogICAgU2FtZSBhcyA6bWV0aDpgLmRhdGUuc3RyZnRpbWVgLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQKLSAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRlYCBvYmplY3Qgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuIEZvciBhCisgICBzdHJpbmcgZm9yIGEgOmNsYXNzOmAuZGF0ZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuIEZvciBhCiAgICBjb21wbGV0ZSBsaXN0IG9mIGZvcm1hdHRpbmcgZGlyZWN0aXZlcywgc2VlCiAgICA6cmVmOmBzdHJmdGltZS1zdHJwdGltZS1iZWhhdmlvcmAuCiAKQEAgLTY4MiwyMiArNjgzLDI2IEBACiAKIENvbnN0cnVjdG9yOgogCi0uLiBjbGFzczo6IGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSkKKy4uIGNsYXNzOjogZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApCiAKICAgIFRoZSB5ZWFyLCBtb250aCBhbmQgZGF5IGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQuICAqdHppbmZvKiBtYXkgYmUgYGBOb25lYGAsIG9yIGFuCiAgICBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcy4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRlZ2VycywKICAgIGluIHRoZSBmb2xsb3dpbmcgcmFuZ2VzOgogCi0gICAqIGBgTUlOWUVBUiA8PSB5ZWFyIDw9IE1BWFlFQVJgYAotICAgKiBgYDEgPD0gbW9udGggPD0gMTJgYAotICAgKiBgYDEgPD0gZGF5IDw9IG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbiBtb250aCBhbmQgeWVhcmBgCi0gICAqIGBgMCA8PSBob3VyIDwgMjRgYAotICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYAotICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYAotICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAKKyAgICogYGBNSU5ZRUFSIDw9IHllYXIgPD0gTUFYWUVBUmBgLAorICAgKiBgYDEgPD0gbW9udGggPD0gMTJgYCwKKyAgICogYGAxIDw9IGRheSA8PSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGggYW5kIHllYXJgYCwKKyAgICogYGAwIDw9IGhvdXIgPCAyNGBgLAorICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYCwKKyAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAsCisgICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYCwKKyAgICogYGBmb2xkIGluIFswLCAxXWBgLgogCiAgICBJZiBhbiBhcmd1bWVudCBvdXRzaWRlIHRob3NlIHJhbmdlcyBpcyBnaXZlbiwgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSBgYGZvbGRgYCBhcmd1bWVudC4KKwogT3RoZXIgY29uc3RydWN0b3JzLCBhbGwgY2xhc3MgbWV0aG9kczoKIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS50b2RheSgpCkBAIC03NTcsNiArNzYyLDggQEAKICAgICAgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgCiAgICAgICBmYWlsdXJlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOm1ldGg6YGZyb210aW1lc3RhbXBgIG1heSByZXR1cm4gaW5zdGFuY2VzIHdpdGggOmF0dHI6YC5mb2xkYCBzZXQgdG8gMS4KIAogLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkKIApAQCAtNzkzLDE2ICs4MDAsMjMgQEAKICAgIG1pY3Jvc2Vjb25kIG9mIHRoZSByZXN1bHQgYXJlIGFsbCAwLCBhbmQgOmF0dHI6YC50emluZm9gIGlzIGBgTm9uZWBgLgogCiAKLS4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuY29tYmluZShkYXRlLCB0aW1lKQorLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5jb21iaW5lKGRhdGUsIHRpbWUsIHR6aW5mbz1zZWxmLnR6aW5mbykKIAogICAgUmV0dXJuIGEgbmV3IDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3Qgd2hvc2UgZGF0ZSBjb21wb25lbnRzIGFyZSBlcXVhbCB0byB0aGUKLSAgIGdpdmVuIDpjbGFzczpgZGF0ZWAgb2JqZWN0J3MsIGFuZCB3aG9zZSB0aW1lIGNvbXBvbmVudHMgYW5kIDphdHRyOmAudHppbmZvYAotICAgYXR0cmlidXRlcyBhcmUgZXF1YWwgdG8gdGhlIGdpdmVuIDpjbGFzczpgLnRpbWVgIG9iamVjdCdzLiBGb3IgYW55Ci0gICA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0ICpkKiwKLSAgIGBgZCA9PSBkYXRldGltZS5jb21iaW5lKGQuZGF0ZSgpLCBkLnRpbWV0eigpKWBgLiAgSWYgZGF0ZSBpcyBhCisgICBnaXZlbiA6Y2xhc3M6YGRhdGVgIG9iamVjdCdzLCBhbmQgd2hvc2UgdGltZSBjb21wb25lbnRzCisgICBhcmUgZXF1YWwgdG8gdGhlIGdpdmVuIDpjbGFzczpgLnRpbWVgIG9iamVjdCdzLiAgSWYgdGhlICp0emluZm8qCisgICBhcmd1bWVudCBpcyBwcm92aWRlZCwgaXRzIHZhbHVlIGlzIHVzZWQgdG8gc2V0IHRoZSA6YXR0cjpgLnR6aW5mb2AgYXR0cmlidXRlCisgICBvZiB0aGUgcmVzdWx0LCBvdGhlcndpc2UgdGhlIDphdHRyOmB+LnRpbWUudHppbmZvYCBhdHRyaWJ1dGUgb2YgdGhlICp0aW1lKiBhcmd1bWVudAorICAgaXMgdXNlZC4KKworICAgRm9yIGFueSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0ICpkKiwKKyAgIGBgZCA9PSBkYXRldGltZS5jb21iaW5lKGQuZGF0ZSgpLCBkLnRpbWUoKSwgZC50emluZm8pYGAuICBJZiBkYXRlIGlzIGEKICAgIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QsIGl0cyB0aW1lIGNvbXBvbmVudHMgYW5kIDphdHRyOmAudHppbmZvYCBhdHRyaWJ1dGVzCiAgICBhcmUgaWdub3JlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdHppbmZvKiBhcmd1bWVudC4KKwogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLnN0cnB0aW1lKGRhdGVfc3RyaW5nLCBmb3JtYXQpCiAKQEAgLTg3OCw2ICs4OTIsMTYgQEAKICAgIG9yIGBgTm9uZWBgIGlmIG5vbmUgd2FzIHBhc3NlZC4KIAogCisuLiBhdHRyaWJ1dGU6OiBkYXRldGltZS5mb2xkCisKKyAgIEluIGBgWzAsIDFdYGAuICBVc2VkIHRvIGRpc2FtYmlndWF0ZSB3YWxsIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLiAgKEEKKyAgIHJlcGVhdGVkIGludGVydmFsIG9jY3VycyB3aGVuIGNsb2NrcyBhcmUgcm9sbGVkIGJhY2sgYXQgdGhlIGVuZCBvZiBkYXlsaWdodCBzYXZpbmcKKyAgIHRpbWUgb3Igd2hlbiB0aGUgVVRDIG9mZnNldCBmb3IgdGhlIGN1cnJlbnQgem9uZSBpcyBkZWNyZWFzZWQgZm9yIHBvbGl0aWNhbCByZWFzb25zLikKKyAgIFRoZSB2YWx1ZSAwICgxKSByZXByZXNlbnRzIHRoZSBlYXJsaWVyIChsYXRlcikgb2YgdGhlIHR3byBtb21lbnRzIHdpdGggdGhlIHNhbWUgd2FsbAorICAgdGltZSByZXByZXNlbnRhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIFN1cHBvcnRlZCBvcGVyYXRpb25zOgogCiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtOTY2LDIzICs5OTAsMzQgQEAKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudGltZSgpCiAKLSAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kIGFuZCBtaWNyb3NlY29uZC4KKyAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCBhbmQgZm9sZC4KICAgIDphdHRyOmAudHppbmZvYCBpcyBgYE5vbmVgYC4gIFNlZSBhbHNvIG1ldGhvZCA6bWV0aDpgdGltZXR6YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSBmb2xkIHZhbHVlIGlzIGNvcGllZCB0byB0aGUgcmV0dXJuZWQgOmNsYXNzOmAudGltZWAgb2JqZWN0LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWV0eigpCiAKLSAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgYW5kCisgICBSZXR1cm4gOmNsYXNzOmAudGltZWAgb2JqZWN0IHdpdGggc2FtZSBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQsIGFuZAogICAgdHppbmZvIGF0dHJpYnV0ZXMuICBTZWUgYWxzbyBtZXRob2QgOm1ldGg6YHRpbWVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIGZvbGQgdmFsdWUgaXMgY29waWVkIHRvIHRoZSByZXR1cm5lZCA6Y2xhc3M6YC50aW1lYCBvYmplY3QuCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLnJlcGxhY2UoW3llYXJbLCBtb250aFssIGRheVssIGhvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dXV1dKQorCisuLiBtZXRob2Q6OiBkYXRldGltZS5yZXBsYWNlKHllYXI9c2VsZi55ZWFyLCBtb250aD1zZWxmLm1vbnRoLCBkYXk9c2VsZi5kYXksIFwKKyAgIGhvdXI9c2VsZi5ob3VyLCBtaW51dGU9c2VsZi5taW51dGUsIHNlY29uZD1zZWxmLnNlY29uZCwgbWljcm9zZWNvbmQ9c2VsZi5taWNyb3NlY29uZCwgXAorICAgdHppbmZvPXNlbGYudHppbmZvLCAqIGZvbGQ9MCkKIAogICAgUmV0dXJuIGEgZGF0ZXRpbWUgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzLCBleGNlcHQgZm9yIHRob3NlIGF0dHJpYnV0ZXMgZ2l2ZW4KICAgIG5ldyB2YWx1ZXMgYnkgd2hpY2hldmVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuICBOb3RlIHRoYXQKICAgIGBgdHppbmZvPU5vbmVgYCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNyZWF0ZSBhIG5haXZlIGRhdGV0aW1lIGZyb20gYW4gYXdhcmUKICAgIGRhdGV0aW1lIHdpdGggbm8gY29udmVyc2lvbiBvZiBkYXRlIGFuZCB0aW1lIGRhdGEuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIGBgZm9sZGBgIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLmFzdGltZXpvbmUodHo9Tm9uZSkKIApAQCAtOTkxLDIzICsxMDI2LDIwIEBACiAgICAqc2VsZiosIGJ1dCBpbiAqdHoqJ3MgbG9jYWwgdGltZS4KIAogICAgSWYgcHJvdmlkZWQsICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cwotICAgOm1ldGg6YHV0Y29mZnNldGAgYW5kIDptZXRoOmBkc3RgIG1ldGhvZHMgbXVzdCBub3QgcmV0dXJuIGBgTm9uZWBgLiAgKnNlbGYqIG11c3QKLSAgIGJlIGF3YXJlIChgYHNlbGYudHppbmZvYGAgbXVzdCBub3QgYmUgYGBOb25lYGAsIGFuZCBgYHNlbGYudXRjb2Zmc2V0KClgYCBtdXN0Ci0gICBub3QgcmV0dXJuIGBgTm9uZWBgKS4KKyAgIDptZXRoOmB1dGNvZmZzZXRgIGFuZCA6bWV0aDpgZHN0YCBtZXRob2RzIG11c3Qgbm90IHJldHVybiBgYE5vbmVgYC4gIElmICpzZWxmKgorICAgaXMgbmFpdmUgKGBgc2VsZi50emluZm8gaXMgTm9uZWBgKSwgaXQgaXMgcHJlc3VtZWQgdG8gcmVwcmVzZW50IHRpbWUgaW4gdGhlCisgICBzeXN0ZW0gdGltZXpvbmUuCiAKICAgIElmIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cyAob3Igd2l0aCBgYHR6PU5vbmVgYCkgdGhlIHN5c3RlbSBsb2NhbAotICAgdGltZXpvbmUgaXMgYXNzdW1lZC4gIFRoZSBgYC50emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAorICAgdGltZXpvbmUgaXMgYXNzdW1lZCBmb3IgdGhlIHRhcmdldCB0aW1lem9uZS4gIFRoZSBgYC50emluZm9gYCBhdHRyaWJ1dGUgb2YgdGhlIGNvbnZlcnRlZAogICAgZGF0ZXRpbWUgaW5zdGFuY2Ugd2lsbCBiZSBzZXQgdG8gYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmB0aW1lem9uZWAKICAgIHdpdGggdGhlIHpvbmUgbmFtZSBhbmQgb2Zmc2V0IG9idGFpbmVkIGZyb20gdGhlIE9TLgogCiAgICBJZiBgYHNlbGYudHppbmZvYGAgaXMgKnR6KiwgYGBzZWxmLmFzdGltZXpvbmUodHopYGAgaXMgZXF1YWwgdG8gKnNlbGYqOiAgbm8KICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBvciB0aW1lIGRhdGEgaXMgcGVyZm9ybWVkLiBFbHNlIHRoZSByZXN1bHQgaXMgbG9jYWwKLSAgIHRpbWUgaW4gdGltZSB6b25lICp0eiosIHJlcHJlc2VudGluZyB0aGUgc2FtZSBVVEMgdGltZSBhcyAqc2VsZio6ICBhZnRlcgotICAgYGBhc3R6ID0gZHQuYXN0aW1lem9uZSh0eilgYCwgYGBhc3R6IC0gYXN0ei51dGNvZmZzZXQoKWBgIHdpbGwgdXN1YWxseSBoYXZlCi0gICB0aGUgc2FtZSBkYXRlIGFuZCB0aW1lIGRhdGEgYXMgYGBkdCAtIGR0LnV0Y29mZnNldCgpYGAuIFRoZSBkaXNjdXNzaW9uCi0gICBvZiBjbGFzcyA6Y2xhc3M6YHR6aW5mb2AgZXhwbGFpbnMgdGhlIGNhc2VzIGF0IERheWxpZ2h0IFNhdmluZyBUaW1lIHRyYW5zaXRpb24KLSAgIGJvdW5kYXJpZXMgd2hlcmUgdGhpcyBjYW5ub3QgYmUgYWNoaWV2ZWQgKGFuIGlzc3VlIG9ubHkgaWYgKnR6KiBtb2RlbHMgYm90aAotICAgc3RhbmRhcmQgYW5kIGRheWxpZ2h0IHRpbWUpLgorICAgdGltZSBpbiB0aGUgdGltZXpvbmUgKnR6KiwgcmVwcmVzZW50aW5nIHRoZSBzYW1lIFVUQyB0aW1lIGFzICpzZWxmKjogIGFmdGVyCisgICBgYGFzdHogPSBkdC5hc3RpbWV6b25lKHR6KWBgLCBgYGFzdHogLSBhc3R6LnV0Y29mZnNldCgpYGAgd2lsbCBoYXZlCisgICB0aGUgc2FtZSBkYXRlIGFuZCB0aW1lIGRhdGEgYXMgYGBkdCAtIGR0LnV0Y29mZnNldCgpYGAuCiAKICAgIElmIHlvdSBtZXJlbHkgd2FudCB0byBhdHRhY2ggYSB0aW1lIHpvbmUgb2JqZWN0ICp0eiogdG8gYSBkYXRldGltZSAqZHQqIHdpdGhvdXQKICAgIGFkanVzdG1lbnQgb2YgZGF0ZSBhbmQgdGltZSBkYXRhLCB1c2UgYGBkdC5yZXBsYWNlKHR6aW5mbz10eilgYC4gIElmIHlvdQpAQCAtMTAyOSw2ICsxMDYxLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgKnR6KiBub3cgY2FuIGJlIG9taXR0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgOm1ldGg6YGFzdGltZXpvbmVgIG1ldGhvZCBjYW4gbm93IGJlIGNhbGxlZCBvbiBuYWl2ZSBpbnN0YW5jZXMgdGhhdAorICAgICAgYXJlIHByZXN1bWVkIHRvIHJlcHJlc2VudCBzeXN0ZW0gbG9jYWwgdGltZS4KKwogCiAuLiBtZXRob2Q6OiBkYXRldGltZS51dGNvZmZzZXQoKQogCkBAIC0xMTA1LDYgKzExNDEsMTAgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgOm1ldGg6YHRpbWVzdGFtcGAgbWV0aG9kIHVzZXMgdGhlIDphdHRyOmAuZm9sZGAgYXR0cmlidXRlIHRvCisgICAgICBkaXNhbWJpZ3VhdGUgdGhlIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLgorCiAgICAuLiBub3RlOjoKIAogICAgICAgVGhlcmUgaXMgbm8gbWV0aG9kIHRvIG9idGFpbiB0aGUgUE9TSVggdGltZXN0YW1wIGRpcmVjdGx5IGZyb20gYQpAQCAtMTEzOCw3ICsxMTc4LDcgQEAKICAgIGBgc2VsZi5kYXRlKCkuaXNvY2FsZW5kYXIoKWBgLgogCiAKLS4uIG1ldGhvZDo6IGRhdGV0aW1lLmlzb2Zvcm1hdChzZXA9J1QnKQorLi4gbWV0aG9kOjogZGF0ZXRpbWUuaXNvZm9ybWF0KHNlcD0nVCcsIHRpbWVzcGVjPSdhdXRvJykKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZGF0ZSBhbmQgdGltZSBpbiBJU08gODYwMSBmb3JtYXQsCiAgICBZWVlZLU1NLUREVEhIOk1NOlNTLm1tbW1tbSBvciwgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLApAQCAtMTE1OSw2ICsxMTk5LDM3IEBACiAgICAgICA+Pj4gZGF0ZXRpbWUoMjAwMiwgMTIsIDI1LCB0emluZm89VFooKSkuaXNvZm9ybWF0KCcgJykKICAgICAgICcyMDAyLTEyLTI1IDAwOjAwOjAwLTA2OjM5JwogCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVzcGVjKiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCisgICBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUgKHRoZSBkZWZhdWx0IGlzIGBgJ2F1dG8nYGApLgorICAgSXQgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAtIGBgJ2F1dG8nYGA6IFNhbWUgYXMgYGAnc2Vjb25kcydgYCBpZiA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsCisgICAgIHNhbWUgYXMgYGAnbWljcm9zZWNvbmRzJ2BgIG90aGVyd2lzZS4KKyAgIC0gYGAnaG91cnMnYGA6IEluY2x1ZGUgdGhlIDphdHRyOmBob3VyYCBpbiB0aGUgdHdvLWRpZ2l0IEhIIGZvcm1hdC4KKyAgIC0gYGAnbWludXRlcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAgYW5kIDphdHRyOmBtaW51dGVgIGluIEhIOk1NIGZvcm1hdC4KKyAgIC0gYGAnc2Vjb25kcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAsIDphdHRyOmBtaW51dGVgLCBhbmQgOmF0dHI6YHNlY29uZGAKKyAgICAgaW4gSEg6TU06U1MgZm9ybWF0LgorICAgLSBgYCdtaWxsaXNlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lLCBidXQgdHJ1bmNhdGUgZnJhY3Rpb25hbCBzZWNvbmQKKyAgICAgcGFydCB0byBtaWxsaXNlY29uZHMuIEhIOk1NOlNTLnNzcyBmb3JtYXQuCisgICAtIGBgJ21pY3Jvc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUgaW4gSEg6TU06U1MubW1tbW1tIGZvcm1hdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEV4Y2x1ZGVkIHRpbWUgY29tcG9uZW50cyBhcmUgdHJ1bmNhdGVkLCBub3Qgcm91bmRlZC4KKworICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgb24gYW4gaW52YWxpZCAqdGltZXNwZWMqIGFyZ3VtZW50LgorCisKKyAgICAgID4+PiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorICAgICAgPj4+IGRhdGV0aW1lLm5vdygpLmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpCisgICAgICAnMjAwMi0xMi0yNVQwMDowMCcKKyAgICAgID4+PiBkdCA9IGRhdGV0aW1lKDIwMTUsIDEsIDEsIDEyLCAzMCwgNTksIDApCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKQorICAgICAgJzIwMTUtMDEtMDFUMTI6MzA6NTkuMDAwMDAwJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdGltZXNwZWMqIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLl9fc3RyX18oKQogCkBAIC0xMTg1LDcgKzEyNTYsOCBAQAogLi4gbWV0aG9kOjogZGF0ZXRpbWUuX19mb3JtYXRfXyhmb3JtYXQpCiAKICAgIFNhbWUgYXMgOm1ldGg6YC5kYXRldGltZS5zdHJmdGltZWAuICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHNwZWNpZnkgYSBmb3JtYXQKLSAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKKyAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IGluIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcKKyAgIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBhbmQgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQogICAgY29tcGxldGUgbGlzdCBvZiBmb3JtYXR0aW5nIGRpcmVjdGl2ZXMsIHNlZQogICAgOnJlZjpgc3RyZnRpbWUtc3RycHRpbWUtYmVoYXZpb3JgLgogCkBAIC0xMzAyLDE2ICsxMzc0LDE3IEBACiBBIHRpbWUgb2JqZWN0IHJlcHJlc2VudHMgYSAobG9jYWwpIHRpbWUgb2YgZGF5LCBpbmRlcGVuZGVudCBvZiBhbnkgcGFydGljdWxhcgogZGF5LCBhbmQgc3ViamVjdCB0byBhZGp1c3RtZW50IHZpYSBhIDpjbGFzczpgdHppbmZvYCBvYmplY3QuCiAKLS4uIGNsYXNzOjogdGltZShob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpCisuLiBjbGFzczo6IHRpbWUoaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApCiAKICAgIEFsbCBhcmd1bWVudHMgYXJlIG9wdGlvbmFsLiAgKnR6aW5mbyogbWF5IGJlIGBgTm9uZWBgLCBvciBhbiBpbnN0YW5jZSBvZiBhCiAgICA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBtYXkgYmUgaW50ZWdlcnMsIGluIHRoZQogICAgZm9sbG93aW5nIHJhbmdlczoKIAotICAgKiBgYDAgPD0gaG91ciA8IDI0YGAKLSAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAKLSAgICogYGAwIDw9IHNlY29uZCA8IDYwYGAKLSAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgLgorICAgKiBgYDAgPD0gaG91ciA8IDI0YGAsCisgICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgLAorICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYCwKKyAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgLAorICAgKiBgYGZvbGQgaW4gWzAsIDFdYGAuCiAKICAgIElmIGFuIGFyZ3VtZW50IG91dHNpZGUgdGhvc2UgcmFuZ2VzIGlzIGdpdmVuLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuICBBbGwKICAgIGRlZmF1bHQgdG8gYGAwYGAgZXhjZXB0ICp0emluZm8qLCB3aGljaCBkZWZhdWx0cyB0byA6Y29uc3Q6YE5vbmVgLgpAQCAtMTM2NCw2ICsxNDM3LDE3IEBACiAgICBgYE5vbmVgYCBpZiBub25lIHdhcyBwYXNzZWQuCiAKIAorLi4gYXR0cmlidXRlOjogdGltZS5mb2xkCisKKyAgIEluIGBgWzAsIDFdYGAuICBVc2VkIHRvIGRpc2FtYmlndWF0ZSB3YWxsIHRpbWVzIGR1cmluZyBhIHJlcGVhdGVkIGludGVydmFsLiAgKEEKKyAgIHJlcGVhdGVkIGludGVydmFsIG9jY3VycyB3aGVuIGNsb2NrcyBhcmUgcm9sbGVkIGJhY2sgYXQgdGhlIGVuZCBvZiBkYXlsaWdodCBzYXZpbmcKKyAgIHRpbWUgb3Igd2hlbiB0aGUgVVRDIG9mZnNldCBmb3IgdGhlIGN1cnJlbnQgem9uZSBpcyBkZWNyZWFzZWQgZm9yIHBvbGl0aWNhbCByZWFzb25zLikKKyAgIFRoZSB2YWx1ZSAwICgxKSByZXByZXNlbnRzIHRoZSBlYXJsaWVyIChsYXRlcikgb2YgdGhlIHR3byBtb21lbnRzIHdpdGggdGhlIHNhbWUgd2FsbAorICAgdGltZSByZXByZXNlbnRhdGlvbi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogU3VwcG9ydGVkIG9wZXJhdGlvbnM6CiAKICogY29tcGFyaXNvbiBvZiA6Y2xhc3M6YC50aW1lYCB0byA6Y2xhc3M6YC50aW1lYCwgd2hlcmUgKmEqIGlzIGNvbnNpZGVyZWQgbGVzcwpAQCAtMTM5OSwyMSArMTQ4Myw1OCBAQAogCiBJbnN0YW5jZSBtZXRob2RzOgogCi0uLiBtZXRob2Q6OiB0aW1lLnJlcGxhY2UoW2hvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dKQorLi4gbWV0aG9kOjogdGltZS5yZXBsYWNlKGhvdXI9c2VsZi5ob3VyLCBtaW51dGU9c2VsZi5taW51dGUsIHNlY29uZD1zZWxmLnNlY29uZCwgXAorICAgbWljcm9zZWNvbmQ9c2VsZi5taWNyb3NlY29uZCwgdHppbmZvPXNlbGYudHppbmZvLCAqIGZvbGQ9MCkKIAogICAgUmV0dXJuIGEgOmNsYXNzOmAudGltZWAgd2l0aCB0aGUgc2FtZSB2YWx1ZSwgZXhjZXB0IGZvciB0aG9zZSBhdHRyaWJ1dGVzIGdpdmVuCiAgICBuZXcgdmFsdWVzIGJ5IHdoaWNoZXZlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLiAgTm90ZSB0aGF0CiAgICBgYHR6aW5mbz1Ob25lYGAgY2FuIGJlIHNwZWNpZmllZCB0byBjcmVhdGUgYSBuYWl2ZSA6Y2xhc3M6YC50aW1lYCBmcm9tIGFuCiAgICBhd2FyZSA6Y2xhc3M6YC50aW1lYCwgd2l0aG91dCBjb252ZXJzaW9uIG9mIHRoZSB0aW1lIGRhdGEuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIGBgZm9sZGBgIGFyZ3VtZW50LgogCi0uLiBtZXRob2Q6OiB0aW1lLmlzb2Zvcm1hdCgpCisKKy4uIG1ldGhvZDo6IHRpbWUuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJykKIAogICAgUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdGltZSBpbiBJU08gODYwMSBmb3JtYXQsIEhIOk1NOlNTLm1tbW1tbSBvciwgaWYKLSAgIHNlbGYubWljcm9zZWNvbmQgaXMgMCwgSEg6TU06U1MgSWYgOm1ldGg6YHV0Y29mZnNldGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCBhCisgICA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsIEhIOk1NOlNTIElmIDptZXRoOmB1dGNvZmZzZXRgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgYQogICAgNi1jaGFyYWN0ZXIgc3RyaW5nIGlzIGFwcGVuZGVkLCBnaXZpbmcgdGhlIFVUQyBvZmZzZXQgaW4gKHNpZ25lZCkgaG91cnMgYW5kCiAgICBtaW51dGVzOiBISDpNTTpTUy5tbW1tbW0rSEg6TU0gb3IsIGlmIHNlbGYubWljcm9zZWNvbmQgaXMgMCwgSEg6TU06U1MrSEg6TU0KIAorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICp0aW1lc3BlYyogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkaXRpb25hbAorICAgY29tcG9uZW50cyBvZiB0aGUgdGltZSB0byBpbmNsdWRlICh0aGUgZGVmYXVsdCBpcyBgYCdhdXRvJ2BgKS4KKyAgIEl0IGNhbiBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworICAgLSBgYCdhdXRvJ2BgOiBTYW1lIGFzIGBgJ3NlY29uZHMnYGAgaWYgOmF0dHI6YG1pY3Jvc2Vjb25kYCBpcyAwLAorICAgICBzYW1lIGFzIGBgJ21pY3Jvc2Vjb25kcydgYCBvdGhlcndpc2UuCisgICAtIGBgJ2hvdXJzJ2BgOiBJbmNsdWRlIHRoZSA6YXR0cjpgaG91cmAgaW4gdGhlIHR3by1kaWdpdCBISCBmb3JtYXQuCisgICAtIGBgJ21pbnV0ZXMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgIGFuZCA6YXR0cjpgbWludXRlYCBpbiBISDpNTSBmb3JtYXQuCisgICAtIGBgJ3NlY29uZHMnYGA6IEluY2x1ZGUgOmF0dHI6YGhvdXJgLCA6YXR0cjpgbWludXRlYCwgYW5kIDphdHRyOmBzZWNvbmRgCisgICAgIGluIEhIOk1NOlNTIGZvcm1hdC4KKyAgIC0gYGAnbWlsbGlzZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSwgYnV0IHRydW5jYXRlIGZyYWN0aW9uYWwgc2Vjb25kCisgICAgIHBhcnQgdG8gbWlsbGlzZWNvbmRzLiBISDpNTTpTUy5zc3MgZm9ybWF0LgorICAgLSBgYCdtaWNyb3NlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lIGluIEhIOk1NOlNTLm1tbW1tbSBmb3JtYXQuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBFeGNsdWRlZCB0aW1lIGNvbXBvbmVudHMgYXJlIHRydW5jYXRlZCwgbm90IHJvdW5kZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIG9uIGFuIGludmFsaWQgKnRpbWVzcGVjKiBhcmd1bWVudC4KKworCisgICAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZQorICAgICAgPj4+IHRpbWUoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTEyMzQ1NikuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJykKKyAgICAgICcxMjozNCcKKyAgICAgID4+PiBkdCA9IHRpbWUoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTApCisgICAgICA+Pj4gZHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKQorICAgICAgJzEyOjM0OjU2LjAwMDAwMCcKKyAgICAgID4+PiBkdC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKQorICAgICAgJzEyOjM0OjU2JworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHRoZSAqdGltZXNwZWMqIGFyZ3VtZW50LgorCiAKIC4uIG1ldGhvZDo6IHRpbWUuX19zdHJfXygpCiAKQEAgLTE0MzAsNyArMTU1MSw4IEBACiAuLiBtZXRob2Q6OiB0aW1lLl9fZm9ybWF0X18oZm9ybWF0KQogCiAgICBTYW1lIGFzIDptZXRoOmAudGltZS5zdHJmdGltZWAuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIGZvcm1hdCBzdHJpbmcKLSAgIGZvciBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCisgICBmb3IgYSA6Y2xhc3M6YC50aW1lYCBvYmplY3QgaW4gOnJlZjpgZm9ybWF0dGVkIHN0cmluZworICAgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIGFuZCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCiAgICBjb21wbGV0ZSBsaXN0IG9mIGZvcm1hdHRpbmcgZGlyZWN0aXZlcywgc2VlCiAgICA6cmVmOmBzdHJmdGltZS1zdHJwdGltZS1iZWhhdmlvcmAuCiAKQEAgLTE2ODAsOSArMTgwMiwxOSBAQAogV2hlbiBEU1Qgc3RhcnRzICh0aGUgInN0YXJ0IiBsaW5lKSwgdGhlIGxvY2FsIHdhbGwgY2xvY2sgbGVhcHMgZnJvbSAxOjU5IHRvCiAzOjAwLiAgQSB3YWxsIHRpbWUgb2YgdGhlIGZvcm0gMjpNTSBkb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIG9uIHRoYXQgZGF5LCBzbwogYGBhc3RpbWV6b25lKEVhc3Rlcm4pYGAgd29uJ3QgZGVsaXZlciBhIHJlc3VsdCB3aXRoIGBgaG91ciA9PSAyYGAgb24gdGhlIGRheSBEU1QKLWJlZ2lucy4gIEluIG9yZGVyIGZvciA6bWV0aDpgYXN0aW1lem9uZWAgdG8gbWFrZSB0aGlzIGd1YXJhbnRlZSwgdGhlCi06bWV0aDpgdHppbmZvLmRzdGAgbWV0aG9kIG11c3QgY29uc2lkZXIgdGltZXMgaW4gdGhlICJtaXNzaW5nIGhvdXIiICgyOk1NIGZvcgotRWFzdGVybikgdG8gYmUgaW4gZGF5bGlnaHQgdGltZS4KK2JlZ2lucy4gIEZvciBleGFtcGxlLCBhdCB0aGUgU3ByaW5nIGZvcndhcmQgdHJhbnNpdGlvbiBvZiAyMDE2LCB3ZSBnZXQKKworICAgID4+PiB1MCA9IGRhdGV0aW1lKDIwMTYsIDMsIDEzLCA1LCB0emluZm89dGltZXpvbmUudXRjKQorICAgID4+PiBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAuLi4gICAgIHUgPSB1MCArIGkqSE9VUgorICAgIC4uLiAgICAgdCA9IHUuYXN0aW1lem9uZShFYXN0ZXJuKQorICAgIC4uLiAgICAgcHJpbnQodS50aW1lKCksICdVVEMgPScsIHQudGltZSgpLCB0LnR6bmFtZSgpKQorICAgIC4uLgorICAgIDA1OjAwOjAwIFVUQyA9IDAwOjAwOjAwIEVTVAorICAgIDA2OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVTVAorICAgIDA3OjAwOjAwIFVUQyA9IDAzOjAwOjAwIEVEVAorICAgIDA4OjAwOjAwIFVUQyA9IDA0OjAwOjAwIEVEVAorCiAKIFdoZW4gRFNUIGVuZHMgKHRoZSAiZW5kIiBsaW5lKSwgdGhlcmUncyBhIHBvdGVudGlhbGx5IHdvcnNlIHByb2JsZW06IHRoZXJlJ3MgYW4KIGhvdXIgdGhhdCBjYW4ndCBiZSBzcGVsbGVkIHVuYW1iaWd1b3VzbHkgaW4gbG9jYWwgd2FsbCB0aW1lOiB0aGUgbGFzdCBob3VyIG9mCkBAIC0xNjkxLDI4ICsxODIzLDQxIEBACiB0byAxOjAwIChzdGFuZGFyZCB0aW1lKSBhZ2Fpbi4gTG9jYWwgdGltZXMgb2YgdGhlIGZvcm0gMTpNTSBhcmUgYW1iaWd1b3VzLgogOm1ldGg6YGFzdGltZXpvbmVgIG1pbWljcyB0aGUgbG9jYWwgY2xvY2sncyBiZWhhdmlvciBieSBtYXBwaW5nIHR3byBhZGphY2VudCBVVEMKIGhvdXJzIGludG8gdGhlIHNhbWUgbG9jYWwgaG91ciB0aGVuLiAgSW4gdGhlIEVhc3Rlcm4gZXhhbXBsZSwgVVRDIHRpbWVzIG9mIHRoZQotZm9ybSA1Ok1NIGFuZCA2Ok1NIGJvdGggbWFwIHRvIDE6TU0gd2hlbiBjb252ZXJ0ZWQgdG8gRWFzdGVybi4gIEluIG9yZGVyIGZvcgotOm1ldGg6YGFzdGltZXpvbmVgIHRvIG1ha2UgdGhpcyBndWFyYW50ZWUsIHRoZSA6bWV0aDpgdHppbmZvLmRzdGAgbWV0aG9kIG11c3QKLWNvbnNpZGVyIHRpbWVzIGluIHRoZSAicmVwZWF0ZWQgaG91ciIgdG8gYmUgaW4gc3RhbmRhcmQgdGltZS4gIFRoaXMgaXMgZWFzaWx5Ci1hcnJhbmdlZCwgYXMgaW4gdGhlIGV4YW1wbGUsIGJ5IGV4cHJlc3NpbmcgRFNUIHN3aXRjaCB0aW1lcyBpbiB0aGUgdGltZSB6b25lJ3MKLXN0YW5kYXJkIGxvY2FsIHRpbWUuCitmb3JtIDU6TU0gYW5kIDY6TU0gYm90aCBtYXAgdG8gMTpNTSB3aGVuIGNvbnZlcnRlZCB0byBFYXN0ZXJuLCBidXQgZWFybGllciB0aW1lcworaGF2ZSB0aGUgOmF0dHI6YH5kYXRldGltZS5mb2xkYCBhdHRyaWJ1dGUgc2V0IHRvIDAgYW5kIHRoZSBsYXRlciB0aW1lcyBoYXZlIGl0IHNldCB0byAxLgorRm9yIGV4YW1wbGUsIGF0IHRoZSBGYWxsIGJhY2sgdHJhbnNpdGlvbiBvZiAyMDE2LCB3ZSBnZXQKIAotQXBwbGljYXRpb25zIHRoYXQgY2FuJ3QgYmVhciBzdWNoIGFtYmlndWl0aWVzIHNob3VsZCBhdm9pZCB1c2luZyBoeWJyaWQKKyAgICA+Pj4gdTAgPSBkYXRldGltZSgyMDE2LCAxMSwgNiwgNCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgLi4uICAgICB1ID0gdTAgKyBpKkhPVVIKKyAgICAuLi4gICAgIHQgPSB1LmFzdGltZXpvbmUoRWFzdGVybikKKyAgICAuLi4gICAgIHByaW50KHUudGltZSgpLCAnVVRDID0nLCB0LnRpbWUoKSwgdC50em5hbWUoKSwgdC5mb2xkKQorICAgIC4uLgorICAgIDA0OjAwOjAwIFVUQyA9IDAwOjAwOjAwIEVEVCAwCisgICAgMDU6MDA6MDAgVVRDID0gMDE6MDA6MDAgRURUIDAKKyAgICAwNjowMDowMCBVVEMgPSAwMTowMDowMCBFU1QgMQorICAgIDA3OjAwOjAwIFVUQyA9IDAyOjAwOjAwIEVTVCAwCisKK05vdGUgdGhhdCB0aGUgOmNsYXNzOmBkYXRldGltZWAgaW5zdGFuY2VzIHRoYXQgZGlmZmVyIG9ubHkgYnkgdGhlIHZhbHVlIG9mIHRoZQorOmF0dHI6YH5kYXRldGltZS5mb2xkYCBhdHRyaWJ1dGUgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaW4gY29tcGFyaXNvbnMuCisKK0FwcGxpY2F0aW9ucyB0aGF0IGNhbid0IGJlYXIgd2FsbC10aW1lIGFtYmlndWl0aWVzIHNob3VsZCBleHBsaWNpdGx5IGNoZWNrIHRoZQordmFsdWUgb2YgdGhlIDphdHRyOmB+ZGF0ZXRpbWUuZm9sZGAgYXR0cmlidXRlIG9yIGF2b2lkIHVzaW5nIGh5YnJpZAogOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzZXM7IHRoZXJlIGFyZSBubyBhbWJpZ3VpdGllcyB3aGVuIHVzaW5nIDpjbGFzczpgdGltZXpvbmVgLAogb3IgYW55IG90aGVyIGZpeGVkLW9mZnNldCA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3MgKHN1Y2ggYXMgYSBjbGFzcyByZXByZXNlbnRpbmcKIG9ubHkgRVNUIChmaXhlZCBvZmZzZXQgLTUgaG91cnMpLCBvciBvbmx5IEVEVCAoZml4ZWQgb2Zmc2V0IC00IGhvdXJzKSkuCiAKIC4uIHNlZWFsc286OgogCi0gICBgcHl0eiA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXR6Lz5gXworICAgYGRhdGV0dWlsLnR6IDxodHRwczovL2RhdGV1dGlsLnJlYWR0aGVkb2NzLmlvL2VuL3N0YWJsZS90ei5odG1sPmBfCiAgICAgICBUaGUgc3RhbmRhcmQgbGlicmFyeSBoYXMgOmNsYXNzOmB0aW1lem9uZWAgY2xhc3MgZm9yIGhhbmRsaW5nIGFyYml0cmFyeQogICAgICAgZml4ZWQgb2Zmc2V0cyBmcm9tIFVUQyBhbmQgOmF0dHI6YHRpbWV6b25lLnV0Y2AgYXMgVVRDIHRpbWV6b25lIGluc3RhbmNlLgogCi0gICAgICAqcHl0eiogbGlicmFyeSBicmluZ3MgdGhlICpJQU5BIHRpbWV6b25lIGRhdGFiYXNlKiAoYWxzbyBrbm93biBhcyB0aGUKKyAgICAgICpkYXRldHVpbC50eiogbGlicmFyeSBicmluZ3MgdGhlICpJQU5BIHRpbWV6b25lIGRhdGFiYXNlKiAoYWxzbyBrbm93biBhcyB0aGUKICAgICAgIE9sc29uIGRhdGFiYXNlKSB0byBQeXRob24gYW5kIGl0cyB1c2FnZSBpcyByZWNvbW1lbmRlZC4KIAogICAgYElBTkEgdGltZXpvbmUgZGF0YWJhc2UgPGh0dHBzOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXM+YF8KLSAgICAgIFRoZSBUaW1lIFpvbmUgRGF0YWJhc2UgKG9mdGVuIGNhbGxlZCB0eiBvciB6b25laW5mbykgY29udGFpbnMgY29kZSBhbmQKKyAgICAgIFRoZSBUaW1lIFpvbmUgRGF0YWJhc2UgKG9mdGVuIGNhbGxlZCB0eiwgdHpkYXRhIG9yIHpvbmVpbmZvKSBjb250YWlucyBjb2RlIGFuZAogICAgICAgZGF0YSB0aGF0IHJlcHJlc2VudCB0aGUgaGlzdG9yeSBvZiBsb2NhbCB0aW1lIGZvciBtYW55IHJlcHJlc2VudGF0aXZlCiAgICAgICBsb2NhdGlvbnMgYXJvdW5kIHRoZSBnbG9iZS4gSXQgaXMgdXBkYXRlZCBwZXJpb2RpY2FsbHkgdG8gcmVmbGVjdCBjaGFuZ2VzCiAgICAgICBtYWRlIGJ5IHBvbGl0aWNhbCBib2RpZXMgdG8gdGltZSB6b25lIGJvdW5kYXJpZXMsIFVUQyBvZmZzZXRzLCBhbmQKQEAgLTE3MzIsNyArMTg3Nyw3IEBACiBtYWRlIHRvIGNpdmlsIHRpbWUuCiAKIAotLi4gY2xhc3M6OiB0aW1lem9uZShvZmZzZXRbLCBuYW1lXSkKKy4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0LCBuYW1lPU5vbmUpCiAKICAgVGhlICpvZmZzZXQqIGFyZ3VtZW50IG11c3QgYmUgc3BlY2lmaWVkIGFzIGEgOmNsYXNzOmB0aW1lZGVsdGFgCiAgIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbG9jYWwgdGltZSBhbmQgVVRDLiAgSXQgbXVzdApAQCAtMTc0MSwxMCArMTg4Niw3IEBACiAgIG90aGVyd2lzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKICAgVGhlICpuYW1lKiBhcmd1bWVudCBpcyBvcHRpb25hbC4gIElmIHNwZWNpZmllZCBpdCBtdXN0IGJlIGEgc3RyaW5nIHRoYXQKLSAgaXMgdXNlZCBhcyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGBgdHpuYW1lKGR0KWBgIG1ldGhvZC4gIE90aGVyd2lzZSwKLSAgYGB0em5hbWUoZHQpYGAgcmV0dXJucyBhIHN0cmluZyAnVVRDc0hIOk1NJywgd2hlcmUgcyBpcyB0aGUgc2lnbiBvZgotICAqb2Zmc2V0KiwgSEggYW5kIE1NIGFyZSB0d28gZGlnaXRzIG9mIGBgb2Zmc2V0LmhvdXJzYGAgYW5kCi0gIGBgb2Zmc2V0Lm1pbnV0ZXNgYCByZXNwZWN0aXZlbHkuCisgIHdpbGwgYmUgdXNlZCBhcyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIDptZXRoOmBkYXRldGltZS50em5hbWVgIG1ldGhvZC4KIAogICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTc1NywxMSArMTg5OSwxOSBAQAogCiAuLiBtZXRob2Q6OiB0aW1lem9uZS50em5hbWUoZHQpCiAKLSAgUmV0dXJuIHRoZSBmaXhlZCB2YWx1ZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmB0aW1lem9uZWAgaW5zdGFuY2UgaXMKLSAgY29uc3RydWN0ZWQgb3IgYSBzdHJpbmcgJ1VUQ3NISDpNTScsIHdoZXJlIHMgaXMgdGhlIHNpZ24gb2YKLSAgKm9mZnNldCosIEhIIGFuZCBNTSBhcmUgdHdvIGRpZ2l0cyBvZiBgYG9mZnNldC5ob3Vyc2BgIGFuZAorICBSZXR1cm4gdGhlIGZpeGVkIHZhbHVlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YHRpbWV6b25lYCBpbnN0YW5jZQorICBpcyBjb25zdHJ1Y3RlZC4gIElmICpuYW1lKiBpcyBub3QgcHJvdmlkZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCB0aGUKKyAgbmFtZSByZXR1cm5lZCBieSBgYHR6bmFtZShkdClgYCBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgdmFsdWUgb2YgdGhlCisgIGBgb2Zmc2V0YGAgYXMgZm9sbG93cy4gIElmICpvZmZzZXQqIGlzIGBgdGltZWRlbHRhKDApYGAsIHRoZSBuYW1lCisgIGlzICJVVEMiLCBvdGhlcndpc2UgaXQgaXMgYSBzdHJpbmcgJ1VUQ8KxSEg6TU0nLCB3aGVyZSDCsSBpcyB0aGUgc2lnbgorICBvZiBgYG9mZnNldGBgLCBISCBhbmQgTU0gYXJlIHR3byBkaWdpdHMgb2YgYGBvZmZzZXQuaG91cnNgYCBhbmQKICAgYGBvZmZzZXQubWludXRlc2BgIHJlc3BlY3RpdmVseS4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICBOYW1lIGdlbmVyYXRlZCBmcm9tIGBgb2Zmc2V0PXRpbWVkZWx0YSgwKWBgIGlzIG5vdyBwbGFpbiAnVVRDJywgbm90CisgICAgICdVVEMrMDA6MDAnLgorCisKIC4uIG1ldGhvZDo6IHRpbWV6b25lLmRzdChkdCkKIAogICBBbHdheXMgcmV0dXJucyBgYE5vbmVgYC4KQEAgLTE5MTEsNiArMjA2MSwzNCBAQAogfCBgYCUlYGAgICAgfCBBIGxpdGVyYWwgYGAnJSdgYCBjaGFyYWN0ZXIuICAgfCAlICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwogCitTZXZlcmFsIGFkZGl0aW9uYWwgZGlyZWN0aXZlcyBub3QgcmVxdWlyZWQgYnkgdGhlIEM4OSBzdGFuZGFyZCBhcmUgaW5jbHVkZWQgZm9yCitjb252ZW5pZW5jZS4gVGhlc2UgcGFyYW1ldGVycyBhbGwgY29ycmVzcG9uZCB0byBJU08gODYwMSBkYXRlIHZhbHVlcy4gVGhlc2UKK21heSBub3QgYmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgd2hlbiB1c2VkIHdpdGggdGhlIDptZXRoOmBzdHJmdGltZWAKK21ldGhvZC4gVGhlIElTTyA4NjAxIHllYXIgYW5kIElTTyA4NjAxIHdlZWsgZGlyZWN0aXZlcyBhcmUgbm90IGludGVyY2hhbmdlYWJsZQord2l0aCB0aGUgeWVhciBhbmQgd2VlayBudW1iZXIgZGlyZWN0aXZlcyBhYm92ZS4gQ2FsbGluZyA6bWV0aDpgc3RycHRpbWVgIHdpdGgKK2luY29tcGxldGUgb3IgYW1iaWd1b3VzIElTTyA4NjAxIGRpcmVjdGl2ZXMgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorCisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IERpcmVjdGl2ZSB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICB8IEV4YW1wbGUgICAgICAgICAgICAgICAgfCBOb3RlcyB8CisrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJUdgYCAgICB8IElTTyA4NjAxIHllYXIgd2l0aCBjZW50dXJ5ICAgICB8IDAwMDEsIDAwMDIsIC4uLiwgMjAxMywgfCBcKDgpICB8Cit8ICAgICAgICAgICB8IHJlcHJlc2VudGluZyB0aGUgeWVhciB0aGF0ICAgICB8IDIwMTQsIC4uLiwgOTk5OCwgOTk5OSAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IGNvbnRhaW5zIHRoZSBncmVhdGVyIHBhcnQgb2YgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IHRoZSBJU08gd2VlayAoYGAlVmBgKS4gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJXVgYCAgICB8IElTTyA4NjAxIHdlZWtkYXkgYXMgYSBkZWNpbWFsICB8IDEsIDIsIC4uLiwgNyAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IG51bWJlciB3aGVyZSAxIGlzIE1vbmRheS4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJVZgYCAgICB8IElTTyA4NjAxIHdlZWsgYXMgYSBkZWNpbWFsICAgICB8IDAxLCAwMiwgLi4uLCA1MyAgICAgICAgfCBcKDgpICB8Cit8ICAgICAgICAgICB8IG51bWJlciB3aXRoIE1vbmRheSBhcyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IFdlZWsgMDEgaXMgdGhlIHdlZWsgY29udGFpbmluZyB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Cit8ICAgICAgICAgICB8IEphbiA0LiAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgYGAlR2BgLCBgYCV1YGAgYW5kIGBgJVZgYCB3ZXJlIGFkZGVkLgorCiBOb3RlczoKIAogKDEpCkBAIC0xOTc1LDcgKzIxNTMsMTQgQEAKIAogKDcpCiAgICBXaGVuIHVzZWQgd2l0aCB0aGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QsIGBgJVVgYCBhbmQgYGAlV2BgIGFyZSBvbmx5IHVzZWQKLSAgIGluIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSB5ZWFyIGFyZSBzcGVjaWZpZWQuCisgICBpbiBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgY2FsZW5kYXIgeWVhciAoYGAlWWBgKQorICAgYXJlIHNwZWNpZmllZC4KKworKDgpCisgICBTaW1pbGFyIHRvIGBgJVVgYCBhbmQgYGAlV2BgLCBgYCVWYGAgaXMgb25seSB1c2VkIGluIGNhbGN1bGF0aW9ucyB3aGVuIHRoZQorICAgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgSVNPIHllYXIgKGBgJUdgYCkgYXJlIHNwZWNpZmllZCBpbiBhCisgICA6bWV0aDpgc3RycHRpbWVgIGZvcm1hdCBzdHJpbmcuIEFsc28gbm90ZSB0aGF0IGBgJUdgYCBhbmQgYGAlWWBgIGFyZSBub3QKKyAgIGludGVyY2hhbmdlYWJsZS4KIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RibS5yc3QgYi9Eb2MvbGlicmFyeS9kYm0ucnN0CmluZGV4IDJhMWRiOTEuLjMyZTgwYjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RibS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGJtLnJzdApAQCAtMzUxLDYgKzM1MSwxMCBAQAogICAgICAgOmZ1bmM6YC5vcGVuYCBhbHdheXMgY3JlYXRlcyBhIG5ldyBkYXRhYmFzZSB3aGVuIHRoZSBmbGFnIGhhcyB0aGUgdmFsdWUKICAgICAgIGBgJ24nYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNiAzLjgKKyAgICAgIENyZWF0aW5nIGRhdGFiYXNlIGluIGBgJ3InYGAgYW5kIGBgJ3cnYGAgbW9kZXMuICBNb2RpZnlpbmcgZGF0YWJhc2UgaW4KKyAgICAgIGBgJ3InYGAgbW9kZS4KKwogICAgSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgcHJvdmlkZWQgYnkgdGhlCiAgICA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AgY2xhc3MsIDpjbGFzczpgZHVtYmRibWAgb2JqZWN0cwogICAgcHJvdmlkZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdCBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CmluZGV4IGI1Y2UwYjEuLmU5ODRlZGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0CkBAIC0zNDUsNyArMzQ1LDcgQEAKICAgICp2YWx1ZSogY2FuIGJlIGFuIGludGVnZXIsIHN0cmluZywgdHVwbGUsIDpjbGFzczpgZmxvYXRgLCBvciBhbm90aGVyIDpjbGFzczpgRGVjaW1hbGAKICAgIG9iamVjdC4gSWYgbm8gKnZhbHVlKiBpcyBnaXZlbiwgcmV0dXJucyBgYERlY2ltYWwoJzAnKWBgLiAgSWYgKnZhbHVlKiBpcyBhCiAgICBzdHJpbmcsIGl0IHNob3VsZCBjb25mb3JtIHRvIHRoZSBkZWNpbWFsIG51bWVyaWMgc3RyaW5nIHN5bnRheCBhZnRlciBsZWFkaW5nCi0gICBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFyZSByZW1vdmVkOjoKKyAgIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMsIGFzIHdlbGwgYXMgdW5kZXJzY29yZXMgdGhyb3VnaG91dCwgYXJlIHJlbW92ZWQ6OgogCiAgICAgICBzaWduICAgICAgICAgICA6Oj0gICcrJyB8ICctJwogICAgICAgZGlnaXQgICAgICAgICAgOjo9ICAnMCcgfCAnMScgfCAnMicgfCAnMycgfCAnNCcgfCAnNScgfCAnNicgfCAnNycgfCAnOCcgfCAnOScKQEAgLTM5NCw2ICszOTQsMTAgQEAKICAgICAgIDpjbGFzczpgZmxvYXRgIGFyZ3VtZW50cyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYAogICAgICAgdHJhcCBpcyBzZXQuIEJ5IGRlZmF1bHQgdGhlIHRyYXAgaXMgb2ZmLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVW5kZXJzY29yZXMgYXJlIGFsbG93ZWQgZm9yIGdyb3VwaW5nLCBhcyB3aXRoIGludGVncmFsIGFuZCBmbG9hdGluZy1wb2ludAorICAgICAgbGl0ZXJhbHMgaW4gY29kZS4KKwogICAgRGVjaW1hbCBmbG9hdGluZyBwb2ludCBvYmplY3RzIHNoYXJlIG1hbnkgcHJvcGVydGllcyB3aXRoIHRoZSBvdGhlciBidWlsdC1pbgogICAgbnVtZXJpYyB0eXBlcyBzdWNoIGFzIDpjbGFzczpgZmxvYXRgIGFuZCA6Y2xhc3M6YGludGAuICBBbGwgb2YgdGhlIHVzdWFsIG1hdGgKICAgIG9wZXJhdGlvbnMgYW5kIHNwZWNpYWwgbWV0aG9kcyBhcHBseS4gIExpa2V3aXNlLCBkZWNpbWFsIG9iamVjdHMgY2FuIGJlCkBAIC00NDcsNiArNDUxLDE5IEBACiAgICAgICBgYERlY2ltYWwoJzMyMWUrNScpLmFkanVzdGVkKClgYCByZXR1cm5zIHNldmVuLiAgVXNlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlCiAgICAgICBwb3NpdGlvbiBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCB3aXRoIHJlc3BlY3QgdG8gdGhlIGRlY2ltYWwgcG9pbnQuCiAKKyAgIC4uIG1ldGhvZDo6IGFzX2ludGVnZXJfcmF0aW8oKQorCisgICAgICBSZXR1cm4gYSBwYWlyIGBgKG4sIGQpYGAgb2YgaW50ZWdlcnMgdGhhdCByZXByZXNlbnQgdGhlIGdpdmVuCisgICAgICA6Y2xhc3M6YERlY2ltYWxgIGluc3RhbmNlIGFzIGEgZnJhY3Rpb24sIGluIGxvd2VzdCB0ZXJtcyBhbmQKKyAgICAgIHdpdGggYSBwb3NpdGl2ZSBkZW5vbWluYXRvcjo6CisKKyAgICAgICAgICA+Pj4gRGVjaW1hbCgnLTMuMTQnKS5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgICAoLTE1NywgNTApCisKKyAgICAgIFRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAgUmFpc2UgT3ZlcmZsb3dFcnJvciBvbiBpbmZpbml0aWVzIGFuZCBWYWx1ZUVycm9yCisgICAgICBvbiBOYU5zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogICAgLi4gbWV0aG9kOjogYXNfdHVwbGUoKQogCkBAIC0xMDYyLDggKzEwNzksOCBAQAogICAgICAgICAgRGVjaW1hbCgnNC40NCcpCiAKICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlIElCTSBzcGVjaWZpY2F0aW9uLgotICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgc3RyaW5nLCBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2UgaXMKLSAgICAgIHBlcm1pdHRlZC4KKyAgICAgIElmIHRoZSBhcmd1bWVudCBpcyBhIHN0cmluZywgbm8gbGVhZGluZyBvciB0cmFpbGluZyB3aGl0ZXNwYWNlIG9yCisgICAgICB1bmRlcnNjb3JlcyBhcmUgcGVybWl0dGVkLgogCiAgICAuLiBtZXRob2Q6OiBjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KGYpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QgYi9Eb2MvbGlicmFyeS9kaXMucnN0CmluZGV4IGY4NjcyNWIuLmExNTY5MGIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzLnJzdApAQCAtMzEsOSArMzEsOSBAQAogCiAgICA+Pj4gZGlzLmRpcyhteWZ1bmMpCiAgICAgIDIgICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKGxlbikKLSAgICAgICAgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYWxpc3QpCi0gICAgICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKLSAgICAgICAgICAgICAgICAgOSBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgICAgMiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYWxpc3QpCisgICAgICAgICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKIAogKFRoZSAiMiIgaXMgYSBsaW5lIG51bWJlcikuCiAKQEAgLTYwNyw2ICs2MDcsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIG9wY29kZTo6IFNFVFVQX0FOTk9UQVRJT05TCisKKyAgIENoZWNrcyB3aGV0aGVyIGBgX19hbm5vdGF0aW9uc19fYGAgaXMgZGVmaW5lZCBpbiBgYGxvY2FscygpYGAsIGlmIG5vdCBpdCBpcworICAgc2V0IHVwIHRvIGFuIGVtcHR5IGBgZGljdGBgLiBUaGlzIG9wY29kZSBpcyBvbmx5IGVtaXR0ZWQgaWYgYSBjbGFzcworICAgb3IgbW9kdWxlIGJvZHkgY29udGFpbnMgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAKKyAgIHN0YXRpY2FsbHkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBvcGNvZGU6OiBJTVBPUlRfU1RBUgogCkBAIC02ODIsOCArNjkwLDcgQEAKICAgIC4uIFhYWCBleHBsYWluIHRoZSBXSFkgc3R1ZmYhCiAKIAotQWxsIG9mIHRoZSBmb2xsb3dpbmcgb3Bjb2RlcyBleHBlY3QgYXJndW1lbnRzLiAgQW4gYXJndW1lbnQgaXMgdHdvIGJ5dGVzLCB3aXRoCi10aGUgbW9yZSBzaWduaWZpY2FudCBieXRlIGxhc3QuCitBbGwgb2YgdGhlIGZvbGxvd2luZyBvcGNvZGVzIHVzZSB0aGVpciBhcmd1bWVudHMuCiAKIC4uIG9wY29kZTo6IFNUT1JFX05BTUUgKG5hbWVpKQogCkBAIC03NjksNiArNzc2LDIzIEBACiAgICB0byBob2xkICpjb3VudCogZW50cmllcy4KIAogCisuLiBvcGNvZGU6OiBCVUlMRF9DT05TVF9LRVlfTUFQIChjb3VudCkKKworICAgVGhlIHZlcnNpb24gb2YgOm9wY29kZTpgQlVJTERfTUFQYCBzcGVjaWFsaXplZCBmb3IgY29uc3RhbnQga2V5cy4gICpjb3VudCoKKyAgIHZhbHVlcyBhcmUgY29uc3VtZWQgZnJvbSB0aGUgc3RhY2suICBUaGUgdG9wIGVsZW1lbnQgb24gdGhlIHN0YWNrIGNvbnRhaW5zCisgICBhIHR1cGxlIG9mIGtleXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIG9wY29kZTo6IEJVSUxEX1NUUklORyAoY291bnQpCisKKyAgIENvbmNhdGVuYXRlcyAqY291bnQqIHN0cmluZ3MgZnJvbSB0aGUgc3RhY2sgYW5kIHB1c2hlcyB0aGUgcmVzdWx0aW5nIHN0cmluZworICAgb250byB0aGUgc3RhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IExPQURfQVRUUiAobmFtZWkpCiAKICAgIFJlcGxhY2VzIFRPUyB3aXRoIGBgZ2V0YXR0cihUT1MsIGNvX25hbWVzW25hbWVpXSlgYC4KQEAgLTg3NCw2ICs4OTgsMTMgQEAKICAgIERlbGV0ZXMgbG9jYWwgYGBjb192YXJuYW1lc1t2YXJfbnVtXWBgLgogCiAKKy4uIG9wY29kZTo6IFNUT1JFX0FOTk9UQVRJT04gKG5hbWVpKQorCisgICBTdG9yZXMgVE9TIGFzIGBgbG9jYWxzKClbJ19fYW5ub3RhdGlvbnNfXyddW2NvX25hbWVzW25hbWVpXV0gPSBUT1NgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gb3Bjb2RlOjogTE9BRF9DTE9TVVJFIChpKQogCiAgICBQdXNoZXMgYSByZWZlcmVuY2UgdG8gdGhlIGNlbGwgY29udGFpbmVkIGluIHNsb3QgKmkqIG9mIHRoZSBjZWxsIGFuZCBmcmVlCkBAIC05MjksMjcgKzk2MCwxNiBAQAogLi4gb3Bjb2RlOjogTUFLRV9GVU5DVElPTiAoYXJnYykKIAogICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBGcm9tIGJvdHRvbSB0byB0b3AsIHRoZSBjb25zdW1lZAotICAgc3RhY2sgbXVzdCBjb25zaXN0IG9mCisgICBzdGFjayBtdXN0IGNvbnNpc3Qgb2YgdmFsdWVzIGlmIHRoZSBhcmd1bWVudCBjYXJyaWVzIGEgc3BlY2lmaWVkIGZsYWcgdmFsdWUKIAotICAgKiBgYGFyZ2MgJiAweEZGYGAgZGVmYXVsdCBhcmd1bWVudCBvYmplY3RzIGluIHBvc2l0aW9uYWwgb3JkZXIKLSAgICogYGAoYXJnYyA+PiA4KSAmIDB4RkZgYCBwYWlycyBvZiBuYW1lIGFuZCBkZWZhdWx0IGFyZ3VtZW50LCB3aXRoIHRoZSBuYW1lCi0gICAgIGp1c3QgYmVsb3cgdGhlIG9iamVjdCBvbiB0aGUgc3RhY2ssIGZvciBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycwotICAgKiBgYChhcmdjID4+IDE2KSAmIDB4N0ZGRmBgIHBhcmFtZXRlciBhbm5vdGF0aW9uIG9iamVjdHMKLSAgICogYSB0dXBsZSBsaXN0aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZXMgZm9yIHRoZSBhbm5vdGF0aW9ucyAob25seSBpZiB0aGVyZSBhcmUKLSAgICAgb255IGFubm90YXRpb24gb2JqZWN0cykKKyAgICogYGAweDAxYGAgYSB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IG9iamVjdHMgaW4gcG9zaXRpb25hbCBvcmRlcgorICAgKiBgYDB4MDJgYCBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMnIGRlZmF1bHQgdmFsdWVzCisgICAqIGBgMHgwNGBgIGFuIGFubm90YXRpb24gZGljdGlvbmFyeQorICAgKiBgYDB4MDhgYCBhIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yIGZyZWUgdmFyaWFibGVzLCBtYWtpbmcgYSBjbG9zdXJlCiAgICAqIHRoZSBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24gKGF0IFRPUzEpCiAgICAqIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiAoYXQgVE9TKQogCiAKLS4uIG9wY29kZTo6IE1BS0VfQ0xPU1VSRSAoYXJnYykKLQotICAgQ3JlYXRlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3QsIHNldHMgaXRzICpfX2Nsb3N1cmVfXyogc2xvdCwgYW5kIHB1c2hlcyBpdCBvbgotICAgdGhlIHN0YWNrLiAgVE9TIGlzIHRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBmdW5jdGlvbiwgVE9TMSBpcyB0aGUKLSAgIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiwgYW5kIFRPUzIgaXMgdGhlIHR1cGxlIGNvbnRhaW5pbmcgY2VsbHMgZm9yCi0gICB0aGUgY2xvc3VyZSdzIGZyZWUgdmFyaWFibGVzLiAgKmFyZ2MqIGlzIGludGVycHJldGVkIGFzIGluIGBgTUFLRV9GVU5DVElPTmBgOwotICAgdGhlIGFubm90YXRpb25zIGFuZCBkZWZhdWx0cyBhcmUgYWxzbyBpbiB0aGUgc2FtZSBvcmRlciBiZWxvdyBUT1MyLgotCi0KIC4uIG9wY29kZTo6IEJVSUxEX1NMSUNFIChhcmdjKQogCiAgICAuLiBpbmRleDo6IGJ1aWx0aW46IHNsaWNlCkBAIC05ODksNiArMTAwOSwyOCBAQAogICAgYXJndW1lbnRzLgogCiAKKy4uIG9wY29kZTo6IEZPUk1BVF9WQUxVRSAoZmxhZ3MpCisKKyAgIFVzZWQgZm9yIGltcGxlbWVudGluZyBmb3JtYXR0ZWQgbGl0ZXJhbCBzdHJpbmdzIChmLXN0cmluZ3MpLiAgUG9wcworICAgYW4gb3B0aW9uYWwgKmZtdF9zcGVjKiBmcm9tIHRoZSBzdGFjaywgdGhlbiBhIHJlcXVpcmVkICp2YWx1ZSouCisgICAqZmxhZ3MqIGlzIGludGVycHJldGVkIGFzIGZvbGxvd3M6CisKKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAwYGA6ICp2YWx1ZSogaXMgZm9ybWF0dGVkIGFzLWlzLgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDFgYDogY2FsbCA6ZnVuYzpgc3RyYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDJgYDogY2FsbCA6ZnVuYzpgcmVwcmAgb24gKnZhbHVlKiBiZWZvcmUKKyAgICAgZm9ybWF0dGluZyBpdC4KKyAgICogYGAoZmxhZ3MgJiAweDAzKSA9PSAweDAzYGA6IGNhbGwgOmZ1bmM6YGFzY2lpYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDQpID09IDB4MDRgYDogcG9wICpmbXRfc3BlYyogZnJvbSB0aGUgc3RhY2sgYW5kIHVzZQorICAgICBpdCwgZWxzZSB1c2UgYW4gZW1wdHkgKmZtdF9zcGVjKi4KKworICAgRm9ybWF0dGluZyBpcyBwZXJmb3JtZWQgdXNpbmcgOmM6ZnVuYzpgUHlPYmplY3RfRm9ybWF0YC4gIFRoZQorICAgcmVzdWx0IGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG9wY29kZTo6IEhBVkVfQVJHVU1FTlQKIAogICAgVGhpcyBpcyBub3QgcmVhbGx5IGFuIG9wY29kZS4gIEl0IGlkZW50aWZpZXMgdGhlIGRpdmlkaW5nIGxpbmUgYmV0d2VlbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDkzYjVjLi4wMDAwMDAwCi0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLWV4YW1wbGVzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS4uIF9lbWFpbC1leGFtcGxlczoKLQotOm1vZDpgZW1haWxgOiBFeGFtcGxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1IZXJlIGFyZSBhIGZldyBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB0byByZWFkLCB3cml0ZSwKLWFuZCBzZW5kIHNpbXBsZSBlbWFpbCBtZXNzYWdlcywgYXMgd2VsbCBhcyBtb3JlIGNvbXBsZXggTUlNRSBtZXNzYWdlcy4KLQotRmlyc3QsIGxldCdzIHNlZSBob3cgdG8gY3JlYXRlIGFuZCBzZW5kIGEgc2ltcGxlIHRleHQgbWVzc2FnZToKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKLQotCi1BbmQgcGFyc2luZyBSRkM4MjIgaGVhZGVycyBjYW4gZWFzaWx5IGJlIGRvbmUgYnkgdGhlIHBhcnNlKGZpbGVuYW1lKSBvcgotcGFyc2VzdHIobWVzc2FnZV9hc19zdHJpbmcpIG1ldGhvZHMgb2YgdGhlIFBhcnNlcigpIGNsYXNzOgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWhlYWRlcnMucHkKLQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCBhIE1JTUUgbWVzc2FnZSBjb250YWluaW5nIGEgYnVuY2ggb2YgZmFtaWx5Ci1waWN0dXJlcyB0aGF0IG1heSBiZSByZXNpZGluZyBpbiBhIGRpcmVjdG9yeToKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1taW1lLnB5Ci0KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgdGhlIGVudGlyZSBjb250ZW50cyBvZiBhIGRpcmVjdG9yeSBhcyBhbiBlbWFpbAotbWVzc2FnZTogWzFdXwotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWRpci5weQotCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byB1bnBhY2sgYSBNSU1FIG1lc3NhZ2UgbGlrZSB0aGUgb25lCi1hYm92ZSwgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlczoKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBhbiBIVE1MIG1lc3NhZ2Ugd2l0aCBhbiBhbHRlcm5hdGl2ZSBwbGFpbgotdGV4dCB2ZXJzaW9uOiBbMl1fCi0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKLQotCi0uLiBfZW1haWwtY29udGVudG1hbmFnZXItYXBpLWV4YW1wbGVzOgotCi1FeGFtcGxlcyB1c2luZyB0aGUgUHJvdmlzaW9uYWwgQVBJCi1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1IZXJlIGlzIGEgcmV3b3JraW5nIG9mIHRoZSBsYXN0IGV4YW1wbGUgdXNpbmcgdGhlIHByb3Zpc2lvbmFsIEFQSS4gIFRvIG1ha2UKLXRoaW5ncyBhIGJpdCBtb3JlIGludGVyZXN0aW5nLCB3ZSBpbmNsdWRlIGEgcmVsYXRlZCBpbWFnZSBpbiB0aGUgaHRtbCBwYXJ0LCBhbmQKLXdlIHNhdmUgYSBjb3B5IG9mIHdoYXQgd2UgYXJlIGdvaW5nIHRvIHNlbmQgdG8gZGlzaywgYXMgd2VsbCBhcyBzZW5kaW5nIGl0LgotCi1UaGlzIGV4YW1wbGUgYWxzbyBzaG93cyBob3cgZWFzeSBpdCBpcyB0byBpbmNsdWRlIG5vbi1BU0NJSSwgYW5kIHNpbXBsaWZpZXMgdGhlCi1zZW5kaW5nIG9mIHRoZSBtZXNzYWdlIHVzaW5nIHRoZSA6bWV0aDpgLnNlbmRfbWVzc2FnZWAgbWV0aG9kIG9mIHRoZQotOm1vZDpgc210cGxpYmAgbW9kdWxlLgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKLQotSWYgd2Ugd2VyZSBpbnN0ZWFkIHNlbnQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgbGFzdCBleGFtcGxlLCBoZXJlIGlzIG9uZQotd2F5IHdlIGNvdWxkIHByb2Nlc3MgaXQ6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5Ci0KLVVwIHRvIHRoZSBwcm9tcHQsIHRoZSBvdXRwdXQgZnJvbSB0aGUgYWJvdmUgaXM6Ci0KLS4uIGNvZGUtYmxvY2s6OiBub25lCi0KLSAgICBUbzogUGVuZWxvcGUgUHVzc3ljYXQgPHBlbmVsb3BlQGV4YW1wbGUuY29tPiwgRmFicmV0dGUgUHVzc3ljYXQgPGZhYnJldHRlQGV4YW1wbGUuY29tPgotICAgIEZyb206IFBlcMOpIExlIFBldyA8cGVwZUBleGFtcGxlLmNvbT4KLSAgICBTdWJqZWN0OiBBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lcgotCi0gICAgU2FsdXQhCi0KLSAgICBDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCi0KLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsxXSBUaGFua3MgdG8gTWF0dGhldyBEaXhvbiBDb3dsZXMgZm9yIHRoZSBvcmlnaW5hbCBpbnNwaXJhdGlvbiBhbmQgZXhhbXBsZXMuCi0uLiBbMl0gQ29udHJpYnV0ZWQgYnkgTWFydGluIE1hdGVqZWsuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jaGFyc2V0LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CmluZGV4IDE2MWQ4NmEuLjA1MzQ2M2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0CkBAIC04LDYgKzgsMTEgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEluIHRoZSBuZXcKK0FQSSBvbmx5IHRoZSBhbGlhc2VzIHRhYmxlIGlzIHVzZWQuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyA6Y2xhc3M6YENoYXJzZXRgIGZvciByZXByZXNlbnRpbmcgY2hhcmFjdGVyIHNldHMKIGFuZCBjaGFyYWN0ZXIgc2V0IGNvbnZlcnNpb25zIGluIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIGEgY2hhcmFjdGVyIHNldAogcmVnaXN0cnkgYW5kIHNldmVyYWwgY29udmVuaWVuY2UgbWV0aG9kcyBmb3IgbWFuaXB1bGF0aW5nIHRoaXMgcmVnaXN0cnkuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNjUwNzkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb21wYXQzMi1tZXNzYWdlLnJzdApAQCAtMCwwICsxLDc1NCBAQAorLi4gX2NvbXBhdDMyX21lc3NhZ2U6CisKKzptb2Q6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWA6IFJlcHJlc2VudGluZyBhbiBlbWFpbCBtZXNzYWdlIHVzaW5nIHRoZSA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtb2R1bGU6OiBlbWFpbC5tZXNzYWdlCisgICA6c3lub3BzaXM6IFRoZSBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBlbWFpbCBtZXNzYWdlcyBpbiBhIGZhc2hpb24KKyAgICAgICAgICAgICAgYmFja3dhcmQgY29tcGF0aWJsZSB3aXRoIHB5dGhvbjMuMgorCisKK1RoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzIGlzIHZlcnkgc2ltaWxhciB0byB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcywgd2l0aG91dCB0aGUgbWV0aG9kcyBhZGRlZCBieSB0aGF0CitjbGFzcywgYW5kIHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgY2VydGFpbiBvdGhlciBtZXRob2RzIGJlaW5nIHNsaWdodGx5CitkaWZmZXJlbnQuICBXZSBhbHNvIGRvY3VtZW50IGhlcmUgc29tZSBtZXRob2RzIHRoYXQsIHdoaWxlIHN1cHBvcnRlZCBieSB0aGUKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcywgYXJlIG5vdCByZWNvbW1lbmRlZCB1bmxlc3MgeW91IGFyZQorZGVhbGluZyB3aXRoIGxlZ2FjeSBjb2RlLgorCitUaGUgcGhpbG9zb3BoeSBhbmQgc3RydWN0dXJlIG9mIHRoZSB0d28gY2xhc3NlcyBpcyBvdGhlcndpc2UgdGhlIHNhbWUuCisKK1RoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSBiZWhhdmlvciB1bmRlciB0aGUgZGVmYXVsdCAoZm9yIDpjbGFzczpgTWVzc2FnZWApCitwb2xpY3kgOmF0dHI6YH5lbWFpbC5wb2xpY3kuQ29tcGF0MzJgLiAgSWYgeW91IGFyZSBnb2luZyB0byB1c2UgYW5vdGhlciBwb2xpY3ksCit5b3Ugc2hvdWxkIGJlIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaW5zdGVhZC4KKworQW4gZW1haWwgbWVzc2FnZSBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kIGEgKnBheWxvYWQqLiAgSGVhZGVycyBtdXN0IGJlCis6cmZjOmA1MjMzYCBzdHlsZSBuYW1lcyBhbmQgdmFsdWVzLCB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQgdmFsdWUgYXJlCitzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBjb2xvbiBpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUgb3IgdGhlCitmaWVsZCB2YWx1ZS4gIFRoZSBwYXlsb2FkIG1heSBiZSBhIHNpbXBsZSB0ZXh0IG1lc3NhZ2UsIG9yIGEgYmluYXJ5IG9iamVjdCwgb3IKK2Egc3RydWN0dXJlZCBzZXF1ZW5jZSBvZiBzdWItbWVzc2FnZXMgZWFjaCB3aXRoIHRoZWlyIG93biBzZXQgb2YgaGVhZGVycyBhbmQKK3RoZWlyIG93biBwYXlsb2FkLiAgVGhlIGxhdHRlciB0eXBlIG9mIHBheWxvYWQgaXMgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlCitoYXZpbmcgYSBNSU1FIHR5cGUgc3VjaCBhcyA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgb3IKKzptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLgorCitUaGUgY29uY2VwdHVhbCBtb2RlbCBwcm92aWRlZCBieSBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0IGlzIHRoYXQgb2YgYW4KK29yZGVyZWQgZGljdGlvbmFyeSBvZiBoZWFkZXJzIHdpdGggYWRkaXRpb25hbCBtZXRob2RzIGZvciBhY2Nlc3NpbmcgYm90aAorc3BlY2lhbGl6ZWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgaGVhZGVycywgZm9yIGFjY2Vzc2luZyB0aGUgcGF5bG9hZCwgZm9yCitnZW5lcmF0aW5nIGEgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBtc3NhZ2UsIGFuZCBmb3IgcmVjdXJzaXZlbHkgd2Fsa2luZyBvdmVyCit0aGUgb2JqZWN0IHRyZWUuICBOb3RlIHRoYXQgZHVwbGljYXRlIGhlYWRlcnMgYXJlIHN1cHBvcnRlZCBidXQgc3BlY2lhbCBtZXRob2RzCittdXN0IGJlIHVzZWQgdG8gYWNjZXNzIHRoZW0uCisKK1RoZSA6Y2xhc3M6YE1lc3NhZ2VgIHBzdWVkby1kaWN0aW9uYXJ5IGlzIGluZGV4ZWQgYnkgdGhlIGhlYWRlciBuYW1lcywgd2hpY2gKK211c3QgYmUgQVNDSUkgdmFsdWVzLiAgVGhlIHZhbHVlcyBvZiB0aGUgZGljdGlvbmFyeSBhcmUgc3RyaW5ncyB0aGF0IGFyZQorc3VwcG9zZWQgdG8gY29udGFpbiBvbmx5IEFTQ0lJIGNoYXJhY3RlcnM7IHRoZXJlIGlzIHNvbWUgc3BlY2lhbCBoYW5kbGluZyBmb3IKK25vbi1BU0NJSSBpbnB1dCwgYnV0IGl0IGRvZXNuJ3QgYWx3YXlzIHByb2R1Y2UgdGhlIGNvcnJlY3QgcmVzdWx0cy4gIEhlYWRlcnMKK2FyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZyBmb3JtLCBidXQgZmllbGQgbmFtZXMgYXJlIG1hdGNoZWQKK2Nhc2UtaW5zZW5zaXRpdmVseS4gIFRoZXJlIG1heSBhbHNvIGJlIGEgc2luZ2xlIGVudmVsb3BlIGhlYWRlciwgYWxzbyBrbm93biBhcwordGhlICpVbml4LUZyb20qIGhlYWRlciBvciB0aGUgYGBGcm9tX2BgIGhlYWRlci4gIFRoZSAqcGF5bG9hZCogaXMgZWl0aGVyIGEKK3N0cmluZyBvciBieXRlcywgaW4gdGhlIGNhc2Ugb2Ygc2ltcGxlIG1lc3NhZ2Ugb2JqZWN0cywgb3IgYSBsaXN0IG9mCis6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMsIGZvciBNSU1FIGNvbnRhaW5lciBkb2N1bWVudHMgKGUuZy4KKzptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApLgorCitIZXJlIGFyZSB0aGUgbWV0aG9kcyBvZiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzczoKKworCisuLiBjbGFzczo6IE1lc3NhZ2UocG9saWN5PWNvbXBhdDMyKQorCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAorICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSBhbmQgc2VyaWFsaXplIHRoZSByZXByZXNlbnRhdGlvbgorICAgb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKKyAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKKyAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBUaGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisKKworICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbCAqdW5peGZyb20qCisgICAgICBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZCBzdHJpbmcuCisgICAgICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIEZvciBiYWNrd2FyZCBjb21wYWJpdGlsaXR5IHJlYXNvbnMsCisgICAgICAqbWF4aGVhZGVybGVuKiBkZWZhdWx0cyB0byBgYDBgYCwgc28gaWYgeW91IHdhbnQgYSBkaWZmZXJlbnQgdmFsdWUgeW91CisgICAgICBtdXN0IG92ZXJyaWRlIGl0IGV4cGxpY2l0bHkgKHRoZSB2YWx1ZSBzcGVjaWZpZWQgZm9yICptYXhfbGluZV9sZW5ndGgqIGluCisgICAgICB0aGUgcG9saWN5IHdpbGwgYmUgaWdub3JlZCBieSB0aGlzIG1ldGhvZCkuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgorICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCisgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBgR2VuZXJhdG9yYGAuCisKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgorICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCisgICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCisgICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKKyAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvcgorICAgICAgICAgZnAgPSBTdHJpbmdJTygpCisgICAgICAgICBnID0gR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQorICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIG9iamVjdCBjb250YWlucyBiaW5hcnkgZGF0YSB0aGF0IGlzIG5vdCBlbmNvZGVkIGFjY29yZGluZworICAgICAgdG8gUkZDIHN0YW5kYXJkcywgdGhlIG5vbi1jb21wbGlhbnQgZGF0YSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHVuaWNvZGUKKyAgICAgICJ1bmtub3duIGNoYXJhY3RlciIgY29kZSBwb2ludHMuICAoU2VlIGFsc28gOm1ldGg6YC5hc19ieXRlc2AgYW5kCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgLikKKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgdGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fc3RyX18oKQorCisgICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfc3RyaW5nKClgLiAgQWxsb3dzIGBgc3RyKG1zZylgYCB0byBwcm9kdWNlIGEKKyAgICAgIHN0cmluZyBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKworCisgICAuLiBtZXRob2Q6OiBhc19ieXRlcyh1bml4ZnJvbT1GYWxzZSwgcG9saWN5PU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgYnl0ZXMgb2JqZWN0LiAgV2hlbiBvcHRpb25hbAorICAgICAgKnVuaXhmcm9tKiBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZAorICAgICAgc3RyaW5nLiAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBUaGUgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlCisgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgorICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCisgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlCisgICAgICBgYEJ5dGVzR2VuZXJhdG9yYGAuCisKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgorICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCisgICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KKworICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCisgICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKKyAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKKyAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKKyAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4KKyAgICAgIEZvciBleGFtcGxlOjoKKworICAgICAgICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTworICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEJ5dGVzR2VuZXJhdG9yCisgICAgICAgICBmcCA9IEJ5dGVzSU8oKQorICAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQorICAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCisKKyAgIC4uIG1ldGhvZDo6IF9fYnl0ZXNfXygpCisKKyAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19ieXRlcygpYC4gIEFsbG93cyBgYGJ5dGVzKG1zZylgYCB0byBwcm9kdWNlIGEKKyAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKworICAgLi4gbWV0aG9kOjogaXNfbXVsdGlwYXJ0KCkKKworICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBhIGxpc3Qgb2Ygc3ViLVwKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgRmFsc2VgYCwgdGhlIHBheWxvYWQgc2hvdWxkIGJlIGEgc3RyaW5nCisgICAgICBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgQ1RFIGVuY29kZWQgYmluYXJ5IHBheWxvYWQuICAoTm90ZSB0aGF0CisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0CisgICAgICAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwgcmV0dXJuIHRoZSBgYFRydWVgYC4KKyAgICAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIHdoZW4gdGhlCisgICAgICA6Y2xhc3M6YE1lc3NhZ2VgIGlzIG9mIHR5cGUgYGBtZXNzYWdlL3JmYzgyMmBgLikKKworCisgICAuLiBtZXRob2Q6OiBzZXRfdW5peGZyb20odW5peGZyb20pCisKKyAgICAgIFNldCB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlciB0byAqdW5peGZyb20qLCB3aGljaCBzaG91bGQgYmUgYSBzdHJpbmcuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3VuaXhmcm9tKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyLiAgRGVmYXVsdHMgdG8gYGBOb25lYGAgaWYgdGhlCisgICAgICBlbnZlbG9wZSBoZWFkZXIgd2FzIG5ldmVyIHNldC4KKworCisgICAuLiBtZXRob2Q6OiBhdHRhY2gocGF5bG9hZCkKKworICAgICAgQWRkIHRoZSBnaXZlbiAqcGF5bG9hZCogdG8gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggbXVzdCBiZSBgYE5vbmVgYCBvcgorICAgICAgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBiZWZvcmUgdGhlIGNhbGwuIEFmdGVyIHRoZSBjYWxsLCB0aGUKKyAgICAgIHBheWxvYWQgd2lsbCBhbHdheXMgYmUgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cy4gIElmIHlvdSB3YW50IHRvCisgICAgICBzZXQgdGhlIHBheWxvYWQgdG8gYSBzY2FsYXIgb2JqZWN0IChlLmcuIGEgc3RyaW5nKSwgdXNlCisgICAgICA6bWV0aDpgc2V0X3BheWxvYWRgIGluc3RlYWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgYW5kIHRoZQorICAgICAgcmVhbHRlZCBgYG1ha2VgYCBhbmQgYGBhZGRgYCBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9wYXlsb2FkKGk9Tm9uZSwgZGVjb2RlPUZhbHNlKQorCisgICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBhIGxpc3Qgb2YKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgVHJ1ZWBgLCBvciBhCisgICAgICBzdHJpbmcgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGAuICBJZiB0aGUgcGF5bG9hZCBpcyBhIGxpc3QKKyAgICAgIGFuZCB5b3UgbXV0YXRlIHRoZSBsaXN0IG9iamVjdCwgeW91IG1vZGlmeSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gcGxhY2UuCisKKyAgICAgIFdpdGggb3B0aW9uYWwgYXJndW1lbnQgKmkqLCA6bWV0aDpgZ2V0X3BheWxvYWRgIHdpbGwgcmV0dXJuIHRoZSAqaSotdGgKKyAgICAgIGVsZW1lbnQgb2YgdGhlIHBheWxvYWQsIGNvdW50aW5nIGZyb20gemVybywgaWYgOm1ldGg6YGlzX211bHRpcGFydGAgaXMKKyAgICAgIGBgVHJ1ZWBgLiAgQW4gOmV4YzpgSW5kZXhFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIGxlc3MgdGhhbiAwIG9yCisgICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcGF5bG9hZC4gIElmIHRoZQorICAgICAgcGF5bG9hZCBpcyBhIHN0cmluZyAoaS5lLiAgOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgKSBhbmQgKmkqIGlzCisgICAgICBnaXZlbiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgICAgT3B0aW9uYWwgKmRlY29kZSogaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKKyAgICAgIGRlY29kZWQgb3Igbm90LCBhY2NvcmRpbmcgdG8gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgaGVhZGVyLiBXaGVuIGBgVHJ1ZWBgIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwKKyAgICAgIGJlIGRlY29kZWQgaWYgdGhpcyBoZWFkZXIncyB2YWx1ZSBpcyBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgLgorICAgICAgSWYgc29tZSBvdGhlciBlbmNvZGluZyBpcyB1c2VkLCBvciA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcworICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQorICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKKyAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKKyAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKKyAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCisgICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCisKKyAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKKyAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCisgICAgICBmb3IgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlCisgICAgICB0byBkZWNvZGUgdGhlIG9yaWdpbmFsIGJ5dGVzIHVzaW5nIHRoZSBgYGNoYXJzZXRgYCBzcGVjaWZpZWQgYnkgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHVzaW5nIHRoZSBgYHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyLgorICAgICAgSWYgbm8gYGBjaGFyc2V0YGAgaXMgc3BlY2lmaWVkLCBvciBpZiB0aGUgYGBjaGFyc2V0YGAgZ2l2ZW4gaXMgbm90CisgICAgICByZWNvZ25pemVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB0aGUgYm9keSBpcyBkZWNvZGVkIHVzaW5nIHRoZSBkZWZhdWx0CisgICAgICBBU0NJSSBjaGFyc2V0LgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuZ2V0X2NvbnRlbnRgIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfcGF5bG9hZChwYXlsb2FkLCBjaGFyc2V0PU5vbmUpCisKKyAgICAgIFNldCB0aGUgZW50aXJlIG1lc3NhZ2Ugb2JqZWN0J3MgcGF5bG9hZCB0byAqcGF5bG9hZCouICBJdCBpcyB0aGUgY2xpZW50J3MKKyAgICAgIHJlc3BvbnNpYmlsaXR5IHRvIGVuc3VyZSB0aGUgcGF5bG9hZCBpbnZhcmlhbnRzLiAgT3B0aW9uYWwgKmNoYXJzZXQqIHNldHMKKyAgICAgIHRoZSBtZXNzYWdlJ3MgZGVmYXVsdCBjaGFyYWN0ZXIgc2V0OyBzZWUgOm1ldGg6YHNldF9jaGFyc2V0YCBmb3IgZGV0YWlscy4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfY2hhcnNldChjaGFyc2V0KQorCisgICAgICBTZXQgdGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIHBheWxvYWQgdG8gKmNoYXJzZXQqLCB3aGljaCBjYW4gZWl0aGVyIGJlIGEKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgKHNlZSA6bW9kOmBlbWFpbC5jaGFyc2V0YCksIGEKKyAgICAgIHN0cmluZyBuYW1pbmcgYSBjaGFyYWN0ZXIgc2V0LCBvciBgYE5vbmVgYC4gIElmIGl0IGlzIGEgc3RyaW5nLCBpdCB3aWxsCisgICAgICBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLiAgSWYgKmNoYXJzZXQqCisgICAgICBpcyBgYE5vbmVgYCwgdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciAodGhlIG1lc3NhZ2Ugd2lsbCBub3QgYmUgb3RoZXJ3aXNlCisgICAgICBtb2RpZmllZCkuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSA6ZXhjOmBUeXBlRXJyb3JgLgorCisgICAgICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgb25lIHdpbGwgYmUKKyAgICAgIGFkZGVkLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvbmUKKyAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBhIHZhbHVlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuICBXaGV0aGVyIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFscmVhZHkgZXhpc3RzIG9yIG5vdCwgaXRzIGBgY2hhcnNldGBgCisgICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqLiAgIElmCisgICAgICAqY2hhcnNldC5pbnB1dF9jaGFyc2V0KiBhbmQgKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqIGRpZmZlciwgdGhlIHBheWxvYWQKKyAgICAgIHdpbGwgYmUgcmUtZW5jb2RlZCB0byB0aGUgKm91dHB1dF9jaGFyc2V0Ki4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyLCB0aGVuIHRoZSBwYXlsb2FkIHdpbGwgYmUKKyAgICAgIHRyYW5zZmVyLWVuY29kZWQsIGlmIG5lZWRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAorICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCwgYW5kIGEgaGVhZGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlCisgICAgICB3aWxsIGJlIGFkZGVkLiAgSWYgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyCisgICAgICBhbHJlYWR5IGV4aXN0cywgdGhlIHBheWxvYWQgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGNvcnJlY3RseSBlbmNvZGVkCisgICAgICB1c2luZyB0aGF0IDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBhbmQgaXMgbm90IG1vZGlmaWVkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqY2hhcnNldCogcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1ldGg6YGVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldCgpCisKKyAgICAgIFJldHVybiB0aGUgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICBtZXNzYWdlJ3MgcGF5bG9hZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0IGFsd2F5cyByZXR1cm5zCisgICAgICBgYE5vbmVgYC4KKworCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IGEgbWFwcGluZy1saWtlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQorICAgbWVzc2FnZSdzIDpyZmM6YDI4MjJgIGhlYWRlcnMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2VtYW50aWMgZGlmZmVyZW5jZXMKKyAgIGJldHdlZW4gdGhlc2UgbWV0aG9kcyBhbmQgYSBub3JtYWwgbWFwcGluZyAoaS5lLiBkaWN0aW9uYXJ5KSBpbnRlcmZhY2UuICBGb3IKKyAgIGV4YW1wbGUsIGluIGEgZGljdGlvbmFyeSB0aGVyZSBhcmUgbm8gZHVwbGljYXRlIGtleXMsIGJ1dCBoZXJlIHRoZXJlIG1heSBiZQorICAgZHVwbGljYXRlIG1lc3NhZ2UgaGVhZGVycy4gIEFsc28sIGluIGRpY3Rpb25hcmllcyB0aGVyZSBpcyBubyBndWFyYW50ZWVkCisgICBvcmRlciB0byB0aGUga2V5cyByZXR1cm5lZCBieSA6bWV0aDpga2V5c2AsIGJ1dCBpbiBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0LAorICAgaGVhZGVycyBhcmUgYWx3YXlzIHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZSBvcmlnaW5hbAorICAgbWVzc2FnZSwgb3Igd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueSBoZWFkZXIgZGVsZXRlZCBhbmQgdGhlbgorICAgcmUtYWRkZWQgYXJlIGFsd2F5cyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBoZWFkZXIgbGlzdC4KKworICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZCBtYXhpbWFsCisgICBjb252ZW5pZW5jZS4KKworICAgTm90ZSB0aGF0IGluIGFsbCBjYXNlcywgYW55IGVudmVsb3BlIGhlYWRlciBwcmVzZW50IGluIHRoZSBtZXNzYWdlIGlzIG5vdAorICAgaW5jbHVkZWQgaW4gdGhlIG1hcHBpbmcgaW50ZXJmYWNlLgorCisgICBJbiBhIG1vZGVsIGdlbmVyYXRlZCBmcm9tIGJ5dGVzLCBhbnkgaGVhZGVyIHZhbHVlcyB0aGF0IChpbiBjb250cmF2ZW50aW9uIG9mCisgICB0aGUgUkZDcykgY29udGFpbiBub24tQVNDSUkgYnl0ZXMgd2lsbCwgd2hlbiByZXRyaWV2ZWQgdGhyb3VnaCB0aGlzCisgICBpbnRlcmZhY2UsIGJlIHJlcHJlc2VudGVkIGFzIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdHMgd2l0aAorICAgYSBjaGFyc2V0IG9mIGB1bmtub3duLThiaXRgLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fbGVuX18oKQorCisgICAgICBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBoZWFkZXJzLCBpbmNsdWRpbmcgZHVwbGljYXRlcy4KKworCisgICAuLiBtZXRob2Q6OiBfX2NvbnRhaW5zX18obmFtZSkKKworICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBhIGZpZWxkIG5hbWVkICpuYW1lKi4gTWF0Y2hpbmcgaXMKKyAgICAgIGRvbmUgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZCAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBjb2xvbi4KKyAgICAgIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IsIGUuZy46OgorCisgICAgICAgICAgIGlmICdtZXNzYWdlLWlkJyBpbiBteU1lc3NhZ2U6CisgICAgICAgICAgICAgIHByaW50KCdNZXNzYWdlLUlEOicsIG15TWVzc2FnZVsnbWVzc2FnZS1pZCddKQorCisKKyAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICBjb2xvbiBmaWVsZCBzZXBhcmF0b3IuICBJZiB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIGBgTm9uZWBgIGlzIHJldHVybmVkOyBhCisgICAgICA6ZXhjOmBLZXlFcnJvcmAgaXMgbmV2ZXIgcmFpc2VkLgorCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG5hbWVkIGZpZWxkIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UgaW4gdGhlIG1lc3NhZ2UncworICAgICAgaGVhZGVycywgZXhhY3RseSB3aGljaCBvZiB0aG9zZSBmaWVsZCB2YWx1ZXMgd2lsbCBiZSByZXR1cm5lZCBpcworICAgICAgdW5kZWZpbmVkLiAgVXNlIHRoZSA6bWV0aDpgZ2V0X2FsbGAgbWV0aG9kIHRvIGdldCB0aGUgdmFsdWVzIG9mIGFsbCB0aGUKKyAgICAgIGV4dGFudCBuYW1lZCBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fc2V0aXRlbV9fKG5hbWUsIHZhbCkKKworICAgICAgQWRkIGEgaGVhZGVyIHRvIHRoZSBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSogYW5kIHZhbHVlICp2YWwqLiAgVGhlCisgICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgZmllbGRzLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBkb2VzICpub3QqIG92ZXJ3cml0ZSBvciBkZWxldGUgYW55IGV4aXN0aW5nIGhlYWRlciB3aXRoIHRoZSBzYW1lCisgICAgICBuYW1lLiAgSWYgeW91IHdhbnQgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBoZWFkZXIgaXMgdGhlIG9ubHkgb25lIHByZXNlbnQgaW4gdGhlCisgICAgICBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSosIGRlbGV0ZSB0aGUgZmllbGQgZmlyc3QsIGUuZy46OgorCisgICAgICAgICBkZWwgbXNnWydzdWJqZWN0J10KKyAgICAgICAgIG1zZ1snc3ViamVjdCddID0gJ1B5dGhvbiByb29seiEnCisKKworICAgLi4gbWV0aG9kOjogX19kZWxpdGVtX18obmFtZSkKKworICAgICAgRGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiB0aGUgZmllbGQgd2l0aCBuYW1lICpuYW1lKiBmcm9tIHRoZSBtZXNzYWdlJ3MKKyAgICAgIGhlYWRlcnMuICBObyBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHRoZSBuYW1lZCBmaWVsZCBpc24ndCBwcmVzZW50IGluIHRoZQorICAgICAgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBrZXlzKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIG1lc3NhZ2UncyBoZWFkZXIgZmllbGQgbmFtZXMuCisKKworICAgLi4gbWV0aG9kOjogdmFsdWVzKCkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIG1lc3NhZ2UncyBmaWVsZCB2YWx1ZXMuCisKKworICAgLi4gbWV0aG9kOjogaXRlbXMoKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIDItdHVwbGVzIGNvbnRhaW5pbmcgYWxsIHRoZSBtZXNzYWdlJ3MgZmllbGQgaGVhZGVycyBhbmQKKyAgICAgIHZhbHVlcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXQobmFtZSwgZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICBUaGlzIGlzIGlkZW50aWNhbCB0bworICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYCBleGNlcHQgdGhhdCBvcHRpb25hbCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgaWYgdGhlCisgICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoZGVmYXVsdHMgdG8gYGBOb25lYGApLgorCisgICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIG1ldGhvZHM6CisKKworICAgLi4gbWV0aG9kOjogZ2V0X2FsbChuYW1lLCBmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgYWxsIHRoZSB2YWx1ZXMgZm9yIHRoZSBmaWVsZCBuYW1lZCAqbmFtZSouIElmIHRoZXJlIGFyZQorICAgICAgbm8gc3VjaCBuYW1lZCBoZWFkZXJzIGluIHRoZSBtZXNzYWdlLCAqZmFpbG9iaiogaXMgcmV0dXJuZWQgKGRlZmF1bHRzIHRvCisgICAgICBgYE5vbmVgYCkuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2hlYWRlcihfbmFtZSwgX3ZhbHVlLCAqKl9wYXJhbXMpCisKKyAgICAgIEV4dGVuZGVkIGhlYWRlciBzZXR0aW5nLiAgVGhpcyBtZXRob2QgaXMgc2ltaWxhciB0byA6bWV0aDpgX19zZXRpdGVtX19gCisgICAgICBleGNlcHQgdGhhdCBhZGRpdGlvbmFsIGhlYWRlciBwYXJhbWV0ZXJzIGNhbiBiZSBwcm92aWRlZCBhcyBrZXl3b3JkCisgICAgICBhcmd1bWVudHMuICAqX25hbWUqIGlzIHRoZSBoZWFkZXIgZmllbGQgdG8gYWRkIGFuZCAqX3ZhbHVlKiBpcyB0aGUKKyAgICAgICpwcmltYXJ5KiB2YWx1ZSBmb3IgdGhlIGhlYWRlci4KKworICAgICAgRm9yIGVhY2ggaXRlbSBpbiB0aGUga2V5d29yZCBhcmd1bWVudCBkaWN0aW9uYXJ5ICpfcGFyYW1zKiwgdGhlIGtleSBpcworICAgICAgdGFrZW4gYXMgdGhlIHBhcmFtZXRlciBuYW1lLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBkYXNoZXMgKHNpbmNlCisgICAgICBkYXNoZXMgYXJlIGlsbGVnYWwgaW4gUHl0aG9uIGlkZW50aWZpZXJzKS4gIE5vcm1hbGx5LCB0aGUgcGFyYW1ldGVyIHdpbGwKKyAgICAgIGJlIGFkZGVkIGFzIGBga2V5PSJ2YWx1ZSJgYCB1bmxlc3MgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCisgICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4gIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKKyAgICAgIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUgZm9ybWF0CisgICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nIG5hbWluZyB0aGUKKyAgICAgIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuIHVzdWFsbHkgYmUgc2V0CisgICAgICB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyIHBvc3NpYmlsaXRpZXMpLAorICAgICAgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNvZGUgcG9pbnRzLiAgSWYKKyAgICAgIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAorICAgICAgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdCB1c2luZyBhIGBgQ0hBUlNFVGBgCisgICAgICBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorCisgICAgICBIZXJlJ3MgYW4gZXhhbXBsZTo6CisKKyAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT0nYnVkLmdpZicpCisKKyAgICAgIFRoaXMgd2lsbCBhZGQgYSBoZWFkZXIgdGhhdCBsb29rcyBsaWtlIDo6CisKKyAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgorCisgICAgICBBbiBleGFtcGxlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgorCisgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSgnaXNvLTg4NTktMScsICcnLCAnRnXDn2JhbGxlci5wcHQnKSkKKworICAgICAgV2hpY2ggcHJvZHVjZXMgOjoKKworICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWUqPSJpc28tODg1OS0xJydGdSVERmJhbGxlci5wcHQiCisKKworICAgLi4gbWV0aG9kOjogcmVwbGFjZV9oZWFkZXIoX25hbWUsIF92YWx1ZSkKKworICAgICAgUmVwbGFjZSBhIGhlYWRlci4gIFJlcGxhY2UgdGhlIGZpcnN0IGhlYWRlciBmb3VuZCBpbiB0aGUgbWVzc2FnZSB0aGF0CisgICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZS4gIElmIG5vCisgICAgICBtYXRjaGluZyBoZWFkZXIgd2FzIGZvdW5kLCBhIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfdHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIGNvbnRlbnQgdHlwZS4gIFRoZSByZXR1cm5lZCBzdHJpbmcgaXMgY29lcmNlZCB0bworICAgICAgbG93ZXIgY2FzZSBvZiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLiAgSWYgdGhlcmUgd2FzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgdGhlIGRlZmF1bHQgdHlwZSBhcyBnaXZlbgorICAgICAgYnkgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgIHdpbGwgYmUgcmV0dXJuZWQuICBTaW5jZSBhY2NvcmRpbmcgdG8KKyAgICAgIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgCisgICAgICB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4KKworICAgICAgOnJmYzpgMjA0NWAgZGVmaW5lcyBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYAorICAgICAgdW5sZXNzIGl0IGFwcGVhcnMgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluCisgICAgICB3aGljaCBjYXNlIGl0IHdvdWxkIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLAorICAgICAgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdCB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBtYWluIGNvbnRlbnQgdHlwZS4gIFRoaXMgaXMgdGhlIDptaW1ldHlwZTpgbWFpbnR5cGVgCisgICAgICBwYXJ0IG9mIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3N1YnR5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBzdWItY29udGVudCB0eXBlLiAgVGhpcyBpcyB0aGUgOm1pbWV0eXBlOmBzdWJ0eXBlYAorICAgICAgcGFydCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IDptZXRoOmBnZXRfY29udGVudF90eXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfZGVmYXVsdF90eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gIE1vc3QgbWVzc2FnZXMgaGF2ZSBhIGRlZmF1bHQgY29udGVudAorICAgICAgdHlwZSBvZiA6bWltZXR5cGU6YHRleHQvcGxhaW5gLCBleGNlcHQgZm9yIG1lc3NhZ2VzIHRoYXQgYXJlIHN1YnBhcnRzIG9mCisgICAgICA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lcnMuICBTdWNoIHN1YnBhcnRzIGhhdmUgYSBkZWZhdWx0CisgICAgICBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCisKKworICAgLi4gbWV0aG9kOjogc2V0X2RlZmF1bHRfdHlwZShjdHlwZSkKKworICAgICAgU2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gICpjdHlwZSogc2hvdWxkIGVpdGhlciBiZQorICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcyBub3QKKyAgICAgIGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtcyhmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBwYXJhbWV0ZXJzLCBhcyBhIGxpc3QuCisgICAgICBUaGUgZWxlbWVudHMgb2YgdGhlIHJldHVybmVkIGxpc3QgYXJlIDItdHVwbGVzIG9mIGtleS92YWx1ZSBwYWlycywgYXMKKyAgICAgIHNwbGl0IG9uIHRoZSBgYCc9J2BgIHNpZ24uICBUaGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhlIGBgJz0nYGAgaXMgdGhlIGtleSwKKyAgICAgIHdoaWxlIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgdGhlIHZhbHVlLiAgSWYgdGhlcmUgaXMgbm8gYGAnPSdgYCBzaWduIGluCisgICAgICB0aGUgcGFyYW1ldGVyIHRoZSB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIGFzCisgICAgICBkZXNjcmliZWQgaW4gOm1ldGg6YGdldF9wYXJhbWAgYW5kIGlzIHVucXVvdGVkIGlmIG9wdGlvbmFsICp1bnF1b3RlKiBpcworICAgICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KS4KKworICAgICAgT3B0aW9uYWwgKmZhaWxvYmoqIGlzIHRoZSBvYmplY3QgdG8gcmV0dXJuIGlmIHRoZXJlIGlzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBPcHRpb25hbCAqaGVhZGVyKiBpcyB0aGUgaGVhZGVyIHRvCisgICAgICBzZWFyY2ggaW5zdGVhZCBvZiA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgKnBhcmFtcyogcHJvcGVydHkgb2YgdGhlIGluZGl2aWR1YWwgaGVhZGVyIG9iamVjdHMKKyAgICAgIHJldHVybmVkIGJ5IHRoZSBoZWFkZXIgYWNjZXNzIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtKHBhcmFtLCBmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIncyBwYXJhbWV0ZXIKKyAgICAgICpwYXJhbSogYXMgYSBzdHJpbmcuICBJZiB0aGUgbWVzc2FnZSBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBvciBpZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciwgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQKKyAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXIqIGlmIGdpdmVuLCBzcGVjaWZpZXMgdGhlIG1lc3NhZ2UgaGVhZGVyIHRvIHVzZSBpbnN0ZWFkIG9mCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworICAgICAgUGFyYW1ldGVyIGtleXMgYXJlIGFsd2F5cyBjb21wYXJlZCBjYXNlIGluc2Vuc2l0aXZlbHkuICBUaGUgcmV0dXJuIHZhbHVlCisgICAgICBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhIDMtdHVwbGUgaWYgdGhlIHBhcmFtZXRlciB3YXMgOnJmYzpgMjIzMWAKKyAgICAgIGVuY29kZWQuICBXaGVuIGl0J3MgYSAzLXR1cGxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIHZhbHVlIGFyZSBvZiB0aGUgZm9ybQorICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLiAgTm90ZSB0aGF0IGJvdGggYGBDSEFSU0VUYGAgYW5kCisgICAgICBgYExBTkdVQUdFYGAgY2FuIGJlIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHlvdSBzaG91bGQgY29uc2lkZXIgYGBWQUxVRWBgCisgICAgICB0byBiZSBlbmNvZGVkIGluIHRoZSBgYHVzLWFzY2lpYGAgY2hhcnNldC4gIFlvdSBjYW4gdXN1YWxseSBpZ25vcmUKKyAgICAgIGBgTEFOR1VBR0VgYC4KKworICAgICAgSWYgeW91ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdhcyBlbmNvZGVkIGFzIGluCisgICAgICA6cmZjOmAyMjMxYCwgeW91IGNhbiBjb2xsYXBzZSB0aGUgcGFyYW1ldGVyIHZhbHVlIGJ5IGNhbGxpbmcKKyAgICAgIDpmdW5jOmBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlYCwgcGFzc2luZyBpbiB0aGUgcmV0dXJuIHZhbHVlCisgICAgICBmcm9tIDptZXRoOmBnZXRfcGFyYW1gLiAgVGhpcyB3aWxsIHJldHVybiBhIHN1aXRhYmx5IGRlY29kZWQgVW5pY29kZQorICAgICAgc3RyaW5nIHdoZW4gdGhlIHZhbHVlIGlzIGEgdHVwbGUsIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgdW5xdW90ZWQgaWYgaXQKKyAgICAgIGlzbid0LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICByYXdwYXJhbSA9IG1zZy5nZXRfcGFyYW0oJ2ZvbycpCisgICAgICAgICBwYXJhbSA9IGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWUocmF3cGFyYW0pCisKKyAgICAgIEluIGFueSBjYXNlLCB0aGUgcGFyYW1ldGVyIHZhbHVlIChlaXRoZXIgdGhlIHJldHVybmVkIHN0cmluZywgb3IgdGhlCisgICAgICBgYFZBTFVFYGAgaXRlbSBpbiB0aGUgMy10dXBsZSkgaXMgYWx3YXlzIHVucXVvdGVkLCB1bmxlc3MgKnVucXVvdGUqIGlzIHNldAorICAgICAgdG8gYGBGYWxzZWBgLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqcGFyYW1zKiBwcm9wZXJ0eSBvZiB0aGUgaW5kaXZpZHVhbCBoZWFkZXIgb2JqZWN0cworICAgICAgcmV0dXJuZWQgYnkgdGhlIGhlYWRlciBhY2Nlc3MgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfcGFyYW0ocGFyYW0sIHZhbHVlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9Tm9uZSwgbGFuZ3VhZ2U9JycsIHJlcGxhY2U9RmFsc2UpCisKKyAgICAgIFNldCBhIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYgdGhlCisgICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgaXRzIHZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aAorICAgICAgKnZhbHVlKi4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXMgbm90IHlldCBiZWVuIGRlZmluZWQKKyAgICAgIGZvciB0aGlzIG1lc3NhZ2UsIGl0IHdpbGwgYmUgc2V0IHRvIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgYW5kIHRoZSBuZXcKKyAgICAgIHBhcmFtZXRlciB2YWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGFzIHBlciA6cmZjOmAyMDQ1YC4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0bworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAsIGFuZCBhbGwgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkKKyAgICAgIHVubGVzcyBvcHRpb25hbCAqcmVxdW90ZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuCisKKyAgICAgIElmIG9wdGlvbmFsICpjaGFyc2V0KiBpcyBzcGVjaWZpZWQsIHRoZSBwYXJhbWV0ZXIgd2lsbCBiZSBlbmNvZGVkCisgICAgICBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSBSRkMgMjIzMQorICAgICAgbGFuZ3VhZ2UsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCisgICAgICBzaG91bGQgYmUgc3RyaW5ncy4KKworICAgICAgSWYgKnJlcGxhY2UqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBoZWFkZXIgaXMgbW92ZWQgdG8gdGhlCisgICAgICBlbmQgb2YgdGhlIGxpc3Qgb2YgaGVhZGVycy4gIElmICpyZXBsYWNlKiBpcyBgYFRydWVgYCwgdGhlIGhlYWRlcgorICAgICAgd2lsbCBiZSB1cGRhdGVkIGluIHBsYWNlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCBgYHJlcGxhY2VgYCBrZXl3b3JkIHdhcyBhZGRlZC4KKworCisgICAuLiBtZXRob2Q6OiBkZWxfcGFyYW0ocGFyYW0sIGhlYWRlcj0nY29udGVudC10eXBlJywgcmVxdW90ZT1UcnVlKQorCisgICAgICBSZW1vdmUgdGhlIGdpdmVuIHBhcmFtZXRlciBjb21wbGV0ZWx5IGZyb20gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIuICBUaGUgaGVhZGVyIHdpbGwgYmUgcmUtd3JpdHRlbiBpbiBwbGFjZSB3aXRob3V0IHRoZSBwYXJhbWV0ZXIgb3IKKyAgICAgIGl0cyB2YWx1ZS4gIEFsbCB2YWx1ZXMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5IHVubGVzcyAqcmVxdW90ZSogaXMKKyAgICAgIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuCisgICAgICBhbHRlcm5hdGl2ZSB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfdHlwZSh0eXBlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSkKKworICAgICAgU2V0IHRoZSBtYWluIHR5cGUgYW5kIHN1YnR5cGUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyLiAqdHlwZSogbXVzdCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSA6bWltZXR5cGU6YG1haW50eXBlL3N1YnR5cGVgLAorICAgICAgb3RoZXJ3aXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAgICBUaGlzIG1ldGhvZCByZXBsYWNlcyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBrZWVwaW5nIGFsbAorICAgICAgdGhlIHBhcmFtZXRlcnMgaW4gcGxhY2UuICBJZiAqcmVxdW90ZSogaXMgYGBGYWxzZWBgLCB0aGlzIGxlYXZlcyB0aGUKKyAgICAgIGV4aXN0aW5nIGhlYWRlcidzIHF1b3RpbmcgYXMgaXMsIG90aGVyd2lzZSB0aGUgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZAorICAgICAgKHRoZSBkZWZhdWx0KS4KKworICAgICAgQW4gYWx0ZXJuYXRpdmUgaGVhZGVyIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlICpoZWFkZXIqIGFyZ3VtZW50LiBXaGVuIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIHNldCBhIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gCisgICAgICBoZWFkZXIgaXMgYWxzbyBhZGRlZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSB0aGUgYGBtYWtlX2BgIGFuZCBgYGFkZF9gYCBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9maWxlbmFtZShmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGBgZmlsZW5hbWVgYCBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLiAgSWYgdGhlIGhlYWRlcgorICAgICAgZG9lcyBub3QgaGF2ZSBhIGBgZmlsZW5hbWVgYCBwYXJhbWV0ZXIsIHRoaXMgbWV0aG9kIGZhbGxzIGJhY2sgdG8gbG9va2luZworICAgICAgZm9yIHRoZSBgYG5hbWVgYCBwYXJhbWV0ZXIgb24gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIElmCisgICAgICBuZWl0aGVyIGlzIGZvdW5kLCBvciB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZW4gKmZhaWxvYmoqIGlzIHJldHVybmVkLgorICAgICAgVGhlIHJldHVybmVkIHN0cmluZyB3aWxsIGFsd2F5cyBiZSB1bnF1b3RlZCBhcyBwZXIKKyAgICAgIDpmdW5jOmBlbWFpbC51dGlscy51bnF1b3RlYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfYm91bmRhcnkoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyIG9mIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLCBvciAqZmFpbG9iaiogaWYgZWl0aGVyCisgICAgICB0aGUgaGVhZGVyIGlzIG1pc3NpbmcsIG9yIGhhcyBubyBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyLiAgVGhlIHJldHVybmVkCisgICAgICBzdHJpbmcgd2lsbCBhbHdheXMgYmUgdW5xdW90ZWQgYXMgcGVyIDpmdW5jOmBlbWFpbC51dGlscy51bnF1b3RlYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfYm91bmRhcnkoYm91bmRhcnkpCisKKyAgICAgIFNldCB0aGUgYGBib3VuZGFyeWBgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHRvCisgICAgICAqYm91bmRhcnkqLiAgOm1ldGg6YHNldF9ib3VuZGFyeWAgd2lsbCBhbHdheXMgcXVvdGUgKmJvdW5kYXJ5KiBpZgorICAgICAgbmVjZXNzYXJ5LiAgQSA6ZXhjOmB+ZW1haWwuZXJyb3JzLkhlYWRlclBhcnNlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUKKyAgICAgIG1lc3NhZ2Ugb2JqZWN0IGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKyAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IHRoYW4gZGVsZXRpbmcgdGhlIG9sZAorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFuZCBhZGRpbmcgYSBuZXcgb25lIHdpdGggdGhlIG5ldworICAgICAgYm91bmRhcnkgdmlhIDptZXRoOmBhZGRfaGVhZGVyYCwgYmVjYXVzZSA6bWV0aDpgc2V0X2JvdW5kYXJ5YCBwcmVzZXJ2ZXMKKyAgICAgIHRoZSBvcmRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBsaXN0IG9mCisgICAgICBoZWFkZXJzLiBIb3dldmVyLCBpdCBkb2VzICpub3QqIHByZXNlcnZlIGFueSBjb250aW51YXRpb24gbGluZXMgd2hpY2ggbWF5CisgICAgICBoYXZlIGJlZW4gcHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2NoYXJzZXQoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLAorICAgICAgY29lcmNlZCB0byBsb3dlciBjYXNlLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvciBpZgorICAgICAgdGhhdCBoZWFkZXIgaGFzIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgKmZhaWxvYmoqIGlzIHJldHVybmVkLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIDptZXRoOmBnZXRfY2hhcnNldGAgd2hpY2ggcmV0dXJucyB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgZm9yIHRoZSBkZWZhdWx0IGVuY29kaW5nIG9mIHRoZSBtZXNzYWdlIGJvZHkuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXRzKGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIGEgbGlzdCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgc2V0IG5hbWVzIGluIHRoZSBtZXNzYWdlLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCB0aGVuIHRoZSBsaXN0IHdpbGwgY29udGFpbiBvbmUgZWxlbWVudAorICAgICAgZm9yIGVhY2ggc3VicGFydCBpbiB0aGUgcGF5bG9hZCwgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGEgbGlzdCBvZiBsZW5ndGggMS4KKworICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpbGwgYmUgYSBzdHJpbmcgd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZQorICAgICAgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgZm9yIHRoZQorICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIEhvd2V2ZXIsIGlmIHRoZSBzdWJwYXJ0IGhhcyBubworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZgorICAgICAgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbiBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0CisgICAgICB3aWxsIGJlICpmYWlsb2JqKi4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9kaXNwb3NpdGlvbigpCisKKyAgICAgIFJldHVybiB0aGUgbG93ZXJjYXNlZCB2YWx1ZSAod2l0aG91dCBwYXJhbWV0ZXJzKSBvZiB0aGUgbWVzc2FnZSdzCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyIGlmIGl0IGhhcyBvbmUsIG9yIGBgTm9uZWBgLiAgVGhlCisgICAgICBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoaXMgbWV0aG9kIGFyZSAqaW5saW5lKiwgKmF0dGFjaG1lbnQqIG9yIGBgTm9uZWBgCisgICAgICBpZiB0aGUgbWVzc2FnZSBmb2xsb3dzIDpyZmM6YDIxODNgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKKworICAgLi4gbWV0aG9kOjogd2FsaygpCisKKyAgICAgIFRoZSA6bWV0aDpgd2Fsa2AgbWV0aG9kIGlzIGFuIGFsbC1wdXJwb3NlIGdlbmVyYXRvciB3aGljaCBjYW4gYmUgdXNlZCB0bworICAgICAgaXRlcmF0ZSBvdmVyIGFsbCB0aGUgcGFydHMgYW5kIHN1YnBhcnRzIG9mIGEgbWVzc2FnZSBvYmplY3QgdHJlZSwgaW4KKyAgICAgIGRlcHRoLWZpcnN0IHRyYXZlcnNhbCBvcmRlci4gIFlvdSB3aWxsIHR5cGljYWxseSB1c2UgOm1ldGg6YHdhbGtgIGFzIHRoZQorICAgICAgaXRlcmF0b3IgaW4gYSBgYGZvcmBgIGxvb3A7IGVhY2ggaXRlcmF0aW9uIHJldHVybnMgdGhlIG5leHQgc3VicGFydC4KKworICAgICAgSGVyZSdzIGFuIGV4YW1wbGUgdGhhdCBwcmludHMgdGhlIE1JTUUgdHlwZSBvZiBldmVyeSBwYXJ0IG9mIGEgbXVsdGlwYXJ0CisgICAgICBtZXNzYWdlIHN0cnVjdHVyZToKKworICAgICAgLi4gdGVzdHNldHVwOjoKKworICAgICAgICAgPj4+IGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZQorICAgICAgICAgPj4+IHdpdGggb3BlbignTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNi50eHQnLCAncmInKSBhcyBmOgorICAgICAgICAgLi4uICAgICBtc2cgPSBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZikKKyAgICAgICAgID4+PiBmcm9tIGVtYWlsLml0ZXJhdG9ycyBpbXBvcnQgX3N0cnVjdHVyZQorCisgICAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICAgPj4+IGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAuLi4gICAgIHByaW50KHBhcnQuZ2V0X2NvbnRlbnRfdHlwZSgpKQorICAgICAgICAgbXVsdGlwYXJ0L3JlcG9ydAorICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgIG1lc3NhZ2UvcmZjODIyCisgICAgICAgICB0ZXh0L3BsYWluCisKKyAgICAgIGBgd2Fsa2BgIGl0ZXJhdGVzIG92ZXIgdGhlIHN1YnBhcnRzIG9mIGFueSBwYXJ0IHdoZXJlCisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgVHJ1ZWBgLCBldmVuIHRob3VnaAorICAgICAgYGBtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0J2BgIG1heSByZXR1cm4gYGBGYWxzZWBgLiAgV2UKKyAgICAgIGNhbiBzZWUgdGhpcyBpbiBvdXIgZXhhbXBsZSBieSBtYWtpbmcgdXNlIG9mIHRoZSBgYF9zdHJ1Y3R1cmVgYCBkZWJ1ZworICAgICAgaGVscGVyIGZ1bmN0aW9uOgorCisgICAgICAuLiBkb2N0ZXN0OjoKKworICAgICAgICAgPj4+IGZvciBwYXJ0IGluIG1zZy53YWxrKCk6CisgICAgICAgICAuLi4gICAgIHByaW50KHBhcnQuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyksCisgICAgICAgICAuLi4gICAgICAgICAgIHBhcnQuaXNfbXVsdGlwYXJ0KCkpCisgICAgICAgICBUcnVlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICBGYWxzZSBUcnVlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgIEZhbHNlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICA+Pj4gX3N0cnVjdHVyZShtc2cpCisgICAgICAgICBtdWx0aXBhcnQvcmVwb3J0CisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXMKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9yZmM4MjIKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisKKyAgICAgIEhlcmUgdGhlIGBgbWVzc2FnZWBgIHBhcnRzIGFyZSBub3QgYGBtdWx0aXBhcnRzYGAsIGJ1dCB0aGV5IGRvIGNvbnRhaW4KKyAgICAgIHN1YnBhcnRzLiBgYGlzX211bHRpcGFydCgpYGAgcmV0dXJucyBgYFRydWVgYCBhbmQgYGB3YWxrYGAgZGVzY2VuZHMKKyAgICAgIGludG8gdGhlIHN1YnBhcnRzLgorCisKKyAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBjYW4gYWxzbyBvcHRpb25hbGx5IGNvbnRhaW4gdHdvIGluc3RhbmNlIGF0dHJpYnV0ZXMsCisgICB3aGljaCBjYW4gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHBsYWluIHRleHQgb2YgYSBNSU1FIG1lc3NhZ2UuCisKKworICAgLi4gYXR0cmlidXRlOjogcHJlYW1ibGUKKworICAgICAgVGhlIGZvcm1hdCBvZiBhIE1JTUUgZG9jdW1lbnQgYWxsb3dzIGZvciBzb21lIHRleHQgYmV0d2VlbiB0aGUgYmxhbmsgbGluZQorICAgICAgZm9sbG93aW5nIHRoZSBoZWFkZXJzLCBhbmQgdGhlIGZpcnN0IG11bHRpcGFydCBib3VuZGFyeSBzdHJpbmcuIE5vcm1hbGx5LAorICAgICAgdGhpcyB0ZXh0IGlzIG5ldmVyIHZpc2libGUgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyIGJlY2F1c2UgaXQgZmFsbHMKKyAgICAgIG91dHNpZGUgdGhlIHN0YW5kYXJkIE1JTUUgYXJtb3IuICBIb3dldmVyLCB3aGVuIHZpZXdpbmcgdGhlIHJhdyB0ZXh0IG9mCisgICAgICB0aGUgbWVzc2FnZSwgb3Igd2hlbiB2aWV3aW5nIHRoZSBtZXNzYWdlIGluIGEgbm9uLU1JTUUgYXdhcmUgcmVhZGVyLCB0aGlzCisgICAgICB0ZXh0IGNhbiBiZWNvbWUgdmlzaWJsZS4KKworICAgICAgVGhlICpwcmVhbWJsZSogYXR0cmlidXRlIGNvbnRhaW5zIHRoaXMgbGVhZGluZyBleHRyYS1hcm1vciB0ZXh0IGZvciBNSU1FCisgICAgICBkb2N1bWVudHMuICBXaGVuIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBkaXNjb3ZlcnMgc29tZSB0ZXh0CisgICAgICBhZnRlciB0aGUgaGVhZGVycyBidXQgYmVmb3JlIHRoZSBmaXJzdCBib3VuZGFyeSBzdHJpbmcsIGl0IGFzc2lnbnMgdGhpcworICAgICAgdGV4dCB0byB0aGUgbWVzc2FnZSdzICpwcmVhbWJsZSogYXR0cmlidXRlLiAgV2hlbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGlzIHdyaXRpbmcgb3V0IHRoZSBwbGFpbiB0ZXh0CisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhIE1JTUUgbWVzc2FnZSwgYW5kIGl0IGZpbmRzIHRoZQorICAgICAgbWVzc2FnZSBoYXMgYSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwgaXQgd2lsbCB3cml0ZSB0aGlzIHRleHQgaW4gdGhlIGFyZWEKKyAgICAgIGJldHdlZW4gdGhlIGhlYWRlcnMgYW5kIHRoZSBmaXJzdCBib3VuZGFyeS4gIFNlZSA6bW9kOmBlbWFpbC5wYXJzZXJgIGFuZAorICAgICAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBmb3IgZGV0YWlscy4KKworICAgICAgTm90ZSB0aGF0IGlmIHRoZSBtZXNzYWdlIG9iamVjdCBoYXMgbm8gcHJlYW1ibGUsIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZQorICAgICAgd2lsbCBiZSBgYE5vbmVgYC4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBlcGlsb2d1ZQorCisgICAgICBUaGUgKmVwaWxvZ3VlKiBhdHRyaWJ1dGUgYWN0cyB0aGUgc2FtZSB3YXkgYXMgdGhlICpwcmVhbWJsZSogYXR0cmlidXRlLAorICAgICAgZXhjZXB0IHRoYXQgaXQgY29udGFpbnMgdGV4dCB0aGF0IGFwcGVhcnMgYmV0d2VlbiB0aGUgbGFzdCBib3VuZGFyeSBhbmQKKyAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuCisKKyAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBzZXQgdGhlIGVwaWxvZ3VlIHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gb3JkZXIgZm9yIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgdG8gcHJpbnQgYSBuZXdsaW5lIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICBmaWxlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRlZmVjdHMKKworICAgICAgVGhlICpkZWZlY3RzKiBhdHRyaWJ1dGUgY29udGFpbnMgYSBsaXN0IG9mIGFsbCB0aGUgcHJvYmxlbXMgZm91bmQgd2hlbgorICAgICAgcGFyc2luZyB0aGlzIG1lc3NhZ2UuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbgorICAgICAgb2YgdGhlIHBvc3NpYmxlIHBhcnNpbmcgZGVmZWN0cy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAppbmRleCBhOWMwNzhiLi41Nzc0M2Q1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0CkBAIC03LDI1MSArNywxMiBAQAogLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuNAotICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0KICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5YAogCi0uLiBub3RlOjoKKy0tLS0tLS0tLS0tLQogCi0gICBUaGUgY29udGVudG1hbmFnZXIgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgbW9kdWxlIHByb3ZpZGVzIGEgY2xhc3MgdGhhdCBjYW4gcmVwcmVzZW50IGFuCi1hcmJpdHJhcnkgZW1haWwgbWVzc2FnZS4gIFRoYXQgYmFzaWMgbWVzc2FnZSBtb2RlbCBoYXMgYSB1c2VmdWwgYW5kIGZsZXhpYmxlCi1BUEksIGJ1dCBpdCBwcm92aWRlcyBvbmx5IGEgbG93ZXItbGV2ZWwgQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBnZW5lcmljCi1wYXJ0cyBvZiBhIG1lc3NhZ2UgKHRoZSBoZWFkZXJzLCBnZW5lcmljIGhlYWRlciBwYXJhbWV0ZXJzLCBhbmQgdGhlIHBheWxvYWQsCi13aGljaCBtYXkgYmUgYSBsaXN0IG9mIHN1Yi1wYXJ0cykuICBUaGlzIG1vZHVsZSBwcm92aWRlcyBjbGFzc2VzIGFuZCB0b29scwotdGhhdCBwcm92aWRlIGFuIGVuaGFuY2VkIGFuZCBleHRlbnNpYmxlIEFQSSBmb3IgZGVhbGluZyB3aXRoIHZhcmlvdXMgc3BlY2lmaWMKLXR5cGVzIG9mIGNvbnRlbnQsIGluY2x1ZGluZyB0aGUgYWJpbGl0eSB0byByZXRyaWV2ZSB0aGUgY29udGVudCBvZiB0aGUgbWVzc2FnZQotYXMgYSBzcGVjaWFsaXplZCBvYmplY3QgdHlwZSByYXRoZXIgdGhhbiBhcyBhIHNpbXBsZSBieXRlcyBvYmplY3QuICBUaGUgbW9kdWxlCi1hdXRvbWF0aWNhbGx5IHRha2VzIGNhcmUgb2YgdGhlIFJGQy1zcGVjaWZpZWQgTUlNRSBkZXRhaWxzIChyZXF1aXJlZCBoZWFkZXJzCi1hbmQgcGFyYW1ldGVycywgZXRjLikgZm9yIHRoZSBjZXJ0YWluIGNvbW1vbiBjb250ZW50IHR5cGVzIGNvbnRlbnQgcHJvcGVydGllcywKLWFuZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIHR5cGVzIGNhbiBiZSBhZGRlZCBieSBhbiBhcHBsaWNhdGlvbiB1c2luZyB0aGUKLWV4dGVuc2lvbiBtZWNoYW5pc21zLgotCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBlcG9ueW1vdXMgIkNvbnRlbnQgTWFuYWdlciIgY2xhc3Nlcy4gIFRoZSBiYXNlCi06Y2xhc3M6YC5Db250ZW50TWFuYWdlcmAgY2xhc3MgZGVmaW5lcyBhbiBBUEkgZm9yIHJlZ2lzdGVyaW5nIGNvbnRlbnQKLW1hbmFnZW1lbnQgZnVuY3Rpb25zIHdoaWNoIGV4dHJhY3QgZGF0YSBmcm9tIGBgTWVzc2FnZWBgIG9iamVjdHMgb3IgaW5zZXJ0IGRhdGEKLWFuZCBoZWFkZXJzIGludG8gYGBNZXNzYWdlYGAgb2JqZWN0cywgdGh1cyBwcm92aWRpbmcgYSB3YXkgb2YgY29udmVydGluZwotYmV0d2VlbiBgYE1lc3NhZ2VgYCBvYmplY3RzIGNvbnRhaW5pbmcgZGF0YSBhbmQgb3RoZXIgcmVwcmVzZW50YXRpb25zIG9mIHRoYXQKLWRhdGEgKFB5dGhvbiBkYXRhIHR5cGVzLCBzcGVjaWFsaXplZCBQeXRob24gb2JqZWN0cywgZXh0ZXJuYWwgZmlsZXMsIGV0YykuICBUaGUKLW1vZHVsZSBhbHNvIGRlZmluZXMgb25lIGNvbmNyZXRlIGNvbnRlbnQgbWFuYWdlcjogOmRhdGE6YHJhd19kYXRhX21hbmFnZXJgCi1jb252ZXJ0cyBiZXR3ZWVuIE1JTUUgY29udGVudCB0eXBlcyBhbmQgYGBzdHJgYCBvciBgYGJ5dGVzYGAgZGF0YS4gIEl0IGFsc28KLXByb3ZpZGVzIGEgY29udmVuaWVudCBBUEkgZm9yIG1hbmFnaW5nIHRoZSBNSU1FIHBhcmFtZXRlcnMgd2hlbiBpbnNlcnRpbmcKLWNvbnRlbnQgaW50byBgYE1lc3NhZ2VgYFwgcy4gIEl0IGFsc28gaGFuZGxlcyBpbnNlcnRpbmcgYW5kIGV4dHJhY3RpbmcKLWBgTWVzc2FnZWBgIG9iamVjdHMgd2hlbiBkZWFsaW5nIHdpdGggdGhlIGBgbWVzc2FnZS9yZmM4MjJgYCBjb250ZW50IHR5cGUuCi0KLUFub3RoZXIgcGFydCBvZiB0aGUgZW5oYW5jZWQgaW50ZXJmYWNlIGlzIHN1YmNsYXNzZXMgb2YKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgdGhhdCBwcm92aWRlIG5ldyBjb252ZW5pZW5jZSBBUEkgZnVuY3Rpb25zLAotaW5jbHVkaW5nIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGNhbGxpbmcgdGhlIENvbnRlbnQgTWFuYWdlcnMgZGVyaXZlZCBmcm9tCi10aGlzIG1vZHVsZS4KLQotLi4gbm90ZTo6Ci0KLSAgIEFsdGhvdWdoIDpjbGFzczpgLkVtYWlsTWVzc2FnZWAgYW5kIDpjbGFzczpgLk1JTUVQYXJ0YCBhcmUgY3VycmVudGx5Ci0gICBkb2N1bWVudGVkIGluIHRoaXMgbW9kdWxlIGJlY2F1c2Ugb2YgdGhlIHByb3Zpc2lvbmFsIG5hdHVyZSBvZiB0aGUgY29kZSwgdGhlCi0gICBpbXBsZW1lbnRhdGlvbiBsaXZlcyBpbiB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLgotCi0uLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWVzc2FnZQotCi0uLiBjbGFzczo6IEVtYWlsTWVzc2FnZShwb2xpY3k9ZGVmYXVsdCkKLQotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1ZHBhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KLSAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQotICAgOmNsYXNzOmB+ZW1haWwucG9saWN5LmRlZmF1bHRgIHBvbGljeSwgd2hpY2ggZm9sbG93cyB0aGUgcnVsZXMgb2YgdGhlIGVtYWlsCi0gICBSRkNzIGV4Y2VwdCBmb3IgbGluZSBlbmRpbmdzIChpbnN0ZWFkIG9mIHRoZSBSRkMgbWFuZGF0ZWQgYGBcclxuYGAsIGl0IHVzZXMKLSAgIHRoZSBQeXRob24gc3RhbmRhcmQgYGBcbmBgIGxpbmUgZW5kaW5ncykuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgotCi0gICBUaGlzIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYC4gIEl0IGFkZHMKLSAgIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLQotCi0gICAuLiBtZXRob2Q6OiBpc19hdHRhY2htZW50Ci0KLSAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGVyZSBpcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIKLSAgICAgIGFuZCBpdHMgKGNhc2UgaW5zZW5zaXRpdmUpIHZhbHVlIGlzIGBgYXR0YWNobWVudGBgLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgotCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4yCi0gICAgICAgICBpc19hdHRhY2htZW50IGlzIG5vdyBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgcHJvcGVydHksIGZvciBjb25zaXN0ZW5jeQotICAgICAgICAgd2l0aCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9ib2R5KHByZWZlcmVuY2VsaXN0PSgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJykpCi0KLSAgICAgIFJldHVybiB0aGUgTUlNRSBwYXJ0IHRoYXQgaXMgdGhlIGJlc3QgY2FuZGlkYXRlIHRvIGJlIHRoZSAiYm9keSIgb2YgdGhlCi0gICAgICBtZXNzYWdlLgotCi0gICAgICAqcHJlZmVyZW5jZWxpc3QqIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGZyb20gdGhlIHNldCBgYHJlbGF0ZWRgYCwKLSAgICAgIGBgaHRtbGBgLCBhbmQgYGBwbGFpbmBgLCBhbmQgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGZvciB0aGUKLSAgICAgIGNvbnRlbnQgdHlwZSBvZiB0aGUgcGFydCByZXR1cm5lZC4KLQotICAgICAgU3RhcnQgbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZQotICAgICAgYGBnZXRfYm9keWBgIG1ldGhvZCBpcyBjYWxsZWQuCi0KLSAgICAgIElmIGBgcmVsYXRlZGBgIGlzIG5vdCBpbmNsdWRlZCBpbiAqcHJlZmVyZW5jZWxpc3QqLCBjb25zaWRlciB0aGUgcm9vdAotICAgICAgcGFydCAob3Igc3VicGFydCBvZiB0aGUgcm9vdCBwYXJ0KSBvZiBhbnkgcmVsYXRlZCBlbmNvdW50ZXJlZCBhcyBhCi0gICAgICBjYW5kaWRhdGUgaWYgdGhlIChzdWItKXBhcnQgbWF0Y2hlcyBhIHByZWZlcmVuY2UuCi0KLSAgICAgIFdoZW4gZW5jb3VudGVyaW5nIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjaGVjayB0aGUgYGBzdGFydGBgIHBhcmFtZXRlcgotICAgICAgYW5kIGlmIGEgcGFydCB3aXRoIGEgbWF0Y2hpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGlzIGZvdW5kLCBjb25zaWRlcgotICAgICAgb25seSBpdCB3aGVuIGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzLiAgT3RoZXJ3aXNlIGNvbnNpZGVyIG9ubHkgdGhlCi0gICAgICBmaXJzdCAoZGVmYXVsdCByb290KSBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydC9yZWxhdGVkYGAuCi0KLSAgICAgIElmIGEgcGFydCBoYXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBvbmx5IGNvbnNpZGVyCi0gICAgICB0aGUgcGFydCBhIGNhbmRpZGF0ZSBtYXRjaCBpZiB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBpcyBgYGlubGluZWBgLgotCi0gICAgICBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGVzIG1hdGNoZXMgYW55IG9mIHRoZSBwcmVmZXJlbmNlcyBpbgotICAgICAgKnByZWZlcm5lY2xpc3QqLCByZXR1cm4gYGBOb25lYGAuCi0KLSAgICAgIE5vdGVzOiAoMSkgRm9yIG1vc3QgYXBwbGljYXRpb25zIHRoZSBvbmx5ICpwcmVmZXJlbmNlbGlzdCogY29tYmluYXRpb25zCi0gICAgICB0aGF0IHJlYWxseSBtYWtlIHNlbnNlIGFyZSBgYCgncGxhaW4nLClgYCwgYGAoJ2h0bWwnLCAncGxhaW4nKWBgLCBhbmQgdGhlCi0gICAgICBkZWZhdWx0LCBgYCgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJylgYC4gICgyKSBCZWNhdXNlIG1hdGNoaW5nIHN0YXJ0cwotICAgICAgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIGBgZ2V0X2JvZHlgYCBpcyBjYWxsZWQsIGNhbGxpbmcgYGBnZXRfYm9keWBgIG9uCi0gICAgICBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCB3aWxsIHJldHVybiB0aGUgb2JqZWN0IGl0c2VsZiB1bmxlc3MKLSAgICAgICpwcmVmZXJlbmNlbGlzdCogaGFzIGEgbm9uLWRlZmF1bHQgdmFsdWUuICgzKSBNZXNzYWdlcyAob3IgbWVzc2FnZSBwYXJ0cykKLSAgICAgIHRoYXQgZG8gbm90IHNwZWNpZnkgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBvciB3aG9zZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIGludmFsaWQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkKLSAgICAgIGFyZSBvZiB0eXBlIGBgdGV4dC9wbGFpbmBgLCB3aGljaCBtYXkgb2NjYXNpb25hbGx5IGNhdXNlIGBgZ2V0X2JvZHlgYCB0bwotICAgICAgcmV0dXJuIHVuZXhwZWN0ZWQgcmVzdWx0cy4KLQotCi0gICAuLiBtZXRob2Q6OiBpdGVyX2F0dGFjaG1lbnRzKCkKLQotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBwYXJ0cyBvZiB0aGUgbWVzc2FnZSB0aGF0IGFyZSBub3QKLSAgICAgIGNhbmRpZGF0ZSAiYm9keSIgcGFydHMuICBUaGF0IGlzLCBza2lwIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGVhY2ggb2YKLSAgICAgIGBgdGV4dC9wbGFpbmBgLCBgYHRleHQvaHRtbGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgICh1bmxlc3MgdGhleSBhcmUgZXhwbGljaXRseSBtYXJrZWQgYXMKLSAgICAgIGF0dGFjaG1lbnRzIHZpYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGApLCBhbmQKLSAgICAgIHJldHVybiBhbGwgcmVtYWluaW5nIHBhcnRzLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEKLSAgICAgIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgcmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGFsbCB0aGUgcmVsYXRlZCBwYXJ0cwotICAgICAgZXhjZXB0IHRoZSByb290IHBhcnQgKGllOiB0aGUgcGFydCBwb2ludGVkIHRvIGJ5IHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyLAotICAgICAgb3IgdGhlIGZpcnN0IHBhcnQgaWYgdGhlcmUgaXMgbm8gYGBzdGFydGBgIHBhcmFtZXRlciBvciB0aGUgYGBzdGFydGBgCi0gICAgICBwYXJhbWV0ZXIgZG9lc24ndCBtYXRjaCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIG9mIGFueSBvZiB0aGUKLSAgICAgIHBhcnRzKS4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgb3IgYQotICAgICAgbm9uLWBgbXVsdGlwYXJ0YGAsIHJldHVybiBhbiBlbXB0eSBpdGVyYXRvci4KLQotCi0gICAuLiBtZXRob2Q6OiBpdGVyX3BhcnRzKCkKLQotICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlLAotICAgICAgd2hpY2ggd2lsbCBiZSBlbXB0eSBmb3IgYSBub24tYGBtdWx0aXBhcnRgYC4gIChTZWUgYWxzbwotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLndhbGtgLikKLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIENhbGwgdGhlIGBgZ2V0X2NvbnRlbnRgYCBtZXRob2Qgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYKLSAgICAgIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcwotICAgICAgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBzZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIENhbGwgdGhlIGBgc2V0X2NvbnRlbnRgYCBtZXRob2Qgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYKLSAgICAgIGFzIHRoZSBtZXNzYWdlIG9iamVjdCwgYW5kIHBhc3NpbmcgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcwotICAgICAgYXMgYWRkaXRpb25hbCBhcmd1bWVudHMuICBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UKLSAgICAgIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX3JlbGF0ZWQoYm91bmRhcnk9Tm9uZSkKLQotICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG1lc3NhZ2UgaW50byBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBtZXNzYWdlLAotICAgICAgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhCi0gICAgICAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZQotICAgICAgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5Ci0gICAgICB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZQotICAgICAgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX2FsdGVybmF0aXZlKGJvdW5kYXJ5PU5vbmUpCi0KLSAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBvciBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBpbnRvIGEKLSAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYAotICAgICAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCi0gICAgICAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwKLSAgICAgIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMKLSAgICAgIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCi0KLQotICAgLi4gbWV0aG9kOjogbWFrZV9taXhlZChib3VuZGFyeT1Ob25lKQotCi0gICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvciBhCi0gICAgICBgYG11bHRpcGFydC1hbHRlcm5hdGl2ZWBgIGludG8gYSBgYG11bHRpcGFydC9taXhlZGBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlCi0gICAgICBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nCi0gICAgICBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgotCi0KLSAgIC4uIG1ldGhvZDo6IGFkZF9yZWxhdGVkKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCi0gICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLAotICAgICAgYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgotICAgICAgdGhlIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgY2FsbCA6bWV0aDpgbWFrZV9yZWxhdGVkYCBhbmQgdGhlbgotICAgICAgcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsCi0gICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQotICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotICAgICAgSWYgdGhlIGFkZGVkIHBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsCi0gICAgICBhZGQgb25lIHdpdGggdGhlIHZhbHVlIGBgaW5saW5lYGAuCi0KLQotICAgLi4gbWV0aG9kOjogYWRkX2FsdGVybmF0aXZlKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQotICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCi0gICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjYWxsCi0gICAgICA6bWV0aDpgbWFrZV9hbHRlcm5hdGl2ZWAgYW5kIHRoZW4gcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzCi0gICAgICBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmCi0gICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCi0gICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KLQotCi0gICAuLiBtZXRob2Q6OiBhZGRfYXR0YWNobWVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0LAotICAgICAgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAotICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQotICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCi0gICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjYWxsIDptZXRoOmBtYWtlX21peGVkYCBhbmQgdGhlbiBwcm9jZWVkIGFzCi0gICAgICBhYm92ZS4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgCi0gICAgICBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuICBJZiB0aGUgYWRkZWQgcGFydAotICAgICAgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUKLSAgICAgIGBgYXR0YWNobWVudGBgLiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgYm90aCBmb3IgZXhwbGljaXQgYXR0YWNobWVudHMKLSAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGAgYW5kIGBgaW5saW5lYGAgYXR0YWNobWVudHMKLSAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lYCksIGJ5IHBhc3NpbmcgYXBwcm9wcmlhdGUKLSAgICAgIG9wdGlvbnMgdG8gdGhlIGBgY29udGVudF9tYW5hZ2VyYGAuCi0KLQotICAgLi4gbWV0aG9kOjogY2xlYXIoKQotCi0gICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgaGVhZGVycy4KLQotCi0gICAuLiBtZXRob2Q6OiBjbGVhcl9jb250ZW50KCkKLQotICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIDpleGM6YENvbnRlbnQtYCBoZWFkZXJzLCBsZWF2aW5nCi0gICAgICBhbGwgb3RoZXIgaGVhZGVycyBpbnRhY3QgYW5kIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgotCi0KLS4uIGNsYXNzOjogTUlNRVBhcnQocG9saWN5PWRlZmF1bHQpCi0KLSAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJwYXJ0IG9mIGEgTUlNRSBtZXNzYWdlLiAgSXQgaXMgaWRlbnRpY2FsIHRvCi0gICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgLCBleGNlcHQgdGhhdCBubyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzIGFyZQotICAgIGFkZGVkIHdoZW4gOm1ldGg6YH5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGlzIGNhbGxlZCwgc2luY2Ugc3ViLXBhcnRzIGRvCi0gICAgbm90IG5lZWQgdGhlaXIgb3duIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMuCi0KKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCiAKLS4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5jb250ZW50bWFuYWdlcgogCiAuLiBjbGFzczo6IENvbnRlbnRNYW5hZ2VyKCkKIApAQCAtMzYyLDcgKzEyMyw3IEBACiAgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnYnl0ZXMnPiwgbWFpbnR5cGUsIHN1YnR5cGUsIGN0ZT0iYmFzZTY0IiwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpCi0gICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnTWVzc2FnZSc+LCBjdGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgc2V0X2NvbnRlbnQobXNnLCA8J0VtYWlsTWVzc2FnZSc+LCBjdGU9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcG9zaXRpb249Tm9uZSwgZmlsZW5hbWU9Tm9uZSwgY2lkPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcz1Ob25lLCBoZWFkZXJzPU5vbmUpCiAgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnbGlzdCc+LCBzdWJ0eXBlPSdtaXhlZCcsIFwKQEAgLTM3OCwxNCArMTM5LDE0IEBACiAgICAgICAgICAgICAgc3VidHlwZSB0byAqc3VidHlwZSogaWYgaXQgaXMgc3BlY2lmaWVkLCBvciBgYHBsYWluYGAgaWYgaXQgaXMgbm90LgogICAgICAgICAgICAqIEZvciBgYGJ5dGVzYGAsIHVzZSB0aGUgc3BlY2lmaWVkICptYWludHlwZSogYW5kICpzdWJ0eXBlKiwgb3IKICAgICAgICAgICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgaWYgdGhleSBhcmUgbm90IHNwZWNpZmllZC4KLSAgICAgICAgICAgKiBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIG1haW50eXBlIHRvCi0gICAgICAgICAgICAgYGBtZXNzYWdlYGAsIGFuZCBzZXQgdGhlIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzIHNwZWNpZmllZAotICAgICAgICAgICAgIG9yIGBgcmZjODIyYGAgaWYgaXQgaXMgbm90LiAgSWYgKnN1YnR5cGUqIGlzIGBgcGFydGlhbGBgLCByYWlzZSBhbgotICAgICAgICAgICAgIGVycm9yIChgYGJ5dGVzYGAgb2JqZWN0cyBtdXN0IGJlIHVzZWQgdG8gY29uc3RydWN0Ci0gICAgICAgICAgICAgYGBtZXNzYWdlL3BhcnRpYWxgYCBwYXJ0cykuCisgICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIG1haW50eXBlCisgICAgICAgICAgICAgdG8gYGBtZXNzYWdlYGAsIGFuZCBzZXQgdGhlIHN1YnR5cGUgdG8gKnN1YnR5cGUqIGlmIGl0IGlzCisgICAgICAgICAgICAgc3BlY2lmaWVkIG9yIGBgcmZjODIyYGAgaWYgaXQgaXMgbm90LiAgSWYgKnN1YnR5cGUqIGlzCisgICAgICAgICAgICAgYGBwYXJ0aWFsYGAsIHJhaXNlIGFuIGVycm9yIChgYGJ5dGVzYGAgb2JqZWN0cyBtdXN0IGJlIHVzZWQgdG8KKyAgICAgICAgICAgICBjb25zdHJ1Y3QgYGBtZXNzYWdlL3BhcnRpYWxgYCBwYXJ0cykuCiAgICAgICAgICAgICogRm9yICo8J2xpc3QnPiosIHdoaWNoIHNob3VsZCBiZSBhIGxpc3Qgb2YKLSAgICAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgYGBtYWludHlwZWBgIHRvCi0gICAgICAgICAgICAgYGBtdWx0aXBhcnRgYCwgYW5kIHRoZSBgYHN1YnR5cGVgYCB0byAqc3VidHlwZSogaWYgaXQgaXMKKyAgICAgICAgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBgYG1haW50eXBlYGAKKyAgICAgICAgICAgICB0byBgYG11bHRpcGFydGBgLCBhbmQgdGhlIGBgc3VidHlwZWBgIHRvICpzdWJ0eXBlKiBpZiBpdCBpcwogICAgICAgICAgICAgIHNwZWNpZmllZCwgYW5kIGBgbWl4ZWRgYCBpZiBpdCBpcyBub3QuICBJZiB0aGUgbWVzc2FnZSBwYXJ0cyBpbgogICAgICAgICAgICAgIHRoZSAqPCdsaXN0Jz4qIGhhdmUgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycywgcmVtb3ZlCiAgICAgICAgICAgICAgdGhlbS4KQEAgLTM5NywzMiArMTU4LDM1IEBACiAKICAgICAgICBJZiAqY3RlKiBpcyBzZXQsIGVuY29kZSB0aGUgcGF5bG9hZCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvbnRlbnQgdHJhbnNmZXIKICAgICAgICBlbmNvZGluZywgYW5kIHNldCB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5kY29kaW5nYCBoZWFkZXIgdG8KLSAgICAgICB0aGF0IHZhbHVlLiAgRm9yIGBgc3RyYGAgb2JqZWN0cywgaWYgaXQgaXMgbm90IHNldCB1c2UgaGV1cmlzdGljcyB0bwotICAgICAgIGRldGVybWluZSB0aGUgbW9zdCBjb21wYWN0IGVuY29kaW5nLiAgUG9zc2libGUgdmFsdWVzIGZvciAqY3RlKiBhcmUKLSAgICAgICBgYHF1b3RlZC1wcmludGFibGVgYCwgYGBiYXNlNjRgYCwgYGA3Yml0YGAsIGBgOGJpdGBgLCBhbmQgYGBiaW5hcnlgYC4KLSAgICAgICBJZiB0aGUgaW5wdXQgY2Fubm90IGJlIGVuY29kZWQgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyAoZWc6IGBgN2JpdGBgKSwKLSAgICAgICByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLiAgRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAsIHBlcgotICAgICAgIDpyZmM6YDIwNDZgLCByYWlzZSBhbiBlcnJvciBpZiBhICpjdGUqIG9mIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yCi0gICAgICAgYGBiYXNlNjRgYCBpcyByZXF1ZXN0ZWQgZm9yICpzdWJ0eXBlKiBgYHJmYzgyMmBgLCBhbmQgZm9yIGFueSAqY3RlKgotICAgICAgIG90aGVyIHRoYW4gYGA3Yml0YGAgZm9yICpzdWJ0eXBlKiBgYGV4dGVybmFsLWJvZHlgYC4gIEZvcgotICAgICAgIGBgbWVzc2FnZS9yZmM4MjJgYCwgdXNlIGBgOGJpdGBgIGlmICpjdGUqIGlzIG5vdCBzcGVjaWZpZWQuICBGb3IgYWxsCi0gICAgICAgb3RoZXIgdmFsdWVzIG9mICpzdWJ0eXBlKiwgdXNlIGBgN2JpdGBgLgorICAgICAgIHRoYXQgdmFsdWUuICBQb3NzaWJsZSB2YWx1ZXMgZm9yICpjdGUqIGFyZSBgYHF1b3RlZC1wcmludGFibGVgYCwKKyAgICAgICBgYGJhc2U2NGBgLCBgYDdiaXRgYCwgYGA4Yml0YGAsIGFuZCBgYGJpbmFyeWBgLiAgSWYgdGhlIGlucHV0IGNhbm5vdCBiZQorICAgICAgIGVuY29kZWQgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyAoZm9yIGV4YW1wbGUsIHNwZWNpZnlpbmcgYSAqY3RlKiBvZgorICAgICAgIGBgN2JpdGBgIGZvciBhbiBpbnB1dCB0aGF0IGNvbnRhaW5zIG5vbi1BU0NJSSB2YWx1ZXMpLCByYWlzZSBhCisgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCisKKyAgICAgICAgICAgICogRm9yIGBgc3RyYGAgb2JqZWN0cywgaWYgKmN0ZSogaXMgbm90IHNldCB1c2UgaGV1cmlzdGljcyB0bworICAgICAgICAgICAgICBkZXRlcm1pbmUgdGhlIG1vc3QgY29tcGFjdCBlbmNvZGluZy4KKyAgICAgICAgICAgICogRm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCwgcGVyIDpyZmM6YDIwNDZgLCByYWlzZQorICAgICAgICAgICAgICBhbiBlcnJvciBpZiBhICpjdGUqIG9mIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAgaXMKKyAgICAgICAgICAgICAgcmVxdWVzdGVkIGZvciAqc3VidHlwZSogYGByZmM4MjJgYCwgYW5kIGZvciBhbnkgKmN0ZSogb3RoZXIgdGhhbgorICAgICAgICAgICAgICBgYDdiaXRgYCBmb3IgKnN1YnR5cGUqIGBgZXh0ZXJuYWwtYm9keWBgLiAgRm9yCisgICAgICAgICAgICAgIGBgbWVzc2FnZS9yZmM4MjJgYCwgdXNlIGBgOGJpdGBgIGlmICpjdGUqIGlzIG5vdCBzcGVjaWZpZWQuICBGb3IKKyAgICAgICAgICAgICAgYWxsIG90aGVyIHZhbHVlcyBvZiAqc3VidHlwZSosIHVzZSBgYDdiaXRgYC4KIAogICAgICAgIC4uIG5vdGU6OiBBICpjdGUqIG9mIGBgYmluYXJ5YGAgZG9lcyBub3QgYWN0dWFsbHkgd29yayBjb3JyZWN0bHkgeWV0LgotICAgICAgICAgIFRoZSBgYE1lc3NhZ2VgYCBvYmplY3QgYXMgbW9kaWZpZWQgYnkgYGBzZXRfY29udGVudGBgIGlzIGNvcnJlY3QsIGJ1dAotICAgICAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgZG9lcyBub3Qgc2VyaWFsaXplIGl0Ci0gICAgICAgICAgY29ycmVjdGx5LgorICAgICAgICAgIFRoZSBgYEVtYWlsTWVzc2FnZWBgIG9iamVjdCBhcyBtb2RpZmllZCBieSBgYHNldF9jb250ZW50YGAgaXMKKyAgICAgICAgICBjb3JyZWN0LCBidXQgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBkb2VzIG5vdAorICAgICAgICAgIHNlcmlhbGl6ZSBpdCBjb3JyZWN0bHkuCiAKICAgICAgICBJZiAqZGlzcG9zaXRpb24qIGlzIHNldCwgdXNlIGl0IGFzIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLiAgSWYgbm90IHNwZWNpZmllZCwgYW5kCiAgICAgICAgKmZpbGVuYW1lKiBpcyBzcGVjaWZpZWQsIGFkZCB0aGUgaGVhZGVyIHdpdGggdGhlIHZhbHVlIGBgYXR0YWNobWVudGBgLgotICAgICAgIElmIGl0IGlzIG5vdCBzcGVjaWZpZWQgYW5kICpmaWxlbmFtZSogaXMgYWxzbyBub3Qgc3BlY2lmaWVkLCBkbyBub3QgYWRkCi0gICAgICAgdGhlIGhlYWRlci4gIFRoZSBvbmx5IHZhbGlkIHZhbHVlcyBmb3IgKmRpc3Bvc2l0aW9uKiBhcmUgYGBhdHRhY2htZW50YGAKLSAgICAgICBhbmQgYGBpbmxpbmVgYC4KKyAgICAgICBJZiAqZGlzcG9zaXRpb24qIGlzIG5vdCBzcGVjaWZpZWQgYW5kICpmaWxlbmFtZSogaXMgYWxzbyBub3Qgc3BlY2lmaWVkLAorICAgICAgIGRvIG5vdCBhZGQgdGhlIGhlYWRlci4gIFRoZSBvbmx5IHZhbGlkIHZhbHVlcyBmb3IgKmRpc3Bvc2l0aW9uKiBhcmUKKyAgICAgICBgYGF0dGFjaG1lbnRgYCBhbmQgYGBpbmxpbmVgYC4KIAogICAgICAgIElmICpmaWxlbmFtZSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZSBgYGZpbGVuYW1lYGAKLSAgICAgICBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIuICBUaGVyZSBpcyBubwotICAgICAgIGRlZmF1bHQuCisgICAgICAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLgogCiAgICAgICAgSWYgKmNpZCogaXMgc3BlY2lmaWVkLCBhZGQgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgaGVhZGVyIHdpdGgKICAgICAgICAqY2lkKiBhcyBpdHMgdmFsdWUuCkBAIC00MzUsMyArMTk5LDkgQEAKICAgICAgICBgYGhlYWRlcm5hbWU6IGhlYWRlcnZhbHVlYGAgb3IgYSBsaXN0IG9mIGBgaGVhZGVyYGAgb2JqZWN0cwogICAgICAgIChkaXN0aW5ndWlzaGVkIGZyb20gc3RyaW5ncyBieSBoYXZpbmcgYSBgYG5hbWVgYCBhdHRyaWJ1dGUpLCBhZGQgdGhlCiAgICAgICAgaGVhZGVycyB0byAqbXNnKi4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjQgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0CmluZGV4IDlkN2Y5YmYuLmUyNGFjN2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QKQEAgLTgsNiArOCwxMiBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlCituZXcgQVBJIHRoZSBmdW5jdGlvbmFsaXR5IGlzIHByb3ZpZGVkIGJ5IHRoZSAqY3RlKiBwYXJhbWV0ZXIgb2YKK3RoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2QuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogV2hlbiBjcmVhdGluZyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMgZnJvbSBzY3JhdGNoLCB5b3Ugb2Z0ZW4KIG5lZWQgdG8gZW5jb2RlIHRoZSBwYXlsb2FkcyBmb3IgdHJhbnNwb3J0IHRocm91Z2ggY29tcGxpYW50IG1haWwgc2VydmVycy4gVGhpcwogaXMgZXNwZWNpYWxseSB0cnVlIGZvciA6bWltZXR5cGU6YGltYWdlL1wqYCBhbmQgOm1pbWV0eXBlOmB0ZXh0L1wqYCB0eXBlIG1lc3NhZ2VzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdAppbmRleCA4NDcwNzgzLi4yZDBkMTkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKQEAgLTIwLDMzICsyMCwyNyBAQAogCiAuLiBleGNlcHRpb246OiBNZXNzYWdlUGFyc2VFcnJvcigpCiAKLSAgIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYAotICAgY2xhc3MuICBJdCBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZUVycm9yYC4KKyAgIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZQorICAgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MuICBJdCBpcyBkZXJpdmVkIGZyb20KKyAgIDpleGM6YE1lc3NhZ2VFcnJvcmAuICBUaGlzIGNsYXNzIGlzIGFsc28gdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBwYXJzZXIgdXNlZAorICAgYnkgOm1vZDpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5YC4KIAogCiAuLiBleGNlcHRpb246OiBIZWFkZXJQYXJzZUVycm9yKCkKIAotICAgUmFpc2VkIHVuZGVyIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGVuIHBhcnNpbmcgdGhlIDpyZmM6YDI4MjJgIGhlYWRlcnMgb2YgYQotICAgbWVzc2FnZSwgdGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZVBhcnNlRXJyb3JgLiBJdCBjYW4gYmUgcmFpc2VkCi0gICBmcm9tIHRoZSA6bWV0aDpgUGFyc2VyLnBhcnNlIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlPmAgb3IKLSAgIDptZXRoOmBQYXJzZXIucGFyc2VzdHIgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2VzdHI+YCBtZXRob2RzLgotCi0gICBTaXR1YXRpb25zIHdoZXJlIGl0IGNhbiBiZSByYWlzZWQgaW5jbHVkZSBmaW5kaW5nIGFuIGVudmVsb3BlIGhlYWRlciBhZnRlciB0aGUKLSAgIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBvZiB0aGUgbWVzc2FnZSwgZmluZGluZyBhIGNvbnRpbnVhdGlvbiBsaW5lIGJlZm9yZSB0aGUKLSAgIGZpcnN0IDpyZmM6YDI4MjJgIGhlYWRlciBpcyBmb3VuZCwgb3IgZmluZGluZyBhIGxpbmUgaW4gdGhlIGhlYWRlcnMgd2hpY2ggaXMKLSAgIG5laXRoZXIgYSBoZWFkZXIgb3IgYSBjb250aW51YXRpb24gbGluZS4KKyAgIFJhaXNlZCB1bmRlciBzb21lIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBwYXJzaW5nIHRoZSA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIGEKKyAgIG1lc3NhZ2UsIHRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VQYXJzZUVycm9yYC4gIFRoZQorICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfYm91bmRhcnlgIG1ldGhvZCB3aWxsIHJhaXNlIHRoaXMKKyAgIGVycm9yIGlmIHRoZSBjb250ZW50IHR5cGUgaXMgdW5rbm93biB3aGVuIHRoZSBtZXRob2QgaXMgY2FsbGVkLgorICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgbWF5IHJhaXNlIHRoaXMgZXJyb3IgZm9yIGNlcnRhaW4gYmFzZTY0CisgICBkZWNvZGluZyBlcnJvcnMsIGFuZCB3aGVuIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBjcmVhdGUgYSBoZWFkZXIgdGhhdCBhcHBlYXJzCisgICB0byBjb250YWluIGFuIGVtYmVkZGVkIGhlYWRlciAodGhhdCBpcywgdGhlcmUgaXMgd2hhdCBpcyBzdXBwb3NlZCB0byBiZSBhCisgICBjb250aW51YXRpb24gbGluZSB0aGF0IGhhcyBubyBsZWFkaW5nIHdoaXRlc3BhY2UgYW5kIGxvb2tzIGxpa2UgYSBoZWFkZXIpLgogCiAKIC4uIGV4Y2VwdGlvbjo6IEJvdW5kYXJ5RXJyb3IoKQogCi0gICBSYWlzZWQgdW5kZXIgc29tZSBlcnJvciBjb25kaXRpb25zIHdoZW4gcGFyc2luZyB0aGUgOnJmYzpgMjgyMmAgaGVhZGVycyBvZiBhCi0gICBtZXNzYWdlLCB0aGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlUGFyc2VFcnJvcmAuIEl0IGNhbiBiZSByYWlzZWQKLSAgIGZyb20gdGhlIDptZXRoOmBQYXJzZXIucGFyc2UgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2U+YCBvcgotICAgOm1ldGg6YFBhcnNlci5wYXJzZXN0ciA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cj5gIG1ldGhvZHMuCi0KLSAgIFNpdHVhdGlvbnMgd2hlcmUgaXQgY2FuIGJlIHJhaXNlZCBpbmNsdWRlIG5vdCBiZWluZyBhYmxlIHRvIGZpbmQgdGhlIHN0YXJ0aW5nIG9yCi0gICB0ZXJtaW5hdGluZyBib3VuZGFyeSBpbiBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBtZXNzYWdlIHdoZW4gc3RyaWN0IHBhcnNpbmcKLSAgIGlzIHVzZWQuCisgICBEZXByZWNhdGVkIGFuZCBubyBsb25nZXIgdXNlZC4KIAogCiAuLiBleGNlcHRpb246OiBNdWx0aXBhcnRDb252ZXJzaW9uRXJyb3IoKQpAQCAtNjQsMTQgKzU4LDE0IEBACiAgICA6Y2xhc3M6YH5lbWFpbC5taW1lLm5vbm11bHRpcGFydC5NSU1FTm9uTXVsdGlwYXJ0YCAoZS5nLgogICAgOmNsYXNzOmB+ZW1haWwubWltZS5pbWFnZS5NSU1FSW1hZ2VgKS4KIAotSGVyZSdzIHRoZSBsaXN0IG9mIHRoZSBkZWZlY3RzIHRoYXQgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYAorCitIZXJlIGlzIHRoZSBsaXN0IG9mIHRoZSBkZWZlY3RzIHRoYXQgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYAogY2FuIGZpbmQgd2hpbGUgcGFyc2luZyBtZXNzYWdlcy4gIE5vdGUgdGhhdCB0aGUgZGVmZWN0cyBhcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UKIHdoZXJlIHRoZSBwcm9ibGVtIHdhcyBmb3VuZCwgc28gZm9yIGV4YW1wbGUsIGlmIGEgbWVzc2FnZSBuZXN0ZWQgaW5zaWRlIGEKIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYCBoYWQgYSBtYWxmb3JtZWQgaGVhZGVyLCB0aGF0IG5lc3RlZCBtZXNzYWdlCiBvYmplY3Qgd291bGQgaGF2ZSBhIGRlZmVjdCwgYnV0IHRoZSBjb250YWluaW5nIG1lc3NhZ2VzIHdvdWxkIG5vdC4KIAotQWxsIGRlZmVjdCBjbGFzc2VzIGFyZSBzdWJjbGFzc2VkIGZyb20gOmNsYXNzOmBlbWFpbC5lcnJvcnMuTWVzc2FnZURlZmVjdGAsIGJ1dAotdGhpcyBjbGFzcyBpcyAqbm90KiBhbiBleGNlcHRpb24hCitBbGwgZGVmZWN0IGNsYXNzZXMgYXJlIHN1YmNsYXNzZWQgZnJvbSA6Y2xhc3M6YGVtYWlsLmVycm9ycy5NZXNzYWdlRGVmZWN0YC4KIAogKiA6Y2xhc3M6YE5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdGAgLS0gQSBtZXNzYWdlIGNsYWltZWQgdG8gYmUgYSBtdWx0aXBhcnQsCiAgIGJ1dCBoYWQgbm8gOm1pbWV0eXBlOmBib3VuZGFyeWAgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuZXhhbXBsZXMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ZTlhZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5leGFtcGxlcy5yc3QKQEAgLTAsMCArMSw2NyBAQAorLi4gX2VtYWlsLWV4YW1wbGVzOgorCis6bW9kOmBlbWFpbGA6IEV4YW1wbGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0hlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHRvIHJlYWQsIHdyaXRlLAorYW5kIHNlbmQgc2ltcGxlIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIG1vcmUgY29tcGxleCBNSU1FIG1lc3NhZ2VzLgorCitGaXJzdCwgbGV0J3Mgc2VlIGhvdyB0byBjcmVhdGUgYW5kIHNlbmQgYSBzaW1wbGUgdGV4dCBtZXNzYWdlIChib3RoIHRoZQordGV4dCBjb250ZW50IGFuZCB0aGUgYWRkcmVzc2VzIG1heSBjb250YWluIHVuaWNvZGUgY2hhcmFjdGVycyk6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CisKKworUGFyc2luZyBSRkM4MjIgaGVhZGVycyBjYW4gZWFzaWx5IGJlIGRvbmUgYnkgdGhlIHVzaW5nIHRoZSBjbGFzc2VzCitmcm9tIHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBtb2R1bGU6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIGEgTUlNRSBtZXNzYWdlIGNvbnRhaW5pbmcgYSBidW5jaCBvZiBmYW1pbHkKK3BpY3R1cmVzIHRoYXQgbWF5IGJlIHJlc2lkaW5nIGluIGEgZGlyZWN0b3J5OgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFzIGFuIGVtYWlsCittZXNzYWdlOiBbMV1fCisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtZGlyLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVucGFjayBhIE1JTUUgbWVzc2FnZSBsaWtlIHRoZSBvbmUKK2Fib3ZlLCBpbnRvIGEgZGlyZWN0b3J5IG9mIGZpbGVzOgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBjcmVhdGUgYW4gSFRNTCBtZXNzYWdlIHdpdGggYW4gYWx0ZXJuYXRpdmUgcGxhaW4KK3RleHQgdmVyc2lvbi4gIFRvIG1ha2UgdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHdlIGluY2x1ZGUgYSByZWxhdGVkCitpbWFnZSBpbiB0aGUgaHRtbCBwYXJ0LCBhbmQgd2Ugc2F2ZSBhIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZCB0bworZGlzaywgYXMgd2VsbCBhcyBzZW5kaW5nIGl0LgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CisKKworSWYgd2Ugd2VyZSBzZW50IHRoZSBtZXNzYWdlIGZyb20gdGhlIGxhc3QgZXhhbXBsZSwgaGVyZSBpcyBvbmUgd2F5IHdlIGNvdWxkCitwcm9jZXNzIGl0OgorCisuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUucHkKKworVXAgdG8gdGhlIHByb21wdCwgdGhlIG91dHB1dCBmcm9tIHRoZSBhYm92ZSBpczoKKworLi4gY29kZS1ibG9jazo6IG5vbmUKKworICAgIFRvOiBQZW5lbG9wZSBQdXNzeWNhdCA8cGVuZWxvcGVAZXhhbXBsZS5jb20+LCBGYWJyZXR0ZSBQdXNzeWNhdCA8ZmFicmV0dGVAZXhhbXBsZS5jb20+CisgICAgRnJvbTogUGVww6kgTGUgUGV3IDxwZXBlQGV4YW1wbGUuY29tPgorICAgIFN1YmplY3Q6IEF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyCisKKyAgICBTYWx1dCEKKworICAgIENlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIFRoYW5rcyB0byBNYXR0aGV3IERpeG9uIENvd2xlcyBmb3IgdGhlIG9yaWdpbmFsIGluc3BpcmF0aW9uIGFuZCBleGFtcGxlcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IGQ1OTZlZDguLmFiMGZiYzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtOCwyMTAgKzgsMjQ0IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLU9uZSBvZiB0aGUgbW9zdCBjb21tb24gdGFza3MgaXMgdG8gZ2VuZXJhdGUgdGhlIGZsYXQgdGV4dCBvZiB0aGUgZW1haWwgbWVzc2FnZQotcmVwcmVzZW50ZWQgYnkgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUuICBZb3Ugd2lsbCBuZWVkIHRvIGRvIHRoaXMgaWYgeW91IHdhbnQKLXRvIHNlbmQgeW91ciBtZXNzYWdlIHZpYSB0aGUgOm1vZDpgc210cGxpYmAgbW9kdWxlIG9yIHRoZSA6bW9kOmBubnRwbGliYCBtb2R1bGUsCi1vciBwcmludCB0aGUgbWVzc2FnZSBvbiB0aGUgY29uc29sZS4gIFRha2luZyBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBhbmQKLXByb2R1Y2luZyBhIGZsYXQgdGV4dCBkb2N1bWVudCBpcyB0aGUgam9iIG9mIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MuCitPbmUgb2YgdGhlIG1vc3QgY29tbW9uIHRhc2tzIGlzIHRvIGdlbmVyYXRlIHRoZSBmbGF0IChzZXJpYWxpemVkKSB2ZXJzaW9uIG9mCit0aGUgZW1haWwgbWVzc2FnZSByZXByZXNlbnRlZCBieSBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZS4gIFlvdSB3aWxsIG5lZWQgdG8KK2RvIHRoaXMgaWYgeW91IHdhbnQgdG8gc2VuZCB5b3VyIG1lc3NhZ2UgdmlhIDptZXRoOmBzbXRwbGliLlNNVFAuc2VuZG1haWxgIG9yCit0aGUgOm1vZDpgbm50cGxpYmAgbW9kdWxlLCBvciBwcmludCB0aGUgbWVzc2FnZSBvbiB0aGUgY29uc29sZS4gIFRha2luZyBhCittZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYW5kIHByb2R1Y2luZyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gaXMgdGhlIGpvYgorb2YgdGhlIGdlbmVyYXRvciBjbGFzc2VzLgogCi1BZ2FpbiwgYXMgd2l0aCB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsIHlvdSBhcmVuJ3QgbGltaXRlZCB0byB0aGUKLWZ1bmN0aW9uYWxpdHkgb2YgdGhlIGJ1bmRsZWQgZ2VuZXJhdG9yOyB5b3UgY291bGQgd3JpdGUgb25lIGZyb20gc2NyYXRjaAoteW91cnNlbGYuICBIb3dldmVyIHRoZSBidW5kbGVkIGdlbmVyYXRvciBrbm93cyBob3cgdG8gZ2VuZXJhdGUgbW9zdCBlbWFpbCBpbiBhCi1zdGFuZGFyZHMtY29tcGxpYW50IHdheSwgc2hvdWxkIGhhbmRsZSBNSU1FIGFuZCBub24tTUlNRSBlbWFpbCBtZXNzYWdlcyBqdXN0Ci1maW5lLCBhbmQgaXMgZGVzaWduZWQgc28gdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmbGF0IHRleHQsIHRvIGEgbWVzc2FnZQotc3RydWN0dXJlIHZpYSB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MsIGFuZCBiYWNrIHRvIGZsYXQgdGV4dCwKLWlzIGlkZW1wb3RlbnQgKHRoZSBpbnB1dCBpcyBpZGVudGljYWwgdG8gdGhlIG91dHB1dCkgWyNdXy4gIE9uIHRoZSBvdGhlciBoYW5kLAotdXNpbmcgdGhlIEdlbmVyYXRvciBvbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY29uc3RydWN0ZWQgYnkgcHJvZ3JhbQotbWF5IHJlc3VsdCBpbiBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdCBhcyBkZWZhdWx0cwotYXJlIGZpbGxlZCBpbi4KK0FzIHdpdGggdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgbW9kdWxlLCB5b3UgYXJlbid0IGxpbWl0ZWQgdG8gdGhlIGZ1bmN0aW9uYWxpdHkKK29mIHRoZSBidW5kbGVkIGdlbmVyYXRvcjsgeW91IGNvdWxkIHdyaXRlIG9uZSBmcm9tIHNjcmF0Y2ggeW91cnNlbGYuICBIb3dldmVyCit0aGUgYnVuZGxlZCBnZW5lcmF0b3Iga25vd3MgaG93IHRvIGdlbmVyYXRlIG1vc3QgZW1haWwgaW4gYSBzdGFuZGFyZHMtY29tcGxpYW50Cit3YXksIHNob3VsZCBoYW5kbGUgTUlNRSBhbmQgbm9uLU1JTUUgZW1haWwgbWVzc2FnZXMganVzdCBmaW5lLCBhbmQgaXMgZGVzaWduZWQKK3NvIHRoYXQgdGhlIGJ5dGVzLW9yaWVudGVkIHBhcnNpbmcgYW5kIGdlbmVyYXRpb24gb3BlcmF0aW9ucyBhcmUgaW52ZXJzZXMsCithc3N1bWluZyB0aGUgc2FtZSBub24tdHJhbnNmb3JtaW5nIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGlzIHVzZWQgZm9yIGJvdGguICBUaGF0CitpcywgcGFyc2luZyB0aGUgc2VyaWFsaXplZCBieXRlIHN0cmVhbSB2aWEgdGhlCis6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzIGFuZCB0aGVuIHJlZ2VuZXJhdGluZyB0aGUgc2VyaWFsaXplZAorYnl0ZSBzdHJlYW0gdXNpbmcgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgc2hvdWxkIHByb2R1Y2Ugb3V0cHV0IGlkZW50aWNhbCB0bwordGhlIGlucHV0IFsjXV8uICAoT24gdGhlIG90aGVyIGhhbmQsIHVzaW5nIHRoZSBnZW5lcmF0b3Igb24gYW4KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjb25zdHJ1Y3RlZCBieSBwcm9ncmFtIG1heSByZXN1bHQgaW4KK2NoYW5nZXMgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3QgYXMgZGVmYXVsdHMgYXJlCitmaWxsZWQgaW4uKQogCi06Y2xhc3M6YGJ5dGVzYCBvdXRwdXQgY2FuIGJlIGdlbmVyYXRlZCB1c2luZyB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgY2xhc3MuCi1JZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGNvbnRhaW5zIG5vbi1BU0NJSSBieXRlcywgdGhpcyBnZW5lcmF0b3IncwotOm1ldGg6YH5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2Qgd2lsbCBlbWl0IHRoZSBvcmlnaW5hbCBieXRlcy4gIFBhcnNpbmcgYQotYmluYXJ5IG1lc3NhZ2UgYW5kIHRoZW4gZmxhdHRlbmluZyBpdCB3aXRoIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIHNob3VsZCBiZQotaWRlbXBvdGVudCBmb3Igc3RhbmRhcmRzIGNvbXBsaWFudCBtZXNzYWdlcy4KLQotSGVyZSBhcmUgdGhlIHB1YmxpYyBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlCi06bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZToKK1RoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgY2FuIGJlIHVzZWQgdG8gZmxhdHRlbiBhIG1lc3NhZ2UgaW50byBhIHRleHQgKGFzCitvcHBvc2VkIHRvIGJpbmFyeSkgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiwgYnV0IHNpbmNlIFVuaWNvZGUgY2Fubm90CityZXByZXNlbnQgYmluYXJ5IGRhdGEgZGlyZWN0bHksIHRoZSBtZXNzYWdlIGlzIG9mIG5lY2Vzc2l0eSB0cmFuc2Zvcm1lZCBpbnRvCitzb21ldGhpbmcgdGhhdCBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMsIHVzaW5nIHRoZSBzdGFuZGFyZCBlbWFpbCBSRkMKK0NvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcgdGVjaG5pcXVlcyBmb3IgZW5jb2RpbmcgZW1haWwgbWVzc2FnZXMgZm9yIHRyYW5zcG9ydAorb3ZlciBjaGFubmVscyB0aGF0IGFyZSBub3QgIjggYml0IGNsZWFuIi4KIAogCi0uLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCi0KLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAotICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCi0gICBhbmQgYmUgdXNhYmxlIGFzIHRoZSBvdXRwdXQgZmlsZSBmb3IgdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLSAgIE9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGEgZmxhZyB0aGF0LCB3aGVuIGBgVHJ1ZWBgLCBwdXRzIGEgYGA+YGAgY2hhcmFjdGVyIGluCi0gICBmcm9udCBvZiBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyBleGFjdGx5IGFzIGBgRnJvbWBgLCBpLmUuIGBgRnJvbWBgCi0gICBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuICBUaGlzIGlzIHRoZSBvbmx5IGd1YXJhbnRlZWQKLSAgIHBvcnRhYmxlIHdheSB0byBhdm9pZCBoYXZpbmcgc3VjaCBsaW5lcyBiZSBtaXN0YWtlbiBmb3IgYSBVbml4IG1haWxib3ggZm9ybWF0Ci0gICBlbnZlbG9wZSBoZWFkZXIgc2VwYXJhdG9yIChzZWUgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAotICAgPGh0dHBzOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8gZm9yIGRldGFpbHMpLiAgKm1hbmdsZV9mcm9tXyoKLSAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLCBidXQgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8gYGBGYWxzZWBgIGlmIHlvdSBhcmUgbm90Ci0gICB3cml0aW5nIFVuaXggbWFpbGJveCBmb3JtYXQgZmlsZXMuCi0KLSAgIE9wdGlvbmFsICptYXhoZWFkZXJsZW4qIHNwZWNpZmllcyB0aGUgbG9uZ2VzdCBsZW5ndGggZm9yIGEgbm9uLWNvbnRpbnVlZCBoZWFkZXIuCi0gICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIHRoYW4gKm1heGhlYWRlcmxlbiogKGluIGNoYXJhY3RlcnMsIHdpdGggdGFicwotICAgZXhwYW5kZWQgdG8gOCBzcGFjZXMpLCB0aGUgaGVhZGVyIHdpbGwgYmUgc3BsaXQgYXMgZGVmaW5lZCBpbiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCi0gICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgotCi0gICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCi0gICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAotICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKLSAgIGlzIHVzZWQuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKLQotCi0gICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKLQotICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQgYXQKLSAgICAgICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlCi0gICAgICB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nIHRleHQgd2lsbAotICAgICAgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLgotCi0gICAgICBPcHRpb25hbCAqdW5peGZyb20qIGlzIGEgZmxhZyB0aGF0IGZvcmNlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIGVudmVsb3BlCi0gICAgICBoZWFkZXIgZGVsaW1pdGVyIGJlZm9yZSB0aGUgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSByb290IG1lc3NhZ2UKLSAgICAgIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMgbm8gZW52ZWxvcGUgaGVhZGVyLCBhIHN0YW5kYXJkIG9uZSBpcwotICAgICAgY3JhZnRlZC4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIGBgRmFsc2VgYCB0byBpbmhpYml0IHRoZSBwcmludGluZyBvZgotICAgICAgdGhlIGVudmVsb3BlIGRlbGltaXRlci4KLQotICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KLQotICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgKm1zZypcJ3Mgb3IgYGBHZW5lcmF0b3JgYFwncyBgYHBvbGljeWBgLgotCi0gICAgICBCZWNhdXNlIHN0cmluZ3MgY2Fubm90IHJlcHJlc2VudCBub24tQVNDSUkgYnl0ZXMsIGlmIHRoZSBwb2xpY3kgdGhhdAotICAgICAgYXBwbGllcyB3aGVuIGBgZmxhdHRlbmBgIGlzIHJ1biBoYXMgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYAotICAgICAgc2V0IHRvIGBgOGJpdGBgLCBgYEdlbmVyYXRvcmBgIHdpbGwgb3BlcmF0ZSBhcyBpZiBpdCB3ZXJlIHNldCB0bwotICAgICAgYGA3Yml0YGAuICBUaGlzIG1lYW5zIHRoYXQgbWVzc2FnZXMgcGFyc2VkIHdpdGggYSBCeXRlcyBwYXJzZXIgdGhhdCBoYXZlCi0gICAgICBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiBgYDhiaXRgYCB3aWxsIGJlIGNvbnZlcnRlZAotICAgICAgdG8gYSB1c2UgYSBgYDdiaXRgYCBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgTm9uLUFTQ0lJIGJ5dGVzIGluIHRoZQotICAgICAgaGVhZGVycyB3aWxsIGJlIDpyZmM6YDIwNDdgIGVuY29kZWQgd2l0aCBhIGNoYXJzZXQgb2YgYGB1bmtub3duLThiaXRgYC4KLQotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHJlLWVuY29kaW5nIGBgOGJpdGBgIG1lc3NhZ2UgYm9kaWVzLCBhbmQgdGhlCi0gICAgICAgICAqbGluZXNlcCogYXJndW1lbnQuCi0KLSAgIC4uIG1ldGhvZDo6IGNsb25lKGZwKQotCi0gICAgICBSZXR1cm4gYW4gaW5kZXBlbmRlbnQgY2xvbmUgb2YgdGhpcyA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aCB0aGUKLSAgICAgIGV4YWN0IHNhbWUgb3B0aW9ucy4KLQotICAgLi4gbWV0aG9kOjogd3JpdGUocykKLQotICAgICAgV3JpdGUgdGhlIHN0cmluZyAqcyogdG8gdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QsIGkuZS4gKm91dGZwKiBwYXNzZWQgdG8KLSAgICAgIDpjbGFzczpgR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcyBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UgQVBJCi0gICAgICBmb3IgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlcyB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgIGZ1bmN0aW9uLgotCi1BcyBhIGNvbnZlbmllbmNlLCBzZWUgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgbWV0aG9kcwotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nYCBhbmQgYGBzdHIoYU1lc3NhZ2UpYGAsIGEuay5hLgotOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuX19zdHJfX2AsIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mIGEKLWZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCi06bW9kOmBlbWFpbC5tZXNzYWdlYC4KLQotLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgXAorLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKQogCi0gICBUaGUgY29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIGJpbmFyeQotICAgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgIGNhbGxlZCAqb3V0ZnAqIGZvciBhbiBhcmd1bWVudC4gICpvdXRmcCogbXVzdAotICAgc3VwcG9ydCBhIDptZXRoOmB3cml0ZWAgbWV0aG9kIHRoYXQgYWNjZXB0cyBiaW5hcnkgZGF0YS4KKyAgIFJldHVybiBhIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG9iamVjdCB0aGF0IHdpbGwgd3JpdGUgYW55IG1lc3NhZ2UgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kLCBvciBhbnkgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgdGV4dCBwcm92aWRlZAorICAgdG8gdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kLCB0byB0aGUgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgICpvdXRmcCouCisgICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCBhIGBgd3JpdGVgYCBtZXRob2QgdGhhdCBhY2NlcHRzIGJpbmFyeSBkYXRhLgogCi0gICBPcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBhIGZsYWcgdGhhdCwgd2hlbiBgYFRydWVgYCwgcHV0cyBhIGBgPmBgCi0gICBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgZXhhY3RseSBhcyBgYEZyb21gYCwKLSAgIGkuZS4gYGBGcm9tYGAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLiAgVGhpcyBpcyB0aGUKLSAgIG9ubHkgZ3VhcmFudGVlZCBwb3J0YWJsZSB3YXkgdG8gYXZvaWQgaGF2aW5nIHN1Y2ggbGluZXMgYmUgbWlzdGFrZW4gZm9yIGEKLSAgIFVuaXggbWFpbGJveCBmb3JtYXQgZW52ZWxvcGUgaGVhZGVyIHNlcGFyYXRvciAoc2VlIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RICi0gICBGT1JNQVQgSVMgQkFEIDxodHRwczovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfIGZvciBkZXRhaWxzKS4KLSAgICptYW5nbGVfZnJvbV8qIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLCBidXQgeW91IG1pZ2h0IHdhbnQgdG8gc2V0IHRoaXMgdG8KLSAgIGBgRmFsc2VgYCBpZiB5b3UgYXJlIG5vdCB3cml0aW5nIFVuaXggbWFpbGJveCBmb3JtYXQgZmlsZXMuCisgICBJZiBvcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBgYFRydWVgYCwgcHV0IGEgYGA+YGAgY2hhcmFjdGVyIGluIGZyb250IG9mCisgICBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBleGFjdCBzdHJpbmcgYGAiRnJvbSAiYGAsIHRoYXQgaXMKKyAgIGBgRnJvbWBgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuICAqbWFuZ2xlX2Zyb21fKgorICAgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWFuZ2xlX2Zyb21fYAorICAgc2V0dGluZyBvZiB0aGUgKnBvbGljeSogKHdoaWNoIGlzIGBgVHJ1ZWBgIGZvciB0aGUKKyAgIDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBwb2xpY3kgYW5kIGBgRmFsc2VgYCBmb3IgYWxsIG90aGVycykuCisgICAqbWFuZ2xlX2Zyb21fKiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB1bml4IG1ib3gKKyAgIGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgIGFuZCBgV0hZIFRIRSBDT05URU5ULUxFTkdUSCBGT1JNQVQgSVMgQkFECisgICA8aHR0cDovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfKS4KIAotICAgT3B0aW9uYWwgKm1heGhlYWRlcmxlbiogc3BlY2lmaWVzIHRoZSBsb25nZXN0IGxlbmd0aCBmb3IgYSBub24tY29udGludWVkCi0gICBoZWFkZXIuICBXaGVuIGEgaGVhZGVyIGxpbmUgaXMgbG9uZ2VyIHRoYW4gKm1heGhlYWRlcmxlbiogKGluIGNoYXJhY3RlcnMsCi0gICB3aXRoIHRhYnMgZXhwYW5kZWQgdG8gOCBzcGFjZXMpLCB0aGUgaGVhZGVyIHdpbGwgYmUgc3BsaXQgYXMgZGVmaW5lZCBpbiB0aGUKLSAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIKLSAgIHdyYXBwaW5nLiAgVGhlIGRlZmF1bHQgaXMgNzgsIGFzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKSBieQotICAgOnJmYzpgMjgyMmAuCisgICBJZiAqbWF4aGVhZGVybGVuKiBpcyBub3QgYGBOb25lYGAsIHJlZm9sZCBhbnkgaGVhZGVyIGxpbmVzIHRoYXQgYXJlIGxvbmdlcgorICAgdGhhbiAqbWF4aGVhZGVybGVuKiwgb3IgaWYgYGAwYGAsIGRvIG5vdCByZXdyYXAgYW55IGhlYWRlcnMuICBJZgorICAgKm1hbmhlYWRlcmxlbiogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgd3JhcCBoZWFkZXJzIGFuZCBvdGhlciBtZXNzYWdlCisgICBsaW5lcyBhY2NvcmRpbmcgdG8gdGhlICpwb2xpY3kqIHNldHRpbmdzLgogCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIHVzZSB0aGF0IHBvbGljeSB0byBjb250cm9sIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIElmCisgICAqcG9saWN5KiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB1c2UgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgb2JqZWN0IHBhc3NlZCB0byBgYGZsYXR0ZW5gYCB0byBjb250cm9sIHRoZSBtZXNzYWdlIGdlbmVyYXRpb24uICBTZWUKKyAgIDptb2Q6YGVtYWlsLnBvbGljeWAgZm9yIGRldGFpbHMgb24gd2hhdCAqcG9saWN5KiBjb250cm9scy4KIAotICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQotICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIElmIG5vICpwb2xpY3kqIGlzIHNwZWNpZmllZCwKLSAgIHRoZW4gdGhlICpwb2xpY3kqIGF0dGFjaGVkIHRvIHRoZSBtZXNzYWdlIG9iamVjdCBwYXNzZWQgdG8gOmF0dHI6YGZsYXR0ZW5gCi0gICBpcyB1c2VkLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCi0gICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlICptYW5nbGVfZnJvbV8qCisgICAgICBhbmQgKm1heGhlYWRlcmxlbiogcGFyYW1ldGVycyBpcyB0byBmb2xsb3cgdGhlIHBvbGljeS4KIAogCiAgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKIAogICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKICAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAKLSAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLiAgU3VicGFydHMgYXJlIHZpc2l0ZWQgZGVwdGgtZmlyc3QgYW5kIHRoZSByZXN1bHRpbmcKLSAgICAgIHRleHQgd2lsbCBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uCi0gICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksCi0gICAgICB0aGVuIGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZCBtZXNzYWdlIHRoYXQKLSAgICAgIGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgd2lsbCBiZSBjb3BpZWQgZmFpdGhmdWxseSB0byB0aGUgb3V0cHV0LiAgSWYKLSAgICAgIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgdGhlIGJ5dGVzIHdpbGwgYmUgY29udmVydGVkIGFzIG5lZWRlZAotICAgICAgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgSW4gcGFydGljdWxhciwKLSAgICAgIFJGQy1pbnZhbGlkIG5vbi1BU0NJSSBieXRlcyBpbiBoZWFkZXJzIHdpbGwgYmUgZW5jb2RlZCB1c2luZyB0aGUgTUlNRQotICAgICAgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KIAotICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYSBjb21wbGVtZW50YXJ5IG9wdGlvbiB0aGF0IGp1c3QgZG9lcyB0aGUgUkZDCi0gICAgICAgICBjb21wbGlhbmNlIHRyYW5zZm9ybWF0aW9uIGJ1dCBsZWF2ZXMgQ1RFIDhiaXQgcGFydHMgYWxvbmUuCisgICAgICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKKyAgICAgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksIGNvcHkgYW55IGhlYWRlcnMgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZAorICAgICAgbWVzc2FnZSB0aGF0IGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgdG8gdGhlIG91dHB1dCB3aXRoIGFueSBieXRlcyB3aXRoIHRoZQorICAgICAgaGlnaCBiaXQgc2V0IHJlcHJvZHVjZWQgYXMgaW4gdGhlIG9yaWdpbmFsLCBhbmQgcHJlc2VydmUgdGhlIG5vbi1BU0NJSQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGFueSBib2R5IHBhcnRzIHRoYXQgaGF2ZSB0aGVtLgorICAgICAgSWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLCBjb252ZXJ0IHRoZSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXMKKyAgICAgIG5lZWRlZCB1c2luZyBhbiBBU0NJSS1jb21wYXRpYmxlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4KKyAgICAgIFRoYXQgaXMsIHRyYW5zZm9ybSBwYXJ0cyB3aXRoIG5vbi1BU0NJSQorICAgICAgOm1haWxoZWFkZXI6YENvdG5lbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRgKSB0byBhbiBBU0NJSSBjb21wYXRpYmlsZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLCBhbmQgZW5jb2RlIFJGQy1pbnZhbGlkIG5vbi1BU0NJSQorICAgICAgYnl0ZXMgaW4gaGVhZGVycyB1c2luZyB0aGUgTUlNRSBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMKKyAgICAgIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCiAKLSAgICAgIE1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZSBhCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCB3aWxsIGJlIHJlY29uc3RydWN0ZWQKLSAgICAgIGFzIDhiaXQgaWYgdGhleSBoYXZlIG5vdCBiZWVuIG1vZGlmaWVkLgorICAgICAgLi4gWFhYOiBUaGVyZSBzaG91bGQgYmUgYW4gb3B0aW9uIHRoYXQganVzdCBkb2VzIHRoZSBSRkMKKyAgICAgICAgIGNvbXBsaWFuY2UgdHJhbnNmb3JtYXRpb24gb24gaGVhZGVycyBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgogCi0gICAgICBPcHRpb25hbCAqdW5peGZyb20qIGlzIGEgZmxhZyB0aGF0IGZvcmNlcyB0aGUgcHJpbnRpbmcgb2YgdGhlIGVudmVsb3BlCi0gICAgICBoZWFkZXIgZGVsaW1pdGVyIGJlZm9yZSB0aGUgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSByb290IG1lc3NhZ2UKLSAgICAgIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMgbm8gZW52ZWxvcGUgaGVhZGVyLCBhIHN0YW5kYXJkIG9uZSBpcwotICAgICAgY3JhZnRlZC4gIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIGBgRmFsc2VgYCB0byBpbmhpYml0IHRoZSBwcmludGluZyBvZgotICAgICAgdGhlIGVudmVsb3BlIGRlbGltaXRlci4KLQorICAgICAgSWYgKnVuaXhmcm9tKiBpcyBgYFRydWVgYCwgcHJpbnQgdGhlIGVudmVsb3BlIGhlYWRlciBkZWxpbWl0ZXIgdXNlZCBieQorICAgICAgdGhlIFVuaXggbWFpbGJveCBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCkgYmVmb3JlIHRoZSBmaXJzdCBvZiB0aGUKKyAgICAgIDpyZmM6YDUzMjJgIGhlYWRlcnMgb2YgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzCisgICAgICBubyBlbnZlbG9wZSBoZWFkZXIsIGNyYWZ0IGEgc3RhbmRhcmQgb25lLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgogICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KIAotICAgICAgT3B0aW9uYWwgKmxpbmVzZXAqIHNwZWNpZmllcyB0aGUgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVyIHVzZWQgdG8KLSAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgYGBHZW5lcmF0b3JgYFwgb3IgKm1zZypcICdzIGBgcG9saWN5YGAuCisgICAgICBJZiAqbGluZXNlcCogaXMgbm90IGBgTm9uZWBgLCB1c2UgaXQgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIgYmV0d2VlbgorICAgICAgYWxsIHRoZSBsaW5lcyBvZiB0aGUgZmxhdHRlbmVkIG1lc3NhZ2UuICBJZiAqbGluZXNlcCogaXMgYGBOb25lYGAgKHRoZQorICAgICAgZGVmYXVsdCksIHVzZSB0aGUgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSAqcG9saWN5Ki4KKworICAgICAgLi4gWFhYOiBmbGF0dGVuIHNob3VsZCB0YWtlIGEgKnBvbGljeSoga2V5d29yZC4KKwogCiAgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKIAogICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aAotICAgICAgdGhlIGV4YWN0IHNhbWUgb3B0aW9ucy4KKyAgICAgIHRoZSBleGFjdCBzYW1lIG9wdGlvbiBzZXR0aW5ncywgYW5kICpmcCogYXMgdGhlIG5ldyAqb3V0ZnAqLgorCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKHMpCiAKLSAgICAgIFdyaXRlIHRoZSBzdHJpbmcgKnMqIHRvIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LiAgKnMqIGlzIGVuY29kZWQgdXNpbmcKLSAgICAgIHRoZSBgYEFTQ0lJYGAgY29kZWMgYW5kIHdyaXR0ZW4gdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAgKm91dGZwKgotICAgICAgKm91dGZwKiBwYXNzZWQgdG8gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuICBUaGlzCi0gICAgICBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UgQVBJIGZvciA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZXMKLSAgICAgIHRvIGJlIHVzZWQgaW4gdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi1UaGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgYWxzbyBwcm92aWRlcyBhIGRlcml2ZWQgY2xhc3MsIGNhbGxlZAotOmNsYXNzOmBEZWNvZGVkR2VuZXJhdG9yYCB3aGljaCBpcyBsaWtlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcywKLWV4Y2VwdCB0aGF0IG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydHMgYXJlIHN1YnN0aXR1dGVkIHdpdGggYSBmb3JtYXQgc3RyaW5nCi1yZXByZXNlbnRpbmcgdGhlIHBhcnQuCisgICAgICBFbmNvZGUgKnMqIHVzaW5nIHRoZSBgYEFTQ0lJYGAgY29kZWMgYW5kIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgIGVycm9yCisgICAgICBoYW5kbGVyLCBhbmQgcGFzcyBpdCB0byB0aGUgKndyaXRlKiBtZXRob2Qgb2YgdGhlICpvdXRmcCogcGFzc2VkIHRvIHRoZQorICAgICAgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4KIAogCi0uLiBjbGFzczo6IERlY29kZWRHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgsIGZtdD1Ob25lKQorQXMgYSBjb252ZW5pZW5jZSwgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIHByb3ZpZGVzIHRoZSBtZXRob2RzCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmFzX2J5dGVzYCBhbmQgYGBieXRlcyhhTWVzc2FnZSlgYCAoYS5rLmEuCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLl9fYnl0ZXNfX2ApLCB3aGljaCBzaW1wbGlmeSB0aGUgZ2VuZXJhdGlvbiBvZgorYSBzZXJpYWxpemVkIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKKzptb2Q6YGVtYWlsLm1lc3NhZ2VgLgogCi0gICBUaGlzIGNsYXNzLCBkZXJpdmVkIGZyb20gOmNsYXNzOmBHZW5lcmF0b3JgIHdhbGtzIHRocm91Z2ggYWxsIHRoZSBzdWJwYXJ0cyBvZiBhCi0gICBtZXNzYWdlLiAgSWYgdGhlIHN1YnBhcnQgaXMgb2YgbWFpbiB0eXBlIDptaW1ldHlwZTpgdGV4dGAsIHRoZW4gaXQgcHJpbnRzIHRoZQotICAgZGVjb2RlZCBwYXlsb2FkIG9mIHRoZSBzdWJwYXJ0LiBPcHRpb25hbCAqX21hbmdsZV9mcm9tXyogYW5kICptYXhoZWFkZXJsZW4qIGFyZQotICAgYXMgd2l0aCB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MuCiAKLSAgIElmIHRoZSBzdWJwYXJ0IGlzIG5vdCBvZiBtYWluIHR5cGUgOm1pbWV0eXBlOmB0ZXh0YCwgb3B0aW9uYWwgKmZtdCogaXMgYSBmb3JtYXQKLSAgIHN0cmluZyB0aGF0IGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgbWVzc2FnZSBwYXlsb2FkLiAqZm10KiBpcyBleHBhbmRlZCB3aXRoIHRoZQotICAgZm9sbG93aW5nIGtleXdvcmRzLCBgYCUoa2V5d29yZClzYGAgZm9ybWF0OgorQmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgYmluYXJ5IGRhdGEsIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgY2xhc3MgbXVzdAorY29udmVydCBhbnkgYmluYXJ5IGRhdGEgaW4gYW55IG1lc3NhZ2UgaXQgZmxhdHRlbnMgdG8gYW4gQVNDSUkgY29tcGF0aWJsZQorZm9ybWF0LCBieSBjb252ZXJ0aW5nIHRoZW0gdG8gYW4gQVNDSUkgY29tcGF0aWJsZQorOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXJfRW5jb2RpbmdgLiAgVXNpbmcgdGhlIHRlcm1pbm9sb2d5IG9mIHRoZSBlbWFpbAorUkZDcywgeW91IGNhbiB0aGluayBvZiB0aGlzIGFzIDpjbGFzczpgR2VuZXJhdG9yYCBzZXJpYWxpemluZyB0byBhbiBJL08gc3RyZWFtCit0aGF0IGlzIG5vdCAiOCBiaXQgY2xlYW4iLiAgSW4gb3RoZXIgd29yZHMsIG1vc3QgYXBwbGljYXRpb25zIHdpbGwgd2FudAordG8gYmUgdXNpbmcgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAsIGFuZCBub3QgOmNsYXNzOmBHZW5lcmF0b3JgLgorCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9Tm9uZSkKKworICAgUmV0dXJuIGEgOmNsYXNzOmBHZW5lcmF0b3JgIG9iamVjdCB0aGF0IHdpbGwgd3JpdGUgYW55IG1lc3NhZ2UgcHJvdmlkZWQKKyAgIHRvIHRoZSA6bWV0aDpgZmxhdHRlbmAgbWV0aG9kLCBvciBhbnkgdGV4dCBwcm92aWRlZCB0byB0aGUgOm1ldGg6YHdyaXRlYAorICAgbWV0aG9kLCB0byB0aGUgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgICpvdXRmcCouICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCBhCisgICBgYHdyaXRlYGAgbWV0aG9kIHRoYXQgYWNjZXB0cyBzdHJpbmcgZGF0YS4KKworICAgSWYgb3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYGBUcnVlYGAsIHB1dCBhIGBgPmBgIGNoYXJhY3RlciBpbiBmcm9udCBvZgorICAgYW55IGxpbmUgaW4gdGhlIGJvZHkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZXhhY3Qgc3RyaW5nIGBgIkZyb20gImBgLCB0aGF0IGlzCisgICBgYEZyb21gYCBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLiAgKm1hbmdsZV9mcm9tXyoKKyAgIGRlZmF1bHRzIHRvIHRoZSB2YWx1ZSBvZiB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1hbmdsZV9mcm9tX2AKKyAgIHNldHRpbmcgb2YgdGhlICpwb2xpY3kqICh3aGljaCBpcyBgYFRydWVgYCBmb3IgdGhlCisgICA6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgcG9saWN5IGFuZCBgYEZhbHNlYGAgZm9yIGFsbCBvdGhlcnMpLgorICAgKm1hbmdsZV9mcm9tXyogaXMgaW50ZW5kZWQgZm9yIHVzZSB3aGVuIG1lc3NhZ2VzIGFyZSBzdG9yZWQgaW4gdW5peCBtYm94CisgICBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCBhbmQgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEggRk9STUFUIElTIEJBRAorICAgPGh0dHA6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXykuCisKKyAgIElmICptYXhoZWFkZXJsZW4qIGlzIG5vdCBgYE5vbmVgYCwgcmVmb2xkIGFueSBoZWFkZXIgbGluZXMgdGhhdCBhcmUgbG9uZ2VyCisgICB0aGFuICptYXhoZWFkZXJsZW4qLCBvciBpZiBgYDBgYCwgZG8gbm90IHJld3JhcCBhbnkgaGVhZGVycy4gIElmCisgICAqbWFuaGVhZGVybGVuKiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB3cmFwIGhlYWRlcnMgYW5kIG90aGVyIG1lc3NhZ2UKKyAgIGxpbmVzIGFjY29yZGluZyB0byB0aGUgKnBvbGljeSogc2V0dGluZ3MuCisKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgdXNlIHRoYXQgcG9saWN5IHRvIGNvbnRyb2wgbWVzc2FnZSBnZW5lcmF0aW9uLiAgSWYKKyAgICpwb2xpY3kqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHVzZSB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCisgICBvYmplY3QgcGFzc2VkIHRvIGBgZmxhdHRlbmBgIHRvIGNvbnRyb2wgdGhlIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIFNlZQorICAgOm1vZDpgZW1haWwucG9saWN5YCBmb3IgZGV0YWlscyBvbiB3aGF0ICpwb2xpY3kqIGNvbnRyb2xzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlICptYW5nbGVfZnJvbV8qCisgICAgICBhbmQgKm1heGhlYWRlcmxlbiogcGFyYW1ldGVycyBpcyB0byBmb2xsb3cgdGhlIHBvbGljeS4KKworCisgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKKworICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQKKyAgICAgIGF0ICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgCisgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4KKworICAgICAgSWYgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9wdGlvbiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBpcyBgYDhiaXRgYCwgZ2VuZXJhdGUgdGhlIG1lc3NhZ2UgYXMgaWYgdGhlIG9wdGlvbiB3ZXJlIHNldCB0byBgYDdiaXRgYC4KKyAgICAgIChUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcy4pCisgICAgICBDb252ZXJ0IGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYXMgbmVlZGVkIHVzaW5nIGFuCisgICAgICBBU0NJSS1jb21wYXRpYmxlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIFRoYXQgaXMsCisgICAgICB0cmFuc2Zvcm0gcGFydHMgd2l0aCBub24tQVNDSUkgOm1haWxoZWFkZXI6YENvdG5lbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICAoOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRgKSB0byBhbiBBU0NJSSBjb21wYXRpYmlsZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLCBhbmQgZW5jb2RlIFJGQy1pbnZhbGlkIG5vbi1BU0NJSQorICAgICAgYnl0ZXMgaW4gaGVhZGVycyB1c2luZyB0aGUgTUlNRSBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMKKyAgICAgIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisKKyAgICAgIElmICp1bml4ZnJvbSogaXMgYGBUcnVlYGAsIHByaW50IHRoZSBlbnZlbG9wZSBoZWFkZXIgZGVsaW1pdGVyIHVzZWQgYnkKKyAgICAgIHRoZSBVbml4IG1haWxib3ggZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGApIGJlZm9yZSB0aGUgZmlyc3Qgb2YgdGhlCisgICAgICA6cmZjOmA1MzIyYCBoZWFkZXJzIG9mIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcworICAgICAgbm8gZW52ZWxvcGUgaGVhZGVyLCBjcmFmdCBhIHN0YW5kYXJkIG9uZS4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCisKKyAgICAgIElmICpsaW5lc2VwKiBpcyBub3QgYGBOb25lYGAsIHVzZSBpdCBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3RlciBiZXR3ZWVuCisgICAgICBhbGwgdGhlIGxpbmVzIG9mIHRoZSBmbGF0dGVuZWQgbWVzc2FnZS4gIElmICpsaW5lc2VwKiBpcyBgYE5vbmVgYCAodGhlCisgICAgICBkZWZhdWx0KSwgdXNlIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlICpwb2xpY3kqLgorCisgICAgICAuLiBYWFg6IGZsYXR0ZW4gc2hvdWxkIHRha2UgYSAqcG9saWN5KiBrZXl3b3JkLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKKyAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KKworCisgICAuLiBtZXRob2Q6OiBjbG9uZShmcCkKKworICAgICAgUmV0dXJuIGFuIGluZGVwZW5kZW50IGNsb25lIG9mIHRoaXMgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlIHdpdGggdGhlCisgICAgICBleGFjdCBzYW1lIG9wdGlvbnMsIGFuZCAqZnAqIGFzIHRoZSBuZXcgKm91dGZwKi4KKworCisgICAuLiBtZXRob2Q6OiB3cml0ZShzKQorCisgICAgICBXcml0ZSAqcyogdG8gdGhlICp3cml0ZSogbWV0aG9kIG9mIHRoZSAqb3V0ZnAqIHBhc3NlZCB0byB0aGUKKyAgICAgIDpjbGFzczpgR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLiAgVGhpcyBwcm92aWRlcyBqdXN0IGVub3VnaCBmaWxlLWxpa2UKKyAgICAgIEFQSSBmb3IgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlcyB0byBiZSB1c2VkIGluIHRoZSA6ZnVuYzpgcHJpbnRgCisgICAgICBmdW5jdGlvbi4KKworCitBcyBhIGNvbnZlbmllbmNlLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIG1ldGhvZHMKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuYXNfc3RyaW5nYCBhbmQgYGBzdHIoYU1lc3NhZ2UpYGAgKGEuay5hLgorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5fX3N0cl9fYCksIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mCithIGZvcm1hdHRlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBtZXNzYWdlIG9iamVjdC4gIEZvciBtb3JlIGRldGFpbCwgc2VlCis6bW9kOmBlbWFpbC5tZXNzYWdlYC4KKworCitUaGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgYWxzbyBwcm92aWRlcyBhIGRlcml2ZWQgY2xhc3MsCis6Y2xhc3M6YERlY29kZWRHZW5lcmF0b3JgLCB3aGljaCBpcyBsaWtlIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcywKK2V4Y2VwdCB0aGF0IG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydHMgYXJlIG5vdCBzZXJpYWxpemVkLCBidXQgYXJlIGluc3RlYWQKK3JlcHJlc2VudGVkIGluIHRoZSBvdXRwdXQgc3RyZWFtIGJ5IGEgc3RyaW5nIGRlcml2ZWQgZnJvbSBhIHRlbXBsYXRlIGZpbGxlZAoraW4gd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcGFydC4KKworLi4gY2xhc3M6OiBEZWNvZGVkR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQ9Tm9uZSwgKiwgcG9saWN5PU5vbmUpCisKKyAgIEFjdCBsaWtlIDpjbGFzczpgR2VuZXJhdG9yYCwgZXhjZXB0IHRoYXQgZm9yIGFueSBzdWJwYXJ0IG9mIHRoZSBtZXNzYWdlCisgICBwYXNzZWQgdG8gOm1ldGg6YEdlbmVyYXRvci5mbGF0dGVuYCwgaWYgdGhlIHN1YnBhcnQgaXMgb2YgbWFpbiB0eXBlCisgICA6bWltZXR5cGU6YHRleHRgLCBwcmludCB0aGUgZGVjb2RlZCBwYXlsb2FkIG9mIHRoZSBzdWJwYXJ0LCBhbmQgaWYgdGhlIG1haW4KKyAgIHR5cGUgaXMgbm90IDptaW1ldHlwZTpgdGV4dGAsIGluc3RlYWQgb2YgcHJpbnRpbmcgaXQgZmlsbCBpbiB0aGUgc3RyaW5nCisgICAqZm10KiB1c2luZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYXJ0IGFuZCBwcmludCB0aGUgcmVzdWx0aW5nCisgICBmaWxsZWQtaW4gc3RyaW5nLgorCisgICBUbyBmaWxsIGluICpmbXQqLCBleGVjdXRlIGBgZm10ICUgcGFydF9pbmZvYGAsIHdoZXJlIGBgcGFydF9pbmZvYGAKKyAgIGlzIGEgZGljdGlvbmFyeSBjb21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIGtleXMgYW5kIHZhbHVlczoKIAogICAgKiBgYHR5cGVgYCAtLSBGdWxsIE1JTUUgdHlwZSBvZiB0aGUgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0CiAKQEAgLTIyNSwxNSArMjU5LDIxIEBACiAKICAgICogYGBlbmNvZGluZ2BgIC0tIENvbnRlbnQgdHJhbnNmZXIgZW5jb2Rpbmcgb2YgdGhlIG5vbi1cIDptaW1ldHlwZTpgdGV4dGAgcGFydAogCi0gICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgKmZtdCogaXMgYGBOb25lYGAsIG1lYW5pbmcgOjoKKyAgIElmICpmbXQqIGlzIGBgTm9uZWBgLCB1c2UgdGhlIGZvbGxvd2luZyBkZWZhdWx0ICpmbXQqOgogCi0gICAgICBbTm9uLXRleHQgKCUodHlwZSlzKSBwYXJ0IG9mIG1lc3NhZ2Ugb21pdHRlZCwgZmlsZW5hbWUgJShmaWxlbmFtZSlzXQorICAgICAgIltOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdIgorCisgICBPcHRpb25hbCAqX21hbmdsZV9mcm9tXyogYW5kICptYXhoZWFkZXJsZW4qIGFyZSBhcyB3aXRoIHRoZQorICAgOmNsYXNzOmBHZW5lcmF0b3JgIGJhc2UgY2xhc3MuCiAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsjXSBUaGlzIHN0YXRlbWVudCBhc3N1bWVzIHRoYXQgeW91IHVzZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZyBmb3IgdGhlCi0gICAgICAgYGB1bml4ZnJvbWBgIGFyZ3VtZW50LCBhbmQgdGhhdCB5b3Ugc2V0IG1heGhlYWRlcmxlbj0wICh3aGljaCB3aWxsCi0gICAgICAgcHJlc2VydmUgd2hhdGV2ZXIgdGhlIGlucHV0IGxpbmUgbGVuZ3RocyB3ZXJlKS4gIEl0IGlzIGFsc28gbm90IHN0cmljdGx5Ci0gICAgICAgdHJ1ZSwgc2luY2UgaW4gbWFueSBjYXNlcyBydW5zIG9mIHdoaXRlc3BhY2UgaW4gaGVhZGVycyBhcmUgY29sbGFwc2VkCi0gICAgICAgaW50byBzaW5nbGUgYmxhbmtzLiAgVGhlIGxhdHRlciBpcyBhIGJ1ZyB0aGF0IHdpbGwgZXZlbnR1YWxseSBiZSBmaXhlZC4KKy4uIFsjXSBUaGlzIHN0YXRlbWVudCBhc3N1bWVzIHRoYXQgeW91IHVzZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZyBmb3IKKyAgICAgICBgYHVuaXhmcm9tYGAsIGFuZCB0aGF0IHRoZXJlIGFyZSBubyA6bW9kOmBwb2xpY3lgIHNldHRpbmdzIGNhbGxpbmcgZm9yCisgICAgICAgYXV0b21hdGljIGFkanVzdG1lbnRzIChmb3IgZXhhbXBsZSwKKyAgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kucmVmb2xkX3NvdXJjZWAgbXVzdCBiZSBgYG5vbmVgYCwgd2hpY2ggaXMKKyAgICAgICAqbm90KiB0aGUgZGVmYXVsdCkuICBJdCBpcyBhbHNvIG5vdCAxMDAlIHRydWUsIHNpbmNlIGlmIHRoZSBtZXNzYWdlCisgICAgICAgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgUkZDIHN0YW5kYXJkcyBvY2Nhc2lvbmFsbHkgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICAgICAgZXhhY3Qgb3JpZ2luYWwgdGV4dCBpcyBsb3N0IGR1cmluZyBwYXJzaW5nIGVycm9yIHJlY292ZXJ5LiAgSXQgaXMgYSBnb2FsCisgICAgICAgdG8gZml4IHRoZXNlIGxhdHRlciBlZGdlIGNhc2VzIHdoZW4gcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdAppbmRleCBlOTQ4MzdjLi4wNzE1MmMyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKQEAgLTgsNiArOCwxNCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlIGN1cnJlbnQgQVBJCitlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgaGVhZGVycyBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgdGhlCitkaWN0aW9uYXJ5LWxpa2UgQVBJIG9mIHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MuICBJbgorYWRkaXRpb24gdG8gdXNlcyBpbiBsZWdhY3kgY29kZSwgdGhpcyBtb2R1bGUgY2FuIGJlIHVzZWZ1bCBpbiBhcHBsaWNhdGlvbnMgdGhhdAorbmVlZCB0byBjb21wbGV0ZWx5IGNvbnRyb2wgdGhlIGNoYXJhY3RlciBzZXRzIHVzZWQgd2hlbiBlbmNvZGluZyBoZWFkZXJzLgorCitUaGUgcmVtYWluaW5nIHRleHQgaW4gdGhpcyBzZWN0aW9uIGlzIHRoZSBvcmlnaW5hbCBkb2N1bWVudGF0aW9uIG9mIHRoZSBtb2R1bGUuCisKIDpyZmM6YDI4MjJgIGlzIHRoZSBiYXNlIHN0YW5kYXJkIHRoYXQgZGVzY3JpYmVzIHRoZSBmb3JtYXQgb2YgZW1haWwgbWVzc2FnZXMuCiBJdCBkZXJpdmVzIGZyb20gdGhlIG9sZGVyIDpyZmM6YDgyMmAgc3RhbmRhcmQgd2hpY2ggY2FtZSBpbnRvIHdpZGVzcHJlYWQgdXNlIGF0CiBhIHRpbWUgd2hlbiBtb3N0IGVtYWlsIHdhcyBjb21wb3NlZCBvZiBBU0NJSSBjaGFyYWN0ZXJzIG9ubHkuICA6cmZjOmAyODIyYCBpcyBhCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKaW5kZXggMDcwN2JkOC4uMmM4MzBjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdApAQCAtNywyMCArNywxMiBAQAogLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CiAKLS4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0KICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2VtYWlsL2hlYWRlcnJlZ2lzdHJ5LnB5YAogCi0uLiBub3RlOjoKLQotICAgVGhlIGhlYWRlcnJlZ2lzdHJ5IG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBtb2R1bGUpIG1heSBvY2N1ciBpZiBkZWVtZWQKLSAgIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgotCiAtLS0tLS0tLS0tLS0tLQogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXworCiBIZWFkZXJzIGFyZSByZXByZXNlbnRlZCBieSBjdXN0b21pemVkIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBzdHJgLiAgVGhlCiBwYXJ0aWN1bGFyIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGEgZ2l2ZW4gaGVhZGVyIGlzIGRldGVybWluZWQgYnkgdGhlCiA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeWAgb2YgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGluCkBAIC04NiwxMCArNzgsMTEgQEAKICAgIC4uIG1ldGhvZDo6IGZvbGQoKiwgcG9saWN5KQogCiAgICAgICBSZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubGluZXNlcGAKLSAgICAgIGNoYXJhY3RlcnMgYXMgcmVxdWlyZWQgdG8gY29ycmVjdGx5IGZvbGQgdGhlIGhlYWRlciBhY2NvcmRpbmcKLSAgICAgIHRvICpwb2xpY3kqLiAgQSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIG9mCi0gICAgICBgYDhiaXRgYCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSBgYDdiaXRgYCwgc2luY2Ugc3RyaW5ncwotICAgICAgbWF5IG5vdCBjb250YWluIGJpbmFyeSBkYXRhLgorICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZyB0bworICAgICAgKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YgYGA4Yml0YGAgd2lsbCBiZQorICAgICAgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBoZWFkZXJzIG1heSBub3QgY29udGFpbiBhcmJpdHJhcnkKKyAgICAgIGJpbmFyeSBkYXRhLiAgSWYgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kudXRmOGAgaXMgYGBGYWxzZWBgLAorICAgICAgbm9uLUFTQ0lJIGRhdGEgd2lsbCBiZSA6cmZjOmAyMDQ3YCBlbmNvZGVkLgogCiAKICAgIGBgQmFzZUhlYWRlcmBgIGJ5IGl0c2VsZiBjYW5ub3QgYmUgdXNlZCB0byBjcmVhdGUgYSBoZWFkZXIgb2JqZWN0LiAgSXQKQEAgLTEwNiw3ICs5OSw3IEBACiAgICB2YWx1ZXMgZm9yIGF0IGxlYXN0IHRoZSBrZXlzIGBgZGVjb2RlZGBgIGFuZCBgYGRlZmVjdHNgYC4gIGBgZGVjb2RlZGBgCiAgICBzaG91bGQgYmUgdGhlIHN0cmluZyB2YWx1ZSBmb3IgdGhlIGhlYWRlciAodGhhdCBpcywgdGhlIGhlYWRlciB2YWx1ZSBmdWxseQogICAgZGVjb2RlZCB0byB1bmljb2RlKS4gIFRoZSBwYXJzZSBtZXRob2Qgc2hvdWxkIGFzc3VtZSB0aGF0ICpzdHJpbmcqIG1heQotICAgY29udGFpbiB0cmFuc3BvcnQgZW5jb2RlZCBwYXJ0cywgYnV0IHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFsbCB2YWxpZAorICAgY29udGFpbiBjb250ZW50LXRyYW5zZmVyLWVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKICAgIHVuaWNvZGUgY2hhcmFjdGVycyBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIHBhcnNlIHVuLWVuY29kZWQgaGVhZGVyIHZhbHVlcy4KIAogICAgYGBCYXNlSGVhZGVyYGAncyBgYF9fbmV3X19gYCB0aGVuIGNyZWF0ZXMgdGhlIGhlYWRlciBpbnN0YW5jZSwgYW5kIGNhbGxzIGl0cwpAQCAtMTM1LDExICsxMjgsMTAgQEAKICAgIG1lY2hhbmlzbSBmb3IgZW5jb2Rpbmcgbm9uLUFTQ0lJIHRleHQgYXMgQVNDSUkgY2hhcmFjdGVycyB3aXRoaW4gYSBoZWFkZXIKICAgIHZhbHVlLiAgV2hlbiBhICp2YWx1ZSogY29udGFpbmluZyBlbmNvZGVkIHdvcmRzIGlzIHBhc3NlZCB0byB0aGUKICAgIGNvbnN0cnVjdG9yLCB0aGUgYGBVbnN0cnVjdHVyZWRIZWFkZXJgYCBwYXJzZXIgY29udmVydHMgc3VjaCBlbmNvZGVkIHdvcmRzCi0gICBiYWNrIGluIHRvIHRoZSBvcmlnaW5hbCB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvcgotICAgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluCi0gICBub24tY29tcGxpYW50IGVuY29kZWQgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwKLSAgIGFzIGRlZmVjdHMgZm9yIGlzc3VlcyBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IKLSAgIHRoZSBub24tZW5jb2RlZCB0ZXh0LgorICAgaW50byB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvciB1bnN0cnVjdHVyZWQgdGV4dC4gIFRoZQorICAgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluIG5vbi1jb21wbGlhbnQgZW5jb2RlZAorICAgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwgYXMgZGVmZWN0cyBmb3IgaXNzdWVzCisgICBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IgdGhlIG5vbi1lbmNvZGVkIHRleHQuCiAKICAgIFRoaXMgaGVhZGVyIHR5cGUgcHJvdmlkZXMgbm8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzLgogCkBAIC0yMTMsMTUgKzIwNSwxNiBAQAogICAgICAgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIGlzICJmbGF0dGVuZWQiIGludG8gYSBvbmUgZGltZW5zaW9uYWwgbGlzdCkuCiAKICAgIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBvZiB0aGUgaGVhZGVyIHdpbGwgaGF2ZSBhbGwgZW5jb2RlZCB3b3JkcyBkZWNvZGVkIHRvCi0gICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8gdW5pY29kZS4gIFRoZQotICAgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlIDpjbGFzczpgc3RyYCB2YWx1ZSBvZgotICAgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywgJ2BgLgorICAgdW5pY29kZS4gIDpjbGFzczpgfmVuY29kaW5ncy5pZG5hYCBlbmNvZGVkIGRvbWFpbiBuYW1lcyBhcmUgYWxzbyBkZWNvZGVkIHRvCisgICB1bmljb2RlLiAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIGlzIHNldCBieSA6YXR0cjpgfnN0ci5qb2luYFwgaW5nIHRoZQorICAgOmNsYXNzOmBzdHJgIHZhbHVlIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgYGBncm91cHNgYCBhdHRyaWJ1dGUgd2l0aCBgYCcsCisgICAnYGAuCiAKICAgIEEgbGlzdCBvZiA6Y2xhc3M6YC5BZGRyZXNzYCBhbmQgOmNsYXNzOmAuR3JvdXBgIG9iamVjdHMgaW4gYW55IGNvbWJpbmF0aW9uCiAgICBtYXkgYmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlIG9mIGFuIGFkZHJlc3MgaGVhZGVyLiAgYGBHcm91cGBgIG9iamVjdHMgd2hvc2UKICAgIGBgZGlzcGxheV9uYW1lYGAgaXMgYGBOb25lYGAgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBzaW5nbGUgYWRkcmVzc2VzLCB3aGljaAogICAgYWxsb3dzIGFuIGFkZHJlc3MgbGlzdCB0byBiZSBjb3BpZWQgd2l0aCBncm91cHMgaW50YWN0IGJ5IHVzaW5nIHRoZSBsaXN0Ci0gICBvYnRhaW5lZCBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSBvZiB0aGUgc291cmNlIGhlYWRlci4KKyAgIG9idGFpbmVkIGZyb20gdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIG9mIHRoZSBzb3VyY2UgaGVhZGVyLgogCiAKIC4uIGNsYXNzOjogU2luZ2xlQWRkcmVzc0hlYWRlcgpAQCAtMjY3LDcgKzI2MCw3IEBACiAKIC4uIGNsYXNzOjogUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIKIAotICAgIE1PTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKKyAgICBNSU1FIGhlYWRlcnMgYWxsIHN0YXJ0IHdpdGggdGhlIHByZWZpeCAnQ29udGVudC0nLiAgRWFjaCBzcGVjaWZpYyBoZWFkZXIgaGFzCiAgICAgYSBjZXJ0YWluIHZhbHVlLCBkZXNjcmliZWQgdW5kZXIgdGhlIGNsYXNzIGZvciB0aGF0IGhlYWRlci4gIFNvbWUgY2FuCiAgICAgYWxzbyB0YWtlIGEgbGlzdCBvZiBzdXBwbGVtZW50YWwgcGFyYW1ldGVycywgd2hpY2ggaGF2ZSBhIGNvbW1vbiBmb3JtYXQuCiAgICAgVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgYSBiYXNlIGZvciBhbGwgdGhlIE1JTUUgaGVhZGVycyB0aGF0IHRha2UgcGFyYW1ldGVycy4KQEAgLTQ1NCwzICs0NDcsOSBAQAogICAgICAgYGBkaXNwbGF5X25hbWVgYCBpcyBub25lIGFuZCB0aGVyZSBpcyBhIHNpbmdsZSBgYEFkZHJlc3NgYCBpbiB0aGUKICAgICAgIGBgYWRkcmVzc2VzYGAgbGlzdCwgdGhlIGBgc3RyYGAgdmFsdWUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgYGBzdHJgYCBvZgogICAgICAgdGhhdCBzaW5nbGUgYGBBZGRyZXNzYGAuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy4zIGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKaW5kZXggMjkwNzk3NS4uOTUxMzZkMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKQEAgLTMsOTEgKzMsMTAyIEBACiAKIC4uIG1vZHVsZTo6IGVtYWlsLm1lc3NhZ2UKICAgIDpzeW5vcHNpczogVGhlIGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGVtYWlsIG1lc3NhZ2VzLgorLi4gbW9kdWxlYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogUi4gRGF2aWQgTXVycmF5IDxyZG11cnJheUBiaXRkYW5jZS5jb20+LAorICAgICAgICAgICAgICAgICAgIEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KIAogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvbWVzc2FnZS5weWAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlIGNlbnRyYWwgY2xhc3MgaW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzLAotaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLiAgSXQgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZQotOm1vZDpgZW1haWxgIG9iamVjdCBtb2RlbC4gIDpjbGFzczpgTWVzc2FnZWAgcHJvdmlkZXMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IKLXNldHRpbmcgYW5kIHF1ZXJ5aW5nIGhlYWRlciBmaWVsZHMsIGFuZCBmb3IgYWNjZXNzaW5nIG1lc3NhZ2UgYm9kaWVzLgorLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KIAotQ29uY2VwdHVhbGx5LCBhIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0IGNvbnNpc3RzIG9mICpoZWFkZXJzKiBhbmQgKnBheWxvYWRzKi4KLUhlYWRlcnMgYXJlIDpyZmM6YDI4MjJgIHN0eWxlIGZpZWxkIG5hbWVzIGFuZCB2YWx1ZXMgd2hlcmUgdGhlIGZpZWxkIG5hbWUgYW5kCi12YWx1ZSBhcmUgc2VwYXJhdGVkIGJ5IGEgY29sb24uICBUaGUgY29sb24gaXMgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSBmaWVsZCBuYW1lCi1vciB0aGUgZmllbGQgdmFsdWUuCitUaGUgY2VudHJhbCBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorY2xhc3MsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLm1lc3NhZ2VgIG1vZHVsZS4gIEl0IGlzIHRoZSBiYXNlIGNsYXNzIGZvcgordGhlIDptb2Q6YGVtYWlsYCBvYmplY3QgbW9kZWwuICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIGNvcmUKK2Z1bmN0aW9uYWxpdHkgZm9yIHNldHRpbmcgYW5kIHF1ZXJ5aW5nIGhlYWRlciBmaWVsZHMsIGZvciBhY2Nlc3NpbmcgbWVzc2FnZQorYm9kaWVzLCBhbmQgZm9yIGNyZWF0aW5nIG9yIG1vZGlmeWluZyBzdHJ1Y3R1cmVkIG1lc3NhZ2VzLgogCi1IZWFkZXJzIGFyZSBzdG9yZWQgYW5kIHJldHVybmVkIGluIGNhc2UtcHJlc2VydmluZyBmb3JtIGJ1dCBhcmUgbWF0Y2hlZAotY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVGhlcmUgbWF5IGFsc28gYmUgYSBzaW5nbGUgZW52ZWxvcGUgaGVhZGVyLCBhbHNvIGtub3duIGFzCi10aGUgKlVuaXgtRnJvbSogaGVhZGVyIG9yIHRoZSBgYEZyb21fYGAgaGVhZGVyLiAgVGhlIHBheWxvYWQgaXMgZWl0aGVyIGEgc3RyaW5nCi1pbiB0aGUgY2FzZSBvZiBzaW1wbGUgbWVzc2FnZSBvYmplY3RzIG9yIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgZm9yCi1NSU1FIGNvbnRhaW5lciBkb2N1bWVudHMgKGUuZy4gOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZAotOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApLgorQW4gZW1haWwgbWVzc2FnZSBjb25zaXN0cyBvZiAqaGVhZGVycyogYW5kIGEgKnBheWxvYWQqICh3aGljaCBpcyBhbHNvIHJlZmVycmVkCit0byBhcyB0aGUgKmNvbnRlbnQqKS4gIEhlYWRlcnMgYXJlIDpyZmM6YDUzMjJgIG9yIDpyZmM6YDY1MzJgIHN0eWxlIGZpZWxkIG5hbWVzCithbmQgdmFsdWVzLCB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQgdmFsdWUgYXJlIHNlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlIGNvbG9uCitpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUgb3IgdGhlIGZpZWxkIHZhbHVlLiAgVGhlIHBheWxvYWQgbWF5IGJlIGEKK3NpbXBsZSB0ZXh0IG1lc3NhZ2UsIG9yIGEgYmluYXJ5IG9iamVjdCwgb3IgYSBzdHJ1Y3R1cmVkIHNlcXVlbmNlIG9mCitzdWItbWVzc2FnZXMgZWFjaCB3aXRoIHRoZWlyIG93biBzZXQgb2YgaGVhZGVycyBhbmQgdGhlaXIgb3duIHBheWxvYWQuICBUaGUKK2xhdHRlciB0eXBlIG9mIHBheWxvYWQgaXMgaW5kaWNhdGVkIGJ5IHRoZSBtZXNzYWdlIGhhdmluZyBhIE1JTUUgdHlwZSBzdWNoIGFzCis6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCiAKLTpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBwcm92aWRlIGEgbWFwcGluZyBzdHlsZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKLW1lc3NhZ2UgaGVhZGVycywgYW5kIGFuIGV4cGxpY2l0IGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIGJvdGggdGhlIGhlYWRlcnMgYW5kCi10aGUgcGF5bG9hZC4gIEl0IHByb3ZpZGVzIGNvbnZlbmllbmNlIG1ldGhvZHMgZm9yIGdlbmVyYXRpbmcgYSBmbGF0IHRleHQKLXJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCB0cmVlLCBmb3IgYWNjZXNzaW5nIGNvbW1vbmx5IHVzZWQgaGVhZGVyCi1wYXJhbWV0ZXJzLCBhbmQgZm9yIHJlY3Vyc2l2ZWx5IHdhbGtpbmcgb3ZlciB0aGUgb2JqZWN0IHRyZWUuCitUaGUgY29uY2VwdHVhbCBtb2RlbCBwcm92aWRlZCBieSBhbiA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0IGlzIHRoYXQgb2YgYW4KK29yZGVyZWQgZGljdGlvbmFyeSBvZiBoZWFkZXJzIGNvdXBsZWQgd2l0aCBhICpwYXlsb2FkKiB0aGF0IHJlcHJlc2VudHMgdGhlCis6cmZjOmA1MzIyYCBib2R5IG9mIHRoZSBtZXNzYWdlLCB3aGljaCBtaWdodCBiZSBhIGxpc3Qgb2Ygc3ViLWBgRW1haWxNZXNzYWdlYGAKK29iamVjdHMuICBJbiBhZGRpdGlvbiB0byB0aGUgbm9ybWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIHRoZSBoZWFkZXIKK25hbWVzIGFuZCB2YWx1ZXMsIHRoZXJlIGFyZSBtZXRob2RzIGZvciBhY2Nlc3Npbmcgc3BlY2lhbGl6ZWQgaW5mb3JtYXRpb24gZnJvbQordGhlIGhlYWRlcnMgKGZvciBleGFtcGxlIHRoZSBNSU1FIGNvbnRlbnQgdHlwZSksIGZvciBvcGVyYXRpbmcgb24gdGhlIHBheWxvYWQsCitmb3IgZ2VuZXJhdGluZyBhIHNlcmlhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbWVzc2FnZSwgYW5kIGZvciByZWN1cnNpdmVseSB3YWxraW5nCitvdmVyIHRoZSBvYmplY3QgdHJlZS4KIAotSGVyZSBhcmUgdGhlIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3M6CitUaGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIGRpY3Rpb25hcnktbGlrZSBpbnRlcmZhY2UgaXMgaW5kZXhlZCBieSB0aGUgaGVhZGVyCituYW1lcywgd2hpY2ggbXVzdCBiZSBBU0NJSSB2YWx1ZXMuICBUaGUgdmFsdWVzIG9mIHRoZSBkaWN0aW9uYXJ5IGFyZSBzdHJpbmdzCit3aXRoIHNvbWUgZXh0cmEgbWV0aG9kcy4gIEhlYWRlcnMgYXJlIHN0b3JlZCBhbmQgcmV0dXJuZWQgaW4gY2FzZS1wcmVzZXJ2aW5nCitmb3JtLCBidXQgZmllbGQgbmFtZXMgYXJlIG1hdGNoZWQgY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVW5saWtlIGEgcmVhbCBkaWN0LAordGhlcmUgaXMgYW4gb3JkZXJpbmcgdG8gdGhlIGtleXMsIGFuZCB0aGVyZSBjYW4gYmUgZHVwbGljYXRlIGtleXMuICBBZGRpdGlvbmFsCittZXRob2RzIGFyZSBwcm92aWRlZCBmb3Igd29ya2luZyB3aXRoIGhlYWRlcnMgdGhhdCBoYXZlIGR1cGxpY2F0ZSBrZXlzLgorCitUaGUgKnBheWxvYWQqIGlzIGVpdGhlciBhIHN0cmluZyBvciBieXRlcyBvYmplY3QsIGluIHRoZSBjYXNlIG9mIHNpbXBsZSBtZXNzYWdlCitvYmplY3RzLCBvciBhIGxpc3Qgb2YgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMsIGZvciBNSU1FIGNvbnRhaW5lcgorZG9jdW1lbnRzIHN1Y2ggYXMgOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYAorbWVzc2FnZSBvYmplY3RzLgogCiAKLS4uIGNsYXNzOjogTWVzc2FnZShwb2xpY3k9Y29tcGF0MzIpCisuLiBjbGFzczo6IEVtYWlsTWVzc2FnZShwb2xpY3k9ZGVmYXVsdCkKIAotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgYW5kIHNlcmlhbGl6ZSB0aGUgcmVwcmVzZW50YXRpb24KLSAgIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVkcGF0ZSBhbmQgc2VyaWFsaXplCisgICB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuZGVmYXVsdGAgcG9saWN5LCB3aGljaCBmb2xsb3dzIHRoZSBydWxlcyBvZiB0aGUgZW1haWwKKyAgIFJGQ3MgZXhjZXB0IGZvciBsaW5lIGVuZGluZ3MgKGluc3RlYWQgb2YgdGhlIFJGQyBtYW5kYXRlZCBgYFxyXG5gYCwgaXQgdXNlcworICAgdGhlIFB5dGhvbiBzdGFuZGFyZCBgYFxuYGAgbGluZSBlbmRpbmdzKS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKICAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIFRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgIC4uIG1ldGhvZDo6IGFzX3N0cmluZyh1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPU5vbmUsIHBvbGljeT1Ob25lKQogCisgICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIHN0cmluZy4gIFdoZW4gb3B0aW9uYWwKKyAgICAgICp1bml4ZnJvbSogaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZy4gICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkKKyAgICAgIHdpdGggdGhlIGJhc2UgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcyAqbWF4aGVhZGVybGVuKiBpcworICAgICAgYWNjZXB0ZWQsIGJ1dCBkZWZhdWx0cyB0byBgYE5vbmVgYCwgd2hpY2ggbWVhbnMgdGhhdCBieSBkZWZhdWx0IHRoZSBsaW5lCisgICAgICBsZW5ndGggaXMgY29udHJvbGxlZCBieSB0aGUKKyAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5Lm1heF9saW5lX2xlbmd0aGAgb2YgdGhlIHBvbGljeS4gIFRoZQorICAgICAgKnBvbGljeSogYXJndW1lbnQgbWF5IGJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkCisgICAgICBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLiAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlCisgICAgICBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZSBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZQorICAgICAgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYC4KIAotICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49MCwgcG9saWN5PU5vbmUpCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorICAgICAgaWYgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEKKyAgICAgIHN0cmluZyAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KIAotICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBzdHJpbmcuICBXaGVuIG9wdGlvbmFsICp1bml4ZnJvbSoKLSAgICAgIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkIHN0cmluZy4KLSAgICAgICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkgcmVhc29ucywKLSAgICAgICptYXhoZWFkZXJsZW4qIGRlZmF1bHRzIHRvIGBgMGBgLCBzbyBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCB2YWx1ZSB5b3UKLSAgICAgIG11c3Qgb3ZlcnJpZGUgaXQgZXhwbGljaXRseSAodGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgKm1heF9saW5lX2xlbmd0aCogaW4KLSAgICAgIHRoZSBwb2xpY3kgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoaXMgbWV0aG9kKS4gIFRoZSAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUKLSAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCi0gICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKLSAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYGBHZW5lcmF0b3JgYC4KKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGJlIHRoZQorICAgICAgbW9zdCB1c2VmdWwgd2F5IHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmCisgICAgICB5b3UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBtZXNzYWdlcy4gIFNlZQorICAgICAgOmNsYXNzOmBlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBmb3IgYSBtb3JlIGZsZXhpYmxlIEFQSSBmb3IKKyAgICAgIHNlcmlhbGl6aW5nIG1lc3NhZ2VzLiAgTm90ZSBhbHNvIHRoYXQgdGhpcyBtZXRob2QgaXMgcmVzdHJpY3RlZCB0bworICAgICAgcHJvZHVjaW5nIG1lc3NhZ2VzIHNlcmlhbGl6ZWQgYXMgIjcgYml0IGNsZWFuIiB3aGVuCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4YCBpcyBgYEZhbHNlYGAsIHdoaWNoIGlzIHRoZSBkZWZhdWx0LgogCi0gICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKLSAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZwotICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCi0KLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwotICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCi0gICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCi0gICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cwotICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4gIEZvciBleGFtcGxlOjoKLQotICAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KLSAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IKLSAgICAgICAgIGZwID0gU3RyaW5nSU8oKQotICAgICAgICAgZyA9IEdlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKLSAgICAgICAgIGcuZmxhdHRlbihtc2cpCi0gICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBvYmplY3QgY29udGFpbnMgYmluYXJ5IGRhdGEgdGhhdCBpcyBub3QgZW5jb2RlZCBhY2NvcmRpbmcKLSAgICAgIHRvIFJGQyBzdGFuZGFyZHMsIHRoZSBub24tY29tcGxpYW50IGRhdGEgd2lsbCBiZSByZXBsYWNlZCBieSB1bmljb2RlCi0gICAgICAidW5rbm93biBjaGFyYWN0ZXIiIGNvZGUgcG9pbnRzLiAgKFNlZSBhbHNvIDptZXRoOmAuYXNfYnl0ZXNgIGFuZAotICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4pCi0KLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IHRoZSBkZWZhdWx0IGJlaGF2aW9yIHdoZW4gKm1heGhlYWRlcmxlbioKKyAgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgd2FzIGNoYW5nZWQgZnJvbSBkZWZhdWx0aW5nIHRvIDAgdG8gZGVmYXVsdGluZworICAgICAgICAgdG8gdGhlIHZhbHVlIG9mICptYXhfbGluZV9sZW5ndGgqIGZyb20gdGhlIHBvbGljeS4KIAogCiAgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKIAotICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX3N0cmluZygpYC4gIEFsbG93cyBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhCi0gICAgICBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCisgICAgICBFcXVpdmFsZW50IHRvIGBhc19zdHJpbmcocG9saWN5PXNlbGYucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSlgLiAgQWxsb3dzCisgICAgICBgYHN0cihtc2cpYGAgdG8gcHJvZHVjZSBhIHN0cmluZyBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UgaW4gYQorICAgICAgcmVhZGFibGUgZm9ybWF0LgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCB0aGUgbWV0aG9kIHdhcyBjaGFuZ2VkIHRvIHVzZSBgYHV0Zjg9VHJ1ZWBgLAorICAgICAgICAgdGh1cyBwcm9kdWNpbmcgYW4gOnJmYzpgNjUzMWAtbGlrZSBtZXNzYWdlIHJlcHJlc2VudGF0aW9uLCBpbnN0ZWFkIG9mCisgICAgICAgICBiZWluZyBhIGRpcmVjdCBhbGlhcyBmb3IgOm1ldGg6YGFzX3N0cmluZ2AuCiAKIAogICAgLi4gbWV0aG9kOjogYXNfYnl0ZXModW5peGZyb209RmFsc2UsIHBvbGljeT1Ob25lKQpAQCAtOTgsNTIgKzEwOSw0MiBAQAogICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KICAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQogICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQotICAgICAgYGBCeXRlc0dlbmVyYXRvcmBgLgorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYC4KIAotICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCi0gICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKLSAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKKyAgICAgIGlmIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhCisgICAgICBzdHJpbmcgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCiAKLSAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGFsd2F5cwotICAgICAgZm9ybWF0IHRoZSBtZXNzYWdlIHRoZSB3YXkgeW91IHdhbnQuICBGb3IgZXhhbXBsZSwgYnkgZGVmYXVsdCBpdCBkb2VzCi0gICAgICBub3QgZG8gdGhlIG1hbmdsaW5nIG9mIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBgYEZyb21gYCB0aGF0IGlzCi0gICAgICByZXF1aXJlZCBieSB0aGUgdW5peCBtYm94IGZvcm1hdC4gIEZvciBtb3JlIGZsZXhpYmlsaXR5LCBpbnN0YW50aWF0ZSBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCi0gICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuCi0gICAgICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KLSAgICAgICAgIGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgotICAgICAgICAgZnAgPSBCeXRlc0lPKCkKLSAgICAgICAgIGcgPSBCeXRlc0dlbmVyYXRvcihmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj02MCkKLSAgICAgICAgIGcuZmxhdHRlbihtc2cpCi0gICAgICAgICB0ZXh0ID0gZnAuZ2V0dmFsdWUoKQotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlIGFuZCBtYXkgbm90IGJlIHRoZQorICAgICAgbW9zdCB1c2VmdWwgd2F5IHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpbiB5b3VyIGFwcGxpY2F0aW9uLCBlc3BlY2lhbGx5IGlmCisgICAgICB5b3UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aXBsZSBtZXNzYWdlcy4gIFNlZQorICAgICAgOmNsYXNzOmBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGZvciBhIG1vcmUgZmxleGlibGUgQVBJIGZvcgorICAgICAgc2VyaWFsaXppbmcgbWVzc2FnZXMuCiAKIAogICAgLi4gbWV0aG9kOjogX19ieXRlc19fKCkKIAogICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX2J5dGVzKClgLiAgQWxsb3dzIGBgYnl0ZXMobXNnKWBgIHRvIHByb2R1Y2UgYQotICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKyAgICAgIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBzZXJpYWxpemVkIG1lc3NhZ2UuCiAKIAogICAgLi4gbWV0aG9kOjogaXNfbXVsdGlwYXJ0KCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpcyBhIGxpc3Qgb2Ygc3ViLVwKLSAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCisgICAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cywgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICBXaGVuCiAgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5zIGBgRmFsc2VgYCwgdGhlIHBheWxvYWQgc2hvdWxkIGJlIGEgc3RyaW5nCi0gICAgICBvYmplY3QuICAoTm90ZSB0aGF0IDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybmluZyBgYFRydWVgYCBkb2VzIG5vdAotICAgICAgbmVjZXNzYXJpbHkgbWVhbiB0aGF0ICJtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyIgd2lsbAotICAgICAgcmV0dXJuIHRoZSBgYFRydWVgYC4gICBGb3IgZXhhbXBsZSwgYGBpc19tdWx0aXBhcnRgYCB3aWxsIHJldHVybiBgYFRydWVgYAotICAgICAgd2hlbiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpcyBvZiB0eXBlIGBgbWVzc2FnZS9yZmM4MjJgYC4pCisgICAgICBvYmplY3QgKHdoaWNoIG1pZ2h0IGJlIGEgQ1RFIGVuY29kZWQgYmluYXJ5IHBheWxvYWQpLiAgTm90ZSB0aGF0CisgICAgICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCByZXR1cm5pbmcgYGBUcnVlYGAgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGF0CisgICAgICAibXNnLmdldF9jb250ZW50X21haW50eXBlKCkgPT0gJ211bHRpcGFydCciIHdpbGwgcmV0dXJuIHRoZSBgYFRydWVgYC4KKyAgICAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgIHdoZW4gdGhlCisgICAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgaXMgb2YgdHlwZSBgYG1lc3NhZ2UvcmZjODIyYGAuCiAKIAogICAgLi4gbWV0aG9kOjogc2V0X3VuaXhmcm9tKHVuaXhmcm9tKQogCi0gICAgICBTZXQgdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIgdG8gKnVuaXhmcm9tKiwgd2hpY2ggc2hvdWxkIGJlIGEgc3RyaW5nLgorICAgICAgU2V0IHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyIHRvICp1bml4ZnJvbSosIHdoaWNoIHNob3VsZCBiZSBhCisgICAgICBzdHJpbmcuICAoU2VlIDpjbGFzczpgfm1haWxib3gubWJveE1lc3NhZ2VgIGZvciBhIGJyaWVmIGRlc2NyaXB0aW9uIG9mCisgICAgICB0aGlzIGhlYWRlci4pCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X3VuaXhmcm9tKCkKQEAgLTE1MiwxMDkgKzE1MywyMyBAQAogICAgICAgZW52ZWxvcGUgaGVhZGVyIHdhcyBuZXZlciBzZXQuCiAKIAotICAgLi4gbWV0aG9kOjogYXR0YWNoKHBheWxvYWQpCi0KLSAgICAgIEFkZCB0aGUgZ2l2ZW4gKnBheWxvYWQqIHRvIHRoZSBjdXJyZW50IHBheWxvYWQsIHdoaWNoIG11c3QgYmUgYGBOb25lYGAgb3IKLSAgICAgIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMgYmVmb3JlIHRoZSBjYWxsLiBBZnRlciB0aGUgY2FsbCwgdGhlCi0gICAgICBwYXlsb2FkIHdpbGwgYWx3YXlzIGJlIGEgbGlzdCBvZiA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdHMuICBJZiB5b3Ugd2FudCB0bwotICAgICAgc2V0IHRoZSBwYXlsb2FkIHRvIGEgc2NhbGFyIG9iamVjdCAoZS5nLiBhIHN0cmluZyksIHVzZQotICAgICAgOm1ldGg6YHNldF9wYXlsb2FkYCBpbnN0ZWFkLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXlsb2FkKGk9Tm9uZSwgZGVjb2RlPUZhbHNlKQotCi0gICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggd2lsbCBiZSBhIGxpc3Qgb2YKLSAgICAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgVHJ1ZWBgLCBvciBhCi0gICAgICBzdHJpbmcgd2hlbiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGAuICBJZiB0aGUgcGF5bG9hZCBpcyBhIGxpc3QKLSAgICAgIGFuZCB5b3UgbXV0YXRlIHRoZSBsaXN0IG9iamVjdCwgeW91IG1vZGlmeSB0aGUgbWVzc2FnZSdzIHBheWxvYWQgaW4gcGxhY2UuCi0KLSAgICAgIFdpdGggb3B0aW9uYWwgYXJndW1lbnQgKmkqLCA6bWV0aDpgZ2V0X3BheWxvYWRgIHdpbGwgcmV0dXJuIHRoZSAqaSotdGgKLSAgICAgIGVsZW1lbnQgb2YgdGhlIHBheWxvYWQsIGNvdW50aW5nIGZyb20gemVybywgaWYgOm1ldGg6YGlzX211bHRpcGFydGAgaXMKLSAgICAgIGBgVHJ1ZWBgLiAgQW4gOmV4YzpgSW5kZXhFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgKmkqIGlzIGxlc3MgdGhhbiAwIG9yCi0gICAgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgcGF5bG9hZC4gIElmIHRoZQotICAgICAgcGF5bG9hZCBpcyBhIHN0cmluZyAoaS5lLiAgOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBGYWxzZWBgKSBhbmQgKmkqIGlzCi0gICAgICBnaXZlbiwgYSA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KLQotICAgICAgT3B0aW9uYWwgKmRlY29kZSogaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgcGF5bG9hZCBzaG91bGQgYmUKLSAgICAgIGRlY29kZWQgb3Igbm90LCBhY2NvcmRpbmcgdG8gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyLiBXaGVuIGBgVHJ1ZWBgIGFuZCB0aGUgbWVzc2FnZSBpcyBub3QgYSBtdWx0aXBhcnQsIHRoZSBwYXlsb2FkIHdpbGwKLSAgICAgIGJlIGRlY29kZWQgaWYgdGhpcyBoZWFkZXIncyB2YWx1ZSBpcyBgYHF1b3RlZC1wcmludGFibGVgYCBvciBgYGJhc2U2NGBgLgotICAgICAgSWYgc29tZSBvdGhlciBlbmNvZGluZyBpcyB1c2VkLCBvciA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AKLSAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcwotICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQotICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKLSAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuICBJZiB0aGUgcGF5bG9hZCBpcyBiYXNlNjQgYW5kIGl0IHdhcyBub3QKLSAgICAgIHBlcmZlY3RseSBmb3JtZWQgKG1pc3NpbmcgcGFkZGluZywgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBiYXNlNjQKLSAgICAgIGFscGhhYmV0KSwgdGhlbiBhbiBhcHByb3ByaWF0ZSBkZWZlY3Qgd2lsbCBiZSBhZGRlZCB0byB0aGUgbWVzc2FnZSdzCi0gICAgICBkZWZlY3QgcHJvcGVydHkgKDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgb3IKLSAgICAgIDpjbGFzczpgfmVtYWlsLmVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAsIHJlc3BlY3RpdmVseSkuCi0KLSAgICAgIFdoZW4gKmRlY29kZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGJvZHkgaXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcKLSAgICAgIHdpdGhvdXQgZGVjb2RpbmcgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYC4gIEhvd2V2ZXIsCi0gICAgICBmb3IgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCwgYW4gYXR0ZW1wdCBpcyBtYWRlCi0gICAgICB0byBkZWNvZGUgdGhlIG9yaWdpbmFsIGJ5dGVzIHVzaW5nIHRoZSBgYGNoYXJzZXRgYCBzcGVjaWZpZWQgYnkgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHVzaW5nIHRoZSBgYHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyLgotICAgICAgSWYgbm8gYGBjaGFyc2V0YGAgaXMgc3BlY2lmaWVkLCBvciBpZiB0aGUgYGBjaGFyc2V0YGAgZ2l2ZW4gaXMgbm90Ci0gICAgICByZWNvZ25pemVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlLCB0aGUgYm9keSBpcyBkZWNvZGVkIHVzaW5nIHRoZSBkZWZhdWx0Ci0gICAgICBBU0NJSSBjaGFyc2V0LgotCi0KLSAgIC4uIG1ldGhvZDo6IHNldF9wYXlsb2FkKHBheWxvYWQsIGNoYXJzZXQ9Tm9uZSkKLQotICAgICAgU2V0IHRoZSBlbnRpcmUgbWVzc2FnZSBvYmplY3QncyBwYXlsb2FkIHRvICpwYXlsb2FkKi4gIEl0IGlzIHRoZSBjbGllbnQncwotICAgICAgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoZSBwYXlsb2FkIGludmFyaWFudHMuICBPcHRpb25hbCAqY2hhcnNldCogc2V0cwotICAgICAgdGhlIG1lc3NhZ2UncyBkZWZhdWx0IGNoYXJhY3RlciBzZXQ7IHNlZSA6bWV0aDpgc2V0X2NoYXJzZXRgIGZvciBkZXRhaWxzLgotCi0gICAuLiBtZXRob2Q6OiBzZXRfY2hhcnNldChjaGFyc2V0KQotCi0gICAgICBTZXQgdGhlIGNoYXJhY3RlciBzZXQgb2YgdGhlIHBheWxvYWQgdG8gKmNoYXJzZXQqLCB3aGljaCBjYW4gZWl0aGVyIGJlIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgKHNlZSA6bW9kOmBlbWFpbC5jaGFyc2V0YCksIGEKLSAgICAgIHN0cmluZyBuYW1pbmcgYSBjaGFyYWN0ZXIgc2V0LCBvciBgYE5vbmVgYC4gIElmIGl0IGlzIGEgc3RyaW5nLCBpdCB3aWxsCi0gICAgICBiZSBjb252ZXJ0ZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlLiAgSWYgKmNoYXJzZXQqCi0gICAgICBpcyBgYE5vbmVgYCwgdGhlIGBgY2hhcnNldGBgIHBhcmFtZXRlciB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciAodGhlIG1lc3NhZ2Ugd2lsbCBub3QgYmUgb3RoZXJ3aXNlCi0gICAgICBtb2RpZmllZCkuICBBbnl0aGluZyBlbHNlIHdpbGwgZ2VuZXJhdGUgYSA6ZXhjOmBUeXBlRXJyb3JgLgotCi0gICAgICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXIgb25lIHdpbGwgYmUKLSAgICAgIGFkZGVkLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvbmUKLSAgICAgIHdpbGwgYmUgYWRkZWQgd2l0aCBhIHZhbHVlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuICBXaGV0aGVyIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFscmVhZHkgZXhpc3RzIG9yIG5vdCwgaXRzIGBgY2hhcnNldGBgCi0gICAgICBwYXJhbWV0ZXIgd2lsbCBiZSBzZXQgdG8gKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqLiAgIElmCi0gICAgICAqY2hhcnNldC5pbnB1dF9jaGFyc2V0KiBhbmQgKmNoYXJzZXQub3V0cHV0X2NoYXJzZXQqIGRpZmZlciwgdGhlIHBheWxvYWQKLSAgICAgIHdpbGwgYmUgcmUtZW5jb2RlZCB0byB0aGUgKm91dHB1dF9jaGFyc2V0Ki4gIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyLCB0aGVuIHRoZSBwYXlsb2FkIHdpbGwgYmUKLSAgICAgIHRyYW5zZmVyLWVuY29kZWQsIGlmIG5lZWRlZCwgdXNpbmcgdGhlIHNwZWNpZmllZAotICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCwgYW5kIGEgaGVhZGVyIHdpdGggdGhlIGFwcHJvcHJpYXRlIHZhbHVlCi0gICAgICB3aWxsIGJlIGFkZGVkLiAgSWYgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyCi0gICAgICBhbHJlYWR5IGV4aXN0cywgdGhlIHBheWxvYWQgaXMgYXNzdW1lZCB0byBhbHJlYWR5IGJlIGNvcnJlY3RseSBlbmNvZGVkCi0gICAgICB1c2luZyB0aGF0IDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBhbmQgaXMgbm90IG1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldCgpCi0KLSAgICAgIFJldHVybiB0aGUgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAgICBtZXNzYWdlJ3MgcGF5bG9hZC4KLQotICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGltcGxlbWVudCBhIG1hcHBpbmctbGlrZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKLSAgIG1lc3NhZ2UncyA6cmZjOmAyODIyYCBoZWFkZXJzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHNlbWFudGljIGRpZmZlcmVuY2VzCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IHRoZSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCisgICBtZXNzYWdlJ3MgaGVhZGVycy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzZW1hbnRpYyBkaWZmZXJlbmNlcwogICAgYmV0d2VlbiB0aGVzZSBtZXRob2RzIGFuZCBhIG5vcm1hbCBtYXBwaW5nIChpLmUuIGRpY3Rpb25hcnkpIGludGVyZmFjZS4gIEZvcgogICAgZXhhbXBsZSwgaW4gYSBkaWN0aW9uYXJ5IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5cywgYnV0IGhlcmUgdGhlcmUgbWF5IGJlCiAgICBkdXBsaWNhdGUgbWVzc2FnZSBoZWFkZXJzLiAgQWxzbywgaW4gZGljdGlvbmFyaWVzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZWQKLSAgIG9yZGVyIHRvIHRoZSBrZXlzIHJldHVybmVkIGJ5IDptZXRoOmBrZXlzYCwgYnV0IGluIGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QsCi0gICBoZWFkZXJzIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlIG9yaWdpbmFsCi0gICBtZXNzYWdlLCBvciB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGxhdGVyLiAgQW55IGhlYWRlciBkZWxldGVkIGFuZCB0aGVuCi0gICByZS1hZGRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGhlYWRlciBsaXN0LgorICAgb3JkZXIgdG8gdGhlIGtleXMgcmV0dXJuZWQgYnkgOm1ldGg6YGtleXNgLCBidXQgaW4gYW4gOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCisgICBvYmplY3QsIGhlYWRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUKKyAgIG9yaWdpbmFsIG1lc3NhZ2UsIG9yIGluIHdoaWNoIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgbWVzc2FnZSBsYXRlci4gIEFueQorICAgaGVhZGVyIGRlbGV0ZWQgYW5kIHRoZW4gcmUtYWRkZWQgaXMgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlCisgICBoZWFkZXIgbGlzdC4KIAotICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZCBtYXhpbWFsCi0gICBjb252ZW5pZW5jZS4KKyAgIFRoZXNlIHNlbWFudGljIGRpZmZlcmVuY2VzIGFyZSBpbnRlbnRpb25hbCBhbmQgYXJlIGJpYXNlZCB0b3dhcmQKKyAgIGNvbnZlbmllbmNlIGluIHRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZXMuCiAKICAgIE5vdGUgdGhhdCBpbiBhbGwgY2FzZXMsIGFueSBlbnZlbG9wZSBoZWFkZXIgcHJlc2VudCBpbiB0aGUgbWVzc2FnZSBpcyBub3QKICAgIGluY2x1ZGVkIGluIHRoZSBtYXBwaW5nIGludGVyZmFjZS4KIAotICAgSW4gYSBtb2RlbCBnZW5lcmF0ZWQgZnJvbSBieXRlcywgYW55IGhlYWRlciB2YWx1ZXMgdGhhdCAoaW4gY29udHJhdmVudGlvbiBvZgotICAgdGhlIFJGQ3MpIGNvbnRhaW4gbm9uLUFTQ0lJIGJ5dGVzIHdpbGwsIHdoZW4gcmV0cmlldmVkIHRocm91Z2ggdGhpcwotICAgaW50ZXJmYWNlLCBiZSByZXByZXNlbnRlZCBhcyA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3RzIHdpdGgKLSAgIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KLQogCiAgICAuLiBtZXRob2Q6OiBfX2xlbl9fKCkKIApAQCAtMjY0LDggKzE3OSw4IEBACiAgICAuLiBtZXRob2Q6OiBfX2NvbnRhaW5zX18obmFtZSkKIAogICAgICAgUmV0dXJuIHRydWUgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBhIGZpZWxkIG5hbWVkICpuYW1lKi4gTWF0Y2hpbmcgaXMKLSAgICAgIGRvbmUgY2FzZS1pbnNlbnNpdGl2ZWx5IGFuZCAqbmFtZSogc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBjb2xvbi4KLSAgICAgIFVzZWQgZm9yIHRoZSBgYGluYGAgb3BlcmF0b3IsIGUuZy46OgorICAgICAgZG9uZSB3aXRob3V0IHJlZ2FyZCB0byBjYXNlIGFuZCAqbmFtZSogZG9lcyBub3QgaW5jbHVkZSB0aGUgdHJhaWxpbmcKKyAgICAgIGNvbG9uLiAgVXNlZCBmb3IgdGhlIGBgaW5gYCBvcGVyYXRvci4gIEZvciBleGFtcGxlOjoKIAogICAgICAgICAgICBpZiAnbWVzc2FnZS1pZCcgaW4gbXlNZXNzYWdlOgogICAgICAgICAgICAgICBwcmludCgnTWVzc2FnZS1JRDonLCBteU1lc3NhZ2VbJ21lc3NhZ2UtaWQnXSkKQEAgLTI3MywyMCArMTg4LDIzIEBACiAKICAgIC4uIG1ldGhvZDo6IF9fZ2V0aXRlbV9fKG5hbWUpCiAKLSAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlCisgICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBoZWFkZXIgZmllbGQuICAqbmFtZSogZG9lcyBub3QgaW5jbHVkZSB0aGUKICAgICAgIGNvbG9uIGZpZWxkIHNlcGFyYXRvci4gIElmIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgYGBOb25lYGAgaXMgcmV0dXJuZWQ7IGEKICAgICAgIDpleGM6YEtleUVycm9yYCBpcyBuZXZlciByYWlzZWQuCiAKICAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbmFtZWQgZmllbGQgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgbWVzc2FnZSdzCiAgICAgICBoZWFkZXJzLCBleGFjdGx5IHdoaWNoIG9mIHRob3NlIGZpZWxkIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkIGlzCiAgICAgICB1bmRlZmluZWQuICBVc2UgdGhlIDptZXRoOmBnZXRfYWxsYCBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgYWxsIHRoZQotICAgICAgZXh0YW50IG5hbWVkIGhlYWRlcnMuCisgICAgICBleHRhbnQgaGVhZGVycyBuYW1lZCAqbmFtZSouCisKKyAgICAgIFVzaW5nIHRoZSBzdGFuZGFyZCAobm9uLWBgY29tcGF0MzJgYCkgcG9saWNpZXMsIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBhbgorICAgICAgaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YGVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXJgLgogCiAKICAgIC4uIG1ldGhvZDo6IF9fc2V0aXRlbV9fKG5hbWUsIHZhbCkKIAogICAgICAgQWRkIGEgaGVhZGVyIHRvIHRoZSBtZXNzYWdlIHdpdGggZmllbGQgbmFtZSAqbmFtZSogYW5kIHZhbHVlICp2YWwqLiAgVGhlCi0gICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgZmllbGRzLgorICAgICAgZmllbGQgaXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbWVzc2FnZSdzIGV4aXN0aW5nIGhlYWRlcnMuCiAKICAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgKm5vdCogb3ZlcndyaXRlIG9yIGRlbGV0ZSBhbnkgZXhpc3RpbmcgaGVhZGVyIHdpdGggdGhlIHNhbWUKICAgICAgIG5hbWUuICBJZiB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IGhlYWRlciBpcyB0aGUgb25seSBvbmUgcHJlc2VudCBpbiB0aGUKQEAgLTI5NSw2ICsyMTMsMTMgQEAKICAgICAgICAgIGRlbCBtc2dbJ3N1YmplY3QnXQogICAgICAgICAgbXNnWydzdWJqZWN0J10gPSAnUHl0aG9uIHJvb2x6IScKIAorICAgICAgSWYgdGhlIDptb2Q6YHBvbGljeWAgZGVmaW5lcyBjZXJ0YWluIGhhZGVycyB0byBiZSB1bmlxdWUgKGFzIHRoZSBzdGFuZGFyZAorICAgICAgcG9saWNpZXMgZG8pLCB0aGlzIG1ldGhvZCBtYXkgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIGFuIGF0dGVtcHQKKyAgICAgIGlzIG1hZGUgdG8gYXNzaWduIGEgdmFsdWUgdG8gc3VjaCBhIGhlYWRlciB3aGVuIG9uZSBhbHJlYWR5IGV4aXN0cy4gIFRoaXMKKyAgICAgIGJlaGF2aW9yIGlzIGludGVudGlvbmFsIGZvciBjb25zaXN0ZW5jeSdzIHNha2UsIGJ1dCBkbyBub3QgZGVwZW5kIG9uIGl0CisgICAgICBhcyB3ZSBtYXkgY2hvb3NlIHRvIG1ha2Ugc3VjaCBhc3NpZ25tZW50cyBkbyBhbiBhdXRvbWF0aWMgZGVsZXRpb24gb2YgdGhlCisgICAgICBleGlzdGluZyBoZWFkZXIgaW4gdGhlIGZ1dHVyZS4KKwogCiAgICAuLiBtZXRob2Q6OiBfX2RlbGl0ZW1fXyhuYW1lKQogCkBAIC0zMjMsOSArMjQ4LDEwIEBACiAKICAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gIFRoaXMgaXMgaWRlbnRpY2FsIHRvCiAgICAgICA6bWV0aDpgX19nZXRpdGVtX19gIGV4Y2VwdCB0aGF0IG9wdGlvbmFsICpmYWlsb2JqKiBpcyByZXR1cm5lZCBpZiB0aGUKLSAgICAgIG5hbWVkIGhlYWRlciBpcyBtaXNzaW5nIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisgICAgICBuYW1lZCBoZWFkZXIgaXMgbWlzc2luZyAoKmZhaWxvYmoqIGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KIAotICAgSGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHVzZWZ1bCBtZXRob2RzOgorCisgICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIGhlYWRlciByZWxhdGVkIG1ldGhvZHM6CiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2FsbChuYW1lLCBmYWlsb2JqPU5vbmUpCkBAIC0zNDYsMTcgKzI3MiwxOSBAQAogICAgICAgdGFrZW4gYXMgdGhlIHBhcmFtZXRlciBuYW1lLCB3aXRoIHVuZGVyc2NvcmVzIGNvbnZlcnRlZCB0byBkYXNoZXMgKHNpbmNlCiAgICAgICBkYXNoZXMgYXJlIGlsbGVnYWwgaW4gUHl0aG9uIGlkZW50aWZpZXJzKS4gIE5vcm1hbGx5LCB0aGUgcGFyYW1ldGVyIHdpbGwKICAgICAgIGJlIGFkZGVkIGFzIGBga2V5PSJ2YWx1ZSJgYCB1bmxlc3MgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlCi0gICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4gIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywKLSAgICAgIGl0IGNhbiBiZSBzcGVjaWZpZWQgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUgZm9ybWF0Ci0gICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nIG5hbWluZyB0aGUKLSAgICAgIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuIHVzdWFsbHkgYmUgc2V0Ci0gICAgICB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyIHBvc3NpYmlsaXRpZXMpLAotICAgICAgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNvZGUgcG9pbnRzLiAgSWYKLSAgICAgIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAotICAgICAgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdCB1c2luZyBhIGBgQ0hBUlNFVGBgCi0gICAgICBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorICAgICAgb25seSB0aGUga2V5IHdpbGwgYmUgYWRkZWQuCiAKLSAgICAgIEhlcmUncyBhbiBleGFtcGxlOjoKKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgdGhlIGNoYXJzZXQgYW5kIGxhbmd1YWdlIG1heQorICAgICAgYmUgZXhwbGljaXRseSBjb250cm9sbGVkIGJ5IHNwZWNpZmluZyB0aGUgdmFsdWUgYXMgYSB0aHJlZSB0dXBsZSBpbiB0aGUKKyAgICAgIGZvcm1hdCBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAsIHdoZXJlIGBgQ0hBUlNFVGBgIGlzIGEgc3RyaW5nCisgICAgICBuYW1pbmcgdGhlIGNoYXJzZXQgdG8gYmUgdXNlZCB0byBlbmNvZGUgdGhlIHZhbHVlLCBgYExBTkdVQUdFYGAgY2FuCisgICAgICB1c3VhbGx5IGJlIHNldCB0byBgYE5vbmVgYCBvciB0aGUgZW1wdHkgc3RyaW5nIChzZWUgOnJmYzpgMjIzMWAgZm9yIG90aGVyCisgICAgICBwb3NzaWJpbGl0aWVzKSwgYW5kIGBgVkFMVUVgYCBpcyB0aGUgc3RyaW5nIHZhbHVlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJCisgICAgICBjb2RlIHBvaW50cy4gIElmIGEgdGhyZWUgdHVwbGUgaXMgbm90IHBhc3NlZCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zCisgICAgICBub24tQVNDSUkgY2hhcmFjdGVycywgaXQgaXMgYXV0b21hdGljYWxseSBlbmNvZGVkIGluIDpyZmM6YDIyMzFgIGZvcm1hdAorICAgICAgdXNpbmcgYSBgYENIQVJTRVRgYCBvZiBgYHV0Zi04YGAgYW5kIGEgYGBMQU5HVUFHRWBgIG9mIGBgTm9uZWBgLgorCisgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6OgogCiAgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywgZmlsZW5hbWU9J2J1ZC5naWYnKQogCkBAIC0zNjQsMzcgKzI5MiwzNSBAQAogCiAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iYnVkLmdpZiIKIAotICAgICAgQW4gZXhhbXBsZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOjoKKyAgICAgIEFuIGV4YW1wbGUgb2YgdGhlIGV4dGVuZGVkIGludGVyZmFjZSB3aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzOjoKIAogICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT0oJ2lzby04ODU5LTEnLCAnJywgJ0Z1w59iYWxsZXIucHB0JykpCiAKLSAgICAgIFdoaWNoIHByb2R1Y2VzIDo6Ci0KLSAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lKj0iaXNvLTg4NTktMScnRnUlREZiYWxsZXIucHB0IgotCiAKICAgIC4uIG1ldGhvZDo6IHJlcGxhY2VfaGVhZGVyKF9uYW1lLCBfdmFsdWUpCiAKICAgICAgIFJlcGxhY2UgYSBoZWFkZXIuICBSZXBsYWNlIHRoZSBmaXJzdCBoZWFkZXIgZm91bmQgaW4gdGhlIG1lc3NhZ2UgdGhhdAotICAgICAgbWF0Y2hlcyAqX25hbWUqLCByZXRhaW5pbmcgaGVhZGVyIG9yZGVyIGFuZCBmaWVsZCBuYW1lIGNhc2UuICBJZiBubwotICAgICAgbWF0Y2hpbmcgaGVhZGVyIHdhcyBmb3VuZCwgYSA6ZXhjOmBLZXlFcnJvcmAgaXMgcmFpc2VkLgorICAgICAgbWF0Y2hlcyAqX25hbWUqLCByZXRhaW5pbmcgaGVhZGVyIG9yZGVyIGFuZCBmaWVsZCBuYW1lIGNhc2Ugb2YgdGhlCisgICAgICBvcmlnaW5hbCBoZWFkZXIuICBJZiBubyBtYXRjaGluZyBoZWFkZXIgaXMgZm91bmQsIHJhaXNlIGEKKyAgICAgIDpleGM6YEtleUVycm9yYC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF90eXBlKCkKIAotICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudCB0eXBlLiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBjb2VyY2VkIHRvCi0gICAgICBsb3dlciBjYXNlIG9mIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAuICBJZiB0aGVyZSB3YXMgbm8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbWVzc2FnZSB0aGUgZGVmYXVsdCB0eXBlIGFzIGdpdmVuCi0gICAgICBieSA6bWV0aDpgZ2V0X2RlZmF1bHRfdHlwZWAgd2lsbCBiZSByZXR1cm5lZC4gIFNpbmNlIGFjY29yZGluZyB0bwotICAgICAgOnJmYzpgMjA0NWAsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB0eXBlLCA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAKLSAgICAgIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlLgorICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudCB0eXBlLCBjb2VyY2VkIHRvIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0KKyAgICAgIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAuICBJZiB0aGVyZSBpcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyIGluIHRoZSBtZXNzYWdlIHJldHVybiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKyAgICAgIDptZXRoOmBnZXRfZGVmYXVsdF90eXBlYC4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMKKyAgICAgIGludmFsaWQsIHJldHVybiBgYHRleHQvcGxhaW5gYC4KIAotICAgICAgOnJmYzpgMjA0NWAgZGVmaW5lcyBhIG1lc3NhZ2UncyBkZWZhdWx0IHR5cGUgdG8gYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYAotICAgICAgdW5sZXNzIGl0IGFwcGVhcnMgaW5zaWRlIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvZGlnZXN0YCBjb250YWluZXIsIGluCi0gICAgICB3aGljaCBjYXNlIGl0IHdvdWxkIGJlIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLiAgSWYgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaGFzIGFuIGludmFsaWQgdHlwZSBzcGVjaWZpY2F0aW9uLAotICAgICAgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdCB0eXBlIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAuCisgICAgICAoQWNjb3JkaW5nIHRvIDpyZmM6YDIwNDVgLCBtZXNzYWdlcyBhbHdheXMgaGF2ZSBhIGRlZmF1bHQgdHlwZSwKKyAgICAgIDptZXRoOmBnZXRfY29udGVudF90eXBlYCB3aWxsIGFsd2F5cyByZXR1cm4gYSB2YWx1ZS4gIDpyZmM6YDIwNDVgIGRlZmluZXMKKyAgICAgIGEgbWVzc2FnZSdzIGRlZmF1bHQgdHlwZSB0byBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gIHVubGVzcyBpdCBhcHBlYXJzCisgICAgICBpbnNpZGUgYSA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lciwgaW4gd2hpY2ggY2FzZSBpdCB3b3VsZAorICAgICAgYmUgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuICBJZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyCisgICAgICBoYXMgYW4gaW52YWxpZCB0eXBlIHNwZWNpZmljYXRpb24sIDpyZmM6YDIwNDVgIG1hbmRhdGVzIHRoYXQgdGhlIGRlZmF1bHQKKyAgICAgIHR5cGUgYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4pCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKQpAQCAtNDIwLDgxICszNDYsNDEgQEAKICAgIC4uIG1ldGhvZDo6IHNldF9kZWZhdWx0X3R5cGUoY3R5cGUpCiAKICAgICAgIFNldCB0aGUgZGVmYXVsdCBjb250ZW50IHR5cGUuICAqY3R5cGUqIHNob3VsZCBlaXRoZXIgYmUKLSAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgb3IgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAsIGFsdGhvdWdoIHRoaXMgaXMgbm90Ci0gICAgICBlbmZvcmNlZC4gIFRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZSBpcyBub3Qgc3RvcmVkIGluIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9wYXJhbXMoZmFpbG9iaj1Ob25lLCBoZWFkZXI9J2NvbnRlbnQtdHlwZScsIHVucXVvdGU9VHJ1ZSkKLQotICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgcGFyYW1ldGVycywgYXMgYSBsaXN0LgotICAgICAgVGhlIGVsZW1lbnRzIG9mIHRoZSByZXR1cm5lZCBsaXN0IGFyZSAyLXR1cGxlcyBvZiBrZXkvdmFsdWUgcGFpcnMsIGFzCi0gICAgICBzcGxpdCBvbiB0aGUgYGAnPSdgYCBzaWduLiAgVGhlIGxlZnQgaGFuZCBzaWRlIG9mIHRoZSBgYCc9J2BgIGlzIHRoZSBrZXksCi0gICAgICB3aGlsZSB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHRoZSB2YWx1ZS4gIElmIHRoZXJlIGlzIG5vIGBgJz0nYGAgc2lnbiBpbgotICAgICAgdGhlIHBhcmFtZXRlciB0aGUgdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyBhcwotICAgICAgZGVzY3JpYmVkIGluIDptZXRoOmBnZXRfcGFyYW1gIGFuZCBpcyB1bnF1b3RlZCBpZiBvcHRpb25hbCAqdW5xdW90ZSogaXMKLSAgICAgIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCkuCi0KLSAgICAgIE9wdGlvbmFsICpmYWlsb2JqKiBpcyB0aGUgb2JqZWN0IHRvIHJldHVybiBpZiB0aGVyZSBpcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgT3B0aW9uYWwgKmhlYWRlciogaXMgdGhlIGhlYWRlciB0bwotICAgICAgc2VhcmNoIGluc3RlYWQgb2YgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtKHBhcmFtLCBmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQotCi0gICAgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIncyBwYXJhbWV0ZXIKLSAgICAgICpwYXJhbSogYXMgYSBzdHJpbmcuICBJZiB0aGUgbWVzc2FnZSBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKLSAgICAgIGhlYWRlciBvciBpZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciwgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQKLSAgICAgIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCi0KLSAgICAgIE9wdGlvbmFsICpoZWFkZXIqIGlmIGdpdmVuLCBzcGVjaWZpZXMgdGhlIG1lc3NhZ2UgaGVhZGVyIHRvIHVzZSBpbnN0ZWFkIG9mCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KLQotICAgICAgUGFyYW1ldGVyIGtleXMgYXJlIGFsd2F5cyBjb21wYXJlZCBjYXNlIGluc2Vuc2l0aXZlbHkuICBUaGUgcmV0dXJuIHZhbHVlCi0gICAgICBjYW4gZWl0aGVyIGJlIGEgc3RyaW5nLCBvciBhIDMtdHVwbGUgaWYgdGhlIHBhcmFtZXRlciB3YXMgOnJmYzpgMjIzMWAKLSAgICAgIGVuY29kZWQuICBXaGVuIGl0J3MgYSAzLXR1cGxlLCB0aGUgZWxlbWVudHMgb2YgdGhlIHZhbHVlIGFyZSBvZiB0aGUgZm9ybQotICAgICAgYGAoQ0hBUlNFVCwgTEFOR1VBR0UsIFZBTFVFKWBgLiAgTm90ZSB0aGF0IGJvdGggYGBDSEFSU0VUYGAgYW5kCi0gICAgICBgYExBTkdVQUdFYGAgY2FuIGJlIGBgTm9uZWBgLCBpbiB3aGljaCBjYXNlIHlvdSBzaG91bGQgY29uc2lkZXIgYGBWQUxVRWBgCi0gICAgICB0byBiZSBlbmNvZGVkIGluIHRoZSBgYHVzLWFzY2lpYGAgY2hhcnNldC4gIFlvdSBjYW4gdXN1YWxseSBpZ25vcmUKLSAgICAgIGBgTEFOR1VBR0VgYC4KLQotICAgICAgSWYgeW91ciBhcHBsaWNhdGlvbiBkb2Vzbid0IGNhcmUgd2hldGhlciB0aGUgcGFyYW1ldGVyIHdhcyBlbmNvZGVkIGFzIGluCi0gICAgICA6cmZjOmAyMjMxYCwgeW91IGNhbiBjb2xsYXBzZSB0aGUgcGFyYW1ldGVyIHZhbHVlIGJ5IGNhbGxpbmcKLSAgICAgIDpmdW5jOmBlbWFpbC51dGlscy5jb2xsYXBzZV9yZmMyMjMxX3ZhbHVlYCwgcGFzc2luZyBpbiB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICBmcm9tIDptZXRoOmBnZXRfcGFyYW1gLiAgVGhpcyB3aWxsIHJldHVybiBhIHN1aXRhYmx5IGRlY29kZWQgVW5pY29kZQotICAgICAgc3RyaW5nIHdoZW4gdGhlIHZhbHVlIGlzIGEgdHVwbGUsIG9yIHRoZSBvcmlnaW5hbCBzdHJpbmcgdW5xdW90ZWQgaWYgaXQKLSAgICAgIGlzbid0LiAgRm9yIGV4YW1wbGU6OgotCi0gICAgICAgICByYXdwYXJhbSA9IG1zZy5nZXRfcGFyYW0oJ2ZvbycpCi0gICAgICAgICBwYXJhbSA9IGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWUocmF3cGFyYW0pCi0KLSAgICAgIEluIGFueSBjYXNlLCB0aGUgcGFyYW1ldGVyIHZhbHVlIChlaXRoZXIgdGhlIHJldHVybmVkIHN0cmluZywgb3IgdGhlCi0gICAgICBgYFZBTFVFYGAgaXRlbSBpbiB0aGUgMy10dXBsZSkgaXMgYWx3YXlzIHVucXVvdGVkLCB1bmxlc3MgKnVucXVvdGUqIGlzIHNldAotICAgICAgdG8gYGBGYWxzZWBgLgorICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcworICAgICAgbm90IGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIHNvIGl0IG9ubHkgYWZmZWN0cyB0aGUgcmV0dXJuIHZhbHVlIG9mCisgICAgICB0aGUgYGBnZXRfY29udGVudF90eXBlYGAgbWV0aG9kcyB3aGVuIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIgaXMgcHJlc2VudCBpbiB0aGUgbWVzc2FnZS4KIAogCiAgICAuLiBtZXRob2Q6OiBzZXRfcGFyYW0ocGFyYW0sIHZhbHVlLCBoZWFkZXI9J0NvbnRlbnQtVHlwZScsIHJlcXVvdGU9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9Tm9uZSwgbGFuZ3VhZ2U9JycsIHJlcGxhY2U9RmFsc2UpCiAKICAgICAgIFNldCBhIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYgdGhlCi0gICAgICBwYXJhbWV0ZXIgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGhlYWRlciwgaXRzIHZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aAotICAgICAgKnZhbHVlKi4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXMgbm90IHlldCBiZWVuIGRlZmluZWQKLSAgICAgIGZvciB0aGlzIG1lc3NhZ2UsIGl0IHdpbGwgYmUgc2V0IHRvIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgYW5kIHRoZSBuZXcKLSAgICAgIHBhcmFtZXRlciB2YWx1ZSB3aWxsIGJlIGFwcGVuZGVkIGFzIHBlciA6cmZjOmAyMDQ1YC4KKyAgICAgIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaGVhZGVyLCByZXBsYWNlIGl0cyB2YWx1ZSB3aXRoICp2YWx1ZSouCisgICAgICBXaGVuICpoZWFkZXIqIGlzIGBgQ29udGVudC1UeXBlYGAgKHRoZSBkZWZhdWx0KSBhbmQgdGhlIGhlYWRlciBkb2VzIG5vdAorICAgICAgeWV0IGV4aXN0IGluIHRoZSBtZXNzYWdlLCBhZGQgaXQsIHNldCBpdHMgdmFsdWUgdG8KKyAgICAgIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAsIGFuZCBhcHBlbmQgdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWUuICBPcHRpb25hbAorICAgICAgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KIAotICAgICAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuIGFsdGVybmF0aXZlIGhlYWRlciB0bwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAsIGFuZCBhbGwgcGFyYW1ldGVycyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkKLSAgICAgIHVubGVzcyBvcHRpb25hbCAqcmVxdW90ZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuCi0KLSAgICAgIElmIG9wdGlvbmFsICpjaGFyc2V0KiBpcyBzcGVjaWZpZWQsIHRoZSBwYXJhbWV0ZXIgd2lsbCBiZSBlbmNvZGVkCi0gICAgICBhY2NvcmRpbmcgdG8gOnJmYzpgMjIzMWAuIE9wdGlvbmFsICpsYW5ndWFnZSogc3BlY2lmaWVzIHRoZSBSRkMgMjIzMQotICAgICAgbGFuZ3VhZ2UsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHN0cmluZy4gIEJvdGggKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCi0gICAgICBzaG91bGQgYmUgc3RyaW5ncy4KKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycywgdGhlIGNoYXJzZXQgYW5kIGxhbmd1YWdlIG1heQorICAgICAgYmUgZXhwbGljaXR5IHNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uYWwgKmNoYXJzZXQqIGFuZCAqbGFuZ3VhZ2UqCisgICAgICBwYXJhbWV0ZXJzLiAgT3B0aW9uYWwgKmxhbmd1YWdlKiBzcGVjaWZpZXMgdGhlIDpyZmM6YDIyMzFgIGxhbmd1YWdlLAorICAgICAgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSogc2hvdWxkIGJlCisgICAgICBzdHJpbmdzLiAgVGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBgYHV0ZjhgYCAqY2hhcnNldCogYW5kIGBgTm9uZWBgIGZvcgorICAgICAgdGhlICpsYW5ndWFnZSouCiAKICAgICAgIElmICpyZXBsYWNlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgaGVhZGVyIGlzIG1vdmVkIHRvIHRoZQogICAgICAgZW5kIG9mIHRoZSBsaXN0IG9mIGhlYWRlcnMuICBJZiAqcmVwbGFjZSogaXMgYGBUcnVlYGAsIHRoZSBoZWFkZXIKICAgICAgIHdpbGwgYmUgdXBkYXRlZCBpbiBwbGFjZS4KIAorICAgICAgVXNlIG9mIHRoZSAqcmVxdW90ZSogcGFyYW1ldGVyIHdpdGggOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaXMKKyAgICAgIGRlcHJlY2F0ZWQuCisKKyAgICAgIE5vdGUgdGhhdCBleGlzdGluZyBwYXJhbWV0ZXIgdmFsdWVzIG9mIGhlYWRlcnMgbWF5IGJlIGFjY2Vzc2VkIHRocm91Z2gKKyAgICAgIHRoZSA6YXR0cjpgfmVtYWlsLmhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIucGFyYW1zYCBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICBoZWFkZXIgdmFsdWUgKGZvciBleGFtcGxlLCBgYG1zZ1snQ29udGVudC1UeXBlJ10ucGFyYW1zWydjaGFyc2V0J11gYC4KKwogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgYGByZXBsYWNlYGAga2V5d29yZCB3YXMgYWRkZWQuCiAKIApAQCAtNTAyLDI1ICszODgsMTEgQEAKIAogICAgICAgUmVtb3ZlIHRoZSBnaXZlbiBwYXJhbWV0ZXIgY29tcGxldGVseSBmcm9tIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAogICAgICAgaGVhZGVyLiAgVGhlIGhlYWRlciB3aWxsIGJlIHJlLXdyaXR0ZW4gaW4gcGxhY2Ugd2l0aG91dCB0aGUgcGFyYW1ldGVyIG9yCi0gICAgICBpdHMgdmFsdWUuICBBbGwgdmFsdWVzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeSB1bmxlc3MgKnJlcXVvdGUqIGlzCi0gICAgICBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4gIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbgotICAgICAgYWx0ZXJuYXRpdmUgdG8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCisgICAgICBpdHMgdmFsdWUuICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgdG8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgogCi0KLSAgIC4uIG1ldGhvZDo6IHNldF90eXBlKHR5cGUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlKQotCi0gICAgICBTZXQgdGhlIG1haW4gdHlwZSBhbmQgc3VidHlwZSBmb3IgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCi0gICAgICBoZWFkZXIuICp0eXBlKiBtdXN0IGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAsCi0gICAgICBvdGhlcndpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCi0KLSAgICAgIFRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIGtlZXBpbmcgYWxsCi0gICAgICB0aGUgcGFyYW1ldGVycyBpbiBwbGFjZS4gIElmICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAsIHRoaXMgbGVhdmVzIHRoZQotICAgICAgZXhpc3RpbmcgaGVhZGVyJ3MgcXVvdGluZyBhcyBpcywgb3RoZXJ3aXNlIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkCi0gICAgICAodGhlIGRlZmF1bHQpLgotCi0gICAgICBBbiBhbHRlcm5hdGl2ZSBoZWFkZXIgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgKmhlYWRlciogYXJndW1lbnQuIFdoZW4gdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgc2V0IGEgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAKLSAgICAgIGhlYWRlciBpcyBhbHNvIGFkZGVkLgorICAgICAgVXNlIG9mIHRoZSAqcmVxdW90ZSogcGFyYW1ldGVyIHdpdGggOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaXMKKyAgICAgIGRlcHJlY2F0ZWQuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZhaWxvYmo9Tm9uZSkKQEAgLTU0OSwxMiArNDIxLDExIEBACiAgICAgICBuZWNlc3NhcnkuICBBIDpleGM6YH5lbWFpbC5lcnJvcnMuSGVhZGVyUGFyc2VFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQogICAgICAgbWVzc2FnZSBvYmplY3QgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KIAotICAgICAgTm90ZSB0aGF0IHVzaW5nIHRoaXMgbWV0aG9kIGlzIHN1YnRseSBkaWZmZXJlbnQgdGhhbiBkZWxldGluZyB0aGUgb2xkCisgICAgICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBtZXRob2QgaXMgc3VidGx5IGRpZmZlcmVudCBmcm9tIGRlbGV0aW5nIHRoZSBvbGQKICAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhbmQgYWRkaW5nIGEgbmV3IG9uZSB3aXRoIHRoZSBuZXcKICAgICAgIGJvdW5kYXJ5IHZpYSA6bWV0aDpgYWRkX2hlYWRlcmAsIGJlY2F1c2UgOm1ldGg6YHNldF9ib3VuZGFyeWAgcHJlc2VydmVzCiAgICAgICB0aGUgb3JkZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbGlzdCBvZgotICAgICAgaGVhZGVycy4gSG93ZXZlciwgaXQgZG9lcyAqbm90KiBwcmVzZXJ2ZSBhbnkgY29udGludWF0aW9uIGxpbmVzIHdoaWNoIG1heQotICAgICAgaGF2ZSBiZWVuIHByZXNlbnQgaW4gdGhlIG9yaWdpbmFsIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKyAgICAgIGhlYWRlcnMuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfY2hhcnNldChmYWlsb2JqPU5vbmUpCkBAIC01NjMsOSArNDM0LDYgQEAKICAgICAgIGNvZXJjZWQgdG8gbG93ZXIgY2FzZS4gIElmIHRoZXJlIGlzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgb3IgaWYKICAgICAgIHRoYXQgaGVhZGVyIGhhcyBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsICpmYWlsb2JqKiBpcyByZXR1cm5lZC4KIAotICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSA6bWV0aDpgZ2V0X2NoYXJzZXRgIHdoaWNoIHJldHVybnMgdGhlCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGZvciB0aGUgZGVmYXVsdCBlbmNvZGluZyBvZiB0aGUgbWVzc2FnZSBib2R5LgotCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0cyhmYWlsb2JqPU5vbmUpCiAKQEAgLTU3NSwxMCArNDQzLDE5IEBACiAKICAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCB3aWxsIGJlIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgIGBgY2hhcnNldGBgIHBhcmFtZXRlciBpbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGZvciB0aGUKLSAgICAgIHJlcHJlc2VudGVkIHN1YnBhcnQuICBIb3dldmVyLCBpZiB0aGUgc3VicGFydCBoYXMgbm8KLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCBvciBpcyBub3Qgb2YKLSAgICAgIHRoZSA6bWltZXR5cGU6YHRleHRgIG1haW4gTUlNRSB0eXBlLCB0aGVuIHRoYXQgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdAotICAgICAgd2lsbCBiZSAqZmFpbG9iaiouCisgICAgICByZXByZXNlbnRlZCBzdWJwYXJ0LiAgSWYgdGhlIHN1YnBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIsIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgb3IgaXMgbm90IG9mIHRoZSA6bWltZXR5cGU6YHRleHRgIG1haW4KKyAgICAgIE1JTUUgdHlwZSwgdGhlbiB0aGF0IGl0ZW0gaW4gdGhlIHJldHVybmVkIGxpc3Qgd2lsbCBiZSAqZmFpbG9iaiouCisKKworICAgLi4gbWV0aG9kOjogaXNfYXR0YWNobWVudAorCisgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlcmUgaXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyCisgICAgICBhbmQgaXRzIChjYXNlIGluc2Vuc2l0aXZlKSB2YWx1ZSBpcyBgYGF0dGFjaG1lbnRgYCwgYGBGYWxzZWBgIG90aGVyd2lzZS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMgorICAgICAgICAgaXNfYXR0YWNobWVudCBpcyBub3cgYSBtZXRob2QgaW5zdGVhZCBvZiBhIHByb3BlcnR5LCBmb3IgY29uc2lzdGVuY3kKKyAgICAgICAgIHdpdGggOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9kaXNwb3NpdGlvbigpCkBAIC01OTAsNiArNDY3LDExIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisKKyAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyByZWxhdGUgdG8gaW50ZXJyb2dhdGluZyBhbmQgbWFuaXB1bGF0aW5nIHRoZSBjb250ZW50CisgICAocGF5bG9hZCkgb2YgdGhlIG1lc3NhZ2UuCisKKwogICAgLi4gbWV0aG9kOjogd2FsaygpCiAKICAgICAgIFRoZSA6bWV0aDpgd2Fsa2AgbWV0aG9kIGlzIGFuIGFsbC1wdXJwb3NlIGdlbmVyYXRvciB3aGljaCBjYW4gYmUgdXNlZCB0bwpAQCAtNjUxLDggKzUzMywxNjkgQEAKICAgICAgIGludG8gdGhlIHN1YnBhcnRzLgogCiAKLSAgIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBjYW4gYWxzbyBvcHRpb25hbGx5IGNvbnRhaW4gdHdvIGluc3RhbmNlIGF0dHJpYnV0ZXMsCi0gICB3aGljaCBjYW4gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIHBsYWluIHRleHQgb2YgYSBNSU1FIG1lc3NhZ2UuCisgICAuLiBtZXRob2Q6OiBnZXRfYm9keShwcmVmZXJlbmNlbGlzdD0oJ3JlbGF0ZWQnLCAnaHRtbCcsICdwbGFpbicpKQorCisgICAgICBSZXR1cm4gdGhlIE1JTUUgcGFydCB0aGF0IGlzIHRoZSBiZXN0IGNhbmRpZGF0ZSB0byBiZSB0aGUgImJvZHkiIG9mIHRoZQorICAgICAgbWVzc2FnZS4KKworICAgICAgKnByZWZlcmVuY2VsaXN0KiBtdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBmcm9tIHRoZSBzZXQgYGByZWxhdGVkYGAsCisgICAgICBgYGh0bWxgYCwgYW5kIGBgcGxhaW5gYCwgYW5kIGluZGljYXRlcyB0aGUgb3JkZXIgb2YgcHJlZmVyZW5jZSBmb3IgdGhlCisgICAgICBjb250ZW50IHR5cGUgb2YgdGhlIHBhcnQgcmV0dXJuZWQuCisKKyAgICAgIFN0YXJ0IGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzIHdpdGggdGhlIG9iamVjdCBvbiB3aGljaCB0aGUKKyAgICAgIGBgZ2V0X2JvZHlgYCBtZXRob2QgaXMgY2FsbGVkLgorCisgICAgICBJZiBgYHJlbGF0ZWRgYCBpcyBub3QgaW5jbHVkZWQgaW4gKnByZWZlcmVuY2VsaXN0KiwgY29uc2lkZXIgdGhlIHJvb3QKKyAgICAgIHBhcnQgKG9yIHN1YnBhcnQgb2YgdGhlIHJvb3QgcGFydCkgb2YgYW55IHJlbGF0ZWQgZW5jb3VudGVyZWQgYXMgYQorICAgICAgY2FuZGlkYXRlIGlmIHRoZSAoc3ViLSlwYXJ0IG1hdGNoZXMgYSBwcmVmZXJlbmNlLgorCisgICAgICBXaGVuIGVuY291bnRlcmluZyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY2hlY2sgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIKKyAgICAgIGFuZCBpZiBhIHBhcnQgd2l0aCBhIG1hdGNoaW5nIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBpcyBmb3VuZCwgY29uc2lkZXIKKyAgICAgIG9ubHkgaXQgd2hlbiBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcy4gIE90aGVyd2lzZSBjb25zaWRlciBvbmx5IHRoZQorICAgICAgZmlyc3QgKGRlZmF1bHQgcm9vdCkgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLgorCisgICAgICBJZiBhIHBhcnQgaGFzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgb25seSBjb25zaWRlcgorICAgICAgdGhlIHBhcnQgYSBjYW5kaWRhdGUgbWF0Y2ggaWYgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgaXMgYGBpbmxpbmVgYC4KKworICAgICAgSWYgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBtYXRjaGVzIGFueSBvZiB0aGUgcHJlZmVyZW5jZXMgaW4KKyAgICAgICpwcmVmZXJuZWNsaXN0KiwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICBOb3RlczogKDEpIEZvciBtb3N0IGFwcGxpY2F0aW9ucyB0aGUgb25seSAqcHJlZmVyZW5jZWxpc3QqIGNvbWJpbmF0aW9ucworICAgICAgdGhhdCByZWFsbHkgbWFrZSBzZW5zZSBhcmUgYGAoJ3BsYWluJywpYGAsIGBgKCdodG1sJywgJ3BsYWluJylgYCwgYW5kIHRoZQorICAgICAgZGVmYXVsdCBgYCgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJylgYC4gICgyKSBCZWNhdXNlIG1hdGNoaW5nIHN0YXJ0cworICAgICAgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIGBgZ2V0X2JvZHlgYCBpcyBjYWxsZWQsIGNhbGxpbmcgYGBnZXRfYm9keWBgIG9uCisgICAgICBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCB3aWxsIHJldHVybiB0aGUgb2JqZWN0IGl0c2VsZiB1bmxlc3MKKyAgICAgICpwcmVmZXJlbmNlbGlzdCogaGFzIGEgbm9uLWRlZmF1bHQgdmFsdWUuICgzKSBNZXNzYWdlcyAob3IgbWVzc2FnZSBwYXJ0cykKKyAgICAgIHRoYXQgZG8gbm90IHNwZWNpZnkgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBvciB3aG9zZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGlzIGludmFsaWQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkKKyAgICAgIGFyZSBvZiB0eXBlIGBgdGV4dC9wbGFpbmBgLCB3aGljaCBtYXkgb2NjYXNpb25hbGx5IGNhdXNlIGBgZ2V0X2JvZHlgYCB0bworICAgICAgcmV0dXJuIHVuZXhwZWN0ZWQgcmVzdWx0cy4KKworCisgICAuLiBtZXRob2Q6OiBpdGVyX2F0dGFjaG1lbnRzKCkKKworICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgYWxsIG9mIHRoZSBpbW1lZGlhdGUgc3ViLXBhcnRzIG9mIHRoZSBtZXNzYWdlCisgICAgICB0aGF0IGFyZSBub3QgY2FuZGlkYXRlICJib2R5IiBwYXJ0cy4gIFRoYXQgaXMsIHNraXAgdGhlIGZpcnN0IG9jY3VycmVuY2UKKyAgICAgIG9mIGVhY2ggb2YgYGB0ZXh0L3BsYWluYGAsIGBgdGV4dC9odG1sYGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgKHVubGVzcyB0aGV5IGFyZSBleHBsaWNpdGx5IG1hcmtlZCBhcworICAgICAgYXR0YWNobWVudHMgdmlhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCksIGFuZAorICAgICAgcmV0dXJuIGFsbCByZW1haW5pbmcgcGFydHMuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYQorICAgICAgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCByZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgYWxsIHRoZSByZWxhdGVkIHBhcnRzCisgICAgICBleGNlcHQgdGhlIHJvb3QgcGFydCAoaWU6IHRoZSBwYXJ0IHBvaW50ZWQgdG8gYnkgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIsCisgICAgICBvciB0aGUgZmlyc3QgcGFydCBpZiB0aGVyZSBpcyBubyBgYHN0YXJ0YGAgcGFyYW1ldGVyIG9yIHRoZSBgYHN0YXJ0YGAKKyAgICAgIHBhcmFtZXRlciBkb2Vzbid0IG1hdGNoIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgb2YgYW55IG9mIHRoZQorICAgICAgcGFydHMpLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCBvciBhCisgICAgICBub24tYGBtdWx0aXBhcnRgYCwgcmV0dXJuIGFuIGVtcHR5IGl0ZXJhdG9yLgorCisKKyAgIC4uIG1ldGhvZDo6IGl0ZXJfcGFydHMoKQorCisgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIGltbWVkaWF0ZSBzdWItcGFydHMgb2YgdGhlIG1lc3NhZ2UsCisgICAgICB3aGljaCB3aWxsIGJlIGVtcHR5IGZvciBhIG5vbi1gYG11bHRpcGFydGBgLiAgKFNlZSBhbHNvCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLndhbGtgLikKKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIENhbGwgdGhlIDptZXRoOmB+ZW1haWwuY29udGVudG1hbmFnZXIuQ29udGVudE1hbmFnZXIuZ2V0X2NvbnRlbnRgIG1ldGhvZAorICAgICAgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZworICAgICAgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcyBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfY29udGVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIENhbGwgdGhlIDptZXRoOmB+ZW1haWwuY29udGVudG1hbmFnZXIuQ29udGVudE1hbmFnZXIuc2V0X2NvbnRlbnRgIG1ldGhvZAorICAgICAgb2YgdGhlICpjb250ZW50X21hbmFnZXIqLCBwYXNzaW5nIHNlbGYgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZworICAgICAgYWxvbmcgYW55IG90aGVyIGFyZ3VtZW50cyBvciBrZXl3b3JkcyBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX3JlbGF0ZWQoYm91bmRhcnk9Tm9uZSkKKworICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG1lc3NhZ2UgaW50byBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBtZXNzYWdlLAorICAgICAgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhCisgICAgICAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZQorICAgICAgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5CisgICAgICB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZQorICAgICAgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX2FsdGVybmF0aXZlKGJvdW5kYXJ5PU5vbmUpCisKKyAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCBvciBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCBpbnRvIGEKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtYAorICAgICAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCisgICAgICAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcgaW4gdGhlIG11bHRpcGFydCwKKyAgICAgIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseSBjcmVhdGVkIHdoZW4gaXQgaXMKKyAgICAgIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCisKKworICAgLi4gbWV0aG9kOjogbWFrZV9taXhlZChib3VuZGFyeT1Ob25lKQorCisgICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvciBhCisgICAgICBgYG11bHRpcGFydC1hbHRlcm5hdGl2ZWBgIGludG8gYSBgYG11bHRpcGFydC9taXhlZGBgLCBtb3ZpbmcgYW55IGV4aXN0aW5nCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1gIGhlYWRlcnMgYW5kIHBheWxvYWQgaW50byBhIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlCisgICAgICBgYG11bHRpcGFydGBgLiAgSWYgKmJvdW5kYXJ5KiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nCisgICAgICBpbiB0aGUgbXVsdGlwYXJ0LCBvdGhlcndpc2UgbGVhdmUgdGhlIGJvdW5kYXJ5IHRvIGJlIGF1dG9tYXRpY2FsbHkKKyAgICAgIGNyZWF0ZWQgd2hlbiBpdCBpcyBuZWVkZWQgKGZvciBleGFtcGxlLCB3aGVuIHRoZSBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9yZWxhdGVkKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCisgICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLAorICAgICAgYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZgorICAgICAgdGhlIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCwgY2FsbCA6bWV0aDpgbWFrZV9yZWxhdGVkYCBhbmQgdGhlbgorICAgICAgcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsCisgICAgICByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQorICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorICAgICAgSWYgdGhlIGFkZGVkIHBhcnQgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsCisgICAgICBhZGQgb25lIHdpdGggdGhlIHZhbHVlIGBgaW5saW5lYGAuCisKKworICAgLi4gbWV0aG9kOjogYWRkX2FsdGVybmF0aXZlKCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZQorICAgICAgb2JqZWN0LCBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAgb3IgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjYWxsCisgICAgICA6bWV0aDpgbWFrZV9hbHRlcm5hdGl2ZWAgYW5kIHRoZW4gcHJvY2VlZCBhcyBhYm92ZS4gIElmIHRoZSBtZXNzYWdlIGlzCisgICAgICBhbnkgb3RoZXIgdHlwZSBvZiBgYG11bHRpcGFydGBgLCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAuIElmCisgICAgICAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkCisgICAgICBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfYXR0YWNobWVudCgqYXJncywgY29udGVudF9tYW5hZ2VyPU5vbmUsICoqa3cpCisKKyAgICAgIElmIHRoZSBtZXNzYWdlIGlzIGEgYGBtdWx0aXBhcnQvbWl4ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0LAorICAgICAgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsIGFuZAorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmIHRoZQorICAgICAgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yCisgICAgICBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgLCBjYWxsIDptZXRoOmBtYWtlX21peGVkYCBhbmQgdGhlbiBwcm9jZWVkIGFzCisgICAgICBhYm92ZS4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlIHRoZSBgYGNvbnRlbnRfbWFuYWdlcmBgCisgICAgICBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuICBJZiB0aGUgYWRkZWQgcGFydAorICAgICAgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUKKyAgICAgIGBgYXR0YWNobWVudGBgLiAgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgYm90aCBmb3IgZXhwbGljaXQgYXR0YWNobWVudHMKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudGAgYW5kIGBgaW5saW5lYGAgYXR0YWNobWVudHMKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lYCksIGJ5IHBhc3NpbmcgYXBwcm9wcmlhdGUKKyAgICAgIG9wdGlvbnMgdG8gdGhlIGBgY29udGVudF9tYW5hZ2VyYGAuCisKKworICAgLi4gbWV0aG9kOjogY2xlYXIoKQorCisgICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgaGVhZGVycy4KKworCisgICAuLiBtZXRob2Q6OiBjbGVhcl9jb250ZW50KCkKKworICAgICAgUmVtb3ZlIHRoZSBwYXlsb2FkIGFuZCBhbGwgb2YgdGhlIDpleGM6YENvbnRlbnQtYCBoZWFkZXJzLCBsZWF2aW5nCisgICAgICBhbGwgb3RoZXIgaGVhZGVycyBpbnRhY3QgYW5kIGluIHRoZWlyIG9yaWdpbmFsIG9yZGVyLgorCisKKyAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSBhdHRyaWJ1dGVzOgogCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHByZWFtYmxlCkBAIC02ODIsMTEgKzcyNSw4IEBACiAKICAgICAgIFRoZSAqZXBpbG9ndWUqIGF0dHJpYnV0ZSBhY3RzIHRoZSBzYW1lIHdheSBhcyB0aGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUsCiAgICAgICBleGNlcHQgdGhhdCBpdCBjb250YWlucyB0ZXh0IHRoYXQgYXBwZWFycyBiZXR3ZWVuIHRoZSBsYXN0IGJvdW5kYXJ5IGFuZAotICAgICAgdGhlIGVuZCBvZiB0aGUgbWVzc2FnZS4KLQotICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHNldCB0aGUgZXBpbG9ndWUgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiBvcmRlciBmb3IgdGhlCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCB0byBwcmludCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgIGZpbGUuCisgICAgICB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlLiAgQXMgd2l0aCB0aGUgOmF0dHI6YH5FbWFpbE1lc3NhZ2UucHJlYW1ibGVgLAorICAgICAgaWYgdGhlcmUgaXMgbm8gZXBpbG9nIHRleHQgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZSBgYE5vbmVgYC4KIAogCiAgICAuLiBhdHRyaWJ1dGU6OiBkZWZlY3RzCkBAIC02OTQsMyArNzM0LDE4IEBACiAgICAgICBUaGUgKmRlZmVjdHMqIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2YgYWxsIHRoZSBwcm9ibGVtcyBmb3VuZCB3aGVuCiAgICAgICBwYXJzaW5nIHRoaXMgbWVzc2FnZS4gIFNlZSA6bW9kOmBlbWFpbC5lcnJvcnNgIGZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uCiAgICAgICBvZiB0aGUgcG9zc2libGUgcGFyc2luZyBkZWZlY3RzLgorCisKKy4uIGNsYXNzOjogTUlNRVBhcnQocG9saWN5PWRlZmF1bHQpCisKKyAgICBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJwYXJ0IG9mIGEgTUlNRSBtZXNzYWdlLiAgSXQgaXMgaWRlbnRpY2FsIHRvCisgICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgLCBleGNlcHQgdGhhdCBubyA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzIGFyZQorICAgIGFkZGVkIHdoZW4gOm1ldGg6YH5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGlzIGNhbGxlZCwgc2luY2Ugc3ViLXBhcnRzIGRvCisgICAgbm90IG5lZWQgdGhlaXIgb3duIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMuCisKKworLi4gcnVicmljOjogRm9vdG5vdGVzCisKKy4uIFsxXSBPcmluZ2FsbHkgYWRkZWQgaW4gMy40IGFzIGEgOnRlcm06YHByb3Zpc2lvbmFsIG1vZHVsZSA8cHJvdmlzaW9uYWwKKyAgICAgICBwYWNrYWdlPmAuICBEb2NzIGZvciBsZWdhY3kgbWVzc2FnZSBjbGFzcyBtb3ZlZCB0bworICAgICAgIDpyZWY6YGNvbXBhdDMyX21lc3NhZ2VgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAppbmRleCA4Mjk3ZGVhLi5kOWRhZTlmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdApAQCAtOCw2ICs4LDExIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJdHMgZnVuY3Rpb25hbGl0eQoraXMgcGFydGlhbGx5IHJlcGxhY2VkIGJ5IHRoZSA6bW9kOmB+ZW1haWwuY29udGVudG1hbmFnZXJgIGluIHRoZSBuZXcgQVBJLCBidXQKK2luIGNlcnRhaW4gYXBwbGljYXRpb25zIHRoZXNlIGNsYXNzZXMgbWF5IHN0aWxsIGJlIHVzZWZ1bCwgZXZlbiBpbiBub24tbGVnYWN5Citjb2RlLgorCiBPcmRpbmFyaWx5LCB5b3UgZ2V0IGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGJ5IHBhc3NpbmcgYSBmaWxlIG9yIHNvbWUgdGV4dCB0bwogYSBwYXJzZXIsIHdoaWNoIHBhcnNlcyB0aGUgdGV4dCBhbmQgcmV0dXJucyB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIEhvd2V2ZXIKIHlvdSBjYW4gYWxzbyBidWlsZCBhIGNvbXBsZXRlIG1lc3NhZ2Ugc3RydWN0dXJlIGZyb20gc2NyYXRjaCwgb3IgZXZlbiBpbmRpdmlkdWFsCkBAIC0yNSw3ICszMCw3IEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmJhc2UKIAotLi4gY2xhc3M6OiBNSU1FQmFzZShfbWFpbnR5cGUsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVCYXNlKF9tYWludHlwZSwgX3N1YnR5cGUsICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYmFzZWAKIApAQCAtNDEsMTAgKzQ2LDE3IEBACiAgICBrZXkvdmFsdWUgZGljdGlvbmFyeSBhbmQgaXMgcGFzc2VkIGRpcmVjdGx5IHRvIDptZXRoOmBNZXNzYWdlLmFkZF9oZWFkZXIKICAgIDxlbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYWRkX2hlYWRlcj5gLgogCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQsIChkZWZhdWx0cyB0byB0aGUKKyAgIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSkgaXQgd2lsbCBiZSBwYXNzZWQgdG8KKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAuCisKICAgIFRoZSA6Y2xhc3M6YE1JTUVCYXNlYCBjbGFzcyBhbHdheXMgYWRkcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcgogICAgKGJhc2VkIG9uICpfbWFpbnR5cGUqLCAqX3N1YnR5cGUqLCBhbmQgKl9wYXJhbXMqKSwgYW5kIGEKICAgIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlciAoYWx3YXlzIHNldCB0byBgYDEuMGBgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCisKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0CiAKQEAgLTYyLDcgKzc0LDggQEAKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubXVsdGlwYXJ0CiAKLS4uIGNsYXNzOjogTUlNRU11bHRpcGFydChfc3VidHlwZT0nbWl4ZWQnLCBib3VuZGFyeT1Ob25lLCBfc3VicGFydHM9Tm9uZSwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FTXVsdGlwYXJ0KF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5tdWx0aXBhcnRgCiAKQEAgLTgyLDE0ICs5NSwyMCBAQAogICAgdG8gdGhlIG1lc3NhZ2UgYnkgdXNpbmcgdGhlIDptZXRoOmBNZXNzYWdlLmF0dGFjaAogICAgPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2g+YCBtZXRob2QuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYXJlIHRha2VuIGZyb20KICAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50cywgb3IgcGFzc2VkIGludG8gdGhlICpfcGFyYW1zKiBhcmd1bWVudCwgd2hpY2ggaXMgYSBrZXl3b3JkCiAgICBkaWN0aW9uYXJ5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuYXBwbGljYXRpb24KIAotLi4gY2xhc3M6OiBNSU1FQXBwbGljYXRpb24oX2RhdGEsIF9zdWJ0eXBlPSdvY3RldC1zdHJlYW0nLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVBcHBsaWNhdGlvbihfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYXBwbGljYXRpb25gCiAKQEAgLTEwOSwxMiArMTI4LDE4IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGJhc2UgY2xhc3MgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5hdWRpbwogCi0uLiBjbGFzczo6IE1JTUVBdWRpbyhfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVBdWRpbyhfYXVkaW9kYXRhLCBfc3VidHlwZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCBcCisgICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmF1ZGlvYAogCkBAIC0xMzcsMTIgKzE2MiwxOCBAQAogICAgb2JqZWN0IGFzIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIGJhc2U2NC4gIFNlZSB0aGUKICAgIDptb2Q6YGVtYWlsLmVuY29kZXJzYCBtb2R1bGUgZm9yIGEgbGlzdCBvZiB0aGUgYnVpbHQtaW4gZW5jb2RlcnMuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAqX3BhcmFtcyogYXJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSBiYXNlIGNsYXNzIGNvbnN0cnVjdG9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuaW1hZ2UKIAotLi4gY2xhc3M6OiBNSU1FSW1hZ2UoX2ltYWdlZGF0YSwgX3N1YnR5cGU9Tm9uZSwgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKQorLi4gY2xhc3M6OiBNSU1FSW1hZ2UoX2ltYWdlZGF0YSwgX3N1YnR5cGU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgXAorICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLmltYWdlYAogCkBAIC0xNjUsMTMgKzE5NiwxNyBAQAogICAgb2JqZWN0IGFzIG5lY2Vzc2FyeS4gIFRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIGJhc2U2NC4gIFNlZSB0aGUKICAgIDptb2Q6YGVtYWlsLmVuY29kZXJzYCBtb2R1bGUgZm9yIGEgbGlzdCBvZiB0aGUgYnVpbHQtaW4gZW5jb2RlcnMuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAqX3BhcmFtcyogYXJlIHBhc3NlZCBzdHJhaWdodCB0aHJvdWdoIHRvIHRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLmJhc2UuTUlNRUJhc2VgCiAgICBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLm1lc3NhZ2UKIAotLi4gY2xhc3M6OiBNSU1FTWVzc2FnZShfbXNnLCBfc3VidHlwZT0ncmZjODIyJykKKy4uIGNsYXNzOjogTUlNRU1lc3NhZ2UoX21zZywgX3N1YnR5cGU9J3JmYzgyMicsICosIHBvbGljeT1jb21wYXQzMikKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLm1lc3NhZ2VgCiAKQEAgLTE4NCwxMCArMjE5LDE0IEBACiAgICBPcHRpb25hbCAqX3N1YnR5cGUqIHNldHMgdGhlIHN1YnR5cGUgb2YgdGhlIG1lc3NhZ2U7IGl0IGRlZmF1bHRzIHRvCiAgICA6bWltZXR5cGU6YHJmYzgyMmAuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUudGV4dAogCi0uLiBjbGFzczo6IE1JTUVUZXh0KF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKQorLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSwgKiwgcG9saWN5PWNvbXBhdDMyKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUudGV4dGAKIApAQCAtMjExLDUgKzI1MCwxMCBAQAogICAgd2lsbCBhdXRvbWF0aWNhbGx5IGVuY29kZSB0aGUgbmV3IHBheWxvYWQgKGFuZCBhZGQgYSBuZXcKICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIpLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgICpfY2hhcnNldCogYWxzbyBhY2NlcHRzIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2VzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CmluZGV4IGI4ZWI3YzUuLmMzMjNlYmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdApAQCAtOCwxOTAgKzgsMTU4IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLU1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZXMgY2FuIGJlIGNyZWF0ZWQgaW4gb25lIG9mIHR3byB3YXlzOiB0aGV5IGNhbiBiZSBjcmVhdGVkCi1mcm9tIHdob2xlIGNsb3RoIGJ5IGluc3RhbnRpYXRpbmcgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3RzIGFuZAotc3RyaW5naW5nIHRoZW0gdG9nZXRoZXIgdmlhIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgYW5kCi06bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5zZXRfcGF5bG9hZGAgY2FsbHMsIG9yIHRoZXkKLWNhbiBiZSBjcmVhdGVkIGJ5IHBhcnNpbmcgYSBmbGF0IHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVtYWlsIG1lc3NhZ2UuCitNZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmVzIGNhbiBiZSBjcmVhdGVkIGluIG9uZSBvZiB0d28gd2F5czogdGhleSBjYW4gYmUKK2NyZWF0ZWQgZnJvbSB3aG9sZSBjbG90aCBieSBjcmVhdGluZyBhbiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKK29iamVjdCwgYWRkaW5nIGhlYWRlcnMgdXNpbmcgdGhlIGRpY3Rpb25hcnkgaW50ZXJmYWNlLCBhbmQgYWRkaW5nIHBheWxvYWQocykKK3VzaW5nIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIGFuZCByZWxhdGVkIG1ldGhvZHMsIG9yCit0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHBhcnNpbmcgYSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbWFpbAorbWVzc2FnZS4KIAogVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHByb3ZpZGVzIGEgc3RhbmRhcmQgcGFyc2VyIHRoYXQgdW5kZXJzdGFuZHMgbW9zdCBlbWFpbAotZG9jdW1lbnQgc3RydWN0dXJlcywgaW5jbHVkaW5nIE1JTUUgZG9jdW1lbnRzLiAgWW91IGNhbiBwYXNzIHRoZSBwYXJzZXIgYSBzdHJpbmcKLW9yIGEgZmlsZSBvYmplY3QsIGFuZCB0aGUgcGFyc2VyIHdpbGwgcmV0dXJuIHRvIHlvdSB0aGUgcm9vdAotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBvZiB0aGUgb2JqZWN0IHN0cnVjdHVyZS4gIEZvciBzaW1wbGUsCi1ub24tTUlNRSBtZXNzYWdlcyB0aGUgcGF5bG9hZCBvZiB0aGlzIHJvb3Qgb2JqZWN0IHdpbGwgbGlrZWx5IGJlIGEgc3RyaW5nCi1jb250YWluaW5nIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLiAgRm9yIE1JTUUgbWVzc2FnZXMsIHRoZSByb290IG9iamVjdCB3aWxsCi1yZXR1cm4gYGBUcnVlYGAgZnJvbSBpdHMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2QsIGFuZAotdGhlIHN1YnBhcnRzIGNhbiBiZSBhY2Nlc3NlZCB2aWEgdGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYAotYW5kIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLndhbGtgIG1ldGhvZHMuCitkb2N1bWVudCBzdHJ1Y3R1cmVzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuICBZb3UgY2FuIHBhc3MgdGhlIHBhcnNlciBhCitieXRlcywgc3RyaW5nIG9yIGZpbGUgb2JqZWN0LCBhbmQgdGhlIHBhcnNlciB3aWxsIHJldHVybiB0byB5b3UgdGhlIHJvb3QKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpbnN0YW5jZSBvZiB0aGUgb2JqZWN0IHN0cnVjdHVyZS4gIEZvcgorc2ltcGxlLCBub24tTUlNRSBtZXNzYWdlcyB0aGUgcGF5bG9hZCBvZiB0aGlzIHJvb3Qgb2JqZWN0IHdpbGwgbGlrZWx5IGJlIGEKK3N0cmluZyBjb250YWluaW5nIHRoZSB0ZXh0IG9mIHRoZSBtZXNzYWdlLiAgRm9yIE1JTUUgbWVzc2FnZXMsIHRoZSByb290IG9iamVjdAord2lsbCByZXR1cm4gYGBUcnVlYGAgZnJvbSBpdHMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgCittZXRob2QsIGFuZCB0aGUgc3VicGFydHMgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgcGF5bG9hZCBtYW5pcHVsYXRpb24gbWV0aG9kcywKK3N1Y2ggYXMgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5nZXRfYm9keWAsCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgLCBhbmQKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uud2Fsa2AuCiAKLVRoZXJlIGFyZSBhY3R1YWxseSB0d28gcGFyc2VyIGludGVyZmFjZXMgYXZhaWxhYmxlIGZvciB1c2UsIHRoZSBjbGFzc2ljCi06Y2xhc3M6YFBhcnNlcmAgQVBJIGFuZCB0aGUgaW5jcmVtZW50YWwgOmNsYXNzOmBGZWVkUGFyc2VyYCBBUEkuICBUaGUgY2xhc3NpYwotOmNsYXNzOmBQYXJzZXJgIEFQSSBpcyBmaW5lIGlmIHlvdSBoYXZlIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgbWVzc2FnZSBpbiBtZW1vcnkKLWFzIGEgc3RyaW5nLCBvciBpZiB0aGUgZW50aXJlIG1lc3NhZ2UgbGl2ZXMgaW4gYSBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS4KLTpjbGFzczpgRmVlZFBhcnNlcmAgaXMgbW9yZSBhcHByb3ByaWF0ZSBmb3Igd2hlbiB5b3UncmUgcmVhZGluZyB0aGUgbWVzc2FnZSBmcm9tCi1hIHN0cmVhbSB3aGljaCBtaWdodCBibG9jayB3YWl0aW5nIGZvciBtb3JlIGlucHV0IChlLmcuIHJlYWRpbmcgYW4gZW1haWwgbWVzc2FnZQotZnJvbSBhIHNvY2tldCkuICBUaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBjYW4gY29uc3VtZSBhbmQgcGFyc2UgdGhlIG1lc3NhZ2UKLWluY3JlbWVudGFsbHksIGFuZCBvbmx5IHJldHVybnMgdGhlIHJvb3Qgb2JqZWN0IHdoZW4geW91IGNsb3NlIHRoZSBwYXJzZXIgWyNdXy4KK1RoZXJlIGFyZSBhY3R1YWxseSB0d28gcGFyc2VyIGludGVyZmFjZXMgYXZhaWxhYmxlIGZvciB1c2UsIHRoZSA6Y2xhc3M6YFBhcnNlcmAKK0FQSSBhbmQgdGhlIGluY3JlbWVudGFsIDpjbGFzczpgRmVlZFBhcnNlcmAgQVBJLiAgVGhlIDpjbGFzczpgUGFyc2VyYCBBUEkgaXMKK21vc3QgdXNlZnVsIGlmIHlvdSBoYXZlIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgbWVzc2FnZSBpbiBtZW1vcnksIG9yIGlmIHRoZQorZW50aXJlIG1lc3NhZ2UgbGl2ZXMgaW4gYSBmaWxlIG9uIHRoZSBmaWxlIHN5c3RlbS4gIDpjbGFzczpgRmVlZFBhcnNlcmAgaXMgbW9yZQorYXBwcm9wcmlhdGUgd2hlbiB5b3UgYXJlIHJlYWRpbmcgdGhlIG1lc3NhZ2UgZnJvbSBhIHN0cmVhbSB3aGljaCBtaWdodCBibG9jaword2FpdGluZyBmb3IgbW9yZSBpbnB1dCAoc3VjaCBhcyByZWFkaW5nIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhIHNvY2tldCkuICBUaGUKKzpjbGFzczpgRmVlZFBhcnNlcmAgY2FuIGNvbnN1bWUgYW5kIHBhcnNlIHRoZSBtZXNzYWdlIGluY3JlbWVudGFsbHksIGFuZCBvbmx5CityZXR1cm5zIHRoZSByb290IG9iamVjdCB3aGVuIHlvdSBjbG9zZSB0aGUgcGFyc2VyLgogCiBOb3RlIHRoYXQgdGhlIHBhcnNlciBjYW4gYmUgZXh0ZW5kZWQgaW4gbGltaXRlZCB3YXlzLCBhbmQgb2YgY291cnNlIHlvdSBjYW4KLWltcGxlbWVudCB5b3VyIG93biBwYXJzZXIgY29tcGxldGVseSBmcm9tIHNjcmF0Y2guICBUaGVyZSBpcyBubyBtYWdpY2FsCi1jb25uZWN0aW9uIGJldHdlZW4gdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlJ3MgYnVuZGxlZCBwYXJzZXIgYW5kIHRoZQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcywgc28geW91ciBjdXN0b20gcGFyc2VyIGNhbiBjcmVhdGUgbWVzc2FnZQotb2JqZWN0IHRyZWVzIGFueSB3YXkgaXQgZmluZHMgbmVjZXNzYXJ5LgoraW1wbGVtZW50IHlvdXIgb3duIHBhcnNlciBjb21wbGV0ZWx5IGZyb20gc2NyYXRjaC4gIEFsbCBvZiB0aGUgbG9naWMgdGhhdAorY29ubmVjdHMgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlJ3MgYnVuZGxlZCBwYXJzZXIgYW5kIHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGlzIGVtYm9kaWVkIGluIHRoZSA6bW9kOmBwb2xpY3lgCitjbGFzcywgc28gYSBjdXN0b20gcGFyc2VyIGNhbiBjcmVhdGUgbWVzc2FnZSBvYmplY3QgdHJlZXMgYW55IHdheSBpdCBmaW5kcworbmVjZXNzYXJ5IGJ5IGltcGxlbWVudGluZyBjdXN0b20gdmVyc2lvbnMgb2YgdGhlIGFwcHJvcHJpYXRlIDptb2Q6YHBvbGljeWAKK21ldGhvZHMuCiAKIAogRmVlZFBhcnNlciBBUEkKIF5eXl5eXl5eXl5eXl5eCiAKLVRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5mZWVkcGFyc2VyYCBtb2R1bGUsCi1wcm92aWRlcyBhbiBBUEkgdGhhdCBpcyBjb25kdWNpdmUgdG8gaW5jcmVtZW50YWwgcGFyc2luZyBvZiBlbWFpbCBtZXNzYWdlcywgc3VjaAotYXMgd291bGQgYmUgbmVjZXNzYXJ5IHdoZW4gcmVhZGluZyB0aGUgdGV4dCBvZiBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYSBzb3VyY2UKLXRoYXQgY2FuIGJsb2NrIChlLmcuIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNhbiBvZiBjb3Vyc2UgYmUgdXNlZAotdG8gcGFyc2UgYW4gZW1haWwgbWVzc2FnZSBmdWxseSBjb250YWluZWQgaW4gYSBzdHJpbmcgb3IgYSBmaWxlLCBidXQgdGhlIGNsYXNzaWMKLTpjbGFzczpgUGFyc2VyYCBBUEkgbWF5IGJlIG1vcmUgY29udmVuaWVudCBmb3Igc3VjaCB1c2UgY2FzZXMuICBUaGUgc2VtYW50aWNzCi1hbmQgcmVzdWx0cyBvZiB0aGUgdHdvIHBhcnNlciBBUElzIGFyZSBpZGVudGljYWwuCitUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5mZWVkcGFyc2VyYCBtb2R1bGUsCitwcm92aWRlcyBhbiBBUEkgdGhhdCBpcyBjb25kdWNpdmUgdG8gaW5jcmVtZW50YWwgcGFyc2luZyBvZiBlbWFpbCBtZXNzYWdlcywKK3N1Y2ggYXMgd291bGQgYmUgbmVjZXNzYXJ5IHdoZW4gcmVhZGluZyB0aGUgdGV4dCBvZiBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYQorc291cmNlIHRoYXQgY2FuIGJsb2NrIChzdWNoIGFzIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgY2FuIG9mCitjb3Vyc2UgYmUgdXNlZCB0byBwYXJzZSBhbiBlbWFpbCBtZXNzYWdlIGZ1bGx5IGNvbnRhaW5lZCBpbiBhIDp0ZXJtOmBieXRlcy1saWtlCitvYmplY3RgLCBzdHJpbmcsIG9yIGZpbGUsIGJ1dCB0aGUgOmNsYXNzOmBCeXRlc1BhcnNlcmAgQVBJIG1heSBiZSBtb3JlCitjb252ZW5pZW50IGZvciBzdWNoIHVzZSBjYXNlcy4gIFRoZSBzZW1hbnRpY3MgYW5kIHJlc3VsdHMgb2YgdGhlIHR3byBwYXJzZXIKK0FQSXMgYXJlIGlkZW50aWNhbC4KIAotVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAncyBBUEkgaXMgc2ltcGxlOyB5b3UgY3JlYXRlIGFuIGluc3RhbmNlLCBmZWVkIGl0IGEgYnVuY2gKLW9mIHRleHQgdW50aWwgdGhlcmUncyBubyBtb3JlIHRvIGZlZWQgaXQsIHRoZW4gY2xvc2UgdGhlIHBhcnNlciB0byByZXRyaWV2ZSB0aGUKLXJvb3QgbWVzc2FnZSBvYmplY3QuICBUaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBleHRyZW1lbHkgYWNjdXJhdGUgd2hlbiBwYXJzaW5nCi1zdGFuZGFyZHMtY29tcGxpYW50IG1lc3NhZ2VzLCBhbmQgaXQgZG9lcyBhIHZlcnkgZ29vZCBqb2Igb2YgcGFyc2luZwotbm9uLWNvbXBsaWFudCBtZXNzYWdlcywgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGhvdyBhIG1lc3NhZ2Ugd2FzIGRlZW1lZAotYnJva2VuLiAgSXQgd2lsbCBwb3B1bGF0ZSBhIG1lc3NhZ2Ugb2JqZWN0J3MgKmRlZmVjdHMqIGF0dHJpYnV0ZSB3aXRoIGEgbGlzdCBvZgotYW55IHByb2JsZW1zIGl0IGZvdW5kIGluIGEgbWVzc2FnZS4gIFNlZSB0aGUgOm1vZDpgZW1haWwuZXJyb3JzYCBtb2R1bGUgZm9yIHRoZQorVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCdzIEFQSSBpcyBzaW1wbGU7IHlvdSBjcmVhdGUgYW4gaW5zdGFuY2UsIGZlZWQgaXQgYQorYnVuY2ggb2YgYnl0ZXMgdW50aWwgdGhlcmUncyBubyBtb3JlIHRvIGZlZWQgaXQsIHRoZW4gY2xvc2UgdGhlIHBhcnNlciB0bworcmV0cmlldmUgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGlzIGV4dHJlbWVseQorYWNjdXJhdGUgd2hlbiBwYXJzaW5nIHN0YW5kYXJkcy1jb21wbGlhbnQgbWVzc2FnZXMsIGFuZCBpdCBkb2VzIGEgdmVyeSBnb29kIGpvYgorb2YgcGFyc2luZyBub24tY29tcGxpYW50IG1lc3NhZ2VzLCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgaG93IGEgbWVzc2FnZQord2FzIGRlZW1lZCBicm9rZW4uICBJdCB3aWxsIHBvcHVsYXRlIGEgbWVzc2FnZSBvYmplY3QncworOmF0dHI6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5kZWZlY3RzYCBhdHRyaWJ1dGUgd2l0aCBhIGxpc3Qgb2YgYW55Citwcm9ibGVtcyBpdCBmb3VuZCBpbiBhIG1lc3NhZ2UuICBTZWUgdGhlIDptb2Q6YGVtYWlsLmVycm9yc2AgbW9kdWxlIGZvciB0aGUKIGxpc3Qgb2YgZGVmZWN0cyB0aGF0IGl0IGNhbiBmaW5kLgogCi1IZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgOgorSGVyZSBpcyB0aGUgQVBJIGZvciB0aGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgOgogCiAKLS4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisuLiBjbGFzczo6IEJ5dGVzRmVlZFBhcnNlcihfZmFjdG9yeT1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBDcmVhdGUgYSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGluc3RhbmNlLiAgT3B0aW9uYWwgKl9mYWN0b3J5KiBpcyBhIG5vLWFyZ3VtZW50Ci0gICBjYWxsYWJsZSB0aGF0IHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIGEgbmV3IG1lc3NhZ2Ugb2JqZWN0IGlzIG5lZWRlZC4gIEl0Ci0gICBkZWZhdWx0cyB0byB0aGUgOmNsYXNzOmBlbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLgorICAgQ3JlYXRlIGEgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgIGluc3RhbmNlLiAgT3B0aW9uYWwgKl9mYWN0b3J5KiBpcyBhCisgICBuby1hcmd1bWVudCBjYWxsYWJsZTsgaWYgbm90IHNwZWNpZmllZCB1c2UgdGhlCisgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWVzc2FnZV9mYWN0b3J5YCBmcm9tIHRoZSAqcG9saWN5Ki4gIENhbGwKKyAgICpfZmFjdG9yeSogd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLgogCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUKKyAgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZQorICAgOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQKKyAgIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGFuZCBwcm92aWRlcworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBhcyB0aGUgZGVmYXVsdCBmYWN0b3J5LiAgQWxsIG90aGVyIHBvbGljaWVzCisgICBwcm92aWRlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBhcyB0aGUgZGVmYXVsdCAqX2ZhY3RvcnkqLiBGb3IKKyAgIG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCBlbHNlICpwb2xpY3kqIGNvbnRyb2xzLCBzZWUgdGhlCiAgICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQotCi0gICAgICBGZWVkIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIHNvbWUgbW9yZSBkYXRhLiAgKmRhdGEqIHNob3VsZCBiZSBhIHN0cmluZwotICAgICAgY29udGFpbmluZyBvbmUgb3IgbW9yZSBsaW5lcy4gIFRoZSBsaW5lcyBjYW4gYmUgcGFydGlhbCBhbmQgdGhlCi0gICAgICA6Y2xhc3M6YEZlZWRQYXJzZXJgIHdpbGwgc3RpdGNoIHN1Y2ggcGFydGlhbCBsaW5lcyB0b2dldGhlciBwcm9wZXJseS4gIFRoZQotICAgICAgbGluZXMgaW4gdGhlIHN0cmluZyBjYW4gaGF2ZSBhbnkgb2YgdGhlIGNvbW1vbiB0aHJlZSBsaW5lIGVuZGluZ3MsCi0gICAgICBjYXJyaWFnZSByZXR1cm4sIG5ld2xpbmUsIG9yIGNhcnJpYWdlIHJldHVybiBhbmQgbmV3bGluZSAodGhleSBjYW4gZXZlbiBiZQotICAgICAgbWl4ZWQpLgotCi0gICAuLiBtZXRob2Q6OiBjbG9zZSgpCi0KLSAgICAgIENsb3NpbmcgYSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNvbXBsZXRlcyB0aGUgcGFyc2luZyBvZiBhbGwgcHJldmlvdXNseSBmZWQKLSAgICAgIGRhdGEsIGFuZCByZXR1cm5zIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSXQgaXMgdW5kZWZpbmVkIHdoYXQgaGFwcGVucwotICAgICAgaWYgeW91IGZlZWQgbW9yZSBkYXRhIHRvIGEgY2xvc2VkIDpjbGFzczpgRmVlZFBhcnNlcmAuCi0KLQotLi4gY2xhc3M6OiBCeXRlc0ZlZWRQYXJzZXIoX2ZhY3Rvcnk9ZW1haWwubWVzc2FnZS5NZXNzYWdlKQotCi0gICBXb3JrcyBleGFjdGx5IGxpa2UgOmNsYXNzOmBGZWVkUGFyc2VyYCBleGNlcHQgdGhhdCB0aGUgaW5wdXQgdG8gdGhlCi0gICA6bWV0aDpgfkZlZWRQYXJzZXIuZmVlZGAgbWV0aG9kIG11c3QgYmUgYnl0ZXMgYW5kIG5vdCBzdHJpbmcuCisgICBOb3RlOiAqKlRoZSBwb2xpY3kga2V5d29yZCBzaG91bGQgYWx3YXlzIGJlIHNwZWNpZmllZCoqOyBUaGUgZGVmYXVsdCB3aWxsCisgICBjaGFuZ2UgdG8gOmRhdGE6YGVtYWlsLnBvbGljeS5kZWZhdWx0YCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgKl9mYWN0b3J5KiBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLVBhcnNlciBjbGFzcyBBUEkKLV5eXl5eXl5eXl5eXl5eXl4KIAotVGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCisgICAuLiBtZXRob2Q6OiBmZWVkKGRhdGEpCisKKyAgICAgIEZlZWQgdGhlIHBhcnNlciBzb21lIG1vcmUgZGF0YS4gICpkYXRhKiBzaG91bGQgYmUgYSA6dGVybTpgYnl0ZXMtbGlrZQorICAgICAgb2JqZWN0YCBjb250YWluaW5nIG9uZSBvciBtb3JlIGxpbmVzLiAgVGhlIGxpbmVzIGNhbiBiZSBwYXJ0aWFsIGFuZCB0aGUKKyAgICAgIHBhcnNlciB3aWxsIHN0aXRjaCBzdWNoIHBhcnRpYWwgbGluZXMgdG9nZXRoZXIgcHJvcGVybHkuICBUaGUgbGluZXMgY2FuCisgICAgICBoYXZlIGFueSBvZiB0aGUgdGhyZWUgY29tbW9uIGxpbmUgZW5kaW5nczogY2FycmlhZ2UgcmV0dXJuLCBuZXdsaW5lLCBvcgorICAgICAgY2FycmlhZ2UgcmV0dXJuIGFuZCBuZXdsaW5lICh0aGV5IGNhbiBldmVuIGJlIG1peGVkKS4KKworCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIENvbXBsZXRlIHRoZSBwYXJzaW5nIG9mIGFsbCBwcmV2aW91c2x5IGZlZCBkYXRhIGFuZCByZXR1cm4gdGhlIHJvb3QKKyAgICAgIG1lc3NhZ2Ugb2JqZWN0LiAgSXQgaXMgdW5kZWZpbmVkIHdoYXQgaGFwcGVucyBpZiA6bWV0aDpgfmZlZWRgIGlzIGNhbGxlZAorICAgICAgYWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLgorCisKKy4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBXb3JrcyBsaWtlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBleGNlcHQgdGhhdCB0aGUgaW5wdXQgdG8gdGhlCisgICA6bWV0aDpgfkJ5dGVzRmVlZFBhcnNlci5mZWVkYCBtZXRob2QgbXVzdCBiZSBhIHN0cmluZy4gIFRoaXMgaXMgb2YgbGltaXRlZAorICAgdXRpbGl0eSwgc2luY2UgdGhlIG9ubHkgd2F5IGZvciBzdWNoIGEgbWVzc2FnZSB0byBiZSB2YWxpZCBpcyBmb3IgaXQgdG8KKyAgIGNvbnRhaW4gb25seSBBU0NJSSB0ZXh0IG9yLCBpZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kudXRmOGAgaXMKKyAgIGBgVHJ1ZWBgLCBubyBiaW5hcnkgYXR0YWNobWVudHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKK1BhcnNlciBBUEkKK15eXl5eXl5eXl4KKworVGhlIDpjbGFzczpgQnl0ZXNQYXJzZXJgIGNsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwKIHByb3ZpZGVzIGFuIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhcnNlIGEgbWVzc2FnZSB3aGVuIHRoZSBjb21wbGV0ZSBjb250ZW50cwotb2YgdGhlIG1lc3NhZ2UgYXJlIGF2YWlsYWJsZSBpbiBhIHN0cmluZyBvciBmaWxlLiAgVGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAKLW1vZHVsZSBhbHNvIHByb3ZpZGVzIGhlYWRlci1vbmx5IHBhcnNlcnMsIGNhbGxlZCA6Y2xhc3M6YEhlYWRlclBhcnNlcmAgYW5kCi06Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCwgd2hpY2ggY2FuIGJlIHVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUKLWhlYWRlcnMgb2YgdGhlIG1lc3NhZ2UuICA6Y2xhc3M6YEhlYWRlclBhcnNlcmAgYW5kIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgCitvZiB0aGUgbWVzc2FnZSBhcmUgYXZhaWxhYmxlIGluIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvciBmaWxlLiAgVGhlCis6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIDpjbGFzczpgUGFyc2VyYCBmb3IgcGFyc2luZyBzdHJpbmdzLAorYW5kIGhlYWRlci1vbmx5IHBhcnNlcnMsIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgIGFuZAorOmNsYXNzOmBIZWFkZXJQYXJzZXJgLCB3aGljaCBjYW4gYmUgdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZQoraGVhZGVycyBvZiB0aGUgbWVzc2FnZS4gIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgIGFuZCA6Y2xhc3M6YEhlYWRlclBhcnNlcmAKIGNhbiBiZSBtdWNoIGZhc3RlciBpbiB0aGVzZSBzaXR1YXRpb25zLCBzaW5jZSB0aGV5IGRvIG5vdCBhdHRlbXB0IHRvIHBhcnNlIHRoZQotbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5IGFzIGEgc3RyaW5nLiAgVGhleQotaGF2ZSB0aGUgc2FtZSBBUEkgYXMgdGhlIDpjbGFzczpgUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc1BhcnNlcmAgY2xhc3Nlcy4KLQotLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0gICBUaGUgQnl0ZXNIZWFkZXJQYXJzZXIgY2xhc3MuCittZXNzYWdlIGJvZHksIGluc3RlYWQgc2V0dGluZyB0aGUgcGF5bG9hZCB0byB0aGUgcmF3IGJvZHkuCiAKIAotLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudAotICAgKl9jbGFzcyouICBUaGlzIG11c3QgYmUgYSBjYWxsYWJsZSBmYWN0b3J5IChzdWNoIGFzIGEgZnVuY3Rpb24gb3IgYSBjbGFzcyksIGFuZAotICAgaXQgaXMgdXNlZCB3aGVuZXZlciBhIHN1Yi1tZXNzYWdlIG9iamVjdCBuZWVkcyB0byBiZSBjcmVhdGVkLiAgSXQgZGVmYXVsdHMgdG8KLSAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgKHNlZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCkuICBUaGUgZmFjdG9yeSB3aWxsCi0gICBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCisgICBDcmVhdGUgYSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBpbnN0YW5jZS4gIFRoZSAqX2NsYXNzKiBhbmQgKnBvbGljeSoKKyAgIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYW5kIHNlbWF0bmljcyBhcyB0aGUgKl9mYWN0b3J5KgorICAgYW5kICpwb2xpY3kqIGFyZ3VtZW50cyBvZiA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAuCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgorICAgTm90ZTogKipUaGUgcG9saWN5IGtleXdvcmQgc2hvdWxkIGFsd2F5cyBiZSBzcGVjaWZpZWQqKjsgVGhlIGRlZmF1bHQgd2lsbAorICAgY2hhbmdlIHRvIDpkYXRhOmBlbWFpbC5wb2xpY3kuZGVmYXVsdGAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudCB0aGF0IHdhcyBkZXByZWNhdGVkIGluIDIuNC4gIEFkZGVkIHRoZQogICAgICAgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42ICpfY2xhc3MqIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KIAotICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YFBhcnNlcmAgbWV0aG9kcyBhcmU6Ci0KLQotICAgLi4gbWV0aG9kOjogcGFyc2UoZnAsIGhlYWRlcnNvbmx5PUZhbHNlKQotCi0gICAgICBSZWFkIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZSByZXN1bHRpbmcKLSAgICAgIHRleHQsIGFuZCByZXR1cm4gdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICAqZnAqIG11c3Qgc3VwcG9ydCBib3RoIHRoZQotICAgICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYCBhbmQgdGhlIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkYAotICAgICAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KLQotICAgICAgVGhlIHRleHQgY29udGFpbmVkIGluICpmcCogbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiA6cmZjOmAyODIyYAotICAgICAgc3R5bGUgaGVhZGVycyBhbmQgaGVhZGVyIGNvbnRpbnVhdGlvbiBsaW5lcywgb3B0aW9uYWxseSBwcmVjZWRlZCBieSBhbgotICAgICAgZW52ZWxvcGUgaGVhZGVyLiAgVGhlIGhlYWRlciBibG9jayBpcyB0ZXJtaW5hdGVkIGVpdGhlciBieSB0aGUgZW5kIG9mIHRoZQotICAgICAgZGF0YSBvciBieSBhIGJsYW5rIGxpbmUuICBGb2xsb3dpbmcgdGhlIGhlYWRlciBibG9jayBpcyB0aGUgYm9keSBvZiB0aGUKLSAgICAgIG1lc3NhZ2UgKHdoaWNoIG1heSBjb250YWluIE1JTUUtZW5jb2RlZCBzdWJwYXJ0cykuCi0KLSAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYSBmbGFnIHNwZWNpZnlpbmcgd2hldGhlciB0byBzdG9wIHBhcnNpbmcgYWZ0ZXIKLSAgICAgIHJlYWRpbmcgdGhlIGhlYWRlcnMgb3Igbm90LiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLCBtZWFuaW5nIGl0IHBhcnNlcwotICAgICAgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KLQotICAgLi4gbWV0aG9kOjogcGFyc2VzdHIodGV4dCwgaGVhZGVyc29ubHk9RmFsc2UpCi0KLSAgICAgIFNpbWlsYXIgdG8gdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLCBleGNlcHQgaXQgdGFrZXMgYSBzdHJpbmcgb2JqZWN0Ci0gICAgICBpbnN0ZWFkIG9mIGEgZmlsZS1saWtlIG9iamVjdC4gIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYSBzdHJpbmcgaXMgZXhhY3RseQotICAgICAgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5TdHJpbmdJT2AgaW5zdGFuY2UgZmlyc3QgYW5kCi0gICAgICBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCi0KLSAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCi0KLQotLi4gY2xhc3M6OiBCeXRlc1BhcnNlcihfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQotCi0gICBUaGlzIGNsYXNzIGlzIGV4YWN0bHkgcGFyYWxsZWwgdG8gOmNsYXNzOmBQYXJzZXJgLCBidXQgaGFuZGxlcyBieXRlcyBpbnB1dC4KLSAgIFRoZSAqX2NsYXNzKiBhbmQgKnN0cmljdCogYXJndW1lbnRzIGFyZSBpbnRlcnByZXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yCi0gICB0aGUgOmNsYXNzOmBQYXJzZXJgIGNvbnN0cnVjdG9yLgotCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gICBtZXNzYWdlLiAgSWYgKnBvbGljeSogaXMgbm90IHNldCwgdXNlIHRoZSA6Y2xhc3M6YGNvbXBhdDMyCi0gICA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5LCB3aGljaCBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCi0gICB0aGUgUHl0aG9uIDMuMiB2ZXJzaW9uIG9mIHRoZSBlbWFpbCBwYWNrYWdlLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKICAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJzb25seT1GYWxzZSkKIAogICAgICAgUmVhZCBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgYmluYXJ5IGZpbGUtbGlrZSBvYmplY3QgKmZwKiwgcGFyc2UgdGhlCiAgICAgICByZXN1bHRpbmcgYnl0ZXMsIGFuZCByZXR1cm4gdGhlIG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQKICAgICAgIGJvdGggdGhlIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lYCBhbmQgdGhlIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRgCi0gICAgICBtZXRob2RzIG9uIGZpbGUtbGlrZSBvYmplY3RzLgorICAgICAgbWV0aG9kcy4KIAotICAgICAgVGhlIGJ5dGVzIGNvbnRhaW5lZCBpbiAqZnAqIG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgYmxvY2sgb2YgOnJmYzpgMjgyMmAKKyAgICAgIFRoZSBieXRlcyBjb250YWluZWQgaW4gKmZwKiBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGJsb2NrIG9mIDpyZmM6YDUzMjJgCisgICAgICAob3IsIGlmIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS51dGY4YCBpcyBgYFRydWVgYCwgOnJmYzpgNjUzMmApCiAgICAgICBzdHlsZSBoZWFkZXJzIGFuZCBoZWFkZXIgY29udGludWF0aW9uIGxpbmVzLCBvcHRpb25hbGx5IHByZWNlZGVkIGJ5IGFuCiAgICAgICBlbnZlbG9wZSBoZWFkZXIuICBUaGUgaGVhZGVyIGJsb2NrIGlzIHRlcm1pbmF0ZWQgZWl0aGVyIGJ5IHRoZSBlbmQgb2YgdGhlCiAgICAgICBkYXRhIG9yIGJ5IGEgYmxhbmsgbGluZS4gIEZvbGxvd2luZyB0aGUgaGVhZGVyIGJsb2NrIGlzIHRoZSBib2R5IG9mIHRoZQpAQCAtMjAyLDczICsxNzAsMTIxIEBACiAgICAgICByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYCwgbWVhbmluZyBpdCBwYXJzZXMKICAgICAgIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCiAKLSAgIC4uIG1ldGhvZDo6IHBhcnNlYnl0ZXModGV4dCwgaGVhZGVyc29ubHk9RmFsc2UpCisKKyAgIC4uIG1ldGhvZDo6IHBhcnNlYnl0ZXMoYnl0ZXMsIGhlYWRlcnNvbmx5PUZhbHNlKQogCiAgICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgOnRlcm06YGJ5dGVzLWxpa2UKLSAgICAgIG9iamVjdGAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQKLSAgICAgIHRvIHdyYXBwaW5nICp0ZXh0KiBpbiBhIDpjbGFzczpgfmlvLkJ5dGVzSU9gIGluc3RhbmNlIGZpcnN0IGFuZCBjYWxsaW5nCi0gICAgICA6bWV0aDpgcGFyc2VgLgorICAgICAgb2JqZWN0YCBpbnN0ZWFkIG9mIGEgZmlsZS1saWtlIG9iamVjdC4gIENhbGxpbmcgdGhpcyBtZXRob2Qgb24gYQorICAgICAgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBpcyBlcXVpdmFsZW50IHRvIHdyYXBwaW5nICpieXRlcyogaW4gYQorICAgICAgOmNsYXNzOmB+aW8uQnl0ZXNJT2AgaW5zdGFuY2UgZmlyc3QgYW5kIGNhbGxpbmcgOm1ldGg6YHBhcnNlYC4KIAogICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhcyB3aXRoIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gY2xhc3M6OiBCeXRlc0hlYWRlclBhcnNlcihfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgRXhhY3RseSBsaWtlIDpjbGFzczpgQnl0ZXNQYXJzZXJgLCBleGNlcHQgdGhhdCAqaGVhZGVyc29ubHkqCisgICBkZWZhdWx0cyB0byBgYFRydWVgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFRoaXMgY2xhc3MgaXMgcGFyYWxsZWwgdG8gOmNsYXNzOmBCeXRlc1BhcnNlcmAsIGJ1dCBoYW5kbGVzIHN0cmluZyBpbnB1dC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiAqX2NsYXNzKiBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCisKKworICAgLi4gbWV0aG9kOjogcGFyc2UoZnAsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAgICBSZWFkIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSB0ZXh0LW1vZGUgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUKKyAgICAgIHJlc3VsdGluZyB0ZXh0LCBhbmQgcmV0dXJuIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQKKyAgICAgIGJvdGggdGhlIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgYW5kIHRoZQorICAgICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCisKKyAgICAgIE90aGVyIHRoYW4gdGhlIHRleHQgbW9kZSByZXF1aXJlbWVudCwgdGhpcyBtZXRob2Qgb3BlcmF0ZXMgbGlrZQorICAgICAgOm1ldGg6YEJ5dGVzUGFyc2VyLnBhcnNlYC4KKworCisgICAuLiBtZXRob2Q6OiBwYXJzZXN0cih0ZXh0LCBoZWFkZXJzb25seT1GYWxzZSkKKworICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIHN0cmluZyBvYmplY3QKKyAgICAgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBvbiBhIHN0cmluZyBpcworICAgICAgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5TdHJpbmdJT2AgaW5zdGFuY2UgZmlyc3QKKyAgICAgIGFuZCBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCisKKyAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCisKKworLi4gY2xhc3M6OiBIZWFkZXJQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIEV4YWN0bHkgbGlrZSA6Y2xhc3M6YFBhcnNlcmAsIGV4Y2VwdCB0aGF0ICpoZWFkZXJzb25seSoKKyAgIGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorCisKIFNpbmNlIGNyZWF0aW5nIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcgb3IgYSBmaWxlIG9iamVjdCBpcyBzdWNoCiBhIGNvbW1vbiB0YXNrLCBmb3VyIGZ1bmN0aW9ucyBhcmUgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZS4gIFRoZXkgYXJlIGF2YWlsYWJsZQogaW4gdGhlIHRvcC1sZXZlbCA6bW9kOmBlbWFpbGAgcGFja2FnZSBuYW1lc3BhY2UuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbAogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9zdHJpbmcocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2J5dGVzKHMsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuICBUaGlzIGlzCisgICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKKyAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXJgIGNsYXNzCisgICBjb25zdHJ1Y3Rvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworCisuLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmcCwgX2NsYXNzPU5vbmUsICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gYmluYXJ5IDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqIGFuZAorICAgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgY2xhc3MKKyAgIGNvbnN0cnVjdG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX3N0cmluZyhzLCBfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KICAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMKICAgIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLiAgVGhpcyBpcyBleGFjdGx5Ci0gICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKLSAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcwotICAgY29uc3RydWN0b3IuCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCiAgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgdHJlZSBmcm9tIGFuIG9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YC4KLSAgIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBgUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKgotICAgYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcwotICAgY29uc3RydWN0b3IuCisgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUKKyAgIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42ICpfY2xhc3MqIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKLSAgIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuCi0gICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHlvdSBtaWdodCB1c2UgdGhpcyBhdCBhbiBpbnRlcmFjdGl2ZSBQeXRob24gcHJvbXB0OjoKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB5b3UgbWlnaHQgdXNlIDpmdW5jOmBtZXNzYWdlX2Zyb21fYnl0ZXNgIGF0IGFuCitpbnRlcmFjdGl2ZSBQeXRob24gcHJvbXB0OjoKIAogICAgPj4+IGltcG9ydCBlbWFpbAotICAgPj4+IG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobXlTdHJpbmcpICAjIGRvY3Rlc3Q6ICtTS0lQCisgICA+Pj4gbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKG15Qnl0ZXMpICAjIGRvY3Rlc3Q6ICtTS0lQCiAKIAogQWRkaXRpb25hbCBub3RlcwpAQCAtMjc4LDM1ICsyOTQsMjcgQEAKIAogKiBNb3N0IG5vbi1cIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCB0eXBlIG1lc3NhZ2VzIGFyZSBwYXJzZWQgYXMgYSBzaW5nbGUgbWVzc2FnZQogICBvYmplY3Qgd2l0aCBhIHN0cmluZyBwYXlsb2FkLiAgVGhlc2Ugb2JqZWN0cyB3aWxsIHJldHVybiBgYEZhbHNlYGAgZm9yCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuICBUaGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAgbWV0aG9kIHdpbGwgcmV0dXJuIGEgc3RyaW5nIG9iamVjdC4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgLCBhbmQKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYCB3aWxsIHlpZWxkIGFuIGVtcHR5IGxpc3QuCiAKICogQWxsIDptaW1ldHlwZTpgbXVsdGlwYXJ0YCB0eXBlIG1lc3NhZ2VzIHdpbGwgYmUgcGFyc2VkIGFzIGEgY29udGFpbmVyIG1lc3NhZ2UKICAgb2JqZWN0IHdpdGggYSBsaXN0IG9mIHN1Yi1tZXNzYWdlIG9iamVjdHMgZm9yIHRoZWlyIHBheWxvYWQuICBUaGUgb3V0ZXIKICAgY29udGFpbmVyIG1lc3NhZ2Ugd2lsbCByZXR1cm4gYGBUcnVlYGAgZm9yCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAgYW5kIHRoZWlyCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCBtZXRob2Qgd2lsbCByZXR1cm4gdGhlIGxpc3Qgb2YKLSAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBzdWJwYXJ0cy4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgLCBhbmQKKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pdGVyX3BhcnRzYCB3aWxsIHlpZWxkIGEgbGlzdCBvZiBzdWJwYXJ0cy4KIAotKiBNb3N0IG1lc3NhZ2VzIHdpdGggYSBjb250ZW50IHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL1wqYCAoZS5nLgotICA6bWltZXR5cGU6YG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzYCBhbmQgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmApIHdpbGwgYWxzbyBiZQotICBwYXJzZWQgYXMgY29udGFpbmVyIG9iamVjdCBjb250YWluaW5nIGEgbGlzdCBwYXlsb2FkIG9mIGxlbmd0aCAxLiAgVGhlaXIKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCBtZXRob2Qgd2lsbCByZXR1cm4gYGBUcnVlYGAuCi0gIFRoZSBzaW5nbGUgZWxlbWVudCBpbiB0aGUgbGlzdCBwYXlsb2FkIHdpbGwgYmUgYSBzdWItbWVzc2FnZSBvYmplY3QuCisqIE1vc3QgbWVzc2FnZXMgd2l0aCBhIGNvbnRlbnQgdHlwZSBvZiA6bWltZXR5cGU6YG1lc3NhZ2UvXCpgIChzdWNoIGFzCisgIDptaW1ldHlwZTpgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXNgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCkgd2lsbCBhbHNvCisgIGJlIHBhcnNlZCBhcyBjb250YWluZXIgb2JqZWN0IGNvbnRhaW5pbmcgYSBsaXN0IHBheWxvYWQgb2YgbGVuZ3RoIDEuICBUaGVpcgorICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAgbWV0aG9kIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLgorICBUaGUgc2luZ2xlIGVsZW1lbnQgeWllbGRlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgCisgIHdpbGwgYmUgYSBzdWItbWVzc2FnZSBvYmplY3QuCiAKLSogU29tZSBub24tc3RhbmRhcmRzIGNvbXBsaWFudCBtZXNzYWdlcyBtYXkgbm90IGJlIGludGVybmFsbHkgY29uc2lzdGVudCBhYm91dAorKiBTb21lIG5vbi1zdGFuZGFyZHMtY29tcGxpYW50IG1lc3NhZ2VzIG1heSBub3QgYmUgaW50ZXJuYWxseSBjb25zaXN0ZW50IGFib3V0CiAgIHRoZWlyIDptaW1ldHlwZTpgbXVsdGlwYXJ0YFwgLWVkbmVzcy4gIFN1Y2ggbWVzc2FnZXMgbWF5IGhhdmUgYQogICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgb2YgdHlwZSA6bWltZXR5cGU6YG11bHRpcGFydGAsIGJ1dCB0aGVpcgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCBtYXkgcmV0dXJuIGBgRmFsc2VgYC4KKyAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCBtYXkgcmV0dXJuIGBgRmFsc2VgYC4KICAgSWYgc3VjaCBtZXNzYWdlcyB3ZXJlIHBhcnNlZCB3aXRoIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAsCiAgIHRoZXkgd2lsbCBoYXZlIGFuIGluc3RhbmNlIG9mIHRoZQogICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0YCBjbGFzcyBpbiB0aGVpcgogICAqZGVmZWN0cyogYXR0cmlidXRlIGxpc3QuICBTZWUgOm1vZDpgZW1haWwuZXJyb3JzYCBmb3IgZGV0YWlscy4KLQotLi4gcnVicmljOjogRm9vdG5vdGVzCi0KLS4uIFsjXSBBcyBvZiBlbWFpbCBwYWNrYWdlIHZlcnNpb24gMy4wLCBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjQsIHRoZSBjbGFzc2ljCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCB3YXMgcmUtaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuRmVlZFBhcnNlcmAsIHNvIHRoZSBzZW1hbnRpY3MgYW5kIHJlc3VsdHMgYXJlCi0gICBpZGVudGljYWwgYmV0d2VlbiB0aGUgdHdvIHBhcnNlcnMuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CmluZGV4IDJhNjA0N2QuLjhhNDE4NzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucG9saWN5LnJzdApAQCAtMTgsOSArMTgsMTIgQEAKIGVtYWlsIG1lc3NhZ2VzIChhIGJsb2NrIG9mIGhlYWRlciBmaWVsZHMgZWFjaCBjb25zaXN0aW5nIG9mIGEgbmFtZSBmb2xsb3dlZCBieQogYSBjb2xvbiBmb2xsb3dlZCBieSBhIHZhbHVlLCB0aGUgd2hvbGUgYmxvY2sgZm9sbG93ZWQgYnkgYSBibGFuayBsaW5lIGFuZCBhbgogYXJiaXRyYXJ5ICdib2R5JyksIGlzIGEgZm9ybWF0IHRoYXQgaGFzIGZvdW5kIHV0aWxpdHkgb3V0c2lkZSBvZiB0aGUgcmVhbG0gb2YKLWVtYWlsLiAgU29tZSBvZiB0aGVzZSB1c2VzIGNvbmZvcm0gZmFpcmx5IGNsb3NlbHkgdG8gdGhlIG1haW4gUkZDcywgc29tZSBkbwotbm90LiAgQW5kIGV2ZW4gd2hlbiB3b3JraW5nIHdpdGggZW1haWwsIHRoZXJlIGFyZSB0aW1lcyB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0bwotYnJlYWsgc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUgUkZDcy4KK2VtYWlsLiAgU29tZSBvZiB0aGVzZSB1c2VzIGNvbmZvcm0gZmFpcmx5IGNsb3NlbHkgdG8gdGhlIG1haW4gZW1haWwgUkZDcywgc29tZQorZG8gbm90LiAgRXZlbiB3aGVuIHdvcmtpbmcgd2l0aCBlbWFpbCwgdGhlcmUgYXJlIHRpbWVzIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvCiticmVhayBzdHJpY3QgY29tcGxpYW5jZSB3aXRoIHRoZSBSRkNzLCBzdWNoIGFzIGdlbmVyYXRpbmcgZW1haWxzIHRoYXQKK2ludGVyb3BlcmF0ZSB3aXRoIGVtYWlsIHNlcnZlcnMgdGhhdCBkbyBub3QgdGhlbXNlbHZlcyBmb2xsb3cgdGhlIHN0YW5kYXJkcywgb3IKK3RoYXQgaW1wbGVtZW50IGV4dGVuc2lvbnMgeW91IHdhbnQgdG8gdXNlIGluIHdheXMgdGhhdCB2aW9sYXRlIHRoZQorc3RhbmRhcmRzLgogCiBQb2xpY3kgb2JqZWN0cyBnaXZlIHRoZSBlbWFpbCBwYWNrYWdlIHRoZSBmbGV4aWJpbGl0eSB0byBoYW5kbGUgYWxsIHRoZXNlCiBkaXNwYXJhdGUgdXNlIGNhc2VzLgpAQCAtMzEsMjcgKzM0LDQwIEBACiBlbWFpbCBwYWNrYWdlIHRvIGFsdGVyIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiAgVGhlIHNldHRhYmxlIHZhbHVlcyBhbmQgdGhlaXIKIGRlZmF1bHRzIGFyZSBkZXNjcmliZWQgYmVsb3cuCiAKLVRoZXJlIGlzIGEgZGVmYXVsdCBwb2xpY3kgdXNlZCBieSBhbGwgY2xhc3NlcyBpbiB0aGUgZW1haWwgcGFja2FnZS4gIFRoaXMKLXBvbGljeSBpcyBuYW1lZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2l0aCBhIGNvcnJlc3BvbmRpbmcgcHJlLWRlZmluZWQgaW5zdGFuY2UKLW5hbWVkIDpjb25zdDpgY29tcGF0MzJgLiAgSXQgcHJvdmlkZXMgZm9yIGNvbXBsZXRlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGluCi1zb21lIGNhc2VzLCBpbmNsdWRpbmcgYnVnIGNvbXBhdGliaWxpdHkpIHdpdGggdGhlIHByZS1QeXRob24zLjMgdmVyc2lvbiBvZiB0aGUKLWVtYWlsIHBhY2thZ2UuCitUaGVyZSBpcyBhIGRlZmF1bHQgcG9saWN5IHVzZWQgYnkgYWxsIGNsYXNzZXMgaW4gdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgYWxsIG9mCit0aGUgOm1vZDpgfmVtYWlsLnBhcnNlcmAgY2xhc3NlcyBhbmQgdGhlIHJlbGF0ZWQgY29udmVuaWVuY2UgZnVuY3Rpb25zLCBhbmQgZm9yCit0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcywgdGhpcyBpcyB0aGUgOmNsYXNzOmBDb21wYXQzMmAKK3BvbGljeSwgdmlhIGl0cyBjb3JyZXNwb25kaW5nIHByZS1kZWZpbmVkIGluc3RhbmNlIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcworcG9saWN5IHByb3ZpZGVzIGZvciBjb21wbGV0ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IChpbiBzb21lIGNhc2VzLCBpbmNsdWRpbmcKK2J1ZyBjb21wYXRpYmlsaXR5KSB3aXRoIHRoZSBwcmUtUHl0aG9uMy4zIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuCisKK1RoaXMgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICpwb2xpY3kqIGtleXdvcmQgdG8KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyB0aGUgOmNsYXNzOmBFbWFpbFBvbGljeWAgcG9saWN5LCB2aWEKK2l0cyBwcmUtZGVmaW5lZCBpbnN0YW5jZSA6ZGF0YTpgfmRlZmF1bHRgLgorCitXaGVuIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKK29iamVjdCBpcyBjcmVhdGVkLCBpdCBhY3F1aXJlcyBhIHBvbGljeS4gIElmIHRoZSBtZXNzYWdlIGlzIGNyZWF0ZWQgYnkgYQorOm1vZDpgfmVtYWlsLnBhcnNlcmAsIGEgcG9saWN5IHBhc3NlZCB0byB0aGUgcGFyc2VyIHdpbGwgYmUgdGhlIHBvbGljeSB1c2VkIGJ5Cit0aGUgbWVzc2FnZSBpdCBjcmVhdGVzLiAgSWYgdGhlIG1lc3NhZ2UgaXMgY3JlYXRlZCBieSB0aGUgcHJvZ3JhbSwgdGhlbiB0aGUKK3BvbGljeSBjYW4gYmUgc3BlY2lmaWVkIHdoZW4gaXQgaXMgY3JlYXRlZC4gIFdoZW4gYSBtZXNzYWdlIGlzIHBhc3NlZCB0byBhCis6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYCwgdGhlIGdlbmVyYXRvciB1c2VzIHRoZSBwb2xpY3kgZnJvbSB0aGUgbWVzc2FnZSBieQorZGVmYXVsdCwgYnV0IHlvdSBjYW4gYWxzbyBwYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsCitvdmVycmlkZSB0aGUgb25lIHN0b3JlZCBvbiB0aGUgbWVzc2FnZSBvYmplY3QuCisKK1RoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgKnBvbGljeSoga2V5d29yZCBmb3IgdGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAgY2xhc3NlcworYW5kIHRoZSBwYXJzZXIgY29udmVuaWVuY2UgZnVuY3Rpb25zICoqd2lsbCBiZSBjaGFuZ2luZyoqIGluIGEgZnV0dXJlIHZlcnNpb24gb2YKK1B5dGhvbi4gIFRoZXJlZm9yZSB5b3Ugc2hvdWxkICoqYWx3YXlzIHNwZWNpZnkgZXhwbGljaXRseSB3aGljaCBwb2xpY3kgeW91IHdhbnQKK3RvIHVzZSoqIHdoZW4gY2FsbGluZyBhbnkgb2YgdGhlIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBkZXNjcmliZWQgaW4gdGhlCis6bW9kOmB+ZW1haWwucGFyc2VyYCBtb2R1bGUuCiAKIFRoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgZG9jdW1lbnRhdGlvbiBjb3ZlcnMgdGhlIGZlYXR1cmVzIG9mIDpjbGFzczpgUG9saWN5YCwgYW4KLTp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCAgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCis6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCiBwb2xpY3kgb2JqZWN0cywgaW5jbHVkaW5nIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcyBpbmNsdWRlcyBjZXJ0YWluIGhvb2sKIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHdoaWNoIGEgY3VzdG9tIHBvbGljeQotY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4KLQotV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGFjcXVpcmVzIGEgcG9saWN5LgotQnkgZGVmYXVsdCB0aGlzIHdpbGwgYmUgOmNvbnN0OmBjb21wYXQzMmAsIGJ1dCBhIGRpZmZlcmVudCBwb2xpY3kgY2FuIGJlCi1zcGVjaWZpZWQuICBJZiB0aGUgYGBNZXNzYWdlYGAgaXMgY3JlYXRlZCBieSBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeQotcGFzc2VkIHRvIHRoZSBwYXJzZXIgd2lsbCBiZSB0aGUgcG9saWN5IHVzZWQgYnkgdGhlIGBgTWVzc2FnZWBgIGl0IGNyZWF0ZXMuICBJZgotdGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlIHBvbGljeSBjYW4gYmUgc3BlY2lmaWVkCi13aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgYGBNZXNzYWdlYGAgaXMgcGFzc2VkIHRvIGEgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsCi10aGUgZ2VuZXJhdG9yIHVzZXMgdGhlIHBvbGljeSBmcm9tIHRoZSBgYE1lc3NhZ2VgYCBieSBkZWZhdWx0LCBidXQgeW91IGNhbiBhbHNvCi1wYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsIG92ZXJyaWRlIHRoZSBvbmUgc3RvcmVkIG9uCi10aGUgYGBNZXNzYWdlYGAgb2JqZWN0LgorY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4gIFRoZSBzZWNvbmQgcGFydCBkZXNjcmliZXMgdGhlCitjb25jcmV0ZSBjbGFzc2VzIDpjbGFzczpgRW1haWxQb2xpY3lgIGFuZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2hpY2ggaW1wbGVtZW50Cit0aGUgaG9va3MgdGhhdCBwcm92aWRlIHRoZSBzdGFuZGFyZCBiZWhhdmlvciBhbmQgdGhlIGJhY2t3YXJkIGNvbXBhdGlibGUKK2JlaGF2aW9yIGFuZCBmZWF0dXJlcywgcmVzcGVjdGl2ZWx5LgogCiA6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2VzIGFyZSBpbW11dGFibGUsIGJ1dCB0aGV5IGNhbiBiZSBjbG9uZWQsIGFjY2VwdGluZyB0aGUKIHNhbWUga2V5d29yZCBhcmd1bWVudHMgYXMgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5pbmcgYSBuZXcKQEAgLTE0Nyw2ICsxNjMsNyBAQAogICAgVGhpcyBjbGFzcyBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcywgYW5kIHRodXMgdmFsdWVzIGZvciB0aGUKICAgIGZvbGxvd2luZyBtYXkgYmUgcGFzc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiBhbnkgcG9saWN5IGNsYXNzOgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IG1heF9saW5lX2xlbmd0aAogCiAgICAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW55IGxpbmUgaW4gdGhlIHNlcmlhbGl6ZWQgb3V0cHV0LCBub3QgY291bnRpbmcgdGhlCkBAIC0xNTQsMTIgKzE3MSwxNCBAQAogICAgICAgYGAwYGAgb3IgOmNvbnN0OmBOb25lYCBpbmRpY2F0ZXMgdGhhdCBubyBsaW5lIHdyYXBwaW5nIHNob3VsZCBiZQogICAgICAgZG9uZSBhdCBhbGwuCiAKKwogICAgLi4gYXR0cmlidXRlOjogbGluZXNlcAogCiAgICAgICBUaGUgc3RyaW5nIHRvIGJlIHVzZWQgdG8gdGVybWluYXRlIGxpbmVzIGluIHNlcmlhbGl6ZWQgb3V0cHV0LiAgVGhlCiAgICAgICBkZWZhdWx0IGlzIGBgXG5gYCBiZWNhdXNlIHRoYXQncyB0aGUgaW50ZXJuYWwgZW5kLW9mLWxpbmUgZGlzY2lwbGluZSB1c2VkCiAgICAgICBieSBQeXRob24sIHRob3VnaCBgYFxyXG5gYCBpcyByZXF1aXJlZCBieSB0aGUgUkZDcy4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBjdGVfdHlwZQogCiAgICAgICBDb250cm9scyB0aGUgdHlwZSBvZiBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5ncyB0aGF0IG1heSBiZSBvciBhcmUKQEAgLTE3NCw4ICsxOTMsOCBAQAogCiAgICAgICBgYDhiaXRgYCAgZGF0YSBpcyBub3QgY29uc3RyYWluZWQgdG8gYmUgNyBiaXQgY2xlYW4uICBEYXRhIGluIGhlYWRlcnMgaXMKICAgICAgICAgICAgICAgICBzdGlsbCByZXF1aXJlZCB0byBiZSBBU0NJSS1vbmx5IGFuZCBzbyB3aWxsIGJlIGVuY29kZWQgKHNlZQotICAgICAgICAgICAgICAgICdiaW5hcnlfZm9sZCcgYmVsb3cgZm9yIGFuIGV4Y2VwdGlvbiksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UKLSAgICAgICAgICAgICAgICB0aGUgYGA4Yml0YGAgQ1RFLgorICAgICAgICAgICAgICAgIDptZXRoOmBmb2xkX2JpbmFyeWAgYW5kIDphdHRyOmB+RW1haWxQb2xpY3kudXRmOGAgYmVsb3cgZm9yCisgICAgICAgICAgICAgICAgZXhjZXB0aW9ucyksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UgdGhlIGBgOGJpdGBgIENURS4KICAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogICAgICAgQSBgYGN0ZV90eXBlYGAgdmFsdWUgb2YgYGA4Yml0YGAgb25seSB3b3JrcyB3aXRoIGBgQnl0ZXNHZW5lcmF0b3JgYCwgbm90CkBAIC0xODMsNiArMjAyLDcgQEAKICAgICAgIGBgR2VuZXJhdG9yYGAgaXMgb3BlcmF0aW5nIHVuZGVyIGEgcG9saWN5IHRoYXQgc3BlY2lmaWVzCiAgICAgICBgYGN0ZV90eXBlPThiaXRgYCwgaXQgd2lsbCBhY3QgYXMgaWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLgogCisKICAgIC4uIGF0dHJpYnV0ZTo6IHJhaXNlX29uX2RlZmVjdAogCiAgICAgICBJZiA6Y29uc3Q6YFRydWVgLCBhbnkgZGVmZWN0cyBlbmNvdW50ZXJlZCB3aWxsIGJlIHJhaXNlZCBhcyBlcnJvcnMuICBJZgpAQCAtMTkwLDcgKzIxMCw2IEBACiAgICAgICA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YCBtZXRob2QuCiAKIAotCiAgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbVxfCiAKICAgICAgIElmIDpjb25zdDpgVHJ1ZWAsIGxpbmVzIHN0YXJ0aW5nIHdpdGggKiJGcm9tICIqIGluIHRoZSBib2R5IGFyZQpAQCAtMjAxLDE5ICsyMjAsMzEgQEAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogICAgICAgICAgVGhlICptYW5nbGVfZnJvbV8qIHBhcmFtZXRlci4KIAorCisgICAuLiBhdHRyaWJ1dGU6OiBtZXNzYWdlX2ZhY3RvcnkKKworICAgICAgQSBmYWN0b3J5IGZ1bmN0aW9uIGZvciBjb25zdHJ1Y3RpbmcgYSBuZXcgZW1wdHkgbWVzc2FnZSBvYmplY3QuICBVc2VkCisgICAgICBieSB0aGUgcGFyc2VyIHdoZW4gYnVpbGRpbmcgbWVzc2FnZXMuICBEZWZhdWx0cyB0byBgYE5vbmVgYCwgaW4KKyAgICAgIHdoaWNoIGNhc2UgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpcyB1c2VkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogICAgVGhlIGZvbGxvd2luZyA6Y2xhc3M6YFBvbGljeWAgbWV0aG9kIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCBieSBjb2RlIHVzaW5nCiAgICB0aGUgZW1haWwgbGlicmFyeSB0byBjcmVhdGUgcG9saWN5IGluc3RhbmNlcyB3aXRoIGN1c3RvbSBzZXR0aW5nczoKIAorCiAgICAuLiBtZXRob2Q6OiBjbG9uZSgqKmt3KQogCiAgICAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBQb2xpY3lgIGluc3RhbmNlIHdob3NlIGF0dHJpYnV0ZXMgaGF2ZSB0aGUgc2FtZQogICAgICAgdmFsdWVzIGFzIHRoZSBjdXJyZW50IGluc3RhbmNlLCBleGNlcHQgd2hlcmUgdGhvc2UgYXR0cmlidXRlcyBhcmUKICAgICAgIGdpdmVuIG5ldyB2YWx1ZXMgYnkgdGhlIGtleXdvcmQgYXJndW1lbnRzLgogCisKICAgIFRoZSByZW1haW5pbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgZW1haWwgcGFja2FnZSBjb2RlLAogICAgYW5kIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlLgogICAgQSBjdXN0b20gcG9saWN5IG11c3QgaW1wbGVtZW50IGFsbCBvZiB0aGVzZSBtZXRob2RzLgogCisKICAgIC4uIG1ldGhvZDo6IGhhbmRsZV9kZWZlY3Qob2JqLCBkZWZlY3QpCiAKICAgICAgIEhhbmRsZSBhICpkZWZlY3QqIGZvdW5kIG9uICpvYmoqLiAgV2hlbiB0aGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzCkBAIC0yMjQsNiArMjU1LDcgQEAKICAgICAgIGl0IGlzIGBgVHJ1ZWBgLCAqZGVmZWN0KiBpcyByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLiAgSWYgaXQgaXMgYGBGYWxzZWBgCiAgICAgICAodGhlIGRlZmF1bHQpLCAqb2JqKiBhbmQgKmRlZmVjdCogYXJlIHBhc3NlZCB0byA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YC4KIAorCiAgICAuLiBtZXRob2Q6OiByZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCiAKICAgICAgIFJlZ2lzdGVyIGEgKmRlZmVjdCogb24gKm9iaiouICBJbiB0aGUgZW1haWwgcGFja2FnZSwgKmRlZmVjdCogd2lsbCBhbHdheXMKQEAgLTIzNiwxNCArMjY4LDE2IEBACiAgICAgICBjdXN0b20gYGBNZXNzYWdlYGAgb2JqZWN0cykgc2hvdWxkIGFsc28gcHJvdmlkZSBzdWNoIGFuIGF0dHJpYnV0ZSwKICAgICAgIG90aGVyd2lzZSBkZWZlY3RzIGluIHBhcnNlZCBtZXNzYWdlcyB3aWxsIHJhaXNlIHVuZXhwZWN0ZWQgZXJyb3JzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9tYXhfY291bnQobmFtZSkKIAogICAgICAgUmV0dXJuIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIGhlYWRlcnMgbmFtZWQgKm5hbWUqLgogCi0gICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAKLSAgICAgIG9iamVjdC4gIElmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBub3QgYGAwYGAgb3IgYGBOb25lYGAsIGFuZCB0aGVyZSBhcmUKLSAgICAgIGFscmVhZHkgYSBudW1iZXIgb2YgaGVhZGVycyB3aXRoIHRoZSBuYW1lICpuYW1lKiBlcXVhbCB0byB0aGUgdmFsdWUKLSAgICAgIHJldHVybmVkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKyAgICAgIENhbGxlZCB3aGVuIGEgaGVhZGVyIGlzIGFkZGVkIHRvIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorICAgICAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90CisgICAgICBgYDBgYCBvciBgYE5vbmVgYCwgYW5kIHRoZXJlIGFyZSBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUKKyAgICAgIG5hbWUgKm5hbWUqIGdyZWF0aGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIHJldHVybmVkLCBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKICAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYGBNZXNzYWdlLl9fc2V0aXRlbV9fYGAgaXMgdG8gYXBwZW5kIHRoZQogICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKQEAgLTI1NSw2ICsyODksNyBAQAogCiAgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIGBgTm9uZWBgIGZvciBhbGwgaGVhZGVyIG5hbWVzLgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zb3VyY2VfcGFyc2Uoc291cmNlbGluZXMpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggYSBsaXN0IG9mIHN0cmluZ3MsIGVhY2ggc3RyaW5nCkBAIC0yNzQsNiArMzA5LDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgbmFtZSBhbmQgdmFsdWUgcHJvdmlkZWQgYnkKQEAgLTI4OSw2ICszMjUsNyBAQAogCiAgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQogCiAgICAgICBUaGUgZW1haWwgcGFja2FnZSBjYWxscyB0aGlzIG1ldGhvZCB3aXRoIHRoZSAqbmFtZSogYW5kICp2YWx1ZSogY3VycmVudGx5CkBAIC0zMDQsNiArMzQxLDcgQEAKIAogICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgogCisKICAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKQEAgLTMxNiw2ICszNTQsNyBAQAogICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCiAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZC4KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKIAogICAgICAgVGhlIHNhbWUgYXMgOm1ldGg6YGZvbGRgLCBleGNlcHQgdGhhdCB0aGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIGJlIGEKQEAgLTMyNSw3MyArMzY0LDYgQEAKICAgICAgIGNvbnZlcnRlZCBiYWNrIGludG8gYmluYXJ5IGRhdGEgaW4gdGhlIHJldHVybmVkIGJ5dGVzIG9iamVjdC4KIAogCi0uLiBjbGFzczo6IENvbXBhdDMyKCoqa3cpCi0KLSAgIFRoaXMgY29uY3JldGUgOmNsYXNzOmBQb2xpY3lgIGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHBvbGljeS4gIEl0Ci0gICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLiAgVGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCi0gICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKLSAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgotCi0gICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgaGF2ZSB2YWx1ZXMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlCi0gICA6Y2xhc3M6YFBvbGljeWAgZGVmYXVsdDoKLQotICAgLi4gYXR0cmlidXRlOjogbWFuZ2xlX2Zyb21fCi0KLSAgICAgIFRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgLgotCi0gICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCi0gICBhYnN0cmFjdCBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKLQotICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKLQotICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCi0gICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKLSAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCi0gICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KLQotICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQotCi0gICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCi0KLSAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKLQotICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KLSAgICAgIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgotCi0gICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQotCi0gICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKLSAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCi0gICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQotICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KLQotICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCi0KLSAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZwotICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKLSAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKLSAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKLSAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKLSAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbnkgKFJGQyBpbnZhbGlkKSBiaW5hcnkgZGF0YSBpdCBtYXkgY29udGFpbi4KLQotCi1BbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCBpcyBwcm92aWRlZCBhcyBhIG1vZHVsZSBjb25zdGFudDoKLQotLi4gZGF0YTo6IGNvbXBhdDMyCi0KLSAgIEFuIGluc3RhbmNlIG9mIDpjbGFzczpgQ29tcGF0MzJgLCBwcm92aWRpbmcgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKLSAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuCi0KLQotLi4gbm90ZTo6Ci0KLSAgIFRoZSBkb2N1bWVudGF0aW9uIGJlbG93IGRlc2NyaWJlcyBuZXcgcG9saWNpZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlCi0gICBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCi0gICBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgZmVhdHVyZSkKLSAgIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KIAogLi4gY2xhc3M6OiBFbWFpbFBvbGljeSgqKmt3KQogCkBAIC00MDQsOSArMzc2LDE1IEBACiAgICBvbiB0aGUgdHlwZSBvZiB0aGUgZmllbGQuICBUaGUgcGFyc2luZyBhbmQgZm9sZGluZyBhbGdvcml0aG0gZnVsbHkgaW1wbGVtZW50CiAgICA6cmZjOmAyMDQ3YCBhbmQgOnJmYzpgNTMyMmAuCiAKKyAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5Lm1lc3NhZ2VfZmFjdG9yeWAKKyAgIGF0dHJpYnV0ZSBpcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAuCisKICAgIEluIGFkZGl0aW9uIHRvIHRoZSBzZXR0YWJsZSBhdHRyaWJ1dGVzIGxpc3RlZCBhYm92ZSB0aGF0IGFwcGx5IHRvIGFsbAogICAgcG9saWNpZXMsIHRoaXMgcG9saWN5IGFkZHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXM6CiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCisKKwogICAgLi4gYXR0cmlidXRlOjogdXRmOAogCiAgICAgICBJZiBgYEZhbHNlYGAsIGZvbGxvdyA6cmZjOmA1MzIyYCwgc3VwcG9ydGluZyBub24tQVNDSUkgY2hhcmFjdGVycyBpbgpAQCAtNDE1LDEzICszOTMsMTQgQEAKICAgICAgIGZvcm1hdHRlZCBpbiB0aGlzIHdheSBtYXkgYmUgcGFzc2VkIHRvIFNNVFAgc2VydmVycyB0aGF0IHN1cHBvcnQKICAgICAgIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uICg6cmZjOmA2NTMxYCkuCiAKKwogICAgLi4gYXR0cmlidXRlOjogcmVmb2xkX3NvdXJjZQogCiAgICAgICBJZiB0aGUgdmFsdWUgZm9yIGEgaGVhZGVyIGluIHRoZSBgYE1lc3NhZ2VgYCBvYmplY3Qgb3JpZ2luYXRlZCBmcm9tIGEKICAgICAgIDptb2Q6YH5lbWFpbC5wYXJzZXJgIChhcyBvcHBvc2VkIHRvIGJlaW5nIHNldCBieSBhIHByb2dyYW0pLCB0aGlzCiAgICAgICBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGEgZ2VuZXJhdG9yIHNob3VsZCByZWZvbGQgdGhhdCB2YWx1ZQotICAgICAgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvIHN0cmVhbSBmb3JtLiAgVGhlIHBvc3NpYmxlIHZhbHVlcwotICAgICAgYXJlOgorICAgICAgd2hlbiB0cmFuc2Zvcm1pbmcgdGhlIG1lc3NhZ2UgYmFjayBpbnRvIHNlcmlhbGl6ZWQgZm9ybS4gIFRoZSBwb3NzaWJsZQorICAgICAgdmFsdWVzIGFyZToKIAogICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgYGBub25lYGAgIGFsbCBzb3VyY2UgdmFsdWVzIHVzZSBvcmlnaW5hbCBmb2xkaW5nCkBAIC00MzQsMjMgKzQxMywyNCBAQAogCiAgICAgICBUaGUgZGVmYXVsdCBpcyBgYGxvbmdgYC4KIAorCiAgICAuLiBhdHRyaWJ1dGU6OiBoZWFkZXJfZmFjdG9yeQogCiAgICAgICBBIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgYGBuYW1lYGAgYW5kIGBgdmFsdWVgYCwgd2hlcmUKICAgICAgIGBgbmFtZWBgIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kIGBgdmFsdWVgYCBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQKICAgICAgIHZhbHVlLCBhbmQgcmV0dXJucyBhIHN0cmluZyBzdWJjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIuICBBCiAgICAgICBkZWZhdWx0IGBgaGVhZGVyX2ZhY3RvcnlgYCAoc2VlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWApIGlzIHByb3ZpZGVkCi0gICAgICB0aGF0IHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIDpSRkM6YDUzMjJgIGhlYWRlciBmaWVsZCB0eXBlcy4gIChDdXJyZW50bHkKLSAgICAgIGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlIHNwZWNpYWwgdHJlYXRtZW50LCB3aGlsZSBhbGwgb3RoZXIKLSAgICAgIGZpZWxkcyBhcmUgdHJlYXRlZCBhcyB1bnN0cnVjdHVyZWQuICBUaGlzIGxpc3Qgd2lsbCBiZSBjb21wbGV0ZWQgYmVmb3JlCi0gICAgICB0aGUgZXh0ZW5zaW9uIGlzIG1hcmtlZCBzdGFibGUuKQorICAgICAgdGhhdCBzdXBwb3J0cyBjdXN0b20gcGFyc2luZyBmb3IgdGhlIHZhcmlvdXMgYWRkcmVzcyBhbmQgZGF0ZSA6UkZDOmA1MzIyYAorICAgICAgaGVhZGVyIGZpZWxkIHR5cGVzLCBhbmQgdGhlIG1ham9yIE1JTUUgaGVhZGVyIGZpZWxkIHN0eXBlcy4gIFN1cHBvcnQgZm9yCisgICAgICBhZGRpdGlvbmFsIGN1c3RvbSBwYXJzaW5nIHdpbGwgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KKwogCiAgICAuLiBhdHRyaWJ1dGU6OiBjb250ZW50X21hbmFnZXIKIAogICAgICAgQW4gb2JqZWN0IHdpdGggYXQgbGVhc3QgdHdvIG1ldGhvZHM6IGdldF9jb250ZW50IGFuZCBzZXRfY29udGVudC4gIFdoZW4KLSAgICAgIHRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfY29udGVudGAgb3IKLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9jb250ZW50YCBtZXRob2Qgb2YgYQotICAgICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvYmplY3QgaXMgY2FsbGVkLCBpdCBjYWxscyB0aGUKKyAgICAgIHRoZSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmdldF9jb250ZW50YCBvcgorICAgICAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kIG9mIGFuCisgICAgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0IGlzIGNhbGxlZCwgaXQgY2FsbHMgdGhlCiAgICAgICBjb3JyZXNwb25kaW5nIG1ldGhvZCBvZiB0aGlzIG9iamVjdCwgcGFzc2luZyBpdCB0aGUgbWVzc2FnZSBvYmplY3QgYXMgaXRzCiAgICAgICBmaXJzdCBhcmd1bWVudCwgYW5kIGFueSBhcmd1bWVudHMgb3Iga2V5d29yZHMgdGhhdCB3ZXJlIHBhc3NlZCB0byBpdCBhcwogICAgICAgYWRkaXRpb25hbCBhcmd1bWVudHMuICBCeSBkZWZhdWx0IGBgY29udGVudF9tYW5hZ2VyYGAgaXMgc2V0IHRvCkBAIC00NjIsMTYgKzQ0MiwyMiBAQAogICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBhYnN0cmFjdAogICAgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6CiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX21heF9jb3VudChuYW1lKQogCiAgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKICAgICAgIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5tYXhfY291bnRgIGF0dHJpYnV0ZSBvZiB0aGUKICAgICAgIHNwZWNpYWxpemVkIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KIAorCiAgICAuLiBtZXRob2Q6OiBoZWFkZXJfc291cmNlX3BhcnNlKHNvdXJjZWxpbmVzKQogCi0gICAgICBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QgaXMgdGhlIHNhbWUgYXMgdGhhdCBmb3IgdGhlCi0gICAgICA6Y2xhc3M6YENvbXBhdDMyYCBwb2xpY3kuCisKKyAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnYGA6YGAnIGFuZCByZXR1cm5lZAorICAgICAgdW5tb2RpZmllZC4gIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmCisgICAgICB0aGUgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLAorICAgICAgYW5kIHN0cmlwcGluZyBhbnkgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIG9yIGxpbmVmZWVkIGNoYXJhY3RlcnMuCisKIAogICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQogCkBAIC00ODIsNiArNDY4LDcgQEAKICAgICAgIHRoZSB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZCBpZiB0aGUgaW5wdXQgdmFsdWUKICAgICAgIGNvbnRhaW5zIENSIG9yIExGIGNoYXJhY3RlcnMuCiAKKwogICAgLi4gbWV0aG9kOjogaGVhZGVyX2ZldGNoX3BhcnNlKG5hbWUsIHZhbHVlKQogCiAgICAgICBJZiB0aGUgdmFsdWUgaGFzIGEgYGBuYW1lYGAgYXR0cmlidXRlLCBpdCBpcyByZXR1cm5lZCB0byB1bm1vZGlmaWVkLgpAQCAtNDkwLDYgKzQ3Nyw3IEBACiAgICAgICBoZWFkZXIgb2JqZWN0IGlzIHJldHVybmVkLiAgQW55IHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgZ2V0IHR1cm5lZCBpbnRvCiAgICAgICB0aGUgdW5pY29kZSB1bmtub3duLWNoYXJhY3RlciBnbHlwaC4KIAorCiAgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQogCiAgICAgICBIZWFkZXIgZm9sZGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSA6YXR0cjpgcmVmb2xkX3NvdXJjZWAgcG9saWN5IHNldHRpbmcuCkBAIC01MDgsNiArNDk2LDcgQEAKICAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIGBgcmVmb2xkX3NvdXJjZWBgIHNldHRpbmcsIHdoaWNoIGNhdXNlcyB0aGUgYmluYXJ5IGRhdGEKICAgICAgIHRvIGJlIENURSBlbmNvZGVkIHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCiAKKwogICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCiAKICAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCBpZiA6YXR0cjpgflBvbGljeS5jdGVfdHlwZWAgaXMgYGA3Yml0YGAsIGV4Y2VwdApAQCAtNTE5LDIzICs1MDgsMjcgQEAKICAgICAgIGBgcmVmb2xkX2hlYWRlcmBgIHNldHRpbmcsIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoZXRoZXIgdGhlCiAgICAgICBiaW5hcnkgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgogCisKIFRoZSBmb2xsb3dpbmcgaW5zdGFuY2VzIG9mIDpjbGFzczpgRW1haWxQb2xpY3lgIHByb3ZpZGUgZGVmYXVsdHMgc3VpdGFibGUgZm9yCiBzcGVjaWZpYyBhcHBsaWNhdGlvbiBkb21haW5zLiAgTm90ZSB0aGF0IGluIHRoZSBmdXR1cmUgdGhlIGJlaGF2aW9yIG9mIHRoZXNlCiBpbnN0YW5jZXMgKGluIHBhcnRpY3VsYXIgdGhlIGBgSFRUUGBgIGluc3RhbmNlKSBtYXkgYmUgYWRqdXN0ZWQgdG8gY29uZm9ybSBldmVuCiBtb3JlIGNsb3NlbHkgdG8gdGhlIFJGQ3MgcmVsZXZhbnQgdG8gdGhlaXIgZG9tYWlucy4KIAorCiAuLiBkYXRhOjogZGVmYXVsdAogCiAgICBBbiBpbnN0YW5jZSBvZiBgYEVtYWlsUG9saWN5YGAgd2l0aCBhbGwgZGVmYXVsdHMgdW5jaGFuZ2VkLiAgVGhpcyBwb2xpY3kKICAgIHVzZXMgdGhlIHN0YW5kYXJkIFB5dGhvbiBgYFxuYGAgbGluZSBlbmRpbmdzIHJhdGhlciB0aGFuIHRoZSBSRkMtY29ycmVjdAogICAgYGBcclxuYGAuCiAKKwogLi4gZGF0YTo6IFNNVFAKIAogICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIG1lc3NhZ2VzIGluIGNvbmZvcm1hbmNlIHdpdGggdGhlIGVtYWlsIFJGQ3MuCiAgICBMaWtlIGBgZGVmYXVsdGBgLCBidXQgd2l0aCBgYGxpbmVzZXBgYCBzZXQgdG8gYGBcclxuYGAsIHdoaWNoIGlzIFJGQwogICAgY29tcGxpYW50LgogCisKIC4uIGRhdGE6OiBTTVRQVVRGOAogCiAgICBUaGUgc2FtZSBhcyBgYFNNVFBgYCBleGNlcHQgdGhhdCA6YXR0cjpgfkVtYWlsUG9saWN5LnV0ZjhgIGlzIGBgVHJ1ZWBgLgpAQCAtNTQ0LDExICs1MzcsMTMgQEAKICAgIHNlbmRlciBvciByZWNpcGllbnQgYWRkcmVzc2VzIGhhdmUgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgKHRoZQogICAgOm1ldGg6YHNtdHBsaWIuU01UUC5zZW5kX21lc3NhZ2VgIG1ldGhvZCBoYW5kbGVzIHRoaXMgYXV0b21hdGljYWxseSkuCiAKKwogLi4gZGF0YTo6IEhUVFAKIAogICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIGhlYWRlcnMgd2l0aCBmb3IgdXNlIGluIEhUVFAgdHJhZmZpYy4gIExpa2UKICAgIGBgU01UUGBgIGV4Y2VwdCB0aGF0IGBgbWF4X2xpbmVfbGVuZ3RoYGAgaXMgc2V0IHRvIGBgTm9uZWBgICh1bmxpbWl0ZWQpLgogCisKIC4uIGRhdGE6OiBzdHJpY3QKIAogICAgQ29udmVuaWVuY2UgaW5zdGFuY2UuICBUaGUgc2FtZSBhcyBgYGRlZmF1bHRgYCBleGNlcHQgdGhhdApAQCAtNTU3LDYgKzU1Miw3IEBACiAKICAgICAgICAgc29tZXBvbGljeSArIHBvbGljeS5zdHJpY3QKIAorCiBXaXRoIGFsbCBvZiB0aGVzZSA6Y2xhc3M6YEVtYWlsUG9saWNpZXMgPC5FbWFpbFBvbGljeT5gLCB0aGUgZWZmZWN0aXZlIEFQSSBvZgogdGhlIGVtYWlsIHBhY2thZ2UgaXMgY2hhbmdlZCBmcm9tIHRoZSBQeXRob24gMy4yIEFQSSBpbiB0aGUgZm9sbG93aW5nIHdheXM6CiAKQEAgLTU3Myw3ICs1NjksNyBAQAogICAgICBhbmQgYWxsb3dlZC4KIAogRnJvbSB0aGUgYXBwbGljYXRpb24gdmlldywgdGhpcyBtZWFucyB0aGF0IGFueSBoZWFkZXIgb2J0YWluZWQgdGhyb3VnaCB0aGUKLTpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXMgYSBoZWFkZXIgb2JqZWN0IHdpdGggZXh0cmEKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyBhIGhlYWRlciBvYmplY3Qgd2l0aCBleHRyYQogYXR0cmlidXRlcywgd2hvc2Ugc3RyaW5nIHZhbHVlIGlzIHRoZSBmdWxseSBkZWNvZGVkIHVuaWNvZGUgdmFsdWUgb2YgdGhlCiBoZWFkZXIuICBMaWtld2lzZSwgYSBoZWFkZXIgbWF5IGJlIGFzc2lnbmVkIGEgbmV3IHZhbHVlLCBvciBhIG5ldyBoZWFkZXIKIGNyZWF0ZWQsIHVzaW5nIGEgdW5pY29kZSBzdHJpbmcsIGFuZCB0aGUgcG9saWN5IHdpbGwgdGFrZSBjYXJlIG9mIGNvbnZlcnRpbmcKQEAgLTU4MSwzICs1NzcsNzUgQEAKIAogVGhlIGhlYWRlciBvYmplY3RzIGFuZCB0aGVpciBhdHRyaWJ1dGVzIGFyZSBkZXNjcmliZWQgaW4KIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWAuCisKKworCisuLiBjbGFzczo6IENvbXBhdDMyKCoqa3cpCisKKyAgIFRoaXMgY29uY3JldGUgOmNsYXNzOmBQb2xpY3lgIGlzIHRoZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHBvbGljeS4gIEl0CisgICByZXBsaWNhdGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLiAgVGhlCisgICA6bW9kOmB+ZW1haWwucG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCisgICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKKyAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgorCisgICBUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgaGF2ZSB2YWx1ZXMgdGhhdCBhcmUgZGlmZmVyZW50IGZyb20gdGhlCisgICA6Y2xhc3M6YFBvbGljeWAgZGVmYXVsdDoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBtYW5nbGVfZnJvbV8KKworICAgICAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAuCisKKworICAgVGhlIGNsYXNzIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgY29uY3JldGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZQorICAgYWJzdHJhY3QgbWV0aG9kcyBvZiA6Y2xhc3M6YFBvbGljeWA6CisKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCisgICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKKyAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCisgICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKworCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcmV0dXJuZWQgdW5tb2RpZmllZC4KKworCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYQorICAgICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0IHVzaW5nIHRoZSBgYHVua25vd24tOGJpdGBgIGNoYXJzZXQuCisgICAgICBPdGhlcndpc2UgaXQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KKworCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKKyAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCisgICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQorICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworCisgICAuLiBtZXRob2Q6OiBmb2xkX2JpbmFyeShuYW1lLCB2YWx1ZSkKKworICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBmb2xkaW5nCisgICAgICBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcyBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcworICAgICAgZWFjaCByZXN1bHRpbmcgbGluZSB0byB0aGUgYGBtYXhfbGluZV9sZW5ndGhgYC4gIElmIGBgY3RlX3R5cGVgYCBpcworICAgICAgYGA3Yml0YGAsIG5vbi1hc2NpaSBiaW5hcnkgZGF0YSBpcyBDVEUgZW5jb2RlZCB1c2luZyB0aGUgYGB1bmtub3duLThiaXRgYAorICAgICAgY2hhcnNldC4gIE90aGVyd2lzZSB0aGUgb3JpZ2luYWwgc291cmNlIGhlYWRlciBpcyB1c2VkLCB3aXRoIGl0cyBleGlzdGluZworICAgICAgbGluZSBicmVha3MgYW5kIGFueSAoUkZDIGludmFsaWQpIGJpbmFyeSBkYXRhIGl0IG1heSBjb250YWluLgorCisKKy4uIGRhdGE6OiBjb21wYXQzMgorCisgICBBbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YENvbXBhdDMyYCwgcHJvdmlkaW5nICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCisgICBiZWhhdmlvciBvZiB0aGUgZW1haWwgcGFja2FnZSBpbiBQeXRob24gMy4yLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuMyBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBmZWF0dXJlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnJzdAppbmRleCBlOGJiMDJiLi5jNDE4N2RkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucnN0CkBAIC0zLDUwICszLDEwNCBAQAogCiAuLiBtb2R1bGU6OiBlbWFpbAogICAgOnN5bm9wc2lzOiBQYWNrYWdlIHN1cHBvcnRpbmcgdGhlIHBhcnNpbmcsIG1hbmlwdWxhdGluZywgYW5kIGdlbmVyYXRpbmcKLSAgICAgICAgICAgICAgZW1haWwgbWVzc2FnZXMsIGluY2x1ZGluZyBNSU1FIGRvY3VtZW50cy4KLQotLi4gbW9kdWxlYXV0aG9yOjogQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPgotLi4gc2VjdGlvbmF1dGhvcjo6IEJhcnJ5IEEuIFdhcnNhdyA8YmFycnlAcHl0aG9uLm9yZz4KLS4uIENvcHlyaWdodCAoQykgMjAwMS0yMDEwIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgIGVtYWlsIG1lc3NhZ2VzLgorLi4gbW9kdWxlYXV0aG9yOjogQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPiwKKyAgICAgICAgICAgICAgICAgIFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9fX2luaXRfXy5weWAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIGEgbGlicmFyeSBmb3IgbWFuYWdpbmcgZW1haWwgbWVzc2FnZXMsIGluY2x1ZGluZwotTUlNRSBhbmQgb3RoZXIgOnJmYzpgMjgyMmBcIC1iYXNlZCBtZXNzYWdlIGRvY3VtZW50cy4gIEl0IGlzIHNwZWNpZmljYWxseSAqbm90KgotZGVzaWduZWQgdG8gZG8gYW55IHNlbmRpbmcgb2YgZW1haWwgbWVzc2FnZXMgdG8gU01UUCAoOnJmYzpgMjgyMWApLCBOTlRQLCBvcgotb3RoZXIgc2VydmVyczsgdGhvc2UgYXJlIGZ1bmN0aW9ucyBvZiBtb2R1bGVzIHN1Y2ggYXMgOm1vZDpgc210cGxpYmAgYW5kCi06bW9kOmBubnRwbGliYC4gVGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGF0dGVtcHRzIHRvIGJlIGFzIFJGQy1jb21wbGlhbnQgYXMKLXBvc3NpYmxlLCBzdXBwb3J0aW5nIGluIGFkZGl0aW9uIHRvIDpyZmM6YDI4MjJgLCBzdWNoIE1JTUUtcmVsYXRlZCBSRkNzIGFzCi06cmZjOmAyMDQ1YCwgOnJmYzpgMjA0NmAsIDpyZmM6YDIwNDdgLCBhbmQgOnJmYzpgMjIzMWAuCitUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgYSBsaWJyYXJ5IGZvciBtYW5hZ2luZyBlbWFpbCBtZXNzYWdlcy4gIEl0IGlzCitzcGVjaWZpY2FsbHkgKm5vdCogZGVzaWduZWQgdG8gZG8gYW55IHNlbmRpbmcgb2YgZW1haWwgbWVzc2FnZXMgdG8gU01UUAorKDpyZmM6YDI4MjFgKSwgTk5UUCwgb3Igb3RoZXIgc2VydmVyczsgdGhvc2UgYXJlIGZ1bmN0aW9ucyBvZiBtb2R1bGVzIHN1Y2ggYXMKKzptb2Q6YHNtdHBsaWJgIGFuZCA6bW9kOmBubnRwbGliYC4gIFRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBhdHRlbXB0cyB0byBiZSBhcworUkZDLWNvbXBsaWFudCBhcyBwb3NzaWJsZSwgc3VwcG9ydGluZyA6cmZjOmA1MjMzYCBhbmQgOnJmYzpgNjUzMmAsIGFzIHdlbGwgYXMKK3N1Y2ggTUlNRS1yZWxhdGVkIFJGQ3MgYXMgOnJmYzpgMjA0NWAsIDpyZmM6YDIwNDZgLCA6cmZjOmAyMDQ3YCwgOnJmYzpgMjE4M2AsCithbmQgOnJmYzpgMjIzMWAuCiAKLVRoZSBwcmltYXJ5IGRpc3Rpbmd1aXNoaW5nIGZlYXR1cmUgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGlzIHRoYXQgaXQgc3BsaXRzCi10aGUgcGFyc2luZyBhbmQgZ2VuZXJhdGluZyBvZiBlbWFpbCBtZXNzYWdlcyBmcm9tIHRoZSBpbnRlcm5hbCAqb2JqZWN0IG1vZGVsKgotcmVwcmVzZW50YXRpb24gb2YgZW1haWwuICBBcHBsaWNhdGlvbnMgdXNpbmcgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGRlYWwKLXByaW1hcmlseSB3aXRoIG9iamVjdHM7IHlvdSBjYW4gYWRkIHN1Yi1vYmplY3RzIHRvIG1lc3NhZ2VzLCByZW1vdmUgc3ViLW9iamVjdHMKLWZyb20gbWVzc2FnZXMsIGNvbXBsZXRlbHkgcmUtYXJyYW5nZSB0aGUgY29udGVudHMsIGV0Yy4gIFRoZXJlIGlzIGEgc2VwYXJhdGUKLXBhcnNlciBhbmQgYSBzZXBhcmF0ZSBnZW5lcmF0b3Igd2hpY2ggaGFuZGxlcyB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmbGF0IHRleHQKLXRvIHRoZSBvYmplY3QgbW9kZWwsIGFuZCB0aGVuIGJhY2sgdG8gZmxhdCB0ZXh0IGFnYWluLiAgVGhlcmUgYXJlIGFsc28gaGFuZHkKLXN1YmNsYXNzZXMgZm9yIHNvbWUgY29tbW9uIE1JTUUgb2JqZWN0IHR5cGVzLCBhbmQgYSBmZXcgbWlzY2VsbGFuZW91cyB1dGlsaXRpZXMKLXRoYXQgaGVscCB3aXRoIHN1Y2ggY29tbW9uIHRhc2tzIGFzIGV4dHJhY3RpbmcgYW5kIHBhcnNpbmcgbWVzc2FnZSBmaWVsZCB2YWx1ZXMsCi1jcmVhdGluZyBSRkMtY29tcGxpYW50IGRhdGVzLCBldGMuCitUaGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIGVtYWlsIHBhY2thZ2UgY2FuIGJlIGRpdmlkZWQgaW50byB0aHJlZSBtYWpvcgorY29tcG9uZW50cywgcGx1cyBhIGZvdXJ0aCBjb21wb25lbnQgdGhhdCBjb250cm9scyB0aGUgYmVoYXZpb3Igb2YgdGhlIG90aGVyCitjb21wb25lbnRzLgorCitUaGUgY2VudHJhbCBjb21wb25lbnQgb2YgdGhlIHBhY2thZ2UgaXMgYW4gIm9iamVjdCBtb2RlbCIgdGhhdCByZXByZXNlbnRzIGVtYWlsCittZXNzYWdlcy4gIEFuIGFwcGxpY2F0aW9uIGludGVyYWN0cyB3aXRoIHRoZSBwYWNrYWdlIHByaW1hcmlseSB0aHJvdWdoIHRoZQorb2JqZWN0IG1vZGVsIGludGVyZmFjZSBkZWZpbmVkIGluIHRoZSA6bW9kOmB+ZW1haWwubWVzc2FnZWAgc3ViLW1vZHVsZS4gIFRoZQorYXBwbGljYXRpb24gY2FuIHVzZSB0aGlzIEFQSSB0byBhc2sgcXVlc3Rpb25zIGFib3V0IGFuIGV4aXN0aW5nIGVtYWlsLCB0bworY29uc3RydWN0IGEgbmV3IGVtYWlsLCBvciB0byBhZGQgb3IgcmVtb3ZlIGVtYWlsIHN1YmNvbXBvbmVudHMgdGhhdCB0aGVtc2VsdmVzCit1c2UgdGhlIHNhbWUgb2JqZWN0IG1vZGVsIGludGVyZmFjZS4gIFRoYXQgaXMsIGZvbGxvd2luZyB0aGUgbmF0dXJlIG9mIGVtYWlsCittZXNzYWdlcyBhbmQgdGhlaXIgTUlNRSBzdWJjb21wb25lbnRzLCB0aGUgZW1haWwgb2JqZWN0IG1vZGVsIGlzIGEgdHJlZQorc3RydWN0dXJlIG9mIG9iamVjdHMgdGhhdCBhbGwgcHJvdmlkZSB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCitBUEkuCisKK1RoZSBvdGhlciB0d28gbWFqb3IgY29tcG9uZW50cyBvZiB0aGUgcGFja2FnZSBhcmUgdGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIGFuZAordGhlIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLiAgVGhlIHBhcnNlciB0YWtlcyB0aGUgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIGFuCitlbWFpbCBtZXNzYWdlIChhIHN0cmVhbSBvZiBieXRlcykgYW5kIGNvbnZlcnRzIGl0IGludG8gYSB0cmVlIG9mCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgb2JqZWN0cy4gIFRoZSBnZW5lcmF0b3IgdGFrZXMgYW4KKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBhbmQgdHVybnMgaXQgYmFjayBpbnRvIGEgc2VyaWFsaXplZCBieXRlCitzdHJlYW0uICAoVGhlIHBhcnNlciBhbmQgZ2VuZXJhdG9yIGFsc28gaGFuZGxlIHN0cmVhbXMgb2YgdGV4dCBjaGFyYWN0ZXJzLCBidXQKK3RoaXMgdXNhZ2UgaXMgZGlzY291cmFnZWQgYXMgaXQgaXMgdG9vIGVhc3kgdG8gZW5kIHVwIHdpdGggbWVzc2FnZXMgdGhhdCBhcmUKK25vdCB2YWxpZCBpbiBvbmUgd2F5IG9yIGFub3RoZXIuKQorCitUaGUgY29udHJvbCBjb21wb25lbnQgaXMgdGhlIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG1vZHVsZS4gIEV2ZXJ5Cis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAsIGV2ZXJ5IDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLCBhbmQgZXZlcnkKKzptb2Q6YH5lbWFpbC5wYXJzZXJgIGhhcyBhbiBhc3NvY2lhdGVkIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0Citjb250cm9scyBpdHMgYmVoYXZpb3IuICBVc3VhbGx5IGFuIGFwcGxpY2F0aW9uIG9ubHkgbmVlZHMgdG8gc3BlY2lmeSB0aGUgcG9saWN5Cit3aGVuIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBpcyBjcmVhdGVkLCBlaXRoZXIgYnkgZGlyZWN0bHkKK2luc3RhbnRpYXRpbmcgYW4gOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgICB0byBjcmVhdGUgYSBuZXcgZW1haWwsCitvciBieSBwYXJzaW5nIGFuIGlucHV0IHN0cmVhbSB1c2luZyBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLiAgQnV0IHRoZSBwb2xpY3kgY2FuCitiZSBjaGFuZ2VkIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCB1c2luZyBhIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgLgorVGhpcyBhbGxvd3MsIGZvciBleGFtcGxlLCBhIGdlbmVyaWMgZW1haWwgbWVzc2FnZSB0byBiZSBwYXJzZWQgZnJvbSBkaXNrLCBidXQKK3RvIHNlcmlhbGl6ZSBpdCB1c2luZyBzdGFuZGFyZCBTTVRQIHNldHRpbmdzIHdoZW4gc2VuZGluZyBpdCB0byBhbiBlbWFpbAorc2VydmVyLgorCitUaGUgZW1haWwgcGFja2FnZSBkb2VzIGl0cyBiZXN0IHRvIGhpZGUgdGhlIGRldGFpbHMgb2YgdGhlIHZhcmlvdXMgZ292ZXJuaW5nCitSRkNzIGZyb20gdGhlIGFwcGxpY2F0aW9uLiAgQ29uY2VwdHVhbGx5IHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgYmUgYWJsZSB0bwordHJlYXQgdGhlIGVtYWlsIG1lc3NhZ2UgYXMgYSBzdHJ1Y3R1cmVkIHRyZWUgb2YgdW5pY29kZSB0ZXh0IGFuZCBiaW5hcnkKK2F0dGFjaG1lbnRzLCB3aXRob3V0IGhhdmluZyB0byB3b3JyeSBhYm91dCBob3cgdGhlc2UgYXJlIHJlcHJlc2VudGVkIHdoZW4KK3NlcmlhbGl6ZWQuICBJbiBwcmFjdGljZSwgaG93ZXZlciwgaXQgaXMgb2Z0ZW4gbmVjZXNzYXJ5IHRvIGJlIGF3YXJlIG9mIGF0CitsZWFzdCBzb21lIG9mIHRoZSBydWxlcyBnb3Zlcm5pbmcgTUlNRSBtZXNzYWdlcyBhbmQgdGhlaXIgc3RydWN0dXJlLAorc3BlY2lmaWNhbGx5IHRoZSBuYW1lcyBhbmQgbmF0dXJlIG9mIHRoZSBNSU1FICJjb250ZW50IHR5cGVzIiBhbmQgaG93IHRoZXkKK2lkZW50aWZ5IG11bHRpcGFydCBkb2N1bWVudHMuICBGb3IgdGhlIG1vc3QgcGFydCB0aGlzIGtub3dsZWRnZSBzaG91bGQgb25seSBiZQorcmVxdWlyZWQgZm9yIG1vcmUgY29tcGxleCBhcHBsaWNhdGlvbnMsIGFuZCBldmVuIHRoZW4gaXQgc2hvdWxkIG9ubHkgYmUgdGhlCitoaWdoIGxldmVsIHN0cnVjdHVyZSBpbiBxdWVzdGlvbiwgYW5kIG5vdCB0aGUgZGV0YWlscyBvZiBob3cgdGhvc2Ugc3RydWN0dXJlcworYXJlIHJlcHJlc2VudGVkLiAgU2luY2UgTUlNRSBjb250ZW50IHR5cGVzIGFyZSB1c2VkIHdpZGVseSBpbiBtb2Rlcm4gaW50ZXJuZXQKK3NvZnR3YXJlIChub3QganVzdCBlbWFpbCksIHRoaXMgd2lsbCBiZSBhIGZhbWlsaWFyIGNvbmNlcHQgdG8gbWFueSBwcm9ncmFtbWVycy4KIAogVGhlIGZvbGxvd2luZyBzZWN0aW9ucyBkZXNjcmliZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UuCi1UaGUgb3JkZXJpbmcgZm9sbG93cyBhIHByb2dyZXNzaW9uIHRoYXQgc2hvdWxkIGJlIGNvbW1vbiBpbiBhcHBsaWNhdGlvbnM6IGFuCi1lbWFpbCBtZXNzYWdlIGlzIHJlYWQgYXMgZmxhdCB0ZXh0IGZyb20gYSBmaWxlIG9yIG90aGVyIHNvdXJjZSwgdGhlIHRleHQgaXMKLXBhcnNlZCB0byBwcm9kdWNlIHRoZSBvYmplY3Qgc3RydWN0dXJlIG9mIHRoZSBlbWFpbCBtZXNzYWdlLCB0aGlzIHN0cnVjdHVyZSBpcwotbWFuaXB1bGF0ZWQsIGFuZCBmaW5hbGx5LCB0aGUgb2JqZWN0IHRyZWUgaXMgcmVuZGVyZWQgYmFjayBpbnRvIGZsYXQgdGV4dC4KK1dlIHN0YXJ0IHdpdGggdGhlIDptb2Q6YH5lbWFpbC5tZXNzYWdlYCBvYmplY3QgbW9kZWwsIHdoaWNoIGlzIHRoZSBwcmltYXJ5CitpbnRlcmZhY2UgYW4gYXBwbGljYXRpb24gd2lsbCB1c2UsIGFuZCBmb2xsb3cgdGhhdCB3aXRoIHRoZQorOm1vZDpgfmVtYWlsLnBhcnNlcmAgYW5kIDptb2Q6YH5lbWFpbC5nZW5lcmF0b3JgIGNvbXBvbmVudHMuICBUaGVuIHdlIGNvdmVyIHRoZQorOm1vZDpgfmVtYWlsLnBvbGljeWAgY29udHJvbHMsIHdoaWNoIGNvbXBsZXRlcyB0aGUgdHJlYXRtZW50IG9mIHRoZSBtYWluCitjb21wb25lbnRzIG9mIHRoZSBsaWJyYXJ5LgogCi1JdCBpcyBwZXJmZWN0bHkgZmVhc2libGUgdG8gY3JlYXRlIHRoZSBvYmplY3Qgc3RydWN0dXJlIG91dCBvZiB3aG9sZSBjbG90aCAtLS0KLWkuZS4gY29tcGxldGVseSBmcm9tIHNjcmF0Y2guICBGcm9tIHRoZXJlLCBhIHNpbWlsYXIgcHJvZ3Jlc3Npb24gY2FuIGJlIHRha2VuIGFzCi1hYm92ZS4KK1RoZSBuZXh0IHRocmVlIHNlY3Rpb25zIGNvdmVyIHRoZSBleGNlcHRpb25zIHRoZSBwYWNrYWdlIG1heSByYWlzZSBhbmQgdGhlCitkZWZlY3RzIChub24tY29tcGxpYW5jZSB3aXRoIHRoZSBSRkNzKSB0aGF0IHRoZSA6bW9kOmB+ZW1haWwucGFyc2VyYCBtYXkKK2RldGVjdC4gIFRoZW4gd2UgY292ZXIgdGhlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWAgYW5kIHRoZQorOm1vZDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyYCBzdWItY29tcG9uZW50cywgd2hpY2ggcHJvdmlkZSB0b29scyBmb3IgZG9pbmcgbW9yZQorZGV0YWlsZWQgbWFuaXB1bGF0aW9uIG9mIGhlYWRlcnMgYW5kIHBheWxvYWRzLCByZXNwZWN0aXZlbHkuICBCb3RoIG9mIHRoZXNlCitjb21wb25lbnRzIGNvbnRhaW4gZmVhdHVyZXMgcmVsZXZhbnQgdG8gY29uc3VtaW5nIGFuZCBwcm9kdWNpbmcgbm9uLXRyaXZpYWwKK21lc3NhZ2VzLCBidXQgYWxzbyBkb2N1bWVudCB0aGVpciBleHRlbnNpYmlsaXR5IEFQSXMsIHdoaWNoIHdpbGwgYmUgb2YgaW50ZXJlc3QKK3RvIGFkdmFuY2VkIGFwcGxpY2F0aW9ucy4KIAotQWxzbyBpbmNsdWRlZCBhcmUgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbnMgb2YgYWxsIHRoZSBjbGFzc2VzIGFuZCBtb2R1bGVzIHRoYXQKLXRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBwcm92aWRlcywgdGhlIGV4Y2VwdGlvbiBjbGFzc2VzIHlvdSBtaWdodCBlbmNvdW50ZXIKLXdoaWxlIHVzaW5nIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSwgc29tZSBhdXhpbGlhcnkgdXRpbGl0aWVzLCBhbmQgYSBmZXcKLWV4YW1wbGVzLiAgRm9yIHVzZXJzIG9mIHRoZSBvbGRlciA6bW9kOmBtaW1lbGliYCBwYWNrYWdlLCBvciBwcmV2aW91cyB2ZXJzaW9ucwotb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlLCBhIHNlY3Rpb24gb24gZGlmZmVyZW5jZXMgYW5kIHBvcnRpbmcgaXMgcHJvdmlkZWQuCitGb2xsb3dpbmcgdGhvc2UgaXMgYSBzZXQgb2YgZXhhbXBsZXMgb2YgdXNpbmcgdGhlIGZ1bmRhbWVudGFsIHBhcnRzIG9mIHRoZSBBUElzCitjb3ZlcmVkIGluIHRoZSBwcmVjZWRpbmcgc2VjdGlvbnMuCisKK1RoZSBmb3Jnb2luZyByZXByZXNlbnQgdGhlIG1vZGVybiAodW5pY29kZSBmcmllbmRseSkgQVBJIG9mIHRoZSBlbWFpbCBwYWNrYWdlLgorVGhlIHJlbWFpbmluZyBzZWN0aW9ucywgc3RhcnRpbmcgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYAorY2xhc3MsIGNvdmVyIHRoZSBsZWdhY3kgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIEFQSSB0aGF0IGRlYWxzIG11Y2ggbW9yZQorZGlyZWN0bHkgd2l0aCB0aGUgZGV0YWlscyBvZiBob3cgZW1haWwgbWVzc2FnZXMgYXJlIHJlcHJlc2VudGVkLiAgVGhlCis6ZGF0YTpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJIGRvZXMgKm5vdCogaGlkZSB0aGUgZGV0YWlscyBvZiB0aGUgUkZDcyBmcm9tCit0aGUgYXBwbGljYXRpb24sIGJ1dCBmb3IgYXBwbGljYXRpb25zIHRoYXQgbmVlZCB0byBvcGVyYXRlIGF0IHRoYXQgbGV2ZWwsIHRoZXkKK2NhbiBiZSB1c2VmdWwgdG9vbHMuICBUaGlzIGRvY3VtZW50YXRpb24gaXMgYWxzbyByZWxldmFudCBmb3IgYXBwbGljYXRpb25zIHRoYXQKK2FyZSBzdGlsbCB1c2luZyB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeS5jb21wYXQzMmAgQVBJIGZvciBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSByZWFzb25zLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgRG9jcyByZW9yZ2FuaXplZCBhbmQgcmV3cml0dGVuIHRvIHByb21vdGUgdGhlIG5ldworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLzpjbGFzczpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAKKyAgIEFQSS4KIAogQ29udGVudHMgb2YgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIGRvY3VtZW50YXRpb246CiAKQEAgLTU2LDMzNSArMTEwLDQzIEBACiAgICBlbWFpbC5wYXJzZXIucnN0CiAgICBlbWFpbC5nZW5lcmF0b3IucnN0CiAgICBlbWFpbC5wb2xpY3kucnN0CisKKyAgIGVtYWlsLmVycm9ycy5yc3QKICAgIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdAogICAgZW1haWwuY29udGVudG1hbmFnZXIucnN0CisKKyAgIGVtYWlsLmV4YW1wbGVzLnJzdAorCitMZWdhY3kgQVBJOgorCisuLiB0b2N0cmVlOjoKKworICAgZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QKICAgIGVtYWlsLm1pbWUucnN0CiAgICBlbWFpbC5oZWFkZXIucnN0CiAgICBlbWFpbC5jaGFyc2V0LnJzdAogICAgZW1haWwuZW5jb2RlcnMucnN0Ci0gICBlbWFpbC5lcnJvcnMucnN0CiAgICBlbWFpbC51dGlsLnJzdAogICAgZW1haWwuaXRlcmF0b3JzLnJzdAotICAgZW1haWwtZXhhbXBsZXMucnN0CiAKIAogLi4gc2VlYWxzbzo6CiAKICAgIE1vZHVsZSA6bW9kOmBzbXRwbGliYAotICAgICAgU01UUCBwcm90b2NvbCBjbGllbnQKKyAgICAgIFNNVFAgKFNpbXBsZSBNYWlsIFRyYW5zcG9ydCBQcm90Y29sKSBjbGllbnQKKworICAgTW9kdWxlIDptb2Q6YHBvcGxpYmAKKyAgICAgIFBPUCAoUG9zdCBPZmZpY2UgUHJvdG9jb2wpIGNsaWVudAorCisgICBNb2R1bGUgOm1vZDpgaW1hcGxpYmAKKyAgICAgIElNQVAgKEludGVybmV0IE1lc3NhZ2UgQWNjZXNzIFByb3RvY29sKSBjbGllbnQKIAogICAgTW9kdWxlIDptb2Q6YG5udHBsaWJgCi0gICAgICBOTlRQIHByb3RvY29sIGNsaWVudAorICAgICAgTk5UUCAoTmV0IE5ld3MgVHJhbnNwb3J0IFByb3RvY29sKSBjbGllbnQKIAorICAgTW9kdWxlIDptb2Q6YG1haWxib3hgCisgICAgICBUb29scyBmb3IgY3JlYXRpbmcsIHJlYWRpbmcsIGFuZCBtYW5hZ2luZyBjb2xsZWN0aW9ucyBvZiBtZXNzYWdlcyBvbiBkaXNrCisgICAgICB1c2luZyBhIHZhcmlldHkgc3RhbmRhcmQgZm9ybWF0cy4KIAotLi4gX2VtYWlsLXBrZy1oaXN0b3J5OgotCi1QYWNrYWdlIEhpc3RvcnkKLS0tLS0tLS0tLS0tLS0tLQotCi1UaGlzIHRhYmxlIGRlc2NyaWJlcyB0aGUgcmVsZWFzZSBoaXN0b3J5IG9mIHRoZSBlbWFpbCBwYWNrYWdlLCBjb3JyZXNwb25kaW5nIHRvCi10aGUgdmVyc2lvbiBvZiBQeXRob24gdGhhdCB0aGUgcGFja2FnZSB3YXMgcmVsZWFzZWQgd2l0aC4gIEZvciBwdXJwb3NlcyBvZiB0aGlzCi1kb2N1bWVudCwgd2hlbiB5b3Ugc2VlIGEgbm90ZSBhYm91dCBjaGFuZ2Ugb3IgYWRkZWQgdmVyc2lvbnMsIHRoZXNlIHJlZmVyIHRvIHRoZQotUHl0aG9uIHZlcnNpb24gdGhlIGNoYW5nZSB3YXMgbWFkZSBpbiwgKm5vdCogdGhlIGVtYWlsIHBhY2thZ2UgdmVyc2lvbi4gIFRoaXMKLXRhYmxlIGFsc28gZGVzY3JpYmVzIHRoZSBQeXRob24gY29tcGF0aWJpbGl0eSBvZiBlYWNoIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UuCi0KLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBlbWFpbCB2ZXJzaW9uIHwgZGlzdHJpYnV0ZWQgd2l0aCAgICAgICAgICAgICB8IGNvbXBhdGlibGUgd2l0aCAgICAgICB8Ci0rPT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLXwgOmNvbnN0OmAxLnhgICB8IFB5dGhvbiAyLjIuMCB0byBQeXRob24gMi4yLjEgfCAqbm8gbG9uZ2VyIHN1cHBvcnRlZCogfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgMi41YCAgfCBQeXRob24gMi4yLjIrIGFuZCBQeXRob24gMi4zIHwgUHl0aG9uIDIuMSB0byAyLjUgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDMuMGAgIHwgUHl0aG9uIDIuNCBhbmQgUHl0aG9uIDIuNSAgICB8IFB5dGhvbiAyLjMgdG8gMi42ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgOmNvbnN0OmA0LjBgICB8IFB5dGhvbiAyLjUgdG8gUHl0aG9uIDIuNyAgICAgfCBQeXRob24gMi4zIHRvIDIuNyAgICAgfAotKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IDpjb25zdDpgNS4wYCAgfCBQeXRob24gMy4wIGFuZCBQeXRob24gMy4xICAgIHwgUHl0aG9uIDMuMCB0byAzLjIgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCA6Y29uc3Q6YDUuMWAgIHwgUHl0aG9uIDMuMiAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiAzLjIgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotQWZ0ZXIgVmVyc2lvbiA1LjEgKFB5dGhvbiAzLjIpLCB0aGUgZW1haWwgcGFja2FnZSBubyBsb25nZXIgaGFzIGEgdmVyc2lvbiB0aGF0Ci1pcyBzZXBhcmF0ZSBmcm9tIHRoZSBQeXRob24gdmVyc2lvbi4gIChTZWUgdGhlIDpyZWY6YHdoYXRzbmV3LWluZGV4YCBkb2N1bWVudHMKLWZvciB0aGUgcmVzcGVjdGl2ZSBQeXRob24gdmVyc2lvbnMgZm9yIGRldGFpbHMgb24gY2hhbmdlcy4pCi0KLUhlcmUgYXJlIHRoZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDUuMSBhbmQKLXZlcnNpb24gNS4wOgotCi0qIEl0IGlzIG9uY2UgYWdhaW4gcG9zc2libGUgdG8gcGFyc2UgbWVzc2FnZXMgY29udGFpbmluZyBub24tQVNDSUkgYnl0ZXMsCi0gIGFuZCB0byByZXByb2R1Y2Ugc3VjaCBtZXNzYWdlcyBpZiB0aGUgZGF0YSBjb250YWluaW5nIHRoZSBub24tQVNDSUkKLSAgYnl0ZXMgaXMgbm90IG1vZGlmaWVkLgotCi0qIE5ldyBmdW5jdGlvbnMgOmZ1bmM6YG1lc3NhZ2VfZnJvbV9ieXRlc2AgYW5kIDpmdW5jOmBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGVgLAotICBhbmQgbmV3IGNsYXNzZXMgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzRmVlZFBhcnNlcmAgYW5kCi0gIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgYWxsb3cgYmluYXJ5IG1lc3NhZ2UgZGF0YSB0byBiZSBwYXJzZWQKLSAgaW50byBtb2RlbCBvYmplY3RzLgotCi0qIEdpdmVuIGJ5dGVzIGlucHV0IHRvIHRoZSBtb2RlbCwgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgCi0gIHdpbGwgYnkgZGVmYXVsdCBkZWNvZGUgYSBtZXNzYWdlIGJvZHkgdGhhdCBoYXMgYQotICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgYGA4Yml0YGAgdXNpbmcgdGhlIGNoYXJzZXQKLSAgc3BlY2lmaWVkIGluIHRoZSBNSU1FIGhlYWRlcnMgYW5kIHJldHVybiB0aGUgcmVzdWx0aW5nIHN0cmluZy4KLQotKiBHaXZlbiBieXRlcyBpbnB1dCB0byB0aGUgbW9kZWwsIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIHdpbGwKLSAgY29udmVydCBtZXNzYWdlIGJvZGllcyB0aGF0IGhhdmUgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YKLSAgOGJpdCB0byBpbnN0ZWFkIGhhdmUgYSA3Yml0IENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuCi0KLSogTmV3IGNsYXNzIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgcHJvZHVjZXMgYnl0ZXMKLSAgYXMgb3V0cHV0LCBwcmVzZXJ2aW5nIGFueSB1bmNoYW5nZWQgbm9uLUFTQ0lJIGRhdGEgdGhhdCB3YXMKLSAgcHJlc2VudCBpbiB0aGUgaW5wdXQgdXNlZCB0byBidWlsZCB0aGUgbW9kZWwsIGluY2x1ZGluZyBtZXNzYWdlIGJvZGllcwotICB3aXRoIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQuCi0KLUhlcmUgYXJlIHRoZSBtYWpvciBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDUuMCBhbmQgdmVyc2lvbiA0OgotCi0qIEFsbCBvcGVyYXRpb25zIGFyZSBvbiB1bmljb2RlIHN0cmluZ3MuICBUZXh0IGlucHV0cyBtdXN0IGJlIHN0cmluZ3MsCi0gIHRleHQgb3V0cHV0cyBhcmUgc3RyaW5ncy4gIE91dHB1dHMgYXJlIGxpbWl0ZWQgdG8gdGhlIEFTQ0lJIGNoYXJhY3RlcgotICBzZXQgYW5kIHNvIGNhbiBiZSBlbmNvZGVkIHRvIEFTQ0lJIGZvciB0cmFuc21pc3Npb24uICBJbnB1dHMgYXJlIGFsc28KLSAgbGltaXRlZCB0byBBU0NJSTsgdGhpcyBpcyBhbiBhY2tub3dsZWRnZWQgbGltaXRhdGlvbiBvZiBlbWFpbCA1LjAgYW5kCi0gIG1lYW5zIGl0IGNhbiBvbmx5IGJlIHVzZWQgdG8gcGFyc2UgZW1haWwgdGhhdCBpcyA3Yml0IGNsZWFuLgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiA0IGFuZCB2ZXJzaW9uIDM6Ci0KLSogQWxsIG1vZHVsZXMgaGF2ZSBiZWVuIHJlbmFtZWQgYWNjb3JkaW5nIHRvIDpwZXA6YDhgIHN0YW5kYXJkcy4gIEZvciBleGFtcGxlLAotICB0aGUgdmVyc2lvbiAzIG1vZHVsZSA6bW9kOmBlbWFpbC5NZXNzYWdlYCB3YXMgcmVuYW1lZCB0byA6bW9kOmBlbWFpbC5tZXNzYWdlYCBpbgotICB2ZXJzaW9uIDQuCi0KLSogQSBuZXcgc3VicGFja2FnZSA6bW9kOmBlbWFpbC5taW1lYCB3YXMgYWRkZWQgYW5kIGFsbCB0aGUgdmVyc2lvbiAzCi0gIDptb2Q6YGVtYWlsLk1JTUVcKmAgbW9kdWxlcyB3ZXJlIHJlbmFtZWQgYW5kIHNpdHVhdGVkIGludG8gdGhlIDptb2Q6YGVtYWlsLm1pbWVgCi0gIHN1YnBhY2thZ2UuICBGb3IgZXhhbXBsZSwgdGhlIHZlcnNpb24gMyBtb2R1bGUgOm1vZDpgZW1haWwuTUlNRVRleHRgIHdhcyByZW5hbWVkCi0gIHRvIDptb2Q6YGVtYWlsLm1pbWUudGV4dGAuCi0KLSAgKk5vdGUgdGhhdCB0aGUgdmVyc2lvbiAzIG5hbWVzIHdpbGwgY29udGludWUgdG8gd29yayB1bnRpbCBQeXRob24gMi42Ki4KLQotKiBUaGUgOm1vZDpgZW1haWwubWltZS5hcHBsaWNhdGlvbmAgbW9kdWxlIHdhcyBhZGRlZCwgd2hpY2ggY29udGFpbnMgdGhlCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUuYXBwbGljYXRpb24uTUlNRUFwcGxpY2F0aW9uYCBjbGFzcy4KLQotKiBNZXRob2RzIHRoYXQgd2VyZSBkZXByZWNhdGVkIGluIHZlcnNpb24gMyBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXNlIGluY2x1ZGUKLSAgOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AsIDptZXRoOmBNZXNzYWdlLmdldF90eXBlYCwKLSAgOm1ldGg6YE1lc3NhZ2UuZ2V0X21haW5fdHlwZWAsIDptZXRoOmBNZXNzYWdlLmdldF9zdWJ0eXBlYC4KLQotKiBGaXhlcyBoYXZlIGJlZW4gYWRkZWQgZm9yIDpyZmM6YDIyMzFgIHN1cHBvcnQgd2hpY2ggY2FuIGNoYW5nZSBzb21lIG9mIHRoZQotICByZXR1cm4gdHlwZXMgZm9yIDpmdW5jOmBNZXNzYWdlLmdldF9wYXJhbSA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbT5gCi0gIGFuZCBmcmllbmRzLiAgVW5kZXIgc29tZQotICBjaXJjdW1zdGFuY2VzLCB2YWx1ZXMgd2hpY2ggdXNlZCB0byByZXR1cm4gYSAzLXR1cGxlIG5vdyByZXR1cm4gc2ltcGxlIHN0cmluZ3MKLSAgKHNwZWNpZmljYWxseSwgaWYgYWxsIGV4dGVuZGVkIHBhcmFtZXRlciBzZWdtZW50cyB3ZXJlIHVuZW5jb2RlZCwgdGhlcmUgaXMgbm8KLSAgbGFuZ3VhZ2UgYW5kIGNoYXJzZXQgZGVzaWduYXRpb24gZXhwZWN0ZWQsIHNvIHRoZSByZXR1cm4gdHlwZSBpcyBub3cgYSBzaW1wbGUKLSAgc3RyaW5nKS4gIEFsc28sICUtZGVjb2RpbmcgdXNlZCB0byBiZSBkb25lIGZvciBib3RoIGVuY29kZWQgYW5kIHVuZW5jb2RlZAotICBzZWdtZW50czsgdGhpcyBkZWNvZGluZyBpcyBub3cgZG9uZSBvbmx5IGZvciBlbmNvZGVkIHNlZ21lbnRzLgotCi1IZXJlIGFyZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiA6bW9kOmBlbWFpbGAgdmVyc2lvbiAzIGFuZCB2ZXJzaW9uIDI6Ci0KLSogVGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYCBjbGFzcyB3YXMgaW50cm9kdWNlZCwgYW5kIHRoZQotICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyB3YXMgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgdGhlCi0gIDpjbGFzczpgfmVtYWlsLnBhcnNlci5GZWVkUGFyc2VyYC4gIEFsbCBwYXJzaW5nIHRoZXJlZm9yZSBpcwotICBub24tc3RyaWN0LCBhbmQgcGFyc2luZyB3aWxsIG1ha2UgYSBiZXN0IGVmZm9ydCBuZXZlciB0byByYWlzZSBhbiBleGNlcHRpb24uCi0gIFByb2JsZW1zIGZvdW5kIHdoaWxlIHBhcnNpbmcgbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWVzc2FnZSdzICpkZWZlY3QqCi0gIGF0dHJpYnV0ZS4KLQotKiBBbGwgYXNwZWN0cyBvZiB0aGUgQVBJIHdoaWNoIHJhaXNlZCA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgXCBzIGluIHZlcnNpb24gMgotICBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXNlIGluY2x1ZGUgdGhlICpfZW5jb2RlciogYXJndW1lbnQgdG8gdGhlCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUudGV4dC5NSU1FVGV4dGAgY29uc3RydWN0b3IsIHRoZQotICA6bWV0aDpgTWVzc2FnZS5hZGRfcGF5bG9hZGAgbWV0aG9kLCB0aGUgOmZ1bmM6YFV0aWxzLmR1bXBfYWRkcmVzc19wYWlyYAotICBmdW5jdGlvbiwgYW5kIHRoZSBmdW5jdGlvbnMgOmZ1bmM6YFV0aWxzLmRlY29kZWAgYW5kIDpmdW5jOmBVdGlscy5lbmNvZGVgLgotCi0qIE5ldyA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgXCBzIGhhdmUgYmVlbiBhZGRlZCB0bzoKLSAgOm1ldGg6YEdlbmVyYXRvci5fX2NhbGxfX2AsIDptZXRoOmBNZXNzYWdlLmdldF90eXBlYCwKLSAgOm1ldGg6YE1lc3NhZ2UuZ2V0X21haW5fdHlwZWAsIDptZXRoOmBNZXNzYWdlLmdldF9zdWJ0eXBlYCwgYW5kIHRoZSAqc3RyaWN0KgotICBhcmd1bWVudCB0byB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MuICBUaGVzZSBhcmUgZXhwZWN0ZWQgdG8KLSAgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuCi0KLSogU3VwcG9ydCBmb3IgUHl0aG9ucyBlYXJsaWVyIHRoYW4gMi4zIGhhcyBiZWVuIHJlbW92ZWQuCi0KLUhlcmUgYXJlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIgYW5kIHZlcnNpb24gMToKLQotKiBUaGUgOm1vZDpgZW1haWwuSGVhZGVyYCBhbmQgOm1vZDpgZW1haWwuQ2hhcnNldGAgbW9kdWxlcyBoYXZlIGJlZW4gYWRkZWQuCi0KLSogVGhlIHBpY2tsZSBmb3JtYXQgZm9yIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzIGhhcyBjaGFuZ2VkLgotICBTaW5jZSB0aGlzIHdhcyBuZXZlciAoYW5kIHN0aWxsIGlzbid0KSBmb3JtYWxseSBkZWZpbmVkLCB0aGlzIGlzbid0Ci0gIGNvbnNpZGVyZWQgYSBiYWNrd2FyZCBpbmNvbXBhdGliaWxpdHkuICBIb3dldmVyIGlmIHlvdXIgYXBwbGljYXRpb24gcGlja2xlcwotICBhbmQgdW5waWNrbGVzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzLCBiZSBhd2FyZSB0aGF0IGluCi0gIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDIsIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2VzIG5vdyBoYXZlCi0gIHByaXZhdGUgdmFyaWFibGVzICpfY2hhcnNldCogYW5kICpfZGVmYXVsdF90eXBlKi4KLQotKiBTZXZlcmFsIG1ldGhvZHMgaW4gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MgaGF2ZSBiZWVuCi0gIGRlcHJlY2F0ZWQsIG9yIHRoZWlyIHNpZ25hdHVyZXMgY2hhbmdlZC4gIEFsc28sIG1hbnkgbmV3IG1ldGhvZHMgaGF2ZSBiZWVuCi0gIGFkZGVkLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcwotICBmb3IgZGV0YWlscy4gIFRoZSBjaGFuZ2VzIHNob3VsZCBiZSBjb21wbGV0ZWx5IGJhY2t3YXJkIGNvbXBhdGlibGUuCi0KLSogVGhlIG9iamVjdCBzdHJ1Y3R1cmUgaGFzIGNoYW5nZWQgaW4gdGhlIGZhY2Ugb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAKLSAgY29udGVudCB0eXBlcy4gIEluIDptb2Q6YGVtYWlsYCB2ZXJzaW9uIDEsIHN1Y2ggYSB0eXBlIHdvdWxkIGJlIHJlcHJlc2VudGVkCi0gIGJ5IGEgc2NhbGFyIHBheWxvYWQsIGkuZS4gdGhlIGNvbnRhaW5lciBtZXNzYWdlJ3MKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCByZXR1cm5lZCBmYWxzZSwKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIHdhcyBub3QgYSBsaXN0IG9iamVjdCwgYnV0IGEKLSAgc2luZ2xlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaW5zdGFuY2UuCi0KLSAgVGhpcyBzdHJ1Y3R1cmUgd2FzIGluY29uc2lzdGVudCB3aXRoIHRoZSByZXN0IG9mIHRoZSBwYWNrYWdlLCBzbyB0aGUgb2JqZWN0Ci0gIHJlcHJlc2VudGF0aW9uIGZvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCBjb250ZW50IHR5cGVzIHdhcyBjaGFuZ2VkLiAgSW4KLSAgOm1vZDpgZW1haWxgIHZlcnNpb24gMiwgdGhlIGNvbnRhaW5lciAqZG9lcyogcmV0dXJuIGBgVHJ1ZWBgIGZyb20KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YCwgYW5kCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXlsb2FkYCByZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIGEgc2luZ2xlCi0gIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgaXRlbS4KLQotICBOb3RlIHRoYXQgdGhpcyBpcyBvbmUgcGxhY2UgdGhhdCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGNvdWxkIG5vdCBiZQotICBjb21wbGV0ZWx5IG1haW50YWluZWQuICBIb3dldmVyLCBpZiB5b3UncmUgYWxyZWFkeSB0ZXN0aW5nIHRoZSByZXR1cm4gdHlwZSBvZgotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGF5bG9hZGAsIHlvdSBzaG91bGQgYmUgZmluZS4gIFlvdSBqdXN0IG5lZWQKLSAgdG8gbWFrZSBzdXJlIHlvdXIgY29kZSBkb2Vzbid0IGRvIGEgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uuc2V0X3BheWxvYWRgCi0gIHdpdGggYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlIG9uIGEgY29udGFpbmVyIHdpdGggYSBjb250ZW50Ci0gIHR5cGUgb2YgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCi0KLSogVGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNvbnN0cnVjdG9yJ3MgKnN0cmljdCogYXJndW1lbnQgd2FzIGFkZGVkLAotICBhbmQgaXRzIDptZXRoOmB+ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZWAgYW5kCi0gIDptZXRoOmB+ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cmAgbWV0aG9kcyBncmV3IGEgKmhlYWRlcnNvbmx5KiBhcmd1bWVudC4KLSAgVGhlICpzdHJpY3QqIGZsYWcgd2FzIGFsc28gYWRkZWQgdG8gZnVuY3Rpb25zIDpmdW5jOmBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZWAKLSAgYW5kIDpmdW5jOmBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nYC4KLQotKiA6bWV0aDpgR2VuZXJhdG9yLl9fY2FsbF9fYCBpcyBkZXByZWNhdGVkOyB1c2UgOm1ldGg6YEdlbmVyYXRvci5mbGF0dGVuCi0gIDxlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yLmZsYXR0ZW4+YCBpbnN0ZWFkLiAgVGhlCi0gIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGNsYXNzIGhhcyBhbHNvIGdyb3duIHRoZQotICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuY2xvbmVgIG1ldGhvZC4KLQotKiBUaGUgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkRlY29kZWRHZW5lcmF0b3JgIGNsYXNzIGluIHRoZQotICA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZSB3YXMgYWRkZWQuCi0KLSogVGhlIGludGVybWVkaWF0ZSBiYXNlIGNsYXNzZXMKLSAgOmNsYXNzOmB+ZW1haWwubWltZS5ub25tdWx0aXBhcnQuTUlNRU5vbk11bHRpcGFydGAgYW5kCi0gIDpjbGFzczpgfmVtYWlsLm1pbWUubXVsdGlwYXJ0Lk1JTUVNdWx0aXBhcnRgIGhhdmUgYmVlbiBhZGRlZCwgYW5kIGludGVycG9zZWQKLSAgaW4gdGhlIGNsYXNzIGhpZXJhcmNoeSBmb3IgbW9zdCBvZiB0aGUgb3RoZXIgTUlNRS1yZWxhdGVkIGRlcml2ZWQgY2xhc3Nlcy4KLQotKiBUaGUgKl9lbmNvZGVyKiBhcmd1bWVudCB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWltZS50ZXh0Lk1JTUVUZXh0YCBjb25zdHJ1Y3RvcgotICBoYXMgYmVlbiBkZXByZWNhdGVkLiAgRW5jb2RpbmcgIG5vdyBoYXBwZW5zIGltcGxpY2l0bHkgYmFzZWQgb24gdGhlCi0gICpfY2hhcnNldCogYXJndW1lbnQuCi0KLSogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YGVtYWlsLlV0aWxzYCBtb2R1bGUgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQ6Ci0gIDpmdW5jOmBkdW1wX2FkZHJlc3NfcGFpcnNgLCA6ZnVuYzpgZGVjb2RlYCwgYW5kIDpmdW5jOmBlbmNvZGVgLiAgVGhlIGZvbGxvd2luZwotICBmdW5jdGlvbnMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBtb2R1bGU6IDpmdW5jOmBtYWtlX21zZ2lkYCwKLSAgOmZ1bmM6YGRlY29kZV9yZmMyMjMxYCwgOmZ1bmM6YGVuY29kZV9yZmMyMjMxYCwgYW5kIDpmdW5jOmBkZWNvZGVfcGFyYW1zYC4KLQotKiBUaGUgbm9uLXB1YmxpYyBmdW5jdGlvbiA6ZnVuYzpgZW1haWwuSXRlcmF0b3JzLl9zdHJ1Y3R1cmVgIHdhcyBhZGRlZC4KLQotCi1EaWZmZXJlbmNlcyBmcm9tIDptb2Q6YG1pbWVsaWJgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSB3YXMgb3JpZ2luYWxseSBwcm90b3R5cGVkIGFzIGEgc2VwYXJhdGUgbGlicmFyeSBjYWxsZWQKLWBtaW1lbGliIDxodHRwOi8vbWltZWxpYi5zb3VyY2Vmb3JnZS5uZXQvPmBfLiBDaGFuZ2VzIGhhdmUgYmVlbiBtYWRlIHNvIHRoYXQgbWV0aG9kIG5hbWVzCi1hcmUgbW9yZSBjb25zaXN0ZW50LCBhbmQgc29tZSBtZXRob2RzIG9yIG1vZHVsZXMgaGF2ZSBlaXRoZXIgYmVlbiBhZGRlZCBvcgotcmVtb3ZlZC4gIFRoZSBzZW1hbnRpY3Mgb2Ygc29tZSBvZiB0aGUgbWV0aG9kcyBoYXZlIGFsc28gY2hhbmdlZC4gIEZvciB0aGUgbW9zdAotcGFydCwgYW55IGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlIGluIDptb2Q6YG1pbWVsaWJgIGlzIHN0aWxsIGF2YWlsYWJsZSBpbiB0aGUKLTptb2Q6YGVtYWlsYCBwYWNrYWdlLCBhbGJlaXQgb2Z0ZW4gaW4gYSBkaWZmZXJlbnQgd2F5LiAgQmFja3dhcmQgY29tcGF0aWJpbGl0eQotYmV0d2VlbiB0aGUgOm1vZDpgbWltZWxpYmAgcGFja2FnZSBhbmQgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHdhcyBub3QgYQotcHJpb3JpdHkuCi0KLUhlcmUgaXMgYSBicmllZiBkZXNjcmlwdGlvbiBvZiB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgOm1vZDpgbWltZWxpYmAgYW5kCi10aGUgOm1vZDpgZW1haWxgIHBhY2thZ2VzLCBhbG9uZyB3aXRoIGhpbnRzIG9uIGhvdyB0byBwb3J0IHlvdXIgYXBwbGljYXRpb25zLgotCi1PZiBjb3Vyc2UsIHRoZSBtb3N0IHZpc2libGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gcGFja2FnZXMgaXMgdGhhdCB0aGUKLXBhY2thZ2UgbmFtZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIDptb2Q6YGVtYWlsYC4gIEluIGFkZGl0aW9uLCB0aGUgdG9wLWxldmVsCi1wYWNrYWdlIGhhcyB0aGUgZm9sbG93aW5nIGRpZmZlcmVuY2VzOgotCi0qIDpmdW5jOmBtZXNzYWdlRnJvbVN0cmluZ2AgaGFzIGJlZW4gcmVuYW1lZCB0byA6ZnVuYzpgbWVzc2FnZV9mcm9tX3N0cmluZ2AuCi0KLSogOmZ1bmM6YG1lc3NhZ2VGcm9tRmlsZWAgaGFzIGJlZW4gcmVuYW1lZCB0byA6ZnVuYzpgbWVzc2FnZV9mcm9tX2ZpbGVgLgotCi1UaGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjbGFzcyBoYXMgdGhlIGZvbGxvd2luZyBkaWZmZXJlbmNlczoKLQotKiBUaGUgbWV0aG9kIDptZXRoOmBhc1N0cmluZ2Agd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXNfc3RyaW5nYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBpc211bHRpcGFydGAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuaXNfbXVsdGlwYXJ0YC4KLQotKiBUaGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZCBoYXMgZ3Jvd24gYSAqZGVjb2RlKgotICBvcHRpb25hbCBhcmd1bWVudC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRhbGxgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9hbGxgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGFkZGhlYWRlcmAgd2FzIHJlbmFtZWQgdG8KLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYWRkX2hlYWRlcmAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0dHlwZWAgd2FzIHJlbmFtZWQgdG8gOm1ldGg6YGdldF90eXBlYC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRtYWludHlwZWAgd2FzIHJlbmFtZWQgdG8gOm1ldGg6YGdldF9tYWluX3R5cGVgLgotCi0qIFRoZSBtZXRob2QgOm1ldGg6YGdldHN1YnR5cGVgIHdhcyByZW5hbWVkIHRvIDptZXRoOmBnZXRfc3VidHlwZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGFyYW1zYCB3YXMgcmVuYW1lZCB0bwotICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5nZXRfcGFyYW1zYC4gQWxzbywgd2hlcmVhcyA6bWV0aDpgZ2V0cGFyYW1zYAotICByZXR1cm5lZCBhIGxpc3Qgb2Ygc3RyaW5ncywgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BhcmFtc2AgcmV0dXJucwotICBhIGxpc3Qgb2YgMi10dXBsZXMsIGVmZmVjdGl2ZWx5IHRoZSBrZXkvdmFsdWUgcGFpcnMgb2YgdGhlIHBhcmFtZXRlcnMsIHNwbGl0Ci0gIG9uIHRoZSBgYCc9J2BgIHNpZ24uCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0cGFyYW1gIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9wYXJhbWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Y2hhcnNldHNgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9jaGFyc2V0c2AuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0ZmlsZW5hbWVgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9maWxlbmFtZWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Ym91bmRhcnlgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmdldF9ib3VuZGFyeWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgc2V0Ym91bmRhcnlgIHdhcyByZW5hbWVkIHRvCi0gIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9ib3VuZGFyeWAuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0ZGVjb2RlZHBheWxvYWRgIHdhcyByZW1vdmVkLiAgVG8gZ2V0IHNpbWlsYXIKLSAgZnVuY3Rpb25hbGl0eSwgcGFzcyB0aGUgdmFsdWUgMSB0byB0aGUgKmRlY29kZSogZmxhZyBvZiB0aGUKLSAgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgIG1ldGhvZC4KLQotKiBUaGUgbWV0aG9kIDptZXRoOmBnZXRwYXlsb2FkYXN0ZXh0YCB3YXMgcmVtb3ZlZC4gIFNpbWlsYXIgZnVuY3Rpb25hbGl0eSBpcwotICBzdXBwb3J0ZWQgYnkgdGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBjbGFzcyBpbiB0aGUKLSAgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUuCi0KLSogVGhlIG1ldGhvZCA6bWV0aDpgZ2V0Ym9keWFzdGV4dGAgd2FzIHJlbW92ZWQuICBZb3UgY2FuIGdldCBzaW1pbGFyCi0gIGZ1bmN0aW9uYWxpdHkgYnkgY3JlYXRpbmcgYW4gaXRlcmF0b3Igd2l0aAotICA6ZnVuYzpgfmVtYWlsLml0ZXJhdG9ycy50eXBlZF9zdWJwYXJ0X2l0ZXJhdG9yYCBpbiB0aGUgOm1vZDpgZW1haWwuaXRlcmF0b3JzYAotICBtb2R1bGUuCi0KLVRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBoYXMgbm8gZGlmZmVyZW5jZXMgaW4gaXRzIHB1YmxpYwotaW50ZXJmYWNlLiBJdCBkb2VzIGhhdmUgc29tZSBhZGRpdGlvbmFsIHNtYXJ0cyB0byByZWNvZ25pemUKLTptaW1ldHlwZTpgbWVzc2FnZS9kZWxpdmVyeS1zdGF0dXNgIHR5cGUgbWVzc2FnZXMsIHdoaWNoIGl0IHJlcHJlc2VudHMgYXMgYQotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpbnN0YW5jZSBjb250YWluaW5nIHNlcGFyYXRlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIHN1YnBhcnRzIGZvciBlYWNoIGhlYWRlciBibG9jayBpbiB0aGUgZGVsaXZlcnkKLXN0YXR1cyBub3RpZmljYXRpb24gWyNdXy4KLQotVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGNsYXNzIGhhcyBubyBkaWZmZXJlbmNlcyBpbiBpdHMgcHVibGljCi1pbnRlcmZhY2UuICBUaGVyZSBpcyBhIG5ldyBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGUgdGhvdWdoLAotY2FsbGVkIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCB3aGljaCBwcm92aWRlcyBtb3N0IG9mIHRoZQotZnVuY3Rpb25hbGl0eSBwcmV2aW91c2x5IGF2YWlsYWJsZSBpbiB0aGUgOm1ldGg6YE1lc3NhZ2UuZ2V0cGF5bG9hZGFzdGV4dGAKLW1ldGhvZC4KLQotVGhlIGZvbGxvd2luZyBtb2R1bGVzIGFuZCBjbGFzc2VzIGhhdmUgYmVlbiBjaGFuZ2VkOgotCi0qIFRoZSA6Y2xhc3M6YH5lbWFpbC5taW1lLmJhc2UuTUlNRUJhc2VgIGNsYXNzIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyAqX21ham9yKgotICBhbmQgKl9taW5vciogaGF2ZSBjaGFuZ2VkIHRvICpfbWFpbnR5cGUqIGFuZCAqX3N1YnR5cGUqIHJlc3BlY3RpdmVseS4KLQotKiBUaGUgYGBJbWFnZWBgIGNsYXNzL21vZHVsZSBoYXMgYmVlbiByZW5hbWVkIHRvIGBgTUlNRUltYWdlYGAuICBUaGUgKl9taW5vcioKLSAgYXJndW1lbnQgaGFzIGJlZW4gcmVuYW1lZCB0byAqX3N1YnR5cGUqLgotCi0qIFRoZSBgYFRleHRgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVUZXh0YGAuICBUaGUgKl9taW5vcioKLSAgYXJndW1lbnQgaGFzIGJlZW4gcmVuYW1lZCB0byAqX3N1YnR5cGUqLgotCi0qIFRoZSBgYE1lc3NhZ2VSRkM4MjJgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgYE1JTUVNZXNzYWdlYGAuICBOb3RlCi0gIHRoYXQgYW4gZWFybGllciB2ZXJzaW9uIG9mIDptb2Q6YG1pbWVsaWJgIGNhbGxlZCB0aGlzIGNsYXNzL21vZHVsZSBgYFJGQzgyMmBgLAotICBidXQgdGhhdCBjbGFzaGVkIHdpdGggdGhlIFB5dGhvbiBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZSA6bW9kOmByZmM4MjJgIG9uIHNvbWUKLSAgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuCi0KLSAgQWxzbywgdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUubWVzc2FnZS5NSU1FTWVzc2FnZWAgY2xhc3Mgbm93IHJlcHJlc2VudHMgYW55Ci0gIGtpbmQgb2YgTUlNRSBtZXNzYWdlCi0gIHdpdGggbWFpbiB0eXBlIDptaW1ldHlwZTpgbWVzc2FnZWAuICBJdCB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudCAqX3N1YnR5cGUqCi0gIHdoaWNoIGlzIHVzZWQgdG8gc2V0IHRoZSBNSU1FIHN1YnR5cGUuICAqX3N1YnR5cGUqIGRlZmF1bHRzIHRvCi0gIDptaW1ldHlwZTpgcmZjODIyYC4KLQotOm1vZDpgbWltZWxpYmAgcHJvdmlkZWQgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucyBpbiBpdHMgOm1vZDpgYWRkcmVzc2AgYW5kCi06bW9kOmBkYXRlYCBtb2R1bGVzLiAgQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBoYXZlIGJlZW4gbW92ZWQgdG8gdGhlCi06bW9kOmBlbWFpbC51dGlsc2AgbW9kdWxlLgotCi1UaGUgYGBNc2dSZWFkZXJgYCBjbGFzcy9tb2R1bGUgaGFzIGJlZW4gcmVtb3ZlZC4gIEl0cyBmdW5jdGlvbmFsaXR5IGlzIG1vc3QKLWNsb3NlbHkgc3VwcG9ydGVkIGluIHRoZSA6ZnVuYzpgfmVtYWlsLml0ZXJhdG9ycy5ib2R5X2xpbmVfaXRlcmF0b3JgIGZ1bmN0aW9uCi1pbiB0aGUgOm1vZDpgZW1haWwuaXRlcmF0b3JzYCBtb2R1bGUuCi0KLS4uIHJ1YnJpYzo6IEZvb3Rub3RlcwotCi0uLiBbI10gRGVsaXZlcnkgU3RhdHVzIE5vdGlmaWNhdGlvbnMgKERTTikgYXJlIGRlZmluZWQgaW4gOnJmYzpgMTg5NGAuCisgICBNb2R1bGUgOm1vZDpgc210cGRgCisgICAgICBTTVRQIHNlcnZlciBmcmFtZXdvcmsgKHByaW1hcmlseSB1c2VmdWwgZm9yIHRlc3RpbmcpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CmluZGV4IDVjZmY3NDYuLjYzZmFlMmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLnV0aWwucnN0CkBAIC04LDcgKzgsNDMgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhlcmUgYXJlIHNldmVyYWwgdXNlZnVsIHV0aWxpdGllcyBwcm92aWRlZCBpbiB0aGUgOm1vZDpgZW1haWwudXRpbHNgIG1vZHVsZToKK1RoZXJlIGFyZSBhIGNvdXBsZSBvZiB1c2VmdWwgdXRpbGl0aWVzIHByb3ZpZGVkIGluIHRoZSA6bW9kOmBlbWFpbC51dGlsc2AKK21vZHVsZToKKworLi4gZnVuY3Rpb246OiBsb2NhbHRpbWUoZHQ9Tm9uZSkKKworICAgIFJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4gIElmIGNhbGxlZCB3aXRob3V0CisgICAgYXJndW1lbnRzLCByZXR1cm4gY3VycmVudCB0aW1lLiAgT3RoZXJ3aXNlICpkdCogYXJndW1lbnQgc2hvdWxkIGJlIGEKKyAgICA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxvY2FsIHRpbWUKKyAgICB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMgbmFpdmUgKHRoYXQKKyAgICBpcywgYGBkdC50emluZm9gYCBpcyBgYE5vbmVgYCksIGl0IGlzIGFzc3VtZWQgdG8gYmUgaW4gbG9jYWwgdGltZS4gIEluIHRoaXMKKyAgICBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGBgbG9jYWx0aW1lYGAgdG8gcHJlc3VtZQorICAgIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpIGlzIG9yIGlzIG5vdAorICAgIChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQSBuZWdhdGl2ZSB2YWx1ZSBmb3IKKyAgICAqaXNkc3QqIGNhdXNlcyB0aGUgYGBsb2NhbHRpbWVgYCB0byBhdHRlbXB0IHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lCisgICAgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCisKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpCisKKyAgIFJldHVybnMgYSBzdHJpbmcgc3VpdGFibGUgZm9yIGFuIDpyZmM6YDI4MjJgXCAtY29tcGxpYW50CisgICA6bWFpbGhlYWRlcjpgTWVzc2FnZS1JRGAgaGVhZGVyLiAgT3B0aW9uYWwgKmlkc3RyaW5nKiBpZiBnaXZlbiwgaXMgYSBzdHJpbmcKKyAgIHVzZWQgdG8gc3RyZW5ndGhlbiB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgbWVzc2FnZSBpZC4gIE9wdGlvbmFsICpkb21haW4qIGlmCisgICBnaXZlbiBwcm92aWRlcyB0aGUgcG9ydGlvbiBvZiB0aGUgbXNnaWQgYWZ0ZXIgdGhlICdAJy4gIFRoZSBkZWZhdWx0IGlzIHRoZQorICAgbG9jYWwgaG9zdG5hbWUuICBJdCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCwgYnV0CisgICBtYXkgYmUgdXNlZnVsIGNlcnRhaW4gY2FzZXMsIHN1Y2ggYXMgYSBjb25zdHJ1Y3RpbmcgZGlzdHJpYnV0ZWQgc3lzdGVtIHRoYXQKKyAgIHVzZXMgYSBjb25zaXN0ZW50IGRvbWFpbiBuYW1lIGFjcm9zcyBtdWx0aXBsZSBob3N0cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgICAgIEFkZGVkIHRoZSAqZG9tYWluKiBrZXl3b3JkLgorCisKK1RoZSByZW1haW5pbmcgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgVGhlcmUKK2lzIG5vIG5lZWQgdG8gZGlyZWN0bHkgdXNlIHRoZXNlIHdpdGggdGhlIG5ldyBBUEksIHNpbmNlIHRoZSBwYXJzaW5nIGFuZAorZm9ybWF0dGluZyB0aGV5IHByb3ZpZGUgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBoZWFkZXIgcGFyc2luZyBtYWNoaW5lcnkKK29mIHRoZSBuZXcgQVBJLgogCiAKIC4uIGZ1bmN0aW9uOjogcXVvdGUoc3RyKQpAQCAtMTQxLDM2ICsxNzcsNiBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gZnVuY3Rpb246OiBsb2NhbHRpbWUoZHQ9Tm9uZSkKLQotICAgIFJldHVybiBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIGRhdGV0aW1lIG9iamVjdC4gIElmIGNhbGxlZCB3aXRob3V0Ci0gICAgYXJndW1lbnRzLCByZXR1cm4gY3VycmVudCB0aW1lLiAgT3RoZXJ3aXNlICpkdCogYXJndW1lbnQgc2hvdWxkIGJlIGEKLSAgICA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UsIGFuZCBpdCBpcyBjb252ZXJ0ZWQgdG8gdGhlIGxvY2FsIHRpbWUKLSAgICB6b25lIGFjY29yZGluZyB0byB0aGUgc3lzdGVtIHRpbWUgem9uZSBkYXRhYmFzZS4gIElmICpkdCogaXMgbmFpdmUgKHRoYXQKLSAgICBpcywgYGBkdC50emluZm9gYCBpcyBgYE5vbmVgYCksIGl0IGlzIGFzc3VtZWQgdG8gYmUgaW4gbG9jYWwgdGltZS4gIEluIHRoaXMKLSAgICBjYXNlLCBhIHBvc2l0aXZlIG9yIHplcm8gdmFsdWUgZm9yICppc2RzdCogY2F1c2VzIGBgbG9jYWx0aW1lYGAgdG8gcHJlc3VtZQotICAgIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpIGlzIG9yIGlzIG5vdAotICAgIChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQSBuZWdhdGl2ZSB2YWx1ZSBmb3IKLSAgICAqaXNkc3QqIGNhdXNlcyB0aGUgYGBsb2NhbHRpbWVgYCB0byBhdHRlbXB0IHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lCi0gICAgaXMgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuCi0KLSAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKLQotCi0uLiBmdW5jdGlvbjo6IG1ha2VfbXNnaWQoaWRzdHJpbmc9Tm9uZSwgZG9tYWluPU5vbmUpCi0KLSAgIFJldHVybnMgYSBzdHJpbmcgc3VpdGFibGUgZm9yIGFuIDpyZmM6YDI4MjJgXCAtY29tcGxpYW50Ci0gICA6bWFpbGhlYWRlcjpgTWVzc2FnZS1JRGAgaGVhZGVyLiAgT3B0aW9uYWwgKmlkc3RyaW5nKiBpZiBnaXZlbiwgaXMgYSBzdHJpbmcKLSAgIHVzZWQgdG8gc3RyZW5ndGhlbiB0aGUgdW5pcXVlbmVzcyBvZiB0aGUgbWVzc2FnZSBpZC4gIE9wdGlvbmFsICpkb21haW4qIGlmCi0gICBnaXZlbiBwcm92aWRlcyB0aGUgcG9ydGlvbiBvZiB0aGUgbXNnaWQgYWZ0ZXIgdGhlICdAJy4gIFRoZSBkZWZhdWx0IGlzIHRoZQotICAgbG9jYWwgaG9zdG5hbWUuICBJdCBpcyBub3Qgbm9ybWFsbHkgbmVjZXNzYXJ5IHRvIG92ZXJyaWRlIHRoaXMgZGVmYXVsdCwgYnV0Ci0gICBtYXkgYmUgdXNlZnVsIGNlcnRhaW4gY2FzZXMsIHN1Y2ggYXMgYSBjb25zdHJ1Y3RpbmcgZGlzdHJpYnV0ZWQgc3lzdGVtIHRoYXQKLSAgIHVzZXMgYSBjb25zaXN0ZW50IGRvbWFpbiBuYW1lIGFjcm9zcyBtdWx0aXBsZSBob3N0cy4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKLSAgICAgIEFkZGVkIHRoZSAqZG9tYWluKiBrZXl3b3JkLgotCi0KIC4uIGZ1bmN0aW9uOjogZGVjb2RlX3JmYzIyMzEocykKIAogICAgRGVjb2RlIHRoZSBzdHJpbmcgKnMqIGFjY29yZGluZyB0byA6cmZjOmAyMjMxYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VudW0ucnN0IGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKaW5kZXggYTNkNWFmYy4uODdhYThiMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW51bS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW51bS5yc3QKQEAgLTIzLDkgKzIzLDEwIEBACiBNb2R1bGUgQ29udGVudHMKIC0tLS0tLS0tLS0tLS0tLQogCi1UaGlzIG1vZHVsZSBkZWZpbmVzIHR3byBlbnVtZXJhdGlvbiBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHVuaXF1ZQotc2V0cyBvZiBuYW1lcyBhbmQgdmFsdWVzOiA6Y2xhc3M6YEVudW1gIGFuZCA6Y2xhc3M6YEludEVudW1gLiAgSXQgYWxzbyBkZWZpbmVzCi1vbmUgZGVjb3JhdG9yLCA6ZnVuYzpgdW5pcXVlYC4KK1RoaXMgbW9kdWxlIGRlZmluZXMgZm91ciBlbnVtZXJhdGlvbiBjbGFzc2VzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZGVmaW5lIHVuaXF1ZQorc2V0cyBvZiBuYW1lcyBhbmQgdmFsdWVzOiA6Y2xhc3M6YEVudW1gLCA6Y2xhc3M6YEludEVudW1gLCBhbmQKKzpjbGFzczpgSW50RmxhZ3NgLiAgSXQgYWxzbyBkZWZpbmVzIG9uZSBkZWNvcmF0b3IsIDpmdW5jOmB1bmlxdWVgLCBhbmQgb25lCitoZWxwZXIsIDpjbGFzczpgYXV0b2AuCiAKIC4uIGNsYXNzOjogRW51bQogCkBAIC0zNywxMCArMzgsMjcgQEAKICAgICBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBlbnVtZXJhdGVkIGNvbnN0YW50cyB0aGF0IGFyZSBhbHNvCiAgICAgc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAuCiAKKy4uIGNsYXNzOjogSW50RmxhZworCisgICAgQmFzZSBjbGFzcyBmb3IgY3JlYXRpbmcgZW51bWVyYXRlZCBjb25zdGFudHMgdGhhdCBjYW4gYmUgY29tYmluZWQgdXNpbmcKKyAgICB0aGUgYml0d2lzZSBvcGVyYXRvcnMgd2l0aG91dCBsb3NpbmcgdGhlaXIgOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXJzaGlwLgorICAgIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVycyBhcmUgYWxzbyBzdWJjbGFzc2VzIG9mIDpjbGFzczpgaW50YC4KKworLi4gY2xhc3M6OiBGbGFnCisKKyAgICBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBlbnVtZXJhdGVkIGNvbnN0YW50cyB0aGF0IGNhbiBiZSBjb21iaW5lZCB1c2luZworICAgIHRoZSBiaXR3aXNlIG9wZXJhdGlvbnMgd2l0aG91dCBsb3NpbmcgdGhlaXIgOmNsYXNzOmBGbGFnYCBtZW1iZXJzaGlwLgorCiAuLiBmdW5jdGlvbjo6IHVuaXF1ZQogCiAgICAgRW51bSBjbGFzcyBkZWNvcmF0b3IgdGhhdCBlbnN1cmVzIG9ubHkgb25lIG5hbWUgaXMgYm91bmQgdG8gYW55IG9uZSB2YWx1ZS4KIAorLi4gY2xhc3M6OiBhdXRvCisKKyAgICBJbnN0YW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggYW4gYXBwcm9wcmlhdGUgdmFsdWUgZm9yIEVudW0gbWVtYmVycy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy42ICBgYEZsYWdgYCwgYGBJbnRGbGFnYGAsIGBgYXV0b2BgCisKIAogQ3JlYXRpbmcgYW4gRW51bQogLS0tLS0tLS0tLS0tLS0tLQpAQCAtNTcsNiArNzUsMTMgQEAKICAgICAuLi4gICAgIGJsdWUgPSAzCiAgICAgLi4uCiAKKy4uIG5vdGU6OiBFbnVtIG1lbWJlciB2YWx1ZXMKKworICAgIE1lbWJlciB2YWx1ZXMgY2FuIGJlIGFueXRoaW5nOiA6Y2xhc3M6YGludGAsIDpjbGFzczpgc3RyYCwgZXRjLi4gIElmCisgICAgdGhlIGV4YWN0IHZhbHVlIGlzIHVuaW1wb3J0YW50IHlvdSBtYXkgdXNlIDpjbGFzczpgYXV0b2AgaW5zdGFuY2VzIGFuZCBhbgorICAgIGFwcHJvcHJpYXRlIHZhbHVlIHdpbGwgYmUgY2hvc2VuIGZvciB5b3UuICBDYXJlIG11c3QgYmUgdGFrZW4gaWYgeW91IG1peAorICAgIDpjbGFzczpgYXV0b2Agd2l0aCBvdGhlciB2YWx1ZXMuCisKIC4uIG5vdGU6OiBOb21lbmNsYXR1cmUKIAogICAtIFRoZSBjbGFzcyA6Y2xhc3M6YENvbG9yYCBpcyBhbiAqZW51bWVyYXRpb24qIChvciAqZW51bSopCkBAIC0yMTIsNiArMjM3LDQyIEBACiAgICAgVmFsdWVFcnJvcjogZHVwbGljYXRlIHZhbHVlcyBmb3VuZCBpbiA8ZW51bSAnTWlzdGFrZSc+OiBmb3VyIC0+IHRocmVlCiAKIAorVXNpbmcgYXV0b21hdGljIHZhbHVlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB0aGUgZXhhY3QgdmFsdWUgaXMgdW5pbXBvcnRhbnQgeW91IGNhbiB1c2UgOmNsYXNzOmBhdXRvYDo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBhdXRvCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBsaXN0KENvbG9yKQorICAgIFs8Q29sb3IucmVkOiAxPiwgPENvbG9yLmJsdWU6IDI+LCA8Q29sb3IuZ3JlZW46IDM+XQorCitUaGUgdmFsdWVzIGFyZSBjaG9zZW4gYnkgOmZ1bmM6YF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2AsIHdoaWNoIGNhbiBiZQorb3ZlcnJpZGRlbjo6CisKKyAgICA+Pj4gY2xhc3MgQXV0b05hbWUoRW51bSk6CisgICAgLi4uICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBuYW1lCisgICAgLi4uCisgICAgPj4+IGNsYXNzIE9yZGluYWwoQXV0b05hbWUpOgorICAgIC4uLiAgICAgbm9ydGggPSBhdXRvKCkKKyAgICAuLi4gICAgIHNvdXRoID0gYXV0bygpCisgICAgLi4uICAgICBlYXN0ID0gYXV0bygpCisgICAgLi4uICAgICB3ZXN0ID0gYXV0bygpCisgICAgLi4uCisgICAgPj4+IGxpc3QoT3JkaW5hbCkKKyAgICBbPE9yZGluYWwubm9ydGg6ICdub3J0aCc+LCA8T3JkaW5hbC5zb3V0aDogJ3NvdXRoJz4sIDxPcmRpbmFsLmVhc3Q6ICdlYXN0Jz4sIDxPcmRpbmFsLndlc3Q6ICd3ZXN0Jz5dCisKKy4uIG5vdGU6OgorCisgICAgVGhlIGdvYWwgb2YgdGhlIGRlZmF1bHQgOm1ldGg6YF9nZW5lcmF0ZV9uZXh0X3ZhbHVlX2AgbWV0aG9kcyBpcyB0byBwcm92aWRlCisgICAgdGhlIG5leHQgOmNsYXNzOmBpbnRgIGluIHNlcXVlbmNlIHdpdGggdGhlIGxhc3QgOmNsYXNzOmBpbnRgIHByb3ZpZGVkLCBidXQKKyAgICB0aGUgd2F5IGl0IGRvZXMgdGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgYW5kIG1heSBjaGFuZ2UuCisKIEl0ZXJhdGlvbgogLS0tLS0tLS0tCiAKQEAgLTI1Nyw3ICszMTgsNyBAQAogICAgID4+PiBDb2xvci5yZWQgPCBDb2xvci5ibHVlCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgICBUeXBlRXJyb3I6IHVub3JkZXJhYmxlIHR5cGVzOiBDb2xvcigpIDwgQ29sb3IoKQorICAgIFR5cGVFcnJvcjogJzwnIG5vdCBzdXBwb3J0ZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgJ0NvbG9yJyBhbmQgJ0NvbG9yJwogCiBFcXVhbGl0eSBjb21wYXJpc29ucyBhcmUgZGVmaW5lZCB0aG91Z2g6OgogCkBAIC00NzgsNyArNTM5LDcgQEAKIEludEVudW0KIF5eXl5eXl4KIAotQSB2YXJpYXRpb24gb2YgOmNsYXNzOmBFbnVtYCBpcyBwcm92aWRlZCB3aGljaCBpcyBhbHNvIGEgc3ViY2xhc3Mgb2YKK1RoZSBmaXJzdCB2YXJpYXRpb24gb2YgOmNsYXNzOmBFbnVtYCB0aGF0IGlzIHByb3ZpZGVkIGlzIGFsc28gYSBzdWJjbGFzcyBvZgogOmNsYXNzOmBpbnRgLiAgTWVtYmVycyBvZiBhbiA6Y2xhc3M6YEludEVudW1gIGNhbiBiZSBjb21wYXJlZCB0byBpbnRlZ2VyczsKIGJ5IGV4dGVuc2lvbiwgaW50ZWdlciBlbnVtZXJhdGlvbnMgb2YgZGlmZmVyZW50IHR5cGVzIGNhbiBhbHNvIGJlIGNvbXBhcmVkCiB0byBlYWNoIG90aGVyOjoKQEAgLTUyMSwxMyArNTgyLDEyNCBAQAogICAgID4+PiBbaSBmb3IgaSBpbiByYW5nZShTaGFwZS5zcXVhcmUpXQogICAgIFswLCAxXQogCi1Gb3IgdGhlIHZhc3QgbWFqb3JpdHkgb2YgY29kZSwgOmNsYXNzOmBFbnVtYCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCwKLXNpbmNlIDpjbGFzczpgSW50RW51bWAgYnJlYWtzIHNvbWUgc2VtYW50aWMgcHJvbWlzZXMgb2YgYW4gZW51bWVyYXRpb24gKGJ5Ci1iZWluZyBjb21wYXJhYmxlIHRvIGludGVnZXJzLCBhbmQgdGh1cyBieSB0cmFuc2l0aXZpdHkgdG8gb3RoZXIKLXVucmVsYXRlZCBlbnVtZXJhdGlvbnMpLiAgSXQgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBzcGVjaWFsIGNhc2VzIHdoZXJlCi10aGVyZSdzIG5vIG90aGVyIGNob2ljZTsgZm9yIGV4YW1wbGUsIHdoZW4gaW50ZWdlciBjb25zdGFudHMgYXJlCi1yZXBsYWNlZCB3aXRoIGVudW1lcmF0aW9ucyBhbmQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQgd2l0aCBjb2RlCi10aGF0IHN0aWxsIGV4cGVjdHMgaW50ZWdlcnMuCisKK0ludEZsYWcKK15eXl5eXl4KKworVGhlIG5leHQgdmFyaWF0aW9uIG9mIDpjbGFzczpgRW51bWAgcHJvdmlkZWQsIDpjbGFzczpgSW50RmxhZ2AsIGlzIGFsc28gYmFzZWQKK29uIDpjbGFzczpgaW50YC4gIFRoZSBkaWZmZXJlbmNlIGJlaW5nIDpjbGFzczpgSW50RmxhZ2AgbWVtYmVycyBjYW4gYmUgY29tYmluZWQKK3VzaW5nIHRoZSBiaXR3aXNlIG9wZXJhdG9ycyAoJiwgXHwsIF4sIH4pIGFuZCB0aGUgcmVzdWx0IGlzIHN0aWxsIGFuCis6Y2xhc3M6YEludEZsYWdgIG1lbWJlci4gIEhvd2V2ZXIsIGFzIHRoZSBuYW1lIGltcGxpZXMsIDpjbGFzczpgSW50RmxhZ2AKK21lbWJlcnMgYWxzbyBzdWJjbGFzcyA6Y2xhc3M6YGludGAgYW5kIGNhbiBiZSB1c2VkIHdoZXJldmVyIGFuIDpjbGFzczpgaW50YCBpcwordXNlZC4gIEFueSBvcGVyYXRpb24gb24gYW4gOmNsYXNzOmBJbnRGbGFnYCBtZW1iZXIgYmVzaWRlcyB0aGUgYml0LXdpc2UKK29wZXJhdGlvbnMgd2lsbCBsb3NlIHRoZSA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnNoaXAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitTYW1wbGUgOmNsYXNzOmBJbnRGbGFnYCBjbGFzczo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBJbnRGbGFnCisgICAgPj4+IGNsYXNzIFBlcm0oSW50RmxhZyk6CisgICAgLi4uICAgICBSID0gNAorICAgIC4uLiAgICAgVyA9IDIKKyAgICAuLi4gICAgIFggPSAxCisgICAgLi4uCisgICAgPj4+IFBlcm0uUiB8IFBlcm0uVworICAgIDxQZXJtLlJ8VzogNj4KKyAgICA+Pj4gUGVybS5SICsgUGVybS5XCisgICAgNgorICAgID4+PiBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgID4+PiBQZXJtLlIgaW4gUlcKKyAgICBUcnVlCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gbmFtZSB0aGUgY29tYmluYXRpb25zOjoKKworICAgID4+PiBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgIC4uLiAgICAgUiA9IDQKKyAgICAuLi4gICAgIFcgPSAyCisgICAgLi4uICAgICBYID0gMQorICAgIC4uLiAgICAgUldYID0gNworICAgID4+PiBQZXJtLlJXWAorICAgIDxQZXJtLlJXWDogNz4KKyAgICA+Pj4gflBlcm0uUldYCisgICAgPFBlcm0uLTg6IC04PgorCitBbm90aGVyIGltcG9ydGFudCBkaWZmZXJlbmNlIGJldHdlZW4gOmNsYXNzOmBJbnRGbGFnYCBhbmQgOmNsYXNzOmBFbnVtYCBpcyB0aGF0CitpZiBubyBmbGFncyBhcmUgc2V0ICh0aGUgdmFsdWUgaXMgMCksIGl0cyBib29sZWFuIGV2YWx1YXRpb24gaXMgOmRhdGE6YEZhbHNlYDo6CisKKyAgICA+Pj4gUGVybS5SICYgUGVybS5YCisgICAgPFBlcm0uMDogMD4KKyAgICA+Pj4gYm9vbChQZXJtLlIgJiBQZXJtLlgpCisgICAgRmFsc2UKKworQmVjYXVzZSA6Y2xhc3M6YEludEZsYWdgIG1lbWJlcnMgYXJlIGFsc28gc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YGludGAgdGhleSBjYW4KK2JlIGNvbWJpbmVkIHdpdGggdGhlbTo6CisKKyAgICA+Pj4gUGVybS5YIHwgOAorICAgIDxQZXJtLjh8WDogOT4KKworCitGbGFnCiteXl5eCisKK1RoZSBsYXN0IHZhcmlhdGlvbiBpcyA6Y2xhc3M6YEZsYWdgLiAgTGlrZSA6Y2xhc3M6YEludEZsYWdgLCA6Y2xhc3M6YEZsYWdgCittZW1iZXJzIGNhbiBiZSBjb21iaW5lZCB1c2luZyB0aGUgYml0d2lzZSBvcGVyYXRvcnMgKCYsIFx8LCBeLCB+KS4gIFVubGlrZQorOmNsYXNzOmBJbnRGbGFnYCwgdGhleSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCwgbm9yIGNvbXBhcmVkIGFnYWluc3QsIGFueQorb3RoZXIgOmNsYXNzOmBGbGFnYCBlbnVtZXJhdGlvbiwgbm9yIDpjbGFzczpgaW50YC4gIFdoaWxlIGl0IGlzIHBvc3NpYmxlIHRvCitzcGVjaWZ5IHRoZSB2YWx1ZXMgZGlyZWN0bHkgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIDpjbGFzczpgYXV0b2AgYXMgdGhlCit2YWx1ZSBhbmQgbGV0IDpjbGFzczpgRmxhZ2Agc2VsZWN0IGFuIGFwcHJvcHJpYXRlIHZhbHVlLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworTGlrZSA6Y2xhc3M6YEludEZsYWdgLCBpZiBhIGNvbWJpbmF0aW9uIG9mIDpjbGFzczpgRmxhZ2AgbWVtYmVycyByZXN1bHRzIGluIG5vCitmbGFncyBiZWluZyBzZXQsIHRoZSBib29sZWFuIGV2YWx1YXRpb24gaXMgOmRhdGE6YEZhbHNlYDo6CisKKyAgICA+Pj4gZnJvbSBlbnVtIGltcG9ydCBGbGFnCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5yZWQgJiBDb2xvci5ncmVlbgorICAgIDxDb2xvci4wOiAwPgorICAgID4+PiBib29sKENvbG9yLnJlZCAmIENvbG9yLmdyZWVuKQorICAgIEZhbHNlCisKK0luZGl2aWR1YWwgZmxhZ3Mgc2hvdWxkIGhhdmUgdmFsdWVzIHRoYXQgYXJlIHBvd2VycyBvZiB0d28gKDEsIDIsIDQsIDgsIC4uLiksCit3aGlsZSBjb21iaW5hdGlvbnMgb2YgZmxhZ3Mgd29uJ3Q6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLiAgICAgd2hpdGUgPSByZWQgfCBibHVlIHwgZ3JlZW4KKyAgICAuLi4KKyAgICA+Pj4gQ29sb3Iud2hpdGUKKyAgICA8Q29sb3Iud2hpdGU6IDc+CisKK0dpdmluZyBhIG5hbWUgdG8gdGhlICJubyBmbGFncyBzZXQiIGNvbmRpdGlvbiBkb2VzIG5vdCBjaGFuZ2UgaXRzIGJvb2xlYW4KK3ZhbHVlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAuLi4gICAgIGJsYWNrID0gMAorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5ibGFjaworICAgIDxDb2xvci5ibGFjazogMD4KKyAgICA+Pj4gYm9vbChDb2xvci5ibGFjaykKKyAgICBGYWxzZQorCisuLiBub3RlOjoKKworICAgIEZvciB0aGUgbWFqb3JpdHkgb2YgbmV3IGNvZGUsIDpjbGFzczpgRW51bWAgYW5kIDpjbGFzczpgRmxhZ2AgYXJlIHN0cm9uZ2x5CisgICAgcmVjb21tZW5kZWQsIHNpbmNlIDpjbGFzczpgSW50RW51bWAgYW5kIDpjbGFzczpgSW50RmxhZ2AgYnJlYWsgc29tZQorICAgIHNlbWFudGljIHByb21pc2VzIG9mIGFuIGVudW1lcmF0aW9uIChieSBiZWluZyBjb21wYXJhYmxlIHRvIGludGVnZXJzLCBhbmQKKyAgICB0aHVzIGJ5IHRyYW5zaXRpdml0eSB0byBvdGhlciB1bnJlbGF0ZWQgZW51bWVyYXRpb25zKS4gIDpjbGFzczpgSW50RW51bWAKKyAgICBhbmQgOmNsYXNzOmBJbnRGbGFnYCBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNhc2VzIHdoZXJlIDpjbGFzczpgRW51bWAgYW5kCisgICAgOmNsYXNzOmBGbGFnYCB3aWxsIG5vdCBkbzsgZm9yIGV4YW1wbGUsIHdoZW4gaW50ZWdlciBjb25zdGFudHMgYXJlIHJlcGxhY2VkCisgICAgd2l0aCBlbnVtZXJhdGlvbnMsIG9yIGZvciBpbnRlcm9wZXJhYmlsaXR5IHdpdGggb3RoZXIgc3lzdGVtcy4KIAogCiBPdGhlcnMKQEAgLTU1OCw3ICs3MzAsOCBAQAogNC4gJS1zdHlsZSBmb3JtYXR0aW5nOiAgYCVzYCBhbmQgYCVyYCBjYWxsIHRoZSA6Y2xhc3M6YEVudW1gIGNsYXNzJ3MKICAgIDptZXRoOmBfX3N0cl9fYCBhbmQgOm1ldGg6YF9fcmVwcl9fYCByZXNwZWN0aXZlbHk7IG90aGVyIGNvZGVzIChzdWNoIGFzCiAgICBgJWlgIG9yIGAlaGAgZm9yIEludEVudW0pIHRyZWF0IHRoZSBlbnVtIG1lbWJlciBhcyBpdHMgbWl4ZWQtaW4gdHlwZS4KLTUuIDptZXRoOmBzdHIuZm9ybWF0YCAob3IgOmZ1bmM6YGZvcm1hdGApIHdpbGwgdXNlIHRoZSBtaXhlZC1pbgorNS4gOnJlZjpgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAsIDptZXRoOmBzdHIuZm9ybWF0YCwKKyAgIGFuZCA6ZnVuYzpgZm9ybWF0YCB3aWxsIHVzZSB0aGUgbWl4ZWQtaW4KICAgIHR5cGUncyA6bWV0aDpgX19mb3JtYXRfX2AuICBJZiB0aGUgOmNsYXNzOmBFbnVtYCBjbGFzcydzIDpmdW5jOmBzdHJgIG9yCiAgICA6ZnVuYzpgcmVwcmAgaXMgZGVzaXJlZCwgdXNlIHRoZSBgIXNgIG9yIGAhcmAgZm9ybWF0IGNvZGVzLgogCkBAIC01NjYsMTggKzczOSw4NyBAQAogSW50ZXJlc3RpbmcgZXhhbXBsZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVdoaWxlIDpjbGFzczpgRW51bWAgYW5kIDpjbGFzczpgSW50RW51bWAgYXJlIGV4cGVjdGVkIHRvIGNvdmVyIHRoZSBtYWpvcml0eSBvZgotdXNlLWNhc2VzLCB0aGV5IGNhbm5vdCBjb3ZlciB0aGVtIGFsbC4gIEhlcmUgYXJlIHJlY2lwZXMgZm9yIHNvbWUgZGlmZmVyZW50Ci10eXBlcyBvZiBlbnVtZXJhdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCBkaXJlY3RseSwgb3IgYXMgZXhhbXBsZXMgZm9yIGNyZWF0aW5nCi1vbmUncyBvd24uCitXaGlsZSA6Y2xhc3M6YEVudW1gLCA6Y2xhc3M6YEludEVudW1gLCA6Y2xhc3M6YEludEZsYWdgLCBhbmQgOmNsYXNzOmBGbGFnYCBhcmUKK2V4cGVjdGVkIHRvIGNvdmVyIHRoZSBtYWpvcml0eSBvZiB1c2UtY2FzZXMsIHRoZXkgY2Fubm90IGNvdmVyIHRoZW0gYWxsLiAgSGVyZQorYXJlIHJlY2lwZXMgZm9yIHNvbWUgZGlmZmVyZW50IHR5cGVzIG9mIGVudW1lcmF0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIGRpcmVjdGx5LAorb3IgYXMgZXhhbXBsZXMgZm9yIGNyZWF0aW5nIG9uZSdzIG93bi4KIAogCi1BdXRvTnVtYmVyCi1eXl5eXl5eXl5eCitPbWl0dGluZyB2YWx1ZXMKK15eXl5eXl5eXl5eXl5eXgogCi1Bdm9pZHMgaGF2aW5nIHRvIHNwZWNpZnkgdGhlIHZhbHVlIGZvciBlYWNoIGVudW1lcmF0aW9uIG1lbWJlcjo6CitJbiBtYW55IHVzZS1jYXNlcyBvbmUgZG9lc24ndCBjYXJlIHdoYXQgdGhlIGFjdHVhbCB2YWx1ZSBvZiBhbiBlbnVtZXJhdGlvbgoraXMuIFRoZXJlIGFyZSBzZXZlcmFsIHdheXMgdG8gZGVmaW5lIHRoaXMgdHlwZSBvZiBzaW1wbGUgZW51bWVyYXRpb246CiAKLSAgICA+Pj4gY2xhc3MgQXV0b051bWJlcihFbnVtKToKKy0gdXNlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YGF1dG9gIGZvciB0aGUgdmFsdWUKKy0gdXNlIGluc3RhbmNlcyBvZiA6Y2xhc3M6YG9iamVjdGAgYXMgdGhlIHZhbHVlCistIHVzZSBhIGRlc2NyaXB0aXZlIHN0cmluZyBhcyB0aGUgdmFsdWUKKy0gdXNlIGEgdHVwbGUgYXMgdGhlIHZhbHVlIGFuZCBhIGN1c3RvbSA6bWV0aDpgX19uZXdfX2AgdG8gcmVwbGFjZSB0aGUKKyAgdHVwbGUgd2l0aCBhbiA6Y2xhc3M6YGludGAgdmFsdWUKKworVXNpbmcgYW55IG9mIHRoZXNlIG1ldGhvZHMgc2lnbmlmaWVzIHRvIHRoZSB1c2VyIHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBub3QKK2ltcG9ydGFudCwgYW5kIGFsc28gZW5hYmxlcyBvbmUgdG8gYWRkLCByZW1vdmUsIG9yIHJlb3JkZXIgbWVtYmVycyB3aXRob3V0CitoYXZpbmcgdG8gcmVudW1iZXIgdGhlIHJlbWFpbmluZyBtZW1iZXJzLgorCitXaGljaGV2ZXIgbWV0aG9kIHlvdSBjaG9vc2UsIHlvdSBzaG91bGQgcHJvdmlkZSBhIDptZXRoOmByZXByYCB0aGF0IGFsc28gaGlkZXMKK3RoZSAodW5pbXBvcnRhbnQpIHZhbHVlOjoKKworICAgID4+PiBjbGFzcyBOb1ZhbHVlKEVudW0pOgorICAgIC4uLiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJldHVybiAnPCVzLiVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSkKKyAgICAuLi4KKworCitVc2luZyA6Y2xhc3M6YGF1dG9gCisiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIDpjbGFzczpgb2JqZWN0YCB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKE5vVmFsdWUpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBibHVlID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLgorICAgID4+PiBDb2xvci5ncmVlbgorICAgIDxDb2xvci5ncmVlbj4KKworCitVc2luZyA6Y2xhc3M6YG9iamVjdGAKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitVc2luZyA6Y2xhc3M6YG9iamVjdGAgd291bGQgbG9vayBsaWtlOjoKKworICAgID4+PiBjbGFzcyBDb2xvcihOb1ZhbHVlKToKKyAgICAuLi4gICAgIHJlZCA9IG9iamVjdCgpCisgICAgLi4uICAgICBncmVlbiA9IG9iamVjdCgpCisgICAgLi4uICAgICBibHVlID0gb2JqZWN0KCkKKyAgICAuLi4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuZ3JlZW4+CisKKworVXNpbmcgYSBkZXNjcmlwdGl2ZSBzdHJpbmcKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK1VzaW5nIGEgc3RyaW5nIGFzIHRoZSB2YWx1ZSB3b3VsZCBsb29rIGxpa2U6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKE5vVmFsdWUpOgorICAgIC4uLiAgICAgcmVkID0gJ3N0b3AnCisgICAgLi4uICAgICBncmVlbiA9ICdnbycKKyAgICAuLi4gICAgIGJsdWUgPSAndG9vIGZhc3QhJworICAgIC4uLgorICAgID4+PiBDb2xvci5ncmVlbgorICAgIDxDb2xvci5ncmVlbj4KKyAgICA+Pj4gQ29sb3IuZ3JlZW4udmFsdWUKKyAgICAnZ28nCisKKworVXNpbmcgYSBjdXN0b20gOm1ldGg6YF9fbmV3X19gCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworVXNpbmcgYW4gYXV0by1udW1iZXJpbmcgOm1ldGg6YF9fbmV3X19gIHdvdWxkIGxvb2sgbGlrZTo6CisKKyAgICA+Pj4gY2xhc3MgQXV0b051bWJlcihOb1ZhbHVlKToKICAgICAuLi4gICAgIGRlZiBfX25ld19fKGNscyk6CiAgICAgLi4uICAgICAgICAgdmFsdWUgPSBsZW4oY2xzLl9fbWVtYmVyc19fKSArIDEKICAgICAuLi4gICAgICAgICBvYmogPSBvYmplY3QuX19uZXdfXyhjbHMpCkBAIC01ODksOCArODMxLDExIEBACiAgICAgLi4uICAgICBncmVlbiA9ICgpCiAgICAgLi4uICAgICBibHVlID0gKCkKICAgICAuLi4KLSAgICA+Pj4gQ29sb3IuZ3JlZW4udmFsdWUgPT0gMgotICAgIFRydWUKKyAgICA+Pj4gQ29sb3IuZ3JlZW4KKyAgICA8Q29sb3IuZ3JlZW4+CisgICAgPj4+IENvbG9yLmdyZWVuLnZhbHVlCisgICAgMgorCiAKIC4uIG5vdGU6OgogCkBAIC03MzAsMTAgKzk3NSw2MCBAQAogRmluZXIgUG9pbnRzCiBeXl5eXl5eXl5eXl4KIAotOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBpbnN0YW5jZXMgb2YgYW4gOmNsYXNzOmBFbnVtYCBjbGFzcywgYW5kIGV2ZW4KLXRob3VnaCB0aGV5IGFyZSBhY2Nlc3NpYmxlIGFzIGBFbnVtQ2xhc3MubWVtYmVyYCwgdGhleSBzaG91bGQgbm90IGJlIGFjY2Vzc2VkCi1kaXJlY3RseSBmcm9tIHRoZSBtZW1iZXIgYXMgdGhhdCBsb29rdXAgbWF5IGZhaWwgb3IsIHdvcnNlLCByZXR1cm4gc29tZXRoaW5nCi1iZXNpZGVzIHRoZSA6Y2xhc3M6YEVudW1gIG1lbWJlciB5b3UgbG9va2luZyBmb3I6OgorU3VwcG9ydGVkIGBgX19kdW5kZXJfX2BgIG5hbWVzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIKKworOmF0dHI6YF9fbWVtYmVyc19fYCBpcyBhbiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBvZiBgYG1lbWJlcl9uYW1lYGA6YGBtZW1iZXJgYAoraXRlbXMuICBJdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiB0aGUgY2xhc3MuCisKKzptZXRoOmBfX25ld19fYCwgaWYgc3BlY2lmaWVkLCBtdXN0IGNyZWF0ZSBhbmQgcmV0dXJuIHRoZSBlbnVtIG1lbWJlcnM7IGl0IGlzCithbHNvIGEgdmVyeSBnb29kIGlkZWEgdG8gc2V0IHRoZSBtZW1iZXIncyA6YXR0cjpgX3ZhbHVlX2AgYXBwcm9wcmlhdGVseS4gIE9uY2UKK2FsbCB0aGUgbWVtYmVycyBhcmUgY3JlYXRlZCBpdCBpcyBubyBsb25nZXIgdXNlZC4KKworCitTdXBwb3J0ZWQgYGBfc3VuZGVyX2BgIG5hbWVzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKy0gYGBfbmFtZV9gYCAtLSBuYW1lIG9mIHRoZSBtZW1iZXIKKy0gYGBfdmFsdWVfYGAgLS0gdmFsdWUgb2YgdGhlIG1lbWJlcjsgY2FuIGJlIHNldCAvIG1vZGlmaWVkIGluIGBgX19uZXdfX2BgCisKKy0gYGBfbWlzc2luZ19gYCAtLSBhIGxvb2t1cCBmdW5jdGlvbiB1c2VkIHdoZW4gYSB2YWx1ZSBpcyBub3QgZm91bmQ7IG1heSBiZQorICBvdmVycmlkZGVuCistIGBgX29yZGVyX2BgIC0tIHVzZWQgaW4gUHl0aG9uIDIvMyBjb2RlIHRvIGVuc3VyZSBtZW1iZXIgb3JkZXIgaXMgY29uc2lzdGVudAorICAoY2xhc3MgYXR0cmlidXRlLCByZW1vdmVkIGR1cmluZyBjbGFzcyBjcmVhdGlvbikKKy0gYGBfZ2VuZXJhdGVfbmV4dF92YWx1ZV9gYCAtLSB1c2VkIGJ5IHRoZSBgRnVuY3Rpb25hbCBBUElgXyBhbmQgYnkKKyAgOmNsYXNzOmBhdXRvYCB0byBnZXQgYW4gYXBwcm9wcmlhdGUgdmFsdWUgZm9yIGFuIGVudW0gbWVtYmVyOyBtYXkgYmUKKyAgb3ZlcnJpZGRlbgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgYGBfbWlzc2luZ19gYCwgYGBfb3JkZXJfYGAsIGBgX2dlbmVyYXRlX25leHRfdmFsdWVfYGAKKworVG8gaGVscCBrZWVwIFB5dGhvbiAyIC8gUHl0aG9uIDMgY29kZSBpbiBzeW5jIGFuIDphdHRyOmBfb3JkZXJfYCBhdHRyaWJ1dGUgY2FuCitiZSBwcm92aWRlZC4gIEl0IHdpbGwgYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBhY3R1YWwgb3JkZXIgb2YgdGhlIGVudW1lcmF0aW9uCithbmQgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIHR3byBkbyBub3QgbWF0Y2g6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEVudW0pOgorICAgIC4uLiAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAuLi4gICAgIHJlZCA9IDEKKyAgICAuLi4gICAgIGJsdWUgPSAzCisgICAgLi4uICAgICBncmVlbiA9IDIKKyAgICAuLi4KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICAgVHlwZUVycm9yOiBtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXworCisuLiBub3RlOjoKKworICAgIEluIFB5dGhvbiAyIGNvZGUgdGhlIDphdHRyOmBfb3JkZXJfYCBhdHRyaWJ1dGUgaXMgbmVjZXNzYXJ5IGFzIGRlZmluaXRpb24KKyAgICBvcmRlciBpcyBsb3N0IGJlZm9yZSBpdCBjYW4gYmUgcmVjb3JkZWQuCisKK2BgRW51bWBgIG1lbWJlciB0eXBlCisiIiIiIiIiIiIiIiIiIiIiIiIiIgorCis6Y2xhc3M6YEVudW1gIG1lbWJlcnMgYXJlIGluc3RhbmNlcyBvZiB0aGVpciA6Y2xhc3M6YEVudW1gIGNsYXNzLCBhbmQgYXJlCitub3JtYWxseSBhY2Nlc3NlZCBhcyBgYEVudW1DbGFzcy5tZW1iZXJgYC4gIFVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB0aGV5CitjYW4gYWxzbyBiZSBhY2Nlc3NlZCBhcyBgYEVudW1DbGFzcy5tZW1iZXIubWVtYmVyYGAsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyIGRvCit0aGlzIGFzIHRoYXQgbG9va3VwIG1heSBmYWlsIG9yLCB3b3JzZSwgcmV0dXJuIHNvbWV0aGluZyBiZXNpZGVzIHRoZQorOmNsYXNzOmBFbnVtYCBtZW1iZXIgeW91IGFyZSBsb29raW5nIGZvcjo6CiAKICAgICA+Pj4gY2xhc3MgRmllbGRUeXBlcyhFbnVtKToKICAgICAuLi4gICAgIG5hbWUgPSAwCkBAIC03NDcsNyArMTA0MiwyNCBAQAogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogCi1UaGUgOmF0dHI6YF9fbWVtYmVyc19fYCBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgb24gdGhlIGNsYXNzLgorCitCb29sZWFuIHZhbHVlIG9mIGBgRW51bWBgIGNsYXNzZXMgYW5kIG1lbWJlcnMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCis6Y2xhc3M6YEVudW1gIG1lbWJlcnMgdGhhdCBhcmUgbWl4ZWQgd2l0aCBub24tOmNsYXNzOmBFbnVtYCB0eXBlcyAoc3VjaCBhcworOmNsYXNzOmBpbnRgLCA6Y2xhc3M6YHN0cmAsIGV0Yy4pIGFyZSBldmFsdWF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBtaXhlZC1pbgordHlwZSdzIHJ1bGVzOyBvdGhlcndpc2UsIGFsbCBtZW1iZXJzIGV2YWx1YXRlIGFzIDpkYXRhOmBUcnVlYC4gIFRvIG1ha2UgeW91cgorb3duIEVudW0ncyBib29sZWFuIGV2YWx1YXRpb24gZGVwZW5kIG9uIHRoZSBtZW1iZXIncyB2YWx1ZSBhZGQgdGhlIGZvbGxvd2luZyB0bworeW91ciBjbGFzczo6CisKKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYudmFsdWUpCisKKzpjbGFzczpgRW51bWAgY2xhc3NlcyBhbHdheXMgZXZhbHVhdGUgYXMgOmRhdGE6YFRydWVgLgorCisKK2BgRW51bWBgIGNsYXNzZXMgd2l0aCBtZXRob2RzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBJZiB5b3UgZ2l2ZSB5b3VyIDpjbGFzczpgRW51bWAgc3ViY2xhc3MgZXh0cmEgbWV0aG9kcywgbGlrZSB0aGUgYFBsYW5ldGBfCiBjbGFzcyBhYm92ZSwgdGhvc2UgbWV0aG9kcyB3aWxsIHNob3cgdXAgaW4gYSA6ZnVuYzpgZGlyYCBvZiB0aGUgbWVtYmVyLApAQCAtNzU4LDExICsxMDcwLDIzIEBACiAgICAgPj4+IGRpcihQbGFuZXQuRUFSVEgpCiAgICAgWydfX2NsYXNzX18nLCAnX19kb2NfXycsICdfX21vZHVsZV9fJywgJ25hbWUnLCAnc3VyZmFjZV9ncmF2aXR5JywgJ3ZhbHVlJ10KIAotVGhlIDptZXRoOmBfX25ld19fYCBtZXRob2Qgd2lsbCBvbmx5IGJlIHVzZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiB0aGUKLTpjbGFzczpgRW51bWAgbWVtYmVycyAtLSBhZnRlciB0aGF0IGl0IGlzIHJlcGxhY2VkLiAgQW55IGN1c3RvbSA6bWV0aDpgX19uZXdfX2AKLW1ldGhvZCBtdXN0IGNyZWF0ZSB0aGUgb2JqZWN0IGFuZCBzZXQgdGhlIDphdHRyOmBfdmFsdWVfYCBhdHRyaWJ1dGUKLWFwcHJvcHJpYXRlbHkuCiAKLUlmIHlvdSB3aXNoIHRvIGNoYW5nZSBob3cgOmNsYXNzOmBFbnVtYCBtZW1iZXJzIGFyZSBsb29rZWQgdXAgeW91IHNob3VsZCBlaXRoZXIKLXdyaXRlIGEgaGVscGVyIGZ1bmN0aW9uIG9yIGEgOmZ1bmM6YGNsYXNzbWV0aG9kYCBmb3IgdGhlIDpjbGFzczpgRW51bWAKLXN1YmNsYXNzLgorQ29tYmluaW5nIG1lbWJlcnMgb2YgYGBGbGFnYGAKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKK0lmIGEgY29tYmluYXRpb24gb2YgRmxhZyBtZW1iZXJzIGlzIG5vdCBuYW1lZCwgdGhlIDpmdW5jOmByZXByYCB3aWxsIGluY2x1ZGUKK2FsbCBuYW1lZCBmbGFncyBhbmQgYWxsIG5hbWVkIGNvbWJpbmF0aW9ucyBvZiBmbGFncyB0aGF0IGFyZSBpbiB0aGUgdmFsdWU6OgorCisgICAgPj4+IGNsYXNzIENvbG9yKEZsYWcpOgorICAgIC4uLiAgICAgcmVkID0gYXV0bygpCisgICAgLi4uICAgICBncmVlbiA9IGF1dG8oKQorICAgIC4uLiAgICAgYmx1ZSA9IGF1dG8oKQorICAgIC4uLiAgICAgbWFnZW50YSA9IHJlZCB8IGJsdWUKKyAgICAuLi4gICAgIHllbGxvdyA9IHJlZCB8IGdyZWVuCisgICAgLi4uICAgICBjeWFuID0gZ3JlZW4gfCBibHVlCisgICAgLi4uCisgICAgPj4+IENvbG9yKDMpICAjIG5hbWVkIGNvbWJpbmF0aW9uCisgICAgPENvbG9yLnllbGxvdzogMz4KKyAgICA+Pj4gQ29sb3IoNykgICAgICAjIG5vdCBuYW1lZCBjb21iaW5hdGlvbgorICAgIDxDb2xvci5jeWFufG1hZ2VudGF8Ymx1ZXx5ZWxsb3d8Z3JlZW58cmVkOiA3PgorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CmluZGV4IDVhNzE5MzMuLmE0MjhmNTEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0CkBAIC0xNzAsOCArMTcwLDkgQEAKIAogLi4gZXhjZXB0aW9uOjogSW1wb3J0RXJyb3IKIAotICAgUmFpc2VkIHdoZW4gYW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uCi0gICBvciB3aGVuIGEgYGBmcm9tIC4uLiBpbXBvcnRgYCBmYWlscyB0byBmaW5kIGEgbmFtZSB0aGF0IGlzIHRvIGJlIGltcG9ydGVkLgorICAgUmFpc2VkIHdoZW4gdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBoYXMgdHJvdWJsZXMgdHJ5aW5nIHRvCisgICBsb2FkIGEgbW9kdWxlLiAgQWxzbyByYWlzZWQgd2hlbiB0aGUgImZyb20gbGlzdCIgaW4gYGBmcm9tIC4uLiBpbXBvcnRgYAorICAgaGFzIGEgbmFtZSB0aGF0IGNhbm5vdCBiZSBmb3VuZC4KIAogICAgVGhlIDphdHRyOmBuYW1lYCBhbmQgOmF0dHI6YHBhdGhgIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCB1c2luZyBrZXl3b3JkLW9ubHkKICAgIGFyZ3VtZW50cyB0byB0aGUgY29uc3RydWN0b3IuIFdoZW4gc2V0IHRoZXkgcmVwcmVzZW50IHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUKQEAgLTE4MSw2ICsxODIsMTQgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcy4KIAorLi4gZXhjZXB0aW9uOjogTW9kdWxlTm90Rm91bmRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YEltcG9ydEVycm9yYCB3aGljaCBpcyByYWlzZWQgYnkgOmtleXdvcmQ6YGltcG9ydGAKKyAgIHdoZW4gYSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQuICBJdCBpcyBhbHNvIHJhaXNlZCB3aGVuIGBgTm9uZWBgCisgICBpcyBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAuLiBleGNlcHRpb246OiBJbmRleEVycm9yCiAKQEAgLTIyOCw5ICsyMzcsMjEgQEAKIC4uIGV4Y2VwdGlvbjo6IE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgVGhpcyBleGNlcHRpb24gaXMgZGVyaXZlZCBmcm9tIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBJbiB1c2VyIGRlZmluZWQgYmFzZQotICAgY2xhc3NlcywgYWJzdHJhY3QgbWV0aG9kcyBzaG91bGQgcmFpc2UgdGhpcyBleGNlcHRpb24gd2hlbiB0aGV5IHJlcXVpcmUgZGVyaXZlZAotICAgY2xhc3NlcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kLgorICAgY2xhc3NlcywgYWJzdHJhY3QgbWV0aG9kcyBzaG91bGQgcmFpc2UgdGhpcyBleGNlcHRpb24gd2hlbiB0aGV5IHJlcXVpcmUKKyAgIGRlcml2ZWQgY2xhc3NlcyB0byBvdmVycmlkZSB0aGUgbWV0aG9kLCBvciB3aGlsZSB0aGUgY2xhc3MgaXMgYmVpbmcKKyAgIGRldmVsb3BlZCB0byBpbmRpY2F0ZSB0aGF0IHRoZSByZWFsIGltcGxlbWVudGF0aW9uIHN0aWxsIG5lZWRzIHRvIGJlIGFkZGVkLgogCisgICAuLiBub3RlOjoKKworICAgICAgSXQgc2hvdWxkIG5vdCBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQgYW4gb3BlcmF0ZXIgb3IgbWV0aG9kIGlzIG5vdAorICAgICAgbWVhbnQgdG8gYmUgc3VwcG9ydGVkIGF0IGFsbCAtLSBpbiB0aGF0IGNhc2UgZWl0aGVyIGxlYXZlIHRoZSBvcGVyYXRvciAvCisgICAgICBtZXRob2QgdW5kZWZpbmVkIG9yLCBpZiBhIHN1YmNsYXNzLCBzZXQgaXQgdG8gOmRhdGE6YE5vbmVgLgorCisgICAuLiBub3RlOjoKKworICAgICAgYGBOb3RJbXBsZW1lbnRlZEVycm9yYGAgYW5kIGBgTm90SW1wbGVtZW50ZWRgYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwKKyAgICAgIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBzaW1pbGFyIG5hbWVzIGFuZCBwdXJwb3Nlcy4gIFNlZQorICAgICAgOmRhdGE6YE5vdEltcGxlbWVudGVkYCBmb3IgZGV0YWlscyBvbiB3aGVuIHRvIHVzZSBpdC4KIAogLi4gZXhjZXB0aW9uOjogT1NFcnJvcihbYXJnXSkKICAgICAgICAgICAgICAgIE9TRXJyb3IoZXJybm8sIHN0cmVycm9yWywgZmlsZW5hbWVbLCB3aW5lcnJvclssIGZpbGVuYW1lMl1dXSkKQEAgLTQzNiw2ICs0NTcsMTUgQEAKICAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiBvciBmdW5jdGlvbiBpcyBhcHBsaWVkIHRvIGFuIG9iamVjdCBvZiBpbmFwcHJvcHJpYXRlCiAgICB0eXBlLiAgVGhlIGFzc29jaWF0ZWQgdmFsdWUgaXMgYSBzdHJpbmcgZ2l2aW5nIGRldGFpbHMgYWJvdXQgdGhlIHR5cGUgbWlzbWF0Y2guCiAKKyAgIFRoaXMgZXhjZXB0aW9uIG1heSBiZSByYWlzZWQgYnkgdXNlciBjb2RlIHRvIGluZGljYXRlIHRoYXQgYW4gYXR0ZW1wdGVkCisgICBvcGVyYXRpb24gb24gYW4gb2JqZWN0IGlzIG5vdCBzdXBwb3J0ZWQsIGFuZCBpcyBub3QgbWVhbnQgdG8gYmUuIElmIGFuIG9iamVjdAorICAgaXMgbWVhbnQgdG8gc3VwcG9ydCBhIGdpdmVuIG9wZXJhdGlvbiBidXQgaGFzIG5vdCB5ZXQgcHJvdmlkZWQgYW4KKyAgIGltcGxlbWVudGF0aW9uLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpcyB0aGUgcHJvcGVyIGV4Y2VwdGlvbiB0byByYWlzZS4KKworICAgUGFzc2luZyBhcmd1bWVudHMgb2YgdGhlIHdyb25nIHR5cGUgKGUuZy4gcGFzc2luZyBhIDpjbGFzczpgbGlzdGAgd2hlbiBhbgorICAgOmNsYXNzOmBpbnRgIGlzIGV4cGVjdGVkKSBzaG91bGQgcmVzdWx0IGluIGEgOmV4YzpgVHlwZUVycm9yYCwgYnV0IHBhc3NpbmcKKyAgIGFyZ3VtZW50cyB3aXRoIHRoZSB3cm9uZyB2YWx1ZSAoZS5nLiBhIG51bWJlciBvdXRzaWRlIGV4cGVjdGVkIGJvdW5kYXJpZXMpCisgICBzaG91bGQgcmVzdWx0IGluIGEgOmV4YzpgVmFsdWVFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IFVuYm91bmRMb2NhbEVycm9yCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QgYi9Eb2MvbGlicmFyeS9mYXVsdGhhbmRsZXIucnN0CmluZGV4IGRlZWRlYTEuLmQwYzRjZDAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdApAQCAtNzAsNiArNzAsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9yIHRvIHRoaXMgZnVuY3Rpb24uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPbiBXaW5kb3dzLCBhIGhhbmRsZXIgZm9yIFdpbmRvd3MgZXhjZXB0aW9uIGlzIGFsc28gaW5zdGFsbGVkLgorCiAuLiBmdW5jdGlvbjo6IGRpc2FibGUoKQogCiAgICBEaXNhYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiB1bmluc3RhbGwgdGhlIHNpZ25hbCBoYW5kbGVycyBpbnN0YWxsZWQgYnkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QgYi9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CmluZGV4IGFhNGM1MjkuLjU4ODFmZWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdApAQCAtNzIsOSArNzIsOCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIENhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4yCi0gICAgICBUaGUgKmJ1ZnNpemUqIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KLQorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy42IDMuOAorICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIuCiAKIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHVzZSB0aGUgZ2xvYmFsIHN0YXRlIGNyZWF0ZWQgYnkgOmZ1bmM6YGZpbGVpbnB1dC5pbnB1dGA7CiBpZiB0aGVyZSBpcyBubyBhY3RpdmUgc3RhdGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgpAQCAtMTY3LDggKzE2Niw4IEBACiAgICAuLiBkZXByZWNhdGVkOjogMy40CiAgICAgICBUaGUgYGAnclUnYGAgYW5kIGBgJ1UnYGAgbW9kZXMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjIKLSAgICAgIFRoZSAqYnVmc2l6ZSogcGFyYW1ldGVyIGlzIG5vIGxvbmdlciB1c2VkLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy42IDMuOAorICAgICAgVGhlICpidWZzaXplKiBwYXJhbWV0ZXIuCiAKIAogKipPcHRpb25hbCBpbi1wbGFjZSBmaWx0ZXJpbmc6KiogaWYgdGhlIGtleXdvcmQgYXJndW1lbnQgYGBpbnBsYWNlPVRydWVgYCBpcwpAQCAtMTk1LDEwICsxOTQsMTQgQEAKICAgIFVzYWdlIGV4YW1wbGU6ICBgYGZpID0gZmlsZWlucHV0LkZpbGVJbnB1dChvcGVuaG9vaz1maWxlaW5wdXQuaG9va19jb21wcmVzc2VkKWBgCiAKIAotLi4gZnVuY3Rpb246OiBob29rX2VuY29kZWQoZW5jb2RpbmcpCisuLiBmdW5jdGlvbjo6IGhvb2tfZW5jb2RlZChlbmNvZGluZywgZXJyb3JzPU5vbmUpCiAKICAgIFJldHVybnMgYSBob29rIHdoaWNoIG9wZW5zIGVhY2ggZmlsZSB3aXRoIDpmdW5jOmBvcGVuYCwgdXNpbmcgdGhlIGdpdmVuCi0gICAqZW5jb2RpbmcqIHRvIHJlYWQgdGhlIGZpbGUuCisgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB0byByZWFkIHRoZSBmaWxlLgogCiAgICBVc2FnZSBleGFtcGxlOiBgYGZpID0KLSAgIGZpbGVpbnB1dC5GaWxlSW5wdXQob3Blbmhvb2s9ZmlsZWlucHV0Lmhvb2tfZW5jb2RlZCgiaXNvLTg4NTktMSIpKWBgCisgICBmaWxlaW5wdXQuRmlsZUlucHV0KG9wZW5ob29rPWZpbGVpbnB1dC5ob29rX2VuY29kZWQoInV0Zi04IiwKKyAgICJzdXJyb2dhdGVlc2NhcGUiKSlgYAorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIG9wdGlvbmFsICplcnJvcnMqIHBhcmFtZXRlci4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0IGIvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKaW5kZXggOWZjOWM3Yy4uYzAzYTlkMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKQEAgLTgzLDcgKzgzLDcgQEAKICAgICAgID4+PgogICAgICAgPj4+IHJlZ2V4ID0gZm5tYXRjaC50cmFuc2xhdGUoJyoudHh0JykKICAgICAgID4+PiByZWdleAotICAgICAgJy4qXFwudHh0XFxaKD9tcyknCisgICAgICAnKD9zOi4qXFwudHh0KVxcWicKICAgICAgID4+PiByZW9iaiA9IHJlLmNvbXBpbGUocmVnZXgpCiAgICAgICA+Pj4gcmVvYmoubWF0Y2goJ2Zvb2Jhci50eHQnKQogICAgICAgPF9zcmUuU1JFX01hdGNoIG9iamVjdDsgc3Bhbj0oMCwgMTApLCBtYXRjaD0nZm9vYmFyLnR4dCc+CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAppbmRleCAxZTM1ZjM3Li5iOGMxZGNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKQEAgLTk3LDYgKzk3LDEzIEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCiAgICBIZXJlJ3MgYSBzYW1wbGUgc2Vzc2lvbiB1c2luZyB0aGUgOmNsYXNzOmBGVFBfVExTYCBjbGFzczo6CiAKICAgICAgID4+PiBmdHBzID0gRlRQX1RMUygnZnRwLnB1cmVmdHBkLm9yZycpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAppbmRleCA1YWY5ZmU0Li5jNGZjZDk4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKQEAgLTI3MSw2ICsyNzEsOSBAQAogCiAgICBUaGUgY29tcGxleCB0eXBlIGlzIGRlc2NyaWJlZCBpbiA6cmVmOmB0eXBlc251bWVyaWNgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgorCiAKIC4uIGZ1bmN0aW9uOjogZGVsYXR0cihvYmplY3QsIG5hbWUpCiAKQEAgLTUzMSwxMSArNTM0LDE0IEBACiAKICAgIFRoZSBmbG9hdCB0eXBlIGlzIGRlc2NyaWJlZCBpbiA6cmVmOmB0eXBlc251bWVyaWNgLgogCi0gICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IF9fZm9ybWF0X18KLSAgICAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXQoKSAoYnVpbHQtaW4gZnVuY3Rpb24pCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgR3JvdXBpbmcgZGlnaXRzIHdpdGggdW5kZXJzY29yZXMgYXMgaW4gY29kZSBsaXRlcmFscyBpcyBhbGxvd2VkLgogCiAKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogX19mb3JtYXRfXworICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdCgpIChidWlsdC1pbiBmdW5jdGlvbikKKwogLi4gZnVuY3Rpb246OiBmb3JtYXQodmFsdWVbLCBmb3JtYXRfc3BlY10pCiAKICAgIENvbnZlcnQgYSAqdmFsdWUqIHRvIGEgImZvcm1hdHRlZCIgcmVwcmVzZW50YXRpb24sIGFzIGNvbnRyb2xsZWQgYnkKQEAgLTcwMiw2ICs3MDgsMTAgQEAKICAgICAgIDptZXRoOmBiYXNlLl9faW50X18gPG9iamVjdC5fX2ludF9fPmAgaW5zdGVhZCBvZiA6bWV0aDpgYmFzZS5fX2luZGV4X18KICAgICAgIDxvYmplY3QuX19pbmRleF9fPmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBHcm91cGluZyBkaWdpdHMgd2l0aCB1bmRlcnNjb3JlcyBhcyBpbiBjb2RlIGxpdGVyYWxzIGlzIGFsbG93ZWQuCisKKwogLi4gZnVuY3Rpb246OiBpc2luc3RhbmNlKG9iamVjdCwgY2xhc3NpbmZvKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgKm9iamVjdCogYXJndW1lbnQgaXMgYW4gaW5zdGFuY2Ugb2YgdGhlICpjbGFzc2luZm8qCkBAIC04NzgsMTEgKzg4OCwxMSBAQAogICAgT3BlbiAqZmlsZSogYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgOnRlcm06YGZpbGUgb2JqZWN0YC4gIElmIHRoZSBmaWxlCiAgICBjYW5ub3QgYmUgb3BlbmVkLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKLSAgICpmaWxlKiBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0IGdpdmluZyB0aGUgcGF0aG5hbWUgKGFic29sdXRlIG9yCi0gICByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkIG9yCi0gICBhbiBpbnRlZ2VyIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgZmlsZSB0byBiZSB3cmFwcGVkLiAgKElmIGEgZmlsZSBkZXNjcmlwdG9yCi0gICBpcyBnaXZlbiwgaXQgaXMgY2xvc2VkIHdoZW4gdGhlIHJldHVybmVkIEkvTyBvYmplY3QgaXMgY2xvc2VkLCB1bmxlc3MKLSAgICpjbG9zZWZkKiBpcyBzZXQgdG8gYGBGYWxzZWBgLikKKyAgICpmaWxlKiBpcyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBnaXZpbmcgdGhlIHBhdGhuYW1lIChhYnNvbHV0ZSBvcgorICAgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkpIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZCBvciBhbgorICAgaW50ZWdlciBmaWxlIGRlc2NyaXB0b3Igb2YgdGhlIGZpbGUgdG8gYmUgd3JhcHBlZC4gIChJZiBhIGZpbGUgZGVzY3JpcHRvciBpcworICAgZ2l2ZW4sIGl0IGlzIGNsb3NlZCB3aGVuIHRoZSByZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzICpjbG9zZWZkKgorICAgaXMgc2V0IHRvIGBgRmFsc2VgYC4pCiAKICAgICptb2RlKiBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIGZpbGUgaXMKICAgIG9wZW5lZC4gIEl0IGRlZmF1bHRzIHRvIGBgJ3InYGAgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0IG1vZGUuCkBAIC0xMDU1LDI3ICsxMDY1LDM4IEBACiAgICAod2hlcmUgOmZ1bmM6YG9wZW5gIGlzIGRlY2xhcmVkKSwgOm1vZDpgb3NgLCA6bW9kOmBvcy5wYXRoYCwgOm1vZDpgdGVtcGZpbGVgLAogICAgYW5kIDptb2Q6YHNodXRpbGAuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBUaGUgKm9wZW5lciogcGFyYW1ldGVyIHdhcyBhZGRlZC4KLSAgICAgIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgotICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQsIGl0IGlzIG5vdyBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KLSAgICAgIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiB0aGUgZmlsZSBvcGVuZWQgaW4gZXhjbHVzaXZlCi0gICAgICBjcmVhdGlvbiBtb2RlIChgYCd4J2BgKSBhbHJlYWR5IGV4aXN0cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIDMuMwogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAotICAgICAgVGhlIGZpbGUgaXMgbm93IG5vbi1pbmhlcml0YWJsZS4KKyAgICAgICAgICogVGhlICpvcGVuZXIqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisgICAgICAgICAqIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgorICAgICAgICAgKiA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCwgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorICAgICAgICAgKiA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQorICAgICAgICAgKiBjcmVhdGlvbiBtb2RlIChgYCd4J2BgKSBhbHJlYWR5IGV4aXN0cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy40CisKKyAgICAgICAgICogVGhlIGZpbGUgaXMgbm93IG5vbi1pbmhlcml0YWJsZS4KIAogICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy40IDQuMAogCiAgICAgICBUaGUgYGAnVSdgYCBtb2RlLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQotICAgICAgSWYgdGhlIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkIGFuZCB0aGUgc2lnbmFsIGhhbmRsZXIgZG9lcyBub3QgcmFpc2UgYW4KLSAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KLSAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy41CiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41Ci0gICAgICBUaGUgYGAnbmFtZXJlcGxhY2UnYGAgZXJyb3IgaGFuZGxlciB3YXMgYWRkZWQuCisgICAgICAgICAqIElmIHRoZSBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBhbmQgdGhlIHNpZ25hbCBoYW5kbGVyIGRvZXMgbm90IHJhaXNlIGFuCisgICAgICAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KKyAgICAgICAgICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCisgICAgICAgICAqIFRoZSBgYCduYW1lcmVwbGFjZSdgYCBlcnJvciBoYW5kbGVyIHdhcyBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgICAgMy42CisKKyAgICAgICAgICogU3VwcG9ydCBhZGRlZCB0byBhY2NlcHQgb2JqZWN0cyBpbXBsZW1lbnRpbmcgOmNsYXNzOmBvcy5QYXRoTGlrZWAuCisgICAgICAgICAqIE9uIFdpbmRvd3MsIG9wZW5pbmcgYSBjb25zb2xlIGJ1ZmZlciBtYXkgcmV0dXJuIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAgICAgOmNsYXNzOmBpby5SYXdJT0Jhc2VgIG90aGVyIHRoYW4gOmNsYXNzOmBpby5GaWxlSU9gLgogCiAuLiBmdW5jdGlvbjo6IG9yZChjKQogCkBAIC0xNDYwLDYgKzE0ODEsOSBAQAogCiAgICBTZWUgYWxzbyA6cmVmOmBibHRpbi10eXBlLW9iamVjdHNgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHR5cGVgIHdoaWNoIGRvbid0IG92ZXJyaWRlIGBgdHlwZS5fX25ld19fYGAgbWF5IG5vCisgICAgICBsb25nZXIgdXNlIHRoZSBvbmUtYXJndW1lbnQgZm9ybSB0byBnZXQgdGhlIHR5cGUgb2YgYW4gb2JqZWN0LgogCiAuLiBmdW5jdGlvbjo6IHZhcnMoW29iamVjdF0pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2dsb2IucnN0IGIvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKaW5kZXggMzI4ZWVmMy4uYThhNWE1MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2xvYi5yc3QKQEAgLTE0LDcgKzE0LDcgQEAKIGFjY29yZGluZyB0byB0aGUgcnVsZXMgdXNlZCBieSB0aGUgVW5peCBzaGVsbCwgYWx0aG91Z2ggcmVzdWx0cyBhcmUgcmV0dXJuZWQgaW4KIGFyYml0cmFyeSBvcmRlci4gIE5vIHRpbGRlIGV4cGFuc2lvbiBpcyBkb25lLCBidXQgYGAqYGAsIGBgP2BgLCBhbmQgY2hhcmFjdGVyCiByYW5nZXMgZXhwcmVzc2VkIHdpdGggYGBbXWBgIHdpbGwgYmUgY29ycmVjdGx5IG1hdGNoZWQuICBUaGlzIGlzIGRvbmUgYnkgdXNpbmcKLXRoZSA6ZnVuYzpgb3MubGlzdGRpcmAgYW5kIDpmdW5jOmBmbm1hdGNoLmZubWF0Y2hgIGZ1bmN0aW9ucyBpbiBjb25jZXJ0LCBhbmQKK3RoZSA6ZnVuYzpgb3Muc2NhbmRpcmAgYW5kIDpmdW5jOmBmbm1hdGNoLmZubWF0Y2hgIGZ1bmN0aW9ucyBpbiBjb25jZXJ0LCBhbmQKIG5vdCBieSBhY3R1YWxseSBpbnZva2luZyBhIHN1YnNoZWxsLiAgTm90ZSB0aGF0IHVubGlrZSA6ZnVuYzpgZm5tYXRjaC5mbm1hdGNoYCwKIDptb2Q6YGdsb2JgIHRyZWF0cyBmaWxlbmFtZXMgYmVnaW5uaW5nIHdpdGggYSBkb3QgKGBgLmBgKSBhcyBzcGVjaWFsIGNhc2VzLgogKEZvciB0aWxkZSBhbmQgc2hlbGwgdmFyaWFibGUgZXhwYW5zaW9uLCB1c2UgOmZ1bmM6YG9zLnBhdGguZXhwYW5kdXNlcmAgYW5kCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9ncnAucnN0IGIvRG9jL2xpYnJhcnkvZ3JwLnJzdAppbmRleCBhMzBlNjIyLi43NGRlM2Y5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9ncnAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dycC5yc3QKQEAgLTQzLDYgKzQzLDkgQEAKICAgIFJldHVybiB0aGUgZ3JvdXAgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiBudW1lcmljIGdyb3VwIElELiA6ZXhjOmBLZXlFcnJvcmAKICAgIGlzIHJhaXNlZCBpZiB0aGUgZW50cnkgYXNrZWQgZm9yIGNhbm5vdCBiZSBmb3VuZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgU2luY2UgUHl0aG9uIDMuNiB0aGUgc3VwcG9ydCBvZiBub24taW50ZWdlciBhcmd1bWVudHMgbGlrZSBmbG9hdHMgb3IKKyAgICAgIHN0cmluZ3MgaW4gOmZ1bmM6YGdldGdyZ2lkYCBpcyBkZXByZWNhdGVkLgogCiAuLiBmdW5jdGlvbjo6IGdldGdybmFtKG5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2d6aXAucnN0IGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKaW5kZXggNzkyZDU3YS4uOWM2YjcyMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ3ppcC5yc3QKQEAgLTU2LDYgKzU2LDggQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCwgYGAneGInYGAgYW5kIGBgJ3h0J2BgIG1vZGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogLi4gY2xhc3M6OiBHemlwRmlsZShmaWxlbmFtZT1Ob25lLCBtb2RlPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSwgZmlsZW9iaj1Ob25lLCBtdGltZT1Ob25lKQogCkBAIC0xNTEsNiArMTUzLDkgQEAKICAgICAgIFRoZSA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgIG1ldGhvZCBub3cgYWNjZXB0cyBhbiBhcmd1bWVudCBvZgogICAgICAgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLXRyZWUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMGRjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi10cmVlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLWJsYWtlMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1ZTQ0MQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2hhc2hsaWItYmxha2UyLnJzdApAQCAtMCwwICsxLDQ0NCBAQAorLi4gX2hhc2hsaWItYmxha2UyOgorCis6bW9kOmBoYXNobGliYCAtLS0gQkxBS0UyIGhhc2ggZnVuY3Rpb25zCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGhhc2hsaWIKKyAgIDpzeW5vcHNpczogQkxBS0UyIGhhc2ggZnVuY3Rpb24gZm9yIFB5dGhvbgorLi4gc2VjdGlvbmF1dGhvcjo6IERtaXRyeSBDaGVzdG55a2gKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBibGFrZTJiLCBibGFrZTJzCisKK0JMQUtFMl8gaXMgYSBjcnlwdG9ncmFwaGljIGhhc2ggZnVuY3Rpb24gZGVmaW5lZCBpbiBSRkMtNzY5M18gdGhhdCBjb21lcyBpbiB0d28KK2ZsYXZvcnM6CisKKyogKipCTEFLRTJiKiosIG9wdGltaXplZCBmb3IgNjQtYml0IHBsYXRmb3JtcyBhbmQgcHJvZHVjZXMgZGlnZXN0cyBvZiBhbnkgc2l6ZQorICBiZXR3ZWVuIDEgYW5kIDY0IGJ5dGVzLAorCisqICoqQkxBS0UycyoqLCBvcHRpbWl6ZWQgZm9yIDgtIHRvIDMyLWJpdCBwbGF0Zm9ybXMgYW5kIHByb2R1Y2VzIGRpZ2VzdHMgb2YgYW55CisgIHNpemUgYmV0d2VlbiAxIGFuZCAzMiBieXRlcy4KKworQkxBS0UyIHN1cHBvcnRzICoqa2V5ZWQgbW9kZSoqIChhIGZhc3RlciBhbmQgc2ltcGxlciByZXBsYWNlbWVudCBmb3IgSE1BQ18pLAorKipzYWx0ZWQgaGFzaGluZyoqLCAqKnBlcnNvbmFsaXphdGlvbioqLCBhbmQgKip0cmVlIGhhc2hpbmcqKi4KKworSGFzaCBvYmplY3RzIGZyb20gdGhpcyBtb2R1bGUgZm9sbG93IHRoZSBBUEkgb2Ygc3RhbmRhcmQgbGlicmFyeSdzCis6bW9kOmBoYXNobGliYCBvYmplY3RzLgorCisKK01vZHVsZQorPT09PT09CisKK0NyZWF0aW5nIGhhc2ggb2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05ldyBoYXNoIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgY2FsbGluZyBjb25zdHJ1Y3RvciBmdW5jdGlvbnM6CisKKworLi4gZnVuY3Rpb246OiBibGFrZTJiKGRhdGE9YicnLCBkaWdlc3Rfc2l6ZT02NCwga2V5PWInJywgc2FsdD1iJycsIFwKKyAgICAgICAgICAgICAgICBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsIG5vZGVfb2Zmc2V0PTAsICBcCisgICAgICAgICAgICAgICAgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKworLi4gZnVuY3Rpb246OiBibGFrZTJzKGRhdGE9YicnLCBkaWdlc3Rfc2l6ZT0zMiwga2V5PWInJywgc2FsdD1iJycsIFwKKyAgICAgICAgICAgICAgICBwZXJzb249YicnLCBmYW5vdXQ9MSwgZGVwdGg9MSwgbGVhZl9zaXplPTAsIG5vZGVfb2Zmc2V0PTAsICBcCisgICAgICAgICAgICAgICAgbm9kZV9kZXB0aD0wLCBpbm5lcl9zaXplPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKworCitUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGhhc2ggb2JqZWN0cyBmb3IgY2FsY3VsYXRpbmcKK0JMQUtFMmIgb3IgQkxBS0Uycy4gVGhleSBvcHRpb25hbGx5IHRha2UgdGhlc2UgZ2VuZXJhbCBwYXJhbWV0ZXJzOgorCisqICpkYXRhKjogaW5pdGlhbCBjaHVuayBvZiBkYXRhIHRvIGhhc2gsIHdoaWNoIG11c3QgYmUgaW50ZXJwcmV0YWJsZSBhcyBidWZmZXIKKyAgb2YgYnl0ZXMuCisKKyogKmRpZ2VzdF9zaXplKjogc2l6ZSBvZiBvdXRwdXQgZGlnZXN0IGluIGJ5dGVzLgorCisqICprZXkqOiBrZXkgZm9yIGtleWVkIGhhc2hpbmcgKHVwIHRvIDY0IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byAzMiBieXRlcyBmb3IKKyAgQkxBS0UycykuCisKKyogKnNhbHQqOiBzYWx0IGZvciByYW5kb21pemVkIGhhc2hpbmcgKHVwIHRvIDE2IGJ5dGVzIGZvciBCTEFLRTJiLCB1cCB0byA4CisgIGJ5dGVzIGZvciBCTEFLRTJzKS4KKworKiAqcGVyc29uKjogcGVyc29uYWxpemF0aW9uIHN0cmluZyAodXAgdG8gMTYgYnl0ZXMgZm9yIEJMQUtFMmIsIHVwIHRvIDggYnl0ZXMKKyAgZm9yIEJMQUtFMnMpLgorCitUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIGxpbWl0cyBmb3IgZ2VuZXJhbCBwYXJhbWV0ZXJzIChpbiBieXRlcyk6CisKKz09PT09PT0gPT09PT09PT09PT0gPT09PT09PT0gPT09PT09PT09ID09PT09PT09PT09CitIYXNoICAgIGRpZ2VzdF9zaXplIGxlbihrZXkpIGxlbihzYWx0KSBsZW4ocGVyc29uKQorPT09PT09PSA9PT09PT09PT09PSA9PT09PT09PSA9PT09PT09PT0gPT09PT09PT09PT0KK0JMQUtFMmIgICAgIDY0ICAgICAgICAgNjQgICAgICAgMTYgICAgICAgIDE2CitCTEFLRTJzICAgICAzMiAgICAgICAgIDMyICAgICAgIDggICAgICAgICA4Cis9PT09PT09ID09PT09PT09PT09ID09PT09PT09ID09PT09PT09PSA9PT09PT09PT09PQorCisuLiBub3RlOjoKKworICAgIEJMQUtFMiBzcGVjaWZpY2F0aW9uIGRlZmluZXMgY29uc3RhbnQgbGVuZ3RocyBmb3Igc2FsdCBhbmQgcGVyc29uYWxpemF0aW9uCisgICAgcGFyYW1ldGVycywgaG93ZXZlciwgZm9yIGNvbnZlbmllbmNlLCB0aGlzIGltcGxlbWVudGF0aW9uIGFjY2VwdHMgYnl0ZQorICAgIHN0cmluZ3Mgb2YgYW55IHNpemUgdXAgdG8gdGhlIHNwZWNpZmllZCBsZW5ndGguIElmIHRoZSBsZW5ndGggb2YgdGhlCisgICAgcGFyYW1ldGVyIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQsIGl0IGlzIHBhZGRlZCB3aXRoIHplcm9zLCB0aHVzLCBmb3IKKyAgICBleGFtcGxlLCBgYGInc2FsdCdgYCBhbmQgYGBiJ3NhbHRceDAwJ2BgIGlzIHRoZSBzYW1lIHZhbHVlLiAoVGhpcyBpcyBub3QKKyAgICB0aGUgY2FzZSBmb3IgKmtleSouKQorCitUaGVzZSBzaXplcyBhcmUgYXZhaWxhYmxlIGFzIG1vZHVsZSBgY29uc3RhbnRzYF8gZGVzY3JpYmVkIGJlbG93LgorCitDb25zdHJ1Y3RvciBmdW5jdGlvbnMgYWxzbyBhY2NlcHQgdGhlIGZvbGxvd2luZyB0cmVlIGhhc2hpbmcgcGFyYW1ldGVyczoKKworKiAqZmFub3V0KjogZmFub3V0ICgwIHRvIDI1NSwgMCBpZiB1bmxpbWl0ZWQsIDEgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqZGVwdGgqOiBtYXhpbWFsIGRlcHRoIG9mIHRyZWUgKDEgdG8gMjU1LCAyNTUgaWYgdW5saW1pdGVkLCAxIGluCisgIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmxlYWZfc2l6ZSo6IG1heGltYWwgYnl0ZSBsZW5ndGggb2YgbGVhZiAoMCB0byAyKiozMi0xLCAwIGlmIHVubGltaXRlZCBvciBpbgorICBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpub2RlX29mZnNldCo6IG5vZGUgb2Zmc2V0ICgwIHRvIDIqKjY0LTEgZm9yIEJMQUtFMmIsIDAgdG8gMioqNDgtMSBmb3IKKyAgQkxBS0UycywgMCBmb3IgdGhlIGZpcnN0LCBsZWZ0bW9zdCwgbGVhZiwgb3IgaW4gc2VxdWVudGlhbCBtb2RlKS4KKworKiAqbm9kZV9kZXB0aCo6IG5vZGUgZGVwdGggKDAgdG8gMjU1LCAwIGZvciBsZWF2ZXMsIG9yIGluIHNlcXVlbnRpYWwgbW9kZSkuCisKKyogKmlubmVyX3NpemUqOiBpbm5lciBkaWdlc3Qgc2l6ZSAoMCB0byA2NCBmb3IgQkxBS0UyYiwgMCB0byAzMiBmb3IKKyAgQkxBS0UycywgMCBpbiBzZXF1ZW50aWFsIG1vZGUpLgorCisqICpsYXN0X25vZGUqOiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgcHJvY2Vzc2VkIG5vZGUgaXMgdGhlIGxhc3QKKyAgb25lIChgRmFsc2VgIGZvciBzZXF1ZW50aWFsIG1vZGUpLgorCisuLiBmaWd1cmU6OiBoYXNobGliLWJsYWtlMi10cmVlLnBuZworICAgOmFsdDogRXhwbGFuYXRpb24gb2YgdHJlZSBtb2RlIHBhcmFtZXRlcnMuCisKK1NlZSBzZWN0aW9uIDIuMTAgaW4gYEJMQUtFMiBzcGVjaWZpY2F0aW9uCis8aHR0cHM6Ly9ibGFrZTIubmV0L2JsYWtlMl8yMDEzMDEyOS5wZGY+YF8gZm9yIGNvbXByZWhlbnNpdmUgcmV2aWV3IG9mIHRyZWUKK2hhc2hpbmcuCisKKworQ29uc3RhbnRzCistLS0tLS0tLS0KKworLi4gZGF0YTo6IGJsYWtlMmIuU0FMVF9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5TQUxUX1NJWkUKKworU2FsdCBsZW5ndGggKG1heGltdW0gbGVuZ3RoIGFjY2VwdGVkIGJ5IGNvbnN0cnVjdG9ycykuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuUEVSU09OX1NJWkUKKy4uIGRhdGE6OiBibGFrZTJzLlBFUlNPTl9TSVpFCisKK1BlcnNvbmFsaXphdGlvbiBzdHJpbmcgbGVuZ3RoIChtYXhpbXVtIGxlbmd0aCBhY2NlcHRlZCBieSBjb25zdHJ1Y3RvcnMpLgorCisKKy4uIGRhdGE6OiBibGFrZTJiLk1BWF9LRVlfU0laRQorLi4gZGF0YTo6IGJsYWtlMnMuTUFYX0tFWV9TSVpFCisKK01heGltdW0ga2V5IHNpemUuCisKKworLi4gZGF0YTo6IGJsYWtlMmIuTUFYX0RJR0VTVF9TSVpFCisuLiBkYXRhOjogYmxha2Uycy5NQVhfRElHRVNUX1NJWkUKKworTWF4aW11bSBkaWdlc3Qgc2l6ZSB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIGNhbiBvdXRwdXQuCisKKworRXhhbXBsZXMKKz09PT09PT09CisKK1NpbXBsZSBoYXNoaW5nCistLS0tLS0tLS0tLS0tLQorCitUbyBjYWxjdWxhdGUgaGFzaCBvZiBzb21lIGRhdGEsIHlvdSBzaG91bGQgZmlyc3QgY29uc3RydWN0IGEgaGFzaCBvYmplY3QgYnkKK2NhbGxpbmcgdGhlIGFwcHJvcHJpYXRlIGNvbnN0cnVjdG9yIGZ1bmN0aW9uICg6ZnVuYzpgYmxha2UyYmAgb3IKKzpmdW5jOmBibGFrZTJzYCksIHRoZW4gdXBkYXRlIGl0IHdpdGggdGhlIGRhdGEgYnkgY2FsbGluZyA6bWV0aDpgdXBkYXRlYCBvbiB0aGUKK29iamVjdCwgYW5kLCBmaW5hbGx5LCBnZXQgdGhlIGRpZ2VzdCBvdXQgb2YgdGhlIG9iamVjdCBieSBjYWxsaW5nCis6bWV0aDpgZGlnZXN0YCAob3IgOm1ldGg6YGhleGRpZ2VzdGAgZm9yIGhleC1lbmNvZGVkIHN0cmluZykuCisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKCkKKyAgICA+Pj4gaC51cGRhdGUoYidIZWxsbyB3b3JsZCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnNmZmODQzYmE2ODU4NDJhYTgyMDMxZDNmNTNjNDhiNjYzMjZkZjc2MzlhNjNkMTI4OTc0YzVjMTRmMzFhMGYzMzM0M2E4YzY1NTUxMTM0ZWQxYWUwZjJiMGRkMmJiNDk1ZGM4MTAzOWUzZWViMGFhMWJiMDM4OGJiZWFjMjkxODMnCisKKworQXMgYSBzaG9ydGN1dCwgeW91IGNhbiBwYXNzIHRoZSBmaXJzdCBjaHVuayBvZiBkYXRhIHRvIHVwZGF0ZSBkaXJlY3RseSB0byB0aGUKK2NvbnN0cnVjdG9yIGFzIHRoZSBmaXJzdCBhcmd1bWVudCAob3IgYXMgKmRhdGEqIGtleXdvcmQgYXJndW1lbnQpOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBibGFrZTJiKGInSGVsbG8gd29ybGQnKS5oZXhkaWdlc3QoKQorICAgICc2ZmY4NDNiYTY4NTg0MmFhODIwMzFkM2Y1M2M0OGI2NjMyNmRmNzYzOWE2M2QxMjg5NzRjNWMxNGYzMWEwZjMzMzQzYThjNjU1NTExMzRlZDFhZTBmMmIwZGQyYmI0OTVkYzgxMDM5ZTNlZWIwYWExYmIwMzg4YmJlYWMyOTE4MycKKworWW91IGNhbiBjYWxsIDptZXRoOmBoYXNoLnVwZGF0ZWAgYXMgbWFueSB0aW1lcyBhcyB5b3UgbmVlZCB0byBpdGVyYXRpdmVseQordXBkYXRlIHRoZSBoYXNoOgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBpdGVtcyA9IFtiJ0hlbGxvJywgYicgJywgYid3b3JsZCddCisgICAgPj4+IGggPSBibGFrZTJiKCkKKyAgICA+Pj4gZm9yIGl0ZW0gaW4gaXRlbXM6CisgICAgLi4uICAgICBoLnVwZGF0ZShpdGVtKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzZmZjg0M2JhNjg1ODQyYWE4MjAzMWQzZjUzYzQ4YjY2MzI2ZGY3NjM5YTYzZDEyODk3NGM1YzE0ZjMxYTBmMzMzNDNhOGM2NTU1MTEzNGVkMWFlMGYyYjBkZDJiYjQ5NWRjODEwMzllM2VlYjBhYTFiYjAzODhiYmVhYzI5MTgzJworCisKK1VzaW5nIGRpZmZlcmVudCBkaWdlc3Qgc2l6ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQkxBS0UyIGhhcyBjb25maWd1cmFibGUgc2l6ZSBvZiBkaWdlc3RzIHVwIHRvIDY0IGJ5dGVzIGZvciBCTEFLRTJiIGFuZCB1cCB0byAzMgorYnl0ZXMgZm9yIEJMQUtFMnMuIEZvciBleGFtcGxlLCB0byByZXBsYWNlIFNIQS0xIHdpdGggQkxBS0UyYiB3aXRob3V0IGNoYW5naW5nCit0aGUgc2l6ZSBvZiBvdXRwdXQsIHdlIGNhbiB0ZWxsIEJMQUtFMmIgdG8gcHJvZHVjZSAyMC1ieXRlIGRpZ2VzdHM6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTIwKQorICAgID4+PiBoLnVwZGF0ZShiJ1JlcGxhY2luZyBTSEExIHdpdGggdGhlIG1vcmUgc2VjdXJlIGZ1bmN0aW9uJykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICdkMjRmMjZjZjhkZTY2NDcyZDU4ZDRlMWIxNzc0YjRjOTE1OGIxZjRjJworICAgID4+PiBoLmRpZ2VzdF9zaXplCisgICAgMjAKKyAgICA+Pj4gbGVuKGguZGlnZXN0KCkpCisgICAgMjAKKworSGFzaCBvYmplY3RzIHdpdGggZGlmZmVyZW50IGRpZ2VzdCBzaXplcyBoYXZlIGNvbXBsZXRlbHkgZGlmZmVyZW50IG91dHB1dHMKKyhzaG9ydGVyIGhhc2hlcyBhcmUgKm5vdCogcHJlZml4ZXMgb2YgbG9uZ2VyIGhhc2hlcyk7IEJMQUtFMmIgYW5kIEJMQUtFMnMKK3Byb2R1Y2UgZGlmZmVyZW50IG91dHB1dHMgZXZlbiBpZiB0aGUgb3V0cHV0IGxlbmd0aCBpcyB0aGUgc2FtZToKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIsIGJsYWtlMnMKKyAgICA+Pj4gYmxha2UyYihkaWdlc3Rfc2l6ZT0xMCkuaGV4ZGlnZXN0KCkKKyAgICAnNmZhMWQ4ZmNmZDcxOTA0NmQ3NjInCisgICAgPj4+IGJsYWtlMmIoZGlnZXN0X3NpemU9MTEpLmhleGRpZ2VzdCgpCisgICAgJ2ViNmVjMTVkYWY5NTQ2MjU0ZjA4MDknCisgICAgPj4+IGJsYWtlMnMoZGlnZXN0X3NpemU9MTApLmhleGRpZ2VzdCgpCisgICAgJzFiZjIxYTk4Yzc4YTFjMzc2YWU5JworICAgID4+PiBibGFrZTJzKGRpZ2VzdF9zaXplPTExKS5oZXhkaWdlc3QoKQorICAgICc1NjcwMDRiZjk2ZTRhMjU3NzNlYmY0JworCisKK0tleWVkIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0KKworS2V5ZWQgaGFzaGluZyBjYW4gYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpb24gYXMgYSBmYXN0ZXIgYW5kIHNpbXBsZXIKK3JlcGxhY2VtZW50IGZvciBgSGFzaC1iYXNlZCBtZXNzYWdlIGF1dGhlbnRpY2F0aW9uIGNvZGUKKzxodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhc2gtYmFzZWRfbWVzc2FnZV9hdXRoZW50aWNhdGlvbl9jb2RlPmBfIChITUFDKS4KK0JMQUtFMiBjYW4gYmUgc2VjdXJlbHkgdXNlZCBpbiBwcmVmaXgtTUFDIG1vZGUgdGhhbmtzIHRvIHRoZQoraW5kaWZmZXJlbnRpYWJpbGl0eSBwcm9wZXJ0eSBpbmhlcml0ZWQgZnJvbSBCTEFLRS4KKworVGhpcyBleGFtcGxlIHNob3dzIGhvdyB0byBnZXQgYSAoaGV4LWVuY29kZWQpIDEyOC1iaXQgYXV0aGVudGljYXRpb24gY29kZSBmb3IKK21lc3NhZ2UgYGBiJ21lc3NhZ2UgZGF0YSdgYCB3aXRoIGtleSBgYGIncHNldWRvcmFuZG9tIGtleSdgYDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IGggPSBibGFrZTJiKGtleT1iJ3BzZXVkb3JhbmRvbSBrZXknLCBkaWdlc3Rfc2l6ZT0xNikKKyAgICA+Pj4gaC51cGRhdGUoYidtZXNzYWdlIGRhdGEnKQorICAgID4+PiBoLmhleGRpZ2VzdCgpCisgICAgJzNkMzYzZmY3NDAxZTAyMDI2ZjRhNDY4N2Q0ODYzY2VkJworCisKK0FzIGEgcHJhY3RpY2FsIGV4YW1wbGUsIGEgd2ViIGFwcGxpY2F0aW9uIGNhbiBzeW1tZXRyaWNhbGx5IHNpZ24gY29va2llcyBzZW50Cit0byB1c2VycyBhbmQgbGF0ZXIgdmVyaWZ5IHRoZW0gdG8gbWFrZSBzdXJlIHRoZXkgd2VyZW4ndCB0YW1wZXJlZCB3aXRoOjoKKworICAgID4+PiBmcm9tIGhhc2hsaWIgaW1wb3J0IGJsYWtlMmIKKyAgICA+Pj4gZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdAorICAgID4+PgorICAgID4+PiBTRUNSRVRfS0VZID0gYidwc2V1ZG9yYW5kb21seSBnZW5lcmF0ZWQgc2VydmVyIHNlY3JldCBrZXknCisgICAgPj4+IEFVVEhfU0laRSA9IDE2CisgICAgPj4+CisgICAgPj4+IGRlZiBzaWduKGNvb2tpZSk6CisgICAgLi4uICAgICBoID0gYmxha2UyYihkYXRhPWNvb2tpZSwgZGlnZXN0X3NpemU9QVVUSF9TSVpFLCBrZXk9U0VDUkVUX0tFWSkKKyAgICAuLi4gICAgIHJldHVybiBoLmhleGRpZ2VzdCgpCisgICAgPj4+CisgICAgPj4+IGNvb2tpZSA9IGIndXNlcjp2YXRyb2dhc2FjJworICAgID4+PiBzaWcgPSBzaWduKGNvb2tpZSkKKyAgICA+Pj4gcHJpbnQoInswfSx7MX0iLmZvcm1hdChjb29raWUuZGVjb2RlKCd1dGYtOCcpLCBzaWcpKQorICAgIHVzZXI6dmF0cm9nYXNhYywzNDljZjkwNDUzMzc2N2VkMmQ3NTUyNzlhOGRmODRkMAorICAgID4+PiBjb21wYXJlX2RpZ2VzdChjb29raWUsIHNpZykKKyAgICBUcnVlCisgICAgPj4+IGNvbXBhcmVfZGlnZXN0KGIndXNlcjpwb2xpY2FqYWMnLCBzaWcpCisgICAgRmFsc2UKKyAgICA+Pj4gY29tcGFyZV9kaWdlc3R5KGNvb2tpZSwgJzAxMDIwMzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZjAwJykKKyAgICBGYWxzZQorCitFdmVuIHRob3VnaCB0aGVyZSdzIGEgbmF0aXZlIGtleWVkIGhhc2hpbmcgbW9kZSwgQkxBS0UyIGNhbiwgb2YgY291cnNlLCBiZSB1c2VkCitpbiBITUFDIGNvbnN0cnVjdGlvbiB3aXRoIDptb2Q6YGhtYWNgIG1vZHVsZTo6CisKKyAgICA+Pj4gaW1wb3J0IGhtYWMsIGhhc2hsaWIKKyAgICA+Pj4gbSA9IGhtYWMubmV3KGInc2VjcmV0IGtleScsIGRpZ2VzdG1vZD1oYXNobGliLmJsYWtlMnMpCisgICAgPj4+IG0udXBkYXRlKGInbWVzc2FnZScpCisgICAgPj4+IG0uaGV4ZGlnZXN0KCkKKyAgICAnZTNjODEwMjg2OGQyOGI1ZmY4NWZjMzVkZGEwNzMyOTk3MGQxYTAxZTI3M2MzNzQ4MTMyNmZlMGM4NjFjODE0MicKKworCitSYW5kb21pemVkIGhhc2hpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitCeSBzZXR0aW5nICpzYWx0KiBwYXJhbWV0ZXIgdXNlcnMgY2FuIGludHJvZHVjZSByYW5kb21pemF0aW9uIHRvIHRoZSBoYXNoCitmdW5jdGlvbi4gUmFuZG9taXplZCBoYXNoaW5nIGlzIHVzZWZ1bCBmb3IgcHJvdGVjdGluZyBhZ2FpbnN0IGNvbGxpc2lvbiBhdHRhY2tzCitvbiB0aGUgaGFzaCBmdW5jdGlvbiB1c2VkIGluIGRpZ2l0YWwgc2lnbmF0dXJlcy4KKworICAgIFJhbmRvbWl6ZWQgaGFzaGluZyBpcyBkZXNpZ25lZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBvbmUgcGFydHksIHRoZSBtZXNzYWdlCisgICAgcHJlcGFyZXIsIGdlbmVyYXRlcyBhbGwgb3IgcGFydCBvZiBhIG1lc3NhZ2UgdG8gYmUgc2lnbmVkIGJ5IGEgc2Vjb25kCisgICAgcGFydHksIHRoZSBtZXNzYWdlIHNpZ25lci4gSWYgdGhlIG1lc3NhZ2UgcHJlcGFyZXIgaXMgYWJsZSB0byBmaW5kCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uIGNvbGxpc2lvbnMgKGkuZS4sIHR3byBtZXNzYWdlcyBwcm9kdWNpbmcgdGhlCisgICAgc2FtZSBoYXNoIHZhbHVlKSwgdGhlbiBzaGUgbWlnaHQgcHJlcGFyZSBtZWFuaW5nZnVsIHZlcnNpb25zIG9mIHRoZSBtZXNzYWdlCisgICAgdGhhdCB3b3VsZCBwcm9kdWNlIHRoZSBzYW1lIGhhc2ggdmFsdWUgYW5kIGRpZ2l0YWwgc2lnbmF0dXJlLCBidXQgd2l0aAorICAgIGRpZmZlcmVudCByZXN1bHRzIChlLmcuLCB0cmFuc2ZlcnJpbmcgJDEsMDAwLDAwMCB0byBhbiBhY2NvdW50LCByYXRoZXIgdGhhbgorICAgICQxMCkuIENyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRlc2lnbmVkIHdpdGggY29sbGlzaW9uCisgICAgcmVzaXN0YW5jZSBhcyBhIG1ham9yIGdvYWwsIGJ1dCB0aGUgY3VycmVudCBjb25jZW50cmF0aW9uIG9uIGF0dGFja2luZworICAgIGNyeXB0b2dyYXBoaWMgaGFzaCBmdW5jdGlvbnMgbWF5IHJlc3VsdCBpbiBhIGdpdmVuIGNyeXB0b2dyYXBoaWMgaGFzaAorICAgIGZ1bmN0aW9uIHByb3ZpZGluZyBsZXNzIGNvbGxpc2lvbiByZXNpc3RhbmNlIHRoYW4gZXhwZWN0ZWQuIFJhbmRvbWl6ZWQKKyAgICBoYXNoaW5nIG9mZmVycyB0aGUgc2lnbmVyIGFkZGl0aW9uYWwgcHJvdGVjdGlvbiBieSByZWR1Y2luZyB0aGUgbGlrZWxpaG9vZAorICAgIHRoYXQgYSBwcmVwYXJlciBjYW4gZ2VuZXJhdGUgdHdvIG9yIG1vcmUgbWVzc2FnZXMgdGhhdCB1bHRpbWF0ZWx5IHlpZWxkIHRoZQorICAgIHNhbWUgaGFzaCB2YWx1ZSBkdXJpbmcgdGhlIGRpZ2l0YWwgc2lnbmF0dXJlIGdlbmVyYXRpb24gcHJvY2VzcyDigJMgZXZlbiBpZgorICAgIGl0IGlzIHByYWN0aWNhbCB0byBmaW5kIGNvbGxpc2lvbnMgZm9yIHRoZSBoYXNoIGZ1bmN0aW9uLiBIb3dldmVyLCB0aGUgdXNlCisgICAgb2YgcmFuZG9taXplZCBoYXNoaW5nIG1heSByZWR1Y2UgdGhlIGFtb3VudCBvZiBzZWN1cml0eSBwcm92aWRlZCBieSBhCisgICAgZGlnaXRhbCBzaWduYXR1cmUgd2hlbiBhbGwgcG9ydGlvbnMgb2YgdGhlIG1lc3NhZ2UgYXJlIHByZXBhcmVkCisgICAgYnkgdGhlIHNpZ25lci4KKworICAgIChgTklTVCBTUC04MDAtMTA2ICJSYW5kb21pemVkIEhhc2hpbmcgZm9yIERpZ2l0YWwgU2lnbmF0dXJlcyIKKyAgICA8aHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL25pc3RwdWJzLzgwMC0xMDYvTklTVC1TUC04MDAtMTA2LnBkZj5gXykKKworSW4gQkxBS0UyIHRoZSBzYWx0IGlzIHByb2Nlc3NlZCBhcyBhIG9uZS10aW1lIGlucHV0IHRvIHRoZSBoYXNoIGZ1bmN0aW9uIGR1cmluZworaW5pdGlhbGl6YXRpb24sIHJhdGhlciB0aGFuIGFzIGFuIGlucHV0IHRvIGVhY2ggY29tcHJlc3Npb24gZnVuY3Rpb24uCisKKy4uIHdhcm5pbmc6OgorCisgICAgKlNhbHRlZCBoYXNoaW5nKiAob3IganVzdCBoYXNoaW5nKSB3aXRoIEJMQUtFMiBvciBhbnkgb3RoZXIgZ2VuZXJhbC1wdXJwb3NlCisgICAgY3J5cHRvZ3JhcGhpYyBoYXNoIGZ1bmN0aW9uLCBzdWNoIGFzIFNIQS0yNTYsIGlzIG5vdCBzdWl0YWJsZSBmb3IgaGFzaGluZworICAgIHBhc3N3b3Jkcy4gIFNlZSBgQkxBS0UyIEZBUSA8aHR0cHM6Ly9ibGFrZTIubmV0LyNxYT5gXyBmb3IgbW9yZQorICAgIGluZm9ybWF0aW9uLgorLi4KKworICAgID4+PiBpbXBvcnQgb3MKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+IG1zZyA9IGInc29tZSBtZXNzYWdlJworICAgID4+PiAjIENhbGN1bGF0ZSB0aGUgZmlyc3QgaGFzaCB3aXRoIGEgcmFuZG9tIHNhbHQuCisgICAgPj4+IHNhbHQxID0gb3MudXJhbmRvbShibGFrZTJiLlNBTFRfU0laRSkKKyAgICA+Pj4gaDEgPSBibGFrZTJiKHNhbHQ9c2FsdDEpCisgICAgPj4+IGgxLnVwZGF0ZShtc2cpCisgICAgPj4+ICMgQ2FsY3VsYXRlIHRoZSBzZWNvbmQgaGFzaCB3aXRoIGEgZGlmZmVyZW50IHJhbmRvbSBzYWx0LgorICAgID4+PiBzYWx0MiA9IG9zLnVyYW5kb20oYmxha2UyYi5TQUxUX1NJWkUpCisgICAgPj4+IGgyID0gYmxha2UyYihzYWx0PXNhbHQyKQorICAgID4+PiBoMi51cGRhdGUobXNnKQorICAgID4+PiAjIFRoZSBkaWdlc3RzIGFyZSBkaWZmZXJlbnQuCisgICAgPj4+IGgxLmRpZ2VzdCgpICE9IGgyLmRpZ2VzdCgpCisgICAgVHJ1ZQorCisKK1BlcnNvbmFsaXphdGlvbgorLS0tLS0tLS0tLS0tLS0tCisKK1NvbWV0aW1lcyBpdCBpcyB1c2VmdWwgdG8gZm9yY2UgaGFzaCBmdW5jdGlvbiB0byBwcm9kdWNlIGRpZmZlcmVudCBkaWdlc3RzIGZvcgordGhlIHNhbWUgaW5wdXQgZm9yIGRpZmZlcmVudCBwdXJwb3Nlcy4gUXVvdGluZyB0aGUgYXV0aG9ycyBvZiB0aGUgU2tlaW4gaGFzaAorZnVuY3Rpb246CisKKyAgICBXZSByZWNvbW1lbmQgdGhhdCBhbGwgYXBwbGljYXRpb24gZGVzaWduZXJzIHNlcmlvdXNseSBjb25zaWRlciBkb2luZyB0aGlzOworICAgIHdlIGhhdmUgc2VlbiBtYW55IHByb3RvY29scyB3aGVyZSBhIGhhc2ggdGhhdCBpcyBjb21wdXRlZCBpbiBvbmUgcGFydCBvZgorICAgIHRoZSBwcm90b2NvbCBjYW4gYmUgdXNlZCBpbiBhbiBlbnRpcmVseSBkaWZmZXJlbnQgcGFydCBiZWNhdXNlIHR3byBoYXNoCisgICAgY29tcHV0YXRpb25zIHdlcmUgZG9uZSBvbiBzaW1pbGFyIG9yIHJlbGF0ZWQgZGF0YSwgYW5kIHRoZSBhdHRhY2tlciBjYW4KKyAgICBmb3JjZSB0aGUgYXBwbGljYXRpb24gdG8gbWFrZSB0aGUgaGFzaCBpbnB1dHMgdGhlIHNhbWUuIFBlcnNvbmFsaXppbmcgZWFjaAorICAgIGhhc2ggZnVuY3Rpb24gdXNlZCBpbiB0aGUgcHJvdG9jb2wgc3VtbWFyaWx5IHN0b3BzIHRoaXMgdHlwZSBvZiBhdHRhY2suCisKKyAgICAoYFRoZSBTa2VpbiBIYXNoIEZ1bmN0aW9uIEZhbWlseQorICAgIDxodHRwOi8vd3d3LnNrZWluLWhhc2guaW5mby9zaXRlcy9kZWZhdWx0L2ZpbGVzL3NrZWluMS4zLnBkZj5gXywKKyAgICBwLiAyMSkKKworQkxBS0UyIGNhbiBiZSBwZXJzb25hbGl6ZWQgYnkgcGFzc2luZyBieXRlcyB0byB0aGUgKnBlcnNvbiogYXJndW1lbnQ6OgorCisgICAgPj4+IGZyb20gaGFzaGxpYiBpbXBvcnQgYmxha2UyYgorICAgID4+PiBGSUxFU19IQVNIX1BFUlNPTiA9IGInTXlBcHAgRmlsZXMgSGFzaCcKKyAgICA+Pj4gQkxPQ0tfSEFTSF9QRVJTT04gPSBiJ015QXBwIEJsb2NrIEhhc2gnCisgICAgPj4+IGggPSBibGFrZTJiKGRpZ2VzdF9zaXplPTMyLCBwZXJzb249RklMRVNfSEFTSF9QRVJTT04pCisgICAgPj4+IGgudXBkYXRlKGIndGhlIHNhbWUgY29udGVudCcpCisgICAgPj4+IGguaGV4ZGlnZXN0KCkKKyAgICAnMjBkOWNkMDI0ZDRmYjA4NmFhZTgxOWExNDMyZGQyNDY2ZGUxMjk0NzgzMWI3NWM1YTMwY2YyNjc2MDk1ZDNiNCcKKyAgICA+Pj4gaCA9IGJsYWtlMmIoZGlnZXN0X3NpemU9MzIsIHBlcnNvbj1CTE9DS19IQVNIX1BFUlNPTikKKyAgICA+Pj4gaC51cGRhdGUoYid0aGUgc2FtZSBjb250ZW50JykKKyAgICA+Pj4gaC5oZXhkaWdlc3QoKQorICAgICdjZjY4ZmI1NzYxYjljNDRlNzg3OGJmYjJjNGM5YWVhNTIyNjRhODBiNzUwMDVlNjU2MTk3NzhkZTU5ZjM4M2EzJworCitQZXJzb25hbGl6YXRpb24gdG9nZXRoZXIgd2l0aCB0aGUga2V5ZWQgbW9kZSBjYW4gYWxzbyBiZSB1c2VkIHRvIGRlcml2ZSBkaWZmZXJlbnQKK2tleXMgZnJvbSBhIHNpbmdsZSBvbmUuCisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJzCisgICAgPj4+IGZyb20gYmFzZTY0IGltcG9ydCBiNjRkZWNvZGUsIGI2NGVuY29kZQorICAgID4+PiBvcmlnX2tleSA9IGI2NGRlY29kZShiJ1JtNUVQSmFpNzJxY0szUkdCcFczdlBOZlp5NU9ab3RoWStrSFk2aDIxS009JykKKyAgICA+Pj4gZW5jX2tleSA9IGJsYWtlMnMoa2V5PW9yaWdfa2V5LCBwZXJzb249YidrRW5jcnlwdCcpLmRpZ2VzdCgpCisgICAgPj4+IG1hY19rZXkgPSBibGFrZTJzKGtleT1vcmlnX2tleSwgcGVyc29uPWIna01BQycpLmRpZ2VzdCgpCisgICAgPj4+IHByaW50KGI2NGVuY29kZShlbmNfa2V5KS5kZWNvZGUoJ3V0Zi04JykpCisgICAgcmJQYjE1Uy9aOXQrYWdmZm5vNXd1aEI3N1ZiUmk2RjlJdjJxSXhVN1dIdz0KKyAgICA+Pj4gcHJpbnQoYjY0ZW5jb2RlKG1hY19rZXkpLmRlY29kZSgndXRmLTgnKSkKKyAgICBHOUd0SEZFMVlsdVhZMXpXUGxZazFlL25XZnUwV1NFYjBLUmNqaERlUC9vPQorCitUcmVlIG1vZGUKKy0tLS0tLS0tLQorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBoYXNoaW5nIGEgbWluaW1hbCB0cmVlIHdpdGggdHdvIGxlYWYgbm9kZXM6OgorCisgICAgICAgMTAKKyAgICAgIC8gIFwKKyAgICAgMDAgIDAxCisKK1RoaXMgZXhhbXBsZSB1c2VzIDY0LWJ5dGUgaW50ZXJuYWwgZGlnZXN0cywgYW5kIHJldHVybnMgdGhlIDMyLWJ5dGUgZmluYWwKK2RpZ2VzdDo6CisKKyAgICA+Pj4gZnJvbSBoYXNobGliIGltcG9ydCBibGFrZTJiCisgICAgPj4+CisgICAgPj4+IEZBTk9VVCA9IDIKKyAgICA+Pj4gREVQVEggPSAyCisgICAgPj4+IExFQUZfU0laRSA9IDQwOTYKKyAgICA+Pj4gSU5ORVJfU0laRSA9IDY0CisgICAgPj4+CisgICAgPj4+IGJ1ZiA9IGJ5dGVhcnJheSg2MDAwKQorICAgID4+PgorICAgID4+PiAjIExlZnQgbGVhZgorICAgIC4uLiBoMDAgPSBibGFrZTJiKGJ1ZlswOkxFQUZfU0laRV0sIGZhbm91dD1GQU5PVVQsIGRlcHRoPURFUFRILAorICAgIC4uLiAgICAgICAgICAgICAgIGxlYWZfc2l6ZT1MRUFGX1NJWkUsIGlubmVyX3NpemU9SU5ORVJfU0laRSwKKyAgICAuLi4gICAgICAgICAgICAgICBub2RlX29mZnNldD0wLCBub2RlX2RlcHRoPTAsIGxhc3Rfbm9kZT1GYWxzZSkKKyAgICA+Pj4gIyBSaWdodCBsZWFmCisgICAgLi4uIGgwMSA9IGJsYWtlMmIoYnVmW0xFQUZfU0laRTpdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwKKyAgICAuLi4gICAgICAgICAgICAgICBsZWFmX3NpemU9TEVBRl9TSVpFLCBpbm5lcl9zaXplPUlOTkVSX1NJWkUsCisgICAgLi4uICAgICAgICAgICAgICAgbm9kZV9vZmZzZXQ9MSwgbm9kZV9kZXB0aD0wLCBsYXN0X25vZGU9VHJ1ZSkKKyAgICA+Pj4gIyBSb290IG5vZGUKKyAgICAuLi4gaDEwID0gYmxha2UyYihkaWdlc3Rfc2l6ZT0zMiwgZmFub3V0PUZBTk9VVCwgZGVwdGg9REVQVEgsCisgICAgLi4uICAgICAgICAgICAgICAgbGVhZl9zaXplPUxFQUZfU0laRSwgaW5uZXJfc2l6ZT1JTk5FUl9TSVpFLAorICAgIC4uLiAgICAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTAsIG5vZGVfZGVwdGg9MSwgbGFzdF9ub2RlPVRydWUpCisgICAgPj4+IGgxMC51cGRhdGUoaDAwLmRpZ2VzdCgpKQorICAgID4+PiBoMTAudXBkYXRlKGgwMS5kaWdlc3QoKSkKKyAgICA+Pj4gaDEwLmhleGRpZ2VzdCgpCisgICAgJzNhZDJhOWIzN2M2MDcwZTM3NGM3YThjNTA4ZmUyMGNhODZiNmVkNTRlMjg2ZTkzYTAzMThlOTVlODgxZGI1YWEnCisKK0NyZWRpdHMKKz09PT09PT0KKworQkxBS0UyXyB3YXMgZGVzaWduZWQgYnkgKkplYW4tUGhpbGlwcGUgQXVtYXNzb24qLCAqU2FtdWVsIE5ldmVzKiwgKlpvb2tvCitXaWxjb3gtTydIZWFybiosIGFuZCAqQ2hyaXN0aWFuIFdpbm5lcmxlaW4qIGJhc2VkIG9uIFNIQS0zXyBmaW5hbGlzdCBCTEFLRV8KK2NyZWF0ZWQgYnkgKkplYW4tUGhpbGlwcGUgQXVtYXNzb24qLCAqTHVjYSBIZW56ZW4qLCAqV2lsbGkgTWVpZXIqLCBhbmQKKypSYXBoYWVsIEMuLVcuIFBoYW4qLgorCitJdCB1c2VzIGNvcmUgYWxnb3JpdGhtIGZyb20gQ2hhQ2hhXyBjaXBoZXIgZGVzaWduZWQgYnkgKkRhbmllbCBKLiAgQmVybnN0ZWluKi4KKworVGhlIHN0ZGxpYiBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBvbiBweWJsYWtlMl8gbW9kdWxlLiBJdCB3YXMgd3JpdHRlbiBieQorKkRtaXRyeSBDaGVzdG55a2gqIGJhc2VkIG9uIEMgaW1wbGVtZW50YXRpb24gd3JpdHRlbiBieSAqU2FtdWVsIE5ldmVzKi4gVGhlCitkb2N1bWVudGF0aW9uIHdhcyBjb3BpZWQgZnJvbSBweWJsYWtlMl8gYW5kIHdyaXR0ZW4gYnkgKkRtaXRyeSBDaGVzdG55a2gqLgorCitUaGUgQyBjb2RlIHdhcyBwYXJ0bHkgcmV3cml0dGVuIGZvciBQeXRob24gYnkgKkNocmlzdGlhbiBIZWltZXMqLgorCitUaGUgZm9sbG93aW5nIHB1YmxpYyBkb21haW4gZGVkaWNhdGlvbiBhcHBsaWVzIGZvciBib3RoIEMgaGFzaCBmdW5jdGlvbgoraW1wbGVtZW50YXRpb24sIGV4dGVuc2lvbiBjb2RlLCBhbmQgdGhpcyBkb2N1bWVudGF0aW9uOgorCisgICBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvcihzKSBoYXZlIGRlZGljYXRlZCBhbGwgY29weXJpZ2h0CisgICBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8gdGhlIHB1YmxpYyBkb21haW4KKyAgIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0IGFueSB3YXJyYW50eS4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgQ0MwIFB1YmxpYyBEb21haW4gRGVkaWNhdGlvbiBhbG9uZworICAgd2l0aCB0aGlzIHNvZnR3YXJlLiBJZiBub3QsIHNlZQorICAgaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLy4KKworVGhlIGZvbGxvd2luZyBwZW9wbGUgaGF2ZSBoZWxwZWQgd2l0aCBkZXZlbG9wbWVudCBvciBjb250cmlidXRlZCB0aGVpciBjaGFuZ2VzCit0byB0aGUgcHJvamVjdCBhbmQgdGhlIHB1YmxpYyBkb21haW4gYWNjb3JkaW5nIHRvIHRoZSBDcmVhdGl2ZSBDb21tb25zIFB1YmxpYworRG9tYWluIERlZGljYXRpb24gMS4wIFVuaXZlcnNhbDoKKworKiAqQWxleGFuZHIgU29rb2xvdnNraXkqCisKKy4uIHNlZWFsc286OiBPZmZpY2lhbCBCTEFLRTIgd2Vic2l0ZTogaHR0cHM6Ly9ibGFrZTIubmV0CisKKy4uIF9SRkMtNzY5MzogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc2OTMKKy4uIF9CTEFLRTI6IGh0dHBzOi8vYmxha2UyLm5ldAorLi4gX0hNQUM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhc2gtYmFzZWRfbWVzc2FnZV9hdXRoZW50aWNhdGlvbl9jb2RlCisuLiBfQkxBS0U6IGh0dHBzOi8vMTMxMDAyLm5ldC9ibGFrZS8KKy4uIF9TSEEtMzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTklTVF9oYXNoX2Z1bmN0aW9uX2NvbXBldGl0aW9uCisuLiBfQ2hhQ2hhOiBodHRwczovL2NyLnlwLnRvL2NoYWNoYS5odG1sCisuLiBfcHlibGFrZTI6IGh0dHBzOi8vcHl0aG9uaG9zdGVkLm9yZy9weWJsYWtlMi8KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaGFzaGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAppbmRleCBhMmU5NmNhLi4yY2IzYzc4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9oYXNobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9oYXNobGliLnJzdApAQCAtNDQsOCArNDQsOCBAQAogLS0tLS0tLS0tLS0tLS0tCiAKIFRoZXJlIGlzIG9uZSBjb25zdHJ1Y3RvciBtZXRob2QgbmFtZWQgZm9yIGVhY2ggdHlwZSBvZiA6ZGZuOmBoYXNoYC4gIEFsbCByZXR1cm4KLWEgaGFzaCBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaW1wbGUgaW50ZXJmYWNlLiBGb3IgZXhhbXBsZTogdXNlIDpmdW5jOmBzaGExYCB0bwotY3JlYXRlIGEgU0hBMSBoYXNoIG9iamVjdC4gWW91IGNhbiBub3cgZmVlZCB0aGlzIG9iamVjdCB3aXRoIDp0ZXJtOmBieXRlcy1saWtlCithIGhhc2ggb2JqZWN0IHdpdGggdGhlIHNhbWUgc2ltcGxlIGludGVyZmFjZS4gRm9yIGV4YW1wbGU6IHVzZSA6ZnVuYzpgc2hhMjU2YCB0bworY3JlYXRlIGEgU0hBLTI1NiBoYXNoIG9iamVjdC4gWW91IGNhbiBub3cgZmVlZCB0aGlzIG9iamVjdCB3aXRoIDp0ZXJtOmBieXRlcy1saWtlCiBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gIChub3JtYWxseSA6Y2xhc3M6YGJ5dGVzYCkgdXNpbmcgdGhlIDptZXRoOmB1cGRhdGVgIG1ldGhvZC4KIEF0IGFueSBwb2ludCB5b3UgY2FuIGFzayBpdCBmb3IgdGhlIDpkZm46YGRpZ2VzdGAgb2YgdGhlCiBjb25jYXRlbmF0aW9uIG9mIHRoZSBkYXRhIGZlZCB0byBpdCBzbyBmYXIgdXNpbmcgdGhlIDptZXRoOmBkaWdlc3RgIG9yCkBAIC02NCwyMSArNjQsMzMgQEAKIC4uIGluZGV4Ojogc2luZ2xlOiBPcGVuU1NMOyAodXNlIGluIG1vZHVsZSBoYXNobGliKQogCiBDb25zdHJ1Y3RvcnMgZm9yIGhhc2ggYWxnb3JpdGhtcyB0aGF0IGFyZSBhbHdheXMgcHJlc2VudCBpbiB0aGlzIG1vZHVsZSBhcmUKLTpmdW5jOmBtZDVgLCA6ZnVuYzpgc2hhMWAsIDpmdW5jOmBzaGEyMjRgLCA6ZnVuYzpgc2hhMjU2YCwgOmZ1bmM6YHNoYTM4NGAsCi1hbmQgOmZ1bmM6YHNoYTUxMmAuIEFkZGl0aW9uYWwgYWxnb3JpdGhtcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUgZGVwZW5kaW5nIHVwb24KLXRoZSBPcGVuU1NMIGxpYnJhcnkgdGhhdCBQeXRob24gdXNlcyBvbiB5b3VyIHBsYXRmb3JtLgorOmZ1bmM6YHNoYTFgLCA6ZnVuYzpgc2hhMjI0YCwgOmZ1bmM6YHNoYTI1NmAsIDpmdW5jOmBzaGEzODRgLAorOmZ1bmM6YHNoYTUxMmAsIDpmdW5jOmBibGFrZTJiYCwgYW5kIDpmdW5jOmBibGFrZTJzYC4KKzpmdW5jOmBtZDVgIGlzIG5vcm1hbGx5IGF2YWlsYWJsZSBhcyB3ZWxsLCB0aG91Z2ggaXQKK21heSBiZSBtaXNzaW5nIGlmIHlvdSBhcmUgdXNpbmcgYSByYXJlICJGSVBTIGNvbXBsaWFudCIgYnVpbGQgb2YgUHl0aG9uLgorQWRkaXRpb25hbCBhbGdvcml0aG1zIG1heSBhbHNvIGJlIGF2YWlsYWJsZSBkZXBlbmRpbmcgdXBvbiB0aGUgT3BlblNTTAorbGlicmFyeSB0aGF0IFB5dGhvbiB1c2VzIG9uIHlvdXIgcGxhdGZvcm0uIE9uIG1vc3QgcGxhdGZvcm1zIHRoZQorOmZ1bmM6YHNoYTNfMjI0YCwgOmZ1bmM6YHNoYTNfMjU2YCwgOmZ1bmM6YHNoYTNfMzg0YCwgOmZ1bmM6YHNoYTNfNTEyYCwKKzpmdW5jOmBzaGFrZV8xMjhgLCA6ZnVuYzpgc2hha2VfMjU2YCBhcmUgYWxzbyBhdmFpbGFibGUuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgU0hBMyAoS2VjY2FrKSBhbmQgU0hBS0UgY29uc3RydWN0b3JzIDpmdW5jOmBzaGEzXzIyNGAsIDpmdW5jOmBzaGEzXzI1NmAsCisgICA6ZnVuYzpgc2hhM18zODRgLCA6ZnVuYzpgc2hhM181MTJgLCA6ZnVuYzpgc2hha2VfMTI4YCwgOmZ1bmM6YHNoYWtlXzI1NmAuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgOmZ1bmM6YGJsYWtlMmJgIGFuZCA6ZnVuYzpgYmxha2Uyc2Agd2VyZSBhZGRlZC4KIAogRm9yIGV4YW1wbGUsIHRvIG9idGFpbiB0aGUgZGlnZXN0IG9mIHRoZSBieXRlIHN0cmluZyBgYGInTm9ib2R5IGluc3BlY3RzIHRoZQogc3BhbW1pc2ggcmVwZXRpdGlvbidgYDo6CiAKICAgID4+PiBpbXBvcnQgaGFzaGxpYgotICAgPj4+IG0gPSBoYXNobGliLm1kNSgpCisgICA+Pj4gbSA9IGhhc2hsaWIuc2hhMjU2KCkKICAgID4+PiBtLnVwZGF0ZShiIk5vYm9keSBpbnNwZWN0cyIpCiAgICA+Pj4gbS51cGRhdGUoYiIgdGhlIHNwYW1taXNoIHJlcGV0aXRpb24iKQogICAgPj4+IG0uZGlnZXN0KCkKLSAgIGInXHhiYmRceDljXHg4M1x4ZGRceDFlXHhhNVx4YzlceGQ5XHhkZVx4YzlceGExXHg4ZFx4ZjBceGZmXHhlOScKKyAgIGInXHgwM1x4MWVceGRkfUFlXHgxNVx4OTNceGM1XHhmZVxcXHgwMG9ceGE1dSs3XHhmZFx4ZGZceGY3XHhiY05ceDg0Olx4YTZceGFmXHgwY1x4OTVceDBmS1x4OTRceDA2JwogICAgPj4+IG0uZGlnZXN0X3NpemUKLSAgIDE2CisgICAzMgogICAgPj4+IG0uYmxvY2tfc2l6ZQogICAgNjQKIApAQCAtMTA3LDcgKzExOSw5IEBACiAuLiBkYXRhOjogYWxnb3JpdGhtc19ndWFyYW50ZWVkCiAKICAgIEEgc2V0IGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBoYXNoIGFsZ29yaXRobXMgZ3VhcmFudGVlZCB0byBiZSBzdXBwb3J0ZWQKLSAgIGJ5IHRoaXMgbW9kdWxlIG9uIGFsbCBwbGF0Zm9ybXMuCisgICBieSB0aGlzIG1vZHVsZSBvbiBhbGwgcGxhdGZvcm1zLiAgTm90ZSB0aGF0ICdtZDUnIGlzIGluIHRoaXMgbGlzdCBkZXNwaXRlCisgICBzb21lIHVwc3RyZWFtIHZlbmRvcnMgb2ZmZXJpbmcgYW4gb2RkICJGSVBTIGNvbXBsaWFudCIgUHl0aG9uIGJ1aWxkIHRoYXQKKyAgIGV4Y2x1ZGVzIGl0LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTgxLDYgKzE5NSwyOCBAQAogICAgY29tcHV0ZSB0aGUgZGlnZXN0cyBvZiBkYXRhIHNoYXJpbmcgYSBjb21tb24gaW5pdGlhbCBzdWJzdHJpbmcuCiAKIAorU0hBS0UgdmFyaWFibGUgbGVuZ3RoIGRpZ2VzdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6ZnVuYzpgc2hha2VfMTI4YCBhbmQgOmZ1bmM6YHNoYWtlXzI1NmAgYWxnb3JpdGhtcyBwcm92aWRlIHZhcmlhYmxlCitsZW5ndGggZGlnZXN0cyB3aXRoIGxlbmd0aF9pbl9iaXRzLy8yIHVwIHRvIDEyOCBvciAyNTYgYml0cyBvZiBzZWN1cml0eS4KK0FzIHN1Y2gsIHRoZWlyIGRpZ2VzdCBtZXRob2RzIHJlcXVpcmUgYSBsZW5ndGguIE1heGltdW0gbGVuZ3RoIGlzIG5vdCBsaW1pdGVkCitieSB0aGUgU0hBS0UgYWxnb3JpdGhtLgorCisuLiBtZXRob2Q6OiBzaGFrZS5kaWdlc3QobGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIGRpZ2VzdCBvZiB0aGUgZGF0YSBwYXNzZWQgdG8gdGhlIDptZXRoOmB1cGRhdGVgIG1ldGhvZCBzbyBmYXIuCisgICBUaGlzIGlzIGEgYnl0ZXMgb2JqZWN0IG9mIHNpemUgYGBsZW5ndGhgYCB3aGljaCBtYXkgY29udGFpbiBieXRlcyBpbgorICAgdGhlIHdob2xlIHJhbmdlIGZyb20gMCB0byAyNTUuCisKKworLi4gbWV0aG9kOjogc2hha2UuaGV4ZGlnZXN0KGxlbmd0aCkKKworICAgTGlrZSA6bWV0aDpgZGlnZXN0YCBleGNlcHQgdGhlIGRpZ2VzdCBpcyByZXR1cm5lZCBhcyBhIHN0cmluZyBvYmplY3Qgb2YKKyAgIGRvdWJsZSBsZW5ndGgsIGNvbnRhaW5pbmcgb25seSBoZXhhZGVjaW1hbCBkaWdpdHMuICBUaGlzIG1heSBiZSB1c2VkIHRvCisgICBleGNoYW5nZSB0aGUgdmFsdWUgc2FmZWx5IGluIGVtYWlsIG9yIG90aGVyIG5vbi1iaW5hcnkgZW52aXJvbm1lbnRzLgorCisKIEtleSBkZXJpdmF0aW9uCiAtLS0tLS0tLS0tLS0tLQogCkBAIC0yMjEsNiArMjU3LDI5IEBACiAgICAgICBQeXRob24gaW1wbGVtZW50YXRpb24gdXNlcyBhbiBpbmxpbmUgdmVyc2lvbiBvZiA6bW9kOmBobWFjYC4gSXQgaXMgYWJvdXQKICAgICAgIHRocmVlIHRpbWVzIHNsb3dlciBhbmQgZG9lc24ndCByZWxlYXNlIHRoZSBHSUwuCiAKKy4uIGZ1bmN0aW9uOjogc2NyeXB0KHBhc3N3b3JkLCAqLCBzYWx0LCBuLCByLCBwLCBtYXhtZW09MCwgZGtsZW49NjQpCisKKyAgIFRoZSBmdW5jdGlvbiBwcm92aWRlcyBzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gYXMKKyAgIGRlZmluZWQgaW4gOnJmYzpgNzkxNGAuCisKKyAgICpwYXNzd29yZCogYW5kICpzYWx0KiBtdXN0IGJlIGJ5dGVzLWxpa2Ugb2JqZWN0cy4gQXBwbGljYXRpb25zIGFuZAorICAgbGlicmFyaWVzIHNob3VsZCBsaW1pdCAqcGFzc3dvcmQqIHRvIGEgc2Vuc2libGUgbGVuZ3RoIChlLmcuIDEwMjQpLiAqc2FsdCoKKyAgIHNob3VsZCBiZSBhYm91dCAxNiBvciBtb3JlIGJ5dGVzIGZyb20gYSBwcm9wZXIgc291cmNlLCBlLmcuIDpmdW5jOmBvcy51cmFuZG9tYC4KKworICAgKm4qIGlzIHRoZSBDUFUvTWVtb3J5IGNvc3QgZmFjdG9yLCAqciogdGhlIGJsb2NrIHNpemUsICpwKiBwYXJhbGxlbGl6YXRpb24KKyAgIGZhY3RvciBhbmQgKm1heG1lbSogbGltaXRzIG1lbW9yeSAoT3BlblNTTCAxLjEuMCBkZWZhdWx0cyB0byAzMiBNQikuCisgICAqZGtsZW4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIGRlcml2ZWQga2V5LgorCisgICBBdmFpbGFiaWxpdHk6IE9wZW5TU0wgMS4xKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCitCTEFLRTIKKy0tLS0tLQorCitCTEFLRTIgdGFrZXMgYWRkaXRpb25hbCBhcmd1bWVudHMsIHNlZSA6cmVmOmBoYXNobGliLWJsYWtlMmAuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIzMCw2ICsyODksOCBAQAogICAgTW9kdWxlIDptb2Q6YGJhc2U2NGAKICAgICAgIEFub3RoZXIgd2F5IHRvIGVuY29kZSBiaW5hcnkgaGFzaGVzIGZvciBub24tYmluYXJ5IGVudmlyb25tZW50cy4KIAorICAgU2VlIDpyZWY6YGhhc2hsaWItYmxha2UyYC4KKwogICAgaHR0cDovL2NzcmMubmlzdC5nb3YvcHVibGljYXRpb25zL2ZpcHMvZmlwczE4MC0yL2ZpcHMxODAtMi5wZGYKICAgICAgIFRoZSBGSVBTIDE4MC0yIHB1YmxpY2F0aW9uIG9uIFNlY3VyZSBIYXNoIEFsZ29yaXRobXMuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAppbmRleCBkODYzZmU5Li4xN2YyODlkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CkBAIC02OSwxMyArNjksNiBAQAogICAgbXVzdCBiZSBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlIHZhcmlvdXMgU1NMCiAgICBvcHRpb25zLgogCi0gICAqa2V5X2ZpbGUqIGFuZCAqY2VydF9maWxlKiBhcmUgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZQotICAgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0Ci0gICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQotICAgY2VydGlmaWNhdGVzIGZvciB5b3UuICBUaGUgKmNoZWNrX2hvc3RuYW1lKiBwYXJhbWV0ZXIgaXMgYWxzbyBkZXByZWNhdGVkOyB0aGUKLSAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYXR0cmlidXRlIG9mICpjb250ZXh0KiBzaG91bGQgYmUgdXNlZAotICAgaW5zdGVhZC4KLQogICAgUGxlYXNlIHJlYWQgOnJlZjpgc3NsLXNlY3VyaXR5YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBiZXN0IHByYWN0aWNlcy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKQEAgLTk1LDYgKzg4LDE3IEBACiAgICAgICA6ZnVuYzpgc3NsLl9jcmVhdGVfdW52ZXJpZmllZF9jb250ZXh0YCBjYW4gYmUgcGFzc2VkIHRvIHRoZSAqY29udGV4dCoKICAgICAgIHBhcmFtZXRlci4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleV9maWxlKiBhbmQgKmNlcnRfZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKworICAgICAgIFRoZSAqY2hlY2tfaG9zdG5hbWUqIHBhcmFtZXRlciBpcyBhbHNvIGRlcHJlY2F0ZWQ7IHRoZQorICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYXR0cmlidXRlIG9mICpjb250ZXh0KiBzaG91bGQKKyAgICAgICBiZSB1c2VkIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBIVFRQUmVzcG9uc2Uoc29jaywgZGVidWdsZXZlbD0wLCBtZXRob2Q9Tm9uZSwgdXJsPU5vbmUpCiAKQEAgLTIxNywzOSArMjIxLDYxIEBACiA6Y2xhc3M6YEhUVFBDb25uZWN0aW9uYCBpbnN0YW5jZXMgaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKIAotLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9KQorLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24ucmVxdWVzdChtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPXt9LCAqLCBcCisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1GYWxzZSkKIAogICAgVGhpcyB3aWxsIHNlbmQgYSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIEhUVFAgcmVxdWVzdAogICAgbWV0aG9kICptZXRob2QqIGFuZCB0aGUgc2VsZWN0b3IgKnVybCouCiAKICAgIElmICpib2R5KiBpcyBzcGVjaWZpZWQsIHRoZSBzcGVjaWZpZWQgZGF0YSBpcyBzZW50IGFmdGVyIHRoZSBoZWFkZXJzIGFyZQotICAgZmluaXNoZWQuICBJdCBtYXkgYmUgYSBzdHJpbmcsIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCwgYW4gb3BlbgotICAgOnRlcm06YGZpbGUgb2JqZWN0YCwgb3IgYW4gaXRlcmFibGUgb2YgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YFxzLiAgSWYKLSAgICpib2R5KiBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZCBhcyBJU08tODg1OS0xLCB0aGUgZGVmYXVsdCBmb3IgSFRUUC4gIElmCi0gICBpdCBpcyBhIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoZSBieXRlcyBhcmUgc2VudCBhcyBpcy4gIElmIGl0IGlzIGEgOnRlcm06YGZpbGUKLSAgIG9iamVjdGAsIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZSBpcyBzZW50OyB0aGlzIGZpbGUgb2JqZWN0IHNob3VsZCBzdXBwb3J0Ci0gICBhdCBsZWFzdCB0aGUgYGByZWFkKClgYCBtZXRob2QuICBJZiB0aGUgZmlsZSBvYmplY3QgaGFzIGEgYGBtb2RlYGAKLSAgIGF0dHJpYnV0ZSwgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGBgcmVhZCgpYGAgbWV0aG9kIHdpbGwgYmUgZW5jb2RlZCBhcwotICAgSVNPLTg4NTktMSB1bmxlc3MgdGhlIGBgbW9kZWBgIGF0dHJpYnV0ZSBjb250YWlucyB0aGUgc3Vic3RyaW5nIGBgYmBgLAotICAgb3RoZXJ3aXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5IGBgcmVhZCgpYGAgaXMgc2VudCBhcyBpcy4gIElmICpib2R5KiBpcyBhbgotICAgaXRlcmFibGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgaXRlcmFibGUgYXJlIHNlbnQgYXMgaXMgdW50aWwgdGhlIGl0ZXJhYmxlIGlzCi0gICBleGhhdXN0ZWQuCisgICBmaW5pc2hlZC4gIEl0IG1heSBiZSBhIDpjbGFzczpgc3RyYCwgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBhbgorICAgb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLCBvciBhbiBpdGVyYWJsZSBvZiA6Y2xhc3M6YGJ5dGVzYC4gIElmICpib2R5KgorICAgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgdGhlIGRlZmF1bHQgZm9yIEhUVFAuICBJZiBpdAorICAgaXMgYSBieXRlcy1saWtlIG9iamVjdCwgdGhlIGJ5dGVzIGFyZSBzZW50IGFzIGlzLiAgSWYgaXQgaXMgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YCwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGlzIHNlbnQ7IHRoaXMgZmlsZSBvYmplY3Qgc2hvdWxkCisgICBzdXBwb3J0IGF0IGxlYXN0IHRoZSBgYHJlYWQoKWBgIG1ldGhvZC4gIElmIHRoZSBmaWxlIG9iamVjdCBpcyBhbgorICAgaW5zdGFuY2Ugb2YgOmNsYXNzOmBpby5UZXh0SU9CYXNlYCwgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGBgcmVhZCgpYGAKKyAgIG1ldGhvZCB3aWxsIGJlIGVuY29kZWQgYXMgSVNPLTg4NTktMSwgb3RoZXJ3aXNlIHRoZSBkYXRhIHJldHVybmVkIGJ5CisgICBgYHJlYWQoKWBgIGlzIHNlbnQgYXMgaXMuICBJZiAqYm9keSogaXMgYW4gaXRlcmFibGUsIHRoZSBlbGVtZW50cyBvZiB0aGUKKyAgIGl0ZXJhYmxlIGFyZSBzZW50IGFzIGlzIHVudGlsIHRoZSBpdGVyYWJsZSBpcyBleGhhdXN0ZWQuCiAKLSAgIFRoZSAqaGVhZGVycyogYXJndW1lbnQgc2hvdWxkIGJlIGEgbWFwcGluZyBvZiBleHRyYSBIVFRQCi0gICBoZWFkZXJzIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC4KKyAgIFRoZSAqaGVhZGVycyogYXJndW1lbnQgc2hvdWxkIGJlIGEgbWFwcGluZyBvZiBleHRyYSBIVFRQIGhlYWRlcnMgdG8gc2VuZAorICAgd2l0aCB0aGUgcmVxdWVzdC4KIAotICAgSWYgKmhlYWRlcnMqIGRvZXMgbm90IGNvbnRhaW4gYSBDb250ZW50LUxlbmd0aCBpdGVtLCBvbmUgaXMgYWRkZWQKLSAgIGF1dG9tYXRpY2FsbHkgaWYgcG9zc2libGUuICBJZiAqYm9keSogaXMgYGBOb25lYGAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIKLSAgIGlzIHNldCB0byBgYDBgYCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKGBgUFVUYGAsIGBgUE9TVGBgLCBhbmQKLSAgIGBgUEFUQ0hgYCkuICBJZiAqYm9keSogaXMgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0LCB0aGUgQ29udGVudC1MZW5ndGgKLSAgIGhlYWRlciBpcyBzZXQgdG8gaXRzIGxlbmd0aC4gIElmICpib2R5KiBpcyBhIDp0ZXJtOmBmaWxlIG9iamVjdGAgYW5kIGl0Ci0gICB3b3JrcyB0byBjYWxsIDpmdW5jOmB+b3MuZnN0YXRgIG9uIHRoZSByZXN1bHQgb2YgaXRzIGBgZmlsZW5vKClgYCBtZXRob2QsCi0gICB0aGVuIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgc2V0IHRvIHRoZSBgYHN0X3NpemVgYCByZXBvcnRlZCBieSB0aGUKLSAgIGBgZnN0YXRgYCBjYWxsLiAgT3RoZXJ3aXNlIG5vIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpcyBhZGRlZC4KKyAgIElmICpoZWFkZXJzKiBjb250YWlucyBuZWl0aGVyIENvbnRlbnQtTGVuZ3RoIG5vciBUcmFuc2Zlci1FbmNvZGluZywKKyAgIGJ1dCB0aGVyZSBpcyBhIHJlcXVlc3QgYm9keSwgb25lIG9mIHRob3NlCisgICBoZWFkZXIgZmllbGRzIHdpbGwgYmUgYWRkZWQgYXV0b21hdGljYWxseS4gIElmCisgICAqYm9keSogaXMgYGBOb25lYGAsIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIgaXMgc2V0IHRvIGBgMGBgIGZvcgorICAgbWV0aG9kcyB0aGF0IGV4cGVjdCBhIGJvZHkgKGBgUFVUYGAsIGBgUE9TVGBgLCBhbmQgYGBQQVRDSGBgKS4gIElmCisgICAqYm9keSogaXMgYSBzdHJpbmcgb3IgYSBieXRlcy1saWtlIG9iamVjdCB0aGF0IGlzIG5vdCBhbHNvIGEKKyAgIDp0ZXJtOmBmaWxlIDxmaWxlIG9iamVjdD5gLCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGlzCisgICBzZXQgdG8gaXRzIGxlbmd0aC4gIEFueSBvdGhlciB0eXBlIG9mICpib2R5KiAoZmlsZXMKKyAgIGFuZCBpdGVyYWJsZXMgaW4gZ2VuZXJhbCkgd2lsbCBiZSBjaHVuay1lbmNvZGVkLCBhbmQgdGhlCisgICBUcmFuc2Zlci1FbmNvZGluZyBoZWFkZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHNldCBpbnN0ZWFkIG9mCisgICBDb250ZW50LUxlbmd0aC4KKworICAgVGhlICplbmNvZGVfY2h1bmtlZCogYXJndW1lbnQgaXMgb25seSByZWxldmFudCBpZiBUcmFuc2Zlci1FbmNvZGluZyBpcworICAgc3BlY2lmaWVkIGluICpoZWFkZXJzKi4gIElmICplbmNvZGVfY2h1bmtlZCogaXMgYGBGYWxzZWBgLCB0aGUKKyAgIEhUVFBDb25uZWN0aW9uIG9iamVjdCBhc3N1bWVzIHRoYXQgYWxsIGVuY29kaW5nIGlzIGhhbmRsZWQgYnkgdGhlCisgICBjYWxsaW5nIGNvZGUuICBJZiBpdCBpcyBgYFRydWVgYCwgdGhlIGJvZHkgd2lsbCBiZSBjaHVuay1lbmNvZGVkLgorCisgICAuLiBub3RlOjoKKyAgICAgIENodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIEhUVFAgcHJvdG9jb2wKKyAgICAgIHZlcnNpb24gMS4xLiAgVW5sZXNzIHRoZSBIVFRQIHNlcnZlciBpcyBrbm93biB0byBoYW5kbGUgSFRUUCAxLjEsCisgICAgICB0aGUgY2FsbGVyIG11c3QgZWl0aGVyIHNwZWNpZnkgdGhlIENvbnRlbnQtTGVuZ3RoLCBvciBtdXN0IHBhc3MgYQorICAgICAgOmNsYXNzOmBzdHJgIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0IHRoYXQgaXMgbm90IGFsc28gYSBmaWxlIGFzIHRoZQorICAgICAgYm9keSByZXByZXNlbnRhdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICAqYm9keSogY2FuIG5vdyBiZSBhbiBpdGVyYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIElmIG5laXRoZXIgQ29udGVudC1MZW5ndGggbm9yIFRyYW5zZmVyLUVuY29kaW5nIGFyZSBzZXQgaW4KKyAgICAgICpoZWFkZXJzKiwgZmlsZSBhbmQgaXRlcmFibGUgKmJvZHkqIG9iamVjdHMgYXJlIG5vdyBjaHVuay1lbmNvZGVkLgorICAgICAgVGhlICplbmNvZGVfY2h1bmtlZCogYXJndW1lbnQgd2FzIGFkZGVkLgorICAgICAgTm8gYXR0ZW1wdCBpcyBtYWRlIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1MZW5ndGggZm9yIGZpbGUKKyAgICAgIG9iamVjdHMuCisKIC4uIG1ldGhvZDo6IEhUVFBDb25uZWN0aW9uLmdldHJlc3BvbnNlKCkKIAogICAgU2hvdWxkIGJlIGNhbGxlZCBhZnRlciBhIHJlcXVlc3QgaXMgc2VudCB0byBnZXQgdGhlIHJlc3BvbnNlIGZyb20gdGhlIHNlcnZlci4KQEAgLTMzNSwxMyArMzYxLDMyIEBACiAgICBhbiBhcmd1bWVudC4KIAogCi0uLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5lbmRoZWFkZXJzKG1lc3NhZ2VfYm9keT1Ob25lKQorLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uZW5kaGVhZGVycyhtZXNzYWdlX2JvZHk9Tm9uZSwgKiwgZW5jb2RlX2NodW5rZWQ9RmFsc2UpCiAKICAgIFNlbmQgYSBibGFuayBsaW5lIHRvIHRoZSBzZXJ2ZXIsIHNpZ25hbGxpbmcgdGhlIGVuZCBvZiB0aGUgaGVhZGVycy4gVGhlCiAgICBvcHRpb25hbCAqbWVzc2FnZV9ib2R5KiBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwYXNzIGEgbWVzc2FnZSBib2R5Ci0gICBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuICBUaGUgbWVzc2FnZSBib2R5IHdpbGwgYmUgc2VudCBpbiB0aGUgc2FtZQotICAgcGFja2V0IGFzIHRoZSBtZXNzYWdlIGhlYWRlcnMgaWYgaXQgaXMgc3RyaW5nLCBvdGhlcndpc2UgaXQgaXMgc2VudCBpbiBhCi0gICBzZXBhcmF0ZSBwYWNrZXQuCisgICBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuCisKKyAgIElmICplbmNvZGVfY2h1bmtlZCogaXMgYGBUcnVlYGAsIHRoZSByZXN1bHQgb2YgZWFjaCBpdGVyYXRpb24gb2YKKyAgICptZXNzYWdlX2JvZHkqIHdpbGwgYmUgY2h1bmstZW5jb2RlZCBhcyBzcGVjaWZpZWQgaW4gOnJmYzpgNzIzMGAsCisgICBTZWN0aW9uIDMuMy4xLiAgSG93IHRoZSBkYXRhIGlzIGVuY29kZWQgaXMgZGVwZW5kZW50IG9uIHRoZSB0eXBlIG9mCisgICAqbWVzc2FnZV9ib2R5Ki4gIElmICptZXNzYWdlX2JvZHkqIGltcGxlbWVudHMgdGhlIDpyZWY6YGJ1ZmZlciBpbnRlcmZhY2UKKyAgIDxidWZmZXJvYmplY3RzPmAgdGhlIGVuY29kaW5nIHdpbGwgcmVzdWx0IGluIGEgc2luZ2xlIGNodW5rLgorICAgSWYgKm1lc3NhZ2VfYm9keSogaXMgYSA6Y2xhc3M6YGNvbGxlY3Rpb25zLkl0ZXJhYmxlYCwgZWFjaCBpdGVyYXRpb24KKyAgIG9mICptZXNzYWdlX2JvZHkqIHdpbGwgcmVzdWx0IGluIGEgY2h1bmsuICBJZiAqbWVzc2FnZV9ib2R5KiBpcyBhCisgICA6dGVybTpgZmlsZSBvYmplY3RgLCBlYWNoIGNhbGwgdG8gYGAucmVhZCgpYGAgd2lsbCByZXN1bHQgaW4gYSBjaHVuay4KKyAgIFRoZSBtZXRob2QgYXV0b21hdGljYWxseSBzaWduYWxzIHRoZSBlbmQgb2YgdGhlIGNodW5rLWVuY29kZWQgZGF0YQorICAgaW1tZWRpYXRlbHkgYWZ0ZXIgKm1lc3NhZ2VfYm9keSouCisKKyAgIC4uIG5vdGU6OiBEdWUgdG8gdGhlIGNodW5rZWQgZW5jb2Rpbmcgc3BlY2lmaWNhdGlvbiwgZW1wdHkgY2h1bmtzCisgICAgICB5aWVsZGVkIGJ5IGFuIGl0ZXJhdG9yIGJvZHkgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBjaHVuay1lbmNvZGVyLgorICAgICAgVGhpcyBpcyB0byBhdm9pZCBwcmVtYXR1cmUgdGVybWluYXRpb24gb2YgdGhlIHJlYWQgb2YgdGhlIHJlcXVlc3QgYnkKKyAgICAgIHRoZSB0YXJnZXQgc2VydmVyIGR1ZSB0byBtYWxmb3JtZWQgZW5jb2RpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQ2h1bmtlZCBlbmNvZGluZyBzdXBwb3J0LiAgVGhlICplbmNvZGVfY2h1bmtlZCogcGFyYW1ldGVyIHdhcworICAgICAgYWRkZWQuCisKIAogLi4gbWV0aG9kOjogSFRUUENvbm5lY3Rpb24uc2VuZChkYXRhKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKaW5kZXggYWU3ZmI5Ny4uZmI1YzFkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdApAQCAtOTgsOCArOTgsOCBAQAogCiAgICAuLiBhdHRyaWJ1dGU6OiByZmlsZQogCi0gICAgICBDb250YWlucyBhbiBpbnB1dCBzdHJlYW0sIHBvc2l0aW9uZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBvcHRpb25hbCBpbnB1dAotICAgICAgZGF0YS4KKyAgICAgIEFuIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIGlucHV0IHN0cmVhbSwgcmVhZHkgdG8gcmVhZCBmcm9tCisgICAgICB0aGUgc3RhcnQgb2YgdGhlIG9wdGlvbmFsIGlucHV0IGRhdGEuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IHdmaWxlCiAKQEAgLTEwNyw2ICsxMDcsOSBAQAogICAgICAgY2xpZW50LiBQcm9wZXIgYWRoZXJlbmNlIHRvIHRoZSBIVFRQIHByb3RvY29sIG11c3QgYmUgdXNlZCB3aGVuIHdyaXRpbmcgdG8KICAgICAgIHRoaXMgc3RyZWFtLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgVGhpcyBpcyBhbiA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCBzdHJlYW0uCisKICAgIDpjbGFzczpgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcmAgaGFzIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKIAogICAgLi4gYXR0cmlidXRlOjogc2VydmVyX3ZlcnNpb24KQEAgLTM2OSwxMCArMzcyLDkgQEAKIAogICAgSGFuZGxlciA9IGh0dHAuc2VydmVyLlNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcgogCi0gICBodHRwZCA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKCIiLCBQT1JUKSwgSGFuZGxlcikKLQotICAgcHJpbnQoInNlcnZpbmcgYXQgcG9ydCIsIFBPUlQpCi0gICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoIiIsIFBPUlQpLCBIYW5kbGVyKSBhcyBodHRwZDoKKyAgICAgICBwcmludCgic2VydmluZyBhdCBwb3J0IiwgUE9SVCkKKyAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogLi4gX2h0dHAtc2VydmVyLWNsaToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAppbmRleCA3NzFjYTQzLi4xNjMyZWI3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdApAQCAtMTAzLDYgKzEwMywxNCBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKnNzbF9jb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKwogVGhlIHNlY29uZCBzdWJjbGFzcyBhbGxvd3MgZm9yIGNvbm5lY3Rpb25zIGNyZWF0ZWQgYnkgYSBjaGlsZCBwcm9jZXNzOgogCiAKQEAgLTUwMCw2ICs1MDgsMTcgQEAKICAgICAgICAgIE0uc3RvcmUobnVtLCAnK0ZMQUdTJywgJ1xcRGVsZXRlZCcpCiAgICAgICBNLmV4cHVuZ2UoKQogCisgICAuLiBub3RlOjoKKworICAgICAgQ3JlYXRpbmcgZmxhZ3MgY29udGFpbmluZyAnXScgKGZvciBleGFtcGxlOiAiW3Rlc3RdIikgdmlvbGF0ZXMKKyAgICAgIDpyZmM6YDM1MDFgICh0aGUgSU1BUCBwcm90b2NvbCkuICBIb3dldmVyLCBpbWFwbGliIGhhcyBoaXN0b3JpY2FsbHkKKyAgICAgIGFsbG93ZWQgY3JlYXRpb24gb2Ygc3VjaCB0YWdzLCBhbmQgcG9wdWxhciBJTUFQIHNlcnZlcnMsIHN1Y2ggYXMgR21haWwsCisgICAgICBhY2NlcHQgYW5kIHByb2R1Y2Ugc3VjaCBmbGFncy4gIFRoZXJlIGFyZSBub24tUHl0aG9uIHByb2dyYW1zIHdoaWNoIGFsc28KKyAgICAgIGNyZWF0ZSBzdWNoIHRhZ3MuICBBbHRob3VnaCBpdCBpcyBhbiBSRkMgdmlvbGF0aW9uIGFuZCBJTUFQIGNsaWVudHMgYW5kCisgICAgICBzZXJ2ZXJzIGFyZSBzdXBwb3NlZCB0byBiZSBzdHJpY3QsIGltYXBsaWIgbm9uZXRoZWxlc3MgY29udGludWVzIHRvIGFsbG93CisgICAgICBzdWNoIHRhZ3MgdG8gYmUgY3JlYXRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByZWFzb25zLCBhbmQgYXMgb2YKKyAgICAgIHB5dGhvbiAzLjYsIGhhbmRsZXMgdGhlbSBpZiB0aGV5IGFyZSBzZW50IGZyb20gdGhlIHNlcnZlciwgc2luY2UgdGhpcworICAgICAgaW1wcm92ZXMgcmVhbC13b3JsZCBjb21wYXRpYmlsaXR5LgogCiAuLiBtZXRob2Q6OiBJTUFQNC5zdWJzY3JpYmUobWFpbGJveCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1naGRyLnJzdCBiL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKaW5kZXggZjExZjZkYy4uODAwZTkxOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1naGRyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CkBAIC0yMCw2ICsyMCw5IEBACiAgICBzdHJpbmcgZGVzY3JpYmluZyB0aGUgaW1hZ2UgdHlwZS4gIElmIG9wdGlvbmFsICpoKiBpcyBwcm92aWRlZCwgdGhlICpmaWxlbmFtZSoKICAgIGlzIGlnbm9yZWQgYW5kICpoKiBpcyBhc3N1bWVkIHRvIGNvbnRhaW4gdGhlIGJ5dGUgc3RyZWFtIHRvIHRlc3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiBUaGUgZm9sbG93aW5nIGltYWdlIHR5cGVzIGFyZSByZWNvZ25pemVkLCBhcyBsaXN0ZWQgYmVsb3cgd2l0aCB0aGUgcmV0dXJuIHZhbHVlCiBmcm9tIDpmdW5jOmB3aGF0YDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wLnJzdCBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKaW5kZXggOTgyOGJhNi4uY2NmNWY5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXAucnN0CkBAIC04NSw3ICs4NSw5IEBACiAgICAuLiBkZXByZWNhdGVkOjogMy4zCiAgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLmZpbmRfc3BlY2AgaW5zdGVhZCB1bmxlc3MgUHl0aG9uIDMuMwogICAgICAgY29tcGF0aWJpbGl0eSBpcyByZXF1aXJlZCwgaW4gd2hpY2ggY2FzZSB1c2UKLSAgICAgIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgLgorICAgICAgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAuIEZvciBleGFtcGxlIHVzYWdlIG9mIHRoZSBmb3JtZXIgY2FzZSwKKyAgICAgIHNlZSB0aGUgOnJlZjpgaW1wb3J0bGliLWV4YW1wbGVzYCBzZWN0aW9uIG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgCisgICAgICBkb2N1bWVudGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogbG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uKQpAQCAtMTEyLDkgKzExNCwxMiBAQAogICAgICAgSWYgcHJldmlvdXNseSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggOmZ1bmM6YGltcC5maW5kX21vZHVsZWAgdGhlbgogICAgICAgY29uc2lkZXIgdXNpbmcgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCwgb3RoZXJ3aXNlIHVzZSB0aGUgbG9hZGVyCiAgICAgICByZXR1cm5lZCBieSB0aGUgcmVwbGFjZW1lbnQgeW91IGNob3NlIGZvciA6ZnVuYzpgaW1wLmZpbmRfbW9kdWxlYC4gSWYgeW91Ci0gICAgICBjYWxsZWQgOmZ1bmM6YGltcC5sb2FkX21vZHVsZWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGRpcmVjdGx5IHRoZW4gdXNlIHRoZQotICAgICAgY2xhc3NlcyBpbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCwgZS5nLgotICAgICAgYGBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkubG9hZF9tb2R1bGUoKWBgLgorICAgICAgY2FsbGVkIDpmdW5jOmBpbXAubG9hZF9tb2R1bGVgIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBkaXJlY3RseSB3aXRoIGZpbGUKKyAgICAgIHBhdGggYXJndW1lbnRzIHRoZW4gdXNlIGEgY29tYmluYXRpb24gb2YKKyAgICAgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbmAgYW5kCisgICAgICA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlY2AuIFNlZSB0aGUgOnJlZjpgaW1wb3J0bGliLWV4YW1wbGVzYAorICAgICAgc2VjdGlvbiBvZiB0aGUgOm1vZDpgaW1wb3J0bGliYCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzIG9mIHRoZSB2YXJpb3VzCisgICAgICBhcHByb2FjaGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogbmV3X21vZHVsZShuYW1lKQpAQCAtMTIzLDcgKzEyOCw3IEBACiAgICBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKLSAgICAgIFVzZSA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIGluc3RlYWQuCisgICAgICBVc2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWNgIGluc3RlYWQuCiAKIAogLi4gZnVuY3Rpb246OiByZWxvYWQobW9kdWxlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKaW5kZXggY2I1MmY3NC4uZjYzYTE4ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgIG1vZHVsZSBhbmQgKnBhdGgqIHdpbGwgYmUgdGhlIHZhbHVlIG9mIDphdHRyOmBfX3BhdGhfX2AgZnJvbSB0aGUKICAgICAgIHBhcmVudCBwYWNrYWdlLiBJZiBhIHNwZWMgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KICAgICAgIFdoZW4gcGFzc2VkIGluLCBgYHRhcmdldGBgIGlzIGEgbW9kdWxlIG9iamVjdCB0aGF0IHRoZSBmaW5kZXIgbWF5Ci0gICAgICB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KKyAgICAgIHVzZSB0byBtYWtlIGEgbW9yZSBlZHVjYXRlZCBndWVzcyBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMzE3LDcgKzMxNyw3IEBACiAgICAgICB3aXRoaW4gdGhlIDp0ZXJtOmBwYXRoIGVudHJ5YCB0byB3aGljaCBpdCBpcyBhc3NpZ25lZC4gIElmIGEgc3BlYwogICAgICAgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4gIFdoZW4gcGFzc2VkIGluLCBgYHRhcmdldGBgCiAgICAgICBpcyBhIG1vZHVsZSBvYmplY3QgdGhhdCB0aGUgZmluZGVyIG1heSB1c2UgdG8gbWFrZSBhIG1vcmUgZWR1Y2F0ZWQKLSAgICAgIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCisgICAgICBndWVzcyBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIApAQCAtMzc5LDEwICszNzksMTQgQEAKIAogICAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCB0aGF0IGV4ZWN1dGVzIHRoZSBtb2R1bGUgaW4gaXRzIG93biBuYW1lc3BhY2UKICAgICAgICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG9yIHJlbG9hZGVkLiAgVGhlIG1vZHVsZSBzaG91bGQgYWxyZWFkeQotICAgICAgIGJlIGluaXRpYWxpemVkIHdoZW4gZXhlY19tb2R1bGUoKSBpcyBjYWxsZWQuCisgICAgICAgYmUgaW5pdGlhbGl6ZWQgd2hlbiBgYGV4ZWNfbW9kdWxlKClgYCBpcyBjYWxsZWQuIFdoZW4gdGhpcyBtZXRob2QgZXhpc3RzLAorICAgICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBiZSBkZWZpbmVkLgogCiAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKICAgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKIAogICAgICAgICBBIGxlZ2FjeSBtZXRob2QgZm9yIGxvYWRpbmcgYSBtb2R1bGUuIElmIHRoZSBtb2R1bGUgY2Fubm90IGJlCkBAIC05MzYsNiArOTQwLDEwIEBACiAgICAgICBDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHdoZXJlCiAgICAgICBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCBpcyBvcHRpb25hbC4KIAorICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgICBVc2UgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpbnN0ZWFkLgorCiAKIC4uIGNsYXNzOjogU291cmNlbGVzc0ZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCiAKQEAgLTk3NSw2ICs5ODMsMTAgQEAKICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgd2hlcmUKICAgIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIGlzIG9wdGlvbmFsLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgIFVzZSA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBFeHRlbnNpb25GaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQogCkBAIC0xMTM3LDYgKzExNDksOSBAQAogICAgICAgVGhlICpvcHRpbWl6YXRpb24qIHBhcmFtZXRlciB3YXMgYWRkZWQgYW5kIHRoZSAqZGVidWdfb3ZlcnJpZGUqIHBhcmFtZXRlcgogICAgICAgd2FzIGRlcHJlY2F0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMTE1MCw2ICsxMTY1LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGRlY29kZV9zb3VyY2Uoc291cmNlX2J5dGVzKQogCiAgICBEZWNvZGUgdGhlIGdpdmVuIGJ5dGVzIHJlcHJlc2VudGluZyBzb3VyY2UgY29kZSBhbmQgcmV0dXJuIGl0IGFzIGEgc3RyaW5nCkBAIC0xMTkyLDEyICsxMjEwLDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogbW9kdWxlX2Zyb21fc3BlYyhzcGVjKQogCi0gICBDcmVhdGUgYSBuZXcgbW9kdWxlIGJhc2VkIG9uICoqc3BlYyoqIGFuZCBgYHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoKWBgLgorICAgQ3JlYXRlIGEgbmV3IG1vZHVsZSBiYXNlZCBvbiAqKnNwZWMqKiBhbmQKKyAgIDptZXRoOmBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlIDxpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlPmAuCiAKLSAgIElmIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCB0aGVuIGFueQotICAgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuIEFsc28sIG5vIDpleGM6YEF0dHJpYnV0ZUVycm9yYAotICAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZyAqKnNwZWMqKiBvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZQotICAgb24gdGhlIG1vZHVsZS4KKyAgIElmIDptZXRoOmBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlIDxpbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlPmAKKyAgIGRvZXMgbm90IHJldHVybiBgYE5vbmVgYCwgdGhlbiBhbnkgcHJlLWV4aXN0aW5nIGF0dHJpYnV0ZXMgd2lsbCBub3QgYmUgcmVzZXQuCisgICBBbHNvLCBubyA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgdHJpZ2dlcmVkIHdoaWxlIGFjY2Vzc2luZworICAgKipzcGVjKiogb3Igc2V0dGluZyBhbiBhdHRyaWJ1dGUgb24gdGhlIG1vZHVsZS4KIAogICAgVGhpcyBmdW5jdGlvbiBpcyBwcmVmZXJyZWQgb3ZlciB1c2luZyA6Y2xhc3M6YHR5cGVzLk1vZHVsZVR5cGVgIHRvIGNyZWF0ZSBhCiAgICBuZXcgbW9kdWxlIGFzICoqc3BlYyoqIGlzIHVzZWQgdG8gc2V0IGFzIG1hbnkgaW1wb3J0LWNvbnRyb2xsZWQgYXR0cmlidXRlcyBvbgpAQCAtMTI1OSw3ICsxMjc4LDggQEAKIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIAotICAgQSA6dGVybTpgZGVjb3JhdG9yYCBmb3IgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB0byBzZXQgdGhlIDphdHRyOmBfX3BhY2thZ2VfX2AgYXR0cmlidXRlIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIElmIDphdHRyOmBfX3BhY2thZ2VfX2AKKyAgIEEgOnRlcm06YGRlY29yYXRvcmAgZm9yIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgdG8gc2V0IHRoZQorICAgOmF0dHI6YF9fcGFja2FnZV9fYCBhdHRyaWJ1dGUgb24gdGhlIHJldHVybmVkIG1vZHVsZS4gSWYgOmF0dHI6YF9fcGFja2FnZV9fYAogICAgaXMgc2V0IGFuZCBoYXMgYSB2YWx1ZSBvdGhlciB0aGFuIGBgTm9uZWBgIGl0IHdpbGwgbm90IGJlIGNoYW5nZWQuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjQKQEAgLTEyODQsNiArMTMwNCw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gY2xhc3M6OiBMYXp5TG9hZGVyKGxvYWRlcikKIAogICAgQSBjbGFzcyB3aGljaCBwb3N0cG9uZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgbG9hZGVyIG9mIGEgbW9kdWxlIHVudGlsIHRoZQpAQCAtMTI5MiwxMyArMTMxNSwxMiBAQAogICAgVGhpcyBjbGFzcyAqKm9ubHkqKiB3b3JrcyB3aXRoIGxvYWRlcnMgdGhhdCBkZWZpbmUKICAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGFzIGNvbnRyb2wgb3ZlciB3aGF0IG1vZHVsZSB0eXBlCiAgICBpcyB1c2VkIGZvciB0aGUgbW9kdWxlIGlzIHJlcXVpcmVkLiBGb3IgdGhvc2Ugc2FtZSByZWFzb25zLCB0aGUgbG9hZGVyJ3MKLSAgIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbWV0aG9kIHdpbGwgYmUgaWdub3JlZCAoaS5lLiwgdGhlCi0gICBsb2FkZXIncyBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGBgTm9uZWBgOyB0aGlzIGV4Y2x1ZGVzCi0gICA6Y2xhc3M6YEJ1aWx0aW5JbXBvcnRlcmAgYW5kIDpjbGFzczpgRXh0ZW5zaW9uRmlsZUxvYWRlcmApLiBGaW5hbGx5LAotICAgbW9kdWxlcyB3aGljaCBzdWJzdGl0dXRlIHRoZSBvYmplY3QgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsCi0gICBub3Qgd29yayBhcyB0aGVyZSBpcyBubyB3YXkgdG8gcHJvcGVybHkgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMKLSAgIHRocm91Z2hvdXQgdGhlIGludGVycHJldGVyIHNhZmVseTsgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYQotICAgc3Vic3RpdHV0aW9uIGlzIGRldGVjdGVkLgorICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtZXRob2QgbXVzdCByZXR1cm4gYGBOb25lYGAgb3IgYQorICAgdHlwZSBmb3Igd2hpY2ggaXRzIGBgX19jbGFzc19fYGAgYXR0cmlidXRlIGNhbiBiZSBtdXRhdGVkIGFsb25nIHdpdGggbm90CisgICB1c2luZyA6dGVybTpgc2xvdHMgPF9fc2xvdHNfXz5gLiBGaW5hbGx5LCBtb2R1bGVzIHdoaWNoIHN1YnN0aXR1dGUgdGhlIG9iamVjdAorICAgcGxhY2VkIGludG8gOmF0dHI6YHN5cy5tb2R1bGVzYCB3aWxsIG5vdCB3b3JrIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwcm9wZXJseQorICAgcmVwbGFjZSB0aGUgbW9kdWxlIHJlZmVyZW5jZXMgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgc2FmZWx5OworICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIHN1Y2ggYSBzdWJzdGl0dXRpb24gaXMgZGV0ZWN0ZWQuCiAKICAgIC4uIG5vdGU6OgogICAgICAgRm9yIHByb2plY3RzIHdoZXJlIHN0YXJ0dXAgdGltZSBpcyBjcml0aWNhbCwgdGhpcyBjbGFzcyBhbGxvd3MgZm9yCkBAIC0xMzA5LDYgKzEzMzEsMTEgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBCZWdhbiBjYWxsaW5nIDptZXRoOmB+aW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAsIHJlbW92aW5nIHRoZQorICAgICAgY29tcGF0aWJpbGl0eSB3YXJuaW5nIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyYCBhbmQKKyAgICAgIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyYC4KKwogICAgLi4gY2xhc3NtZXRob2Q6OiBmYWN0b3J5KGxvYWRlcikKIAogICAgICAgQSBzdGF0aWMgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBjYWxsYWJsZSB0aGF0IGNyZWF0ZXMgYSBsYXp5IGxvYWRlci4gVGhpcwpAQCAtMTMyMCwzICsxMzQ3LDEzOSBAQAogICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIKICAgICAgICAgbGF6eV9sb2FkZXIgPSBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyLmZhY3RvcnkobG9hZGVyKQogICAgICAgICBmaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIocGF0aCwgKGxhenlfbG9hZGVyLCBzdWZmaXhlcykpCisKKy4uIF9pbXBvcnRsaWItZXhhbXBsZXM6CisKK0V4YW1wbGVzCistLS0tLS0tLQorCitJbXBvcnRpbmcgcHJvZ3JhbW1hdGljYWxseQorJycnJycnJycnJycnJycnJycnJycnJycnJycKKworVG8gcHJvZ3JhbW1hdGljYWxseSBpbXBvcnQgYSBtb2R1bGUsIHVzZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliCisKKyAgaXRlcnRvb2xzID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2l0ZXJ0b29scycpCisKKworQ2hlY2tpbmcgaWYgYSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkCisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworSWYgeW91IG5lZWQgdG8gZmluZCBvdXQgaWYgYSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIHdpdGhvdXQgYWN0dWFsbHkgZG9pbmcgdGhlCitpbXBvcnQsIHRoZW4geW91IHNob3VsZCB1c2UgOmZ1bmM6YGltcG9ydGxpYi51dGlsLmZpbmRfc3BlY2AuCis6OgorCisgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorICBpbXBvcnQgc3lzCisKKyAgIyBGb3IgaWxsdXN0cmF0aXZlIHB1cnBvc2VzLgorICBuYW1lID0gJ2l0ZXJ0b29scycKKworICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgIHByaW50KCJjYW4ndCBmaW5kIHRoZSBpdGVydG9vbHMgbW9kdWxlIikKKyAgZWxzZToKKyAgICAgICMgSWYgeW91IGNob3NlIHRvIHBlcmZvcm0gdGhlIGFjdHVhbCBpbXBvcnQgLi4uCisgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjKHNwZWMpCisgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICAgICAjIEFkZGluZyB0aGUgbW9kdWxlIHRvIHN5cy5tb2R1bGVzIGlzIG9wdGlvbmFsLgorICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKworCitJbXBvcnRpbmcgYSBzb3VyY2UgZmlsZSBkaXJlY3RseQorJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworVG8gaW1wb3J0IGEgUHl0aG9uIHNvdXJjZSBmaWxlIGRpcmVjdGx5LCB1c2UgdGhlIGZvbGxvd2luZyByZWNpcGUKKyhQeXRob24gMy40IGFuZCBuZXdlciBvbmx5KTo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi51dGlsCisgIGltcG9ydCBzeXMKKworICAjIEZvciBpbGx1c3RyYXRpdmUgcHVycG9zZXMuCisgIGltcG9ydCB0b2tlbml6ZQorICBmaWxlX3BhdGggPSB0b2tlbml6ZS5fX2ZpbGVfXworICBtb2R1bGVfbmFtZSA9IHRva2VuaXplLl9fbmFtZV9fCisKKyAgc3BlYyA9IGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKG1vZHVsZV9uYW1lLCBmaWxlX3BhdGgpCisgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAjIE9wdGlvbmFsOyBvbmx5IG5lY2Vzc2FyeSBpZiB5b3Ugd2FudCB0byBiZSBhYmxlIHRvIGltcG9ydCB0aGUgbW9kdWxlCisgICMgYnkgbmFtZSBsYXRlci4KKyAgc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdID0gbW9kdWxlCisKKworU2V0dGluZyB1cCBhbiBpbXBvcnRlcgorJycnJycnJycnJycnJycnJycnJycnJworCitGb3IgZGVlcCBjdXN0b21pemF0aW9ucyBvZiBpbXBvcnQsIHlvdSB0eXBpY2FsbHkgd2FudCB0byBpbXBsZW1lbnQgYW4KKzp0ZXJtOmBpbXBvcnRlcmAuIFRoaXMgbWVhbnMgbWFuYWdpbmcgYm90aCB0aGUgOnRlcm06YGZpbmRlcmAgYW5kIDp0ZXJtOmBsb2FkZXJgCitzaWRlIG9mIHRoaW5ncy4gRm9yIGZpbmRlcnMgdGhlcmUgYXJlIHR3byBmbGF2b3VycyB0byBjaG9vc2UgZnJvbSBkZXBlbmRpbmcgb24KK3lvdXIgbmVlZHM6IGEgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIG9yIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gVGhlCitmb3JtZXIgaXMgd2hhdCB5b3Ugd291bGQgcHV0IG9uIDphdHRyOmBzeXMubWV0YV9wYXRoYCB3aGlsZSB0aGUgbGF0dGVyIGlzIHdoYXQKK3lvdSBjcmVhdGUgdXNpbmcgYSA6dGVybTpgcGF0aCBlbnRyeSBob29rYCBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgIHdoaWNoIHdvcmtzCit3aXRoIDphdHRyOmBzeXMucGF0aGAgZW50cmllcyB0byBwb3RlbnRpYWxseSBjcmVhdGUgYSBmaW5kZXIuIFRoaXMgZXhhbXBsZSB3aWxsCitzaG93IHlvdSBob3cgdG8gcmVnaXN0ZXIgeW91ciBvd24gaW1wb3J0ZXJzIHNvIHRoYXQgaW1wb3J0IHdpbGwgdXNlIHRoZW0gKGZvcgorY3JlYXRpbmcgYW4gaW1wb3J0ZXIgZm9yIHlvdXJzZWxmLCByZWFkIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYXBwcm9wcmlhdGUKK2NsYXNzZXMgZGVmaW5lZCB3aXRoaW4gdGhpcyBwYWNrYWdlKTo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKKyAgaW1wb3J0IHN5cworCisgICMgRm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3NlcyBvbmx5LgorICBTcGFtTWV0YVBhdGhGaW5kZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIKKyAgU3BhbVBhdGhFbnRyeUZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcgorICBsb2FkZXJfZGV0YWlscyA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKQorCisgICMgU2V0dGluZyB1cCBhIG1ldGEgcGF0aCBmaW5kZXIuCisgICMgTWFrZSBzdXJlIHRvIHB1dCB0aGUgZmluZGVyIGluIHRoZSBwcm9wZXIgbG9jYXRpb24gaW4gdGhlIGxpc3QgaW4gdGVybXMgb2YKKyAgIyBwcmlvcml0eS4KKyAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoU3BhbU1ldGFQYXRoRmluZGVyKQorCisgICMgU2V0dGluZyB1cCBhIHBhdGggZW50cnkgZmluZGVyLgorICAjIE1ha2Ugc3VyZSB0byBwdXQgdGhlIHBhdGggaG9vayBpbiB0aGUgcHJvcGVyIGxvY2F0aW9uIGluIHRoZSBsaXN0IGluIHRlcm1zCisgICMgb2YgcHJpb3JpdHkuCisgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChTcGFtUGF0aEVudHJ5RmluZGVyLnBhdGhfaG9vayhsb2FkZXJfZGV0YWlscykpCisKKworQXBwcm94aW1hdGluZyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgCisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycKKworSW1wb3J0IGl0c2VsZiBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24gY29kZSwgbWFraW5nIGl0IHBvc3NpYmxlIHRvCitleHBvc2UgbW9zdCBvZiB0aGUgaW1wb3J0IG1hY2hpbmVyeSB0aHJvdWdoIGltcG9ydGxpYi4gVGhlIGZvbGxvd2luZworaGVscHMgaWxsdXN0cmF0ZSB0aGUgdmFyaW91cyBBUElzIHRoYXQgaW1wb3J0bGliIGV4cG9zZXMgYnkgcHJvdmlkaW5nIGFuCithcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbiBvZgorOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCAoUHl0aG9uIDMuNCBhbmQgbmV3ZXIgZm9yIHRoZSBpbXBvcnRsaWIgdXNhZ2UsCitQeXRob24gMy42IGFuZCBuZXdlciBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUpLgorOjoKKworICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyAgaW1wb3J0IHN5cworCisgIGRlZiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSk6CisgICAgICAiIiJBbiBhcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbiBvZiBpbXBvcnQuIiIiCisgICAgICBhYnNvbHV0ZV9uYW1lID0gaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UpCisgICAgICB0cnk6CisgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW2Fic29sdXRlX25hbWVdCisgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgcGFzcworCisgICAgICBwYXRoID0gTm9uZQorICAgICAgaWYgJy4nIGluIGFic29sdXRlX25hbWU6CisgICAgICAgICAgcGFyZW50X25hbWUsIF8sIGNoaWxkX25hbWUgPSBhYnNvbHV0ZV9uYW1lLnJwYXJ0aXRpb24oJy4nKQorICAgICAgICAgIHBhcmVudF9tb2R1bGUgPSBpbXBvcnRfbW9kdWxlKHBhcmVudF9uYW1lKQorICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLnNwZWMuc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnMKKyAgICAgIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICAgICAgICBzcGVjID0gZmluZGVyLmZpbmRfc3BlYyhhYnNvbHV0ZV9uYW1lLCBwYXRoKQorICAgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgIGJyZWFrCisgICAgICBlbHNlOgorICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKGYnTm8gbW9kdWxlIG5hbWVkIHthYnNvbHV0ZV9uYW1lIXJ9JykKKyAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgIHN5cy5tb2R1bGVzW2Fic29sdXRlX25hbWVdID0gbW9kdWxlCisgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgIHNldGF0dHIocGFyZW50X21vZHVsZSwgY2hpbGRfbmFtZSwgbW9kdWxlKQorICAgICAgcmV0dXJuIG1vZHVsZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5zcGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAppbmRleCA2MmEzOTg4Li5mYzgxNWE2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdApAQCAtMjM1LDI0ICsyMzUsNiBAQAogICAgICAgbGlzdGVkIGluIHRoZSBtZXRhY2xhc3MnIGN1c3RvbSA6bWV0aDpgX19kaXJfX2AuCiAKIAotLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVpbmZvKHBhdGgpCi0KLSAgIFJldHVybnMgYSA6dGVybTpgbmFtZWQgdHVwbGVgIGBgTW9kdWxlSW5mbyhuYW1lLCBzdWZmaXgsIG1vZGUsIG1vZHVsZV90eXBlKWBgCi0gICBvZiB2YWx1ZXMgdGhhdCBkZXNjcmliZSBob3cgUHl0aG9uIHdpbGwgaW50ZXJwcmV0IHRoZSBmaWxlIGlkZW50aWZpZWQgYnkKLSAgICpwYXRoKiBpZiBpdCBpcyBhIG1vZHVsZSwgb3IgYGBOb25lYGAgaWYgaXQgd291bGQgbm90IGJlIGlkZW50aWZpZWQgYXMgYQotICAgbW9kdWxlLiAgSW4gdGhhdCB0dXBsZSwgKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2l0aG91dCB0aGUgbmFtZSBvZgotICAgYW55IGVuY2xvc2luZyBwYWNrYWdlLCAqc3VmZml4KiBpcyB0aGUgdHJhaWxpbmcgcGFydCBvZiB0aGUgZmlsZSBuYW1lICh3aGljaAotICAgbWF5IG5vdCBiZSBhIGRvdC1kZWxpbWl0ZWQgZXh0ZW5zaW9uKSwgKm1vZGUqIGlzIHRoZSA6ZnVuYzpgb3BlbmAgbW9kZSB0aGF0Ci0gICB3b3VsZCBiZSB1c2VkIChgYCdyJ2BgIG9yIGBgJ3JiJ2BgKSwgYW5kICptb2R1bGVfdHlwZSogaXMgYW4gaW50ZWdlciBnaXZpbmcKLSAgIHRoZSB0eXBlIG9mIHRoZSBtb2R1bGUuICAqbW9kdWxlX3R5cGUqIHdpbGwgaGF2ZSBhIHZhbHVlIHdoaWNoIGNhbiBiZQotICAgY29tcGFyZWQgdG8gdGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSA6bW9kOmBpbXBgIG1vZHVsZTsgc2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbW9kdWxlIHR5cGVzLgotCi0gICAuLiBkZXByZWNhdGVkOjogMy4zCi0gICAgICBZb3UgbWF5IGNoZWNrIHRoZSBmaWxlIHBhdGgncyBzdWZmaXggYWdhaW5zdCB0aGUgc3VwcG9ydGVkIHN1ZmZpeGVzCi0gICAgICBsaXN0ZWQgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgdG8gaW5mZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24uCi0KLQogLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5IHRoZSBmaWxlICpwYXRoKiwgd2l0aG91dCBpbmNsdWRpbmcgdGhlCkBAIC0yNjYsOCArMjQ4LDcgQEAKICAgIHN0aWxsIHJldHVybiBgYE5vbmVgYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gdGhlCi0gICAgICBkZXByZWNhdGVkIDpmdW5jOmBnZXRtb2R1bGVpbmZvYC4KKyAgICAgIFRoZSBmdW5jdGlvbiBpcyBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgLgogCiAKIC4uIGZ1bmN0aW9uOjogaXNtb2R1bGUob2JqZWN0KQpAQCAtNjQ2LDYgKzYyNywxNiBAQAogICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIFRoZSBuYW1lIG11c3QgYmUgYSB2YWxpZAogICAgICAgUHl0aG9uIGlkZW50aWZpZXIuCiAKKyAgICAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgICAgQ1B5dGhvbiBnZW5lcmF0ZXMgaW1wbGljaXQgcGFyYW1ldGVyIG5hbWVzIG9mIHRoZSBmb3JtIGBgLjBgYCBvbiB0aGUKKyAgICAgICAgIGNvZGUgb2JqZWN0cyB1c2VkIHRvIGltcGxlbWVudCBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yCisgICAgICAgICBleHByZXNzaW9ucy4KKworICAgICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgICAgIFRoZXNlIHBhcmFtZXRlciBuYW1lcyBhcmUgZXhwb3NlZCBieSB0aGlzIG1vZHVsZSBhcyBuYW1lcyBsaWtlCisgICAgICAgICAgICBgYGltcGxpY2l0MGBgLgorCiAgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZGVmYXVsdAogCiAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHBhcmFtZXRlci4gIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5vIGRlZmF1bHQKQEAgLTg1NCw4ICs4NDUsNiBAQAogICAgZnJvbSBrd29ubHlhcmdzIHRvIGRlZmF1bHRzLiAgKmFubm90YXRpb25zKiBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudAogICAgbmFtZXMgdG8gYW5ub3RhdGlvbnMuCiAKLSAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIDpmdW5jOmBnZXRhcmdzcGVjYC4KLQogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IGJhc2VkIG9uIDpmdW5jOmBzaWduYXR1cmVgLCBidXQgc3RpbGwgaWdub3JlcwogICAgICAgYGBfX3dyYXBwZWRfX2BgIGF0dHJpYnV0ZXMgYW5kIGluY2x1ZGVzIHRoZSBhbHJlYWR5IGJvdW5kIGZpcnN0CkBAIC04ODQsNyArODczLDcgQEAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnNbLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZSwgZm9ybWF0cmV0dXJucywgZm9ybWF0YW5ub3RhdGlvbnNdXSkKIAogICAgRm9ybWF0IGEgcHJldHR5IGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgZ2V0YXJnc3BlY2Agb3IgOmZ1bmM6YGdldGZ1bGxhcmdzcGVjYC4KKyAgIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCiAKICAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChgYGFyZ3NgYCwgYGB2YXJhcmdzYGAsIGBgdmFya3dgYCwKICAgIGBgZGVmYXVsdHNgYCwgYGBrd29ubHlhcmdzYGAsIGBga3dvbmx5ZGVmYXVsdHNgYCwgYGBhbm5vdGF0aW9uc2BgKS4KQEAgLTEyNjQsMjAgKzEyNTMsMjkgQEAKIAogLi4gZGF0YTo6IENPX0NPUk9VVElORQogCi0gICBUaGUgZmxhZyBpcyBzZXQgd2hlbiB0aGUgY29kZSBvYmplY3QgaXMgYSBjb3JvdXRpbmUgZnVuY3Rpb24sIGkuZS4KLSAgIGEgY29yb3V0aW5lIG9iamVjdCBpcyByZXR1cm5lZCB3aGVuIHRoZSBjb2RlIG9iamVjdCBpcyBleGVjdXRlZC4gIFNlZQotICAgOnBlcDpgNDkyYCBmb3IgbW9yZSBkZXRhaWxzLgorICAgVGhlIGZsYWcgaXMgc2V0IHdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGEgY29yb3V0aW5lIGZ1bmN0aW9uLgorICAgV2hlbiB0aGUgY29kZSBvYmplY3QgaXMgZXhlY3V0ZWQgaXQgcmV0dXJucyBhIGNvcm91dGluZSBvYmplY3QuCisgICBTZWUgOnBlcDpgNDkyYCBmb3IgbW9yZSBkZXRhaWxzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogLi4gZGF0YTo6IENPX0lURVJBQkxFX0NPUk9VVElORQogCi0gICBVc2VkIHRvIHR1cm4gZ2VuZXJhdG9ycyBpbnRvIGdlbmVyYXRvci1iYXNlZCBjb3JvdXRpbmVzLiAgR2VuZXJhdG9yCi0gICBvYmplY3RzIHdpdGggdGhpcyBmbGFnIGNhbiBiZSB1c2VkIGluIGBgYXdhaXRgYCBleHByZXNzaW9uLCBhbmQgY2FuCi0gICBgYHlpZWxkIGZyb21gYCBjb3JvdXRpbmUgb2JqZWN0cy4gIFNlZSA6cGVwOmA0OTJgIGZvciBtb3JlIGRldGFpbHMuCisgICBUaGUgZmxhZyBpcyB1c2VkIHRvIHRyYW5zZm9ybSBnZW5lcmF0b3JzIGludG8gZ2VuZXJhdG9yLWJhc2VkCisgICBjb3JvdXRpbmVzLiAgR2VuZXJhdG9yIG9iamVjdHMgd2l0aCB0aGlzIGZsYWcgY2FuIGJlIHVzZWQgaW4KKyAgIGBgYXdhaXRgYCBleHByZXNzaW9uLCBhbmQgY2FuIGBgeWllbGQgZnJvbWBgIGNvcm91dGluZSBvYmplY3RzLgorICAgU2VlIDpwZXA6YDQ5MmAgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKy4uIGRhdGE6OiBDT19BU1lOQ19HRU5FUkFUT1IKKworICAgVGhlIGZsYWcgaXMgc2V0IHdoZW4gdGhlIGNvZGUgb2JqZWN0IGlzIGFuIGFzeW5jaHJvbm91cyBnZW5lcmF0b3IKKyAgIGZ1bmN0aW9uLiAgV2hlbiB0aGUgY29kZSBvYmplY3QgaXMgZXhlY3V0ZWQgaXQgcmV0dXJucyBhbgorICAgYXN5bmNocm9ub3VzIGdlbmVyYXRvciBvYmplY3QuICBTZWUgOnBlcDpgNTI1YCBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gbm90ZTo6CiAgICBUaGUgZmxhZ3MgYXJlIHNwZWNpZmljIHRvIENQeXRob24sIGFuZCBtYXkgbm90IGJlIGRlZmluZWQgaW4gb3RoZXIKICAgIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuICBGdXJ0aGVybW9yZSwgdGhlIGZsYWdzIGFyZSBhbiBpbXBsZW1lbnRhdGlvbgpAQCAtMTI4Niw3ICsxMjg0LDYgQEAKICAgIGZvciBhbnkgaW50cm9zcGVjdGlvbiBuZWVkcy4KIAogCi0KIC4uIF9pbnNwZWN0LW1vZHVsZS1jbGk6CiAKIENvbW1hbmQgTGluZSBJbnRlcmZhY2UKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CmluZGV4IGRmYzFkZGMuLmIwZDBhOGMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdApAQCAtNTkxLDcgKzU5MSwxMyBAQAogCiAuLiBmdW5jdGlvbjo6IHRlZShpdGVyYWJsZSwgbj0yKQogCi0gICBSZXR1cm4gKm4qIGluZGVwZW5kZW50IGl0ZXJhdG9ycyBmcm9tIGEgc2luZ2xlIGl0ZXJhYmxlLiAgUm91Z2hseSBlcXVpdmFsZW50IHRvOjoKKyAgIFJldHVybiAqbiogaW5kZXBlbmRlbnQgaXRlcmF0b3JzIGZyb20gYSBzaW5nbGUgaXRlcmFibGUuCisKKyAgIFRoZSBmb2xsb3dpbmcgUHl0aG9uIGNvZGUgaGVscHMgZXhwbGFpbiB3aGF0ICp0ZWUqIGRvZXMgKGFsdGhvdWdoIHRoZSBhY3R1YWwKKyAgIGltcGxlbWVudGF0aW9uIGlzIG1vcmUgY29tcGxleCBhbmQgdXNlcyBvbmx5IGEgc2luZ2xlIHVuZGVybHlpbmcKKyAgIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUpLgorCisgICBSb3VnaGx5IGVxdWl2YWxlbnQgdG86OgogCiAgICAgICAgIGRlZiB0ZWUoaXRlcmFibGUsIG49Mik6CiAgICAgICAgICAgICBpdCA9IGl0ZXIoaXRlcmFibGUpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9qc29uLnJzdCBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CmluZGV4IGMxYTUyYTcuLjAzM2UzZmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2pzb24ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CkBAIC0xMjYsNyArMTI2LDcgQEAKIEJhc2ljIFVzYWdlCiAtLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGR1bXAob2JqLCBmcCwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCisuLiBmdW5jdGlvbjo6IGR1bXAob2JqLCBmcCwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgc29ydF9rZXlzPUZhbHNlLCAqKmt3KQpAQCAtMTg3LDggKzE4NywxMSBAQAogICAgOm1ldGg6YGRlZmF1bHRgIG1ldGhvZCB0byBzZXJpYWxpemUgYWRkaXRpb25hbCB0eXBlcyksIHNwZWNpZnkgaXQgd2l0aCB0aGUKICAgICpjbHMqIGt3YXJnOyBvdGhlcndpc2UgOmNsYXNzOmBKU09ORW5jb2RlcmAgaXMgdXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCiAKLS4uIGZ1bmN0aW9uOjogZHVtcHMob2JqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKKworLi4gZnVuY3Rpb246OiBkdW1wcyhvYmosICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAogICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvcnRfa2V5cz1GYWxzZSwgKiprdykKQEAgLTIxMiw3ICsyMTUsNyBAQAogICAgICAgdGhlIG9yaWdpbmFsIG9uZS4gVGhhdCBpcywgYGBsb2FkcyhkdW1wcyh4KSkgIT0geGBgIGlmIHggaGFzIG5vbi1zdHJpbmcKICAgICAgIGtleXMuCiAKLS4uIGZ1bmN0aW9uOjogbG9hZChmcCwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorLi4gZnVuY3Rpb246OiBsb2FkKGZwLCAqLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCiAKICAgIERlc2VyaWFsaXplICpmcCogKGEgYGAucmVhZCgpYGAtc3VwcG9ydGluZyA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAKICAgIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcyA6cmVmOmBjb252ZXJzaW9uCkBAIC0yNjAsMTAgKzI2MywxNCBAQAogICAgSWYgdGhlIGRhdGEgYmVpbmcgZGVzZXJpYWxpemVkIGlzIG5vdCBhIHZhbGlkIEpTT04gZG9jdW1lbnQsIGEKICAgIDpleGM6YEpTT05EZWNvZGVFcnJvcmAgd2lsbCBiZSByYWlzZWQuCiAKLS4uIGZ1bmN0aW9uOjogbG9hZHMocywgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCiAKLSAgIERlc2VyaWFsaXplICpzKiAoYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEKLSAgIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcyA6cmVmOmBjb252ZXJzaW9uIHRhYmxlIDxqc29uLXRvLXB5LXRhYmxlPmAuCisuLiBmdW5jdGlvbjo6IGxvYWRzKHMsICosIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKKworICAgRGVzZXJpYWxpemUgKnMqIChhIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgCisgICBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0IHVzaW5nIHRoaXMKKyAgIDpyZWY6YGNvbnZlcnNpb24gdGFibGUgPGpzb24tdG8tcHktdGFibGU+YC4KIAogICAgVGhlIG90aGVyIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgaW4gOmZ1bmM6YGxvYWRgLCBleGNlcHQKICAgICplbmNvZGluZyogd2hpY2ggaXMgaWdub3JlZCBhbmQgZGVwcmVjYXRlZC4KQEAgLTI3NCw3ICsyODEsNyBAQAogRW5jb2RlcnMgYW5kIERlY29kZXJzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gY2xhc3M6OiBKU09ORGVjb2RlcihvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUpCisuLiBjbGFzczo6IEpTT05EZWNvZGVyKCosIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKIAogICAgU2ltcGxlIEpTT04gZGVjb2Rlci4KIApAQCAtMzQ0LDYgKzM1MSw5IEBACiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQogICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKICAgIC4uIG1ldGhvZDo6IGRlY29kZShzKQogCiAgICAgICBSZXR1cm4gdGhlIFB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiAqcyogKGEgOmNsYXNzOmBzdHJgIGluc3RhbmNlCkBAIC0zNjIsNyArMzcyLDcgQEAKICAgICAgIGV4dHJhbmVvdXMgZGF0YSBhdCB0aGUgZW5kLgogCiAKLS4uIGNsYXNzOjogSlNPTkVuY29kZXIoc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpCisuLiBjbGFzczo6IEpTT05FbmNvZGVyKCosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwgZGVmYXVsdD1Ob25lKQogCiAgICBFeHRlbnNpYmxlIEpTT04gZW5jb2RlciBmb3IgUHl0aG9uIGRhdGEgc3RydWN0dXJlcy4KIApAQCAtNDQzLDYgKzQ1Myw5IEBACiAgICB0aGUgb2JqZWN0IG9yIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gIElmIG5vdCBzcGVjaWZpZWQsIDpleGM6YFR5cGVFcnJvcmAKICAgIGlzIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFsbCBwYXJhbWV0ZXJzIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5IDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKIAogICAgLi4gbWV0aG9kOjogZGVmYXVsdChvKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CmluZGV4IDBjMDJkM2QuLjZiZTMyNzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0CkBAIC04NCw2ICs4NCw5IEBACiAgICB3aXRoIHRoYXQgZW5jb2RpbmcuICBJZiAqZGVsYXkqIGlzIHRydWUsIHRoZW4gZmlsZSBvcGVuaW5nIGlzIGRlZmVycmVkIHVudGlsIHRoZQogICAgZmlyc3QgY2FsbCB0byA6bWV0aDpgZW1pdGAuIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGdyb3dzIGluZGVmaW5pdGVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCiAKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIApAQCAtMTYwLDEyICsxNjMsMjMgQEAKICAgIHdpdGggdGhhdCBlbmNvZGluZy4gIElmICpkZWxheSogaXMgdHJ1ZSwgdGhlbiBmaWxlIG9wZW5pbmcgaXMgZGVmZXJyZWQgdW50aWwgdGhlCiAgICBmaXJzdCBjYWxsIHRvIDptZXRoOmBlbWl0YC4gIEJ5IGRlZmF1bHQsIHRoZSBmaWxlIGdyb3dzIGluZGVmaW5pdGVseS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFzIHdlbGwgYXMgc3RyaW5nIHZhbHVlcywgOmNsYXNzOmB+cGF0aGxpYi5QYXRoYCBvYmplY3RzIGFyZSBhbHNvIGFjY2VwdGVkCisgICAgICBmb3IgdGhlICpmaWxlbmFtZSogYXJndW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHJlb3BlbklmTmVlZGVkKCkKKworICAgICAgQ2hlY2tzIHRvIHNlZSBpZiB0aGUgZmlsZSBoYXMgY2hhbmdlZC4gIElmIGl0IGhhcywgdGhlIGV4aXN0aW5nIHN0cmVhbSBpcworICAgICAgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUgZmlsZSBvcGVuZWQgYWdhaW4sIHR5cGljYWxseSBhcyBhIHByZWN1cnNvciB0bworICAgICAgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAgICAuLiBtZXRob2Q6OiBlbWl0KHJlY29yZCkKIAotICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBidXQgZmlyc3QgY2hlY2tzIHRvIHNlZSBpZiB0aGUgZmlsZSBoYXMKLSAgICAgIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUKLSAgICAgIGZpbGUgb3BlbmVkIGFnYWluLCBiZWZvcmUgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgorICAgICAgT3V0cHV0cyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLCBidXQgZmlyc3QgY2FsbHMgOm1ldGg6YHJlb3BlbklmTmVlZGVkYCB0bworICAgICAgcmVvcGVuIHRoZSBmaWxlIGlmIGl0IGhhcyBjaGFuZ2VkLgogCiAuLiBfYmFzZS1yb3RhdGluZy1oYW5kbGVyOgogCkBAIC0yNzksNiArMjkzLDkgQEAKICAgIDpmaWxlOmBhcHAubG9nLjJgLCBldGMuICBleGlzdCwgdGhlbiB0aGV5IGFyZSByZW5hbWVkIHRvIDpmaWxlOmBhcHAubG9nLjJgLAogICAgOmZpbGU6YGFwcC5sb2cuM2AgZXRjLiAgcmVzcGVjdGl2ZWx5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KIAogICAgLi4gbWV0aG9kOjogZG9Sb2xsb3ZlcigpCiAKQEAgLTMxMCwyMSArMzI3LDI0IEBACiAgICBZb3UgY2FuIHVzZSB0aGUgKndoZW4qIHRvIHNwZWNpZnkgdGhlIHR5cGUgb2YgKmludGVydmFsKi4gVGhlIGxpc3Qgb2YgcG9zc2libGUKICAgIHZhbHVlcyBpcyBiZWxvdy4gIE5vdGUgdGhhdCB0aGV5IGFyZSBub3QgY2FzZSBzZW5zaXRpdmUuCiAKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBWYWx1ZSAgICAgICAgICB8IFR5cGUgb2YgaW50ZXJ2YWwgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgYGAnUydgYCAgICAgICAgfCBTZWNvbmRzICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ00nYGAgICAgICAgIHwgTWludXRlcyAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdIJ2BgICAgICAgICB8IEhvdXJzICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnRCdgYCAgICAgICAgfCBEYXlzICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ1cwJy0nVzYnYGAgIHwgV2Vla2RheSAoMD1Nb25kYXkpICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdtaWRuaWdodCdgYCB8IFJvbGwgb3ZlciBhdCBtaWRuaWdodCB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgVmFsdWUgICAgICAgICAgfCBUeXBlIG9mIGludGVydmFsICAgICAgICAgICB8IElmL2hvdyAqYXRUaW1lKiBpcyB1c2VkIHwKKyAgICs9PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgYGAnUydgYCAgICAgICAgfCBTZWNvbmRzICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnTSdgYCAgICAgICAgfCBNaW51dGVzICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnSCdgYCAgICAgICAgfCBIb3VycyAgICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnRCdgYCAgICAgICAgfCBEYXlzICAgICAgICAgICAgICAgICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnVzAnLSdXNidgYCAgfCBXZWVrZGF5ICgwPU1vbmRheSkgICAgICAgICB8IFVzZWQgdG8gY29tcHV0ZSBpbml0aWFsIHwKKyAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJvbGxvdmVyIHRpbWUgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAnbWlkbmlnaHQnYGAgfCBSb2xsIG92ZXIgYXQgbWlkbmlnaHQsIGlmICB8IFVzZWQgdG8gY29tcHV0ZSBpbml0aWFsIHwKKyAgIHwgICAgICAgICAgICAgICAgfCAqYXRUaW1lKiBub3Qgc3BlY2lmaWVkLCAgICB8IHJvbGxvdmVyIHRpbWUgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgfCBlbHNlIGF0IHRpbWUgKmF0VGltZSogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgV2hlbiB1c2luZyB3ZWVrZGF5LWJhc2VkIHJvdGF0aW9uLCBzcGVjaWZ5ICdXMCcgZm9yIE1vbmRheSwgJ1cxJyBmb3IKICAgIFR1ZXNkYXksIGFuZCBzbyBvbiB1cCB0byAnVzYnIGZvciBTdW5kYXkuIEluIHRoaXMgY2FzZSwgdGhlIHZhbHVlIHBhc3NlZCBmb3IKQEAgLTM1MiwxNiArMzcyLDM1IEBACiAKICAgIElmICphdFRpbWUqIGlzIG5vdCBgYE5vbmVgYCwgaXQgbXVzdCBiZSBhIGBgZGF0ZXRpbWUudGltZWBgIGluc3RhbmNlIHdoaWNoCiAgICBzcGVjaWZpZXMgdGhlIHRpbWUgb2YgZGF5IHdoZW4gcm9sbG92ZXIgb2NjdXJzLCBmb3IgdGhlIGNhc2VzIHdoZXJlIHJvbGxvdmVyCi0gICBpcyBzZXQgdG8gaGFwcGVuICJhdCBtaWRuaWdodCIgb3IgIm9uIGEgcGFydGljdWxhciB3ZWVrZGF5Ii4KKyAgIGlzIHNldCB0byBoYXBwZW4gImF0IG1pZG5pZ2h0IiBvciAib24gYSBwYXJ0aWN1bGFyIHdlZWtkYXkiLiBOb3RlIHRoYXQgaW4KKyAgIHRoZXNlIGNhc2VzLCB0aGUgKmF0VGltZSogdmFsdWUgaXMgZWZmZWN0aXZlbHkgdXNlZCB0byBjb21wdXRlIHRoZSAqaW5pdGlhbCoKKyAgIHJvbGxvdmVyLCBhbmQgc3Vic2VxdWVudCByb2xsb3ZlcnMgd291bGQgYmUgY2FsY3VsYXRlZCB2aWEgdGhlIG5vcm1hbAorICAgaW50ZXJ2YWwgY2FsY3VsYXRpb24uCisKKyAgIC4uIG5vdGU6OiBDYWxjdWxhdGlvbiBvZiB0aGUgaW5pdGlhbCByb2xsb3ZlciB0aW1lIGlzIGRvbmUgd2hlbiB0aGUgaGFuZGxlcgorICAgICAgaXMgaW5pdGlhbGlzZWQuIENhbGN1bGF0aW9uIG9mIHN1YnNlcXVlbnQgcm9sbG92ZXIgdGltZXMgaXMgZG9uZSBvbmx5CisgICAgICB3aGVuIHJvbGxvdmVyIG9jY3VycywgYW5kIHJvbGxvdmVyIG9jY3VycyBvbmx5IHdoZW4gZW1pdHRpbmcgb3V0cHV0LiBJZgorICAgICAgdGhpcyBpcyBub3Qga2VwdCBpbiBtaW5kLCBpdCBtaWdodCBsZWFkIHRvIHNvbWUgY29uZnVzaW9uLiBGb3IgZXhhbXBsZSwKKyAgICAgIGlmIGFuIGludGVydmFsIG9mICJldmVyeSBtaW51dGUiIGlzIHNldCwgdGhhdCBkb2VzIG5vdCBtZWFuIHlvdSB3aWxsCisgICAgICBhbHdheXMgc2VlIGxvZyBmaWxlcyB3aXRoIHRpbWVzIChpbiB0aGUgZmlsZW5hbWUpIHNlcGFyYXRlZCBieSBhIG1pbnV0ZTsKKyAgICAgIGlmLCBkdXJpbmcgYXBwbGljYXRpb24gZXhlY3V0aW9uLCBsb2dnaW5nIG91dHB1dCBpcyBnZW5lcmF0ZWQgbW9yZQorICAgICAgZnJlcXVlbnRseSB0aGFuIG9uY2UgYSBtaW51dGUsICp0aGVuKiB5b3UgY2FuIGV4cGVjdCB0byBzZWUgbG9nIGZpbGVzCisgICAgICB3aXRoIHRpbWVzIHNlcGFyYXRlZCBieSBhIG1pbnV0ZS4gSWYsIG9uIHRoZSBvdGhlciBoYW5kLCBsb2dnaW5nIG1lc3NhZ2VzCisgICAgICBhcmUgb25seSBvdXRwdXQgb25jZSBldmVyeSBmaXZlIG1pbnV0ZXMgKHNheSksIHRoZW4gdGhlcmUgd2lsbCBiZSBnYXBzIGluCisgICAgICB0aGUgZmlsZSB0aW1lcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBtaW51dGVzIHdoZXJlIG5vIG91dHB1dCAoYW5kIGhlbmNlIG5vCisgICAgICByb2xsb3Zlcikgb2NjdXJyZWQuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICAqYXRUaW1lKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogZG9Sb2xsb3ZlcigpCiAKICAgICAgIERvZXMgYSByb2xsb3ZlciwgYXMgZGVzY3JpYmVkIGFib3ZlLgogCi0KICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCiAgICAgICBPdXRwdXRzIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUsIGNhdGVyaW5nIGZvciByb2xsb3ZlciBhcyBkZXNjcmliZWQgYWJvdmUuCkBAIC03OTgsMTIgKzgzNywxOCBAQAogICAgICAgb3ZlcnJpZGRlbiB0byBpbXBsZW1lbnQgY3VzdG9tIGZsdXNoaW5nIHN0cmF0ZWdpZXMuCiAKIAotLi4gY2xhc3M6OiBNZW1vcnlIYW5kbGVyKGNhcGFjaXR5LCBmbHVzaExldmVsPUVSUk9SLCB0YXJnZXQ9Tm9uZSkKKy4uIGNsYXNzOjogTWVtb3J5SGFuZGxlcihjYXBhY2l0eSwgZmx1c2hMZXZlbD1FUlJPUiwgdGFyZ2V0PU5vbmUsIGZsdXNoT25DbG9zZT1UcnVlKQogCiAgICBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YE1lbW9yeUhhbmRsZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggYSBidWZmZXIgc2l6ZSBvZiAqY2FwYWNpdHkqLiBJZiAqZmx1c2hMZXZlbCogaXMgbm90IHNwZWNpZmllZCwKICAgIDpjb25zdDpgRVJST1JgIGlzIHVzZWQuIElmIG5vICp0YXJnZXQqIGlzIHNwZWNpZmllZCwgdGhlIHRhcmdldCB3aWxsIG5lZWQgdG8gYmUKLSAgIHNldCB1c2luZyA6bWV0aDpgc2V0VGFyZ2V0YCBiZWZvcmUgdGhpcyBoYW5kbGVyIGRvZXMgYW55dGhpbmcgdXNlZnVsLgorICAgc2V0IHVzaW5nIDptZXRoOmBzZXRUYXJnZXRgIGJlZm9yZSB0aGlzIGhhbmRsZXIgZG9lcyBhbnl0aGluZyB1c2VmdWwuIElmCisgICAqZmx1c2hPbkNsb3NlKiBpcyBzcGVjaWZpZWQgYXMgYGBGYWxzZWBgLCB0aGVuIHRoZSBidWZmZXIgaXMgKm5vdCogZmx1c2hlZCB3aGVuCisgICB0aGUgaGFuZGxlciBpcyBjbG9zZWQuIElmIG5vdCBzcGVjaWZpZWQgb3Igc3BlY2lmaWVkIGFzIGBgVHJ1ZWBgLCB0aGUgcHJldmlvdXMKKyAgIGJlaGF2aW91ciBvZiBmbHVzaGluZyB0aGUgYnVmZmVyIHdpbGwgb2NjdXIgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKmZsdXNoT25DbG9zZSogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sem1hLnJzdCBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CmluZGV4IDYxYjNiYTMuLjVlZGIyM2QgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2x6bWEucnN0CisrKyBiL0RvYy9saWJyYXJ5L2x6bWEucnN0CkBAIC0zOSw4ICszOSw5IEBACiAgICBvYmplY3RgLgogCiAgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEKLSAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCi0gICBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgIG9yIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBvYmplY3QpLCBpbgorICAgd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdAorICAgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgogCiAgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAiciJgYCwgYGAicmIiYGAsIGBgInciYGAsIGBgIndiImBgLAogICAgYGAieCJgYCwgYGAieGIiYGAsIGBgImEiYGAgb3IgYGAiYWIiYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCJydCJgYCwKQEAgLTY0LDYgKzY1LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAieCJgYCwgYGAieGIiYGAgYW5kIGBgInh0ImBgIG1vZGVzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjbGFzczo6IExaTUFGaWxlKGZpbGVuYW1lPU5vbmUsIG1vZGU9InIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQogCkBAIC03MSw5ICs3NSwxMCBAQAogCiAgICBBbiA6Y2xhc3M6YExaTUFGaWxlYCBjYW4gd3JhcCBhbiBhbHJlYWR5LW9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YCwgb3Igb3BlcmF0ZQogICAgZGlyZWN0bHkgb24gYSBuYW1lZCBmaWxlLiBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgZWl0aGVyIHRoZSBmaWxlCi0gICBvYmplY3QgdG8gd3JhcCwgb3IgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gb3BlbiAoYXMgYSA6Y2xhc3M6YHN0cmAgb3IKLSAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIHRoZSB3cmFwcGVkCi0gICBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZSA6Y2xhc3M6YExaTUFGaWxlYCBpcyBjbG9zZWQuCisgICBvYmplY3QgdG8gd3JhcCwgb3IgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gb3BlbiAoYXMgYSA6Y2xhc3M6YHN0cmAsCisgICA6Y2xhc3M6YGJ5dGVzYCBvciA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgb2JqZWN0KS4gV2hlbiB3cmFwcGluZyBhbgorICAgZXhpc3RpbmcgZmlsZSBvYmplY3QsIHRoZSB3cmFwcGVkIGZpbGUgd2lsbCBub3QgYmUgY2xvc2VkIHdoZW4gdGhlCisgICA6Y2xhc3M6YExaTUFGaWxlYCBpcyBjbG9zZWQuCiAKICAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCJyImBgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAidyJgYCBmb3IKICAgIG92ZXJ3cml0aW5nLCBgYCJ4ImBgIGZvciBleGNsdXNpdmUgY3JlYXRpb24sIG9yIGBgImEiYGAgZm9yIGFwcGVuZGluZy4gVGhlc2UKQEAgLTExOCw2ICsxMjMsOSBAQAogICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCiAgICAgICBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogQ29tcHJlc3NpbmcgYW5kIGRlY29tcHJlc3NpbmcgZGF0YSBpbiBtZW1vcnkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tYXRoLnJzdCBiL0RvYy9saWJyYXJ5L21hdGgucnN0CmluZGV4IDNmZGVhMTguLmRhMmI4Y2MgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21hdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L21hdGgucnN0CkBAIC00MjYsNiArNDI2LDE1IEBACiAKICAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgZSA9IDIuNzE4MjgxLi4uLCB0byBhdmFpbGFibGUgcHJlY2lzaW9uLgogCisuLiBkYXRhOjogdGF1CisKKyAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgz4QgPSA2LjI4MzE4NS4uLiwgdG8gYXZhaWxhYmxlIHByZWNpc2lvbi4KKyAgIFRhdSBpcyBhIGNpcmNsZSBjb25zdGFudCBlcXVhbCB0byAyz4AsIHRoZSByYXRpbyBvZiBhIGNpcmNsZSdzIGNpcmN1bWZlcmVuY2UgdG8KKyAgIGl0cyByYWRpdXMuIFRvIGxlYXJuIG1vcmUgYWJvdXQgVGF1LCBjaGVjayBvdXQgVmkgSGFydCdzIHZpZGVvIGBQaSBpcyAoc3RpbGwpCisgICBXcm9uZyA8aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1qRzd2aE1NWGFnUT5gXywgYW5kIHN0YXJ0IGNlbGVicmF0aW5nCisgICBgVGF1IGRheSA8aHR0cDovL3RhdWRheS5jb20vPmBfIGJ5IGVhdGluZyB0d2ljZSBhcyBtdWNoIHBpZSEKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGRhdGE6OiBpbmYKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdAppbmRleCBmNGE2ZjUzLi42ZTZlMjkwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tbWFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tbWFwLnJzdApAQCAtMjY0LDEzICsyNjQsMTggQEAKICAgIC4uIG1ldGhvZDo6IHdyaXRlKGJ5dGVzKQogCiAgICAgICBXcml0ZSB0aGUgYnl0ZXMgaW4gKmJ5dGVzKiBpbnRvIG1lbW9yeSBhdCB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUKLSAgICAgIGZpbGUgcG9pbnRlcjsgdGhlIGZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgYnl0ZXMgdGhhdAotICAgICAgd2VyZSB3cml0dGVuLiBJZiB0aGUgbW1hcCB3YXMgY3JlYXRlZCB3aXRoIDpjb25zdDpgQUNDRVNTX1JFQURgLCB0aGVuCisgICAgICBmaWxlIHBvaW50ZXIgYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gKG5ldmVyIGxlc3MgdGhhbgorICAgICAgYGBsZW4oYnl0ZXMpYGAsIHNpbmNlIGlmIHRoZSB3cml0ZSBmYWlscywgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlCisgICAgICByYWlzZWQpLiAgVGhlIGZpbGUgcG9zaXRpb24gaXMgdXBkYXRlZCB0byBwb2ludCBhZnRlciB0aGUgYnl0ZXMgdGhhdAorICAgICAgd2VyZSB3cml0dGVuLiAgSWYgdGhlIG1tYXAgd2FzIGNyZWF0ZWQgd2l0aCA6Y29uc3Q6YEFDQ0VTU19SRUFEYCwgdGhlbgogICAgICAgd3JpdGluZyB0byBpdCB3aWxsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCBleGNlcHRpb24uCiAKICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBpcyBub3cgcmV0dXJuZWQuCisKIAogICAgLi4gbWV0aG9kOjogd3JpdGVfYnl0ZShieXRlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0IGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAppbmRleCBkNDViYzIwLi45NmQxNDI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKQEAgLTY1MCw4ICs2NTAsOSBAQAogRm9yIHBhc3NpbmcgbWVzc2FnZXMgb25lIGNhbiB1c2UgOmZ1bmM6YFBpcGVgIChmb3IgYSBjb25uZWN0aW9uIGJldHdlZW4gdHdvCiBwcm9jZXNzZXMpIG9yIGEgcXVldWUgKHdoaWNoIGFsbG93cyBtdWx0aXBsZSBwcm9kdWNlcnMgYW5kIGNvbnN1bWVycykuCiAKLVRoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBTaW1wbGVRdWV1ZWAgYW5kIDpjbGFzczpgSm9pbmFibGVRdWV1ZWAgdHlwZXMgYXJlIG11bHRpLXByb2R1Y2VyLAotbXVsdGktY29uc3VtZXIgRklGTyBxdWV1ZXMgbW9kZWxsZWQgb24gdGhlIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzIGluIHRoZQorVGhlIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcworYXJlIG11bHRpLXByb2R1Y2VyLCBtdWx0aS1jb25zdW1lciA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgCitxdWV1ZXMgbW9kZWxsZWQgb24gdGhlIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzIGluIHRoZQogc3RhbmRhcmQgbGlicmFyeS4gIFRoZXkgZGlmZmVyIGluIHRoYXQgOmNsYXNzOmBRdWV1ZWAgbGFja3MgdGhlCiA6bWV0aDpgfnF1ZXVlLlF1ZXVlLnRhc2tfZG9uZWAgYW5kIDptZXRoOmB+cXVldWUuUXVldWUuam9pbmAgbWV0aG9kcyBpbnRyb2R1Y2VkCiBpbnRvIFB5dGhvbiAyLjUncyA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcy4KQEAgLTg4OSw4ICs4OTAsMTMgQEAKIAogLi4gZnVuY3Rpb246OiBjcHVfY291bnQoKQogCi0gICBSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0uICBNYXkgcmFpc2UKLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLgorCisgICBUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW4KKyAgIHVzZS4gIFRoZSBudW1iZXIgb2YgdXNhYmxlIENQVXMgY2FuIGJlIG9idGFpbmVkIHdpdGgKKyAgIGBgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgCisKKyAgIE1heSByYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KIAogICAgLi4gc2VlYWxzbzo6CiAgICAgICA6ZnVuYzpgb3MuY3B1X2NvdW50YApAQCAtMTY3OSw3ICsxNjg1LDkgQEAKICAgIG9mIHByb2Nlc3Nlcy4gIE9iamVjdHMgb2YgdGhpcyB0eXBlIGFyZSByZXR1cm5lZCBieQogICAgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5NYW5hZ2VyYC4KIAotICAgSXQgYWxzbyBzdXBwb3J0cyBjcmVhdGlvbiBvZiBzaGFyZWQgbGlzdHMgYW5kIGRpY3Rpb25hcmllcy4KKyAgIEl0cyBtZXRob2RzIGNyZWF0ZSBhbmQgcmV0dXJuIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzYCBmb3IgYQorICAgbnVtYmVyIG9mIGNvbW1vbmx5IHVzZWQgZGF0YSB0eXBlcyB0byBiZSBzeW5jaHJvbml6ZWQgYWNyb3NzIHByb2Nlc3Nlcy4KKyAgIFRoaXMgbm90YWJseSBpbmNsdWRlcyBzaGFyZWQgbGlzdHMgYW5kIGRpY3Rpb25hcmllcy4KIAogICAgLi4gbWV0aG9kOjogQmFycmllcihwYXJ0aWVzWywgYWN0aW9uWywgdGltZW91dF1dKQogCkBAIC0xNzQyLDMxICsxNzUwLDE3IEBACiAgICAgICAgICAgICAgICBkaWN0KG1hcHBpbmcpCiAgICAgICAgICAgICAgICBkaWN0KHNlcXVlbmNlKQogCi0gICAgICBDcmVhdGUgYSBzaGFyZWQgYGBkaWN0YGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCisgICAgICBDcmVhdGUgYSBzaGFyZWQgOmNsYXNzOmBkaWN0YCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KIAogICAgLi4gbWV0aG9kOjogbGlzdCgpCiAgICAgICAgICAgICAgICBsaXN0KHNlcXVlbmNlKQogCi0gICAgICBDcmVhdGUgYSBzaGFyZWQgYGBsaXN0YGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCisgICAgICBDcmVhdGUgYSBzaGFyZWQgOmNsYXNzOmBsaXN0YCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIE1vZGlmaWNhdGlvbnMgdG8gbXV0YWJsZSB2YWx1ZXMgb3IgaXRlbXMgaW4gZGljdCBhbmQgbGlzdCBwcm94aWVzIHdpbGwgbm90Ci0gICAgICBiZSBwcm9wYWdhdGVkIHRocm91Z2ggdGhlIG1hbmFnZXIsIGJlY2F1c2UgdGhlIHByb3h5IGhhcyBubyB3YXkgb2Yga25vd2luZwotICAgICAgd2hlbiBpdHMgdmFsdWVzIG9yIGl0ZW1zIGFyZSBtb2RpZmllZC4gIFRvIG1vZGlmeSBzdWNoIGFuIGl0ZW0sIHlvdSBjYW4KLSAgICAgIHJlLWFzc2lnbiB0aGUgbW9kaWZpZWQgb2JqZWN0IHRvIHRoZSBjb250YWluZXIgcHJveHk6OgotCi0gICAgICAgICAjIGNyZWF0ZSBhIGxpc3QgcHJveHkgYW5kIGFwcGVuZCBhIG11dGFibGUgb2JqZWN0IChhIGRpY3Rpb25hcnkpCi0gICAgICAgICBscHJveHkgPSBtYW5hZ2VyLmxpc3QoKQotICAgICAgICAgbHByb3h5LmFwcGVuZCh7fSkKLSAgICAgICAgICMgbm93IG11dGF0ZSB0aGUgZGljdGlvbmFyeQotICAgICAgICAgZCA9IGxwcm94eVswXQotICAgICAgICAgZFsnYSddID0gMQotICAgICAgICAgZFsnYiddID0gMgotICAgICAgICAgIyBhdCB0aGlzIHBvaW50LCB0aGUgY2hhbmdlcyB0byBkIGFyZSBub3QgeWV0IHN5bmNlZCwgYnV0IGJ5Ci0gICAgICAgICAjIHJlYXNzaWduaW5nIHRoZSBkaWN0aW9uYXJ5LCB0aGUgcHJveHkgaXMgbm90aWZpZWQgb2YgdGhlIGNoYW5nZQotICAgICAgICAgbHByb3h5WzBdID0gZAotCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU2hhcmVkIG9iamVjdHMgYXJlIGNhcGFibGUgb2YgYmVpbmcgbmVzdGVkLiAgRm9yIGV4YW1wbGUsIGEgc2hhcmVkCisgICAgICBjb250YWluZXIgb2JqZWN0IHN1Y2ggYXMgYSBzaGFyZWQgbGlzdCBjYW4gY29udGFpbiBvdGhlciBzaGFyZWQgb2JqZWN0cworICAgICAgd2hpY2ggd2lsbCBhbGwgYmUgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSA6Y2xhc3M6YFN5bmNNYW5hZ2VyYC4KIAogLi4gY2xhc3M6OiBOYW1lc3BhY2UKIApAQCAtMTg3OCw2ICsxODcyLDggQEAKICAgICA+Pj4gcyA9IG0uZ2V0X3NlcnZlcigpCiAgICAgPj4+IHMuc2VydmVfZm9yZXZlcigpCiAKKy4uIF9tdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0czoKKwogUHJveHkgT2JqZWN0cwogfn5+fn5+fn5+fn5+fgogCkBAIC0xODg3LDggKzE4ODMsNyBAQAogCiBBIHByb3h5IG9iamVjdCBoYXMgbWV0aG9kcyB3aGljaCBpbnZva2UgY29ycmVzcG9uZGluZyBtZXRob2RzIG9mIGl0cyByZWZlcmVudAogKGFsdGhvdWdoIG5vdCBldmVyeSBtZXRob2Qgb2YgdGhlIHJlZmVyZW50IHdpbGwgbmVjZXNzYXJpbHkgYmUgYXZhaWxhYmxlIHRocm91Z2gKLXRoZSBwcm94eSkuICBBIHByb3h5IGNhbiB1c3VhbGx5IGJlIHVzZWQgaW4gbW9zdCBvZiB0aGUgc2FtZSB3YXlzIHRoYXQgaXRzCi1yZWZlcmVudCBjYW46Cit0aGUgcHJveHkpLiAgSW4gdGhpcyB3YXksIGEgcHJveHkgY2FuIGJlIHVzZWQganVzdCBsaWtlIGl0cyByZWZlcmVudCBjYW46CiAKIC4uIGRvY3Rlc3Q6OgogCkBAIC0xOTA5LDkgKzE5MDQsOSBAQAogdGhlIHByb3h5LgogCiBBbiBpbXBvcnRhbnQgZmVhdHVyZSBvZiBwcm94eSBvYmplY3RzIGlzIHRoYXQgdGhleSBhcmUgcGlja2xhYmxlIHNvIHRoZXkgY2FuIGJlCi1wYXNzZWQgYmV0d2VlbiBwcm9jZXNzZXMuICBOb3RlLCBob3dldmVyLCB0aGF0IGlmIGEgcHJveHkgaXMgc2VudCB0byB0aGUKLWNvcnJlc3BvbmRpbmcgbWFuYWdlcidzIHByb2Nlc3MgdGhlbiB1bnBpY2tsaW5nIGl0IHdpbGwgcHJvZHVjZSB0aGUgcmVmZXJlbnQKLWl0c2VsZi4gIFRoaXMgbWVhbnMsIGZvciBleGFtcGxlLCB0aGF0IG9uZSBzaGFyZWQgb2JqZWN0IGNhbiBjb250YWluIGEgc2Vjb25kOgorcGFzc2VkIGJldHdlZW4gcHJvY2Vzc2VzLiAgQXMgc3VjaCwgYSByZWZlcmVudCBjYW4gY29udGFpbgorOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgLiAgVGhpcyBwZXJtaXRzIG5lc3Rpbmcgb2YgdGhlc2UgbWFuYWdlZAorbGlzdHMsIGRpY3RzLCBhbmQgb3RoZXIgOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgOgogCiAuLiBkb2N0ZXN0OjoKIApAQCAtMTkxOSwxMCArMTkxNCw0NiBAQAogICAgPj4+IGIgPSBtYW5hZ2VyLmxpc3QoKQogICAgPj4+IGEuYXBwZW5kKGIpICAgICAgICAgIyByZWZlcmVudCBvZiBhIG5vdyBjb250YWlucyByZWZlcmVudCBvZiBiCiAgICA+Pj4gcHJpbnQoYSwgYikKLSAgIFtbXV0gW10KKyAgIFs8TGlzdFByb3h5IG9iamVjdCwgdHlwZWlkICdsaXN0JyBhdCAuLi4+XSBbXQogICAgPj4+IGIuYXBwZW5kKCdoZWxsbycpCi0gICA+Pj4gcHJpbnQoYSwgYikKLSAgIFtbJ2hlbGxvJ11dIFsnaGVsbG8nXQorICAgPj4+IHByaW50KGFbMF0sIGIpCisgICBbJ2hlbGxvJ10gWydoZWxsbyddCisKK1NpbWlsYXJseSwgZGljdCBhbmQgbGlzdCBwcm94aWVzIG1heSBiZSBuZXN0ZWQgaW5zaWRlIG9uZSBhbm90aGVyOjoKKworICAgPj4+IGxfb3V0ZXIgPSBtYW5hZ2VyLmxpc3QoWyBtYW5hZ2VyLmRpY3QoKSBmb3IgaSBpbiByYW5nZSgyKSBdKQorICAgPj4+IGRfZmlyc3RfaW5uZXIgPSBsX291dGVyWzBdCisgICA+Pj4gZF9maXJzdF9pbm5lclsnYSddID0gMQorICAgPj4+IGRfZmlyc3RfaW5uZXJbJ2InXSA9IDIKKyAgID4+PiBsX291dGVyWzFdWydjJ10gPSAzCisgICA+Pj4gbF9vdXRlclsxXVsneiddID0gMjYKKyAgID4+PiBwcmludChsX291dGVyWzBdKQorICAgeydhJzogMSwgJ2InOiAyfQorICAgPj4+IHByaW50KGxfb3V0ZXJbMV0pCisgICB7J2MnOiAzLCAneic6IDI2fQorCitJZiBzdGFuZGFyZCAobm9uLXByb3h5KSA6Y2xhc3M6YGxpc3RgIG9yIDpjbGFzczpgZGljdGAgb2JqZWN0cyBhcmUgY29udGFpbmVkCitpbiBhIHJlZmVyZW50LCBtb2RpZmljYXRpb25zIHRvIHRob3NlIG11dGFibGUgdmFsdWVzIHdpbGwgbm90IGJlIHByb3BhZ2F0ZWQKK3Rocm91Z2ggdGhlIG1hbmFnZXIgYmVjYXVzZSB0aGUgcHJveHkgaGFzIG5vIHdheSBvZiBrbm93aW5nIHdoZW4gdGhlIHZhbHVlcworY29udGFpbmVkIHdpdGhpbiBhcmUgbW9kaWZpZWQuICBIb3dldmVyLCBzdG9yaW5nIGEgdmFsdWUgaW4gYSBjb250YWluZXIgcHJveHkKKyh3aGljaCB0cmlnZ2VycyBhIGBgX19zZXRpdGVtX19gYCBvbiB0aGUgcHJveHkgb2JqZWN0KSBkb2VzIHByb3BhZ2F0ZSB0aHJvdWdoCit0aGUgbWFuYWdlciBhbmQgc28gdG8gZWZmZWN0aXZlbHkgbW9kaWZ5IHN1Y2ggYW4gaXRlbSwgb25lIGNvdWxkIHJlLWFzc2lnbiB0aGUKK21vZGlmaWVkIHZhbHVlIHRvIHRoZSBjb250YWluZXIgcHJveHk6OgorCisgICAjIGNyZWF0ZSBhIGxpc3QgcHJveHkgYW5kIGFwcGVuZCBhIG11dGFibGUgb2JqZWN0IChhIGRpY3Rpb25hcnkpCisgICBscHJveHkgPSBtYW5hZ2VyLmxpc3QoKQorICAgbHByb3h5LmFwcGVuZCh7fSkKKyAgICMgbm93IG11dGF0ZSB0aGUgZGljdGlvbmFyeQorICAgZCA9IGxwcm94eVswXQorICAgZFsnYSddID0gMQorICAgZFsnYiddID0gMgorICAgIyBhdCB0aGlzIHBvaW50LCB0aGUgY2hhbmdlcyB0byBkIGFyZSBub3QgeWV0IHN5bmNlZCwgYnV0IGJ5CisgICAjIHVwZGF0aW5nIHRoZSBkaWN0aW9uYXJ5LCB0aGUgcHJveHkgaXMgbm90aWZpZWQgb2YgdGhlIGNoYW5nZQorICAgbHByb3h5WzBdID0gZAorCitUaGlzIGFwcHJvYWNoIGlzIHBlcmhhcHMgbGVzcyBjb252ZW5pZW50IHRoYW4gZW1wbG95aW5nIG5lc3RlZAorOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgIGZvciBtb3N0IHVzZSBjYXNlcyBidXQgYWxzbworZGVtb25zdHJhdGVzIGEgbGV2ZWwgb2YgY29udHJvbCBvdmVyIHRoZSBzeW5jaHJvbml6YXRpb24uCiAKIC4uIG5vdGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5wYXRoLnJzdCBiL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CmluZGV4IGJmMGRmYWMuLjQwNjA1NGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0CkBAIC02MSw2ICs2MSw5IEBACiAgICBwbGF0Zm9ybXMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHRoZSBmdW5jdGlvbiA6ZnVuYzpgbm9ybXBhdGhgIGFzCiAgICBmb2xsb3dzOiBgYG5vcm1wYXRoKGpvaW4ob3MuZ2V0Y3dkKCksIHBhdGgpKWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGJhc2VuYW1lKHBhdGgpCiAKQEAgLTcxLDYgKzc0LDkgQEAKICAgIGBgJy9mb28vYmFyLydgYCByZXR1cm5zIGBgJ2JhcidgYCwgdGhlIDpmdW5jOmBiYXNlbmFtZWAgZnVuY3Rpb24gcmV0dXJucyBhbgogICAgZW1wdHkgc3RyaW5nIChgYCcnYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbW1vbnBhdGgocGF0aHMpCiAKQEAgLTgzLDYgKzg5LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgc2VxdWVuY2Ugb2YgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAuCisKIAogLi4gZnVuY3Rpb246OiBjb21tb25wcmVmaXgobGlzdCkKIApAQCAtMTA0LDEyICsxMTMsMTggQEAKICAgICAgICAgPj4+IG9zLnBhdGguY29tbW9ucGF0aChbJy91c3IvbGliJywgJy91c3IvbG9jYWwvbGliJ10pCiAgICAgICAgICcvdXNyJwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGRpcm5hbWUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBkaXJlY3RvcnkgbmFtZSBvZiBwYXRobmFtZSAqcGF0aCouICBUaGlzIGlzIHRoZSBmaXJzdCBlbGVtZW50IG9mCiAgICB0aGUgcGFpciByZXR1cm5lZCBieSBwYXNzaW5nICpwYXRoKiB0byB0aGUgZnVuY3Rpb24gOmZ1bmM6YHNwbGl0YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBleGlzdHMocGF0aCkKIApAQCAtMTIzLDYgKzEzOCw5IEBACiAgICAgICAqcGF0aCogY2FuIG5vdyBiZSBhbiBpbnRlZ2VyOiBgYFRydWVgYCBpcyByZXR1cm5lZCBpZiBpdCBpcyBhbgogICAgICAgIG9wZW4gZmlsZSBkZXNjcmlwdG9yLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxleGlzdHMocGF0aCkKIApAQCAtMTMwLDYgKzE0OCw5IEBACiAgICBicm9rZW4gc3ltYm9saWMgbGlua3MuICAgRXF1aXZhbGVudCB0byA6ZnVuYzpgZXhpc3RzYCBvbiBwbGF0Zm9ybXMgbGFja2luZwogICAgOmZ1bmM6YG9zLmxzdGF0YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBleHBhbmR1c2VyKHBhdGgpCiAKQEAgLTE1MSw2ICsxNzIsOSBAQAogICAgSWYgdGhlIGV4cGFuc2lvbiBmYWlscyBvciBpZiB0aGUgcGF0aCBkb2VzIG5vdCBiZWdpbiB3aXRoIGEgdGlsZGUsIHRoZSBwYXRoIGlzCiAgICByZXR1cm5lZCB1bmNoYW5nZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZXhwYW5kdmFycyhwYXRoKQogCkBAIC0xNjIsNiArMTg2LDkgQEAKICAgIE9uIFdpbmRvd3MsIGBgJW5hbWUlYGAgZXhwYW5zaW9ucyBhcmUgc3VwcG9ydGVkIGluIGFkZGl0aW9uIHRvIGBgJG5hbWVgYCBhbmQKICAgIGBgJHtuYW1lfWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGF0aW1lKHBhdGgpCiAKQEAgLTE4Miw2ICsyMDksOSBAQAogICAgSWYgOmZ1bmM6YG9zLnN0YXRfZmxvYXRfdGltZXNgIHJldHVybnMgYGBUcnVlYGAsIHRoZSByZXN1bHQgaXMgYSBmbG9hdGluZyBwb2ludAogICAgbnVtYmVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGN0aW1lKHBhdGgpCiAKQEAgLTE5MSwxMiArMjIxLDE4IEBACiAgICB0aGUgIDptb2Q6YHRpbWVgIG1vZHVsZSkuICBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvcgogICAgaXMgaW5hY2Nlc3NpYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldHNpemUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBzaXplLCBpbiBieXRlcywgb2YgKnBhdGgqLiAgUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGZpbGUgZG9lcwogICAgbm90IGV4aXN0IG9yIGlzIGluYWNjZXNzaWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2FicyhwYXRoKQogCkBAIC0yMDQsMjQgKzI0MCwzNiBAQAogICAgYmVnaW5zIHdpdGggYSBzbGFzaCwgb24gV2luZG93cyB0aGF0IGl0IGJlZ2lucyB3aXRoIGEgKGJhY2spc2xhc2ggYWZ0ZXIgY2hvcHBpbmcKICAgIG9mZiBhIHBvdGVudGlhbCBkcml2ZSBsZXR0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNmaWxlKHBhdGgpCiAKICAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogaXMgYW4gZXhpc3RpbmcgcmVndWxhciBmaWxlLiAgVGhpcyBmb2xsb3dzIHN5bWJvbGljCiAgICBsaW5rcywgc28gYm90aCA6ZnVuYzpgaXNsaW5rYCBhbmQgOmZ1bmM6YGlzZmlsZWAgY2FuIGJlIHRydWUgZm9yIHRoZSBzYW1lIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNkaXIocGF0aCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiBpcyBhbiBleGlzdGluZyBkaXJlY3RvcnkuICBUaGlzIGZvbGxvd3Mgc3ltYm9saWMKICAgIGxpbmtzLCBzbyBib3RoIDpmdW5jOmBpc2xpbmtgIGFuZCA6ZnVuYzpgaXNkaXJgIGNhbiBiZSB0cnVlIGZvciB0aGUgc2FtZSBwYXRoLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzbGluayhwYXRoKQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhIGRpcmVjdG9yeSBlbnRyeSB0aGF0IGlzIGEgc3ltYm9saWMgbGluay4KICAgIEFsd2F5cyBgYEZhbHNlYGAgaWYgc3ltYm9saWMgbGlua3MgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIFB5dGhvbiBydW50aW1lLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzbW91bnQocGF0aCkKIApAQCAtMjM3LDYgKzI4NSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgICAgIFN1cHBvcnQgZm9yIGRldGVjdGluZyBub24tcm9vdCBtb3VudCBwb2ludHMgb24gV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBqb2luKHBhdGgsICpwYXRocykKIApAQCAtMjU1LDEzICszMDYsMjAgQEAKICAgIGBgb3MucGF0aC5qb2luKCJjOiIsICJmb28iKWBgIHJlcHJlc2VudHMgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50CiAgICBkaXJlY3Rvcnkgb24gZHJpdmUgOmZpbGU6YEM6YCAoOmZpbGU6YGM6Zm9vYCksIG5vdCA6ZmlsZTpgYzpcXGZvb2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqcGF0aCogYW5kICpwYXRocyouCisKIAogLi4gZnVuY3Rpb246OiBub3JtY2FzZShwYXRoKQogCiAgICBOb3JtYWxpemUgdGhlIGNhc2Ugb2YgYSBwYXRobmFtZS4gIE9uIFVuaXggYW5kIE1hYyBPUyBYLCB0aGlzIHJldHVybnMgdGhlCiAgICBwYXRoIHVuY2hhbmdlZDsgb24gY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcywgaXQgY29udmVydHMgdGhlIHBhdGggdG8KICAgIGxvd2VyY2FzZS4gIE9uIFdpbmRvd3MsIGl0IGFsc28gY29udmVydHMgZm9yd2FyZCBzbGFzaGVzIHRvIGJhY2t3YXJkIHNsYXNoZXMuCi0gICBSYWlzZSBhIFR5cGVFcnJvciBpZiB0aGUgdHlwZSBvZiAqcGF0aCogaXMgbm90IGBgc3RyYGAgb3IgYGBieXRlc2BgLgorICAgUmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhlIHR5cGUgb2YgKnBhdGgqIGlzIG5vdCBgYHN0cmBgIG9yIGBgYnl0ZXNgYCAoZGlyZWN0bHkKKyAgIG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIAogLi4gZnVuY3Rpb246OiBub3JtcGF0aChwYXRoKQpAQCAtMjcyLDEyICszMzAsMTggQEAKICAgIHRoYXQgY29udGFpbnMgc3ltYm9saWMgbGlua3MuICBPbiBXaW5kb3dzLCBpdCBjb252ZXJ0cyBmb3J3YXJkIHNsYXNoZXMgdG8KICAgIGJhY2t3YXJkIHNsYXNoZXMuIFRvIG5vcm1hbGl6ZSBjYXNlLCB1c2UgOmZ1bmM6YG5vcm1jYXNlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZWFscGF0aChwYXRoKQogCiAgICBSZXR1cm4gdGhlIGNhbm9uaWNhbCBwYXRoIG9mIHRoZSBzcGVjaWZpZWQgZmlsZW5hbWUsIGVsaW1pbmF0aW5nIGFueSBzeW1ib2xpYwogICAgbGlua3MgZW5jb3VudGVyZWQgaW4gdGhlIHBhdGggKGlmIHRoZXkgYXJlIHN1cHBvcnRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVscGF0aChwYXRoLCBzdGFydD1vcy5jdXJkaXIpCiAKQEAgLTI5MCw2ICszNTQsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZWZpbGUocGF0aDEsIHBhdGgyKQogCkBAIC0zMDUsNiArMzcyLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBXaW5kb3dzIG5vdyB1c2VzIHRoZSBzYW1lIGltcGxlbWVudGF0aW9uIGFzIGFsbCBvdGhlciBwbGF0Zm9ybXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZW9wZW5maWxlKGZwMSwgZnAyKQogCkBAIC0zMTUsNiArMzg1LDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2FtZXN0YXQoc3RhdDEsIHN0YXQyKQogCkBAIC0zMjgsNiArNDAxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXQocGF0aCkKIApAQCAtMzQxLDYgKzQxNyw5IEBACiAgICAoYnV0IHRoZSBzdHJpbmdzIG1heSBkaWZmZXIpLiAgQWxzbyBzZWUgdGhlIGZ1bmN0aW9ucyA6ZnVuYzpgZGlybmFtZWAgYW5kCiAgICA6ZnVuYzpgYmFzZW5hbWVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0ZHJpdmUocGF0aCkKIApAQCAtMzU5LDYgKzQzOCw5IEBACiAgICBhbmQgc2hhcmUsIHVwIHRvIGJ1dCBub3QgaW5jbHVkaW5nIHRoZSBmb3VydGggc2VwYXJhdG9yLgogICAgZS5nLiBgYHNwbGl0ZHJpdmUoIi8vaG9zdC9jb21wdXRlci9kaXIiKWBgIHJldHVybnMgYGAoIi8vaG9zdC9jb21wdXRlciIsICIvZGlyIilgYAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0ZXh0KHBhdGgpCiAKQEAgLTM2Nyw2ICs0NDksOSBAQAogICAgcGVyaW9kLiBMZWFkaW5nIHBlcmlvZHMgb24gdGhlIGJhc2VuYW1lIGFyZSAgaWdub3JlZDsgYGBzcGxpdGV4dCgnLmNzaHJjJylgYAogICAgcmV0dXJucyAgYGAoJy5jc2hyYycsICcnKWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNwbGl0dW5jKHBhdGgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnJzdCBiL0RvYy9saWJyYXJ5L29zLnJzdAppbmRleCA1YTY3ZjkzLi4zMjYwY2RjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucnN0CkBAIC01Nyw3ICs1Nyw3IEBACiAKICAgIFRoZSBuYW1lIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGRlcGVuZGVudCBtb2R1bGUgaW1wb3J0ZWQuICBUaGUgZm9sbG93aW5nCiAgICBuYW1lcyBoYXZlIGN1cnJlbnRseSBiZWVuIHJlZ2lzdGVyZWQ6IGBgJ3Bvc2l4J2BgLCBgYCdudCdgYCwKLSAgIGBgJ2NlJ2BgLCBgYCdqYXZhJ2BgLgorICAgYGAnamF2YSdgYC4KIAogICAgLi4gc2VlYWxzbzo6CiAgICAgICA6YXR0cjpgc3lzLnBsYXRmb3JtYCBoYXMgYSBmaW5lciBncmFudWxhcml0eS4gIDpmdW5jOmBvcy51bmFtZWAgZ2l2ZXMKQEAgLTE3MSwyMyArMTcxLDYwIEBACiAKIC4uIGZ1bmN0aW9uOjogZnNlbmNvZGUoZmlsZW5hbWUpCiAKLSAgIEVuY29kZSAqZmlsZW5hbWUqIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggYGAnc3Vycm9nYXRlZXNjYXBlJ2BgCi0gICBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24gV2luZG93czsgcmV0dXJuIDpjbGFzczpgYnl0ZXNgIHVuY2hhbmdlZC4KKyAgIEVuY29kZSA6dGVybTpgcGF0aC1saWtlIDxwYXRoLWxpa2Ugb2JqZWN0PmAgKmZpbGVuYW1lKiB0byB0aGUgZmlsZXN5c3RlbQorICAgZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uCisgICBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBieXRlc2AgdW5jaGFuZ2VkLgogCiAgICA6ZnVuYzpgZnNkZWNvZGVgIGlzIHRoZSByZXZlcnNlIGZ1bmN0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnQgYWRkZWQgdG8gYWNjZXB0IG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYAorICAgICAgaW50ZXJmYWNlLgorCiAKIC4uIGZ1bmN0aW9uOjogZnNkZWNvZGUoZmlsZW5hbWUpCiAKLSAgIERlY29kZSAqZmlsZW5hbWUqIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAKLSAgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbiBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBzdHJgIHVuY2hhbmdlZC4KKyAgIERlY29kZSB0aGUgOnRlcm06YHBhdGgtbGlrZSA8cGF0aC1saWtlIG9iamVjdD5gICpmaWxlbmFtZSogZnJvbSB0aGUKKyAgIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgCisgICBvbiBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBzdHJgIHVuY2hhbmdlZC4KIAogICAgOmZ1bmM6YGZzZW5jb2RlYCBpcyB0aGUgcmV2ZXJzZSBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGFkZGVkIHRvIGFjY2VwdCBvYmplY3RzIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAKKyAgICAgIGludGVyZmFjZS4KKworCisuLiBmdW5jdGlvbjo6IGZzcGF0aChwYXRoKQorCisgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXRoLgorCisgICBJZiA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgaXMgcGFzc2VkIGluLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuCisgICBPdGhlcndpc2UgOm1ldGg6YH5vcy5QYXRoTGlrZS5fX2ZzcGF0aF9fYCBpcyBjYWxsZWQgYW5kIGl0cyB2YWx1ZSBpcworICAgcmV0dXJuZWQgYXMgbG9uZyBhcyBpdCBpcyBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuCisgICBJbiBhbGwgb3RoZXIgY2FzZXMsIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjbGFzczo6IFBhdGhMaWtlCisKKyAgIEFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3Igb2JqZWN0cyByZXByZXNlbnRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoLAorICAgZS5nLiA6Y2xhc3M6YHBhdGhsaWIuUHVyZVBhdGhgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gYWJzdHJhY3RtZXRob2Q6OiBfX2ZzcGF0aF9fKCkKKworICAgICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKKyAgICAgIFRoZSBtZXRob2Qgc2hvdWxkIG9ubHkgcmV0dXJuIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwKKyAgICAgIHdpdGggdGhlIHByZWZlcmVuY2UgYmVpbmcgZm9yIDpjbGFzczpgc3RyYC4KKwogCiAuLiBmdW5jdGlvbjo6IGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSkKIApAQCAtODk2LDYgKzkzMyw5IEBACiAgICAgICBleGNlcHRpb24sIHRoZSBmdW5jdGlvbiBub3cgcmV0cmllcyB0aGUgc3lzdGVtIGNhbGwgaW5zdGVhZCBvZiByYWlzaW5nIGFuCiAgICAgICA6ZXhjOmBJbnRlcnJ1cHRlZEVycm9yYCBleGNlcHRpb24gKHNlZSA6cGVwOmA0NzVgIGZvciB0aGUgcmF0aW9uYWxlKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIGFyZSBvcHRpb25zIGZvciB0aGUgKmZsYWdzKiBwYXJhbWV0ZXIgdG8gdGhlCiA6ZnVuYzpgfm9zLm9wZW5gIGZ1bmN0aW9uLiAgVGhleSBjYW4gYmUgY29tYmluZWQgdXNpbmcgdGhlIGJpdHdpc2UgT1Igb3BlcmF0b3IKIGBgfGBgLiAgU29tZSBvZiB0aGVtIGFyZSBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBGb3IgZGVzY3JpcHRpb25zIG9mCkBAIC0xMzkyLDYgKzE0MzIsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiwgKmVmZmVjdGl2ZV9pZHMqLCBhbmQgKmZvbGxvd19zeW1saW5rcyogcGFyYW1ldGVycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZGF0YTo6IEZfT0sKICAgICAgICAgICBSX09LCkBAIC0xNDE2LDYgKzE0NTksOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYSBmaWxlIGRlc2NyaXB0b3IKICAgICAgIG9uIHNvbWUgcGxhdGZvcm1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNoZmxhZ3MocGF0aCwgZmxhZ3MsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNDQyLDYgKzE0ODgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2htb2QocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNDgzLDYgKzE1MzIsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsCiAgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTUwMiw2ICsxNTU0LDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKICAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2hyb290KHBhdGgpCiAKQEAgLTE1MDksNiArMTU2NCw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBmY2hkaXIoZmQpCiAKQEAgLTE1MzcsNiArMTU5NSw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsY2htb2QocGF0aCwgbW9kZSkKIApAQCAtMTU0Nyw2ICsxNjA4LDggQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogLi4gZnVuY3Rpb246OiBsY2hvd24ocGF0aCwgdWlkLCBnaWQpCiAKQEAgLTE1NTYsNiArMTYxOSw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE1NzMsNiArMTYzOSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqc3JjX2Rpcl9mZCosICpkc3RfZGlyX2ZkKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IGxpc3RkaXIocGF0aD0nLicpCiAKQEAgLTE1ODAsOCArMTY0OSw5IEBACiAgICAqcGF0aCouICBUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIsIGFuZCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsCiAgICBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LgogCi0gICAqcGF0aCogbWF5IGJlIGVpdGhlciBvZiB0eXBlIGBgc3RyYGAgb3Igb2YgdHlwZSBgYGJ5dGVzYGAuICBJZiAqcGF0aCoKLSAgIGlzIG9mIHR5cGUgYGBieXRlc2BgLCB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBvZiB0eXBlIGBgYnl0ZXNgYDsKKyAgICpwYXRoKiBtYXkgYmUgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuICBJZiAqcGF0aCogaXMgb2YgdHlwZSBgYGJ5dGVzYGAKKyAgIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSksCisgICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYWxzbyBiZSBvZiB0eXBlIGBgYnl0ZXNgYDsKICAgIGluIGFsbCBvdGhlciBjaXJjdW1zdGFuY2VzLCB0aGV5IHdpbGwgYmUgb2YgdHlwZSBgYHN0cmBgLgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvcgpAQCAtMTYwMiw2ICsxNjcyLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxzdGF0KHBhdGgsIFwqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTYyOCw2ICsxNzAxLDkgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtkaXIocGF0aCwgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE2NTIsNiArMTcyOCw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBtYWtlZGlycyhuYW1lLCBtb2RlPTBvNzc3LCBleGlzdF9vaz1GYWxzZSkKIApAQCAtMTY4NSw2ICsxNzY0LDkgQEAKICAgICAgIG1vZGUgb2YgdGhlIGV4aXN0aW5nIGRpcmVjdG9yeS4gU2luY2UgdGhpcyBiZWhhdmlvciB3YXMgaW1wb3NzaWJsZSB0bwogICAgICAgaW1wbGVtZW50IHNhZmVseSwgaXQgd2FzIHJlbW92ZWQgaW4gUHl0aG9uIDMuNC4xLiBTZWUgOmlzc3VlOmAyMTA4MmAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNzA1LDYgKzE3ODcsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWtub2QocGF0aCwgbW9kZT0wbzYwMCwgZGV2aWNlPTAsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xNzI0LDYgKzE4MDksOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbWFqb3IoZGV2aWNlKQogCkBAIC0xNzYyLDYgKzE4NTAsOSBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBwYXRoY29uZl9uYW1lcwogCkBAIC0xNzc5LDkgKzE4NzAsMTAgQEAKICAgIG1heSBiZSBjb252ZXJ0ZWQgdG8gYW4gYWJzb2x1dGUgcGF0aG5hbWUgdXNpbmcKICAgIGBgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShwYXRoKSwgcmVzdWx0KWBgLgogCi0gICBJZiB0aGUgKnBhdGgqIGlzIGEgc3RyaW5nIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBzdHJpbmcgb2JqZWN0LAorICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCBhCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLCB0aGUgcmVzdWx0IHdpbGwgYWxzbyBiZSBhIHN0cmluZyBvYmplY3QsCiAgICBhbmQgdGhlIGNhbGwgbWF5IHJhaXNlIGEgVW5pY29kZURlY29kZUVycm9yLiBJZiB0aGUgKnBhdGgqIGlzIGEgYnl0ZXMKLSAgIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgorICAgb2JqZWN0IChkaXJlY3Qgb3IgaW5kaXJlY3RseSksIHRoZSByZXN1bHQgd2lsbCBiZSBhIGJ5dGVzIG9iamVjdC4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycwogICAgPGRpcl9mZD5gLgpAQCAtMTc5NCw2ICsxODg2LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZShwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTgxMiw2ICsxOTA3LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZWRpcnMobmFtZSkKIApAQCAtMTgyNiw2ICsxOTI0LDkgQEAKICAgIHRoZXkgYXJlIGVtcHR5LiBSYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYgdGhlIGxlYWYgZGlyZWN0b3J5IGNvdWxkIG5vdCBiZQogICAgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVuYW1lKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKIApAQCAtMTg0NSw2ICsxOTQ2LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpzcmNfZGlyX2ZkKiBhbmQgKmRzdF9kaXJfZmQqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbmFtZXMob2xkLCBuZXcpCiAKQEAgLTE4NTgsNiArMTk2Miw5IEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBmYWlsIHdpdGggdGhlIG5ldyBkaXJlY3Rvcnkgc3RydWN0dXJlIG1hZGUgaWYgeW91IGxhY2sKICAgICAgIHBlcm1pc3Npb25zIG5lZWRlZCB0byByZW1vdmUgdGhlIGxlYWYgZGlyZWN0b3J5IG9yIGZpbGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqb2xkKiBhbmQgKm5ldyouCisKIAogLi4gZnVuY3Rpb246OiByZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSkKIApAQCAtMTg3Miw2ICsxOTc5LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBybWRpcihwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTg4NSwzOCArMTk5NSw1OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHNjYW5kaXIocGF0aD0nLicpCiAKLSAgIFJldHVybiBhbiBpdGVyYXRvciBvZiA6Y2xhc3M6YERpckVudHJ5YCBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudHJpZXMKLSAgIGluIHRoZSBkaXJlY3RvcnkgZ2l2ZW4gYnkgKnBhdGgqLiBUaGUgZW50cmllcyBhcmUgeWllbGRlZCBpbiBhcmJpdHJhcnkKLSAgIG9yZGVyLCBhbmQgdGhlIHNwZWNpYWwgZW50cmllcyBgYCcuJ2BgIGFuZCBgYCcuLidgYCBhcmUgbm90IGluY2x1ZGVkLgorICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIDpjbGFzczpgb3MuRGlyRW50cnlgIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUKKyAgIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieSAqcGF0aCouIFRoZSBlbnRyaWVzIGFyZSB5aWVsZGVkIGluCisgICBhcmJpdHJhcnkgb3JkZXIsIGFuZCB0aGUgc3BlY2lhbCBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGFyZSBub3QKKyAgIGluY2x1ZGVkLgogCiAgICBVc2luZyA6ZnVuYzpgc2NhbmRpcmAgaW5zdGVhZCBvZiA6ZnVuYzpgbGlzdGRpcmAgY2FuIHNpZ25pZmljYW50bHkKICAgIGluY3JlYXNlIHRoZSBwZXJmb3JtYW5jZSBvZiBjb2RlIHRoYXQgYWxzbyBuZWVkcyBmaWxlIHR5cGUgb3IgZmlsZQotICAgYXR0cmlidXRlIGluZm9ybWF0aW9uLCBiZWNhdXNlIDpjbGFzczpgRGlyRW50cnlgIG9iamVjdHMgZXhwb3NlIHRoaXMKKyAgIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiwgYmVjYXVzZSA6Y2xhc3M6YG9zLkRpckVudHJ5YCBvYmplY3RzIGV4cG9zZSB0aGlzCiAgICBpbmZvcm1hdGlvbiBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBwcm92aWRlcyBpdCB3aGVuIHNjYW5uaW5nIGEgZGlyZWN0b3J5LgotICAgQWxsIDpjbGFzczpgRGlyRW50cnlgIG1ldGhvZHMgbWF5IHBlcmZvcm0gYSBzeXN0ZW0gY2FsbCwgYnV0Ci0gICA6ZnVuYzpgfkRpckVudHJ5LmlzX2RpcmAgYW5kIDpmdW5jOmB+RGlyRW50cnkuaXNfZmlsZWAgdXN1YWxseSBvbmx5Ci0gICByZXF1aXJlIGEgc3lzdGVtIGNhbGwgZm9yIHN5bWJvbGljIGxpbmtzOyA6ZnVuYzpgRGlyRW50cnkuc3RhdGAKKyAgIEFsbCA6Y2xhc3M6YG9zLkRpckVudHJ5YCBtZXRob2RzIG1heSBwZXJmb3JtIGEgc3lzdGVtIGNhbGwsIGJ1dAorICAgOmZ1bmM6YH5vcy5EaXJFbnRyeS5pc19kaXJgIGFuZCA6ZnVuYzpgfm9zLkRpckVudHJ5LmlzX2ZpbGVgIHVzdWFsbHkgb25seQorICAgcmVxdWlyZSBhIHN5c3RlbSBjYWxsIGZvciBzeW1ib2xpYyBsaW5rczsgOmZ1bmM6YG9zLkRpckVudHJ5LnN0YXRgCiAgICBhbHdheXMgcmVxdWlyZXMgYSBzeXN0ZW0gY2FsbCBvbiBVbml4IGJ1dCBvbmx5IHJlcXVpcmVzIG9uZSBmb3IKICAgIHN5bWJvbGljIGxpbmtzIG9uIFdpbmRvd3MuCiAKLSAgIE9uIFVuaXgsICpwYXRoKiBjYW4gYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2AgKHVzZQorICAgT24gVW5peCwgKnBhdGgqIGNhbiBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCAoZWl0aGVyCisgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZTsgdXNlCiAgICA6ZnVuYzpgfm9zLmZzZW5jb2RlYCBhbmQgOmZ1bmM6YH5vcy5mc2RlY29kZWAgdG8gZW5jb2RlIGFuZCBkZWNvZGUKICAgIDpjbGFzczpgYnl0ZXNgIHBhdGhzKS4gT24gV2luZG93cywgKnBhdGgqIG11c3QgYmUgb2YgdHlwZSA6Y2xhc3M6YHN0cmAuCi0gICBPbiBib3RoIHN5c3RlbXMsIHRoZSB0eXBlIG9mIHRoZSA6YXR0cjpgfkRpckVudHJ5Lm5hbWVgIGFuZAotICAgOmF0dHI6YH5EaXJFbnRyeS5wYXRoYCBhdHRyaWJ1dGVzIG9mIGVhY2ggOmNsYXNzOmBEaXJFbnRyeWAgd2lsbCBiZSBvZgorICAgT24gYm90aCBzeXN0ZW1zLCB0aGUgdHlwZSBvZiB0aGUgOmF0dHI6YH5vcy5EaXJFbnRyeS5uYW1lYCBhbmQKKyAgIDphdHRyOmB+b3MuRGlyRW50cnkucGF0aGAgYXR0cmlidXRlcyBvZiBlYWNoIDpjbGFzczpgb3MuRGlyRW50cnlgIHdpbGwgYmUgb2YKICAgIHRoZSBzYW1lIHR5cGUgYXMgKnBhdGgqLgogCisgICBUaGUgOmZ1bmM6YHNjYW5kaXJgIGl0ZXJhdG9yIHN1cHBvcnRzIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbAorICAgYW5kIGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKKworICAgLi4gbWV0aG9kOjogc2NhbmRpci5jbG9zZSgpCisKKyAgICAgIENsb3NlIHRoZSBpdGVyYXRvciBhbmQgZnJlZSBhY3F1aXJlZCByZXNvdXJjZXMuCisKKyAgICAgIFRoaXMgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgaXRlcmF0b3IgaXMgZXhoYXVzdGVkIG9yIGdhcmJhZ2UKKyAgICAgIGNvbGxlY3RlZCwgb3Igd2hlbiBhbiBlcnJvciBoYXBwZW5zIGR1cmluZyBpdGVyYXRpbmcuICBIb3dldmVyIGl0CisgICAgICBpcyBhZHZpc2FibGUgdG8gY2FsbCBpdCBleHBsaWNpdGx5IG9yIHVzZSB0aGUgOmtleXdvcmQ6YHdpdGhgCisgICAgICBzdGF0ZW1lbnQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgc2hvd3MgYSBzaW1wbGUgdXNlIG9mIDpmdW5jOmBzY2FuZGlyYCB0byBkaXNwbGF5IGFsbAogICAgdGhlIGZpbGVzIChleGNsdWRpbmcgZGlyZWN0b3JpZXMpIGluIHRoZSBnaXZlbiAqcGF0aCogdGhhdCBkb24ndCBzdGFydCB3aXRoCiAgICBgYCcuJ2BgLiBUaGUgYGBlbnRyeS5pc19maWxlKClgYCBjYWxsIHdpbGwgZ2VuZXJhbGx5IG5vdCBtYWtlIGFuIGFkZGl0aW9uYWwKICAgIHN5c3RlbSBjYWxsOjoKIAotICAgICAgZm9yIGVudHJ5IGluIG9zLnNjYW5kaXIocGF0aCk6Ci0gICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKLSAgICAgICAgICAgICBwcmludChlbnRyeS5uYW1lKQorICAgICAgd2l0aCBvcy5zY2FuZGlyKHBhdGgpIGFzIGl0OgorICAgICAgICAgIGZvciBlbnRyeSBpbiBpdDoKKyAgICAgICAgICAgICAgaWYgbm90IGVudHJ5Lm5hbWUuc3RhcnRzd2l0aCgnLicpIGFuZCBlbnRyeS5pc19maWxlKCk6CisgICAgICAgICAgICAgICAgICBwcmludChlbnRyeS5uYW1lKQogCiAgICAuLiBub3RlOjoKIApAQCAtMTkzMiw2ICsyMDYyLDE0IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCBwcm90b2NvbCBhbmQgdGhlCisgICAgICA6ZnVuYzpgfnNjYW5kaXIuY2xvc2UoKWAgbWV0aG9kLiAgSWYgYSA6ZnVuYzpgc2NhbmRpcmAgaXRlcmF0b3IgaXMgbmVpdGhlcgorICAgICAgZXhoYXVzdGVkIG5vciBleHBsaWNpdGx5IGNsb3NlZCBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2lsbCBiZSBlbWl0dGVkCisgICAgICBpbiBpdHMgZGVzdHJ1Y3Rvci4KKworICAgICAgVGhlIGZ1bmN0aW9uIGFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBEaXJFbnRyeQogCkBAIC0xOTQwLDE5ICsyMDc4LDIyIEBACiAKICAgIDpmdW5jOmBzY2FuZGlyYCB3aWxsIHByb3ZpZGUgYXMgbXVjaCBvZiB0aGlzIGluZm9ybWF0aW9uIGFzIHBvc3NpYmxlIHdpdGhvdXQKICAgIG1ha2luZyBhZGRpdGlvbmFsIHN5c3RlbSBjYWxscy4gV2hlbiBhIGBgc3RhdCgpYGAgb3IgYGBsc3RhdCgpYGAgc3lzdGVtIGNhbGwKLSAgIGlzIG1hZGUsIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0IHdpbGwgY2FjaGUgdGhlIHJlc3VsdC4KKyAgIGlzIG1hZGUsIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0IHdpbGwgY2FjaGUgdGhlIHJlc3VsdC4KIAotICAgYGBEaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKKyAgIGBgb3MuRGlyRW50cnlgYCBpbnN0YW5jZXMgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSBzdG9yZWQgaW4gbG9uZy1saXZlZCBkYXRhCiAgICBzdHJ1Y3R1cmVzOyBpZiB5b3Uga25vdyB0aGUgZmlsZSBtZXRhZGF0YSBoYXMgY2hhbmdlZCBvciBpZiBhIGxvbmcgdGltZSBoYXMKICAgIGVsYXBzZWQgc2luY2UgY2FsbGluZyA6ZnVuYzpgc2NhbmRpcmAsIGNhbGwgYGBvcy5zdGF0KGVudHJ5LnBhdGgpYGAgdG8gZmV0Y2gKICAgIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKLSAgIEJlY2F1c2UgdGhlIGBgRGlyRW50cnlgYCBtZXRob2RzIGNhbiBtYWtlIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMsIHRoZXkgbWF5CisgICBCZWNhdXNlIHRoZSBgYG9zLkRpckVudHJ5YGAgbWV0aG9kcyBjYW4gbWFrZSBvcGVyYXRpbmcgc3lzdGVtIGNhbGxzLCB0aGV5IG1heQogICAgYWxzbyByYWlzZSA6ZXhjOmBPU0Vycm9yYC4gSWYgeW91IG5lZWQgdmVyeSBmaW5lLWdyYWluZWQKICAgIGNvbnRyb2wgb3ZlciBlcnJvcnMsIHlvdSBjYW4gY2F0Y2ggOmV4YzpgT1NFcnJvcmAgd2hlbiBjYWxsaW5nIG9uZSBvZiB0aGUKLSAgIGBgRGlyRW50cnlgYCBtZXRob2RzIGFuZCBoYW5kbGUgYXMgYXBwcm9wcmlhdGUuCisgICBgYG9zLkRpckVudHJ5YGAgbWV0aG9kcyBhbmQgaGFuZGxlIGFzIGFwcHJvcHJpYXRlLgogCi0gICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBEaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgorICAgVG8gYmUgZGlyZWN0bHkgdXNhYmxlIGFzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLCBgYG9zLkRpckVudHJ5YGAKKyAgIGltcGxlbWVudHMgdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZS4KKworICAgQXR0cmlidXRlcyBhbmQgbWV0aG9kcyBvbiBhIGBgb3MuRGlyRW50cnlgYCBpbnN0YW5jZSBhcmUgYXMgZm9sbG93czoKIAogICAgLi4gYXR0cmlidXRlOjogbmFtZQogCkBAIC0xOTc4LDggKzIxMTksOSBAQAogCiAgICAgICBSZXR1cm4gdGhlIGlub2RlIG51bWJlciBvZiB0aGUgZW50cnkuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBVc2UgYGBvcy5zdGF0KGVudHJ5LnBhdGgsCi0gICAgICBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lub2BgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gVXNlCisgICAgICBgYG9zLnN0YXQoZW50cnkucGF0aCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKS5zdF9pbm9gYCB0byBmZXRjaCB1cC10by1kYXRlCisgICAgICBpbmZvcm1hdGlvbi4KIAogICAgICAgT24gdGhlIGZpcnN0LCB1bmNhY2hlZCBjYWxsLCBhIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkIG9uIFdpbmRvd3MgYnV0CiAgICAgICBub3Qgb24gVW5peC4KQEAgLTE5OTQsNyArMjEzNiw3IEBACiAgICAgICBpcyBhIGRpcmVjdG9yeSAod2l0aG91dCBmb2xsb3dpbmcgc3ltbGlua3MpOyByZXR1cm4gYGBGYWxzZWBgIGlmIHRoZQogICAgICAgZW50cnkgaXMgYW55IG90aGVyIGtpbmQgb2YgZmlsZSBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKICAgICAgIGZvciAqZm9sbG93X3N5bWxpbmtzKiBgYFRydWVgYCBhbmQgYGBGYWxzZWBgLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCBhbG9uZwogICAgICAgd2l0aCA6ZnVuYzpgc3RhdC5TX0lTRElSYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCkBAIC0yMDE4LDggKzIxNjAsOCBAQAogICAgICAgaXMgYSBmaWxlICh3aXRob3V0IGZvbGxvd2luZyBzeW1saW5rcyk7IHJldHVybiBgYEZhbHNlYGAgaWYgdGhlIGVudHJ5IGlzCiAgICAgICBhIGRpcmVjdG9yeSBvciBvdGhlciBub24tZmlsZSBlbnRyeSwgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhbnltb3JlLgogCi0gICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBEaXJFbnRyeWBgIG9iamVjdC4gQ2FjaGluZywgc3lzdGVtIGNhbGxzCi0gICAgICBtYWRlLCBhbmQgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGFzIHBlciA6ZnVuYzpgfkRpckVudHJ5LmlzX2RpcmAuCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gQ2FjaGluZywgc3lzdGVtIGNhbGxzCisgICAgICBtYWRlLCBhbmQgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGFzIHBlciA6ZnVuYzpgfm9zLkRpckVudHJ5LmlzX2RpcmAuCiAKICAgIC4uIG1ldGhvZDo6IGlzX3N5bWxpbmsoKQogCkBAIC0yMDI3LDcgKzIxNjksNyBAQAogICAgICAgcmV0dXJuIGBgRmFsc2VgYCBpZiB0aGUgZW50cnkgcG9pbnRzIHRvIGEgZGlyZWN0b3J5IG9yIGFueSBraW5kIG9mIGZpbGUsCiAgICAgICBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWxsCisgICAgICBUaGUgcmVzdWx0IGlzIGNhY2hlZCBvbiB0aGUgYGBvcy5EaXJFbnRyeWBgIG9iamVjdC4gQ2FsbAogICAgICAgOmZ1bmM6YG9zLnBhdGguaXNsaW5rYCB0byBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCiAgICAgICBPbiB0aGUgZmlyc3QsIHVuY2FjaGVkIGNhbGwsIG5vIHN5c3RlbSBjYWxsIGlzIHJlcXVpcmVkIGluIG1vc3QgY2FzZXMuCkBAIC0yMDUyLDIzICsyMTk0LDI4IEBACiAgICAgICA6Y2xhc3M6YHN0YXRfcmVzdWx0YCBhcmUgYWx3YXlzIHNldCB0byB6ZXJvLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCB0bwogICAgICAgZ2V0IHRoZXNlIGF0dHJpYnV0ZXMuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LCB3aXRoIGEgc2VwYXJhdGUgY2FjaGUKICAgICAgIGZvciAqZm9sbG93X3N5bWxpbmtzKiBgYFRydWVgYCBhbmQgYGBGYWxzZWBgLiBDYWxsIDpmdW5jOmBvcy5zdGF0YCB0bwogICAgICAgZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAogICAgTm90ZSB0aGF0IHRoZXJlIGlzIGEgbmljZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIHNldmVyYWwgYXR0cmlidXRlcwotICAgYW5kIG1ldGhvZHMgb2YgYGBEaXJFbnRyeWBgIGFuZCBvZiA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAuICBJbgotICAgcGFydGljdWxhciwgdGhlIGBgbmFtZWBgIGF0dHJpYnV0ZSBoYXMgdGhlIHNhbWUgbWVhbmluZywgYXMgZG8gdGhlCi0gICBgYGlzX2RpcigpYGAsIGBgaXNfZmlsZSgpYGAsIGBgaXNfc3ltbGluaygpYGAgYW5kIGBgc3RhdCgpYGAgbWV0aG9kcy4KKyAgIGFuZCBtZXRob2RzIG9mIGBgb3MuRGlyRW50cnlgYCBhbmQgb2YgOmNsYXNzOmBwYXRobGliLlBhdGhgLiAgSW4KKyAgIHBhcnRpY3VsYXIsIHRoZSBgYG5hbWVgYCBhdHRyaWJ1dGUgaGFzIHRoZSBzYW1lCisgICBtZWFuaW5nLCBhcyBkbyB0aGUgYGBpc19kaXIoKWBgLCBgYGlzX2ZpbGUoKWBgLCBgYGlzX3N5bWxpbmsoKWBgCisgICBhbmQgYGBzdGF0KClgYCBtZXRob2RzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6Y2xhc3M6YH5vcy5QYXRoTGlrZWAgaW50ZXJmYWNlLgorCiAKIC4uIGZ1bmN0aW9uOjogc3RhdChwYXRoLCBcKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBHZXQgdGhlIHN0YXR1cyBvZiBhIGZpbGUgb3IgYSBmaWxlIGRlc2NyaXB0b3IuIFBlcmZvcm0gdGhlIGVxdWl2YWxlbnQgb2YgYQogICAgOmM6ZnVuYzpgc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguICpwYXRoKiBtYXkgYmUgc3BlY2lmaWVkIGFzCi0gICBlaXRoZXIgYSBzdHJpbmcgb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgCisgICBlaXRoZXIgYSBzdHJpbmcgLS0gZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYAorICAgaW50ZXJmYWNlIC0tIG9yIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiBSZXR1cm4gYSA6Y2xhc3M6YHN0YXRfcmVzdWx0YAogICAgb2JqZWN0LgogCiAgICBUaGlzIGZ1bmN0aW9uIG5vcm1hbGx5IGZvbGxvd3Mgc3ltbGlua3M7IHRvIHN0YXQgYSBzeW1saW5rIGFkZCB0aGUgYXJndW1lbnQKQEAgLTIwOTgsNiArMjI0NSw5IEBACiAgICAgICBBZGRlZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywgc3BlY2lmeWluZyBhIGZpbGUKICAgICAgIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiBhIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogc3RhdF9yZXN1bHQKIApAQCAtMjMxOSwxOSArMjQ2OSwyMiBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4KIAorICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIDpjb25zdDpgU1RfUkRPTkxZYCBhbmQgOmNvbnN0OmBTVF9OT1NVSURgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKi4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFRoZSA6Y29uc3Q6YFNUX05PREVWYCwgOmNvbnN0OmBTVF9OT0VYRUNgLCA6Y29uc3Q6YFNUX1NZTkNIUk9OT1VTYCwKICAgICAgIDpjb25zdDpgU1RfTUFORExPQ0tgLCA6Y29uc3Q6YFNUX1dSSVRFYCwgOmNvbnN0OmBTVF9BUFBFTkRgLAogICAgICAgOmNvbnN0OmBTVF9JTU1VVEFCTEVgLCA6Y29uc3Q6YFNUX05PQVRJTUVgLCA6Y29uc3Q6YFNUX05PRElSQVRJTUVgLAogICAgICAgYW5kIDpjb25zdDpgU1RfUkVMQVRJTUVgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCi0KLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwotICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCiAKIAogLi4gZGF0YTo6IHN1cHBvcnRzX2Rpcl9mZApAQCAtMjQ1Miw2ICsyNjA1LDkgQEAKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhcmd1bWVudCwgYW5kIG5vdyBhbGxvdyAqdGFyZ2V0X2lzX2RpcmVjdG9yeSoKICAgICAgIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHN5bmMoKQogCkBAIC0yNDc2LDYgKzI2MzIsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCisKIC4uIGZ1bmN0aW9uOjogdW5saW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgVGhpcyBmdW5jdGlvbiBpcyBzZW1hbnRpY2FsbHkKQEAgLTI0ODYsNiArMjY0Niw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogdXRpbWUocGF0aCwgdGltZXM9Tm9uZSwgKlssIG5zXSwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0yNTIzLDYgKzI2ODYsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiwgKmZvbGxvd19zeW1saW5rcyosIGFuZCAqbnMqIHBhcmFtZXRlcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsayh0b3AsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCBmb2xsb3dsaW5rcz1GYWxzZSkKIApAQCAtMjYxMyw2ICsyNzc5LDkgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGNhbGxzIDpmdW5jOmBvcy5zY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBvcy5saXN0ZGlyYCwKICAgICAgIG1ha2luZyBpdCBmYXN0ZXIgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiBjYWxscyB0byA6ZnVuYzpgb3Muc3RhdGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZndhbGsodG9wPScuJywgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPU5vbmUpCiAKQEAgLTI2NjksNiArMjgzOCw5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CkBAIC0yNjgwLDEyICsyODUyLDE2IEBACiAuLiBmdW5jdGlvbjo6IGdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZvcgotICAgKnBhdGgqLiAqYXR0cmlidXRlKiBjYW4gYmUgYnl0ZXMgb3Igc3RyLiBJZiBpdCBpcyBzdHIsIGl0IGlzIGVuY29kZWQKLSAgIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisgICAqcGF0aCouICphdHRyaWJ1dGUqIGNhbiBiZSBieXRlcyBvciBzdHIgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIHN0ciwgaXQgaXMgZW5jb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZnByICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBsaXN0eGF0dHIocGF0aD1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMjY5NywyMSArMjg3MywyOSBAQAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBSZW1vdmVzIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmcm9tICpwYXRoKi4KLSAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCisgICAqYXR0cmlidXRlKiBzaG91bGQgYmUgYnl0ZXMgb3Igc3RyIChkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlCisgICA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0cmluZywgaXQgaXMgZW5jb2RlZAogICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KIAogICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCiAgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZnVuY3Rpb246OiBzZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsIHZhbHVlLCBmbGFncz0wLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgU2V0IHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBvbiAqcGF0aCogdG8gKnZhbHVlKi4KLSAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzLiBJZiBpdCBpcyBhIHN0ciwKKyAgICphdHRyaWJ1dGUqIG11c3QgYmUgYSBieXRlcyBvciBzdHIgd2l0aCBubyBlbWJlZGRlZCBOVUxzIChkaXJlY3RseSBvcgorICAgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YFBhdGhMaWtlYCBpbnRlcmZhY2UpLiBJZiBpdCBpcyBhIHN0ciwKICAgIGl0IGlzIGVuY29kZWQgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4gICpmbGFncyogbWF5IGJlCiAgICA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgb3IgOmRhdGE6YFhBVFRSX0NSRUFURWAuIElmIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBpcwogICAgZ2l2ZW4gYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsIGBgRUVYSVNUU2BgIHdpbGwgYmUgcmFpc2VkLgpAQCAtMjcyNiw2ICsyOTEwLDkgQEAKICAgICAgIEEgYnVnIGluIExpbnV4IGtlcm5lbCB2ZXJzaW9ucyBsZXNzIHRoYW4gMi42LjM5IGNhdXNlZCB0aGUgZmxhZ3MgYXJndW1lbnQKICAgICAgIHRvIGJlIGlnbm9yZWQgb24gc29tZSBmaWxlc3lzdGVtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKmF0dHJpYnV0ZSouCisKIAogLi4gZGF0YTo6IFhBVFRSX1NJWkVfTUFYCiAKQEAgLTI4MjcsNiArMzAxNCw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCoKICAgICAgIGZvciA6ZnVuYzpgZXhlY3ZlYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGZ1bmN0aW9uOjogX2V4aXQobikKIAogICAgRXhpdCB0aGUgcHJvY2VzcyB3aXRoIHN0YXR1cyAqbiosIHdpdGhvdXQgY2FsbGluZyBjbGVhbnVwIGhhbmRsZXJzLCBmbHVzaGluZwpAQCAtMzEzNyw2ICszMzI3LDkgQEAKICAgIDpmdW5jOmBzcGF3bnZlYCBhcmUgbm90IHRocmVhZC1zYWZlIG9uIFdpbmRvd3M7IHdlIGFkdmlzZSB5b3UgdG8gdXNlIHRoZQogICAgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlIGluc3RlYWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGRhdGE6OiBQX05PV0FJVAogICAgICAgICAgIFBfTk9XQUlUTwpAQCAtMzYyMyw2ICszODE2LDExIEBACiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4gUmV0dXJucyBgYE5vbmVgYCBpZiB1bmRldGVybWluZWQuCiAKKyAgIFRoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgorICAgdXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorICAgYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKKworCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogCkBAIC0zNzM4LDM1ICszOTM2LDg5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0uLiBfb3MtbWlzY2Z1bmM6CiAKLU1pc2NlbGxhbmVvdXMgRnVuY3Rpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorUmFuZG9tIG51bWJlcnMKKy0tLS0tLS0tLS0tLS0tCiAKIAotLi4gZnVuY3Rpb246OiB1cmFuZG9tKG4pCisuLiBmdW5jdGlvbjo6IGdldHJhbmRvbShzaXplLCBmbGFncz0wKQogCi0gICBSZXR1cm4gYSBzdHJpbmcgb2YgKm4qIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCisgICBHZXQgdXAgdG8gKnNpemUqIHJhbmRvbSBieXRlcy4gVGhlIGZ1bmN0aW9uIGNhbiByZXR1cm4gbGVzcyBieXRlcyB0aGFuCisgICByZXF1ZXN0ZWQuCisKKyAgIFRoZXNlIGJ5dGVzIGNhbiBiZSB1c2VkIHRvIHNlZWQgdXNlci1zcGFjZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcnMgb3IgZm9yCisgICBjcnlwdG9ncmFwaGljIHB1cnBvc2VzLgorCisgICBgYGdldHJhbmRvbSgpYGAgcmVsaWVzIG9uIGVudHJvcHkgZ2F0aGVyZWQgZnJvbSBkZXZpY2UgZHJpdmVycyBhbmQgb3RoZXIKKyAgIHNvdXJjZXMgb2YgZW52aXJvbm1lbnRhbCBub2lzZS4gVW5uZWNlc3NhcmlseSByZWFkaW5nIGxhcmdlIHF1YW50aXRpZXMgb2YKKyAgIGRhdGEgd2lsbCBoYXZlIGEgbmVnYXRpdmUgaW1wYWN0IG9uICBvdGhlciB1c2VycyAgb2YgdGhlIGBgL2Rldi9yYW5kb21gYCBhbmQKKyAgIGBgL2Rldi91cmFuZG9tYGAgZGV2aWNlcy4KKworICAgVGhlIGZsYWdzIGFyZ3VtZW50IGlzIGEgYml0IG1hc2sgdGhhdCBjYW4gY29udGFpbiB6ZXJvIG9yIG1vcmUgb2YgdGhlCisgICBmb2xsb3dpbmcgdmFsdWVzIE9SZWQgdG9nZXRoZXI6IDpweTpkYXRhOmBvcy5HUk5EX1JBTkRPTWAgYW5kCisgICA6cHk6ZGF0YTpgR1JORF9OT05CTE9DS2AuCisKKyAgIFNlZSBhbHNvIHRoZSBgTGludXggZ2V0cmFuZG9tKCkgbWFudWFsIHBhZ2UKKyAgIDxodHRwOi8vbWFuNy5vcmcvbGludXgvbWFuLXBhZ2VzL21hbjIvZ2V0cmFuZG9tLjIuaHRtbD5gXy4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCAzLjE3IGFuZCBuZXdlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGZ1bmN0aW9uOjogdXJhbmRvbShzaXplKQorCisgICBSZXR1cm4gYSBzdHJpbmcgb2YgKnNpemUqIHJhbmRvbSBieXRlcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCiAKICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyByYW5kb20gYnl0ZXMgZnJvbSBhbiBPUy1zcGVjaWZpYyByYW5kb21uZXNzIHNvdXJjZS4gIFRoZQogICAgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgdW5wcmVkaWN0YWJsZSBlbm91Z2ggZm9yIGNyeXB0b2dyYXBoaWMgYXBwbGljYXRpb25zLAogICAgdGhvdWdoIGl0cyBleGFjdCBxdWFsaXR5IGRlcGVuZHMgb24gdGhlIE9TIGltcGxlbWVudGF0aW9uLgogCi0gICBPbiBMaW51eCwgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgaXMgdXNlZCBpZiBhdmFpbGFibGUgYW5kIHRoZSB1cmFuZG9tCi0gICBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQgKGBgZ2V0cmFuZG9tKClgYCBkb2VzIG5vdCBibG9jaykuCi0gICBPbiBhIFVuaXgtbGlrZSBzeXN0ZW0gdGhpcyB3aWxsIHF1ZXJ5IGBgL2Rldi91cmFuZG9tYGAuIE9uIFdpbmRvd3MsIGl0Ci0gICB3aWxsIHVzZSBgYENyeXB0R2VuUmFuZG9tKClgYC4gIElmIGEgcmFuZG9tbmVzcyBzb3VyY2UgaXMgbm90IGZvdW5kLAotICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuCisgICBPbiBMaW51eCwgaWYgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIGF2YWlsYWJsZSwgaXQgaXMgdXNlZCBpbgorICAgYmxvY2tpbmcgbW9kZTogYmxvY2sgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZAorICAgKDEyOCBiaXRzIG9mIGVudHJvcHkgYXJlIGNvbGxlY3RlZCBieSB0aGUga2VybmVsKS4gU2VlIHRoZSA6cGVwOmA1MjRgIGZvcgorICAgdGhlIHJhdGlvbmFsZS4gT24gTGludXgsIHRoZSA6ZnVuYzpgZ2V0cmFuZG9tYCBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBnZXQKKyAgIHJhbmRvbSBieXRlcyBpbiBub24tYmxvY2tpbmcgbW9kZSAodXNpbmcgdGhlIDpkYXRhOmBHUk5EX05PTkJMT0NLYCBmbGFnKSBvcgorICAgdG8gcG9sbCB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkLgogCi0gICBGb3IgYW4gZWFzeS10by11c2UgaW50ZXJmYWNlIHRvIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgotICAgcHJvdmlkZWQgYnkgeW91ciBwbGF0Zm9ybSwgcGxlYXNlIHNlZSA6Y2xhc3M6YHJhbmRvbS5TeXN0ZW1SYW5kb21gLgorICAgT24gYSBVbml4LWxpa2Ugc3lzdGVtLCByYW5kb20gYnl0ZXMgYXJlIHJlYWQgZnJvbSB0aGUgYGAvZGV2L3VyYW5kb21gYAorICAgZGV2aWNlLiBJZiB0aGUgYGAvZGV2L3VyYW5kb21gYCBkZXZpY2UgaXMgbm90IGF2YWlsYWJsZSBvciBub3QgcmVhZGFibGUsIHRoZQorICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgT24gV2luZG93cywgaXQgd2lsbCB1c2UgYGBDcnlwdEdlblJhbmRvbSgpYGAuCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBwcm92aWRlcyBoaWdoZXIgbGV2ZWwgZnVuY3Rpb25zLiBGb3IgYW4KKyAgICAgIGVhc3ktdG8tdXNlIGludGVyZmFjZSB0byB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgcHJvdmlkZWQgYnkgeW91cgorICAgICAgcGxhdGZvcm0sIHBsZWFzZSBzZWUgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYuMAorICAgICAgT24gTGludXgsIGBgZ2V0cmFuZG9tKClgYCBpcyBub3cgdXNlZCBpbiBibG9ja2luZyBtb2RlIHRvIGluY3JlYXNlIHRoZQorICAgICAgc2VjdXJpdHkuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjIKLSAgICAgIE9uIExpbnV4LCBpZiBgYGdldHJhbmRvbSgpYGAgYmxvY2tzICh0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgbm90Ci0gICAgICBpbml0aWFsaXplZCB5ZXQpLCBmYWxsIGJhY2sgb24gcmVhZGluZyBgYC9kZXYvdXJhbmRvbWBgLgorICAgICAgT24gTGludXgsIGlmIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBibG9ja3MgKHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbAorICAgICAgaXMgbm90IGluaXRpYWxpemVkIHlldCksIGZhbGwgYmFjayBvbiByZWFkaW5nIGBgL2Rldi91cmFuZG9tYGAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBPbiBMaW51eCAzLjE3IGFuZCBuZXdlciwgdGhlIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIG5vdyB1c2VkCiAgICAgICB3aGVuIGF2YWlsYWJsZS4gIE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgdGhlIEMgYGBnZXRlbnRyb3B5KClgYAogICAgICAgZnVuY3Rpb24gaXMgbm93IHVzZWQuIFRoZXNlIGZ1bmN0aW9ucyBhdm9pZCB0aGUgdXNhZ2Ugb2YgYW4gaW50ZXJuYWwgZmlsZQogICAgICAgZGVzY3JpcHRvci4KKworLi4gZGF0YTo6IEdSTkRfTk9OQkxPQ0sKKworICAgQnkgIGRlZmF1bHQsIHdoZW4gcmVhZGluZyBmcm9tIGBgL2Rldi9yYW5kb21gYCwgOmZ1bmM6YGdldHJhbmRvbWAgYmxvY2tzIGlmCisgICBubyByYW5kb20gYnl0ZXMgYXJlIGF2YWlsYWJsZSwgYW5kIHdoZW4gcmVhZGluZyBmcm9tIGBgL2Rldi91cmFuZG9tYGAsIGl0IGJsb2NrcworICAgaWYgdGhlIGVudHJvcHkgcG9vbCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgorCisgICBJZiB0aGUgOnB5OmRhdGE6YEdSTkRfTk9OQkxPQ0tgIGZsYWcgaXMgc2V0LCB0aGVuIDpmdW5jOmBnZXRyYW5kb21gIGRvZXMgbm90CisgICBibG9jayBpbiB0aGVzZSBjYXNlcywgYnV0IGluc3RlYWQgaW1tZWRpYXRlbHkgcmFpc2VzIDpleGM6YEJsb2NraW5nSU9FcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogR1JORF9SQU5ET00KKworICAgSWYgIHRoaXMgIGJpdCAgaXMgIHNldCwgIHRoZW4gIHJhbmRvbSBieXRlcyBhcmUgZHJhd24gZnJvbSB0aGUKKyAgIGBgL2Rldi9yYW5kb21gYCBwb29sIGluc3RlYWQgb2YgdGhlIGBgL2Rldi91cmFuZG9tYGAgcG9vbC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wYXRobGliLnJzdCBiL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CmluZGV4IDdiOTBhMWYuLjVhODE5MTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BhdGhsaWIucnN0CkBAIC0zNSwxMiArMzUsNiBAQAogICAgYWNjZXNzaW5nIHRoZSBPUy4gSW4gdGhpcyBjYXNlLCBpbnN0YW50aWF0aW5nIG9uZSBvZiB0aGUgcHVyZSBjbGFzc2VzIG1heSBiZQogICAgdXNlZnVsIHNpbmNlIHRob3NlIHNpbXBseSBkb24ndCBoYXZlIGFueSBPUy1hY2Nlc3Npbmcgb3BlcmF0aW9ucy4KIAotLi4gbm90ZTo6Ci0gICBUaGlzIG1vZHVsZSBoYXMgYmVlbiBpbmNsdWRlZCBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeSBvbiBhCi0gICA6dGVybTpgcHJvdmlzaW9uYWwgYmFzaXMgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4gQmFja3dhcmRzIGluY29tcGF0aWJsZQotICAgY2hhbmdlcyAodXAgdG8gYW5kIGluY2x1ZGluZyByZW1vdmFsIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCi0gICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQogLi4gc2VlYWxzbzo6CiAgICA6cGVwOmA0MjhgOiBUaGUgcGF0aGxpYiBtb2R1bGUgLS0gb2JqZWN0LW9yaWVudGVkIGZpbGVzeXN0ZW0gcGF0aHMuCiAKQEAgLTExMSw3ICsxMDUsOCBAQAogICAgICAgUHVyZVBvc2l4UGF0aCgnc2V0dXAucHknKQogCiAgICBFYWNoIGVsZW1lbnQgb2YgKnBhdGhzZWdtZW50cyogY2FuIGJlIGVpdGhlciBhIHN0cmluZyByZXByZXNlbnRpbmcgYQotICAgcGF0aCBzZWdtZW50LCBvciBhbm90aGVyIHBhdGggb2JqZWN0OjoKKyAgIHBhdGggc2VnbWVudCwgYW4gb2JqZWN0IGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlCisgICB3aGljaCByZXR1cm5zIGEgc3RyaW5nLCBvciBhbm90aGVyIHBhdGggb2JqZWN0OjoKIAogICAgICAgPj4+IFB1cmVQYXRoKCdmb28nLCAnc29tZS9wYXRoJywgJ2JhcicpCiAgICAgICBQdXJlUG9zaXhQYXRoKCdmb28vc29tZS9wYXRoL2JhcicpCkBAIC0xNTIsNiArMTQ3LDEyIEBACiAgICB0byBgYFB1cmVQb3NpeFBhdGgoJ2JhcicpYGAsIHdoaWNoIGlzIHdyb25nIGlmIGBgZm9vYGAgaXMgYSBzeW1ib2xpYyBsaW5rCiAgICB0byBhbm90aGVyIGRpcmVjdG9yeSkKIAorICAgUHVyZSBwYXRoIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UsIGFsbG93aW5nIHRoZW0KKyAgIHRvIGJlIHVzZWQgYW55d2hlcmUgdGhlIGludGVyZmFjZSBpcyBhY2NlcHRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UuCisKIC4uIGNsYXNzOjogUHVyZVBvc2l4UGF0aCgqcGF0aHNlZ21lbnRzKQogCiAgICBBIHN1YmNsYXNzIG9mIDpjbGFzczpgUHVyZVBhdGhgLCB0aGlzIHBhdGggZmxhdm91ciByZXByZXNlbnRzIG5vbi1XaW5kb3dzCkBAIC0xOTksNyArMjAwLDcgQEAKICAgID4+PiBQdXJlV2luZG93c1BhdGgoJ2ZvbycpIDwgUHVyZVBvc2l4UGF0aCgnZm9vJykKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IFB1cmVXaW5kb3dzUGF0aCgpIDwgUHVyZVBvc2l4UGF0aCgpCisgICBUeXBlRXJyb3I6ICc8JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdQdXJlV2luZG93c1BhdGgnIGFuZCAnUHVyZVBvc2l4UGF0aCcKIAogCiBPcGVyYXRvcnMKQEAgLTIxNiw2ICsyMTcsMTQgQEAKICAgID4+PiAnL3VzcicgLyBxCiAgICBQdXJlUG9zaXhQYXRoKCcvdXNyL2JpbicpCiAKK0EgcGF0aCBvYmplY3QgY2FuIGJlIHVzZWQgYW55d2hlcmUgYW4gb2JqZWN0IGltcGxlbWVudGluZyA6Y2xhc3M6YG9zLlBhdGhMaWtlYAoraXMgYWNjZXB0ZWQ6OgorCisgICA+Pj4gaW1wb3J0IG9zCisgICA+Pj4gcCA9IFB1cmVQYXRoKCcvZXRjJykKKyAgID4+PiBvcy5mc3BhdGgocCkKKyAgICcvZXRjJworCiBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgcGF0aCBpcyB0aGUgcmF3IGZpbGVzeXN0ZW0gcGF0aCBpdHNlbGYKIChpbiBuYXRpdmUgZm9ybSwgZS5nLiB3aXRoIGJhY2tzbGFzaGVzIHVuZGVyIFdpbmRvd3MpLCB3aGljaCB5b3UgY2FuCiBwYXNzIHRvIGFueSBmdW5jdGlvbiB0YWtpbmcgYSBmaWxlIHBhdGggYXMgYSBzdHJpbmc6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGRiLnJzdCBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKaW5kZXggZDc3ZGUyZS4uNTJiZWY2OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGRiLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wZGIucnN0CkBAIC0xNDQsNyArMTQ0LDcgQEAKIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzIHlvdXJzZWxmOgogCiAuLiBjbGFzczo6IFBkYihjb21wbGV0ZWtleT0ndGFiJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgXAotICAgICAgICAgICAgICAgbm9zaWdpbnQ9RmFsc2UpCisgICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSwgcmVhZHJjPVRydWUpCiAKICAgIDpjbGFzczpgUGRiYCBpcyB0aGUgZGVidWdnZXIgY2xhc3MuCiAKQEAgLTE2MCw2ICsxNjAsOSBAQAogICAgVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGFnYWluIGJ5IHByZXNzaW5nIDprYmQ6YEN0cmwtQ2AuICBJZiB5b3UKICAgIHdhbnQgUGRiIG5vdCB0byB0b3VjaCB0aGUgU0lHSU5UIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvIHRydWUuCiAKKyAgIFRoZSAqcmVhZHJjKiBhcmd1bWVudCBkZWZhdWx0cyB0byB0cnVlIGFuZCBjb250cm9scyB3aGV0aGVyIFBkYiB3aWxsIGxvYWQKKyAgIC5wZGJyYyBmaWxlcyBmcm9tIHRoZSBmaWxlc3lzdGVtLgorCiAgICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6OgogCiAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydkamFuZ28uKiddKS5zZXRfdHJhY2UoKQpAQCAtMTcxLDYgKzE3NCw5IEBACiAgICAgICBUaGUgKm5vc2lnaW50KiBhcmd1bWVudC4gIFByZXZpb3VzbHksIGEgU0lHSU5UIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieQogICAgICAgUGRiLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50LgorCiAgICAuLiBtZXRob2Q6OiBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKQogICAgICAgICAgICAgICAgcnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKQogICAgICAgICAgICAgICAgcnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CmluZGV4IDBkNjQxOTEuLjZlODQzMGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdApAQCAtNDkyLDcgKzQ5Miw3IEBACiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2dldG5ld2FyZ3NfZXhfXygpCiAKLSAgIEluIHByb3RvY29scyA0IGFuZCBuZXdlciwgY2xhc3NlcyB0aGF0IGltcGxlbWVudHMgdGhlCisgICBJbiBwcm90b2NvbHMgMiBhbmQgbmV3ZXIsIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnRzIHRoZQogICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBtZXRob2QgY2FuIGRpY3RhdGUgdGhlIHZhbHVlcyBwYXNzZWQgdG8gdGhlCiAgICA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHVwb24gdW5waWNrbGluZy4gIFRoZSBtZXRob2QgbXVzdCByZXR1cm4gYSBwYWlyCiAgICBgYChhcmdzLCBrd2FyZ3MpYGAgd2hlcmUgKmFyZ3MqIGlzIGEgdHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMKQEAgLTUwNCwxNSArNTA0LDIyIEBACiAgICBjbGFzcyByZXF1aXJlcyBrZXl3b3JkLW9ubHkgYXJndW1lbnRzLiAgT3RoZXJ3aXNlLCBpdCBpcyByZWNvbW1lbmRlZCBmb3IKICAgIGNvbXBhdGliaWxpdHkgdG8gaW1wbGVtZW50IDptZXRoOmBfX2dldG5ld2FyZ3NfX2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGlzIG5vdyB1c2VkIGluIHByb3RvY29scyAyIGFuZCAzLgorCiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2dldG5ld2FyZ3NfXygpCiAKLSAgIFRoaXMgbWV0aG9kIHNlcnZlIGEgc2ltaWxhciBwdXJwb3NlIGFzIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgYnV0Ci0gICBmb3IgcHJvdG9jb2xzIDIgYW5kIG5ld2VyLiAgSXQgbXVzdCByZXR1cm4gYSB0dXBsZSBvZiBhcmd1bWVudHMgYGBhcmdzYGAKLSAgIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSA6bWV0aDpgX19uZXdfX2AgbWV0aG9kIHVwb24gdW5waWNrbGluZy4KKyAgIFRoaXMgbWV0aG9kIHNlcnZlIGEgc2ltaWxhciBwdXJwb3NlIGFzIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AsIGJ1dAorICAgc3VwcG9ydHMgb25seSBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIEl0IG11c3QgcmV0dXJuIGEgdHVwbGUgb2YgYXJndW1lbnRzCisgICBgYGFyZ3NgYCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgOm1ldGg6YF9fbmV3X19gIG1ldGhvZCB1cG9uIHVucGlja2xpbmcuCiAKLSAgIEluIHByb3RvY29scyA0IGFuZCBuZXdlciwgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYCB3aWxsIG5vdCBiZSBjYWxsZWQgaWYKLSAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgaXMgZGVmaW5lZC4KKyAgIDptZXRoOmBfX2dldG5ld2FyZ3NfX2Agd2lsbCBub3QgYmUgY2FsbGVkIGlmIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgaXMKKyAgIGRlZmluZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBCZWZvcmUgUHl0aG9uIDMuNiwgOm1ldGg6YF9fZ2V0bmV3YXJnc19fYCB3YXMgY2FsbGVkIGluc3RlYWQgb2YKKyAgICAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgaW4gcHJvdG9jb2xzIDIgYW5kIDMuCiAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0c3RhdGVfXygpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CmluZGV4IGFiZWFjNjIuLjkwZDY5ZTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0CkBAIC0xMSw2ICsxMSwxMSBAQAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgdXRpbGl0aWVzIGZvciB0aGUgaW1wb3J0IHN5c3RlbSwgaW4gcGFydGljdWxhciBwYWNrYWdlCiBzdXBwb3J0LgogCisuLiBjbGFzczo6IE1vZHVsZUluZm8obW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpCisKKyAgICBBIG5hbWVkdHVwbGUgdGhhdCBob2xkcyBhIGJyaWVmIHN1bW1hcnkgb2YgYSBtb2R1bGUncyBpbmZvLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGZ1bmN0aW9uOjogZXh0ZW5kX3BhdGgocGF0aCwgbmFtZSkKIApAQCAtMTM5LDcgKzE0NCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogaXRlcl9tb2R1bGVzKHBhdGg9Tm9uZSwgcHJlZml4PScnKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCisgICBZaWVsZHMgOmNsYXNzOmBNb2R1bGVJbmZvYCBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gKnBhdGgqLCBvciwgaWYKICAgICpwYXRoKiBpcyBgYE5vbmVgYCwgYWxsIHRvcC1sZXZlbCBtb2R1bGVzIG9uIGBgc3lzLnBhdGhgYC4KIAogICAgKnBhdGgqIHNob3VsZCBiZSBlaXRoZXIgYGBOb25lYGAgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yIG1vZHVsZXMgaW4uCkBAIC0xNjAsNyArMTY1LDcgQEAKIAogLi4gZnVuY3Rpb246OiB3YWxrX3BhY2thZ2VzKHBhdGg9Tm9uZSwgcHJlZml4PScnLCBvbmVycm9yPU5vbmUpCiAKLSAgIFlpZWxkcyBgYChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZylgYCBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkgb24KKyAgIFlpZWxkcyA6Y2xhc3M6YE1vZHVsZUluZm9gIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseSBvbgogICAgKnBhdGgqLCBvciwgaWYgKnBhdGgqIGlzIGBgTm9uZWBgLCBhbGwgYWNjZXNzaWJsZSBtb2R1bGVzLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CmluZGV4IGZmYWJjMzIuLmQ3MmI2NjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcG9wbGliLnJzdApAQCAtNjIsNiArNjIsMTMgQEAKICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYW5kICpTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKiAoc2VlCiAgICAgICA6ZGF0YTpgc3NsLkhBU19TTklgKS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKIE9uZSBleGNlcHRpb24gaXMgZGVmaW5lZCBhcyBhbiBhdHRyaWJ1dGUgb2YgdGhlIDptb2Q6YHBvcGxpYmAgbW9kdWxlOgogCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdCBiL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdAppbmRleCA5MjRiZTVhLi5iZDBmYzJkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcXVldWUucnN0CkBAIC0xNiw4ICsxNiw5IEBACiBtb2R1bGUuCiAKIFRoZSBtb2R1bGUgaW1wbGVtZW50cyB0aHJlZSB0eXBlcyBvZiBxdWV1ZSwgd2hpY2ggZGlmZmVyIG9ubHkgaW4gdGhlIG9yZGVyIGluCi13aGljaCB0aGUgZW50cmllcyBhcmUgcmV0cmlldmVkLiAgSW4gYSBGSUZPIHF1ZXVlLCB0aGUgZmlyc3QgdGFza3MgYWRkZWQgYXJlCi10aGUgZmlyc3QgcmV0cmlldmVkLiBJbiBhIExJRk8gcXVldWUsIHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGVudHJ5IGlzCit3aGljaCB0aGUgZW50cmllcyBhcmUgcmV0cmlldmVkLiAgSW4gYSA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgCitxdWV1ZSwgdGhlIGZpcnN0IHRhc2tzIGFkZGVkIGFyZSB0aGUgZmlyc3QgcmV0cmlldmVkLiBJbiBhCis6YWJicjpgTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUsIHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIGVudHJ5IGlzCiB0aGUgZmlyc3QgcmV0cmlldmVkIChvcGVyYXRpbmcgbGlrZSBhIHN0YWNrKS4gIFdpdGggYSBwcmlvcml0eSBxdWV1ZSwKIHRoZSBlbnRyaWVzIGFyZSBrZXB0IHNvcnRlZCAodXNpbmcgdGhlIDptb2Q6YGhlYXBxYCBtb2R1bGUpIGFuZCB0aGUKIGxvd2VzdCB2YWx1ZWQgZW50cnkgaXMgcmV0cmlldmVkIGZpcnN0LgpAQCAtMjksMTQgKzMwLDE2IEBACiAKIC4uIGNsYXNzOjogUXVldWUobWF4c2l6ZT0wKQogCi0gICBDb25zdHJ1Y3RvciBmb3IgYSBGSUZPIHF1ZXVlLiAgKm1heHNpemUqIGlzIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCisgICBDb25zdHJ1Y3RvciBmb3IgYSA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLiAgKm1heHNpemUqIGlzCisgICBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAogICAgbGltaXQgb24gdGhlIG51bWJlciBvZiBpdGVtcyB0aGF0IGNhbiBiZSBwbGFjZWQgaW4gdGhlIHF1ZXVlLiAgSW5zZXJ0aW9uIHdpbGwKICAgIGJsb2NrIG9uY2UgdGhpcyBzaXplIGhhcyBiZWVuIHJlYWNoZWQsIHVudGlsIHF1ZXVlIGl0ZW1zIGFyZSBjb25zdW1lZC4gIElmCiAgICAqbWF4c2l6ZSogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8sIHRoZSBxdWV1ZSBzaXplIGlzIGluZmluaXRlLgogCiAuLiBjbGFzczo6IExpZm9RdWV1ZShtYXhzaXplPTApCiAKLSAgIENvbnN0cnVjdG9yIGZvciBhIExJRk8gcXVldWUuICAqbWF4c2l6ZSogaXMgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKKyAgIENvbnN0cnVjdG9yIGZvciBhIDphYmJyOmBMSUZPIChsYXN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZS4gICptYXhzaXplKiBpcworICAgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKICAgIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW4gYmUgcGxhY2VkIGluIHRoZSBxdWV1ZS4gIEluc2VydGlvbiB3aWxsCiAgICBibG9jayBvbmNlIHRoaXMgc2l6ZSBoYXMgYmVlbiByZWFjaGVkLCB1bnRpbCBxdWV1ZSBpdGVtcyBhcmUgY29uc3VtZWQuICBJZgogICAgKm1heHNpemUqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CmluZGV4IDIyZjE4YTAuLmE0N2VkOWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdApAQCAtNDYsNyArNDYsOCBAQAogLi4gd2FybmluZzo6CiAKICAgIFRoZSBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcnMgb2YgdGhpcyBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvcgotICAgc2VjdXJpdHkgcHVycG9zZXMuCisgICBzZWN1cml0eSBwdXJwb3Nlcy4gIEZvciBzZWN1cml0eSBvciBjcnlwdG9ncmFwaGljIHVzZXMsIHNlZSB0aGUKKyAgIDptb2Q6YHNlY3JldHNgIG1vZHVsZS4KIAogCiBCb29ra2VlcGluZyBmdW5jdGlvbnM6CkBAIC0xMjMsNiArMTI0LDMxIEBACiAgICBSZXR1cm4gYSByYW5kb20gZWxlbWVudCBmcm9tIHRoZSBub24tZW1wdHkgc2VxdWVuY2UgKnNlcSouIElmICpzZXEqIGlzIGVtcHR5LAogICAgcmFpc2VzIDpleGM6YEluZGV4RXJyb3JgLgogCisuLiBmdW5jdGlvbjo6IGNob2ljZXMocG9wdWxhdGlvbiwgd2VpZ2h0cz1Ob25lLCAqLCBjdW1fd2VpZ2h0cz1Ob25lLCBrPTEpCisKKyAgIFJldHVybiBhICprKiBzaXplZCBsaXN0IG9mIGVsZW1lbnRzIGNob3NlbiBmcm9tIHRoZSAqcG9wdWxhdGlvbiogd2l0aCByZXBsYWNlbWVudC4KKyAgIElmIHRoZSAqcG9wdWxhdGlvbiogaXMgZW1wdHksIHJhaXNlcyA6ZXhjOmBJbmRleEVycm9yYC4KKworICAgSWYgYSAqd2VpZ2h0cyogc2VxdWVuY2UgaXMgc3BlY2lmaWVkLCBzZWxlY3Rpb25zIGFyZSBtYWRlIGFjY29yZGluZyB0byB0aGUKKyAgIHJlbGF0aXZlIHdlaWdodHMuICBBbHRlcm5hdGl2ZWx5LCBpZiBhICpjdW1fd2VpZ2h0cyogc2VxdWVuY2UgaXMgZ2l2ZW4sIHRoZQorICAgc2VsZWN0aW9ucyBhcmUgbWFkZSBhY2NvcmRpbmcgdG8gdGhlIGN1bXVsYXRpdmUgd2VpZ2h0cyAocGVyaGFwcyBjb21wdXRlZAorICAgdXNpbmcgOmZ1bmM6YGl0ZXJ0b29scy5hY2N1bXVsYXRlYCkuICBGb3IgZXhhbXBsZSwgdGhlIHJlbGF0aXZlIHdlaWdodHMKKyAgIGBgWzEwLCA1LCAzMCwgNV1gYCBhcmUgZXF1aXZhbGVudCB0byB0aGUgY3VtdWxhdGl2ZSB3ZWlnaHRzCisgICBgYFsxMCwgMTUsIDQ1LCA1MF1gYC4gIEludGVybmFsbHksIHRoZSByZWxhdGl2ZSB3ZWlnaHRzIGFyZSBjb252ZXJ0ZWQgdG8KKyAgIGN1bXVsYXRpdmUgd2VpZ2h0cyBiZWZvcmUgbWFraW5nIHNlbGVjdGlvbnMsIHNvIHN1cHBseWluZyB0aGUgY3VtdWxhdGl2ZQorICAgd2VpZ2h0cyBzYXZlcyB3b3JrLgorCisgICBJZiBuZWl0aGVyICp3ZWlnaHRzKiBub3IgKmN1bV93ZWlnaHRzKiBhcmUgc3BlY2lmaWVkLCBzZWxlY3Rpb25zIGFyZSBtYWRlCisgICB3aXRoIGVxdWFsIHByb2JhYmlsaXR5LiAgSWYgYSB3ZWlnaHRzIHNlcXVlbmNlIGlzIHN1cHBsaWVkLCBpdCBtdXN0IGJlCisgICB0aGUgc2FtZSBsZW5ndGggYXMgdGhlICpwb3B1bGF0aW9uKiBzZXF1ZW5jZS4gIEl0IGlzIGEgOmV4YzpgVHlwZUVycm9yYAorICAgdG8gc3BlY2lmeSBib3RoICp3ZWlnaHRzKiBhbmQgKmN1bV93ZWlnaHRzKi4KKworICAgVGhlICp3ZWlnaHRzKiBvciAqY3VtX3dlaWdodHMqIGNhbiB1c2UgYW55IG51bWVyaWMgdHlwZSB0aGF0IGludGVyb3BlcmF0ZXMKKyAgIHdpdGggdGhlIDpjbGFzczpgZmxvYXRgIHZhbHVlcyByZXR1cm5lZCBieSA6ZnVuYzpgcmFuZG9tYCAodGhhdCBpbmNsdWRlcworICAgaW50ZWdlcnMsIGZsb2F0cywgYW5kIGZyYWN0aW9ucyBidXQgZXhjbHVkZXMgZGVjaW1hbHMpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAuLiBmdW5jdGlvbjo6IHNodWZmbGUoeFssIHJhbmRvbV0pCiAKQEAgLTMxMywzNiArMzM5LDI4IEBACiAgICA+Pj4gcmFuZG9tLmNob2ljZSgnYWJjZGVmZ2hpaicpICAgICAgICAgICMgU2luZ2xlIHJhbmRvbSBlbGVtZW50CiAgICAnYycKIAotICAgPj4+IGl0ZW1zID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddCi0gICA+Pj4gcmFuZG9tLnNodWZmbGUoaXRlbXMpCi0gICA+Pj4gaXRlbXMKLSAgIFs3LCAzLCAyLCA1LCA2LCA0LCAxXQorICAgPj4+IGRlY2sgPSBbJ2phY2snLCAncXVlZW4nLCAna2luZycsICdhY2UnXQorICAgPj4+IHNodWZmbGUoZGVjaykKKyAgID4+PiBkZWNrCisgICBbJ2tpbmcnLCAncXVlZW4nLCAnYWNlJywgJ2phY2snXQogCiAgICA+Pj4gcmFuZG9tLnNhbXBsZShbMSwgMiwgMywgNCwgNV0sICAzKSAgICMgVGhyZWUgc2FtcGxlcyB3aXRob3V0IHJlcGxhY2VtZW50CiAgICBbNCwgMSwgNV0KIAotQSBjb21tb24gdGFzayBpcyB0byBtYWtlIGEgOmZ1bmM6YHJhbmRvbS5jaG9pY2VgIHdpdGggd2VpZ2h0ZWQgcHJvYmFiaWxpdGllcy4KKyAgID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaXggd2VpZ2h0ZWQgc2FtcGxlcyB3aXRoIHJlcGxhY2VtZW50CisgICA+Pj4gY2hvaWNlcyhbJ3JlZCcsICdibGFjaycsICdncmVlbiddLCBbMTgsIDE4LCAyXSwgaz02KQorICAgWydyZWQnLCAnZ3JlZW4nLCAnYmxhY2snLCAnYmxhY2snLCAncmVkJywgJ2JsYWNrJ10KIAotSWYgdGhlIHdlaWdodHMgYXJlIHNtYWxsIGludGVnZXIgcmF0aW9zLCBhIHNpbXBsZSB0ZWNobmlxdWUgaXMgdG8gYnVpbGQgYSBzYW1wbGUKLXBvcHVsYXRpb24gd2l0aCByZXBlYXRzOjoKK0V4YW1wbGUgb2YgYHN0YXRpc3RpY2FsIGJvb3RzdHJhcHBpbmcKKzxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Cb290c3RyYXBwaW5nXyhzdGF0aXN0aWNzKT5gXyB1c2luZyByZXNhbXBsaW5nCit3aXRoIHJlcGxhY2VtZW50IHRvIGVzdGltYXRlIGEgY29uZmlkZW5jZSBpbnRlcnZhbCBmb3IgdGhlIG1lYW4gb2YgYSBzbWFsbAorc2FtcGxlIG9mIHNpemUgZml2ZTo6CiAKLSAgICA+Pj4gd2VpZ2h0ZWRfY2hvaWNlcyA9IFsoJ1JlZCcsIDMpLCAoJ0JsdWUnLCAyKSwgKCdZZWxsb3cnLCAxKSwgKCdHcmVlbicsIDQpXQotICAgID4+PiBwb3B1bGF0aW9uID0gW3ZhbCBmb3IgdmFsLCBjbnQgaW4gd2VpZ2h0ZWRfY2hvaWNlcyBmb3IgaSBpbiByYW5nZShjbnQpXQotICAgID4+PiBwb3B1bGF0aW9uCi0gICAgWydSZWQnLCAnUmVkJywgJ1JlZCcsICdCbHVlJywgJ0JsdWUnLCAnWWVsbG93JywgJ0dyZWVuJywgJ0dyZWVuJywgJ0dyZWVuJywgJ0dyZWVuJ10KKyAgICMgaHR0cDovL3N0YXRpc3RpY3MuYWJvdXQuY29tL29kL0FwcGxpY2F0aW9ucy9hL0V4YW1wbGUtT2YtQm9vdHN0cmFwcGluZy5odG0KKyAgIGZyb20gc3RhdGlzdGljcyBpbXBvcnQgbWVhbgorICAgZnJvbSByYW5kb20gaW1wb3J0IGNob2ljZXMKIAotICAgID4+PiByYW5kb20uY2hvaWNlKHBvcHVsYXRpb24pCi0gICAgJ0dyZWVuJwotCi1BIG1vcmUgZ2VuZXJhbCBhcHByb2FjaCBpcyB0byBhcnJhbmdlIHRoZSB3ZWlnaHRzIGluIGEgY3VtdWxhdGl2ZSBkaXN0cmlidXRpb24KLXdpdGggOmZ1bmM6YGl0ZXJ0b29scy5hY2N1bXVsYXRlYCwgYW5kIHRoZW4gbG9jYXRlIHRoZSByYW5kb20gdmFsdWUgd2l0aAotOmZ1bmM6YGJpc2VjdC5iaXNlY3RgOjoKLQotICAgID4+PiBjaG9pY2VzLCB3ZWlnaHRzID0gemlwKCp3ZWlnaHRlZF9jaG9pY2VzKQotICAgID4+PiBjdW1kaXN0ID0gbGlzdChpdGVydG9vbHMuYWNjdW11bGF0ZSh3ZWlnaHRzKSkKLSAgICA+Pj4gY3VtZGlzdCAgICAgICAgICAgICMgWzMsIDMrMiwgMysyKzEsIDMrMisxKzRdCi0gICAgWzMsIDUsIDYsIDEwXQotCi0gICAgPj4+IHggPSByYW5kb20ucmFuZG9tKCkgKiBjdW1kaXN0Wy0xXQotICAgID4+PiBjaG9pY2VzW2Jpc2VjdC5iaXNlY3QoY3VtZGlzdCwgeCldCi0gICAgJ0JsdWUnCisgICBkYXRhID0gMSwgMiwgNCwgNCwgMTAKKyAgIG1lYW5zID0gc29ydGVkKG1lYW4oY2hvaWNlcyhkYXRhLCBrPTUpKSBmb3IgaSBpbiByYW5nZSgyMCkpCisgICBwcmludCgnVGhlIHNhbXBsZSBtZWFuIG9mIHs6LjFmfSBoYXMgYSA5MCUgY29uZmlkZW5jZSBpbnRlcnZhbCAnCisgICAgICAgICAnZnJvbSB7Oi4xZn0gdG8gezouMWZ9Jy5mb3JtYXQobWVhbihkYXRhKSwgbWVhbnNbMV0sIG1lYW5zWy0yXSkpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZS5yc3QgYi9Eb2MvbGlicmFyeS9yZS5yc3QKaW5kZXggMWNhNjIxZS4uYzlmMjI2MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlLnJzdApAQCAtMjMwLDEyICsyMzAsOCBAQAogICAgZmxhZ3MgYXJlIGRlc2NyaWJlZCBpbiA6cmVmOmBjb250ZW50cy1vZi1tb2R1bGUtcmVgLikgVGhpcwogICAgaXMgdXNlZnVsIGlmIHlvdSB3aXNoIHRvIGluY2x1ZGUgdGhlIGZsYWdzIGFzIHBhcnQgb2YgdGhlIHJlZ3VsYXIKICAgIGV4cHJlc3Npb24sIGluc3RlYWQgb2YgcGFzc2luZyBhICpmbGFnKiBhcmd1bWVudCB0byB0aGUKLSAgIDpmdW5jOmByZS5jb21waWxlYCBmdW5jdGlvbi4KLQotICAgTm90ZSB0aGF0IHRoZSBgYCg/eClgYCBmbGFnIGNoYW5nZXMgaG93IHRoZSBleHByZXNzaW9uIGlzIHBhcnNlZC4gSXQgc2hvdWxkIGJlCi0gICB1c2VkIGZpcnN0IGluIHRoZSBleHByZXNzaW9uIHN0cmluZywgb3IgYWZ0ZXIgb25lIG9yIG1vcmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgotICAgSWYgdGhlcmUgYXJlIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBmbGFnLCB0aGUgcmVzdWx0cyBhcmUKLSAgIHVuZGVmaW5lZC4KKyAgIDpmdW5jOmByZS5jb21waWxlYCBmdW5jdGlvbi4gIEZsYWdzIHNob3VsZCBiZSB1c2VkIGZpcnN0IGluIHRoZQorICAgZXhwcmVzc2lvbiBzdHJpbmcuCiAKIGBgKD86Li4uKWBgCiAgICBBIG5vbi1jYXB0dXJpbmcgdmVyc2lvbiBvZiByZWd1bGFyIHBhcmVudGhlc2VzLiAgTWF0Y2hlcyB3aGF0ZXZlciByZWd1bGFyCkBAIC0yNDMsNiArMjM5LDE2IEBACiAgICAqY2Fubm90KiBiZSByZXRyaWV2ZWQgYWZ0ZXIgcGVyZm9ybWluZyBhIG1hdGNoIG9yIHJlZmVyZW5jZWQgbGF0ZXIgaW4gdGhlCiAgICBwYXR0ZXJuLgogCitgYCg/aW1zeC1pbXN4Oi4uLilgYAorICAgKFplcm8gb3IgbW9yZSBsZXR0ZXJzIGZyb20gdGhlIHNldCBgYCdpJ2BgLCBgYCdtJ2BgLCBgYCdzJ2BgLCBgYCd4J2BgLAorICAgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBgYCctJ2BgIGZvbGxvd2VkIGJ5IG9uZSBvciBtb3JlIGxldHRlcnMgZnJvbSB0aGUKKyAgIHNhbWUgc2V0LikgIFRoZSBsZXR0ZXJzIHNldCBvciByZW1vdmVzIHRoZSBjb3JyZXNwb25kaW5nIGZsYWdzOgorICAgOmNvbnN0OmByZS5JYCAoaWdub3JlIGNhc2UpLCA6Y29uc3Q6YHJlLk1gIChtdWx0aS1saW5lKSwgOmNvbnN0OmByZS5TYAorICAgKGRvdCBtYXRjaGVzIGFsbCksIGFuZCA6Y29uc3Q6YHJlLlhgICh2ZXJib3NlKSwgZm9yIHRoZSBwYXJ0IG9mIHRoZQorICAgZXhwcmVzc2lvbi4gIChUaGUgZmxhZ3MgYXJlIGRlc2NyaWJlZCBpbiA6cmVmOmBjb250ZW50cy1vZi1tb2R1bGUtcmVgLikKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIGBgKD9QPG5hbWU+Li4uKWBgCiAgICBTaW1pbGFyIHRvIHJlZ3VsYXIgcGFyZW50aGVzZXMsIGJ1dCB0aGUgc3Vic3RyaW5nIG1hdGNoZWQgYnkgdGhlIGdyb3VwIGlzCiAgICBhY2Nlc3NpYmxlIHZpYSB0aGUgc3ltYm9saWMgZ3JvdXAgbmFtZSAqbmFtZSouICBHcm91cCBuYW1lcyBtdXN0IGJlIHZhbGlkCkBAIC0zMjcsOCArMzMzLDkgQEAKIAogCiBUaGUgc3BlY2lhbCBzZXF1ZW5jZXMgY29uc2lzdCBvZiBgYCdcJ2BgIGFuZCBhIGNoYXJhY3RlciBmcm9tIHRoZSBsaXN0IGJlbG93LgotSWYgdGhlIG9yZGluYXJ5IGNoYXJhY3RlciBpcyBub3Qgb24gdGhlIGxpc3QsIHRoZW4gdGhlIHJlc3VsdGluZyBSRSB3aWxsIG1hdGNoCi10aGUgc2Vjb25kIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYFwkYGAgbWF0Y2hlcyB0aGUgY2hhcmFjdGVyIGBgJyQnYGAuCitJZiB0aGUgb3JkaW5hcnkgY2hhcmFjdGVyIGlzIG5vdCBhbiBBU0NJSSBkaWdpdCBvciBhbiBBU0NJSSBsZXR0ZXIsIHRoZW4gdGhlCityZXN1bHRpbmcgUkUgd2lsbCBtYXRjaCB0aGUgc2Vjb25kIGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYFwkYGAgbWF0Y2hlcyB0aGUKK2NoYXJhY3RlciBgYCckJ2BgLgogCiBgYFxudW1iZXJgYAogICAgTWF0Y2hlcyB0aGUgY29udGVudHMgb2YgdGhlIGdyb3VwIG9mIHRoZSBzYW1lIG51bWJlci4gIEdyb3VwcyBhcmUgbnVtYmVyZWQKQEAgLTQ0OCw5ICs0NTUsOCBAQAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCiAKLS4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQotICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IGFyZSBlcnJvcnMuCiAKIAogLi4gc2VlYWxzbzo6CkBAIC01MzgsMTEgKzU0NCwxMSBAQAogICAgY3VycmVudCBsb2NhbGUuIFRoZSB1c2Ugb2YgdGhpcyBmbGFnIGlzIGRpc2NvdXJhZ2VkIGFzIHRoZSBsb2NhbGUgbWVjaGFuaXNtCiAgICBpcyB2ZXJ5IHVucmVsaWFibGUsIGFuZCBpdCBvbmx5IGhhbmRsZXMgb25lICJjdWx0dXJlIiBhdCBhIHRpbWUgYW55d2F5OwogICAgeW91IHNob3VsZCB1c2UgVW5pY29kZSBtYXRjaGluZyBpbnN0ZWFkLCB3aGljaCBpcyB0aGUgZGVmYXVsdCBpbiBQeXRob24gMwotICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuIFRoaXMgZmxhZyBtYWtlcyBzZW5zZSBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCisgICBmb3IgVW5pY29kZSAoc3RyKSBwYXR0ZXJucy4gVGhpcyBmbGFnIGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBieXRlcyBwYXR0ZXJucy4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgotICAgICAgRGVwcmVjYXRlZCB0aGUgdXNlIG9mICA6Y29uc3Q6YHJlLkxPQ0FMRWAgd2l0aCBzdHJpbmcgcGF0dGVybnMgb3IKLSAgICAgIDpjb25zdDpgcmUuQVNDSUlgLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDpjb25zdDpgcmUuTE9DQUxFYCBjYW4gYmUgdXNlZCBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMgYW5kIGlzCisgICAgICBub3QgY29tcGF0aWJsZSB3aXRoIDpjb25zdDpgcmUuQVNDSUlgLgogCiAKIC4uIGRhdGE6OiBNCkBAIC03NDgsOSArNzU0LDggQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBVbm1hdGNoZWQgZ3JvdXBzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IHN0cmluZy4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy41IDMuNgotICAgICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Qgb2YgYGAnXCdgYCBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhCi0gICAgICBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCB3aWxsIGJlIGZvcmJpZGRlbiBpbiBQeXRob24gMy42LgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlciBub3cgYXJlIGVycm9ycy4KIAogCiAuLiBmdW5jdGlvbjo6IHN1Ym4ocGF0dGVybiwgcmVwbCwgc3RyaW5nLCBjb3VudD0wLCBmbGFncz0wKQpAQCAtMTAxNiw2ICsxMDIxLDIyIEBACiAgICAgICAnYzMnCiAKIAorLi4gbWV0aG9kOjogbWF0Y2guX19nZXRpdGVtX18oZykKKworICAgVGhpcyBpcyBpZGVudGljYWwgdG8gYGBtLmdyb3VwKGcpYGAuICBUaGlzIGFsbG93cyBlYXNpZXIgYWNjZXNzIHRvCisgICBhbiBpbmRpdmlkdWFsIGdyb3VwIGZyb20gYSBtYXRjaDoKKworICAgICAgPj4+IG0gPSByZS5tYXRjaChyIihcdyspIChcdyspIiwgIklzYWFjIE5ld3RvbiwgcGh5c2ljaXN0IikKKyAgICAgID4+PiBtWzBdICAgICAgICMgVGhlIGVudGlyZSBtYXRjaAorICAgICAgJ0lzYWFjIE5ld3RvbicKKyAgICAgID4+PiBtWzFdICAgICAgICMgVGhlIGZpcnN0IHBhcmVudGhlc2l6ZWQgc3ViZ3JvdXAuCisgICAgICAnSXNhYWMnCisgICAgICA+Pj4gbVsyXSAgICAgICAjIFRoZSBzZWNvbmQgcGFyZW50aGVzaXplZCBzdWJncm91cC4KKyAgICAgICdOZXd0b24nCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIG1ldGhvZDo6IG1hdGNoLmdyb3VwcyhkZWZhdWx0PU5vbmUpCiAKICAgIFJldHVybiBhIHR1cGxlIGNvbnRhaW5pbmcgYWxsIHRoZSBzdWJncm91cHMgb2YgdGhlIG1hdGNoLCBmcm9tIDEgdXAgdG8gaG93ZXZlcgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0IGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CmluZGV4IDRkM2MwOTkuLjU0YzU0YjQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKQEAgLTE2Nyw2ICsxNjcsMjAgQEAKICAgIFRoaXMgY2FsbHMgOmM6ZnVuYzpgYWRkX2hpc3RvcnlgIGluIHRoZSB1bmRlcmx5aW5nIGxpYnJhcnkuCiAKIAorLi4gZnVuY3Rpb246OiBzZXRfYXV0b19oaXN0b3J5KGVuYWJsZWQpCisKKyAgIEVuYWJsZSBvciBkaXNhYmxlIGF1dG9tYXRpYyBjYWxscyB0byA6YzpmdW5jOmBhZGRfaGlzdG9yeWAgd2hlbiByZWFkaW5nCisgICBpbnB1dCB2aWEgcmVhZGxpbmUuICBUaGUgKmVuYWJsZWQqIGFyZ3VtZW50IHNob3VsZCBiZSBhIEJvb2xlYW4gdmFsdWUKKyAgIHRoYXQgd2hlbiB0cnVlLCBlbmFibGVzIGF1dG8gaGlzdG9yeSwgYW5kIHRoYXQgd2hlbiBmYWxzZSwgZGlzYWJsZXMKKyAgIGF1dG8gaGlzdG9yeS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgIC4uIGltcGwtZGV0YWlsOjoKKyAgICAgIEF1dG8gaGlzdG9yeSBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIGFuZCBjaGFuZ2VzIHRvIHRoaXMgZG8gbm90IHBlcnNpc3QKKyAgICAgIGFjcm9zcyBtdWx0aXBsZSBzZXNzaW9ucy4KKworCiBTdGFydHVwIGhvb2tzCiAtLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NlY3JldHMucnN0IGIvRG9jL2xpYnJhcnkvc2VjcmV0cy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWJmODQ4ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3NlY3JldHMucnN0CkBAIC0wLDAgKzEsMTk4IEBACis6bW9kOmBzZWNyZXRzYCAtLS0gR2VuZXJhdGUgc2VjdXJlIHJhbmRvbSBudW1iZXJzIGZvciBtYW5hZ2luZyBzZWNyZXRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IHNlY3JldHMKKyAgIDpzeW5vcHNpczogR2VuZXJhdGUgc2VjdXJlIHJhbmRvbSBudW1iZXJzIGZvciBtYW5hZ2luZyBzZWNyZXRzLgorCisuLiBtb2R1bGVhdXRob3I6OiBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPgorLi4gc2VjdGlvbmF1dGhvcjo6IFN0ZXZlbiBEJ0FwcmFubyA8c3RldmUrcHl0aG9uQHBlYXJ3b29kLmluZm8+CisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gdGVzdHNldHVwOjoKKworICAgZnJvbSBzZWNyZXRzIGltcG9ydCAqCisgICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3NlY3JldHMucHlgCisKKy0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBpcyB1c2VkIGZvciBnZW5lcmF0aW5nIGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZworcmFuZG9tIG51bWJlcnMgc3VpdGFibGUgZm9yIG1hbmFnaW5nIGRhdGEgc3VjaCBhcyBwYXNzd29yZHMsIGFjY291bnQKK2F1dGhlbnRpY2F0aW9uLCBzZWN1cml0eSB0b2tlbnMsIGFuZCByZWxhdGVkIHNlY3JldHMuCisKK0luIHBhcnRpY3VsYXJseSwgOm1vZDpgc2VjcmV0c2Agc2hvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUKK2RlZmF1bHQgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGluIHRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSwgd2hpY2gKK2lzIGRlc2lnbmVkIGZvciBtb2RlbGxpbmcgYW5kIHNpbXVsYXRpb24sIG5vdCBzZWN1cml0eSBvciBjcnlwdG9ncmFwaHkuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MDZgCisKKworUmFuZG9tIG51bWJlcnMKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBtb3N0IHNlY3VyZSBzb3VyY2Ugb2YKK3JhbmRvbW5lc3MgdGhhdCB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gcHJvdmlkZXMuCisKKy4uIGNsYXNzOjogU3lzdGVtUmFuZG9tCisKKyAgIEEgY2xhc3MgZm9yIGdlbmVyYXRpbmcgcmFuZG9tIG51bWJlcnMgdXNpbmcgdGhlIGhpZ2hlc3QtcXVhbGl0eQorICAgc291cmNlcyBwcm92aWRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIFNlZQorICAgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYCBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgorCisuLiBmdW5jdGlvbjo6IGNob2ljZShzZXF1ZW5jZSkKKworICAgUmV0dXJuIGEgcmFuZG9tbHktY2hvc2VuIGVsZW1lbnQgZnJvbSBhIG5vbi1lbXB0eSBzZXF1ZW5jZS4KKworLi4gZnVuY3Rpb246OiByYW5kYmVsb3cobikKKworICAgUmV0dXJuIGEgcmFuZG9tIGludCBpbiB0aGUgcmFuZ2UgWzAsICpuKikuCisKKy4uIGZ1bmN0aW9uOjogcmFuZGJpdHMoaykKKworICAgUmV0dXJuIGFuIGludCB3aXRoICprKiByYW5kb20gYml0cy4KKworCitHZW5lcmF0aW5nIHRva2VucworLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIGdlbmVyYXRpbmcgc2VjdXJlCit0b2tlbnMsIHN1aXRhYmxlIGZvciBhcHBsaWNhdGlvbnMgc3VjaCBhcyBwYXNzd29yZCByZXNldHMsCitoYXJkLXRvLWd1ZXNzIFVSTHMsIGFuZCBzaW1pbGFyLgorCisuLiBmdW5jdGlvbjo6IHRva2VuX2J5dGVzKFtuYnl0ZXM9Tm9uZV0pCisKKyAgIFJldHVybiBhIHJhbmRvbSBieXRlIHN0cmluZyBjb250YWluaW5nICpuYnl0ZXMqIG51bWJlciBvZiBieXRlcy4KKyAgIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMKKyAgIHVzZWQuCisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gdG9rZW5fYnl0ZXMoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICAgYidceGViclx4MTdEKnRceGFlXHhkNFx4ZTNTXHhiNlx4ZTJceGViUDFceDhiJworCisKKy4uIGZ1bmN0aW9uOjogdG9rZW5faGV4KFtuYnl0ZXM9Tm9uZV0pCisKKyAgIFJldHVybiBhIHJhbmRvbSB0ZXh0IHN0cmluZywgaW4gaGV4YWRlY2ltYWwuICBUaGUgc3RyaW5nIGhhcyAqbmJ5dGVzKgorICAgcmFuZG9tIGJ5dGVzLCBlYWNoIGJ5dGUgY29udmVydGVkIHRvIHR3byBoZXggZGlnaXRzLiAgSWYgKm5ieXRlcyogaXMKKyAgIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlIGRlZmF1bHQgaXMgdXNlZC4KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiB0b2tlbl9oZXgoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICAgJ2Y5YmY3OGI5YTE4Y2U2ZDQ2YTBjZDJiMGI4NmRmOWRhJworCisuLiBmdW5jdGlvbjo6IHRva2VuX3VybHNhZmUoW25ieXRlcz1Ob25lXSkKKworICAgUmV0dXJuIGEgcmFuZG9tIFVSTC1zYWZlIHRleHQgc3RyaW5nLCBjb250YWluaW5nICpuYnl0ZXMqIHJhbmRvbQorICAgYnl0ZXMuICBUaGUgdGV4dCBpcyBCYXNlNjQgZW5jb2RlZCwgc28gb24gYXZlcmFnZSBlYWNoIGJ5dGUgcmVzdWx0cworICAgaW4gYXBwcm94aW1hdGVseSAxLjMgY2hhcmFjdGVycy4gIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdAorICAgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gdG9rZW5fdXJsc2FmZSgxNikgICNkb2N0ZXN0OitTS0lQCisgICAgICAnRHJtaHplNkVQY3YwZk5fODFCai1uQScKKworCitIb3cgbWFueSBieXRlcyBzaG91bGQgdG9rZW5zIHVzZT8KK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUbyBiZSBzZWN1cmUgYWdhaW5zdAorYGJydXRlLWZvcmNlIGF0dGFja3MgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JydXRlLWZvcmNlX2F0dGFjaz5gXywKK3Rva2VucyBuZWVkIHRvIGhhdmUgc3VmZmljaWVudCByYW5kb21uZXNzLiAgVW5mb3J0dW5hdGVseSwgd2hhdCBpcworY29uc2lkZXJlZCBzdWZmaWNpZW50IHdpbGwgbmVjZXNzYXJpbHkgaW5jcmVhc2UgYXMgY29tcHV0ZXJzIGdldCBtb3JlCitwb3dlcmZ1bCBhbmQgYWJsZSB0byBtYWtlIG1vcmUgZ3Vlc3NlcyBpbiBhIHNob3J0ZXIgcGVyaW9kLiAgQXMgb2YgMjAxNSwKK2l0IGlzIGJlbGlldmVkIHRoYXQgMzIgYnl0ZXMgKDI1NiBiaXRzKSBvZiByYW5kb21uZXNzIGlzIHN1ZmZpY2llbnQgZm9yCit0aGUgdHlwaWNhbCB1c2UtY2FzZSBleHBlY3RlZCBmb3IgdGhlIDptb2Q6YHNlY3JldHNgIG1vZHVsZS4KKworRm9yIHRob3NlIHdobyB3YW50IHRvIG1hbmFnZSB0aGVpciBvd24gdG9rZW4gbGVuZ3RoLCB5b3UgY2FuIGV4cGxpY2l0bHkKK3NwZWNpZnkgaG93IG11Y2ggcmFuZG9tbmVzcyBpcyB1c2VkIGZvciB0b2tlbnMgYnkgZ2l2aW5nIGFuIDpjbGFzczpgaW50YAorYXJndW1lbnQgdG8gdGhlIHZhcmlvdXMgYGB0b2tlbl8qYGAgZnVuY3Rpb25zLiAgVGhhdCBhcmd1bWVudCBpcyB0YWtlbgorYXMgdGhlIG51bWJlciBvZiBieXRlcyBvZiByYW5kb21uZXNzIHRvIHVzZS4KKworT3RoZXJ3aXNlLCBpZiBubyBhcmd1bWVudCBpcyBwcm92aWRlZCwgb3IgaWYgdGhlIGFyZ3VtZW50IGlzIGBgTm9uZWBgLAordGhlIGBgdG9rZW5fKmBgIGZ1bmN0aW9ucyB3aWxsIHVzZSBhIHJlYXNvbmFibGUgZGVmYXVsdCBpbnN0ZWFkLgorCisuLiBub3RlOjoKKworICAgVGhhdCBkZWZhdWx0IGlzIHN1YmplY3QgdG8gY2hhbmdlIGF0IGFueSB0aW1lLCBpbmNsdWRpbmcgZHVyaW5nCisgICBtYWludGVuYW5jZSByZWxlYXNlcy4KKworCitPdGhlciBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGNvbXBhcmVfZGlnZXN0KGEsIGIpCisKKyAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmdzICphKiBhbmQgKmIqIGFyZSBlcXVhbCwgb3RoZXJ3aXNlIGBgRmFsc2VgYCwKKyAgIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmVkdWNlIHRoZSByaXNrIG9mCisgICBgdGltaW5nIGF0dGFja3MgPGh0dHA6Ly9jb2RhaGFsZS5jb20vYS1sZXNzb24taW4tdGltaW5nLWF0dGFja3MvPmBfLgorICAgU2VlIDpmdW5jOmBobWFjLmNvbXBhcmVfZGlnZXN0YCBmb3IgYWRkaXRpb25hbCBkZXRhaWxzLgorCisKK1JlY2lwZXMgYW5kIGJlc3QgcHJhY3RpY2VzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIHNlY3Rpb24gc2hvd3MgcmVjaXBlcyBhbmQgYmVzdCBwcmFjdGljZXMgZm9yIHVzaW5nIDptb2Q6YHNlY3JldHNgCit0byBtYW5hZ2UgYSBiYXNpYyBsZXZlbCBvZiBzZWN1cml0eS4KKworR2VuZXJhdGUgYW4gZWlnaHQtY2hhcmFjdGVyIGFscGhhbnVtZXJpYyBwYXNzd29yZDoKKworLi4gdGVzdGNvZGU6OgorCisgICBpbXBvcnQgc3RyaW5nCisgICBhbHBoYWJldCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgcGFzc3dvcmQgPSAnJy5qb2luKGNob2ljZShhbHBoYWJldCkgZm9yIGkgaW4gcmFuZ2UoOCkpCisKKworLi4gbm90ZTo6CisKKyAgIEFwcGxpY2F0aW9ucyBzaG91bGQgbm90CisgICBgc3RvcmUgcGFzc3dvcmRzIGluIGEgcmVjb3ZlcmFibGUgZm9ybWF0IDxodHRwOi8vY3dlLm1pdHJlLm9yZy9kYXRhL2RlZmluaXRpb25zLzI1Ny5odG1sPmBfLAorICAgd2hldGhlciBwbGFpbiB0ZXh0IG9yIGVuY3J5cHRlZC4gIFRoZXkgc2hvdWxkIGJlIHNhbHRlZCBhbmQgaGFzaGVkCisgICB1c2luZyBhIGNyeXB0b2dyYXBoaWNhbGx5LXN0cm9uZyBvbmUtd2F5IChpcnJldmVyc2libGUpIGhhc2ggZnVuY3Rpb24uCisKKworR2VuZXJhdGUgYSB0ZW4tY2hhcmFjdGVyIGFscGhhbnVtZXJpYyBwYXNzd29yZCB3aXRoIGF0IGxlYXN0IG9uZQorbG93ZXJjYXNlIGNoYXJhY3RlciwgYXQgbGVhc3Qgb25lIHVwcGVyY2FzZSBjaGFyYWN0ZXIsIGFuZCBhdCBsZWFzdAordGhyZWUgZGlnaXRzOgorCisuLiB0ZXN0Y29kZTo6CisKKyAgIGltcG9ydCBzdHJpbmcKKyAgIGFscGhhYmV0ID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzCisgICB3aGlsZSBUcnVlOgorICAgICAgIHBhc3N3b3JkID0gJycuam9pbihjaG9pY2UoYWxwaGFiZXQpIGZvciBpIGluIHJhbmdlKDEwKSkKKyAgICAgICBpZiAoYW55KGMuaXNsb3dlcigpIGZvciBjIGluIHBhc3N3b3JkKQorICAgICAgICAgICAgICAgYW5kIGFueShjLmlzdXBwZXIoKSBmb3IgYyBpbiBwYXNzd29yZCkKKyAgICAgICAgICAgICAgIGFuZCBzdW0oYy5pc2RpZ2l0KCkgZm9yIGMgaW4gcGFzc3dvcmQpID49IDMpOgorICAgICAgICAgICBicmVhaworCisKK0dlbmVyYXRlIGFuIGBYS0NELXN0eWxlIHBhc3NwaHJhc2UgPGh0dHA6Ly94a2NkLmNvbS85MzYvPmBfOgorCisuLiB0ZXN0Y29kZTo6CisKKyAgICMgT24gc3RhbmRhcmQgTGludXggc3lzdGVtcywgdXNlIGEgY29udmVuaWVudCBkaWN0aW9uYXJ5IGZpbGUuCisgICAjIE90aGVyIHBsYXRmb3JtcyBtYXkgbmVlZCB0byBwcm92aWRlIHRoZWlyIG93biB3b3JkLWxpc3QuCisgICB3aXRoIG9wZW4oJy91c3Ivc2hhcmUvZGljdC93b3JkcycpIGFzIGY6CisgICAgICAgd29yZHMgPSBbd29yZC5zdHJpcCgpIGZvciB3b3JkIGluIGZdCisgICAgICAgcGFzc3dvcmQgPSAnICcuam9pbihjaG9pY2Uod29yZHMpIGZvciBpIGluIHJhbmdlKDQpKQorCisKK0dlbmVyYXRlIGEgaGFyZC10by1ndWVzcyB0ZW1wb3JhcnkgVVJMIGNvbnRhaW5pbmcgYSBzZWN1cml0eSB0b2tlbgorc3VpdGFibGUgZm9yIHBhc3N3b3JkIHJlY292ZXJ5IGFwcGxpY2F0aW9uczoKKworLi4gdGVzdGNvZGU6OgorCisgICB1cmwgPSAnaHR0cHM6Ly9teWRvbWFpbi5jb20vcmVzZXQ9JyArIHRva2VuX3VybHNhZmUoKQorCisKKworLi4KKyAgICMgVGhpcyBtb2RlbGluZSBtdXN0IGFwcGVhciB3aXRoaW4gdGhlIGxhc3QgdGVuIGxpbmVzIG9mIHRoZSBmaWxlLgorICAga2F0ZTogaW5kZW50LXdpZHRoIDM7IHJlbW92ZS10cmFpbGluZy1zcGFjZSBvbjsgcmVwbGFjZS10YWJzIG9uOyBlbmNvZGluZyB1dGYtODsKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CmluZGV4IGE4MTM4NmEuLmY5NzExOGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdApAQCAtMjY4LDM1ICsyNjgsNDMgQEAKIAogICAgKmV2ZW50bWFzayoKIAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBDb25zdGFudCAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwotICAgfCA6Y29uc3Q6YEVQT0xMSU5gICAgICAgfCBBdmFpbGFibGUgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgfCBBdmFpbGFibGUgZm9yIHdyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMUFJJYCAgICAgfCBVcmdlbnQgZGF0YSBmb3IgcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMRVJSYCAgICAgfCBFcnJvciBjb25kaXRpb24gaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMSFVQYCAgICAgfCBIYW5nIHVwIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMRVRgICAgICAgfCBTZXQgRWRnZSBUcmlnZ2VyIGJlaGF2aW9yLCB0aGUgZGVmYXVsdCBpcyAgICAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCBMZXZlbCBUcmlnZ2VyIGJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMT05FU0hPVGAgfCBTZXQgb25lLXNob3QgYmVoYXZpb3IuIEFmdGVyIG9uZSBldmVudCBpcyAgICAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCBwdWxsZWQgb3V0LCB0aGUgZmQgaXMgaW50ZXJuYWxseSBkaXNhYmxlZCAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMUkROT1JNYCAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExJTmAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMUkRCQU5EYCAgfCBQcmlvcml0eSBkYXRhIGJhbmQgY2FuIGJlIHJlYWQuICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMV1JOT1JNYCAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExPVVRgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMV1JCQU5EYCAgfCBQcmlvcml0eSBkYXRhIG1heSBiZSB3cml0dGVuLiAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YEVQT0xMTVNHYCAgICAgfCBJZ25vcmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IENvbnN0YW50ICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCA6Y29uc3Q6YEVQT0xMSU5gICAgICAgICB8IEF2YWlsYWJsZSBmb3IgcmVhZCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTE9VVGAgICAgICAgfCBBdmFpbGFibGUgZm9yIHdyaXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExQUklgICAgICAgIHwgVXJnZW50IGRhdGEgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVJSYCAgICAgICB8IEVycm9yIGNvbmRpdGlvbiBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEhVUGAgICAgICAgfCBIYW5nIHVwIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExFVGAgICAgICAgIHwgU2V0IEVkZ2UgVHJpZ2dlciBiZWhhdmlvciwgdGhlIGRlZmF1bHQgaXMgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBMZXZlbCBUcmlnZ2VyIGJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExPTkVTSE9UYCAgIHwgU2V0IG9uZS1zaG90IGJlaGF2aW9yLiBBZnRlciBvbmUgZXZlbnQgaXMgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBwdWxsZWQgb3V0LCB0aGUgZmQgaXMgaW50ZXJuYWxseSBkaXNhYmxlZCAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExFWENMVVNJVkVgIHwgV2FrZSBvbmx5IG9uZSBlcG9sbCBvYmplY3Qgd2hlbiB0aGUgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBhc3NvY2lhdGVkIGZkIGhhcyBhbiBldmVudC4gVGhlIGRlZmF1bHQgKGlmICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoaXMgZmxhZyBpcyBub3Qgc2V0KSBpcyB0byB3YWtlIGFsbCBlcG9sbCAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2JqZWN0cyBwb2xsaW5nIG9uIG9uIGEgZmQuICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUkRIVVBgICAgICB8IFN0cmVhbSBzb2NrZXQgcGVlciBjbG9zZWQgY29ubmVjdGlvbiBvciBzaHV0ICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZG93biB3cml0aW5nIGhhbGYgb2YgY29ubmVjdGlvbi4gICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUkROT1JNYCAgICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTElOYCAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJEQkFORGAgICAgfCBQcmlvcml0eSBkYXRhIGJhbmQgY2FuIGJlIHJlYWQuICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExXUk5PUk1gICAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMV1JCQU5EYCAgICB8IFByaW9yaXR5IGRhdGEgbWF5IGJlIHdyaXR0ZW4uICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTE1TR2AgICAgICAgfCBJZ25vcmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIAogLi4gbWV0aG9kOjogZXBvbGwuY2xvc2UoKQpAQCAtMzg1LDYgKzM5Myw5IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDpjb25zdDpgUE9MTEhVUGAgIHwgSHVuZyB1cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgUE9MTFJESFVQYHwgU3RyZWFtIHNvY2tldCBwZWVyIGNsb3NlZCBjb25uZWN0aW9uLCBvciB8CisgICB8ICAgICAgICAgICAgICAgICAgIHwgc2h1dCBkb3duIHdyaXRpbmcgaGFsZiBvZiBjb25uZWN0aW9uICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IDpjb25zdDpgUE9MTE5WQUxgIHwgSW52YWxpZCByZXF1ZXN0OiBkZXNjcmlwdG9yIG5vdCBvcGVuICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NobGV4LnJzdCBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdAppbmRleCBlODFmOTgyLi4xYTg5YmY2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2hsZXgucnN0CkBAIC03MywxMSArNzMsMTEgQEAKIFRoZSA6bW9kOmBzaGxleGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzczoKIAogCi0uLiBjbGFzczo6IHNobGV4KGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSkKKy4uIGNsYXNzOjogc2hsZXgoaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PUZhbHNlLCBwdW5jdHVhdGlvbl9jaGFycz1GYWxzZSkKIAogICAgQSA6Y2xhc3M6YH5zaGxleC5zaGxleGAgaW5zdGFuY2Ugb3Igc3ViY2xhc3MgaW5zdGFuY2UgaXMgYSBsZXhpY2FsIGFuYWx5emVyCiAgICBvYmplY3QuICBUaGUgaW5pdGlhbGl6YXRpb24gYXJndW1lbnQsIGlmIHByZXNlbnQsIHNwZWNpZmllcyB3aGVyZSB0byByZWFkCi0gICBjaGFyYWN0ZXJzIGZyb20uIEl0IG11c3QgYmUgYSBmaWxlLS9zdHJlYW0tbGlrZSBvYmplY3Qgd2l0aAorICAgY2hhcmFjdGVycyBmcm9tLiAgSXQgbXVzdCBiZSBhIGZpbGUtL3N0cmVhbS1saWtlIG9iamVjdCB3aXRoCiAgICA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAgYW5kIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgbWV0aG9kcywgb3IKICAgIGEgc3RyaW5nLiAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIGlucHV0IHdpbGwgYmUgdGFrZW4gZnJvbSBgYHN5cy5zdGRpbmBgLgogICAgVGhlIHNlY29uZCBvcHRpb25hbCBhcmd1bWVudCBpcyBhIGZpbGVuYW1lIHN0cmluZywgd2hpY2ggc2V0cyB0aGUgaW5pdGlhbApAQCAtODcsOCArODcsMTkgQEAKICAgIHdoZW4gKnBvc2l4KiBpcyBub3QgdHJ1ZSAoZGVmYXVsdCksIHRoZSA6Y2xhc3M6YH5zaGxleC5zaGxleGAgaW5zdGFuY2Ugd2lsbAogICAgb3BlcmF0ZSBpbiBjb21wYXRpYmlsaXR5IG1vZGUuICBXaGVuIG9wZXJhdGluZyBpbiBQT1NJWCBtb2RlLAogICAgOmNsYXNzOmB+c2hsZXguc2hsZXhgIHdpbGwgdHJ5IHRvIGJlIGFzIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBQT1NJWCBzaGVsbAotICAgcGFyc2luZyBydWxlcy4KKyAgIHBhcnNpbmcgcnVsZXMuICBUaGUgKnB1bmN0dWF0aW9uX2NoYXJzKiBhcmd1bWVudCBwcm92aWRlcyBhIHdheSB0byBtYWtlIHRoZQorICAgYmVoYXZpb3VyIGV2ZW4gY2xvc2VyIHRvIGhvdyByZWFsIHNoZWxscyBwYXJzZS4gIFRoaXMgY2FuIHRha2UgYSBudW1iZXIgb2YKKyAgIHZhbHVlczogdGhlIGRlZmF1bHQgdmFsdWUsIGBgRmFsc2VgYCwgcHJlc2VydmVzIHRoZSBiZWhhdmlvdXIgc2VlbiB1bmRlcgorICAgUHl0aG9uIDMuNSBhbmQgZWFybGllci4gIElmIHNldCB0byBgYFRydWVgYCwgdGhlbiBwYXJzaW5nIG9mIHRoZSBjaGFyYWN0ZXJzCisgICBgYCgpOzw+fCZgYCBpcyBjaGFuZ2VkOiBhbnkgcnVuIG9mIHRoZXNlIGNoYXJhY3RlcnMgKGNvbnNpZGVyZWQgcHVuY3R1YXRpb24KKyAgIGNoYXJhY3RlcnMpIGlzIHJldHVybmVkIGFzIGEgc2luZ2xlIHRva2VuLiAgSWYgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZyBvZgorICAgY2hhcmFjdGVycywgdGhvc2UgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgYXMgdGhlIHB1bmN0dWF0aW9uIGNoYXJhY3RlcnMuICBBbnkKKyAgIGNoYXJhY3RlcnMgaW4gdGhlIDphdHRyOmB3b3JkY2hhcnNgIGF0dHJpYnV0ZSB0aGF0IGFwcGVhciBpbgorICAgKnB1bmN0dWF0aW9uX2NoYXJzKiB3aWxsIGJlIHJlbW92ZWQgZnJvbSA6YXR0cjpgd29yZGNoYXJzYC4gIFNlZQorICAgOnJlZjpgaW1wcm92ZWQtc2hlbGwtY29tcGF0aWJpbGl0eWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgKnB1bmN0dWF0aW9uX2NoYXJzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMTkxLDcgKzIwMiwxMyBAQAogLi4gYXR0cmlidXRlOjogc2hsZXgud29yZGNoYXJzCiAKICAgIFRoZSBzdHJpbmcgb2YgY2hhcmFjdGVycyB0aGF0IHdpbGwgYWNjdW11bGF0ZSBpbnRvIG11bHRpLWNoYXJhY3RlciB0b2tlbnMuICBCeQotICAgZGVmYXVsdCwgaW5jbHVkZXMgYWxsIEFTQ0lJIGFscGhhbnVtZXJpY3MgYW5kIHVuZGVyc2NvcmUuCisgICBkZWZhdWx0LCBpbmNsdWRlcyBhbGwgQVNDSUkgYWxwaGFudW1lcmljcyBhbmQgdW5kZXJzY29yZS4gIEluIFBPU0lYIG1vZGUsIHRoZQorICAgYWNjZW50ZWQgY2hhcmFjdGVycyBpbiB0aGUgTGF0aW4tMSBzZXQgYXJlIGFsc28gaW5jbHVkZWQuICBJZgorICAgOmF0dHI6YHB1bmN0dWF0aW9uX2NoYXJzYCBpcyBub3QgZW1wdHksIHRoZSBjaGFyYWN0ZXJzIGBgfi0uLyo/PWBgLCB3aGljaCBjYW4KKyAgIGFwcGVhciBpbiBmaWxlbmFtZSBzcGVjaWZpY2F0aW9ucyBhbmQgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMsIHdpbGwgYWxzbyBiZQorICAgaW5jbHVkZWQgaW4gdGhpcyBhdHRyaWJ1dGUsIGFuZCBhbnkgY2hhcmFjdGVycyB3aGljaCBhcHBlYXIgaW4KKyAgIGBgcHVuY3R1YXRpb25fY2hhcnNgYCB3aWxsIGJlIHJlbW92ZWQgZnJvbSBgYHdvcmRjaGFyc2BgIGlmIHRoZXkgYXJlIHByZXNlbnQKKyAgIHRoZXJlLgogCiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndoaXRlc3BhY2UKQEAgLTIyMiw5ICsyMzksMTMgQEAKIAogLi4gYXR0cmlidXRlOjogc2hsZXgud2hpdGVzcGFjZV9zcGxpdAogCi0gICBJZiBgYFRydWVgYCwgdG9rZW5zIHdpbGwgb25seSBiZSBzcGxpdCBpbiB3aGl0ZXNwYWNlcy4gVGhpcyBpcyB1c2VmdWwsIGZvcgorICAgSWYgYGBUcnVlYGAsIHRva2VucyB3aWxsIG9ubHkgYmUgc3BsaXQgaW4gd2hpdGVzcGFjZXMuICBUaGlzIGlzIHVzZWZ1bCwgZm9yCiAgICBleGFtcGxlLCBmb3IgcGFyc2luZyBjb21tYW5kIGxpbmVzIHdpdGggOmNsYXNzOmB+c2hsZXguc2hsZXhgLCBnZXR0aW5nCi0gICB0b2tlbnMgaW4gYSBzaW1pbGFyIHdheSB0byBzaGVsbCBhcmd1bWVudHMuCisgICB0b2tlbnMgaW4gYSBzaW1pbGFyIHdheSB0byBzaGVsbCBhcmd1bWVudHMuICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBgYFRydWVgYCwKKyAgIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2Agd2lsbCBoYXZlIG5vIGVmZmVjdCwgYW5kIHNwbGl0dGluZyB3aWxsIGhhcHBlbgorICAgb25seSBvbiB3aGl0ZXNwYWNlcy4gIFdoZW4gdXNpbmcgOmF0dHI6YHB1bmN0dWF0aW9uX2NoYXJzYCwgd2hpY2ggaXMKKyAgIGludGVuZGVkIHRvIHByb3ZpZGUgcGFyc2luZyBjbG9zZXIgdG8gdGhhdCBpbXBsZW1lbnRlZCBieSBzaGVsbHMsIGl0IGlzCisgICBhZHZpc2FibGUgdG8gbGVhdmUgYGB3aGl0ZXNwYWNlX3NwbGl0YGAgYXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCB2YWx1ZSkuCiAKIAogLi4gYXR0cmlidXRlOjogc2hsZXguaW5maWxlCkBAIC0yNDUsMTAgKzI2Niw5IEBACiAgICBUaGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYCBieSBkZWZhdWx0LiAgSWYgeW91IGFzc2lnbiBhIHN0cmluZyB0byBpdCwgdGhhdAogICAgc3RyaW5nIHdpbGwgYmUgcmVjb2duaXplZCBhcyBhIGxleGljYWwtbGV2ZWwgaW5jbHVzaW9uIHJlcXVlc3Qgc2ltaWxhciB0byB0aGUKICAgIGBgc291cmNlYGAga2V5d29yZCBpbiB2YXJpb3VzIHNoZWxscy4gIFRoYXQgaXMsIHRoZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgdG9rZW4KLSAgIHdpbGwgYmUgb3BlbmVkIGFzIGEgZmlsZW5hbWUgYW5kIGlucHV0IHdpbGwKLSAgIGJlIHRha2VuIGZyb20gdGhhdCBzdHJlYW0gdW50aWwgRU9GLCBhdCB3aGljaAotICAgcG9pbnQgdGhlIDptZXRoOmB+aW8uSU9CYXNlLmNsb3NlYCBtZXRob2Qgb2YgdGhhdCBzdHJlYW0gd2lsbCBiZSBjYWxsZWQgYW5kCi0gICB0aGUgaW5wdXQgc291cmNlIHdpbGwgYWdhaW4gYmVjb21lIHRoZSBvcmlnaW5hbCBpbnB1dCBzdHJlYW0uICBTb3VyY2UKKyAgIHdpbGwgYmUgb3BlbmVkIGFzIGEgZmlsZW5hbWUgYW5kIGlucHV0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGF0IHN0cmVhbSB1bnRpbAorICAgRU9GLCBhdCB3aGljaCBwb2ludCB0aGUgOm1ldGg6YH5pby5JT0Jhc2UuY2xvc2VgIG1ldGhvZCBvZiB0aGF0IHN0cmVhbSB3aWxsIGJlCisgICBjYWxsZWQgYW5kIHRoZSBpbnB1dCBzb3VyY2Ugd2lsbCBhZ2FpbiBiZWNvbWUgdGhlIG9yaWdpbmFsIGlucHV0IHN0cmVhbS4gIFNvdXJjZQogICAgcmVxdWVzdHMgbWF5IGJlIHN0YWNrZWQgYW55IG51bWJlciBvZiBsZXZlbHMgZGVlcC4KIAogCkBAIC0yNzUsNiArMjk1LDE2IEBACiAgICAoYGAnJ2BgKSwgaW4gbm9uLVBPU0lYIG1vZGUsIGFuZCB0byBgYE5vbmVgYCBpbiBQT1NJWCBtb2RlLgogCiAKKy4uIGF0dHJpYnV0ZTo6IHNobGV4LnB1bmN0dWF0aW9uX2NoYXJzCisKKyAgIENoYXJhY3RlcnMgdGhhdCB3aWxsIGJlIGNvbnNpZGVyZWQgcHVuY3R1YXRpb24uIFJ1bnMgb2YgcHVuY3R1YXRpb24KKyAgIGNoYXJhY3RlcnMgd2lsbCBiZSByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gSG93ZXZlciwgbm90ZSB0aGF0IG5vCisgICBzZW1hbnRpYyB2YWxpZGl0eSBjaGVja2luZyB3aWxsIGJlIHBlcmZvcm1lZDogZm9yIGV4YW1wbGUsICc+Pj4nIGNvdWxkIGJlCisgICByZXR1cm5lZCBhcyBhIHRva2VuLCBldmVuIHRob3VnaCBpdCBtYXkgbm90IGJlIHJlY29nbmlzZWQgYXMgc3VjaCBieSBzaGVsbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIF9zaGxleC1wYXJzaW5nLXJ1bGVzOgogCiBQYXJzaW5nIFJ1bGVzCkBAIC0zMjcsMyArMzU3LDYyIEBACiAqIEVPRiBpcyBzaWduYWxlZCB3aXRoIGEgOmNvbnN0OmBOb25lYCB2YWx1ZTsKIAogKiBRdW90ZWQgZW1wdHkgc3RyaW5ncyAoYGAnJ2BgKSBhcmUgYWxsb3dlZC4KKworLi4gX2ltcHJvdmVkLXNoZWxsLWNvbXBhdGliaWxpdHk6CisKK0ltcHJvdmVkIENvbXBhdGliaWxpdHkgd2l0aCBTaGVsbHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK1RoZSA6Y2xhc3M6YHNobGV4YCBjbGFzcyBwcm92aWRlcyBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHBhcnNpbmcgcGVyZm9ybWVkIGJ5Citjb21tb24gVW5peCBzaGVsbHMgbGlrZSBgYGJhc2hgYCwgYGBkYXNoYGAsIGFuZCBgYHNoYGAuICBUbyB0YWtlIGFkdmFudGFnZSBvZgordGhpcyBjb21wYXRpYmlsaXR5LCBzcGVjaWZ5IHRoZSBgYHB1bmN0dWF0aW9uX2NoYXJzYGAgYXJndW1lbnQgaW4gdGhlCitjb25zdHJ1Y3Rvci4gIFRoaXMgZGVmYXVsdHMgdG8gYGBGYWxzZWBgLCB3aGljaCBwcmVzZXJ2ZXMgcHJlLTMuNiBiZWhhdmlvdXIuCitIb3dldmVyLCBpZiBpdCBpcyBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gcGFyc2luZyBvZiB0aGUgY2hhcmFjdGVycyBgYCgpOzw+fCZgYAoraXMgY2hhbmdlZDogYW55IHJ1biBvZiB0aGVzZSBjaGFyYWN0ZXJzIGlzIHJldHVybmVkIGFzIGEgc2luZ2xlIHRva2VuLiAgV2hpbGUKK3RoaXMgaXMgc2hvcnQgb2YgYSBmdWxsIHBhcnNlciBmb3Igc2hlbGxzICh3aGljaCB3b3VsZCBiZSBvdXQgb2Ygc2NvcGUgZm9yIHRoZQorc3RhbmRhcmQgbGlicmFyeSwgZ2l2ZW4gdGhlIG11bHRpcGxpY2l0eSBvZiBzaGVsbHMgb3V0IHRoZXJlKSwgaXQgZG9lcyBhbGxvdworeW91IHRvIHBlcmZvcm0gcHJvY2Vzc2luZyBvZiBjb21tYW5kIGxpbmVzIG1vcmUgZWFzaWx5IHRoYW4geW91IGNvdWxkCitvdGhlcndpc2UuICBUbyBpbGx1c3RyYXRlLCB5b3UgY2FuIHNlZSB0aGUgZGlmZmVyZW5jZSBpbiB0aGUgZm9sbG93aW5nIHNuaXBwZXQ6OgorCisgICAgaW1wb3J0IHNobGV4CisKKyAgICBmb3IgcHVuY3QgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgaWYgcHVuY3Q6CisgICAgICAgICAgICBtZXNzYWdlID0gJ09sZCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAnTmV3JworICAgICAgICB0ZXh0ID0gImEgJiYgYjsgYyAmJiBkIHx8IGU7IGYgPidhYmMnOyAoZGVmIFwiZ2hpXCIpIgorICAgICAgICBzID0gc2hsZXguc2hsZXgodGV4dCwgcHVuY3R1YXRpb25fY2hhcnM9cHVuY3QpCisgICAgICAgIHByaW50KCclczogJXMnICUgKG1lc3NhZ2UsIGxpc3QocykpKQorCit3aGljaCBwcmludHMgb3V0OjoKKworICAgIE9sZDogWydhJywgJyYnLCAnJicsICdiJywgJzsnLCAnYycsICcmJywgJyYnLCAnZCcsICd8JywgJ3wnLCAnZScsICc7JywgJ2YnLCAnPicsICInYWJjJyIsICc7JywgJygnLCAnZGVmJywgJyJnaGkiJywgJyknXQorICAgIE5ldzogWydhJywgJyYmJywgJ2InLCAnOycsICdjJywgJyYmJywgJ2QnLCAnfHwnLCAnZScsICc7JywgJ2YnLCAnPicsICInYWJjJyIsICc7JywgJygnLCAnZGVmJywgJyJnaGkiJywgJyknXQorCitPZiBjb3Vyc2UsIHRva2VucyB3aWxsIGJlIHJldHVybmVkIHdoaWNoIGFyZSBub3QgdmFsaWQgZm9yIHNoZWxscywgYW5kIHlvdSdsbAorbmVlZCB0byBpbXBsZW1lbnQgeW91ciBvd24gZXJyb3IgY2hlY2tzIG9uIHRoZSByZXR1cm5lZCB0b2tlbnMuCisKK0luc3RlYWQgb2YgcGFzc2luZyBgYFRydWVgYCBhcyB0aGUgdmFsdWUgZm9yIHRoZSBwdW5jdHVhdGlvbl9jaGFycyBwYXJhbWV0ZXIsCit5b3UgY2FuIHBhc3MgYSBzdHJpbmcgd2l0aCBzcGVjaWZpYyBjaGFyYWN0ZXJzLCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lCit3aGljaCBjaGFyYWN0ZXJzIGNvbnN0aXR1dGUgcHVuY3R1YXRpb24uIEZvciBleGFtcGxlOjoKKworICAgID4+PiBpbXBvcnQgc2hsZXgKKyAgICA+Pj4gcyA9IHNobGV4LnNobGV4KCJhICYmIGIgfHwgYyIsIHB1bmN0dWF0aW9uX2NoYXJzPSJ8IikKKyAgICA+Pj4gbGlzdChzKQorICAgIFsnYScsICcmJywgJyYnLCAnYicsICd8fCcsICdjJ10KKworLi4gbm90ZTo6IFdoZW4gYGBwdW5jdHVhdGlvbl9jaGFyc2BgIGlzIHNwZWNpZmllZCwgdGhlIDphdHRyOmB+c2hsZXgud29yZGNoYXJzYAorICAgYXR0cmlidXRlIGlzIGF1Z21lbnRlZCB3aXRoIHRoZSBjaGFyYWN0ZXJzIGBgfi0uLyo/PWBgLiAgVGhhdCBpcyBiZWNhdXNlIHRoZXNlCisgICBjaGFyYWN0ZXJzIGNhbiBhcHBlYXIgaW4gZmlsZSBuYW1lcyAoaW5jbHVkaW5nIHdpbGRjYXJkcykgYW5kIGNvbW1hbmQtbGluZQorICAgYXJndW1lbnRzIChlLmcuIGBgLS1jb2xvcj1hdXRvYGApLiBIZW5jZTo6CisKKyAgICAgID4+PiBpbXBvcnQgc2hsZXgKKyAgICAgID4+PiBzID0gc2hsZXguc2hsZXgoJ34vYSAmJiBiLWMgLS1jb2xvcj1hdXRvIHx8IGQgKi5weT8nLAorICAgICAgLi4uICAgICAgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgPj4+IGxpc3QocykKKyAgICAgIFsnfi9hJywgJyYmJywgJ2ItYycsICctLWNvbG9yPWF1dG8nLCAnfHwnLCAnZCcsICcqLnB5PyddCisKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKaW5kZXggYTFjZjI0MS4uZmVmZDZhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CkBAIC00MjUsNyArNDI1LDcgQEAKICAgIGltcG9ydCBsb2dnaW5nCiAKICAgIGRlZiBfbG9ncGF0aChwYXRoLCBuYW1lcyk6Ci0gICAgICAgbG9nZ2luZy5pbmZvKCdXb3JraW5nIGluICVzJyAlIHBhdGgpCisgICAgICAgbG9nZ2luZy5pbmZvKCdXb3JraW5nIGluICVzJywgcGF0aCkKICAgICAgICByZXR1cm4gW10gICAjIG5vdGhpbmcgd2lsbCBiZSBpZ25vcmVkCiAKICAgIGNvcHl0cmVlKHNvdXJjZSwgZGVzdGluYXRpb24sIGlnbm9yZT1fbG9ncGF0aCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggMGE3M2Y1YS4uNDNkYWY3OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTUyLDcgKzUyLDggQEAKIEEgcGF0aCBjb25maWd1cmF0aW9uIGZpbGUgaXMgYSBmaWxlIHdob3NlIG5hbWUgaGFzIHRoZSBmb3JtIDpmaWxlOmB7bmFtZX0ucHRoYAogYW5kIGV4aXN0cyBpbiBvbmUgb2YgdGhlIGZvdXIgZGlyZWN0b3JpZXMgbWVudGlvbmVkIGFib3ZlOyBpdHMgY29udGVudHMgYXJlCiBhZGRpdGlvbmFsIGl0ZW1zIChvbmUgcGVyIGxpbmUpIHRvIGJlIGFkZGVkIHRvIGBgc3lzLnBhdGhgYC4gIE5vbi1leGlzdGluZyBpdGVtcwotYXJlIG5ldmVyIGFkZGVkIHRvIGBgc3lzLnBhdGhgYC4gIE5vIGl0ZW0gaXMgYWRkZWQgdG8gYGBzeXMucGF0aGBgIG1vcmUgdGhhbgorYXJlIG5ldmVyIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCwgYW5kIG5vIGNoZWNrIGlzIG1hZGUgdGhhdCB0aGUgaXRlbSByZWZlcnMgdG8gYQorZGlyZWN0b3J5IHJhdGhlciB0aGFuIGEgZmlsZS4gIE5vIGl0ZW0gaXMgYWRkZWQgdG8gYGBzeXMucGF0aGBgIG1vcmUgdGhhbgogb25jZS4gIEJsYW5rIGxpbmVzIGFuZCBsaW5lcyBiZWdpbm5pbmcgd2l0aCBgYCNgYCBhcmUgc2tpcHBlZC4gIExpbmVzIHN0YXJ0aW5nCiB3aXRoIGBgaW1wb3J0YGAgKGZvbGxvd2VkIGJ5IHNwYWNlIG9yIHRhYikgYXJlIGV4ZWN1dGVkLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwZC5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKaW5kZXggYTA5NmRlMC4uZTM4MzIwMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc210cGQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBkLnJzdApAQCAtMjksNyArMjksNyBAQAogCiAKIC4uIGNsYXNzOjogU01UUFNlcnZlcihsb2NhbGFkZHIsIHJlbW90ZWFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMixcCi0gICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUFNlcnZlcmAgb2JqZWN0LCB3aGljaCBiaW5kcyB0byBsb2NhbCBhZGRyZXNzCiAgICAqbG9jYWxhZGRyKi4gIEl0IHdpbGwgdHJlYXQgKnJlbW90ZWFkZHIqIGFzIGFuIHVwc3RyZWFtIFNNVFAgcmVsYXllci4gIEJvdGgKQEAgLTQ2LDIwICs0NiwxOSBAQAogICAgZ2xvYmFsIHNvY2tldCBtYXAgaXMgdXNlZC4KIAogICAgKmVuYWJsZV9TTVRQVVRGOCogZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBgYFNNVFBVVEY4YGAgZXh0ZW5zaW9uIChhcyBkZWZpbmVkCi0gICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuICBJZiBzZXQgdG8KLSAgIGBgVHJ1ZWBgLCAqZGVjb2RlX2RhdGEqIG11c3QgYmUgYGBGYWxzZWBgIChvdGhlcndpc2UgYW4gZXJyb3IgaXMgcmFpc2VkKS4KKyAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KICAgIFdoZW4gYGBUcnVlYGAsIGBgU01UUFVURjhgYCBpcyBhY2NlcHRlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUgYGBNQUlMYGAKICAgIGNvbW1hbmQgYW5kIHdoZW4gcHJlc2VudCBpcyBwYXNzZWQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgaW4gdGhlCi0gICBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LgorICAgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4gICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqCisgICBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lIHRpbWUuCiAKICAgICpkZWNvZGVfZGF0YSogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgU01UUCB0cmFuc2FjdGlvbgotICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQKLSAgIGNvbXBhdGliaWxpdHkgcmVhc29ucywgYnV0IHdpbGwgY2hhbmdlIHRvIGBgRmFsc2VgYCBpbiBQeXRob24gMy42OyBzcGVjaWZ5Ci0gICB0aGUga2V5d29yZCB2YWx1ZSBleHBsaWNpdGx5IHRvIGF2b2lkIHRoZSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgLiAgV2hlbgotICAgKmRlY29kZV9kYXRhKiBpcyBzZXQgdG8gYGBGYWxzZWBgIHRoZSBzZXJ2ZXIgYWR2ZXJ0aXNlcyB0aGUgYGA4QklUTUlNRWBgCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFdoZW4gKmRlY29kZV9kYXRhKiBpcyBgYEZhbHNlYGAgKHRoZQorICAgZGVmYXVsdCksIHRoZSBzZXJ2ZXIgYWR2ZXJ0aXNlcyB0aGUgYGA4QklUTUlNRWBgCiAgICBleHRlbnNpb24gKDpyZmM6YDYxNTJgKSwgYWNjZXB0cyB0aGUgYGBCT0RZPThCSVRNSU1FYGAgcGFyYW1ldGVyIHRvCiAgICB0aGUgYGBNQUlMYGAgY29tbWFuZCwgYW5kIHdoZW4gcHJlc2VudCBwYXNzZXMgaXQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAKLSAgIGluIHRoZSBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LgorICAgaW4gdGhlIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqCisgICBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lIHRpbWUuCiAKICAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSwgKiprd2FyZ3MpCiAKQEAgLTc2LDkgKzc1LDggQEAKICAgICAgIHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCiAKICAgICAgICprd2FyZ3MqIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIEl0IGlzIGVtcHR5Ci0gICAgICB1bmxlc3MgYXQgbGVhc3Qgb25lIG9mIGBgZGVjb2RlX2RhdGE9RmFsc2VgYCBvciBgYGVuYWJsZV9TTVRQVVRGOD1UcnVlYGAKLSAgICAgIHdhcyBnaXZlbiBhcyBhbiBpbml0IHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSBpdCBjb250YWlucyB0aGUgZm9sbG93aW5nCi0gICAgICBrZXlzOgorICAgICAgaWYgYGBkZWNvZGVfZGF0YT1UcnVlYGAgd2FzIGdpdmVuIGFzIGFuIGluaXQgYXJndW1lbnQsIG90aGVyd2lzZQorICAgICAgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZyBrZXlzOgogCiAgICAgICAgICAgKm1haWxfb3B0aW9ucyo6CiAgICAgICAgICAgICAgYSBsaXN0IG9mIGFsbCByZWNlaXZlZCBwYXJhbWV0ZXJzIHRvIHRoZSBgYE1BSUxgYApAQCAtMTA5LDkgKzEwNywxMiBAQAogICAgICAgKmxvY2FsYWRkciogYW5kICpyZW1vdGVhZGRyKiBtYXkgbm93IGNvbnRhaW4gSVB2NiBhZGRyZXNzZXMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQotICAgICAgdGhlICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNvbnN0cnVjdG9yIGFyZ3VtZW50cywgYW5kIHRoZQotICAgICAgKmt3YXJncyogYXJndW1lbnQgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgd2hlbiBvbmUgb3IgbW9yZSBvZiB0aGVzZSBpcwotICAgICAgc3BlY2lmaWVkLgorICAgICAgVGhlICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNvbnN0cnVjdG9yIHBhcmFtZXRlcnMsIGFuZCB0aGUKKyAgICAgICprd2FyZ3MqIHBhcmFtZXRlciB0byA6bWV0aDpgcHJvY2Vzc19tZXNzYWdlYCB3aGVuICpkZWNvZGVfZGF0YSogaXMKKyAgICAgIGBgRmFsc2VgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpkZWNvZGVfZGF0YSogaXMgbm93IGBgRmFsc2VgYCBieSBkZWZhdWx0LgogCiAKIERlYnVnZ2luZ1NlcnZlciBPYmplY3RzCkBAIC0xNTEsNyArMTUyLDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLi4gY2xhc3M6OiBTTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMixcCi0gICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTTVRQQ2hhbm5lbGAgb2JqZWN0IHdoaWNoIG1hbmFnZXMgdGhlIGNvbW11bmljYXRpb24KICAgIGJldHdlZW4gdGhlIHNlcnZlciBhbmQgYSBzaW5nbGUgU01UUCBjbGllbnQuCkBAIC0xNjMsMjIgKzE2NCwyNSBAQAogICAgbGltaXQuCiAKICAgICplbmFibGVfU01UUFVURjgqIGRldGVybWluZXMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAotICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgQQotICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmIGJvdGggKmVuYWJsZV9TTVRQVVRGOCogYW5kICpkZWNvZGVfZGF0YSogYXJlCi0gICBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUgdGltZS4KKyAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUKKyAgIHRpbWUuCiAKICAgIEEgZGljdGlvbmFyeSBjYW4gYmUgc3BlY2lmaWVkIGluICptYXAqIHRvIGF2b2lkIHVzaW5nIGEgZ2xvYmFsIHNvY2tldCBtYXAuCiAKICAgICpkZWNvZGVfZGF0YSogc3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgU01UUCB0cmFuc2FjdGlvbgotICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQKLSAgIGNvbXBhdGliaWxpdHkgcmVhc29ucywgYnV0IHdpbGwgY2hhbmdlIHRvIGBgRmFsc2VgYCBpbiBQeXRob24gMy42LiAgU3BlY2lmeQotICAgdGhlIGtleXdvcmQgdmFsdWUgZXhwbGljaXRseSB0byBhdm9pZCB0aGUgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYC4KKyAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgorICAgKmRlY29kZV9kYXRhKiBhbmQgKmVuYWJsZV9TTVRQVVRGOCogY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZQorICAgdGltZS4KIAogICAgVG8gdXNlIGEgY3VzdG9tIFNNVFBDaGFubmVsIGltcGxlbWVudGF0aW9uIHlvdSBuZWVkIHRvIG92ZXJyaWRlIHRoZQogICAgOmF0dHI6YFNNVFBTZXJ2ZXIuY2hhbm5lbF9jbGFzc2Agb2YgeW91ciA6Y2xhc3M6YFNNVFBTZXJ2ZXJgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQotICAgICAgdGhlICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGFyZ3VtZW50cyB3ZXJlIGFkZGVkLgorICAgICAgVGhlICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIHBhcmFtZXRlcnMgd2VyZSBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpkZWNvZGVfZGF0YSogaXMgbm93IGBgRmFsc2VgYCBieSBkZWZhdWx0LgogCiAgICBUaGUgOmNsYXNzOmBTTVRQQ2hhbm5lbGAgaGFzIHRoZSBmb2xsb3dpbmcgaW5zdGFuY2UgdmFyaWFibGVzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IDhiOThjY2YuLjg2ZTc2OWUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC05NSw2ICs5NSwxNCBAQAogICAgICAgOmF0dHI6YHNzbC5TU0xDb250ZXh0LmNoZWNrX2hvc3RuYW1lYCBhbmQgKlNlcnZlciBOYW1lIEluZGljYXRpb24qIChzZWUKICAgICAgIDpkYXRhOmBzc2wuSEFTX1NOSWApLgogCisgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKworCiAuLiBjbGFzczo6IExNVFAoaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIFRoZSBMTVRQIHByb3RvY29sLCB3aGljaCBpcyB2ZXJ5IHNpbWlsYXIgdG8gRVNNVFAsIGlzIGhlYXZpbHkgYmFzZWQgb24gdGhlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAppbmRleCA3OWM3NjA5Li45NjcxODU3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKQEAgLTEzMyw2ICsxMzMsMjIgQEAKICAgICBzdHJpbmcgZm9ybWF0LiAoZXguIGBgYicxMjoyMzozNDo0NTo1Njo2NydgYCkgVGhpcyBwcm90b2NvbCBpcyBub3QKICAgICBzdXBwb3J0ZWQgdW5kZXIgRnJlZUJTRC4KIAorLSA6Y29uc3Q6YEFGX0FMR2AgaXMgYSBMaW51eC1vbmx5IHNvY2tldCBiYXNlZCBpbnRlcmZhY2UgdG8gS2VybmVsCisgIGNyeXB0b2dyYXBoeS4gQW4gYWxnb3JpdGhtIHNvY2tldCBpcyBjb25maWd1cmVkIHdpdGggYSB0dXBsZSBvZiB0d28gdG8gZm91cgorICBlbGVtZW50cyBgYCh0eXBlLCBuYW1lIFssIGZlYXQgWywgbWFza11dKWBgLCB3aGVyZToKKworICAtICp0eXBlKiBpcyB0aGUgYWxnb3JpdGhtIHR5cGUgYXMgc3RyaW5nLCBlLmcuIGBgYWVhZGBgLCBgYGhhc2hgYCwKKyAgICBgYHNrY2lwaGVyYGAgb3IgYGBybmdgYC4KKworICAtICpuYW1lKiBpcyB0aGUgYWxnb3JpdGhtIG5hbWUgYW5kIG9wZXJhdGlvbiBtb2RlIGFzIHN0cmluZywgZS5nLgorICAgIGBgc2hhMjU2YGAsIGBgaG1hYyhzaGEyNTYpYGAsIGBgY2JjKGFlcylgYCBvciBgYGRyYmdfbm9wcl9jdHJfYWVzMjU2YGAuCisKKyAgLSAqZmVhdCogYW5kICptYXNrKiBhcmUgdW5zaWduZWQgMzJiaXQgaW50ZWdlcnMuCisKKyAgQXZhaWxhYmlsaXR5IExpbnV4IDIuNi4zOCwgc29tZSBhbGdvcml0aG0gdHlwZXMgcmVxdWlyZSBtb3JlIHJlY2VudCBLZXJuZWxzLgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAtIENlcnRhaW4gb3RoZXIgYWRkcmVzcyBmYW1pbGllcyAoOmNvbnN0OmBBRl9QQUNLRVRgLCA6Y29uc3Q6YEFGX0NBTmApCiAgIHN1cHBvcnQgc3BlY2lmaWMgcmVwcmVzZW50YXRpb25zLgogCkBAIC0yODMsNiArMjk5LDEwIEBACiAgICBpbiB0aGUgVW5peCBoZWFkZXIgZmlsZXMgYXJlIGRlZmluZWQ7IGZvciBhIGZldyBzeW1ib2xzLCBkZWZhdWx0IHZhbHVlcyBhcmUKICAgIHByb3ZpZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBTT19ET01BSU5gYCwgYGBTT19QUk9UT0NPTGBgLCBgYFNPX1BFRVJTRUNgYCwgYGBTT19QQVNTU0VDYGAKKyAgICAgIHdlcmUgYWRkZWQuCisKIC4uIGRhdGE6OiBBRl9DQU4KICAgICAgICAgICBQRl9DQU4KICAgICAgICAgICBTT0xfQ0FOXyoKQEAgLTMzMSwxOCArMzUxLDMzIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBkYXRhOjogU0lPXyoKKy4uIGRhdGE6OiBTSU9fUkNWQUxMCisgICAgICAgICAgU0lPX0tFRVBBTElWRV9WQUxTCisgICAgICAgICAgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSAogICAgICAgICAgIFJDVkFMTF8qCiAKICAgIENvbnN0YW50cyBmb3IgV2luZG93cycgV1NBSW9jdGwoKS4gVGhlIGNvbnN0YW50cyBhcmUgdXNlZCBhcyBhcmd1bWVudHMgdG8gdGhlCiAgICA6bWV0aDpgfnNvY2tldC5zb2NrZXQuaW9jdGxgIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGBgIHdhcyBhZGRlZC4KKwogCiAuLiBkYXRhOjogVElQQ18qCiAKICAgIFRJUEMgcmVsYXRlZCBjb25zdGFudHMsIG1hdGNoaW5nIHRoZSBvbmVzIGV4cG9ydGVkIGJ5IHRoZSBDIHNvY2tldCBBUEkuIFNlZQogICAgdGhlIFRJUEMgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAorLi4gZGF0YTo6IEFGX0FMRworICAgICAgICAgIFNPTF9BTEcKKyAgICAgICAgICBBTEdfKgorCisgICBDb25zdGFudHMgZm9yIExpbnV4IEtlcm5lbCBjcnlwdG9ncmFwaHkuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjM4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IEFGX0xJTksKIAogICBBdmFpbGFiaWxpdHk6IEJTRCwgT1NYLgpAQCAtODc0LDYgKzkwOSwxMCBAQAogICAgaXQgaXMgcmVjb21tZW5kZWQgdG8gOm1ldGg6YGNsb3NlYCB0aGVtIGV4cGxpY2l0bHksIG9yIHRvIHVzZSBhCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGFyb3VuZCB0aGVtLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmV4YzpgT1NFcnJvcmAgaXMgbm93IHJhaXNlZCBpZiBhbiBlcnJvciBvY2N1cnMgd2hlbiB0aGUgdW5kZXJseWluZworICAgICAgOmM6ZnVuYzpgY2xvc2VgIGNhbGwgaXMgbWFkZS4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIDptZXRoOmBjbG9zZSgpYCByZWxlYXNlcyB0aGUgcmVzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIGEgY29ubmVjdGlvbiBidXQKQEAgLTk5NCw2ICsxMDMzLDEyIEBACiAgICBPbiBvdGhlciBwbGF0Zm9ybXMsIHRoZSBnZW5lcmljIDpmdW5jOmBmY250bC5mY250bGAgYW5kIDpmdW5jOmBmY250bC5pb2N0bGAKICAgIGZ1bmN0aW9ucyBtYXkgYmUgdXNlZDsgdGhleSBhY2NlcHQgYSBzb2NrZXQgb2JqZWN0IGFzIHRoZWlyIGZpcnN0IGFyZ3VtZW50LgogCisgICBDdXJyZW50bHkgb25seSB0aGUgZm9sbG93aW5nIGNvbnRyb2wgY29kZXMgYXJlIHN1cHBvcnRlZDoKKyAgIGBgU0lPX1JDVkFMTGBgLCBgYFNJT19LRUVQQUxJVkVfVkFMU2BgLCBhbmQgYGBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYFNJT19MT09QQkFDS19GQVNUX1BBVEhgYCB3YXMgYWRkZWQuCisKIC4uIG1ldGhvZDo6IHNvY2tldC5saXN0ZW4oW2JhY2tsb2ddKQogCiAgICBFbmFibGUgYSBzZXJ2ZXIgdG8gYWNjZXB0IGNvbm5lY3Rpb25zLiAgSWYgKmJhY2tsb2cqIGlzIHNwZWNpZmllZCwgaXQgbXVzdApAQCAtMTI3Nyw2ICsxMzIyLDE1IEBACiAgICAgICBhbiBleGNlcHRpb24sIHRoZSBtZXRob2Qgbm93IHJldHJpZXMgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgcmFpc2luZwogICAgICAgYW4gOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgZXhjZXB0aW9uIChzZWUgOnBlcDpgNDc1YCBmb3IgdGhlIHJhdGlvbmFsZSkuCiAKKy4uIG1ldGhvZDo6IHNvY2tldC5zZW5kbXNnX2FmYWxnKFttc2ddLCAqLCBvcFssIGl2WywgYXNzb2NsZW5bLCBmbGFnc11dXSkKKworICAgU3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiA6bWV0aDpgfnNvY2tldC5zZW5kbXNnYCBmb3IgOmNvbnN0OmBBRl9BTEdgIHNvY2tldC4KKyAgIFNldCBtb2RlLCBJViwgQUVBRCBhc3NvY2lhdGVkIGRhdGEgbGVuZ3RoIGFuZCBmbGFncyBmb3IgOmNvbnN0OmBBRl9BTEdgIHNvY2tldC4KKworICAgQXZhaWxhYmlsaXR5OiBMaW51eCA+PSAyLjYuMzgKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIG1ldGhvZDo6IHNvY2tldC5zZW5kZmlsZShmaWxlLCBvZmZzZXQ9MCwgY291bnQ9Tm9uZSkKIAogICAgU2VuZCBhIGZpbGUgdW50aWwgRU9GIGlzIHJlYWNoZWQgYnkgdXNpbmcgaGlnaC1wZXJmb3JtYW5jZQpAQCAtMTMyNSwyMSArMTM3OSwyOSBAQAogICAgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHBsZWFzZSBjb25zdWx0IHRoZSA6cmVmOmBub3RlcyBvbiBzb2NrZXQgdGltZW91dHMgPHNvY2tldC10aW1lb3V0cz5gLgogCiAKLS4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZSkKKy4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZTogaW50KQorLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIHZhbHVlOiBidWZmZXIpCisuLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgTm9uZSwgb3B0bGVuOiBpbnQpCiAKICAgIC4uIGluZGV4OjogbW9kdWxlOiBzdHJ1Y3QKIAogICAgU2V0IHRoZSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gc29ja2V0IG9wdGlvbiAoc2VlIHRoZSBVbml4IG1hbnVhbCBwYWdlCiAgICA6bWFucGFnZTpgc2V0c29ja29wdCgyKWApLiAgVGhlIG5lZWRlZCBzeW1ib2xpYyBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gdGhlCi0gICA6bW9kOmBzb2NrZXRgIG1vZHVsZSAoOmNvbnN0OmBTT19cKmAgZXRjLikuICBUaGUgdmFsdWUgY2FuIGJlIGFuIGludGVnZXIgb3IKLSAgIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCByZXByZXNlbnRpbmcgYSBidWZmZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UgaXQgaXMKLSAgIHVwIHRvIHRoZSBjYWxsZXIgdG8KLSAgIGVuc3VyZSB0aGF0IHRoZSBieXRlc3RyaW5nIGNvbnRhaW5zIHRoZSBwcm9wZXIgYml0cyAoc2VlIHRoZSBvcHRpb25hbCBidWlsdC1pbgotICAgbW9kdWxlIDptb2Q6YHN0cnVjdGAgZm9yIGEgd2F5IHRvIGVuY29kZSBDIHN0cnVjdHVyZXMgYXMgYnl0ZXN0cmluZ3MpLgorICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyLAorICAgYGBOb25lYGAgb3IgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIHJlcHJlc2VudGluZyBhIGJ1ZmZlci4gSW4gdGhlIGxhdGVyCisgICBjYXNlIGl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGJ5dGVzdHJpbmcgY29udGFpbnMgdGhlCisgICBwcm9wZXIgYml0cyAoc2VlIHRoZSBvcHRpb25hbCBidWlsdC1pbiBtb2R1bGUgOm1vZDpgc3RydWN0YCBmb3IgYSB3YXkgdG8KKyAgIGVuY29kZSBDIHN0cnVjdHVyZXMgYXMgYnl0ZXN0cmluZ3MpLiBXaGVuIHZhbHVlIGlzIHNldCB0byBgYE5vbmVgYCwKKyAgIG9wdGxlbiBhcmd1bWVudCBpcyByZXF1aXJlZC4gSXQncyBlcXVpdmFsZW50IHRvIGNhbGwgc2V0c29ja29wdCBDCisgICBmdW5jdGlvbiB3aXRoIG9wdHZhbD1OVUxMIGFuZCBvcHRsZW49b3B0bGVuLgorCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBXcml0YWJsZSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIGlzIG5vdyBhY2NlcHRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIHNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIE5vbmUsIG9wdGxlbjogaW50KSBmb3JtIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IHNvY2tldC5zaHV0ZG93bihob3cpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CmluZGV4IDA4N2Y0ZTAuLjIxOGEzMWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdApAQCAtNTIsMTEgKzUyLDEyIEBACiBvdmVycmlkaW5nIGl0cyA6bWV0aDpgfkJhc2VSZXF1ZXN0SGFuZGxlci5oYW5kbGVgIG1ldGhvZDsKIHRoaXMgbWV0aG9kIHdpbGwgcHJvY2VzcyBpbmNvbWluZwogcmVxdWVzdHMuICBTZWNvbmQsIHlvdSBtdXN0IGluc3RhbnRpYXRlIG9uZSBvZiB0aGUgc2VydmVyIGNsYXNzZXMsIHBhc3NpbmcgaXQKLXRoZSBzZXJ2ZXIncyBhZGRyZXNzIGFuZCB0aGUgcmVxdWVzdCBoYW5kbGVyIGNsYXNzLiAgVGhlbiBjYWxsIHRoZQordGhlIHNlcnZlcidzIGFkZHJlc3MgYW5kIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3MuIEl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZQordGhlIHNlcnZlciBpbiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuIFRoZW4gY2FsbCB0aGUKIDptZXRoOmB+QmFzZVNlcnZlci5oYW5kbGVfcmVxdWVzdGAgb3IKIDptZXRoOmB+QmFzZVNlcnZlci5zZXJ2ZV9mb3JldmVyYCBtZXRob2Qgb2YgdGhlIHNlcnZlciBvYmplY3QgdG8KIHByb2Nlc3Mgb25lIG9yIG1hbnkgcmVxdWVzdHMuICBGaW5hbGx5LCBjYWxsIDptZXRoOmB+QmFzZVNlcnZlci5zZXJ2ZXJfY2xvc2VgCi10byBjbG9zZSB0aGUgc29ja2V0LgordG8gY2xvc2UgdGhlIHNvY2tldCAodW5sZXNzIHlvdSB1c2VkIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCkuCiAKIFdoZW4gaW5oZXJpdGluZyBmcm9tIDpjbGFzczpgVGhyZWFkaW5nTWl4SW5gIGZvciB0aHJlYWRlZCBjb25uZWN0aW9uIGJlaGF2aW9yLAogeW91IHNob3VsZCBleHBsaWNpdGx5IGRlY2xhcmUgaG93IHlvdSB3YW50IHlvdXIgdGhyZWFkcyB0byBiZWhhdmUgb24gYW4gYWJydXB0CkBAIC0xMTEsNiArMTEyLDggQEAKICAgIDpjbGFzczpgVURQU2VydmVyYC4gIFNldHRpbmcgdGhlIHZhcmlvdXMgYXR0cmlidXRlcyBhbHNvIGNoYW5nZXMgdGhlCiAgICBiZWhhdmlvciBvZiB0aGUgdW5kZXJseWluZyBzZXJ2ZXIgbWVjaGFuaXNtLgogCisgICA6Y2xhc3M6YEZvcmtpbmdNaXhJbmAgYW5kIHRoZSBGb3JraW5nIGNsYXNzZXMgbWVudGlvbmVkIGJlbG93IGFyZQorICAgb25seSBhdmFpbGFibGUgb24gUE9TSVggcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6ZnVuYzpgfm9zLmZvcmtgLgogCiAuLiBjbGFzczo6IEZvcmtpbmdUQ1BTZXJ2ZXIKICAgICAgICAgICAgRm9ya2luZ1VEUFNlcnZlcgpAQCAtMzA0LDcgKzMwNywxMSBAQAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgaWYgdGhlIDptZXRoOmB+QmFzZVJlcXVlc3RIYW5kbGVyLmhhbmRsZWAKICAgICAgIG1ldGhvZCBvZiBhIDphdHRyOmBSZXF1ZXN0SGFuZGxlckNsYXNzYCBpbnN0YW5jZSByYWlzZXMKICAgICAgIGFuIGV4Y2VwdGlvbi4gIFRoZSBkZWZhdWx0IGFjdGlvbiBpcyB0byBwcmludCB0aGUgdHJhY2ViYWNrIHRvCi0gICAgICBzdGFuZGFyZCBvdXRwdXQgYW5kIGNvbnRpbnVlIGhhbmRsaW5nIGZ1cnRoZXIgcmVxdWVzdHMuCisgICAgICBzdGFuZGFyZCBlcnJvciBhbmQgY29udGludWUgaGFuZGxpbmcgZnVydGhlciByZXF1ZXN0cy4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIE5vdyBvbmx5IGNhbGxlZCBmb3IgZXhjZXB0aW9ucyBkZXJpdmVkIGZyb20gdGhlIDpleGM6YEV4Y2VwdGlvbmAKKyAgICAgICAgIGNsYXNzLgogCiAKICAgIC4uIG1ldGhvZDo6IGhhbmRsZV90aW1lb3V0KCkKQEAgLTM0OSw2ICszNTYsMTEgQEAKICAgICAgIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYWx3YXlzIHJldHVybnMgOmNvbnN0OmBUcnVlYC4KIAogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3VwcG9ydCBmb3IgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sIHdhcyBhZGRlZC4gIEV4aXRpbmcgdGhlCisgICAgICBjb250ZXh0IG1hbmFnZXIgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIDptZXRoOmBzZXJ2ZXJfY2xvc2VgLgorCisKIFJlcXVlc3QgSGFuZGxlciBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0zOTcsNiArNDA5LDE1IEBACiAgICByZWFkIG9yIHdyaXR0ZW4sIHJlc3BlY3RpdmVseSwgdG8gZ2V0IHRoZSByZXF1ZXN0IGRhdGEgb3IgcmV0dXJuIGRhdGEKICAgIHRvIHRoZSBjbGllbnQuCiAKKyAgIFRoZSA6YXR0cjpgcmZpbGVgIGF0dHJpYnV0ZXMgb2YgYm90aCBjbGFzc2VzIHN1cHBvcnQgdGhlCisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCByZWFkYWJsZSBpbnRlcmZhY2UsIGFuZAorICAgOmF0dHI6YERhdGFncmFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIHN1cHBvcnRzIHRoZQorICAgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgd3JpdGFibGUgaW50ZXJmYWNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmF0dHI6YFN0cmVhbVJlcXVlc3RIYW5kbGVyLndmaWxlYCBhbHNvIHN1cHBvcnRzIHRoZQorICAgICAgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgd3JpdGFibGUgaW50ZXJmYWNlLgorCiAKIEV4YW1wbGVzCiAtLS0tLS0tLQpAQCAtNDI5LDExICs0NTAsMTAgQEAKICAgICAgICBIT1NULCBQT1JUID0gImxvY2FsaG9zdCIsIDk5OTkKIAogICAgICAgICMgQ3JlYXRlIHRoZSBzZXJ2ZXIsIGJpbmRpbmcgdG8gbG9jYWxob3N0IG9uIHBvcnQgOTk5OQotICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVRDUEhhbmRsZXIpCi0KLSAgICAgICAjIEFjdGl2YXRlIHRoZSBzZXJ2ZXI7IHRoaXMgd2lsbCBrZWVwIHJ1bm5pbmcgdW50aWwgeW91Ci0gICAgICAgIyBpbnRlcnJ1cHQgdGhlIHByb2dyYW0gd2l0aCBDdHJsLUMKLSAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgd2l0aCBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCBQT1JUKSwgTXlUQ1BIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICMgQWN0aXZhdGUgdGhlIHNlcnZlcjsgdGhpcyB3aWxsIGtlZXAgcnVubmluZyB1bnRpbCB5b3UKKyAgICAgICAgICAgIyBpbnRlcnJ1cHQgdGhlIHByb2dyYW0gd2l0aCBDdHJsLUMKKyAgICAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQogCiBBbiBhbHRlcm5hdGl2ZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3MgdGhhdCBtYWtlcyB1c2Ugb2Ygc3RyZWFtcyAoZmlsZS1saWtlCiBvYmplY3RzIHRoYXQgc2ltcGxpZnkgY29tbXVuaWNhdGlvbiBieSBwcm92aWRpbmcgdGhlIHN0YW5kYXJkIGZpbGUgaW50ZXJmYWNlKTo6CkBAIC01MjUsOCArNTQ1LDggQEAKIAogICAgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAgICBIT1NULCBQT1JUID0gImxvY2FsaG9zdCIsIDk5OTkKLSAgICAgICBzZXJ2ZXIgPSBzb2NrZXRzZXJ2ZXIuVURQU2VydmVyKChIT1NULCBQT1JUKSwgTXlVRFBIYW5kbGVyKQotICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICB3aXRoIHNvY2tldHNlcnZlci5VRFBTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVVEUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQogCiBUaGlzIGlzIHRoZSBjbGllbnQgc2lkZTo6CiAKQEAgLTU4NSwyMiArNjA1LDIyIEBACiAgICAgICAgSE9TVCwgUE9SVCA9ICJsb2NhbGhvc3QiLCAwCiAKICAgICAgICBzZXJ2ZXIgPSBUaHJlYWRlZFRDUFNlcnZlcigoSE9TVCwgUE9SVCksIFRocmVhZGVkVENQUmVxdWVzdEhhbmRsZXIpCi0gICAgICAgaXAsIHBvcnQgPSBzZXJ2ZXIuc2VydmVyX2FkZHJlc3MKKyAgICAgICB3aXRoIHNlcnZlcjoKKyAgICAgICAgICAgaXAsIHBvcnQgPSBzZXJ2ZXIuc2VydmVyX2FkZHJlc3MKIAotICAgICAgICMgU3RhcnQgYSB0aHJlYWQgd2l0aCB0aGUgc2VydmVyIC0tIHRoYXQgdGhyZWFkIHdpbGwgdGhlbiBzdGFydCBvbmUKLSAgICAgICAjIG1vcmUgdGhyZWFkIGZvciBlYWNoIHJlcXVlc3QKLSAgICAgICBzZXJ2ZXJfdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VydmVyLnNlcnZlX2ZvcmV2ZXIpCi0gICAgICAgIyBFeGl0IHRoZSBzZXJ2ZXIgdGhyZWFkIHdoZW4gdGhlIG1haW4gdGhyZWFkIHRlcm1pbmF0ZXMKLSAgICAgICBzZXJ2ZXJfdGhyZWFkLmRhZW1vbiA9IFRydWUKLSAgICAgICBzZXJ2ZXJfdGhyZWFkLnN0YXJ0KCkKLSAgICAgICBwcmludCgiU2VydmVyIGxvb3AgcnVubmluZyBpbiB0aHJlYWQ6Iiwgc2VydmVyX3RocmVhZC5uYW1lKQorICAgICAgICAgICAjIFN0YXJ0IGEgdGhyZWFkIHdpdGggdGhlIHNlcnZlciAtLSB0aGF0IHRocmVhZCB3aWxsIHRoZW4gc3RhcnQgb25lCisgICAgICAgICAgICMgbW9yZSB0aHJlYWQgZm9yIGVhY2ggcmVxdWVzdAorICAgICAgICAgICBzZXJ2ZXJfdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VydmVyLnNlcnZlX2ZvcmV2ZXIpCisgICAgICAgICAgICMgRXhpdCB0aGUgc2VydmVyIHRocmVhZCB3aGVuIHRoZSBtYWluIHRocmVhZCB0ZXJtaW5hdGVzCisgICAgICAgICAgIHNlcnZlcl90aHJlYWQuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICBzZXJ2ZXJfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgcHJpbnQoIlNlcnZlciBsb29wIHJ1bm5pbmcgaW4gdGhyZWFkOiIsIHNlcnZlcl90aHJlYWQubmFtZSkKIAotICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDEiKQotICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDIiKQotICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDMiKQorICAgICAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAxIikKKyAgICAgICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMiIpCisgICAgICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDMiKQogCi0gICAgICAgc2VydmVyLnNodXRkb3duKCkKLSAgICAgICBzZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgICAgc2VydmVyLnNodXRkb3duKCkKIAogCiBUaGUgb3V0cHV0IG9mIHRoZSBleGFtcGxlIHNob3VsZCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CkBAIC02MTYsMyArNjM2LDUgQEAKIAogVGhlIDpjbGFzczpgRm9ya2luZ01peEluYCBjbGFzcyBpcyB1c2VkIGluIHRoZSBzYW1lIHdheSwgZXhjZXB0IHRoYXQgdGhlIHNlcnZlcgogd2lsbCBzcGF3biBhIG5ldyBwcm9jZXNzIGZvciBlYWNoIHJlcXVlc3QuCitBdmFpbGFibGUgb25seSBvbiBQT1NJWCBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpmdW5jOmB+b3MuZm9ya2AuCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Nwd2QucnN0IGIvRG9jL2xpYnJhcnkvc3B3ZC5yc3QKaW5kZXggZmQzYzlhZC4uYzZjYWQyYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3B3ZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3B3ZC5yc3QKQEAgLTU1LDYgKzU1LDkgQEAKIAogICAgUmV0dXJuIHRoZSBzaGFkb3cgcGFzc3dvcmQgZGF0YWJhc2UgZW50cnkgZm9yIHRoZSBnaXZlbiB1c2VyIG5hbWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBSYWlzZXMgYSA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgIGluc3RlYWQgb2YgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSB1c2VyCisgICAgICBkb2Vzbid0IGhhdmUgcHJpdmlsZWdlcy4KIAogLi4gZnVuY3Rpb246OiBnZXRzcGFsbCgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0IGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKaW5kZXggODRhNDc4My4uNTYzNTU3NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKQEAgLTYyOSw5ICs2MjksMTYgQEAKICAgIC4uIGF0dHJpYnV0ZTo6IGxhc3Ryb3dpZAogCiAgICAgICBUaGlzIHJlYWQtb25seSBhdHRyaWJ1dGUgcHJvdmlkZXMgdGhlIHJvd2lkIG9mIHRoZSBsYXN0IG1vZGlmaWVkIHJvdy4gSXQgaXMKLSAgICAgIG9ubHkgc2V0IGlmIHlvdSBpc3N1ZWQgYW4gYGBJTlNFUlRgYCBzdGF0ZW1lbnQgdXNpbmcgdGhlIDptZXRoOmBleGVjdXRlYAotICAgICAgbWV0aG9kLiBGb3Igb3BlcmF0aW9ucyBvdGhlciB0aGFuIGBgSU5TRVJUYGAgb3Igd2hlbiA6bWV0aDpgZXhlY3V0ZW1hbnlgIGlzCi0gICAgICBjYWxsZWQsIDphdHRyOmBsYXN0cm93aWRgIGlzIHNldCB0byA6Y29uc3Q6YE5vbmVgLgorICAgICAgb25seSBzZXQgaWYgeW91IGlzc3VlZCBhbiBgYElOU0VSVGBgIG9yIGEgYGBSRVBMQUNFYGAgc3RhdGVtZW50IHVzaW5nIHRoZQorICAgICAgOm1ldGg6YGV4ZWN1dGVgIG1ldGhvZC4gIEZvciBvcGVyYXRpb25zIG90aGVyIHRoYW4gYGBJTlNFUlRgYCBvcgorICAgICAgYGBSRVBMQUNFYGAgb3Igd2hlbiA6bWV0aDpgZXhlY3V0ZW1hbnlgIGlzIGNhbGxlZCwgOmF0dHI6YGxhc3Ryb3dpZGAgaXMKKyAgICAgIHNldCB0byA6Y29uc3Q6YE5vbmVgLgorCisgICAgICBJZiB0aGUgYGBJTlNFUlRgYCBvciBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQgZmFpbGVkIHRvIGluc2VydCB0aGUgcHJldmlvdXMKKyAgICAgIHN1Y2Nlc3NmdWwgcm93aWQgaXMgcmV0dXJuZWQuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGBSRVBMQUNFYGAgc3RhdGVtZW50LgogCiAgICAuLiBhdHRyaWJ1dGU6OiBkZXNjcmlwdGlvbgogCkBAIC05MTgsOSArOTI1LDcgQEAKIAogQnkgZGVmYXVsdCwgdGhlIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZSBvcGVucyB0cmFuc2FjdGlvbnMgaW1wbGljaXRseSBiZWZvcmUgYQogRGF0YSBNb2RpZmljYXRpb24gTGFuZ3VhZ2UgKERNTCkgIHN0YXRlbWVudCAoaS5lLgotYGBJTlNFUlRgYC9gYFVQREFURWBgL2BgREVMRVRFYGAvYGBSRVBMQUNFYGApLCBhbmQgY29tbWl0cyB0cmFuc2FjdGlvbnMKLWltcGxpY2l0bHkgYmVmb3JlIGEgbm9uLURNTCwgbm9uLXF1ZXJ5IHN0YXRlbWVudCAoaS4gZS4KLWFueXRoaW5nIG90aGVyIHRoYW4gYGBTRUxFQ1RgYCBvciB0aGUgYWZvcmVtZW50aW9uZWQpLgorYGBJTlNFUlRgYC9gYFVQREFURWBgL2BgREVMRVRFYGAvYGBSRVBMQUNFYGApLgogCiBTbyBpZiB5b3UgYXJlIHdpdGhpbiBhIHRyYW5zYWN0aW9uIGFuZCBpc3N1ZSBhIGNvbW1hbmQgbGlrZSBgYENSRUFURSBUQUJMRQogLi4uYGAsIGBgVkFDVVVNYGAsIGBgUFJBR01BYGAsIHRoZSA6bW9kOmBzcWxpdGUzYCBtb2R1bGUgd2lsbCBjb21taXQgaW1wbGljaXRseQpAQCAtOTQwLDYgKzk0NSw5IEBACiBzdGF0ZW1lbnQsIG9yIHNldCBpdCB0byBvbmUgb2YgU1FMaXRlJ3Mgc3VwcG9ydGVkIGlzb2xhdGlvbiBsZXZlbHM6ICJERUZFUlJFRCIsCiAiSU1NRURJQVRFIiBvciAiRVhDTFVTSVZFIi4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIDptb2Q6YHNxbGl0ZTNgIHVzZWQgdG8gaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbiBiZWZvcmUgRERMCisgICBzdGF0ZW1lbnRzLiAgVGhpcyBpcyBubyBsb25nZXIgdGhlIGNhc2UuCiAKIAogVXNpbmcgOm1vZDpgc3FsaXRlM2AgZWZmaWNpZW50bHkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NzbC5yc3QgYi9Eb2MvbGlicmFyeS9zc2wucnN0CmluZGV4IGEyZjAwODMuLmVlZTQ4NDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NzbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3NsLnJzdApAQCAtNDksNiArNDksMTIgQEAKIGhlbHBzIG1hbmFnZSBzZXR0aW5ncyBhbmQgY2VydGlmaWNhdGVzLCB3aGljaCBjYW4gdGhlbiBiZSBpbmhlcml0ZWQKIGJ5IFNTTCBzb2NrZXRzIGNyZWF0ZWQgdGhyb3VnaCB0aGUgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIG1ldGhvZC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgT3BlblNTTCAwLjkuOCwgMS4wLjAgYW5kIDEuMC4xIGFyZSBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgc3VwcG9ydGVkLgorICAgSW4gdGhlIGZ1dHVyZSB0aGUgc3NsIG1vZHVsZSB3aWxsIHJlcXVpcmUgYXQgbGVhc3QgT3BlblNTTCAxLjAuMiBvcgorICAgMS4xLjAuCisKIAogRnVuY3Rpb25zLCBDb25zdGFudHMsIGFuZCBFeGNlcHRpb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4NiwxNiArMTkyLDIwIEBACiAKICAgICAgLi4gdGFibGU6OgogCi0gICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KLSAgICAgICAgKmNsaWVudCogLyAqKnNlcnZlcioqICAgICoqU1NMdjIqKiAgKipTU0x2MyoqICAqKlRMUyoqICAgICAqKlRMU3YxKiogICoqVExTdjEuMSoqICAqKlRMU3YxLjIqKgotICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tCi0gICAgICAgICpTU0x2MiogICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KLSAgICAgICAgKlNTTHYzKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqVExTKiAoKlNTTHYyMyopICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgIHllcwotICAgICAgICAqVExTdjEqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIG5vCi0gICAgICAgICpUTFN2MS4xKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgbm8KLSAgICAgICAgKlRMU3YxLjIqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMKLSAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQorICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CisgICAgICAgICpjbGllbnQqIC8gKipzZXJ2ZXIqKiAgICAqKlNTTHYyKiogICAgICoqU1NMdjMqKiAgICAgKipUTFMqKiAgICAgICAgKipUTFN2MSoqICAqKlRMU3YxLjEqKiAgKipUTFN2MS4yKioKKyAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLQorICAgICAgICAqU1NMdjIqICAgICAgICAgICAgICAgICAgICB5ZXMgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gWzFdXyAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpTU0x2MyogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICBubyBbMl1fICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlRMUyogKCpTU0x2MjMqKSAgICAgICAgICAgbm8gWzFdXyAgICAgICBubyBbMl1fICAgICAgIHllcyAgICAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICB5ZXMKKyAgICAgICAgKlRMU3YxKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgIHllcyAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqVExTdjEuMSogICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIG5vCisgICAgICAgICpUTFN2MS4yKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzCisgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKworICAgLi4gcnVicmljOjogRm9vdG5vdGVzCisgICAuLiBbMV0gOmNsYXNzOmBTU0xDb250ZXh0YCBkaXNhYmxlcyBTU0x2MiB3aXRoIDpkYXRhOmBPUF9OT19TU0x2MmAgYnkgZGVmYXVsdC4KKyAgIC4uIFsyXSA6Y2xhc3M6YFNTTENvbnRleHRgIGRpc2FibGVzIFNTTHYzIHdpdGggOmRhdGE6YE9QX05PX1NTTHYzYCBieSBkZWZhdWx0LgogCiAgICAuLiBub3RlOjoKIApAQCAtMjI0LDcgKzIzNCw2IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgTmV3IG9wdGlvbmFsIGFyZ3VtZW50ICpjaXBoZXJzKi4KIAotCiBDb250ZXh0IGNyZWF0aW9uCiBeXl5eXl5eXl5eXl5eXl5eCiAKQEAgLTI3OSw3ICsyODgsNyBAQAogCiAgICAgIFJDNCB3YXMgZHJvcHBlZCBmcm9tIHRoZSBkZWZhdWx0IGNpcGhlciBzdHJpbmcuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CiAKICAgICAgQ2hhQ2hhMjAvUG9seTEzMDUgd2FzIGFkZGVkIHRvIHRoZSBkZWZhdWx0IGNpcGhlciBzdHJpbmcuCiAKQEAgLTMyMiw3ICszMzEsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgOmZ1bmM6YHNzbC5SQU5EX3BzZXVkb19ieXRlc2AsIHVzZQogICAgICAgOmZ1bmM6YHNzbC5SQU5EX2J5dGVzYCBpbnN0ZWFkLgpAQCAtNTA5LDYgKzUxOCwxMCBAQAogQ29uc3RhbnRzCiBeXl5eXl5eXl4KIAorICAgQWxsIGNvbnN0YW50cyBhcmUgbm93IDpjbGFzczpgZW51bS5JbnRFbnVtYCBvciA6Y2xhc3M6YGVudW0uSW50RmxhZ2AgY29sbGVjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogQ0VSVF9OT05FCiAKICAgIFBvc3NpYmxlIHZhbHVlIGZvciA6YXR0cjpgU1NMQ29udGV4dC52ZXJpZnlfbW9kZWAsIG9yIHRoZSBgYGNlcnRfcmVxc2BgCkBAIC01NDIsNiArNTU1LDEyIEBACiAgICBiZSBwYXNzZWQsIGVpdGhlciB0byA6bWV0aDpgU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnNgIG9yIGFzIGEKICAgIHZhbHVlIG9mIHRoZSBgYGNhX2NlcnRzYGAgcGFyYW1ldGVyIHRvIDpmdW5jOmB3cmFwX3NvY2tldGAuCiAKKy4uIGNsYXNzOjogVmVyaWZ5TW9kZQorCisgICA6Y2xhc3M6YGVudW0uSW50RW51bWAgY29sbGVjdGlvbiBvZiBDRVJUXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFZFUklGWV9ERUZBVUxUCiAKICAgIFBvc3NpYmxlIHZhbHVlIGZvciA6YXR0cjpgU1NMQ29udGV4dC52ZXJpZnlfZmxhZ3NgLiBJbiB0aGlzIG1vZGUsIGNlcnRpZmljYXRlCkBAIC01ODIsMTggKzYwMSw0MCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQuNAogCisuLiBjbGFzczo6IFZlcmlmeUZsYWdzCisKKyAgIDpjbGFzczpgZW51bS5JbnRGbGFnYCBjb2xsZWN0aW9uIG9mIFZFUklGWV8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBQUk9UT0NPTF9UTFMKIAogICAgU2VsZWN0cyB0aGUgaGlnaGVzdCBwcm90b2NvbCB2ZXJzaW9uIHRoYXQgYm90aCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgc3VwcG9ydC4KICAgIERlc3BpdGUgdGhlIG5hbWUsIHRoaXMgb3B0aW9uIGNhbiBzZWxlY3QgIlRMUyIgcHJvdG9jb2xzIGFzIHdlbGwgYXMgIlNTTCIuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNS4zCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IFBST1RPQ09MX1RMU19DTElFTlQKKworICAgQXV0by1uZWdvdGlhdGUgdGhlIHRoZSBoaWdoZXN0IHByb3RvY29sIHZlcnNpb24gbGlrZSA6ZGF0YTpgUFJPVE9DT0xfU1NMdjIzYCwKKyAgIGJ1dCBvbmx5IHN1cHBvcnQgY2xpZW50LXNpZGUgOmNsYXNzOmBTU0xTb2NrZXRgIGNvbm5lY3Rpb25zLiBUaGUgcHJvdG9jb2wKKyAgIGVuYWJsZXMgOmRhdGE6YENFUlRfUkVRVUlSRURgIGFuZCA6YXR0cjpgflNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGJ5CisgICBkZWZhdWx0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IFBST1RPQ09MX1RMU19TRVJWRVIKKworICAgQXV0by1uZWdvdGlhdGUgdGhlIHRoZSBoaWdoZXN0IHByb3RvY29sIHZlcnNpb24gbGlrZSA6ZGF0YTpgUFJPVE9DT0xfU1NMdjIzYCwKKyAgIGJ1dCBvbmx5IHN1cHBvcnQgc2VydmVyLXNpZGUgOmNsYXNzOmBTU0xTb2NrZXRgIGNvbm5lY3Rpb25zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZGF0YTo6IFBST1RPQ09MX1NTTHYyMwogCiAgICBBbGlhcyBmb3IgZGF0YTpgUFJPVE9DT0xfVExTYC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIFVzZSBkYXRhOmBQUk9UT0NPTF9UTFNgIGluc3RlYWQuCiAKQEAgLTYwOCw3ICs2NDksNyBAQAogCiAgICAgICBTU0wgdmVyc2lvbiAyIGlzIGluc2VjdXJlLiAgSXRzIHVzZSBpcyBoaWdobHkgZGlzY291cmFnZWQuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyByZW1vdmVkIHN1cHBvcnQgZm9yIFNTTHYyLgogCkBAIC02MjMsNyArNjY0LDcgQEAKIAogICAgICAgU1NMIHZlcnNpb24gMyBpcyBpbnNlY3VyZS4gIEl0cyB1c2UgaXMgaGlnaGx5IGRpc2NvdXJhZ2VkLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02MzIsNyArNjczLDcgQEAKIAogICAgU2VsZWN0cyBUTFMgdmVyc2lvbiAxLjAgYXMgdGhlIGNoYW5uZWwgZW5jcnlwdGlvbiBwcm90b2NvbC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjQ0LDcgKzY4NSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02NTcsNyArNjk4LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTY3OCw3ICs3MTksNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIFNTTHYyIGlzIGRlcHJlY2F0ZWQKIApAQCAtNjkxLDcgKzczMiw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgU1NMdjMgaXMgZGVwcmVjYXRlZAogCkBAIC03NTEsNiArNzkyLDE2IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCisuLiBjbGFzczo6IE9wdGlvbnMKKworICAgOmNsYXNzOmBlbnVtLkludEZsYWdgIGNvbGxlY3Rpb24gb2YgT1BfKiBjb25zdGFudHMuCisKKy4uIGRhdGE6OiBPUF9OT19USUNLRVQKKworICAgUHJldmVudCBjbGllbnQgc2lkZSBmcm9tIHJlcXVlc3RpbmcgYSBzZXNzaW9uIHRpY2tldC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBIQVNfQUxQTgogCiAgICBXaGV0aGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHRoZSAqQXBwbGljYXRpb24tTGF5ZXIKQEAgLTgzMyw2ICs4ODQsMTIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKy4uIGNsYXNzOjogQWxlcnREZXNjcmlwdGlvbgorCisgICA6Y2xhc3M6YGVudW0uSW50RW51bWAgY29sbGVjdGlvbiBvZiBBTEVSVF9ERVNDUklQVElPTl8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBQdXJwb3NlLlNFUlZFUl9BVVRICiAKICAgIE9wdGlvbiBmb3IgOmZ1bmM6YGNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIGFuZApAQCAtODUxLDYgKzkwOCwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gY2xhc3M6OiBTU0xFcnJvck51bWJlcgorCisgICA6Y2xhc3M6YGVudW0uSW50RW51bWAgY29sbGVjdGlvbiBvZiBTU0xfRVJST1JfKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIFNTTCBTb2NrZXRzCiAtLS0tLS0tLS0tLQpAQCAtODg1LDcgKzk0OCw3IEBACiAgICA6cmVmOmBub3RlcyBvbiBub24tYmxvY2tpbmcgc29ja2V0cyA8c3NsLW5vbmJsb2NraW5nPmAuCiAKICAgIFVzdWFsbHksIDpjbGFzczpgU1NMU29ja2V0YCBhcmUgbm90IGNyZWF0ZWQgZGlyZWN0bHksIGJ1dCB1c2luZyB0aGUKLSAgIDpmdW5jOmB3cmFwX3NvY2tldGAgZnVuY3Rpb24gb3IgdGhlIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCBtZXRob2QuCisgICB0aGUgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIG1ldGhvZC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFRoZSA6bWV0aDpgc2VuZGZpbGVgIG1ldGhvZCB3YXMgYWRkZWQuCkBAIC04OTUsNiArOTU4LDEwIEBACiAgICAgICBhcmUgcmVjZWl2ZWQgb3Igc2VudC4gVGhlIHNvY2tldCB0aW1lb3V0IGlzIG5vdyB0byBtYXhpbXVtIHRvdGFsIGR1cmF0aW9uCiAgICAgICBvZiB0aGUgc2h1dGRvd24uCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgICAgIEl0IGlzIGRlcHJlY2F0ZWQgdG8gY3JlYXRlIGEgOmNsYXNzOmBTU0xTb2NrZXRgIGluc3RhbmNlIGRpcmVjdGx5LCB1c2UKKyAgICAgIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YCB0byB3cmFwIGEgc29ja2V0LgorCiAKIFNTTCBzb2NrZXRzIGFsc28gaGF2ZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIApAQCAtOTE1LDYgKzk4Miw5IEBACiAgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRvIG1heGltdW0gdG90YWwgZHVyYXRpb24gdG8gcmVhZCB1cCB0byAqbGVuKgogICAgICAgYnl0ZXMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgICAgIFVzZSA6bWV0aDpgflNTTFNvY2tldC5yZWN2YCBpbnN0ZWFkIG9mIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgLgorCiAuLiBtZXRob2Q6OiBTU0xTb2NrZXQud3JpdGUoYnVmKQogCiAgICBXcml0ZSAqYnVmKiB0byB0aGUgU1NMIHNvY2tldCBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gVGhlCkBAIC05MzAsNiArMTAwMCw5IEBACiAgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm8gbW9yZSByZXNldCBlYWNoIHRpbWUgYnl0ZXMgYXJlIHJlY2VpdmVkIG9yIHNlbnQuCiAgICAgICBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRvIG1heGltdW0gdG90YWwgZHVyYXRpb24gdG8gd3JpdGUgKmJ1ZiouCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgICAgIFVzZSA6bWV0aDpgflNTTFNvY2tldC5zZW5kYCBpbnN0ZWFkIG9mIDptZXRoOmB+U1NMU29ja2V0LndyaXRlYC4KKwogLi4gbm90ZTo6CiAKICAgIFRoZSA6bWV0aDpgflNTTFNvY2tldC5yZWFkYCBhbmQgOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgIG1ldGhvZHMgYXJlIHRoZQpAQCAtMTEyNyw2ICsxMjAwLDE5IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisuLiBhdHRyaWJ1dGU6OiBTU0xTb2NrZXQuc2Vzc2lvbgorCisgICBUaGUgOmNsYXNzOmBTU0xTZXNzaW9uYCBmb3IgdGhpcyBTU0wgY29ubmVjdGlvbi4gVGhlIHNlc3Npb24gaXMgYXZhaWxhYmxlCisgICBmb3IgY2xpZW50IGFuZCBzZXJ2ZXIgc2lkZSBzb2NrZXRzIGFmdGVyIHRoZSBUTFMgaGFuZHNoYWtlIGhhcyBiZWVuCisgICBwZXJmb3JtZWQuIEZvciBjbGllbnQgc29ja2V0cyB0aGUgc2Vzc2lvbiBjYW4gYmUgc2V0IGJlZm9yZQorICAgOm1ldGg6YH5TU0xTb2NrZXQuZG9faGFuZHNoYWtlYCBoYXMgYmVlbiBjYWxsZWQgdG8gcmV1c2UgYSBzZXNzaW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gYXR0cmlidXRlOjogU1NMU29ja2V0LnNlc3Npb25fcmV1c2VkCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIFNTTCBDb250ZXh0cwogLS0tLS0tLS0tLS0tCkBAIC0xMTQ5LDkgKzEyMzUsMTYgQEAKICAgICAgIDpmdW5jOmBjcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBsZXRzIHRoZSA6bW9kOmBzc2xgIG1vZHVsZSBjaG9vc2UKICAgICAgIHNlY3VyaXR5IHNldHRpbmdzIGZvciBhIGdpdmVuIHB1cnBvc2UuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41LjMKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CiAKLSAgICAgIDpkYXRhOmBQUk9UT0NPTF9UTFNgIGlzIHRoZSBkZWZhdWx0IHZhbHVlLgorICAgICAgVGhlIGNvbnRleHQgaXMgY3JlYXRlZCB3aXRoIHNlY3VyZSBkZWZhdWx0IHZhbHVlcy4gVGhlIG9wdGlvbnMKKyAgICAgIDpkYXRhOmBPUF9OT19DT01QUkVTU0lPTmAsIDpkYXRhOmBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0VgLAorICAgICAgOmRhdGE6YE9QX1NJTkdMRV9ESF9VU0VgLCA6ZGF0YTpgT1BfU0lOR0xFX0VDREhfVVNFYCwKKyAgICAgIDpkYXRhOmBPUF9OT19TU0x2MmAgKGV4Y2VwdCBmb3IgOmRhdGE6YFBST1RPQ09MX1NTTHYyYCksCisgICAgICBhbmQgOmRhdGE6YE9QX05PX1NTTHYzYCAoZXhjZXB0IGZvciA6ZGF0YTpgUFJPVE9DT0xfU1NMdjNgKSBhcmUKKyAgICAgIHNldCBieSBkZWZhdWx0LiBUaGUgaW5pdGlhbCBjaXBoZXIgc3VpdGUgbGlzdCBjb250YWlucyBvbmx5IGBgSElHSGBgCisgICAgICBjaXBoZXJzLCBubyBgYE5VTExgYCBjaXBoZXJzIGFuZCBubyBgYE1ENWBgIGNpcGhlcnMgKGV4Y2VwdCBmb3IKKyAgICAgIDpkYXRhOmBQUk9UT0NPTF9TU0x2MmApLgogCiAKIDpjbGFzczpgU1NMQ29udGV4dGAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKQEAgLTEyNTksNiArMTM1Miw2MiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gbWV0aG9kOjogU1NMQ29udGV4dC5nZXRfY2lwaGVycygpCisKKyAgIEdldCBhIGxpc3Qgb2YgZW5hYmxlZCBjaXBoZXJzLiBUaGUgbGlzdCBpcyBpbiBvcmRlciBvZiBjaXBoZXIgcHJpb3JpdHkuCisgICBTZWUgOm1ldGg6YFNTTENvbnRleHQuc2V0X2NpcGhlcnNgLgorCisgICBFeGFtcGxlOjoKKworICAgICAgID4+PiBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgID4+PiBjdHguc2V0X2NpcGhlcnMoJ0VDREhFK0FFU0dDTTohRUNEU0EnKQorICAgICAgID4+PiBjdHguZ2V0X2NpcGhlcnMoKSAgIyBPcGVuU1NMIDEuMC54CisgICAgICAgW3snYWxnX2JpdHMnOiAyNTYsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgyNTYpIE1hYz1BRUFEJywKKyAgICAgICAgICdpZCc6IDUwMzgwODQ4LAorICAgICAgICAgJ25hbWUnOiAnRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0JywKKyAgICAgICAgICdwcm90b2NvbCc6ICdUTFN2MS9TU0x2MycsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDI1Nn0sCisgICAgICAgIHsnYWxnX2JpdHMnOiAxMjgsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgxMjgpIE1hYz1BRUFEJywKKyAgICAgICAgICdpZCc6IDUwMzgwODQ3LAorICAgICAgICAgJ25hbWUnOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2JywKKyAgICAgICAgICdwcm90b2NvbCc6ICdUTFN2MS9TU0x2MycsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDEyOH1dCisKKyAgIE9uIE9wZW5TU0wgMS4xIGFuZCBuZXdlciB0aGUgY2lwaGVyIGRpY3QgY29udGFpbnMgYWRkaXRpb25hbCBmaWVsZHM6OgorICAgICAgID4+PiBjdHguZ2V0X2NpcGhlcnMoKSAgIyBPcGVuU1NMIDEuMSsKKyAgICAgICBbeydhZWFkJzogVHJ1ZSwKKyAgICAgICAgICdhbGdfYml0cyc6IDI1NiwKKyAgICAgICAgICdhdXRoJzogJ2F1dGgtcnNhJywKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDI1NikgTWFjPUFFQUQnLAorICAgICAgICAgJ2RpZ2VzdCc6IE5vbmUsCisgICAgICAgICAnaWQnOiA1MDM4MDg0OCwKKyAgICAgICAgICdrZWEnOiAna3gtZWNkaGUnLAorICAgICAgICAgJ25hbWUnOiAnRUNESEUtUlNBLUFFUzI1Ni1HQ00tU0hBMzg0JywKKyAgICAgICAgICdwcm90b2NvbCc6ICdUTFN2MS4yJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMjU2LAorICAgICAgICAgJ3N5bW1ldHJpYyc6ICdhZXMtMjU2LWdjbSd9LAorICAgICAgICB7J2FlYWQnOiBUcnVlLAorICAgICAgICAgJ2FsZ19iaXRzJzogMTI4LAorICAgICAgICAgJ2F1dGgnOiAnYXV0aC1yc2EnLAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NiBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMTI4KSBNYWM9QUVBRCcsCisgICAgICAgICAnZGlnZXN0JzogTm9uZSwKKyAgICAgICAgICdpZCc6IDUwMzgwODQ3LAorICAgICAgICAgJ2tlYSc6ICdreC1lY2RoZScsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxLjInLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAxMjgsCisgICAgICAgICAnc3ltbWV0cmljJzogJ2Flcy0xMjgtZ2NtJ31dCisKKyAgIEF2YWlsYWJpbGl0eTogT3BlblNTTCAxLjAuMisKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkKIAogICAgTG9hZCBhIHNldCBvZiBkZWZhdWx0ICJjZXJ0aWZpY2F0aW9uIGF1dGhvcml0eSIgKENBKSBjZXJ0aWZpY2F0ZXMgZnJvbQpAQCAtMTM5Nyw3ICsxNTQ2LDcgQEAKIAogLi4gbWV0aG9kOjogU1NMQ29udGV4dC53cmFwX3NvY2tldChzb2NrLCBzZXJ2ZXJfc2lkZT1GYWxzZSwgXAogICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgXAotICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpCisgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKQogCiAgICBXcmFwIGFuIGV4aXN0aW5nIFB5dGhvbiBzb2NrZXQgKnNvY2sqIGFuZCByZXR1cm4gYW4gOmNsYXNzOmBTU0xTb2NrZXRgCiAgICBvYmplY3QuICAqc29jayogbXVzdCBiZSBhIDpkYXRhOmB+c29ja2V0LlNPQ0tfU1RSRUFNYCBzb2NrZXQ7IG90aGVyIHNvY2tldApAQCAtMTQxNCwxOSArMTU2MywyNyBAQAogICAgcXVpdGUgc2ltaWxhcmx5IHRvIEhUVFAgdmlydHVhbCBob3N0cy4gU3BlY2lmeWluZyAqc2VydmVyX2hvc3RuYW1lKiB3aWxsCiAgICByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlmICpzZXJ2ZXJfc2lkZSogaXMgdHJ1ZS4KIAorICAgKnNlc3Npb24qLCBzZWUgOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbmAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBbHdheXMgYWxsb3cgYSBzZXJ2ZXJfaG9zdG5hbWUgdG8gYmUgcGFzc2VkLCBldmVuIGlmIE9wZW5TU0wgZG9lcyBub3QKICAgICAgIGhhdmUgU05JLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKnNlc3Npb24qIGFyZ3VtZW50IHdhcyBhZGRlZC4KKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlPUZhbHNlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKQogCiAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTU0xPYmplY3RgIGluc3RhbmNlIGJ5IHdyYXBwaW5nIHRoZSBCSU8gb2JqZWN0cwogICAgKmluY29taW5nKiBhbmQgKm91dGdvaW5nKi4gVGhlIFNTTCByb3V0aW5lcyB3aWxsIHJlYWQgaW5wdXQgZGF0YSBmcm9tIHRoZQogICAgaW5jb21pbmcgQklPIGFuZCB3cml0ZSBkYXRhIHRvIHRoZSBvdXRnb2luZyBCSU8uCiAKLSAgIFRoZSAqc2VydmVyX3NpZGUqIGFuZCAqc2VydmVyX2hvc3RuYW1lKiBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcwotICAgaW4gOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgLgorICAgVGhlICpzZXJ2ZXJfc2lkZSosICpzZXJ2ZXJfaG9zdG5hbWUqIGFuZCAqc2Vzc2lvbiogcGFyYW1ldGVycyBoYXZlIHRoZQorICAgc2FtZSBtZWFuaW5nIGFzIGluIDptZXRoOmBTU0xDb250ZXh0LndyYXBfc29ja2V0YC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpzZXNzaW9uKiBhcmd1bWVudCB3YXMgYWRkZWQuCiAKIC4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2Vzc2lvbl9zdGF0cygpCiAKQEAgLTE0NzgsNiArMTYzNSwxMiBAQAogICAgICAgdG8gc2V0IG9wdGlvbnMsIG5vdCB0byBjbGVhciB0aGVtLiAgQXR0ZW1wdGluZyB0byBjbGVhciBhbiBvcHRpb24KICAgICAgIChieSByZXNldHRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYml0cykgd2lsbCByYWlzZSBhIGBgVmFsdWVFcnJvcmBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOmF0dHI6YFNTTENvbnRleHQub3B0aW9uc2AgcmV0dXJucyA6Y2xhc3M6YE9wdGlvbnNgIGZsYWdzOgorCisgICAgICAgICA+Pj4gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKS5vcHRpb25zCisgICAgICAgICA8T3B0aW9ucy5PUF9BTEx8T1BfTk9fU1NMdjN8T1BfTk9fU1NMdjJ8T1BfTk9fQ09NUFJFU1NJT046IDIxOTc5NDczOTE+CisKIC4uIGF0dHJpYnV0ZTo6IFNTTENvbnRleHQucHJvdG9jb2wKIAogICAgVGhlIHByb3RvY29sIHZlcnNpb24gY2hvc2VuIHdoZW4gY29uc3RydWN0aW5nIHRoZSBjb250ZXh0LiAgVGhpcyBhdHRyaWJ1dGUKQEAgLTE0OTIsMTIgKzE2NTUsMjMgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU1NMQ29udGV4dC52ZXJpZnlfZmxhZ3NgIHJldHVybnMgOmNsYXNzOmBWZXJpZnlGbGFnc2AgZmxhZ3M6CisKKyAgICAgICAgID4+PiBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpLnZlcmlmeV9mbGFncworICAgICAgICAgPFZlcmlmeUZsYWdzLlZFUklGWV9YNTA5X1RSVVNURURfRklSU1Q6IDMyNzY4PgorCiAuLiBhdHRyaWJ1dGU6OiBTU0xDb250ZXh0LnZlcmlmeV9tb2RlCiAKICAgIFdoZXRoZXIgdG8gdHJ5IHRvIHZlcmlmeSBvdGhlciBwZWVycycgY2VydGlmaWNhdGVzIGFuZCBob3cgdG8gYmVoYXZlCiAgICBpZiB2ZXJpZmljYXRpb24gZmFpbHMuICBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIG9uZSBvZgogICAgOmRhdGE6YENFUlRfTk9ORWAsIDpkYXRhOmBDRVJUX09QVElPTkFMYCBvciA6ZGF0YTpgQ0VSVF9SRVFVSVJFRGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU1NMQ29udGV4dC52ZXJpZnlfbW9kZWAgcmV0dXJucyA6Y2xhc3M6YFZlcmlmeU1vZGVgIGVudW06CisKKyAgICAgICAgID4+PiBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpLnZlcmlmeV9tb2RlCisgICAgICAgICA8VmVyaWZ5TW9kZS5DRVJUX1JFUVVJUkVEOiAyPgogCiAuLiBpbmRleDo6IHNpbmdsZTogY2VydGlmaWNhdGVzCiAKQEAgLTE5MTYsNiArMjA5MCw4IEBACiAgICAtIDphdHRyOmB+U1NMU29ja2V0LmNvbnRleHRgCiAgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlcnZlcl9zaWRlYAogICAgLSA6YXR0cjpgflNTTFNvY2tldC5zZXJ2ZXJfaG9zdG5hbWVgCisgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25gCisgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25fcmV1c2VkYAogICAgLSA6bWV0aDpgflNTTFNvY2tldC5yZWFkYAogICAgLSA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAKICAgIC0gOm1ldGg6YH5TU0xTb2NrZXQuZ2V0cGVlcmNlcnRgCkBAIC0xOTk3LDYgKzIxNzMsMjIgQEAKICAgICAgIGJlY29tZSB0cnVlIGFmdGVyIGFsbCBkYXRhIGN1cnJlbnRseSBpbiB0aGUgYnVmZmVyIGhhcyBiZWVuIHJlYWQuCiAKIAorU1NMIHNlc3Npb24KKy0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBjbGFzczo6IFNTTFNlc3Npb24KKworICAgU2Vzc2lvbiBvYmplY3QgdXNlZCBieSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uYC4KKworICAgLi4gYXR0cmlidXRlOjogaWQKKyAgIC4uIGF0dHJpYnV0ZTo6IHRpbWUKKyAgIC4uIGF0dHJpYnV0ZTo6IHRpbWVvdXQKKyAgIC4uIGF0dHJpYnV0ZTo6IHRpY2tldF9saWZldGltZV9oaW50CisgICAuLiBhdHRyaWJ1dGU6OiBoYXNfdGlja2V0CisKKwogLi4gX3NzbC1zZWN1cml0eToKIAogU2VjdXJpdHkgY29uc2lkZXJhdGlvbnMKQEAgLTIwNjMsMTggKzIyNTUsMjAgQEAKIAogU1NMIHZlcnNpb25zIDIgYW5kIDMgYXJlIGNvbnNpZGVyZWQgaW5zZWN1cmUgYW5kIGFyZSB0aGVyZWZvcmUgZGFuZ2Vyb3VzIHRvCiB1c2UuICBJZiB5b3Ugd2FudCBtYXhpbXVtIGNvbXBhdGliaWxpdHkgYmV0d2VlbiBjbGllbnRzIGFuZCBzZXJ2ZXJzLCBpdCBpcwotcmVjb21tZW5kZWQgdG8gdXNlIDpjb25zdDpgUFJPVE9DT0xfVExTYCBhcyB0aGUgcHJvdG9jb2wgdmVyc2lvbiBhbmQgdGhlbgotZGlzYWJsZSBTU0x2MiBhbmQgU1NMdjMgZXhwbGljaXRseSB1c2luZyB0aGUgOmRhdGE6YFNTTENvbnRleHQub3B0aW9uc2AKLWF0dHJpYnV0ZTo6CityZWNvbW1lbmRlZCB0byB1c2UgOmNvbnN0OmBQUk9UT0NPTF9UTFNfQ0xJRU5UYCBvcgorOmNvbnN0OmBQUk9UT0NPTF9UTFNfU0VSVkVSYCBhcyB0aGUgcHJvdG9jb2wgdmVyc2lvbi4gU1NMdjIgYW5kIFNTTHYzIGFyZQorZGlzYWJsZWQgYnkgZGVmYXVsdC4KIAotICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFMpCi0gICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1NTTHYyCi0gICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1NTTHYzCi0gICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxCi0gICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxXzEKKyAgID4+PiBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgPj4+IGNsaWVudF9jb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX1RMU3YxCisgICA+Pj4gY2xpZW50X2NvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjFfMQorCiAKIFRoZSBTU0wgY29udGV4dCBjcmVhdGVkIGFib3ZlIHdpbGwgb25seSBhbGxvdyBUTFN2MS4yIGFuZCBsYXRlciAoaWYKLXN1cHBvcnRlZCBieSB5b3VyIHN5c3RlbSkgY29ubmVjdGlvbnMuCitzdXBwb3J0ZWQgYnkgeW91ciBzeXN0ZW0pIGNvbm5lY3Rpb25zIHRvIGEgc2VydmVyLiA6Y29uc3Q6YFBST1RPQ09MX1RMU19DTElFTlRgCitpbXBsaWVzIGNlcnRpZmljYXRlIHZhbGlkYXRpb24gYW5kIGhvc3RuYW1lIGNoZWNrcyBieSBkZWZhdWx0LiBZb3UgaGF2ZSB0bworbG9hZCBjZXJ0aWZpY2F0ZXMgaW50byB0aGUgY29udGV4dC4KKwogCiBDaXBoZXIgc2VsZWN0aW9uCiAnJycnJycnJycnJycnJycnCkBAIC0yMDg1LDggKzIyNzksOSBAQAogc3NsIG1vZHVsZSBkaXNhYmxlcyBjZXJ0YWluIHdlYWsgY2lwaGVycyBieSBkZWZhdWx0LCBidXQgeW91IG1heSB3YW50CiB0byBmdXJ0aGVyIHJlc3RyaWN0IHRoZSBjaXBoZXIgY2hvaWNlLiBCZSBzdXJlIHRvIHJlYWQgT3BlblNTTCdzIGRvY3VtZW50YXRpb24KIGFib3V0IHRoZSBgY2lwaGVyIGxpc3QgZm9ybWF0IDxodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2FwcHMvY2lwaGVycy5odG1sI0NJUEhFUi1MSVNULUZPUk1BVD5gXy4KLUlmIHlvdSB3YW50IHRvIGNoZWNrIHdoaWNoIGNpcGhlcnMgYXJlIGVuYWJsZWQgYnkgYSBnaXZlbiBjaXBoZXIgbGlzdCwgdXNlIHRoZQotYGBvcGVuc3NsIGNpcGhlcnNgYCBjb21tYW5kIG9uIHlvdXIgc3lzdGVtLgorSWYgeW91IHdhbnQgdG8gY2hlY2sgd2hpY2ggY2lwaGVycyBhcmUgZW5hYmxlZCBieSBhIGdpdmVuIGNpcGhlciBsaXN0LCB1c2UKKzptZXRoOmBTU0xDb250ZXh0LmdldF9jaXBoZXJzYCBvciB0aGUgYGBvcGVuc3NsIGNpcGhlcnNgYCBjb21tYW5kIG9uIHlvdXIKK3N5c3RlbS4KIAogTXVsdGktcHJvY2Vzc2luZwogXl5eXl5eXl5eXl5eXl5eXgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RhdGlzdGljcy5yc3QgYi9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdAppbmRleCBlYTNkN2RhLi5jMDIwYTM0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdApAQCAtMzksNiArMzksNyBAQAogCiA9PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA6ZnVuYzpgbWVhbmAgICAgICAgICAgICAgQXJpdGhtZXRpYyBtZWFuICgiYXZlcmFnZSIpIG9mIGRhdGEuCis6ZnVuYzpgaGFybW9uaWNfbWVhbmAgICAgSGFybW9uaWMgbWVhbiBvZiBkYXRhLgogOmZ1bmM6YG1lZGlhbmAgICAgICAgICAgIE1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBkYXRhLgogOmZ1bmM6YG1lZGlhbl9sb3dgICAgICAgIExvdyBtZWRpYW4gb2YgZGF0YS4KIDpmdW5jOmBtZWRpYW5faGlnaGAgICAgICBIaWdoIG1lZGlhbiBvZiBkYXRhLgpAQCAtMTExLDYgKzExMiwzOCBAQAogICAgICAgYGBtZWFuKGRhdGEpYGAgaXMgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB0aGUgdHJ1ZSBwb3B1bGF0aW9uIG1lYW4gzrwuCiAKIAorLi4gZnVuY3Rpb246OiBoYXJtb25pY19tZWFuKGRhdGEpCisKKyAgIFJldHVybiB0aGUgaGFybW9uaWMgbWVhbiBvZiAqZGF0YSosIGEgc2VxdWVuY2Ugb3IgaXRlcmF0b3Igb2YKKyAgIHJlYWwtdmFsdWVkIG51bWJlcnMuCisKKyAgIFRoZSBoYXJtb25pYyBtZWFuLCBzb21ldGltZXMgY2FsbGVkIHRoZSBzdWJjb250cmFyeSBtZWFuLCBpcyB0aGUKKyAgIHJlY2lwcm9jYWwgb2YgdGhlIGFyaXRobWV0aWMgOmZ1bmM6YG1lYW5gIG9mIHRoZSByZWNpcHJvY2FscyBvZiB0aGUKKyAgIGRhdGEuIEZvciBleGFtcGxlLCB0aGUgaGFybW9uaWMgbWVhbiBvZiB0aHJlZSB2YWx1ZXMgKmEqLCAqYiogYW5kICpjKgorICAgd2lsbCBiZSBlcXVpdmFsZW50IHRvIGBgMy8oMS9hICsgMS9iICsgMS9jKWBgLgorCisgICBUaGUgaGFybW9uaWMgbWVhbiBpcyBhIHR5cGUgb2YgYXZlcmFnZSwgYSBtZWFzdXJlIG9mIHRoZSBjZW50cmFsCisgICBsb2NhdGlvbiBvZiB0aGUgZGF0YS4gIEl0IGlzIG9mdGVuIGFwcHJvcHJpYXRlIHdoZW4gYXZlcmFnaW5nIHF1YW50aXRpZXMKKyAgIHdoaWNoIGFyZSByYXRlcyBvciByYXRpb3MsIGZvciBleGFtcGxlIHNwZWVkcy4gRm9yIGV4YW1wbGU6CisKKyAgIFN1cHBvc2UgYW4gaW52ZXN0b3IgcHVyY2hhc2VzIGFuIGVxdWFsIHZhbHVlIG9mIHNoYXJlcyBpbiBlYWNoIG9mCisgICB0aHJlZSBjb21wYW5pZXMsIHdpdGggUC9FIChwcmljZS9lYXJuaW5nKSByYXRpb3Mgb2YgMi41LCAzIGFuZCAxMC4KKyAgIFdoYXQgaXMgdGhlIGF2ZXJhZ2UgUC9FIHJhdGlvIGZvciB0aGUgaW52ZXN0b3IncyBwb3J0Zm9saW8/CisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gaGFybW9uaWNfbWVhbihbMi41LCAzLCAxMF0pICAjIEZvciBhbiBlcXVhbCBpbnZlc3RtZW50IHBvcnRmb2xpby4KKyAgICAgIDMuNgorCisgICBVc2luZyB0aGUgYXJpdGhtZXRpYyBtZWFuIHdvdWxkIGdpdmUgYW4gYXZlcmFnZSBvZiBhYm91dCA1LjE2Nywgd2hpY2gKKyAgIGlzIHRvbyBoaWdoLgorCisgICA6ZXhjOmBTdGF0aXN0aWNzRXJyb3JgIGlzIHJhaXNlZCBpZiAqZGF0YSogaXMgZW1wdHksIG9yIGFueSBlbGVtZW50CisgICBpcyBsZXNzIHRoYW4gemVyby4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gZnVuY3Rpb246OiBtZWRpYW4oZGF0YSkKIAogICAgUmV0dXJuIHRoZSBtZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgbnVtZXJpYyBkYXRhLCB1c2luZyB0aGUgY29tbW9uICJtZWFuIG9mCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKaW5kZXggMjU4N2FjOC4uMTlhMDJmZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdApAQCAtMTM2Myw2ICsxMzYzLDExIEBACiAgICBUaGUgOmF0dHI6YH5yYW5nZS5zdGFydGAsIDphdHRyOmB+cmFuZ2Uuc3RvcGAgYW5kIDphdHRyOmB+cmFuZ2Uuc3RlcGAKICAgIGF0dHJpYnV0ZXMuCiAKKy4uIHNlZWFsc286OgorCisgICAqIFRoZSBgbGluc3BhY2UgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzkwMDAvPmBfCisgICAgIHNob3dzIGhvdyB0byBpbXBsZW1lbnQgYSBsYXp5IHZlcnNpb24gb2YgcmFuZ2UgdGhhdCBzdWl0YWJsZSBmb3IgZmxvYXRpbmcKKyAgICAgcG9pbnQgYXBwbGljYXRpb25zLgogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IHN0cmluZzsgdGV4dCBzZXF1ZW5jZSB0eXBlCkBAIC0xNDUzLDggKzE0NTgsOCBAQAogCiAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgYGBzdHJgYCBjbGFzcyBhbmQgaXRzIG1ldGhvZHMsIHNlZQogICAgOnJlZjpgdGV4dHNlcWAgYW5kIHRoZSA6cmVmOmBzdHJpbmctbWV0aG9kc2Agc2VjdGlvbiBiZWxvdy4gIFRvIG91dHB1dAotICAgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgOnJlZjpgZm9ybWF0c3RyaW5nc2Agc2VjdGlvbi4gIEluIGFkZGl0aW9uLAotICAgc2VlIHRoZSA6cmVmOmBzdHJpbmdzZXJ2aWNlc2Agc2VjdGlvbi4KKyAgIGZvcm1hdHRlZCBzdHJpbmdzLCBzZWUgdGhlIDpyZWY6YGYtc3RyaW5nc2AgYW5kIDpyZWY6YGZvcm1hdHN0cmluZ3NgCisgICBzZWN0aW9ucy4gIEluIGFkZGl0aW9uLCBzZWUgdGhlIDpyZWY6YHN0cmluZ3NlcnZpY2VzYCBzZWN0aW9uLgogCiAKIC4uIGluZGV4OjoKQEAgLTIwNTYsOCArMjA2MSw4IEBACiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGZvcm1hdHRpbmcsIHN0cmluZyAoJSkKICAgIHNpbmdsZTogaW50ZXJwb2xhdGlvbiwgc3RyaW5nICglKQotICAgc2luZ2xlOiBzdHJpbmc7IGZvcm1hdHRpbmcKLSAgIHNpbmdsZTogc3RyaW5nOyBpbnRlcnBvbGF0aW9uCisgICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0dGluZywgcHJpbnRmCisgICBzaW5nbGU6IHN0cmluZzsgaW50ZXJwb2xhdGlvbiwgcHJpbnRmCiAgICBzaW5nbGU6IHByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6IHNwcmludGYtc3R5bGUgZm9ybWF0dGluZwogICAgc2luZ2xlOiAlIGZvcm1hdHRpbmcKQEAgLTIwNjcsOSArMjA3MiwxMCBAQAogCiAgICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGV4aGliaXQgYSB2YXJpZXR5IG9mIHF1aXJrcyB0aGF0CiAgICBsZWFkIHRvIGEgbnVtYmVyIG9mIGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgZmFpbGluZyB0byBkaXNwbGF5IHR1cGxlcyBhbmQKLSAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgVXNpbmcgdGhlIG5ld2VyIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKLSAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycywgYW5kIGFsc28gcHJvdmlkZXMgYSBnZW5lcmFsbHkgbW9yZSBwb3dlcmZ1bCwKLSAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoIHRvIGZvcm1hdHRpbmcgdGV4dC4KKyAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgVXNpbmcgdGhlIG5ld2VyIDpyZWY6YGZvcm1hdHRlZAorICAgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCBvciB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgIGludGVyZmFjZQorICAgaGVscHMgYXZvaWQgdGhlc2UgZXJyb3JzLiAgVGhlc2UgYWx0ZXJuYXRpdmVzIGFsc28gcHJvdmlkZSBtb3JlIHBvd2VyZnVsLAorICAgZmxleGlibGUgYW5kIGV4dGVuc2libGUgYXBwcm9hY2hlcyB0byBmb3JtYXR0aW5nIHRleHQuCiAKIFN0cmluZyBvYmplY3RzIGhhdmUgb25lIHVuaXF1ZSBidWlsdC1pbiBvcGVyYXRpb246IHRoZSBgYCVgYCBvcGVyYXRvciAobW9kdWxvKS4KIFRoaXMgaXMgYWxzbyBrbm93biBhcyB0aGUgc3RyaW5nICpmb3JtYXR0aW5nKiBvciAqaW50ZXJwb2xhdGlvbiogb3BlcmF0b3IuCkBAIC0yNjMwLDggKzI2MzYsOCBAQAogICAgVGhlIHByZWZpeChlcykgdG8gc2VhcmNoIGZvciBtYXkgYmUgYW55IDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuCiAKIAotLi4gbWV0aG9kOjogYnl0ZXMudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSkKLSAgICAgICAgICAgIGJ5dGVhcnJheS50cmFuc2xhdGUodGFibGVbLCBkZWxldGVdKQorLi4gbWV0aG9kOjogYnl0ZXMudHJhbnNsYXRlKHRhYmxlLCBkZWxldGU9YicnKQorICAgICAgICAgICAgYnl0ZWFycmF5LnRyYW5zbGF0ZSh0YWJsZSwgZGVsZXRlPWInJykKIAogICAgUmV0dXJuIGEgY29weSBvZiB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCB3aGVyZSBhbGwgYnl0ZXMgb2NjdXJyaW5nIGluCiAgICB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmRlbGV0ZSogYXJlIHJlbW92ZWQsIGFuZCB0aGUgcmVtYWluaW5nIGJ5dGVzIGhhdmUKQEAgLTI2NDcsNiArMjY1Myw5IEBACiAgICAgICA+Pj4gYidyZWFkIHRoaXMgc2hvcnQgdGV4dCcudHJhbnNsYXRlKE5vbmUsIGInYWVpb3UnKQogICAgICAgYidyZCB0aHMgc2hydCB0eHQnCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVsZXRlKiBpcyBub3cgc3VwcG9ydGVkIGFzIGEga2V5d29yZCBhcmd1bWVudC4KKwogCiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGhhdmUgZGVmYXVsdCBiZWhhdmlvdXJzCiB0aGF0IGFzc3VtZSB0aGUgdXNlIG9mIEFTQ0lJIGNvbXBhdGlibGUgYmluYXJ5IGZvcm1hdHMsIGJ1dCBjYW4gc3RpbGwgYmUgdXNlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKaW5kZXggMDU0MThhOS4uYTA5NzdiNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CkBAIC0xODgsNyArMTg4LDkgQEAKIAogVGhlIDptZXRoOmBzdHIuZm9ybWF0YCBtZXRob2QgYW5kIHRoZSA6Y2xhc3M6YEZvcm1hdHRlcmAgY2xhc3Mgc2hhcmUgdGhlIHNhbWUKIHN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mIDpjbGFzczpgRm9ybWF0dGVyYCwKLXN1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLgorc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuICBUaGUgc3ludGF4IGlzCityZWxhdGVkIHRvIHRoYXQgb2YgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAsIGJ1dAordGhlcmUgYXJlIGRpZmZlcmVuY2VzLgogCiBGb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzIGBge31gYC4KIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsIHRleHQsIHdoaWNoIGlzCkBAIC0yODMsNyArMjg1LDggQEAKIAogIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWQgd2l0aGluIGEKIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkIChzZWUKLTpyZWY6YGZvcm1hdHN0cmluZ3NgKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBidWlsdC1pbgorOnJlZjpgZm9ybWF0c3RyaW5nc2AgYW5kIDpyZWY6YGYtc3RyaW5nc2ApLgorVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGJ1aWx0LWluCiA6ZnVuYzpgZm9ybWF0YCBmdW5jdGlvbi4gIEVhY2ggZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvdyB0aGUgZm9ybWF0CiBzcGVjaWZpY2F0aW9uIGlzIHRvIGJlIGludGVycHJldGVkLgogCkBAIC0yOTcsMTggKzMwMCwyMCBAQAogVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczoKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OiBzZgotICAgZm9ybWF0X3NwZWM6IFtbYGZpbGxgXWBhbGlnbmBdW2BzaWduYF1bI11bMF1bYHdpZHRoYF1bLF1bLmBwcmVjaXNpb25gXVtgdHlwZWBdCisgICBmb3JtYXRfc3BlYzogW1tgZmlsbGBdYGFsaWduYF1bYHNpZ25gXVsjXVswXVtgd2lkdGhgXVtgZ3JvdXBpbmdfb3B0aW9uYF1bLmBwcmVjaXNpb25gXVtgdHlwZWBdCiAgICBmaWxsOiA8YW55IGNoYXJhY3Rlcj4KICAgIGFsaWduOiAiPCIgfCAiPiIgfCAiPSIgfCAiXiIKICAgIHNpZ246ICIrIiB8ICItIiB8ICIgIgogICAgd2lkdGg6IGBpbnRlZ2VyYAorICAgZ3JvdXBpbmdfb3B0aW9uOiAiXyIgfCAiLCIKICAgIHByZWNpc2lvbjogYGludGVnZXJgCiAgICB0eXBlOiAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSIKIAogSWYgYSB2YWxpZCAqYWxpZ24qIHZhbHVlIGlzIHNwZWNpZmllZCwgaXQgY2FuIGJlIHByZWNlZGVkIGJ5IGEgKmZpbGwqCiBjaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSBpZiBvbWl0dGVkLgogSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgKCJgYHtgYCIgb3IgImBgfWBgIikgYXMKLXRoZSAqZmlsbCogY2hhcmFjdGVyIHdoZW4gdXNpbmcgdGhlIDptZXRoOmBzdHIuZm9ybWF0YAordGhlICpmaWxsKiBjaGFyYWN0ZXIgaW4gYSA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwKKzxmLXN0cmluZ3M+YCBvciB3aGVuIHVzaW5nIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAKIG1ldGhvZC4gIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGluc2VydCBhIGN1cmx5IGJyYWNlCiB3aXRoIGEgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkLiAgVGhpcyBsaW1pdGF0aW9uIGRvZXNuJ3QKIGFmZmVjdCB0aGUgOmZ1bmM6YGZvcm1hdGAgZnVuY3Rpb24uCkBAIC0zNzQsNiArMzc5LDE2IEBACiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQogICAgQWRkZWQgdGhlIGBgJywnYGAgb3B0aW9uIChzZWUgYWxzbyA6cGVwOmAzNzhgKS4KIAorVGhlIGBgJ18nYGAgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhbiB1bmRlcnNjb3JlIGZvciBhIHRob3VzYW5kcworc2VwYXJhdG9yIGZvciBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgYW5kIGZvciBpbnRlZ2VyCitwcmVzZW50YXRpb24gdHlwZSBgYCdkJ2BgLiAgRm9yIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGBgJ2InYGAsCitgYCdvJ2BgLCBgYCd4J2BgLCBhbmQgYGAnWCdgYCwgdW5kZXJzY29yZXMgd2lsbCBiZSBpbnNlcnRlZCBldmVyeSA0CitkaWdpdHMuICBGb3Igb3RoZXIgcHJlc2VudGF0aW9uIHR5cGVzLCBzcGVjaWZ5aW5nIHRoaXMgb3B0aW9uIGlzIGFuCitlcnJvci4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgIEFkZGVkIHRoZSBgYCdfJ2BgIG9wdGlvbiAoc2VlIGFsc28gOnBlcDpgNTE1YCkuCisKICp3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3QKIHNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0IGIvRG9jL2xpYnJhcnkvc3RydWN0LnJzdAppbmRleCBhZTJlMzhmLi43ZTg2MWZkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKQEAgLTIxNiw2ICsyMTYsOCBAQAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYE5gYCAgfCA6Yzp0eXBlOmBzaXplX3RgICAgICAgICAgfCBpbnRlZ2VyICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFwoNCkgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCBgYGVgYCAgfCBcKDcpICAgICAgICAgICAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAorKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYGZgYCAgfCA6Yzp0eXBlOmBmbG9hdGAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfAogKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwogfCBgYGRgYCAgfCA6Yzp0eXBlOmBkb3VibGVgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICB8IFwoNSkgICAgICAgfApAQCAtMjU3LDkgKzI1OSwxMCBAQAogICAgZml0cyB5b3VyIGFwcGxpY2F0aW9uLgogCiAoNSkKLSAgIEZvciB0aGUgYGAnZidgYCBhbmQgYGAnZCdgYCBjb252ZXJzaW9uIGNvZGVzLCB0aGUgcGFja2VkIHJlcHJlc2VudGF0aW9uIHVzZXMKLSAgIHRoZSBJRUVFIDc1NCBiaW5hcnkzMiAoZm9yIGBgJ2YnYGApIG9yIGJpbmFyeTY0IChmb3IgYGAnZCdgYCkgZm9ybWF0LAotICAgcmVnYXJkbGVzcyBvZiB0aGUgZmxvYXRpbmctcG9pbnQgZm9ybWF0IHVzZWQgYnkgdGhlIHBsYXRmb3JtLgorICAgRm9yIHRoZSBgYCdmJ2BgLCBgYCdkJ2BgIGFuZCBgYCdlJ2BgIGNvbnZlcnNpb24gY29kZXMsIHRoZSBwYWNrZWQKKyAgIHJlcHJlc2VudGF0aW9uIHVzZXMgdGhlIElFRUUgNzU0IGJpbmFyeTMyLCBiaW5hcnk2NCBvciBiaW5hcnkxNiBmb3JtYXQgKGZvcgorICAgYGAnZidgYCwgYGAnZCdgYCBvciBgYCdlJ2BgIHJlc3BlY3RpdmVseSksIHJlZ2FyZGxlc3Mgb2YgdGhlIGZsb2F0aW5nLXBvaW50CisgICBmb3JtYXQgdXNlZCBieSB0aGUgcGxhdGZvcm0uCiAKICg2KQogICAgVGhlIGBgJ1AnYGAgZm9ybWF0IGNoYXJhY3RlciBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIG5hdGl2ZSBieXRlIG9yZGVyaW5nCkBAIC0yNjgsNiArMjcxLDE2IEBACiAgICBvbiB0aGUgaG9zdCBzeXN0ZW0uIFRoZSBzdHJ1Y3QgbW9kdWxlIGRvZXMgbm90IGludGVycHJldCB0aGlzIGFzIG5hdGl2ZQogICAgb3JkZXJpbmcsIHNvIHRoZSBgYCdQJ2BgIGZvcm1hdCBpcyBub3QgYXZhaWxhYmxlLgogCisoNykKKyAgIFRoZSBJRUVFIDc1NCBiaW5hcnkxNiAiaGFsZiBwcmVjaXNpb24iIHR5cGUgd2FzIGludHJvZHVjZWQgaW4gdGhlIDIwMDgKKyAgIHJldmlzaW9uIG9mIHRoZSBgSUVFRSA3NTQgc3RhbmRhcmQgPGllZWUgNzU0IHN0YW5kYXJkXz5gXy4gSXQgaGFzIGEgc2lnbgorICAgYml0LCBhIDUtYml0IGV4cG9uZW50IGFuZCAxMS1iaXQgcHJlY2lzaW9uICh3aXRoIDEwIGJpdHMgZXhwbGljaXRseSBzdG9yZWQpLAorICAgYW5kIGNhbiByZXByZXNlbnQgbnVtYmVycyBiZXR3ZWVuIGFwcHJveGltYXRlbHkgYGA2LjFlLTA1YGAgYW5kIGBgNi41ZSswNGBgCisgICBhdCBmdWxsIHByZWNpc2lvbi4gVGhpcyB0eXBlIGlzIG5vdCB3aWRlbHkgc3VwcG9ydGVkIGJ5IEMgY29tcGlsZXJzOiBvbiBhCisgICB0eXBpY2FsIG1hY2hpbmUsIGFuIHVuc2lnbmVkIHNob3J0IGNhbiBiZSB1c2VkIGZvciBzdG9yYWdlLCBidXQgbm90IGZvciBtYXRoCisgICBvcGVyYXRpb25zLiBTZWUgdGhlIFdpa2lwZWRpYSBwYWdlIG9uIHRoZSBgaGFsZi1wcmVjaXNpb24gZmxvYXRpbmctcG9pbnQKKyAgIGZvcm1hdCA8aGFsZiBwcmVjaXNpb24gZm9ybWF0Xz5gXyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKwogCiBBIGZvcm1hdCBjaGFyYWN0ZXIgbWF5IGJlIHByZWNlZGVkIGJ5IGFuIGludGVncmFsIHJlcGVhdCBjb3VudC4gIEZvciBleGFtcGxlLAogdGhlIGZvcm1hdCBzdHJpbmcgYGAnNGgnYGAgbWVhbnMgZXhhY3RseSB0aGUgc2FtZSBhcyBgYCdoaGhoJ2BgLgpAQCAtNDMwLDMgKzQ0Myw3IEBACiAgICAgICBUaGUgY2FsY3VsYXRlZCBzaXplIG9mIHRoZSBzdHJ1Y3QgKGFuZCBoZW5jZSBvZiB0aGUgYnl0ZXMgb2JqZWN0IHByb2R1Y2VkCiAgICAgICBieSB0aGUgOm1ldGg6YHBhY2tgIG1ldGhvZCkgY29ycmVzcG9uZGluZyB0byA6YXR0cjpgZm9ybWF0YC4KIAorCisuLiBfaGFsZiBwcmVjaXNpb24gZm9ybWF0OiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9IYWxmLXByZWNpc2lvbl9mbG9hdGluZy1wb2ludF9mb3JtYXQKKworLi4gX2llZWUgNzU0IHN0YW5kYXJkOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JRUVFX2Zsb2F0aW5nX3BvaW50I0lFRUVfNzU0LTIwMDgKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0IGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKaW5kZXggYzFiMjhmOC4uYWQyYWJlOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKQEAgLTM4LDcgKzM4LDggQEAKIAogCiAuLiBmdW5jdGlvbjo6IHJ1bihhcmdzLCAqLCBzdGRpbj1Ob25lLCBpbnB1dD1Ob25lLCBzdGRvdXQ9Tm9uZSwgc3RkZXJyPU5vbmUsXAotICAgICAgICAgICAgICAgICAgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgY2hlY2s9RmFsc2UpCisgICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUpCiAKICAgIFJ1biB0aGUgY29tbWFuZCBkZXNjcmliZWQgYnkgKmFyZ3MqLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSwgdGhlbgogICAgcmV0dXJuIGEgOmNsYXNzOmBDb21wbGV0ZWRQcm9jZXNzYCBpbnN0YW5jZS4KQEAgLTYwLDE1ICs2MSwyMCBAQAogCiAgICBUaGUgKmlucHV0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYCBhbmQgdGh1cyB0byB0aGUKICAgIHN1YnByb2Nlc3MncyBzdGRpbi4gIElmIHVzZWQgaXQgbXVzdCBiZSBhIGJ5dGUgc2VxdWVuY2UsIG9yIGEgc3RyaW5nIGlmCi0gICBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuICBXaGVuIHVzZWQsIHRoZSBpbnRlcm5hbCA6Y2xhc3M6YFBvcGVuYCBvYmplY3QKLSAgIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aXRoIGBgc3RkaW49UElQRWBgLCBhbmQgdGhlICpzdGRpbiogYXJndW1lbnQgbWF5Ci0gICBub3QgYmUgdXNlZCBhcyB3ZWxsLgorICAgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBpcyBzcGVjaWZpZWQgb3IgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgdHJ1ZS4gIFdoZW4KKyAgIHVzZWQsIHRoZSBpbnRlcm5hbCA6Y2xhc3M6YFBvcGVuYCBvYmplY3QgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdpdGgKKyAgIGBgc3RkaW49UElQRWBgLCBhbmQgdGhlICpzdGRpbiogYXJndW1lbnQgbWF5IG5vdCBiZSB1c2VkIGFzIHdlbGwuCiAKICAgIElmICpjaGVjayogaXMgdHJ1ZSwgYW5kIHRoZSBwcm9jZXNzIGV4aXRzIHdpdGggYSBub24temVybyBleGl0IGNvZGUsIGEKICAgIDpleGM6YENhbGxlZFByb2Nlc3NFcnJvcmAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBBdHRyaWJ1dGVzIG9mIHRoYXQKICAgIGV4Y2VwdGlvbiBob2xkIHRoZSBhcmd1bWVudHMsIHRoZSBleGl0IGNvZGUsIGFuZCBzdGRvdXQgYW5kIHN0ZGVyciBpZiB0aGV5CiAgICB3ZXJlIGNhcHR1cmVkLgogCisgICBJZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZSBzcGVjaWZpZWQsIG9yICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIHRydWUsCisgICBmaWxlIG9iamVjdHMgZm9yIHN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSB1c2luZyB0aGUKKyAgIHNwZWNpZmllZCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBvciB0aGUgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBkZWZhdWx0LgorICAgT3RoZXJ3aXNlLCBmaWxlIG9iamVjdHMgYXJlIG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4KKwogICAgRXhhbXBsZXM6OgogCiAgICAgICA+Pj4gc3VicHJvY2Vzcy5ydW4oWyJscyIsICItbCJdKSAgIyBkb2Vzbid0IGNhcHR1cmUgb3V0cHV0CkBAIC04NSw2ICs5MSwxMCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgICAgQWRkZWQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycworCiAuLiBjbGFzczo6IENvbXBsZXRlZFByb2Nlc3MKIAogICAgVGhlIHJldHVybiB2YWx1ZSBmcm9tIDpmdW5jOmBydW5gLCByZXByZXNlbnRpbmcgYSBwcm9jZXNzIHRoYXQgaGFzIGZpbmlzaGVkLgpAQCAtMTA0LDggKzExNCw4IEBACiAgICAuLiBhdHRyaWJ1dGU6OiBzdGRvdXQKIAogICAgICAgQ2FwdHVyZWQgc3Rkb3V0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIEEgYnl0ZXMgc2VxdWVuY2UsIG9yIGEgc3RyaW5nIGlmCi0gICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYGB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZWBgLiBgYE5vbmVgYCBpZiBzdGRvdXQKLSAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisgICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYW4gZW5jb2Rpbmcgb3IgZXJyb3JzLiBgYE5vbmVgYCBpZiBzdGRvdXQgd2FzIG5vdAorICAgICAgY2FwdHVyZWQuCiAKICAgICAgIElmIHlvdSByYW4gdGhlIHByb2Nlc3Mgd2l0aCBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgLCBzdGRvdXQgYW5kCiAgICAgICBzdGRlcnIgd2lsbCBiZSBjb21iaW5lZCBpbiB0aGlzIGF0dHJpYnV0ZSwgYW5kIDphdHRyOmBzdGRlcnJgIHdpbGwgYmUKQEAgLTExNCw4ICsxMjQsOCBAQAogICAgLi4gYXR0cmlidXRlOjogc3RkZXJyCiAKICAgICAgIENhcHR1cmVkIHN0ZGVyciBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gYGBOb25lYGAgaWYgc3RkZXJyCi0gICAgICB3YXMgbm90IGNhcHR1cmVkLgorICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGFuIGVuY29kaW5nIG9yIGVycm9ycy4gYGBOb25lYGAgaWYgc3RkZXJyIHdhcyBub3QKKyAgICAgIGNhcHR1cmVkLgogCiAgICAuLiBtZXRob2Q6OiBjaGVja19yZXR1cm5jb2RlKCkKIApAQCAtMjQ5LDE5ICsyNTksMjIgQEAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBzdWJwcm9jZXNzIG1vZHVsZQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYEZhbHNlYGAgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQKLSAgICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzIGJpbmFyeSBzdHJlYW1zLCBhbmQgbm8gbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcwotICAgZG9uZS4KKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgb3IgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgdHJ1ZSwKKyAgIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGluIHRleHQKKyAgIG1vZGUgdXNpbmcgdGhlICplbmNvZGluZyogYW5kICplcnJvcnMqIHNwZWNpZmllZCBpbiB0aGUgY2FsbCBvciB0aGUKKyAgIGRlZmF1bHRzIGZvciA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgLgogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlc2UgZmlsZSBvYmplY3RzCi0gICB3aWxsIGJlIG9wZW5lZCBhcyB0ZXh0IHN0cmVhbXMgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZQotICAgdXNpbmcgdGhlIGVuY29kaW5nIHJldHVybmVkIGJ5IDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCi0gICA8bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nPmAuICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycwotICAgYGAnXG4nYGAgaW4gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yCi0gICA6ZGF0YTpgb3MubGluZXNlcGAuICBGb3IgKnN0ZG91dCogYW5kICpzdGRlcnIqLCBhbGwgbGluZSBlbmRpbmdzIGluIHRoZQotICAgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvIGBgJ1xuJ2BgLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQotICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBjbGFzcyB3aGVuIHRoZSAqbmV3bGluZSoKLSAgIGFyZ3VtZW50IHRvIGl0cyBjb25zdHJ1Y3RvciBpcyBgYE5vbmVgYC4KKyAgIEZvciAqc3RkaW4qLCBsaW5lIGVuZGluZyBjaGFyYWN0ZXJzIGBgJ1xuJ2BgIGluIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZAorICAgdG8gdGhlIGRlZmF1bHQgbGluZSBzZXBhcmF0b3IgOmRhdGE6YG9zLmxpbmVzZXBgLiBGb3IgKnN0ZG91dCogYW5kICpzdGRlcnIqLAorICAgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvIGBgJ1xuJ2BgLiAgRm9yIG1vcmUKKyAgIGluZm9ybWF0aW9uIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBjbGFzcworICAgd2hlbiB0aGUgKm5ld2xpbmUqIGFyZ3VtZW50IHRvIGl0cyBjb25zdHJ1Y3RvciBpcyBgYE5vbmVgYC4KKworICAgSWYgdGV4dCBtb2RlIGlzIG5vdCB1c2VkLCAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogd2lsbCBiZSBvcGVuZWQgYXMKKyAgIGJpbmFyeSBzdHJlYW1zLiBObyBlbmNvZGluZyBvciBsaW5lIGVuZGluZyBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzLgogCiAgICAuLiBub3RlOjoKIApAQCAtMzA2LDcgKzMxOSw4IEBACiAgICAgICAgICAgICAgICAgIHN0ZGVycj1Ob25lLCBwcmVleGVjX2ZuPU5vbmUsIGNsb3NlX2Zkcz1UcnVlLCBzaGVsbD1GYWxzZSwgXAogICAgICAgICAgICAgICAgICBjd2Q9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgXAogICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbz1Ob25lLCBjcmVhdGlvbmZsYWdzPTAsIHJlc3RvcmVfc2lnbmFscz1UcnVlLCBcCi0gICAgICAgICAgICAgICAgIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSkKKyAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X3Nlc3Npb249RmFsc2UsIHBhc3NfZmRzPSgpLCAqLCBcCisgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKQogCiAgICBFeGVjdXRlIGEgY2hpbGQgcHJvZ3JhbSBpbiBhIG5ldyBwcm9jZXNzLiAgT24gUE9TSVgsIHRoZSBjbGFzcyB1c2VzCiAgICA6bWV0aDpgb3MuZXhlY3ZwYC1saWtlIGJlaGF2aW9yIHRvIGV4ZWN1dGUgdGhlIGNoaWxkIHByb2dyYW0uICBPbiBXaW5kb3dzLApAQCAtNDgyLDEwICs0OTYsMTQgQEAKIAogICAgLi4gX3NpZGUtYnktc2lkZSBhc3NlbWJseTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2lkZS1ieS1TaWRlX0Fzc2VtYmx5CiAKLSAgIElmICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqCi0gICBhbmQgKnN0ZGVyciogYXJlIG9wZW5lZCBhcyB0ZXh0IHN0cmVhbXMgaW4gdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUsIGFzCi0gICBkZXNjcmliZWQgYWJvdmUgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AsIG90aGVyd2lzZSB0aGV5IGFyZQotICAgb3BlbmVkIGFzIGJpbmFyeSBzdHJlYW1zLgorICAgSWYgKmVuY29kaW5nKiBvciAqZXJyb3JzKiBhcmUgc3BlY2lmaWVkLCB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqCisgICBhbmQgKnN0ZGVyciogYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGFuZAorICAgKmVycm9ycyosIGFzIGRlc2NyaWJlZCBhYm92ZSBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYC4gSWYKKyAgICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIGBgVHJ1ZWBgLCB0aGV5IGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHdpdGggZGVmYXVsdAorICAgZW5jb2RpbmcuIE90aGVyd2lzZSwgdGhleSBhcmUgb3BlbmVkIGFzIGJpbmFyeSBzdHJlYW1zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgICplbmNvZGluZyogYW5kICplcnJvcnMqIHdlcmUgYWRkZWQuCiAKICAgIElmIGdpdmVuLCAqc3RhcnR1cGluZm8qIHdpbGwgYmUgYSA6Y2xhc3M6YFNUQVJUVVBJTkZPYCBvYmplY3QsIHdoaWNoIGlzCiAgICBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcgYGBDcmVhdGVQcm9jZXNzYGAgZnVuY3Rpb24uCkBAIC01MDIsNiArNTIwLDEwIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgY29udGV4dCBtYW5hZ2VyIHN1cHBvcnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBQb3BlbiBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2FybmluZyBpZiB0aGUgY2hpbGQKKyAgICAgIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4KKwogCiBFeGNlcHRpb25zCiBeXl5eXl5eXl5eCkBAIC01OTcsMTEgKzYxOSwxMiBAQAogICAgSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbSBzdGRvdXQgYW5kIHN0ZGVyciwKICAgIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbAogICAgKmlucHV0KiBhcmd1bWVudCBzaG91bGQgYmUgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvcgotICAgYGBOb25lYGAsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLiAgVGhlIHR5cGUgb2YgKmlucHV0KgotICAgbXVzdCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBhIHN0cmluZy4KKyAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4gIElmIHN0cmVhbXMgd2VyZSBvcGVuZWQgaW4KKyAgIHRleHQgbW9kZSwgKmlucHV0KiBtdXN0IGJlIGEgc3RyaW5nLiAgT3RoZXJ3aXNlLCBpdCBtdXN0IGJlIGJ5dGVzLgogCiAgICA6bWV0aDpgY29tbXVuaWNhdGVgIHJldHVybnMgYSB0dXBsZSBgYChzdGRvdXRfZGF0YSwgc3RkZXJyX2RhdGEpYGAuCi0gICBUaGUgZGF0YSB3aWxsIGJlIGJ5dGVzIG9yLCBpZiAqdW5pdmVyc2FsX25ld2xpbmVzKiB3YXMgYGBUcnVlYGAsIHN0cmluZ3MuCisgICBUaGUgZGF0YSB3aWxsIGJlIHN0cmluZ3MgaWYgc3RyZWFtcyB3ZXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGU7IG90aGVyd2lzZSwKKyAgIGJ5dGVzLgogCiAgICBOb3RlIHRoYXQgaWYgeW91IHdhbnQgdG8gc2VuZCBkYXRhIHRvIHRoZSBwcm9jZXNzJ3Mgc3RkaW4sIHlvdSBuZWVkIHRvIGNyZWF0ZQogICAgdGhlIFBvcGVuIG9iamVjdCB3aXRoIGBgc3RkaW49UElQRWBgLiAgU2ltaWxhcmx5LCB0byBnZXQgYW55dGhpbmcgb3RoZXIgdGhhbgpAQCAtNjY4LDI4ICs2OTEsMzAgQEAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZGluCiAKICAgIElmIHRoZSAqc3RkaW4qIGFyZ3VtZW50IHdhcyA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGEgd3JpdGVhYmxlCi0gICBzdHJlYW0gb2JqZWN0IGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcGVuYC4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqCi0gICBhcmd1bWVudCB3YXMgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZQotICAgc3RyZWFtLiBJZiB0aGUgKnN0ZGluKiBhcmd1bWVudCB3YXMgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMKLSAgIGBgTm9uZWBgLgorICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqCisgICBhcmd1bWVudHMgd2VyZSBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwKKyAgIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3RkaW4qCisgICBhcmd1bWVudCB3YXMgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCiAKIAogLi4gYXR0cmlidXRlOjogUG9wZW4uc3Rkb3V0CiAKICAgIElmIHRoZSAqc3Rkb3V0KiBhcmd1bWVudCB3YXMgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIHJlYWRhYmxlCiAgICBzdHJlYW0gb2JqZWN0IGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcGVuYC4gUmVhZGluZyBmcm9tIHRoZSBzdHJlYW0gcHJvdmlkZXMKLSAgIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzCi0gICBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlCi0gICAqc3Rkb3V0KiBhcmd1bWVudCB3YXMgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCisgICBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICplbmNvZGluZyogb3IgKmVycm9ycyogYXJndW1lbnRzIHdlcmUKKyAgIHNwZWNpZmllZCBvciB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEKKyAgIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlICpzdGRvdXQqIGFyZ3VtZW50IHdhcyBub3QKKyAgIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCiAKIAogLi4gYXR0cmlidXRlOjogUG9wZW4uc3RkZXJyCiAKICAgIElmIHRoZSAqc3RkZXJyKiBhcmd1bWVudCB3YXMgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIHJlYWRhYmxlCiAgICBzdHJlYW0gb2JqZWN0IGFzIHJldHVybmVkIGJ5IDpmdW5jOmBvcGVuYC4gUmVhZGluZyBmcm9tIHRoZSBzdHJlYW0gcHJvdmlkZXMKLSAgIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBJZiB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzCi0gICBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlCi0gICAqc3RkZXJyKiBhcmd1bWVudCB3YXMgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCisgICBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICplbmNvZGluZyogb3IgKmVycm9ycyogYXJndW1lbnRzCisgICB3ZXJlIHNwZWNpZmllZCBvciB0aGUgKnVuaXZlcnNhbF9uZXdsaW5lcyogYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtCisgICBpcyBhIHRleHQgc3RyZWFtLCBvdGhlcndpc2UgaXQgaXMgYSBieXRlIHN0cmVhbS4gSWYgdGhlICpzdGRlcnIqIGFyZ3VtZW50IHdhcworICAgbm90IDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAuCiAKIC4uIHdhcm5pbmc6OgogCkBAIC04ODIsNyArOTA3LDkgQEAKICAgICAgICp0aW1lb3V0KiB3YXMgYWRkZWQuCiAKIAotLi4gZnVuY3Rpb246OiBjaGVja19vdXRwdXQoYXJncywgKiwgc3RkaW49Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gY29tbWFuZCB3aXRoIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cyBvdXRwdXQuCiAKQEAgLTExMzgsNyArMTE2NSw3IEBACiAgICBSZXR1cm4gYGAoc3RhdHVzLCBvdXRwdXQpYGAgb2YgZXhlY3V0aW5nICpjbWQqIGluIGEgc2hlbGwuCiAKICAgIEV4ZWN1dGUgdGhlIHN0cmluZyAqY21kKiBpbiBhIHNoZWxsIHdpdGggOm1ldGg6YFBvcGVuLmNoZWNrX291dHB1dGAgYW5kCi0gICByZXR1cm4gYSAyLXR1cGxlIGBgKHN0YXR1cywgb3V0cHV0KWBgLiBVbml2ZXJzYWwgbmV3bGluZXMgbW9kZSBpcyB1c2VkOworICAgcmV0dXJuIGEgMi10dXBsZSBgYChzdGF0dXMsIG91dHB1dClgYC4gVGhlIGxvY2FsZSBlbmNvZGluZyBpcyB1c2VkOwogICAgc2VlIHRoZSBub3RlcyBvbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCBmb3IgbW9yZSBkZXRhaWxzLgogCiAgICBBIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQgZnJvbSB0aGUgb3V0cHV0LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3lzLnJzdCBiL0RvYy9saWJyYXJ5L3N5cy5yc3QKaW5kZXggN2FlZDc1ZC4uMmQxNGExZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3lzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeXMucnN0CkBAIC0yNTYsNyArMjU2LDcgQEAKICAgIChkZWZhdWx0aW5nIHRvIHplcm8pLCBvciBhbm90aGVyIHR5cGUgb2Ygb2JqZWN0LiAgSWYgaXQgaXMgYW4gaW50ZWdlciwgemVybwogICAgaXMgY29uc2lkZXJlZCAic3VjY2Vzc2Z1bCB0ZXJtaW5hdGlvbiIgYW5kIGFueSBub256ZXJvIHZhbHVlIGlzIGNvbnNpZGVyZWQKICAgICJhYm5vcm1hbCB0ZXJtaW5hdGlvbiIgYnkgc2hlbGxzIGFuZCB0aGUgbGlrZS4gIE1vc3Qgc3lzdGVtcyByZXF1aXJlIGl0IHRvIGJlCi0gICBpbiB0aGUgcmFuZ2UgMC0xMjcsIGFuZCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRzIG90aGVyd2lzZS4gIFNvbWUgc3lzdGVtcworICAgaW4gdGhlIHJhbmdlIDAtLTEyNywgYW5kIHByb2R1Y2UgdW5kZWZpbmVkIHJlc3VsdHMgb3RoZXJ3aXNlLiAgU29tZSBzeXN0ZW1zCiAgICBoYXZlIGEgY29udmVudGlvbiBmb3IgYXNzaWduaW5nIHNwZWNpZmljIG1lYW5pbmdzIHRvIHNwZWNpZmljIGV4aXQgY29kZXMsIGJ1dAogICAgdGhlc2UgYXJlIGdlbmVyYWxseSB1bmRlcmRldmVsb3BlZDsgVW5peCBwcm9ncmFtcyBnZW5lcmFsbHkgdXNlIDIgZm9yIGNvbW1hbmQKICAgIGxpbmUgc3ludGF4IGVycm9ycyBhbmQgMSBmb3IgYWxsIG90aGVyIGtpbmQgb2YgZXJyb3JzLiAgSWYgYW5vdGhlciB0eXBlIG9mCkBAIC0yNjksNiArMjY5LDExIEBACiAgICB0aGUgcHJvY2VzcyB3aGVuIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZCwgYW5kIHRoZSBleGNlcHRpb24gaXMgbm90CiAgICBpbnRlcmNlcHRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIElmIGFuIGVycm9yIG9jY3VycyBpbiB0aGUgY2xlYW51cCBhZnRlciB0aGUgUHl0aG9uIGludGVycHJldGVyCisgICAgICBoYXMgY2F1Z2h0IDpleGM6YFN5c3RlbUV4aXRgIChzdWNoIGFzIGFuIGVycm9yIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEKKyAgICAgIGluIHRoZSBzdGFuZGFyZCBzdHJlYW1zKSwgdGhlIGV4aXQgc3RhdHVzIGlzIGNoYW5nZWQgdG8gMTIwLgorCiAKIC4uIGRhdGE6OiBmbGFncwogCkBAIC00MjMsMjUgKzQyOCw0MiBAQAogCiAuLiBmdW5jdGlvbjo6IGdldGZpbGVzeXN0ZW1lbmNvZGluZygpCiAKLSAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdXNlZCB0byBjb252ZXJ0IFVuaWNvZGUgZmlsZW5hbWVzIGludG8KLSAgIHN5c3RlbSBmaWxlIG5hbWVzLiBUaGUgcmVzdWx0IHZhbHVlIGRlcGVuZHMgb24gdGhlIG9wZXJhdGluZyBzeXN0ZW06CisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gY29udmVydCBiZXR3ZWVuIFVuaWNvZGUKKyAgIGZpbGVuYW1lcyBhbmQgYnl0ZXMgZmlsZW5hbWVzLiBGb3IgYmVzdCBjb21wYXRpYmlsaXR5LCBzdHIgc2hvdWxkIGJlCisgICB1c2VkIGZvciBmaWxlbmFtZXMgaW4gYWxsIGNhc2VzLCBhbHRob3VnaCByZXByZXNlbnRpbmcgZmlsZW5hbWVzIGFzIGJ5dGVzCisgICBpcyBhbHNvIHN1cHBvcnRlZC4gRnVuY3Rpb25zIGFjY2VwdGluZyBvciByZXR1cm5pbmcgZmlsZW5hbWVzIHNob3VsZCBzdXBwb3J0CisgICBlaXRoZXIgc3RyIG9yIGJ5dGVzIGFuZCBpbnRlcm5hbGx5IGNvbnZlcnQgdG8gdGhlIHN5c3RlbSdzIHByZWZlcnJlZAorICAgcmVwcmVzZW50YXRpb24uCisKKyAgIFRoaXMgZW5jb2RpbmcgaXMgYWx3YXlzIEFTQ0lJLWNvbXBhdGlibGUuCisKKyAgIDpmdW5jOmBvcy5mc2VuY29kZWAgYW5kIDpmdW5jOmBvcy5mc2RlY29kZWAgc2hvdWxkIGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQKKyAgIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZSBhcmUgdXNlZC4KIAogICAgKiBPbiBNYWMgT1MgWCwgdGhlIGVuY29kaW5nIGlzIGBgJ3V0Zi04J2BgLgogCi0gICAqIE9uIFVuaXgsIHRoZSBlbmNvZGluZyBpcyB0aGUgdXNlcidzIHByZWZlcmVuY2UgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQgb2YKLSAgICAgbmxfbGFuZ2luZm8oQ09ERVNFVCkuCisgICAqIE9uIFVuaXgsIHRoZSBlbmNvZGluZyBpcyB0aGUgbG9jYWxlIGVuY29kaW5nLgogCi0gICAqIE9uIFdpbmRvd3MgTlQrLCBmaWxlIG5hbWVzIGFyZSBVbmljb2RlIG5hdGl2ZWx5LCBzbyBubyBjb252ZXJzaW9uIGlzCi0gICAgIHBlcmZvcm1lZC4gOmZ1bmM6YGdldGZpbGVzeXN0ZW1lbmNvZGluZ2Agc3RpbGwgcmV0dXJucyBgYCdtYmNzJ2BgLCBhcwotICAgICB0aGlzIGlzIHRoZSBlbmNvZGluZyB0aGF0IGFwcGxpY2F0aW9ucyBzaG91bGQgdXNlIHdoZW4gdGhleSBleHBsaWNpdGx5Ci0gICAgIHdhbnQgdG8gY29udmVydCBVbmljb2RlIHN0cmluZ3MgdG8gYnl0ZSBzdHJpbmdzIHRoYXQgYXJlIGVxdWl2YWxlbnQgd2hlbgotICAgICB1c2VkIGFzIGZpbGUgbmFtZXMuCi0KLSAgICogT24gV2luZG93cyA5eCwgdGhlIGVuY29kaW5nIGlzIGBgJ21iY3MnYGAuCisgICAqIE9uIFdpbmRvd3MsIHRoZSBlbmNvZGluZyBtYXkgYmUgYGAndXRmLTgnYGAgb3IgYGAnbWJjcydgYCwgZGVwZW5kaW5nCisgICAgIG9uIHVzZXIgY29uZmlndXJhdGlvbi4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgIHJlc3VsdCBjYW5ub3QgYmUgYGBOb25lYGAgYW55bW9yZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFdpbmRvd3MgaXMgbm8gbG9uZ2VyIGd1YXJhbnRlZWQgdG8gcmV0dXJuIGBgJ21iY3MnYGAuIFNlZSA6cGVwOmA1MjlgCisgICAgICBhbmQgOmZ1bmM6YF9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ2AgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKy4uIGZ1bmN0aW9uOjogZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycygpCisKKyAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgZXJyb3IgbW9kZSB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBVbmljb2RlIGZpbGVuYW1lcworICAgYW5kIGJ5dGVzIGZpbGVuYW1lcy4gVGhlIGVuY29kaW5nIG5hbWUgaXMgcmV0dXJuZWQgZnJvbQorICAgOmZ1bmM6YGdldGZpbGVzeXN0ZW1lbmNvZGluZ2AuCisKKyAgIDpmdW5jOmBvcy5mc2VuY29kZWAgYW5kIDpmdW5jOmBvcy5mc2RlY29kZWAgc2hvdWxkIGJlIHVzZWQgdG8gZW5zdXJlIHRoYXQKKyAgIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZSBhcmUgdXNlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIGZ1bmN0aW9uOjogZ2V0cmVmY291bnQob2JqZWN0KQogCkBAIC01MzAsMjYgKzU1MiwxNSBAQAogICAgUmV0dXJuIGEgbmFtZWQgdHVwbGUgZGVzY3JpYmluZyB0aGUgV2luZG93cyB2ZXJzaW9uCiAgICBjdXJyZW50bHkgcnVubmluZy4gIFRoZSBuYW1lZCBlbGVtZW50cyBhcmUgKm1ham9yKiwgKm1pbm9yKiwKICAgICpidWlsZCosICpwbGF0Zm9ybSosICpzZXJ2aWNlX3BhY2sqLCAqc2VydmljZV9wYWNrX21pbm9yKiwKLSAgICpzZXJ2aWNlX3BhY2tfbWFqb3IqLCAqc3VpdGVfbWFzayosIGFuZCAqcHJvZHVjdF90eXBlKi4KLSAgICpzZXJ2aWNlX3BhY2sqIGNvbnRhaW5zIGEgc3RyaW5nIHdoaWxlIGFsbCBvdGhlciB2YWx1ZXMgYXJlCisgICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCAqcHJvZHVjdF90eXBlKiBhbmQKKyAgICpwbGF0Zm9ybV92ZXJzaW9uKi4gKnNlcnZpY2VfcGFjayogY29udGFpbnMgYSBzdHJpbmcsCisgICAqcGxhdGZvcm1fdmVyc2lvbiogYSAzLXR1cGxlIGFuZCBhbGwgb3RoZXIgdmFsdWVzIGFyZQogICAgaW50ZWdlcnMuIFRoZSBjb21wb25lbnRzIGNhbiBhbHNvIGJlIGFjY2Vzc2VkIGJ5IG5hbWUsIHNvCiAgICBgYHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpWzBdYGAgaXMgZXF1aXZhbGVudCB0bwogICAgYGBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKS5tYWpvcmBgLiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByaW9yCiAgICB2ZXJzaW9ucywgb25seSB0aGUgZmlyc3QgNSBlbGVtZW50cyBhcmUgcmV0cmlldmFibGUgYnkgaW5kZXhpbmcuCiAKLSAgICpwbGF0Zm9ybSogbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKLQotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IENvbnN0YW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBsYXRmb3JtICAgICAgICAgICAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09KwotICAgfCA6Y29uc3Q6YDAgKFZFUl9QTEFURk9STV9XSU4zMnMpYCAgICAgICAgfCBXaW4zMnMgb24gV2luZG93cyAzLjEgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAxIChWRVJfUExBVEZPUk1fV0lOMzJfV0lORE9XUylgIHwgV2luZG93cyA5NS85OC9NRSAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgMiAoVkVSX1BMQVRGT1JNX1dJTjMyX05UKWAgICAgICB8IFdpbmRvd3MgTlQvMjAwMC9YUC94NjQgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YDMgKFZFUl9QTEFURk9STV9XSU4zMl9DRSlgICAgICAgfCBXaW5kb3dzIENFICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICpwbGF0Zm9ybSogd2lsbCBiZSA6Y29uc3Q6YDIgKFZFUl9QTEFURk9STV9XSU4zMl9OVClgLgogCiAgICAqcHJvZHVjdF90eXBlKiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgogCkBAIC01NjUsMTcgKzU3NiwyMyBAQAogICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkb21haW4gY29udHJvbGxlci4gICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAotCiAgICBUaGlzIGZ1bmN0aW9uIHdyYXBzIHRoZSBXaW4zMiA6YzpmdW5jOmBHZXRWZXJzaW9uRXhgIGZ1bmN0aW9uOyBzZWUgdGhlCiAgICBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbiBvbiA6YzpmdW5jOmBPU1ZFUlNJT05JTkZPRVhgIGZvciBtb3JlIGluZm9ybWF0aW9uCiAgICBhYm91dCB0aGVzZSBmaWVsZHMuCiAKKyAgICpwbGF0Zm9ybV92ZXJzaW9uKiByZXR1cm5zIHRoZSBhY2N1cmF0ZSBtYWpvciB2ZXJzaW9uLCBtaW5vciB2ZXJzaW9uIGFuZAorICAgYnVpbGQgbnVtYmVyIG9mIHRoZSBjdXJyZW50IG9wZXJhdGluZyBzeXN0ZW0sIHJhdGhlciB0aGFuIHRoZSB2ZXJzaW9uIHRoYXQKKyAgIGlzIGJlaW5nIGVtdWxhdGVkIGZvciB0aGUgcHJvY2Vzcy4gSXQgaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBsb2dnaW5nIHJhdGhlcgorICAgdGhhbiBmb3IgZmVhdHVyZSBkZXRlY3Rpb24uCisKICAgIEF2YWlsYWJpbGl0eTogV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIENoYW5nZWQgdG8gYSBuYW1lZCB0dXBsZSBhbmQgYWRkZWQgKnNlcnZpY2VfcGFja19taW5vciosCiAgICAgICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcGxhdGZvcm1fdmVyc2lvbioKIAogLi4gZnVuY3Rpb246OiBnZXRfY29yb3V0aW5lX3dyYXBwZXIoKQogCkBAIC0xMDgyLDE4ICsxMDk5LDYgQEAKICAgICAgIHRodXMgbWF5IG5vdCBiZSBhdmFpbGFibGUgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCiAKIAotLi4gZnVuY3Rpb246OiBzZXR0c2NkdW1wKG9uX2ZsYWcpCi0KLSAgIEFjdGl2YXRlIGR1bXBpbmcgb2YgVk0gbWVhc3VyZW1lbnRzIHVzaW5nIHRoZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyLCBpZgotICAgKm9uX2ZsYWcqIGlzIHRydWUuIERlYWN0aXZhdGUgdGhlc2UgZHVtcHMgaWYgKm9uX2ZsYWcqIGlzIG9mZi4gVGhlIGZ1bmN0aW9uIGlzCi0gICBhdmFpbGFibGUgb25seSBpZiBQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggYGAtLXdpdGgtdHNjYGAuIFRvIHVuZGVyc3RhbmQKLSAgIHRoZSBvdXRwdXQgb2YgdGhpcyBkdW1wLCByZWFkIDpmaWxlOmBQeXRob24vY2V2YWwuY2AgaW4gdGhlIFB5dGhvbiBzb3VyY2VzLgotCi0gICAuLiBpbXBsLWRldGFpbDo6Ci0gICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGltYXRlbHkgYm91bmQgdG8gQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZAotICAgICAgdGh1cyBub3QgbGlrZWx5IHRvIGJlIGltcGxlbWVudGVkIGVsc2V3aGVyZS4KLQotCiAuLiBmdW5jdGlvbjo6IHNldF9jb3JvdXRpbmVfd3JhcHBlcih3cmFwcGVyKQogCiAgICBBbGxvd3MgaW50ZXJjZXB0aW5nIGNyZWF0aW9uIG9mIDp0ZXJtOmBjb3JvdXRpbmVgIG9iamVjdHMgKG9ubHkgb25lcyB0aGF0CkBAIC0xMTMzLDYgKzExMzgsMTggQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgb24gYSBwcm92aXNpb25hbCBiYXNpcyAoc2VlIDpwZXA6YDQxMWAKICAgICAgIGZvciBkZXRhaWxzLikgIFVzZSBpdCBvbmx5IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCiAKKy4uIGZ1bmN0aW9uOjogX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKCkKKworICAgQ2hhbmdlcyB0aGUgZGVmYXVsdCBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBlcnJvcnMgbW9kZSB0byAnbWJjcycgYW5kCisgICAncmVwbGFjZScgcmVzcGVjdGl2ZWx5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCB2ZXJzaW9ucyBvZiBQeXRob24gcHJpb3IgdG8gMy42LgorCisgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gZGVmaW5pbmcgdGhlIDplbnZ2YXI6YFBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HYAorICAgZW52aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIGxhdW5jaGluZyBQeXRob24uCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFNlZSA6cGVwOmA1MjlgIGZvciBtb3JlIGRldGFpbHMuCiAKIC4uIGRhdGE6OiBzdGRpbgogICAgICAgICAgIHN0ZG91dApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdCBiL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKaW5kZXggMDJhYWFiMy4uMDhiNzRhOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CkBAIC0xNjQsNyArMTY0LDcgQEAKIC4uIGZ1bmN0aW9uOjogZ2V0X3B5dGhvbl92ZXJzaW9uKCkKIAogICAgUmV0dXJuIHRoZSBgYE1BSk9SLk1JTk9SYGAgUHl0aG9uIHZlcnNpb24gbnVtYmVyIGFzIGEgc3RyaW5nLiAgU2ltaWxhciB0bwotICAgYGBzeXMudmVyc2lvbls6M11gYC4KKyAgIGBgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdYGAuCiAKIAogLi4gZnVuY3Rpb246OiBnZXRfcGxhdGZvcm0oKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdCBiL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKaW5kZXggYjk1MGU0MS4uZjljNTE1MyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CkBAIC00Myw2ICs0MywxNyBAQAogICAgOmV4YzpgRU9GRXJyb3JgIHdoZW4gdGhlIGVuZCBvZiB0aGUgY29ubmVjdGlvbiBpcyByZWFkLCBiZWNhdXNlIHRoZXkgY2FuIHJldHVybgogICAgYW4gZW1wdHkgc3RyaW5nIGZvciBvdGhlciByZWFzb25zLiAgU2VlIHRoZSBpbmRpdmlkdWFsIGRlc2NyaXB0aW9ucyBiZWxvdy4KIAorICAgQSA6Y2xhc3M6YFRlbG5ldGAgb2JqZWN0IGlzIGEgY29udGV4dCBtYW5hZ2VyIGFuZCBjYW4gYmUgdXNlZCBpbiBhCisgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgV2hlbiB0aGUgOmtleXdvcmQ6YHdpdGhgIGJsb2NrIGVuZHMsIHRoZQorICAgOm1ldGg6YGNsb3NlYCBtZXRob2QgaXMgY2FsbGVkOjoKKworICAgICAgID4+PiBmcm9tIHRlbG5ldGxpYiBpbXBvcnQgVGVsbmV0CisgICAgICAgPj4+IHdpdGggVGVsbmV0KCdsb2NhbGhvc3QnLCAyMykgYXMgdG46CisgICAgICAgLi4uICAgICB0bi5pbnRlcmFjdCgpCisgICAgICAgLi4uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IENvbnRleHQgbWFuYWdlciBzdXBwb3J0IGFkZGVkCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0IGIvRG9jL2xpYnJhcnkvdGVzdC5yc3QKaW5kZXggNTk1NzdmMC4uZmFiM2UxZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVzdC5yc3QKQEAgLTU4Miw2ICs1ODIsNDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKKy4uIGZ1bmN0aW9uOjogY2hlY2tfX2FsbF9fKHRlc3RfY2FzZSwgbW9kdWxlLCBuYW1lX29mX21vZHVsZT1Ob25lLCBleHRyYT0oKSwgYmxhY2tsaXN0PSgpKQorCisgICBBc3NlcnQgdGhhdCB0aGUgYGBfX2FsbF9fYGAgdmFyaWFibGUgb2YgKm1vZHVsZSogY29udGFpbnMgYWxsIHB1YmxpYyBuYW1lcy4KKworICAgVGhlIG1vZHVsZSdzIHB1YmxpYyBuYW1lcyAoaXRzIEFQSSkgYXJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkKKyAgIGJhc2VkIG9uIHdoZXRoZXIgdGhleSBtYXRjaCB0aGUgcHVibGljIG5hbWUgY29udmVudGlvbiBhbmQgd2VyZSBkZWZpbmVkIGluCisgICAqbW9kdWxlKi4KKworICAgVGhlICpuYW1lX29mX21vZHVsZSogYXJndW1lbnQgY2FuIHNwZWNpZnkgKGFzIGEgc3RyaW5nIG9yIHR1cGxlIHRoZXJlb2YpIHdoYXQKKyAgIG1vZHVsZShzKSBhbiBBUEkgY291bGQgYmUgZGVmaW5lZCBpbiBpbiBvcmRlciB0byBiZSBkZXRlY3RlZCBhcyBhIHB1YmxpYworICAgQVBJLiBPbmUgY2FzZSBmb3IgdGhpcyBpcyB3aGVuICptb2R1bGUqIGltcG9ydHMgcGFydCBvZiBpdHMgcHVibGljIEFQSSBmcm9tCisgICBvdGhlciBtb2R1bGVzLCBwb3NzaWJseSBhIEMgYmFja2VuZCAobGlrZSBgYGNzdmBgIGFuZCBpdHMgYGBfY3N2YGApLgorCisgICBUaGUgKmV4dHJhKiBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCB3b3VsZG4ndCBvdGhlcndpc2UgYmUgYXV0b21hdGljYWxseQorICAgZGV0ZWN0ZWQgYXMgInB1YmxpYyIsIGxpa2Ugb2JqZWN0cyB3aXRob3V0IGEgcHJvcGVyIGBgX19tb2R1bGVfX2BgCisgICBhdHRyaWJ1dGUuIElmIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIG9uZXMuCisKKyAgIFRoZSAqYmxhY2tsaXN0KiBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCBtdXN0IG5vdCBiZSB0cmVhdGVkIGFzIHBhcnQgb2YKKyAgIHRoZSBwdWJsaWMgQVBJIGV2ZW4gdGhvdWdoIHRoZWlyIG5hbWVzIGluZGljYXRlIG90aGVyd2lzZS4KKworICAgRXhhbXBsZSB1c2U6OgorCisgICAgICBpbXBvcnQgYmFyCisgICAgICBpbXBvcnQgZm9vCisgICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisgICAgICBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZm9vKQorCisgICAgICBjbGFzcyBPdGhlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgIGV4dHJhID0geydCQVJfQ09OU1QnLCAnRk9PX0NPTlNUJ30KKyAgICAgICAgICAgICAgYmxhY2tsaXN0ID0geydiYXonfSAgIyBVbmRvY3VtZW50ZWQgbmFtZS4KKyAgICAgICAgICAgICAgIyBiYXIgaW1wb3J0cyBwYXJ0IG9mIGl0cyBBUEkgZnJvbSBfYmFyLgorICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBiYXIsICgnYmFyJywgJ19iYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIFRoZSA6bW9kOmB0ZXN0LnN1cHBvcnRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKIAogLi4gY2xhc3M6OiBUcmFuc2llbnRSZXNvdXJjZShleGMsICoqa3dhcmdzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZS5yc3QgYi9Eb2MvbGlicmFyeS90aW1lLnJzdAppbmRleCBlNjYyNmYyLi5hZTE3ZjZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1lLnJzdApAQCAtODMsNiArODMsMTAgQEAKICAgICAgYW5kIDphdHRyOmB0bV96b25lYCBhdHRyaWJ1dGVzIHdoZW4gcGxhdGZvcm0gc3VwcG9ydHMgY29ycmVzcG9uZGluZwogICAgICBgYHN0cnVjdCB0bWBgIG1lbWJlcnMuCiAKKyAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgVGhlIDpjbGFzczpgc3RydWN0X3RpbWVgIGF0dHJpYnV0ZXMgOmF0dHI6YHRtX2dtdG9mZmAgYW5kIDphdHRyOmB0bV96b25lYAorICAgICBhcmUgbm93IGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLgorCiAqIFVzZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyB0byBjb252ZXJ0IGJldHdlZW4gdGltZSByZXByZXNlbnRhdGlvbnM6CiAKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtNTY2LDEwICs1NzAsNiBAQAogICAgOmNsYXNzOmBzdHJ1Y3RfdGltZWAsIG9yIGhhdmluZyBlbGVtZW50cyBvZiB0aGUgd3JvbmcgdHlwZSwgYQogICAgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCiAKLSAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKLSAgICAgOmF0dHI6YHRtX2dtdG9mZmAgYW5kIDphdHRyOmB0bV96b25lYCBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgb24gcGxhdGZvcm1zCi0gICAgIHdpdGggQyBsaWJyYXJ5IHN1cHBvcnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIGluIGBgc3RydWN0IHRtYGAuCi0KIC4uIGZ1bmN0aW9uOjogdGltZSgpCiAKICAgIFJldHVybiB0aGUgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaCBhcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlci4KQEAgLTYzNywxMSArNjM3LDExIEBACiAgICAgICAgICBpdCBpcyBwb3NzaWJsZSB0byByZWZlciB0byBGZWJydWFyeSAyOS4KIAogICAgICAgOnNhbXA6YE17bX0ue259LntkfWAKLSAgICAgICAgIFRoZSAqZCondGggZGF5ICgwIDw9ICpkKiA8PSA2KSBvciB3ZWVrICpuKiBvZiBtb250aCAqbSogb2YgdGhlIHllYXIgKDEKKyAgICAgICAgIFRoZSAqZCondGggZGF5ICgwIDw9ICpkKiA8PSA2KSBvZiB3ZWVrICpuKiBvZiBtb250aCAqbSogb2YgdGhlIHllYXIgKDEKICAgICAgICAgIDw9ICpuKiA8PSA1LCAxIDw9ICptKiA8PSAxMiwgd2hlcmUgd2VlayA1IG1lYW5zICJ0aGUgbGFzdCAqZCogZGF5IGluCiAgICAgICAgICBtb250aCAqbSoiIHdoaWNoIG1heSBvY2N1ciBpbiBlaXRoZXIgdGhlIGZvdXJ0aCBvciB0aGUgZmlmdGgKICAgICAgICAgIHdlZWspLiBXZWVrIDEgaXMgdGhlIGZpcnN0IHdlZWsgaW4gd2hpY2ggdGhlICpkKid0aCBkYXkgb2NjdXJzLiBEYXkKLSAgICAgICAgIHplcm8gaXMgU3VuZGF5LgorICAgICAgICAgemVybyBpcyBhIFN1bmRheS4KIAogICAgICAgYGB0aW1lYGAgaGFzIHRoZSBzYW1lIGZvcm1hdCBhcyBgYG9mZnNldGBgIGV4Y2VwdCB0aGF0IG5vIGxlYWRpbmcgc2lnbgogICAgICAgKCctJyBvciAnKycpIGlzIGFsbG93ZWQuIFRoZSBkZWZhdWx0LCBpZiB0aW1lIGlzIG5vdCBnaXZlbiwgaXMgMDI6MDA6MDAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aW1laXQucnN0IGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAppbmRleCA1N2E0ODM0Li4zYjc3Mjc2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1laXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKQEAgLTEwMCw4ICsxMDAsOCBAQAogICAgY2FuIGJlIGNvbnRyb2xsZWQgYnkgcGFzc2luZyBhIG5hbWVzcGFjZSB0byAqZ2xvYmFscyouCiAKICAgIFRvIG1lYXN1cmUgdGhlIGV4ZWN1dGlvbiB0aW1lIG9mIHRoZSBmaXJzdCBzdGF0ZW1lbnQsIHVzZSB0aGUgOm1ldGg6YC50aW1laXRgCi0gICBtZXRob2QuICBUaGUgOm1ldGg6YC5yZXBlYXRgIG1ldGhvZCBpcyBhIGNvbnZlbmllbmNlIHRvIGNhbGwgOm1ldGg6YC50aW1laXRgCi0gICBtdWx0aXBsZSB0aW1lcyBhbmQgcmV0dXJuIGEgbGlzdCBvZiByZXN1bHRzLgorICAgbWV0aG9kLiAgVGhlIDptZXRoOmAucmVwZWF0YCBhbmQgOm1ldGg6YC5hdXRvcmFuZ2VgIG1ldGhvZHMgYXJlIGNvbnZlbmllbmNlCisgICBtZXRob2RzIHRvIGNhbGwgOm1ldGg6YC50aW1laXRgIG11bHRpcGxlIHRpbWVzLgogCiAgICBUaGUgZXhlY3V0aW9uIHRpbWUgb2YgKnNldHVwKiBpcyBleGNsdWRlZCBmcm9tIHRoZSBvdmVyYWxsIHRpbWVkIGV4ZWN1dGlvbiBydW4uCiAKQEAgLTEzNCw2ICsxMzQsMjMgQEAKICAgICAgICAgICAgIHRpbWVpdC5UaW1lcignZm9yIGkgaW4gcmFuZ2UoMTApOiBvY3QoaSknLCAnZ2MuZW5hYmxlKCknKS50aW1laXQoKQogCiAKKyAgICAuLiBtZXRob2Q6OiBUaW1lci5hdXRvcmFuZ2UoY2FsbGJhY2s9Tm9uZSkKKworICAgICAgIEF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIGhvdyBtYW55IHRpbWVzIHRvIGNhbGwgOm1ldGg6YC50aW1laXRgLgorCisgICAgICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRoYXQgY2FsbHMgOm1ldGg6YC50aW1laXRgIHJlcGVhdGVkbHkKKyAgICAgICBzbyB0aGF0IHRoZSB0b3RhbCB0aW1lID49IDAuMiBzZWNvbmQsIHJldHVybmluZyB0aGUgZXZlbnR1YWwKKyAgICAgICAobnVtYmVyIG9mIGxvb3BzLCB0aW1lIHRha2VuIGZvciB0aGF0IG51bWJlciBvZiBsb29wcykuIEl0IGNhbGxzCisgICAgICAgOm1ldGg6YC50aW1laXRgIHdpdGggKm51bWJlciogc2V0IHRvIHN1Y2Nlc3NpdmUgcG93ZXJzIG9mIHRlbiAoMTAsCisgICAgICAgMTAwLCAxMDAwLCAuLi4pIHVwIHRvIGEgbWF4aW11bSBvZiBvbmUgYmlsbGlvbiwgdW50aWwgdGhlIHRpbWUgdGFrZW4KKyAgICAgICBpcyBhdCBsZWFzdCAwLjIgc2Vjb25kLCBvciB0aGUgbWF4aW11bSBpcyByZWFjaGVkLgorCisgICAgICAgIElmICpjYWxsYmFjayogaXMgZ2l2ZW4gYW5kIGlzIG5vdCBgYE5vbmVgYCwgaXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIKKyAgICAgICAgZWFjaCB0cmlhbCB3aXRoIHR3byBhcmd1bWVudHM6IGBgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKWBgLgorCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKICAgIC4uIG1ldGhvZDo6IFRpbWVyLnJlcGVhdChyZXBlYXQ9MywgbnVtYmVyPTEwMDAwMDApCiAKICAgICAgIENhbGwgOm1ldGg6YC50aW1laXRgIGEgZmV3IHRpbWVzLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0IGIvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0CmluZGV4IDQxZjIwZGQuLjExZWQ3NTUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdAorKysgYi9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QKQEAgLTEwLDYgKzEwLDEwIEBACiAKIC4uIGluZGV4Ojogc2luZ2xlOiBUaXgKIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgVGhpcyBUayBleHRlbnNpb24gaXMgdW5tYWludGFpbmVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgaW4gbmV3IGNvZGUuICBVc2UKKyAgIDptb2Q6YHRraW50ZXIudHRrYCBpbnN0ZWFkLgorCiAtLS0tLS0tLS0tLS0tLQogCiBUaGUgOm1vZDpgdGtpbnRlci50aXhgIChUayBJbnRlcmZhY2UgRXh0ZW5zaW9uKSBtb2R1bGUgcHJvdmlkZXMgYW4gYWRkaXRpb25hbApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdCBiL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKaW5kZXggM2MxZDliYi4uMDY2ZWU5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdAorKysgYi9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CkBAIC0yOTEsNiArMjkxLDIwIEBACiAgICAgICBvZiB0dXBsZXMuIEVhY2ggdHVwbGUgc2hvdWxkIGJlIGEgNC10dXBsZSB3aXRoIGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsCiAgICAgICBsaW5lIGFzIHRoZSBlbGVtZW50cy4KIAorICAgLi4gbWV0aG9kOjogZm9ybWF0KCkKKworICAgICAgUmV0dXJucyBhIGxpc3Qgb2Ygc3RyaW5ncyByZWFkeSBmb3IgcHJpbnRpbmcuICBFYWNoIHN0cmluZyBpbiB0aGUKKyAgICAgIHJlc3VsdGluZyBsaXN0IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZyYW1lIGZyb20gdGhlIHN0YWNrLgorICAgICAgRWFjaCBzdHJpbmcgZW5kcyBpbiBhIG5ld2xpbmU7IHRoZSBzdHJpbmdzIG1heSBjb250YWluIGludGVybmFsCisgICAgICBuZXdsaW5lcyBhcyB3ZWxsLCBmb3IgdGhvc2UgaXRlbXMgd2l0aCBzb3VyY2UgdGV4dCBsaW5lcy4KKworICAgICAgRm9yIGxvbmcgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGZyYW1lIGFuZCBsaW5lLCB0aGUgZmlyc3QgZmV3CisgICAgICByZXBldGl0aW9ucyBhcmUgc2hvd24sIGZvbGxvd2VkIGJ5IGEgc3VtbWFyeSBsaW5lIHN0YXRpbmcgdGhlIGV4YWN0CisgICAgICBudW1iZXIgb2YgZnVydGhlciByZXBldGl0aW9ucy4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIExvbmcgc2VxdWVuY2VzIG9mIHJlcGVhdGVkIGZyYW1lcyBhcmUgbm93IGFiYnJldmlhdGVkLgorCiAKIDpjbGFzczpgRnJhbWVTdW1tYXJ5YCBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0IGIvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CmluZGV4IDNhMGIxZTAuLmY1NmYyN2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdAorKysgYi9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKQEAgLTM1OSwxMCArMzU5LDMyIEBACiAgICBTZWUgYWxzbyB0aGUgOmZ1bmM6YGdldF9vYmplY3RfdHJhY2ViYWNrYCBmdW5jdGlvbi4KIAogCitEb21haW5GaWx0ZXIKK15eXl5eXl5eXl5eXgorCisuLiBjbGFzczo6IERvbWFpbkZpbHRlcihpbmNsdXNpdmU6IGJvb2wsIGRvbWFpbjogaW50KQorCisgICBGaWx0ZXIgdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MgYnkgdGhlaXIgYWRkcmVzcyBzcGFjZSAoZG9tYWluKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGluY2x1c2l2ZQorCisgICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYFRydWVgYCAoaW5jbHVkZSksIG1hdGNoIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCisgICAgICBpbiB0aGUgYWRkcmVzcyBzcGFjZSA6YXR0cjpgZG9tYWluYC4KKworICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBGYWxzZWBgIChleGNsdWRlKSwgbWF0Y2ggbWVtb3J5IGJsb2NrcyBub3QgYWxsb2NhdGVkCisgICAgICBpbiB0aGUgYWRkcmVzcyBzcGFjZSA6YXR0cjpgZG9tYWluYC4KKworICAgLi4gYXR0cmlidXRlOjogZG9tYWluCisKKyAgICAgIEFkZHJlc3Mgc3BhY2Ugb2YgYSBtZW1vcnkgYmxvY2sgKGBgaW50YGApLiBSZWFkLW9ubHkgcHJvcGVydHkuCisKKwogRmlsdGVyCiBeXl5eXl4KIAotLi4gY2xhc3M6OiBGaWx0ZXIoaW5jbHVzaXZlOiBib29sLCBmaWxlbmFtZV9wYXR0ZXJuOiBzdHIsIGxpbmVubzogaW50PU5vbmUsIGFsbF9mcmFtZXM6IGJvb2w9RmFsc2UpCisuLiBjbGFzczo6IEZpbHRlcihpbmNsdXNpdmU6IGJvb2wsIGZpbGVuYW1lX3BhdHRlcm46IHN0ciwgbGluZW5vOiBpbnQ9Tm9uZSwgYWxsX2ZyYW1lczogYm9vbD1GYWxzZSwgZG9tYWluOiBpbnQ9Tm9uZSkKIAogICAgRmlsdGVyIG9uIHRyYWNlcyBvZiBtZW1vcnkgYmxvY2tzLgogCkBAIC0zODIsOSArNDA0LDE3IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgVGhlIGBgJy5weW8nYGAgZmlsZSBleHRlbnNpb24gaXMgbm8gbG9uZ2VyIHJlcGxhY2VkIHdpdGggYGAnLnB5J2BgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIDphdHRyOmBkb21haW5gIGF0dHJpYnV0ZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBkb21haW4KKworICAgICAgQWRkcmVzcyBzcGFjZSBvZiBhIG1lbW9yeSBibG9jayAoYGBpbnRgYCBvciBgYE5vbmVgYCkuCisKICAgIC4uIGF0dHJpYnV0ZTo6IGluY2x1c2l2ZQogCi0gICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYFRydWVgYCAoaW5jbHVkZSksIG9ubHkgdHJhY2UgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKKyAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgb25seSBtYXRjaCBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAogICAgICAgaW4gYSBmaWxlIHdpdGggYSBuYW1lIG1hdGNoaW5nIDphdHRyOmBmaWxlbmFtZV9wYXR0ZXJuYCBhdCBsaW5lIG51bWJlcgogICAgICAgOmF0dHI6YGxpbmVub2AuCiAKQEAgLTM5OSw3ICs0MjksNyBAQAogCiAgICAuLiBhdHRyaWJ1dGU6OiBmaWxlbmFtZV9wYXR0ZXJuCiAKLSAgICAgIEZpbGVuYW1lIHBhdHRlcm4gb2YgdGhlIGZpbHRlciAoYGBzdHJgYCkuCisgICAgICBGaWxlbmFtZSBwYXR0ZXJuIG9mIHRoZSBmaWx0ZXIgKGBgc3RyYGApLiBSZWFkLW9ubHkgcHJvcGVydHkuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGFsbF9mcmFtZXMKIApAQCAtNDYyLDE0ICs0OTIsMTcgQEAKICAgIC4uIG1ldGhvZDo6IGZpbHRlcl90cmFjZXMoZmlsdGVycykKIAogICAgICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU25hcHNob3RgIGluc3RhbmNlIHdpdGggYSBmaWx0ZXJlZCA6YXR0cjpgdHJhY2VzYAotICAgICAgc2VxdWVuY2UsICpmaWx0ZXJzKiBpcyBhIGxpc3Qgb2YgOmNsYXNzOmBGaWx0ZXJgIGluc3RhbmNlcy4gIElmICpmaWx0ZXJzKgotICAgICAgaXMgYW4gZW1wdHkgbGlzdCwgcmV0dXJuIGEgbmV3IDpjbGFzczpgU25hcHNob3RgIGluc3RhbmNlIHdpdGggYSBjb3B5IG9mCi0gICAgICB0aGUgdHJhY2VzLgorICAgICAgc2VxdWVuY2UsICpmaWx0ZXJzKiBpcyBhIGxpc3Qgb2YgOmNsYXNzOmBEb21haW5GaWx0ZXJgIGFuZAorICAgICAgOmNsYXNzOmBGaWx0ZXJgIGluc3RhbmNlcy4gIElmICpmaWx0ZXJzKiBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYSBuZXcKKyAgICAgIDpjbGFzczpgU25hcHNob3RgIGluc3RhbmNlIHdpdGggYSBjb3B5IG9mIHRoZSB0cmFjZXMuCiAKICAgICAgIEFsbCBpbmNsdXNpdmUgZmlsdGVycyBhcmUgYXBwbGllZCBhdCBvbmNlLCBhIHRyYWNlIGlzIGlnbm9yZWQgaWYgbm8KICAgICAgIGluY2x1c2l2ZSBmaWx0ZXJzIG1hdGNoIGl0LiBBIHRyYWNlIGlzIGlnbm9yZWQgaWYgYXQgbGVhc3Qgb25lIGV4Y2x1c2l2ZQogICAgICAgZmlsdGVyIG1hdGNoZXMgaXQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICA6Y2xhc3M6YERvbWFpbkZpbHRlcmAgaW5zdGFuY2VzIGFyZSBub3cgYWxzbyBhY2NlcHRlZCBpbiAqZmlsdGVycyouCisKIAogICAgLi4gY2xhc3NtZXRob2Q6OiBsb2FkKGZpbGVuYW1lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS90eXBlcy5yc3QKaW5kZXggMTE4YmM0Yy4uODk4Yjk1YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdApAQCAtNTUsNiArNTUsMTIgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisKKyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYGBuYW1lc3BhY2VgYCBlbGVtZW50IG9mIHRoZSByZXR1cm5lZAorICAgICAgdHVwbGUgaGFzIGNoYW5nZWQuICBOb3cgYW4gaW5zZXJ0aW9uLW9yZGVyLXByZXNlcnZpbmcgbWFwcGluZyBpcworICAgICAgdXNlZCB3aGVuIHRoZSBtZXRhY2xhc3MgZG9lcyBub3QgaGF2ZSBhIGBgX19wcmVwYXJlX19gYCBtZXRob2QsCisKIC4uIHNlZWFsc286OgogCiAgICA6cmVmOmBtZXRhY2xhc3Nlc2AKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QgYi9Eb2MvbGlicmFyeS90eXBpbmcucnN0CmluZGV4IDlmN2ZhMWEuLmEwNjY2ZmUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdApAQCAtMTAsOCArMTAsOCBAQAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIG1vZHVsZSBzdXBwb3J0cyB0eXBlIGhpbnRzIGFzIHNwZWNpZmllZCBieSA6cGVwOmA0ODRgLiAgVGhlIG1vc3QKLWZ1bmRhbWVudGFsIHN1cHBvcnQgY29uc2lzdHMgb2YgdGhlIHR5cGUgOmRhdGE6YEFueWAsIDpkYXRhOmBVbmlvbmAsCitUaGlzIG1vZHVsZSBzdXBwb3J0cyB0eXBlIGhpbnRzIGFzIHNwZWNpZmllZCBieSA6cGVwOmA0ODRgIGFuZCA6cGVwOmA1MjZgLgorVGhlIG1vc3QgZnVuZGFtZW50YWwgc3VwcG9ydCBjb25zaXN0cyBvZiB0aGUgdHlwZSA6ZGF0YTpgQW55YCwgOmRhdGE6YFVuaW9uYCwKIDpkYXRhOmBUdXBsZWAsIDpkYXRhOmBDYWxsYWJsZWAsIDpjbGFzczpgVHlwZVZhcmAsIGFuZAogOmNsYXNzOmBHZW5lcmljYC4gIEZvciBmdWxsIHNwZWNpZmljYXRpb24gcGxlYXNlIHNlZSA6cGVwOmA0ODRgLiAgRm9yCiBhIHNpbXBsaWZpZWQgaW50cm9kdWN0aW9uIHRvIHR5cGUgaGludHMgc2VlIDpwZXA6YDQ4M2AuCkBAIC01MDcsNyArNTA3LDEzIEBACiAKICAgIEFuIGFsaWFzIHRvIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNpemVkYAogCi0uLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorLi4gY2xhc3M6OiBDb2xsZWN0aW9uKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Db2xsZWN0aW9uYAorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gY2xhc3M6OiBBYnN0cmFjdFNldChTaXplZCwgQ29sbGVjdGlvbltUX2NvXSkKIAogICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNldGAuCiAKQEAgLTUxNSw3ICs1MjEsNyBAQAogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNldGAuCiAKLS4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgSXRlcmFibGVbS1RdLCBDb250YWluZXJbS1RdLCBHZW5lcmljW1ZUX2NvXSkKKy4uIGNsYXNzOjogTWFwcGluZyhTaXplZCwgQ29sbGVjdGlvbltLVF0sIEdlbmVyaWNbVlRfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTWFwcGluZ2AuCiAKQEAgLTUyMyw3ICs1MjksNyBAQAogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgLgogCi0uLiBjbGFzczo6IFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZVtUX2NvXSwgQ29udGFpbmVyW1RfY29dKQorLi4gY2xhc3M6OiBTZXF1ZW5jZShSZXZlcnNpYmxlW1RfY29dLCBDb2xsZWN0aW9uW1RfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgLgogCkBAIC01OTAsNiArNTk2LDEyIEBACiAKICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuQXN5bmNJdGVyYXRvcmAuCiAKKy4uIGNsYXNzOjogQ29udGV4dE1hbmFnZXIoR2VuZXJpY1tUX2NvXSkKKworICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBEaWN0KGRpY3QsIE11dGFibGVNYXBwaW5nW0tULCBWVF0pCiAKICAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgZGljdGAuCkBAIC02NjUsMjMgKzY3NywzMiBAQAogICAgYGBQYXR0ZXJuW3N0cl1gYCwgYGBQYXR0ZXJuW2J5dGVzXWBgLCBgYE1hdGNoW3N0cl1gYCwgb3IKICAgIGBgTWF0Y2hbYnl0ZXNdYGAuCiAKLS4uIGZ1bmN0aW9uOjogTmFtZWRUdXBsZSh0eXBlbmFtZSwgZmllbGRzKQorLi4gY2xhc3M6OiBOYW1lZFR1cGxlCiAKICAgIFR5cGVkIHZlcnNpb24gb2YgbmFtZWR0dXBsZS4KIAogICAgVXNhZ2U6OgogCi0gICAgICAgRW1wbG95ZWUgPSB0eXBpbmcuTmFtZWRUdXBsZSgnRW1wbG95ZWUnLCBbKCduYW1lJywgc3RyKSwgKCdpZCcsIGludCldKQorICAgICAgIGNsYXNzIEVtcGxveWVlKE5hbWVkVHVwbGUpOgorICAgICAgICAgICBuYW1lOiBzdHIKKyAgICAgICAgICAgaWQ6IGludAogCiAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG86OgogCiAgICAgICAgRW1wbG95ZWUgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCdFbXBsb3llZScsIFsnbmFtZScsICdpZCddKQogCi0gICBUaGUgcmVzdWx0aW5nIGNsYXNzIGhhcyBvbmUgZXh0cmEgYXR0cmlidXRlOiBfZmllbGRfdHlwZXMsCisgICBUaGUgcmVzdWx0aW5nIGNsYXNzIGhhcyBvbmUgZXh0cmEgYXR0cmlidXRlOiBgYF9maWVsZF90eXBlc2BgLAogICAgZ2l2aW5nIGEgZGljdCBtYXBwaW5nIGZpZWxkIG5hbWVzIHRvIHR5cGVzLiAgKFRoZSBmaWVsZCBuYW1lcwotICAgYXJlIGluIHRoZSBfZmllbGRzIGF0dHJpYnV0ZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmFtZWR0dXBsZQorICAgYXJlIGluIHRoZSBgYF9maWVsZHNgYCBhdHRyaWJ1dGUsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIG5hbWVkdHVwbGUKICAgIEFQSS4pCiAKKyAgIEJhY2t3YXJkLWNvbXBhdGlibGUgdXNhZ2U6OgorCisgICAgICAgRW1wbG95ZWUgPSBOYW1lZFR1cGxlKCdFbXBsb3llZScsIFsoJ25hbWUnLCBzdHIpLCAoJ2lkJywgaW50KV0pCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciA6cGVwOmA1MjZgIHZhcmlhYmxlIGFubm90YXRpb24gc3ludGF4LgorCiAuLiBmdW5jdGlvbjo6IE5ld1R5cGUodHlwKQogCiAgICBBIGhlbHBlciBmdW5jdGlvbiB0byBpbmRpY2F0ZSBhIGRpc3RpbmN0IHR5cGVzIHRvIGEgdHlwZWNoZWNrZXIsCkBAIC03MDIsNyArNzIzLDcgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRfdHlwZV9oaW50cyhvYmopCiAKLSAgIFJldHVybiB0eXBlIGhpbnRzIGZvciBhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QuCisgICBSZXR1cm4gdHlwZSBoaW50cyBmb3IgYSBjbGFzcywgbW9kdWxlLCBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LgogCiAgICBUaGlzIGlzIG9mdGVuIHRoZSBzYW1lIGFzIGBgb2JqLl9fYW5ub3RhdGlvbnNfX2BgLCBidXQgaXQgaGFuZGxlcwogICAgZm9yd2FyZCByZWZlcmVuY2VzIGVuY29kZWQgYXMgc3RyaW5nIGxpdGVyYWxzLCBhbmQgaWYgbmVjZXNzYXJ5CkBAIC04NDUsOCArODY2LDggQEAKICAgIGFuZCBzaG91bGQgbm90IGJlIHNldCBvbiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcy4gVXNhZ2U6OgogCiAgICAgICBjbGFzcyBTdGFyc2hpcDoKLSAgICAgICAgICBzdGF0cyA9IHt9ICAjIHR5cGU6IENsYXNzVmFyW0RpY3Rbc3RyLCBpbnRdXSAjIGNsYXNzIHZhcmlhYmxlCi0gICAgICAgICAgZGFtYWdlID0gMTAgIyB0eXBlOiBpbnQgICAgICAgICAgICAgICAgICAgICAgIyBpbnN0YW5jZSB2YXJpYWJsZQorICAgICAgICAgIHN0YXRzOiBDbGFzc1ZhcltEaWN0W3N0ciwgaW50XV0gPSB7fSAjIGNsYXNzIHZhcmlhYmxlCisgICAgICAgICAgZGFtYWdlOiBpbnQgPSAxMCAgICAgICAgICAgICAgICAgICAgICMgaW5zdGFuY2UgdmFyaWFibGUKIAogICAgOmRhdGE6YENsYXNzVmFyYCBhY2NlcHRzIG9ubHkgdHlwZXMgYW5kIGNhbm5vdCBiZSBmdXJ0aGVyIHN1YnNjcmliZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuZG9jLnJzdCBiL0RvYy9saWJyYXJ5L3VuZG9jLnJzdAppbmRleCAyMDgzMGUyLi4yNDQ0MDgwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmRvYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5kb2MucnN0CkBAIC0yMCw3ICsyMCw3IEBACiBkb2N1bWVudGVkIGJleW9uZCB0aGlzIG1lbnRpb24uICBUaGVyZSdzIGxpdHRsZSBuZWVkIHRvIGRvY3VtZW50IHRoZXNlLgogCiA6bW9kOmBudHBhdGhgCi0gICAtLS0gSW1wbGVtZW50YXRpb24gb2YgOm1vZDpgb3MucGF0aGAgb24gV2luMzIsIFdpbjY0LCBhbmQgV2luQ0UgcGxhdGZvcm1zLgorICAgLS0tIEltcGxlbWVudGF0aW9uIG9mIDptb2Q6YG9zLnBhdGhgIG9uIFdpbjMyIGFuZCBXaW42NCBwbGF0Zm9ybXMuCiAKIDptb2Q6YHBvc2l4cGF0aGAKICAgIC0tLSBJbXBsZW1lbnRhdGlvbiBvZiA6bW9kOmBvcy5wYXRoYCBvbiBQT1NJWC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdCBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAppbmRleCA2Y2Q4MTMyLi42NDMxODA5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CkBAIC0xNyw4ICsxNyw4IEBACiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkgd2hpY2gKIGRlZmluZXMgY2hhcmFjdGVyIHByb3BlcnRpZXMgZm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMuIFRoZSBkYXRhIGNvbnRhaW5lZCBpbgotdGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gOC4wLjAKLTxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2Q+YF8uCit0aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA5LjAuMAorPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZD5gXy4KIAogVGhlIG1vZHVsZSB1c2VzIHRoZSBzYW1lIG5hbWVzIGFuZCBzeW1ib2xzIGFzIGRlZmluZWQgYnkgVW5pY29kZQogU3RhbmRhcmQgQW5uZXggIzQ0LCBgIlVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIgpAQCAtMTY4LDYgKzE2OCw2IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVBbGlhc2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZC9OYW1lQWxpYXNlcy50eHQKIAotLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQKKy4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy85LjAuMC91Y2QvTmFtZWRTZXF1ZW5jZXMudHh0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5tb2NrLnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CmluZGV4IGVmMzBjMDEuLjNjYzIyZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CkBAIC0yNjIsNiArMjYyLDM0IEBACiAgICAgdXNlZCB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayBhZnRlciBpdCBpcyBjcmVhdGVkLiBTZWUgdGhlCiAgICAgOm1ldGg6YGNvbmZpZ3VyZV9tb2NrYCBtZXRob2QgZm9yIGRldGFpbHMuCiAKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBBc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZCgpCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX29uY2UoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kLmFzc2VydF9jYWxsZWRfb25jZSgpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdtZXRob2QnIHRvIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCiAKQEAgLTMzOSw3ICszNjcsNyBAQAogICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCi0gICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygpCisgICAgLi4gbWV0aG9kOjogcmVzZXRfbW9jaygqLCByZXR1cm5fdmFsdWU9RmFsc2UsIHNpZGVfZWZmZWN0PUZhbHNlKQogCiAgICAgICAgIFRoZSByZXNldF9tb2NrIG1ldGhvZCByZXNldHMgYWxsIHRoZSBjYWxsIGF0dHJpYnV0ZXMgb24gYSBtb2NrIG9iamVjdDoKIApAQCAtMzUxLDEyICszNzksMjAgQEAKICAgICAgICAgICAgID4+PiBtb2NrLmNhbGxlZAogICAgICAgICAgICAgRmFsc2UKIAorICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgICBBZGRlZCB0d28ga2V5d29yZCBvbmx5IGFyZ3VtZW50IHRvIHRoZSByZXNldF9tb2NrIGZ1bmN0aW9uLgorCiAgICAgICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCB0byBtYWtlIGEgc2VyaWVzIG9mIGFzc2VydGlvbnMgdGhhdAogICAgICAgICByZXVzZSB0aGUgc2FtZSBvYmplY3QuIE5vdGUgdGhhdCA6bWV0aDpgcmVzZXRfbW9ja2AgKmRvZXNuJ3QqIGNsZWFyIHRoZQogICAgICAgICByZXR1cm4gdmFsdWUsIDphdHRyOmBzaWRlX2VmZmVjdGAgb3IgYW55IGNoaWxkIGF0dHJpYnV0ZXMgeW91IGhhdmUKLSAgICAgICAgc2V0IHVzaW5nIG5vcm1hbCBhc3NpZ25tZW50LiBDaGlsZCBtb2NrcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBtb2NrCisgICAgICAgIHNldCB1c2luZyBub3JtYWwgYXNzaWdubWVudCBieSBkZWZhdWx0LiBJbiBjYXNlIHlvdSB3YW50IHRvIHJlc2V0CisgICAgICAgICpyZXR1cm5fdmFsdWUqIG9yIDphdHRyOmBzaWRlX2VmZmVjdGAsIHRoZW4gcGFzcyB0aGUgY29ycmVzcG9uZGluZworICAgICAgICBwYXJhbWV0ZXIgYXMgYGBUcnVlYGAuIENoaWxkIG1vY2tzIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG1vY2sKICAgICAgICAgKGlmIGFueSkgYXJlIHJlc2V0IGFzIHdlbGwuCiAKKyAgICAgICAgLi4gbm90ZTo6ICpyZXR1cm5fdmFsdWUqLCBhbmQgOmF0dHI6YHNpZGVfZWZmZWN0YCBhcmUga2V5d29yZCBvbmx5CisgICAgICAgICAgICAgICAgICBhcmd1bWVudC4KKwogCiAgICAgLi4gbWV0aG9kOjogbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldD1GYWxzZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CmluZGV4IGFjMTIyNGMuLmMxM2E3MzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKQEAgLTEzOTEsOSArMTM5MSw5IEBACiAKICAgICAgIEFkZCBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciA6bWV0aDpgdGVhckRvd25gIHRvIGNsZWFudXAgcmVzb3VyY2VzCiAgICAgICB1c2VkIGR1cmluZyB0aGUgdGVzdC4gRnVuY3Rpb25zIHdpbGwgYmUgY2FsbGVkIGluIHJldmVyc2Ugb3JkZXIgdG8gdGhlCi0gICAgICBvcmRlciB0aGV5IGFyZSBhZGRlZCAoTElGTykuIFRoZXkgYXJlIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMgYW5kCi0gICAgICBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50byA6bWV0aDpgYWRkQ2xlYW51cGAgd2hlbiB0aGV5IGFyZQotICAgICAgYWRkZWQuCisgICAgICBvcmRlciB0aGV5IGFyZSBhZGRlZCAoOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgKS4gIFRoZXkKKyAgICAgIGFyZSBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgaW50bworICAgICAgOm1ldGg6YGFkZENsZWFudXBgIHdoZW4gdGhleSBhcmUgYWRkZWQuCiAKICAgICAgIElmIDptZXRoOmBzZXRVcGAgZmFpbHMsIG1lYW5pbmcgdGhhdCA6bWV0aDpgdGVhckRvd25gIGlzIG5vdCBjYWxsZWQsCiAgICAgICB0aGVuIGFueSBjbGVhbnVwIGZ1bmN0aW9ucyBhZGRlZCB3aWxsIHN0aWxsIGJlIGNhbGxlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CmluZGV4IDQ5OWIyMTEuLjY3NjMyMWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdApAQCAtMTE0LDggKzExNCw5IEBACiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICB8IGlmIHByZXNlbnQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBTZWUgc2VjdGlvbiA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0Ci0gICBvYmplY3QuCisgICBSZWFkaW5nIHRoZSA6YXR0cjpgcG9ydGAgYXR0cmlidXRlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZgorICAgYW4gaW52YWxpZCBwb3J0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLiAgU2VlIHNlY3Rpb24KKyAgIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQgb2JqZWN0LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgSVB2NiBVUkwgcGFyc2luZyBjYXBhYmlsaXRpZXMuCkBAIC0xMjUsNiArMTI2LDEwIEBACiAgICAgICBmYWxzZSksIGluIGFjY29yZGFuY2Ugd2l0aCA6cmZjOmAzOTg2YC4gIFByZXZpb3VzbHksIGEgd2hpdGVsaXN0IG9mCiAgICAgICBzY2hlbWVzIHRoYXQgc3VwcG9ydCBmcmFnbWVudHMgZXhpc3RlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE91dC1vZi1yYW5nZSBwb3J0IG51bWJlcnMgbm93IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpbnN0ZWFkIG9mCisgICAgICByZXR1cm5pbmcgOmNvbnN0OmBOb25lYC4KKwogCiAuLiBmdW5jdGlvbjo6IHBhcnNlX3FzKHFzLCBrZWVwX2JsYW5rX3ZhbHVlcz1GYWxzZSwgc3RyaWN0X3BhcnNpbmc9RmFsc2UsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpCiAKQEAgLTIyNyw4ICsyMzIsMTMgQEAKICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgaWYgcHJlc2VudCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBTZWUgc2VjdGlvbiA6cmVmOmB1cmxwYXJzZS1yZXN1bHQtb2JqZWN0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgcmVzdWx0Ci0gICBvYmplY3QuCisgICBSZWFkaW5nIHRoZSA6YXR0cjpgcG9ydGAgYXR0cmlidXRlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZgorICAgYW4gaW52YWxpZCBwb3J0IGlzIHNwZWNpZmllZCBpbiB0aGUgVVJMLiAgU2VlIHNlY3Rpb24KKyAgIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQgb2JqZWN0LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT3V0LW9mLXJhbmdlIHBvcnQgbnVtYmVycyBub3cgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGluc3RlYWQgb2YKKyAgICAgIHJldHVybmluZyA6Y29uc3Q6YE5vbmVgLgogCiAKIC4uIGZ1bmN0aW9uOjogdXJsdW5zcGxpdChwYXJ0cykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAppbmRleCA0MWI1ZWNlLi5jOTkwZmIxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CkBAIC0zMCwxOCArMzAsOSBAQAogICAgT3BlbiB0aGUgVVJMICp1cmwqLCB3aGljaCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGEKICAgIDpjbGFzczpgUmVxdWVzdGAgb2JqZWN0LgogCi0gICAqZGF0YSogbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvIHRoZQotICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAqZGF0YSogbWF5IGFsc28gYmUgYW4KLSAgIGl0ZXJhYmxlIG9iamVjdCBhbmQgaW4gdGhhdCBjYXNlIENvbnRlbnQtTGVuZ3RoIHZhbHVlIG11c3QgYmUgc3BlY2lmaWVkIGluCi0gICB0aGUgaGVhZGVycy4gQ3VycmVudGx5IEhUVFAgcmVxdWVzdHMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCB1c2UgKmRhdGEqOyB0aGUKLSAgIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGEgUE9TVCBpbnN0ZWFkIG9mIGEgR0VUIHdoZW4gdGhlICpkYXRhKiBwYXJhbWV0ZXIgaXMKLSAgIHByb3ZpZGVkLgotCi0gICAqZGF0YSogc2hvdWxkIGJlIGEgYnVmZmVyIGluIHRoZSBzdGFuZGFyZAotICAgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdC4gIFRoZQotICAgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZSBvZgotICAgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgdGV4dCBzdHJpbmcgaW4gdGhpcyBmb3JtYXQuIEl0IHNob3VsZAotICAgYmUgZW5jb2RlZCB0byBieXRlcyBiZWZvcmUgYmVpbmcgdXNlZCBhcyB0aGUgKmRhdGEqIHBhcmFtZXRlci4KKyAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBiZSBzZW50IHRvIHRoZQorICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgU2VlIDpjbGFzczpgUmVxdWVzdGAKKyAgIGZvciBkZXRhaWxzLgogCiAgICB1cmxsaWIucmVxdWVzdCBtb2R1bGUgdXNlcyBIVFRQLzEuMSBhbmQgaW5jbHVkZXMgYGBDb25uZWN0aW9uOmNsb3NlYGAgaGVhZGVyCiAgICBpbiBpdHMgSFRUUCByZXF1ZXN0cy4KQEAgLTEyMCw2ICsxMTEsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjMKICAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICpjYWZpbGUqLCAqY2FwYXRoKiBhbmQgKmNhZGVmYXVsdCogYXJlIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgKmNvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KIAogLi4gZnVuY3Rpb246OiBpbnN0YWxsX29wZW5lcihvcGVuZXIpCiAKQEAgLTE5MiwxNCArMTg5LDIxIEBACiAKICAgICp1cmwqIHNob3VsZCBiZSBhIHN0cmluZyBjb250YWluaW5nIGEgdmFsaWQgVVJMLgogCi0gICAqZGF0YSogbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBzZW5kIHRvIHRoZQotICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgQ3VycmVudGx5IEhUVFAgcmVxdWVzdHMgYXJlCi0gICB0aGUgb25seSBvbmVzIHRoYXQgdXNlICpkYXRhKjsgdGhlIEhUVFAgcmVxdWVzdCB3aWxsIGJlIGEgUE9TVCBpbnN0ZWFkIG9mIGEKLSAgIEdFVCB3aGVuIHRoZSAqZGF0YSogcGFyYW1ldGVyIGlzIHByb3ZpZGVkLiAgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUKLSAgIHN0YW5kYXJkIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuCi0gICBUaGUgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZSBvZgotICAgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgc3RyaW5nIGluIHRoaXMgZm9ybWF0LiBJdCBzaG91bGQgYmUKLSAgIGVuY29kZWQgdG8gYnl0ZXMgYmVmb3JlIGJlaW5nIHVzZWQgYXMgdGhlICpkYXRhKiBwYXJhbWV0ZXIuCisgICAqZGF0YSogbXVzdCBiZSBhbiBvYmplY3Qgc3BlY2lmeWluZyBhZGRpdGlvbmFsIGRhdGEgdG8gc2VuZCB0byB0aGUKKyAgIHNlcnZlciwgb3IgYGBOb25lYGAgaWYgbm8gc3VjaCBkYXRhIGlzIG5lZWRlZC4gIEN1cnJlbnRseSBIVFRQCisgICByZXF1ZXN0cyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IHVzZSAqZGF0YSouICBUaGUgc3VwcG9ydGVkIG9iamVjdAorICAgdHlwZXMgaW5jbHVkZSBieXRlcywgZmlsZS1saWtlIG9iamVjdHMsIGFuZCBpdGVyYWJsZXMuICBJZiBubworICAgYGBDb250ZW50LUxlbmd0aGBgIG5vciBgYFRyYW5zZmVyLUVuY29kaW5nYGAgaGVhZGVyIGZpZWxkCisgICBoYXMgYmVlbiBwcm92aWRlZCwgOmNsYXNzOmBIVFRQSGFuZGxlcmAgd2lsbCBzZXQgdGhlc2UgaGVhZGVycyBhY2NvcmRpbmcKKyAgIHRvIHRoZSB0eXBlIG9mICpkYXRhKi4gIGBgQ29udGVudC1MZW5ndGhgYCB3aWxsIGJlIHVzZWQgdG8gc2VuZAorICAgYnl0ZXMgb2JqZWN0cywgd2hpbGUgYGBUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZGBgIGFzIHNwZWNpZmllZCBpbgorICAgOnJmYzpgNzIzMGAsIFNlY3Rpb24gMy4zLjEgd2lsbCBiZSB1c2VkIHRvIHNlbmQgZmlsZXMgYW5kIG90aGVyIGl0ZXJhYmxlcy4KKworICAgRm9yIGFuIEhUVFAgUE9TVCByZXF1ZXN0IG1ldGhvZCwgKmRhdGEqIHNob3VsZCBiZSBhIGJ1ZmZlciBpbiB0aGUKKyAgIHN0YW5kYXJkIDptaW1ldHlwZTpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBmb3JtYXQuICBUaGUKKyAgIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBmdW5jdGlvbiB0YWtlcyBhIG1hcHBpbmcgb3Igc2VxdWVuY2UKKyAgIG9mIDItdHVwbGVzIGFuZCByZXR1cm5zIGFuIEFTQ0lJIHN0cmluZyBpbiB0aGlzIGZvcm1hdC4gSXQgc2hvdWxkCisgICBiZSBlbmNvZGVkIHRvIGJ5dGVzIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSAqZGF0YSogcGFyYW1ldGVyLgogCiAgICAqaGVhZGVycyogc2hvdWxkIGJlIGEgZGljdGlvbmFyeSwgYW5kIHdpbGwgYmUgdHJlYXRlZCBhcyBpZgogICAgOm1ldGg6YGFkZF9oZWFkZXJgIHdhcyBjYWxsZWQgd2l0aCBlYWNoIGtleSBhbmQgdmFsdWUgYXMgYXJndW1lbnRzLgpAQCAtMjExLDggKzIxNSwxMCBAQAogICAgOm1vZDpgdXJsbGliYCdzIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcgaXMKICAgIGBgIlB5dGhvbi11cmxsaWIvMi42ImBgIChvbiBQeXRob24gMi42KS4KIAotICAgQW4gZXhhbXBsZSBvZiB1c2luZyBgYENvbnRlbnQtVHlwZWBgIGhlYWRlciB3aXRoICpkYXRhKiBhcmd1bWVudCB3b3VsZCBiZQotICAgc2VuZGluZyBhIGRpY3Rpb25hcnkgbGlrZSBgYHsiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9YGAuCisgICBBbiBhcHByb3ByaWF0ZSBgYENvbnRlbnQtVHlwZWBgIGhlYWRlciBzaG91bGQgYmUgaW5jbHVkZWQgaWYgdGhlICpkYXRhKgorICAgYXJndW1lbnQgaXMgcHJlc2VudC4gIElmIHRoaXMgaGVhZGVyIGhhcyBub3QgYmVlbiBwcm92aWRlZCBhbmQgKmRhdGEqCisgICBpcyBub3QgTm9uZSwgYGBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGBgIHdpbGwKKyAgIGJlIGFkZGVkIGFzIGEgZGVmYXVsdC4KIAogICAgVGhlIGZpbmFsIHR3byBhcmd1bWVudHMgYXJlIG9ubHkgb2YgaW50ZXJlc3QgZm9yIGNvcnJlY3QgaGFuZGxpbmcKICAgIG9mIHRoaXJkLXBhcnR5IEhUVFAgY29va2llczoKQEAgLTIzNSwxNSArMjQxLDI4IEBACiAgICAqbWV0aG9kKiBzaG91bGQgYmUgYSBzdHJpbmcgdGhhdCBpbmRpY2F0ZXMgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QgdGhhdAogICAgd2lsbCBiZSB1c2VkIChlLmcuIGBgJ0hFQUQnYGApLiAgSWYgcHJvdmlkZWQsIGl0cyB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlCiAgICA6YXR0cjpgflJlcXVlc3QubWV0aG9kYCBhdHRyaWJ1dGUgYW5kIGlzIHVzZWQgYnkgOm1ldGg6YGdldF9tZXRob2QoKWAuCi0gICBTdWJjbGFzc2VzIG1heSBpbmRpY2F0ZSBhIGRlZmF1bHQgbWV0aG9kIGJ5IHNldHRpbmcgdGhlCisgICBUaGUgZGVmYXVsdCBpcyBgYCdHRVQnYGAgaWYgKmRhdGEqIGlzIGBgTm9uZWBgIG9yIGBgJ1BPU1QnYGAgb3RoZXJ3aXNlLgorICAgU3ViY2xhc3NlcyBtYXkgaW5kaWNhdGUgYSBkaWZmZXJlbnQgZGVmYXVsdCBtZXRob2QgYnkgc2V0dGluZyB0aGUKICAgIDphdHRyOmB+UmVxdWVzdC5tZXRob2RgIGF0dHJpYnV0ZSBpbiB0aGUgY2xhc3MgaXRzZWxmLgogCisgICAuLiBub3RlOjoKKyAgICAgIFRoZSByZXF1ZXN0IHdpbGwgbm90IHdvcmsgYXMgZXhwZWN0ZWQgaWYgdGhlIGRhdGEgb2JqZWN0IGlzIHVuYWJsZQorICAgICAgdG8gZGVsaXZlciBpdHMgY29udGVudCBtb3JlIHRoYW4gb25jZSAoZS5nLiBhIGZpbGUgb3IgYW4gaXRlcmFibGUKKyAgICAgIHRoYXQgY2FuIHByb2R1Y2UgdGhlIGNvbnRlbnQgb25seSBvbmNlKSBhbmQgdGhlIHJlcXVlc3QgaXMgcmV0cmllZAorICAgICAgZm9yIEhUVFAgcmVkaXJlY3RzIG9yIGF1dGhlbnRpY2F0aW9uLiAgVGhlICpkYXRhKiBpcyBzZW50IHRvIHRoZQorICAgICAgSFRUUCBzZXJ2ZXIgcmlnaHQgYXdheSBhZnRlciB0aGUgaGVhZGVycy4gIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yCisgICAgICBhIDEwMC1jb250aW51ZSBleHBlY3RhdGlvbiBpbiB0aGUgbGlicmFyeS4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgYXJndW1lbnQgaXMgYWRkZWQgdG8gdGhlIFJlcXVlc3QgY2xhc3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBEZWZhdWx0IDphdHRyOmBSZXF1ZXN0Lm1ldGhvZGAgbWF5IGJlIGluZGljYXRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBEbyBub3QgcmFpc2UgYW4gZXJyb3IgaWYgdGhlIGBgQ29udGVudC1MZW5ndGhgYCBoYXMgbm90IGJlZW4KKyAgICAgIHByb3ZpZGVkIGFuZCAqZGF0YSogaXMgbmVpdGhlciBgYE5vbmVgYCBub3IgYSBieXRlcyBvYmplY3QuCisgICAgICBGYWxsIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KIAogLi4gY2xhc3M6OiBPcGVuZXJEaXJlY3RvcigpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0CmluZGV4IGJhNzAxYzMuLjdkMzE5MzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdApAQCAtNTcsMTUgKzU3LDQxIEBACiAgICAgICBTZXRzIHRoZSB0aW1lIHRoZSBgYHJvYm90cy50eHRgYCBmaWxlIHdhcyBsYXN0IGZldGNoZWQgdG8gdGhlIGN1cnJlbnQKICAgICAgIHRpbWUuCiAKKyAgIC4uIG1ldGhvZDo6IGNyYXdsX2RlbGF5KHVzZXJhZ2VudCkKIAotVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlbW9uc3RyYXRlcyBiYXNpYyB1c2Ugb2YgdGhlIFJvYm90RmlsZVBhcnNlciBjbGFzcy4KKyAgICAgIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBgYENyYXdsLWRlbGF5YGAgcGFyYW1ldGVyIGZyb20gYGByb2JvdHMudHh0YGAKKyAgICAgIGZvciB0aGUgKnVzZXJhZ2VudCogaW4gcXVlc3Rpb24uICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciBvciBpdAorICAgICAgZG9lc24ndCBhcHBseSB0byB0aGUgKnVzZXJhZ2VudCogc3BlY2lmaWVkIG9yIHRoZSBgYHJvYm90cy50eHRgYCBlbnRyeQorICAgICAgZm9yIHRoaXMgcGFyYW1ldGVyIGhhcyBpbnZhbGlkIHN5bnRheCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gbWV0aG9kOjogcmVxdWVzdF9yYXRlKHVzZXJhZ2VudCkKKworICAgICAgUmV0dXJucyB0aGUgY29udGVudHMgb2YgdGhlIGBgUmVxdWVzdC1yYXRlYGAgcGFyYW1ldGVyIGZyb20KKyAgICAgIGBgcm9ib3RzLnR4dGBgIGluIHRoZSBmb3JtIG9mIGEgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgICAgYGAocmVxdWVzdHMsIHNlY29uZHMpYGAuICBJZiB0aGVyZSBpcyBubyBzdWNoIHBhcmFtZXRlciBvciBpdCBkb2Vzbid0CisgICAgICBhcHBseSB0byB0aGUgKnVzZXJhZ2VudCogc3BlY2lmaWVkIG9yIHRoZSBgYHJvYm90cy50eHRgYCBlbnRyeSBmb3IgdGhpcworICAgICAgcGFyYW1ldGVyIGhhcyBpbnZhbGlkIHN5bnRheCwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGJhc2ljIHVzZSBvZiB0aGUgOmNsYXNzOmBSb2JvdEZpbGVQYXJzZXJgCitjbGFzczo6CiAKICAgID4+PiBpbXBvcnQgdXJsbGliLnJvYm90cGFyc2VyCiAgICA+Pj4gcnAgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKICAgID4+PiBycC5zZXRfdXJsKCJodHRwOi8vd3d3Lm11c2ktY2FsLmNvbS9yb2JvdHMudHh0IikKICAgID4+PiBycC5yZWFkKCkKKyAgID4+PiBycmF0ZSA9IHJwLnJlcXVlc3RfcmF0ZSgiKiIpCisgICA+Pj4gcnJhdGUucmVxdWVzdHMKKyAgIDMKKyAgID4+PiBycmF0ZS5zZWNvbmRzCisgICAyMAorICAgPj4+IHJwLmNyYXdsX2RlbGF5KCIqIikKKyAgIDYKICAgID4+PiBycC5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5tdXNpLWNhbC5jb20vY2dpLWJpbi9zZWFyY2g/Y2l0eT1TYW4rRnJhbmNpc2NvIikKICAgIEZhbHNlCiAgICA+Pj4gcnAuY2FuX2ZldGNoKCIqIiwgImh0dHA6Ly93d3cubXVzaS1jYWwuY29tLyIpCiAgICBUcnVlCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ZlbnYucnN0IGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKaW5kZXggMDMyNzczNy4uMTdjODBjOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdmVudi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdmVudi5yc3QKQEAgLTM3LDQ0ICszNyw1MCBAQAogCiAuLiBfdmVudi1kZWY6CiAKLS4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgKGFsc28gY2FsbGVkIGEgYGB2ZW52YGApIGlzIGEgUHl0aG9uCi0gICBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzCi0gICBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZSBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbAotICAgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLAotICAgaS5lLiBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91ciBvcGVyYXRpbmcgc3lzdGVtLgorLi4gbm90ZTo6IEEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIFB5dGhvbiBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIsIGxpYnJhcmllcyBhbmQgc2NyaXB0cyBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZQorICAgaW5zdGFsbGVkIGluIG90aGVyIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMKKyAgIGluc3RhbGxlZCBpbiBhICJzeXN0ZW0iIFB5dGhvbiwgaS5lLiwgb25lIHdoaWNoIGlzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHlvdXIKKyAgIG9wZXJhdGluZyBzeXN0ZW0uCiAKLSAgIEEgdmVudiBpcyBhIGRpcmVjdG9yeSB0cmVlIHdoaWNoIGNvbnRhaW5zIFB5dGhvbiBleGVjdXRhYmxlIGZpbGVzIGFuZAotICAgb3RoZXIgZmlsZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCBpdCBpcyBhIHZlbnYuCisgICBBIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZQorICAgZmlsZXMgYW5kIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2aXJ0dWFsIGVudmlyb25tZW50LgogCiAgICBDb21tb24gaW5zdGFsbGF0aW9uIHRvb2xzIHN1Y2ggYXMgYGBTZXR1cHRvb2xzYGAgYW5kIGBgcGlwYGAgd29yayBhcwotICAgZXhwZWN0ZWQgd2l0aCB2ZW52cyAtIGkuZS4gd2hlbiBhIHZlbnYgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uCi0gICBwYWNrYWdlcyBpbnRvIHRoZSB2ZW52IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCisgICBleHBlY3RlZCB3aXRoIHZpcnR1YWwgZW52aXJvbm1lbnRzLiBJbiBvdGhlciB3b3Jkcywgd2hlbiBhIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IGlzIGFjdGl2ZSwgdGhleSBpbnN0YWxsIFB5dGhvbiBwYWNrYWdlcyBpbnRvIHRoZSB2aXJ0dWFsCisgICBlbnZpcm9ubWVudCB3aXRob3V0IG5lZWRpbmcgdG8gYmUgdG9sZCB0byBkbyBzbyBleHBsaWNpdGx5LgogCi0gICBXaGVuIGEgdmVudiBpcyBhY3RpdmUgKGkuZS4gdGhlIHZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgaXMgcnVubmluZyksIHRoZQotICAgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBiYXNlCi0gICBkaXJlY3Rvcnkgb2YgdGhlIHZlbnYsIHdoZXJlYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCi0gICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uCi0gICB3aGljaCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHZlbnYuIElmIGEgdmVudiBpcyBub3QgYWN0aXZlLCB0aGVuCi0gICA6YXR0cjpgc3lzLnByZWZpeGAgaXMgdGhlIHNhbWUgYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCi0gICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgICh0aGV5Ci0gICBhbGwgcG9pbnQgdG8gYSBub24tdmVudiBQeXRob24gaW5zdGFsbGF0aW9uKS4KKyAgIFdoZW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2ZSAoaS5lLiwgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24KKyAgIGludGVycHJldGVyIGlzIHJ1bm5pbmcpLCB0aGUgYXR0cmlidXRlcyA6YXR0cjpgc3lzLnByZWZpeGAgYW5kCisgICA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgYmFzZSBkaXJlY3Rvcnkgb2YgdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50LCB3aGVyZWFzIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZAorICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCBwb2ludCB0byB0aGUgbm9uLXZpcnR1YWwgZW52aXJvbm1lbnQgUHl0aG9uCisgICBpbnN0YWxsYXRpb24gd2hpY2ggd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiBJZiBhIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IGlzIG5vdCBhY3RpdmUsIHRoZW4gOmF0dHI6YHN5cy5wcmVmaXhgIGlzIHRoZSBzYW1lIGFzCisgICA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgaXMgdGhlIHNhbWUgYXMKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkgYWxsIHBvaW50IHRvIGEgbm9uLXZpcnR1YWwgZW52aXJvbm1lbnQKKyAgIFB5dGhvbiBpbnN0YWxsYXRpb24pLgogCi0gICBXaGVuIGEgdmVudiBpcyBhY3RpdmUsIGFueSBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZSBpbnN0YWxsYXRpb24gcGF0aCB3aWxsIGJlCi0gICBpZ25vcmVkIGZyb20gYWxsIGRpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHByZXZlbnQgcHJvamVjdHMgYmVpbmcKLSAgIGluYWR2ZXJ0ZW50bHkgaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICBXaGVuIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhY3RpdmUsIGFueSBvcHRpb25zIHRoYXQgY2hhbmdlIHRoZQorICAgaW5zdGFsbGF0aW9uIHBhdGggd2lsbCBiZSBpZ25vcmVkIGZyb20gYWxsIGRpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIHRvCisgICBwcmV2ZW50IHByb2plY3RzIGJlaW5nIGluYWR2ZXJ0ZW50bHkgaW5zdGFsbGVkIG91dHNpZGUgb2YgdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50LgogCi0gICBXaGVuIHdvcmtpbmcgaW4gYSBjb21tYW5kIHNoZWxsLCB1c2VycyBjYW4gbWFrZSBhIHZlbnYgYWN0aXZlIGJ5IHJ1bm5pbmcgYW4KLSAgIGBgYWN0aXZhdGVgYCBzY3JpcHQgaW4gdGhlIHZlbnYncyBleGVjdXRhYmxlcyBkaXJlY3RvcnkgKHRoZSBwcmVjaXNlIGZpbGVuYW1lCi0gICBpcyBzaGVsbC1kZXBlbmRlbnQpLCB3aGljaCBwcmVwZW5kcyB0aGUgdmVudidzIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMgdG8KLSAgIHRoZSBgYFBBVEhgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBmb3IgdGhlIHJ1bm5pbmcgc2hlbGwuIFRoZXJlIHNob3VsZCBiZSBubwotICAgbmVlZCBpbiBvdGhlciBjaXJjdW1zdGFuY2VzIHRvIGFjdGl2YXRlIGEgdmVudiAtLSBzY3JpcHRzIGluc3RhbGxlZCBpbnRvCi0gICB2ZW52cyBoYXZlIGEgc2hlYmFuZyBsaW5lIHdoaWNoIHBvaW50cyB0byB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlci4gVGhpcwotICAgbWVhbnMgdGhhdCB0aGUgc2NyaXB0IHdpbGwgcnVuIHdpdGggdGhhdCBpbnRlcnByZXRlciByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZQotICAgb2YgYGBQQVRIYGAuIE9uIFdpbmRvd3MsIHNoZWJhbmcgbGluZSBwcm9jZXNzaW5nIGlzIHN1cHBvcnRlZCBpZiB5b3UgaGF2ZSB0aGUKLSAgIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBpbnN0YWxsZWQgKHRoaXMgd2FzIGFkZGVkIHRvIFB5dGhvbiBpbiAzLjMgLSBzZWUKLSAgIDpwZXA6YDM5N2AgZm9yIG1vcmUgZGV0YWlscykuIFRodXMsIGRvdWJsZS1jbGlja2luZyBhbiBpbnN0YWxsZWQgc2NyaXB0IGluCi0gICBhIFdpbmRvd3MgRXhwbG9yZXIgd2luZG93IHNob3VsZCBydW4gdGhlIHNjcmlwdCB3aXRoIHRoZSBjb3JyZWN0IGludGVycHJldGVyCi0gICB3aXRob3V0IHRoZXJlIG5lZWRpbmcgdG8gYmUgYW55IHJlZmVyZW5jZSB0byBpdHMgdmVudiBpbiBgYFBBVEhgYC4KKyAgIFdoZW4gd29ya2luZyBpbiBhIGNvbW1hbmQgc2hlbGwsIHVzZXJzIGNhbiBtYWtlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBhY3RpdmUKKyAgIGJ5IHJ1bm5pbmcgYW4gYGBhY3RpdmF0ZWBgIHNjcmlwdCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGV4ZWN1dGFibGVzCisgICBkaXJlY3RvcnkgKHRoZSBwcmVjaXNlIGZpbGVuYW1lIGlzIHNoZWxsLWRlcGVuZGVudCksIHdoaWNoIHByZXBlbmRzIHRoZQorICAgdmlydHVhbCBlbnZpcm9ubWVudCdzIGRpcmVjdG9yeSBmb3IgZXhlY3V0YWJsZXMgdG8gdGhlIGBgUEFUSGBgIGVudmlyb25tZW50CisgICB2YXJpYWJsZSBmb3IgdGhlIHJ1bm5pbmcgc2hlbGwuIFRoZXJlIHNob3VsZCBiZSBubyBuZWVkIGluIG90aGVyCisgICBjaXJjdW1zdGFuY2VzIHRvIGFjdGl2YXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudOKAlHNjcmlwdHMgaW5zdGFsbGVkIGludG8KKyAgIHZpcnR1YWwgZW52aXJvbm1lbnRzIGhhdmUgYSAic2hlYmFuZyIgbGluZSB3aGljaCBwb2ludHMgdG8gdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50J3MgUHl0aG9uIGludGVycHJldGVyLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHNjcmlwdCB3aWxsIHJ1biB3aXRoCisgICB0aGF0IGludGVycHJldGVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlIG9mIGBgUEFUSGBgLiBPbiBXaW5kb3dzLCAic2hlYmFuZyIKKyAgIGxpbmUgcHJvY2Vzc2luZyBpcyBzdXBwb3J0ZWQgaWYgeW91IGhhdmUgdGhlIFB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cworICAgaW5zdGFsbGVkICh0aGlzIHdhcyBhZGRlZCB0byBQeXRob24gaW4gMy4zIC0gc2VlIDpwZXA6YDM5N2AgZm9yIG1vcmUKKyAgIGRldGFpbHMpLiBUaHVzLCBkb3VibGUtY2xpY2tpbmcgYW4gaW5zdGFsbGVkIHNjcmlwdCBpbiBhIFdpbmRvd3MgRXhwbG9yZXIKKyAgIHdpbmRvdyBzaG91bGQgcnVuIHRoZSBzY3JpcHQgd2l0aCB0aGUgY29ycmVjdCBpbnRlcnByZXRlciB3aXRob3V0IHRoZXJlCisgICBuZWVkaW5nIHRvIGJlIGFueSByZWZlcmVuY2UgdG8gaXRzIHZpcnR1YWwgZW52aXJvbm1lbnQgaW4gYGBQQVRIYGAuCiAKIAogLi4gX3ZlbnYtYXBpOgpAQCAtODksNyArOTUsOCBAQAogY3JlYXRpb24gYWNjb3JkaW5nIHRvIHRoZWlyIG5lZWRzLCB0aGUgOmNsYXNzOmBFbnZCdWlsZGVyYCBjbGFzcy4KIAogLi4gY2xhc3M6OiBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwgXAotICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSwgd2l0aF9waXA9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9Tm9uZSkKIAogICAgIFRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBvbgogICAgIGluc3RhbnRpYXRpb246CkBAIC0xMTMsOSArMTIwLDE2IEBACiAgICAgICBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuIFRoaXMgdXNlcyA6bW9kOmBlbnN1cmVwaXBgIHdpdGgKICAgICAgIHRoZSBgYC0tZGVmYXVsdC1waXBgYCBvcHRpb24uCiAKKyAgICAqIGBgcHJvbXB0YGAgLS0gYSBTdHJpbmcgdG8gYmUgdXNlZCBhZnRlciB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2YXRlZAorICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgIHdoaWNoIG1lYW5zIGRpcmVjdG9yeSBuYW1lIG9mIHRoZSBlbnZpcm9ubWVudCB3b3VsZAorICAgICAgYmUgdXNlZCkuCisKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgIEFkZGVkIHRoZSBgYHdpdGhfcGlwYGAgcGFyYW1ldGVyCiAKKyAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgICBBZGRlZCB0aGUgYGBwcm9tcHRgYCBwYXJhbWV0ZXIKKwogCiAgICAgQ3JlYXRvcnMgb2YgdGhpcmQtcGFydHkgdmlydHVhbCBlbnZpcm9ubWVudCB0b29scyB3aWxsIGJlIGZyZWUgdG8gdXNlIHRoZQogICAgIHByb3ZpZGVkIGBgRW52QnVpbGRlcmBgIGNsYXNzIGFzIGEgYmFzZSBjbGFzcy4KQEAgLTIyNSw3ICsyMzksNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhlIGZvbGxvd2luZyBzY3JpcHQgc2hvd3MgaG93IHRvIGV4dGVuZCA6Y2xhc3M6YEVudkJ1aWxkZXJgIGJ5IGltcGxlbWVudGluZyBhCi1zdWJjbGFzcyB3aGljaCBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgaW50byBhIGNyZWF0ZWQgdmVudjo6CitzdWJjbGFzcyB3aGljaCBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgaW50byBhIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudDo6CiAKICAgICBpbXBvcnQgb3MKICAgICBpbXBvcnQgb3MucGF0aApAQCAtMjM5LDEyICsyNTMsMTIgQEAKICAgICBjbGFzcyBFeHRlbmRlZEVudkJ1aWxkZXIodmVudi5FbnZCdWlsZGVyKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgYnVpbGRlciBpbnN0YWxscyBzZXR1cHRvb2xzIGFuZCBwaXAgc28gdGhhdCB5b3UgY2FuIHBpcCBvcgotICAgICAgICBlYXN5X2luc3RhbGwgb3RoZXIgcGFja2FnZXMgaW50byB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgZWFzeV9pbnN0YWxsIG90aGVyIHBhY2thZ2VzIGludG8gdGhlIGNyZWF0ZWQgdmlydHVhbCBlbnZpcm9ubWVudC4KIAogICAgICAgICA6cGFyYW0gbm9kaXN0OiBJZiBUcnVlLCBzZXR1cHRvb2xzIGFuZCBwaXAgYXJlIG5vdCBpbnN0YWxsZWQgaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgICAgICA6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgogICAgICAgICA6cGFyYW0gcHJvZ3Jlc3M6IElmIHNldHVwdG9vbHMgb3IgcGlwIGFyZSBpbnN0YWxsZWQsIHRoZSBwcm9ncmVzcyBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsYXRpb24gY2FuIGJlIG1vbml0b3JlZCBieSBwYXNzaW5nIGEgcHJvZ3Jlc3MKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZS4gSWYgc3BlY2lmaWVkLCBpdCBpcyBjYWxsZWQgd2l0aCB0d28KQEAgLTI3MCwxMCArMjg0LDEwIEBACiAgICAgICAgIGRlZiBwb3N0X3NldHVwKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBTZXQgdXAgYW55IHBhY2thZ2VzIHdoaWNoIG5lZWQgdG8gYmUgcHJlLWluc3RhbGxlZCBpbnRvIHRoZQotICAgICAgICAgICAgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KKyAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQgYmVpbmcgY3JlYXRlZC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBvcy5lbnZpcm9uWydWSVJUVUFMX0VOViddID0gY29udGV4dC5lbnZfZGlyCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5ub2Rpc3Q6CkBAIC0zMDcsNyArMzIxLDcgQEAKICAgICAgICAgICAgIGZuID0gb3MucGF0aC5zcGxpdChwYXRoKVstMV0KICAgICAgICAgICAgIGJpbnBhdGggPSBjb250ZXh0LmJpbl9wYXRoCiAgICAgICAgICAgICBkaXN0cGF0aCA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBmbikKLSAgICAgICAgICAgICMgRG93bmxvYWQgc2NyaXB0IGludG8gdGhlIGVudidzIGJpbmFyaWVzIGZvbGRlcgorICAgICAgICAgICAgIyBEb3dubG9hZCBzY3JpcHQgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyaWVzIGZvbGRlcgogICAgICAgICAgICAgdXJscmV0cmlldmUodXJsLCBkaXN0cGF0aCkKICAgICAgICAgICAgIHByb2dyZXNzID0gc2VsZi5wcm9ncmVzcwogICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlOgpAQCAtMzE5LDcgKzMzMyw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0luc3RhbGxpbmcgJXMgLi4uJXMnICUgKG5hbWUsIHRlcm0pKQogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICAgICAgIyBJbnN0YWxsIGluIHRoZSBlbnYKKyAgICAgICAgICAgICMgSW5zdGFsbCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgICAgICAgYXJncyA9IFtjb250ZXh0LmVudl9leGUsIGZuXQogICAgICAgICAgICAgcCA9IFBvcGVuKGFyZ3MsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgY3dkPWJpbnBhdGgpCiAgICAgICAgICAgICB0MSA9IFRocmVhZCh0YXJnZXQ9c2VsZi5yZWFkZXIsIGFyZ3M9KHAuc3Rkb3V0LCAnc3Rkb3V0JykpCkBAIC0zMzgsMTAgKzM1MiwxMCBAQAogCiAgICAgICAgIGRlZiBpbnN0YWxsX3NldHVwdG9vbHMoc2VsZiwgY29udGV4dCk6CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEluc3RhbGwgc2V0dXB0b29scyBpbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJbnN0YWxsIHNldHVwdG9vbHMgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLSAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiByZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgdXJsID0gJ2h0dHBzOi8vYml0YnVja2V0Lm9yZy9weXBhL3NldHVwdG9vbHMvZG93bmxvYWRzL2V6X3NldHVwLnB5JwogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAnc2V0dXB0b29scycsIHVybCkKQEAgLTM1NCwxMCArMzY4LDEwIEBACiAKICAgICAgICAgZGVmIGluc3RhbGxfcGlwKHNlbGYsIGNvbnRleHQpOgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgZW52aXJvbm1lbnQuCisgICAgICAgICAgICBJbnN0YWxsIHBpcCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9weXBhL3BpcC9tYXN0ZXIvY29udHJpYi9nZXQtcGlwLnB5JwogICAgICAgICAgICAgc2VsZi5pbnN0YWxsX3NjcmlwdChjb250ZXh0LCAncGlwJywgdXJsKQpAQCAtMzgwLDcgKzM5NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0YXJnZXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yaWVzLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdkaXJzJywgbWV0YXZhcj0nRU5WX0RJUicsIG5hcmdzPScrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSBpbiB3aGljaCB0byBjcmVhdGUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZpcnR1YWwgZW52aXJvbm1lbnQuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tc2V0dXB0b29scycsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J25vZGlzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRvbid0IGluc3RhbGwgc2V0dXB0b29scyBvciBwaXAgaW4gdGhlICIKQEAgLTQwNCwxNCArNDE5LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBwbGF0Zm9ybS4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jbGVhcicsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2NsZWFyJywgaGVscD0nRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxyZWFkeSBleGlzdHMsIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IGlmIGl0IGFscmVhZHkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0cywgYmVmb3JlIHZpcnR1YWwgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGNyZWF0aW9uLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVwZ3JhZGUnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXBncmFkZScsIGhlbHA9J1VwZ3JhZGUgdGhlIHZpcnR1YWwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZSB0aGlzIHZlcnNpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLCBhc3N1bWluZyBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFzIGJlZW4gdXBncmFkZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW4tcGxhY2UuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdmVyYm9zZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3ZlcmJvc2UnLCBoZWxwPSdEaXNwbGF5IHRoZSBvdXRwdXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHNjcmlwdHMgd2hpY2ggJwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0IGIvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CmluZGV4IGNlYzU1ZjEuLmY2N2Y0YmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdAorKysgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKQEAgLTMwMSw3ICszMDEsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKLS4uIGZ1bmN0aW9uOjogd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEpCisuLiBmdW5jdGlvbjo6IHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xLCBzb3VyY2U9Tm9uZSkKIAogICAgSXNzdWUgYSB3YXJuaW5nLCBvciBtYXliZSBpZ25vcmUgaXQgb3IgcmFpc2UgYW4gZXhjZXB0aW9uLiAgVGhlICpjYXRlZ29yeSoKICAgIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhIHdhcm5pbmcgY2F0ZWdvcnkgY2xhc3MgKHNlZSBhYm92ZSk7IGl0IGRlZmF1bHRzIHRvCkBAIC0zMTksOCArMzE5LDE0IEBACiAgICBzb3VyY2Ugb2YgOmZ1bmM6YGRlcHJlY2F0aW9uYCBpdHNlbGYgKHNpbmNlIHRoZSBsYXR0ZXIgd291bGQgZGVmZWF0IHRoZSBwdXJwb3NlCiAgICBvZiB0aGUgd2FybmluZyBtZXNzYWdlKS4KIAorICAgKnNvdXJjZSosIGlmIHN1cHBsaWVkLCBpcyB0aGUgZGVzdHJveWVkIG9iamVjdCB3aGljaCBlbWl0dGVkIGEKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AuCiAKLS4uIGZ1bmN0aW9uOjogd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnNvdXJjZSogcGFyYW1ldGVyLgorCisKKy4uIGZ1bmN0aW9uOjogd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUsIHNvdXJjZT1Ob25lKQogCiAgICBUaGlzIGlzIGEgbG93LWxldmVsIGludGVyZmFjZSB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZiA6ZnVuYzpgd2FybmAsIHBhc3NpbmcgaW4KICAgIGV4cGxpY2l0bHkgdGhlIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIsIGFuZCBvcHRpb25hbGx5IHRoZQpAQCAtMzM2LDYgKzM0MiwxMiBAQAogICAgc291cmNlIGZvciBtb2R1bGVzIGZvdW5kIGluIHppcGZpbGVzIG9yIG90aGVyIG5vbi1maWxlc3lzdGVtIGltcG9ydAogICAgc291cmNlcykuCiAKKyAgICpzb3VyY2UqLCBpZiBzdXBwbGllZCwgaXMgdGhlIGRlc3Ryb3llZCBvYmplY3Qgd2hpY2ggZW1pdHRlZCBhCisgICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkIHRoZSAqc291cmNlKiBwYXJhbWV0ZXIuCisKIAogLi4gZnVuY3Rpb246OiBzaG93d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CmluZGV4IDUyZDU5MWEuLjQ4YmRmMTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2lucmVnLnJzdApAQCAtNjM1LDcgKzYzNSw3IEBACiAKIC4uIGRhdGE6OiBSRUdfRFdPUkRfTElUVExFX0VORElBTgogCi0gICBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBSRUdfRFdPUkRgLgogCiAuLiBkYXRhOjogUkVHX0RXT1JEX0JJR19FTkRJQU4KIApAQCAtNjU5LDYgKzY1OSwxOCBAQAogCiAgICBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCiAKKy4uIGRhdGE6OiBSRUdfUVdPUkQKKworICAgQSA2NC1iaXQgbnVtYmVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IFJFR19RV09SRF9MSVRUTEVfRU5ESUFOCisKKyAgIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byA6Y29uc3Q6YFJFR19RV09SRGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogUkVHX1JFU09VUkNFX0xJU1QKIAogICAgQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QgYi9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QKaW5kZXggZDJjNDIxMC4uMzcyZjc5MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2luc291bmQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdApAQCAtMjUsNyArMjUsOCBAQAogLi4gZnVuY3Rpb246OiBQbGF5U291bmQoc291bmQsIGZsYWdzKQogCiAgICBDYWxsIHRoZSB1bmRlcmx5aW5nIDpjOmZ1bmM6YFBsYXlTb3VuZGAgZnVuY3Rpb24gZnJvbSB0aGUgUGxhdGZvcm0gQVBJLiAgVGhlCi0gICAqc291bmQqIHBhcmFtZXRlciBtYXkgYmUgYSBmaWxlbmFtZSwgYXVkaW8gZGF0YSBhcyBhIHN0cmluZywgb3IgYGBOb25lYGAuICBJdHMKKyAgICpzb3VuZCogcGFyYW1ldGVyIG1heSBiZSBhIGZpbGVuYW1lLCBhIHN5c3RlbSBzb3VuZCBhbGlhcywgYXVkaW8gZGF0YSBhcyBhCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLCBvciBgYE5vbmVgYC4gIEl0cwogICAgaW50ZXJwcmV0YXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgKmZsYWdzKiwgd2hpY2ggY2FuIGJlIGEgYml0d2lzZSBPUmVkCiAgICBjb21iaW5hdGlvbiBvZiB0aGUgY29uc3RhbnRzIGRlc2NyaWJlZCBiZWxvdy4gSWYgdGhlICpzb3VuZCogcGFyYW1ldGVyIGlzCiAgICBgYE5vbmVgYCwgYW55IGN1cnJlbnRseSBwbGF5aW5nIHdhdmVmb3JtIHNvdW5kIGlzIHN0b3BwZWQuIElmIHRoZSBzeXN0ZW0KQEAgLTM5LDcgKzQwLDggQEAKICAgIHNvdW5kIHRvIHBsYXk7IHBvc3NpYmxlIHZhbHVlcyBhcmUgYGAtMWBgLCBgYE1CX0lDT05BU1RFUklTS2BgLAogICAgYGBNQl9JQ09ORVhDTEFNQVRJT05gYCwgYGBNQl9JQ09OSEFORGBgLCBgYE1CX0lDT05RVUVTVElPTmBgLCBhbmQgYGBNQl9PS2BgLCBhbGwKICAgIGRlc2NyaWJlZCBiZWxvdy4gIFRoZSB2YWx1ZSBgYC0xYGAgcHJvZHVjZXMgYSAic2ltcGxlIGJlZXAiOyB0aGlzIGlzIHRoZSBmaW5hbAotICAgZmFsbGJhY2sgaWYgYSBzb3VuZCBjYW5ub3QgYmUgcGxheWVkIG90aGVyd2lzZS4KKyAgIGZhbGxiYWNrIGlmIGEgc291bmQgY2Fubm90IGJlIHBsYXllZCBvdGhlcndpc2UuICBJZiB0aGUgc3lzdGVtIGluZGljYXRlcyBhbgorICAgZXJyb3IsIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGRhdGE6OiBTTkRfRklMRU5BTUUKQEAgLTkyLDcgKzk0LDcgQEAKIC4uIGRhdGE6OiBTTkRfTUVNT1JZCiAKICAgIFRoZSAqc291bmQqIHBhcmFtZXRlciB0byA6ZnVuYzpgUGxheVNvdW5kYCBpcyBhIG1lbW9yeSBpbWFnZSBvZiBhIFdBViBmaWxlLCBhcyBhCi0gICBzdHJpbmcuCisgICA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgLgogCiAgICAuLiBub3RlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAppbmRleCBhYWQyN2E4Li5hMWQ0NDY5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdApAQCAtMTMzLDkgKzEzMyw5IEBACiAgICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGVudmlyb24uaXRlbXMoKV0KICAgICAgICAgICByZXR1cm4gcmV0CiAKLSAgICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHNpbXBsZV9hcHApCi0gICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBzaW1wbGVfYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQorICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBlbnZpcm9ubWVudCBmdW5jdGlvbnMgYWJvdmUsIHRoZSA6bW9kOmB3c2dpcmVmLnV0aWxgIG1vZHVsZQpAQCAtMjg1LDE0ICsyODUsMTQgQEAKIAogICAgICAgZnJvbSB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIgaW1wb3J0IG1ha2Vfc2VydmVyLCBkZW1vX2FwcAogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkKLSAgICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24gcG9ydCA4MDAwLi4uIikKKyAgICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIHBvcnQgODAwMC4uLiIpCiAKLSAgICAgICMgUmVzcG9uZCB0byByZXF1ZXN0cyB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgICAgIyBSZXNwb25kIHRvIHJlcXVlc3RzIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCisgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKLSAgICAgICMgQWx0ZXJuYXRpdmU6IHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKLSAgICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkKKyAgICAgICAgICAjIEFsdGVybmF0aXZlOiBzZXJ2ZSBvbmUgcmVxdWVzdCwgdGhlbiBleGl0CisgICAgICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKQogCiAKIC4uIGZ1bmN0aW9uOjogZGVtb19hcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpCkBAIC00MzIsOSArNDMyLDkgQEAKICAgICAgICMgVGhpcyBpcyB0aGUgYXBwbGljYXRpb24gd3JhcHBlZCBpbiBhIHZhbGlkYXRvcgogICAgICAgdmFsaWRhdG9yX2FwcCA9IHZhbGlkYXRvcihzaW1wbGVfYXBwKQogCi0gICAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCB2YWxpZGF0b3JfYXBwKQotICAgICAgcHJpbnQoIkxpc3RlbmluZyBvbiBwb3J0IDgwMDAuLi4uIikKLSAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgdmFsaWRhdG9yX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgICAgcHJpbnQoIkxpc3RlbmluZyBvbiBwb3J0IDgwMDAuLi4uIikKKyAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAogCiA6bW9kOmB3c2dpcmVmLmhhbmRsZXJzYCAtLSBzZXJ2ZXIvZ2F0ZXdheSBiYXNlIGNsYXNzZXMKQEAgLTc3NCw4ICs3NzQsOCBAQAogICAgICAgICMgVGhlIHJldHVybmVkIG9iamVjdCBpcyBnb2luZyB0byBiZSBwcmludGVkCiAgICAgICAgcmV0dXJuIFtiIkhlbGxvIFdvcmxkIl0KIAotICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgaGVsbG9fd29ybGRfYXBwKQotICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKKyAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGhlbGxvX3dvcmxkX2FwcCkgYXMgaHR0cGQ6CisgICAgICAgcHJpbnQoIlNlcnZpbmcgb24gcG9ydCA4MDAwLi4uIikKIAotICAgIyBTZXJ2ZSB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAotICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgIyBTZXJ2ZSB1bnRpbCBwcm9jZXNzIGlzIGtpbGxlZAorICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdAppbmRleCBkYWQ3YTAyLi4zOTA4MjhlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdApAQCAtODgsOSArODgsMTMgQEAKICAgICs9PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCiAgICB8IGBgYm9vbGVhbmBgICAgICAgICAgIHwgOmNsYXNzOmBib29sYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBpbnRgYCBvciBgYGk0YGAgICAgfCA6Y2xhc3M6YGludGAgaW4gcmFuZ2UgZnJvbSAtMjE0NzQ4MzY0OCB0byAyMTQ3NDgzNjQ3LiB8CisgICB8IGBgaW50YGAsIGBgaTFgYCwgICAgIHwgOmNsYXNzOmBpbnRgIGluIHJhbmdlIGZyb20gLTIxNDc0ODM2NDggdG8gMjE0NzQ4MzY0Ny4gfAorICAgfCBgYGkyYGAsICBgYGk0YGAsICAgICB8IFZhbHVlcyBnZXQgdGhlIGBgPGludD5gYCB0YWcuICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGBpOGBgIG9yICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgYmlnaW50ZWdlcmBgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBkb3VibGVgYCAgICAgICAgICAgfCA6Y2xhc3M6YGZsb2F0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IGBgZG91YmxlYGAgb3IgICAgICAgIHwgOmNsYXNzOmBmbG9hdGAuICBWYWx1ZXMgZ2V0IHRoZSBgYDxkb3VibGU+YGAgdGFnLiAgICAgfAorICAgfCBgYGZsb2F0YGAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgc3RyaW5nYGAgICAgICAgICAgIHwgOmNsYXNzOmBzdHJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTExNCw2ICsxMTgsOCBAQAogICAgfCBgYG5pbGBgICAgICAgICAgICAgICB8IFRoZSBgYE5vbmVgYCBjb25zdGFudC4gIFBhc3NpbmcgaXMgYWxsb3dlZCBvbmx5IGlmICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgfCAqYWxsb3dfbm9uZSogaXMgdHJ1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYGJpZ2RlY2ltYWxgYCAgICAgICB8IDpjbGFzczpgZGVjaW1hbC5EZWNpbWFsYC4gIFJldHVybmVkIHR5cGUgb25seS4gICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFRoaXMgaXMgdGhlIGZ1bGwgc2V0IG9mIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGJ5IFhNTC1SUEMuICBNZXRob2QgY2FsbHMgbWF5IGFsc28KICAgIHJhaXNlIGEgc3BlY2lhbCA6ZXhjOmBGYXVsdGAgaW5zdGFuY2UsIHVzZWQgdG8gc2lnbmFsIFhNTC1SUEMgc2VydmVyIGVycm9ycywgb3IKQEAgLTEzNyw2ICsxNDMsMTMgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBBZGRlZCB0aGUgKmNvbnRleHQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBvZiB0eXBlIHRhZ3Mgd2l0aCBwcmVmaXhlcyAoZS5nLiBgYGV4Om5pbGBgKS4KKyAgICAgIEFkZGVkIHN1cHBvcnQgb2YgdW5tYXJzYWxsaW5nIGFkZGl0aW9uYWwgdHlwZXMgdXNlZCBieSBBcGFjaGUgWE1MLVJQQworICAgICAgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzOiBgYGkxYGAsIGBgaTJgYCwgYGBpOGBgLCBgYGJpZ2ludGVnZXJgYCwKKyAgICAgIGBgZmxvYXRgYCBhbmQgYGBiaWdkZWNpbWFsYGAuCisgICAgICBTZWUgaHR0cDovL3dzLmFwYWNoZS5vcmcveG1scnBjL3R5cGVzLmh0bWwgZm9yIGEgZGVzY3JpcHRpb24uCisKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5zZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKaW5kZXggMWM3N2U4NC4uMDUxMWRkZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QKQEAgLTE0OCwyOSArMTQ4LDI5IEBACiAgICAgICAgcnBjX3BhdGhzID0gKCcvUlBDMicsKQogCiAgICAjIENyZWF0ZSBzZXJ2ZXIKLSAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyPVJlcXVlc3RIYW5kbGVyKQotICAgc2VydmVyLnJlZ2lzdGVyX2ludHJvc3BlY3Rpb25fZnVuY3Rpb25zKCkKKyAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcj1SZXF1ZXN0SGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnRyb3NwZWN0aW9uX2Z1bmN0aW9ucygpCiAKLSAgICMgUmVnaXN0ZXIgcG93KCkgZnVuY3Rpb247IHRoaXMgd2lsbCB1c2UgdGhlIHZhbHVlIG9mCi0gICAjIHBvdy5fX25hbWVfXyBhcyB0aGUgbmFtZSwgd2hpY2ggaXMganVzdCAncG93Jy4KLSAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCisgICAgICAgIyBSZWdpc3RlciBwb3coKSBmdW5jdGlvbjsgdGhpcyB3aWxsIHVzZSB0aGUgdmFsdWUgb2YKKyAgICAgICAjIHBvdy5fX25hbWVfXyBhcyB0aGUgbmFtZSwgd2hpY2ggaXMganVzdCAncG93Jy4KKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQogCi0gICAjIFJlZ2lzdGVyIGEgZnVuY3Rpb24gdW5kZXIgYSBkaWZmZXJlbnQgbmFtZQotICAgZGVmIGFkZGVyX2Z1bmN0aW9uKHgseSk6Ci0gICAgICAgcmV0dXJuIHggKyB5Ci0gICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24oYWRkZXJfZnVuY3Rpb24sICdhZGQnKQorICAgICAgICMgUmVnaXN0ZXIgYSBmdW5jdGlvbiB1bmRlciBhIGRpZmZlcmVudCBuYW1lCisgICAgICAgZGVmIGFkZGVyX2Z1bmN0aW9uKHgseSk6CisgICAgICAgICAgIHJldHVybiB4ICsgeQorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihhZGRlcl9mdW5jdGlvbiwgJ2FkZCcpCiAKLSAgICMgUmVnaXN0ZXIgYW4gaW5zdGFuY2U7IGFsbCB0aGUgbWV0aG9kcyBvZiB0aGUgaW5zdGFuY2UgYXJlCi0gICAjIHB1Ymxpc2hlZCBhcyBYTUwtUlBDIG1ldGhvZHMgKGluIHRoaXMgY2FzZSwganVzdCAnbXVsJykuCi0gICBjbGFzcyBNeUZ1bmNzOgotICAgICAgIGRlZiBtdWwoc2VsZiwgeCwgeSk6Ci0gICAgICAgICAgIHJldHVybiB4ICogeQorICAgICAgICMgUmVnaXN0ZXIgYW4gaW5zdGFuY2U7IGFsbCB0aGUgbWV0aG9kcyBvZiB0aGUgaW5zdGFuY2UgYXJlCisgICAgICAgIyBwdWJsaXNoZWQgYXMgWE1MLVJQQyBtZXRob2RzIChpbiB0aGlzIGNhc2UsIGp1c3QgJ211bCcpLgorICAgICAgIGNsYXNzIE15RnVuY3M6CisgICAgICAgICAgIGRlZiBtdWwoc2VsZiwgeCwgeSk6CisgICAgICAgICAgICAgICByZXR1cm4geCAqIHkKIAotICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKE15RnVuY3MoKSkKKyAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoTXlGdW5jcygpKQogCi0gICAjIFJ1biB0aGUgc2VydmVyJ3MgbWFpbiBsb29wCi0gICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIyBSdW4gdGhlIHNlcnZlcidzIG1haW4gbG9vcAorICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKIAogVGhlIGZvbGxvd2luZyBjbGllbnQgY29kZSB3aWxsIGNhbGwgdGhlIG1ldGhvZHMgbWFkZSBhdmFpbGFibGUgYnkgdGhlIHByZWNlZGluZwogc2VydmVyOjoKQEAgLTIwNywxOCArMjA3LDE3IEBACiAgICAgICAgICAgICBkZWYgZ2V0Q3VycmVudFRpbWUoKToKICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKIAotICAgIHNlcnZlciA9IFNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDgwMDApKQotICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQotICAgIHNlcnZlci5yZWdpc3Rlcl9tdWx0aWNhbGxfZnVuY3Rpb25zKCkKLSAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQotICAgIHRyeToKLSAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQotICAgICAgICBzeXMuZXhpdCgwKQorICAgIHdpdGggU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpIGFzIHNlcnZlcjoKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGxhbWJkYSB4LHk6IHgreSwgJ2FkZCcpCisgICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShFeGFtcGxlU2VydmljZSgpLCBhbGxvd19kb3R0ZWRfbmFtZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQorICAgICAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogVGhpcyBFeGFtcGxlU2VydmljZSBkZW1vIGNhbiBiZSBpbnZva2VkIGZyb20gdGhlIGNvbW1hbmQgbGluZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0IGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKaW5kZXggMWQ2NTI2Yy4uNDdiYTBiNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QKQEAgLTE0NywxMCArMTQ3LDEwIEBACiAgICAqY29tcHJlc3Npb24qIGlzIHRoZSBaSVAgY29tcHJlc3Npb24gbWV0aG9kIHRvIHVzZSB3aGVuIHdyaXRpbmcgdGhlIGFyY2hpdmUsCiAgICBhbmQgc2hvdWxkIGJlIDpjb25zdDpgWklQX1NUT1JFRGAsIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKICAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYDsgdW5yZWNvZ25pemVkCi0gICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBSdW50aW1lRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKKyAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKICAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYCBpcyBzcGVjaWZpZWQgYnV0IHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZQogICAgKDptb2Q6YHpsaWJgLCA6bW9kOmBiejJgIG9yIDptb2Q6YGx6bWFgKSBpcyBub3QgYXZhaWxhYmxlLCA6ZXhjOmBSdW50aW1lRXJyb3JgCi0gICBpcyBhbHNvIHJhaXNlZC4gVGhlIGRlZmF1bHQgaXMgOmNvbnN0OmBaSVBfU1RPUkVEYC4gIElmICphbGxvd1ppcDY0KiBpcworICAgaXMgcmFpc2VkLiBUaGUgZGVmYXVsdCBpcyA6Y29uc3Q6YFpJUF9TVE9SRURgLiAgSWYgKmFsbG93WmlwNjQqIGlzCiAgICBgYFRydWVgYCAodGhlIGRlZmF1bHQpIHppcGZpbGUgd2lsbCBjcmVhdGUgWklQIGZpbGVzIHRoYXQgdXNlIHRoZSBaSVA2NAogICAgZXh0ZW5zaW9ucyB3aGVuIHRoZSB6aXBmaWxlIGlzIGxhcmdlciB0aGFuIDIgR2lCLiBJZiBpdCBpcyAgZmFsc2UgOm1vZDpgemlwZmlsZWAKICAgIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIFpJUCBmaWxlIHdvdWxkIHJlcXVpcmUgWklQNjQgZXh0ZW5zaW9ucy4KQEAgLTE3OSw2ICsxNzksMTAgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHdyaXRpbmcgdG8gdW5zZWVrYWJsZSBzdHJlYW1zLgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIGBgJ3gnYGAgbW9kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByZXZpb3VzbHksIGEgcGxhaW4gOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkIGZvciB1bnJlY29nbml6ZWQKKyAgICAgIGNvbXByZXNzaW9uIHZhbHVlcy4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmNsb3NlKCkKIApAQCAtMjA1LDE4ICsyMDksMTIgQEAKICAgIFJldHVybiBhIGxpc3Qgb2YgYXJjaGl2ZSBtZW1iZXJzIGJ5IG5hbWUuCiAKIAotLi4gaW5kZXg6OgotICAgc2luZ2xlOiB1bml2ZXJzYWwgbmV3bGluZXM7IHppcGZpbGUuWmlwRmlsZS5vcGVuIG1ldGhvZAorLi4gbWV0aG9kOjogWmlwRmlsZS5vcGVuKG5hbWUsIG1vZGU9J3InLCBwd2Q9Tm9uZSwgKiwgZm9yY2VfemlwNjQ9RmFsc2UpCiAKLS4uIG1ldGhvZDo6IFppcEZpbGUub3BlbihuYW1lLCBtb2RlPSdyJywgcHdkPU5vbmUpCi0KLSAgIEV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSBhcyBhIGZpbGUtbGlrZSBvYmplY3QgKFppcEV4dEZpbGUpLiAqbmFtZSoKLSAgIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiBUaGUKLSAgICptb2RlKiBwYXJhbWV0ZXIsIGlmIGluY2x1ZGVkLCBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBgYCdyJ2BgICh0aGUKLSAgIGRlZmF1bHQpLCBgYCdVJ2BgLCBvciBgYCdyVSdgYC4gQ2hvb3NpbmcgYGAnVSdgYCBvciAgYGAnclUnYGAgd2lsbCBlbmFibGUKLSAgIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIHN1cHBvcnQgaW4gdGhlIHJlYWQtb25seSBvYmplY3QuICAqcHdkKiBpcyB0aGUKLSAgIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRlZCBmaWxlcy4gIENhbGxpbmcgIDptZXRoOmAub3BlbmAgb24gYSBjbG9zZWQKLSAgIFppcEZpbGUgd2lsbCByYWlzZSBhICA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgQWNjZXNzIGEgbWVtYmVyIG9mIHRoZSBhcmNoaXZlIGFzIGEgYmluYXJ5IGZpbGUtbGlrZSBvYmplY3QuICAqbmFtZSoKKyAgIGNhbiBiZSBlaXRoZXIgdGhlIG5hbWUgb2YgYSBmaWxlIHdpdGhpbiB0aGUgYXJjaGl2ZSBvciBhIDpjbGFzczpgWmlwSW5mb2AKKyAgIG9iamVjdC4gIFRoZSAqbW9kZSogcGFyYW1ldGVyLCBpZiBpbmNsdWRlZCwgbXVzdCBiZSBgYCdyJ2BgICh0aGUgZGVmYXVsdCkKKyAgIG9yIGBgJ3cnYGAuICAqcHdkKiBpcyB0aGUgcGFzc3dvcmQgdXNlZCB0byBkZWNyeXB0IGVuY3J5cHRlZCBaSVAgZmlsZXMuCiAKICAgIDptZXRoOmB+WmlwRmlsZS5vcGVuYCBpcyBhbHNvIGEgY29udGV4dCBtYW5hZ2VyIGFuZCB0aGVyZWZvcmUgc3VwcG9ydHMgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50OjoKQEAgLTIyNSwxNyArMjIzLDIzIEBACiAgICAgICAgICAgd2l0aCBteXppcC5vcGVuKCdlZ2dzLnR4dCcpIGFzIG15ZmlsZToKICAgICAgICAgICAgICAgcHJpbnQobXlmaWxlLnJlYWQoKSkKIAotICAgLi4gbm90ZTo6CisgICBXaXRoICptb2RlKiBgYCdyJ2BgIHRoZSBmaWxlLWxpa2Ugb2JqZWN0CisgICAoYGBaaXBFeHRGaWxlYGApIGlzIHJlYWQtb25seSBhbmQgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCwgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVgLAorICAgOm1ldGg6YH5pby5JT0Jhc2UucmVhZGxpbmVzYCwgOm1ldGg6YF9faXRlcl9fYCwKKyAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gLiAgVGhlc2Ugb2JqZWN0cyBjYW4gb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mCisgICB0aGUgWmlwRmlsZS4KIAotICAgICAgVGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgcmVhZC1vbmx5IGFuZCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6Ci0gICAgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgLCA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAsCi0gICAgICA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZXNgLCA6bWV0aDpgX19pdGVyX19gLAotICAgICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AuCisgICBXaXRoIGBgbW9kZT0ndydgYCwgYSB3cml0YWJsZSBmaWxlIGhhbmRsZSBpcyByZXR1cm5lZCwgd2hpY2ggc3VwcG9ydHMgdGhlCisgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLndyaXRlYCBtZXRob2QuICBXaGlsZSBhIHdyaXRhYmxlIGZpbGUgaGFuZGxlIGlzIG9wZW4sCisgICBhdHRlbXB0aW5nIHRvIHJlYWQgb3Igd3JpdGUgb3RoZXIgZmlsZXMgaW4gdGhlIFpJUCBmaWxlIHdpbGwgcmFpc2UgYQorICAgOmV4YzpgVmFsdWVFcnJvcmAuCiAKLSAgIC4uIG5vdGU6OgotCi0gICAgICBPYmplY3RzIHJldHVybmVkIGJ5IDptZXRoOmAub3BlbmAgY2FuIG9wZXJhdGUgaW5kZXBlbmRlbnRseSBvZiB0aGUKLSAgICAgIFppcEZpbGUuCisgICBXaGVuIHdyaXRpbmcgYSBmaWxlLCBpZiB0aGUgZmlsZSBzaXplIGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIGJ1dCBtYXkgZXhjZWVkCisgICAyIEdpQiwgcGFzcyBgYGZvcmNlX3ppcDY0PVRydWVgYCB0byBlbnN1cmUgdGhhdCB0aGUgaGVhZGVyIGZvcm1hdCBpcworICAgY2FwYWJsZSBvZiBzdXBwb3J0aW5nIGxhcmdlIGZpbGVzLiAgSWYgdGhlIGZpbGUgc2l6ZSBpcyBrbm93biBpbiBhZHZhbmNlLAorICAgY29uc3RydWN0IGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3Qgd2l0aCA6YXR0cjpgflppcEluZm8uZmlsZV9zaXplYCBzZXQsIGFuZAorICAgdXNlIHRoYXQgYXMgdGhlICpuYW1lKiBwYXJhbWV0ZXIuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yNDMsMTAgKzI0NywxOSBAQAogICAgICAgb3IgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdC4gIFlvdSB3aWxsIGFwcHJlY2lhdGUgdGhpcyB3aGVuIHRyeWluZyB0byByZWFkIGEKICAgICAgIFpJUCBmaWxlIHRoYXQgY29udGFpbnMgbWVtYmVycyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4KIAotICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy40IDMuNgotICAgICAgVGhlIGBgJ1UnYGAgb3IgIGBgJ3JVJ2BgIG1vZGUuICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJlbW92ZWQgc3VwcG9ydCBvZiBgYG1vZGU9J1UnYGAuICBVc2UgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBmb3IgcmVhZGluZwogICAgICAgY29tcHJlc3NlZCB0ZXh0IGZpbGVzIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6bWV0aDpgb3BlbmAgY2FuIG5vdyBiZSB1c2VkIHRvIHdyaXRlIGZpbGVzIGludG8gdGhlIGFyY2hpdmUgd2l0aCB0aGUKKyAgICAgIGBgbW9kZT0ndydgYCBvcHRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmAub3BlbmAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisgICAgICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmV4dHJhY3QobWVtYmVyLCBwYXRoPU5vbmUsIHB3ZD1Ob25lKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3Rvcnk7ICptZW1iZXIqCkBAIC0yNjcsNiArMjgwLDEwIEBACiAgICAgICBjaGFyYWN0ZXJzIChgYDpgYCwgYGA8YGAsIGBgPmBgLCBgYHxgYCwgYGAiYGAsIGBgP2BgLCBhbmQgYGAqYGApCiAgICAgICByZXBsYWNlZCBieSB1bmRlcnNjb3JlIChgYF9gYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmBleHRyYWN0YCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmV4dHJhY3RhbGwocGF0aD1Ob25lLCBtZW1iZXJzPU5vbmUsIHB3ZD1Ob25lKQogCkBAIC0yODMsNiArMzAwLDEwIEBACiAgICAgICBkb3RzIGBgIi4uImBgLiAgVGhpcyBtb2R1bGUgYXR0ZW1wdHMgdG8gcHJldmVudCB0aGF0LgogICAgICAgU2VlIDptZXRoOmBleHRyYWN0YCBub3RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgZXh0cmFjdGFsbGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS5wcmludGRpcigpCiAKQEAgLTMwMCwxOCArMzIxLDI0IEBACiAgICBmaWxlIGluIHRoZSBhcmNoaXZlLCBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIGZvcgogICAgcmVhZCBvciBhcHBlbmQuICpwd2QqIGlzIHRoZSBwYXNzd29yZCB1c2VkIGZvciBlbmNyeXB0ZWQgIGZpbGVzIGFuZCwgaWYgc3BlY2lmaWVkLAogICAgaXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBwYXNzd29yZCBzZXQgd2l0aCA6bWV0aDpgc2V0cGFzc3dvcmRgLiAgQ2FsbGluZwotICAgOm1ldGg6YHJlYWRgIG9uIGEgY2xvc2VkIFppcEZpbGUgIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLiBDYWxsaW5nCiAgICA6bWV0aDpgcmVhZGAgb24gYSBaaXBGaWxlIHRoYXQgdXNlcyBhIGNvbXByZXNzaW9uIG1ldGhvZCBvdGhlciB0aGFuCiAgICA6Y29uc3Q6YFpJUF9TVE9SRURgLCA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAsIDpjb25zdDpgWklQX0JaSVAyYCBvcgogICAgOmNvbnN0OmBaSVBfTFpNQWAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLiBBbiBlcnJvciB3aWxsIGFsc28KICAgIGJlIHJhaXNlZCBpZiB0aGUgY29ycmVzcG9uZGluZyBjb21wcmVzc2lvbiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHJlYWRgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLgorICAgICAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKIAogLi4gbWV0aG9kOjogWmlwRmlsZS50ZXN0emlwKCkKIAogICAgUmVhZCBhbGwgdGhlIGZpbGVzIGluIHRoZSBhcmNoaXZlIGFuZCBjaGVjayB0aGVpciBDUkMncyBhbmQgZmlsZSBoZWFkZXJzLgotICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBiYWQgZmlsZSwgb3IgZWxzZSByZXR1cm4gYGBOb25lYGAuIENhbGxpbmcKLSAgIDptZXRoOmB0ZXN0emlwYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBiYWQgZmlsZSwgb3IgZWxzZSByZXR1cm4gYGBOb25lYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmB0ZXN0ZmlsZWAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCiAKIAogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZShmaWxlbmFtZSwgYXJjbmFtZT1Ob25lLCBjb21wcmVzc190eXBlPU5vbmUpCkBAIC0zMjEsMTAgKzM0OCw3IEBACiAgICBsZXR0ZXIgYW5kIHdpdGggbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZCkuICBJZiBnaXZlbiwgKmNvbXByZXNzX3R5cGUqCiAgICBvdmVycmlkZXMgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmNvbXByZXNzaW9uKiBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIGZvcgogICAgdGhlIG5ldyBlbnRyeS4KLSAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKLSAgIDptZXRoOmB3cml0ZWAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyAgOm1ldGg6YHdyaXRlYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbiB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgLgogCiAgICAuLiBub3RlOjoKIApAQCAtMzQzLDE2ICszNjcsMTkgQEAKICAgICAgIElmIGBgYXJjbmFtZWBgIChvciBgYGZpbGVuYW1lYGAsIGlmIGBgYXJjbmFtZWBgIGlzICBub3QgZ2l2ZW4pIGNvbnRhaW5zIGEgbnVsbAogICAgICAgYnl0ZSwgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUgd2lsbCBiZSB0cnVuY2F0ZWQgYXQgdGhlIG51bGwgYnl0ZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHdyaXRlYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCBvcgorICAgICAgYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LAorICAgICAgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQuCisKKwogLi4gbWV0aG9kOjogWmlwRmlsZS53cml0ZXN0cih6aW5mb19vcl9hcmNuYW1lLCBkYXRhWywgY29tcHJlc3NfdHlwZV0pCiAKICAgIFdyaXRlIHRoZSBzdHJpbmcgKmRhdGEqIHRvIHRoZSBhcmNoaXZlOyAqemluZm9fb3JfYXJjbmFtZSogaXMgZWl0aGVyIHRoZSBmaWxlCiAgICBuYW1lIGl0IHdpbGwgYmUgZ2l2ZW4gaW4gdGhlIGFyY2hpdmUsIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZS4gIElmIGl0J3MKICAgIGFuIGluc3RhbmNlLCBhdCBsZWFzdCB0aGUgZmlsZW5hbWUsIGRhdGUsIGFuZCB0aW1lIG11c3QgYmUgZ2l2ZW4uICBJZiBpdCdzIGEKICAgIG5hbWUsIHRoZSBkYXRlIGFuZCB0aW1lIGlzIHNldCB0byB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lLgotICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCAtLSBjYWxsaW5nCi0gICA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIHdpbGwgcmFpc2UgYQotICAgOmV4YzpgUnVudGltZUVycm9yYC4gIENhbGxpbmcgOm1ldGg6YHdyaXRlc3RyYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwKLSAgIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYC4KKyAgIFRoZSBhcmNoaXZlIG11c3QgYmUgb3BlbmVkIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAuCiAKICAgIElmIGdpdmVuLCAqY29tcHJlc3NfdHlwZSogb3ZlcnJpZGVzIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlICpjb21wcmVzc2lvbioKICAgIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IgZm9yIHRoZSBuZXcgZW50cnksIG9yIGluIHRoZSAqemluZm9fb3JfYXJjbmFtZSoKQEAgLTM2OCw2ICszOTUsMTIgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgKmNvbXByZXNzX3R5cGUqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIG9yCisgICAgICBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksCisgICAgICBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiBUaGUgZm9sbG93aW5nIGRhdGEgYXR0cmlidXRlcyBhcmUgYWxzbyBhdmFpbGFibGU6CiAKIApAQCAtNDY1LDcgKzQ5OCwzMSBAQAogOm1ldGg6YC5pbmZvbGlzdGAgbWV0aG9kcyBvZiA6Y2xhc3M6YFppcEZpbGVgIG9iamVjdHMuICBFYWNoIG9iamVjdCBzdG9yZXMKIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIG1lbWJlciBvZiB0aGUgWklQIGFyY2hpdmUuCiAKLUluc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKK1RoZXJlIGlzIG9uZSBjbGFzc21ldGhvZCB0byBtYWtlIGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZSBmb3IgYSBmaWxlc3lzdGVtCitmaWxlOgorCisuLiBjbGFzc21ldGhvZDo6IFppcEluZm8uZnJvbV9maWxlKGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUpCisKKyAgIENvbnN0cnVjdCBhIDpjbGFzczpgWmlwSW5mb2AgaW5zdGFuY2UgZm9yIGEgZmlsZSBvbiB0aGUgZmlsZXN5c3RlbSwgaW4KKyAgIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgaXQgdG8gYSB6aXAgZmlsZS4KKworICAgKmZpbGVuYW1lKiBzaG91bGQgYmUgdGhlIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBvbiB0aGUgZmlsZXN5c3RlbS4KKworICAgSWYgKmFyY25hbWUqIGlzIHNwZWNpZmllZCwgaXQgaXMgdXNlZCBhcyB0aGUgbmFtZSB3aXRoaW4gdGhlIGFyY2hpdmUuCisgICBJZiAqYXJjbmFtZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5hbWUgd2lsbCBiZSB0aGUgc2FtZSBhcyAqZmlsZW5hbWUqLCBidXQKKyAgIHdpdGggYW55IGRyaXZlIGxldHRlciBhbmQgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKK0luc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKKworLi4gbWV0aG9kOjogWmlwSW5mby5pc19kaXIoKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhpcyBhcmNoaXZlIG1lbWJlciBpcyBhIGRpcmVjdG9yeS4KKworICAgVGhpcyB1c2VzIHRoZSBlbnRyeSdzIG5hbWU6IGRpcmVjdG9yaWVzIHNob3VsZCBhbHdheXMgZW5kIHdpdGggYGAvYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAKIC4uIGF0dHJpYnV0ZTo6IFppcEluZm8uZmlsZW5hbWUKQEAgLTU3NCw0ICs2MzEsNSBAQAogCiAgICBTaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZmlsZS4KIAorCiAuLiBfUEtaSVAgQXBwbGljYXRpb24gTm90ZTogaHR0cHM6Ly9wa3dhcmUuY2FjaGVmbHkubmV0L3dlYmRvY3MvY2FzZXN0dWRpZXMvQVBQTk9URS5UWFQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3psaWIucnN0IGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKaW5kZXggMWRlN2JhZS4uM2Q3NDJhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvemxpYi5yc3QKQEAgLTQ3LDE0ICs0NywxOSBAQAogICAgICAgcGxhdGZvcm1zLCB1c2UgYGBhZGxlcjMyKGRhdGEpICYgMHhmZmZmZmZmZmBgLgogCiAKLS4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YVssIGxldmVsXSkKKy4uIGZ1bmN0aW9uOjogY29tcHJlc3MoZGF0YSwgbGV2ZWw9LTEpCiAKICAgIENvbXByZXNzZXMgdGhlIGJ5dGVzIGluICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLgotICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgY29udHJvbGxpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOworICAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAwYGAgdG8gYGA5YGAgb3IgYGAtMWBgIGNvbnRyb2xsaW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsKICAgIGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwgYGA5YGAgaXMgc2xvd2VzdCBhbmQKLSAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDZgYC4KKyAgIHByb2R1Y2VzIHRoZSBtb3N0LiAgYGAwYGAgaXMgbm8gY29tcHJlc3Npb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYC0xYGAKKyAgIChaX0RFRkFVTFRfQ09NUFJFU1NJT04pLiAgWl9ERUZBVUxUX0NPTVBSRVNTSU9OIHJlcHJlc2VudHMgYSBkZWZhdWx0CisgICBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIGNvbXByZXNzaW9uIChjdXJyZW50bHkgZXF1aXZhbGVudCB0byBsZXZlbCA2KS4KICAgIFJhaXNlcyB0aGUgOmV4YzpgZXJyb3JgIGV4Y2VwdGlvbiBpZiBhbnkgZXJyb3Igb2NjdXJzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKmxldmVsKiBjYW4gbm93IGJlIHVzZWQgYXMgYSBrZXl3b3JkIHBhcmFtZXRlci4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzb2JqKGxldmVsPS0xLCBtZXRob2Q9REVGTEFURUQsIHdiaXRzPTE1LCBtZW1MZXZlbD04LCBzdHJhdGVneT1aX0RFRkFVTFRfU1RSQVRFR1lbLCB6ZGljdF0pCiAKQEAgLTEyNCw3ICsxMjksNyBAQAogICAgICAgcGxhdGZvcm1zLCB1c2UgYGBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGRlY29tcHJlc3MoZGF0YVssIHdiaXRzWywgYnVmc2l6ZV1dKQorLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGEsIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUpCiAKICAgIERlY29tcHJlc3NlcyB0aGUgYnl0ZXMgaW4gKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUKICAgIHVuY29tcHJlc3NlZCBkYXRhLiAgVGhlICp3Yml0cyogcGFyYW1ldGVyIGRlcGVuZHMgb24KQEAgLTE1OSwxNCArMTY0LDE2IEBACiAgICBXaGVuIGRlY29tcHJlc3NpbmcgYSBzdHJlYW0sIHRoZSB3aW5kb3cgc2l6ZSBtdXN0IG5vdCBiZSBzbWFsbGVyCiAgICB0aGFuIHRoZSBzaXplIG9yaWdpbmFsbHkgdXNlZCB0byBjb21wcmVzcyB0aGUgc3RyZWFtOyB1c2luZyBhIHRvby1zbWFsbAogICAgdmFsdWUgbWF5IHJlc3VsdCBpbiBhbiA6ZXhjOmBlcnJvcmAgZXhjZXB0aW9uLiBUaGUgZGVmYXVsdCAqd2JpdHMqIHZhbHVlCi0gICBpcyAxNSwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGxhcmdlc3Qgd2luZG93IHNpemUgYW5kIHJlcXVpcmVzIGEgemxpYgotICAgaGVhZGVyIGFuZCB0cmFpbGVyIHRvIGJlIGluY2x1ZGVkLgorICAgY29ycmVzcG9uZHMgdG8gdGhlIGxhcmdlc3Qgd2luZG93IHNpemUgYW5kIHJlcXVpcmVzIGEgemxpYiBoZWFkZXIgYW5kCisgICB0cmFpbGVyIHRvIGJlIGluY2x1ZGVkLgogCiAgICAqYnVmc2l6ZSogaXMgdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgYnVmZmVyIHVzZWQgdG8gaG9sZCBkZWNvbXByZXNzZWQgZGF0YS4gIElmCiAgICBtb3JlIHNwYWNlIGlzIHJlcXVpcmVkLCB0aGUgYnVmZmVyIHNpemUgd2lsbCBiZSBpbmNyZWFzZWQgYXMgbmVlZGVkLCBzbyB5b3UKICAgIGRvbid0IGhhdmUgdG8gZ2V0IHRoaXMgdmFsdWUgZXhhY3RseSByaWdodDsgdHVuaW5nIGl0IHdpbGwgb25seSBzYXZlIGEgZmV3IGNhbGxzCi0gICB0byA6YzpmdW5jOmBtYWxsb2NgLiAgVGhlIGRlZmF1bHQgc2l6ZSBpcyAxNjM4NC4KKyAgIHRvIDpjOmZ1bmM6YG1hbGxvY2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqd2JpdHMqIGFuZCAqYnVmc2l6ZSogY2FuIGJlIHVzZWQgYXMga2V5d29yZCBhcmd1bWVudHMuCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzc29iaih3Yml0cz0xNVssIHpkaWN0XSkKIApAQCAtMjUyLDcgKzI1OSw3IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBtZXRob2Q6OiBEZWNvbXByZXNzLmRlY29tcHJlc3MoZGF0YVssIG1heF9sZW5ndGhdKQorLi4gbWV0aG9kOjogRGVjb21wcmVzcy5kZWNvbXByZXNzKGRhdGEsIG1heF9sZW5ndGg9MCkKIAogICAgRGVjb21wcmVzcyAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSB1bmNvbXByZXNzZWQgZGF0YQogICAgY29ycmVzcG9uZGluZyB0byBhdCBsZWFzdCBwYXJ0IG9mIHRoZSBkYXRhIGluICpzdHJpbmcqLiAgVGhpcyBkYXRhIHNob3VsZCBiZQpAQCAtMjY0LDkgKzI3MSwxMSBAQAogICAgbm8gbG9uZ2VyIHRoYW4gKm1heF9sZW5ndGgqLiBUaGlzIG1heSBtZWFuIHRoYXQgbm90IGFsbCBvZiB0aGUgY29tcHJlc3NlZCBpbnB1dAogICAgY2FuIGJlIHByb2Nlc3NlZDsgYW5kIHVuY29uc3VtZWQgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgYXR0cmlidXRlCiAgICA6YXR0cjpgdW5jb25zdW1lZF90YWlsYC4gVGhpcyBieXRlc3RyaW5nIG11c3QgYmUgcGFzc2VkIHRvIGEgc3Vic2VxdWVudCBjYWxsIHRvCi0gICA6bWV0aDpgZGVjb21wcmVzc2AgaWYgZGVjb21wcmVzc2lvbiBpcyB0byBjb250aW51ZS4gIElmICptYXhfbGVuZ3RoKiBpcyBub3QKLSAgIHN1cHBsaWVkIHRoZW4gdGhlIHdob2xlIGlucHV0IGlzIGRlY29tcHJlc3NlZCwgYW5kIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgIGlzCi0gICBlbXB0eS4KKyAgIDptZXRoOmBkZWNvbXByZXNzYCBpZiBkZWNvbXByZXNzaW9uIGlzIHRvIGNvbnRpbnVlLiAgSWYgKm1heF9sZW5ndGgqIGlzIHplcm8KKyAgIHRoZW4gdGhlIHdob2xlIGlucHV0IGlzIGRlY29tcHJlc3NlZCwgYW5kIDphdHRyOmB1bmNvbnN1bWVkX3RhaWxgIGlzIGVtcHR5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKm1heF9sZW5ndGgqIGNhbiBiZSB1c2VkIGFzIGEga2V5d29yZCBhcmd1bWVudC4KIAogCiAuLiBtZXRob2Q6OiBEZWNvbXByZXNzLmZsdXNoKFtsZW5ndGhdKQpkaWZmIC0tZ2l0IGEvRG9jL21ha2UuYmF0IGIvRG9jL21ha2UuYmF0CmluZGV4IDVhYjgwODUuLmRhMWY4NzYgMTAwNjQ0Ci0tLSBhL0RvYy9tYWtlLmJhdAorKysgYi9Eb2MvbWFrZS5iYXQKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBnb3RvIGVuZA0KICkNCiANCi0lU1BISU5YQlVJTEQlIDI+IG51bA0KKyVTUEhJTlhCVUlMRCUgPm51bCAyPiBudWwNCiBpZiBlcnJvcmxldmVsIDkwMDkgKA0KICAgICBlY2hvLg0KICAgICBlY2hvLlRoZSAnc3BoaW54LWJ1aWxkJyBjb21tYW5kIHdhcyBub3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBTcGhpbngNCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdCBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CmluZGV4IDg4Yjk0ZWEuLjRmYzZhZjAgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0CkBAIC00NzEsMTAgKzQ3MSwxMCBAQAogICAgZGVjb3JhdG9yczogYGRlY29yYXRvcmArCiAgICBkZWNvcmF0b3I6ICJAIiBgZG90dGVkX25hbWVgIFsiKCIgW2Bhcmd1bWVudF9saXN0YCBbIiwiXV0gIikiXSBORVdMSU5FCiAgICBkb3R0ZWRfbmFtZTogYGlkZW50aWZpZXJgICgiLiIgYGlkZW50aWZpZXJgKSoKLSAgIHBhcmFtZXRlcl9saXN0OiAoYGRlZnBhcmFtZXRlcmAgIiwiKSoKLSAgICAgICAgICAgICAgICAgOiB8ICIqIiBbYHBhcmFtZXRlcmBdICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiICIqKiIgYHBhcmFtZXRlcmBdCi0gICAgICAgICAgICAgICAgIDogfCAiKioiIGBwYXJhbWV0ZXJgCi0gICAgICAgICAgICAgICAgIDogfCBgZGVmcGFyYW1ldGVyYCBbIiwiXSApCisgICBwYXJhbWV0ZXJfbGlzdDogYGRlZnBhcmFtZXRlcmAgKCIsIiBgZGVmcGFyYW1ldGVyYCkqIFsiLCIgW2BwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc2BdXQorICAgICAgICAgICAgICAgICA6IHwgYHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzYAorICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3M6ICIqIiBbYHBhcmFtZXRlcmBdICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiIFsiKioiIGBwYXJhbWV0ZXJgIFsiLCJdXV0KKyAgICAgICAgICAgICAgICAgICAgICAgICA6IHwgIioqIiBgcGFyYW1ldGVyYCBbIiwiXQogICAgcGFyYW1ldGVyOiBgaWRlbnRpZmllcmAgWyI6IiBgZXhwcmVzc2lvbmBdCiAgICBkZWZwYXJhbWV0ZXI6IGBwYXJhbWV0ZXJgIFsiPSIgYGV4cHJlc3Npb25gXQogICAgZnVuY25hbWU6IGBpZGVudGlmaWVyYApAQCAtNTQ2LDExICs1NDYsMTIgQEAKIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzIG1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyCiBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20ga2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdAogdmFsdWVzLiAgSWYgdGhlIGZvcm0gImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZQotcmVjZWl2aW5nIGFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmCi10aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcgZGljdGlvbmFyeQotcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXcgZW1wdHkgZGljdGlvbmFyeS4KLVBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kCi1tYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy4KK3JlY2VpdmluZyBhbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuCitJZiB0aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcKK29yZGVyZWQgbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhCituZXcgZW1wdHkgbWFwcGluZyBvZiB0aGUgc2FtZSB0eXBlLiAgUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yCisiYGAqaWRlbnRpZmllcmBgIiBhcmUga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZAordXNlZCBrZXl3b3JkIGFyZ3VtZW50cy4KIAogLi4gaW5kZXg6OiBwYWlyOiBmdW5jdGlvbjsgYW5ub3RhdGlvbnMKIApAQCAtNjMyLDYgKzYzMywxMSBAQAogZGljdGlvbmFyeS4gIFRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbAogbmFtZXNwYWNlLgogCitUaGUgb3JkZXIgaW4gd2hpY2ggYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MgYm9keSBpcyBwcmVzZXJ2ZWQKK2luIHRoZSBuZXcgY2xhc3MncyBgYF9fZGljdF9fYGAuICBOb3RlIHRoYXQgdGhpcyBpcyByZWxpYWJsZSBvbmx5IHJpZ2h0CithZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0IHdlcmUgZGVmaW5lZCB1c2luZwordGhlIGRlZmluaXRpb24gc3ludGF4LgorCiBDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIDpyZWY6YG1ldGFjbGFzc2VzIDxtZXRhY2xhc3Nlcz5gLgogCiBDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsIDo6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKaW5kZXggYjc2M2YxMC4uOTYxOWU1MyAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdApAQCAtNjg2LDEwICs2ODYsMjggQEAKICAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LCBlLmcuLAogICAgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC4KIAorICAgLi4gaW5kZXg6OgorICAgICAgc2luZ2xlOiBfX25hbWVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19kb2NfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19maWxlX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fYW5ub3RhdGlvbnNfXyAobW9kdWxlIGF0dHJpYnV0ZSkKKyAgICAgIHBhaXI6IG1vZHVsZTsgbmFtZXNwYWNlCisKKyAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOworICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKKyAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCAob3B0aW9uYWwpIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nCisgICA6dGVybTpgdmFyaWFibGUgYW5ub3RhdGlvbnMgPHZhcmlhYmxlIGFubm90YXRpb24+YCBjb2xsZWN0ZWQgZHVyaW5nIG1vZHVsZQorICAgYm9keSBleGVjdXRpb247IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCisgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKKyAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcworICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcworICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKKyAgIGxpYnJhcnkgZmlsZS4KKwogICAgLi4gaW5kZXg6OiBzaW5nbGU6IF9fZGljdF9fIChtb2R1bGUgYXR0cmlidXRlKQogCi0gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGFzIGEKLSAgIGRpY3Rpb25hcnkgb2JqZWN0LgorICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgaXMgdGhlIG1vZHVsZSdzCisgICBuYW1lc3BhY2UgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC4KIAogICAgLi4gaW1wbC1kZXRhaWw6OgogCkBAIC02OTgsMjEgKzcxNiw2IEBACiAgICAgICBkaWN0aW9uYXJ5IHN0aWxsIGhhcyBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5CiAgICAgICBvciBrZWVwIHRoZSBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LgogCi0gICAuLiBpbmRleDo6Ci0gICAgICBzaW5nbGU6IF9fbmFtZV9fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgc2luZ2xlOiBfX2RvY19fIChtb2R1bGUgYXR0cmlidXRlKQotICAgICAgc2luZ2xlOiBfX2ZpbGVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKLSAgICAgIHBhaXI6IG1vZHVsZTsgbmFtZXNwYWNlCi0KLSAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOwotICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKLSAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZQotICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gCi0gICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDIG1vZHVsZXMKLSAgIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMKLSAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkCi0gICBsaWJyYXJ5IGZpbGUuCi0KIEN1c3RvbSBjbGFzc2VzCiAgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWUgc2VjdGlvbgogICAgOnJlZjpgY2xhc3NgKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuCkBAIC03NjEsMTMgKzc2NCwxNyBAQAogICAgICAgc2luZ2xlOiBfX2RpY3RfXyAoY2xhc3MgYXR0cmlidXRlKQogICAgICAgc2luZ2xlOiBfX2Jhc2VzX18gKGNsYXNzIGF0dHJpYnV0ZSkKICAgICAgIHNpbmdsZTogX19kb2NfXyAoY2xhc3MgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2Fubm90YXRpb25zX18gKGNsYXNzIGF0dHJpYnV0ZSkKIAogICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiA6YXR0cjpgfmRlZmluaXRpb24uX19uYW1lX19gIGlzIHRoZSBjbGFzcyBuYW1lOyA6YXR0cjpgX19tb2R1bGVfX2AgaXMKICAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7IDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBpcyB0aGUKICAgIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3MncyBuYW1lc3BhY2U7IDphdHRyOmB+Y2xhc3MuX19iYXNlc19fYCBpcyBhCiAgICB0dXBsZSAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gdGhlCiAgICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7IDphdHRyOmBfX2RvY19fYCBpcyB0aGUKLSAgIGNsYXNzJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmIHVuZGVmaW5lZC4KKyAgIGNsYXNzJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmIHVuZGVmaW5lZDsKKyAgIDphdHRyOmBfX2Fubm90YXRpb25zX19gIChvcHRpb25hbCkgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcKKyAgIDp0ZXJtOmB2YXJpYWJsZSBhbm5vdGF0aW9ucyA8dmFyaWFibGUgYW5ub3RhdGlvbj5gIGNvbGxlY3RlZCBkdXJpbmcKKyAgIGNsYXNzIGJvZHkgZXhlY3V0aW9uLgogCiBDbGFzcyBpbnN0YW5jZXMKICAgIC4uIGluZGV4OjoKQEAgLTEwNjMsNiArMTA3MCwxMiBAQAogb3BlcmF0aW9uIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHkKIDpleGM6YEF0dHJpYnV0ZUVycm9yYCBvciA6ZXhjOmBUeXBlRXJyb3JgKS4KIAorU2V0dGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGBgTm9uZWBgIGluZGljYXRlcyB0aGF0IHRoZSBjb3JyZXNwb25kaW5nCitvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gIEZvciBleGFtcGxlLCBpZiBhIGNsYXNzIHNldHMKKzptZXRoOmBfX2l0ZXJfX2AgdG8gYGBOb25lYGAsIHRoZSBjbGFzcyBpcyBub3QgaXRlcmFibGUsIHNvIGNhbGxpbmcKKzpmdW5jOmBpdGVyYCBvbiBpdHMgaW5zdGFuY2VzIHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgICh3aXRob3V0CitmYWxsaW5nIGJhY2sgdG8gOm1ldGg6YF9fZ2V0aXRlbV9fYCkuIFsjXV8KKwogV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpcyBpbXBvcnRhbnQgdGhhdAogdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdCBtYWtlcyBzZW5zZSBmb3IgdGhlCiBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZSBzZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbApAQCAtMTIzMyw4ICsxMjQ2LDkgQEAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpCiAKLSAgIENhbGxlZCBieSB0aGUgOmZ1bmM6YGZvcm1hdGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZQotICAgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCBvZiBjbGFzcyA6Y2xhc3M6YHN0cmApIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIgorICAgQ2FsbGVkIGJ5IHRoZSA6ZnVuYzpgZm9ybWF0YCBidWlsdC1pbiBmdW5jdGlvbiwKKyAgIGFuZCBieSBleHRlbnNpb24sIGV2YWx1YXRpb24gb2YgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscworICAgPGYtc3RyaW5ncz5gIGFuZCB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiCiAgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzCiAgICBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBkZXNpcmVkLgogICAgVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMgdXAgdG8gdGhlIHR5cGUKQEAgLTE0OTEsNiArMTUwNSwxNCBAQAogICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyIGNsYXNzLgogCiAKKy4uIG1ldGhvZDo6IG9iamVjdC5fX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpCisKKyAgIENhbGxlZCBhdCB0aGUgdGltZSB0aGUgb3duaW5nIGNsYXNzICpvd25lciogaXMgY3JlYXRlZC4gVGhlCisgICBkZXNjcmlwdG9yIGhhcyBiZWVuIGFzc2lnbmVkIHRvICpuYW1lKi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogVGhlIGF0dHJpYnV0ZSA6YXR0cjpgX19vYmpjbGFzc19fYCBpcyBpbnRlcnByZXRlZCBieSB0aGUgOm1vZDpgaW5zcGVjdGAgbW9kdWxlCiBhcyBzcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzCiBhcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3MgYXR0cmlidXRlcykuCkBAIC0xNjI4LDExICsxNjUwLDU2IEBACiAqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZSAqX19zbG90c19fKi4KIAogCi0uLiBfbWV0YWNsYXNzZXM6CisuLiBfY2xhc3MtY3VzdG9taXphdGlvbjoKIAogQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK1doZW5ldmVyIGEgY2xhc3MgaW5oZXJpdHMgZnJvbSBhbm90aGVyIGNsYXNzLCAqX19pbml0X3N1YmNsYXNzX18qIGlzCitjYWxsZWQgb24gdGhhdCBjbGFzcy4gVGhpcyB3YXksIGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGNsYXNzZXMgd2hpY2gKK2NoYW5nZSB0aGUgYmVoYXZpb3Igb2Ygc3ViY2xhc3Nlcy4gVGhpcyBpcyBjbG9zZWx5IHJlbGF0ZWQgdG8gY2xhc3MKK2RlY29yYXRvcnMsIGJ1dCB3aGVyZSBjbGFzcyBkZWNvcmF0b3JzIG9ubHkgYWZmZWN0IHRoZSBzcGVjaWZpYyBjbGFzcyB0aGV5J3JlCithcHBsaWVkIHRvLCBgYF9faW5pdF9zdWJjbGFzc19fYGAgc29sZWx5IGFwcGxpZXMgdG8gZnV0dXJlIHN1YmNsYXNzZXMgb2YgdGhlCitjbGFzcyBkZWZpbmluZyB0aGUgbWV0aG9kLgorCisuLiBjbGFzc21ldGhvZDo6IG9iamVjdC5fX2luaXRfc3ViY2xhc3NfXyhjbHMpCisKKyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciB0aGUgY29udGFpbmluZyBjbGFzcyBpcyBzdWJjbGFzc2VkLgorICAgKmNscyogaXMgdGhlbiB0aGUgbmV3IHN1YmNsYXNzLiBJZiBkZWZpbmVkIGFzIGEgbm9ybWFsIGluc3RhbmNlIG1ldGhvZCwKKyAgIHRoaXMgbWV0aG9kIGlzIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgY2xhc3MgbWV0aG9kLgorCisgICBLZXl3b3JkIGFyZ3VtZW50cyB3aGljaCBhcmUgZ2l2ZW4gdG8gYSBuZXcgY2xhc3MgYXJlIHBhc3NlZCB0bworICAgdGhlIHBhcmVudCdzIGNsYXNzIGBgX19pbml0X3N1YmNsYXNzX19gYC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aAorICAgb3RoZXIgY2xhc3NlcyB1c2luZyBgYF9faW5pdF9zdWJjbGFzc19fYGAsIG9uZSBzaG91bGQgdGFrZSBvdXQgdGhlCisgICBuZWVkZWQga2V5d29yZCBhcmd1bWVudHMgYW5kIHBhc3MgdGhlIG90aGVycyBvdmVyIHRvIHRoZSBiYXNlCisgICBjbGFzcywgYXMgaW46OgorCisgICAgICAgY2xhc3MgUGhpbG9zb3BoZXI6CisgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsIGRlZmF1bHRfbmFtZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncykKKyAgICAgICAgICAgICAgIGNscy5kZWZhdWx0X25hbWUgPSBkZWZhdWx0X25hbWUKKworICAgICAgIGNsYXNzIEF1c3RyYWxpYW5QaGlsb3NvcGhlcihQaGlsb3NvcGhlciwgZGVmYXVsdF9uYW1lPSJCcnVjZSIpOgorICAgICAgICAgICBwYXNzCisKKyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGBgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fYGAgZG9lcworICAgbm90aGluZywgYnV0IHJhaXNlcyBhbiBlcnJvciBpZiBpdCBpcyBjYWxsZWQgd2l0aCBhbnkgYXJndW1lbnRzLgorCisgICAuLiBub3RlOjoKKworICAgICAgVGhlIG1ldGFjbGFzcyBoaW50IGBgbWV0YWNsYXNzYGAgaXMgY29uc3VtZWQgYnkgdGhlIHJlc3Qgb2YgdGhlIHR5cGUKKyAgICAgIG1hY2hpbmVyeSwgYW5kIGlzIG5ldmVyIHBhc3NlZCB0byBgYF9faW5pdF9zdWJjbGFzc19fYGAgaW1wbGVtZW50YXRpb25zLgorICAgICAgVGhlIGFjdHVhbCBtZXRhY2xhc3MgKHJhdGhlciB0aGFuIHRoZSBleHBsaWNpdCBoaW50KSBjYW4gYmUgYWNjZXNzZWQgYXMKKyAgICAgIGBgdHlwZShjbHMpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIF9tZXRhY2xhc3NlczoKKworTWV0YWNsYXNzZXMKK15eXl5eXl5eXl5eCisKIEJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIDpmdW5jOmB0eXBlYC4gVGhlIGNsYXNzIGJvZHkgaXMKIGV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0byB0aGUKIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSlgYC4KQEAgLTE2OTAsNyArMTc1Nyw3IEBACiBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbikuCiAKIElmIHRoZSBtZXRhY2xhc3MgaGFzIG5vIGBgX19wcmVwYXJlX19gYCBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzIG5hbWVzcGFjZQotaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgOmZ1bmM6YGRpY3RgIGluc3RhbmNlLgoraXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgb3JkZXJlZCBtYXBwaW5nLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMTczNCw5ICsxODAxLDkgQEAKIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuCiAKIFdoZW4gYSBuZXcgY2xhc3MgaXMgY3JlYXRlZCBieSBgYHR5cGUuX19uZXdfX2BgLCB0aGUgb2JqZWN0IHByb3ZpZGVkIGFzIHRoZQotbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBzdGFuZGFyZCBQeXRob24gZGljdGlvbmFyeSBhbmQgdGhlIG9yaWdpbmFsCi1vYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgYmVjb21lcyB0aGUgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGF0dHJpYnV0ZQotb2YgdGhlIGNsYXNzIG9iamVjdC4KK25hbWVzcGFjZSBwYXJhbWV0ZXIgaXMgY29waWVkIHRvIGEgbmV3IG9yZGVyZWQgbWFwcGluZyBhbmQgdGhlIG9yaWdpbmFsCitvYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgaXMgd3JhcHBlZCBpbiBhIHJlYWQtb25seSBwcm94eSwgd2hpY2gKK2JlY29tZXMgdGhlIDphdHRyOmB+b2JqZWN0Ll9fZGljdF9fYCBhdHRyaWJ1dGUgb2YgdGhlIGNsYXNzIG9iamVjdC4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTIwNTksNyArMjEyNiw3IEBACiAgICAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGBAYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLCA6ZnVuYzpgZGl2bW9kYCwKICAgIDpmdW5jOmBwb3dgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsIGBgfGBgKSB3aXRoIHJlZmxlY3RlZAogICAgKHN3YXBwZWQpIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMKLSAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQKKyAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBbI11fIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudAogICAgdHlwZXMuIFsjXV8gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggLSB5YGAsIHdoZXJlICp5KiBpcwogICAgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiA6bWV0aDpgX19yc3ViX19gIG1ldGhvZCwgYGB5Ll9fcnN1Yl9fKHgpYGAKICAgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnMgKk5vdEltcGxlbWVudGVkKi4KQEAgLTI0NzUsNiArMjU0MiwxNyBAQAogICAgY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuJ3QgYSBnb29kIGlkZWEgdGhvdWdoLCBzaW5jZSBpdCBjYW4KICAgIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmIGl0IGlzIGhhbmRsZWQgaW5jb3JyZWN0bHkuCiAKKy4uIFsjXSBUaGUgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9faXRlcl9fYCwgOm1ldGg6YF9fcmV2ZXJzZWRfX2AsIGFuZAorICAgOm1ldGg6YF9fY29udGFpbnNfX2AgbWV0aG9kcyBoYXZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHRoaXM7IG90aGVycworICAgd2lsbCBzdGlsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAsIGJ1dCBtYXkgZG8gc28gYnkgcmVseWluZyBvbgorICAgdGhlIGJlaGF2aW9yIHRoYXQgYGBOb25lYGAgaXMgbm90IGNhbGxhYmxlLgorCisuLiBbI10gIkRvZXMgbm90IHN1cHBvcnQiIGhlcmUgbWVhbnMgdGhhdCB0aGUgY2xhc3MgaGFzIG5vIHN1Y2ggbWV0aG9kLCBvcgorICAgdGhlIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYC4gIERvIG5vdCBzZXQgdGhlIG1ldGhvZCB0bworICAgYGBOb25lYGAgaWYgeW91IHdhbnQgdG8gZm9yY2UgZmFsbGJhY2sgdG8gdGhlIHJpZ2h0IG9wZXJhbmQncyByZWZsZWN0ZWQKKyAgIG1ldGhvZC0tdGhhdCB3aWxsIGluc3RlYWQgaGF2ZSB0aGUgb3Bwb3NpdGUgZWZmZWN0IG9mIGV4cGxpY2l0bHkKKyAgICpibG9ja2luZyogc3VjaCBmYWxsYmFjay4KKwogLi4gWyNdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1yZWZsZWN0ZWQgbWV0aG9kCiAgICAoc3VjaCBhcyA6bWV0aDpgX19hZGRfX2ApIGZhaWxzIHRoZSBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5IHRoZQogICAgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0IGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CmluZGV4IDY0MzAyYjguLjVlMmMxYzggMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2ltcG9ydC5yc3QKQEAgLTM2LDcgKzM2LDcgQEAKIAogV2hlbiBhIG1vZHVsZSBpcyBmaXJzdCBpbXBvcnRlZCwgUHl0aG9uIHNlYXJjaGVzIGZvciB0aGUgbW9kdWxlIGFuZCBpZiBmb3VuZCwKIGl0IGNyZWF0ZXMgYSBtb2R1bGUgb2JqZWN0IFsjZm5tb11fLCBpbml0aWFsaXppbmcgaXQuICBJZiB0aGUgbmFtZWQgbW9kdWxlCi1jYW5ub3QgYmUgZm91bmQsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBQeXRob24gaW1wbGVtZW50cyB2YXJpb3VzCitjYW5ub3QgYmUgZm91bmQsIGFuIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIFB5dGhvbiBpbXBsZW1lbnRzIHZhcmlvdXMKIHN0cmF0ZWdpZXMgdG8gc2VhcmNoIGZvciB0aGUgbmFtZWQgbW9kdWxlIHdoZW4gdGhlIGltcG9ydCBtYWNoaW5lcnkgaXMKIGludm9rZWQuICBUaGVzZSBzdHJhdGVnaWVzIGNhbiBiZSBtb2RpZmllZCBhbmQgZXh0ZW5kZWQgYnkgdXNpbmcgdmFyaW91cyBob29rcwogZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9ucyBiZWxvdy4KQEAgLTE2Nyw3ICsxNjcsNyBAQAogVGhpcyBuYW1lIHdpbGwgYmUgdXNlZCBpbiB2YXJpb3VzIHBoYXNlcyBvZiB0aGUgaW1wb3J0IHNlYXJjaCwgYW5kIGl0IG1heSBiZQogdGhlIGRvdHRlZCBwYXRoIHRvIGEgc3VibW9kdWxlLCBlLmcuIGBgZm9vLmJhci5iYXpgYC4gIEluIHRoaXMgY2FzZSwgUHl0aG9uCiBmaXJzdCB0cmllcyB0byBpbXBvcnQgYGBmb29gYCwgdGhlbiBgYGZvby5iYXJgYCwgYW5kIGZpbmFsbHkgYGBmb28uYmFyLmJhemBgLgotSWYgYW55IG9mIHRoZSBpbnRlcm1lZGlhdGUgaW1wb3J0cyBmYWlsLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorSWYgYW55IG9mIHRoZSBpbnRlcm1lZGlhdGUgaW1wb3J0cyBmYWlsLCBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuCiAKIAogVGhlIG1vZHVsZSBjYWNoZQpAQCAtMTg2LDcgKzE4Niw3IEBACiBEdXJpbmcgaW1wb3J0LCB0aGUgbW9kdWxlIG5hbWUgaXMgbG9va2VkIHVwIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgYW5kIGlmCiBwcmVzZW50LCB0aGUgYXNzb2NpYXRlZCB2YWx1ZSBpcyB0aGUgbW9kdWxlIHNhdGlzZnlpbmcgdGhlIGltcG9ydCwgYW5kIHRoZQogcHJvY2VzcyBjb21wbGV0ZXMuICBIb3dldmVyLCBpZiB0aGUgdmFsdWUgaXMgYGBOb25lYGAsIHRoZW4gYW4KLTpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgbWlzc2luZywgUHl0aG9uIHdpbGwKKzpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBtaXNzaW5nLCBQeXRob24gd2lsbAogY29udGludWUgc2VhcmNoaW5nIGZvciB0aGUgbW9kdWxlLgogCiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGlzIHdyaXRhYmxlLiAgRGVsZXRpbmcgYSBrZXkgbWF5IG5vdCBkZXN0cm95IHRoZQpAQCAtMTk0LDcgKzE5NCw3IEBACiBidXQgaXQgd2lsbCBpbnZhbGlkYXRlIHRoZSBjYWNoZSBlbnRyeSBmb3IgdGhlIG5hbWVkIG1vZHVsZSwgY2F1c2luZwogUHl0aG9uIHRvIHNlYXJjaCBhbmV3IGZvciB0aGUgbmFtZWQgbW9kdWxlIHVwb24gaXRzIG5leHQKIGltcG9ydC4gVGhlIGtleSBjYW4gYWxzbyBiZSBhc3NpZ25lZCB0byBgYE5vbmVgYCwgZm9yY2luZyB0aGUgbmV4dCBpbXBvcnQKLW9mIHRoZSBtb2R1bGUgdG8gcmVzdWx0IGluIGFuIDpleGM6YEltcG9ydEVycm9yYC4KK29mIHRoZSBtb2R1bGUgdG8gcmVzdWx0IGluIGFuIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgLgogCiBCZXdhcmUgdGhvdWdoLCBhcyBpZiB5b3Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgbW9kdWxlIG9iamVjdCwKIGludmFsaWRhdGUgaXRzIGNhY2hlIGVudHJ5IGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIGFuZCB0aGVuIHJlLWltcG9ydCB0aGUKQEAgLTI4OCw4ICsyODgsOCBAQAogSWYgdGhlIG1ldGEgcGF0aCBmaW5kZXIga25vd3MgaG93IHRvIGhhbmRsZSB0aGUgbmFtZWQgbW9kdWxlLCBpdCByZXR1cm5zIGEKIHNwZWMgb2JqZWN0LiAgSWYgaXQgY2Fubm90IGhhbmRsZSB0aGUgbmFtZWQgbW9kdWxlLCBpdCByZXR1cm5zIGBgTm9uZWBgLiAgSWYKIDpkYXRhOmBzeXMubWV0YV9wYXRoYCBwcm9jZXNzaW5nIHJlYWNoZXMgdGhlIGVuZCBvZiBpdHMgbGlzdCB3aXRob3V0IHJldHVybmluZwotYSBzcGVjLCB0aGVuIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBBbnkgb3RoZXIgZXhjZXB0aW9ucyByYWlzZWQKLWFyZSBzaW1wbHkgcHJvcGFnYXRlZCB1cCwgYWJvcnRpbmcgdGhlIGltcG9ydCBwcm9jZXNzLgorYSBzcGVjLCB0aGVuIGEgOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgaXMgcmFpc2VkLiAgQW55IG90aGVyIGV4Y2VwdGlvbnMKK3JhaXNlZCBhcmUgc2ltcGx5IHByb3BhZ2F0ZWQgdXAsIGFib3J0aW5nIHRoZSBpbXBvcnQgcHJvY2Vzcy4KIAogVGhlIDptZXRoOmB+aW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlci5maW5kX3NwZWMoKWAgbWV0aG9kIG9mIG1ldGEgcGF0aAogZmluZGVycyBpcyBjYWxsZWQgd2l0aCB0d28gb3IgdGhyZWUgYXJndW1lbnRzLiAgVGhlIGZpcnN0IGlzIHRoZSBmdWxseQpAQCAtMjk4LDkgKzI5OCw5IEBACiB0b3AtbGV2ZWwgbW9kdWxlcywgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBgYE5vbmVgYCwgYnV0IGZvciBzdWJtb2R1bGVzIG9yCiBzdWJwYWNrYWdlcywgdGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgdGhlIHBhcmVudCBwYWNrYWdlJ3MKIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuIElmIHRoZSBhcHByb3ByaWF0ZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlIGNhbm5vdAotYmUgYWNjZXNzZWQsIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBUaGUgdGhpcmQgYXJndW1lbnQgaXMgYW4KLWV4aXN0aW5nIG1vZHVsZSBvYmplY3QgdGhhdCB3aWxsIGJlIHRoZSB0YXJnZXQgb2YgbG9hZGluZyBsYXRlci4gIFRoZQotaW1wb3J0IHN5c3RlbSBwYXNzZXMgaW4gYSB0YXJnZXQgbW9kdWxlIG9ubHkgZHVyaW5nIHJlbG9hZC4KK2JlIGFjY2Vzc2VkLCBhbiA6ZXhjOmBNb2R1bGVOb3RGb3VuZEVycm9yYCBpcyByYWlzZWQuICBUaGUgdGhpcmQgYXJndW1lbnQKK2lzIGFuIGV4aXN0aW5nIG1vZHVsZSBvYmplY3QgdGhhdCB3aWxsIGJlIHRoZSB0YXJnZXQgb2YgbG9hZGluZyBsYXRlci4KK1RoZSBpbXBvcnQgc3lzdGVtIHBhc3NlcyBpbiBhIHRhcmdldCBtb2R1bGUgb25seSBkdXJpbmcgcmVsb2FkLgogCiBUaGUgbWV0YSBwYXRoIG1heSBiZSB0cmF2ZXJzZWQgbXVsdGlwbGUgdGltZXMgZm9yIGEgc2luZ2xlIGltcG9ydCByZXF1ZXN0LgogRm9yIGV4YW1wbGUsIGFzc3VtaW5nIG5vbmUgb2YgdGhlIG1vZHVsZXMgaW52b2x2ZWQgaGFzIGFscmVhZHkgYmVlbiBjYWNoZWQsCkBAIC01NTQsMTkgKzU1NCwzMCBAQAogICAgZGV0YWlscy4KIAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBpbnN0ZWFkIG9mIGBgX19uYW1lX19gYCB0byBjYWxjdWxhdGUgZXhwbGljaXQKLSAgIHJlbGF0aXZlIGltcG9ydHMgZm9yIG1haW4gbW9kdWxlcywgYXMgZGVmaW5lZCBpbiA6cGVwOmAzNjZgLgorICAgcmVsYXRpdmUgaW1wb3J0cyBmb3IgbWFpbiBtb2R1bGVzLCBhcyBkZWZpbmVkIGluIDpwZXA6YDM2NmAuIEl0IGlzCisgICBleHBlY3RlZCB0byBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIGBgX19zcGVjX18ucGFyZW50YGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgdmFsdWUgb2YgYGBfX3BhY2thZ2VfX2BgIGlzIGV4cGVjdGVkIHRvIGJlIHRoZSBzYW1lIGFzCisgICAgICBgYF9fc3BlY19fLnBhcmVudGBgLgogCiAuLiBhdHRyaWJ1dGU6OiBfX3NwZWNfXwogCiAgICBUaGUgYGBfX3NwZWNfX2BgIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0aGUgbW9kdWxlIHNwZWMgdGhhdCB3YXMKLSAgIHVzZWQgd2hlbiBpbXBvcnRpbmcgdGhlIG1vZHVsZS4gIFRoaXMgaXMgdXNlZCBwcmltYXJpbHkgZm9yCi0gICBpbnRyb3NwZWN0aW9uIGFuZCBkdXJpbmcgcmVsb2FkaW5nLiAgU2V0dGluZyBgYF9fc3BlY19fYGAKKyAgIHVzZWQgd2hlbiBpbXBvcnRpbmcgdGhlIG1vZHVsZS4gU2V0dGluZyBgYF9fc3BlY19fYGAKICAgIGFwcHJvcHJpYXRlbHkgYXBwbGllcyBlcXVhbGx5IHRvIDpyZWY6YG1vZHVsZXMgaW5pdGlhbGl6ZWQgZHVyaW5nCiAgICBpbnRlcnByZXRlciBzdGFydHVwIDxwcm9ncmFtcz5gLiAgVGhlIG9uZSBleGNlcHRpb24gaXMgYGBfX21haW5fX2BgLAogICAgd2hlcmUgYGBfX3NwZWNfX2BgIGlzIDpyZWY6YHNldCB0byBOb25lIGluIHNvbWUgY2FzZXMgPG1haW5fc3BlYz5gLgogCisgICBXaGVuIGBgX19wYWNrYWdlX19gYCBpcyBub3QgZGVmaW5lZCwgYGBfX3NwZWNfXy5wYXJlbnRgYCBpcyB1c2VkIGFzCisgICBhIGZhbGxiYWNrLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgX19zcGVjX18ucGFyZW50YGAgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIHdoZW4gYGBfX3BhY2thZ2VfX2BgIGlzCisgICAgICBub3QgZGVmaW5lZC4KKwogLi4gYXR0cmlidXRlOjogX19wYXRoX18KIAogICAgSWYgdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UgKGVpdGhlciByZWd1bGFyIG9yIG5hbWVzcGFjZSksIHRoZSBtb2R1bGUKQEAgLTg3Niw3ICs4ODcsNyBAQAogCiBUbyBzZWxlY3RpdmVseSBwcmV2ZW50IGltcG9ydCBvZiBzb21lIG1vZHVsZXMgZnJvbSBhIGhvb2sgZWFybHkgb24gdGhlCiBtZXRhIHBhdGggKHJhdGhlciB0aGFuIGRpc2FibGluZyB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbSBlbnRpcmVseSksCi1pdCBpcyBzdWZmaWNpZW50IHRvIHJhaXNlIDpleGM6YEltcG9ydEVycm9yYCBkaXJlY3RseSBmcm9tCitpdCBpcyBzdWZmaWNpZW50IHRvIHJhaXNlIDpleGM6YE1vZHVsZU5vRm91bmRFcnJvcmAgZGlyZWN0bHkgZnJvbQogOm1ldGg6YH5pbXBvcnRsaWIuYWJjLk1ldGFQYXRoRmluZGVyLmZpbmRfc3BlY2AgaW5zdGVhZCBvZiByZXR1cm5pbmcKIGBgTm9uZWBgLiBUaGUgbGF0dGVyIGluZGljYXRlcyB0aGF0IHRoZSBtZXRhIHBhdGggc2VhcmNoIHNob3VsZCBjb250aW51ZSwKIHdoaWxlIHJhaXNpbmcgYW4gZXhjZXB0aW9uIHRlcm1pbmF0ZXMgaXQgaW1tZWRpYXRlbHkuCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0IGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAppbmRleCAzN2YyNWYxLi5hN2M2YTY4IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKQEAgLTQwNSw3ICs0MDUsOCBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBzdHJpbmdsaXRlcmFsOiBbYHN0cmluZ3ByZWZpeGBdKGBzaG9ydHN0cmluZ2AgfCBgbG9uZ3N0cmluZ2ApCi0gICBzdHJpbmdwcmVmaXg6ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIgorICAgc3RyaW5ncHJlZml4OiAiciIgfCAidSIgfCAiUiIgfCAiVSIgfCAiZiIgfCAiRiIKKyAgICAgICAgICAgICAgIDogfCAiZnIiIHwgIkZyIiB8ICJmUiIgfCAiRlIiIHwgInJmIiB8ICJyRiIgfCAiUmYiIHwgIlJGIgogICAgc2hvcnRzdHJpbmc6ICInIiBgc2hvcnRzdHJpbmdpdGVtYCogIiciIHwgJyInIGBzaG9ydHN0cmluZ2l0ZW1gKiAnIicKICAgIGxvbmdzdHJpbmc6ICInJyciIGBsb25nc3RyaW5naXRlbWAqICInJyciIHwgJyIiIicgYGxvbmdzdHJpbmdpdGVtYCogJyIiIicKICAgIHNob3J0c3RyaW5naXRlbTogYHNob3J0c3RyaW5nY2hhcmAgfCBgc3RyaW5nZXNjYXBlc2VxYApAQCAtNDY0LDYgKzQ2NSwxMSBAQAogICAgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mIGR1YWwgUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4KICAgIFNlZSA6cGVwOmA0MTRgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCitBIHN0cmluZyBsaXRlcmFsIHdpdGggYGAnZidgYCBvciBgYCdGJ2BgIGluIGl0cyBwcmVmaXggaXMgYQorOmRmbjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsYDsgc2VlIDpyZWY6YGYtc3RyaW5nc2AuICBUaGUgYGAnZidgYCBtYXkgYmUKK2NvbWJpbmVkIHdpdGggYGAncidgYCwgYnV0IG5vdCB3aXRoIGBgJ2InYGAgb3IgYGAndSdgYCwgdGhlcmVmb3JlIHJhdworZm9ybWF0dGVkIHN0cmluZ3MgYXJlIHBvc3NpYmxlLCBidXQgZm9ybWF0dGVkIGJ5dGVzIGxpdGVyYWxzIGFyZSBub3QuCisKIEluIHRyaXBsZS1xdW90ZWQgbGl0ZXJhbHMsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkIChhbmQgYXJlCiByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3cgdGVybWluYXRlIHRoZSBsaXRlcmFsLiAgKEEKICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvIG9wZW4gdGhlIGxpdGVyYWwsIGkuZS4gZWl0aGVyIGBgJ2BgIG9yIGBgImBgLikKQEAgLTU1NCw2ICs1NjAsMTAgQEAKIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mCiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXMgbGl0ZXJhbHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVbnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBwcm9kdWNlIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgSW4KKyAgICAgIHNvbWUgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uIHRoZXkgd2lsbCBiZSBhIFN5bnRheEVycm9yLgorCiBFdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlCiBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgYGByIlwiImBgIGlzIGEgdmFsaWQgc3RyaW5nCiBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhIGRvdWJsZSBxdW90ZTsgYGByIlwiYGAKQEAgLTU4Myw3ICs1OTMsMTA2IEBACiBOb3RlIHRoYXQgdGhpcyBmZWF0dXJlIGlzIGRlZmluZWQgYXQgdGhlIHN5bnRhY3RpY2FsIGxldmVsLCBidXQgaW1wbGVtZW50ZWQgYXQKIGNvbXBpbGUgdGltZS4gIFRoZSAnKycgb3BlcmF0b3IgbXVzdCBiZSB1c2VkIHRvIGNvbmNhdGVuYXRlIHN0cmluZyBleHByZXNzaW9ucwogYXQgcnVuIHRpbWUuICBBbHNvIG5vdGUgdGhhdCBsaXRlcmFsIGNvbmNhdGVuYXRpb24gY2FuIHVzZSBkaWZmZXJlbnQgcXVvdGluZwotc3R5bGVzIGZvciBlYWNoIGNvbXBvbmVudCAoZXZlbiBtaXhpbmcgcmF3IHN0cmluZ3MgYW5kIHRyaXBsZSBxdW90ZWQgc3RyaW5ncykuCitzdHlsZXMgZm9yIGVhY2ggY29tcG9uZW50IChldmVuIG1peGluZyByYXcgc3RyaW5ncyBhbmQgdHJpcGxlIHF1b3RlZCBzdHJpbmdzKSwKK2FuZCBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIG1heSBiZSBjb25jYXRlbmF0ZWQgd2l0aCBwbGFpbiBzdHJpbmcgbGl0ZXJhbHMuCisKKworLi4gaW5kZXg6OgorICAgc2luZ2xlOiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWwKKyAgIHNpbmdsZTogaW50ZXJwb2xhdGVkIHN0cmluZyBsaXRlcmFsCisgICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0dGVkIGxpdGVyYWwKKyAgIHNpbmdsZTogc3RyaW5nOyBpbnRlcnBvbGF0ZWQgbGl0ZXJhbAorICAgc2luZ2xlOiBmLXN0cmluZworLi4gX2Ytc3RyaW5nczoKKworRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworQSA6ZGZuOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxgIG9yIDpkZm46YGYtc3RyaW5nYCBpcyBhIHN0cmluZyBsaXRlcmFsCit0aGF0IGlzIHByZWZpeGVkIHdpdGggYGAnZidgYCBvciBgYCdGJ2BgLiAgVGhlc2Ugc3RyaW5ncyBtYXkgY29udGFpbgorcmVwbGFjZW1lbnQgZmllbGRzLCB3aGljaCBhcmUgZXhwcmVzc2lvbnMgZGVsaW1pdGVkIGJ5IGN1cmx5IGJyYWNlcyBgYHt9YGAuCitXaGlsZSBvdGhlciBzdHJpbmcgbGl0ZXJhbHMgYWx3YXlzIGhhdmUgYSBjb25zdGFudCB2YWx1ZSwgZm9ybWF0dGVkIHN0cmluZ3MKK2FyZSByZWFsbHkgZXhwcmVzc2lvbnMgZXZhbHVhdGVkIGF0IHJ1biB0aW1lLgorCitFc2NhcGUgc2VxdWVuY2VzIGFyZSBkZWNvZGVkIGxpa2UgaW4gb3JkaW5hcnkgc3RyaW5nIGxpdGVyYWxzIChleGNlcHQgd2hlbgorYSBsaXRlcmFsIGlzIGFsc28gbWFya2VkIGFzIGEgcmF3IHN0cmluZykuICBBZnRlciBkZWNvZGluZywgdGhlIGdyYW1tYXIKK2ZvciB0aGUgY29udGVudHMgb2YgdGhlIHN0cmluZyBpczoKKworLi4gcHJvZHVjdGlvbmxpc3Q6OgorICAgZl9zdHJpbmc6IChgbGl0ZXJhbF9jaGFyYCB8ICJ7eyIgfCAifX0iIHwgYHJlcGxhY2VtZW50X2ZpZWxkYCkqCisgICByZXBsYWNlbWVudF9maWVsZDogInsiIGBmX2V4cHJlc3Npb25gIFsiISIgYGNvbnZlcnNpb25gXSBbIjoiIGBmb3JtYXRfc3BlY2BdICJ9IgorICAgZl9leHByZXNzaW9uOiAoYGNvbmRpdGlvbmFsX2V4cHJlc3Npb25gIHwgIioiIGBvcl9leHByYCkKKyAgICAgICAgICAgICAgIDogICAoIiwiIGBjb25kaXRpb25hbF9leHByZXNzaW9uYCB8ICIsIiAiKiIgYG9yX2V4cHJgKSogWyIsIl0KKyAgICAgICAgICAgICAgIDogfCBgeWllbGRfZXhwcmVzc2lvbmAKKyAgIGNvbnZlcnNpb246ICJzIiB8ICJyIiB8ICJhIgorICAgZm9ybWF0X3NwZWM6IChgbGl0ZXJhbF9jaGFyYCB8IE5VTEwgfCBgcmVwbGFjZW1lbnRfZmllbGRgKSoKKyAgIGxpdGVyYWxfY2hhcjogPGFueSBjb2RlIHBvaW50IGV4Y2VwdCAieyIsICJ9IiBvciBOVUxMPgorCitUaGUgcGFydHMgb2YgdGhlIHN0cmluZyBvdXRzaWRlIGN1cmx5IGJyYWNlcyBhcmUgdHJlYXRlZCBsaXRlcmFsbHksCitleGNlcHQgdGhhdCBhbnkgZG91YmxlZCBjdXJseSBicmFjZXMgYGAne3snYGAgb3IgYGAnfX0nYGAgYXJlIHJlcGxhY2VkCit3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHNpbmdsZSBjdXJseSBicmFjZS4gIEEgc2luZ2xlIG9wZW5pbmcgY3VybHkKK2JyYWNrZXQgYGAneydgYCBtYXJrcyBhIHJlcGxhY2VtZW50IGZpZWxkLCB3aGljaCBzdGFydHMgd2l0aCBhCitQeXRob24gZXhwcmVzc2lvbi4gIEFmdGVyIHRoZSBleHByZXNzaW9uLCB0aGVyZSBtYXkgYmUgYSBjb252ZXJzaW9uIGZpZWxkLAoraW50cm9kdWNlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCBgYCchJ2BgLiAgQSBmb3JtYXQgc3BlY2lmaWVyIG1heSBhbHNvCitiZSBhcHBlbmRlZCwgaW50cm9kdWNlZCBieSBhIGNvbG9uIGBgJzonYGAuICBBIHJlcGxhY2VtZW50IGZpZWxkIGVuZHMKK3dpdGggYSBjbG9zaW5nIGN1cmx5IGJyYWNrZXQgYGAnfSdgYC4KKworRXhwcmVzc2lvbnMgaW4gZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhcmUgdHJlYXRlZCBsaWtlIHJlZ3VsYXIKK1B5dGhvbiBleHByZXNzaW9ucyBzdXJyb3VuZGVkIGJ5IHBhcmVudGhlc2VzLCB3aXRoIGEgZmV3IGV4Y2VwdGlvbnMuCitBbiBlbXB0eSBleHByZXNzaW9uIGlzIG5vdCBhbGxvd2VkLCBhbmQgYSA6a2V5d29yZDpgbGFtYmRhYCBleHByZXNzaW9uCittdXN0IGJlIHN1cnJvdW5kZWQgYnkgZXhwbGljaXQgcGFyZW50aGVzZXMuICBSZXBsYWNlbWVudCBleHByZXNzaW9ucworY2FuIGNvbnRhaW4gbGluZSBicmVha3MgKGUuZy4gaW4gdHJpcGxlLXF1b3RlZCBzdHJpbmdzKSwgYnV0IHRoZXkKK2Nhbm5vdCBjb250YWluIGNvbW1lbnRzLiAgRWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBpbiB0aGUgY29udGV4dAord2hlcmUgdGhlIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJzLCBpbiBvcmRlciBmcm9tIGxlZnQgdG8gcmlnaHQuCisKK0lmIGEgY29udmVyc2lvbiBpcyBzcGVjaWZpZWQsIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbgoraXMgY29udmVydGVkIGJlZm9yZSBmb3JtYXR0aW5nLiAgQ29udmVyc2lvbiBgYCchcydgYCBjYWxscyA6ZnVuYzpgc3RyYCBvbgordGhlIHJlc3VsdCwgYGAnIXInYGAgY2FsbHMgOmZ1bmM6YHJlcHJgLCBhbmQgYGAnIWEnYGAgY2FsbHMgOmZ1bmM6YGFzY2lpYC4KKworVGhlIHJlc3VsdCBpcyB0aGVuIGZvcm1hdHRlZCB1c2luZyB0aGUgOmZ1bmM6YGZvcm1hdGAgcHJvdG9jb2wuICBUaGUKK2Zvcm1hdCBzcGVjaWZpZXIgaXMgcGFzc2VkIHRvIHRoZSA6bWV0aDpgX19mb3JtYXRfX2AgbWV0aG9kIG9mIHRoZQorZXhwcmVzc2lvbiBvciBjb252ZXJzaW9uIHJlc3VsdC4gIEFuIGVtcHR5IHN0cmluZyBpcyBwYXNzZWQgd2hlbiB0aGUKK2Zvcm1hdCBzcGVjaWZpZXIgaXMgb21pdHRlZC4gIFRoZSBmb3JtYXR0ZWQgcmVzdWx0IGlzIHRoZW4gaW5jbHVkZWQgaW4KK3RoZSBmaW5hbCB2YWx1ZSBvZiB0aGUgd2hvbGUgc3RyaW5nLgorCitUb3AtbGV2ZWwgZm9ybWF0IHNwZWNpZmllcnMgbWF5IGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcy4KK1RoZXNlIG5lc3RlZCBmaWVsZHMgbWF5IGluY2x1ZGUgdGhlaXIgb3duIGNvbnZlcnNpb24gZmllbGRzIGFuZAorZm9ybWF0IHNwZWNpZmllcnMsIGJ1dCBtYXkgbm90IGluY2x1ZGUgbW9yZSBkZWVwbHktbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcy4KKworRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBtYXkgYmUgY29uY2F0ZW5hdGVkLCBidXQgcmVwbGFjZW1lbnQgZmllbGRzCitjYW5ub3QgYmUgc3BsaXQgYWNyb3NzIGxpdGVyYWxzLgorCitTb21lIGV4YW1wbGVzIG9mIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHM6OgorCisgICA+Pj4gbmFtZSA9ICJGcmVkIgorICAgPj4+IGYiSGUgc2FpZCBoaXMgbmFtZSBpcyB7bmFtZSFyfS4iCisgICAiSGUgc2FpZCBoaXMgbmFtZSBpcyAnRnJlZCcuIgorICAgPj4+IGYiSGUgc2FpZCBoaXMgbmFtZSBpcyB7cmVwcihuYW1lKX0uIiAgIyByZXByKCkgaXMgZXF1aXZhbGVudCB0byAhcgorICAgIkhlIHNhaWQgaGlzIG5hbWUgaXMgJ0ZyZWQnLiIKKyAgID4+PiB3aWR0aCA9IDEwCisgICA+Pj4gcHJlY2lzaW9uID0gNAorICAgPj4+IHZhbHVlID0gZGVjaW1hbC5EZWNpbWFsKCIxMi4zNDU2NyIpCisgICA+Pj4gZiJyZXN1bHQ6IHt2YWx1ZTp7d2lkdGh9LntwcmVjaXNpb259fSIgICMgbmVzdGVkIGZpZWxkcworICAgJ3Jlc3VsdDogICAgICAxMi4zNScKKworQSBjb25zZXF1ZW5jZSBvZiBzaGFyaW5nIHRoZSBzYW1lIHN5bnRheCBhcyByZWd1bGFyIHN0cmluZyBsaXRlcmFscyBpcwordGhhdCBjaGFyYWN0ZXJzIGluIHRoZSByZXBsYWNlbWVudCBmaWVsZHMgbXVzdCBub3QgY29uZmxpY3Qgd2l0aCB0aGUKK3F1b3RpbmcgdXNlZCBpbiB0aGUgb3V0ZXIgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFsLiAgQWxzbywgZXNjYXBlCitzZXF1ZW5jZXMgbm9ybWFsbHkgYXBwbHkgdG8gdGhlIG91dGVyIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbCwKK3JhdGhlciB0aGFuIGlubmVyIHN0cmluZyBsaXRlcmFsczo6CisKKyAgIGYiYWJjIHthWyJ4Il19IGRlZiIgICAgIyBlcnJvcjogb3V0ZXIgc3RyaW5nIGxpdGVyYWwgZW5kZWQgcHJlbWF0dXJlbHkKKyAgIGYiYWJjIHthW1wieFwiXX0gZGVmIiAgIyB3b3JrYXJvdW5kOiBlc2NhcGUgdGhlIGlubmVyIHF1b3RlcworICAgZiJhYmMge2FbJ3gnXX0gZGVmIiAgICAjIHdvcmthcm91bmQ6IHVzZSBkaWZmZXJlbnQgcXVvdGluZworCisgICBmIm5ld2xpbmU6IHtvcmQoJ1xuJyl9IiAgICMgZXJyb3I6IGxpdGVyYWwgbGluZSBicmVhayBpbiBpbm5lciBzdHJpbmcKKyAgIGYibmV3bGluZToge29yZCgnXFxuJyl9IiAgIyB3b3JrYXJvdW5kOiBkb3VibGUgZXNjYXBpbmcKKyAgIGZyIm5ld2xpbmU6IHtvcmQoJ1xuJyl9IiAgIyB3b3JrYXJvdW5kOiByYXcgb3V0ZXIgc3RyaW5nCisKK1NlZSBhbHNvIDpwZXA6YDQ5OGAgZm9yIHRoZSBwcm9wb3NhbCB0aGF0IGFkZGVkIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMsCithbmQgOm1ldGg6YHN0ci5mb3JtYXRgLCB3aGljaCB1c2VzIGEgcmVsYXRlZCBmb3JtYXQgc3RyaW5nIG1lY2hhbmlzbS4KIAogCiAuLiBfbnVtYmVyczoKQEAgLTYxMiwyMCArNzIxLDI0IEBACiBJbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6Ci0gICBpbnRlZ2VyOiBgZGVjaW1hbGludGVnZXJgIHwgYG9jdGludGVnZXJgIHwgYGhleGludGVnZXJgIHwgYGJpbmludGVnZXJgCi0gICBkZWNpbWFsaW50ZWdlcjogYG5vbnplcm9kaWdpdGAgYGRpZ2l0YCogfCAiMCIrCisgICBpbnRlZ2VyOiBgZGVjaW50ZWdlcmAgfCBgYmluaW50ZWdlcmAgfCBgb2N0aW50ZWdlcmAgfCBgaGV4aW50ZWdlcmAKKyAgIGRlY2ludGVnZXI6IGBub256ZXJvZGlnaXRgIChbIl8iXSBgZGlnaXRgKSogfCAiMCIrIChbIl8iXSAiMCIpKgorICAgYmluaW50ZWdlcjogIjAiICgiYiIgfCAiQiIpIChbIl8iXSBgYmluZGlnaXRgKSsKKyAgIG9jdGludGVnZXI6ICIwIiAoIm8iIHwgIk8iKSAoWyJfIl0gYG9jdGRpZ2l0YCkrCisgICBoZXhpbnRlZ2VyOiAiMCIgKCJ4IiB8ICJYIikgKFsiXyJdIGBoZXhkaWdpdGApKwogICAgbm9uemVyb2RpZ2l0OiAiMSIuLi4iOSIKICAgIGRpZ2l0OiAiMCIuLi4iOSIKLSAgIG9jdGludGVnZXI6ICIwIiAoIm8iIHwgIk8iKSBgb2N0ZGlnaXRgKwotICAgaGV4aW50ZWdlcjogIjAiICgieCIgfCAiWCIpIGBoZXhkaWdpdGArCi0gICBiaW5pbnRlZ2VyOiAiMCIgKCJiIiB8ICJCIikgYGJpbmRpZ2l0YCsKKyAgIGJpbmRpZ2l0OiAiMCIgfCAiMSIKICAgIG9jdGRpZ2l0OiAiMCIuLi4iNyIKICAgIGhleGRpZ2l0OiBgZGlnaXRgIHwgImEiLi4uImYiIHwgIkEiLi4uIkYiCi0gICBiaW5kaWdpdDogIjAiIHwgIjEiCiAKIFRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0IGNhbiBiZQogc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuCiAKK1VuZGVyc2NvcmVzIGFyZSBpZ25vcmVkIGZvciBkZXRlcm1pbmluZyB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgbGl0ZXJhbC4gIFRoZXkKK2NhbiBiZSB1c2VkIHRvIGdyb3VwIGRpZ2l0cyBmb3IgZW5oYW5jZWQgcmVhZGFiaWxpdHkuICBPbmUgdW5kZXJzY29yZSBjYW4gb2NjdXIKK2JldHdlZW4gZGlnaXRzLCBhbmQgYWZ0ZXIgYmFzZSBzcGVjaWZpZXJzIGxpa2UgYGAweGBgLgorCiBOb3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC4gVGhpcyBpcwogZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uIHVzZWQgYmVmb3JlIHZlcnNpb24KIDMuMC4KQEAgLTYzNCw2ICs3NDcsMTAgQEAKIAogICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExCiAgICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZgorICAgICAgICAgMTAwXzAwMF8wMDBfMDAwICAgICAgICAgICAgICAgICAgIDBiXzExMTBfMDEwMQorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgVW5kZXJzY29yZXMgYXJlIG5vdyBhbGxvd2VkIGZvciBncm91cGluZyBwdXJwb3NlcyBpbiBsaXRlcmFscy4KIAogCiAuLiBfZmxvYXRpbmc6CkBAIC02NDUsMjMgKzc2MiwyOCBAQAogCiAuLiBwcm9kdWN0aW9ubGlzdDo6CiAgICBmbG9hdG51bWJlcjogYHBvaW50ZmxvYXRgIHwgYGV4cG9uZW50ZmxvYXRgCi0gICBwb2ludGZsb2F0OiBbYGludHBhcnRgXSBgZnJhY3Rpb25gIHwgYGludHBhcnRgICIuIgotICAgZXhwb25lbnRmbG9hdDogKGBpbnRwYXJ0YCB8IGBwb2ludGZsb2F0YCkgYGV4cG9uZW50YAotICAgaW50cGFydDogYGRpZ2l0YCsKLSAgIGZyYWN0aW9uOiAiLiIgYGRpZ2l0YCsKLSAgIGV4cG9uZW50OiAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBgZGlnaXRgKworICAgcG9pbnRmbG9hdDogW2BkaWdpdHBhcnRgXSBgZnJhY3Rpb25gIHwgYGRpZ2l0cGFydGAgIi4iCisgICBleHBvbmVudGZsb2F0OiAoYGRpZ2l0cGFydGAgfCBgcG9pbnRmbG9hdGApIGBleHBvbmVudGAKKyAgIGRpZ2l0cGFydDogYGRpZ2l0YCAoWyJfIl0gYGRpZ2l0YCkqCisgICBmcmFjdGlvbjogIi4iIGBkaWdpdHBhcnRgCisgICBleHBvbmVudDogKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gYGRpZ2l0cGFydGAKIAogTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkIHVzaW5nIHJhZGl4IDEwLgogRm9yIGV4YW1wbGUsIGBgMDc3ZTAxMGBgIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSBudW1iZXIgYXMgYGA3N2UxMGBgLiBUaGUKLWFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiBTb21lCi1leGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczo6CithbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzIGltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gIEFzIGluCitpbnRlZ2VyIGxpdGVyYWxzLCB1bmRlcnNjb3JlcyBhcmUgc3VwcG9ydGVkIGZvciBkaWdpdCBncm91cGluZy4KIAotICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTAKK1NvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6OgorCisgICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMCAgICAzLjE0XzE1XzkzCiAKIE5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGAgaXMKIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIGBgLWBgIGFuZCB0aGUgbGl0ZXJhbAogYGAxYGAuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yIGdyb3VwaW5nIHB1cnBvc2VzIGluIGxpdGVyYWxzLgorCiAKIC4uIF9pbWFnaW5hcnk6CiAKQEAgLTY3MSw3ICs3OTMsNyBAQAogSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6Ci0gICBpbWFnbnVtYmVyOiAoYGZsb2F0bnVtYmVyYCB8IGBpbnRwYXJ0YCkgKCJqIiB8ICJKIikKKyAgIGltYWdudW1iZXI6IChgZmxvYXRudW1iZXJgIHwgYGRpZ2l0cGFydGApICgiaiIgfCAiSiIpCiAKIEFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLiAgQ29tcGxleAogbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYW5kIGhhdmUgdGhlIHNhbWUKQEAgLTY3OSw3ICs4MDEsNyBAQAogcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LCBlLmcuLCBgYCgzKzRqKWBgLiAgU29tZSBleGFtcGxlcyBvZgogaW1hZ2luYXJ5IGxpdGVyYWxzOjoKIAotICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwagorICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogICAzLjE0ZS0xMGogICAzLjE0XzE1XzkzagogCiAKIC4uIF9vcGVyYXRvcnM6CmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKaW5kZXggZDQwM2M0ZC4uM2RjNDQxOCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdApAQCAtMTYsNiArMTYsNyBAQAogICAgICAgICAgICAgICA6IHwgYGFzc2VydF9zdG10YAogICAgICAgICAgICAgICA6IHwgYGFzc2lnbm1lbnRfc3RtdGAKICAgICAgICAgICAgICAgOiB8IGBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10YAorICAgICAgICAgICAgICA6IHwgYGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXRgCiAgICAgICAgICAgICAgIDogfCBgcGFzc19zdG10YAogICAgICAgICAgICAgICA6IHwgYGRlbF9zdG10YAogICAgICAgICAgICAgICA6IHwgYHJldHVybl9zdG10YApAQCAtODQsNyArODUsNyBAQAogICAgYXNzaWdubWVudF9zdG10OiAoYHRhcmdldF9saXN0YCAiPSIpKyAoYHN0YXJyZWRfZXhwcmVzc2lvbmAgfCBgeWllbGRfZXhwcmVzc2lvbmApCiAgICB0YXJnZXRfbGlzdDogYHRhcmdldGAgKCIsIiBgdGFyZ2V0YCkqIFsiLCJdCiAgICB0YXJnZXQ6IGBpZGVudGlmaWVyYAotICAgICAgICAgOiB8ICIoIiBgdGFyZ2V0X2xpc3RgICIpIgorICAgICAgICAgOiB8ICIoIiBbYHRhcmdldF9saXN0YF0gIikiCiAgICAgICAgICA6IHwgIlsiIFtgdGFyZ2V0X2xpc3RgXSAiXSIKICAgICAgICAgIDogfCBgYXR0cmlidXRlcmVmYAogICAgICAgICAgOiB8IGBzdWJzY3JpcHRpb25gCkBAIC0zMTIsNiArMzEzLDUwIEBACiBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyA8YXR0ci10YXJnZXQtbm90ZT5gIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuCiAKIAorLi4gX2FubmFzc2lnbjoKKworQW5ub3RhdGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICBwYWlyOiBhbm5vdGF0ZWQ7IGFzc2lnbm1lbnQKKyAgIHNpbmdsZTogc3RhdGVtZW50OyBhc3NpZ25tZW50LCBhbm5vdGF0ZWQKKworQW5ub3RhdGlvbiBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LAorb2YgYSB2YXJpYWJsZSBvciBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBhbmQgYW4gb3B0aW9uYWwgYXNzaWdubWVudCBzdGF0ZW1lbnQ6CisKKy4uIHByb2R1Y3Rpb25saXN0OjoKKyAgIGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXQ6IGBhdWd0YXJnZXRgICI6IiBgZXhwcmVzc2lvbmAgWyI9IiBgZXhwcmVzc2lvbmBdCisKK1RoZSBkaWZmZXJlbmNlIGZyb20gbm9ybWFsIDpyZWY6YGFzc2lnbm1lbnRgIGlzIHRoYXQgb25seSBzaW5nbGUgdGFyZ2V0IGFuZAorb25seSBzaW5nbGUgcmlnaHQgaGFuZCBzaWRlIHZhbHVlIGlzIGFsbG93ZWQuCisKK0ZvciBzaW1wbGUgbmFtZXMgYXMgYXNzaWdubWVudCB0YXJnZXRzLCBpZiBpbiBjbGFzcyBvciBtb2R1bGUgc2NvcGUsCit0aGUgYW5ub3RhdGlvbnMgYXJlIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluIGEgc3BlY2lhbCBjbGFzcyBvciBtb2R1bGUKK2F0dHJpYnV0ZSA6YXR0cjpgX19hbm5vdGF0aW9uc19fYAordGhhdCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBmcm9tIHZhcmlhYmxlIG5hbWVzIChtYW5nbGVkIGlmIHByaXZhdGUpIHRvCitldmFsdWF0ZWQgYW5ub3RhdGlvbnMuIFRoaXMgYXR0cmlidXRlIGlzIHdyaXRhYmxlIGFuZCBpcyBhdXRvbWF0aWNhbGx5CitjcmVhdGVkIGF0IHRoZSBzdGFydCBvZiBjbGFzcyBvciBtb2R1bGUgYm9keSBleGVjdXRpb24sIGlmIGFubm90YXRpb25zCithcmUgZm91bmQgc3RhdGljYWxseS4KKworRm9yIGV4cHJlc3Npb25zIGFzIGFzc2lnbm1lbnQgdGFyZ2V0cywgdGhlIGFubm90YXRpb25zIGFyZSBldmFsdWF0ZWQgaWYKK2luIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwgYnV0IG5vdCBzdG9yZWQuCisKK0lmIGEgbmFtZSBpcyBhbm5vdGF0ZWQgaW4gYSBmdW5jdGlvbiBzY29wZSwgdGhlbiB0aGlzIG5hbWUgaXMgbG9jYWwgZm9yCit0aGF0IHNjb3BlLiBBbm5vdGF0aW9ucyBhcmUgbmV2ZXIgZXZhbHVhdGVkIGFuZCBzdG9yZWQgaW4gZnVuY3Rpb24gc2NvcGVzLgorCitJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHByZXNlbnQsIGFuIGFubm90YXRlZAorYXNzaWdubWVudCBwZXJmb3JtcyB0aGUgYWN0dWFsIGFzc2lnbm1lbnQgYmVmb3JlIGV2YWx1YXRpbmcgYW5ub3RhdGlvbnMKKyh3aGVyZSBhcHBsaWNhYmxlKS4gSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBub3QgcHJlc2VudCBmb3IgYW4gZXhwcmVzc2lvbgordGFyZ2V0LCB0aGVuIHRoZSBpbnRlcnByZXRlciBldmFsdWF0ZXMgdGhlIHRhcmdldCBleGNlcHQgZm9yIHRoZSBsYXN0Cis6bWV0aDpgX19zZXRpdGVtX19gIG9yIDptZXRoOmBfX3NldGF0dHJfX2AgY2FsbC4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyNmAgLSBWYXJpYWJsZSBhbmQgYXR0cmlidXRlIGFubm90YXRpb24gc3ludGF4CisgICA6cGVwOmA0ODRgIC0gVHlwZSBoaW50cworCisKIC4uIF9hc3NlcnQ6CiAKIFRoZSA6a2V5d29yZDpgYXNzZXJ0YCBzdGF0ZW1lbnQKQEAgLTg1OSwxMSArOTA0LDEyIEBACiAKIE5hbWVzIGxpc3RlZCBpbiBhIDprZXl3b3JkOmBnbG9iYWxgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbAogcGFyYW1ldGVycyBvciBpbiBhIDprZXl3b3JkOmBmb3JgIGxvb3AgY29udHJvbCB0YXJnZXQsIDprZXl3b3JkOmBjbGFzc2AKLWRlZmluaXRpb24sIGZ1bmN0aW9uIGRlZmluaXRpb24sIG9yIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4KK2RlZmluaXRpb24sIGZ1bmN0aW9uIGRlZmluaXRpb24sIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCwgb3IgdmFyaWFibGUKK2Fubm90YXRpb24uCiAKIC4uIGltcGwtZGV0YWlsOjoKIAotICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgZW5mb3JjZSB0aGUgdHdvIHJlc3RyaWN0aW9ucywgYnV0CisgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBlbmZvcmNlIHNvbWUgb2YgdGhlc2UgcmVzdHJpY3Rpb24sIGJ1dAogICAgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZSB0aGlzIGZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UKICAgIHRoZW0gb3Igc2lsZW50bHkgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLgogCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5IGIvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQppbmRleCA2MzExMjgzLi4yNzMxOTFiIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CisrKyBiL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKQEAgLTM0LDcgKzM0LDcgQEAKIAogCiBJU1NVRV9VUkkgPSAnaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUlcycKLVNPVVJDRV9VUkkgPSAnaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjUvJXMnCitTT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMy42LyVzJwogCiAjIG1vbmtleS1wYXRjaCByZVNUIHBhcnNlciB0byBkaXNhYmxlIGFscGhhYmV0aWMgYW5kIHJvbWFuIGVudW1lcmF0ZWQgbGlzdHMKIGZyb20gZG9jdXRpbHMucGFyc2Vycy5yc3Quc3RhdGVzIGltcG9ydCBCb2R5CmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvcnN0bGludC5weSBiL0RvYy90b29scy9yc3RsaW50LnB5CmluZGV4IGRlNzgwNDEuLjJjMTgxNmUgMTAwNzU1Ci0tLSBhL0RvYy90b29scy9yc3RsaW50LnB5CisrKyBiL0RvYy90b29scy9yc3RsaW50LnB5CkBAIC05LDggKzksNiBAQAogIyBUT0RPOiAtIHdyb25nIHZlcnNpb25zIGluIHZlcnNpb25hZGRlZC9jaGFuZ2VkCiAjICAgICAgIC0gd3JvbmcgbWFya3VwIGFmdGVyIHZlcnNpb25jaGFuZ2VkIGRpcmVjdGl2ZQogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdiBiL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CmluZGV4IGRiYTkzYmYuLmNiMDFjODUgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CisrKyBiL0RvYy90b29scy9zdXNwLWlnbm9yZWQuY3N2CkBAIC0yNSw2ICsyNSwzMCBAQAogaG93dG8vY3Vyc2VzLCw6bWFnZW50YSwiMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCA3OndoaXRlLiAgVGhlIgogaG93dG8vY3Vyc2VzLCw6Y3lhbiwiMjpncmVlbiwgMzp5ZWxsb3csIDQ6Ymx1ZSwgNTptYWdlbnRhLCA2OmN5YW4sIGFuZCA3OndoaXRlLiAgVGhlIgogaG93dG8vY3Vyc2VzLCw6d2hpdGUsIjI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQgNzp3aGl0ZS4gIFRoZSIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOjoscHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbixweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOjoscHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24scHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLXJldHVybgoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6Y2FsbCwxNTY2NDEzNjA1MDIyODAgIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOnN0YXJ0LDE1NjY0MTM2MDUwMjI4MCAgZnVuY3Rpb24tZW50cnk6Y2FsbF9zdGFjay5weTpzdGFydDoyMworaG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTE4ODA0ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDUzMjc5NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTQ2ODA3IGZ1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNTYzMzY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDU3ODM2NSAgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo1Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA1OTE3NTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDYwNTU1NiAgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDYxNzQ4MiBmdW5jdGlvbi1yZXR1cm46ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2Mjk4MTQgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDY0MjI4NSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2NTY3NzAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6OQoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNjY5NzA3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA2ODc4NTMgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmZ1bmN0aW9uLDE1NjY0MTM2MDcwMDcxOSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAoraG93dG8vaW5zdHJ1bWVudGF0aW9uLCw6ZnVuY3Rpb24sMTU2NjQxMzYwNzE5NjQwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl81OjE4Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpmdW5jdGlvbiwxNTY2NDEzNjA3MzI1NjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2hvd3RvL2luc3RydW1lbnRhdGlvbiwsOmNhbGwsMTU2NjQxMzYwNzQ3MzcwIGZ1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4Citob3d0by9pbnN0cnVtZW50YXRpb24sLDpzdGFydCwxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKIGhvd3RvL2lwYWRkcmVzcywsOkRCOCw+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKIGhvd3RvL2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCiBob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKQEAgLTEwNiw2ICsxMzAsMTAgQEAKIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RlcCxhW3N0YXJ0OnN0b3A6c3RlcF0KIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RvcCwiYVtzdGFydDpzdG9wLCBpXSIKIGxpYnJhcnkvZnVuY3Rpb25zLCw6c3RvcCxhW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDp2YXRyb2dhc2FjLD4+PiBjb29raWUgPSBiJ3VzZXI6dmF0cm9nYXNhYycKK2xpYnJhcnkvaGFzaGxpYi1ibGFrZTIsLDp2YXRyb2dhc2FjLCJ1c2VyOnZhdHJvZ2FzYWMsMzQ5Y2Y5MDQ1MzM3NjdlZDJkNzU1Mjc5YThkZjg0ZDAiCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6cG9saWNhamFjLCI+Pj4gY29tcGFyZV9kaWdlc3QoYid1c2VyOnBvbGljYWphYycsIHNpZykiCitsaWJyYXJ5L2hhc2hsaWItYmxha2UyLCw6TEVBRiwiaDAwID0gYmxha2UyYihidWZbMDpMRUFGX1NJWkVdLCBmYW5vdXQ9RkFOT1VULCBkZXB0aD1ERVBUSCwiCiBsaWJyYXJ5L2h0dHAuY2xpZW50LCw6cG9ydCxob3N0OnBvcnQKIGxpYnJhcnkvaHR0cC5jb29raWVzLCxgLCEjJCUmJyorLS5eX2B8fjoKIGxpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTIgpAQCAtMjA1LDcgKzIzMyw4IEBACiBsaWJyYXJ5L3ZlbnYsLDpwYXJhbSwiOnBhcmFtIG5vZGlzdDogSWYgVHJ1ZSwgc2V0dXB0b29scyBhbmQgcGlwIGFyZSBub3QgaW5zdGFsbGVkIGludG8gdGhlIgogbGlicmFyeS92ZW52LCw6cGFyYW0sIjpwYXJhbSBwcm9ncmVzczogSWYgc2V0dXB0b29scyBvciBwaXAgYXJlIGluc3RhbGxlZCwgdGhlIHByb2dyZXNzIG9mIHRoZSIKIGxpYnJhcnkvdmVudiwsOnBhcmFtLCI6cGFyYW0gbm9waXA6IElmIFRydWUsIHBpcCBpcyBub3QgaW5zdGFsbGVkIGludG8gdGhlIGNyZWF0ZWQiCi1saWJyYXJ5L3ZlbnYsLDpwYXJhbSw6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorbGlicmFyeS92ZW52LCw6cGFyYW0sOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOm5pbCxleDpuaWwKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aAogbGlicmFyeS94bWxycGMuY2xpZW50LCw6cGFzcyx1c2VyOnBhc3MKIGxpYnJhcnkveG1scnBjLmNsaWVudCwsOnBvcnQsaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aApAQCAtMjM5LDcgKzI2OCw3IEBACiB1c2luZy9jbWRsaW5lLCw6bWVzc2FnZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvY21kbGluZSwsOm1vZHVsZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQogdXNpbmcvdW5peCwsOlBhY2thZ2luZyxodHRwczovL2VuLm9wZW5zdXNlLm9yZy9Qb3J0YWw6UGFja2FnaW5nCi13aGF0c25ldy8yLjAsNDE4LDpsZW4sCit3aGF0c25ldy8yLjAsLDpsZW4sCiB3aGF0c25ldy8yLjMsLDo6LAogd2hhdHNuZXcvMi4zLCw6Y29uZmlnLAogd2hhdHNuZXcvMi4zLCw6Q3JpdGljYWwsCkBAIC0yNzIsMjcgKzMwMSwyOCBAQAogd2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKIHdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KIHdoYXRzbmV3LzMuMiwsOnByZWZpeCx6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLXdoYXRzbmV3L2NoYW5nZWxvZywsOmd6LCI6IFRhckZpbGUgb3BlbmVkIHdpdGggZXh0ZXJuYWwgZmlsZW9iaiBhbmQgIiJ3Omd6IiIgbW9kZSBkaWRuJ3QiCi13aGF0c25ldy9jaGFuZ2Vsb2csLDo6LCI6IFVzZSAiIjEyNy4wLjAuMSIiIG9yICIiOjoxIiIgaW5zdGVhZCBvZiAiImxvY2FsaG9zdCIiIGFzIG11Y2ggYXMiCi1saWJyYXJ5L3RhcmZpbGUsMTQ5LDp4eiwneDp4eicKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDI5MCw6c29tZXRhZyxwcmVmaXg6c29tZXRhZwotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpmaWN0aW9uYWwsIjxhY3RvcnMgeG1sbnM6ZmljdGlvbmFsPSIiaHR0cDovL2NoYXJhY3RlcnMuZXhhbXBsZS5jb20iIiIKLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkxhbmNlbG90PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+QXJjaGllIExlYWNoPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+U2lyIFJvYmluPC9maWN0aW9uYWw6Y2hhcmFjdGVyPgotbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUsMzAxLDpjaGFyYWN0ZXIsPGZpY3Rpb25hbDpjaGFyYWN0ZXI+R3VudGhlcjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KLWxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLDMwMSw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkNvbW1hbmRlciBDbGVtZW50PC9maWN0aW9uYWw6Y2hhcmFjdGVyPgorbGlicmFyeS90YXJmaWxlLCw6eHosJ3g6eHonCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOnNvbWV0YWcscHJlZml4OnNvbWV0YWcKK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6ZmljdGlvbmFsLCI8YWN0b3JzIHhtbG5zOmZpY3Rpb25hbD0iImh0dHA6Ly9jaGFyYWN0ZXJzLmV4YW1wbGUuY29tIiIiCitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5MYW5jZWxvdDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkFyY2hpZSBMZWFjaDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPlNpciBSb2JpbjwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KK2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6Y2hhcmFjdGVyLDxmaWN0aW9uYWw6Y2hhcmFjdGVyPkd1bnRoZXI8L2ZpY3Rpb25hbDpjaGFyYWN0ZXI+CitsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3Rlciw8ZmljdGlvbmFsOmNoYXJhY3Rlcj5Db21tYW5kZXIgQ2xlbWVudDwvZmljdGlvbmFsOmNoYXJhY3Rlcj4KIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6YWN0b3IsImZvciBhY3RvciBpbiByb290LmZpbmRhbGwoJ3JlYWxfcGVyc29uOmFjdG9yJywgbnMpOiIKIGxpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLCw6bmFtZSwibmFtZSA9IGFjdG9yLmZpbmQoJ3JlYWxfcGVyc29uOm5hbWUnLCBucykiCiBsaWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZSwsOmNoYXJhY3RlciwiZm9yIGNoYXIgaW4gYWN0b3IuZmluZGFsbCgncm9sZTpjaGFyYWN0ZXInLCBucyk6IgotbGlicmFyeS96aXBhcHAsMzEsOm1haW4sIiQgcHl0aG9uIC1tIHppcGFwcCBteWFwcCAtbSAiIm15YXBwOm1haW4iIiIKLWxpYnJhcnkvemlwYXBwLDgyLDpmbiwiYXJndW1lbnQgc2hvdWxkIGhhdmUgdGhlIGZvcm0gIiJwa2cubW9kOmZuIiIsIHdoZXJlICIicGtnLm1vZCIiIGlzIGEiCi1saWJyYXJ5L3ppcGFwcCwxNTUsOmNhbGxhYmxlLCIiInBrZy5tb2R1bGU6Y2FsbGFibGUiIiBhbmQgdGhlIGFyY2hpdmUgd2lsbCBiZSBydW4gYnkgaW1wb3J0aW5nIgorbGlicmFyeS96aXBhcHAsLDptYWluLCIkIHB5dGhvbiAtbSB6aXBhcHAgbXlhcHAgLW0gIiJteWFwcDptYWluIiIiCitsaWJyYXJ5L3ppcGFwcCwsOmZuLCJhcmd1bWVudCBzaG91bGQgaGF2ZSB0aGUgZm9ybSAiInBrZy5tb2Q6Zm4iIiwgd2hlcmUgIiJwa2cubW9kIiIgaXMgYSIKK2xpYnJhcnkvemlwYXBwLCw6Y2FsbGFibGUsIiIicGtnLm1vZHVsZTpjYWxsYWJsZSIiIGFuZCB0aGUgYXJjaGl2ZSB3aWxsIGJlIHJ1biBieSBpbXBvcnRpbmciCiBsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gbVs6OjJdLnRvbGlzdCgpCiBsaWJyYXJ5L3N5cywsYCwjIGBgd3JhcHBlcmBgIGNyZWF0ZXMgYSBgYHdyYXAoY29ybylgYCBjb3JvdXRpbmU6Ci10dXRvcmlhbC92ZW52LDc3LDpjN2I5NjQ1YTZmMzUsIlB5dGhvbiAzLjQuMysgKDMuNDpjN2I5NjQ1YTZmMzUrLCBNYXkgMjIgMjAxNSwgMDk6MzE6MjUpIgogd2hhdHNuZXcvMy41LCw6cm9vdCwnV0FSTklORzpyb290Ondhcm5pbmdcbicKIHdoYXRzbmV3LzMuNSwsOndhcm5pbmcsJ1dBUk5JTkc6cm9vdDp3YXJuaW5nXG4nCiB3aGF0c25ldy8zLjUsLDo6LD4+PiBhZGRyNiA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykKIHdoYXRzbmV3LzMuNSwsOnJvb3QsRVJST1I6cm9vdDpleGNlcHRpb24KIHdoYXRzbmV3LzMuNSwsOmV4Y2VwdGlvbixFUlJPUjpyb290OmV4Y2VwdGlvbgord2hhdHNuZXcvY2hhbmdlbG9nLCw6dmVyc2lvbixpbXBvcnQgc3lzOyBJID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQord2hhdHNuZXcvY2hhbmdlbG9nLCw6Z3osIjogVGFyRmlsZSBvcGVuZWQgd2l0aCBleHRlcm5hbCBmaWxlb2JqIGFuZCAiInc6Z3oiIiBtb2RlIGRpZG4ndCIKK3doYXRzbmV3L2NoYW5nZWxvZywsOjosIjogVXNlICIiMTI3LjAuMC4xIiIgb3IgIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIgYXMgbXVjaCBhcyIKK3doYXRzbmV3L2NoYW5nZWxvZywsYCwiZm9yIHJlYWRhYmlsaXR5ICh3YXMgIiJgIiIpLiIKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QgYi9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0CmluZGV4IDEyOTg5YjIuLmQ0MzQ2MTggMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdApAQCAtNzgsNiArNzgsOSBAQAogICAgPj4+IHdvcmRzCiAgICBbJ2RlZmVuZXN0cmF0ZScsICdjYXQnLCAnd2luZG93JywgJ2RlZmVuZXN0cmF0ZSddCiAKK1dpdGggYGBmb3IgdyBpbiB3b3JkczpgYCwgdGhlIGV4YW1wbGUgd291bGQgYXR0ZW1wdCB0byBjcmVhdGUgYW4gaW5maW5pdGUgbGlzdCwKK2luc2VydGluZyBgYGRlZmVuZXN0cmF0ZWBgIG92ZXIgYW5kIG92ZXIgYWdhaW4uCisKIAogLi4gX3R1dC1yYW5nZToKIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdCBiL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKaW5kZXggZGQ5YzdjZC4uYmVlYWFjMyAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CkBAIC0yNSw3ICsyNSw4IEBACiBjb25jYXRlbmF0aW9uIG9wZXJhdGlvbnMgeW91IGNhbiBjcmVhdGUgYW55IGxheW91dCB5b3UgY2FuIGltYWdpbmUuICBUaGUKIHN0cmluZyB0eXBlIGhhcyBzb21lIG1ldGhvZHMgdGhhdCBwZXJmb3JtIHVzZWZ1bCBvcGVyYXRpb25zIGZvciBwYWRkaW5nCiBzdHJpbmdzIHRvIGEgZ2l2ZW4gY29sdW1uIHdpZHRoOyB0aGVzZSB3aWxsIGJlIGRpc2N1c3NlZCBzaG9ydGx5LiAgVGhlIHNlY29uZAotd2F5IGlzIHRvIHVzZSB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZC4KK3dheSBpcyB0byB1c2UgOnJlZjpgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8Zi1zdHJpbmdzPmAsIG9yIHRoZQorOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZC4KIAogVGhlIDptb2Q6YHN0cmluZ2AgbW9kdWxlIGNvbnRhaW5zIGEgOmNsYXNzOmB+c3RyaW5nLlRlbXBsYXRlYCBjbGFzcyB3aGljaCBvZmZlcnMKIHlldCBhbm90aGVyIHdheSB0byBzdWJzdGl0dXRlIHZhbHVlcyBpbnRvIHN0cmluZ3MuCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0IGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAppbmRleCBlOGQ4ZTJiLi5mYWY1N2EzIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKQEAgLTEwLDEzICsxMCwxMyBAQAogSW52b2tpbmcgdGhlIEludGVycHJldGVyCiA9PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy41YAorVGhlIFB5dGhvbiBpbnRlcnByZXRlciBpcyB1c3VhbGx5IGluc3RhbGxlZCBhcyA6ZmlsZTpgL3Vzci9sb2NhbC9iaW4vcHl0aG9uMy42YAogb24gdGhvc2UgbWFjaGluZXMgd2hlcmUgaXQgaXMgYXZhaWxhYmxlOyBwdXR0aW5nIDpmaWxlOmAvdXNyL2xvY2FsL2JpbmAgaW4geW91cgogVW5peCBzaGVsbCdzIHNlYXJjaCBwYXRoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHN0YXJ0IGl0IGJ5IHR5cGluZyB0aGUgY29tbWFuZDoKIAogLi4gY29kZS1ibG9jazo6IHRleHQKIAotICAgcHl0aG9uMy41CisgICBweXRob24zLjYKIAogdG8gdGhlIHNoZWxsLiBbI11fIFNpbmNlIHRoZSBjaG9pY2Ugb2YgdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgaW50ZXJwcmV0ZXIgbGl2ZXMKIGlzIGFuIGluc3RhbGxhdGlvbiBvcHRpb24sIG90aGVyIHBsYWNlcyBhcmUgcG9zc2libGU7IGNoZWNrIHdpdGggeW91ciBsb2NhbApAQCAtMjQsMTEgKzI0LDExIEBACiBwb3B1bGFyIGFsdGVybmF0aXZlIGxvY2F0aW9uLikKIAogT24gV2luZG93cyBtYWNoaW5lcywgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaXMgdXN1YWxseSBwbGFjZWQgaW4KLTpmaWxlOmBDOlxcUHl0aG9uMzVgLCB0aG91Z2ggeW91IGNhbiBjaGFuZ2UgdGhpcyB3aGVuIHlvdSdyZSBydW5uaW5nIHRoZQorOmZpbGU6YEM6XFxQeXRob24zNmAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCiBpbnN0YWxsZXIuICBUbyBhZGQgdGhpcyBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCAgeW91IGNhbiB0eXBlIHRoZSBmb2xsb3dpbmcKIGNvbW1hbmQgaW50byB0aGUgY29tbWFuZCBwcm9tcHQgaW4gYSBET1MgYm94OjoKIAotICAgc2V0IHBhdGg9JXBhdGglO0M6XHB5dGhvbjM1CisgICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzYKIAogVHlwaW5nIGFuIGVuZC1vZi1maWxlIGNoYXJhY3RlciAoOmtiZDpgQ29udHJvbC1EYCBvbiBVbml4LCA6a2JkOmBDb250cm9sLVpgIG9uCiBXaW5kb3dzKSBhdCB0aGUgcHJpbWFyeSBwcm9tcHQgY2F1c2VzIHRoZSBpbnRlcnByZXRlciB0byBleGl0IHdpdGggYSB6ZXJvIGV4aXQKQEAgLTk4LDggKzk4LDggQEAKIAogLi4gY29kZS1ibG9jazo6IHNoZWxsLXNlc3Npb24KIAotICAgJCBweXRob24zLjUKLSAgIFB5dGhvbiAzLjUgKGRlZmF1bHQsIFNlcCAxNiAyMDE1LCAwOToyNTowNCkKKyAgICQgcHl0aG9uMy42CisgICBQeXRob24gMy42IChkZWZhdWx0LCBTZXAgMTYgMjAxNSwgMDk6MjU6MDQpCiAgICBbR0NDIDQuOC4yXSBvbiBsaW51eAogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CmluZGV4IDIxNDAzMjkuLjdlOGVlM2UgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0zNTIsNiArMzUyLDkgQEAKICAgICAgIFN0cmluZ3Mgc3VwcG9ydCBhIGxhcmdlIG51bWJlciBvZiBtZXRob2RzIGZvcgogICAgICAgYmFzaWMgdHJhbnNmb3JtYXRpb25zIGFuZCBzZWFyY2hpbmcuCiAKKyAgIDpyZWY6YGYtc3RyaW5nc2AKKyAgICAgIFN0cmluZyBsaXRlcmFscyB0aGF0IGhhdmUgZW1iZWRkZWQgZXhwcmVzc2lvbnMuCisKICAgIDpyZWY6YGZvcm1hdHN0cmluZ3NgCiAgICAgICBJbmZvcm1hdGlvbiBhYm91dCBzdHJpbmcgZm9ybWF0dGluZyB3aXRoIDptZXRoOmBzdHIuZm9ybWF0YC4KIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAppbmRleCA1MmZmZGJlLi4xZGQwNmMyIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliLnJzdApAQCAtMTUsNyArMTUsNyBAQAogCiAgICA+Pj4gaW1wb3J0IG9zCiAgICA+Pj4gb3MuZ2V0Y3dkKCkgICAgICAjIFJldHVybiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQotICAgJ0M6XFxQeXRob24zNScKKyAgICdDOlxcUHl0aG9uMzYnCiAgICA+Pj4gb3MuY2hkaXIoJy9zZXJ2ZXIvYWNjZXNzbG9ncycpICAgIyBDaGFuZ2UgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQogICAgPj4+IG9zLnN5c3RlbSgnbWtkaXIgdG9kYXknKSAgICMgUnVuIHRoZSBjb21tYW5kIG1rZGlyIGluIHRoZSBzeXN0ZW0gc2hlbGwKICAgIDAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAppbmRleCAzNzE0Mzg0Li5iZjRjZjg3IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CkBAIC0yNzgsNyArMjc4LDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgICAgICBkWydwcmltYXJ5J10gICAgICAgICAgICAgICAgIyBlbnRyeSB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkCi0gICAgIEZpbGUgIkM6L3B5dGhvbjM1L2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KKyAgICAgRmlsZSAiQzovcHl0aG9uMzYvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXwogICAgICAgIG8gPSBzZWxmLmRhdGFba2V5XSgpCiAgICBLZXlFcnJvcjogJ3ByaW1hcnknCiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC92ZW52LnJzdCBiL0RvYy90dXRvcmlhbC92ZW52LnJzdAppbmRleCAzYjJlZTJlLi5lMmRkNTdkIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvdmVudi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3ZlbnYucnN0CkBAIC0yMCwxNSArMjAsMTQgQEAKIHRoZSByZXF1aXJlbWVudHMgYXJlIGluIGNvbmZsaWN0IGFuZCBpbnN0YWxsaW5nIGVpdGhlciB2ZXJzaW9uIDEuMCBvciAyLjAKIHdpbGwgbGVhdmUgb25lIGFwcGxpY2F0aW9uIHVuYWJsZSB0byBydW4uCiAKLVRoZSBzb2x1dGlvbiBmb3IgdGhpcyBwcm9ibGVtIGlzIHRvIGNyZWF0ZSBhIDp0ZXJtOmB2aXJ0dWFsCi1lbnZpcm9ubWVudGAgKG9mdGVuIHNob3J0ZW5lZCB0byAidmlydHVhbGVudiIpLCBhIHNlbGYtY29udGFpbmVkCi1kaXJlY3RvcnkgdHJlZSB0aGF0IGNvbnRhaW5zIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3IgYSBwYXJ0aWN1bGFyCi12ZXJzaW9uIG9mIFB5dGhvbiwgcGx1cyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzLgorVGhlIHNvbHV0aW9uIGZvciB0aGlzIHByb2JsZW0gaXMgdG8gY3JlYXRlIGEgOnRlcm06YHZpcnR1YWwgZW52aXJvbm1lbnRgLCBhCitzZWxmLWNvbnRhaW5lZCBkaXJlY3RvcnkgdHJlZSB0aGF0IGNvbnRhaW5zIGEgUHl0aG9uIGluc3RhbGxhdGlvbiBmb3IgYQorcGFydGljdWxhciB2ZXJzaW9uIG9mIFB5dGhvbiwgcGx1cyBhIG51bWJlciBvZiBhZGRpdGlvbmFsIHBhY2thZ2VzLgogCiBEaWZmZXJlbnQgYXBwbGljYXRpb25zIGNhbiB0aGVuIHVzZSBkaWZmZXJlbnQgdmlydHVhbCBlbnZpcm9ubWVudHMuCiBUbyByZXNvbHZlIHRoZSBlYXJsaWVyIGV4YW1wbGUgb2YgY29uZmxpY3RpbmcgcmVxdWlyZW1lbnRzLAogYXBwbGljYXRpb24gQSBjYW4gaGF2ZSBpdHMgb3duIHZpcnR1YWwgZW52aXJvbm1lbnQgd2l0aCB2ZXJzaW9uIDEuMAotaW5zdGFsbGVkIHdoaWxlIGFwcGxpY2F0aW9uIEIgaGFzIGFub3RoZXIgdmlydHVhbGVudiB3aXRoIHZlcnNpb24gMi4wLgoraW5zdGFsbGVkIHdoaWxlIGFwcGxpY2F0aW9uIEIgaGFzIGFub3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudCB3aXRoIHZlcnNpb24gMi4wLgogSWYgYXBwbGljYXRpb24gQiByZXF1aXJlcyBhIGxpYnJhcnkgYmUgdXBncmFkZWQgdG8gdmVyc2lvbiAzLjAsIHRoaXMgd2lsbAogbm90IGFmZmVjdCBhcHBsaWNhdGlvbiBBJ3MgZW52aXJvbm1lbnQuCiAKQEAgLTM2LDI5ICszNSwyNiBAQAogQ3JlYXRpbmcgVmlydHVhbCBFbnZpcm9ubWVudHMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSBzY3JpcHQgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZSB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBjYWxsZWQKLTpwcm9ncmFtOmBweXZlbnZgLiAgOnByb2dyYW06YHB5dmVudmAgd2lsbCB1c3VhbGx5IGluc3RhbGwgdGhlIG1vc3QKLXJlY2VudCB2ZXJzaW9uIG9mIFB5dGhvbiB0aGF0IHlvdSBoYXZlIGF2YWlsYWJsZTsgdGhlIHNjcmlwdCBpcyBhbHNvCi1pbnN0YWxsZWQgd2l0aCBhIHZlcnNpb24gbnVtYmVyLCBzbyBpZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZgotUHl0aG9uIG9uIHlvdXIgc3lzdGVtIHlvdSBjYW4gc2VsZWN0IGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24gYnkKLXJ1bm5pbmcgYGBweXZlbnYtMy40YGAgb3Igd2hpY2hldmVyIHZlcnNpb24geW91IHdhbnQuCitUaGUgbW9kdWxlIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2UgdmlydHVhbCBlbnZpcm9ubWVudHMgaXMgY2FsbGVkCis6bW9kOmB2ZW52YC4gIDptb2Q6YHZlbnZgIHdpbGwgdXN1YWxseSBpbnN0YWxsIHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mCitQeXRob24gdGhhdCB5b3UgaGF2ZSBhdmFpbGFibGUuIElmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiBvbiB5b3VyCitzeXN0ZW0sIHlvdSBjYW4gc2VsZWN0IGEgc3BlY2lmaWMgUHl0aG9uIHZlcnNpb24gYnkgcnVubmluZyBgYHB5dGhvbjNgYCBvcgord2hpY2hldmVyIHZlcnNpb24geW91IHdhbnQuCiAKLVRvIGNyZWF0ZSBhIHZpcnR1YWxlbnYsIGRlY2lkZSB1cG9uIGEgZGlyZWN0b3J5Ci13aGVyZSB5b3Ugd2FudCB0byBwbGFjZSBpdCBhbmQgcnVuIDpwcm9ncmFtOmBweXZlbnZgIHdpdGggdGhlCi1kaXJlY3RvcnkgcGF0aDo6CitUbyBjcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50LCBkZWNpZGUgdXBvbiBhIGRpcmVjdG9yeSB3aGVyZSB5b3Ugd2FudCB0bworcGxhY2UgaXQsIGFuZCBydW4gdGhlIDptb2Q6YHZlbnZgIG1vZHVsZSBhcyBhIHNjcmlwdCB3aXRoIHRoZSBkaXJlY3RvcnkgcGF0aDo6CiAKLSAgIHB5dmVudiB0dXRvcmlhbC1lbnYKKyAgIHB5dGhvbjMgLW0gdmVudiB0dXRvcmlhbC1lbnYKIAogVGhpcyB3aWxsIGNyZWF0ZSB0aGUgYGB0dXRvcmlhbC1lbnZgYCBkaXJlY3RvcnkgaWYgaXQgZG9lc24ndCBleGlzdCwKIGFuZCBhbHNvIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnNpZGUgaXQgY29udGFpbmluZyBhIGNvcHkgb2YgdGhlIFB5dGhvbgogaW50ZXJwcmV0ZXIsIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCBhbmQgdmFyaW91cyBzdXBwb3J0aW5nIGZpbGVzLgogCi1PbmNlIHlvdSd2ZSBjcmVhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IG5lZWQgdG8KLWFjdGl2YXRlIGl0LgorT25jZSB5b3UndmUgY3JlYXRlZCBhIHZpcnR1YWwgZW52aXJvbm1lbnQsIHlvdSBtYXkgYWN0aXZhdGUgaXQuCiAKIE9uIFdpbmRvd3MsIHJ1bjo6CiAKLSAgdHV0b3JpYWwtZW52L1NjcmlwdHMvYWN0aXZhdGUKKyAgdHV0b3JpYWwtZW52XFNjcmlwdHNcYWN0aXZhdGUuYmF0CiAKIE9uIFVuaXggb3IgTWFjT1MsIHJ1bjo6CiAKQEAgLTY5LDMzICs2NSwzNiBAQAogYGBhY3RpdmF0ZS5jc2hgYCBhbmQgYGBhY3RpdmF0ZS5maXNoYGAgc2NyaXB0cyB5b3Ugc2hvdWxkIHVzZQogaW5zdGVhZC4pCiAKLUFjdGl2YXRpbmcgdGhlIHZpcnR1YWxlbnYgd2lsbCBjaGFuZ2UgeW91ciBzaGVsbCdzIHByb21wdCB0byBzaG93IHdoYXQKLXZpcnR1YWxlbnYgeW91J3JlIHVzaW5nLCBhbmQgbW9kaWZ5IHRoZSBlbnZpcm9ubWVudCBzbyB0aGF0IHJ1bm5pbmcKLWBgcHl0aG9uYGAgd2lsbCBnZXQgeW91IHRoYXQgcGFydGljdWxhciB2ZXJzaW9uIGFuZCBpbnN0YWxsYXRpb24gb2YKLVB5dGhvbi4gIEZvciBleGFtcGxlOjoKK0FjdGl2YXRpbmcgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgd2lsbCBjaGFuZ2UgeW91ciBzaGVsbCdzIHByb21wdCB0byBzaG93IHdoYXQKK3ZpcnR1YWwgZW52aXJvbm1lbnQgeW91J3JlIHVzaW5nLCBhbmQgbW9kaWZ5IHRoZSBlbnZpcm9ubWVudCBzbyB0aGF0IHJ1bm5pbmcKK2BgcHl0aG9uYGAgd2lsbCBnZXQgeW91IHRoYXQgcGFydGljdWxhciB2ZXJzaW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgUHl0aG9uLgorRm9yIGV4YW1wbGU6CiAKLSAgLT4gc291cmNlIH4vZW52cy90dXRvcmlhbC1lbnYvYmluL2FjdGl2YXRlCi0gICh0dXRvcmlhbC1lbnYpIC0+IHB5dGhvbgotICBQeXRob24gMy40LjMrICgzLjQ6YzdiOTY0NWE2ZjM1KywgTWF5IDIyIDIwMTUsIDA5OjMxOjI1KQorLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAkIHNvdXJjZSB+L2VudnMvdHV0b3JpYWwtZW52L2Jpbi9hY3RpdmF0ZQorICAodHV0b3JpYWwtZW52KSAkIHB5dGhvbgorICBQeXRob24gMy41LjEgKGRlZmF1bHQsIE1heSAgNiAyMDE2LCAxMDo1OTozNikKICAgICAuLi4KICAgPj4+IGltcG9ydCBzeXMKICAgPj4+IHN5cy5wYXRoCi0gIFsnJywgJy91c3IvbG9jYWwvbGliL3B5dGhvbjM0LnppcCcsIC4uLiwKLSAgJ34vZW52cy90dXRvcmlhbC1lbnYvbGliL3B5dGhvbjMuNC9zaXRlLXBhY2thZ2VzJ10KKyAgWycnLCAnL3Vzci9sb2NhbC9saWIvcHl0aG9uMzUuemlwJywgLi4uLAorICAnfi9lbnZzL3R1dG9yaWFsLWVudi9saWIvcHl0aG9uMy41L3NpdGUtcGFja2FnZXMnXQogICA+Pj4KIAogCiBNYW5hZ2luZyBQYWNrYWdlcyB3aXRoIHBpcAogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotT25jZSB5b3UndmUgYWN0aXZhdGVkIGEgdmlydHVhbCBlbnZpcm9ubWVudCwgeW91IGNhbiBpbnN0YWxsLCB1cGdyYWRlLAotYW5kIHJlbW92ZSBwYWNrYWdlcyB1c2luZyBhIHByb2dyYW0gY2FsbGVkIDpwcm9ncmFtOmBwaXBgLiAgQnkgZGVmYXVsdAotYGBwaXBgYCB3aWxsIGluc3RhbGwgcGFja2FnZXMgZnJvbSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgsCi08aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT4uICBZb3UgY2FuIGJyb3dzZSB0aGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgKLWJ5IGdvaW5nIHRvIGl0IGluIHlvdXIgd2ViIGJyb3dzZXIsIG9yIHlvdSBjYW4gdXNlIGBgcGlwYGAncwotbGltaXRlZCBzZWFyY2ggZmVhdHVyZTo6CitZb3UgY2FuIGluc3RhbGwsIHVwZ3JhZGUsIGFuZCByZW1vdmUgcGFja2FnZXMgdXNpbmcgYSBwcm9ncmFtIGNhbGxlZAorOnByb2dyYW06YHBpcGAuICBCeSBkZWZhdWx0IGBgcGlwYGAgd2lsbCBpbnN0YWxsIHBhY2thZ2VzIGZyb20gdGhlIFB5dGhvbgorUGFja2FnZSBJbmRleCwgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+LiAgWW91IGNhbiBicm93c2UgdGhlIFB5dGhvbgorUGFja2FnZSBJbmRleCBieSBnb2luZyB0byBpdCBpbiB5b3VyIHdlYiBicm93c2VyLCBvciB5b3UgY2FuIHVzZSBgYHBpcGBgJ3MKK2xpbWl0ZWQgc2VhcmNoIGZlYXR1cmU6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIHNlYXJjaCBhc3Ryb25vbXkKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgc2VhcmNoIGFzdHJvbm9teQogICBza3lmaWVsZCAgICAgICAgICAgICAgIC0gRWxlZ2FudCBhc3Ryb25vbXkgZm9yIFB5dGhvbgogICBnYXJ5ICAgICAgICAgICAgICAgICAgIC0gR2FsYWN0aWMgYXN0cm9ub215IGFuZCBncmF2aXRhdGlvbmFsIGR5bmFtaWNzLgogICBub3ZhcyAgICAgICAgICAgICAgICAgIC0gVGhlIFVuaXRlZCBTdGF0ZXMgTmF2YWwgT2JzZXJ2YXRvcnkgTk9WQVMgYXN0cm9ub215IGxpYnJhcnkKQEAgLTEwNyw5ICsxMDYsMTEgQEAKICJmcmVlemUiLCBldGMuICAoQ29uc3VsdCB0aGUgOnJlZjpgaW5zdGFsbGluZy1pbmRleGAgZ3VpZGUgZm9yCiBjb21wbGV0ZSBkb2N1bWVudGF0aW9uIGZvciBgYHBpcGBgLikKIAotWW91IGNhbiBpbnN0YWxsIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIHBhY2thZ2UgYnkgc3BlY2lmeWluZyBhIHBhY2thZ2UncyBuYW1lOjoKK1lvdSBjYW4gaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYSBwYWNrYWdlIGJ5IHNwZWNpZnlpbmcgYSBwYWNrYWdlJ3MgbmFtZToKIAotICAtPiBwaXAgaW5zdGFsbCBub3ZhcworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBpbnN0YWxsIG5vdmFzCiAgIENvbGxlY3Rpbmcgbm92YXMKICAgICBEb3dubG9hZGluZyBub3Zhcy0zLjEuMS4zLnRhci5neiAoMTM2a0IpCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiBub3ZhcwpAQCAtMTE3LDkgKzExOCwxMSBAQAogICBTdWNjZXNzZnVsbHkgaW5zdGFsbGVkIG5vdmFzLTMuMS4xLjMKIAogWW91IGNhbiBhbHNvIGluc3RhbGwgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgcGFja2FnZSBieSBnaXZpbmcgdGhlCi1wYWNrYWdlIG5hbWUgIGZvbGxvd2VkIGJ5IGBgPT1gYCBhbmQgdGhlIHZlcnNpb24gbnVtYmVyOjoKK3BhY2thZ2UgbmFtZSAgZm9sbG93ZWQgYnkgYGA9PWBgIGFuZCB0aGUgdmVyc2lvbiBudW1iZXI6CiAKLSAgLT4gcGlwIGluc3RhbGwgcmVxdWVzdHM9PTIuNi4wCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgcmVxdWVzdHM9PTIuNi4wCiAgIENvbGxlY3RpbmcgcmVxdWVzdHM9PTIuNi4wCiAgICAgVXNpbmcgY2FjaGVkIHJlcXVlc3RzLTIuNi4wLXB5Mi5weTMtbm9uZS1hbnkud2hsCiAgIEluc3RhbGxpbmcgY29sbGVjdGVkIHBhY2thZ2VzOiByZXF1ZXN0cwpAQCAtMTI4LDkgKzEzMSwxMSBAQAogSWYgeW91IHJlLXJ1biB0aGlzIGNvbW1hbmQsIGBgcGlwYGAgd2lsbCBub3RpY2UgdGhhdCB0aGUgcmVxdWVzdGVkCiB2ZXJzaW9uIGlzIGFscmVhZHkgaW5zdGFsbGVkIGFuZCBkbyBub3RoaW5nLiAgWW91IGNhbiBzdXBwbHkgYQogZGlmZmVyZW50IHZlcnNpb24gbnVtYmVyIHRvIGdldCB0aGF0IHZlcnNpb24sIG9yIHlvdSBjYW4gcnVuIGBgcGlwCi1pbnN0YWxsIC0tdXBncmFkZWBgIHRvIHVwZ3JhZGUgdGhlIHBhY2thZ2UgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uOjoKK2luc3RhbGwgLS11cGdyYWRlYGAgdG8gdXBncmFkZSB0aGUgcGFja2FnZSB0byB0aGUgbGF0ZXN0IHZlcnNpb246CiAKLSAgLT4gcGlwIGluc3RhbGwgLS11cGdyYWRlIHJlcXVlc3RzCisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGluc3RhbGwgLS11cGdyYWRlIHJlcXVlc3RzCiAgIENvbGxlY3RpbmcgcmVxdWVzdHMKICAgSW5zdGFsbGluZyBjb2xsZWN0ZWQgcGFja2FnZXM6IHJlcXVlc3RzCiAgICAgRm91bmQgZXhpc3RpbmcgaW5zdGFsbGF0aW9uOiByZXF1ZXN0cyAyLjYuMApAQCAtMTQxLDkgKzE0NiwxMSBAQAogYGBwaXAgdW5pbnN0YWxsYGAgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgcGFja2FnZSBuYW1lcyB3aWxsIHJlbW92ZSB0aGUKIHBhY2thZ2VzIGZyb20gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLWBgcGlwIHNob3dgYCB3aWxsIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgYSBwYXJ0aWN1bGFyIHBhY2thZ2U6OgorYGBwaXAgc2hvd2BgIHdpbGwgZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBhIHBhcnRpY3VsYXIgcGFja2FnZToKIAotICAodHV0b3JpYWwtZW52KSAtPiBwaXAgc2hvdyByZXF1ZXN0cworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAodHV0b3JpYWwtZW52KSAkIHBpcCBzaG93IHJlcXVlc3RzCiAgIC0tLQogICBNZXRhZGF0YS1WZXJzaW9uOiAyLjAKICAgTmFtZTogcmVxdWVzdHMKQEAgLTE1Nyw5ICsxNjQsMTEgQEAKICAgUmVxdWlyZXM6CiAKIGBgcGlwIGxpc3RgYCB3aWxsIGRpc3BsYXkgYWxsIG9mIHRoZSBwYWNrYWdlcyBpbnN0YWxsZWQgaW4gdGhlIHZpcnR1YWwKLWVudmlyb25tZW50OjoKK2Vudmlyb25tZW50OgogCi0gICh0dXRvcmlhbC1lbnYpIC0+IHBpcCBsaXN0CisuLiBjb2RlLWJsb2NrOjogYmFzaAorCisgICh0dXRvcmlhbC1lbnYpICQgcGlwIGxpc3QKICAgbm92YXMgKDMuMS4xLjMpCiAgIG51bXB5ICgxLjkuMikKICAgcGlwICg3LjAuMykKQEAgLTE2OCwxOSArMTc3LDIzIEBACiAKIGBgcGlwIGZyZWV6ZWBgIHdpbGwgcHJvZHVjZSBhIHNpbWlsYXIgbGlzdCBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2VzLAogYnV0IHRoZSBvdXRwdXQgdXNlcyB0aGUgZm9ybWF0IHRoYXQgYGBwaXAgaW5zdGFsbGBgIGV4cGVjdHMuCi1BIGNvbW1vbiBjb252ZW50aW9uIGlzIHRvIHB1dCB0aGlzIGxpc3QgaW4gYSBgYHJlcXVpcmVtZW50cy50eHRgYCBmaWxlOjoKK0EgY29tbW9uIGNvbnZlbnRpb24gaXMgdG8gcHV0IHRoaXMgbGlzdCBpbiBhIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGZpbGU6CiAKLSAgKHR1dG9yaWFsLWVudikgLT4gcGlwIGZyZWV6ZSA+IHJlcXVpcmVtZW50cy50eHQKLSAgKHR1dG9yaWFsLWVudikgLT4gY2F0IHJlcXVpcmVtZW50cy50eHQKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgZnJlZXplID4gcmVxdWlyZW1lbnRzLnR4dAorICAodHV0b3JpYWwtZW52KSAkIGNhdCByZXF1aXJlbWVudHMudHh0CiAgIG5vdmFzPT0zLjEuMS4zCiAgIG51bXB5PT0xLjkuMgogICByZXF1ZXN0cz09Mi43LjAKIAogVGhlIGBgcmVxdWlyZW1lbnRzLnR4dGBgIGNhbiB0aGVuIGJlIGNvbW1pdHRlZCB0byB2ZXJzaW9uIGNvbnRyb2wgYW5kCiBzaGlwcGVkIGFzIHBhcnQgb2YgYW4gYXBwbGljYXRpb24uICBVc2VycyBjYW4gdGhlbiBpbnN0YWxsIGFsbCB0aGUKLW5lY2Vzc2FyeSBwYWNrYWdlcyB3aXRoIGBgaW5zdGFsbCAtcmBgOjoKK25lY2Vzc2FyeSBwYWNrYWdlcyB3aXRoIGBgaW5zdGFsbCAtcmBgOgogCi0gIC0+IHBpcCBpbnN0YWxsIC1yIHJlcXVpcmVtZW50cy50eHQKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgKHR1dG9yaWFsLWVudikgJCBwaXAgaW5zdGFsbCAtciByZXF1aXJlbWVudHMudHh0CiAgIENvbGxlY3Rpbmcgbm92YXM9PTMuMS4xLjMgKGZyb20gLXIgcmVxdWlyZW1lbnRzLnR4dCAobGluZSAxKSkKICAgICAuLi4KICAgQ29sbGVjdGluZyBudW1weT09MS45LjIgKGZyb20gLXIgcmVxdWlyZW1lbnRzLnR4dCAobGluZSAyKSkKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9jbWRsaW5lLnJzdCBiL0RvYy91c2luZy9jbWRsaW5lLnJzdAppbmRleCA2MTE3Nzk2Li44MWIwODIzIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QKKysrIGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CkBAIC0zOTYsNiArMzk2LDggQEAKICAgICAgc3RvcmVkIGluIGEgdHJhY2ViYWNrIG9mIGEgdHJhY2UuIFVzZSBgYC1YIHRyYWNlbWFsbG9jPU5GUkFNRWBgIHRvIHN0YXJ0CiAgICAgIHRyYWNpbmcgd2l0aCBhIHRyYWNlYmFjayBsaW1pdCBvZiAqTkZSQU1FKiBmcmFtZXMuIFNlZSB0aGUKICAgICAgOmZ1bmM6YHRyYWNlbWFsbG9jLnN0YXJ0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICogYGAtWCBzaG93YWxsb2Njb3VudGBgIHRvIGVuYWJsZSB0aGUgb3V0cHV0IG9mIHRoZSB0b3RhbCBjb3VudCBvZiBhbGxvY2F0ZWQKKyAgICAgb2JqZWN0cyBmb3IgZWFjaCB0eXBlIChvbmx5IHdvcmtzIHdoZW4gYnVpbHQgd2l0aCBgYENPVU5UX0FMTE9DU2BgIGRlZmluZWQpOwogCiAgICBJdCBhbHNvIGFsbG93cyBwYXNzaW5nIGFyYml0cmFyeSB2YWx1ZXMgYW5kIHJldHJpZXZpbmcgdGhlbSB0aHJvdWdoIHRoZQogICAgOmRhdGE6YHN5cy5feG9wdGlvbnNgIGRpY3Rpb25hcnkuCkBAIC00MDksNiArNDExLDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogICAgICAgVGhlIGBgLVggc2hvd3JlZmNvdW50YGAgYW5kIGBgLVggdHJhY2VtYWxsb2NgYCBvcHRpb25zLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSBgYC1YIHNob3dhbGxvY2NvdW50YGAgb3B0aW9uLgorCiAKIE9wdGlvbnMgeW91IHNob3VsZG4ndCB1c2UKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTU1NSw2ICs1NjAsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUaGUgYGBlbmNvZGluZ25hbWVgYCBwYXJ0IGlzIG5vdyBvcHRpb25hbC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSBlbmNvZGluZyBzcGVjaWZpZWQgYnkgdGhpcyB2YXJpYWJsZSBpcyBpZ25vcmVkIGZvciBpbnRlcmFjdGl2ZQorICAgICAgY29uc29sZSBidWZmZXJzIHVubGVzcyA6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTSU9FTkNPRElOR2AgaXMgYWxzbyBzcGVjaWZpZWQuCisgICAgICBGaWxlcyBhbmQgcGlwZXMgcmVkaXJlY3RlZCB0aHJvdWdoIHRoZSBzdGFuZGFyZCBzdHJlYW1zIGFyZSBub3QgYWZmZWN0ZWQuCiAKIC4uIGVudnZhcjo6IFBZVEhPTk5PVVNFUlNJVEUKIApAQCAtNjIwLDYgKzYyOSw4MSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIAorLi4gZW52dmFyOjogUFlUSE9OTUFMTE9DCisKKyAgIFNldCB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIGFuZC9vciBpbnN0YWxsIGRlYnVnIGhvb2tzLgorCisgICBTZXQgdGhlIGZhbWlseSBvZiBtZW1vcnkgYWxsb2NhdG9ycyB1c2VkIGJ5IFB5dGhvbjoKKworICAgKiBgYG1hbGxvY2BgOiB1c2UgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgZnVuY3Rpb24gb2YgdGhlIEMgbGlicmFyeQorICAgICBmb3IgYWxsIGRvbWFpbnMgKDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgLCA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCwKKyAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmApLgorICAgKiBgYHB5bWFsbG9jYGA6IHVzZSB0aGUgOnJlZjpgcHltYWxsb2MgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGZvcgorICAgICA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgZG9tYWlucyBhbmQgdXNlCisgICAgIHRoZSA6YzpmdW5jOmBtYWxsb2NgIGZ1bmN0aW9uIGZvciB0aGUgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX1JBV2AgZG9tYWluLgorCisgICBJbnN0YWxsIGRlYnVnIGhvb2tzOgorCisgICAqIGBgZGVidWdgYDogaW5zdGFsbCBkZWJ1ZyBob29rcyBvbiB0b3Agb2YgdGhlIGRlZmF1bHQgbWVtb3J5IGFsbG9jYXRvcgorICAgKiBgYG1hbGxvY19kZWJ1Z2BgOiBzYW1lIGFzIGBgbWFsbG9jYGAgYnV0IGFsc28gaW5zdGFsbCBkZWJ1ZyBob29rcworICAgKiBgYHB5bWFsbG9jX2RlYnVnYGA6IHNhbWUgYXMgYGBweW1hbGxvY2BgIGJ1dCBhbHNvIGluc3RhbGwgZGVidWcgaG9va3MKKworICAgV2hlbiBQeXRob24gaXMgY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlLCB0aGUgZGVmYXVsdCBpcyBgYHB5bWFsbG9jYGAuIFdoZW4KKyAgIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUsIHRoZSBkZWZhdWx0IGlzIGBgcHltYWxsb2NfZGVidWdgYCBhbmQgdGhlIGRlYnVnIGhvb2tzCisgICBhcmUgdXNlZCBhdXRvbWF0aWNhbGx5LgorCisgICBJZiBQeXRob24gaXMgY29uZmlndXJlZCB3aXRob3V0IGBgcHltYWxsb2NgYCBzdXBwb3J0LCBgYHB5bWFsbG9jYGAgYW5kCisgICBgYHB5bWFsbG9jX2RlYnVnYGAgYXJlIG5vdCBhdmFpbGFibGUsIHRoZSBkZWZhdWx0IGlzIGBgbWFsbG9jYGAgaW4gcmVsZWFzZQorICAgbW9kZSBhbmQgYGBtYWxsb2NfZGVidWdgYCBpbiBkZWJ1ZyBtb2RlLgorCisgICBTZWUgdGhlIDpjOmZ1bmM6YFB5TWVtX1NldHVwRGVidWdIb29rc2AgZnVuY3Rpb24gZm9yIGRlYnVnIGhvb2tzIG9uIFB5dGhvbgorICAgbWVtb3J5IGFsbG9jYXRvcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIGVudnZhcjo6IFBZVEhPTk1BTExPQ1NUQVRTCisKKyAgIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIFB5dGhvbiB3aWxsIHByaW50IHN0YXRpc3RpY3Mgb2YgdGhlCisgICA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGV2ZXJ5IHRpbWUgYSBuZXcgcHltYWxsb2Mgb2JqZWN0CisgICBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCisKKyAgIFRoaXMgdmFyaWFibGUgaXMgaWdub3JlZCBpZiB0aGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgaXMgdXNlZCB0byBmb3JjZSB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBhbGxvY2F0b3Igb2YgdGhlIEMgbGlicmFyeSwgb3IgaWYKKyAgIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGhvdXQgYGBweW1hbGxvY2BgIHN1cHBvcnQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGlzIHZhcmlhYmxlIGNhbiBub3cgYWxzbyBiZSB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisgICAgICBJdCBub3cgaGFzIG5vIGVmZmVjdCBpZiBzZXQgdG8gYW4gZW1wdHkgc3RyaW5nLgorCisKKy4uIGVudnZhcjo6IFBZVEhPTkxFR0FDWVdJTkRPV1NGU0VOQ09ESU5HCisKKyAgIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIGVycm9ycyBtb2RlCisgICB3aWxsIHJldmVydCB0byB0aGVpciBwcmUtMy42IHZhbHVlcyBvZiAnbWJjcycgYW5kICdyZXBsYWNlJywgcmVzcGVjdGl2ZWx5LgorICAgT3RoZXJ3aXNlLCB0aGUgbmV3IGRlZmF1bHRzICd1dGYtOCcgYW5kICdzdXJyb2dhdGVwYXNzJyBhcmUgdXNlZC4KKworICAgVGhpcyBtYXkgYWxzbyBiZSBlbmFibGVkIGF0IHJ1bnRpbWUgd2l0aAorICAgOmZ1bmM6YHN5cy5fZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoKWAuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFNlZSA6cGVwOmA1MjlgIGZvciBtb3JlIGRldGFpbHMuCisKKy4uIGVudnZhcjo6IFBZVEhPTkxFR0FDWVdJTkRPV1NJT0VOQ09ESU5HCisKKyAgIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcsIGRvZXMgbm90IHVzZSB0aGUgbmV3IGNvbnNvbGUgcmVhZGVyIGFuZAorICAgd3JpdGVyLiBUaGlzIG1lYW5zIHRoYXQgVW5pY29kZSBjaGFyYWN0ZXJzIHdpbGwgYmUgZW5jb2RlZCBhY2NvcmRpbmcgdG8KKyAgIHRoZSBhY3RpdmUgY29uc29sZSBjb2RlIHBhZ2UsIHJhdGhlciB0aGFuIHVzaW5nIHV0Zi04LgorCisgICBUaGlzIHZhcmlhYmxlIGlzIGlnbm9yZWQgaWYgdGhlIHN0YW5kYXJkIHN0cmVhbXMgYXJlIHJlZGlyZWN0ZWQgKHRvIGZpbGVzCisgICBvciBwaXBlcykgcmF0aGVyIHRoYW4gcmVmZXJyaW5nIHRvIGNvbnNvbGUgYnVmZmVycy4KKworICAgQXZhaWxhYmlsaXR5OiBXaW5kb3dzCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiBEZWJ1Zy1tb2RlIHZhcmlhYmxlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn4KIApAQCAtNjM1LDkgKzcxOSwzIEBACiAKICAgIElmIHNldCwgUHl0aG9uIHdpbGwgZHVtcCBvYmplY3RzIGFuZCByZWZlcmVuY2UgY291bnRzIHN0aWxsIGFsaXZlIGFmdGVyCiAgICBzaHV0dGluZyBkb3duIHRoZSBpbnRlcnByZXRlci4KLQotCi0uLiBlbnZ2YXI6OiBQWVRIT05NQUxMT0NTVEFUUwotCi0gICBJZiBzZXQsIFB5dGhvbiB3aWxsIHByaW50IG1lbW9yeSBhbGxvY2F0aW9uIHN0YXRpc3RpY3MgZXZlcnkgdGltZSBhIG5ldwotICAgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZCBvbiBzaHV0ZG93bi4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy9pbmRleC5yc3QgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CmluZGV4IDUwMmFmYTkuLmE1ZGY3MTMgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy9pbmRleC5yc3QKKysrIGIvRG9jL3VzaW5nL2luZGV4LnJzdApAQCAtMTcsNCArMTcsMyBAQAogICAgdW5peC5yc3QKICAgIHdpbmRvd3MucnN0CiAgICBtYWMucnN0Ci0gICBzY3JpcHRzLnJzdApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL21hYy5yc3QgYi9Eb2MvdXNpbmcvbWFjLnJzdAppbmRleCAwNWM5MWJiLi44ZjFhYzNmIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvbWFjLnJzdAorKysgYi9Eb2MvdXNpbmcvbWFjLnJzdApAQCAtMjUsNyArMjUsNyBAQAogCiBXaGF0IHlvdSBnZXQgYWZ0ZXIgaW5zdGFsbGluZyBpcyBhIG51bWJlciBvZiB0aGluZ3M6CiAKLSogQSA6ZmlsZTpgTWFjUHl0aG9uIDMuNWAgZm9sZGVyIGluIHlvdXIgOmZpbGU6YEFwcGxpY2F0aW9uc2AgZm9sZGVyLiBJbiBoZXJlCisqIEEgOmZpbGU6YE1hY1B5dGhvbiAzLjZgIGZvbGRlciBpbiB5b3VyIDpmaWxlOmBBcHBsaWNhdGlvbnNgIGZvbGRlci4gSW4gaGVyZQogICB5b3UgZmluZCBJRExFLCB0aGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdGhhdCBpcyBhIHN0YW5kYXJkIHBhcnQgb2Ygb2ZmaWNpYWwKICAgUHl0aG9uIGRpc3RyaWJ1dGlvbnM7IFB5dGhvbkxhdW5jaGVyLCB3aGljaCBoYW5kbGVzIGRvdWJsZS1jbGlja2luZyBQeXRob24KICAgc2NyaXB0cyBmcm9tIHRoZSBGaW5kZXI7IGFuZCB0aGUgIkJ1aWxkIEFwcGxldCIgdG9vbCwgd2hpY2ggYWxsb3dzIHlvdSB0bwpAQCAtOTMsNyArOTMsNyBAQAogYW55dGhpbmcgdGhhdCBoYXMgYSBHVUkpIG5lZWQgdG8gYmUgcnVuIGluIGEgc3BlY2lhbCB3YXkuIFVzZSA6cHJvZ3JhbTpgcHl0aG9ud2AKIGluc3RlYWQgb2YgOnByb2dyYW06YHB5dGhvbmAgdG8gc3RhcnQgc3VjaCBzY3JpcHRzLgogCi1XaXRoIFB5dGhvbiAzLjUsIHlvdSBjYW4gdXNlIGVpdGhlciA6cHJvZ3JhbTpgcHl0aG9uYCBvciA6cHJvZ3JhbTpgcHl0aG9ud2AuCitXaXRoIFB5dGhvbiAzLjYsIHlvdSBjYW4gdXNlIGVpdGhlciA6cHJvZ3JhbTpgcHl0aG9uYCBvciA6cHJvZ3JhbTpgcHl0aG9ud2AuCiAKIAogQ29uZmlndXJhdGlvbgpAQCAtMTU5LDcgKzE1OSw3IEBACiBEaXN0cmlidXRpbmcgUHl0aG9uIEFwcGxpY2F0aW9ucyBvbiB0aGUgTWFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVRoZSAiQnVpbGQgQXBwbGV0IiB0b29sIHRoYXQgaXMgcGxhY2VkIGluIHRoZSBNYWNQeXRob24gMy41IGZvbGRlciBpcyBmaW5lIGZvcgorVGhlICJCdWlsZCBBcHBsZXQiIHRvb2wgdGhhdCBpcyBwbGFjZWQgaW4gdGhlIE1hY1B5dGhvbiAzLjYgZm9sZGVyIGlzIGZpbmUgZm9yCiBwYWNrYWdpbmcgc21hbGwgUHl0aG9uIHNjcmlwdHMgb24geW91ciBvd24gbWFjaGluZSB0byBydW4gYXMgYSBzdGFuZGFyZCBNYWMKIGFwcGxpY2F0aW9uLiBUaGlzIHRvb2wsIGhvd2V2ZXIsIGlzIG5vdCByb2J1c3QgZW5vdWdoIHRvIGRpc3RyaWJ1dGUgUHl0aG9uCiBhcHBsaWNhdGlvbnMgdG8gb3RoZXIgdXNlcnMuCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QgYi9Eb2MvdXNpbmcvc2NyaXB0cy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjODc0MTYuLjAwMDAwMDAKLS0tIGEvRG9jL3VzaW5nL3NjcmlwdHMucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotLi4gX3Rvb2xzLWFuZC1zY3JpcHRzOgotCi1BZGRpdGlvbmFsIFRvb2xzIGFuZCBTY3JpcHRzCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLS4uIF9zY3JpcHRzLXB5dmVudjoKLQotcHl2ZW52IC0gQ3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIGluY2x1ZGU6OiB2ZW52LWNyZWF0ZS5pbmMKLQpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYyBiL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMKaW5kZXggN2FkMzAwOC4uNTNmNDMxYiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3ZlbnYtY3JlYXRlLmluYworKysgYi9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCkBAIC0xLDMxICsxLDM5IEBACiBDcmVhdGlvbiBvZiA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50cyA8dmVudi1kZWY+YCBpcyBkb25lIGJ5IGV4ZWN1dGluZyB0aGUKLWBgcHl2ZW52YGAgc2NyaXB0OjoKK2NvbW1hbmQgYGB2ZW52YGA6OgogCi0gICAgcHl2ZW52IC9wYXRoL3RvL25ldy92aXJ0dWFsL2Vudmlyb25tZW50CisgICAgcHl0aG9uMyAtbSB2ZW52IC9wYXRoL3RvL25ldy92aXJ0dWFsL2Vudmlyb25tZW50CiAKIFJ1bm5pbmcgdGhpcyBjb21tYW5kIGNyZWF0ZXMgdGhlIHRhcmdldCBkaXJlY3RvcnkgKGNyZWF0aW5nIGFueSBwYXJlbnQKIGRpcmVjdG9yaWVzIHRoYXQgZG9uJ3QgZXhpc3QgYWxyZWFkeSkgYW5kIHBsYWNlcyBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgaW4gaXQKLXdpdGggYSBgYGhvbWVgYCBrZXkgcG9pbnRpbmcgdG8gdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gdGhlIGNvbW1hbmQgd2FzIHJ1bgotZnJvbS4gIEl0IGFsc28gY3JlYXRlcyBhIGBgYmluYGAgKG9yIGBgU2NyaXB0c2BgIG9uIFdpbmRvd3MpIHN1YmRpcmVjdG9yeQord2l0aCBhIGBgaG9tZWBgIGtleSBwb2ludGluZyB0byB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBmcm9tIHdoaWNoIHRoZSBjb21tYW5kCit3YXMgcnVuLiAgSXQgYWxzbyBjcmVhdGVzIGEgYGBiaW5gYCAob3IgYGBTY3JpcHRzYGAgb24gV2luZG93cykgc3ViZGlyZWN0b3J5CiBjb250YWluaW5nIGEgY29weSBvZiB0aGUgYGBweXRob25gYCBiaW5hcnkgKG9yIGJpbmFyaWVzLCBpbiB0aGUgY2FzZSBvZgogV2luZG93cykuICBJdCBhbHNvIGNyZWF0ZXMgYW4gKGluaXRpYWxseSBlbXB0eSkgYGBsaWIvcHl0aG9uWC5ZL3NpdGUtcGFja2FnZXNgYAogc3ViZGlyZWN0b3J5IChvbiBXaW5kb3dzLCB0aGlzIGlzIGBgTGliXHNpdGUtcGFja2FnZXNgYCkuCiAKKy4uIGRlcHJlY2F0ZWQ6OiAzLjYKKyAgIGBgcHl2ZW52YGAgd2FzIHRoZSByZWNvbW1lbmRlZCB0b29sIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cyBmb3IKKyAgIFB5dGhvbiAzLjMgYW5kIDMuNCwgYW5kIGlzIGBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjYKKyAgIDxodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXYvd2hhdHNuZXcvMy42Lmh0bWwjZGVwcmVjYXRlZC1mZWF0dXJlcz5gXy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKKyAgIFRoZSB1c2Ugb2YgYGB2ZW52YGAgaXMgbm93IHJlY29tbWVuZGVkIGZvciBjcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cy4KKwogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IENyZWF0aW5nIGFuZCB1c2luZyB2aXJ0dWFsIGVudmlyb25tZW50cwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvI2NyZWF0aW5nLXZpcnR1YWwtZW52aXJvbm1lbnRzPmBfXworICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvaW5zdGFsbGluZy8jY3JlYXRpbmctdmlydHVhbC1lbnZpcm9ubWVudHM+YF9fCiAKIC4uIGhpZ2hsaWdodDo6IG5vbmUKIAotT24gV2luZG93cywgeW91IG1heSBoYXZlIHRvIGludm9rZSB0aGUgYGBweXZlbnZgYCBzY3JpcHQgYXMgZm9sbG93cywgaWYgeW91Ci1kb24ndCBoYXZlIHRoZSByZWxldmFudCBQQVRIIGFuZCBQQVRIRVhUIHNldHRpbmdzOjoKK09uIFdpbmRvd3MsIGludm9rZSB0aGUgYGB2ZW52YGAgY29tbWFuZCBhcyBmb2xsb3dzOjoKIAotICAgIGM6XFRlbXA+YzpcUHl0aG9uMzVccHl0aG9uIGM6XFB5dGhvbjM1XFRvb2xzXFNjcmlwdHNccHl2ZW52LnB5IG15ZW52CisgICAgYzpcPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IGM6XHBhdGhcdG9cbXllbnYKIAotb3IgZXF1aXZhbGVudGx5OjoKK0FsdGVybmF0aXZlbHksIGlmIHlvdSBjb25maWd1cmVkIHRoZSBgYFBBVEhgYCBhbmQgYGBQQVRIRVhUYGAgdmFyaWFibGVzIGZvcgoreW91ciA6cmVmOmBQeXRob24gaW5zdGFsbGF0aW9uIDx1c2luZy1vbi13aW5kb3dzPmA6OgogCi0gICAgYzpcVGVtcD5jOlxQeXRob24zNVxweXRob24gLW0gdmVudiBteWVudgorICAgIGM6XD5weXRob24gLW0gdmVudiBteWVudiBjOlxwYXRoXHRvXG15ZW52CiAKIFRoZSBjb21tYW5kLCBpZiBydW4gd2l0aCBgYC1oYGAsIHdpbGwgc2hvdyB0aGUgYXZhaWxhYmxlIG9wdGlvbnM6OgogCkBAIC0zNiwyNSArNDQsMjYgQEAKICAgICBDcmVhdGVzIHZpcnR1YWwgUHl0aG9uIGVudmlyb25tZW50cyBpbiBvbmUgb3IgbW9yZSB0YXJnZXQgZGlyZWN0b3JpZXMuCiAKICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKLSAgICAgIEVOVl9ESVIgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KKyAgICAgIEVOVl9ESVIgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgogCiAgICAgb3B0aW9uYWwgYXJndW1lbnRzOgotICAgICAgLWgsIC0taGVscCAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0Ci0gICAgICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZS1wYWNrYWdlcyBkaXIuCi0gICAgICAtLXN5bWxpbmtzICAgICAgICAgICAgIFRyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCB3aGVuIHN5bWxpbmtzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KLSAgICAgIC0tY29waWVzICAgICAgICAgICAgICAgVHJ5IHRvIHVzZSBjb3BpZXMgcmF0aGVyIHRoYW4gc3ltbGlua3MsIGV2ZW4gd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcyBhcmUgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KLSAgICAgIC0tY2xlYXIgICAgICAgICAgICAgICAgRGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCi0gICAgICAtLXVwZ3JhZGUgICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgotICAgICAgLS13aXRob3V0LXBpcCAgICAgICAgICBTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlIHZpcnR1YWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHBpcCBpcyBib290c3RyYXBwZWQgYnkgZGVmYXVsdCkKKyAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgICAtLXN5c3RlbS1zaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgorICAgICAgLS1zeW1saW5rcyAgICAgICAgICAgIFRyeSB0byB1c2Ugc3ltbGlua3MgcmF0aGVyIHRoYW4gY29waWVzLCB3aGVuIHN5bWxpbmtzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgorICAgICAgLS1jb3BpZXMgICAgICAgICAgICAgIFRyeSB0byB1c2UgY29waWVzIHJhdGhlciB0aGFuIHN5bWxpbmtzLCBldmVuIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1saW5rcyBhcmUgdGhlIGRlZmF1bHQgZm9yIHRoZSBwbGF0Zm9ybS4KKyAgICAgIC0tY2xlYXIgICAgICAgICAgICAgICBEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgorICAgICAgLS11cGdyYWRlICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCisgICAgICAtLXdpdGhvdXQtcGlwICAgICAgICAgU2tpcHMgaW5zdGFsbGluZyBvciB1cGdyYWRpbmcgcGlwIGluIHRoZSB2aXJ0dWFsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHBpcCBpcyBib290c3RyYXBwZWQgYnkgZGVmYXVsdCkKIAotRGVwZW5kaW5nIG9uIGhvdyB0aGUgYGB2ZW52YGAgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBpbnZva2VkLCB0aGUgdXNhZ2UgbWVzc2FnZQotbWF5IHZhcnkgc2xpZ2h0bHksIGUuZy4gcmVmZXJlbmNpbmcgYGBweXZlbnZgYCByYXRoZXIgdGhhbiBgYHZlbnZgYC4KKyAgICBPbmNlIGFuIGVudmlyb25tZW50IGhhcyBiZWVuIGNyZWF0ZWQsIHlvdSBtYXkgd2lzaCB0byBhY3RpdmF0ZSBpdCwgZS5nLiBieQorICAgIHNvdXJjaW5nIGFuIGFjdGl2YXRlIHNjcmlwdCBpbiBpdHMgYmluIGRpcmVjdG9yeS4KIAogLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgIEluc3RhbGxzIHBpcCBieSBkZWZhdWx0LCBhZGRlZCB0aGUgYGAtLXdpdGhvdXQtcGlwYGAgIGFuZCBgYC0tY29waWVzYGAKQEAgLTczLDEyICs4MiwxMyBAQAogVW5sZXNzIHRoZSBgYC0td2l0aG91dC1waXBgYCBvcHRpb24gaXMgZ2l2ZW4sIDptb2Q6YGVuc3VyZXBpcGAgd2lsbCBiZQogaW52b2tlZCB0byBib290c3RyYXAgYGBwaXBgYCBpbnRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgogCi1NdWx0aXBsZSBwYXRocyBjYW4gYmUgZ2l2ZW4gdG8gYGBweXZlbnZgYCwgaW4gd2hpY2ggY2FzZSBhbiBpZGVudGljYWwKLXZpcnR1YWxlbnYgd2lsbCBiZSBjcmVhdGVkLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnMsIGF0IGVhY2gKLXByb3ZpZGVkIHBhdGguCitNdWx0aXBsZSBwYXRocyBjYW4gYmUgZ2l2ZW4gdG8gYGB2ZW52YGAsIGluIHdoaWNoIGNhc2UgYW4gaWRlbnRpY2FsIHZpcnR1YWwKK2Vudmlyb25tZW50IHdpbGwgYmUgY3JlYXRlZCwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBvcHRpb25zLCBhdCBlYWNoIHByb3ZpZGVkCitwYXRoLgogCi1PbmNlIGEgdmVudiBoYXMgYmVlbiBjcmVhdGVkLCBpdCBjYW4gYmUgImFjdGl2YXRlZCIgdXNpbmcgYSBzY3JpcHQgaW4gdGhlCi12ZW52J3MgYmluYXJ5IGRpcmVjdG9yeS4gVGhlIGludm9jYXRpb24gb2YgdGhlIHNjcmlwdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYzoKK09uY2UgYSB2aXJ0dWFsIGVudmlyb25tZW50IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhCitzY3JpcHQgaW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUKK3NjcmlwdCBpcyBwbGF0Zm9ybS1zcGVjaWZpYzoKIAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IFBsYXRmb3JtICAgIHwgU2hlbGwgICAgICAgICAgIHwgQ29tbWFuZCB0byBhY3RpdmF0ZSB2aXJ0dWFsIGVudmlyb25tZW50IHwKQEAgLTk1LDE2ICsxMDUsMTcgQEAKICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiBZb3UgZG9uJ3Qgc3BlY2lmaWNhbGx5ICpuZWVkKiB0byBhY3RpdmF0ZSBhbiBlbnZpcm9ubWVudDsgYWN0aXZhdGlvbiBqdXN0Ci1wcmVwZW5kcyB0aGUgdmVudidzIGJpbmFyeSBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCBzbyB0aGF0ICJweXRob24iIGludm9rZXMgdGhlCi12ZW52J3MgUHl0aG9uIGludGVycHJldGVyIGFuZCB5b3UgY2FuIHJ1biBpbnN0YWxsZWQgc2NyaXB0cyB3aXRob3V0IGhhdmluZyB0bwotdXNlIHRoZWlyIGZ1bGwgcGF0aC4gSG93ZXZlciwgYWxsIHNjcmlwdHMgaW5zdGFsbGVkIGluIGEgdmVudiBzaG91bGQgYmUKLXJ1bm5hYmxlIHdpdGhvdXQgYWN0aXZhdGluZyBpdCwgYW5kIHJ1biB3aXRoIHRoZSB2ZW52J3MgUHl0aG9uIGF1dG9tYXRpY2FsbHkuCitwcmVwZW5kcyB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyeSBkaXJlY3RvcnkgdG8geW91ciBwYXRoLCBzbyB0aGF0CisicHl0aG9uIiBpbnZva2VzIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgUHl0aG9uIGludGVycHJldGVyIGFuZCB5b3UgY2FuIHJ1bgoraW5zdGFsbGVkIHNjcmlwdHMgd2l0aG91dCBoYXZpbmcgdG8gdXNlIHRoZWlyIGZ1bGwgcGF0aC4gSG93ZXZlciwgYWxsIHNjcmlwdHMKK2luc3RhbGxlZCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgc2hvdWxkIGJlIHJ1bm5hYmxlIHdpdGhvdXQgYWN0aXZhdGluZyBpdCwKK2FuZCBydW4gd2l0aCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIFB5dGhvbiBhdXRvbWF0aWNhbGx5LgogCi1Zb3UgY2FuIGRlYWN0aXZhdGUgYSB2ZW52IGJ5IHR5cGluZyAiZGVhY3RpdmF0ZSIgaW4geW91ciBzaGVsbC4gVGhlIGV4YWN0Ci1tZWNoYW5pc20gaXMgcGxhdGZvcm0tc3BlY2lmaWM6IGZvciBleGFtcGxlLCB0aGUgQmFzaCBhY3RpdmF0aW9uIHNjcmlwdCBkZWZpbmVzCi1hICJkZWFjdGl2YXRlIiBmdW5jdGlvbiwgd2hlcmVhcyBvbiBXaW5kb3dzIHRoZXJlIGFyZSBzZXBhcmF0ZSBzY3JpcHRzIGNhbGxlZAotYGBkZWFjdGl2YXRlLmJhdGBgIGFuZCBgYERlYWN0aXZhdGUucHMxYGAgd2hpY2ggYXJlIGluc3RhbGxlZCB3aGVuIHRoZSB2ZW52IGlzCi1jcmVhdGVkLgorWW91IGNhbiBkZWFjdGl2YXRlIGEgdmlydHVhbCBlbnZpcm9ubWVudCBieSB0eXBpbmcgImRlYWN0aXZhdGUiIGluIHlvdXIgc2hlbGwuCitUaGUgZXhhY3QgbWVjaGFuaXNtIGlzIHBsYXRmb3JtLXNwZWNpZmljOiBmb3IgZXhhbXBsZSwgdGhlIEJhc2ggYWN0aXZhdGlvbgorc2NyaXB0IGRlZmluZXMgYSAiZGVhY3RpdmF0ZSIgZnVuY3Rpb24sIHdoZXJlYXMgb24gV2luZG93cyB0aGVyZSBhcmUgc2VwYXJhdGUKK3NjcmlwdHMgY2FsbGVkIGBgZGVhY3RpdmF0ZS5iYXRgYCBhbmQgYGBEZWFjdGl2YXRlLnBzMWBgIHdoaWNoIGFyZSBpbnN0YWxsZWQKK3doZW4gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgY3JlYXRlZC4KIAogLi4gdmVyc2lvbmFkZGVkOjogMy40CiAgICBgYGZpc2hgYCBhbmQgYGBjc2hgYCBhY3RpdmF0aW9uIHNjcmlwdHMuCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKaW5kZXggYTRhNmEzMC4uODFlZmJiMCAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0CisrKyBiL0RvYy91c2luZy93aW5kb3dzLnJzdApAQCAtMjksMTUgKzI5LDE1IEBACiAKIEFzIHNwZWNpZmllZCBpbiA6cGVwOmAxMWAsIGEgUHl0aG9uIHJlbGVhc2Ugb25seSBzdXBwb3J0cyBhIFdpbmRvd3MgcGxhdGZvcm0KIHdoaWxlIE1pY3Jvc29mdCBjb25zaWRlcnMgdGhlIHBsYXRmb3JtIHVuZGVyIGV4dGVuZGVkIHN1cHBvcnQuIFRoaXMgbWVhbnMgdGhhdAotUHl0aG9uIDMuNSBzdXBwb3J0cyBXaW5kb3dzIFZpc3RhIGFuZCBuZXdlci4gSWYgeW91IHJlcXVpcmUgV2luZG93cyBYUCBzdXBwb3J0Ci10aGVuIHBsZWFzZSBpbnN0YWxsIFB5dGhvbiAzLjQuCitQeXRob24gfHZlcnNpb258IHN1cHBvcnRzIFdpbmRvd3MgVmlzdGEgYW5kIG5ld2VyLiBJZiB5b3UgcmVxdWlyZSBXaW5kb3dzIFhQCitzdXBwb3J0IHRoZW4gcGxlYXNlIGluc3RhbGwgUHl0aG9uIDMuNC4KIAogSW5zdGFsbGF0aW9uIFN0ZXBzCiAtLS0tLS0tLS0tLS0tLS0tLS0KIAotRm91ciBQeXRob24gMy41IGluc3RhbGxlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLSB0d28gZWFjaCBmb3IgdGhlIDMyLWJpdAotYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuIFRoZSAqd2ViIGluc3RhbGxlciogaXMgYSBzbWFsbCBpbml0aWFsCi1kb3dubG9hZCwgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhcworRm91ciBQeXRob24gfHZlcnNpb258IGluc3RhbGxlcnMgYXJlIGF2YWlsYWJsZSBmb3IgZG93bmxvYWQgLSB0d28gZWFjaCBmb3IgdGhlCiszMi1iaXQgYW5kIDY0LWJpdCB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuIFRoZSAqd2ViIGluc3RhbGxlciogaXMgYSBzbWFsbAoraW5pdGlhbCBkb3dubG9hZCwgYW5kIGl0IHdpbGwgYXV0b21hdGljYWxseSBkb3dubG9hZCB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBhcwogbmVjZXNzYXJ5LiBUaGUgKm9mZmxpbmUgaW5zdGFsbGVyKiBpbmNsdWRlcyB0aGUgY29tcG9uZW50cyBuZWNlc3NhcnkgZm9yIGEKIGRlZmF1bHQgaW5zdGFsbGF0aW9uIGFuZCBvbmx5IHJlcXVpcmVzIGFuIGludGVybmV0IGNvbm5lY3Rpb24gZm9yIG9wdGlvbmFsCiBmZWF0dXJlcy4gU2VlIDpyZWY6YGluc3RhbGwtbGF5b3V0LW9wdGlvbmAgZm9yIG90aGVyIHdheXMgdG8gYXZvaWQgZG93bmxvYWRpbmcKQEAgLTc0LDYgKzc0LDMxIEBACiAqIElmIHNlbGVjdGVkLCB0aGUgaW5zdGFsbCBkaXJlY3Rvcnkgd2lsbCBiZSBhZGRlZCB0byB0aGUgc3lzdGVtIDplbnZ2YXI6YFBBVEhgCiAqIFNob3J0Y3V0cyBhcmUgYXZhaWxhYmxlIGZvciBhbGwgdXNlcnMKIAorLi4gX21heC1wYXRoOgorCitSZW1vdmluZyB0aGUgTUFYX1BBVEggTGltaXRhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2luZG93cyBoaXN0b3JpY2FsbHkgaGFzIGxpbWl0ZWQgcGF0aCBsZW5ndGhzIHRvIDI2MCBjaGFyYWN0ZXJzLiBUaGlzIG1lYW50IHRoYXQKK3BhdGhzIGxvbmdlciB0aGFuIHRoaXMgd291bGQgbm90IHJlc29sdmUgYW5kIGVycm9ycyB3b3VsZCByZXN1bHQuCisKK0luIHRoZSBsYXRlc3QgdmVyc2lvbnMgb2YgV2luZG93cywgdGhpcyBsaW1pdGF0aW9uIGNhbiBiZSBleHBhbmRlZCB0bworYXBwcm94aW1hdGVseSAzMiwwMDAgY2hhcmFjdGVycy4gWW91ciBhZG1pbmlzdHJhdG9yIHdpbGwgbmVlZCB0byBhY3RpdmF0ZSB0aGUKKyJFbmFibGUgV2luMzIgbG9uZyBwYXRocyIgZ3JvdXAgcG9saWN5LCBvciBzZXQgdGhlIHJlZ2lzdHJ5IHZhbHVlCitgYEhLRVlfTE9DQUxfTUFDSElORVxTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxGaWxlU3lzdGVtQExvbmdQYXRoc0VuYWJsZWRgYAordG8gYGAxYGAuCisKK1RoaXMgYWxsb3dzIHRoZSA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24sIHRoZSA6bW9kOmBvc2AgbW9kdWxlIGFuZCBtb3N0IG90aGVyCitwYXRoIGZ1bmN0aW9uYWxpdHkgdG8gYWNjZXB0IGFuZCByZXR1cm4gcGF0aHMgbG9uZ2VyIHRoYW4gMjYwIGNoYXJhY3RlcnMgd2hlbgordXNpbmcgc3RyaW5ncy4gKFVzZSBvZiBieXRlcyBhcyBwYXRocyBpcyBkZXByZWNhdGVkIG9uIFdpbmRvd3MsIGFuZCB0aGlzIGZlYXR1cmUKK2lzIG5vdCBhdmFpbGFibGUgd2hlbiB1c2luZyBieXRlcy4pCisKK0FmdGVyIGNoYW5naW5nIHRoZSBhYm92ZSBvcHRpb24sIG5vIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgU3VwcG9ydCBmb3IgbG9uZyBwYXRocyB3YXMgZW5hYmxlZCBpbiBQeXRob24uCisKIC4uIF9pbnN0YWxsLXF1aWV0LW9wdGlvbjoKIAogSW5zdGFsbGluZyBXaXRob3V0IFVJCkBAIC0xNjgsMTMgKzE5MywxMyBAQAogRm9yIGV4YW1wbGUsIHRvIHNpbGVudGx5IGluc3RhbGwgYSBkZWZhdWx0LCBzeXN0ZW0td2lkZSBQeXRob24gaW5zdGFsbGF0aW9uLAogeW91IGNvdWxkIHVzZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgKGZyb20gYW4gZWxldmF0ZWQgY29tbWFuZCBwcm9tcHQpOjoKIAotICAgIHB5dGhvbi0zLjUuMC5leGUgL3F1aWV0IEluc3RhbGxBbGxVc2Vycz0xIFByZXBlbmRQYXRoPTEgSW5jbHVkZV90ZXN0PTAKKyAgICBweXRob24tMy42LjAuZXhlIC9xdWlldCBJbnN0YWxsQWxsVXNlcnM9MSBQcmVwZW5kUGF0aD0xIEluY2x1ZGVfdGVzdD0wCiAKIFRvIGFsbG93IHVzZXJzIHRvIGVhc2lseSBpbnN0YWxsIGEgcGVyc29uYWwgY29weSBvZiBQeXRob24gd2l0aG91dCB0aGUgdGVzdAogc3VpdGUsIHlvdSBjb3VsZCBwcm92aWRlIGEgc2hvcnRjdXQgd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQuIFRoaXMgd2lsbAogZGlzcGxheSBhIHNpbXBsaWZpZWQgaW5pdGlhbCBwYWdlIGFuZCBkaXNhbGxvdyBjdXN0b21pemF0aW9uOjoKIAotICAgIHB5dGhvbi0zLjUuMC5leGUgSW5zdGFsbEFsbFVzZXJzPTAgSW5jbHVkZV9sYXVuY2hlcj0wIEluY2x1ZGVfdGVzdD0wCisgICAgcHl0aG9uLTMuNi4wLmV4ZSBJbnN0YWxsQWxsVXNlcnM9MCBJbmNsdWRlX2xhdW5jaGVyPTAgSW5jbHVkZV90ZXN0PTAKICAgICAgICAgU2ltcGxlSW5zdGFsbD0xIFNpbXBsZUluc3RhbGxEZXNjcmlwdGlvbj0iSnVzdCBmb3IgbWUsIG5vIHRlc3Qgc3VpdGUuIgogCiAoTm90ZSB0aGF0IG9taXR0aW5nIHRoZSBsYXVuY2hlciBhbHNvIG9taXRzIGZpbGUgYXNzb2NpYXRpb25zLCBhbmQgaXMgb25seQpAQCAtMjA5LDEzICsyMzQsMTMgQEAKIHVzZWZ1bCB0byBoYXZlIGEgbG9jYWxseSBjYWNoZWQgY29weS4KIAogRXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmQgZnJvbSBDb21tYW5kIFByb21wdCB0byBkb3dubG9hZCBhbGwgcG9zc2libGUKLXJlcXVpcmVkIGZpbGVzLiAgUmVtZW1iZXIgdG8gc3Vic3RpdHV0ZSBgYHB5dGhvbi0zLjUuMC5leGVgYCBmb3IgdGhlIGFjdHVhbAorcmVxdWlyZWQgZmlsZXMuICBSZW1lbWJlciB0byBzdWJzdGl0dXRlIGBgcHl0aG9uLTMuNi4wLmV4ZWBgIGZvciB0aGUgYWN0dWFsCiBuYW1lIG9mIHlvdXIgaW5zdGFsbGVyLCBhbmQgdG8gY3JlYXRlIGxheW91dHMgaW4gdGhlaXIgb3duIGRpcmVjdG9yaWVzIHRvCiBhdm9pZCBjb2xsaXNpb25zIGJldHdlZW4gZmlsZXMgd2l0aCB0aGUgc2FtZSBuYW1lLgogCiA6OgogCi0gICAgcHl0aG9uLTMuNS4wLmV4ZSAvbGF5b3V0IFtvcHRpb25hbCB0YXJnZXQgZGlyZWN0b3J5XQorICAgIHB5dGhvbi0zLjYuMC5leGUgL2xheW91dCBbb3B0aW9uYWwgdGFyZ2V0IGRpcmVjdG9yeV0KIAogWW91IG1heSBhbHNvIHNwZWNpZnkgdGhlIGBgL3F1aWV0YGAgb3B0aW9uIHRvIGhpZGUgdGhlIHByb2dyZXNzIGRpc3BsYXkuCiAKQEAgLTMyMCw3ICszNDUsNyBAQAogVG8gdGVtcG9yYXJpbHkgc2V0IGVudmlyb25tZW50IHZhcmlhYmxlcywgb3BlbiBDb21tYW5kIFByb21wdCBhbmQgdXNlIHRoZQogOmNvbW1hbmQ6YHNldGAgY29tbWFuZDo6CiAKLSAgICBDOlw+c2V0IFBBVEg9QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy41OyVQQVRIJQorICAgIEM6XD5zZXQgUEFUSD1DOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjY7JVBBVEglCiAgICAgQzpcPnNldCBQWVRIT05QQVRIPSVQWVRIT05QQVRIJTtDOlxNeV9weXRob25fbGliCiAgICAgQzpcPnB5dGhvbgogCkBAIC0zNzYsMTAgKzQwMSwxMCBAQAogCiBCZXNpZGVzIHVzaW5nIHRoZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgc3RhcnQgbWVudSBlbnRyeSBmb3IgdGhlIFB5dGhvbgogaW50ZXJwcmV0ZXIsIHlvdSBtaWdodCB3YW50IHRvIHN0YXJ0IFB5dGhvbiBpbiB0aGUgY29tbWFuZCBwcm9tcHQuIFRoZQotaW5zdGFsbGVyIGZvciBQeXRob24gMy41IGFuZCBsYXRlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCitpbnN0YWxsZXIgaGFzIGFuIG9wdGlvbiB0byBzZXQgdGhhdCB1cCBmb3IgeW91LgogCi1PbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgaW5zdGFsbGVyLCBhbiBvcHRpb24gbGFiZWxsZWQgIkFkZCBQeXRob24gMy41IHRvCi1QQVRIIiBjYW4gYmUgc2VsZWN0ZWQgdG8gaGF2ZSB0aGUgaW5zdGFsbGVyIGFkZCB0aGUgaW5zdGFsbCBsb2NhdGlvbiBpbnRvIHRoZQorT24gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGluc3RhbGxlciwgYW4gb3B0aW9uIGxhYmVsbGVkICJBZGQgUHl0aG9uIHRvIFBBVEgiCittYXkgYmUgc2VsZWN0ZWQgdG8gaGF2ZSB0aGUgaW5zdGFsbGVyIGFkZCB0aGUgaW5zdGFsbCBsb2NhdGlvbiBpbnRvIHRoZQogOmVudnZhcjpgUEFUSGAuICBUaGUgbG9jYXRpb24gb2YgdGhlIDpmaWxlOmBTY3JpcHRzXFxgIGZvbGRlciBpcyBhbHNvIGFkZGVkLgogVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUgOmNvbW1hbmQ6YHB5dGhvbmAgdG8gcnVuIHRoZSBpbnRlcnByZXRlciwgYW5kCiA6Y29tbWFuZDpgcGlwYCBmb3IgdGhlIHBhY2thZ2UgaW5zdGFsbGVyLiBUaHVzLCB5b3UgY2FuIGFsc28gZXhlY3V0ZSB5b3VyCkBAIC0zOTMsNyArNDE4LDcgQEAKIGV4YW1wbGUgdmFyaWFibGUgY291bGQgbG9vayBsaWtlIHRoaXMgKGFzc3VtaW5nIHRoZSBmaXJzdCB0d28gZW50cmllcyBhbHJlYWR5CiBleGlzdGVkKTo6CiAKLSAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy41CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMjtDOlxXSU5ET1dTO0M6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNgogCiAuLiBfbGF1bmNoZXI6CiAKQEAgLTQxOCw2ICs0NDMsOCBAQAogRnJvbSB0aGUgY29tbWFuZC1saW5lCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKwogU3lzdGVtLXdpZGUgaW5zdGFsbGF0aW9ucyBvZiBQeXRob24gMy4zIGFuZCBsYXRlciB3aWxsIHB1dCB0aGUgbGF1bmNoZXIgb24geW91cgogOmVudnZhcjpgUEFUSGAuIFRoZSBsYXVuY2hlciBpcyBjb21wYXRpYmxlIHdpdGggYWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBvZgogUHl0aG9uLCBzbyBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hpY2ggdmVyc2lvbiBpcyBpbnN0YWxsZWQuIFRvIGNoZWNrIHRoYXQgdGhlCkBAIC00MjcsMjUgKzQ1NCwyNiBAQAogCiAgIHB5CiAKLVlvdSBzaG91bGQgZmluZCB0aGF0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMi54IHlvdSBoYXZlIGluc3RhbGxlZCBpcworWW91IHNob3VsZCBmaW5kIHRoYXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiB5b3UgaGF2ZSBpbnN0YWxsZWQgaXMKIHN0YXJ0ZWQgLSBpdCBjYW4gYmUgZXhpdGVkIGFzIG5vcm1hbCwgYW5kIGFueSBhZGRpdGlvbmFsIGNvbW1hbmQtbGluZQogYXJndW1lbnRzIHNwZWNpZmllZCB3aWxsIGJlIHNlbnQgZGlyZWN0bHkgdG8gUHl0aG9uLgogCi1JZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gMi54IGluc3RhbGxlZCAoZS5nLiwgMi42IGFuZCAyLjcpIHlvdQotd2lsbCBoYXZlIG5vdGljZWQgdGhhdCBQeXRob24gMi43IHdhcyBzdGFydGVkIC0gdG8gbGF1bmNoIFB5dGhvbiAyLjYsIHRyeSB0aGUKK0lmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiBpbnN0YWxsZWQgKGUuZy4sIDIuNyBhbmQgfHZlcnNpb258KSB5b3UKK3dpbGwgaGF2ZSBub3RpY2VkIHRoYXQgUHl0aG9uIHx2ZXJzaW9ufCB3YXMgc3RhcnRlZCAtIHRvIGxhdW5jaCBQeXRob24gMi43LCB0cnkKK3RoZSBjb21tYW5kOgorCis6OgorCisgIHB5IC0yLjcKKworSWYgeW91IHdhbnQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAyLnggeW91IGhhdmUgaW5zdGFsbGVkLCB0cnkgdGhlCiBjb21tYW5kOgogCiA6OgogCi0gIHB5IC0yLjYKKyAgcHkgLTIKIAotSWYgeW91IGhhdmUgYSBQeXRob24gMy54IGluc3RhbGxlZCwgdHJ5IHRoZSBjb21tYW5kOgotCi06OgotCi0gIHB5IC0zCi0KLVlvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDMueCBzdGFydHMuCitZb3Ugc2hvdWxkIGZpbmQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAyLnggc3RhcnRzLgogCiBJZiB5b3Ugc2VlIHRoZSBmb2xsb3dpbmcgZXJyb3IsIHlvdSBkbyBub3QgaGF2ZSB0aGUgbGF1bmNoZXIgaW5zdGFsbGVkOgogCkBAIC01MDAsNiArNTI4LDExIEBACiBmaXJzdCBsaW5lIHRvIGBgIyEgcHl0aG9uMi42YGAgYW5kIHlvdSBzaG91bGQgZmluZCB0aGUgMi42IHZlcnNpb24KIGluZm9ybWF0aW9uIHByaW50ZWQuCiAKK05vdGUgdGhhdCB1bmxpa2UgaW50ZXJhY3RpdmUgdXNlLCBhIGJhcmUgInB5dGhvbiIgd2lsbCB1c2UgdGhlIGxhdGVzdAordmVyc2lvbiBvZiBQeXRob24gMi54IHRoYXQgeW91IGhhdmUgaW5zdGFsbGVkLiAgVGhpcyBpcyBmb3IgYmFja3dhcmQKK2NvbXBhdGliaWxpdHkgYW5kIGZvciBjb21wYXRpYmlsaXR5IHdpdGggVW5peCwgd2hlcmUgdGhlIGNvbW1hbmQgYGBweXRob25gYAordHlwaWNhbGx5IHJlZmVycyB0byBQeXRob24gMi4KKwogRnJvbSBmaWxlIGFzc29jaWF0aW9ucwogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCkBAIC02NzYsNyArNzA5LDcgQEAKIAogCiAKLS4uIGZpbmRpbmdfbW9kdWxlczoKKy4uIF9maW5kaW5nX21vZHVsZXM6CiAKIEZpbmRpbmcgbW9kdWxlcwogPT09PT09PT09PT09PT09CkBAIC02ODcsNyArNzIwLDI0IEBACiA6ZmlsZTpgQzpcXFB5dGhvblxcTGliXFxgIGFuZCB0aGlyZC1wYXJ0eSBtb2R1bGVzIHNob3VsZCBiZSBzdG9yZWQgaW4KIDpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXHNpdGUtcGFja2FnZXNcXGAuCiAKLVRoaXMgaXMgaG93IDpkYXRhOmBzeXMucGF0aGAgaXMgcG9wdWxhdGVkIG9uIFdpbmRvd3M6CitUbyBjb21wbGV0ZWx5IG92ZXJyaWRlIDpkYXRhOmBzeXMucGF0aGAsIGNyZWF0ZSBhIGBgLl9wdGhgYCBmaWxlIHdpdGggdGhlIHNhbWUKK25hbWUgYXMgdGhlIERMTCAoYGBweXRob24zNi5fcHRoYGApIG9yIHRoZSBleGVjdXRhYmxlIChgYHB5dGhvbi5fcHRoYGApIGFuZAorc3BlY2lmeSBvbmUgbGluZSBmb3IgZWFjaCBwYXRoIHRvIGFkZCB0byA6ZGF0YTpgc3lzLnBhdGhgLiBUaGUgZmlsZSBiYXNlZCBvbiB0aGUKK0RMTCBuYW1lIG92ZXJyaWRlcyB0aGUgb25lIGJhc2VkIG9uIHRoZSBleGVjdXRhYmxlLCB3aGljaCBhbGxvd3MgcGF0aHMgdG8gYmUKK3Jlc3RyaWN0ZWQgZm9yIGFueSBwcm9ncmFtIGxvYWRpbmcgdGhlIHJ1bnRpbWUgaWYgZGVzaXJlZC4KKworV2hlbiB0aGUgZmlsZSBleGlzdHMsIGFsbCByZWdpc3RyeSBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBpZ25vcmVkLAoraXNvbGF0ZWQgbW9kZSBpcyBlbmFibGVkLCBhbmQgOm1vZDpgc2l0ZWAgaXMgbm90IGltcG9ydGVkIHVubGVzcyBvbmUgbGluZSBpbiB0aGUKK2ZpbGUgc3BlY2lmaWVzIGBgaW1wb3J0IHNpdGVgYC4gQmxhbmsgcGF0aHMgYW5kIGxpbmVzIHN0YXJ0aW5nIHdpdGggYGAjYGAgYXJlCitpZ25vcmVkLiBFYWNoIHBhdGggbWF5IGJlIGFic29sdXRlIG9yIHJlbGF0aXZlIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlsZS4KK0ltcG9ydCBzdGF0ZW1lbnRzIG90aGVyIHRoYW4gdG8gYGBzaXRlYGAgYXJlIG5vdCBwZXJtaXR0ZWQsIGFuZCBhcmJpdHJhcnkgY29kZQorY2Fubm90IGJlIHNwZWNpZmllZC4KKworTm90ZSB0aGF0IGBgLnB0aGBgIGZpbGVzICh3aXRob3V0IGxlYWRpbmcgdW5kZXJzY29yZSkgd2lsbCBiZSBwcm9jZXNzZWQgbm9ybWFsbHkKK2J5IHRoZSA6bW9kOmBzaXRlYCBtb2R1bGUuCisKK1doZW4gbm8gYGAuX3B0aGBgIGZpbGUgaXMgZm91bmQsIHRoaXMgaXMgaG93IDpkYXRhOmBzeXMucGF0aGAgaXMgcG9wdWxhdGVkIG9uCitXaW5kb3dzOgogCiAqIEFuIGVtcHR5IGVudHJ5IGlzIGFkZGVkIGF0IHRoZSBzdGFydCwgd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGN1cnJlbnQKICAgZGlyZWN0b3J5LgpAQCAtNzA2LDEwICs3NTYsMTEgQEAKIAogKiBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OSE9NRWAgaXMgc2V0LCBpdCBpcyBhc3N1bWVkIGFzCiAgICJQeXRob24gSG9tZSIuICBPdGhlcndpc2UsIHRoZSBwYXRoIG9mIHRoZSBtYWluIFB5dGhvbiBleGVjdXRhYmxlIGlzIHVzZWQgdG8KLSAgbG9jYXRlIGEgImxhbmRtYXJrIGZpbGUiIChgYExpYlxvcy5weWBgKSB0byBkZWR1Y2UgdGhlICJQeXRob24gSG9tZSIuICBJZiBhCi0gIFB5dGhvbiBob21lIGlzIGZvdW5kLCB0aGUgcmVsZXZhbnQgc3ViLWRpcmVjdG9yaWVzIGFkZGVkIHRvIDpkYXRhOmBzeXMucGF0aGAKLSAgKGBgTGliYGAsIGBgcGxhdC13aW5gYCwgZXRjKSBhcmUgYmFzZWQgb24gdGhhdCBmb2xkZXIuICBPdGhlcndpc2UsIHRoZSBjb3JlCi0gIFB5dGhvbiBwYXRoIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIFB5dGhvblBhdGggc3RvcmVkIGluIHRoZSByZWdpc3RyeS4KKyAgbG9jYXRlIGEgImxhbmRtYXJrIGZpbGUiIChlaXRoZXIgYGBMaWJcb3MucHlgYCBvciBgYHB5dGhvblhZLnppcGBgKSB0byBkZWR1Y2UKKyAgdGhlICJQeXRob24gSG9tZSIuICBJZiBhIFB5dGhvbiBob21lIGlzIGZvdW5kLCB0aGUgcmVsZXZhbnQgc3ViLWRpcmVjdG9yaWVzCisgIGFkZGVkIHRvIDpkYXRhOmBzeXMucGF0aGAgKGBgTGliYGAsIGBgcGxhdC13aW5gYCwgZXRjKSBhcmUgYmFzZWQgb24gdGhhdAorICBmb2xkZXIuICBPdGhlcndpc2UsIHRoZSBjb3JlIFB5dGhvbiBwYXRoIGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIFB5dGhvblBhdGgKKyAgc3RvcmVkIGluIHRoZSByZWdpc3RyeS4KIAogKiBJZiB0aGUgUHl0aG9uIEhvbWUgY2Fubm90IGJlIGxvY2F0ZWQsIG5vIDplbnZ2YXI6YFBZVEhPTlBBVEhgIGlzIHNwZWNpZmllZCBpbgogICB0aGUgZW52aXJvbm1lbnQsIGFuZCBubyByZWdpc3RyeSBlbnRyaWVzIGNhbiBiZSBmb3VuZCwgYSBkZWZhdWx0IHBhdGggd2l0aApAQCAtNzIyLDEwICs3NzMsNiBAQAogICBwYXRoIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgcGF0aCB0byB0aGUgbWFpbiBleGVjdXRhYmxlIHdoZW4gZGVkdWNpbmcgdGhlCiAgIGhvbWUgbG9jYXRpb24uCiAKLSogSWYgYGBhcHBsb2NhbGBgIGlzIHNldCB0byB0cnVlLCB0aGUgYGBob21lYGAgcHJvcGVydHkgb3IgdGhlIG1haW4gZXhlY3V0YWJsZQotICBpcyBhbHdheXMgdXNlZCBhcyB0aGUgaG9tZSBwYXRoLCBhbmQgYWxsIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciByZWdpc3RyeQotICB2YWx1ZXMgYWZmZWN0aW5nIHRoZSBwYXRoIGFyZSBpZ25vcmVkLiBUaGUgbGFuZG1hcmsgZmlsZSBpcyBub3QgY2hlY2tlZC4KLQogVGhlIGVuZCByZXN1bHQgb2YgYWxsIHRoaXMgaXM6CiAKICogV2hlbiBydW5uaW5nIDpmaWxlOmBweXRob24uZXhlYCwgb3IgYW55IG90aGVyIC5leGUgaW4gdGhlIG1haW4gUHl0aG9uCkBAIC03NDQsMTMgKzc5MSwxMiBAQAogRm9yIHRob3NlIHdobyB3YW50IHRvIGJ1bmRsZSBQeXRob24gaW50byB0aGVpciBhcHBsaWNhdGlvbiBvciBkaXN0cmlidXRpb24sIHRoZQogZm9sbG93aW5nIGFkdmljZSB3aWxsIHByZXZlbnQgY29uZmxpY3RzIHdpdGggb3RoZXIgaW5zdGFsbGF0aW9uczoKIAotKiBJbmNsdWRlIGEgYGBweXZlbnYuY2ZnYGAgZmlsZSBhbG9uZ3NpZGUgeW91ciBleGVjdXRhYmxlIGNvbnRhaW5pbmcKLSAgYGBhcHBsb2NhbCA9IHRydWVgYC4gVGhpcyB3aWxsIGVuc3VyZSB0aGF0IHlvdXIgb3duIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQgdG8KLSAgcmVzb2x2ZSBwYXRocyBldmVuIGlmIHlvdSBoYXZlIGluY2x1ZGVkIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluIGEgWklQIGZpbGUuCi0gIEl0IHdpbGwgYWxzbyBpZ25vcmUgdXNlciBzaXRlLXBhY2thZ2VzIGFuZCBvdGhlciBwYXRocyBsaXN0ZWQgaW4gdGhlCi0gIHJlZ2lzdHJ5LgorKiBJbmNsdWRlIGEgYGAuX3B0aGBgIGZpbGUgYWxvbmdzaWRlIHlvdXIgZXhlY3V0YWJsZSBjb250YWluaW5nIHRoZQorICBkaXJlY3RvcmllcyB0byBpbmNsdWRlLiBUaGlzIHdpbGwgaWdub3JlIHBhdGhzIGxpc3RlZCBpbiB0aGUgcmVnaXN0cnkgYW5kCisgIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kIGFsc28gaWdub3JlIDptb2Q6YHNpdGVgIHVubGVzcyBgYGltcG9ydCBzaXRlYGAgaXMKKyAgbGlzdGVkLgogCi0qIElmIHlvdSBhcmUgbG9hZGluZyA6ZmlsZTpgcHl0aG9uMy5kbGxgIG9yIDpmaWxlOmBweXRob24zNS5kbGxgIGluIHlvdXIgb3duCisqIElmIHlvdSBhcmUgbG9hZGluZyA6ZmlsZTpgcHl0aG9uMy5kbGxgIG9yIDpmaWxlOmBweXRob24zNi5kbGxgIGluIHlvdXIgb3duCiAgIGV4ZWN1dGFibGUsIGV4cGxpY2l0bHkgY2FsbCA6YzpmdW5jOmBQeV9TZXRQYXRoYCBvciAoYXQgbGVhc3QpCiAgIDpjOmZ1bmM6YFB5X1NldFByb2dyYW1OYW1lYCBiZWZvcmUgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAuCiAKQEAgLTc2MCw3ICs4MDYsOCBAQAogKiBJZiB5b3UgY2Fubm90IHVzZSB0aGUgcHJldmlvdXMgc3VnZ2VzdGlvbnMgKGZvciBleGFtcGxlLCB5b3UgYXJlIGEKICAgZGlzdHJpYnV0aW9uIHRoYXQgYWxsb3dzIHBlb3BsZSB0byBydW4gOmZpbGU6YHB5dGhvbi5leGVgIGRpcmVjdGx5KSwgZW5zdXJlCiAgIHRoYXQgdGhlIGxhbmRtYXJrIGZpbGUgKDpmaWxlOmBMaWJcXG9zLnB5YCkgZXhpc3RzIGluIHlvdXIgaW5zdGFsbCBkaXJlY3RvcnkuCi0gIChOb3RlIHRoYXQgaXQgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgaW5zaWRlIGEgWklQIGZpbGUuKQorICAoTm90ZSB0aGF0IGl0IHdpbGwgbm90IGJlIGRldGVjdGVkIGluc2lkZSBhIFpJUCBmaWxlLCBidXQgYSBjb3JyZWN0bHkgbmFtZWQKKyAgWklQIGZpbGUgd2lsbCBiZSBkZXRlY3RlZCBpbnN0ZWFkLikKIAogVGhlc2Ugd2lsbCBlbnN1cmUgdGhhdCB0aGUgZmlsZXMgaW4gYSBzeXN0ZW0td2lkZSBpbnN0YWxsYXRpb24gd2lsbCBub3QgdGFrZQogcHJlY2VkZW5jZSBvdmVyIHRoZSBjb3B5IG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGJ1bmRsZWQgd2l0aCB5b3VyIGFwcGxpY2F0aW9uLgpAQCAtNzY4LDYgKzgxNSwxNCBAQAogdGhlIGZpcnN0IHN1Z2dlc3Rpb24gaXMgdGhlIGJlc3QsIGFzIHRoZSBvdGhlciBtYXkgc3RpbGwgYmUgc3VzY2VwdGlibGUgdG8KIG5vbi1zdGFuZGFyZCBwYXRocyBpbiB0aGUgcmVnaXN0cnkgYW5kIHVzZXIgc2l0ZS1wYWNrYWdlcy4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OgorICAgMy42CisKKyAgICAgICogQWRkcyBgYC5fcHRoYGAgZmlsZSBzdXBwb3J0IGFuZCByZW1vdmVzIGBgYXBwbG9jYWxgYCBvcHRpb24gZnJvbQorICAgICAgICBgYHB5dmVudi5jZmdgYC4KKyAgICAgICogQWRkcyBgYHB5dGhvblhYLnppcGBgIGFzIGEgcG90ZW50aWFsIGxhbmRtYXJrIHdoZW4gZGlyZWN0bHkgYWRqYWNlbnQKKyAgICAgICAgdG8gdGhlIGV4ZWN1dGFibGUuCisKIEFkZGl0aW9uYWwgbW9kdWxlcwogPT09PT09PT09PT09PT09PT09CiAKQEAgLTg2Nyw3ICs5MjIsNyBAQAogV2hlbiBleHRyYWN0ZWQsIHRoZSBlbWJlZGRlZCBkaXN0cmlidXRpb24gaXMgKGFsbW9zdCkgZnVsbHkgaXNvbGF0ZWQgZnJvbSB0aGUKIHVzZXIncyBzeXN0ZW0sIGluY2x1ZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHN5c3RlbSByZWdpc3RyeSBzZXR0aW5ncywgYW5kCiBpbnN0YWxsZWQgcGFja2FnZXMuIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGluY2x1ZGVkIGFzIHByZS1jb21waWxlZCBhbmQKLW9wdGltaXplZCBgYC5weWNgYCBmaWxlcyBpbiBhIFpJUCwgYW5kIGBgcHl0aG9uMy5kbGxgYCwgYGBweXRob24zNS5kbGxgYCwKK29wdGltaXplZCBgYC5weWNgYCBmaWxlcyBpbiBhIFpJUCwgYW5kIGBgcHl0aG9uMy5kbGxgYCwgYGBweXRob24zNi5kbGxgYCwKIGBgcHl0aG9uLmV4ZWBgIGFuZCBgYHB5dGhvbncuZXhlYGAgYXJlIGFsbCBwcm92aWRlZC4gVGNsL3RrIChpbmNsdWRpbmcgYWxsCiBkZXBlbmRhbnRzLCBzdWNoIGFzIElkbGUpLCBwaXAgYW5kIHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiBhcmUgbm90IGluY2x1ZGVkLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4xLnJzdCBiL0RvYy93aGF0c25ldy8yLjEucnN0CmluZGV4IGJlNzJiZmUuLmQ5N2FiNjcgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjEucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjEucnN0CkBAIC0zNjcsNyArMzY3LDcgQEAKIAogVGhpcyB2ZXJzaW9uIHdvcmtzIGZvciBzaW1wbGUgdGhpbmdzIHN1Y2ggYXMgaW50ZWdlcnMsIGJ1dCBpdCBoYXMgYSBzaWRlIGVmZmVjdDsKIHRoZSBgYF9jYWNoZWBgIGRpY3Rpb25hcnkgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIHJldHVybiB2YWx1ZXMsIHNvIHRoZXknbGwKLW5ldmVyIGJlIGRlYWxsb2NhdGVkIHVudGlsIHRoZSBQeXRob24gcHJvY2VzcyBleGl0cyBhbmQgY2xlYW5zIHVwIFRoaXMgaXNuJ3QKK25ldmVyIGJlIGRlYWxsb2NhdGVkIHVudGlsIHRoZSBQeXRob24gcHJvY2VzcyBleGl0cyBhbmQgY2xlYW5zIHVwLiBUaGlzIGlzbid0CiB2ZXJ5IG5vdGljZWFibGUgZm9yIGludGVnZXJzLCBidXQgaWYgOmZ1bmM6YGZgIHJldHVybnMgYW4gb2JqZWN0LCBvciBhIGRhdGEKIHN0cnVjdHVyZSB0aGF0IHRha2VzIHVwIGEgbG90IG9mIG1lbW9yeSwgdGhpcyBjYW4gYmUgYSBwcm9ibGVtLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4yLnJzdCBiL0RvYy93aGF0c25ldy8zLjIucnN0CmluZGV4IDlhY2M3MzQuLmI5MDBlNzcgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjIucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjIucnN0CkBAIC0xMjUzLDkgKzEyNTMsOSBAQAogCiAgICAgQGNvbnRleHRtYW5hZ2VyCiAgICAgZGVmIHRyYWNrX2VudHJ5X2FuZF9leGl0KG5hbWUpOgotICAgICAgICBsb2dnaW5nLmluZm8oJ0VudGVyaW5nOiB7fScuZm9ybWF0KG5hbWUpKQorICAgICAgICBsb2dnaW5nLmluZm8oJ0VudGVyaW5nOiAlcycsIG5hbWUpCiAgICAgICAgIHlpZWxkCi0gICAgICAgIGxvZ2dpbmcuaW5mbygnRXhpdGluZzoge30nLmZvcm1hdChuYW1lKSkKKyAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiAlcycsIG5hbWUpCiAKIEZvcm1lcmx5LCB0aGlzIHdvdWxkIGhhdmUgb25seSBiZWVuIHVzYWJsZSBhcyBhIGNvbnRleHQgbWFuYWdlcjo6CiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjMucnN0IGIvRG9jL3doYXRzbmV3LzMuMy5yc3QKaW5kZXggMGM5ZjJiYi4uOTNiMjk3YyAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMy5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMy5yc3QKQEAgLTEwOCw3ICsxMDgsNyBAQAogd2l0aCB0aGUgaW50ZXJwcmV0ZXIgY29yZS4KIAogVGhpcyBQRVAgYWRkcyB0aGUgOm1vZDpgdmVudmAgbW9kdWxlIGZvciBwcm9ncmFtbWF0aWMgYWNjZXNzLCBhbmQgdGhlCi06cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgc2NyaXB0IGZvciBjb21tYW5kLWxpbmUgYWNjZXNzIGFuZAorYGBweXZlbnZgYCBzY3JpcHQgZm9yIGNvbW1hbmQtbGluZSBhY2Nlc3MgYW5kCiBhZG1pbmlzdHJhdGlvbi4gIFRoZSBQeXRob24gaW50ZXJwcmV0ZXIgY2hlY2tzIGZvciBhIGBgcHl2ZW52LmNmZ2BgLAogZmlsZSB3aG9zZSBleGlzdGVuY2Ugc2lnbmFscyB0aGUgYmFzZSBvZiBhIHZpcnR1YWwgZW52aXJvbm1lbnQncyBkaXJlY3RvcnkKIHRyZWUuCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy40LnJzdCBiL0RvYy93aGF0c25ldy8zLjQucnN0CmluZGV4IDFlNWM5ZDEuLjcyMzk4ZjkgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjQucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjQucnN0CkBAIC0xOTcsNyArMTk3LDcgQEAKIGBgcGlwYGAgY29tbWFuZCB0eXBpY2FsbHkgcmVmZXJzIHRvIHRoZSBzZXBhcmF0ZWx5IGluc3RhbGxlZCBQeXRob24gMgogdmVyc2lvbi4KIAotVGhlIDpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBjb21tYW5kIGxpbmUgdXRpbGl0eSBhbmQgdGhlIDptb2Q6YHZlbnZgCitUaGUgYGBweXZlbnZgYCBjb21tYW5kIGxpbmUgdXRpbGl0eSBhbmQgdGhlIDptb2Q6YHZlbnZgCiBtb2R1bGUgbWFrZSB1c2Ugb2YgdGhlIDptb2Q6YGVuc3VyZXBpcGAgbW9kdWxlIHRvIG1ha2UgYGBwaXBgYCByZWFkaWx5CiBhdmFpbGFibGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMuIFdoZW4gdXNpbmcgdGhlIGNvbW1hbmQgbGluZSB1dGlsaXR5LAogYGBwaXBgYCBpcyBpbnN0YWxsZWQgYnkgZGVmYXVsdCwgd2hpbGUgd2hlbiB1c2luZyB0aGUgOm1vZDpgdmVudmAgbW9kdWxlCkBAIC04MjQsNyArODI0LDcgQEAKIDp0ZXJtOmBwcm92aXNpb25hbCBBUElgLiAgVGhlc2UgY2xhc3NlcyBwcm92aWRlIGEgbnVtYmVyIG9mIG5ldyBtZXRob2RzIHRoYXQKIG1ha2UgZXh0cmFjdGluZyBjb250ZW50IGZyb20gYW5kIGluc2VydGluZyBjb250ZW50IGludG8gZW1haWwgbWVzc2FnZXMgbXVjaAogZWFzaWVyLiAgRm9yIGRldGFpbHMsIHNlZSB0aGUgOm1vZDpgfmVtYWlsLmNvbnRlbnRtYW5hZ2VyYCBkb2N1bWVudGF0aW9uIGFuZAotdGhlIDpyZWY6YGVtYWlsLWNvbnRlbnRtYW5hZ2VyLWFwaS1leGFtcGxlc2AuICBUaGVzZSBBUEkgYWRkaXRpb25zIGNvbXBsZXRlIHRoZQordGhlIDpyZWY6YGVtYWlsLWV4YW1wbGVzYC4gIFRoZXNlIEFQSSBhZGRpdGlvbnMgY29tcGxldGUgdGhlCiBidWxrIG9mIHRoZSB3b3JrIHRoYXQgd2FzIHBsYW5uZWQgYXMgcGFydCBvZiB0aGUgZW1haWw2IHByb2plY3QuICBUaGUgY3VycmVudGx5CiBwcm92aXNpb25hbCBBUEkgaXMgc2NoZWR1bGVkIHRvIGJlY29tZSBmaW5hbCBpbiBQeXRob24gMy41IChwb3NzaWJseSB3aXRoIGEgZmV3CiBtaW5vciBhZGRpdGlvbnMgaW4gdGhlIGFyZWEgb2YgZXJyb3IgaGFuZGxpbmcpLiAgKENvbnRyaWJ1dGVkIGJ5IFIuIERhdmlkCkBAIC0xOTg5LDExICsxOTg5LDExIEBACiAgIFN0aW5uZXIgdXNpbmcgaGlzIDpwZXA6YDQ0NWAtYmFzZWQgYGBweWZhaWxtYWxsb2NgYCB0b29sICg6aXNzdWU6YDE4NDA4YCwKICAgOmlzc3VlOmAxODUyMGApLgogCi0qIFRoZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgY29tbWFuZCBub3cgYWNjZXB0cyBhIGBgLS1jb3BpZXNgYCBvcHRpb24KKyogVGhlIGBgcHl2ZW52YGAgY29tbWFuZCBub3cgYWNjZXB0cyBhIGBgLS1jb3BpZXNgYCBvcHRpb24KICAgdG8gdXNlIGNvcGllcyByYXRoZXIgdGhhbiBzeW1saW5rcyBldmVuIG9uIHN5c3RlbXMgd2hlcmUgc3ltbGlua3MgYXJlIHRoZQogICBkZWZhdWx0LiAgKENvbnRyaWJ1dGVkIGJ5IFZpbmF5IFNhamlwIGluIDppc3N1ZTpgMTg4MDdgLikKIAotKiBUaGUgOnJlZjpgcHl2ZW52IDxzY3JpcHRzLXB5dmVudj5gIGNvbW1hbmQgYWxzbyBhY2NlcHRzIGEgYGAtLXdpdGhvdXQtcGlwYGAKKyogVGhlIGBgcHl2ZW52YGAgY29tbWFuZCBhbHNvIGFjY2VwdHMgYSBgYC0td2l0aG91dC1waXBgYAogICBvcHRpb24gdG8gc3VwcHJlc3MgdGhlIG90aGVyd2lzZS1hdXRvbWF0aWMgYm9vdHN0cmFwcGluZyBvZiBwaXAgaW50bwogICB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gIChDb250cmlidXRlZCBieSBOaWNrIENvZ2hsYW4gaW4gOmlzc3VlOmAxOTU1MmAKICAgYXMgcGFydCBvZiB0aGUgOnBlcDpgNDUzYCBpbXBsZW1lbnRhdGlvbi4pCkBAIC0yNDU5LDcgKzI0NTksNyBAQAogICBzdHJlYW0gaW4gOm1vZDpgfmlvLlRleHRJT1dyYXBwZXJgIHRvIHVzZSBpdHMgKm5ld2xpbmUqIGFyZ3VtZW50CiAgICg6aXNzdWU6YDE1MjA0YCkuCiAKLSogSWYgeW91IHVzZSA6cmVmOmBweXZlbnYgPHNjcmlwdHMtcHl2ZW52PmAgaW4gYSBzY3JpcHQgYW5kIGRlc2lyZSB0aGF0IHBpcAorKiBJZiB5b3UgdXNlIGBgcHl2ZW52YGAgaW4gYSBzY3JpcHQgYW5kIGRlc2lyZSB0aGF0IHBpcAogICAqbm90KiBiZSBpbnN0YWxsZWQsIHlvdSBtdXN0IGFkZCBgYC0td2l0aG91dC1waXBgYCB0byB5b3VyIGNvbW1hbmQKICAgaW52b2NhdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuNS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy41LnJzdAppbmRleCAyZWY0ZTkxLi4yNDZkOWM1IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy41LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy41LnJzdApAQCAtNDYsNyArNDYsOCBAQAogCiBUaGlzIGFydGljbGUgZXhwbGFpbnMgdGhlIG5ldyBmZWF0dXJlcyBpbiBQeXRob24gMy41LCBjb21wYXJlZCB0byAzLjQuCiBQeXRob24gMy41IHdhcyByZWxlYXNlZCBvbiBTZXB0ZW1iZXIgMTMsIDIwMTUuIMKgU2VlIHRoZQotOnJlZjpgY2hhbmdlbG9nIDxjaGFuZ2Vsb2c+YCBmb3IgYSBmdWxsIGxpc3Qgb2YgY2hhbmdlcy4KK2BjaGFuZ2Vsb2cgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNS93aGF0c25ldy9jaGFuZ2Vsb2cuaHRtbD5gXyBmb3IgYSBmdWxsCitsaXN0IG9mIGNoYW5nZXMuCiAKIC4uIHNlZWFsc286OgogCkBAIC0yMTc1LDggKzIxNzYsNyBAQAogCiAqIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AsCiAqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AsCi0qIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsCi0qIDpjOmZ1bmM6YF9QeU9iamVjdF9HQ19DYWxsb2NgLgorKiA6YzpmdW5jOmBQeU9iamVjdF9DYWxsb2NgLgogCiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMTIzM2AuKQogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy42LnJzdCBiL0RvYy93aGF0c25ldy8zLjYucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4OGQ2MTgKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvMy42LnJzdApAQCAtMCwwICsxLDE0NzkgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy42CisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzpSZWxlYXNlOiB8cmVsZWFzZXwKKzpEYXRlOiB8dG9kYXl8CisKKy4uIFJ1bGVzIGZvciBtYWludGVuYW5jZToKKworICAgKiBBbnlvbmUgY2FuIGFkZCB0ZXh0IHRvIHRoaXMgZG9jdW1lbnQuICBEbyBub3Qgc3BlbmQgdmVyeSBtdWNoIHRpbWUKKyAgIG9uIHRoZSB3b3JkaW5nIG9mIHlvdXIgY2hhbmdlcywgYmVjYXVzZSB5b3VyIHRleHQgd2lsbCBwcm9iYWJseQorICAgZ2V0IHJld3JpdHRlbiB0byBzb21lIGRlZ3JlZS4KKworICAgKiBUaGUgbWFpbnRhaW5lciB3aWxsIGdvIHRocm91Z2ggTWlzYy9ORVdTIHBlcmlvZGljYWxseSBhbmQgYWRkCisgICBjaGFuZ2VzOyBpdCdzIHRoZXJlZm9yZSBtb3JlIGltcG9ydGFudCB0byBhZGQgeW91ciBjaGFuZ2VzIHRvCisgICBNaXNjL05FV1MgdGhhbiB0byB0aGlzIGZpbGUuCisKKyAgICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBsaXN0IG9mIGV2ZXJ5IHNpbmdsZSBjaGFuZ2U7IGNvbXBsZXRlbmVzcworICAgaXMgdGhlIHB1cnBvc2Ugb2YgTWlzYy9ORVdTLiAgU29tZSBjaGFuZ2VzIEkgY29uc2lkZXIgdG9vIHNtYWxsCisgICBvciBlc290ZXJpYyB0byBpbmNsdWRlLiAgSWYgc3VjaCBhIGNoYW5nZSBpcyBhZGRlZCB0byB0aGUgdGV4dCwKKyAgIEknbGwganVzdCByZW1vdmUgaXQuICAoVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB5b3Ugc2hvdWxkbid0IHNwZW5kCisgICB0b28gbXVjaCB0aW1lIG9uIHdyaXRpbmcgeW91ciBhZGRpdGlvbi4pCisKKyAgICogSWYgeW91IHdhbnQgdG8gZHJhdyB5b3VyIG5ldyB0ZXh0IHRvIHRoZSBhdHRlbnRpb24gb2YgdGhlCisgICBtYWludGFpbmVyLCBhZGQgJ1hYWCcgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoIG9yCisgICBzZWN0aW9uLgorCisgICAqIEl0J3MgT0sgdG8ganVzdCBhZGQgYSBmcmFnbWVudGFyeSBub3RlIGFib3V0IGEgY2hhbmdlLiAgRm9yCisgICBleGFtcGxlOiAiWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUKKyAgIHNvY2tldCBtb2R1bGUuIiAgVGhlIG1haW50YWluZXIgd2lsbCByZXNlYXJjaCB0aGUgY2hhbmdlIGFuZAorICAgd3JpdGUgdGhlIG5lY2Vzc2FyeSB0ZXh0LgorCisgICAqIFlvdSBjYW4gY29tbWVudCBvdXQgeW91ciBhZGRpdGlvbnMgaWYgeW91IGxpa2UsIGJ1dCBpdCdzIG5vdAorICAgbmVjZXNzYXJ5IChlc3BlY2lhbGx5IHdoZW4gYSBmaW5hbCByZWxlYXNlIGlzIHNvbWUgbW9udGhzIGF3YXkpLgorCisgICAqIENyZWRpdCB0aGUgYXV0aG9yIG9mIGEgcGF0Y2ggb3IgYnVnZml4LiAgIEp1c3QgdGhlIG5hbWUgaXMKKyAgIHN1ZmZpY2llbnQ7IHRoZSBlLW1haWwgYWRkcmVzcyBpc24ndCBuZWNlc3NhcnkuCisKKyAgICogSXQncyBoZWxwZnVsIHRvIGFkZCB0aGUgYnVnL3BhdGNoIG51bWJlciBhcyBhIGNvbW1lbnQ6CisKKyAgIFhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlIHNvY2tldAorICAgbW9kdWxlLgorICAgKENvbnRyaWJ1dGVkIGJ5IFAuWS4gRGV2ZWxvcGVyIGluIDppc3N1ZTpgMTIzNDVgLikKKworICAgVGhpcyBzYXZlcyB0aGUgbWFpbnRhaW5lciB0aGUgZWZmb3J0IG9mIGdvaW5nIHRocm91Z2ggdGhlIE1lcmN1cmlhbCBsb2cKKyAgIHdoZW4gcmVzZWFyY2hpbmcgYSBjaGFuZ2UuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjYsIGNvbXBhcmVkIHRvIDMuNS4KKworRm9yIGZ1bGwgZGV0YWlscywgc2VlIHRoZSA6cmVmOmBjaGFuZ2Vsb2cgPGNoYW5nZWxvZz5gLgorCisuLiBub3RlOjoKKworICAgUHJlcmVsZWFzZSB1c2VycyBzaG91bGQgYmUgYXdhcmUgdGhhdCB0aGlzIGRvY3VtZW50IGlzIGN1cnJlbnRseSBpbiBkcmFmdAorICAgZm9ybS4gSXQgd2lsbCBiZSB1cGRhdGVkIHN1YnN0YW50aWFsbHkgYXMgUHl0aG9uIDMuNiBtb3ZlcyB0b3dhcmRzIHJlbGVhc2UsCisgICBzbyBpdCdzIHdvcnRoIGNoZWNraW5nIGJhY2sgZXZlbiBhZnRlciByZWFkaW5nIGVhcmxpZXIgdmVyc2lvbnMuCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIFRoaXMgc2VjdGlvbiBzaW5nbGVzIG91dCB0aGUgbW9zdCBpbXBvcnRhbnQgY2hhbmdlcyBpbiBQeXRob24gMy42LgorICAgQnJldml0eSBpcyBrZXkuCisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogQSBgYGdsb2JhbGBgIG9yIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3cgdGV4dHVhbGx5IGFwcGVhcgorICBiZWZvcmUgdGhlIGZpcnN0IHVzZSBvZiB0aGUgYWZmZWN0ZWQgbmFtZSBpbiB0aGUgc2FtZSBzY29wZS4KKyAgUHJldmlvdXNseSB0aGlzIHdhcyBhIFN5bnRheFdhcm5pbmcuCisKKyogUEVQIDQ5ODogOnJlZjpgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyA8d2hhdHNuZXctZnN0cmluZ3M+YAorCisqIFBFUCA1MTU6IFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHMKKworKiBQRVAgNTI2OiA6cmVmOmBTeW50YXggZm9yIFZhcmlhYmxlIEFubm90YXRpb25zIDx2YXJpYWJsZS1hbm5vdGF0aW9ucz5gCisKKyogUEVQIDUyNTogQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMKKworKiBQRVAgNTMwOiBBc3luY2hyb25vdXMgQ29tcHJlaGVuc2lvbnMKKworU3RhbmRhcmQgbGlicmFyeSBpbXByb3ZlbWVudHM6CisKK1NlY3VyaXR5IGltcHJvdmVtZW50czoKKworKiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbAorICBpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZSB0aGUgc2VjdXJpdHkuIFNlZSB0aGUgOnBlcDpgNTI0YCBmb3IgdGhlCisgIHJhdGlvbmFsZS4KKworKiA6bW9kOmBoYXNobGliYCBhbmQgOm1vZDpgc3NsYCBub3cgc3VwcG9ydCBPcGVuU1NMIDEuMS4wLgorCisqIFRoZSBkZWZhdWx0IHNldHRpbmdzIGFuZCBmZWF0dXJlIHNldCBvZiB0aGUgOm1vZDpgc3NsYCBoYXZlIGJlZW4gaW1wcm92ZWQuCisKKyogVGhlIDptb2Q6YGhhc2hsaWJgIG1vZHVsZSBoYXMgZ290IHN1cHBvcnQgZm9yIEJMQUtFMiwgU0hBLTMgYW5kIFNIQUtFIGhhc2gKKyAgYWxnb3JpdGhtcyBhbmQgOmZ1bmM6YH5oYXNobGliLnNjcnlwdGAga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uCisKK1dpbmRvd3MgaW1wcm92ZW1lbnRzOgorCisqIFBFUCA1Mjk6IDpyZWY6YENoYW5nZSBXaW5kb3dzIGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gVVRGLTggPHBlcC01Mjk+YAorCisqIFBFUCA1Mjg6IDpyZWY6YENoYW5nZSBXaW5kb3dzIGNvbnNvbGUgZW5jb2RpbmcgdG8gVVRGLTggPHBlcC01Mjg+YAorCisqIFRoZSBgYHB5LmV4ZWBgIGxhdW5jaGVyLCB3aGVuIHVzZWQgaW50ZXJhY3RpdmVseSwgbm8gbG9uZ2VyIHByZWZlcnMKKyAgUHl0aG9uIDIgb3ZlciBQeXRob24gMyB3aGVuIHRoZSB1c2VyIGRvZXNuJ3Qgc3BlY2lmeSBhIHZlcnNpb24gKHZpYQorICBjb21tYW5kIGxpbmUgYXJndW1lbnRzIG9yIGEgY29uZmlnIGZpbGUpLiAgSGFuZGxpbmcgb2Ygc2hlYmFuZyBsaW5lcworICByZW1haW5zIHVuY2hhbmdlZCAtICJweXRob24iIHJlZmVycyB0byBQeXRob24gMiBpbiB0aGF0IGNhc2UuCisKKyogYGBweXRob24uZXhlYGAgYW5kIGBgcHl0aG9udy5leGVgYCBoYXZlIGJlZW4gbWFya2VkIGFzIGxvbmctcGF0aCBhd2FyZSwKKyAgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSAyNjAgY2hhcmFjdGVyIHBhdGggbGltaXQgbWF5IG5vIGxvbmdlciBhcHBseS4KKyAgU2VlIDpyZWY6YHJlbW92aW5nIHRoZSBNQVhfUEFUSCBsaW1pdGF0aW9uIDxtYXgtcGF0aD5gIGZvciBkZXRhaWxzLgorCisqIEEgYGAuX3B0aGBgIGZpbGUgY2FuIGJlIGFkZGVkIHRvIGZvcmNlIGlzb2xhdGVkIG1vZGUgYW5kIGZ1bGx5IHNwZWNpZnkKKyAgYWxsIHNlYXJjaCBwYXRocyB0byBhdm9pZCByZWdpc3RyeSBhbmQgZW52aXJvbm1lbnQgbG9va3VwLiBTZWUKKyAgOnJlZjpgdGhlIGRvY3VtZW50YXRpb24gPGZpbmRpbmdfbW9kdWxlcz5gIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisqIEEgYGBweXRob24zNi56aXBgYCBmaWxlIG5vdyB3b3JrcyBhcyBhIGxhbmRtYXJrIHRvIGluZmVyCisgIDplbnZ2YXI6YFBZVEhPTkhPTUVgLiBTZWUgOnJlZjpgdGhlIGRvY3VtZW50YXRpb24gPGZpbmRpbmdfbW9kdWxlcz5gIGZvcgorICBtb3JlIGluZm9ybWF0aW9uLgorCisuLiBQRVAtc2l6ZWQgaXRlbXMgbmV4dC4KKworLi4gX3BlcC00WFg6CisKKy4uIFBFUCA0WFg6IFZpcnR1YWwgRW52aXJvbm1lbnRzCisuLiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKy4uIChJbXBsZW1lbnRlZCBieSBGb28gQmFyLikKKworLi4gLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmA0WFhgIC0gUHl0aG9uIFZpcnR1YWwgRW52aXJvbm1lbnRzCisgICAgICAgUEVQIHdyaXR0ZW4gYnkgQ2FybCBNZXllcgorCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogUEVQIDUyMDogOnJlZjpgUHJlc2VydmluZyBDbGFzcyBBdHRyaWJ1dGUgRGVmaW5pdGlvbiBPcmRlcjx3aGF0c25ldy1kZWZvcmRlcj5gCisKKyogUEVQIDQ2ODogOnJlZjpgUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyPHdoYXRzbmV3LWt3YXJncz5gCisKK0EgY29tcGxldGUgbGlzdCBvZiBQRVAncyBpbXBsZW1lbnRlZCBpbiBQeXRob24gMy42OgorCisqIDpwZXA6YDQ2OGAsIDpyZWY6YFByZXNlcnZpbmcgS2V5d29yZCBBcmd1bWVudCBPcmRlcjx3aGF0c25ldy1rd2FyZ3M+YAorKiA6cGVwOmA0ODdgLCA6cmVmOmBTaW1wbGVyIGN1c3RvbWl6YXRpb24gb2YgY2xhc3MgY3JlYXRpb248d2hhdHNuZXctcGVwNDg3PmAKKyogOnBlcDpgNDk1YCwgTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbgorKiA6cGVwOmA0OThgLCA6cmVmOmBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDx3aGF0c25ldy1mc3RyaW5ncz5gCisqIDpwZXA6YDUwNmAsIEFkZGluZyBBIFNlY3JldHMgTW9kdWxlIFRvIFRoZSBTdGFuZGFyZCBMaWJyYXJ5CisqIDpwZXA6YDUwOWAsIDpyZWY6YEFkZCBhIHByaXZhdGUgdmVyc2lvbiB0byBkaWN0PHdoYXRzbmV3LXBlcDUwOT5gCisqIDpwZXA6YDUxNWAsIDpyZWY6YFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHM8cGVwLTUxNT5gCisqIDpwZXA6YDUxOWAsIDpyZWY6YEFkZGluZyBhIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2w8cGVwLTUxOT5gCisqIDpwZXA6YDUyMGAsIDpyZWY6YFByZXNlcnZpbmcgQ2xhc3MgQXR0cmlidXRlIERlZmluaXRpb24gT3JkZXI8d2hhdHNuZXctZGVmb3JkZXI+YAorKiA6cGVwOmA1MjNgLCA6cmVmOmBBZGRpbmcgYSBmcmFtZSBldmFsdWF0aW9uIEFQSSB0byBDUHl0aG9uPHBlcC01MjM+YAorKiA6cGVwOmA1MjRgLCBNYWtlIG9zLnVyYW5kb20oKSBibG9ja2luZyBvbiBMaW51eCAoZHVyaW5nIHN5c3RlbSBzdGFydHVwKQorKiA6cGVwOmA1MjVgLCBBc3luY2hyb25vdXMgR2VuZXJhdG9ycyAocHJvdmlzaW9uYWwpCisqIDpwZXA6YDUyNmAsIDpyZWY6YFN5bnRheCBmb3IgVmFyaWFibGUgQW5ub3RhdGlvbnMgKHByb3Zpc2lvbmFsKTx2YXJpYWJsZS1hbm5vdGF0aW9ucz5gCisqIDpwZXA6YDUyOGAsIDpyZWY6YENoYW5nZSBXaW5kb3dzIGNvbnNvbGUgZW5jb2RpbmcgdG8gVVRGLTggKHByb3Zpc2lvbmFsKTxwZXAtNTI4PmAKKyogOnBlcDpgNTI5YCwgOnJlZjpgQ2hhbmdlIFdpbmRvd3MgZmlsZXN5c3RlbSBlbmNvZGluZyB0byBVVEYtOCAocHJvdmlzaW9uYWwpPHBlcC01Mjk+YAorKiA6cGVwOmA1MzBgLCBBc3luY2hyb25vdXMgQ29tcHJlaGVuc2lvbnMKKworCitOZXcgRmVhdHVyZXMKKz09PT09PT09PT09PQorCisuLiBfcGVwLTUxNToKKworUEVQIDUxNTogVW5kZXJzY29yZXMgaW4gTnVtZXJpYyBMaXRlcmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQcmlvciB0byBQRVAgNTE1LCB0aGVyZSB3YXMgbm8gc3VwcG9ydCBmb3Igd3JpdGluZyBsb25nIG51bWVyaWMKK2xpdGVyYWxzIHdpdGggc29tZSBmb3JtIG9mIHNlcGFyYXRvciB0byBpbXByb3ZlIHJlYWRhYmlsaXR5LiBGb3IKK2luc3RhbmNlLCBob3cgYmlnIGlzIGBgMTAwMDAwMDAwMDAwMDAwMGBgPyBXaXRoIDpwZXA6YDUxNWAsIHRob3VnaCwKK3lvdSBjYW4gdXNlIHVuZGVyc2NvcmVzIHRvIHNlcGFyYXRlIGRpZ2l0cyBhcyBkZXNpcmVkIHRvIG1ha2UgbnVtZXJpYworbGl0ZXJhbHMgZWFzaWVyIHRvIHJlYWQ6IGBgMV8wMDBfMDAwXzAwMF8wMDBfMDAwYGAuIFVuZGVyc2NvcmVzIGNhbiBiZQordXNlZCB3aXRoIG90aGVyIG51bWVyaWMgbGl0ZXJhbHMgYmV5b25kIGludGVnZXJzLCBlLmcuCitgYDB4X0ZGX0ZGX0ZGX0ZGYGAuCisKK1NpbmdsZSB1bmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBiZXR3ZWVuIGRpZ2l0cyBhbmQgYWZ0ZXIgYW55IGJhc2UKK3NwZWNpZmllci4gTW9yZSB0aGFuIGEgc2luZ2xlIHVuZGVyc2NvcmUgaW4gYSByb3csIGxlYWRpbmcsIG9yCit0cmFpbGluZyB1bmRlcnNjb3JlcyBhcmUgbm90IGFsbG93ZWQuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA1MTVgIC0tIFVuZGVyc2NvcmVzIGluIE51bWVyaWMgTGl0ZXJhbHMKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEdlb3JnIEJyYW5kbCBhbmQgU2VyaGl5IFN0b3JjaGFrYS4KKworCisuLiBfcGVwLTUyMzoKKworUEVQIDUyMzogQWRkaW5nIGEgZnJhbWUgZXZhbHVhdGlvbiBBUEkgdG8gQ1B5dGhvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGlsZSBQeXRob24gcHJvdmlkZXMgZXh0ZW5zaXZlIHN1cHBvcnQgdG8gY3VzdG9taXplIGhvdyBjb2RlCitleGVjdXRlcywgb25lIHBsYWNlIGl0IGhhcyBub3QgZG9uZSBzbyBpcyBpbiB0aGUgZXZhbHVhdGlvbiBvZiBmcmFtZQorb2JqZWN0cy4gSWYgeW91IHdhbnRlZCBzb21lIHdheSB0byBpbnRlcmNlcHQgZnJhbWUgZXZhbHVhdGlvbiBpbgorUHl0aG9uIHRoZXJlIHJlYWxseSB3YXNuJ3QgYW55IHdheSB3aXRob3V0IGRpcmVjdGx5IG1hbmlwdWxhdGluZworZnVuY3Rpb24gcG9pbnRlcnMgZm9yIGRlZmluZWQgZnVuY3Rpb25zLgorCis6cGVwOmA1MjNgIGNoYW5nZXMgdGhpcyBieSBwcm92aWRpbmcgYW4gQVBJIHRvIG1ha2UgZnJhbWUKK2V2YWx1YXRpb24gcGx1Z2dhYmxlIGF0IHRoZSBDIGxldmVsLiBUaGlzIHdpbGwgYWxsb3cgZm9yIHRvb2xzIHN1Y2gKK2FzIGRlYnVnZ2VycyBhbmQgSklUcyB0byBpbnRlcmNlcHQgZnJhbWUgZXZhbHVhdGlvbiBiZWZvcmUgdGhlCitleGVjdXRpb24gb2YgUHl0aG9uIGNvZGUgYmVnaW5zLiBUaGlzIGVuYWJsZXMgdGhlIHVzZSBvZiBhbHRlcm5hdGl2ZQorZXZhbHVhdGlvbiBpbXBsZW1lbnRhdGlvbnMgZm9yIFB5dGhvbiBjb2RlLCB0cmFja2luZyBmcmFtZQorZXZhbHVhdGlvbiwgZXRjLgorCitUaGlzIEFQSSBpcyBub3QgcGFydCBvZiB0aGUgbGltaXRlZCBDIEFQSSBhbmQgaXMgbWFya2VkIGFzIHByaXZhdGUgdG8KK3NpZ25hbCB0aGF0IHVzYWdlIG9mIHRoaXMgQVBJIGlzIGV4cGVjdGVkIHRvIGJlIGxpbWl0ZWQgYW5kIG9ubHkKK2FwcGxpY2FibGUgdG8gdmVyeSBzZWxlY3QsIGxvdy1sZXZlbCB1c2UtY2FzZXMuIFNlbWFudGljcyBvZiB0aGUKK0FQSSB3aWxsIGNoYW5nZSB3aXRoIFB5dGhvbiBhcyBuZWNlc3NhcnkuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNTIzYCAtLSBBZGRpbmcgYSBmcmFtZSBldmFsdWF0aW9uIEFQSSB0byBDUHl0aG9uCisgICAgICAgUEVQIHdyaXR0ZW4gYnkgQnJldHQgQ2Fubm9uIGFuZCBEaW5vIFZpZWhsYW5kLgorCisKKy4uIF9wZXAtNTE5OgorCitQRVAgNTE5OiBBZGRpbmcgYSBmaWxlIHN5c3RlbSBwYXRoIHByb3RvY29sCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0ZpbGUgc3lzdGVtIHBhdGhzIGhhdmUgaGlzdG9yaWNhbGx5IGJlZW4gcmVwcmVzZW50ZWQgYXMgOmNsYXNzOmBzdHJgCitvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzLiBUaGlzIGhhcyBsZWQgdG8gcGVvcGxlIHdobyB3cml0ZSBjb2RlIHdoaWNoCitvcGVyYXRlIG9uIGZpbGUgc3lzdGVtIHBhdGhzIHRvIGFzc3VtZSB0aGF0IHN1Y2ggb2JqZWN0cyBhcmUgb25seSBvbmUKK29mIHRob3NlIHR3byB0eXBlcyAoYW4gOmNsYXNzOmBpbnRgIHJlcHJlc2VudGluZyBhIGZpbGUgZGVzY3JpcHRvcgorZG9lcyBub3QgY291bnQgYXMgdGhhdCBpcyBub3QgYSBmaWxlIHBhdGgpLiBVbmZvcnR1bmF0ZWx5IHRoYXQKK2Fzc3VtcHRpb24gcHJldmVudHMgYWx0ZXJuYXRpdmUgb2JqZWN0IHJlcHJlc2VudGF0aW9ucyBvZiBmaWxlIHN5c3RlbQorcGF0aHMgbGlrZSA6bW9kOmBwYXRobGliYCBmcm9tIHdvcmtpbmcgd2l0aCBwcmUtZXhpc3RpbmcgY29kZSwKK2luY2x1ZGluZyBQeXRob24ncyBzdGFuZGFyZCBsaWJyYXJ5LgorCitUbyBmaXggdGhpcyBzaXR1YXRpb24sIGEgbmV3IGludGVyZmFjZSByZXByZXNlbnRlZCBieQorOmNsYXNzOmBvcy5QYXRoTGlrZWAgaGFzIGJlZW4gZGVmaW5lZC4gQnkgaW1wbGVtZW50aW5nIHRoZQorOm1ldGg6YH5vcy5QYXRoTGlrZS5fX2ZzcGF0aF9fYCBtZXRob2QsIGFuIG9iamVjdCBzaWduYWxzIHRoYXQgaXQKK3JlcHJlc2VudHMgYSBwYXRoLiBBbiBvYmplY3QgY2FuIHRoZW4gcHJvdmlkZSBhIGxvdy1sZXZlbAorcmVwcmVzZW50YXRpb24gb2YgYSBmaWxlIHN5c3RlbSBwYXRoIGFzIGEgOmNsYXNzOmBzdHJgIG9yCis6Y2xhc3M6YGJ5dGVzYCBvYmplY3QuIFRoaXMgbWVhbnMgYW4gb2JqZWN0IGlzIGNvbnNpZGVyZWQKKzp0ZXJtOmBwYXRoLWxpa2UgPHBhdGgtbGlrZSBvYmplY3Q+YCBpZiBpdCBpbXBsZW1lbnRzCis6Y2xhc3M6YG9zLlBhdGhMaWtlYCBvciBpcyBhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QKK3doaWNoIHJlcHJlc2VudHMgYSBmaWxlIHN5c3RlbSBwYXRoLiBDb2RlIGNhbiB1c2UgOmZ1bmM6YG9zLmZzcGF0aGAsCis6ZnVuYzpgb3MuZnNkZWNvZGVgLCBvciA6ZnVuYzpgb3MuZnNlbmNvZGVgIHRvIGV4cGxpY2l0bHkgZ2V0IGEKKzpjbGFzczpgc3RyYCBhbmQvb3IgOmNsYXNzOmBieXRlc2AgcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoLWxpa2UKK29iamVjdC4KKworVGhlIGJ1aWx0LWluIDpmdW5jOmBvcGVuYCBmdW5jdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIGFjY2VwdAorOmNsYXNzOmBvcy5QYXRoTGlrZWAgb2JqZWN0cyBhcyBoYXZlIGFsbCByZWxldmFudCBmdW5jdGlvbnMgaW4gdGhlCis6bW9kOmBvc2AgYW5kIDptb2Q6YG9zLnBhdGhgIG1vZHVsZXMuIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0NvbnZlcnRlcmAKK2FuZCA6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGFjY2VwdAorcGF0aC1saWtlIG9iamVjdHMuIFRoZSA6Y2xhc3M6YG9zLkRpckVudHJ5YCBjbGFzcworYW5kIHJlbGV2YW50IGNsYXNzZXMgaW4gOm1vZDpgcGF0aGxpYmAgaGF2ZSBhbHNvIGJlZW4gdXBkYXRlZCB0bworaW1wbGVtZW50IDpjbGFzczpgb3MuUGF0aExpa2VgLgorCitUaGUgaG9wZSBpbiBpcyB0aGF0IHVwZGF0aW5nIHRoZSBmdW5kYW1lbnRhbCBmdW5jdGlvbnMgZm9yIG9wZXJhdGluZworb24gZmlsZSBzeXN0ZW0gcGF0aHMgd2lsbCBsZWFkIHRvIHRoaXJkLXBhcnR5IGNvZGUgdG8gaW1wbGljaXRseQorc3VwcG9ydCBhbGwgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RzIDxwYXRoLWxpa2Ugb2JqZWN0PmAgd2l0aG91dCBhbnkKK2NvZGUgY2hhbmdlcyBvciBhdCBsZWFzdCB2ZXJ5IG1pbmltYWwgb25lcyAoZS5nLiBjYWxsaW5nCis6ZnVuYzpgb3MuZnNwYXRoYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGNvZGUgYmVmb3JlIG9wZXJhdGluZyBvbiBhCitwYXRoLWxpa2Ugb2JqZWN0KS4KKworSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiBob3cgdGhlIG5ldyBpbnRlcmZhY2UgYWxsb3dzIGZvcgorOmNsYXNzOmBwYXRobGliLlBhdGhgIHRvIGJlIHVzZWQgbW9yZSBlYXNpbHkgYW5kIHRyYW5zcGFyZW50bHkgd2l0aAorcHJlLWV4aXN0aW5nIGNvZGU6OgorCisgID4+PiBpbXBvcnQgcGF0aGxpYgorICA+Pj4gd2l0aCBvcGVuKHBhdGhsaWIuUGF0aCgiUkVBRE1FIikpIGFzIGY6CisgIC4uLiAgICAgY29udGVudHMgPSBmLnJlYWQoKQorICAuLi4KKyAgPj4+IGltcG9ydCBvcy5wYXRoCisgID4+PiBvcy5wYXRoLnNwbGl0ZXh0KHBhdGhsaWIuUGF0aCgic29tZV9maWxlLnR4dCIpKQorICAoJ3NvbWVfZmlsZScsICcudHh0JykKKyAgPj4+IG9zLnBhdGguam9pbigiL2EvYiIsIHBhdGhsaWIuUGF0aCgiYyIpKQorICAnL2EvYi9jJworICA+Pj4gaW1wb3J0IG9zCisgID4+PiBvcy5mc3BhdGgocGF0aGxpYi5QYXRoKCJzb21lX2ZpbGUudHh0IikpCisgICdzb21lX2ZpbGUudHh0JworCisoSW1wbGVtZW50ZWQgYnkgQnJldHQgQ2Fubm9uLCBFdGhhbiBGdXJtYW4sIER1c3R5IFBoaWxsaXBzLCBhbmQgSmVsbGUgWmlqbHN0cmEuKQorCisuLiBzZWVhbHNvOjoKKworICAgIDpwZXA6YDUxOWAgLS0gQWRkaW5nIGEgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbAorICAgICAgIFBFUCB3cml0dGVuIGJ5IEJyZXR0IENhbm5vbiBhbmQgS29vcyBaZXZlbmhvdmVuLgorCisKKy4uIF93aGF0c25ldy1mc3RyaW5nczoKKworUEVQIDQ5ODogRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFyZSBhIG5ldyBraW5kIG9mIHN0cmluZyBsaXRlcmFsLCBwcmVmaXhlZAord2l0aCBgYCdmJ2BgLiAgVGhleSBhcmUgc2ltaWxhciB0byB0aGUgZm9ybWF0IHN0cmluZ3MgYWNjZXB0ZWQgYnkKKzptZXRoOmBzdHIuZm9ybWF0YC4gIFRoZXkgY29udGFpbiByZXBsYWNlbWVudCBmaWVsZHMgc3Vycm91bmRlZCBieQorY3VybHkgYnJhY2VzLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyBhcmUgZXhwcmVzc2lvbnMsIHdoaWNoIGFyZQorZXZhbHVhdGVkIGF0IHJ1biB0aW1lLCBhbmQgdGhlbiBmb3JtYXR0ZWQgdXNpbmcgdGhlIDpmdW5jOmBmb3JtYXRgIHByb3RvY29sOjoKKworICAgID4+PiBuYW1lID0gIkZyZWQiCisgICAgPj4+IGYiSGUgc2FpZCBoaXMgbmFtZSBpcyB7bmFtZX0uIgorICAgICdIZSBzYWlkIGhpcyBuYW1lIGlzIEZyZWQuJworCitTZWUgOnBlcDpgNDk4YCBhbmQgdGhlIG1haW4gZG9jdW1lbnRhdGlvbiBhdCA6cmVmOmBmLXN0cmluZ3NgLgorCisKKy4uIF92YXJpYWJsZS1hbm5vdGF0aW9uczoKKworUEVQIDUyNjogU3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6cGVwOmA0ODRgIGludHJvZHVjZWQgc3RhbmRhcmQgZm9yIHR5cGUgYW5ub3RhdGlvbnMgb2YgZnVuY3Rpb24gcGFyYW1ldGVycywKK2Euay5hLiB0eXBlIGhpbnRzLiBUaGlzIFBFUCBhZGRzIHN5bnRheCB0byBQeXRob24gZm9yIGFubm90YXRpbmcgdGhlCit0eXBlcyBvZiB2YXJpYWJsZXMgaW5jbHVkaW5nIGNsYXNzIHZhcmlhYmxlcyBhbmQgaW5zdGFuY2UgdmFyaWFibGVzOjoKKworICAgIHByaW1lczogTGlzdFtpbnRdID0gW10KKworICAgIGNhcHRhaW46IHN0ciAgIyBOb3RlOiBubyBpbml0aWFsIHZhbHVlIQorCisgICAgY2xhc3MgU3RhcnNoaXA6CisgICAgICAgIHN0YXRzOiBEaWN0W3N0ciwgaW50XSA9IHt9CisKK0p1c3QgYXMgZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLCB0aGUgUHl0aG9uIGludGVycHJldGVyIGRvZXMgbm90IGF0dGFjaCBhbnkKK3BhcnRpY3VsYXIgbWVhbmluZyB0byB2YXJpYWJsZSBhbm5vdGF0aW9ucyBhbmQgb25seSBzdG9yZXMgdGhlbSBpbiBhIHNwZWNpYWwKK2F0dHJpYnV0ZSBgYF9fYW5ub3RhdGlvbnNfX2BgIG9mIGEgY2xhc3Mgb3IgbW9kdWxlLgorSW4gY29udHJhc3QgdG8gdmFyaWFibGUgZGVjbGFyYXRpb25zIGluIHN0YXRpY2FsbHkgdHlwZWQgbGFuZ3VhZ2VzLAordGhlIGdvYWwgb2YgYW5ub3RhdGlvbiBzeW50YXggaXMgdG8gcHJvdmlkZSBhbiBlYXN5IHdheSB0byBzcGVjaWZ5IHN0cnVjdHVyZWQKK3R5cGUgbWV0YWRhdGEgZm9yIHRoaXJkIHBhcnR5IHRvb2xzIGFuZCBsaWJyYXJpZXMgdmlhIHRoZSBhYnN0cmFjdCBzeW50YXggdHJlZQorYW5kIHRoZSBgYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDUyNmAgLS0gU3ludGF4IGZvciB2YXJpYWJsZSBhbm5vdGF0aW9ucy4KKyAgICAgIFBFUCB3cml0dGVuIGJ5IFJ5YW4gR29uemFsZXosIFBoaWxpcCBIb3VzZSwgSXZhbiBMZXZraXZza3lpLCBMaXNhIFJvYWNoLAorICAgICAgYW5kIEd1aWRvIHZhbiBSb3NzdW0uIEltcGxlbWVudGVkIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworICAgVG9vbHMgdGhhdCB1c2Ugb3Igd2lsbCB1c2UgdGhlIG5ldyBzeW50YXg6CisgICBgbXlweSA8aHR0cDovL2dpdGh1Yi5jb20vcHl0aG9uL215cHk+YF8sCisgICBgcHl0eXBlIDxodHRwOi8vZ2l0aHViLmNvbS9nb29nbGUvcHl0eXBlPmBfLCBQeUNoYXJtLCBldGMuCisKKworLi4gX3BlcC01Mjk6CisKK1BFUCA1Mjk6IENoYW5nZSBXaW5kb3dzIGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gVVRGLTgKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUmVwcmVzZW50aW5nIGZpbGVzeXN0ZW0gcGF0aHMgaXMgYmVzdCBwZXJmb3JtZWQgd2l0aCBzdHIgKFVuaWNvZGUpIHJhdGhlciB0aGFuCitieXRlcy4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgc2l0dWF0aW9ucyB3aGVyZSB1c2luZyBieXRlcyBpcyBzdWZmaWNpZW50IGFuZAorY29ycmVjdC4KKworUHJpb3IgdG8gUHl0aG9uIDMuNiwgZGF0YSBsb3NzIGNvdWxkIHJlc3VsdCB3aGVuIHVzaW5nIGJ5dGVzIHBhdGhzIG9uIFdpbmRvd3MuCitXaXRoIHRoaXMgY2hhbmdlLCB1c2luZyBieXRlcyB0byByZXByZXNlbnQgcGF0aHMgaXMgbm93IHN1cHBvcnRlZCBvbiBXaW5kb3dzLAorcHJvdmlkZWQgdGhvc2UgYnl0ZXMgYXJlIGVuY29kZWQgd2l0aCB0aGUgZW5jb2RpbmcgcmV0dXJuZWQgYnkKKzpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKClgLCB3aGljaCBub3cgZGVmYXVsdHMgdG8gYGAndXRmLTgnYGAuCisKK0FwcGxpY2F0aW9ucyB0aGF0IGRvIG5vdCB1c2Ugc3RyIHRvIHJlcHJlc2VudCBwYXRocyBzaG91bGQgdXNlCis6ZnVuYzpgb3MuZnNlbmNvZGUoKWAgYW5kIDpmdW5jOmBvcy5mc2RlY29kZSgpYCB0byBlbnN1cmUgdGhlaXIgYnl0ZXMgYXJlCitjb3JyZWN0bHkgZW5jb2RlZC4gVG8gcmV2ZXJ0IHRvIHRoZSBwcmV2aW91cyBiZWhhdmlvdXIsIHNldAorOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkdgIG9yIGNhbGwKKzpmdW5jOmBzeXMuX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nYC4KKworU2VlIDpwZXA6YDUyOWAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGRpc2N1c3Npb24gb2YgY29kZSBtb2RpZmljYXRpb25zIHRoYXQKK21heSBiZSByZXF1aXJlZC4KKworLi4gbm90ZTo6CisKKyAgIFRoaXMgY2hhbmdlIGlzIGNvbnNpZGVyZWQgZXhwZXJpbWVudGFsIGZvciAzLjYuMCBiZXRhIHJlbGVhc2VzLiBUaGUgZGVmYXVsdAorICAgZW5jb2RpbmcgbWF5IGNoYW5nZSBiZWZvcmUgdGhlIGZpbmFsIHJlbGVhc2UuCisKKy4uIF93aGF0c25ldy1wZXA0ODc6CisKK1BFUCA0ODc6IFNpbXBsZXIgY3VzdG9taXphdGlvbiBvZiBjbGFzcyBjcmVhdGlvbgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Vwb24gc3ViY2xhc3NpbmcgYSBjbGFzcywgdGhlIGBgX19pbml0X3N1YmNsYXNzX19gYCBjbGFzc21ldGhvZCAoaWYgZGVmaW5lZCkgaXMKK2NhbGxlZCBvbiB0aGUgYmFzZSBjbGFzcy4gVGhpcyBtYWtlcyBpdCBzdHJhaWdodGZvcndhcmQgdG8gd3JpdGUgY2xhc3NlcyB0aGF0CitjdXN0b21pemUgaW5pdGlhbGl6YXRpb24gb2YgZnV0dXJlIHN1YmNsYXNzZXMgd2l0aG91dCBpbnRyb2R1Y2luZyB0aGUKK2NvbXBsZXhpdHkgb2YgYSBmdWxsIGN1c3RvbSBtZXRhY2xhc3MuCisKK1RoZSBkZXNjcmlwdG9yIHByb3RvY29sIGhhcyBhbHNvIGJlZW4gZXhwYW5kZWQgdG8gaW5jbHVkZSBhIG5ldyBvcHRpb25hbCBtZXRob2QsCitgYF9fc2V0X25hbWVfX2BgLiBXaGVuZXZlciBhIG5ldyBjbGFzcyBpcyBkZWZpbmVkLCB0aGUgbmV3IG1ldGhvZCB3aWxsIGJlIGNhbGxlZAorb24gYWxsIGRlc2NyaXB0b3JzIGluY2x1ZGVkIGluIHRoZSBkZWZpbml0aW9uLCBwcm92aWRpbmcgdGhlbSB3aXRoIGEgcmVmZXJlbmNlCit0byB0aGUgY2xhc3MgYmVpbmcgZGVmaW5lZCBhbmQgdGhlIG5hbWUgZ2l2ZW4gdG8gdGhlIGRlc2NyaXB0b3Igd2l0aGluIHRoZQorY2xhc3MgbmFtZXNwYWNlLgorCitBbHNvIHNlZSA6cGVwOmA0ODdgIGFuZCB0aGUgdXBkYXRlZCBjbGFzcyBjdXN0b21pemF0aW9uIGRvY3VtZW50YXRpb24gYXQKKzpyZWY6YGNsYXNzLWN1c3RvbWl6YXRpb25gIGFuZCA6cmVmOmBkZXNjcmlwdG9yc2AuCisKKyhDb250cmlidXRlZCBieSBNYXJ0aW4gVGVpY2htYW5uIGluIDppc3N1ZTpgMjczNjZgKQorCisuLiBfcGVwLTUyODoKKworUEVQIDUyODogQ2hhbmdlIFdpbmRvd3MgY29uc29sZSBlbmNvZGluZyB0byBVVEYtOAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZGVmYXVsdCBjb25zb2xlIG9uIFdpbmRvd3Mgd2lsbCBub3cgYWNjZXB0IGFsbCBVbmljb2RlIGNoYXJhY3RlcnMgYW5kCitwcm92aWRlIGNvcnJlY3RseSByZWFkIHN0ciBvYmplY3RzIHRvIFB5dGhvbiBjb2RlLiBgYHN5cy5zdGRpbmBgLAorYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIG5vdyBkZWZhdWx0IHRvIHV0Zi04IGVuY29kaW5nLgorCitUaGlzIGNoYW5nZSBvbmx5IGFwcGxpZXMgd2hlbiB1c2luZyBhbiBpbnRlcmFjdGl2ZSBjb25zb2xlLCBhbmQgbm90IHdoZW4KK3JlZGlyZWN0aW5nIGZpbGVzIG9yIHBpcGVzLiBUbyByZXZlcnQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW91ciBmb3IgaW50ZXJhY3RpdmUKK2NvbnNvbGUgdXNlLCBzZXQgOmVudnZhcjpgUFlUSE9OTEVHQUNZV0lORE9XU0lPRU5DT0RJTkdgLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTI4YCAtLSBDaGFuZ2UgV2luZG93cyBjb25zb2xlIGVuY29kaW5nIHRvIFVURi04CisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgU3RldmUgRG93ZXIuCisKK1BZVEhPTk1BTExPQyBlbnZpcm9ubWVudCB2YXJpYWJsZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBuZXcgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbGxvd3Mgc2V0dGluZyB0aGUgUHl0aG9uCittZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworSXQgaXMgbm93IHBvc3NpYmxlIHRvIGluc3RhbGwgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG9uIFB5dGhvbgorY29tcGlsZWQgaW4gcmVsZWFzZSBtb2RlIHVzaW5nIGBgUFlUSE9OTUFMTE9DPWRlYnVnYGAuIEVmZmVjdHMgb2YgZGVidWcgaG9va3M6CisKKyogTmV3bHkgYWxsb2NhdGVkIG1lbW9yeSBpcyBmaWxsZWQgd2l0aCB0aGUgYnl0ZSBgYDB4Q0JgYAorKiBGcmVlZCBtZW1vcnkgaXMgZmlsbGVkIHdpdGggdGhlIGJ5dGUgYGAweERCYGAKKyogRGV0ZWN0IHZpb2xhdGlvbnMgb2YgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgQVBJLiBGb3IgZXhhbXBsZSwKKyAgOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgbWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBieQorICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLgorKiBEZXRlY3Qgd3JpdGUgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyIChidWZmZXIgdW5kZXJmbG93KQorKiBEZXRlY3Qgd3JpdGUgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIChidWZmZXIgb3ZlcmZsb3cpCisqIENoZWNrIHRoYXQgdGhlIDp0ZXJtOmBHSUwgPGdsb2JhbCBpbnRlcnByZXRlciBsb2NrPmAgaXMgaGVsZCB3aGVuIGFsbG9jYXRvcgorICBmdW5jdGlvbnMgb2YgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OiA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQKKyAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgKGV4OiA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgKSBkb21haW5zIGFyZSBjYWxsZWQuCisKK0NoZWNraW5nIGlmIHRoZSBHSUwgaXMgaGVsZCBpcyBhbHNvIGEgbmV3IGZlYXR1cmUgb2YgUHl0aG9uIDMuNi4KKworU2VlIHRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGZvciBkZWJ1ZyBob29rcyBvbiBQeXRob24KK21lbW9yeSBhbGxvY2F0b3JzLgorCitJdCBpcyBub3cgYWxzbyBwb3NzaWJsZSB0byBmb3JjZSB0aGUgdXNhZ2Ugb2YgdGhlIDpjOmZ1bmM6YG1hbGxvY2AgYWxsb2NhdG9yIG9mCit0aGUgQyBsaWJyYXJ5IGZvciBhbGwgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyB1c2luZyBgYFBZVEhPTk1BTExPQz1tYWxsb2NgYC4KK0l0IGhlbHBzIHRvIHVzZSBleHRlcm5hbCBtZW1vcnkgZGVidWdnZXJzIGxpa2UgVmFsZ3JpbmQgb24gYSBQeXRob24gY29tcGlsZWQgaW4KK3JlbGVhc2UgbW9kZS4KKworT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcnMgbm93IHVzZSB0aGUKKzptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzCithbGxvY2F0ZWQuCisKK0V4YW1wbGUgb2YgZmF0YWwgZXJyb3Igb24gYnVmZmVyIG92ZXJmbG93IHVzaW5nCitgYHB5dGhvbjMuNiAtWCB0cmFjZW1hbGxvYz01YGAgKHN0b3JlIDUgZnJhbWVzIGluIHRyYWNlcyk6OgorCisgICAgRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD0weDdmYmNkNDE2NjZmODogQVBJICdvJworICAgICAgICA0IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkCisgICAgICAgIFRoZSA3IHBhZCBieXRlcyBhdCBwLTcgYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLgorICAgICAgICBUaGUgOCBwYWQgYnl0ZXMgYXQgdGFpbD0weDdmYmNkNDE2NjZmYyBhcmUgbm90IGFsbCBGT1JCSURERU5CWVRFICgweGZiKToKKyAgICAgICAgICAgIGF0IHRhaWwrMDogMHgwMiAqKiogT1VDSAorICAgICAgICAgICAgYXQgdGFpbCsxOiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzI6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrMzogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs0OiAweGZiCisgICAgICAgICAgICBhdCB0YWlsKzU6IDB4ZmIKKyAgICAgICAgICAgIGF0IHRhaWwrNjogMHhmYgorICAgICAgICAgICAgYXQgdGFpbCs3OiAweGZiCisgICAgICAgIFRoZSBibG9jayB3YXMgbWFkZSBieSBjYWxsICMxMjMzMzI5IHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLgorICAgICAgICBEYXRhIGF0IHA6IDFhIDJiIDMwIDAwCisKKyAgICBNZW1vcnkgYmxvY2sgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgIEZpbGUgInRlc3QvdGVzdF9ieXRlcy5weSIsIGxpbmUgMzIzCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2MDAKKyAgICAgIEZpbGUgInVuaXR0ZXN0L2Nhc2UucHkiLCBsaW5lIDY0OAorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDEyMgorICAgICAgRmlsZSAidW5pdHRlc3Qvc3VpdGUucHkiLCBsaW5lIDg0CisKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IGJhZCB0cmFpbGluZyBwYWQgYnl0ZQorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiY2RiZDMyNzAwIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgIEZpbGUgInRlc3QvdGVzdF9ieXRlcy5weSIsIGxpbmUgMzIzIGluIHRlc3RfaGV4CisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2MDAgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9jYXNlLnB5IiwgbGluZSA2NDggaW4gX19jYWxsX18KKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgODQgaW4gX19jYWxsX18KKyAgICAgIEZpbGUgInVuaXR0ZXN0L3N1aXRlLnB5IiwgbGluZSAxMjIgaW4gcnVuCisgICAgICBGaWxlICJ1bml0dGVzdC9zdWl0ZS5weSIsIGxpbmUgODQgaW4gX19jYWxsX18KKyAgICAgIC4uLgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjUxNmAgYW5kIDppc3N1ZTpgMjY1NjRgLikKKworCitEVHJhY2UgYW5kIFN5c3RlbVRhcCBwcm9iaW5nIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitQeXRob24gY2FuIG5vdyBiZSBidWlsdCBgYC0td2l0aC1kdHJhY2VgYCB3aGljaCBlbmFibGVzIHN0YXRpYyBtYXJrZXJzCitmb3IgdGhlIGZvbGxvd2luZyBldmVudHMgaW4gdGhlIGludGVycHJldGVyOgorCisqIGZ1bmN0aW9uIGNhbGwvcmV0dXJuCisKKyogZ2FyYmFnZSBjb2xsZWN0aW9uIHN0YXJ0ZWQvZmluaXNoZWQKKworKiBsaW5lIG9mIGNvZGUgZXhlY3V0ZWQuCisKK1RoaXMgY2FuIGJlIHVzZWQgdG8gaW5zdHJ1bWVudCBydW5uaW5nIGludGVycHJldGVycyBpbiBwcm9kdWN0aW9uLAord2l0aG91dCB0aGUgbmVlZCB0byByZWNvbXBpbGUgc3BlY2lmaWMgZGVidWcgYnVpbGRzIG9yIHByb3ZpZGluZworYXBwbGljYXRpb24tc3BlY2lmaWMgcHJvZmlsaW5nL2RlYnVnZ2luZyBjb2RlLgorCitNb3JlIGRldGFpbHMgaW4gOnJlZjpgaW5zdHJ1bWVudGF0aW9uYC4KKworVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgdGVzdGVkIG9uIExpbnV4IGFuZCBtYWNPUy4gIEFkZGl0aW9uYWwKK21hcmtlcnMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisKKyhDb250cmlidXRlZCBieSDFgXVrYXN6IExhbmdhIGluIDppc3N1ZTpgMjE1OTBgLCBiYXNlZCBvbiBwYXRjaGVzIGJ5CitKZXPDunMgQ2VhIEF2acOzbiwgRGF2aWQgTWFsY29sbSwgYW5kIE5pa2hpbCBCZW5lc2NoLikKKworCisuLiBfd2hhdHNuZXctZGVmb3JkZXI6CisKK1BFUCA1MjA6IFByZXNlcnZpbmcgQ2xhc3MgQXR0cmlidXRlIERlZmluaXRpb24gT3JkZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQXR0cmlidXRlcyBpbiBhIGNsYXNzIGRlZmluaXRpb24gYm9keSBoYXZlIGEgbmF0dXJhbCBvcmRlcmluZzogdGhlIHNhbWUKK29yZGVyIGluIHdoaWNoIHRoZSBuYW1lcyBhcHBlYXIgaW4gdGhlIHNvdXJjZS4gIFRoaXMgb3JkZXIgaXMgbm93CitwcmVzZXJ2ZWQgaW4gdGhlIG5ldyBjbGFzcydzIGBgX19kaWN0X19gYCBhdHRyaWJ1dGUuCisKK0Fsc28sIHRoZSBlZmZlY3RpdmUgZGVmYXVsdCBjbGFzcyAqZXhlY3V0aW9uKiBuYW1lc3BhY2UgKHJldHVybmVkIGZyb20KK2BgdHlwZS5fX3ByZXBhcmVfXygpYGApIGlzIG5vdyBhbiBpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nLgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTIwYCAtLSBQcmVzZXJ2aW5nIENsYXNzIEF0dHJpYnV0ZSBEZWZpbml0aW9uIE9yZGVyCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisKKy4uIF93aGF0c25ldy1rd2FyZ3M6CisKK1BFUCA0Njg6IFByZXNlcnZpbmcgS2V5d29yZCBBcmd1bWVudCBPcmRlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2BgKiprd2FyZ3NgYCBpbiBhIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBub3cgZ3VhcmFudGVlZCB0byBiZSBhbgoraW5zZXJ0aW9uLW9yZGVyLXByZXNlcnZpbmcgbWFwcGluZy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQ2OGAgLS0gUHJlc2VydmluZyBLZXl3b3JkIEFyZ3VtZW50IE9yZGVyCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgRXJpYyBTbm93LgorCisuLiBfd2hhdHNuZXctcGVwNTA5OgorCitQRVAgNTA5OiBBZGQgYSBwcml2YXRlIHZlcnNpb24gdG8gZGljdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkIGEgbmV3IHByaXZhdGUgdmVyc2lvbiB0byB0aGUgYnVpbHRpbiBgYGRpY3RgYCB0eXBlLCBpbmNyZW1lbnRlZCBhdAorZWFjaCBkaWN0aW9uYXJ5IGNyZWF0aW9uIGFuZCBhdCBlYWNoIGRpY3Rpb25hcnkgY2hhbmdlLCB0byBpbXBsZW1lbnQKK2Zhc3QgZ3VhcmRzIG9uIG5hbWVzcGFjZXMuCisKKyhDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbiA6aXNzdWU6YDI2MDU4YC4pCisKKworT3RoZXIgTGFuZ3VhZ2UgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PQorCitTb21lIHNtYWxsZXIgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb3JlIFB5dGhvbiBsYW5ndWFnZSBhcmU6CisKKyogOmZ1bmM6YGRpY3RgIG5vdyB1c2VzIGEgImNvbXBhY3QiIHJlcHJlc2VudGF0aW9uIGBwaW9uZWVyZWQgYnkgUHlQeQorICA8aHR0cHM6Ly9tb3JlcHlweS5ibG9nc3BvdC5jb20vMjAxNS8wMS9mYXN0ZXItbW9yZS1tZW1vcnktZWZmaWNpZW50LWFuZC1tb3JlLmh0bWw+YF8uCisgIFRoZSBtZW1vcnkgdXNhZ2Ugb2YgdGhlIG5ldyA6ZnVuYzpgZGljdGAgaXMgYmV0d2VlbiAyMCUgYW5kIDI1JSBzbWFsbGVyCisgIGNvbXBhcmVkIHRvIFB5dGhvbiAzLjUuCisgIDpwZXA6YDQ2OGAgKFByZXNlcnZpbmcgdGhlIG9yZGVyIG9mIGBgKiprd2FyZ3NgYCBpbiBhIGZ1bmN0aW9uLikgaXMKKyAgaW1wbGVtZW50ZWQgYnkgdGhpcy4gVGhlIG9yZGVyLXByZXNlcnZpbmcgYXNwZWN0IG9mIHRoaXMgbmV3CisgIGltcGxlbWVudGF0aW9uIGlzIGNvbnNpZGVyZWQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGFuZCBzaG91bGQKKyAgbm90IGJlIHJlbGllZCB1cG9uICh0aGlzIG1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSwgYnV0IGl0IGlzIGRlc2lyZWQKKyAgdG8gaGF2ZSB0aGlzIG5ldyBkaWN0IGltcGxlbWVudGF0aW9uIGluIHRoZSBsYW5ndWFnZSBmb3IgYSBmZXcKKyAgcmVsZWFzZXMgYmVmb3JlIGNoYW5naW5nIHRoZSBsYW5ndWFnZSBzcGVjIHRvIG1hbmRhdGUKKyAgb3JkZXItcHJlc2VydmluZyBzZW1hbnRpY3MgZm9yIGFsbCBjdXJyZW50IGFuZCBmdXR1cmUgUHl0aG9uCisgIGltcGxlbWVudGF0aW9uczsgdGhpcyBhbHNvIGhlbHBzIHByZXNlcnZlIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CisgIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgdGhlIGxhbmd1YWdlIHdoZXJlIHJhbmRvbSBpdGVyYXRpb24gb3JkZXIgaXMKKyAgc3RpbGwgaW4gZWZmZWN0LCBlLmcuIFB5dGhvbiAzLjUpLgorICAoQ29udHJpYnV0ZWQgYnkgSU5BREEgTmFva2kgaW4gOmlzc3VlOmAyNzM1MGAuIElkZWEKKyAgYG9yaWdpbmFsbHkgc3VnZ2VzdGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyCisgIDxodHRwczovL21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLWRldi8yMDEyLURlY2VtYmVyLzEyMzAyOC5odG1sPmBfLikKKworKiBMb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCB0cmFjZWJhY2sgbGluZXMgYXJlIG5vdyBhYmJyZXZpYXRlZCBhcworICBgYCJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdImBgIChzZWUKKyAgOnJlZjpgcHkzNi10cmFjZWJhY2tgIGZvciBhbiBleGFtcGxlKS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkgaW4gOmlzc3VlOmAyNjgyM2AuKQorCisqIEltcG9ydCBub3cgcmFpc2VzIHRoZSBuZXcgZXhjZXB0aW9uIDpleGM6YE1vZHVsZU5vdEZvdW5kRXJyb3JgCisgIChzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmApIHdoZW4gaXQgY2Fubm90IGZpbmQgYSBtb2R1bGUuICBDb2RlCisgIHRoYXQgY3VycmVudCBjaGVja3MgZm9yIEltcG9ydEVycm9yIChpbiB0cnktZXhjZXB0KSB3aWxsIHN0aWxsIHdvcmsuCisKKworTmV3IE1vZHVsZXMKKz09PT09PT09PT09CisKKyogTm9uZSB5ZXQuCisKKworSW1wcm92ZWQgTW9kdWxlcworPT09PT09PT09PT09PT09PQorCitPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBibG9ja3MgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbAoraXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LiBTZWUgdGhlIDpwZXA6YDUyNGAgZm9yIHRoZSByYXRpb25hbGUuCisKKworYXN5bmNpbworLS0tLS0tLQorCitTaW5jZSB0aGUgOm1vZDpgYXN5bmNpb2AgbW9kdWxlIGlzIDp0ZXJtOmBwcm92aXNpb25hbCA8cHJvdmlzaW9uYWwgYXBpPmAsCithbGwgY2hhbmdlcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjYgaGF2ZSBhbHNvIGJlZW4gYmFja3BvcnRlZCB0byBQeXRob24KKzMuNS54LgorCitOb3RhYmxlIGNoYW5nZXMgaW4gdGhlIDptb2Q6YGFzeW5jaW9gIG1vZHVsZSBzaW5jZSBQeXRob24gMy41LjA6CisKKyogVGhlIDpmdW5jOmB+YXN5bmNpby5lbnN1cmVfZnV0dXJlYCBmdW5jdGlvbiBhbmQgYWxsIGZ1bmN0aW9ucyB0aGF0CisgIHVzZSBpdCwgc3VjaCBhcyA6bWV0aDpgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoKSA8YXN5bmNpby5CYXNlRXZlbnRMb29wLnJ1bl91bnRpbF9jb21wbGV0ZT5gLAorICBub3cgYWNjZXB0IGFsbCBraW5kcyBvZiA6dGVybTpgYXdhaXRhYmxlIG9iamVjdHMgPGF3YWl0YWJsZT5gLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6ZnVuYzpgfmFzeW5jaW8ucnVuX2Nvcm91dGluZV90aHJlYWRzYWZlYCBmdW5jdGlvbiB0byBzdWJtaXQKKyAgY29yb3V0aW5lcyB0byBldmVudCBsb29wcyBmcm9tIG90aGVyIHRocmVhZHMuCisgIChDb250cmlidXRlZCBieSBWaW5jZW50IE1pY2hlbC4pCisKKyogTmV3IDptZXRoOmBUcmFuc3BvcnQuaXNfY2xvc2luZygpIDxhc3luY2lvLkJhc2VUcmFuc3BvcnQuaXNfY2xvc2luZz5gCisgIG1ldGhvZCB0byBjaGVjayBpZiB0aGUgdHJhbnNwb3J0IGlzIGNsb3Npbmcgb3IgY2xvc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5jcmVhdGVfc2VydmVyKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfc2VydmVyPmAKKyAgbWV0aG9kIGNhbiBub3cgYWNjZXB0IGEgbGlzdCBvZiBob3N0cy4KKyAgKENvbnRyaWJ1dGVkIGJ5IFlhbm4gU2lvbm5lYXUuKQorCisqIE5ldyA6bWV0aDpgbG9vcC5jcmVhdGVfZnV0dXJlKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5jcmVhdGVfZnV0dXJlPmAKKyAgbWV0aG9kIHRvIGNyZWF0ZSBGdXR1cmUgb2JqZWN0cy4gIFRoaXMgYWxsb3dzIGFsdGVybmF0aXZlIGV2ZW50CisgIGxvb3AgaW1wbGVtZW50YXRpb25zLCBzdWNoIGFzCisgIGB1dmxvb3AgPGh0dHBzOi8vZ2l0aHViLmNvbS9NYWdpY1N0YWNrL3V2bG9vcD5gXywgdG8gcHJvdmlkZSBhIGZhc3RlcgorICA6Y2xhc3M6YGFzeW5jaW8uRnV0dXJlYCBpbXBsZW1lbnRhdGlvbi4KKyAgKENvbnRyaWJ1dGVkIGJ5IFl1cnkgU2VsaXZhbm92LikKKworKiBOZXcgOm1ldGg6YGxvb3AuZ2V0X2V4Y2VwdGlvbl9oYW5kbGVyKCkgPGFzeW5jaW8uQmFzZUV2ZW50TG9vcC5nZXRfZXhjZXB0aW9uX2hhbmRsZXI+YAorICBtZXRob2QgdG8gZ2V0IHRoZSBjdXJyZW50IGV4Y2VwdGlvbiBoYW5kbGVyLgorICAoQ29udHJpYnV0ZWQgYnkgWXVyeSBTZWxpdmFub3YuKQorCisqIE5ldyA6bWV0aDpgU3RyZWFtUmVhZGVyLnJlYWR1bnRpbCgpIDxhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkdW50aWw+YAorICBtZXRob2QgdG8gcmVhZCBkYXRhIGZyb20gdGhlIHN0cmVhbSB1bnRpbCBhIHNlcGFyYXRvciBieXRlcworICBzZXF1ZW5jZSBhcHBlYXJzLgorICAoQ29udHJpYnV0ZWQgYnkgTWFyayBLb3JlbmJlcmcuKQorCisqIFRoZSA6bWV0aDpgbG9vcC5nZXRhZGRyaW5mbygpIDxhc3luY2lvLkJhc2VFdmVudExvb3AuZ2V0YWRkcmluZm8+YAorICBtZXRob2QgaXMgb3B0aW1pemVkIHRvIGF2b2lkIGNhbGxpbmcgdGhlIHN5c3RlbSBgYGdldGFkZHJpbmZvYGAKKyAgZnVuY3Rpb24gaWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSByZXNvbHZlZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IEEuIEplc3NlIEppcnl1IERhdmlzLikKKworCitjb250ZXh0bGliCistLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAgY2xhc3MgaGFzIGJlZW4gYWRkZWQgdG8KK3Byb3ZpZGUgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgY29udGV4dCBtYW5hZ2Vycy4gSXQgcHJvdmlkZXMgYQorc2Vuc2libGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgYF9fZW50ZXJfXygpYCB3aGljaCByZXR1cm5zCitgYHNlbGZgYCBhbmQgbGVhdmVzIGBfX2V4aXRfXygpYCBhbiBhYnN0cmFjdCBtZXRob2QuIEEgbWF0Y2hpbmcKK2NsYXNzIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSA6bW9kOmB0eXBpbmdgIG1vZHVsZSBhcworOmNsYXNzOmB0eXBpbmcuQ29udGV4dE1hbmFnZXJgLgorKENvbnRyaWJ1dGVkIGJ5IEJyZXR0IENhbm5vbiBpbiA6aXNzdWU6YDI1NjA5YC4pCisKKwordmVudgorLS0tLQorCis6bW9kOmB2ZW52YCBhY2NlcHRzIGEgbmV3IHBhcmFtZXRlciBgYC0tcHJvbXB0YGAuIFRoaXMgcGFyYW1ldGVyIHByb3ZpZGVzIGFuCithbHRlcm5hdGl2ZSBwcmVmaXggZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LiAoUHJvcG9zZWQgYnkgxYF1a2Fzei5CYWxjZXJ6YWsKK2FuZCBwb3J0ZWQgdG8gMy42IGJ5IFN0w6lwaGFuZSBXaXJ0ZWwgaW4gOmlzc3VlOmAyMjgyOWAuKQorCisKK2RhdGV0aW1lCistLS0tLS0tLQorCitUaGUgOm1ldGg6YGRhdGV0aW1lLnN0cmZ0aW1lKCkgPGRhdGV0aW1lLmRhdGV0aW1lLnN0cmZ0aW1lPmAgYW5kCis6bWV0aDpgZGF0ZS5zdHJmdGltZSgpIDxkYXRldGltZS5kYXRlLnN0cmZ0aW1lPmAgbWV0aG9kcyBub3cgc3VwcG9ydCBJU08gODYwMSBkYXRlCitkaXJlY3RpdmVzIGBgJUdgYCwgYGAldWBgIGFuZCBgYCVWYGAuCisoQ29udHJpYnV0ZWQgYnkgQXNobGV5IEFuZGVyc29uIGluIDppc3N1ZTpgMTIwMDZgLikKKworCitkaXN0dXRpbHMuY29tbWFuZC5zZGlzdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGBgZGVmYXVsdF9mb3JtYXRgYCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tCis6Y2xhc3M6YGRpc3R1dGlscy5jb21tYW5kLnNkaXN0LnNkaXN0YCBhbmQgdGhlIGBgZm9ybWF0c2BgCithdHRyaWJ1dGUgZGVmYXVsdHMgdG8gYGBbJ2d6dGFyJ11gYC4gQWx0aG91Z2ggbm90IGFudGljaXBhdGVkLAorQW55IGNvZGUgcmVseWluZyBvbiB0aGUgcHJlc2VuY2Ugb2YgYGBkZWZhdWx0X2Zvcm1hdGBgIG1heQorbmVlZCB0byBiZSBhZGFwdGVkLiBTZWUgOmlzc3VlOmAyNzgxOWAgZm9yIG1vcmUgZGV0YWlscy4KKworCitlbWFpbAorLS0tLS0KKworVGhlIG5ldyBlbWFpbCBBUEksIGVuYWJsZWQgdmlhIHRoZSAqcG9saWN5KiBrZXl3b3JkIHRvIHZhcmlvdXMgY29uc3RydWN0b3JzLCBpcworbm8gbG9uZ2VyIHByb3Zpc2lvbmFsLiAgVGhlIDptb2Q6YGVtYWlsYCBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHJlb3JnYW5pemVkIGFuZAorcmV3cml0dGVuIHRvIGZvY3VzIG9uIHRoZSBuZXcgQVBJLCB3aGlsZSByZXRhaW5pbmcgdGhlIG9sZCBkb2N1bWVudGF0aW9uIGZvcgordGhlIGxlZ2FjeSBBUEkuICAoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjQyNzdgLikKKworVGhlIDptb2Q6YGVtYWlsLm1pbWVgIGNsYXNzZXMgbm93IGFsbCBhY2NlcHQgYW4gb3B0aW9uYWwgKnBvbGljeSoga2V5d29yZC4KKyhDb250cmlidXRlZCBieSBCZXJrZXIgUGVrc2FnIGluIDppc3N1ZTpgMjczMzFgLikKKworVGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yYCBub3cgc3VwcG9ydHMgdGhlICpwb2xpY3kqCitrZXl3b3JkLgorCitUaGVyZSBpcyBhIG5ldyA6bW9kOmB+ZW1haWwucG9saWN5YCBhdHRyaWJ1dGUsCis6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWVzc2FnZV9mYWN0b3J5YCwgdGhhdCBjb250cm9scyB3aGF0IGNsYXNzIGlzIHVzZWQKK2J5IGRlZmF1bHQgd2hlbiB0aGUgcGFyc2VyIGNyZWF0ZXMgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4gIEZvciB0aGUKKzphdHRyOmBlbWFpbC5wb2xpY3kuY29tcGF0MzJgIHBvbGljeSB0aGlzIGlzIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAsCitmb3IgdGhlIG5ldyBwb2xpY2llcyBpdCBpcyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAuCisoQ29udHJpYnV0ZWQgYnkgUi4gRGF2aWQgTXVycmF5IGluIDppc3N1ZTpgMjA0NzZgLikKKworCitlbmNvZGluZ3MKKy0tLS0tLS0tLQorCitPbiBXaW5kb3dzLCBhZGRlZCB0aGUgYGAnb2VtJ2BgIGVuY29kaW5nIHRvIHVzZSBgYENQX09FTUNQYGAgYW5kIHRoZSBgYCdhbnNpJ2BgCithbGlhcyBmb3IgdGhlIGV4aXN0aW5nIGBgJ21iY3MnYGAgZW5jb2RpbmcsIHdoaWNoIHVzZXMgdGhlIGBgQ1BfQUNQYGAgY29kZSBwYWdlLgorCisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKK09uIFdpbmRvd3MsIHRoZSA6bW9kOmBmYXVsdGhhbmRsZXJgIG1vZHVsZSBub3cgaW5zdGFsbHMgYSBoYW5kbGVyIGZvciBXaW5kb3dzCitleGNlcHRpb25zOiBzZWUgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4KKzppc3N1ZTpgMjM4NDhgLikKKworCitoYXNobGliCistLS0tLS0tCisKKzptb2Q6YGhhc2hsaWJgIHN1cHBvcnRzIE9wZW5TU0wgMS4xLjAuIFRoZSBtaW5pbXVtIHJlY29tbWVuZCB2ZXJzaW9uIGlzIDEuMC4yLgorSXQgaGFzIGJlZW4gdGVzdGVkIHdpdGggMC45Ljh6YywgMC45Ljh6aCBhbmQgMS4wLjF0IGFzIHdlbGwgYXMgTGlicmVTU0wgMi4zCithbmQgMi40LgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjQ3MGAuKQorCitCTEFLRTIgaGFzaCBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgbW9kdWxlLiA6ZnVuYzpgfmhhc2hsaWIuYmxha2UyYmAKK2FuZCA6ZnVuYzpgfmhhc2hsaWIuYmxha2Uyc2AgYXJlIGFsd2F5cyBhdmFpbGFibGUgYW5kIHN1cHBvcnQgdGhlIGZ1bGwKK2ZlYXR1cmUgc2V0IG9mIEJMQUtFMi4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY3OThgIGJhc2VkIG9uIGNvZGUgYnkKK0RtaXRyeSBDaGVzdG55a2ggYW5kIFNhbXVlbCBOZXZlcy4gRG9jdW1lbnRhdGlvbiB3cml0dGVuIGJ5IERtaXRyeSBDaGVzdG55a2guKQorCitUaGUgU0hBLTMgaGFzaCBmdW5jdGlvbnMgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjI0YCwgOmZ1bmM6YH5oYXNobGliLnNoYTNfMjU2YCwKKzpmdW5jOmB+aGFzaGxpYi5zaGEzXzM4NGAsIDpmdW5jOmB+aGFzaGxpYi5zaGEzXzUxMmAsIGFuZCBTSEFLRSBoYXNoIGZ1bmN0aW9ucworOmZ1bmM6YH5oYXNobGliLnNoYWtlXzEyOGAgYW5kIDpmdW5jOmB+aGFzaGxpYi5zaGFrZV8yNTZgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE2MTEzYC4gS2VjY2FrIENvZGUgUGFja2FnZQorYnkgR3VpZG8gQmVydG9uaSwgSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlLCBhbmQKK1Jvbm55IFZhbiBLZWVyLikKKworVGhlIHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIDpmdW5jOmB+aGFzaGxpYi5zY3J5cHRgIGlzIG5vdworYXZhaWxhYmxlIHdpdGggT3BlblNTTCAxLjEuMCBhbmQgbmV3ZXIuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3OTI4YC4pCisKK2h0dHAuY2xpZW50CistLS0tLS0tLS0tLQorCis6bWV0aDpgSFRUUENvbm5lY3Rpb24ucmVxdWVzdCgpIDxodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0PmAgYW5kCis6bWV0aDpgfmh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLmVuZGhlYWRlcnNgIGJvdGggbm93IHN1cHBvcnQKK2NodW5rZWQgZW5jb2RpbmcgcmVxdWVzdCBib2RpZXMuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKworaWRsZWxpYiBhbmQgSURMRQorLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaWRsZWxpYiBwYWNrYWdlIGlzIGJlaW5nIG1vZGVybml6ZWQgYW5kIHJlZmFjdG9yZWQgdG8gbWFrZSBJRExFIGxvb2sgYW5kIHdvcmsgYmV0dGVyIGFuZCB0byBtYWtlIHRoZSBjb2RlIGVhc2llciB0byB1bmRlcnN0YW5kLCB0ZXN0LCBhbmQgaW1wcm92ZS4gUGFydCBvZiBtYWtpbmcgSURMRSBsb29rIGJldHRlciwgZXNwZWNpYWxseSBvbiBMaW51eCBhbmQgTWFjLCBpcyB1c2luZyB0dGsgd2lkZ2V0cywgbW9zdGx5IGluIHRoZSBkaWFsb2dzLiAgQXMgYSByZXN1bHQsIElETEUgbm8gbG9uZ2VyIHJ1bnMgd2l0aCB0Y2wvdGsgOC40LiAgSXQgbm93IHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgOC42LiAgV2UgcmVjb21tZW5kIHJ1bm5pbmcgdGhlIGxhdGVzdCByZWxlYXNlIG9mIGVpdGhlci4KKworJ01vZGVybml6aW5nJyBpbmNsdWRlcyByZW5hbWluZyBhbmQgY29uc29saWRhdGlvbiBvZiBpZGxlbGliIG1vZHVsZXMuIFRoZSByZW5hbWluZyBvZiBmaWxlcyB3aXRoIHBhcnRpYWwgdXBwZXJjYXNlIG5hbWVzIGlzIHNpbWlsYXIgdG8gdGhlIHJlbmFtaW5nIG9mLCBmb3IgaW5zdGFuY2UsIFRraW50ZXIgYW5kIFRrRm9udCB0byB0a2ludGVyIGFuZCB0a2ludGVyLmZvbnQgaW4gMy4wLiAgQXMgYSByZXN1bHQsIGltcG9ydHMgb2YgaWRsZWxpYiBmaWxlcyB0aGF0IHdvcmtlZCBpbiAzLjUgd2lsbCB1c3VhbGx5IG5vdCB3b3JrIGluIDMuNi4gIEF0IGxlYXN0IGEgbW9kdWxlIG5hbWUgY2hhbmdlIHdpbGwgYmUgbmVlZGVkIChzZWUgaWRsZWxpYi9SRUFETUUudHh0KSwgc29tZXRpbWVzIG1vcmUuICAoTmFtZSBjaGFuZ2VzIGNvbnRyaWJ1dGVkIGJ5IEFsIFN3aWVnYXJ0IGFuZCBUZXJyeSBSZWVkeSBpbiA6aXNzdWU6YDI0MjI1YC4gIE1vc3QgaWRsZWxpYiBwYXRjaGVzIHNpbmNlIGhhdmUgYmVlbiBhbmQgd2lsbCBiZSBwYXJ0IG9mIHRoZSBwcm9jZXNzLikKKworSW4gY29tcGVuc2F0aW9uLCB0aGUgZXZlbnR1YWwgcmVzdWx0IHdpdGggYmUgdGhhdCBzb21lIGlkbGVsaWIgY2xhc3NlcyB3aWxsIGJlIGVhc2llciB0byB1c2UsIHdpdGggYmV0dGVyIEFQSXMgYW5kIGRvY3N0cmluZ3MgZXhwbGFpbmluZyB0aGVtLiAgQWRkaXRpb25hbCB1c2VmdWwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0byBpZGxlbGliIHdoZW4gYXZhaWxhYmxlLgorCisKK2ltcG9ydGxpYgorLS0tLS0tLS0tCisKKzpjbGFzczpgaW1wb3J0bGliLnV0aWwuTGF6eUxvYWRlcmAgbm93IGNhbGxzCis6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG9uIHRoZSB3cmFwcGVkIGxvYWRlciwgcmVtb3ZpbmcgdGhlCityZXN0cmljdGlvbiB0aGF0IDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXJgIGFuZAorOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXJgIGNvdWxkbid0IGJlIHVzZWQgd2l0aAorOmNsYXNzOmBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyYC4KKworOmZ1bmM6YGltcG9ydGxpYi51dGlsLmNhY2hlX2Zyb21fc291cmNlYCwKKzpmdW5jOmBpbXBvcnRsaWIudXRpbC5zb3VyY2VfZnJvbV9jYWNoZWAsIGFuZAorOmZ1bmM6YGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uYCBub3cgYWNjZXB0IGEKKzp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKworCitqc29uCistLS0tCisKKzpmdW5jOmBqc29uLmxvYWRgIGFuZCA6ZnVuYzpganNvbi5sb2Fkc2Agbm93IHN1cHBvcnQgYmluYXJ5IGlucHV0LiAgRW5jb2RlZAorSlNPTiBzaG91bGQgYmUgcmVwcmVzZW50ZWQgdXNpbmcgZWl0aGVyIFVURi04LCBVVEYtMTYsIG9yIFVURi0zMi4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTc5MDlgLikKKworCitvcworLS0KKworQSBuZXcgOm1ldGg6YH5vcy5zY2FuZGlyLmNsb3NlYCBtZXRob2QgYWxsb3dzIGV4cGxpY2l0bHkgY2xvc2luZyBhCis6ZnVuYzpgfm9zLnNjYW5kaXJgIGl0ZXJhdG9yLiAgVGhlIDpmdW5jOmB+b3Muc2NhbmRpcmAgaXRlcmF0b3Igbm93CitzdXBwb3J0cyB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wuICBJZiBhIDpmdW5jOmBzY2FuZGlyYAoraXRlcmF0b3IgaXMgbmVpdGhlciBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYAord2lsbCBiZSBlbWl0dGVkIGluIGl0cyBkZXN0cnVjdG9yLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNTk5NGAuKQorCitUaGUgTGludXggYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgKGdldCByYW5kb20gYnl0ZXMpIGlzIG5vdyBleHBvc2VkIGFzIHRoZSBuZXcKKzpmdW5jOmBvcy5nZXRyYW5kb21gIGZ1bmN0aW9uLgorKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyLCBwYXJ0IG9mIHRoZSA6cGVwOmA1MjRgKQorCitTZWUgdGhlIHN1bW1hcnkgZm9yIDpyZWY6YFBFUCA1MTkgPHBlcC01MTk+YCBmb3IgZGV0YWlscyBvbiBob3cgdGhlCis6bW9kOmBvc2AgYW5kIDptb2Q6YG9zLnBhdGhgIG1vZHVsZXMgbm93IHN1cHBvcnQKKzp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0cyA8cGF0aC1saWtlIG9iamVjdD5gLgorCisKK3BpY2tsZQorLS0tLS0tCisKK09iamVjdHMgdGhhdCBuZWVkIGNhbGxpbmcgYGBfX25ld19fYGAgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyBjYW4gbm93IGJlIHBpY2tsZWQKK3VzaW5nIDpyZWY6YHBpY2tsZSBwcm90b2NvbHMgPHBpY2tsZS1wcm90b2NvbHM+YCBvbGRlciB0aGFuIHByb3RvY29sIHZlcnNpb24gNC4KK1Byb3RvY29sIHZlcnNpb24gNCBhbHJlYWR5IHN1cHBvcnRzIHRoaXMgY2FzZS4gIChDb250cmlidXRlZCBieSBTZXJoaXkKK1N0b3JjaGFrYSBpbiA6aXNzdWU6YDI0MTY0YC4pCisKKworcmUKKy0tCisKK0FkZGVkIHN1cHBvcnQgb2YgbW9kaWZpZXIgc3BhbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4gIEV4YW1wbGVzOgorYGAnKD9pOnApeXRob24nYGAgbWF0Y2hlcyBgYCdweXRob24nYGAgYW5kIGBgJ1B5dGhvbidgYCwgYnV0IG5vdCBgYCdQWVRIT04nYGA7CitgYCcoP2kpZyg/LWk6dilyJ2BgIG1hdGNoZXMgYGAnR3ZSJ2BgIGFuZCBgYCdndnInYGAsIGJ1dCBub3QgYGAnR1ZSJ2BgLgorKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmA0MzMwMjhgLikKKworTWF0Y2ggb2JqZWN0IGdyb3VwcyBjYW4gYmUgYWNjZXNzZWQgYnkgYGBfX2dldGl0ZW1fX2BgLCB3aGljaCBpcworZXF1aXZhbGVudCB0byBgYGdyb3VwKClgYC4gIFNvIGBgbW9bJ25hbWUnXWBgIGlzIG5vdyBlcXVpdmFsZW50IHRvCitgYG1vLmdyb3VwKCduYW1lJylgYC4gIChDb250cmlidXRlZCBieSBFcmljIFNtaXRoIGluIDppc3N1ZTpgMjQ0NTRgLikKKworCityZWFkbGluZQorLS0tLS0tLS0KKworQWRkZWQgOmZ1bmM6YH5yZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5YCB0byBlbmFibGUgb3IgZGlzYWJsZQorYXV0b21hdGljIGFkZGl0aW9uIG9mIGlucHV0IHRvIHRoZSBoaXN0b3J5IGxpc3QuICAoQ29udHJpYnV0ZWQgYnkKK1R5bGVyIENyb21wdG9uIGluIDppc3N1ZTpgMjY4NzBgLikKKworCitybGNvbXBsZXRlcgorLS0tLS0tLS0tLS0KKworUHJpdmF0ZSBhbmQgc3BlY2lhbCBhdHRyaWJ1dGUgbmFtZXMgbm93IGFyZSBvbWl0dGVkIHVubGVzcyB0aGUgcHJlZml4IHN0YXJ0cword2l0aCB1bmRlcnNjb3Jlcy4gIEEgc3BhY2Ugb3IgYSBjb2xvbiBpcyBhZGRlZCBhZnRlciBzb21lIGNvbXBsZXRlZCBrZXl3b3Jkcy4KKyhDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjUwMTFgIGFuZCA6aXNzdWU6YDI1MjA5YC4pCisKK05hbWVzIG9mIG1vc3QgYXR0cmlidXRlcyBsaXN0ZWQgYnkgOmZ1bmM6YGRpcmAgYXJlIG5vdyBjb21wbGV0ZWQuCitQcmV2aW91c2x5LCBuYW1lcyBvZiBwcm9wZXJ0aWVzIGFuZCBzbG90cyB3aGljaCB3ZXJlIG5vdCB5ZXQgY3JlYXRlZCBvbgorYW4gaW5zdGFuY2Ugd2VyZSBleGNsdWRlZC4gIChDb250cmlidXRlZCBieSBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMjU1OTBgLikKKworCitzaXRlCistLS0tCisKK1doZW4gc3BlY2lmeWluZyBwYXRocyB0byBhZGQgdG8gOmF0dHI6YHN5cy5wYXRoYCBpbiBhIGAucHRoYCBmaWxlLAoreW91IG1heSBub3cgc3BlY2lmeSBmaWxlIHBhdGhzIG9uIHRvcCBvZiBkaXJlY3RvcmllcyAoZS5nLiB6aXAgZmlsZXMpLgorKENvbnRyaWJ1dGVkIGJ5IFdvbGZnYW5nIExhbmduZXIgaW4gOmlzc3VlOmAyNjU4N2ApLgorCisKK3NxbGl0ZTMKKy0tLS0tLS0KKworOmF0dHI6YHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZGAgbm93IHN1cHBvcnRzIHRoZSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQuCisoQ29udHJpYnV0ZWQgYnkgQWxleCBMb3JkVGhvcnNlbiBpbiA6aXNzdWU6YDE2ODY0YC4pCisKKworc29ja2V0CistLS0tLS0KKworVGhlIDpmdW5jOmB+c29ja2V0LnNvY2tldC5pb2N0bGAgZnVuY3Rpb24gbm93IHN1cHBvcnRzIHRoZSA6ZGF0YTpgfnNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYAorY29udHJvbCBjb2RlLgorKENvbnRyaWJ1dGVkIGJ5IERhbmllbCBTdG9rZXMgaW4gOmlzc3VlOmAyNjUzNmAuKQorCitUaGUgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmdldHNvY2tvcHRgIGNvbnN0YW50cyBgYFNPX0RPTUFJTmBgLAorYGBTT19QUk9UT0NPTGBgLCBgYFNPX1BFRVJTRUNgYCwgYW5kIGBgU09fUEFTU1NFQ2BgIGFyZSBub3cgc3VwcG9ydGVkLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyNjkwN2AuKQorCitUaGUgc29ja2V0IG1vZHVsZSBub3cgc3VwcG9ydHMgdGhlIGFkZHJlc3MgZmFtaWx5Cis6ZGF0YTpgfnNvY2tldC5BRl9BTEdgIHRvIGludGVyZmFjZSB3aXRoIExpbnV4IEtlcm5lbCBjcnlwdG8gQVBJLiBgYEFMR18qYGAsCitgYFNPTF9BTEdgYCBhbmQgOm1ldGg6YH5zb2NrZXQuc29ja2V0LnNlbmRtc2dfYWZhbGdgIHdlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3NzQ0YCB3aXRoIHN1cHBvcnQgZnJvbQorVmljdG9yIFN0aW5uZXIuKQorCitzb2NrZXRzZXJ2ZXIKKy0tLS0tLS0tLS0tLQorCitTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCitkZWZpbmVkIGluIDptb2Q6YGh0dHAuc2VydmVyYCwgOm1vZDpgeG1scnBjLnNlcnZlcmAgYW5kCis6bW9kOmB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXJgLCBub3cgc3VwcG9ydCB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAKK3Byb3RvY29sLgorKENvbnRyaWJ1dGVkIGJ5IEF2aXYgUGFsaXZvZGEgaW4gOmlzc3VlOmAyNjQwNGAuKQorCitUaGUgOmF0dHI6YH5zb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIGF0dHJpYnV0ZSBvZgorOmNsYXNzOmB+c29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyYCBjbGFzc2VzIG5vdyBpbXBsZW1lbnRzCit0aGUgOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgd3JpdGFibGUgaW50ZXJmYWNlLiAgSW4gcGFydGljdWxhciwKK2NhbGxpbmcgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS53cml0ZWAgaXMgbm93IGd1YXJhbnRlZWQgdG8gc2VuZCB0aGUKK2RhdGEgaW4gZnVsbC4gIChDb250cmlidXRlZCBieSBNYXJ0aW4gUGFudGVyIGluIDppc3N1ZTpgMjY3MjFgLikKKworc3NsCistLS0KKworOm1vZDpgc3NsYCBzdXBwb3J0cyBPcGVuU1NMIDEuMS4wLiBUaGUgbWluaW11bSByZWNvbW1lbmQgdmVyc2lvbiBpcyAxLjAuMi4KK0l0IGhhcyBiZWVuIHRlc3RlZCB3aXRoIDAuOS44emMsIDAuOS44emggYW5kIDEuMC4xdCBhcyB3ZWxsIGFzIExpYnJlU1NMIDIuMworYW5kIDIuNC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjY0NzBgLikKKworM0RFUyBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN1aXRlcyBhbmQgQ2hhQ2hhMjAgUG9seTEzMDUKK2NpcGhlciBzdWl0ZXMgYXJlIG5vdyBpbiB0aGUgcmlnaHQgcG9zaXRpb24uCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3ODUwYCBhbmQgOmlzc3VlOmAyNzc2NmAuKQorCis6Y2xhc3M6YH5zc2wuU1NMQ29udGV4dGAgaGFzIGJldHRlciBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIG9wdGlvbnMKK2FuZCBjaXBoZXJzLgorKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODA0M2AuKQorCitTU0wgc2Vzc2lvbiBjYW4gYmUgY29waWVkIGZyb20gb25lIGNsaWVudC1zaWRlIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgord2l0aCA6Y2xhc3M6YH5zc2wuU1NMU2Vzc2lvbmAuIFRMUyBzZXNzaW9uIHJlc3VtcHRpb24gY2FuIHNwZWVkIHVwCit0aGUgaW5pdGlhbCBoYW5kc2hha2UsIHJlZHVjZSBsYXRlbmN5IGFuZCBpbXByb3ZlIHBlcmZvcm1hbmNlCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDE5NTAwYCBiYXNlZCBvbiBhIGRyYWZ0IGJ5CitBbGV4IFdhcmhhd2suKQorCitBbGwgY29uc3RhbnRzIGFuZCBmbGFncyBoYXZlIGJlZW4gY29udmVydGVkIHRvIDpjbGFzczpgfmVudW0uSW50RW51bWAgYW5kCis6Y2xhc3M6YH5lbnVtLkludEZsYWdzYC4KKyhDb250cmlidXRlZCBieSBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMjgwMjVgLikKKworU2VydmVyIGFuZCBjbGllbnQtc2lkZSBzcGVjaWZpYyBUTFMgcHJvdG9jb2xzIGZvciA6Y2xhc3M6YH5zc2wuU1NMQ29udGV4dGAKK3dlcmUgYWRkZWQuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDg1YC4pCisKK0dlbmVyYWwgcmVzb3VyY2UgaWRzIChgYEdFTl9SSURgYCkgaW4gc3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lIGV4dGVuc2lvbnMKK25vIGxvbmdlciBjYXNlIGEgU3lzdGVtRXJyb3IuCisoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI3NjkxYC4pCisKK3N1YnByb2Nlc3MKKy0tLS0tLS0tLS0KKworOmNsYXNzOmBzdWJwcm9jZXNzLlBvcGVuYCBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIDpleGM6YFJlc291cmNlV2FybmluZ2Agd2FybmluZworaWYgdGhlIGNoaWxkIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4gVXNlIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgKGBgd2l0aAorcHJvYzogLi4uYGApIG9yIGNhbGwgZXhwbGljaXRseSB0aGUgOm1ldGg6YH5zdWJwcm9jZXNzLlBvcGVuLndhaXRgIG1ldGhvZCB0bworcmVhZCB0aGUgZXhpdCBzdGF0dXMgb2YgdGhlIGNoaWxkIHByb2Nlc3MgKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCis6aXNzdWU6YDI2NzQxYCkuCisKK1RoZSA6Y2xhc3M6YHN1YnByb2Nlc3MuUG9wZW5gIGNvbnN0cnVjdG9yIGFuZCBhbGwgZnVuY3Rpb25zIHRoYXQgcGFzcyBhcmd1bWVudHMKK3Rocm91Z2ggdG8gaXQgbm93IGFjY2VwdCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBhcmd1bWVudHMuIFNwZWNpZnlpbmcgZWl0aGVyCitvZiB0aGVzZSB3aWxsIGVuYWJsZSB0ZXh0IG1vZGUgZm9yIHRoZSAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3RyZWFtcy4KKwordGVsbmV0bGliCistLS0tLS0tLS0KKworOmNsYXNzOmB+dGVsbmV0bGliLlRlbG5ldGAgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyIChjb250cmlidXRlZCBieQorU3TDqXBoYW5lIFdpcnRlbCBpbiA6aXNzdWU6YDI1NDg1YCkuCisKKwordGtpbnRlcgorLS0tLS0tLQorCitBZGRlZCBtZXRob2RzIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9hZGRgLAorOm1ldGg6YH50a2ludGVyLlZhcmlhYmxlLnRyYWNlX3JlbW92ZWAgYW5kIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV9pbmZvYAoraW4gdGhlIDpjbGFzczpgdGtpbnRlci5WYXJpYWJsZWAgY2xhc3MuICBUaGV5IHJlcGxhY2Ugb2xkIG1ldGhvZHMKKzptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZV92YXJpYWJsZWAsIDptZXRoOmB+dGtpbnRlci5WYXJpYWJsZS50cmFjZWAsCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmRlbGV0ZWAgYW5kCis6bWV0aDpgfnRraW50ZXIuVmFyaWFibGUudHJhY2VfdmluZm9gIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKK25vdCB3b3JrIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBUY2wuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIyMTE1YCkuCisKKworLi4gX3B5MzYtdHJhY2ViYWNrOgorCit0cmFjZWJhY2sKKy0tLS0tLS0tLQorCitCb3RoIHRoZSB0cmFjZWJhY2sgbW9kdWxlIGFuZCB0aGUgaW50ZXJwcmV0ZXIncyBidWlsdGluIGV4Y2VwdGlvbiBkaXNwbGF5IG5vdworYWJicmV2aWF0ZSBsb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBsaW5lcyBpbiB0cmFjZWJhY2tzIGFzIHNob3duIGluIHRoZQorZm9sbG93aW5nIGV4YW1wbGU6OgorCisgICAgPj4+IGRlZiBmKCk6IGYoKQorICAgIC4uLgorICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gZgorICAgICAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQgOTk1IG1vcmUgdGltZXNdCisgICAgUmVjdXJzaW9uRXJyb3I6IG1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVkCisKKyhDb250cmlidXRlZCBieSBFbWFudWVsIEJhcnJ5IGluIDppc3N1ZTpgMjY4MjNgLikKKworCit0eXBpbmcKKy0tLS0tLQorCitUaGUgOmNsYXNzOmB0eXBpbmcuQ29udGV4dE1hbmFnZXJgIGNsYXNzIGhhcyBiZWVuIGFkZGVkIGZvcgorcmVwcmVzZW50aW5nIDpjbGFzczpgY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyYC4KKyhDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTYwOWAuKQorCisKK3VuaWNvZGVkYXRhCistLS0tLS0tLS0tLQorCitUaGUgaW50ZXJuYWwgZGF0YWJhc2UgaGFzIGJlZW4gdXBncmFkZWQgdG8gdXNlIFVuaWNvZGUgOS4wLjAuIChDb250cmlidXRlZCBieQorQmVuamFtaW4gUGV0ZXJzb24uKQorCisKK3VuaXR0ZXN0Lm1vY2sKKy0tLS0tLS0tLS0tLS0KKworVGhlIDpjbGFzczpgfnVuaXR0ZXN0Lm1vY2suTW9ja2AgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgaW1wcm92ZW1lbnRzOgorCisqIFR3byBuZXcgbWV0aG9kcywgOm1ldGg6YE1vY2suYXNzZXJ0X2NhbGxlZCgpCisgIDx1bml0dGVzdC5tb2NrLk1vY2suYXNzZXJ0X2NhbGxlZD5gIGFuZCA6bWV0aDpgTW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKQorICA8dW5pdHRlc3QubW9jay5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZT5gIHRvIGNoZWNrIGlmIHRoZSBtb2NrIG9iamVjdAorICB3YXMgY2FsbGVkLgorICAoQ29udHJpYnV0ZWQgYnkgQW1pdCBTYWhhIGluIDppc3N1ZTpgMjYzMjNgLikKKworCit1cmxsaWIucmVxdWVzdAorLS0tLS0tLS0tLS0tLS0KKworSWYgYSBIVFRQIHJlcXVlc3QgaGFzIGEgZmlsZSBvciBpdGVyYWJsZSBib2R5IChvdGhlciB0aGFuIGEKK2J5dGVzIG9iamVjdCkgYnV0IG5vIENvbnRlbnQtTGVuZ3RoIGhlYWRlciwgcmF0aGVyIHRoYW4KK3Rocm93aW5nIGFuIGVycm9yLCA6Y2xhc3M6YH51cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyYCBub3cKK2ZhbGxzIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcuCisoQ29udHJpYnV0ZWQgYnkgRGVtaWFuIEJyZWNodCBhbmQgUm9sZiBLcmFobCBpbiA6aXNzdWU6YDEyMzE5YC4pCisKKwordXJsbGliLnJvYm90cGFyc2VyCistLS0tLS0tLS0tLS0tLS0tLS0KKworOmNsYXNzOmB+dXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcmAgbm93IHN1cHBvcnRzIHRoZSBgYENyYXdsLWRlbGF5YGAgYW5kCitgYFJlcXVlc3QtcmF0ZWBgIGV4dGVuc2lvbnMuCisoQ29udHJpYnV0ZWQgYnkgTmlrb2xheSBCb2dveWNoZXYgaW4gOmlzc3VlOmAxNjA5OWAuKQorCisKK3dhcm5pbmdzCistLS0tLS0tLQorCitBIG5ldyBvcHRpb25hbCAqc291cmNlKiBwYXJhbWV0ZXIgaGFzIGJlZW4gYWRkZWQgdG8gdGhlCis6ZnVuYzpgd2FybmluZ3Mud2Fybl9leHBsaWNpdGAgZnVuY3Rpb246IHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdoaWNoIGVtaXR0ZWQgYQorOmV4YzpgUmVzb3VyY2VXYXJuaW5nYC4gQSAqc291cmNlKiBhdHRyaWJ1dGUgaGFzIGFsc28gYmVlbiBhZGRlZCB0bworOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAgKGNvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyIGluCis6aXNzdWU6YDI2NTY4YCBhbmQgOmlzc3VlOmAyNjU2N2ApLgorCitXaGVuIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3YXJuaW5nIGlzIGxvZ2dlZCwgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBpcyBub3cKK3VzZWQgdG8gdHJ5IHRvIHJldHJpZXZlIHRoZSB0cmFjZWJhY2sgd2hlcmUgdGhlIGRldHJveWVkIG9iamVjdCB3YXMgYWxsb2NhdGVkLgorCitFeGFtcGxlIHdpdGggdGhlIHNjcmlwdCBgYGV4YW1wbGUucHlgYDo6CisKKyAgICBpbXBvcnQgd2FybmluZ3MKKworICAgIGRlZiBmdW5jKCk6CisgICAgICAgIHJldHVybiBvcGVuKF9fZmlsZV9fKQorCisgICAgZiA9IGZ1bmMoKQorICAgIGYgPSBOb25lCisKK091dHB1dCBvZiB0aGUgY29tbWFuZCBgYHB5dGhvbjMuNiAtV2QgLVggdHJhY2VtYWxsb2M9NSBleGFtcGxlLnB5YGA6OgorCisgICAgZXhhbXBsZS5weTo3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5UZXh0SU9XcmFwcGVyIG5hbWU9J2V4YW1wbGUucHknIG1vZGU9J3InIGVuY29kaW5nPSdVVEYtOCc+CisgICAgICBmID0gTm9uZQorICAgIE9iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgRmlsZSAiZXhhbXBsZS5weSIsIGxpbmVubyA0CisgICAgICAgIHJldHVybiBvcGVuKF9fZmlsZV9fKQorICAgICAgRmlsZSAiZXhhbXBsZS5weSIsIGxpbmVubyA2CisgICAgICAgIGYgPSBmdW5jKCkKKworVGhlICJPYmplY3QgYWxsb2NhdGVkIGF0IiB0cmFjZWJhY2sgaXMgbmV3IGFuZCBvbmx5IGRpc3BsYXllZCBpZgorOm1vZDpgdHJhY2VtYWxsb2NgIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgaWYgdGhlCis6bW9kOmB3YXJuaW5nc2Agd2FzIGFscmVhZHkgaW1wb3J0ZWQuCisKKword2lucmVnCistLS0tLS0KKworQWRkZWQgdGhlIDY0LWJpdCBpbnRlZ2VyIHR5cGUgOmRhdGE6YFJFR19RV09SRCA8d2lucmVnLlJFR19RV09SRD5gLgorKENvbnRyaWJ1dGVkIGJ5IENsZW1lbnQgUm91YXVsdCBpbiA6aXNzdWU6YDIzMDI2YC4pCisKKword2luc291bmQKKy0tLS0tLS0tCisKK0FsbG93ZWQga2V5d29yZCBhcmd1bWVudHMgdG8gYmUgcGFzc2VkIHRvIDpmdW5jOmBCZWVwIDx3aW5zb3VuZC5CZWVwPmAsCis6ZnVuYzpgTWVzc2FnZUJlZXAgPHdpbnNvdW5kLk1lc3NhZ2VCZWVwPmAsIGFuZCA6ZnVuYzpgUGxheVNvdW5kCis8d2luc291bmQuUGxheVNvdW5kPmAgKDppc3N1ZTpgMjc5ODJgKS4KKworCit4bWxycGMuY2xpZW50CistLS0tLS0tLS0tLS0tCisKK1RoZSBtb2R1bGUgbm93IHN1cHBvcnRzIHVubWFyc2hhbGxpbmcgYWRkaXRpb25hbCBkYXRhIHR5cGVzIHVzZWQgYnkKK0FwYWNoZSBYTUwtUlBDIGltcGxlbWVudGF0aW9uIGZvciBudW1lcmljcyBhbmQgYGBOb25lYGAuCisoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDI2ODg1YC4pCisKKworemlwZmlsZQorLS0tLS0tLQorCitBIG5ldyA6bWV0aDpgWmlwSW5mby5mcm9tX2ZpbGUoKSA8emlwZmlsZS5aaXBJbmZvLmZyb21fZmlsZT5gIGNsYXNzIG1ldGhvZAorYWxsb3dzIG1ha2luZyBhIDpjbGFzczpgfnppcGZpbGUuWmlwSW5mb2AgaW5zdGFuY2UgZnJvbSBhIGZpbGVzeXN0ZW0gZmlsZS4KK0EgbmV3IDptZXRoOmBaaXBJbmZvLmlzX2RpcigpIDx6aXBmaWxlLlppcEluZm8uaXNfZGlyPmAgbWV0aG9kIGNhbiBiZSB1c2VkCit0byBjaGVjayBpZiB0aGUgOmNsYXNzOmB+emlwZmlsZS5aaXBJbmZvYCBpbnN0YW5jZSByZXByZXNlbnRzIGEgZGlyZWN0b3J5LgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjYwMzlgLikKKworVGhlIDptZXRoOmBaaXBGaWxlLm9wZW4oKSA8emlwZmlsZS5aaXBGaWxlLm9wZW4+YCBtZXRob2QgY2FuIG5vdyBiZSB1c2VkIHRvCit3cml0ZSBkYXRhIGludG8gYSBaSVAgZmlsZSwgYXMgd2VsbCBhcyBmb3IgZXh0cmFjdGluZyBkYXRhLgorKENvbnRyaWJ1dGVkIGJ5IFRob21hcyBLbHV5dmVyIGluIDppc3N1ZTpgMjYwMzlgLikKKworCit6bGliCistLS0tCisKK1RoZSA6ZnVuYzpgfnpsaWIuY29tcHJlc3NgIGZ1bmN0aW9uIG5vdyBhY2NlcHRzIGtleXdvcmQgYXJndW1lbnRzLgorKENvbnRyaWJ1dGVkIGJ5IEF2aXYgUGFsaXZvZGEgaW4gOmlzc3VlOmAyNjI0M2AuKQorCisKK2ZpbGVpbnB1dAorLS0tLS0tLS0tCisKKzpmdW5jOmB+ZmlsZWlucHV0Lmhvb2tfZW5jb2RlZGAgbm93IHN1cHBvcnRzIHRoZSAqZXJyb3JzKiBhcmd1bWVudC4KKyhDb250cmlidXRlZCBieSBKb3NlcGggSGFja21hbiBpbiA6aXNzdWU6YDI1Nzg4YC4pCisKKworT3B0aW1pemF0aW9ucworPT09PT09PT09PT09PQorCisqIFRoZSBBU0NJSSBkZWNvZGVyIGlzIG5vdyB1cCB0byA2MCB0aW1lcyBhcyBmYXN0IGZvciBlcnJvciBoYW5kbGVycworICBgYHN1cnJvZ2F0ZWVzY2FwZWBgLCBgYGlnbm9yZWBgIGFuZCBgYHJlcGxhY2VgYCAoQ29udHJpYnV0ZWQKKyAgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNDg3MGApLgorCisqIFRoZSBBU0NJSSBhbmQgdGhlIExhdGluMSBlbmNvZGVycyBhcmUgbm93IHVwIHRvIDMgdGltZXMgYXMgZmFzdCBmb3IgdGhlCisgIGVycm9yIGhhbmRsZXIgYGBzdXJyb2dhdGVlc2NhcGVgYCAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTIyN2ApLgorCisqIFRoZSBVVEYtOCBlbmNvZGVyIGlzIG5vdyB1cCB0byA3NSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvciBoYW5kbGVycworICBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCwgYGBzdXJyb2dhdGVlc2NhcGVgYCwgYGBzdXJyb2dhdGVwYXNzYGAgKENvbnRyaWJ1dGVkCisgIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUyNjdgKS4KKworKiBUaGUgVVRGLTggZGVjb2RlciBpcyBub3cgdXAgdG8gMTUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IgaGFuZGxlcnMKKyAgYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAgYW5kIGBgc3Vycm9nYXRlZXNjYXBlYGAgKENvbnRyaWJ1dGVkCisgIGJ5IFZpY3RvciBTdGlubmVyIGluIDppc3N1ZTpgMjUzMDFgKS4KKworKiBgYGJ5dGVzICUgYXJnc2BgIGlzIG5vdyB1cCB0byAyIHRpbWVzIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyCisgIGluIDppc3N1ZTpgMjUzNDlgKS4KKworKiBgYGJ5dGVhcnJheSAlIGFyZ3NgYCBpcyBub3cgYmV0d2VlbiAyLjUgYW5kIDUgdGltZXMgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkKKyAgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTM5OWApLgorCisqIE9wdGltaXplIDptZXRoOmBieXRlcy5mcm9taGV4YCBhbmQgOm1ldGg6YGJ5dGVhcnJheS5mcm9taGV4YDogdGhleSBhcmUgbm93CisgIGJldHdlZW4gMnggYW5kIDMuNXggZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNTQwMWApLgorCisqIE9wdGltaXplIGBgYnl0ZXMucmVwbGFjZShiJycsIGInLicpYGAgYW5kIGBgYnl0ZWFycmF5LnJlcGxhY2UoYicnLCBiJy4nKWBgOgorICB1cCB0byA4MCUgZmFzdGVyLiAoQ29udHJpYnV0ZWQgYnkgSm9zaCBTbmlkZXIgaW4gOmlzc3VlOmAyNjU3NGApLgorCisqIEFsbG9jYXRvciBmdW5jdGlvbnMgb2YgdGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgZG9tYWluCisgICg6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCkgbm93IHVzZSB0aGUgOnJlZjpgcHltYWxsb2MgbWVtb3J5IGFsbG9jYXRvcgorICA8cHltYWxsb2M+YCBpbnN0ZWFkIG9mIDpjOmZ1bmM6YG1hbGxvY2AgZnVuY3Rpb24gb2YgdGhlIEMgbGlicmFyeS4gVGhlCisgIHB5bWFsbG9jIGFsbG9jYXRvciBpcyBvcHRpbWl6ZWQgZm9yIG9iamVjdHMgc21hbGxlciBvciBlcXVhbCB0byA1MTIgYnl0ZXMKKyAgd2l0aCBhIHNob3J0IGxpZmV0aW1lLCBhbmQgdXNlIDpjOmZ1bmM6YG1hbGxvY2AgZm9yIGxhcmdlciBtZW1vcnkgYmxvY2tzLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyNjI0OWApLgorCisqIDpmdW5jOmBwaWNrbGUubG9hZGAgYW5kIDpmdW5jOmBwaWNrbGUubG9hZHNgIGFyZSBub3cgdXAgdG8gMTAlIGZhc3RlciB3aGVuCisgIGRlc2VyaWFsaXppbmcgbWFueSBzbWFsbCBvYmplY3RzIChDb250cmlidXRlZCBieSBWaWN0b3IgU3Rpbm5lciBpbgorICA6aXNzdWU6YDI3MDU2YCkuCisKKy0gUGFzc2luZyA6dGVybTpga2V5d29yZCBhcmd1bWVudHMgPGtleXdvcmQgYXJndW1lbnQ+YCB0byBhIGZ1bmN0aW9uIGhhcyBhbgorICBvdmVyaGVhZCBpbiBjb21wYXJpc29uIHdpdGggcGFzc2luZyA6dGVybTpgcG9zaXRpb25hbCBhcmd1bWVudHMKKyAgPHBvc2l0aW9uYWwgYXJndW1lbnQ+YC4gIE5vdyBpbiBleHRlbnNpb24gZnVuY3Rpb25zIGltcGxlbWVudGVkIHdpdGggdXNpbmcKKyAgQXJndW1lbnQgQ2xpbmljIHRoaXMgb3ZlcmhlYWQgaXMgc2lnbmlmaWNhbnRseSBkZWNyZWFzZWQuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjc1NzRgKS4KKworKiBPcHRpbWl6ZWQgOmZ1bmM6YH5nbG9iLmdsb2JgIGFuZCA6ZnVuYzpgfmdsb2IuaWdsb2JgIGZ1bmN0aW9ucyBpbiB0aGUKKyAgOm1vZDpgZ2xvYmAgbW9kdWxlOyB0aGV5IGFyZSBub3cgYWJvdXQgMy0tNiB0aW1lcyBmYXN0ZXIuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU1OTZgKS4KKworKiBPcHRpbWl6ZWQgZ2xvYmJpbmcgaW4gOm1vZDpgcGF0aGxpYmAgYnkgdXNpbmcgOmZ1bmM6YG9zLnNjYW5kaXJgOworICBpdCBpcyBub3cgYWJvdXQgMS41LS00IHRpbWVzIGZhc3Rlci4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyNjAzMmApLgorCitCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlcworPT09PT09PT09PT09PT09PT09PT09PT0KKworKiBQeXRob24gbm93IHJlcXVpcmVzIHNvbWUgQzk5IHN1cHBvcnQgaW4gdGhlIHRvb2xjaGFpbiB0byBidWlsZC4gRm9yIG1vcmUKKyAgaW5mb3JtYXRpb24sIHNlZSA6cGVwOmA3YC4KKworKiBDcm9zcy1jb21waWxpbmcgQ1B5dGhvbiB3aXRoIHRoZSBBbmRyb2lkIE5ESyBhbmQgdGhlIEFuZHJvaWQgQVBJIGxldmVsIHNldCB0bworICAyMSAoQW5kcm9pZCA1LjAgTG9sbGlsb3ApIG9yIGdyZWF0ZXIsIHJ1bnMgc3VjY2Vzc2Z1bGx5LiBXaGlsZSBBbmRyb2lkIGlzIG5vdAorICB5ZXQgYSBzdXBwb3J0ZWQgcGxhdGZvcm0sIHRoZSBQeXRob24gdGVzdCBzdWl0ZSBydW5zIG9uIHRoZSBBbmRyb2lkIGVtdWxhdG9yCisgIHdpdGggb25seSBhYm91dCAxNiB0ZXN0cyBmYWlsdXJlcy4gU2VlIHRoZSBBbmRyb2lkIG1ldGEtaXNzdWUgOmlzc3VlOmAyNjg2NWAuCisKKyogVGhlIGBgLS13aXRoLW9wdGltaXphdGlvbnNgYCBjb25maWd1cmUgZmxhZyBoYXMgYmVlbiBhZGRlZC4gVHVybmluZyBpdCBvbgorICB3aWxsIGFjdGl2YXRlIExUTyBhbmQgUEdPIGJ1aWxkIHN1cHBvcnQgKHdoZW4gYXZhaWxhYmxlKS4KKyAgKE9yaWdpbmFsIHBhdGNoIGJ5IEFsZWNzYW5kcnUgUGF0cmFzY3Ugb2YgSW50ZWwgaW4gOmlzc3VlOmAyNjUzOWAuKQorCisqIE5ldyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBBUEkgd2hpY2ggaW5kaWNhdGVzIGlmIGZsdXNoaW5nIGJ1ZmZlcmVkIGRhdGEKKyAgZmFpbGVkICg6aXNzdWU6YDUzMTlgKS4KKworKiA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIG5vdyBzdXBwb3J0cyA6cmVmOmBwb3NpdGlvbmFsLW9ubHkKKyAgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLiAgUG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMgYXJlCisgIGRlZmluZWQgYnkgZW1wdHkgbmFtZXMuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjYyODJgKS4KKworKiBgYFB5VHJhY2ViYWNrX1ByaW50YGAgbWV0aG9kIG5vdyBhYmJyZXZpYXRlcyBsb25nIHNlcXVlbmNlcyBvZiByZXBlYXRlZCBsaW5lcworICBhcyBgYCJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdImBgLgorICAoQ29udHJpYnV0ZWQgYnkgRW1hbnVlbCBCYXJyeSBpbiA6aXNzdWU6YDI2ODIzYC4pCisKKworRGVwcmVjYXRlZAorPT09PT09PT09PQorCitEZXByZWNhdGVkIEJ1aWxkIE9wdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGNvbmZpZ3VyZSBmbGFnIGlzIG5vdyBvbiBieSBkZWZhdWx0IG9uIG5vbi1PU1ggVU5JWAorcGxhdGZvcm1zLiAgSXQgbWF5IGJlIGRpc2FibGVkIGJ5IHVzaW5nIGBgLS13aXRob3V0LXN5c3RlbS1mZmlgYCwgYnV0IHVzaW5nIHRoZQorZmxhZyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIG5vdCBiZSBhY2NlcHRlZCBpbiBQeXRob24gMy43LiAgT1NYIGlzIHVuYWZmZWN0ZWQKK2J5IHRoaXMgY2hhbmdlLiAgTm90ZSB0aGF0IG1hbnkgT1MgZGlzdHJpYnV0b3JzIGFscmVhZHkgdXNlIHRoZQorYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGZsYWcgd2hlbiBidWlsZGluZyB0aGVpciBzeXN0ZW0gUHl0aG9uLgorCisKK05ldyBLZXl3b3JkcworLS0tLS0tLS0tLS0tCisKK2BgYXN5bmNgYCBhbmQgYGBhd2FpdGBgIGFyZSBub3QgcmVjb21tZW5kZWQgdG8gYmUgdXNlZCBhcyB2YXJpYWJsZSwgY2xhc3MsCitmdW5jdGlvbiBvciBtb2R1bGUgbmFtZXMuICBJbnRyb2R1Y2VkIGJ5IDpwZXA6YDQ5MmAgaW4gUHl0aG9uIDMuNSwgdGhleSB3aWxsCitiZWNvbWUgcHJvcGVyIGtleXdvcmRzIGluIFB5dGhvbiAzLjcuCisKKworRGVwcmVjYXRlZCBQeXRob24gbW9kdWxlcywgZnVuY3Rpb25zIGFuZCBtZXRob2RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6bWV0aDpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLmxvYWRfbW9kdWxlYCBhbmQKKyAgOm1ldGg6YGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIubG9hZF9tb2R1bGVgIGFyZSBub3cKKyAgZGVwcmVjYXRlZC4gVGhleSB3ZXJlIHRoZSBvbmx5IHJlbWFpbmluZyBpbXBsZW1lbnRhdGlvbnMgb2YKKyAgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCBpbiA6bW9kOmBpbXBvcnRsaWJgIHRoYXQgaGFkIG5vdAorICBiZWVuIGRlcHJlY2F0ZWQgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uIGluIGZhdm91ciBvZgorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgLgorCisqIFRoZSA6bW9kOmB0a2ludGVyLnRpeGAgbW9kdWxlIGlzIG5vdyBkZXByZWNhdGVkLiAgOm1vZDpgdGtpbnRlcmAgdXNlcnMgc2hvdWxkCisgIHVzZSA6bW9kOmB0a2ludGVyLnR0a2AgaW5zdGVhZC4KKworCitEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgdHlwZXMgb2YgdGhlIEMgQVBJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVW5kb2N1bWVudGVkIGZ1bmN0aW9ucyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0YCwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdGAsIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlYAorICBhbmQgOmM6ZnVuYzpgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGVgIGFyZSBkZXByZWNhdGVkIG5vdy4KKyAgVXNlIDpyZWY6YGdlbmVyaWMgY29kZWMgYmFzZWQgQVBJIDxjb2RlYy1yZWdpc3RyeT5gIGluc3RlYWQuCisKKworRGVwcmVjYXRlZCBmZWF0dXJlcworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBgYHB5dmVudmBgIHNjcmlwdCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBgYHB5dGhvbjMgLW0gdmVudmBgLgorICBUaGlzIHByZXZlbnRzIGNvbmZ1c2lvbiBhcyB0byB3aGF0IFB5dGhvbiBpbnRlcnByZXRlciBgYHB5dmVudmBgIGlzCisgIGNvbm5lY3RlZCB0byBhbmQgdGh1cyB3aGF0IFB5dGhvbiBpbnRlcnByZXRlciB3aWxsIGJlIHVzZWQgYnkgdGhlIHZpcnR1YWwKKyAgZW52aXJvbm1lbnQuIChDb250cmlidXRlZCBieSBCcmV0dCBDYW5ub24gaW4gOmlzc3VlOmAyNTE1NGAuKQorCisqIFdoZW4gcGVyZm9ybWluZyBhIHJlbGF0aXZlIGltcG9ydCwgZmFsbGluZyBiYWNrIG9uIGBgX19uYW1lX19gYCBhbmQKKyAgYGBfX3BhdGhfX2BgIGZyb20gdGhlIGNhbGxpbmcgbW9kdWxlIHdoZW4gYGBfX3NwZWNfX2BgIG9yCisgIGBgX19wYWNrYWdlX19gYCBhcmUgbm90IGRlZmluZWQgbm93IHJhaXNlcyBhbiA6ZXhjOmBJbXBvcnRXYXJuaW5nYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFJvc2UgQW1lcyBpbiA6aXNzdWU6YDI1NzkxYC4pCisKKyogVW5saWtlIHRvIG90aGVyIDptb2Q6YGRibWAgaW1wbGVtZW50YXRpb25zLCB0aGUgOm1vZDpgZGJtLmR1bWJgIG1vZHVsZQorICBjcmVhdGVzIGRhdGFiYXNlIGluIGBgJ3InYGAgYW5kIGBgJ3cnYGAgbW9kZXMgaWYgaXQgZG9lc24ndCBleGlzdCBhbmQKKyAgYWxsb3dzIG1vZGlmeWluZyBkYXRhYmFzZSBpbiBgYCdyJ2BgIG1vZGUuICBUaGlzIGJlaGF2aW9yIGlzIG5vdyBkZXByZWNhdGVkCisgIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy44LgorICAoQ29udHJpYnV0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYSBpbiA6aXNzdWU6YDIxNzA4YC4pCisKKyogVW5kb2N1bWVudGVkIHN1cHBvcnQgb2YgZ2VuZXJhbCA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RzIDxieXRlcy1saWtlIG9iamVjdD5gCisgIGFzIHBhdGhzIGluIDptb2Q6YG9zYCBmdW5jdGlvbnMsIDpmdW5jOmBjb21waWxlYCBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaXMKKyAgbm93IGRlcHJlY2F0ZWQuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjU3OTFgIGFuZCA6aXNzdWU6YDI2NzU0YC4pCisKKyogVGhlIHVuZG9jdW1lbnRlZCBgYGV4dHJhX3BhdGhgYCBhcmd1bWVudCB0byBhIGRpc3R1dGlscyBEaXN0cmlidXRpb24KKyAgaXMgbm93IGNvbnNpZGVyZWQKKyAgZGVwcmVjYXRlZCwgd2lsbCByYWlzZSBhIHdhcm5pbmcgZHVyaW5nIGluc3RhbGwgaWYgc2V0LiBTdXBwb3J0IGZvciB0aGlzCisgIHBhcmFtZXRlciB3aWxsIGJlIGRyb3BwZWQgaW4gYSBmdXR1cmUgUHl0aG9uIHJlbGVhc2UgYW5kIGxpa2VseSBlYXJsaWVyCisgIHRocm91Z2ggdGhpcmQgcGFydHkgdG9vbHMuIFNlZSA6aXNzdWU6YDI3OTE5YCBmb3IgZGV0YWlscy4KKworKiBBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBub3cgZ2VuZXJhdGVzCisgIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgQWx0aG91Z2ggdGhpcyB3aWxsIGV2ZW50dWFsbHkgYmVjb21lIGEgU3ludGF4RXJyb3IsCisgIHRoYXQgd2lsbCBub3QgYmUgZm9yIHNldmVyYWwgUHl0aG9uIHJlbGVhc2VzLiAgKENvbnRyaWJ1dGVkIGJ5IEVtYW51ZWwgQmFycnkKKyAgaW4gOmlzc3VlOmAyNzM2NGAuKQorCisqIElubGluZSBmbGFncyBgYCg/bGV0dGVycylgYCBub3cgc2hvdWxkIGJlIHVzZWQgb25seSBhdCB0aGUgc3RhcnQgb2YgdGhlCisgIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIElubGluZSBmbGFncyBpbiB0aGUgbWlkZGxlIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24KKyAgYWZmZWN0cyBnbG9iYWwgZmxhZ3MgaW4gUHl0aG9uIDptb2Q6YHJlYCBtb2R1bGUuICBUaGlzIGlzIGFuIGV4Y2VwdGlvbiB0bworICBvdGhlciByZWd1bGFyIGV4cHJlc3Npb24gZW5naW5lcyB0aGF0IGVpdGhlciBhcHBseSBmbGFncyB0byBvbmx5IHBhcnQgb2YKKyAgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciB0cmVhdCB0aGVtIGFzIGFuIGVycm9yLiAgVG8gYXZvaWQgZGlzdGluZ3Vpc2hpbmcKKyAgaW5saW5lIGZsYWdzIGluIHRoZSBtaWRkbGUgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBub3cgZW1pdCBhIGRlcHJlY2F0aW9uCisgIHdhcm5pbmcuICBJdCB3aWxsIGJlIGFuIGVycm9yIGluIGZ1dHVyZSBQeXRob24gcmVsZWFzZXMuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMjI0OTNgLikKKworKiBTU0wtcmVsYXRlZCBhcmd1bWVudHMgbGlrZSBgYGNlcnRmaWxlYGAsIGBga2V5ZmlsZWBgIGFuZCBgYGNoZWNrX2hvc3RuYW1lYGAKKyAgaW4gOm1vZDpgZnRwbGliYCwgOm1vZDpgaHR0cC5jbGllbnRgLCA6bW9kOmBpbWFwbGliYCwgOm1vZDpgcG9wbGliYCwKKyAgYW5kIDptb2Q6YHNtdHBsaWJgIGhhdmUgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBgY29udGV4dGBgLgorICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXN0aWFuIEhlaW1lcyBpbiA6aXNzdWU6YDI4MDIyYC4pCisKKyogQSBjb3VwbGUgb2YgcHJvdG9jb2xzIGFuZCBmdW5jdGlvbnMgb2YgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGFyZSBub3cKKyAgZGVwcmVjYXRlZC4gU29tZSBmZWF0dXJlcyB3aWxsIG5vIGxvbmdlciBiZSBhdmFpbGFibGUgaW4gZnV0dXJlIHZlcnNpb25zCisgIG9mIE9wZW5TU0wuIE90aGVyIGZlYXR1cmVzIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGEgZGlmZmVyZW50IEFQSS4KKyAgKENvbnRyaWJ1dGVkIGJ5IENocmlzdGlhbiBIZWltZXMgaW4gOmlzc3VlOmAyODAyMmAgYW5kIDppc3N1ZTpgMjY0NzBgLikKKworCitEZXByZWNhdGVkIFB5dGhvbiBiZWhhdmlvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBSYWlzaW5nIHRoZSA6ZXhjOmBTdG9wSXRlcmF0aW9uYCBleGNlcHRpb24gaW5zaWRlIGEgZ2VuZXJhdG9yIHdpbGwgbm93IGdlbmVyYXRlIGEKKyAgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYCwgYW5kIHdpbGwgdHJpZ2dlciBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaW4gUHl0aG9uIDMuNy4KKyAgU2VlIDpyZWY6YHdoYXRzbmV3LXBlcC00NzlgIGZvciBkZXRhaWxzLgorCisKK1JlbW92ZWQKKz09PT09PT0KKworQVBJIGFuZCBGZWF0dXJlIFJlbW92YWxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiBgYGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpYGAgd2FzIHJlbW92ZWQgKHdhcyBkZXByZWNhdGVkIHNpbmNlIENQeXRob24gMy4zKS4KKyAgOmZ1bmM6YGluc3BlY3QuZ2V0bW9kdWxlbmFtZWAgc2hvdWxkIGJlIHVzZWQgZm9yIG9idGFpbmluZyB0aGUgbW9kdWxlCisgIG5hbWUgZm9yIGEgZ2l2ZW4gcGF0aC4KKworKiBgYHRyYWNlYmFjay5JZ25vcmVgYCBjbGFzcyBhbmQgYGB0cmFjZWJhY2sudXNhZ2VgYCwgYGB0cmFjZWJhY2subW9kbmFtZWBgLAorICBgYHRyYWNlYmFjay5mdWxsbW9kbmFtZWBgLCBgYHRyYWNlYmFjay5maW5kX2xpbmVzX2Zyb21fY29kZWBgLAorICBgYHRyYWNlYmFjay5maW5kX2xpbmVzYGAsIGBgdHJhY2ViYWNrLmZpbmRfc3RyaW5nc2BgLAorICBgYHRyYWNlYmFjay5maW5kX2V4ZWN1dGFibGVfbGluZXNgYCBtZXRob2RzIHdlcmUgcmVtb3ZlZCBmcm9tIHRoZQorICA6bW9kOmB0cmFjZWJhY2tgIG1vZHVsZS4gVGhleSB3ZXJlIHVuZG9jdW1lbnRlZCBtZXRob2RzIGRlcHJlY2F0ZWQgc2luY2UKKyAgUHl0aG9uIDMuMiBhbmQgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5IGlzIGF2YWlsYWJsZSBmcm9tIHByaXZhdGUgbWV0aG9kcy4KKworKiBUaGUgYGB0a19tZW51QmFyKClgYCBhbmQgYGB0a19iaW5kRm9yVHJhdmVyc2FsKClgYCBkdW1teSBtZXRob2RzIGluCisgIDptb2Q6YHRraW50ZXJgIHdpZGdldCBjbGFzc2VzIHdlcmUgcmVtb3ZlZCAoY29ycmVzcG9uZGluZyBUayBjb21tYW5kcworICB3ZXJlIG9ic29sZXRlIHNpbmNlIFRrIDQuMCkuCisKKyogVGhlIDptZXRoOmB+emlwZmlsZS5aaXBGaWxlLm9wZW5gIG1ldGhvZCBvZiB0aGUgOmNsYXNzOmB6aXBmaWxlLlppcEZpbGVgCisgIGNsYXNzIG5vIGxvbmdlciBzdXBwb3J0cyB0aGUgYGAnVSdgYCBtb2RlICh3YXMgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMy40KS4KKyAgVXNlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgZm9yIHJlYWRpbmcgY29tcHJlc3NlZCB0ZXh0IGZpbGVzIGluCisgIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUuCisKKyogVGhlIHVuZG9jdW1lbnRlZCBgYElOYGAsIGBgQ0RST01gYCwgYGBETEZDTmBgLCBgYFRZUEVTYGAsIGBgQ0RJT2BgLCBhbmQKKyAgYGBTVFJPUFRTYGAgbW9kdWxlcyBoYXZlIGJlZW4gcmVtb3ZlZC4gIFRoZXkgaGFkIGJlZW4gYXZhaWxhYmxlIGluIHRoZQorICBwbGF0Zm9ybSBzcGVjaWZpYyBgYExpYi9wbGF0LSovYGAgZGlyZWN0b3JpZXMsIGJ1dCB3ZXJlIGNocm9uaWNhbGx5IG91dCBvZgorICBkYXRlLCBpbmNvbnNpc3RlbnRseSBhdmFpbGFibGUgYWNyb3NzIHBsYXRmb3JtcywgYW5kIHVubWFpbnRhaW5lZC4gIFRoZQorICBzY3JpcHQgdGhhdCBjcmVhdGVkIHRoZXNlIG1vZHVsZXMgaXMgc3RpbGwgYXZhaWxhYmxlIGluIHRoZSBzb3VyY2UKKyAgZGlzdHJpYnV0aW9uIGF0IDpzb3VyY2U6YFRvb2xzL3NjcmlwdHMvaDJweS5weWAuCisKKworUG9ydGluZyB0byBQeXRob24gMy42Cis9PT09PT09PT09PT09PT09PT09PT0KKworVGhpcyBzZWN0aW9uIGxpc3RzIHByZXZpb3VzbHkgZGVzY3JpYmVkIGNoYW5nZXMgYW5kIG90aGVyIGJ1Z2ZpeGVzCit0aGF0IG1heSByZXF1aXJlIGNoYW5nZXMgdG8geW91ciBjb2RlLgorCitDaGFuZ2VzIGluICdweXRob24nIENvbW1hbmQgQmVoYXZpb3IKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgYGBDT1VOVF9BTExPQ1NgYCwKKyAgYGBTSE9XX0FMTE9DX0NPVU5UYGAgb3IgYGBTSE9XX1RSQUNLX0NPVU5UYGAgbWFjcm9zIGlzIG5vdyBvZmYgYnkKKyAgZGVmYXVsdC4gIEl0IGNhbiBiZSByZS1lbmFibGVkIHVzaW5nIHRoZSBgYC1YIHNob3dhbGxvY2NvdW50YGAgb3B0aW9uLgorICBJdCBub3cgb3V0cHV0cyB0byBgYHN0ZGVycmBgIGluc3RlYWQgb2YgYGBzdGRvdXRgYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAyMzAzNGAuKQorCisKK0NoYW5nZXMgaW4gdGhlIFB5dGhvbiBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6bW9kOmBzcWxpdGUzYCBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbiBiZWZvcmUgRERMCisgIHN0YXRlbWVudHMuCisKKyogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgYmxvY2tzIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wKKyAgaXMgaW5pdGlhbGl6ZWQgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5LgorCisqIFdoZW4gOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmV4ZWNfbW9kdWxlYCBpcyBkZWZpbmVkLAorICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuY3JlYXRlX21vZHVsZWAgbXVzdCBhbHNvIGJlIGRlZmluZWQuCisKKyogOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIG5vdyBzZXRzIDpleGM6YFR5cGVFcnJvcmAgd2hlbiBpdHMgKiptc2cqKgorICBhcmd1bWVudCBpcyBub3Qgc2V0LiBQcmV2aW91c2x5IG9ubHkgYGBOVUxMYGAgd2FzIHJldHVybmVkLgorCisqIFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cyBjaGFuZ2VkIHRvIHN1cHBvcnQKKyAgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEJ5IGRlZmF1bHQsIFB5dGhvbiBkb2VzIG5vdCBlbWl0IGJ5dGVjb2RlIHdpdGgKKyAgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuIEZ1bmN0aW9ucyB1c2luZyBgYGZyYW1lLmZfbGluZW5vYGAsCisgIGBgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKClgYCBvciBgYFB5Q29kZV9BZGRyMkxpbmUoKWBgIGFyZSBub3QgYWZmZWN0ZWQuCisgIEZ1bmN0aW9ucyBkZWNvZGluZyBkaXJlY3RseSBgYGNvX2xub3RhYmBgIHNob3VsZCBiZSB1cGRhdGVkIHRvIHVzZSBhIHNpZ25lZAorICA4LWJpdCBpbnRlZ2VyIHR5cGUgZm9yIHRoZSBsaW5lIG51bWJlciBkZWx0YSwgYnV0IGl0J3Mgb25seSByZXF1aXJlZCB0bworICBzdXBwb3J0IGFwcGxpY2F0aW9ucyB1c2luZyBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4gU2VlCisgIGBgT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0YGAgZm9yIHRoZSBgYGNvX2xub3RhYmBgIGZvcm1hdCBhbmQgaG93IHRvIGRlY29kZQorICBpdCwgYW5kIHNlZSB0aGUgOnBlcDpgNTExYCBmb3IgdGhlIHJhdGlvbmFsZS4KKworKiBUaGUgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBjb21waWxlYWxsYCBtb2R1bGUgbm93IHJldHVybiBib29sZWFucyBpbnN0ZWFkCisgIG9mIGBgMWBgIG9yIGBgMGBgIHRvIHJlcHJlc2VudCBzdWNjZXNzIG9yIGZhaWx1cmUsIHJlc3BlY3RpdmVseS4gVGhhbmtzIHRvCisgIGJvb2xlYW5zIGJlaW5nIGEgc3ViY2xhc3Mgb2YgaW50ZWdlcnMsIHRoaXMgc2hvdWxkIG9ubHkgYmUgYW4gaXNzdWUgaWYgeW91CisgIHdlcmUgZG9pbmcgaWRlbnRpdHkgY2hlY2tzIGZvciBgYDFgYCBvciBgYDBgYC4gU2VlIDppc3N1ZTpgMjU3NjhgLgorCisqIFJlYWRpbmcgdGhlIDphdHRyOmB+dXJsbGliLnBhcnNlLlNwbGl0UmVzdWx0LnBvcnRgIGF0dHJpYnV0ZSBvZgorICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybHNwbGl0YCBhbmQgOmZ1bmM6YH51cmxsaWIucGFyc2UudXJscGFyc2VgIHJlc3VsdHMKKyAgbm93IHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBmb3Igb3V0LW9mLXJhbmdlIHZhbHVlcywgcmF0aGVyIHRoYW4KKyAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuICBTZWUgOmlzc3VlOmAyMDA1OWAuCisKKyogVGhlIDptb2Q6YGltcGAgbW9kdWxlIG5vdyByYWlzZXMgYSA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGluc3RlYWQgb2YKKyAgOmV4YzpgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2AuCisKKyogVGhlIGZvbGxvd2luZyBtb2R1bGVzIGhhdmUgaGFkIG1pc3NpbmcgQVBJcyBhZGRlZCB0byB0aGVpciA6YXR0cjpgX19hbGxfX2AKKyAgYXR0cmlidXRlcyB0byBtYXRjaCB0aGUgZG9jdW1lbnRlZCBBUElzOgorICA6bW9kOmBjYWxlbmRhcmAsIDptb2Q6YGNnaWAsIDptb2Q6YGNzdmAsCisgIDptb2Q6YH54bWwuZXRyZWUuRWxlbWVudFRyZWVgLCA6bW9kOmBlbnVtYCwKKyAgOm1vZDpgZmlsZWlucHV0YCwgOm1vZDpgZnRwbGliYCwgOm1vZDpgbG9nZ2luZ2AsIDptb2Q6YG1haWxib3hgLAorICA6bW9kOmBtaW1ldHlwZXNgLCA6bW9kOmBvcHRwYXJzZWAsIDptb2Q6YHBsaXN0bGliYCwgOm1vZDpgc210cGRgLAorICA6bW9kOmBzdWJwcm9jZXNzYCwgOm1vZDpgdGFyZmlsZWAsIDptb2Q6YHRocmVhZGluZ2AgYW5kCisgIDptb2Q6YHdhdmVgLiAgVGhpcyBtZWFucyB0aGV5IHdpbGwgZXhwb3J0IG5ldyBzeW1ib2xzIHdoZW4gYGBpbXBvcnQgKmBgCisgIGlzIHVzZWQuICBTZWUgOmlzc3VlOmAyMzg4M2AuCisKKyogV2hlbiBwZXJmb3JtaW5nIGEgcmVsYXRpdmUgaW1wb3J0LCBpZiBgYF9fcGFja2FnZV9fYGAgZG9lcyBub3QgY29tcGFyZSBlcXVhbAorICB0byBgYF9fc3BlY19fLnBhcmVudGBgIHRoZW4gOmV4YzpgSW1wb3J0V2FybmluZ2AgaXMgcmFpc2VkLgorICAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMjU3OTFgLikKKworKiBXaGVuIGEgcmVsYXRpdmUgaW1wb3J0IGlzIHBlcmZvcm1lZCBhbmQgbm8gcGFyZW50IHBhY2thZ2UgaXMga25vd24sIHRoZW4KKyAgOmV4YzpgSW1wb3J0RXJyb3JgIHdpbGwgYmUgcmFpc2VkLiBQcmV2aW91c2x5LCA6ZXhjOmBTeXN0ZW1FcnJvcmAgY291bGQgYmUKKyAgcmFpc2VkLiAoQ29udHJpYnV0ZWQgYnkgQnJldHQgQ2Fubm9uIGluIDppc3N1ZTpgMTgwMThgLikKKworKiBTZXJ2ZXJzIGJhc2VkIG9uIHRoZSA6bW9kOmBzb2NrZXRzZXJ2ZXJgIG1vZHVsZSwgaW5jbHVkaW5nIHRob3NlCisgIGRlZmluZWQgaW4gOm1vZDpgaHR0cC5zZXJ2ZXJgLCA6bW9kOmB4bWxycGMuc2VydmVyYCBhbmQKKyAgOm1vZDpgd3NnaXJlZi5zaW1wbGVfc2VydmVyYCwgbm93IG9ubHkgY2F0Y2ggZXhjZXB0aW9ucyBkZXJpdmVkCisgIGZyb20gOmV4YzpgRXhjZXB0aW9uYC4gVGhlcmVmb3JlIGlmIGEgcmVxdWVzdCBoYW5kbGVyIHJhaXNlcworICBhbiBleGNlcHRpb24gbGlrZSA6ZXhjOmBTeXN0ZW1FeGl0YCBvciA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAsCisgIDptZXRoOmB+c29ja2V0c2VydmVyLkJhc2VTZXJ2ZXIuaGFuZGxlX2Vycm9yYCBpcyBubyBsb25nZXIgY2FsbGVkLCBhbmQKKyAgdGhlIGV4Y2VwdGlvbiB3aWxsIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQgc2VydmVyLiAoQ29udHJpYnV0ZWQgYnkKKyAgTWFydGluIFBhbnRlciBpbiA6aXNzdWU6YDIzNDMwYC4pCisKKyogOmZ1bmM6YHNwd2QuZ2V0c3BuYW1gIG5vdyByYWlzZXMgYSA6ZXhjOmBQZXJtaXNzaW9uRXJyb3JgIGluc3RlYWQgb2YKKyAgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSB1c2VyIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCisqIFRoZSA6bWV0aDpgc29ja2V0LnNvY2tldC5jbG9zZWAgbWV0aG9kIG5vdyByYWlzZXMgYW4gZXhjZXB0aW9uIGlmCisgIGFuIGVycm9yIChlLmcuIEVCQURGKSB3YXMgcmVwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwuCisgIFNlZSA6aXNzdWU6YDI2Njg1YC4KKworKiBUaGUgKmRlY29kZV9kYXRhKiBhcmd1bWVudCBmb3IgOmNsYXNzOmBzbXRwZC5TTVRQQ2hhbm5lbGAgYW5kCisgIDpjbGFzczpgc210cGQuU01UUFNlcnZlcmAgY29uc3RydWN0b3JzIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KKyAgVGhpcyBtZWFucyB0aGF0IHRoZSBhcmd1bWVudCBwYXNzZWQgdG8KKyAgOm1ldGg6YH5zbXRwZC5TTVRQU2VydmVyLnByb2Nlc3NfbWVzc2FnZWAgaXMgbm93IGEgYnl0ZXMgb2JqZWN0IGJ5CisgIGRlZmF1bHQsIGFuZCBgYHByb2Nlc3NfbWVzc2FnZSgpYGAgd2lsbCBiZSBwYXNzZWQga2V5d29yZCBhcmd1bWVudHMuCisgIENvZGUgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHVwZGF0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBkZXByZWNhdGlvbgorICB3YXJuaW5nIGdlbmVyYXRlZCBieSAzLjUgd2lsbCBub3QgYmUgYWZmZWN0ZWQuCisKKyogQWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgb2YgdGhlIDpmdW5jOmB+anNvbi5kdW1wYCwgOmZ1bmM6YH5qc29uLmR1bXBzYCwKKyAgOmZ1bmM6YH5qc29uLmxvYWRgIGFuZCA6ZnVuYzpgfmpzb24ubG9hZHNgIGZ1bmN0aW9ucyBhbmQKKyAgOmNsYXNzOmB+anNvbi5KU09ORW5jb2RlcmAgYW5kIDpjbGFzczpgfmpzb24uSlNPTkRlY29kZXJgIGNsYXNzCisgIGNvbnN0cnVjdG9ycyBpbiB0aGUgOm1vZDpganNvbmAgbW9kdWxlIGFyZSBub3cgOnJlZjpga2V5d29yZC1vbmx5CisgIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisgIChDb250cmlidXRlZCBieSBTZXJoaXkgU3RvcmNoYWthIGluIDppc3N1ZTpgMTg3MjZgLikKKworKiBBcyBwYXJ0IG9mIDpwZXA6YDQ4N2AsIHRoZSBoYW5kbGluZyBvZiBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgdG8KKyAgOmNsYXNzOmB0eXBlYCAob3RoZXIgdGhhbiB0aGUgbWV0YWNsYXNzIGhpbnQsIGBgbWV0YWNsYXNzYGApIGlzIG5vdworICBjb25zaXN0ZW50bHkgZGVsZWdhdGVkIHRvIDptZXRoOmBvYmplY3QuX19pbml0X3N1YmNsYXNzX19gLiBUaGlzIG1lYW5zIHRoYXQKKyAgOm1ldGg6YHR5cGUuX19uZXdfX2AgYW5kIDptZXRoOmB0eXBlLl9faW5pdF9fYCBib3RoIG5vdyBhY2NlcHQgYXJiaXRyYXJ5CisgIGtleXdvcmQgYXJndW1lbnRzLCBidXQgOm1ldGg6YG9iamVjdC5fX2luaXRfc3ViY2xhc3NfX2AgKHdoaWNoIGlzIGNhbGxlZCBmcm9tCisgIDptZXRoOmB0eXBlLl9fbmV3X19gKSB3aWxsIHJlamVjdCB0aGVtIGJ5IGRlZmF1bHQuIEN1c3RvbSBtZXRhY2xhc3NlcworICBhY2NlcHRpbmcgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cyB3aWxsIG5lZWQgdG8gYWRqdXN0IHRoZWlyIGNhbGxzIHRvCisgIDptZXRoOmB0eXBlLl9fbmV3X19gICh3aGV0aGVyIGRpcmVjdCBvciB2aWEgOmNsYXNzOmBzdXBlcmApIGFjY29yZGluZ2x5LgorCisqIEluIDpjbGFzczpgZGlzdHV0aWxzLmNvbW1hbmQuc2Rpc3Quc2Rpc3RgLCB0aGUgYGBkZWZhdWx0X2Zvcm1hdGBgCisgIGF0dHJpYnV0ZSBoYXMgYmVlbiByZW1vdmVkIGFuZCBpcyBubyBsb25nZXIgaG9ub3JlZC4gSW5zdGVhZCwgdGhlCisgIGd6aXBwZWQgdGFyZmlsZSBmb3JtYXQgaXMgdGhlIGRlZmF1bHQgb24gYWxsIHBsYXRmb3JtcyBhbmQgbm8KKyAgcGxhdGZvcm0tc3BlY2lmaWMgc2VsZWN0aW9uIGlzIG1hZGUuCisgIEluIGVudmlyb25tZW50cyB3aGVyZSBkaXN0cmlidXRpb25zIGFyZQorICBidWlsdCBvbiBXaW5kb3dzIGFuZCB6aXAgZGlzdHJpYnV0aW9ucyBhcmUgcmVxdWlyZWQsIGNvbmZpZ3VyZQorICB0aGUgcHJvamVjdCB3aXRoIGEgYGBzZXR1cC5jZmdgYCBmaWxlIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZzo6CisKKyAgICBbc2Rpc3RdCisgICAgZm9ybWF0cz16aXAKKworICBUaGlzIGJlaGF2aW9yIGhhcyBhbHNvIGJlZW4gYmFja3BvcnRlZCB0byBlYXJsaWVyIFB5dGhvbiB2ZXJzaW9ucworICBieSBTZXR1cHRvb2xzIDI2LjAuMC4KKworKiBJbiB0aGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBhbmQgdGhlCisgIDptZXRoOmBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0YCBtZXRob2QsIGlmIG5vIENvbnRlbnQtTGVuZ3RoCisgIGhlYWRlciBmaWVsZCBoYXMgYmVlbiBzcGVjaWZpZWQgYW5kIHRoZSByZXF1ZXN0IGJvZHkgaXMgYSBmaWxlIG9iamVjdCwKKyAgaXQgaXMgbm93IHNlbnQgd2l0aCBIVFRQIDEuMSBjaHVua2VkIGVuY29kaW5nLiBJZiBhIGZpbGUgb2JqZWN0IGhhcyB0bworICBiZSBzZW50IHRvIGEgSFRUUCAxLjAgc2VydmVyLCB0aGUgQ29udGVudC1MZW5ndGggdmFsdWUgbm93IGhhcyB0byBiZQorICBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4gU2VlIDppc3N1ZTpgMTIzMTlgLgorCitDaGFuZ2VzIGluIHRoZSBDIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKiA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGFsbG9jYXRvciBmYW1pbHkgbm93IHVzZXMgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvcgorICA8cHltYWxsb2M+YCByYXRoZXIgdGhhbiBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4gQXBwbGljYXRpb25zIGNhbGxpbmcKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCBjYW4gbm93IGNyYXNoLiBTZXQgdGhlCisgIDplbnZ2YXI6YFBZVEhPTk1BTExPQ2AgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYGBkZWJ1Z2BgIHRvIHZhbGlkYXRlIHRoZQorICB1c2FnZSBvZiBtZW1vcnkgYWxsb2NhdG9ycyBpbiB5b3VyIGFwcGxpY2F0aW9uLiBTZWUgOmlzc3VlOmAyNjI0OWAuCisKKyogOmM6ZnVuYzpgUHlfRXhpdGAgKGFuZCB0aGUgbWFpbiBpbnRlcnByZXRlcikgbm93IG92ZXJyaWRlIHRoZSBleGl0IHN0YXR1cworICB3aXRoIDEyMCBpZiBmbHVzaGluZyBidWZmZXJlZCBkYXRhIGZhaWxlZC4gIFNlZSA6aXNzdWU6YDUzMTlgLgpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggZWRiNTUwMi4uN2M5MjUyNCAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjYucnN0CiAgICAzLjUucnN0CiAgICAzLjQucnN0CiAgICAzLjMucnN0CmRpZmYgLS1naXQgYS9HcmFtbWFyL0dyYW1tYXIgYi9HcmFtbWFyL0dyYW1tYXIKaW5kZXggNDMwNzUyMy4uYjEzOWU5ZiAxMDA2NDQKLS0tIGEvR3JhbW1hci9HcmFtbWFyCisrKyBiL0dyYW1tYXIvR3JhbW1hcgpAQCAtMjcsMjUgKzI3LDMxIEBACiBmdW5jZGVmOiAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCiAKIHBhcmFtZXRlcnM6ICcoJyBbdHlwZWRhcmdzbGlzdF0gJyknCi10eXBlZGFyZ3NsaXN0OiAodGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcKLSAgICAgICBbJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmXV0KLSAgICAgfCAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdGZwZGVmXSB8ICcqKicgdGZwZGVmKQordHlwZWRhcmdzbGlzdDogKHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICB8ICcqKicgdGZwZGVmIFsnLCddXV0KKyAgfCAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgfCAnKionIHRmcGRlZiBbJywnXSkKIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi12YXJhcmdzbGlzdDogKHZmcGRlZiBbJz0nIHRlc3RdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnCi0gICAgICAgWycqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZl1dCi0gICAgIHwgICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHZmcGRlZl0gfCAnKionIHZmcGRlZikKK3ZhcmFyZ3NsaXN0OiAodmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgIHwgJyoqJyB2ZnBkZWYgWycsJ11dXQorICB8ICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICB8ICcqKicgdmZwZGVmIFsnLCddCispCiB2ZnBkZWY6IE5BTUUKIAogc3RtdDogc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10CiBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCiBzbWFsbF9zdG10OiAoZXhwcl9zdG10IHwgZGVsX3N0bXQgfCBwYXNzX3N0bXQgfCBmbG93X3N0bXQgfAogICAgICAgICAgICAgIGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBub25sb2NhbF9zdG10IHwgYXNzZXJ0X3N0bXQpCi1leHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CitleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYW5uYXNzaWduIHwgYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CiAgICAgICAgICAgICAgICAgICAgICAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0X3N0YXJfZXhwcikpKikKK2FubmFzc2lnbjogJzonIHRlc3QgWyc9JyB0ZXN0XQogdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddCiBhdWdhc3NpZ246ICgnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScgfAogICAgICAgICAgICAgJzw8PScgfCAnPj49JyB8ICcqKj0nIHwgJy8vPScpCi0jIEZvciBub3JtYWwgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgorIyBGb3Igbm9ybWFsIGFuZCBhbm5vdGF0ZWQgYXNzaWdubWVudHMsIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGVuZm9yY2VkIGJ5IHRoZSBpbnRlcnByZXRlcgogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CiBwYXNzX3N0bXQ6ICdwYXNzJwogZmxvd19zdG10OiBicmVha19zdG10IHwgY29udGludWVfc3RtdCB8IHJldHVybl9zdG10IHwgcmFpc2Vfc3RtdCB8IHlpZWxkX3N0bXQKQEAgLTE0MCw3ICsxNDYsNyBAQAogICAgICAgICAgICAgJyonIHRlc3QgKQogCiBjb21wX2l0ZXI6IGNvbXBfZm9yIHwgY29tcF9pZgotY29tcF9mb3I6ICdmb3InIGV4cHJsaXN0ICdpbicgb3JfdGVzdCBbY29tcF9pdGVyXQorY29tcF9mb3I6IFtBU1lOQ10gJ2ZvcicgZXhwcmxpc3QgJ2luJyBvcl90ZXN0IFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIHRlc3Rfbm9jb25kIFtjb21wX2l0ZXJdCiAKICMgbm90IHVzZWQgaW4gZ3JhbW1hciwgYnV0IG1heSBhcHBlYXIgaW4gIm5vZGUiIHBhc3NlZCBmcm9tIFBhcnNlciB0byBDb21waWxlcgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9QeXRob24tYXN0LmggYi9JbmNsdWRlL1B5dGhvbi1hc3QuaAppbmRleCAyZDNlYWNiLi43MDQ5NGI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi1hc3QuaAorKysgYi9JbmNsdWRlL1B5dGhvbi1hc3QuaApAQCAtNjUsMTEgKzY1LDEyIEBACiAKIGVudW0gX3N0bXRfa2luZCB7RnVuY3Rpb25EZWZfa2luZD0xLCBBc3luY0Z1bmN0aW9uRGVmX2tpbmQ9MiwgQ2xhc3NEZWZfa2luZD0zLAogICAgICAgICAgICAgICAgICAgUmV0dXJuX2tpbmQ9NCwgRGVsZXRlX2tpbmQ9NSwgQXNzaWduX2tpbmQ9NiwKLSAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEZvcl9raW5kPTgsIEFzeW5jRm9yX2tpbmQ9OSwgV2hpbGVfa2luZD0xMCwKLSAgICAgICAgICAgICAgICAgIElmX2tpbmQ9MTEsIFdpdGhfa2luZD0xMiwgQXN5bmNXaXRoX2tpbmQ9MTMsIFJhaXNlX2tpbmQ9MTQsCi0gICAgICAgICAgICAgICAgICBUcnlfa2luZD0xNSwgQXNzZXJ0X2tpbmQ9MTYsIEltcG9ydF9raW5kPTE3LAotICAgICAgICAgICAgICAgICAgSW1wb3J0RnJvbV9raW5kPTE4LCBHbG9iYWxfa2luZD0xOSwgTm9ubG9jYWxfa2luZD0yMCwKLSAgICAgICAgICAgICAgICAgIEV4cHJfa2luZD0yMSwgUGFzc19raW5kPTIyLCBCcmVha19raW5kPTIzLCBDb250aW51ZV9raW5kPTI0fTsKKyAgICAgICAgICAgICAgICAgIEF1Z0Fzc2lnbl9raW5kPTcsIEFubkFzc2lnbl9raW5kPTgsIEZvcl9raW5kPTksCisgICAgICAgICAgICAgICAgICBBc3luY0Zvcl9raW5kPTEwLCBXaGlsZV9raW5kPTExLCBJZl9raW5kPTEyLCBXaXRoX2tpbmQ9MTMsCisgICAgICAgICAgICAgICAgICBBc3luY1dpdGhfa2luZD0xNCwgUmFpc2Vfa2luZD0xNSwgVHJ5X2tpbmQ9MTYsCisgICAgICAgICAgICAgICAgICBBc3NlcnRfa2luZD0xNywgSW1wb3J0X2tpbmQ9MTgsIEltcG9ydEZyb21fa2luZD0xOSwKKyAgICAgICAgICAgICAgICAgIEdsb2JhbF9raW5kPTIwLCBOb25sb2NhbF9raW5kPTIxLCBFeHByX2tpbmQ9MjIsIFBhc3Nfa2luZD0yMywKKyAgICAgICAgICAgICAgICAgIEJyZWFrX2tpbmQ9MjQsIENvbnRpbnVlX2tpbmQ9MjV9Owogc3RydWN0IF9zdG10IHsKICAgICBlbnVtIF9zdG10X2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0xMTgsNiArMTE5LDEzIEBACiAgICAgICAgIAogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgICAgICBleHByX3R5IGFubm90YXRpb247CisgICAgICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICAgICAgaW50IHNpbXBsZTsKKyAgICAgICAgfSBBbm5Bc3NpZ247CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgICAgICAgICBleHByX3R5IGl0ZXI7CiAgICAgICAgICAgICBhc2RsX3NlcSAqYm9keTsKICAgICAgICAgICAgIGFzZGxfc2VxICpvcmVsc2U7CkBAIC0yMDEsOSArMjA5LDEwIEBACiAgICAgICAgICAgICAgICAgICBTZXRDb21wX2tpbmQ9OSwgRGljdENvbXBfa2luZD0xMCwgR2VuZXJhdG9yRXhwX2tpbmQ9MTEsCiAgICAgICAgICAgICAgICAgICBBd2FpdF9raW5kPTEyLCBZaWVsZF9raW5kPTEzLCBZaWVsZEZyb21fa2luZD0xNCwKICAgICAgICAgICAgICAgICAgIENvbXBhcmVfa2luZD0xNSwgQ2FsbF9raW5kPTE2LCBOdW1fa2luZD0xNywgU3RyX2tpbmQ9MTgsCi0gICAgICAgICAgICAgICAgICBCeXRlc19raW5kPTE5LCBOYW1lQ29uc3RhbnRfa2luZD0yMCwgRWxsaXBzaXNfa2luZD0yMSwKLSAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTIyLCBTdWJzY3JpcHRfa2luZD0yMywgU3RhcnJlZF9raW5kPTI0LAotICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI1LCBMaXN0X2tpbmQ9MjYsIFR1cGxlX2tpbmQ9Mjd9OworICAgICAgICAgICAgICAgICAgRm9ybWF0dGVkVmFsdWVfa2luZD0xOSwgSm9pbmVkU3RyX2tpbmQ9MjAsIEJ5dGVzX2tpbmQ9MjEsCisgICAgICAgICAgICAgICAgICBOYW1lQ29uc3RhbnRfa2luZD0yMiwgRWxsaXBzaXNfa2luZD0yMywgQ29uc3RhbnRfa2luZD0yNCwKKyAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZV9raW5kPTI1LCBTdWJzY3JpcHRfa2luZD0yNiwgU3RhcnJlZF9raW5kPTI3LAorICAgICAgICAgICAgICAgICAgTmFtZV9raW5kPTI4LCBMaXN0X2tpbmQ9MjksIFR1cGxlX2tpbmQ9MzB9Owogc3RydWN0IF9leHByIHsKICAgICBlbnVtIF9leHByX2tpbmQga2luZDsKICAgICB1bmlvbiB7CkBAIC0yOTcsNiArMzA2LDE2IEBACiAgICAgICAgIH0gU3RyOwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICBpbnQgY29udmVyc2lvbjsKKyAgICAgICAgICAgIGV4cHJfdHkgZm9ybWF0X3NwZWM7CisgICAgICAgIH0gRm9ybWF0dGVkVmFsdWU7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgYXNkbF9zZXEgKnZhbHVlczsKKyAgICAgICAgfSBKb2luZWRTdHI7CisgICAgICAgIAorICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgYnl0ZXMgczsKICAgICAgICAgfSBCeXRlczsKICAgICAgICAgCkBAIC0zMDUsNiArMzI0LDEwIEBACiAgICAgICAgIH0gTmFtZUNvbnN0YW50OwogICAgICAgICAKICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIGNvbnN0YW50IHZhbHVlOworICAgICAgICB9IENvbnN0YW50OworICAgICAgICAKKyAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAgICAgICAgICAgICBpZGVudGlmaWVyIGF0dHI7CiAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwpAQCAtMzY2LDYgKzM4OSw3IEBACiAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgZXhwcl90eSBpdGVyOwogICAgIGFzZGxfc2VxICppZnM7CisgICAgaW50IGlzX2FzeW5jOwogfTsKIAogZW51bSBfZXhjZXB0aGFuZGxlcl9raW5kIHtFeGNlcHRIYW5kbGVyX2tpbmQ9MX07CkBAIC00NDYsNiArNDcwLDkgQEAKICNkZWZpbmUgQXVnQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9BdWdBc3NpZ24oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIHN0bXRfdHkgX1B5X0F1Z0Fzc2lnbihleHByX3R5IHRhcmdldCwgb3BlcmF0b3JfdHkgb3AsIGV4cHJfdHkgdmFsdWUsIGludAogICAgICAgICAgICAgICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgQW5uQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfQW5uQXNzaWduKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQorc3RtdF90eSBfUHlfQW5uQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGFubm90YXRpb24sIGV4cHJfdHkgdmFsdWUsIGludAorICAgICAgICAgICAgICAgICAgICAgIHNpbXBsZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSBfUHlfRm9yKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KQogc3RtdF90eSBfUHlfRm9yKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKgogICAgICAgICAgICAgICAgIG9yZWxzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTU0Myw2ICs1NzAsMTIgQEAKIGV4cHJfdHkgX1B5X051bShvYmplY3QgbiwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfU3RyKGEwLCBhMSwgYTIsIGEzKQogZXhwcl90eSBfUHlfU3RyKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBGb3JtYXR0ZWRWYWx1ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfRm9ybWF0dGVkVmFsdWUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKK2V4cHJfdHkgX1B5X0Zvcm1hdHRlZFZhbHVlKGV4cHJfdHkgdmFsdWUsIGludCBjb252ZXJzaW9uLCBleHByX3R5IGZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgSm9pbmVkU3RyKGEwLCBhMSwgYTIsIGEzKSBfUHlfSm9pbmVkU3RyKGEwLCBhMSwgYTIsIGEzKQorZXhwcl90eSBfUHlfSm9pbmVkU3RyKGFzZGxfc2VxICogdmFsdWVzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEJ5dGVzKGEwLCBhMSwgYTIsIGEzKSBfUHlfQnl0ZXMoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9CeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBOYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpIF9QeV9OYW1lQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCkBAIC01NTAsNiArNTgzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJlbmEpOwogI2RlZmluZSBFbGxpcHNpcyhhMCwgYTEsIGEyKSBfUHlfRWxsaXBzaXMoYTAsIGExLCBhMikKIGV4cHJfdHkgX1B5X0VsbGlwc2lzKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CisjZGVmaW5lIENvbnN0YW50KGEwLCBhMSwgYTIsIGEzKSBfUHlfQ29uc3RhbnQoYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9Db25zdGFudChjb25zdGFudCB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAjZGVmaW5lIEF0dHJpYnV0ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfQXR0cmlidXRlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBleHByX3R5IF9QeV9BdHRyaWJ1dGUoZXhwcl90eSB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHRfdHkgY3R4LCBpbnQKICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CkBAIC01NzQsOSArNjEwLDkgQEAKIHNsaWNlX3R5IF9QeV9FeHRTbGljZShhc2RsX3NlcSAqIGRpbXMsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgSW5kZXgoYTAsIGExKSBfUHlfSW5kZXgoYTAsIGExKQogc2xpY2VfdHkgX1B5X0luZGV4KGV4cHJfdHkgdmFsdWUsIFB5QXJlbmEgKmFyZW5hKTsKLSNkZWZpbmUgY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMykgX1B5X2NvbXByZWhlbnNpb24oYTAsIGExLCBhMiwgYTMpCisjZGVmaW5lIGNvbXByZWhlbnNpb24oYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfY29tcHJlaGVuc2lvbihhMCwgYTEsIGEyLCBhMywgYTQpCiBjb21wcmVoZW5zaW9uX3R5IF9QeV9jb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZzLCBQeUFyZW5hICphcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmcywgaW50IGlzX2FzeW5jLCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIEV4Y2VwdEhhbmRsZXIoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0V4Y2VwdEhhbmRsZXIoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkKIGV4Y2VwdGhhbmRsZXJfdHkgX1B5X0V4Y2VwdEhhbmRsZXIoZXhwcl90eSB0eXBlLCBpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKZGlmZiAtLWdpdCBhL0luY2x1ZGUvUHl0aG9uLmggYi9JbmNsdWRlL1B5dGhvbi5oCmluZGV4IDg1OGRiZDEuLjRjN2M5YTQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLmgKKysrIGIvSW5jbHVkZS9QeXRob24uaApAQCAtMTE2LDYgKzExNiw3IEBACiAjaW5jbHVkZSAicHlsaWZlY3ljbGUuaCIKICNpbmNsdWRlICJjZXZhbC5oIgogI2luY2x1ZGUgInN5c21vZHVsZS5oIgorI2luY2x1ZGUgIm9zbW9kdWxlLmgiCiAjaW5jbHVkZSAiaW50cmNoZWNrLmgiCiAjaW5jbHVkZSAiaW1wb3J0LmgiCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYWJzdHJhY3QuaCBiL0luY2x1ZGUvYWJzdHJhY3QuaAppbmRleCAzNmRmNWE3Li40NDEwN2E4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2Fic3RyYWN0LmgKKysrIGIvSW5jbHVkZS9hYnN0cmFjdC5oCkBAIC03LDcgKzcsOSBAQAogI2lmZGVmIFBZX1NTSVpFX1RfQ0xFQU4KICNkZWZpbmUgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKICNkZWZpbmUgUHlPYmplY3RfQ2FsbE1ldGhvZCBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogI2RlZmluZSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBBYnN0cmFjdCBPYmplY3QgSW50ZXJmYWNlIChtYW55IHRoYW5rcyB0byBKaW0gRnVsdG9uKSAqLwpAQCAtMjY0LDE4ICsyNjYsOTYgQEAKICAgICAgICAqLwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqY2FsbGFibGVfb2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5U3RhY2tfQXNUdXBsZSgKKyAgICAgICAgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncyk7CisKKyAgICAvKiBDb252ZXJ0IGtleXdvcmQgYXJndW1lbnRzIGZyb20gdGhlIChzdGFjaywga3duYW1lcykgZm9ybWF0IHRvIGEgUHl0aG9uCisgICAgICAgZGljdGlvbmFyeS4KKworICAgICAgIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUuIGt3bmFtZXMgaXMgbm90IGNoZWNrZWQsIHVzdWFsbHkgdGhlc2UgY2hlY2tzIGFyZSBkb25lIGJlZm9yZSBvciBsYXRlcgorICAgICAgIGNhbGxpbmcgX1B5U3RhY2tfQXNEaWN0KCkuIEZvciBleGFtcGxlLCBfUHlBcmdfUGFyc2VTdGFjaygpIHJhaXNlcyBhbgorICAgICAgIGVycm9yIGlmIGEga2V5IGlzIG5vdCBhIHN0cmluZy4gKi8KKyAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN0YWNrX0FzRGljdCgKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZXMsCisgICAgICAgIFB5T2JqZWN0ICprd25hbWVzKTsKKworICAgIC8qIENvbnZlcnQgKGFyZ3MsIG5hcmdzLCBrd2FyZ3MpIGludG8gYSAoc3RhY2ssIG5hcmdzLCBrd25hbWVzKS4KKworICAgICAgIFJldHVybiBhIG5ldyBzdGFjayB3aGljaCBzaG91bGQgYmUgcmVsZWFzZWQgYnkgUHlNZW1fRnJlZSgpLCBvciByZXR1cm4KKyAgICAgICBhcmdzIHVuY2hhbmdlZCBpZiBrd2FyZ3MgaXMgTlVMTCBvciBhbiBlbXB0eSBkaWN0aW9uYXJ5LgorCisgICAgICAgVGhlIHN0YWNrIHVzZXMgYm9ycm93ZWQgcmVmZXJlbmNlcy4KKworICAgICAgIFRoZSB0eXBlIG9mIGtleXdvcmQga2V5cyBpcyBub3QgY2hlY2tlZCwgdGhlc2UgY2hlY2tzIHNob3VsZCBiZSBkb25lCisgICAgICAgbGF0ZXIgKGV4OiBfUHlBcmdfUGFyc2VTdGFjaykuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5U3RhY2tfVW5wYWNrRGljdCgKKyAgICAgICAgUHlPYmplY3QgKiphcmdzLAorICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICBQeU9iamVjdCAqa3dhcmdzLAorICAgICAgICBQeU9iamVjdCAqKmt3bmFtZXMsCisgICAgICAgIFB5T2JqZWN0ICpmdW5jKTsKKworICAgIC8qIENhbGwgdGhlIGNhbGxhYmxlIG9iamVjdCBmdW5jIHdpdGggdGhlICJmYXN0IGNhbGwiIGNhbGxpbmcgY29udmVudGlvbjoKKyAgICAgICBhcmdzIGlzIGEgQyBhcnJheSBmb3IgcG9zaXRpb25hbCBhcmd1bWVudHMgKG5hcmdzIGlzIHRoZSBudW1iZXIgb2YKKyAgICAgICBwb3NpdGlvbmFsIGFyZ3VtZW50cyksIGt3YXJncyBpcyBhIGRpY3Rpb25hcnkgZm9yIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgSWYgbmFyZ3MgaXMgZXF1YWwgdG8gemVybywgYXJncyBjYW4gYmUgTlVMTC4ga3dhcmdzIGNhbiBiZSBOVUxMLgorICAgICAgIG5hcmdzIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCB0byB6ZXJvLgorCisgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIG9uIHJldHVybiBOVUxMIG9uCisgICAgICAgZXJyb3IuICovCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCisgICAgLyogQ2FsbCB0aGUgY2FsbGFibGUgb2JqZWN0IGZ1bmMgd2l0aCB0aGUgImZhc3QgY2FsbCIgY2FsbGluZyBjb252ZW50aW9uOgorICAgICAgIGFyZ3MgaXMgYSBDIGFycmF5IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50cyBmb2xsb3dlZCBieSB2YWx1ZXMgb2YKKyAgICAgICBrZXl3b3JkIGFyZ3VtZW50cy4gS2V5cyBvZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3RvcmVkIGFzIGEgdHVwbGUKKyAgICAgICBvZiBzdHJpbmdzIGluIGt3bmFtZXMuIG5hcmdzIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGF0CisgICAgICAgdGhlIGJlZ2lubmluZyBvZiBzdGFjay4gVGhlIHNpemUgb2Yga3duYW1lcyBnaXZlcyB0aGUgbnVtYmVyIG9mIGtleXdvcmQKKyAgICAgICB2YWx1ZXMgaW4gdGhlIHN0YWNrIGFmdGVyIHBvc2l0aW9uYWwgYXJndW1lbnRzLgorCisgICAgICAga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZS4KKworICAgICAgIElmIG5hcmdzIGlzIGVxdWFsIHRvIHplcm8gYW5kIHRoZXJlIGlzIG5vIGtleXdvcmQgYXJndW1lbnQgKGt3bmFtZXMgaXMKKyAgICAgICBOVUxMIG9yIGl0cyBzaXplIGlzIHplcm8pLCBhcmdzIGNhbiBiZSBOVUxMLgorCisgICAgICAgUmV0dXJuIHRoZSByZXN1bHQgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbgorICAgICAgIGVycm9yLiAqLworICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMKKyAgICAgICAoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICAgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgUHlPYmplY3QgKmt3bmFtZXMpOworCisjZGVmaW5lIF9QeU9iamVjdF9GYXN0Q2FsbChmdW5jLCBhcmdzLCBuYXJncykgXAorICAgIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoKGZ1bmMpLCAoYXJncyksIChuYXJncyksIE5VTEwpCisKKyNkZWZpbmUgX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsKChmdW5jKSwgTlVMTCwgMCkKKworI2RlZmluZSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgYXJnKSBcCisgICAgX1B5T2JqZWN0X0Zhc3RDYWxsKChmdW5jKSwgJihhcmcpLCAxKQorCisgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKFB5T2JqZWN0ICpmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncyk7CisKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChQeU9iamVjdCAqZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKndoZXJlKTsKLSNlbmRpZgorI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICAgIC8qCiAgICAgIENhbGwgYSBjYWxsYWJsZSBQeXRob24gb2JqZWN0LCBjYWxsYWJsZV9vYmplY3QsIHdpdGgKICAgICAgYXJndW1lbnRzIGFuZCBrZXl3b3JkcyBhcmd1bWVudHMuICBUaGUgJ2FyZ3MnIGFyZ3VtZW50IGNhbiBub3QgYmUKLSAgICAgTlVMTCwgYnV0IHRoZSAna3cnIGFyZ3VtZW50IGNhbiBiZSBOVUxMLgorICAgICBOVUxMLgogICAgICAgICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsT2JqZWN0KFB5T2JqZWN0ICpjYWxsYWJsZV9vYmplY3QsCkBAIC0zMTUsNiArMzk1LDcgQEAKICAgICAgUHl0aG9uIGV4cHJlc3Npb246IG8ubWV0aG9kKGFyZ3MpLgogICAgICAgICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKQEAgLTMyMyw2ICs0MDQsNyBAQAogICAgICAgICAgTGlrZSBQeU9iamVjdF9DYWxsTWV0aG9kLCBidXQgZXhwZWN0IGEgX1B5X0lkZW50aWZpZXIqIGFzIHRoZQogICAgICAgICAgbWV0aG9kIG5hbWUuCiAgICAgICAgKi8KKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LApAQCAtMzMxLDEwICs0MTMsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CkBAIC0zNTAsOSArNDM0LDExIEBACiAKICAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWV0aG9kLCAuLi4pOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm1ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogICAgICAgIC8qCiAgICAgIENhbGwgdGhlIG1ldGhvZCBuYW1lZCBtIG9mIG9iamVjdCBvIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YKQEAgLTEyNzAsMTMgKzEzNTYsMTMgQEAKIFB5QVBJX0ZVTkMoY2hhciAqY29uc3QgKikgX1B5U2VxdWVuY2VfQnl0ZXNUb0NoYXJwQXJyYXkoUHlPYmplY3QqIHNlbGYpOwogCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9GcmVlQ2hhclBBcnJheShjaGFyICpjb25zdCBhcnJheVtdKTsKLSNlbmRpZgogCiAvKiBGb3IgaW50ZXJuYWwgdXNlIGJ5IGJ1ZmZlciBBUEkgZnVuY3Rpb25zICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9hZGRfb25lX3RvX2luZGV4X0YoaW50IG5kLCBQeV9zc2l6ZV90ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9hZGRfb25lX3RvX2luZGV4X0MoaW50IG5kLCBQeV9zc2l6ZV90ICppbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2FzZGwuaCBiL0luY2x1ZGUvYXNkbC5oCmluZGV4IDQ5NTE1M2MuLjM1ZTlmYTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYXNkbC5oCisrKyBiL0luY2x1ZGUvYXNkbC5oCkBAIC02LDYgKzYsNyBAQAogdHlwZWRlZiBQeU9iamVjdCAqIGJ5dGVzOwogdHlwZWRlZiBQeU9iamVjdCAqIG9iamVjdDsKIHR5cGVkZWYgUHlPYmplY3QgKiBzaW5nbGV0b247Cit0eXBlZGVmIFB5T2JqZWN0ICogY29uc3RhbnQ7CiAKIC8qIEl0IHdvdWxkIGJlIG5pY2UgaWYgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IGFzZGxfYy5weSB3YXMgY29tcGxldGVseQogICAgaW5kZXBlbmRlbnQgb2YgUHl0aG9uLCBidXQgaXQgaXMgYSBnb2FsIHRoZSByZXF1aXJlcyB0b28gbXVjaCB3b3JrCmRpZmYgLS1naXQgYS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCmluZGV4IDExZDVmNDIuLjdmYTc1NDAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCisrKyBiL0luY2x1ZGUvYnl0ZXNfbWV0aG9kcy5oCkBAIC0xNyw5ICsxNywxOCBAQAogLyogVGhlc2Ugc3RvcmUgdGhlaXIgbGVuIHNpemVkIGFuc3dlciBpbiB0aGUgZ2l2ZW4gcHJlYWxsb2NhdGVkICpyZXN1bHQgYXJnLiAqLwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2xvd2VyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqY3B0ciwgUHlfc3NpemVfdCBsZW4pOwogZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3VwcGVyKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqY3B0ciwgUHlfc3NpemVfdCBsZW4pOwotZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pOwotZXh0ZXJuIHZvaWQgX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7Ci1leHRlcm4gdm9pZCBfUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbik7CitleHRlcm4gdm9pZCBfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKK2V4dGVybiB2b2lkIF9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKTsKKworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19pbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19yZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19yaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIFB5T2JqZWN0ICpfUHlfYnl0ZXNfY291bnQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpOworZXh0ZXJuIGludCBfUHlfYnl0ZXNfY29udGFpbnMoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZyk7CitleHRlcm4gUHlPYmplY3QgKl9QeV9ieXRlc19zdGFydHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKK2V4dGVybiBQeU9iamVjdCAqX1B5X2J5dGVzX2VuZHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKTsKIAogLyogVGhlIG1ha2V0cmFucygpIHN0YXRpYyBtZXRob2QuICovCiBleHRlcm4gUHlPYmplY3QqIF9QeV9ieXRlc19tYWtldHJhbnMoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pOwpAQCAtMzcsNyArNDYsMTkgQEAKIGV4dGVybiBjb25zdCBjaGFyIF9QeV90aXRsZV9fZG9jX19bXTsKIGV4dGVybiBjb25zdCBjaGFyIF9QeV9jYXBpdGFsaXplX19kb2NfX1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3N3YXBjYXNlX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2NvdW50X19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2ZpbmRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfaW5kZXhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmZpbmRfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmluZGV4X19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3N0YXJ0c3dpdGhfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfZW5kc3dpdGhfX2RvY19fW107CiBleHRlcm4gY29uc3QgY2hhciBfUHlfbWFrZXRyYW5zX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X2V4cGFuZHRhYnNfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfbGp1c3RfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfcmp1c3RfX2RvY19fW107CitleHRlcm4gY29uc3QgY2hhciBfUHlfY2VudGVyX19kb2NfX1tdOworZXh0ZXJuIGNvbnN0IGNoYXIgX1B5X3pmaWxsX19kb2NfX1tdOwogCiAvKiB0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgZG9jcyBhcmUgc2hhcmVkIGZyb20gdGhlIC5vLCBub3Qgc3RhdGljICovCiAjZGVmaW5lIFB5RG9jX1NUUlZBUl9zaGFyZWQobmFtZSxzdHIpIGNvbnN0IGNoYXIgbmFtZVtdID0gUHlEb2NfU1RSKHN0cikKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAppbmRleCA2YzFlMGMzLi4xMWQ4MjE4IDEwMDY0NAotLS0gYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCkBAIC02Miw3ICs2MiwxNCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUJ5dGVzX0NvbmNhdEFuZERlbChQeU9iamVjdCAqKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5Qnl0ZXNfUmVzaXplKFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90KTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNfRm9ybWF0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zvcm1hdEV4KAorICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAgICBQeV9zc2l6ZV90IGZvcm1hdF9sZW4sCisgICAgUHlPYmplY3QgKmFyZ3MsCisgICAgaW50IHVzZV9ieXRlYXJyYXkpOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeUJ5dGVzX0Zyb21IZXgoCisgICAgUHlPYmplY3QgKnN0cmluZywKKyAgICBpbnQgdXNlX2J5dGVhcnJheSk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LAogCQkJCQkJICAgY29uc3QgY2hhciAqLCBQeV9zc2l6ZV90LApAQCAtMTIzLDYgKzEzMCw4NyBAQAogI2RlZmluZSBGX0FMVAkoMTw8MykKICNkZWZpbmUgRl9aRVJPCSgxPDw0KQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBUaGUgX1B5Qnl0ZXNXcml0ZXIgc3RydWN0dXJlIGlzIGJpZzogaXQgY29udGFpbnMgYW4gZW1iZWRkZWQgInN0YWNrIGJ1ZmZlciIuCisgICBBIF9QeUJ5dGVzV3JpdGVyIHZhcmlhYmxlIG11c3QgYmUgZGVjbGFyZWQgYXQgdGhlIGVuZCBvZiB2YXJpYWJsZXMgaW4gYQorICAgZnVuY3Rpb24gdG8gb3B0aW1pemUgdGhlIG1lbW9yeSBhbGxvY2F0aW9uIG9uIHRoZSBzdGFjay4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBieXRlcywgYnl0ZWFycmF5IG9yIE5VTEwgKHdoZW4gdGhlIHNtYWxsIGJ1ZmZlciBpcyB1c2VkKSAqLworICAgIFB5T2JqZWN0ICpidWZmZXI7CisKKyAgICAvKiBOdW1iZXIgb2YgYWxsb2NhdGVkIHNpemUuICovCisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7CisKKyAgICAvKiBNaW5pbXVtIG51bWJlciBvZiBhbGxvY2F0ZWQgYnl0ZXMsCisgICAgICAgaW5jcmVtZW50ZWQgYnkgX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgpICovCisgICAgUHlfc3NpemVfdCBtaW5fc2l6ZTsKKworICAgIC8qIElmIG5vbi16ZXJvLCB1c2UgYSBieXRlYXJyYXkgaW5zdGVhZCBvZiBhIGJ5dGVzIG9iamVjdCBmb3IgYnVmZmVyLiAqLworICAgIGludCB1c2VfYnl0ZWFycmF5OworCisgICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIChkZWZhdWx0OiAwKS4KKyAgICAgICBUaGlzIGZsYWcgbXVzdCBiZSB6ZXJvIGlmIHVzZV9ieXRlYXJyYXkgaXMgbm9uLXplcm8uICovCisgICAgaW50IG92ZXJhbGxvY2F0ZTsKKworICAgIC8qIFN0YWNrIGJ1ZmZlciAqLworICAgIGludCB1c2Vfc21hbGxfYnVmZmVyOworICAgIGNoYXIgc21hbGxfYnVmZmVyWzUxMl07Cit9IF9QeUJ5dGVzV3JpdGVyOworCisvKiBJbml0aWFsaXplIGEgYnl0ZXMgd3JpdGVyCisKKyAgIEJ5IGRlZmF1bHQsIHRoZSBvdmVyYWxsb2NhdGlvbiBpcyBkaXNhYmxlZC4gU2V0IHRoZSBvdmVyYWxsb2NhdGUgYXR0cmlidXRlCisgICB0byBjb250cm9sIHRoZSBhbGxvY2F0aW9uIG9mIHRoZSBidWZmZXIuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcik7CisKKy8qIEdldCB0aGUgYnVmZmVyIGNvbnRlbnQgYW5kIHJlc2V0IHRoZSB3cml0ZXIuCisgICBSZXR1cm4gYSBieXRlcyBvYmplY3QsIG9yIGEgYnl0ZWFycmF5IG9iamVjdCBpZiB1c2VfYnl0ZWFycmF5IGlzIG5vbi16ZXJvLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyKTsKKworLyogRGVhbGxvY2F0ZSBtZW1vcnkgb2YgYSB3cml0ZXIgKGNsZWFyIGl0cyBpbnRlcm5hbCBidWZmZXIpLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpOworCisvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyIHRvIHdyaXRlIHNpemUgYnl0ZXMuCisgICBSZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiBidWZmZXIgZGF0YS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKHZvaWQqKSBfUHlCeXRlc1dyaXRlcl9BbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIEVuc3VyZSB0aGF0IHRoZSBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoIHRvIHdyaXRlICpzaXplKiBieXRlcy4KKyAgIEFkZCBzaXplIHRvIHRoZSB3cml0ZXIgbWluaW11bSBzaXplIChtaW5fc2l6ZSBhdHRyaWJ1dGUpLgorCisgICBzdHIgaXMgdGhlIGN1cnJlbnQgcG9pbnRlciBpbnNpZGUgdGhlIGJ1ZmZlci4KKyAgIFJldHVybiB0aGUgdXBkYXRlZCBjdXJyZW50IHBvaW50ZXIgaW5zaWRlIHRoZSBidWZmZXIuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgIHZvaWQgKnN0ciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworCisvKiBSZXNpemUgdGhlIGJ1ZmZlciB0byBtYWtlIGl0IGxhcmdlci4KKyAgIFRoZSBuZXcgYnVmZmVyIG1heSBiZSBsYXJnZXIgdGhhbiBzaXplIGJ5dGVzIGJlY2F1c2Ugb2Ygb3ZlcmFsbG9jYXRpb24uCisgICBSZXR1cm4gdGhlIHVwZGF0ZWQgY3VycmVudCBwb2ludGVyIGluc2lkZSB0aGUgYnVmZmVyLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4KKworICAgTm90ZTogc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGFsbG9jYXRlZCBieXRlcyBpbiB0aGUgd3JpdGVyLgorCisgICBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgdXNlIHRoZSB3cml0ZXIgbWluaW11bSBzaXplIChtaW5fc2l6ZSBhdHRyaWJ1dGUpLgorCisgICBTZWUgYWxzbyBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCkuCisgICAqLworUHlBUElfRlVOQyh2b2lkKikgX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgdm9pZCAqc3RyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisKKy8qIFdyaXRlIGJ5dGVzLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICB2b2lkICpzdHIsCisgICAgY29uc3Qgdm9pZCAqYnl0ZXMsCisgICAgUHlfc3NpemVfdCBzaXplKTsKKyNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NldmFsLmggYi9JbmNsdWRlL2NldmFsLmgKaW5kZXggYjUzNzNhOS4uODljNjA2MiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jZXZhbC5oCisrKyBiL0luY2x1ZGUvY2V2YWwuaApAQCAtOCw3ICs4LDcgQEAKIC8qIEludGVyZmFjZSB0byByYW5kb20gcGFydHMgaW4gY2V2YWwuYyAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKAotICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworICAgIFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncyk7CiAKIC8qIElubGluZSB0aGlzICovCiAjZGVmaW5lIFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsYXJnKSBcCkBAIC0yNSw2ICsyNSwxMCBAQAogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfU2V0VHJhY2UoUHlfdHJhY2VmdW5jLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5RXZhbF9TZXRDb3JvdXRpbmVXcmFwcGVyKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlFdmFsX0dldENvcm91dGluZVdyYXBwZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0QXN5bmNHZW5GaXJzdGl0ZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIodm9pZCk7CiAjZW5kaWYKIAogc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KQEAgLTExOSw2ICsxMjMsOSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfR2V0Q2FsbFN0YXRzKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUV2YWxfRXZhbEZyYW1lKHN0cnVjdCBfZnJhbWUgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXZhbF9FdmFsRnJhbWVFeChzdHJ1Y3QgX2ZyYW1lICpmLCBpbnQgZXhjKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KHN0cnVjdCBfZnJhbWUgKmYsIGludCBleGMpOworI2VuZGlmCiAKIC8qIEludGVyZmFjZSBmb3IgdGhyZWFkcy4KIApAQCAtMTcyLDcgKzE3OSw5IEBACiAKIFB5QVBJX0ZVTkMoaW50KSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0luaXRUaHJlYWRzKHZvaWQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX0ZpbmlUaHJlYWRzKHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogUHlBUElfRlVOQyh2b2lkKSBQeUV2YWxfQWNxdWlyZUxvY2sodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RXZhbF9SZWxlYXNlTG9jayh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFdmFsX0FjcXVpcmVUaHJlYWQoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKQEAgLTE4NCw2ICsxOTMsMTAgQEAKIFB5QVBJX0ZVTkModW5zaWduZWQgbG9uZykgX1B5RXZhbF9HZXRTd2l0Y2hJbnRlcnZhbCh2b2lkKTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4KGZyZWVmdW5jKTsKKyNlbmRpZgorCiAjZGVmaW5lIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgeyBcCiAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpfc2F2ZTsgXAogICAgICAgICAgICAgICAgICAgICAgICAgX3NhdmUgPSBQeUV2YWxfU2F2ZVRocmVhZCgpOwpAQCAtMjA2LDYgKzIxOSwxNCBAQAogUHlBUElfRlVOQyh2b2lkKSBfUHlFdmFsX1NpZ25hbEFzeW5jRXhjKHZvaWQpOwogI2VuZGlmCiAKKy8qIE1hc2tzIGFuZCB2YWx1ZXMgdXNlZCBieSBGT1JNQVRfVkFMVUUgb3Bjb2RlLiAqLworI2RlZmluZSBGVkNfTUFTSyAgICAgIDB4MworI2RlZmluZSBGVkNfTk9ORSAgICAgIDB4MAorI2RlZmluZSBGVkNfU1RSICAgICAgIDB4MQorI2RlZmluZSBGVkNfUkVQUiAgICAgIDB4MgorI2RlZmluZSBGVkNfQVNDSUkgICAgIDB4MworI2RlZmluZSBGVlNfTUFTSyAgICAgIDB4NAorI2RlZmluZSBGVlNfSEFWRV9TUEVDIDB4NAogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29kZS5oIGIvSW5jbHVkZS9jb2RlLmgKaW5kZXggOGVjZjM4YS4uMDYxOTAyOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb2RlLmgKKysrIGIvSW5jbHVkZS9jb2RlLmgKQEAgLTcsNiArNywxNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAordHlwZWRlZiB1aW50MTZfdCBfUHlfQ09ERVVOSVQ7CisKKyNpZmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgIGRlZmluZSBfUHlfT1BDT0RFKHdvcmQpICgod29yZCkgPj4gOCkKKyMgIGRlZmluZSBfUHlfT1BBUkcod29yZCkgKCh3b3JkKSAmIDI1NSkKKyNlbHNlCisjICBkZWZpbmUgX1B5X09QQ09ERSh3b3JkKSAoKHdvcmQpICYgMjU1KQorIyAgZGVmaW5lIF9QeV9PUEFSRyh3b3JkKSAoKHdvcmQpID4+IDgpCisjZW5kaWYKKwogLyogQnl0ZWNvZGUgb2JqZWN0ICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTUsNiArMjUsNyBAQAogICAgIGludCBjb19ubG9jYWxzOwkJLyogI2xvY2FsIHZhcmlhYmxlcyAqLwogICAgIGludCBjb19zdGFja3NpemU7CQkvKiAjZW50cmllcyBuZWVkZWQgZm9yIGV2YWx1YXRpb24gc3RhY2sgKi8KICAgICBpbnQgY29fZmxhZ3M7CQkvKiBDT18uLi4sIHNlZSBiZWxvdyAqLworICAgIGludCBjb19maXJzdGxpbmVubzsgICAvKiBmaXJzdCBzb3VyY2UgbGluZSBudW1iZXIgKi8KICAgICBQeU9iamVjdCAqY29fY29kZTsJCS8qIGluc3RydWN0aW9uIG9wY29kZXMgKi8KICAgICBQeU9iamVjdCAqY29fY29uc3RzOwkvKiBsaXN0IChjb25zdGFudHMgdXNlZCkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZXM7CQkvKiBsaXN0IG9mIHN0cmluZ3MgKG5hbWVzIHVzZWQpICovCkBAIC0zMCwxMSArNDEsMTQgQEAKICAgICB1bnNpZ25lZCBjaGFyICpjb19jZWxsMmFyZzsgLyogTWFwcyBjZWxsIHZhcnMgd2hpY2ggYXJlIGFyZ3VtZW50cy4gKi8KICAgICBQeU9iamVjdCAqY29fZmlsZW5hbWU7CS8qIHVuaWNvZGUgKHdoZXJlIGl0IHdhcyBsb2FkZWQgZnJvbSkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZTsJCS8qIHVuaWNvZGUgKG5hbWUsIGZvciByZWZlcmVuY2UpICovCi0gICAgaW50IGNvX2ZpcnN0bGluZW5vOwkJLyogZmlyc3Qgc291cmNlIGxpbmUgbnVtYmVyICovCiAgICAgUHlPYmplY3QgKmNvX2xub3RhYjsJLyogc3RyaW5nIChlbmNvZGluZyBhZGRyPC0+bGluZW5vIG1hcHBpbmcpIFNlZQogCQkJCSAgIE9iamVjdHMvbG5vdGFiX25vdGVzLnR4dCBmb3IgZGV0YWlscy4gKi8KICAgICB2b2lkICpjb196b21iaWVmcmFtZTsgICAgIC8qIGZvciBvcHRpbWl6YXRpb24gb25seSAoc2VlIGZyYW1lb2JqZWN0LmMpICovCiAgICAgUHlPYmplY3QgKmNvX3dlYWtyZWZsaXN0OyAgIC8qIHRvIHN1cHBvcnQgd2Vha3JlZnMgdG8gY29kZSBvYmplY3RzICovCisgICAgLyogU2NyYXRjaCBzcGFjZSBmb3IgZXh0cmEgZGF0YSByZWxhdGluZyB0byB0aGUgY29kZSBvYmplY3QuX19pY2NfbmFuCisgICAgICAgVHlwZSBpcyBhIHZvaWQqIHRvIGtlZXAgdGhlIGZvcm1hdCBwcml2YXRlIGluIGNvZGVvYmplY3QuYyB0byBmb3JjZQorICAgICAgIHBlb3BsZSB0byBnbyB0aHJvdWdoIHRoZSBwcm9wZXIgQVBJcy4gKi8KKyAgICB2b2lkICpjb19leHRyYTsKIH0gUHlDb2RlT2JqZWN0OwogCiAvKiBNYXNrcyBmb3IgY29fZmxhZ3MgYWJvdmUgKi8KQEAgLTU1LDYgKzY5LDcgQEAKICAgIGBgYXN5bmMgZGVmYGAga2V5d29yZHMpICovCiAjZGVmaW5lIENPX0NPUk9VVElORSAgICAgICAgICAgIDB4MDA4MAogI2RlZmluZSBDT19JVEVSQUJMRV9DT1JPVVRJTkUgICAweDAxMDAKKyNkZWZpbmUgQ09fQVNZTkNfR0VORVJBVE9SICAgICAgMHgwMjAwCiAKIC8qIFRoZXNlIGFyZSBubyBsb25nZXIgdXNlZC4gKi8KICNpZiAwCkBAIC0xMjYsNyArMTQxLDE1IEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5Q29kZV9PcHRpbWl6ZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QqIGNvbnN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzLCBQeU9iamVjdCAqbGluZW5vX29iaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcywgUHlPYmplY3QgKmxub3RhYik7CisKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhpbnQpIF9QeUNvZGVfR2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqZXh0cmEpOworUHlBUElfRlVOQyhpbnQpIF9QeUNvZGVfU2V0RXh0cmEoUHlPYmplY3QgKmNvZGUsIFB5X3NzaXplX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpleHRyYSk7CisjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2RhdGV0aW1lLmggYi9JbmNsdWRlL2RhdGV0aW1lLmgKaW5kZXggMDZjYmM0YS4uM2JmMzVjYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kYXRldGltZS5oCisrKyBiL0luY2x1ZGUvZGF0ZXRpbWUuaApAQCAtODEsNiArODEsNyBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgICBfUHlEYXRlVGltZV9USU1FSEVBRAorICAgIHVuc2lnbmVkIGNoYXIgZm9sZDsKICAgICBQeU9iamVjdCAqdHppbmZvOwogfSBQeURhdGVUaW1lX1RpbWU7ICAgICAgICAgICAgICAvKiBoYXN0emluZm8gdHJ1ZSAqLwogCkBAIC0xMDgsNiArMTA5LDcgQEAKIHR5cGVkZWYgc3RydWN0CiB7CiAgICAgX1B5RGF0ZVRpbWVfREFURVRJTUVIRUFECisgICAgdW5zaWduZWQgY2hhciBmb2xkOwogICAgIFB5T2JqZWN0ICp0emluZm87CiB9IFB5RGF0ZVRpbWVfRGF0ZVRpbWU7ICAgICAgICAgIC8qIGhhc3R6aW5mbyB0cnVlICovCiAKQEAgLTEyNSw2ICsxMjcsNyBAQAogICAgICgoKChQeURhdGVUaW1lX0RhdGVUaW1lKilvKS0+ZGF0YVs3XSA8PCAxNikgfCAgICAgICBcCiAgICAgICgoKFB5RGF0ZVRpbWVfRGF0ZVRpbWUqKW8pLT5kYXRhWzhdIDw8IDgpICB8ICAgICAgIFwKICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmRhdGFbOV0pCisjZGVmaW5lIFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRChvKSAgICAgICAgKCgoUHlEYXRlVGltZV9EYXRlVGltZSopbyktPmZvbGQpCiAKIC8qIEFwcGx5IGZvciB0aW1lIGluc3RhbmNlcy4gKi8KICNkZWZpbmUgUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSKG8pICAgICAgICAoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzBdKQpAQCAtMTM0LDYgKzEzNyw3IEBACiAgICAgKCgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbM10gPDwgMTYpIHwgICAgICAgICAgIFwKICAgICAgKCgoUHlEYXRlVGltZV9UaW1lKilvKS0+ZGF0YVs0XSA8PCA4KSAgfCAgICAgICAgICAgXAogICAgICAgKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzVdKQorI2RlZmluZSBQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQobykgICAgICAgICgoKFB5RGF0ZVRpbWVfVGltZSopbyktPmZvbGQpCiAKIC8qIEFwcGx5IGZvciB0aW1lIGRlbHRhIGluc3RhbmNlcyAqLwogI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTKG8pICAgICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPmRheXMpCkBAIC0xNjIsNiArMTY2LDExIEBACiAgICAgUHlPYmplY3QgKigqRGF0ZVRpbWVfRnJvbVRpbWVzdGFtcCkoUHlPYmplY3QqLCBQeU9iamVjdCosIFB5T2JqZWN0Kik7CiAgICAgUHlPYmplY3QgKigqRGF0ZV9Gcm9tVGltZXN0YW1wKShQeU9iamVjdCosIFB5T2JqZWN0Kik7CiAKKyAgICAvKiBQRVAgNDk1IGNvbnN0cnVjdG9ycyAqLworICAgIFB5T2JqZWN0ICooKkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZUFuZEZvbGQpKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwKKyAgICAgICAgUHlPYmplY3QqLCBpbnQsIFB5VHlwZU9iamVjdCopOworICAgIFB5T2JqZWN0ICooKlRpbWVfRnJvbVRpbWVBbmRGb2xkKShpbnQsIGludCwgaW50LCBpbnQsIFB5T2JqZWN0KiwgaW50LCBQeVR5cGVPYmplY3QqKTsKKwogfSBQeURhdGVUaW1lX0NBUEk7CiAKICNkZWZpbmUgUHlEYXRlVGltZV9DQVBTVUxFX05BTUUgImRhdGV0aW1lLmRhdGV0aW1lX0NBUEkiCkBAIC0yMTcsMTAgKzIyNiwxOCBAQAogICAgIFB5RGF0ZVRpbWVBUEktPkRhdGVUaW1lX0Zyb21EYXRlQW5kVGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBcCiAgICAgICAgIG1pbiwgc2VjLCB1c2VjLCBQeV9Ob25lLCBQeURhdGVUaW1lQVBJLT5EYXRlVGltZVR5cGUpCiAKKyNkZWZpbmUgUHlEYXRlVGltZV9Gcm9tRGF0ZUFuZFRpbWVBbmRGb2xkKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjLCB1c2VjLCBmb2xkKSBcCisgICAgUHlEYXRlVGltZUFQSS0+RGF0ZVRpbWVfRnJvbURhdGVBbmRUaW1lQW5kRm9sZCh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBcCisgICAgICAgIG1pbiwgc2VjLCB1c2VjLCBQeV9Ob25lLCBmb2xkLCBQeURhdGVUaW1lQVBJLT5EYXRlVGltZVR5cGUpCisKICNkZWZpbmUgUHlUaW1lX0Zyb21UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSBcCiAgICAgUHlEYXRlVGltZUFQSS0+VGltZV9Gcm9tVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgXAogICAgICAgICBQeV9Ob25lLCBQeURhdGVUaW1lQVBJLT5UaW1lVHlwZSkKIAorI2RlZmluZSBQeVRpbWVfRnJvbVRpbWVBbmRGb2xkKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSBcCisgICAgUHlEYXRlVGltZUFQSS0+VGltZV9Gcm9tVGltZUFuZEZvbGQoaG91ciwgbWludXRlLCBzZWNvbmQsIHVzZWNvbmQsIFwKKyAgICAgICAgUHlfTm9uZSwgZm9sZCwgUHlEYXRlVGltZUFQSS0+VGltZVR5cGUpCisKICNkZWZpbmUgUHlEZWx0YV9Gcm9tRFNVKGRheXMsIHNlY29uZHMsIHVzZWNvbmRzKSBcCiAgICAgUHlEYXRlVGltZUFQSS0+RGVsdGFfRnJvbURlbHRhKGRheXMsIHNlY29uZHMsIHVzZWNvbmRzLCAxLCBcCiAgICAgICAgIFB5RGF0ZVRpbWVBUEktPkRlbHRhVHlwZSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGVzY3JvYmplY3QuaCBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaAppbmRleCBlMmJhOTdmLi44ZjNlODRjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kZXNjcm9iamVjdC5oCkBAIC03OCw3ICs3OCw5IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlNZXRob2REZXNjcl9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5V3JhcHBlckRlc2NyX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlEaWN0UHJveHlfVHlwZTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlNZXRob2RXcmFwcGVyX1R5cGU7CisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURlc2NyX05ld01ldGhvZChQeVR5cGVPYmplY3QgKiwgUHlNZXRob2REZWYgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2QoUHlUeXBlT2JqZWN0ICosIFB5TWV0aG9kRGVmICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBiYTkwYWFmLi4zMGYxMTRlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMjIsOCArMjIsMjEgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKKworICAgIC8qIE51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqLwogICAgIFB5X3NzaXplX3QgbWFfdXNlZDsKKworICAgIC8qIERpY3Rpb25hcnkgdmVyc2lvbjogZ2xvYmFsbHkgdW5pcXVlLCB2YWx1ZSBjaGFuZ2UgZWFjaCB0aW1lCisgICAgICAgdGhlIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQgKi8KKyAgICB1aW50NjRfdCBtYV92ZXJzaW9uX3RhZzsKKwogICAgIFB5RGljdEtleXNPYmplY3QgKm1hX2tleXM7CisKKyAgICAvKiBJZiBtYV92YWx1ZXMgaXMgTlVMTCwgdGhlIHRhYmxlIGlzICJjb21iaW5lZCI6IGtleXMgYW5kIHZhbHVlcworICAgICAgIGFyZSBzdG9yZWQgaW4gbWFfa2V5cy4KKworICAgICAgIElmIG1hX3ZhbHVlcyBpcyBub3QgTlVMTCwgdGhlIHRhYmxlIGlzIHNwbGl0dGVkOgorICAgICAgIGtleXMgYXJlIHN0b3JlZCBpbiBtYV9rZXlzIGFuZCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiBtYV92YWx1ZXMgKi8KICAgICBQeU9iamVjdCAqKm1hX3ZhbHVlczsKIH0gUHlEaWN0T2JqZWN0OwogCkBAIC02MCw5ICs3Myw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCk7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWRXaXRoRXJyb3IoUHlPYmplY3QgKmRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9TZXREZWZhdWx0KAogICAgIFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmF1bHRvYmopOwogI2VuZGlmCkBAIC05OSw3ICsxMTIsNyBAQAogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfSGFzT25seVN0cmluZ0tleXMoUHlPYmplY3QgKm1wKTsKIFB5X3NzaXplX3QgX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKTsKIFB5X3NzaXplX3QgX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICopOwotUHlPYmplY3QgKl9QeURpY3RfUG9wKFB5RGljdE9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9Qb3AoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeU9iamVjdCAqX1B5RGljdF9Gcm9tS2V5cyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKICNkZWZpbmUgX1B5RGljdF9IYXNTcGxpdFRhYmxlKGQpICgoZCktPm1hX3ZhbHVlcyAhPSBOVUxMKQogCkBAIC0xMTksNiArMTMyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdmVycmlkZSk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIExpa2UgUHlEaWN0X01lcmdlLCBidXQgb3ZlcnJpZGUgY2FuIGJlIDAsIDEgb3IgMi4gIElmIG92ZXJyaWRlIGlzIDAsCisgICB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIGtleSB3aW5zLCBpZiBvdmVycmlkZSBpcyAxLCB0aGUgbGFzdCBvY2N1cnJlbmNlCisgICBvZiBhIGtleSB3aW5zLCBpZiBvdmVycmlkZSBpcyAyLCBhIEtleUVycm9yIHdpdGggY29uZmxpY3Rpbmcga2V5IGFzCisgICBhcmd1bWVudCBpcyByYWlzZWQuCisqLworUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfTWVyZ2VFeChQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICpvdGhlciwgaW50IG92ZXJyaWRlKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdFZpZXdfSW50ZXJzZWN0KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqb3RoZXIpOwogI2VuZGlmCiAKQEAgLTEzMiw5ICsxNTEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ZlcnJpZGUpOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXksIFB5T2JqZWN0ICppdGVtKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X1NldEl0ZW1JZChQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X0RlbEl0ZW1TdHJpbmcoUHlPYmplY3QgKmRwLCBjb25zdCBjaGFyICprZXkpOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZpbGVvYmplY3QuaCBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCmluZGV4IDAzMTU1ZDMuLjAzOTg0YmEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZmlsZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvZmlsZW9iamVjdC5oCkBAIC0yMyw2ICsyMyw3IEBACiAgICBJZiBub24tTlVMTCwgdGhpcyBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgZGVmYXVsdCBlbmNvZGluZyBmb3Igc3RyaW5ncwogKi8KIFB5QVBJX0RBVEEoY29uc3QgY2hhciAqKSBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nOworUHlBUElfREFUQShjb25zdCBjaGFyICopIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzOwogUHlBUElfREFUQShpbnQpIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc7CiAKIC8qIEludGVybmFsIEFQSQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxldXRpbHMuaCBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKaW5kZXggYjRhNjgzYy4uNDAxNjQzMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxldXRpbHMuaAorKysgYi9JbmNsdWRlL2ZpbGV1dGlscy5oCkBAIC01LDggKzUsNiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfZGV2aWNlX2VuY29kaW5nKGludCk7Ci0KIFB5QVBJX0ZVTkMod2NoYXJfdCAqKSBQeV9EZWNvZGVMb2NhbGUoCiAgICAgY29uc3QgY2hhciAqYXJnLAogICAgIHNpemVfdCAqc2l6ZSk7CkBAIC0xNyw2ICsxNSw4IEBACiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfZGV2aWNlX2VuY29kaW5nKGludCk7CisKICNpZmRlZiBNU19XSU5ET1dTCiBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHsKICAgICB1bnNpZ25lZCBsb25nIHN0X2RldjsKQEAgLTQ2LDEzICs0NiwxMSBAQAogUHlBUElfRlVOQyhpbnQpIF9QeV9mc3RhdF9ub3JhaXNlKAogICAgIGludCBmZCwKICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpzdGF0dXMpOwotI2VuZGlmICAgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogUHlBUElfRlVOQyhpbnQpIF9QeV9zdGF0KAogICAgIFB5T2JqZWN0ICpwYXRoLAogICAgIHN0cnVjdCBzdGF0ICpzdGF0dXMpOwogCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5X29wZW4oCiAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsCiAgICAgaW50IGZsYWdzKTsKQEAgLTYwLDcgKzU4LDYgQEAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfb3Blbl9ub3JhaXNlKAogICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLAogICAgIGludCBmbGFncyk7Ci0jZW5kaWYKIAogUHlBUElfRlVOQyhGSUxFICopIF9QeV93Zm9wZW4oCiAgICAgY29uc3Qgd2NoYXJfdCAqcGF0aCwKQEAgLTEwNyw3ICsxMDQsNiBAQAogICAgIHdjaGFyX3QgKmJ1ZiwKICAgICBzaXplX3Qgc2l6ZSk7CiAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlfZ2V0X2luaGVyaXRhYmxlKGludCBmZCk7CiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlfc2V0X2luaGVyaXRhYmxlKGludCBmZCwgaW50IGluaGVyaXRhYmxlLApAQCAtMTIxLDE4ICsxMTcsNiBAQAogUHlBUElfRlVOQyhpbnQpIF9QeV9zZXRfYmxvY2tpbmcoaW50IGZkLCBpbnQgYmxvY2tpbmcpOwogI2VuZGlmICAgLyogIU1TX1dJTkRPV1MgKi8KIAotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8qIEEgcm91dGluZSB0byBjaGVjayBpZiBhIGZpbGUgZGVzY3JpcHRvciBpcyB2YWxpZCBvbiBXaW5kb3dzLiAgUmV0dXJucyAwCi0gKiBhbmQgc2V0cyBlcnJubyB0byBFQkFERiBpZiBpdCBpc24ndC4gIFRoaXMgaXMgdG8gYXZvaWQgQXNzZXJ0aW9ucwotICogZnJvbSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiB0aGUgV2luZG93cyBDUlQgYmVnaW5uaW5nIHdpdGgKLSAqIFZpc3VhbCBTdHVkaW8gMjAwNQotICovCi1pbnQgX1B5VmVyaWZ5X2ZkKGludCBmZCk7Ci0KLSNlbHNlCi0jZGVmaW5lIF9QeVZlcmlmeV9mZChBKSAoMSkgLyogZHVtbXkgKi8KLSNlbmRpZgotCiAjZW5kaWYgICAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmxvYXRvYmplY3QuaCBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaAppbmRleCBlMjQwZmRiLi5mMTA0NGQ2IDEwMDY0NAotLS0gYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mbG9hdG9iamVjdC5oCkBAIC03NCw5ICs3NCw5IEBACiAgKiBoYXBwZW5zIGluIHN1Y2ggY2FzZXMgaXMgcGFydGx5IGFjY2lkZW50YWwgKGFsYXMpLgogICovCiAKLS8qIFRoZSBwYWNrIHJvdXRpbmVzIHdyaXRlIDQgb3IgOCBieXRlcywgc3RhcnRpbmcgYXQgcC4gIGxlIGlzIGEgYm9vbAorLyogVGhlIHBhY2sgcm91dGluZXMgd3JpdGUgMiwgNCBvciA4IGJ5dGVzLCBzdGFydGluZyBhdCBwLiAgbGUgaXMgYSBib29sCiAgKiBhcmd1bWVudCwgdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgc3RyaW5nIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0IChleHBvbmVudAotICogbGFzdCwgYXQgcCszIG9yIHArNyksIGZhbHNlIGlmIHlvdSB3YW50IGJpZy1lbmRpYW4gZm9ybWF0IChleHBvbmVudAorICogbGFzdCwgYXQgcCsxLCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgeW91IHdhbnQgYmlnLWVuZGlhbiBmb3JtYXQgKGV4cG9uZW50CiAgKiBmaXJzdCwgYXQgcCkuCiAgKiBSZXR1cm4gdmFsdWU6ICAwIGlmIGFsbCBpcyBPSywgLTEgaWYgZXJyb3IgKGFuZCBhbiBleGNlcHRpb24gaXMKICAqIHNldCwgbW9zdCBsaWtlbHkgT3ZlcmZsb3dFcnJvcikuCkBAIC04NCw2ICs4NCw3IEBACiAgKiAxKTogIFdoYXQgdGhpcyBkb2VzIGlzIHVuZGVmaW5lZCBpZiB4IGlzIGEgTmFOIG9yIGluZmluaXR5LgogICogMik6ICAtMC4wIGFuZCArMC4wIHByb2R1Y2UgdGhlIHNhbWUgc3RyaW5nLgogICovCitQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazIoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazQoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiBQeUFQSV9GVU5DKGludCkgX1B5RmxvYXRfUGFjazgoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiAKQEAgLTk2LDE0ICs5NywxNSBAQAogUHlBUElfRlVOQyhpbnQpIF9QeUZsb2F0X0RpZ2l0cyhjaGFyICpidWYsIGRvdWJsZSB2LCBpbnQgKnNpZ251bSk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUZsb2F0X0RpZ2l0c0luaXQodm9pZCk7CiAKLS8qIFRoZSB1bnBhY2sgcm91dGluZXMgcmVhZCA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKKy8qIFRoZSB1bnBhY2sgcm91dGluZXMgcmVhZCAyLCA0IG9yIDggYnl0ZXMsIHN0YXJ0aW5nIGF0IHAuICBsZSBpcyBhIGJvb2wKICAqIGFyZ3VtZW50LCB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQgKGV4cG9uZW50Ci0gKiBsYXN0LCBhdCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgYmlnLWVuZGlhbiAoZXhwb25lbnQgZmlyc3QsIGF0IHApLgorICogbGFzdCwgYXQgcCsxLCBwKzMgb3IgcCs3KSwgZmFsc2UgaWYgYmlnLWVuZGlhbiAoZXhwb25lbnQgZmlyc3QsIGF0IHApLgogICogUmV0dXJuIHZhbHVlOiAgVGhlIHVucGFja2VkIGRvdWJsZS4gIE9uIGVycm9yLCB0aGlzIGlzIC0xLjAgYW5kCiAgKiBQeUVycl9PY2N1cnJlZCgpIGlzIHRydWUgKGFuZCBhbiBleGNlcHRpb24gaXMgc2V0LCBtb3N0IGxpa2VseQogICogT3ZlcmZsb3dFcnJvcikuICBOb3RlIHRoYXQgb24gYSBub24tSUVFRSBwbGF0Zm9ybSB0aGlzIHdpbGwgcmVmdXNlCiAgKiB0byB1bnBhY2sgYSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGEgTmFOIG9yIGluZmluaXR5LgogICovCitQeUFQSV9GVU5DKGRvdWJsZSkgX1B5RmxvYXRfVW5wYWNrMihjb25zdCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpOwogUHlBUElfRlVOQyhkb3VibGUpIF9QeUZsb2F0X1VucGFjazQoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKTsKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlGbG9hdF9VbnBhY2s4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSk7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZnVuY29iamVjdC5oIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKaW5kZXggY2MxNDI2Yy4uNzdiYjhjMyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mdW5jb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mdW5jb2JqZWN0LmgKQEAgLTU4LDYgKzU4LDIwIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0QW5ub3RhdGlvbnMoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyhQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlGdW5jdGlvbl9GYXN0Q2FsbERpY3QoCisgICAgUHlPYmplY3QgKmZ1bmMsCisgICAgUHlPYmplY3QgKiphcmdzLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3YXJncyk7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcygKKyAgICBQeU9iamVjdCAqZnVuYywKKyAgICBQeU9iamVjdCAqKnN0YWNrLAorICAgIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgUHlPYmplY3QgKmt3bmFtZXMpOworI2VuZGlmCisKIC8qIE1hY3JvcyBmb3IgZGlyZWN0IGFjY2VzcyB0byB0aGVzZSB2YWx1ZXMuIFR5cGUgY2hlY2tzIGFyZSAqbm90KgogICAgZG9uZSwgc28gdXNlIHdpdGggY2FyZS4gKi8KICNkZWZpbmUgUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSBcCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dlbm9iamVjdC5oIGIvSW5jbHVkZS9nZW5vYmplY3QuaAppbmRleCAxZmYzMmE4Li4xZWU0ZmQ1IDEwMDY0NAotLS0gYS9JbmNsdWRlL2dlbm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZ2Vub2JqZWN0LmgKQEAgLTQyLDcgKzQyLDcgQEAKICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKTsKIFB5QVBJX0ZVTkMoaW50KSBQeUdlbl9OZWVkc0ZpbmFsaXppbmcoUHlHZW5PYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqKTsKLVB5T2JqZWN0ICpfUHlHZW5fU2VuZChQeUdlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeU9iamVjdCAqX1B5R2VuX3lmKFB5R2VuT2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlHZW5fRmluYWxpemUoUHlPYmplY3QgKnNlbGYpOwogCkBAIC02MSw2ICs2MSwzNyBAQAogUHlPYmplY3QgKl9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihQeU9iamVjdCAqbyk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q29yb19OZXcoc3RydWN0IF9mcmFtZSAqLAogICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpOworCisvKiBBc3luY2hyb25vdXMgR2VuZXJhdG9ycyAqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgX1B5R2VuT2JqZWN0X0hFQUQoYWcpCisgICAgUHlPYmplY3QgKmFnX2ZpbmFsaXplcjsKKworICAgIC8qIEZsYWcgaXMgc2V0IHRvIDEgd2hlbiBob29rcyBzZXQgdXAgYnkgc3lzLnNldF9hc3luY2dlbl9ob29rcworICAgICAgIHdlcmUgY2FsbGVkIG9uIHRoZSBnZW5lcmF0b3IsIHRvIGF2b2lkIGNhbGxpbmcgdGhlbSBtb3JlCisgICAgICAgdGhhbiBvbmNlLiAqLworICAgIGludCBhZ19ob29rc19pbml0ZWQ7CisKKyAgICAvKiBGbGFnIGlzIHNldCB0byAxIHdoZW4gYWNsb3NlKCkgaXMgY2FsbGVkIGZvciB0aGUgZmlyc3QgdGltZSwgb3IKKyAgICAgICB3aGVuIGEgU3RvcEFzeW5jSXRlcmF0aW9uIGV4Y2VwdGlvbiBpcyByYWlzZWQuICovCisgICAgaW50IGFnX2Nsb3NlZDsKK30gUHlBc3luY0dlbk9iamVjdDsKKworUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5QXN5bmNHZW5fVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbkFTZW5kX1R5cGU7CitQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZTsKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlBc3luY0dlbkFUaHJvd19UeXBlOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5QXN5bmNHZW5fTmV3KHN0cnVjdCBfZnJhbWUgKiwKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKTsKKworI2RlZmluZSBQeUFzeW5jR2VuX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlBc3luY0dlbl9UeXBlKQorCitQeU9iamVjdCAqX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcoUHlPYmplY3QgKik7CisKK2ludCBQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKHZvaWQpOworCiAjZW5kaWYKIAogI3VuZGVmIF9QeUdlbk9iamVjdF9IRUFECmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1pbml0LmggYi9JbmNsdWRlL2dyYW1pbml0LmgKaW5kZXggZDAzMGJjMy4uZTliNGE5MyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtaW5pdC5oCisrKyBiL0luY2x1ZGUvZ3JhbWluaXQuaApAQCAtMTcsNzEgKzE3LDcyIEBACiAjZGVmaW5lIHNpbXBsZV9zdG10IDI3MAogI2RlZmluZSBzbWFsbF9zdG10IDI3MQogI2RlZmluZSBleHByX3N0bXQgMjcyCi0jZGVmaW5lIHRlc3RsaXN0X3N0YXJfZXhwciAyNzMKLSNkZWZpbmUgYXVnYXNzaWduIDI3NAotI2RlZmluZSBkZWxfc3RtdCAyNzUKLSNkZWZpbmUgcGFzc19zdG10IDI3NgotI2RlZmluZSBmbG93X3N0bXQgMjc3Ci0jZGVmaW5lIGJyZWFrX3N0bXQgMjc4Ci0jZGVmaW5lIGNvbnRpbnVlX3N0bXQgMjc5Ci0jZGVmaW5lIHJldHVybl9zdG10IDI4MAotI2RlZmluZSB5aWVsZF9zdG10IDI4MQotI2RlZmluZSByYWlzZV9zdG10IDI4MgotI2RlZmluZSBpbXBvcnRfc3RtdCAyODMKLSNkZWZpbmUgaW1wb3J0X25hbWUgMjg0Ci0jZGVmaW5lIGltcG9ydF9mcm9tIDI4NQotI2RlZmluZSBpbXBvcnRfYXNfbmFtZSAyODYKLSNkZWZpbmUgZG90dGVkX2FzX25hbWUgMjg3Ci0jZGVmaW5lIGltcG9ydF9hc19uYW1lcyAyODgKLSNkZWZpbmUgZG90dGVkX2FzX25hbWVzIDI4OQotI2RlZmluZSBkb3R0ZWRfbmFtZSAyOTAKLSNkZWZpbmUgZ2xvYmFsX3N0bXQgMjkxCi0jZGVmaW5lIG5vbmxvY2FsX3N0bXQgMjkyCi0jZGVmaW5lIGFzc2VydF9zdG10IDI5MwotI2RlZmluZSBjb21wb3VuZF9zdG10IDI5NAotI2RlZmluZSBhc3luY19zdG10IDI5NQotI2RlZmluZSBpZl9zdG10IDI5NgotI2RlZmluZSB3aGlsZV9zdG10IDI5NwotI2RlZmluZSBmb3Jfc3RtdCAyOTgKLSNkZWZpbmUgdHJ5X3N0bXQgMjk5Ci0jZGVmaW5lIHdpdGhfc3RtdCAzMDAKLSNkZWZpbmUgd2l0aF9pdGVtIDMwMQotI2RlZmluZSBleGNlcHRfY2xhdXNlIDMwMgotI2RlZmluZSBzdWl0ZSAzMDMKLSNkZWZpbmUgdGVzdCAzMDQKLSNkZWZpbmUgdGVzdF9ub2NvbmQgMzA1Ci0jZGVmaW5lIGxhbWJkZWYgMzA2Ci0jZGVmaW5lIGxhbWJkZWZfbm9jb25kIDMwNwotI2RlZmluZSBvcl90ZXN0IDMwOAotI2RlZmluZSBhbmRfdGVzdCAzMDkKLSNkZWZpbmUgbm90X3Rlc3QgMzEwCi0jZGVmaW5lIGNvbXBhcmlzb24gMzExCi0jZGVmaW5lIGNvbXBfb3AgMzEyCi0jZGVmaW5lIHN0YXJfZXhwciAzMTMKLSNkZWZpbmUgZXhwciAzMTQKLSNkZWZpbmUgeG9yX2V4cHIgMzE1Ci0jZGVmaW5lIGFuZF9leHByIDMxNgotI2RlZmluZSBzaGlmdF9leHByIDMxNwotI2RlZmluZSBhcml0aF9leHByIDMxOAotI2RlZmluZSB0ZXJtIDMxOQotI2RlZmluZSBmYWN0b3IgMzIwCi0jZGVmaW5lIHBvd2VyIDMyMQotI2RlZmluZSBhdG9tX2V4cHIgMzIyCi0jZGVmaW5lIGF0b20gMzIzCi0jZGVmaW5lIHRlc3RsaXN0X2NvbXAgMzI0Ci0jZGVmaW5lIHRyYWlsZXIgMzI1Ci0jZGVmaW5lIHN1YnNjcmlwdGxpc3QgMzI2Ci0jZGVmaW5lIHN1YnNjcmlwdCAzMjcKLSNkZWZpbmUgc2xpY2VvcCAzMjgKLSNkZWZpbmUgZXhwcmxpc3QgMzI5Ci0jZGVmaW5lIHRlc3RsaXN0IDMzMAotI2RlZmluZSBkaWN0b3JzZXRtYWtlciAzMzEKLSNkZWZpbmUgY2xhc3NkZWYgMzMyCi0jZGVmaW5lIGFyZ2xpc3QgMzMzCi0jZGVmaW5lIGFyZ3VtZW50IDMzNAotI2RlZmluZSBjb21wX2l0ZXIgMzM1Ci0jZGVmaW5lIGNvbXBfZm9yIDMzNgotI2RlZmluZSBjb21wX2lmIDMzNwotI2RlZmluZSBlbmNvZGluZ19kZWNsIDMzOAotI2RlZmluZSB5aWVsZF9leHByIDMzOQotI2RlZmluZSB5aWVsZF9hcmcgMzQwCisjZGVmaW5lIGFubmFzc2lnbiAyNzMKKyNkZWZpbmUgdGVzdGxpc3Rfc3Rhcl9leHByIDI3NAorI2RlZmluZSBhdWdhc3NpZ24gMjc1CisjZGVmaW5lIGRlbF9zdG10IDI3NgorI2RlZmluZSBwYXNzX3N0bXQgMjc3CisjZGVmaW5lIGZsb3dfc3RtdCAyNzgKKyNkZWZpbmUgYnJlYWtfc3RtdCAyNzkKKyNkZWZpbmUgY29udGludWVfc3RtdCAyODAKKyNkZWZpbmUgcmV0dXJuX3N0bXQgMjgxCisjZGVmaW5lIHlpZWxkX3N0bXQgMjgyCisjZGVmaW5lIHJhaXNlX3N0bXQgMjgzCisjZGVmaW5lIGltcG9ydF9zdG10IDI4NAorI2RlZmluZSBpbXBvcnRfbmFtZSAyODUKKyNkZWZpbmUgaW1wb3J0X2Zyb20gMjg2CisjZGVmaW5lIGltcG9ydF9hc19uYW1lIDI4NworI2RlZmluZSBkb3R0ZWRfYXNfbmFtZSAyODgKKyNkZWZpbmUgaW1wb3J0X2FzX25hbWVzIDI4OQorI2RlZmluZSBkb3R0ZWRfYXNfbmFtZXMgMjkwCisjZGVmaW5lIGRvdHRlZF9uYW1lIDI5MQorI2RlZmluZSBnbG9iYWxfc3RtdCAyOTIKKyNkZWZpbmUgbm9ubG9jYWxfc3RtdCAyOTMKKyNkZWZpbmUgYXNzZXJ0X3N0bXQgMjk0CisjZGVmaW5lIGNvbXBvdW5kX3N0bXQgMjk1CisjZGVmaW5lIGFzeW5jX3N0bXQgMjk2CisjZGVmaW5lIGlmX3N0bXQgMjk3CisjZGVmaW5lIHdoaWxlX3N0bXQgMjk4CisjZGVmaW5lIGZvcl9zdG10IDI5OQorI2RlZmluZSB0cnlfc3RtdCAzMDAKKyNkZWZpbmUgd2l0aF9zdG10IDMwMQorI2RlZmluZSB3aXRoX2l0ZW0gMzAyCisjZGVmaW5lIGV4Y2VwdF9jbGF1c2UgMzAzCisjZGVmaW5lIHN1aXRlIDMwNAorI2RlZmluZSB0ZXN0IDMwNQorI2RlZmluZSB0ZXN0X25vY29uZCAzMDYKKyNkZWZpbmUgbGFtYmRlZiAzMDcKKyNkZWZpbmUgbGFtYmRlZl9ub2NvbmQgMzA4CisjZGVmaW5lIG9yX3Rlc3QgMzA5CisjZGVmaW5lIGFuZF90ZXN0IDMxMAorI2RlZmluZSBub3RfdGVzdCAzMTEKKyNkZWZpbmUgY29tcGFyaXNvbiAzMTIKKyNkZWZpbmUgY29tcF9vcCAzMTMKKyNkZWZpbmUgc3Rhcl9leHByIDMxNAorI2RlZmluZSBleHByIDMxNQorI2RlZmluZSB4b3JfZXhwciAzMTYKKyNkZWZpbmUgYW5kX2V4cHIgMzE3CisjZGVmaW5lIHNoaWZ0X2V4cHIgMzE4CisjZGVmaW5lIGFyaXRoX2V4cHIgMzE5CisjZGVmaW5lIHRlcm0gMzIwCisjZGVmaW5lIGZhY3RvciAzMjEKKyNkZWZpbmUgcG93ZXIgMzIyCisjZGVmaW5lIGF0b21fZXhwciAzMjMKKyNkZWZpbmUgYXRvbSAzMjQKKyNkZWZpbmUgdGVzdGxpc3RfY29tcCAzMjUKKyNkZWZpbmUgdHJhaWxlciAzMjYKKyNkZWZpbmUgc3Vic2NyaXB0bGlzdCAzMjcKKyNkZWZpbmUgc3Vic2NyaXB0IDMyOAorI2RlZmluZSBzbGljZW9wIDMyOQorI2RlZmluZSBleHBybGlzdCAzMzAKKyNkZWZpbmUgdGVzdGxpc3QgMzMxCisjZGVmaW5lIGRpY3RvcnNldG1ha2VyIDMzMgorI2RlZmluZSBjbGFzc2RlZiAzMzMKKyNkZWZpbmUgYXJnbGlzdCAzMzQKKyNkZWZpbmUgYXJndW1lbnQgMzM1CisjZGVmaW5lIGNvbXBfaXRlciAzMzYKKyNkZWZpbmUgY29tcF9mb3IgMzM3CisjZGVmaW5lIGNvbXBfaWYgMzM4CisjZGVmaW5lIGVuY29kaW5nX2RlY2wgMzM5CisjZGVmaW5lIHlpZWxkX2V4cHIgMzQwCisjZGVmaW5lIHlpZWxkX2FyZyAzNDEKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbW1hci5oIGIvSW5jbHVkZS9ncmFtbWFyLmgKaW5kZXggODUxMjBiOS4uZjc3NWY5NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ncmFtbWFyLmgKKysrIGIvSW5jbHVkZS9ncmFtbWFyLmgKQEAgLTY5LDYgKzY5LDcgQEAKIC8qIEZVTkNUSU9OUyAqLwogCiBncmFtbWFyICpuZXdncmFtbWFyKGludCBzdGFydCk7Cit2b2lkIGZyZWVncmFtbWFyKGdyYW1tYXIgKmcpOwogZGZhICphZGRkZmEoZ3JhbW1hciAqZywgaW50IHR5cGUsIGNvbnN0IGNoYXIgKm5hbWUpOwogaW50IGFkZHN0YXRlKGRmYSAqZCk7CiB2b2lkIGFkZGFyYyhkZmEgKmQsIGludCBmcm9tLCBpbnQgdG8sIGludCBsYmwpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9pbXBvcnQuaCBiL0luY2x1ZGUvaW1wb3J0LmgKaW5kZXggYWZkZmFjMi4uNDZjMGQ4ZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9pbXBvcnQuaAorKysgYi9JbmNsdWRlL2ltcG9ydC5oCkBAIC03LDcgKzcsOSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRaaXBfSW5pdCh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogUHlNT0RJTklUX0ZVTkMgUHlJbml0X2ltcCh2b2lkKTsKIFB5QVBJX0ZVTkMobG9uZykgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIodm9pZCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ludHJjaGVjay5oIGIvSW5jbHVkZS9pbnRyY2hlY2suaAppbmRleCBmNTNmZWUxLi44ZmI5NmNmIDEwMDY0NAotLS0gYS9JbmNsdWRlL2ludHJjaGVjay5oCisrKyBiL0luY2x1ZGUvaW50cmNoZWNrLmgKQEAgLTgsMTIgKzgsMTUgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0FmdGVyRm9yayh2b2lkKTsKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeU9TX0lzTWFpblRocmVhZCh2b2lkKTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKIC8qIHdpbmRvd3MuaCBpcyBub3QgaW5jbHVkZWQgYnkgUHl0aG9uLmggc28gdXNlIHZvaWQqIGluc3RlYWQgb2YgSEFORExFICovCiBQeUFQSV9GVU5DKHZvaWQqKSBfUHlPU19TaWdpbnRFdmVudCh2b2lkKTsKICNlbmRpZgorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbG9uZ2ludHJlcHIuaCBiL0luY2x1ZGUvbG9uZ2ludHJlcHIuaAppbmRleCBiYmJhNGQ4Li5hM2I3NGI0IDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdpbnRyZXByLmgKKysrIGIvSW5jbHVkZS9sb25naW50cmVwci5oCkBAIC00MiwxNCArNDIsMTAgQEAKICovCiAKICNpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAzMAotI2lmICEoZGVmaW5lZCBIQVZFX1VJTlQ2NF9UICYmIGRlZmluZWQgSEFWRV9VSU5UMzJfVCAmJiAgICAgICAgICBcCi0gICAgICBkZWZpbmVkIEhBVkVfSU5UNjRfVCAmJiBkZWZpbmVkIEhBVkVfSU5UMzJfVCkKLSNlcnJvciAiMzAtYml0IGxvbmcgZGlnaXRzIHJlcXVlc3RlZCwgYnV0IHRoZSBuZWNlc3NhcnkgdHlwZXMgYXJlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIKLSNlbmRpZgotdHlwZWRlZiBQWV9VSU5UMzJfVCBkaWdpdDsKLXR5cGVkZWYgUFlfSU5UMzJfVCBzZGlnaXQ7IC8qIHNpZ25lZCB2YXJpYW50IG9mIGRpZ2l0ICovCi10eXBlZGVmIFBZX1VJTlQ2NF9UIHR3b2RpZ2l0czsKLXR5cGVkZWYgUFlfSU5UNjRfVCBzdHdvZGlnaXRzOyAvKiBzaWduZWQgdmFyaWFudCBvZiB0d29kaWdpdHMgKi8KK3R5cGVkZWYgdWludDMyX3QgZGlnaXQ7Cit0eXBlZGVmIGludDMyX3Qgc2RpZ2l0OyAvKiBzaWduZWQgdmFyaWFudCBvZiBkaWdpdCAqLwordHlwZWRlZiB1aW50NjRfdCB0d29kaWdpdHM7Cit0eXBlZGVmIGludDY0X3Qgc3R3b2RpZ2l0czsgLyogc2lnbmVkIHZhcmlhbnQgb2YgdHdvZGlnaXRzICovCiAjZGVmaW5lIFB5TG9uZ19TSElGVAkzMAogI2RlZmluZSBfUHlMb25nX0RFQ0lNQUxfU0hJRlQJOSAvKiBtYXgoZSBzdWNoIHRoYXQgMTAqKmUgZml0cyBpbiBhIGRpZ2l0KSAqLwogI2RlZmluZSBfUHlMb25nX0RFQ0lNQUxfQkFTRQkoKGRpZ2l0KTEwMDAwMDAwMDApIC8qIDEwICoqIERFQ0lNQUxfU0hJRlQgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbG9uZ29iamVjdC5oIGIvSW5jbHVkZS9sb25nb2JqZWN0LmgKaW5kZXggMmEyZWVjZi4uZWZkNDA5YyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9sb25nb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9sb25nb2JqZWN0LmgKQEAgLTY1LDcgKzY1LDggQEAKICMgIGVycm9yICJ2b2lkKiBkaWZmZXJlbnQgaW4gc2l6ZSBmcm9tIGludCwgbG9uZyBhbmQgbG9uZyBsb25nIgogI2VuZGlmIC8qIFNJWkVPRl9WT0lEX1AgKi8KIAotLyogVXNlZCBieSBQeXRob24vbXlzdHJ0b3VsLmMuICovCisvKiBVc2VkIGJ5IFB5dGhvbi9teXN0cnRvdWwuYywgX1B5Qnl0ZXNfRnJvbUhleCgpLAorICAgX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlUmVjb2RlKCksIGV0Yy4gKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEodW5zaWduZWQgY2hhcikgX1B5TG9uZ19EaWdpdFZhbHVlWzI1Nl07CiAjZW5kaWYKQEAgLTg0LDE0ICs4NSwxMiBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVZvaWRQdHIodm9pZCAqKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeUxvbmdfQXNWb2lkUHRyKFB5T2JqZWN0ICopOwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21Mb25nTG9uZyhQWV9MT05HX0xPTkcpOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgUFlfTE9OR19MT05HKTsKLVB5QVBJX0ZVTkMoUFlfTE9OR19MT05HKSBQeUxvbmdfQXNMb25nTG9uZyhQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkModW5zaWduZWQgUFlfTE9OR19MT05HKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKFB5T2JqZWN0ICopOwotUHlBUElfRlVOQyhQWV9MT05HX0xPTkcpIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coUHlPYmplY3QgKiwgaW50ICopOwotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tTG9uZ0xvbmcobG9uZyBsb25nKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyk7CitQeUFQSV9GVU5DKGxvbmcgbG9uZykgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcgbG9uZykgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkModW5zaWduZWQgbG9uZyBsb25nKSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMobG9uZyBsb25nKSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICosIGludCAqKTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVN0cmluZyhjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCkBAIC0xODIsNiArMTgxLDEzIEBACiAgICAgaW50IGJhc2UsCiAgICAgaW50IGFsdGVybmF0ZSk7CiAKK1B5QVBJX0ZVTkMoY2hhciopIF9QeUxvbmdfRm9ybWF0Qnl0ZXNXcml0ZXIoCisgICAgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwKKyAgICBjaGFyICpzdHIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBpbnQgYmFzZSwKKyAgICBpbnQgYWx0ZXJuYXRlKTsKKwogLyogRm9ybWF0IHRoZSBvYmplY3QgYmFzZWQgb24gdGhlIGZvcm1hdF9zcGVjLCBhcyBkZWZpbmVkIGluIFBFUCAzMTAxCiAgICAoQWR2YW5jZWQgU3RyaW5nIEZvcm1hdHRpbmcpLiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeUxvbmdfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCkBAIC0xOTgsOCArMjA0LDEwIEBACiBQeUFQSV9GVU5DKHVuc2lnbmVkIGxvbmcpIFB5T1Nfc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiBQeUFQSV9GVU5DKGxvbmcpIFB5T1Nfc3RydG9sKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogRm9yIHVzZSBieSB0aGUgZ2NkIGZ1bmN0aW9uIGluIG1hdGhtb2R1bGUuYyAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0dDRChQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL21ldGhvZG9iamVjdC5oIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaAppbmRleCBlMmFkODA0Li43OWZhZDgyIDEwMDY0NAotLS0gYS9JbmNsdWRlL21ldGhvZG9iamVjdC5oCisrKyBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKQEAgLTE2LDYgKzE2LDggQEAKICNkZWZpbmUgUHlDRnVuY3Rpb25fQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlDRnVuY3Rpb25fVHlwZSkKIAogdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNGdW5jdGlvbikoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7Cit0eXBlZGVmIFB5T2JqZWN0ICooKl9QeUNGdW5jdGlvbkZhc3QpIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpOwogdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNGdW5jdGlvbldpdGhLZXl3b3JkcykoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICopOwogdHlwZWRlZiBQeU9iamVjdCAqKCpQeU5vQXJnc0Z1bmN0aW9uKShQeU9iamVjdCAqKTsKQEAgLTM3LDYgKzM5LDE4IEBACiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDRnVuY3Rpb25fQ2FsbChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlDRnVuY3Rpb25fRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLAorICAgIFB5T2JqZWN0ICoqYXJncywKKyAgICBQeV9zc2l6ZV90IG5hcmdzLAorICAgIFB5T2JqZWN0ICprd2FyZ3MpOworCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLAorICAgIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgUHlfc3NpemVfdCBuYXJncywKKyAgICBQeU9iamVjdCAqa3duYW1lcyk7CisjZW5kaWYKKwogc3RydWN0IFB5TWV0aG9kRGVmIHsKICAgICBjb25zdCBjaGFyICAqbWxfbmFtZTsgICAvKiBUaGUgbmFtZSBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24vbWV0aG9kICovCiAgICAgUHlDRnVuY3Rpb24gbWxfbWV0aDsgICAgLyogVGhlIEMgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIGl0ICovCkBAIC03Miw2ICs4Niw4IEBACiAjZGVmaW5lIE1FVEhfQ09FWElTVCAgIDB4MDA0MAogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCisjZGVmaW5lIE1FVEhfRkFTVENBTEwgIDB4MDA4MAorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5TWV0aG9kRGVmICptX21sOyAvKiBEZXNjcmlwdGlvbiBvZiB0aGUgQyBmdW5jdGlvbiB0byBjYWxsICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHN1cHBvcnQuaCBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCmluZGV4IDgyOWFhZjguLjgzM2UzM2QgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oCisrKyBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCkBAIC0xNSwxMiArMTUsMTYgQEAKICNkZWZpbmUgUHlBcmdfUGFyc2UgICAgICAgICAgICAgICAgICAgICBfUHlBcmdfUGFyc2VfU2l6ZVQKICNkZWZpbmUgUHlBcmdfUGFyc2VUdXBsZSAgICAgICAgICAgICAgICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVAogI2RlZmluZSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgICAgIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICNkZWZpbmUgUHlBcmdfVmFQYXJzZSAgICAgICAgICAgICAgICAgICBfUHlBcmdfVmFQYXJzZV9TaXplVAogI2RlZmluZSBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyAgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2RlZmluZSBQeV9CdWlsZFZhbHVlICAgICAgICAgICAgICAgICAgIF9QeV9CdWlsZFZhbHVlX1NpemVUCiAjZGVmaW5lIFB5X1ZhQnVpbGRWYWx1ZSAgICAgICAgICAgICAgICAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAogI2Vsc2UKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIHZhX2xpc3QpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogI2VuZGlmCiAKIC8qIER1ZSB0byBhIGdsaXRjaCBpbiAzLjIsIHRoZSBfU2l6ZVQgdmVyc2lvbnMgd2VyZW4ndCBleHBvcnRlZCBmcm9tIHRoZSBETEwuICovCkBAIC00NCw2ICs0OCwzMiBAQAogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5X1ZhQnVpbGRWYWx1ZShjb25zdCBjaGFyICosIHZhX2xpc3QpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCit0eXBlZGVmIHN0cnVjdCBfUHlBcmdfUGFyc2VyIHsKKyAgICBjb25zdCBjaGFyICpmb3JtYXQ7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICprZXl3b3JkczsKKyAgICBjb25zdCBjaGFyICpmbmFtZTsKKyAgICBjb25zdCBjaGFyICpjdXN0b21fbXNnOworICAgIGludCBwb3M7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBhcmd1bWVudHMgKi8KKyAgICBpbnQgbWluOyAgICAgICAgICAgIC8qIG1pbmltYWwgbnVtYmVyIG9mIGFyZ3VtZW50cyAqLworICAgIGludCBtYXg7ICAgICAgICAgICAgLyogbWF4aW1hbCBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKi8KKyAgICBQeU9iamVjdCAqa3d0dXBsZTsgIC8qIHR1cGxlIG9mIGtleXdvcmQgcGFyYW1ldGVyIG5hbWVzICovCisgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKm5leHQ7Cit9IF9QeUFyZ19QYXJzZXI7CisjaWZkZWYgUFlfU1NJWkVfVF9DTEVBTgorI2RlZmluZSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdCAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQKKyNkZWZpbmUgX1B5QXJnX1BhcnNlU3RhY2sgIF9QeUFyZ19QYXJzZVN0YWNrX1NpemVUCisjZGVmaW5lIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQKKyNlbmRpZgorUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VTdGFjayhQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCk7Cit2b2lkIF9QeUFyZ19GaW5pKHZvaWQpOworI2VuZGlmCisKIFB5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9BZGRPYmplY3QoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIGxvbmcpOwogUHlBUElfRlVOQyhpbnQpIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmggYi9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oCmluZGV4IGE0MTJmMDUuLjBjOGQ5NWMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaApAQCAtNyw5ICs3LDExIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5TmFtZXNwYWNlX1R5cGU7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TmFtZXNwYWNlX05ldyhQeU9iamVjdCAqa3dkcyk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmplY3QuaCBiL0luY2x1ZGUvb2JqZWN0LmgKaW5kZXggNTBkOTc0Ny4uMzM4ZWMxYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmplY3QuaAorKysgYi9JbmNsdWRlL29iamVjdC5oCkBAIC0xMTgsNiArMTE4LDcgQEAKICNkZWZpbmUgUHlfVFlQRShvYikgICAgICAgICAgICAgKCgoUHlPYmplY3QqKShvYikpLT5vYl90eXBlKQogI2RlZmluZSBQeV9TSVpFKG9iKSAgICAgICAgICAgICAoKChQeVZhck9iamVjdCopKG9iKSktPm9iX3NpemUpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qKioqKioqKioqKioqKioqKioqKiogU3RyaW5nIExpdGVyYWxzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBUaGlzIHN0cnVjdHVyZSBoZWxwcyBtYW5hZ2luZyBzdGF0aWMgc3RyaW5ncy4gVGhlIGJhc2ljIHVzYWdlIGdvZXMgbGlrZSB0aGlzOgogICAgSW5zdGVhZCBvZiBkb2luZwpAQCAtMTQ0LDEwICsxNDUsMTIgQEAKICAgICBQeU9iamVjdCAqb2JqZWN0OwogfSBfUHlfSWRlbnRpZmllcjsKIAotI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZ19pbml0KHZhbHVlKSB7IDAsIHZhbHVlLCAwIH0KKyNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmdfaW5pdCh2YWx1ZSkgeyAubmV4dCA9IE5VTEwsIC5zdHJpbmcgPSB2YWx1ZSwgLm9iamVjdCA9IE5VTEwgfQogI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZyh2YXJuYW1lLCB2YWx1ZSkgIHN0YXRpYyBfUHlfSWRlbnRpZmllciB2YXJuYW1lID0gX1B5X3N0YXRpY19zdHJpbmdfaW5pdCh2YWx1ZSkKICNkZWZpbmUgX1B5X0lERU5USUZJRVIodmFybmFtZSkgX1B5X3N0YXRpY19zdHJpbmcoUHlJZF8jI3Zhcm5hbWUsICN2YXJuYW1lKQogCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCisKIC8qCiBUeXBlIG9iamVjdHMgY29udGFpbiBhIHN0cmluZyBjb250YWluaW5nIHRoZSB0eXBlIG5hbWUgKHRvIGhlbHAgc29tZXdoYXQKIGluIGRlYnVnZ2luZyksIHRoZSBhbGxvY2F0aW9uIHBhcmFtZXRlcnMgKHNlZSBQeU9iamVjdF9OZXcoKSBhbmQKQEAgLTUxMiw4ICs1MTUsOCBAQAogI2VuZGlmCiAKIC8qIEdlbmVyaWMgb3BlcmF0aW9ucyBvbiBvYmplY3RzICovCi1zdHJ1Y3QgX1B5X0lkZW50aWZpZXI7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitzdHJ1Y3QgX1B5X0lkZW50aWZpZXI7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfUHJpbnQoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfQnJlYWtQb2ludCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0R1bXAoUHlPYmplY3QgKik7CkBAIC01MzAsMTEgKzUzMywxMSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1NldEF0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfSGFzQXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlPYmplY3RfSXNBYnN0cmFjdChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X1NldEF0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0hhc0F0dHJJZChQeU9iamVjdCAqLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKik7Ci0jaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICoqKSBfUHlPYmplY3RfR2V0RGljdFB0cihQeU9iamVjdCAqKTsKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9TZWxmSXRlcihQeU9iamVjdCAqKTsKQEAgLTU1Nyw2ICs1NjAsNyBAQAogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0NhbGxGaW5hbGl6ZXJGcm9tRGVhbGxvYyhQeU9iamVjdCAqKTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBTYW1lIGFzIFB5T2JqZWN0X0dlbmVyaWN7R2V0LFNldH1BdHRyLCBidXQgcGFzc2luZyB0aGUgYXR0cmlidXRlcwogICAgZGljdCBhcyB0aGUgbGFzdCBwYXJhbWV0ZXIuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopCkBAIC01NjQsNiArNTY4LDcgQEAKIFB5QVBJX0ZVTkMoaW50KQogX1B5T2JqZWN0X0dlbmVyaWNTZXRBdHRyV2l0aERpY3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBIZWxwZXIgdG8gbG9vayB1cCBhIGJ1aWx0aW4gb2JqZWN0ICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCkBAIC03MDgsNyArNzEzLDYgQEAKIFB5QVBJX0RBVEEoUHlfc3NpemVfdCkgX1B5X1JlZlRvdGFsOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfTmVnYXRpdmVSZWZjb3VudChjb25zdCBjaGFyICpmbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgUHlPYmplY3QgKm9wKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9EdW1teSh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5X0dldFJlZlRvdGFsKHZvaWQpOwogI2RlZmluZSBfUHlfSU5DX1JFRlRPVEFMICAgICAgICBfUHlfUmVmVG90YWwrKwogI2RlZmluZSBfUHlfREVDX1JFRlRPVEFMICAgICAgICBfUHlfUmVmVG90YWwtLQpAQCAtNzg1LDcgKzc4OSw3IEBACiAgICAgICAgIC0tKF9weV9kZWNyZWZfdG1wKS0+b2JfcmVmY250ICE9IDApICAgICAgICAgICAgIFwKICAgICAgICAgICAgIF9QeV9DSEVDS19SRUZDTlQoX3B5X2RlY3JlZl90bXApICAgICAgICAgICAgXAogICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIF9QeV9EZWFsbG9jKF9weV9kZWNyZWZfdG1wKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9QeV9EZWFsbG9jKF9weV9kZWNyZWZfdG1wKTsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKIC8qIFNhZmVseSBkZWNyZWYgYG9wYCBhbmQgc2V0IGBvcGAgdG8gTlVMTCwgZXNwZWNpYWxseSB1c2VmdWwgaW4gdHBfY2xlYXIKQEAgLTg4OSw4ICs4OTMsMTAgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlfSW5jUmVmKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyh2b2lkKSBQeV9EZWNSZWYoUHlPYmplY3QgKik7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlOb25lX1R5cGU7CiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5Tm90SW1wbGVtZW50ZWRfVHlwZTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyoKIF9QeV9Ob25lU3RydWN0IGlzIGFuIG9iamVjdCBvZiB1bmRlZmluZWQgdHlwZSB3aGljaCBjYW4gYmUgdXNlZCBpbiBjb250ZXh0cwpAQCAtOTIzLDEwICs5MjksMTIgQEAKICNkZWZpbmUgUHlfR1QgNAogI2RlZmluZSBQeV9HRSA1CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIE1hcHMgUHlfTFQgdG8gUHlfR1QsIC4uLiwgUHlfR0UgdG8gUHlfTEUuCiAgKiBEZWZpbmVkIGluIG9iamVjdC5jLgogICovCiBQeUFQSV9EQVRBKGludCkgX1B5X1N3YXBwZWRPcFtdOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAKIC8qCkBAIC0xMDIzLDEyICsxMDMxLDE0IEBACiB3aXRoIHRoZSBjYWxsIHN0YWNrIG5ldmVyIGV4Y2VlZGluZyBhIGRlcHRoIG9mIFB5VHJhc2hfVU5XSU5EX0xFVkVMLgogKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVGhpcyBpcyB0aGUgb2xkIHByaXZhdGUgQVBJLCBpbnZva2VkIGJ5IHRoZSBtYWNyb3MgYmVmb3JlIDMuMi40LgogICAgS2VwdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkgb2YgZXh0ZW5zaW9ucyB1c2luZyB0aGUgc3RhYmxlIEFCSS4gKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QoUHlPYmplY3QqKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VHJhc2hfZGVzdHJveV9jaGFpbih2b2lkKTsKIFB5QVBJX0RBVEEoaW50KSBfUHlUcmFzaF9kZWxldGVfbmVzdGluZzsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgX1B5VHJhc2hfZGVsZXRlX2xhdGVyOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBUaGUgbmV3IHRocmVhZC1zYWZlIHByaXZhdGUgQVBJLCBpbnZva2VkIGJ5IHRoZSBtYWNyb3MgYmVsb3cuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX3RocmVhZF9kZXBvc2l0X29iamVjdChQeU9iamVjdCopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmppbXBsLmggYi9JbmNsdWRlL29iamltcGwuaAppbmRleCA2NWI2ZDkxLi5jMGVkOWI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamltcGwuaAorKysgYi9JbmNsdWRlL29iamltcGwuaApAQCAtOTksOCArOTksMTAgQEAKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU9iamVjdF9SZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfRnJlZSh2b2lkICpwdHIpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrcywgcmVnYXJkbGVzcyBvZiBzaXplICovCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9HZXRBbGxvY2F0ZWRCbG9ja3Modm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIE1hY3JvcyAqLwogI2lmZGVmIFdJVEhfUFlNQUxMT0MKQEAgLTIyNCwxMSArMjI2LDEyIEBACiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogICovCiAKLS8qIEMgZXF1aXZhbGVudCBvZiBnYy5jb2xsZWN0KCkuICovCisvKiBDIGVxdWl2YWxlbnQgb2YgZ2MuY29sbGVjdCgpIHdoaWNoIGlnbm9yZXMgdGhlIHN0YXRlIG9mIGdjLmVuYWJsZWQuICovCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5R0NfQ29sbGVjdCh2b2lkKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlHQ19Db2xsZWN0Tm9GYWlsKHZvaWQpOworUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlHQ19Db2xsZWN0SWZFbmFibGVkKHZvaWQpOwogI2VuZGlmCiAKIC8qIFRlc3QgaWYgYSB0eXBlIGhhcyBhIEdDIGhlYWQgKi8KQEAgLTMyMiw4ICszMjUsMTAgQEAKICAgICAgICAgKCFQeVR1cGxlX0NoZWNrRXhhY3Qob2JqKSB8fCBfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChvYmopKSkKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19NYWxsb2Moc2l6ZV90IHNpemUpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfQ2FsbG9jKHNpemVfdCBzaXplKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX05ldyhQeVR5cGVPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5VmFyT2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXdWYXIoUHlUeXBlT2JqZWN0ICosIFB5X3NzaXplX3QpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9iamVjdF9HQ19UcmFjayh2b2lkICopOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vcGNvZGUuaCBiL0luY2x1ZGUvb3Bjb2RlLmgKaW5kZXggM2Y5MTdmYi4uYmUzNjBlMSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vcGNvZGUuaAorKysgYi9JbmNsdWRlL29wY29kZS5oCkBAIC02MCw2ICs2MCw3IEBACiAjZGVmaW5lIFdJVEhfQ0xFQU5VUF9GSU5JU0ggICAgICA4MgogI2RlZmluZSBSRVRVUk5fVkFMVUUgICAgICAgICAgICAgODMKICNkZWZpbmUgSU1QT1JUX1NUQVIgICAgICAgICAgICAgIDg0CisjZGVmaW5lIFNFVFVQX0FOTk9UQVRJT05TICAgICAgICA4NQogI2RlZmluZSBZSUVMRF9WQUxVRSAgICAgICAgICAgICAgODYKICNkZWZpbmUgUE9QX0JMT0NLICAgICAgICAgICAgICAgIDg3CiAjZGVmaW5lIEVORF9GSU5BTExZICAgICAgICAgICAgICA4OApAQCAtOTgsMTggKzk5LDE3IEBACiAjZGVmaW5lIExPQURfRkFTVCAgICAgICAgICAgICAgIDEyNAogI2RlZmluZSBTVE9SRV9GQVNUICAgICAgICAgICAgICAxMjUKICNkZWZpbmUgREVMRVRFX0ZBU1QgICAgICAgICAgICAgMTI2CisjZGVmaW5lIFNUT1JFX0FOTk9UQVRJT04gICAgICAgIDEyNwogI2RlZmluZSBSQUlTRV9WQVJBUkdTICAgICAgICAgICAxMzAKICNkZWZpbmUgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgMTMxCiAjZGVmaW5lIE1BS0VfRlVOQ1RJT04gICAgICAgICAgIDEzMgogI2RlZmluZSBCVUlMRF9TTElDRSAgICAgICAgICAgICAxMzMKLSNkZWZpbmUgTUFLRV9DTE9TVVJFICAgICAgICAgICAgMTM0CiAjZGVmaW5lIExPQURfQ0xPU1VSRSAgICAgICAgICAgIDEzNQogI2RlZmluZSBMT0FEX0RFUkVGICAgICAgICAgICAgICAxMzYKICNkZWZpbmUgU1RPUkVfREVSRUYgICAgICAgICAgICAgMTM3CiAjZGVmaW5lIERFTEVURV9ERVJFRiAgICAgICAgICAgIDEzOAotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUiAgICAgICAxNDAKICNkZWZpbmUgQ0FMTF9GVU5DVElPTl9LVyAgICAgICAgMTQxCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSX0tXICAgIDE0MgorI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0VYICAgICAgICAxNDIKICNkZWZpbmUgU0VUVVBfV0lUSCAgICAgICAgICAgICAgMTQzCiAjZGVmaW5lIEVYVEVOREVEX0FSRyAgICAgICAgICAgIDE0NAogI2RlZmluZSBMSVNUX0FQUEVORCAgICAgICAgICAgICAxNDUKQEAgLTEyMiw2ICsxMjIsMTAgQEAKICNkZWZpbmUgQlVJTERfVFVQTEVfVU5QQUNLICAgICAgMTUyCiAjZGVmaW5lIEJVSUxEX1NFVF9VTlBBQ0sgICAgICAgIDE1MwogI2RlZmluZSBTRVRVUF9BU1lOQ19XSVRIICAgICAgICAxNTQKKyNkZWZpbmUgRk9STUFUX1ZBTFVFICAgICAgICAgICAgMTU1CisjZGVmaW5lIEJVSUxEX0NPTlNUX0tFWV9NQVAgICAgIDE1NgorI2RlZmluZSBCVUlMRF9TVFJJTkcgICAgICAgICAgICAxNTcKKyNkZWZpbmUgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCAxNTgKIAogLyogRVhDRVBUX0hBTkRMRVIgaXMgYSBzcGVjaWFsLCBpbXBsaWNpdCBibG9jayB0eXBlIHdoaWNoIGlzIGNyZWF0ZWQgd2hlbgogICAgZW50ZXJpbmcgYW4gZXhjZXB0IGhhbmRsZXIuIEl0IGlzIG5vdCBhbiBvcGNvZGUgYnV0IHdlIGRlZmluZSBpdCBoZXJlCmRpZmYgLS1naXQgYS9JbmNsdWRlL29zbW9kdWxlLmggYi9JbmNsdWRlL29zbW9kdWxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE0Njc1NwotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvb3Ntb2R1bGUuaApAQCAtMCwwICsxLDE1IEBACisKKy8qIG9zIG1vZHVsZSBpbnRlcmZhY2UgKi8KKworI2lmbmRlZiBQeV9PU01PRFVMRV9ICisjZGVmaW5lIFB5X09TTU9EVUxFX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgLyogIVB5X09TTU9EVUxFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKaW5kZXggNDVlNTczNi4uMjlkYTQ4OSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXRjaGxldmVsLmgKKysrIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKQEAgLTE3LDEzICsxNywxMyBAQAogLyogVmVyc2lvbiBwYXJzZWQgb3V0IGludG8gbnVtZXJpYyB2YWx1ZXMgKi8KIC8qLS1zdGFydCBjb25zdGFudHMtLSovCiAjZGVmaW5lIFBZX01BSk9SX1ZFUlNJT04JMwotI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTUKLSNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkyCi0jZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9GSU5BTAotI2RlZmluZSBQWV9SRUxFQVNFX1NFUklBTAkwCisjZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNgorI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTAKKyNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0JFVEEKKyNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMgogCiAvKiBWZXJzaW9uIGFzIGEgc3RyaW5nICovCi0jZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuNS4yKyIKKyNkZWZpbmUgUFlfVkVSU0lPTiAgICAgIAkiMy42LjBiMisiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAogLyogVmVyc2lvbiBhcyBhIHNpbmdsZSA0LWJ5dGUgaGV4IG51bWJlciwgZS5nLiAweDAxMDUwMkIyID09IDEuNS4yYjIuCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BnZW5oZWFkZXJzLmggYi9JbmNsdWRlL3BnZW5oZWFkZXJzLmgKaW5kZXggMjA0OWFlMy4uNDg0M2RlNiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wZ2VuaGVhZGVycy5oCisrKyBiL0luY2x1ZGUvcGdlbmhlYWRlcnMuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmluZSBkZWxiaXRzZXQgX1B5X2RlbGJpdHNldAogI2RlZmluZSBkdW1wdHJlZSBfUHlfZHVtcHRyZWUKICNkZWZpbmUgZmluZGxhYmVsIF9QeV9maW5kbGFiZWwKKyNkZWZpbmUgZnJlZWdyYW1tYXIgX1B5X2ZyZWVncmFtbWFyCiAjZGVmaW5lIG1lcmdlYml0c2V0IF9QeV9tZXJnZWJpdHNldAogI2RlZmluZSBtZXRhX2dyYW1tYXIgX1B5X21ldGFfZ3JhbW1hcgogI2RlZmluZSBuZXdiaXRzZXQgX1B5X25ld2JpdHNldApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weV9jdXJzZXMuaCBiL0luY2x1ZGUvcHlfY3Vyc2VzLmgKaW5kZXggZjJjMDhmNi4uM2MyMTY5NyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weV9jdXJzZXMuaAorKysgYi9JbmNsdWRlL3B5X2N1cnNlcy5oCkBAIC0xMDMsOCArMTAzLDggQEAKICNlbmRpZgogCiAvKiBnZW5lcmFsIGVycm9yIG1lc3NhZ2VzICovCi1zdGF0aWMgY2hhciAqY2F0Y2hhbGxfRVJSICA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgRVJSIjsKLXN0YXRpYyBjaGFyICpjYXRjaGFsbF9OVUxMID0gImN1cnNlcyBmdW5jdGlvbiByZXR1cm5lZCBOVUxMIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhdGNoYWxsX0VSUltdICA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgRVJSIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNhdGNoYWxsX05VTExbXSA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCI7CiAKIC8qIEZ1bmN0aW9uIFByb3RvdHlwZSBNYWNyb3MgLSBUaGV5IGFyZSB1Z2x5IGJ1dCB2ZXJ5LCB2ZXJ5IHVzZWZ1bC4gOy0pCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlhdG9taWMuaCBiL0luY2x1ZGUvcHlhdG9taWMuaAppbmRleCA4OTAyOGVmLi44OTNkMzBkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5YXRvbWljLmgKKysrIGIvSW5jbHVkZS9weWF0b21pYy5oCkBAIC02MSw3ICs2MSw3IEBACiB9IF9QeV9tZW1vcnlfb3JkZXI7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7Ci0gICAgUHlfdWludHB0cl90IF92YWx1ZTsKKyAgICB1aW50cHRyX3QgX3ZhbHVlOwogfSBfUHlfYXRvbWljX2FkZHJlc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKQEAgLTk4LDcgKzk4LDcgQEAKIH0gX1B5X21lbW9yeV9vcmRlcjsKIAogdHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19hZGRyZXNzIHsKLSAgICBQeV91aW50cHRyX3QgX3ZhbHVlOworICAgIHVpbnRwdHJfdCBfdmFsdWU7CiB9IF9QeV9hdG9taWNfYWRkcmVzczsKIAogdHlwZWRlZiBzdHJ1Y3QgX1B5X2F0b21pY19pbnQgewpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWRlYnVnLmggYi9JbmNsdWRlL3B5ZGVidWcuaAppbmRleCAxOWJlYzJiLi42ZTIzYTg5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZGVidWcuaAorKysgYi9JbmNsdWRlL3B5ZGVidWcuaApAQCAtMjQsNiArMjQsMTAgQEAKIFB5QVBJX0RBVEEoaW50KSBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfSXNvbGF0ZWRGbGFnOwogCisjaWZkZWYgTVNfV0lORE9XUworUHlBUElfREFUQShpbnQpIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWc7CisjZW5kaWYKKwogLyogdGhpcyBpcyBhIHdyYXBwZXIgYXJvdW5kIGdldGVudigpIHRoYXQgcGF5cyBhdHRlbnRpb24gdG8KICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZy4gIEl0IHNob3VsZCBiZSB1c2VkIGZvciBnZXR0aW5nIHZhcmlhYmxlcyBsaWtlCiAgICBQWVRIT05QQVRIIGFuZCBQWVRIT05IT01FIGZyb20gdGhlIGVudmlyb25tZW50ICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZHRyYWNlLmQgYi9JbmNsdWRlL3B5ZHRyYWNlLmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzNjA1NQotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlkdHJhY2UuZApAQCAtMCwwICsxLDE5IEBACisvKiBQeXRob24gRFRyYWNlIHByb3ZpZGVyICovCisKK3Byb3ZpZGVyIHB5dGhvbiB7CisgICAgcHJvYmUgZnVuY3Rpb25fX2VudHJ5KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGZ1bmN0aW9uX19yZXR1cm4oY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgICAgcHJvYmUgaW5zdGFuY2VfX25ld19fc3RhcnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHByb2JlIGluc3RhbmNlX19uZXdfX2RvbmUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworICAgIHByb2JlIGluc3RhbmNlX19kZWxldGVfX3N0YXJ0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fZGVsZXRlX19kb25lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBsaW5lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGdjX19zdGFydChpbnQpOworICAgIHByb2JlIGdjX19kb25lKGxvbmcpOworfTsKKworI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBwcm92aWRlcgorI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBtb2R1bGUKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gZnVuY3Rpb24KKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gbmFtZQorI3ByYWdtYSBEIGF0dHJpYnV0ZXMgRXZvbHZpbmcvRXZvbHZpbmcvQ29tbW9uIHByb3ZpZGVyIHB5dGhvbiBhcmdzCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5ZHRyYWNlLmggYi9JbmNsdWRlL3B5ZHRyYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQzYTI1MwotLS0gL2Rldi9udWxsCisrKyBiL0luY2x1ZGUvcHlkdHJhY2UuaApAQCAtMCwwICsxLDUzIEBACisvKiBTdGF0aWMgRFRyYWNlIHByb2JlcyBpbnRlcmZhY2UgKi8KKworI2lmbmRlZiBQeV9EVFJBQ0VfSAorI2RlZmluZSBQeV9EVFJBQ0VfSAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjaWZkZWYgV0lUSF9EVFJBQ0UKKworI2luY2x1ZGUgInB5ZHRyYWNlX3Byb2Jlcy5oIgorCisvKiBweWR0cmFjZV9wcm9iZXMuaCwgb24gc3lzdGVtcyB3aXRoIERUcmFjZSwgaXMgYXV0by1nZW5lcmF0ZWQgdG8gaW5jbHVkZQorICAgYFB5RFRyYWNlX3tQUk9CRX1gIGFuZCBgUHlEVHJhY2Vfe1BST0JFfV9FTkFCTEVEKClgIG1hY3JvcyBmb3IgZXZlcnkgcHJvYmUKKyAgIGRlZmluZWQgaW4gcHlkdHJhY2VfcHJvdmlkZXIuZC4KKworICAgQ2FsbGluZyB0aGVzZSBmdW5jdGlvbnMgbXVzdCBiZSBndWFyZGVkIGJ5IGEgYFB5RFRyYWNlX3tQUk9CRX1fRU5BQkxFRCgpYAorICAgY2hlY2sgdG8gbWluaW1pemUgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gcHJvYmluZyBpcyBvZmYuIEZvciBleGFtcGxlOgorCisgICAgICAgaWYgKFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQoKSkKKyAgICAgICAgICAgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUlkoZik7CisqLworCisjZWxzZQorCisvKiBXaXRob3V0IERUcmFjZSwgY29tcGlsZSB0byBub3RoaW5nLiAqLworCitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfTElORShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9GVU5DVElPTl9FTlRSWShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikgIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOKGNvbnN0IGNoYXIgKmFyZzAsIGNvbnN0IGNoYXIgKmFyZzEsIGludCBhcmcyKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX1NUQVJUKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX0RPTkUoaW50IGFyZzApIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX1NUQVJUKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FKGludCBhcmcwKSB7fQorc3RhdGljIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVChpbnQgYXJnMCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfRE9ORShpbnQgYXJnMCkge30KKworc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfTElORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK3N0YXRpYyBpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9HQ19ET05FX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX1NUQVJUX0VOQUJMRUQodm9pZCkgeyByZXR1cm4gMDsgfQorc3RhdGljIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitzdGF0aWMgaW5saW5lIGludCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfRE9ORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KKworI2VuZGlmIC8qICFXSVRIX0RUUkFDRSAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9EVFJBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWVycm9ycy5oIGIvSW5jbHVkZS9weWVycm9ycy5oCmluZGV4IDM1YWVkYjcuLmY5Zjc0YzAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHllcnJvcnMuaAorKysgYi9JbmNsdWRlL3B5ZXJyb3JzLmgKQEAgLTE2MCw2ICsxNjAsNyBAQAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX09TRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ltcG9ydEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Nb2R1bGVOb3RGb3VuZEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbmRleEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19LZXlFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ7CkBAIC0yNTQsNiArMjU1LDE3IEBACiAgICAgdmFfbGlzdCB2YXJncyk7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogTGlrZSBQeUVycl9Gb3JtYXQoKSwgYnV0IHNhdmVzIGN1cnJlbnQgZXhjZXB0aW9uIGFzIF9fY29udGV4dF9fIGFuZAorICAgX19jYXVzZV9fLgorICovCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoCisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCisgICAgLi4uCisgICAgKTsKKyNlbmRpZgorCiAjaWZkZWYgTVNfV0lORE9XUwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgKICAgICBpbnQgaWVyciwKQEAgLTI4Myw2ICsyOTUsOSBAQAogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y1dpdGhBcmdzS3dhcmdzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgUHlPYmplY3QgKik7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgIFB5T2JqZWN0ICopOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5Z2V0b3B0LmggYi9JbmNsdWRlL3B5Z2V0b3B0LmgKaW5kZXggNDI1YzdkZC4uOTYyNzIwYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWdldG9wdC5oCisrKyBiL0luY2x1ZGUvcHlnZXRvcHQuaApAQCAtMTEsOSArMTEsOSBAQAogUHlBUElfREFUQSh3Y2hhcl90ICopIF9QeU9TX29wdGFyZzsKIAogUHlBUElfRlVOQyh2b2lkKSBfUHlPU19SZXNldEdldE9wdCh2b2lkKTsKLSNlbmRpZgogCiBQeUFQSV9GVU5DKGludCkgX1B5T1NfR2V0T3B0KGludCBhcmdjLCB3Y2hhcl90ICoqYXJndiwgd2NoYXJfdCAqb3B0c3RyaW5nKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5aGFzaC5oIGIvSW5jbHVkZS9weWhhc2guaAppbmRleCBhN2NhOTM3Li5hODE0YWY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5aGFzaC5oCisrKyBiL0luY2x1ZGUvcHloYXNoLmgKQEAgLTM2LDE0ICszNiwxNCBAQAogICogbWVtb3J5IGxheW91dCBvbiA2NCBiaXQgc3lzdGVtcwogICogICBjY2NjY2NjYyBjY2NjY2NjYyBjY2NjY2NjYyAgdWMgLS0gdW5zaWduZWQgY2hhclsyNF0KICAqICAgcHBwcHBwcHAgc3Nzc3Nzc3MgLi4uLi4uLi4gIGZudiAtLSB0d28gUHlfaGFzaF90Ci0gKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byBQWV9VSU5UNjRfVAorICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gdWludDY0X3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gc3Nzc3Nzc3MgIGRqYngzM2EgLS0gMTYgYnl0ZXMgcGFkZGluZyArIG9uZSBQeV9oYXNoX3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gZWVlZWVlZWUgIHB5ZXhwYXQgWE1MIGhhc2ggc2FsdAogICoKICAqIG1lbW9yeSBsYXlvdXQgb24gMzIgYml0IHN5c3RlbXMKICAqICAgY2NjY2NjY2MgY2NjY2NjY2MgY2NjY2NjY2MgIHVjCiAgKiAgIHBwcHBzc3NzIC4uLi4uLi4uIC4uLi4uLi4uICBmbnYgLS0gdHdvIFB5X2hhc2hfdAotICogICBrMGswazBrMCBrMWsxazFrMSAuLi4uLi4uLiAgc2lwaGFzaCAtLSB0d28gUFlfVUlOVDY0X1QgKCopCisgKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byB1aW50NjRfdCAoKikKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gc3Nzcy4uLi4gIGRqYngzM2EgLS0gMTYgYnl0ZXMgcGFkZGluZyArIG9uZSBQeV9oYXNoX3QKICAqICAgLi4uLi4uLi4gLi4uLi4uLi4gZWVlZS4uLi4gIHB5ZXhwYXQgWE1MIGhhc2ggc2FsdAogICoKQEAgLTU5LDEzICs1OSwxMSBAQAogICAgICAgICBQeV9oYXNoX3QgcHJlZml4OwogICAgICAgICBQeV9oYXNoX3Qgc3VmZml4OwogICAgIH0gZm52OwotI2lmZGVmIFBZX1VJTlQ2NF9UCiAgICAgLyogdHdvIHVpbnQ2NCBmb3IgU2lwSGFzaDI0ICovCiAgICAgc3RydWN0IHsKLSAgICAgICAgUFlfVUlOVDY0X1QgazA7Ci0gICAgICAgIFBZX1VJTlQ2NF9UIGsxOworICAgICAgICB1aW50NjRfdCBrMDsKKyAgICAgICAgdWludDY0X3QgazE7CiAgICAgfSBzaXBoYXNoOwotI2VuZGlmCiAgICAgLyogYSBkaWZmZXJlbnQgKCEpIFB5X2hhc2hfdCBmb3Igc21hbGwgc3RyaW5nIG9wdGltaXphdGlvbiAqLwogICAgIHN0cnVjdCB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcGFkZGluZ1sxNl07CkBAIC0xMjEsOCArMTE5LDcgQEAKICAqIGNvbmZpZ3VyZSBzY3JpcHQuCiAgKgogICogLSBGTlYgaXMgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMgYW5kIGFyY2hpdGVjdHVyZXMuCi0gKiAtIFNJUEhBU0gyNCBvbmx5IHdvcmtzIG9uIHBsYWZvcm1zIHRoYXQgcHJvdmlkZSBQWV9VSU5UNjRfVCBhbmQgZG9lc24ndAotICogICByZXF1aXJlIGFsaWduZWQgbWVtb3J5IGZvciBpbnRlZ2Vycy4KKyAqIC0gU0lQSEFTSDI0IG9ubHkgd29ya3Mgb24gcGxhZm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFsaWduZWQgbWVtb3J5IGZvciBpbnRlZ2Vycy4KICAqIC0gV2l0aCBFWFRFUk5BTCBlbWJlZGRlcnMgY2FuIHByb3ZpZGUgYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gd2l0aDo6CiAgKgogICogICAgIFB5SGFzaF9GdW5jRGVmIFB5SGFzaF9GdW5jID0gey4uLn07CkBAIC0xMzQsOCArMTMxLDcgQEAKICNkZWZpbmUgUHlfSEFTSF9GTlYgMgogCiAjaWZuZGVmIFB5X0hBU0hfQUxHT1JJVEhNCi0jICBpZiAoZGVmaW5lZChQWV9VSU5UNjRfVCkgJiYgZGVmaW5lZChQWV9VSU5UMzJfVCkgXAotICAgICAgICYmICFkZWZpbmVkKEhBVkVfQUxJR05FRF9SRVFVSVJFRCkpCisjICBpZm5kZWYgSEFWRV9BTElHTkVEX1JFUVVJUkVECiAjICAgIGRlZmluZSBQeV9IQVNIX0FMR09SSVRITSBQeV9IQVNIX1NJUEhBU0gyNAogIyAgZWxzZQogIyAgICBkZWZpbmUgUHlfSEFTSF9BTEdPUklUSE0gUHlfSEFTSF9GTlYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlsaWZlY3ljbGUuaCBiL0luY2x1ZGUvcHlsaWZlY3ljbGUuaAppbmRleCBjY2RlYmUyLi41YTY3NjY2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKKysrIGIvSW5jbHVkZS9weWxpZmVjeWNsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQsIGludCk7CiAjZW5kaWYKIFB5QVBJX0ZVTkModm9pZCkgUHlfRmluYWxpemUodm9pZCk7CitQeUFQSV9GVU5DKGludCkgUHlfRmluYWxpemVFeCh2b2lkKTsKIFB5QVBJX0ZVTkMoaW50KSBQeV9Jc0luaXRpYWxpemVkKHZvaWQpOwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5X05ld0ludGVycHJldGVyKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeV9FbmRJbnRlcnByZXRlcihQeVRocmVhZFN0YXRlICopOwpAQCAtMTA2LDYgKzEwNyw3IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5U2xpY2VfRmluaSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5VHlwZV9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlSYW5kb21fRmluaSh2b2lkKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlBc3luY0dlbl9GaW5pKHZvaWQpOwogCiBQeUFQSV9EQVRBKFB5VGhyZWFkU3RhdGUgKikgX1B5X0ZpbmFsaXppbmc7CiAjZW5kaWYKQEAgLTExNSw4ICsxMTcsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1NfZ2V0c2lnKGludCk7CiBQeUFQSV9GVU5DKFB5T1Nfc2lnaGFuZGxlcl90KSBQeU9TX3NldHNpZyhpbnQsIFB5T1Nfc2lnaGFuZGxlcl90KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmFuZG9tICovCi1QeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSAodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpOworUHlBUElfRlVOQyhpbnQpIF9QeU9TX1VSYW5kb21Ob25ibG9jayh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hY3JvLmggYi9JbmNsdWRlL3B5bWFjcm8uaAppbmRleCAzZjZmNWRjLi4yYTgzOWFiIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWFjcm8uaAorKysgYi9JbmNsdWRlL3B5bWFjcm8uaApAQCAtMTgsNiArMTgsOSBAQAogICAgYnkgIl9fTElORV9fIi4gKi8KICNkZWZpbmUgUHlfU1RSSU5HSUZZKHgpIF9QeV9YU1RSSU5HSUZZKHgpCiAKKy8qIEdldCB0aGUgc2l6ZSBvZiBhIHN0cnVjdHVyZSBtZW1iZXIgaW4gYnl0ZXMgKi8KKyNkZWZpbmUgUHlfTUVNQkVSX1NJWkUodHlwZSwgbWVtYmVyKSBzaXplb2YoKCh0eXBlICopMCktPm1lbWJlcikKKwogLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLwogI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQogCkBAIC0zNiw2ICszOSwxMCBAQAogI2RlZmluZSBQeV9CVUlMRF9BU1NFUlRfRVhQUihjb25kKSBcCiAgICAgKHNpemVvZihjaGFyIFsxIC0gMiohKGNvbmQpXSkgLSAxKQogCisjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVChjb25kKSAgZG8geyAgICAgICAgIFwKKyAgICAgICAgKHZvaWQpUHlfQlVJTERfQVNTRVJUX0VYUFIoY29uZCk7ICAgXAorICAgIH0gd2hpbGUoMCkKKwogLyogR2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2aXNpYmxlIGFycmF5CiAKICAgIFRoaXMgZG9lcyBub3Qgd29yayBvbiBwb2ludGVycywgb3IgYXJyYXlzIGRlY2xhcmVkIGFzIFtdLCBvciBmdW5jdGlvbgpAQCAtNzUsMTIgKzgyLDEyIEBACiAjZGVmaW5lIF9QeV9TSVpFX1JPVU5EX1VQKG4sIGEpICgoKHNpemVfdCkobikgKyBcCiAgICAgICAgIChzaXplX3QpKChhKSAtIDEpKSAmIH4oc2l6ZV90KSgoYSkgLSAxKSkKIC8qIFJvdW5kIHBvaW50ZXIgInAiIGRvd24gdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA8PSAicCIuICovCi0jZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgoUHlfdWludHB0cl90KShwKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9BTElHTl9ET1dOKHAsIGEpICgodm9pZCAqKSgodWludHB0cl90KShwKSAmIH4odWludHB0cl90KSgoYSkgLSAxKSkpCiAvKiBSb3VuZCBwb2ludGVyICJwIiB1cCB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzID49ICJwIi4gKi8KLSNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKFB5X3VpbnRwdHJfdCkocCkgKyBcCi0gICAgICAgIChQeV91aW50cHRyX3QpKChhKSAtIDEpKSAmIH4oUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9BTElHTl9VUChwLCBhKSAoKHZvaWQgKikoKCh1aW50cHRyX3QpKHApICsgXAorICAgICAgICAodWludHB0cl90KSgoYSkgLSAxKSkgJiB+KHVpbnRwdHJfdCkoKGEpIC0gMSkpKQogLyogQ2hlY2sgaWYgcG9pbnRlciAicCIgaXMgYWxpZ25lZCB0byAiYSItYnl0ZXMgYm91bmRhcnkuICovCi0jZGVmaW5lIF9QeV9JU19BTElHTkVEKHAsIGEpICghKChQeV91aW50cHRyX3QpKHApICYgKFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorI2RlZmluZSBfUHlfSVNfQUxJR05FRChwLCBhKSAoISgodWludHB0cl90KShwKSAmICh1aW50cHRyX3QpKChhKSAtIDEpKSkKIAogI2lmZGVmIF9fR05VQ19fCiAjZGVmaW5lIFB5X1VOVVNFRChuYW1lKSBfdW51c2VkXyAjIyBuYW1lIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWF0aC5oIGIvSW5jbHVkZS9weW1hdGguaAppbmRleCAxYzhkNzE4Li43MjE2YTA5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWF0aC5oCisrKyBiL0luY2x1ZGUvcHltYXRoLmgKQEAgLTU1LDYgKzU1LDEyIEBACiAjZGVmaW5lIFB5X01BVEhfRSAyLjcxODI4MTgyODQ1OTA0NTIzNTQKICNlbmRpZgogCisvKiBUYXUgKDJwaSkgdG8gNDAgZGlnaXRzLCB0YWtlbiBmcm9tIHRhdWRheS5jb20vdGF1LWRpZ2l0cy4gKi8KKyNpZm5kZWYgUHlfTUFUSF9UQVUKKyNkZWZpbmUgUHlfTUFUSF9UQVUgNi4yODMxODUzMDcxNzk1ODY0NzY5MjUyODY3NjY1NTkwMDU3NjgzOTQzTAorI2VuZGlmCisKKwogLyogT24geDg2LCBQeV9GT1JDRV9ET1VCTEUgZm9yY2VzIGEgZmxvYXRpbmctcG9pbnQgbnVtYmVyIG91dCBvZiBhbiB4ODcgRlBVCiAgICByZWdpc3RlciBhbmQgaW50byBhIDY0LWJpdCBtZW1vcnkgbG9jYXRpb24sIHJvdW5kaW5nIGZyb20gZXh0ZW5kZWQKICAgIHByZWNpc2lvbiB0byBkb3VibGUgcHJlY2lzaW9uIGluIHRoZSBwcm9jZXNzLiAgT24gb3RoZXIgcGxhdGZvcm1zIGl0IGRvZXMKQEAgLTE2OSw3ICsxNzUsNyBAQAogICAgICAgICAjcHJhZ21hIGZsb2F0X2NvbnRyb2wgKHBvcCkKICAgICAgICAgI2RlZmluZSBQeV9OQU4gX19pY2NfbmFuKCkKICAgICAjZWxzZSAvKiBJQ0NfTkFOX1JFTEFYRUQgYXMgZGVmYXVsdCBmb3IgSW50ZWwgQ29tcGlsZXIgKi8KLSAgICAgICAgc3RhdGljIHVuaW9uIHsgdW5zaWduZWQgY2hhciBidWZbOF07IGRvdWJsZSBfX2ljY19uYW47IH0gX19uYW5fc3RvcmUgPSB7MCwwLDAsMCwwLDAsMHhmOCwweDdmfTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuaW9uIHsgdW5zaWduZWQgY2hhciBidWZbOF07IGRvdWJsZSBfX2ljY19uYW47IH0gX19uYW5fc3RvcmUgPSB7MCwwLDAsMCwwLDAsMHhmOCwweDdmfTsKICAgICAgICAgI2RlZmluZSBQeV9OQU4gKF9fbmFuX3N0b3JlLl9faWNjX25hbikKICAgICAjZW5kaWYgLyogSUNDX05BTl9TVFJJQ1QgKi8KICNlbmRpZiAvKiBfX0lOVEVMX0NPTVBJTEVSICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWVtLmggYi9JbmNsdWRlL3B5bWVtLmgKaW5kZXggMDQzZGI2NC4uY2U2M2JmOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weW1lbS5oCisrKyBiL0luY2x1ZGUvcHltZW0uaApAQCAtMTYsOCArMTYsNTEgQEAKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdDYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKIFB5QVBJX0ZVTkModm9pZCAqKSBQeU1lbV9SYXdSZWFsbG9jKHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlNZW1fUmF3RnJlZSh2b2lkICpwdHIpOworCisvKiBDb25maWd1cmUgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycy4gUGFzcyBOVUxMIHRvIHVzZSBkZWZhdWx0CisgICBhbGxvY2F0b3JzLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoY29uc3QgY2hhciAqb3B0KTsKKworI2lmZGVmIFdJVEhfUFlNQUxMT0MKK1B5QVBJX0ZVTkMoaW50KSBfUHlNZW1fUHltYWxsb2NFbmFibGVkKHZvaWQpOwogI2VuZGlmCiAKKy8qIElkZW50aWZpZXIgb2YgYW4gYWRkcmVzcyBzcGFjZSAoZG9tYWluKSBpbiB0cmFjZW1hbGxvYyAqLwordHlwZWRlZiB1bnNpZ25lZCBpbnQgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3Q7CisKKy8qIFRyYWNrIGFuIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2sgaW4gdGhlIHRyYWNlbWFsbG9jIG1vZHVsZS4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJldHVybiAtMSBvbiBlcnJvciAoZmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSB0byBzdG9yZQorICAgdGhlIHRyYWNlKS4KKworICAgUmV0dXJuIC0yIGlmIHRyYWNlbWFsbG9jIGlzIGRpc2FibGVkLgorCisgICBJZiBtZW1vcnkgYmxvY2sgaXMgYWxyZWFkeSB0cmFja2VkLCB1cGRhdGUgdGhlIGV4aXN0aW5nIHRyYWNlLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRyYWNlTWFsbG9jX1RyYWNrKAorICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwKKyAgICB1aW50cHRyX3QgcHRyLAorICAgIHNpemVfdCBzaXplKTsKKworLyogVW50cmFjayBhbiBhbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIGluIHRoZSB0cmFjZW1hbGxvYyBtb2R1bGUuCisgICBEbyBub3RoaW5nIGlmIHRoZSBibG9jayB3YXMgbm90IHRyYWNrZWQuCisKKyAgIFJldHVybiAtMiBpZiB0cmFjZW1hbGxvYyBpcyBkaXNhYmxlZCwgb3RoZXJ3aXNlIHJldHVybiAwLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRyYWNlTWFsbG9jX1VudHJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIpOworCisvKiBHZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkLgorCisgICBSZXR1cm4gYSB0dXBsZSBvZiAoZmlsZW5hbWU6IHN0ciwgbGluZW5vOiBpbnQpIHR1cGxlcy4KKworICAgUmV0dXJuIE5vbmUgaWYgdGhlIHRyYWNlbWFsbG9jIG1vZHVsZSBpcyBkaXNhYmxlZCBvciBpZiB0aGUgbWVtb3J5IGJsb2NrCisgICBpcyBub3QgdHJhY2tlZCBieSB0cmFjZW1hbGxvYy4KKworICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlUcmFjZU1hbGxvY19HZXRUcmFjZWJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIpOworI2VuZGlmICAgLyogIVB5X0xJTUlURURfQVBJICovCisKIAogLyogQkVXQVJFOgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5cG9ydC5oIGIvSW5jbHVkZS9weXBvcnQuaAppbmRleCBlN2U1MTc4Li4yMGYzZGI3IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5cG9ydC5oCisrKyBiL0luY2x1ZGUvcHlwb3J0LmgKQEAgLTMsMTUgKzMsNyBAQAogCiAjaW5jbHVkZSAicHljb25maWcuaCIgLyogaW5jbHVkZSBmb3IgZGVmaW5lcyAqLwogCi0vKiBTb21lIHZlcnNpb25zIG9mIEhQLVVYICYgU29sYXJpcyBuZWVkIGludHR5cGVzLmggZm9yIGludDMyX3QsCi0gICBJTlQzMl9NQVgsIGV0Yy4gKi8KLSNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1NURElOVF9ICi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jZW5kaWYKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiBTeW1ib2xzIGFuZCBtYWNyb3MgdG8gc3VwcGx5IHBsYXRmb3JtLWluZGVwZW5kZW50IGludGVyZmFjZXMgdG8gYmFzaWMKQEAgLTMxLDE0ICsyMyw2IEBACiBNZWFuaW5nOiAgRXh0cmEgY2hlY2tzIGNvbXBpbGVkIGluIGZvciBkZWJ1ZyBtb2RlLgogVXNlZCBpbjogIFB5X1NBRkVfRE9XTkNBU1QKIAotSEFWRV9VSU5UUFRSX1QKLU1lYW5pbmc6ICBUaGUgQzlYIHR5cGUgdWludHB0cl90IGlzIHN1cHBvcnRlZCBieSB0aGUgY29tcGlsZXIKLVVzZWQgaW46ICBQeV91aW50cHRyX3QKLQotSEFWRV9MT05HX0xPTkcKLU1lYW5pbmc6ICBUaGUgY29tcGlsZXIgc3VwcG9ydHMgdGhlIEMgdHlwZSAibG9uZyBsb25nIgotVXNlZCBpbjogIFBZX0xPTkdfTE9ORwotCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogdHlwZWRlZnMgZm9yIHNvbWUgQzlYLWRlZmluZWQgc3lub255bXMgZm9yIGludGVncmFsIHR5cGVzLgpAQCAtNTMsOTEgKzM3LDMwIEBACiAgKiBpbnRlZ3JhbCBzeW5vbnltcy4gIE9ubHkgZGVmaW5lIHRoZSBvbmVzIHdlIGFjdHVhbGx5IG5lZWQuCiAgKi8KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCisvLyBsb25nIGxvbmcgaXMgcmVxdWlyZWQgbm93LiBEZWZpbmUgSEFWRV9MT05HX0xPTkcgdW5jb25kaXRpb25hbGx5IGZvcgorLy8gY29tcGF0aWJpbGl0eS4KKyNkZWZpbmUgSEFWRV9MT05HX0xPTkcKICNpZm5kZWYgUFlfTE9OR19MT05HCiAjZGVmaW5lIFBZX0xPTkdfTE9ORyBsb25nIGxvbmcKLSNpZiBkZWZpbmVkKExMT05HX01BWCkKIC8qIElmIExMT05HX01BWCBpcyBkZWZpbmVkIGluIGxpbWl0cy5oLCB1c2UgdGhhdC4gKi8KICNkZWZpbmUgUFlfTExPTkdfTUlOIExMT05HX01JTgogI2RlZmluZSBQWV9MTE9OR19NQVggTExPTkdfTUFYCiAjZGVmaW5lIFBZX1VMTE9OR19NQVggVUxMT05HX01BWAotI2VsaWYgZGVmaW5lZChfX0xPTkdfTE9OR19NQVhfXykKLS8qIE90aGVyd2lzZSwgaWYgR0NDIGhhcyBhIGJ1aWx0aW4gZGVmaW5lLCB1c2UgdGhhdC4gIChEZWZpbml0aW9uIG9mCi0gKiBQWV9MTE9OR19NSU4gYXNzdW1lcyB0d28ncyBjb21wbGVtZW50IHdpdGggbm8gdHJhcCByZXByZXNlbnRhdGlvbi4pICovCi0jZGVmaW5lIFBZX0xMT05HX01BWCBfX0xPTkdfTE9OR19NQVhfXwotI2RlZmluZSBQWV9MTE9OR19NSU4gKC1QWV9MTE9OR19NQVggLSAxKQotI2RlZmluZSBQWV9VTExPTkdfTUFYIChQWV9MTE9OR19NQVggKiBQeV9VTEwoMikgKyAxKQotI2VsaWYgZGVmaW5lZChTSVpFT0ZfTE9OR19MT05HKQotLyogT3RoZXJ3aXNlIGNvbXB1dGUgZnJvbSBTSVpFT0ZfTE9OR19MT05HLCBhc3N1bWluZyB0d28ncyBjb21wbGVtZW50LCBubwotICAgcGFkZGluZyBiaXRzLCBhbmQgbm8gdHJhcCByZXByZXNlbnRhdGlvbi4gIE5vdGU6IFBZX1VMTE9OR19NQVggd2FzCi0gICBwcmV2aW91c2x5ICNkZWZpbmVkIGFzICh+MFVMTCkgaGVyZTsgYnV0IHRoYXQnbGwgZ2l2ZSB0aGUgd3JvbmcgdmFsdWUgaW4gYQotICAgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb24gb24gc3lzdGVtcyB3aGVyZSBsb25nIGxvbmcgIT0gaW50bWF4X3QuICovCi0jZGVmaW5lIFBZX0xMT05HX01BWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKDEgKyAyICogKChQeV9MTCgxKSA8PCAoQ0hBUl9CSVQgKiBTSVpFT0ZfTE9OR19MT05HIC0gMikpIC0gMSkpCi0jZGVmaW5lIFBZX0xMT05HX01JTiAoLVBZX0xMT05HX01BWCAtIDEpCi0jZGVmaW5lIFBZX1VMTE9OR19NQVggKFBZX0xMT05HX01BWCAqIFB5X1VMTCgyKSArIDEpCi0jZW5kaWYgLyogTExPTkdfTUFYICovCi0jZW5kaWYKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwotCi0vKiBhIGJ1aWxkIHdpdGggMzAtYml0IGRpZ2l0cyBmb3IgUHl0aG9uIGludGVnZXJzIG5lZWRzIGFuIGV4YWN0LXdpZHRoCi0gKiAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciB0eXBlIHRvIHN0b3JlIHRob3NlIGRpZ2l0cy4gIChXZSBjb3VsZCBqdXN0IHVzZQotICogdHlwZSAndW5zaWduZWQgbG9uZycsIGJ1dCB0aGF0IHdvdWxkIGJlIHdhc3RlZnVsIG9uIGEgc3lzdGVtIHdoZXJlIGxvbmdzCi0gKiBhcmUgNjQtYml0cy4pICBPbiBVbml4IHN5c3RlbXMsIHRoZSBhdXRvY29uZiBtYWNybyBBQ19UWVBFX1VJTlQzMl9UIGRlZmluZXMKLSAqIHVpbnQzMl90IHRvIGJlIHN1Y2ggYSB0eXBlIHVubGVzcyBzdGRpbnQuaCBvciBpbnR0eXBlcy5oIGRlZmluZXMgdWludDMyX3QuCi0gKiBIb3dldmVyLCBpdCBkb2Vzbid0IHNldCBIQVZFX1VJTlQzMl9ULCBzbyB3ZSBkbyB0aGF0IGhlcmUuCi0gKi8KLSNpZmRlZiB1aW50MzJfdAotI2RlZmluZSBIQVZFX1VJTlQzMl9UIDEKICNlbmRpZgogCi0jaWZkZWYgSEFWRV9VSU5UMzJfVAotI2lmbmRlZiBQWV9VSU5UMzJfVAogI2RlZmluZSBQWV9VSU5UMzJfVCB1aW50MzJfdAotI2VuZGlmCi0jZW5kaWYKLQotLyogTWFjcm9zIGZvciBhIDY0LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGU7IHVzZWQgZm9yIHR5cGUgJ3R3b2RpZ2l0cycgaW4gdGhlCi0gKiBpbnRlZ2VyIGltcGxlbWVudGF0aW9uLCB3aGVuIDMwLWJpdCBkaWdpdHMgYXJlIGVuYWJsZWQuCi0gKi8KLSNpZmRlZiB1aW50NjRfdAotI2RlZmluZSBIQVZFX1VJTlQ2NF9UIDEKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9VSU5UNjRfVAotI2lmbmRlZiBQWV9VSU5UNjRfVAogI2RlZmluZSBQWV9VSU5UNjRfVCB1aW50NjRfdAotI2VuZGlmCi0jZW5kaWYKIAogLyogU2lnbmVkIHZhcmlhbnRzIG9mIHRoZSBhYm92ZSAqLwotI2lmZGVmIGludDMyX3QKLSNkZWZpbmUgSEFWRV9JTlQzMl9UIDEKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9JTlQzMl9UCi0jaWZuZGVmIFBZX0lOVDMyX1QKICNkZWZpbmUgUFlfSU5UMzJfVCBpbnQzMl90Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgaW50NjRfdAotI2RlZmluZSBIQVZFX0lOVDY0X1QgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0lOVDY0X1QKLSNpZm5kZWYgUFlfSU5UNjRfVAogI2RlZmluZSBQWV9JTlQ2NF9UIGludDY0X3QKLSNlbmRpZgotI2VuZGlmCiAKIC8qIElmIFBZTE9OR19CSVRTX0lOX0RJR0lUIGlzIG5vdCBkZWZpbmVkIHRoZW4gd2UnbGwgdXNlIDMwLWJpdCBkaWdpdHMgaWYgYWxsCiAgICB0aGUgbmVjZXNzYXJ5IGludGVnZXIgdHlwZXMgYXJlIGF2YWlsYWJsZSwgYW5kIHdlJ3JlIG9uIGEgNjQtYml0IHBsYXRmb3JtCiAgICAoYXMgZGV0ZXJtaW5lZCBieSBTSVpFT0ZfVk9JRF9QKTsgb3RoZXJ3aXNlIHdlIHVzZSAxNS1iaXQgZGlnaXRzLiAqLwogCiAjaWZuZGVmIFBZTE9OR19CSVRTX0lOX0RJR0lUCi0jaWYgKGRlZmluZWQgSEFWRV9VSU5UNjRfVCAmJiBkZWZpbmVkIEhBVkVfSU5UNjRfVCAmJiBcCi0gICAgIGRlZmluZWQgSEFWRV9VSU5UMzJfVCAmJiBkZWZpbmVkIEhBVkVfSU5UMzJfVCAmJiBTSVpFT0ZfVk9JRF9QID49IDgpCisjaWYgU0laRU9GX1ZPSURfUCA+PSA4CiAjZGVmaW5lIFBZTE9OR19CSVRTX0lOX0RJR0lUIDMwCiAjZWxzZQogI2RlZmluZSBQWUxPTkdfQklUU19JTl9ESUdJVCAxNQpAQCAtMTQ5LDI2ICs3Miw5IEBACiAgKiB3aXRob3V0IGxvc3Mgb2YgaW5mb3JtYXRpb24uICBTaW1pbGFybHkgZm9yIGludHB0cl90LCB3cnQgYSBzaWduZWQKICAqIGludGVncmFsIHR5cGUuCiAgKi8KLSNpZmRlZiBIQVZFX1VJTlRQVFJfVAogdHlwZWRlZiB1aW50cHRyX3QgICAgICAgUHlfdWludHB0cl90OwogdHlwZWRlZiBpbnRwdHJfdCAgICAgICAgUHlfaW50cHRyX3Q7CiAKLSNlbGlmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0lOVAotdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgUHlfdWludHB0cl90OwotdHlwZWRlZiBpbnQgICAgICAgICAgICAgUHlfaW50cHRyX3Q7Ci0KLSNlbGlmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgIFB5X3VpbnRwdHJfdDsKLXR5cGVkZWYgbG9uZyAgICAgICAgICAgIFB5X2ludHB0cl90OwotCi0jZWxpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiAoU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9OR19MT05HKQotdHlwZWRlZiB1bnNpZ25lZCBQWV9MT05HX0xPTkcgICBQeV91aW50cHRyX3Q7Ci10eXBlZGVmIFBZX0xPTkdfTE9ORyAgICAgICAgICAgIFB5X2ludHB0cl90OwotCi0jZWxzZQotIyAgIGVycm9yICJQeXRob24gbmVlZHMgYSB0eXBlZGVmIGZvciBQeV91aW50cHRyX3QgaW4gcHlwb3J0LmguIgotI2VuZGlmIC8qIEhBVkVfVUlOVFBUUl9UICovCi0KIC8qIFB5X3NzaXplX3QgaXMgYSBzaWduZWQgaW50ZWdyYWwgdHlwZSBzdWNoIHRoYXQgc2l6ZW9mKFB5X3NzaXplX3QpID09CiAgKiBzaXplb2Yoc2l6ZV90KS4gIEM5OSBkb2Vzbid0IGRlZmluZSBzdWNoIGEgdGhpbmcgZGlyZWN0bHkgKHNpemVfdCBpcyBhbgogICogdW5zaWduZWQgaW50ZWdyYWwgdHlwZSkuICBTZWUgUEVQIDM1MyBmb3IgZGV0YWlscy4KQEAgLTE5NSwxNiArMTAxLDggQEAKIHR5cGVkZWYgaW50IFB5X3NzaXplX2NsZWFuX3Q7CiAjZW5kaWYKIAotLyogTGFyZ2VzdCBwb3NzaWJsZSB2YWx1ZSBvZiBzaXplX3QuCi0gICBTSVpFX01BWCBpcyBwYXJ0IG9mIEM5OSwgc28gaXQgbWlnaHQgYmUgZGVmaW5lZCBvbiBzb21lCi0gICBwbGF0Zm9ybXMuIElmIGl0IGlzIG5vdCBkZWZpbmVkLCAoc2l6ZV90KS0xIGlzIGEgcG9ydGFibGUKLSAgIGRlZmluaXRpb24gZm9yIEM4OSwgZHVlIHRvIHRoZSB3YXkgc2lnbmVkLT51bnNpZ25lZAotICAgY29udmVyc2lvbiBpcyBkZWZpbmVkLiAqLwotI2lmZGVmIFNJWkVfTUFYCisvKiBMYXJnZXN0IHBvc3NpYmxlIHZhbHVlIG9mIHNpemVfdC4gKi8KICNkZWZpbmUgUFlfU0laRV9NQVggU0laRV9NQVgKLSNlbHNlCi0jZGVmaW5lIFBZX1NJWkVfTUFYICgoc2l6ZV90KS0xKQotI2VuZGlmCiAKIC8qIExhcmdlc3QgcG9zaXRpdmUgdmFsdWUgb2YgdHlwZSBQeV9zc2l6ZV90LiAqLwogI2RlZmluZSBQWV9TU0laRV9UX01BWCAoKFB5X3NzaXplX3QpKCgoc2l6ZV90KS0xKT4+MSkpCkBAIC0yNDcsMjIgKzE0NSw2IEBACiAjICAgZW5kaWYKICNlbmRpZgogCi0vKiBQWV9GT1JNQVRfTE9OR19MT05HIGlzIGFuYWxvZ291cyB0byBQWV9GT1JNQVRfU0laRV9UIGFib3ZlLCBidXQgZm9yCi0gKiB0aGUgbG9uZyBsb25nIHR5cGUgaW5zdGVhZCBvZiB0aGUgc2l6ZV90IHR5cGUuICBJdCdzIG9ubHkgYXZhaWxhYmxlCi0gKiB3aGVuIEhBVkVfTE9OR19MT05HIGlzIGRlZmluZWQuIFRoZSAiaGlnaCBsZXZlbCIgUHl0aG9uIGZvcm1hdAotICogZnVuY3Rpb25zIGxpc3RlZCBhYm92ZSB3aWxsIGludGVycHJldCAibGxkIiBvciAibGx1IiBjb3JyZWN0bHkgb24KLSAqIGFsbCBwbGF0Zm9ybXMuCi0gKi8KLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGlmbmRlZiBQWV9GT1JNQVRfTE9OR19MT05HCi0jICAgICAgIGlmZGVmIE1TX1dJTkRPV1MKLSMgICAgICAgICAgIGRlZmluZSBQWV9GT1JNQVRfTE9OR19MT05HICJJNjQiCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGVycm9yICJUaGlzIHBsYXRmb3JtJ3MgcHljb25maWcuaCBuZWVkcyB0byBkZWZpbmUgUFlfRk9STUFUX0xPTkdfTE9ORyIKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotI2VuZGlmCi0KIC8qIFB5X0xPQ0FMIGNhbiBiZSB1c2VkIGluc3RlYWQgb2Ygc3RhdGljIHRvIGdldCB0aGUgZmFzdGVzdCBwb3NzaWJsZSBjYWxsaW5nCiAgKiBjb252ZW50aW9uIGZvciBmdW5jdGlvbnMgdGhhdCBhcmUgbG9jYWwgdG8gYSBnaXZlbiBtb2R1bGUuCiAgKgpAQCAtMjk4LDI2ICsxODAsOSBAQAogI2RlZmluZSBQeV9MT0NBTF9JTkxJTkUodHlwZSkgc3RhdGljIHR5cGUKICNlbmRpZgogCi0vKiBQeV9NRU1DUFkgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBtZW1jcHkgaW4gY2FzZXMgd2hlcmUgdGhlIGNvcGllZCBibG9ja3MKLSAqIGFyZSBvZnRlbiB2ZXJ5IHNob3J0LiAgV2hpbGUgbW9zdCBwbGF0Zm9ybXMgaGF2ZSBoaWdobHkgb3B0aW1pemVkIGNvZGUgZm9yCi0gKiBsYXJnZSB0cmFuc2ZlcnMsIHRoZSBzZXR1cCBjb3N0cyBmb3IgbWVtY3B5IGFyZSBvZnRlbiBxdWl0ZSBoaWdoLiAgTUVNQ1BZCi0gKiBzb2x2ZXMgdGhpcyBieSBkb2luZyBzaG9ydCBjb3BpZXMgImluIGxpbmUiLgotICovCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotI2RlZmluZSBQeV9NRU1DUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzaXplX3QgaV8sIG5fID0gKGxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjaGFyICp0XyA9ICh2b2lkKikgKHRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBjb25zdCBjaGFyICpzXyA9ICh2b2lkKikgKHNvdXJjZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAobl8gPj0gMTYpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbWVtY3B5KHRfLCBzXywgbl8pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZm9yIChpXyA9IDA7IGlfIDwgbl87IGlfKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHRfW2lfXSA9IHNfW2lfXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKDApCi0jZWxzZQorLyogUHlfTUVNQ1BZIGlzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LAorICogc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjgxMjYgKi8KICNkZWZpbmUgUHlfTUVNQ1BZIG1lbWNweQotI2VuZGlmCiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIApAQCAtNTcwLDE4ICs0MzUsMTggQEAKICNkZWZpbmUgSEFWRV9QWV9TRVRfNTNCSVRfUFJFQ0lTSU9OIDEKICNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fSEVBREVSIFwKICAgdW5zaWduZWQgaW50IG9sZF9mcGNyLCBuZXdfZnBjcgotI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9TVEFSVAkJCQkJXAotICBkbyB7CQkJCQkJCQkJXAotICAgIF9fYXNtX18gKCJmbW92ZS5sICUlZnBjciwlMCIgOiAiPWciIChvbGRfZnBjcikpOwkJCVwKLSAgICAvKiBTZXQgZG91YmxlIHByZWNpc2lvbiAvIHJvdW5kIHRvIG5lYXJlc3QuICAqLwkJCVwKLSAgICBuZXdfZnBjciA9IChvbGRfZnBjciAmIH4weGYwKSB8IDB4ODA7CQkJCVwKLSAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpCQkJCQkJXAotICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChuZXdfZnBjcikpOwlcCisjZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX1NUQVJUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgX19hc21fXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKG9sZF9mcGNyKSk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgLyogU2V0IGRvdWJsZSBwcmVjaXNpb24gLyByb3VuZCB0byBuZWFyZXN0LiAgKi8gICAgICAgICAgICAgICAgICAgICBcCisgICAgbmV3X2ZwY3IgPSAob2xkX2ZwY3IgJiB+MHhmMCkgfCAweDgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG5ld19mcGNyKSk7ICAgICAgICBcCiAgIH0gd2hpbGUgKDApCi0jZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX0VORAkJCQkJXAotICBkbyB7CQkJCQkJCQkJXAotICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikJCQkJCQlcCi0gICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG9sZF9mcGNyKSk7CVwKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAob2xkX2ZwY3IpKTsgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKICNlbmRpZgogCkBAIC04NTAsMTAgKzcxNSw2IEBACiAjcHJhZ21hIGVycm9yX21lc3NhZ2VzIChvZmYsRV9FTkRfT0ZfTE9PUF9DT0RFX05PVF9SRUFDSEVEKQogI2VuZGlmCiAKLS8qCi0gKiBPbGRlciBNaWNyb3NvZnQgY29tcGlsZXJzIGRvbid0IHN1cHBvcnQgdGhlIEM5OSBsb25nIGxvbmcgbGl0ZXJhbCBzdWZmaXhlcywKLSAqIHNvIHRoZXNlIHdpbGwgYmUgZGVmaW5lZCBpbiBQQy9weWNvbmZpZy5oIGZvciB0aG9zZSBjb21waWxlcnMuCi0gKi8KICNpZm5kZWYgUHlfTEwKICNkZWZpbmUgUHlfTEwoeCkgeCMjTEwKICNlbmRpZgpAQCAtODYyLDE1ICs3MjMsNyBAQAogI2RlZmluZSBQeV9VTEwoeCkgUHlfTEwoeCMjVSkKICNlbmRpZgogCi0jaWZkZWYgVkFfTElTVF9JU19BUlJBWQotI2RlZmluZSBQeV9WQV9DT1BZKHgsIHkpIFB5X01FTUNQWSgoeCksICh5KSwgc2l6ZW9mKHZhX2xpc3QpKQotI2Vsc2UKLSNpZmRlZiBfX3ZhX2NvcHkKLSNkZWZpbmUgUHlfVkFfQ09QWSBfX3ZhX2NvcHkKLSNlbHNlCi0jZGVmaW5lIFB5X1ZBX0NPUFkoeCwgeSkgKHgpID0gKHkpCi0jZW5kaWYKLSNlbmRpZgorI2RlZmluZSBQeV9WQV9DT1BZIHZhX2NvcHkKIAogLyoKICAqIENvbnZlbmllbnQgbWFjcm9zIHRvIGRlYWwgd2l0aCBlbmRpYW5uZXNzIG9mIHRoZSBwbGF0Zm9ybS4gV09SRFNfQklHRU5ESUFOIGlzCkBAIC05MDYsNCArNzU5LDggQEAKICNlbmRpZiAvKiBfTVNDX1ZFUiA+PSAxOTAwICovCiAjZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwogCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorI2VuZGlmCisKICNlbmRpZiAvKiBQeV9QWVBPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0YXRlLmggYi9JbmNsdWRlL3B5c3RhdGUuaAppbmRleCAwNDk5YTc0Li5hZmMzYzBjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5c3RhdGUuaAorKysgYi9JbmNsdWRlL3B5c3RhdGUuaApAQCAtOCwxNCArOCwyMSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorLyogVGhpcyBsaW1pdGF0aW9uIGlzIGZvciBwZXJmb3JtYW5jZSBhbmQgc2ltcGxpY2l0eS4gSWYgbmVlZGVkIGl0IGNhbiBiZQorcmVtb3ZlZCAod2l0aCBlZmZvcnQpLiAqLworI2RlZmluZSBNQVhfQ09fRVhUUkFfVVNFUlMgMjU1CisKIC8qIFN0YXRlIHNoYXJlZCBiZXR3ZWVuIHRocmVhZHMgKi8KIAogc3RydWN0IF90czsgLyogRm9yd2FyZCAqLwogc3RydWN0IF9pczsgLyogRm9yd2FyZCAqLworc3RydWN0IF9mcmFtZTsgLyogRm9yd2FyZCBkZWNsYXJhdGlvbiBmb3IgUHlGcmFtZU9iamVjdC4gKi8KIAogI2lmZGVmIFB5X0xJTUlURURfQVBJCiB0eXBlZGVmIHN0cnVjdCBfaXMgUHlJbnRlcnByZXRlclN0YXRlOwogI2Vsc2UKK3R5cGVkZWYgUHlPYmplY3QqICgqX1B5RnJhbWVFdmFsRnVuY3Rpb24pKHN0cnVjdCBfZnJhbWUgKiwgaW50KTsKKwogdHlwZWRlZiBzdHJ1Y3QgX2lzIHsKIAogICAgIHN0cnVjdCBfaXMgKm5leHQ7CkBAIC0zNiwxOSArNDMsMTcgQEAKICNpZmRlZiBIQVZFX0RMT1BFTgogICAgIGludCBkbG9wZW5mbGFnczsKICNlbmRpZgotI2lmZGVmIFdJVEhfVFNDCi0gICAgaW50IHRzY2R1bXA7Ci0jZW5kaWYKIAogICAgIFB5T2JqZWN0ICpidWlsdGluc19jb3B5OworICAgIFB5T2JqZWN0ICppbXBvcnRfZnVuYzsKKyAgICAvKiBJbml0aWFsaXplZCB0byBQeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCgpLiAqLworICAgIF9QeUZyYW1lRXZhbEZ1bmN0aW9uIGV2YWxfZnJhbWU7CiB9IFB5SW50ZXJwcmV0ZXJTdGF0ZTsKICNlbmRpZgogCiAKIC8qIFN0YXRlIHVuaXF1ZSBwZXIgdGhyZWFkICovCiAKLXN0cnVjdCBfZnJhbWU7IC8qIEF2b2lkIGluY2x1ZGluZyBmcmFtZW9iamVjdC5oICovCi0KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFB5X3RyYWNlZnVuYyByZXR1cm4gLTEgd2hlbiByYWlzaW5nIGFuIGV4Y2VwdGlvbiwgb3IgMCBmb3Igc3VjY2Vzcy4gKi8KIHR5cGVkZWYgaW50ICgqUHlfdHJhY2VmdW5jKShQeU9iamVjdCAqLCBzdHJ1Y3QgX2ZyYW1lICosIGludCwgUHlPYmplY3QgKik7CkBAIC0xMzcsNiArMTQyLDEyIEBACiAgICAgUHlPYmplY3QgKmNvcm91dGluZV93cmFwcGVyOwogICAgIGludCBpbl9jb3JvdXRpbmVfd3JhcHBlcjsKIAorICAgIFB5X3NzaXplX3QgY29fZXh0cmFfdXNlcl9jb3VudDsKKyAgICBmcmVlZnVuYyBjb19leHRyYV9mcmVlZnVuY3NbTUFYX0NPX0VYVFJBX1VTRVJTXTsKKworICAgIFB5T2JqZWN0ICphc3luY19nZW5fZmlyc3RpdGVyOworICAgIFB5T2JqZWN0ICphc3luY19nZW5fZmluYWxpemVyOworCiAgICAgLyogWFhYIHNpZ25hbCBoYW5kbGVycyBzaG91bGQgYWxzbyBiZSBoZXJlICovCiAKIH0gUHlUaHJlYWRTdGF0ZTsKQEAgLTE0Niw3ICsxNTcsOSBAQAogUHlBUElfRlVOQyhQeUludGVycHJldGVyU3RhdGUgKikgUHlJbnRlcnByZXRlclN0YXRlX05ldyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShQeUludGVycHJldGVyU3RhdGUgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0Kiwgc3RydWN0IFB5TW9kdWxlRGVmKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAogLyogTmV3IGluIDMuMyAqLwogUHlBUElfRlVOQyhpbnQpIFB5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0Kiwgc3RydWN0IFB5TW9kdWxlRGVmKik7CkBAIC0xNTgsMTQgKzE3MSwyMCBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX05ldyhQeUludGVycHJldGVyU3RhdGUgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlUaHJlYWRTdGF0ZV9Jbml0KFB5VGhyZWFkU3RhdGUgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKHZvaWQpIFB5VGhyZWFkU3RhdGVfQ2xlYXIoUHlUaHJlYWRTdGF0ZSAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9EZWxldGUoUHlUaHJlYWRTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkModm9pZCkgX1B5VGhyZWFkU3RhdGVfRGVsZXRlRXhjZXB0KFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjaWZkZWYgV0lUSF9USFJFQUQKIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50KHZvaWQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlHSUxTdGF0ZV9SZWluaXQodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAjZW5kaWYKIAogLyogUmV0dXJuIHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZS4gVGhlIGdsb2JhbCBpbnRlcnByZXRlciBsb2NrIG11c3QgYmUgaGVsZC4KQEAgLTE3Myw5ICsxOTIsMTEgQEAKICAqIHRoZSBjYWxsZXIgbmVlZG4ndCBjaGVjayBmb3IgTlVMTCkuICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9HZXQodm9pZCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFNpbWlsYXIgdG8gUHlUaHJlYWRTdGF0ZV9HZXQoKSwgYnV0IGRvbid0IGlzc3VlIGEgZmF0YWwgZXJyb3IKICAqIGlmIGl0IGlzIE5VTEwuICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlUaHJlYWRTdGF0ZV9Td2FwKFB5VGhyZWFkU3RhdGUgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5VGhyZWFkU3RhdGVfR2V0RGljdCh2b2lkKTsKQEAgLTI0MSwxMSArMjYyLDIzIEBACiAqLwogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKHZvaWQpOwogCi0vKiBIZWxwZXIvZGlhZ25vc3RpYyBmdW5jdGlvbiAtIHJldHVybiAxIGlmIHRoZSBjdXJyZW50IHRocmVhZAotICogY3VycmVudGx5IGhvbGRzIHRoZSBHSUwsIDAgb3RoZXJ3aXNlCi0gKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIElzc3VlICMyNjU1ODogRmxhZyB0byBkaXNhYmxlIFB5R0lMU3RhdGVfQ2hlY2soKS4KKyAgIElmIHNldCB0byBub24temVybywgUHlHSUxTdGF0ZV9DaGVjaygpIGFsd2F5cyByZXR1cm4gMS4gKi8KK1B5QVBJX0RBVEEoaW50KSBfUHlHSUxTdGF0ZV9jaGVja19lbmFibGVkOworCisvKiBIZWxwZXIvZGlhZ25vc3RpYyBmdW5jdGlvbiAtIHJldHVybiAxIGlmIHRoZSBjdXJyZW50IHRocmVhZAorICAgY3VycmVudGx5IGhvbGRzIHRoZSBHSUwsIDAgb3RoZXJ3aXNlLgorCisgICBUaGUgZnVuY3Rpb24gcmV0dXJucyAxIGlmIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgaXMgbm9uLXplcm8uICovCiBQeUFQSV9GVU5DKGludCkgUHlHSUxTdGF0ZV9DaGVjayh2b2lkKTsKKworLyogVW5zYWZlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc2luZ2xlIFB5SW50ZXJwcmV0ZXJTdGF0ZSB1c2VkIGJ5IHRoaXMgcHJvY2VzcycKKyAgIEdJTFN0YXRlIGltcGxlbWVudGF0aW9uLgorCisgICBSZXR1cm4gTlVMTCBiZWZvcmUgX1B5R0lMU3RhdGVfSW5pdCgpIGlzIGNhbGxlZCBhbmQgYWZ0ZXIgX1B5R0lMU3RhdGVfRmluaSgpCisgICBpcyBjYWxsZWQuICovCitQeUFQSV9GVU5DKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKSBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKHZvaWQpOwogI2VuZGlmCiAKICNlbmRpZiAgIC8qICNpZmRlZiBXSVRIX1RIUkVBRCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0cmhleC5oIGIvSW5jbHVkZS9weXN0cmhleC5oCmluZGV4IDFkYzEyNTUuLjY2YTMwZTIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdHJoZXguaAorKysgYi9JbmNsdWRlL3B5c3RyaGV4LmgKQEAgLTUsMTAgKzUsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFJldHVybnMgYSBzdHIoKSBjb250YWluaW5nIHRoZSBoZXggcmVwcmVzZW50YXRpb24gb2YgYXJnYnVmLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9zdHJoZXgoY29uc3QgY2hhciogYXJnYnVmLCBjb25zdCBQeV9zc2l6ZV90IGFyZ2xlbik7CiAvKiBSZXR1cm5zIGEgYnl0ZXMoKSBjb250YWluaW5nIHRoZSBBU0NJSSBoZXggcmVwcmVzZW50YXRpb24gb2YgYXJnYnVmLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9zdHJoZXhfYnl0ZXMoY29uc3QgY2hhciogYXJnYnVmLCBjb25zdCBQeV9zc2l6ZV90IGFyZ2xlbik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXN0cnRvZC5oIGIvSW5jbHVkZS9weXN0cnRvZC5oCmluZGV4IDIzZmQxYzYuLmMxZTg0ZGUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdHJ0b2QuaAorKysgYi9JbmNsdWRlL3B5c3RydG9kLmgKQEAgLTE5LDYgKzE5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdHlwZSk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcygKKyAgICBjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBjb25zdCBjaGFyICp3aGF0LCBQeU9iamVjdCAqb2JqLCB2b2lkICphcmcsCisgICAgUHlPYmplY3QgKigqaW5uZXJmdW5jKShjb25zdCBjaGFyICosIFB5X3NzaXplX3QsIHZvaWQgKikpOworCiBQeUFQSV9GVU5DKGRvdWJsZSkgX1B5X3BhcnNlX2luZl9vcl9uYW4oY29uc3QgY2hhciAqcCwgY2hhciAqKmVuZHB0cik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRob25ydW4uaCBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKaW5kZXggOWMyZTgxMy4uY2ZhMGE5ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAorKysgYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCkBAIC02Niw4ICs2Niw4IEBACiAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwogICAgIGNvbnN0IGNoYXIqIGVuYywKICAgICBpbnQgc3RhcnQsCi0gICAgY2hhciAqcHMxLAotICAgIGNoYXIgKnBzMiwKKyAgICBjb25zdCBjaGFyICpwczEsCisgICAgY29uc3QgY2hhciAqcHMyLAogICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsCiAgICAgaW50ICplcnJjb2RlLAogICAgIFB5QXJlbmEgKmFyZW5hKTsKQEAgLTc2LDggKzc2LDggQEAKICAgICBQeU9iamVjdCAqZmlsZW5hbWUsCiAgICAgY29uc3QgY2hhciogZW5jLAogICAgIGludCBzdGFydCwKLSAgICBjaGFyICpwczEsCi0gICAgY2hhciAqcHMyLAorICAgIGNvbnN0IGNoYXIgKnBzMSwKKyAgICBjb25zdCBjaGFyICpwczIsCiAgICAgUHlDb21waWxlckZsYWdzICpmbGFncywKICAgICBpbnQgKmVycmNvZGUsCiAgICAgUHlBcmVuYSAqYXJlbmEpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRocmVhZC5oIGIvSW5jbHVkZS9weXRocmVhZC5oCmluZGV4IDZlOWYzMDMuLmRkNjgxYmUgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aHJlYWQuaAorKysgYi9JbmNsdWRlL3B5dGhyZWFkLmgKQEAgLTM3LDE5ICszNywxNCBAQAogICAgbW9kdWxlIGV4cG9zZXMgYSBoaWdoZXItbGV2ZWwgQVBJLCB3aXRoIHRpbWVvdXRzIGV4cHJlc3NlZCBpbiBzZWNvbmRzCiAgICBhbmQgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhbGxvd2VkLgogKi8KLSNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKQotI2RlZmluZSBQWV9USU1FT1VUX1QgUFlfTE9OR19MT05HCisjZGVmaW5lIFBZX1RJTUVPVVRfVCBsb25nIGxvbmcKICNkZWZpbmUgUFlfVElNRU9VVF9NQVggUFlfTExPTkdfTUFYCi0jZWxzZQotI2RlZmluZSBQWV9USU1FT1VUX1QgbG9uZwotI2RlZmluZSBQWV9USU1FT1VUX01BWCBMT05HX01BWAotI2VuZGlmCiAKIC8qIEluIHRoZSBOVCBBUEksIHRoZSB0aW1lb3V0IGlzIGEgRFdPUkQgYW5kIGlzIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMgKi8KICNpZiBkZWZpbmVkIChOVF9USFJFQURTKQotI2lmIChQeV9MTCgweEZGRkZGRkZGKSAqIDEwMDAgPCBQWV9USU1FT1VUX01BWCkKKyNpZiAweEZGRkZGRkZGTEwgKiAxMDAwIDwgUFlfVElNRU9VVF9NQVgKICN1bmRlZiBQWV9USU1FT1VUX01BWAotI2RlZmluZSBQWV9USU1FT1VUX01BWCAoUHlfTEwoMHhGRkZGRkZGRikgKiAxMDAwKQorI2RlZmluZSBQWV9USU1FT1VUX01BWCAoMHhGRkZGRkZGRkxMICogMTAwMCkKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aW1lLmggYi9JbmNsdWRlL3B5dGltZS5oCmluZGV4IDQ5NDMyMmMuLjg3YWM3ZmMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aW1lLmgKKysrIGIvSW5jbHVkZS9weXRpbWUuaApAQCAtMTMsMTYgKzEzLDEyIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCi0jaWZkZWYgUFlfSU5UNjRfVAogLyogX1B5VGltZV90OiBQeXRob24gdGltZXN0YW1wIHdpdGggc3Vic2Vjb25kIHByZWNpc2lvbi4gSXQgY2FuIGJlIHVzZWQgdG8KICAgIHN0b3JlIGEgZHVyYXRpb24sIGFuZCBzbyBpbmRpcmVjdGx5IGEgZGF0ZSAocmVsYXRlZCB0byBhbm90aGVyIGRhdGUsIGxpa2UKICAgIFVOSVggZXBvY2gpLiAqLwotdHlwZWRlZiBQWV9JTlQ2NF9UIF9QeVRpbWVfdDsKK3R5cGVkZWYgaW50NjRfdCBfUHlUaW1lX3Q7CiAjZGVmaW5lIF9QeVRpbWVfTUlOIFBZX0xMT05HX01JTgogI2RlZmluZSBfUHlUaW1lX01BWCBQWV9MTE9OR19NQVgKLSNlbHNlCi0jICBlcnJvciAiX1B5VGltZV90IG5lZWQgc2lnbmVkIDY0LWJpdCBpbnRlZ2VyIHR5cGUiCi0jZW5kaWYKIAogdHlwZWRlZiBlbnVtIHsKICAgICAvKiBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKS4KQEAgLTMwLDcgKzI2LDEwIEBACiAgICAgX1B5VGltZV9ST1VORF9GTE9PUj0wLAogICAgIC8qIFJvdW5kIHRvd2FyZHMgaW5maW5pdHkgKCtpbmYpLgogICAgICAgIEZvciBleGFtcGxlLCB1c2VkIGZvciB0aW1lb3V0IHRvIHdhaXQgImF0IGxlYXN0IiBOIHNlY29uZHMuICovCi0gICAgX1B5VGltZV9ST1VORF9DRUlMSU5HCisgICAgX1B5VGltZV9ST1VORF9DRUlMSU5HPTEsCisgICAgLyogUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG8gbmVhcmVzdCBldmVuIGludGVnZXIuCisgICAgICAgRm9yIGV4YW1wbGUsIHVzZWQgdG8gcm91bmQgZnJvbSBhIFB5dGhvbiBmbG9hdC4gKi8KKyAgICBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTgogfSBfUHlUaW1lX3JvdW5kX3Q7CiAKIC8qIENvbnZlcnQgYSB0aW1lX3QgdG8gYSBQeUxvbmcuICovCkBAIC03NSw3ICs3NCw3IEBACiAgICAgICAgICAgICAoKF9QeVRpbWVfdCkoc2Vjb25kcykgKiAoMTAwMCAqIDEwMDAgKiAxMDAwKSkKIAogLyogQ3JlYXRlIGEgdGltZXN0YW1wIGZyb20gYSBudW1iZXIgb2YgbmFub3NlY29uZHMuICovCi1QeUFQSV9GVU5DKF9QeVRpbWVfdCkgX1B5VGltZV9Gcm9tTmFub3NlY29uZHMoUFlfTE9OR19MT05HIG5zKTsKK1B5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhsb25nIGxvbmcgbnMpOwogCiAvKiBDb252ZXJ0IGEgbnVtYmVyIG9mIHNlY29uZHMgKFB5dGhvbiBmbG9hdCBvciBpbnQpIHRvIGEgdGltZXRhbXAuCiAgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvciwgcmV0dXJuIDAgb24gc3VjY2Vzcy4gKi8KQEAgLTE4NSw2ICsxODQsMTQgQEAKICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwogUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfSW5pdCh2b2lkKTsKIAorLyogQ29udmVydHMgYSB0aW1lc3RhbXAgdG8gdGhlIEdyZWdvcmlhbiB0aW1lLCB1c2luZyB0aGUgbG9jYWwgdGltZSB6b25lLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9sb2NhbHRpbWUodGltZV90IHQsIHN0cnVjdCB0bSAqdG0pOworCisvKiBDb252ZXJ0cyBhIHRpbWVzdGFtcCB0byB0aGUgR3JlZ29yaWFuIHRpbWUsIGFzc3VtaW5nIFVUQy4KKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfZ210aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc2V0b2JqZWN0LmggYi9JbmNsdWRlL3NldG9iamVjdC5oCmluZGV4IGYxN2JjMWIuLjg3ZWMxYzggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc2V0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9zZXRvYmplY3QuaApAQCAtMTAsMTIgKzEwLDEzIEBACiAKIC8qIFRoZXJlIGFyZSB0aHJlZSBraW5kcyBvZiBlbnRyaWVzIGluIHRoZSB0YWJsZToKIAotMS4gVW51c2VkOiAga2V5ID09IE5VTEwKLTIuIEFjdGl2ZTogIGtleSAhPSBOVUxMIGFuZCBrZXkgIT0gZHVtbXkKLTMuIER1bW15OiAgIGtleSA9PSBkdW1teQorMS4gVW51c2VkOiAga2V5ID09IE5VTEwgYW5kIGhhc2ggPT0gMAorMi4gRHVtbXk6ICAga2V5ID09IGR1bW15IGFuZCBoYXNoID09IC0xCiszLiBBY3RpdmU6ICBrZXkgIT0gTlVMTCBhbmQga2V5ICE9IGR1bW15IGFuZCBoYXNoICE9IC0xCiAKLVRoZSBoYXNoIGZpZWxkIG9mIFVudXNlZCBzbG90cyBoYXZlIG5vIG1lYW5pbmcuCi1UaGUgaGFzaCBmaWVsZCBvZiBEdW1tbnkgc2xvdHMgYXJlIHNldCB0byAtMQorVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIHNsb3RzIGlzIGFsd2F5cyB6ZXJvLgorCitUaGUgaGFzaCBmaWVsZCBvZiBEdW1teSBzbG90cyBhcmUgc2V0IHRvIC0xCiBtZWFuaW5nIHRoYXQgZHVtbXkgZW50cmllcyBjYW4gYmUgZGV0ZWN0ZWQgYnkKIGVpdGhlciBlbnRyeS0+a2V5PT1kdW1teSBvciBieSBlbnRyeS0+aGFzaD09LTEuCiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaCBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKaW5kZXggOTQ4ZjY5MC4uNWRhOGE0NiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAorKysgYi9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCkBAIC00OSwxMCArNDksOCBAQAogI2RlZmluZSBUX09CSkVDVF9FWCAxNiAgLyogTGlrZSBUX09CSkVDVCwgYnV0IHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgdmFsdWUgaXMgTlVMTCwgaW5zdGVhZCBvZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydGluZyB0byBOb25lLiAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjZGVmaW5lIFRfTE9OR0xPTkcgICAgICAxNwogI2RlZmluZSBUX1VMT05HTE9ORyAgICAgMTgKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogCiAjZGVmaW5lIFRfUFlTU0laRVQgICAgICAxOSAgICAgIC8qIFB5X3NzaXplX3QgKi8KICNkZWZpbmUgVF9OT05FICAgICAgICAgIDIwICAgICAgLyogVmFsdWUgaXMgYWx3YXlzIE5vbmUgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3ltdGFibGUuaCBiL0luY2x1ZGUvc3ltdGFibGUuaAppbmRleCAxNDA5Y2Q5Li44NmFlM2MyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3N5bXRhYmxlLmgKKysrIGIvSW5jbHVkZS9zeW10YWJsZS5oCkBAIC00OCw2ICs0OCw3IEBACiAgICAgdW5zaWduZWQgc3RlX2NoaWxkX2ZyZWUgOiAxOyAgLyogdHJ1ZSBpZiBhIGNoaWxkIGJsb2NrIGhhcyBmcmVlIHZhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGZyZWUgcmVmcyB0byBnbG9iYWxzICovCiAgICAgdW5zaWduZWQgc3RlX2dlbmVyYXRvciA6IDE7ICAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgaXMgYSBnZW5lcmF0b3IgKi8KKyAgICB1bnNpZ25lZCBzdGVfY29yb3V0aW5lIDogMTsgICAvKiB0cnVlIGlmIG5hbWVzcGFjZSBpcyBhIGNvcm91dGluZSAqLwogICAgIHVuc2lnbmVkIHN0ZV92YXJhcmdzIDogMTsgICAgIC8qIHRydWUgaWYgYmxvY2sgaGFzIHZhcmFyZ3MgKi8KICAgICB1bnNpZ25lZCBzdGVfdmFya2V5d29yZHMgOiAxOyAvKiB0cnVlIGlmIGJsb2NrIGhhcyB2YXJrZXl3b3JkcyAqLwogICAgIHVuc2lnbmVkIHN0ZV9yZXR1cm5zX3ZhbHVlIDogMTsgIC8qIHRydWUgaWYgbmFtZXNwYWNlIHVzZXMgcmV0dXJuIHdpdGgKQEAgLTkxLDYgKzkyLDcgQEAKICNkZWZpbmUgREVGX0ZSRUUgMjw8NCAgICAgICAgICAvKiBuYW1lIHVzZWQgYnV0IG5vdCBkZWZpbmVkIGluIG5lc3RlZCBibG9jayAqLwogI2RlZmluZSBERUZfRlJFRV9DTEFTUyAyPDw1ICAgIC8qIGZyZWUgdmFyaWFibGUgZnJvbSBjbGFzcydzIG1ldGhvZCAqLwogI2RlZmluZSBERUZfSU1QT1JUIDI8PDYgICAgICAgIC8qIGFzc2lnbm1lbnQgb2NjdXJyZWQgdmlhIGltcG9ydCAqLworI2RlZmluZSBERUZfQU5OT1QgMjw8NyAgICAgICAgIC8qIHRoaXMgbmFtZSBpcyBhbm5vdGF0ZWQgKi8KIAogI2RlZmluZSBERUZfQk9VTkQgKERFRl9MT0NBTCB8IERFRl9QQVJBTSB8IERFRl9JTVBPUlQpCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3lzbW9kdWxlLmggYi9JbmNsdWRlL3N5c21vZHVsZS5oCmluZGV4IGNkZTEwYWMuLmM1NTQ3ZmYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3lzbW9kdWxlLmgKKysrIGIvSW5jbHVkZS9zeXNtb2R1bGUuaApAQCAtOCwxMSArOCwxMSBAQAogI2VuZGlmCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTeXNfR2V0T2JqZWN0KGNvbnN0IGNoYXIgKik7CitQeUFQSV9GVU5DKGludCkgUHlTeXNfU2V0T2JqZWN0KGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN5c19HZXRPYmplY3RJZChfUHlfSWRlbnRpZmllciAqa2V5KTsKLSNlbmRpZgotUHlBUElfRlVOQyhpbnQpIFB5U3lzX1NldE9iamVjdChjb25zdCBjaGFyICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIF9QeVN5c19TZXRPYmplY3RJZChfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqKTsKKyNlbmRpZgogCiBQeUFQSV9GVU5DKHZvaWQpIFB5U3lzX1NldEFyZ3YoaW50LCB3Y2hhcl90ICoqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlTeXNfU2V0QXJndkV4KGludCwgd2NoYXJfdCAqKiwgaW50KTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHJhY2ViYWNrLmggYi9JbmNsdWRlL3RyYWNlYmFjay5oCmluZGV4IGMzZWNiZTIuLmI1ODc0MTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdHJhY2ViYWNrLmgKKysrIGIvSW5jbHVkZS90cmFjZWJhY2suaApAQCAtMzEsNiArMzEsNyBAQAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5VHJhY2VCYWNrX1R5cGU7CiAjZGVmaW5lIFB5VHJhY2VCYWNrX0NoZWNrKHYpIChQeV9UWVBFKHYpID09ICZQeVRyYWNlQmFja19UeXBlKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBXcml0ZSB0aGUgUHl0aG9uIHRyYWNlYmFjayBpbnRvIHRoZSBmaWxlICdmZCcuIEZvciBleGFtcGxlOgogCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKQEAgLTUzLDE5ICs1NCw2NCBAQAogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSk7CiAKIC8qIFdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgYWxsIHRocmVhZHMgaW50byB0aGUgZmlsZSAnZmQnLiBjdXJyZW50X3RocmVhZCBjYW4gYmUKLSAgIE5VTEwuIFJldHVybiBOVUxMIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuCisgICBOVUxMLgorCisgICBSZXR1cm4gTlVMTCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBtZXNzYWdlIG9uIGVycm9yLgogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gZm9yIGRlYnVnIHB1cnBvc2Ugb25seS4gSXQgY2FsbHMKICAgIF9QeV9EdW1wVHJhY2ViYWNrKCkgZm9yIGVhY2ggdGhyZWFkLCBhbmQgc28gaGFzIHRoZSBzYW1lIGxpbWl0YXRpb25zLiBJdAogICAgb25seSB3cml0ZSB0aGUgdHJhY2ViYWNrIG9mIHRoZSBmaXJzdCAxMDAgdGhyZWFkczogd3JpdGUgIi4uLiIgaWYgdGhlcmUgYXJlCiAgICBtb3JlIHRocmVhZHMuCiAKKyAgIElmIGN1cnJlbnRfdHN0YXRlIGlzIE5VTEwsIHRoZSBmdW5jdGlvbiB0cmllcyB0byBnZXQgdGhlIFB5dGhvbiB0aHJlYWQgc3RhdGUKKyAgIG9mIHRoZSBjdXJyZW50IHRocmVhZC4gSXQgaXMgbm90IGFuIGVycm9yIGlmIHRoZSBmdW5jdGlvbiBpcyB1bmFibGUgdG8gZ2V0CisgICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLgorCisgICBJZiBpbnRlcnAgaXMgTlVMTCwgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgZnJvbQorICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZSwgb3IgZnJvbQorICAgX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSgpIGluIGxhc3QgcmVzb3J0LgorCisgICBJdCBpcyBiZXR0ZXIgdG8gcGFzcyBOVUxMIHRvIGludGVycCBhbmQgY3VycmVudF90c3RhdGUsIHRoZSBmdW5jdGlvbiB0cmllcworICAgZGlmZmVyZW50IG9wdGlvbnMgdG8gcmV0cmlldmUgdGhlc2UgaW5mb3JtYXRpb25zLgorCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIqKSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoCi0gICAgaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKLSAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCk7CisgICAgaW50IGZkLAorICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAorICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdHN0YXRlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorCisvKiBXcml0ZSBhIFVuaWNvZGUgb2JqZWN0IGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4gRW5jb2RlIHRoZSBzdHJpbmcgdG8KKyAgIEFTQ0lJIHVzaW5nIHRoZSBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIuCisKKyAgIERvIG5vdGhpbmcgaWYgdGV4dCBpcyBub3QgYSBVbmljb2RlIG9iamVjdC4gVGhlIGZ1bmN0aW9uIGFjY2VwdHMgVW5pY29kZQorICAgc3RyaW5nIHdoaWNoIGlzIG5vdCByZWFkeSAoUHlVbmljb2RlX1dDSEFSX0tJTkQpLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcEFTQ0lJKGludCBmZCwgUHlPYmplY3QgKnRleHQpOworCisvKiBGb3JtYXQgYW4gaW50ZWdlciBhcyBkZWNpbWFsIGludG8gdGhlIGZpbGUgZGVzY3JpcHRvciBmZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KK1B5QVBJX0ZVTkModm9pZCkgX1B5X0R1bXBEZWNpbWFsKAorICAgIGludCBmZCwKKyAgICB1bnNpZ25lZCBsb25nIHZhbHVlKTsKKworLyogRm9ybWF0IGFuIGludGVnZXIgYXMgaGV4YWRlY2ltYWwgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkIHdpdGggYXQgbGVhc3QKKyAgIHdpZHRoIGRpZ2l0cy4KKworICAgVGhlIG1heGltdW0gd2lkdGggaXMgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKjIgZGlnaXRzLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcEhleGFkZWNpbWFsKAorICAgIGludCBmZCwKKyAgICB1bnNpZ25lZCBsb25nIHZhbHVlLAorICAgIFB5X3NzaXplX3Qgd2lkdGgpOworCisjZW5kaWYgICAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaCBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCmluZGV4IDJjNDk2ZWEuLjU3MTFkZTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oCkBAIC0xMDMsMTAgKzEwMyw2IEBACiAjIGVuZGlmCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSMgIGRlZmluZSBIQVZFX01CQ1MKLSNlbmRpZgotCiAjaWZkZWYgSEFWRV9XQ0hBUl9ICiAvKiBXb3JrIGFyb3VuZCBhIGNvc21ldGljIGJ1ZyBpbiBCU0RJIDQueCB3Y2hhci5oOyB0aGFua3MgdG8gVGhvbWFzIFdvdXRlcnMgKi8KICMgaWZkZWYgX0hBVkVfQlNESQpAQCAtMTE3LDIxICsxMTMsOSBAQAogCiAvKiBQeV9VQ1M0IGFuZCBQeV9VQ1MyIGFyZSB0eXBlZGVmcyBmb3IgdGhlIHJlc3BlY3RpdmUKICAgIHVuaWNvZGUgcmVwcmVzZW50YXRpb25zLiAqLwotI2lmIFNJWkVPRl9JTlQgPT0gNAotdHlwZWRlZiB1bnNpZ25lZCBpbnQgUHlfVUNTNDsKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBQeV9VQ1M0OwotI2Vsc2UKLSNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTNCIKLSNlbmRpZgotCi0jaWYgU0laRU9GX1NIT1JUID09IDIKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgUHlfVUNTMjsKLSNlbHNlCi0jZXJyb3IgIkNvdWxkIG5vdCBmaW5kIGEgcHJvcGVyIHR5cGVkZWYgZm9yIFB5X1VDUzIiCi0jZW5kaWYKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFB5X1VDUzE7Cit0eXBlZGVmIHVpbnQzMl90IFB5X1VDUzQ7Cit0eXBlZGVmIHVpbnQxNl90IFB5X1VDUzI7Cit0eXBlZGVmIHVpbnQ4X3QgUHlfVUNTMTsKIAogLyogLS0tIEludGVybmFsIFVuaWNvZGUgT3BlcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTE3Miw3ICsxNTYsNyBAQAogICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKGNoKSkKIAogI2RlZmluZSBQeV9VTklDT0RFX0NPUFkodGFyZ2V0LCBzb3VyY2UsIGxlbmd0aCkgXAotICAgIFB5X01FTUNQWSgodGFyZ2V0KSwgKHNvdXJjZSksIChsZW5ndGgpKnNpemVvZihQeV9VTklDT0RFKSkKKyAgICBtZW1jcHkoKHRhcmdldCksIChzb3VyY2UpLCAobGVuZ3RoKSpzaXplb2YoUHlfVU5JQ09ERSkpCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9GSUxMKHRhcmdldCwgdmFsdWUsIGxlbmd0aCkgXAogICAgIGRvIHtQeV9zc2l6ZV90IGlfOyBQeV9VTklDT0RFICp0XyA9ICh0YXJnZXQpOyBQeV9VTklDT0RFIHZfID0gKHZhbHVlKTtcCkBAIC05MDAsNyArODg0LDcgQEAKICAgICAvKiBtaW5pbXVtIGNoYXJhY3RlciAoZGVmYXVsdDogMTI3LCBBU0NJSSkgKi8KICAgICBQeV9VQ1M0IG1pbl9jaGFyOwogCi0gICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIGJ5IDI1JSAoZGVmYXVsdDogMCkuICovCisgICAgLyogSWYgbm9uLXplcm8sIG92ZXJhbGxvY2F0ZSB0aGUgYnVmZmVyIChkZWZhdWx0OiAwKS4gKi8KICAgICB1bnNpZ25lZCBjaGFyIG92ZXJhbGxvY2F0ZTsKIAogICAgIC8qIElmIHJlYWRvbmx5IGlzIDEsIGJ1ZmZlciBpcyBhIHNoYXJlZCBzdHJpbmcgKGNhbm5vdCBiZSBtb2RpZmllZCkKQEAgLTkzNCw2ICs5MTgsMjMgQEAKIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpOwogCisvKiBQcmVwYXJlIHRoZSBidWZmZXIgdG8gaGF2ZSBhdCBsZWFzdCB0aGUga2luZCBLSU5ELgorICAgRm9yIGV4YW1wbGUsIGtpbmQ9UHlVbmljb2RlXzJCWVRFX0tJTkQgZW5zdXJlcyB0aGF0IHRoZSB3cml0ZXIgd2lsbAorICAgc3VwcG9ydCBjaGFyYWN0ZXJzIGluIHJhbmdlIFUrMDAwLVUrRkZGRi4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisjZGVmaW5lIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoV1JJVEVSLCBLSU5EKSAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoKEtJTkQpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKEtJTkQpIDw9IChXUklURVIpLT5raW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA6IF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmRJbnRlcm5hbCgoV1JJVEVSKSwgKEtJTkQpKSkKKworLyogRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB1c2UgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKQorICAgbWFjcm8gaW5zdGVhZC4gKi8KK1B5QVBJX0ZVTkMoaW50KQorX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQpOworCiAvKiBBcHBlbmQgYSBVbmljb2RlIGNoYXJhY3Rlci4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLwogUHlBUElfRlVOQyhpbnQpCkBAIC0xMTcwLDIyICsxMTcxLDMwIEBACiAgICAgKTsKIAogLyogRGVjb2RlIGEgVW5pY29kZSBvYmplY3QgdW5pY29kZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uCi0gICBvYmplY3QuICovCisgICBvYmplY3QuCisKKyAgIFRoaXMgQVBJIGlzIERFUFJFQ0FURUQuIFRoZSBvbmx5IHN1cHBvcnRlZCBzdGFuZGFyZCBlbmNvZGluZyBpcyByb3QxMy4KKyAgIFVzZSBQeUNvZGVjX0RlY29kZSgpIHRvIGRlY29kZSB3aXRoIHJvdDEzIGFuZCBub24tc3RhbmRhcmQgY29kZWNzCisgICB0aGF0IGRlY29kZSBmcm9tIHN0ci4gKi8KIAogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsICAgICAgIC8qIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCi0gICAgKTsKKyAgICApIFB5X0RFUFJFQ0FURUQoMy42KTsKIAogLyogRGVjb2RlIGEgVW5pY29kZSBvYmplY3QgdW5pY29kZSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgVW5pY29kZQotICAgb2JqZWN0LiAqLworICAgb2JqZWN0LgorCisgICBUaGlzIEFQSSBpcyBERVBSRUNBVEVELiBUaGUgb25seSBzdXBwb3J0ZWQgc3RhbmRhcmQgZW5jb2RpbmcgaXMgcm90MTMuCisgICBVc2UgUHlDb2RlY19EZWNvZGUoKSB0byBkZWNvZGUgd2l0aCByb3QxMyBhbmQgbm9uLXN0YW5kYXJkIGNvZGVjcworICAgdGhhdCBkZWNvZGUgZnJvbSBzdHIgdG8gc3RyLiAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoCiAgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsICAgICAgIC8qIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCi0gICAgKTsKKyAgICApIFB5X0RFUFJFQ0FURUQoMy42KTsKIAogLyogRW5jb2RlcyBhIFB5X1VOSUNPREUgYnVmZmVyIG9mIHRoZSBnaXZlbiBzaXplIGFuZCByZXR1cm5zIGEKICAgIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAqLwpAQCAtMTIwMCwxMyArMTIwOSwxOCBAQAogI2VuZGlmCiAKIC8qIEVuY29kZXMgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIFB5dGhvbgotICAgb2JqZWN0LiAqLworICAgb2JqZWN0LgorCisgICBUaGlzIEFQSSBpcyBERVBSRUNBVEVELiAgSXQgaXMgc3VwZXJjZWVkZWQgYnkgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpCisgICBzaW5jZSBhbGwgc3RhbmRhcmQgZW5jb2RpbmdzIChleGNlcHQgcm90MTMpIGVuY29kZSBzdHIgdG8gYnl0ZXMuCisgICBVc2UgUHlDb2RlY19FbmNvZGUoKSBmb3IgZW5jb2Rpbmcgd2l0aCByb3QxMyBhbmQgbm9uLXN0YW5kYXJkIGNvZGVjcworICAgdGhhdCBlbmNvZGUgZm9ybSBzdHIgdG8gbm9uLWJ5dGVzLiAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdCgKICAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICBjb25zdCBjaGFyICplbmNvZGluZywgICAgICAgLyogZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KLSAgICApOworICAgICkgUHlfREVQUkVDQVRFRCgzLjYpOwogCiAvKiBFbmNvZGVzIGEgVW5pY29kZSBvYmplY3QgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBQeXRob24gc3RyaW5nCiAgICBvYmplY3QuICovCkBAIC0xMjE4LDEzICsxMjMyLDE3IEBACiAgICAgKTsKIAogLyogRW5jb2RlcyBhIFVuaWNvZGUgb2JqZWN0IGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgVW5pY29kZQotICAgb2JqZWN0LiAqLworICAgb2JqZWN0LgorCisgICBUaGlzIEFQSSBpcyBERVBSRUNBVEVELiAgVGhlIG9ubHkgc3VwcG9ydGVkIHN0YW5kYXJkIGVuY29kaW5ncyBpcyByb3QxMy4KKyAgIFVzZSBQeUNvZGVjX0VuY29kZSgpIHRvIGVuY29kZSB3aXRoIHJvdDEzIGFuZCBub24tc3RhbmRhcmQgY29kZWNzCisgICB0aGF0IGVuY29kZSBmcm9tIHN0ciB0byBzdHIuICovCiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZSgKICAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KICAgICBjb25zdCBjaGFyICplbmNvZGluZywgICAgICAgLyogZW5jb2RpbmcgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KLSAgICApOworICAgICkgUHlfREVQUkVDQVRFRCgzLjYpOwogCiAvKiBCdWlsZCBhbiBlbmNvZGluZyBtYXAuICovCiAKQEAgLTE2NDAsMTMgKzE2NTgsMTMgQEAKICAgICApOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZU1CQ1MoCiAgICAgY29uc3QgY2hhciAqc3RyaW5nLCAgICAgICAgIC8qIE1CQ1MgZW5jb2RlZCBzdHJpbmcgKi8KLSAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKIApAQCAtMTY4Myw3ICsxNzAxLDcgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gRGVjaW1hbCBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTkzOCw2ICsxOTU2LDE0IEBACiAgICAgUHlPYmplY3QgKnNlcSAgICAgICAgICAgICAgIC8qIFNlcXVlbmNlIG9iamVjdCAqLwogICAgICk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Kb2luQXJyYXkoCisgICAgUHlPYmplY3QgKnNlcGFyYXRvciwKKyAgICBQeU9iamVjdCAqKml0ZW1zLAorICAgIFB5X3NzaXplX3Qgc2VxbGVuCisgICAgKTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworCiAvKiBSZXR1cm4gMSBpZiBzdWJzdHIgbWF0Y2hlcyBzdHJbc3RhcnQ6ZW5kXSBhdCB0aGUgZ2l2ZW4gdGFpbCBlbmQsIDAKICAgIG90aGVyd2lzZS4gKi8KIApAQCAtMjI0OCwxMSArMjI3NCwxNyBAQAogICAgIGludCBjaGVja19jb250ZW50KTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBSZXR1cm4gYW4gaW50ZXJuZWQgVW5pY29kZSBvYmplY3QgZm9yIGFuIElkZW50aWZpZXI7IG1heSBmYWlsIGlmIHRoZXJlIGlzIG5vIG1lbW9yeS4qLwogUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUlkKF9QeV9JZGVudGlmaWVyKik7CiAvKiBDbGVhciBhbGwgc3RhdGljIHN0cmluZ3MuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKHZvaWQpOwogCisvKiBGYXN0IGVxdWFsaXR5IGNoZWNrIHdoZW4gdGhlIGlucHV0cyBhcmUga25vd24gdG8gYmUgZXhhY3QgdW5pY29kZSB0eXBlcworICAgYW5kIHdoZXJlIHRoZSBoYXNoIHZhbHVlcyBhcmUgZXF1YWwgKGkuZS4gYSB2ZXJ5IHByb2JhYmxlIG1hdGNoKSAqLworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfRVEoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3dhcm5pbmdzLmggYi9JbmNsdWRlL3dhcm5pbmdzLmgKaW5kZXggZWZmYjlmYWQuLmMxYzY5OTIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvd2FybmluZ3MuaAorKysgYi9JbmNsdWRlL3dhcm5pbmdzLmgKQEAgLTE3LDYgKzE3LDEzIEBACiAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKICAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgICAgICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCiAgICAgLi4uKTsKKworLyogRW1pdCBhIFJlc291cmNlV2FybmluZyB3YXJuaW5nICovCitQeUFQSV9GVU5DKGludCkgUHlFcnJfUmVzb3VyY2VXYXJuaW5nKAorICAgIFB5T2JqZWN0ICpzb3VyY2UsCisgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgICAgICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCisgICAgLi4uKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoCiAgICAgUHlPYmplY3QgKmNhdGVnb3J5LApkaWZmIC0tZ2l0IGEvTGliL19jb2xsZWN0aW9uc19hYmMucHkgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQppbmRleCA4YmViZDY5Li5lZTdkMGYxIDEwMDY0NAotLS0gYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQorKysgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQpAQCAtMTAsOCArMTAsOCBAQAogaW1wb3J0IHN5cwogCiBfX2FsbF9fID0gWyJBd2FpdGFibGUiLCAiQ29yb3V0aW5lIiwgIkFzeW5jSXRlcmFibGUiLCAiQXN5bmNJdGVyYXRvciIsCi0gICAgICAgICAgICJIYXNoYWJsZSIsICJJdGVyYWJsZSIsICJJdGVyYXRvciIsICJHZW5lcmF0b3IiLAotICAgICAgICAgICAiU2l6ZWQiLCAiQ29udGFpbmVyIiwgIkNhbGxhYmxlIiwKKyAgICAgICAgICAgIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwgIkdlbmVyYXRvciIsICJSZXZlcnNpYmxlIiwKKyAgICAgICAgICAgIlNpemVkIiwgIkNvbnRhaW5lciIsICJDYWxsYWJsZSIsICJDb2xsZWN0aW9uIiwKICAgICAgICAgICAgIlNldCIsICJNdXRhYmxlU2V0IiwKICAgICAgICAgICAgIk1hcHBpbmciLCAiTXV0YWJsZU1hcHBpbmciLAogICAgICAgICAgICAiTWFwcGluZ1ZpZXciLCAiS2V5c1ZpZXciLCAiSXRlbXNWaWV3IiwgIlZhbHVlc1ZpZXciLApAQCAtNjMsNiArNjMsMTggQEAKIAogIyMjIE9ORS1UUklDSyBQT05JRVMgIyMjCiAKK2RlZiBfY2hlY2tfbWV0aG9kcyhDLCAqbWV0aG9kcyk6CisgICAgbXJvID0gQy5fX21yb19fCisgICAgZm9yIG1ldGhvZCBpbiBtZXRob2RzOgorICAgICAgICBmb3IgQiBpbiBtcm86CisgICAgICAgICAgICBpZiBtZXRob2QgaW4gQi5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fW21ldGhvZF0gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgIHJldHVybiBUcnVlCisKIGNsYXNzIEhhc2hhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC03NCwxMSArODYsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBIYXNoYWJsZToKLSAgICAgICAgICAgIGZvciBCIGluIEMuX19tcm9fXzoKLSAgICAgICAgICAgICAgICBpZiAiX19oYXNoX18iIGluIEIuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bIl9faGFzaF9fIl06Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2hhc2hfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTkzLDExICsxMDEsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBBd2FpdGFibGU6Ci0gICAgICAgICAgICBmb3IgQiBpbiBDLl9fbXJvX186Ci0gICAgICAgICAgICAgICAgaWYgIl9fYXdhaXRfXyIgaW4gQi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1siX19hd2FpdF9fIl06Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2F3YWl0X18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xMzgsMTQgKzE0Miw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIENvcm91dGluZToKLSAgICAgICAgICAgIG1ybyA9IEMuX19tcm9fXwotICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ19fYXdhaXRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGJhc2UgaW4gbXJvOgotICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgaW4gYmFzZS5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2F3YWl0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTE2Myw4ICsxNjAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBBc3luY0l0ZXJhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2FpdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2FpdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xODMsOSArMTc5LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYXRvcjoKLSAgICAgICAgICAgIGlmIChhbnkoIl9fYW5leHRfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAotICAgICAgICAgICAgICAgIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fYW5leHRfXyIsICJfX2FpdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0yMDEsOCArMTk1LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSXRlcmFibGU6Ci0gICAgICAgICAgICBpZiBhbnkoIl9faXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19pdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0yMjEsOSArMjE0LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSXRlcmF0b3I6Ci0gICAgICAgICAgICBpZiAoYW55KCJfX25leHRfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAotICAgICAgICAgICAgICAgIGFueSgiX19pdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19pdGVyX18nLCAnX19uZXh0X18nKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogSXRlcmF0b3IucmVnaXN0ZXIoYnl0ZXNfaXRlcmF0b3IpCkBAIC0yNDIsNiArMjMzLDIyIEBACiBJdGVyYXRvci5yZWdpc3Rlcih6aXBfaXRlcmF0b3IpCiAKIAorY2xhc3MgUmV2ZXJzaWJsZShJdGVyYWJsZSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgd2hpbGUgRmFsc2U6CisgICAgICAgICAgICB5aWVsZCBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgUmV2ZXJzaWJsZToKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19yZXZlcnNlZF9fIiwgIl9faXRlcl9fIikKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKwogY2xhc3MgR2VuZXJhdG9yKEl0ZXJhdG9yKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC0yODUsMTcgKzI5MiwxMCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBHZW5lcmF0b3I6Ci0gICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KLSAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2l0ZXJfXycsICdfX25leHRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGJhc2UgaW4gbXJvOgotICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgaW4gYmFzZS5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2l0ZXJfXycsICdfX25leHRfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAotCiBHZW5lcmF0b3IucmVnaXN0ZXIoZ2VuZXJhdG9yKQogCiAKQEAgLTMxMCw4ICszMTAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBTaXplZDoKLSAgICAgICAgICAgIGlmIGFueSgiX19sZW5fXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fbGVuX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0zMjYsMTAgKzMyNSwxOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBDb250YWluZXI6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fY29udGFpbnNfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fY29udGFpbnNfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCitjbGFzcyBDb2xsZWN0aW9uKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQ29sbGVjdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAgIl9fbGVuX18iLCAiX19pdGVyX18iLCAiX19jb250YWluc19fIikKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIGNsYXNzIENhbGxhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIApAQCAtMzQyLDE1ICszNDksMTQgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQ2FsbGFibGU6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fY2FsbF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19jYWxsX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCiAjIyMgU0VUUyAjIyMKIAogCi1jbGFzcyBTZXQoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorY2xhc3MgU2V0KENvbGxlY3Rpb24pOgogCiAgICAgIiIiQSBzZXQgaXMgYSBmaW5pdGUsIGl0ZXJhYmxlIGNvbnRhaW5lci4KIApAQCAtNTc1LDcgKzU4MSw3IEBACiAjIyMgTUFQUElOR1MgIyMjCiAKIAotY2xhc3MgTWFwcGluZyhTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CitjbGFzcyBNYXBwaW5nKENvbGxlY3Rpb24pOgogCiAgICAgX19zbG90c19fID0gKCkKIApAQCAtNjIzLDYgKzYyOSw4IEBACiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgcmV0dXJuIGRpY3Qoc2VsZi5pdGVtcygpKSA9PSBkaWN0KG90aGVyLml0ZW1zKCkpCiAKKyAgICBfX3JldmVyc2VkX18gPSBOb25lCisKIE1hcHBpbmcucmVnaXN0ZXIobWFwcGluZ3Byb3h5KQogCiAKQEAgLTY3Miw3ICs2ODAsNyBAQAogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB2ID09IHZhbHVlCisgICAgICAgICAgICByZXR1cm4gdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlCiAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fbWFwcGluZzoKQEAgLTY4Nyw3ICs2OTUsOCBAQAogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fbWFwcGluZzoKLSAgICAgICAgICAgIGlmIHZhbHVlID09IHNlbGYuX21hcHBpbmdba2V5XToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9tYXBwaW5nW2tleV0KKyAgICAgICAgICAgIGlmIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIApAQCAtNzk2LDcgKzgwNSw3IEBACiAjIyMgU0VRVUVOQ0VTICMjIwogCiAKLWNsYXNzIFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKK2NsYXNzIFNlcXVlbmNlKFJldmVyc2libGUsIENvbGxlY3Rpb24pOgogCiAgICAgIiIiQWxsIHRoZSBvcGVyYXRpb25zIG9uIGEgcmVhZC1vbmx5IHNlcXVlbmNlLgogCkBAIC04MjIsNyArODMxLDcgQEAKIAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBmb3IgdiBpbiBzZWxmOgotICAgICAgICAgICAgaWYgdiA9PSB2YWx1ZToKKyAgICAgICAgICAgIGlmIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvTGliL19jb21wYXRfcGlja2xlLnB5IGIvTGliL19jb21wYXRfcGlja2xlLnB5CmluZGV4IGMwZTA0NDMuLmY2ODQ5NmEgMTAwNjQ0Ci0tLSBhL0xpYi9fY29tcGF0X3BpY2tsZS5weQorKysgYi9MaWIvX2NvbXBhdF9waWNrbGUucHkKQEAgLTI0MiwzICsyNDIsMTAgQEAKIAogZm9yIGV4Y25hbWUgaW4gUFlUSE9OM19PU0VSUk9SX0VYQ0VQVElPTlM6CiAgICAgUkVWRVJTRV9OQU1FX01BUFBJTkdbKCdidWlsdGlucycsIGV4Y25hbWUpXSA9ICgnZXhjZXB0aW9ucycsICdPU0Vycm9yJykKKworUFlUSE9OM19JTVBPUlRFUlJPUl9FWENFUFRJT05TID0gKAorICAgICdNb2R1bGVOb3RGb3VuZEVycm9yJywKKykKKworZm9yIGV4Y25hbWUgaW4gUFlUSE9OM19JTVBPUlRFUlJPUl9FWENFUFRJT05TOgorICAgIFJFVkVSU0VfTkFNRV9NQVBQSU5HWygnYnVpbHRpbnMnLCBleGNuYW1lKV0gPSAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKQpkaWZmIC0tZ2l0IGEvTGliL19vc3hfc3VwcG9ydC5weSBiL0xpYi9fb3N4X3N1cHBvcnQucHkKaW5kZXggMTNmY2Q4Yi4uZWFkZjA2ZiAxMDA2NDQKLS0tIGEvTGliL19vc3hfc3VwcG9ydC5weQorKysgYi9MaWIvX29zeF9zdXBwb3J0LnB5CkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICAgICAgIyBEbyBub3QgYWx0ZXIgYSBjb25maWcgdmFyIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiBieSBlbnYgdmFyCiAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCisgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzLCByZS5BU0NJSSkKICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCiAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKIApAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgaWYgJ0NDJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICByZXR1cm4gX2NvbmZpZ192YXJzCiAKLSAgICBpZiByZS5zZWFyY2goJy1hcmNoXHMrcHBjJywgX2NvbmZpZ192YXJzWydDRkxBR1MnXSkgaXMgbm90IE5vbmU6CisgICAgaWYgcmUuc2VhcmNoKHInLWFyY2hccytwcGMnLCBfY29uZmlnX3ZhcnNbJ0NGTEFHUyddKSBpcyBub3QgTm9uZToKICAgICAgICAgIyBOT1RFOiBDYW5ub3QgdXNlIHN1YnByb2Nlc3MgaGVyZSBiZWNhdXNlIG9mIGJvb3RzdHJhcAogICAgICAgICAjIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBpdHNlbGYKICAgICAgICAgc3RhdHVzID0gb3Muc3lzdGVtKApAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKICAgICAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrcHBjXHcqXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrcHBjXHcqXHMnLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKIAogICAgIHJldHVybiBfY29uZmlnX3ZhcnMKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgJy1hcmNoJyBpbiBfY29uZmlnX3ZhcnNbY3ZdOgogICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQotICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgKyAnICcgKyBhcmNoCiAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKQEAgLTQ2NSw3ICs0NjUsNyBAQAogCiAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKIAotICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKCctYXJjaFxzKyhcUyspJywgY2ZsYWdzKQorICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKHInLWFyY2hccysoXFMrKScsIGNmbGFncykKICAgICAgICAgICAgIGFyY2hzID0gdHVwbGUoc29ydGVkKHNldChhcmNocykpKQogCiAgICAgICAgICAgICBpZiBsZW4oYXJjaHMpID09IDE6CmRpZmYgLS1naXQgYS9MaWIvX3B5ZGVjaW1hbC5weSBiL0xpYi9fcHlkZWNpbWFsLnB5CmluZGV4IGE1ZWEzNDAuLjBiNDA5MjggMTAwNjQ0Ci0tLSBhL0xpYi9fcHlkZWNpbWFsLnB5CisrKyBiL0xpYi9fcHlkZWNpbWFsLnB5CkBAIC0xNDgsNyArMTQ4LDcgQEAKIF9fbmFtZV9fID0gJ2RlY2ltYWwnICAgICMgRm9yIHBpY2tsaW5nCiBfX3ZlcnNpb25fXyA9ICcxLjcwJyAgICAjIEhpZ2hlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYyB0aGlzIGNvbXBsaWVzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC8KLV9fbGlibXBkZWNfdmVyc2lvbl9fID0gIjIuNC4xIiAjIGNvbXBhdGlibGUgbGlibXBkZWMgdmVyc2lvbgorX19saWJtcGRlY192ZXJzaW9uX18gPSAiMi40LjIiICMgY29tcGF0aWJsZSBsaWJtcGRlYyB2ZXJzaW9uCiAKIGltcG9ydCBtYXRoIGFzIF9tYXRoCiBpbXBvcnQgbnVtYmVycyBhcyBfbnVtYmVycwpAQCAtNTg5LDcgKzU4OSw3IEBACiAgICAgICAgICMgRnJvbSBhIHN0cmluZwogICAgICAgICAjIFJFcyBpbnNpc3Qgb24gcmVhbCBzdHJpbmdzLCBzbyB3ZSBjYW4gdG9vLgogICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgotICAgICAgICAgICAgbSA9IF9wYXJzZXIodmFsdWUuc3RyaXAoKSkKKyAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkucmVwbGFjZSgiXyIsICIiKSkKICAgICAgICAgICAgIGlmIG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKQEAgLTEwMTAsNiArMTAxMCw1NiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIERlY2ltYWxUdXBsZShzZWxmLl9zaWduLCB0dXBsZShtYXAoaW50LCBzZWxmLl9pbnQpKSwgc2VsZi5fZXhwKQogCisgICAgZGVmIGFzX2ludGVnZXJfcmF0aW8oc2VsZik6CisgICAgICAgICIiIkV4cHJlc3MgYSBmaW5pdGUgRGVjaW1hbCBpbnN0YW5jZSBpbiB0aGUgZm9ybSBuIC8gZC4KKworICAgICAgICBSZXR1cm5zIGEgcGFpciAobiwgZCkgb2YgaW50ZWdlcnMuICBXaGVuIGNhbGxlZCBvbiBhbiBpbmZpbml0eQorICAgICAgICBvciBOYU4sIHJhaXNlcyBPdmVyZmxvd0Vycm9yIG9yIFZhbHVlRXJyb3IgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgID4+PiBEZWNpbWFsKCczLjE0JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgxNTcsIDUwKQorICAgICAgICA+Pj4gRGVjaW1hbCgnLTEyM2U1JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgtMTIzMDAwMDAsIDEpCisgICAgICAgID4+PiBEZWNpbWFsKCcwLjAwJykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgwLCAxKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iKQorCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIDAsIDEKKworICAgICAgICAjIEZpbmQgbiwgZCBpbiBsb3dlc3QgdGVybXMgc3VjaCB0aGF0IGFicyhzZWxmKSA9PSBuIC8gZDsKKyAgICAgICAgIyB3ZSdsbCBkZWFsIHdpdGggdGhlIHNpZ24gbGF0ZXIuCisgICAgICAgIG4gPSBpbnQoc2VsZi5faW50KQorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgICMgc2VsZiBpcyBhbiBpbnRlZ2VyLgorICAgICAgICAgICAgbiwgZCA9IG4gKiAxMCoqc2VsZi5fZXhwLCAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEZpbmQgZDIsIGQ1IHN1Y2ggdGhhdCBhYnMoc2VsZikgPSBuIC8gKDIqKmQyICogNSoqZDUpLgorICAgICAgICAgICAgZDUgPSAtc2VsZi5fZXhwCisgICAgICAgICAgICB3aGlsZSBkNSA+IDAgYW5kIG4gJSA1ID09IDA6CisgICAgICAgICAgICAgICAgbiAvLz0gNQorICAgICAgICAgICAgICAgIGQ1IC09IDEKKworICAgICAgICAgICAgIyAobiAmIC1uKS5iaXRfbGVuZ3RoKCkgLSAxIGNvdW50cyB0cmFpbGluZyB6ZXJvcyBpbiBiaW5hcnkKKyAgICAgICAgICAgICMgcmVwcmVzZW50YXRpb24gb2YgbiAocHJvdmlkZWQgbiBpcyBub256ZXJvKS4KKyAgICAgICAgICAgIGQyID0gLXNlbGYuX2V4cAorICAgICAgICAgICAgc2hpZnQyID0gbWluKChuICYgLW4pLmJpdF9sZW5ndGgoKSAtIDEsIGQyKQorICAgICAgICAgICAgaWYgc2hpZnQyOgorICAgICAgICAgICAgICAgIG4gPj49IHNoaWZ0MgorICAgICAgICAgICAgICAgIGQyIC09IHNoaWZ0MgorCisgICAgICAgICAgICBkID0gNSoqZDUgPDwgZDIKKworICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgbiA9IC1uCisgICAgICAgIHJldHVybiBuLCBkCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG51bWJlciBhcyBhbiBpbnN0YW5jZSBvZiBEZWNpbWFsLiIiIgogICAgICAgICAjIEludmFyaWFudDogIGV2YWwocmVwcihkKSkgPT0gZApAQCAtNDA3NSw3ICs0MTI1LDcgQEAKICAgICAgICAgVGhpcyB3aWxsIG1ha2UgaXQgcm91bmQgdXAgZm9yIHRoYXQgb3BlcmF0aW9uLgogICAgICAgICAiIiIKICAgICAgICAgcm91bmRpbmcgPSBzZWxmLnJvdW5kaW5nCi0gICAgICAgIHNlbGYucm91bmRpbmc9IHR5cGUKKyAgICAgICAgc2VsZi5yb3VuZGluZyA9IHR5cGUKICAgICAgICAgcmV0dXJuIHJvdW5kaW5nCiAKICAgICBkZWYgY3JlYXRlX2RlY2ltYWwoc2VsZiwgbnVtPScwJyk6CkBAIC00MDg0LDEwICs0MTM0LDEwIEBACiAgICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlCiAgICAgICAgIElCTSBEZWNpbWFsIHNwZWNpZmljYXRpb24uIiIiCiAKLSAgICAgICAgaWYgaXNpbnN0YW5jZShudW0sIHN0cikgYW5kIG51bSAhPSBudW0uc3RyaXAoKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShudW0sIHN0cikgYW5kIChudW0gIT0gbnVtLnN0cmlwKCkgb3IgJ18nIGluIG51bSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVybWl0dGVkLiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmRlcnNjb3JlcyBhcmUgbm90IHBlcm1pdHRlZC4iKQogCiAgICAgICAgIGQgPSBEZWNpbWFsKG51bSwgY29udGV4dD1zZWxmKQogICAgICAgICBpZiBkLl9pc25hbigpIGFuZCBsZW4oZC5faW50KSA+IHNlbGYucHJlYyAtIHNlbGYuY2xhbXA6CmRpZmYgLS1naXQgYS9MaWIvX3B5aW8ucHkgYi9MaWIvX3B5aW8ucHkKaW5kZXggMGQ5OGI3NC4uZDA5NDdmMCAxMDA2NDQKLS0tIGEvTGliL19weWlvLnB5CisrKyBiL0xpYi9fcHlpby5weQpAQCAtNiw3ICs2LDYgQEAKIGltcG9ydCBhYmMKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwotaW1wb3J0IGFycmF5CiBpbXBvcnQgc3RhdAogaW1wb3J0IHN5cwogIyBJbXBvcnQgX3RocmVhZCBpbnN0ZWFkIG9mIHRocmVhZGluZyB0byByZWR1Y2Ugc3RhcnR1cCBjb3N0CkBAIC0xNjEsNiArMTYwLDggQEAKICAgICBvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlCiAgICAgb3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuCiAgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZSwgaW50KToKKyAgICAgICAgZmlsZSA9IG9zLmZzcGF0aChmaWxlKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGUsIChzdHIsIGJ5dGVzLCBpbnQpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGZpbGU6ICVyIiAlIGZpbGUpCiAgICAgaWYgbm90IGlzaW5zdGFuY2UobW9kZSwgc3RyKToKQEAgLTE4Miw4ICsxODMsOCBAQAogICAgIHRleHQgPSAidCIgaW4gbW9kZXMKICAgICBiaW5hcnkgPSAiYiIgaW4gbW9kZXMKICAgICBpZiAiVSIgaW4gbW9kZXM6Ci0gICAgICAgIGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgdXNlIFUgYW5kIHdyaXRpbmcgbW9kZSBhdCBvbmNlIikKKyAgICAgICAgaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmcgb3IgdXBkYXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIFUgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggJ3gnLCAndycsICdhJywgb3IgJysnIikKICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgIHdhcm5pbmdzLndhcm4oIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKQEAgLTE1MTYsNyArMTUxNyw3IEBACiAgICAgICAgIGlmIHNlbGYuX2ZkID49IDAgYW5kIHNlbGYuX2Nsb3NlZmQgYW5kIG5vdCBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybigndW5jbG9zZWQgZmlsZSAlcicgJSAoc2VsZiwpLCBSZXNvdXJjZVdhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yLCBzb3VyY2U9c2VsZikKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9fc3RycHRpbWUucHkgYi9MaWIvX3N0cnB0aW1lLnB5CmluZGV4IGY4NDIyN2IuLmZlOTQzNjEgMTAwNjQ0Ci0tLSBhL0xpYi9fc3RycHRpbWUucHkKKysrIGIvTGliL19zdHJwdGltZS5weQpAQCAtMTk5LDEyICsxOTksMTUgQEAKICAgICAgICAgICAgICdmJzogciIoP1A8Zj5bMC05XXsxLDZ9KSIsCiAgICAgICAgICAgICAnSCc6IHIiKD9QPEg+MlswLTNdfFswLTFdXGR8XGQpIiwKICAgICAgICAgICAgICdJJzogciIoP1A8ST4xWzAtMl18MFsxLTldfFsxLTldKSIsCisgICAgICAgICAgICAnRyc6IHIiKD9QPEc+XGRcZFxkXGQpIiwKICAgICAgICAgICAgICdqJzogciIoP1A8aj4zNlswLTZdfDNbMC01XVxkfFsxLTJdXGRcZHwwWzEtOV1cZHwwMFsxLTldfFsxLTldXGR8MFsxLTldfFsxLTldKSIsCiAgICAgICAgICAgICAnbSc6IHIiKD9QPG0+MVswLTJdfDBbMS05XXxbMS05XSkiLAogICAgICAgICAgICAgJ00nOiByIig/UDxNPlswLTVdXGR8XGQpIiwKICAgICAgICAgICAgICdTJzogciIoP1A8Uz42WzAtMV18WzAtNV1cZHxcZCkiLAogICAgICAgICAgICAgJ1UnOiByIig/UDxVPjVbMC0zXXxbMC00XVxkfFxkKSIsCiAgICAgICAgICAgICAndyc6IHIiKD9QPHc+WzAtNl0pIiwKKyAgICAgICAgICAgICd1JzogciIoP1A8dT5bMS03XSkiLAorICAgICAgICAgICAgJ1YnOiByIig/UDxWPjVbMC0zXXwwWzEtOV18WzEtNF1cZHxcZCkiLAogICAgICAgICAgICAgIyBXIGlzIHNldCBiZWxvdyBieSB1c2luZyAnVScKICAgICAgICAgICAgICd5JzogciIoP1A8eT5cZFxkKSIsCiAgICAgICAgICAgICAjWFhYOiBEb2VzICdZJyBuZWVkIHRvIHdvcnJ5IGFib3V0IGhhdmluZyBsZXNzIG9yIG1vcmUgdGhhbgpAQCAtMjk5LDYgKzMwMiwyMiBAQAogICAgICAgICByZXR1cm4gMSArIGRheXNfdG9fd2VlayArIGRheV9vZl93ZWVrCiAKIAorZGVmIF9jYWxjX2p1bGlhbl9mcm9tX1YoaXNvX3llYXIsIGlzb193ZWVrLCBpc29fd2Vla2RheSk6CisgICAgIiIiQ2FsY3VsYXRlIHRoZSBKdWxpYW4gZGF5IGJhc2VkIG9uIHRoZSBJU08gODYwMSB5ZWFyLCB3ZWVrLCBhbmQgd2Vla2RheS4KKyAgICBJU08gd2Vla3Mgc3RhcnQgb24gTW9uZGF5cywgd2l0aCB3ZWVrIDAxIGJlaW5nIHRoZSB3ZWVrIGNvbnRhaW5pbmcgNCBKYW4uCisgICAgSVNPIHdlZWsgZGF5cyByYW5nZSBmcm9tIDEgKE1vbmRheSkgdG8gNyAoU3VuZGF5KS4KKyAgICAiIiIKKyAgICBjb3JyZWN0aW9uID0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgNCkuaXNvd2Vla2RheSgpICsgMworICAgIG9yZGluYWwgPSAoaXNvX3dlZWsgKiA3KSArIGlzb193ZWVrZGF5IC0gY29ycmVjdGlvbgorICAgICMgb3JkaW5hbCBtYXkgYmUgbmVnYXRpdmUgb3IgMCBub3csIHdoaWNoIG1lYW5zIHRoZSBkYXRlIGlzIGluIHRoZSBwcmV2aW91cworICAgICMgY2FsZW5kYXIgeWVhcgorICAgIGlmIG9yZGluYWwgPCAxOgorICAgICAgICBvcmRpbmFsICs9IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDEpLnRvb3JkaW5hbCgpCisgICAgICAgIGlzb195ZWFyIC09IDEKKyAgICAgICAgb3JkaW5hbCAtPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCAxKS50b29yZGluYWwoKQorICAgIHJldHVybiBpc29feWVhciwgb3JkaW5hbAorCisKIGRlZiBfc3RycHRpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdD0iJWEgJWIgJWQgJUg6JU06JVMgJVkiKToKICAgICAiIiJSZXR1cm4gYSAyLXR1cGxlIGNvbnNpc3Rpbmcgb2YgYSB0aW1lIHN0cnVjdCBhbmQgYW4gaW50IGNvbnRhaW5pbmcKICAgICB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUKQEAgLTM0NSwxNSArMzY0LDE1IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuY29udmVydGVkIGRhdGEgcmVtYWluczogJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJpbmdbZm91bmQuZW5kKCk6XSkKIAotICAgIHllYXIgPSBOb25lCisgICAgaXNvX3llYXIgPSB5ZWFyID0gTm9uZQogICAgIG1vbnRoID0gZGF5ID0gMQogICAgIGhvdXIgPSBtaW51dGUgPSBzZWNvbmQgPSBmcmFjdGlvbiA9IDAKICAgICB0eiA9IC0xCiAgICAgdHpvZmZzZXQgPSBOb25lCiAgICAgIyBEZWZhdWx0IHRvIC0xIHRvIHNpZ25pZnkgdGhhdCB2YWx1ZXMgbm90IGtub3duOyBub3QgY3JpdGljYWwgdG8gaGF2ZSwKICAgICAjIHRob3VnaAotICAgIHdlZWtfb2ZfeWVhciA9IC0xCi0gICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gLTEKKyAgICBpc29fd2VlayA9IHdlZWtfb2ZfeWVhciA9IE5vbmUKKyAgICB3ZWVrX29mX3llYXJfc3RhcnQgPSBOb25lCiAgICAgIyB3ZWVrZGF5IGFuZCBqdWxpYW4gZGVmYXVsdGVkIHRvIE5vbmUgc28gYXMgdG8gc2lnbmFsIG5lZWQgdG8gY2FsY3VsYXRlCiAgICAgIyB2YWx1ZXMKICAgICB3ZWVrZGF5ID0ganVsaWFuID0gTm9uZQpAQCAtMzc1LDYgKzM5NCw4IEBACiAgICAgICAgICAgICAgICAgeWVhciArPSAxOTAwCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdZJzoKICAgICAgICAgICAgIHllYXIgPSBpbnQoZm91bmRfZGljdFsnWSddKQorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnRyc6CisgICAgICAgICAgICBpc29feWVhciA9IGludChmb3VuZF9kaWN0WydHJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdtJzoKICAgICAgICAgICAgIG1vbnRoID0gaW50KGZvdW5kX2RpY3RbJ20nXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ0InOgpAQCAtNDIwLDYgKzQ0MSw5IEBACiAgICAgICAgICAgICAgICAgd2Vla2RheSA9IDYKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgd2Vla2RheSAtPSAxCisgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICd1JzoKKyAgICAgICAgICAgIHdlZWtkYXkgPSBpbnQoZm91bmRfZGljdFsndSddKQorICAgICAgICAgICAgd2Vla2RheSAtPSAxCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdqJzoKICAgICAgICAgICAgIGp1bGlhbiA9IGludChmb3VuZF9kaWN0WydqJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5IGluICgnVScsICdXJyk6CkBAIC00MzAsNiArNDU0LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBXIHN0YXJ0cyB3ZWVrIG9uIE1vbmRheS4KICAgICAgICAgICAgICAgICB3ZWVrX29mX3llYXJfc3RhcnQgPSAwCisgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdWJzoKKyAgICAgICAgICAgIGlzb193ZWVrID0gaW50KGZvdW5kX2RpY3RbJ1YnXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ3onOgogICAgICAgICAgICAgeiA9IGZvdW5kX2RpY3RbJ3onXQogICAgICAgICAgICAgdHpvZmZzZXQgPSBpbnQoelsxOjNdKSAqIDYwICsgaW50KHpbMzo1XSkKQEAgLTQ1MCwzMiArNDc2LDYxIEBACiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICMgRGVhbCB3aXRoIHRoZSBjYXNlcyB3aGVyZSBhbWJpZ3VpdGllcyBhcml6ZQorICAgICMgZG9uJ3QgYXNzdW1lIGRlZmF1bHQgdmFsdWVzIGZvciBJU08gd2Vlay95ZWFyCisgICAgaWYgeWVhciBpcyBOb25lIGFuZCBpc29feWVhciBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgaXNvX3dlZWsgaXMgTm9uZSBvciB3ZWVrZGF5IGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08geWVhciBkaXJlY3RpdmUgJyVHJyBtdXN0IGJlIHVzZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgSVNPIHdlZWsgZGlyZWN0aXZlICclVicgYW5kIGEgd2Vla2RheSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RpdmUgKCclQScsICclYScsICcldycsIG9yICcldScpLiIpCisgICAgICAgIGlmIGp1bGlhbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkRheSBvZiB0aGUgeWVhciBkaXJlY3RpdmUgJyVqJyBpcyBub3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJsZSB3aXRoIElTTyB5ZWFyIGRpcmVjdGl2ZSAnJUcnLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgJyVZJyBpbnN0ZWFkLiIpCisgICAgZWxpZiB3ZWVrX29mX3llYXIgaXMgTm9uZSBhbmQgaXNvX3dlZWsgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHdlZWtkYXkgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIG11c3QgYmUgdXNlZCB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBJU08geWVhciBkaXJlY3RpdmUgJyVHJyBhbmQgYSB3ZWVrZGF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGl2ZSAoJyVBJywgJyVhJywgJyV3Jywgb3IgJyV1JykuIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIGlzIGluY29tcGF0aWJsZSB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB5ZWFyIGRpcmVjdGl2ZSAnJVknLiBVc2UgdGhlIElTTyB5ZWFyICclRycgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGVhZC4iKQorCiAgICAgbGVhcF95ZWFyX2ZpeCA9IEZhbHNlCiAgICAgaWYgeWVhciBpcyBOb25lIGFuZCBtb250aCA9PSAyIGFuZCBkYXkgPT0gMjk6CiAgICAgICAgIHllYXIgPSAxOTA0ICAjIDE5MDQgaXMgZmlyc3QgbGVhcCB5ZWFyIG9mIDIwdGggY2VudHVyeQogICAgICAgICBsZWFwX3llYXJfZml4ID0gVHJ1ZQogICAgIGVsaWYgeWVhciBpcyBOb25lOgogICAgICAgICB5ZWFyID0gMTkwMAorCisKICAgICAjIElmIHdlIGtub3cgdGhlIHdlZWsgb2YgdGhlIHllYXIgYW5kIHdoYXQgZGF5IG9mIHRoYXQgd2Vlaywgd2UgY2FuIGZpZ3VyZQogICAgICMgb3V0IHRoZSBKdWxpYW4gZGF5IG9mIHRoZSB5ZWFyLgotICAgIGlmIGp1bGlhbiBpcyBOb25lIGFuZCB3ZWVrX29mX3llYXIgIT0gLTEgYW5kIHdlZWtkYXkgaXMgbm90IE5vbmU6Ci0gICAgICAgIHdlZWtfc3RhcnRzX01vbiA9IFRydWUgaWYgd2Vla19vZl95ZWFyX3N0YXJ0ID09IDAgZWxzZSBGYWxzZQotICAgICAgICBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9VX29yX1coeWVhciwgd2Vla19vZl95ZWFyLCB3ZWVrZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24pCi0gICAgICAgIGlmIGp1bGlhbiA8PSAwOgorICAgIGlmIGp1bGlhbiBpcyBOb25lIGFuZCB3ZWVrZGF5IGlzIG5vdCBOb25lOgorICAgICAgICBpZiB3ZWVrX29mX3llYXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24gPSBUcnVlIGlmIHdlZWtfb2ZfeWVhcl9zdGFydCA9PSAwIGVsc2UgRmFsc2UKKyAgICAgICAgICAgIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1Vfb3JfVyh5ZWFyLCB3ZWVrX29mX3llYXIsIHdlZWtkYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24pCisgICAgICAgIGVsaWYgaXNvX3llYXIgaXMgbm90IE5vbmUgYW5kIGlzb193ZWVrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgeWVhciwganVsaWFuID0gX2NhbGNfanVsaWFuX2Zyb21fVihpc29feWVhciwgaXNvX3dlZWssIHdlZWtkYXkgKyAxKQorICAgICAgICBpZiBqdWxpYW4gaXMgbm90IE5vbmUgYW5kIGp1bGlhbiA8PSAwOgogICAgICAgICAgICAgeWVhciAtPSAxCiAgICAgICAgICAgICB5ZGF5ID0gMzY2IGlmIGNhbGVuZGFyLmlzbGVhcCh5ZWFyKSBlbHNlIDM2NQogICAgICAgICAgICAganVsaWFuICs9IHlkYXkKLSAgICAjIENhbm5vdCBwcmUtY2FsY3VsYXRlIGRhdGV0aW1lX2RhdGUoKSBzaW5jZSBjYW4gY2hhbmdlIGluIEp1bGlhbgotICAgICMgY2FsY3VsYXRpb24gYW5kIHRodXMgY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBkYXkgb2YgdGhlIHdlZWsKLSAgICAjIGNhbGN1bGF0aW9uLgorCiAgICAgaWYganVsaWFuIGlzIE5vbmU6CisgICAgICAgICMgQ2Fubm90IHByZS1jYWxjdWxhdGUgZGF0ZXRpbWVfZGF0ZSgpIHNpbmNlIGNhbiBjaGFuZ2UgaW4gSnVsaWFuCisgICAgICAgICMgY2FsY3VsYXRpb24gYW5kIHRodXMgY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBkYXkgb2YKKyAgICAgICAgIyB0aGUgd2VlayBjYWxjdWxhdGlvbi4KICAgICAgICAgIyBOZWVkIHRvIGFkZCAxIHRvIHJlc3VsdCBzaW5jZSBmaXJzdCBkYXkgb2YgdGhlIHllYXIgaXMgMSwgbm90IDAuCiAgICAgICAgIGp1bGlhbiA9IGRhdGV0aW1lX2RhdGUoeWVhciwgbW9udGgsIGRheSkudG9vcmRpbmFsKCkgLSBcCiAgICAgICAgICAgICAgICAgICBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpICsgMQotICAgIGVsc2U6ICAjIEFzc3VtZSB0aGF0IGlmIHRoZXkgYm90aGVyZWQgdG8gaW5jbHVkZSBKdWxpYW4gZGF5IGl0IHdpbGwKLSAgICAgICAgICAgIyBiZSBhY2N1cmF0ZS4KLSAgICAgICAgZGF0ZXRpbWVfcmVzdWx0ID0gZGF0ZXRpbWVfZGF0ZS5mcm9tb3JkaW5hbCgoanVsaWFuIC0gMSkgKyBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpKQorICAgIGVsc2U6ICAjIEFzc3VtZSB0aGF0IGlmIHRoZXkgYm90aGVyZWQgdG8gaW5jbHVkZSBKdWxpYW4gZGF5IChvciBpZiBpdCB3YXMKKyAgICAgICAgICAgIyBjYWxjdWxhdGVkIGFib3ZlIHdpdGggeWVhci93ZWVrL3dlZWtkYXkpIGl0IHdpbGwgYmUgYWNjdXJhdGUuCisgICAgICAgIGRhdGV0aW1lX3Jlc3VsdCA9IGRhdGV0aW1lX2RhdGUuZnJvbW9yZGluYWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGp1bGlhbiAtIDEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpKQogICAgICAgICB5ZWFyID0gZGF0ZXRpbWVfcmVzdWx0LnllYXIKICAgICAgICAgbW9udGggPSBkYXRldGltZV9yZXN1bHQubW9udGgKICAgICAgICAgZGF5ID0gZGF0ZXRpbWVfcmVzdWx0LmRheQpkaWZmIC0tZ2l0IGEvTGliL2FpZmMucHkgYi9MaWIvYWlmYy5weQppbmRleCA3ZWJkYmViLi42OTJkMGJmIDEwMDY0NAotLS0gYS9MaWIvYWlmYy5weQorKysgYi9MaWIvYWlmYy5weQpAQCAtMjU3LDYgKzI1NywxNSBAQAogX2FpZmNfcGFyYW1zID0gbmFtZWR0dXBsZSgnX2FpZmNfcGFyYW1zJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25jaGFubmVscyBzYW1wd2lkdGggZnJhbWVyYXRlIG5mcmFtZXMgY29tcHR5cGUgY29tcG5hbWUnKQogCitfYWlmY19wYXJhbXMubmNoYW5uZWxzLl9fZG9jX18gPSAnTnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzICgxIGZvciBtb25vLCAyIGZvciBzdGVyZW8pJworX2FpZmNfcGFyYW1zLnNhbXB3aWR0aC5fX2RvY19fID0gJ1NhbXBsZSB3aWR0aCBpbiBieXRlcycKK19haWZjX3BhcmFtcy5mcmFtZXJhdGUuX19kb2NfXyA9ICdTYW1wbGluZyBmcmVxdWVuY3knCitfYWlmY19wYXJhbXMubmZyYW1lcy5fX2RvY19fID0gJ051bWJlciBvZiBhdWRpbyBmcmFtZXMnCitfYWlmY19wYXJhbXMuY29tcHR5cGUuX19kb2NfXyA9ICdDb21wcmVzc2lvbiB0eXBlICgiTk9ORSIgZm9yIEFJRkYgZmlsZXMpJworX2FpZmNfcGFyYW1zLmNvbXBuYW1lLl9fZG9jX18gPSAoIiIiXAorQSBodW1hbi1yZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBjb21wcmVzc2lvbiB0eXBlCisoJ25vdCBjb21wcmVzc2VkJyBmb3IgQUlGRiBmaWxlcykiIiIpCisKIAogY2xhc3MgQWlmY19yZWFkOgogICAgICMgVmFyaWFibGVzIHVzZWQgaW4gdGhpcyBjbGFzczoKZGlmZiAtLWdpdCBhL0xpYi9hcmdwYXJzZS5weSBiL0xpYi9hcmdwYXJzZS5weQppbmRleCA5YTA2NzE5Li4yMDliNGU5IDEwMDY0NAotLS0gYS9MaWIvYXJncGFyc2UucHkKKysrIGIvTGliL2FyZ3BhcnNlLnB5CkBAIC0xMTgsMTAgKzExOCwxNiBAQAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgdHlwZV9uYW1lID0gdHlwZShzZWxmKS5fX25hbWVfXwogICAgICAgICBhcmdfc3RyaW5ncyA9IFtdCisgICAgICAgIHN0YXJfYXJncyA9IHt9CiAgICAgICAgIGZvciBhcmcgaW4gc2VsZi5fZ2V0X2FyZ3MoKToKICAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZChyZXByKGFyZykpCiAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9nZXRfa3dhcmdzKCk6Ci0gICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICBpZiBuYW1lLmlzaWRlbnRpZmllcigpOgorICAgICAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3Rhcl9hcmdzW25hbWVdID0gdmFsdWUKKyAgICAgICAgaWYgc3Rhcl9hcmdzOgorICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKCcqKiVzJyAlIHJlcHIoc3Rhcl9hcmdzKSkKICAgICAgICAgcmV0dXJuICclcyglcyknICUgKHR5cGVfbmFtZSwgJywgJy5qb2luKGFyZ19zdHJpbmdzKSkKIAogICAgIGRlZiBfZ2V0X2t3YXJncyhzZWxmKToKQEAgLTIwNCw4ICsyMTAsNiBAQAogICAgICAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5mb3JtYXR0ZXIuX2luZGVudCgpCiAgICAgICAgICAgICBqb2luID0gc2VsZi5mb3JtYXR0ZXIuX2pvaW5fcGFydHMKLSAgICAgICAgICAgIGZvciBmdW5jLCBhcmdzIGluIHNlbGYuaXRlbXM6Ci0gICAgICAgICAgICAgICAgZnVuYygqYXJncykKICAgICAgICAgICAgIGl0ZW1faGVscCA9IGpvaW4oW2Z1bmMoKmFyZ3MpIGZvciBmdW5jLCBhcmdzIGluIHNlbGYuaXRlbXNdKQogICAgICAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5mb3JtYXR0ZXIuX2RlZGVudCgpCmRpZmYgLS1naXQgYS9MaWIvYXN0LnB5IGIvTGliL2FzdC5weQppbmRleCAwMTcwNDcyLi4xNTZhMWYyIDEwMDY0NAotLS0gYS9MaWIvYXN0LnB5CisrKyBiL0xpYi9hc3QucHkKQEAgLTM1LDYgKzM1LDggQEAKICAgICByZXR1cm4gY29tcGlsZShzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBQeUNGX09OTFlfQVNUKQogCiAKK19OVU1fVFlQRVMgPSAoaW50LCBmbG9hdCwgY29tcGxleCkKKwogZGVmIGxpdGVyYWxfZXZhbChub2RlX29yX3N0cmluZyk6CiAgICAgIiIiCiAgICAgU2FmZWx5IGV2YWx1YXRlIGFuIGV4cHJlc3Npb24gbm9kZSBvciBhIHN0cmluZyBjb250YWluaW5nIGEgUHl0aG9uCkBAIC00Nyw3ICs0OSw5IEBACiAgICAgaWYgaXNpbnN0YW5jZShub2RlX29yX3N0cmluZywgRXhwcmVzc2lvbik6CiAgICAgICAgIG5vZGVfb3Jfc3RyaW5nID0gbm9kZV9vcl9zdHJpbmcuYm9keQogICAgIGRlZiBfY29udmVydChub2RlKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCAoU3RyLCBCeXRlcykpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIENvbnN0YW50KToKKyAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCAoU3RyLCBCeXRlcykpOgogICAgICAgICAgICAgcmV0dXJuIG5vZGUucwogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgTnVtKToKICAgICAgICAgICAgIHJldHVybiBub2RlLm4KQEAgLTYyLDI0ICs2NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW4gemlwKG5vZGUua2V5cywgbm9kZS52YWx1ZXMpKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgTmFtZUNvbnN0YW50KToKICAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBVbmFyeU9wKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcCwgKFVBZGQsIFVTdWIpKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcGVyYW5kLCAoTnVtLCBVbmFyeU9wLCBCaW5PcCkpOgorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgVW5hcnlPcCkgYW5kIGlzaW5zdGFuY2Uobm9kZS5vcCwgKFVBZGQsIFVTdWIpKToKICAgICAgICAgICAgIG9wZXJhbmQgPSBfY29udmVydChub2RlLm9wZXJhbmQpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIFVBZGQpOgotICAgICAgICAgICAgICAgIHJldHVybiArIG9wZXJhbmQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0gb3BlcmFuZAotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQmluT3ApIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wLCAoQWRkLCBTdWIpKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5yaWdodCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5sZWZ0LCAoTnVtLCBVbmFyeU9wLCBCaW5PcCkpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvcGVyYW5kLCBfTlVNX1RZUEVTKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIFVBZGQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKyBvcGVyYW5kCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0gb3BlcmFuZAorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQmluT3ApIGFuZCBpc2luc3RhbmNlKG5vZGUub3AsIChBZGQsIFN1YikpOgogICAgICAgICAgICAgbGVmdCA9IF9jb252ZXJ0KG5vZGUubGVmdCkKICAgICAgICAgICAgIHJpZ2h0ID0gX2NvbnZlcnQobm9kZS5yaWdodCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgQWRkKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCArIHJpZ2h0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGVmdCwgX05VTV9UWVBFUykgYW5kIGlzaW5zdGFuY2UocmlnaHQsIF9OVU1fVFlQRVMpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgQWRkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nOiAnICsgcmVwcihub2RlKSkKICAgICByZXR1cm4gX2NvbnZlcnQobm9kZV9vcl9zdHJpbmcpCiAKQEAgLTE5NiwxMiArMTk3LDE5IEBACiAgICAgIiIiCiAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgKEFzeW5jRnVuY3Rpb25EZWYsIEZ1bmN0aW9uRGVmLCBDbGFzc0RlZiwgTW9kdWxlKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXIgY2FuJ3QgaGF2ZSBkb2NzdHJpbmdzIiAlIG5vZGUuX19jbGFzc19fLl9fbmFtZV9fKQotICAgIGlmIG5vZGUuYm9keSBhbmQgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0sIEV4cHIpIGFuZCBcCi0gICAgICAgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0udmFsdWUsIFN0cik6Ci0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgaW1wb3J0IGluc3BlY3QKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0LmNsZWFuZG9jKG5vZGUuYm9keVswXS52YWx1ZS5zKQotICAgICAgICByZXR1cm4gbm9kZS5ib2R5WzBdLnZhbHVlLnMKKyAgICBpZiBub3Qobm9kZS5ib2R5IGFuZCBpc2luc3RhbmNlKG5vZGUuYm9keVswXSwgRXhwcikpOgorICAgICAgICByZXR1cm4KKyAgICBub2RlID0gbm9kZS5ib2R5WzBdLnZhbHVlCisgICAgaWYgaXNpbnN0YW5jZShub2RlLCBTdHIpOgorICAgICAgICB0ZXh0ID0gbm9kZS5zCisgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIENvbnN0YW50KSBhbmQgaXNpbnN0YW5jZShub2RlLnZhbHVlLCBzdHIpOgorICAgICAgICB0ZXh0ID0gbm9kZS52YWx1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybgorICAgIGlmIGNsZWFuOgorICAgICAgICBpbXBvcnQgaW5zcGVjdAorICAgICAgICB0ZXh0ID0gaW5zcGVjdC5jbGVhbmRvYyh0ZXh0KQorICAgIHJldHVybiB0ZXh0CiAKIAogZGVmIHdhbGsobm9kZSk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNoYXQucHkgYi9MaWIvYXN5bmNoYXQucHkKaW5kZXggZjcyOGQxYi4uZmMxMTQ2YSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaGF0LnB5CisrKyBiL0xpYi9hc3luY2hhdC5weQpAQCAtMjg1LDM1ICsyODUsNiBAQAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKLWNsYXNzIGZpZm86Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpc3Q9Tm9uZSk6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCdmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42JywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgaWYgbm90IGxpc3Q6Ci0gICAgICAgICAgICBzZWxmLmxpc3QgPSBkZXF1ZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmxpc3QgPSBkZXF1ZShsaXN0KQotCi0gICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBsZW4oc2VsZi5saXN0KQotCi0gICAgZGVmIGlzX2VtcHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYubGlzdAotCi0gICAgZGVmIGZpcnN0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5saXN0WzBdCi0KLSAgICBkZWYgcHVzaChzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5saXN0LmFwcGVuZChkYXRhKQotCi0gICAgZGVmIHBvcChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5saXN0OgotICAgICAgICAgICAgcmV0dXJuICgxLCBzZWxmLmxpc3QucG9wbGVmdCgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICgwLCBOb25lKQotCi0KICMgR2l2ZW4gJ2hheXN0YWNrJywgc2VlIGlmIGFueSBwcmVmaXggb2YgJ25lZWRsZScgaXMgYXQgaXRzIGVuZC4gIFRoaXMKICMgYXNzdW1lcyBhbiBleGFjdCBtYXRjaCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQuICBSZXR1cm4gdGhlIG51bWJlciBvZgogIyBjaGFyYWN0ZXJzIG1hdGNoZWQuCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CmluZGV4IGIzZTMxOGUuLmNjOTk5NGQgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CkBAIC01Nyw3ICs1Nyw3IEBACiAKIGRlZiBfZm9ybWF0X2hhbmRsZShoYW5kbGUpOgogICAgIGNiID0gaGFuZGxlLl9jYWxsYmFjawotICAgIGlmIGluc3BlY3QuaXNtZXRob2QoY2IpIGFuZCBpc2luc3RhbmNlKGNiLl9fc2VsZl9fLCB0YXNrcy5UYXNrKToKKyAgICBpZiBpc2luc3RhbmNlKGdldGF0dHIoY2IsICdfX3NlbGZfXycsIE5vbmUpLCB0YXNrcy5UYXNrKToKICAgICAgICAgIyBmb3JtYXQgdGhlIHRhc2sKICAgICAgICAgcmV0dXJuIHJlcHIoY2IuX19zZWxmX18pCiAgICAgZWxzZToKQEAgLTM0OCw2ICszNDgsOSBAQAogICAgICAgICBzZWxmLl9hc3luY2dlbnMuZGlzY2FyZChhZ2VuKQogICAgICAgICBpZiBub3Qgc2VsZi5pc19jbG9zZWQoKToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3Rhc2soYWdlbi5hY2xvc2UoKSkKKyAgICAgICAgICAgICMgV2FrZSB1cCB0aGUgbG9vcCBpZiB0aGUgZmluYWxpemVyIHdhcyBjYWxsZWQgZnJvbQorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCB0aHJlYWQuCisgICAgICAgICAgICBzZWxmLl93cml0ZV90b19zZWxmKCkKIAogICAgIGRlZiBfYXN5bmNnZW5fZmlyc3RpdGVyX2hvb2soc2VsZiwgYWdlbik6CiAgICAgICAgIGlmIHNlbGYuX2FzeW5jZ2Vuc19zaHV0ZG93bl9jYWxsZWQ6CkBAIC00ODUsNyArNDg4LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19jbG9zZWQoKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2VfZnV0dXJlcy5weSBiL0xpYi9hc3luY2lvL2Jhc2VfZnV0dXJlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGY3ODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9mdXR1cmVzLnB5CkBAIC0wLDAgKzEsNzAgQEAKK19fYWxsX18gPSBbXQorCitpbXBvcnQgY29uY3VycmVudC5mdXR1cmVzLl9iYXNlCitpbXBvcnQgcmVwcmxpYgorCitmcm9tIC4gaW1wb3J0IGV2ZW50cworCitFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZS5FcnJvcgorQ2FuY2VsbGVkRXJyb3IgPSBjb25jdXJyZW50LmZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IKK1RpbWVvdXRFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5UaW1lb3V0RXJyb3IKKworCitjbGFzcyBJbnZhbGlkU3RhdGVFcnJvcihFcnJvcik6CisgICAgIiIiVGhlIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGlzIHN0YXRlLiIiIgorCisKKyMgU3RhdGVzIGZvciBGdXR1cmUuCitfUEVORElORyA9ICdQRU5ESU5HJworX0NBTkNFTExFRCA9ICdDQU5DRUxMRUQnCitfRklOSVNIRUQgPSAnRklOSVNIRUQnCisKKworZGVmIGlzZnV0dXJlKG9iaik6CisgICAgIiIiQ2hlY2sgZm9yIGEgRnV0dXJlLgorCisgICAgVGhpcyByZXR1cm5zIFRydWUgd2hlbiBvYmogaXMgYSBGdXR1cmUgaW5zdGFuY2Ugb3IgaXMgYWR2ZXJ0aXNpbmcKKyAgICBpdHNlbGYgYXMgZHVjay10eXBlIGNvbXBhdGlibGUgYnkgc2V0dGluZyBfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcuCisgICAgU2VlIGNvbW1lbnQgaW4gRnV0dXJlIGZvciBtb3JlIGRldGFpbHMuCisgICAgIiIiCisgICAgcmV0dXJuIGdldGF0dHIob2JqLCAnX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nJywgTm9uZSkgaXMgbm90IE5vbmUKKworCitkZWYgX2Zvcm1hdF9jYWxsYmFja3MoY2IpOgorICAgICIiImhlbHBlciBmdW5jdGlvbiBmb3IgRnV0dXJlLl9fcmVwcl9fIiIiCisgICAgc2l6ZSA9IGxlbihjYikKKyAgICBpZiBub3Qgc2l6ZToKKyAgICAgICAgY2IgPSAnJworCisgICAgZGVmIGZvcm1hdF9jYihjYWxsYmFjayk6CisgICAgICAgIHJldHVybiBldmVudHMuX2Zvcm1hdF9jYWxsYmFja19zb3VyY2UoY2FsbGJhY2ssICgpKQorCisgICAgaWYgc2l6ZSA9PSAxOgorICAgICAgICBjYiA9IGZvcm1hdF9jYihjYlswXSkKKyAgICBlbGlmIHNpemUgPT0gMjoKKyAgICAgICAgY2IgPSAne30sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdKSwgZm9ybWF0X2NiKGNiWzFdKSkKKyAgICBlbGlmIHNpemUgPiAyOgorICAgICAgICBjYiA9ICd7fSwgPHt9IG1vcmU+LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSAtIDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2NiKGNiWy0xXSkpCisgICAgcmV0dXJuICdjYj1bJXNdJyAlIGNiCisKKworZGVmIF9mdXR1cmVfcmVwcl9pbmZvKGZ1dHVyZSk6CisgICAgIyAoRnV0dXJlKSAtPiBzdHIKKyAgICAiIiJoZWxwZXIgZnVuY3Rpb24gZm9yIEZ1dHVyZS5fX3JlcHJfXyIiIgorICAgIGluZm8gPSBbZnV0dXJlLl9zdGF0ZS5sb3dlcigpXQorICAgIGlmIGZ1dHVyZS5fc3RhdGUgPT0gX0ZJTklTSEVEOgorICAgICAgICBpZiBmdXR1cmUuX2V4Y2VwdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGluZm8uYXBwZW5kKCdleGNlcHRpb249eyFyfScuZm9ybWF0KGZ1dHVyZS5fZXhjZXB0aW9uKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgdXNlIHJlcHJsaWIgdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LCBlc3BlY2lhbGx5CisgICAgICAgICAgICAjIGZvciB2ZXJ5IGxvbmcgc3RyaW5ncworICAgICAgICAgICAgcmVzdWx0ID0gcmVwcmxpYi5yZXByKGZ1dHVyZS5fcmVzdWx0KQorICAgICAgICAgICAgaW5mby5hcHBlbmQoJ3Jlc3VsdD17fScuZm9ybWF0KHJlc3VsdCkpCisgICAgaWYgZnV0dXJlLl9jYWxsYmFja3M6CisgICAgICAgIGluZm8uYXBwZW5kKF9mb3JtYXRfY2FsbGJhY2tzKGZ1dHVyZS5fY2FsbGJhY2tzKSkKKyAgICBpZiBmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2s6CisgICAgICAgIGZyYW1lID0gZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQorICAgICAgICBpbmZvLmFwcGVuZCgnY3JlYXRlZCBhdCAlczolcycgJSAoZnJhbWVbMF0sIGZyYW1lWzFdKSkKKyAgICByZXR1cm4gaW5mbwpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5IGIvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5CmluZGV4IDIzNzQyYTEuLmEwMGQ5ZDUgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weQorKysgYi9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkKQEAgLTEyNyw3ICsxMjcsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgZ2V0X3BpZChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2VfdGFza3MucHkgYi9MaWIvYXN5bmNpby9iYXNlX3Rhc2tzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmMzQ0MzQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvYXN5bmNpby9iYXNlX3Rhc2tzLnB5CkBAIC0wLDAgKzEsNzYgQEAKK2ltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCB0cmFjZWJhY2sKKworZnJvbSAuIGltcG9ydCBiYXNlX2Z1dHVyZXMKK2Zyb20gLiBpbXBvcnQgY29yb3V0aW5lcworCisKK2RlZiBfdGFza19yZXByX2luZm8odGFzayk6CisgICAgaW5mbyA9IGJhc2VfZnV0dXJlcy5fZnV0dXJlX3JlcHJfaW5mbyh0YXNrKQorCisgICAgaWYgdGFzay5fbXVzdF9jYW5jZWw6CisgICAgICAgICMgcmVwbGFjZSBzdGF0dXMKKyAgICAgICAgaW5mb1swXSA9ICdjYW5jZWxsaW5nJworCisgICAgY29ybyA9IGNvcm91dGluZXMuX2Zvcm1hdF9jb3JvdXRpbmUodGFzay5fY29ybykKKyAgICBpbmZvLmluc2VydCgxLCAnY29ybz08JXM+JyAlIGNvcm8pCisKKyAgICBpZiB0YXNrLl9mdXRfd2FpdGVyIGlzIG5vdCBOb25lOgorICAgICAgICBpbmZvLmluc2VydCgyLCAnd2FpdF9mb3I9JXInICUgdGFzay5fZnV0X3dhaXRlcikKKyAgICByZXR1cm4gaW5mbworCisKK2RlZiBfdGFza19nZXRfc3RhY2sodGFzaywgbGltaXQpOgorICAgIGZyYW1lcyA9IFtdCisgICAgdHJ5OgorICAgICAgICAjICdhc3luYyBkZWYnIGNvcm91dGluZXMKKyAgICAgICAgZiA9IHRhc2suX2Nvcm8uY3JfZnJhbWUKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGYgPSB0YXNrLl9jb3JvLmdpX2ZyYW1lCisgICAgaWYgZiBpcyBub3QgTm9uZToKKyAgICAgICAgd2hpbGUgZiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGxpbWl0IDw9IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbGltaXQgLT0gMQorICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChmKQorICAgICAgICAgICAgZiA9IGYuZl9iYWNrCisgICAgICAgIGZyYW1lcy5yZXZlcnNlKCkKKyAgICBlbGlmIHRhc2suX2V4Y2VwdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAgdGIgPSB0YXNrLl9leGNlcHRpb24uX190cmFjZWJhY2tfXworICAgICAgICB3aGlsZSB0YiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGxpbWl0IDw9IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbGltaXQgLT0gMQorICAgICAgICAgICAgZnJhbWVzLmFwcGVuZCh0Yi50Yl9mcmFtZSkKKyAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAorICAgIHJldHVybiBmcmFtZXMKKworCitkZWYgX3Rhc2tfcHJpbnRfc3RhY2sodGFzaywgbGltaXQsIGZpbGUpOgorICAgIGV4dHJhY3RlZF9saXN0ID0gW10KKyAgICBjaGVja2VkID0gc2V0KCkKKyAgICBmb3IgZiBpbiB0YXNrLmdldF9zdGFjayhsaW1pdD1saW1pdCk6CisgICAgICAgIGxpbmVubyA9IGYuZl9saW5lbm8KKyAgICAgICAgY28gPSBmLmZfY29kZQorICAgICAgICBmaWxlbmFtZSA9IGNvLmNvX2ZpbGVuYW1lCisgICAgICAgIG5hbWUgPSBjby5jb19uYW1lCisgICAgICAgIGlmIGZpbGVuYW1lIG5vdCBpbiBjaGVja2VkOgorICAgICAgICAgICAgY2hlY2tlZC5hZGQoZmlsZW5hbWUpCisgICAgICAgICAgICBsaW5lY2FjaGUuY2hlY2tjYWNoZShmaWxlbmFtZSkKKyAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8sIGYuZl9nbG9iYWxzKQorICAgICAgICBleHRyYWN0ZWRfbGlzdC5hcHBlbmQoKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUpKQorICAgIGV4YyA9IHRhc2suX2V4Y2VwdGlvbgorICAgIGlmIG5vdCBleHRyYWN0ZWRfbGlzdDoKKyAgICAgICAgcHJpbnQoJ05vIHN0YWNrIGZvciAlcicgJSB0YXNrLCBmaWxlPWZpbGUpCisgICAgZWxpZiBleGMgaXMgbm90IE5vbmU6CisgICAgICAgIHByaW50KCdUcmFjZWJhY2sgZm9yICVyIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOicgJSB0YXNrLAorICAgICAgICAgICAgICBmaWxlPWZpbGUpCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQoJ1N0YWNrIGZvciAlciAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonICUgdGFzaywKKyAgICAgICAgICAgICAgZmlsZT1maWxlKQorICAgIHRyYWNlYmFjay5wcmludF9saXN0KGV4dHJhY3RlZF9saXN0LCBmaWxlPWZpbGUpCisgICAgaWYgZXhjIGlzIG5vdCBOb25lOgorICAgICAgICBmb3IgbGluZSBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KGV4Yy5fX2NsYXNzX18sIGV4Yyk6CisgICAgICAgICAgICBwcmludChsaW5lLCBmaWxlPWZpbGUsIGVuZD0nJykKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Nvcm91dGluZXMucHkgYi9MaWIvYXN5bmNpby9jb3JvdXRpbmVzLnB5CmluZGV4IDFkYjcwMzAuLjE2N2MxZTQgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL2Nvcm91dGluZXMucHkKKysrIGIvTGliL2FzeW5jaW8vY29yb3V0aW5lcy5weQpAQCAtMTEsNyArMTEsNyBAQAogCiBmcm9tIC4gaW1wb3J0IGNvbXBhdAogZnJvbSAuIGltcG9ydCBldmVudHMKLWZyb20gLiBpbXBvcnQgZnV0dXJlcworZnJvbSAuIGltcG9ydCBiYXNlX2Z1dHVyZXMKIGZyb20gLmxvZyBpbXBvcnQgbG9nZ2VyCiAKIApAQCAtMjA0LDcgKzIwNCw3IEBACiAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKICAgICAgICAgZGVmIGNvcm8oKmFyZ3MsICoqa3cpOgogICAgICAgICAgICAgcmVzID0gZnVuYygqYXJncywgKiprdykKLSAgICAgICAgICAgIGlmIChmdXR1cmVzLmlzZnV0dXJlKHJlcykgb3IgaW5zcGVjdC5pc2dlbmVyYXRvcihyZXMpIG9yCisgICAgICAgICAgICBpZiAoYmFzZV9mdXR1cmVzLmlzZnV0dXJlKHJlcykgb3IgaW5zcGVjdC5pc2dlbmVyYXRvcihyZXMpIG9yCiAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShyZXMsIENvcm9XcmFwcGVyKSk6CiAgICAgICAgICAgICAgICAgcmVzID0geWllbGQgZnJvbSByZXMKICAgICAgICAgICAgIGVsaWYgX0F3YWl0YWJsZUFCQyBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Z1dHVyZXMucHkgYi9MaWIvYXN5bmNpby9mdXR1cmVzLnB5CmluZGV4IGJjZDRkMTYuLmQxMWQyODkgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL2Z1dHVyZXMucHkKKysrIGIvTGliL2FzeW5jaW8vZnV0dXJlcy5weQpAQCAtMSwzNSArMSwzMiBAQAogIiIiQSBGdXR1cmUgY2xhc3Mgc2ltaWxhciB0byB0aGUgb25lIGluIFBFUCAzMTQ4LiIiIgogCi1fX2FsbF9fID0gWydDYW5jZWxsZWRFcnJvcicsICdUaW1lb3V0RXJyb3InLAotICAgICAgICAgICAnSW52YWxpZFN0YXRlRXJyb3InLAotICAgICAgICAgICAnRnV0dXJlJywgJ3dyYXBfZnV0dXJlJywKLSAgICAgICAgICAgXQorX19hbGxfXyA9IFsnQ2FuY2VsbGVkRXJyb3InLCAnVGltZW91dEVycm9yJywgJ0ludmFsaWRTdGF0ZUVycm9yJywKKyAgICAgICAgICAgJ0Z1dHVyZScsICd3cmFwX2Z1dHVyZScsICdpc2Z1dHVyZSddCiAKLWltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMuX2Jhc2UKK2ltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmVwcmxpYgogaW1wb3J0IHN5cwogaW1wb3J0IHRyYWNlYmFjawogCitmcm9tIC4gaW1wb3J0IGJhc2VfZnV0dXJlcwogZnJvbSAuIGltcG9ydCBjb21wYXQKIGZyb20gLiBpbXBvcnQgZXZlbnRzCiAKLSMgU3RhdGVzIGZvciBGdXR1cmUuCi1fUEVORElORyA9ICdQRU5ESU5HJwotX0NBTkNFTExFRCA9ICdDQU5DRUxMRUQnCi1fRklOSVNIRUQgPSAnRklOSVNIRUQnCiAKLUVycm9yID0gY29uY3VycmVudC5mdXR1cmVzLl9iYXNlLkVycm9yCi1DYW5jZWxsZWRFcnJvciA9IGNvbmN1cnJlbnQuZnV0dXJlcy5DYW5jZWxsZWRFcnJvcgotVGltZW91dEVycm9yID0gY29uY3VycmVudC5mdXR1cmVzLlRpbWVvdXRFcnJvcgorQ2FuY2VsbGVkRXJyb3IgPSBiYXNlX2Z1dHVyZXMuQ2FuY2VsbGVkRXJyb3IKK0ludmFsaWRTdGF0ZUVycm9yID0gYmFzZV9mdXR1cmVzLkludmFsaWRTdGF0ZUVycm9yCitUaW1lb3V0RXJyb3IgPSBiYXNlX2Z1dHVyZXMuVGltZW91dEVycm9yCitpc2Z1dHVyZSA9IGJhc2VfZnV0dXJlcy5pc2Z1dHVyZQorCisKK19QRU5ESU5HID0gYmFzZV9mdXR1cmVzLl9QRU5ESU5HCitfQ0FOQ0VMTEVEID0gYmFzZV9mdXR1cmVzLl9DQU5DRUxMRUQKK19GSU5JU0hFRCA9IGJhc2VfZnV0dXJlcy5fRklOSVNIRUQKKwogCiBTVEFDS19ERUJVRyA9IGxvZ2dpbmcuREVCVUcgLSAxICAjIGhlYXZ5LWR1dHkgZGVidWdnaW5nCiAKIAotY2xhc3MgSW52YWxpZFN0YXRlRXJyb3IoRXJyb3IpOgotICAgICIiIlRoZSBvcGVyYXRpb24gaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBzdGF0ZS4iIiIKLQotCiBjbGFzcyBfVHJhY2ViYWNrTG9nZ2VyOgogICAgICIiIkhlbHBlciB0byBsb2cgYSB0cmFjZWJhY2sgdXBvbiBkZXN0cnVjdGlvbiBpZiBub3QgY2xlYXJlZC4KIApAQCAtMTEwLDE2ICsxMDcsNiBAQAogICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfZXhjZXB0aW9uX2hhbmRsZXIoeydtZXNzYWdlJzogbXNnfSkKIAogCi1kZWYgaXNmdXR1cmUob2JqKToKLSAgICAiIiJDaGVjayBmb3IgYSBGdXR1cmUuCi0KLSAgICBUaGlzIHJldHVybnMgVHJ1ZSB3aGVuIG9iaiBpcyBhIEZ1dHVyZSBpbnN0YW5jZSBvciBpcyBhZHZlcnRpc2luZwotICAgIGl0c2VsZiBhcyBkdWNrLXR5cGUgY29tcGF0aWJsZSBieSBzZXR0aW5nIF9hc3luY2lvX2Z1dHVyZV9ibG9ja2luZy4KLSAgICBTZWUgY29tbWVudCBpbiBGdXR1cmUgZm9yIG1vcmUgZGV0YWlscy4KLSAgICAiIiIKLSAgICByZXR1cm4gZ2V0YXR0cihvYmosICdfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcnLCBOb25lKSBpcyBub3QgTm9uZQotCi0KIGNsYXNzIEZ1dHVyZToKICAgICAiIiJUaGlzIGNsYXNzIGlzICphbG1vc3QqIGNvbXBhdGlibGUgd2l0aCBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLgogCkBAIC0xNzIsNDUgKzE1OSwxMCBAQAogICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgc2VsZi5fc291cmNlX3RyYWNlYmFjayA9IHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKHN5cy5fZ2V0ZnJhbWUoMSkpCiAKLSAgICBkZWYgX19mb3JtYXRfY2FsbGJhY2tzKHNlbGYpOgotICAgICAgICBjYiA9IHNlbGYuX2NhbGxiYWNrcwotICAgICAgICBzaXplID0gbGVuKGNiKQotICAgICAgICBpZiBub3Qgc2l6ZToKLSAgICAgICAgICAgIGNiID0gJycKLQotICAgICAgICBkZWYgZm9ybWF0X2NiKGNhbGxiYWNrKToKLSAgICAgICAgICAgIHJldHVybiBldmVudHMuX2Zvcm1hdF9jYWxsYmFja19zb3VyY2UoY2FsbGJhY2ssICgpKQotCi0gICAgICAgIGlmIHNpemUgPT0gMToKLSAgICAgICAgICAgIGNiID0gZm9ybWF0X2NiKGNiWzBdKQotICAgICAgICBlbGlmIHNpemUgPT0gMjoKLSAgICAgICAgICAgIGNiID0gJ3t9LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksIGZvcm1hdF9jYihjYlsxXSkpCi0gICAgICAgIGVsaWYgc2l6ZSA+IDI6Ci0gICAgICAgICAgICBjYiA9ICd7fSwgPHt9IG1vcmU+LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2NiKGNiWy0xXSkpCi0gICAgICAgIHJldHVybiAnY2I9WyVzXScgJSBjYgotCi0gICAgZGVmIF9yZXByX2luZm8oc2VsZik6Ci0gICAgICAgIGluZm8gPSBbc2VsZi5fc3RhdGUubG93ZXIoKV0KLSAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gX0ZJTklTSEVEOgotICAgICAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdleGNlcHRpb249eyFyfScuZm9ybWF0KHNlbGYuX2V4Y2VwdGlvbikpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgdXNlIHJlcHJsaWIgdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LCBlc3BlY2lhbGx5Ci0gICAgICAgICAgICAgICAgIyBmb3IgdmVyeSBsb25nIHN0cmluZ3MKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXBybGliLnJlcHIoc2VsZi5fcmVzdWx0KQotICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdyZXN1bHQ9e30nLmZvcm1hdChyZXN1bHQpKQotICAgICAgICBpZiBzZWxmLl9jYWxsYmFja3M6Ci0gICAgICAgICAgICBpbmZvLmFwcGVuZChzZWxmLl9fZm9ybWF0X2NhbGxiYWNrcygpKQotICAgICAgICBpZiBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrOgotICAgICAgICAgICAgZnJhbWUgPSBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2NyZWF0ZWQgYXQgJXM6JXMnICUgKGZyYW1lWzBdLCBmcmFtZVsxXSkpCi0gICAgICAgIHJldHVybiBpbmZvCisgICAgX3JlcHJfaW5mbyA9IGJhc2VfZnV0dXJlcy5fZnV0dXJlX3JlcHJfaW5mbwogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBpbmZvID0gc2VsZi5fcmVwcl9pbmZvKCkKLSAgICAgICAgcmV0dXJuICc8JXMgJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJyAnLmpvaW4oaW5mbykpCisgICAgICAgIHJldHVybiAnPCVzICVzPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sICcgJy5qb2luKHNlbGYuX3JlcHJfaW5mbygpKSkKIAogICAgICMgT24gUHl0aG9uIDMuMyBhbmQgb2xkZXIsIG9iamVjdHMgd2l0aCBhIGRlc3RydWN0b3IgcGFydCBvZiBhIHJlZmVyZW5jZQogICAgICMgY3ljbGUgYXJlIG5ldmVyIGRlc3Ryb3llZC4gSXQncyBub3QgbW9yZSB0aGUgY2FzZSBvbiBQeXRob24gMy40IHRoYW5rcwpAQCAtMzg0LDYgKzMzNiwxMCBAQAogICAgICAgICBfX2F3YWl0X18gPSBfX2l0ZXJfXyAjIG1ha2UgY29tcGF0aWJsZSB3aXRoICdhd2FpdCcgZXhwcmVzc2lvbgogCiAKKyMgTmVlZGVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorX1B5RnV0dXJlID0gRnV0dXJlCisKKwogZGVmIF9zZXRfcmVzdWx0X3VubGVzc19jYW5jZWxsZWQoZnV0LCByZXN1bHQpOgogICAgICIiIkhlbHBlciBzZXR0aW5nIHRoZSByZXN1bHQgb25seSBpZiB0aGUgZnV0dXJlIHdhcyBub3QgY2FuY2VsbGVkLiIiIgogICAgIGlmIGZ1dC5jYW5jZWxsZWQoKToKQEAgLTQ3NiwzICs0MzIsMTIgQEAKICAgICBuZXdfZnV0dXJlID0gbG9vcC5jcmVhdGVfZnV0dXJlKCkKICAgICBfY2hhaW5fZnV0dXJlKGZ1dHVyZSwgbmV3X2Z1dHVyZSkKICAgICByZXR1cm4gbmV3X2Z1dHVyZQorCisKK3RyeToKKyAgICBpbXBvcnQgX2FzeW5jaW8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgICMgX0NGdXR1cmUgaXMgbmVlZGVkIGZvciB0ZXN0cy4KKyAgICBGdXR1cmUgPSBfQ0Z1dHVyZSA9IF9hc3luY2lvLkZ1dHVyZQpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5CmluZGV4IGZlZjMyMDUuLmZmMTI4NzcgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkKQEAgLTkyLDcgKzkyLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9zb2NrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHBpcGUgdHJhbnNwb3J0Jyk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkKaW5kZXggMTJkMzU3Yi4uOWRiZTU1MCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weQpAQCAtNjI3LDcgKzYyNyw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fc29jayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9zb2NrLmNsb3NlKCkKIAogICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiB0cmFuc3BvcnQnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3NzbHByb3RvLnB5IGIvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKaW5kZXggODA0YzVjMy4uOTkxYzc3YiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKKysrIGIvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKQEAgLTMzMSw3ICszMzEsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgcGF1c2VfcmVhZGluZyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3Rhc2tzLnB5IGIvTGliL2FzeW5jaW8vdGFza3MucHkKaW5kZXggODg1MmFhNS4uNWE0M2VmMiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vdGFza3MucHkKKysrIGIvTGliL2FzeW5jaW8vdGFza3MucHkKQEAgLTksMTEgKzksMTAgQEAKIGltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbnNwZWN0Ci1pbXBvcnQgbGluZWNhY2hlCi1pbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB3ZWFrcmVmCiAKK2Zyb20gLiBpbXBvcnQgYmFzZV90YXNrcwogZnJvbSAuIGltcG9ydCBjb21wYXQKIGZyb20gLiBpbXBvcnQgY29yb3V0aW5lcwogZnJvbSAuIGltcG9ydCBldmVudHMKQEAgLTkzLDE4ICs5Miw3IEBACiAgICAgICAgICAgICBmdXR1cmVzLkZ1dHVyZS5fX2RlbF9fKHNlbGYpCiAKICAgICBkZWYgX3JlcHJfaW5mbyhzZWxmKToKLSAgICAgICAgaW5mbyA9IHN1cGVyKCkuX3JlcHJfaW5mbygpCi0KLSAgICAgICAgaWYgc2VsZi5fbXVzdF9jYW5jZWw6Ci0gICAgICAgICAgICAjIHJlcGxhY2Ugc3RhdHVzCi0gICAgICAgICAgICBpbmZvWzBdID0gJ2NhbmNlbGxpbmcnCi0KLSAgICAgICAgY29ybyA9IGNvcm91dGluZXMuX2Zvcm1hdF9jb3JvdXRpbmUoc2VsZi5fY29ybykKLSAgICAgICAgaW5mby5pbnNlcnQoMSwgJ2Nvcm89PCVzPicgJSBjb3JvKQotCi0gICAgICAgIGlmIHNlbGYuX2Z1dF93YWl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpbmZvLmluc2VydCgyLCAnd2FpdF9mb3I9JXInICUgc2VsZi5fZnV0X3dhaXRlcikKLSAgICAgICAgcmV0dXJuIGluZm8KKyAgICAgICAgcmV0dXJuIGJhc2VfdGFza3MuX3Rhc2tfcmVwcl9pbmZvKHNlbGYpCiAKICAgICBkZWYgZ2V0X3N0YWNrKHNlbGYsICosIGxpbWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2Ygc3RhY2sgZnJhbWVzIGZvciB0aGlzIHRhc2sncyBjb3JvdXRpbmUuCkBAIC0xMjcsMzEgKzExNSw3IEBACiAgICAgICAgIEZvciByZWFzb25zIGJleW9uZCBvdXIgY29udHJvbCwgb25seSBvbmUgc3RhY2sgZnJhbWUgaXMKICAgICAgICAgcmV0dXJuZWQgZm9yIGEgc3VzcGVuZGVkIGNvcm91dGluZS4KICAgICAgICAgIiIiCi0gICAgICAgIGZyYW1lcyA9IFtdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgJ2FzeW5jIGRlZicgY29yb3V0aW5lcwotICAgICAgICAgICAgZiA9IHNlbGYuX2Nvcm8uY3JfZnJhbWUKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgZiA9IHNlbGYuX2Nvcm8uZ2lfZnJhbWUKLSAgICAgICAgaWYgZiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdoaWxlIGYgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxpbWl0IDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBsaW1pdCAtPSAxCi0gICAgICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChmKQotICAgICAgICAgICAgICAgIGYgPSBmLmZfYmFjawotICAgICAgICAgICAgZnJhbWVzLnJldmVyc2UoKQotICAgICAgICBlbGlmIHNlbGYuX2V4Y2VwdGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRiID0gc2VsZi5fZXhjZXB0aW9uLl9fdHJhY2ViYWNrX18KLSAgICAgICAgICAgIHdoaWxlIHRiIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBpZiBsaW1pdCA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgbGltaXQgLT0gMQotICAgICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQodGIudGJfZnJhbWUpCi0gICAgICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0Ci0gICAgICAgIHJldHVybiBmcmFtZXMKKyAgICAgICAgcmV0dXJuIGJhc2VfdGFza3MuX3Rhc2tfZ2V0X3N0YWNrKHNlbGYsIGxpbWl0KQogCiAgICAgZGVmIHByaW50X3N0YWNrKHNlbGYsICosIGxpbWl0PU5vbmUsIGZpbGU9Tm9uZSk6CiAgICAgICAgICIiIlByaW50IHRoZSBzdGFjayBvciB0cmFjZWJhY2sgZm9yIHRoaXMgdGFzaydzIGNvcm91dGluZS4KQEAgLTE2MiwzMSArMTI2LDcgQEAKICAgICAgICAgdG8gd2hpY2ggdGhlIG91dHB1dCBpcyB3cml0dGVuOyBieSBkZWZhdWx0IG91dHB1dCBpcyB3cml0dGVuCiAgICAgICAgIHRvIHN5cy5zdGRlcnIuCiAgICAgICAgICIiIgotICAgICAgICBleHRyYWN0ZWRfbGlzdCA9IFtdCi0gICAgICAgIGNoZWNrZWQgPSBzZXQoKQotICAgICAgICBmb3IgZiBpbiBzZWxmLmdldF9zdGFjayhsaW1pdD1saW1pdCk6Ci0gICAgICAgICAgICBsaW5lbm8gPSBmLmZfbGluZW5vCi0gICAgICAgICAgICBjbyA9IGYuZl9jb2RlCi0gICAgICAgICAgICBmaWxlbmFtZSA9IGNvLmNvX2ZpbGVuYW1lCi0gICAgICAgICAgICBuYW1lID0gY28uY29fbmFtZQotICAgICAgICAgICAgaWYgZmlsZW5hbWUgbm90IGluIGNoZWNrZWQ6Ci0gICAgICAgICAgICAgICAgY2hlY2tlZC5hZGQoZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgbGluZWNhY2hlLmNoZWNrY2FjaGUoZmlsZW5hbWUpCi0gICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubywgZi5mX2dsb2JhbHMpCi0gICAgICAgICAgICBleHRyYWN0ZWRfbGlzdC5hcHBlbmQoKGZpbGVuYW1lLCBsaW5lbm8sIG5hbWUsIGxpbmUpKQotICAgICAgICBleGMgPSBzZWxmLl9leGNlcHRpb24KLSAgICAgICAgaWYgbm90IGV4dHJhY3RlZF9saXN0OgotICAgICAgICAgICAgcHJpbnQoJ05vIHN0YWNrIGZvciAlcicgJSBzZWxmLCBmaWxlPWZpbGUpCi0gICAgICAgIGVsaWYgZXhjIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcHJpbnQoJ1RyYWNlYmFjayBmb3IgJXIgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JyAlIHNlbGYsCi0gICAgICAgICAgICAgICAgICBmaWxlPWZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgnU3RhY2sgZm9yICVyIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOicgJSBzZWxmLAotICAgICAgICAgICAgICAgICAgZmlsZT1maWxlKQotICAgICAgICB0cmFjZWJhY2sucHJpbnRfbGlzdChleHRyYWN0ZWRfbGlzdCwgZmlsZT1maWxlKQotICAgICAgICBpZiBleGMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KGV4Yy5fX2NsYXNzX18sIGV4Yyk6Ci0gICAgICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1maWxlLCBlbmQ9JycpCisgICAgICAgIHJldHVybiBiYXNlX3Rhc2tzLl90YXNrX3ByaW50X3N0YWNrKHNlbGYsIGxpbWl0LCBmaWxlKQogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKICAgICAgICAgIiIiUmVxdWVzdCB0aGF0IHRoaXMgdGFzayBjYW5jZWwgaXRzZWxmLgpAQCAtMzE2LDYgKzI1NiwxOCBAQAogICAgICAgICBzZWxmID0gTm9uZSAgIyBOZWVkZWQgdG8gYnJlYWsgY3ljbGVzIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4KIAogCitfUHlUYXNrID0gVGFzaworCisKK3RyeToKKyAgICBpbXBvcnQgX2FzeW5jaW8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgICMgX0NUYXNrIGlzIG5lZWRlZCBmb3IgdGVzdHMuCisgICAgVGFzayA9IF9DVGFzayA9IF9hc3luY2lvLlRhc2sKKworCiAjIHdhaXQoKSBhbmQgYXNfY29tcGxldGVkKCkgc2ltaWxhciB0byB0aG9zZSBpbiBQRVAgMzE0OC4KIAogRklSU1RfQ09NUExFVEVEID0gY29uY3VycmVudC5mdXR1cmVzLkZJUlNUX0NPTVBMRVRFRApkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weSBiL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkKaW5kZXggMzA3ZmZmYy4uZmRkM2JhMCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weQorKysgYi9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5CkBAIC0xMTksMTAgKzExOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCcsICd0ZXN0X2FzeW5jaW8nKQogICAgICAgICBrZXlmaWxlID0gb3MucGF0aC5qb2luKGhlcmUsICdzc2xfa2V5LnBlbScpCiAgICAgICAgIGNlcnRmaWxlID0gb3MucGF0aC5qb2luKGhlcmUsICdzc2xfY2VydC5wZW0nKQotICAgICAgICBzc29jayA9IHNzbC53cmFwX3NvY2tldChyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPWtleWZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlKQorICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoKQorICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZSkKKworICAgICAgICBzc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQocmVxdWVzdCwgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5SZXF1ZXN0SGFuZGxlckNsYXNzKHNzb2NrLCBjbGllbnRfYWRkcmVzcywgc2VsZikKICAgICAgICAgICAgIHNzb2NrLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKaW5kZXggNjViNjFkYi4uMjg0MzY3OCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKKysrIGIvTGliL2FzeW5jaW8vdW5peF9ldmVudHMucHkKQEAgLTQxMSw3ICs0MTEsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3BpcGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCiAKICAgICBkZWYgX2ZhdGFsX2Vycm9yKHNlbGYsIGV4YywgbWVzc2FnZT0nRmF0YWwgZXJyb3Igb24gcGlwZSB0cmFuc3BvcnQnKToKQEAgLTYxMSw3ICs2MTIsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYuX3BpcGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5fcGlwZS5jbG9zZSgpCiAKICAgICBkZWYgYWJvcnQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby93aW5kb3dzX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5CmluZGV4IDY2OGZlMTQuLmI3NzdkZDAgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3dpbmRvd3NfZXZlbnRzLnB5CkBAIC0xNzEsOCArMTcxLDEzIEBACiAgICAgZGVmIGNhbmNlbChzZWxmKToKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJfV2FpdENhbmNlbEZ1dHVyZSBtdXN0IG5vdCBiZSBjYW5jZWxsZWQiKQogCi0gICAgZGVmIF9zY2hlZHVsZV9jYWxsYmFja3Moc2VsZik6Ci0gICAgICAgIHN1cGVyKF9XYWl0Q2FuY2VsRnV0dXJlLCBzZWxmKS5fc2NoZWR1bGVfY2FsbGJhY2tzKCkKKyAgICBkZWYgc2V0X3Jlc3VsdChzZWxmLCByZXN1bHQpOgorICAgICAgICBzdXBlcigpLnNldF9yZXN1bHQocmVzdWx0KQorICAgICAgICBpZiBzZWxmLl9kb25lX2NhbGxiYWNrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZG9uZV9jYWxsYmFjayhzZWxmKQorCisgICAgZGVmIHNldF9leGNlcHRpb24oc2VsZiwgZXhjZXB0aW9uKToKKyAgICAgICAgc3VwZXIoKS5zZXRfZXhjZXB0aW9uKGV4Y2VwdGlvbikKICAgICAgICAgaWYgc2VsZi5fZG9uZV9jYWxsYmFjayBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2RvbmVfY2FsbGJhY2soc2VsZikKIApkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weSBiL0xpYi9hc3luY2lvL3dpbmRvd3NfdXRpbHMucHkKaW5kZXggODcwY2QxMy4uN2M2M2ZiOSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weQorKysgYi9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5CkBAIC0xNTksNyArMTU5LDggQEAKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jb3JlLnB5IGIvTGliL2FzeW5jb3JlLnB5CmluZGV4IDNiNTFmMGYuLjcwNWU0MDYgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY29yZS5weQorKysgYi9MaWIvYXN5bmNvcmUucHkKQEAgLTMzMyw3ICszMzMsNyBAQAogICAgICAgICBzZWxmLmNvbm5lY3RpbmcgPSBUcnVlCiAgICAgICAgIGVyciA9IHNlbGYuc29ja2V0LmNvbm5lY3RfZXgoYWRkcmVzcykKICAgICAgICAgaWYgZXJyIGluIChFSU5QUk9HUkVTUywgRUFMUkVBRFksIEVXT1VMREJMT0NLKSBcCi0gICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgaW4gKCdudCcsICdjZScpOgorICAgICAgICBvciBlcnIgPT0gRUlOVkFMIGFuZCBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICBzZWxmLmFkZHIgPSBhZGRyZXNzCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgZXJyIGluICgwLCBFSVNDT05OKToKQEAgLTU5NSw3ICs1OTUsOCBAQAogCiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5mZCA+PSAwOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIGZpbGUgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIGZpbGUgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgICAgICBkZWYgcmVjdihzZWxmLCAqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvYmFzZTY0LnB5IGIvTGliL2Jhc2U2NC5weQppbmRleCBhZGFlYzFkLi41OGY2YWQ2IDEwMDc1NQotLS0gYS9MaWIvYmFzZTY0LnB5CisrKyBiL0xpYi9iYXNlNjQucHkKQEAgLTU1LDggKzU1LDcgQEAKICAgICBhbHRlcm5hdGl2ZSBhbHBoYWJldCBmb3IgdGhlICcrJyBhbmQgJy8nIGNoYXJhY3RlcnMuICBUaGlzIGFsbG93cyBhbgogICAgIGFwcGxpY2F0aW9uIHRvIGUuZy4gZ2VuZXJhdGUgdXJsIG9yIGZpbGVzeXN0ZW0gc2FmZSBCYXNlNjQgc3RyaW5ncy4KICAgICAiIiIKLSAgICAjIFN0cmlwIG9mZiB0aGUgdHJhaWxpbmcgbmV3bGluZQotICAgIGVuY29kZWQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMpWzotMV0KKyAgICBlbmNvZGVkID0gYmluYXNjaWkuYjJhX2Jhc2U2NChzLCBuZXdsaW5lPUZhbHNlKQogICAgIGlmIGFsdGNoYXJzIGlzIG5vdCBOb25lOgogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQogICAgICAgICByZXR1cm4gZW5jb2RlZC50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBhbHRjaGFycykpCkBAIC0xNTYsNyArMTU1LDcgQEAKICAgICBsZWZ0b3ZlciA9IGxlbihzKSAlIDUKICAgICAjIFBhZCB0aGUgbGFzdCBxdWFudHVtIHdpdGggemVybyBiaXRzIGlmIG5lY2Vzc2FyeQogICAgIGlmIGxlZnRvdmVyOgotICAgICAgICBzID0gcyArIGJ5dGVzKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKKyAgICAgICAgcyA9IHMgKyBiJ1wwJyAqICg1IC0gbGVmdG92ZXIpICAjIERvbid0IHVzZSArPSAhCiAgICAgZW5jb2RlZCA9IGJ5dGVhcnJheSgpCiAgICAgZnJvbV9ieXRlcyA9IGludC5mcm9tX2J5dGVzCiAgICAgYjMydGFiMiA9IF9iMzJ0YWIyCmRpZmYgLS1naXQgYS9MaWIvYnoyLnB5IGIvTGliL2J6Mi5weQppbmRleCBiYzc4YzU0Li42ZjU2MzI4IDEwMDY0NAotLS0gYS9MaWIvYnoyLnB5CisrKyBiL0xpYi9iejIucHkKQEAgLTExLDYgKzExLDcgQEAKIAogZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfYnVpbHRpbl9vcGVuCiBpbXBvcnQgaW8KK2ltcG9ydCBvcwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgX2NvbXByZXNzaW9uCiAKQEAgLTQyLDkgKzQzLDkgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9InIiLCBidWZmZXJpbmc9Tm9uZSwgY29tcHJlc3NsZXZlbD05KToKICAgICAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZS4KIAotICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciBvciBieXRlcyBvYmplY3QsIGl0IGdpdmVzIHRoZSBuYW1lCi0gICAgICAgIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlIG9iamVjdCwKLSAgICAgICAgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KKyAgICAgICAgSWYgZmlsZW5hbWUgaXMgYSBzdHIsIGJ5dGVzLCBvciBQYXRoTGlrZSBvYmplY3QsIGl0IGdpdmVzIHRoZQorICAgICAgICBuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlCisgICAgICAgIG9iamVjdCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KIAogICAgICAgICBtb2RlIGNhbiBiZSAncicgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAndycgZm9yIChvdmVyKXdyaXRpbmcsCiAgICAgICAgICd4JyBmb3IgY3JlYXRpbmcgZXhjbHVzaXZlbHksIG9yICdhJyBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4KQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKIAotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgICAgIHNlbGYuX2ZwID0gX2J1aWx0aW5fb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCkBAIC05OSw3ICsxMDAsNyBAQAogICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQogICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciwgYnl0ZXMsIGZpbGUgb3IgUGF0aExpa2Ugb2JqZWN0IikKIAogICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CiAgICAgICAgICAgICByYXcgPSBfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcihzZWxmLl9mcCwKQEAgLTI4OSw4ICsyOTAsOSBAQAogICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgogCi0gICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyIG9yIGJ5dGVzCi0gICAgb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIHN0ciwgYnl0ZXMsIG9yCisgICAgUGF0aExpa2Ugb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlCisgICAgdG8uCiAKICAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJ4IiwgInhiIiwgImEiIG9yCiAgICAgImFiIiBmb3IgYmluYXJ5IG1vZGUsIG9yICJydCIsICJ3dCIsICJ4dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLgpkaWZmIC0tZ2l0IGEvTGliL2NhbGVuZGFyLnB5IGIvTGliL2NhbGVuZGFyLnB5CmluZGV4IDc2Y2Y4ZGUuLjA3NTk0ZjMgMTAwNjQ0Ci0tLSBhL0xpYi9jYWxlbmRhci5weQorKysgYi9MaWIvY2FsZW5kYXIucHkKQEAgLTEzLDcgKzEzLDkgQEAKIF9fYWxsX18gPSBbIklsbGVnYWxNb250aEVycm9yIiwgIklsbGVnYWxXZWVrZGF5RXJyb3IiLCAic2V0Zmlyc3R3ZWVrZGF5IiwKICAgICAgICAgICAgImZpcnN0d2Vla2RheSIsICJpc2xlYXAiLCAibGVhcGRheXMiLCAid2Vla2RheSIsICJtb250aHJhbmdlIiwKICAgICAgICAgICAgIm1vbnRoY2FsZW5kYXIiLCAicHJtb250aCIsICJtb250aCIsICJwcmNhbCIsICJjYWxlbmRhciIsCi0gICAgICAgICAgICJ0aW1lZ20iLCAibW9udGhfbmFtZSIsICJtb250aF9hYmJyIiwgImRheV9uYW1lIiwgImRheV9hYmJyIl0KKyAgICAgICAgICAgInRpbWVnbSIsICJtb250aF9uYW1lIiwgIm1vbnRoX2FiYnIiLCAiZGF5X25hbWUiLCAiZGF5X2FiYnIiLAorICAgICAgICAgICAiQ2FsZW5kYXIiLCAiVGV4dENhbGVuZGFyIiwgIkhUTUxDYWxlbmRhciIsICJMb2NhbGVUZXh0Q2FsZW5kYXIiLAorICAgICAgICAgICAiTG9jYWxlSFRNTENhbGVuZGFyIiwgIndlZWtoZWFkZXIiXQogCiAjIEV4Y2VwdGlvbiByYWlzZWQgZm9yIGJhZCBpbnB1dCAod2l0aCBzdHJpbmcgcGFyYW1ldGVyIGZvciBkZXRhaWxzKQogZXJyb3IgPSBWYWx1ZUVycm9yCkBAIC02MDQsNTEgKzYwNiw2MyBAQAogCiAKIGRlZiBtYWluKGFyZ3MpOgotICAgIGltcG9ydCBvcHRwYXJzZQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBbeWVhciBbbW9udGhdXSIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgaW1wb3J0IGFyZ3BhcnNlCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHRleHRncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ3RleHQgb25seSBhcmd1bWVudHMnKQorICAgIGh0bWxncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ2h0bWwgb25seSBhcmd1bWVudHMnKQorICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICItdyIsICItLXdpZHRoIiwKLSAgICAgICAgZGVzdD0id2lkdGgiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTIsCi0gICAgICAgIGhlbHA9IndpZHRoIG9mIGRhdGUgY29sdW1uIChkZWZhdWx0IDIsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTIsCisgICAgICAgIGhlbHA9IndpZHRoIG9mIGRhdGUgY29sdW1uIChkZWZhdWx0IDIpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLWwiLCAiLS1saW5lcyIsCi0gICAgICAgIGRlc3Q9ImxpbmVzIiwgdHlwZT0iaW50IiwgZGVmYXVsdD0xLAotICAgICAgICBoZWxwPSJudW1iZXIgb2YgbGluZXMgZm9yIGVhY2ggd2VlayAoZGVmYXVsdCAxLCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD0xLAorICAgICAgICBoZWxwPSJudW1iZXIgb2YgbGluZXMgZm9yIGVhY2ggd2VlayAoZGVmYXVsdCAxKSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1zIiwgIi0tc3BhY2luZyIsCi0gICAgICAgIGRlc3Q9InNwYWNpbmciLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTYsCi0gICAgICAgIGhlbHA9InNwYWNpbmcgYmV0d2VlbiBtb250aHMgKGRlZmF1bHQgNiwgdGV4dCBvbmx5KSIKKyAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9NiwKKyAgICAgICAgaGVscD0ic3BhY2luZyBiZXR3ZWVuIG1vbnRocyAoZGVmYXVsdCA2KSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1tIiwgIi0tbW9udGhzIiwKLSAgICAgICAgZGVzdD0ibW9udGhzIiwgdHlwZT0iaW50IiwgZGVmYXVsdD0zLAotICAgICAgICBoZWxwPSJtb250aHMgcGVyIHJvdyAoZGVmYXVsdCAzLCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD0zLAorICAgICAgICBoZWxwPSJtb250aHMgcGVyIHJvdyAoZGVmYXVsdCAzKSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgaHRtbGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1jIiwgIi0tY3NzIiwKLSAgICAgICAgZGVzdD0iY3NzIiwgZGVmYXVsdD0iY2FsZW5kYXIuY3NzIiwKLSAgICAgICAgaGVscD0iQ1NTIHRvIHVzZSBmb3IgcGFnZSAoaHRtbCBvbmx5KSIKKyAgICAgICAgZGVmYXVsdD0iY2FsZW5kYXIuY3NzIiwKKyAgICAgICAgaGVscD0iQ1NTIHRvIHVzZSBmb3IgcGFnZSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1MIiwgIi0tbG9jYWxlIiwKLSAgICAgICAgZGVzdD0ibG9jYWxlIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICBkZWZhdWx0PU5vbmUsCiAgICAgICAgIGhlbHA9ImxvY2FsZSB0byBiZSB1c2VkIGZyb20gbW9udGggYW5kIHdlZWtkYXkgbmFtZXMiCiAgICAgKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICItZSIsICItLWVuY29kaW5nIiwKLSAgICAgICAgZGVzdD0iZW5jb2RpbmciLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9IkVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0LiIKKyAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICBoZWxwPSJlbmNvZGluZyB0byB1c2UgZm9yIG91dHB1dCIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi10IiwgIi0tdHlwZSIsCi0gICAgICAgIGRlc3Q9InR5cGUiLCBkZWZhdWx0PSJ0ZXh0IiwKKyAgICAgICAgZGVmYXVsdD0idGV4dCIsCiAgICAgICAgIGNob2ljZXM9KCJ0ZXh0IiwgImh0bWwiKSwKICAgICAgICAgaGVscD0ib3V0cHV0IHR5cGUgKHRleHQgb3IgaHRtbCkiCiAgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJ5ZWFyIiwKKyAgICAgICAgbmFyZ3M9Jz8nLCB0eXBlPWludCwKKyAgICAgICAgaGVscD0ieWVhciBudW1iZXIgKDEtOTk5OSkiCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJtb250aCIsCisgICAgICAgIG5hcmdzPSc/JywgdHlwZT1pbnQsCisgICAgICAgIGhlbHA9Im1vbnRoIG51bWJlciAoMS0xMiwgdGV4dCBvbmx5KSIKKyAgICApCiAKLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzWzE6XSkKIAogICAgIGlmIG9wdGlvbnMubG9jYWxlIGFuZCBub3Qgb3B0aW9ucy5lbmNvZGluZzoKICAgICAgICAgcGFyc2VyLmVycm9yKCJpZiAtLWxvY2FsZSBpcyBzcGVjaWZpZWQgLS1lbmNvZGluZyBpcyByZXF1aXJlZCIpCkBAIC02NjYsMTAgKzY4MCwxMCBAQAogICAgICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkKICAgICAgICAgb3B0ZGljdCA9IGRpY3QoZW5jb2Rpbmc9ZW5jb2RpbmcsIGNzcz1vcHRpb25zLmNzcykKICAgICAgICAgd3JpdGUgPSBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZQotICAgICAgICBpZiBsZW4oYXJncykgPT0gMToKKyAgICAgICAgaWYgb3B0aW9ucy55ZWFyIGlzIE5vbmU6CiAgICAgICAgICAgICB3cml0ZShjYWwuZm9ybWF0eWVhcnBhZ2UoZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXIsICoqb3B0ZGljdCkpCi0gICAgICAgIGVsaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgICAgICB3cml0ZShjYWwuZm9ybWF0eWVhcnBhZ2UoaW50KGFyZ3NbMV0pLCAqKm9wdGRpY3QpKQorICAgICAgICBlbGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKKyAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShvcHRpb25zLnllYXIsICoqb3B0ZGljdCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXJzZXIuZXJyb3IoImluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIikKICAgICAgICAgICAgIHN5cy5leGl0KDEpCkBAIC02NzksMTggKzY5MywxNSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2FsID0gVGV4dENhbGVuZGFyKCkKICAgICAgICAgb3B0ZGljdCA9IGRpY3Qodz1vcHRpb25zLndpZHRoLCBsPW9wdGlvbnMubGluZXMpCi0gICAgICAgIGlmIGxlbihhcmdzKSAhPSAzOgorICAgICAgICBpZiBvcHRpb25zLm1vbnRoIGlzIE5vbmU6CiAgICAgICAgICAgICBvcHRkaWN0WyJjIl0gPSBvcHRpb25zLnNwYWNpbmcKICAgICAgICAgICAgIG9wdGRpY3RbIm0iXSA9IG9wdGlvbnMubW9udGhzCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKGRhdGV0aW1lLmRhdGUudG9kYXkoKS55ZWFyLCAqKm9wdGRpY3QpCi0gICAgICAgIGVsaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0eWVhcihpbnQoYXJnc1sxXSksICoqb3B0ZGljdCkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMzoKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXRtb250aChpbnQoYXJnc1sxXSksIGludChhcmdzWzJdKSwgKipvcHRkaWN0KQorICAgICAgICBlbGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKKyAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKG9wdGlvbnMueWVhciwgKipvcHRkaWN0KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGFyc2VyLmVycm9yKCJpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyIpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdG1vbnRoKG9wdGlvbnMueWVhciwgb3B0aW9ucy5tb250aCwgKipvcHRkaWN0KQogICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQud3JpdGUKICAgICAgICAgaWYgb3B0aW9ucy5lbmNvZGluZzoKICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5lbmNvZGUob3B0aW9ucy5lbmNvZGluZykKZGlmZiAtLWdpdCBhL0xpYi9jZ2kucHkgYi9MaWIvY2dpLnB5CmluZGV4IDE4OWM2ZDUuLjIzM2E0OTYgMTAwNzU1Ci0tLSBhL0xpYi9jZ2kucHkKKysrIGIvTGliL2NnaS5weQpAQCAtNDUsNyArNDUsNyBAQAogCiBfX2FsbF9fID0gWyJNaW5pRmllbGRTdG9yYWdlIiwgIkZpZWxkU3RvcmFnZSIsCiAgICAgICAgICAgICJwYXJzZSIsICJwYXJzZV9xcyIsICJwYXJzZV9xc2wiLCAicGFyc2VfbXVsdGlwYXJ0IiwKLSAgICAgICAgICAgInBhcnNlX2hlYWRlciIsICJwcmludF9leGNlcHRpb24iLCAicHJpbnRfZW52aXJvbiIsCisgICAgICAgICAgICJwYXJzZV9oZWFkZXIiLCAidGVzdCIsICJwcmludF9leGNlcHRpb24iLCAicHJpbnRfZW52aXJvbiIsCiAgICAgICAgICAgICJwcmludF9mb3JtIiwgInByaW50X2RpcmVjdG9yeSIsICJwcmludF9hcmd1bWVudHMiLAogICAgICAgICAgICAicHJpbnRfZW52aXJvbl91c2FnZSIsICJlc2NhcGUiXQogCmRpZmYgLS1naXQgYS9MaWIvY29kZS5weSBiL0xpYi9jb2RlLnB5CmluZGV4IDUzMjQ0ZTMuLjIzMjk1ZjQgMTAwNjQ0Ci0tLSBhL0xpYi9jb2RlLnB5CisrKyBiL0xpYi9jb2RlLnB5CkBAIC0xODYsNyArMTg2LDcgQEAKICAgICAgICAgIiIiUmVzZXQgdGhlIGlucHV0IGJ1ZmZlci4iIiIKICAgICAgICAgc2VsZi5idWZmZXIgPSBbXQogCi0gICAgZGVmIGludGVyYWN0KHNlbGYsIGJhbm5lcj1Ob25lKToKKyAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUsIGV4aXRtc2c9Tm9uZSk6CiAgICAgICAgICIiIkNsb3NlbHkgZW11bGF0ZSB0aGUgaW50ZXJhY3RpdmUgUHl0aG9uIGNvbnNvbGUuCiAKICAgICAgICAgVGhlIG9wdGlvbmFsIGJhbm5lciBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGJhbm5lciB0byBwcmludApAQCAtMTk2LDYgKzE5NiwxMSBAQAogICAgICAgICB0byBjb25mdXNlIHRoaXMgd2l0aCB0aGUgcmVhbCBpbnRlcnByZXRlciAtLSBzaW5jZSBpdCdzIHNvCiAgICAgICAgIGNsb3NlISkuCiAKKyAgICAgICAgVGhlIG9wdGlvbmFsIGV4aXRtc2cgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBleGl0IG1lc3NhZ2UKKyAgICAgICAgcHJpbnRlZCB3aGVuIGV4aXRpbmcuIFBhc3MgdGhlIGVtcHR5IHN0cmluZyB0byBzdXBwcmVzcworICAgICAgICBwcmludGluZyBhbiBleGl0IG1lc3NhZ2UuIElmIGV4aXRtc2cgaXMgbm90IGdpdmVuIG9yIE5vbmUsCisgICAgICAgIGEgZGVmYXVsdCBtZXNzYWdlIGlzIHByaW50ZWQuCisKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5wczEKQEAgLTIzMCw2ICsyMzUsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCJcbktleWJvYXJkSW50ZXJydXB0XG4iKQogICAgICAgICAgICAgICAgIHNlbGYucmVzZXRidWZmZXIoKQogICAgICAgICAgICAgICAgIG1vcmUgPSAwCisgICAgICAgIGlmIGV4aXRtc2cgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJ25vdyBleGl0aW5nICVzLi4uXG4nICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIGVsaWYgZXhpdG1zZyAhPSAnJzoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJyVzXG4nICUgZXhpdG1zZykKIAogICAgIGRlZiBwdXNoKHNlbGYsIGxpbmUpOgogICAgICAgICAiIiJQdXNoIGEgbGluZSB0byB0aGUgaW50ZXJwcmV0ZXIuCkBAIC0yNjcsNyArMjc2LDcgQEAKIAogCiAKLWRlZiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSk6CitkZWYgaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUsIGV4aXRtc2c9Tm9uZSk6CiAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gaW50ZXJwcmV0ZXIuCiAKICAgICBUaGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgaW50ZXJmYWNlIHRvIHRoZSBJbnRlcmFjdGl2ZUNvbnNvbGUKQEAgLTI3OSw2ICsyODgsNyBAQAogICAgIGJhbm5lciAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKICAgICByZWFkZnVuYyAtLSBpZiBub3QgTm9uZSwgcmVwbGFjZXMgSW50ZXJhY3RpdmVDb25zb2xlLnJhd19pbnB1dCgpCiAgICAgbG9jYWwgLS0gcGFzc2VkIHRvIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIuX19pbml0X18oKQorICAgIGV4aXRtc2cgLS0gcGFzc2VkIHRvIEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdCgpCiAKICAgICAiIiIKICAgICBjb25zb2xlID0gSW50ZXJhY3RpdmVDb25zb2xlKGxvY2FsKQpAQCAtMjg5LDcgKzI5OSw3IEBACiAgICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgIGNvbnNvbGUuaW50ZXJhY3QoYmFubmVyKQorICAgIGNvbnNvbGUuaW50ZXJhY3QoYmFubmVyLCBleGl0bXNnKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKaW5kZXggZWJlOGVlNy4uYmNjNDI5MSAxMDA2NDQKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpAQCAtMzUzLDcgKzM1Myw3IEBACiAgICAge25hbWV9ID0gX3Byb3BlcnR5KF9pdGVtZ2V0dGVyKHtpbmRleDpkfSksIGRvYz0nQWxpYXMgZm9yIGZpZWxkIG51bWJlciB7aW5kZXg6ZH0nKQogJycnCiAKLWRlZiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKToKK2RlZiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgKiwgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlLCBtb2R1bGU9Tm9uZSk6CiAgICAgIiIiUmV0dXJucyBhIG5ldyBzdWJjbGFzcyBvZiB0dXBsZSB3aXRoIG5hbWVkIGZpZWxkcy4KIAogICAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkKQEAgLTM5Myw3ICszOTMsNyBAQAogICAgICAgICAgICAgICAgIGZpZWxkX25hbWVzW2luZGV4XSA9ICdfJWQnICUgaW5kZXgKICAgICAgICAgICAgIHNlZW4uYWRkKG5hbWUpCiAgICAgZm9yIG5hbWUgaW4gW3R5cGVuYW1lXSArIGZpZWxkX25hbWVzOgotICAgICAgICBpZiB0eXBlKG5hbWUpICE9IHN0cjoKKyAgICAgICAgaWYgdHlwZShuYW1lKSBpcyBub3Qgc3RyOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBtdXN0IGJlIHN0cmluZ3MnKQogICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgdmFsaWQgJwpAQCAtNDM0LDExICs0MzQsMTUgQEAKICAgICAjIEZvciBwaWNrbGluZyB0byB3b3JrLCB0aGUgX19tb2R1bGVfXyB2YXJpYWJsZSBuZWVkcyB0byBiZSBzZXQgdG8gdGhlIGZyYW1lCiAgICAgIyB3aGVyZSB0aGUgbmFtZWQgdHVwbGUgaXMgY3JlYXRlZC4gIEJ5cGFzcyB0aGlzIHN0ZXAgaW4gZW52aXJvbm1lbnRzIHdoZXJlCiAgICAgIyBzeXMuX2dldGZyYW1lIGlzIG5vdCBkZWZpbmVkIChKeXRob24gZm9yIGV4YW1wbGUpIG9yIHN5cy5fZ2V0ZnJhbWUgaXMgbm90Ci0gICAgIyBkZWZpbmVkIGZvciBhcmd1bWVudHMgZ3JlYXRlciB0aGFuIDAgKElyb25QeXRob24pLgotICAgIHRyeToKLSAgICAgICAgcmVzdWx0Ll9fbW9kdWxlX18gPSBfc3lzLl9nZXRmcmFtZSgxKS5mX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycsICdfX21haW5fXycpCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgIHBhc3MKKyAgICAjIGRlZmluZWQgZm9yIGFyZ3VtZW50cyBncmVhdGVyIHRoYW4gMCAoSXJvblB5dGhvbiksIG9yIHdoZXJlIHRoZSB1c2VyIGhhcworICAgICMgc3BlY2lmaWVkIGEgcGFydGljdWxhciBtb2R1bGUuCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZSA9IF9zeXMuX2dldGZyYW1lKDEpLmZfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJywgJ19fbWFpbl9fJykKKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICBwYXNzCisgICAgaWYgbW9kdWxlIGlzIG5vdCBOb25lOgorICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IG1vZHVsZQogCiAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC04NDIsNyArODQ2LDcgQEAKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyAgQ2hhaW5NYXAgKGhlbHBlciBmb3IgY29uZmlncGFyc2VyIGFuZCBzdHJpbmcuVGVtcGxhdGUpCisjIyMgIENoYWluTWFwCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogY2xhc3MgQ2hhaW5NYXAoTXV0YWJsZU1hcHBpbmcpOgpAQCAtOTY5LDcgKzk3Myw3IEBACiAgICAgICAgICAgICBkaWN0ID0ga3dhcmdzLnBvcCgnZGljdCcpCiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlBhc3NpbmcgJ2RpY3QnIGFzIGtleXdvcmQgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaWN0ID0gTm9uZQogICAgICAgICBzZWxmLmRhdGEgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjNlMzhlLi4wMDAwMDAwCi0tLSBhL0xpYi9jb2xsZWN0aW9ucy9fX21haW5fXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgU2ltcGxlIHRlc3RzCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIHZlcmlmeSB0aGF0IGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQotZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWRzLCBkdW1wcwotUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4LCB5JywgVHJ1ZSkKLXAgPSBQb2ludCh4PTEwLCB5PTIwKQotYXNzZXJ0IHAgPT0gbG9hZHMoZHVtcHMocCkpCi0KLSMgdGVzdCBhbmQgZGVtb25zdHJhdGUgYWJpbGl0eSB0byBvdmVycmlkZSBtZXRob2RzCi1jbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgX19zbG90c19fID0gKCkKLSAgICBAcHJvcGVydHkKLSAgICBkZWYgaHlwb3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41Ci0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKLQotZm9yIHAgaW4gUG9pbnQoMywgNCksIFBvaW50KDE0LCA1LzcuKToKLSAgICBwcmludCAocCkKLQotY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICdQb2ludCBjbGFzcyB3aXRoIG9wdGltaXplZCBfbWFrZSgpIGFuZCBfcmVwbGFjZSgpIHdpdGhvdXQgZXJyb3ItY2hlY2tpbmcnCi0gICAgX19zbG90c19fID0gKCkKLSAgICBfbWFrZSA9IGNsYXNzbWV0aG9kKHR1cGxlLl9fbmV3X18pCi0gICAgZGVmIF9yZXBsYWNlKHNlbGYsIF9tYXA9bWFwLCAqKmt3ZHMpOgotICAgICAgICByZXR1cm4gc2VsZi5fbWFrZShfbWFwKGt3ZHMuZ2V0LCAoJ3gnLCAneScpLCBzZWxmKSkKLQotcHJpbnQoUG9pbnQoMTEsIDIyKS5fcmVwbGFjZSh4PTEwMCkpCi0KLVBvaW50M0QgPSBuYW1lZHR1cGxlKCdQb2ludDNEJywgUG9pbnQuX2ZpZWxkcyArICgneicsKSkKLXByaW50KFBvaW50M0QuX19kb2NfXykKLQotaW1wb3J0IGRvY3Rlc3QsIGNvbGxlY3Rpb25zCi1UZXN0UmVzdWx0cyA9IG5hbWVkdHVwbGUoJ1Rlc3RSZXN1bHRzJywgJ2ZhaWxlZCBhdHRlbXB0ZWQnKQotcHJpbnQoVGVzdFJlc3VsdHMoKmRvY3Rlc3QudGVzdG1vZChjb2xsZWN0aW9ucykpKQpkaWZmIC0tZ2l0IGEvTGliL2NvbXBpbGVhbGwucHkgYi9MaWIvY29tcGlsZWFsbC5weQppbmRleCAwY2MwYzFkLi4zZTQ1Nzg1IDEwMDY0NAotLS0gYS9MaWIvY29tcGlsZWFsbC5weQorKysgYi9MaWIvY29tcGlsZWFsbC5weQpAQCAtMjUsNiArMjUsOCBAQAogX19hbGxfXyA9IFsiY29tcGlsZV9kaXIiLCJjb21waWxlX2ZpbGUiLCJjb21waWxlX3BhdGgiXQogCiBkZWYgX3dhbGtfZGlyKGRpciwgZGRpcj1Ob25lLCBtYXhsZXZlbHM9MTAsIHF1aWV0PTApOgorICAgIGlmIHF1aWV0IDwgMiBhbmQgaXNpbnN0YW5jZShkaXIsIG9zLlBhdGhMaWtlKToKKyAgICAgICAgZGlyID0gb3MuZnNwYXRoKGRpcikKICAgICBpZiBub3QgcXVpZXQ6CiAgICAgICAgIHByaW50KCdMaXN0aW5nIHshcn0uLi4nLmZvcm1hdChkaXIpKQogICAgIHRyeToKQEAgLTY4LDcgKzcwLDcgQEAKICAgICAiIiIKICAgICBmaWxlcyA9IF93YWxrX2RpcihkaXIsIHF1aWV0PXF1aWV0LCBtYXhsZXZlbHM9bWF4bGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgIGRkaXI9ZGRpcikKLSAgICBzdWNjZXNzID0gMQorICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICAgaWYgd29ya2VycyBpcyBub3QgTm9uZSBhbmQgd29ya2VycyAhPSAxIGFuZCBQcm9jZXNzUG9vbEV4ZWN1dG9yIGlzIG5vdCBOb25lOgogICAgICAgICBpZiB3b3JrZXJzIDwgMDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dvcmtlcnMgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIDAnKQpAQCAtODEsMTIgKzgzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5PWxlZ2FjeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKQotICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PTEpCisgICAgICAgICAgICBzdWNjZXNzID0gbWluKHJlc3VsdHMsIGRlZmF1bHQ9VHJ1ZSkKICAgICBlbHNlOgogICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgIGlmIG5vdCBjb21waWxlX2ZpbGUoZmlsZSwgZGRpciwgZm9yY2UsIHJ4LCBxdWlldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5LCBvcHRpbWl6ZSk6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICByZXR1cm4gc3VjY2VzcwogCiBkZWYgY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLApAQCAtMTA0LDcgKzEwNiw5IEBACiAgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocwogICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKICAgICAiIiIKLSAgICBzdWNjZXNzID0gMQorICAgIHN1Y2Nlc3MgPSBUcnVlCisgICAgaWYgcXVpZXQgPCAyIGFuZCBpc2luc3RhbmNlKGZ1bGxuYW1lLCBvcy5QYXRoTGlrZSk6CisgICAgICAgIGZ1bGxuYW1lID0gb3MuZnNwYXRoKGZ1bGxuYW1lKQogICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZ1bGxuYW1lKQogICAgIGlmIGRkaXIgaXMgbm90IE5vbmU6CiAgICAgICAgIGRmaWxlID0gb3MucGF0aC5qb2luKGRkaXIsIG5hbWUpCkBAIC0xNDQsNyArMTQ4LDcgQEAKICAgICAgICAgICAgICAgICBvayA9IHB5X2NvbXBpbGUuY29tcGlsZShmdWxsbmFtZSwgY2ZpbGUsIGRmaWxlLCBUcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplKQogICAgICAgICAgICAgZXhjZXB0IHB5X2NvbXBpbGUuUHlDb21waWxlRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgpAQCAtMTU3LDcgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKICAgICAgICAgICAgIGV4Y2VwdCAoU3ludGF4RXJyb3IsIFVuaWNvZGVFcnJvciwgT1NFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgICAgIGlmIHF1aWV0ID49IDI6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgICAgICAgICAgZWxpZiBxdWlldDoKQEAgLTE2Nyw3ICsxNzEsNyBAQAogICAgICAgICAgICAgICAgIHByaW50KGUuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiBvayA9PSAwOgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICByZXR1cm4gc3VjY2VzcwogCiBkZWYgY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPTEsIG1heGxldmVscz0wLCBmb3JjZT1GYWxzZSwgcXVpZXQ9MCwKQEAgLTE4Myw3ICsxODcsNyBAQAogICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICAgb3B0aW1pemU6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IC0xKQogICAgICIiIgotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKICAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgogICAgICAgICBpZiAobm90IGRpciBvciBkaXIgPT0gb3MuY3VyZGlyKSBhbmQgc2tpcF9jdXJkaXI6CiAgICAgICAgICAgICBpZiBxdWlldCA8IDI6CmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CmluZGV4IDljM2FlYzkuLjAzZDI3NmIgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CkBAIC04MSwxMiArODEsMTMgQEAKICAgICAgICAgX2Jhc2UuTE9HR0VSLmNyaXRpY2FsKCdFeGNlcHRpb24gaW4gd29ya2VyJywgZXhjX2luZm89VHJ1ZSkKIAogY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJyk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFRocmVhZFBvb2xFeGVjdXRvciBpbnN0YW5jZS4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgbWF4X3dvcmtlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBnaXZlbiBjYWxscy4KKyAgICAgICAgICAgIHRocmVhZF9uYW1lX3ByZWZpeDogQW4gb3B0aW9uYWwgbmFtZSBwcmVmaXggdG8gZ2l2ZSBvdXIgdGhyZWFkcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICAjIFVzZSB0aGlzIG51bWJlciBiZWNhdXNlIFRocmVhZFBvb2xFeGVjdXRvciBpcyBvZnRlbgpAQCAtMTAwLDYgKzEwMSw3IEBACiAgICAgICAgIHNlbGYuX3RocmVhZHMgPSBzZXQoKQogICAgICAgICBzZWxmLl9zaHV0ZG93biA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3NodXRkb3duX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX3RocmVhZF9uYW1lX3ByZWZpeCA9IHRocmVhZF9uYW1lX3ByZWZpeAogCiAgICAgZGVmIHN1Ym1pdChzZWxmLCBmbiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrOgpAQCAtMTIxLDggKzEyMywxMSBAQAogICAgICAgICAgICAgcS5wdXQoTm9uZSkKICAgICAgICAgIyBUT0RPKGJxdWlubGFuKTogU2hvdWxkIGF2b2lkIGNyZWF0aW5nIG5ldyB0aHJlYWRzIGlmIHRoZXJlIGFyZSBtb3JlCiAgICAgICAgICMgaWRsZSB0aHJlYWRzIHRoYW4gaXRlbXMgaW4gdGhlIHdvcmsgcXVldWUuCi0gICAgICAgIGlmIGxlbihzZWxmLl90aHJlYWRzKSA8IHNlbGYuX21heF93b3JrZXJzOgotICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV93b3JrZXIsCisgICAgICAgIG51bV90aHJlYWRzID0gbGVuKHNlbGYuX3RocmVhZHMpCisgICAgICAgIGlmIG51bV90aHJlYWRzIDwgc2VsZi5fbWF4X3dvcmtlcnM6CisgICAgICAgICAgICB0aHJlYWRfbmFtZSA9ICclc18lZCcgJSAoc2VsZi5fdGhyZWFkX25hbWVfcHJlZml4IG9yIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3RocmVhZHMpCisgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChuYW1lPXRocmVhZF9uYW1lLCB0YXJnZXQ9X3dvcmtlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHdlYWtyZWYucmVmKHNlbGYsIHdlYWtyZWZfY2IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd29ya19xdWV1ZSkpCiAgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggZDQ0ZWRkNi4uN2Q5NGE1NyAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTEsMTEgKzEsMzQgQEAKICIiIlV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQgY29udGV4dHMuICBTZWUgUEVQIDM0My4iIiIKLQoraW1wb3J0IGFiYwogaW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogCi1fX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwKLSAgICAgICAgICAgInJlZGlyZWN0X3N0ZG91dCIsICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQorX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJBYnN0cmFjdENvbnRleHRNYW5hZ2VyIiwKKyAgICAgICAgICAgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwgInJlZGlyZWN0X3N0ZG91dCIsCisgICAgICAgICAgICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQorCisKK2NsYXNzIEFic3RyYWN0Q29udGV4dE1hbmFnZXIoYWJjLkFCQyk6CisKKyAgICAiIiJBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjb250ZXh0IG1hbmFnZXJzLiIiIgorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGBzZWxmYCB1cG9uIGVudGVyaW5nIHRoZSBydW50aW1lIGNvbnRleHQuIiIiCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICIiIlJhaXNlIGFueSBleGNlcHRpb24gdHJpZ2dlcmVkIHdpdGhpbiB0aGUgcnVudGltZSBjb250ZXh0LiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIEFic3RyYWN0Q29udGV4dE1hbmFnZXI6CisgICAgICAgICAgICBpZiAoYW55KCJfX2VudGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKKyAgICAgICAgICAgICAgICBhbnkoIl9fZXhpdF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKIGNsYXNzIENvbnRleHREZWNvcmF0b3Iob2JqZWN0KToKQEAgLTMxLDcgKzU0LDcgQEAKICAgICAgICAgcmV0dXJuIGlubmVyCiAKIAotY2xhc3MgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKENvbnRleHREZWNvcmF0b3IpOgorY2xhc3MgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKENvbnRleHREZWNvcmF0b3IsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkhlbHBlciBmb3IgQGNvbnRleHRtYW5hZ2VyIGRlY29yYXRvci4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jLCBhcmdzLCBrd2RzKToKQEAgLTEzNyw3ICsxNjAsNyBAQAogICAgIHJldHVybiBoZWxwZXIKIAogCi1jbGFzcyBjbG9zaW5nKG9iamVjdCk6CitjbGFzcyBjbG9zaW5nKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgdG8gYXV0b21hdGljYWxseSBjbG9zZSBzb21ldGhpbmcgYXQgdGhlIGVuZCBvZiBhIGJsb2NrLgogCiAgICAgQ29kZSBsaWtlIHRoaXM6CkBAIC0xNjIsNyArMTg1LDcgQEAKICAgICAgICAgc2VsZi50aGluZy5jbG9zZSgpCiAKIAotY2xhc3MgX1JlZGlyZWN0U3RyZWFtOgorY2xhc3MgX1JlZGlyZWN0U3RyZWFtKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogCiAgICAgX3N0cmVhbSA9IE5vbmUKIApAQCAtMjAyLDcgKzIyNSw3IEBACiAgICAgX3N0cmVhbSA9ICJzdGRlcnIiCiAKIAotY2xhc3Mgc3VwcHJlc3M6CitjbGFzcyBzdXBwcmVzcyhBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gc3VwcHJlc3Mgc3BlY2lmaWVkIGV4Y2VwdGlvbnMKIAogICAgIEFmdGVyIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgZXhlY3V0aW9uIHByb2NlZWRzIHdpdGggdGhlIG5leHQKQEAgLTIzMyw3ICsyNTYsNyBAQAogCiAKICMgSW5zcGlyZWQgYnkgZGlzY3Vzc2lvbnMgb24gaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzNTg1Ci1jbGFzcyBFeGl0U3RhY2sob2JqZWN0KToKK2NsYXNzIEV4aXRTdGFjayhBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIGR5bmFtaWMgbWFuYWdlbWVudCBvZiBhIHN0YWNrIG9mIGV4aXQgY2FsbGJhY2tzCiAKICAgICBGb3IgZXhhbXBsZToKQEAgLTMxMiw5ICszMzUsNiBAQAogICAgICAgICAiIiJJbW1lZGlhdGVseSB1bndpbmQgdGhlIGNvbnRleHQgc3RhY2siIiIKICAgICAgICAgc2VsZi5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQogCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgogICAgICAgICByZWNlaXZlZF9leGMgPSBleGNfZGV0YWlsc1swXSBpcyBub3QgTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvY29weS5weSBiL0xpYi9jb3B5LnB5CmluZGV4IDk3MmI5NGEuLmY4NjA0MGEgMTAwNjQ0Ci0tLSBhL0xpYi9jb3B5LnB5CisrKyBiL0xpYi9jb3B5LnB5CkBAIC01MSw3ICs1MSw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCB3ZWFrcmVmCiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCi1pbXBvcnQgYnVpbHRpbnMKIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC0xMDIsMzcgKzEwMSwzMyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigidW4oc2hhbGxvdyljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCiAKLSAgICByZXR1cm4gX3JlY29uc3RydWN0KHgsIHJ2LCAwKQorICAgIGlmIGlzaW5zdGFuY2UocnYsIHN0cik6CisgICAgICAgIHJldHVybiB4CisgICAgcmV0dXJuIF9yZWNvbnN0cnVjdCh4LCBOb25lLCAqcnYpCiAKIAogX2NvcHlfZGlzcGF0Y2ggPSBkID0ge30KIAogZGVmIF9jb3B5X2ltbXV0YWJsZSh4KToKICAgICByZXR1cm4geAotZm9yIHQgaW4gKHR5cGUoTm9uZSksIGludCwgZmxvYXQsIGJvb2wsIHN0ciwgdHVwbGUsCi0gICAgICAgICAgYnl0ZXMsIGZyb3plbnNldCwgdHlwZSwgcmFuZ2UsCi0gICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwgdHlwZShFbGxpcHNpcyksCitmb3IgdCBpbiAodHlwZShOb25lKSwgaW50LCBmbG9hdCwgYm9vbCwgY29tcGxleCwgc3RyLCB0dXBsZSwKKyAgICAgICAgICBieXRlcywgZnJvemVuc2V0LCB0eXBlLCByYW5nZSwgc2xpY2UsCisgICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwgdHlwZShFbGxpcHNpcyksIHR5cGUoTm90SW1wbGVtZW50ZWQpLAogICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSwgd2Vha3JlZi5yZWYpOgogICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKIHQgPSBnZXRhdHRyKHR5cGVzLCAiQ29kZVR5cGUiLCBOb25lKQogaWYgdCBpcyBub3QgTm9uZToKICAgICBkW3RdID0gX2NvcHlfaW1tdXRhYmxlCi1mb3IgbmFtZSBpbiAoImNvbXBsZXgiLCAidW5pY29kZSIpOgotICAgIHQgPSBnZXRhdHRyKGJ1aWx0aW5zLCBuYW1lLCBOb25lKQotICAgIGlmIHQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKIAotZGVmIF9jb3B5X3dpdGhfY29uc3RydWN0b3IoeCk6Ci0gICAgcmV0dXJuIHR5cGUoeCkoeCkKLWZvciB0IGluIChsaXN0LCBkaWN0LCBzZXQpOgotICAgIGRbdF0gPSBfY29weV93aXRoX2NvbnN0cnVjdG9yCitkW2xpc3RdID0gbGlzdC5jb3B5CitkW2RpY3RdID0gZGljdC5jb3B5CitkW3NldF0gPSBzZXQuY29weQorZFtieXRlYXJyYXldID0gYnl0ZWFycmF5LmNvcHkKIAotZGVmIF9jb3B5X3dpdGhfY29weV9tZXRob2QoeCk6Ci0gICAgcmV0dXJuIHguY29weSgpCiBpZiBQeVN0cmluZ01hcCBpcyBub3QgTm9uZToKLSAgICBkW1B5U3RyaW5nTWFwXSA9IF9jb3B5X3dpdGhfY29weV9tZXRob2QKKyAgICBkW1B5U3RyaW5nTWFwXSA9IFB5U3RyaW5nTWFwLmNvcHkKIAotZGVsIGQKK2RlbCBkLCB0CiAKIGRlZiBkZWVwY29weSh4LCBtZW1vPU5vbmUsIF9uaWw9W10pOgogICAgICIiIkRlZXAgY29weSBvcGVyYXRpb24gb24gYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLgpAQCAtMTc5LDcgKzE3NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuKGRlZXApY29weWFibGUgb2JqZWN0IG9mIHR5cGUgJXMiICUgY2xzKQotICAgICAgICAgICAgICAgIHkgPSBfcmVjb25zdHJ1Y3QoeCwgcnYsIDEsIG1lbW8pCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgeSA9IHgKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB5ID0gX3JlY29uc3RydWN0KHgsIG1lbW8sICpydikKIAogICAgICMgSWYgaXMgaXRzIG93biBjb3B5LCBkb24ndCBtZW1vaXplLgogICAgIGlmIHkgaXMgbm90IHg6CkBAIC0xOTMsMTMgKzE5MSwxMSBAQAogICAgIHJldHVybiB4CiBkW3R5cGUoTm9uZSldID0gX2RlZXBjb3B5X2F0b21pYwogZFt0eXBlKEVsbGlwc2lzKV0gPSBfZGVlcGNvcHlfYXRvbWljCitkW3R5cGUoTm90SW1wbGVtZW50ZWQpXSA9IF9kZWVwY29weV9hdG9taWMKIGRbaW50XSA9IF9kZWVwY29weV9hdG9taWMKIGRbZmxvYXRdID0gX2RlZXBjb3B5X2F0b21pYwogZFtib29sXSA9IF9kZWVwY29weV9hdG9taWMKLXRyeToKLSAgICBkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBwYXNzCitkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwogZFtieXRlc10gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3N0cl0gPSBfZGVlcGNvcHlfYXRvbWljCiB0cnk6CkBAIC0yMTEsMTUgKzIwNywxNiBAQAogZFt0eXBlcy5GdW5jdGlvblR5cGVdID0gX2RlZXBjb3B5X2F0b21pYwogZFt3ZWFrcmVmLnJlZl0gPSBfZGVlcGNvcHlfYXRvbWljCiAKLWRlZiBfZGVlcGNvcHlfbGlzdCh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfbGlzdCh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IFtdCiAgICAgbWVtb1tpZCh4KV0gPSB5CisgICAgYXBwZW5kID0geS5hcHBlbmQKICAgICBmb3IgYSBpbiB4OgotICAgICAgICB5LmFwcGVuZChkZWVwY29weShhLCBtZW1vKSkKKyAgICAgICAgYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQogICAgIHJldHVybiB5CiBkW2xpc3RdID0gX2RlZXBjb3B5X2xpc3QKIAotZGVmIF9kZWVwY29weV90dXBsZSh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfdHVwbGUoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgIHkgPSBbZGVlcGNvcHkoYSwgbWVtbykgZm9yIGEgaW4geF0KICAgICAjIFdlJ3JlIG5vdCBnb2luZyB0byBwdXQgdGhlIHR1cGxlIGluIHRoZSBtZW1vLCBidXQgaXQncyBzdGlsbCBpbXBvcnRhbnQgd2UKICAgICAjIGNoZWNrIGZvciBpdCwgaW4gY2FzZSB0aGUgdHVwbGUgY29udGFpbnMgcmVjdXJzaXZlIG11dGFibGUgc3RydWN0dXJlcy4KQEAgLTIzNiw3ICsyMzMsNyBAQAogICAgIHJldHVybiB5CiBkW3R1cGxlXSA9IF9kZWVwY29weV90dXBsZQogCi1kZWYgX2RlZXBjb3B5X2RpY3QoeCwgbWVtbyk6CitkZWYgX2RlZXBjb3B5X2RpY3QoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgIHkgPSB7fQogICAgIG1lbW9baWQoeCldID0geQogICAgIGZvciBrZXksIHZhbHVlIGluIHguaXRlbXMoKToKQEAgLTI0OCw3ICsyNDUsOSBAQAogCiBkZWYgX2RlZXBjb3B5X21ldGhvZCh4LCBtZW1vKTogIyBDb3B5IGluc3RhbmNlIG1ldGhvZHMKICAgICByZXR1cm4gdHlwZSh4KSh4Ll9fZnVuY19fLCBkZWVwY29weSh4Ll9fc2VsZl9fLCBtZW1vKSkKLV9kZWVwY29weV9kaXNwYXRjaFt0eXBlcy5NZXRob2RUeXBlXSA9IF9kZWVwY29weV9tZXRob2QKK2RbdHlwZXMuTWV0aG9kVHlwZV0gPSBfZGVlcGNvcHlfbWV0aG9kCisKK2RlbCBkCiAKIGRlZiBfa2VlcF9hbGl2ZSh4LCBtZW1vKToKICAgICAiIiJLZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHggaW4gdGhlIG1lbW8uCkBAIC0yNjYsMzEgKzI2NSwxNSBAQAogICAgICAgICAjIGFoYSwgdGhpcyBpcyB0aGUgZmlyc3Qgb25lIDotKQogICAgICAgICBtZW1vW2lkKG1lbW8pXT1beF0KIAotZGVmIF9yZWNvbnN0cnVjdCh4LCBpbmZvLCBkZWVwLCBtZW1vPU5vbmUpOgotICAgIGlmIGlzaW5zdGFuY2UoaW5mbywgc3RyKToKLSAgICAgICAgcmV0dXJuIHgKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShpbmZvLCB0dXBsZSkKLSAgICBpZiBtZW1vIGlzIE5vbmU6Ci0gICAgICAgIG1lbW8gPSB7fQotICAgIG4gPSBsZW4oaW5mbykKLSAgICBhc3NlcnQgbiBpbiAoMiwgMywgNCwgNSkKLSAgICBjYWxsYWJsZSwgYXJncyA9IGluZm9bOjJdCi0gICAgaWYgbiA+IDI6Ci0gICAgICAgIHN0YXRlID0gaW5mb1syXQotICAgIGVsc2U6Ci0gICAgICAgIHN0YXRlID0gTm9uZQotICAgIGlmIG4gPiAzOgotICAgICAgICBsaXN0aXRlciA9IGluZm9bM10KLSAgICBlbHNlOgotICAgICAgICBsaXN0aXRlciA9IE5vbmUKLSAgICBpZiBuID4gNDoKLSAgICAgICAgZGljdGl0ZXIgPSBpbmZvWzRdCi0gICAgZWxzZToKLSAgICAgICAgZGljdGl0ZXIgPSBOb25lCitkZWYgX3JlY29uc3RydWN0KHgsIG1lbW8sIGZ1bmMsIGFyZ3MsCisgICAgICAgICAgICAgICAgIHN0YXRlPU5vbmUsIGxpc3RpdGVyPU5vbmUsIGRpY3RpdGVyPU5vbmUsCisgICAgICAgICAgICAgICAgIGRlZXBjb3B5PWRlZXBjb3B5KToKKyAgICBkZWVwID0gbWVtbyBpcyBub3QgTm9uZQorICAgIGlmIGRlZXAgYW5kIGFyZ3M6CisgICAgICAgIGFyZ3MgPSAoZGVlcGNvcHkoYXJnLCBtZW1vKSBmb3IgYXJnIGluIGFyZ3MpCisgICAgeSA9IGZ1bmMoKmFyZ3MpCiAgICAgaWYgZGVlcDoKLSAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MsIG1lbW8pCi0gICAgeSA9IGNhbGxhYmxlKCphcmdzKQotICAgIG1lbW9baWQoeCldID0geQorICAgICAgICBtZW1vW2lkKHgpXSA9IHkKIAogICAgIGlmIHN0YXRlIGlzIG5vdCBOb25lOgogICAgICAgICBpZiBkZWVwOgpAQCAtMzA5LDIyICsyOTIsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cih5LCBrZXksIHZhbHVlKQogCiAgICAgaWYgbGlzdGl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgIGZvciBpdGVtIGluIGxpc3RpdGVyOgotICAgICAgICAgICAgaWYgZGVlcDoKKyAgICAgICAgaWYgZGVlcDoKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGxpc3RpdGVyOgogICAgICAgICAgICAgICAgIGl0ZW0gPSBkZWVwY29weShpdGVtLCBtZW1vKQotICAgICAgICAgICAgeS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICB5LmFwcGVuZChpdGVtKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CisgICAgICAgICAgICAgICAgeS5hcHBlbmQoaXRlbSkKICAgICBpZiBkaWN0aXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6Ci0gICAgICAgICAgICBpZiBkZWVwOgorICAgICAgICBpZiBkZWVwOgorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6CiAgICAgICAgICAgICAgICAga2V5ID0gZGVlcGNvcHkoa2V5LCBtZW1vKQogICAgICAgICAgICAgICAgIHZhbHVlID0gZGVlcGNvcHkodmFsdWUsIG1lbW8pCi0gICAgICAgICAgICB5W2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKKyAgICAgICAgICAgICAgICB5W2tleV0gPSB2YWx1ZQogICAgIHJldHVybiB5CiAKLWRlbCBkCi0KLWRlbCB0eXBlcwotCi0jIEhlbHBlciBmb3IgaW5zdGFuY2UgY3JlYXRpb24gd2l0aG91dCBjYWxsaW5nIF9faW5pdF9fCi1jbGFzcyBfRW1wdHlDbGFzczoKLSAgICBwYXNzCitkZWwgdHlwZXMsIHdlYWtyZWYsIFB5U3RyaW5nTWFwCmRpZmYgLS1naXQgYS9MaWIvY3J5cHQucHkgYi9MaWIvY3J5cHQucHkKaW5kZXggNDlhYjk2ZS4uZmJjNWY0YyAxMDA2NDQKLS0tIGEvTGliL2NyeXB0LnB5CisrKyBiL0xpYi9jcnlwdC5weQpAQCAtNTQsOSArNTQsOCBAQAogTUVUSE9EX1NIQTUxMiA9IF9NZXRob2QoJ1NIQTUxMicsICc2JywgMTYsIDEwNikKIAogbWV0aG9kcyA9IFtdCi1mb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSk6Citmb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSwgTUVUSE9EX0NSWVBUKToKICAgICBfcmVzdWx0ID0gY3J5cHQoJycsIF9tZXRob2QpCiAgICAgaWYgX3Jlc3VsdCBhbmQgbGVuKF9yZXN1bHQpID09IF9tZXRob2QudG90YWxfc2l6ZToKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoX21ldGhvZCkKLW1ldGhvZHMuYXBwZW5kKE1FVEhPRF9DUllQVCkKIGRlbCBfcmVzdWx0LCBfbWV0aG9kCmRpZmYgLS1naXQgYS9MaWIvY3N2LnB5IGIvTGliL2Nzdi5weQppbmRleCBjYTQwZTVlLi4wMzQ5ZTBiIDEwMDY0NAotLS0gYS9MaWIvY3N2LnB5CisrKyBiL0xpYi9jc3YucHkKQEAgLTExLDEzICsxMSwxNSBAQAogICAgICAgICAgICAgICAgICBfX2RvY19fCiBmcm9tIF9jc3YgaW1wb3J0IERpYWxlY3QgYXMgX0RpYWxlY3QKIAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKLV9fYWxsX18gPSBbICJRVU9URV9NSU5JTUFMIiwgIlFVT1RFX0FMTCIsICJRVU9URV9OT05OVU1FUklDIiwgIlFVT1RFX05PTkUiLAotICAgICAgICAgICAgIkVycm9yIiwgIkRpYWxlY3QiLCAiX19kb2NfXyIsICJleGNlbCIsICJleGNlbF90YWIiLAotICAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCi0gICAgICAgICAgICAicmVnaXN0ZXJfZGlhbGVjdCIsICJnZXRfZGlhbGVjdCIsICJsaXN0X2RpYWxlY3RzIiwgIlNuaWZmZXIiLAotICAgICAgICAgICAgInVucmVnaXN0ZXJfZGlhbGVjdCIsICJfX3ZlcnNpb25fXyIsICJEaWN0UmVhZGVyIiwgIkRpY3RXcml0ZXIiIF0KK19fYWxsX18gPSBbIlFVT1RFX01JTklNQUwiLCAiUVVPVEVfQUxMIiwgIlFVT1RFX05PTk5VTUVSSUMiLCAiUVVPVEVfTk9ORSIsCisgICAgICAgICAgICJFcnJvciIsICJEaWFsZWN0IiwgIl9fZG9jX18iLCAiZXhjZWwiLCAiZXhjZWxfdGFiIiwKKyAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCisgICAgICAgICAgICJyZWdpc3Rlcl9kaWFsZWN0IiwgImdldF9kaWFsZWN0IiwgImxpc3RfZGlhbGVjdHMiLCAiU25pZmZlciIsCisgICAgICAgICAgICJ1bnJlZ2lzdGVyX2RpYWxlY3QiLCAiX192ZXJzaW9uX18iLCAiRGljdFJlYWRlciIsICJEaWN0V3JpdGVyIiwKKyAgICAgICAgICAgInVuaXhfZGlhbGVjdCJdCiAKIGNsYXNzIERpYWxlY3Q6CiAgICAgIiIiRGVzY3JpYmUgYSBDU1YgZGlhbGVjdC4KQEAgLTExNSw3ICsxMTcsNyBAQAogICAgICAgICAjIHZhbHVlcwogICAgICAgICB3aGlsZSByb3cgPT0gW106CiAgICAgICAgICAgICByb3cgPSBuZXh0KHNlbGYucmVhZGVyKQotICAgICAgICBkID0gZGljdCh6aXAoc2VsZi5maWVsZG5hbWVzLCByb3cpKQorICAgICAgICBkID0gT3JkZXJlZERpY3QoemlwKHNlbGYuZmllbGRuYW1lcywgcm93KSkKICAgICAgICAgbGYgPSBsZW4oc2VsZi5maWVsZG5hbWVzKQogICAgICAgICBsciA9IGxlbihyb3cpCiAgICAgICAgIGlmIGxmIDwgbHI6CkBAIC0xNDMsNyArMTQ1LDcgQEAKIAogICAgIGRlZiBfZGljdF90b19saXN0KHNlbGYsIHJvd2RpY3QpOgogICAgICAgICBpZiBzZWxmLmV4dHJhc2FjdGlvbiA9PSAicmFpc2UiOgotICAgICAgICAgICAgd3JvbmdfZmllbGRzID0gW2sgZm9yIGsgaW4gcm93ZGljdCBpZiBrIG5vdCBpbiBzZWxmLmZpZWxkbmFtZXNdCisgICAgICAgICAgICB3cm9uZ19maWVsZHMgPSByb3dkaWN0LmtleXMoKSAtIHNlbGYuZmllbGRuYW1lcwogICAgICAgICAgICAgaWYgd3JvbmdfZmllbGRzOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRpY3QgY29udGFpbnMgZmllbGRzIG5vdCBpbiBmaWVsZG5hbWVzOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsICIuam9pbihbcmVwcih4KSBmb3IgeCBpbiB3cm9uZ19maWVsZHNdKSkKQEAgLTIxMywxMCArMjE1LDEwIEBACiAgICAgICAgICIiIgogCiAgICAgICAgIG1hdGNoZXMgPSBbXQotICAgICAgICBmb3IgcmVzdHIgaW4gKCcoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A9ZGVsaW0pJywgIyAsIi4qPyIsCi0gICAgICAgICAgICAgICAgICAgICAgJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pJywgICAjICAiLio/IiwKLSAgICAgICAgICAgICAgICAgICAgICAnKD9QPGRlbGltPj5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJywgICMgLCIuKj8iCi0gICAgICAgICAgICAgICAgICAgICAgJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScpOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAiLio/IiAobm8gZGVsaW0sIG5vIHNwYWNlKQorICAgICAgICBmb3IgcmVzdHIgaW4gKHInKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPWRlbGltKScsICMgLCIuKj8iLAorICAgICAgICAgICAgICAgICAgICAgIHInKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPyknLCAgICMgICIuKj8iLAorICAgICAgICAgICAgICAgICAgICAgIHInKD9QPGRlbGltPj5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJywgICMgLCIuKj8iCisgICAgICAgICAgICAgICAgICAgICAgcicoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIi4qPyIgKG5vIGRlbGltLCBubyBzcGFjZSkKICAgICAgICAgICAgIHJlZ2V4cCA9IHJlLmNvbXBpbGUocmVzdHIsIHJlLkRPVEFMTCB8IHJlLk1VTFRJTElORSkKICAgICAgICAgICAgIG1hdGNoZXMgPSByZWdleHAuZmluZGFsbChkYXRhKQogICAgICAgICAgICAgaWYgbWF0Y2hlczoKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CmluZGV4IDBkODYwNzguLjFjOWQzYTUgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvX19pbml0X18ucHkKKysrIGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQpAQCAtMTYsNyArMTYsNyBAQAogaWYgX192ZXJzaW9uX18gIT0gX2N0eXBlc192ZXJzaW9uOgogICAgIHJhaXNlIEV4Y2VwdGlvbigiVmVyc2lvbiBudW1iZXIgbWlzbWF0Y2giLCBfX3ZlcnNpb25fXywgX2N0eXBlc192ZXJzaW9uKQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgRm9ybWF0RXJyb3IKIAogREVGQVVMVF9NT0RFID0gUlRMRF9MT0NBTApAQCAtMTAzLDEyICsxMDMsOSBAQAogICAgICAgICBfY19mdW5jdHlwZV9jYWNoZVsocmVzdHlwZSwgYXJndHlwZXMsIGZsYWdzKV0gPSBDRnVuY3Rpb25UeXBlCiAgICAgICAgIHJldHVybiBDRnVuY3Rpb25UeXBlCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgZnJvbSBfY3R5cGVzIGltcG9ydCBMb2FkTGlicmFyeSBhcyBfZGxvcGVuCiAgICAgZnJvbSBfY3R5cGVzIGltcG9ydCBGVU5DRkxBR19TVERDQUxMIGFzIF9GVU5DRkxBR19TVERDQUxMCi0gICAgaWYgX29zLm5hbWUgPT0gImNlIjoKLSAgICAgICAgIyAnY2UnIGRvZXNuJ3QgaGF2ZSB0aGUgc3RkY2FsbCBjYWxsaW5nIGNvbnZlbnRpb24KLSAgICAgICAgX0ZVTkNGTEFHX1NURENBTEwgPSBfRlVOQ0ZMQUdfQ0RFQ0wKIAogICAgIF93aW5fZnVuY3R5cGVfY2FjaGUgPSB7fQogICAgIGRlZiBXSU5GVU5DVFlQRShyZXN0eXBlLCAqYXJndHlwZXMsICoqa3cpOgpAQCAtMjYyLDcgKzI1OSw3IEBACiBkZWYgX3Jlc2V0X2NhY2hlKCk6CiAgICAgX3BvaW50ZXJfdHlwZV9jYWNoZS5jbGVhcigpCiAgICAgX2NfZnVuY3R5cGVfY2FjaGUuY2xlYXIoKQotICAgIGlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKKyAgICBpZiBfb3MubmFtZSA9PSAibnQiOgogICAgICAgICBfd2luX2Z1bmN0eXBlX2NhY2hlLmNsZWFyKCkKICAgICAjIF9TaW1wbGVDRGF0YS5jX3djaGFyX3BfZnJvbV9wYXJhbQogICAgIFBPSU5URVIoY193Y2hhcikuZnJvbV9wYXJhbSA9IGNfd2NoYXJfcC5mcm9tX3BhcmFtCkBAIC0zNzQsNyArMzcxLDcgQEAKICAgICAiIiIKICAgICBfZnVuY19mbGFnc18gPSBfRlVOQ0ZMQUdfQ0RFQ0wgfCBfRlVOQ0ZMQUdfUFlUSE9OQVBJCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAKICAgICBjbGFzcyBXaW5ETEwoQ0RMTCk6CiAgICAgICAgICIiIlRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGRsbCBleHBvcnRpbmcgZnVuY3Rpb25zIHVzaW5nIHRoZQpAQCAtNDI3LDcgKzQyNCw3IEBACiBjZGxsID0gTGlicmFyeUxvYWRlcihDRExMKQogcHlkbGwgPSBMaWJyYXJ5TG9hZGVyKFB5RExMKQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIHB5dGhvbmFwaSA9IFB5RExMKCJweXRob24gZGxsIiwgTm9uZSwgX3N5cy5kbGxoYW5kbGUpCiBlbGlmIF9zeXMucGxhdGZvcm0gPT0gImN5Z3dpbiI6CiAgICAgcHl0aG9uYXBpID0gUHlETEwoImxpYnB5dGhvbiVkLiVkLmRsbCIgJSBfc3lzLnZlcnNpb25faW5mb1s6Ml0pCkBAIC00MzUsNyArNDMyLDcgQEAKICAgICBweXRob25hcGkgPSBQeURMTChOb25lKQogCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKToKK2lmIF9vcy5uYW1lID09ICJudCI6CiAgICAgd2luZGxsID0gTGlicmFyeUxvYWRlcihXaW5ETEwpCiAgICAgb2xlZGxsID0gTGlicmFyeUxvYWRlcihPbGVETEwpCiAKQEAgLTUwMyw3ICs1MDAsNyBAQAogICAgICAgICByZXR1cm4gX3dzdHJpbmdfYXQocHRyLCBzaXplKQogCiAKLWlmIF9vcy5uYW1lIGluICgibnQiLCAiY2UiKTogIyBDT00gc3R1ZmYKK2lmIF9vcy5uYW1lID09ICJudCI6ICMgQ09NIHN0dWZmCiAgICAgZGVmIERsbEdldENsYXNzT2JqZWN0KHJjbHNpZCwgcmlpZCwgcHB2KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgY2NvbSA9IF9faW1wb3J0X18oImNvbXR5cGVzLnNlcnZlci5pbnByb2NzZXJ2ZXIiLCBnbG9iYWxzKCksIGxvY2FscygpLCBbJyonXSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weQppbmRleCBiMzlkODJjLi5jNzFkNzFkIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKIAotaW1wb3J0IGN0eXBlcwogaW1wb3J0IF9jdHlwZXNfdGVzdAogCiBjbGFzcyBCSVRTKFN0cnVjdHVyZSk6CkBAIC0xOTcsNyArMTk2LDcgQEAKICAgICAgICAgY2xhc3MgWChTdHJ1Y3R1cmUpOgogICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJhIiwgY19ieXRlLCA0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICgiYiIsIGNfaW50LCA0KV0KLSAgICAgICAgaWYgb3MubmFtZSBpbiAoIm50IiwgImNlIik6CisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZW9mKFgpLCBzaXplb2YoY19pbnQpKjIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSkKQEAgLTIyNSw3ICsyMjQsNyBAQAogICAgICAgICAjIE1TVkMgZG9lcyBOT1QgY29tYmluZSBjX3Nob3J0IGFuZCBjX2ludCBpbnRvIG9uZSBmaWVsZCwgR0NDCiAgICAgICAgICMgZG9lcyAodW5sZXNzIEdDQyBpcyBydW4gd2l0aCAnLW1tcy1iaXRmaWVsZHMnIHdoaWNoCiAgICAgICAgICMgcHJvZHVjZXMgY29kZSBjb21wYXRpYmxlIHdpdGggTVNWQykuCi0gICAgICAgIGlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSAqIDQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSAqIDIpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weQppbmRleCA5NGIwYjg5Li5iOTlmZGNiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkKQEAgLTY5LDUgKzY5LDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5sZXhpc3RzKHRlc3Quc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZXN1bHQpCiAKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4JyksCisgICAgICAgICAgICAgICAgICAgICAnVGVzdCBvbmx5IHZhbGlkIGZvciBMaW51eCcpCitjbGFzcyBMaWJQYXRoRmluZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ZpbmRfb25fbGlicGF0aChzZWxmKToKKyAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICAgICAgaW1wb3J0IHRlbXBmaWxlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWydnY2MnLCAnLS12ZXJzaW9uJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5ERVZOVUxMKQorICAgICAgICAgICAgb3V0LCBfID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ2djYywgbmVlZGVkIGZvciB0ZXN0LCBub3QgYXZhaWxhYmxlJykKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyBkOgorICAgICAgICAgICAgIyBjcmVhdGUgYW4gZW1wdHkgdGVtcG9yYXJ5IGZpbGUKKyAgICAgICAgICAgIHNyY25hbWUgPSBvcy5wYXRoLmpvaW4oZCwgJ2R1bW15LmMnKQorICAgICAgICAgICAgbGlibmFtZSA9ICdweV9jdHlwZXNfdGVzdF9kdW1teScKKyAgICAgICAgICAgIGRzdG5hbWUgPSBvcy5wYXRoLmpvaW4oZCwgJ2xpYiVzLnNvJyAlIGxpYm5hbWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oc3JjbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzcmNuYW1lKSkKKyAgICAgICAgICAgICMgY29tcGlsZSB0aGUgZmlsZSB0byBhIHNoYXJlZCBsaWJyYXJ5CisgICAgICAgICAgICBjbWQgPSBbJ2djYycsICctbycsIGRzdG5hbWUsICctLXNoYXJlZCcsCisgICAgICAgICAgICAgICAgICAgJy1XbCwtc29uYW1lLGxpYiVzLnNvJyAlIGxpYm5hbWUsIHNyY25hbWVdCisgICAgICAgICAgICBvdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZHN0bmFtZSkpCisgICAgICAgICAgICAjIG5vdyBjaGVjayB0aGF0IHRoZSAuc28gY2FuJ3QgYmUgZm91bmQgKHNpbmNlIG5vdCBpbgorICAgICAgICAgICAgIyBMRF9MSUJSQVJZX1BBVEgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaW5kX2xpYnJhcnkobGlibmFtZSkpCisgICAgICAgICAgICAjIG5vdyBhZGQgdGhlIGxvY2F0aW9uIHRvIExEX0xJQlJBUllfUEFUSAorICAgICAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgICAgICBLRVkgPSAnTERfTElCUkFSWV9QQVRIJworICAgICAgICAgICAgICAgIGlmIEtFWSBub3QgaW4gZW52OgorICAgICAgICAgICAgICAgICAgICB2ID0gZAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHYgPSAnJXM6JXMnICUgKGVudltLRVldLCBkKQorICAgICAgICAgICAgICAgIGVudi5zZXQoS0VZLCB2KQorICAgICAgICAgICAgICAgICMgbm93IGNoZWNrIHRoYXQgdGhlIC5zbyBjYW4gYmUgZm91bmQgKHNpbmNlIGluCisgICAgICAgICAgICAgICAgIyBMRF9MSUJSQVJZX1BBVEgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5kX2xpYnJhcnkobGlibmFtZSksICdsaWIlcy5zbycgJSBsaWJuYW1lKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weQppbmRleCBmZjI1YzhmLi5mMzQ3MzRiIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgb3MsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKIHRyeToKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgIyBwb3NzaWJsZSwgYXMgaW4gQywgdG8gY2FsbCBjZGVjbCBmdW5jdGlvbnMgd2l0aCBtb3JlIHBhcmFtZXRlcnMuCiAgICAgICAgICNzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIDEsIDIsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYygxLCAyLCAzLCA0LCA1LCA2KSwgMykKLSAgICAgICAgaWYgbm90IFdJTkZVTkNUWVBFIGlzIENGVU5DVFlQRSBhbmQgb3MubmFtZSAhPSAiY2UiOgorICAgICAgICBpZiBub3QgV0lORlVOQ1RZUEUgaXMgQ0ZVTkNUWVBFOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzLCAxLCAyLCAzKQogCiAgICAgZGVmIHRlc3Rfc3RydWN0dXJlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CmluZGV4IDI4NDY4YzEuLjQ1NTcxZjMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQpAQCAtMTEsOCArMTEsNiBAQAogICAgIGdsb2JhbCBsaWJjX25hbWUKICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgIGxpYmNfbmFtZSA9IGZpbmRfbGlicmFyeSgiYyIpCi0gICAgZWxpZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgICAgIGxpYmNfbmFtZSA9ICJjb3JlZGxsIgogICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgogICAgICAgICBsaWJjX25hbWUgPSAiY3lnd2luMS5kbGwiCiAgICAgZWxzZToKQEAgLTQ5LDggKzQ3LDggQEAKICAgICAgICAgICAgICAgICBjZGxsLkxvYWRMaWJyYXJ5KGxpYikKICAgICAgICAgICAgICAgICBDRExMKGxpYikKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgaW4gKCJudCIsICJjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MgKE5UL0NFKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0IHNwZWNpZmljIHRvIFdpbmRvd3MnKQogICAgIGRlZiB0ZXN0X2xvYWRfbGlicmFyeShzZWxmKToKICAgICAgICAgIyBDUlQgaXMgbm8gbG9uZ2VyIGRpcmVjdGx5IGxvYWRhYmxlLiBTZWUgaXNzdWUyMzYwNiBmb3IgdGhlCiAgICAgICAgICMgZGlzY3Vzc2lvbiBhYm91dCBhbHRlcm5hdGl2ZSBhcHByb2FjaGVzLgpAQCAtNjQsMTQgKzYyLDkgQEAKICAgICAgICAgICAgIHdpbmRsbFsia2VybmVsMzIiXS5HZXRNb2R1bGVIYW5kbGVXCiAgICAgICAgICAgICB3aW5kbGwuTG9hZExpYnJhcnkoImtlcm5lbDMyIikuR2V0TW9kdWxlSGFuZGxlVwogICAgICAgICAgICAgV2luRExMKCJrZXJuZWwzMiIpLkdldE1vZHVsZUhhbmRsZVcKLSAgICAgICAgZWxpZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgICAgICAgICB3aW5kbGwuY29yZWRsbC5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICB3aW5kbGxbImNvcmVkbGwiXS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICB3aW5kbGwuTG9hZExpYnJhcnkoImNvcmVkbGwiKS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgICAgICBXaW5ETEwoImNvcmVkbGwiKS5HZXRNb2R1bGVIYW5kbGVXCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lIGluICgibnQiLCAiY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzIChOVC9DRSknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9sb2FkX29yZGluYWxfZnVuY3Rpb25zKHNlbGYpOgogICAgICAgICBpbXBvcnQgX2N0eXBlc190ZXN0CiAgICAgICAgIGRsbCA9IFdpbkRMTChfY3R5cGVzX3Rlc3QuX19maWxlX18pCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfb2JqZWN0cy5weQppbmRleCBlZjdiMjBiLi4xOWUzZGMxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkKQEAgLTU0LDcgKzU0LDcgQEAKIAogJycnCiAKLWltcG9ydCB1bml0dGVzdCwgZG9jdGVzdCwgc3lzCitpbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QKIAogaW1wb3J0IGN0eXBlcy50ZXN0LnRlc3Rfb2JqZWN0cwogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQppbmRleCBlNTZiY2NmLi4zNjNmNTg2IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKQEAgLTEsNCArMSw0IEBACi1pbXBvcnQgdW5pdHRlc3QsIHN5cworaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcy50ZXN0IGltcG9ydCBuZWVkX3N5bWJvbAogCiBjbGFzcyBTaW1wbGVUeXBlc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogICAgICMgWFhYIFJlcGxhY2UgYnkgY19jaGFyX3AgdGVzdHMKICAgICBkZWYgdGVzdF9jc3RyaW5ncyhzZWxmKToKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfY2hhcl9wLCBieXJlZgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY19jaGFyX3AKIAogICAgICAgICAjIGNfY2hhcl9wLmZyb21fcGFyYW0gb24gYSBQeXRob24gU3RyaW5nIHBhY2tzIHRoZSBzdHJpbmcKICAgICAgICAgIyBpbnRvIGEgY3BhcmFtIG9iamVjdApAQCAtNjgsNyArNjgsNyBAQAogCiAgICAgQG5lZWRfc3ltYm9sKCdjX3djaGFyX3AnKQogICAgIGRlZiB0ZXN0X2N3X3N0cmluZ3Moc2VsZik6Ci0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBieXJlZiwgY193Y2hhcl9wCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX3djaGFyX3AKIAogICAgICAgICBjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikKIApAQCAtOTgsNyArOTgsNyBAQAogICAgIGRlZiB0ZXN0X2J5cmVmX3BvaW50ZXIoc2VsZik6CiAgICAgICAgICMgVGhlIGZyb21fcGFyYW0gY2xhc3MgbWV0aG9kIG9mIFBPSU5URVIodHlwKSBjbGFzc2VzIGFjY2VwdHMgd2hhdCBpcwogICAgICAgICAjIHJldHVybmVkIGJ5IGJ5cmVmKG9iaiksIGl0IHR5cGUob2JqKSA9PSB0eXAKLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfc2hvcnQsIGNfdWludCwgY19pbnQsIGNfbG9uZywgcG9pbnRlciwgUE9JTlRFUiwgYnlyZWYKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfc2hvcnQsIGNfdWludCwgY19pbnQsIGNfbG9uZywgUE9JTlRFUiwgYnlyZWYKICAgICAgICAgTFBJTlQgPSBQT0lOVEVSKGNfaW50KQogCiAgICAgICAgIExQSU5ULmZyb21fcGFyYW0oYnlyZWYoY19pbnQoNDIpKSkKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CmluZGV4IDMyZjgwMmMuLmQ2ODM5N2UgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKLWltcG9ydCByZSwgc3RydWN0LCBzeXMKK2ltcG9ydCByZSwgc3lzCiAKIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CiAgICAgVEhJU19FTkRJQU4gPSAiPCIKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JldHVybmZ1bmNwdHJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKaW5kZXggOTNlYmE2Yi4uMTk3NGY0MCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmV0dXJuZnVuY3B0cnMucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCi1pbXBvcnQgb3MKIAogaW1wb3J0IF9jdHlwZXNfdGVzdAogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zaXplcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CmluZGV4IGY5YjVlOTcuLjRjZWFjYmMgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3NpemVzLnB5CkBAIC0yLDcgKzIsNiBAQAogCiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weQppbmRleCBjNGE2NTFjLi44ZjZmZTVmIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkKQEAgLTMyNiwxMSArMzI2LDggQEAKIAogICAgICAgICBjbHMsIG1zZyA9IHNlbGYuZ2V0X2V4Y2VwdChQZXJzb24sIGIiU29tZW9uZSIsIChiImEiLCBiImIiLCBiImMiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMsIFJ1bnRpbWVFcnJvcikKLSAgICAgICAgaWYgaXNzdWJjbGFzcyhFeGNlcHRpb24sIG9iamVjdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoUGhvbmUpIDxjbGFzcyAnVHlwZUVycm9yJz46IHRvbyBtYW55IGluaXRpYWxpemVycyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgIihQaG9uZSkgVHlwZUVycm9yOiB0b28gbWFueSBpbml0aWFsaXplcnMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihQaG9uZSkgPGNsYXNzICdUeXBlRXJyb3InPjogdG9vIG1hbnkgaW5pdGlhbGl6ZXJzIikKIAogICAgIGRlZiB0ZXN0X2h1Z2VfZmllbGRfbmFtZShzZWxmKToKICAgICAgICAgIyBpc3N1ZTEyODgxOiBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcwpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CmluZGV4IDVhM2E0N2YuLmU3MWI0ODAgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKQEAgLTc5LDkgKzc5LDkgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaXRlbXMuYXBwZW5kKChlbnRyeS5uYW1lLmRlY29kZSgiYXNjaWkiKSwgZW50cnkuc2l6ZSkpCiAKLSAgICAgICAgZXhwZWN0ZWQgPSBbKCJfX2hlbGxvX18iLCAxNjEpLAotICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18iLCAtMTYxKSwKLSAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fLnNwYW0iLCAxNjEpLAorICAgICAgICBleHBlY3RlZCA9IFsoIl9faGVsbG9fXyIsIDEzOSksCisgICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXyIsIC0xMzkpLAorICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18uc3BhbSIsIDEzOSksCiAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpdGVtcywgZXhwZWN0ZWQsICJQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIGV4YW1wbGUgIgogICAgICAgICAgICAgImluIERvYy9saWJyYXJ5L2N0eXBlcy5yc3QgbWF5IGJlIG91dCBvZiBkYXRlIikKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdXRpbC5weSBiL0xpYi9jdHlwZXMvdXRpbC5weQppbmRleCA3Njg0ZWFiLi4zMzlhZThhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3V0aWwucHkKKysrIGIvTGliL2N0eXBlcy91dGlsLnB5CkBAIC02NywxNiArNjcsNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBmbmFtZQogICAgICAgICByZXR1cm4gTm9uZQogCi1pZiBvcy5uYW1lID09ICJjZSI6Ci0gICAgIyBzZWFyY2ggcGF0aCBhY2NvcmRpbmcgdG8gTVNETjoKLSAgICAjIC0gYWJzb2x1dGUgcGF0aCBzcGVjaWZpZWQgYnkgZmlsZW5hbWUKLSAgICAjIC0gVGhlIC5leGUgbGF1bmNoIGRpcmVjdG9yeQotICAgICMgLSB0aGUgV2luZG93cyBkaXJlY3RvcnkKLSAgICAjIC0gUk9NIGRsbCBmaWxlcyAod2hlcmUgYXJlIHRoZXk/KQotICAgICMgLSBPRU0gc3BlY2lmaWVkIHNlYXJjaCBwYXRoOiBIS0xNXExvYWRlclxTeXN0ZW1QYXRoCi0gICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKLSAgICAgICAgcmV0dXJuIG5hbWUKLQogaWYgb3MubmFtZSA9PSAicG9zaXgiIGFuZCBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgZnJvbSBjdHlwZXMubWFjaG9saWIuZHlsZCBpbXBvcnQgZHlsZF9maW5kIGFzIF9keWxkX2ZpbmQKICAgICBkZWYgZmluZF9saWJyYXJ5KG5hbWUpOgpAQCAtMjcxLDggKzI2MSw4IEBACiAgICAgICAgICAgICBhYmlfdHlwZSA9IG1hY2hfbWFwLmdldChtYWNoaW5lLCAnbGliYzYnKQogCiAgICAgICAgICAgICAjIFhYWCBhc3N1bWluZyBHTElCQydzIGxkY29uZmlnICh3aXRoIG9wdGlvbiAtcCkKLSAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUoCi0gICAgICAgICAgICAgICAgJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQorICAgICAgICAgICAgcmVnZXggPSByJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnCisgICAgICAgICAgICByZWdleCA9IG9zLmZzZW5jb2RlKHJlZ2V4ICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJy9zYmluL2xkY29uZmlnJywgJy1wJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuREVWTlVMTCwKQEAgLTI4NSw4ICsyNzUsMzIgQEAKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICBkZWYgX2ZpbmRMaWJfbGQobmFtZSk6CisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjOTk5OCBmb3Igd2h5IHRoaXMgaXMgbmVlZGVkCisgICAgICAgICAgICBleHByID0gcidbXlwoXClcc10qbGliJXNcLlteXChcKVxzXSonICUgcmUuZXNjYXBlKG5hbWUpCisgICAgICAgICAgICBjbWQgPSBbJ2xkJywgJy10J10KKyAgICAgICAgICAgIGxpYnBhdGggPSBvcy5lbnZpcm9uLmdldCgnTERfTElCUkFSWV9QQVRIJykKKyAgICAgICAgICAgIGlmIGxpYnBhdGg6CisgICAgICAgICAgICAgICAgZm9yIGQgaW4gbGlicGF0aC5zcGxpdCgnOicpOgorICAgICAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLUwnLCBkXSkKKyAgICAgICAgICAgIGNtZC5leHRlbmQoWyctbycsIG9zLmRldm51bGwsICctbCVzJyAlIG5hbWVdKQorICAgICAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICAgICAgICAgIG91dCwgXyA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChleHByLCBvcy5mc2RlY29kZShvdXQpKQorICAgICAgICAgICAgICAgIGlmIHJlczoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzLmdyb3VwKDApCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgcGFzcyAgIyByZXN1bHQgd2lsbCBiZSBOb25lCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CisKICAgICAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKLSAgICAgICAgICAgIHJldHVybiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKSBvciBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkpCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjOTk5OAorICAgICAgICAgICAgcmV0dXJuIF9maW5kU29uYW1lX2xkY29uZmlnKG5hbWUpIG9yIFwKKyAgICAgICAgICAgICAgICAgICBfZ2V0X3NvbmFtZShfZmluZExpYl9nY2MobmFtZSkgb3IgX2ZpbmRMaWJfbGQobmFtZSkpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgdGVzdCBjb2RlCmRpZmYgLS1naXQgYS9MaWIvZGF0ZXRpbWUucHkgYi9MaWIvZGF0ZXRpbWUucHkKaW5kZXggYTIxNzhjNy4uMzYzNzRhYSAxMDA2NDQKLS0tIGEvTGliL2RhdGV0aW1lLnB5CisrKyBiL0xpYi9kYXRldGltZS5weQpAQCAtMTUyLDEyICsxNTIsMjYgQEAKICAgICBkbnVtID0gX2RheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZAogICAgIHJldHVybiBfdGltZS5zdHJ1Y3RfdGltZSgoeSwgbSwgZCwgaGgsIG1tLCBzcywgd2RheSwgZG51bSwgZHN0ZmxhZykpCiAKLWRlZiBfZm9ybWF0X3RpbWUoaGgsIG1tLCBzcywgdXMpOgotICAgICMgU2tpcCB0cmFpbGluZyBtaWNyb3NlY29uZHMgd2hlbiB1cz09MC4KLSAgICByZXN1bHQgPSAiJTAyZDolMDJkOiUwMmQiICUgKGhoLCBtbSwgc3MpCi0gICAgaWYgdXM6Ci0gICAgICAgIHJlc3VsdCArPSAiLiUwNmQiICUgdXMKLSAgICByZXR1cm4gcmVzdWx0CitkZWYgX2Zvcm1hdF90aW1lKGhoLCBtbSwgc3MsIHVzLCB0aW1lc3BlYz0nYXV0bycpOgorICAgIHNwZWNzID0geworICAgICAgICAnaG91cnMnOiAnezowMmR9JywKKyAgICAgICAgJ21pbnV0ZXMnOiAnezowMmR9Ons6MDJkfScsCisgICAgICAgICdzZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9JywKKyAgICAgICAgJ21pbGxpc2Vjb25kcyc6ICd7OjAyZH06ezowMmR9Ons6MDJkfS57OjAzZH0nLAorICAgICAgICAnbWljcm9zZWNvbmRzJzogJ3s6MDJkfTp7OjAyZH06ezowMmR9Lns6MDZkfScKKyAgICB9CisKKyAgICBpZiB0aW1lc3BlYyA9PSAnYXV0byc6CisgICAgICAgICMgU2tpcCB0cmFpbGluZyBtaWNyb3NlY29uZHMgd2hlbiB1cz09MC4KKyAgICAgICAgdGltZXNwZWMgPSAnbWljcm9zZWNvbmRzJyBpZiB1cyBlbHNlICdzZWNvbmRzJworICAgIGVsaWYgdGltZXNwZWMgPT0gJ21pbGxpc2Vjb25kcyc6CisgICAgICAgIHVzIC8vPSAxMDAwCisgICAgdHJ5OgorICAgICAgICBmbXQgPSBzcGVjc1t0aW1lc3BlY10KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1Vua25vd24gdGltZXNwZWMgdmFsdWUnKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBmbXQuZm9ybWF0KGhoLCBtbSwgc3MsIHVzKQogCiAjIENvcnJlY3RseSBzdWJzdGl0dXRlIGZvciAleiBhbmQgJVogZXNjYXBlcyBpbiBzdHJmdGltZSBmb3JtYXRzLgogZGVmIF93cmFwX3N0cmZ0aW1lKG9iamVjdCwgZm9ybWF0LCB0aW1ldHVwbGUpOgpAQCAtMjM2LDExICsyNTAsMTEgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShvZmZzZXQsIHRpbWVkZWx0YSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHppbmZvLiVzKCkgbXVzdCByZXR1cm4gTm9uZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAib3IgdGltZWRlbHRhLCBub3QgJyVzJyIgJSAobmFtZSwgdHlwZShvZmZzZXQpKSkKLSAgICBpZiBvZmZzZXQgJSB0aW1lZGVsdGEobWludXRlcz0xKSBvciBvZmZzZXQubWljcm9zZWNvbmRzOgorICAgIGlmIG9mZnNldC5taWNyb3NlY29uZHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInR6aW5mby4lcygpIG11c3QgcmV0dXJuIGEgd2hvbGUgbnVtYmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib2YgbWludXRlcywgZ290ICVzIiAlIChuYW1lLCBvZmZzZXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBzZWNvbmRzLCBnb3QgJXMiICUgKG5hbWUsIG9mZnNldCkpCiAgICAgaWYgbm90IC10aW1lZGVsdGEoMSkgPCBvZmZzZXQgPCB0aW1lZGVsdGEoMSk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMoKT0lcywgbXVzdCBiZSBzdHJpY3RseSBiZXR3ZWVuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiLXRpbWVkZWx0YShob3Vycz0yNCkgYW5kIHRpbWVkZWx0YShob3Vycz0yNCkiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSwgb2Zmc2V0KSkKIApAQCAtMjc0LDcgKzI4OCw3IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2RheSBtdXN0IGJlIGluIDEuLiVkJyAlIGRpbSwgZGF5KQogICAgIHJldHVybiB5ZWFyLCBtb250aCwgZGF5CiAKLWRlZiBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKToKK2RlZiBfY2hlY2tfdGltZV9maWVsZHMoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBmb2xkKToKICAgICBob3VyID0gX2NoZWNrX2ludF9maWVsZChob3VyKQogICAgIG1pbnV0ZSA9IF9jaGVja19pbnRfZmllbGQobWludXRlKQogICAgIHNlY29uZCA9IF9jaGVja19pbnRfZmllbGQoc2Vjb25kKQpAQCAtMjg3LDcgKzMwMSw5IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3NlY29uZCBtdXN0IGJlIGluIDAuLjU5Jywgc2Vjb25kKQogICAgIGlmIG5vdCAwIDw9IG1pY3Jvc2Vjb25kIDw9IDk5OTk5OToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWljcm9zZWNvbmQgbXVzdCBiZSBpbiAwLi45OTk5OTknLCBtaWNyb3NlY29uZCkKLSAgICByZXR1cm4gaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kCisgICAgaWYgZm9sZCBub3QgaW4gKDAsIDEpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMScsIGZvbGQpCisgICAgcmV0dXJuIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZAogCiBkZWYgX2NoZWNrX3R6aW5mb19hcmcodHopOgogICAgIGlmIHR6IGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKQEAgLTMxNiw2ICszMzIsNyBAQAogCiAgICAgcmV0dXJuIHEKIAorCiBjbGFzcyB0aW1lZGVsdGE6CiAgICAgIiIiUmVwcmVzZW50IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIGRhdGV0aW1lIG9iamVjdHMuCiAKQEAgLTkxNSw3ICs5MzIsNyBAQAogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgeWhpLCB5bG8gPSBkaXZtb2Qoc2VsZi5feWVhciwgMjU2KQogICAgICAgICByZXR1cm4gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5XSksCiAKQEAgLTkyMyw4ICs5NDAsOCBAQAogICAgICAgICB5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSA9IHN0cmluZwogICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAKLSAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKHByb3RvY29sKSkKIAogX2RhdGVfY2xhc3MgPSBkYXRlICAjIHNvIGZ1bmN0aW9ucyB3LyBhcmdzIG5hbWVkICJkYXRlIiBjYW4gZ2V0IGF0IHRoZSBjbGFzcwogCkBAIC05MzIsNiArOTQ5LDcgQEAKIGRhdGUubWF4ID0gZGF0ZSg5OTk5LCAxMiwgMzEpCiBkYXRlLnJlc29sdXRpb24gPSB0aW1lZGVsdGEoZGF5cz0xKQogCisKIGNsYXNzIHR6aW5mbzoKICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aW1lIHpvbmUgaW5mbyBjbGFzc2VzLgogCkBAIC0xMDIzLDExICsxMDQxLDExIEBACiAgICAgZHN0KCkKIAogICAgIFByb3BlcnRpZXMgKHJlYWRvbmx5KToKLSAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbworICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkCiAgICAgIiIiCi0gICAgX19zbG90c19fID0gJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycsICdfaGFzaGNvZGUnCisgICAgX19zbG90c19fID0gJ19ob3VyJywgJ19taW51dGUnLCAnX3NlY29uZCcsICdfbWljcm9zZWNvbmQnLCAnX3R6aW5mbycsICdfaGFzaGNvZGUnLCAnX2ZvbGQnCiAKLSAgICBkZWYgX19uZXdfXyhjbHMsIGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6CisgICAgZGVmIF9fbmV3X18oY2xzLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yLgogCiAgICAgICAgIEFyZ3VtZW50czoKQEAgLTEwMzUsMTUgKzEwNTMsMTYgQEAKICAgICAgICAgaG91ciwgbWludXRlIChyZXF1aXJlZCkKICAgICAgICAgc2Vjb25kLCBtaWNyb3NlY29uZCAoZGVmYXVsdCB0byB6ZXJvKQogICAgICAgICB0emluZm8gKGRlZmF1bHQgdG8gTm9uZSkKKyAgICAgICAgZm9sZCAoa2V5d29yZCBvbmx5LCBkZWZhdWx0IHRvIFRydWUpCiAgICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGhvdXIsIGJ5dGVzKSBhbmQgbGVuKGhvdXIpID09IDYgYW5kIGhvdXJbMF0gPCAyNDoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2IGFuZCBob3VyWzBdJjB4N0YgPCAyNDoKICAgICAgICAgICAgICMgUGlja2xlIHN1cHBvcnQKICAgICAgICAgICAgIHNlbGYgPSBvYmplY3QuX19uZXdfXyhjbHMpCiAgICAgICAgICAgICBzZWxmLl9fc2V0c3RhdGUoaG91ciwgbWludXRlIG9yIE5vbmUpCiAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IC0xCiAgICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCi0gICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl9ob3VyID0gaG91cgpAQCAtMTA1Miw2ICsxMDcxLDcgQEAKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQorICAgICAgICBzZWxmLl9mb2xkID0gZm9sZAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMDgwLDYgKzExMDAsMTAgQEAKICAgICAgICAgIiIidGltZXpvbmUgaW5mbyBvYmplY3QiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3R6aW5mbwogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkCisKICAgICAjIFN0YW5kYXJkIGNvbnZlcnNpb25zLCBfX2hhc2hfXyAoYW5kIGhlbHBlcnMpCiAKICAgICAjIENvbXBhcmlzb25zIG9mIHRpbWUgb2JqZWN0cyB3aXRoIG90aGVyLgpAQCAtMTE0NSw5ICsxMTY5LDEzIEBACiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICAiIiJIYXNoLiIiIgogICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKLSAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgc2VsZi5mb2xkOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmLnJlcGxhY2UoZm9sZD0wKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ID0gc2VsZgorICAgICAgICAgICAgdHpvZmYgPSB0LnV0Y29mZnNldCgpCiAgICAgICAgICAgICBpZiBub3QgdHpvZmY6ICAjIHplcm8gb3IgTm9uZQotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0Ll9nZXRzdGF0ZSgpWzBdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBoLCBtID0gZGl2bW9kKHRpbWVkZWx0YShob3Vycz1zZWxmLmhvdXIsIG1pbnV0ZXM9c2VsZi5taW51dGUpIC0gdHpvZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lZGVsdGEoaG91cnM9MSkpCkBAIC0xMTcxLDEwICsxMTk5LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNpZ24gPSAiKyIKICAgICAgICAgICAgIGhoLCBtbSA9IGRpdm1vZChvZmYsIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgICAgIGFzc2VydCBub3QgbW0gJSB0aW1lZGVsdGEobWludXRlcz0xKSwgIndob2xlIG1pbnV0ZSIKLSAgICAgICAgICAgIG1tIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQorICAgICAgICAgICAgbW0sIHNzID0gZGl2bW9kKG1tLCB0aW1lZGVsdGEobWludXRlcz0xKSkKICAgICAgICAgICAgIGFzc2VydCAwIDw9IGhoIDwgMjQKICAgICAgICAgICAgIG9mZiA9ICIlcyUwMmQlcyUwMmQiICUgKHNpZ24sIGhoLCBzZXAsIG1tKQorICAgICAgICAgICAgaWYgc3M6CisgICAgICAgICAgICAgICAgb2ZmICs9ICc6JTAyZCcgJSBzcy5zZWNvbmRzCiAgICAgICAgIHJldHVybiBvZmYKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTExOTEsMTYgKzEyMjAsMjIgQEAKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKICAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCB0emluZm89JXIiICUgc2VsZi5fdHppbmZvICsgIikiCisgICAgICAgIGlmIHNlbGYuX2ZvbGQ6CisgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgorICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIGZvbGQ9MSkiCiAgICAgICAgIHJldHVybiBzCiAKLSAgICBkZWYgaXNvZm9ybWF0KHNlbGYpOgorICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgdGltZXNwZWM9J2F1dG8nKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gSVNPLgogCi0gICAgICAgIFRoaXMgaXMgJ0hIOk1NOlNTLm1tbW1tbSt6ejp6eicsIG9yICdISDpNTTpTUyt6ejp6eicgaWYKLSAgICAgICAgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorICAgICAgICBUaGUgZnVsbCBmb3JtYXQgaXMgJ0hIOk1NOlNTLm1tbW1tbSt6ejp6eicuIEJ5IGRlZmF1bHQsIHRoZSBmcmFjdGlvbmFsCisgICAgICAgIHBhcnQgaXMgb21pdHRlZCBpZiBzZWxmLm1pY3Jvc2Vjb25kID09IDAuCisKKyAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgICAgICAgdGVybXMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS4KICAgICAgICAgIiIiCiAgICAgICAgIHMgPSBfZm9ybWF0X3RpbWUoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kLCB0aW1lc3BlYykKICAgICAgICAgdHogPSBzZWxmLl90enN0cigpCiAgICAgICAgIGlmIHR6OgogICAgICAgICAgICAgcyArPSB0egpAQCAtMTI2Niw3ICsxMzAxLDcgQEAKICAgICAgICAgcmV0dXJuIG9mZnNldAogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgaG91cj1Ob25lLCBtaW51dGU9Tm9uZSwgc2Vjb25kPU5vbmUsIG1pY3Jvc2Vjb25kPU5vbmUsCi0gICAgICAgICAgICAgICAgdHppbmZvPVRydWUpOgorICAgICAgICAgICAgICAgIHR6aW5mbz1UcnVlLCAqLCBmb2xkPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gYSBuZXcgdGltZSB3aXRoIG5ldyB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGRzLiIiIgogICAgICAgICBpZiBob3VyIGlzIE5vbmU6CiAgICAgICAgICAgICBob3VyID0gc2VsZi5ob3VyCkBAIC0xMjc4LDE0ICsxMzEzLDE5IEBACiAgICAgICAgICAgICBtaWNyb3NlY29uZCA9IHNlbGYubWljcm9zZWNvbmQKICAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CiAgICAgICAgICAgICB0emluZm8gPSBzZWxmLnR6aW5mbwotICAgICAgICByZXR1cm4gdGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbykKKyAgICAgICAgaWYgZm9sZCBpcyBOb25lOgorICAgICAgICAgICAgZm9sZCA9IHNlbGYuX2ZvbGQKKyAgICAgICAgcmV0dXJuIHRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8sIGZvbGQ9Zm9sZCkKIAogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKLSAgICBkZWYgX2dldHN0YXRlKHNlbGYpOgorICAgIGRlZiBfZ2V0c3RhdGUoc2VsZiwgcHJvdG9jb2w9Myk6CiAgICAgICAgIHVzMiwgdXMzID0gZGl2bW9kKHNlbGYuX21pY3Jvc2Vjb25kLCAyNTYpCiAgICAgICAgIHVzMSwgdXMyID0gZGl2bW9kKHVzMiwgMjU2KQotICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCisgICAgICAgIGggPSBzZWxmLl9ob3VyCisgICAgICAgIGlmIHNlbGYuX2ZvbGQgYW5kIHByb3RvY29sID4gMzoKKyAgICAgICAgICAgIGggKz0gMTI4CisgICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFtoLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzMSwgdXMyLCB1czNdKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiAoYmFzZXN0YXRlLCkKQEAgLTEyOTUsMTIgKzEzMzUsMTggQEAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CiAgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQotICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMyA9IHN0cmluZworICAgICAgICBoLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwgdXMxLCB1czIsIHVzMyA9IHN0cmluZworICAgICAgICBpZiBoID4gMTI3OgorICAgICAgICAgICAgc2VsZi5fZm9sZCA9IDEKKyAgICAgICAgICAgIHNlbGYuX2hvdXIgPSBoIC0gMTI4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMAorICAgICAgICAgICAgc2VsZi5faG91ciA9IGgKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUoKSkKKyAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHJldHVybiAodGltZSwgc2VsZi5fZ2V0c3RhdGUocHJvdG9jb2wpKQogCiBfdGltZV9jbGFzcyA9IHRpbWUgICMgc28gZnVuY3Rpb25zIHcvIGFyZ3MgbmFtZWQgInRpbWUiIGNhbiBnZXQgYXQgdGhlIGNsYXNzCiAKQEAgLTEzMTcsMTYgKzEzNjMsMTYgQEAKICAgICBfX3Nsb3RzX18gPSBkYXRlLl9fc2xvdHNfXyArIHRpbWUuX19zbG90c19fCiAKICAgICBkZWYgX19uZXdfXyhjbHMsIHllYXIsIG1vbnRoPU5vbmUsIGRheT1Ob25lLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwKLSAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTAgYW5kIDEgPD0geWVhclsyXSA8PSAxMjoKKyAgICAgICAgICAgICAgICBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSwgKiwgZm9sZD0wKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh5ZWFyLCBieXRlcykgYW5kIGxlbih5ZWFyKSA9PSAxMCBhbmQgMSA8PSB5ZWFyWzJdJjB4N0YgPD0gMTI6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKHllYXIsIG1vbnRoKQogICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICAgeWVhciwgbW9udGgsIGRheSA9IF9jaGVja19kYXRlX2ZpZWxkcyh5ZWFyLCBtb250aCwgZGF5KQotICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQgPSBfY2hlY2tfdGltZV9maWVsZHMoCi0gICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQpCisgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCA9IF9jaGVja190aW1lX2ZpZWxkcygKKyAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCkKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHppbmZvKQogICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICBzZWxmLl95ZWFyID0geWVhcgpAQCAtMTMzOCw2ICsxMzg0LDcgQEAKICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZAogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQorICAgICAgICBzZWxmLl9mb2xkID0gZm9sZAogICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgIyBSZWFkLW9ubHkgZmllbGQgYWNjZXNzb3JzCkBAIC0xMzY2LDYgKzE0MTMsMTAgQEAKICAgICAgICAgIiIidGltZXpvbmUgaW5mbyBvYmplY3QiIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3R6aW5mbwogCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mb2xkCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX2Zyb210aW1lc3RhbXAoY2xzLCB0LCB1dGMsIHR6KToKICAgICAgICAgIiIiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIFBPU0lYIHRpbWVzdGFtcCAobGlrZSB0aW1lLnRpbWUoKSkuCkBAIC0xMzg0LDcgKzE0MzUsMjMgQEAKICAgICAgICAgY29udmVydGVyID0gX3RpbWUuZ210aW1lIGlmIHV0YyBlbHNlIF90aW1lLmxvY2FsdGltZQogICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzLCB3ZWVrZGF5LCBqZGF5LCBkc3QgPSBjb252ZXJ0ZXIodCkKICAgICAgICAgc3MgPSBtaW4oc3MsIDU5KSAgICAjIGNsYW1wIG91dCBsZWFwIHNlY29uZHMgaWYgdGhlIHBsYXRmb3JtIGhhcyB0aGVtCi0gICAgICAgIHJldHVybiBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICByZXN1bHQgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICBpZiB0eiBpcyBOb25lOgorICAgICAgICAgICAgIyBBcyBvZiB2ZXJzaW9uIDIwMTVmIG1heCBmb2xkIGluIElBTkEgZGF0YWJhc2UgaXMKKyAgICAgICAgICAgICMgMjMgaG91cnMgYXQgMTk2OS0wOS0zMCAxMzowMDowMCBpbiBLd2FqYWxlaW4uCisgICAgICAgICAgICAjIExldCdzIHByb2JlIDI0IGhvdXJzIGluIHRoZSBwYXN0IHRvIGRldGVjdCBhIHRyYW5zaXRpb246CisgICAgICAgICAgICBtYXhfZm9sZF9zZWNvbmRzID0gMjQgKiAzNjAwCisgICAgICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzID0gY29udmVydGVyKHQgLSBtYXhfZm9sZF9zZWNvbmRzKVs6Nl0KKyAgICAgICAgICAgIHByb2JlMSA9IGNscyh5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHopCisgICAgICAgICAgICB0cmFucyA9IHJlc3VsdCAtIHByb2JlMSAtIHRpbWVkZWx0YSgwLCBtYXhfZm9sZF9zZWNvbmRzKQorICAgICAgICAgICAgaWYgdHJhbnMuZGF5cyA8IDA6CisgICAgICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IGNvbnZlcnRlcih0ICsgdHJhbnMgLy8gdGltZWRlbHRhKDAsIDEpKVs6Nl0KKyAgICAgICAgICAgICAgICBwcm9iZTIgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICAgICAgICAgIGlmIHByb2JlMiA9PSByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5fZm9sZCA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9IHR6LmZyb211dGMocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbXRpbWVzdGFtcChjbHMsIHQsIHR6PU5vbmUpOgpAQCAtMTM5NCwxMCArMTQ2MSw3IEBACiAgICAgICAgICIiIgogICAgICAgICBfY2hlY2tfdHppbmZvX2FyZyh0eikKIAotICAgICAgICByZXN1bHQgPSBjbHMuX2Zyb210aW1lc3RhbXAodCwgdHogaXMgbm90IE5vbmUsIHR6KQotICAgICAgICBpZiB0eiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlc3VsdCA9IHR6LmZyb211dGMocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgICAgIHJldHVybiBjbHMuX2Zyb210aW1lc3RhbXAodCwgdHogaXMgbm90IE5vbmUsIHR6KQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHV0Y2Zyb210aW1lc3RhbXAoY2xzLCB0KToKQEAgLTE0MTcsMTUgKzE0ODEsMTcgQEAKICAgICAgICAgcmV0dXJuIGNscy51dGNmcm9tdGltZXN0YW1wKHQpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgY29tYmluZShjbHMsIGRhdGUsIHRpbWUpOgorICAgIGRlZiBjb21iaW5lKGNscywgZGF0ZSwgdGltZSwgdHppbmZvPVRydWUpOgogICAgICAgICAiQ29uc3RydWN0IGEgZGF0ZXRpbWUgZnJvbSBhIGdpdmVuIGRhdGUgYW5kIGEgZ2l2ZW4gdGltZS4iCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRhdGUsIF9kYXRlX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGF0ZSBhcmd1bWVudCBtdXN0IGJlIGEgZGF0ZSBpbnN0YW5jZSIpCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRpbWUsIF90aW1lX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidGltZSBhcmd1bWVudCBtdXN0IGJlIGEgdGltZSBpbnN0YW5jZSIpCisgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgorICAgICAgICAgICAgdHppbmZvID0gdGltZS50emluZm8KICAgICAgICAgcmV0dXJuIGNscyhkYXRlLnllYXIsIGRhdGUubW9udGgsIGRhdGUuZGF5LAogICAgICAgICAgICAgICAgICAgIHRpbWUuaG91ciwgdGltZS5taW51dGUsIHRpbWUuc2Vjb25kLCB0aW1lLm1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgIHRpbWUudHppbmZvKQorICAgICAgICAgICAgICAgICAgIHR6aW5mbywgZm9sZD10aW1lLmZvbGQpCiAKICAgICBkZWYgdGltZXR1cGxlKHNlbGYpOgogICAgICAgICAiUmV0dXJuIGxvY2FsIHRpbWUgdHVwbGUgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIgpAQCAtMTQ0MCwxMiArMTUwNiw0NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCkKIAorICAgIGRlZiBfbWt0aW1lKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gaW50ZWdlciBQT1NJWCB0aW1lc3RhbXAuIiIiCisgICAgICAgIGVwb2NoID0gZGF0ZXRpbWUoMTk3MCwgMSwgMSkKKyAgICAgICAgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMAorICAgICAgICB0ID0gKHNlbGYgLSBlcG9jaCkgLy8gdGltZWRlbHRhKDAsIDEpCisgICAgICAgIGRlZiBsb2NhbCh1KToKKyAgICAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MgPSBfdGltZS5sb2NhbHRpbWUodSlbOjZdCisgICAgICAgICAgICByZXR1cm4gKGRhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MpIC0gZXBvY2gpIC8vIHRpbWVkZWx0YSgwLCAxKQorCisgICAgICAgICMgT3VyIGdvYWwgaXMgdG8gc29sdmUgdCA9IGxvY2FsKHUpIGZvciB1LgorICAgICAgICBhID0gbG9jYWwodCkgLSB0CisgICAgICAgIHUxID0gdCAtIGEKKyAgICAgICAgdDEgPSBsb2NhbCh1MSkKKyAgICAgICAgaWYgdDEgPT0gdDoKKyAgICAgICAgICAgICMgV2UgZm91bmQgb25lIHNvbHV0aW9uLCBidXQgaXQgbWF5IG5vdCBiZSB0aGUgb25lIHdlIG5lZWQuCisgICAgICAgICAgICAjIExvb2sgZm9yIGFuIGVhcmxpZXIgc29sdXRpb24gKGlmIGBmb2xkYCBpcyAwKSwgb3IgYQorICAgICAgICAgICAgIyBsYXRlciBvbmUgKGlmIGBmb2xkYCBpcyAxKS4KKyAgICAgICAgICAgIHUyID0gdTEgKyAoLW1heF9mb2xkX3NlY29uZHMsIG1heF9mb2xkX3NlY29uZHMpW3NlbGYuZm9sZF0KKyAgICAgICAgICAgIGIgPSBsb2NhbCh1MikgLSB1MgorICAgICAgICAgICAgaWYgYSA9PSBiOgorICAgICAgICAgICAgICAgIHJldHVybiB1MQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYiA9IHQxIC0gdTEKKyAgICAgICAgICAgIGFzc2VydCBhICE9IGIKKyAgICAgICAgdTIgPSB0IC0gYgorICAgICAgICB0MiA9IGxvY2FsKHUyKQorICAgICAgICBpZiB0MiA9PSB0OgorICAgICAgICAgICAgcmV0dXJuIHUyCisgICAgICAgIGlmIHQxID09IHQ6CisgICAgICAgICAgICByZXR1cm4gdTEKKyAgICAgICAgIyBXZSBoYXZlIGZvdW5kIGJvdGggb2Zmc2V0cyBhIGFuZCBiLCBidXQgbmVpdGhlciB0IC0gYSBub3IgdCAtIGIgaXMKKyAgICAgICAgIyBhIHNvbHV0aW9uLiAgVGhpcyBtZWFucyB0IGlzIGluIHRoZSBnYXAuCisgICAgICAgIHJldHVybiAobWF4LCBtaW4pW3NlbGYuZm9sZF0odTEsIHUyKQorCisKICAgICBkZWYgdGltZXN0YW1wKHNlbGYpOgogICAgICAgICAiUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBhcyBmbG9hdCIKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gX3RpbWUubWt0aW1lKChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEsIC0xKSkgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CisgICAgICAgICAgICBzID0gc2VsZi5fbWt0aW1lKCkKKyAgICAgICAgICAgIHJldHVybiBzICsgc2VsZi5taWNyb3NlY29uZCAvIDFlNgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIChzZWxmIC0gX0VQT0NIKS50b3RhbF9zZWNvbmRzKCkKIApAQCAtMTQ2NCwxNSArMTU2NCwxNiBAQAogCiAgICAgZGVmIHRpbWUoc2VsZik6CiAgICAgICAgICJSZXR1cm4gdGhlIHRpbWUgcGFydCwgd2l0aCB0emluZm8gTm9uZS4iCi0gICAgICAgIHJldHVybiB0aW1lKHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLCBzZWxmLm1pY3Jvc2Vjb25kKQorICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwgZm9sZD1zZWxmLmZvbGQpCiAKICAgICBkZWYgdGltZXR6KHNlbGYpOgogICAgICAgICAiUmV0dXJuIHRoZSB0aW1lIHBhcnQsIHdpdGggc2FtZSB0emluZm8uIgogICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHppbmZvKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl90emluZm8sIGZvbGQ9c2VsZi5mb2xkKQogCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgeWVhcj1Ob25lLCBtb250aD1Ob25lLCBkYXk9Tm9uZSwgaG91cj1Ob25lLAotICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUpOgorICAgICAgICAgICAgICAgIG1pbnV0ZT1Ob25lLCBzZWNvbmQ9Tm9uZSwgbWljcm9zZWNvbmQ9Tm9uZSwgdHppbmZvPVRydWUsCisgICAgICAgICAgICAgICAgKiwgZm9sZD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmV3IGRhdGV0aW1lIHdpdGggbmV3IHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBmaWVsZHMuIiIiCiAgICAgICAgIGlmIHllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHllYXIgPSBzZWxmLnllYXIKQEAgLTE0OTAsNDYgKzE1OTEsNDUgQEAKICAgICAgICAgICAgIG1pY3Jvc2Vjb25kID0gc2VsZi5taWNyb3NlY29uZAogICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKICAgICAgICAgICAgIHR6aW5mbyA9IHNlbGYudHppbmZvCi0gICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pCisgICAgICAgIGlmIGZvbGQgaXMgTm9uZToKKyAgICAgICAgICAgIGZvbGQgPSBzZWxmLmZvbGQKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkPWZvbGQpCisKKyAgICBkZWYgX2xvY2FsX3RpbWV6b25lKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnR6aW5mbyBpcyBOb25lOgorICAgICAgICAgICAgdHMgPSBzZWxmLl9ta3RpbWUoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHMgPSAoc2VsZiAtIF9FUE9DSCkgLy8gdGltZWRlbHRhKHNlY29uZHM9MSkKKyAgICAgICAgbG9jYWx0bSA9IF90aW1lLmxvY2FsdGltZSh0cykKKyAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgRXh0cmFjdCBUWiBkYXRhIGlmIGF2YWlsYWJsZQorICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKKyAgICAgICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgZGVsdGEgPSBsb2NhbCAtIGRhdGV0aW1lKCpfdGltZS5nbXRpbWUodHMpWzo2XSkKKyAgICAgICAgICAgIHpvbmUgPSBfdGltZS5zdHJmdGltZSgnJVonLCBsb2NhbHRtKQorICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSwgem9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHR6ID0gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKKyAgICAgICAgcmV0dXJuIHR6CiAKICAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0ej1Ob25lKToKICAgICAgICAgaWYgdHogaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHNlbGYudHppbmZvIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKLSAgICAgICAgICAgIHRzID0gKHNlbGYgLSBfRVBPQ0gpIC8vIHRpbWVkZWx0YShzZWNvbmRzPTEpCi0gICAgICAgICAgICBsb2NhbHRtID0gX3RpbWUubG9jYWx0aW1lKHRzKQotICAgICAgICAgICAgbG9jYWwgPSBkYXRldGltZSgqbG9jYWx0bVs6Nl0pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBFeHRyYWN0IFRaIGRhdGEgaWYgYXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgZ210b2ZmID0gbG9jYWx0bS50bV9nbXRvZmYKLSAgICAgICAgICAgICAgICB6b25lID0gbG9jYWx0bS50bV96b25lCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBDb21wdXRlIFVUQyBvZmZzZXQgYW5kIGNvbXBhcmUgd2l0aCB0aGUgdmFsdWUgaW1wbGllZAotICAgICAgICAgICAgICAgICMgYnkgdG1faXNkc3QuICBJZiB0aGUgdmFsdWVzIG1hdGNoLCB1c2UgdGhlIHpvbmUgbmFtZQotICAgICAgICAgICAgICAgICMgaW1wbGllZCBieSB0bV9pc2RzdC4KLSAgICAgICAgICAgICAgICBkZWx0YSA9IGxvY2FsIC0gZGF0ZXRpbWUoKl90aW1lLmdtdGltZSh0cylbOjZdKQotICAgICAgICAgICAgICAgIGRzdCA9IF90aW1lLmRheWxpZ2h0IGFuZCBsb2NhbHRtLnRtX2lzZHN0ID4gMAotICAgICAgICAgICAgICAgIGdtdG9mZiA9IC0oX3RpbWUuYWx0em9uZSBpZiBkc3QgZWxzZSBfdGltZS50aW1lem9uZSkKLSAgICAgICAgICAgICAgICBpZiBkZWx0YSA9PSB0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpOgotICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhLCBfdGltZS50em5hbWVbZHN0XSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKGRlbHRhKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0eiA9IHRpbWV6b25lKHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZiksIHpvbmUpCi0KKyAgICAgICAgICAgIHR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eiBhcmd1bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHR6aW5mbyIpCiAKICAgICAgICAgbXl0eiA9IHNlbGYudHppbmZvCiAgICAgICAgIGlmIG15dHogaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCisgICAgICAgICAgICBteXR6ID0gc2VsZi5fbG9jYWxfdGltZXpvbmUoKQogCiAgICAgICAgIGlmIHR6IGlzIG15dHo6CiAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgICMgQ29udmVydCBzZWxmIHRvIFVUQywgYW5kIGF0dGFjaCB0aGUgbmV3IHRpbWUgem9uZSBvYmplY3QuCi0gICAgICAgIG15b2Zmc2V0ID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICBteW9mZnNldCA9IG15dHoudXRjb2Zmc2V0KHNlbGYpCiAgICAgICAgIGlmIG15b2Zmc2V0IGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQogICAgICAgICB1dGMgPSAoc2VsZiAtIG15b2Zmc2V0KS5yZXBsYWNlKHR6aW5mbz10eikKQEAgLTE1NDksMjEgKzE2NDksMjUgQEAKICAgICAgICAgICAgIHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAogICAgICAgICAgICAgc2VsZi5feWVhcikKIAotICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgc2VwPSdUJyk6CisgICAgZGVmIGlzb2Zvcm1hdChzZWxmLCBzZXA9J1QnLCB0aW1lc3BlYz0nYXV0bycpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHRpbWUgZm9ybWF0dGVkIGFjY29yZGluZyB0byBJU08uCiAKLSAgICAgICAgVGhpcyBpcyAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0nLCBvciAnWVlZWS1NTS1ERCBISDpNTTpTUycgaWYKLSAgICAgICAgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorICAgICAgICBUaGUgZnVsbCBmb3JtYXQgbG9va3MgbGlrZSAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0nLgorICAgICAgICBCeSBkZWZhdWx0LCB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzIG9taXR0ZWQgaWYgc2VsZi5taWNyb3NlY29uZCA9PSAwLgogCiAgICAgICAgIElmIHNlbGYudHppbmZvIGlzIG5vdCBOb25lLCB0aGUgVVRDIG9mZnNldCBpcyBhbHNvIGF0dGFjaGVkLCBnaXZpbmcKLSAgICAgICAgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tK0hIOk1NJyBvciAnWVlZWS1NTS1ERCBISDpNTTpTUytISDpNTScuCisgICAgICAgIGdpdmluZyBhIGZ1bGwgZm9ybWF0IG9mICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbStISDpNTScuCiAKICAgICAgICAgT3B0aW9uYWwgYXJndW1lbnQgc2VwIHNwZWNpZmllcyB0aGUgc2VwYXJhdG9yIGJldHdlZW4gZGF0ZSBhbmQKICAgICAgICAgdGltZSwgZGVmYXVsdCAnVCcuCisKKyAgICAgICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHRpbWVzcGVjIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgICAgICAgdGVybXMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZS4KICAgICAgICAgIiIiCiAgICAgICAgIHMgPSAoIiUwNGQtJTAyZC0lMDJkJWMiICUgKHNlbGYuX3llYXIsIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlcCkgKwogICAgICAgICAgICAgIF9mb3JtYXRfdGltZShzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCwgdGltZXNwZWMpKQorCiAgICAgICAgIG9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKICAgICAgICAgaWYgb2ZmIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgb2ZmLmRheXMgPCAwOgpAQCAtMTU3Miw5ICsxNjc2LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNpZ24gPSAiKyIKICAgICAgICAgICAgIGhoLCBtbSA9IGRpdm1vZChvZmYsIHRpbWVkZWx0YShob3Vycz0xKSkKLSAgICAgICAgICAgIGFzc2VydCBub3QgbW0gJSB0aW1lZGVsdGEobWludXRlcz0xKSwgIndob2xlIG1pbnV0ZSIKLSAgICAgICAgICAgIG1tIC8vPSB0aW1lZGVsdGEobWludXRlcz0xKQorICAgICAgICAgICAgbW0sIHNzID0gZGl2bW9kKG1tLCB0aW1lZGVsdGEobWludXRlcz0xKSkKICAgICAgICAgICAgIHMgKz0gIiVzJTAyZDolMDJkIiAlIChzaWduLCBoaCwgbW0pCisgICAgICAgICAgICBpZiBzczoKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHNzLm1pY3Jvc2Vjb25kcworICAgICAgICAgICAgICAgIHMgKz0gIjolMDJkIiAlIHNzLnNlY29uZHMKICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTE1OTEsNiArMTY5Nyw5IEBACiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgdHppbmZvPSVyIiAlIHNlbGYuX3R6aW5mbyArICIpIgorICAgICAgICBpZiBzZWxmLl9mb2xkOgorICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKKyAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCBmb2xkPTEpIgogICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CkBAIC0xNjkzLDYgKzE4MDIsMTIgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQogICAgICAgICAgICAgb3RvZmYgPSBvdGhlci51dGNvZmZzZXQoKQorICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBhbGxvd19taXhlZCBtZWFucyB0aGF0IHdlIGFyZSBjYWxsZWQgZnJvbSBfX2VxX18KKyAgICAgICAgICAgIGlmIGFsbG93X21peGVkOgorICAgICAgICAgICAgICAgIGlmIG15b2ZmICE9IHNlbGYucmVwbGFjZShmb2xkPW5vdCBzZWxmLmZvbGQpLnV0Y29mZnNldCgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICAgICAgICAgIGlmIG90b2ZmICE9IG90aGVyLnJlcGxhY2UoZm9sZD1ub3Qgb3RoZXIuZm9sZCkudXRjb2Zmc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyCiAgICAgICAgICAgICBiYXNlX2NvbXBhcmUgPSBteW9mZiA9PSBvdG9mZgogCiAgICAgICAgIGlmIGJhc2VfY29tcGFyZToKQEAgLTE3NjAsOSArMTg3NSwxMyBAQAogCiAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYXNoY29kZSA9PSAtMToKLSAgICAgICAgICAgIHR6b2ZmID0gc2VsZi51dGNvZmZzZXQoKQorICAgICAgICAgICAgaWYgc2VsZi5mb2xkOgorICAgICAgICAgICAgICAgIHQgPSBzZWxmLnJlcGxhY2UoZm9sZD0wKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ID0gc2VsZgorICAgICAgICAgICAgdHpvZmYgPSB0LnV0Y29mZnNldCgpCiAgICAgICAgICAgICBpZiB0em9mZiBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaChzZWxmLl9nZXRzdGF0ZSgpWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gaGFzaCh0Ll9nZXRzdGF0ZSgpWzBdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkYXlzID0gX3ltZDJvcmQoc2VsZi55ZWFyLCBzZWxmLm1vbnRoLCBzZWxmLmRheSkKICAgICAgICAgICAgICAgICBzZWNvbmRzID0gc2VsZi5ob3VyICogMzYwMCArIHNlbGYubWludXRlICogNjAgKyBzZWxmLnNlY29uZApAQCAtMTc3MSwxMSArMTg5MCwxNCBAQAogCiAgICAgIyBQaWNrbGUgc3VwcG9ydC4KIAotICAgIGRlZiBfZ2V0c3RhdGUoc2VsZik6CisgICAgZGVmIF9nZXRzdGF0ZShzZWxmLCBwcm90b2NvbD0zKToKICAgICAgICAgeWhpLCB5bG8gPSBkaXZtb2Qoc2VsZi5feWVhciwgMjU2KQogICAgICAgICB1czIsIHVzMyA9IGRpdm1vZChzZWxmLl9taWNyb3NlY29uZCwgMjU2KQogICAgICAgICB1czEsIHVzMiA9IGRpdm1vZCh1czIsIDI1NikKLSAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3loaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LAorICAgICAgICBtID0gc2VsZi5fbW9udGgKKyAgICAgICAgaWYgc2VsZi5fZm9sZCBhbmQgcHJvdG9jb2wgPiAzOgorICAgICAgICAgICAgbSArPSAxMjgKKyAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3loaSwgeWxvLCBtLCBzZWxmLl9kYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzMSwgdXMyLCB1czNdKQogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgTm9uZToKQEAgLTE3ODYsMTQgKzE5MDgsMjAgQEAKICAgICBkZWYgX19zZXRzdGF0ZShzZWxmLCBzdHJpbmcsIHR6aW5mbyk6CiAgICAgICAgIGlmIHR6aW5mbyBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHppbmZvLCBfdHppbmZvX2NsYXNzKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYmFkIHR6aW5mbyBzdGF0ZSBhcmciKQotICAgICAgICAoeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXksIHNlbGYuX2hvdXIsCisgICAgICAgICh5aGksIHlsbywgbSwgc2VsZi5fZGF5LCBzZWxmLl9ob3VyLAogICAgICAgICAgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMpID0gc3RyaW5nCisgICAgICAgIGlmIG0gPiAxMjc6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMQorICAgICAgICAgICAgc2VsZi5fbW9udGggPSBtIC0gMTI4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9mb2xkID0gMAorICAgICAgICAgICAgc2VsZi5fbW9udGggPSBtCiAgICAgICAgIHNlbGYuX3llYXIgPSB5aGkgKiAyNTYgKyB5bG8KICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQgPSAoKCh1czEgPDwgOCkgfCB1czIpIDw8IDgpIHwgdXMzCiAgICAgICAgIHNlbGYuX3R6aW5mbyA9IHR6aW5mbwogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKCkpCisgICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG9jb2wpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCiAKIAogZGF0ZXRpbWUubWluID0gZGF0ZXRpbWUoMSwgMSwgMSkKQEAgLTE5MTMsNiArMjA0MSw4IEBACiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9uYW1lX2Zyb21fb2Zmc2V0KGRlbHRhKToKKyAgICAgICAgaWYgbm90IGRlbHRhOgorICAgICAgICAgICAgcmV0dXJuICdVVEMnCiAgICAgICAgIGlmIGRlbHRhIDwgdGltZWRlbHRhKDApOgogICAgICAgICAgICAgc2lnbiA9ICctJwogICAgICAgICAgICAgZGVsdGEgPSAtZGVsdGEKZGlmZiAtLWdpdCBhL0xpYi9kYm0vZHVtYi5weSBiL0xpYi9kYm0vZHVtYi5weQppbmRleCA3Nzc3YTdjLi5lN2M2NDQwIDEwMDY0NAotLS0gYS9MaWIvZGJtL2R1bWIucHkKKysrIGIvTGliL2RibS9kdW1iLnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZWJhc2VuYW1lLCBtb2RlLCBmbGFnPSdjJyk6CiAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlCisgICAgICAgIHNlbGYuX3JlYWRvbmx5ID0gKGZsYWcgPT0gJ3InKQogCiAgICAgICAgICMgVGhlIGRpcmVjdG9yeSBmaWxlIGlzIGEgdGV4dCBmaWxlLiAgRWFjaCBsaW5lIGxvb2tzIGxpa2UKICAgICAgICAgIyAgICAiJXIsICglZCwgJWQpXG4iICUgKGtleSwgcG9zLCBzaXopCkBAIC04MCw2ICs4MSwxMSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3InLCBlbmNvZGluZz0iTGF0aW4tMSIpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gKCdjJywgJ24nKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgZGF0YWJhc2UgZmlsZSBpcyBtaXNzaW5nLCB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbWFudGljcyBvZiB0aGUgJ2MnIGZsYWcgd2lsbCBiZSB1c2VkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NCkKICAgICAgICAgICAgIHdpdGggX2lvLm9wZW4oc2VsZi5fZGF0ZmlsZSwgJ3cnLCBlbmNvZGluZz0iTGF0aW4tMSIpIGFzIGY6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2htb2Qoc2VsZi5fZGF0ZmlsZSkKICAgICAgICAgZWxzZToKQEAgLTE3OCw2ICsxODQsMTAgQEAKICAgICAgICAgICAgIGYud3JpdGUoIiVyLCAlclxuIiAlIChrZXkuZGVjb2RlKCJMYXRpbi0xIiksIHBvc19hbmRfc2l6X3BhaXIpKQogCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsKToKKyAgICAgICAgaWYgc2VsZi5fcmVhZG9ubHk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShrZXksIChieXRlcywgYnl0ZWFycmF5KSk6CkBAIC0yMTIsNiArMjIyLDEwIEBACiAgICAgICAgICAgICAjIChzbyB0aGF0IF9jb21taXQoKSBuZXZlciBnZXRzIGNhbGxlZCkuCiAKICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgaWYgc2VsZi5fcmVhZG9ubHk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgc3RyKToKICAgICAgICAgICAgIGtleSA9IGtleS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgc2VsZi5fdmVyaWZ5X29wZW4oKQpAQCAtMzAwLDQgKzMxNCw4IEBACiAgICAgZWxzZToKICAgICAgICAgIyBUdXJuIG9mZiBhbnkgYml0cyB0aGF0IGFyZSBzZXQgaW4gdGhlIHVtYXNrCiAgICAgICAgIG1vZGUgPSBtb2RlICYgKH51bSkKKyAgICBpZiBmbGFnIG5vdCBpbiAoJ3InLCAndycsICdjJywgJ24nKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oIkZsYWcgbXVzdCBiZSBvbmUgb2YgJ3InLCAndycsICdjJywgb3IgJ24nIiwKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICByZXR1cm4gX0RhdGFiYXNlKGZpbGUsIG1vZGUsIGZsYWc9ZmxhZykKZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKaW5kZXggMDc2YmJhYy4uMjA5NWE1ZSAxMDA2NDQKLS0tIGEvTGliL2RpZmZsaWIucHkKKysrIGIvTGliL2RpZmZsaWIucHkKQEAgLTE0MTUsNyArMTQxNSw3IEBACiAgICAgaW1wb3J0IHJlCiAKICAgICAjIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgZmluZGluZyBpbnRyYWxpbmUgY2hhbmdlIGluZGljZXMKLSAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKCcoXCsrfFwtK3xcXispJykKKyAgICBjaGFuZ2VfcmUgPSByZS5jb21waWxlKHInKFwrK3xcLSt8XF4rKScpCiAKICAgICAjIGNyZWF0ZSB0aGUgZGlmZmVyZW5jZSBpdGVyYXRvciB0byBnZW5lcmF0ZSB0aGUgZGlmZmVyZW5jZXMKICAgICBkaWZmX2xpbmVzX2l0ZXJhdG9yID0gbmRpZmYoZnJvbWxpbmVzLHRvbGluZXMsbGluZWp1bmssY2hhcmp1bmspCmRpZmYgLS1naXQgYS9MaWIvZGlzLnB5IGIvTGliL2Rpcy5weQppbmRleCBmN2UzYzdmLi4wNzk0YjdmIDEwMDY0NAotLS0gYS9MaWIvZGlzLnB5CisrKyBiL0xpYi9kaXMucHkKQEAgLTE2LDYgKzE2LDggQEAKIF9oYXZlX2NvZGUgPSAodHlwZXMuTWV0aG9kVHlwZSwgdHlwZXMuRnVuY3Rpb25UeXBlLCB0eXBlcy5Db2RlVHlwZSwKICAgICAgICAgICAgICAgY2xhc3NtZXRob2QsIHN0YXRpY21ldGhvZCwgdHlwZSkKIAorRk9STUFUX1ZBTFVFID0gb3BtYXBbJ0ZPUk1BVF9WQUxVRSddCisKIGRlZiBfdHJ5X2NvbXBpbGUoc291cmNlLCBuYW1lKToKICAgICAiIiJBdHRlbXB0cyB0byBjb21waWxlIHRoZSBnaXZlbiBzb3VyY2UsIGZpcnN0IGFzIGFuIGV4cHJlc3Npb24gYW5kCiAgICAgICAgdGhlbiBhcyBhIHN0YXRlbWVudCBpZiB0aGUgZmlyc3QgYXBwcm9hY2ggZmFpbHMuCkBAIC04Nyw2ICs4OSw3IEBACiAgICAgNjQ6ICJOT0ZSRUUiLAogICAgMTI4OiAiQ09ST1VUSU5FIiwKICAgIDI1NjogIklURVJBQkxFX0NPUk9VVElORSIsCisgICA1MTI6ICJBU1lOQ19HRU5FUkFUT1IiLAogfQogCiBkZWYgcHJldHR5X2ZsYWdzKGZsYWdzKToKQEAgLTE2Myw2ICsxNjYsMTUgQEAKIF9JbnN0cnVjdGlvbiA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoIl9JbnN0cnVjdGlvbiIsCiAgICAgICJvcG5hbWUgb3Bjb2RlIGFyZyBhcmd2YWwgYXJncmVwciBvZmZzZXQgc3RhcnRzX2xpbmUgaXNfanVtcF90YXJnZXQiKQogCitfSW5zdHJ1Y3Rpb24ub3BuYW1lLl9fZG9jX18gPSAiSHVtYW4gcmVhZGFibGUgbmFtZSBmb3Igb3BlcmF0aW9uIgorX0luc3RydWN0aW9uLm9wY29kZS5fX2RvY19fID0gIk51bWVyaWMgY29kZSBmb3Igb3BlcmF0aW9uIgorX0luc3RydWN0aW9uLmFyZy5fX2RvY19fID0gIk51bWVyaWMgYXJndW1lbnQgdG8gb3BlcmF0aW9uIChpZiBhbnkpLCBvdGhlcndpc2UgTm9uZSIKK19JbnN0cnVjdGlvbi5hcmd2YWwuX19kb2NfXyA9ICJSZXNvbHZlZCBhcmcgdmFsdWUgKGlmIGtub3duKSwgb3RoZXJ3aXNlIHNhbWUgYXMgYXJnIgorX0luc3RydWN0aW9uLmFyZ3JlcHIuX19kb2NfXyA9ICJIdW1hbiByZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiBvcGVyYXRpb24gYXJndW1lbnQiCitfSW5zdHJ1Y3Rpb24ub2Zmc2V0Ll9fZG9jX18gPSAiU3RhcnQgaW5kZXggb2Ygb3BlcmF0aW9uIHdpdGhpbiBieXRlY29kZSBzZXF1ZW5jZSIKK19JbnN0cnVjdGlvbi5zdGFydHNfbGluZS5fX2RvY19fID0gIkxpbmUgc3RhcnRlZCBieSB0aGlzIG9wY29kZSAoaWYgYW55KSwgb3RoZXJ3aXNlIE5vbmUiCitfSW5zdHJ1Y3Rpb24uaXNfanVtcF90YXJnZXQuX19kb2NfXyA9ICJUcnVlIGlmIG90aGVyIGNvZGUganVtcHMgdG8gaGVyZSwgb3RoZXJ3aXNlIEZhbHNlIgorCiBjbGFzcyBJbnN0cnVjdGlvbihfSW5zdHJ1Y3Rpb24pOgogICAgICIiIkRldGFpbHMgZm9yIGEgYnl0ZWNvZGUgb3BlcmF0aW9uCiAKQEAgLTI3Niw3ICsyODgsNiBAQAogICAgICIiIgogICAgIGxhYmVscyA9IGZpbmRsYWJlbHMoY29kZSkKICAgICBzdGFydHNfbGluZSA9IE5vbmUKLSAgICBmcmVlID0gTm9uZQogICAgIGZvciBvZmZzZXQsIG9wLCBhcmcgaW4gX3VucGFja19vcGFyZ3MoY29kZSk6CiAgICAgICAgIGlmIGxpbmVzdGFydHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzdGFydHNfbGluZSA9IGxpbmVzdGFydHMuZ2V0KG9mZnNldCwgTm9uZSkKQEAgLTI5Niw3ICszMDcsNyBAQAogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNuYW1lOgogICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgbmFtZXMpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2pyZWw6Ci0gICAgICAgICAgICAgICAgYXJndmFsID0gb2Zmc2V0ICsgMyArIGFyZworICAgICAgICAgICAgICAgIGFyZ3ZhbCA9IG9mZnNldCArIDIgKyBhcmcKICAgICAgICAgICAgICAgICBhcmdyZXByID0gInRvICIgKyByZXByKGFyZ3ZhbCkKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbG9jYWw6CiAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLCB2YXJuYW1lcykKQEAgLTMwNSw4ICszMTYsMTMgQEAKICAgICAgICAgICAgICAgICBhcmdyZXByID0gYXJndmFsCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2ZyZWU6CiAgICAgICAgICAgICAgICAgYXJndmFsLCBhcmdyZXByID0gX2dldF9uYW1lX2luZm8oYXJnLCBjZWxscykKLSAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbmFyZ3M6Ci0gICAgICAgICAgICAgICAgYXJncmVwciA9ICIlZCBwb3NpdGlvbmFsLCAlZCBrZXl3b3JkIHBhaXIiICUgKGFyZyUyNTYsIGFyZy8vMjU2KQorICAgICAgICAgICAgZWxpZiBvcCA9PSBGT1JNQVRfVkFMVUU6CisgICAgICAgICAgICAgICAgYXJndmFsID0gKChOb25lLCBzdHIsIHJlcHIsIGFzY2lpKVthcmcgJiAweDNdLCBib29sKGFyZyAmIDB4NCkpCisgICAgICAgICAgICAgICAgYXJncmVwciA9ICgnJywgJ3N0cicsICdyZXByJywgJ2FzY2lpJylbYXJnICYgMHgzXQorICAgICAgICAgICAgICAgIGlmIGFyZ3ZhbFsxXToKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJncmVwcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3JlcHIgKz0gJywgJworICAgICAgICAgICAgICAgICAgICBhcmdyZXByICs9ICd3aXRoIGZvcm1hdCcKICAgICAgICAgeWllbGQgSW5zdHJ1Y3Rpb24ob3BuYW1lW29wXSwgb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgYXJndmFsLCBhcmdyZXByLAogICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIHN0YXJ0c19saW5lLCBpc19qdW1wX3RhcmdldCkKQEAgLTM0MywyMyArMzU5LDE1IEBACiBkaXNjbyA9IGRpc2Fzc2VtYmxlICAgICAgICAgICAgICAgICAgICAgIyBYWFggRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CiAKIGRlZiBfdW5wYWNrX29wYXJncyhjb2RlKToKLSAgICAjIGVudW1lcmF0ZSgpIGlzIG5vdCBhbiBvcHRpb24sIHNpbmNlIHdlIHNvbWV0aW1lcyBwcm9jZXNzCi0gICAgIyBtdWx0aXBsZSBlbGVtZW50cyBvbiBhIHNpbmdsZSBwYXNzIHRocm91Z2ggdGhlIGxvb3AKICAgICBleHRlbmRlZF9hcmcgPSAwCi0gICAgbiA9IGxlbihjb2RlKQotICAgIGkgPSAwCi0gICAgd2hpbGUgaSA8IG46CisgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGNvZGUpLCAyKToKICAgICAgICAgb3AgPSBjb2RlW2ldCi0gICAgICAgIG9mZnNldCA9IGkKLSAgICAgICAgaSA9IGkrMQotICAgICAgICBhcmcgPSBOb25lCiAgICAgICAgIGlmIG9wID49IEhBVkVfQVJHVU1FTlQ6Ci0gICAgICAgICAgICBhcmcgPSBjb2RlW2ldICsgY29kZVtpKzFdKjI1NiArIGV4dGVuZGVkX2FyZwotICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gMAotICAgICAgICAgICAgaSA9IGkrMgotICAgICAgICAgICAgaWYgb3AgPT0gRVhURU5ERURfQVJHOgotICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IGFyZyo2NTUzNgotICAgICAgICB5aWVsZCAob2Zmc2V0LCBvcCwgYXJnKQorICAgICAgICAgICAgYXJnID0gY29kZVtpKzFdIHwgZXh0ZW5kZWRfYXJnCisgICAgICAgICAgICBleHRlbmRlZF9hcmcgPSAoYXJnIDw8IDgpIGlmIG9wID09IEVYVEVOREVEX0FSRyBlbHNlIDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFyZyA9IE5vbmUKKyAgICAgICAgeWllbGQgKGksIG9wLCBhcmcpCiAKIGRlZiBmaW5kbGFiZWxzKGNvZGUpOgogICAgICIiIkRldGVjdCBhbGwgb2Zmc2V0cyBpbiBhIGJ5dGUgY29kZSB3aGljaCBhcmUganVtcCB0YXJnZXRzLgpAQCAtMzcwLDE0ICszNzgsMTQgQEAKICAgICBsYWJlbHMgPSBbXQogICAgIGZvciBvZmZzZXQsIG9wLCBhcmcgaW4gX3VucGFja19vcGFyZ3MoY29kZSk6CiAgICAgICAgIGlmIGFyZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxhYmVsID0gLTEKICAgICAgICAgICAgIGlmIG9wIGluIGhhc2pyZWw6Ci0gICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAzICsgYXJnCisgICAgICAgICAgICAgICAgbGFiZWwgPSBvZmZzZXQgKyAyICsgYXJnCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2phYnM6CiAgICAgICAgICAgICAgICAgbGFiZWwgPSBhcmcKLSAgICAgICAgICAgIGlmIGxhYmVsID49IDA6Ci0gICAgICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIGxhYmVsczoKLSAgICAgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsYWJlbCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGxhYmVsIG5vdCBpbiBsYWJlbHM6CisgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChsYWJlbCkKICAgICByZXR1cm4gbGFiZWxzCiAKIGRlZiBmaW5kbGluZXN0YXJ0cyhjb2RlKToKQEAgLTM4Niw4ICszOTQsOCBAQAogICAgIEdlbmVyYXRlIHBhaXJzIChvZmZzZXQsIGxpbmVubykgYXMgZGVzY3JpYmVkIGluIFB5dGhvbi9jb21waWxlLmMuCiAKICAgICAiIiIKLSAgICBieXRlX2luY3JlbWVudHMgPSBsaXN0KGNvZGUuY29fbG5vdGFiWzA6OjJdKQotICAgIGxpbmVfaW5jcmVtZW50cyA9IGxpc3QoY29kZS5jb19sbm90YWJbMTo6Ml0pCisgICAgYnl0ZV9pbmNyZW1lbnRzID0gY29kZS5jb19sbm90YWJbMDo6Ml0KKyAgICBsaW5lX2luY3JlbWVudHMgPSBjb2RlLmNvX2xub3RhYlsxOjoyXQogCiAgICAgbGFzdGxpbmVubyA9IE5vbmUKICAgICBsaW5lbm8gPSBjb2RlLmNvX2ZpcnN0bGluZW5vCkBAIC0zOTgsNiArNDA2LDkgQEAKICAgICAgICAgICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQogICAgICAgICAgICAgICAgIGxhc3RsaW5lbm8gPSBsaW5lbm8KICAgICAgICAgICAgIGFkZHIgKz0gYnl0ZV9pbmNyCisgICAgICAgIGlmIGxpbmVfaW5jciA+PSAweDgwOgorICAgICAgICAgICAgIyBsaW5lX2luY3JlbWVudHMgaXMgYW4gYXJyYXkgb2YgOC1iaXQgc2lnbmVkIGludGVnZXJzCisgICAgICAgICAgICBsaW5lX2luY3IgLT0gMHgxMDAKICAgICAgICAgbGluZW5vICs9IGxpbmVfaW5jcgogICAgIGlmIGxpbmVubyAhPSBsYXN0bGluZW5vOgogICAgICAgICB5aWVsZCAoYWRkciwgbGluZW5vKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQppbmRleCBiZWQxMzg0Li43OGFlNTc1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2FyY2hpdmVfdXRpbC5weQpAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihkaXJwYXRoLCBuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgICAgICB6aXAud3JpdGUocGF0aCwgcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJhZGRpbmcgJyVzJyIgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmluZm8oImFkZGluZyAnJXMnIiwgcGF0aCkKICAgICAgICAgICAgIHppcC5jbG9zZSgpCiAKICAgICByZXR1cm4gemlwX2ZpbGVuYW1lCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NtZC5weSBiL0xpYi9kaXN0dXRpbHMvY21kLnB5CmluZGV4IGM4OWQ1ZWYuLjkzOWY3OTUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY21kLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY21kLnB5CkBAIC0yMjEsNyArMjIxLDcgQEAKICAgICAgICAgc2VsZi5fZW5zdXJlX3N0cmluZ2xpa2Uob3B0aW9uLCAic3RyaW5nIiwgZGVmYXVsdCkKIAogICAgIGRlZiBlbnN1cmVfc3RyaW5nX2xpc3Qoc2VsZiwgb3B0aW9uKToKLSAgICAgICAgIiIiRW5zdXJlIHRoYXQgJ29wdGlvbicgaXMgYSBsaXN0IG9mIHN0cmluZ3MuICBJZiAnb3B0aW9uJyBpcworICAgICAgICByIiIiRW5zdXJlIHRoYXQgJ29wdGlvbicgaXMgYSBsaXN0IG9mIHN0cmluZ3MuICBJZiAnb3B0aW9uJyBpcwogICAgICAgICBjdXJyZW50bHkgYSBzdHJpbmcsIHdlIHNwbGl0IGl0IGVpdGhlciBvbiAvLFxzKi8gb3IgL1xzKy8sIHNvCiAgICAgICAgICJmb28gYmFyIGJheiIsICJmb28sYmFyLGJheiIsIGFuZCAiZm9vLCAgIGJhciBiYXoiIGFsbCBiZWNvbWUKICAgICAgICAgWyJmb28iLCAiYmFyIiwgImJheiJdLgpAQCAtMzI5LDggKzMyOSw3IEBACiAgICAgIyAtLSBFeHRlcm5hbCB3b3JsZCBtYW5pcHVsYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIGRlZiB3YXJuKHNlbGYsIG1zZyk6Ci0gICAgICAgIGxvZy53YXJuKCJ3YXJuaW5nOiAlczogJXNcbiIgJQotICAgICAgICAgICAgICAgIChzZWxmLmdldF9jb21tYW5kX25hbWUoKSwgbXNnKSkKKyAgICAgICAgbG9nLndhcm4oIndhcm5pbmc6ICVzOiAlc1xuIiwgc2VsZi5nZXRfY29tbWFuZF9uYW1lKCksIG1zZykKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIGZ1bmMsIGFyZ3MsIG1zZz1Ob25lLCBsZXZlbD0xKToKICAgICAgICAgdXRpbC5leGVjdXRlKGZ1bmMsIGFyZ3MsIG1zZywgZHJ5X3J1bj1zZWxmLmRyeV9ydW4pCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CmluZGV4IGYxYmZiMjQuLmU5Mjc0ZDkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9kdW1iLnB5CkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgIGluc3RhbGwuc2tpcF9idWlsZCA9IHNlbGYuc2tpcF9idWlsZAogICAgICAgICBpbnN0YWxsLndhcm5fZGlyID0gMAogCi0gICAgICAgIGxvZy5pbmZvKCJpbnN0YWxsaW5nIHRvICVzIiAlIHNlbGYuYmRpc3RfZGlyKQorICAgICAgICBsb2cuaW5mbygiaW5zdGFsbGluZyB0byAlcyIsIHNlbGYuYmRpc3RfZGlyKQogICAgICAgICBzZWxmLnJ1bl9jb21tYW5kKCdpbnN0YWxsJykKIAogICAgICAgICAjIEFuZCBtYWtlIGFuIGFyY2hpdmUgcmVsYXRpdmUgdG8gdGhlIHJvb3Qgb2YgdGhlCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weQppbmRleCBiM2NmZTljLi5hNGJkNWE1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkKQEAgLTE5OSw3ICsxOTksNyBAQAogICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzZWxmLnRhcmdldF92ZXJzaW9uCiAgICAgICAgICAgICBpZiBub3QgdGFyZ2V0X3ZlcnNpb246CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuc2tpcF9idWlsZCwgIlNob3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGlzIgotICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc3lzLnZlcnNpb25bMDozXQorICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJXMiICUgKHNlbGYucGxhdF9uYW1lLCB0YXJnZXRfdmVyc2lvbikKICAgICAgICAgICAgIGJ1aWxkID0gc2VsZi5nZXRfZmluYWxpemVkX2NvbW1hbmQoJ2J1aWxkJykKICAgICAgICAgICAgIGJ1aWxkLmJ1aWxkX2xpYiA9IG9zLnBhdGguam9pbihidWlsZC5idWlsZF9iYXNlLApAQCAtNjIzLDcgKzYyMyw3IEBACiAgICAgICAgIGNvc3QgPSBQeURpYWxvZyhkYiwgIkRpc2tDb3N0RGxnIiwgeCwgeSwgdywgaCwgbW9kYWwsIHRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgIk9LIiwgIk9LIiwgIk9LIiwgYml0bWFwPUZhbHNlKQogICAgICAgICBjb3N0LnRleHQoIlRpdGxlIiwgMTUsIDYsIDIwMCwgMTUsIDB4MzAwMDMsCi0gICAgICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9RGlzayBTcGFjZSBSZXF1aXJlbWVudHMiKQorICAgICAgICAgICAgICAgICByIntcRGxnRm9udEJvbGQ4fURpc2sgU3BhY2UgUmVxdWlyZW1lbnRzIikKICAgICAgICAgY29zdC50ZXh0KCJEZXNjcmlwdGlvbiIsIDIwLCAyMCwgMjgwLCAyMCwgMHgzMDAwMywKICAgICAgICAgICAgICAgICAgICJUaGUgZGlzayBzcGFjZSByZXF1aXJlZCBmb3IgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZmVhdHVyZXMuIikKICAgICAgICAgY29zdC50ZXh0KCJUZXh0IiwgMjAsIDUzLCAzMzAsIDYwLCAzLApAQCAtNjcwLDcgKzY3MCw3IEBACiAgICAgICAgIHByb2dyZXNzID0gUHlEaWFsb2coZGIsICJQcm9ncmVzc0RsZyIsIHgsIHksIHcsIGgsIG1vZGVsZXNzLCB0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsIiwgIkNhbmNlbCIsICJDYW5jZWwiLCBiaXRtYXA9RmFsc2UpCiAgICAgICAgIHByb2dyZXNzLnRleHQoIlRpdGxlIiwgMjAsIDE1LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgICAgICJ7XERsZ0ZvbnRCb2xkOH1bUHJvZ3Jlc3MxXSBbUHJvZHVjdE5hbWVdIikKKyAgICAgICAgICAgICAgICAgICAgIHIie1xEbGdGb250Qm9sZDh9W1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXSIpCiAgICAgICAgIHByb2dyZXNzLnRleHQoIlRleHQiLCAzNSwgNjUsIDMwMCwgMzAsIDMsCiAgICAgICAgICAgICAgICAgICAgICAgIlBsZWFzZSB3YWl0IHdoaWxlIHRoZSBJbnN0YWxsZXIgW1Byb2dyZXNzMl0gW1Byb2R1Y3ROYW1lXS4gIgogICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG1heSB0YWtlIHNldmVyYWwgbWludXRlcy4iKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQppbmRleCAwYzBlMmMxLi5kM2UxZDNhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQpAQCAtMTQxLDcgKzE0MSw3IEBACiAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHNlbGYudGFyZ2V0X3ZlcnNpb24KICAgICAgICAgICAgIGlmIG5vdCB0YXJnZXRfdmVyc2lvbjoKICAgICAgICAgICAgICAgICBhc3NlcnQgc2VsZi5za2lwX2J1aWxkLCAiU2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIHRoaXMiCi0gICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzeXMudmVyc2lvblswOjNdCisgICAgICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lcyIgJSAoc2VsZi5wbGF0X25hbWUsIHRhcmdldF92ZXJzaW9uKQogICAgICAgICAgICAgYnVpbGQgPSBzZWxmLmdldF9maW5hbGl6ZWRfY29tbWFuZCgnYnVpbGQnKQogICAgICAgICAgICAgYnVpbGQuYnVpbGRfbGliID0gb3MucGF0aC5qb2luKGJ1aWxkLmJ1aWxkX2Jhc2UsCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKaW5kZXggMzM3ZGQwYi4uYzZmNTJlNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQpAQCAtODEsNyArODEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXBsYXQtbmFtZSBvbmx5IHN1cHBvcnRlZCBvbiBXaW5kb3dzICh0cnkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2luZyAnLi9jb25maWd1cmUgLS1oZWxwJyBvbiB5b3VyIHBsYXRmb3JtKSIpCiAKLSAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVzIiAlIChzZWxmLnBsYXRfbmFtZSwgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVkLiVkIiAlIChzZWxmLnBsYXRfbmFtZSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKQogCiAgICAgICAgICMgTWFrZSBpdCBzbyBQeXRob24gMi54IGFuZCBQeXRob24gMi54IHdpdGggLS13aXRoLXB5ZGVidWcgZG9uJ3QKICAgICAgICAgIyBzaGFyZSB0aGUgc2FtZSBidWlsZCBkaXJlY3Rvcmllcy4gRG9pbmcgc28gY29uZnVzZXMgdGhlIGJ1aWxkCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVtcCcgKyBwbGF0X3NwZWNpZmllcikKICAgICAgICAgaWYgc2VsZi5idWlsZF9zY3JpcHRzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmJ1aWxkX3NjcmlwdHMgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF9iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLScgKyBzeXMudmVyc2lvblswOjNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLSVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogCiAgICAgICAgIGlmIHNlbGYuZXhlY3V0YWJsZSBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5leGVjdXRhYmxlID0gb3MucGF0aC5ub3JtcGF0aChzeXMuZXhlY3V0YWJsZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CmluZGV4IDdjMjc4ZWYuLjc0ZGU3ODIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQpAQCAtMzY0LDkgKzM2NCw5IEBACiAKICAgICAgICAgICAgIGV4dF9uYW1lLCBidWlsZF9pbmZvID0gZXh0CiAKLSAgICAgICAgICAgIGxvZy53YXJuKCgib2xkLXN0eWxlIChleHRfbmFtZSwgYnVpbGRfaW5mbykgdHVwbGUgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICJleHRfbW9kdWxlcyBmb3IgZXh0ZW5zaW9uICclcyciCi0gICAgICAgICAgICAgICAgICAgICAgIi0tIHBsZWFzZSBjb252ZXJ0IHRvIEV4dGVuc2lvbiBpbnN0YW5jZSIgJSBleHRfbmFtZSkpCisgICAgICAgICAgICBsb2cud2Fybigib2xkLXN0eWxlIChleHRfbmFtZSwgYnVpbGRfaW5mbykgdHVwbGUgZm91bmQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgImV4dF9tb2R1bGVzIGZvciBleHRlbnNpb24gJyVzJyIKKyAgICAgICAgICAgICAgICAgICAgICItLSBwbGVhc2UgY29udmVydCB0byBFeHRlbnNpb24gaW5zdGFuY2UiLCBleHRfbmFtZSkKIAogICAgICAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKGV4dF9uYW1lLCBzdHIpIGFuZAogICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25fbmFtZV9yZS5tYXRjaChleHRfbmFtZSkpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQppbmRleCA5MGE4MzgwLi5jY2M3MGU2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfc2NyaXB0cy5weQpAQCAtNTEsNyArNTEsNyBAQAogCiAKICAgICBkZWYgY29weV9zY3JpcHRzKHNlbGYpOgotICAgICAgICAiIiJDb3B5IGVhY2ggc2NyaXB0IGxpc3RlZCBpbiAnc2VsZi5zY3JpcHRzJzsgaWYgaXQncyBtYXJrZWQgYXMgYQorICAgICAgICByIiIiQ29weSBlYWNoIHNjcmlwdCBsaXN0ZWQgaW4gJ3NlbGYuc2NyaXB0cyc7IGlmIGl0J3MgbWFya2VkIGFzIGEKICAgICAgICAgUHl0aG9uIHNjcmlwdCBpbiB0aGUgVW5peCB3YXkgKGZpcnN0IGxpbmUgbWF0Y2hlcyAnZmlyc3RfbGluZV9yZScsCiAgICAgICAgIGllLiBzdGFydHMgd2l0aCAiXCMhIiBhbmQgY29udGFpbnMgInB5dGhvbiIpLCB0aGVuIGFkanVzdCB0aGUgZmlyc3QKICAgICAgICAgbGluZSB0byByZWZlciB0byB0aGUgY3VycmVudCBQeXRob24gaW50ZXJwcmV0ZXIgYXMgd2UgY29weS4KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5CmluZGV4IDg0N2U4NTguLjRhZTE1M2QgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weQpAQCAtOSw3ICs5LDcgQEAKIHRoaXMgaGVhZGVyIGZpbGUgbGl2ZXMiLgogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCByZQoraW1wb3J0IG9zLCByZQogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBDb21tYW5kCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgpAQCAtMzM3LDcgKzMzNyw3IEBACiAgICAgSWYgaGVhZCBpcyBub3QgTm9uZSwgd2lsbCBiZSBkdW1wZWQgYmVmb3JlIHRoZSBmaWxlIGNvbnRlbnQuCiAgICAgIiIiCiAgICAgaWYgaGVhZCBpcyBOb25lOgotICAgICAgICBsb2cuaW5mbygnJXMnICUgZmlsZW5hbWUpCisgICAgICAgIGxvZy5pbmZvKCclcycsIGZpbGVuYW1lKQogICAgIGVsc2U6CiAgICAgICAgIGxvZy5pbmZvKGhlYWQpCiAgICAgZmlsZSA9IG9wZW4oZmlsZW5hbWUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CmluZGV4IDY3ZGIwMDcuLjAyNThkM2RlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQpAQCAtMTc1LDYgKzE3NSw3IEBACiAgICAgICAgIHNlbGYuY29tcGlsZSA9IE5vbmUKICAgICAgICAgc2VsZi5vcHRpbWl6ZSA9IE5vbmUKIAorICAgICAgICAjIERlcHJlY2F0ZWQKICAgICAgICAgIyBUaGVzZSB0d28gYXJlIGZvciBwdXR0aW5nIG5vbi1wYWNrYWdpemVkIGRpc3RyaWJ1dGlvbnMgaW50byB0aGVpcgogICAgICAgICAjIG93biBkaXJlY3RvcnkgYW5kIGNyZWF0aW5nIGEgLnB0aCBmaWxlIGlmIGl0IG1ha2VzIHNlbnNlLgogICAgICAgICAjICdleHRyYV9wYXRoJyBjb21lcyBmcm9tIHRoZSBzZXR1cCBmaWxlOyAnaW5zdGFsbF9wYXRoX2ZpbGUnIGNhbgpAQCAtMjkwLDggKzI5MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RfdmVyc2lvbic6IHNlbGYuZGlzdHJpYnV0aW9uLmdldF92ZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RfZnVsbG5hbWUnOiBzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfZnVsbG5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbic6IHB5X3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fc2hvcnQnOiBweV92ZXJzaW9uWzA6M10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fbm9kb3QnOiBweV92ZXJzaW9uWzBdICsgcHlfdmVyc2lvblsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9zaG9ydCc6ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHlfdmVyc2lvbl9ub2RvdCc6ICclZCVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXNfcHJlZml4JzogcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmVmaXgnOiBwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c19leGVjX3ByZWZpeCc6IGV4ZWNfcHJlZml4LApAQCAtMzQ0LDYgKzM0NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cycsICdkYXRhJywgJ2hlYWRlcnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJiYXNlJywgJ3VzZXJzaXRlJykKIAorICAgICAgICAjIERlcHJlY2F0ZWQKICAgICAgICAgIyBXZWxsLCB3ZSdyZSBub3QgYWN0dWFsbHkgZnVsbHkgY29tcGxldGVseSBmaW5hbGl6ZWQgeWV0OiB3ZSBzdGlsbAogICAgICAgICAjIGhhdmUgdG8gZGVhbCB3aXRoICdleHRyYV9wYXRoJywgd2hpY2ggaXMgdGhlIGhhY2sgZm9yIGFsbG93aW5nCiAgICAgICAgICMgbm9uLXBhY2thZ2l6ZWQgbW9kdWxlIGRpc3RyaWJ1dGlvbnMgKGhlbGxvLCBOdW1lcmljYWwgUHl0aG9uISkgdG8KQEAgLTM4NSw3ICszODcsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBvcHRfbmFtZSA9IG9wdF9uYW1lLnRyYW5zbGF0ZShsb25nb3B0X3hsYXRlKQogICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoc2VsZiwgb3B0X25hbWUpCi0gICAgICAgICAgICBsb2cuZGVidWcoIiAgJXM6ICVzIiAlIChvcHRfbmFtZSwgdmFsKSkKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiICAlczogJXMiLCBvcHRfbmFtZSwgdmFsKQogCiAgICAgZGVmIGZpbmFsaXplX3VuaXgoc2VsZik6CiAgICAgICAgICIiIkZpbmFsaXplcyBvcHRpb25zIGZvciBwb3NpeCBwbGF0Zm9ybXMuIiIiCkBAIC00OTAsNiArNDkyLDEwIEBACiAgICAgICAgICAgICBzZWxmLmV4dHJhX3BhdGggPSBzZWxmLmRpc3RyaWJ1dGlvbi5leHRyYV9wYXRoCiAKICAgICAgICAgaWYgc2VsZi5leHRyYV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nLndhcm4oCisgICAgICAgICAgICAgICAgIkRpc3RyaWJ1dGlvbiBvcHRpb24gZXh0cmFfcGF0aCBpcyBkZXByZWNhdGVkLiAiCisgICAgICAgICAgICAgICAgIlNlZSBpc3N1ZTI3OTE5IGZvciBkZXRhaWxzLiIKKyAgICAgICAgICAgICkKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5leHRyYV9wYXRoLCBzdHIpOgogICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFfcGF0aCA9IHNlbGYuZXh0cmFfcGF0aC5zcGxpdCgnLCcpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKaW5kZXggYzJhN2Q2NC4uMGRkYzczNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGxfZWdnX2luZm8ucHkKQEAgLTIxLDEwICsyMSwxMCBAQAogCiAgICAgZGVmIGZpbmFsaXplX29wdGlvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuc2V0X3VuZGVmaW5lZF9vcHRpb25zKCdpbnN0YWxsX2xpYicsKCdpbnN0YWxsX2RpcicsJ2luc3RhbGxfZGlyJykpCi0gICAgICAgIGJhc2VuYW1lID0gIiVzLSVzLXB5JXMuZWdnLWluZm8iICUgKAorICAgICAgICBiYXNlbmFtZSA9ICIlcy0lcy1weSVkLiVkLmVnZy1pbmZvIiAlICgKICAgICAgICAgICAgIHRvX2ZpbGVuYW1lKHNhZmVfbmFtZShzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfbmFtZSgpKSksCiAgICAgICAgICAgICB0b19maWxlbmFtZShzYWZlX3ZlcnNpb24oc2VsZi5kaXN0cmlidXRpb24uZ2V0X3ZlcnNpb24oKSkpLAotICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdCisgICAgICAgICAgICAqc3lzLnZlcnNpb25faW5mb1s6Ml0KICAgICAgICAgKQogICAgICAgICBzZWxmLnRhcmdldCA9IG9zLnBhdGguam9pbihzZWxmLmluc3RhbGxfZGlyLCBiYXNlbmFtZSkKICAgICAgICAgc2VsZi5vdXRwdXRzID0gW3NlbGYudGFyZ2V0XQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5CmluZGV4IDg2MzQzYzguLjBmYWM5NGUgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkKQEAgLTUsNyArNSw3IEBACiAKICMgY3JlYXRlZCAyMDAyLzEwLzIxLCBSaWNoYXJkIEpvbmVzCiAKLWltcG9ydCBvcywgc3RyaW5nLCBnZXRwYXNzCitpbXBvcnQgZ2V0cGFzcwogaW1wb3J0IGlvCiBpbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdAogZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICAnJycKICAgICAgICAgIyBzZW5kIHRoZSBpbmZvIHRvIHRoZSBzZXJ2ZXIgYW5kIHJlcG9ydCB0aGUgcmVzdWx0CiAgICAgICAgIChjb2RlLCByZXN1bHQpID0gc2VsZi5wb3N0X3RvX3NlcnZlcihzZWxmLmJ1aWxkX3Bvc3RfZGF0YSgndmVyaWZ5JykpCi0gICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnICUgKGNvZGUsIHJlc3VsdCkpCisgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAKICAgICBkZWYgc2VuZF9tZXRhZGF0YShzZWxmKToKICAgICAgICAgJycnIFNlbmQgdGhlIG1ldGFkYXRhIHRvIHRoZSBwYWNrYWdlIGluZGV4IHNlcnZlci4KQEAgLTIwNSw3ICsyMDUsNyBAQAogICAgICAgICAgICAgICAgIGRhdGFbJ2VtYWlsJ10gPSBpbnB1dCgnICAgRU1haWw6ICcpCiAgICAgICAgICAgICBjb2RlLCByZXN1bHQgPSBzZWxmLnBvc3RfdG9fc2VydmVyKGRhdGEpCiAgICAgICAgICAgICBpZiBjb2RlICE9IDIwMDoKLSAgICAgICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGxvZy5pbmZvKCdZb3Ugd2lsbCByZWNlaXZlIGFuIGVtYWlsIHNob3J0bHkuJykKICAgICAgICAgICAgICAgICBsb2cuaW5mbygoJ0ZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIGl0IHRvICcKQEAgLTIxNiw3ICsyMTYsNyBAQAogICAgICAgICAgICAgd2hpbGUgbm90IGRhdGFbJ2VtYWlsJ106CiAgICAgICAgICAgICAgICAgZGF0YVsnZW1haWwnXSA9IGlucHV0KCdZb3VyIGVtYWlsIGFkZHJlc3M6ICcpCiAgICAgICAgICAgICBjb2RlLCByZXN1bHQgPSBzZWxmLnBvc3RfdG9fc2VydmVyKGRhdGEpCi0gICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycsIGNvZGUsIHJlc3VsdCkKIAogICAgIGRlZiBidWlsZF9wb3N0X2RhdGEoc2VsZiwgYWN0aW9uKToKICAgICAgICAgIyBmaWd1cmUgdGhlIGRhdGEgdG8gc2VuZCAtIHRoZSBtZXRhZGF0YSBwbHVzIHNvbWUgYWRkaXRpb25hbApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5CmluZGV4IDdlYTNkNWYuLjRmZDFkNDcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkKQEAgLTMsNyArMyw2IEBACiBJbXBsZW1lbnRzIHRoZSBEaXN0dXRpbHMgJ3NkaXN0JyBjb21tYW5kIChjcmVhdGUgYSBzb3VyY2UgZGlzdHJpYnV0aW9uKS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBmcm9tIHR5cGVzIGltcG9ydCAqCiBmcm9tIGdsb2IgaW1wb3J0IGdsb2IKQEAgLTkyLDkgKzkxLDYgQEAKICAgICBuZWdhdGl2ZV9vcHQgPSB7J25vLWRlZmF1bHRzJzogJ3VzZS1kZWZhdWx0cycsCiAgICAgICAgICAgICAgICAgICAgICduby1wcnVuZSc6ICdwcnVuZScgfQogCi0gICAgZGVmYXVsdF9mb3JtYXQgPSB7J3Bvc2l4JzogJ2d6dGFyJywKLSAgICAgICAgICAgICAgICAgICAgICAnbnQnOiAnemlwJyB9Ci0KICAgICBzdWJfY29tbWFuZHMgPSBbKCdjaGVjaycsIGNoZWNraW5nX21ldGFkYXRhKV0KIAogICAgIGRlZiBpbml0aWFsaXplX29wdGlvbnMoc2VsZik6CkBAIC0xMTEsNyArMTA3LDcgQEAKICAgICAgICAgc2VsZi5tYW5pZmVzdF9vbmx5ID0gMAogICAgICAgICBzZWxmLmZvcmNlX21hbmlmZXN0ID0gMAogCi0gICAgICAgIHNlbGYuZm9ybWF0cyA9IE5vbmUKKyAgICAgICAgc2VsZi5mb3JtYXRzID0gWydnenRhciddCiAgICAgICAgIHNlbGYua2VlcF90ZW1wID0gMAogICAgICAgICBzZWxmLmRpc3RfZGlyID0gTm9uZQogCkBAIC0xMjcsMTMgKzEyMyw2IEBACiAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlID0gIk1BTklGRVNULmluIgogCiAgICAgICAgIHNlbGYuZW5zdXJlX3N0cmluZ19saXN0KCdmb3JtYXRzJykKLSAgICAgICAgaWYgc2VsZi5mb3JtYXRzIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5mb3JtYXRzID0gW3NlbGYuZGVmYXVsdF9mb3JtYXRbb3MubmFtZV1dCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAiZG9uJ3Qga25vdyBob3cgdG8gY3JlYXRlIHNvdXJjZSBkaXN0cmlidXRpb25zICIKLSAgICAgICAgICAgICAgICAgICAgICAib24gcGxhdGZvcm0gJXMiICUgb3MubmFtZSkKIAogICAgICAgICBiYWRfZm9ybWF0ID0gYXJjaGl2ZV91dGlsLmNoZWNrX2FyY2hpdmVfZm9ybWF0cyhzZWxmLmZvcm1hdHMpCiAgICAgICAgIGlmIGJhZF9mb3JtYXQ6CkBAIC00MjMsNyArNDEyLDcgQEAKICAgICAgICAgICAgIGxvZy5pbmZvKG1zZykKICAgICAgICAgZm9yIGZpbGUgaW4gZmlsZXM6CiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoZmlsZSk6Ci0gICAgICAgICAgICAgICAgbG9nLndhcm4oIiclcycgbm90IGEgcmVndWxhciBmaWxlIC0tIHNraXBwaW5nIiAlIGZpbGUpCisgICAgICAgICAgICAgICAgbG9nLndhcm4oIiclcycgbm90IGEgcmVndWxhciBmaWxlIC0tIHNraXBwaW5nIiwgZmlsZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgZmlsZSkKICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShmaWxlLCBkZXN0LCBsaW5rPWxpbmspCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvcmUucHkgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKaW5kZXggZjA1YjM0Yi4uZDYwM2Q0YSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29yZS5weQpAQCAtMjA0LDE2ICsyMDQsMTUgQEAKICAgICBnbG9iYWwgX3NldHVwX3N0b3BfYWZ0ZXIsIF9zZXR1cF9kaXN0cmlidXRpb24KICAgICBfc2V0dXBfc3RvcF9hZnRlciA9IHN0b3BfYWZ0ZXIKIAotICAgIHNhdmVfYXJndiA9IHN5cy5hcmd2CisgICAgc2F2ZV9hcmd2ID0gc3lzLmFyZ3YuY29weSgpCiAgICAgZyA9IHsnX19maWxlX18nOiBzY3JpcHRfbmFtZX0KLSAgICBsID0ge30KICAgICB0cnk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5hcmd2WzBdID0gc2NyaXB0X25hbWUKICAgICAgICAgICAgIGlmIHNjcmlwdF9hcmdzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN5cy5hcmd2WzE6XSA9IHNjcmlwdF9hcmdzCiAgICAgICAgICAgICB3aXRoIG9wZW4oc2NyaXB0X25hbWUsICdyYicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwgZywgbCkKKyAgICAgICAgICAgICAgICBleGVjKGYucmVhZCgpLCBnKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmFyZ3YgPSBzYXZlX2FyZ3YKICAgICAgICAgICAgIF9zZXR1cF9zdG9wX2FmdGVyID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQppbmRleCBjODc5NjQ2Li4xYzM2OTkwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQpAQCAtMzY4LDcgKzM2OCw3IEBACiAgICAgICAgIHJldHVybiAoQ09ORklHX0hfVU5DRVJUQUlOLAogICAgICAgICAgICAgICAgICJjb3VsZG4ndCByZWFkICclcyc6ICVzIiAlIChmbiwgZXhjLnN0cmVycm9yKSkKIAotUkVfVkVSU0lPTiA9IHJlLmNvbXBpbGUoYicoXGQrXC5cZCsoXC5cZCspKiknKQorUkVfVkVSU0lPTiA9IHJlLmNvbXBpbGUoYnInKFxkK1wuXGQrKFwuXGQrKSopJykKIAogZGVmIF9maW5kX2V4ZV92ZXJzaW9uKGNtZCk6CiAgICAgIiIiRmluZCB0aGUgdmVyc2lvbiBvZiBhbiBleGVjdXRhYmxlIGJ5IHJ1bm5pbmcgYGNtZGAgaW4gdGhlIHNoZWxsLgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5IGIvTGliL2Rpc3R1dGlscy9kaXN0LnB5CmluZGV4IGZmYjMzZmYuLjYyYTI0NTEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2Rpc3QucHkKQEAgLTEwMTgsOCArMTAxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm1haW50YWluZXIiLCAibWFpbnRhaW5lcl9lbWFpbCIsICJ1cmwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJsaWNlbnNlIiwgImRlc2NyaXB0aW9uIiwgImxvbmdfZGVzY3JpcHRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyIsICJwbGF0Zm9ybXMiLCAiZnVsbG5hbWUiLCAiY29udGFjdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhY3RfZW1haWwiLCAibGljZW5zZSIsICJjbGFzc2lmaWVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImRvd25sb2FkX3VybCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhY3RfZW1haWwiLCAiY2xhc3NpZmllcnMiLCAiZG93bmxvYWRfdXJsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAjIFBFUCAzMTQKICAgICAgICAgICAgICAgICAgICAgICAgICAicHJvdmlkZXMiLCAicmVxdWlyZXMiLCAib2Jzb2xldGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2V4dGVuc2lvbi5weSBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CmluZGV4IDdlZmJiNzQuLmM1MDdkYTMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5CkBAIC00LDcgKzQsNiBAQAogbW9kdWxlcyBpbiBzZXR1cCBzY3JpcHRzLiIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogCiAjIFRoaXMgY2xhc3MgaXMgcmVhbGx5IG9ubHkgdXNlZCBieSB0aGUgImJ1aWxkX2V4dCIgY29tbWFuZCwgc28gaXQgbWlnaHQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkgYi9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5CmluZGV4IDY1MjJlNjkuLmM5MmQ1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weQpAQCAtMzAyLDIxICszMDIsMjYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuCiAKKyAgICAjIGRpdGNoIHN0YXJ0IGFuZCBlbmQgY2hhcmFjdGVycworICAgIHN0YXJ0LCBfLCBlbmQgPSBnbG9iX3RvX3JlKCdfJykucGFydGl0aW9uKCdfJykKKwogICAgIGlmIHBhdHRlcm46CiAgICAgICAgIHBhdHRlcm5fcmUgPSBnbG9iX3RvX3JlKHBhdHRlcm4pCisgICAgICAgIGFzc2VydCBwYXR0ZXJuX3JlLnN0YXJ0c3dpdGgoc3RhcnQpIGFuZCBwYXR0ZXJuX3JlLmVuZHN3aXRoKGVuZCkKICAgICBlbHNlOgogICAgICAgICBwYXR0ZXJuX3JlID0gJycKIAogICAgIGlmIHByZWZpeCBpcyBub3QgTm9uZToKLSAgICAgICAgIyBkaXRjaCBlbmQgb2YgcGF0dGVybiBjaGFyYWN0ZXIKLSAgICAgICAgZW1wdHlfcGF0dGVybiA9IGdsb2JfdG9fcmUoJycpCi0gICAgICAgIHByZWZpeF9yZSA9IGdsb2JfdG9fcmUocHJlZml4KVs6LWxlbihlbXB0eV9wYXR0ZXJuKV0KKyAgICAgICAgcHJlZml4X3JlID0gZ2xvYl90b19yZShwcmVmaXgpCisgICAgICAgIGFzc2VydCBwcmVmaXhfcmUuc3RhcnRzd2l0aChzdGFydCkgYW5kIHByZWZpeF9yZS5lbmRzd2l0aChlbmQpCisgICAgICAgIHByZWZpeF9yZSA9IHByZWZpeF9yZVtsZW4oc3RhcnQpOiBsZW4ocHJlZml4X3JlKSAtIGxlbihlbmQpXQogICAgICAgICBzZXAgPSBvcy5zZXAKICAgICAgICAgaWYgb3Muc2VwID09ICdcXCc6CiAgICAgICAgICAgICBzZXAgPSByJ1xcJwotICAgICAgICBwYXR0ZXJuX3JlID0gIl4iICsgc2VwLmpvaW4oKHByZWZpeF9yZSwgIi4qIiArIHBhdHRlcm5fcmUpKQorICAgICAgICBwYXR0ZXJuX3JlID0gcGF0dGVybl9yZVtsZW4oc3RhcnQpOiBsZW4ocGF0dGVybl9yZSkgLSBsZW4oZW5kKV0KKyAgICAgICAgcGF0dGVybl9yZSA9IHInJXNcQSVzJXMuKiVzJXMnICUgKHN0YXJ0LCBwcmVmaXhfcmUsIHNlcCwgcGF0dGVybl9yZSwgZW5kKQogICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gcHJlZml4IC0tIHJlc3BlY3QgYW5jaG9yIGZsYWcKICAgICAgICAgaWYgYW5jaG9yOgotICAgICAgICAgICAgcGF0dGVybl9yZSA9ICJeIiArIHBhdHRlcm5fcmUKKyAgICAgICAgICAgIHBhdHRlcm5fcmUgPSByJyVzXEElcycgJSAoc3RhcnQsIHBhdHRlcm5fcmVbbGVuKHN0YXJ0KTpdKQogCiAgICAgcmV0dXJuIHJlLmNvbXBpbGUocGF0dGVybl9yZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQppbmRleCAwYjFmZDE5Li4yMTE5MTI3IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CkBAIC03MTYsNyArNzE2LDcgQEAKICAgICAgICAgICAgICAgICByIiIiVkNcZHsyfVwuQ1JUKCJ8JykuKj8oLz58PC9hc3NlbWJseUlkZW50aXR5PikiIiIsCiAgICAgICAgICAgICAgICAgcmUuRE9UQUxMKQogICAgICAgICAgICAgbWFuaWZlc3RfYnVmID0gcmUuc3ViKHBhdHRlcm4sICIiLCBtYW5pZmVzdF9idWYpCi0gICAgICAgICAgICBwYXR0ZXJuID0gIjxkZXBlbmRlbnRBc3NlbWJseT5ccyo8L2RlcGVuZGVudEFzc2VtYmx5PiIKKyAgICAgICAgICAgIHBhdHRlcm4gPSByIjxkZXBlbmRlbnRBc3NlbWJseT5ccyo8L2RlcGVuZGVudEFzc2VtYmx5PiIKICAgICAgICAgICAgIG1hbmlmZXN0X2J1ZiA9IHJlLnN1YihwYXR0ZXJuLCAiIiwgbWFuaWZlc3RfYnVmKQogICAgICAgICAgICAgIyBOb3cgc2VlIGlmIGFueSBvdGhlciBhc3NlbWJsaWVzIGFyZSByZWZlcmVuY2VkIC0gaWYgbm90LCB3ZQogICAgICAgICAgICAgIyBkb24ndCB3YW50IGEgbWFuaWZlc3QgZW1iZWRkZWQuCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CmluZGV4IDU3MzcyNGQuLjhiZjFhNzAgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CkBAIC03MCw3ICs3MCw3IEBACiAgICAgbGVhdmluZyBvZmYgdGhlIHBhdGNobGV2ZWwuICBTYW1wbGUgcmV0dXJuIHZhbHVlcyBjb3VsZCBiZSAnMS41JwogICAgIG9yICcyLjInLgogICAgICIiIgotICAgIHJldHVybiBzeXMudmVyc2lvbls6M10KKyAgICByZXR1cm4gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAKIAogZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgpAQCAtMjQyLDYgKzI0Miw4IEBACiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIHByb2plY3RfYmFzZSwgIk1ha2VmaWxlIikKICAgICBsaWJfZGlyID0gZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MSkKICAgICBjb25maWdfZmlsZSA9ICdjb25maWcte317fScuZm9ybWF0KGdldF9weXRob25fdmVyc2lvbigpLCBidWlsZF9mbGFncykKKyAgICBpZiBoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnKToKKyAgICAgICAgY29uZmlnX2ZpbGUgKz0gJy0lcycgJSBzeXMuaW1wbGVtZW50YXRpb24uX211bHRpYXJjaAogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGliX2RpciwgY29uZmlnX2ZpbGUsICdNYWtlZmlsZScpCiAKIApAQCAtMjc2LDcgKzI3OCw3IEBACiAKICMgUmVnZXhlcyBuZWVkZWQgZm9yIHBhcnNpbmcgTWFrZWZpbGUgKGFuZCBzaW1pbGFyIHN5bnRheGVzLAogIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCi1fdmFyaWFibGVfcnggPSByZS5jb21waWxlKCIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKK192YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUociIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKIF9maW5kdmFyMV9yeCA9IHJlLmNvbXBpbGUociJcJFwoKFtBLVphLXpdW0EtWmEtejAtOV9dKilcKSIpCiBfZmluZHZhcjJfcnggPSByZS5jb21waWxlKHIiXCR7KFtBLVphLXpdW0EtWmEtejAtOV9dKil9IikKIApAQCAtNDE1LDM4ICs0MTcsMTggQEAKIAogZGVmIF9pbml0X3Bvc2l4KCk6CiAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgotICAgIGcgPSB7fQotICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIE1ha2VmaWxlOgotICAgIHRyeToKLSAgICAgICAgZmlsZW5hbWUgPSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQotICAgICAgICBwYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgZykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6Ci0gICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCi0gICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKLSAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKLQotICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKLQotICAgICMgbG9hZCB0aGUgaW5zdGFsbGVkIHB5Y29uZmlnLmg6Ci0gICAgdHJ5OgotICAgICAgICBmaWxlbmFtZSA9IGdldF9jb25maWdfaF9maWxlbmFtZSgpCi0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZmlsZToKLSAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19oKGZpbGUsIGcpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgotICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQotICAgICAgICBpZiBoYXNhdHRyKG1zZywgInN0cmVycm9yIik6Ci0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0KLSAgICAgICAgcmFpc2UgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihteV9tc2cpCi0KLSAgICAjIE9uIEFJWCwgdGhlcmUgYXJlIHdyb25nIHBhdGhzIHRvIHRoZSBsaW5rZXIgc2NyaXB0cyBpbiB0aGUgTWFrZWZpbGUKLSAgICAjIC0tIHRoZXNlIHBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgUHl0aG9uIHNvdXJjZSwgYnV0IHdoZW4gaW5zdGFsbGVkCi0gICAgIyB0aGUgc2NyaXB0cyBhcmUgaW4gYW5vdGhlciBkaXJlY3RvcnkuCi0gICAgaWYgcHl0aG9uX2J1aWxkOgotICAgICAgICBnWydMRFNIQVJFRCddID0gZ1snQkxEU0hBUkVEJ10KLQorICAgICMgX3N5c2NvbmZpZ2RhdGEgaXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUsIHNlZSB0aGUgc3lzY29uZmlnIG1vZHVsZQorICAgIG5hbWUgPSBvcy5lbnZpcm9uLmdldCgnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnLAorICAgICAgICAnX3N5c2NvbmZpZ2RhdGFfe2FiaX1fe3BsYXRmb3JtfV97bXVsdGlhcmNofScuZm9ybWF0KAorICAgICAgICBhYmk9c3lzLmFiaWZsYWdzLAorICAgICAgICBwbGF0Zm9ybT1zeXMucGxhdGZvcm0sCisgICAgICAgIG11bHRpYXJjaD1nZXRhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ19tdWx0aWFyY2gnLCAnJyksCisgICAgKSkKKyAgICBfdGVtcCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWydidWlsZF90aW1lX3ZhcnMnXSwgMCkKKyAgICBidWlsZF90aW1lX3ZhcnMgPSBfdGVtcC5idWlsZF90aW1lX3ZhcnMKICAgICBnbG9iYWwgX2NvbmZpZ192YXJzCi0gICAgX2NvbmZpZ192YXJzID0gZworICAgIF9jb25maWdfdmFycyA9IHt9CisgICAgX2NvbmZpZ192YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCiAKIAogZGVmIF9pbml0X250KCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQppbmRleCBlOTc5NWVlLi5kN2M5ZmViIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKQEAgLTksOCArOSw2IEBACiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJkaXN0X3JwbSBpbXBvcnQgYmRpc3RfcnBtCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQotZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHNwYXduCi1mcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgogCiBTRVRVUF9QWSA9ICIiIlwKIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkKaW5kZXggMzM5MWYzNi4uYjAyMGE1YiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weQpAQCAtMjcsNyArMjcsNyBAQAogICAgICAgICAjIGJ1aWxkX3BsYXRsaWIgaXMgJ2J1aWxkL2xpYi5wbGF0Zm9ybS14LnhbLXB5ZGVidWddJwogICAgICAgICAjIGV4YW1wbGVzOgogICAgICAgICAjICAgYnVpbGQvbGliLm1hY29zeC0xMC4zLWkzODYtMi43Ci0gICAgICAgIHBsYXRfc3BlYyA9ICcuJXMtJXMnICUgKGNtZC5wbGF0X25hbWUsIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgIHBsYXRfc3BlYyA9ICcuJXMtJWQuJWQnICUgKGNtZC5wbGF0X25hbWUsICpzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgaWYgaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50Jyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY21kLmJ1aWxkX3BsYXRsaWIuZW5kc3dpdGgoJy1weWRlYnVnJykpCiAgICAgICAgICAgICBwbGF0X3NwZWMgKz0gJy1weWRlYnVnJwpAQCAtNDIsNyArNDIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5idWlsZF90ZW1wLCB3YW50ZWQpCiAKICAgICAgICAgIyBidWlsZF9zY3JpcHRzIGlzIGJ1aWxkL3NjcmlwdHMteC54Ci0gICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbihjbWQuYnVpbGRfYmFzZSwgJ3NjcmlwdHMtJyArICBzeXMudmVyc2lvblswOjNdKQorICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oY21kLmJ1aWxkX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cy0lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQuYnVpbGRfc2NyaXB0cywgd2FudGVkKQogCiAgICAgICAgICMgZXhlY3V0YWJsZSBpcyBvcy5wYXRoLm5vcm1wYXRoKHN5cy5leGVjdXRhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKaW5kZXggZjNkZjU2NC4uNmJlMGNhMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CkBAIC0xNjYsNyArMTY2LDYgQEAKICAgICAgICAgY21kID0gc2VsZi5idWlsZF9leHQoZGlzdCkKICAgICAgICAgY21kLmZpbmFsaXplX29wdGlvbnMoKQogCi0gICAgICAgIGZyb20gZGlzdHV0aWxzIGltcG9ydCBzeXNjb25maWcKICAgICAgICAgcHlfaW5jbHVkZSA9IHN5c2NvbmZpZy5nZXRfcHl0aG9uX2luYygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHlfaW5jbHVkZSwgY21kLmluY2x1ZGVfZGlycykKIApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CmluZGV4IDE4MjgzZGMuLjA3MTJlOTIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKQEAgLTE2OCw3ICsxNjgsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBvbGRfZG9udF93cml0ZV9ieXRlY29kZQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywgc2VsZi5sb2dzWzBdWzFdKQorICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dzWzBdWzFdICUgc2VsZi5sb2dzWzBdWzJdKQogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkKaW5kZXggYjY0ZjMwMC4uYzYwNWFmZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5jbGVhbi4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgZ2V0cGFzcwogCiBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmNsZWFuIGltcG9ydCBjbGVhbgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CmluZGV4IGEzODQ0OTcuLjc3ZWY3ODggMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMucHlwaXJjLnB5cGlyYy4iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKIAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgUHlQSVJDQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgRGlzdHJpYnV0aW9uCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29yZS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CmluZGV4IDY1NDIyN2MuLjI3Y2U3MzIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5CkBAIC0yOSw2ICsyOSwyMSBAQAogc2V0dXAoKQogIiIiCiAKK3NldHVwX2RvZXNfbm90aGluZyA9ICIiIlwKK2Zyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwCitzZXR1cCgpCisiIiIKKworCitzZXR1cF9kZWZpbmVzX3N1YmNsYXNzID0gIiIiXAorZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKK2Zyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbCBpbXBvcnQgaW5zdGFsbCBhcyBfaW5zdGFsbAorCitjbGFzcyBpbnN0YWxsKF9pbnN0YWxsKToKKyAgICBzdWJfY29tbWFuZHMgPSBfaW5zdGFsbC5zdWJfY29tbWFuZHMgKyBbJ2NtZCddCisKK3NldHVwKGNtZGNsYXNzPXsnaW5zdGFsbCc6IGluc3RhbGx9KQorIiIiCiAKIGNsYXNzIENvcmVUZXN0Q2FzZShzdXBwb3J0LkVudmlyb25HdWFyZCwgdW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02Nyw2ICs4MiwyMSBAQAogICAgICAgICBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCiAgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX3VzaW5nX19fZmlsZV9fKSkKIAorICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF9wcmVzZXJ2ZXNfc3lzX2FyZ3Yoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHJ1bl9zZXR1cCBkb2VzIG5vdCBjbG9iYmVyIHN5cy5hcmd2CisgICAgICAgIGFyZ3ZfY29weSA9IHN5cy5hcmd2LmNvcHkoKQorICAgICAgICBkaXN0dXRpbHMuY29yZS5ydW5fc2V0dXAoCisgICAgICAgICAgICBzZWxmLndyaXRlX3NldHVwKHNldHVwX2RvZXNfbm90aGluZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmFyZ3YsIGFyZ3ZfY29weSkKKworICAgIGRlZiB0ZXN0X3J1bl9zZXR1cF9kZWZpbmVzX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2NyaXB0IGNhbiB1c2UgX19maWxlX187IGlmIHRoYXQncyBtaXNzaW5nLCB0aGUgdGVzdAorICAgICAgICAjIHNldHVwLnB5IHNjcmlwdCB3aWxsIHJhaXNlIE5hbWVFcnJvci4KKyAgICAgICAgZGlzdCA9IGRpc3R1dGlscy5jb3JlLnJ1bl9zZXR1cCgKKyAgICAgICAgICAgIHNlbGYud3JpdGVfc2V0dXAoc2V0dXBfZGVmaW5lc19zdWJjbGFzcykpCisgICAgICAgIGluc3RhbGwgPSBkaXN0LmdldF9jb21tYW5kX29iaignaW5zdGFsbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NtZCcsIGluc3RhbGwuc3ViX2NvbW1hbmRzKQorCiAgICAgZGVmIHRlc3RfcnVuX3NldHVwX3VzZXNfY3VycmVudF9kaXIoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IHRoZSBzZXR1cCBzY3JpcHQgaXMgcnVuIHdpdGggdGhlIGN1cnJlbnQgZGlyZWN0b3J5CiAgICAgICAgICMgYXMgaXRzIG93biBjdXJyZW50IGRpcmVjdG9yeTsgdGhpcyB3YXMgdGVtcG9yYXJpbHkgYnJva2VuIGJ5IGEKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5CmluZGV4IDg1NjkyMTYuLjlkYzg2OWQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weQpAQCAtMywxMSArMywxMCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCi1pbXBvcnQgc3VicHJvY2VzcwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgY3lnd2luY2NvbXBpbGVyCi1mcm9tIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgaW1wb3J0IChDeWd3aW5DQ29tcGlsZXIsIGNoZWNrX2NvbmZpZ19oLAorZnJvbSBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGltcG9ydCAoY2hlY2tfY29uZmlnX2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSF9PSywgQ09ORklHX0hfTk9UT0ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSF9VTkNFUlRBSU4sIGdldF92ZXJzaW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9tc3ZjcikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weQppbmRleCAzZTFjMzY2Li5jNmZhZTM5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5kZXBfdXRpbC4iIiIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQogCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXIsIG5ld2VyX3BhaXJ3aXNlLCBuZXdlcl9ncm91cAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNGaWxlRXJyb3IKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5CmluZGV4IGE2ZDA0ZjAuLjAzMDQwYWYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuZmlsZV91dGlsLiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBlcnJubwogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkKaW5kZXggMzkxYWYzYy4uYzcxMzQyZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weQpAQCAtNTEsMTQgKzUxLDE0IEBACiAKICAgICAgICAgZm9yIGdsb2IsIHJlZ2V4IGluICgKICAgICAgICAgICAgICMgc2ltcGxlIGNhc2VzCi0gICAgICAgICAgICAoJ2ZvbyonLCByJ2Zvb1teJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/Jywgcidmb29bXiUoc2VwKXNdXFooP21zKScpLAotICAgICAgICAgICAgKCdmb28/PycsIHInZm9vW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJyksCisgICAgICAgICAgICAoJ2ZvbyonLCByJyg/czpmb29bXiUoc2VwKXNdKilcWicpLAorICAgICAgICAgICAgKCdmb28/JywgcicoP3M6Zm9vW14lKHNlcClzXSlcWicpLAorICAgICAgICAgICAgKCdmb28/PycsIHInKD9zOmZvb1teJShzZXApc11bXiUoc2VwKXNdKVxaJyksCiAgICAgICAgICAgICAjIHNwZWNpYWwgY2FzZXMKLSAgICAgICAgICAgIChyJ2Zvb1xcKicsIHInZm9vXFxcXFteJShzZXApc10qXFooP21zKScpLAotICAgICAgICAgICAgKHInZm9vXFxcKicsIHInZm9vXFxcXFxcW14lKHNlcClzXSpcWig/bXMpJyksCi0gICAgICAgICAgICAoJ2Zvbz8/Pz8nLCByJ2Zvb1teJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJyksCi0gICAgICAgICAgICAocidmb29cXD8/Jywgcidmb29cXFxcW14lKHNlcClzXVteJShzZXApc11cWig/bXMpJykpOgorICAgICAgICAgICAgKHInZm9vXFwqJywgcicoP3M6Zm9vXFxcXFteJShzZXApc10qKVxaJyksCisgICAgICAgICAgICAocidmb29cXFwqJywgcicoP3M6Zm9vXFxcXFxcW14lKHNlcClzXSopXFonKSwKKyAgICAgICAgICAgICgnZm9vPz8/PycsIHInKD9zOmZvb1teJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVteJShzZXApc10pXFonKSwKKyAgICAgICAgICAgIChyJ2Zvb1xcPz8nLCByJyg/czpmb29cXFxcW14lKHNlcClzXVteJShzZXApc10pXFonKSk6CiAgICAgICAgICAgICByZWdleCA9IHJlZ2V4ICUgeydzZXAnOiBzZXB9CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JfdG9fcmUoZ2xvYiksIHJlZ2V4KQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weQppbmRleCA0ZDhjMDBhLi4zMmFiMjk2IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9kYXRhIGltcG9ydCBpbnN0YWxsX2RhdGEKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weQppbmRleCBkOTUzMTU3Li4yMjE3YjMyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkKQEAgLTEsOCArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9oZWFkZXJzLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbF9oZWFkZXJzIGltcG9ydCBpbnN0YWxsX2hlYWRlcnMKIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKaW5kZXggNTM3OGFhOC4uZmRhNjMxNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQpAQCAtMTA0LDcgKzEwNCw4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9sZF9kb250X3dyaXRlX2J5dGVjb2RlCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLCBzZWxmLmxvZ3NbMF1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ3NbMF1bMV0gJSBzZWxmLmxvZ3NbMF1bMl0pCiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQppbmRleCA2YzdlYjIwLi41ZWRjMjRhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CkBAIC0xLDExICsxLDExIEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnNwYXduLiIiIgogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHVuaXhfc2hlbGwKIAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IF9udF9xdW90ZV9hcmdzCi1mcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24sIGZpbmRfZXhlY3V0YWJsZQorZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0V4ZWNFcnJvcgogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIApAQCAtMzAsOSArMzAsOSBAQAogCiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIGV4ZWN1dGFibGUKICAgICAgICAgIyB0aHJvdWdoIHRoZSBzaGVsbCB0aGF0IHJldHVybnMgMQotICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5zaCcpCi0gICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyEvYmluL3NoXG5leGl0IDEnKQorICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhJXNcbmV4aXQgMScgJSB1bml4X3NoZWxsKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZXhlID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2Zvby5iYXQnKQogICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJ2V4aXQgMScpCkBAIC00MSw5ICs0MSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERpc3R1dGlsc0V4ZWNFcnJvciwgc3Bhd24sIFtleGVdKQogCiAgICAgICAgICMgbm93IHNvbWV0aGluZyB0aGF0IHdvcmtzCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLnNoJykKLSAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjIS9iaW4vc2hcbmV4aXQgMCcpCisgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyElc1xuZXhpdCAwJyAlIHVuaXhfc2hlbGwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLmJhdCcpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnZXhpdCAwJykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91bml4Y2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKaW5kZXggZTE3MWVlOS4uZWZiYTI3ZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkKQEAgLTEsNSArMSw0IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIuIiIiCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXh0X2ZpbGUucHkgYi9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQppbmRleCA0NzgzMzZmLi45M2FiYWQzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weQpAQCAtNCw3ICs0LDcgQEAKIHRoYXQgKG9wdGlvbmFsbHkpIHRha2VzIGNhcmUgb2Ygc3RyaXBwaW5nIGNvbW1lbnRzLCBpZ25vcmluZyBibGFuawogbGluZXMsIGFuZCBqb2luaW5nIGxpbmVzIHdpdGggYmFja3NsYXNoZXMuIiIiCiAKLWltcG9ydCBzeXMsIG9zLCBpbworaW1wb3J0IHN5cywgaW8KIAogCiBjbGFzcyBUZXh0RmlsZToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQppbmRleCBlNDIzMzI1Li5mZGNmNmZhIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CkBAIC03LDggKzcsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBpbXBvcnRsaWIudXRpbAotaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZworaW1wb3J0IHN5cwogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXIKIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3bgpAQCAtMzUwLDYgKzM1MCwxMSBAQAogICAgIGdlbmVyYXRlZCBpbiBpbmRpcmVjdCBtb2RlOyB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UncmUgZG9pbmcsIGxlYXZlCiAgICAgaXQgc2V0IHRvIE5vbmUuCiAgICAgIiIiCisKKyAgICAjIExhdGUgaW1wb3J0IHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZTogX3Bvc2l4c3VicHJvY2VzcyBpcyBidWlsdCBieQorICAgICMgc2V0dXAucHksIGJ1dCBzZXR1cC5weSB1c2VzIGRpc3R1dGlscy4KKyAgICBpbXBvcnQgc3VicHJvY2VzcworCiAgICAgIyBub3RoaW5nIGlzIGRvbmUgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgaXMgVHJ1ZQogICAgIGlmIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlOgogICAgICAgICByYWlzZSBEaXN0dXRpbHNCeXRlQ29tcGlsZUVycm9yKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZC4nKQpAQCAtNDEyLDExICs0MTcsOSBAQAogCiAgICAgICAgICAgICBzY3JpcHQuY2xvc2UoKQogCi0gICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgc2NyaXB0X25hbWVdCi0gICAgICAgIGlmIG9wdGltaXplID09IDE6Ci0gICAgICAgICAgICBjbWQuaW5zZXJ0KDEsICItTyIpCi0gICAgICAgIGVsaWYgb3B0aW1pemUgPT0gMjoKLSAgICAgICAgICAgIGNtZC5pbnNlcnQoMSwgIi1PTyIpCisgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZV0KKyAgICAgICAgY21kLmV4dGVuZChzdWJwcm9jZXNzLl9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKKyAgICAgICAgY21kLmFwcGVuZChzY3JpcHRfbmFtZSkKICAgICAgICAgc3Bhd24oY21kLCBkcnlfcnVuPWRyeV9ydW4pCiAgICAgICAgIGV4ZWN1dGUob3MucmVtb3ZlLCAoc2NyaXB0X25hbWUsKSwgInJlbW92aW5nICVzIiAlIHNjcmlwdF9uYW1lLAogICAgICAgICAgICAgICAgIGRyeV9ydW49ZHJ5X3J1bikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weSBiL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weQppbmRleCBiMGRkOWY0Li4wNjJjOThmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkKKysrIGIvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5CkBAIC0xNTQsNyArMTU0LDcgQEAKICAgICBnbG9iYWwgX3Byb3Zpc2lvbl9yeAogICAgIGlmIF9wcm92aXNpb25fcnggaXMgTm9uZToKICAgICAgICAgX3Byb3Zpc2lvbl9yeCA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAiKFthLXpBLVpfXVx3Kig/OlwuW2EtekEtWl9dXHcqKSopKD86XHMqXChccyooW14pXHNdKylccypcKSk/JCIsCisgICAgICAgICAgICByIihbYS16QS1aX11cdyooPzpcLlthLXpBLVpfXVx3KikqKSg/OlxzKlwoXHMqKFteKVxzXSspXHMqXCkpPyQiLAogICAgICAgICAgICAgcmUuQVNDSUkpCiAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcCgpCiAgICAgbSA9IF9wcm92aXNpb25fcngubWF0Y2godmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvZG9jdGVzdC5weSBiL0xpYi9kb2N0ZXN0LnB5CmluZGV4IDM4ZmRkODAuLjBiNzg1NDQgMTAwNjQ0Ci0tLSBhL0xpYi9kb2N0ZXN0LnB5CisrKyBiL0xpYi9kb2N0ZXN0LnB5CkBAIC0zODEsMTIgKzM4MSwxNSBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVfc3Rkb3V0CiAKICMgW1hYXSBOb3JtYWxpemUgd2l0aCByZXNwZWN0IHRvIG9zLnBhdGgucGFyZGlyPwotZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHBhdGgpOgorZGVmIF9tb2R1bGVfcmVsYXRpdmVfcGF0aChtb2R1bGUsIHRlc3RfcGF0aCk6CiAgICAgaWYgbm90IGluc3BlY3QuaXNtb2R1bGUobW9kdWxlKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdFeHBlY3RlZCBhIG1vZHVsZTogJXInICUgbW9kdWxlKQotICAgIGlmIHBhdGguc3RhcnRzd2l0aCgnLycpOgorICAgIGlmIHRlc3RfcGF0aC5zdGFydHN3aXRoKCcvJyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ01vZHVsZS1yZWxhdGl2ZSBmaWxlcyBtYXkgbm90IGhhdmUgYWJzb2x1dGUgcGF0aHMnKQogCisgICAgIyBOb3JtYWxpemUgdGhlIHBhdGguIE9uIFdpbmRvd3MsIHJlcGxhY2UgIi8iIHdpdGggIlwiLgorICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbigqKHRlc3RfcGF0aC5zcGxpdCgnLycpKSkKKwogICAgICMgRmluZCB0aGUgYmFzZSBkaXJlY3RvcnkgZm9yIHRoZSBwYXRoLgogICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19maWxlX18nKToKICAgICAgICAgIyBBIG5vcm1hbCBtb2R1bGUvcGFja2FnZQpAQCAtMzk4LDEzICs0MDEsMTkgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJhc2VkaXIgPSBvcy5jdXJkaXIKICAgICBlbHNlOgorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIG1vZHVsZS5fX3BhdGhfXzoKKyAgICAgICAgICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihkaXJlY3RvcnksIHRlc3RfcGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmdWxscGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdWxscGF0aAorCiAgICAgICAgICMgQSBtb2R1bGUgdy9vIF9fZmlsZV9fICh0aGlzIGluY2x1ZGVzIGJ1aWx0aW5zKQogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZXNvbHZlIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBtb2R1bGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICIlciAoaXQgaGFzIG5vIF9fZmlsZV9fKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAlIG1vZHVsZS5fX25hbWVfXykKIAotICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSBwYXRoLgotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZWRpciwgKihwYXRoLnNwbGl0KCcvJykpKQorICAgICMgQ29tYmluZSB0aGUgYmFzZSBkaXJlY3RvcnkgYW5kIHRoZSB0ZXN0IHBhdGguCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlZGlyLCB0ZXN0X3BhdGgpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjIDIuIEV4YW1wbGUgJiBEb2NUZXN0CkBAIC03NTYsNyArNzY1LDcgQEAKIAogICAgICMgVGhpcyByZWd1bGFyIGV4cHJlc3Npb24gZmluZHMgdGhlIGluZGVudGF0aW9uIG9mIGV2ZXJ5IG5vbi1ibGFuawogICAgICMgbGluZSBpbiBhIHN0cmluZy4KLSAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZSgnXihbIF0qKSg/PVxTKScsIHJlLk1VTFRJTElORSkKKyAgICBfSU5ERU5UX1JFID0gcmUuY29tcGlsZShyJ14oWyBdKikoPz1cUyknLCByZS5NVUxUSUxJTkUpCiAKICAgICBkZWYgX21pbl9pbmRlbnQoc2VsZiwgcyk6CiAgICAgICAgICJSZXR1cm4gdGhlIG1pbmltdW0gaW5kZW50YXRpb24gb2YgYW55IG5vbi1ibGFuayBsaW5lIGluIGBzYCIKQEAgLTEwOTcsNyArMTEwNiw3IEBACiAgICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIHNvdXJjZV9saW5lcyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8rMQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKF58Lio6KVxzKlx3KigifFwnKScpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKHInKF58Lio6KVxzKlx3KigifFwnKScpCiAgICAgICAgICAgICBmb3IgbGluZW5vIGluIHJhbmdlKGxpbmVubywgbGVuKHNvdXJjZV9saW5lcykpOgogICAgICAgICAgICAgICAgIGlmIHBhdC5tYXRjaChzb3VyY2VfbGluZXNbbGluZW5vXSk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaW5lbm8KQEAgLTE1OTksMTEgKzE2MDgsMTEgQEAKICAgICAgICAgIyBibGFuayBsaW5lLCB1bmxlc3MgdGhlIERPTlRfQUNDRVBUX0JMQU5LTElORSBmbGFnIGlzIHVzZWQuCiAgICAgICAgIGlmIG5vdCAob3B0aW9uZmxhZ3MgJiBET05UX0FDQ0VQVF9CTEFOS0xJTkUpOgogICAgICAgICAgICAgIyBSZXBsYWNlIDxCTEFOS0xJTkU+IGluIHdhbnQgd2l0aCBhIGJsYW5rIGxpbmUuCi0gICAgICAgICAgICB3YW50ID0gcmUuc3ViKCcoP20pXiVzXHMqPyQnICUgcmUuZXNjYXBlKEJMQU5LTElORV9NQVJLRVIpLAorICAgICAgICAgICAgd2FudCA9IHJlLnN1YihyJyg/bSleJXNccyo/JCcgJSByZS5lc2NhcGUoQkxBTktMSU5FX01BUktFUiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCB3YW50KQogICAgICAgICAgICAgIyBJZiBhIGxpbmUgaW4gZ290IGNvbnRhaW5zIG9ubHkgc3BhY2VzLCB0aGVuIHJlbW92ZSB0aGUKICAgICAgICAgICAgICMgc3BhY2VzLgotICAgICAgICAgICAgZ290ID0gcmUuc3ViKCcoP20pXlxzKj8kJywgJycsIGdvdCkKKyAgICAgICAgICAgIGdvdCA9IHJlLnN1YihyJyg/bSleXHMqPyQnLCAnJywgZ290KQogICAgICAgICAgICAgaWYgZ290ID09IHdhbnQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5IGIvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CmluZGV4IDVkZjk1MTEuLjU3ZDAxZmIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQorKysgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKQEAgLTY1Miw4ICs2NTIsOCBAQAogICAgICAgICBpZiB2YWx1ZS50b2tlbl90eXBlID09ICdjb21tZW50JzoKICAgICAgICAgICAgIHJldHVybiBzdHIodmFsdWUpCiAgICAgICAgIHJldHVybiBzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJywgJ1woJykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsICdcKScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygnLCByJ1woJykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKScsIHInXCknKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNvbnRlbnQoc2VsZik6CkBAIC0xMzU2LDE1ICsxMzU2LDE1IEBACiAKIF93c3Bfc3BsaXR0ZXIgPSByZS5jb21waWxlKHInKFt7fV0rKScuZm9ybWF0KCcnLmpvaW4oV1NQKSkpLnNwbGl0CiBfbm9uX2F0b21fZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCi0gICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKEFUT01fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fcHJpbnRhYmxlX2ZpbmRlciA9IHJlLmNvbXBpbGUociJbXHgwMC1ceDIwXHg3Rl0iKS5maW5kYWxsCiBfbm9uX3Rva2VuX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIF9ub25fYXR0cmlidXRlX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAotICAgICcnLmpvaW4oQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAnJy5qb2luKEFUVFJJQlVURV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJyxyJ1xdJykpKS5tYXRjaAogX25vbl9leHRlbmRlZF9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCiAgICAgJycuam9pbihFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUykucmVwbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwnLCdcXFxcJykucmVwbGFjZSgnXScscidcXScpKSkubWF0Y2gKIAogZGVmIF92YWxpZGF0ZV94dGV4dCh4dGV4dCk6CiAgICAgIiIiSWYgaW5wdXQgdG9rZW4gY29udGFpbnMgQVNDSUkgbm9uLXByaW50YWJsZXMsIHJlZ2lzdGVyIGEgZGVmZWN0LiIiIgpAQCAtMTUxNyw3ICsxNTE3LDcgQEAKICAgICByZXR1cm4gdW5zdHJ1Y3R1cmVkCiAKIGRlZiBnZXRfcXBfY3RleHQodmFsdWUpOgotICAgICIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CisgICAgciIiImN0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCAoICk+CiAKICAgICBUaGlzIGlzIG5vdCB0aGUgUkZDIGN0ZXh0LCBzaW5jZSB3ZSBhcmUgaGFuZGxpbmcgbmVzdGVkIGNvbW1lbnRzIGluIGNvbW1lbnQKICAgICBhbmQgdW5xdW90aW5nIHF1b3RlZC1wYWlycyBoZXJlLiAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSAnKCknCkBAIC0xODc4LDcgKzE4NzgsNyBAQAogICAgIHJldHVybiBvYnNfbG9jYWxfcGFydCwgdmFsdWUKIAogZGVmIGdldF9kdGV4dCh2YWx1ZSk6Ci0gICAgIiIiIGR0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCBbIF0+IC8gb2JzLWR0ZXh0CisgICAgciIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAogICAgICAgICBvYnMtZHRleHQgPSBvYnMtTk8tV1MtQ1RMIC8gcXVvdGVkLXBhaXIKIAogICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgZXhjbHVkZWQgY2hhcmFjdGVycywgYnV0IGlmIHdlIGZpbmQgYW55CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkgYi9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKaW5kZXggYzBkOThhNC4uZGY0NjQ5NiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpAQCAtMTU0LDYgKzE1NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVtLiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgbWVzc2FnZSBpcyBiZWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplZCBieSBhIGdlbmVyYXRvci4gRGVmYXVsdDogVHJ1ZS4KIAorICAgIG1lc3NhZ2VfZmFjdG9yeSAgICAgLS0gdGhlIGNsYXNzIHRvIHVzZSB0byBjcmVhdGUgbmV3IG1lc3NhZ2Ugb2JqZWN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHRoZSB2YWx1ZSBpcyBOb25lLCB0aGUgZGVmYXVsdCBpcyBNZXNzYWdlLgorCiAgICAgIiIiCiAKICAgICByYWlzZV9vbl9kZWZlY3QgPSBGYWxzZQpAQCAtMTYxLDYgKzE2NCw3IEBACiAgICAgY3RlX3R5cGUgPSAnOGJpdCcKICAgICBtYXhfbGluZV9sZW5ndGggPSA3OAogICAgIG1hbmdsZV9mcm9tXyA9IEZhbHNlCisgICAgbWVzc2FnZV9mYWN0b3J5ID0gTm9uZQogCiAgICAgZGVmIGhhbmRsZV9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgogICAgICAgICAiIiJCYXNlZCBvbiBwb2xpY3ksIGVpdGhlciByYWlzZSBkZWZlY3Qgb3IgY2FsbCByZWdpc3Rlcl9kZWZlY3QuCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkgYi9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkKaW5kZXggYjk4Y2UyNy4uYjkwNGRlZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5CisrKyBiL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weQpAQCAtMTQyLDcgKzE0Miw3IEBACiBkZWYgX2VuY29kZV90ZXh0KHN0cmluZywgY2hhcnNldCwgY3RlLCBwb2xpY3kpOgogICAgIGxpbmVzID0gc3RyaW5nLmVuY29kZShjaGFyc2V0KS5zcGxpdGxpbmVzKCkKICAgICBsaW5lc2VwID0gcG9saWN5LmxpbmVzZXAuZW5jb2RlKCdhc2NpaScpCi0gICAgZGVmIGVtYmVkZWRfYm9keShsaW5lcyk6IHJldHVybiBsaW5lc2VwLmpvaW4obGluZXMpICsgbGluZXNlcAorICAgIGRlZiBlbWJlZGRlZF9ib2R5KGxpbmVzKTogcmV0dXJuIGxpbmVzZXAuam9pbihsaW5lcykgKyBsaW5lc2VwCiAgICAgZGVmIG5vcm1hbF9ib2R5KGxpbmVzKTogcmV0dXJuIGInXG4nLmpvaW4obGluZXMpICsgYidcbicKICAgICBpZiBjdGU9PU5vbmU6CiAgICAgICAgICMgVXNlIGhldXJpc3RpY3MgdG8gZGVjaWRlIG9uIHRoZSAiYmVzdCIgZW5jb2RpbmcuCkBAIC0xNTMsNyArMTUzLDcgQEAKICAgICAgICAgaWYgKHBvbGljeS5jdGVfdHlwZSA9PSAnOGJpdCcgYW5kCiAgICAgICAgICAgICAgICAgbWF4KGxlbih4KSBmb3IgeCBpbiBsaW5lcykgPD0gcG9saWN5Lm1heF9saW5lX2xlbmd0aCk6CiAgICAgICAgICAgICByZXR1cm4gJzhiaXQnLCBub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQotICAgICAgICBzbmlmZiA9IGVtYmVkZWRfYm9keShsaW5lc1s6MTBdKQorICAgICAgICBzbmlmZiA9IGVtYmVkZGVkX2JvZHkobGluZXNbOjEwXSkKICAgICAgICAgc25pZmZfcXAgPSBxdW9wcmltaW1lLmJvZHlfZW5jb2RlKHNuaWZmLmRlY29kZSgnbGF0aW4tMScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKICAgICAgICAgc25pZmZfYmFzZTY0ID0gYmluYXNjaWkuYjJhX2Jhc2U2NChzbmlmZikKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICBkYXRhID0gcXVvcHJpbWltZS5ib2R5X2VuY29kZShub3JtYWxfYm9keShsaW5lcykuZGVjb2RlKCdsYXRpbi0xJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgZWxpZiBjdGUgPT0gJ2Jhc2U2NCc6Ci0gICAgICAgIGRhdGEgPSBfZW5jb2RlX2Jhc2U2NChlbWJlZGVkX2JvZHkobGluZXMpLCBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQorICAgICAgICBkYXRhID0gX2VuY29kZV9iYXNlNjQoZW1iZWRkZWRfYm9keShsaW5lcyksIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBjb250ZW50IHRyYW5zZmVyIGVuY29kaW5nIHt9Ii5mb3JtYXQoY3RlKSkKICAgICByZXR1cm4gY3RlLCBkYXRhCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weSBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CmluZGV4IDBiMzEyZTUuLjdjMDdjYTggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CkBAIC0yNCwxNSArMjQsMTQgQEAKIGltcG9ydCByZQogCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKIGZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZQogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotTkxDUkUgPSByZS5jb21waWxlKCdcclxufFxyfFxuJykKLU5MQ1JFX2JvbCA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCi1OTENSRV9lb2wgPSByZS5jb21waWxlKCcoXHJcbnxccnxcbilcWicpCi1OTENSRV9jcmFjayA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCitOTENSRSA9IHJlLmNvbXBpbGUocidcclxufFxyfFxuJykKK05MQ1JFX2JvbCA9IHJlLmNvbXBpbGUocicoXHJcbnxccnxcbiknKQorTkxDUkVfZW9sID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKVxaJykKK05MQ1JFX2NyYWNrID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKScpCiAjIFJGQyAyODIyICQzLjYuOCBPcHRpb25hbCBmaWVsZHMuICBmdGV4dCBpcyAlZDMzLTU3IC8gJWQ1OS0xMjYsIEFueSBjaGFyYWN0ZXIKICMgZXhjZXB0IGNvbnRyb2xzLCBTUCwgYW5kICI6Ii4KIGhlYWRlclJFID0gcmUuY29tcGlsZShyJ14oRnJvbSB8W1wwNDEtXDA3MVwwNzMtXDE3Nl0qOnxbXHQgXSknKQpAQCAtMTQ4LDEzICsxNDcsMTEgQEAKICAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKICAgICAgICAgc2VsZi5fb2xkX3N0eWxlX2ZhY3RvcnkgPSBGYWxzZQogICAgICAgICBpZiBfZmFjdG9yeSBpcyBOb25lOgotICAgICAgICAgICAgIyBXaGF0IHRoaXMgc2hvdWxkIGJlOgotICAgICAgICAgICAgI3NlbGYuX2ZhY3RvcnkgPSBwb2xpY3kuZGVmYXVsdF9tZXNzYWdlX2ZhY3RvcnkKLSAgICAgICAgICAgICMgYnV0LCBiZWNhdXNlIHdlIGFyZSBwb3N0IDMuNCBmZWF0dXJlIGZyZWV6ZSwgZml4IHdpdGggdGVtcCBoYWNrOgotICAgICAgICAgICAgaWYgc2VsZi5wb2xpY3kgaXMgY29tcGF0MzI6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IG1lc3NhZ2UuTWVzc2FnZQorICAgICAgICAgICAgaWYgcG9saWN5Lm1lc3NhZ2VfZmFjdG9yeSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBNZXNzYWdlCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBtZXNzYWdlLkVtYWlsTWVzc2FnZQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBwb2xpY3kubWVzc2FnZV9mYWN0b3J5CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gX2ZhY3RvcnkKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CmluZGV4IDI1NjI3OGQuLmFlNjcwYzIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKKysrIGIvTGliL2VtYWlsL2dlbmVyYXRvci5weQpAQCAtNDQ4LDcgKzQ0OCw4IEBACiAgICAgTGlrZSB0aGUgR2VuZXJhdG9yIGJhc2UgY2xhc3MsIGV4Y2VwdCB0aGF0IG5vbi10ZXh0IHBhcnRzIGFyZSBzdWJzdGl0dXRlZAogICAgIHdpdGggYSBmb3JtYXQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFydC4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49NzgsIGZtdD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgZm10PU5vbmUsICosCisgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiTGlrZSBHZW5lcmF0b3IuX19pbml0X18oKSBleGNlcHQgdGhhdCBhbiBhZGRpdGlvbmFsIG9wdGlvbmFsCiAgICAgICAgIGFyZ3VtZW50IGlzIGFsbG93ZWQuCiAKQEAgLTQ3MCw3ICs0NzEsOCBAQAogCiAgICAgICAgIFtOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdCiAgICAgICAgICIiIgotICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXywgbWF4aGVhZGVybGVuKQorICAgICAgICBHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXywgbWF4aGVhZGVybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeSkKICAgICAgICAgaWYgZm10IGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9mbXQgPSBfRk1UCiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVyLnB5IGIvTGliL2VtYWlsL2hlYWRlci5weQppbmRleCA2ODIwZWExLi5jN2IyZGQ5IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvaGVhZGVyLnB5CisrKyBiL0xpYi9lbWFpbC9oZWFkZXIucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKIAogIyBGaW5kIGEgaGVhZGVyIGVtYmVkZGVkIGluIGEgcHV0YXRpdmUgaGVhZGVyIHZhbHVlLiAgVXNlZCB0byBjaGVjayBmb3IKICMgaGVhZGVyIGluamVjdGlvbiBhdHRhY2suCi1fZW1iZWRlZF9oZWFkZXIgPSByZS5jb21waWxlKHInXG5bXiBcdF0rOicpCitfZW1iZWRkZWRfaGVhZGVyID0gcmUuY29tcGlsZShyJ1xuW14gXHRdKzonKQogCiAKIAwKQEAgLTM4NSw3ICszODUsNyBAQAogICAgICAgICBpZiBzZWxmLl9jaHVua3M6CiAgICAgICAgICAgICBmb3JtYXR0ZXIuYWRkX3RyYW5zaXRpb24oKQogICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlci5fc3RyKGxpbmVzZXApCi0gICAgICAgIGlmIF9lbWJlZGVkX2hlYWRlci5zZWFyY2godmFsdWUpOgorICAgICAgICBpZiBfZW1iZWRkZWRfaGVhZGVyLnNlYXJjaCh2YWx1ZSk6CiAgICAgICAgICAgICByYWlzZSBIZWFkZXJQYXJzZUVycm9yKCJoZWFkZXIgdmFsdWUgYXBwZWFycyB0byBjb250YWluICIKICAgICAgICAgICAgICAgICAiYW4gZW1iZWRkZWQgaGVhZGVyOiB7IXJ9Ii5mb3JtYXQodmFsdWUpKQogICAgICAgICByZXR1cm4gdmFsdWUKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5IGIvTGliL2VtYWlsL21lc3NhZ2UucHkKaW5kZXggNGIwNDI4My4uYjY1MTJmMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21lc3NhZ2UucHkKKysrIGIvTGliL2VtYWlsL21lc3NhZ2UucHkKQEAgLTQsMTggKzQsMTcgQEAKIAogIiIiQmFzaWMgbWVzc2FnZSBvYmplY3QgZm9yIHRoZSBlbWFpbCBwYWNrYWdlIG9iamVjdCBtb2RlbC4iIiIKIAotX19hbGxfXyA9IFsnTWVzc2FnZSddCitfX2FsbF9fID0gWydNZXNzYWdlJywgJ0VtYWlsTWVzc2FnZSddCiAKIGltcG9ydCByZQogaW1wb3J0IHV1CiBpbXBvcnQgcXVvcHJpCi1pbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKICMgSW50cmFwYWNrYWdlIGltcG9ydHMKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBQb2xpY3ksIGNvbXBhdDMyCiBmcm9tIGVtYWlsIGltcG9ydCBjaGFyc2V0IGFzIF9jaGFyc2V0CiBmcm9tIGVtYWlsLl9lbmNvZGVkX3dvcmRzIGltcG9ydCBkZWNvZGVfYgogQ2hhcnNldCA9IF9jaGFyc2V0LkNoYXJzZXQKQEAgLTk1MSw2ICs5NTAsMjYgQEAKICAgICAgICAgICAgIHBvbGljeSA9IGRlZmF1bHQKICAgICAgICAgTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3kpCiAKKworICAgIGRlZiBhc19zdHJpbmcoc2VsZiwgdW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj1Ob25lLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgZW50aXJlIGZvcm1hdHRlZCBtZXNzYWdlIGFzIGEgc3RyaW5nLgorCisgICAgICAgIE9wdGlvbmFsICd1bml4ZnJvbScsIHdoZW4gdHJ1ZSwgbWVhbnMgaW5jbHVkZSB0aGUgVW5peCBGcm9tXyBlbnZlbG9wZQorICAgICAgICBoZWFkZXIuICBtYXhoZWFkZXJsZW4gaXMgcmV0YWluZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUKKyAgICAgICAgYmFzZSBNZXNzYWdlIGNsYXNzLCBidXQgZGVmYXVsdHMgdG8gTm9uZSwgbWVhbmluZyB0aGF0IHRoZSBwb2xpY3kgdmFsdWUKKyAgICAgICAgZm9yIG1heF9saW5lX2xlbmd0aCBjb250cm9scyB0aGUgaGVhZGVyIG1heGltdW0gbGVuZ3RoLiAgJ3BvbGljeScgaXMKKyAgICAgICAgcGFzc2VkIHRvIHRoZSBHZW5lcmF0b3IgaW5zdGFuY2UgdXNlZCB0byBzZXJpYWxpemUgdGhlIG1lc2FzZ2U7IGlmIGl0CisgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgdGhlIHBvbGljeSBhc3NvY2lhdGVkIHdpdGggdGhlIG1lc3NhZ2UgaW5zdGFuY2UgaXMKKyAgICAgICAgdXNlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5IGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIGlmIG1heGhlYWRlcmxlbiBpcyBOb25lOgorICAgICAgICAgICAgbWF4aGVhZGVybGVuID0gcG9saWN5Lm1heF9saW5lX2xlbmd0aAorICAgICAgICByZXR1cm4gc3VwZXIoKS5hc19zdHJpbmcobWF4aGVhZGVybGVuPW1heGhlYWRlcmxlbiwgcG9saWN5PXBvbGljeSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5hc19zdHJpbmcocG9saWN5PXNlbGYucG9saWN5LmNsb25lKHV0Zjg9VHJ1ZSkpCisKICAgICBkZWYgaXNfYXR0YWNobWVudChzZWxmKToKICAgICAgICAgY19kID0gc2VsZi5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKQogICAgICAgICByZXR1cm4gRmFsc2UgaWYgY19kIGlzIE5vbmUgZWxzZSBjX2QuY29udGVudF9kaXNwb3NpdGlvbiA9PSAnYXR0YWNobWVudCcKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2FwcGxpY2F0aW9uLnB5IGIvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKaW5kZXggZjVjNTkwNS4uNjg3N2U1NSAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkKQEAgLTE0LDcgKzE0LDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhcHBsaWNhdGlvbi8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywKLSAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKToKKyAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKiwgcG9saWN5PU5vbmUsICoqX3BhcmFtcyk6CiAgICAgICAgICIiIkNyZWF0ZSBhbiBhcHBsaWNhdGlvbi8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgYXBwbGljYXRpb24gZGF0YS4KQEAgLTMxLDYgKzMxLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ludmFsaWQgYXBwbGljYXRpb24gTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXBwbGljYXRpb24nLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhcHBsaWNhdGlvbicsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfZGF0YSkKICAgICAgICAgX2VuY29kZXIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2F1ZGlvLnB5IGIvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKaW5kZXggZmJjMTE4OS4uNGJjZDdiMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkKQEAgLTQzLDcgKzQzLDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBhdWRpby8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gYXVkaW8vKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2F1ZGlvZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgYXVkaW8gZGF0YS4gIElmIHRoaXMgZGF0YQpAQCAtNjgsNiArNjgsNyBAQAogICAgICAgICAgICAgX3N1YnR5cGUgPSBfd2hhdHNuZChfYXVkaW9kYXRhKQogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDb3VsZCBub3QgZmluZCBhdWRpbyBNSU1FIHN1YnR5cGUnKQotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhdWRpbycsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2F1ZGlvJywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKQogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF9hdWRpb2RhdGEpCiAgICAgICAgIF9lbmNvZGVyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9iYXNlLnB5IGIvTGliL2VtYWlsL21pbWUvYmFzZS5weQppbmRleCBhYzkxOTI1Li4xYTNmOWI1IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9iYXNlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkKQEAgLTYsNiArNiw4IEBACiAKIF9fYWxsX18gPSBbJ01JTUVCYXNlJ10KIAoraW1wb3J0IGVtYWlsLnBvbGljeQorCiBmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlCiAKIApAQCAtMTMsMTQgKzE1LDE2IEBACiBjbGFzcyBNSU1FQmFzZShtZXNzYWdlLk1lc3NhZ2UpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIE1JTUUgc3BlY2lhbGl6YXRpb25zLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tYWludHlwZSwgX3N1YnR5cGUsICoqX3BhcmFtcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tYWludHlwZSwgX3N1YnR5cGUsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJUaGlzIGNvbnN0cnVjdG9yIGFkZHMgYSBDb250ZW50LVR5cGU6IGFuZCBhIE1JTUUtVmVyc2lvbjogaGVhZGVyLgogCiAgICAgICAgIFRoZSBDb250ZW50LVR5cGU6IGhlYWRlciBpcyB0YWtlbiBmcm9tIHRoZSBfbWFpbnR5cGUgYW5kIF9zdWJ0eXBlCiAgICAgICAgIGFyZ3VtZW50cy4gIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhpcyBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzLgogICAgICAgICAiIiIKLSAgICAgICAgbWVzc2FnZS5NZXNzYWdlLl9faW5pdF9fKHNlbGYpCisgICAgICAgIGlmIHBvbGljeSBpcyBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gZW1haWwucG9saWN5LmNvbXBhdDMyCisgICAgICAgIG1lc3NhZ2UuTWVzc2FnZS5fX2luaXRfXyhzZWxmLCBwb2xpY3k9cG9saWN5KQogICAgICAgICBjdHlwZSA9ICclcy8lcycgJSAoX21haW50eXBlLCBfc3VidHlwZSkKICAgICAgICAgc2VsZi5hZGRfaGVhZGVyKCdDb250ZW50LVR5cGUnLCBjdHlwZSwgKipfcGFyYW1zKQogICAgICAgICBzZWxmWydNSU1FLVZlcnNpb24nXSA9ICcxLjAnCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9pbWFnZS5weSBiL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CmluZGV4IDU1NjM4MjMuLjkyNzI0NjQgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIF9pbWFnZWRhdGEsIF9zdWJ0eXBlPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcyk6CisgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVuY29kZXJzLmVuY29kZV9iYXNlNjQsICosIHBvbGljeT1Ob25lLCAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGUgYW4gaW1hZ2UvKiB0eXBlIE1JTUUgZG9jdW1lbnQuCiAKICAgICAgICAgX2ltYWdlZGF0YSBpcyBhIHN0cmluZyBjb250YWluaW5nIHRoZSByYXcgaW1hZ2UgZGF0YS4gIElmIHRoaXMgZGF0YQpAQCAtNDEsNiArNDEsNyBAQAogICAgICAgICAgICAgX3N1YnR5cGUgPSBpbWdoZHIud2hhdChOb25lLCBfaW1hZ2VkYXRhKQogICAgICAgICBpZiBfc3VidHlwZSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdDb3VsZCBub3QgZ3Vlc3MgaW1hZ2UgTUlNRSBzdWJ0eXBlJykKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnaW1hZ2UnLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdpbWFnZScsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqX3BhcmFtcykKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfaW1hZ2VkYXRhKQogICAgICAgICBfZW5jb2RlcihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkKaW5kZXggMjc1ZGJmZC4uMDdlNGYyZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FTWVzc2FnZShNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyByZXByZXNlbnRpbmcgbWVzc2FnZS8qIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX21zZywgX3N1YnR5cGU9J3JmYzgyMicsICosIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgbWVzc2FnZS8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfbXNnIGlzIGEgbWVzc2FnZSBvYmplY3QgYW5kIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZSwgb3IgYQpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICBkZWZhdWx0IGlzICJyZmM4MjIiICh0aGlzIGlzIGRlZmluZWQgYnkgdGhlIE1JTUUgc3RhbmRhcmQsIGV2ZW4gdGhvdWdoCiAgICAgICAgIHRoZSB0ZXJtICJyZmM4MjIiIGlzIHRlY2huaWNhbGx5IG91dGRhdGVkIGJ5IFJGQyAyODIyKS4KICAgICAgICAgIiIiCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ21lc3NhZ2UnLCBfc3VidHlwZSkKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnbWVzc2FnZScsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5KQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShfbXNnLCBtZXNzYWdlLk1lc3NhZ2UpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdBcmd1bWVudCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgTWVzc2FnZScpCiAgICAgICAgICMgSXQncyBjb252ZW5pZW50IHRvIHVzZSB0aGlzIGJhc2UgY2xhc3MgbWV0aG9kLiAgV2UgbmVlZCB0byBkbyBpdApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5IGIvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5CmluZGV4IDk2NjE4NjUuLjJkM2YyODggMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weQorKysgYi9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAiIiJCYXNlIGNsYXNzIGZvciBNSU1FIG11bHRpcGFydC8qIHR5cGUgbWVzc2FnZXMuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsCisgICAgICAgICAgICAgICAgICosIHBvbGljeT1Ob25lLAogICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpOgogICAgICAgICAiIiJDcmVhdGVzIGEgbXVsdGlwYXJ0LyogdHlwZSBtZXNzYWdlLgogCkBAIC0zMyw3ICszNCw3IEBACiAgICAgICAgIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIgYXJlIHRha2VuIGZyb20gdGhlCiAgICAgICAgIGtleXdvcmQgYXJndW1lbnRzIChvciBwYXNzZWQgaW50byB0aGUgX3BhcmFtcyBhcmd1bWVudCkuCiAgICAgICAgICIiIgotICAgICAgICBNSU1FQmFzZS5fX2luaXRfXyhzZWxmLCAnbXVsdGlwYXJ0JywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRUJhc2UuX19pbml0X18oc2VsZiwgJ211bHRpcGFydCcsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LCAqKl9wYXJhbXMpCiAKICAgICAgICAgIyBJbml0aWFsaXNlIF9wYXlsb2FkIHRvIGFuIGVtcHR5IGxpc3QgYXMgdGhlIE1lc3NhZ2Ugc3VwZXJjbGFzcydzCiAgICAgICAgICMgaW1wbGVtZW50YXRpb24gb2YgaXNfbXVsdGlwYXJ0IGFzc3VtZXMgdGhhdCBfcGF5bG9hZCBpcyBhIGxpc3QgZm9yCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5IGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQppbmRleCBkYTAzMDg2Li4zNWI0NDIzIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS90ZXh0LnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKQEAgLTE0LDcgKzE0LDcgQEAKIGNsYXNzIE1JTUVUZXh0KE1JTUVOb25NdWx0aXBhcnQpOgogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIHRleHQvKiB0eXBlIE1JTUUgZG9jdW1lbnRzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUsICosIHBvbGljeT1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfdGV4dCBpcyB0aGUgc3RyaW5nIGZvciB0aGlzIG1lc3NhZ2Ugb2JqZWN0LgpAQCAtMzYsNyArMzYsNyBAQAogICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1dGYtOCcKIAotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICd0ZXh0JywgX3N1YnR5cGUsCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ3RleHQnLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKnsnY2hhcnNldCc6IHN0cihfY2hhcnNldCl9KQogCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX3RleHQsIF9jaGFyc2V0KQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BvbGljeS5weSBiL0xpYi9lbWFpbC9wb2xpY3kucHkKaW5kZXggMzVkMGU2OS4uNTEzMTMxMWFjIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvcG9saWN5LnB5CisrKyBiL0xpYi9lbWFpbC9wb2xpY3kucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKIGZyb20gZW1haWwuaGVhZGVycmVnaXN0cnkgaW1wb3J0IEhlYWRlclJlZ2lzdHJ5IGFzIEhlYWRlclJlZ2lzdHJ5CiBmcm9tIGVtYWlsLmNvbnRlbnRtYW5hZ2VyIGltcG9ydCByYXdfZGF0YV9tYW5hZ2VyCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCiBfX2FsbF9fID0gWwogICAgICdDb21wYXQzMicsCkBAIC04Miw2ICs4Myw3IEBACiAKICAgICAiIiIKIAorICAgIG1lc3NhZ2VfZmFjdG9yeSA9IEVtYWlsTWVzc2FnZQogICAgIHV0ZjggPSBGYWxzZQogICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKICAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkgYi9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5CmluZGV4IDhkZDcxMzAuLmFhMmZiN2MgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkKKysrIGIvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weQpAQCAtMjksNiArMjksNyBAQAogIiIiIyIKIAogaW1wb3J0IGNvZGVjcworaW1wb3J0IHN5cwogZnJvbSAuIGltcG9ydCBhbGlhc2VzCiAKIF9jYWNoZSA9IHt9CkBAIC01NCw2ICs1NSw3IEBACiAgICAgIiIiCiAgICAgaWYgaXNpbnN0YW5jZShlbmNvZGluZywgYnl0ZXMpOgogICAgICAgICBlbmNvZGluZyA9IHN0cihlbmNvZGluZywgImFzY2lpIikKKwogICAgIGNoYXJzID0gW10KICAgICBwdW5jdCA9IEZhbHNlCiAgICAgZm9yIGMgaW4gZW5jb2Rpbmc6CkBAIC05Nyw2ICs5OSw4IEBACiAgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCdlbmNvZGluZ3MuJyArIG1vZG5hbWUsIGZyb21saXN0PV9pbXBvcnRfdGFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MCkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBtYXkgb2NjdXIgYmVjYXVzZSAnZW5jb2RpbmdzLihtb2RuYW1lKScgZG9lcyBub3QgZXhpc3QsCisgICAgICAgICAgICAjIG9yIGJlY2F1c2UgaXQgaW1wb3J0cyBhIG5hbWUgdGhhdCBkb2VzIG5vdCBleGlzdCAoc2VlIG1iY3MgYW5kIG9lbSkKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJyZWFrCkBAIC0xNTAsMyArMTU0LDE2IEBACiAKICMgUmVnaXN0ZXIgdGhlIHNlYXJjaF9mdW5jdGlvbiBpbiB0aGUgUHl0aG9uIGNvZGVjIHJlZ2lzdHJ5CiBjb2RlY3MucmVnaXN0ZXIoc2VhcmNoX2Z1bmN0aW9uKQorCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBkZWYgX2FsaWFzX21iY3MoZW5jb2RpbmcpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX2Jvb3Rsb2NhbGUKKyAgICAgICAgICAgIGlmIGVuY29kaW5nID09IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgZW5jb2RpbmdzLm1iY3MKKyAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmdzLm1iY3MuZ2V0cmVnZW50cnkoKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAjIEltcG9ydHMgbWF5IGZhaWwgd2hpbGUgd2UgYXJlIHNodXR0aW5nIGRvd24KKyAgICAgICAgICAgIHBhc3MKKworICAgIGNvZGVjcy5yZWdpc3RlcihfYWxpYXNfbWJjcykKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weSBiL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQppbmRleCA2N2M4MjhkLi4yZTYzYzJmIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKKysrIGIvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CkBAIC00NTgsNiArNDU4LDcgQEAKICAgICAnbWFjdHVya2lzaCcgICAgICAgICA6ICdtYWNfdHVya2lzaCcsCiAKICAgICAjIG1iY3MgY29kZWMKKyAgICAnYW5zaScgICAgICAgICAgICAgICA6ICdtYmNzJywKICAgICAnZGJjcycgICAgICAgICAgICAgICA6ICdtYmNzJywKIAogICAgICMgcHRjcDE1NCBjb2RlYwpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9vZW0ucHkgYi9MaWIvZW5jb2RpbmdzL29lbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzM0MjZiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2VuY29kaW5ncy9vZW0ucHkKQEAgLTAsMCArMSw0MSBAQAorIiIiIFB5dGhvbiAnb2VtJyBDb2RlYyBmb3IgV2luZG93cworCisiIiIKKyMgSW1wb3J0IHRoZW0gZXhwbGljaXRseSB0byBjYXVzZSBhbiBJbXBvcnRFcnJvcgorIyBvbiBub24tV2luZG93cyBzeXN0ZW1zCitmcm9tIGNvZGVjcyBpbXBvcnQgb2VtX2VuY29kZSwgb2VtX2RlY29kZQorIyBmb3IgSW5jcmVtZW50YWxEZWNvZGVyLCBJbmNyZW1lbnRhbEVuY29kZXIsIC4uLgoraW1wb3J0IGNvZGVjcworCisjIyMgQ29kZWMgQVBJcworCitlbmNvZGUgPSBvZW1fZW5jb2RlCisKK2RlZiBkZWNvZGUoaW5wdXQsIGVycm9ycz0nc3RyaWN0Jyk6CisgICAgcmV0dXJuIG9lbV9kZWNvZGUoaW5wdXQsIGVycm9ycywgVHJ1ZSkKKworY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgorICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKKyAgICAgICAgcmV0dXJuIG9lbV9lbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQorCitjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKKyAgICBfYnVmZmVyX2RlY29kZSA9IG9lbV9kZWNvZGUKKworY2xhc3MgU3RyZWFtV3JpdGVyKGNvZGVjcy5TdHJlYW1Xcml0ZXIpOgorICAgIGVuY29kZSA9IG9lbV9lbmNvZGUKKworY2xhc3MgU3RyZWFtUmVhZGVyKGNvZGVjcy5TdHJlYW1SZWFkZXIpOgorICAgIGRlY29kZSA9IG9lbV9kZWNvZGUKKworIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCisKK2RlZiBnZXRyZWdlbnRyeSgpOgorICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAorICAgICAgICBuYW1lPSdvZW0nLAorICAgICAgICBlbmNvZGU9ZW5jb2RlLAorICAgICAgICBkZWNvZGU9ZGVjb2RlLAorICAgICAgICBpbmNyZW1lbnRhbGVuY29kZXI9SW5jcmVtZW50YWxFbmNvZGVyLAorICAgICAgICBpbmNyZW1lbnRhbGRlY29kZXI9SW5jcmVtZW50YWxEZWNvZGVyLAorICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAorICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAorICAgICkKZGlmZiAtLWdpdCBhL0xpYi9lbnVtLnB5IGIvTGliL2VudW0ucHkKaW5kZXggYjg3ODdkMS4uNGJlYjE4NyAxMDA2NDQKLS0tIGEvTGliL2VudW0ucHkKKysrIGIvTGliL2VudW0ucHkKQEAgLTEsOCArMSwyMCBAQAogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gdHlwZXMgaW1wb3J0IE1hcHBpbmdQcm94eVR5cGUsIER5bmFtaWNDbGFzc0F0dHJpYnV0ZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHJlZHVjZQorZnJvbSBvcGVyYXRvciBpbXBvcnQgb3JfIGFzIF9vcl8sIGFuZF8gYXMgX2FuZF8sIHhvciwgbmVnCiAKLV9fYWxsX18gPSBbJ0VudW0nLCAnSW50RW51bScsICd1bmlxdWUnXQorIyB0cnkgX2NvbGxlY3Rpb25zIGZpcnN0IHRvIHJlZHVjZSBzdGFydHVwIGNvc3QKK3RyeToKKyAgICBmcm9tIF9jb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorCisKK19fYWxsX18gPSBbCisgICAgICAgICdFbnVtTWV0YScsCisgICAgICAgICdFbnVtJywgJ0ludEVudW0nLCAnRmxhZycsICdJbnRGbGFnJywKKyAgICAgICAgJ2F1dG8nLCAndW5pcXVlJywKKyAgICAgICAgXQogCiAKIGRlZiBfaXNfZGVzY3JpcHRvcihvYmopOgpAQCAtMjgsNyArNDAsNiBAQAogICAgICAgICAgICAgbmFtZVstMjotMV0gIT0gJ18nIGFuZAogICAgICAgICAgICAgbGVuKG5hbWUpID4gMikKIAotCiBkZWYgX21ha2VfY2xhc3NfdW5waWNrbGFibGUoY2xzKToKICAgICAiIiJNYWtlIHRoZSBnaXZlbiBjbGFzcyB1bi1waWNrbGFibGUuIiIiCiAgICAgZGVmIF9icmVha19vbl9jYWxsX3JlZHVjZShzZWxmLCBwcm90byk6CkBAIC0zNiw2ICs0NywxMyBAQAogICAgIGNscy5fX3JlZHVjZV9leF9fID0gX2JyZWFrX29uX2NhbGxfcmVkdWNlCiAgICAgY2xzLl9fbW9kdWxlX18gPSAnPHVua25vd24+JwogCitfYXV0b19udWxsID0gb2JqZWN0KCkKK2NsYXNzIGF1dG86CisgICAgIiIiCisgICAgSW5zdGFuY2VzIGFyZSByZXBsYWNlZCB3aXRoIGFuIGFwcHJvcHJpYXRlIHZhbHVlIGluIEVudW0gY2xhc3Mgc3VpdGVzLgorICAgICIiIgorICAgIHZhbHVlID0gX2F1dG9fbnVsbAorCiAKIGNsYXNzIF9FbnVtRGljdChkaWN0KToKICAgICAiIiJUcmFjayBlbnVtIG1lbWJlciBvcmRlciBhbmQgZW5zdXJlIG1lbWJlciBuYW1lcyBhcmUgbm90IHJldXNlZC4KQEAgLTQ3LDYgKzY1LDcgQEAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQogICAgICAgICBzZWxmLl9tZW1iZXJfbmFtZXMgPSBbXQorICAgICAgICBzZWxmLl9sYXN0X3ZhbHVlcyA9IFtdCiAKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CiAgICAgICAgICIiIkNoYW5nZXMgYW55dGhpbmcgbm90IGR1bmRlcmVkIG9yIG5vdCBhIGRlc2NyaXB0b3IuCkBAIC01OCwyMSArNzcsMzIgQEAKIAogICAgICAgICAiIiIKICAgICAgICAgaWYgX2lzX3N1bmRlcihrZXkpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignX25hbWVzXyBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSBFbnVtIHVzZScpCisgICAgICAgICAgICBpZiBrZXkgbm90IGluICgKKyAgICAgICAgICAgICAgICAgICAgJ19vcmRlcl8nLCAnX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXycsCisgICAgICAgICAgICAgICAgICAgICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nLCAnX21pc3NpbmdfJywKKyAgICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdfbmFtZXNfIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIEVudW0gdXNlJykKKyAgICAgICAgICAgIGlmIGtleSA9PSAnX2dlbmVyYXRlX25leHRfdmFsdWVfJzoKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsICdfZ2VuZXJhdGVfbmV4dF92YWx1ZScsIHZhbHVlKQogICAgICAgICBlbGlmIF9pc19kdW5kZXIoa2V5KToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGlmIGtleSA9PSAnX19vcmRlcl9fJzoKKyAgICAgICAgICAgICAgICBrZXkgPSAnX29yZGVyXycKICAgICAgICAgZWxpZiBrZXkgaW4gc2VsZi5fbWVtYmVyX25hbWVzOgogICAgICAgICAgICAgIyBkZXNjcmlwdG9yIG92ZXJ3cml0aW5nIGFuIGVudW0/CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0F0dGVtcHRlZCB0byByZXVzZSBrZXk6ICVyJyAlIGtleSkKICAgICAgICAgZWxpZiBub3QgX2lzX2Rlc2NyaXB0b3IodmFsdWUpOgogICAgICAgICAgICAgaWYga2V5IGluIHNlbGY6CiAgICAgICAgICAgICAgICAgIyBlbnVtIG92ZXJ3cml0aW5nIGEgZGVzY3JpcHRvcj8KLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0tleSBhbHJlYWR5IGRlZmluZWQgYXM6ICVyJyAlIHNlbGZba2V5XSkKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVyIGFscmVhZHkgZGVmaW5lZCBhczogJXInICUgKGtleSwgc2VsZltrZXldKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGF1dG8pOgorICAgICAgICAgICAgICAgIGlmIHZhbHVlLnZhbHVlID09IF9hdXRvX251bGw6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlID0gc2VsZi5fZ2VuZXJhdGVfbmV4dF92YWx1ZShrZXksIDEsIGxlbihzZWxmLl9tZW1iZXJfbmFtZXMpLCBzZWxmLl9sYXN0X3ZhbHVlc1s6XSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnZhbHVlCiAgICAgICAgICAgICBzZWxmLl9tZW1iZXJfbmFtZXMuYXBwZW5kKGtleSkKKyAgICAgICAgICAgIHNlbGYuX2xhc3RfdmFsdWVzLmFwcGVuZCh2YWx1ZSkKICAgICAgICAgc3VwZXIoKS5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQogCiAKLQogIyBEdW1teSB2YWx1ZSBmb3IgRW51bSBhcyBFbnVtTWV0YSBleHBsaWNpdGx5IGNoZWNrcyBmb3IgaXQsIGJ1dCBvZiBjb3Vyc2UKICMgdW50aWwgRW51bU1ldGEgZmluaXNoZXMgcnVubmluZyB0aGUgZmlyc3QgdGltZSB0aGUgRW51bSBjbGFzcyBkb2Vzbid0IGV4aXN0LgogIyBUaGlzIGlzIGFsc28gd2h5IHRoZXJlIGFyZSBjaGVja3MgaW4gRW51bU1ldGEgbGlrZSBgaWYgRW51bSBpcyBub3QgTm9uZWAKQEAgLTgzLDcgKzExMywxMyBAQAogICAgICIiIk1ldGFjbGFzcyBmb3IgRW51bSIiIgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBjbHMsIGJhc2VzKToKLSAgICAgICAgcmV0dXJuIF9FbnVtRGljdCgpCisgICAgICAgICMgY3JlYXRlIHRoZSBuYW1lc3BhY2UgZGljdAorICAgICAgICBlbnVtX2RpY3QgPSBfRW51bURpY3QoKQorICAgICAgICAjIGluaGVyaXQgcHJldmlvdXMgZmxhZ3MgYW5kIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyBmdW5jdGlvbgorICAgICAgICBtZW1iZXJfdHlwZSwgZmlyc3RfZW51bSA9IG1ldGFjbHMuX2dldF9taXhpbnNfKGJhc2VzKQorICAgICAgICBpZiBmaXJzdF9lbnVtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW51bV9kaWN0WydfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nXSA9IGdldGF0dHIoZmlyc3RfZW51bSwgJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXycsIE5vbmUpCisgICAgICAgIHJldHVybiBlbnVtX2RpY3QKIAogICAgIGRlZiBfX25ld19fKG1ldGFjbHMsIGNscywgYmFzZXMsIGNsYXNzZGljdCk6CiAgICAgICAgICMgYW4gRW51bSBjbGFzcyBpcyBmaW5hbCBvbmNlIGVudW1lcmF0aW9uIGl0ZW1zIGhhdmUgYmVlbiBkZWZpbmVkOyBpdApAQCAtOTYsMTIgKzEzMiwxNSBAQAogCiAgICAgICAgICMgc2F2ZSBlbnVtIGl0ZW1zIGludG8gc2VwYXJhdGUgbWFwcGluZyBzbyB0aGV5IGRvbid0IGdldCBiYWtlZCBpbnRvCiAgICAgICAgICMgdGhlIG5ldyBjbGFzcwotICAgICAgICBtZW1iZXJzID0ge2s6IGNsYXNzZGljdFtrXSBmb3IgayBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lc30KKyAgICAgICAgZW51bV9tZW1iZXJzID0ge2s6IGNsYXNzZGljdFtrXSBmb3IgayBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lc30KICAgICAgICAgZm9yIG5hbWUgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXM6CiAgICAgICAgICAgICBkZWwgY2xhc3NkaWN0W25hbWVdCiAKKyAgICAgICAgIyBhZGp1c3QgdGhlIHN1bmRlcnMKKyAgICAgICAgX29yZGVyXyA9IGNsYXNzZGljdC5wb3AoJ19vcmRlcl8nLCBOb25lKQorCiAgICAgICAgICMgY2hlY2sgZm9yIGlsbGVnYWwgZW51bSBuYW1lcyAoYW55IG90aGVycz8pCi0gICAgICAgIGludmFsaWRfbmFtZXMgPSBzZXQobWVtYmVycykgJiB7J21ybycsIH0KKyAgICAgICAgaW52YWxpZF9uYW1lcyA9IHNldChlbnVtX21lbWJlcnMpICYgeydtcm8nLCB9CiAgICAgICAgIGlmIGludmFsaWRfbmFtZXM6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVudW0gbWVtYmVyIG5hbWU6IHswfScuZm9ybWF0KAogICAgICAgICAgICAgICAgICcsJy5qb2luKGludmFsaWRfbmFtZXMpKSkKQEAgLTE0NSw3ICsxODQsNyBAQAogICAgICAgICAjIGEgY3VzdG9tIF9fbmV3X18gaXMgZG9pbmcgc29tZXRoaW5nIGZ1bmt5IHdpdGggdGhlIHZhbHVlcyAtLSBzdWNoIGFzCiAgICAgICAgICMgYXV0by1udW1iZXJpbmcgOykKICAgICAgICAgZm9yIG1lbWJlcl9uYW1lIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzOgotICAgICAgICAgICAgdmFsdWUgPSBtZW1iZXJzW21lbWJlcl9uYW1lXQorICAgICAgICAgICAgdmFsdWUgPSBlbnVtX21lbWJlcnNbbWVtYmVyX25hbWVdCiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgogICAgICAgICAgICAgICAgIGFyZ3MgPSAodmFsdWUsICkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNTksNyArMTk4LDEwIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyID0gX19uZXdfXyhlbnVtX2NsYXNzLCAqYXJncykKICAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihlbnVtX21lbWJlciwgJ192YWx1ZV8nKToKLSAgICAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIuX3ZhbHVlXyA9IG1lbWJlcl90eXBlKCphcmdzKQorICAgICAgICAgICAgICAgICAgICBpZiBtZW1iZXJfdHlwZSBpcyBvYmplY3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlci5fdmFsdWVfID0gdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSBtZW1iZXJfdHlwZSgqYXJncykKICAgICAgICAgICAgIHZhbHVlID0gZW51bV9tZW1iZXIuX3ZhbHVlXwogICAgICAgICAgICAgZW51bV9tZW1iZXIuX25hbWVfID0gbWVtYmVyX25hbWUKICAgICAgICAgICAgIGVudW1fbWVtYmVyLl9fb2JqY2xhc3NfXyA9IGVudW1fY2xhc3MKQEAgLTIwNCw2ICsyNDYsMTQgQEAKICAgICAgICAgICAgIGlmIHNhdmVfbmV3OgogICAgICAgICAgICAgICAgIGVudW1fY2xhc3MuX19uZXdfbWVtYmVyX18gPSBfX25ld19fCiAgICAgICAgICAgICBlbnVtX2NsYXNzLl9fbmV3X18gPSBFbnVtLl9fbmV3X18KKworICAgICAgICAjIHB5MyBzdXBwb3J0IGZvciBkZWZpbml0aW9uIG9yZGVyIChoZWxwcyBrZWVwIHB5Mi9weTMgY29kZSBpbiBzeW5jKQorICAgICAgICBpZiBfb3JkZXJfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShfb3JkZXJfLCBzdHIpOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSBfb3JkZXJfLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKKyAgICAgICAgICAgIGlmIF9vcmRlcl8gIT0gZW51bV9jbGFzcy5fbWVtYmVyX25hbWVzXzoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJykKKwogICAgICAgICByZXR1cm4gZW51bV9jbGFzcwogCiAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgpAQCAtMzI1LDEzICszNzUsMTkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIG1ldGFjbHMgPSBjbHMuX19jbGFzc19fCiAgICAgICAgIGJhc2VzID0gKGNscywgKSBpZiB0eXBlIGlzIE5vbmUgZWxzZSAodHlwZSwgY2xzKQorICAgICAgICBfLCBmaXJzdF9lbnVtID0gY2xzLl9nZXRfbWl4aW5zXyhiYXNlcykKICAgICAgICAgY2xhc3NkaWN0ID0gbWV0YWNscy5fX3ByZXBhcmVfXyhjbGFzc19uYW1lLCBiYXNlcykKIAogICAgICAgICAjIHNwZWNpYWwgcHJvY2Vzc2luZyBuZWVkZWQgZm9yIG5hbWVzPwogICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWVzLCBzdHIpOgogICAgICAgICAgICAgbmFtZXMgPSBuYW1lcy5yZXBsYWNlKCcsJywgJyAnKS5zcGxpdCgpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZXMsICh0dXBsZSwgbGlzdCkpIGFuZCBpc2luc3RhbmNlKG5hbWVzWzBdLCBzdHIpOgotICAgICAgICAgICAgbmFtZXMgPSBbKGUsIGkpIGZvciAoaSwgZSkgaW4gZW51bWVyYXRlKG5hbWVzLCBzdGFydCldCisgICAgICAgICAgICBvcmlnaW5hbF9uYW1lcywgbmFtZXMgPSBuYW1lcywgW10KKyAgICAgICAgICAgIGxhc3RfdmFsdWVzID0gW10KKyAgICAgICAgICAgIGZvciBjb3VudCwgbmFtZSBpbiBlbnVtZXJhdGUob3JpZ2luYWxfbmFtZXMpOgorICAgICAgICAgICAgICAgIHZhbHVlID0gZmlyc3RfZW51bS5fZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlc1s6XSkKKyAgICAgICAgICAgICAgICBsYXN0X3ZhbHVlcy5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCiAKICAgICAgICAgIyBIZXJlLCBuYW1lcyBpcyBlaXRoZXIgYW4gaXRlcmFibGUgb2YgKG5hbWUsIHZhbHVlKSBvciBhIG1hcHBpbmcuCiAgICAgICAgIGZvciBpdGVtIGluIG5hbWVzOgpAQCAtNDczLDYgKzUyOSwyMCBAQAogICAgICAgICAgICAgZm9yIG1lbWJlciBpbiBjbHMuX21lbWJlcl9tYXBfLnZhbHVlcygpOgogICAgICAgICAgICAgICAgIGlmIG1lbWJlci5fdmFsdWVfID09IHZhbHVlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtYmVyCisgICAgICAgICMgc3RpbGwgbm90IGZvdW5kIC0tIHRyeSBfbWlzc2luZ18gaG9vaworICAgICAgICByZXR1cm4gY2xzLl9taXNzaW5nXyh2YWx1ZSkKKworICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0X3ZhbHVlcyk6CisgICAgICAgIGZvciBsYXN0X3ZhbHVlIGluIHJldmVyc2VkKGxhc3RfdmFsdWVzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFzdF92YWx1ZSArIDEKKyAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21pc3NpbmdfKGNscywgdmFsdWUpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlciBpcyBub3QgYSB2YWxpZCAlcyIgJSAodmFsdWUsIGNscy5fX25hbWVfXykpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC01NDQsOCArNjE0LDIxIEBACiAgICAgICAgICAgICBzb3VyY2UgPSB2YXJzKHNvdXJjZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNvdXJjZSA9IG1vZHVsZV9nbG9iYWxzCi0gICAgICAgIG1lbWJlcnMgPSB7bmFtZTogdmFsdWUgZm9yIG5hbWUsIHZhbHVlIGluIHNvdXJjZS5pdGVtcygpCi0gICAgICAgICAgICAgICAgaWYgZmlsdGVyKG5hbWUpfQorICAgICAgICAjIFdlIHVzZSBhbiBPcmRlcmVkRGljdCBvZiBzb3J0ZWQgc291cmNlIGtleXMgc28gdGhhdCB0aGUKKyAgICAgICAgIyBfdmFsdWUybWVtYmVyX21hcCBpcyBwb3B1bGF0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgZXZlcnkgdGltZQorICAgICAgICAjIGZvciBhIGNvbnNpc3RlbnQgcmV2ZXJzZSBtYXBwaW5nIG9mIG51bWJlciB0byBuYW1lIHdoZW4gdGhlcmUKKyAgICAgICAgIyBhcmUgbXVsdGlwbGUgbmFtZXMgZm9yIHRoZSBzYW1lIG51bWJlciByYXRoZXIgdGhhbiB2YXJ5aW5nCisgICAgICAgICMgYmV0d2VlbiBydW5zIGR1ZSB0byBoYXNoIHJhbmRvbWl6YXRpb24gb2YgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5LgorICAgICAgICBtZW1iZXJzID0gWworICAgICAgICAgICAgICAgIChuYW1lLCBzb3VyY2VbbmFtZV0pCisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc291cmNlLmtleXMoKQorICAgICAgICAgICAgICAgIGlmIGZpbHRlcihuYW1lKV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBzb3J0IGJ5IHZhbHVlCisgICAgICAgICAgICBtZW1iZXJzLnNvcnQoa2V5PWxhbWJkYSB0OiAodFsxXSwgdFswXSkpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAjIHVubGVzcyBzb21lIHZhbHVlcyBhcmVuJ3QgY29tcGFyYWJsZSwgaW4gd2hpY2ggY2FzZSBzb3J0IGJ5IG5hbWUKKyAgICAgICAgICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIHQ6IHRbMF0pCiAgICAgICAgIGNscyA9IGNscyhuYW1lLCBtZW1iZXJzLCBtb2R1bGU9bW9kdWxlKQogICAgICAgICBjbHMuX19yZWR1Y2VfZXhfXyA9IF9yZWR1Y2VfZXhfYnlfbmFtZQogICAgICAgICBtb2R1bGVfZ2xvYmFscy51cGRhdGUoY2xzLl9fbWVtYmVyc19fKQpAQCAtNTYwLDYgKzY0MywxODAgQEAKIGRlZiBfcmVkdWNlX2V4X2J5X25hbWUoc2VsZiwgcHJvdG8pOgogICAgIHJldHVybiBzZWxmLm5hbWUKIAorY2xhc3MgRmxhZyhFbnVtKToKKyAgICAiIiJTdXBwb3J0IGZvciBmbGFncyIiIgorCisgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzKToKKyAgICAgICAgIiIiCisgICAgICAgIEdlbmVyYXRlIHRoZSBuZXh0IHZhbHVlIHdoZW4gbm90IGdpdmVuLgorCisgICAgICAgIG5hbWU6IHRoZSBuYW1lIG9mIHRoZSBtZW1iZXIKKyAgICAgICAgc3RhcnQ6IHRoZSBpbml0aXRhbCBzdGFydCB2YWx1ZSBvciBOb25lCisgICAgICAgIGNvdW50OiB0aGUgbnVtYmVyIG9mIGV4aXN0aW5nIG1lbWJlcnMKKyAgICAgICAgbGFzdF92YWx1ZTogdGhlIGxhc3QgdmFsdWUgYXNzaWduZWQgb3IgTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGNvdW50OgorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0IGlmIHN0YXJ0IGlzIG5vdCBOb25lIGVsc2UgMQorICAgICAgICBmb3IgbGFzdF92YWx1ZSBpbiByZXZlcnNlZChsYXN0X3ZhbHVlcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaGlnaF9iaXQgPSBfaGlnaF9iaXQobGFzdF92YWx1ZSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0ludmFsaWQgRmxhZyB2YWx1ZTogJXInICUgbGFzdF92YWx1ZSkgZnJvbSBOb25lCisgICAgICAgIHJldHVybiAyICoqIChoaWdoX2JpdCsxKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9taXNzaW5nXyhjbHMsIHZhbHVlKToKKyAgICAgICAgb3JpZ2luYWxfdmFsdWUgPSB2YWx1ZQorICAgICAgICBpZiB2YWx1ZSA8IDA6CisgICAgICAgICAgICB2YWx1ZSA9IH52YWx1ZQorICAgICAgICBwb3NzaWJsZV9tZW1iZXIgPSBjbHMuX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyh2YWx1ZSkKKyAgICAgICAgaWYgb3JpZ2luYWxfdmFsdWUgPCAwOgorICAgICAgICAgICAgcG9zc2libGVfbWVtYmVyID0gfnBvc3NpYmxlX21lbWJlcgorICAgICAgICByZXR1cm4gcG9zc2libGVfbWVtYmVyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyhjbHMsIHZhbHVlKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIGNvbXBvc2l0ZSBtZW1iZXIgaWZmIHZhbHVlIGNvbnRhaW5zIG9ubHkgbWVtYmVycy4KKyAgICAgICAgIiIiCisgICAgICAgIHBzZXVkb19tZW1iZXIgPSBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfLmdldCh2YWx1ZSwgTm9uZSkKKyAgICAgICAgaWYgcHNldWRvX21lbWJlciBpcyBOb25lOgorICAgICAgICAgICAgIyB2ZXJpZnkgYWxsIGJpdHMgYXJlIGFjY291bnRlZCBmb3IKKyAgICAgICAgICAgIF8sIGV4dHJhX2ZsYWdzID0gX2RlY29tcG9zZShjbHMsIHZhbHVlKQorICAgICAgICAgICAgaWYgZXh0cmFfZmxhZ3M6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXIgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19uYW1lX18pKQorICAgICAgICAgICAgIyBjb25zdHJ1Y3QgYSBzaW5nbGV0b24gZW51bSBwc2V1ZG8tbWVtYmVyCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gb2JqZWN0Ll9fbmV3X18oY2xzKQorICAgICAgICAgICAgcHNldWRvX21lbWJlci5fbmFtZV8gPSBOb25lCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgY2xzLl92YWx1ZTJtZW1iZXJfbWFwX1t2YWx1ZV0gPSBwc2V1ZG9fbWVtYmVyCisgICAgICAgIHJldHVybiBwc2V1ZG9fbWVtYmVyCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gb3RoZXIuX3ZhbHVlXyAmIHNlbGYuX3ZhbHVlXyA9PSBvdGhlci5fdmFsdWVfCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGlmIHNlbGYuX25hbWVfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuICc8JXMuJXM6ICVyPicgJSAoY2xzLl9fbmFtZV9fLCBzZWxmLl9uYW1lXywgc2VsZi5fdmFsdWVfKQorICAgICAgICBtZW1iZXJzLCB1bmNvdmVyZWQgPSBfZGVjb21wb3NlKGNscywgc2VsZi5fdmFsdWVfKQorICAgICAgICByZXR1cm4gJzwlcy4lczogJXI+JyAlICgKKyAgICAgICAgICAgICAgICBjbHMuX19uYW1lX18sCisgICAgICAgICAgICAgICAgJ3wnLmpvaW4oW3N0cihtLl9uYW1lXyBvciBtLl92YWx1ZV8pIGZvciBtIGluIG1lbWJlcnNdKSwKKyAgICAgICAgICAgICAgICBzZWxmLl92YWx1ZV8sCisgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIGNscyA9IHNlbGYuX19jbGFzc19fCisgICAgICAgIGlmIHNlbGYuX25hbWVfIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcycgJSAoY2xzLl9fbmFtZV9fLCBzZWxmLl9uYW1lXykKKyAgICAgICAgbWVtYmVycywgdW5jb3ZlcmVkID0gX2RlY29tcG9zZShjbHMsIHNlbGYuX3ZhbHVlXykKKyAgICAgICAgaWYgbGVuKG1lbWJlcnMpID09IDEgYW5kIG1lbWJlcnNbMF0uX25hbWVfIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gJyVzLiVyJyAlIChjbHMuX19uYW1lX18sIG1lbWJlcnNbMF0uX3ZhbHVlXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnJXMuJXMnICUgKAorICAgICAgICAgICAgICAgICAgICBjbHMuX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICd8Jy5qb2luKFtzdHIobS5fbmFtZV8gb3IgbS5fdmFsdWVfKSBmb3IgbSBpbiBtZW1iZXJzXSksCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fdmFsdWVfKQorCisgICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyB8IG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyAmIG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX194b3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBzZWxmLl9fY2xhc3NfXyk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyBeIG90aGVyLl92YWx1ZV8pCisKKyAgICBkZWYgX19pbnZlcnRfXyhzZWxmKToKKyAgICAgICAgbWVtYmVycywgdW5jb3ZlcmVkID0gX2RlY29tcG9zZShzZWxmLl9fY2xhc3NfXywgc2VsZi5fdmFsdWVfKQorICAgICAgICBpbnZlcnRlZF9tZW1iZXJzID0gWworICAgICAgICAgICAgICAgIG0gZm9yIG0gaW4gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgICAgICAgICBpZiBtIG5vdCBpbiBtZW1iZXJzIGFuZCBub3QgbS5fdmFsdWVfICYgc2VsZi5fdmFsdWVfCisgICAgICAgICAgICAgICAgXQorICAgICAgICBpbnZlcnRlZCA9IHJlZHVjZShfb3JfLCBpbnZlcnRlZF9tZW1iZXJzLCBzZWxmLl9fY2xhc3NfXygwKSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludmVydGVkKQorCisKK2NsYXNzIEludEZsYWcoaW50LCBGbGFnKToKKyAgICAiIiJTdXBwb3J0IGZvciBpbnRlZ2VyLWJhc2VkIEZsYWdzIiIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21pc3NpbmdfKGNscywgdmFsdWUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVyIGlzIG5vdCBhIHZhbGlkICVzIiAlICh2YWx1ZSwgY2xzLl9fbmFtZV9fKSkKKyAgICAgICAgbmV3X21lbWJlciA9IGNscy5fY3JlYXRlX3BzZXVkb19tZW1iZXJfKHZhbHVlKQorICAgICAgICByZXR1cm4gbmV3X21lbWJlcgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jcmVhdGVfcHNldWRvX21lbWJlcl8oY2xzLCB2YWx1ZSk6CisgICAgICAgIHBzZXVkb19tZW1iZXIgPSBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfLmdldCh2YWx1ZSwgTm9uZSkKKyAgICAgICAgaWYgcHNldWRvX21lbWJlciBpcyBOb25lOgorICAgICAgICAgICAgbmVlZF90b19jcmVhdGUgPSBbdmFsdWVdCisgICAgICAgICAgICAjIGdldCB1bmFjY291bnRlZCBmb3IgYml0cworICAgICAgICAgICAgXywgZXh0cmFfZmxhZ3MgPSBfZGVjb21wb3NlKGNscywgdmFsdWUpCisgICAgICAgICAgICAjIHRpbWVyID0gMTAKKyAgICAgICAgICAgIHdoaWxlIGV4dHJhX2ZsYWdzOgorICAgICAgICAgICAgICAgICMgdGltZXIgLT0gMQorICAgICAgICAgICAgICAgIGJpdCA9IF9oaWdoX2JpdChleHRyYV9mbGFncykKKyAgICAgICAgICAgICAgICBmbGFnX3ZhbHVlID0gMiAqKiBiaXQKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ192YWx1ZSBub3QgaW4gY2xzLl92YWx1ZTJtZW1iZXJfbWFwXyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdmFsdWUgbm90IGluIG5lZWRfdG9fY3JlYXRlCisgICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgICAgICBuZWVkX3RvX2NyZWF0ZS5hcHBlbmQoZmxhZ192YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBleHRyYV9mbGFncyA9PSAtZmxhZ192YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfZmxhZ3MgPSAwCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfZmxhZ3MgXj0gZmxhZ192YWx1ZQorICAgICAgICAgICAgZm9yIHZhbHVlIGluIHJldmVyc2VkKG5lZWRfdG9fY3JlYXRlKToKKyAgICAgICAgICAgICAgICAjIGNvbnN0cnVjdCBzaW5nbGV0b24gcHNldWRvLW1lbWJlcnMKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyID0gaW50Ll9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl9uYW1lXyA9IE5vbmUKKyAgICAgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgICAgIGNscy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdID0gcHNldWRvX21lbWJlcgorICAgICAgICByZXR1cm4gcHNldWRvX21lbWJlcgorCisgICAgZGVmIF9fb3JfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoc2VsZi5fX2NsYXNzX18sIGludCkpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyB8IHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgX19hbmRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCAoc2VsZi5fX2NsYXNzX18sIGludCkpOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLl92YWx1ZV8gJiBzZWxmLl9fY2xhc3NfXyhvdGhlcikuX3ZhbHVlXykKKworICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIChzZWxmLl9fY2xhc3NfXywgaW50KSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyBeIHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorCisgICAgX19yb3JfXyA9IF9fb3JfXworICAgIF9fcmFuZF9fID0gX19hbmRfXworICAgIF9fcnhvcl9fID0gX194b3JfXworCisgICAgZGVmIF9faW52ZXJ0X18oc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHNlbGYuX19jbGFzc19fKH5zZWxmLl92YWx1ZV8pCisgICAgICAgIHJldHVybiByZXN1bHQKKworCitkZWYgX2hpZ2hfYml0KHZhbHVlKToKKyAgICAiIiJyZXR1cm5zIGluZGV4IG9mIGhpZ2hlc3QgYml0LCBvciAtMSBpZiB2YWx1ZSBpcyB6ZXJvIG9yIG5lZ2F0aXZlIiIiCisgICAgcmV0dXJuIHZhbHVlLmJpdF9sZW5ndGgoKSAtIDEKKwogZGVmIHVuaXF1ZShlbnVtZXJhdGlvbik6CiAgICAgIiIiQ2xhc3MgZGVjb3JhdG9yIGZvciBlbnVtZXJhdGlvbnMgZW5zdXJpbmcgdW5pcXVlIG1lbWJlciB2YWx1ZXMuIiIiCiAgICAgZHVwbGljYXRlcyA9IFtdCkBAIC01NzIsMyArODI5LDQwIEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2R1cGxpY2F0ZSB2YWx1ZXMgZm91bmQgaW4gJXI6ICVzJyAlCiAgICAgICAgICAgICAgICAgKGVudW1lcmF0aW9uLCBhbGlhc19kZXRhaWxzKSkKICAgICByZXR1cm4gZW51bWVyYXRpb24KKworZGVmIF9kZWNvbXBvc2UoZmxhZywgdmFsdWUpOgorICAgICIiIkV4dHJhY3QgYWxsIG1lbWJlcnMgZnJvbSB0aGUgdmFsdWUuIiIiCisgICAgIyBfZGVjb21wb3NlIGlzIG9ubHkgY2FsbGVkIGlmIHRoZSB2YWx1ZSBpcyBub3QgbmFtZWQKKyAgICBub3RfY292ZXJlZCA9IHZhbHVlCisgICAgbmVnYXRpdmUgPSB2YWx1ZSA8IDAKKyAgICBpZiBuZWdhdGl2ZToKKyAgICAgICAgIyBvbmx5IGNoZWNrIGZvciBuYW1lZCBmbGFncworICAgICAgICBmbGFnc190b19jaGVjayA9IFsKKyAgICAgICAgICAgICAgICAobSwgdikKKyAgICAgICAgICAgICAgICBmb3IgdiwgbSBpbiBmbGFnLl92YWx1ZTJtZW1iZXJfbWFwXy5pdGVtcygpCisgICAgICAgICAgICAgICAgaWYgbS5uYW1lIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgXQorICAgIGVsc2U6CisgICAgICAgICMgY2hlY2sgZm9yIG5hbWVkIGZsYWdzIGFuZCBwb3dlcnMtb2YtdHdvIGZsYWdzCisgICAgICAgIGZsYWdzX3RvX2NoZWNrID0gWworICAgICAgICAgICAgICAgIChtLCB2KQorICAgICAgICAgICAgICAgIGZvciB2LCBtIGluIGZsYWcuX3ZhbHVlMm1lbWJlcl9tYXBfLml0ZW1zKCkKKyAgICAgICAgICAgICAgICBpZiBtLm5hbWUgaXMgbm90IE5vbmUgb3IgX3Bvd2VyX29mX3R3byh2KQorICAgICAgICAgICAgICAgIF0KKyAgICBtZW1iZXJzID0gW10KKyAgICBmb3IgbWVtYmVyLCBtZW1iZXJfdmFsdWUgaW4gZmxhZ3NfdG9fY2hlY2s6CisgICAgICAgIGlmIG1lbWJlcl92YWx1ZSBhbmQgbWVtYmVyX3ZhbHVlICYgdmFsdWUgPT0gbWVtYmVyX3ZhbHVlOgorICAgICAgICAgICAgbWVtYmVycy5hcHBlbmQobWVtYmVyKQorICAgICAgICAgICAgbm90X2NvdmVyZWQgJj0gfm1lbWJlcl92YWx1ZQorICAgIGlmIG5vdCBtZW1iZXJzIGFuZCB2YWx1ZSBpbiBmbGFnLl92YWx1ZTJtZW1iZXJfbWFwXzoKKyAgICAgICAgbWVtYmVycy5hcHBlbmQoZmxhZy5fdmFsdWUybWVtYmVyX21hcF9bdmFsdWVdKQorICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIG06IG0uX3ZhbHVlXywgcmV2ZXJzZT1UcnVlKQorICAgIGlmIGxlbihtZW1iZXJzKSA+IDEgYW5kIG1lbWJlcnNbMF0udmFsdWUgPT0gdmFsdWU6CisgICAgICAgICMgd2UgaGF2ZSB0aGUgYnJlYWtkb3duLCBkb24ndCBuZWVkIHRoZSB2YWx1ZSBtZW1iZXIgaXRzZWxmCisgICAgICAgIG1lbWJlcnMucG9wKDApCisgICAgcmV0dXJuIG1lbWJlcnMsIG5vdF9jb3ZlcmVkCisKK2RlZiBfcG93ZXJfb2ZfdHdvKHZhbHVlKToKKyAgICBpZiB2YWx1ZSA8IDE6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiB2YWx1ZSA9PSAyICoqIF9oaWdoX2JpdCh2YWx1ZSkKZGlmZiAtLWdpdCBhL0xpYi9maWxlaW5wdXQucHkgYi9MaWIvZmlsZWlucHV0LnB5CmluZGV4IGQyYjUyMDYuLjcyMWZlOWMgMTAwNjQ0Ci0tLSBhL0xpYi9maWxlaW5wdXQucHkKKysrIGIvTGliL2ZpbGVpbnB1dC5weQpAQCAtNzUsMTMgKzc1LDExIEBACiBpbXBvcnQgc3lzLCBvcwogCiBfX2FsbF9fID0gWyJpbnB1dCIsICJjbG9zZSIsICJuZXh0ZmlsZSIsICJmaWxlbmFtZSIsICJsaW5lbm8iLCAiZmlsZWxpbmVubyIsCi0gICAgICAgICAgICJpc2ZpcnN0bGluZSIsICJpc3N0ZGluIiwgIkZpbGVJbnB1dCJdCisgICAgICAgICAgICJmaWxlbm8iLCAiaXNmaXJzdGxpbmUiLCAiaXNzdGRpbiIsICJGaWxlSW5wdXQiLCAiaG9va19jb21wcmVzc2VkIiwKKyAgICAgICAgICAgImhvb2tfZW5jb2RlZCJdCiAKIF9zdGF0ZSA9IE5vbmUKIAotIyBObyBsb25nZXIgdXNlZAotREVGQVVMVF9CVUZTSVpFID0gOCoxMDI0Ci0KIGRlZiBpbnB1dChmaWxlcz1Ob25lLCBpbnBsYWNlPUZhbHNlLCBiYWNrdXA9IiIsIGJ1ZnNpemU9MCwKICAgICAgICAgICBtb2RlPSJyIiwgb3Blbmhvb2s9Tm9uZSk6CiAgICAgIiIiUmV0dXJuIGFuIGluc3RhbmNlIG9mIHRoZSBGaWxlSW5wdXQgY2xhc3MsIHdoaWNoIGNhbiBiZSBpdGVyYXRlZC4KQEAgLTIwMSw2ICsxOTksMTAgQEAKICAgICAgICAgc2VsZi5fZmlsZXMgPSBmaWxlcwogICAgICAgICBzZWxmLl9pbnBsYWNlID0gaW5wbGFjZQogICAgICAgICBzZWxmLl9iYWNrdXAgPSBiYWNrdXAKKyAgICAgICAgaWYgYnVmc2l6ZToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybignYnVmc2l6ZSBpcyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIHNlbGYuX3NhdmVzdGRvdXQgPSBOb25lCiAgICAgICAgIHNlbGYuX291dHB1dCA9IE5vbmUKICAgICAgICAgc2VsZi5fZmlsZW5hbWUgPSBOb25lCkBAIC0zOTgsOSArNDAwLDkgQEAKICAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUpCiAKIAotZGVmIGhvb2tfZW5jb2RlZChlbmNvZGluZyk6CitkZWYgaG9va19lbmNvZGVkKGVuY29kaW5nLCBlcnJvcnM9Tm9uZSk6CiAgICAgZGVmIG9wZW5ob29rKGZpbGVuYW1lLCBtb2RlKToKLSAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nKQorICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAgICAgcmV0dXJuIG9wZW5ob29rCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ZubWF0Y2gucHkgYi9MaWIvZm5tYXRjaC5weQppbmRleCA2MzMwYjBjLi5mZDNiNTE0IDEwMDY0NAotLS0gYS9MaWIvZm5tYXRjaC5weQorKysgYi9MaWIvZm5tYXRjaC5weQpAQCAtMTA2LDQgKzEwNiw0IEBACiAgICAgICAgICAgICAgICAgcmVzID0gJyVzWyVzXScgJSAocmVzLCBzdHVmZikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlcyA9IHJlcyArIHJlLmVzY2FwZShjKQotICAgIHJldHVybiByZXMgKyAnXFooP21zKScKKyAgICByZXR1cm4gcicoP3M6JXMpXFonICUgcmVzCmRpZmYgLS1naXQgYS9MaWIvZnJhY3Rpb25zLnB5IGIvTGliL2ZyYWN0aW9ucy5weQppbmRleCA5YWFiYWIzLi44MzMwMjAyIDEwMDY0NAotLS0gYS9MaWIvZnJhY3Rpb25zLnB5CisrKyBiL0xpYi9mcmFjdGlvbnMucHkKQEAgLTgxLDcgKzgxLDcgQEAKICAgICBfX3Nsb3RzX18gPSAoJ19udW1lcmF0b3InLCAnX2Rlbm9taW5hdG9yJykKIAogICAgICMgV2UncmUgaW1tdXRhYmxlLCBzbyB1c2UgX19uZXdfXyBub3QgX19pbml0X18KLSAgICBkZWYgX19uZXdfXyhjbHMsIG51bWVyYXRvcj0wLCBkZW5vbWluYXRvcj1Ob25lLCBfbm9ybWFsaXplPVRydWUpOgorICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUsICosIF9ub3JtYWxpemU9VHJ1ZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdHMgYSBSYXRpb25hbC4KIAogICAgICAgICBUYWtlcyBhIHN0cmluZyBsaWtlICczLzInIG9yICcxLjUnLCBhbm90aGVyIFJhdGlvbmFsIGluc3RhbmNlLCBhCkBAIC0xMjUsMTcgKzEyNSw5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSBudW1lcmF0b3IuZGVub21pbmF0b3IKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgogCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBmbG9hdCk6Ci0gICAgICAgICAgICAgICAgIyBFeGFjdCBjb252ZXJzaW9uIGZyb20gZmxvYXQKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IEZyYWN0aW9uLmZyb21fZmxvYXQobnVtZXJhdG9yKQotICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IHZhbHVlLl9udW1lcmF0b3IKLSAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IHZhbHVlLl9kZW5vbWluYXRvcgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCi0KLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIERlY2ltYWwpOgotICAgICAgICAgICAgICAgIHZhbHVlID0gRnJhY3Rpb24uZnJvbV9kZWNpbWFsKG51bWVyYXRvcikKLSAgICAgICAgICAgICAgICBzZWxmLl9udW1lcmF0b3IgPSB2YWx1ZS5fbnVtZXJhdG9yCi0gICAgICAgICAgICAgICAgc2VsZi5fZGVub21pbmF0b3IgPSB2YWx1ZS5fZGVub21pbmF0b3IKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIChmbG9hdCwgRGVjaW1hbCkpOgorICAgICAgICAgICAgICAgICMgRXhhY3QgY29udmVyc2lvbgorICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciwgc2VsZi5fZGVub21pbmF0b3IgPSBudW1lcmF0b3IuYXNfaW50ZWdlcl9yYXRpbygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgc3RyKToKQEAgLTIxMCwxMCArMjAyLDYgQEAKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShmLCBmbG9hdCk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzLmZyb21fZmxvYXQoKSBvbmx5IHRha2VzIGZsb2F0cywgbm90ICVyICglcykiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xzLl9fbmFtZV9fLCBmLCB0eXBlKGYpLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgbWF0aC5pc25hbihmKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvICVzLiIgJSAoZiwgY2xzLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgbWF0aC5pc2luZihmKToKLSAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVyIHRvICVzLiIgJSAoZiwgY2xzLl9fbmFtZV9fKSkKICAgICAgICAgcmV0dXJuIGNscygqZi5hc19pbnRlZ2VyX3JhdGlvKCkpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTIyNiwxOSArMjE0LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAiJXMuZnJvbV9kZWNpbWFsKCkgb25seSB0YWtlcyBEZWNpbWFscywgbm90ICVyICglcykiICUKICAgICAgICAgICAgICAgICAoY2xzLl9fbmFtZV9fLCBkZWMsIHR5cGUoZGVjKS5fX25hbWVfXykpCi0gICAgICAgIGlmIGRlYy5pc19pbmZpbml0ZSgpOgotICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigKLSAgICAgICAgICAgICAgICAiQ2Fubm90IGNvbnZlcnQgJXMgdG8gJXMuIiAlIChkZWMsIGNscy5fX25hbWVfXykpCi0gICAgICAgIGlmIGRlYy5pc19uYW4oKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbm5vdCBjb252ZXJ0ICVzIHRvICVzLiIgJSAoZGVjLCBjbHMuX19uYW1lX18pKQotICAgICAgICBzaWduLCBkaWdpdHMsIGV4cCA9IGRlYy5hc190dXBsZSgpCi0gICAgICAgIGRpZ2l0cyA9IGludCgnJy5qb2luKG1hcChzdHIsIGRpZ2l0cykpKQotICAgICAgICBpZiBzaWduOgotICAgICAgICAgICAgZGlnaXRzID0gLWRpZ2l0cwotICAgICAgICBpZiBleHAgPj0gMDoKLSAgICAgICAgICAgIHJldHVybiBjbHMoZGlnaXRzICogMTAgKiogZXhwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGNscyhkaWdpdHMsIDEwICoqIC1leHApCisgICAgICAgIHJldHVybiBjbHMoKmRlYy5hc19pbnRlZ2VyX3JhdGlvKCkpCiAKICAgICBkZWYgbGltaXRfZGVub21pbmF0b3Ioc2VsZiwgbWF4X2Rlbm9taW5hdG9yPTEwMDAwMDApOgogICAgICAgICAiIiJDbG9zZXN0IEZyYWN0aW9uIHRvIHNlbGYgd2l0aCBkZW5vbWluYXRvciBhdCBtb3N0IG1heF9kZW5vbWluYXRvci4KZGlmZiAtLWdpdCBhL0xpYi9mdHBsaWIucHkgYi9MaWIvZnRwbGliLnB5CmluZGV4IGM0MTZkODUuLjhmMzZmNTMgMTAwNjQ0Ci0tLSBhL0xpYi9mdHBsaWIucHkKKysrIGIvTGliL2Z0cGxpYi5weQpAQCAtMzYsMTMgKzM2LDEyIEBACiAjIE1vZGlmaWVkIGJ5IEdpYW1wYW9sbyBSb2RvbGEnIHRvIGFkZCBUTFMgc3VwcG9ydC4KICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgd2FybmluZ3MKIGZyb20gc29ja2V0IGltcG9ydCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVAogCi1fX2FsbF9fID0gWyJGVFAiXQorX19hbGxfXyA9IFsiRlRQIiwgImVycm9yX3JlcGx5IiwgImVycm9yX3RlbXAiLCAiZXJyb3JfcGVybSIsICJlcnJvcl9wcm90byIsCisgICAgICAgICAgICJhbGxfZXJyb3JzIl0KIAogIyBNYWdpYyBudW1iZXIgZnJvbSA8c29ja2V0Lmg+CiBNU0dfT09CID0gMHgxICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBQcm9jZXNzIGRhdGEgb3V0IG9mIGJhbmQKQEAgLTcyOSw2ICs3MjgsMTAgQEAKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CkBAIC04MjIsNyArODI1LDcgQEAKICAgICBpZiBfMTUwX3JlIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBfMTUwX3JlID0gcmUuY29tcGlsZSgKLSAgICAgICAgICAgICIxNTAgLiogXCgoXGQrKSBieXRlc1wpIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLkFTQ0lJKQorICAgICAgICAgICAgciIxNTAgLiogXCgoXGQrKSBieXRlc1wpIiwgcmUuSUdOT1JFQ0FTRSB8IHJlLkFTQ0lJKQogICAgIG0gPSBfMTUwX3JlLm1hdGNoKHJlc3ApCiAgICAgaWYgbm90IG06CiAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9MaWIvZnVuY3Rvb2xzLnB5IGIvTGliL2Z1bmN0b29scy5weQppbmRleCAyMTQ1MjNjLi45ODQ1ZGYyIDEwMDY0NAotLS0gYS9MaWIvZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi9mdW5jdG9vbHMucHkKQEAgLTIxLDYgKzIxLDcgQEAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gdHlwZXMgaW1wb3J0IE1hcHBpbmdQcm94eVR5cGUKIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha0tleURpY3Rpb25hcnkKK2Zyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKIHRyeToKICAgICBmcm9tIF90aHJlYWQgaW1wb3J0IFJMb2NrCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMzcsMjYgKzIzOCw4MyBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBQdXJlbHkgZnVuY3Rpb25hbCwgbm8gZGVzY3JpcHRvciBiZWhhdmlvdXIKLWRlZiBwYXJ0aWFsKGZ1bmMsICphcmdzLCAqKmtleXdvcmRzKToKK2NsYXNzIHBhcnRpYWw6CiAgICAgIiIiTmV3IGZ1bmN0aW9uIHdpdGggcGFydGlhbCBhcHBsaWNhdGlvbiBvZiB0aGUgZ2l2ZW4gYXJndW1lbnRzCiAgICAgYW5kIGtleXdvcmRzLgogICAgICIiIgotICAgIGlmIGhhc2F0dHIoZnVuYywgJ2Z1bmMnKToKLSAgICAgICAgYXJncyA9IGZ1bmMuYXJncyArIGFyZ3MKLSAgICAgICAgdG1wa3cgPSBmdW5jLmtleXdvcmRzLmNvcHkoKQotICAgICAgICB0bXBrdy51cGRhdGUoa2V5d29yZHMpCi0gICAgICAgIGtleXdvcmRzID0gdG1wa3cKLSAgICAgICAgZGVsIHRtcGt3Ci0gICAgICAgIGZ1bmMgPSBmdW5jLmZ1bmMKIAotICAgIGRlZiBuZXdmdW5jKCpmYXJncywgKipma2V5d29yZHMpOgotICAgICAgICBuZXdrZXl3b3JkcyA9IGtleXdvcmRzLmNvcHkoKQotICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoZmtleXdvcmRzKQotICAgICAgICByZXR1cm4gZnVuYygqKGFyZ3MgKyBmYXJncyksICoqbmV3a2V5d29yZHMpCi0gICAgbmV3ZnVuYy5mdW5jID0gZnVuYwotICAgIG5ld2Z1bmMuYXJncyA9IGFyZ3MKLSAgICBuZXdmdW5jLmtleXdvcmRzID0ga2V5d29yZHMKLSAgICByZXR1cm4gbmV3ZnVuYworICAgIF9fc2xvdHNfXyA9ICJmdW5jIiwgImFyZ3MiLCAia2V5d29yZHMiLCAiX19kaWN0X18iLCAiX193ZWFrcmVmX18iCisKKyAgICBkZWYgX19uZXdfXygqYXJncywgKiprZXl3b3Jkcyk6CisgICAgICAgIGlmIG5vdCBhcmdzOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkZXNjcmlwdG9yICdfX25ld19fJyBvZiBwYXJ0aWFsIG5lZWRzIGFuIGFyZ3VtZW50IikKKyAgICAgICAgaWYgbGVuKGFyZ3MpIDwgMjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHlwZSAncGFydGlhbCcgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikKKyAgICAgICAgY2xzLCBmdW5jLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgaWYgbm90IGNhbGxhYmxlKGZ1bmMpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBjYWxsYWJsZSIpCisgICAgICAgIGFyZ3MgPSB0dXBsZShhcmdzKQorCisgICAgICAgIGlmIGhhc2F0dHIoZnVuYywgImZ1bmMiKToKKyAgICAgICAgICAgIGFyZ3MgPSBmdW5jLmFyZ3MgKyBhcmdzCisgICAgICAgICAgICB0bXBrdyA9IGZ1bmMua2V5d29yZHMuY29weSgpCisgICAgICAgICAgICB0bXBrdy51cGRhdGUoa2V5d29yZHMpCisgICAgICAgICAgICBrZXl3b3JkcyA9IHRtcGt3CisgICAgICAgICAgICBkZWwgdG1wa3cKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLmZ1bmMKKworICAgICAgICBzZWxmID0gc3VwZXIocGFydGlhbCwgY2xzKS5fX25ld19fKGNscykKKworICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGtleXdvcmRzCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19jYWxsX18oKmFyZ3MsICoqa2V5d29yZHMpOgorICAgICAgICBpZiBub3QgYXJnczoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZGVzY3JpcHRvciAnX19jYWxsX18nIG9mIHBhcnRpYWwgbmVlZHMgYW4gYXJndW1lbnQiKQorICAgICAgICBzZWxmLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgbmV3a2V5d29yZHMgPSBzZWxmLmtleXdvcmRzLmNvcHkoKQorICAgICAgICBuZXdrZXl3b3Jkcy51cGRhdGUoa2V5d29yZHMpCisgICAgICAgIHJldHVybiBzZWxmLmZ1bmMoKnNlbGYuYXJncywgKmFyZ3MsICoqbmV3a2V5d29yZHMpCisKKyAgICBAcmVjdXJzaXZlX3JlcHIoKQorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcXVhbG5hbWUgPSB0eXBlKHNlbGYpLl9fcXVhbG5hbWVfXworICAgICAgICBhcmdzID0gW3JlcHIoc2VsZi5mdW5jKV0KKyAgICAgICAgYXJncy5leHRlbmQocmVwcih4KSBmb3IgeCBpbiBzZWxmLmFyZ3MpCisgICAgICAgIGFyZ3MuZXh0ZW5kKGYie2t9PXt2IXJ9IiBmb3IgKGssIHYpIGluIHNlbGYua2V5d29yZHMuaXRlbXMoKSkKKyAgICAgICAgaWYgdHlwZShzZWxmKS5fX21vZHVsZV9fID09ICJmdW5jdG9vbHMiOgorICAgICAgICAgICAgcmV0dXJuIGYiZnVuY3Rvb2xzLntxdWFsbmFtZX0oeycsICcuam9pbihhcmdzKX0pIgorICAgICAgICByZXR1cm4gZiJ7cXVhbG5hbWV9KHsnLCAnLmpvaW4oYXJncyl9KSIKKworICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICByZXR1cm4gdHlwZShzZWxmKSwgKHNlbGYuZnVuYywpLCAoc2VsZi5mdW5jLCBzZWxmLmFyZ3MsCisgICAgICAgICAgICAgICBzZWxmLmtleXdvcmRzIG9yIE5vbmUsIHNlbGYuX19kaWN0X18gb3IgTm9uZSkKKworICAgIGRlZiBfX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzdGF0ZSwgdHVwbGUpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhcmd1bWVudCB0byBfX3NldHN0YXRlX18gbXVzdCBiZSBhIHR1cGxlIikKKyAgICAgICAgaWYgbGVuKHN0YXRlKSAhPSA0OgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKGYiZXhwZWN0ZWQgNCBpdGVtcyBpbiBzdGF0ZSwgZ290IHtsZW4oc3RhdGUpfSIpCisgICAgICAgIGZ1bmMsIGFyZ3MsIGt3ZHMsIG5hbWVzcGFjZSA9IHN0YXRlCisgICAgICAgIGlmIChub3QgY2FsbGFibGUoZnVuYykgb3Igbm90IGlzaW5zdGFuY2UoYXJncywgdHVwbGUpIG9yCisgICAgICAgICAgIChrd2RzIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShrd2RzLCBkaWN0KSkgb3IKKyAgICAgICAgICAgKG5hbWVzcGFjZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobmFtZXNwYWNlLCBkaWN0KSkpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIHBhcnRpYWwgc3RhdGUiKQorCisgICAgICAgIGFyZ3MgPSB0dXBsZShhcmdzKSAjIGp1c3QgaW4gY2FzZSBpdCdzIGEgc3ViY2xhc3MKKyAgICAgICAgaWYga3dkcyBpcyBOb25lOgorICAgICAgICAgICAga3dkcyA9IHt9CisgICAgICAgIGVsaWYgdHlwZShrd2RzKSBpcyBub3QgZGljdDogIyBYWFggZG9lcyBpdCBuZWVkIHRvIGJlICpleGFjdGx5KiBkaWN0PworICAgICAgICAgICAga3dkcyA9IGRpY3Qoa3dkcykKKyAgICAgICAgaWYgbmFtZXNwYWNlIGlzIE5vbmU6CisgICAgICAgICAgICBuYW1lc3BhY2UgPSB7fQorCisgICAgICAgIHNlbGYuX19kaWN0X18gPSBuYW1lc3BhY2UKKyAgICAgICAgc2VsZi5mdW5jID0gZnVuYworICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCisgICAgICAgIHNlbGYua2V5d29yZHMgPSBrd2RzCiAKIHRyeToKICAgICBmcm9tIF9mdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKZGlmZiAtLWdpdCBhL0xpYi9nZW5lcmljcGF0aC5weSBiL0xpYi9nZW5lcmljcGF0aC5weQppbmRleCA2NzE0MDYxLi4zMDNiM2IzIDEwMDY0NAotLS0gYS9MaWIvZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL2dlbmVyaWNwYXRoLnB5CkBAIC02OSw2ICs2OSwxMiBAQAogZGVmIGNvbW1vbnByZWZpeChtKToKICAgICAiR2l2ZW4gYSBsaXN0IG9mIHBhdGhuYW1lcywgcmV0dXJucyB0aGUgbG9uZ2VzdCBjb21tb24gbGVhZGluZyBjb21wb25lbnQiCiAgICAgaWYgbm90IG06IHJldHVybiAnJworICAgICMgU29tZSBwZW9wbGUgcGFzcyBpbiBhIGxpc3Qgb2YgcGF0aG5hbWUgcGFydHMgdG8gb3BlcmF0ZSBpbiBhbiBPUy1hZ25vc3RpYworICAgICMgZmFzaGlvbjsgZG9uJ3QgdHJ5IHRvIHRyYW5zbGF0ZSBpbiB0aGF0IGNhc2UgYXMgdGhhdCdzIGFuIGFidXNlIG9mIHRoZQorICAgICMgQVBJIGFuZCB0aGV5IGFyZSBhbHJlYWR5IGRvaW5nIHdoYXQgdGhleSBuZWVkIHRvIGJlIE9TLWFnbm9zdGljIGFuZCBzbworICAgICMgdGhleSBtb3N0IGxpa2VseSB3b24ndCBiZSB1c2luZyBhbiBvcy5QYXRoTGlrZSBvYmplY3QgaW4gdGhlIHN1Ymxpc3RzLgorICAgIGlmIG5vdCBpc2luc3RhbmNlKG1bMF0sIChsaXN0LCB0dXBsZSkpOgorICAgICAgICBtID0gdHVwbGUobWFwKG9zLmZzcGF0aCwgbSkpCiAgICAgczEgPSBtaW4obSkKICAgICBzMiA9IG1heChtKQogICAgIGZvciBpLCBjIGluIGVudW1lcmF0ZShzMSk6CmRpZmYgLS1naXQgYS9MaWIvZ2xvYi5weSBiL0xpYi9nbG9iLnB5CmluZGV4IDE2MzMwZDguLjAwMmNkOTIgMTAwNjQ0Ci0tLSBhL0xpYi9nbG9iLnB5CisrKyBiL0xpYi9nbG9iLnB5CkBAIC0zMCwxNSArMzAsMTYgQEAKICAgICBJZiByZWN1cnNpdmUgaXMgdHJ1ZSwgdGhlIHBhdHRlcm4gJyoqJyB3aWxsIG1hdGNoIGFueSBmaWxlcyBhbmQKICAgICB6ZXJvIG9yIG1vcmUgZGlyZWN0b3JpZXMgYW5kIHN1YmRpcmVjdG9yaWVzLgogICAgICIiIgotICAgIGl0ID0gX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUpCisgICAgaXQgPSBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSwgRmFsc2UpCiAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUocGF0aG5hbWUpOgogICAgICAgICBzID0gbmV4dChpdCkgICMgc2tpcCBlbXB0eSBzdHJpbmcKICAgICAgICAgYXNzZXJ0IG5vdCBzCiAgICAgcmV0dXJuIGl0CiAKLWRlZiBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSk6CitkZWYgX2lnbG9iKHBhdGhuYW1lLCByZWN1cnNpdmUsIGRpcm9ubHkpOgogICAgIGRpcm5hbWUsIGJhc2VuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICBpZiBub3QgaGFzX21hZ2ljKHBhdGhuYW1lKToKKyAgICAgICAgYXNzZXJ0IG5vdCBkaXJvbmx5CiAgICAgICAgIGlmIGJhc2VuYW1lOgogICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKHBhdGhuYW1lKToKICAgICAgICAgICAgICAgICB5aWVsZCBwYXRobmFtZQpAQCAtNDksNDcgKzUwLDM5IEBACiAgICAgICAgIHJldHVybgogICAgIGlmIG5vdCBkaXJuYW1lOgogICAgICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShiYXNlbmFtZSk6Ci0gICAgICAgICAgICB5aWVsZCBmcm9tIGdsb2IyKGRpcm5hbWUsIGJhc2VuYW1lKQorICAgICAgICAgICAgeWllbGQgZnJvbSBfZ2xvYjIoZGlybmFtZSwgYmFzZW5hbWUsIGRpcm9ubHkpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB5aWVsZCBmcm9tIGdsb2IxKGRpcm5hbWUsIGJhc2VuYW1lKQorICAgICAgICAgICAgeWllbGQgZnJvbSBfZ2xvYjEoZGlybmFtZSwgYmFzZW5hbWUsIGRpcm9ubHkpCiAgICAgICAgIHJldHVybgogICAgICMgYG9zLnBhdGguc3BsaXQoKWAgcmV0dXJucyB0aGUgYXJndW1lbnQgaXRzZWxmIGFzIGEgZGlybmFtZSBpZiBpdCBpcyBhCiAgICAgIyBkcml2ZSBvciBVTkMgcGF0aC4gIFByZXZlbnQgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGlmIGEgZHJpdmUgb3IgVU5DIHBhdGgKICAgICAjIGNvbnRhaW5zIG1hZ2ljIGNoYXJhY3RlcnMgKGkuZS4gcidcXD9cQzonKS4KICAgICBpZiBkaXJuYW1lICE9IHBhdGhuYW1lIGFuZCBoYXNfbWFnaWMoZGlybmFtZSk6Ci0gICAgICAgIGRpcnMgPSBfaWdsb2IoZGlybmFtZSwgcmVjdXJzaXZlKQorICAgICAgICBkaXJzID0gX2lnbG9iKGRpcm5hbWUsIHJlY3Vyc2l2ZSwgVHJ1ZSkKICAgICBlbHNlOgogICAgICAgICBkaXJzID0gW2Rpcm5hbWVdCiAgICAgaWYgaGFzX21hZ2ljKGJhc2VuYW1lKToKICAgICAgICAgaWYgcmVjdXJzaXZlIGFuZCBfaXNyZWN1cnNpdmUoYmFzZW5hbWUpOgotICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMgorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBfZ2xvYjIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gZ2xvYjEKKyAgICAgICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IxCiAgICAgZWxzZToKLSAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMAorICAgICAgICBnbG9iX2luX2RpciA9IF9nbG9iMAogICAgIGZvciBkaXJuYW1lIGluIGRpcnM6Ci0gICAgICAgIGZvciBuYW1lIGluIGdsb2JfaW5fZGlyKGRpcm5hbWUsIGJhc2VuYW1lKToKKyAgICAgICAgZm9yIG5hbWUgaW4gZ2xvYl9pbl9kaXIoZGlybmFtZSwgYmFzZW5hbWUsIGRpcm9ubHkpOgogICAgICAgICAgICAgeWllbGQgb3MucGF0aC5qb2luKGRpcm5hbWUsIG5hbWUpCiAKICMgVGhlc2UgMiBoZWxwZXIgZnVuY3Rpb25zIG5vbi1yZWN1cnNpdmVseSBnbG9iIGluc2lkZSBhIGxpdGVyYWwgZGlyZWN0b3J5LgotIyBUaGV5IHJldHVybiBhIGxpc3Qgb2YgYmFzZW5hbWVzLiBgZ2xvYjFgIGFjY2VwdHMgYSBwYXR0ZXJuIHdoaWxlIGBnbG9iMGAKKyMgVGhleSByZXR1cm4gYSBsaXN0IG9mIGJhc2VuYW1lcy4gIF9nbG9iMSBhY2NlcHRzIGEgcGF0dGVybiB3aGlsZSBfZ2xvYjAKICMgdGFrZXMgYSBsaXRlcmFsIGJhc2VuYW1lIChzbyBpdCBvbmx5IGhhcyB0byBjaGVjayBmb3IgaXRzIGV4aXN0ZW5jZSkuCiAKLWRlZiBnbG9iMShkaXJuYW1lLCBwYXR0ZXJuKToKLSAgICBpZiBub3QgZGlybmFtZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBieXRlcyk6Ci0gICAgICAgICAgICBkaXJuYW1lID0gYnl0ZXMob3MuY3VyZGlyLCAnQVNDSUknKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGlybmFtZSA9IG9zLmN1cmRpcgotICAgIHRyeToKLSAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHJldHVybiBbXQorZGVmIF9nbG9iMShkaXJuYW1lLCBwYXR0ZXJuLCBkaXJvbmx5KToKKyAgICBuYW1lcyA9IGxpc3QoX2l0ZXJkaXIoZGlybmFtZSwgZGlyb25seSkpCiAgICAgaWYgbm90IF9pc2hpZGRlbihwYXR0ZXJuKToKLSAgICAgICAgbmFtZXMgPSBbeCBmb3IgeCBpbiBuYW1lcyBpZiBub3QgX2lzaGlkZGVuKHgpXQorICAgICAgICBuYW1lcyA9ICh4IGZvciB4IGluIG5hbWVzIGlmIG5vdCBfaXNoaWRkZW4oeCkpCiAgICAgcmV0dXJuIGZubWF0Y2guZmlsdGVyKG5hbWVzLCBwYXR0ZXJuKQogCi1kZWYgZ2xvYjAoZGlybmFtZSwgYmFzZW5hbWUpOgorZGVmIF9nbG9iMChkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSk6CiAgICAgaWYgbm90IGJhc2VuYW1lOgogICAgICAgICAjIGBvcy5wYXRoLnNwbGl0KClgIHJldHVybnMgYW4gZW1wdHkgYmFzZW5hbWUgZm9yIHBhdGhzIGVuZGluZyB3aXRoIGEKICAgICAgICAgIyBkaXJlY3Rvcnkgc2VwYXJhdG9yLiAgJ3EqeC8nIHNob3VsZCBtYXRjaCBvbmx5IGRpcmVjdG9yaWVzLgpAQCAtMTAwLDMwICs5Myw0OSBAQAogICAgICAgICAgICAgcmV0dXJuIFtiYXNlbmFtZV0KICAgICByZXR1cm4gW10KIAorIyBGb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBub3QgcHVibGljIGJ1dCBjYW4gYmUgdXNlZCBieSB0aGlyZC1wYXJ0eSBjb2RlLgorCitkZWYgZ2xvYjAoZGlybmFtZSwgcGF0dGVybik6CisgICAgcmV0dXJuIF9nbG9iMChkaXJuYW1lLCBwYXR0ZXJuLCBGYWxzZSkKKworZGVmIGdsb2IxKGRpcm5hbWUsIHBhdHRlcm4pOgorICAgIHJldHVybiBfZ2xvYjEoZGlybmFtZSwgcGF0dGVybiwgRmFsc2UpCisKICMgVGhpcyBoZWxwZXIgZnVuY3Rpb24gcmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsCiAjIGRpcmVjdG9yeS4KIAotZGVmIGdsb2IyKGRpcm5hbWUsIHBhdHRlcm4pOgorZGVmIF9nbG9iMihkaXJuYW1lLCBwYXR0ZXJuLCBkaXJvbmx5KToKICAgICBhc3NlcnQgX2lzcmVjdXJzaXZlKHBhdHRlcm4pCiAgICAgeWllbGQgcGF0dGVybls6MF0KLSAgICB5aWVsZCBmcm9tIF9ybGlzdGRpcihkaXJuYW1lKQorICAgIHlpZWxkIGZyb20gX3JsaXN0ZGlyKGRpcm5hbWUsIGRpcm9ubHkpCiAKLSMgUmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KLWRlZiBfcmxpc3RkaXIoZGlybmFtZSk6CisjIElmIGRpcm9ubHkgaXMgZmFsc2UsIHlpZWxkcyBhbGwgZmlsZSBuYW1lcyBpbnNpZGUgYSBkaXJlY3RvcnkuCisjIElmIGRpcm9ubHkgaXMgdHJ1ZSwgeWllbGRzIG9ubHkgZGlyZWN0b3J5IG5hbWVzLgorZGVmIF9pdGVyZGlyKGRpcm5hbWUsIGRpcm9ubHkpOgogICAgIGlmIG5vdCBkaXJuYW1lOgogICAgICAgICBpZiBpc2luc3RhbmNlKGRpcm5hbWUsIGJ5dGVzKToKICAgICAgICAgICAgIGRpcm5hbWUgPSBieXRlcyhvcy5jdXJkaXIsICdBU0NJSScpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaXJuYW1lID0gb3MuY3VyZGlyCiAgICAgdHJ5OgotICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlybmFtZSkKLSAgICBleGNlcHQgb3MuZXJyb3I6CisgICAgICAgIHdpdGggb3Muc2NhbmRpcihkaXJuYW1lKSBhcyBpdDoKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBpdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkaXJvbmx5IG9yIGVudHJ5LmlzX2RpcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZW50cnkubmFtZQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIHJldHVybgorCisjIFJlY3Vyc2l2ZWx5IHlpZWxkcyByZWxhdGl2ZSBwYXRobmFtZXMgaW5zaWRlIGEgbGl0ZXJhbCBkaXJlY3RvcnkuCitkZWYgX3JsaXN0ZGlyKGRpcm5hbWUsIGRpcm9ubHkpOgorICAgIG5hbWVzID0gbGlzdChfaXRlcmRpcihkaXJuYW1lLCBkaXJvbmx5KSkKICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgaWYgbm90IF9pc2hpZGRlbih4KToKICAgICAgICAgICAgIHlpZWxkIHgKICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgeCkgaWYgZGlybmFtZSBlbHNlIHgKLSAgICAgICAgICAgIGZvciB5IGluIF9ybGlzdGRpcihwYXRoKToKKyAgICAgICAgICAgIGZvciB5IGluIF9ybGlzdGRpcihwYXRoLCBkaXJvbmx5KToKICAgICAgICAgICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4oeCwgeSkKIAogCmRpZmYgLS1naXQgYS9MaWIvZ3ppcC5weSBiL0xpYi9nemlwLnB5CmluZGV4IGRhNDQ3OWUuLjc2YWI0OTcgMTAwNjQ0Ci0tLSBhL0xpYi9nemlwLnB5CisrKyBiL0xpYi9nemlwLnB5CkBAIC00OSw3ICs0OSw3IEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnbmV3bGluZScgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCiAKICAgICBnel9tb2RlID0gbW9kZS5yZXBsYWNlKCJ0IiwgIiIpCi0gICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgYmluYXJ5X2ZpbGUgPSBHemlwRmlsZShmaWxlbmFtZSwgZ3pfbW9kZSwgY29tcHJlc3NsZXZlbCkKICAgICBlbGlmIGhhc2F0dHIoZmlsZW5hbWUsICJyZWFkIikgb3IgaGFzYXR0cihmaWxlbmFtZSwgIndyaXRlIik6CiAgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoTm9uZSwgZ3pfbW9kZSwgY29tcHJlc3NsZXZlbCwgZmlsZW5hbWUpCkBAIC0xNjUsNiArMTY1LDggQEAKICAgICAgICAgICAgIGZpbGVuYW1lID0gZ2V0YXR0cihmaWxlb2JqLCAnbmFtZScsICcnKQogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAnJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5mc3BhdGgoZmlsZW5hbWUpCiAgICAgICAgIGlmIG1vZGUgaXMgTm9uZToKICAgICAgICAgICAgIG1vZGUgPSBnZXRhdHRyKGZpbGVvYmosICdtb2RlJywgJ3JiJykKIApAQCAtMzU3LDEwICszNTksMTAgQEAKICAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYub2Zmc2V0OgogICAgICAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IoJ05lZ2F0aXZlIHNlZWsgaW4gd3JpdGUgbW9kZScpCiAgICAgICAgICAgICBjb3VudCA9IG9mZnNldCAtIHNlbGYub2Zmc2V0Ci0gICAgICAgICAgICBjaHVuayA9IGJ5dGVzKDEwMjQpCisgICAgICAgICAgICBjaHVuayA9IGInXDAnICogMTAyNAogICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnQgLy8gMTAyNCk6CiAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShjaHVuaykKLSAgICAgICAgICAgIHNlbGYud3JpdGUoYnl0ZXMoY291bnQgJSAxMDI0KSkKKyAgICAgICAgICAgIHNlbGYud3JpdGUoYidcMCcgKiAoY291bnQgJSAxMDI0KSkKICAgICAgICAgZWxpZiBzZWxmLm1vZGUgPT0gUkVBRDoKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlci5zZWVrKG9mZnNldCwgd2hlbmNlKQpkaWZmIC0tZ2l0IGEvTGliL2hhc2hsaWIucHkgYi9MaWIvaGFzaGxpYi5weQppbmRleCAzMTZjZWNlLi4wNTNhN2FkIDEwMDY0NAotLS0gYS9MaWIvaGFzaGxpYi5weQorKysgYi9MaWIvaGFzaGxpYi5weQpAQCAtNCwxNCArNCwxNSBAQAogCiBfX2RvY19fID0gIiIiaGFzaGxpYiBtb2R1bGUgLSBBIGNvbW1vbiBpbnRlcmZhY2UgdG8gbWFueSBoYXNoIGZ1bmN0aW9ucy4KIAotbmV3KG5hbWUsIGRhdGE9YicnKSAtIHJldHVybnMgYSBuZXcgaGFzaCBvYmplY3QgaW1wbGVtZW50aW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGhhc2ggZnVuY3Rpb247IGluaXRpYWxpemluZyB0aGUgaGFzaAotICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBnaXZlbiBiaW5hcnkgZGF0YS4KK25ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpIC0gcmV0dXJucyBhIG5ldyBoYXNoIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGhhc2ggZnVuY3Rpb247IGluaXRpYWxpemluZyB0aGUgaGFzaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyB0aGUgZ2l2ZW4gYmluYXJ5IGRhdGEuCiAKIE5hbWVkIGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyBhcmUgYWxzbyBhdmFpbGFibGUsIHRoZXNlIGFyZSBmYXN0ZXIKIHRoYW4gdXNpbmcgbmV3KG5hbWUpOgogCi1tZDUoKSwgc2hhMSgpLCBzaGEyMjQoKSwgc2hhMjU2KCksIHNoYTM4NCgpLCBhbmQgc2hhNTEyKCkKK21kNSgpLCBzaGExKCksIHNoYTIyNCgpLCBzaGEyNTYoKSwgc2hhMzg0KCksIHNoYTUxMigpLCBibGFrZTJiKCksIGJsYWtlMnMoKSwKK3NoYTNfMjI0LCBzaGEzXzI1Niwgc2hhM18zODQsIHNoYTNfNTEyLCBzaGFrZV8xMjgsIGFuZCBzaGFrZV8yNTYuCiAKIE1vcmUgYWxnb3JpdGhtcyBtYXkgYmUgYXZhaWxhYmxlIG9uIHlvdXIgcGxhdGZvcm0gYnV0IHRoZSBhYm92ZSBhcmUgZ3VhcmFudGVlZAogdG8gZXhpc3QuICBTZWUgdGhlIGFsZ29yaXRobXNfZ3VhcmFudGVlZCBhbmQgYWxnb3JpdGhtc19hdmFpbGFibGUgYXR0cmlidXRlcwpAQCAtNTQsNyArNTUsMTEgQEAKIAogIyBUaGlzIHR1cGxlIGFuZCBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKCkgbXVzdCBiZSBtb2RpZmllZCBpZiBhIG5ldwogIyBhbHdheXMgYXZhaWxhYmxlIGFsZ29yaXRobSBpcyBhZGRlZC4KLV9fYWx3YXlzX3N1cHBvcnRlZCA9ICgnbWQ1JywgJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJykKK19fYWx3YXlzX3N1cHBvcnRlZCA9ICgnbWQ1JywgJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAnYmxha2UyYicsICdibGFrZTJzJywKKyAgICAgICAgICAgICAgICAgICAgICAnc2hhM18yMjQnLCAnc2hhM18yNTYnLCAnc2hhM18zODQnLCAnc2hhM181MTInLAorICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2JykKKwogCiBhbGdvcml0aG1zX2d1YXJhbnRlZWQgPSBzZXQoX19hbHdheXNfc3VwcG9ydGVkKQogYWxnb3JpdGhtc19hdmFpbGFibGUgPSBzZXQoX19hbHdheXNfc3VwcG9ydGVkKQpAQCAtODUsNiArOTAsMTkgQEAKICAgICAgICAgICAgIGltcG9ydCBfc2hhNTEyCiAgICAgICAgICAgICBjYWNoZVsnU0hBMzg0J10gPSBjYWNoZVsnc2hhMzg0J10gPSBfc2hhNTEyLnNoYTM4NAogICAgICAgICAgICAgY2FjaGVbJ1NIQTUxMiddID0gY2FjaGVbJ3NoYTUxMiddID0gX3NoYTUxMi5zaGE1MTIKKyAgICAgICAgZWxpZiBuYW1lIGluICgnYmxha2UyYicsICdibGFrZTJzJyk6CisgICAgICAgICAgICBpbXBvcnQgX2JsYWtlMgorICAgICAgICAgICAgY2FjaGVbJ2JsYWtlMmInXSA9IF9ibGFrZTIuYmxha2UyYgorICAgICAgICAgICAgY2FjaGVbJ2JsYWtlMnMnXSA9IF9ibGFrZTIuYmxha2UycworICAgICAgICBlbGlmIG5hbWUgaW4geydzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ3NoYWtlXzEyOCcsICdzaGFrZV8yNTYnfToKKyAgICAgICAgICAgIGltcG9ydCBfc2hhMworICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMjI0J10gPSBfc2hhMy5zaGEzXzIyNAorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMjU2J10gPSBfc2hhMy5zaGEzXzI1NgorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfMzg0J10gPSBfc2hhMy5zaGEzXzM4NAorICAgICAgICAgICAgY2FjaGVbJ3NoYTNfNTEyJ10gPSBfc2hhMy5zaGEzXzUxMgorICAgICAgICAgICAgY2FjaGVbJ3NoYWtlXzEyOCddID0gX3NoYTMuc2hha2VfMTI4CisgICAgICAgICAgICBjYWNoZVsnc2hha2VfMjU2J10gPSBfc2hhMy5zaGFrZV8yNTYKICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgIHBhc3MgICMgbm8gZXh0ZW5zaW9uIG1vZHVsZSwgdGhpcyBoYXNoIGlzIHVuc3VwcG9ydGVkLgogCkBAIC05Niw2ICsxMTQsOSBAQAogCiAKIGRlZiBfX2dldF9vcGVuc3NsX2NvbnN0cnVjdG9yKG5hbWUpOgorICAgIGlmIG5hbWUgaW4geydibGFrZTJiJywgJ2JsYWtlMnMnfToKKyAgICAgICAgIyBQcmVmZXIgb3VyIGJsYWtlMiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkKICAgICB0cnk6CiAgICAgICAgIGYgPSBnZXRhdHRyKF9oYXNobGliLCAnb3BlbnNzbF8nICsgbmFtZSkKICAgICAgICAgIyBBbGxvdyB0aGUgQyBtb2R1bGUgdG8gcmFpc2UgVmFsdWVFcnJvci4gIFRoZSBmdW5jdGlvbiB3aWxsIGJlCkBAIC0xMDcsMTcgKzEyOCwyMyBAQAogICAgICAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKQogCiAKLWRlZiBfX3B5X25ldyhuYW1lLCBkYXRhPWInJyk6CitkZWYgX19weV9uZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKToKKyAgICAiIiJuZXcobmFtZSwgZGF0YT1iJycsICoqa3dhcmdzKSAtIFJldHVybiBhIG5ldyBoYXNoaW5nIG9iamVjdCB1c2luZyB0aGUKKyAgICBuYW1lZCBhbGdvcml0aG07IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBkYXRhICh3aGljaCBtdXN0IGJlIGJ5dGVzKS4KKyAgICAiIiIKKyAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKShkYXRhLCAqKmt3YXJncykKKworCitkZWYgX19oYXNoX25ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpOgogICAgICIiIm5ldyhuYW1lLCBkYXRhPWInJykgLSBSZXR1cm4gYSBuZXcgaGFzaGluZyBvYmplY3QgdXNpbmcgdGhlIG5hbWVkIGFsZ29yaXRobTsKICAgICBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggZGF0YSAod2hpY2ggbXVzdCBiZSBieXRlcykuCiAgICAgIiIiCi0gICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkoZGF0YSkKLQotCi1kZWYgX19oYXNoX25ldyhuYW1lLCBkYXRhPWInJyk6Ci0gICAgIiIibmV3KG5hbWUsIGRhdGE9YicnKSAtIFJldHVybiBhIG5ldyBoYXNoaW5nIG9iamVjdCB1c2luZyB0aGUgbmFtZWQgYWxnb3JpdGhtOwotICAgIG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBkYXRhICh3aGljaCBtdXN0IGJlIGJ5dGVzKS4KLSAgICAiIiIKKyAgICBpZiBuYW1lIGluIHsnYmxha2UyYicsICdibGFrZTJzJ306CisgICAgICAgICMgUHJlZmVyIG91ciBibGFrZTIgaW1wbGVtZW50YXRpb24uCisgICAgICAgICMgT3BlblNTTCAxLjEuMCBjb21lcyB3aXRoIGEgbGltaXRlZCBpbXBsZW1lbnRhdGlvbiBvZiBibGFrZTJiL3MuCisgICAgICAgICMgSXQgZG9lcyBuZWl0aGVyIHN1cHBvcnQga2V5ZWQgYmxha2UyIG5vciBhZHZhbmNlZCBmZWF0dXJlcyBsaWtlCisgICAgICAgICMgc2FsdCwgcGVyc29uYWwsIHRyZWUgaGFzaGluZyBvciBTU0UuCisgICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEsICoqa3dhcmdzKQogICAgIHRyeToKICAgICAgICAgcmV0dXJuIF9oYXNobGliLm5ldyhuYW1lLCBkYXRhKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpAQCAtMjAyLDYgKzIyOSwxMiBAQAogCiAgICAgICAgIHJldHVybiBka2V5Wzpka2xlbl0KIAordHJ5OgorICAgICMgT3BlblNTTCdzIHNjcnlwdCByZXF1aXJlcyBPcGVuU1NMIDEuMSsKKyAgICBmcm9tIF9oYXNobGliIGltcG9ydCBzY3J5cHQKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCisKIAogZm9yIF9fZnVuY19uYW1lIGluIF9fYWx3YXlzX3N1cHBvcnRlZDoKICAgICAjIHRyeSB0aGVtIGFsbCwgc29tZSBtYXkgbm90IHdvcmsgZHVlIHRvIHRoZSBPcGVuU1NMCkBAIC0yMTIsNiArMjQ1LDcgQEAKICAgICAgICAgaW1wb3J0IGxvZ2dpbmcKICAgICAgICAgbG9nZ2luZy5leGNlcHRpb24oJ2NvZGUgZm9yIGhhc2ggJXMgd2FzIG5vdCBmb3VuZC4nLCBfX2Z1bmNfbmFtZSkKIAorCiAjIENsZWFudXAgbG9jYWxzKCkKIGRlbCBfX2Fsd2F5c19zdXBwb3J0ZWQsIF9fZnVuY19uYW1lLCBfX2dldF9oYXNoCiBkZWwgX19weV9uZXcsIF9faGFzaF9uZXcsIF9fZ2V0X29wZW5zc2xfY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL0xpYi9obWFjLnB5IGIvTGliL2htYWMucHkKaW5kZXggNzc3ODVhMi4uMTIxMDI5YSAxMDA2NDQKLS0tIGEvTGliL2htYWMucHkKKysrIGIvTGliL2htYWMucHkKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgaWYgbGVuKGtleSkgPiBibG9ja3NpemU6CiAgICAgICAgICAgICBrZXkgPSBzZWxmLmRpZ2VzdF9jb25zKGtleSkuZGlnZXN0KCkKIAotICAgICAgICBrZXkgPSBrZXkgKyBieXRlcyhibG9ja3NpemUgLSBsZW4oa2V5KSkKKyAgICAgICAga2V5ID0ga2V5LmxqdXN0KGJsb2Nrc2l6ZSwgYidcMCcpCiAgICAgICAgIHNlbGYub3V0ZXIudXBkYXRlKGtleS50cmFuc2xhdGUodHJhbnNfNUMpKQogICAgICAgICBzZWxmLmlubmVyLnVwZGF0ZShrZXkudHJhbnNsYXRlKHRyYW5zXzM2KSkKICAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2h0bWwvcGFyc2VyLnB5IGIvTGliL2h0bWwvcGFyc2VyLnB5CmluZGV4IGI3ODFjNjMuLmVmODY5YmMgMTAwNjQ0Ci0tLSBhL0xpYi9odG1sL3BhcnNlci5weQorKysgYi9MaWIvaHRtbC9wYXJzZXIucHkKQEAgLTM0LDcgKzM0LDcgQEAKICMgICAgIGV4cGxvZGUsIHNvIGRvbid0IGRvIGl0LgogIyBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW9wZW4tc3RhdGUKICMgYW5kIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI3RhZy1uYW1lLXN0YXRlCi10YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZSgnKFthLXpBLVpdW15cdFxuXHJcZiAvPlx4MDBdKikoPzpcc3wvKD8hPikpKicpCit0YWdmaW5kX3RvbGVyYW50ID0gcmUuY29tcGlsZShyJyhbYS16QS1aXVteXHRcblxyXGYgLz5ceDAwXSopKD86XHN8Lyg/IT4pKSonKQogYXR0cmZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKAogICAgIHInKCg/PD1bXCciXHMvXSlbXlxzLz5dW15ccy89Pl0qKShccyo9K1xzKicKICAgICByJyhcJ1teXCddKlwnfCJbXiJdKiJ8KD8hW1wnIl0pW14+XHNdKikpPyg/OlxzfC8oPyE+KSkqJykKQEAgLTU2LDcgKzU2LDcgQEAKIGVuZGVuZHRhZyA9IHJlLmNvbXBpbGUoJz4nKQogIyB0aGUgSFRNTCA1IHNwZWMsIHNlY3Rpb24gOC4xLjIuMiwgZG9lc24ndCBhbGxvdyBzcGFjZXMgYmV0d2VlbgogIyA8LyBhbmQgdGhlIHRhZyBuYW1lLCBzbyBtYXliZSB0aGlzIHNob3VsZCBiZSBmaXhlZAotZW5kdGFnZmluZCA9IHJlLmNvbXBpbGUoJzwvXHMqKFthLXpBLVpdWy0uYS16QS1aMC05Ol9dKilccyo+JykKK2VuZHRhZ2ZpbmQgPSByZS5jb21waWxlKHInPC9ccyooW2EtekEtWl1bLS5hLXpBLVowLTk6X10qKVxzKj4nKQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY2xpZW50LnB5IGIvTGliL2h0dHAvY2xpZW50LnB5CmluZGV4IDM1MmMxMDEuLmE4ZTU5YjkgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2NsaWVudC5weQorKysgYi9MaWIvaHR0cC9jbGllbnQucHkKQEAgLTEsNCArMSw0IEBACi0iIiJIVFRQLzEuMSBjbGllbnQgbGlicmFyeQorciIiIkhUVFAvMS4xIGNsaWVudCBsaWJyYXJ5CiAKIDxpbnRybyBzdHVmZiBnb2VzIGhlcmU+CiA8b3RoZXIgc3R1ZmYsIHRvbz4KQEAgLTQyMCw2ICs0MjAsNyBAQAogICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCiAKICAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgICIiIkFsd2F5cyByZXR1cm5zIFRydWUiIiIKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICMgRW5kIG9mICJyYXcgc3RyZWFtIiBtZXRob2RzCkBAIC00NjcsNiArNDY4LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gcwogCiAgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSBiIGFuZCByZXR1cm4gdGhlIG51bWJlcgorICAgICAgICBvZiBieXRlcyByZWFkLgorICAgICAgICAiIiIKKwogICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gMAogCkBAIC03MDYsNiArNzExLDE3IEBACiAgICAgICAgIHJldHVybiBzZWxmLmZwLmZpbGVubygpCiAKICAgICBkZWYgZ2V0aGVhZGVyKHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICcnJ1JldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBoZWFkZXIgbWF0Y2hpbmcgKm5hbWUqLgorCisgICAgICAgIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBtYXRjaGluZyBoZWFkZXJzLCB0aGUgdmFsdWVzIGFyZQorICAgICAgICBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIHN0cmluZyBzZXBhcmF0ZWQgYnkgY29tbWFzIGFuZCBzcGFjZXMuCisKKyAgICAgICAgSWYgbm8gbWF0Y2hpbmcgaGVhZGVyIGlzIGZvdW5kLCByZXR1cm5zICpkZWZhdWx0KiBvciBOb25lIGlmCisgICAgICAgIHRoZSAqZGVmYXVsdCogaXMgbm90IHNwZWNpZmllZC4KKworICAgICAgICBJZiB0aGUgaGVhZGVycyBhcmUgdW5rbm93biwgcmFpc2VzIGh0dHAuY2xpZW50LlJlc3BvbnNlTm90UmVhZHkuCisKKyAgICAgICAgJycnCiAgICAgICAgIGlmIHNlbGYuaGVhZGVycyBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgUmVzcG9uc2VOb3RSZWFkeSgpCiAgICAgICAgIGhlYWRlcnMgPSBzZWxmLmhlYWRlcnMuZ2V0X2FsbChuYW1lKSBvciBkZWZhdWx0CkBAIC03MjgsMTIgKzc0NCw0NSBAQAogICAgICMgRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQtc3R5bGUgdXJsbGliIHJlc3BvbnNlcy4KIAogICAgIGRlZiBpbmZvKHNlbGYpOgorICAgICAgICAnJydSZXR1cm5zIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyBtaW1ldG9vbHMuTWVzc2FnZSBjb250YWluaW5nCisgICAgICAgIG1ldGEtaW5mb3JtYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBVUkwuCisKKyAgICAgICAgV2hlbiB0aGUgbWV0aG9kIGlzIEhUVFAsIHRoZXNlIGhlYWRlcnMgYXJlIHRob3NlIHJldHVybmVkIGJ5CisgICAgICAgIHRoZSBzZXJ2ZXIgYXQgdGhlIGhlYWQgb2YgdGhlIHJldHJpZXZlZCBIVE1MIHBhZ2UgKGluY2x1ZGluZworICAgICAgICBDb250ZW50LUxlbmd0aCBhbmQgQ29udGVudC1UeXBlKS4KKworICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgRlRQLCBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlciB3aWxsIGJlCisgICAgICAgIHByZXNlbnQgaWYgKGFzIGlzIG5vdyB1c3VhbCkgdGhlIHNlcnZlciBwYXNzZWQgYmFjayBhIGZpbGUKKyAgICAgICAgbGVuZ3RoIGluIHJlc3BvbnNlIHRvIHRoZSBGVFAgcmV0cmlldmFsIHJlcXVlc3QuIEEKKyAgICAgICAgQ29udGVudC1UeXBlIGhlYWRlciB3aWxsIGJlIHByZXNlbnQgaWYgdGhlIE1JTUUgdHlwZSBjYW4gYmUKKyAgICAgICAgZ3Vlc3NlZC4KKworICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgbG9jYWwtZmlsZSwgcmV0dXJuZWQgaGVhZGVycyB3aWxsIGluY2x1ZGUKKyAgICAgICAgYSBEYXRlIHJlcHJlc2VudGluZyB0aGUgZmlsZSdzIGxhc3QtbW9kaWZpZWQgdGltZSwgYQorICAgICAgICBDb250ZW50LUxlbmd0aCBnaXZpbmcgZmlsZSBzaXplLCBhbmQgYSBDb250ZW50LVR5cGUKKyAgICAgICAgY29udGFpbmluZyBhIGd1ZXNzIGF0IHRoZSBmaWxlJ3MgdHlwZS4gU2VlIGFsc28gdGhlCisgICAgICAgIGRlc2NyaXB0aW9uIG9mIHRoZSBtaW1ldG9vbHMgbW9kdWxlLgorCisgICAgICAgICcnJwogICAgICAgICByZXR1cm4gc2VsZi5oZWFkZXJzCiAKICAgICBkZWYgZ2V0dXJsKHNlbGYpOgorICAgICAgICAnJydSZXR1cm4gdGhlIHJlYWwgVVJMIG9mIHRoZSBwYWdlLgorCisgICAgICAgIEluIHNvbWUgY2FzZXMsIHRoZSBIVFRQIHNlcnZlciByZWRpcmVjdHMgYSBjbGllbnQgdG8gYW5vdGhlcgorICAgICAgICBVUkwuIFRoZSB1cmxvcGVuKCkgZnVuY3Rpb24gaGFuZGxlcyB0aGlzIHRyYW5zcGFyZW50bHksIGJ1dCBpbgorICAgICAgICBzb21lIGNhc2VzIHRoZSBjYWxsZXIgbmVlZHMgdG8ga25vdyB3aGljaCBVUkwgdGhlIGNsaWVudCB3YXMKKyAgICAgICAgcmVkaXJlY3RlZCB0by4gVGhlIGdldHVybCgpIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBnZXQgYXQgdGhpcworICAgICAgICByZWRpcmVjdGVkIFVSTC4KKworICAgICAgICAnJycKICAgICAgICAgcmV0dXJuIHNlbGYudXJsCiAKICAgICBkZWYgZ2V0Y29kZShzZWxmKToKKyAgICAgICAgJycnUmV0dXJuIHRoZSBIVFRQIHN0YXR1cyBjb2RlIHRoYXQgd2FzIHNlbnQgd2l0aCB0aGUgcmVzcG9uc2UsCisgICAgICAgIG9yIE5vbmUgaWYgdGhlIFVSTCBpcyBub3QgYW4gSFRUUCBVUkwuCisKKyAgICAgICAgJycnCiAgICAgICAgIHJldHVybiBzZWxmLnN0YXR1cwogCiBjbGFzcyBIVFRQQ29ubmVjdGlvbjoKQEAgLTc0Niw2ICs3OTUsNDQgQEAKICAgICBhdXRvX29wZW4gPSAxCiAgICAgZGVidWdsZXZlbCA9IDAKIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2lzX3RleHRJTyhzdHJlYW0pOgorICAgICAgICAiIiJUZXN0IHdoZXRoZXIgYSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGEgdGV4dCBvciBhIGJpbmFyeSBzdHJlYW0uCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaXNpbnN0YW5jZShzdHJlYW0sIGlvLlRleHRJT0Jhc2UpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9nZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKToKKyAgICAgICAgIiIiR2V0IHRoZSBjb250ZW50LWxlbmd0aCBiYXNlZCBvbiB0aGUgYm9keS4KKworICAgICAgICBJZiB0aGUgYm9keSBpcyBOb25lLCB3ZSBzZXQgQ29udGVudC1MZW5ndGg6IDAgZm9yIG1ldGhvZHMgdGhhdCBleHBlY3QKKyAgICAgICAgYSBib2R5IChSRkMgNzIzMCwgU2VjdGlvbiAzLjMuMikuIFdlIGFsc28gc2V0IHRoZSBDb250ZW50LUxlbmd0aCBmb3IKKyAgICAgICAgYW55IG1ldGhvZCBpZiB0aGUgYm9keSBpcyBhIHN0ciBvciBieXRlcy1saWtlIG9iamVjdCBhbmQgbm90IGEgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGJvZHkgaXMgTm9uZToKKyAgICAgICAgICAgICMgZG8gYW4gZXhwbGljaXQgY2hlY2sgZm9yIG5vdCBOb25lIGhlcmUgdG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgICAgICMgYmV0d2VlbiB1bnNldCBhbmQgc2V0IGJ1dCBlbXB0eQorICAgICAgICAgICAgaWYgbWV0aG9kLnVwcGVyKCkgaW4gX01FVEhPRFNfRVhQRUNUSU5HX0JPRFk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBpZiBoYXNhdHRyKGJvZHksICdyZWFkJyk6CisgICAgICAgICAgICAjIGZpbGUtbGlrZSBvYmplY3QuCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgZG9lcyBpdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciBwcm90b2NvbCAoYnl0ZXMsIGJ5dGVhcnJheSwgYXJyYXkpPworICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGJvZHkpCisgICAgICAgICAgICByZXR1cm4gbXYubmJ5dGVzCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShib2R5LCBzdHIpOgorICAgICAgICAgICAgcmV0dXJuIGxlbihib2R5KQorCisgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydD1Ob25lLCB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKQEAgLTg4NCwxOCArOTcxLDkgQEAKICAgICAgICAgaWYgaGFzYXR0cihkYXRhLCAicmVhZCIpIDoKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICAgICAgcHJpbnQoInNlbmRJbmcgYSByZWFkKClhYmxlIikKLSAgICAgICAgICAgIGVuY29kZSA9IEZhbHNlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbW9kZSA9IGRhdGEubW9kZQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICMgaW8uQnl0ZXNJTyBhbmQgb3RoZXIgZmlsZS1saWtlIG9iamVjdHMgZG9uJ3QgaGF2ZSBhIGBtb2RlYAotICAgICAgICAgICAgICAgICMgYXR0cmlidXRlLgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgotICAgICAgICAgICAgICAgICAgICBlbmNvZGUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiZW5jb2RpbmcgZmlsZSB1c2luZyBpc28tODg1OS0xIikKKyAgICAgICAgICAgIGVuY29kZSA9IHNlbGYuX2lzX3RleHRJTyhkYXRhKQorICAgICAgICAgICAgaWYgZW5jb2RlIGFuZCBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgIHByaW50KCJlbmNvZGluZyBmaWxlIHVzaW5nIGlzby04ODU5LTEiKQogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICBkYXRhYmxvY2sgPSBkYXRhLnJlYWQoYmxvY2tzaXplKQogICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhYmxvY2s6CkBAIC05MjEsNyArOTk5LDIyIEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9idWZmZXIuYXBwZW5kKHMpCiAKLSAgICBkZWYgX3NlbmRfb3V0cHV0KHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lKToKKyAgICBkZWYgX3JlYWRfcmVhZGFibGUoc2VsZiwgcmVhZGFibGUpOgorICAgICAgICBibG9ja3NpemUgPSA4MTkyCisgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICBwcmludCgic2VuZEluZyBhIHJlYWQoKWFibGUiKQorICAgICAgICBlbmNvZGUgPSBzZWxmLl9pc190ZXh0SU8ocmVhZGFibGUpCisgICAgICAgIGlmIGVuY29kZSBhbmQgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgIHByaW50KCJlbmNvZGluZyBmaWxlIHVzaW5nIGlzby04ODU5LTEiKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGF0YWJsb2NrID0gcmVhZGFibGUucmVhZChibG9ja3NpemUpCisgICAgICAgICAgICBpZiBub3QgZGF0YWJsb2NrOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBlbmNvZGU6CisgICAgICAgICAgICAgICAgZGF0YWJsb2NrID0gZGF0YWJsb2NrLmVuY29kZSgiaXNvLTg4NTktMSIpCisgICAgICAgICAgICB5aWVsZCBkYXRhYmxvY2sKKworICAgIGRlZiBfc2VuZF9vdXRwdXQoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUsIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgIiIiU2VuZCB0aGUgY3VycmVudGx5IGJ1ZmZlcmVkIHJlcXVlc3QgYW5kIGNsZWFyIHRoZSBidWZmZXIuCiAKICAgICAgICAgQXBwZW5kcyBhbiBleHRyYSBcXHJcXG4gdG8gdGhlIGJ1ZmZlci4KQEAgLTkzMCwxMCArMTAyMyw1MCBAQAogICAgICAgICBzZWxmLl9idWZmZXIuZXh0ZW5kKChiIiIsIGIiIikpCiAgICAgICAgIG1zZyA9IGIiXHJcbiIuam9pbihzZWxmLl9idWZmZXIpCiAgICAgICAgIGRlbCBzZWxmLl9idWZmZXJbOl0KLQogICAgICAgICBzZWxmLnNlbmQobXNnKQorCiAgICAgICAgIGlmIG1lc3NhZ2VfYm9keSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2VuZChtZXNzYWdlX2JvZHkpCisKKyAgICAgICAgICAgICMgY3JlYXRlIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgdG8gbWVzc2FnZV9ib2R5CisgICAgICAgICAgICBpZiBoYXNhdHRyKG1lc3NhZ2VfYm9keSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICAjIExldCBmaWxlLWxpa2UgdGFrZSBwcmVjZWRlbmNlIG92ZXIgYnl0ZS1saWtlLiAgVGhpcworICAgICAgICAgICAgICAgICMgaXMgbmVlZGVkIHRvIGFsbG93IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIG1tYXAnZWQKKyAgICAgICAgICAgICAgICAjIGZpbGVzIHRvIGJlIHRha2VuIGludG8gYWNjb3VudC4KKyAgICAgICAgICAgICAgICBjaHVua3MgPSBzZWxmLl9yZWFkX3JlYWRhYmxlKG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaXMgc29sZWx5IHRvIGNoZWNrIHRvIHNlZSBpZiBtZXNzYWdlX2JvZHkKKyAgICAgICAgICAgICAgICAgICAgIyBpbXBsZW1lbnRzIHRoZSBidWZmZXIgQVBJLiAgaXQgL3dvdWxkLyBiZSBlYXNpZXIKKyAgICAgICAgICAgICAgICAgICAgIyB0byBjYXB0dXJlIGlmIFB5T2JqZWN0X0NoZWNrQnVmZmVyIHdhcyBleHBvc2VkCisgICAgICAgICAgICAgICAgICAgICMgdG8gUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3KG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSBpdGVyKG1lc3NhZ2VfYm9keSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibWVzc2FnZV9ib2R5IHNob3VsZCBiZSBhIGJ5dGVzLWxpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Qgb3IgYW4gaXRlcmFibGUsIGdvdCAlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUobWVzc2FnZV9ib2R5KSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgYnVmZmVyIGludGVyZmFjZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IGludG8gc29ja2V0IG1ldGhvZHMKKyAgICAgICAgICAgICAgICAgICAgY2h1bmtzID0gKG1lc3NhZ2VfYm9keSwpCisKKyAgICAgICAgICAgIGZvciBjaHVuayBpbiBjaHVua3M6CisgICAgICAgICAgICAgICAgaWYgbm90IGNodW5rOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1plcm8gbGVuZ3RoIGNodW5rIGlnbm9yZWQnKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgZW5jb2RlX2NodW5rZWQgYW5kIHNlbGYuX2h0dHBfdnNuID09IDExOgorICAgICAgICAgICAgICAgICAgICAjIGNodW5rZWQgZW5jb2RpbmcKKyAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBmJ3tsZW4oY2h1bmspOlh9XHJcbicuZW5jb2RlKCdhc2NpaScpICsgY2h1bmsgXAorICAgICAgICAgICAgICAgICAgICAgICAgKyBiJ1xyXG4nCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGNodW5rKQorCisgICAgICAgICAgICBpZiBlbmNvZGVfY2h1bmtlZCBhbmQgc2VsZi5faHR0cF92c24gPT0gMTE6CisgICAgICAgICAgICAgICAgIyBlbmQgY2h1bmtlZCB0cmFuc2ZlcgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZChiJzBcclxuXHJcbicpCiAKICAgICBkZWYgcHV0cmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgc2tpcF9ob3N0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgIHNraXBfYWNjZXB0X2VuY29kaW5nPUZhbHNlKToKQEAgLTEwODcsNTIgKzEyMjAsMjcgQEAKICAgICAgICAgaGVhZGVyID0gaGVhZGVyICsgYic6ICcgKyB2YWx1ZQogICAgICAgICBzZWxmLl9vdXRwdXQoaGVhZGVyKQogCi0gICAgZGVmIGVuZGhlYWRlcnMoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUpOgorICAgIGRlZiBlbmRoZWFkZXJzKHNlbGYsIG1lc3NhZ2VfYm9keT1Ob25lLCAqLCBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgICIiIkluZGljYXRlIHRoYXQgdGhlIGxhc3QgaGVhZGVyIGxpbmUgaGFzIGJlZW4gc2VudCB0byB0aGUgc2VydmVyLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIHNlbmRzIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuICBUaGUgb3B0aW9uYWwgbWVzc2FnZV9ib2R5CiAgICAgICAgIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHBhc3MgYSBtZXNzYWdlIGJvZHkgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgICAgICByZXF1ZXN0LiAgVGhlIG1lc3NhZ2UgYm9keSB3aWxsIGJlIHNlbnQgaW4gdGhlIHNhbWUgcGFja2V0IGFzIHRoZQotICAgICAgICBtZXNzYWdlIGhlYWRlcnMgaWYgaXQgaXMgYSBzdHJpbmcsIG90aGVyd2lzZSBpdCBpcyBzZW50IGFzIGEgc2VwYXJhdGUKLSAgICAgICAgcGFja2V0LgorICAgICAgICByZXF1ZXN0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5fX3N0YXRlID09IF9DU19SRVFfU1RBUlRFRDoKICAgICAgICAgICAgIHNlbGYuX19zdGF0ZSA9IF9DU19SRVFfU0VOVAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgQ2Fubm90U2VuZEhlYWRlcigpCi0gICAgICAgIHNlbGYuX3NlbmRfb3V0cHV0KG1lc3NhZ2VfYm9keSkKKyAgICAgICAgc2VsZi5fc2VuZF9vdXRwdXQobWVzc2FnZV9ib2R5LCBlbmNvZGVfY2h1bmtlZD1lbmNvZGVfY2h1bmtlZCkKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9e30pOgorICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9e30sICosCisgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICAiIiJTZW5kIGEgY29tcGxldGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLiIiIgotICAgICAgICBzZWxmLl9zZW5kX3JlcXVlc3QobWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMpCisgICAgICAgIHNlbGYuX3NlbmRfcmVxdWVzdChtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycywgZW5jb2RlX2NodW5rZWQpCiAKLSAgICBkZWYgX3NldF9jb250ZW50X2xlbmd0aChzZWxmLCBib2R5LCBtZXRob2QpOgotICAgICAgICAjIFNldCB0aGUgY29udGVudC1sZW5ndGggYmFzZWQgb24gdGhlIGJvZHkuIElmIHRoZSBib2R5IGlzICJlbXB0eSIsIHdlCi0gICAgICAgICMgc2V0IENvbnRlbnQtTGVuZ3RoOiAwIGZvciBtZXRob2RzIHRoYXQgZXhwZWN0IGEgYm9keSAoUkZDIDcyMzAsCi0gICAgICAgICMgU2VjdGlvbiAzLjMuMikuIElmIHRoZSBib2R5IGlzIHNldCBmb3Igb3RoZXIgbWV0aG9kcywgd2Ugc2V0IHRoZQotICAgICAgICAjIGhlYWRlciBwcm92aWRlZCB3ZSBjYW4gZmlndXJlIG91dCB3aGF0IHRoZSBsZW5ndGggaXMuCi0gICAgICAgIHRoZWxlbiA9IE5vbmUKLSAgICAgICAgbWV0aG9kX2V4cGVjdHNfYm9keSA9IG1ldGhvZC51cHBlcigpIGluIF9NRVRIT0RTX0VYUEVDVElOR19CT0RZCi0gICAgICAgIGlmIGJvZHkgaXMgTm9uZSBhbmQgbWV0aG9kX2V4cGVjdHNfYm9keToKLSAgICAgICAgICAgIHRoZWxlbiA9ICcwJwotICAgICAgICBlbGlmIGJvZHkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGhlbGVuID0gc3RyKGxlbihib2R5KSkKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBJZiB0aGlzIGlzIGEgZmlsZS1saWtlIG9iamVjdCwgdHJ5IHRvCi0gICAgICAgICAgICAgICAgIyBmc3RhdCBpdHMgZmlsZSBkZXNjcmlwdG9yCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB0aGVsZW4gPSBzdHIob3MuZnN0YXQoYm9keS5maWxlbm8oKSkuc3Rfc2l6ZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKLSAgICAgICAgICAgICAgICAgICAgIyBEb24ndCBzZW5kIGEgbGVuZ3RoIGlmIHRoaXMgZmFpbGVkCi0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6IHByaW50KCJDYW5ub3Qgc3RhdCEhIikKLQotICAgICAgICBpZiB0aGVsZW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignQ29udGVudC1MZW5ndGgnLCB0aGVsZW4pCi0KLSAgICBkZWYgX3NlbmRfcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycyk6CisgICAgZGVmIF9zZW5kX3JlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHksIGhlYWRlcnMsIGVuY29kZV9jaHVua2VkKToKICAgICAgICAgIyBIb25vciBleHBsaWNpdGx5IHJlcXVlc3RlZCBIb3N0OiBhbmQgQWNjZXB0LUVuY29kaW5nOiBoZWFkZXJzLgotICAgICAgICBoZWFkZXJfbmFtZXMgPSBkaWN0LmZyb21rZXlzKFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIGhlYWRlcl9uYW1lcyA9IGZyb3plbnNldChrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycykKICAgICAgICAgc2tpcHMgPSB7fQogICAgICAgICBpZiAnaG9zdCcgaW4gaGVhZGVyX25hbWVzOgogICAgICAgICAgICAgc2tpcHNbJ3NraXBfaG9zdCddID0gMQpAQCAtMTE0MSwxNSArMTI0OSw0MCBAQAogCiAgICAgICAgIHNlbGYucHV0cmVxdWVzdChtZXRob2QsIHVybCwgKipza2lwcykKIAorICAgICAgICAjIGNodW5rZWQgZW5jb2Rpbmcgd2lsbCBoYXBwZW4gaWYgSFRUUC8xLjEgaXMgdXNlZCBhbmQgZWl0aGVyCisgICAgICAgICMgdGhlIGNhbGxlciBwYXNzZXMgZW5jb2RlX2NodW5rZWQ9VHJ1ZSBvciB0aGUgZm9sbG93aW5nCisgICAgICAgICMgY29uZGl0aW9ucyBob2xkOgorICAgICAgICAjIDEuIGNvbnRlbnQtbGVuZ3RoIGhhcyBub3QgYmVlbiBleHBsaWNpdGx5IHNldAorICAgICAgICAjIDIuIHRoZSBib2R5IGlzIGEgZmlsZSBvciBpdGVyYWJsZSwgYnV0IG5vdCBhIHN0ciBvciBieXRlcy1saWtlCisgICAgICAgICMgMy4gVHJhbnNmZXItRW5jb2RpbmcgaGFzIE5PVCBiZWVuIGV4cGxpY2l0bHkgc2V0IGJ5IHRoZSBjYWxsZXIKKwogICAgICAgICBpZiAnY29udGVudC1sZW5ndGgnIG5vdCBpbiBoZWFkZXJfbmFtZXM6Ci0gICAgICAgICAgICBzZWxmLl9zZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKQorICAgICAgICAgICAgIyBvbmx5IGNodW5rIGJvZHkgaWYgbm90IGV4cGxpY2l0bHkgc2V0IGZvciBiYWNrd2FyZHMKKyAgICAgICAgICAgICMgY29tcGF0aWJpbGl0eSwgYXNzdW1pbmcgdGhlIGNsaWVudCBjb2RlIGlzIGFscmVhZHkgaGFuZGxpbmcgdGhlCisgICAgICAgICAgICAjIGNodW5raW5nCisgICAgICAgICAgICBpZiAndHJhbnNmZXItZW5jb2RpbmcnIG5vdCBpbiBoZWFkZXJfbmFtZXM6CisgICAgICAgICAgICAgICAgIyBpZiBjb250ZW50LWxlbmd0aCBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBkZXRlcm1pbmVkLCBmYWxsCisgICAgICAgICAgICAgICAgIyBiYWNrIHRvIGNodW5rZWQgZW5jb2RpbmcKKyAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgY29udGVudF9sZW5ndGggPSBzZWxmLl9nZXRfY29udGVudF9sZW5ndGgoYm9keSwgbWV0aG9kKQorICAgICAgICAgICAgICAgIGlmIGNvbnRlbnRfbGVuZ3RoIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGJvZHkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdVbmFibGUgdG8gZGV0ZXJtaW5lIHNpemUgb2YgJXInICUgYm9keSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ1RyYW5zZmVyLUVuY29kaW5nJywgJ2NodW5rZWQnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIHN0cihjb250ZW50X2xlbmd0aCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZCA9IEZhbHNlCisKICAgICAgICAgZm9yIGhkciwgdmFsdWUgaW4gaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoaGRyLCB2YWx1ZSkKICAgICAgICAgaWYgaXNpbnN0YW5jZShib2R5LCBzdHIpOgogICAgICAgICAgICAgIyBSRkMgMjYxNiBTZWN0aW9uIDMuNy4xIHNheXMgdGhhdCB0ZXh0IGRlZmF1bHQgaGFzIGEKICAgICAgICAgICAgICMgZGVmYXVsdCBjaGFyc2V0IG9mIGlzby04ODU5LTEuCiAgICAgICAgICAgICBib2R5ID0gX2VuY29kZShib2R5LCAnYm9keScpCi0gICAgICAgIHNlbGYuZW5kaGVhZGVycyhib2R5KQorICAgICAgICBzZWxmLmVuZGhlYWRlcnMoYm9keSwgZW5jb2RlX2NodW5rZWQ9ZW5jb2RlX2NodW5rZWQpCiAKICAgICBkZWYgZ2V0cmVzcG9uc2Uoc2VsZik6CiAgICAgICAgICIiIkdldCB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgc2VydmVyLgpAQCAtMTIzMiw2ICsxMzY1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1Ob25lKToKICAgICAgICAgICAgIHN1cGVyKEhUVFBTQ29ubmVjdGlvbiwgc2VsZikuX19pbml0X18oaG9zdCwgcG9ydCwgdGltZW91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3MpCisgICAgICAgICAgICBpZiAoa2V5X2ZpbGUgaXMgbm90IE5vbmUgb3IgY2VydF9maWxlIGlzIG5vdCBOb25lIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5X2ZpbGUsIGNlcnRfZmlsZSBhbmQgY2hlY2tfaG9zdG5hbWUgYXJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXByZWNhdGVkLCB1c2UgYSBjdXN0b20gY29udGV4dCBpbnN0ZWFkLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleV9maWxlID0ga2V5X2ZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydF9maWxlID0gY2VydF9maWxlCiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jb29raWVqYXIucHkgYi9MaWIvaHR0cC9jb29raWVqYXIucHkKaW5kZXggNmQ0NTcyYS4uYWRmOTU2ZCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llamFyLnB5CisrKyBiL0xpYi9odHRwL2Nvb2tpZWphci5weQpAQCAtMjAwLDcgKzIwMCw3IEBACiAKIFNUUklDVF9EQVRFX1JFID0gcmUuY29tcGlsZSgKICAgICByIl5bU01UV0ZdW2Etel1bYS16XSwgKFxkXGQpIChbSkZNQVNPTkRdW2Etel1bYS16XSkgIgotICAgICIoXGRcZFxkXGQpIChcZFxkKTooXGRcZCk6KFxkXGQpIEdNVCQiLCByZS5BU0NJSSkKKyAgICByIihcZFxkXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJCIsIHJlLkFTQ0lJKQogV0VFS0RBWV9SRSA9IHJlLmNvbXBpbGUoCiAgICAgciJeKD86U3VufE1vbnxUdWV8V2VkfFRodXxGcml8U2F0KVthLXpdKiw/XHMqIiwgcmUuSSB8IHJlLkFTQ0lJKQogTE9PU0VfSFRUUF9EQVRFX1JFID0gcmUuY29tcGlsZSgKQEAgLTI3Nyw3ICsyNzcsNyBAQAogICAgIHJldHVybiBfc3RyMnRpbWUoZGF5LCBtb24sIHlyLCBociwgbWluLCBzZWMsIHR6KQogCiBJU09fREFURV9SRSA9IHJlLmNvbXBpbGUoCi0gICAgIiIiXgorICAgIHIiIiJeCiAgICAgKFxkezR9KSAgICAgICAgICAgICAgIyB5ZWFyCiAgICAgICAgWy1cL10/CiAgICAgKFxkXGQ/KSAgICAgICAgICAgICAgIyBudW1lcmljYWwgbW9udGgKQEAgLTQxMSw3ICs0MTEsNyBAQAogICAgICAgICAgICAgICAgIHBhaXJzID0gW10KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBza2lwIGp1bmsKLSAgICAgICAgICAgICAgICBub25fanVuaywgbnJfanVua19jaGFycyA9IHJlLnN1Ym4oIl5bPVxzO10qIiwgIiIsIHRleHQpCisgICAgICAgICAgICAgICAgbm9uX2p1bmssIG5yX2p1bmtfY2hhcnMgPSByZS5zdWJuKHIiXls9XHM7XSoiLCAiIiwgdGV4dCkKICAgICAgICAgICAgICAgICBhc3NlcnQgbnJfanVua19jaGFycyA+IDAsICgKICAgICAgICAgICAgICAgICAgICAgInNwbGl0X2hlYWRlcl93b3JkcyBidWc6ICclcycsICclcycsICVzIiAlCiAgICAgICAgICAgICAgICAgICAgIChvcmlnX3RleHQsIHRleHQsIHBhaXJzKSkKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZXMucHkgYi9MaWIvaHR0cC9jb29raWVzLnB5CmluZGV4IGE3M2ZlMzguLmJlM2IwODAgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZXMucHkKKysrIGIvTGliL2h0dHAvY29va2llcy5weQpAQCAtNDU2LDkgKzQ1Niw4IEBACiAjCiAKIF9MZWdhbEtleUNoYXJzICA9IHIiXHdcZCEjJSYnfl9gPjxALDovXCRcKlwrXC1cLlxeXHxcKVwoXD9cfVx7XD0iCi1fTGVnYWxWYWx1ZUNoYXJzID0gX0xlZ2FsS2V5Q2hhcnMgKyAnXFtcXScKK19MZWdhbFZhbHVlQ2hhcnMgPSBfTGVnYWxLZXlDaGFycyArIHInXFtcXScKIF9Db29raWVQYXR0ZXJuID0gcmUuY29tcGlsZShyIiIiCi0gICAgKD94KSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyBhIHZlcmJvc2UgcGF0dGVybgogICAgIFxzKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsIHdoaXRlc3BhY2UgYXQgc3RhcnQgb2YgY29va2llCiAgICAgKD9QPGtleT4gICAgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgZ3JvdXAgJ2tleScKICAgICBbIiIiICsgX0xlZ2FsS2V5Q2hhcnMgKyByIiIiXSs/ICAgIyBBbnkgd29yZCBvZiBhdCBsZWFzdCBvbmUgbGV0dGVyCkBAIC00NzUsNyArNDc0LDcgQEAKICAgICApPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmQgb2Ygb3B0aW9uYWwgdmFsdWUgZ3JvdXAKICAgICBccyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBbnkgbnVtYmVyIG9mIHNwYWNlcy4KICAgICAoXHMrfDt8JCkgICAgICAgICAgICAgICAgICAgICAgIyBFbmRpbmcgZWl0aGVyIGF0IHNwYWNlLCBzZW1pY29sb24sIG9yIEVPUy4KLSAgICAiIiIsIHJlLkFTQ0lJKSAgICAgICAgICAgICAgICAgIyBNYXkgYmUgcmVtb3ZlZCBpZiBzYWZlLgorICAgICIiIiwgcmUuQVNDSUkgfCByZS5WRVJCT1NFKSAgICAjIHJlLkFTQ0lJIG1heSBiZSByZW1vdmVkIGlmIHNhZmUuCiAKIAogIyBBdCBsb25nIGxhc3QsIGhlcmUgaXMgdGhlIGNvb2tpZSBjbGFzcy4gIFVzaW5nIHRoaXMgY2xhc3MgaXMgYWxtb3N0IGp1c3QgbGlrZQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvc2VydmVyLnB5IGIvTGliL2h0dHAvc2VydmVyLnB5CmluZGV4IDAwNjIwZDEuLmUxMmU0NWIgMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL3NlcnZlci5weQorKysgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKQEAgLTg3LDYgKzg3LDcgQEAKICAgICAiU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyIiwgIkNHSUhUVFBSZXF1ZXN0SGFuZGxlciIsCiBdCiAKK2ltcG9ydCBlbWFpbC51dGlscwogaW1wb3J0IGh0bWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IGlvCkBAIC0xMjYsOSArMTI3LDYgQEAKIAogREVGQVVMVF9FUlJPUl9DT05URU5UX1RZUEUgPSAidGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiCiAKLWRlZiBfcXVvdGVfaHRtbChodG1sKToKLSAgICByZXR1cm4gaHRtbC5yZXBsYWNlKCImIiwgIiZhbXA7IikucmVwbGFjZSgiPCIsICImbHQ7IikucmVwbGFjZSgiPiIsICImZ3Q7IikKLQogY2xhc3MgSFRUUFNlcnZlcihzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKToKIAogICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSAxICAgICMgU2VlbXMgdG8gbWFrZSBzZW5zZSBpbiB0ZXN0aW5nIGVudmlyb25tZW50CkBAIC0xMzYsNyArMTM0LDcgQEAKICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CiAgICAgICAgICIiIk92ZXJyaWRlIHNlcnZlcl9iaW5kIHRvIHN0b3JlIHRoZSBzZXJ2ZXIgbmFtZS4iIiIKICAgICAgICAgc29ja2V0c2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfYmluZChzZWxmKQotICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbOjJdCiAgICAgICAgIHNlbGYuc2VydmVyX25hbWUgPSBzb2NrZXQuZ2V0ZnFkbihob3N0KQogICAgICAgICBzZWxmLnNlcnZlcl9wb3J0ID0gcG9ydAogCkBAIC0yODIsMTIgKzI4MCw5IEBACiAgICAgICAgIHdvcmRzID0gcmVxdWVzdGxpbmUuc3BsaXQoKQogICAgICAgICBpZiBsZW4od29yZHMpID09IDM6CiAgICAgICAgICAgICBjb21tYW5kLCBwYXRoLCB2ZXJzaW9uID0gd29yZHMKLSAgICAgICAgICAgIGlmIHZlcnNpb25bOjVdICE9ICdIVFRQLyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAotICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAotICAgICAgICAgICAgICAgICAgICAiQmFkIHJlcXVlc3QgdmVyc2lvbiAoJXIpIiAlIHZlcnNpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgdmVyc2lvbls6NV0gIT0gJ0hUVFAvJzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgICAgICAgICAgIGJhc2VfdmVyc2lvbl9udW1iZXIgPSB2ZXJzaW9uLnNwbGl0KCcvJywgMSlbMV0KICAgICAgICAgICAgICAgICB2ZXJzaW9uX251bWJlciA9IGJhc2VfdmVyc2lvbl9udW1iZXIuc3BsaXQoIi4iKQogICAgICAgICAgICAgICAgICMgUkZDIDIxNDUgc2VjdGlvbiAzLjEgc2F5cyB0aGVyZSBjYW4gYmUgb25seSBvbmUgIi4iIGFuZApAQCAtMzA5LDcgKzMwNCw3IEBACiAgICAgICAgICAgICBpZiB2ZXJzaW9uX251bWJlciA+PSAoMiwgMCk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAogICAgICAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVELAotICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIFZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQorICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBIVFRQIHZlcnNpb24gKCVzKSIgJSBiYXNlX3ZlcnNpb25fbnVtYmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbGlmIGxlbih3b3JkcykgPT0gMjoKICAgICAgICAgICAgIGNvbW1hbmQsIHBhdGggPSB3b3JkcwpAQCAtMzMyLDEwICszMjcsMTEgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5oZWFkZXJzID0gaHR0cC5jbGllbnQucGFyc2VfaGVhZGVycyhzZWxmLnJmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xhc3M9c2VsZi5NZXNzYWdlQ2xhc3MpCi0gICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5MaW5lVG9vTG9uZzoKKyAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkxpbmVUb29Mb25nIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKLSAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLkJBRF9SRVFVRVNULAotICAgICAgICAgICAgICAgICJMaW5lIHRvbyBsb25nIikKKyAgICAgICAgICAgICAgICBIVFRQU3RhdHVzLlJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UsCisgICAgICAgICAgICAgICAgIkxpbmUgdG9vIGxvbmciLAorICAgICAgICAgICAgICAgIHN0cihlcnIpKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGV4Y2VwdCBodHRwLmNsaWVudC5IVFRQRXhjZXB0aW9uIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYuc2VuZF9lcnJvcigKQEAgLTQ2NSw4ICs0NjEsOCBAQAogICAgICAgICAgICAgIyAoc2VlIGJ1ZyAjMTEwMDIwMSkKICAgICAgICAgICAgIGNvbnRlbnQgPSAoc2VsZi5lcnJvcl9tZXNzYWdlX2Zvcm1hdCAlIHsKICAgICAgICAgICAgICAgICAnY29kZSc6IGNvZGUsCi0gICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBfcXVvdGVfaHRtbChtZXNzYWdlKSwKLSAgICAgICAgICAgICAgICAnZXhwbGFpbic6IF9xdW90ZV9odG1sKGV4cGxhaW4pCisgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBodG1sLmVzY2FwZShtZXNzYWdlLCBxdW90ZT1GYWxzZSksCisgICAgICAgICAgICAgICAgJ2V4cGxhaW4nOiBodG1sLmVzY2FwZShleHBsYWluLCBxdW90ZT1GYWxzZSkKICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICBib2R5ID0gY29udGVudC5lbmNvZGUoJ1VURi04JywgJ3JlcGxhY2UnKQogICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcigiQ29udGVudC1UeXBlIiwgc2VsZi5lcnJvcl9jb250ZW50X3R5cGUpCkBAIC00OTEsMTIgKzQ4NywxMiBAQAogCiAgICAgZGVmIHNlbmRfcmVzcG9uc2Vfb25seShzZWxmLCBjb2RlLCBtZXNzYWdlPU5vbmUpOgogICAgICAgICAiIiJTZW5kIHRoZSByZXNwb25zZSBoZWFkZXIgb25seS4iIiIKLSAgICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgY29kZSBpbiBzZWxmLnJlc3BvbnNlczoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5yZXNwb25zZXNbY29kZV1bMF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICcnCiAgICAgICAgIGlmIHNlbGYucmVxdWVzdF92ZXJzaW9uICE9ICdIVFRQLzAuOSc6CisgICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgY29kZSBpbiBzZWxmLnJlc3BvbnNlczoKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYucmVzcG9uc2VzW2NvZGVdWzBdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICcnCiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX2hlYWRlcnNfYnVmZmVyJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIgPSBbXQogICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKCgiJXMgJWQgJXNcclxuIiAlCkBAIC01ODMsMTIgKzU3OSw3IEBACiAgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIGZvcm1hdHRlZCBmb3IgYSBtZXNzYWdlIGhlYWRlci4iIiIKICAgICAgICAgaWYgdGltZXN0YW1wIGlzIE5vbmU6CiAgICAgICAgICAgICB0aW1lc3RhbXAgPSB0aW1lLnRpbWUoKQotICAgICAgICB5ZWFyLCBtb250aCwgZGF5LCBoaCwgbW0sIHNzLCB3ZCwgeSwgeiA9IHRpbWUuZ210aW1lKHRpbWVzdGFtcCkKLSAgICAgICAgcyA9ICIlcywgJTAyZCAlM3MgJTRkICUwMmQ6JTAyZDolMDJkIEdNVCIgJSAoCi0gICAgICAgICAgICAgICAgc2VsZi53ZWVrZGF5bmFtZVt3ZF0sCi0gICAgICAgICAgICAgICAgZGF5LCBzZWxmLm1vbnRobmFtZVttb250aF0sIHllYXIsCi0gICAgICAgICAgICAgICAgaGgsIG1tLCBzcykKLSAgICAgICAgcmV0dXJuIHMKKyAgICAgICAgcmV0dXJuIGVtYWlsLnV0aWxzLmZvcm1hdGRhdGUodGltZXN0YW1wLCB1c2VnbXQ9VHJ1ZSkKIAogICAgIGRlZiBsb2dfZGF0ZV90aW1lX3N0cmluZyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgZm9ybWF0dGVkIGZvciBsb2dnaW5nLiIiIgpAQCAtNzI2LDcgKzcxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CiAgICAgICAgICAgICBkaXNwbGF5cGF0aCA9IHVybGxpYi5wYXJzZS51bnF1b3RlKHBhdGgpCi0gICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUoZGlzcGxheXBhdGgpCisgICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUoZGlzcGxheXBhdGgsIHF1b3RlPUZhbHNlKQogICAgICAgICBlbmMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKICAgICAgICAgdGl0bGUgPSAnRGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzJyAlIGRpc3BsYXlwYXRoCiAgICAgICAgIHIuYXBwZW5kKCc8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iICcKQEAgLTc1MCw3ICs3NDEsNyBAQAogICAgICAgICAgICAgci5hcHBlbmQoJzxsaT48YSBocmVmPSIlcyI+JXM8L2E+PC9saT4nCiAgICAgICAgICAgICAgICAgICAgICUgKHVybGxpYi5wYXJzZS5xdW90ZShsaW5rbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpLAotICAgICAgICAgICAgICAgICAgICAgICBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSkpKQorICAgICAgICAgICAgICAgICAgICAgICBodG1sLmVzY2FwZShkaXNwbGF5bmFtZSwgcXVvdGU9RmFsc2UpKSkKICAgICAgICAgci5hcHBlbmQoJzwvdWw+XG48aHI+XG48L2JvZHk+XG48L2h0bWw+XG4nKQogICAgICAgICBlbmNvZGVkID0gJ1xuJy5qb2luKHIpLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICBmID0gaW8uQnl0ZXNJTygpCkBAIC0xMTkxLDE2ICsxMTgyLDE1IEBACiAgICAgc2VydmVyX2FkZHJlc3MgPSAoYmluZCwgcG9ydCkKIAogICAgIEhhbmRsZXJDbGFzcy5wcm90b2NvbF92ZXJzaW9uID0gcHJvdG9jb2wKLSAgICBodHRwZCA9IFNlcnZlckNsYXNzKHNlcnZlcl9hZGRyZXNzLCBIYW5kbGVyQ2xhc3MpCi0KLSAgICBzYSA9IGh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiIsIHNhWzBdLCAicG9ydCIsIHNhWzFdLCAiLi4uIikKLSAgICB0cnk6Ci0gICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCi0gICAgICAgIGh0dHBkLnNlcnZlcl9jbG9zZSgpCi0gICAgICAgIHN5cy5leGl0KDApCisgICAgd2l0aCBTZXJ2ZXJDbGFzcyhzZXJ2ZXJfYWRkcmVzcywgSGFuZGxlckNsYXNzKSBhcyBodHRwZDoKKyAgICAgICAgc2EgPSBodHRwZC5zb2NrZXQuZ2V0c29ja25hbWUoKQorICAgICAgICBzZXJ2ZV9tZXNzYWdlID0gIlNlcnZpbmcgSFRUUCBvbiB7aG9zdH0gcG9ydCB7cG9ydH0gKGh0dHA6Ly97aG9zdH06e3BvcnR9LykgLi4uIgorICAgICAgICBwcmludChzZXJ2ZV9tZXNzYWdlLmZvcm1hdChob3N0PXNhWzBdLCBwb3J0PXNhWzFdKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9NdWx0aVN0YXR1c0Jhci5weSBiL0xpYi9pZGxlbGliL011bHRpU3RhdHVzQmFyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODJiYTlhLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL011bHRpU3RhdHVzQmFyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotZnJvbSB0a2ludGVyIGltcG9ydCAqCi0KLWNsYXNzIE11bHRpU3RhdHVzQmFyKEZyYW1lKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgKiprdyk6Ci0gICAgICAgIGlmIG1hc3RlciBpcyBOb25lOgotICAgICAgICAgICAgbWFzdGVyID0gVGsoKQotICAgICAgICBGcmFtZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICoqa3cpCi0gICAgICAgIHNlbGYubGFiZWxzID0ge30KLQotICAgIGRlZiBzZXRfbGFiZWwoc2VsZiwgbmFtZSwgdGV4dD0nJywgc2lkZT1MRUZULCB3aWR0aD0wKToKLSAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5sYWJlbHM6Ci0gICAgICAgICAgICBsYWJlbCA9IExhYmVsKHNlbGYsIGJvcmRlcndpZHRoPTAsIGFuY2hvcj1XKQotICAgICAgICAgICAgbGFiZWwucGFjayhzaWRlPXNpZGUsIHBhZHk9MCwgcGFkeD00KQotICAgICAgICAgICAgc2VsZi5sYWJlbHNbbmFtZV0gPSBsYWJlbAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGFiZWwgPSBzZWxmLmxhYmVsc1tuYW1lXQotICAgICAgICBpZiB3aWR0aCAhPSAwOgotICAgICAgICAgICAgbGFiZWwuY29uZmlnKHdpZHRoPXdpZHRoKQotICAgICAgICBsYWJlbC5jb25maWcodGV4dD10ZXh0KQotCi1kZWYgX211bHRpc3RhdHVzX2JhcihwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIgJSh4LCB5ICsgMTUwKSkKLSAgICByb290LnRpdGxlKCJUZXN0IG11bHRpc3RhdHVzIGJhciIpCi0gICAgZnJhbWUgPSBGcmFtZShyb290KQotICAgIHRleHQgPSBUZXh0KGZyYW1lKQotICAgIHRleHQucGFjaygpCi0gICAgbXNiID0gTXVsdGlTdGF0dXNCYXIoZnJhbWUpCi0gICAgbXNiLnNldF9sYWJlbCgib25lIiwgImhlbGxvIikKLSAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAid29ybGQiKQotICAgIG1zYi5wYWNrKHNpZGU9Qk9UVE9NLCBmaWxsPVgpCi0KLSAgICBkZWYgY2hhbmdlKCk6Ci0gICAgICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJmb28iKQotICAgICAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAiYmFyIikKLQotICAgIGJ1dHRvbiA9IEJ1dHRvbihyb290LCB0ZXh0PSJVcGRhdGUgc3RhdHVzIiwgY29tbWFuZD1jaGFuZ2UpCi0gICAgYnV0dG9uLnBhY2soc2lkZT1CT1RUT00pCi0gICAgZnJhbWUucGFjaygpCi0gICAgZnJhbWUubWFpbmxvb3AoKQotICAgIHJvb3QubWFpbmxvb3AoKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgotICAgIHJ1bihfbXVsdGlzdGF0dXNfYmFyKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvTkVXUy50eHQgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dAppbmRleCA3MjkwNWMxLi5hM2ZjNTAxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ORVdTLnR4dAorKysgYi9MaWIvaWRsZWxpYi9ORVdTLnR4dApAQCAtMSw0NSArMSwxMDEgQEAKLVdoYXQncyBOZXcgaW4gSURMRSAzLjUuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTctMDEtMDE/KgorV2hhdCdzIE5ldyBpbiBJRExFIDMuNi4wPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisqUmVsZWFzZSBkYXRlOiAyMDE2LTEyLTE2PyoKIAogLSBJc3N1ZSAjMTUzMDg6IEFkZCAnaW50ZXJydXB0IGV4ZWN1dGlvbicgKF5DKSB0byBTaGVsbCBtZW51LgogICBQYXRjaCBieSBSb2dlciBTZXJ3eSwgdXBkYXRlZCBieSBCYXlhcmQgUmFuZGVsLgogCiAtIElzc3VlICMyNzkyMjogU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgogCistIElzc3VlICMyNzg5MTogQ29uc2lzdGVudGx5IGdyb3VwIGFuZCBzb3J0IGltcG9ydHMgd2l0aGluIGlkbGVsaWIgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTc2NDI6IGFkZCBsYXJnZXIgZm9udCBzaXplcyBmb3IgY2xhc3Nyb29tIHByb2plY3Rpb24uCisKIC0gQWRkIHZlcnNpb24gdG8gdGl0bGUgb2YgSURMRSBoZWxwIHdpbmRvdy4KIAogLSBJc3N1ZSAjMjU1NjQ6IEluIHNlY3Rpb24gb24gSURMRSAtLSBjb25zb2xlIGRpZmZlcmVuY2VzLCBtZW50aW9uIHRoYXQKICAgdXNpbmcgZXhlYyBtZWFucyB0aGF0IF9fYnVpbHRpbnNfXyBpcyBkZWZpbmVkIGZvciBlYWNoIHN0YXRlbWVudC4KIAorLSBJc3N1ZSAjMjc4MjE6IEZpeCAzLjYuMGEzIHJlZ3Jlc3Npb24gdGhhdCBwcmV2ZW50ZWQgY3VzdG9tIGtleSBzZXRzCisgIGZyb20gYmVpbmcgc2VsZWN0ZWQgd2hlbiBubyBjdXN0b20gdGhlbWUgd2FzIGRlZmluZWQuCisKIC0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgogICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKICAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCiAKKy0gSXNzdWUgIzI3NjIxOiBQdXQgcXVlcnkgcmVzcG9uc2UgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyBpbiB0aGUgcXVlcnkKKyAgYm94IGl0c2VsZiBpbnN0ZWFkIG9mIGluIGEgc2VwYXJhdGUgbWFzc2FnZWJveC4gIFJlZG8gdGVzdHMgdG8gbWF0Y2guCisgIEFkZCBNYWMgT1NYIHJlZmluZW1lbnRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNzYyMDogRXNjYXBlIGtleSBub3cgY2xvc2VzIFF1ZXJ5IGJveCBhcyBjYW5jZWxsZWQuCisKKy0gSXNzdWUgIzI3NjA5OiBJRExFOiB0YWIgYWZ0ZXIgaW5pdGlhbCB3aGl0ZXNwYWNlIHNob3VsZCB0YWIsIG5vdAorICBhdXRvY29tcGxldGUuIFRoaXMgZml4ZXMgcHJvYmxlbSB3aXRoIHdyaXRpbmcgZG9jc3RyaW5ncyBhdCBsZWFzdAorICB0d2ljZSBpbmRlbnRlZC4KKworLSBJc3N1ZSAjMjc2MDk6IEV4cGxpY2l0bHkgcmV0dXJuIE5vbmUgd2hlbiB0aGVyZSBhcmUgYWxzbyBub24tTm9uZQorICByZXR1cm5zLiBJbiBhIGZldyBjYXNlcywgcmV2ZXJzZSBhIGNvbmRpdGlvbiBhbmQgZWxpbWluYXRlIGEgcmV0dXJuLgorCiAtIElzc3VlICMyNTUwNzogSURMRSBubyBsb25nZXIgcnVucyBidWdneSBjb2RlIGJlY2F1c2Ugb2YgaXRzIHRraW50ZXIgaW1wb3J0cy4KICAgVXNlcnMgbXVzdCBpbmNsdWRlIHRoZSBzYW1lIGltcG9ydHMgcmVxdWlyZWQgdG8gcnVuIGRpcmVjdGx5IGluIFB5dGhvbi4KIAorLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgogCistIElzc3VlICMyNzQ3NzogSURMRSBzZWFyY2ggZGlhbG9ncyBub3cgdXNlIHR0ayB3aWRnZXRzLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogbWFrZSBjb21tYW5kIGxpbmUgImlkbGUtdGVzdD4gcHl0aG9uIHRlc3RfaGVscC5weSIgd29yay4KKyAgX19maWxlX18gaXMgcmVsYXRpdmUgd2hlbiBweXRob24gaXMgc3RhcnRlZCBpbiB0aGUgZmlsZSdzIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgorCistIElzc3VlICMyNzM4MDogSURMRTogYWRkIHF1ZXJ5LnB5IHdpdGggYmFzZSBRdWVyeSBkaWFsb2cgYW5kIHR0ayB3aWRnZXRzLgorICBNb2R1bGUgaGFkIHN1YmNsYXNzZXMgU2VjdGlvbk5hbWUsIE1vZHVsZU5hbWUsIGFuZCBIZWxwU291cmNlLCB3aGljaCBhcmUKKyAgdXNlZCB0byBnZXQgaW5mb3JtYXRpb24gZnJvbSB1c2VycyBieSBjb25maWdkaWFsb2cgYW5kIGZpbGUgPT5Mb2FkIE1vZHVsZS4KKyAgRWFjaCBzdWJjbGFzcyBoYXMgaXR3IG93biB2YWxpZGl0eSBjaGVja3MuICBVc2luZyBNb2R1bGVOYW1lIGFsbG93cyB1c2VycworICB0byBlZGl0IGJhZCBtb2R1bGUgbmFtZXMgaW5zdGVhZCBvZiBzdGFydGluZyBvdmVyLgorICBBZGQgdGVzdHMgYW5kIGRlbGV0ZSB0aGUgdHdvIGZpbGVzIGNvbWJpbmVkIGludG8gdGhlIG5ldyBvbmUuCisKKy0gSXNzdWUgIzI3MzcyOiBUZXN0X2lkbGUgbm8gbG9uZ2VyIGNoYW5nZXMgdGhlIGxvY2FsZS4KKwogLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBjaGFycyBpbiBJRExFIE5FV1MudHh0LCBmb3IgY29udHJpYnV0b3IgbmFtZXMuCiAKIC0gSXNzdWUgIzI3MjQ1OiBJRExFOiBDbGVhbmx5IGRlbGV0ZSBjdXN0b20gdGhlbWVzIGFuZCBrZXkgYmluZGluZ3MuCiAgIFByZXZpb3VzbHksIHdoZW4gSURMRSB3YXMgc3RhcnRlZCBmcm9tIGEgY29uc29sZSBvciBieSBpbXBvcnQsIGEgY2FzY2FkZQogICBvZiB3YXJuaW5ncyB3YXMgZW1pdHRlZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzI0MTM3OiBSdW4gSURMRSwgdGVzdF9pZGxlLCBhbmQgaHRlc3Qgd2l0aCB0a2ludGVyIGRlZmF1bHQgcm9vdCBkaXNhYmxlZC4KKyAgRml4IGNvZGUgYW5kIHRlc3RzIHRoYXQgZmFpbCB3aXRoIHRoaXMgcmVzdHJpY3Rpb24uCisgIEZpeCBodGVzdHMgdG8gbm90IGNyZWF0ZSBhIHNlY29uZCBhbmQgcmVkdW5kYW50IHJvb3QgYW5kIG1haW5sb29wLgogCi1XaGF0J3MgTmV3IGluIElETEUgMy41LjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTI2KgorLSBJc3N1ZSAjMjczMTA6IEZpeCBJRExFLmFwcCBmYWlsdXJlIHRvIGxhdW5jaCBvbiBPUyBYIGR1ZSB0byB2ZXN0aWdpYWwgaW1wb3J0LgogCiAtIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgogICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKICAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMjQ3NTA6IFN3aXRjaCBhbGwgc2Nyb2xsYmFycyBpbiBJRExFIHRvIHR0ayB2ZXJzaW9ucy4KKyAgV2hlcmUgbmVlZGVkLCBtaW5pbWFsIHRlc3RzIGFyZSBhZGRlZCB0byBjb3ZlciBjaGFuZ2VzLgorCistIElzc3VlICMyNDc1OTogSURMRSByZXF1aXJlcyB0ayA4LjUgYW5kIGF2YWlsYWJpbGl0eSB0dGsgd2lkZ2V0cy4KKyAgRGVsZXRlIG5vdyB1bm5lZWRlZCB0ayB2ZXJzaW9uIHRlc3RzIGFuZCBjb2RlIGZvciBvbGRlciB2ZXJzaW9ucy4KKyAgQWRkIHRlc3QgZm9yIElETEUgc3ludGF4IGNvbG9yaXplci4KKworLSBJc3N1ZSAjMjcyMzk6IGlkbGVsaWIubWFjb3N4LmlzWHl6VGsgZnVuY3Rpb25zIGluaXRpYWxpemUgYXMgbmVlZGVkLgorCistIElzc3VlICMyNzI2MjogbW92ZSBBcXVhIHVuYmluZGluZyBjb2RlLCB3aGljaCBlbmFibGUgY29udGV4dCBtZW51cywgdG8gbWF4b3N4LgorCiAtIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKICAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KIAotLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZicgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCistIElzc3VlICMyNzE5NjogU3RvcCAnVGhlbWVDaGFuZ2VkJyB3YXJuaW5ncyB3aGVuIHJ1bm5pbmcgSURMRSB0ZXN0cy4KICAgVGhlc2UgcGVyc2lzdGVkIGFmdGVyIG90aGVyIHdhcm5pbmdzIHdlcmUgc3VwcHJlc3NlZCBpbiAjMjA1NjcuCiAgIEFwcGx5IFNlcmhpeSBTdG9yY2hha2EncyB1cGRhdGVfaWRsZXRhc2tzIHNvbHV0aW9uIHRvIGZvdXIgdGVzdCBmaWxlcy4KICAgUmVjb3JkIHRoaXMgYWRkaXRpb25hbCBhZHZpY2UgaW4gaWRsZV90ZXN0L1JFQURNRS50eHQKQEAgLTQ3LDkgKzEwMywyNiBAQAogLSBJc3N1ZSAjMjA1Njc6IFJldmlzZSBpZGxlX3Rlc3QvUkVBRE1FLnR4dCB3aXRoIGFkdmljZSBhYm91dCBhdm9pZGluZwogICB0ayB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGVzdHMuICBBcHBseSBhZHZpY2UgdG8gc2V2ZXJhbCBJRExFIHRlc3RzLgogCistIElzc3VlICMgMjQyMjU6IFVwZGF0ZSBpZGxlbGliL1JFQURNRS50eHQgd2l0aCBuZXcgZmlsZSBuYW1lcworICBhbmQgZXZlbnQgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzI3MTU2OiBSZW1vdmUgb2Jzb2xldGUgY29kZSBub3QgdXNlZCBieSBJRExFLiAgUmVwbGFjZW1lbnRzOgorICAxLiBoZWxwLnR4dCwgcmVwbGFjZWQgYnkgaGVscC5odG1sLCBpcyBvdXQtb2YtZGF0ZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgorICBJdHMgZGVkaWNhdGVkIHZpZXdlciBoYXMgYmUgcmVwbGFjZWQgYnkgdGhlIGh0bWwgdmlld2VyIGluIGhlbHAucHkuCisgIDIuICdpbXBvcnQgaWRsZXZlcjsgSSA9IGlkbGV2ZXIuSURMRV9WRVJTSU9OJyBpcyB0aGUgc2FtZSBhcworICAnaW1wb3J0IHN5czsgSSA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV0nCisgIDMuIEFmdGVyICdvYiA9IHN0YWNrdmlld2VyLlZhcmlhYmxlc1RyZWVJdGVtKCphcmdzKScsCisgICdvYi5rZXlzKCknID09ICdsaXN0KG9iLm9iamVjdC5rZXlzKS4KKyAgNC4gSW4gbWFjb3NjLCBydW5uaW5nQXNPU1hBUFAgPT0gaXNBcXVhVGs7IGlkQ2FyYm9uQXF1YVRrID09IGlzQ2FyYm9uVGsKKwogLSBJc3N1ZSAjMjcxMTc6IE1ha2UgY29sb3JpemVyIGh0ZXN0IGFuZCB0dXJ0bGVkZW1vIHdvcmsgd2l0aCBkYXJrIHRoZW1lcy4KICAgTW92ZSBjb2RlIGZvciBjb25maWd1cmluZyB0ZXh0IHdpZGdldCBjb2xvcnMgdG8gYSBuZXcgZnVuY3Rpb24uCiAKKy0gSXNzdWUgIzI0MjI1OiBSZW5hbWUgbWFueSBpZGxlbGliLyoucHkgYW5kIGlkbGVfdGVzdC90ZXN0XyoucHkgZmlsZXMuCisgIEVkaXQgZmlsZXMgdG8gcmVwbGFjZSBvbGQgbmFtZXMgd2l0aCBuZXcgbmFtZXMgd2hlbiB0aGUgb2xkIG5hbWUKKyAgcmVmZXJyZWQgdG8gdGhlIG1vZHVsZSByYXRoZXIgdGhhbiB0aGUgY2xhc3MgaXQgY29udGFpbmVkLgorICBTZWUgdGhlIGlzc3VlIGFuZCBJRExFIHNlY3Rpb24gaW4gV2hhdCdzIE5ldyBpbiAzLjYgZm9yIG1vcmUuCisKIC0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgogICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgogCkBAIC02Miw4ICsxMzUsOCBAQAogLSBJc3N1ZSAjMTg0MTA6IEFkZCB0ZXN0IGZvciBJRExFJ3Mgc2VhcmNoIGRpYWxvZy4KICAgT3JpZ2luYWwgcGF0Y2ggYnkgV2VzdGxleSBNYXJ0w61uZXouCiAKLS0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgdW5kbyBkZWxlZ2F0b3IuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthciAuCistIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLiAgUGF0Y2ggbW9zdGx5IGJ5CisgIFNhaW1hZGhhdiBIZWJsaWthciAuCiAKIC0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgogCkBAIC04MiwxMSArMTU1LDYgQEAKICAgTUFSSyBpbiBSRUFETUUudHh0IGFuZCBvcGVuIHRoaXMgYW5kIE5FV1MudHh0IHdpdGggJ2FzY2lpJy4KICAgUmUtZW5jb2RlIENSRURJVFMudHh0IHRvIHV0Zi04IGFuZCBvcGVuIGl0IHdpdGggJ3V0Zi04Jy4KIAotCi1XaGF0J3MgTmV3IGluIElETEUgMy41LjE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09Ci0qUmVsZWFzZSBkYXRlOiAyMDE1LTEyLTA2KgotCiAtIElzc3VlIDE1MzQ4OiBTdG9wIHRoZSBkZWJ1Z2dlciBlbmdpbmUgKG5vcm1hbGx5IGluIGEgdXNlciBwcm9jZXNzKQogICBiZWZvcmUgY2xvc2luZyB0aGUgZGVidWdnZXIgd2luZG93IChydW5uaW5nIGluIHRoZSBJRExFIHByb2Nlc3MpLgogICBUaGlzIHByZXZlbnRzIHRoZSBSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0IGIvTGliL2lkbGVsaWIvUkVBRE1FLnR4dAppbmRleCBmZjQ0NTA0Li41MWU4ZWY1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9SRUFETUUudHh0CisrKyBiL0xpYi9pZGxlbGliL1JFQURNRS50eHQKQEAgLTI5LDYxICsyOSw2MSBAQAogCiBJbXBsZW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLS0KLUF1dG9Db21wbGV0ZS5weSAgICMgQ29tcGxldGUgYXR0cmlidXRlIG5hbWVzIG9yIGZpbGVuYW1lcy4KLUF1dG9Db21wbGV0ZVdpbmRvdy5weSAgIyBEaXNwbGF5IGNvbXBsZXRpb25zLgotQXV0b0V4cGFuZC5weSAgICAgIyBFeHBhbmQgd29yZCB3aXRoIHByZXZpb3VzIHdvcmQgaW4gZmlsZS4KLUJpbmRpbmdzLnB5ICAgICAgICMgRGVmaW5lIG1vc3Qgb2YgSURMRSBtZW51LgotQ2FsbFRpcFdpbmRvdy5weSAgIyBEaXNwbGF5IGNhbGx0aXAuCi1DYWxsVGlwcy5weSAgICAgICAjIENyZWF0ZSBjYWxsdGlwIHRleHQuCi1DbGFzc0Jyb3dzZXIucHkgICAjIENyZWF0ZSBtb2R1bGUgYnJvd3NlciB3aW5kb3cuCi1Db2RlQ29udGV4dC5weSAgICAjIFNob3cgY29tcG91bmQgc3RhdGVtZW50IGhlYWRlcnMgb3RoZXJ3aXNlIG5vdCB2aXNpYmxlLgotQ29sb3JEZWxlZ2F0b3IucHkgIyBDb2xvcml6ZSB0ZXh0IChuaW0pLgotRGVidWdnZXIucHkgICAgICAgIyBEZWJ1ZyBjb2RlIHJ1biBmcm9tIGVkaXRvcjsgc2hvdyB3aW5kb3cuCi1EZWxlZ2F0b3IucHkgICAgICAjIERlZmluZSBiYXNlIGNsYXNzIGZvciBkZWxlZ2F0b3JzIChuaW0pLgotRWRpdG9yV2luZG93LnB5ICAgIyBEZWZpbmUgbW9zdCBvZiBlZGl0b3IgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLgotRmlsZUxpc3QucHkgICAgICAgIyBPcGVuIGZpbGVzIGFuZCBtYW5hZ2UgbGlzdCBvZiBvcGVuIHdpbmRvd3MgKG5pbSkuCi1Gb3JtYXRQYXJhZ3JhcGgucHkjIFJlLXdyYXAgbXVsdGlsaW5lIHN0cmluZ3MgYW5kIGNvbW1lbnRzLgotR3JlcERpYWxvZy5weSAgICAgIyBGaW5kIGFsbCBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIG11bHRpcGxlIGZpbGVzLgotSHlwZXJQYXJzZXIucHkgICAgIyBQYXJzZSBjb2RlIGFyb3VuZCBhIGdpdmVuIGluZGV4LgotSU9CaW5kaW5nLnB5ICAgICAgIyBPcGVuLCByZWFkLCBhbmQgd3JpdGUgZmlsZXMKLUlkbGVIaXN0b3J5LnB5ICAgICMgR2V0IHByZXZpb3VzIG9yIG5leHQgdXNlciBpbnB1dCBpbiBzaGVsbCAobmltKQotTXVsdGlDYWxsLnB5ICAgICAgIyBXcmFwIHRrIHdpZGdldCB0byBhbGxvdyBtdWx0aXBsZSBjYWxscyBwZXIgZXZlbnQgKG5pbSkuCi1NdWx0aVN0YXR1c0Jhci5weSAjIERlZmluZSBzdGF0dXMgYmFyIGZvciB3aW5kb3dzIChuaW0pLgotT2JqZWN0QnJvd3Nlci5weSAgIyBEZWZpbmUgY2xhc3MgdXNlZCBpbiBTdGFja1ZpZXdlciAobmltKS4KLU91dHB1dFdpbmRvdy5weSAgICMgQ3JlYXRlIHdpbmRvdyBmb3IgZ3JlcCBvdXRwdXQuCi1QYXJlbk1hdGNoLnB5ICAgICAjIE1hdGNoIGZlbmNlcG9zdHM6ICgpLCBbXSwgYW5kIHt9LgotUGF0aEJyb3dzZXIucHkgICAgIyBDcmVhdGUgcGF0aCBicm93c2VyIHdpbmRvdy4KLVBlcmNvbGF0b3IucHkgICAgICMgTWFuYWdlIGRlbGVnYXRvciBzdGFjayAobmltKS4KLVB5UGFyc2UucHkgICAgICAgICMgR2l2ZSBpbmZvcm1hdGlvbiBvbiBjb2RlIGluZGVudGF0aW9uCi1QeVNoZWxsLnB5ICAgICAgICAjIFN0YXJ0IElETEUsIG1hbmFnZSBzaGVsbCwgY29tcGxldGUgZWRpdG9yIHdpbmRvdwotUmVtb3RlRGVidWdnZXIucHkgIyBEZWJ1ZyBjb2RlIHJ1biBpbiByZW1vdGUgcHJvY2Vzcy4KLVJlbW90ZU9iamVjdEJyb3dzZXIucHkgIyBDb21tdW5pY2F0ZSBvYmplY3RzIGJldHdlZW4gcHJvY2Vzc2VzIHdpdGggcnBjIChuaW0pLgotUmVwbGFjZURpYWxvZy5weSAgIyBTZWFyY2ggYW5kIHJlcGxhY2UgcGF0dGVybiBpbiB0ZXh0LgotUnN0cmlwRXh0ZW5zaW9uLnB5IyBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlCi1TY3JpcHRCaW5kaW5nLnB5ICAjIENoZWNrIGFuZCBydW4gdXNlciBjb2RlLgotU2Nyb2xsZWRMaXN0LnB5ICAgIyBEZWZpbmUgU2Nyb2xsZWRMaXN0IHdpZGdldCBmb3IgSURMRSAobmltKS4KLVNlYXJjaERpYWxvZy5weSAgICMgU2VhcmNoIGZvciBwYXR0ZXJuIGluIHRleHQuCi1TZWFyY2hEaWFsb2dCYXNlLnB5ICAjIERlZmluZSBiYXNlIGZvciBzZWFyY2gsIHJlcGxhY2UsIGFuZCBncmVwIGRpYWxvZ3MuCi1TZWFyY2hFbmdpbmUucHkgICAjIERlZmluZSBlbmdpbmUgZm9yIGFsbCAzIHNlYXJjaCBkaWFsb2dzLgotU3RhY2tWaWV3ZXIucHkgICAgIyBWaWV3IHN0YWNrIGFmdGVyIGV4Y2VwdGlvbi4KLVRyZWVXaWRnZXQucHkgICAgICMgRGVmaW5lIHRyZWUgd2lkZ2VyLCB1c2VkIGluIGJyb3dzZXJzIChuaW0pLgotVW5kb0RlbGVnYXRvci5weSAgIyBNYW5hZ2UgdW5kbyBzdGFjay4KLVdpZGdldFJlZGlyZWN0b3IucHkgIyBJbnRlcmNlcHQgd2lkZ2V0IHN1YmNvbW1hbmRzIChmb3IgcGVyY29sYXRvcikgKG5pbSkuCi1XaW5kb3dMaXN0LnB5ICAgICAjIE1hbmFnZSB3aW5kb3cgbGlzdCBhbmQgZGVmaW5lIGxpc3RlZCB0b3AgbGV2ZWwuCi1ab29tSGVpZ2h0LnB5ICAgICAjIFpvb20gd2luZG93IHRvIGZ1bGwgaGVpZ2h0IG9mIHNjcmVlbi4KLWFib3V0RGlhbG9nLnB5ICAgICMgRGlzcGxheSBBYm91dCBJRExFIGRpYWxvZy4KLWNvbmZpZ0RpYWxvZy5weSAgICMgRGlzcGxheSB1c2VyIGNvbmZpZ3VyYXRpb24gZGlhbG9ncy4KLWNvbmZpZ0hhbmRsZXIucHkgICMgTG9hZCwgZmV0Y2gsIGFuZCBzYXZlIGNvbmZpZ3VyYXRpb24gKG5pbSkuCi1jb25maWdIZWxwU291cmNlRWRpdC5weSAgIyBTcGVjaWZ5IGhlbHAgc291cmNlLgotY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkgICMgU3BlZmlmeSB1c2VyIGNvbmZpZyBzZWN0aW9uIG5hbWUKLWR5bk9wdGlvbk1lbnVXaWRnZXQucHkgICMgZGVmaW5lIG11dGFibGUgT3B0aW9uTWVudSB3aWRnZXQgKG5pbSkuCithdXRvY29tcGxldGUucHkgICAjIENvbXBsZXRlIGF0dHJpYnV0ZSBuYW1lcyBvciBmaWxlbmFtZXMuCithdXRvY29tcGxldGVfdy5weSAjIERpc3BsYXkgY29tcGxldGlvbnMuCithdXRvZXhwYW5kLnB5ICAgICAjIEV4cGFuZCB3b3JkIHdpdGggcHJldmlvdXMgd29yZCBpbiBmaWxlLgorYnJvd3Nlci5weSAgICAgICAgIyBDcmVhdGUgbW9kdWxlIGJyb3dzZXIgd2luZG93LgorY2FsbHRpcF93LnB5ICAgICAgIyBEaXNwbGF5IGNhbGx0aXAuCitjYWxsdGlwcy5weSAgICAgICAjIENyZWF0ZSBjYWxsdGlwIHRleHQuCitjb2RlY29udGV4dC5weSAgICAjIFNob3cgY29tcG91bmQgc3RhdGVtZW50IGhlYWRlcnMgb3RoZXJ3aXNlIG5vdCB2aXNpYmxlLgorY29sb3JpemVyLnB5ICAgICAgIyBDb2xvcml6ZSB0ZXh0IChuaW0pCitjb25maWcucHkgICAgICAgICAjIExvYWQsIGZldGNoLCBhbmQgc2F2ZSBjb25maWd1cmF0aW9uIChuaW0pLgorY29uZmlnZGlhbG9nLnB5ICAgIyBEaXNwbGF5IHVzZXIgY29uZmlndXJhdGlvbiBkaWFsb2dzLgorY29uZmlnX2hlbHAucHkgICAgIyBTcGVjaWZ5IGhlbHAgc291cmNlIGluIGNvbmZpZ2RpYWxvZy4KK2NvbmZpZ19rZXkucHkgICAgICMgQ2hhbmdlIGtleWJpbmRpbmdzLgorZHlub3B0aW9uLnB5ICAgICAgIyBEZWZpbmUgbXV0YWJsZSBPcHRpb25NZW51IHdpZGdldCAobmltKS4KK2RlYnVnb2JqLnB5ICAgICAgICMgRGVmaW5lIGNsYXNzIHVzZWQgaW4gc3RhY2t2aWV3ZXIuCitkZWJ1Z29ial9yLnB5ICAgICAjIENvbW11bmljYXRlIG9iamVjdHMgYmV0d2VlbiBwcm9jZXNzZXMgd2l0aCBycGMgKG5pbSkuCitkZWJ1Z2dlci5weSAgICAgICAjIERlYnVnIGNvZGUgcnVuIGZyb20gc2hlbGwgb3IgZWRpdG9yOyBzaG93IHdpbmRvdy4KK2RlYnVnZ2VyX3IucHkgICAgICMgRGVidWcgY29kZSBydW4gaW4gcmVtb3RlIHByb2Nlc3MuCitkZWxlZ2F0b3IucHkgICAgICAjIERlZmluZSBiYXNlIGNsYXNzIGZvciBkZWxlZ2F0b3JzIChuaW0pLgorZWRpdG9yLnB5ICAgICAgICAgIyBEZWZpbmUgbW9zdCBvZiBlZGl0b3IgYW5kIHV0aWxpdHkgZnVuY3Rpb25zLgorZmlsZWxpc3QucHkgICAgICAgIyBPcGVuIGZpbGVzIGFuZCBtYW5hZ2UgbGlzdCBvZiBvcGVuIHdpbmRvd3MgKG5pbSkuCitncmVwLnB5ICAgICAgICAgICAjIEZpbmQgYWxsIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gbXVsdGlwbGUgZmlsZXMuCiBoZWxwLnB5ICAgICAgICAgICAjIERpc3BsYXkgSURMRSdzIGh0bWwgZG9jLgota2V5YmluZGluZ0RpYWxvZy5weSAgIyBDaGFuZ2Uga2V5YmluZGluZ3MuCi1tYWNvc3hTdXBwb3J0LnB5ICAjIEhlbHAgSURMRSBydW4gb24gTWFjcyAobmltKS4KK2hlbHBfYWJvdXQucHkgICAgICMgRGlzcGxheSBBYm91dCBJRExFIGRpYWxvZy4KK2hpc3RvcnkucHkgICAgICAgICMgR2V0IHByZXZpb3VzIG9yIG5leHQgdXNlciBpbnB1dCBpbiBzaGVsbCAobmltKQoraHlwZXJwYXJzZXIucHkgICAgIyBQYXJzZSBjb2RlIGFyb3VuZCBhIGdpdmVuIGluZGV4LgoraW9tZW51LnB5ICAgICAgICAgIyBPcGVuLCByZWFkLCBhbmQgd3JpdGUgZmlsZXMKK21hY29zeC5weSAgICAgICAgICMgSGVscCBJRExFIHJ1biBvbiBNYWNzIChuaW0pLgorbWFpbm1lbnUucHkgICAgICAgIyBEZWZpbmUgbW9zdCBvZiBJRExFIG1lbnUuCittdWx0aWNhbGwucHkgICAgICAjIFdyYXAgdGsgd2lkZ2V0IHRvIGFsbG93IG11bHRpcGxlIGNhbGxzIHBlciBldmVudCAobmltKS4KK291dHdpbi5weSAgICAgICAgICMgQ3JlYXRlIHdpbmRvdyBmb3IgZ3JlcCBvdXRwdXQuCitwYXJhZ3JhcGgucHkgICAgICAjIFJlLXdyYXAgbXVsdGlsaW5lIHN0cmluZ3MgYW5kIGNvbW1lbnRzLgorcGFyZW5tYXRjaC5weSAgICAgIyBNYXRjaCBmZW5jZXBvc3RzOiAoKSwgW10sIGFuZCB7fS4KK3BhdGhicm93c2VyLnB5ICAgICMgQ3JlYXRlIHBhdGggYnJvd3NlciB3aW5kb3cuCitwZXJjb2xhdG9yLnB5ICAgICAjIE1hbmFnZSBkZWxlZ2F0b3Igc3RhY2sgKG5pbSkuCitweXBhcnNlLnB5ICAgICAgICAjIEdpdmUgaW5mb3JtYXRpb24gb24gY29kZSBpbmRlbnRhdGlvbgorcHlzaGVsbC5weSAgICAgICAgIyBTdGFydCBJRExFLCBtYW5hZ2Ugc2hlbGwsIGNvbXBsZXRlIGVkaXRvciB3aW5kb3cKK3F1ZXJ5LnB5ICAgICAgICAgICMgUXVlcnkgdXNlciBmb3IgaW5mb3JtYXRpb24KK3JlZGlyZWN0b3IucHkgICAgICMgSW50ZXJjZXB0IHdpZGdldCBzdWJjb21tYW5kcyAoZm9yIHBlcmNvbGF0b3IpIChuaW0pLgorcmVwbGFjZS5weSAgICAgICAgIyBTZWFyY2ggYW5kIHJlcGxhY2UgcGF0dGVybiBpbiB0ZXh0LgogcnBjLnB5ICAgICAgICAgICAgIyBDb21tdWljYXRlIGJldHdlZW4gaWRsZSBhbmQgdXNlciBwcm9jZXNzZXMgKG5pbSkuCityc3RyaXAucHkgICAgICAgICAjIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UuCiBydW4ucHkgICAgICAgICAgICAjIE1hbmFnZSB1c2VyIGNvZGUgZXhlY3V0aW9uIHN1YnByb2Nlc3MuCitydW5zY3JpcHQucHkgICAgICAjIENoZWNrIGFuZCBydW4gdXNlciBjb2RlLgorc2Nyb2xsZWRsaXN0LnB5ICAgIyBEZWZpbmUgc2Nyb2xsZWRsaXN0IHdpZGdldCBmb3IgSURMRSAobmltKS4KK3NlYXJjaC5weSAgICAgICAgICMgU2VhcmNoIGZvciBwYXR0ZXJuIGluIHRleHQuCitzZWFyY2hiYXNlLnB5ICAgICAjIERlZmluZSBiYXNlIGZvciBzZWFyY2gsIHJlcGxhY2UsIGFuZCBncmVwIGRpYWxvZ3MuCitzZWFyY2hlbmdpbmUucHkgICAjIERlZmluZSBlbmdpbmUgZm9yIGFsbCAzIHNlYXJjaCBkaWFsb2dzLgorc3RhY2t2aWV3ZXIucHkgICAgIyBWaWV3IHN0YWNrIGFmdGVyIGV4Y2VwdGlvbi4KK3N0YXR1c2Jhci5weSAgICAgICMgRGVmaW5lIHN0YXR1cyBiYXIgZm9yIHdpbmRvd3MgKG5pbSkuCiB0YWJiZWRwYWdlcy5weSAgICAjIERlZmluZSB0YWJiZWQgcGFnZXMgd2lkZ2V0IChuaW0pLgotdGV4dFZpZXcucHkgICAgICAgIyBEZWZpbmUgcmVhZC1vbmx5IHRleHQgd2lkZ2V0IChuaW0pLgordGV4dHZpZXcucHkgICAgICAgIyBEZWZpbmUgcmVhZC1vbmx5IHRleHQgd2lkZ2V0IChuaW0pLgordHJlZS5weSAgICAgICAgICAgIyBEZWZpbmUgdHJlZSB3aWRnZXIsIHVzZWQgaW4gYnJvd3NlcnMgKG5pbSkuCit1bmRvLnB5ICAgICAgICAgICAjIE1hbmFnZSB1bmRvIHN0YWNrLgord2luZG93cy5weSAgICAgICAgIyBNYW5hZ2Ugd2luZG93IGxpc3QgYW5kIGRlZmluZSBsaXN0ZWQgdG9wIGxldmVsLgorem9vbWhlaWdodC5weSAgICAgIyBab29tIHdpbmRvdyB0byBmdWxsIGhlaWdodCBvZiBzY3JlZW4uCiAKIENvbmZpZ3VyYXRpb24KIC0tLS0tLS0tLS0tLS0KQEAgLTEwNCwxMjcgKzEwNCwxNDggQEAKIAogU3ViZGlyZWN0b3JpZXMKIC0tLS0tLS0tLS0tLS0tCi1JY29ucyAgIyBzbWFsbCBpbWFnZSBmaWxlcwotaWRsZV90ZXN0ICAjIGZpbGVzIGZvciBodW1hbiB0ZXN0IGFuZCBhdXRvbWF0ZWQgdW5pdCB0ZXN0cworSWNvbnMgICAgICAgICMgc21hbGwgaW1hZ2UgZmlsZXMKK2lkbGVfdGVzdCAgICAjIGZpbGVzIGZvciBodW1hbiB0ZXN0IGFuZCBhdXRvbWF0ZWQgdW5pdCB0ZXN0cwogCiBVbnVzZWQgYW5kIERlcHJlY2F0ZWQgZmlsZXMgYW5kIG9iamVjdHMgKG5pbSkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotRWRpdG9yV2luZG93LnB5OiBIZWxwZGlhbG9nIGFuZCBoZWxwRGlhbG9nCi1Ub29sVGlwLnB5OiB1bnVzZWQuCi1oZWxwLnR4dAotaWRsZXZlci5weQordG9vbHRpcC5weSAjIHVudXNlZAorCiAKIAogSURMRSBNRU5VUwotVG9wIGxldmVsIGl0ZW1zIGFuZCBtb3N0IHN1Ym1lbnUgaXRlbXMgYXJlIGRlZmluZWQgaW4gQmluZGluZ3MuCitUb3AgbGV2ZWwgaXRlbXMgYW5kIG1vc3Qgc3VibWVudSBpdGVtcyBhcmUgZGVmaW5lZCBpbiBtYWlubWVudS4KIEV4dGVuc3Rpb25zIGFkZCBzdWJtZW51IGl0ZW1zIHdoZW4gYWN0aXZlLiAgVGhlIG5hbWVzIGdpdmVuIGFyZQogZm91bmQsIHF1b3RlZCwgaW4gb25lIG9mIHRoZXNlIG1vZHVsZXMsIHBhaXJlZCB3aXRoIGEgJzw8cHNldWRvZXZlbnQ+PicuCiBFYWNoIHBzZXVkb2V2ZW50IGlzIGJvdW5kIHRvIGFuIGV2ZW50IGhhbmRsZXIuICBTb21lIGV2ZW50IGhhbmRsZXJzCiBjYWxsIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBkb2VzIHRoZSBhY3R1YWwgd29yay4gIFRoZSBhbm5vdGF0aW9ucyBiZWxvdwogYXJlIGludGVuZGVkIHRvIGF0IGxlYXN0IGdpdmUgdGhlIG1vZHVsZSB3aGVyZSB0aGUgYWN0dWFsIHdvcmsgaXMgZG9uZS4KKydlRVcnID0gZWRpdG9yLkVkaXRvcldpbmRvdwogCi1GaWxlICAjIElPQmluZGlnIGV4Y2VwdCBhcyBub3RlZAotICBOZXcgRmlsZQotICBPcGVuLi4uICAjIElPQmluZGluZy5vcGVuCi0gIE9wZW4gTW9kdWxlCitGaWxlCisgIE5ldyBGaWxlICAgICAgICAgIyBlRVcubmV3X2NhbGxiYWNrCisgIE9wZW4uLi4gICAgICAgICAgIyBpb21lbnUub3BlbgorICBPcGVuIE1vZHVsZSAgICAgICMgZUV3Lm9wZW5fbW9kdWxlCiAgIFJlY2VudCBGaWxlcwotICBDbGFzcyBCcm93c2VyICAjIENsYXNzIEJyb3dzZXIKLSAgUGF0aCBCcm93c2VyICAjIFBhdGggQnJvd3NlcgorICBDbGFzcyBCcm93c2VyICAgICMgZUVXLm9wZW5fY2xhc3NfYnJvd3NlciwgYnJvd3Nlci5DbGFzc0Jyb3dzZXIKKyAgUGF0aCBCcm93c2VyICAgICAjIGVFVy5vcGVuX3BhdGhfYnJvd3NlciwgcGF0aGJyb3dzZXIKICAgLS0tCi0gIFNhdmUgICMgSURCaW5kaW5nLnNhdmUKLSAgU2F2ZSBBcy4uLiAgIyBJT0JpbmRpbmcuc2F2ZV9hcwotICBTYXZlIENvcHkgQXMuLi4gICMgSU9CaW5kbGluZy5zYXZlX2FfY29weQorICBTYXZlICAgICAgICAgICAgICMgaW9tZW51LnNhdmUKKyAgU2F2ZSBBcy4uLiAgICAgICAjIGlvbWVudS5zYXZlX2FzCisgIFNhdmUgQ29weSBBcy4uLiAgIyBpb21lbnUuc2F2ZV9hX2NvcHkKICAgLS0tCi0gIFByaW50IFdpbmRvdyAgIyBJT0JpbmRpbmcucHJpbnRfd2luZG93CisgIFByaW50IFdpbmRvdyAgICAgIyBpb21lbnUucHJpbnRfd2luZG93CiAgIC0tLQotICBDbG9zZQotICBFeGl0CisgIENsb3NlICAgICAgICAgICAgIyBlRVcuY2xvc2VfZXZlbnQKKyAgRXhpdCAgICAgICAgICAgICAjIGZsaXN0LmNsb3NlX2FsbF9jYWxsYmFjayAoYm91bmQgaW4gZUVXKQogCiBFZGl0Ci0gIFVuZG8gICMgdW5kb0RlbGVnYXRvcgotICBSZWRvICAjIHVuZG9EZWxlZ2F0b3IKLSAgLS0tCi0gIEN1dAotICBDb3B5Ci0gIFBhc3RlCi0gIFNlbGVjdCBBbGwKLSAgLS0tICAjIE5leHQgNSBpdGVtcyB1c2UgU2VhcmNoRW5naW5lOyBkaWFsb2dzIHVzZSBTZWFyY2hEaWFsb2dCYXNlCi0gIEZpbmQgICMgU2VhcmNoIERpYWxvZwotICBGaW5kIEFnYWluCi0gIEZpbmQgU2VsZWN0aW9uCi0gIEZpbmQgaW4gRmlsZXMuLi4gICMgR3JlcERpYWxvZwotICBSZXBsYWNlLi4uICAjIFJlcGxhY2VEaWFsb2cKLSAgR28gdG8gTGluZQotICBTaG93IENvbXBsZXRpb25zICAjIEF1dG9Db21wbGV0ZSBleHRlbnNpb24gYW5kIEF1dG9Db21wbGV0ZVdpZG93ICgmSFApCi0gIEV4cGFuZCBXb3JkICAjIEF1dG9FeHBhbmQgZXh0ZW5zaW9uCi0gIFNob3cgY2FsbCB0aXAgICMgQ2FsbHRpcHMgZXh0ZW5zaW9uIGFuZCBDYWxsdGlwV2luZG93ICgmIEh5cGVycGFyc2VyKQotICBTaG93IHN1cnJvdW5kaW5nIHBhcmVucyAgIyBQYXJlbk1hdGNoICgmIEh5cGVycGFyc2VyKQorICBVbmRvICAgICAgICAgICAgICMgdW5kb2RlbGVnYXRvcgorICBSZWRvICAgICAgICAgICAgICMgdW5kb2RlbGVnYXRvcgorICAtLS0gICAgICAgICAgICAgICMgZUVXLnJpZ2h0X21lbnVfZXZlbnQKKyAgQ3V0ICAgICAgICAgICAgICAjIGVFVy5jdXQKKyAgQ29weSAgICAgICAgICAgICAjIGVFVy5jb3B5CisgIFBhc3RlICAgICAgICAgICAgIyBlRVcucGFzdAorICBTZWxlY3QgQWxsICAgICAgICMgZUVXLnNlbGVjdF9hbGwgKCsgc2VlIGVFVy5yZW1vdmVfc2VsZWN0aW9uKQorICAtLS0gICAgICAgICAgICAgICMgTmV4dCA1IGl0ZW1zIHVzZSBzZWFyY2hlbmdpbmU7IGRpYWxvZ3MgdXNlIHNlYXJjaGJhc2UKKyAgRmluZCAgICAgICAgICAgICAjIGVFVy5maW5kX2V2ZW50LCBzZWFyY2guU2VhcmNoRGlhbG9nLmZpbmQKKyAgRmluZCBBZ2FpbiAgICAgICAjIGVFVy5maW5kX2FnYWluX2V2ZW50LCBzU0QuZmluZF9hZ2FpbgorICBGaW5kIFNlbGVjdGlvbiAgICMgZUVXLmZpbmRfc2VsZWN0aW9uX2V2ZW50LCBzU0QuZmluZF9zZWxlY3Rpb24KKyAgRmluZCBpbiBGaWxlcy4uLiAjIGVFVy5maW5kX2luX2ZpbGVzX2V2ZW50LCBncmVwCisgIFJlcGxhY2UuLi4gICAgICAgIyBlRVcucmVwbGFjZV9ldmVudCwgcmVwbGFjZS5SZXBsYWNlRGlhbG9nLnJlcGxhY2UKKyAgR28gdG8gTGluZSAgICAgICAjIGVFVy5nb3RvX2xpbmVfZXZlbnQKKyAgU2hvdyBDb21wbGV0aW9ucyAjIGF1dG9jb21wbGV0ZSBleHRlbnNpb24gYW5kIGF1dG9jb21wbGV0ZVdpZG93ICgmSFApCisgIEV4cGFuZCBXb3JkICAgICAgIyBhdXRvZXhwYW5kIGV4dGVuc2lvbgorICBTaG93IGNhbGwgdGlwICAgICMgQ2FsbHRpcHMgZXh0ZW5zaW9uIGFuZCBDYWxsdGlwV2luZG93ICgmIEh5cGVycGFyc2VyKQorICBTaG93IHN1cnJvdW5kaW5nIHBhcmVucyAgIyBwYXJlbm1hdGNoICgmIEh5cGVycGFyc2VyKQogCi1TaGVsbCAgIyBQeVNoZWxsCi0gIFZpZXcgTGFzdCBSZXN0YXJ0ICAgICMgUHlTaGVsbC5QeVNoZWxsLnZpZXdfcmVzdGFydF9tYXJrCi0gIFJlc3RhcnQgU2hlbGwgICAgICAgICMgUHlTaGVsbC5QeVNoZWxsLnJlc3RhcnRfc2hlbGwKK1NoZWxsICAjIHB5c2hlbGwKKyAgVmlldyBMYXN0IFJlc3RhcnQgICAgIyBweXNoZWxsLlB5U2hlbGwudmlld19yZXN0YXJ0X21hcmsKKyAgUmVzdGFydCBTaGVsbCAgICAgICAgIyBweXNoZWxsLlB5U2hlbGwucmVzdGFydF9zaGVsbAogICBJbnRlcnJ1cHQgRXhlY3V0aW9uICAjIHB5c2hlbGwuUHlTaGVsbC5jYW5jZWxfY2FsbGJhY2sKIAogRGVidWcgKFNoZWxsIG9ubHkpCiAgIEdvIHRvIEZpbGUvTGluZQotICBEZWJ1Z2dlciAgICAgICAgICAgICAgICMgRGVidWdnZXIsIFJlbW90ZURlYnVnZ2VyLCBQeVNoZWxsLnRvZ2dsZV9kZWJ1Z2VyCi0gIFN0YWNrIFZpZXdlciAgICAgICAgICAgIyBTdGFja1ZpZXdlciwgUHlTaGVsbC5vcGVuX3N0YWNrX3ZpZXdlcgotICBBdXRvLW9wZW4gU3RhY2sgVmlld2VyICMgU3RhY2tWaWV3ZXIKKyAgZGVidWdnZXIgICAgICAgICAjIGRlYnVnZ2VyLCBkZWJ1Z2dlcl9yLCBQeVNoZWxsLnRvZ2dsZV9kZWJ1Z2VyCisgIFN0YWNrIFZpZXdlciAgICAgIyBzdGFja3ZpZXdlciwgUHlTaGVsbC5vcGVuX3N0YWNrX3ZpZXdlcgorICBBdXRvLW9wZW4gU3RhY2sgVmlld2VyICAjIHN0YWNrdmlld2VyCiAKIEZvcm1hdCAoRWRpdG9yIG9ubHkpCi0gIEluZGVudCBSZWdpb24KLSAgRGVkZW50IFJlZ2lvbgotICBDb21tZW50IE91dCBSZWdpb24KLSAgVW5jb21tZW50IFJlZ2lvbgotICBUYWJpZnkgUmVnaW9uCi0gIFVudGFiaWZ5IFJlZ2lvbgotICBUb2dnbGUgVGFicwotICBOZXcgSW5kZW50IFdpZHRoCi0gIEZvcm1hdCBQYXJhZ3JhcGggICMgRm9ybWF0UGFyYWdyYXBoIGV4dGVuc2lvbgorICBJbmRlbnQgUmVnaW9uICAgICMgZUVXLmluZGVudF9yZWdpb25fZXZlbnQKKyAgRGVkZW50IFJlZ2lvbiAgICAjIGVFVy5kZWRlbnRfcmVnaW9uX2V2ZW50CisgIENvbW1lbnQgT3V0IFJlZy4gIyBlRVcuY29tbWVudF9yZWdpb25fZXZlbnQKKyAgVW5jb21tZW50IFJlZ2lvbiAjIGVFVy51bmNvbW1lbnRfcmVnaW9uX2V2ZW50CisgIFRhYmlmeSBSZWdpb24gICAgIyBlRVcudGFiaWZ5X3JlZ2lvbl9ldmVudAorICBVbnRhYmlmeSBSZWdpb24gICMgZUVXLnVudGFiaWZ5X3JlZ2lvbl9ldmVudAorICBUb2dnbGUgVGFicyAgICAgICMgZUVXLnRvZ2dsZV90YWJzX2V2ZW50CisgIE5ldyBJbmRlbnQgV2lkdGggIyBlRVcuY2hhbmdlX2luZGVudHdpZHRoX2V2ZW50CisgIEZvcm1hdCBQYXJhZ3JhcGggIyBwYXJhZ3JhcGggZXh0ZW5zaW9uCiAgIC0tLQotICBTdHJpcCB0YWlsaW5nIHdoaXRlc3BhY2UgICMgUnN0cmlwRXh0ZW5zaW9uIGV4dGVuc2lvbgorICBTdHJpcCB0YWlsaW5nIHdoaXRlc3BhY2UgICMgcnN0cmlwIGV4dGVuc2lvbgogCiBSdW4gKEVkaXRvciBvbmx5KQotICBQeXRob24gU2hlbGwgICMgUHlTaGVsbAorICBQeXRob24gU2hlbGwgICAgICMgcHlzaGVsbAogICAtLS0KLSAgQ2hlY2sgTW9kdWxlICAjIFNjcmlwdEJpbmRpbmcKLSAgUnVuIE1vZHVsZSAgIyBTY3JpcHRCaW5kaW5nCisgIENoZWNrIE1vZHVsZSAgICAgIyBydW5zY3JpcHQKKyAgUnVuIE1vZHVsZSAgICAgICAjIHJ1bnNjcmlwdAogCiBPcHRpb25zCi0gIENvbmZpZ3VyZSBJRExFICAjIGNvbmZpZ0RpYWxvZworICBDb25maWd1cmUgSURMRSAgICMgZUVXLmNvbmZpZ19kaWFsb2csIGNvbmZpZ2RpYWxvZwogICAgICh0YWJzIGluIHRoZSBkaWFsb2cpCi0gICAgRm9udCB0YWIgICMgb25maWctbWFpbi5kZWYKLSAgICBIaWdobGlnaHQgdGFiICAjIGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLCBjb25maWctaGlnaGxpZ2h0LmRlZgotICAgIEtleXMgdGFiICAjIGtleWJpbmRpbmdEaWFsb2csIGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLCBvbmZpZy1rZXVzLmRlZgotICAgIEdlbmVyYWwgdGFiICAjIGNvbmZpZ0hlbHBTb3VyY2VFZGl0LCBjb25maWctbWFpbi5kZWYKLSAgQ29uZmlndXJlIEV4dGVuc2lvbnMgICMgY29uZmlnRGlhbG9nCi0gICAgWHl6IHRhYiAgIyB4eXoucHksIGNvbmZpZy1leHRlbnNpb25zLmRlZgorICAgIEZvbnQgdGFiICAgICAgICMgY29uZmlnLW1haW4uZGVmCisgICAgSGlnaGxpZ2h0IHRhYiAgIyBxdWVyeSwgY29uZmlnLWhpZ2hsaWdodC5kZWYKKyAgICBLZXlzIHRhYiAgICAgICAjIHF1ZXJ5LCBjb25maWdfa2V5LCBjb25maWdfa2V5cy5kZWYKKyAgICBHZW5lcmFsIHRhYiAgICAjIGNvbmZpZ19oZWxwLCBjb25maWctbWFpbi5kZWYKKyAgICBFeHRlbnNpb25zIHRhYiAjIGNvbmZpZy1leHRlbnNpb25zLmRlZiwgY29ycmVzcG9uZGluZyAucHkKICAgLS0tCi0gIENvZGUgQ29udGV4dCAoZWRpdG9yIG9ubHkpICAjIENvZGVDb250ZXh0IGV4dGVuc2lvbgorICBDb2RlIENvbnRleHQgKGVkKSMgY29kZWNvbnRleHQgZXh0ZW5zaW9uCiAKIFdpbmRvdwotICBab29taGVpZ2h0ICAjIFpvb21IZWlnaHQgZXh0ZW5zaW9uCisgIFpvb21oZWlnaHQgICAgICAgIyB6b29taGVpZ2h0IGV4dGVuc2lvbgogICAtLS0KLSAgPG9wZW4gd2luZG93cz4gICMgV2luZG93TGlzdAorICA8b3BlbiB3aW5kb3dzPiAgICMgd2luZG93cwogCiBIZWxwCi0gIEFib3V0IElETEUgICMgYWJvdXREaWFsb2cKKyAgQWJvdXQgSURMRSAgICAgICAjIGVFVy5hYm91dF9kaWFsb2csIGhlbHBfYWJvdXQuQWJvdXREaWFsb2cgCiAgIC0tLQotICBJRExFIEhlbHAgICMgaGVscAotICBQeXRob24gRG9jCi0gIFR1cnRsZSBEZW1vCisgIElETEUgSGVscCAgICAgICAgIyBlRVcuaGVscF9kaWFsb2csIGhlbHBzaG93X2lkbGVoZWxwCisgIFB5dGhvbiBEb2MgICAgICAgIyBlRVcucHl0aG9uX2RvY3MKKyAgVHVydGxlIERlbW8gICAgICAjIGVFVy5vcGVuX3R1cnRsZV9kZW1vCiAgIC0tLQogICA8b3RoZXIgaGVscCBzb3VyY2VzPgogCiA8Q29udGV4dCBNZW51PiAocmlnaHQgY2xpY2spCi1EZWZpbmVkIGluIEVkaXRvcldpbmRvdywgUHlTaGVsbCwgT3V0cHV0Ci0gICBDdXQKLSAgIENvcHkKLSAgIFBhc3RlCi0gICAtLS0KLSAgIEdvIHRvIGZpbGUvbGluZSAoc2hlbGwgYW5kIG91dHB1dCBvbmx5KQotICAgU2V0IEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQotICAgQ2xlYXIgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCi0gRGVmaW5lZCBpbiBEZWJ1Z2dlcgotICAgR28gdG8gc291cmNlIGxpbmUKLSAgIFNob3cgc3RhY2sgZnJhbWUKKyAgRGVmaW5lZCBpbiBlZGl0b3IsIFB5U2hlbHB5c2hlbGx1dAorICAgIEN1dAorICAgIENvcHkKKyAgICBQYXN0ZQorICAgIC0tLQorICAgIEdvIHRvIGZpbGUvbGluZSAoc2hlbGwgYW5kIG91dHB1dCBvbmx5KQorICAgIFNldCBCcmVha3BvaW50IChlZGl0b3Igb25seSkKKyAgICBDbGVhciBCcmVha3BvaW50IChlZGl0b3Igb25seSkKKyAgRGVmaW5lZCBpbiBkZWJ1Z2dlcgorICAgIEdvIHRvIHNvdXJjZSBsaW5lCisgICAgU2hvdyBzdGFjayBmcmFtZQorCis8Tm8gbWVudT4KK0NlbnRlciBJbnNlcnQgICAgICAjIGVFVy5jZW50ZXJfaW5zZXJ0X2V2ZW50CisKKyAgCitDT0RFIFNUWUxFIC0tIEdlbmVyYWxseSBQRVAgOC4KKworaW1wb3J0CistLS0tLS0KK1B1dCBpbXBvcnQgYXQgdGhlIHRvcCwgdW5sZXNzIHRoZXJlIGlzIGEgZ29vZCByZWFzb24gb3RoZXJ3aXNlLgorUEVQIDggc2F5cyB0byBncm91cCBzdGRsaWIsIDNyZC1wYXJ0eSBkZXBlbmRlbmNpZXMsIGFuZCBwYWNrYWdlIGltcG9ydHMuCitGb3IgaWRsZWxpYiwgdGhlIGdyb3VwcyBhcmUgZ2VuZXJhbCBzdGRsaWIsIHRraW50ZXIsIGFuZCBpZGxlbGliLgorU29ydCBtb2R1bGVzIHdpdGhpbiBlYWNoIGdyb3VwLCBleGNlcHQgdGhhdCB0a2ludGVyLnR0ayBmb2xsb3dzIHRraW50ZXIuCitTb3J0ICdmcm9tIGlkbGVsaWIgaW1wb3J0IG1vZDEnIGFuZCAnZnJvbSBpZGxlbGliLm1vZDIgaW1wb3J0IG9iamVjdCcKK3RvZ2V0aGVyIGJ5IG1vZHVsZSwgaWdub3Jpbmcgd2l0aGluIG1vZHVsZSBvYmplY3RzLgorUHV0ICdpbXBvcnQgX19tYWluX18nIGFmdGVyIG90aGVyIGlkbGVsaWIgaW1wb3J0cy4KKworSW1wb3J0cyBvbmx5IG5lZWRlZCBmb3IgdGVzdGluZyBhcmUgcHV0IG5vdCBhdCB0aGUgdG9wIGJ1dCBpbiBhbgoraHRlc3QgZnVuY3Rpb24gZGVmIG9yICJpZiBfX25hbWVfXyA9PSAnX19tYWluX18nIiBjbGF1c2UuCisKK1dpdGhpbiBtb2R1bGUgaW1wb3J0cyBsaWtlICJmcm9tIGlkbGVsaWIubW9kIGltcG9ydCBjbGFzcyIgbWF5IGNhdXNlCitjaXJjdWxhciBpbXBvcnRzIHRvIGRlYWRsb2NrLiAgRXZlbiB3aXRob3V0IHRoaXMsIGNpcmN1bGFyIGltcG9ydHMgbWF5CityZXF1aXJlIGF0IGxlYXN0IG9uZSBvZiB0aGUgaW1wb3J0cyB0byBiZSBkZWxheWVkIHVudGlsIGEgZnVuY3Rpb24gY2FsbC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL19faW5pdF9fLnB5IGIvTGliL2lkbGVsaWIvX19pbml0X18ucHkKaW5kZXggNzExZjYxYi4uNzkxZGRlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvX19pbml0X18ucHkKKysrIGIvTGliL2lkbGVsaWIvX19pbml0X18ucHkKQEAgLTEsOCArMSwxMCBAQAogIiIiVGhlIGlkbGVsaWIgcGFja2FnZSBpbXBsZW1lbnRzIHRoZSBJZGxlIGFwcGxpY2F0aW9uLgogCiBJZGxlIGluY2x1ZGVzIGFuIGludGVyYWN0aXZlIHNoZWxsIGFuZCBlZGl0b3IuCitTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYsIElETEUgcmVxdWlyZXMgdGNsL3RrIDguNSBvciBsYXRlci4KIFVzZSB0aGUgZmlsZXMgbmFtZWQgaWRsZS4qIHRvIHN0YXJ0IElkbGUuCiAKIFRoZSBvdGhlciBmaWxlcyBhcmUgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbnMuICBUaGVpciBkZXRhaWxzIGFyZSBzdWJqZWN0IHRvCiBjaGFuZ2UuICBTZWUgUEVQIDQzNCBmb3IgbW9yZS4gIEltcG9ydCB0aGVtIGF0IHlvdXIgb3duIHJpc2suCiAiIiIKK3Rlc3RpbmcgPSBGYWxzZSAgIyBTZXQgVHJ1ZSBieSB0ZXN0LnRlc3RfaWRsZS4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5IGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKaW5kZXggMmVkZjVmNy4uNjM0OWVjNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvX19tYWluX18ucHkKKysrIGIvTGliL2lkbGVsaWIvX19tYWluX18ucHkKQEAgLTMsNiArMyw2IEBACiAKIFJ1biBJRExFIGFzIHB5dGhvbiAtbSBpZGxlbGliCiAiIiIKLWltcG9ydCBpZGxlbGliLlB5U2hlbGwKLWlkbGVsaWIuUHlTaGVsbC5tYWluKCkKK2ltcG9ydCBpZGxlbGliLnB5c2hlbGwKK2lkbGVsaWIucHlzaGVsbC5tYWluKCkKICMgVGhpcyBmaWxlIGRvZXMgbm90IHdvcmsgZm9yIDIuNzsgU2VlIGlzc3VlIDI0MjEyLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlLnB5CnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlLnB5CmluZGV4IGZmMDg1ZDUuLjFlNDRmYTUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGUucHkKQEAgLTEsMjkgKzEsMzAgQEAKLSIiIkF1dG9Db21wbGV0ZS5weSAtIEFuIElETEUgZXh0ZW5zaW9uIGZvciBhdXRvbWF0aWNhbGx5IGNvbXBsZXRpbmcgbmFtZXMuCisiIiJhdXRvY29tcGxldGUucHkgLSBBbiBJRExFIGV4dGVuc2lvbiBmb3IgYXV0b21hdGljYWxseSBjb21wbGV0aW5nIG5hbWVzLgogCiBUaGlzIGV4dGVuc2lvbiBjYW4gY29tcGxldGUgZWl0aGVyIGF0dHJpYnV0ZSBuYW1lcyBvciBmaWxlIG5hbWVzLiBJdCBjYW4gcG9wCiBhIHdpbmRvdyB3aXRoIGFsbCBhdmFpbGFibGUgbmFtZXMsIGZvciB0aGUgdXNlciB0byBzZWxlY3QgZnJvbS4KICIiIgogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotCi0jIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCi1JRF9DSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIgotCi0jIFRoZXNlIGNvbnN0YW50cyByZXByZXNlbnQgdGhlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcGxldGlvbnMKKyMgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBjb21wbGV0aW9ucy4KKyMgVGhleSBtdXN0IGJlIGRlZmluZWQgaGVyZSBzbyBhdXRvY29tcGxlX3cgY2FuIGltcG9ydCB0aGVtLgogQ09NUExFVEVfQVRUUklCVVRFUywgQ09NUExFVEVfRklMRVMgPSByYW5nZSgxLCAyKzEpCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgQXV0b0NvbXBsZXRlV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCi0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgYXV0b2NvbXBsZXRlX3cKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCiBpbXBvcnQgX19tYWluX18KIAorIyBUaGlzIHN0cmluZyBpbmNsdWRlcyBhbGwgY2hhcnMgdGhhdCBtYXkgYmUgaW4gYW4gaWRlbnRpZmllci4KKyMgVE9ETyBVcGRhdGUgdGhpcyBoZXJlIGFuZCBlbHNld2hlcmUuCitJRF9DSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIgorCiBTRVBTID0gb3Muc2VwCiBpZiBvcy5hbHRzZXA6ICAjIGUuZy4gJy8nIG9uIFdpbmRvd3MuLi4KICAgICBTRVBTICs9IG9zLmFsdHNlcAogCisKIGNsYXNzIEF1dG9Db21wbGV0ZToKIAogICAgIG1lbnVkZWZzID0gWwpAQCAtMzcsMTkgKzM4LDE3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbj1Ob25lKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgotICAgICAgICBpZiBlZGl0d2luIGlzIE5vbmU6ICAjIHN1YnByb2Nlc3MgYW5kIHRlc3QKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKLSAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgPSBOb25lCi0KLSAgICAgICAgIyBpZCBvZiBkZWxheWVkIGNhbGwsIGFuZCB0aGUgaW5kZXggb2YgdGhlIHRleHQgaW5zZXJ0IHdoZW4gdGhlIGRlbGF5ZWQKLSAgICAgICAgIyBjYWxsIHdhcyBpc3N1ZWQuIElmIF9kZWxheWVkX2NvbXBsZXRpb25faWQgaXMgTm9uZSwgdGhlcmUgaXMgbm8KLSAgICAgICAgIyBkZWxheWVkIGNhbGwuCi0gICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKLSAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4ID0gTm9uZQorICAgICAgICBpZiBlZGl0d2luIGlzIG5vdCBOb25lOiAgIyBub3QgaW4gc3VicHJvY2VzcyBvciB0ZXN0CisgICAgICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKKyAgICAgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93ID0gTm9uZQorICAgICAgICAgICAgIyBpZCBvZiBkZWxheWVkIGNhbGwsIGFuZCB0aGUgaW5kZXggb2YgdGhlIHRleHQgaW5zZXJ0IHdoZW4KKyAgICAgICAgICAgICMgdGhlIGRlbGF5ZWQgY2FsbCB3YXMgaXNzdWVkLiBJZiBfZGVsYXllZF9jb21wbGV0aW9uX2lkIGlzCisgICAgICAgICAgICAjIE5vbmUsIHRoZXJlIGlzIG5vIGRlbGF5ZWQgY2FsbC4KKyAgICAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleCA9IE5vbmUKIAogICAgIGRlZiBfbWFrZV9hdXRvY29tcGxldGVfd2luZG93KHNlbGYpOgotICAgICAgICByZXR1cm4gQXV0b0NvbXBsZXRlV2luZG93LkF1dG9Db21wbGV0ZVdpbmRvdyhzZWxmLnRleHQpCisgICAgICAgIHJldHVybiBhdXRvY29tcGxldGVfdy5BdXRvQ29tcGxldGVXaW5kb3coc2VsZi50ZXh0KQogCiAgICAgZGVmIF9yZW1vdmVfYXV0b2NvbXBsZXRlX3dpbmRvdyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgaWYgc2VsZi5hdXRvY29tcGxldGV3aW5kb3c6CkBAIC04MCwxNiArNzksMTcgQEAKICAgICAgICAgb3BlbiBhIGNvbXBsZXRpb24gbGlzdCBhZnRlciB0aGF0IChpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lCiAgICAgICAgIGNvbXBsZXRpb24pCiAgICAgICAgICIiIgotICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAibWNfc3RhdGUiKSBhbmQgZXZlbnQubWNfc3RhdGU6Ci0gICAgICAgICAgICAjIEEgbW9kaWZpZXIgd2FzIHByZXNzZWQgYWxvbmcgd2l0aCB0aGUgdGFiLCBjb250aW51ZSBhcyB1c3VhbC4KLSAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAibWNfc3RhdGUiKSBhbmQgZXZlbnQubWNfc3RhdGUgb3JcCisgICAgICAgICAgICAgICAgbm90IHNlbGYudGV4dC5nZXQoImluc2VydCBsaW5lc3RhcnQiLCAiaW5zZXJ0Iikuc3RyaXAoKToKKyAgICAgICAgICAgICMgQSBtb2RpZmllciB3YXMgcHJlc3NlZCBhbG9uZyB3aXRoIHRoZSB0YWIgb3IKKyAgICAgICAgICAgICMgdGhlcmUgaXMgb25seSBwcmV2aW91cyB3aGl0ZXNwYWNlIG9uIHRoaXMgbGluZSwgc28gdGFiLgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgaWYgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgYW5kIHNlbGYuYXV0b2NvbXBsZXRld2luZG93LmlzX2FjdGl2ZSgpOgogICAgICAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cuY29tcGxldGUoKQogICAgICAgICAgICAgcmV0dXJuICJicmVhayIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9wZW5lZCA9IHNlbGYub3Blbl9jb21wbGV0aW9ucyhGYWxzZSwgVHJ1ZSwgVHJ1ZSkKLSAgICAgICAgICAgIGlmIG9wZW5lZDoKLSAgICAgICAgICAgICAgICByZXR1cm4gImJyZWFrIgorICAgICAgICAgICAgcmV0dXJuICJicmVhayIgaWYgb3BlbmVkIGVsc2UgTm9uZQogCiAgICAgZGVmIF9vcGVuX2NvbXBsZXRpb25zX2xhdGVyKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4ID0gc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKQpAQCAtMTAxLDkgKzEwMSw4IEBACiAKICAgICBkZWYgX2RlbGF5ZWRfb3Blbl9jb21wbGV0aW9ucyhzZWxmLCAqYXJncyk6CiAgICAgICAgIHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pZCA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKSAhPSBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXg6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5vcGVuX2NvbXBsZXRpb25zKCphcmdzKQorICAgICAgICBpZiBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpID09IHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleDoKKyAgICAgICAgICAgIHNlbGYub3Blbl9jb21wbGV0aW9ucygqYXJncykKIAogICAgIGRlZiBvcGVuX2NvbXBsZXRpb25zKHNlbGYsIGV2YWxmdW5jcywgY29tcGxldGUsIHVzZXJXYW50c1dpbiwgbW9kZT1Ob25lKToKICAgICAgICAgIiIiRmluZCB0aGUgY29tcGxldGlvbnMgYW5kIGNyZWF0ZSB0aGUgQXV0b0NvbXBsZXRlV2luZG93LgpAQCAtMTQ4LDE3ICsxNDcsMTcgQEAKICAgICAgICAgICAgICAgICBjb21wX3doYXQgPSBocC5nZXRfZXhwcmVzc2lvbigpCiAgICAgICAgICAgICAgICAgaWYgbm90IGNvbXBfd2hhdCBvciBcCiAgICAgICAgICAgICAgICAgICAgKG5vdCBldmFsZnVuY3MgYW5kIGNvbXBfd2hhdC5maW5kKCcoJykgIT0gLTEpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY29tcF93aGF0ID0gIiIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBpZiBjb21wbGV0ZSBhbmQgbm90IGNvbXBfd2hhdCBhbmQgbm90IGNvbXBfc3RhcnQ6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGNvbXBfbGlzdHMgPSBzZWxmLmZldGNoX2NvbXBsZXRpb25zKGNvbXBfd2hhdCwgbW9kZSkKICAgICAgICAgaWYgbm90IGNvbXBfbGlzdHNbMF06Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHNlbGYuYXV0b2NvbXBsZXRld2luZG93ID0gc2VsZi5fbWFrZV9hdXRvY29tcGxldGVfd2luZG93KCkKICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdy5zaG93X3dpbmRvdygKICAgICAgICAgICAgICAgICBjb21wX2xpc3RzLCAiaW5zZXJ0LSVkYyIgJSBsZW4oY29tcF9zdGFydCksCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGVXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGVfdy5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9BdXRvQ29tcGxldGVXaW5kb3cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2F1dG9jb21wbGV0ZV93LnB5CmluZGV4IDJlZTY4NzguLjMzNzRjNmUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZVdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGVfdy5weQpAQCAtMSw5ICsxLDExIEBACiAiIiIKLUFuIGF1dG8tY29tcGxldGlvbiB3aW5kb3cgZm9yIElETEUsIHVzZWQgYnkgdGhlIEF1dG9Db21wbGV0ZSBleHRlbnNpb24KK0FuIGF1dG8tY29tcGxldGlvbiB3aW5kb3cgZm9yIElETEUsIHVzZWQgYnkgdGhlIGF1dG9jb21wbGV0ZSBleHRlbnNpb24KICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuTXVsdGlDYWxsIGltcG9ydCBNQ19TSElGVAotZnJvbSBpZGxlbGliLkF1dG9Db21wbGV0ZSBpbXBvcnQgQ09NUExFVEVfRklMRVMsIENPTVBMRVRFX0FUVFJJQlVURVMKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIuYXV0b2NvbXBsZXRlIGltcG9ydCBDT01QTEVURV9GSUxFUywgQ09NUExFVEVfQVRUUklCVVRFUworZnJvbSBpZGxlbGliLm11bHRpY2FsbCBpbXBvcnQgTUNfU0hJRlQKIAogSElERV9WSVJUVUFMX0VWRU5UX05BTUUgPSAiPDxhdXRvY29tcGxldGV3aW5kb3ctaGlkZT4+IgogSElERV9TRVFVRU5DRVMgPSAoIjxGb2N1c091dD4iLCAiPEJ1dHRvblByZXNzPiIpCkBAIC0zNCw4ICszNiw4IEBACiAgICAgICAgIHNlbGYuY29tcGxldGlvbnMgPSBOb25lCiAgICAgICAgICMgQSBsaXN0IHdpdGggbW9yZSBjb21wbGV0aW9ucywgb3IgTm9uZQogICAgICAgICBzZWxmLm1vcmVjb21wbGV0aW9ucyA9IE5vbmUKLSAgICAgICAgIyBUaGUgY29tcGxldGlvbiBtb2RlLiBFaXRoZXIgQXV0b0NvbXBsZXRlLkNPTVBMRVRFX0FUVFJJQlVURVMgb3IKLSAgICAgICAgIyBBdXRvQ29tcGxldGUuQ09NUExFVEVfRklMRVMKKyAgICAgICAgIyBUaGUgY29tcGxldGlvbiBtb2RlLiBFaXRoZXIgYXV0b2NvbXBsZXRlLkNPTVBMRVRFX0FUVFJJQlVURVMgb3IKKyAgICAgICAgIyBhdXRvY29tcGxldGUuQ09NUExFVEVfRklMRVMKICAgICAgICAgc2VsZi5tb2RlID0gTm9uZQogICAgICAgICAjIFRoZSBjdXJyZW50IGNvbXBsZXRpb24gc3RhcnQsIG9uIHRoZSB0ZXh0IGJveCAoYSBzdHJpbmcpCiAgICAgICAgIHNlbGYuc3RhcnQgPSBOb25lCkBAIC0yMTUsNiArMjE3LDcgQEAKICAgICAgICAgc2VsZi53aW5jb25maWdpZCA9IGFjdy5iaW5kKFdJTkNPTkZJR19TRVFVRU5DRSwgc2VsZi53aW5jb25maWdfZXZlbnQpCiAgICAgICAgIHNlbGYuZG91YmxlY2xpY2tpZCA9IGxpc3Rib3guYmluZChET1VCTEVDTElDS19TRVFVRU5DRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG91YmxlY2xpY2tfZXZlbnQpCisgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgd2luY29uZmlnX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6CkBAIC0yMzgsMTYgKzI0MSwxNCBAQAogICAgICAgICBhY3cud21fZ2VvbWV0cnkoIislZCslZCIgJSAobmV3X3gsIG5ld195KSkKIAogICAgIGRlZiBoaWRlX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCisgICAgICAgIGlmIHNlbGYuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKIAogICAgIGRlZiBsaXN0c2VsZWN0X2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi51c2Vyd2FudHN3aW5kb3cgPSBUcnVlCi0gICAgICAgIGN1cnNlbCA9IGludChzZWxmLmxpc3Rib3guY3Vyc2VsZWN0aW9uKClbMF0pCi0gICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLmNvbXBsZXRpb25zW2N1cnNlbF0pCisgICAgICAgIGlmIHNlbGYuaXNfYWN0aXZlKCk6CisgICAgICAgICAgICBzZWxmLnVzZXJ3YW50c3dpbmRvdyA9IFRydWUKKyAgICAgICAgICAgIGN1cnNlbCA9IGludChzZWxmLmxpc3Rib3guY3Vyc2VsZWN0aW9uKClbMF0pCisgICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5jb21wbGV0aW9uc1tjdXJzZWxdKQogCiAgICAgZGVmIGRvdWJsZWNsaWNrX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgIyBQdXQgdGhlIHNlbGVjdGVkIGNvbXBsZXRpb24gaW4gdGhlIHRleHQsIGFuZCBjbG9zZSB0aGUgbGlzdApAQCAtMjU3LDcgKzI1OCw3IEBACiAKICAgICBkZWYga2V5cHJlc3NfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAga2V5c3ltID0gZXZlbnQua2V5c3ltCiAgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICJtY19zdGF0ZSIpOgogICAgICAgICAgICAgc3RhdGUgPSBldmVudC5tY19zdGF0ZQpAQCAtMjgyLDcgKzI4Myw3IEBACiAgICAgICAgICAgICAgICAgIyBrZXlzeW0gPT0gIkJhY2tTcGFjZSIKICAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5zdGFydCkgPT0gMDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLnN0YXJ0WzotMV0pCiAgICAgICAgICAgICBzZWxmLmxhc3R0eXBlZHN0YXJ0ID0gc2VsZi5zdGFydAogICAgICAgICAgICAgc2VsZi5saXN0Ym94LnNlbGVjdF9jbGVhcigwLCBpbnQoc2VsZi5saXN0Ym94LmN1cnNlbGVjdGlvbigpWzBdKSkKQEAgLTI5Miw3ICsyOTMsNyBAQAogCiAgICAgICAgIGVsaWYga2V5c3ltID09ICJSZXR1cm4iOgogICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiAoc2VsZi5tb2RlID09IENPTVBMRVRFX0FUVFJJQlVURVMgYW5kIGtleXN5bSBpbgogICAgICAgICAgICAgICAoInBlcmlvZCIsICJzcGFjZSIsICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJicmFja2V0bGVmdCIsCkBAIC0zMDgsNyArMzA5LDcgQEAKICAgICAgICAgICAgICAgIGFuZCAoc2VsZi5tb2RlID09IENPTVBMRVRFX0FUVFJJQlVURVMgb3Igc2VsZi5zdGFydCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuY29tcGxldGlvbnNbY3Vyc2VsXSkKICAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYga2V5c3ltIGluICgiSG9tZSIsICJFbmQiLCAiUHJpb3IiLCAiTmV4dCIsICJVcCIsICJEb3duIikgYW5kIFwKICAgICAgICAgICAgICBub3Qgc3RhdGU6CkBAIC0zNDksMTIgKzM1MCwxMiBAQAogICAgICAgICAgICAgICAgICMgZmlyc3QgdGFiOyBsZXQgQXV0b0NvbXBsZXRlIGhhbmRsZSB0aGUgY29tcGxldGlvbgogICAgICAgICAgICAgICAgIHNlbGYudXNlcndhbnRzd2luZG93ID0gVHJ1ZQogICAgICAgICAgICAgICAgIHNlbGYubGFzdGtleV93YXNfdGFiID0gVHJ1ZQotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiBhbnkocyBpbiBrZXlzeW0gZm9yIHMgaW4gKCJTaGlmdCIsICJDb250cm9sIiwgIkFsdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWV0YSIsICJDb21tYW5kIiwgIk9wdGlvbiIpKToKICAgICAgICAgICAgICMgQSBtb2RpZmllciBrZXksIHNvIGlnbm9yZQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGVsaWYgZXZlbnQuY2hhciBhbmQgZXZlbnQuY2hhciA+PSAnICc6CiAgICAgICAgICAgICAjIFJlZ3VsYXIgY2hhcmFjdGVyIHdpdGggYSBub24tbGVuZ3RoLTEga2V5Y29kZQpAQCAtMzY4LDcgKzM2OSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFVua25vd24gZXZlbnQsIGNsb3NlIHRoZSB3aW5kb3cgYW5kIGxldCBpdCB0aHJvdWdoLgogICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYga2V5cmVsZWFzZV9ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQXV0b0V4cGFuZC5weSBiL0xpYi9pZGxlbGliL2F1dG9leHBhbmQucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQXV0b0V4cGFuZC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYXV0b2V4cGFuZC5weQppbmRleCA3MDU5MDU0Li42YjQ2YmVlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvRXhwYW5kLnB5CisrKyBiL0xpYi9pZGxlbGliL2F1dG9leHBhbmQucHkKQEAgLTEyLDggKzEyLDggQEAKIAogVGhpcyBpcyBhbiBleHRlbnNpb24gZmlsZSBhbmQgdGhlcmUgaXMgb25seSBvbmUgaW5zdGFuY2Ugb2YgQXV0b0V4cGFuZC4KICcnJwotaW1wb3J0IHN0cmluZwogaW1wb3J0IHJlCitpbXBvcnQgc3RyaW5nCiAKICMjIyQgZXZlbnQgPDxleHBhbmQtd29yZD4+CiAjIyMkIHdpbiA8QWx0LXNsYXNoPgpAQCAtMzEsNiArMzEsNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW4pOgogICAgICAgICBzZWxmLnRleHQgPSBlZGl0d2luLnRleHQKKyAgICAgICAgc2VsZi5iZWxsID0gc2VsZi50ZXh0LmJlbGwKICAgICAgICAgc2VsZi5zdGF0ZSA9IE5vbmUKIAogICAgIGRlZiBleHBhbmRfd29yZF9ldmVudChzZWxmLCBldmVudCk6CkBAIC00NiwxNCArNDcsMTQgQEAKICAgICAgICAgICAgICAgICB3b3JkcyA9IHNlbGYuZ2V0d29yZHMoKQogICAgICAgICAgICAgICAgIGluZGV4ID0gMAogICAgICAgICBpZiBub3Qgd29yZHM6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuICJicmVhayIKICAgICAgICAgd29yZCA9IHNlbGYuZ2V0cHJldndvcmQoKQogICAgICAgICBzZWxmLnRleHQuZGVsZXRlKCJpbnNlcnQgLSAlZCBjaGFycyIgJSBsZW4od29yZCksICJpbnNlcnQiKQogICAgICAgICBuZXd3b3JkID0gd29yZHNbaW5kZXhdCiAgICAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJSBsZW4od29yZHMpCiAgICAgICAgIGlmIGluZGV4ID09IDA6Ci0gICAgICAgICAgICBzZWxmLnRleHQuYmVsbCgpICAgICAgICAgICAgIyBXYXJuIHdlIGN5Y2xlZCBhcm91bmQKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpICAgICAgICAgICAgIyBXYXJuIHdlIGN5Y2xlZCBhcm91bmQKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgiaW5zZXJ0IiwgbmV3d29yZCkKICAgICAgICAgY3VyaW5zZXJ0ID0gc2VsZi50ZXh0LmluZGV4KCJpbnNlcnQiKQogICAgICAgICBjdXJsaW5lID0gc2VsZi50ZXh0LmdldCgiaW5zZXJ0IGxpbmVzdGFydCIsICJpbnNlcnQgbGluZWVuZCIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DbGFzc0Jyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9icm93c2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NsYXNzQnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYnJvd3Nlci5weQppbmRleCBkMDljNTJmLi5lYTA1NjM4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9DbGFzc0Jyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvYnJvd3Nlci5weQpAQCAtMTEsMTYgKzExLDE2IEBACiAiIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgcHljbGJyCitpbXBvcnQgc3lzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAotZnJvbSBpZGxlbGliLldpbmRvd0xpc3QgaW1wb3J0IExpc3RlZFRvcGxldmVsCi1mcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcwotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZU5vZGUsIFRyZWVJdGVtLCBTY3JvbGxlZENhbnZhcworZnJvbSBpZGxlbGliLndpbmRvd3MgaW1wb3J0IExpc3RlZFRvcGxldmVsCiAKIGZpbGVfb3BlbiA9IE5vbmUgICMgTWV0aG9kLi4uSXRlbSBhbmQgQ2xhc3MuLi5JdGVtIHVzZSB0aGlzLgotIyBOb3JtYWxseSBQeVNoZWxsLmZsaXN0Lm9wZW4sIGJ1dCB0aGVyZSBpcyBubyBQeVNoZWxsLmZsaXN0IGZvciBodGVzdC4KKyMgTm9ybWFsbHkgcHlzaGVsbC5mbGlzdC5vcGVuLCBidXQgdGhlcmUgaXMgbm8gcHlzaGVsbC5mbGlzdCBmb3IgaHRlc3QuCiAKIGNsYXNzIENsYXNzQnJvd3NlcjoKIApAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgZ2xvYmFsIGZpbGVfb3BlbgogICAgICAgICBpZiBub3QgX2h0ZXN0OgotICAgICAgICAgICAgZmlsZV9vcGVuID0gUHlTaGVsbC5mbGlzdC5vcGVuCisgICAgICAgICAgICBmaWxlX29wZW4gPSBweXNoZWxsLmZsaXN0Lm9wZW4KICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLmZpbGUgPSBvcy5wYXRoLmpvaW4ocGF0aFswXSwgc2VsZi5uYW1lICsgIi5weSIpCiAgICAgICAgIHNlbGYuX2h0ZXN0ID0gX2h0ZXN0CkBAIC05NSw3ICs5NSw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuZmlsZSk6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgUHlTaGVsbC5mbGlzdC5vcGVuKHNlbGYuZmlsZSkKKyAgICAgICAgcHlzaGVsbC5mbGlzdC5vcGVuKHNlbGYuZmlsZSkKIAogICAgIGRlZiBJc0V4cGFuZGFibGUoc2VsZik6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLm5vcm1jYXNlKHNlbGYuZmlsZVstMzpdKSA9PSAiLnB5IgpAQCAtMjI2LDcgKzIyNiw3IEBACiAgICAgICAgICAgICBmaWxlID0gc3lzLmFyZ3ZbMF0KICAgICBkaXIsIGZpbGUgPSBvcy5wYXRoLnNwbGl0KGZpbGUpCiAgICAgbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZSlbMF0KLSAgICBmbGlzdCA9IFB5U2hlbGwuUHlTaGVsbEZpbGVMaXN0KHBhcmVudCkKKyAgICBmbGlzdCA9IHB5c2hlbGwuUHlTaGVsbEZpbGVMaXN0KHBhcmVudCkKICAgICBnbG9iYWwgZmlsZV9vcGVuCiAgICAgZmlsZV9vcGVuID0gZmxpc3Qub3BlbgogICAgIENsYXNzQnJvd3NlcihmbGlzdCwgbmFtZSwgW2Rpcl0sIF9odGVzdD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weSBiL0xpYi9pZGxlbGliL2NhbGx0aXBfdy5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9DYWxsVGlwV2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jYWxsdGlwX3cucHkKaW5kZXggOWVlYzE3NS4uYzczNjFkMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9jYWxsdGlwX3cucHkKQEAgLTEsNyArMSw3IEBACiAiIiJBIENhbGxUaXAgd2luZG93IGNsYXNzIGZvciBUa2ludGVyL0lETEUuCiAKLUFmdGVyIFRvb2xUaXAucHksIHdoaWNoIHVzZXMgaWRlYXMgZ2xlYW5lZCBmcm9tIFB5U29sCi1Vc2VkIGJ5IHRoZSBDYWxsVGlwcyBJRExFIGV4dGVuc2lvbi4KK0FmdGVyIHRvb2x0aXAucHksIHdoaWNoIHVzZXMgaWRlYXMgZ2xlYW5lZCBmcm9tIFB5U29sCitVc2VkIGJ5IHRoZSBjYWxsdGlwcyBJRExFIGV4dGVuc2lvbi4KICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgTGFiZWwsIExFRlQsIFNPTElELCBUY2xFcnJvcgogCkBAIC0xMzgsOCArMTM4LDggQEAKIAogICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKICAgICB0b3AudGl0bGUoIlRlc3QgY2FsbHRpcHMiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgdGV4dCA9IFRleHQodG9wKQogICAgIHRleHQucGFjayhzaWRlPUxFRlQsIGZpbGw9Qk9USCwgZXhwYW5kPTEpCiAgICAgdGV4dC5pbnNlcnQoImluc2VydCIsICJzdHJpbmcuc3BsaXQiKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ2FsbFRpcHMucHkgYi9MaWIvaWRsZWxpYi9jYWxsdGlwcy5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9DYWxsVGlwcy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY2FsbHRpcHMucHkKaW5kZXggODFiZDVmMS4uNGM1YWVhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ2FsbFRpcHMucHkKKysrIGIvTGliL2lkbGVsaWIvY2FsbHRpcHMucHkKQEAgLTEsMTkgKzEsMTkgQEAKLSIiIkNhbGxUaXBzLnB5IC0gQW4gSURMRSBFeHRlbnNpb24gdG8gSm9nIFlvdXIgTWVtb3J5CisiIiJjYWxsdGlwcy5weSAtIEFuIElETEUgRXh0ZW5zaW9uIHRvIEpvZyBZb3VyIE1lbW9yeQogCiBDYWxsIFRpcHMgYXJlIGZsb2F0aW5nIHdpbmRvd3Mgd2hpY2ggZGlzcGxheSBmdW5jdGlvbiwgY2xhc3MsIGFuZCBtZXRob2QKIHBhcmFtZXRlciBhbmQgZG9jc3RyaW5nIGluZm9ybWF0aW9uIHdoZW4geW91IHR5cGUgYW4gb3BlbmluZyBwYXJlbnRoZXNpcywgYW5kCiB3aGljaCBkaXNhcHBlYXIgd2hlbiB5b3UgdHlwZSBhIGNsb3NpbmcgcGFyZW50aGVzaXMuCiAKICIiIgotaW1wb3J0IF9fbWFpbl9fCiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0eXBlcwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBXaW5kb3cKLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY2FsbHRpcF93Citmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitpbXBvcnQgX19tYWluX18KIAogY2xhc3MgQ2FsbFRpcHM6CiAKQEAgLTM3LDcgKzM3LDcgQEAKIAogICAgIGRlZiBfbWFrZV90a19jYWxsdGlwX3dpbmRvdyhzZWxmKToKICAgICAgICAgIyBTZWUgX19pbml0X18gZm9yIHVzYWdlCi0gICAgICAgIHJldHVybiBDYWxsVGlwV2luZG93LkNhbGxUaXAoc2VsZi50ZXh0KQorICAgICAgICByZXR1cm4gY2FsbHRpcF93LkNhbGxUaXAoc2VsZi50ZXh0KQogCiAgICAgZGVmIF9yZW1vdmVfY2FsbHRpcF93aW5kb3coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIGlmIHNlbGYuYWN0aXZlX2NhbGx0aXA6CkBAIC0xMjAsNyArMTIwLDcgQEAKIF9NQVhfQ09MUyA9IDg1CiBfTUFYX0xJTkVTID0gNSAgIyBlbm91Z2ggZm9yIGJ5dGVzCiBfSU5ERU5UID0gJyAnKjQgICMgZm9yIHdyYXBwZWQgc2lnbmF0dXJlcwotX2ZpcnN0X3BhcmFtID0gcmUuY29tcGlsZSgnKD88PVwoKVx3KlwsP1xzKicpCitfZmlyc3RfcGFyYW0gPSByZS5jb21waWxlKHInKD88PVwoKVx3KlwsP1xzKicpCiBfZGVmYXVsdF9jYWxsYWJsZV9hcmdzcGVjID0gIlNlZSBzb3VyY2Ugb3IgZG9jIgogCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5IGIvTGliL2lkbGVsaWIvY29kZWNvbnRleHQucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvZGVjb250ZXh0LnB5CmluZGV4IDdkMjVhZGEuLmYyNWUxYjMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NvZGVDb250ZXh0LnB5CisrKyBiL0xpYi9pZGxlbGliL2NvZGVjb250ZXh0LnB5CkBAIC0xLDE5ICsxLDIxIEBACi0iIiJDb2RlQ29udGV4dCAtIEV4dGVuc2lvbiB0byBkaXNwbGF5IHRoZSBibG9jayBjb250ZXh0IGFib3ZlIHRoZSBlZGl0IHdpbmRvdworIiIiY29kZWNvbnRleHQgLSBFeHRlbnNpb24gdG8gZGlzcGxheSB0aGUgYmxvY2sgY29udGV4dCBhYm92ZSB0aGUgZWRpdCB3aW5kb3cKIAogT25jZSBjb2RlIGhhcyBzY3JvbGxlZCBvZmYgdGhlIHRvcCBvZiBhIHdpbmRvdywgaXQgY2FuIGJlIGRpZmZpY3VsdCB0bwogZGV0ZXJtaW5lIHdoaWNoIGJsb2NrIHlvdSBhcmUgaW4uICBUaGlzIGV4dGVuc2lvbiBpbXBsZW1lbnRzIGEgcGFuZSBhdCB0aGUgdG9wCiBvZiBlYWNoIElETEUgZWRpdCB3aW5kb3cgd2hpY2ggcHJvdmlkZXMgYmxvY2sgc3RydWN0dXJlIGhpbnRzLiAgVGhlc2UgaGludHMgYXJlCiB0aGUgbGluZXMgd2hpY2ggY29udGFpbiB0aGUgYmxvY2sgb3BlbmluZyBrZXl3b3JkcywgZS5nLiAnaWYnLCBmb3IgdGhlCiBlbmNsb3NpbmcgYmxvY2suICBUaGUgbnVtYmVyIG9mIGhpbnQgbGluZXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgbnVtbGluZXMKLXZhcmlhYmxlIGluIHRoZSBDb2RlQ29udGV4dCBzZWN0aW9uIG9mIGNvbmZpZy1leHRlbnNpb25zLmRlZi4gTGluZXMgd2hpY2ggZG8KK3ZhcmlhYmxlIGluIHRoZSBjb2RlY29udGV4dCBzZWN0aW9uIG9mIGNvbmZpZy1leHRlbnNpb25zLmRlZi4gTGluZXMgd2hpY2ggZG8KIG5vdCBvcGVuIGJsb2NrcyBhcmUgbm90IHNob3duIGluIHRoZSBjb250ZXh0IGhpbnRzIHBhbmUuCiAKICIiIgotaW1wb3J0IHRraW50ZXIKLWZyb20gdGtpbnRlci5jb25zdGFudHMgaW1wb3J0IFRPUCwgTEVGVCwgWCwgVywgU1VOS0VOCiBpbXBvcnQgcmUKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplIGFzIElORklOSVRZCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKKworaW1wb3J0IHRraW50ZXIKK2Zyb20gdGtpbnRlci5jb25zdGFudHMgaW1wb3J0IFRPUCwgTEVGVCwgWCwgVywgU1VOS0VOCisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKIEJMT0NLT1BFTkVSUyA9IHsiY2xhc3MiLCAiZGVmIiwgImVsaWYiLCAiZWxzZSIsICJleGNlcHQiLCAiZmluYWxseSIsICJmb3IiLAogICAgICAgICAgICAgICAgICAgICAiaWYiLCAidHJ5IiwgIndoaWxlIiwgIndpdGgifQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9jb2xvcml6ZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ29sb3JEZWxlZ2F0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbG9yaXplci5weQppbmRleCAwMmVhYzQ3Li43MzEwYmIyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9jb2xvcml6ZXIucHkKQEAgLTEsMTAgKzEsMTAgQEAKLWltcG9ydCB0aW1lCi1pbXBvcnQgcmUKLWltcG9ydCBrZXl3b3JkCiBpbXBvcnQgYnVpbHRpbnMKLWZyb20gdGtpbnRlciBpbXBvcnQgVGtWZXJzaW9uCi1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgoraW1wb3J0IGtleXdvcmQKK2ltcG9ydCByZQoraW1wb3J0IHRpbWUKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgogCiBERUJVRyA9IEZhbHNlCiAKQEAgLTQ5LDExICs0OSw4IEBACiAgICAgICAgIGluc2VydGJhY2tncm91bmQ9Y3Vyc29yX2NvbG9yLAogICAgICAgICBzZWxlY3Rmb3JlZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2ZvcmVncm91bmQnXSwKICAgICAgICAgc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10sCi0gICAgICAgICkKLSAgICBpZiBUa1ZlcnNpb24gPj0gOC41OgotICAgICAgICB0ZXh0LmNvbmZpZygKLSAgICAgICAgICAgIGluYWN0aXZlc2VsZWN0YmFja2dyb3VuZD1zZWxlY3RfY29sb3JzWydiYWNrZ3JvdW5kJ10pCi0KKyAgICAgICAgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2JhY2tncm91bmQnXSwgICMgbmV3IGluIDguNQorICAgICkKIAogY2xhc3MgQ29sb3JEZWxlZ2F0b3IoRGVsZWdhdG9yKToKIApAQCAtMjU5LDEyICsyNTYsMTIgQEAKIAogZGVmIF9jb2xvcl9kZWxlZ2F0b3IocGFyZW50KTogICMgaHRlc3QgIwogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKLSAgICBmcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIGZyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiAKICAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXN0IENvbG9yRGVsZWdhdG9yIikKLSAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHBhcmVudC53aW5mb19yb290eCgpICsgMjAwLAotICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIjIwMHgxMDArJWQrJWQiICUgKHggKyAyNTAsIHkgKyAxNzUpKQogICAgIHNvdXJjZSA9ICJpZiBzb21lbmFtZTogeCA9ICdhYmMnICMgY29tbWVudFxucHJpbnRcbiIKICAgICB0ZXh0ID0gVGV4dCh0b3AsIGJhY2tncm91bmQ9IndoaXRlIikKICAgICB0ZXh0LnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiKQpAQCAtMjc3LDUgKzI3NCw5IEBACiAgICAgcC5pbnNlcnRmaWx0ZXIoZCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbG9yaXplcicsCisgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfY29sb3JfZGVsZWdhdG9yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmIGIvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmCmluZGV4IDNiZmNiNjkuLjY0Nzg4ZjkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZy1rZXlzLmRlZgorKysgYi9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYKQEAgLTEwOSw2ICsxMDksNTcgQEAKIGRlbC13b3JkLWxlZnQ9PEFsdC1LZXktQmFja1NwYWNlPgogZGVsLXdvcmQtcmlnaHQ9PEFsdC1LZXktZD4KIAorW0lETEUgTW9kZXJuIFVuaXhdCitjb3B5ID0gPENvbnRyb2wtU2hpZnQtS2V5LUM+IDxDb250cm9sLUtleS1JbnNlcnQ+CitjdXQgPSA8Q29udHJvbC1LZXkteD4gPFNoaWZ0LUtleS1EZWxldGU+CitwYXN0ZSA9IDxDb250cm9sLUtleS12PiA8U2hpZnQtS2V5LUluc2VydD4KK2JlZ2lubmluZy1vZi1saW5lID0gPEtleS1Ib21lPgorY2VudGVyLWluc2VydCA9IDxDb250cm9sLUtleS1sPgorY2xvc2UtYWxsLXdpbmRvd3MgPSA8Q29udHJvbC1LZXktcT4KK2Nsb3NlLXdpbmRvdyA9IDxDb250cm9sLUtleS13PiA8Q29udHJvbC1TaGlmdC1LZXktVz4KK2RvLW5vdGhpbmcgPSA8Q29udHJvbC1LZXktRjEyPgorZW5kLW9mLWZpbGUgPSA8Q29udHJvbC1LZXktZD4KK2hpc3RvcnktbmV4dCA9IDxBbHQtS2V5LW4+IDxNZXRhLUtleS1uPgoraGlzdG9yeS1wcmV2aW91cyA9IDxBbHQtS2V5LXA+IDxNZXRhLUtleS1wPgoraW50ZXJydXB0LWV4ZWN1dGlvbiA9IDxDb250cm9sLUtleS1jPgordmlldy1yZXN0YXJ0ID0gPEtleS1GNj4KK3Jlc3RhcnQtc2hlbGwgPSA8Q29udHJvbC1LZXktRjY+CitvcGVuLWNsYXNzLWJyb3dzZXIgPSA8Q29udHJvbC1LZXktYj4KK29wZW4tbW9kdWxlID0gPENvbnRyb2wtS2V5LW0+CitvcGVuLW5ldy13aW5kb3cgPSA8Q29udHJvbC1LZXktbj4KK29wZW4td2luZG93LWZyb20tZmlsZSA9IDxDb250cm9sLUtleS1vPgorcGxhaW4tbmV3bGluZS1hbmQtaW5kZW50ID0gPENvbnRyb2wtS2V5LWo+CitwcmludC13aW5kb3cgPSA8Q29udHJvbC1LZXktcD4KK3B5dGhvbi1jb250ZXh0LWhlbHAgPSA8U2hpZnQtS2V5LUYxPgorcHl0aG9uLWRvY3MgPSA8S2V5LUYxPgorcmVkbyA9IDxDb250cm9sLVNoaWZ0LUtleS1aPgorcmVtb3ZlLXNlbGVjdGlvbiA9IDxLZXktRXNjYXBlPgorc2F2ZS1jb3B5LW9mLXdpbmRvdy1hcy1maWxlID0gPEFsdC1TaGlmdC1LZXktUz4KK3NhdmUtd2luZG93LWFzLWZpbGUgPSA8Q29udHJvbC1TaGlmdC1LZXktUz4KK3NhdmUtd2luZG93ID0gPENvbnRyb2wtS2V5LXM+CitzZWxlY3QtYWxsID0gPENvbnRyb2wtS2V5LWE+Cit0b2dnbGUtYXV0by1jb2xvcmluZyA9IDxDb250cm9sLUtleS1zbGFzaD4KK3VuZG8gPSA8Q29udHJvbC1LZXktej4KK2ZpbmQgPSA8Q29udHJvbC1LZXktZj4KK2ZpbmQtYWdhaW4gPSA8S2V5LUYzPgorZmluZC1pbi1maWxlcyA9IDxDb250cm9sLVNoaWZ0LUtleS1mPgorZmluZC1zZWxlY3Rpb24gPSA8Q29udHJvbC1LZXktaD4KK3JlcGxhY2UgPSA8Q29udHJvbC1LZXktcj4KK2dvdG8tbGluZSA9IDxDb250cm9sLUtleS1nPgorc21hcnQtYmFja3NwYWNlID0gPEtleS1CYWNrU3BhY2U+CituZXdsaW5lLWFuZC1pbmRlbnQgPSA8S2V5LVJldHVybj4gPEtleS1LUF9FbnRlcj4KK3NtYXJ0LWluZGVudCA9IDxLZXktVGFiPgoraW5kZW50LXJlZ2lvbiA9IDxDb250cm9sLUtleS1icmFja2V0cmlnaHQ+CitkZWRlbnQtcmVnaW9uID0gPENvbnRyb2wtS2V5LWJyYWNrZXRsZWZ0PgorY29tbWVudC1yZWdpb24gPSA8Q29udHJvbC1LZXktZD4KK3VuY29tbWVudC1yZWdpb24gPSA8Q29udHJvbC1TaGlmdC1LZXktRD4KK3RhYmlmeS1yZWdpb24gPSA8QWx0LUtleS01PgordW50YWJpZnktcmVnaW9uID0gPEFsdC1LZXktNj4KK3RvZ2dsZS10YWJzID0gPENvbnRyb2wtS2V5LVQ+CitjaGFuZ2UtaW5kZW50d2lkdGggPSA8QWx0LUtleS11PgorZGVsLXdvcmQtbGVmdCA9IDxDb250cm9sLUtleS1CYWNrU3BhY2U+CitkZWwtd29yZC1yaWdodCA9IDxDb250cm9sLUtleS1EZWxldGU+CisKIFtJRExFIENsYXNzaWMgTWFjXQogY29weT08Q29tbWFuZC1LZXktYz4KIGN1dD08Q29tbWFuZC1LZXkteD4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZiBiL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZgppbmRleCA4ZWJiYzFiLi5hNjFiYmE3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmCkBAIC03MCw3ICs3MCw5IEBACiAKIFtLZXlzXQogZGVmYXVsdD0gMQotbmFtZT0gSURMRSBDbGFzc2ljIFdpbmRvd3MKK25hbWU9CituYW1lMj0KKyMgbmFtZTIgc2V0IGluIHVzZXIgY29uZmlnLW1haW4uY2ZnIGZvciBrZXlzIGFkZGVkIGFmdGVyIDIwMTYgSnVseSAxCiAKIFtIaXN0b3J5XQogY3ljbGljPTEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkgYi9MaWIvaWRsZWxpYi9jb25maWcucHkKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnLnB5CmluZGV4IDg5NTQ0ODguLjEwZmUzYmEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnLnB5CkBAIC03LDcgKzcsNyBAQAogYW5kIGlmIGEgZmlsZSBiZWNvbWVzIGVtcHR5LCBpdCB3aWxsIGJlIGRlbGV0ZWQuCiAKIFRoZSBjb250ZW50cyBvZiB0aGUgdXNlciBmaWxlcyBtYXkgYmUgYWx0ZXJlZCB1c2luZyB0aGUgT3B0aW9ucy9Db25maWd1cmUgSURMRQotbWVudSB0byBhY2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gR1VJIChjb25maWdEaWFsb2cucHkpLCBvciBtYW51YWxseS4KK21lbnUgdG8gYWNjZXNzIHRoZSBjb25maWd1cmF0aW9uIEdVSSAoY29uZmlnZGlhbG9nLnB5KSwgb3IgbWFudWFsbHkuCiAKIFRocm91Z2hvdXQgdGhpcyBtb2R1bGUgdGhlcmUgaXMgYW4gZW1waGFzaXMgb24gcmV0dXJuaW5nIHVzZWFibGUgZGVmYXVsdHMKIHdoZW4gYSBwcm9ibGVtIG9jY3VycyBpbiByZXR1cm5pbmcgYSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiB2YWx1ZSBiYWNrIHRvCkBAIC0xOCwxMSArMTgsMTAgQEAKICIiIgogIyBUT0RPcyBhZGRlZCBPY3QgMjAxNCwgdGpyCiAKK2Zyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCi1mcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrVmVyc2lvbgogZnJvbSB0a2ludGVyLmZvbnQgaW1wb3J0IEZvbnQsIG5hbWV0b2ZvbnQKIAogY2xhc3MgSW52YWxpZENvbmZpZ1R5cGUoRXhjZXB0aW9uKTogcGFzcwpAQCAtMjMwLDE1ICsyMjksMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi51c2VyQ2ZnW2NvbmZpZ1R5cGVdLkdldChzZWN0aW9uLCBvcHRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT10eXBlLCByYXc9cmF3KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJworICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBpbnZhbGlkICVyIHZhbHVlIGZvciBjb25maWd1cmF0aW9uIG9wdGlvbiAlclxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIGZyb20gc2VjdGlvbiAlcjogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUsIG9wdGlvbiwgc2VjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51c2VyQ2ZnW2NvbmZpZ1R5cGVdLkdldChzZWN0aW9uLCBvcHRpb24sIHJhdz1yYXcpKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCBjb25maWdUeXBlLCBzZWN0aW9uLCBvcHRpb24pCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHNlbGYuZGVmYXVsdENmZ1tjb25maWdUeXBlXS5oYXNfb3B0aW9uKHNlY3Rpb24sb3B0aW9uKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0Q2ZnW2NvbmZpZ1R5cGVdLkdldCgKQEAgLTI0NywxNSArMjQzLDEyIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICNyZXR1cm5pbmcgZGVmYXVsdCwgcHJpbnQgd2FybmluZwogICAgICAgICBpZiB3YXJuX29uX2RlZmF1bHQ6Ci0gICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKKyAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZy5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgcHJvYmxlbSByZXRyaWV2aW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uICVyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBzZWN0aW9uICVyLlxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IHZhbHVlOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uLCBzZWN0aW9uLCBkZWZhdWx0KSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCBjb25maWdUeXBlLCBzZWN0aW9uLCBvcHRpb24pCiAgICAgICAgIHJldHVybiBkZWZhdWx0CiAKICAgICBkZWYgU2V0T3B0aW9uKHNlbGYsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbiwgdmFsdWUpOgpAQCAtMzU4LDUyICszNTEsNzMgQEAKICAgICAgICAgZm9yIGVsZW1lbnQgaW4gdGhlbWU6CiAgICAgICAgICAgICBpZiBub3QgY2ZnUGFyc2VyLmhhc19vcHRpb24odGhlbWVOYW1lLCBlbGVtZW50KToKICAgICAgICAgICAgICAgICAjIFByaW50IHdhcm5pbmcgdGhhdCB3aWxsIHJldHVybiBhIGRlZmF1bHQgY29sb3IKLSAgICAgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWdIYW5kbGVyLklkbGVDb25mLkdldFRoZW1lRGljdCcKKyAgICAgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWcuSWRsZUNvbmYuR2V0VGhlbWVEaWN0JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtXG4gcHJvYmxlbSByZXRyaWV2aW5nIHRoZW1lIGVsZW1lbnQgJXInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4gZnJvbSB0aGVtZSAlci5cbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgY29sb3I6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWxlbWVudCwgdGhlbWVOYW1lLCB0aGVtZVtlbGVtZW50XSkpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwcmludCh3YXJuaW5nLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAnaGlnaGxpZ2h0JywgdGhlbWVOYW1lLCBlbGVtZW50KQogICAgICAgICAgICAgdGhlbWVbZWxlbWVudF0gPSBjZmdQYXJzZXIuR2V0KAogICAgICAgICAgICAgICAgICAgICB0aGVtZU5hbWUsIGVsZW1lbnQsIGRlZmF1bHQ9dGhlbWVbZWxlbWVudF0pCiAgICAgICAgIHJldHVybiB0aGVtZQogCiAgICAgZGVmIEN1cnJlbnRUaGVtZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIHRleHQgY29sb3IgdGhlbWUuCisgICAgICAgICJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGV4dCBjb2xvciB0aGVtZS4iCisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfY29sb3JzX2FuZF9rZXlzKCdUaGVtZScpCiAKLSAgICAgICAgaWRsZWxpYi5jb25maWctbWFpbi5kZWYgaW5jbHVkZXMgdGhpcyBzZWN0aW9uCisgICAgZGVmIEN1cnJlbnRLZXlzKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5IHNldC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMoJ0tleXMnKQorCisgICAgZGVmIGN1cnJlbnRfY29sb3JzX2FuZF9rZXlzKHNlbGYsIHNlY3Rpb24pOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgbmFtZSBmb3IgVGhlbWUgb3IgS2V5cyBzZWN0aW9uLgorCisgICAgICAgIGlkbGVsaWIuY29uZmlnLW1haW4uZGVmICgnZGVmYXVsdCcpIGluY2x1ZGVzIHRoZXNlIHNlY3Rpb25zCisKICAgICAgICAgW1RoZW1lXQogICAgICAgICBkZWZhdWx0PSAxCiAgICAgICAgIG5hbWU9IElETEUgQ2xhc3NpYwogICAgICAgICBuYW1lMj0KLSAgICAgICAgIyBuYW1lMiBzZXQgaW4gdXNlciBjb25maWctbWFpbi5jZmcgZm9yIHRoZW1lcyBhZGRlZCBhZnRlciAyMDE1IE9jdCAxCiAKLSAgICAgICAgSXRlbSBuYW1lMiBpcyBuZWVkZWQgYmVjYXVzZSBzZXR0aW5nIG5hbWUgdG8gYSBuZXcgYnVpbHRpbgotICAgICAgICBjYXVzZXMgb2xkZXIgSURMRXMgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlcyBvciBxdWl0LgorICAgICAgICBbS2V5c10KKyAgICAgICAgZGVmYXVsdD0gMQorICAgICAgICBuYW1lPQorICAgICAgICBuYW1lMj0KKworICAgICAgICBJdGVtICduYW1lMicsIGlzIHVzZWQgZm9yIGJ1aWx0LWluICgnZGVmYXVsdCcpIHRoZW1lcyBhbmQga2V5cworICAgICAgICBhZGRlZCBhZnRlciAyMDE1IE9jdCAxIGFuZCAyMDE2IEp1bHkgMS4gIFRoaXMga2x1ZGdlIGlzIG5lZWRlZAorICAgICAgICBiZWNhdXNlIHNldHRpbmcgJ25hbWUnIHRvIGEgYnVpbHRpbiBub3QgZGVmaW5lZCBpbiBvbGRlciBJRExFcworICAgICAgICB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzIG9yIHF1aXQuCiAgICAgICAgIFNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI1MzEzLgotICAgICAgICBXaGVuIGRlZmF1bHQgPSBUcnVlLCBuYW1lMiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgbmFtZSwKLSAgICAgICAgd2hpbGUgb2xkZXIgSURMRXMgd2lsbCBqdXN0IHVzZSBuYW1lLgorICAgICAgICBXaGVuIGRlZmF1bHQgPSBUcnVlLCAnbmFtZTInIHRha2VzIHByZWNlZGVuY2Ugb3ZlciAnbmFtZScsCisgICAgICAgIHdoaWxlIG9sZGVyIElETEVzIHdpbGwganVzdCB1c2UgbmFtZS4gIFdoZW4gZGVmYXVsdCA9IEZhbHNlLAorICAgICAgICAnbmFtZTInIG1heSBzdGlsbCBiZSBzZXQsIGJ1dCBpdCBpcyBpZ25vcmVkLgogICAgICAgICAiIiIKLSAgICAgICAgZGVmYXVsdCA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ2RlZmF1bHQnLAorICAgICAgICBjZmduYW1lID0gJ2hpZ2hsaWdodCcgaWYgc2VjdGlvbiA9PSAnVGhlbWUnIGVsc2UgJ2tleXMnCisgICAgICAgIGRlZmF1bHQgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICdkZWZhdWx0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnLCBkZWZhdWx0PVRydWUpCisgICAgICAgIG5hbWUgPSAnJwogICAgICAgICBpZiBkZWZhdWx0OgotICAgICAgICAgICAgdGhlbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lMicsIGRlZmF1bHQ9JycpCi0gICAgICAgIGlmIGRlZmF1bHQgYW5kIG5vdCB0aGVtZSBvciBub3QgZGVmYXVsdDoKLSAgICAgICAgICAgIHRoZW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScsIGRlZmF1bHQ9JycpCi0gICAgICAgIHNvdXJjZSA9IHNlbGYuZGVmYXVsdENmZyBpZiBkZWZhdWx0IGVsc2Ugc2VsZi51c2VyQ2ZnCi0gICAgICAgIGlmIHNvdXJjZVsnaGlnaGxpZ2h0J10uaGFzX3NlY3Rpb24odGhlbWUpOgotICAgICAgICAgICAgcmV0dXJuIHRoZW1lCisgICAgICAgICAgICBuYW1lID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCBzZWN0aW9uLCAnbmFtZTInLCBkZWZhdWx0PScnKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICduYW1lJywgZGVmYXVsdD0nJykKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIHNvdXJjZSA9IHNlbGYuZGVmYXVsdENmZyBpZiBkZWZhdWx0IGVsc2Ugc2VsZi51c2VyQ2ZnCisgICAgICAgICAgICBpZiBzb3VyY2VbY2ZnbmFtZV0uaGFzX3NlY3Rpb24obmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAgICAgcmV0dXJuICJJRExFIENsYXNzaWMiIGlmIHNlY3Rpb24gPT0gJ1RoZW1lJyBlbHNlIHNlbGYuZGVmYXVsdF9rZXlzKCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZGVmYXVsdF9rZXlzKCk6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6CisgICAgICAgICAgICByZXR1cm4gJ0lETEUgQ2xhc3NpYyBXaW5kb3dzJworICAgICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgIHJldHVybiAnSURMRSBDbGFzc2ljIE9TWCcKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiSURMRSBDbGFzc2ljIgorICAgICAgICAgICAgcmV0dXJuICdJRExFIE1vZGVybiBVbml4JwogCi0gICAgZGVmIEN1cnJlbnRLZXlzKHNlbGYpOgotICAgICAgICAiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGtleSBzZXQuIgotICAgICAgICByZXR1cm4gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnS2V5cycsICduYW1lJywgZGVmYXVsdD0nJykKLQotICAgIGRlZiBHZXRFeHRlbnNpb25zKHNlbGYsIGFjdGl2ZV9vbmx5PVRydWUsIGVkaXRvcl9vbmx5PUZhbHNlLCBzaGVsbF9vbmx5PUZhbHNlKToKKyAgICBkZWYgR2V0RXh0ZW5zaW9ucyhzZWxmLCBhY3RpdmVfb25seT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgIGVkaXRvcl9vbmx5PUZhbHNlLCBzaGVsbF9vbmx5PUZhbHNlKToKICAgICAgICAgIiIiUmV0dXJuIGV4dGVuc2lvbnMgaW4gZGVmYXVsdCBhbmQgdXNlciBjb25maWctZXh0ZW5zaW9ucyBmaWxlcy4KIAogICAgICAgICBJZiBhY3RpdmVfb25seSBUcnVlLCBvbmx5IHJldHVybiBhY3RpdmUgKGVuYWJsZWQpIGV4dGVuc2lvbnMKQEAgLTQyMyw3ICs0MzcsNyBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuR2V0T3B0aW9uKCdleHRlbnNpb25zJywgZXh0biwgJ2VuYWJsZScsIGRlZmF1bHQ9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdib29sJyk6CiAgICAgICAgICAgICAgICAgICAgICN0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQKLSAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHkgb3Igc2hlbGxfb25seTogICMgVE9ETyBpZiBib3RoLCBjb250cmFkaWN0b3J5CisgICAgICAgICAgICAgICAgICAgIGlmIGVkaXRvcl9vbmx5IG9yIHNoZWxsX29ubHk6ICAjIFRPRE8gYm90aCBUcnVlIGNvbnRyYWRpY3QKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVkaXRvcl9vbmx5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiA9ICJlbmFibGVfZWRpdG9yIgogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTUyOCw3ICs1NDIsOCBAQAogICAgICAgICBldmVudFN0ciAtIHZpcnR1YWwgZXZlbnQsIGluY2x1ZGluZyBicmFja2V0cywgYXMgaW4gJzw8ZXZlbnQ+PicuCiAgICAgICAgICIiIgogICAgICAgICBldmVudE5hbWUgPSBldmVudFN0clsyOi0yXSAjdHJpbSBvZmYgdGhlIGFuZ2xlIGJyYWNrZXRzCi0gICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldE9wdGlvbigna2V5cycsIGtleVNldE5hbWUsIGV2ZW50TmFtZSwgZGVmYXVsdD0nJykuc3BsaXQoKQorICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRPcHRpb24oJ2tleXMnLCBrZXlTZXROYW1lLCBldmVudE5hbWUsIGRlZmF1bHQ9JycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuX29uX2RlZmF1bHQ9RmFsc2UpLnNwbGl0KCkKICAgICAgICAgcmV0dXJuIGJpbmRpbmcKIAogICAgIGRlZiBHZXRDdXJyZW50S2V5U2V0KHNlbGYpOgpAQCAtNjM5LDIwICs2NTQsMjggQEAKICAgICAgICAgICAgICc8PGRlbC13b3JkLXJpZ2h0Pj4nOiBbJzxDb250cm9sLUtleS1EZWxldGU+J10KICAgICAgICAgICAgIH0KICAgICAgICAgaWYga2V5U2V0TmFtZToKLSAgICAgICAgICAgIGZvciBldmVudCBpbiBrZXlCaW5kaW5nczoKLSAgICAgICAgICAgICAgICBiaW5kaW5nID0gc2VsZi5HZXRLZXlCaW5kaW5nKGtleVNldE5hbWUsIGV2ZW50KQotICAgICAgICAgICAgICAgIGlmIGJpbmRpbmc6Ci0gICAgICAgICAgICAgICAgICAgIGtleUJpbmRpbmdzW2V2ZW50XSA9IGJpbmRpbmcKLSAgICAgICAgICAgICAgICBlbHNlOiAjd2UgYXJlIGdvaW5nIHRvIHJldHVybiBhIGRlZmF1bHQsIHByaW50IHdhcm5pbmcKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZz0oJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1cbiBwcm9ibGVtIHJldHJpZXZpbmcga2V5IGJpbmRpbmcgZm9yIGV2ZW50ICVyJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBmcm9tIGtleSBzZXQgJXIuXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZTogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQsIGtleVNldE5hbWUsIGtleUJpbmRpbmdzW2V2ZW50XSkpCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBpZiBub3QgKHNlbGYudXNlckNmZ1sna2V5cyddLmhhc19zZWN0aW9uKGtleVNldE5hbWUpIG9yCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVmYXVsdENmZ1sna2V5cyddLmhhc19zZWN0aW9uKGtleVNldE5hbWUpKToKKyAgICAgICAgICAgICAgICB3YXJuaW5nID0gKAorICAgICAgICAgICAgICAgICAgICAnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0Q29yZUtleXMgLVxuJworICAgICAgICAgICAgICAgICAgICAnIGtleSBzZXQgJXIgaXMgbm90IGRlZmluZWQsIHVzaW5nIGRlZmF1bHQgYmluZGluZ3MuJyAlCisgICAgICAgICAgICAgICAgICAgIChrZXlTZXROYW1lLCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgX3dhcm4od2FybmluZywgJ2tleXMnLCBrZXlTZXROYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgZXZlbnQgaW4ga2V5QmluZGluZ3M6CisgICAgICAgICAgICAgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldEtleUJpbmRpbmcoa2V5U2V0TmFtZSwgZXZlbnQpCisgICAgICAgICAgICAgICAgICAgIGlmIGJpbmRpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICBrZXlCaW5kaW5nc1tldmVudF0gPSBiaW5kaW5nCisgICAgICAgICAgICAgICAgICAgIGVsc2U6ICN3ZSBhcmUgZ29pbmcgdG8gcmV0dXJuIGEgZGVmYXVsdCwgcHJpbnQgd2FybmluZworICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9ICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0Q29yZUtleXMgLVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcHJvYmxlbSByZXRyaWV2aW5nIGtleSBiaW5kaW5nIGZvciBldmVudCAlclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBrZXkgc2V0ICVyLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWU6ICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LCBrZXlTZXROYW1lLCBrZXlCaW5kaW5nc1tldmVudF0pCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAna2V5cycsIGtleVNldE5hbWUsIGV2ZW50KQogICAgICAgICByZXR1cm4ga2V5QmluZGluZ3MKIAogICAgIGRlZiBHZXRFeHRyYUhlbHBTb3VyY2VMaXN0KHNlbGYsIGNvbmZpZ1NldCk6CkBAIC03MTMsMTYgKzczNiwxMyBAQAogICAgICAgICBib2xkID0gc2VsZi5HZXRPcHRpb24oY29uZmlnVHlwZSwgc2VjdGlvbiwgJ2ZvbnQtYm9sZCcsIGRlZmF1bHQ9MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnKQogICAgICAgICBpZiAoZmFtaWx5ID09ICdUa0ZpeGVkRm9udCcpOgotICAgICAgICAgICAgaWYgVGtWZXJzaW9uIDwgOC41OgotICAgICAgICAgICAgICAgIGZhbWlseSA9ICdDb3VyaWVyJwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmID0gRm9udChuYW1lPSdUa0ZpeGVkRm9udCcsIGV4aXN0cz1UcnVlLCByb290PXJvb3QpCi0gICAgICAgICAgICAgICAgYWN0dWFsRm9udCA9IEZvbnQuYWN0dWFsKGYpCi0gICAgICAgICAgICAgICAgZmFtaWx5ID0gYWN0dWFsRm9udFsnZmFtaWx5J10KLSAgICAgICAgICAgICAgICBzaXplID0gYWN0dWFsRm9udFsnc2l6ZSddCi0gICAgICAgICAgICAgICAgaWYgc2l6ZSA8PSAwOgotICAgICAgICAgICAgICAgICAgICBzaXplID0gMTAgICMgaWYgZm9udCBpbiBwaXhlbHMsIGlnbm9yZSBhY3R1YWwgc2l6ZQotICAgICAgICAgICAgICAgIGJvbGQgPSBhY3R1YWxGb250Wyd3ZWlnaHQnXT09J2JvbGQnCisgICAgICAgICAgICBmID0gRm9udChuYW1lPSdUa0ZpeGVkRm9udCcsIGV4aXN0cz1UcnVlLCByb290PXJvb3QpCisgICAgICAgICAgICBhY3R1YWxGb250ID0gRm9udC5hY3R1YWwoZikKKyAgICAgICAgICAgIGZhbWlseSA9IGFjdHVhbEZvbnRbJ2ZhbWlseSddCisgICAgICAgICAgICBzaXplID0gYWN0dWFsRm9udFsnc2l6ZSddCisgICAgICAgICAgICBpZiBzaXplIDw9IDA6CisgICAgICAgICAgICAgICAgc2l6ZSA9IDEwICAjIGlmIGZvbnQgaW4gcGl4ZWxzLCBpZ25vcmUgYWN0dWFsIHNpemUKKyAgICAgICAgICAgIGJvbGQgPSBhY3R1YWxGb250Wyd3ZWlnaHQnXSA9PSAnYm9sZCcKICAgICAgICAgcmV0dXJuIChmYW1pbHksIHNpemUsICdib2xkJyBpZiBib2xkIGVsc2UgJ25vcm1hbCcpCiAKICAgICBkZWYgTG9hZENmZ0ZpbGVzKHNlbGYpOgpAQCAtNzM5LDYgKzc1OSwxOCBAQAogCiBpZGxlQ29uZiA9IElkbGVDb25mKCkKIAorCitfd2FybmVkID0gc2V0KCkKK2RlZiBfd2Fybihtc2csICprZXkpOgorICAgIGtleSA9IChtc2csKSArIGtleQorICAgIGlmIGtleSBub3QgaW4gX3dhcm5lZDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBfd2FybmVkLmFkZChrZXkpCisKKwogIyBUT0RPIFJldmlzZSB0ZXN0IG91dHB1dCwgd3JpdGUgZXhwYW5kZWQgdW5pdHRlc3QKICMKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGU4MTE4Li4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLSJEaWFsb2cgdG8gc3BlY2lmeSBvciBlZGl0IHRoZSBwYXJhbWV0ZXJzIGZvciBhIHVzZXIgY29uZmlndXJlZCBoZWxwIHNvdXJjZS4iCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1pbXBvcnQgdGtpbnRlci5maWxlZGlhbG9nIGFzIHRrRmlsZURpYWxvZwotCi1jbGFzcyBHZXRIZWxwU291cmNlRGlhbG9nKFRvcGxldmVsKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVudUl0ZW09JycsIGZpbGVQYXRoPScnLCBfaHRlc3Q9RmFsc2UpOgotICAgICAgICAiIiJHZXQgbWVudSBlbnRyeSBhbmQgdXJsLyBsb2NhbCBmaWxlIGxvY2F0aW9uIGZvciBBZGRpdGlvbmFsIEhlbHAKLQotICAgICAgICBVc2VyIHNlbGVjdHMgYSBuYW1lIGZvciB0aGUgSGVscCByZXNvdXJjZSBhbmQgcHJvdmlkZXMgYSB3ZWIgdXJsCi0gICAgICAgIG9yIGEgbG9jYWwgZmlsZSBhcyBpdHMgc291cmNlLiAgVGhlIHVzZXIgY2FuIGVudGVyIGEgdXJsIG9yIGJyb3dzZQotICAgICAgICBmb3IgdGhlIGZpbGUuCi0KLSAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKLSAgICAgICAgIiIiCi0gICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKLSAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKLSAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKLSAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQotICAgICAgICBzZWxmLmdyYWJfc2V0KCkKLSAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2FuY2VsKQotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKLSAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCi0gICAgICAgIHNlbGYubWVudS5zZXQobWVudUl0ZW0pCi0gICAgICAgIHNlbGYucGF0aC5zZXQoZmlsZVBhdGgpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5Ci0gICAgICAgICNuZWVkcyB0byBiZSBkb25lIGhlcmUgc28gdGhhdCB0aGUgd2luZm9fcmVxd2lkdGggaXMgdmFsaWQKLSAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkKLSAgICAgICAgI2NlbnRyZSBkaWFsb2cgb3ZlciBwYXJlbnQuIGJlbG93IHBhcmVudCBpZiBydW5uaW5nIGh0ZXN0LgotICAgICAgICBzZWxmLmdlb21ldHJ5KAotICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArCi0gICAgICAgICAgICAgICAgICAgIChwYXJlbnQud2luZm9fd2lkdGgoKS8yIC0gc2VsZi53aW5mb19yZXF3aWR0aCgpLzIpLAotICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArCi0gICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxNTApKSkKLSAgICAgICAgc2VsZi5kZWljb25pZnkoKSAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKLSAgICAgICAgc2VsZi5iaW5kKCc8UmV0dXJuPicsIHNlbGYub2spCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQotCi0gICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgotICAgICAgICBzZWxmLm1lbnUgPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5wYXRoID0gU3RyaW5nVmFyKHNlbGYpCi0gICAgICAgIHNlbGYuZm9udFNpemUgPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5mcmFtZU1haW4gPSBGcmFtZShzZWxmLCBib3JkZXJ3aWR0aD0yLCByZWxpZWY9R1JPT1ZFKQotICAgICAgICBzZWxmLmZyYW1lTWFpbi5wYWNrKHNpZGU9VE9QLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQotICAgICAgICBsYWJlbE1lbnUgPSBMYWJlbChzZWxmLmZyYW1lTWFpbiwgYW5jaG9yPVcsIGp1c3RpZnk9TEVGVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nTWVudSBJdGVtOicpCi0gICAgICAgIHNlbGYuZW50cnlNZW51ID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLm1lbnUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9MzApCi0gICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgIGxhYmVsUGF0aCA9IExhYmVsKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSdIZWxwIEZpbGUgUGF0aDogRW50ZXIgVVJMIG9yIGJyb3dzZSBmb3IgZmlsZScpCi0gICAgICAgIHNlbGYuZW50cnlQYXRoID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLnBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9NDApCi0gICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgIGxhYmVsTWVudS5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIGxhYmVsUGF0aC5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgc2VsZi5lbnRyeVBhdGgucGFjayhhbmNob3I9VywgcGFkeD01LCBwYWR5PTMpCi0gICAgICAgIGJyb3dzZUJ1dHRvbiA9IEJ1dHRvbihzZWxmLmZyYW1lTWFpbiwgdGV4dD0nQnJvd3NlJywgd2lkdGg9OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5icm93c2VfZmlsZSkKLSAgICAgICAgYnJvd3NlQnV0dG9uLnBhY2socGFkeT0zKQotICAgICAgICBmcmFtZUJ1dHRvbnMgPSBGcmFtZShzZWxmKQotICAgICAgICBmcmFtZUJ1dHRvbnMucGFjayhzaWRlPUJPVFRPTSwgZmlsbD1YKQotICAgICAgICBzZWxmLmJ1dHRvbk9rID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nT0snLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTgsIGRlZmF1bHQ9QUNUSVZFLCAgY29tbWFuZD1zZWxmLm9rKQotICAgICAgICBzZWxmLmJ1dHRvbk9rLmdyaWQocm93PTAsIGNvbHVtbj0wLCBwYWR4PTUscGFkeT01KQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbCA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0NhbmNlbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPTgsIGNvbW1hbmQ9c2VsZi5jYW5jZWwpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsLmdyaWQocm93PTAsIGNvbHVtbj0xLCBwYWR4PTUsIHBhZHk9NSkKLQotICAgIGRlZiBicm93c2VfZmlsZShzZWxmKToKLSAgICAgICAgZmlsZXR5cGVzID0gWwotICAgICAgICAgICAgKCJIVE1MIEZpbGVzIiwgIiouaHRtICouaHRtbCIsICJURVhUIiksCi0gICAgICAgICAgICAoIlBERiBGaWxlcyIsICIqLnBkZiIsICJURVhUIiksCi0gICAgICAgICAgICAoIldpbmRvd3MgSGVscCBGaWxlcyIsICIqLmNobSIpLAotICAgICAgICAgICAgKCJUZXh0IEZpbGVzIiwgIioudHh0IiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiQWxsIEZpbGVzIiwgIioiKV0KLSAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKQotICAgICAgICBpZiBwYXRoOgotICAgICAgICAgICAgZGlyLCBiYXNlID0gb3MucGF0aC5zcGxpdChwYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmFzZSA9IE5vbmUKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybVs6M10gPT0gJ3dpbic6Ci0gICAgICAgICAgICAgICAgZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSksICdEb2MnKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGRpcik6Ci0gICAgICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgIG9wZW5kaWFsb2cgPSB0a0ZpbGVEaWFsb2cuT3BlbihwYXJlbnQ9c2VsZiwgZmlsZXR5cGVzPWZpbGV0eXBlcykKLSAgICAgICAgZmlsZSA9IG9wZW5kaWFsb2cuc2hvdyhpbml0aWFsZGlyPWRpciwgaW5pdGlhbGZpbGU9YmFzZSkKLSAgICAgICAgaWYgZmlsZToKLSAgICAgICAgICAgIHNlbGYucGF0aC5zZXQoZmlsZSkKLQotICAgIGRlZiBtZW51X29rKHNlbGYpOgotICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBhIHNlbnNpYmxlIG1lbnUgaXRlbSBuYW1lIgotICAgICAgICBtZW51X29rID0gVHJ1ZQotICAgICAgICBtZW51ID0gc2VsZi5tZW51LmdldCgpCi0gICAgICAgIG1lbnUuc3RyaXAoKQotICAgICAgICBpZiBub3QgbWVudToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J01lbnUgSXRlbSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05vIG1lbnUgaXRlbSBzcGVjaWZpZWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgICAgICBtZW51X29rID0gRmFsc2UKLSAgICAgICAgZWxpZiBsZW4obWVudSkgPiAzMDoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J01lbnUgSXRlbSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J01lbnUgaXRlbSB0b28gbG9uZzonCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuTGltaXQgMzAgY2hhcmFjdGVycy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIHNlbGYuZW50cnlNZW51LmZvY3VzX3NldCgpCi0gICAgICAgICAgICBtZW51X29rID0gRmFsc2UKLSAgICAgICAgcmV0dXJuIG1lbnVfb2sKLQotICAgIGRlZiBwYXRoX29rKHNlbGYpOgotICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBtZW51IGZpbGUgcGF0aCIKLSAgICAgICAgcGF0aF9vayA9IFRydWUKLSAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKQotICAgICAgICBwYXRoLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IHBhdGg6ICNubyBwYXRoIHNwZWNpZmllZAotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRmlsZSBQYXRoIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gaGVscCBmaWxlIHBhdGggc3BlY2lmaWVkLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeVBhdGguZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIHBhdGhfb2sgPSBGYWxzZQotICAgICAgICBlbGlmIHBhdGguc3RhcnRzd2l0aCgoJ3d3dy4nLCAnaHR0cCcpKToKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHBhdGhbOjVdID09ICdmaWxlOic6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHBhdGhbNTpdCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nRmlsZSBQYXRoIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbHAgZmlsZSBwYXRoIGRvZXMgbm90IGV4aXN0LicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLmVudHJ5UGF0aC5mb2N1c19zZXQoKQotICAgICAgICAgICAgICAgIHBhdGhfb2sgPSBGYWxzZQotICAgICAgICByZXR1cm4gcGF0aF9vawotCi0gICAgZGVmIG9rKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBpZiBzZWxmLm1lbnVfb2soKSBhbmQgc2VsZi5wYXRoX29rKCk6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IChzZWxmLm1lbnUuZ2V0KCkuc3RyaXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aC5nZXQoKS5zdHJpcCgpKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgICAgIHBhdGggPSBzZWxmLnJlc3VsdFsxXQotICAgICAgICAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aCgoJ3d3dycsICdmaWxlOicsICdodHRwOicsICdodHRwczonKSk6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIE1hYyBTYWZhcmkgaW5zaXN0cyBvbiB1c2luZyB0aGUgVVJJIGZvcm0gZm9yIGxvY2FsIGZpbGVzCi0gICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gbGlzdChzZWxmLnJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRbMV0gPSAiZmlsZTovLyIgKyBwYXRoCi0gICAgICAgICAgICBzZWxmLmRlc3Ryb3koKQotCi0gICAgZGVmIGNhbmNlbChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCi0gICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9jb25maWdfaGVscCcsCi0gICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCi0KLSAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KLSAgICBydW4oR2V0SGVscFNvdXJjZURpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMzc4MzYuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi0iIiIKLURpYWxvZyB0aGF0IGFsbG93cyB1c2VyIHRvIHNwZWNpZnkgYSBuZXcgY29uZmlnIGZpbGUgc2VjdGlvbiBuYW1lLgotVXNlZCB0byBnZXQgbmV3IGhpZ2hsaWdodCB0aGVtZSBhbmQga2V5YmluZGluZyBzZXQgbmFtZXMuCi1UaGUgJ3JldHVybiB2YWx1ZScgZm9yIHRoZSBkaWFsb2csIHVzZWQgdHdvIHBsYWNlZCBpbiBjb25maWdEaWFsb2cucHksCi1pcyB0aGUgLnJlc3VsdCBhdHRyaWJ1dGUgc2V0IGluIHRoZSBPayBhbmQgQ2FuY2VsIG1ldGhvZHMuCi0iIiIKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLQotY2xhc3MgR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzLCBfaHRlc3Q9RmFsc2UpOgotICAgICAgICAiIiIKLSAgICAgICAgbWVzc2FnZSAtIHN0cmluZywgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkKLSAgICAgICAgdXNlZF9uYW1lcyAtIHN0cmluZyBjb2xsZWN0aW9uLCBuYW1lcyBhbHJlYWR5IGluIHVzZSBmb3IgdmFsaWRpdHkgY2hlY2sKLSAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKLSAgICAgICAgIiIiCi0gICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKLSAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKLSAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKLSAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQotICAgICAgICBzZWxmLmdyYWJfc2V0KCkKLSAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuQ2FuY2VsKQotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCi0gICAgICAgIHNlbGYudXNlZF9uYW1lcyA9IHVzZWRfbmFtZXMKLSAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQotICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKQotICAgICAgICAjbmVlZHMgdG8gYmUgZG9uZSBoZXJlIHNvIHRoYXQgdGhlIHdpbmZvX3JlcXdpZHRoIGlzIHZhbGlkCi0gICAgICAgIHNlbGYubWVzc2FnZUluZm8uY29uZmlnKHdpZHRoPXNlbGYuZnJhbWVNYWluLndpbmZvX3JlcXdpZHRoKCkpCi0gICAgICAgIHNlbGYuZ2VvbWV0cnkoCi0gICAgICAgICAgICAgICAgIislZCslZCIgJSAoCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsKLSAgICAgICAgICAgICAgICAgICAgKHBhcmVudC53aW5mb193aWR0aCgpLzIgLSBzZWxmLndpbmZvX3JlcXdpZHRoKCkvMiksCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsKLSAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDEwMCkKLSAgICAgICAgICAgICAgICApICkgICNjZW50cmUgZGlhbG9nIG92ZXIgcGFyZW50IChvciBiZWxvdyBodGVzdCBib3gpCi0gICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKLQotICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5uYW1lID0gU3RyaW5nVmFyKHNlbGYucGFyZW50KQotICAgICAgICBzZWxmLmZvbnRTaXplID0gU3RyaW5nVmFyKHNlbGYucGFyZW50KQotICAgICAgICBzZWxmLmZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsIGJvcmRlcndpZHRoPTIsIHJlbGllZj1TVU5LRU4pCi0gICAgICAgIHNlbGYuZnJhbWVNYWluLnBhY2soc2lkZT1UT1AsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIHNlbGYubWVzc2FnZUluZm8gPSBNZXNzYWdlKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICBwYWR4PTUsIHBhZHk9NSwgdGV4dD1zZWxmLm1lc3NhZ2UpICMsYXNwZWN0PTIwMCkKLSAgICAgICAgZW50cnlOYW1lID0gRW50cnkoc2VsZi5mcmFtZU1haW4sIHRleHR2YXJpYWJsZT1zZWxmLm5hbWUsIHdpZHRoPTMwKQotICAgICAgICBlbnRyeU5hbWUuZm9jdXNfc2V0KCkKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mby5wYWNrKHBhZHg9NSwgcGFkeT01KSAjLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQotICAgICAgICBlbnRyeU5hbWUucGFjayhwYWR4PTUsIHBhZHk9NSkKLQotICAgICAgICBmcmFtZUJ1dHRvbnMgPSBGcmFtZShzZWxmLCBwYWR5PTIpCi0gICAgICAgIGZyYW1lQnV0dG9ucy5wYWNrKHNpZGU9Qk9UVE9NKQotICAgICAgICBzZWxmLmJ1dHRvbk9rID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nT2snLAotICAgICAgICAgICAgICAgIHdpZHRoPTgsIGNvbW1hbmQ9c2VsZi5PaykKLSAgICAgICAgc2VsZi5idXR0b25Pay5wYWNrKHNpZGU9TEVGVCwgcGFkeD01KQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbCA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0NhbmNlbCcsCi0gICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLkNhbmNlbCkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwucGFjayhzaWRlPVJJR0hULCBwYWR4PTUpCi0KLSAgICBkZWYgbmFtZV9vayhzZWxmKToKLSAgICAgICAgJycnIEFmdGVyIHN0cmlwcGluZyBlbnRlcmVkIG5hbWUsIGNoZWNrIHRoYXQgaXQgaXMgYSAgc2Vuc2libGUKLSAgICAgICAgQ29uZmlnUGFyc2VyIGZpbGUgc2VjdGlvbiBuYW1lLiBSZXR1cm4gaXQgaWYgaXQgaXMsICcnIGlmIG5vdC4KLSAgICAgICAgJycnCi0gICAgICAgIG5hbWUgPSBzZWxmLm5hbWUuZ2V0KCkuc3RyaXAoKQotICAgICAgICBpZiBub3QgbmFtZTogI25vIG5hbWUgc3BlY2lmaWVkCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdOYW1lIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gbmFtZSBzcGVjaWZpZWQuJywgcGFyZW50PXNlbGYpCi0gICAgICAgIGVsaWYgbGVuKG5hbWUpPjMwOiAjbmFtZSB0b28gbG9uZwotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J05hbWUgdG9vIGxvbmcuIEl0IHNob3VsZCBiZSBubyBtb3JlIHRoYW4gJysKLSAgICAgICAgICAgICAgICAgICAgJzMwIGNoYXJhY3RlcnMuJywgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBuYW1lID0gJycKLSAgICAgICAgZWxpZiBuYW1lIGluIHNlbGYudXNlZF9uYW1lczoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J05hbWUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdUaGlzIG5hbWUgaXMgYWxyZWFkeSBpbiB1c2UuJywgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBuYW1lID0gJycKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotICAgIGRlZiBPayhzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgbmFtZSA9IHNlbGYubmFtZV9vaygpCi0gICAgICAgIGlmIG5hbWU6Ci0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IG5hbWUKLSAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLSAgICBkZWYgQ2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBzZWxmLnJlc3VsdCA9ICcnCi0gICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9jb25maWdfbmFtZScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQotCi0gICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCi0gICAgcnVuKEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ19rZXkucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQppbmRleCBlNjQzOGJmLi4yNjAyMjkzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ19rZXkucHkKQEAgLTIsMzEgKzIsMzUgQEAKIERpYWxvZyBmb3IgYnVpbGRpbmcgVGtpbnRlciBhY2NlbGVyYXRvciBrZXkgYmluZGluZ3MKICIiIgogZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiAKIGNsYXNzIEdldEtleXNEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCx0aXRsZSxhY3Rpb24sY3VycmVudEtleVNlcXVlbmNlcyxfaHRlc3Q9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBhY3Rpb24sIGN1cnJlbnRLZXlTZXF1ZW5jZXMsCisgICAgICAgICAgICAgICAgIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIGFjdGlvbiAtIHN0cmluZywgdGhlIG5hbWUgb2YgdGhlIHZpcnR1YWwgZXZlbnQgdGhlc2Uga2V5cyB3aWxsIGJlCiAgICAgICAgICAgICAgICAgIG1hcHBlZCB0bwogICAgICAgICBjdXJyZW50S2V5cyAtIGxpc3QsIGEgbGlzdCBvZiBhbGwga2V5IHNlcXVlbmNlIGxpc3RzIGN1cnJlbnRseSBtYXBwZWQKICAgICAgICAgICAgICAgICAgdG8gdmlydHVhbCBldmVudHMsIGZvciBvdmVybGFwIGNoZWNraW5nCisgICAgICAgIF91dGVzdCAtIGJvb2wsIGRvIG5vdCB3YWl0IHdoZW4gcnVubmluZyB1bml0dGVzdAogICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAogICAgICAgICAiIiIKICAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQorICAgICAgICBzZWxmLndpdGhkcmF3KCkgI2hpZGUgd2hpbGUgc2V0dGluZyBnZW9tZXRyeQogICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0Usd2lkdGg9RkFMU0UpCisgICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSwgd2lkdGg9RkFMU0UpCiAgICAgICAgIHNlbGYudGl0bGUodGl0bGUpCiAgICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKICAgICAgICAgc2VsZi5ncmFiX3NldCgpCiAgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLkNhbmNlbCkKICAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKICAgICAgICAgc2VsZi5hY3Rpb249YWN0aW9uCi0gICAgICAgIHNlbGYuY3VycmVudEtleVNlcXVlbmNlcz1jdXJyZW50S2V5U2VxdWVuY2VzCi0gICAgICAgIHNlbGYucmVzdWx0PScnCi0gICAgICAgIHNlbGYua2V5U3RyaW5nPVN0cmluZ1ZhcihzZWxmKQorICAgICAgICBzZWxmLmN1cnJlbnRLZXlTZXF1ZW5jZXMgPSBjdXJyZW50S2V5U2VxdWVuY2VzCisgICAgICAgIHNlbGYucmVzdWx0ID0gJycKKyAgICAgICAgc2VsZi5rZXlTdHJpbmcgPSBTdHJpbmdWYXIoc2VsZikKICAgICAgICAgc2VsZi5rZXlTdHJpbmcuc2V0KCcnKQogICAgICAgICBzZWxmLlNldE1vZGlmaWVyc0ZvclBsYXRmb3JtKCkgIyBzZXQgc2VsZi5tb2RpZmllcnMsIHNlbGYubW9kaWZpZXJfbGFiZWwKICAgICAgICAgc2VsZi5tb2RpZmllcl92YXJzID0gW10KQEAgLTM3LDcgKzQxLDYgQEAKICAgICAgICAgc2VsZi5hZHZhbmNlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuQ3JlYXRlV2lkZ2V0cygpCiAgICAgICAgIHNlbGYuTG9hZEZpbmFsS2V5TGlzdCgpCi0gICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5CiAgICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpCiAgICAgICAgIHNlbGYuZ2VvbWV0cnkoCiAgICAgICAgICAgICAgICAgIislZCslZCIgJSAoCkBAIC00Nyw4ICs1MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxNTApCiAgICAgICAgICAgICAgICAgKSApICAjY2VudHJlIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KQotICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKKyAgICAgICAgaWYgbm90IF91dGVzdDoKKyAgICAgICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgI2dlb21ldHJ5IHNldCwgdW5oaWRlCisgICAgICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKIAogICAgIGRlZiBDcmVhdGVXaWRnZXRzKHNlbGYpOgogICAgICAgICBmcmFtZU1haW4gPSBGcmFtZShzZWxmLGJvcmRlcndpZHRoPTIscmVsaWVmPVNVTktFTikKQEAgLTI2MSw2ICsyNjUsNyBAQAogICAgICAgICAgICAga2V5c09LID0gVHJ1ZQogICAgICAgICByZXR1cm4ga2V5c09LCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oR2V0S2V5c0RpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ2RpYWxvZy5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NvbmZpZ2RpYWxvZy5weQppbmRleCA1ZjViZDM2Li5mYTQ3YWFhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CkBAIC0xMCwxOCArMTAsMTggQEAKIAogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKIGltcG9ydCB0a2ludGVyLmNvbG9yY2hvb3NlciBhcyB0a0NvbG9yQ2hvb3NlcgogaW1wb3J0IHRraW50ZXIuZm9udCBhcyB0a0ZvbnQKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliLmR5bk9wdGlvbk1lbnVXaWRnZXQgaW1wb3J0IER5bk9wdGlvbk1lbnUKLWZyb20gaWRsZWxpYi5rZXliaW5kaW5nRGlhbG9nIGltcG9ydCBHZXRLZXlzRGlhbG9nCi1mcm9tIGlkbGVsaWIuY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cgaW1wb3J0IEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nCi1mcm9tIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQgaW1wb3J0IEdldEhlbHBTb3VyY2VEaWFsb2cKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnX2tleSBpbXBvcnQgR2V0S2V5c0RpYWxvZworZnJvbSBpZGxlbGliLmR5bm9wdGlvbiBpbXBvcnQgRHluT3B0aW9uTWVudQorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5xdWVyeSBpbXBvcnQgU2VjdGlvbk5hbWUsIEhlbHBTb3VyY2UKIGZyb20gaWRsZWxpYi50YWJiZWRwYWdlcyBpbXBvcnQgVGFiYmVkUGFnZVNldAotZnJvbSBpZGxlbGliLnRleHRWaWV3IGltcG9ydCB2aWV3X3RleHQKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliLnRleHR2aWV3IGltcG9ydCB2aWV3X3RleHQKIAogY2xhc3MgQ29uZmlnRGlhbG9nKFRvcGxldmVsKToKIApAQCAtOTEsNyArOTEsNyBAQAogICAgICAgICBzZWxmLmNyZWF0ZV9hY3Rpb25fYnV0dG9ucygpLnBhY2soc2lkZT1CT1RUT00pCiAKICAgICBkZWYgY3JlYXRlX2FjdGlvbl9idXR0b25zKHNlbGYpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBDaGFuZ2luZyB0aGUgZGVmYXVsdCBwYWRkaW5nIG9uIE9TWCByZXN1bHRzIGluIHVucmVhZGFibGUKICAgICAgICAgICAgICMgdGV4dCBpbiB0aGUgYnV0dG9ucwogICAgICAgICAgICAgcGFkZGluZ0FyZ3MgPSB7fQpAQCAtMzQxLDYgKzM0MSw3IEBACiAgICAgICAgIGJ1dHRvblNhdmVDdXN0b21LZXlzID0gQnV0dG9uKAogICAgICAgICAgICAgICAgIGZyYW1lc1sxXSwgdGV4dD0nU2F2ZSBhcyBOZXcgQ3VzdG9tIEtleSBTZXQnLAogICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5TYXZlQXNOZXdLZXlTZXQpCisgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzID0gTGFiZWwoZnJhbWVzWzBdLCBiZD0yKQogCiAgICAgICAgICMjd2lkZ2V0IHBhY2tpbmcKICAgICAgICAgI2JvZHkKQEAgLTM2MSw2ICszNjIsNyBAQAogICAgICAgICBzZWxmLnJhZGlvS2V5c0N1c3RvbS5ncmlkKHJvdz0xLCBjb2x1bW49MCwgc3RpY2t5PVcrTlMpCiAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLmdyaWQocm93PTAsIGNvbHVtbj0xLCBzdGlja3k9TlNFVykKICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0N1c3RvbS5ncmlkKHJvdz0xLCBjb2x1bW49MSwgc3RpY2t5PU5TRVcpCisgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmdyaWQocm93PTAsIGNvbHVtbj0yLCBzdGlja3k9TlNFVywgcGFkeD01LCBwYWR5PTUpCiAgICAgICAgIHNlbGYuYnV0dG9uRGVsZXRlQ3VzdG9tS2V5cy5wYWNrKHNpZGU9TEVGVCwgZmlsbD1YLCBleHBhbmQ9VHJ1ZSwgcGFkeD0yKQogICAgICAgICBidXR0b25TYXZlQ3VzdG9tS2V5cy5wYWNrKHNpZGU9TEVGVCwgZmlsbD1YLCBleHBhbmQ9VHJ1ZSwgcGFkeD0yKQogICAgICAgICBmcmFtZXNbMF0ucGFjayhzaWRlPVRPUCwgZmlsbD1CT1RILCBleHBhbmQ9VHJ1ZSkKQEAgLTQ2NCwyNCArNDY2LDI0IEBACiAgICAgICAgIHJldHVybiBmcmFtZQogCiAgICAgZGVmIEF0dGFjaFZhckNhbGxiYWNrcyhzZWxmKToKLSAgICAgICAgc2VsZi5mb250U2l6ZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQotICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCi0gICAgICAgIHNlbGYuZm9udEJvbGQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKLSAgICAgICAgc2VsZi5zcGFjZU51bS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKLSAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY29sb3VyKQotICAgICAgICBzZWxmLmJ1aWx0aW5UaGVtZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUpCi0gICAgICAgIHNlbGYuY3VzdG9tVGhlbWUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCi0gICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfdGhlbWVJc0J1aWx0aW4pCi0gICAgICAgIHNlbGYuaGlnaGxpZ2h0VGFyZ2V0LnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2hpZ2hsaWdodFRhcmdldCkKLSAgICAgICAgc2VsZi5rZXlCaW5kaW5nLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCi0gICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpbktleXMpCi0gICAgICAgIHNlbGYuY3VzdG9tS2V5cy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21LZXlzKQotICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQotICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3dpbldpZHRoKQotICAgICAgICBzZWxmLndpbkhlaWdodC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF93aW5IZWlnaHQpCi0gICAgICAgIHNlbGYuc3RhcnR1cEVkaXQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCi0gICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfYXV0b1NhdmUpCi0gICAgICAgIHNlbGYuZW5jb2RpbmcudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZW5jb2RpbmcpCisgICAgICAgIHNlbGYuZm9udFNpemUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQorICAgICAgICBzZWxmLmZvbnROYW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKKyAgICAgICAgc2VsZi5mb250Qm9sZC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCisgICAgICAgIHNlbGYuc3BhY2VOdW0udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9zcGFjZU51bSkKKyAgICAgICAgc2VsZi5jb2xvdXIudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jb2xvdXIpCisgICAgICAgIHNlbGYuYnVpbHRpblRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfYnVpbHRpblRoZW1lKQorICAgICAgICBzZWxmLmN1c3RvbVRoZW1lLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tVGhlbWUpCisgICAgICAgIHNlbGYudGhlbWVJc0J1aWx0aW4udHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF90aGVtZUlzQnVpbHRpbikKKyAgICAgICAgc2VsZi5oaWdobGlnaHRUYXJnZXQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9oaWdobGlnaHRUYXJnZXQpCisgICAgICAgIHNlbGYua2V5QmluZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleUJpbmRpbmcpCisgICAgICAgIHNlbGYuYnVpbHRpbktleXMudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluS2V5cykKKyAgICAgICAgc2VsZi5jdXN0b21LZXlzLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfY3VzdG9tS2V5cykKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2tleXNBcmVCdWlsdGluKQorICAgICAgICBzZWxmLndpbldpZHRoLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luV2lkdGgpCisgICAgICAgIHNlbGYud2luSGVpZ2h0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfd2luSGVpZ2h0KQorICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfc3RhcnR1cEVkaXQpCisgICAgICAgIHNlbGYuYXV0b1NhdmUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9hdXRvU2F2ZSkKKyAgICAgICAgc2VsZi5lbmNvZGluZy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2VuY29kaW5nKQogCiAgICAgZGVmIHJlbW92ZV92YXJfY2FsbGJhY2tzKHNlbGYpOgogICAgICAgICAiUmVtb3ZlIGNhbGxiYWNrcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4iCkBAIC00OTIsNyArNDk0LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmtleUJpbmRpbmcsIHNlbGYuYnVpbHRpbktleXMsIHNlbGYuY3VzdG9tS2V5cywKICAgICAgICAgICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLCBzZWxmLndpbldpZHRoLCBzZWxmLndpbkhlaWdodCwKICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0dXBFZGl0LCBzZWxmLmF1dG9TYXZlLCBzZWxmLmVuY29kaW5nLCk6Ci0gICAgICAgICAgICB2YXIudHJhY2VfdmRlbGV0ZSgndycsIHZhci50cmFjZV92aW5mbygpWzBdWzFdKQorICAgICAgICAgICAgdmFyLnRyYWNlX3JlbW92ZSgnd3JpdGUnLCB2YXIudHJhY2VfaW5mbygpWzBdWzFdKQogCiAgICAgZGVmIFZhckNoYW5nZWRfZm9udChzZWxmLCAqcGFyYW1zKToKICAgICAgICAgJycnV2hlbiBvbmUgZm9udCBhdHRyaWJ1dGUgY2hhbmdlcywgc2F2ZSB0aGVtIGFsbCwgYXMgdGhleSBhcmUKQEAgLTUxNCwxMCArNTE2LDExIEBACiAgICAgICAgIHNlbGYuT25OZXdDb2xvdXJTZXQoKQogCiAgICAgZGVmIFZhckNoYW5nZWRfYnVpbHRpblRoZW1lKHNlbGYsICpwYXJhbXMpOgorICAgICAgICBvbGR0aGVtZXMgPSAoJ0lETEUgQ2xhc3NpYycsICdJRExFIE5ldycpCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluVGhlbWUuZ2V0KCkKLSAgICAgICAgaWYgdmFsdWUgPT0gJ0lETEUgRGFyayc6Ci0gICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpICE9ICdJRExFIE5ldyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgJ0lETEUgQ2xhc3NpYycpCisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICBpZiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnbmFtZScpIG5vdCBpbiBvbGR0aGVtZXM6CisgICAgICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lJywgb2xkdGhlbWVzWzBdKQogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdUaGVtZScsICduYW1lMicsIHZhbHVlKQogICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX3RoZW1lLmNvbmZpZyh0ZXh0PSdOZXcgdGhlbWUsIHNlZSBIZWxwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9JyM1MDAwMDAnKQpAQCAtNTU3LDggKzU2MCwyMyBAQAogICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnZXh0ZW5zaW9ucycsIGV4dEtleWJpbmRTZWN0aW9uLCBldmVudCwgdmFsdWUpCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9idWlsdGluS2V5cyhzZWxmLCAqcGFyYW1zKToKKyAgICAgICAgb2xka2V5cyA9ICgKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgV2luZG93cycsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIFVuaXgnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBNYWMnLAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBPU1gnLAorICAgICAgICApCiAgICAgICAgIHZhbHVlID0gc2VsZi5idWlsdGluS2V5cy5nZXQoKQotICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIHZhbHVlKQorICAgICAgICBpZiB2YWx1ZSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdLZXlzJywgJ25hbWUnKSBub3QgaW4gb2xka2V5czoKKyAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZScsIG9sZGtleXNbMF0pCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PSdOZXcga2V5IHNldCwgc2VlIEhlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZnPScjNTAwMDAwJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgdmFsdWUpCisgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ0tleXMnLCAnbmFtZTInLCAnJykKKyAgICAgICAgICAgIHNlbGYubmV3X2N1c3RvbV9rZXlzLmNvbmZpZyh0ZXh0PScnLCBmZz0nYmxhY2snKQogICAgICAgICBzZWxmLkxvYWRLZXlzTGlzdCh2YWx1ZSkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2N1c3RvbUtleXMoc2VsZiwgKnBhcmFtcyk6CkBAIC02ODMsNyArNzAxLDcgQEAKICAgICBkZWYgR2V0TmV3S2V5c05hbWUoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgIHVzZWROYW1lcyA9IChpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgndXNlcicsICdrZXlzJykgKwogICAgICAgICAgICAgICAgIGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCdkZWZhdWx0JywgJ2tleXMnKSkKLSAgICAgICAgbmV3S2V5U2V0ID0gR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2coCisgICAgICAgIG5ld0tleVNldCA9IFNlY3Rpb25OYW1lKAogICAgICAgICAgICAgICAgIHNlbGYsICdOZXcgQ3VzdG9tIEtleSBTZXQnLCBtZXNzYWdlLCB1c2VkTmFtZXMpLnJlc3VsdAogICAgICAgICByZXR1cm4gbmV3S2V5U2V0CiAKQEAgLTc2Nyw4ICs3ODUsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgaXRlbUxpc3RbMF0pCiAgICAgICAgICNyZXZlcnQgdG8gZGVmYXVsdCBrZXkgc2V0Ci0gICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4uc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQotICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKSkKKyAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5HZXQoJ0tleXMnLCAnZGVmYXVsdCcpKQorICAgICAgICBzZWxmLmJ1aWx0aW5LZXlzLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10uR2V0KCdLZXlzJywgJ25hbWUnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKSkKICAgICAgICAgI3VzZXIgY2FuJ3QgYmFjayBvdXQgb2YgdGhlc2UgY2hhbmdlcywgdGhleSBtdXN0IGJlIGFwcGxpZWQgbm93CiAgICAgICAgIHNlbGYuU2F2ZUFsbENoYW5nZWRDb25maWdzKCkKICAgICAgICAgc2VsZi5BY3RpdmF0ZUNvbmZpZ0NoYW5nZXMoKQpAQCAtODM2LDcgKzg1Niw3IEBACiAgICAgZGVmIEdldE5ld1RoZW1lTmFtZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgdXNlZE5hbWVzID0gKGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCd1c2VyJywgJ2hpZ2hsaWdodCcpICsKICAgICAgICAgICAgICAgICBpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgnZGVmYXVsdCcsICdoaWdobGlnaHQnKSkKLSAgICAgICAgbmV3VGhlbWUgPSBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZygKKyAgICAgICAgbmV3VGhlbWUgPSBTZWN0aW9uTmFtZSgKICAgICAgICAgICAgICAgICBzZWxmLCAnTmV3IEN1c3RvbSBUaGVtZScsIG1lc3NhZ2UsIHVzZWROYW1lcykucmVzdWx0CiAgICAgICAgIHJldHVybiBuZXdUaGVtZQogCkBAIC05MzksNyArOTU5LDggQEAKICAgICAgICAgICAgICAgICBzZWxmLmJ1dHRvbkhlbHBMaXN0UmVtb3ZlLmNvbmZpZyhzdGF0ZT1ESVNBQkxFRCkKIAogICAgIGRlZiBIZWxwTGlzdEl0ZW1BZGQoc2VsZik6Ci0gICAgICAgIGhlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKHNlbGYsICdOZXcgSGVscCBTb3VyY2UnKS5yZXN1bHQKKyAgICAgICAgaGVscFNvdXJjZSA9IEhlbHBTb3VyY2Uoc2VsZiwgJ05ldyBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkucmVzdWx0CiAgICAgICAgIGlmIGhlbHBTb3VyY2U6CiAgICAgICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdC5hcHBlbmQoKGhlbHBTb3VyY2VbMF0sIGhlbHBTb3VyY2VbMV0pKQogICAgICAgICAgICAgc2VsZi5saXN0SGVscC5pbnNlcnQoRU5ELCBoZWxwU291cmNlWzBdKQpAQCAtOTQ5LDE2ICs5NzAsMTcgQEAKICAgICBkZWYgSGVscExpc3RJdGVtRWRpdChzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCiAgICAgICAgIGhlbHBTb3VyY2UgPSBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdCi0gICAgICAgIG5ld0hlbHBTb3VyY2UgPSBHZXRIZWxwU291cmNlRGlhbG9nKAotICAgICAgICAgICAgICAgIHNlbGYsICdFZGl0IEhlbHAgU291cmNlJywgbWVudUl0ZW09aGVscFNvdXJjZVswXSwKLSAgICAgICAgICAgICAgICBmaWxlUGF0aD1oZWxwU291cmNlWzFdKS5yZXN1bHQKLSAgICAgICAgaWYgKG5vdCBuZXdIZWxwU291cmNlKSBvciAobmV3SGVscFNvdXJjZSA9PSBoZWxwU291cmNlKToKLSAgICAgICAgICAgIHJldHVybiAjbm8gY2hhbmdlcwotICAgICAgICBzZWxmLnVzZXJIZWxwTGlzdFtpdGVtSW5kZXhdID0gbmV3SGVscFNvdXJjZQotICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCi0gICAgICAgIHNlbGYubGlzdEhlbHAuaW5zZXJ0KGl0ZW1JbmRleCwgbmV3SGVscFNvdXJjZVswXSkKLSAgICAgICAgc2VsZi5VcGRhdGVVc2VySGVscENoYW5nZWRJdGVtcygpCi0gICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQorICAgICAgICBuZXdIZWxwU291cmNlID0gSGVscFNvdXJjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAnRWRpdCBIZWxwIFNvdXJjZScsCisgICAgICAgICAgICAgICAgbWVudWl0ZW09aGVscFNvdXJjZVswXSwKKyAgICAgICAgICAgICAgICBmaWxlcGF0aD1oZWxwU291cmNlWzFdLAorICAgICAgICAgICAgICAgICkucmVzdWx0CisgICAgICAgIGlmIG5ld0hlbHBTb3VyY2UgYW5kIG5ld0hlbHBTb3VyY2UgIT0gaGVscFNvdXJjZToKKyAgICAgICAgICAgIHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0gPSBuZXdIZWxwU291cmNlCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmRlbGV0ZShpdGVtSW5kZXgpCisgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmluc2VydChpdGVtSW5kZXgsIG5ld0hlbHBTb3VyY2VbMF0pCisgICAgICAgICAgICBzZWxmLlVwZGF0ZVVzZXJIZWxwQ2hhbmdlZEl0ZW1zKCkKKyAgICAgICAgICAgIHNlbGYuU2V0SGVscExpc3RCdXR0b25TdGF0ZXMoKQogCiAgICAgZGVmIEhlbHBMaXN0SXRlbVJlbW92ZShzZWxmKToKICAgICAgICAgaXRlbUluZGV4ID0gc2VsZi5saXN0SGVscC5pbmRleChBTkNIT1IpCkBAIC05OTYsNyArMTAxOCw4IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMjZm9udCBzaXplIGRyb3Bkb3duCiAgICAgICAgIHNlbGYub3B0TWVudUZvbnRTaXplLlNldE1lbnUoKCc3JywgJzgnLCAnOScsICcxMCcsICcxMScsICcxMicsICcxMycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicpLCBmb250U2l6ZSApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNCcsICcxNicsICcxOCcsICcyMCcsICcyMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyNScsICcyOScsICczNCcsICc0MCcpLCBmb250U2l6ZSApCiAgICAgICAgICMjZm9udFdlaWdodAogICAgICAgICBzZWxmLmZvbnRCb2xkLnNldChmb250Qm9sZCkKICAgICAgICAgIyNmb250IHNhbXBsZQpAQCAtMTA2NSw3ICsxMDg4LDcgQEAKICAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNDdXN0b20uU2V0TWVudShpdGVtTGlzdCwgY3VycmVudE9wdGlvbikKICAgICAgICAgICAgIGl0ZW1MaXN0ID0gaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ2RlZmF1bHQnLCAna2V5cycpCiAgICAgICAgICAgICBpdGVtTGlzdC5zb3J0KCkKLSAgICAgICAgICAgIHNlbGYub3B0TWVudUtleXNCdWlsdGluLlNldE1lbnUoaXRlbUxpc3QsIGl0ZW1MaXN0WzBdKQorICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uU2V0TWVudShpdGVtTGlzdCwgaWRsZUNvbmYuZGVmYXVsdF9rZXlzKCkpCiAgICAgICAgIHNlbGYuU2V0S2V5c1R5cGUoKQogICAgICAgICAjI2xvYWQga2V5c2V0IGVsZW1lbnQgbGlzdAogICAgICAgICBrZXlTZXROYW1lID0gaWRsZUNvbmYuQ3VycmVudEtleXMoKQpAQCAtMTM2NywxMiArMTM5MCwxOCBAQAogW0NhbmNlbF0gb25seSBjYW5jZWxzIGNoYW5nZXMgbWFkZSBzaW5jZSB0aGUgbGFzdCBzYXZlLgogJycnCiBoZWxwX3BhZ2VzID0gewotICAgICdIaWdobGlnaHRpbmcnOicnJworICAgICdIaWdobGlnaHRpbmcnOiAnJycKIEhpZ2hsaWdodGluZzoKIFRoZSBJRExFIERhcmsgY29sb3IgdGhlbWUgaXMgbmV3IGluIE9jdG9iZXIgMjAxNS4gIEl0IGNhbiBvbmx5CiBiZSB1c2VkIHdpdGggb2xkZXIgSURMRSByZWxlYXNlcyBpZiBpdCBpcyBzYXZlZCBhcyBhIGN1c3RvbQogdGhlbWUsIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLScnJworJycnLAorICAgICdLZXlzJzogJycnCitLZXlzOgorVGhlIElETEUgTW9kZXJuIFVuaXgga2V5IHNldCBpcyBuZXcgaW4gSnVuZSAyMDE2LiAgSXQgY2FuIG9ubHkKK2JlIHVzZWQgd2l0aCBvbGRlciBJRExFIHJlbGVhc2VzIGlmIGl0IGlzIHNhdmVkIGFzIGEgY3VzdG9tCitrZXkgc2V0LCB3aXRoIGEgZGlmZmVyZW50IG5hbWUuCisnJycsCiB9CiAKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9EZWJ1Z2dlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdnZXIucHkKaW5kZXggZDVlMjE3ZC4uMTE0ZDBkMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRGVidWdnZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdnZXIucHkKQEAgLTEsOSArMSwxMiBAQAotaW1wb3J0IG9zCiBpbXBvcnQgYmRiCitpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIuV2luZG93TGlzdCBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKLWZyb20gaWRsZWxpYi5TY3JvbGxlZExpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5zY3JvbGxlZGxpc3QgaW1wb3J0IFNjcm9sbGVkTGlzdAorZnJvbSBpZGxlbGliLndpbmRvd3MgaW1wb3J0IExpc3RlZFRvcGxldmVsCiAKIAogY2xhc3MgSWRiKGJkYi5CZGIpOgpAQCAtMzQsOCArMzcsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmV2X2ZyYW1lID0gZnJhbWUuZl9iYWNrCi0gICAgICAgICAgICBpZiBwcmV2X2ZyYW1lLmZfY29kZS5jb19maWxlbmFtZS5jb3VudCgnRGVidWdnZXIucHknKToKLSAgICAgICAgICAgICAgICAjICh0aGF0IHRlc3Qgd2lsbCBjYXRjaCBib3RoIERlYnVnZ2VyLnB5IGFuZCBSZW1vdGVEZWJ1Z2dlci5weSkKKyAgICAgICAgICAgIHByZXZfbmFtZSA9IHByZXZfZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiAnaWRsZWxpYicgaW4gcHJldl9uYW1lIGFuZCAnZGVidWdnZXInIGluIHByZXZfbmFtZToKKyAgICAgICAgICAgICAgICAjIGNhdGNoIGJvdGggaWRsZWxpYi9kZWJ1Z2dlci5weSBhbmQgaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CisgICAgICAgICAgICAgICAgIyBvbiBib3RoIHBvc2l4IGFuZCB3aW5kb3dzCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbl9ycGNfY29kZShwcmV2X2ZyYW1lKQogCkBAIC0zNzAsNyArMzc1LDcgQEAKIGNsYXNzIFN0YWNrVmlld2VyKFNjcm9sbGVkTGlzdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCBmbGlzdCwgZ3VpKToKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgICMgQXQgbGVhc3Qgb24gd2l0aCB0aGUgc3RvY2sgQXF1YVRrIHZlcnNpb24gb24gT1NYIDEwLjQgeW91J2xsCiAgICAgICAgICAgICAjIGdldCBhIHNoYWtpbmcgR1VJIHRoYXQgZXZlbnR1YWxseSBraWxscyBJRExFIGlmIHRoZSB3aWR0aAogICAgICAgICAgICAgIyBhcmd1bWVudCBpcyBzcGVjaWZpZWQuCkBAIC01MDIsNyArNTA3LDcgQEAKICAgICAgICAgICAgICMKICAgICAgICAgICAgICMgVGhlcmUgaXMgYWxzbyBhbiBvYnNjdXJlIGJ1ZyBpbiBzb3J0ZWQoZGljdCkgd2hlcmUgdGhlCiAgICAgICAgICAgICAjIGludGVycHJldGVyIGdldHMgaW50byBhIGxvb3AgcmVxdWVzdGluZyBub24tZXhpc3RpbmcgZGljdFswXSwKLSAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIFJlbW90ZURlYnVnZ2VyLkRpY3RQcm94eS4KKyAgICAgICAgICAgICMgZGljdFsxXSwgZGljdFsyXSwgZXRjIGZyb20gdGhlIGRlYnVnZ2VyX3IuRGljdFByb3h5LgogICAgICAgICAgICAgIyMjCiAgICAgICAgICAgICBrZXlzX2xpc3QgPSBkaWN0LmtleXMoKQogICAgICAgICAgICAgbmFtZXMgPSBzb3J0ZWQoa2V5c19saXN0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z2dlcl9yLnB5CmluZGV4IGJlMjI2MmYuLmJjOTcxMjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlbW90ZURlYnVnZ2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKQEAgLTIxLDcgKzIxLDcgQEAKICIiIgogCiBpbXBvcnQgdHlwZXMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKIAogZGVidWdnaW5nID0gMAogCkBAIC0xODcsNyArMTg3LDcgQEAKIAogICAgICIiIgogICAgIGd1aV9wcm94eSA9IEdVSVByb3h5KHJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKLSAgICBpZGIgPSBEZWJ1Z2dlci5JZGIoZ3VpX3Byb3h5KQorICAgIGlkYiA9IGRlYnVnZ2VyLklkYihndWlfcHJveHkpCiAgICAgaWRiX2FkYXAgPSBJZGJBZGFwdGVyKGlkYikKICAgICBycGNoYW5kbGVyLnJlZ2lzdGVyKGlkYl9hZGFwX29pZCwgaWRiX2FkYXApCiAgICAgcmV0dXJuIGlkYl9hZGFwX29pZApAQCAtMzYyLDcgKzM2Miw3IEBACiAgICAgaWRiX2FkYXBfb2lkID0gcnBjY2x0LnJlbW90ZWNhbGwoImV4ZWMiLCAic3RhcnRfdGhlX2RlYnVnZ2VyIixcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChndWlfYWRhcF9vaWQsKSwge30pCiAgICAgaWRiX3Byb3h5ID0gSWRiUHJveHkocnBjY2x0LCBweXNoZWxsLCBpZGJfYWRhcF9vaWQpCi0gICAgZ3VpID0gRGVidWdnZXIuRGVidWdnZXIocHlzaGVsbCwgaWRiX3Byb3h5KQorICAgIGd1aSA9IGRlYnVnZ2VyLkRlYnVnZ2VyKHB5c2hlbGwsIGlkYl9wcm94eSkKICAgICBndWlfYWRhcCA9IEdVSUFkYXB0ZXIocnBjY2x0LCBndWkpCiAgICAgcnBjY2x0LnJlZ2lzdGVyKGd1aV9hZGFwX29pZCwgZ3VpX2FkYXApCiAgICAgcmV0dXJuIGd1aQpAQCAtMzczLDcgKzM3Myw3IEBACiAgICAgUmVxdWVzdCB0aGF0IHRoZSBSUENTZXJ2ZXIgc2h1dCBkb3duIHRoZSBzdWJwcm9jZXNzIGRlYnVnZ2VyIGFuZCBsaW5rLgogICAgIFVucmVnaXN0ZXIgdGhlIEdVSUFkYXB0ZXIsIHdoaWNoIHdpbGwgY2F1c2UgYSBHQyBvbiB0aGUgSWRsZSBwcm9jZXNzCiAgICAgZGVidWdnZXIgYW5kIFJQQyBsaW5rIG9iamVjdHMuICAoVGhlIHNlY29uZCByZWZlcmVuY2UgdG8gdGhlIGRlYnVnZ2VyIEdVSQotICAgIGlzIGRlbGV0ZWQgaW4gUHlTaGVsbC5jbG9zZV9yZW1vdGVfZGVidWdnZXIoKS4pCisgICAgaXMgZGVsZXRlZCBpbiBweXNoZWxsLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcigpLikKIAogICAgICIiIgogICAgIGNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIocnBjY2x0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnb2JqLnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnb2JqLnB5CmluZGV4IDdiNTdhYTQuLmI3MGIxM2MgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL09iamVjdEJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdvYmoucHkKQEAgLTgsMTMgKzgsMTAgQEAKIAogIyBYWFggVE8gRE86CiAjIC0gZm9yIGNsYXNzZXMvbW9kdWxlcywgYWRkICJvcGVuIHNvdXJjZSIgdG8gb2JqZWN0IGJyb3dzZXIKLQotaW1wb3J0IHJlCi0KLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlSXRlbSwgVHJlZU5vZGUsIFNjcm9sbGVkQ2FudmFzCi0KIGZyb20gcmVwcmxpYiBpbXBvcnQgUmVwcgogCitmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0sIFRyZWVOb2RlLCBTY3JvbGxlZENhbnZhcworCiBteXJlcHIgPSBSZXByKCkKIG15cmVwci5tYXhzdHJpbmcgPSAxMDAKIG15cmVwci5tYXhvdGhlciA9IDEwMApAQCAtMTIyLDIxICsxMTksMjAgQEAKICAgICByZXR1cm4gYyhsYWJlbHRleHQsIG9iamVjdCwgc2V0ZnVuY3Rpb24pCiAKIAotZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOgorZGVmIF9vYmplY3RfYnJvd3NlcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgaW1wb3J0IHN5cwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgT2JqZWN0QnJvd3NlciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHJvb3QuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQotICAgIHJvb3QuZm9jdXNfc2V0KCkKLSAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBkZWJ1ZyBvYmplY3QgYnJvd3NlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgMTAwLCB5ICsgMTc1KSkKKyAgICB0b3AuY29uZmlndXJlKGJkPTAsIGJnPSJ5ZWxsb3ciKQorICAgIHRvcC5mb2N1c19zZXQoKQorICAgIHNjID0gU2Nyb2xsZWRDYW52YXModG9wLCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCiAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIpCiAgICAgaXRlbSA9IG1ha2Vfb2JqZWN0dHJlZWl0ZW0oInN5cyIsIHN5cykKICAgICBub2RlID0gVHJlZU5vZGUoc2MuY2FudmFzLCBOb25lLCBpdGVtKQogICAgIG5vZGUudXBkYXRlKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JlbW90ZU9iamVjdEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZW1vdGVPYmplY3RCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z29ial9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9EZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9kZWxlZ2F0b3IucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0RlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVsZWdhdG9yLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5IGIvTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2R5bm9wdGlvbi5weQppbmRleCA1MTViNGJhLi45YzZmZmE0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9keW5PcHRpb25NZW51V2lkZ2V0LnB5CisrKyBiL0xpYi9pZGxlbGliL2R5bm9wdGlvbi5weQpAQCAtMyw2ICszLDcgQEAKIGFuZCBzZXR0aW5nIG9mIGhpZ2hsaWdodHRoaWNrbmVzcwogIiIiCiBpbXBvcnQgY29weQorCiBmcm9tIHRraW50ZXIgaW1wb3J0IE9wdGlvbk1lbnUsIF9zZXRpdCwgU3RyaW5nVmFyLCBCdXR0b24KIAogY2xhc3MgRHluT3B0aW9uTWVudShPcHRpb25NZW51KToKQEAgLTM0LDEyICszNSwxMiBAQAogICAgICAgICAgICAgc2VsZi52YXJpYWJsZS5zZXQodmFsdWUpCiAKIGRlZiBfZHluX29wdGlvbl9tZW51KHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCAjICsgU3RyaW5nVmFyLCBCdXR0b24KIAotICAgIHRvcCA9IFRvcGxldmVsKCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdG9wLnRpdGxlKCJUZXRzIGR5bmFtaWMgb3B0aW9uIG1lbnUiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgdG9wLmZvY3VzX3NldCgpCiAKICAgICB2YXIgPSBTdHJpbmdWYXIodG9wKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5IGIvTGliL2lkbGVsaWIvZWRpdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggODklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZWRpdG9yLnB5CmluZGV4IDk5NDRkYTMuLmFlNDc1Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQorKysgYi9MaWIvaWRsZWxpYi9lZGl0b3IucHkKQEAgLTYsMjggKzYsMzQgQEAKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpbXBvcnQgdG9rZW5pemUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB3ZWJicm93c2VyCiAKLWZyb20gaWRsZWxpYi5NdWx0aUNhbGwgaW1wb3J0IE11bHRpQ2FsbENyZWF0b3IKLWZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgR3JlcERpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBSZXBsYWNlRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5UGFyc2UKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgotZnJvbSBpZGxlbGliIGltcG9ydCBhYm91dERpYWxvZywgdGV4dFZpZXcsIGNvbmZpZ0RpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgoraW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCitpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdkaWFsb2cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZ3JlcAogZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIubXVsdGljYWxsIGltcG9ydCBNdWx0aUNhbGxDcmVhdG9yCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5cGFyc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcXVlcnkKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcmVwbGFjZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2gKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgd2luZG93cwogCiAjIFRoZSBkZWZhdWx0IHRhYiBzZXR0aW5nIGZvciBhIFRleHQgd2lkZ2V0LCBpbiBhdmVyYWdlLXdpZHRoIGNoYXJhY3RlcnMuCiBUS19UQUJXSURUSF9ERUZBVUxUID0gOAotCiBfcHlfdmVyc2lvbiA9ICcgKCVzKScgJSBwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpCiAKKwogZGVmIF9zcGhpbnhfdmVyc2lvbigpOgogICAgICJGb3JtYXQgc3lzLnZlcnNpb25faW5mbyB0byBwcm9kdWNlIHRoZSBTcGhpbnggdmVyc2lvbiBzdHJpbmcgdXNlZCB0byBpbnN0YWxsIHRoZSBjaG0gZG9jcyIKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwpAQCAtNDAsNjMgKzQ2LDE2IEBACiAgICAgcmV0dXJuIHJlbGVhc2UKIAogCi1jbGFzcyBIZWxwRGlhbG9nKG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gTm9uZSAgICAgICMgcGFyZW50IG9mIGhlbHAgd2luZG93Ci0gICAgICAgIHNlbGYuZGxnID0gTm9uZSAgICAgICAgICMgdGhlIGhlbHAgd2luZG93IGl0ZXNlbGYKLQotICAgIGRlZiBkaXNwbGF5KHNlbGYsIHBhcmVudCwgbmVhcj1Ob25lKToKLSAgICAgICAgIiIiIERpc3BsYXkgdGhlIGhlbHAgZGlhbG9nLgotCi0gICAgICAgICAgICBwYXJlbnQgLSBwYXJlbnQgd2lkZ2V0IGZvciB0aGUgaGVscCB3aW5kb3cKLQotICAgICAgICAgICAgbmVhciAtIGEgVG9wbGV2ZWwgd2lkZ2V0IChlLmcuIEVkaXRvcldpbmRvdyBvciBQeVNoZWxsKQotICAgICAgICAgICAgICAgICAgIHRvIHVzZSBhcyBhIHJlZmVyZW5jZSBmb3IgcGxhY2luZyB0aGUgaGVscCB3aW5kb3cKLSAgICAgICAgIiIiCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncyBhcyB3Ci0gICAgICAgIHcud2FybigiRWRpdG9yV2luZG93LkhlbHBEaWFsb2cgaXMgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS5cbiIKLSAgICAgICAgICAgICAgICJJdCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLlxuIgotICAgICAgICAgICAgICAgIkl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHByaXZhdGUgaGVscC5IZWxwV2luZG93XG4iLAotICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIGlmIHNlbGYuZGxnIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNob3dfZGlhbG9nKHBhcmVudCkKLSAgICAgICAgaWYgbmVhcjoKLSAgICAgICAgICAgIHNlbGYubmVhcndpbmRvdyhuZWFyKQotCi0gICAgZGVmIHNob3dfZGlhbG9nKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIGZuPW9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksJ2hlbHAudHh0JykKLSAgICAgICAgc2VsZi5kbGcgPSBkbGcgPSB0ZXh0Vmlldy52aWV3X2ZpbGUocGFyZW50LCdIZWxwJyxmbiwgbW9kYWw9RmFsc2UpCi0gICAgICAgIGRsZy5iaW5kKCc8RGVzdHJveT4nLCBzZWxmLmRlc3Ryb3ksICcrJykKLQotICAgIGRlZiBuZWFyd2luZG93KHNlbGYsIG5lYXIpOgotICAgICAgICAjIFBsYWNlIHRoZSBoZWxwIGRpYWxvZyBuZWFyIHRoZSB3aW5kb3cgc3BlY2lmaWVkIGJ5IHBhcmVudC4KLSAgICAgICAgIyBOb3RlIC0gdGhpcyBtYXkgbm90IHJlcG9zaXRpb24gdGhlIHdpbmRvdyBpbiBNZXRhY2l0eQotICAgICAgICAjICBpZiAiL2FwcHMvbWV0YWNpdHkvZ2VuZXJhbC9kaXNhYmxlX3dvcmthcm91bmRzIiBpcyBlbmFibGVkCi0gICAgICAgIGRsZyA9IHNlbGYuZGxnCi0gICAgICAgIGdlb20gPSAobmVhci53aW5mb19yb290eCgpICsgMTAsIG5lYXIud2luZm9fcm9vdHkoKSArIDEwKQotICAgICAgICBkbGcud2l0aGRyYXcoKQotICAgICAgICBkbGcuZ2VvbWV0cnkoIj0rJWQrJWQiICUgZ2VvbSkKLSAgICAgICAgZGxnLmRlaWNvbmlmeSgpCi0gICAgICAgIGRsZy5saWZ0KCkKLQotICAgIGRlZiBkZXN0cm95KHNlbGYsIGV2PU5vbmUpOgotICAgICAgICBzZWxmLmRsZyA9IE5vbmUKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lCi0KLWhlbHBEaWFsb2cgPSBIZWxwRGlhbG9nKCkgICMgc2luZ2xldG9uIGluc3RhbmNlLCBubyBsb25nZXIgdXNlZAotCi0KIGNsYXNzIEVkaXRvcldpbmRvdyhvYmplY3QpOgotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgZnJvbSBpZGxlbGliLkNvbG9yRGVsZWdhdG9yIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCi0gICAgZnJvbSBpZGxlbGliLlVuZG9EZWxlZ2F0b3IgaW1wb3J0IFVuZG9EZWxlZ2F0b3IKLSAgICBmcm9tIGlkbGVsaWIuSU9CaW5kaW5nIGltcG9ydCBJT0JpbmRpbmcsIGZpbGVzeXN0ZW1lbmNvZGluZywgZW5jb2RpbmcKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IEJpbmRpbmdzCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKKyAgICBmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCisgICAgZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKKyAgICBmcm9tIGlkbGVsaWIuaW9tZW51IGltcG9ydCBJT0JpbmRpbmcsIGVuY29kaW5nCisgICAgZnJvbSBpZGxlbGliIGltcG9ydCBtYWlubWVudQogICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKLSAgICBmcm9tIGlkbGVsaWIuTXVsdGlTdGF0dXNCYXIgaW1wb3J0IE11bHRpU3RhdHVzQmFyCisgICAgZnJvbSBpZGxlbGliLnN0YXR1c2JhciBpbXBvcnQgTXVsdGlTdGF0dXNCYXIKIAorICAgIGZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyBmb3IgZmlsZSBuYW1lcwogICAgIGhlbHBfdXJsID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIGZpbGVuYW1lPU5vbmUsIGtleT1Ob25lLCByb290PU5vbmUpOgpAQCAtMTM2LDExICs5NSwxMSBAQAogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBzeXMucHMxID0gJz4+PiAnCiAgICAgICAgIHNlbGYubWVudWJhciA9IE1lbnUocm9vdCkKLSAgICAgICAgc2VsZi50b3AgPSB0b3AgPSBXaW5kb3dMaXN0Lkxpc3RlZFRvcGxldmVsKHJvb3QsIG1lbnU9c2VsZi5tZW51YmFyKQorICAgICAgICBzZWxmLnRvcCA9IHRvcCA9IHdpbmRvd3MuTGlzdGVkVG9wbGV2ZWwocm9vdCwgbWVudT1zZWxmLm1lbnViYXIpCiAgICAgICAgIGlmIGZsaXN0OgogICAgICAgICAgICAgc2VsZi50a2ludGVyX3ZhcnMgPSBmbGlzdC52YXJzCiAgICAgICAgICAgICAjc2VsZi50b3AuaW5zdGFuY2VfZGljdCBtYWtlcyBmbGlzdC5pbnZlcnNlZGljdCBhdmFpbGFibGUgdG8KLSAgICAgICAgICAgICNjb25maWdEaWFsb2cucHkgc28gaXQgY2FuIGFjY2VzcyBhbGwgRWRpdG9yV2luZG93IGluc3RhbmNlcworICAgICAgICAgICAgI2NvbmZpZ2RpYWxvZy5weSBzbyBpdCBjYW4gYWNjZXNzIGFsbCBFZGl0b3JXaW5kb3cgaW5zdGFuY2VzCiAgICAgICAgICAgICBzZWxmLnRvcC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGtpbnRlcl92YXJzID0ge30gICMga2V5czogVGtpbnRlciBldmVudCBuYW1lcwpAQCAtMTU4LDEzICsxMTcsMTAgQEAKICAgICAgICAgICAgICAgICAnd3JhcCc6ICdub25lJywKICAgICAgICAgICAgICAgICAnaGlnaGxpZ2h0dGhpY2tuZXNzJzogMCwKICAgICAgICAgICAgICAgICAnd2lkdGgnOiBzZWxmLndpZHRoLAotICAgICAgICAgICAgICAgICdoZWlnaHQnOiBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnRWRpdG9yV2luZG93JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWlnaHQnLCB0eXBlPSdpbnQnKX0KLSAgICAgICAgaWYgVGtWZXJzaW9uID49IDguNToKLSAgICAgICAgICAgICMgU3RhcnRpbmcgd2l0aCB0ayA4LjUgd2UgaGF2ZSB0byBzZXQgdGhlIG5ldyB0YWJzdHlsZSBvcHRpb24KLSAgICAgICAgICAgICMgdG8gJ3dvcmRwcm9jZXNzb3InIHRvIGFjaGlldmUgdGhlIHNhbWUgZGlzcGxheSBvZiB0YWJzIGFzIGluCi0gICAgICAgICAgICAjIG9sZGVyIHRrIHZlcnNpb25zLgotICAgICAgICAgICAgdGV4dF9vcHRpb25zWyd0YWJzdHlsZSddID0gJ3dvcmRwcm9jZXNzb3InCisgICAgICAgICAgICAgICAgJ3RhYnN0eWxlJzogJ3dvcmRwcm9jZXNzb3InLCAgIyBuZXcgaW4gOC41CisgICAgICAgICAgICAgICAgJ2hlaWdodCc6IGlkbGVDb25mLkdldE9wdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICdtYWluJywgJ0VkaXRvcldpbmRvdycsICdoZWlnaHQnLCB0eXBlPSdpbnQnKSwKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKFRleHQpKHRleHRfZnJhbWUsICoqdGV4dF9vcHRpb25zKQogICAgICAgICBzZWxmLnRvcC5mb2N1c2VkX3dpZGdldCA9IHNlbGYudGV4dAogCkBAIC0xNzMsNyArMTI5LDcgQEAKIAogICAgICAgICBzZWxmLnRvcC5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuY2xvc2UpCiAgICAgICAgIHNlbGYudG9wLmJpbmQoIjw8Y2xvc2Utd2luZG93Pj4iLCBzZWxmLmNsb3NlX2V2ZW50KQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBDb21tYW5kLVcgb24gZWRpdG9yd2luZG93cyBkb2Vzbid0IHdvcmsgd2l0aG91dCB0aGlzLgogICAgICAgICAgICAgdGV4dC5iaW5kKCc8PGNsb3NlLXdpbmRvdz4+Jywgc2VsZi5jbG9zZV9ldmVudCkKICAgICAgICAgICAgICMgU29tZSBPUyBYIHN5c3RlbXMgaGF2ZSBvbmx5IG9uZSBtb3VzZSBidXR0b24sIHNvIHVzZQpAQCAtMzA5LDcgKzI2NSw3IEBACiAgICAgICAgICAgICAgICAgbWVudS5hZGRfc2VwYXJhdG9yKCkKICAgICAgICAgICAgICAgICBlbmQgPSBlbmQgKyAxCiAgICAgICAgICAgICBzZWxmLndtZW51X2VuZCA9IGVuZAotICAgICAgICAgICAgV2luZG93TGlzdC5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgICAgIHdpbmRvd3MucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAKICAgICAgICAgIyBTb21lIGFic3RyYWN0aW9ucyBzbyBJRExFIGV4dGVuc2lvbnMgYXJlIGNyb3NzLUlERQogICAgICAgICBzZWxmLmFza3llc25vID0gdGtNZXNzYWdlQm94LmFza3llc25vCkBAIC00MTgsNyArMzc0LDcgQEAKICAgICAgICAgICAgIHVuZGVybGluZSwgbGFiZWwgPSBwcmVwc3RyKGxhYmVsKQogICAgICAgICAgICAgbWVudWRpY3RbbmFtZV0gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPW5hbWUsIHRlYXJvZmY9MCkKICAgICAgICAgICAgIG1iYXIuYWRkX2Nhc2NhZGUobGFiZWw9bGFiZWwsIG1lbnU9bWVudSwgdW5kZXJsaW5lPXVuZGVybGluZSkKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0NhcmJvblRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NhcmJvblRrKCk6CiAgICAgICAgICAgICAjIEluc2VydCB0aGUgYXBwbGljYXRpb24gbWVudQogICAgICAgICAgICAgbWVudWRpY3RbJ2FwcGxpY2F0aW9uJ10gPSBtZW51ID0gTWVudShtYmFyLCBuYW1lPSdhcHBsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJvZmY9MCkKQEAgLTQzOSw3ICszOTUsNyBAQAogICAgICAgICAgICAgZW5kID0gLTEKICAgICAgICAgaWYgZW5kID4gc2VsZi53bWVudV9lbmQ6CiAgICAgICAgICAgICBtZW51LmRlbGV0ZShzZWxmLndtZW51X2VuZCsxLCBlbmQpCi0gICAgICAgIFdpbmRvd0xpc3QuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQorICAgICAgICB3aW5kb3dzLmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKIAogICAgIHJtZW51ID0gTm9uZQogCkBAIC01MDcsMTcgKzQ2MywxNyBAQAogCiAgICAgZGVmIGFib3V0X2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdBYm91dCBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuYWJvdXRfZGlhbG9nLgotICAgICAgICBhYm91dERpYWxvZy5BYm91dERpYWxvZyhzZWxmLnRvcCwnQWJvdXQgSURMRScpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5hYm91dF9kaWFsb2cuCisgICAgICAgIGhlbHBfYWJvdXQuQWJvdXREaWFsb2coc2VsZi50b3AsJ0Fib3V0IElETEUnKQogCiAgICAgZGVmIGNvbmZpZ19kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgT3B0aW9ucyAnQ29uZmlndXJlIElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgotICAgICAgICBjb25maWdEaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5jb25maWdfZGlhbG9nLgorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHNlbGYudG9wLCdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUuaGVscF9kaWFsb2cuCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBtYWNvc3gub3ZlcnJpZGVSb290TWVudS5oZWxwX2RpYWxvZy4KICAgICAgICAgaWYgc2VsZi5yb290OgogICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5yb290CiAgICAgICAgIGVsc2U6CkBAIC01OTAsMjMgKzU0NiwyMyBAQAogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZChzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX2FnYWluX2V2ZW50KHNlbGYsIGV2ZW50KToKLSAgICAgICAgU2VhcmNoRGlhbG9nLmZpbmRfYWdhaW4oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9hZ2FpbihzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9zZWxlY3Rpb25fZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQorICAgICAgICBzZWFyY2guZmluZF9zZWxlY3Rpb24oc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfaW5fZmlsZXNfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBHcmVwRGlhbG9nLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQorICAgICAgICBncmVwLmdyZXAoc2VsZi50ZXh0LCBzZWxmLmlvLCBzZWxmLmZsaXN0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIHJlcGxhY2VfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBSZXBsYWNlRGlhbG9nLnJlcGxhY2Uoc2VsZi50ZXh0KQorICAgICAgICByZXBsYWNlLnJlcGxhY2Uoc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGdvdG9fbGluZV9ldmVudChzZWxmLCBldmVudCk6CkBAIC02MjIsNDYgKzU3OCwyNyBAQAogICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKIAogICAgIGRlZiBvcGVuX21vZHVsZShzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgIyBYWFggU2hvdWxkbid0IHRoaXMgYmUgaW4gSU9CaW5kaW5nPworICAgICAgICAiIiJHZXQgbW9kdWxlIG5hbWUgZnJvbSB1c2VyIGFuZCBvcGVuIGl0LgorCisgICAgICAgIFJldHVybiBtb2R1bGUgcGF0aCBvciBOb25lIGZvciBjYWxscyBieSBvcGVuX2NsYXNzX2Jyb3dzZXIKKyAgICAgICAgd2hlbiBsYXR0ZXIgaXMgbm90IGludm9rZWQgaW4gbmFtZWQgZWRpdG9yIHdpbmRvdy4KKyAgICAgICAgIiIiCisgICAgICAgICMgWFhYIFRoaXMsIG9wZW5fY2xhc3NfYnJvd3NlciwgYW5kIG9wZW5fcGF0aF9icm93c2VyCisgICAgICAgICMgd291bGQgZml0IGJldHRlciBpbiBpb21lbnUuSU9CaW5kaW5nLgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBuYW1lID0gc2VsZi50ZXh0LmdldCgic2VsLmZpcnN0IiwgInNlbC5sYXN0IikKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLnRleHQuZ2V0KCJzZWwuZmlyc3QiLCAic2VsLmxhc3QiKS5zdHJpcCgpCiAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKLSAgICAgICAgICAgIG5hbWUgPSAiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3RyaXAoKQotICAgICAgICBuYW1lID0gdGtTaW1wbGVEaWFsb2cuYXNrc3RyaW5nKCJNb2R1bGUiLAotICAgICAgICAgICAgICAgICAiRW50ZXIgdGhlIG5hbWUgb2YgYSBQeXRob24gbW9kdWxlXG4iCi0gICAgICAgICAgICAgICAgICJ0byBzZWFyY2ggb24gc3lzLnBhdGggYW5kIG9wZW46IiwKLSAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCwgaW5pdGlhbHZhbHVlPW5hbWUpCi0gICAgICAgIGlmIG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCi0gICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW1wb3J0RXJyb3IpIGFzIG1zZzoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsIHN0cihtc2cpLCBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsICJtb2R1bGUgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzcGVjLmxvYWRlciwgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIpOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgIm5vdCBhIHNvdXJjZS1iYXNlZCBtb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGVfcGF0aCA9IHNwZWMubG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9hZGVyIGRvZXMgbm90IHN1cHBvcnQgZ2V0X2ZpbGVuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxmLmZsaXN0OgotICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuaW8ubG9hZGZpbGUoZmlsZV9wYXRoKQorICAgICAgICAgICAgbmFtZSA9ICcnCisgICAgICAgIGZpbGVfcGF0aCA9IHF1ZXJ5Lk1vZHVsZU5hbWUoCisgICAgICAgICAgICAgICAgc2VsZi50ZXh0LCAiT3BlbiBNb2R1bGUiLAorICAgICAgICAgICAgICAgICJFbnRlciB0aGUgbmFtZSBvZiBhIFB5dGhvbiBtb2R1bGVcbiIKKyAgICAgICAgICAgICAgICAidG8gc2VhcmNoIG9uIHN5cy5wYXRoIGFuZCBvcGVuOiIsCisgICAgICAgICAgICAgICAgbmFtZSkucmVzdWx0CisgICAgICAgIGlmIGZpbGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHNlbGYuZmxpc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5vcGVuKGZpbGVfcGF0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5pby5sb2FkZmlsZShmaWxlX3BhdGgpCiAgICAgICAgIHJldHVybiBmaWxlX3BhdGgKIAogICAgIGRlZiBvcGVuX2NsYXNzX2Jyb3dzZXIoc2VsZiwgZXZlbnQ9Tm9uZSk6CkBAIC02NzMsMTIgKzYxMCwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICBoZWFkLCB0YWlsID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dCh0YWlsKQotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IENsYXNzQnJvd3NlcgotICAgICAgICBDbGFzc0Jyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBicm93c2VyCisgICAgICAgIGJyb3dzZXIuQ2xhc3NCcm93c2VyKHNlbGYuZmxpc3QsIGJhc2UsIFtoZWFkXSkKIAogICAgIGRlZiBvcGVuX3BhdGhfYnJvd3NlcihzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBQYXRoQnJvd3NlcgotICAgICAgICBQYXRoQnJvd3Nlci5QYXRoQnJvd3NlcihzZWxmLmZsaXN0KQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHBhdGhicm93c2VyCisgICAgICAgIHBhdGhicm93c2VyLlBhdGhCcm93c2VyKHNlbGYuZmxpc3QpCiAKICAgICBkZWYgb3Blbl90dXJ0bGVfZGVtbyhzZWxmLCBldmVudCA9IE5vbmUpOgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwpAQCAtNzM5LDcgKzY3Niw3IEBACiAKICAgICBkZWYgUmVzZXRDb2xvcml6ZXIoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIGNvbG9yIHRoZW1lIgotICAgICAgICAjIENhbGxlZCBmcm9tIHNlbGYuZmlsZW5hbWVfY2hhbmdlX2hvb2sgYW5kIGZyb20gY29uZmlnRGlhbG9nLnB5CisgICAgICAgICMgQ2FsbGVkIGZyb20gc2VsZi5maWxlbmFtZV9jaGFuZ2VfaG9vayBhbmQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgc2VsZi5fcm1jb2xvcml6ZXIoKQogICAgICAgICBzZWxmLl9hZGRjb2xvcml6ZXIoKQogICAgICAgICBFZGl0b3JXaW5kb3cuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKQEAgLTc1OSwxNCArNjk2LDE0IEBACiAKICAgICBkZWYgUmVzZXRGb250KHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSB0ZXh0IHdpZGdldHMnIGZvbnQgaWYgaXQgaXMgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKIAogICAgICAgICBzZWxmLnRleHRbJ2ZvbnQnXSA9IGlkbGVDb25mLkdldEZvbnQoc2VsZi5yb290LCAnbWFpbicsJ0VkaXRvcldpbmRvdycpCiAKICAgICBkZWYgUmVtb3ZlS2V5YmluZGluZ3Moc2VsZik6CiAgICAgICAgICJSZW1vdmUgdGhlIGtleWJpbmRpbmdzIGJlZm9yZSB0aGV5IGFyZSBjaGFuZ2VkLiIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi50ZXh0LmV2ZW50X2RlbGV0ZShldmVudCwgKmtleWxpc3QpCiAgICAgICAgIGZvciBleHRlbnNpb25OYW1lIGluIHNlbGYuZ2V0X3N0YW5kYXJkX2V4dGVuc2lvbl9uYW1lcygpOgpAQCAtNzc3LDggKzcxNCw4IEBACiAKICAgICBkZWYgQXBwbHlLZXliaW5kaW5ncyhzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUga2V5YmluZGluZ3MgYWZ0ZXIgdGhleSBhcmUgY2hhbmdlZCIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKLSAgICAgICAgc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCisgICAgICAgICMgQ2FsbGVkIGZyb20gY29uZmlnZGlhbG9nLnB5CisgICAgICAgIHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzID0ga2V5ZGVmcyA9IGlkbGVDb25mLkdldEN1cnJlbnRLZXlTZXQoKQogICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKCkKICAgICAgICAgZm9yIGV4dGVuc2lvbk5hbWUgaW4gc2VsZi5nZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKCk6CiAgICAgICAgICAgICB4a2V5ZGVmcyA9IGlkbGVDb25mLkdldEV4dGVuc2lvbkJpbmRpbmdzKGV4dGVuc2lvbk5hbWUpCkBAIC03ODYsNyArNzIzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5X2JpbmRpbmdzKHhrZXlkZWZzKQogICAgICAgICAjdXBkYXRlIG1lbnUgYWNjZWxlcmF0b3JzCiAgICAgICAgIG1lbnVFdmVudERpY3QgPSB7fQotICAgICAgICBmb3IgbWVudSBpbiBzZWxmLkJpbmRpbmdzLm1lbnVkZWZzOgorICAgICAgICBmb3IgbWVudSBpbiBzZWxmLm1haW5tZW51Lm1lbnVkZWZzOgogICAgICAgICAgICAgbWVudUV2ZW50RGljdFttZW51WzBdXSA9IHt9CiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBtZW51WzFdOgogICAgICAgICAgICAgICAgIGlmIGl0ZW06CkBAIC04MTMsNyArNzUwLDcgQEAKIAogICAgIGRlZiBzZXRfbm90YWJzX2luZGVudHdpZHRoKHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSBpbmRlbnR3aWR0aCBpZiBjaGFuZ2VkIGFuZCBub3QgdXNpbmcgdGFicyBpbiB0aGlzIHdpbmRvdyIKLSAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKICAgICAgICAgaWYgbm90IHNlbGYudXNldGFiczoKICAgICAgICAgICAgIHNlbGYuaW5kZW50d2lkdGggPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnSW5kZW50JywnbnVtLXNwYWNlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcpCkBAIC05OTMsNyArOTMwLDcgQEAKICAgICBkZWYgX2Nsb3NlKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmlvLmZpbGVuYW1lOgogICAgICAgICAgICAgc2VsZi51cGRhdGVfcmVjZW50X2ZpbGVzX2xpc3QobmV3X2ZpbGU9c2VsZi5pby5maWxlbmFtZSkKLSAgICAgICAgV2luZG93TGlzdC51bnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQorICAgICAgICB3aW5kb3dzLnVucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCiAgICAgICAgIHNlbGYudW5sb2FkX2V4dGVuc2lvbnMoKQogICAgICAgICBzZWxmLmlvLmNsb3NlKCkKICAgICAgICAgc2VsZi5pbyA9IE5vbmUKQEAgLTEwMzEsMTIgKzk2OCwyNSBAQAogICAgIGRlZiBnZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKHNlbGYpOgogICAgICAgICByZXR1cm4gaWRsZUNvbmYuR2V0RXh0ZW5zaW9ucyhlZGl0b3Jfb25seT1UcnVlKQogCisgICAgZXh0ZmlsZXMgPSB7ICAjIG1hcCBjb25maWctZXh0ZW5zaW9uIHNlY3Rpb24gbmFtZXMgdG8gbmV3IGZpbGUgbmFtZXMKKyAgICAgICAgJ0F1dG9Db21wbGV0ZSc6ICdhdXRvY29tcGxldGUnLAorICAgICAgICAnQXV0b0V4cGFuZCc6ICdhdXRvZXhwYW5kJywKKyAgICAgICAgJ0NhbGxUaXBzJzogJ2NhbGx0aXBzJywKKyAgICAgICAgJ0NvZGVDb250ZXh0JzogJ2NvZGVjb250ZXh0JywKKyAgICAgICAgJ0Zvcm1hdFBhcmFncmFwaCc6ICdwYXJhZ3JhcGgnLAorICAgICAgICAnUGFyZW5NYXRjaCc6ICdwYXJlbm1hdGNoJywKKyAgICAgICAgJ1JzdHJpcEV4dGVuc2lvbic6ICdyc3RyaXAnLAorICAgICAgICAnU2NyaXB0QmluZGluZyc6ICdydW5zY3JpcHQnLAorICAgICAgICAnWm9vbUhlaWdodCc6ICd6b29taGVpZ2h0JywKKyAgICAgICAgfQorCiAgICAgZGVmIGxvYWRfZXh0ZW5zaW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBmbmFtZSA9IHNlbGYuZXh0ZmlsZXMuZ2V0KG5hbWUsIG5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLicgKyBuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuJyArIGZuYW1lLCBwYWNrYWdlPV9fcGFja2FnZV9fKQogICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgVHlwZUVycm9yKToKLSAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKGZuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwcmludCgiXG5GYWlsZWQgdG8gaW1wb3J0IGV4dGVuc2lvbjogIiwgbmFtZSkKICAgICAgICAgICAgIHJhaXNlCkBAIC0xMDYwLDcgKzEwMTAsNyBAQAogCiAgICAgZGVmIGFwcGx5X2JpbmRpbmdzKHNlbGYsIGtleWRlZnM9Tm9uZSk6CiAgICAgICAgIGlmIGtleWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcworICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzCiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgdGV4dC5rZXlkZWZzID0ga2V5ZGVmcwogICAgICAgICBmb3IgZXZlbnQsIGtleWxpc3QgaW4ga2V5ZGVmcy5pdGVtcygpOgpAQCAtMTA3Myw5ICsxMDIzLDkgQEAKICAgICAgICAgTWVudXMgdGhhdCBhcmUgYWJzZW50IG9yIE5vbmUgaW4gc2VsZi5tZW51ZGljdCBhcmUgaWdub3JlZC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1lbnVkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBtZW51ZGVmcyA9IHNlbGYuQmluZGluZ3MubWVudWRlZnMKKyAgICAgICAgICAgIG1lbnVkZWZzID0gc2VsZi5tYWlubWVudS5tZW51ZGVmcwogICAgICAgICBpZiBrZXlkZWZzIGlzIE5vbmU6Ci0gICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5CaW5kaW5ncy5kZWZhdWx0X2tleWRlZnMKKyAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLm1haW5tZW51LmRlZmF1bHRfa2V5ZGVmcwogICAgICAgICBtZW51ZGljdCA9IHNlbGYubWVudWRpY3QKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICBmb3IgbW5hbWUsIGVudHJ5bGlzdCBpbiBtZW51ZGVmczoKQEAgLTEzMDIsNyArMTI1Miw3IEBACiAgICAgICAgICAgICAjIGFkanVzdCBpbmRlbnRhdGlvbiBmb3IgY29udGludWF0aW9ucyBhbmQgYmxvY2sKICAgICAgICAgICAgICMgb3Blbi9jbG9zZSBmaXJzdCBuZWVkIHRvIGZpbmQgdGhlIGxhc3Qgc3RtdAogICAgICAgICAgICAgbG5vID0gaW5kZXgybGluZSh0ZXh0LmluZGV4KCdpbnNlcnQnKSkKLSAgICAgICAgICAgIHkgPSBQeVBhcnNlLlBhcnNlcihzZWxmLmluZGVudHdpZHRoLCBzZWxmLnRhYndpZHRoKQorICAgICAgICAgICAgeSA9IHB5cGFyc2UuUGFyc2VyKHNlbGYuaW5kZW50d2lkdGgsIHNlbGYudGFid2lkdGgpCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb250ZXh0X3VzZV9wczE6CiAgICAgICAgICAgICAgICAgZm9yIGNvbnRleHQgaW4gc2VsZi5udW1fY29udGV4dF9saW5lczoKICAgICAgICAgICAgICAgICAgICAgc3RhcnRhdCA9IG1heChsbm8gLSBjb250ZXh0LCAxKQpAQCAtMTMyNiwyMiArMTI3NiwyMiBAQAogICAgICAgICAgICAgICAgIHkuc2V0X2xvKDApCiAKICAgICAgICAgICAgIGMgPSB5LmdldF9jb250aW51YXRpb25fdHlwZSgpCi0gICAgICAgICAgICBpZiBjICE9IFB5UGFyc2UuQ19OT05FOgorICAgICAgICAgICAgaWYgYyAhPSBweXBhcnNlLkNfTk9ORToKICAgICAgICAgICAgICAgICAjIFRoZSBjdXJyZW50IHN0bXQgaGFzbid0IGVuZGVkIHlldC4KLSAgICAgICAgICAgICAgICBpZiBjID09IFB5UGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKKyAgICAgICAgICAgICAgICBpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfRklSU1RfTElORToKICAgICAgICAgICAgICAgICAgICAgIyBhZnRlciB0aGUgZmlyc3QgbGluZSBvZiBhIHN0cmluZzsgZG8gbm90IGluZGVudCBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBQeVBhcnNlLkNfU1RSSU5HX05FWFRfTElORVM6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19TVFJJTkdfTkVYVF9MSU5FUzoKICAgICAgICAgICAgICAgICAgICAgIyBpbnNpZGUgYSBzdHJpbmcgd2hpY2ggc3RhcnRlZCBiZWZvcmUgdGhpcyBsaW5lOwogICAgICAgICAgICAgICAgICAgICAjIGp1c3QgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50CiAgICAgICAgICAgICAgICAgICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCBpbmRlbnQpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CUkFDS0VUOgorICAgICAgICAgICAgICAgIGVsaWYgYyA9PSBweXBhcnNlLkNfQlJBQ0tFVDoKICAgICAgICAgICAgICAgICAgICAgIyBsaW5lIHVwIHdpdGggdGhlIGZpcnN0IChpZiBhbnkpIGVsZW1lbnQgb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgICMgbGFzdCBvcGVuIGJyYWNrZXQgc3RydWN0dXJlOyBlbHNlIGluZGVudCBvbmUKICAgICAgICAgICAgICAgICAgICAgIyBsZXZlbCBiZXlvbmQgdGhlIGluZGVudCBvZiB0aGUgbGluZSB3aXRoIHRoZQogICAgICAgICAgICAgICAgICAgICAjIGxhc3Qgb3BlbiBicmFja2V0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVpbmRlbnRfdG8oeS5jb21wdXRlX2JyYWNrZXRfaW5kZW50KCkpCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19CQUNLU0xBU0g6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19CQUNLU0xBU0g6CiAgICAgICAgICAgICAgICAgICAgICMgaWYgbW9yZSB0aGFuIG9uZSBsaW5lIGluIHRoaXMgc3RtdCBhbHJlYWR5LCBqdXN0CiAgICAgICAgICAgICAgICAgICAgICMgbWltaWMgdGhlIGN1cnJlbnQgaW5kZW50OyBlbHNlIGlmIGluaXRpYWwgbGluZQogICAgICAgICAgICAgICAgICAgICAjIGhhcyBhIHN0YXJ0IG9uIGFuIGFzc2lnbm1lbnQgc3RtdCwgaW5kZW50IHRvCkBAIC0xNTY5LDkgKzE1MTksNiBAQAogICAgICAgICAgICAgYnJlYWsKICAgICByZXR1cm4gcmF3LCBlZmZlY3RpdmUKIAotaW1wb3J0IHRva2VuaXplCi1fdG9rZW5pemUgPSB0b2tlbml6ZQotZGVsIHRva2VuaXplCiAKIGNsYXNzIEluZGVudFNlYXJjaGVyKG9iamVjdCk6CiAKQEAgLTE1OTYsOCArMTU0Myw4IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRleHQuZ2V0KG1hcmssIG1hcmsgKyAiIGxpbmVlbmQrMWMiKQogCiAgICAgZGVmIHRva2VuZWF0ZXIoc2VsZiwgdHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUsCi0gICAgICAgICAgICAgICAgICAgSU5ERU5UPV90b2tlbml6ZS5JTkRFTlQsCi0gICAgICAgICAgICAgICAgICAgTkFNRT1fdG9rZW5pemUuTkFNRSwKKyAgICAgICAgICAgICAgICAgICBJTkRFTlQ9dG9rZW5pemUuSU5ERU5ULAorICAgICAgICAgICAgICAgICAgIE5BTUU9dG9rZW5pemUuTkFNRSwKICAgICAgICAgICAgICAgICAgICBPUEVORVJTPSgnY2xhc3MnLCAnZGVmJywgJ2ZvcicsICdpZicsICd0cnknLCAnd2hpbGUnKSk6CiAgICAgICAgIGlmIHNlbGYuZmluaXNoZWQ6CiAgICAgICAgICAgICBwYXNzCkBAIC0xNjA4LDE5ICsxNTU1LDE5IEBACiAgICAgICAgICAgICBzZWxmLmZpbmlzaGVkID0gMQogCiAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgc2F2ZV90YWJzaXplID0gX3Rva2VuaXplLnRhYnNpemUKLSAgICAgICAgX3Rva2VuaXplLnRhYnNpemUgPSBzZWxmLnRhYndpZHRoCisgICAgICAgIHNhdmVfdGFic2l6ZSA9IHRva2VuaXplLnRhYnNpemUKKyAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNlbGYudGFid2lkdGgKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRva2VucyA9IF90b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKKyAgICAgICAgICAgICAgICB0b2tlbnMgPSB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMoc2VsZi5yZWFkbGluZSkKICAgICAgICAgICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuZWF0ZXIoKnRva2VuKQotICAgICAgICAgICAgZXhjZXB0IChfdG9rZW5pemUuVG9rZW5FcnJvciwgU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhjZXB0ICh0b2tlbml6ZS5Ub2tlbkVycm9yLCBTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgIyBzaW5jZSB3ZSBjdXQgb2ZmIHRoZSB0b2tlbml6ZXIgZWFybHksIHdlIGNhbiB0cmlnZ2VyCiAgICAgICAgICAgICAgICAgIyBzcHVyaW91cyBlcnJvcnMKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBfdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQorICAgICAgICAgICAgdG9rZW5pemUudGFic2l6ZSA9IHNhdmVfdGFic2l6ZQogICAgICAgICByZXR1cm4gc2VsZi5ibGtvcGVubGluZSwgc2VsZi5pbmRlbnRlZGxpbmUKIAogIyMjIGVuZCBhdXRvaW5kZW50IGNvZGUgIyMjCkBAIC0xNjQ0LDcgKzE1OTEsNyBAQAogICAgIGtleWxpc3QgPSBrZXlkZWZzLmdldChldmVudG5hbWUpCiAgICAgIyBpc3N1ZTEwOTQwOiB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB0byBwcmV2ZW50IGhhbmcgd2l0aCBPUyBYIENvY29hIFRrIDguNQogICAgICMgaWYgbm90IGtleWxpc3Q6Ci0gICAgaWYgKG5vdCBrZXlsaXN0KSBvciAobWFjb3N4U3VwcG9ydC5pc0NvY29hVGsoKSBhbmQgZXZlbnRuYW1lIGluIHsKKyAgICBpZiAobm90IGtleWxpc3QpIG9yIChtYWNvc3guaXNDb2NvYVRrKCkgYW5kIGV2ZW50bmFtZSBpbiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8b3Blbi1tb2R1bGU+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8Z290by1saW5lPj4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8PGNoYW5nZS1pbmRlbnR3aWR0aD4+In0pOgpAQCAtMTY3OSwxMiArMTYyNiwxNSBAQAogICAgICAgICBmaWxlbmFtZSA9IHN5cy5hcmd2WzFdCiAgICAgZWxzZToKICAgICAgICAgZmlsZW5hbWUgPSBOb25lCi0gICAgbWFjb3N4U3VwcG9ydC5zZXR1cEFwcChyb290LCBOb25lKQorICAgIG1hY29zeC5zZXR1cEFwcChyb290LCBOb25lKQogICAgIGVkaXQgPSBFZGl0b3JXaW5kb3cocm9vdD1yb290LCBmaWxlbmFtZT1maWxlbmFtZSkKICAgICBlZGl0LnRleHQuYmluZCgiPDxjbG9zZS1hbGwtd2luZG93cz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKICAgICAjIERvZXMgbm90IHN0b3AgZXJyb3IsIG5laXRoZXIgZG9lcyBmb2xsb3dpbmcKICAgICAjIGVkaXQudGV4dC5iaW5kKCI8PGNsb3NlLXdpbmRvdz4+IiwgZWRpdC5jbG9zZV9ldmVudCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2VkaXRvcicsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9lZGl0b3Jfd2luZG93KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkgYi9MaWIvaWRsZWxpYi9maWxlbGlzdC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9GaWxlTGlzdC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKaW5kZXggYTk5ODlhOC4uZjQ2YWQ3YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRmlsZUxpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvZmlsZWxpc3QucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgb3MKKwogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC02LDcgKzcsNyBAQAogY2xhc3MgRmlsZUxpc3Q6CiAKICAgICAjIE4uQi4gdGhpcyBpbXBvcnQgb3ZlcnJpZGRlbiBpbiBQeVNoZWxsRmlsZUxpc3QuCi0gICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93CisgICAgZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCk6CiAgICAgICAgIHNlbGYucm9vdCA9IHJvb3QKQEAgLTExMSw3ICsxMTIsNyBAQAogCiAKIGRlZiBfdGVzdCgpOgotICAgIGZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IGZpeHdvcmRicmVha3MKKyAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBmaXh3b3JkYnJlYWtzCiAgICAgaW1wb3J0IHN5cwogICAgIHJvb3QgPSBUaygpCiAgICAgZml4d29yZGJyZWFrcyhyb290KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weSBiL0xpYi9pZGxlbGliL2dyZXAucHkKc2ltaWxhcml0eSBpbmRleCA4MiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvR3JlcERpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZ3JlcC5weQppbmRleCA3MjFiMjMxLi42NGJhMjhkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2dyZXAucHkKQEAgLTEsMTcgKzEsMTkgQEAKLWltcG9ydCBvcwogaW1wb3J0IGZubWF0Y2gKLWltcG9ydCByZSAgIyBmb3IgaHRlc3QKK2ltcG9ydCBvcwogaW1wb3J0IHN5cwotZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIENoZWNrYnV0dG9uICAjIGZvciBHcmVwRGlhbG9nCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0LCBCdXR0b24sIFNFTCwgRU5EICAjIGZvciBodGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCi0jIEltcG9ydGluZyBPdXRwdXRXaW5kb3cgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBCb29sZWFuVmFyCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBDaGVja2J1dHRvbgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKKworIyBJbXBvcnRpbmcgT3V0cHV0V2luZG93IGhlcmUgZmFpbHMgZHVlIHRvIGltcG9ydCBsb29wCiAjIEVkaXRvcldpbmRvdyAtPiBHcmVwRGlhbG9wIC0+IE91dHB1dFdpbmRvdyAtPiBFZGl0b3JXaW5kb3cKIAogZGVmIGdyZXAodGV4dCwgaW89Tm9uZSwgZmxpc3Q9Tm9uZSk6CiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX2dyZXBkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9ncmVwZGlhbG9nID0gR3JlcERpYWxvZyhyb290LCBlbmdpbmUsIGZsaXN0KQogICAgIGRpYWxvZyA9IGVuZ2luZS5fZ3JlcGRpYWxvZwpAQCAtNDcsMTMgKzQ5LDEwIEBACiAgICAgICAgIHNlbGYuZ2xvYmVudCA9IHNlbGYubWFrZV9lbnRyeSgiSW4gZmlsZXM6Iiwgc2VsZi5nbG9idmFyKVswXQogCiAgICAgZGVmIGNyZWF0ZV9vdGhlcl9idXR0b25zKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5tYWtlX2ZyYW1lKClbMF0KLQotICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgIHZhcmlhYmxlPXNlbGYucmVjdmFyLAorICAgICAgICBidG4gPSBDaGVja2J1dHRvbigKKyAgICAgICAgICAgICAgICBzZWxmLm1ha2VfZnJhbWUoKVswXSwgdmFyaWFibGU9c2VsZi5yZWN2YXIsCiAgICAgICAgICAgICAgICAgdGV4dD0iUmVjdXJzZSBkb3duIHN1YmRpcmVjdG9yaWVzIikKICAgICAgICAgYnRuLnBhY2soc2lkZT0idG9wIiwgZmlsbD0iYm90aCIpCi0gICAgICAgIGJ0bi5zZWxlY3QoKQogCiAgICAgZGVmIGNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIFNlYXJjaERpYWxvZ0Jhc2UuY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKQpAQCAtNjcsNyArNjYsNyBAQAogICAgICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgICAgIHNlbGYudG9wLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZyb20gaWRsZWxpYi5PdXRwdXRXaW5kb3cgaW1wb3J0IE91dHB1dFdpbmRvdyAgIyBsZWF2ZSBoZXJlIQorICAgICAgICBmcm9tIGlkbGVsaWIub3V0d2luIGltcG9ydCBPdXRwdXRXaW5kb3cgICMgbGVhdmUgaGVyZSEKICAgICAgICAgc2F2ZSA9IHN5cy5zdGRvdXQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IE91dHB1dFdpbmRvdyhzZWxmLmZsaXN0KQpAQCAtMTMxLDE0ICsxMzAsMTYgQEAKIAogCiBkZWYgX2dyZXBfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBTRUwsIEVORAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorICAgIGZyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IEdyZXBEaWFsb2ciKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKLSAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQotICAgIHRleHQgPSBUZXh0KHJvb3QsIGhlaWdodD01KQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKKyAgICB0ZXh0ID0gVGV4dCh0b3AsIGhlaWdodD01KQogICAgIHRleHQucGFjaygpCiAKICAgICBkZWYgc2hvd19ncmVwX2RpYWxvZygpOgpAQCAtMTQ2LDkgKzE0Nyw4IEBACiAgICAgICAgIGdyZXAodGV4dCwgZmxpc3Q9Zmxpc3QpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCiAKLSAgICBidXR0b24gPSBCdXR0b24ocm9vdCwgdGV4dD0iU2hvdyBHcmVwRGlhbG9nIiwgY29tbWFuZD1zaG93X2dyZXBfZGlhbG9nKQorICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlNob3cgR3JlcERpYWxvZyIsIGNvbW1hbmQ9c2hvd19ncmVwX2RpYWxvZykKICAgICBidXR0b24ucGFjaygpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnB5IGIvTGliL2lkbGVsaWIvaGVscC5weQppbmRleCBhNzAwOGU5Li43N2UwMWEzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9oZWxwLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHAucHkKQEAgLTQsNyArNCw3IEBACiAKIEhlbHAgPT4gQWJvdXQgSURMRTogZGlwbGF5IEFib3V0IElkbGUgZGlhbG9nCiAKLTx0byBiZSBtb3ZlZCBoZXJlIGZyb20gYWJvdXREaWFsb2cucHk+Cis8dG8gYmUgbW92ZWQgaGVyZSBmcm9tIGhlbHBfYWJvdXQucHk+CiAKIAogSGVscCA9PiBJRExFIEhlbHA6IERpc3BsYXkgaGVscC5odG1sIHdpdGggcHJvcGVyIGZvcm1hdHRpbmcuCkBAIC0yNSwxNSArMjUsMTQgQEAKIHNob3dfaWRsZWhlbHAgLSBDcmVhdGUgSGVscFdpbmRvdy4gIENhbGxlZCBpbiBFZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCiAiIiIKIGZyb20gaHRtbC5wYXJzZXIgaW1wb3J0IEhUTUxQYXJzZXIKLWZyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aCwgZGlybmFtZSwgaXNkaXIsIGlzZmlsZSwgam9pbgorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBpc2ZpbGUsIGpvaW4KIGZyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uCi1mcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIFNjcm9sbGJhciwgTWVudSwgTWVudWJ1dHRvbgotZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCiAKLXVzZV90dGsgPSBGYWxzZSAjIHVudGlsIGF2YWlsYWJsZSB0byBpbXBvcnQKLWlmIHVzZV90dGs6Ci0gICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgTWVudWJ1dHRvbgorZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIE1lbnUKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IE1lbnVidXR0b24sIFNjcm9sbGJhcgorZnJvbSB0a2ludGVyIGltcG9ydCBmb250IGFzIHRrZm9udAorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiAjIyBBYm91dCBJRExFICMjCiAKQEAgLTE5NywxNSArMTk2LDE4IEBACiAgICAgIkRpc3BsYXkgaHRtbCB0ZXh0LCBzY3JvbGxiYXIsIGFuZCB0b2MuIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGZpbGVuYW1lKToKICAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCisgICAgICAgICMga2VlcCByZWZlcmVuY2VzIHRvIHdpZGdldHMgZm9yIHRlc3QgYWNjZXNzLgorICAgICAgICBzZWxmLnRleHQgPSB0ZXh0ID0gSGVscFRleHQoc2VsZiwgZmlsZW5hbWUpCiAgICAgICAgIHNlbGZbJ2JhY2tncm91bmQnXSA9IHRleHRbJ2JhY2tncm91bmQnXQotICAgICAgICBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQorICAgICAgICBzZWxmLnRvYyA9IHRvYyA9IHNlbGYudG9jX21lbnUodGV4dCkKKyAgICAgICAgc2VsZi5zY3JvbGwgPSBzY3JvbGwgPSBTY3JvbGxiYXIoc2VsZiwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgICAgICB0ZXh0Wyd5c2Nyb2xsY29tbWFuZCddID0gc2Nyb2xsLnNldAorCiAgICAgICAgIHNlbGYucm93Y29uZmlndXJlKDAsIHdlaWdodD0xKQogICAgICAgICBzZWxmLmNvbHVtbmNvbmZpZ3VyZSgxLCB3ZWlnaHQ9MSkgICMgdGV4dAotICAgICAgICBzZWxmLnRvY19tZW51KHRleHQpLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J253JykKLSAgICAgICAgdGV4dC5ncmlkKGNvbHVtbj0xLCByb3c9MCwgc3RpY2t5PSduc2V3JykKLSAgICAgICAgc2Nyb2xsLmdyaWQoY29sdW1uPTIsIHJvdz0wLCBzdGlja3k9J25zJykKKyAgICAgICAgdG9jLmdyaWQocm93PTAsIGNvbHVtbj0wLCBzdGlja3k9J253JykKKyAgICAgICAgdGV4dC5ncmlkKHJvdz0wLCBjb2x1bW49MSwgc3RpY2t5PSduc2V3JykKKyAgICAgICAgc2Nyb2xsLmdyaWQocm93PTAsIGNvbHVtbj0yLCBzdGlja3k9J25zJykKIAogICAgIGRlZiB0b2NfbWVudShzZWxmLCB0ZXh0KToKICAgICAgICAgIkNyZWF0ZSB0YWJsZSBvZiBjb250ZW50cyBhcyBkcm9wLWRvd24gbWVudS4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9oZWxwLnR4dCBiL0xpYi9pZGxlbGliL2hlbHAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWZiZTBiLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2hlbHAudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMzcyICswLDAgQEAKLVRoaXMgZmlsZSwgaWRsZWxpYi9oZWxwLnR4dCBpcyBvdXQtb2YtZGF0ZSBhbmQgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZS4KLUl0IGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLCBwb3NzaWJseSBpbiAzLjYKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotW1NlZSB0aGUgZW5kIG9mIHRoaXMgZmlsZSBmb3IgKiogVElQUyAqKiBvbiB1c2luZyBJRExFICEhXQotCi1JRExFIGlzIHRoZSBQeXRob24gSURFIGJ1aWx0IHdpdGggdGhlIHRraW50ZXIgR1VJIHRvb2xraXQuCi0KLUlETEUgaGFzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6Ci0tY29kZWQgaW4gMTAwJSBwdXJlIFB5dGhvbiwgdXNpbmcgdGhlIHRraW50ZXIgR1VJIHRvb2xraXQKLS1jcm9zcy1wbGF0Zm9ybTogd29ya3Mgb24gV2luZG93cywgVW5peCwgYW5kIE9TIFgKLS1tdWx0aS13aW5kb3cgdGV4dCBlZGl0b3Igd2l0aCBtdWx0aXBsZSB1bmRvLCBQeXRob24gY29sb3JpemluZywgc21hcnQgaW5kZW50LAotY2FsbCB0aXBzLCBhbmQgbWFueSBvdGhlciBmZWF0dXJlcwotLVB5dGhvbiBzaGVsbCB3aW5kb3cgKGEuay5hIGludGVyYWN0aXZlIGludGVycHJldGVyKQotLWRlYnVnZ2VyIChub3QgY29tcGxldGUsIGJ1dCB5b3UgY2FuIHNldCBicmVha3BvaW50cywgdmlldyBhbmQgc3RlcCkKLQotTWVudXM6Ci0KLUlETEUgaGFzIHR3byB3aW5kb3cgdHlwZXMgdGhlIFNoZWxsIHdpbmRvdyBhbmQgdGhlIEVkaXRvciB3aW5kb3cuIEl0IGlzCi1wb3NzaWJsZSB0byBoYXZlIG11bHRpcGxlIGVkaXRvciB3aW5kb3dzIHNpbXVsdGFuZW91c2x5LiBJRExFJ3MKLW1lbnVzIGR5bmFtaWNhbGx5IGNoYW5nZSBiYXNlZCBvbiB3aGljaCB3aW5kb3cgaXMgY3VycmVudGx5IHNlbGVjdGVkLiBFYWNoIG1lbnUKLWRvY3VtZW50ZWQgYmVsb3cgaW5kaWNhdGVzIHdoaWNoIHdpbmRvdyB0eXBlIGl0IGlzIGFzc29jaWF0ZWQgd2l0aC4gCi0KLUZpbGUgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgTmV3IEZpbGUgICAgICAgICAtLSBDcmVhdGUgYSBuZXcgZmlsZSBlZGl0aW5nIHdpbmRvdwotICAgICAgICBPcGVuLi4uICAgICAgICAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgZmlsZQotICAgICAgICBPcGVuIE1vZHVsZS4uLiAgIC0tIE9wZW4gYW4gZXhpc3RpbmcgbW9kdWxlIChzZWFyY2hlcyBzeXMucGF0aCkKLSAgICAgICAgUmVjZW50IEZpbGVzLi4uICAtLSBPcGVuIGEgbGlzdCBvZiByZWNlbnQgZmlsZXMKLSAgICAgICAgQ2xhc3MgQnJvd3NlciAgICAtLSBTaG93IGNsYXNzZXMgYW5kIG1ldGhvZHMgaW4gY3VycmVudCBmaWxlCi0gICAgICAgIFBhdGggQnJvd3NlciAgICAgLS0gU2hvdyBzeXMucGF0aCBkaXJlY3RvcmllcywgbW9kdWxlcywgY2xhc3NlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbWV0aG9kcwotICAgICAgICAtLS0KLSAgICAgICAgU2F2ZSAgICAgICAgICAgICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIHRoZSBhc3NvY2lhdGVkIGZpbGUgKHVuc2F2ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dzIGhhdmUgYSAqIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHdpbmRvdyB0aXRsZSkKLQotICAgICAgICBTYXZlIEFzLi4uICAgICAgIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gbmV3IGZpbGUsIHdoaWNoIGJlY29tZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYXNzb2NpYXRlZCBmaWxlCi0gICAgICAgIFNhdmUgQ29weSBBcy4uLiAgLS0gU2F2ZSBjdXJyZW50IHdpbmRvdyB0byBkaWZmZXJlbnQgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgY2hhbmdpbmcgdGhlIGFzc29jaWF0ZWQgZmlsZQotICAgICAgICAtLS0KLSAgICAgICAgUHJpbnQgV2luZG93ICAgICAtLSBQcmludCB0aGUgY3VycmVudCB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIENsb3NlICAgICAgICAgICAgLS0gQ2xvc2UgY3VycmVudCB3aW5kb3cgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQotICAgICAgICBFeGl0ICAgICAgICAgICAgIC0tIENsb3NlIGFsbCB3aW5kb3dzLCBxdWl0IChhc2tzIHRvIHNhdmUgaWYgdW5zYXZlZCkKLQotRWRpdCBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBVbmRvICAgICAgICAgICAgIC0tIFVuZG8gbGFzdCBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSBtYXhpbXVtIG9mIDEwMDAgY2hhbmdlcyBtYXkgYmUgdW5kb25lKQotICAgICAgICBSZWRvICAgICAgICAgICAgIC0tIFJlZG8gbGFzdCB1bmRvbmUgY2hhbmdlIHRvIGN1cnJlbnQgd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZWxlY3QgQWxsICAgICAgIC0tIFNlbGVjdCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBlZGl0IGJ1ZmZlcgotICAgICAgICAtLS0KLSAgICAgICAgRmluZC4uLiAgICAgICAgICAtLSBPcGVuIGEgc2VhcmNoIGRpYWxvZyBib3ggd2l0aCBtYW55IG9wdGlvbnMKLSAgICAgICAgRmluZCBBZ2FpbiAgICAgICAtLSBSZXBlYXQgbGFzdCBzZWFyY2gKLSAgICAgICAgRmluZCBTZWxlY3Rpb24gICAtLSBTZWFyY2ggZm9yIHRoZSBzdHJpbmcgaW4gdGhlIHNlbGVjdGlvbgotICAgICAgICBGaW5kIGluIEZpbGVzLi4uIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCBmb3Igc2VhcmNoaW5nIGZpbGVzCi0gICAgICAgIFJlcGxhY2UuLi4gICAgICAgLS0gT3BlbiBhIHNlYXJjaC1hbmQtcmVwbGFjZSBkaWFsb2cgYm94Ci0gICAgICAgIEdvIHRvIExpbmUgICAgICAgLS0gQXNrIGZvciBhIGxpbmUgbnVtYmVyIGFuZCBzaG93IHRoYXQgbGluZQotICAgICAgICBFeHBhbmQgV29yZCAgICAgIC0tIEV4cGFuZCB0aGUgd29yZCB5b3UgaGF2ZSB0eXBlZCB0byBtYXRjaCBhbm90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yZCBpbiB0aGUgc2FtZSBidWZmZXI7IHJlcGVhdCB0byBnZXQgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCBleHBhbnNpb24KLSAgICAgICAgU2hvdyBDYWxsdGlwICAgICAtLSBBZnRlciBhbiB1bmNsb3NlZCBwYXJlbnRoZXNpcyBmb3IgYSBmdW5jdGlvbiwgb3BlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgc21hbGwgd2luZG93IHdpdGggZnVuY3Rpb24gcGFyYW1ldGVyIGhpbnRzCi0gICAgICAgIFNob3cgUGFyZW5zICAgICAgLS0gSGlnaGxpZ2h0IHRoZSBzdXJyb3VuZGluZyBwYXJlbnRoZXNpcwotICAgICAgICBTaG93IENvbXBsZXRpb25zIC0tIE9wZW4gYSBzY3JvbGwgd2luZG93IGFsbG93aW5nIHNlbGVjdGlvbiBrZXl3b3JkcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBhdHRyaWJ1dGVzLiAoc2VlICcqVElQUyonLCBiZWxvdykKLQotRm9ybWF0IE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgSW5kZW50IFJlZ2lvbiAgICAgICAtLSBTaGlmdCBzZWxlY3RlZCBsaW5lcyByaWdodCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIERlZGVudCBSZWdpb24gICAgICAgLS0gU2hpZnQgc2VsZWN0ZWQgbGluZXMgbGVmdCBieSB0aGUgaW5kZW50IHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgNCBzcGFjZXMpCi0gICAgICAgIENvbW1lbnQgT3V0IFJlZ2lvbiAgLS0gSW5zZXJ0ICMjIGluIGZyb250IG9mIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFVuY29tbWVudCBSZWdpb24gICAgLS0gUmVtb3ZlIGxlYWRpbmcgIyBvciAjIyBmcm9tIHNlbGVjdGVkIGxpbmVzCi0gICAgICAgIFRhYmlmeSBSZWdpb24gICAgICAgLS0gVHVybnMgKmxlYWRpbmcqIHN0cmV0Y2hlcyBvZiBzcGFjZXMgaW50byB0YWJzLgotICAgICAgICAgICAgICAgIChOb3RlOiBXZSByZWNvbW1lbmQgdXNpbmcgNCBzcGFjZSBibG9ja3MgdG8gaW5kZW50IFB5dGhvbiBjb2RlLikKLSAgICAgICAgVW50YWJpZnkgUmVnaW9uICAgICAtLSBUdXJuICphbGwqIHRhYnMgaW50byB0aGUgY29ycmVudCBudW1iZXIgb2Ygc3BhY2VzCi0gICAgICAgIFRvZ2dsZSB0YWJzICAgICAgICAgLS0gT3BlbiBhIGRpYWxvZyB0byBzd2l0Y2ggYmV0d2VlbiBpbmRlbnRpbmcgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlcyBhbmQgdGFicy4KLSAgICAgICAgTmV3IEluZGVudCBXaWR0aC4uLiAtLSBPcGVuIGEgZGlhbG9nIHRvIGNoYW5nZSBpbmRlbnQgd2lkdGguICBUaGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NlcHRlZCBkZWZhdWx0IGJ5IHRoZSBQeXRob24gY29tbXVuaXR5IGlzIDQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZXMuCi0gICAgICAgIEZvcm1hdCBQYXJhZ3JhcGggICAgLS0gUmVmb3JtYXQgdGhlIGN1cnJlbnQgYmxhbmstbGluZS1zZXBhcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGguIEFsbCBsaW5lcyBpbiB0aGUgcGFyYWdyYXBoIHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQgdG8gbGVzcyB0aGFuIDgwIGNvbHVtbnMuCi0gICAgICAgIC0tLQotICAgICAgICBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIC0tIFJlbW92ZWQgYW55IHNwYWNlIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlIGVuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBsYXN0IG5vbi1zcGFjZSBjaGFyYWN0ZXIKLQotUnVuIE1lbnUgKEVkaXRvciB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgUHl0aG9uIFNoZWxsIC0tIE9wZW4gb3Igd2FrZSB1cCB0aGUgUHl0aG9uIHNoZWxsIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgQ2hlY2sgTW9kdWxlIC0tIENoZWNrIHRoZSBzeW50YXggb2YgdGhlIG1vZHVsZSBjdXJyZW50bHkgb3BlbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRvciB3aW5kb3cuICBJZiB0aGUgbW9kdWxlIGhhcyBub3QgYmVlbiBzYXZlZCBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWxsIHByb21wdCB0aGUgdXNlciB0byBzYXZlIHRoZSBjb2RlLgotICAgICAgICBSdW4gTW9kdWxlICAgLS0gUmVzdGFydCB0aGUgc2hlbGwgdG8gY2xlYW4gdGhlIGVudmlyb25tZW50LCB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBjdXJyZW50bHkgb3BlbiBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaGFzCi0gICAgICAgICAgICAgICAgICAgICAgICBub3QgYmVlbiBzYXZlZCBJRExFIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2RlLgotCi1TaGVsbCBNZW51IChTaGVsbCB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgVmlldyBMYXN0IFJlc3RhcnQgLS0gU2Nyb2xsIHRoZSBzaGVsbCB3aW5kb3cgdG8gdGhlIGxhc3QgU2hlbGwgcmVzdGFydAotICAgICAgICBSZXN0YXJ0IFNoZWxsICAgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQKLQotRGVidWcgTWVudSAoU2hlbGwgd2luZG93IG9ubHkpOgotCi0gICAgICAgIEdvIHRvIEZpbGUvTGluZSAgIC0tIExvb2sgYXJvdW5kIHRoZSBpbnNlcnQgcG9pbnQgZm9yIGEgZmlsZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGxpbmUgbnVtYmVyLCBvcGVuIHRoZSBmaWxlLCBhbmQgc2hvdyB0aGUgbGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlZnVsIHRvIHZpZXcgdGhlIHNvdXJjZSBsaW5lcyByZWZlcmVuY2VkIGluIGFuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiB0cmFjZWJhY2suICBBdmFpbGFibGUgaW4gdGhlIGNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudSBvZiB0aGUgU2hlbGwgd2luZG93LgotICAgICAgICBEZWJ1Z2dlciAodG9nZ2xlKSAtLSBUaGlzIGZlYXR1cmUgaXMgbm90IGNvbXBsZXRlIGFuZCBjb25zaWRlcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVyaW1lbnRhbC4gUnVuIGNvbW1hbmRzIGluIHRoZSBzaGVsbCB1bmRlciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdnZXIuCi0gICAgICAgIFN0YWNrIFZpZXdlciAgICAgIC0tIFNob3cgdGhlIHN0YWNrIHRyYWNlYmFjayBvZiB0aGUgbGFzdCBleGNlcHRpb24KLSAgICAgICAgQXV0by1vcGVuIFN0YWNrIFZpZXdlciAodG9nZ2xlKSAtLSBUb2dnbGUgYXV0b21hdGljYWxseSBvcGVuaW5nIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIHZpZXdlciBvbiB1bmhhbmRsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24KLQotT3B0aW9ucyBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBDb25maWd1cmUgSURMRSAtLSBPcGVuIGEgY29uZmlndXJhdGlvbiBkaWFsb2cuICBGb250cywgaW5kZW50YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGtleWJpbmRpbmdzLCBhbmQgY29sb3IgdGhlbWVzIG1heSBiZSBhbHRlcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgICBTdGFydHVwIFByZWZlcmVuY2VzIG1heSBiZSBzZXQsIGFuZCBhZGRpdGlvbmFsIEhlbHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlcyBjYW4gYmUgc3BlY2lmaWVkLiAgT24gT1MgWCwgb3BlbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBkaWFsb2cgYnkgc2VsZWN0aW5nIFByZWZlcmVuY2VzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBhcHBsaWNhdGlvbiBtZW51LgotCi0gICAgICAgIC0tLQotICAgICAgICBDb2RlIENvbnRleHQgKHRvZ2dsZSkgLS0gT3BlbiBhIHBhbmUgYXQgdGhlIHRvcCBvZiB0aGUgZWRpdCB3aW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHNob3dzIHRoZSBibG9jayBjb250ZXh0IG9mIHRoZSBzZWN0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBjb2RlIHdoaWNoIGlzIHNjcm9sbGluZyBvZmYgdGhlIHRvcCBvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy4gVGhpcyBpcyBub3QgcHJlc2VudCBpbiB0aGUgU2hlbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdyBvbmx5IHRoZSBFZGl0b3Igd2luZG93LgotCi1XaW5kb3cgTWVudSAoU2hlbGwgYW5kIEVkaXRvcik6Ci0KLSAgICAgICAgWm9vbSBIZWlnaHQgLS0gVG9nZ2xlcyB0aGUgd2luZG93IGJldHdlZW4gbm9ybWFsIHNpemUgKDQweDgwIGluaXRpYWwKLSAgICAgICAgc2V0dGluZykgYW5kIG1heGltdW0gaGVpZ2h0LiAgVGhlIGluaXRpYWwgc2l6ZSBpcyBpbiB0aGUgQ29uZmlndXJlCi0gICAgICAgIElETEUgZGlhbG9nIHVuZGVyIHRoZSBnZW5lcmFsIHRhYi4KLSAgICAgICAgLS0tCi0gICAgICAgIFRoZSByZXN0IG9mIHRoaXMgbWVudSBsaXN0cyB0aGUgbmFtZXMgb2YgYWxsIG9wZW4gd2luZG93czsKLSAgICAgICAgc2VsZWN0IG9uZSB0byBicmluZyBpdCB0byB0aGUgZm9yZWdyb3VuZCAoZGVpY29uaWZ5aW5nIGl0IGlmCi0gICAgICAgIG5lY2Vzc2FyeSkuCi0KLUhlbHAgTWVudToKLQotICAgICAgICBBYm91dCBJRExFICAtLSBWZXJzaW9uLCBjb3B5cmlnaHQsIGxpY2Vuc2UsIGNyZWRpdHMKLSAgICAgICAgLS0tCi0gICAgICAgIElETEUgSGVscCAgIC0tIERpc3BsYXkgdGhpcyBmaWxlIHdoaWNoIGlzIGEgaGVscCBmaWxlIGZvciBJRExFCi0gICAgICAgICAgICAgICAgICAgICAgIGRldGFpbGluZyB0aGUgbWVudSBvcHRpb25zLCBiYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBhbmQgb3RoZXIgdGlwcy4KLSAgICAgICAgUHl0aG9uIERvY3MgLS0gQWNjZXNzIGxvY2FsIFB5dGhvbiBkb2N1bWVudGF0aW9uLCBpZgotICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsZWQuICBPciB3aWxsIHN0YXJ0IGEgd2ViIGJyb3dzZXIgYW5kIG9wZW4KLSAgICAgICAgICAgICAgICAgICAgICAgZG9jcy5weXRob24ub3JnIHNob3dpbmcgdGhlIGxhdGVzdCBQeXRob24gZG9jdW1lbnRhdGlvbi4KLSAgICAgICAgLS0tCi0gICAgICAgIEFkZGl0aW9uYWwgaGVscCBzb3VyY2VzIG1heSBiZSBhZGRlZCBoZXJlIHdpdGggdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUgR2VuZXJhbCB0YWIuCi0KLUVkaXRvciBjb250ZXh0IG1lbnUgKFJpZ2h0LWNsaWNrIC8gQ29udHJvbC1jbGljayBvbiBPUyBYIGluIEVkaXQgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICBTZXQgQnJlYWtwb2ludCAgIC0tIFNldHMgYSBicmVha3BvaW50LiBCcmVha3BvaW50cyBhcmUgb25seSBlbmFibGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB0aGUgZGVidWdnZXIgaXMgb3Blbi4KLSAgICAgICAgQ2xlYXIgQnJlYWtwb2ludCAtLSBDbGVhcnMgdGhlIGJyZWFrcG9pbnQgb24gdGhhdCBsaW5lCi0KLVNoZWxsIGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gU2hlbGwgd2luZG93KToKLQotICAgICAgICBDdXQgICAgICAgICAgICAgIC0tIENvcHkgYSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBkZWxldGUgdGhlIHNlbGVjdGlvbgotICAgICAgICBDb3B5ICAgICAgICAgICAgIC0tIENvcHkgc2VsZWN0aW9uIGludG8gc3lzdGVtLXdpZGUgY2xpcGJvYXJkCi0gICAgICAgIFBhc3RlICAgICAgICAgICAgLS0gSW5zZXJ0IHN5c3RlbS13aWRlIGNsaXBib2FyZCBpbnRvIHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgR28gdG8gZmlsZS9saW5lICAtLSBTYW1lIGFzIGluIERlYnVnIG1lbnUKLQotCi0qKiBUSVBTICoqCi09PT09PT09PT09Ci0KLUFkZGl0aW9uYWwgSGVscCBTb3VyY2VzOgotCi0gICAgICAgIFdpbmRvd3MgdXNlcnMgY2FuIEdvb2dsZSBvbiB6b3Blc2hlbGYuY2htIHRvIGFjY2VzcyBab3BlIGhlbHAgZmlsZXMgaW4KLSAgICAgICAgdGhlIFdpbmRvd3MgaGVscCBmb3JtYXQuICBUaGUgQWRkaXRpb25hbCBIZWxwIFNvdXJjZXMgZmVhdHVyZSBvZiB0aGUKLSAgICAgICAgY29uZmlndXJhdGlvbiBHVUkgc3VwcG9ydHMgLmNobSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZmlsZXR5cGVzCi0gICAgICAgIHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIuICBTdXBwbHkgYSBNZW51IEl0ZW0gdGl0bGUsIGFuZCBlbnRlciB0aGUKLSAgICAgICAgbG9jYXRpb24gaW4gdGhlIEhlbHAgRmlsZSBQYXRoIHNsb3Qgb2YgdGhlIE5ldyBIZWxwIFNvdXJjZSBkaWFsb2cuICBVc2UKLSAgICAgICAgaHR0cDovLyBhbmQvb3Igd3d3LiB0byBpZGVudGlmeSBleHRlcm5hbCBVUkxzLCBvciBkb3dubG9hZCB0aGUgZmlsZSBhbmQKLSAgICAgICAgYnJvd3NlIGZvciBpdHMgcGF0aCBvbiB5b3VyIG1hY2hpbmUgdXNpbmcgdGhlIEJyb3dzZSBidXR0b24uCi0KLSAgICAgICAgQWxsIHVzZXJzIGNhbiBhY2Nlc3MgdGhlIGV4dGVuc2l2ZSBzb3VyY2VzIG9mIGhlbHAsIGluY2x1ZGluZwotICAgICAgICB0dXRvcmlhbHMsIGF2YWlsYWJsZSBhdCBkb2NzLnB5dGhvbi5vcmcuICBTZWxlY3RlZCBVUkxzIGNhbiBiZSBhZGRlZAotICAgICAgICBvciByZW1vdmVkIGZyb20gdGhlIEhlbHAgbWVudSBhdCBhbnkgdGltZSB1c2luZyBDb25maWd1cmUgSURMRS4KLQotQmFzaWMgZWRpdGluZyBhbmQgbmF2aWdhdGlvbjoKLQotICAgICAgICBCYWNrc3BhY2UgZGVsZXRlcyBjaGFyIHRvIHRoZSBsZWZ0OyBERUwgZGVsZXRlcyBjaGFyIHRvIHRoZSByaWdodC4KLSAgICAgICAgQ29udHJvbC1iYWNrc3BhY2UgZGVsZXRlcyB3b3JkIGxlZnQsIENvbnRyb2wtREVMIGRlbGV0ZXMgd29yZCByaWdodC4KLSAgICAgICAgQXJyb3cga2V5cyBhbmQgUGFnZSBVcC9Eb3duIG1vdmUgYXJvdW5kLgotICAgICAgICBDb250cm9sLWxlZnQvcmlnaHQgQXJyb3cgbW92ZXMgYnkgd29yZHMgaW4gYSBzdHJhbmdlIGJ1dCB1c2VmdWwgd2F5LgotICAgICAgICBIb21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgbGluZS4KLSAgICAgICAgQ29udHJvbC1Ib21lL0VuZCBnbyB0byBiZWdpbi9lbmQgb2YgZmlsZS4KLSAgICAgICAgU29tZSB1c2VmdWwgRW1hY3MgYmluZGluZ3MgYXJlIGluaGVyaXRlZCBmcm9tIFRjbC9UazoKLSAgICAgICAgICAgICAgICBDb250cm9sLWEgICAgIGJlZ2lubmluZyBvZiBsaW5lCi0gICAgICAgICAgICAgICAgQ29udHJvbC1lICAgICBlbmQgb2YgbGluZQotICAgICAgICAgICAgICAgIENvbnRyb2wtayAgICAga2lsbCBsaW5lIChidXQgZG9lc24ndCBwdXQgaXQgaW4gY2xpcGJvYXJkKQotICAgICAgICAgICAgICAgIENvbnRyb2wtbCAgICAgY2VudGVyIHdpbmRvdyBhcm91bmQgdGhlIGluc2VydGlvbiBwb2ludAotICAgICAgICBTdGFuZGFyZCBrZXliaW5kaW5ncyAobGlrZSBDb250cm9sLWMgdG8gY29weSBhbmQgQ29udHJvbC12IHRvCi0gICAgICAgIHBhc3RlKSBtYXkgd29yay4gIEtleWJpbmRpbmdzIGFyZSBzZWxlY3RlZCBpbiB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nLgotCi1BdXRvbWF0aWMgaW5kZW50YXRpb246Ci0KLSAgICAgICAgQWZ0ZXIgYSBibG9jay1vcGVuaW5nIHN0YXRlbWVudCwgdGhlIG5leHQgbGluZSBpcyBpbmRlbnRlZCBieSA0IHNwYWNlcwotICAgICAgICAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgYnkgb25lIHRhYikuICBBZnRlciBjZXJ0YWluIGtleXdvcmRzCi0gICAgICAgIChicmVhaywgcmV0dXJuIGV0Yy4pIHRoZSBuZXh0IGxpbmUgaXMgZGVkZW50ZWQuICBJbiBsZWFkaW5nCi0gICAgICAgIGluZGVudGF0aW9uLCBCYWNrc3BhY2UgZGVsZXRlcyB1cCB0byA0IHNwYWNlcyBpZiB0aGV5IGFyZSB0aGVyZS4gIFRhYgotICAgICAgICBpbnNlcnRzIHNwYWNlcyAoaW4gdGhlIFB5dGhvbiBTaGVsbCB3aW5kb3cgb25lIHRhYiksIG51bWJlciBkZXBlbmRzIG9uCi0gICAgICAgIEluZGVudCBXaWR0aC4gQ3VycmVudGx5IHRhYnMgYXJlIHJlc3RyaWN0ZWQgdG8gZm91ciBzcGFjZXMgZHVlCi0gICAgICAgIHRvIFRjbC9UayBsaW1pdGF0aW9ucy4KLQotICAgICAgICBTZWUgYWxzbyB0aGUgaW5kZW50L2RlZGVudCByZWdpb24gY29tbWFuZHMgaW4gdGhlIGVkaXQgbWVudS4KLQotQ29tcGxldGlvbnM6Ci0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIHN1cHBsaWVkIGZvciBmdW5jdGlvbnMsIGNsYXNzZXMsIGFuZCBhdHRyaWJ1dGVzIG9mCi0gICAgICAgIGNsYXNzZXMsIGJvdGggYnVpbHQtaW4gYW5kIHVzZXItZGVmaW5lZC4gIENvbXBsZXRpb25zIGFyZSBhbHNvIHByb3ZpZGVkCi0gICAgICAgIGZvciBmaWxlbmFtZXMuCi0KLSAgICAgICAgVGhlIEF1dG9Db21wbGV0ZVdpbmRvdyAoQUNXKSB3aWxsIG9wZW4gYWZ0ZXIgYSBwcmVkZWZpbmVkIGRlbGF5Ci0gICAgICAgIChkZWZhdWx0IGlzIHR3byBzZWNvbmRzKSBhZnRlciBhICcuJyBvciAoaW4gYSBzdHJpbmcpIGFuIG9zLnNlcCBpcwotICAgICAgICB0eXBlZC4gIElmIGFmdGVyIG9uZSBvZiB0aG9zZSBjaGFyYWN0ZXJzIChwbHVzIHplcm8gb3IgbW9yZSBvdGhlcgotICAgICAgICBjaGFyYWN0ZXJzKSBhIHRhYiBpcyB0eXBlZCB0aGUgQUNXIHdpbGwgb3BlbiBpbW1lZGlhdGVseSBpZiBhIHBvc3NpYmxlCi0gICAgICAgIGNvbnRpbnVhdGlvbiBpcyBmb3VuZC4KLQotICAgICAgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBwb3NzaWJsZSBjb21wbGV0aW9uIGZvciB0aGUgY2hhcmFjdGVycyBlbnRlcmVkLCBhCi0gICAgICAgIHRhYiB3aWxsIHN1cHBseSB0aGF0IGNvbXBsZXRpb24gd2l0aG91dCBvcGVuaW5nIHRoZSBBQ1cuCi0KLSAgICAgICAgJ1Nob3cgQ29tcGxldGlvbnMnIHdpbGwgZm9yY2Ugb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdywgYnkgZGVmYXVsdCB0aGUKLSAgICAgICAgQ29udHJvbC1zcGFjZSBrZXlzIHdpbGwgb3BlbiBhIGNvbXBsZXRpb25zIHdpbmRvdy4gIEluIGFuIGVtcHR5Ci0gICAgICAgIHN0cmluZywgdGhpcyB3aWxsIGNvbnRhaW4gdGhlIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIE9uIGEKLSAgICAgICAgYmxhbmsgbGluZSwgaXQgd2lsbCBjb250YWluIHRoZSBidWlsdC1pbiBhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQKLSAgICAgICAgY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lIHNwYWNlcywgcGx1cyBhbnkgbW9kdWxlcyBpbXBvcnRlZC4gIElmIHNvbWUKLSAgICAgICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gZW50ZXJlZCwgdGhlIEFDVyB3aWxsIGF0dGVtcHQgdG8gYmUgbW9yZSBzcGVjaWZpYy4KLQotICAgICAgICBJZiBzdHJpbmcgb2YgY2hhcmFjdGVycyBpcyB0eXBlZCwgdGhlIEFDVyBzZWxlY3Rpb24gd2lsbCBqdW1wIHRvIHRoZQotICAgICAgICBlbnRyeSBtb3N0IGNsb3NlbHkgbWF0Y2hpbmcgdGhvc2UgY2hhcmFjdGVycy4gRW50ZXJpbmcgYSB0YWIgd2lsbCBjYXVzZQotICAgICAgICB0aGUgbG9uZ2VzdCBub24tYW1iaWd1b3VzIG1hdGNoIHRvIGJlIGVudGVyZWQgaW4gdGhlIEVkaXQgd2luZG93IG9yCi0gICAgICAgIFNoZWxsLiAgVHdvIHRhYnMgaW4gYSByb3cgd2lsbCBzdXBwbHkgdGhlIGN1cnJlbnQgQUNXIHNlbGVjdGlvbiwgYXMKLSAgICAgICAgd2lsbCByZXR1cm4gb3IgYSBkb3VibGUgY2xpY2suICBDdXJzb3Iga2V5cywgUGFnZSBVcC9Eb3duLCBtb3VzZQotICAgICAgICBzZWxlY3Rpb24sIGFuZCB0aGUgc2Nyb2xsIHdoZWVsIGFsbCBvcGVyYXRlIG9uIHRoZSBBQ1cuCi0KLSAgICAgICAgIkhpZGRlbiIgYXR0cmlidXRlcyBjYW4gYmUgYWNjZXNzZWQgYnkgdHlwaW5nIHRoZSBiZWdpbm5pbmcgb2YgaGlkZGVuCi0gICAgICAgIG5hbWUgYWZ0ZXIgYSAnLicsICBlLmcuICdfJy4gIFRoaXMgYWxsb3dzIGFjY2VzcyB0byBtb2R1bGVzIHdpdGgKLSAgICAgICAgJ19fYWxsX18nIHNldCwgb3IgdG8gY2xhc3MtcHJpdmF0ZSBhdHRyaWJ1dGVzLgotCi0gICAgICAgIENvbXBsZXRpb25zIGFuZCB0aGUgJ0V4cGFuZCBXb3JkJyBmYWNpbGl0eSBjYW4gc2F2ZSBhIGxvdCBvZiB0eXBpbmchCi0KLSAgICAgICAgQ29tcGxldGlvbnMgYXJlIGN1cnJlbnRseSBsaW1pdGVkIHRvIHRob3NlIGluIHRoZSBuYW1lc3BhY2VzLiAgTmFtZXMgaW4KLSAgICAgICAgYW4gRWRpdG9yIHdpbmRvdyB3aGljaCBhcmUgbm90IHZpYSBfX21haW5fXyBvciBzeXMubW9kdWxlcyB3aWxsIG5vdCBiZQotICAgICAgICBmb3VuZC4gIFJ1biB0aGUgbW9kdWxlIG9uY2Ugd2l0aCB5b3VyIGltcG9ydHMgdG8gY29ycmVjdCB0aGlzCi0gICAgICAgIHNpdHVhdGlvbi4gIE5vdGUgdGhhdCBJRExFIGl0c2VsZiBwbGFjZXMgcXVpdGUgYSBmZXcgbW9kdWxlcyBpbgotICAgICAgICBzeXMubW9kdWxlcywgc28gbXVjaCBjYW4gYmUgZm91bmQgYnkgZGVmYXVsdCwgZS5nLiB0aGUgcmUgbW9kdWxlLgotCi0gICAgICAgIElmIHlvdSBkb24ndCBsaWtlIHRoZSBBQ1cgcG9wcGluZyB1cCB1bmJpZGRlbiwgc2ltcGx5IG1ha2UgdGhlIGRlbGF5Ci0gICAgICAgIGxvbmdlciBvciBkaXNhYmxlIHRoZSBleHRlbnNpb24uICBPciBhbm90aGVyIG9wdGlvbiBpcyB0aGUgZGVsYXkgY291bGQKLSAgICAgICAgYmUgc2V0IHRvIHplcm8uIEFub3RoZXIgYWx0ZXJuYXRpdmUgdG8gcHJldmVudGluZyBBQ1cgcG9wdXBzIGlzIHRvCi0gICAgICAgIGRpc2FibGUgdGhlIGNhbGwgdGlwcyBleHRlbnNpb24uCi0KLVB5dGhvbiBTaGVsbCB3aW5kb3c6Ci0KLSAgICAgICAgQ29udHJvbC1jIGludGVycnVwdHMgZXhlY3V0aW5nIGNvbW1hbmQuCi0gICAgICAgIENvbnRyb2wtZCBzZW5kcyBlbmQtb2YtZmlsZTsgY2xvc2VzIHdpbmRvdyBpZiB0eXBlZCBhdCA+Pj4gcHJvbXB0LgotICAgICAgICBBbHQtLyBleHBhbmQgd29yZCBpcyBhbHNvIHVzZWZ1bCB0byByZWR1Y2UgdHlwaW5nLgotCi0gICAgQ29tbWFuZCBoaXN0b3J5OgotCi0gICAgICAgIEFsdC1wIHJldHJpZXZlcyBwcmV2aW91cyBjb21tYW5kIG1hdGNoaW5nIHdoYXQgeW91IGhhdmUgdHlwZWQuIE9uIE9TIFgKLSAgICAgICAgdXNlIENvbnRyb2wtcC4KLSAgICAgICAgQWx0LW4gcmV0cmlldmVzIG5leHQuIE9uIE9TIFggdXNlIENvbnRyb2wtbi4KLSAgICAgICAgUmV0dXJuIHdoaWxlIGN1cnNvciBpcyBvbiBhIHByZXZpb3VzIGNvbW1hbmQgcmV0cmlldmVzIHRoYXQgY29tbWFuZC4KLQotICAgIFN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgVGhlIGNvbG9yaW5nIGlzIGFwcGxpZWQgaW4gYSBiYWNrZ3JvdW5kICJ0aHJlYWQiLCBzbyB5b3UgbWF5Ci0gICAgICAgIG9jY2FzaW9uYWxseSBzZWUgdW5jb2xvcml6ZWQgdGV4dC4gIFRvIGNoYW5nZSB0aGUgY29sb3IKLSAgICAgICAgc2NoZW1lLCB1c2UgdGhlIENvbmZpZ3VyZSBJRExFIC8gSGlnaGxpZ2h0aW5nIGRpYWxvZy4KLQotICAgIFB5dGhvbiBkZWZhdWx0IHN5bnRheCBjb2xvcnM6Ci0KLSAgICAgICAgS2V5d29yZHMgICAgICAgIG9yYW5nZQotICAgICAgICBCdWlsdGlucyAgICAgICAgcm95YWwgcHVycGxlCi0gICAgICAgIFN0cmluZ3MgICAgICAgICBncmVlbgotICAgICAgICBDb21tZW50cyAgICAgICAgcmVkCi0gICAgICAgIERlZmluaXRpb25zICAgICBibHVlCi0KLSAgICBTaGVsbCBkZWZhdWx0IGNvbG9yczoKLQotICAgICAgICBDb25zb2xlIG91dHB1dCAgYnJvd24KLSAgICAgICAgc3Rkb3V0ICAgICAgICAgIGJsdWUKLSAgICAgICAgc3RkZXJyICAgICAgICAgIHJlZAotICAgICAgICBzdGRpbiAgICAgICAgICAgYmxhY2sKLQotT3RoZXIgcHJlZmVyZW5jZXM6Ci0KLSAgICAgICAgVGhlIGZvbnQgcHJlZmVyZW5jZXMsIGhpZ2hsaWdodGluZywga2V5cywgYW5kIGdlbmVyYWwgcHJlZmVyZW5jZXMgY2FuCi0gICAgICAgIGJlIGNoYW5nZWQgdmlhIHRoZSBDb25maWd1cmUgSURMRSBtZW51IG9wdGlvbi4gIEJlIHN1cmUgdG8gbm90ZSB0aGF0Ci0gICAgICAgIGtleXMgY2FuIGJlIHVzZXIgZGVmaW5lZCwgSURMRSBzaGlwcyB3aXRoIGZvdXIgYnVpbHQgaW4ga2V5IHNldHMuIEluCi0gICAgICAgIGFkZGl0aW9uIGEgdXNlciBjYW4gY3JlYXRlIGEgY3VzdG9tIGtleSBzZXQgaW4gdGhlIENvbmZpZ3VyZSBJRExFCi0gICAgICAgIGRpYWxvZyB1bmRlciB0aGUga2V5cyB0YWIuCi0KLUNvbW1hbmQgbGluZSB1c2FnZToKLQotICAgICAgICBFbnRlciBpZGxlIC1oIGF0IHRoZSBjb21tYW5kIHByb21wdCB0byBnZXQgYSB1c2FnZSBtZXNzYWdlLgotCi0gICAgICAgIGlkbGUucHkgWy1jIGNvbW1hbmRdIFstZF0gWy1lXSBbLXNdIFstdCB0aXRsZV0gW2FyZ10gLi4uCi0KLSAgICAgICAgLWMgY29tbWFuZCAgcnVuIHRoaXMgY29tbWFuZAotICAgICAgICAtZCAgICAgICAgICBlbmFibGUgZGVidWdnZXIKLSAgICAgICAgLWUgICAgICAgICAgZWRpdCBtb2RlOyBhcmd1bWVudHMgYXJlIGZpbGVzIHRvIGJlIGVkaXRlZAotICAgICAgICAtcyAgICAgICAgICBydW4gJElETEVTVEFSVFVQIG9yICRQWVRIT05TVEFSVFVQIGZpcnN0Ci0gICAgICAgIC10IHRpdGxlICAgIHNldCB0aXRsZSBvZiBzaGVsbCB3aW5kb3cKLQotICAgICAgICBJZiB0aGVyZSBhcmUgYXJndW1lbnRzOgotICAgICAgICAxLiBJZiAtZSBpcyB1c2VkLCBhcmd1bWVudHMgYXJlIGZpbGVzIG9wZW5lZCBmb3IgZWRpdGluZyBhbmQgc3lzLmFyZ3YKLSAgICAgICAgICAgcmVmbGVjdHMgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gSURMRSBpdHNlbGYuCi0gICAgICAgIDIuIE90aGVyd2lzZSwgaWYgLWMgaXMgdXNlZCwgYWxsIGFyZ3VtZW50cyBhcmUgcGxhY2VkIGluCi0gICAgICAgICAgIHN5cy5hcmd2WzE6Li4uXSwgd2l0aCBzeXMuYXJndlswXSBzZXQgdG8gLWMuCi0gICAgICAgIDMuIE90aGVyd2lzZSwgaWYgbmVpdGhlciAtZSBub3IgLWMgaXMgdXNlZCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEKLSAgICAgICAgICAgc2NyaXB0IHdoaWNoIGlzIGV4ZWN1dGVkIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4KLSAgICAgICAgICAgc3lzLmFyZ3ZbMTouLi5dICBhbmQgc3lzLmFyZ3ZbMF0gc2V0IHRvIHRoZSBzY3JpcHQgbmFtZS4gIElmIHRoZQotICAgICAgICAgICBzY3JpcHQgbmFtZSBpcyAtLCBubyBzY3JpcHQgaXMgZXhlY3V0ZWQgYnV0IGFuIGludGVyYWN0aXZlIFB5dGhvbgotICAgICAgICAgICBzZXNzaW9uIGlzIHN0YXJ0ZWQ7IHRoZSBhcmd1bWVudHMgYXJlIHN0aWxsIGF2YWlsYWJsZSBpbiBzeXMuYXJndi4KLQotUnVubmluZyB3aXRob3V0IGEgc3VicHJvY2VzczogKERFUFJFQ0FURUQgaW4gUHl0aG9uIDMuNCBzZWUgSXNzdWUgMTYxMjMpCi0KLSAgICAgICAgSWYgSURMRSBpcyBzdGFydGVkIHdpdGggdGhlIC1uIGNvbW1hbmQgbGluZSBzd2l0Y2ggaXQgd2lsbCBydW4gaW4gYQotICAgICAgICBzaW5nbGUgcHJvY2VzcyBhbmQgd2lsbCBub3QgY3JlYXRlIHRoZSBzdWJwcm9jZXNzIHdoaWNoIHJ1bnMgdGhlIFJQQwotICAgICAgICBQeXRob24gZXhlY3V0aW9uIHNlcnZlci4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiBQeXRob24gY2Fubm90IGNyZWF0ZQotICAgICAgICB0aGUgc3VicHJvY2VzcyBvciB0aGUgUlBDIHNvY2tldCBpbnRlcmZhY2Ugb24geW91ciBwbGF0Zm9ybS4gIEhvd2V2ZXIsCi0gICAgICAgIGluIHRoaXMgbW9kZSB1c2VyIGNvZGUgaXMgbm90IGlzb2xhdGVkIGZyb20gSURMRSBpdHNlbGYuICBBbHNvLCB0aGUKLSAgICAgICAgZW52aXJvbm1lbnQgaXMgbm90IHJlc3RhcnRlZCB3aGVuIFJ1bi9SdW4gTW9kdWxlIChGNSkgaXMgc2VsZWN0ZWQuICBJZgotICAgICAgICB5b3VyIGNvZGUgaGFzIGJlZW4gbW9kaWZpZWQsIHlvdSBtdXN0IHJlbG9hZCgpIHRoZSBhZmZlY3RlZCBtb2R1bGVzIGFuZAotICAgICAgICByZS1pbXBvcnQgYW55IHNwZWNpZmljIGl0ZW1zIChlLmcuIGZyb20gZm9vIGltcG9ydCBiYXopIGlmIHRoZSBjaGFuZ2VzCi0gICAgICAgIGFyZSB0byB0YWtlIGVmZmVjdC4gIEZvciB0aGVzZSByZWFzb25zLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHJ1biBJRExFCi0gICAgICAgIHdpdGggdGhlIGRlZmF1bHQgc3VicHJvY2VzcyBpZiBhdCBhbGwgcG9zc2libGUuCi0KLUV4dGVuc2lvbnM6Ci0KLSAgICAgICAgSURMRSBjb250YWlucyBhbiBleHRlbnNpb24gZmFjaWxpdHkuICBTZWUgdGhlIGJlZ2lubmluZyBvZgotICAgICAgICBjb25maWctZXh0ZW5zaW9ucy5kZWYgaW4gdGhlIGlkbGVsaWIgZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLgotICAgICAgICBUaGUgZGVmYXVsdCBleHRlbnNpb25zIGFyZSBjdXJyZW50bHk6Ci0KLSAgICAgICAgICAgICAgICBGb3JtYXRQYXJhZ3JhcGgKLSAgICAgICAgICAgICAgICBBdXRvRXhwYW5kCi0gICAgICAgICAgICAgICAgWm9vbUhlaWdodAotICAgICAgICAgICAgICAgIFNjcmlwdEJpbmRpbmcKLSAgICAgICAgICAgICAgICBDYWxsVGlwcwotICAgICAgICAgICAgICAgIFBhcmVuTWF0Y2gKLSAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGUKLSAgICAgICAgICAgICAgICBDb2RlQ29udGV4dApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9oZWxwX2Fib3V0LnB5CmluZGV4IGE4Zjc1ZDIuLjA3MWJkM2UgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2Fib3V0RGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKQEAgLTEsMTEgKzEsMTMgQEAKICIiIkFib3V0IERpYWxvZyBmb3IgSURMRQogCiAiIiIKLQogaW1wb3J0IG9zCiBmcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgorCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcKKworZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldworCiAKIGNsYXNzIEFib3V0RGlhbG9nKFRvcGxldmVsKToKICAgICAiIiJNb2RhbCBhYm91dCBkaWFsb2cgZm9yIGlkbGUKQEAgLTEzNSwxNyArMTM3LDE4IEBACiAgICAgZGVmIGRpc3BsYXlfcHJpbnRlcl90ZXh0KHNlbGYsIHRpdGxlLCBwcmludGVyKToKICAgICAgICAgcHJpbnRlci5fUHJpbnRlcl9fc2V0dXAoKQogICAgICAgICB0ZXh0ID0gJ1xuJy5qb2luKHByaW50ZXIuX1ByaW50ZXJfX2xpbmVzKQotICAgICAgICB0ZXh0Vmlldy52aWV3X3RleHQoc2VsZiwgdGl0bGUsIHRleHQpCisgICAgICAgIHRleHR2aWV3LnZpZXdfdGV4dChzZWxmLCB0aXRsZSwgdGV4dCkKIAogICAgIGRlZiBkaXNwbGF5X2ZpbGVfdGV4dChzZWxmLCB0aXRsZSwgZmlsZW5hbWUsIGVuY29kaW5nPU5vbmUpOgogICAgICAgICBmbiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksIGZpbGVuYW1lKQotICAgICAgICB0ZXh0Vmlldy52aWV3X2ZpbGUoc2VsZiwgdGl0bGUsIGZuLCBlbmNvZGluZykKKyAgICAgICAgdGV4dHZpZXcudmlld19maWxlKHNlbGYsIHRpdGxlLCBmbiwgZW5jb2RpbmcpCiAKICAgICBkZWYgT2soc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hlbHBhYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGVscF9hYm91dCcsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihBYm91dERpYWxvZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaGlzdG9yeS5weQppbmRleCAwNzhhZjI5Li41NmY1M2EwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9JZGxlSGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9oaXN0b3J5LnB5CkBAIC0xLDExICsxLDEyIEBACiAiSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20gd2l0aCBIaXN0b3J5IGNsYXNzIgogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCisKIAogY2xhc3MgSGlzdG9yeToKICAgICAnJycgSW1wbGVtZW50IElkbGUgU2hlbGwgaGlzdG9yeSBtZWNoYW5pc20uCiAKLSAgICBzdG9yZSAtIFN0b3JlIHNvdXJjZSBzdGF0ZW1lbnQgKGNhbGxlZCBmcm9tIFB5U2hlbGwucmVzZXRvdXRwdXQpLgorICAgIHN0b3JlIC0gU3RvcmUgc291cmNlIHN0YXRlbWVudCAoY2FsbGVkIGZyb20gcHlzaGVsbC5yZXNldG91dHB1dCkuCiAgICAgZmV0Y2ggLSBGZXRjaCBzdG9yZWQgc3RhdGVtZW50IG1hdGNoaW5nIHByZWZpeCBhbHJlYWR5IGVudGVyZWQuCiAgICAgaGlzdG9yeV9uZXh0IC0gQm91bmQgdG8gPDxoaXN0b3J5LW5leHQ+PiBldmVudCAoZGVmYXVsdCBBbHQtTikuCiAgICAgaGlzdG9yeV9wcmV2IC0gQm91bmQgdG8gPDxoaXN0b3J5LXByZXY+PiBldmVudCAoZGVmYXVsdCBBbHQtUCkuCkBAIC05OSw2ICsxMDAsNyBAQAogICAgICAgICBzZWxmLnBvaW50ZXIgPSBOb25lCiAgICAgICAgIHNlbGYucHJlZml4ID0gTm9uZQogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgotICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaWRsZWhpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICBtYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2hpc3RvcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CmluZGV4IDc3Y2IwNTcuLjQ1MGE3MDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0h5cGVyUGFyc2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL2h5cGVycGFyc2VyLnB5CkBAIC00LDExICs0LDEwIEBACiBwcm9wZXIgaW5kZW50YXRpb24gb2YgY29kZS4gIEh5cGVyUGFyc2VyIGdpdmVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24KIHRoZSBzdHJ1Y3R1cmUgb2YgY29kZS4KICIiIgotCi1pbXBvcnQgc3RyaW5nCiBmcm9tIGtleXdvcmQgaW1wb3J0IGlza2V5d29yZAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVBhcnNlCitpbXBvcnQgc3RyaW5nCiAKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlwYXJzZQogCiAjIGFsbCBBU0NJSSBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCiBfQVNDSUlfSURfQ0hBUlMgPSBmcm96ZW5zZXQoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iKQpAQCAtMzAsNyArMjksNyBAQAogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCiAgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBlZGl0d2luLnRleHQKIAotICAgICAgICBwYXJzZXIgPSBQeVBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQorICAgICAgICBwYXJzZXIgPSBweXBhcnNlLlBhcnNlcihlZGl0d2luLmluZGVudHdpZHRoLCBlZGl0d2luLnRhYndpZHRoKQogCiAgICAgICAgIGRlZiBpbmRleDJsaW5lKGluZGV4KToKICAgICAgICAgICAgIHJldHVybiBpbnQoZmxvYXQoaW5kZXgpKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZS5weSBiL0xpYi9pZGxlbGliL2lkbGUucHkKaW5kZXggMTQxNTM0ZC4uNDg1ZDVhNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAorCiAjIEVuYWJsZSBydW5uaW5nIElETEUgd2l0aCBpZGxlbGliIGluIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uLgogIyBUaGlzIHdhcyBvbmNlIHVzZWQgdG8gcnVuIGRldmVsb3BtZW50IHZlcnNpb25zIG9mIElETEUuCiAjIEJlY2F1c2UgUEVQIDQzNCBkZWNsYXJlZCBpZGxlLnB5IGEgcHVibGljIGludGVyZmFjZSwKQEAgLTksNSArMTAsNSBAQAogaWYgaWRsZWxpYl9kaXIgbm90IGluIHN5cy5wYXRoOgogICAgIHN5cy5wYXRoLmluc2VydCgwLCBpZGxlbGliX2RpcikKIAotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4gICMgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZQorZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IG1haW4gICMgVGhpcyBpcyBzdWJqZWN0IHRvIGNoYW5nZQogbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlLnB5dyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CmluZGV4IDE0MmNiMzIuLmU3M2MwNDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGUucHl3CisrKyBiL0xpYi9pZGxlbGliL2lkbGUucHl3CkBAIC0xLDEwICsxLDEwIEBACiB0cnk6Ci0gICAgaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAorICAgIGltcG9ydCBpZGxlbGliLnB5c2hlbGwKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIElETEUgaXMgbm90IGluc3RhbGxlZCwgYnV0IG1heWJlIFB5U2hlbGwgaXMgb24gc3lzLnBhdGg6Ci0gICAgZnJvbSAuIGltcG9ydCBQeVNoZWxsCisgICAgIyBJRExFIGlzIG5vdCBpbnN0YWxsZWQsIGJ1dCBtYXliZSBweXNoZWxsIGlzIG9uIHN5cy5wYXRoOgorICAgIGZyb20gLiBpbXBvcnQgcHlzaGVsbAogICAgIGltcG9ydCBvcwotICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKFB5U2hlbGwuX19maWxlX18pKQorICAgIGlkbGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHB5c2hlbGwuX19maWxlX18pKQogICAgIGlmIGlkbGVkaXIgIT0gb3MuZ2V0Y3dkKCk6CiAgICAgICAgICMgV2UncmUgbm90IGluIHRoZSBJRExFIGRpcmVjdG9yeSwgaGVscCB0aGUgc3VicHJvY2VzcyBmaW5kIHJ1bi5weQogICAgICAgICBweXBhdGggPSBvcy5lbnZpcm9uLmdldCgnUFlUSE9OUEFUSCcsICcnKQpAQCAtMTIsNiArMTIsNiBAQAogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gcHlwYXRoICsgJzonICsgaWRsZWRpcgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3MuZW52aXJvblsnUFlUSE9OUEFUSCddID0gaWRsZWRpcgotICAgIFB5U2hlbGwubWFpbigpCisgICAgcHlzaGVsbC5tYWluKCkKIGVsc2U6Ci0gICAgaWRsZWxpYi5QeVNoZWxsLm1haW4oKQorICAgIGlkbGVsaWIucHlzaGVsbC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weQppbmRleCA4NDVjOTJkLi5hZDA2N2I0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5CkBAIC0xLDYgKzEsOCBAQAogJycnaWRsZWxpYi5pZGxlX3Rlc3QgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlLAogd2hpY2ggdGVzdHMgdGhlIElETEUgYXBwbGljYXRpb24gYXMgcGFydCBvZiB0aGUgc3RkbGliIHRlc3Qgc3VpdGUuCiBSdW4gSURMRSB0ZXN0cyBhbG9uZSB3aXRoICJweXRob24gLW0gdGVzdC50ZXN0X2lkbGUiLgorU3RhcnRpbmcgd2l0aCBQeXRob24gMy42LCBJRExFIHJlcXVpcmVzIHRjbC90ayA4LjUgb3IgbGF0ZXIuCisKIFRoaXMgcGFja2FnZSBhbmQgaXRzIGNvbnRhaW5lZCBtb2R1bGVzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSBhbmQKIGFueSBkaXJlY3QgdXNlIGlzIGF0IHlvdXIgb3duIHJpc2suCiAnJycKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weQppbmRleCA1OGU2MmNiLi42ZjY3NmFlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5CkBAIC01OSwxOSArNTksMjAgQEAKIAogCiBNb2R1bGVzIGFuZCBjbGFzc2VzIG5vdCBiZWluZyB0ZXN0ZWQgYXQgdGhlIG1vbWVudDoKLVB5U2hlbGwuUHlTaGVsbEVkaXRvcldpbmRvdwotRGVidWdnZXIuRGVidWdnZXIKLUF1dG9Db21wbGV0ZVdpbmRvdy5BdXRvQ29tcGxldGVXaW5kb3cKLU91dHB1dFdpbmRvdy5PdXRwdXRXaW5kb3cgKGluZGlyZWN0bHkgYmVpbmcgdGVzdGVkIHdpdGggZ3JlcCB0ZXN0KQorcHlzaGVsbC5QeVNoZWxsRWRpdG9yV2luZG93CitkZWJ1Z2dlci5EZWJ1Z2dlcgorYXV0b2NvbXBsZXRlX3cuQXV0b0NvbXBsZXRlV2luZG93CitvdXR3aW4uT3V0cHV0V2luZG93IChpbmRpcmVjdGx5IGJlaW5nIHRlc3RlZCB3aXRoIGdyZXAgdGVzdCkKICcnJwogCiBmcm9tIGltcG9ydGxpYiBpbXBvcnQgaW1wb3J0X21vZHVsZQotZnJvbSBpZGxlbGliLm1hY29zeFN1cHBvcnQgaW1wb3J0IF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMKIGltcG9ydCB0a2ludGVyIGFzIHRrCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKK3RrLk5vRGVmYXVsdFJvb3QoKQogCiBBYm91dERpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2Fib3V0RGlhbG9nJywKLSAgICAna3dkcyc6IHsndGl0bGUnOiAnYWJvdXREaWFsb2cgdGVzdCcsCisgICAgJ2ZpbGUnOiAnaGVscF9hYm91dCcsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ2hlbHBfYWJvdXQgdGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsCiAgICAgICAgICAgICAgfSwKICAgICAnbXNnJzogIlRlc3QgZXZlcnkgYnV0dG9uLiBFbnN1cmUgUHl0aG9uLCBUSyBhbmQgSURMRSB2ZXJzaW9ucyAiCkBAIC03OSwxNCArODAsMTQgQEAKICAgICB9CiAKIF9jYWxsdGlwX3dpbmRvd19zcGVjID0gewotICAgICdmaWxlJzogJ0NhbGxUaXBXaW5kb3cnLAorICAgICdmaWxlJzogJ2NhbGx0aXBfdycsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlR5cGluZyAnKCcgc2hvdWxkIGRpc3BsYXkgYSBjYWxsdGlwLlxuIgogICAgICAgICAgICAiVHlwaW5nICcpIHNob3VsZCBoaWRlIHRoZSBjYWxsdGlwLlxuIgogICAgIH0KIAogX2NsYXNzX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdDbGFzc0Jyb3dzZXInLAorICAgICdmaWxlJzogJ2Jyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJJbnNwZWN0IG5hbWVzIG9mIG1vZHVsZSwgY2xhc3Mod2l0aCBzdXBlcmNsYXNzIGlmICIKICAgICAgICAgICAgImFwcGxpY2FibGUpLCBtZXRob2RzIGFuZCBmdW5jdGlvbnMuXG5Ub2dnbGUgbmVzdGVkIGl0ZW1zLlxuIgpAQCAtOTUsNyArOTYsNyBAQAogICAgIH0KIAogX2NvbG9yX2RlbGVnYXRvcl9zcGVjID0gewotICAgICdmaWxlJzogJ0NvbG9yRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICdjb2xvcml6ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgdGV4dCBpcyBzYW1wbGUgUHl0aG9uIGNvZGUuXG4iCiAgICAgICAgICAgICJFbnN1cmUgY29tcG9uZW50cyBsaWtlIGNvbW1lbnRzLCBrZXl3b3JkcywgYnVpbHRpbnMsXG4iCkBAIC0xMDQsNyArMTA1LDcgQEAKICAgICB9CiAKIENvbmZpZ0RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ0RpYWxvZycsCisgICAgJ2ZpbGUnOiAnY29uZmlnZGlhbG9nJywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnQ29uZmlnRGlhbG9nVGVzdCcsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWUsfSwKICAgICAnbXNnJzogIklETEUgcHJlZmVyZW5jZXMgZGlhbG9nLlxuIgpAQCAtMTIxLDcgKzEyMiw3IEBACiAKICMgVE9ETyBJbXByb3ZlIG1lc3NhZ2UKIF9keW5fb3B0aW9uX21lbnVfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdkeW5PcHRpb25NZW51V2lkZ2V0JywKKyAgICAnZmlsZSc6ICdkeW5vcHRpb24nLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJTZWxlY3Qgb25lIG9mIHRoZSBtYW55IG9wdGlvbnMgaW4gdGhlICdvbGQgb3B0aW9uIHNldCcuXG4iCiAgICAgICAgICAgICJDbGljayB0aGUgYnV0dG9uIHRvIGNoYW5nZSB0aGUgb3B0aW9uIHNldC5cbiIKQEAgLTEzMCwzOSArMTMxLDE1IEBACiAKICMgVE9ETyBlZGl0IHdyYXBwZXIKIF9lZGl0b3Jfd2luZG93X3NwZWMgPSB7Ci0gICAnZmlsZSc6ICdFZGl0b3JXaW5kb3cnLAorICAgJ2ZpbGUnOiAnZWRpdG9yJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGVzdCBlZGl0b3IgZnVuY3Rpb25zIG9mIGludGVyZXN0LlxuIgogICAgICAgICAgICAiQmVzdCB0byBjbG9zZSBlZGl0b3IgZmlyc3QuIgogICAgIH0KIAotR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdTZWN0aW9uTmFtZURpYWxvZycsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzonR2V0IE5hbWUnLAotICAgICAgICAgICAgICdtZXNzYWdlJzonRW50ZXIgc29tZXRoaW5nJywKLSAgICAgICAgICAgICAndXNlZF9uYW1lcyc6IHsnYWJjJ30sCi0gICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAotICAgICdtc2cnOiAiQWZ0ZXIgdGhlIHRleHQgZW50ZXJlZCB3aXRoIFtPa10gaXMgc3RyaXBwZWQsIDxub3RoaW5nPiwgIgotICAgICAgICAgICAiJ2FiYycsIG9yIG1vcmUgdGhhdCAzMCBjaGFycyBhcmUgZXJyb3JzLlxuIgotICAgICAgICAgICAiQ2xvc2UgJ0dldCBOYW1lJyB3aXRoIGEgdmFsaWQgZW50cnkgKHByaW50ZWQgdG8gU2hlbGwpLCAiCi0gICAgICAgICAgICJbQ2FuY2VsXSwgb3IgW1hdIiwKLSAgICB9Ci0KLUdldEhlbHBTb3VyY2VEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdjb25maWdIZWxwU291cmNlRWRpdCcsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ0dldCBoZWxwc291cmNlJywKLSAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCi0gICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiAiCi0gICAgICAgICAgICI8bm90aGluZz4gYW5kIG1vcmUgdGhhbiAzMCBjaGFycyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCi0gICAgICAgICAgICI8bm90aGluZz4sIGZpbGUgZG9lcyBub3QgZXhpc3QgYXJlIGludmFsaWQgcGF0aCBpdGVtcy5cbiIKLSAgICAgICAgICAgIlRlc3QgZm9yIGluY29tcGxldGUgd2ViIGFkZHJlc3MgZm9yIGhlbHAgZmlsZSBwYXRoLlxuIgotICAgICAgICAgICAiQSB2YWxpZCBlbnRyeSB3aWxsIGJlIHByaW50ZWQgdG8gc2hlbGwgd2l0aCBbMGtdLlxuIgotICAgICAgICAgICAiW0NhbmNlbF0gd2lsbCBwcmludCBOb25lIHRvIHNoZWxsIiwKLSAgICB9Ci0KICMgVXBkYXRlIG9uY2UgaXNzdWUyMTUxOSBpcyByZXNvbHZlZC4KIEdldEtleXNEaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdrZXliaW5kaW5nRGlhbG9nJywKKyAgICAnZmlsZSc6ICdjb25maWdfa2V5JywKICAgICAna3dkcyc6IHsndGl0bGUnOiAnVGVzdCBrZXliaW5kaW5ncycsCiAgICAgICAgICAgICAgJ2FjdGlvbic6ICdmaW5kLWFnYWluJywKICAgICAgICAgICAgICAnY3VycmVudEtleVNlcXVlbmNlcyc6IFsnJ10gLApAQCAtMTc3LDcgKzE1NCw3IEBACiAgICAgfQogCiBfZ3JlcF9kaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdHcmVwRGlhbG9nJywKKyAgICAnZmlsZSc6ICdncmVwJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTaG93IEdyZXBEaWFsb2cnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdGhlIHZhcmlvdXMgJ0ZpbmQtaW4tZmlsZXMnIGZ1bmN0aW9ucy5cbiIKQEAgLTE4Niw4ICsxNjMsMjQgQEAKICAgICAgICAgICAgInNob3VsZCBvcGVuIHRoYXQgZmlsZSBcbmluIGEgbmV3IEVkaXRvcldpbmRvdy4iCiAgICAgfQogCitIZWxwU291cmNlX3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdIZWxwIG5hbWUgYW5kIHNvdXJjZScsCisgICAgICAgICAgICAgJ21lbnVpdGVtJzogJ3Rlc3QnLAorICAgICAgICAgICAgICdmaWxlcGF0aCc6IF9fZmlsZV9fLAorICAgICAgICAgICAgICd1c2VkX25hbWVzJzogeydhYmMnfSwKKyAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCisgICAgJ21zZyc6ICJFbnRlciBtZW51IGl0ZW0gbmFtZSBhbmQgaGVscCBmaWxlIHBhdGhcbiIKKyAgICAgICAgICAgIicnLCA+IHRoYW4gMzAgY2hhcnMsIGFuZCAnYWJjJyBhcmUgaW52YWxpZCBtZW51IGl0ZW0gbmFtZXMuXG4iCisgICAgICAgICAgICInJyBhbmQgZmlsZSBkb2VzIG5vdCBleGlzdCBhcmUgaW52YWxpZCBwYXRoIGl0ZW1zLlxuIgorICAgICAgICAgICAiQW55IHVybCAoJ3d3dy4uLicsICdodHRwLi4uJykgaXMgYWNjZXB0ZWQuXG4iCisgICAgICAgICAgICJUZXN0IEJyb3dzZSB3aXRoIGFuZCB3aXRob3V0IHBhdGgsIGFzIGNhbm5vdCB1bml0dGVzdC5cbiIKKyAgICAgICAgICAgIltPa10gb3IgPFJldHVybj4gcHJpbnRzIHZhbGlkIGVudHJ5IHRvIHNoZWxsXG4iCisgICAgICAgICAgICJbQ2FuY2VsXSBvciA8RXNjYXBlPiBwcmludHMgTm9uZSB0byBzaGVsbCIKKyAgICB9CisKIF9pb19iaW5kaW5nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnSU9CaW5kaW5nJywKKyAgICAnZmlsZSc6ICdpb21lbnUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IHRoZSBmb2xsb3dpbmcgYmluZGluZ3MuXG4iCiAgICAgICAgICAgICI8Q29udHJvbC1vPiB0byBvcGVuIGZpbGUgZnJvbSBkaWFsb2cuXG4iCkBAIC0yMDAsNyArMTkzLDcgQEAKICAgICB9CiAKIF9tdWx0aV9jYWxsX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlDYWxsJywKKyAgICAnZmlsZSc6ICdtdWx0aWNhbGwnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgZm9sbG93aW5nIGFjdGlvbnMgc2hvdWxkIHRyaWdnZXIgYSBwcmludCB0byBjb25zb2xlIG9yIElETEUiCiAgICAgICAgICAgICIgU2hlbGwuXG5FbnRlcmluZyBhbmQgbGVhdmluZyB0aGUgdGV4dCBhcmVhLCBrZXkgZW50cnksICIKQEAgLTIxMCwxNCArMjAzLDE0IEBACiAgICAgfQogCiBfbXVsdGlzdGF0dXNfYmFyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnTXVsdGlTdGF0dXNCYXInLAorICAgICdmaWxlJzogJ3N0YXR1c2JhcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkVuc3VyZSBwcmVzZW5jZSBvZiBtdWx0aS1zdGF0dXMgYmFyIGJlbG93IHRleHQgYXJlYS5cbiIKICAgICAgICAgICAgIkNsaWNrICdVcGRhdGUgU3RhdHVzJyB0byBjaGFuZ2UgdGhlIG11bHRpLXN0YXR1cyB0ZXh0IgogICAgIH0KIAogX29iamVjdF9icm93c2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnT2JqZWN0QnJvd3NlcicsCisgICAgJ2ZpbGUnOiAnZGVidWdvYmonLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJEb3VibGUgY2xpY2sgb24gaXRlbXMgdXB0byB0aGUgbG93ZXN0IGxldmVsLlxuIgogICAgICAgICAgICAiQXR0cmlidXRlcyBvZiB0aGUgb2JqZWN0cyBhbmQgcmVsYXRlZCBpbmZvcm1hdGlvbiAiCkBAIC0yMjUsNyArMjE4LDcgQEAKICAgICB9CiAKIF9wYXRoX2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdQYXRoQnJvd3NlcicsCisgICAgJ2ZpbGUnOiAncGF0aGJyb3dzZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IGZvciBjb3JyZWN0IGRpc3BsYXkgb2YgYWxsIHBhdGhzIGluIHN5cy5wYXRoLlxuIgogICAgICAgICAgICAiVG9nZ2xlIG5lc3RlZCBpdGVtcyB1cHRvIHRoZSBsb3dlc3QgbGV2ZWwuXG4iCkBAIC0yMzQsNyArMjI3LDcgQEAKICAgICB9CiAKIF9wZXJjb2xhdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUGVyY29sYXRvcicsCisgICAgJ2ZpbGUnOiAncGVyY29sYXRvcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZXJlIGFyZSB0d28gdHJhY2VycyB3aGljaCBjYW4gYmUgdG9nZ2xlZCB1c2luZyBhIGNoZWNrYm94LlxuIgogICAgICAgICAgICAiVG9nZ2xpbmcgYSB0cmFjZXIgJ29uJyBieSBjaGVja2luZyBpdCBzaG91bGQgcHJpbnQgdHJhY2VyIgpAQCAtMjQ0LDggKzIzNywyMCBAQAogICAgICAgICAgICAiVGVzdCBmb3IgYWN0aW9ucyBsaWtlIHRleHQgZW50cnksIGFuZCByZW1vdmFsLiIKICAgICB9CiAKK1F1ZXJ5X3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAncXVlcnknLAorICAgICdrd2RzJzogeyd0aXRsZSc6ICdRdWVyeScsCisgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnRW50ZXIgc29tZXRoaW5nJywKKyAgICAgICAgICAgICAndGV4dDAnOiAnR28nLAorICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKKyAgICAnbXNnJzogIkVudGVyIHdpdGggPFJldHVybj4gb3IgW09rXS4gIFByaW50IHZhbGlkIGVudHJ5IHRvIFNoZWxsXG4iCisgICAgICAgICAgICJCbGFuayBsaW5lLCBhZnRlciBzdHJpcHBpbmcsIGlzIGlnbm9yZWRcbiIKKyAgICAgICAgICAgIkNsb3NlIGRpYWxvZyB3aXRoIHZhbGlkIGVudHJ5LCA8RXNjYXBlPiwgW0NhbmNlbF0sIFtYXSIKKyAgICB9CisKKwogX3JlcGxhY2VfZGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnUmVwbGFjZURpYWxvZycsCisgICAgJ2ZpbGUnOiAncmVwbGFjZScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkNsaWNrIHRoZSAnUmVwbGFjZScgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB2YXJpb3VzIHJlcGxhY2Ugb3B0aW9ucyBpbiB0aGUgJ1JlcGxhY2UgZGlhbG9nJy5cbiIKQEAgLTI1MywxNSArMjU4LDIyIEBACiAgICAgfQogCiBfc2VhcmNoX2RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ1NlYXJjaERpYWxvZycsCisgICAgJ2ZpbGUnOiAnc2VhcmNoJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdTZWFyY2gnIGJ1dHRvbi5cbiIKICAgICAgICAgICAgIlRlc3QgdmFyaW91cyBzZWFyY2ggb3B0aW9ucyBpbiB0aGUgJ1NlYXJjaCBkaWFsb2cnLlxuIgogICAgICAgICAgICAiQ2xpY2sgW0Nsb3NlXSBvciBbWF0gdG8gY2xvc2UgdGhlICdTZWFyY2ggRGlhbG9nJy4iCiAgICAgfQogCitfc2VhcmNoYmFzZV9zcGVjID0geworICAgICdmaWxlJzogJ3NlYXJjaGJhc2UnLAorICAgICdrd2RzJzoge30sCisgICAgJ21zZyc6ICJDaGVjayB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgYmFzZSBzZWFyY2ggZGlhbG9nXG4iCisgICAgICAgICAgICJJdHMgb25seSBhY3Rpb24gaXMgdG8gY2xvc2UuIgorICAgIH0KKwogX3Njcm9sbGVkX2xpc3Rfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTY3JvbGxlZExpc3QnLAorICAgICdmaWxlJzogJ3Njcm9sbGVkbGlzdCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIllvdSBzaG91bGQgc2VlIGEgc2Nyb2xsYWJsZSBsaXN0IG9mIGl0ZW1zXG4iCiAgICAgICAgICAgICJTZWxlY3RpbmcgKGNsaWNraW5nKSBvciBkb3VibGUgY2xpY2tpbmcgYW4gaXRlbSAiCkBAIC0yNzcsNyArMjg5LDcgQEAKICAgICB9CiAKIF9zdGFja192aWV3ZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdTdGFja1ZpZXdlcicsCisgICAgJ2ZpbGUnOiAnc3RhY2t2aWV3ZXInLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJBIHN0YWNrdHJhY2UgZm9yIGEgTmFtZUVycm9yIGV4Y2VwdGlvbi5cbiIKICAgICAgICAgICAgIkV4cGFuZCAnaWRsZWxpYiAuLi4nIGFuZCAnPGxvY2Fscz4nLlxuIgpAQCAtMjk1LDggKzMwNyw4IEBACiAgICAgfQogCiBUZXh0Vmlld2VyX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAndGV4dFZpZXcnLAotICAgICdrd2RzJzogeyd0aXRsZSc6ICdUZXN0IHRleHRWaWV3JywKKyAgICAnZmlsZSc6ICd0ZXh0dmlldycsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1Rlc3QgdGV4dHZpZXcnLAogICAgICAgICAgICAgICd0ZXh0JzonVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZy5cbicqMzUsCiAgICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAogICAgICdtc2cnOiAiVGVzdCBmb3IgcmVhZC1vbmx5IHByb3BlcnR5IG9mIHRleHQuXG4iCkBAIC0zMDQsMjEgKzMxNiwyMSBAQAogICAgICB9CiAKIF90b29sdGlwX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnVG9vbFRpcCcsCisgICAgJ2ZpbGUnOiAndG9vbHRpcCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlBsYWNlIG1vdXNlIGN1cnNvciBvdmVyIGJvdGggdGhlIGJ1dHRvbnNcbiIKICAgICAgICAgICAgIkEgdG9vbHRpcCBzaG91bGQgYXBwZWFyIHdpdGggc29tZSB0ZXh0LiIKICAgICB9CiAKIF90cmVlX3dpZGdldF9zcGVjID0gewotICAgICdmaWxlJzogJ1RyZWVXaWRnZXQnLAorICAgICdmaWxlJzogJ3RyZWUnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUaGUgY2FudmFzIGlzIHNjcm9sbGFibGUuXG4iCiAgICAgICAgICAgICJDbGljayBvbiBmb2xkZXJzIHVwdG8gdG8gdGhlIGxvd2VzdCBsZXZlbC4iCiAgICAgfQogCiBfdW5kb19kZWxlZ2F0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdVbmRvRGVsZWdhdG9yJywKKyAgICAnZmlsZSc6ICd1bmRvJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgW1VuZG9dIHRvIHVuZG8gYW55IGFjdGlvbi5cbiIKICAgICAgICAgICAgIkNsaWNrIFtSZWRvXSB0byByZWRvIGFueSBhY3Rpb24uXG4iCkBAIC0zMjcsNyArMzM5LDcgQEAKICAgICB9CiAKIF93aWRnZXRfcmVkaXJlY3Rvcl9zcGVjID0gewotICAgICdmaWxlJzogJ1dpZGdldFJlZGlyZWN0b3InLAorICAgICdmaWxlJzogJ3JlZGlyZWN0b3InLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJFdmVyeSB0ZXh0IGluc2VydCBzaG91bGQgYmUgcHJpbnRlZCB0byB0aGUgY29uc29sZS4iCiAgICAgICAgICAgICJvciB0aGUgSURMRSBzaGVsbC4iCkBAIC0zMzcsMTQgKzM0OSwxMyBAQAogICAgIHJvb3QgPSB0ay5UaygpCiAgICAgcm9vdC50aXRsZSgnSURMRSBodGVzdCcpCiAgICAgcm9vdC5yZXNpemFibGUoMCwgMCkKLSAgICBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpCiAKICAgICAjIGEgc2Nyb2xsYWJsZSBMYWJlbCBsaWtlIGNvbnN0YW50IHdpZHRoIHRleHQgd2lkZ2V0LgogICAgIGZyYW1lTGFiZWwgPSB0ay5GcmFtZShyb290LCBwYWR4PTEwKQogICAgIGZyYW1lTGFiZWwucGFjaygpCiAgICAgdGV4dCA9IHRrLlRleHQoZnJhbWVMYWJlbCwgd3JhcD0nd29yZCcpCiAgICAgdGV4dC5jb25maWd1cmUoYmc9cm9vdC5jZ2V0KCdiZycpLCByZWxpZWY9J2ZsYXQnLCBoZWlnaHQ9NCwgd2lkdGg9NzApCi0gICAgc2Nyb2xsYmFyID0gdGsuU2Nyb2xsYmFyKGZyYW1lTGFiZWwsIGNvbW1hbmQ9dGV4dC55dmlldykKKyAgICBzY3JvbGxiYXIgPSBTY3JvbGxiYXIoZnJhbWVMYWJlbCwgY29tbWFuZD10ZXh0Lnl2aWV3KQogICAgIHRleHQuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNjcm9sbGJhci5zZXQpCiAgICAgc2Nyb2xsYmFyLnBhY2soc2lkZT0ncmlnaHQnLCBmaWxsPSd5JywgZXhwYW5kPUZhbHNlKQogICAgIHRleHQucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0nYm90aCcsIGV4cGFuZD1UcnVlKQpAQCAtMzY1LDExICszNzYsMTEgQEAKICAgICAgICAgICAgICAgICB0ZXN0ID0gZ2V0YXR0cihtb2QsIHRlc3RfbmFtZSkKICAgICAgICAgICAgICAgICB0ZXN0X2xpc3QuYXBwZW5kKCh0ZXN0X3NwZWMsIHRlc3QpKQogCi0gICAgdGVzdF9uYW1lID0gdGsuU3RyaW5nVmFyKCcnKQorICAgIHRlc3RfbmFtZSA9IHRrLlN0cmluZ1Zhcihyb290KQogICAgIGNhbGxhYmxlX29iamVjdCA9IE5vbmUKICAgICB0ZXN0X2t3ZHMgPSBOb25lCiAKLSAgICBkZWYgbmV4dCgpOgorICAgIGRlZiBuZXh0X3Rlc3QoKToKIAogICAgICAgICBub25sb2NhbCB0ZXN0X25hbWUsIGNhbGxhYmxlX29iamVjdCwgdGVzdF9rd2RzCiAgICAgICAgIGlmIGxlbih0ZXN0X2xpc3QpID09IDE6CkBAIC0zODQsMjAgKzM5NSwyNiBAQAogICAgICAgICB0ZXh0Lmluc2VydCgiMS4wIix0ZXN0X3NwZWNbJ21zZyddKQogICAgICAgICB0ZXh0LmNvbmZpZ3VyZShzdGF0ZT0nZGlzYWJsZWQnKSAjIHByZXNlcnZlIHJlYWQtb25seSBwcm9wZXJ0eQogCi0gICAgZGVmIHJ1bl90ZXN0KCk6CisgICAgZGVmIHJ1bl90ZXN0KF89Tm9uZSk6CiAgICAgICAgIHdpZGdldCA9IGNhbGxhYmxlX29iamVjdCgqKnRlc3Rfa3dkcykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcHJpbnQod2lkZ2V0LnJlc3VsdCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogCi0gICAgYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHR2YXJpYWJsZT10ZXN0X25hbWUsIGNvbW1hbmQ9cnVuX3Rlc3QpCisgICAgZGVmIGNsb3NlKF89Tm9uZSk6CisgICAgICAgIHJvb3QuZGVzdHJveSgpCisKKyAgICBidXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dHZhcmlhYmxlPXRlc3RfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nYWN0aXZlJywgY29tbWFuZD1ydW5fdGVzdCkKKyAgICBuZXh0X2J1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0PSJOZXh0IiwgY29tbWFuZD1uZXh0X3Rlc3QpCiAgICAgYnV0dG9uLnBhY2soKQotICAgIG5leHRfYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHQ9Ik5leHQiLCBjb21tYW5kPW5leHQpCiAgICAgbmV4dF9idXR0b24ucGFjaygpCisgICAgbmV4dF9idXR0b24uZm9jdXNfc2V0KCkKKyAgICByb290LmJpbmQoJzxLZXktUmV0dXJuPicsIHJ1bl90ZXN0KQorICAgIHJvb3QuYmluZCgnPEtleS1Fc2NhcGU+JywgY2xvc2UpCiAKLSAgICBuZXh0KCkKLQorICAgIG5leHRfdGVzdCgpCiAgICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weQppbmRleCAxNjcyYTM0Li5jN2I0OWVmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkKQEAgLTMzLDcgKzMzLDcgQEAKIAogCiBjbGFzcyBFZGl0b3I6Ci0gICAgJycnTWluaW1hbGx5IGltaXRhdGUgRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdyBjbGFzcy4KKyAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBlZGl0b3IuRWRpdG9yV2luZG93IGNsYXNzLgogICAgICcnJwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lLCBmaWxlbmFtZT1Ob25lLCBrZXk9Tm9uZSwgcm9vdD1Ob25lKToKICAgICAgICAgc2VsZi50ZXh0ID0gVGV4dCgpCkBAIC00Niw3ICs0Niw3IEBACiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvcjoKLSAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBVbmRvRGVsZWdhdG9yLFVuZG9EZWxlZ2F0b3IgY2xhc3MuCisgICAgJycnTWluaW1hbGx5IGltaXRhdGUgdW5kby5VbmRvRGVsZWdhdG9yIGNsYXNzLgogICAgICcnJwogICAgICMgQSByZWFsIHVuZG8gYmxvY2sgaXMgb25seSBuZWVkZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKmFyZ3MpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5CmluZGV4IDVmYzg5OWQuLmYzZjJkZWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkKQEAgLTEsOSArMSwxMyBAQAorJycnIFRlc3QgYXV0b2NvbXBsZXRlIGFuZCBhdXRvY29tcGxlX3cKKworQ292ZXJhZ2Ugb2YgYXV0b2NvbXBsZTogNTYlCisnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiAKLWltcG9ydCBpZGxlbGliLkF1dG9Db21wbGV0ZSBhcyBhYwotaW1wb3J0IGlkbGVsaWIuQXV0b0NvbXBsZXRlV2luZG93IGFzIGFjdworaW1wb3J0IGlkbGVsaWIuYXV0b2NvbXBsZXRlIGFzIGFjCitpbXBvcnQgaWRsZWxpYi5hdXRvY29tcGxldGVfdyBhcyBhY3cKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IEV2ZW50CiAKQEAgLTkxLDYgKzk1LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGVfZXZlbnQoZXYpKQogICAgICAgICBkZWwgZXYubWNfc3RhdGUKIAorICAgICAgICAjIFRlc3QgdGhhdCB0YWIgYWZ0ZXIgd2hpdGVzcGFjZSBpcyBpZ25vcmVkLgorICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCcxLjAnLCAnICAgICAgICAiIiJEb2NzdHJpbmcuXG4gICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZV9ldmVudChldikpCisgICAgICAgIHNlbGYudGV4dC5kZWxldGUoJzEuMCcsICdlbmQnKQorCiAgICAgICAgICMgSWYgYXV0b2NvbXBsZXRlIHdpbmRvdyBpcyBvcGVuLCBjb21wbGV0ZSgpIG1ldGhvZCBpcyBjYWxsZWQKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ3JlLicpCiAgICAgICAgICMgVGhpcyBtdXN0IGNhbGwgYXV0b2NvbXBsZXRlLl9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkKaW5kZXggZDJhMzE1Ni4uYWU4MTg2YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5CkBAIC0xLDkgKzEsOSBAQAotIiIiVW5pdCB0ZXN0cyBmb3IgaWRsZWxpYi5BdXRvRXhwYW5kIiIiCisiIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmF1dG9leHBhbmQiIiIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrCiAjZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBUZXh0Ci1mcm9tIGlkbGVsaWIuQXV0b0V4cGFuZCBpbXBvcnQgQXV0b0V4cGFuZAorZnJvbSBpZGxlbGliLmF1dG9leHBhbmQgaW1wb3J0IEF1dG9FeHBhbmQKIAogCiBjbGFzcyBEdW1teV9FZGl0d2luOgpAQCAtMjIsNiArMjIsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2xzLnRleHQgPSBUZXh0KCkKICAgICAgICAgY2xzLmF1dG9fZXhwYW5kID0gQXV0b0V4cGFuZChEdW1teV9FZGl0d2luKGNscy50ZXh0KSkKKyAgICAgICAgY2xzLmF1dG9fZXhwYW5kLmJlbGwgPSBsYW1iZGE6IE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0xMzcsNSArMTM4LDYgQEAKICAgICAgICAgbmV3X3N0YXRlID0gc2VsZi5hdXRvX2V4cGFuZC5zdGF0ZQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluaXRpYWxfc3RhdGUsIG5ld19zdGF0ZSkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jYWxsdGlwcy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CmluZGV4IGIyYTczM2MuLjBiMTE2MDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5DYWxsVGlwcyBhcyBjdAoraW1wb3J0IGlkbGVsaWIuY2FsbHRpcHMgYXMgY3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHR5cGVzCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbG9yaXplci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzhiYzNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5CkBAIC0wLDAgKzEsNTYgQEAKKycnJ1Rlc3QgaWRsZWxpYi9jb2xvcml6ZXIucHkKKworUGVyZm9ybSBtaW5pbWFsIHNhbml0eSBjaGVja3MgdGhhdCBtb2R1bGUgaW1wb3J0cyBhbmQgc29tZSB0aGluZ3MgcnVuLgorCitDb3ZlcmFnZSAyMiUuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29sb3JpemVyICAjIGFsd2F5cyB0ZXN0IGltcG9ydAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYW55KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29sb3JpemVyLmFueSgndGVzdCcsICgnYScsICdiJykpKQorCisgICAgZGVmIHRlc3RfbWFrZV9wYXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xvcml6ZXIubWFrZV9wYXQoKSkKKworCitjbGFzcyBDb2xvckNvbmZpZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLnRleHQKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfY29sb3JpemVyKHNlbGYpOgorICAgICAgICBjb2xvcml6ZXIuY29sb3JfY29uZmlnKHNlbGYudGV4dCkKKworY2xhc3MgQ29sb3JEZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2NvbG9yaXplcihzZWxmKToKKyAgICAgICAgY29sb3JpemVyLkNvbG9yRGVsZWdhdG9yKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNmYTFhMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weQpAQCAtMCwwICsxLDE2MCBAQAorJycnVGVzdCBpZGxlbGliLmNvbmZpZy4KKworTXVjaCBpcyB0ZXN0ZWQgYnkgb3BlbmluZyBjb25maWcgZGlhbG9nIGxpdmUgb3IgaW4gdGVzdF9jb25maWdkaWFsb2cuCitDb3ZlcmFnZTogMjclCisnJycKK2Zyb20gc3lzIGltcG9ydCBtb2R1bGVzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3RkZXJyCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnCisKKyMgVGVzdHMgc2hvdWxkIG5vdCBkZXBlbmQgb24gZm9ydHVpdG91cyB1c2VyIGNvbmZpZ3VyYXRpb25zLgorIyBUaGV5IG11c3Qgbm90IGFmZmVjdCBhY3R1YWwgdXNlciAuY2ZnIGZpbGVzLgorIyBSZXBsYWNlIHVzZXIgcGFyc2VycyB3aXRoIGVtcHR5IHBhcnNlcnMgdGhhdCBjYW5ub3QgYmUgc2F2ZWQuCisKK2lkbGVDb25mID0gY29uZmlnLmlkbGVDb25mCit1c2VyY2ZnID0gaWRsZUNvbmYudXNlckNmZwordGVzdGNmZyA9IHt9Cit1c2VybWFpbiA9IHRlc3RjZmdbJ21haW4nXSA9IGNvbmZpZy5JZGxlVXNlckNvbmZQYXJzZXIoJycpICAjIGZpbGVuYW1lCit1c2VyaGlnaCA9IHRlc3RjZmdbJ2hpZ2hsaWdodCddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKK3VzZXJrZXlzID0gdGVzdGNmZ1sna2V5cyddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykKKworZGVmIHNldFVwTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHRlc3RjZmcKKworZGVmIHRlYXJEb3duTW9kdWxlKCk6CisgICAgaWRsZUNvbmYudXNlckNmZyA9IHVzZXJjZmcKKworCitjbGFzcyBDdXJyZW50Q29sb3JLZXlzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiIFRlc3QgY29sb3JrZXlzIGZ1bmN0aW9uIHdpdGggdXNlciBjb25maWcgW1RoZW1lXSBhbmQgW0tleXNdIHBhdHRlcm5zLgorCisgICAgICAgIGNvbG9ya2V5cyA9IGNvbmZpZy5JZGxlQ29uZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cworICAgICAgICBUZXN0IGFsbCBwYXR0ZXJucyB3cml0dGVuIGJ5IElETEUgYW5kIHNvbWUgZXJyb3JzCisgICAgICAgIEl0ZW0gJ2RlZmF1bHQnIHNob3VsZCByZWFsbHkgYmUgJ2J1aWx0aW4nICh2ZXJzdXMgJ2N1c3RvbSkuCisgICAgIiIiCisgICAgY29sb3JrZXlzID0gaWRsZUNvbmYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMKKyAgICBkZWZhdWx0X3RoZW1lID0gJ0lETEUgQ2xhc3NpYycKKyAgICBkZWZhdWx0X2tleXMgPSBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKQorCisgICAgZGVmIHRlc3Rfb2xkX2J1aWx0aW5fdGhlbWUoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICAjIEZvciBvbGQgZGVmYXVsdCwgbmFtZTIgbXVzdCBiZSBibGFuay4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgJycnKQorICAgICAgICAjIElETEUgb21pdHMgJ25hbWUnIGZvciBkZWZhdWx0IG9sZCBidWlsdGluIHRoZW1lLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgSURMRSBhZGRzICduYW1lJyBmb3Igbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gdGhlbWUuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIE5ldycpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG9sZCBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKworICAgIGRlZiB0ZXN0X25ld19idWlsdGluX3RoZW1lKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW1RoZW1lXQorICAgICAgICAgICAgZGVmYXVsdCA9IFRydWUKKyAgICAgICAgICAgIG5hbWUyID0gSURMRSBEYXJrCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lJ10gPSAnSURMRSBOZXcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdJRExFIERhcmsnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBuZXcgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorCisgICAgZGVmIHRlc3RfdXNlcl9vdmVycmlkZV90aGVtZShzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gRmFsc2UKKyAgICAgICAgICAgIG5hbWUgPSBDdXN0b20gRGFyaworICAgICAgICAgICAgJycnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJoaWdoLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIERhcmtdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnQ3VzdG9tIERhcmsnKQorICAgICAgICAjIE5hbWUyIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydUaGVtZSddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0N1c3RvbSBEYXJrJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ1RoZW1lJykKKyAgICAgICAgdXNlcmhpZ2gucmVtb3ZlX3NlY3Rpb24oJ0N1c3RvbSBEYXJrJykKKworICAgIGRlZiB0ZXN0X29sZF9idWlsdGluX2tleXMoc2VsZik6CisgICAgICAgICMgT24gaW5pdGlhbCBpbnN0YWxsYXRpb24sIHVzZXIgbWFpbiBpcyBibGFuay4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgIyBGb3Igb2xkIGRlZmF1bHQsIG5hbWUyIG11c3QgYmUgYmxhbmssIG5hbWUgaXMgYWx3YXlzIHVzZWQuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZSA9IElETEUgQ2xhc3NpYyBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgQ2xhc3NpYyBVbml4JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignS2V5cycpCisKKyAgICBkZWYgdGVzdF9uZXdfYnVpbHRpbl9rZXlzKHNlbGYpOgorICAgICAgICAjIElETEUgd3JpdGVzIG5hbWUyIGZvciBuZXcgYnVpbHRpbnMuCisgICAgICAgIHVzZXJtYWluLnJlYWRfc3RyaW5nKCcnJworICAgICAgICAgICAgW0tleXNdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZTIgPSBJRExFIE1vZGVybiBVbml4CisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0lETEUgTW9kZXJuIFVuaXgnKQorICAgICAgICAjIExlZnRvdmVyICduYW1lJywgbm90IHJlbW92ZWQsIGlzIGlnbm9yZWQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUnXSA9ICdJRExFIENsYXNzaWMgVW5peCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBNb2Rlcm4gVW5peCcpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG5ldyBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdLZXlzJykKKworICAgIGRlZiB0ZXN0X3VzZXJfb3ZlcnJpZGVfa2V5cyhzZWxmKToKKyAgICAgICAgIyBFcnJvbmVvdXMgY3VzdG9tIG5hbWUgKG5vIGRlZmluaXRpb24pIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZQorICAgICAgICAgICAgbmFtZSA9IEN1c3RvbSBLZXlzCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgICMgQ3VzdG9tIG5hbWUgaXMgdmFsaWQgd2l0aCBtYXRjaGluZyBTZWN0aW9uIG5hbWUuCisgICAgICAgIHVzZXJrZXlzLnJlYWRfc3RyaW5nKCdbQ3VzdG9tIEtleXNdXG5hPWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdDdXN0b20gS2V5cycpCisgICAgICAgICMgTmFtZTIgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZTInXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0N1c3RvbSBLZXlzJykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ0tleXMnKQorICAgICAgICB1c2Vya2V5cy5yZW1vdmVfc2VjdGlvbignQ3VzdG9tIEtleXMnKQorCisKK2NsYXNzIFdhcm5pbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dhcm4oc2VsZik6CisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBjb25maWcuX3dhcm5lZCA9IHNldCgpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5Jyl9KQorICAgICAgICBFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgJ3dhcm5pbmcnKydcbicpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgc3RkZXJyOgorICAgICAgICAgICAgY29uZmlnLl93YXJuKCd3YXJuaW5nJywgJ2tleScpCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnJykKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm4yJywgJ3llaycpCisgICAgICAgIEVxdWFsKGNvbmZpZy5fd2FybmVkLCB7KCd3YXJuaW5nJywna2V5JyksICgnd2FybjInLCd5ZWsnKX0pCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnd2FybjInKydcbicpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2hlbHAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjY0ZjhlZC4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0iIiJVbml0dGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnSGVscFNvdXJjZUVkaXQiIiIKLWltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gsIEVudHJ5Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0hlbHBTb3VyY2VFZGl0IGFzIGhlbHBfZGlhbG9nX21vZHVsZQotCi1oZWxwX2RpYWxvZyA9IGhlbHBfZGlhbG9nX21vZHVsZS5HZXRIZWxwU291cmNlRGlhbG9nCi0KLQotY2xhc3MgRHVtbXlfaGVscF9kaWFsb2c6Ci0gICAgIyBNb2NrIGZvciB0ZXN0aW5nIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBoZWxwX2RpYWxvZwotICAgIG1lbnVfb2sgPSBoZWxwX2RpYWxvZy5tZW51X29rCi0gICAgcGF0aF9vayA9IGhlbHBfZGlhbG9nLnBhdGhfb2sKLSAgICBvayA9IGhlbHBfZGlhbG9nLm9rCi0gICAgY2FuY2VsID0gaGVscF9kaWFsb2cuY2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIG1lbnUgPSBWYXIoKQotICAgIGVudHJ5TWVudSA9IEVudHJ5KCkKLSAgICBwYXRoID0gVmFyKCkKLSAgICBlbnRyeVBhdGggPSBFbnRyeSgpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIGRlc3Ryb3llZCA9IEZhbHNlCi0KLSAgICBkZWYgZGVzdHJveShzZWxmKToKLSAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBUcnVlCi0KLQotIyBtZW51X29rIGFuZCBwYXRoX29rIGNhbGwgTWJveC5zaG93ZXJyb3IgaWYgbWVudSBhbmQgcGF0aCBhcmUgbm90IG9rLgotb3JpZ19tYm94ID0gaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveAotc2hvd2Vycm9yID0gTWJveC5zaG93ZXJyb3IKLQotCi1jbGFzcyBDb25maWdIZWxwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfaGVscF9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGhlbHBfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX21lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCcnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLm1lbnVfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdNZW51IEl0ZW0gRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfbG9uZ19tZW51KHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVsbG8nICogMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cubWVudV9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ01lbnUgSXRlbSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xvbmcnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfbWVudShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJ2hlbHAnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5tZW51X29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3RfYmxhbmtfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2ZpbGVfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2Zvb2JhcicgKiAxMDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfaW52YWxpZF91cmxfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ3d3LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnaHR0LmZvb2Jhci5jb20nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZGlhbG9nLnBhdGhfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdGaWxlIFBhdGggRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZXhpc3QnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVscCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdodHRwczovL2RvY3MucHl0aG9uLm9yZycpCi0gICAgICAgIHNlbGYuZGlhbG9nLm9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICgnaGVscCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLSAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLmNhbmNlbCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cucmVzdWx0LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTNmMmM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX2tleS5weQpAQCAtMCwwICsxLDMzIEBACisnJycgVGVzdCBpZGxlbGliLmNvbmZpZ19rZXkuCisKK0NvdmVyYWdlOiA1NiUgZnJvbSBjcmVhdGluZyBhbmQgY2xvc2luZyBkaWFsb2cuCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnX2tleQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAorCisKK2NsYXNzIEdldEtleXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGUoKSAgIyBTdG9wICJjYW4ndCBydW4gZXZlbnQgY29tbWFuZCIgd2FybmluZy4KKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBkaWEgPSBjb25maWdfa2V5LkdldEtleXNEaWFsb2coCisgICAgICAgICAgICBzZWxmLnJvb3QsICd0ZXN0JywgJzw8VGVzdD4+JywgWyc8S2V5LUYxMj4nXSwgX3V0ZXN0PVRydWUpCisgICAgICAgIGRpYS5DYW5jZWwoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19uYW1lLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZTcyYjkuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0iIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIiIiCi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyLCBNYm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nIGFzIG5hbWVfZGlhbG9nX21vZHVsZQotCi1uYW1lX2RpYWxvZyA9IG5hbWVfZGlhbG9nX21vZHVsZS5HZXRDZmdTZWN0aW9uTmFtZURpYWxvZwotCi1jbGFzcyBEdW1teV9uYW1lX2RpYWxvZzoKLSAgICAjIE1vY2sgZm9yIHRlc3RpbmcgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIG5hbWVfZGlhbG9nCi0gICAgbmFtZV9vayA9IG5hbWVfZGlhbG9nLm5hbWVfb2sKLSAgICBPayA9IG5hbWVfZGlhbG9nLk9rCi0gICAgQ2FuY2VsID0gbmFtZV9kaWFsb2cuQ2FuY2VsCi0gICAgIyBBdHRyaWJ1dGVzLCBjb25zdGFudCBvciB2YXJpYWJsZSwgbmVlZGVkIGZvciB0ZXN0cwotICAgIHVzZWRfbmFtZXMgPSBbJ3VzZWQnXQotICAgIG5hbWUgPSBWYXIoKQotICAgIHJlc3VsdCA9IE5vbmUKLSAgICBkZXN0cm95ZWQgPSBGYWxzZQotICAgIGRlZiBkZXN0cm95KHNlbGYpOgotICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKLQotIyBuYW1lX29rIGNhbGxzIE1ib3guc2hvd2Vycm9yIGlmIG5hbWUgaXMgbm90IG9rCi1vcmlnX21ib3ggPSBuYW1lX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94Ci1zaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgotCi1jbGFzcyBDb25maWdOYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGlhbG9nID0gRHVtbXlfbmFtZV9kaWFsb2coKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgbmFtZV9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IE1ib3gKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIG5hbWVfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3ggPSBvcmlnX21ib3gKLQotICAgIGRlZiB0ZXN0X2JsYW5rX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05hbWUgRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCdObycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfdXNlZF9uYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgndXNlZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdOYW1lIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9sb25nX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCdnb29kJyo4KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTmFtZSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RvbyBsb25nJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9nb29kX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCcgIGdvb2QgJykKLSAgICAgICAgc2hvd2Vycm9yLnRpdGxlID0gJ05vIEVycm9yJyAgIyBzaG91bGQgbm90IGJlIGNhbGxlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJ2dvb2QnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05vIEVycm9yJykKLQotICAgIGRlZiB0ZXN0X29rKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5uYW1lLnNldCgnZ29vZCcpCi0gICAgICAgIHNlbGYuZGlhbG9nLk9rKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICdnb29kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cuQ2FuY2VsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsICcnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weQppbmRleCA1YzA5NzkwLi43MGJkMTRlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5CkBAIC0xLDE0ICsxLDEzIEBACi0nJydUZXN0IGlkbGVsaWIuY29uZmlnRGlhbG9nLgorJycnVGVzdCBpZGxlbGliLmNvbmZpZ2RpYWxvZy4KIAogQ292ZXJhZ2U6IDQ2JSBqdXN0IGJ5IGNyZWF0aW5nIGRpYWxvZy4KIFRoZSBvdGhlciBoYWxmIGlzIGNvZGUgZm9yIHdvcmtpbmcgd2l0aCB1c2VyIGN1c3RvbWl6YXRpb25zLgogJycnCi1mcm9tIGlkbGVsaWIuY29uZmlnRGlhbG9nIGltcG9ydCBDb25maWdEaWFsb2cgICMgYWx3YXlzIHRlc3QgaW1wb3J0Citmcm9tIGlkbGVsaWIuY29uZmlnZGlhbG9nIGltcG9ydCBDb25maWdEaWFsb2cgICMgYWx3YXlzIHRlc3QgaW1wb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogZnJvbSB0a2ludGVyIGltcG9ydCBUawogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQgYXMgbWFjb3N4CiAKIGNsYXNzIENvbmZpZ0RpYWxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNiw3ICsxNSw2IEBACiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLnJvb3QgPSBUaygpCiAgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKLSAgICAgICAgbWFjb3N4Ll9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMoY2xzLnJvb3QpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgpAQCAtMjQsNyArMjIsNyBAQAogICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKICAgICAgICAgZGVsIGNscy5yb290CiAKLSAgICBkZWYgdGVzdF9kaWFsb2coc2VsZik6CisgICAgZGVmIHRlc3RfY29uZmlnZGlhbG9nKHNlbGYpOgogICAgICAgICBkID0gQ29uZmlnRGlhbG9nKHNlbGYucm9vdCwgJ1Rlc3QnLCBfdXRlc3Q9VHJ1ZSkKICAgICAgICAgZC5yZW1vdmVfdmFyX2NhbGxiYWNrcygpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVidWdnZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmNiYTlhNAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlYnVnZ2VyLnB5CkBAIC0wLDAgKzEsMjkgQEAKKycnJyBUZXN0IGlkbGVsaWIuZGVidWdnZXIuCisKK0NvdmVyYWdlOiAxOSUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIE5hbWVTcGFjZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIGRlYnVnZ2VyLk5hbWVzcGFjZVZpZXdlcihzZWxmLnJvb3QsICdUZXN0JykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkKaW5kZXggMWYwYmFhOS4uODU2MjRmYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weQpAQCAtMSw1ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKIAogY2xhc3MgRGVsZWdhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRtZW51LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKaW5kZXggYTI1OGUyOS4uMTdlYjI1YyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkKQEAgLTUsOCArNSw5IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogaW1wb3J0IHRraW50ZXIgYXMgdGsKK2Zyb20gdGtpbnRlciBpbXBvcnQgdHRrCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCiAKIGNsYXNzIFBhc3RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVGVzdCBwYXN0aW5nIGludG8gd2lkZ2V0cyB0aGF0IGFsbG93IHBhc3RpbmcuCkBAIC0xNiwxNyArMTcsMTggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSB0ay5UaygpCi0gICAgICAgIHJvb3Qud2l0aGRyYXcoKQotICAgICAgICBQeVNoZWxsLmZpeF94MTFfcGFzdGUocm9vdCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBweXNoZWxsLmZpeF94MTFfcGFzdGUocm9vdCkKICAgICAgICAgY2xzLnRleHQgPSB0ay5UZXh0KHJvb3QpCiAgICAgICAgIGNscy5lbnRyeSA9IHRrLkVudHJ5KHJvb3QpCisgICAgICAgIGNscy50ZW50cnkgPSB0dGsuRW50cnkocm9vdCkKICAgICAgICAgY2xzLnNwaW4gPSB0ay5TcGluYm94KHJvb3QpCiAgICAgICAgIHJvb3QuY2xpcGJvYXJkX2NsZWFyKCkKICAgICAgICAgcm9vdC5jbGlwYm9hcmRfYXBwZW5kKCd0d28nKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgZGVsIGNscy50ZXh0LCBjbHMuZW50cnksIGNscy5zcGluCisgICAgICAgIGRlbCBjbHMudGV4dCwgY2xzLmVudHJ5LCBjbHMudGVudHJ5CiAgICAgICAgIGNscy5yb290LmNsaXBib2FyZF9jbGVhcigpCiAgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQogICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKQEAgLTQ0LDE2ICs0NiwxNiBAQAogCiAgICAgZGVmIHRlc3RfcGFzdGVfZW50cnkoc2VsZik6CiAgICAgICAgICJUZXN0IHBhc3RpbmcgaW50byBhbiBlbnRyeSB3aXRoIGFuZCB3aXRob3V0IGEgc2VsZWN0aW9uLiIKLSAgICAgICAgIyBPbiAzLjYsIGdlbmVyYXRlZCA8PFBhc3RlPj4gZmFpbHMgd2l0aG91dCBlbXB0eSBzZWxlY3QgcmFuZ2UKLSAgICAgICAgIyBmb3IgJ25vIHNlbGVjdGlvbicuICBMaXZlIHdpZGdldCB3b3JrcyBmaW5lLgotICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnkKLSAgICAgICAgZm9yIGVuZCwgYW5zIGluICgwLCAnb25ldHdvJyksICgnZW5kJywgJ3R3bycpOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW50cnk9ZW50cnksIGVuZD1lbmQsIGFucz1hbnMpOgotICAgICAgICAgICAgICAgIGVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKLSAgICAgICAgICAgICAgICBlbnRyeS5pbnNlcnQoMCwgJ29uZScpCi0gICAgICAgICAgICAgICAgZW50cnkuc2VsZWN0X3JhbmdlKDAsIGVuZCkgICMgc2VlIG5vdGUKLSAgICAgICAgICAgICAgICBlbnRyeS5ldmVudF9nZW5lcmF0ZSgnPDxQYXN0ZT4+JykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LmdldCgpLCBhbnMpCisgICAgICAgICMgR2VuZXJhdGVkIDw8UGFzdGU+PiBmYWlscyBmb3IgdGsgZW50cnkgd2l0aG91dCBlbXB0eSBzZWxlY3QKKyAgICAgICAgIyByYW5nZSBmb3IgJ25vIHNlbGVjdGlvbicuICBMaXZlIHdpZGdldCB3b3JrcyBmaW5lLgorICAgICAgICBmb3IgZW50cnkgaW4gc2VsZi5lbnRyeSwgc2VsZi50ZW50cnk6CisgICAgICAgICAgICBmb3IgZW5kLCBhbnMgaW4gKDAsICdvbmV0d28nKSwgKCdlbmQnLCAndHdvJyk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW50cnk9ZW50cnksIGVuZD1lbmQsIGFucz1hbnMpOgorICAgICAgICAgICAgICAgICAgICBlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCisgICAgICAgICAgICAgICAgICAgIGVudHJ5Lmluc2VydCgwLCAnb25lJykKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuc2VsZWN0X3JhbmdlKDAsIGVuZCkKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuZXZlbnRfZ2VuZXJhdGUoJzw8UGFzdGU+PicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuZ2V0KCksIGFucykKIAogICAgIGRlZiB0ZXN0X3Bhc3RlX3NwaW4oc2VsZik6CiAgICAgICAgICJUZXN0IHBhc3RpbmcgaW50byBhIHNwaW5ib3ggd2l0aCBhbmQgd2l0aG91dCBhIHNlbGVjdGlvbi4iCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkKaW5kZXggYTMxZDI2ZC4uZTlkMjlkNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogCiBjbGFzcyBFZGl0b3JfZnVuY190ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5CmluZGV4IDBkOGZmMGQuLjZiNTRjMTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weQpAQCAtMSw1ICsxLDUgQEAKICIiIiAhQ2hhbmdpbmcgdGhpcyBsaW5lIHdpbGwgYnJlYWsgVGVzdF9maW5kZmlsZS50ZXN0X2ZvdW5kIQotTm9uLWd1aSB1bml0IHRlc3RzIGZvciBpZGxlbGliLkdyZXBEaWFsb2cgbWV0aG9kcy4KK05vbi1ndWkgdW5pdCB0ZXN0cyBmb3IgZ3JlcC5HcmVwRGlhbG9nIG1ldGhvZHMuCiBkdW1teV9jb21tYW5kIGNhbGxzIGdyZXBfaXQgY2FsbHMgZmluZGZpbGVzLgogQW4gZXhjZXB0aW9uIHJhaXNlZCBpbiBvbmUgbWV0aG9kIHdpbGwgZmFpbCBjYWxsZXJzLgogT3RoZXJ3aXNlLCB0ZXN0cyBhcmUgbW9zdGx5IGluZGVwZW5kZW50LgpAQCAtOCw3ICs4LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZG91dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKLWZyb20gaWRsZWxpYi5HcmVwRGlhbG9nIGltcG9ydCBHcmVwRGlhbG9nCitmcm9tIGlkbGVsaWIuZ3JlcCBpbXBvcnQgR3JlcERpYWxvZwogaW1wb3J0IHJlCiAKIGNsYXNzIER1bW15X3NlYXJjaGVuZ2luZToKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzRdLnN0YXJ0c3dpdGgoJyhIaW50OicpKQogCiBjbGFzcyBEZWZhdWx0X2NvbW1hbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjIFRvIHdyaXRlIHRoaXMsIG1vZGUgT3V0cHV0V2luZG93IGltcG9ydCB0byB0b3Agb2YgR3JlcERpYWxvZworICAgICMgVG8gd3JpdGUgdGhpcywgbW92ZSBvdXR3aW4gaW1wb3J0IHRvIHRvcCBvZiBHcmVwRGlhbG9nCiAgICAgIyBzbyBpdCBjYW4gYmUgcmVwbGFjZWQgYnkgY2FwdHVyZWRfc3Rkb3V0IGluIGNsYXNzIHNldHVwL3RlYXJkb3duLgogICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2OGUyMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHAucHkKQEAgLTAsMCArMSwzNCBAQAorJycnVGVzdCBpZGxlbGliLmhlbHAuCisKK0NvdmVyYWdlOiA4NyUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQorZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBqb2luCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKKworY2xhc3MgSGVscEZyYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAiQnkgaXRzZWxmLCB0aGlzIHRlc3RzIHRoYXQgZmlsZSBwYXJzZWQgd2l0aG91dCBleGNlcHRpb24uIgorICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBoZWxwZmlsZSA9IGpvaW4oZGlybmFtZShkaXJuYW1lKGFic3BhdGgoX19maWxlX18pKSksICdoZWxwLmh0bWwnKQorICAgICAgICBjbHMuZnJhbWUgPSBoZWxwLkhlbHBGcmFtZShyb290LCBoZWxwZmlsZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGRlbCBjbHMuZnJhbWUKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiB0ZXN0X2xpbmUxKHNlbGYpOgorICAgICAgICB0ZXh0ID0gc2VsZi5mcmFtZS50ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5nZXQoJzEuMCcsICcxLmVuZCcpLCAnIElETEUgJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkKaW5kZXggZDBhMDEyNy4uODQzZWZiOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5CkBAIC0yLDEwICsyLDEwIEBACiAKIENvdmVyYWdlOgogJycnCi1mcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nIGFzIGhlbHBfYWJvdXQKLWZyb20gaWRsZWxpYiBpbXBvcnQgdGV4dFZpZXcgYXMgdGV4dHZpZXcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscF9hYm91dAorZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAorZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94X2Z1bmMKIGltcG9ydCB1bml0dGVzdAogCiBBYm91dCA9IGhlbHBfYWJvdXQuQWJvdXREaWFsb2cKQEAgLTE5LDMzICsxOSwzMyBAQAogCiAKIGNsYXNzIERpc3BsYXlGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIlRlc3QgdGhhdCAudHh0IGZpbGVzIGFyZSBmb3VuZCBhbmQgcHJvcGVybHkgZGVjb2RlZC4iCiAgICAgZGlhbG9nID0gRHVtbXlfYWJvdXRfZGlhbG9nKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5vcmlnX21ib3ggPSB0ZXh0dmlldy50a01lc3NhZ2VCb3gKKyAgICAgICAgY2xzLm9yaWdfZXJyb3IgPSB0ZXh0dmlldy5zaG93ZXJyb3IKICAgICAgICAgY2xzLm9yaWdfdmlldyA9IHRleHR2aWV3LnZpZXdfdGV4dAotICAgICAgICBjbHMubWJveCA9IE1ib3goKQorICAgICAgICBjbHMuZXJyb3IgPSBNYm94X2Z1bmMoKQogICAgICAgICBjbHMudmlldyA9IEZ1bmMoKQotICAgICAgICB0ZXh0dmlldy50a01lc3NhZ2VCb3ggPSBjbHMubWJveAorICAgICAgICB0ZXh0dmlldy5zaG93ZXJyb3IgPSBjbHMuZXJyb3IKICAgICAgICAgdGV4dHZpZXcudmlld190ZXh0ID0gY2xzLnZpZXcKICAgICAgICAgY2xzLkFib3V0ID0gRHVtbXlfYWJvdXRfZGlhbG9nKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHRleHR2aWV3LnRrTWVzc2FnZUJveCA9IGNscy5vcmlnX21ib3gKKyAgICAgICAgdGV4dHZpZXcuc2hvd2Vycm9yID0gY2xzLm9yaWdfZXJyb3IKICAgICAgICAgdGV4dHZpZXcudmlld190ZXh0ID0gY2xzLm9yaWdfdmlldwogCiAgICAgZGVmIHRlc3RfZmlsZV9pc3BsYXkoc2VsZik6CiAgICAgICAgIGZvciBoYW5kbGVyIGluIChzZWxmLmRpYWxvZy5pZGxlX2NyZWRpdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpYWxvZy5pZGxlX3JlYWRtZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlhbG9nLmlkbGVfbmV3cyk6Ci0gICAgICAgICAgICBzZWxmLm1ib3guc2hvd2Vycm9yLm1lc3NhZ2UgPSAnJworICAgICAgICAgICAgc2VsZi5lcnJvci5tZXNzYWdlID0gJycKICAgICAgICAgICAgIHNlbGYudmlldy5jYWxsZWQgPSBGYWxzZQotICAgICAgICAgICAgaGFuZGxlcigpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubWJveC5zaG93ZXJyb3IubWVzc2FnZSwgJycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudmlldy5jYWxsZWQsIFRydWUpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChoYW5kbGVyPWhhbmRsZXIpOgorICAgICAgICAgICAgICAgIGhhbmRsZXIoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5lcnJvci5tZXNzYWdlLCAnJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudmlldy5jYWxsZWQsIFRydWUpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lkbGVoaXN0b3J5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGlzdG9yeS5weQppbmRleCA2ZTdjNmMzLi5iMjc4MDEwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pZGxlaGlzdG9yeS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oaXN0b3J5LnB5CkBAIC00LDggKzQsOCBAQAogaW1wb3J0IHRraW50ZXIgYXMgdGsKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCBhcyB0a1RleHQKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dCBhcyBta1RleHQKLWZyb20gaWRsZWxpYi5JZGxlSGlzdG9yeSBpbXBvcnQgSGlzdG9yeQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuaGlzdG9yeSBpbXBvcnQgSGlzdG9yeQorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogbGluZTEgPSAnYSA9IDcnCiBsaW5lMiA9ICdiID0gYScKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2h5cGVycGFyc2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKaW5kZXggOWNlM2YyYy4uNzNjODI4MSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkKQEAgLTEsOSArMSw5IEBACi0iIiJVbml0dGVzdCBmb3IgaWRsZWxpYi5IeXBlclBhcnNlciIiIgorIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuaHlwZXJwYXJzZXIucHkuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Ci1mcm9tIGlkbGVsaWIuSHlwZXJQYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKIAogY2xhc3MgRHVtbXlFZGl0d2luOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pb21lbnUucHkKaW5kZXggZTBlM2I5OC4uNjViZjU5MyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW9tZW51LnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW8KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKKworZnJvbSBpZGxlbGliLnJ1biBpbXBvcnQgUHNldWRvSW5wdXRGaWxlLCBQc2V1ZG9PdXRwdXRGaWxlCiAKIAogY2xhc3MgUyhzdHIpOgpAQCAtMjMwLDQgKzIzMSw0IEBACiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfbWFjb3N4LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTc1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9tYWNvc3gucHkKQEAgLTAsMCArMSwxMDMgQEAKKycnJ1Rlc3QgaWRsZWxpYi5tYWNvc3gucHkuCisKK0NvdmVyYWdlOiA3MSUgb24gV2luZG93cy4KKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworaW1wb3J0IHN5cworaW1wb3J0IHRraW50ZXIgYXMgdGsKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Lm1vY2sgYXMgbW9jaworZnJvbSBpZGxlbGliLmZpbGVsaXN0IGltcG9ydCBGaWxlTGlzdAorCittYWN0eXBlcyA9IHsnY2FyYm9uJywgJ2NvY29hJywgJ3hxdWFydHonfQorbm9udHlwZXMgPSB7J290aGVyJ30KK2FsbHR5cGVzID0gbWFjdHlwZXMgfCBub250eXBlcworCisKK2NsYXNzIEluaXRUa3R5cGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBfaW5pdF90a190eXBlLiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IHRrLlRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorICAgICAgICBjbHMub3JpZ19wbGF0Zm9ybSA9IG1hY29zeC5wbGF0Zm9ybQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKyAgICAgICAgbWFjb3N4LnBsYXRmb3JtID0gY2xzLm9yaWdfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X2luaXRfc2V0c190a3R5cGUoc2VsZik6CisgICAgICAgICJUZXN0IHRoYXQgX2luaXRfdGtfdHlwZSBzZXRzIF90a190eXBlIGFjY29yZGluZyB0byBwbGF0Zm9ybS4iCisgICAgICAgIGZvciBwbGF0Zm9ybSwgdHlwZXMgaW4gKCdkYXJ3aW4nLCBhbGx0eXBlcyksICgnb3RoZXInLCBub250eXBlcyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwbGF0Zm9ybT1wbGF0Zm9ybSk6CisgICAgICAgICAgICAgICAgbWFjb3N4LnBsYXRmb3JtID0gcGxhdGZvcm0KKyAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPT0gTm9uZQorICAgICAgICAgICAgICAgIG1hY29zeC5faW5pdF90a190eXBlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1hY29zeC5fdGtfdHlwZSwgdHlwZXMpCisKKworY2xhc3MgSXNUeXBlVGtUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBlYWNoIG9mIHRoZSBmb3VyIGlzVHlwZVRrIHByZWRlY2F0ZXMuIgorICAgIGlzZnVuY3MgPSAoKG1hY29zeC5pc0FxdWFUaywgKCdjYXJib24nLCAnY29jb2EnKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzQ2FyYm9uVGssICgnY2FyYm9uJykpLAorICAgICAgICAgICAgICAgKG1hY29zeC5pc0NvY29hVGssICgnY29jb2EnKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzWFF1YXJ0eiwgKCd4cXVhcnR6JykpLAorICAgICAgICAgICAgICAgKQorCisgICAgQG1vY2sucGF0Y2goJ2lkbGVsaWIubWFjb3N4Ll9pbml0X3RrX3R5cGUnKQorICAgIGRlZiB0ZXN0X2lzX2NhbGxzX2luaXQoc2VsZiwgbW9ja2luaXQpOgorICAgICAgICAiVGVzdCB0aGF0IGVhY2ggaXNUeXBlVGsgY2FsbHMgX2luaXRfdGtfdHlwZSB3aGVuIF90a190eXBlIGlzIE5vbmUuIgorICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSBOb25lCisgICAgICAgIGZvciBmdW5jLCB3aGVudHJ1ZSBpbiBzZWxmLmlzZnVuY3M6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMpOgorICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NraW5pdC5jYWxsZWQpCisgICAgICAgICAgICAgICAgbW9ja2luaXQucmVzZXRfbW9jaygpCisKKyAgICBkZWYgdGVzdF9pc2Z1bmNzKHNlbGYpOgorICAgICAgICAiVGVzdCB0aGF0IGVhY2ggaXNUeXBlVGsgcmV0dXJuIGNvcnJlY3QgYm9vbC4iCisgICAgICAgIGZvciBmdW5jLCB3aGVudHJ1ZSBpbiBzZWxmLmlzZnVuY3M6CisgICAgICAgICAgICBmb3IgdGt0eXBlIGluIGFsbHR5cGVzOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYywgd2hlbnRydWU9d2hlbnRydWUsIHRrdHlwZT10a3R5cGUpOgorICAgICAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSB0a3R5cGUKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYuYXNzZXJ0VHJ1ZSBpZiB0a3R5cGUgaW4gd2hlbnRydWUgZWxzZSBzZWxmLmFzc2VydEZhbHNlKVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuYygpKQorCisKK2NsYXNzIFNldHVwVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3Qgc2V0dXBBcHAuIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gdGsuVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgQG1vY2sucGF0Y2goJ2lkbGVsaWIubWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUnKSAgIzI3MzEyCisgICAgZGVmIHRlc3Rfc2V0dXBhcHAoc2VsZiwgb3ZlcnJpZGVSb290TWVudSk6CisgICAgICAgICJDYWxsIHNldHVwQXBwIHdpdGggZWFjaCBwb3NzaWJsZSBncmFwaGljcyB0eXBlLiIKKyAgICAgICAgcm9vdCA9IHNlbGYucm9vdAorICAgICAgICBmbGlzdCA9IEZpbGVMaXN0KHJvb3QpCisgICAgICAgIGZvciB0a3R5cGUgaW4gYWxsdHlwZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0a3R5cGU9dGt0eXBlKToKKyAgICAgICAgICAgICAgICBtYWNvc3guX3RrX3R5cGUgPSB0a3R5cGUKKyAgICAgICAgICAgICAgICBtYWNvc3guc2V0dXBBcHAocm9vdCwgZmxpc3QpCisgICAgICAgICAgICAgICAgaWYgdGt0eXBlIGluICgnY2FyYm9uJywgJ2NvY29hJyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdmVycmlkZVJvb3RNZW51LmNhbGxlZCkKKyAgICAgICAgICAgICAgICBvdmVycmlkZVJvb3RNZW51LnJlc2V0X21vY2soKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2Zvcm1hdHBhcmFncmFwaC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmFncmFwaC5weQppbmRleCBiNmViMmYzLi5iYTM1MGM5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9mb3JtYXRwYXJhZ3JhcGgucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyYWdyYXBoLnB5CkBAIC0xLDcgKzEsNyBAQAotIyBUZXN0IHRoZSBmdW5jdGlvbnMgYW5kIG1haW4gY2xhc3MgbWV0aG9kIG9mIEZvcm1hdFBhcmFncmFwaC5weQorIyBUZXN0IHRoZSBmdW5jdGlvbnMgYW5kIG1haW4gY2xhc3MgbWV0aG9kIG9mIHBhcmFncmFwaC5weQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IEZvcm1hdFBhcmFncmFwaCBhcyBmcAotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIgaW1wb3J0IHBhcmFncmFwaCBhcyBmcAorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93CiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIApAQCAtMzgsNyArMzgsNyBAQAogCiAKIGNsYXNzIEZpbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0IHRoZSBmaW5kX3BhcmFncmFwaCBmdW5jdGlvbiBpbiBGb3JtYXRQYXJhZ3JhcGguCisgICAgIiIiVGVzdCB0aGUgZmluZF9wYXJhZ3JhcGggZnVuY3Rpb24gaW4gcGFyYWdyYXBoIG1vZHVsZS4KIAogICAgIFVzaW5nIHRoZSBydW5jYXNlKCkgZnVuY3Rpb24sIGZpbmRfcGFyYWdyYXBoKCkgaXMgY2FsbGVkIHdpdGggJ21hcmsnIHNldCBhdAogICAgIG11bHRpcGxlIGluZGV4ZXMgYmVmb3JlIGFuZCBpbnNpZGUgdGhlIHRlc3QgcGFyYWdyYXBoLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkKaW5kZXggOTVjYzIyYy4uMDUxZjdlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBpZGxlbGliLlBhcmVuTWF0Y2guCisnJydUZXN0IGlkbGVsaWIucGFyZW5tYXRjaC4KIAogVGhpcyBtdXN0IGN1cnJlbnRseSBiZSBhIGd1aSB0ZXN0IGJlY2F1c2UgUGFyZW5NYXRjaCBtZXRob2RzIHVzZQogc2V2ZXJhbCB0ZXh0IG1ldGhvZHMgbm90IGRlZmluZWQgb24gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ay5UZXh0LgpAQCAtOSw3ICs5LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0Ci1mcm9tIGlkbGVsaWIuUGFyZW5NYXRjaCBpbXBvcnQgUGFyZW5NYXRjaAorZnJvbSBpZGxlbGliLnBhcmVubWF0Y2ggaW1wb3J0IFBhcmVuTWF0Y2gKIAogY2xhc3MgRHVtbXlFZGl0d2luOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0KToKQEAgLTM4LDEyICszOCwxNyBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi50ZXh0LmRlbGV0ZSgnMS4wJywgJ2VuZCcpCiAKKyAgICBkZWYgZ2V0X3BhcmVubWF0Y2goc2VsZik6CisgICAgICAgIHBtID0gUGFyZW5NYXRjaChzZWxmLmVkaXR3aW4pCisgICAgICAgIHBtLmJlbGwgPSBsYW1iZGE6IE5vbmUKKyAgICAgICAgcmV0dXJuIHBtCisKICAgICBkZWYgdGVzdF9wYXJlbl9leHByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgVGVzdCBQYXJlbk1hdGNoIHdpdGggJ2V4cHJlc3Npb24nIHN0eWxlLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5zZXRfc3R5bGUoJ2V4cHJlc3Npb24nKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnZGVmIGZvb2JhcihhLCBiJykKQEAgLTY2LDcgKzcxLDcgQEAKICAgICAgICAgVGVzdCBQYXJlbk1hdGNoIHdpdGggJ2RlZmF1bHQnIHN0eWxlLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5zZXRfc3R5bGUoJ2RlZmF1bHQnKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnZGVmIGZvb2JhcihhLCBiJykKQEAgLTg2LDcgKzkxLDcgQEAKICAgICAgICAgVGhlc2UgY2FzZXMgZm9yY2UgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBhbmQgYWx0ZXJuYXRlIHBhdGhzLgogICAgICAgICAiIiIKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnIyB0aGlzIGlzIGEgY29tbWVuKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBtLnBhcmVuX2Nsb3NlZF9ldmVudCgnZXZlbnQnKSkKQEAgLTk5LDcgKzEwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBtLnBhcmVuX2Nsb3NlZF9ldmVudCgnZXZlbnQnKSkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9yZXN0b3JlX3RpbWVyKHNlbGYpOgotICAgICAgICBwbSA9IFBhcmVuTWF0Y2goc2VsZi5lZGl0d2luKQorICAgICAgICBwbSA9IHNlbGYuZ2V0X3BhcmVubWF0Y2goKQogICAgICAgICBwbS5yZXN0b3JlX2V2ZW50ID0gTW9jaygpCiAgICAgICAgIHBtLmhhbmRsZV9yZXN0b3JlX3RpbWVyKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwbS5yZXN0b3JlX2V2ZW50LmNhbGxlZCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhdGhicm93c2VyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKaW5kZXggYWZiODg2Zi4uODEzY2JjYyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkKQEAgLTIsMTMgKzIsMTMgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGlkbGVsaWIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUGF0aEJyb3dzZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcGF0aGJyb3dzZXIKIAogY2xhc3MgUGF0aEJyb3dzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X0RpckJyb3dzZXJUcmVlSXRlbShzZWxmKToKICAgICAgICAgIyBJc3N1ZTE2MjI2IC0gbWFrZSBzdXJlIHRoYXQgZ2V0dGluZyBhIHN1Ymxpc3Qgd29ya3MKLSAgICAgICAgZCA9IFBhdGhCcm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSgnJykKKyAgICAgICAgZCA9IHBhdGhicm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSgnJykKICAgICAgICAgZC5HZXRTdWJMaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZC5HZXRUZXh0KCkpCiAKQEAgLTE3LDExICsxNywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaXNwYWNrYWdlZGlyKGRpciArICcvSWNvbnMnKSwgRmFsc2UpCiAKICAgICBkZWYgdGVzdF9QYXRoQnJvd3NlclRyZWVJdGVtKHNlbGYpOgotICAgICAgICBwID0gUGF0aEJyb3dzZXIuUGF0aEJyb3dzZXJUcmVlSXRlbSgpCisgICAgICAgIHAgPSBwYXRoYnJvd3Nlci5QYXRoQnJvd3NlclRyZWVJdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLkdldFRleHQoKSwgJ3N5cy5wYXRoJykKICAgICAgICAgc3ViID0gcC5HZXRTdWJMaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3ViKSwgbGVuKHN5cy5wYXRoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN1YlswXSksIFBhdGhCcm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHN1YlswXSksIHBhdGhicm93c2VyLkRpckJyb3dzZXJUcmVlSXRlbSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkKaW5kZXggNGMwYTdhZC4uNTczYjlhMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5CkBAIC0xLDEwICsxLDEwIEBACi0nJydUZXN0IFBlcmNvbGF0b3InJycKKycnJ1Rlc3QgcGVyY29sYXRvci5weS4nJycKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0a2ludGVyIGltcG9ydCBUZXh0LCBUaywgRU5ECi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvciwgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvciwgRGVsZWdhdG9yCiAKIAogY2xhc3MgTXlGaWx0ZXIoRGVsZWdhdG9yKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhZjhlYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3F1ZXJ5LnB5CkBAIC0wLDAgKzEsMzUzIEBACisiIiJUZXN0IGlkbGVsaWIucXVlcnkuCisKK05vbi1ndWkgdGVzdHMgZm9yIFF1ZXJ5LCBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UgdXNlCitkdW1teSB2ZXJzaW9ucyB0aGF0IGV4dHJhY3QgdGhlIG5vbi1ndWkgbWV0aG9kcyBhbmQgYWRkIG90aGVyIG5lZWRlZAorYXR0cmlidXRlcy4gIEdVSSB0ZXN0cyBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgZWFjaCBjbGFzcyBhbmQgc2ltdWxhdGUKK2VudHJpZXMgYW5kIGJ1dHRvbiBjbGlja3MuICBTdWJjbGFzcyB0ZXN0cyBvbmx5IHRhcmdldCB0aGUgbmV3IGNvZGUgaW4KK3RoZSBzdWJjbGFzcyBkZWZpbml0aW9uLgorCitUaGUgYXBwZWFyYW5jZSBvZiB0aGUgd2lkZ2V0cyBpcyBjaGVja2VkIGJ5IHRoZSBRdWVyeSBhbmQKK0hlbHBTb3VyY2UgaHRlc3RzLiAgVGhlc2UgYXJlIHJ1biBieSBydW5uaW5nIHF1ZXJ5LnB5LgorCitDb3ZlcmFnZTogOTQlICgxMDAlIGZvciBRdWVyeSBhbmQgU2VjdGlvbk5hbWUpLgorNiBvZiA4IG1pc3NpbmcgYXJlIE1vZHVsZU5hbWUgZXhjZXB0aW9ucyBJIGRvbid0IGtub3cgaG93IHRvIHRyaWdnZXIuCisiIiIKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworaW1wb3J0IHN5cworZnJvbSB0a2ludGVyIGltcG9ydCBUaworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhcgorZnJvbSBpZGxlbGliIGltcG9ydCBxdWVyeQorCisKKyMgTk9OLUdVSSBURVNUUworCitjbGFzcyBRdWVyeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IFF1ZXJ5IGJhc2UgY2xhc3MuIgorCisgICAgY2xhc3MgRHVtbXlfUXVlcnk6CisgICAgICAgICMgVGVzdCB0aGUgZm9sbG93aW5nIFF1ZXJ5IG1ldGhvZHMuCisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuUXVlcnkuZW50cnlfb2sKKyAgICAgICAgb2sgPSBxdWVyeS5RdWVyeS5vaworICAgICAgICBjYW5jZWwgPSBxdWVyeS5RdWVyeS5jYW5jZWwKKyAgICAgICAgIyBBZGQgYXR0cmlidXRlcyBhbmQgaW5pdGlhbGl6YXRpb24gbmVlZGVkIGZvciB0ZXN0cy4KKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveWVkID0gRmFsc2UKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKyAgICAgICAgZGVmIGRlc3Ryb3koc2VsZik6CisgICAgICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2JsYW5rIGxpbmUnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2VudHJ5X29rX2dvb2Qoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJyAgZ29vZCAnKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgRXF1YWwoZGlhbG9nLmVudHJ5X29rKCksICdnb29kJykKKyAgICAgICAgRXF1YWwoKGRpYWxvZy5yZXN1bHQsIGRpYWxvZy5kZXN0cm95ZWQpLCAoTm9uZSwgRmFsc2UpKQorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSwgJycpCisKKyAgICBkZWYgdGVzdF9va19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnJykKKyAgICAgICAgZGlhbG9nLmVudHJ5LmZvY3VzX3NldCA9IG1vY2suTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLm9rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZW50cnkuZm9jdXNfc2V0LmNhbGxlZCkKKyAgICAgICAgZGVsIGRpYWxvZy5lbnRyeS5mb2N1c19zZXQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisKKyAgICBkZWYgdGVzdF9va19nb29kKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCdnb29kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cub2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksICgnZ29vZCcsIFRydWUpKQorCisgICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCdkb2VzIG5vdCBtYXR0ZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5jYW5jZWwoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBUcnVlKSkKKworCitjbGFzcyBTZWN0aW9uTmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IFNlY3Rpb25OYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X1NlY3Rpb25OYW1lOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LlNlY3Rpb25OYW1lLmVudHJ5X29rICAjIEZ1bmN0aW9uIGJlaW5nIHRlc3RlZC4KKyAgICAgICAgdXNlZF9uYW1lcyA9IFsndXNlZCddCisgICAgICAgIGVudHJ5ID0gVmFyKCkKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfZW50cnkpOgorICAgICAgICAgICAgc2VsZi5lbnRyeS5zZXQoZHVtbXlfZW50cnkpCisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gbWVzc2FnZQorCisgICAgZGVmIHRlc3RfYmxhbmtfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gbmFtZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfdXNlZF9zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJ3VzZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCd1c2UnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2xvbmdfc2VjdGlvbl9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1NlY3Rpb25OYW1lKCdnb29kJyo4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdsb25nZXIgdGhhbiAzMCcsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfZ29vZF9zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJyAgZ29vZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCAnZ29vZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisKK2NsYXNzIE1vZHVsZU5hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBNb2R1bGVOYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X01vZHVsZU5hbWU6CisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuTW9kdWxlTmFtZS5lbnRyeV9vayAgIyBGdW5jdGlvbiBiZWluZyB0ZXN0ZWQuCisgICAgICAgIHRleHQwID0gJycKKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBkZWYgdGVzdF9ibGFua19tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gbmFtZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfYm9ndXNfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnX19uYW1lX3h5ejEyM19zaG91bGRfbm90X2V4aXN0X18nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdub3QgZm91bmQnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2Nfc291cmNlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnaXRlcnRvb2xzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc291cmNlLWJhc2VkJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9nb29kX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJ2lkbGVsaWInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmVudHJ5X29rKCkuZW5kc3dpdGgoJ19faW5pdF9fLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10sICcnKQorCisKKyMgMyBIZWxwU291cmNlIHRlc3QgY2xhc3NlcyBlYWNoIHRlc3Qgb25lIGZ1bmN0aW9uLgorCitvcmlnX3BsYXRmb3JtID0gcXVlcnkucGxhdGZvcm0KKworY2xhc3MgSGVscHNvdXJjZUJyb3dzZWZpbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBicm93c2VfZmlsZSBtZXRob2Qgb2YgTW9kdWxlTmFtZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBicm93c2VfZmlsZSA9IHF1ZXJ5LkhlbHBTb3VyY2UuYnJvd3NlX2ZpbGUKKyAgICAgICAgcGF0aHZhciA9IFZhcigpCisKKyAgICBkZWYgdGVzdF9maWxlX3JlcGxhY2VzX3BhdGgoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgpCisgICAgICAgICMgUGF0aCBpcyB3aWRnZXQgZW50cnksIGVpdGhlciAnJyBvciBzb21ldGhpbmcuCisgICAgICAgICMgRnVuYyByZXR1cm4gaXMgZmlsZSBkaWFsb2cgcmV0dXJuLCBlaXRoZXIgJycgb3Igc29tZXRoaW5nLgorICAgICAgICAjIEZ1bmMgcmV0dXJuIHNob3VsZCBvdmVycmlkZSB3aWRnZXQgZW50cnkuCisgICAgICAgICMgV2UgbmVlZCBhbGwgNCBjb21iaW5hdGlvbiB0byB0ZXN0IGFsbCAobW9zdCkgY29kZSBwYXRocy4KKyAgICAgICAgZm9yIHBhdGgsIGZ1bmMsIHJlc3VsdCBpbiAoCisgICAgICAgICAgICAgICAgKCcnLCBsYW1iZGEgYSxiLGM6JycsICcnKSwKKyAgICAgICAgICAgICAgICAoJycsIGxhbWJkYSBhLGIsYzogX19maWxlX18sIF9fZmlsZV9fKSwKKyAgICAgICAgICAgICAgICAoJ2h0ZXN0JywgbGFtYmRhIGEsYixjOicnLCAnaHRlc3QnKSwKKyAgICAgICAgICAgICAgICAoJ2h0ZXN0JywgbGFtYmRhIGEsYixjOiBfX2ZpbGVfXywgX19maWxlX18pKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGh2YXIuc2V0KHBhdGgpCisgICAgICAgICAgICAgICAgZGlhbG9nLmFza2ZpbGVuYW1lID0gZnVuYworICAgICAgICAgICAgICAgIGRpYWxvZy5icm93c2VfZmlsZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aHZhci5nZXQoKSwgcmVzdWx0KQorCisKK2NsYXNzIEhlbHBzb3VyY2VQYXRob2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBwYXRoX29rIG1ldGhvZCBvZiBIZWxwU291cmNlIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X0hlbHBTb3VyY2U6CisgICAgICAgIHBhdGhfb2sgPSBxdWVyeS5IZWxwU291cmNlLnBhdGhfb2sKKyAgICAgICAgcGF0aCA9IFZhcigpCisgICAgICAgIHBhdGhfZXJyb3IgPSB7fQorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZHVtbXlfcGF0aCk6CisgICAgICAgICAgICBzZWxmLnBhdGguc2V0KGR1bW15X3BhdGgpCisgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSwgd2lkZ2V0PU5vbmUpOgorICAgICAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBxdWVyeS5wbGF0Zm9ybSA9IG9yaWdfcGxhdGZvcm0KKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm8gaGVscCBmaWxlJywgZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfYmFkKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoX19maWxlX18gKyAnYmFkLWJhZC1iYWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX3dlYihzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCcnKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgZm9yIHVybCBpbiAnd3d3LnB5Lm9yZycsICdodHRwOi8vcHkub3JnJzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGguc2V0KHVybCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIHVybCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX2Vycm9yWyd0ZXh0J10sICcnKQorCisgICAgZGVmIHRlc3RfcGF0aF9va19maWxlKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoJycpCisgICAgICAgIGZvciBwbGF0Zm9ybSwgcHJlZml4IGluICgnZGFyd2luJywgJ2ZpbGU6Ly8nKSwgKCdvdGhlcicsICcnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KCk6CisgICAgICAgICAgICAgICAgcXVlcnkucGxhdGZvcm0gPSBwbGF0Zm9ybQorICAgICAgICAgICAgICAgIGRpYWxvZy5wYXRoLnNldChfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRoX29rKCksIHByZWZpeCArIF9fZmlsZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSwgJycpCisKKworY2xhc3MgSGVscHNvdXJjZUVudHJ5b2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBlbnRyeV9vayBtZXRob2Qgb2YgSGVscFNvdXJjZSBzdWJjbGFzcyBvZiBRdWVyeS4iCisKKyAgICBjbGFzcyBEdW1teV9IZWxwU291cmNlOgorICAgICAgICBlbnRyeV9vayA9IHF1ZXJ5LkhlbHBTb3VyY2UuZW50cnlfb2sKKyAgICAgICAgZW50cnlfZXJyb3IgPSB7fQorICAgICAgICBwYXRoX2Vycm9yID0ge30KKyAgICAgICAgZGVmIGl0ZW1fb2soc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisgICAgICAgIGRlZiBwYXRoX29rKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHRlc3RfZW50cnlfb2tfaGVscHNvdXJjZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCkKKyAgICAgICAgZm9yIG5hbWUsIHBhdGgsIHJlc3VsdCBpbiAoKE5vbmUsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2RvYy50eHQnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2MnLCBOb25lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkb2MnLCAnZG9jLnR4dCcsICgnZG9jJywgJ2RvYy50eHQnKSkpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoKToKKyAgICAgICAgICAgICAgICBkaWFsb2cubmFtZSwgZGlhbG9nLnBhdGggPSBuYW1lLCBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgcmVzdWx0KQorCisKKyMgR1VJIFRFU1RTCisKK2NsYXNzIFF1ZXJ5R3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSByb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisgICAgICAgIGNscy5kaWFsb2cgPSBxdWVyeS5RdWVyeShyb290LCAnVEVTVCcsICd0ZXN0JywgX3V0ZXN0PVRydWUpCisgICAgICAgIGNscy5kaWFsb2cuZGVzdHJveSA9IG1vY2suTW9jaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBkZWwgY2xzLmRpYWxvZworICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGlhbG9nLmVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKKyAgICAgICAgc2VsZi5kaWFsb2cucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95LnJlc2V0X21vY2soKQorCisgICAgZGVmIHRlc3RfY2xpY2tfb2soc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ2FiYycpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCAnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2NsaWNrX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLmRpYWxvZworICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaWFsb2cuZGVzdHJveS5jYWxsZWQpCisKKyAgICBkZWYgdGVzdF9jbGlja19jYW5jZWwoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5lbnRyeS5pbnNlcnQoMCwgJ2FiYycpCisgICAgICAgIGRpYWxvZy5idXR0b25fY2FuY2VsLmludm9rZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnJlc3VsdCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworCitjbGFzcyBTZWN0aW9ubmFtZUd1aVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisKKyAgICBkZWYgdGVzdF9jbGlja19zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBkaWFsb2cgPSAgcXVlcnkuU2VjdGlvbk5hbWUocm9vdCwgJ1QnLCAndCcsIHsnYWJjJ30sIF91dGVzdD1UcnVlKQorICAgICAgICBFcXVhbCA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cudXNlZF9uYW1lcywgeydhYmMnfSkKKyAgICAgICAgZGlhbG9nLmVudHJ5Lmluc2VydCgwLCAnb2theScpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCAnb2theScpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitjbGFzcyBNb2R1bGVuYW1lR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5Lk1vZHVsZU5hbWUocm9vdCwgJ1QnLCAndCcsICdpZGxlbGliJywgX3V0ZXN0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnRleHQwLCAnaWRsZWxpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5LmdldCgpLCAnaWRsZWxpYicpCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5yZXN1bHQuZW5kc3dpdGgoJ19faW5pdF9fLnB5JykpCisgICAgICAgIGRlbCBkaWFsb2cKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIHJvb3QKKworCitjbGFzcyBIZWxwc291cmNlR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX2hlbHBfc291cmNlKHNlbGYpOgorICAgICAgICByb290ID0gVGsoKQorICAgICAgICByb290LndpdGhkcmF3KCkKKyAgICAgICAgZGlhbG9nID0gIHF1ZXJ5LkhlbHBTb3VyY2Uocm9vdCwgJ1QnLCBtZW51aXRlbT0nX190ZXN0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlcGF0aD1fX2ZpbGVfXywgX3V0ZXN0PVRydWUpCisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnkuZ2V0KCksICdfX3Rlc3RfXycpCisgICAgICAgIEVxdWFsKGRpYWxvZy5wYXRoLmdldCgpLCBfX2ZpbGVfXykKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBwcmVmaXggPSAiZmlsZTovLyIgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGVsc2UgJycKKyAgICAgICAgRXF1YWwoZGlhbG9nLnJlc3VsdCwgKCdfX3Rlc3RfXycsIHByZWZpeCArIF9fZmlsZV9fKSkKKyAgICAgICAgZGVsIGRpYWxvZworICAgICAgICByb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgcm9vdAorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dpZGdldHJlZGlyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVkaXJlY3Rvci5weQppbmRleCBiYWE5NzVkLi5iMDM4NWZhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93aWRnZXRyZWRpci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZWRpcmVjdG9yLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBpZGxlbGliLldpZGdldFJlZGlyZWN0b3IuCisnJydUZXN0IGlkbGVsaWIucmVkaXJlY3Rvci4KIAogMTAwJSBjb3ZlcmFnZQogJycnCkBAIC02LDcgKzYsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dCwgVGNsRXJyb3IKLWZyb20gaWRsZWxpYi5XaWRnZXRSZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCitmcm9tIGlkbGVsaWIucmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgogCiAKIGNsYXNzIEluaXRDbG9zZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTIwLDYgKzEyMCw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yb290LmNhbGwoc2VsZi50ZXh0Ll93LCAnaW5zZXJ0JywgJ2JvbycpLCAnJykKIAogCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2VkaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2UucHkKaW5kZXggZmY0NDgyMC4uOTkxM2VkMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZWRpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIuUmVwbGFjZURpYWxvZyIiIgorIiIiVW5pdHRlc3QgZm9yIGlkbGVsaWIucmVwbGFjZS5weSIiIgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIApAQCAtNiw4ICs2LDggQEAKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jawogZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94Ci1pbXBvcnQgaWRsZWxpYi5TZWFyY2hFbmdpbmUgYXMgc2UKLWltcG9ydCBpZGxlbGliLlJlcGxhY2VEaWFsb2cgYXMgcmQKK2ltcG9ydCBpZGxlbGliLnNlYXJjaGVuZ2luZSBhcyBzZQorZnJvbSBpZGxlbGliLnJlcGxhY2UgaW1wb3J0IFJlcGxhY2VEaWFsb2cKIAogb3JpZ19tYm94ID0gc2UudGtNZXNzYWdlQm94CiBzaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgpAQCAtMjEsNyArMjEsOCBAQAogICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCiAgICAgICAgIHNlLnRrTWVzc2FnZUJveCA9IE1ib3gKICAgICAgICAgY2xzLmVuZ2luZSA9IHNlLlNlYXJjaEVuZ2luZShjbHMucm9vdCkKLSAgICAgICAgY2xzLmRpYWxvZyA9IHJkLlJlcGxhY2VEaWFsb2coY2xzLnJvb3QsIGNscy5lbmdpbmUpCisgICAgICAgIGNscy5kaWFsb2cgPSBSZXBsYWNlRGlhbG9nKGNscy5yb290LCBjbHMuZW5naW5lKQorICAgICAgICBjbHMuZGlhbG9nLmJlbGwgPSBsYW1iZGE6IE5vbmUKICAgICAgICAgY2xzLmRpYWxvZy5vayA9IE1vY2soKQogICAgICAgICBjbHMudGV4dCA9IFRleHQoY2xzLnJvb3QpCiAgICAgICAgIGNscy50ZXh0LnVuZG9fYmxvY2tfc3RhcnQgPSBNb2NrKCkKQEAgLTcwLDcgKzcxLDYgQEAKICAgICAgICAgIyB0ZXh0IGZvdW5kIGFuZCByZXBsYWNlZAogICAgICAgICBwdi5zZXQoJ2EnKQogICAgICAgICBydi5zZXQoJ2FzZGYnKQotICAgICAgICBzZWxmLmRpYWxvZy5vcGVuKHNlbGYudGV4dCkKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGVxdWFsKHRleHQuZ2V0KCcxLjgnLCAnMS4xMicpLCAnYXNkZicpCiAKQEAgLTkxLDcgKzkxLDcgQEAKICAgICAgICAgdGV4dC5tYXJrX3NldCgnaW5zZXJ0JywgJ2VuZCcpCiAgICAgICAgIHRleHQuaW5zZXJ0KCdpbnNlcnQnLCAnXG5saW5lNDI6JykKICAgICAgICAgYmVmb3JlX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCi0gICAgICAgIHB2LnNldCgnW2Etel1bXGRdKycpCisgICAgICAgIHB2LnNldChyJ1thLXpdW1xkXSsnKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgYWZ0ZXJfdGV4dCA9IHRleHQuZ2V0KCcxLjAnLCAnZW5kJykKICAgICAgICAgZXF1YWwoYmVmb3JlX3RleHQsIGFmdGVyX3RleHQpCkBAIC0xOTIsNyArMTkyLDcgQEAKICAgICAgICAgc2VsZi5lbmdpbmUucmV2YXIuc2V0KFRydWUpCiAKICAgICAgICAgYmVmb3JlX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCi0gICAgICAgIHB2LnNldCgnW2Etel1bXGRdKycpCisgICAgICAgIHB2LnNldChyJ1thLXpdW1xkXSsnKQogICAgICAgICBydi5zZXQoJ2hlbGxvJykKICAgICAgICAgcmVwbGFjZSgpCiAgICAgICAgIGFmdGVyX3RleHQgPSB0ZXh0LmdldCgnMS4wJywgJ2VuZCcpCkBAIC0yMDcsNyArMjA3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignZXJyb3InLCBzaG93ZXJyb3IudGl0bGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VtcHR5Jywgc2hvd2Vycm9yLm1lc3NhZ2UpCiAKLSAgICAgICAgcHYuc2V0KCdbXGQnKQorICAgICAgICBwdi5zZXQocidbXGQnKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbignZXJyb3InLCBzaG93ZXJyb3IudGl0bGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1BhdHRlcm4nLCBzaG93ZXJyb3IubWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weQppbmRleCAxYzkwYjkzLi4xMzBlNmJlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaWRsZWxpYi5Sc3RyaXBFeHRlbnNpb24gYXMgcnMKK2ltcG9ydCBpZGxlbGliLnJzdHJpcCBhcyBycwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEVkaXRvcgogCiBjbGFzcyByc3RyaXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTIxLDcgKzIxLDcgQEAKICAgICBkZWYgdGVzdF9yc3RyaXBfbXVsdGlwbGUoc2VsZik6CiAgICAgICAgIGVkaXRvciA9IEVkaXRvcigpCiAgICAgICAgICMgIFVuY29tbWVudCBmb2xsb3dpbmcgdG8gdmVyaWZ5IHRoYXQgdGVzdCBwYXNzZXMgd2l0aCByZWFsIHdpZGdldHMuCi0jIyAgICAgICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93IGFzIEVkaXRvcgorIyMgICAgICAgIGZyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdyBhcyBFZGl0b3IKICMjICAgICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRrCiAjIyAgICAgICAgZWRpdG9yID0gRWRpdG9yKHJvb3Q9VGsoKSkKICAgICAgICAgdGV4dCA9IGVkaXRvci50ZXh0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zY3JvbGxlZGxpc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZhYWJmZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3Njcm9sbGVkbGlzdC5weQpAQCAtMCwwICsxLDI5IEBACisnJycgVGVzdCBpZGxlbGliLnNjcm9sbGVkbGlzdC4KKworQ292ZXJhZ2U6IDM5JQorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNjcm9sbGVkbGlzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCityZXF1aXJlcygnZ3VpJykKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIFNjcm9sbGVkTGlzdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIHNjcm9sbGVkbGlzdC5TY3JvbGxlZExpc3Qoc2VsZi5yb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaC5weQppbmRleCAxOTBjODY2Li44MGZhOTNhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVGVzdCBTZWFyY2hEaWFsb2cgY2xhc3MgaW4gU2VhcmNoRGlhbG9ndWUucHkiIiIKKyIiIlRlc3QgU2VhcmNoRGlhbG9nIGNsYXNzIGluIGlkbGVsaWIuc2VhcmNoLnB5IiIiCiAKICMgRG9lcyBub3QgY3VycmVudGx5IHRlc3QgdGhlIGV2ZW50IGhhbmRsZXIgd3JhcHBlcnMuCiAjIEEgdXNhZ2UgdGVzdCBzaG91bGQgc2ltdWxhdGUgY2xpY2tzIGFuZCBjaGVjayBoaWxpZ2h0aW5nLgpAQCAtMTEsOCArMTEsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGtpbnRlciBhcyB0awogZnJvbSB0a2ludGVyIGltcG9ydCBCb29sZWFuVmFyCi1pbXBvcnQgaWRsZWxpYi5TZWFyY2hFbmdpbmUgYXMgc2UKLWltcG9ydCBpZGxlbGliLlNlYXJjaERpYWxvZyBhcyBzZAoraW1wb3J0IGlkbGVsaWIuc2VhcmNoZW5naW5lIGFzIHNlCitpbXBvcnQgaWRsZWxpYi5zZWFyY2ggYXMgc2QKIAogCiBjbGFzcyBTZWFyY2hEaWFsb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI5LDYgKzI5LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZW5naW5lID0gc2UuU2VhcmNoRW5naW5lKHNlbGYucm9vdCkKICAgICAgICAgc2VsZi5kaWFsb2cgPSBzZC5TZWFyY2hEaWFsb2coc2VsZi5yb290LCBzZWxmLmVuZ2luZSkKKyAgICAgICAgc2VsZi5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogICAgICAgICBzZWxmLnRleHQgPSB0ay5UZXh0KHNlbGYucm9vdCkKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydCgnMS4wJywgJ0hlbGxvIFdvcmxkIScpCiAKQEAgLTM4LDYgKzM5LDcgQEAKIAogICAgICAgICBzZWxmLmVuZ2luZS5zZXRwYXQoJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cuZmluZF9hZ2Fpbih0ZXh0KSkKKyAgICAgICAgc2VsZi5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogCiAgICAgICAgIHNlbGYuZW5naW5lLnNldHBhdCgnSGVsbG8nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZmluZF9hZ2Fpbih0ZXh0KSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGJhc2UucHkKaW5kZXggODAzNmI5MS4uZDc2OWZhMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nYmFzZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hiYXNlLnB5CkBAIC0xLDE0ICsxLDEzIEBACi0nJydVbml0dGVzdHMgZm9yIGlkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQorJycndGVzdHMgaWRsZWxpYi5zZWFyY2hiYXNlLgogCiBDb3ZlcmFnZTogOTklLiBUaGUgb25seSB0aGluZyBub3QgY292ZXJlZCBpcyBpbmNvbnNlcXVlbnRpYWwgLS0KIHRlc3Rpbmcgc2tpcHBpbmcgb2Ygc3VpdGUgd2hlbiBzZWxmLm5lZWR3cmFwYnV0dG9uIGlzIGZhbHNlLgotCiAnJycKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUb3BsZXZlbCwgRnJhbWUgIyMsIEJvb2xlYW5WYXIsIFN0cmluZ1ZhcgotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUgYXMgc2UKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZSBhcyBzZGIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGJhc2UgYXMgc2RiCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwogIyMgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIKIApAQCAtNzQsNyArNzMsNyBAQAogICAgIGRlZiB0ZXN0X21ha2VfZW50cnkoc2VsZik6CiAgICAgICAgIGVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzZWxmLmRpYWxvZy5yb3cgPSAwCi0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIGVudHJ5LCBsYWJlbCA9IHNlbGYuZGlhbG9nLm1ha2VfZW50cnkoIlRlc3Q6IiwgJ2hlbGxvJykKICAgICAgICAgZXF1YWwobGFiZWxbJ3RleHQnXSwgJ1Rlc3Q6JykKIApAQCAtODcsNiArODYsNyBAQAogICAgICAgICBlcXVhbChzZWxmLmRpYWxvZy5yb3csIDEpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfZW50cmllcyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKICAgICAgICAgc2VsZi5lbmdpbmUuc2V0cGF0KCdoZWxsbycpCiAgICAgICAgIHNlbGYuZGlhbG9nLmNyZWF0ZV9lbnRyaWVzKCkKQEAgLTk0LDcgKzk0LDcgQEAKIAogICAgIGRlZiB0ZXN0X21ha2VfZnJhbWUoc2VsZik6CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgZnJhbWUsIGxhYmVsID0gc2VsZi5kaWFsb2cubWFrZV9mcmFtZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGFiZWwsICcnKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnJhbWUsIEZyYW1lKQpAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmcmFtZSwgRnJhbWUpCiAKICAgICBkZWYgYnRuX3Rlc3Rfc2V0dXAoc2VsZiwgbWV0aCk6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKICAgICAgICAgcmV0dXJuIG1ldGgoKQogCkBAIC0xMTksMTEgKzExOSw2IEBACiAgICAgICAgICAgICAgICAgdmFyLCBsYWJlbCA9IHNwZWMKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1dHRvblsndGV4dCddLCBsYWJlbCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgc3RhdGUpCi0gICAgICAgICAgICAgICAgaWYgc3RhdGUgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmRlc2VsZWN0KCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBidXR0b24uc2VsZWN0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhci5nZXQoKSwgMSAtIHN0YXRlKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6CiAgICAgICAgIGZvciBzdGF0ZSBpbiAoRmFsc2UsIFRydWUpOgpAQCAtMTM5LDE4ICsxMzQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIyBoaXQgb3RoZXIgYnV0dG9uLCB0aGVuIHRoaXMgb25lCiAgICAgICAgICAgICAgICAgICAgICMgaW5kZXhlcyBkZXBlbmQgb24gYnV0dG9uIG9yZGVyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uc1t2YWxdLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCAxIC0gc3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnNbMS12YWxdLnNlbGVjdCgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKIAogICAgIGRlZiB0ZXN0X21ha2VfYnV0dG9uKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBzZWxmLmRpYWxvZy5idXR0b25mcmFtZSA9IEZyYW1lKHNlbGYuZGlhbG9nLnRvcCkKICAgICAgICAgYnRuID0gc2VsZi5kaWFsb2cubWFrZV9idXR0b24oJ1Rlc3QnLCBzZWxmLmRpYWxvZy5jbG9zZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidG5bJ3RleHQnXSwgJ1Rlc3QnKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLmNyZWF0ZV9jb21tYW5kX2J1dHRvbnMoKQogICAgICAgICAjIExvb2sgZm9yIGNsb3NlIGJ1dHRvbiBjb21tYW5kIGluIGJ1dHRvbmZyYW1lCiAgICAgICAgIGNsb3NlYnV0dG9uY29tbWFuZCA9ICcnCkBAIC0xNjAsNiArMTUyLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignY2xvc2UnLCBjbG9zZWJ1dHRvbmNvbW1hbmQpCiAKIAotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQppbmRleCBlZGJkNTU4Li5iM2FhOGViIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CkBAIC0xLDQgKzEsNCBAQAotJycnVGVzdCBmdW5jdGlvbnMgYW5kIFNlYXJjaEVuZ2luZSBjbGFzcyBpbiBTZWFyY2hFbmdpbmUucHkuJycnCisnJydUZXN0IGZ1bmN0aW9ucyBhbmQgU2VhcmNoRW5naW5lIGNsYXNzIGluIGlkbGVsaWIuc2VhcmNoZW5naW5lLnB5LicnJwogCiAjIFdpdGggbW9jayByZXBsYWNlbWVudHMsIHRoZSBtb2R1bGUgZG9lcyBub3QgdXNlIGFueSBndWkgd2lkZ2V0cy4KICMgVGhlIHVzZSBvZiB0ay5UZXh0IGlzIGF2b2lkZWQgKGZvciBub3csIHVudGlsIG1vY2sgVGV4dCBpcyBpbXByb3ZlZCkKQEAgLTEwLDcgKzEwLDcgQEAKICMgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0ICBCb29sZWFuVmFyLCBTdHJpbmdWYXIsIFRjbEVycm9yICAjICxUaywgVGV4dAogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZSBhcyBzZQogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dCBhcyBtb2NrVGV4dAogCkBAIC0xMzksMTAgKzEzOSwxMCBAQAogCiAgICAgZGVmIHRlc3Rfc2V0Y29va2VkcGF0KHNlbGYpOgogICAgICAgICBlbmdpbmUgPSBzZWxmLmVuZ2luZQotICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KCdccycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5naW5lLmdldHBhdCgpLCAnXHMnKQorICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KHInXHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgcidccycpCiAgICAgICAgIGVuZ2luZS5yZXZhci5zZXQoMSkKLSAgICAgICAgZW5naW5lLnNldGNvb2tlZHBhdCgnXHMnKQorICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KHInXHMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuZ2luZS5nZXRwYXQoKSwgcidcXHMnKQogCiAgICAgZGVmIHRlc3RfZ2V0Y29va2VkcGF0KHNlbGYpOgpAQCAtMTU2LDEwICsxNTYsMTAgQEAKICAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xiaGVsbG9cYicpCiAgICAgICAgIGVuZ2luZS53b3JkdmFyLnNldChGYWxzZSkKIAotICAgICAgICBlbmdpbmUuc2V0cGF0KCdccycpCisgICAgICAgIGVuZ2luZS5zZXRwYXQocidccycpCiAgICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgcidcXHMnKQogICAgICAgICBlbmdpbmUucmV2YXIuc2V0KFRydWUpCi0gICAgICAgIEVxdWFsKGVuZ2luZS5nZXRjb29rZWRwYXQoKSwgJ1xzJykKKyAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xzJykKIAogICAgIGRlZiB0ZXN0X2dldHByb2coc2VsZik6CiAgICAgICAgIGVuZ2luZSA9IHNlbGYuZW5naW5lCkBAIC0yODIsNyArMjgyLDcgQEAKICAgICAgICAgY2xzLnBhdCA9IHJlLmNvbXBpbGUoJ3RhcmdldCcpCiAgICAgICAgIGNscy5yZXMgPSAoMiwgKDEwLCAxNikpICAjIGxpbmUsIHNsaWNlIGluZGV4ZXMgb2YgJ3RhcmdldCcKICAgICAgICAgY2xzLmZhaWxwYXQgPSByZS5jb21waWxlKCd4eXonKSAgIyBub3QgaW4gdGV4dAotICAgICAgICBjbHMuZW1wdHlwYXQgPSByZS5jb21waWxlKCdcdyonKSAgIyBlbXB0eSBtYXRjaCBwb3NzaWJsZQorICAgICAgICBjbHMuZW1wdHlwYXQgPSByZS5jb21waWxlKHInXHcqJykgICMgZW1wdHkgbWF0Y2ggcG9zc2libGUKIAogICAgIGRlZiBtYWtlX3NlYXJjaChzZWxmLCBmdW5jKToKICAgICAgICAgZGVmIHNlYXJjaChwYXQsIGxpbmUsIGNvbCwgd3JhcCwgb2s9MCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weQppbmRleCA3ZTgyM2RmLi5hNWJhN2JiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkKQEAgLTEsMTcgKzEsMTkgQEAKLSMgVGVzdCBtb2NrX3RrLlRleHQgY2xhc3MgYWdhaW5zdCB0a2ludGVyLlRleHQgY2xhc3MgYnkgcnVubmluZyBzYW1lIHRlc3RzIHdpdGggYm90aC4KKycnJyBUZXN0IG1vY2tfdGsuVGV4dCBjbGFzcyBhZ2FpbnN0IHRraW50ZXIuVGV4dCBjbGFzcworCitSdW4gc2FtZSB0ZXN0cyB3aXRoIGJvdGggYnkgY3JlYXRpbmcgYSBtaXhpbiBjbGFzcy4KKycnJwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKLQogZnJvbSBfdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIAogY2xhc3MgVGV4dFRlc3Qob2JqZWN0KToKKyAgICAiRGVmaW5lIGl0ZW1zIGNvbW1vbiB0byBib3RoIHNldHMgb2YgdGVzdHMuIgogCi0gICAgaHcgPSAnaGVsbG9cbndvcmxkJyAgIyB1c3VhbCBpbml0aWFsIGluc2VydCBhZnRlciBpbml0aWFsaXphdGlvbgorICAgIGh3ID0gJ2hlbGxvXG53b3JsZCcgICMgU2V2ZXJhbCB0ZXN0cyBpbnNlcnQgdGhpcyBhZnRlciBhZnRlciBpbml0aWFsaXphdGlvbi4KICAgICBod24gPSBodysnXG4nICAjIFxuIHByZXNlbnQgYXQgaW5pdGlhbGl6YXRpb24sIGJlZm9yZSBpbnNlcnQKIAotICAgIFRleHQgPSBOb25lCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoKQorICAgICMgc2V0VXBDbGFzcyBkZWZpbmVzIGNscy5UZXh0IGFuZCBtYXliZSBjbHMucm9vdC4KKyAgICAjIHNldFVwIGRlZmluZXMgc2VsZi50ZXh0IGZyb20gVGV4dCBhbmQgbWF5YmUgcm9vdC4KIAogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0LmdldCgnMS4wJyksICdcbicpCkBAIC0xOTYsNiArMTk4LDEwIEBACiAgICAgICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVGV4dAogICAgICAgICBjbHMuVGV4dCA9IFRleHQKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZXh0ID0gc2VsZi5UZXh0KCkKKworCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgogICAgICAgICAjIHRlc3QgZW5kZmxhZ3MgKC0xLCAwKSBub3QgdGVzdGVkIGJ5IHRlc3RfaW5kZXggKHdoaWNoIHVzZXMgKzEpCiAgICAgICAgIGRlY29kZSA9IHNlbGYudGV4dC5fZGVjb2RlCkBAIC0yMjIsNiArMjI4LDkgQEAKICAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCiAgICAgICAgIGRlbCBjbHMucm9vdAogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoc2VsZi5yb290KQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHR2aWV3LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKaW5kZXggNWQyZTYwMC4uZjAxOGY1ZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkKQEAgLTEsMjEgKzEsMjEgQEAKLScnJ1Rlc3QgaWRsZWxpYi50ZXh0Vmlldy4KKycnJ1Rlc3QgaWRsZWxpYi50ZXh0dmlldy4KIAogU2luY2UgYWxsIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBjcmVhdGUgKG9yIGRlc3Ryb3kpIGEgVGV4dFZpZXdlciwgd2hpY2gKIGlzIGEgd2lkZ2V0IGNvbnRhaW5pbmcgbXVsdGlwbGUgd2lkZ2V0cywgYWxsIHRlc3RzIG11c3QgYmUgZ3VpIHRlc3RzLgogVXNpbmcgbW9jayBUZXh0IHdvdWxkIG5vdCBjaGFuZ2UgdGhpcy4gIE90aGVyIG1vY2tzIGFyZSB1c2VkIHRvIHJldHJpZXZlCiBpbmZvcm1hdGlvbiBhYm91dCBjYWxscy4KIAotVGhlIGNvdmVyYWdlIGlzIGVzc2VudGlhbGx5IDEwMCUuCitDb3ZlcmFnZTogOTQlLgogJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRleHR2aWV3IGFzIHR2CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogZnJvbSB0a2ludGVyIGltcG9ydCBUawotZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0VmlldyBhcyB0dgogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKLWZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgTWJveAorZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94X2Z1bmMKIAogZGVmIHNldFVwTW9kdWxlKCk6CiAgICAgZ2xvYmFsIHJvb3QKQEAgLTY0LDE3ICs2NCwxNyBAQAogICAgICAgICB2aWV3LmRlc3Ryb3koKQogCiAKLWNsYXNzIHRleHR2aWV3VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBWaWV3RnVuY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5vcmlnX21ib3ggPSB0di50a01lc3NhZ2VCb3gKLSAgICAgICAgdHYudGtNZXNzYWdlQm94ID0gTWJveAorICAgICAgICBjbHMub3JpZ19lcnJvciA9IHR2LnNob3dlcnJvcgorICAgICAgICB0di5zaG93ZXJyb3IgPSBNYm94X2Z1bmMoKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgdHYudGtNZXNzYWdlQm94ID0gY2xzLm9yaWdfbWJveAotICAgICAgICBkZWwgY2xzLm9yaWdfbWJveAorICAgICAgICB0di5zaG93ZXJyb3IgPSBjbHMub3JpZ19lcnJvcgorICAgICAgICBkZWwgY2xzLm9yaWdfZXJyb3IKIAogICAgIGRlZiB0ZXN0X3ZpZXdfdGV4dChzZWxmKToKICAgICAgICAgIyBJZiBtb2RhbCBUcnVlLCBnZXQgdGsgZXJyb3IgJ2Nhbid0IGludm9rZSAiZXZlbnQiIGNvbW1hbmQnLgpAQCAtOTAsNyArOTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdUZXN0Jywgdmlldy50ZXh0Vmlldy5nZXQoJzEuMCcsICcxLmVuZCcpKQogICAgICAgICB2aWV3Lk9rKCkKIAotICAgICAgICAjIE1vY2sgbWVzc2FnZWJveCB3aWxsIGJlIHVzZWQgYW5kIHZpZXdfZmlsZSB3aWxsIG5vdCByZXR1cm4gYW55dGhpbmcKKyAgICAgICAgIyBNb2NrIHNob3dlcnJvciB3aWxsIGJlIHVzZWQ7IHZpZXdfZmlsZSB3aWxsIHJldHVybiBOb25lLgogICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJy4uL25vdHRoZXJlLnB5JykKICAgICAgICAgdmlldyA9IHR2LnZpZXdfZmlsZShyb290LCAnVGl0bGUnLCB0ZXN0ZmlsZSwgbW9kYWw9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHZpZXcpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90cmVlLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWJhOTY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdHJlZS5weQpAQCAtMCwwICsxLDM2IEBACisnJycgVGVzdCBpZGxlbGliLnRyZWUuCisKK0NvdmVyYWdlOiA1NiUKKycnJworZnJvbSBpZGxlbGliIGltcG9ydCB0cmVlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQoraW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKKworCitjbGFzcyBUcmVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIyBTdGFydCB3aXRoIGNvZGUgc2xpZ2h0bHkgYWRhcHRlZCBmcm9tIGh0ZXN0LgorICAgICAgICBzYyA9IHRyZWUuU2Nyb2xsZWRDYW52YXMoCisgICAgICAgICAgICBzZWxmLnJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKKyAgICAgICAgc2MuZnJhbWUucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIsIHNpZGU9J2xlZnQnKQorICAgICAgICBpdGVtID0gdHJlZS5GaWxlVHJlZUl0ZW0odHJlZS5JQ09ORElSKQorICAgICAgICBub2RlID0gdHJlZS5UcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCisgICAgICAgIG5vZGUuZXhwYW5kKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvZGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvLnB5CmluZGV4IDJiODNjOTkuLmU4NzI5MjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG9kZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kby5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIlVuaXR0ZXN0IGZvciBVbmRvRGVsZWdhdG9yIGluIGlkbGVsaWIuVW5kb0RlbGVnYXRvci4KKyIiIlVuaXR0ZXN0IGZvciBVbmRvRGVsZWdhdG9yIGluIGlkbGVsaWIudW5kby5weS4KIAogQ292ZXJhZ2UgYWJvdXQgODAlIChyZXRlc3QpLgogIiIiCkBAIC04LDggKzgsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGsKLWZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCiAKIAogY2xhc3MgVW5kb0RlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjksOCArMjksOCBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmRlbGVnYXRvciA9IFVuZG9EZWxlZ2F0b3IoKQorICAgICAgICBzZWxmLmRlbGVnYXRvci5iZWxsID0gTW9jaygpCiAgICAgICAgIHNlbGYucGVyY29sYXRvci5pbnNlcnRmaWx0ZXIoc2VsZi5kZWxlZ2F0b3IpCi0gICAgICAgIHNlbGYuZGVsZWdhdG9yLmJlbGwgPSBNb2NrKHdyYXBzPXNlbGYuZGVsZWdhdG9yLmJlbGwpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYucGVyY29sYXRvci5yZW1vdmVmaWx0ZXIoc2VsZi5kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weQppbmRleCAxODYyN2RkLi5mMzI2OWYxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkKQEAgLTEsNCArMSw0IEBACi0nJydUZXN0IHdhcm5pbmdzIHJlcGxhY2VtZW50IGluIFB5U2hlbGwucHkgYW5kIHJ1bi5weS4KKycnJ1Rlc3Qgd2FybmluZ3MgcmVwbGFjZW1lbnQgaW4gcHlzaGVsbC5weSBhbmQgcnVuLnB5LgogCiBUaGlzIGZpbGUgY291bGQgYmUgZXhwYW5kZWQgdG8gaW5jbHVkZSB0cmFjZWJhY2sgb3ZlcnJpZGVzCiAoaW4gc2FtZSB0d28gbW9kdWxlcykuIElmIHNvLCBjaGFuZ2UgbmFtZS4KQEAgLTE3LDkgKzE3LDkgQEAKIHJ1bm5pbmdfaW5faWRsZSA9ICdpZGxlJyBpbiBzaG93d2FybmluZy5fX25hbWVfXwogCiBmcm9tIGlkbGVsaWIgaW1wb3J0IHJ1bgotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsIGFzIHNoZWxsCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwgYXMgc2hlbGwKIAotIyBUaGUgZm9sbG93aW5nIHdhcyBnZW5lcmF0ZWQgZnJvbSBQeVNoZWxsLmlkbGVfZm9ybWF0d2FybmluZworIyBUaGUgZm9sbG93aW5nIHdhcyBnZW5lcmF0ZWQgZnJvbSBweXNoZWxsLmlkbGVfZm9ybWF0d2FybmluZwogIyBhbmQgY2hlY2tlZCBhcyBtYXRjaGluZyBleHBlY3RhdGlvbi4KIGlkbGVtc2cgPSAnJycKIFdhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTlmNjlhLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0iIiIKLVRoZSBzZXBhcmF0ZSBJZGxlIHZlcnNpb24gd2FzIGVsaW1pbmF0ZWQgeWVhcnMgYWdvOwotaWRsZWxpYi5pZGxldmVyIGlzIG5vIGxvbmdlciB1c2VkIGJ5IElkbGUKLWFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42IG9yIGxhdGVyLiAgVXNlCi0gICAgZnJvbSBzeXMgaW1wb3J0IHZlcnNpb24KLSAgICBJRExFX1ZFUlNJT04gPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldCi0iIiIKLSMgS2VwdCBmb3Igbm93IG9ubHkgZm9yIHBvc3NpYmxlIGV4aXN0aW5nIGV4dGVuc2lvbiB1c2UKLWltcG9ydCB3YXJuaW5ncyBhcyB3Ci13Lndhcm4oX19kb2NfXywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi1mcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgotSURMRV9WRVJTSU9OID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5IGIvTGliL2lkbGVsaWIvaW9tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0lPQmluZGluZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaW9tZW51LnB5CmluZGV4IDg0ZjM5YTIuLjM0MTRjN2IgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9pb21lbnUucHkKQEAgLTEwLDU3ICsxMCw2MCBAQAogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIGZyb20gdGtpbnRlci5zaW1wbGVkaWFsb2cgaW1wb3J0IGFza3N0cmluZwogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2ltcG9ydCBpZGxlbGliCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCi0KLSMgVHJ5IHNldHRpbmcgdGhlIGxvY2FsZSwgc28gdGhhdCB3ZSBjYW4gZmluZCBvdXQKLSMgd2hhdCBlbmNvZGluZyB0byB1c2UKLXRyeToKLSAgICBpbXBvcnQgbG9jYWxlCi0gICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUsICIiKQotZXhjZXB0IChJbXBvcnRFcnJvciwgbG9jYWxlLkVycm9yKToKLSAgICBwYXNzCi0KLSMgRW5jb2RpbmcgZm9yIGZpbGUgbmFtZXMKLWZpbGVzeXN0ZW1lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAgIyMjIGN1cnJlbnRseSB1bnVzZWQKLQotbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwotaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgIyBPbiBXaW5kb3dzLCB3ZSBjb3VsZCB1c2UgIm1iY3MiLiBIb3dldmVyLCB0byBnaXZlIHRoZSB1c2VyCi0gICAgIyBhIHBvcnRhYmxlIGVuY29kaW5nIG5hbWUsIHdlIG5lZWQgdG8gZmluZCB0aGUgY29kZSBwYWdlCi0gICAgdHJ5OgotICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0ZGVmYXVsdGxvY2FsZSgpWzFdCi0gICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQotICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKLSAgICAgICAgcGFzcworaWYgaWRsZWxpYi50ZXN0aW5nOiAgIyBTZXQgVHJ1ZSBieSB0ZXN0LnRlc3RfaWRsZSB0byBhdm9pZCBzZXRsb2NhbGUuCisgICAgZW5jb2RpbmcgPSAndXRmLTgnCiBlbHNlOgorICAgICMgVHJ5IHNldHRpbmcgdGhlIGxvY2FsZSwgc28gdGhhdCB3ZSBjYW4gZmluZCBvdXQKKyAgICAjIHdoYXQgZW5jb2RpbmcgdG8gdXNlCiAgICAgdHJ5OgotICAgICAgICAjIERpZmZlcmVudCB0aGluZ3MgY2FuIGZhaWwgaGVyZTogdGhlIGxvY2FsZSBtb2R1bGUgbWF5IG5vdCBiZQotICAgICAgICAjIGxvYWRlZCwgaXQgbWF5IG5vdCBvZmZlciBubF9sYW5naW5mbywgb3IgQ09ERVNFVCwgb3IgdGhlCi0gICAgICAgICMgcmVzdWx0aW5nIGNvZGVzZXQgbWF5IGJlIHVua25vd24gdG8gUHl0aG9uLiBXZSBpZ25vcmUgYWxsCi0gICAgICAgICMgdGhlc2UgcHJvYmxlbXMsIGZhbGxpbmcgYmFjayB0byBBU0NJSQotICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUubmxfbGFuZ2luZm8obG9jYWxlLkNPREVTRVQpCi0gICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKLSAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycyBvbiBNYWMgT1MgWAotICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJwotICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICBleGNlcHQgKE5hbWVFcnJvciwgQXR0cmlidXRlRXJyb3IsIExvb2t1cEVycm9yKToKLSAgICAgICAgIyBUcnkgZ2V0ZGVmYXVsdGxvY2FsZTogaXQgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcywKLSAgICAgICAgIyB3aGljaCBtYXkgZ2l2ZSBhIGNsdWUuIFVuZm9ydHVuYXRlbHksIGdldGRlZmF1bHRsb2NhbGUgaGFzCi0gICAgICAgICMgYnVncyB0aGF0IGNhbiBjYXVzZSBWYWx1ZUVycm9yLgorICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFLCAiIikKKyAgICBleGNlcHQgKEltcG9ydEVycm9yLCBsb2NhbGUuRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICBsb2NhbGVfZGVjb2RlID0gJ2FzY2lpJworICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAjIE9uIFdpbmRvd3MsIHdlIGNvdWxkIHVzZSAibWJjcyIuIEhvd2V2ZXIsIHRvIGdpdmUgdGhlIHVzZXIKKyAgICAgICAgIyBhIHBvcnRhYmxlIGVuY29kaW5nIG5hbWUsIHdlIG5lZWQgdG8gZmluZCB0aGUgY29kZSBwYWdlCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKClbMV0KKyAgICAgICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQorICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBEaWZmZXJlbnQgdGhpbmdzIGNhbiBmYWlsIGhlcmU6IHRoZSBsb2NhbGUgbW9kdWxlIG1heSBub3QgYmUKKyAgICAgICAgICAgICMgbG9hZGVkLCBpdCBtYXkgbm90IG9mZmVyIG5sX2xhbmdpbmZvLCBvciBDT0RFU0VULCBvciB0aGUKKyAgICAgICAgICAgICMgcmVzdWx0aW5nIGNvZGVzZXQgbWF5IGJlIHVua25vd24gdG8gUHl0aG9uLiBXZSBpZ25vcmUgYWxsCisgICAgICAgICAgICAjIHRoZXNlIHByb2JsZW1zLCBmYWxsaW5nIGJhY2sgdG8gQVNDSUkKKyAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5ubF9sYW5naW5mbyhsb2NhbGUuQ09ERVNFVCkKICAgICAgICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKICAgICAgICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnMgb24gTWFjIE9TIFgKICAgICAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCiAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgIGV4Y2VwdCAoTmFtZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgIyBUcnkgZ2V0ZGVmYXVsdGxvY2FsZTogaXQgcGFyc2VzIGVudmlyb25tZW50IHZhcmlhYmxlcywKKyAgICAgICAgICAgICMgd2hpY2ggbWF5IGdpdmUgYSBjbHVlLiBVbmZvcnR1bmF0ZWx5LCBnZXRkZWZhdWx0bG9jYWxlIGhhcworICAgICAgICAgICAgIyBidWdzIHRoYXQgY2FuIGNhdXNlIFZhbHVlRXJyb3IuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldGRlZmF1bHRsb2NhbGUoKVsxXQorICAgICAgICAgICAgICAgIGlmIGxvY2FsZV9lbmNvZGluZyBpcyBOb25lIG9yIGxvY2FsZV9lbmNvZGluZyBpcyAnJzoKKyAgICAgICAgICAgICAgICAgICAgIyBzaXR1YXRpb24gb2NjdXJzIG9uIE1hYyBPUyBYCisgICAgICAgICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKKyAgICAgICAgICAgICAgICBjb2RlY3MubG9va3VwKGxvY2FsZV9lbmNvZGluZykKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgTG9va3VwRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKIAotbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nLmxvd2VyKCkKKyAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcubG93ZXIoKQogCi1lbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZyAgIyMjIEtCSyAwN1NlcDA3ICBUaGlzIGlzIHVzZWQgYWxsIG92ZXIgSURMRSwgY2hlY2shCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjICdlbmNvZGluZycgaXMgdXNlZCBiZWxvdyBpbiBlbmNvZGUoKSwgY2hlY2shCisgICAgZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcKKyAgICAjIEVuY29kaW5nIGlzIHVzZWQgaW4gbXVsdGlwbGUgZmlsZXM7IGxvY2FsZV9lbmNvZGluZyBub3doZXJlLgorICAgICMgVGhlIG9ubHkgdXNlIG9mICdlbmNvZGluZycgYmVsb3cgaXMgaW4gX2RlY29kZSBhcyBpbml0aWFsIHZhbHVlCisgICAgIyBvZiBkZXByZWNhdGVkIGJsb2NrIGFza2luZyB1c2VyIGZvciBlbmNvZGluZy4KKyAgICAjIFBlcmhhcHMgdXNlIGVsc2V3aGVyZSBzaG91bGQgYmUgcmV2aWV3ZWQuCiAKIGNvZGluZ19yZSA9IHJlLmNvbXBpbGUocideWyBcdFxmXSojLio/Y29kaW5nWzo9XVsgXHRdKihbLVx3Ll0rKScsIHJlLkFTQ0lJKQogYmxhbmtfcmUgPSByZS5jb21waWxlKHInXlsgXHRcZl0qKD86WyNcclxuXXwkKScsIHJlLkFTQ0lJKQpAQCAtMTA3LDYgKzExMCw5IEBACiAKIAogY2xhc3MgSU9CaW5kaW5nOgorIyBPbmUgaW5zdGFuY2UgcGVyIGVkaXRvciBXaW5kb3cgc28gbWV0aG9kcyBrbm93IHdoaWNoIHRvIHNhdmUsIGNsb3NlLgorIyBPcGVuIHJldHVybnMgZm9jdXMgdG8gc2VsZi5lZGl0d2luIGlmIGFib3J0ZWQuCisjIEVkaXRvcldpbmRvdy5vcGVuX21vZHVsZSwgb3RoZXJzLCBiZWxvbmcgaGVyZS4KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgpAQCAtMzAxLDcgKzMwNyw3IEBACiAgICAgICAgICAgICAgICAgIlRoZSBmaWxlJ3MgZW5jb2RpbmcgaXMgaW52YWxpZCBmb3IgUHl0aG9uIDMueC5cbiIKICAgICAgICAgICAgICAgICAiSURMRSB3aWxsIGNvbnZlcnQgaXQgdG8gVVRGLTguXG4iCiAgICAgICAgICAgICAgICAgIldoYXQgaXMgdGhlIGN1cnJlbnQgZW5jb2Rpbmcgb2YgdGhlIGZpbGU/IiwKLSAgICAgICAgICAgICAgICBpbml0aWFsdmFsdWUgPSBsb2NhbGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgaW5pdGlhbHZhbHVlID0gZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgcGFyZW50ID0gc2VsZi5lZGl0d2luLnRleHQpCiAKICAgICAgICAgICAgIGlmIGVuYzoKQEAgLTUyOSw4ICs1MzUsOCBAQAogCiAgICAgcm9vdCA9IFRvcGxldmVsKHBhcmVudCkKICAgICByb290LnRpdGxlKCJUZXN0IElPQmluZGluZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIGNsYXNzIE15RWRpdFdpbjoKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQpOgogICAgICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dApAQCAtNTYxLDUgKzU2Nyw4IEBACiAgICAgSU9CaW5kaW5nKGVkaXR3aW4pCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9pb21lbnUnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfaW9fYmluZGluZykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkgYi9MaWIvaWRsZWxpYi9tYWNvc3gucHkKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvbWFjb3N4LnB5CmluZGV4IGI5NmJhZTEuLmMyMjVkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKKysrIGIvTGliL2lkbGVsaWIvbWFjb3N4LnB5CkBAIC0xLDMwICsxLDI1IEBACiAiIiIKIEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyB0aGF0IGVuaGFuY2UgSURMRSBvbiBNYWMgT1NYLgogIiIiCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGtpbnRlcgotZnJvbSBvcyBpbXBvcnQgcGF0aAorZnJvbSBzeXMgaW1wb3J0IHBsYXRmb3JtICAjIFVzZWQgaW4gX2luaXRfdGtfdHlwZSwgY2hhbmdlZCBieSB0ZXN0LgogaW1wb3J0IHdhcm5pbmdzCiAKLWRlZiBydW5uaW5nQXNPU1hBcHAoKToKLSAgICB3YXJuaW5ncy53YXJuKCJydW5uaW5nQXNPU1hBcHAoKSBpcyBkZXByZWNhdGVkLCB1c2UgaXNBcXVhVGsoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gaXNBcXVhVGsoKQoraW1wb3J0IHRraW50ZXIKIAotZGVmIGlzQ2FyYm9uQXF1YVRrKHJvb3QpOgotICAgIHdhcm5pbmdzLndhcm4oImlzQ2FyYm9uQXF1YVRrKHJvb3QpIGlzIGRlcHJlY2F0ZWQsIHVzZSBpc0NhcmJvblRrKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuIGlzQ2FyYm9uVGsoKQorCisjIyBEZWZpbmUgZnVuY3Rpb25zIHRoYXQgcXVlcnkgdGhlIE1hYyBncmFwaGljcyB0eXBlLgorIyMgX3RrX3R5cGUgYW5kIGl0cyBpbml0aWFsaXplciBhcmUgcHJpdmF0ZSB0byB0aGlzIHNlY3Rpb24uCiAKIF90a190eXBlID0gTm9uZQogCi1kZWYgX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cyhyb290KToKK2RlZiBfaW5pdF90a190eXBlKCk6CiAgICAgIiIiCiAgICAgSW5pdGlhbGl6ZXMgT1MgWCBUayB2YXJpYW50IHZhbHVlcyBmb3IKICAgICBpc0FxdWFUaygpLCBpc0NhcmJvblRrKCksIGlzQ29jb2FUaygpLCBhbmQgaXNYUXVhcnR6KCkuCiAgICAgIiIiCiAgICAgZ2xvYmFsIF90a190eXBlCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICByb290ID0gdGtpbnRlci5UaygpCiAgICAgICAgIHdzID0gcm9vdC50ay5jYWxsKCd0aycsICd3aW5kb3dpbmdzeXN0ZW0nKQogICAgICAgICBpZiAneDExJyBpbiB3czoKICAgICAgICAgICAgIF90a190eXBlID0gInhxdWFydHoiCkBAIC0zNCw2ICsyOSw3IEBACiAgICAgICAgICAgICBfdGtfdHlwZSA9ICJjb2NvYSIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF90a190eXBlID0gImNhcmJvbiIKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKICAgICBlbHNlOgogICAgICAgICBfdGtfdHlwZSA9ICJvdGhlciIKIApAQCAtNDEsNyArMzcsOCBAQAogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGEgbmF0aXZlIE9TIFggVGsgKENvY29hIG9yIENhcmJvbikuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gImNvY29hIiBvciBfdGtfdHlwZSA9PSAiY2FyYm9uIgogCiBkZWYgaXNDYXJib25UaygpOgpAQCAtNDksMjMgKzQ2LDI3IEBACiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBDYXJib24gQXF1YSBUayAoaW5zdGVhZCBvZiB0aGUKICAgICBuZXdlciBDb2NvYSBBcXVhIFRrKS4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAiY2FyYm9uIgogCiBkZWYgaXNDb2NvYVRrKCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBDb2NvYSBBcXVhIFRrLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJjb2NvYSIKIAogZGVmIGlzWFF1YXJ0eigpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBJRExFIGlzIHVzaW5nIGFuIE9TIFggWDExIFRrLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJ4cXVhcnR6IgogCisKIGRlZiB0a1ZlcnNpb25XYXJuaW5nKHJvb3QpOgogICAgICIiIgogICAgIFJldHVybnMgYSBzdHJpbmcgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBUayB2ZXJzaW9uIGluIHVzZSBhcHBlYXJzIHRvCkBAIC04Niw2ICs4Nyw5IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKworIyMgRml4IHRoZSBtZW51IGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KKwogZGVmIGFkZE9wZW5FdmVudFN1cHBvcnQocm9vdCwgZmxpc3QpOgogICAgICIiIgogICAgIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlc3BvbmQgdG8gb3BlbiBBcHBsZUV2ZW50cywgd2hpY2gKQEAgLTEyNCwyMyArMTI4LDIzIEBACiAgICAgIyBEdWUgdG8gYSAobWlzLSlmZWF0dXJlIG9mIFRrQXF1YSB0aGUgdXNlciB3aWxsIGFsc28gc2VlIGFuIGVtcHR5IEhlbHAKICAgICAjIG1lbnUuCiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBNZW51Ci0gICAgZnJvbSBpZGxlbGliIGltcG9ydCBCaW5kaW5ncwotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgV2luZG93TGlzdAorICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgbWFpbm1lbnUKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHdpbmRvd3MKIAotICAgIGNsb3NlSXRlbSA9IEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdWy0yXQorICAgIGNsb3NlSXRlbSA9IG1haW5tZW51Lm1lbnVkZWZzWzBdWzFdWy0yXQogCiAgICAgIyBSZW1vdmUgdGhlIGxhc3QgMyBpdGVtcyBvZiB0aGUgZmlsZSBtZW51OiBhIHNlcGFyYXRvciwgY2xvc2Ugd2luZG93IGFuZAogICAgICMgcXVpdC4gQ2xvc2Ugd2luZG93IHdpbGwgYmUgcmVpbnNlcnRlZCBqdXN0IGFib3ZlIHRoZSBzYXZlIGl0ZW0sIHdoZXJlCiAgICAgIyBpdCBzaG91bGQgYmUgYWNjb3JkaW5nIHRvIHRoZSBISUcuIFF1aXQgaXMgaW4gdGhlIGFwcGxpY2F0aW9uIG1lbnUuCi0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdWy0zOl0KLSAgICBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXS5pbnNlcnQoNiwgY2xvc2VJdGVtKQorICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1swXVsxXVstMzpdCisgICAgbWFpbm1lbnUubWVudWRlZnNbMF1bMV0uaW5zZXJ0KDYsIGNsb3NlSXRlbSkKIAogICAgICMgUmVtb3ZlIHRoZSAnQWJvdXQnIGVudHJ5IGZyb20gdGhlIGhlbHAgbWVudSwgaXQgaXMgaW4gdGhlIGFwcGxpY2F0aW9uCiAgICAgIyBtZW51Ci0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWy0xXVsxXVswOjJdCisgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWy0xXVsxXVswOjJdCiAgICAgIyBSZW1vdmUgdGhlICdDb25maWd1cmUgSWRsZScgZW50cnkgZnJvbSB0aGUgb3B0aW9ucyBtZW51LCBpdCBpcyBpbiB0aGUKICAgICAjIGFwcGxpY2F0aW9uIG1lbnUgYXMgJ1ByZWZlcmVuY2VzJwotICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1stMl1bMV1bMF0KKyAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbLTJdWzFdWzBdCiAgICAgbWVudWJhciA9IE1lbnUocm9vdCkKICAgICByb290LmNvbmZpZ3VyZShtZW51PW1lbnViYXIpCiAgICAgbWVudWRpY3QgPSB7fQpAQCAtMTU1LDMwICsxNTksMzAgQEAKIAogICAgICAgICBpZiBlbmQgPiAwOgogICAgICAgICAgICAgbWVudS5kZWxldGUoMCwgZW5kKQotICAgICAgICBXaW5kb3dMaXN0LmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKLSAgICBXaW5kb3dMaXN0LnJlZ2lzdGVyX2NhbGxiYWNrKHBvc3R3aW5kb3dzbWVudSkKKyAgICAgICAgd2luZG93cy5hZGRfd2luZG93c190b19tZW51KG1lbnUpCisgICAgd2luZG93cy5yZWdpc3Rlcl9jYWxsYmFjayhwb3N0d2luZG93c21lbnUpCiAKICAgICBkZWYgYWJvdXRfZGlhbG9nKGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0Fib3V0IElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cuYWJvdXRfZGlhbG9nLgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nCi0gICAgICAgIGFib3V0RGlhbG9nLkFib3V0RGlhbG9nKHJvb3QsICdBYm91dCBJRExFJykKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIGVkaXRvci5FZGl0b3JXaW5kb3cuYWJvdXRfZGlhbG9nLgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHBfYWJvdXQKKyAgICAgICAgaGVscF9hYm91dC5BYm91dERpYWxvZyhyb290LCAnQWJvdXQgSURMRScpCiAKICAgICBkZWYgY29uZmlnX2RpYWxvZyhldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBPcHRpb25zICdDb25maWd1cmUgSURMRScgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdy5jb25maWdfZGlhbG9nLgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ0RpYWxvZworICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5jb25maWdfZGlhbG9nLgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ2RpYWxvZwogCiAgICAgICAgICMgRW5zdXJlIHRoYXQgdGhlIHJvb3Qgb2JqZWN0IGhhcyBhbiBpbnN0YW5jZV9kaWN0IGF0dHJpYnV0ZSwKICAgICAgICAgIyBtaXJyb3JzIGNvZGUgaW4gRWRpdG9yV2luZG93IChhbHRob3VnaCB0aGF0IHNldHMgdGhlIGF0dHJpYnV0ZQogICAgICAgICAjIG9uIGFuIEVkaXRvcldpbmRvdyBpbnN0YW5jZSB0aGF0IGlzIHRoZW4gcGFzc2VkIGFzIHRoZSBmaXJzdAogICAgICAgICAjIGFyZ3VtZW50IHRvIENvbmZpZ0RpYWxvZykKICAgICAgICAgcm9vdC5pbnN0YW5jZV9kaWN0ID0gZmxpc3QuaW52ZXJzZWRpY3QKLSAgICAgICAgY29uZmlnRGlhbG9nLkNvbmZpZ0RpYWxvZyhyb290LCAnU2V0dGluZ3MnKQorICAgICAgICBjb25maWdkaWFsb2cuQ29uZmlnRGlhbG9nKHJvb3QsICdTZXR0aW5ncycpCiAKICAgICBkZWYgaGVscF9kaWFsb2coZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnSURMRSBIZWxwJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93LmhlbHBfZGlhbG9nLgorICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KICAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwCiAgICAgICAgIGhlbHAuc2hvd19pZGxlaGVscChyb290KQogCkBAIC0xOTgsMjkgKzIwMiwzMyBAQAogICAgICAgICBtZW51ZGljdFsnYXBwbGljYXRpb24nXSA9IG1lbnUgPSBNZW51KG1lbnViYXIsIG5hbWU9J2FwcGxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZWFyb2ZmPTApCiAgICAgICAgIG1lbnViYXIuYWRkX2Nhc2NhZGUobGFiZWw9J0lETEUnLCBtZW51PW1lbnUpCi0gICAgICAgIEJpbmRpbmdzLm1lbnVkZWZzLmluc2VydCgwLAorICAgICAgICBtYWlubWVudS5tZW51ZGVmcy5pbnNlcnQoMCwKICAgICAgICAgICAgICgnYXBwbGljYXRpb24nLCBbCiAgICAgICAgICAgICAgICAgKCdBYm91dCBJRExFJywgJzw8YWJvdXQtaWRsZT4+JyksCiAgICAgICAgICAgICAgICAgICAgIE5vbmUsCiAgICAgICAgICAgICAgICAgXSkpCi0gICAgICAgIHRrdmVyc2lvbiA9IHJvb3QudGsuZXZhbCgnaW5mbyBwYXRjaGxldmVsJykKLSAgICAgICAgaWYgdHVwbGUobWFwKGludCwgdGt2ZXJzaW9uLnNwbGl0KCcuJykpKSA8ICg4LCA0LCAxNCk6Ci0gICAgICAgICAgICAjIGZvciBlYXJsaWVyIEFxdWFUayB2ZXJzaW9ucywgc3VwcGx5IGEgUHJlZmVyZW5jZXMgbWVudSBpdGVtCi0gICAgICAgICAgICBCaW5kaW5ncy5tZW51ZGVmc1swXVsxXS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgICAgICgnX1ByZWZlcmVuY2VzLi4uLicsICc8PG9wZW4tY29uZmlnLWRpYWxvZz4+JyksCi0gICAgICAgICAgICAgICAgKQogICAgIGlmIGlzQ29jb2FUaygpOgogICAgICAgICAjIHJlcGxhY2UgZGVmYXVsdCBBYm91dCBkaWFsb2cgd2l0aCBBYm91dCBJRExFIG9uZQogICAgICAgICByb290LmNyZWF0ZWNvbW1hbmQoJ3RrQWJvdXREaWFsb2cnLCBhYm91dF9kaWFsb2cpCiAgICAgICAgICMgcmVwbGFjZSBkZWZhdWx0ICJIZWxwIiBpdGVtIGluIEhlbHAgbWVudQogICAgICAgICByb290LmNyZWF0ZWNvbW1hbmQoJzo6dGs6Om1hYzo6U2hvd0hlbHAnLCBoZWxwX2RpYWxvZykKICAgICAgICAgIyByZW1vdmUgcmVkdW5kYW50ICJJRExFIEhlbHAiIGZyb20gbWVudQotICAgICAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbLTFdWzFdWzBdCisgICAgICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1stMV1bMV1bMF0KKworZGVmIGZpeGIyY29udGV4dChyb290KToKKyAgICAnJydSZW1vdmVkIGJhZCBBcXVhVGsgQnV0dG9uLTIgKHJpZ2h0KSBhbmQgUGFzdGUgYmluZGluZ3MuCisKKyAgICBUaGV5IHByZXZlbnQgY29udGV4dCBtZW51IGFjY2VzcyBhbmQgc2VlbSB0byBiZSBnb25lIGluIEFxdWFUazguNi4KKyAgICBTZWUgaXNzdWUgIzI0ODAxLgorICAgICcnJworICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMj4nKQorICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMi1Nb3Rpb24+JykKKyAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8PFBhc3RlU2VsZWN0aW9uPj4nKQogCiBkZWYgc2V0dXBBcHAocm9vdCwgZmxpc3QpOgogICAgICIiIgogICAgIFBlcmZvcm0gaW5pdGlhbCBPUyBYIGN1c3RvbWl6YXRpb25zIGlmIG5lZWRlZC4KLSAgICBDYWxsZWQgZnJvbSBQeVNoZWxsLm1haW4oKSBhZnRlciBpbml0aWFsIGNhbGxzIHRvIFRrKCkKKyAgICBDYWxsZWQgZnJvbSBweXNoZWxsLm1haW4oKSBhZnRlciBpbml0aWFsIGNhbGxzIHRvIFRrKCkKIAogICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdGhyZWUgbWFqb3IgdmVyc2lvbnMgb2YgVGsgaW4gdXNlIG9uIE9TIFg6CiAgICAgICAgIDEuIEFxdWEgQ29jb2EgVGsgKG5hdGl2ZSBkZWZhdWx0IHNpbmNlIE9TIFggMTAuNikKQEAgLTIzMyw4ICsyNDEsMTMgQEAKICAgICBpc0FxdWFUaygpLCBpc0NhcmJvblRrKCksIGlzQ29jb2FUaygpLCBpc1hRdWFydHooKSBmdW5jdGlvbnMgd2hpY2gKICAgICBhcmUgaW5pdGlhbGl6ZWQgaGVyZSBhcyB3ZWxsLgogICAgICIiIgotICAgIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCkKICAgICBpZiBpc0FxdWFUaygpOgogICAgICAgICBoaWRlVGtDb25zb2xlKHJvb3QpCiAgICAgICAgIG92ZXJyaWRlUm9vdE1lbnUocm9vdCwgZmxpc3QpCiAgICAgICAgIGFkZE9wZW5FdmVudFN1cHBvcnQocm9vdCwgZmxpc3QpCisgICAgICAgIGZpeGIyY29udGV4dChyb290KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgbWFpbgorICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfbWFjb3N4JywgdmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9CaW5kaW5ncy5weSBiL0xpYi9pZGxlbGliL21haW5tZW51LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0JpbmRpbmdzLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tYWlubWVudS5weQppbmRleCBlMTlhMjc5Li42NTM0NWNkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9CaW5kaW5ncy5weQorKysgYi9MaWIvaWRsZWxpYi9tYWlubWVudS5weQpAQCAtMTAsOSArMTAsOSBAQAogIiIiCiBmcm9tIGltcG9ydGxpYi51dGlsIGltcG9ydCBmaW5kX3NwZWMKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCi0jICAgV2FybmluZzogbWVudWRlZnMgaXMgYWx0ZXJlZCBpbiBtYWNvc3hTdXBwb3J0Lm92ZXJyaWRlUm9vdE1lbnUoKQorIyAgIFdhcm5pbmc6IG1lbnVkZWZzIGlzIGFsdGVyZWQgaW4gbWFjb3N4Lm92ZXJyaWRlUm9vdE1lbnUoKQogIyAgIGFmdGVyIGl0IGlzIGRldGVybWluZWQgdGhhdCBhbiBPUyBYIEFxdWEgVGsgaXMgaW4gdXNlLAogIyAgIHdoaWNoIGNhbm5vdCBiZSBkb25lIHVudGlsIGFmdGVyIFRrKCkgaXMgZmlyc3QgY2FsbGVkLgogIyAgIERvIG5vdCBhbHRlciB0aGUgJ2ZpbGUnLCAnb3B0aW9ucycsIG9yICdoZWxwJyBjYXNjYWRlcyBoZXJlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9NdWx0aUNhbGwucHkgYi9MaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tdWx0aWNhbGwucHkKaW5kZXggODQ2Mjg1NC4uYjc0ZmVkNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvTXVsdGlDYWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL211bHRpY2FsbC5weQpAQCAtMjgsOSArMjgsOSBAQAogICAgdW5sZXNzIHRoaXMgY29uZmxpY3RzIHdpdGggdGhlIGZpcnN0IHJ1bGUuCiBFYWNoIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGF0IG1vc3Qgb25jZSBmb3IgZWFjaCBldmVudC4KICIiIgotCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwogaW1wb3J0IHRraW50ZXIKIAogIyB0aGUgZXZlbnQgdHlwZSBjb25zdGFudHMsIHdoaWNoIGRlZmluZSB0aGUgbWVhbmluZyBvZiBtY190eXBlCkBAIC00MTQsMTIgKzQxNCwxMiBAQAogICAgIHJldHVybiBNdWx0aUNhbGwKIAogCi1kZWYgX211bHRpX2NhbGwocGFyZW50KToKLSAgICByb290ID0gdGtpbnRlci5UaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBNdWx0aUNhbGwiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICB0ZXh0ID0gTXVsdGlDYWxsQ3JlYXRvcih0a2ludGVyLlRleHQpKHJvb3QpCitkZWYgX211bHRpX2NhbGwocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IHRraW50ZXIuVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBNdWx0aUNhbGwiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IodGtpbnRlci5UZXh0KSh0b3ApCiAgICAgdGV4dC5wYWNrKCkKICAgICBkZWYgYmluZHNlcShzZXEsIG49WzBdKToKICAgICAgICAgZGVmIGhhbmRsZXIoZXZlbnQpOgpAQCAtNDM5LDcgKzQzOSw2IEBACiAgICAgYmluZHNlcSgiPEZvY3VzT3V0PiIpCiAgICAgYmluZHNlcSgiPEVudGVyPiIpCiAgICAgYmluZHNlcSgiPExlYXZlPiIpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9PdXRwdXRXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9vdXR3aW4ucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9vdXR3aW4ucHkKaW5kZXggZTYxNGY5Yi4uZjZkMjkxNSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvT3V0cHV0V2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL291dHdpbi5weQpAQCAtMSw4ICsxLDExIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdwogaW1wb3J0IHJlCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgKgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCisKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKKwogCiBjbGFzcyBPdXRwdXRXaW5kb3coRWRpdG9yV2luZG93KToKIApAQCAtMzYsNyArMzksNyBAQAogCiAgICAgZGVmIHdyaXRlKHNlbGYsIHMsIHRhZ3M9KCksIG1hcms9Imluc2VydCIpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHMsIChieXRlcywgYnl0ZXMpKToKLSAgICAgICAgICAgIHMgPSBzLmRlY29kZShJT0JpbmRpbmcuZW5jb2RpbmcsICJyZXBsYWNlIikKKyAgICAgICAgICAgIHMgPSBzLmRlY29kZShpb21lbnUuZW5jb2RpbmcsICJyZXBsYWNlIikKICAgICAgICAgc2VsZi50ZXh0Lmluc2VydChtYXJrLCBzLCB0YWdzKQogICAgICAgICBzZWxmLnRleHQuc2VlKG1hcmspCiAgICAgICAgIHNlbGYudGV4dC51cGRhdGUoKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvRm9ybWF0UGFyYWdyYXBoLnB5IGIvTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGFyYWdyYXBoLnB5CmluZGV4IDdhOWQxODUuLmYxMWJkYWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0Zvcm1hdFBhcmFncmFwaC5weQorKysgYi9MaWIvaWRsZWxpYi9wYXJhZ3JhcGgucHkKQEAgLTE0LDkgKzE0LDEwIEBACiAgIHNwYWNlcywgdGhleSB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIHBhcnQgb2YgdGhlIHNhbWUgYmxvY2suCiAqIEZhbmN5IGNvbW1lbnRzLCBsaWtlIHRoaXMgYnVsbGV0ZWQgbGlzdCwgYXJlbid0IGhhbmRsZWQgOi0pCiAiIiIKLQogaW1wb3J0IHJlCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKKwogCiBjbGFzcyBGb3JtYXRQYXJhZ3JhcGg6CiAKQEAgLTEyOSw3ICsxMzAsNyBAQAogICAgIHBhcnRpYWwgPSBpbmRlbnQxCiAgICAgd2hpbGUgaSA8IG4gYW5kIG5vdCBpc19hbGxfd2hpdGUobGluZXNbaV0pOgogICAgICAgICAjIFhYWCBTaG91bGQgdGFrZSBkb3VibGUgc3BhY2UgYWZ0ZXIgcGVyaW9kIChldGMuKSBpbnRvIGFjY291bnQKLSAgICAgICAgd29yZHMgPSByZS5zcGxpdCgiKFxzKykiLCBsaW5lc1tpXSkKKyAgICAgICAgd29yZHMgPSByZS5zcGxpdChyIihccyspIiwgbGluZXNbaV0pCiAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIGxlbih3b3JkcyksIDIpOgogICAgICAgICAgICAgd29yZCA9IHdvcmRzW2pdCiAgICAgICAgICAgICBpZiBub3Qgd29yZDoKQEAgLTE4OSw3ICsxOTAsOCBAQAogICAgIGlmIG0gaXMgTm9uZTogcmV0dXJuICIiCiAgICAgcmV0dXJuIG0uZ3JvdXAoMSkKIAorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfZm9ybWF0cGFyYWdyYXBoJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3BhcmFncmFwaCcsCiAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkgYi9MaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BhcmVuTWF0Y2gucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BhcmVubWF0Y2gucHkKaW5kZXggNDdlMTBmMy4uY2NlYzcwOCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUGFyZW5NYXRjaC5weQorKysgYi9MaWIvaWRsZWxpYi9wYXJlbm1hdGNoLnB5CkBAIC00LDkgKzQsOCBAQAogcGFyZW4uICBQYXJlbiBoZXJlIGlzIHVzZWQgZ2VuZXJpY2FsbHk7IHRoZSBtYXRjaGluZyBhcHBsaWVzIHRvCiBwYXJlbnRoZXNlcywgc3F1YXJlIGJyYWNrZXRzLCBhbmQgY3VybHkgYnJhY2VzLgogIiIiCi0KLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogX29wZW5lcnMgPSB7JyknOicoJywnXSc6J1snLCd9Jzoneyd9CiBDSEVDS19ERUxBWSA9IDEwMCAjIG1pbGxpc2Vjb25kcwpAQCAtNjQsNiArNjMsNyBAQAogICAgICAgICAjIGFuZCBkZWFjdGl2YXRlX3Jlc3RvcmUgKHdoaWNoIGNhbGxzIGV2ZW50X2RlbGV0ZSkuCiAgICAgICAgIGVkaXR3aW4udGV4dC5iaW5kKHNlbGYuUkVTVE9SRV9WSVJUVUFMX0VWRU5UX05BTUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdG9yZV9ldmVudCkKKyAgICAgICAgc2VsZi5iZWxsID0gc2VsZi50ZXh0LmJlbGwgaWYgc2VsZi5CRUxMIGVsc2UgbGFtYmRhOiBOb25lCiAgICAgICAgIHNlbGYuY291bnRlciA9IDAKICAgICAgICAgc2VsZi5pc19yZXN0b3JlX2FjdGl2ZSA9IDAKICAgICAgICAgc2VsZi5zZXRfc3R5bGUoc2VsZi5TVFlMRSkKQEAgLTkzLDcgKzkzLDcgQEAKICAgICAgICAgaW5kaWNlcyA9IChIeXBlclBhcnNlcihzZWxmLmVkaXR3aW4sICJpbnNlcnQiKQogICAgICAgICAgICAgICAgICAgIC5nZXRfc3Vycm91bmRpbmdfYnJhY2tldHMoKSkKICAgICAgICAgaWYgaW5kaWNlcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi53YXJuX21pc21hdGNoZWQoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFjdGl2YXRlX3Jlc3RvcmUoKQogICAgICAgICBzZWxmLmNyZWF0ZV90YWcoaW5kaWNlcykKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGluZGljZXMgPSBocC5nZXRfc3Vycm91bmRpbmdfYnJhY2tldHMoX29wZW5lcnNbY2xvc2VyXSwgVHJ1ZSkKICAgICAgICAgaWYgaW5kaWNlcyBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi53YXJuX21pc21hdGNoZWQoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzZWxmLmFjdGl2YXRlX3Jlc3RvcmUoKQogICAgICAgICBzZWxmLmNyZWF0ZV90YWcoaW5kaWNlcykKQEAgLTEyNCwxMCArMTI0LDYgQEAKICAgICAgICAgaWYgdGltZXJfY291bnQgPT0gc2VsZi5jb3VudGVyOgogICAgICAgICAgICAgc2VsZi5yZXN0b3JlX2V2ZW50KCkKIAotICAgIGRlZiB3YXJuX21pc21hdGNoZWQoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuQkVMTDoKLSAgICAgICAgICAgIHNlbGYudGV4dC5iZWxsKCkKLQogICAgICMgYW55IG9uZSBvZiB0aGUgY3JlYXRlX3RhZ19YWFggbWV0aG9kcyBjYW4gYmUgdXNlZCBkZXBlbmRpbmcgb24KICAgICAjIHRoZSBzdHlsZQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL3BhdGhicm93c2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQppbmRleCA5YWI3NjMyLi42YzE5NTA4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9wYXRoYnJvd3Nlci5weQpAQCAtMSwxMCArMSwxMCBAQAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIAotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVJdGVtCi1mcm9tIGlkbGVsaWIuQ2xhc3NCcm93c2VyIGltcG9ydCBDbGFzc0Jyb3dzZXIsIE1vZHVsZUJyb3dzZXJUcmVlSXRlbQotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLmJyb3dzZXIgaW1wb3J0IENsYXNzQnJvd3NlciwgTW9kdWxlQnJvd3NlclRyZWVJdGVtCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Citmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgVHJlZUl0ZW0KIAogCiBjbGFzcyBQYXRoQnJvd3NlcihDbGFzc0Jyb3dzZXIpOgpAQCAtMjQsNiArMjQsNyBAQAogICAgIGRlZiByb290bm9kZShzZWxmKToKICAgICAgICAgcmV0dXJuIFBhdGhCcm93c2VyVHJlZUl0ZW0oKQogCisKIGNsYXNzIFBhdGhCcm93c2VyVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIEdldFRleHQoc2VsZik6CkBAIC0zNiw2ICszNyw3IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCisKIGNsYXNzIERpckJyb3dzZXJUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGlyLCBwYWNrYWdlcz1bXSk6CkBAIC05NSw2ICs5Nyw3IEBACiAgICAgICAgIHNvcnRlZC5zb3J0KCkKICAgICAgICAgcmV0dXJuIHNvcnRlZAogCisKIGRlZiBfcGF0aF9icm93c2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChwYXJlbnQpCiAgICAgUGF0aEJyb3dzZXIoZmxpc3QsIF9odGVzdD1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGVyY29sYXRvci5weSBiL0xpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUGVyY29sYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGVyY29sYXRvci5weQppbmRleCBiOGJlMmFhLi5kMThkYWYwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QZXJjb2xhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL3BlcmNvbGF0b3IucHkKQEAgLTEsNSArMSw1IEBACi1mcm9tIGlkbGVsaWIuV2lkZ2V0UmVkaXJlY3RvciBpbXBvcnQgV2lkZ2V0UmVkaXJlY3RvcgotZnJvbSBpZGxlbGliLkRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCitmcm9tIGlkbGVsaWIuZGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5yZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCiAKIAogY2xhc3MgUGVyY29sYXRvcjoKQEAgLTU3LDcgKzU3LDYgQEAKIAogZGVmIF9wZXJjb2xhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBpbXBvcnQgdGtpbnRlciBhcyB0awotICAgIGltcG9ydCByZQogCiAgICAgY2xhc3MgVHJhY2VyKERlbGVnYXRvcik6CiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKQEAgLTc0LDggKzczLDggQEAKIAogICAgIGJveCA9IHRrLlRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgUGVyY29sYXRvciIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIHRleHQgPSB0ay5UZXh0KGJveCkKICAgICBwID0gUGVyY29sYXRvcih0ZXh0KQogICAgIHBpbiA9IHAuaW5zZXJ0ZmlsdGVyCkBAIC04OSwxMCArODgsMTAgQEAKICAgICAgICAgKHBpbiBpZiB2YXIyLmdldCgpIGVsc2UgcG91dCkodDIpCiAKICAgICB0ZXh0LnBhY2soKQotICAgIHZhcjEgPSB0ay5JbnRWYXIoKQorICAgIHZhcjEgPSB0ay5JbnRWYXIocGFyZW50KQogICAgIGNiMSA9IHRrLkNoZWNrYnV0dG9uKGJveCwgdGV4dD0iVHJhY2VyMSIsIGNvbW1hbmQ9dG9nZ2xlMSwgdmFyaWFibGU9dmFyMSkKICAgICBjYjEucGFjaygpCi0gICAgdmFyMiA9IHRrLkludFZhcigpCisgICAgdmFyMiA9IHRrLkludFZhcihwYXJlbnQpCiAgICAgY2IyID0gdGsuQ2hlY2tidXR0b24oYm94LCB0ZXh0PSJUcmFjZXIyIiwgY29tbWFuZD10b2dnbGUyLCB2YXJpYWJsZT12YXIyKQogICAgIGNiMi5wYWNrKCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlQYXJzZS5weSBiL0xpYi9pZGxlbGliL3B5cGFyc2UucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUHlQYXJzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcHlwYXJzZS5weQppbmRleCA5Y2NiYjI1Li42NzM5ZGZkIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QeVBhcnNlLnB5CisrKyBiL0xpYi9pZGxlbGliL3B5cGFyc2UucHkKQEAgLTEsNiArMSw2IEBACitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcKIAogIyBSZWFzb24gbGFzdCBzdG10IGlzIGNvbnRpbnVlZCAob3IgQ19OT05FIGlmIGl0J3Mgbm90KS4KIChDX05PTkUsIENfQkFDS1NMQVNILCBDX1NUUklOR19GSVJTVF9MSU5FLApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weSBiL0xpYi9pZGxlbGliL3B5c2hlbGwucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUHlTaGVsbC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcHlzaGVsbC5weQppbmRleCA1ZGVjNjhlLi5lMWVhZGUxIDEwMDc1NQotLS0gYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CisrKyBiL0xpYi9pZGxlbGliL3B5c2hlbGwucHkKQEAgLTEsMjEgKzEsNSBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKIAotaW1wb3J0IGdldG9wdAotaW1wb3J0IG9zCi1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHJlCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHRpbWUKLWltcG9ydCB0b2tlbml6ZQotaW1wb3J0IGlvCi0KLWltcG9ydCBsaW5lY2FjaGUKLWZyb20gY29kZSBpbXBvcnQgSW50ZXJhY3RpdmVJbnRlcnByZXRlcgotZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX3ZlcnNpb24sIHN5c3RlbQotCiB0cnk6CiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCAqCiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC0yMywxNyArNyw0MiBAQAogICAgICAgICAgICJZb3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrLiAqKiIsIGZpbGU9c3lzLl9fc3RkZXJyX18pCiAgICAgc3lzLmV4aXQoMSkKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CitpZiBUa1ZlcnNpb24gPCA4LjU6CisgICAgcm9vdCA9IFRrKCkgICMgb3RoZXJ3aXNlIGNyZWF0ZSByb290IGluIG1haW4KKyAgICByb290LndpdGhkcmF3KCkKKyAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJZGxlIENhbm5vdCBTdGFydCIsCisgICAgICAgICAgICAiSWRsZSByZXF1aXJlcyB0Y2wvdGsgOC41Kywgbm90ICRzLiIgJSBUa1ZlcnNpb24sCisgICAgICAgICAgICBwYXJlbnQ9cm9vdCkKKyAgICBzeXMuZXhpdCgxKQogCi1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3csIGZpeHdvcmRicmVha3MKLWZyb20gaWRsZWxpYi5GaWxlTGlzdCBpbXBvcnQgRmlsZUxpc3QKLWZyb20gaWRsZWxpYi5Db2xvckRlbGVnYXRvciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5VbmRvRGVsZWdhdG9yIGltcG9ydCBVbmRvRGVsZWdhdG9yCi1mcm9tIGlkbGVsaWIuT3V0cHV0V2luZG93IGltcG9ydCBPdXRwdXRXaW5kb3cKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBjb2RlIGltcG9ydCBJbnRlcmFjdGl2ZUludGVycHJldGVyCitpbXBvcnQgZ2V0b3B0CitpbXBvcnQgaW8KK2ltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2Zyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl92ZXJzaW9uLCBzeXN0ZW0KK2ltcG9ydCByZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB3YXJuaW5ncworCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRlc3RpbmcgICMgYm9vbCB2YWx1ZQorZnJvbSBpZGxlbGliLmNvbG9yaXplciBpbXBvcnQgQ29sb3JEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyX3IKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdywgZml4d29yZGJyZWFrcworZnJvbSBpZGxlbGliLmZpbGVsaXN0IGltcG9ydCBGaWxlTGlzdAorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5vdXR3aW4gaW1wb3J0IE91dHB1dFdpbmRvdwogZnJvbSBpZGxlbGliIGltcG9ydCBycGMKLWZyb20gaWRsZWxpYiBpbXBvcnQgRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAorZnJvbSBpZGxlbGliLnJ1biBpbXBvcnQgaWRsZV9mb3JtYXR3YXJuaW5nLCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKK2Zyb20gaWRsZWxpYi51bmRvIGltcG9ydCBVbmRvRGVsZWdhdG9yCiAKIEhPU1QgPSAnMTI3LjAuMC4xJyAjIHB5dGhvbiBleGVjdXRpb24gc2VydmVyIG9uIGxvY2FsaG9zdCBsb29wYmFjawogUE9SVCA9IDAgICMgc29tZWRheSBwYXNzIGluIGhvc3QsIHBvcnQgZm9yIHJlbW90ZSBkZWJ1ZyBjYXBhYmlsaXR5CkBAIC00MywyMCArNTIsNiBAQAogIyB0ZW1wb3JhcmlseSByZWRpcmVjdCB0aGUgc3RyZWFtIHRvIHRoZSBzaGVsbCB3aW5kb3cgdG8gZGlzcGxheSB3YXJuaW5ncyB3aGVuCiAjIGNoZWNraW5nIHVzZXIncyBjb2RlLgogd2FybmluZ19zdHJlYW0gPSBzeXMuX19zdGRlcnJfXyAgIyBOb25lLCBhdCBsZWFzdCBvbiBXaW5kb3dzLCBpZiBubyBjb25zb2xlLgotaW1wb3J0IHdhcm5pbmdzCi0KLWRlZiBpZGxlX2Zvcm1hdHdhcm5pbmcobWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmU9Tm9uZSk6Ci0gICAgIiIiRm9ybWF0IHdhcm5pbmdzIHRoZSBJRExFIHdheS4iIiIKLQotICAgIHMgPSAiXG5XYXJuaW5nIChmcm9tIHdhcm5pbmdzIG1vZHVsZSk6XG4iCi0gICAgcyArPSAnICBGaWxlIFwiJXNcIiwgbGluZSAlc1xuJyAlIChmaWxlbmFtZSwgbGluZW5vKQotICAgIGlmIGxpbmUgaXMgTm9uZToKLSAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pCi0gICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgIGlmIGxpbmU6Ci0gICAgICAgIHMgKz0gIiAgICAlc1xuIiAlIGxpbmUKLSAgICBzICs9ICIlczogJXNcbiIgJSAoY2F0ZWdvcnkuX19uYW1lX18sIG1lc3NhZ2UpCi0gICAgcmV0dXJuIHMKIAogZGVmIGlkbGVfc2hvd3dhcm5pbmcoCiAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CkBAIC00MTAsNyArNDA1LDcgQEAKICAgICAgICAgIyBydW4gZnJvbSB0aGUgSURMRSBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgICBkZWxfZXhpdGYgPSBpZGxlQ29uZi5HZXRPcHRpb24oJ21haW4nLCAnR2VuZXJhbCcsICdkZWxldGUtZXhpdGZ1bmMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgdHlwZT0nYm9vbCcpCi0gICAgICAgIGlmIF9fbmFtZV9fID09ICdpZGxlbGliLlB5U2hlbGwnOgorICAgICAgICBpZiBfX25hbWVfXyA9PSAnaWRsZWxpYi5weXNoZWxsJzoKICAgICAgICAgICAgIGNvbW1hbmQgPSAiX19pbXBvcnRfXygnaWRsZWxpYi5ydW4nKS5ydW4ubWFpbiglcikiICUgKGRlbF9leGl0ZiwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb21tYW5kID0gIl9faW1wb3J0X18oJ3J1bicpLm1haW4oJXIpIiAlIChkZWxfZXhpdGYsKQpAQCAtNDY4LDcgKzQ2Myw3IEBACiAgICAgICAgIGlmIGRlYnVnOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICMgT25seSBjbG9zZSBzdWJwcm9jZXNzIGRlYnVnZ2VyLCBkb24ndCB1bnJlZ2lzdGVyIGd1aV9hZGFwIQotICAgICAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLmNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCisgICAgICAgICAgICAgICAgZGVidWdnZXJfci5jbG9zZV9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyBLaWxsIHN1YnByb2Nlc3MsIHNwYXduIGEgbmV3IG9uZSwgYWNjZXB0IGNvbm5lY3Rpb24uCkBAIC00OTcsNyArNDkyLDcgQEAKICAgICAgICAgIyByZXN0YXJ0IHN1YnByb2Nlc3MgZGVidWdnZXIKICAgICAgICAgaWYgZGVidWc6CiAgICAgICAgICAgICAjIFJlc3RhcnRlZCBkZWJ1Z2dlciBjb25uZWN0cyB0byBjdXJyZW50IGluc3RhbmNlIG9mIGRlYnVnIEdVSQotICAgICAgICAgICAgUmVtb3RlRGVidWdnZXIucmVzdGFydF9zdWJwcm9jZXNzX2RlYnVnZ2VyKHNlbGYucnBjY2x0KQorICAgICAgICAgICAgZGVidWdnZXJfci5yZXN0YXJ0X3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCiAgICAgICAgICAgICAjIHJlbG9hZCByZW1vdGUgZGVidWdnZXIgYnJlYWtwb2ludHMgZm9yIGFsbCBQeVNoZWxsRWRpdFdpbmRvd3MKICAgICAgICAgICAgIGRlYnVnLmxvYWRfYnJlYWtwb2ludHMoKQogICAgICAgICBzZWxmLmNvbXBpbGUuY29tcGlsZXIuZmxhZ3MgPSBzZWxmLm9yaWdpbmFsX2NvbXBpbGVyX2ZsYWdzCkBAIC01NzgsNyArNTczLDcgQEAKICAgICAgICAgICAgICAgICBpZiBzZWxmLnRrY29uc29sZS5nZXR2YXIoIjw8dG9nZ2xlLWppdC1zdGFjay12aWV3ZXI+PiIpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbW90ZV9zdGFja192aWV3ZXIoKQogICAgICAgICAgICAgZWxpZiBob3cgPT0gIkVSUk9SIjoKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiUHlTaGVsbC5Nb2RpZmllZEludGVycHJldGVyOiBTdWJwcm9jZXNzIEVSUk9SOlxuIgorICAgICAgICAgICAgICAgIGVycm1zZyA9ICJweXNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXI6IFN1YnByb2Nlc3MgRVJST1I6XG4iCiAgICAgICAgICAgICAgICAgcHJpbnQoZXJybXNnLCB3aGF0LCBmaWxlPXN5cy5fX3N0ZGVycl9fKQogICAgICAgICAgICAgICAgIHByaW50KGVycm1zZywgd2hhdCwgZmlsZT1jb25zb2xlKQogICAgICAgICAgICAgIyB3ZSByZWNlaXZlZCBhIHJlc3BvbnNlIHRvIHRoZSBjdXJyZW50bHkgYWN0aXZlIHNlcSBudW1iZXI6CkBAIC02MTMsMTMgKzYwOCwxMyBAQAogICAgICAgICByZXR1cm4KIAogICAgIGRlZiByZW1vdGVfc3RhY2tfdmlld2VyKHNlbGYpOgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZU9iamVjdEJyb3dzZXIKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z29ial9yCiAgICAgICAgIG9pZCA9IHNlbGYucnBjY2x0LnJlbW90ZXF1ZXVlKCJleGVjIiwgInN0YWNrdmlld2VyIiwgKCJmbGlzdCIsKSwge30pCiAgICAgICAgIGlmIG9pZCBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi50a2NvbnNvbGUucm9vdC5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBpdGVtID0gUmVtb3RlT2JqZWN0QnJvd3Nlci5TdHViT2JqZWN0VHJlZUl0ZW0oc2VsZi5ycGNjbHQsIG9pZCkKLSAgICAgICAgZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFNjcm9sbGVkQ2FudmFzLCBUcmVlTm9kZQorICAgICAgICBpdGVtID0gZGVidWdvYmpfci5TdHViT2JqZWN0VHJlZUl0ZW0oc2VsZi5ycGNjbHQsIG9pZCkKKyAgICAgICAgZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFNjcm9sbGVkQ2FudmFzLCBUcmVlTm9kZQogICAgICAgICB0b3AgPSBUb3BsZXZlbChzZWxmLnRrY29uc29sZS5yb290KQogICAgICAgICB0aGVtZSA9IGlkbGVDb25mLkN1cnJlbnRUaGVtZSgpCiAgICAgICAgIGJhY2tncm91bmQgPSBpZGxlQ29uZi5HZXRIaWdobGlnaHQodGhlbWUsICdub3JtYWwnKVsnYmFja2dyb3VuZCddCkBAIC02NjIsOSArNjU3LDkgQEAKICAgICAgICAgIyBhdCB0aGUgbW9tZW50LCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGV4cGVjdHMgc3RyCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZSwgc3RyKQogICAgICAgICAjaWYgaXNpbnN0YW5jZShzb3VyY2UsIHN0cik6Ci0gICAgICAgICMgICAgZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKKyAgICAgICAgIyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudQogICAgICAgICAjICAgIHRyeToKLSAgICAgICAgIyAgICAgICAgc291cmNlID0gc291cmNlLmVuY29kZShJT0JpbmRpbmcuZW5jb2RpbmcpCisgICAgICAgICMgICAgICAgIHNvdXJjZSA9IHNvdXJjZS5lbmNvZGUoaW9tZW51LmVuY29kaW5nKQogICAgICAgICAjICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CiAgICAgICAgICMgICAgICAgIHNlbGYudGtjb25zb2xlLnJlc2V0b3V0cHV0KCkKICAgICAgICAgIyAgICAgICAgc2VsZi53cml0ZSgiVW5zdXBwb3J0ZWQgY2hhcmFjdGVycyBpbiBpbnB1dFxuIikKQEAgLTg1MCw3ICs4NDUsNyBAQAogCiAKICAgICAjIE5ldyBjbGFzc2VzCi0gICAgZnJvbSBpZGxlbGliLklkbGVIaXN0b3J5IGltcG9ydCBIaXN0b3J5CisgICAgZnJvbSBpZGxlbGliLmhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmbGlzdD1Ob25lKToKICAgICAgICAgaWYgdXNlX3N1YnByb2Nlc3M6CkBAIC04ODgsMTEgKzg4MywxMSBAQAogICAgICAgICBzZWxmLnNhdmVfc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzZWxmLnNhdmVfc3RkZXJyID0gc3lzLnN0ZGVycgogICAgICAgICBzZWxmLnNhdmVfc3RkaW4gPSBzeXMuc3RkaW4KLSAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKLSAgICAgICAgc2VsZi5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLCAic3RkaW4iLCBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3Rkb3V0IiwgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzZWxmLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZGVyciIsIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc2VsZi5jb25zb2xlID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAiY29uc29sZSIsIElPQmluZGluZy5lbmNvZGluZykKKyAgICAgICAgZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUKKyAgICAgICAgc2VsZi5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLCAic3RkaW4iLCBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHNlbGYuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3Rkb3V0IiwgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzZWxmLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZiwgInN0ZGVyciIsIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc2VsZi5jb25zb2xlID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAiY29uc29sZSIsIGlvbWVudS5lbmNvZGluZykKICAgICAgICAgaWYgbm90IHVzZV9zdWJwcm9jZXNzOgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNlbGYuc3Rkb3V0CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2VsZi5zdGRlcnIKQEAgLTkwMCw3ICs4OTUsNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCiAgICAgICAgICAgICBpbXBvcnQgcHlkb2MgIyBpbXBvcnQgbXVzdCBiZSBkb25lIGhlcmUgdG8gY2FwdHVyZSBpL28gcmViaW5kaW5nLgotICAgICAgICAgICAgIyBYWFggS0JLIDI3RGVjMDcgdXNlIGEgdGV4dFZpZXcgc29tZWRheSwgYnV0IG11c3Qgd29yayB3L28gc3VicHJvYworICAgICAgICAgICAgIyBYWFggS0JLIDI3RGVjMDcgdXNlIFRleHRWaWV3ZXIgc29tZWRheSwgYnV0IG11c3Qgd29yayB3L28gc3VicHJvYwogICAgICAgICAgICAgcHlkb2MucGFnZXIgPSBweWRvYy5wbGFpbnBhZ2VyCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwpAQCAtOTU0LDcgKzk0OSw3IEBACiAgICAgICAgICAgICBzZWxmLmludGVycC5zZXRkZWJ1Z2dlcihOb25lKQogICAgICAgICAgICAgZGIuY2xvc2UoKQogICAgICAgICAgICAgaWYgc2VsZi5pbnRlcnAucnBjY2x0OgotICAgICAgICAgICAgICAgIFJlbW90ZURlYnVnZ2VyLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQpCisgICAgICAgICAgICAgICAgZGVidWdnZXJfci5jbG9zZV9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0KQogICAgICAgICAgICAgc2VsZi5yZXNldG91dHB1dCgpCiAgICAgICAgICAgICBzZWxmLmNvbnNvbGUud3JpdGUoIltERUJVRyBPRkZdXG4iKQogICAgICAgICAgICAgc3lzLnBzMSA9ICI+Pj4gIgpAQCAtOTYzLDEwICs5NTgsMTAgQEAKIAogICAgIGRlZiBvcGVuX2RlYnVnZ2VyKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmludGVycC5ycGNjbHQ6Ci0gICAgICAgICAgICBkYmdfZ3VpID0gUmVtb3RlRGVidWdnZXIuc3RhcnRfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCwKKyAgICAgICAgICAgIGRiZ19ndWkgPSBkZWJ1Z2dlcl9yLnN0YXJ0X3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYmdfZ3VpID0gRGVidWdnZXIuRGVidWdnZXIoc2VsZikKKyAgICAgICAgICAgIGRiZ19ndWkgPSBkZWJ1Z2dlci5EZWJ1Z2dlcihzZWxmKQogICAgICAgICBzZWxmLmludGVycC5zZXRkZWJ1Z2dlcihkYmdfZ3VpKQogICAgICAgICBkYmdfZ3VpLmxvYWRfYnJlYWtwb2ludHMoKQogICAgICAgICBzeXMucHMxID0gIltERUJVRyBPTl1cbj4+PiAiCkBAIC0xMjQxLDcgKzEyMzYsNyBAQAogICAgICAgICAgICAgICAgICIoc3lzLmxhc3RfdHJhY2ViYWNrIGlzIG5vdCBkZWZpbmVkKSIsCiAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYudGV4dCkKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBmcm9tIGlkbGVsaWIuU3RhY2tWaWV3ZXIgaW1wb3J0IFN0YWNrQnJvd3NlcgorICAgICAgICBmcm9tIGlkbGVsaWIuc3RhY2t2aWV3ZXIgaW1wb3J0IFN0YWNrQnJvd3NlcgogICAgICAgICBTdGFja0Jyb3dzZXIoc2VsZi5yb290LCBzZWxmLmZsaXN0KQogCiAgICAgZGVmIHZpZXdfcmVzdGFydF9tYXJrKHNlbGYsIGV2ZW50PU5vbmUpOgpAQCAtMTMwOSw5MiArMTMwNCw2IEBACiAgICAgICAgICAgICByZXR1cm4gJ2Rpc2FibGVkJwogICAgICAgICByZXR1cm4gc3VwZXIoKS5ybWVudV9jaGVja19wYXN0ZSgpCiAKLWNsYXNzIFBzZXVkb0ZpbGUoaW8uVGV4dElPQmFzZSk6Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBzZWxmLnNoZWxsID0gc2hlbGwKLSAgICAgICAgc2VsZi50YWdzID0gdGFncwotICAgICAgICBzZWxmLl9lbmNvZGluZyA9IGVuY29kaW5nCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgZW5jb2Rpbmcoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9lbmNvZGluZwotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAnPCVzPicgJSBzZWxmLnRhZ3MKLQotICAgIGRlZiBpc2F0dHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLQotY2xhc3MgUHNldWRvT3V0cHV0RmlsZShQc2V1ZG9GaWxlKToKLQotICAgIGRlZiB3cml0YWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiB3cml0ZShzZWxmLCBzKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSB0byBjbG9zZWQgZmlsZSIpCi0gICAgICAgIGlmIHR5cGUocykgaXMgbm90IHN0cjoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIHN0ciwgbm90ICcgKyB0eXBlKHMpLl9fbmFtZV9fKQotICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzE5NDgxCi0gICAgICAgICAgICBzID0gc3RyLl9fc3RyX18ocykKLSAgICAgICAgcmV0dXJuIHNlbGYuc2hlbGwud3JpdGUocywgc2VsZi50YWdzKQotCi0KLWNsYXNzIFBzZXVkb0lucHV0RmlsZShQc2V1ZG9GaWxlKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgIFBzZXVkb0ZpbGUuX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nKQotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCi0KLSAgICBkZWYgcmVhZGFibGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplPS0xKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQotICAgICAgICBpZiBzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBzaXplID0gLTEKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQotICAgICAgICByZXN1bHQgPSBzZWxmLl9saW5lX2J1ZmZlcgotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9ICcnCi0gICAgICAgIGlmIHNpemUgPCAwOgotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdoaWxlIGxlbihyZXN1bHQpIDwgc2l6ZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGxpbmUKLSAgICAgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gcmVzdWx0W3NpemU6XQotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzpzaXplXQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgcmVhZGxpbmUoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgc2l6ZSA9IC0xCi0gICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKLSAgICAgICAgbGluZSA9IHNlbGYuX2xpbmVfYnVmZmVyIG9yIHNlbGYuc2hlbGwucmVhZGxpbmUoKQotICAgICAgICBpZiBzaXplIDwgMDoKLSAgICAgICAgICAgIHNpemUgPSBsZW4obGluZSkKLSAgICAgICAgZW9sID0gbGluZS5maW5kKCdcbicsIDAsIHNpemUpCi0gICAgICAgIGlmIGVvbCA+PSAwOgotICAgICAgICAgICAgc2l6ZSA9IGVvbCArIDEKLSAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSBsaW5lW3NpemU6XQotICAgICAgICByZXR1cm4gbGluZVs6c2l6ZV0KLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5zaGVsbC5jbG9zZSgpCi0KIAogZGVmIGZpeF94MTFfcGFzdGUocm9vdCk6CiAgICAgIk1ha2UgcGFzdGUgcmVwbGFjZSBzZWxlY3Rpb24gb24geDExLiAgU2VlIGlzc3VlICM1MTI0LiIKQEAgLTE1NDAsNyArMTQ0OSwxMCBAQAogICAgIGVuYWJsZV9lZGl0ID0gZW5hYmxlX2VkaXQgb3IgZWRpdF9zdGFydAogICAgIGVuYWJsZV9zaGVsbCA9IGVuYWJsZV9zaGVsbCBvciBub3QgZW5hYmxlX2VkaXQKIAotICAgICMgc3RhcnQgZWRpdG9yIGFuZC9vciBzaGVsbCB3aW5kb3dzOgorICAgICMgU2V0dXAgcm9vdC4gIERvbid0IGJyZWFrIHVzZXIgY29kZSBydW4gaW4gSURMRSBwcm9jZXNzLgorICAgICMgRG9uJ3QgY2hhbmdlIGVudmlyb25tZW50IHdoZW4gdGVzdGluZy4KKyAgICBpZiB1c2Vfc3VicHJvY2VzcyBhbmQgbm90IHRlc3Rpbmc6CisgICAgICAgIE5vRGVmYXVsdFJvb3QoKQogICAgIHJvb3QgPSBUayhjbGFzc05hbWU9IklkbGUiKQogICAgIHJvb3Qud2l0aGRyYXcoKQogCkBAIC0xNTQ5LDI1ICsxNDYxLDE5IEBACiAgICAgaWYgc3lzdGVtKCkgPT0gJ1dpbmRvd3MnOgogICAgICAgICBpY29uZmlsZSA9IG9zLnBhdGguam9pbihpY29uZGlyLCAnaWRsZS5pY28nKQogICAgICAgICByb290LndtX2ljb25iaXRtYXAoZGVmYXVsdD1pY29uZmlsZSkKLSAgICBlbGlmIFRrVmVyc2lvbiA+PSA4LjU6CisgICAgZWxzZToKICAgICAgICAgZXh0ID0gJy5wbmcnIGlmIFRrVmVyc2lvbiA+PSA4LjYgZWxzZSAnLmdpZicKICAgICAgICAgaWNvbmZpbGVzID0gW29zLnBhdGguam9pbihpY29uZGlyLCAnaWRsZV8lZCVzJyAlIChzaXplLCBleHQpKQogICAgICAgICAgICAgICAgICAgICAgZm9yIHNpemUgaW4gKDE2LCAzMiwgNDgpXQotICAgICAgICBpY29ucyA9IFtQaG90b0ltYWdlKGZpbGU9aWNvbmZpbGUpIGZvciBpY29uZmlsZSBpbiBpY29uZmlsZXNdCisgICAgICAgIGljb25zID0gW1Bob3RvSW1hZ2UobWFzdGVyPXJvb3QsIGZpbGU9aWNvbmZpbGUpCisgICAgICAgICAgICAgICAgIGZvciBpY29uZmlsZSBpbiBpY29uZmlsZXNdCiAgICAgICAgIHJvb3Qud21faWNvbnBob3RvKFRydWUsICppY29ucykKIAorICAgICMgc3RhcnQgZWRpdG9yIGFuZC9vciBzaGVsbCB3aW5kb3dzOgogICAgIGZpeHdvcmRicmVha3Mocm9vdCkKICAgICBmaXhfeDExX3Bhc3RlKHJvb3QpCiAgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKLSAgICBtYWNvc3hTdXBwb3J0LnNldHVwQXBwKHJvb3QsIGZsaXN0KQotCi0gICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgotICAgICAgICAjIFRoZXJlIGFyZSBzb21lIHNjcmV3ZWQgdXAgPDI+IGNsYXNzIGJpbmRpbmdzIGZvciB0ZXh0Ci0gICAgICAgICMgd2lkZ2V0cyBkZWZpbmVkIGluIFRrIHdoaWNoIHdlIG5lZWQgdG8gZG8gYXdheSB3aXRoLgotICAgICAgICAjIFNlZSBpc3N1ZSAjMjQ4MDEuCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMj4nKQotICAgICAgICByb290LnVuYmluZF9jbGFzcygnVGV4dCcsICc8QjItTW90aW9uPicpCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzw8UGFzdGVTZWxlY3Rpb24+PicpCisgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIGZsaXN0KQogCiAgICAgaWYgZW5hYmxlX2VkaXQ6CiAgICAgICAgIGlmIG5vdCAoY21kIG9yIHNjcmlwdCk6CkBAIC0xNTgyLDcgKzE0ODgsNyBAQAogICAgICAgICBzaGVsbCA9IGZsaXN0Lm9wZW5fc2hlbGwoKQogICAgICAgICBpZiBub3Qgc2hlbGw6CiAgICAgICAgICAgICByZXR1cm4gIyBjb3VsZG4ndCBvcGVuIHNoZWxsCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKSBhbmQgZmxpc3QuZGljdDoKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCkgYW5kIGZsaXN0LmRpY3Q6CiAgICAgICAgICAgICAjIE9uIE9TWDogd2hlbiB0aGUgdXNlciBoYXMgZG91YmxlLWNsaWNrZWQgb24gYSBmaWxlIHRoYXQgY2F1c2VzCiAgICAgICAgICAgICAjIElETEUgdG8gYmUgbGF1bmNoZWQgdGhlIHNoZWxsIHdpbmRvdyB3aWxsIG9wZW4ganVzdCBpbiBmcm9udCBvZgogICAgICAgICAgICAgIyB0aGUgZmlsZSBzaGUgd2FudHMgdG8gc2VlLiBMb3dlciB0aGUgaW50ZXJwcmV0ZXIgd2luZG93IHdoZW4KQEAgLTE2MTYsNyArMTUyMiw3IEBACiAgICAgICAgICMgY2hlY2sgZm9yIHByb2JsZW1hdGljIE9TIFggVGsgdmVyc2lvbnMgYW5kIHByaW50IGEgd2FybmluZwogICAgICAgICAjIG1lc3NhZ2UgaW4gdGhlIElETEUgc2hlbGwgd2luZG93OyB0aGlzIGlzIGxlc3MgaW50cnVzaXZlCiAgICAgICAgICMgdGhhbiBhbHdheXMgb3BlbmluZyBhIHNlcGFyYXRlIHdpbmRvdy4KLSAgICAgICAgdGt2ZXJzaW9ud2FybmluZyA9IG1hY29zeFN1cHBvcnQudGtWZXJzaW9uV2FybmluZyhyb290KQorICAgICAgICB0a3ZlcnNpb253YXJuaW5nID0gbWFjb3N4LnRrVmVyc2lvbldhcm5pbmcocm9vdCkKICAgICAgICAgaWYgdGt2ZXJzaW9ud2FybmluZzoKICAgICAgICAgICAgIHNoZWxsLmludGVycC5ydW5jb21tYW5kKCJwcmludCgnJXMnKSIgJSB0a3ZlcnNpb253YXJuaW5nKQogCkBAIC0xNjI2LDcgKzE1MzIsNyBAQAogICAgIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgc3lzLm1vZHVsZXNbJ1B5U2hlbGwnXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCisgICAgc3lzLm1vZHVsZXNbJ3B5c2hlbGwnXSA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCiAgICAgbWFpbigpCiAKIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpICAjIE1ha2Ugc3VyZSB0dXJuZWQgb2ZmOyBzZWUgaXNzdWUgMTgwODEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3F1ZXJ5LnB5IGIvTGliL2lkbGVsaWIvcXVlcnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxZjFlMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL3F1ZXJ5LnB5CkBAIC0wLDAgKzEsMzA4IEBACisiIiIKK0RpYWxvZ3MgdGhhdCBxdWVyeSB1c2VycyBhbmQgdmVyaWZ5IHRoZSBhbnN3ZXIgYmVmb3JlIGFjY2VwdGluZy4KK1VzZSB0dGsgd2lkZ2V0cywgbGltaXRpbmcgdXNlIHRvIHRjbC90ayA4LjUrLCBhcyBpbiBJRExFIDMuNisuCisKK1F1ZXJ5IGlzIHRoZSBnZW5lcmljIGJhc2UgY2xhc3MgZm9yIGEgcG9wdXAgZGlhbG9nLgorVGhlIHVzZXIgbXVzdCBlaXRoZXIgZW50ZXIgYSB2YWxpZCBhbnN3ZXIgb3IgY2xvc2UgdGhlIGRpYWxvZy4KK0VudHJpZXMgYXJlIHZhbGlkYXRlZCB3aGVuIDxSZXR1cm4+IGlzIGVudGVyZWQgb3IgW09rXSBpcyBjbGlja2VkLgorRW50cmllcyBhcmUgaWdub3JlZCB3aGVuIFtDYW5jZWxdIG9yIFtYXSBhcmUgY2xpY2tlZC4KK1RoZSAncmV0dXJuIHZhbHVlJyBpcyAucmVzdWx0IHNldCB0byBlaXRoZXIgYSB2YWxpZCBhbnN3ZXIgb3IgTm9uZS4KKworU3ViY2xhc3MgU2VjdGlvbk5hbWUgZ2V0cyBhIG5hbWUgZm9yIGEgbmV3IGNvbmZpZyBmaWxlIHNlY3Rpb24uCitDb25maWdkaWFsb2cgdXNlcyBpdCBmb3IgbmV3IGhpZ2hsaWdodCB0aGVtZSBhbmQga2V5YmluZGluZyBzZXQgbmFtZXMuCitTdWJjbGFzcyBNb2R1bGVOYW1lIGdldHMgYSBuYW1lIGZvciBGaWxlID0+IE9wZW4gTW9kdWxlLgorU3ViY2xhc3MgSGVscFNvdXJjZSBnZXRzIG1lbnUgaXRlbSBhbmQgcGF0aCBmb3IgYWRkaXRpb25zIHRvIEhlbHAgbWVudS4KKyIiIgorIyBRdWVyeSBhbmQgU2VjdGlvbiBuYW1lIHJlc3VsdCBmcm9tIHNwbGl0dGluZyBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZworIyBvZiBjb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSAodGVtcG9yYXJpbHkgY29uZmlnX3NlYy5weSkgaW50bworIyBnZW5lcmljIGFuZCBzcGVjaWZpYyBwYXJ0cy4gIDMuNiBvbmx5LCBKdWx5IDIwMTYuCisjIE1vZHVsZU5hbWUuZW50cnlfb2sgY2FtZSBmcm9tIGVkaXRvci5FZGl0b3JXaW5kb3cubG9hZF9tb2R1bGUuCisjIEhlbHBTb3VyY2Ugd2FzIGV4dHJhY3RlZCBmcm9tIGNvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5ICh0ZW1wb3JhcmlseQorIyBjb25maWdfaGVscC5weSksIHdpdGggZGFyd2luIGNvZGUgbW92ZWQgZnJvbSBvayB0byBwYXRoX29rLgorCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgb3MKK2Zyb20gc3lzIGltcG9ydCBleGVjdXRhYmxlLCBwbGF0Zm9ybSAgIyBQbGF0Zm9ybSBpcyBzZXQgZm9yIG9uZSB0ZXN0LgorCitmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBTdHJpbmdWYXIsIFcsIEUsIE4sIFMKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IEZyYW1lLCBCdXR0b24sIEVudHJ5LCBMYWJlbAorZnJvbSB0a2ludGVyIGltcG9ydCBmaWxlZGlhbG9nCitmcm9tIHRraW50ZXIuZm9udCBpbXBvcnQgRm9udAorCitjbGFzcyBRdWVyeShUb3BsZXZlbCk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgZ2V0dGluZyB2ZXJpZmllZCBhbnN3ZXIgZnJvbSBhIHVzZXIuCisKKyAgICBGb3IgdGhpcyBiYXNlIGNsYXNzLCBhY2NlcHQgYW55IG5vbi1ibGFuayBzdHJpbmcuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsICosIHRleHQwPScnLCB1c2VkX25hbWVzPXt9LAorICAgICAgICAgICAgICAgICBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgICIiIkNyZWF0ZSBwb3B1cCwgZG8gbm90IHJldHVybiB1bnRpbCB0ayB3aWRnZXQgZGVzdHJveWVkLgorCisgICAgICAgIEFkZGl0aW9uYWwgc3ViY2xhc3MgaW5pdCBtdXN0IGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcgdGhpcworICAgICAgICB1bmxlc3MgIF91dGVzdD1UcnVlIGlzIHBhc3NlZCB0byBzdXBwcmVzcyB3YWl0X3dpbmRvdygpLgorCisgICAgICAgIHRpdGxlIC0gc3RyaW5nLCB0aXRsZSBvZiBwb3B1cCBkaWFsb2cKKyAgICAgICAgbWVzc2FnZSAtIHN0cmluZywgaW5mb3JtYXRpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkKKyAgICAgICAgdGV4dDAgLSBpbml0aWFsIHZhbHVlIGZvciBlbnRyeQorICAgICAgICB1c2VkX25hbWVzIC0gbmFtZXMgYWxyZWFkeSBpbiB1c2UKKyAgICAgICAgX2h0ZXN0IC0gYm9vbCwgY2hhbmdlIGJveCBsb2NhdGlvbiB3aGVuIHJ1bm5pbmcgaHRlc3QKKyAgICAgICAgX3V0ZXN0IC0gYm9vbCwgbGVhdmUgd2luZG93IGhpZGRlbiBhbmQgbm90IG1vZGFsCisgICAgICAgICIiIgorICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCisgICAgICAgIHNlbGYud2l0aGRyYXcoKSAgIyBIaWRlIHdoaWxlIGNvbmZpZ3VyaW5nLCBlc3BlY2lhbGx5IGdlb21ldHJ5LgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQorICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCisgICAgICAgIHNlbGYudGV4dDAgPSB0ZXh0MAorICAgICAgICBzZWxmLnVzZWRfbmFtZXMgPSB1c2VkX25hbWVzCisgICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKKyAgICAgICAgc2VsZi5ncmFiX3NldCgpCisgICAgICAgIHdpbmRvd2luZ3N5c3RlbSA9IHNlbGYudGsuY2FsbCgndGsnLCAnd2luZG93aW5nc3lzdGVtJykKKyAgICAgICAgaWYgd2luZG93aW5nc3lzdGVtID09ICdhcXVhJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJzo6dGs6OnVuc3VwcG9ydGVkOjpNYWNXaW5kb3dTdHlsZScsICdzdHlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3csICdtb3ZlYWJsZU1vZGFsJywgJycpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5iaW5kKCI8Q29tbWFuZC0uPiIsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLmJpbmQoJzxLZXktRXNjYXBlPicsIHNlbGYuY2FuY2VsKQorICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jYW5jZWwpCisgICAgICAgIHNlbGYuYmluZCgnPEtleS1SZXR1cm4+Jywgc2VsZi5vaykKKyAgICAgICAgc2VsZi5iaW5kKCI8S1BfRW50ZXI+Iiwgc2VsZi5vaykKKyAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZhbHNlLCB3aWR0aD1GYWxzZSkKKyAgICAgICAgc2VsZi5jcmVhdGVfd2lkZ2V0cygpCisgICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpICAjIE5lZWRlZCBoZXJlIGZvciB3aW5mb19yZXF3aWR0aCBiZWxvdy4KKyAgICAgICAgc2VsZi5nZW9tZXRyeSggICMgQ2VudGVyIGRpYWxvZyBvdmVyIHBhcmVudCAob3IgYmVsb3cgaHRlc3QgYm94KS4KKyAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKworICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKworICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTUwKQorICAgICAgICAgICAgICAgICkgKQorICAgICAgICBpZiBub3QgX3V0ZXN0OgorICAgICAgICAgICAgc2VsZi5kZWljb25pZnkoKSAgIyBVbmhpZGUgbm93IHRoYXQgZ2VvbWV0cnkgc2V0LgorICAgICAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCisKKyAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6ICAjIENhbGwgZnJvbSBvdmVycmlkZSwgaWYgYW55LgorICAgICAgICAjIEJpbmQgdG8gc2VsZiB3aWRnZXRzIG5lZWRlZCBmb3IgZW50cnlfb2sgb3IgdW5pdHRlc3QuCisgICAgICAgIHNlbGYuZnJhbWUgPSBmcmFtZSA9IEZyYW1lKHNlbGYsIHBhZGRpbmc9MTApCisgICAgICAgIGZyYW1lLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBzdGlja3k9J25ld3MnKQorICAgICAgICBmcmFtZS5ncmlkX2NvbHVtbmNvbmZpZ3VyZSgwLCB3ZWlnaHQ9MSkKKworICAgICAgICBlbnRyeWxhYmVsID0gTGFiZWwoZnJhbWUsIGFuY2hvcj0ndycsIGp1c3RpZnk9J2xlZnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD1zZWxmLm1lc3NhZ2UpCisgICAgICAgIHNlbGYuZW50cnl2YXIgPSBTdHJpbmdWYXIoc2VsZiwgc2VsZi50ZXh0MCkKKyAgICAgICAgc2VsZi5lbnRyeSA9IEVudHJ5KGZyYW1lLCB3aWR0aD0zMCwgdGV4dHZhcmlhYmxlPXNlbGYuZW50cnl2YXIpCisgICAgICAgIHNlbGYuZW50cnkuZm9jdXNfc2V0KCkKKyAgICAgICAgc2VsZi5lcnJvcl9mb250ID0gRm9udChuYW1lPSdUa0NhcHRpb25Gb250JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHM9VHJ1ZSwgcm9vdD1zZWxmLnBhcmVudCkKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvciA9IExhYmVsKGZyYW1lLCB0ZXh0PScgJywgZm9yZWdyb3VuZD0ncmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQ9c2VsZi5lcnJvcl9mb250KQorICAgICAgICBzZWxmLmJ1dHRvbl9vayA9IEJ1dHRvbigKKyAgICAgICAgICAgICAgICBmcmFtZSwgdGV4dD0nT0snLCBkZWZhdWx0PSdhY3RpdmUnLCBjb21tYW5kPXNlbGYub2spCisgICAgICAgIHNlbGYuYnV0dG9uX2NhbmNlbCA9IEJ1dHRvbigKKyAgICAgICAgICAgICAgICBmcmFtZSwgdGV4dD0nQ2FuY2VsJywgY29tbWFuZD1zZWxmLmNhbmNlbCkKKworICAgICAgICBlbnRyeWxhYmVsLmdyaWQoY29sdW1uPTAsIHJvdz0wLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwgc3RpY2t5PVcpCisgICAgICAgIHNlbGYuZW50cnkuZ3JpZChjb2x1bW49MCwgcm93PTEsIGNvbHVtbnNwYW49MywgcGFkeD01LCBzdGlja3k9VytFLAorICAgICAgICAgICAgICAgICAgICAgICAgcGFkeT1bMTAsMF0pCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3IuZ3JpZChjb2x1bW49MCwgcm93PTIsIGNvbHVtbnNwYW49MywgcGFkeD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RpY2t5PVcrRSkKKyAgICAgICAgc2VsZi5idXR0b25fb2suZ3JpZChjb2x1bW49MSwgcm93PTk5LCBwYWR4PTUpCisgICAgICAgIHNlbGYuYnV0dG9uX2NhbmNlbC5ncmlkKGNvbHVtbj0yLCByb3c9OTksIHBhZHg9NSkKKworICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSwgd2lkZ2V0PU5vbmUpOgorICAgICAgICAjc2VsZi5iZWxsKGRpc3BsYXlvZj1zZWxmKQorICAgICAgICAod2lkZ2V0IG9yIHNlbGYuZW50cnlfZXJyb3IpWyd0ZXh0J10gPSAnRVJST1I6ICcgKyBtZXNzYWdlCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6ICAjIEV4YW1wbGU6IHVzdWFsbHkgcmVwbGFjZS4KKyAgICAgICAgIlJldHVybiBub24tYmxhbmsgZW50cnkgb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGVudHJ5ID0gc2VsZi5lbnRyeS5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBlbnRyeToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdibGFuayBsaW5lLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZW50cnkKKworICAgIGRlZiBvayhzZWxmLCBldmVudD1Ob25lKTogICMgRG8gbm90IHJlcGxhY2UuCisgICAgICAgICcnJ0lmIGVudHJ5IGlzIHZhbGlkLCBiaW5kIGl0IHRvICdyZXN1bHQnIGFuZCBkZXN0cm95IHRrIHdpZGdldC4KKworICAgICAgICBPdGhlcndpc2UgbGVhdmUgZGlhbG9nIG9wZW4gZm9yIHVzZXIgdG8gY29ycmVjdCBlbnRyeSBvciBjYW5jZWwuCisgICAgICAgICcnJworICAgICAgICBlbnRyeSA9IHNlbGYuZW50cnlfb2soKQorICAgICAgICBpZiBlbnRyeSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gZW50cnkKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFtPa10gbW92ZXMgZm9jdXMuICAoPFJldHVybj4gZG9lcyBub3QuKSAgTW92ZSBpdCBiYWNrLgorICAgICAgICAgICAgc2VsZi5lbnRyeS5mb2N1c19zZXQoKQorCisgICAgZGVmIGNhbmNlbChzZWxmLCBldmVudD1Ob25lKTogICMgRG8gbm90IHJlcGxhY2UuCisgICAgICAgICJTZXQgZGlhbG9nIHJlc3VsdCB0byBOb25lIGFuZCBkZXN0cm95IHRrIHdpZGdldC4iCisgICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmRlc3Ryb3koKQorCisKK2NsYXNzIFNlY3Rpb25OYW1lKFF1ZXJ5KToKKyAgICAiR2V0IGEgbmFtZSBmb3IgYSBjb25maWcgZmlsZSBzZWN0aW9uIG5hbWUuIgorICAgICMgVXNlZCBpbiBDb25maWdEaWFsb2cuR2V0TmV3S2V5c05hbWUsIC5HZXROZXdUaGVtZU5hbWUgKDgzNykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzLAorICAgICAgICAgICAgICAgICAqLCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdXNlZF9uYW1lcz11c2VkX25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gc2Vuc2libGUgQ29uZmlnUGFyc2VyIHNlY3Rpb24gbmFtZSBvciBOb25lLiIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuZW50cnkuZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBuYW1lIHNwZWNpZmllZC4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBsZW4obmFtZSk+MzA6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbmFtZSBpcyBsb25nZXIgdGhhbiAzMCBjaGFyYWN0ZXJzLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbGlmIG5hbWUgaW4gc2VsZi51c2VkX25hbWVzOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25hbWUgaXMgYWxyZWFkeSBpbiB1c2UuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBuYW1lCisKKworY2xhc3MgTW9kdWxlTmFtZShRdWVyeSk6CisgICAgIkdldCBhIG1vZHVsZSBuYW1lIGZvciBPcGVuIE1vZHVsZSBtZW51IGVudHJ5LiIKKyAgICAjIFVzZWQgaW4gb3Blbl9tb2R1bGUgKGVkaXRvci5FZGl0b3JXaW5kb3cgdW50aWwgbW92ZSB0byBpb2JpbmRpbmcpLgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHRleHQwLAorICAgICAgICAgICAgICAgICAqLCBfaHRlc3Q9RmFsc2UsIF91dGVzdD1GYWxzZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDA9dGV4dDAsCisgICAgICAgICAgICAgICAgICAgICAgIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gZW50ZXJlZCBtb2R1bGUgbmFtZSBhcyBmaWxlIHBhdGggb3IgTm9uZS4iCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIG5hbWUgPSBzZWxmLmVudHJ5LmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbm8gbmFtZSBzcGVjaWZpZWQuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgWFhYIE91Z2h0IHRvIGluc2VydCBjdXJyZW50IGZpbGUncyBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgcGF0aC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEltcG9ydEVycm9yKSBhcyBtc2c6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcihzdHIobXNnKSkKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIHNwZWMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCJtb2R1bGUgbm90IGZvdW5kIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWMubG9hZGVyLCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcik6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcigibm90IGEgc291cmNlLWJhc2VkIG1vZHVsZSIpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlX3BhdGggPSBzcGVjLmxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoImxvYWRlciBkb2VzIG5vdCBzdXBwb3J0IGdldF9maWxlbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gZmlsZV9wYXRoCisKKworY2xhc3MgSGVscFNvdXJjZShRdWVyeSk6CisgICAgIkdldCBtZW51IG5hbWUgYW5kIGhlbHAgc291cmNlIGZvciBIZWxwIG1lbnUuIgorICAgICMgVXNlZCBpbiBDb25maWdEaWFsb2cuSGVscExpc3RJdGVtQWRkL0VkaXQsICg5NDEvOSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCAqLCBtZW51aXRlbT0nJywgZmlsZXBhdGg9JycsCisgICAgICAgICAgICAgICAgIHVzZWRfbmFtZXM9e30sIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgIiIiR2V0IG1lbnUgZW50cnkgYW5kIHVybC9sb2NhbCBmaWxlIGZvciBBZGRpdGlvbmFsIEhlbHAuCisKKyAgICAgICAgVXNlciBlbnRlcnMgYSBuYW1lIGZvciB0aGUgSGVscCByZXNvdXJjZSBhbmQgYSB3ZWIgdXJsIG9yIGZpbGUKKyAgICAgICAgbmFtZS4gVGhlIHVzZXIgY2FuIGJyb3dzZSBmb3IgdGhlIGZpbGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmZpbGVwYXRoID0gZmlsZXBhdGgKKyAgICAgICAgbWVzc2FnZSA9ICdOYW1lIGZvciBpdGVtIG9uIEhlbHAgbWVudTonCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oCisgICAgICAgICAgICAgICAgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDA9bWVudWl0ZW0sCisgICAgICAgICAgICAgICAgdXNlZF9uYW1lcz11c2VkX25hbWVzLCBfaHRlc3Q9X2h0ZXN0LCBfdXRlc3Q9X3V0ZXN0KQorCisgICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgorICAgICAgICBzdXBlcigpLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgZnJhbWUgPSBzZWxmLmZyYW1lCisgICAgICAgIHBhdGhsYWJlbCA9IExhYmVsKGZyYW1lLCBhbmNob3I9J3cnLCBqdXN0aWZ5PSdsZWZ0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD0nSGVscCBGaWxlIFBhdGg6IEVudGVyIFVSTCBvciBicm93c2UgZm9yIGZpbGUnKQorICAgICAgICBzZWxmLnBhdGh2YXIgPSBTdHJpbmdWYXIoc2VsZiwgc2VsZi5maWxlcGF0aCkKKyAgICAgICAgc2VsZi5wYXRoID0gRW50cnkoZnJhbWUsIHRleHR2YXJpYWJsZT1zZWxmLnBhdGh2YXIsIHdpZHRoPTQwKQorICAgICAgICBicm93c2UgPSBCdXR0b24oZnJhbWUsIHRleHQ9J0Jyb3dzZScsIHdpZHRoPTgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuYnJvd3NlX2ZpbGUpCisgICAgICAgIHNlbGYucGF0aF9lcnJvciA9IExhYmVsKGZyYW1lLCB0ZXh0PScgJywgZm9yZWdyb3VuZD0ncmVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1zZWxmLmVycm9yX2ZvbnQpCisKKyAgICAgICAgcGF0aGxhYmVsLmdyaWQoY29sdW1uPTAsIHJvdz0xMCwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsIHBhZHk9WzEwLDBdLAorICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VykKKyAgICAgICAgc2VsZi5wYXRoLmdyaWQoY29sdW1uPTAsIHJvdz0xMSwgY29sdW1uc3Bhbj0yLCBwYWR4PTUsIHN0aWNreT1XK0UsCisgICAgICAgICAgICAgICAgICAgICAgIHBhZHk9WzEwLDBdKQorICAgICAgICBicm93c2UuZ3JpZChjb2x1bW49Miwgcm93PTExLCBwYWR4PTUsIHN0aWNreT1XK1MpCisgICAgICAgIHNlbGYucGF0aF9lcnJvci5ncmlkKGNvbHVtbj0wLCByb3c9MTIsIGNvbHVtbnNwYW49MywgcGFkeD01LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VytFKQorCisgICAgZGVmIGFza2ZpbGVuYW1lKHNlbGYsIGZpbGV0eXBlcywgaW5pdGRpciwgaW5pdGZpbGUpOiAgIyBodGVzdCAjCisgICAgICAgICMgRXh0cmFjdGVkIGZyb20gYnJvd3NlX2ZpbGUgc28gY2FuIG1vY2sgZm9yIHVuaXR0ZXN0cy4KKyAgICAgICAgIyBDYW5ub3QgdW5pdHRlc3QgYXMgY2Fubm90IHNpbXVsYXRlIGJ1dHRvbiBjbGlja3MuCisgICAgICAgICMgVGVzdCBieSBydW5uaW5nIGh0ZXN0LCBzdWNoIGFzIGJ5IHJ1bm5pbmcgdGhpcyBmaWxlLgorICAgICAgICByZXR1cm4gZmlsZWRpYWxvZy5PcGVuKHBhcmVudD1zZWxmLCBmaWxldHlwZXM9ZmlsZXR5cGVzKVwKKyAgICAgICAgICAgICAgIC5zaG93KGluaXRpYWxkaXI9aW5pdGRpciwgaW5pdGlhbGZpbGU9aW5pdGZpbGUpCisKKyAgICBkZWYgYnJvd3NlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGV0eXBlcyA9IFsKKyAgICAgICAgICAgICgiSFRNTCBGaWxlcyIsICIqLmh0bSAqLmh0bWwiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJQREYgRmlsZXMiLCAiKi5wZGYiLCAiVEVYVCIpLAorICAgICAgICAgICAgKCJXaW5kb3dzIEhlbHAgRmlsZXMiLCAiKi5jaG0iKSwKKyAgICAgICAgICAgICgiVGV4dCBGaWxlcyIsICIqLnR4dCIsICJURVhUIiksCisgICAgICAgICAgICAoIkFsbCBGaWxlcyIsICIqIildCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGh2YXIuZ2V0KCkKKyAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgIGRpciwgYmFzZSA9IG9zLnBhdGguc3BsaXQocGF0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJhc2UgPSBOb25lCisgICAgICAgICAgICBpZiBwbGF0Zm9ybVs6M10gPT0gJ3dpbic6CisgICAgICAgICAgICAgICAgZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKSwgJ0RvYycpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgZmlsZSA9IHNlbGYuYXNrZmlsZW5hbWUoZmlsZXR5cGVzLCBkaXIsIGJhc2UpCisgICAgICAgIGlmIGZpbGU6CisgICAgICAgICAgICBzZWxmLnBhdGh2YXIuc2V0KGZpbGUpCisKKyAgICBpdGVtX29rID0gU2VjdGlvbk5hbWUuZW50cnlfb2sgICMgbG9jYWxpemUgZm9yIHRlc3Qgb3ZlcnJpZGUKKworICAgIGRlZiBwYXRoX29rKHNlbGYpOgorICAgICAgICAiU2ltcGxlIHZhbGlkaXR5IGNoZWNrIGZvciBtZW51IGZpbGUgcGF0aCIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aC5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBwYXRoOiAjbm8gcGF0aCBzcGVjaWZpZWQKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBoZWxwIGZpbGUgcGF0aCBzcGVjaWZpZWQuJywgc2VsZi5wYXRoX2Vycm9yKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgZWxpZiBub3QgcGF0aC5zdGFydHN3aXRoKCgnd3d3LicsICdodHRwJykpOgorICAgICAgICAgICAgaWYgcGF0aFs6NV0gPT0gJ2ZpbGU6JzoKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs1Ol0KKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignaGVscCBmaWxlIHBhdGggZG9lcyBub3QgZXhpc3QuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOiAgIyBmb3IgTWFjIFNhZmFyaQorICAgICAgICAgICAgICAgIHBhdGggPSAgImZpbGU6Ly8iICsgcGF0aAorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgZGVmIGVudHJ5X29rKHNlbGYpOgorICAgICAgICAiUmV0dXJuIGFwcGFyZW50bHkgdmFsaWQgKG5hbWUsIHBhdGgpIG9yIE5vbmUiCisgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIHNlbGYucGF0aF9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuaXRlbV9vaygpCisgICAgICAgIHBhdGggPSBzZWxmLnBhdGhfb2soKQorICAgICAgICByZXR1cm4gTm9uZSBpZiBuYW1lIGlzIE5vbmUgb3IgcGF0aCBpcyBOb25lIGVsc2UgKG5hbWUsIHBhdGgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3F1ZXJ5JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKKyAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KKyAgICBydW4oUXVlcnksIEhlbHBTb3VyY2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5IGIvTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9XaWRnZXRSZWRpcmVjdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yZWRpcmVjdG9yLnB5CmluZGV4IGI2NmJlOWUuLmVjNjgxZGUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvcmVkaXJlY3Rvci5weQpAQCAtMTA0LDcgKzEwNCw3IEBACiAKICAgICAgICAgTm90ZSB0aGF0IGlmIGEgcmVnaXN0ZXJlZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSBvcGVyYXRpb24gaXMgbm90CiAgICAgICAgIHBhc3NlZCB0aHJvdWdoIHRvIFRrLiAgQXBwbHkgdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IHNlbGYucmVnaXN0ZXIoKQotICAgICAgICB0byAqYXJncyB0byBhY2NvbXBsaXNoIHRoYXQuICBGb3IgYW4gZXhhbXBsZSwgc2VlIENvbG9yRGVsZWdhdG9yLnB5LgorICAgICAgICB0byAqYXJncyB0byBhY2NvbXBsaXNoIHRoYXQuICBGb3IgYW4gZXhhbXBsZSwgc2VlIGNvbG9yaXplci5weS4KIAogICAgICAgICAnJycKICAgICAgICAgbSA9IHNlbGYuX29wZXJhdGlvbnMuZ2V0KG9wZXJhdGlvbikKQEAgLTE1MSwxNCArMTUxLDEzIEBACiAKIAogZGVmIF93aWRnZXRfcmVkaXJlY3RvcihwYXJlbnQpOiAgIyBodGVzdCAjCi0gICAgZnJvbSB0a2ludGVyIGltcG9ydCBUaywgVGV4dAotICAgIGltcG9ydCByZQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKIAotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBXaWRnZXRSZWRpcmVjdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgdGV4dCA9IFRleHQocm9vdCkKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IFdpZGdldFJlZGlyZWN0b3IiKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICB0b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCisgICAgdGV4dCA9IFRleHQodG9wKQogICAgIHRleHQucGFjaygpCiAgICAgdGV4dC5mb2N1c19zZXQoKQogICAgIHJlZGlyID0gV2lkZ2V0UmVkaXJlY3Rvcih0ZXh0KQpAQCAtMTY2LDExICsxNjUsMTEgQEAKICAgICAgICAgcHJpbnQoImluc2VydCIsIGFyZ3MpCiAgICAgICAgIG9yaWdpbmFsX2luc2VydCgqYXJncykKICAgICBvcmlnaW5hbF9pbnNlcnQgPSByZWRpci5yZWdpc3RlcigiaW5zZXJ0IiwgbXlfaW5zZXJ0KQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfd2lkZ2V0cmVkaXInLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVkaXJlY3RvcicsCiAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfd2lkZ2V0X3JlZGlyZWN0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvcmVwbGFjZS5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9SZXBsYWNlRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yZXBsYWNlLnB5CmluZGV4IGYyZWEyMmUuLmFiZDllNTkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JlcGxhY2VEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvcmVwbGFjZS5weQpAQCAtMywxOCArMywxOCBAQAogRGVmaW5lcyB2YXJpb3VzIHJlcGxhY2UgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSByZXBsYWNlLCByZXBsYWNlIGFsbCwKIHJlcGxhY2UrZmluZC4KICIiIgotZnJvbSB0a2ludGVyIGltcG9ydCAqCi0KLWZyb20gaWRsZWxpYiBpbXBvcnQgU2VhcmNoRW5naW5lCi1mcm9tIGlkbGVsaWIuU2VhcmNoRGlhbG9nQmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQogaW1wb3J0IHJlCiAKK2Zyb20gdGtpbnRlciBpbXBvcnQgU3RyaW5nVmFyLCBUY2xFcnJvcgorCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUKIAogZGVmIHJlcGxhY2UodGV4dCk6CiAgICAgIiIiUmV0dXJucyBhIHNpbmdsZXRvbiBSZXBsYWNlRGlhbG9nIGluc3RhbmNlLlRoZSBzaW5nbGUgZGlhbG9nCiAgICAgIHNhdmVzIHVzZXIgZW50cmllcyBhbmQgcHJlZmVyZW5jZXMgYWNyb3NzIGluc3RhbmNlcy4iIiIKICAgICByb290ID0gdGV4dC5fcm9vdCgpCi0gICAgZW5naW5lID0gU2VhcmNoRW5naW5lLmdldChyb290KQorICAgIGVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocm9vdCkKICAgICBpZiBub3QgaGFzYXR0cihlbmdpbmUsICJfcmVwbGFjZWRpYWxvZyIpOgogICAgICAgICBlbmdpbmUuX3JlcGxhY2VkaWFsb2cgPSBSZXBsYWNlRGlhbG9nKHJvb3QsIGVuZ2luZSkKICAgICBkaWFsb2cgPSBlbmdpbmUuX3JlcGxhY2VkaWFsb2cKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICByZXMgPSBzZWxmLmVuZ2luZS5zZWFyY2hfdGV4dCh0ZXh0LCBwcm9nKQogICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgdGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdGV4dC50YWdfcmVtb3ZlKCJzZWwiLCAiMS4wIiwgImVuZCIpCiAgICAgICAgIHRleHQudGFnX3JlbW92ZSgiaGl0IiwgIjEuMCIsICJlbmQiKQpAQCAtMTQyLDcgKzE0Miw3IEBACiAgICAgICAgIHRleHQgPSBzZWxmLnRleHQKICAgICAgICAgcmVzID0gc2VsZi5lbmdpbmUuc2VhcmNoX3RleHQodGV4dCwgTm9uZSwgb2spCiAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBsaW5lLCBtID0gcmVzCiAgICAgICAgIGksIGogPSBtLnNwYW4oKQpAQCAtMTY0LDcgKzE2NCw3IEBACiAgICAgICAgICAgICBwb3MgPSBOb25lCiAgICAgICAgIGlmIG5vdCBwb3M6CiAgICAgICAgICAgICBmaXJzdCA9IGxhc3QgPSBwb3MgPSB0ZXh0LmluZGV4KCJpbnNlcnQiKQotICAgICAgICBsaW5lLCBjb2wgPSBTZWFyY2hFbmdpbmUuZ2V0X2xpbmVfY29sKHBvcykKKyAgICAgICAgbGluZSwgY29sID0gc2VhcmNoZW5naW5lLmdldF9saW5lX2NvbChwb3MpCiAgICAgICAgIGNoYXJzID0gdGV4dC5nZXQoIiVkLjAiICUgbGluZSwgIiVkLjAiICUgKGxpbmUrMSkpCiAgICAgICAgIG0gPSBwcm9nLm1hdGNoKGNoYXJzLCBjb2wpCiAgICAgICAgIGlmIG5vdCBwcm9nOgpAQCAtMjA0LDExICsyMDQsMTMgQEAKIAogCiBkZWYgX3JlcGxhY2VfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICAiIiJodGVzdCB3cmFwcGVyIGZ1bmN0aW9uIiIiCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dCwgRU5ELCBTRUwKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKwogICAgIGJveCA9IFRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgUmVwbGFjZURpYWxvZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIGJveC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKIAogICAgICMgbW9jayB1bmRvIGRlbGVnYXRvciBtZXRob2RzCiAgICAgZGVmIHVuZG9fYmxvY2tfc3RhcnQoKToKQEAgLTIzNCw3ICsyMzYsNyBAQAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcmVwbGFjZWRpYWxvZycsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9yZXBsYWNlJywKICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKIAogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcnBjLnB5IGIvTGliL2lkbGVsaWIvcnBjLnB5CmluZGV4IDQ4MTA1ZjIuLjhmNTdlZGI4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ycGMucHkKKysrIGIvTGliL2lkbGVsaWIvcnBjLnB5CkBAIC0yNiwyMyArMjYsMjEgQEAKIGFjY29tcGxpc2hlZCBpbiBJZGxlLgogCiAiIiIKLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBjb3B5cmVnCiBpbXBvcnQgaW8KLWltcG9ydCBzb2NrZXQKK2ltcG9ydCBtYXJzaGFsCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBxdWV1ZQogaW1wb3J0IHNlbGVjdAoraW1wb3J0IHNvY2tldAogaW1wb3J0IHNvY2tldHNlcnZlcgogaW1wb3J0IHN0cnVjdAotaW1wb3J0IHBpY2tsZQoraW1wb3J0IHN5cwogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHF1ZXVlCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgY29weXJlZwogaW1wb3J0IHR5cGVzCi1pbXBvcnQgbWFyc2hhbAotaW1wb3J0IGJ1aWx0aW5zCi0KIAogZGVmIHVucGlja2xlX2NvZGUobXMpOgogICAgIGNvID0gbWFyc2hhbC5sb2FkcyhtcykKQEAgLTYwLDEwICs1OCwxMiBAQAogICAgIHAuZHVtcChvYmopCiAgICAgcmV0dXJuIGYuZ2V0dmFsdWUoKQogCisKIGNsYXNzIENvZGVQaWNrbGVyKHBpY2tsZS5QaWNrbGVyKToKICAgICBkaXNwYXRjaF90YWJsZSA9IHt0eXBlcy5Db2RlVHlwZTogcGlja2xlX2NvZGV9CiAgICAgZGlzcGF0Y2hfdGFibGUudXBkYXRlKGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUpCiAKKwogQlVGU0laRSA9IDgqMTAyNAogTE9DQUxIT1NUID0gJzEyNy4wLjAuMScKIApAQCAtNDg3LDE2ICs0ODcsMTkgQEAKICAgICAjIFRva2VuIG1peC1pbiBjbGFzcwogICAgIHBhc3MKIAorCiBkZWYgcmVtb3RlcmVmKG9iaik6CiAgICAgb2lkID0gaWQob2JqKQogICAgIG9iamVjdHRhYmxlW29pZF0gPSBvYmoKICAgICByZXR1cm4gUmVtb3RlUHJveHkob2lkKQogCisKIGNsYXNzIFJlbW90ZVByb3h5KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb2lkKToKICAgICAgICAgc2VsZi5vaWQgPSBvaWQKIAorCiBjbGFzcyBSUENIYW5kbGVyKHNvY2tldHNlcnZlci5CYXNlUmVxdWVzdEhhbmRsZXIsIFNvY2tldElPKToKIAogICAgIGRlYnVnZ2luZyA9IEZhbHNlCkBAIC01MTQsNiArNTE3LDcgQEAKICAgICBkZWYgZ2V0X3JlbW90ZV9wcm94eShzZWxmLCBvaWQpOgogICAgICAgICByZXR1cm4gUlBDUHJveHkoc2VsZiwgb2lkKQogCisKIGNsYXNzIFJQQ0NsaWVudChTb2NrZXRJTyk6CiAKICAgICBkZWJ1Z2dpbmcgPSBGYWxzZQpAQCAtNTM5LDYgKzU0Myw3IEBACiAgICAgZGVmIGdldF9yZW1vdGVfcHJveHkoc2VsZiwgb2lkKToKICAgICAgICAgcmV0dXJuIFJQQ1Byb3h5KHNlbGYsIG9pZCkKIAorCiBjbGFzcyBSUENQcm94eShvYmplY3QpOgogCiAgICAgX19tZXRob2RzID0gTm9uZQpAQCAtNTg3LDYgKzU5Miw3IEBACiAgICAgICAgIGlmIG5vdCBjYWxsYWJsZShhdHRyKToKICAgICAgICAgICAgIGF0dHJpYnV0ZXNbbmFtZV0gPSAxCiAKKwogY2xhc3MgTWV0aG9kUHJveHkob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NraW8sIG9pZCwgbmFtZSk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Sc3RyaXBFeHRlbnNpb24ucHkgYi9MaWIvaWRsZWxpYi9yc3RyaXAucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JzdHJpcEV4dGVuc2lvbi5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcnN0cmlwLnB5CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ydW4ucHkgYi9MaWIvaWRsZWxpYi9ydW4ucHkKaW5kZXggMjhjZTQyMC4uYWZhOTc0NCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnVuLnB5CisrKyBiL0xpYi9pZGxlbGliL3J1bi5weQpAQCAtMSwzMyArMSw0NSBAQAotaW1wb3J0IHN5cworaW1wb3J0IGlvCiBpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgcXVldWUKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKIGltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCBxdWV1ZQotaW1wb3J0IHRraW50ZXIKK2ltcG9ydCB3YXJuaW5ncwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBzCi1mcm9tIGlkbGVsaWIgaW1wb3J0IEF1dG9Db21wbGV0ZQoraW1wb3J0IHRraW50ZXIgICMgVGNsLCBkZWxldGlvbnMsIG1lc3NhZ2Vib3ggaWYgc3RhcnR1cCBmYWlscwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZURlYnVnZ2VyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlbW90ZU9iamVjdEJyb3dzZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgU3RhY2tWaWV3ZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgcnBjCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKLWZyb20gaWRsZWxpYiBpbXBvcnQgSU9CaW5kaW5nCi0KK2Zyb20gaWRsZWxpYiBpbXBvcnQgYXV0b2NvbXBsZXRlICAjIEF1dG9Db21wbGV0ZSwgZmV0Y2hfZW5jb2RpbmdzCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNhbGx0aXBzICAjIENhbGxUaXBzCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyX3IgICMgc3RhcnRfZGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdvYmpfciAgIyByZW1vdGVfb2JqZWN0X3RyZWVfaXRlbQorZnJvbSBpZGxlbGliIGltcG9ydCBpb21lbnUgICMgZW5jb2RpbmcKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcnBjICAjIG11bHRpcGxlIG9iamVjdHMKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc3RhY2t2aWV3ZXIgICMgU3RhY2tUcmVlSXRlbQogaW1wb3J0IF9fbWFpbl9fCiAKIGZvciBtb2QgaW4gKCdzaW1wbGVkaWFsb2cnLCAnbWVzc2FnZWJveCcsICdmb250JywKICAgICAgICAgICAgICdkaWFsb2cnLCAnZmlsZWRpYWxvZycsICdjb21tb25kaWFsb2cnLAotICAgICAgICAgICAgJ2NvbG9yY2hvb3NlcicpOgorICAgICAgICAgICAgJ3R0aycpOgogICAgIGRlbGF0dHIodGtpbnRlciwgbW9kKQogICAgIGRlbCBzeXMubW9kdWxlc1sndGtpbnRlci4nICsgbW9kXQogCiBMT0NBTEhPU1QgPSAnMTI3LjAuMC4xJwogCi1pbXBvcnQgd2FybmluZ3MKKworZGVmIGlkbGVfZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKKyAgICAiIiJGb3JtYXQgd2FybmluZ3MgdGhlIElETEUgd2F5LiIiIgorCisgICAgcyA9ICJcbldhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKTpcbiIKKyAgICBzICs9ICcgIEZpbGUgXCIlc1wiLCBsaW5lICVzXG4nICUgKGZpbGVuYW1lLCBsaW5lbm8pCisgICAgaWYgbGluZSBpcyBOb25lOgorICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKKyAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgaWYgbGluZToKKyAgICAgICAgcyArPSAiICAgICVzXG4iICUgbGluZQorICAgIHMgKz0gIiVzOiAlc1xuIiAlIChjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKKyAgICByZXR1cm4gcwogCiBkZWYgaWRsZV9zaG93d2FybmluZ19zdWJwcm9jKAogICAgICAgICBtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZT1Ob25lLCBsaW5lPU5vbmUpOgpAQCAtMzgsNyArNTAsNyBAQAogICAgIGlmIGZpbGUgaXMgTm9uZToKICAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKICAgICB0cnk6Ci0gICAgICAgIGZpbGUud3JpdGUoUHlTaGVsbC5pZGxlX2Zvcm1hdHdhcm5pbmcoCisgICAgICAgIGZpbGUud3JpdGUoaWRsZV9mb3JtYXR3YXJuaW5nKAogICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lKSkKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcGFzcyAjIHRoZSBmaWxlIChwcm9iYWJseSBzdGRlcnIpIGlzIGludmFsaWQgLSB0aGlzIHdhcm5pbmcgZ2V0cyBsb3N0LgpAQCAtODgsNyArMTAwLDcgQEAKICAgICBNeUhhbmRsZXIgb2JqZWN0LiAgVGhhdCByZWZlcmVuY2UgaXMgc2F2ZWQgYXMgYXR0cmlidXRlIHJwY2hhbmRsZXIgb2YgdGhlCiAgICAgRXhlY3V0aXZlIGluc3RhbmNlLiAgVGhlIEV4ZWN1dGl2ZSBtZXRob2RzIGhhdmUgYWNjZXNzIHRvIHRoZSByZWZlcmVuY2UgYW5kCiAgICAgY2FuIHBhc3MgaXQgb24gdG8gZW50aXRpZXMgdGhhdCB0aGV5IGNvbW1hbmQKLSAgICAoZS5nLiBSZW1vdGVEZWJ1Z2dlci5EZWJ1Z2dlci5zdGFydF9kZWJ1Z2dlcigpKS4gIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGNhbgorICAgIChlLmcuIGRlYnVnZ2VyX3IuRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoKSkuICBUaGUgbGF0dGVyLCBpbiB0dXJuLCBjYW4KICAgICBjYWxsIE15SGFuZGxlcihTb2NrZXRJTykgcmVnaXN0ZXIvdW5yZWdpc3RlciBtZXRob2RzIHZpYSB0aGUgcmVmZXJlbmNlIHRvCiAgICAgcmVnaXN0ZXIgYW5kIHVucmVnaXN0ZXIgdGhlbXNlbHZlcy4KIApAQCAtMjEwLDcgKzIyMiw3IEBACiAgICAgICAgICAgICB0YmUgPSB0cmFjZWJhY2suZXh0cmFjdF90Yih0YikKICAgICAgICAgICAgIHByaW50KCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6JywgZmlsZT1lZmlsZSkKICAgICAgICAgICAgIGV4Y2x1ZGUgPSAoInJ1bi5weSIsICJycGMucHkiLCAidGhyZWFkaW5nLnB5IiwgInF1ZXVlLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIlJlbW90ZURlYnVnZ2VyLnB5IiwgImJkYi5weSIpCisgICAgICAgICAgICAgICAgICAgICAgICJkZWJ1Z2dlcl9yLnB5IiwgImJkYi5weSIpCiAgICAgICAgICAgICBjbGVhbnVwX3RyYWNlYmFjayh0YmUsIGV4Y2x1ZGUpCiAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfbGlzdCh0YmUsIGZpbGU9ZWZpbGUpCiAgICAgICAgIGxpbmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSh0eXAsIGV4YykKQEAgLTI2Nyw2ICsyNzksNyBAQAogICAgIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpCiAgICAgc3lzLmV4aXQoMCkKIAorCiBjbGFzcyBNeVJQQ1NlcnZlcihycGMuUlBDU2VydmVyKToKIAogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgpAQCAtMjk3LDYgKzMxMCw5NiBAQAogICAgICAgICAgICAgcXVpdHRpbmcgPSBUcnVlCiAgICAgICAgICAgICB0aHJlYWQuaW50ZXJydXB0X21haW4oKQogCisKKyMgUHNldWRvZmlsZXMgZm9yIHNoZWxsLXJlbW90ZSBjb21tdW5pY2F0aW9uIChhbHNvIHVzZWQgaW4gcHlzaGVsbCkKKworY2xhc3MgUHNldWRvRmlsZShpby5UZXh0SU9CYXNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6CisgICAgICAgIHNlbGYuc2hlbGwgPSBzaGVsbAorICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzCisgICAgICAgIHNlbGYuX2VuY29kaW5nID0gZW5jb2RpbmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBlbmNvZGluZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2VuY29kaW5nCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICc8JXM+JyAlIHNlbGYudGFncworCisgICAgZGVmIGlzYXR0eShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworCitjbGFzcyBQc2V1ZG9PdXRwdXRGaWxlKFBzZXVkb0ZpbGUpOgorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIHMpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgdHlwZShzKSBpcyBub3Qgc3RyOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgc3RyLCBub3QgJyArIHR5cGUocykuX19uYW1lX18pCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTk0ODEKKyAgICAgICAgICAgIHMgPSBzdHIuX19zdHJfXyhzKQorICAgICAgICByZXR1cm4gc2VsZi5zaGVsbC53cml0ZShzLCBzZWxmLnRhZ3MpCisKKworY2xhc3MgUHNldWRvSW5wdXRGaWxlKFBzZXVkb0ZpbGUpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgUHNldWRvRmlsZS5fX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKKworICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2xpbmVfYnVmZmVyCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKKyAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2hpbGUgbGVuKHJlc3VsdCkgPCBzaXplOgorICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQorICAgICAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSByZXN1bHRbc2l6ZTpdCisgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOnNpemVdCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKKyAgICAgICAgaWYgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQorICAgICAgICBpZiBzaXplIGlzIE5vbmU6CisgICAgICAgICAgICBzaXplID0gLTEKKyAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQorICAgICAgICBsaW5lID0gc2VsZi5fbGluZV9idWZmZXIgb3Igc2VsZi5zaGVsbC5yZWFkbGluZSgpCisgICAgICAgIGlmIHNpemUgPCAwOgorICAgICAgICAgICAgc2l6ZSA9IGxlbihsaW5lKQorICAgICAgICBlb2wgPSBsaW5lLmZpbmQoJ1xuJywgMCwgc2l6ZSkKKyAgICAgICAgaWYgZW9sID49IDA6CisgICAgICAgICAgICBzaXplID0gZW9sICsgMQorICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IGxpbmVbc2l6ZTpdCisgICAgICAgIHJldHVybiBsaW5lWzpzaXplXQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLnNoZWxsLmNsb3NlKCkKKworCiBjbGFzcyBNeUhhbmRsZXIocnBjLlJQQ0hhbmRsZXIpOgogCiAgICAgZGVmIGhhbmRsZShzZWxmKToKQEAgLTMwNCwxMiArNDA3LDEyIEBACiAgICAgICAgIGV4ZWN1dGl2ZSA9IEV4ZWN1dGl2ZShzZWxmKQogICAgICAgICBzZWxmLnJlZ2lzdGVyKCJleGVjIiwgZXhlY3V0aXZlKQogICAgICAgICBzZWxmLmNvbnNvbGUgPSBzZWxmLmdldF9yZW1vdGVfcHJveHkoImNvbnNvbGUiKQotICAgICAgICBzeXMuc3RkaW4gPSBQeVNoZWxsLlBzZXVkb0lucHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRpbiIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzeXMuc3Rkb3V0ID0gUHlTaGVsbC5Qc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZG91dCIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzeXMuc3RkZXJyID0gUHlTaGVsbC5Qc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGVyciIsCi0gICAgICAgICAgICAgICAgSU9CaW5kaW5nLmVuY29kaW5nKQorICAgICAgICBzeXMuc3RkaW4gPSBQc2V1ZG9JbnB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkaW4iLAorICAgICAgICAgICAgICAgIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc3lzLnN0ZG91dCA9IFBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3Rkb3V0IiwKKyAgICAgICAgICAgICAgICBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHN5cy5zdGRlcnIgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGVyciIsCisgICAgICAgICAgICAgICAgaW9tZW51LmVuY29kaW5nKQogCiAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHJwYy5kaXNwbGF5aG9vawogICAgICAgICAjIHBhZ2UgaGVscCgpIHRleHQgdG8gc2hlbGwuCkBAIC0zNDUsOCArNDQ4LDggQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcnBjaGFuZGxlcik6CiAgICAgICAgIHNlbGYucnBjaGFuZGxlciA9IHJwY2hhbmRsZXIKICAgICAgICAgc2VsZi5sb2NhbHMgPSBfX21haW5fXy5fX2RpY3RfXwotICAgICAgICBzZWxmLmNhbGx0aXAgPSBDYWxsVGlwcy5DYWxsVGlwcygpCi0gICAgICAgIHNlbGYuYXV0b2NvbXBsZXRlID0gQXV0b0NvbXBsZXRlLkF1dG9Db21wbGV0ZSgpCisgICAgICAgIHNlbGYuY2FsbHRpcCA9IGNhbGx0aXBzLkNhbGxUaXBzKCkKKyAgICAgICAgc2VsZi5hdXRvY29tcGxldGUgPSBhdXRvY29tcGxldGUuQXV0b0NvbXBsZXRlKCkKIAogICAgIGRlZiBydW5jb2RlKHNlbGYsIGNvZGUpOgogICAgICAgICBnbG9iYWwgaW50ZXJydXB0YWJsZQpAQCAtMzc4LDcgKzQ4MSw3IEBACiAgICAgICAgICAgICB0aHJlYWQuaW50ZXJydXB0X21haW4oKQogCiAgICAgZGVmIHN0YXJ0X3RoZV9kZWJ1Z2dlcihzZWxmLCBndWlfYWRhcF9vaWQpOgotICAgICAgICByZXR1cm4gUmVtb3RlRGVidWdnZXIuc3RhcnRfZGVidWdnZXIoc2VsZi5ycGNoYW5kbGVyLCBndWlfYWRhcF9vaWQpCisgICAgICAgIHJldHVybiBkZWJ1Z2dlcl9yLnN0YXJ0X2RlYnVnZ2VyKHNlbGYucnBjaGFuZGxlciwgZ3VpX2FkYXBfb2lkKQogCiAgICAgZGVmIHN0b3BfdGhlX2RlYnVnZ2VyKHNlbGYsIGlkYl9hZGFwX29pZCk6CiAgICAgICAgICJVbnJlZ2lzdGVyIHRoZSBJZGIgQWRhcHRlci4gIExpbmsgb2JqZWN0cyBhbmQgSWRiIHRoZW4gc3ViamVjdCB0byBHQyIKQEAgLTQwMiw3ICs1MDUsNyBAQAogICAgICAgICAgICAgdGIgPSB0Yi50Yl9uZXh0CiAgICAgICAgIHN5cy5sYXN0X3R5cGUgPSB0eXAKICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWwKLSAgICAgICAgaXRlbSA9IFN0YWNrVmlld2VyLlN0YWNrVHJlZUl0ZW0oZmxpc3QsIHRiKQotICAgICAgICByZXR1cm4gUmVtb3RlT2JqZWN0QnJvd3Nlci5yZW1vdGVfb2JqZWN0X3RyZWVfaXRlbShpdGVtKQorICAgICAgICBpdGVtID0gc3RhY2t2aWV3ZXIuU3RhY2tUcmVlSXRlbShmbGlzdCwgdGIpCisgICAgICAgIHJldHVybiBkZWJ1Z29ial9yLnJlbW90ZV9vYmplY3RfdHJlZV9pdGVtKGl0ZW0pCiAKIGNhcHR1cmVfd2FybmluZ3MoRmFsc2UpICAjIE1ha2Ugc3VyZSB0dXJuZWQgb2ZmOyBzZWUgaXNzdWUgMTgwODEKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9ydW5zY3JpcHQucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CmluZGV4IDVjYjgxOGQuLjc5ZDg2YWQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuc2NyaXB0LnB5CkBAIC0yMCwxMSArMjAsMTIgQEAKIGltcG9ydCBvcwogaW1wb3J0IHRhYm5hbm55CiBpbXBvcnQgdG9rZW5pemUKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliIGltcG9ydCBweXNoZWxsCiAKIGluZGVudF9tZXNzYWdlID0gIiIiRXJyb3I6IEluY29uc2lzdGVudCBpbmRlbnRhdGlvbiBkZXRlY3RlZCEKIApAQCAtNDYsMTIgKzQ3LDEyIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KLSAgICAgICAgIyBQcm92aWRlIGluc3RhbmNlIHZhcmlhYmxlcyByZWZlcmVuY2VkIGJ5IERlYnVnZ2VyCisgICAgICAgICMgUHJvdmlkZSBpbnN0YW5jZSB2YXJpYWJsZXMgcmVmZXJlbmNlZCBieSBkZWJ1Z2dlcgogICAgICAgICAjIFhYWCBUaGlzIHNob3VsZCBiZSBkb25lIGRpZmZlcmVudGx5CiAgICAgICAgIHNlbGYuZmxpc3QgPSBzZWxmLmVkaXR3aW4uZmxpc3QKICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5lZGl0d2luLnJvb3QKIAotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDb2NvYVRrKCk6CiAgICAgICAgICAgICBzZWxmLmVkaXR3aW4udGV4dF9mcmFtZS5iaW5kKCc8PHJ1bi1tb2R1bGUtZXZlbnQtMj4+Jywgc2VsZi5fcnVuX21vZHVsZV9ldmVudCkKIAogICAgIGRlZiBjaGVja19tb2R1bGVfZXZlbnQoc2VsZiwgZXZlbnQpOgpAQCAtMTEyLDcgKzExMyw3IEBACiAgICAgICAgICAgICBzaGVsbC5zZXRfd2FybmluZ19zdHJlYW0oc2F2ZWRfc3RyZWFtKQogCiAgICAgZGVmIHJ1bl9tb2R1bGVfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNDb2NvYVRrKCk6CiAgICAgICAgICAgICAjIFRrLUNvY29hIGluIE1hY09TWCBpcyBicm9rZW4gdW50aWwgYXQgbGVhc3QKICAgICAgICAgICAgICMgVGsgOC41LjksIGFuZCB3aXRob3V0IHRoaXMgcmF0aGVyCiAgICAgICAgICAgICAjIGNydWRlIHdvcmthcm91bmQgSURMRSB3b3VsZCBoYW5nIHdoZW4gYSB1c2VyCkBAIC0xNDIsNyArMTQzLDcgQEAKICAgICAgICAgaWYgbm90IHNlbGYudGFibmFubnkoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmV0dXJuICdicmVhaycKICAgICAgICAgaW50ZXJwID0gc2VsZi5zaGVsbC5pbnRlcnAKLSAgICAgICAgaWYgUHlTaGVsbC51c2Vfc3VicHJvY2VzczoKKyAgICAgICAgaWYgcHlzaGVsbC51c2Vfc3VicHJvY2VzczoKICAgICAgICAgICAgIGludGVycC5yZXN0YXJ0X3N1YnByb2Nlc3Mod2l0aF9jd2Q9RmFsc2UsIGZpbGVuYW1lPQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lZGl0d2luLl9maWxlbmFtZV90b191bmljb2RlKGZpbGVuYW1lKSkKICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKQEAgLTE2MSw3ICsxNjIsNyBAQAogICAgICAgICBpbnRlcnAucHJlcGVuZF9zeXNwYXRoKGZpbGVuYW1lKQogICAgICAgICAjIFhYWCBLQksgMDNKdWwwNCBXaGVuIHJ1biB3L28gc3VicHJvY2VzcywgcnVudGltZSB3YXJuaW5ncyBzdGlsbAogICAgICAgICAjICAgICAgICAgZ28gdG8gX19zdGRlcnJfXy4gIFdpdGggc3VicHJvY2VzcywgdGhleSBnbyB0byB0aGUgc2hlbGwuCi0gICAgICAgICMgICAgICAgICBOZWVkIHRvIGNoYW5nZSBzdHJlYW1zIGluIFB5U2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlci4KKyAgICAgICAgIyAgICAgICAgIE5lZWQgdG8gY2hhbmdlIHN0cmVhbXMgaW4gcHlzaGVsbC5Nb2RpZmllZEludGVycHJldGVyLgogICAgICAgICBpbnRlcnAucnVuY29kZShjb2RlKQogICAgICAgICByZXR1cm4gJ2JyZWFrJwogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TY3JvbGxlZExpc3QucHkgYi9MaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA5MSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zY3JvbGxlZGxpc3QucHkKaW5kZXggNTM1NzZiNS4uY2MwOGMyNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2Nyb2xsZWRMaXN0LnB5CisrKyBiL0xpYi9pZGxlbGliL3Njcm9sbGVkbGlzdC5weQpAQCAtMSw1ICsxLDggQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKKwogCiBjbGFzcyBTY3JvbGxlZExpc3Q6CiAKQEAgLTIzLDcgKzI2LDcgQEAKICAgICAgICAgIyBCaW5kIGV2ZW50cyB0byB0aGUgbGlzdCBib3gKICAgICAgICAgbGlzdGJveC5iaW5kKCI8QnV0dG9uUmVsZWFzZS0xPiIsIHNlbGYuY2xpY2tfZXZlbnQpCiAgICAgICAgIGxpc3Rib3guYmluZCgiPERvdWJsZS1CdXR0b25SZWxlYXNlLTE+Iiwgc2VsZi5kb3VibGVfY2xpY2tfZXZlbnQpCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICBsaXN0Ym94LmJpbmQoIjxCdXR0b25QcmVzcy0yPiIsIHNlbGYucG9wdXBfZXZlbnQpCiAgICAgICAgICAgICBsaXN0Ym94LmJpbmQoIjxDb250cm9sLUJ1dHRvbi0xPiIsIHNlbGYucG9wdXBfZXZlbnQpCiAgICAgICAgIGVsc2U6CkBAIC0xMjQsMjIgKzEyNywyMCBAQAogICAgICAgICBwYXNzCiAKIAotZGVmIF9zY3JvbGxlZF9saXN0KHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFNjcm9sbGVkTGlzdCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorZGVmIF9zY3JvbGxlZF9saXN0KHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4KzIwMCwgeSArIDE3NSkpCiAgICAgY2xhc3MgTXlTY3JvbGxlZExpc3QoU2Nyb2xsZWRMaXN0KToKICAgICAgICAgZGVmIGZpbGxfbWVudShzZWxmKTogc2VsZi5tZW51LmFkZF9jb21tYW5kKGxhYmVsPSJyaWdodCBjbGljayIpCiAgICAgICAgIGRlZiBvbl9zZWxlY3Qoc2VsZiwgaW5kZXgpOiBwcmludCgic2VsZWN0Iiwgc2VsZi5nZXQoaW5kZXgpKQogICAgICAgICBkZWYgb25fZG91YmxlKHNlbGYsIGluZGV4KTogcHJpbnQoImRvdWJsZSIsIHNlbGYuZ2V0KGluZGV4KSkKIAotICAgIHNjcm9sbGVkX2xpc3QgPSBNeVNjcm9sbGVkTGlzdChyb290KQorICAgIHNjcm9sbGVkX2xpc3QgPSBNeVNjcm9sbGVkTGlzdCh0b3ApCiAgICAgZm9yIGkgaW4gcmFuZ2UoMzApOgogICAgICAgICBzY3JvbGxlZF9saXN0LmFwcGVuZCgiSXRlbSAlMDJkIiAlIGkpCiAKLSAgICByb290Lm1haW5sb29wKCkKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICAjIEF0IHRoZSBtb21lbnQsIHRlc3Rfc2Nyb2xsZWRsaXN0IG1lcmVseSBjcmVhdGVzIGluc3RhbmNlLCBsaWtlIGh0ZXN0LgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfc2Nyb2xsZWRfbGlzdCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZy5weSBiL0xpYi9pZGxlbGliL3NlYXJjaC5weQpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaC5weQppbmRleCA3NjVkNTNmLi40YjkwNjU5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoLnB5CkBAIC0xLDEyICsxLDEyIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGNsRXJyb3IKIAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorZnJvbSBpZGxlbGliLnNlYXJjaGJhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKIAogZGVmIF9zZXR1cCh0ZXh0KToKICAgICAiQ3JlYXRlIG9yIGZpbmQgdGhlIHNpbmdsZXRvbiBTZWFyY2hEaWFsb2cgaW5zdGFuY2UuIgogICAgIHJvb3QgPSB0ZXh0Ll9yb290KCkKLSAgICBlbmdpbmUgPSBTZWFyY2hFbmdpbmUuZ2V0KHJvb3QpCisgICAgZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChyb290KQogICAgIGlmIG5vdCBoYXNhdHRyKGVuZ2luZSwgIl9zZWFyY2hkaWFsb2ciKToKICAgICAgICAgZW5naW5lLl9zZWFyY2hkaWFsb2cgPSBTZWFyY2hEaWFsb2cocm9vdCwgZW5naW5lKQogICAgIHJldHVybiBlbmdpbmUuX3NlYXJjaGRpYWxvZwpAQCAtMjQsNiArMjQsNyBAQAogICAgICJIYW5kbGUgdGhlIGVkaXRvciBlZGl0IG1lbnUgaXRlbSBhbmQgY29ycmVzcG9uZGluZyBldmVudC4iCiAgICAgcmV0dXJuIF9zZXR1cCh0ZXh0KS5maW5kX3NlbGVjdGlvbih0ZXh0KQogCisKIGNsYXNzIFNlYXJjaERpYWxvZyhTZWFyY2hEaWFsb2dCYXNlKToKIAogICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKToKQEAgLTUxLDcgKzUyLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmaXJzdCA9IHRleHQuaW5kZXgoInNlbC5maXJzdCIpCiAgICAgICAgICAgICAgICAgc2VsbGFzdCA9IHRleHQuaW5kZXgoInNlbC5sYXN0IikKICAgICAgICAgICAgICAgICBpZiBzZWxmaXJzdCA9PSBmaXJzdCBhbmQgc2VsbGFzdCA9PSBsYXN0OgotICAgICAgICAgICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCkBAIC02MSw3ICs2Miw3IEBACiAgICAgICAgICAgICB0ZXh0LnNlZSgiaW5zZXJ0IikKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGZpbmRfc2VsZWN0aW9uKHNlbGYsIHRleHQpOgpAQCAtNzIsMjYgKzczLDMwIEBACiAKIAogZGVmIF9zZWFyY2hfZGlhbG9nKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICAnJydEaXNwbGF5IHNlYXJjaCB0ZXN0IGJveC4nJycKKyAgICAiRGlzcGxheSBzZWFyY2ggdGVzdCBib3guIgorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQKKyAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBCdXR0b24KKwogICAgIGJveCA9IFRvcGxldmVsKHBhcmVudCkKICAgICBib3gudGl0bGUoIlRlc3QgU2VhcmNoRGlhbG9nIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogICAgIHRleHQgPSBUZXh0KGJveCwgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPSdncmF5JykKICAgICB0ZXh0LnBhY2soKQogICAgIHRleHQuaW5zZXJ0KCJpbnNlcnQiLCJUaGlzIGlzIGEgc2FtcGxlIHN0cmluZy5cbiIqNSkKIAogICAgIGRlZiBzaG93X2ZpbmQoKToKLSAgICAgICAgdGV4dC50YWdfYWRkKFNFTCwgIjEuMCIsIEVORCkKKyAgICAgICAgdGV4dC50YWdfYWRkKCdzZWwnLCAnMS4wJywgJ2VuZCcpCiAgICAgICAgIF9zZXR1cCh0ZXh0KS5vcGVuKHRleHQpCi0gICAgICAgIHRleHQudGFnX3JlbW92ZShTRUwsICIxLjAiLCBFTkQpCisgICAgICAgIHRleHQudGFnX3JlbW92ZSgnc2VsJywgJzEuMCcsICdlbmQnKQogCiAgICAgYnV0dG9uID0gQnV0dG9uKGJveCwgdGV4dD0iU2VhcmNoIChzZWxlY3Rpb24gaWdub3JlZCkiLCBjb21tYW5kPXNob3dfZmluZCkKICAgICBidXR0b24ucGFjaygpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2hkaWFsb2cnLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoJywKICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9zZWFyY2hfZGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weSBiL0xpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nQmFzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2VhcmNoYmFzZS5weQppbmRleCA1ZmE4NGUyLi41ZjgxNzg1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5CisrKyBiL0xpYi9pZGxlbGliL3NlYXJjaGJhc2UucHkKQEAgLTEsNyArMSw4IEBACiAnJydEZWZpbmUgU2VhcmNoRGlhbG9nQmFzZSB1c2VkIGJ5IFNlYXJjaCwgUmVwbGFjZSwgYW5kIEdyZXAgZGlhbG9ncy4nJycKIAotZnJvbSB0a2ludGVyIGltcG9ydCAoVG9wbGV2ZWwsIEZyYW1lLCBFbnRyeSwgTGFiZWwsIEJ1dHRvbiwKLSAgICAgICAgICAgICAgICAgICAgIENoZWNrYnV0dG9uLCBSYWRpb2J1dHRvbikKK2Zyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBFbnRyeSwgTGFiZWwsIEJ1dHRvbiwgQ2hlY2tidXR0b24sIFJhZGlvYnV0dG9uCisKIAogY2xhc3MgU2VhcmNoRGlhbG9nQmFzZToKICAgICAnJydDcmVhdGUgbW9zdCBvZiBhIDMgb3IgNCByb3csIDMgY29sdW1uIHNlYXJjaCBkaWFsb2cuCkBAIC03OSw2ICs4MCw3IEBACiAgICAgICAgIHRvcC53bV90aXRsZShzZWxmLnRpdGxlKQogICAgICAgICB0b3Aud21faWNvbm5hbWUoc2VsZi5pY29uKQogICAgICAgICBzZWxmLnRvcCA9IHRvcAorICAgICAgICBzZWxmLmJlbGwgPSB0b3AuYmVsbAogCiAgICAgICAgIHNlbGYucm93ID0gMAogICAgICAgICBzZWxmLnRvcC5ncmlkX2NvbHVtbmNvbmZpZ3VyZSgwLCBwYWQ9Miwgd2VpZ2h0PTApCkBAIC0xMjUsNyArMTI3LDcgQEAKICAgICBkZWYgY3JlYXRlX29wdGlvbl9idXR0b25zKHNlbGYpOgogICAgICAgICAnJydSZXR1cm4gKGZpbGxlZCBmcmFtZSwgb3B0aW9ucykgZm9yIHRlc3RpbmcuCiAKLSAgICAgICAgT3B0aW9ucyBpcyBhIGxpc3Qgb2YgU2VhcmNoRW5naW5lIGJvb2xlYW52YXIsIGxhYmVsIHBhaXJzLgorICAgICAgICBPcHRpb25zIGlzIGEgbGlzdCBvZiBzZWFyY2hlbmdpbmUgYm9vbGVhbnZhciwgbGFiZWwgcGFpcnMuCiAgICAgICAgIEEgZ3JpZGRlZCBmcmFtZSBmcm9tIG1ha2VfZnJhbWUgaXMgZmlsbGVkIHdpdGggYSBDaGVja2J1dHRvbgogICAgICAgICBmb3IgZWFjaCBwYWlyLCBib3VuZCB0byB0aGUgdmFyLCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGxhYmVsLgogICAgICAgICAnJycKQEAgLTEzNywxMCArMTM5LDggQEAKICAgICAgICAgaWYgc2VsZi5uZWVkd3JhcGJ1dHRvbjoKICAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKChlbmdpbmUud3JhcHZhciwgIldyYXAgYXJvdW5kIikpCiAgICAgICAgIGZvciB2YXIsIGxhYmVsIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmcmFtZSwgYW5jaG9yPSJ3IiwgdmFyaWFibGU9dmFyLCB0ZXh0PWxhYmVsKQorICAgICAgICAgICAgYnRuID0gQ2hlY2tidXR0b24oZnJhbWUsIHZhcmlhYmxlPXZhciwgdGV4dD1sYWJlbCkKICAgICAgICAgICAgIGJ0bi5wYWNrKHNpZGU9ImxlZnQiLCBmaWxsPSJib3RoIikKLSAgICAgICAgICAgIGlmIHZhci5nZXQoKToKLSAgICAgICAgICAgICAgICBidG4uc2VsZWN0KCkKICAgICAgICAgcmV0dXJuIGZyYW1lLCBvcHRpb25zCiAKICAgICBkZWYgY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6CkBAIC0xNTMsMTEgKzE1Myw4IEBACiAgICAgICAgIHZhciA9IHNlbGYuZW5naW5lLmJhY2t2YXIKICAgICAgICAgb3RoZXJzID0gWygxLCAnVXAnKSwgKDAsICdEb3duJyldCiAgICAgICAgIGZvciB2YWwsIGxhYmVsIGluIG90aGVyczoKLSAgICAgICAgICAgIGJ0biA9IFJhZGlvYnV0dG9uKGZyYW1lLCBhbmNob3I9InciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGU9dmFyLCB2YWx1ZT12YWwsIHRleHQ9bGFiZWwpCisgICAgICAgICAgICBidG4gPSBSYWRpb2J1dHRvbihmcmFtZSwgdmFyaWFibGU9dmFyLCB2YWx1ZT12YWwsIHRleHQ9bGFiZWwpCiAgICAgICAgICAgICBidG4ucGFjayhzaWRlPSJsZWZ0IiwgZmlsbD0iYm90aCIpCi0gICAgICAgICAgICBpZiB2YXIuZ2V0KCkgPT0gdmFsOgotICAgICAgICAgICAgICAgIGJ0bi5zZWxlY3QoKQogICAgICAgICByZXR1cm4gZnJhbWUsIG90aGVycwogCiAgICAgZGVmIG1ha2VfYnV0dG9uKHNlbGYsIGxhYmVsLCBjb21tYW5kLCBpc2RlZj0wKToKQEAgLTE3OCw3ICsxNzUsMjYgQEAKICAgICAgICAgYiA9IHNlbGYubWFrZV9idXR0b24oImNsb3NlIiwgc2VsZi5jbG9zZSkKICAgICAgICAgYi5sb3dlcigpCiAKKworY2xhc3MgX3NlYXJjaGJhc2UoU2VhcmNoRGlhbG9nQmFzZSk6ICAjIGh0ZXN0ICMKKyAgICAiQ3JlYXRlIGF1dG8tb3BlbmluZyBkaWFsb2cgd2l0aCBubyB0ZXh0IGNvbm5lY3Rpb24uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgIGltcG9ydCByZQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorCisgICAgICAgIHNlbGYucm9vdCA9IHBhcmVudAorICAgICAgICBzZWxmLmVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocGFyZW50KQorICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgcHJpbnQocGFyZW50Lmdlb21ldHJ5KCkpCisgICAgICAgIHdpZHRoLGhlaWdodCwgeCx5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCisgICAgICAgIHNlbGYudG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHggKyA0MCwgeSArIDE3NSkpCisKKyAgICBkZWYgZGVmYXVsdF9jb21tYW5kKHNlbGYsIGR1bW15KTogcGFzcworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oCi0gICAgICAgICdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGRpYWxvZ2Jhc2UnLCB2ZXJib3NpdHk9MikKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGJhc2UnLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKworICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihfc2VhcmNoYmFzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NlYXJjaEVuZ2luZS5weSBiL0xpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3NlYXJjaGVuZ2luZS5weQppbmRleCAzNzg4M2JmLi4yNTNmMWIwIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TZWFyY2hFbmdpbmUucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoZW5naW5lLnB5CkBAIC0xLDUgKzEsNiBAQAogJycnRGVmaW5lIFNlYXJjaEVuZ2luZSBmb3Igc2VhcmNoIGRpYWxvZ3MuJycnCiBpbXBvcnQgcmUKKwogZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIsIFRjbEVycm9yCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogCkBAIC0xNCw2ICsxNSw3IEBACiAgICAgICAgICMgVGhpcyBjcmVhdGVzIGEgY3ljbGUgdGhhdCBwZXJzaXN0cyB1bnRpbCByb290IGlzIGRlbGV0ZWQuCiAgICAgcmV0dXJuIHJvb3QuX3NlYXJjaGVuZ2luZQogCisKIGNsYXNzIFNlYXJjaEVuZ2luZToKICAgICAiIiJIYW5kbGVzIHNlYXJjaGluZyBhIHRleHQgd2lkZ2V0IGZvciBGaW5kLCBSZXBsYWNlLCBhbmQgR3JlcC4iIiIKIApAQCAtNTcsNyArNTksNyBAQAogCiAgICAgZGVmIHNldGNvb2tlZHBhdChzZWxmLCBwYXQpOgogICAgICAgICAiU2V0IHBhdHRlcm4gYWZ0ZXIgZXNjYXBpbmcgaWYgcmUuIgotICAgICAgICAjIGNhbGxlZCBvbmx5IGluIFNlYXJjaERpYWxvZy5weTogNjYKKyAgICAgICAgIyBjYWxsZWQgb25seSBpbiBzZWFyY2gucHk6IDY2CiAgICAgICAgIGlmIHNlbGYuaXNyZSgpOgogICAgICAgICAgICAgcGF0ID0gcmUuZXNjYXBlKHBhdCkKICAgICAgICAgc2VsZi5zZXRwYXQocGF0KQpAQCAtMTg2LDYgKzE4OCw3IEBACiAgICAgICAgICAgICBjb2wgPSBsZW4oY2hhcnMpIC0gMQogICAgICAgICByZXR1cm4gTm9uZQogCisKIGRlZiBzZWFyY2hfcmV2ZXJzZShwcm9nLCBjaGFycywgY29sKToKICAgICAnJydTZWFyY2ggYmFja3dhcmRzIGFuZCByZXR1cm4gYW4gcmUgbWF0Y2ggb2JqZWN0IG9yIE5vbmUuCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5IGIvTGliL2lkbGVsaWIvc3RhY2t2aWV3ZXIucHkKc2ltaWxhcml0eSBpbmRleCA4NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvU3RhY2tWaWV3ZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CmluZGV4IGNjYzc1NWMuLjA2OThkZWYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1N0YWNrVmlld2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL3N0YWNrdmlld2VyLnB5CkBAIC0xLDEyICsxLDEyIEBACi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBvcwogaW1wb3J0IHJlCitpbXBvcnQgc3lzCisKIGltcG9ydCB0a2ludGVyIGFzIHRrCiAKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCi1mcm9tIGlkbGVsaWIuT2JqZWN0QnJvd3NlciBpbXBvcnQgT2JqZWN0VHJlZUl0ZW0sIG1ha2Vfb2JqZWN0dHJlZWl0ZW0KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKK2Zyb20gaWRsZWxpYi5kZWJ1Z29iaiBpbXBvcnQgT2JqZWN0VHJlZUl0ZW0sIG1ha2Vfb2JqZWN0dHJlZWl0ZW0KK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCiAKIGRlZiBTdGFja0Jyb3dzZXIocm9vdCwgZmxpc3Q9Tm9uZSwgdGI9Tm9uZSwgdG9wPU5vbmUpOgogICAgIGlmIHRvcCBpcyBOb25lOgpAQCAtMTcsNiArMTcsNyBAQAogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS5leHBhbmQoKQogCisKIGNsYXNzIFN0YWNrVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIHRiPU5vbmUpOgpAQCAtNTUsNiArNTYsNyBAQAogICAgICAgICAgICAgc3VibGlzdC5hcHBlbmQoaXRlbSkKICAgICAgICAgcmV0dXJuIHN1Ymxpc3QKIAorCiBjbGFzcyBGcmFtZVRyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmZvLCBmbGlzdCk6CkBAIC05Niw2ICs5OCw3IEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGlzdC5nb3RvZmlsZWxpbmUoZmlsZW5hbWUsIGxpbmVubykKIAorCiBjbGFzcyBWYXJpYWJsZXNUcmVlSXRlbShPYmplY3RUcmVlSXRlbSk6CiAKICAgICBkZWYgR2V0VGV4dChzZWxmKToKQEAgLTEyMCwxNSArMTIzLDE0IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCi0gICAgZGVmIGtleXMoc2VsZik6ICAjIHVudXNlZCwgbGVmdCBmb3IgcG9zc2libGUgM3JkIHBhcnR5IHVzZQotICAgICAgICByZXR1cm4gbGlzdChzZWxmLm9iamVjdC5rZXlzKCkpCiAKLWRlZiBfc3RhY2tfdmlld2VyKHBhcmVudCk6Ci0gICAgcm9vdCA9IHRrLlRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFN0YWNrVmlld2VyIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3Qocm9vdCkKK2RlZiBfc3RhY2tfdmlld2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICBmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0CisgICAgdG9wID0gdGsuVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCBTdGFja1ZpZXdlciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4ICsgNTAsIHkgKyAxNzUpKQorICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHRvcCkKICAgICB0cnk6ICMgdG8gb2J0YWluIGEgdHJhY2ViYWNrIG9iamVjdAogICAgICAgICBpbnRlbnRpb25hbF9uYW1lX2Vycm9yCiAgICAgZXhjZXB0IE5hbWVFcnJvcjoKQEAgLTEzOSw3ICsxNDEsNyBAQAogICAgIHN5cy5sYXN0X3ZhbHVlID0gZXhjX3ZhbHVlCiAgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gZXhjX3RiCiAKLSAgICBTdGFja0Jyb3dzZXIocm9vdCwgZmxpc3Q9Zmxpc3QsIHRvcD1yb290LCB0Yj1leGNfdGIpCisgICAgU3RhY2tCcm93c2VyKHRvcCwgZmxpc3Q9Zmxpc3QsIHRvcD10b3AsIHRiPWV4Y190YikKIAogICAgICMgcmVzdG9yZSBzeXMgdG8gb3JpZ2luYWwgc3RhdGUKICAgICBkZWwgc3lzLmxhc3RfdHlwZQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5IGIvTGliL2lkbGVsaWIvc3RhdHVzYmFyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MTg1MjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9zdGF0dXNiYXIucHkKQEAgLTAsMCArMSw0NiBAQAorZnJvbSB0a2ludGVyIGltcG9ydCBGcmFtZSwgTGFiZWwKKworCitjbGFzcyBNdWx0aVN0YXR1c0JhcihGcmFtZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KToKKyAgICAgICAgRnJhbWUuX19pbml0X18oc2VsZiwgbWFzdGVyLCAqKmt3KQorICAgICAgICBzZWxmLmxhYmVscyA9IHt9CisKKyAgICBkZWYgc2V0X2xhYmVsKHNlbGYsIG5hbWUsIHRleHQ9JycsIHNpZGU9J2xlZnQnLCB3aWR0aD0wKToKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gc2VsZi5sYWJlbHM6CisgICAgICAgICAgICBsYWJlbCA9IExhYmVsKHNlbGYsIGJvcmRlcndpZHRoPTAsIGFuY2hvcj0ndycpCisgICAgICAgICAgICBsYWJlbC5wYWNrKHNpZGU9c2lkZSwgcGFkeT0wLCBwYWR4PTQpCisgICAgICAgICAgICBzZWxmLmxhYmVsc1tuYW1lXSA9IGxhYmVsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsYWJlbCA9IHNlbGYubGFiZWxzW25hbWVdCisgICAgICAgIGlmIHdpZHRoICE9IDA6CisgICAgICAgICAgICBsYWJlbC5jb25maWcod2lkdGg9d2lkdGgpCisgICAgICAgIGxhYmVsLmNvbmZpZyh0ZXh0PXRleHQpCisKKworZGVmIF9tdWx0aXN0YXR1c19iYXIocGFyZW50KTogICMgaHRlc3QgIworICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIEZyYW1lLCBUZXh0LCBCdXR0b24KKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlKHgsIHkgKyAxNzUpKQorICAgIHRvcC50aXRsZSgiVGVzdCBtdWx0aXN0YXR1cyBiYXIiKQorICAgIGZyYW1lID0gRnJhbWUodG9wKQorICAgIHRleHQgPSBUZXh0KGZyYW1lLCBoZWlnaHQ9NSwgd2lkdGg9NDApCisgICAgdGV4dC5wYWNrKCkKKyAgICBtc2IgPSBNdWx0aVN0YXR1c0JhcihmcmFtZSkKKyAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiaGVsbG8iKQorICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJ3b3JsZCIpCisgICAgbXNiLnBhY2soc2lkZT0nYm90dG9tJywgZmlsbD0neCcpCisKKyAgICBkZWYgY2hhbmdlKCk6CisgICAgICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJmb28iKQorICAgICAgICBtc2Iuc2V0X2xhYmVsKCJ0d28iLCAiYmFyIikKKworICAgIGJ1dHRvbiA9IEJ1dHRvbih0b3AsIHRleHQ9IlVwZGF0ZSBzdGF0dXMiLCBjb21tYW5kPWNoYW5nZSkKKyAgICBidXR0b24ucGFjayhzaWRlPSdib3R0b20nKQorICAgIGZyYW1lLnBhY2soKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihfbXVsdGlzdGF0dXNfYmFyKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvdGFiYmVkcGFnZXMucHkgYi9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQppbmRleCA5NjVmOWY4Li40MTg2ZmEyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQorKysgYi9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weQpAQCAtMjg1LDYgKzI4NSw3IEBACiAgICAgICAgICAgICAjIHBsYWNlZCBoaWRlIGl0CiAgICAgICAgICAgICBzZWxmLnRhYl9zZXQubG93ZXIoKQogCisKIGNsYXNzIFRhYmJlZFBhZ2VTZXQoRnJhbWUpOgogICAgICIiIkEgVGtpbnRlciB0YWJiZWQtcGFuZSB3aWRnZXQuCiAKQEAgLTMwMiw2ICszMDMsNyBAQAogICAgIHJlbW92ZV9wYWdlKCkgbWV0aG9kcy4KIAogICAgICIiIgorCiAgICAgY2xhc3MgUGFnZShvYmplY3QpOgogICAgICAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBUYWJiZWRQYWdlU2V0J3MgcGFnZXMuCiAKQEAgLTQ2NywzMSArNDY5LDI5IEBACiAKICAgICAgICAgc2VsZi5fdGFiX3NldC5zZXRfc2VsZWN0ZWRfdGFiKHBhZ2VfbmFtZSkKIAotZGVmIF90YWJiZWRfcGFnZXMocGFyZW50KToKLSAgICAjIHRlc3QgZGlhbG9nCi0gICAgcm9vdD1UaygpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNzUpKQotICAgIHJvb3QudGl0bGUoIlRlc3QgdGFiYmVkIHBhZ2VzIikKLSAgICB0YWJQYWdlPVRhYmJlZFBhZ2VTZXQocm9vdCwgcGFnZV9uYW1lcz1bJ0Zvb2JhcicsJ0JheiddLCBuX3Jvd3M9MCwKKworZGVmIF90YWJiZWRfcGFnZXMocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcD1Ub3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKKyAgICB0b3AudGl0bGUoIlRlc3QgdGFiYmVkIHBhZ2VzIikKKyAgICB0YWJQYWdlPVRhYmJlZFBhZ2VTZXQodG9wLCBwYWdlX25hbWVzPVsnRm9vYmFyJywnQmF6J10sIG5fcm93cz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRfdGFicz1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgIHRhYlBhZ2UucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKICAgICBMYWJlbCh0YWJQYWdlLnBhZ2VzWydGb29iYXInXS5mcmFtZSwgdGV4dD0nRm9vJywgcGFkeT0yMCkucGFjaygpCiAgICAgTGFiZWwodGFiUGFnZS5wYWdlc1snRm9vYmFyJ10uZnJhbWUsIHRleHQ9J0JhcicsIHBhZHk9MjApLnBhY2soKQogICAgIExhYmVsKHRhYlBhZ2UucGFnZXNbJ0JheiddLmZyYW1lLCB0ZXh0PSdCYXonKS5wYWNrKCkKLSAgICBlbnRyeVBnTmFtZT1FbnRyeShyb290KQotICAgIGJ1dHRvbkFkZD1CdXR0b24ocm9vdCwgdGV4dD0nQWRkIFBhZ2UnLAorICAgIGVudHJ5UGdOYW1lPUVudHJ5KHRvcCkKKyAgICBidXR0b25BZGQ9QnV0dG9uKHRvcCwgdGV4dD0nQWRkIFBhZ2UnLAogICAgICAgICAgICAgY29tbWFuZD1sYW1iZGE6dGFiUGFnZS5hZGRfcGFnZShlbnRyeVBnTmFtZS5nZXQoKSkpCi0gICAgYnV0dG9uUmVtb3ZlPUJ1dHRvbihyb290LCB0ZXh0PSdSZW1vdmUgUGFnZScsCisgICAgYnV0dG9uUmVtb3ZlPUJ1dHRvbih0b3AsIHRleHQ9J1JlbW92ZSBQYWdlJywKICAgICAgICAgICAgIGNvbW1hbmQ9bGFtYmRhOnRhYlBhZ2UucmVtb3ZlX3BhZ2UoZW50cnlQZ05hbWUuZ2V0KCkpKQotICAgIGxhYmVsUGdOYW1lPUxhYmVsKHJvb3QsIHRleHQ9J25hbWUgb2YgcGFnZSB0byBhZGQvcmVtb3ZlOicpCisgICAgbGFiZWxQZ05hbWU9TGFiZWwodG9wLCB0ZXh0PSduYW1lIG9mIHBhZ2UgdG8gYWRkL3JlbW92ZTonKQogICAgIGJ1dHRvbkFkZC5wYWNrKHBhZHg9NSwgcGFkeT01KQogICAgIGJ1dHRvblJlbW92ZS5wYWNrKHBhZHg9NSwgcGFkeT01KQogICAgIGxhYmVsUGdOYW1lLnBhY2socGFkeD01KQogICAgIGVudHJ5UGdOYW1lLnBhY2socGFkeD01KQotICAgIHJvb3QubWFpbmxvb3AoKQotCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weSBiL0xpYi9pZGxlbGliL3RleHR2aWV3LnB5CnNpbWlsYXJpdHkgaW5kZXggNzYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL3RleHRWaWV3LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90ZXh0dmlldy5weQppbmRleCAxMmFjMzE5Li5hZGVlMzI2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weQorKysgYi9MaWIvaWRsZWxpYi90ZXh0dmlldy5weQpAQCAtMSwxNCArMSwxNCBAQAogIiIiU2ltcGxlIHRleHQgYnJvd3NlciBmb3IgSURMRQogCiAiIiIKLQogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCitmcm9tIHRraW50ZXIubWVzc2FnZWJveCBpbXBvcnQgc2hvd2Vycm9yCisKIAogY2xhc3MgVGV4dFZpZXdlcihUb3BsZXZlbCk6Ci0gICAgIiIiQSBzaW1wbGUgdGV4dCB2aWV3ZXIgZGlhbG9nIGZvciBJRExFCisgICAgIkEgc2ltcGxlIHRleHQgdmlld2VyIGRpYWxvZyBmb3IgSURMRS4iCiAKLSAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgdGV4dCwgbW9kYWw9VHJ1ZSwgX2h0ZXN0PUZhbHNlKToKICAgICAgICAgIiIiU2hvdyB0aGUgZ2l2ZW4gdGV4dCBpbiBhIHNjcm9sbGFibGUgd2luZG93IHdpdGggYSAnY2xvc2UnIGJ1dHRvbgogCkBAIC0yMCwxMSArMjAsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKICAgICAgICAgc2VsZi5jb25maWd1cmUoYm9yZGVyd2lkdGg9NSkKLSAgICAgICAgIyBwbGFjZSBkaWFsb2cgYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QKKyAgICAgICAgIyBQbGFjZSBkaWFsb2cgYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QuCiAgICAgICAgIHNlbGYuZ2VvbWV0cnkoIj0lZHglZCslZCslZCIgJSAoNzUwLCA1MDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArIDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKyAoMTAgaWYgbm90IF9odGVzdCBlbHNlIDEwMCkpKQotICAgICAgICAjZWxndWF2YXMgLSBjb25maWcgcGxhY2Vob2xkZXJzIHRpbCBjb25maWcgc3R1ZmYgY29tcGxldGVkCisgICAgICAgICMgVE9ETzogZ2V0IGZnL2JnIGZyb20gdGhlbWUuCiAgICAgICAgIHNlbGYuYmcgPSAnI2ZmZmZmZicKICAgICAgICAgc2VsZi5mZyA9ICcjMDAwMDAwJwogCkBAIC0zMyw5ICszMyw5IEBACiAgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLk9rKQogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLnRleHRWaWV3LmZvY3VzX3NldCgpCi0gICAgICAgICNrZXkgYmluZGluZ3MgZm9yIHRoaXMgZGlhbG9nCi0gICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLHNlbGYuT2spICNkaXNtaXNzIGRpYWxvZwotICAgICAgICBzZWxmLmJpbmQoJzxFc2NhcGU+JyxzZWxmLk9rKSAjZGlzbWlzcyBkaWFsb2cKKyAgICAgICAgIyBCaW5kIGtleXMgZm9yIGNsb3NpbmcgdGhpcyBkaWFsb2cuCisgICAgICAgIHNlbGYuYmluZCgnPFJldHVybj4nLHNlbGYuT2spCisgICAgICAgIHNlbGYuYmluZCgnPEVzY2FwZT4nLHNlbGYuT2spCiAgICAgICAgIHNlbGYudGV4dFZpZXcuaW5zZXJ0KDAuMCwgdGV4dCkKICAgICAgICAgc2VsZi50ZXh0Vmlldy5jb25maWcoc3RhdGU9RElTQUJMRUQpCiAKQEAgLTUwLDcgKzUwLDcgQEAKICAgICAgICAgc2VsZi5idXR0b25PayA9IEJ1dHRvbihmcmFtZUJ1dHRvbnMsIHRleHQ9J0Nsb3NlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPXNlbGYuT2ssIHRha2Vmb2N1cz1GQUxTRSkKICAgICAgICAgc2VsZi5zY3JvbGxiYXJWaWV3ID0gU2Nyb2xsYmFyKGZyYW1lVGV4dCwgb3JpZW50PVZFUlRJQ0FMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZWZvY3VzPUZBTFNFLCBoaWdobGlnaHR0aGlja25lc3M9MCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRha2Vmb2N1cz1GQUxTRSkKICAgICAgICAgc2VsZi50ZXh0VmlldyA9IFRleHQoZnJhbWVUZXh0LCB3cmFwPVdPUkQsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz1zZWxmLmZnLCBiZz1zZWxmLmJnKQogICAgICAgICBzZWxmLnNjcm9sbGJhclZpZXcuY29uZmlnKGNvbW1hbmQ9c2VsZi50ZXh0Vmlldy55dmlldykKQEAgLTcyLDE0ICs3MiwxNCBAQAogICAgIHRyeToKICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAncicsIGVuY29kaW5nPWVuY29kaW5nKSBhcyBmaWxlOgogICAgICAgICAgICAgY29udGVudHMgPSBmaWxlLnJlYWQoKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIExvYWQgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1VuYWJsZSB0byBsb2FkIGZpbGUgJXIgLicgJSBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBzaG93ZXJyb3IodGl0bGU9J0ZpbGUgTG9hZCBFcnJvcicsCisgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdVbmFibGUgdG8gbG9hZCBmaWxlICVyIC4nICUgZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQogICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgotICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdVbmljb2RlIERlY29kZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1zdHIoZXJyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQorICAgICAgICBzaG93ZXJyb3IodGl0bGU9J1VuaWNvZGUgRGVjb2RlIEVycm9yJywKKyAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c3RyKGVyciksCisgICAgICAgICAgICAgICAgICBwYXJlbnQ9cGFyZW50KQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiB2aWV3X3RleHQocGFyZW50LCB0aXRsZSwgY29udGVudHMsIG1vZGFsKQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Ub29sVGlwLnB5IGIvTGliL2lkbGVsaWIvdG9vbHRpcC5weQpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Ub29sVGlwLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi90b29sdGlwLnB5CmluZGV4IDk2NDEwN2UuLjg0M2ZiNGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1Rvb2xUaXAucHkKKysrIGIvTGliL2lkbGVsaWIvdG9vbHRpcC5weQpAQCAtMSw0ICsxLDQgQEAKLSMgZ2VuZXJhbCBwdXJwb3NlICd0b29sdGlwJyByb3V0aW5lcyAtIGN1cnJlbnRseSB1bnVzZWQgaW4gaWRsZWZvcmsKKyMgZ2VuZXJhbCBwdXJwb3NlICd0b29sdGlwJyByb3V0aW5lcyAtIGN1cnJlbnRseSB1bnVzZWQgaW4gaWRsZWxpYgogIyAoYWx0aG91Z2ggdGhlICdjYWxsdGlwcycgZXh0ZW5zaW9uIGlzIHBhcnRseSBiYXNlZCBvbiB0aGlzIGNvZGUpCiAjIG1heSBiZSB1c2VmdWwgZm9yIHNvbWUgcHVycG9zZXMgaW4gKG9yIGFsbW9zdCBpbiA7KSB0aGUgY3VycmVudCBwcm9qZWN0IHNjb3BlCiAjIElkZWFzIGdsZWFuZWQgZnJvbSBQeVNvbApAQCAtNzYsMjEgKzc2LDIwIEBACiAgICAgICAgIGZvciBpdGVtIGluIHNlbGYuaXRlbXM6CiAgICAgICAgICAgICBsaXN0Ym94Lmluc2VydChFTkQsIGl0ZW0pCiAKLWRlZiBfdG9vbHRpcChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCB0b29sdGlwIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgbGFiZWwgPSBMYWJlbChyb290LCB0ZXh0PSJQbGFjZSB5b3VyIG1vdXNlIG92ZXIgYnV0dG9ucyIpCitkZWYgX3Rvb2x0aXAocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgdG9vbHRpcCIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTUwKSkKKyAgICBsYWJlbCA9IExhYmVsKHRvcCwgdGV4dD0iUGxhY2UgeW91ciBtb3VzZSBvdmVyIGJ1dHRvbnMiKQogICAgIGxhYmVsLnBhY2soKQotICAgIGJ1dHRvbjEgPSBCdXR0b24ocm9vdCwgdGV4dD0iQnV0dG9uIDEiKQotICAgIGJ1dHRvbjIgPSBCdXR0b24ocm9vdCwgdGV4dD0iQnV0dG9uIDIiKQorICAgIGJ1dHRvbjEgPSBCdXR0b24odG9wLCB0ZXh0PSJCdXR0b24gMSIpCisgICAgYnV0dG9uMiA9IEJ1dHRvbih0b3AsIHRleHQ9IkJ1dHRvbiAyIikKICAgICBidXR0b24xLnBhY2soKQogICAgIGJ1dHRvbjIucGFjaygpCiAgICAgVG9vbFRpcChidXR0b24xLCAiVGhpcyBpcyB0b29sdGlwIHRleHQgZm9yIGJ1dHRvbjEuIikKICAgICBMaXN0Ym94VG9vbFRpcChidXR0b24yLCBbIlRoaXMgaXMiLCJtdWx0aXBsZSBsaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG9vbHRpcCB0ZXh0IiwiZm9yIGJ1dHRvbjIiXSkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkgYi9MaWIvaWRsZWxpYi90cmVlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1RyZWVXaWRnZXQucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3RyZWUucHkKaW5kZXggYTE5NTc4Zi4uMjkyY2UzNiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weQorKysgYi9MaWIvaWRsZWxpYi90cmVlLnB5CkBAIC0xNSwxMCArMTUsMTIgQEAKICMgLSBvcHRpbWl6ZSB0cmVlIHJlZHJhdyBhZnRlciBleHBhbmQgb2Ygc3Vibm9kZQogCiBpbXBvcnQgb3MKLWZyb20gdGtpbnRlciBpbXBvcnQgKgogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFpvb21IZWlnaHQKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSB0a2ludGVyIGltcG9ydCAqCitmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgem9vbWhlaWdodAogCiBJQ09ORElSID0gIkljb25zIgogCkBAIC00NDUsMjIgKzQ0NywyMSBAQAogICAgICAgICBzZWxmLmNhbnZhcy55dmlld19zY3JvbGwoMSwgInVuaXQiKQogICAgICAgICByZXR1cm4gImJyZWFrIgogICAgIGRlZiB6b29tX2hlaWdodChzZWxmLCBldmVudCk6Ci0gICAgICAgIFpvb21IZWlnaHQuem9vbV9oZWlnaHQoc2VsZi5tYXN0ZXIpCisgICAgICAgIHpvb21oZWlnaHQuem9vbV9oZWlnaHQoc2VsZi5tYXN0ZXIpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKIAotZGVmIF90cmVlX3dpZGdldChwYXJlbnQpOgotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBUcmVlV2lkZ2V0IikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgc2MgPSBTY3JvbGxlZENhbnZhcyhyb290LCBiZz0id2hpdGUiLCBoaWdobGlnaHR0aGlja25lc3M9MCwgdGFrZWZvY3VzPTEpCitkZWYgX3RyZWVfd2lkZ2V0KHBhcmVudCk6ICAjIGh0ZXN0ICMKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4KzUwLCB5KzE3NSkpCisgICAgc2MgPSBTY3JvbGxlZENhbnZhcyh0b3AsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKICAgICBzYy5mcmFtZS5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIiwgc2lkZT1MRUZUKQotICAgIGl0ZW0gPSBGaWxlVHJlZUl0ZW0ob3MuZ2V0Y3dkKCkpCisgICAgaXRlbSA9IEZpbGVUcmVlSXRlbShJQ09ORElSKQogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS5leHBhbmQoKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgdGVzdF90cmVlIGlzIGN1cnJlbnRseSBhIGNvcHkgb2YgdGhpcwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfdHJlZV93aWRnZXQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5IGIvTGliL2lkbGVsaWIvdW5kby5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9VbmRvRGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi91bmRvLnB5CmluZGV4IDFjMjUwMmQuLjQzMzJmMTAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1VuZG9EZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvdW5kby5weQpAQCAtMSw3ICsxLDkgQEAKIGltcG9ydCBzdHJpbmcKLWZyb20gdGtpbnRlciBpbXBvcnQgKgogCi1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorCisjIHRraW50dGVyIGltcG9ydCBub3QgbmVlZGVkIGJlY2F1c2UgbW9kdWxlIGRvZXMgbm90IGNyZWF0ZSB3aWRnZXRzLAorIyBhbHRob3VnaCBtYW55IG1ldGhvZHMgb3BlcmF0ZSBvbiB0ZXh0IHdpZGdldCBhcmd1bWVudHMuCiAKICMkIGV2ZW50IDw8cmVkbz4+CiAjJCB3aW4gPENvbnRyb2wteT4KQEAgLTE1OCw3ICsxNjAsNiBAQAogCiAKIGNsYXNzIENvbW1hbmQ6Ci0KICAgICAjIEJhc2UgY2xhc3MgZm9yIFVuZG9hYmxlIGNvbW1hbmRzCiAKICAgICB0YWdzID0gTm9uZQpAQCAtMjA0LDcgKzIwNSw2IEBACiAKIAogY2xhc3MgSW5zZXJ0Q29tbWFuZChDb21tYW5kKToKLQogICAgICMgVW5kb2FibGUgaW5zZXJ0IGNvbW1hbmQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleDEsIGNoYXJzLCB0YWdzPU5vbmUpOgpAQCAtMjYyLDcgKzI2Miw2IEBACiAKIAogY2xhc3MgRGVsZXRlQ29tbWFuZChDb21tYW5kKToKLQogICAgICMgVW5kb2FibGUgZGVsZXRlIGNvbW1hbmQKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleDEsIGluZGV4Mj1Ob25lKToKQEAgLTI5Nyw4ICsyOTYsOCBAQAogICAgICAgICB0ZXh0LnNlZSgnaW5zZXJ0JykKICAgICAgICAgIyNzeXMuX19zdGRlcnJfXy53cml0ZSgidW5kbzogJXNcbiIgJSBzZWxmKQogCi1jbGFzcyBDb21tYW5kU2VxdWVuY2UoQ29tbWFuZCk6CiAKK2NsYXNzIENvbW1hbmRTZXF1ZW5jZShDb21tYW5kKToKICAgICAjIFdyYXBwZXIgZm9yIGEgc2VxdWVuY2Ugb2YgdW5kb2FibGUgY21kcyB0byBiZSB1bmRvbmUvcmVkb25lCiAgICAgIyBhcyBhIHVuaXQKIApAQCAtMzM4LDEzICszMzcsMTIgQEAKIAogCiBkZWYgX3VuZG9fZGVsZWdhdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBpbXBvcnQgcmUKLSAgICBpbXBvcnQgdGtpbnRlciBhcyB0awotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCi0gICAgdW5kb3dpbiA9IHRrLlRvcGxldmVsKCkKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBCdXR0b24KKyAgICBmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIHVuZG93aW4gPSBUb3BsZXZlbChwYXJlbnQpCiAgICAgdW5kb3dpbi50aXRsZSgiVGVzdCBVbmRvRGVsZWdhdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgdW5kb3dpbi5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHVuZG93aW4uZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAKICAgICB0ZXh0ID0gVGV4dCh1bmRvd2luLCBoZWlnaHQ9MTApCiAgICAgdGV4dC5wYWNrKCkKQEAgLTM2Miw3ICszNjAsNyBAQAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfdW5kb2RlbGVnYXRvcicsIHZlcmJvc2l0eT0yLAotICAgICAgICAgICAgICAgICAgZXhpdD1GYWxzZSkKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3VuZG8nLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKwogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihfdW5kb19kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5IGIvTGliL2lkbGVsaWIvd2luZG93cy5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9XaW5kb3dMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi93aW5kb3dzLnB5CmluZGV4IGJjNzQzNDguLmEzZjg1OGEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1dpbmRvd0xpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvd2luZG93cy5weQpAQCAtMSw1ICsxLDYgQEAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogCisKIGNsYXNzIFdpbmRvd0xpc3Q6CiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CkBAIC00OCw2ICs0OSw3IEBACiAgICAgICAgICAgICAgICAgdCwgdiwgdGIgPSBzeXMuZXhjX2luZm8oKQogICAgICAgICAgICAgICAgIHByaW50KCJ3YXJuaW5nOiBjYWxsYmFjayBmYWlsZWQgaW4gV2luZG93TGlzdCIsIHQsICI6IiwgdikKIAorCiByZWdpc3RyeSA9IFdpbmRvd0xpc3QoKQogCiBhZGRfd2luZG93c190b19tZW51ID0gcmVnaXN0cnkuYWRkX3dpbmRvd3NfdG9fbWVudQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weSBiL0xpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvWm9vbUhlaWdodC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvem9vbWhlaWdodC5weQppbmRleCBhNWQ2NzllLi5hYTRhNDI3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ab29tSGVpZ2h0LnB5CisrKyBiL0xpYi9pZGxlbGliL3pvb21oZWlnaHQucHkKQEAgLTMsNyArMyw4IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorCiAKIGNsYXNzIFpvb21IZWlnaHQ6CiAKQEAgLTIwLDYgKzIxLDcgQEAKICAgICAgICAgdG9wID0gc2VsZi5lZGl0d2luLnRvcAogICAgICAgICB6b29tX2hlaWdodCh0b3ApCiAKKwogZGVmIHpvb21faGVpZ2h0KHRvcCk6CiAgICAgZ2VvbSA9IHRvcC53bV9nZW9tZXRyeSgpCiAgICAgbSA9IHJlLm1hdGNoKHIiKFxkKyl4KFxkKylcKygtP1xkKylcKygtP1xkKykiLCBnZW9tKQpAQCAtMzIsNyArMzQsNyBAQAogICAgICAgICBuZXd5ID0gMAogICAgICAgICBuZXdoZWlnaHQgPSBuZXdoZWlnaHQgLSA3MgogCi0gICAgZWxpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgZWxpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgIyBUaGUgJzg4JyBiZWxvdyBpcyBhIG1hZ2ljIG51bWJlciB0aGF0IGF2b2lkcyBwbGFjaW5nIHRoZSBib3R0b20KICAgICAgICAgIyBvZiB0aGUgd2luZG93IGJlbG93IHRoZSBwYW5lbCBvbiBteSBtYWNoaW5lLiBJIGRvbid0IGtub3cgaG93CiAgICAgICAgICMgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHZhbHVlIGZvciB0aGlzIHdpdGggdGtpbnRlci4KZGlmZiAtLWdpdCBhL0xpYi9pbWFwbGliLnB5IGIvTGliL2ltYXBsaWIucHkKaW5kZXggNGU4YTRiYi4uY2FkNTA4YSAxMDA2NDQKLS0tIGEvTGliL2ltYXBsaWIucHkKKysrIGIvTGliL2ltYXBsaWIucHkKQEAgLTExMSw3ICsxMTEsMTUgQEAKICMgTGl0ZXJhbCBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIExpdGVyYWwgPSByZS5jb21waWxlKGJyJy4qeyg/UDxzaXplPlxkKyl9JCcsIHJlLkFTQ0lJKQogTWFwQ1JMRiA9IHJlLmNvbXBpbGUoYnInXHJcbnxccnxcbicpCi1SZXNwb25zZV9jb2RlID0gcmUuY29tcGlsZShicidcWyg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT5bXlxdXSopKT9cXScpCisjIFdlIG5vIGxvbmdlciBleGNsdWRlIHRoZSAnXScgY2hhcmFjdGVyIGZyb20gdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgcmVzcG9uc2UKKyMgY29kZSwgZXZlbiB0aG91Z2ggaXQgdmlvbGF0ZXMgdGhlIFJGQy4gIFBvcHVsYXIgSU1BUCBzZXJ2ZXJzIHN1Y2ggYXMgR21haWwKKyMgYWxsb3cgZmxhZ3Mgd2l0aCAnXScsIGFuZCB0aGVyZSBhcmUgcHJvZ3JhbXMgKGluY2x1ZGluZyBpbWFwbGliISkgdGhhdCBjYW4KKyMgcHJvZHVjZSB0aGVtLiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzIGlmIHRoZSAndGV4dCcgcG9ydGlvbiBvZiB0aGUgcmVzcG9uc2UKKyMgaW5jbHVkZXMgYSAnXScgd2UnbGwgcGFyc2UgdGhlIHJlc3BvbnNlIHdyb25nICh3aGljaCBpcyB0aGUgcG9pbnQgb2YgdGhlIFJGQworIyByZXN0cmljdGlvbikuICBIb3dldmVyLCB0aGF0IHNlZW1zIGxlc3MgbGlrZWx5IHRvIGJlIGEgcHJvYmxlbSBpbiBwcmFjdGljZQorIyB0aGFuIGJlaW5nIHVuYWJsZSB0byBjb3JyZWN0bHkgcGFyc2UgZmxhZ3MgdGhhdCBpbmNsdWRlICddJyBjaGFycywgd2hpY2gKKyMgd2FzIHJlcG9ydGVkIGFzIGEgcmVhbC13b3JsZCBwcm9ibGVtIGluIGlzc3VlICMyMTgxNS4KK1Jlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/XF0nKQogVW50YWdnZWRfcmVzcG9uc2UgPSByZS5jb21waWxlKGJyJ1wqICg/UDx0eXBlPltBLVotXSspKCAoP1A8ZGF0YT4uKikpPycpCiAjIFVudGFnZ2VkX3N0YXR1cyBpcyBubyBsb25nZXIgdXNlZDsga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogVW50YWdnZWRfc3RhdHVzID0gcmUuY29tcGlsZSgKQEAgLTEyNCw3ICsxMzIsNyBAQAogCiBjbGFzcyBJTUFQNDoKIAotICAgICIiIklNQVA0IGNsaWVudCBjbGFzcy4KKyAgICByIiIiSU1BUDQgY2xpZW50IGNsYXNzLgogCiAgICAgSW5zdGFudGlhdGUgd2l0aDogSU1BUDQoW2hvc3RbLCBwb3J0XV0pCiAKQEAgLTEyNTksNyArMTI2NywxMCBAQAogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGNlcnRmaWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNzbF9jb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQotCisgICAgICAgICAgICBpZiBrZXlmaWxlIGlzIG5vdCBOb25lIG9yIGNlcnRmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oImtleWZpbGUgYW5kIGNlcnRmaWxlIGFyZSBkZXByZWNhdGVkLCB1c2UgYSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gc3NsX2NvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgTm9uZToKQEAgLTE1MjcsNyArMTUzOCw3IEBACiAgICAgKCdzZWxlY3QnLCAoJy90bXAveXl6IDInLCkpLAogICAgICgnc2VhcmNoJywgKE5vbmUsICdTVUJKRUNUJywgJ3Rlc3QnKSksCiAgICAgKCdmZXRjaCcsICgnMScsICcoRkxBR1MgSU5URVJOQUxEQVRFIFJGQzgyMiknKSksCi0gICAgKCdzdG9yZScsICgnMScsICdGTEFHUycsICcoXERlbGV0ZWQpJykpLAorICAgICgnc3RvcmUnLCAoJzEnLCAnRkxBR1MnLCByJyhcRGVsZXRlZCknKSksCiAgICAgKCduYW1lc3BhY2UnLCAoKSksCiAgICAgKCdleHB1bmdlJywgKCkpLAogICAgICgncmVjZW50JywgKCkpLApkaWZmIC0tZ2l0IGEvTGliL2ltZ2hkci5weSBiL0xpYi9pbWdoZHIucHkKaW5kZXggYjI2NzkyNS4uNzZlOGFiYiAxMDA2NDQKLS0tIGEvTGliL2ltZ2hkci5weQorKysgYi9MaWIvaW1naGRyLnB5CkBAIC0xLDUgKzEsNyBAQAogIiIiUmVjb2duaXplIGltYWdlIGZpbGUgZm9ybWF0cyBiYXNlZCBvbiB0aGVpciBmaXJzdCBmZXcgYnl0ZXMuIiIiCiAKK2Zyb20gb3MgaW1wb3J0IFBhdGhMaWtlCisKIF9fYWxsX18gPSBbIndoYXQiXQogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMKQEAgLTEwLDcgKzEyLDcgQEAKICAgICBmID0gTm9uZQogICAgIHRyeToKICAgICAgICAgaWYgaCBpcyBOb25lOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCBzdHIpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlLCAoc3RyLCBQYXRoTGlrZSkpOgogICAgICAgICAgICAgICAgIGYgPSBvcGVuKGZpbGUsICdyYicpCiAgICAgICAgICAgICAgICAgaCA9IGYucmVhZCgzMikKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvaW1wLnB5IGIvTGliL2ltcC5weQppbmRleCBlMjY0MzkxLi43ODFmZjIzIDEwMDY0NAotLS0gYS9MaWIvaW1wLnB5CisrKyBiL0xpYi9pbXAucHkKQEAgLTMwLDcgKzMwLDcgQEAKIAogd2FybmluZ3Mud2FybigidGhlIGltcCBtb2R1bGUgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaW1wb3J0bGliOyAiCiAgICAgICAgICAgICAgICJzZWUgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIGFsdGVybmF0aXZlIHVzZXMiLAotICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogCiAjIERFUFJFQ0FURUQKIFNFQVJDSF9FUlJPUiA9IDAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQppbmRleCA5ZWVjYmZlLi5hNTMxYTAzIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CkBAIC0zNiwyMyArMzYsNiBAQAogICAgIHJldHVybiB0eXBlKHN5cykobmFtZSkKIAogCi1jbGFzcyBfTWFuYWdlUmVsb2FkOgotCi0gICAgIiIiTWFuYWdlcyB0aGUgcG9zc2libGUgY2xlYW4tdXAgb2Ygc3lzLm1vZHVsZXMgZm9yIGxvYWRfbW9kdWxlKCkuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLl9pc19yZWxvYWQgPSBzZWxmLl9uYW1lIGluIHN5cy5tb2R1bGVzCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBpZiBhbnkoYXJnIGlzIG5vdCBOb25lIGZvciBhcmcgaW4gYXJncykgYW5kIG5vdCBzZWxmLl9pc19yZWxvYWQ6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW3NlbGYuX25hbWVdCi0gICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCiAjIE1vZHVsZS1sZXZlbCBsb2NraW5nICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgQSBkaWN0IG1hcHBpbmcgbW9kdWxlIG5hbWVzIHRvIHdlYWtyZWZzIG9mIF9Nb2R1bGVMb2NrIGluc3RhbmNlcwpAQCAtMjcwLDcgKzI1Myw3IEBACiAjIE1vZHVsZSBzcGVjaWZpY2F0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKIGRlZiBfbW9kdWxlX3JlcHIobW9kdWxlKToKLSAgICAjIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNb2R1bGVUeXBlX19yZXByX18oKS4KKyAgICAjIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBNb2R1bGVUeXBlLl9fcmVwcl9fKCkuCiAgICAgbG9hZGVyID0gZ2V0YXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJywgTm9uZSkKICAgICBpZiBoYXNhdHRyKGxvYWRlciwgJ21vZHVsZV9yZXByJyk6CiAgICAgICAgICMgQXMgc29vbiBhcyBCdWlsdGluSW1wb3J0ZXIsIEZyb3plbkltcG9ydGVyLCBhbmQgTmFtZXNwYWNlTG9hZGVyCkBAIC01NzYsOSArNTU5LDggQEAKICAgICAgICAgIyBtb2R1bGUgY3JlYXRpb24gc2hvdWxkIGJlIHVzZWQuCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKICAgICBlbGlmIGhhc2F0dHIoc3BlYy5sb2FkZXIsICdleGVjX21vZHVsZScpOgotICAgICAgICBfd2FybmluZ3Mud2Fybignc3RhcnRpbmcgaW4gUHl0aG9uIDMuNiwgbG9hZGVycyBkZWZpbmluZyBleGVjX21vZHVsZSgpICcKLSAgICAgICAgICAgICAgICAgICAgICAgJ211c3QgYWxzbyBkZWZpbmUgY3JlYXRlX21vZHVsZSgpJywKLSAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdsb2FkZXJzIHRoYXQgZGVmaW5lIGV4ZWNfbW9kdWxlKCkgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVzdCBhbHNvIGRlZmluZSBjcmVhdGVfbW9kdWxlKCknKQogICAgIGlmIG1vZHVsZSBpcyBOb25lOgogICAgICAgICBtb2R1bGUgPSBfbmV3X21vZHVsZShzcGVjLm5hbWUpCiAgICAgX2luaXRfbW9kdWxlX2F0dHJzKHNwZWMsIG1vZHVsZSkKQEAgLTYwMyw3ICs1ODUsNyBAQAogCiAjIFVzZWQgYnkgaW1wb3J0bGliLnJlbG9hZCgpIGFuZCBfbG9hZF9tb2R1bGVfc2hpbSgpLgogZGVmIF9leGVjKHNwZWMsIG1vZHVsZSk6Ci0gICAgIiIiRXhlY3V0ZSB0aGUgc3BlYyBpbiBhbiBleGlzdGluZyBtb2R1bGUncyBuYW1lc3BhY2UuIiIiCisgICAgIiIiRXhlY3V0ZSB0aGUgc3BlYydzIHNwZWNpZmllZCBtb2R1bGUgaW4gYW4gZXhpc3RpbmcgbW9kdWxlJ3MgbmFtZXNwYWNlLiIiIgogICAgIG5hbWUgPSBzcGVjLm5hbWUKICAgICBfaW1wLmFjcXVpcmVfbG9jaygpCiAgICAgd2l0aCBfTW9kdWxlTG9ja01hbmFnZXIobmFtZSk6CkBAIC04NzcsMTQgKzg1OSwyMSBAQAogCiAKIGRlZiBfZmluZF9zcGVjKG5hbWUsIHBhdGgsIHRhcmdldD1Ob25lKToKLSAgICAiIiJGaW5kIGEgbW9kdWxlJ3MgbG9hZGVyLiIiIgotICAgIGlmIHN5cy5tZXRhX3BhdGggaXMgbm90IE5vbmUgYW5kIG5vdCBzeXMubWV0YV9wYXRoOgorICAgICIiIkZpbmQgYSBtb2R1bGUncyBzcGVjLiIiIgorICAgIG1ldGFfcGF0aCA9IHN5cy5tZXRhX3BhdGgKKyAgICBpZiBtZXRhX3BhdGggaXMgTm9uZToKKyAgICAgICAgIyBQeUltcG9ydF9DbGVhbnVwKCkgaXMgcnVubmluZyBvciBoYXMgYmVlbiBjYWxsZWQuCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJzeXMubWV0YV9wYXRoIGlzIE5vbmUsIFB5dGhvbiBpcyBsaWtlbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAic2h1dHRpbmcgZG93biIpCisKKyAgICBpZiBub3QgbWV0YV9wYXRoOgogICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLm1ldGFfcGF0aCBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisKICAgICAjIFdlIGNoZWNrIHN5cy5tb2R1bGVzIGhlcmUgZm9yIHRoZSByZWxvYWQgY2FzZS4gIFdoaWxlIGEgcGFzc2VkLWluCiAgICAgIyB0YXJnZXQgd2lsbCB1c3VhbGx5IGluZGljYXRlIGEgcmVsb2FkIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSwgd2hlcmVhcwogICAgICMgc3lzLm1vZHVsZXMgcHJvdmlkZXMgb25lLgogICAgIGlzX3JlbG9hZCA9IG5hbWUgaW4gc3lzLm1vZHVsZXMKLSAgICBmb3IgZmluZGVyIGluIHN5cy5tZXRhX3BhdGg6CisgICAgZm9yIGZpbmRlciBpbiBtZXRhX3BhdGg6CiAgICAgICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZmluZF9zcGVjID0gZmluZGVyLmZpbmRfc3BlYwpAQCAtOTI1LDYgKzkxNCw5IEBACiAgICAgaWYgbGV2ZWwgPiAwOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShwYWNrYWdlLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdfX3BhY2thZ2VfXyBub3Qgc2V0IHRvIGEgc3RyaW5nJykKKyAgICAgICAgZWxpZiBub3QgcGFja2FnZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IHdpdGggbm8ga25vd24gcGFyZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWNrYWdlJykKICAgICAgICAgZWxpZiBwYWNrYWdlIG5vdCBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIG1zZyA9ICgnUGFyZW50IG1vZHVsZSB7IXJ9IG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICcKICAgICAgICAgICAgICAgICAgICAnaW1wb3J0JykKQEAgLTk1MCwxMCArOTQyLDEwIEBACiAgICAgICAgICAgICBwYXRoID0gcGFyZW50X21vZHVsZS5fX3BhdGhfXwogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBtc2cgPSAoX0VSUl9NU0cgKyAnOyB7IXJ9IGlzIG5vdCBhIHBhY2thZ2UnKS5mb3JtYXQobmFtZSwgcGFyZW50KQotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPW5hbWUpIGZyb20gTm9uZQorICAgICAgICAgICAgcmFpc2UgTW9kdWxlTm90Rm91bmRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCiAgICAgc3BlYyA9IF9maW5kX3NwZWMobmFtZSwgcGF0aCkKICAgICBpZiBzcGVjIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQorICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSwgbmFtZT1uYW1lKQogICAgIGVsc2U6CiAgICAgICAgIG1vZHVsZSA9IF9sb2FkX3VubG9ja2VkKHNwZWMpCiAgICAgaWYgcGFyZW50OgpAQCAtOTg5LDEwICs5ODEsMTEgQEAKICAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQogICAgICAgICBtZXNzYWdlID0gKCdpbXBvcnQgb2Yge30gaGFsdGVkOyAnCiAgICAgICAgICAgICAgICAgICAgJ05vbmUgaW4gc3lzLm1vZHVsZXMnLmZvcm1hdChuYW1lKSkKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgbmFtZT1uYW1lKQorICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKICAgICBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpCiAgICAgcmV0dXJuIG1vZHVsZQogCisKIGRlZiBfaGFuZGxlX2Zyb21saXN0KG1vZHVsZSwgZnJvbWxpc3QsIGltcG9ydF8pOgogICAgICIiIkZpZ3VyZSBvdXQgd2hhdCBfX2ltcG9ydF9fIHNob3VsZCByZXR1cm4uCiAKQEAgLTEwMTQsMTMgKzEwMDcsMTIgQEAKICAgICAgICAgICAgICAgICBmcm9tX25hbWUgPSAne30ue30nLmZvcm1hdChtb2R1bGUuX19uYW1lX18sIHgpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGltcG9ydF8sIGZyb21fbmFtZSkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBNb2R1bGVOb3RGb3VuZEVycm9yIGFzIGV4YzoKICAgICAgICAgICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBkaWN0YXRlcyB3ZSBpZ25vcmUgZmFpbGVkCiAgICAgICAgICAgICAgICAgICAgICMgaW1wb3J0cyB0cmlnZ2VyZWQgYnkgZnJvbWxpc3QgZm9yIG1vZHVsZXMgdGhhdCBkb24ndAogICAgICAgICAgICAgICAgICAgICAjIGV4aXN0LgotICAgICAgICAgICAgICAgICAgICBpZiBzdHIoZXhjKS5zdGFydHN3aXRoKF9FUlJfTVNHX1BSRUZJWCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBleGMubmFtZSA9PSBmcm9tX25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgZXhjLm5hbWUgPT0gZnJvbV9uYW1lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICByZXR1cm4gbW9kdWxlCiAKQEAgLTEwMzMsNyArMTAyNSwxOSBAQAogCiAgICAgIiIiCiAgICAgcGFja2FnZSA9IGdsb2JhbHMuZ2V0KCdfX3BhY2thZ2VfXycpCi0gICAgaWYgcGFja2FnZSBpcyBOb25lOgorICAgIHNwZWMgPSBnbG9iYWxzLmdldCgnX19zcGVjX18nKQorICAgIGlmIHBhY2thZ2UgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgYW5kIHBhY2thZ2UgIT0gc3BlYy5wYXJlbnQ6CisgICAgICAgICAgICBfd2FybmluZ3Mud2FybigiX19wYWNrYWdlX18gIT0gX19zcGVjX18ucGFyZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGYiKHtwYWNrYWdlIXJ9ICE9IHtzcGVjLnBhcmVudCFyfSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1wb3J0V2FybmluZywgc3RhY2tsZXZlbD0zKQorICAgICAgICByZXR1cm4gcGFja2FnZQorICAgIGVsaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIHNwZWMucGFyZW50CisgICAgZWxzZToKKyAgICAgICAgX3dhcm5pbmdzLndhcm4oImNhbid0IHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yIF9fcGFja2FnZV9fLCAiCisgICAgICAgICAgICAgICAgICAgICAgICJmYWxsaW5nIGJhY2sgb24gX19uYW1lX18gYW5kIF9fcGF0aF9fIiwKKyAgICAgICAgICAgICAgICAgICAgICAgSW1wb3J0V2FybmluZywgc3RhY2tsZXZlbD0zKQogICAgICAgICBwYWNrYWdlID0gZ2xvYmFsc1snX19uYW1lX18nXQogICAgICAgICBpZiAnX19wYXRoX18nIG5vdCBpbiBnbG9iYWxzOgogICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKaW5kZXggZTU0ZDY5MS4uNWNiNThhYiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQpAQCAtMTM3LDEwICsxMzcsNiBAQAogIyBhIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKICMgQXBwbGUgTVBXIGNvbXBpbGVyIHN3YXBzIHRoZWlyIHZhbHVlcywgYm90Y2hpbmcgc3RyaW5nIGNvbnN0YW50cy4KICMKLSMgVGhlIG1hZ2ljIG51bWJlcnMgbXVzdCBiZSBzcGFjZWQgYXBhcnQgYXQgbGVhc3QgMiB2YWx1ZXMsIGFzIHRoZQotIyAtVSBpbnRlcnBldGVyIGZsYWcgd2lsbCBjYXVzZSBNQUdJQysxIGJlaW5nIHVzZWQuIFRoZXkgaGF2ZSBiZWVuCi0jIG9kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgotIwogIyBUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgogIyBUaGUgY3VycmVudCB3b3JraW5nIHNjaGVtZSBpcyB0byBpbmNyZW1lbnQgdGhlIHByZXZpb3VzIHZhbHVlIGJ5CiAjIDEwLgpAQCAtMjMxLDYgKzIyNywxOCBAQAogIyAgICAgUHl0aG9uIDMuNWIyICAzMzQwIChmaXggZGljdGlvbmFyeSBkaXNwbGF5IGV2YWx1YXRpb24gb3JkZXIgIzExMjA1KQogIyAgICAgUHl0aG9uIDMuNWIyICAzMzUwIChhZGQgR0VUX1lJRUxEX0ZST01fSVRFUiBvcGNvZGUgIzI0NDAwKQogIyAgICAgUHl0aG9uIDMuNS4yICAzMzUxIChmaXggQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgb3Bjb2RlICMyNzI4NikKKyMgICAgIFB5dGhvbiAzLjZhMCAgMzM2MCAoYWRkIEZPUk1BVF9WQUxVRSBvcGNvZGUgIzI1NDgzCisjICAgICBQeXRob24gMy42YTAgIDMzNjEgKGxpbmVubyBkZWx0YSBvZiBjb2RlLmNvX2xub3RhYiBiZWNvbWVzIHNpZ25lZCkKKyMgICAgIFB5dGhvbiAzLjZhMSAgMzM3MCAoMTYgYml0IHdvcmRjb2RlKQorIyAgICAgUHl0aG9uIDMuNmExICAzMzcxIChhZGQgQlVJTERfQ09OU1RfS0VZX01BUCBvcGNvZGUgIzI3MTQwKQorIyAgICAgUHl0aG9uIDMuNmExICAzMzcyIChNQUtFX0ZVTkNUSU9OIHNpbXBsaWZpY2F0aW9uLCByZW1vdmUgTUFLRV9DTE9TVVJFCisjICAgICAgICAgICAgICAgICAgICAgICAgICMyNzA5NSkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3MyAoYWRkIEJVSUxEX1NUUklORyBvcGNvZGUgIzI3MDc4KQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzc1IChhZGQgU0VUVVBfQU5OT1RBVElPTlMgYW5kIFNUT1JFX0FOTk9UQVRJT04gb3Bjb2RlcworIyAgICAgICAgICAgICAgICAgICAgICAgICAjMjc5ODUpCisjICAgICBQeXRob24gMy42YjEgIDMzNzYgKHNpbXBsaWZ5IENBTExfRlVOQ1RJT05zICYgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwpCisjICAgICBQeXRob24gMy42YjEgIDMzNzcgKHNldCBfX2NsYXNzX18gY2VsbCBmcm9tIHR5cGUuX19uZXdfXyAjMjM3MjIpCisjICAgICBQeXRob24gMy42YjIgIDMzNzggKGFkZCBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMICMyODI1NykKICMKICMgTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubwogIyBsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQpAQCAtMjM5LDcgKzI0Nyw3IEBACiAjIFdoZW5ldmVyIE1BR0lDX05VTUJFUiBpcyBjaGFuZ2VkLCB0aGUgcmFuZ2VzIGluIHRoZSBtYWdpY192YWx1ZXMgYXJyYXkKICMgaW4gUEMvbGF1bmNoZXIuYyBtdXN0IGFsc28gYmUgdXBkYXRlZC4KIAotTUFHSUNfTlVNQkVSID0gKDMzNTEpLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKK01BR0lDX05VTUJFUiA9ICgzMzc4KS50b19ieXRlcygyLCAnbGl0dGxlJykgKyBiJ1xyXG4nCiBfUkFXX01BR0lDX05VTUJFUiA9IGludC5mcm9tX2J5dGVzKE1BR0lDX05VTUJFUiwgJ2xpdHRsZScpICAjIEZvciBpbXBvcnQuYwogCiBfUFlDQUNIRSA9ICdfX3B5Y2FjaGVfXycKQEAgLTI3Niw2ICsyODQsNyBAQAogICAgICAgICAgICAgbWVzc2FnZSA9ICdkZWJ1Z19vdmVycmlkZSBvciBvcHRpbWl6YXRpb24gbXVzdCBiZSBzZXQgdG8gTm9uZScKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtZXNzYWdlKQogICAgICAgICBvcHRpbWl6YXRpb24gPSAnJyBpZiBkZWJ1Z19vdmVycmlkZSBlbHNlIDEKKyAgICBwYXRoID0gX29zLmZzcGF0aChwYXRoKQogICAgIGhlYWQsIHRhaWwgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgIGJhc2UsIHNlcCwgcmVzdCA9IHRhaWwucnBhcnRpdGlvbignLicpCiAgICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZwpAQCAtMzA2LDYgKzMxNSw3IEBACiAgICAgIiIiCiAgICAgaWYgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQorICAgIHBhdGggPSBfb3MuZnNwYXRoKHBhdGgpCiAgICAgaGVhZCwgcHljYWNoZV9maWxlbmFtZSA9IF9wYXRoX3NwbGl0KHBhdGgpCiAgICAgaGVhZCwgcHljYWNoZSA9IF9wYXRoX3NwbGl0KGhlYWQpCiAgICAgaWYgcHljYWNoZSAhPSBfUFlDQUNIRToKQEAgLTM3MSwxNCArMzgxLDYgQEAKICAgICByZXR1cm4gbW9kZQogCiAKLWRlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzLCB2ZXJib3NpdHk9MSk6Ci0gICAgIiIiUHJpbnQgdGhlIG1lc3NhZ2UgdG8gc3RkZXJyIGlmIC12L1BZVEhPTlZFUkJPU0UgaXMgdHVybmVkIG9uLiIiIgotICAgIGlmIHN5cy5mbGFncy52ZXJib3NlID49IHZlcmJvc2l0eToKLSAgICAgICAgaWYgbm90IG1lc3NhZ2Uuc3RhcnRzd2l0aCgoJyMnLCAnaW1wb3J0ICcpKToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnIyAnICsgbWVzc2FnZQotICAgICAgICBwcmludChtZXNzYWdlLmZvcm1hdCgqYXJncyksIGZpbGU9c3lzLnN0ZGVycikKLQotCiBkZWYgX2NoZWNrX25hbWUobWV0aG9kKToKICAgICAiIiJEZWNvcmF0b3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG1vZHVsZSBiZWluZyByZXF1ZXN0ZWQgbWF0Y2hlcyB0aGUgb25lIHRoZQogICAgIGxvYWRlciBjYW4gaGFuZGxlLgpAQCAtNDQ4LDE1ICs0NTAsMTUgQEAKICAgICByYXdfc2l6ZSA9IGRhdGFbODoxMl0KICAgICBpZiBtYWdpYyAhPSBNQUdJQ19OVU1CRVI6CiAgICAgICAgIG1lc3NhZ2UgPSAnYmFkIG1hZ2ljIG51bWJlciBpbiB7IXJ9OiB7IXJ9Jy5mb3JtYXQobmFtZSwgbWFnaWMpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsICoqZXhjX2RldGFpbHMpCiAgICAgZWxpZiBsZW4ocmF3X3RpbWVzdGFtcCkgIT0gNDoKICAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHRpbWVzdGFtcCBpbiB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKICAgICBlbGlmIGxlbihyYXdfc2l6ZSkgIT0gNDoKICAgICAgICAgbWVzc2FnZSA9ICdyZWFjaGVkIEVPRiB3aGlsZSByZWFkaW5nIHNpemUgb2Ygc291cmNlIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQogICAgIGlmIHNvdXJjZV9zdGF0cyBpcyBub3QgTm9uZToKICAgICAgICAgdHJ5OgpAQCAtNDY2LDcgKzQ2OCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ2J5dGVjb2RlIGlzIHN0YWxlIGZvciB7IXJ9Jy5mb3JtYXQobmFtZSkKLSAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKQEAgLTQ4Myw3ICs0ODUsNyBAQAogICAgICIiIkNvbXBpbGUgYnl0ZWNvZGUgYXMgcmV0dXJuZWQgYnkgX3ZhbGlkYXRlX2J5dGVjb2RlX2hlYWRlcigpLiIiIgogICAgIGNvZGUgPSBtYXJzaGFsLmxvYWRzKGRhdGEpCiAgICAgaWYgaXNpbnN0YW5jZShjb2RlLCBfY29kZV90eXBlKToKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgICBpZiBzb3VyY2VfcGF0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIF9pbXAuX2ZpeF9jb19maWxlbmFtZShjb2RlLCBzb3VyY2VfcGF0aCkKICAgICAgICAgcmV0dXJuIGNvZGUKQEAgLTU0MSw2ICs1NDMsOCBAQAogICAgICAgICAgICAgICAgIGxvY2F0aW9uID0gbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBsb2NhdGlvbiA9IF9vcy5mc3BhdGgobG9jYXRpb24pCiAKICAgICAjIElmIHRoZSBsb2NhdGlvbiBpcyBvbiB0aGUgZmlsZXN5c3RlbSwgYnV0IGRvZXNuJ3QgYWN0dWFsbHkgZXhpc3QsCiAgICAgIyB3ZSBjb3VsZCByZXR1cm4gTm9uZSBoZXJlLCBpbmRpY2F0aW5nIHRoYXQgdGhlIGxvY2F0aW9uIGlzIG5vdApAQCAtNjEwLDcgKzYxNCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZWdpc3RyeV9rZXkgPSBjbHMuUkVHSVNUUllfS0VZCiAgICAgICAgIGtleSA9IHJlZ2lzdHJ5X2tleS5mb3JtYXQoZnVsbG5hbWU9ZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249c3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPSclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCBjbHMuX29wZW5fcmVnaXN0cnkoa2V5KSBhcyBoa2V5OgogICAgICAgICAgICAgICAgIGZpbGVwYXRoID0gX3dpbnJlZy5RdWVyeVZhbHVlKGhrZXksICcnKQpAQCAtNjczLDYgKzY3Nyw3IEBACiAgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChleGVjLCBjb2RlLCBtb2R1bGUuX19kaWN0X18pCiAKICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJUaGlzIG1vZHVsZSBpcyBkZXByZWNhdGVkLiIiIgogICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKIAogCkBAIC03NjYsMjEgKzc3MSwyMSBAQAogICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30gbWF0Y2hlcyB7fScsIGJ5dGVjb2RlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbXBpbGVfYnl0ZWNvZGUoYnl0ZXNfZGF0YSwgbmFtZT1mdWxsbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoPWJ5dGVjb2RlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGg9c291cmNlX3BhdGgpCiAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCiAgICAgICAgIGNvZGVfb2JqZWN0ID0gc2VsZi5zb3VyY2VfdG9fY29kZShzb3VyY2VfYnl0ZXMsIHNvdXJjZV9wYXRoKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9Jywgc291cmNlX3BhdGgpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQogICAgICAgICBpZiAobm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGFuZCBieXRlY29kZV9wYXRoIGlzIG5vdCBOb25lIGFuZAogICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6CiAgICAgICAgICAgICBkYXRhID0gX2NvZGVfdG9fYnl0ZWNvZGUoY29kZV9vYmplY3QsIHNvdXJjZV9tdGltZSwKICAgICAgICAgICAgICAgICAgICAgbGVuKHNvdXJjZV9ieXRlcykpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfYnl0ZWNvZGUoc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd3cm90ZSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIGNvZGVfb2JqZWN0CkBAIC04NjAsMTQgKzg2NSwxNiBAQAogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgICMgQ291bGQgYmUgYSBwZXJtaXNzaW9uIGVycm9yLCByZWFkLW9ubHkgZmlsZXN5c3RlbToganVzdCBmb3JnZXQKICAgICAgICAgICAgICAgICAjIGFib3V0IHdyaXRpbmcgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGFyZW50LCBleGMpCisgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQsIGV4YykKICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgX3dyaXRlX2F0b21pYyhwYXRoLCBkYXRhLCBfbW9kZSkKLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NyZWF0ZWQgeyFyfScsIHBhdGgpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NyZWF0ZWQgeyFyfScsIHBhdGgpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKICAgICAgICAgICAgICMgU2FtZSBhcyBhYm92ZToganVzdCBkb24ndCB3cml0ZSB0aGUgYnl0ZWNvZGUuCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXRoLCBleGMpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjKQogCiAKIGNsYXNzIFNvdXJjZWxlc3NGaWxlTG9hZGVyKEZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgpAQCAtOTEyLDE0ICs5MTksMTQgQEAKICAgICAgICAgIiIiQ3JlYXRlIGFuIHVuaXRpYWxpemVkIGV4dGVuc2lvbiBtb2R1bGUiIiIKICAgICAgICAgbW9kdWxlID0gX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKAogICAgICAgICAgICAgX2ltcC5jcmVhdGVfZHluYW1pYywgc3BlYykKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgeyFyfSBsb2FkZWQgZnJvbSB7IXJ9JywKICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLm5hbWUsIHNlbGYucGF0aCkKICAgICAgICAgcmV0dXJuIG1vZHVsZQogCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gZXh0ZW5zaW9uIG1vZHVsZSIiIgogICAgICAgICBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoX2ltcC5leGVjX2R5bmFtaWMsIG1vZHVsZSkKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGV4ZWN1dGVkIGZyb20geyFyfScsCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGV4ZWN1dGVkIGZyb20geyFyfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYW1lLCBzZWxmLnBhdGgpCiAKICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6CkBAIC05ODUsNiArOTkyLDkgQEAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX3JlY2FsY3VsYXRlKCkpCiAKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaW5kZXgsIHBhdGgpOgorICAgICAgICBzZWxmLl9wYXRoW2luZGV4XSA9IHBhdGgKKwogICAgIGRlZiBfX2xlbl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCiAKQEAgLTEwMzQsNyArMTA0NCw4IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgICMgVGhlIGltcG9ydCBzeXN0ZW0gbmV2ZXIgY2FsbHMgdGhpcyBtZXRob2QuCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9Jywgc2VsZi5fcGF0aCkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXRoKQogICAgICAgICByZXR1cm4gX2Jvb3RzdHJhcC5fbG9hZF9tb2R1bGVfc2hpbShzZWxmLCBmdWxsbmFtZSkKIAogCkBAIC0xMDU0LDExICsxMDY1LDcgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgotICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCi0KLSAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KLQotICAgICAgICAiIiIKKyAgICAgICAgIiIiU2VhcmNoIHN5cy5wYXRoX2hvb2tzIGZvciBhIGZpbmRlciBmb3IgJ3BhdGgnLiIiIgogICAgICAgICBpZiBzeXMucGF0aF9ob29rcyBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5wYXRoX2hvb2tzOgogICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5wYXRoX2hvb2tzIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKICAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6CkBAIC0xMTQwLDggKzExNDcsMTAgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX3NwZWMoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiImZpbmQgdGhlIG1vZHVsZSBvbiBzeXMucGF0aCBvciAncGF0aCcgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kCi0gICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLiIiIgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yICdmdWxsbmFtZScgb24gc3lzLnBhdGggb3IgJ3BhdGgnLgorCisgICAgICAgIFRoZSBzZWFyY2ggaXMgYmFzZWQgb24gc3lzLnBhdGhfaG9va3MgYW5kIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgorICAgICAgICAiIiIKICAgICAgICAgaWYgcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgcGF0aCA9IHN5cy5wYXRoCiAgICAgICAgIHNwZWMgPSBjbHMuX2dldF9zcGVjKGZ1bGxuYW1lLCBwYXRoLCB0YXJnZXQpCkBAIC0xMjIxLDggKzEyMzAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zPXNtc2wpCiAKICAgICBkZWYgZmluZF9zcGVjKHNlbGYsIGZ1bGxuYW1lLCB0YXJnZXQ9Tm9uZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgc3BlYyBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuICBSZXR1cm5zIHRoZQotICAgICAgICBtYXRjaGluZyBzcGVjLCBvciBOb25lIGlmIG5vdCBmb3VuZC4iIiIKKyAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBtYXRjaGluZyBzcGVjLCBvciBOb25lIGlmIG5vdCBmb3VuZC4KKyAgICAgICAgIiIiCiAgICAgICAgIGlzX25hbWVzcGFjZSA9IEZhbHNlCiAgICAgICAgIHRhaWxfbW9kdWxlID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCiAgICAgICAgIHRyeToKQEAgLTEyNTQsMTIgKzEyNjUsMTMgQEAKICAgICAgICAgIyBDaGVjayBmb3IgYSBmaWxlIHcvIGEgcHJvcGVyIHN1ZmZpeCBleGlzdHMuCiAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlcl9jbGFzcyBpbiBzZWxmLl9sb2FkZXJzOgogICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgndHJ5aW5nIHt9Jy5mb3JtYXQoZnVsbF9wYXRoKSwgdmVyYm9zaXR5PTIpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3RyeWluZyB7fScsIGZ1bGxfcGF0aCwgdmVyYm9zaXR5PTIpCiAgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CiAgICAgICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfc3BlYyhsb2FkZXJfY2xhc3MsIGZ1bGxuYW1lLCBmdWxsX3BhdGgsIE5vbmUsIHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHRhcmdldCkKICAgICAgICAgaWYgaXNfbmFtZXNwYWNlOgotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScuZm9ybWF0KGJhc2VfcGF0aCkpCisgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3Bvc3NpYmxlIG5hbWVzcGFjZSBmb3Ige30nLCBiYXNlX3BhdGgpCiAgICAgICAgICAgICBzcGVjID0gX2Jvb3RzdHJhcC5Nb2R1bGVTcGVjKGZ1bGxuYW1lLCBOb25lKQogICAgICAgICAgICAgc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucyA9IFtiYXNlX3BhdGhdCiAgICAgICAgICAgICByZXR1cm4gc3BlYwpAQCAtMTQzMCw4ICsxNDQyLDMgQEAKICAgICBpZiBfb3MuX19uYW1lX18gPT0gJ250JzoKICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoV2luZG93c1JlZ2lzdHJ5RmluZGVyKQogICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKFBhdGhGaW5kZXIpCi0KLSAgICAjIFhYWCBXZSBleHBvc2UgYSBjb3VwbGUgb2YgY2xhc3NlcyBpbiBfYm9vdHN0cmFwIGZvciB0aGUgc2FrZSBvZgotICAgICMgYSBzZXR1cHRvb2xzIGJ1ZyAoaHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvc2V0dXB0b29scy9pc3N1ZS8zNzgpLgotICAgIF9ib290c3RyYXBfbW9kdWxlLkZpbGVGaW5kZXIgPSBGaWxlRmluZGVyCi0gICAgX2Jvb3RzdHJhcF9tb2R1bGUuU291cmNlRmlsZUxvYWRlciA9IFNvdXJjZUZpbGVMb2FkZXIKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weSBiL0xpYi9pbXBvcnRsaWIvdXRpbC5weQppbmRleCBlMWZhMDdhLi42YmRmMGQ0IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3V0aWwucHkKKysrIGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CkBAIC0yMiw4ICsyMiw4IEBACiAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLicpOgogICAgICAgICByZXR1cm4gbmFtZQogICAgIGVsaWYgbm90IHBhY2thZ2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcmVsYXRpdmUgbmFtZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyhubyBsZWFkaW5nIGRvdCknLmZvcm1hdChuYW1lKSkKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmJ25vIHBhY2thZ2Ugc3BlY2lmaWVkIGZvciB7cmVwcihuYW1lKX0gJworICAgICAgICAgICAgICAgICAgICAgICAgICcocmVxdWlyZWQgZm9yIHJlbGF0aXZlIG1vZHVsZSBuYW1lcyknKQogICAgIGxldmVsID0gMAogICAgIGZvciBjaGFyYWN0ZXIgaW4gbmFtZToKICAgICAgICAgaWYgY2hhcmFjdGVyICE9ICcuJzoKQEAgLTIwNCwxMSArMjA0LDYgQEAKICAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgogCiAKLWNsYXNzIF9Nb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6Ci0KLSAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB0byBhbGxvdyBfX2NsYXNzX18gbWFuaXB1bGF0aW9uLiIiIgotCi0KIGNsYXNzIF9MYXp5TW9kdWxlKHR5cGVzLk1vZHVsZVR5cGUpOgogCiAgICAgIiIiQSBzdWJjbGFzcyBvZiB0aGUgbW9kdWxlIHR5cGUgd2hpY2ggdHJpZ2dlcnMgbG9hZGluZyB1cG9uIGF0dHJpYnV0ZSBhY2Nlc3MuIiIiCkBAIC0yMTgsMTMgKzIxMywxNCBAQAogICAgICAgICAjIEFsbCBtb2R1bGUgbWV0YWRhdGEgbXVzdCBiZSBnYXJuZXJlZCBmcm9tIF9fc3BlY19fIGluIG9yZGVyIHRvIGF2b2lkCiAgICAgICAgICMgdXNpbmcgbXV0YXRlZCB2YWx1ZXMuCiAgICAgICAgICMgU3RvcCB0cmlnZ2VyaW5nIHRoaXMgbWV0aG9kLgotICAgICAgICBzZWxmLl9fY2xhc3NfXyA9IF9Nb2R1bGUKKyAgICAgICAgc2VsZi5fX2NsYXNzX18gPSB0eXBlcy5Nb2R1bGVUeXBlCiAgICAgICAgICMgR2V0IHRoZSBvcmlnaW5hbCBuYW1lIHRvIG1ha2Ugc3VyZSBubyBvYmplY3Qgc3Vic3RpdHV0aW9uIG9jY3VycmVkCiAgICAgICAgICMgaW4gc3lzLm1vZHVsZXMuCiAgICAgICAgIG9yaWdpbmFsX25hbWUgPSBzZWxmLl9fc3BlY19fLm5hbWUKICAgICAgICAgIyBGaWd1cmUgb3V0IGV4YWN0bHkgd2hhdCBhdHRyaWJ1dGVzIHdlcmUgbXV0YXRlZCBiZXR3ZWVuIHRoZSBjcmVhdGlvbgogICAgICAgICAjIG9mIHRoZSBtb2R1bGUgYW5kIG5vdy4KLSAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlCisgICAgICAgIGF0dHJzX3RoZW4gPSBzZWxmLl9fc3BlY19fLmxvYWRlcl9zdGF0ZVsnX19kaWN0X18nXQorICAgICAgICBvcmlnaW5hbF90eXBlID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGVbJ19fY2xhc3NfXyddCiAgICAgICAgIGF0dHJzX25vdyA9IHNlbGYuX19kaWN0X18KICAgICAgICAgYXR0cnNfdXBkYXRlZCA9IHt9CiAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGF0dHJzX25vdy5pdGVtcygpOgpAQCAtMjM5LDkgKzIzNSw5IEBACiAgICAgICAgICMgb2JqZWN0IHdhcyBwdXQgaW50byBzeXMubW9kdWxlcy4KICAgICAgICAgaWYgb3JpZ2luYWxfbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgIGlmIGlkKHNlbGYpICE9IGlkKHN5cy5tb2R1bGVzW29yaWdpbmFsX25hbWVdKToKLSAgICAgICAgICAgICAgICBtc2cgPSAoJ21vZHVsZSBvYmplY3QgZm9yIHshcn0gc3Vic3RpdHV0ZWQgaW4gc3lzLm1vZHVsZXMgJwotICAgICAgICAgICAgICAgICAgICAgICAnZHVyaW5nIGEgbGF6eSBsb2FkJykKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZy5mb3JtYXQob3JpZ2luYWxfbmFtZSkpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihmIm1vZHVsZSBvYmplY3QgZm9yIHtvcmlnaW5hbF9uYW1lIXJ9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vic3RpdHV0ZWQgaW4gc3lzLm1vZHVsZXMgZHVyaW5nIGEgbGF6eSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvYWQiKQogICAgICAgICAjIFVwZGF0ZSBhZnRlciBsb2FkaW5nIHNpbmNlIHRoYXQncyB3aGF0IHdvdWxkIGhhcHBlbiBpbiBhbiBlYWdlcgogICAgICAgICAjIGxvYWRpbmcgc2l0dWF0aW9uLgogICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShhdHRyc191cGRhdGVkKQpAQCAtMjc1LDggKzI3MSw3IEBACiAgICAgICAgIHNlbGYubG9hZGVyID0gbG9hZGVyCiAKICAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBzcGVjKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbW9kdWxlIHdoaWNoIGNhbiBoYXZlIGl0cyBfX2NsYXNzX18gbWFuaXB1bGF0ZWQuIiIiCi0gICAgICAgIHJldHVybiBfTW9kdWxlKHNwZWMubmFtZSkKKyAgICAgICAgcmV0dXJuIHNlbGYubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKIAogICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAiIiJNYWtlIHRoZSBtb2R1bGUgbG9hZCBsYXppbHkuIiIiCkBAIC0yODYsNSArMjgxLDggQEAKICAgICAgICAgIyBvbiBhbiBvYmplY3Qgd291bGQgaGF2ZSB0cmlnZ2VyZWQgdGhlIGxvYWQsCiAgICAgICAgICMgZS5nLiBgYG1vZHVsZS5fX3NwZWNfXy5sb2FkZXIgPSBOb25lYGAgd291bGQgdHJpZ2dlciBhIGxvYWQgZnJvbQogICAgICAgICAjIHRyeWluZyB0byBhY2Nlc3MgbW9kdWxlLl9fc3BlY19fLgotICAgICAgICBtb2R1bGUuX19zcGVjX18ubG9hZGVyX3N0YXRlID0gbW9kdWxlLl9fZGljdF9fLmNvcHkoKQorICAgICAgICBsb2FkZXJfc3RhdGUgPSB7fQorICAgICAgICBsb2FkZXJfc3RhdGVbJ19fZGljdF9fJ10gPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIGxvYWRlcl9zdGF0ZVsnX19jbGFzc19fJ10gPSBtb2R1bGUuX19jbGFzc19fCisgICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBsb2FkZXJfc3RhdGUKICAgICAgICAgbW9kdWxlLl9fY2xhc3NfXyA9IF9MYXp5TW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvaW5zcGVjdC5weSBiL0xpYi9pbnNwZWN0LnB5CmluZGV4IDBmZDAzODIuLjI5MjNkNmQgMTAwNjQ0Ci0tLSBhL0xpYi9pbnNwZWN0LnB5CisrKyBiL0xpYi9pbnNwZWN0LnB5CkBAIC0xNiw3ICsxNiw3IEBACiAgICAgZ2V0bW9kdWxlKCkgLSBkZXRlcm1pbmUgdGhlIG1vZHVsZSB0aGF0IGFuIG9iamVjdCBjYW1lIGZyb20KICAgICBnZXRjbGFzc3RyZWUoKSAtIGFycmFuZ2UgY2xhc3NlcyBzbyBhcyB0byByZXByZXNlbnQgdGhlaXIgaGllcmFyY2h5CiAKLSAgICBnZXRhcmdzcGVjKCksIGdldGFyZ3ZhbHVlcygpLCBnZXRjYWxsYXJncygpIC0gZ2V0IGluZm8gYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCisgICAgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKICAgICBnZXRmdWxsYXJnc3BlYygpIC0gc2FtZSwgd2l0aCBzdXBwb3J0IGZvciBQeXRob24gMyBmZWF0dXJlcwogICAgIGZvcm1hdGFyZ3NwZWMoKSwgZm9ybWF0YXJndmFsdWVzKCkgLSBmb3JtYXQgYW4gYXJndW1lbnQgc3BlYwogICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKQEAgLTE4NSw2ICsxODUsMTMgQEAKICAgICByZXR1cm4gYm9vbCgoaXNmdW5jdGlvbihvYmplY3QpIG9yIGlzbWV0aG9kKG9iamVjdCkpIGFuZAogICAgICAgICAgICAgICAgIG9iamVjdC5fX2NvZGVfXy5jb19mbGFncyAmIENPX0NPUk9VVElORSkKIAorZGVmIGlzYXN5bmNnZW5mdW5jdGlvbihvYmplY3QpOgorICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCisgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKQorCitkZWYgaXNhc3luY2dlbihvYmplY3QpOgorICAgIHJldHVybiBpc2luc3RhbmNlKG9iamVjdCwgdHlwZXMuQXN5bmNHZW5lcmF0b3JUeXBlKQorCiBkZWYgaXNnZW5lcmF0b3Iob2JqZWN0KToKICAgICAiIiJSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgZ2VuZXJhdG9yLgogCkBAIC02MjMsMjMgKzYzMCw2IEBACiAgICAgcmFpc2UgVHlwZUVycm9yKCd7IXJ9IGlzIG5vdCBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgJwogICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yIGNvZGUgb2JqZWN0Jy5mb3JtYXQob2JqZWN0KSkKIAotTW9kdWxlSW5mbyA9IG5hbWVkdHVwbGUoJ01vZHVsZUluZm8nLCAnbmFtZSBzdWZmaXggbW9kZSBtb2R1bGVfdHlwZScpCi0KLWRlZiBnZXRtb2R1bGVpbmZvKHBhdGgpOgotICAgICIiIkdldCB0aGUgbW9kdWxlIG5hbWUsIHN1ZmZpeCwgbW9kZSwgYW5kIG1vZHVsZSB0eXBlIGZvciBhIGdpdmVuIGZpbGUuIiIiCi0gICAgd2FybmluZ3Mud2FybignaW5zcGVjdC5nZXRtb2R1bGVpbmZvKCkgaXMgZGVwcmVjYXRlZCcsIERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgIDIpCi0gICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKLSAgICBzdWZmaXhlcyA9IFsoLWxlbihzdWZmaXgpLCBzdWZmaXgsIG1vZGUsIG10eXBlKQotICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4LCBtb2RlLCBtdHlwZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCldCi0gICAgc3VmZml4ZXMuc29ydCgpICMgdHJ5IGxvbmdlc3Qgc3VmZml4ZXMgZmlyc3QsIGluIGNhc2UgdGhleSBvdmVybGFwCi0gICAgZm9yIG5lZ2xlbiwgc3VmZml4LCBtb2RlLCBtdHlwZSBpbiBzdWZmaXhlczoKLSAgICAgICAgaWYgZmlsZW5hbWVbbmVnbGVuOl0gPT0gc3VmZml4OgotICAgICAgICAgICAgcmV0dXJuIE1vZHVsZUluZm8oZmlsZW5hbWVbOm5lZ2xlbl0sIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCi0KIGRlZiBnZXRtb2R1bGVuYW1lKHBhdGgpOgogICAgICIiIlJldHVybiB0aGUgbW9kdWxlIG5hbWUgZm9yIGEgZ2l2ZW4gZmlsZSwgb3IgTm9uZS4iIiIKICAgICBmbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKQEAgLTEwNjAsOCArMTA1MCw2IEBACiAgICAgJ2t3b25seWRlZmF1bHRzJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBuYW1lcyBmcm9tIGt3b25seWFyZ3MgdG8gZGVmYXVsdHMuCiAgICAgJ2Fubm90YXRpb25zJyBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZyBhcmd1bWVudCBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAotICAgIFRoZSBmaXJzdCBmb3VyIGl0ZW1zIGluIHRoZSB0dXBsZSBjb3JyZXNwb25kIHRvIGdldGFyZ3NwZWMoKS4KLQogICAgIFRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCwgdXNlIGluc3BlY3Quc2lnbmF0dXJlKCkgaW5zdGVhZC4KICAgICAiIiIKIApAQCAtMTE3NCw4ICsxMTYyLDcgQEAKICAgICAgICAgICAgICAgICAgIGZvcm1hdHZhbHVlPWxhbWJkYSB2YWx1ZTogJz0nICsgcmVwcih2YWx1ZSksCiAgICAgICAgICAgICAgICAgICBmb3JtYXRyZXR1cm5zPWxhbWJkYSB0ZXh0OiAnIC0+ICcgKyB0ZXh0LAogICAgICAgICAgICAgICAgICAgZm9ybWF0YW5ub3RhdGlvbj1mb3JtYXRhbm5vdGF0aW9uKToKLSAgICAiIiJGb3JtYXQgYW4gYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkgZ2V0YXJnc3BlYwotICAgIG9yIGdldGZ1bGxhcmdzcGVjLgorICAgICIiIkZvcm1hdCBhbiBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieSBnZXRmdWxsYXJnc3BlYy4KIAogICAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChhcmdzLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsCiAgICAga3dvbmx5YXJncywga3dvbmx5ZGVmYXVsdHMsIGFubm90YXRpb25zKS4gIFRoZSBvdGhlciBmaXZlIGFyZ3VtZW50cwpAQCAtMjQxNyw2ICsyNDA0LDIwIEBACiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIm5hbWUgbXVzdCBiZSBhIHN0ciwgbm90IGEgeyFyfSIuZm9ybWF0KG5hbWUpKQogCisgICAgICAgIGlmIG5hbWVbMF0gPT0gJy4nIGFuZCBuYW1lWzE6XS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAjIFRoZXNlIGFyZSBpbXBsaWNpdCBhcmd1bWVudHMgZ2VuZXJhdGVkIGJ5IGNvbXByZWhlbnNpb25zLiBJbgorICAgICAgICAgICAgIyBvcmRlciB0byBwcm92aWRlIGEgZnJpZW5kbGllciBpbnRlcmZhY2UgdG8gdXNlcnMsIHdlIHJlY2FzdAorICAgICAgICAgICAgIyB0aGVpciBuYW1lIGFzICJpbXBsaWNpdE4iIGFuZCB0cmVhdCB0aGVtIGFzIHBvc2l0aW9uYWwtb25seS4KKyAgICAgICAgICAgICMgU2VlIGlzc3VlIDE5NjExLgorICAgICAgICAgICAgaWYga2luZCAhPSBfUE9TSVRJT05BTF9PUl9LRVlXT1JEOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdpbXBsaWNpdCBhcmd1bWVudHMgbXVzdCBiZSBwYXNzZWQgaW4gYXMge30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QT1NJVElPTkFMX09SX0tFWVdPUkQKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuX2tpbmQgPSBfUE9TSVRJT05BTF9PTkxZCisgICAgICAgICAgICBuYW1lID0gJ2ltcGxpY2l0e30nLmZvcm1hdChuYW1lWzE6XSkKKwogICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnLmZvcm1hdChuYW1lKSkKIApkaWZmIC0tZ2l0IGEvTGliL2lvLnB5IGIvTGliL2lvLnB5CmluZGV4IGUwM2RiOTcuLjk2OGVlNTAgMTAwNjQ0Ci0tLSBhL0xpYi9pby5weQorKysgYi9MaWIvaW8ucHkKQEAgLTkwLDMgKzkwLDEwIEBACiBmb3Iga2xhc3MgaW4gKFN0cmluZ0lPLCBUZXh0SU9XcmFwcGVyKToKICAgICBUZXh0SU9CYXNlLnJlZ2lzdGVyKGtsYXNzKQogZGVsIGtsYXNzCisKK3RyeToKKyAgICBmcm9tIF9pbyBpbXBvcnQgX1dpbmRvd3NDb25zb2xlSU8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIFJhd0lPQmFzZS5yZWdpc3RlcihfV2luZG93c0NvbnNvbGVJTykKZGlmZiAtLWdpdCBhL0xpYi9pcGFkZHJlc3MucHkgYi9MaWIvaXBhZGRyZXNzLnB5CmluZGV4IDFmOTAwNTguLjIwZjMzY2IgMTAwNjQ0Ci0tLSBhL0xpYi9pcGFkZHJlc3MucHkKKysrIGIvTGliL2lwYWRkcmVzcy5weQpAQCAtNjM2LDEyICs2MzYsMTIgQEAKICAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCiAgICAgICAgIGlmIG4gPj0gMDoKICAgICAgICAgICAgIGlmIG5ldHdvcmsgKyBuID4gYnJvYWRjYXN0OgotICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCdhZGRyZXNzIG91dCBvZiByYW5nZScpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhuZXR3b3JrICsgbikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG4gKz0gMQogICAgICAgICAgICAgaWYgYnJvYWRjYXN0ICsgbiA8IG5ldHdvcms6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ2FkZHJlc3Mgb3V0IG9mIHJhbmdlJykKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKGJyb2FkY2FzdCArIG4pCiAKICAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKZGlmZiAtLWdpdCBhL0xpYi9qc29uL19faW5pdF9fLnB5IGIvTGliL2pzb24vX19pbml0X18ucHkKaW5kZXggZjcyYjA1OC4uOGRjYzY3OCAxMDA2NDQKLS0tIGEvTGliL2pzb24vX19pbml0X18ucHkKKysrIGIvTGliL2pzb24vX19pbml0X18ucHkKQEAgLTEwNSw2ICsxMDUsNyBAQAogCiBmcm9tIC5kZWNvZGVyIGltcG9ydCBKU09ORGVjb2RlciwgSlNPTkRlY29kZUVycm9yCiBmcm9tIC5lbmNvZGVyIGltcG9ydCBKU09ORW5jb2RlcgoraW1wb3J0IGNvZGVjcwogCiBfZGVmYXVsdF9lbmNvZGVyID0gSlNPTkVuY29kZXIoCiAgICAgc2tpcGtleXM9RmFsc2UsCkBAIC0xMTYsNyArMTE3LDcgQEAKICAgICBkZWZhdWx0PU5vbmUsCiApCiAKLWRlZiBkdW1wKG9iaiwgZnAsIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKK2RlZiBkdW1wKG9iaiwgZnAsICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwKICAgICAgICAgYWxsb3dfbmFuPVRydWUsIGNscz1Ob25lLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLAogICAgICAgICBkZWZhdWx0PU5vbmUsIHNvcnRfa2V5cz1GYWxzZSwgKiprdyk6CiAgICAgIiIiU2VyaWFsaXplIGBgb2JqYGAgYXMgYSBKU09OIGZvcm1hdHRlZCBzdHJlYW0gdG8gYGBmcGBgIChhCkBAIC0xNzksNyArMTgwLDcgQEAKICAgICAgICAgZnAud3JpdGUoY2h1bmspCiAKIAotZGVmIGR1bXBzKG9iaiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAorZGVmIGR1bXBzKG9iaiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgICAgICBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsCiAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgc29ydF9rZXlzPUZhbHNlLCAqKmt3KToKICAgICAiIiJTZXJpYWxpemUgYGBvYmpgYCB0byBhIEpTT04gZm9ybWF0dGVkIGBgc3RyYGAuCkBAIC0yNDAsNyArMjQxLDM2IEBACiBfZGVmYXVsdF9kZWNvZGVyID0gSlNPTkRlY29kZXIob2JqZWN0X2hvb2s9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKIAogCi1kZWYgbG9hZChmcCwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCitkZWYgZGV0ZWN0X2VuY29kaW5nKGIpOgorICAgIGJzdGFydHN3aXRoID0gYi5zdGFydHN3aXRoCisgICAgaWYgYnN0YXJ0c3dpdGgoKGNvZGVjcy5CT01fVVRGMzJfQkUsIGNvZGVjcy5CT01fVVRGMzJfTEUpKToKKyAgICAgICAgcmV0dXJuICd1dGYtMzInCisgICAgaWYgYnN0YXJ0c3dpdGgoKGNvZGVjcy5CT01fVVRGMTZfQkUsIGNvZGVjcy5CT01fVVRGMTZfTEUpKToKKyAgICAgICAgcmV0dXJuICd1dGYtMTYnCisgICAgaWYgYnN0YXJ0c3dpdGgoY29kZWNzLkJPTV9VVEY4KToKKyAgICAgICAgcmV0dXJuICd1dGYtOC1zaWcnCisKKyAgICBpZiBsZW4oYikgPj0gNDoKKyAgICAgICAgaWYgbm90IGJbMF06CisgICAgICAgICAgICAjIDAwIDAwIC0tIC0tIC0gdXRmLTMyLWJlCisgICAgICAgICAgICAjIDAwIFhYIC0tIC0tIC0gdXRmLTE2LWJlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1iZScgaWYgYlsxXSBlbHNlICd1dGYtMzItYmUnCisgICAgICAgIGlmIG5vdCBiWzFdOgorICAgICAgICAgICAgIyBYWCAwMCAwMCAwMCAtIHV0Zi0zMi1sZQorICAgICAgICAgICAgIyBYWCAwMCBYWCBYWCAtIHV0Zi0xNi1sZQorICAgICAgICAgICAgcmV0dXJuICd1dGYtMTYtbGUnIGlmIGJbMl0gb3IgYlszXSBlbHNlICd1dGYtMzItbGUnCisgICAgZWxpZiBsZW4oYikgPT0gMjoKKyAgICAgICAgaWYgbm90IGJbMF06CisgICAgICAgICAgICAjIDAwIFhYIC0gdXRmLTE2LWJlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1iZScKKyAgICAgICAgaWYgbm90IGJbMV06CisgICAgICAgICAgICAjIFhYIDAwIC0gdXRmLTE2LWxlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1sZScKKyAgICAjIGRlZmF1bHQKKyAgICByZXR1cm4gJ3V0Zi04JworCisKK2RlZiBsb2FkKGZwLCAqLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpOgogICAgICIiIkRlc2VyaWFsaXplIGBgZnBgYCAoYSBgYC5yZWFkKClgYC1zdXBwb3J0aW5nIGZpbGUtbGlrZSBvYmplY3QgY29udGFpbmluZwogICAgIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgpAQCAtMjY4LDEwICsyOTgsMTAgQEAKICAgICAgICAgcGFyc2VfY29uc3RhbnQ9cGFyc2VfY29uc3RhbnQsIG9iamVjdF9wYWlyc19ob29rPW9iamVjdF9wYWlyc19ob29rLCAqKmt3KQogCiAKLWRlZiBsb2FkcyhzLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKK2RlZiBsb2FkcyhzLCAqLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpOgotICAgICIiIkRlc2VyaWFsaXplIGBgc2BgIChhIGBgc3RyYGAgaW5zdGFuY2UgY29udGFpbmluZyBhIEpTT04KLSAgICBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgorICAgICIiIkRlc2VyaWFsaXplIGBgc2BgIChhIGBgc3RyYGAsIGBgYnl0ZXNgYCBvciBgYGJ5dGVhcnJheWBgIGluc3RhbmNlCisgICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdC4KIAogICAgIGBgb2JqZWN0X2hvb2tgYCBpcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlCiAgICAgcmVzdWx0IG9mIGFueSBvYmplY3QgbGl0ZXJhbCBkZWNvZGUgKGEgYGBkaWN0YGApLiBUaGUgcmV0dXJuIHZhbHVlIG9mCkBAIC0zMDcsMTIgKzMzNywxNiBAQAogICAgIFRoZSBgYGVuY29kaW5nYGAgYXJndW1lbnQgaXMgaWdub3JlZCBhbmQgZGVwcmVjYXRlZC4KIAogICAgICIiIgotICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIHN0cik6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyLCBub3QgeyFyfScuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuX19jbGFzc19fLl9fbmFtZV9fKSkKLSAgICBpZiBzLnN0YXJ0c3dpdGgodSdcdWZlZmYnKToKLSAgICAgICAgcmFpc2UgSlNPTkRlY29kZUVycm9yKCJVbmV4cGVjdGVkIFVURi04IEJPTSAoZGVjb2RlIHVzaW5nIHV0Zi04LXNpZykiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgMCkKKyAgICBpZiBpc2luc3RhbmNlKHMsIHN0cik6CisgICAgICAgIGlmIHMuc3RhcnRzd2l0aCgnXHVmZWZmJyk6CisgICAgICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcywgMCkKKyAgICBlbHNlOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIGJ5dGVzIG9yIGJ5dGVhcnJheSwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub3QgeyFyfScuZm9ybWF0KHMuX19jbGFzc19fLl9fbmFtZV9fKSkKKyAgICAgICAgcyA9IHMuZGVjb2RlKGRldGVjdF9lbmNvZGluZyhzKSwgJ3N1cnJvZ2F0ZXBhc3MnKQorCiAgICAgaWYgKGNscyBpcyBOb25lIGFuZCBvYmplY3RfaG9vayBpcyBOb25lIGFuZAogICAgICAgICAgICAgcGFyc2VfaW50IGlzIE5vbmUgYW5kIHBhcnNlX2Zsb2F0IGlzIE5vbmUgYW5kCiAgICAgICAgICAgICBwYXJzZV9jb25zdGFudCBpcyBOb25lIGFuZCBvYmplY3RfcGFpcnNfaG9vayBpcyBOb25lIGFuZCBub3Qga3cpOgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vZGVjb2Rlci5weSBiL0xpYi9qc29uL2RlY29kZXIucHkKaW5kZXggMGYwM2YyMC4uMjQyMmM2YSAxMDA2NDQKLS0tIGEvTGliL2pzb24vZGVjb2Rlci5weQorKysgYi9MaWIvanNvbi9kZWNvZGVyLnB5CkBAIC0yODAsNyArMjgwLDcgQEAKIAogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsCiAgICAgICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgc3RyaWN0PVRydWUsCiAgICAgICAgICAgICBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKToKICAgICAgICAgIiIiYGBvYmplY3RfaG9va2BgLCBpZiBzcGVjaWZpZWQsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdApkaWZmIC0tZ2l0IGEvTGliL2pzb24vZW5jb2Rlci5weSBiL0xpYi9qc29uL2VuY29kZXIucHkKaW5kZXggZDU5NjQ4OS4uNDFhNDk3YyAxMDA2NDQKLS0tIGEvTGliL2pzb24vZW5jb2Rlci5weQorKysgYi9MaWIvanNvbi9lbmNvZGVyLnB5CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAiIiIKICAgICBpdGVtX3NlcGFyYXRvciA9ICcsICcKICAgICBrZXlfc2VwYXJhdG9yID0gJzogJwotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwKICAgICAgICAgICAgIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBzb3J0X2tleXM9RmFsc2UsCiAgICAgICAgICAgICBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpOgogICAgICAgICAiIiJDb25zdHJ1Y3RvciBmb3IgSlNPTkVuY29kZXIsIHdpdGggc2Vuc2libGUgZGVmYXVsdHMuCkBAIC0xNzYsNyArMTc2LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTkVuY29kZXIuZGVmYXVsdChzZWxmLCBvKQogCiAgICAgICAgICIiIgotICAgICAgICByYWlzZSBUeXBlRXJyb3IocmVwcihvKSArICIgaXMgbm90IEpTT04gc2VyaWFsaXphYmxlIikKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJPYmplY3Qgb2YgdHlwZSAnJXMnIGlzIG5vdCBKU09OIHNlcmlhbGl6YWJsZSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgby5fX2NsYXNzX18uX19uYW1lX18pCiAKICAgICBkZWYgZW5jb2RlKHNlbGYsIG8pOgogICAgICAgICAiIiJSZXR1cm4gYSBKU09OIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIFB5dGhvbiBkYXRhIHN0cnVjdHVyZS4KZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL0dyYW1tYXIudHh0IGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKaW5kZXggNjA1MDNkZC4uMmFiZDVlZSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKKysrIGIvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQKQEAgLTU0LDEyICs1NCwxMyBAQAogc2ltcGxlX3N0bXQ6IHNtYWxsX3N0bXQgKCc7JyBzbWFsbF9zdG10KSogWyc7J10gTkVXTElORQogc21hbGxfc3RtdDogKGV4cHJfc3RtdCB8IHByaW50X3N0bXQgIHwgZGVsX3N0bXQgfCBwYXNzX3N0bXQgfCBmbG93X3N0bXQgfAogICAgICAgICAgICAgIGltcG9ydF9zdG10IHwgZ2xvYmFsX3N0bXQgfCBleGVjX3N0bXQgfCBhc3NlcnRfc3RtdCkKLWV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKK2V4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhbm5hc3NpZ24gfCBhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKICAgICAgICAgICAgICAgICAgICAgICgnPScgKHlpZWxkX2V4cHJ8dGVzdGxpc3Rfc3Rhcl9leHByKSkqKQorYW5uYXNzaWduOiAnOicgdGVzdCBbJz0nIHRlc3RdCiB0ZXN0bGlzdF9zdGFyX2V4cHI6ICh0ZXN0fHN0YXJfZXhwcikgKCcsJyAodGVzdHxzdGFyX2V4cHIpKSogWycsJ10KIGF1Z2Fzc2lnbjogKCcrPScgfCAnLT0nIHwgJyo9JyB8ICdAPScgfCAnLz0nIHwgJyU9JyB8ICcmPScgfCAnfD0nIHwgJ149JyB8CiAgICAgICAgICAgICAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JykKLSMgRm9yIG5vcm1hbCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCisjIEZvciBub3JtYWwgYW5kIGFubm90YXRlZCBhc3NpZ25tZW50cywgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgZW5mb3JjZWQgYnkgdGhlIGludGVycHJldGVyCiBwcmludF9zdG10OiAncHJpbnQnICggWyB0ZXN0ICgnLCcgdGVzdCkqIFsnLCddIF0gfAogICAgICAgICAgICAgICAgICAgICAgICc+PicgdGVzdCBbICgnLCcgdGVzdCkrIFsnLCddIF0gKQogZGVsX3N0bXQ6ICdkZWwnIGV4cHJsaXN0CkBAIC0xNjAsNyArMTYxLDcgQEAKIAkgICAgc3Rhcl9leHByICkKIAogY29tcF9pdGVyOiBjb21wX2ZvciB8IGNvbXBfaWYKLWNvbXBfZm9yOiAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3RsaXN0X3NhZmUgW2NvbXBfaXRlcl0KK2NvbXBfZm9yOiBbQVNZTkNdICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3Rfc2FmZSBbY29tcF9pdGVyXQogY29tcF9pZjogJ2lmJyBvbGRfdGVzdCBbY29tcF9pdGVyXQogCiB0ZXN0bGlzdDE6IHRlc3QgKCcsJyB0ZXN0KSoKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkgYi9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CmluZGV4IDQ0NTAyYmYuLmJhYmU2Y2IgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlV0aWxpdHkgZnVuY3Rpb25zLCBub2RlIGNvbnN0cnVjdGlvbiBtYWNyb3MsIGV0Yy4iIiIKICMgQXV0aG9yOiBDb2xsaW4gV2ludGVyCiAKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBpc2xpY2UKLQogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLnB5dHJlZSBpbXBvcnQgTGVhZiwgTm9kZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2RpY3QucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQppbmRleCA5NjNmOTUyLi5kMzY1NWM5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weQpAQCAtMzAsOSArMzAsOCBAQAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBweXRyZWUKIGZyb20gLi4gaW1wb3J0IHBhdGNvbXAKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKLWZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBMUGFyZW4sIFJQYXJlbiwgQXJnTGlzdCwgRG90Citmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgRG90CiBmcm9tIC4uIGltcG9ydCBmaXhlcl91dGlsCiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2V4ZWMucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQppbmRleCAyYzliNzJkLi5hYjkyMWVlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weQpAQCAtMTAsNyArMTAsNiBAQAogIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgQ29tbWEsIE5hbWUsIENhbGwKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkKaW5kZXggMzkxODg5Zi4uYmI2NzE4YyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5CkBAIC0xNCw3ICsxNCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgTGlzdENvbXAsIGluX3NwZWNpYWxfY29udGV4dAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfaGFzX2tleS5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CmluZGV4IDE4YzU2MGYuLjQzOTcwOGMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5CkBAIC0zMSw3ICszMSw2IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgcHl0cmVlCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgcGFyZW50aGVzaXplCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5CmluZGV4IDQ2YzdhYWYuLjhlMzQ0NjMgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weQpAQCAtMjAsNyArMjAsNyBAQAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4ucHlncmFtIGltcG9ydCB0b2tlbgotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIHN5bXMsIE5vZGUsIExlYWYKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBzeW1zLCBOb2RlLCBMZWFmCiAKIAogZGVmIGhhc19tZXRhY2xhc3MocGFyZW50KToKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9ub256ZXJvLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKaW5kZXggYWQ5MWEyOS4uYzIyOTU5NiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkKQEAgLTMsNyArMyw3IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIHN5bXMKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lCiAKIGNsYXNzIEZpeE5vbnplcm8oZml4ZXJfYmFzZS5CYXNlRml4KToKICAgICBCTV9jb21wYXRpYmxlID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5CmluZGV4IGExZmUyZjUuLjg3ODAzMjIgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkKQEAgLTE4LDcgKzE4LDcgQEAKIGZyb20gLi4gaW1wb3J0IHB5dHJlZQogZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIENvbW1hLCBTdHJpbmcsIGlzX3R1cGxlCitmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgQ29tbWEsIFN0cmluZwogCiAKIHBhcmVuZF9leHByID0gcGF0Y29tcC5jb21waWxlX3BhdHRlcm4oCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkKaW5kZXggZGIzNDEwNC4uNjdiZjUxZiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weQpAQCAtMjAsNyArMjAsNiBAQAogIiIiCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQogZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUKIApAQCAtNDIsNyArNDEsNyBAQAogICAgICAgICAnTm90SW1wbGVtZW50ZWRUeXBlJyA6ICd0eXBlKE5vdEltcGxlbWVudGVkKScsCiAgICAgICAgICdTbGljZVR5cGUnIDogJ3NsaWNlJywKICAgICAgICAgJ1N0cmluZ1R5cGUnOiAnYnl0ZXMnLCAjIFhYWCA/Ci0gICAgICAgICdTdHJpbmdUeXBlcycgOiAnc3RyJywgIyBYWFggPworICAgICAgICAnU3RyaW5nVHlwZXMnIDogJyhzdHIsKScsICMgWFhYID8KICAgICAgICAgJ1R1cGxlVHlwZSc6ICd0dXBsZScsCiAgICAgICAgICdUeXBlVHlwZScgOiAndHlwZScsCiAgICAgICAgICdVbmljb2RlVHlwZSc6ICdzdHInLApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkKaW5kZXggMTQ4MWNkOS4uNWEzNjA0OSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5CkBAIC02LDcgKzYsNiBAQAogCiAjIExvY2FsIGltcG9ydHMKIGZyb20gbGliMnRvMy5maXhlcy5maXhfaW1wb3J0cyBpbXBvcnQgYWx0ZXJuYXRlcywgRml4SW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIGxpYjJ0bzMuZml4ZXJfdXRpbCBpbXBvcnQgKE5hbWUsIENvbW1hLCBGcm9tSW1wb3J0LCBOZXdsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5kX2luZGVudGF0aW9uLCBOb2RlLCBzeW1zKQogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9yZWZhY3Rvci5weSBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CmluZGV4IDA3MjgwODMuLmM1YTFhYTIgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CisrKyBiL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5CkBAIC04LDggKzgsNiBAQAogcHJvdmlkZXMgaW5mcmFzdHJ1Y3R1cmUgdG8gd3JpdGUgeW91ciBvd24gcmVmYWN0b3JpbmcgdG9vbC4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIF9fYXV0aG9yX18gPSAiR3VpZG8gdmFuIFJvc3N1bSA8Z3VpZG9AcHl0aG9uLm9yZz4iCiAKIApAQCAtMjYsNyArMjQsNiBAQAogZnJvbSAucGdlbjIgaW1wb3J0IGRyaXZlciwgdG9rZW5pemUsIHRva2VuCiBmcm9tIC5maXhlcl91dGlsIGltcG9ydCBmaW5kX3Jvb3QKIGZyb20gLiBpbXBvcnQgcHl0cmVlLCBweWdyYW0KLWZyb20gLiBpbXBvcnQgYnRtX3V0aWxzIGFzIGJ1CiBmcm9tIC4gaW1wb3J0IGJ0bV9tYXRjaGVyIGFzIGJtCiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5CmluZGV4IGMwYmY3ZjIuLmNmMzFhNTQgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkKQEAgLTMxOSw3ICszMTksNyBAQAogICAgICAgICBkZWYgZih4KSAtPiBsaXN0OiBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGYuX19hbm5vdGF0aW9uc19fLCB7J3JldHVybic6IGxpc3R9KQogCi0gICAgICAgICMgdGVzdCBNQUtFX0NMT1NVUkUgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncworICAgICAgICAjIHRlc3QgY2xvc3VyZXMgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncwogICAgICAgICBjbG9zdXJlID0gMQogICAgICAgICBkZWYgZigpOiByZXR1cm4gY2xvc3VyZQogICAgICAgICBkZWYgZih4PTEpOiByZXR1cm4gY2xvc3VyZQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkKaW5kZXggMDg5NzE3Ny4uYWU3Y2ZlOCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5CkBAIC0zLDEwICszLDggQEAKIAogIyBQeXRob24gaW1wb3J0cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCi1pbXBvcnQgcmUKIGZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAogCiAjIExvY2FsIGltcG9ydHMKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weQppbmRleCAxNTA3OWZlLi5jMDUwN2NmIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5CkBAIC0xMCw3ICsxMCw2IEBACiBpbXBvcnQgdGVzdC5zdXBwb3J0CiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCByZWZhY3RvcgogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9maXhlcnMucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQppbmRleCA2NDBkY2VmLi5iM2YyNjgwIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weQpAQCAtMiwxMiArMiwxMSBAQAogCiAjIFB5dGhvbiBpbXBvcnRzCiBpbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKICMgTG9jYWwgaW1wb3J0cwotZnJvbSBsaWIydG8zIGltcG9ydCBweWdyYW0sIHB5dHJlZSwgcmVmYWN0b3IsIGZpeGVyX3V0aWwKK2Zyb20gbGliMnRvMyBpbXBvcnQgcHlncmFtLCBmaXhlcl91dGlsCiBmcm9tIGxpYjJ0bzMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIAogCkBAIC0zMjM0LDYgKzMyMzMsMTAgQEAKICAgICAgICAgYSA9ICIiInR5cGUoTm9uZSkiIiIKICAgICAgICAgc2VsZi5jaGVjayhiLCBhKQogCisgICAgICAgIGIgPSAidHlwZXMuU3RyaW5nVHlwZXMiCisgICAgICAgIGEgPSAiKHN0ciwpIgorICAgICAgICBzZWxmLmNoZWNrKGIsIGEpCisKIGNsYXNzIFRlc3RfaWRpb21zKEZpeGVyVGVzdENhc2UpOgogICAgIGZpeGVyID0gImlkaW9tcyIKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQppbmRleCBlNGEwMTk0Li45YTk2OWU4IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQpAQCAtOCw3ICs4LDcgQEAKIAogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAotZnJvbSAuc3VwcG9ydCBpbXBvcnQgZHJpdmVyLCB0ZXN0X2RpcgorZnJvbSAuc3VwcG9ydCBpbXBvcnQgZHJpdmVyCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZQogCiAjIFB5dGhvbiBpbXBvcnRzCkBAIC0xMzQsNiArMTM0LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgIiIiKQogCiAgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaSBhc3luYyBmb3IgaSBpbiBiXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2kgZm9yIGkgaW4gYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgaSBpbiBhIGlmIGF3YWl0IGkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBpfQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gYiBpZiBhd2FpdCBjXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBpIGZvciBpIGluIGIgaWYgY10KKyAgICAgICAgICAgICAgICAgICAgICAiIiIpCisKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CiAKICAgICAgICAgICAgIGRlZiBmb28oKTogcGFzcwogCkBAIC0yNzIsNiArMjkwLDM2IEBACiAgICAgICAgIHNlbGYudmFsaWRhdGUocykKIAogCisjIEFkYXB0ZWQgZnJvbSBQeXRob24gMydzIExpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weTpHcmFtbWFyVGVzdHMudGVzdF92YXJfYW5ub3QKK2NsYXNzIFRlc3RWYXJBbm5vdGF0aW9ucyhHcmFtbWFyVGVzdCk6CisgICAgZGVmIHRlc3RfMShzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgidmFyMTogaW50ID0gNSIpCisKKyAgICBkZWYgdGVzdF8yKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJ2YXIyOiBbaW50LCBzdHJdIikKKworICAgIGRlZiB0ZXN0XzMoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBzdDogc3RyID0gJ0hlbGxvJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgYS5iOiBpbnQgPSAoMSwgMilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBzdFxuIikKKworICAgIGRlZiB0ZXN0XzQoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImRlZiBmYmFkKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHByaW50KHgpXG4iKQorCisgICAgZGVmIHRlc3RfNShzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiY2xhc3MgQzpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgczogc3RyID0gJ2F0dHInXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICB6ID0gMlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHNlbGYueDogaW50ID0geFxuIikKKworICAgIGRlZiB0ZXN0XzYoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoImxzdDogTGlzdFtpbnRdID0gW10iKQorCiBjbGFzcyBUZXN0RXhjZXB0KEdyYW1tYXJUZXN0KToKICAgICBkZWYgdGVzdF9uZXcoc2VsZik6CiAgICAgICAgIHMgPSAiIiIKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcHl0cmVlLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKaW5kZXggNGQ1ODVhOC4uMTc3MTI2ZCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkKQEAgLTksMTEgKzksNiBAQAogZXNwZWNpYWxseSB3aGVuIGRlYnVnZ2luZyBhIHRlc3QuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKLQogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weQppbmRleCA4NTYzMDAxLi5lOWJhZTVlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkKQEAgLTIsMjQgKzIsMTggQEAKIFVuaXQgdGVzdHMgZm9yIHJlZmFjdG9yLnB5LgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBpbwogaW1wb3J0IHJlCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gbGliMnRvMyBpbXBvcnQgcmVmYWN0b3IsIHB5Z3JhbSwgZml4ZXJfYmFzZQogZnJvbSBsaWIydG8zLnBnZW4yIGltcG9ydCB0b2tlbgogCi1mcm9tIC4gaW1wb3J0IHN1cHBvcnQKLQogCiBURVNUX0RBVEFfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICJkYXRhIikKIEZJWEVSX0RJUiA9IG9zLnBhdGguam9pbihURVNUX0RBVEFfRElSLCAiZml4ZXJzIikKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weQppbmRleCBkMmJlODJjLi5jNmM2MTM5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5CkBAIC0zLDkgKzMsNiBAQAogIyBUZXN0aW5nIGltcG9ydHMKIGZyb20gLiBpbXBvcnQgc3VwcG9ydAogCi0jIFB5dGhvbiBpbXBvcnRzCi1pbXBvcnQgb3MucGF0aAotCiAjIExvY2FsIGltcG9ydHMKIGZyb20gbGliMnRvMy5weXRyZWUgaW1wb3J0IE5vZGUsIExlYWYKIGZyb20gbGliMnRvMyBpbXBvcnQgZml4ZXJfdXRpbApkaWZmIC0tZ2l0IGEvTGliL2xvY2FsZS5weSBiL0xpYi9sb2NhbGUucHkKaW5kZXggNmQ1OWNkOC4uNGRlMDA5MCAxMDA2NDQKLS0tIGEvTGliL2xvY2FsZS5weQorKysgYi9MaWIvbG9jYWxlLnB5CkBAIC0zMDIsMTIgKzMwMiwxNiBAQAogCiBkZWYgZGVsb2NhbGl6ZShzdHJpbmcpOgogICAgICJQYXJzZXMgYSBzdHJpbmcgYXMgYSBub3JtYWxpemVkIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIGxvY2FsZSBzZXR0aW5ncy4iCisKKyAgICBjb252ID0gbG9jYWxlY29udigpCisKICAgICAjRmlyc3QsIGdldCByaWQgb2YgdGhlIGdyb3VwaW5nCi0gICAgdHMgPSBsb2NhbGVjb252KClbJ3Rob3VzYW5kc19zZXAnXQorICAgIHRzID0gY29udlsndGhvdXNhbmRzX3NlcCddCiAgICAgaWYgdHM6CiAgICAgICAgIHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHRzLCAnJykKKwogICAgICNuZXh0LCByZXBsYWNlIHRoZSBkZWNpbWFsIHBvaW50IHdpdGggYSBkb3QKLSAgICBkZCA9IGxvY2FsZWNvbnYoKVsnZGVjaW1hbF9wb2ludCddCisgICAgZGQgPSBjb252WydkZWNpbWFsX3BvaW50J10KICAgICBpZiBkZDoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZGQsICcuJykKICAgICByZXR1cm4gc3RyaW5nCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weSBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CmluZGV4IDIyNzQ0ZTEuLjI1OTBkNjUgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5CkBAIC0zMyw4ICszMyw5IEBACiAgICAgICAgICAgICdTdHJlYW1IYW5kbGVyJywgJ1dBUk4nLCAnV0FSTklORycsICdhZGRMZXZlbE5hbWUnLCAnYmFzaWNDb25maWcnLAogICAgICAgICAgICAnY2FwdHVyZVdhcm5pbmdzJywgJ2NyaXRpY2FsJywgJ2RlYnVnJywgJ2Rpc2FibGUnLCAnZXJyb3InLAogICAgICAgICAgICAnZXhjZXB0aW9uJywgJ2ZhdGFsJywgJ2dldExldmVsTmFtZScsICdnZXRMb2dnZXInLCAnZ2V0TG9nZ2VyQ2xhc3MnLAotICAgICAgICAgICAnaW5mbycsICdsb2cnLCAnbWFrZUxvZ1JlY29yZCcsICdzZXRMb2dnZXJDbGFzcycsICd3YXJuJywgJ3dhcm5pbmcnLAotICAgICAgICAgICAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywgJ2xhc3RSZXNvcnQnXQorICAgICAgICAgICAnaW5mbycsICdsb2cnLCAnbWFrZUxvZ1JlY29yZCcsICdzZXRMb2dnZXJDbGFzcycsICdzaHV0ZG93bicsCisgICAgICAgICAgICd3YXJuJywgJ3dhcm5pbmcnLCAnZ2V0TG9nUmVjb3JkRmFjdG9yeScsICdzZXRMb2dSZWNvcmRGYWN0b3J5JywKKyAgICAgICAgICAgJ2xhc3RSZXNvcnQnLCAncmFpc2VFeGNlcHRpb25zJ10KIAogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKQEAgLTEwNyw2ICsxMDgsNyBAQAogfQogX25hbWVUb0xldmVsID0gewogICAgICdDUklUSUNBTCc6IENSSVRJQ0FMLAorICAgICdGQVRBTCc6IEZBVEFMLAogICAgICdFUlJPUic6IEVSUk9SLAogICAgICdXQVJOJzogV0FSTklORywKICAgICAnV0FSTklORyc6IFdBUk5JTkcsCkBAIC05MzUsNiArOTM3LDEwIEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGRlbCB0LCB2LCB0YgogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICByZXR1cm4gJzwlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGxldmVsKQorCiBjbGFzcyBTdHJlYW1IYW5kbGVyKEhhbmRsZXIpOgogICAgICIiIgogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgbG9nZ2luZyByZWNvcmRzLCBhcHByb3ByaWF0ZWx5IGZvcm1hdHRlZCwKQEAgLTk4Niw2ICs5OTIsMTQgQEAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICBuYW1lID0gZ2V0YXR0cihzZWxmLnN0cmVhbSwgJ25hbWUnLCAnJykKKyAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIG5hbWUgKz0gJyAnCisgICAgICAgIHJldHVybiAnPCVzICVzKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lLCBsZXZlbCkKKworCiBjbGFzcyBGaWxlSGFuZGxlcihTdHJlYW1IYW5kbGVyKToKICAgICAiIiIKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggd3JpdGVzIGZvcm1hdHRlZCBsb2dnaW5nIHJlY29yZHMgdG8gZGlzayBmaWxlcy4KQEAgLTk5NCw2ICsxMDA4LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIE9wZW4gdGhlIHNwZWNpZmllZCBmaWxlIGFuZCB1c2UgaXQgYXMgdGhlIHN0cmVhbSBmb3IgbG9nZ2luZy4KICAgICAgICAgIiIiCisgICAgICAgICMgSXNzdWUgIzI3NDkzOiBhZGQgc3VwcG9ydCBmb3IgUGF0aCBvYmplY3RzIHRvIGJlIHBhc3NlZCBpbgorICAgICAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICAgICAgI2tlZXAgdGhlIGFic29sdXRlIHBhdGgsIG90aGVyd2lzZSBkZXJpdmVkIGNsYXNzZXMgd2hpY2ggdXNlIHRoaXMKICAgICAgICAgI21heSBjb21lIGEgY3JvcHBlciB3aGVuIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBjaGFuZ2VzCiAgICAgICAgIHNlbGYuYmFzZUZpbGVuYW1lID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQpAQCAtMTA0OCw2ICsxMDY0LDExIEBACiAgICAgICAgICAgICBzZWxmLnN0cmVhbSA9IHNlbGYuX29wZW4oKQogICAgICAgICBTdHJlYW1IYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShzZWxmLmxldmVsKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuYmFzZUZpbGVuYW1lLCBsZXZlbCkKKworCiBjbGFzcyBfU3RkZXJySGFuZGxlcihTdHJlYW1IYW5kbGVyKToKICAgICAiIiIKICAgICBUaGlzIGNsYXNzIGlzIGxpa2UgYSBTdHJlYW1IYW5kbGVyIHVzaW5nIHN5cy5zdGRlcnIsIGJ1dCBhbHdheXMgdXNlcwpAQCAtMTU0MCw2ICsxNTYxLDExIEBACiAgICAgICAgICAgICBzdWZmaXggPSAnLicuam9pbigoc2VsZi5uYW1lLCBzdWZmaXgpKQogICAgICAgICByZXR1cm4gc2VsZi5tYW5hZ2VyLmdldExvZ2dlcihzdWZmaXgpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLm5hbWUsIGxldmVsKQorCisKIGNsYXNzIFJvb3RMb2dnZXIoTG9nZ2VyKToKICAgICAiIiIKICAgICBBIHJvb3QgbG9nZ2VyIGlzIG5vdCB0aGF0IGRpZmZlcmVudCB0byBhbnkgb3RoZXIgbG9nZ2VyLCBleGNlcHQgdGhhdApAQCAtMTY2Niw2ICsxNjkyLDExIEBACiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBsb2dnZXIgPSBzZWxmLmxvZ2dlcgorICAgICAgICBsZXZlbCA9IGdldExldmVsTmFtZShsb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXMgKCVzKT4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBsb2dnZXIubmFtZSwgbGV2ZWwpCisKIHJvb3QgPSBSb290TG9nZ2VyKFdBUk5JTkcpCiBMb2dnZXIucm9vdCA9IHJvb3QKIExvZ2dlci5tYW5hZ2VyID0gTWFuYWdlcihMb2dnZXIucm9vdCkKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5IGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKaW5kZXggYzM5YTU2Zi4uN2Q3Nzk3MyAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKKysrIGIvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkKQEAgLTI0Niw2ICsyNDYsOSBAQAogCiAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByZS5jb21waWxlKHNlbGYuZXh0TWF0Y2gsIHJlLkFTQ0lJKQogICAgICAgICBzZWxmLmludGVydmFsID0gc2VsZi5pbnRlcnZhbCAqIGludGVydmFsICMgbXVsdGlwbHkgYnkgdW5pdHMgcmVxdWVzdGVkCisgICAgICAgICMgVGhlIGZvbGxvd2luZyBsaW5lIGFkZGVkIGJlY2F1c2UgdGhlIGZpbGVuYW1lIHBhc3NlZCBpbiBjb3VsZCBiZSBhCisgICAgICAgICMgcGF0aCBvYmplY3QgKHNlZSBJc3N1ZSAjMjc0OTMpLCBidXQgc2VsZi5iYXNlRmlsZW5hbWUgd2lsbCBiZSBhIHN0cmluZworICAgICAgICBmaWxlbmFtZSA9IHNlbGYuYmFzZUZpbGVuYW1lCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHQgPSBvcy5zdGF0KGZpbGVuYW1lKVtTVF9NVElNRV0KICAgICAgICAgZWxzZToKQEAgLTQ0MCwxMSArNDQzLDExIEBACiAgICAgICAgICAgICBzcmVzID0gb3MuZnN0YXQoc2VsZi5zdHJlYW0uZmlsZW5vKCkpCiAgICAgICAgICAgICBzZWxmLmRldiwgc2VsZi5pbm8gPSBzcmVzW1NUX0RFVl0sIHNyZXNbU1RfSU5PXQogCi0gICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICBkZWYgcmVvcGVuSWZOZWVkZWQoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBFbWl0IGEgcmVjb3JkLgorICAgICAgICBSZW9wZW4gbG9nIGZpbGUgaWYgbmVlZGVkLgogCi0gICAgICAgIEZpcnN0IGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIGFuZCBpZiBpdAorICAgICAgICBDaGVja3MgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgYW5kIGlmIGl0CiAgICAgICAgIGhhcywgY2xvc2UgdGhlIG9sZCBzdHJlYW0gYW5kIHJlb3BlbiB0aGUgZmlsZSB0byBnZXQgdGhlCiAgICAgICAgIGN1cnJlbnQgc3RyZWFtLgogICAgICAgICAiIiIKQEAgLTQ2Nyw2ICs0NzAsMTUgQEAKICAgICAgICAgICAgICAgICAjIG9wZW4gYSBuZXcgZmlsZSBoYW5kbGUgYW5kIGdldCBuZXcgc3RhdCBpbmZvIGZyb20gdGhhdCBmZAogICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAgICAgICAgICAgICAgICAgc2VsZi5fc3RhdHN0cmVhbSgpCisKKyAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgorICAgICAgICAiIiIKKyAgICAgICAgRW1pdCBhIHJlY29yZC4KKworICAgICAgICBJZiB1bmRlcmx5aW5nIGZpbGUgaGFzIGNoYW5nZWQsIHJlb3BlbiB0aGUgZmlsZSBiZWZvcmUgZW1pdHRpbmcgdGhlCisgICAgICAgIHJlY29yZCB0byBpdC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYucmVvcGVuSWZOZWVkZWQoKQogICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLmVtaXQoc2VsZiwgcmVjb3JkKQogCiAKQEAgLTEyMjksMTcgKzEyNDEsMjUgQEAKICAgICBmbHVzaGluZyB0aGVtIHRvIGEgdGFyZ2V0IGhhbmRsZXIuIEZsdXNoaW5nIG9jY3VycyB3aGVuZXZlciB0aGUgYnVmZmVyCiAgICAgaXMgZnVsbCwgb3Igd2hlbiBhbiBldmVudCBvZiBhIGNlcnRhaW4gc2V2ZXJpdHkgb3IgZ3JlYXRlciBpcyBzZWVuLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYXBhY2l0eSwgZmx1c2hMZXZlbD1sb2dnaW5nLkVSUk9SLCB0YXJnZXQ9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhcGFjaXR5LCBmbHVzaExldmVsPWxvZ2dpbmcuRVJST1IsIHRhcmdldD1Ob25lLAorICAgICAgICAgICAgICAgICBmbHVzaE9uQ2xvc2U9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBJbml0aWFsaXplIHRoZSBoYW5kbGVyIHdpdGggdGhlIGJ1ZmZlciBzaXplLCB0aGUgbGV2ZWwgYXQgd2hpY2gKICAgICAgICAgZmx1c2hpbmcgc2hvdWxkIG9jY3VyIGFuZCBhbiBvcHRpb25hbCB0YXJnZXQuCiAKICAgICAgICAgTm90ZSB0aGF0IHdpdGhvdXQgYSB0YXJnZXQgYmVpbmcgc2V0IGVpdGhlciBoZXJlIG9yIHZpYSBzZXRUYXJnZXQoKSwKICAgICAgICAgYSBNZW1vcnlIYW5kbGVyIGlzIG5vIHVzZSB0byBhbnlvbmUhCisKKyAgICAgICAgVGhlIGBgZmx1c2hPbkNsb3NlYGAgYXJndW1lbnQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKyAgICAgICAgcmVhc29ucyAtIHRoZSBvbGQgYmVoYXZpb3VyIGlzIHRoYXQgd2hlbiB0aGUgaGFuZGxlciBpcyBjbG9zZWQsIHRoZQorICAgICAgICBidWZmZXIgaXMgZmx1c2hlZCwgZXZlbiBpZiB0aGUgZmx1c2ggbGV2ZWwgaGFzbid0IGJlZW4gZXhjZWVkZWQgbm9yIHRoZQorICAgICAgICBjYXBhY2l0eSBleGNlZWRlZC4gVG8gcHJldmVudCB0aGlzLCBzZXQgYGBmbHVzaE9uQ2xvc2VgYCB0byBgYEZhbHNlYGAuCiAgICAgICAgICIiIgogICAgICAgICBCdWZmZXJpbmdIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNhcGFjaXR5KQogICAgICAgICBzZWxmLmZsdXNoTGV2ZWwgPSBmbHVzaExldmVsCiAgICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0CisgICAgICAgICMgU2VlIElzc3VlICMyNjU1OSBmb3Igd2h5IHRoaXMgaGFzIGJlZW4gYWRkZWQKKyAgICAgICAgc2VsZi5mbHVzaE9uQ2xvc2UgPSBmbHVzaE9uQ2xvc2UKIAogICAgIGRlZiBzaG91bGRGbHVzaChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTEyNzMsMTAgKzEyOTMsMTIgQEAKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEZsdXNoLCBzZXQgdGhlIHRhcmdldCB0byBOb25lIGFuZCBsb3NlIHRoZSBidWZmZXIuCisgICAgICAgIEZsdXNoLCBpZiBhcHByb3ByaWF0ZWx5IGNvbmZpZ3VyZWQsIHNldCB0aGUgdGFyZ2V0IHRvIE5vbmUgYW5kIGxvc2UgdGhlCisgICAgICAgIGJ1ZmZlci4KICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuZmx1c2goKQorICAgICAgICAgICAgaWYgc2VsZi5mbHVzaE9uQ2xvc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLmFjcXVpcmUoKQogICAgICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL2x6bWEucHkgYi9MaWIvbHptYS5weQppbmRleCA3ZGZmMWMzLi4wODE3Yjg3IDEwMDY0NAotLS0gYS9MaWIvbHptYS5weQorKysgYi9MaWIvbHptYS5weQpAQCAtMjMsNiArMjMsNyBAQAogCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbworaW1wb3J0IG9zCiBmcm9tIF9sem1hIGltcG9ydCAqCiBmcm9tIF9sem1hIGltcG9ydCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzCiBpbXBvcnQgX2NvbXByZXNzaW9uCkBAIC00OSw5ICs1MCwxMCBAQAogICAgICAgICAgICAgICAgICBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgogICAgICAgICAiIiJPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgogCi0gICAgICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IKLSAgICAgICAgYnl0ZXMgb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbgotICAgICAgICBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIsCisgICAgICAgIGJ5dGVzLCBvciBQYXRoTGlrZSBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCisgICAgICAgIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvcgorICAgICAgICB3cml0ZSB0by4KIAogICAgICAgICBtb2RlIGNhbiBiZSAiciIgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAidyIgZm9yIChvdmVyKXdyaXRpbmcsCiAgICAgICAgICJ4IiBmb3IgY3JlYXRpbmcgZXhjbHVzaXZlbHksIG9yICJhIiBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4KQEAgLTExMiw3ICsxMTQsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCiAKLSAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMsIG9zLlBhdGhMaWtlKSk6CiAgICAgICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6CiAgICAgICAgICAgICAgICAgbW9kZSArPSAiYiIKICAgICAgICAgICAgIHNlbGYuX2ZwID0gYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgbW9kZSkKQEAgLTEyMiw3ICsxMjQsNyBAQAogICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQogICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciwgYnl0ZXMsIGZpbGUgb3IgUGF0aExpa2Ugb2JqZWN0IikKIAogICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CiAgICAgICAgICAgICByYXcgPSBfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcihzZWxmLl9mcCwgTFpNQURlY29tcHJlc3NvciwKQEAgLTI2Myw5ICsyNjUsOSBAQAogICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgogCi0gICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvciBieXRlcwotICAgIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4KLSAgICBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciwgYnl0ZXMsCisgICAgb3IgUGF0aExpa2Ugb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0CisgICAgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KIAogICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIgKGRlZmF1bHQpLCAidyIsICJ3YiIsICJ4IiwgInhiIiwKICAgICAiYSIsIG9yICJhYiIgZm9yIGJpbmFyeSBtb2RlLCBvciAicnQiLCAid3QiLCAieHQiLCBvciAiYXQiIGZvciB0ZXh0CmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IDAyNzBlMjUuLjBlMjM5ODcgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0yMyw5ICsyMywxMCBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGZjbnRsID0gTm9uZQogCi1fX2FsbF9fID0gWyAnTWFpbGJveCcsICdNYWlsZGlyJywgJ21ib3gnLCAnTUgnLCAnQmFieWwnLCAnTU1ERicsCi0gICAgICAgICAgICAnTWVzc2FnZScsICdNYWlsZGlyTWVzc2FnZScsICdtYm94TWVzc2FnZScsICdNSE1lc3NhZ2UnLAotICAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZSddCitfX2FsbF9fID0gWydNYWlsYm94JywgJ01haWxkaXInLCAnbWJveCcsICdNSCcsICdCYWJ5bCcsICdNTURGJywKKyAgICAgICAgICAgJ01lc3NhZ2UnLCAnTWFpbGRpck1lc3NhZ2UnLCAnbWJveE1lc3NhZ2UnLCAnTUhNZXNzYWdlJywKKyAgICAgICAgICAgJ0JhYnlsTWVzc2FnZScsICdNTURGTWVzc2FnZScsICdFcnJvcicsICdOb1N1Y2hNYWlsYm94RXJyb3InLAorICAgICAgICAgICAnTm90RW1wdHlFcnJvcicsICdFeHRlcm5hbENsYXNoRXJyb3InLCAnRm9ybWF0RXJyb3InXQogCiBsaW5lc2VwID0gb3MubGluZXNlcC5lbmNvZGUoJ2FzY2lpJykKIApkaWZmIC0tZ2l0IGEvTGliL21pbWV0eXBlcy5weSBiL0xpYi9taW1ldHlwZXMucHkKaW5kZXggMGJlNzZhZC4uOWE4ODY4MCAxMDA2NDQKLS0tIGEvTGliL21pbWV0eXBlcy5weQorKysgYi9MaWIvbWltZXR5cGVzLnB5CkBAIC0zMyw4ICszMywxMCBAQAogICAgIF93aW5yZWcgPSBOb25lCiAKIF9fYWxsX18gPSBbCi0gICAgImd1ZXNzX3R5cGUiLCJndWVzc19leHRlbnNpb24iLCJndWVzc19hbGxfZXh0ZW5zaW9ucyIsCi0gICAgImFkZF90eXBlIiwicmVhZF9taW1lX3R5cGVzIiwiaW5pdCIKKyAgICAia25vd25maWxlcyIsICJpbml0ZWQiLCAiTWltZVR5cGVzIiwKKyAgICAiZ3Vlc3NfdHlwZSIsICJndWVzc19hbGxfZXh0ZW5zaW9ucyIsICJndWVzc19leHRlbnNpb24iLAorICAgICJhZGRfdHlwZSIsICJpbml0IiwgInJlYWRfbWltZV90eXBlcyIsCisgICAgInN1ZmZpeF9tYXAiLCAiZW5jb2RpbmdzX21hcCIsICJ0eXBlc19tYXAiLCAiY29tbW9uX3R5cGVzIgogXQogCiBrbm93bmZpbGVzID0gWwpkaWZmIC0tZ2l0IGEvTGliL21vZHVsZWZpbmRlci5weSBiL0xpYi9tb2R1bGVmaW5kZXIucHkKaW5kZXggODEwMzUwMi4uZTIyMDMxNSAxMDA2NDQKLS0tIGEvTGliL21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvbW9kdWxlZmluZGVyLnB5CkBAIC0xMCw3ICsxMCw3IEBACiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgd2FybmluZ3MKIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgaW1wb3J0IGltcAogCiBMT0FEX0NPTlNUID0gZGlzLm9wbWFwWydMT0FEX0NPTlNUJ10KQEAgLTMzNiw4ICszMzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUgPSBuYW1lICsgIi4iICsgc3ViCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9hZGRfYmFkbW9kdWxlKGZ1bGxuYW1lLCBjYWxsZXIpCiAKLSAgICBkZWYgc2Nhbl9vcGNvZGVzXzI1KHNlbGYsIGNvLAotICAgICAgICAgICAgICAgICAgICAgdW5wYWNrID0gc3RydWN0LnVucGFjayk6CisgICAgZGVmIHNjYW5fb3Bjb2RlcyhzZWxmLCBjbyk6CiAgICAgICAgICMgU2NhbiB0aGUgY29kZSwgYW5kIHlpZWxkICdpbnRlcmVzdGluZycgb3Bjb2RlIGNvbWJpbmF0aW9ucwogICAgICAgICBjb2RlID0gY28uY29fY29kZQogICAgICAgICBuYW1lcyA9IGNvLmNvX25hbWVzCkBAIC0zNjAsNyArMzU5LDcgQEAKIAogICAgIGRlZiBzY2FuX2NvZGUoc2VsZiwgY28sIG0pOgogICAgICAgICBjb2RlID0gY28uY29fY29kZQotICAgICAgICBzY2FubmVyID0gc2VsZi5zY2FuX29wY29kZXNfMjUKKyAgICAgICAgc2Nhbm5lciA9IHNlbGYuc2Nhbl9vcGNvZGVzCiAgICAgICAgIGZvciB3aGF0LCBhcmdzIGluIHNjYW5uZXIoY28pOgogICAgICAgICAgICAgaWYgd2hhdCA9PSAic3RvcmUiOgogICAgICAgICAgICAgICAgIG5hbWUsID0gYXJncwpkaWZmIC0tZ2l0IGEvTGliL21zaWxpYi9fX2luaXRfXy5weSBiL0xpYi9tc2lsaWIvX19pbml0X18ucHkKaW5kZXggNmQwYTI4Zi4uZjAzNzBjMiAxMDA2NDQKLS0tIGEvTGliL21zaWxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvbXNpbGliL19faW5pdF9fLnB5CkBAIC0xLDcgKzEsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDUgTWFydGluIHYuIEzDtndpcwogIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiBmcm9tIF9tc2kgaW1wb3J0ICoKLWltcG9ydCBnbG9iCitpbXBvcnQgZm5tYXRjaAogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKQEAgLTI4OSw3ICsyODksNyBAQAogICAgIGRlZiBtYWtlX3Nob3J0KHNlbGYsIGZpbGUpOgogICAgICAgICBvbGRmaWxlID0gZmlsZQogICAgICAgICBmaWxlID0gZmlsZS5yZXBsYWNlKCcrJywgJ18nKQotICAgICAgICBmaWxlID0gJycuam9pbihjIGZvciBjIGluIGZpbGUgaWYgbm90IGMgaW4gJyAiL1xbXTo7PSwnKQorICAgICAgICBmaWxlID0gJycuam9pbihjIGZvciBjIGluIGZpbGUgaWYgbm90IGMgaW4gcicgIi9cW106Oz0sJykKICAgICAgICAgcGFydHMgPSBmaWxlLnNwbGl0KCIuIikKICAgICAgICAgaWYgbGVuKHBhcnRzKSA+IDE6CiAgICAgICAgICAgICBwcmVmaXggPSAiIi5qb2luKHBhcnRzWzotMV0pLnVwcGVyKCkKQEAgLTM3OSw3ICszNzksMTMgQEAKICAgICBkZWYgZ2xvYihzZWxmLCBwYXR0ZXJuLCBleGNsdWRlID0gTm9uZSk6CiAgICAgICAgICIiIkFkZCBhIGxpc3Qgb2YgZmlsZXMgdG8gdGhlIGN1cnJlbnQgY29tcG9uZW50IGFzIHNwZWNpZmllZCBpbiB0aGUKICAgICAgICAgZ2xvYiBwYXR0ZXJuLiBJbmRpdmlkdWFsIGZpbGVzIGNhbiBiZSBleGNsdWRlZCBpbiB0aGUgZXhjbHVkZSBsaXN0LiIiIgotICAgICAgICBmaWxlcyA9IGdsb2IuZ2xvYjEoc2VsZi5hYnNvbHV0ZSwgcGF0dGVybikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZXMgPSBvcy5saXN0ZGlyKHNlbGYuYWJzb2x1dGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIGlmIHBhdHRlcm5bOjFdICE9ICcuJzoKKyAgICAgICAgICAgIGZpbGVzID0gKGYgZm9yIGYgaW4gZmlsZXMgaWYgZlswXSAhPSAnLicpCisgICAgICAgIGZpbGVzID0gZm5tYXRjaC5maWx0ZXIoZmlsZXMsIHBhdHRlcm4pCiAgICAgICAgIGZvciBmIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgZXhjbHVkZSBhbmQgZiBpbiBleGNsdWRlOiBjb250aW51ZQogICAgICAgICAgICAgc2VsZi5hZGRfZmlsZShmKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CmluZGV4IGQwYTFiODYuLmQ0OWU4ZjAgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKQEAgLTIwLDExICsyMCwxMSBAQAogCiBpbXBvcnQgX211bHRpcHJvY2Vzc2luZwogCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIGZyb20gLiBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgQnVmZmVyVG9vU2hvcnQKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgorX0ZvcmtpbmdQaWNrbGVyID0gcmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCiAKIHRyeToKICAgICBpbXBvcnQgX3dpbmFwaQpAQCAtMjAzLDcgKzIwMyw3IEBACiAgICAgICAgICIiIlNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgc2VsZi5fY2hlY2tfd3JpdGFibGUoKQotICAgICAgICBzZWxmLl9zZW5kX2J5dGVzKEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikpCisgICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikpCiAKICAgICBkZWYgcmVjdl9ieXRlcyhzZWxmLCBtYXhsZW5ndGg9Tm9uZSk6CiAgICAgICAgICIiIgpAQCAtMjQ4LDcgKzI0OCw3IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCiAgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKICAgICAgICAgYnVmID0gc2VsZi5fcmVjdl9ieXRlcygpCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMoYnVmLmdldGJ1ZmZlcigpKQogCiAgICAgZGVmIHBvbGwoc2VsZiwgdGltZW91dD0wLjApOgogICAgICAgICAiIiJXaGV0aGVyIHRoZXJlIGlzIGFueSBpbnB1dCBhdmFpbGFibGUgdG8gYmUgcmVhZCIiIgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5CmluZGV4IDYzODQ5ZjkuLjA5NDU1ZTIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkKQEAgLTMsNiArMyw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gLiBpbXBvcnQgcHJvY2VzcworZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIAogX19hbGxfXyA9IFtdICAgICAgICAgICAgIyB0aGluZ3MgYXJlIGNvcGllZCBmcm9tIGhlcmUgdG8gX19pbml0X18ucHkKIApAQCAtMTk4LDYgKzE5OSwxNiBAQAogICAgIGRlZiBzZXRfc3RhcnRfbWV0aG9kKHNlbGYsIG1ldGhvZD1Ob25lKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBzdGFydCBtZXRob2Qgb2YgY29uY3JldGUgY29udGV4dCcpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmVkdWNlcihzZWxmKToKKyAgICAgICAgJycnQ29udHJvbHMgaG93IG9iamVjdHMgd2lsbCBiZSByZWR1Y2VkIHRvIGEgZm9ybSB0aGF0IGNhbiBiZQorICAgICAgICBzaGFyZWQgd2l0aCBvdGhlciBwcm9jZXNzZXMuJycnCisgICAgICAgIHJldHVybiBnbG9iYWxzKCkuZ2V0KCdyZWR1Y3Rpb24nKQorCisgICAgQHJlZHVjZXIuc2V0dGVyCisgICAgZGVmIHJlZHVjZXIoc2VsZiwgcmVkdWN0aW9uKToKKyAgICAgICAgZ2xvYmFscygpWydyZWR1Y3Rpb24nXSA9IHJlZHVjdGlvbgorCiAgICAgZGVmIF9jaGVja19hdmFpbGFibGUoc2VsZik6CiAgICAgICAgIHBhc3MKIApAQCAtMjQ1LDcgKzI1Niw2IEBACiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICAgICAgcmV0dXJuIFsnc3Bhd24nXQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KICAgICAgICAgICAgIGlmIHJlZHVjdGlvbi5IQVZFX1NFTkRfSEFORExFOgogICAgICAgICAgICAgICAgIHJldHVybiBbJ2ZvcmsnLCAnc3Bhd24nLCAnZm9ya3NlcnZlciddCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjkyLDcgKzMwMiw2IEBACiAgICAgICAgIF9uYW1lID0gJ2ZvcmtzZXJ2ZXInCiAgICAgICAgIFByb2Nlc3MgPSBGb3JrU2VydmVyUHJvY2VzcwogICAgICAgICBkZWYgX2NoZWNrX2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgICAgIGZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiAgICAgICAgICAgICBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZm9ya3NlcnZlciBzdGFydCBtZXRob2Qgbm90IGF2YWlsYWJsZScpCiAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQppbmRleCBhZDAxZWRlLi5mMmMxNzllIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CkBAIC05LDcgKzksNyBAQAogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCBzZW1hcGhvcmVfdHJhY2tlcgogZnJvbSAuIGltcG9ydCBzcGF3bgogZnJvbSAuIGltcG9ydCB1dGlsCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKaW5kZXggNDRkOTYzOC4uNDQzMzIxNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQpAQCAtMTQsOCArMTQsNyBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGhyZWFkaW5nCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgYXNzZXJ0X3NwYXduaW5nCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnQnVmZmVyV3JhcHBlciddCkBAIC00OCw3ICs0Nyw3IEBACiAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgotICAgICAgICAgICAgY29udGV4dC5hc3NlcnRfc3Bhd25pbmcoc2VsZikKKyAgICAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0YXRlCiAKICAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQppbmRleCBiMTc1NDcwLi5iOWNlODRiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKQEAgLTIzLDEwICsyMyw5IEBACiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YwogCiBmcm9tIC4gaW1wb3J0IGNvbm5lY3Rpb24KLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBnZXRfc3Bhd25pbmdfcG9wZW4KIGZyb20gLiBpbXBvcnQgcG9vbAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IGdldF9jb250ZXh0CiAKQEAgLTE0Miw3ICsxNDEsOCBAQAogCiAgICAgICAgIHNlbGYuaWRfdG9fb2JqID0geycwJzogKE5vbmUsICgpKX0KICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudCA9IHt9Ci0gICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuUkxvY2soKQorICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iaiA9IHt9CisgICAgICAgIHNlbGYubXV0ZXggPSB0aHJlYWRpbmcuTG9jaygpCiAKICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmKToKICAgICAgICAgJycnCkBAIC0yMjcsNyArMjI3LDE0IEBACiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IG9iaiA9IE5vbmUKICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gcmVjdigpCiAgICAgICAgICAgICAgICAgaWRlbnQsIG1ldGhvZG5hbWUsIGFyZ3MsIGt3ZHMgPSByZXF1ZXN0Ci0gICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBpZF90b19vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IGlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMga2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqW2lkZW50XQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgc2Vjb25kX2tlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Uga2UKIAogICAgICAgICAgICAgICAgIGlmIG1ldGhvZG5hbWUgbm90IGluIGV4cG9zZWQ6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKApAQCAtMzA4LDcgKzMxNSw3IEBACiAgICAgICAgICcnJwogICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CiAgICAgICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19vYmoua2V5cygpKQorICAgICAgICAgICAga2V5cyA9IGxpc3Qoc2VsZi5pZF90b19yZWZjb3VudC5rZXlzKCkpCiAgICAgICAgICAgICBrZXlzLnNvcnQoKQogICAgICAgICAgICAgZm9yIGlkZW50IGluIGtleXM6CiAgICAgICAgICAgICAgICAgaWYgaWRlbnQgIT0gJzAnOgpAQCAtMzIxLDcgKzMyOCw4IEBACiAgICAgICAgICcnJwogICAgICAgICBOdW1iZXIgb2Ygc2hhcmVkIG9iamVjdHMKICAgICAgICAgJycnCi0gICAgICAgIHJldHVybiBsZW4oc2VsZi5pZF90b19vYmopIC0gMSAgICAgICMgZG9uJ3QgY291bnQgaWRlbnQ9JzAnCisgICAgICAgICMgRG9lc24ndCB1c2UgKGxlbihzZWxmLmlkX3RvX29iaikgLSAxKSBhcyB3ZSBzaG91bGRuJ3QgY291bnQgaWRlbnQ9JzAnCisgICAgICAgIHJldHVybiBsZW4oc2VsZi5pZF90b19yZWZjb3VudCkKIAogICAgIGRlZiBzaHV0ZG93bihzZWxmLCBjKToKICAgICAgICAgJycnCkBAIC0zNjMsMTMgKzM3MSw5IEBACiAgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSAob2JqLCBzZXQoZXhwb3NlZCksIG1ldGhvZF90b190eXBlaWQpCiAgICAgICAgICAgICBpZiBpZGVudCBub3QgaW4gc2VsZi5pZF90b19yZWZjb3VudDoKICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9IDAKLSAgICAgICAgICAgICMgaW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgaW1tZWRpYXRlbHksIHRvIGF2b2lkCi0gICAgICAgICAgICAjIHRoaXMgb2JqZWN0IGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkIGJlZm9yZSBhIFByb3h5Ci0gICAgICAgICAgICAjIG9iamVjdCBmb3IgaXQgY2FuIGJlIGNyZWF0ZWQuICBUaGUgY2FsbGVyIG9mIGNyZWF0ZSgpCi0gICAgICAgICAgICAjIGlzIHJlc3BvbnNpYmxlIGZvciBkb2luZyBhIGRlY3JlZiBvbmNlIHRoZSBQcm94eSBvYmplY3QKLSAgICAgICAgICAgICMgaGFzIGJlZW4gY3JlYXRlZC4KLSAgICAgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQotICAgICAgICAgICAgcmV0dXJuIGlkZW50LCB0dXBsZShleHBvc2VkKQorCisgICAgICAgIHNlbGYuaW5jcmVmKGMsIGlkZW50KQorICAgICAgICByZXR1cm4gaWRlbnQsIHR1cGxlKGV4cG9zZWQpCiAKICAgICBkZWYgZ2V0X21ldGhvZHMoc2VsZiwgYywgdG9rZW4pOgogICAgICAgICAnJycKQEAgLTM4NywxNSArMzkxLDQ1IEBACiAKICAgICBkZWYgaW5jcmVmKHNlbGYsIGMsIGlkZW50KToKICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgotICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gKz0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdICs9IDEKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBrZToKKyAgICAgICAgICAgICAgICAjIElmIG5vIGV4dGVybmFsIHJlZmVyZW5jZXMgZXhpc3QgYnV0IGFuIGludGVybmFsICh0byB0aGUKKyAgICAgICAgICAgICAgICAjIG1hbmFnZXIpIHN0aWxsIGRvZXMgYW5kIGEgbmV3IGV4dGVybmFsIHJlZmVyZW5jZSBpcyBjcmVhdGVkCisgICAgICAgICAgICAgICAgIyBmcm9tIGl0LCByZXN0b3JlIHRoZSBtYW5hZ2VyJ3MgdHJhY2tpbmcgb2YgaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAjIHByZXZpb3VzbHkgc3Rhc2hlZCBpbnRlcm5hbCByZWYuCisgICAgICAgICAgICAgICAgaWYgaWRlbnQgaW4gc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmo6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSBcCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBzZWxmLmlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnU2VydmVyIHJlLWVuYWJsZWQgdHJhY2tpbmcgJiBJTkNSRUYgJXInLCBpZGVudCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBrZQogCiAgICAgZGVmIGRlY3JlZihzZWxmLCBjLCBpZGVudCk6CisgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50IGFuZCBcCisgICAgICAgICAgICBpZGVudCBpbiBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ1NlcnZlciBERUNSRUYgc2tpcHBpbmcgJXInLCBpZGVudCkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIGFzc2VydCBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA+PSAxCiAgICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSA9PSAwOgotICAgICAgICAgICAgICAgIGRlbCBzZWxmLmlkX3RvX29ialtpZGVudF0sIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCi0gICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdCisKKyAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQ6CisgICAgICAgICAgICAjIFR3by1zdGVwIHByb2Nlc3MgaW4gY2FzZSB0aGUgb2JqZWN0IHR1cm5zIG91dCB0byBjb250YWluIG90aGVyCisgICAgICAgICAgICAjIHByb3h5IG9iamVjdHMgKGUuZy4gYSBtYW5hZ2VkIGxpc3Qgb2YgbWFuYWdlZCBsaXN0cykuCisgICAgICAgICAgICAjIE90aGVyd2lzZSwgZGVsZXRpbmcgc2VsZi5pZF90b19vYmpbaWRlbnRdIHdvdWxkIHRyaWdnZXIgdGhlCisgICAgICAgICAgICAjIGRlbGV0aW5nIG9mIHRoZSBzdG9yZWQgdmFsdWUgKGFub3RoZXIgbWFuYWdlZCBvYmplY3QpIHdoaWNoIHdvdWxkCisgICAgICAgICAgICAjIGluIHR1cm4gYXR0ZW1wdCB0byBhY3F1aXJlIHRoZSBtdXRleCB0aGF0IGlzIGFscmVhZHkgaGVsZCBoZXJlLgorICAgICAgICAgICAgc2VsZi5pZF90b19vYmpbaWRlbnRdID0gKE5vbmUsICgpLCBOb25lKSAgIyB0aHJlYWQtc2FmZQorICAgICAgICAgICAgdXRpbC5kZWJ1ZygnZGlzcG9zaW5nIG9mIG9iaiB3aXRoIGlkICVyJywgaWRlbnQpCisgICAgICAgICAgICB3aXRoIHNlbGYubXV0ZXg6CisgICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fb2JqW2lkZW50XQorCiAKICMKICMgQ2xhc3MgdG8gcmVwcmVzZW50IHN0YXRlIG9mIGEgbWFuYWdlcgpAQCAtNjU4LDcgKzY5Miw3IEBACiAgICAgX211dGV4ID0gdXRpbC5Gb3JrQXdhcmVUaHJlYWRMb2NrKCkKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b2tlbiwgc2VyaWFsaXplciwgbWFuYWdlcj1Ob25lLAotICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUpOgorICAgICAgICAgICAgICAgICBhdXRoa2V5PU5vbmUsIGV4cG9zZWQ9Tm9uZSwgaW5jcmVmPVRydWUsIG1hbmFnZXJfb3duZWQ9RmFsc2UpOgogICAgICAgICB3aXRoIEJhc2VQcm94eS5fbXV0ZXg6CiAgICAgICAgICAgICB0bHNfaWRzZXQgPSBCYXNlUHJveHkuX2FkZHJlc3NfdG9fbG9jYWwuZ2V0KHRva2VuLmFkZHJlc3MsIE5vbmUpCiAgICAgICAgICAgICBpZiB0bHNfaWRzZXQgaXMgTm9uZToKQEAgLTY4MCw2ICs3MTQsMTIgQEAKICAgICAgICAgc2VsZi5fc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIKICAgICAgICAgc2VsZi5fQ2xpZW50ID0gbGlzdGVuZXJfY2xpZW50W3NlcmlhbGl6ZXJdWzFdCiAKKyAgICAgICAgIyBTaG91bGQgYmUgc2V0IHRvIFRydWUgb25seSB3aGVuIGEgcHJveHkgb2JqZWN0IGlzIGJlaW5nIGNyZWF0ZWQKKyAgICAgICAgIyBvbiB0aGUgbWFuYWdlciBzZXJ2ZXI7IHByaW1hcnkgdXNlIGNhc2U6IG5lc3RlZCBwcm94eSBvYmplY3RzLgorICAgICAgICAjIFJlYnVpbGRQcm94eSBkZXRlY3RzIHdoZW4gYSBwcm94eSBpcyBiZWluZyBjcmVhdGVkIG9uIHRoZSBtYW5hZ2VyCisgICAgICAgICMgYW5kIHNldHMgdGhpcyB2YWx1ZSBhcHByb3ByaWF0ZWx5LgorICAgICAgICBzZWxmLl9vd25lZF9ieV9tYW5hZ2VyID0gbWFuYWdlcl9vd25lZAorCiAgICAgICAgIGlmIGF1dGhrZXkgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9hdXRoa2V5ID0gcHJvY2Vzcy5BdXRoZW50aWNhdGlvblN0cmluZyhhdXRoa2V5KQogICAgICAgICBlbGlmIHNlbGYuX21hbmFnZXIgaXMgbm90IE5vbmU6CkBAIC03MzgsNiArNzc4LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCcjR0VUVkFMVUUnKQogCiAgICAgZGVmIF9pbmNyZWYoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX293bmVkX2J5X21hbmFnZXI6CisgICAgICAgICAgICB1dGlsLmRlYnVnKCdvd25lZF9ieV9tYW5hZ2VyIHNraXBwZWQgSU5DUkVGIG9mICVyJywgc2VsZi5fdG9rZW4uaWQpCisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICBjb25uID0gc2VsZi5fQ2xpZW50KHNlbGYuX3Rva2VuLmFkZHJlc3MsIGF1dGhrZXk9c2VsZi5fYXV0aGtleSkKICAgICAgICAgZGlzcGF0Y2goY29ubiwgTm9uZSwgJ2luY3JlZicsIChzZWxmLl9pZCwpKQogICAgICAgICB1dGlsLmRlYnVnKCdJTkNSRUYgJXInLCBzZWxmLl90b2tlbi5pZCkKQEAgLTc4OCw3ICs4MzIsNyBAQAogCiAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CiAgICAgICAgIGt3ZHMgPSB7fQotICAgICAgICBpZiBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpIGlzIG5vdCBOb25lOgorICAgICAgICBpZiBnZXRfc3Bhd25pbmdfcG9wZW4oKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGt3ZHNbJ2F1dGhrZXknXSA9IHNlbGYuX2F1dGhrZXkKIAogICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICdfaXNhdXRvJywgRmFsc2UpOgpAQCAtODIyLDE5ICs4NjYsMTkgQEAKIGRlZiBSZWJ1aWxkUHJveHkoZnVuYywgdG9rZW4sIHNlcmlhbGl6ZXIsIGt3ZHMpOgogICAgICcnJwogICAgIEZ1bmN0aW9uIHVzZWQgZm9yIHVucGlja2xpbmcgcHJveHkgb2JqZWN0cy4KLQotICAgIElmIHBvc3NpYmxlIHRoZSBzaGFyZWQgb2JqZWN0IGlzIHJldHVybmVkLCBvciBvdGhlcndpc2UgYSBwcm94eSBmb3IgaXQuCiAgICAgJycnCiAgICAgc2VydmVyID0gZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX21hbmFnZXJfc2VydmVyJywgTm9uZSkKLQogICAgIGlmIHNlcnZlciBhbmQgc2VydmVyLmFkZHJlc3MgPT0gdG9rZW4uYWRkcmVzczoKLSAgICAgICAgcmV0dXJuIHNlcnZlci5pZF90b19vYmpbdG9rZW4uaWRdWzBdCi0gICAgZWxzZToKLSAgICAgICAgaW5jcmVmID0gKAotICAgICAgICAgICAga3dkcy5wb3AoJ2luY3JlZicsIFRydWUpIGFuZAotICAgICAgICAgICAgbm90IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpCi0gICAgICAgICAgICApCi0gICAgICAgIHJldHVybiBmdW5jKHRva2VuLCBzZXJpYWxpemVyLCBpbmNyZWY9aW5jcmVmLCAqKmt3ZHMpCisgICAgICAgIHV0aWwuZGVidWcoJ1JlYnVpbGQgYSBwcm94eSBvd25lZCBieSBtYW5hZ2VyLCB0b2tlbj0lcicsIHRva2VuKQorICAgICAgICBrd2RzWydtYW5hZ2VyX293bmVkJ10gPSBUcnVlCisgICAgICAgIGlmIHRva2VuLmlkIG5vdCBpbiBzZXJ2ZXIuaWRfdG9fbG9jYWxfcHJveHlfb2JqOgorICAgICAgICAgICAgc2VydmVyLmlkX3RvX2xvY2FsX3Byb3h5X29ialt0b2tlbi5pZF0gPSBcCisgICAgICAgICAgICAgICAgc2VydmVyLmlkX3RvX29ialt0b2tlbi5pZF0KKyAgICBpbmNyZWYgPSAoCisgICAgICAgIGt3ZHMucG9wKCdpbmNyZWYnLCBUcnVlKSBhbmQKKyAgICAgICAgbm90IGdldGF0dHIocHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKSwgJ19pbmhlcml0aW5nJywgRmFsc2UpCisgICAgICAgICkKKyAgICByZXR1cm4gZnVuYyh0b2tlbiwgc2VyaWFsaXplciwgaW5jcmVmPWluY3JlZiwgKiprd2RzKQogCiAjCiAjIEZ1bmN0aW9ucyB0byBjcmVhdGUgcHJveGllcyBhbmQgcHJveHkgdHlwZXMKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCA2ZDI1NDY5Li5mZmRmNDI2IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC02MzgsMjIgKzYzOCwyNiBAQAogICAgICAgICAgICAgc2VsZi5fbnVtYmVyX2xlZnQgPSBsZW5ndGgvL2NodW5rc2l6ZSArIGJvb2wobGVuZ3RoICUgY2h1bmtzaXplKQogCiAgICAgZGVmIF9zZXQoc2VsZiwgaSwgc3VjY2Vzc19yZXN1bHQpOgorICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgIHN1Y2Nlc3MsIHJlc3VsdCA9IHN1Y2Nlc3NfcmVzdWx0Ci0gICAgICAgIGlmIHN1Y2Nlc3M6CisgICAgICAgIGlmIHN1Y2Nlc3MgYW5kIHNlbGYuX3N1Y2Nlc3M6CiAgICAgICAgICAgICBzZWxmLl92YWx1ZVtpKnNlbGYuX2NodW5rc2l6ZTooaSsxKSpzZWxmLl9jaHVua3NpemVdID0gcmVzdWx0Ci0gICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCAtPSAxCiAgICAgICAgICAgICBpZiBzZWxmLl9udW1iZXJfbGVmdCA9PSAwOgogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQogICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zdWNjZXNzID0gRmFsc2UKLSAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0Ci0gICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKLSAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKLSAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCi0gICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQorICAgICAgICAgICAgaWYgbm90IHN1Y2Nlc3MgYW5kIHNlbGYuX3N1Y2Nlc3M6CisgICAgICAgICAgICAgICAgIyBvbmx5IHN0b3JlIGZpcnN0IGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gcmVzdWx0CisgICAgICAgICAgICBpZiBzZWxmLl9udW1iZXJfbGVmdCA9PSAwOgorICAgICAgICAgICAgICAgICMgb25seSBjb25zaWRlciB0aGUgcmVzdWx0IHJlYWR5IG9uY2UgYWxsIGpvYnMgYXJlIGRvbmUKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9lcnJvcl9jYWxsYmFjazoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJyb3JfY2FsbGJhY2soc2VsZi5fdmFsdWUpCisgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KKyAgICAgICAgICAgICAgICBzZWxmLl9ldmVudC5zZXQoKQogCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuaW1hcCgpYApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5CmluZGV4IGU3OTIxOTQuLjIyMmRiMmQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkKQEAgLTEsMTAgKzEsOSBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIAotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgc2V0X3NwYXduaW5nX3BvcGVuCiBpZiBub3QgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ05vIHN1cHBvcnQgZm9yIHNlbmRpbmcgZmRzIGJldHdlZW4gcHJvY2Vzc2VzJykKLWZyb20gLiBpbXBvcnQgY29udGV4dAogZnJvbSAuIGltcG9ydCBmb3Jrc2VydmVyCiBmcm9tIC4gaW1wb3J0IHBvcGVuX2ZvcmsKIGZyb20gLiBpbXBvcnQgc3Bhd24KQEAgLTQyLDEyICs0MSwxMiBAQAogICAgIGRlZiBfbGF1bmNoKHNlbGYsIHByb2Nlc3Nfb2JqKToKICAgICAgICAgcHJlcF9kYXRhID0gc3Bhd24uZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCiAgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCBidWYpCiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgYnVmKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKKyAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQogCiAgICAgICAgIHNlbGYuc2VudGluZWwsIHcgPSBmb3Jrc2VydmVyLmNvbm5lY3RfdG9fbmV3X3Byb2Nlc3Moc2VsZi5fZmRzKQogICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIG9zLmNsb3NlLCAoc2VsZi5zZW50aW5lbCwpKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkKaW5kZXggNmIwYThkNi4uOThmOGYwYSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5CkBAIC0xLDkgKzEsOCBAQAogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIAotZnJvbSAuIGltcG9ydCBjb250ZXh0Citmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIHNldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBwb3Blbl9mb3JrCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCBzcGF3bgogZnJvbSAuIGltcG9ydCB1dGlsCiAKQEAgLTQyLDEyICs0MSwxMiBAQAogICAgICAgICBzZWxmLl9mZHMuYXBwZW5kKHRyYWNrZXJfZmQpCiAgICAgICAgIHByZXBfZGF0YSA9IHNwYXduLmdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQogICAgICAgICBmcCA9IGlvLkJ5dGVzSU8oKQotICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCBmcCkKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByb2Nlc3Nfb2JqLCBmcCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKIAogICAgICAgICBwYXJlbnRfciA9IGNoaWxkX3cgPSBjaGlsZF9yID0gcGFyZW50X3cgPSBOb25lCiAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5CmluZGV4IDNiNTMwNjguLjZmZDU4OGYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weQpAQCAtNCw5ICs0LDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCBfd2luYXBpCiAKLWZyb20gLiBpbXBvcnQgY29udGV4dAorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBnZXRfc3Bhd25pbmdfcG9wZW4sIHNldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBzcGF3bgotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydQb3BlbiddCkBAIC02MCwxNSArNTksMTUgQEAKICAgICAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgX3dpbmFwaS5DbG9zZUhhbmRsZSwgKHNlbGYuc2VudGluZWwsKSkKIAogICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCi0gICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihzZWxmKQorICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCkKICAgICAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCisgICAgICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCiAKICAgICBkZWYgZHVwbGljYXRlX2Zvcl9jaGlsZChzZWxmLCBoYW5kbGUpOgotICAgICAgICBhc3NlcnQgc2VsZiBpcyBjb250ZXh0LmdldF9zcGF3bmluZ19wb3BlbigpCisgICAgICAgIGFzc2VydCBzZWxmIGlzIGdldF9zcGF3bmluZ19wb3BlbigpCiAgICAgICAgIHJldHVybiByZWR1Y3Rpb24uZHVwbGljYXRlKGhhbmRsZSwgc2VsZi5zZW50aW5lbCkKIAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IDc4NmEzMDMuLmRkYTAzZGQgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC0yMyw5ICsyMyw5IEBACiAKIGZyb20gLiBpbXBvcnQgY29ubmVjdGlvbgogZnJvbSAuIGltcG9ydCBjb250ZXh0CitfRm9ya2luZ1BpY2tsZXIgPSBjb250ZXh0LnJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiBmcm9tIC51dGlsIGltcG9ydCBkZWJ1ZywgaW5mbywgRmluYWxpemUsIHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGlzX2V4aXRpbmcKLWZyb20gLnJlZHVjdGlvbiBpbXBvcnQgRm9ya2luZ1BpY2tsZXIKIAogIwogIyBRdWV1ZSB0eXBlIHVzaW5nIGEgcGlwZSwgYnVmZmVyIGFuZCB0aHJlYWQKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzZWxmLl9ybG9jay5yZWxlYXNlKCkKICAgICAgICAgIyB1bnNlcmlhbGl6ZSB0aGUgZGF0YSBhZnRlciBoYXZpbmcgcmVsZWFzZWQgdGhlIGxvY2sKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCiAKICAgICBkZWYgcXNpemUoc2VsZik6CiAgICAgICAgICMgUmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3Igb24gTWFjIE9TWCBiZWNhdXNlIG9mIGJyb2tlbiBzZW1fZ2V0dmFsdWUoKQpAQCAtMjM4LDcgKzIzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgICAgICAgICAgICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IF9Gb3JraW5nUGlja2xlci5kdW1wcyhvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiB3YWNxdWlyZSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfYnl0ZXMob2JqKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTM0MiwxMSArMzQyLDExIEBACiAgICAgICAgIHdpdGggc2VsZi5fcmxvY2s6CiAgICAgICAgICAgICByZXMgPSBzZWxmLl9yZWFkZXIucmVjdl9ieXRlcygpCiAgICAgICAgICMgdW5zZXJpYWxpemUgdGhlIGRhdGEgYWZ0ZXIgaGF2aW5nIHJlbGVhc2VkIHRoZSBsb2NrCi0gICAgICAgIHJldHVybiBGb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCisgICAgICAgIHJldHVybiBfRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQogCiAgICAgZGVmIHB1dChzZWxmLCBvYmopOgogICAgICAgICAjIHNlcmlhbGl6ZSB0aGUgZGF0YSBiZWZvcmUgYWNxdWlyaW5nIHRoZSBsb2NrCi0gICAgICAgIG9iaiA9IEZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKKyAgICAgICAgb2JqID0gX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKICAgICAgICAgaWYgc2VsZi5fd2xvY2sgaXMgTm9uZToKICAgICAgICAgICAgICMgd3JpdGVzIHRvIGEgbWVzc2FnZSBvcmllbnRlZCB3aW4zMiBwaXBlIGFyZSBhdG9taWMKICAgICAgICAgICAgIHNlbGYuX3dyaXRlci5zZW5kX2J5dGVzKG9iaikKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKaW5kZXggOGYyMDliNC4uYzA0M2M5YSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkKQEAgLTcsNiArNyw3IEBACiAjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAorZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiBpbXBvcnQgY29weXJlZwogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGlvCkBAIC0yMzgsMyArMjM5LDM2IEBACiAgICAgICAgIGZkID0gZGYuZGV0YWNoKCkKICAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoZmFtaWx5LCB0eXBlLCBwcm90bywgZmlsZW5vPWZkKQogICAgIHJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIF9yZWR1Y2Vfc29ja2V0KQorCisKK2NsYXNzIEFic3RyYWN0UmVkdWNlcihtZXRhY2xhc3M9QUJDTWV0YSk6CisgICAgJycnQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdXNlIGluIGltcGxlbWVudGluZyBhIFJlZHVjdGlvbiBjbGFzcworICAgIHN1aXRhYmxlIGZvciB1c2UgaW4gcmVwbGFjaW5nIHRoZSBzdGFuZGFyZCByZWR1Y3Rpb24gbWVjaGFuaXNtCisgICAgdXNlZCBpbiBtdWx0aXByb2Nlc3NpbmcuJycnCisgICAgRm9ya2luZ1BpY2tsZXIgPSBGb3JraW5nUGlja2xlcgorICAgIHJlZ2lzdGVyID0gcmVnaXN0ZXIKKyAgICBkdW1wID0gZHVtcAorICAgIHNlbmRfaGFuZGxlID0gc2VuZF9oYW5kbGUKKyAgICByZWN2X2hhbmRsZSA9IHJlY3ZfaGFuZGxlCisKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgc3RlYWxfaGFuZGxlID0gc3RlYWxfaGFuZGxlCisgICAgICAgIGR1cGxpY2F0ZSA9IGR1cGxpY2F0ZQorICAgICAgICBEdXBIYW5kbGUgPSBEdXBIYW5kbGUKKyAgICBlbHNlOgorICAgICAgICBzZW5kZmRzID0gc2VuZGZkcworICAgICAgICByZWN2ZmRzID0gcmVjdmZkcworICAgICAgICBEdXBGZCA9IER1cEZkCisKKyAgICBfcmVkdWNlX21ldGhvZCA9IF9yZWR1Y2VfbWV0aG9kCisgICAgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvciA9IF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IKKyAgICBfcmVidWlsZF9wYXJ0aWFsID0gX3JlYnVpbGRfcGFydGlhbAorICAgIF9yZWR1Y2Vfc29ja2V0ID0gX3JlZHVjZV9zb2NrZXQKKyAgICBfcmVidWlsZF9zb2NrZXQgPSBfcmVidWlsZF9zb2NrZXQKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHJlZ2lzdGVyKHR5cGUoX0MoKS5mKSwgX3JlZHVjZV9tZXRob2QpCisgICAgICAgIHJlZ2lzdGVyKHR5cGUobGlzdC5hcHBlbmQpLCBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yKQorICAgICAgICByZWdpc3Rlcih0eXBlKGludC5fX2FkZF9fKSwgX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcikKKyAgICAgICAgcmVnaXN0ZXIoZnVuY3Rvb2xzLnBhcnRpYWwsIF9yZWR1Y2VfcGFydGlhbCkKKyAgICAgICAgcmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgX3JlZHVjZV9zb2NrZXQpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Jlc291cmNlX3NoYXJlci5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CmluZGV4IDVlNDZmYzYuLmU0NGE3MjggMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5CkBAIC0xNSw3ICsxNSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiAKIGZyb20gLiBpbXBvcnQgcHJvY2VzcwotZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ3N0b3AnXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQppbmRleCA0MjU4ZjU5Li4yNWNiY2YyIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weQpAQCAtMTMsOCArMTMsOCBAQAogZnJvbSAuIGltcG9ydCBoZWFwCiBmcm9tIC4gaW1wb3J0IGdldF9jb250ZXh0CiAKLWZyb20gLmNvbnRleHQgaW1wb3J0IGFzc2VydF9zcGF3bmluZwotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBhc3NlcnRfc3Bhd25pbmcKK19Gb3JraW5nUGlja2xlciA9IHJlZHVjdGlvbi5Gb3JraW5nUGlja2xlcgogCiBfX2FsbF9fID0gWydSYXdWYWx1ZScsICdSYXdBcnJheScsICdWYWx1ZScsICdBcnJheScsICdjb3B5JywgJ3N5bmNocm9uaXplZCddCiAKQEAgLTEzNCw3ICsxMzQsNyBAQAogZGVmIHJlYnVpbGRfY3R5cGUodHlwZV8sIHdyYXBwZXIsIGxlbmd0aCk6CiAgICAgaWYgbGVuZ3RoIGlzIG5vdCBOb25lOgogICAgICAgICB0eXBlXyA9IHR5cGVfICogbGVuZ3RoCi0gICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKKyAgICBfRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIodHlwZV8sIHJlZHVjZV9jdHlwZSkKICAgICBidWYgPSB3cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkKICAgICBvYmogPSB0eXBlXy5mcm9tX2J1ZmZlcihidWYpCiAgICAgb2JqLl93cmFwcGVyID0gd3JhcHBlcgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKaW5kZXggNGQ3Njk1MS4uZGZiOWY2NSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CkBAIC05LDEzICs5LDEzIEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN5cwogaW1wb3J0IHJ1bnB5CiBpbXBvcnQgdHlwZXMKIAogZnJvbSAuIGltcG9ydCBnZXRfc3RhcnRfbWV0aG9kLCBzZXRfc3RhcnRfbWV0aG9kCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ19tYWluJywgJ2ZyZWV6ZV9zdXBwb3J0JywgJ3NldF9leGVjdXRhYmxlJywgJ2dldF9leGVjdXRhYmxlJywKQEAgLTk2LDggKzk2LDcgQEAKICAgICBhc3NlcnQgaXNfZm9ya2luZyhzeXMuYXJndikKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgaW1wb3J0IG1zdmNydAotICAgICAgICBmcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IHN0ZWFsX2hhbmRsZQotICAgICAgICBuZXdfaGFuZGxlID0gc3RlYWxfaGFuZGxlKHBhcmVudF9waWQsIHBpcGVfaGFuZGxlKQorICAgICAgICBuZXdfaGFuZGxlID0gcmVkdWN0aW9uLnN0ZWFsX2hhbmRsZShwYXJlbnRfcGlkLCBwaXBlX2hhbmRsZSkKICAgICAgICAgZmQgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUobmV3X2hhbmRsZSwgb3MuT19SRE9OTFkpCiAgICAgZWxzZToKICAgICAgICAgZnJvbSAuIGltcG9ydCBzZW1hcGhvcmVfdHJhY2tlcgpAQCAtMTExLDkgKzExMCw5IEBACiAgICAgd2l0aCBvcy5mZG9wZW4oZmQsICdyYicsIGNsb3NlZmQ9VHJ1ZSkgYXMgZnJvbV9wYXJlbnQ6CiAgICAgICAgIHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkuX2luaGVyaXRpbmcgPSBUcnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHByZXBhcmF0aW9uX2RhdGEgPSBwaWNrbGUubG9hZChmcm9tX3BhcmVudCkKKyAgICAgICAgICAgIHByZXBhcmF0aW9uX2RhdGEgPSByZWR1Y3Rpb24ucGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCiAgICAgICAgICAgICBwcmVwYXJlKHByZXBhcmF0aW9uX2RhdGEpCi0gICAgICAgICAgICBzZWxmID0gcGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCisgICAgICAgICAgICBzZWxmID0gcmVkdWN0aW9uLnBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCkuX2luaGVyaXRpbmcKICAgICByZXR1cm4gc2VsZi5fYm9vdHN0cmFwKCkKZGlmZiAtLWdpdCBhL0xpYi9udHBhdGgucHkgYi9MaWIvbnRwYXRoLnB5CmluZGV4IGFmNmE3MDkuLmE4ZjRiMzcgMTAwNjQ0Ci0tLSBhL0xpYi9udHBhdGgucHkKKysrIGIvTGliL250cGF0aC5weQpAQCAtMjgsOCArMjgsNiBAQAogcGF0aHNlcCA9ICc7JwogYWx0c2VwID0gJy8nCiBkZWZwYXRoID0gJy47QzpcXGJpbicKLWlmICdjZScgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgIGRlZnBhdGggPSAnXFxXaW5kb3dzJwogZGV2bnVsbCA9ICdudWwnCiAKIGRlZiBfZ2V0X2JvdGhzZXBzKHBhdGgpOgpAQCAtNDYsNiArNDQsNyBAQAogICAgICIiIk5vcm1hbGl6ZSBjYXNlIG9mIHBhdGhuYW1lLgogCiAgICAgTWFrZXMgYWxsIGNoYXJhY3RlcnMgbG93ZXJjYXNlIGFuZCBhbGwgc2xhc2hlcyBpbnRvIGJhY2tzbGFzaGVzLiIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICB0cnk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocywgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIHMucmVwbGFjZShiJy8nLCBiJ1xcJykubG93ZXIoKQpAQCAtNjYsMTIgKzY1LDE0IEBACiAKIGRlZiBpc2FicyhzKToKICAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGFic29sdXRlIiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIHMgPSBzcGxpdGRyaXZlKHMpWzFdCiAgICAgcmV0dXJuIGxlbihzKSA+IDAgYW5kIHNbMF0gaW4gX2dldF9ib3Roc2VwcyhzKQogCiAKICMgSm9pbiB0d28gKG9yIG1vcmUpIHBhdGhzLgogZGVmIGpvaW4ocGF0aCwgKnBhdGhzKToKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIHNlcHMgPSBiJ1xcLycKQEAgLTg0LDcgKzg1LDcgQEAKICAgICAgICAgaWYgbm90IHBhdGhzOgogICAgICAgICAgICAgcGF0aFs6MF0gKyBzZXAgICMyMzc4MDogRW5zdXJlIGNvbXBhdGlibGUgZGF0YSB0eXBlIGV2ZW4gaWYgcCBpcyBudWxsLgogICAgICAgICByZXN1bHRfZHJpdmUsIHJlc3VsdF9wYXRoID0gc3BsaXRkcml2ZShwYXRoKQotICAgICAgICBmb3IgcCBpbiBwYXRoczoKKyAgICAgICAgZm9yIHAgaW4gbWFwKG9zLmZzcGF0aCwgcGF0aHMpOgogICAgICAgICAgICAgcF9kcml2ZSwgcF9wYXRoID0gc3BsaXRkcml2ZShwKQogICAgICAgICAgICAgaWYgcF9wYXRoIGFuZCBwX3BhdGhbMF0gaW4gc2VwczoKICAgICAgICAgICAgICAgICAjIFNlY29uZCBwYXRoIGlzIGFic29sdXRlCkBAIC0xMzYsNiArMTM3LDcgQEAKICAgICBQYXRocyBjYW5ub3QgY29udGFpbiBib3RoIGEgZHJpdmUgbGV0dGVyIGFuZCBhIFVOQyBwYXRoLgogCiAgICAgIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIGlmIGxlbihwKSA+PSAyOgogICAgICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgICAgIHNlcCA9IGInXFwnCkBAIC0xOTksNyArMjAxLDcgQEAKIAogICAgIFJldHVybiB0dXBsZSAoaGVhZCwgdGFpbCkgd2hlcmUgdGFpbCBpcyBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4KICAgICBFaXRoZXIgcGFydCBtYXkgYmUgZW1wdHkuIiIiCi0KKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocCkKICAgICBkLCBwID0gc3BsaXRkcml2ZShwKQogICAgICMgc2V0IGkgdG8gaW5kZXggYmV5b25kIHAncyBsYXN0IHNsYXNoCkBAIC0yMTgsNiArMjIwLDcgQEAKICMgSXQgaXMgYWx3YXlzIHRydWUgdGhhdCByb290ICsgZXh0ID09IHAuCiAKIGRlZiBzcGxpdGV4dChwKToKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgaWYgaXNpbnN0YW5jZShwLCBieXRlcyk6CiAgICAgICAgIHJldHVybiBnZW5lcmljcGF0aC5fc3BsaXRleHQocCwgYidcXCcsIGInLycsIGInLicpCiAgICAgZWxzZToKQEAgLTI3OCw2ICsyODEsNyBAQAogZGVmIGlzbW91bnQocGF0aCk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhIG1vdW50IHBvaW50IChhIGRyaXZlIHJvb3QsIHRoZSByb290IG9mIGEKICAgICBzaGFyZSwgb3IgYSBtb3VudGVkIHZvbHVtZSkiIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgc2VwcyA9IF9nZXRfYm90aHNlcHMocGF0aCkKICAgICBwYXRoID0gYWJzcGF0aChwYXRoKQogICAgIHJvb3QsIHJlc3QgPSBzcGxpdGRyaXZlKHBhdGgpCkBAIC0zMDUsNiArMzA5LDcgQEAKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0cy4KIAogICAgIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwgZG8gbm90aGluZy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHRpbGRlID0gYid+JwogICAgIGVsc2U6CkBAIC0zNTQsNiArMzU5LDcgQEAKICAgICAiIiJFeHBhbmQgc2hlbGwgdmFyaWFibGVzIG9mIHRoZSBmb3JtcyAkdmFyLCAke3Zhcn0gYW5kICV2YXIlLgogCiAgICAgVW5rbm93biB2YXJpYWJsZXMgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgaWYgYickJyBub3QgaW4gcGF0aCBhbmQgYiclJyBub3QgaW4gcGF0aDoKICAgICAgICAgICAgIHJldHVybiBwYXRoCkBAIC00NjQsNiArNDcwLDcgQEAKIAogZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgYWx0c2VwID0gYicvJwpAQCAtNTE4LDYgKzUyNSw3IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6ICMgbm90IHJ1bm5pbmcgb24gV2luZG93cyAtIG1vY2sgdXAgc29tZXRoaW5nIHNlbnNpYmxlCiAgICAgZGVmIGFic3BhdGgocGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgYWJzb2x1dGUgdmVyc2lvbiBvZiBhIHBhdGguIiIiCisgICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkYigpCkBAIC01MzEsNiArNTM5LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2ZXJzaW9uIG9mIGEgcGF0aC4iIiIKIAogICAgICAgICBpZiBwYXRoOiAjIEVtcHR5IHBhdGggbXVzdCByZXR1cm4gY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwYXRoID0gX2dldGZ1bGxwYXRobmFtZShwYXRoKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CkBAIC01NDksNiArNTU4LDcgQEAKIAogZGVmIHJlbHBhdGgocGF0aCwgc3RhcnQ9Tm9uZSk6CiAgICAgIiIiUmV0dXJuIGEgcmVsYXRpdmUgdmVyc2lvbiBvZiBhIHBhdGgiIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIGN1cmRpciA9IGInLicKQEAgLTU2NCw2ICs1NzQsNyBAQAogICAgIGlmIG5vdCBwYXRoOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJubyBwYXRoIHNwZWNpZmllZCIpCiAKKyAgICBzdGFydCA9IG9zLmZzcGF0aChzdGFydCkKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2FicyA9IGFic3BhdGgobm9ybXBhdGgoc3RhcnQpKQogICAgICAgICBwYXRoX2FicyA9IGFic3BhdGgobm9ybXBhdGgocGF0aCkpCkBAIC02MDcsNiArNjE4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBhbHRzZXAgPSBiJy8nCmRpZmYgLS1naXQgYS9MaWIvb3Bjb2RlLnB5IGIvTGliL29wY29kZS5weQppbmRleCA0YzgyNmE3Li5iNTkxNmI2IDEwMDY0NAotLS0gYS9MaWIvb3Bjb2RlLnB5CisrKyBiL0xpYi9vcGNvZGUucHkKQEAgLTMxLDEyICszMSwxMCBAQAogaGFzbG9jYWwgPSBbXQogaGFzY29tcGFyZSA9IFtdCiBoYXNmcmVlID0gW10KLWhhc25hcmdzID0gW10KK2hhc25hcmdzID0gW10gIyB1bnVzZWQKIAogb3BtYXAgPSB7fQotb3BuYW1lID0gWycnXSAqIDI1NgotZm9yIG9wIGluIHJhbmdlKDI1Nik6IG9wbmFtZVtvcF0gPSAnPCVyPicgJSAob3AsKQotZGVsIG9wCitvcG5hbWUgPSBbJzwlcj4nICUgKG9wLCkgZm9yIG9wIGluIHJhbmdlKDI1NildCiAKIGRlZiBkZWZfb3AobmFtZSwgb3ApOgogICAgIG9wbmFtZVtvcF0gPSBuYW1lCkBAIC0xMjEsNyArMTE5LDcgQEAKIAogZGVmX29wKCdSRVRVUk5fVkFMVUUnLCA4MykKIGRlZl9vcCgnSU1QT1JUX1NUQVInLCA4NCkKLQorZGVmX29wKCdTRVRVUF9BTk5PVEFUSU9OUycsIDg1KQogZGVmX29wKCdZSUVMRF9WQUxVRScsIDg2KQogZGVmX29wKCdQT1BfQkxPQ0snLCA4NykKIGRlZl9vcCgnRU5EX0ZJTkFMTFknLCA4OCkKQEAgLTE3MSwxMyArMTY5LDEyIEBACiBoYXNsb2NhbC5hcHBlbmQoMTI1KQogZGVmX29wKCdERUxFVEVfRkFTVCcsIDEyNikgICAgICAjIExvY2FsIHZhcmlhYmxlIG51bWJlcgogaGFzbG9jYWwuYXBwZW5kKDEyNikKK25hbWVfb3AoJ1NUT1JFX0FOTk9UQVRJT04nLCAxMjcpICMgSW5kZXggaW4gbmFtZSBsaXN0CiAKIGRlZl9vcCgnUkFJU0VfVkFSQVJHUycsIDEzMCkgICAgIyBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyLCBvciAzKQotZGVmX29wKCdDQUxMX0ZVTkNUSU9OJywgMTMxKSAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxMzEpCi1kZWZfb3AoJ01BS0VfRlVOQ1RJT04nLCAxMzIpICAgICMgTnVtYmVyIG9mIGFyZ3Mgd2l0aCBkZWZhdWx0IHZhbHVlcworZGVmX29wKCdDQUxMX0ZVTkNUSU9OJywgMTMxKSAgICAjICNhcmdzCitkZWZfb3AoJ01BS0VfRlVOQ1RJT04nLCAxMzIpICAgICMgRmxhZ3MKIGRlZl9vcCgnQlVJTERfU0xJQ0UnLCAxMzMpICAgICAgIyBOdW1iZXIgb2YgaXRlbXMKLWRlZl9vcCgnTUFLRV9DTE9TVVJFJywgMTM0KQogZGVmX29wKCdMT0FEX0NMT1NVUkUnLCAxMzUpCiBoYXNmcmVlLmFwcGVuZCgxMzUpCiBkZWZfb3AoJ0xPQURfREVSRUYnLCAxMzYpCkBAIC0xODcsMTIgKzE4NCw4IEBACiBkZWZfb3AoJ0RFTEVURV9ERVJFRicsIDEzOCkKIGhhc2ZyZWUuYXBwZW5kKDEzOCkKIAotZGVmX29wKCdDQUxMX0ZVTkNUSU9OX1ZBUicsIDE0MCkgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDE0MCkKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTl9LVycsIDE0MSkgICAgICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxNDEpCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSX0tXJywgMTQyKSAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTQyKQorZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgIyAjYXJncyArICNrd2FyZ3MKK2RlZl9vcCgnQ0FMTF9GVU5DVElPTl9FWCcsIDE0MikgICMgRmxhZ3MKIAoganJlbF9vcCgnU0VUVVBfV0lUSCcsIDE0MykKIApAQCAtMjAzLDggKzE5Niw2IEBACiBkZWZfb3AoJ0xPQURfQ0xBU1NERVJFRicsIDE0OCkKIGhhc2ZyZWUuYXBwZW5kKDE0OCkKIAotanJlbF9vcCgnU0VUVVBfQVNZTkNfV0lUSCcsIDE1NCkKLQogZGVmX29wKCdFWFRFTkRFRF9BUkcnLCAxNDQpCiBFWFRFTkRFRF9BUkcgPSAxNDQKIApAQCAtMjE0LDQgKzIwNSwxMSBAQAogZGVmX29wKCdCVUlMRF9UVVBMRV9VTlBBQ0snLCAxNTIpCiBkZWZfb3AoJ0JVSUxEX1NFVF9VTlBBQ0snLCAxNTMpCiAKK2pyZWxfb3AoJ1NFVFVQX0FTWU5DX1dJVEgnLCAxNTQpCisKK2RlZl9vcCgnRk9STUFUX1ZBTFVFJywgMTU1KQorZGVmX29wKCdCVUlMRF9DT05TVF9LRVlfTUFQJywgMTU2KQorZGVmX29wKCdCVUlMRF9TVFJJTkcnLCAxNTcpCitkZWZfb3AoJ0JVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwnLCAxNTgpCisKIGRlbCBkZWZfb3AsIG5hbWVfb3AsIGpyZWxfb3AsIGphYnNfb3AKZGlmZiAtLWdpdCBhL0xpYi9vcHRwYXJzZS5weSBiL0xpYi9vcHRwYXJzZS5weQppbmRleCA3NGIzYjM2Li5lOGFjMWUxIDEwMDY0NAotLS0gYS9MaWIvb3B0cGFyc2UucHkKKysrIGIvTGliL29wdHBhcnNlLnB5CkBAIC0zOCw3ICszOCw4IEBACiAgICAgICAgICAgICdPcHRpb25FcnJvcicsCiAgICAgICAgICAgICdPcHRpb25Db25mbGljdEVycm9yJywKICAgICAgICAgICAgJ09wdGlvblZhbHVlRXJyb3InLAotICAgICAgICAgICAnQmFkT3B0aW9uRXJyb3InXQorICAgICAgICAgICAnQmFkT3B0aW9uRXJyb3InLAorICAgICAgICAgICAnY2hlY2tfY2hvaWNlJ10KIAogX19jb3B5cmlnaHRfXyA9ICIiIgogQ29weXJpZ2h0IChjKSAyMDAxLTIwMDYgR3JlZ29yeSBQLiBXYXJkLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL0xpYi9vcy5weSBiL0xpYi9vcy5weQppbmRleCAwMTEyODVlLi43MWVkMDg4IDEwMDY0NAotLS0gYS9MaWIvb3MucHkKKysrIGIvTGliL29zLnB5CkBAIC0xLDEyICsxLDEyIEBACiByIiIiT1Mgcm91dGluZXMgZm9yIE5UIG9yIFBvc2l4IGRlcGVuZGluZyBvbiB3aGF0IHN5c3RlbSB3ZSdyZSBvbi4KIAogVGhpcyBleHBvcnRzOgotICAtIGFsbCBmdW5jdGlvbnMgZnJvbSBwb3NpeCwgbnQgb3IgY2UsIGUuZy4gdW5saW5rLCBzdGF0LCBldGMuCisgIC0gYWxsIGZ1bmN0aW9ucyBmcm9tIHBvc2l4IG9yIG50LCBlLmcuIHVubGluaywgc3RhdCwgZXRjLgogICAtIG9zLnBhdGggaXMgZWl0aGVyIHBvc2l4cGF0aCBvciBudHBhdGgKLSAgLSBvcy5uYW1lIGlzIGVpdGhlciAncG9zaXgnLCAnbnQnIG9yICdjZScuCi0gIC0gb3MuY3VyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKCcuJyBvciAnOicpCi0gIC0gb3MucGFyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFyZW50IGRpcmVjdG9yeSAoJy4uJyBvciAnOjonKQotICAtIG9zLnNlcCBpcyB0aGUgKG9yIGEgbW9zdCBjb21tb24pIHBhdGhuYW1lIHNlcGFyYXRvciAoJy8nIG9yICc6JyBvciAnXFwnKQorICAtIG9zLm5hbWUgaXMgZWl0aGVyICdwb3NpeCcgb3IgJ250JworICAtIG9zLmN1cmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IChhbHdheXMgJy4nKQorICAtIG9zLnBhcmRpciBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHBhcmVudCBkaXJlY3RvcnkgKGFsd2F5cyAnLi4nKQorICAtIG9zLnNlcCBpcyB0aGUgKG9yIGEgbW9zdCBjb21tb24pIHBhdGhuYW1lIHNlcGFyYXRvciAoJy8nIG9yICdcXCcpCiAgIC0gb3MuZXh0c2VwIGlzIHRoZSBleHRlbnNpb24gc2VwYXJhdG9yIChhbHdheXMgJy4nKQogICAtIG9zLmFsdHNlcCBpcyB0aGUgYWx0ZXJuYXRlIHBhdGhuYW1lIHNlcGFyYXRvciAoTm9uZSBvciAnLycpCiAgIC0gb3MucGF0aHNlcCBpcyB0aGUgY29tcG9uZW50IHNlcGFyYXRvciB1c2VkIGluICRQQVRIIGV0YwpAQCAtMjIsNyArMjIsNyBAQAogIiIiCiAKICMnCi0KK2ltcG9ydCBhYmMKIGltcG9ydCBzeXMsIGVycm5vCiBpbXBvcnQgc3RhdCBhcyBzdAogCkBAIC04NSwyNyArODUsNiBAQAogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogCi1lbGlmICdjZScgaW4gX25hbWVzOgotICAgIG5hbWUgPSAnY2UnCi0gICAgbGluZXNlcCA9ICdcclxuJwotICAgIGZyb20gY2UgaW1wb3J0ICoKLSAgICB0cnk6Ci0gICAgICAgIGZyb20gY2UgaW1wb3J0IF9leGl0Ci0gICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0gICAgIyBXZSBjYW4gdXNlIHRoZSBzdGFuZGFyZCBXaW5kb3dzIHBhdGguCi0gICAgaW1wb3J0IG50cGF0aCBhcyBwYXRoCi0KLSAgICBpbXBvcnQgY2UKLSAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChjZSkpCi0gICAgZGVsIGNlCi0KLSAgICB0cnk6Ci0gICAgICAgIGZyb20gY2UgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucwotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotCiBlbHNlOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBvcyBzcGVjaWZpYyBtb2R1bGUgZm91bmQnKQogCkBAIC0zNTMsOSArMzMyLDEwIEBACiAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCiAKICAgICAiIiIKLQorICAgIHRvcCA9IGZzcGF0aCh0b3ApCiAgICAgZGlycyA9IFtdCiAgICAgbm9uZGlycyA9IFtdCisgICAgd2Fsa19kaXJzID0gW10KIAogICAgICMgV2UgbWF5IG5vdCBoYXZlIHJlYWQgcGVybWlzc2lvbiBmb3IgdG9wLCBpbiB3aGljaCBjYXNlIHdlIGNhbid0CiAgICAgIyBnZXQgYSBsaXN0IG9mIHRoZSBmaWxlcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5zLiAgb3Mud2FsawpAQCAtMzYzLDQ4ICszNDMsNTUgQEAKICAgICAjIG1pbm9yIHJlYXNvbiB3aGVuIChzYXkpIGEgdGhvdXNhbmQgcmVhZGFibGUgZGlyZWN0b3JpZXMgYXJlIHN0aWxsCiAgICAgIyBsZWZ0IHRvIHZpc2l0LiAgVGhhdCBsb2dpYyBpcyBjb3BpZWQgaGVyZS4KICAgICB0cnk6Ci0gICAgICAgIGlmIG5hbWUgPT0gJ250JyBhbmQgaXNpbnN0YW5jZSh0b3AsIGJ5dGVzKToKLSAgICAgICAgICAgIHNjYW5kaXJfaXQgPSBfZHVtbXlfc2NhbmRpcih0b3ApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdGUgdGhhdCBzY2FuZGlyIGlzIGdsb2JhbCBpbiB0aGlzIG1vZHVsZSBkdWUKLSAgICAgICAgICAgICMgdG8gZWFybGllciBpbXBvcnQtKi4KLSAgICAgICAgICAgIHNjYW5kaXJfaXQgPSBzY2FuZGlyKHRvcCkKLSAgICAgICAgZW50cmllcyA9IGxpc3Qoc2NhbmRpcl9pdCkKKyAgICAgICAgIyBOb3RlIHRoYXQgc2NhbmRpciBpcyBnbG9iYWwgaW4gdGhpcyBtb2R1bGUgZHVlCisgICAgICAgICMgdG8gZWFybGllciBpbXBvcnQtKi4KKyAgICAgICAgc2NhbmRpcl9pdCA9IHNjYW5kaXIodG9wKQogICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgogICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb25lcnJvcihlcnJvcikKICAgICAgICAgcmV0dXJuCiAKLSAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaXNfZGlyID0gZW50cnkuaXNfZGlyKCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAjIElmIGlzX2RpcigpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZSBlbnRyeSBpcyBub3QKLSAgICAgICAgICAgICMgYSBkaXJlY3RvcnksIHNhbWUgYmVoYXZpb3VyIHRoYW4gb3MucGF0aC5pc2RpcigpLgotICAgICAgICAgICAgaXNfZGlyID0gRmFsc2UKLQotICAgICAgICBpZiBpc19kaXI6Ci0gICAgICAgICAgICBkaXJzLmFwcGVuZChlbnRyeS5uYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQoZW50cnkubmFtZSkKLQotICAgICAgICBpZiBub3QgdG9wZG93biBhbmQgaXNfZGlyOgotICAgICAgICAgICAgIyBCb3R0b20tdXA6IHJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3J5LCBidXQgZXhjbHVkZSBzeW1saW5rcyB0bwotICAgICAgICAgICAgIyBkaXJlY3RvcmllcyBpZiBmb2xsb3dsaW5rcyBpcyBGYWxzZQotICAgICAgICAgICAgaWYgZm9sbG93bGlua3M6Ci0gICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gVHJ1ZQotICAgICAgICAgICAgZWxzZToKKyAgICB3aXRoIHNjYW5kaXJfaXQ6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICMgSWYgaXNfc3ltbGluaygpIHJhaXNlcyBhbiBPU0Vycm9yLCBjb25zaWRlciB0aGF0IHRoZQotICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgotICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gRmFsc2UKLSAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluaworICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IG5leHQoc2NhbmRpcl9pdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycm9yOgorICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgICAgIGlmIHdhbGtfaW50bzoKLSAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsoZW50cnkucGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXNfZGlyID0gZW50cnkuaXNfZGlyKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICMgSWYgaXNfZGlyKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlIGVudHJ5IGlzIG5vdAorICAgICAgICAgICAgICAgICMgYSBkaXJlY3RvcnksIHNhbWUgYmVoYXZpb3VyIHRoYW4gb3MucGF0aC5pc2RpcigpLgorICAgICAgICAgICAgICAgIGlzX2RpciA9IEZhbHNlCisKKyAgICAgICAgICAgIGlmIGlzX2RpcjoKKyAgICAgICAgICAgICAgICBkaXJzLmFwcGVuZChlbnRyeS5uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQorCisgICAgICAgICAgICBpZiBub3QgdG9wZG93biBhbmQgaXNfZGlyOgorICAgICAgICAgICAgICAgICMgQm90dG9tLXVwOiByZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yeSwgYnV0IGV4Y2x1ZGUgc3ltbGlua3MgdG8KKyAgICAgICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGlmIGZvbGxvd2xpbmtzIGlzIEZhbHNlCisgICAgICAgICAgICAgICAgaWYgZm9sbG93bGlua3M6CisgICAgICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBpc19zeW1saW5rID0gZW50cnkuaXNfc3ltbGluaygpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBpc19zeW1saW5rKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVudHJ5IGlzIG5vdCBhIHN5bWJvbGljIGxpbmssIHNhbWUgYmVoYXZpb3VyIHRoYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgb3MucGF0aC5pc2xpbmsoKS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBub3QgaXNfc3ltbGluaworCisgICAgICAgICAgICAgICAgaWYgd2Fsa19pbnRvOgorICAgICAgICAgICAgICAgICAgICB3YWxrX2RpcnMuYXBwZW5kKGVudHJ5LnBhdGgpCiAKICAgICAjIFlpZWxkIGJlZm9yZSByZWN1cnNpb24gaWYgZ29pbmcgdG9wIGRvd24KICAgICBpZiB0b3Bkb3duOgpAQCAtNDIxLDU3ICs0MDgsMTIgQEAKICAgICAgICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgogICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgZWxzZToKKyAgICAgICAgIyBSZWN1cnNlIGludG8gc3ViLWRpcmVjdG9yaWVzCisgICAgICAgIGZvciBuZXdfcGF0aCBpbiB3YWxrX2RpcnM6CisgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGsobmV3X3BhdGgsIHRvcGRvd24sIG9uZXJyb3IsIGZvbGxvd2xpbmtzKQogICAgICAgICAjIFlpZWxkIGFmdGVyIHJlY3Vyc2lvbiBpZiBnb2luZyBib3R0b20gdXAKICAgICAgICAgeWllbGQgdG9wLCBkaXJzLCBub25kaXJzCiAKLWNsYXNzIF9EdW1teURpckVudHJ5OgotICAgICIiIkR1bW15IGltcGxlbWVudGF0aW9uIG9mIERpckVudHJ5Ci0KLSAgICBPbmx5IHVzZWQgaW50ZXJuYWxseSBieSBvcy53YWxrKGJ5dGVzKS4gU2luY2Ugb3Mud2FsaygpIGRvZXNuJ3QgbmVlZCB0aGUKLSAgICBmb2xsb3dfc3ltbGlua3MgcGFyYW1ldGVyOiBkb24ndCBpbXBsZW1lbnQgaXQsIGFsd2F5cyBmb2xsb3cgc3ltYm9saWMKLSAgICBsaW5rcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXIsIG5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGguam9pbihkaXIsIG5hbWUpCi0gICAgICAgICMgTWltaWNrIEZpbmRGaXJzdEZpbGUvRmluZE5leHRGaWxlOiB3ZSBzaG91bGQgZ2V0IGZpbGUgYXR0cmlidXRlcwotICAgICAgICAjIHdoaWxlIGl0ZXJhdGluZyBvbiBhIGRpcmVjdG9yeQotICAgICAgICBzZWxmLl9zdGF0ID0gTm9uZQotICAgICAgICBzZWxmLl9sc3RhdCA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgc3RhdChzZWxmLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6Ci0gICAgICAgIGlmIGZvbGxvd19zeW1saW5rczoKLSAgICAgICAgICAgIGlmIHNlbGYuX3N0YXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9zdGF0ID0gc3RhdChzZWxmLnBhdGgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RhdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgc2VsZi5fbHN0YXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sc3RhdCA9IHN0YXQoc2VsZi5wYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbHN0YXQKLQotICAgIGRlZiBpc19kaXIoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2xzdGF0IGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5pc19zeW1saW5rKCk6Ci0gICAgICAgICAgICAjIHVzZSB0aGUgY2FjaGUgbHN0YXQKLSAgICAgICAgICAgIHN0YXQgPSBzZWxmLnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICAgICAgcmV0dXJuIHN0LlNfSVNESVIoc3RhdC5zdF9tb2RlKQotCi0gICAgICAgIHN0YXQgPSBzZWxmLnN0YXQoKQotICAgICAgICByZXR1cm4gc3QuU19JU0RJUihzdGF0LnN0X21vZGUpCi0KLSAgICBkZWYgaXNfc3ltbGluayhzZWxmKToKLSAgICAgICAgc3RhdCA9IHNlbGYuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgIHJldHVybiBzdC5TX0lTTE5LKHN0YXQuc3RfbW9kZSkKLQotZGVmIF9kdW1teV9zY2FuZGlyKGRpcik6Ci0gICAgIyBsaXN0ZGlyLWJhc2VkIGltcGxlbWVudGF0aW9uIGZvciBieXRlcyBwYXRjaGVzIG9uIFdpbmRvd3MKLSAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKGRpcik6Ci0gICAgICAgIHlpZWxkIF9EdW1teURpckVudHJ5KGRpciwgbmFtZSkKLQogX19hbGxfXy5hcHBlbmQoIndhbGsiKQogCiBpZiB7b3Blbiwgc3RhdH0gPD0gc3VwcG9ydHNfZGlyX2ZkIGFuZCB7bGlzdGRpciwgc3RhdH0gPD0gc3VwcG9ydHNfZmQ6CkBAIC01MDksNiArNDUxLDggQEAKICAgICAgICAgICAgIGlmICdDVlMnIGluIGRpcnM6CiAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcwogICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodG9wLCBpbnQpIG9yIG5vdCBoYXNhdHRyKHRvcCwgJ19faW5kZXhfXycpOgorICAgICAgICAgICAgdG9wID0gZnNwYXRoKHRvcCkKICAgICAgICAgIyBOb3RlOiBUbyBndWFyZCBhZ2FpbnN0IHN5bWxpbmsgcmFjZXMsIHdlIHVzZSB0aGUgc3RhbmRhcmQKICAgICAgICAgIyBsc3RhdCgpL29wZW4oKS9mc3RhdCgpIHRyaWNrLgogICAgICAgICBvcmlnX3N0ID0gc3RhdCh0b3AsIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPWRpcl9mZCkKQEAgLTg0MywzNiArNzg3LDMxIEBACiAKIGRlZiBfZnNjb2RlYygpOgogICAgIGVuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCi0gICAgaWYgZW5jb2RpbmcgPT0gJ21iY3MnOgotICAgICAgICBlcnJvcnMgPSAnc3RyaWN0JwotICAgIGVsc2U6Ci0gICAgICAgIGVycm9ycyA9ICdzdXJyb2dhdGVlc2NhcGUnCisgICAgZXJyb3JzID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKQogCiAgICAgZGVmIGZzZW5jb2RlKGZpbGVuYW1lKToKKyAgICAgICAgIiIiRW5jb2RlIGZpbGVuYW1lIChhbiBvcy5QYXRoTGlrZSwgYnl0ZXMsIG9yIHN0cikgdG8gdGhlIGZpbGVzeXN0ZW0KKyAgICAgICAgZW5jb2Rpbmcgd2l0aCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyLCByZXR1cm4gYnl0ZXMgdW5jaGFuZ2VkLgorICAgICAgICBPbiBXaW5kb3dzLCB1c2UgJ3N0cmljdCcgZXJyb3IgaGFuZGxlciBpZiB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMKKyAgICAgICAgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCiAgICAgICAgICIiIgotICAgICAgICBFbmNvZGUgZmlsZW5hbWUgdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvcgotICAgICAgICBoYW5kbGVyLCByZXR1cm4gYnl0ZXMgdW5jaGFuZ2VkLiBPbiBXaW5kb3dzLCB1c2UgJ3N0cmljdCcgZXJyb3IgaGFuZGxlciBpZgotICAgICAgICB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBzdHIpOgorICAgICAgICBmaWxlbmFtZSA9IGZzcGF0aChmaWxlbmFtZSkgICMgRG9lcyB0eXBlLWNoZWNraW5nIG9mIGBmaWxlbmFtZWAuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6CiAgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUuZW5jb2RlKGVuY29kaW5nLCBlcnJvcnMpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdCBieXRlcyBvciBzdHIsIG5vdCAlcyIgJSB0eXBlKGZpbGVuYW1lKS5fX25hbWVfXykKKyAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQogCiAgICAgZGVmIGZzZGVjb2RlKGZpbGVuYW1lKToKKyAgICAgICAgIiIiRGVjb2RlIGZpbGVuYW1lIChhbiBvcy5QYXRoTGlrZSwgYnl0ZXMsIG9yIHN0cikgZnJvbSB0aGUgZmlsZXN5c3RlbQorICAgICAgICBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIHJldHVybiBzdHIgdW5jaGFuZ2VkLiBPbgorICAgICAgICBXaW5kb3dzLCB1c2UgJ3N0cmljdCcgZXJyb3IgaGFuZGxlciBpZiB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMKKyAgICAgICAgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCiAgICAgICAgICIiIgotICAgICAgICBEZWNvZGUgZmlsZW5hbWUgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yCi0gICAgICAgIGhhbmRsZXIsIHJldHVybiBzdHIgdW5jaGFuZ2VkLiBPbiBXaW5kb3dzLCB1c2UgJ3N0cmljdCcgZXJyb3IgaGFuZGxlciBpZgotICAgICAgICB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMgJ21iY3MnICh3aGljaCBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZykuCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBzdHIpOgotICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgYnl0ZXMpOgorICAgICAgICBmaWxlbmFtZSA9IGZzcGF0aChmaWxlbmFtZSkgICMgRG9lcyB0eXBlLWNoZWNraW5nIG9mIGBmaWxlbmFtZWAuCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJ5dGVzKToKICAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0IGJ5dGVzIG9yIHN0ciwgbm90ICVzIiAlIHR5cGUoZmlsZW5hbWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICByZXR1cm4gZnNlbmNvZGUsIGZzZGVjb2RlCiAKQEAgLTEwNzAsMyArMTAwOSw1NSBAQAogICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgZmQgdHlwZSAoJXMsIGV4cGVjdGVkIGludGVnZXIpIiAlIHR5cGUoZmQpKQogICAgIGltcG9ydCBpbwogICAgIHJldHVybiBpby5vcGVuKGZkLCAqYXJncywgKiprd2FyZ3MpCisKKworIyBGb3IgdGVzdGluZyBwdXJwb3NlcywgbWFrZSBzdXJlIHRoZSBmdW5jdGlvbiBpcyBhdmFpbGFibGUgd2hlbiB0aGUgQworIyBpbXBsZW1lbnRhdGlvbiBleGlzdHMuCitkZWYgX2ZzcGF0aChwYXRoKToKKyAgICAiIiJSZXR1cm4gdGhlIHBhdGggcmVwcmVzZW50YXRpb24gb2YgYSBwYXRoLWxpa2Ugb2JqZWN0LgorCisgICAgSWYgc3RyIG9yIGJ5dGVzIGlzIHBhc3NlZCBpbiwgaXQgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiBPdGhlcndpc2UgdGhlCisgICAgb3MuUGF0aExpa2UgaW50ZXJmYWNlIGlzIHVzZWQgdG8gZ2V0IHRoZSBwYXRoIHJlcHJlc2VudGF0aW9uLiBJZiB0aGUKKyAgICBwYXRoIHJlcHJlc2VudGF0aW9uIGlzIG5vdCBzdHIgb3IgYnl0ZXMsIFR5cGVFcnJvciBpcyByYWlzZWQuIElmIHRoZQorICAgIHByb3ZpZGVkIHBhdGggaXMgbm90IHN0ciwgYnl0ZXMsIG9yIG9zLlBhdGhMaWtlLCBUeXBlRXJyb3IgaXMgcmFpc2VkLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgcmV0dXJuIHBhdGgKKworICAgICMgV29yayBmcm9tIHRoZSBvYmplY3QncyB0eXBlIHRvIG1hdGNoIG1ldGhvZCByZXNvbHV0aW9uIG9mIG90aGVyIG1hZ2ljCisgICAgIyBtZXRob2RzLgorICAgIHBhdGhfdHlwZSA9IHR5cGUocGF0aCkKKyAgICB0cnk6CisgICAgICAgIHBhdGhfcmVwciA9IHBhdGhfdHlwZS5fX2ZzcGF0aF9fKHBhdGgpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBpZiBoYXNhdHRyKHBhdGhfdHlwZSwgJ19fZnNwYXRoX18nKToKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIHN0ciwgYnl0ZXMgb3Igb3MuUGF0aExpa2Ugb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAiICsgcGF0aF90eXBlLl9fbmFtZV9fKQorICAgIGlmIGlzaW5zdGFuY2UocGF0aF9yZXByLCAoc3RyLCBieXRlcykpOgorICAgICAgICByZXR1cm4gcGF0aF9yZXByCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCB7fS5fX2ZzcGF0aF9fKCkgdG8gcmV0dXJuIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCB7fSIuZm9ybWF0KHBhdGhfdHlwZS5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKHBhdGhfcmVwcikuX19uYW1lX18pKQorCisjIElmIHRoZXJlIGlzIG5vIEMgaW1wbGVtZW50YXRpb24sIG1ha2UgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gdGhlCisjIGltcGxlbWVudGF0aW9uIGFzIHRyYW5zcGFyZW50bHkgYXMgcG9zc2libGUuCitpZiBub3QgX2V4aXN0cygnZnNwYXRoJyk6CisgICAgZnNwYXRoID0gX2ZzcGF0aAorICAgIGZzcGF0aC5fX25hbWVfXyA9ICJmc3BhdGgiCisKKworY2xhc3MgUGF0aExpa2UoYWJjLkFCQyk6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgdGhlIGZpbGUgc3lzdGVtIHBhdGggcHJvdG9jb2wuIiIiCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LiIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIHN1YmNsYXNzKToKKyAgICAgICAgcmV0dXJuIGhhc2F0dHIoc3ViY2xhc3MsICdfX2ZzcGF0aF9fJykKZGlmZiAtLWdpdCBhL0xpYi9wYXRobGliLnB5IGIvTGliL3BhdGhsaWIucHkKaW5kZXggMTQ4MGUyZi4uMWI1YWIzOCAxMDA2NDQKLS0tIGEvTGliL3BhdGhsaWIucHkKKysrIGIvTGliL3BhdGhsaWIucHkKQEAgLTM4NSw2ICszODUsOCBAQAogCiAgICAgbGlzdGRpciA9IF93cmFwX3N0cmZ1bmMob3MubGlzdGRpcikKIAorICAgIHNjYW5kaXIgPSBfd3JhcF9zdHJmdW5jKG9zLnNjYW5kaXIpCisKICAgICBjaG1vZCA9IF93cmFwX3N0cmZ1bmMob3MuY2htb2QpCiAKICAgICBpZiBoYXNhdHRyKG9zLCAibGNobW9kIik6CkBAIC00MjksMjUgKzQzMSw2IEBACiAjIEdsb2JiaW5nIGhlbHBlcnMKICMKIAotQGNvbnRleHRtYW5hZ2VyCi1kZWYgX2NhY2hlZChmdW5jKToKLSAgICB0cnk6Ci0gICAgICAgIGZ1bmMuX19jYWNoZWRfXwotICAgICAgICB5aWVsZCBmdW5jCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBjYWNoZSA9IHt9Ci0gICAgICAgIGRlZiB3cmFwcGVyKCphcmdzKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVbYXJnc10KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGNhY2hlW2FyZ3NdID0gZnVuYygqYXJncykKLSAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUKLSAgICAgICAgd3JhcHBlci5fX2NhY2hlZF9fID0gVHJ1ZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVsZCB3cmFwcGVyCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjYWNoZS5jbGVhcigpCi0KIGRlZiBfbWFrZV9zZWxlY3RvcihwYXR0ZXJuX3BhcnRzKToKICAgICBwYXQgPSBwYXR0ZXJuX3BhcnRzWzBdCiAgICAgY2hpbGRfcGFydHMgPSBwYXR0ZXJuX3BhcnRzWzE6XQpAQCAtNDczLDggKzQ1NiwxMCBAQAogICAgICAgICBzZWxmLmNoaWxkX3BhcnRzID0gY2hpbGRfcGFydHMKICAgICAgICAgaWYgY2hpbGRfcGFydHM6CiAgICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9tYWtlX3NlbGVjdG9yKGNoaWxkX3BhcnRzKQorICAgICAgICAgICAgc2VsZi5kaXJvbmx5ID0gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5zdWNjZXNzb3IgPSBfVGVybWluYXRpbmdTZWxlY3RvcigpCisgICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBGYWxzZQogCiAgICAgZGVmIHNlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoKToKICAgICAgICAgIiIiSXRlcmF0ZSBvdmVyIGFsbCBjaGlsZCBwYXRocyBvZiBgcGFyZW50X3BhdGhgIG1hdGNoZWQgYnkgdGhpcwpAQCAtNDgyLDEzICs0NjcsMTUgQEAKICAgICAgICAgcGF0aF9jbHMgPSB0eXBlKHBhcmVudF9wYXRoKQogICAgICAgICBpc19kaXIgPSBwYXRoX2Nscy5pc19kaXIKICAgICAgICAgZXhpc3RzID0gcGF0aF9jbHMuZXhpc3RzCi0gICAgICAgIGxpc3RkaXIgPSBwYXJlbnRfcGF0aC5fYWNjZXNzb3IubGlzdGRpcgotICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0X2Zyb20ocGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKQorICAgICAgICBzY2FuZGlyID0gcGFyZW50X3BhdGguX2FjY2Vzc29yLnNjYW5kaXIKKyAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NlbGVjdF9mcm9tKHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcikKIAogCiBjbGFzcyBfVGVybWluYXRpbmdTZWxlY3RvcjoKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHlpZWxkIHBhcmVudF9wYXRoCiAKIApAQCAtNDk4LDEzICs0ODUsMTEgQEAKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCiAKLSAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKHNlbGYubmFtZSkKLSAgICAgICAgICAgIGlmIGV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20ocGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgICAgICAgICAgaWYgKGlzX2RpciBpZiBzZWxmLmRpcm9ubHkgZWxzZSBleGlzdHMpKHBhdGgpOgorICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgIHJldHVybgpAQCAtNTE2LDE3ICs1MDEsMTggQEAKICAgICAgICAgc2VsZi5wYXQgPSByZS5jb21waWxlKGZubWF0Y2gudHJhbnNsYXRlKHBhdCkpCiAgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgY2YgPSBwYXJlbnRfcGF0aC5fZmxhdm91ci5jYXNlZm9sZAotICAgICAgICAgICAgZm9yIG5hbWUgaW4gbGlzdGRpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgY2FzZWZvbGRlZCA9IGNmKG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5wYXQubWF0Y2goY2FzZWZvbGRlZCk6Ci0gICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCisgICAgICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyKHBhcmVudF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRpcm9ubHkgb3IgZW50cnkuaXNfZGlyKCk6CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBlbnRyeS5uYW1lCisgICAgICAgICAgICAgICAgICAgIGNhc2Vmb2xkZWQgPSBjZihuYW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnBhdC5tYXRjaChjYXNlZm9sZGVkKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfcGF0aC5fbWFrZV9jaGlsZF9yZWxwYXRoKG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20ocGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKICAgICAgICAgZXhjZXB0IFBlcm1pc3Npb25FcnJvcjoKICAgICAgICAgICAgIHJldHVybgogCkBAIC01MzcsMzIgKzUyMywzMCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXQsIGNoaWxkX3BhcnRzKToKICAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQogCi0gICAgZGVmIF9pdGVyYXRlX2RpcmVjdG9yaWVzKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGxpc3RkaXIpOgorICAgIGRlZiBfaXRlcmF0ZV9kaXJlY3RvcmllcyhzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKICAgICAgICAgeWllbGQgcGFyZW50X3BhdGgKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gbGlzdGRpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKLSAgICAgICAgICAgICAgICBpZiBpc19kaXIocGF0aCkgYW5kIG5vdCBwYXRoLmlzX3N5bWxpbmsoKToKLSAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXRoLCBpc19kaXIsIGxpc3RkaXIpOgorICAgICAgICAgICAgZW50cmllcyA9IGxpc3Qoc2NhbmRpcihwYXJlbnRfcGF0aCkpCisgICAgICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKKyAgICAgICAgICAgICAgICBpZiBlbnRyeS5pc19kaXIoKSBhbmQgbm90IGVudHJ5LmlzX3N5bWxpbmsoKToKKyAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgoZW50cnkubmFtZSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXRoLCBpc19kaXIsIHNjYW5kaXIpOgogICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIHdpdGggX2NhY2hlZChsaXN0ZGlyKSBhcyBsaXN0ZGlyOgotICAgICAgICAgICAgICAgIHlpZWxkZWQgPSBzZXQoKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc29yX3NlbGVjdCA9IHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbQotICAgICAgICAgICAgICAgICAgICBmb3Igc3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXJlbnRfcGF0aCwgaXNfZGlyLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHN1Y2Nlc3Nvcl9zZWxlY3Qoc3RhcnRpbmdfcG9pbnQsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBwIG5vdCBpbiB5aWVsZGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkZWQuYWRkKHApCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5jbGVhcigpCisgICAgICAgICAgICB5aWVsZGVkID0gc2V0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdWNjZXNzb3Jfc2VsZWN0ID0gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tCisgICAgICAgICAgICAgICAgZm9yIHN0YXJ0aW5nX3BvaW50IGluIHNlbGYuX2l0ZXJhdGVfZGlyZWN0b3JpZXMocGFyZW50X3BhdGgsIGlzX2Rpciwgc2NhbmRpcik6CisgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHN1Y2Nlc3Nvcl9zZWxlY3Qoc3RhcnRpbmdfcG9pbnQsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkZWQuYWRkKHApCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkZWQuY2xlYXIoKQogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTYzNCwxMyArNjE4LDE2IEBACiAgICAgICAgIGZvciBhIGluIGFyZ3M6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIFB1cmVQYXRoKToKICAgICAgICAgICAgICAgICBwYXJ0cyArPSBhLl9wYXJ0cwotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGEsIHN0cik6Ci0gICAgICAgICAgICAgICAgIyBGb3JjZS1jYXN0IHN0ciBzdWJjbGFzc2VzIHRvIHN0ciAoaXNzdWUgIzIxMTI3KQotICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzdHIoYSkpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIHBhdGggb3Igc3RyIG9iamVjdCwgbm90ICVyIgotICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCisgICAgICAgICAgICAgICAgYSA9IG9zLmZzcGF0aChhKQorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgIyBGb3JjZS1jYXN0IHN0ciBzdWJjbGFzc2VzIHRvIHN0ciAoaXNzdWUgIzIxMTI3KQorICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoc3RyKGEpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgYSBzdHIgb2JqZWN0IG9yIGFuIG9zLlBhdGhMaWtlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgcmV0dXJuaW5nIHN0ciwgbm90ICVyIgorICAgICAgICAgICAgICAgICAgICAgICAgJSB0eXBlKGEpKQogICAgICAgICByZXR1cm4gY2xzLl9mbGF2b3VyLnBhcnNlX3BhcnRzKHBhcnRzKQogCiAgICAgQGNsYXNzbWV0aG9kCkBAIC02OTMsNiArNjgwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFydHMpIG9yICcuJwogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3N0cgogCisgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKwogICAgIGRlZiBhc19wb3NpeChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdGggd2l0aCBmb3J3YXJkICgvKQogICAgICAgICBzbGFzaGVzLiIiIgpAQCAtOTQzLDYgKzkzMywxMCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQogCisjIENhbid0IHN1YmNsYXNzIG9zLlBhdGhMaWtlIGZyb20gUHVyZVBhdGggYW5kIGtlZXAgdGhlIGNvbnN0cnVjdG9yCisjIG9wdGltaXphdGlvbnMgaW4gUHVyZVBhdGguX3BhcnNlX2FyZ3MoKS4KK29zLlBhdGhMaWtlLnJlZ2lzdGVyKFB1cmVQYXRoKQorCiAKIGNsYXNzIFB1cmVQb3NpeFBhdGgoUHVyZVBhdGgpOgogICAgIF9mbGF2b3VyID0gX3Bvc2l4X2ZsYXZvdXIKZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDQ3OTcyNjUuLjk3NjE4YjAgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtNTIsNyArNTIsOCBAQAogZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZCBhdCB0aGUKIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmIGJvdGgKIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZCBhbGlhc2VzCi1kZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLgorZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS4gIFRoaXMgYmVoYXZpb3IgY2FuIGJlCitkaXNhYmxlZCBieSBwYXNzaW5nIHRoZSAicmVhZHJjPUZhbHNlIiBhcmd1bWVudCB0byB0aGUgUGRiIGNvbnN0cnVjdG9yLgogCiBBc2lkZSBmcm9tIGFsaWFzZXMsIHRoZSBkZWJ1Z2dlciBpcyBub3QgZGlyZWN0bHkgcHJvZ3JhbW1hYmxlOyBidXQgaXQKIGlzIGltcGxlbWVudGVkIGFzIGEgY2xhc3MgZnJvbSB3aGljaCB5b3UgY2FuIGRlcml2ZSB5b3VyIG93biBkZWJ1Z2dlcgpAQCAtMTM3LDcgKzEzOCw3IEBACiAgICAgX3ByZXZpb3VzX3NpZ2ludF9oYW5kbGVyID0gTm9uZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLAotICAgICAgICAgICAgICAgICBub3NpZ2ludD1GYWxzZSk6CisgICAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSk6CiAgICAgICAgIGJkYi5CZGIuX19pbml0X18oc2VsZiwgc2tpcD1za2lwKQogICAgICAgICBjbWQuQ21kLl9faW5pdF9fKHNlbGYsIGNvbXBsZXRla2V5LCBzdGRpbiwgc3Rkb3V0KQogICAgICAgICBpZiBzdGRvdXQ6CkBAIC0xNjAsMTggKzE2MSwxOSBAQAogCiAgICAgICAgICMgUmVhZCAkSE9NRS8ucGRicmMgYW5kIC4vLnBkYnJjCiAgICAgICAgIHNlbGYucmNMaW5lcyA9IFtdCi0gICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgZW52SG9tZSA9IG9zLmVudmlyb25bJ0hPTUUnXQorICAgICAgICBpZiByZWFkcmM6CisgICAgICAgICAgICBpZiAnSE9NRScgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBlbnZIb21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGVudkhvbWUsICIucGRicmMiKSkgYXMgcmNGaWxlOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbigiLnBkYnJjIikgYXMgcmNGaWxlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKCIucGRicmMiKSBhcyByY0ZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5yY0xpbmVzLmV4dGVuZChyY0ZpbGUpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHNlbGYuY29tbWFuZHMgPSB7fSAjIGFzc29jaWF0ZXMgYSBjb21tYW5kIGxpc3QgdG8gYnJlYWtwb2ludCBudW1iZXJzCiAgICAgICAgIHNlbGYuY29tbWFuZHNfZG9wcm9tcHQgPSB7fSAjIGZvciBlYWNoIGJwIG51bSwgdGVsbHMgaWYgdGhlIHByb21wdApkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggMDQwZWNiMi4uYzgzNzBjOSAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZS5weQorKysgYi9MaWIvcGlja2xlLnB5CkBAIC0yNyw2ICsyNyw3IEBACiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQogZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKIGltcG9ydCBzeXMKIGZyb20gc3lzIGltcG9ydCBtYXhzaXplCiBmcm9tIHN0cnVjdCBpbXBvcnQgcGFjaywgdW5wYWNrCkBAIC01NDgsNyArNTQ5LDcgQEAKICAgICAgICAgd3JpdGUgPSBzZWxmLndyaXRlCiAKICAgICAgICAgZnVuY19uYW1lID0gZ2V0YXR0cihmdW5jLCAiX19uYW1lX18iLCAiIikKLSAgICAgICAgaWYgc2VsZi5wcm90byA+PSA0IGFuZCBmdW5jX25hbWUgPT0gIl9fbmV3b2JqX2V4X18iOgorICAgICAgICBpZiBzZWxmLnByb3RvID49IDIgYW5kIGZ1bmNfbmFtZSA9PSAiX19uZXdvYmpfZXhfXyI6CiAgICAgICAgICAgICBjbHMsIGFyZ3MsIGt3YXJncyA9IGFyZ3MKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNscywgIl9fbmV3X18iKToKICAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgbm8gX19uZXdfXyIKQEAgLTU1NiwxMCArNTU3LDE2IEBACiAgICAgICAgICAgICBpZiBvYmogaXMgbm90IE5vbmUgYW5kIGNscyBpcyBub3Qgb2JqLl9fY2xhc3NfXzoKICAgICAgICAgICAgICAgICByYWlzZSBQaWNrbGluZ0Vycm9yKCJhcmdzWzBdIGZyb20ge30gYXJncyBoYXMgdGhlIHdyb25nIGNsYXNzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChmdW5jX25hbWUpKQotICAgICAgICAgICAgc2F2ZShjbHMpCi0gICAgICAgICAgICBzYXZlKGFyZ3MpCi0gICAgICAgICAgICBzYXZlKGt3YXJncykKLSAgICAgICAgICAgIHdyaXRlKE5FV09CSl9FWCkKKyAgICAgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gNDoKKyAgICAgICAgICAgICAgICBzYXZlKGNscykKKyAgICAgICAgICAgICAgICBzYXZlKGFyZ3MpCisgICAgICAgICAgICAgICAgc2F2ZShrd2FyZ3MpCisgICAgICAgICAgICAgICAgd3JpdGUoTkVXT0JKX0VYKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmdW5jID0gcGFydGlhbChjbHMuX19uZXdfXywgY2xzLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgc2F2ZShmdW5jKQorICAgICAgICAgICAgICAgIHNhdmUoKCkpCisgICAgICAgICAgICAgICAgd3JpdGUoUkVEVUNFKQogICAgICAgICBlbGlmIHNlbGYucHJvdG8gPj0gMiBhbmQgZnVuY19uYW1lID09ICJfX25ld29ial9fIjoKICAgICAgICAgICAgICMgQSBfX3JlZHVjZV9fIGltcGxlbWVudGF0aW9uIGNhbiBkaXJlY3QgcHJvdG9jb2wgMiBvciBuZXdlciB0bwogICAgICAgICAgICAgIyB1c2UgdGhlIG1vcmUgZWZmaWNpZW50IE5FV09CSiBvcGNvZGUsIHdoaWxlIHN0aWxsCkBAIC0xMDI4LDcgKzEwMzUsNyBAQAogICAgICAgICBzZWxmLl91bmZyYW1lciA9IF9VbmZyYW1lcihzZWxmLl9maWxlX3JlYWQsIHNlbGYuX2ZpbGVfcmVhZGxpbmUpCiAgICAgICAgIHNlbGYucmVhZCA9IHNlbGYuX3VuZnJhbWVyLnJlYWQKICAgICAgICAgc2VsZi5yZWFkbGluZSA9IHNlbGYuX3VuZnJhbWVyLnJlYWRsaW5lCi0gICAgICAgIHNlbGYubWFyayA9IG9iamVjdCgpICMgYW55IG5ldyB1bmlxdWUgb2JqZWN0CisgICAgICAgIHNlbGYubWV0YXN0YWNrID0gW10KICAgICAgICAgc2VsZi5zdGFjayA9IFtdCiAgICAgICAgIHNlbGYuYXBwZW5kID0gc2VsZi5zdGFjay5hcHBlbmQKICAgICAgICAgc2VsZi5wcm90byA9IDAKQEAgLTEwNDQsMjAgKzEwNTEsMTIgQEAKICAgICAgICAgZXhjZXB0IF9TdG9wIGFzIHN0b3BpbnN0OgogICAgICAgICAgICAgcmV0dXJuIHN0b3BpbnN0LnZhbHVlCiAKLSAgICAjIFJldHVybiBsYXJnZXN0IGluZGV4IGsgc3VjaCB0aGF0IHNlbGYuc3RhY2tba10gaXMgc2VsZi5tYXJrLgotICAgICMgSWYgdGhlIHN0YWNrIGRvZXNuJ3QgY29udGFpbiBhIG1hcmssIGV2ZW50dWFsbHkgcmFpc2VzIEluZGV4RXJyb3IuCi0gICAgIyBUaGlzIGNvdWxkIGJlIHNwZWQgYnkgbWFpbnRhaW5pbmcgYW5vdGhlciBzdGFjaywgb2YgaW5kaWNlcyBhdCB3aGljaAotICAgICMgdGhlIG1hcmsgYXBwZWFycy4gIEZvciB0aGF0IG1hdHRlciwgdGhlIGxhdHRlciBzdGFjayB3b3VsZCBzdWZmaWNlLAotICAgICMgYW5kIHdlIHdvdWxkbid0IG5lZWQgdG8gcHVzaCBtYXJrIG9iamVjdHMgb24gc2VsZi5zdGFjayBhdCBhbGwuCi0gICAgIyBEb2luZyBzbyBpcyBwcm9iYWJseSBhIGdvb2QgdGhpbmcsIHRob3VnaCwgc2luY2UgaWYgdGhlIHBpY2tsZSBpcwotICAgICMgY29ycnVwdCAob3IgaG9zdGlsZSkgd2UgbWF5IGdldCBhIGNsdWUgZnJvbSBmaW5kaW5nIHNlbGYubWFyayBlbWJlZGRlZAotICAgICMgaW4gdW5waWNrbGVkIG9iamVjdHMuCi0gICAgZGVmIG1hcmtlcihzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmsKLSAgICAgICAgayA9IGxlbihzdGFjayktMQotICAgICAgICB3aGlsZSBzdGFja1trXSBpcyBub3QgbWFyazogayA9IGstMQotICAgICAgICByZXR1cm4gaworICAgICMgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcyBwdXNoZWQgaW4gdGhlIHN0YWNrIGFmdGVyIGxhc3QgTUFSSyBpbnN0cnVjdGlvbi4KKyAgICBkZWYgcG9wX21hcmsoc2VsZik6CisgICAgICAgIGl0ZW1zID0gc2VsZi5zdGFjaworICAgICAgICBzZWxmLnN0YWNrID0gc2VsZi5tZXRhc3RhY2sucG9wKCkKKyAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAorICAgICAgICByZXR1cm4gaXRlbXMKIAogICAgIGRlZiBwZXJzaXN0ZW50X2xvYWQoc2VsZiwgcGlkKToKICAgICAgICAgcmFpc2UgVW5waWNrbGluZ0Vycm9yKCJ1bnN1cHBvcnRlZCBwZXJzaXN0ZW50IGlkIGVuY291bnRlcmVkIikKQEAgLTEyMzgsOCArMTIzNyw4IEBACiAgICAgZGlzcGF0Y2hbU0hPUlRfQklOVU5JQ09ERVswXV0gPSBsb2FkX3Nob3J0X2JpbnVuaWNvZGUKIAogICAgIGRlZiBsb2FkX3R1cGxlKHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFt0dXBsZShzZWxmLnN0YWNrW2srMTpdKV0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgc2VsZi5hcHBlbmQodHVwbGUoaXRlbXMpKQogICAgIGRpc3BhdGNoW1RVUExFWzBdXSA9IGxvYWRfdHVwbGUKIAogICAgIGRlZiBsb2FkX2VtcHR5X3R1cGxlKHNlbGYpOgpAQCAtMTI3MSwyMSArMTI3MCwyMCBAQAogICAgIGRpc3BhdGNoW0VNUFRZX1NFVFswXV0gPSBsb2FkX2VtcHR5X3NldAogCiAgICAgZGVmIGxvYWRfZnJvemVuc2V0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtmcm96ZW5zZXQoc2VsZi5zdGFja1trKzE6XSldCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNlbGYuYXBwZW5kKGZyb3plbnNldChpdGVtcykpCiAgICAgZGlzcGF0Y2hbRlJPWkVOU0VUWzBdXSA9IGxvYWRfZnJvemVuc2V0CiAKICAgICBkZWYgbG9hZF9saXN0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtzZWxmLnN0YWNrW2srMTpdXQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBzZWxmLmFwcGVuZChpdGVtcykKICAgICBkaXNwYXRjaFtMSVNUWzBdXSA9IGxvYWRfbGlzdAogCiAgICAgZGVmIGxvYWRfZGljdChzZWxmKToKLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgaXRlbXMgPSBzZWxmLnN0YWNrW2srMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCiAgICAgICAgIGQgPSB7aXRlbXNbaV06IGl0ZW1zW2krMV0KICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oaXRlbXMpLCAyKX0KLSAgICAgICAgc2VsZi5zdGFja1trOl0gPSBbZF0KKyAgICAgICAgc2VsZi5hcHBlbmQoZCkKICAgICBkaXNwYXRjaFtESUNUWzBdXSA9IGxvYWRfZGljdAogCiAgICAgIyBJTlNUIGFuZCBPQkogZGlmZmVyIG9ubHkgaW4gaG93IHRoZXkgZ2V0IGEgY2xhc3Mgb2JqZWN0LiAgSXQncyBub3QKQEAgLTEyOTMsOSArMTI5MSw3IEBACiAgICAgIyBwcmV2aW91c2x5IGRpdmVyZ2VkIGFuZCBncmV3IGRpZmZlcmVudCBidWdzLgogICAgICMga2xhc3MgaXMgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlLCBhbmQgayBwb2ludHMgdG8gdGhlIHRvcG1vc3QgbWFyawogICAgICMgb2JqZWN0LCBmb2xsb3dpbmcgd2hpY2ggYXJlIHRoZSBhcmd1bWVudHMgZm9yIGtsYXNzLl9faW5pdF9fLgotICAgIGRlZiBfaW5zdGFudGlhdGUoc2VsZiwga2xhc3MsIGspOgotICAgICAgICBhcmdzID0gdHVwbGUoc2VsZi5zdGFja1trKzE6XSkKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbazpdCisgICAgZGVmIF9pbnN0YW50aWF0ZShzZWxmLCBrbGFzcywgYXJncyk6CiAgICAgICAgIGlmIChhcmdzIG9yIG5vdCBpc2luc3RhbmNlKGtsYXNzLCB0eXBlKSBvcgogICAgICAgICAgICAgaGFzYXR0cihrbGFzcywgIl9fZ2V0aW5pdGFyZ3NfXyIpKToKICAgICAgICAgICAgIHRyeToKQEAgLTEzMTEsMTQgKzEzMDcsMTQgQEAKICAgICAgICAgbW9kdWxlID0gc2VsZi5yZWFkbGluZSgpWzotMV0uZGVjb2RlKCJhc2NpaSIpCiAgICAgICAgIG5hbWUgPSBzZWxmLnJlYWRsaW5lKClbOi0xXS5kZWNvZGUoImFzY2lpIikKICAgICAgICAga2xhc3MgPSBzZWxmLmZpbmRfY2xhc3MobW9kdWxlLCBuYW1lKQotICAgICAgICBzZWxmLl9pbnN0YW50aWF0ZShrbGFzcywgc2VsZi5tYXJrZXIoKSkKKyAgICAgICAgc2VsZi5faW5zdGFudGlhdGUoa2xhc3MsIHNlbGYucG9wX21hcmsoKSkKICAgICBkaXNwYXRjaFtJTlNUWzBdXSA9IGxvYWRfaW5zdAogCiAgICAgZGVmIGxvYWRfb2JqKHNlbGYpOgogICAgICAgICAjIFN0YWNrIGlzIC4uLiBtYXJrb2JqZWN0IGNsYXNzb2JqZWN0IGFyZzEgYXJnMiAuLi4KLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAga2xhc3MgPSBzZWxmLnN0YWNrLnBvcChrKzEpCi0gICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGtsYXNzLCBrKQorICAgICAgICBhcmdzID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGNscyA9IGFyZ3MucG9wKDApCisgICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGNscywgYXJncykKICAgICBkaXNwYXRjaFtPQkpbMF1dID0gbG9hZF9vYmoKIAogICAgIGRlZiBsb2FkX25ld29iaihzZWxmKToKQEAgLTE0MDMsMTIgKzEzOTksMTQgQEAKICAgICBkaXNwYXRjaFtSRURVQ0VbMF1dID0gbG9hZF9yZWR1Y2UKIAogICAgIGRlZiBsb2FkX3BvcChzZWxmKToKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGlmIHNlbGYuc3RhY2s6CisgICAgICAgICAgICBkZWwgc2VsZi5zdGFja1stMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucG9wX21hcmsoKQogICAgIGRpc3BhdGNoW1BPUFswXV0gPSBsb2FkX3BvcAogCiAgICAgZGVmIGxvYWRfcG9wX21hcmsoc2VsZik6Ci0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIGRlbCBzZWxmLnN0YWNrW2s6XQorICAgICAgICBzZWxmLnBvcF9tYXJrKCkKICAgICBkaXNwYXRjaFtQT1BfTUFSS1swXV0gPSBsb2FkX3BvcF9tYXJrCiAKICAgICBkZWYgbG9hZF9kdXAoc2VsZik6CkBAIC0xNDY0LDE3ICsxNDYyLDE0IEBACiAgICAgZGlzcGF0Y2hbQVBQRU5EWzBdXSA9IGxvYWRfYXBwZW5kCiAKICAgICBkZWYgbG9hZF9hcHBlbmRzKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgbGlzdF9vYmogPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgaXRlbXMgPSBzdGFja1ttYXJrICsgMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIGxpc3Rfb2JqID0gc2VsZi5zdGFja1stMV0KICAgICAgICAgaWYgaXNpbnN0YW5jZShsaXN0X29iaiwgbGlzdCk6CiAgICAgICAgICAgICBsaXN0X29iai5leHRlbmQoaXRlbXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcHBlbmQgPSBsaXN0X29iai5hcHBlbmQKICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAgICAgICAgICAgICAgIGFwcGVuZChpdGVtKQotICAgICAgICBkZWwgc3RhY2tbbWFyazpdCiAgICAgZGlzcGF0Y2hbQVBQRU5EU1swXV0gPSBsb2FkX2FwcGVuZHMKIAogICAgIGRlZiBsb2FkX3NldGl0ZW0oc2VsZik6CkBAIC0xNDg2LDI3ICsxNDgxLDIxIEBACiAgICAgZGlzcGF0Y2hbU0VUSVRFTVswXV0gPSBsb2FkX3NldGl0ZW0KIAogICAgIGRlZiBsb2FkX3NldGl0ZW1zKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgZGljdCA9IHN0YWNrW21hcmsgLSAxXQotICAgICAgICBmb3IgaSBpbiByYW5nZShtYXJrICsgMSwgbGVuKHN0YWNrKSwgMik6Ci0gICAgICAgICAgICBkaWN0W3N0YWNrW2ldXSA9IHN0YWNrW2kgKyAxXQotCi0gICAgICAgIGRlbCBzdGFja1ttYXJrOl0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgZGljdCA9IHNlbGYuc3RhY2tbLTFdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihpdGVtcyksIDIpOgorICAgICAgICAgICAgZGljdFtpdGVtc1tpXV0gPSBpdGVtc1tpICsgMV0KICAgICBkaXNwYXRjaFtTRVRJVEVNU1swXV0gPSBsb2FkX3NldGl0ZW1zCiAKICAgICBkZWYgbG9hZF9hZGRpdGVtcyhzZWxmKToKLSAgICAgICAgc3RhY2sgPSBzZWxmLnN0YWNrCi0gICAgICAgIG1hcmsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIHNldF9vYmogPSBzdGFja1ttYXJrIC0gMV0KLSAgICAgICAgaXRlbXMgPSBzdGFja1ttYXJrICsgMTpdCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNldF9vYmogPSBzZWxmLnN0YWNrWy0xXQogICAgICAgICBpZiBpc2luc3RhbmNlKHNldF9vYmosIHNldCk6CiAgICAgICAgICAgICBzZXRfb2JqLnVwZGF0ZShpdGVtcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFkZCA9IHNldF9vYmouYWRkCiAgICAgICAgICAgICBmb3IgaXRlbSBpbiBpdGVtczoKICAgICAgICAgICAgICAgICBhZGQoaXRlbSkKLSAgICAgICAgZGVsIHN0YWNrW21hcms6XQogICAgIGRpc3BhdGNoW0FERElURU1TWzBdXSA9IGxvYWRfYWRkaXRlbXMKIAogICAgIGRlZiBsb2FkX2J1aWxkKHNlbGYpOgpAQCAtMTUzNCw3ICsxNTIzLDkgQEAKICAgICBkaXNwYXRjaFtCVUlMRFswXV0gPSBsb2FkX2J1aWxkCiAKICAgICBkZWYgbG9hZF9tYXJrKHNlbGYpOgotICAgICAgICBzZWxmLmFwcGVuZChzZWxmLm1hcmspCisgICAgICAgIHNlbGYubWV0YXN0YWNrLmFwcGVuZChzZWxmLnN0YWNrKQorICAgICAgICBzZWxmLnN0YWNrID0gW10KKyAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAogICAgIGRpc3BhdGNoW01BUktbMF1dID0gbG9hZF9tYXJrCiAKICAgICBkZWYgbG9hZF9zdG9wKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZXRvb2xzLnB5IGIvTGliL3BpY2tsZXRvb2xzLnB5CmluZGV4IDE2YWU3ZDUuLjVlMTI5YjUgMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGV0b29scy5weQorKysgYi9MaWIvcGlja2xldG9vbHMucHkKQEAgLTcwNyw3ICs3MDcsNyBAQAogICAgID4+PiBlbmMgPSBzLmVuY29kZSgndXRmLTgnKQogICAgID4+PiBlbmMKICAgICBiJ2FiY2RceGVhXHhhZlx4OGQnCi0gICAgPj4+IG4gPSBieXRlcyhbbGVuKGVuYyldKSArIGJ5dGVzKDcpICAjIGxpdHRsZS1lbmRpYW4gOC1ieXRlIGxlbmd0aAorICAgID4+PiBuID0gYnl0ZXMoW2xlbihlbmMpXSkgKyBiJ1wwJyAqIDcgICMgbGl0dGxlLWVuZGlhbiA4LWJ5dGUgbGVuZ3RoCiAgICAgPj4+IHQgPSByZWFkX3VuaWNvZGVzdHJpbmc4KGlvLkJ5dGVzSU8obiArIGVuYyArIGInanVuaycpKQogICAgID4+PiBzID09IHQKICAgICBUcnVlCkBAIC0yNDQwLDYgKzI0NDAsNyBAQAogICAgICAgICBpZiBvcGNvZGUubmFtZSBpbiAoIlBVVCIsICJCSU5QVVQiLCAiTE9OR19CSU5QVVQiLCAiTUVNT0laRSIpOgogICAgICAgICAgICAgaWYgb3Bjb2RlLm5hbWUgPT0gIk1FTU9JWkUiOgogICAgICAgICAgICAgICAgIG1lbW9faWR4ID0gbGVuKG1lbW8pCisgICAgICAgICAgICAgICAgbWFya21zZyA9ICIoYXMgJWQpIiAlIG1lbW9faWR4CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFzc2VydCBhcmcgaXMgbm90IE5vbmUKICAgICAgICAgICAgICAgICBtZW1vX2lkeCA9IGFyZwpkaWZmIC0tZ2l0IGEvTGliL3BrZ3V0aWwucHkgYi9MaWIvcGtndXRpbC5weQppbmRleCA4MWQ0MThkLi5lMzdhZDQ1IDEwMDY0NAotLS0gYS9MaWIvcGtndXRpbC5weQorKysgYi9MaWIvcGtndXRpbC5weQpAQCAtMSw1ICsxLDYgQEAKICIiIlV0aWxpdGllcyB0byBzdXBwb3J0IHBhY2thZ2VzLiIiIgogCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgc2luZ2xlZGlzcGF0Y2ggYXMgc2ltcGxlZ2VuZXJpYwogaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IGltcG9ydGxpYi51dGlsCkBAIC0xNCw5ICsxNSwxNCBAQAogICAgICdnZXRfaW1wb3J0ZXInLCAnaXRlcl9pbXBvcnRlcnMnLCAnZ2V0X2xvYWRlcicsICdmaW5kX2xvYWRlcicsCiAgICAgJ3dhbGtfcGFja2FnZXMnLCAnaXRlcl9tb2R1bGVzJywgJ2dldF9kYXRhJywKICAgICAnSW1wSW1wb3J0ZXInLCAnSW1wTG9hZGVyJywgJ3JlYWRfY29kZScsICdleHRlbmRfcGF0aCcsCisgICAgJ01vZHVsZUluZm8nLAogXQogCiAKK01vZHVsZUluZm8gPSBuYW1lZHR1cGxlKCdNb2R1bGVJbmZvJywgJ21vZHVsZV9maW5kZXIgbmFtZSBpc3BrZycpCitNb2R1bGVJbmZvLl9fZG9jX18gPSAnQSBuYW1lZHR1cGxlIHdpdGggbWluaW1hbCBpbmZvIGFib3V0IGEgbW9kdWxlLicKKworCiBkZWYgX2dldF9zcGVjKGZpbmRlciwgbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRoZSBmaW5kZXItc3BlY2lmaWMgbW9kdWxlIHNwZWMuIiIiCiAgICAgIyBXb3JrcyB3aXRoIGxlZ2FjeSBmaW5kZXJzLgpAQCAtNDUsNyArNTEsNyBAQAogCiAKIGRlZiB3YWxrX3BhY2thZ2VzKHBhdGg9Tm9uZSwgcHJlZml4PScnLCBvbmVycm9yPU5vbmUpOgotICAgICIiIllpZWxkcyAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseQorICAgICIiIllpZWxkcyBNb2R1bGVJbmZvIGZvciBhbGwgbW9kdWxlcyByZWN1cnNpdmVseQogICAgIG9uIHBhdGgsIG9yLCBpZiBwYXRoIGlzIE5vbmUsIGFsbCBhY2Nlc3NpYmxlIG1vZHVsZXMuCiAKICAgICAncGF0aCcgc2hvdWxkIGJlIGVpdGhlciBOb25lIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvcgpAQCAtNzgsMzEgKzg0LDMxIEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICBtW3BdID0gVHJ1ZQogCi0gICAgZm9yIGltcG9ydGVyLCBuYW1lLCBpc3BrZyBpbiBpdGVyX21vZHVsZXMocGF0aCwgcHJlZml4KToKLSAgICAgICAgeWllbGQgaW1wb3J0ZXIsIG5hbWUsIGlzcGtnCisgICAgZm9yIGluZm8gaW4gaXRlcl9tb2R1bGVzKHBhdGgsIHByZWZpeCk6CisgICAgICAgIHlpZWxkIGluZm8KIAotICAgICAgICBpZiBpc3BrZzoKKyAgICAgICAgaWYgaW5mby5pc3BrZzoKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICAgICAgX19pbXBvcnRfXyhpbmZvLm5hbWUpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb25lcnJvcihuYW1lKQorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgb25lcnJvcihuYW1lKQorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKGluZm8ubmFtZSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1tuYW1lXSwgJ19fcGF0aF9fJywgTm9uZSkgb3IgW10KKyAgICAgICAgICAgICAgICBwYXRoID0gZ2V0YXR0cihzeXMubW9kdWxlc1tpbmZvLm5hbWVdLCAnX19wYXRoX18nLCBOb25lKSBvciBbXQogCiAgICAgICAgICAgICAgICAgIyBkb24ndCB0cmF2ZXJzZSBwYXRoIGl0ZW1zIHdlJ3ZlIHNlZW4gYmVmb3JlCiAgICAgICAgICAgICAgICAgcGF0aCA9IFtwIGZvciBwIGluIHBhdGggaWYgbm90IHNlZW4ocCldCiAKLSAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGtfcGFja2FnZXMocGF0aCwgbmFtZSsnLicsIG9uZXJyb3IpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrX3BhY2thZ2VzKHBhdGgsIGluZm8ubmFtZSsnLicsIG9uZXJyb3IpCiAKIAogZGVmIGl0ZXJfbW9kdWxlcyhwYXRoPU5vbmUsIHByZWZpeD0nJyk6Ci0gICAgIiIiWWllbGRzIChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykgZm9yIGFsbCBzdWJtb2R1bGVzIG9uIHBhdGgsCisgICAgIiIiWWllbGRzIE1vZHVsZUluZm8gZm9yIGFsbCBzdWJtb2R1bGVzIG9uIHBhdGgsCiAgICAgb3IsIGlmIHBhdGggaXMgTm9uZSwgYWxsIHRvcC1sZXZlbCBtb2R1bGVzIG9uIHN5cy5wYXRoLgogCiAgICAgJ3BhdGgnIHNob3VsZCBiZSBlaXRoZXIgTm9uZSBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IKQEAgLTExMSw3ICsxMTcsNiBAQAogICAgICdwcmVmaXgnIGlzIGEgc3RyaW5nIHRvIG91dHB1dCBvbiB0aGUgZnJvbnQgb2YgZXZlcnkgbW9kdWxlIG5hbWUKICAgICBvbiBvdXRwdXQuCiAgICAgIiIiCi0KICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgIGltcG9ydGVycyA9IGl0ZXJfaW1wb3J0ZXJzKCkKICAgICBlbHNlOgpAQCAtMTIyLDcgKzEyNyw3IEBACiAgICAgICAgIGZvciBuYW1lLCBpc3BrZyBpbiBpdGVyX2ltcG9ydGVyX21vZHVsZXMoaSwgcHJlZml4KToKICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHlpZWxkZWQ6CiAgICAgICAgICAgICAgICAgeWllbGRlZFtuYW1lXSA9IDEKLSAgICAgICAgICAgICAgICB5aWVsZCBpLCBuYW1lLCBpc3BrZworICAgICAgICAgICAgICAgIHlpZWxkIE1vZHVsZUluZm8oaSwgbmFtZSwgaXNwa2cpCiAKIAogQHNpbXBsZWdlbmVyaWMKQEAgLTE4MCw3ICsxODUsNyBAQAogZGVmIF9pbXBvcnRfaW1wKCk6CiAgICAgZ2xvYmFsIGltcAogICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgaW1wID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2ltcCcpCiAKIGNsYXNzIEltcEltcG9ydGVyOgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtYWl4NC9JTi5weSBiL0xpYi9wbGF0LWFpeDQvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZjhmMjMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtYWl4NC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gbmV0L25oLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoaW5lLmgKLUxJVFRMRV9FTkRJQU4gPSAxMjM0Ci1CSUdfRU5ESUFOID0gNDMyMQotUERQX0VORElBTiA9IDM0MTIKLUJZVEVfT1JERVIgPSBCSUdfRU5ESUFOCi1ERUZBVUxUX0dQUiA9IDB4REVBREJFRUYKLU1TUl9FRSA9IDB4ODAwMAotTVNSX1BSID0gMHg0MDAwCi1NU1JfRlAgPSAweDIwMDAKLU1TUl9NRSA9IDB4MTAwMAotTVNSX0ZFID0gMHgwODAwCi1NU1JfRkUwID0gMHgwODAwCi1NU1JfU0UgPSAweDA0MDAKLU1TUl9CRSA9IDB4MDIwMAotTVNSX0lFID0gMHgwMTAwCi1NU1JfRkUxID0gMHgwMTAwCi1NU1JfQUwgPSAweDAwODAKLU1TUl9JUCA9IDB4MDA0MAotTVNSX0lSID0gMHgwMDIwCi1NU1JfRFIgPSAweDAwMTAKLU1TUl9QTSA9IDB4MDAwNAotREVGQVVMVF9NU1IgPSAoTVNSX0VFIHwgTVNSX01FIHwgTVNSX0FMIHwgTVNSX0lSIHwgTVNSX0RSKQotREVGQVVMVF9VU0VSX01TUiA9IChERUZBVUxUX01TUiB8IE1TUl9QUikKLUNSX0xUID0gMHg4MDAwMDAwMAotQ1JfR1QgPSAweDQwMDAwMDAwCi1DUl9FUSA9IDB4MjAwMDAwMDAKLUNSX1NPID0gMHgxMDAwMDAwMAotQ1JfRlggPSAweDA4MDAwMDAwCi1DUl9GRVggPSAweDA0MDAwMDAwCi1DUl9WWCA9IDB4MDIwMDAwMDAKLUNSX09YID0gMHgwMTAwMDAwMAotWEVSX1NPID0gMHg4MDAwMDAwMAotWEVSX09WID0gMHg0MDAwMDAwMAotWEVSX0NBID0gMHgyMDAwMDAwMAotZGVmIFhFUl9DT01QX0JZVEUoeGVyKTogcmV0dXJuICgoeGVyID4+IDgpICYgMHgwMDAwMDBGRikKLQotZGVmIFhFUl9MRU5HVEgoeGVyKTogcmV0dXJuICh4ZXIgJiAweDAwMDAwMDdGKQotCi1EU0lTUl9JTyA9IDB4ODAwMDAwMDAKLURTSVNSX1BGVCA9IDB4NDAwMDAwMDAKLURTSVNSX0xPQ0sgPSAweDIwMDAwMDAwCi1EU0lTUl9GUElPID0gMHgxMDAwMDAwMAotRFNJU1JfUFJPVCA9IDB4MDgwMDAwMDAKLURTSVNSX0xPT1AgPSAweDA0MDAwMDAwCi1EU0lTUl9EUlNUID0gMHgwNDAwMDAwMAotRFNJU1JfU1QgPSAweDAyMDAwMDAwCi1EU0lTUl9TRUdCID0gMHgwMTAwMDAwMAotRFNJU1JfREFCUiA9IDB4MDA0MDAwMDAKLURTSVNSX0VBUiA9IDB4MDAxMDAwMDAKLVNSUl9JU19QRlQgPSAweDQwMDAwMDAwCi1TUlJfSVNfSVNQRUMgPSAweDIwMDAwMDAwCi1TUlJfSVNfSUlPID0gMHgxMDAwMDAwMAotU1JSX0lTX0dVQVJEID0gMHgxMDAwMDAwMAotU1JSX0lTX1BST1QgPSAweDA4MDAwMDAwCi1TUlJfSVNfTE9PUCA9IDB4MDQwMDAwMDAKLVNSUl9QUl9GUEVOID0gMHgwMDEwMDAwMAotU1JSX1BSX0lOVkFMID0gMHgwMDA4MDAwMAotU1JSX1BSX1BSSVYgPSAweDAwMDQwMDAwCi1TUlJfUFJfVFJBUCA9IDB4MDAwMjAwMDAKLVNSUl9QUl9JTVBSRSA9IDB4MDAwMTAwMDAKLWRlZiBCVUlEXzdGX1NSVkFMKHJhZGRyKTogcmV0dXJuICgweDg3RjAwMDAwIHwgKCgodWludCkocmFkZHIpKSA+PiAyOCkpCi0KLUJUXzI1Nk0gPSAweDFGRkMKLUJUXzEyOE0gPSAweDBGRkMKLUJUXzY0TSA9IDB4MDdGQwotQlRfMzJNID0gMHgwM0ZDCi1CVF8xNk0gPSAweDAxRkMKLUJUXzhNID0gMHgwMEZDCi1CVF80TSA9IDB4MDA3QwotQlRfMk0gPSAweDAwM0MKLUJUXzFNID0gMHgwMDFDCi1CVF81MTJLID0gMHgwMDBDCi1CVF8yNTZLID0gMHgwMDA0Ci1CVF8xMjhLID0gMHgwMDAwCi1CVF9OT0FDQ0VTUyA9IDB4MAotQlRfUkRPTkxZID0gMHgxCi1CVF9XUklURSA9IDB4MgotQlRfVlMgPSAweDIKLUJUX1ZQID0gMHgxCi1kZWYgQkFUX0VTRUcoZGJhdHUpOiByZXR1cm4gKCgodWludCkoZGJhdHUpID4+IDI4KSkKLQotTUlOX0JBVF9TSVpFID0gMHgwMDAyMDAwMAotTUFYX0JBVF9TSVpFID0gMHgxMDAwMDAwMAotZGVmIG50b2hsKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gKHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fTE9DQUwgPSA2MwotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19CSVAgPSAweDUzCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9NQVhfTE9DQUxfR1JPVVAgPSAweGUwMDAwMGZmCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZTAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfQU5ZID0gMHgwMDAwMDAwMAotSU5BRERSX0JST0FEQ0FTVCA9IDB4ZmZmZmZmZmYKLUlOQUREUl9MT09QQkFDSyA9IDB4N2YwMDAwMDEKLUlOQUREUl9OT05FID0gMHhmZmZmZmZmZgotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtYWl4NC9yZWdlbiBiL0xpYi9wbGF0LWFpeDQvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDU3YTcxYzQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtYWl4NC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXN2YCBpbgotJ0FJWCA0JyopICA7OwotKikgICAgICBlY2hvIFByb2JhYmx5IG5vdCBvbiBhbiBBSVggNCBzeXN0ZW0gMT4mMgotICAgICAgICBleGl0IDE7OwotZXNhYwotc2V0IC12Ci1oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZGFyd2luL0lOLnB5IGIvTGliL3BsYXQtZGFyd2luL0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjZiZTMzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWRhcndpbi9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2MiArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2FwcGxlYXBpb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiBwcm90b3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHgpOiByZXR1cm4KLQotZGVmIF9fQ09QWVJJR0hUKHMpOiByZXR1cm4gX19JRFNUUklORyhjb3B5cmlnaHQscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKHJjc2lkLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoc2Njc2lkLHMpCi0KLWRlZiBfX1BST0pFQ1RfVkVSU0lPTihzKTogcmV0dXJuIF9fSURTVFJJTkcocHJvamVjdF92ZXJzaW9uLHMpCi0KLV9fREFSV0lOX1VOSVgwMyA9IDEKLV9fREFSV0lOX1VOSVgwMyA9IDAKLV9fREFSV0lOX1VOSVgwMyA9IDAKLV9fREFSV0lOX1VOSVgwMyA9IDEKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDEKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDAKLV9fREFSV0lOXzY0X0JJVF9JTk9fVCA9IDAKLV9fREFSV0lOX05PTl9DQU5DRUxBQkxFID0gMAotX19EQVJXSU5fVkVSU18xMDUwID0gMQotX19EQVJXSU5fVkVSU18xMDUwID0gMAotX19EQVJXSU5fU1VGX1VOSVgwMyA9ICIkVU5JWDIwMDMiCi1fX0RBUldJTl9TVUZfVU5JWDAzX1NFVCA9IDEKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMAotX19EQVJXSU5fU1VGXzY0X0JJVF9JTk9fVCA9ICIkSU5PREU2NCIKLV9fREFSV0lOX1NVRl9OT05fQ0FOQ0VMQUJMRSA9ICIkTk9DQU5DRUwiCi1fX0RBUldJTl9TVUZfMTA1MCA9ICIkMTA1MCIKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMAotX19EQVJXSU5fU1VGX0VYVFNOID0gIiREQVJXSU5fRVhUU04iCi1fX0RBUldJTl9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAwCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQoeCk6IHJldHVybgotCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQyKHgpOiByZXR1cm4KLQotX19EQVJXSU5fTE9OR19ET1VCTEVfSVNfRE9VQkxFID0gMQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUKHgpOiByZXR1cm4KLQotZGVmIF9fREFSV0lOX0xEQkxfQ09NUEFUMih4KTogcmV0dXJuCi0KLV9fREFSV0lOX0xPTkdfRE9VQkxFX0lTX0RPVUJMRSA9IDAKLV9EQVJXSU5fRkVBVFVSRV9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAxCi1fREFSV0lOX0ZFQVRVUkVfVU5JWF9DT05GT1JNQU5DRSA9IDMKLV9EQVJXSU5fRkVBVFVSRV82NF9CSVRfSU5PREUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL190eXBlcy5oCi1fX1BUSFJFQURfU0laRV9fID0gMTE2OAotX19QVEhSRUFEX0FUVFJfU0laRV9fID0gNTYKLV9fUFRIUkVBRF9NVVRFWEFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX01VVEVYX1NJWkVfXyA9IDU2Ci1fX1BUSFJFQURfQ09OREFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX0NPTkRfU0laRV9fID0gNDAKLV9fUFRIUkVBRF9PTkNFX1NJWkVfXyA9IDgKLV9fUFRIUkVBRF9SV0xPQ0tfU0laRV9fID0gMTkyCi1fX1BUSFJFQURfUldMT0NLQVRUUl9TSVpFX18gPSAxNgotX19QVEhSRUFEX1NJWkVfXyA9IDU5NgotX19QVEhSRUFEX0FUVFJfU0laRV9fID0gMzYKLV9fUFRIUkVBRF9NVVRFWEFUVFJfU0laRV9fID0gOAotX19QVEhSRUFEX01VVEVYX1NJWkVfXyA9IDQwCi1fX1BUSFJFQURfQ09OREFUVFJfU0laRV9fID0gNAotX19QVEhSRUFEX0NPTkRfU0laRV9fID0gMjQKLV9fUFRIUkVBRF9PTkNFX1NJWkVfXyA9IDQKLV9fUFRIUkVBRF9SV0xPQ0tfU0laRV9fID0gMTI0Ci1fX1BUSFJFQURfUldMT0NLQVRUUl9TSVpFX18gPSAxMgotX19EQVJXSU5fTlVMTCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIHN0ZGludC5oCi1fX1dPUkRTSVpFID0gNjQKLV9fV09SRFNJWkUgPSAzMgotSU5UOF9NQVggPSAxMjcKLUlOVDE2X01BWCA9IDMyNzY3Ci1JTlQzMl9NQVggPSAyMTQ3NDgzNjQ3Ci1JTlQ4X01JTiA9IC0xMjgKLUlOVDE2X01JTiA9IC0zMjc2OAotSU5UMzJfTUlOID0gKC1JTlQzMl9NQVgtMSkKLVVJTlQ4X01BWCA9IDI1NQotVUlOVDE2X01BWCA9IDY1NTM1Ci1JTlRfTEVBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfTEVBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9MRUFTVDMyX01JTiA9IElOVDMyX01JTgotSU5UX0xFQVNUOF9NQVggPSBJTlQ4X01BWAotSU5UX0xFQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfTEVBU1QzMl9NQVggPSBJTlQzMl9NQVgKLVVJTlRfTEVBU1Q4X01BWCA9IFVJTlQ4X01BWAotVUlOVF9MRUFTVDE2X01BWCA9IFVJTlQxNl9NQVgKLUlOVF9GQVNUOF9NSU4gPSBJTlQ4X01JTgotSU5UX0ZBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9GQVNUMzJfTUlOID0gSU5UMzJfTUlOCi1JTlRfRkFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9GQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfRkFTVDMyX01BWCA9IElOVDMyX01BWAotVUlOVF9GQVNUOF9NQVggPSBVSU5UOF9NQVgKLVVJTlRfRkFTVDE2X01BWCA9IFVJTlQxNl9NQVgKLUlOVFBUUl9NSU4gPSBJTlQzMl9NSU4KLUlOVFBUUl9NQVggPSBJTlQzMl9NQVgKLVBUUkRJRkZfTUlOID0gSU5UMzJfTUlOCi1QVFJESUZGX01BWCA9IElOVDMyX01BWAotV0NIQVJfTUFYID0gMHg3ZmZmZmZmZgotV0NIQVJfTUlOID0gMAotV0NIQVJfTUlOID0gKC1XQ0hBUl9NQVgtMSkKLVdJTlRfTUlOID0gSU5UMzJfTUlOCi1XSU5UX01BWCA9IElOVDMyX01BWAotU0lHX0FUT01JQ19NSU4gPSBJTlQzMl9NSU4KLVNJR19BVE9NSUNfTUFYID0gSU5UMzJfTUFYCi1kZWYgSU5UOF9DKHYpOiByZXR1cm4gKHYpCi0KLWRlZiBJTlQxNl9DKHYpOiByZXR1cm4gKHYpCi0KLWRlZiBJTlQzMl9DKHYpOiByZXR1cm4gKHYpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zb2NrZXQuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fcGFyYW0uaAotU09DS19TVFJFQU0gPSAxCi1TT0NLX0RHUkFNID0gMgotU09DS19SQVcgPSAzCi1TT0NLX1JETSA9IDQKLVNPQ0tfU0VRUEFDS0VUID0gNQotU09fREVCVUcgPSAweDAwMDEKLVNPX0FDQ0VQVENPTk4gPSAweDAwMDIKLVNPX1JFVVNFQUREUiA9IDB4MDAwNAotU09fS0VFUEFMSVZFID0gMHgwMDA4Ci1TT19ET05UUk9VVEUgPSAweDAwMTAKLVNPX0JST0FEQ0FTVCA9IDB4MDAyMAotU09fVVNFTE9PUEJBQ0sgPSAweDAwNDAKLVNPX0xJTkdFUiA9IDB4MDA4MAotU09fTElOR0VSID0gMHgxMDgwCi1TT19PT0JJTkxJTkUgPSAweDAxMDAKLVNPX1JFVVNFUE9SVCA9IDB4MDIwMAotU09fVElNRVNUQU1QID0gMHgwNDAwCi1TT19BQ0NFUFRGSUxURVIgPSAweDEwMDAKLVNPX0RPTlRUUlVOQyA9IDB4MjAwMAotU09fV0FOVE1PUkUgPSAweDQwMDAKLVNPX1dBTlRPT0JGTEFHID0gMHg4MDAwCi1TT19TTkRCVUYgPSAweDEwMDEKLVNPX1JDVkJVRiA9IDB4MTAwMgotU09fU05ETE9XQVQgPSAweDEwMDMKLVNPX1JDVkxPV0FUID0gMHgxMDA0Ci1TT19TTkRUSU1FTyA9IDB4MTAwNQotU09fUkNWVElNRU8gPSAweDEwMDYKLVNPX0VSUk9SID0gMHgxMDA3Ci1TT19UWVBFID0gMHgxMDA4Ci1TT19OUkVBRCA9IDB4MTAyMAotU09fTktFID0gMHgxMDIxCi1TT19OT1NJR1BJUEUgPSAweDEwMjIKLVNPX05PQUREUkVSUiA9IDB4MTAyMwotU09fTldSSVRFID0gMHgxMDI0Ci1TT19SRVVTRVNIQVJFVUlEID0gMHgxMDI1Ci1TT19OT1RJRllDT05GTElDVCA9IDB4MTAyNgotU09fTElOR0VSX1NFQyA9IDB4MTA4MAotU09fUkVTVFJJQ1RJT05TID0gMHgxMDgxCi1TT19SRVNUUklDVF9ERU5ZSU4gPSAweDAwMDAwMDAxCi1TT19SRVNUUklDVF9ERU5ZT1VUID0gMHgwMDAwMDAwMgotU09fUkVTVFJJQ1RfREVOWVNFVCA9ICgtMjE0NzQ4MzY0OCkKLVNPX0xBQkVMID0gMHgxMDEwCi1TT19QRUVSTEFCRUwgPSAweDEwMTEKLVNPTF9TT0NLRVQgPSAweGZmZmYKLUFGX1VOU1BFQyA9IDAKLUFGX1VOSVggPSAxCi1BRl9MT0NBTCA9IEFGX1VOSVgKLUFGX0lORVQgPSAyCi1BRl9JTVBMSU5LID0gMwotQUZfUFVQID0gNAotQUZfQ0hBT1MgPSA1Ci1BRl9OUyA9IDYKLUFGX0lTTyA9IDcKLUFGX09TSSA9IEFGX0lTTwotQUZfRUNNQSA9IDgKLUFGX0RBVEFLSVQgPSA5Ci1BRl9DQ0lUVCA9IDEwCi1BRl9TTkEgPSAxMQotQUZfREVDbmV0ID0gMTIKLUFGX0RMSSA9IDEzCi1BRl9MQVQgPSAxNAotQUZfSFlMSU5LID0gMTUKLUFGX0FQUExFVEFMSyA9IDE2Ci1BRl9ST1VURSA9IDE3Ci1BRl9MSU5LID0gMTgKLXBzZXVkb19BRl9YVFAgPSAxOQotQUZfQ09JUCA9IDIwCi1BRl9DTlQgPSAyMQotcHNldWRvX0FGX1JUSVAgPSAyMgotQUZfSVBYID0gMjMKLUFGX1NJUCA9IDI0Ci1wc2V1ZG9fQUZfUElQID0gMjUKLUFGX05EUlYgPSAyNwotQUZfSVNETiA9IDI4Ci1BRl9FMTY0ID0gQUZfSVNETgotcHNldWRvX0FGX0tFWSA9IDI5Ci1BRl9JTkVUNiA9IDMwCi1BRl9OQVRNID0gMzEKLUFGX1NZU1RFTSA9IDMyCi1BRl9ORVRCSU9TID0gMzMKLUFGX1BQUCA9IDM0Ci1BRl9BVE0gPSAzMAotcHNldWRvX0FGX0hEUkNNUExUID0gMzUKLUFGX1JFU0VSVkVEXzM2ID0gMzYKLUFGX05FVEdSQVBIID0gMzIKLUFGX01BWCA9IDM3Ci1TT0NLX01BWEFERFJMRU4gPSAyNTUKLV9TU19NQVhTSVpFID0gMTI4Ci1QRl9VTlNQRUMgPSBBRl9VTlNQRUMKLVBGX0xPQ0FMID0gQUZfTE9DQUwKLVBGX1VOSVggPSBQRl9MT0NBTAotUEZfSU5FVCA9IEFGX0lORVQKLVBGX0lNUExJTksgPSBBRl9JTVBMSU5LCi1QRl9QVVAgPSBBRl9QVVAKLVBGX0NIQU9TID0gQUZfQ0hBT1MKLVBGX05TID0gQUZfTlMKLVBGX0lTTyA9IEFGX0lTTwotUEZfT1NJID0gQUZfSVNPCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX1JPVVRFID0gQUZfUk9VVEUKLVBGX0xJTksgPSBBRl9MSU5LCi1QRl9YVFAgPSBwc2V1ZG9fQUZfWFRQCi1QRl9DT0lQID0gQUZfQ09JUAotUEZfQ05UID0gQUZfQ05UCi1QRl9TSVAgPSBBRl9TSVAKLVBGX0lQWCA9IEFGX0lQWAotUEZfUlRJUCA9IHBzZXVkb19BRl9SVElQCi1QRl9QSVAgPSBwc2V1ZG9fQUZfUElQCi1QRl9ORFJWID0gQUZfTkRSVgotUEZfSVNETiA9IEFGX0lTRE4KLVBGX0tFWSA9IHBzZXVkb19BRl9LRVkKLVBGX0lORVQ2ID0gQUZfSU5FVDYKLVBGX05BVE0gPSBBRl9OQVRNCi1QRl9TWVNURU0gPSBBRl9TWVNURU0KLVBGX05FVEJJT1MgPSBBRl9ORVRCSU9TCi1QRl9QUFAgPSBBRl9QUFAKLVBGX1JFU0VSVkVEXzM2ID0gQUZfUkVTRVJWRURfMzYKLVBGX0FUTSA9IEFGX0FUTQotUEZfTkVUR1JBUEggPSBBRl9ORVRHUkFQSAotUEZfTUFYID0gQUZfTUFYCi1ORVRfTUFYSUQgPSBBRl9NQVgKLU5FVF9SVF9EVU1QID0gMQotTkVUX1JUX0ZMQUdTID0gMgotTkVUX1JUX0lGTElTVCA9IDMKLU5FVF9SVF9TVEFUID0gNAotTkVUX1JUX1RSQVNIID0gNQotTkVUX1JUX0lGTElTVDIgPSA2Ci1ORVRfUlRfRFVNUDIgPSA3Ci1ORVRfUlRfTUFYSUQgPSA4Ci1TT01BWENPTk4gPSAxMjgKLU1TR19PT0IgPSAweDEKLU1TR19QRUVLID0gMHgyCi1NU0dfRE9OVFJPVVRFID0gMHg0Ci1NU0dfRU9SID0gMHg4Ci1NU0dfVFJVTkMgPSAweDEwCi1NU0dfQ1RSVU5DID0gMHgyMAotTVNHX1dBSVRBTEwgPSAweDQwCi1NU0dfRE9OVFdBSVQgPSAweDgwCi1NU0dfRU9GID0gMHgxMDAKLU1TR19XQUlUU1RSRUFNID0gMHgyMDAKLU1TR19GTFVTSCA9IDB4NDAwCi1NU0dfSE9MRCA9IDB4ODAwCi1NU0dfU0VORCA9IDB4MTAwMAotTVNHX0hBVkVNT1JFID0gMHgyMDAwCi1NU0dfUkNWTU9SRSA9IDB4NDAwMAotTVNHX05FRURTQSA9IDB4MTAwMDAKLUNNR1JPVVBfTUFYID0gMTYKLVNDTV9SSUdIVFMgPSAweDAxCi1TQ01fVElNRVNUQU1QID0gMHgwMgotU0NNX0NSRURTID0gMHgwMwotU0hVVF9SRCA9IDAKLVNIVVRfV1IgPSAxCi1TSFVUX1JEV1IgPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL2VuZGlhbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX2VuZGlhbi5oCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIE5UT0hMKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBOVE9IUyh4KTogcmV0dXJuICh4KQotCi1kZWYgSFRPTkwoeCk6IHJldHVybiAoeCkKLQotZGVmIEhUT05TKHgpOiByZXR1cm4gKHgpCi0KLQotIyBJbmNsdWRlZCBmcm9tIGxpYmtlcm4vX09TQnl0ZU9yZGVyLmgKLWRlZiBfX0RBUldJTl9PU1N3YXBDb25zdEludDE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwQ29uc3RJbnQzMih4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcENvbnN0SW50NjQoeCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGxpYmtlcm4vaTM4Ni9fT1NCeXRlT3JkZXIuaAotZGVmIF9fREFSV0lOX09TU3dhcEludDE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50MzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQ2NCh4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcEludDE2KHgpOiByZXR1cm4gX09TU3dhcEludDE2KHgpCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQzMih4KTogcmV0dXJuIF9PU1N3YXBJbnQzMih4KQotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50NjQoeCk6IHJldHVybiBfT1NTd2FwSW50NjQoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MTYoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MTYoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gX19EQVJXSU5fT1NTd2FwSW50MzIoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLV9fREFSV0lOX0lQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9SRVNFUlZFRCA9IF9fREFSV0lOX0lQUE9SVF9SRVNFUlZFRAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotSU5BRERSX05PTkUgPSAoLTEpCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIElOX0NMQVNTQl9ORVQpID09IElOX0xJTktMT0NBTE5FVE5VTSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX1NUUklQSERSID0gMjMKLUlQX1JFQ1ZUVEwgPSAyNAotSVBfRldfQUREID0gNDAKLUlQX0ZXX0RFTCA9IDQxCi1JUF9GV19GTFVTSCA9IDQyCi1JUF9GV19aRVJPID0gNDMKLUlQX0ZXX0dFVCA9IDQ0Ci1JUF9GV19SRVNFVExPRyA9IDQ1Ci1JUF9PTERfRldfQUREID0gNTAKLUlQX09MRF9GV19ERUwgPSA1MQotSVBfT0xEX0ZXX0ZMVVNIID0gNTIKLUlQX09MRF9GV19aRVJPID0gNTMKLUlQX09MRF9GV19HRVQgPSA1NAotSVBfTkFUX19YWFggPSA1NQotSVBfT0xEX0ZXX1JFU0VUTE9HID0gNTYKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1RSQUZGSUNfTUdUX0JBQ0tHUk9VTkQgPSA2NQotSVBfRk9SQ0VfT1VUX0lGUCA9IDY5Ci1UUkFGRklDX01HVF9TT19CQUNLR1JPVU5EID0gMHgwMDAxCi1UUkFGRklDX01HVF9TT19CR19TVVBQUkVTU0VEID0gMHgwMDAyCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiMjAwMTA1MjgvYXBwbGUtZGFyd2luIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfVjZPTkxZID0gMjcKLUlQVjZfQklORFY2T05MWSA9IElQVjZfVjZPTkxZCi1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9NQVhJRCA9IDQyCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4gYi9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGEyMGNkYzEuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZGFyd2luL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiRFWEUgLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDQvSU4ucHkgYi9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNhMjQxOC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHg4MDAwMDAwMCkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9IDB4ZmYwMDAwMDAKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4YzAwMDAwMDApID09IDB4ODAwMDAwMDApCi0KLUlOX0NMQVNTQl9ORVQgPSAweGZmZmYwMDAwCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZTAwMDAwMDApID09IDB4YzAwMDAwMDApCi0KLUlOX0NMQVNTQ19ORVQgPSAweGZmZmZmZjAwCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfTk9ORSA9IDB4ZmZmZmZmZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcXVldWUuaAotZGVmIFNMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBTTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU1RBSUxRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFRBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIENJUkNMRVFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLV9fS0FNRV9WRVJTSU9OID0gIjIwMDAwNzAxL0ZyZWVCU0QtY3VycmVudCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfQklORFY2T05MWSA9IDI3Ci1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX0JJTkRWNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX01BWElEID0gMjgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q0L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q1L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjYTI0MTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19ESVZFUlQgPSAyNTQKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3F1ZXVlLmgKLWRlZiBTTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU0xJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBTVEFJTFFfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIExJU1RfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIExJU1RfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgVEFJTFFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBDSVJDTEVRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1fX0tBTUVfVkVSU0lPTiA9ICIyMDAwMDcwMS9GcmVlQlNELWN1cnJlbnQiCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDEKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAyCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHhmZjAxMDAwMAotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4ZmYwMjAwMDAKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4ZmZmZjAwMDAKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweDgwZmUKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGMwZmUKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweDAyZmYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl9QS1RJTkZPID0gMTkKLUlQVjZfSE9QTElNSVQgPSAyMAotSVBWNl9ORVhUSE9QID0gMjEKLUlQVjZfSE9QT1BUUyA9IDIyCi1JUFY2X0RTVE9QVFMgPSAyMwotSVBWNl9SVEhEUiA9IDI0Ci1JUFY2X1BLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X0JJTkRWNk9OTFkgPSAyNwotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9CSU5EVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9NQVhJRCA9IDI4CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNS9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNi9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjBiZjg0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTUxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfbG9uZ192YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9sb25nX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfbG9uZyh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX2xvbmdfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9TRU5EU1JDQUREUiA9IElQX1JFQ1ZEU1RBRERSCi1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9PTkVTQkNBU1QgPSAyMwotSVBfRldfVEFCTEVfQUREID0gNDAKLUlQX0ZXX1RBQkxFX0RFTCA9IDQxCi1JUF9GV19UQUJMRV9GTFVTSCA9IDQyCi1JUF9GV19UQUJMRV9HRVRTSVpFID0gNDMKLUlQX0ZXX1RBQkxFX0xJU1QgPSA0NAotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfUFJFRkVSX1RFTVBBRERSID0gMzcKLUlQVjZDVExfQUREUkNUTFBPTElDWSA9IDM4Ci1JUFY2Q1RMX1VTRV9ERUZBVUxUWk9ORSA9IDM5Ci1JUFY2Q1RMX01BWEZSQUdTID0gNDEKLUlQVjZDVExfSUZRID0gNDIKLUlQVjZDVExfSVNBVEFQUlRSID0gNDMKLUlQVjZDVExfTUNBU1RfUE1UVSA9IDQ0Ci1JUFY2Q1RMX1NURUFMVEggPSA0NQotSVBWNkNUTF9NQVhJRCA9IDQ2CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNi9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNy9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTNiM2EyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTcxICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX19HTlVDTElLRV9BU00gPSAzCi1fX0dOVUNMSUtFX0FTTSA9IDIKLV9fR05VQ0xJS0VfX19UWVBFT0YgPSAxCi1fX0dOVUNMSUtFX19fT0ZGU0VUT0YgPSAxCi1fX0dOVUNMSUtFX19fU0VDVElPTiA9IDEKLV9fR05VQ0xJS0VfQVRUUklCVVRFX01PREVfREkgPSAxCi1fX0dOVUNMSUtFX0NUT1JfU0VDVElPTl9IQU5ETElORyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9DT05TVEFOVF9QID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBUkFSR1MgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fU1REQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX1ZBQUxJU1QgPSAxCi1fX0dOVUNfVkFfTElTVF9DT01QQVRJQklMSVRZID0gMQotX19HTlVDTElLRV9CVUlMVElOX05FWFRfQVJHID0gMQotX19HTlVDTElLRV9CVUlMVElOX01FTUNQWSA9IDEKLV9fQ0NfU1VQUE9SVFNfSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkVfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfX19GVU5DX18gPSAxCi1fX0NDX1NVUFBPUlRTX1dBUk5JTkcgPSAxCi1fX0NDX1NVUFBPUlRTX1ZBUkFESUNfWFhYID0gMQotX19DQ19TVVBQT1JUU19EWU5BTUlDX0FSUkFZX0lOSVQgPSAxCi1fX0NDX0lOVF9JU18zMkJJVCA9IDEKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19YU1RSSU5HKHgpOiByZXR1cm4gX19TVFJJTkcoeCkKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX2FsaWduZWQoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyh4KSkpCi0KLWRlZiBfX3NlY3Rpb24oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX3NlY3Rpb25fXyh4KSkpCi0KLWRlZiBfX25vbm51bGwoeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX25vbm51bGxfXyh4KSkpCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMSkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gX19idWlsdGluX2V4cGVjdCgoZXhwKSwgMCkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiAoZXhwKQotCi1kZWYgX19mb3JtYXRfYXJnKGZtdGFyZyk6IHJldHVybiBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9hcmdfXyAoZm10YXJnKSkpCi0KLWRlZiBfX0ZCU0RJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSURfU09VUkNFKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkX3NvdXJjZV8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1NDQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19zY2NzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fY29weXJpZ2h0XyxfX0xJTkVfXykscykKLQotX1BPU0lYX0NfU09VUkNFID0gMTk5MDA5Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkyMDkKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDUwMAotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxOTg4MDgKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMTk5NTA2Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkzMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTIwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MDA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTg4MDgKLV9fSVNPX0NfVklTSUJMRSA9IDAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA2MDAKLV9fQlNEX1ZJU0lCTEUgPSAxCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLV9RVUFEX0hJR0hXT1JEID0gMQotX1FVQURfTE9XV09SRCA9IDAKLV9MSVRUTEVfRU5ESUFOID0gMTIzNAotX0JJR19FTkRJQU4gPSA0MzIxCi1fUERQX0VORElBTiA9IDM0MTIKLV9CWVRFX09SREVSID0gX0xJVFRMRV9FTkRJQU4KLUxJVFRMRV9FTkRJQU4gPSBfTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfQllURV9PUkRFUgotZGVmIF9fd29yZF9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX3dvcmRfc3dhcF9pbnQoeCk6IHJldHVybiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfaW50KHgpOiByZXR1cm4gX19ieXRlX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfd29yZF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpCi0KLWRlZiBfX2h0b25sKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX2h0b25zKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLWRlZiBfX250b2hsKHgpOiByZXR1cm4gX19ic3dhcDMyKHgpCi0KLWRlZiBfX250b2hzKHgpOiByZXR1cm4gX19ic3dhcDE2KHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fVURQID0gMTcKLWRlZiBodG9ubCh4KTogcmV0dXJuIF9faHRvbmwoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19odG9ucyh4KQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiBfX250b2hsKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuIF9fbnRvaHMoeCkKLQotSVBQUk9UT19SQVcgPSAyNTUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBWNCA9IDQKLUlQUFJPVE9fSVBJUCA9IElQUFJPVE9fSVBWNAotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fTU9CSUxFID0gNTUKLUlQUFJPVE9fVExTUCA9IDU2Ci1JUFBST1RPX1NLSVAgPSA1NwotSVBQUk9UT19JQ01QVjYgPSA1OAotSVBQUk9UT19OT05FID0gNTkKLUlQUFJPVE9fRFNUT1BUUyA9IDYwCi1JUFBST1RPX0FISVAgPSA2MQotSVBQUk9UT19DRlRQID0gNjIKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19TQVRFWFBBSyA9IDY0Ci1JUFBST1RPX0tSWVBUT0xBTiA9IDY1Ci1JUFBST1RPX1JWRCA9IDY2Ci1JUFBST1RPX0lQUEMgPSA2NwotSVBQUk9UT19BREZTID0gNjgKLUlQUFJPVE9fU0FUTU9OID0gNjkKLUlQUFJPVE9fVklTQSA9IDcwCi1JUFBST1RPX0lQQ1YgPSA3MQotSVBQUk9UT19DUE5YID0gNzIKLUlQUFJPVE9fQ1BIQiA9IDczCi1JUFBST1RPX1dTTiA9IDc0Ci1JUFBST1RPX1BWUCA9IDc1Ci1JUFBST1RPX0JSU0FUTU9OID0gNzYKLUlQUFJPVE9fTkQgPSA3NwotSVBQUk9UT19XQk1PTiA9IDc4Ci1JUFBST1RPX1dCRVhQQUsgPSA3OQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19WTVRQID0gODEKLUlQUFJPVE9fU1ZNVFAgPSA4MgotSVBQUk9UT19WSU5FUyA9IDgzCi1JUFBST1RPX1RUUCA9IDg0Ci1JUFBST1RPX0lHUCA9IDg1Ci1JUFBST1RPX0RHUCA9IDg2Ci1JUFBST1RPX1RDRiA9IDg3Ci1JUFBST1RPX0lHUlAgPSA4OAotSVBQUk9UT19PU1BGSUdQID0gODkKLUlQUFJPVE9fU1JQQyA9IDkwCi1JUFBST1RPX0xBUlAgPSA5MQotSVBQUk9UT19NVFAgPSA5MgotSVBQUk9UT19BWDI1ID0gOTMKLUlQUFJPVE9fSVBFSVAgPSA5NAotSVBQUk9UT19NSUNQID0gOTUKLUlQUFJPVE9fU0NDU1AgPSA5NgotSVBQUk9UT19FVEhFUklQID0gOTcKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19BUEVTID0gOTkKLUlQUFJPVE9fR01UUCA9IDEwMAotSVBQUk9UT19JUENPTVAgPSAxMDgKLUlQUFJPVE9fU0NUUCA9IDEzMgotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fQ0FSUCA9IDExMgotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fUEZTWU5DID0gMjQwCi1JUFBST1RPX09MRF9ESVZFUlQgPSAyNTQKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUFJPVE9fRElWRVJUID0gMjU4Ci1JUFBST1RPX1NQQUNFUiA9IDMyNzY3Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLUlQUE9SVF9NQVggPSA2NTUzNQotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOX0NMQVNTRF9ORVQgPSAoLTI2ODQzNTQ1NikKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0xJTktMT0NBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTY1NTM2KSkgPT0gKC0xNDQyOTcxNjQ4KSkKLQotZGVmIElOX0xPQ0FMX0dST1VQKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1JTkFERFJfTk9ORSA9ICgtMSkKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1NFTkRTUkNBRERSID0gSVBfUkVDVkRTVEFERFIKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX09ORVNCQ0FTVCA9IDIzCi1JUF9GV19UQUJMRV9BREQgPSA0MAotSVBfRldfVEFCTEVfREVMID0gNDEKLUlQX0ZXX1RBQkxFX0ZMVVNIID0gNDIKLUlQX0ZXX1RBQkxFX0dFVFNJWkUgPSA0MwotSVBfRldfVEFCTEVfTElTVCA9IDQ0Ci1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0ZXX05BVF9DRkcgPSA1NgotSVBfRldfTkFUX0RFTCA9IDU3Ci1JUF9GV19OQVRfR0VUX0NPTkZJRyA9IDU4Ci1JUF9GV19OQVRfR0VUX0xPRyA9IDU5Ci1JUF9EVU1NWU5FVF9DT05GSUdVUkUgPSA2MAotSVBfRFVNTVlORVRfREVMID0gNjEKLUlQX0RVTU1ZTkVUX0ZMVVNIID0gNjIKLUlQX0RVTU1ZTkVUX0dFVCA9IDY0Ci1JUF9SRUNWVFRMID0gNjUKLUlQX01JTlRUTCA9IDY2Ci1JUF9ET05URlJBRyA9IDY3Ci1JUF9BRERfU09VUkNFX01FTUJFUlNISVAgPSA3MAotSVBfRFJPUF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcxCi1JUF9CTE9DS19TT1VSQ0UgPSA3MgotSVBfVU5CTE9DS19TT1VSQ0UgPSA3MwotSVBfTVNGSUxURVIgPSA3NAotTUNBU1RfSk9JTl9HUk9VUCA9IDgwCi1NQ0FTVF9MRUFWRV9HUk9VUCA9IDgxCi1NQ0FTVF9KT0lOX1NPVVJDRV9HUk9VUCA9IDgyCi1NQ0FTVF9MRUFWRV9TT1VSQ0VfR1JPVVAgPSA4MwotTUNBU1RfQkxPQ0tfU09VUkNFID0gODQKLU1DQVNUX1VOQkxPQ0tfU09VUkNFID0gODUKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NSU5fTUVNQkVSU0hJUFMgPSAzMQotSVBfTUFYX01FTUJFUlNISVBTID0gNDA5NQotSVBfTUFYX1NPVVJDRV9GSUxURVIgPSAxMDI0Ci1NQ0FTVF9JTkNMVURFID0gMQotTUNBU1RfRVhDTFVERSA9IDIKLUlQX1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUF9QT1JUUkFOR0VfTE9XID0gMgotSVBQUk9UT19NQVhJRCA9IChJUFBST1RPX0FIICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfUlRFWFBJUkUgPSA1Ci1JUENUTF9SVE1JTkVYUElSRSA9IDYKLUlQQ1RMX1JUTUFYQ0FDSEUgPSA3Ci1JUENUTF9TT1VSQ0VST1VURSA9IDgKLUlQQ1RMX0RJUkVDVEVEQlJPQURDQVNUID0gOQotSVBDVExfSU5UUlFNQVhMRU4gPSAxMAotSVBDVExfSU5UUlFEUk9QUyA9IDExCi1JUENUTF9TVEFUUyA9IDEyCi1JUENUTF9BQ0NFUFRTT1VSQ0VST1VURSA9IDEzCi1JUENUTF9GQVNURk9SV0FSRElORyA9IDE0Ci1JUENUTF9LRUVQRkFJVEggPSAxNQotSVBDVExfR0lGX1RUTCA9IDE2Ci1JUENUTF9NQVhJRCA9IDE3Ci1kZWYgaW5fbnVsbGhvc3QoeCk6IHJldHVybiAoKHgpLnNfYWRkciA9PSBJTkFERFJfQU5ZKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0Ni9pbjYuaAotX19LQU1FX1ZFUlNJT04gPSAiRnJlZUJTRCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAoLTE2NzExNjgwKQotSVBWNl9BRERSX0lOVDMyX01MTCA9ICgtMTY2NDYxNDQpCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHgwMDAwZmZmZgotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ZmU4MAotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4ZmVjMAotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4ZmYwMgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDB4MDEwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAweDAyMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHgwMDAwMDFmZgotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4MDAwMDAyZmYKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAoLTY1NTM2KQotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLV9fSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0lOVEZBQ0VMT0NBTCA9IDB4MDEKLV9fSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLV9fSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLV9fSVBWNl9BRERSX1NDT1BFX09SR0xPQ0FMID0gMHgwOAotX19JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0lOVEZBQ0VMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0VNQkVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19ERVBSRUNBVEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSUZBNl9JU19JTlZBTElEKGEpOiByZXR1cm4gXAotCi1JUFY2X09QVElPTlMgPSAxCi1JUFY2X1JFQ1ZPUFRTID0gNQotSVBWNl9SRUNWUkVUT1BUUyA9IDYKLUlQVjZfUkVDVkRTVEFERFIgPSA3Ci1JUFY2X1JFVE9QVFMgPSA4Ci1JUFY2X1NPQ0tPUFRfUkVTRVJWRUQxID0gMwotSVBWNl9VTklDQVNUX0hPUFMgPSA0Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDkKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxMAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUFY2X0pPSU5fR1JPVVAgPSAxMgotSVBWNl9MRUFWRV9HUk9VUCA9IDEzCi1JUFY2X1BPUlRSQU5HRSA9IDE0Ci1JQ01QNl9GSUxURVIgPSAxOAotSVBWNl8yMjkyUEtUSU5GTyA9IDE5Ci1JUFY2XzIyOTJIT1BMSU1JVCA9IDIwCi1JUFY2XzIyOTJORVhUSE9QID0gMjEKLUlQVjZfMjI5MkhPUE9QVFMgPSAyMgotSVBWNl8yMjkyRFNUT1BUUyA9IDIzCi1JUFY2XzIyOTJSVEhEUiA9IDI0Ci1JUFY2XzIyOTJQS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUkRTVE9QVFMgPSAzNQotSVBWNl9SRUNWUEtUSU5GTyA9IDM2Ci1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDM3Ci1JUFY2X1JFQ1ZSVEhEUiA9IDM4Ci1JUFY2X1JFQ1ZIT1BPUFRTID0gMzkKLUlQVjZfUkVDVkRTVE9QVFMgPSA0MAotSVBWNl9SRUNWUlRIRFJEU1RPUFRTID0gNDEKLUlQVjZfVVNFX01JTl9NVFUgPSA0MgotSVBWNl9SRUNWUEFUSE1UVSA9IDQzCi1JUFY2X1BBVEhNVFUgPSA0NAotSVBWNl9SRUFDSENPTkYgPSA0NQotSVBWNl9QS1RJTkZPID0gNDYKLUlQVjZfSE9QTElNSVQgPSA0NwotSVBWNl9ORVhUSE9QID0gNDgKLUlQVjZfSE9QT1BUUyA9IDQ5Ci1JUFY2X0RTVE9QVFMgPSA1MAotSVBWNl9SVEhEUiA9IDUxCi1JUFY2X1BLVE9QVElPTlMgPSA1MgotSVBWNl9SRUNWVENMQVNTID0gNTcKLUlQVjZfQVVUT0ZMT1dMQUJFTCA9IDU5Ci1JUFY2X1RDTEFTUyA9IDYxCi1JUFY2X0RPTlRGUkFHID0gNjIKLUlQVjZfUFJFRkVSX1RFTVBBRERSID0gNjMKLUlQVjZfTVNGSUxURVIgPSA3NAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9VU0VURU1QQUREUiA9IDMyCi1JUFY2Q1RMX1RFTVBQTFRJTUUgPSAzMwotSVBWNkNUTF9URU1QVkxUSU1FID0gMzQKLUlQVjZDVExfQVVUT19MSU5LTE9DQUwgPSAzNQotSVBWNkNUTF9SSVA2U1RBVFMgPSAzNgotSVBWNkNUTF9QUkVGRVJfVEVNUEFERFIgPSAzNwotSVBWNkNUTF9BRERSQ1RMUE9MSUNZID0gMzgKLUlQVjZDVExfVVNFX0RFRkFVTFRaT05FID0gMzkKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9JRlEgPSA0MgotSVBWNkNUTF9JU0FUQVBSVFIgPSA0MwotSVBWNkNUTF9NQ0FTVF9QTVRVID0gNDQKLUlQVjZDVExfU1RFQUxUSCA9IDQ1Ci1JUFY2Q1RMX01BWElEID0gNDYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q3L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q4L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlM2IzYTIuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NzEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fX0dOVUNMSUtFX0FTTSA9IDMKLV9fR05VQ0xJS0VfQVNNID0gMgotX19HTlVDTElLRV9fX1RZUEVPRiA9IDEKLV9fR05VQ0xJS0VfX19PRkZTRVRPRiA9IDEKLV9fR05VQ0xJS0VfX19TRUNUSU9OID0gMQotX19HTlVDTElLRV9BVFRSSUJVVEVfTU9ERV9ESSA9IDEKLV9fR05VQ0xJS0VfQ1RPUl9TRUNUSU9OX0hBTkRMSU5HID0gMQotX19HTlVDTElLRV9CVUlMVElOX0NPTlNUQU5UX1AgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFSQVJHUyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9TVERBUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFBTElTVCA9IDEKLV9fR05VQ19WQV9MSVNUX0NPTVBBVElCSUxJVFkgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTkVYVF9BUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTUVNQ1BZID0gMQotX19DQ19TVVBQT1JUU19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORV9fID0gMQotX19DQ19TVVBQT1JUU19fX0ZVTkNfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfV0FSTklORyA9IDEKLV9fQ0NfU1VQUE9SVFNfVkFSQURJQ19YWFggPSAxCi1fX0NDX1NVUFBPUlRTX0RZTkFNSUNfQVJSQVlfSU5JVCA9IDEKLV9fQ0NfSU5UX0lTXzMyQklUID0gMQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1hTVFJJTkcoeCk6IHJldHVybiBfX1NUUklORyh4KQotCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiAoKQotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAieCIKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fbm9ubnVsbCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKHgpKSkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAxKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAwKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX2Zvcm1hdF9hcmcoZm10YXJnKTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X2FyZ19fIChmbXRhcmcpKSkKLQotZGVmIF9fRkJTRElEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRF9TT1VSQ0Uocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfc291cmNlXyxfX0xJTkVfXykscykKLQotZGVmIF9fU0NDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3NjY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX0NPUFlSSUdIVChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19jb3B5cmlnaHRfLF9fTElORV9fKSxzKQotCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkwMDkKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTIwOQotX19YU0lfVklTSUJMRSA9IDYwMAotX1BPU0lYX0NfU09VUkNFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNTAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9DX1NPVVJDRSA9IDE5ODgwOAotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAxOTk1MDYKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTMwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MjA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkwMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5ODgwOAotX19JU09fQ19WSVNJQkxFID0gMAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDYwMAotX19CU0RfVklTSUJMRSA9IDEKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9lbmRpYW4uaAotX1FVQURfSElHSFdPUkQgPSAxCi1fUVVBRF9MT1dXT1JEID0gMAotX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fQklHX0VORElBTiA9IDQzMjEKLV9QRFBfRU5ESUFOID0gMzQxMgotX0JZVEVfT1JERVIgPSBfTElUVExFX0VORElBTgotTElUVExFX0VORElBTiA9IF9MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX0JJR19FTkRJQU4KLVBEUF9FTkRJQU4gPSBfUERQX0VORElBTgotQllURV9PUkRFUiA9IF9CWVRFX09SREVSCi1kZWYgX193b3JkX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludCh4KTogcmV0dXJuIF9fd29yZF9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjE0NzQ4MzY0OCkpID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAoLTE2Nzc3MjE2KQotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0xMDczNzQxODI0KSkgPT0gKC0yMTQ3NDgzNjQ4KSkKLQotSU5fQ0xBU1NCX05FVCA9ICgtNjU1MzYpCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC0xMDczNzQxODI0KSkKLQotSU5fQ0xBU1NDX05FVCA9ICgtMjU2KQotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtNTM2ODcwOTEyKSkKLQotSU5fQ0xBU1NEX05FVCA9ICgtMjY4NDM1NDU2KQotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNjU1MzYpKSA9PSAoLTE0NDI5NzE2NDgpKQotCi1kZWYgSU5fTE9DQUxfR1JPVVAoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOQUREUl9OT05FID0gKC0xKQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfU0VORFNSQ0FERFIgPSBJUF9SRUNWRFNUQUREUgotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfT05FU0JDQVNUID0gMjMKLUlQX0ZXX1RBQkxFX0FERCA9IDQwCi1JUF9GV19UQUJMRV9ERUwgPSA0MQotSVBfRldfVEFCTEVfRkxVU0ggPSA0MgotSVBfRldfVEFCTEVfR0VUU0laRSA9IDQzCi1JUF9GV19UQUJMRV9MSVNUID0gNDQKLUlQX0ZXX0FERCA9IDUwCi1JUF9GV19ERUwgPSA1MQotSVBfRldfRkxVU0ggPSA1MgotSVBfRldfWkVSTyA9IDUzCi1JUF9GV19HRVQgPSA1NAotSVBfRldfUkVTRVRMT0cgPSA1NQotSVBfRldfTkFUX0NGRyA9IDU2Ci1JUF9GV19OQVRfREVMID0gNTcKLUlQX0ZXX05BVF9HRVRfQ09ORklHID0gNTgKLUlQX0ZXX05BVF9HRVRfTE9HID0gNTkKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1JFQ1ZUVEwgPSA2NQotSVBfTUlOVFRMID0gNjYKLUlQX0RPTlRGUkFHID0gNjcKLUlQX0FERF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcwCi1JUF9EUk9QX1NPVVJDRV9NRU1CRVJTSElQID0gNzEKLUlQX0JMT0NLX1NPVVJDRSA9IDcyCi1JUF9VTkJMT0NLX1NPVVJDRSA9IDczCi1JUF9NU0ZJTFRFUiA9IDc0Ci1NQ0FTVF9KT0lOX0dST1VQID0gODAKLU1DQVNUX0xFQVZFX0dST1VQID0gODEKLU1DQVNUX0pPSU5fU09VUkNFX0dST1VQID0gODIKLU1DQVNUX0xFQVZFX1NPVVJDRV9HUk9VUCA9IDgzCi1NQ0FTVF9CTE9DS19TT1VSQ0UgPSA4NAotTUNBU1RfVU5CTE9DS19TT1VSQ0UgPSA4NQotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01JTl9NRU1CRVJTSElQUyA9IDMxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSA0MDk1Ci1JUF9NQVhfU09VUkNFX0ZJTFRFUiA9IDEwMjQKLU1DQVNUX0lOQ0xVREUgPSAxCi1NQ0FTVF9FWENMVURFID0gMgotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi1fX0tBTUVfVkVSU0lPTiA9ICJGcmVlQlNEIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAxCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMgotSVBWNl9BRERSX0lOVDMyX01OTCA9ICgtMTY3MTE2ODApCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gKC0xNjY0NjE0NCkKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9ICgtNjU1MzYpCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHg4MGZlCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhjMGZlCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHgwMmZmCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLUlQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfSU5URkFDRUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfRU1CRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0RFUFJFQ0FURUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0lOVkFMSUQoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2XzIyOTJQS1RJTkZPID0gMTkKLUlQVjZfMjI5MkhPUExJTUlUID0gMjAKLUlQVjZfMjI5Mk5FWFRIT1AgPSAyMQotSVBWNl8yMjkySE9QT1BUUyA9IDIyCi1JUFY2XzIyOTJEU1RPUFRTID0gMjMKLUlQVjZfMjI5MlJUSERSID0gMjQKLUlQVjZfMjI5MlBLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X1Y2T05MWSA9IDI3Ci1JUFY2X0JJTkRWNk9OTFkgPSBJUFY2X1Y2T05MWQotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSRFNUT1BUUyA9IDM1Ci1JUFY2X1JFQ1ZQS1RJTkZPID0gMzYKLUlQVjZfUkVDVkhPUExJTUlUID0gMzcKLUlQVjZfUkVDVlJUSERSID0gMzgKLUlQVjZfUkVDVkhPUE9QVFMgPSAzOQotSVBWNl9SRUNWRFNUT1BUUyA9IDQwCi1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSA0MQotSVBWNl9VU0VfTUlOX01UVSA9IDQyCi1JUFY2X1JFQ1ZQQVRITVRVID0gNDMKLUlQVjZfUEFUSE1UVSA9IDQ0Ci1JUFY2X1JFQUNIQ09ORiA9IDQ1Ci1JUFY2X1BLVElORk8gPSA0NgotSVBWNl9IT1BMSU1JVCA9IDQ3Ci1JUFY2X05FWFRIT1AgPSA0OAotSVBWNl9IT1BPUFRTID0gNDkKLUlQVjZfRFNUT1BUUyA9IDUwCi1JUFY2X1JUSERSID0gNTEKLUlQVjZfUEtUT1BUSU9OUyA9IDUyCi1JUFY2X1JFQ1ZUQ0xBU1MgPSA1NwotSVBWNl9BVVRPRkxPV0xBQkVMID0gNTkKLUlQVjZfVENMQVNTID0gNjEKLUlQVjZfRE9OVEZSQUcgPSA2MgotSVBWNl9QUkVGRVJfVEVNUEFERFIgPSA2MwotSVBWNl9NU0ZJTFRFUiA9IDc0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9WNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX1VTRVRFTVBBRERSID0gMzIKLUlQVjZDVExfVEVNUFBMVElNRSA9IDMzCi1JUFY2Q1RMX1RFTVBWTFRJTUUgPSAzNAotSVBWNkNUTF9BVVRPX0xJTktMT0NBTCA9IDM1Ci1JUFY2Q1RMX1JJUDZTVEFUUyA9IDM2Ci1JUFY2Q1RMX1BSRUZFUl9URU1QQUREUiA9IDM3Ci1JUFY2Q1RMX0FERFJDVExQT0xJQ1kgPSAzOAotSVBWNkNUTF9VU0VfREVGQVVMVFpPTkUgPSAzOQotSVBWNkNUTF9NQVhGUkFHUyA9IDQxCi1JUFY2Q1RMX0lGUSA9IDQyCi1JUFY2Q1RMX0lTQVRBUFJUUiA9IDQzCi1JUFY2Q1RMX01DQVNUX1BNVFUgPSA0NAotSVBWNkNUTF9TVEVBTFRIID0gNDUKLUlQVjZDVExfTUFYSUQgPSA0NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDgvcmVnZW4gYi9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbiBiL0xpYi9wbGF0LWdlbmVyaWMvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGM5NjE2N2QuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1ldmFsICRQWVRIT05fRk9SX0JVSUxEIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAiJyh1X2xvbmcpJyIgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvQ0RST00ucHkgYi9MaWIvcGxhdC1saW51eC9DRFJPTS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM0MDkzNi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9DRFJPTS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2xpbnV4L2Nkcm9tLmgKLQotQ0RST01QQVVTRSA9IDB4NTMwMQotQ0RST01SRVNVTUUgPSAweDUzMDIKLUNEUk9NUExBWU1TRiA9IDB4NTMwMwotQ0RST01QTEFZVFJLSU5EID0gMHg1MzA0Ci1DRFJPTVJFQURUT0NIRFIgPSAweDUzMDUKLUNEUk9NUkVBRFRPQ0VOVFJZID0gMHg1MzA2Ci1DRFJPTVNUT1AgPSAweDUzMDcKLUNEUk9NU1RBUlQgPSAweDUzMDgKLUNEUk9NRUpFQ1QgPSAweDUzMDkKLUNEUk9NVk9MQ1RSTCA9IDB4NTMwYQotQ0RST01TVUJDSE5MID0gMHg1MzBiCi1DRFJPTVJFQURNT0RFMiA9IDB4NTMwYwotQ0RST01SRUFETU9ERTEgPSAweDUzMGQKLUNEUk9NUkVBREFVRElPID0gMHg1MzBlCi1DRFJPTUVKRUNUX1NXID0gMHg1MzBmCi1DRFJPTU1VTFRJU0VTU0lPTiA9IDB4NTMxMAotQ0RST01fR0VUX01DTiA9IDB4NTMxMQotQ0RST01fR0VUX1VQQyA9IENEUk9NX0dFVF9NQ04KLUNEUk9NUkVTRVQgPSAweDUzMTIKLUNEUk9NVk9MUkVBRCA9IDB4NTMxMwotQ0RST01SRUFEUkFXID0gMHg1MzE0Ci1DRFJPTVJFQURDT09LRUQgPSAweDUzMTUKLUNEUk9NU0VFSyA9IDB4NTMxNgotQ0RST01QTEFZQkxLID0gMHg1MzE3Ci1DRFJPTVJFQURBTEwgPSAweDUzMTgKLUNEUk9NR0VUU1BJTkRPV04gPSAweDUzMWQKLUNEUk9NU0VUU1BJTkRPV04gPSAweDUzMWUKLUNEUk9NQ0xPU0VUUkFZID0gMHg1MzE5Ci1DRFJPTV9TRVRfT1BUSU9OUyA9IDB4NTMyMAotQ0RST01fQ0xFQVJfT1BUSU9OUyA9IDB4NTMyMQotQ0RST01fU0VMRUNUX1NQRUVEID0gMHg1MzIyCi1DRFJPTV9TRUxFQ1RfRElTQyA9IDB4NTMyMwotQ0RST01fTUVESUFfQ0hBTkdFRCA9IDB4NTMyNQotQ0RST01fRFJJVkVfU1RBVFVTID0gMHg1MzI2Ci1DRFJPTV9ESVNDX1NUQVRVUyA9IDB4NTMyNwotQ0RST01fQ0hBTkdFUl9OU0xPVFMgPSAweDUzMjgKLUNEUk9NX0xPQ0tET09SID0gMHg1MzI5Ci1DRFJPTV9ERUJVRyA9IDB4NTMzMAotQ0RST01fR0VUX0NBUEFCSUxJVFkgPSAweDUzMzEKLUNEUk9NQVVESU9CVUZTSVogPSAweDUzODIKLURWRF9SRUFEX1NUUlVDVCA9IDB4NTM5MAotRFZEX1dSSVRFX1NUUlVDVCA9IDB4NTM5MQotRFZEX0FVVEggPSAweDUzOTIKLUNEUk9NX1NFTkRfUEFDS0VUID0gMHg1MzkzCi1DRFJPTV9ORVhUX1dSSVRBQkxFID0gMHg1Mzk0Ci1DRFJPTV9MQVNUX1dSSVRURU4gPSAweDUzOTUKLUNEUk9NX1BBQ0tFVF9TSVpFID0gMTIKLUNHQ19EQVRBX1VOS05PV04gPSAwCi1DR0NfREFUQV9XUklURSA9IDEKLUNHQ19EQVRBX1JFQUQgPSAyCi1DR0NfREFUQV9OT05FID0gMwotQ0RfTUlOUyA9IDc0Ci1DRF9TRUNTID0gNjAKLUNEX0ZSQU1FUyA9IDc1Ci1DRF9TWU5DX1NJWkUgPSAxMgotQ0RfTVNGX09GRlNFVCA9IDE1MAotQ0RfQ0hVTktfU0laRSA9IDI0Ci1DRF9OVU1fT0ZfQ0hVTktTID0gOTgKLUNEX0ZSQU1FU0laRV9TVUIgPSA5NgotQ0RfSEVBRF9TSVpFID0gNAotQ0RfU1VCSEVBRF9TSVpFID0gOAotQ0RfRURDX1NJWkUgPSA0Ci1DRF9aRVJPX1NJWkUgPSA4Ci1DRF9FQ0NfU0laRSA9IDI3NgotQ0RfRlJBTUVTSVpFID0gMjA0OAotQ0RfRlJBTUVTSVpFX1JBVyA9IDIzNTIKLUNEX0ZSQU1FU0laRV9SQVdFUiA9IDI2NDYKLUNEX0ZSQU1FU0laRV9SQVcxID0gKENEX0ZSQU1FU0laRV9SQVctQ0RfU1lOQ19TSVpFKQotQ0RfRlJBTUVTSVpFX1JBVzAgPSAoQ0RfRlJBTUVTSVpFX1JBVy1DRF9TWU5DX1NJWkUtQ0RfSEVBRF9TSVpFKQotQ0RfWEFfSEVBRCA9IChDRF9IRUFEX1NJWkUrQ0RfU1VCSEVBRF9TSVpFKQotQ0RfWEFfVEFJTCA9IChDRF9FRENfU0laRStDRF9FQ0NfU0laRSkKLUNEX1hBX1NZTkNfSEVBRCA9IChDRF9TWU5DX1NJWkUrQ0RfWEFfSEVBRCkKLUNEUk9NX0xCQSA9IDB4MDEKLUNEUk9NX01TRiA9IDB4MDIKLUNEUk9NX0RBVEFfVFJBQ0sgPSAweDA0Ci1DRFJPTV9MRUFET1VUID0gMHhBQQotQ0RST01fQVVESU9fSU5WQUxJRCA9IDB4MDAKLUNEUk9NX0FVRElPX1BMQVkgPSAweDExCi1DRFJPTV9BVURJT19QQVVTRUQgPSAweDEyCi1DRFJPTV9BVURJT19DT01QTEVURUQgPSAweDEzCi1DRFJPTV9BVURJT19FUlJPUiA9IDB4MTQKLUNEUk9NX0FVRElPX05PX1NUQVRVUyA9IDB4MTUKLUNEQ19DTE9TRV9UUkFZID0gMHgxCi1DRENfT1BFTl9UUkFZID0gMHgyCi1DRENfTE9DSyA9IDB4NAotQ0RDX1NFTEVDVF9TUEVFRCA9IDB4OAotQ0RDX1NFTEVDVF9ESVNDID0gMHgxMAotQ0RDX01VTFRJX1NFU1NJT04gPSAweDIwCi1DRENfTUNOID0gMHg0MAotQ0RDX01FRElBX0NIQU5HRUQgPSAweDgwCi1DRENfUExBWV9BVURJTyA9IDB4MTAwCi1DRENfUkVTRVQgPSAweDIwMAotQ0RDX0lPQ1RMUyA9IDB4NDAwCi1DRENfRFJJVkVfU1RBVFVTID0gMHg4MDAKLUNEQ19HRU5FUklDX1BBQ0tFVCA9IDB4MTAwMAotQ0RDX0NEX1IgPSAweDIwMDAKLUNEQ19DRF9SVyA9IDB4NDAwMAotQ0RDX0RWRCA9IDB4ODAwMAotQ0RDX0RWRF9SID0gMHgxMDAwMAotQ0RDX0RWRF9SQU0gPSAweDIwMDAwCi1DRFNfTk9fSU5GTyA9IDAKLUNEU19OT19ESVNDID0gMQotQ0RTX1RSQVlfT1BFTiA9IDIKLUNEU19EUklWRV9OT1RfUkVBRFkgPSAzCi1DRFNfRElTQ19PSyA9IDQKLUNEU19BVURJTyA9IDEwMAotQ0RTX0RBVEFfMSA9IDEwMQotQ0RTX0RBVEFfMiA9IDEwMgotQ0RTX1hBXzJfMSA9IDEwMwotQ0RTX1hBXzJfMiA9IDEwNAotQ0RTX01JWEVEID0gMTA1Ci1DRE9fQVVUT19DTE9TRSA9IDB4MQotQ0RPX0FVVE9fRUpFQ1QgPSAweDIKLUNET19VU0VfRkZMQUdTID0gMHg0Ci1DRE9fTE9DSyA9IDB4OAotQ0RPX0NIRUNLX1RZUEUgPSAweDEwCi1DRF9QQVJUX01BWCA9IDY0Ci1DRF9QQVJUX01BU0sgPSAoQ0RfUEFSVF9NQVggLSAxKQotR1BDTURfQkxBTksgPSAweGExCi1HUENNRF9DTE9TRV9UUkFDSyA9IDB4NWIKLUdQQ01EX0ZMVVNIX0NBQ0hFID0gMHgzNQotR1BDTURfRk9STUFUX1VOSVQgPSAweDA0Ci1HUENNRF9HRVRfQ09ORklHVVJBVElPTiA9IDB4NDYKLUdQQ01EX0dFVF9FVkVOVF9TVEFUVVNfTk9USUZJQ0FUSU9OID0gMHg0YQotR1BDTURfR0VUX1BFUkZPUk1BTkNFID0gMHhhYwotR1BDTURfSU5RVUlSWSA9IDB4MTIKLUdQQ01EX0xPQURfVU5MT0FEID0gMHhhNgotR1BDTURfTUVDSEFOSVNNX1NUQVRVUyA9IDB4YmQKLUdQQ01EX01PREVfU0VMRUNUXzEwID0gMHg1NQotR1BDTURfTU9ERV9TRU5TRV8xMCA9IDB4NWEKLUdQQ01EX1BBVVNFX1JFU1VNRSA9IDB4NGIKLUdQQ01EX1BMQVlfQVVESU9fMTAgPSAweDQ1Ci1HUENNRF9QTEFZX0FVRElPX01TRiA9IDB4NDcKLUdQQ01EX1BMQVlfQVVESU9fVEkgPSAweDQ4Ci1HUENNRF9QTEFZX0NEID0gMHhiYwotR1BDTURfUFJFVkVOVF9BTExPV19NRURJVU1fUkVNT1ZBTCA9IDB4MWUKLUdQQ01EX1JFQURfMTAgPSAweDI4Ci1HUENNRF9SRUFEXzEyID0gMHhhOAotR1BDTURfUkVBRF9DRFZEX0NBUEFDSVRZID0gMHgyNQotR1BDTURfUkVBRF9DRCA9IDB4YmUKLUdQQ01EX1JFQURfQ0RfTVNGID0gMHhiOQotR1BDTURfUkVBRF9ESVNDX0lORk8gPSAweDUxCi1HUENNRF9SRUFEX0RWRF9TVFJVQ1RVUkUgPSAweGFkCi1HUENNRF9SRUFEX0ZPUk1BVF9DQVBBQ0lUSUVTID0gMHgyMwotR1BDTURfUkVBRF9IRUFERVIgPSAweDQ0Ci1HUENNRF9SRUFEX1RSQUNLX1JaT05FX0lORk8gPSAweDUyCi1HUENNRF9SRUFEX1NVQkNIQU5ORUwgPSAweDQyCi1HUENNRF9SRUFEX1RPQ19QTUFfQVRJUCA9IDB4NDMKLUdQQ01EX1JFUEFJUl9SWk9ORV9UUkFDSyA9IDB4NTgKLUdQQ01EX1JFUE9SVF9LRVkgPSAweGE0Ci1HUENNRF9SRVFVRVNUX1NFTlNFID0gMHgwMwotR1BDTURfUkVTRVJWRV9SWk9ORV9UUkFDSyA9IDB4NTMKLUdQQ01EX1NDQU4gPSAweGJhCi1HUENNRF9TRUVLID0gMHgyYgotR1BDTURfU0VORF9EVkRfU1RSVUNUVVJFID0gMHhhZAotR1BDTURfU0VORF9FVkVOVCA9IDB4YTIKLUdQQ01EX1NFTkRfS0VZID0gMHhhMwotR1BDTURfU0VORF9PUEMgPSAweDU0Ci1HUENNRF9TRVRfUkVBRF9BSEVBRCA9IDB4YTcKLUdQQ01EX1NFVF9TVFJFQU1JTkcgPSAweGI2Ci1HUENNRF9TVEFSVF9TVE9QX1VOSVQgPSAweDFiCi1HUENNRF9TVE9QX1BMQVlfU0NBTiA9IDB4NGUKLUdQQ01EX1RFU1RfVU5JVF9SRUFEWSA9IDB4MDAKLUdQQ01EX1ZFUklGWV8xMCA9IDB4MmYKLUdQQ01EX1dSSVRFXzEwID0gMHgyYQotR1BDTURfV1JJVEVfQU5EX1ZFUklGWV8xMCA9IDB4MmUKLUdQQ01EX1NFVF9TUEVFRCA9IDB4YmIKLUdQQ01EX1BMQVlBVURJT19USSA9IDB4NDgKLUdQQ01EX0dFVF9NRURJQV9TVEFUVVMgPSAweGRhCi1HUE1PREVfUl9XX0VSUk9SX1BBR0UgPSAweDAxCi1HUE1PREVfV1JJVEVfUEFSTVNfUEFHRSA9IDB4MDUKLUdQTU9ERV9BVURJT19DVExfUEFHRSA9IDB4MGUKLUdQTU9ERV9QT1dFUl9QQUdFID0gMHgxYQotR1BNT0RFX0ZBVUxUX0ZBSUxfUEFHRSA9IDB4MWMKLUdQTU9ERV9UT19QUk9URUNUX1BBR0UgPSAweDFkCi1HUE1PREVfQ0FQQUJJTElUSUVTX1BBR0UgPSAweDJhCi1HUE1PREVfQUxMX1BBR0VTID0gMHgzZgotR1BNT0RFX0NEUk9NX1BBR0UgPSAweDBkCi1EVkRfU1RSVUNUX1BIWVNJQ0FMID0gMHgwMAotRFZEX1NUUlVDVF9DT1BZUklHSFQgPSAweDAxCi1EVkRfU1RSVUNUX0RJU0NLRVkgPSAweDAyCi1EVkRfU1RSVUNUX0JDQSA9IDB4MDMKLURWRF9TVFJVQ1RfTUFOVUZBQ1QgPSAweDA0Ci1EVkRfTEFZRVJTID0gNAotRFZEX0xVX1NFTkRfQUdJRCA9IDAKLURWRF9IT1NUX1NFTkRfQ0hBTExFTkdFID0gMQotRFZEX0xVX1NFTkRfS0VZMSA9IDIKLURWRF9MVV9TRU5EX0NIQUxMRU5HRSA9IDMKLURWRF9IT1NUX1NFTkRfS0VZMiA9IDQKLURWRF9BVVRIX0VTVEFCTElTSEVEID0gNQotRFZEX0FVVEhfRkFJTFVSRSA9IDYKLURWRF9MVV9TRU5EX1RJVExFX0tFWSA9IDcKLURWRF9MVV9TRU5EX0FTRiA9IDgKLURWRF9JTlZBTElEQVRFX0FHSUQgPSA5Ci1EVkRfTFVfU0VORF9SUENfU1RBVEUgPSAxMAotRFZEX0hPU1RfU0VORF9SUENfU1RBVEUgPSAxMQotRFZEX0NQTV9OT19DT1BZUklHSFQgPSAwCi1EVkRfQ1BNX0NPUFlSSUdIVEVEID0gMQotRFZEX0NQX1NFQ19OT05FID0gMAotRFZEX0NQX1NFQ19FWElTVCA9IDEKLURWRF9DR01TX1VOUkVTVFJJQ1RFRCA9IDAKLURWRF9DR01TX1NJTkdMRSA9IDIKLURWRF9DR01TX1JFU1RSSUNURUQgPSAzCi0KLUNEUk9NX01BWF9TTE9UUyA9IDI1NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvRExGQ04ucHkgYi9MaWIvcGxhdC1saW51eC9ETEZDTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQxMGFjNC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9ETEZDTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvZGxmY24uaAotX0RMRkNOX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9kbGZjbi5oCi1SVExEX0xBWlkgPSAweDAwMDAxCi1SVExEX05PVyA9IDB4MDAwMDIKLVJUTERfQklORElOR19NQVNLID0gMHgzCi1SVExEX05PTE9BRCA9IDB4MDAwMDQKLVJUTERfR0xPQkFMID0gMHgwMDEwMAotUlRMRF9MT0NBTCA9IDAKLVJUTERfTk9ERUxFVEUgPSAweDAxMDAwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eC9JTi5weSBiL0xpYi9wbGF0LWxpbnV4L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2QzMDAyLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWxpbnV4L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjE1ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1fTkVUSU5FVF9JTl9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZmVhdHVyZXMuaAotX0ZFQVRVUkVTX0ggPSAxCi1fX1VTRV9BTlNJID0gMQotX19GQVZPUl9CU0QgPSAxCi1fSVNPQzk5X1NPVVJDRSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9YT1BFTl9TT1VSQ0UgPSA2MDAKLV9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9QT1NJWF9TT1VSQ0UgPSAxCi1fUE9TSVhfQ19TT1VSQ0UgPSAyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9fVVNFX1BPU0lYID0gMQotX19VU0VfUE9TSVgyID0gMQotX19VU0VfUE9TSVgxOTkzMDkgPSAxCi1fX1VTRV9QT1NJWDE5OTUwNiA9IDEKLV9fVVNFX1hPUEVOID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9VTklYOTggPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9fVVNFX1hPUEVOMksgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRklMRV9PRkZTRVQ2NCA9IDEKLV9fVVNFX01JU0MgPSAxCi1fX1VTRV9CU0QgPSAxCi1fX1VTRV9TVklEID0gMQotX19VU0VfR05VID0gMQotX19VU0VfUkVFTlRSQU5UID0gMQotX19TVERDX0lFQ181NTlfXyA9IDEKLV9fU1REQ19JRUNfNTU5X0NPTVBMRVhfXyA9IDEKLV9fU1REQ19JU09fMTA2NDZfXyA9IDIwMDAwOQotX19HTlVfTElCUkFSWV9fID0gNgotX19HTElCQ19fID0gMgotX19HTElCQ19NSU5PUl9fID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9TWVNfQ0RFRlNfSCA9IDEKLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzBdCi1fX2ZsZXhhcnIgPSBbXQotX19mbGV4YXJyID0gWzFdCi1kZWYgX19BU01OQU1FKGNuYW1lKTogcmV0dXJuIF9fQVNNTkFNRTIgKF9fVVNFUl9MQUJFTF9QUkVGSVhfXywgY25hbWUpCi0KLWRlZiBfX2F0dHJpYnV0ZV9fKHh5eik6IHJldHVybgotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X2FyZ19fICh4KSkpCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybgotCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0VYVEVSTl9JTkxJTkVTID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZ251L3N0dWJzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN0ZGludC5oCi1fU1RESU5UX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3djaGFyLmgKLV9CSVRTX1dDSEFSX0ggPSAxCi1fX1dDSEFSX01JTiA9ICgtMjE0NzQ4MzY0NyAtIDEpCi1fX1dDSEFSX01BWCA9ICgyMTQ3NDgzNjQ3KQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy93b3Jkc2l6ZS5oCi1fX1dPUkRTSVpFID0gMzIKLWRlZiBfX0lOVDY0X0MoYyk6IHJldHVybiBjICMjIEwKLQotZGVmIF9fVUlOVDY0X0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBfX0lOVDY0X0MoYyk6IHJldHVybiBjICMjIExMCi0KLWRlZiBfX1VJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotSU5UOF9NSU4gPSAoLTEyOCkKLUlOVDE2X01JTiA9ICgtMzI3NjctMSkKLUlOVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UNjRfTUlOID0gKC1fX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkKLUlOVDhfTUFYID0gKDEyNykKLUlOVDE2X01BWCA9ICgzMjc2NykKLUlOVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UNjRfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlQ4X01BWCA9ICgyNTUpCi1VSU5UMTZfTUFYID0gKDY1NTM1KQotVUlOVDY0X01BWCA9IChfX1VJTlQ2NF9DKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSkKLUlOVF9MRUFTVDhfTUlOID0gKC0xMjgpCi1JTlRfTEVBU1QxNl9NSU4gPSAoLTMyNzY3LTEpCi1JTlRfTEVBU1QzMl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9MRUFTVDY0X01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRfTEVBU1Q4X01BWCA9ICgxMjcpCi1JTlRfTEVBU1QxNl9NQVggPSAoMzI3NjcpCi1JTlRfTEVBU1QzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVF9MRUFTVDY0X01BWCA9IChfX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpCi1VSU5UX0xFQVNUOF9NQVggPSAoMjU1KQotVUlOVF9MRUFTVDE2X01BWCA9ICg2NTUzNSkKLVVJTlRfTEVBU1Q2NF9NQVggPSAoX19VSU5UNjRfQygxODQ0Njc0NDA3MzcwOTU1MTYxNSkpCi1JTlRfRkFTVDhfTUlOID0gKC0xMjgpCi1JTlRfRkFTVDE2X01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UX0ZBU1QzMl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLUlOVF9GQVNUMTZfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfRkFTVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX0ZBU1Q2NF9NSU4gPSAoLV9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKQotSU5UX0ZBU1Q4X01BWCA9ICgxMjcpCi1JTlRfRkFTVDE2X01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UX0ZBU1QzMl9NQVggPSAoOTIyMzM3MjAzNjg1NDc3NTgwNykKLUlOVF9GQVNUMTZfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlRfRkFTVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UX0ZBU1Q2NF9NQVggPSAoX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKQotVUlOVF9GQVNUOF9NQVggPSAoMjU1KQotVUlOVF9GQVNUNjRfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotSU5UUFRSX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UUFRSX01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UUFRSX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UUFRSX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UTUFYX01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRNQVhfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlRNQVhfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotUFRSRElGRl9NSU4gPSAoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSkKLVBUUkRJRkZfTUFYID0gKDkyMjMzNzIwMzY4NTQ3NzU4MDcpCi1QVFJESUZGX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotUFRSRElGRl9NQVggPSAoMjE0NzQ4MzY0NykKLVNJR19BVE9NSUNfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1TSUdfQVRPTUlDX01BWCA9ICgyMTQ3NDgzNjQ3KQotV0NIQVJfTUlOID0gX19XQ0hBUl9NSU4KLVdDSEFSX01BWCA9IF9fV0NIQVJfTUFYCi1kZWYgSU5UOF9DKGMpOiByZXR1cm4gYwotCi1kZWYgSU5UMTZfQyhjKTogcmV0dXJuIGMKLQotZGVmIElOVDMyX0MoYyk6IHJldHVybiBjCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBMTAotCi1kZWYgVUlOVDhfQyhjKTogcmV0dXJuIGMgIyMgVQotCi1kZWYgVUlOVDE2X0MoYyk6IHJldHVybiBjICMjIFUKLQotZGVmIFVJTlQzMl9DKGMpOiByZXR1cm4gYyAjIyBVCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgVUwKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gYyAjIyBMCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBjICMjIFVMCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgTEwKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgVUxMCi0KLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvdHlwZXMuaAotX0JJVFNfVFlQRVNfSCA9IDEKLV9fRkRfU0VUU0laRSA9IDEwMjQKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvcHRocmVhZHR5cGVzLmgKLV9CSVRTX1BUSFJFQURUWVBFU19IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zY2hlZC5oCi1TQ0hFRF9PVEhFUiA9IDAKLVNDSEVEX0ZJRk8gPSAxCi1TQ0hFRF9SUiA9IDIKLUNTSUdOQUwgPSAweDAwMDAwMGZmCi1DTE9ORV9WTSA9IDB4MDAwMDAxMDAKLUNMT05FX0ZTID0gMHgwMDAwMDIwMAotQ0xPTkVfRklMRVMgPSAweDAwMDAwNDAwCi1DTE9ORV9TSUdIQU5EID0gMHgwMDAwMDgwMAotQ0xPTkVfUElEID0gMHgwMDAwMTAwMAotQ0xPTkVfUFRSQUNFID0gMHgwMDAwMjAwMAotQ0xPTkVfVkZPUksgPSAweDAwMDA0MDAwCi1fX2RlZmluZWRfc2NoZWRwYXJhbSA9IDEKLWRlZiBJTl9DTEFTU0EoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTIxNDc0ODM2NDgpKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gKC0xNjc3NzIxNikKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAoKC0xKSAmIH5JTl9DTEFTU0FfTkVUKQotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtMTA3Mzc0MTgyNCkpID09ICgtMjE0NzQ4MzY0OCkpCi0KLUlOX0NMQVNTQl9ORVQgPSAoLTY1NTM2KQotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQl9ORVQpCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTUzNjg3MDkxMikpID09ICgtMTA3Mzc0MTgyNCkpCi0KLUlOX0NMQVNTQ19ORVQgPSAoLTI1NikKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQ19ORVQpCi1kZWYgSU5fQ0xBU1NEKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLWRlZiBJTl9NVUxUSUNBU1QoYSk6IHJldHVybiBJTl9DTEFTU0QoYSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC01MzY4NzA5MTIpKQotCi1kZWYgSU5fQkFEQ0xBU1MoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JTkVUNl9BRERSU1RSTEVOID0gNDYKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc29ja2V0LmgKLQotIyBJbmNsdWRlZCBmcm9tIGxpbWl0cy5oCi1fTElCQ19MSU1JVFNfSF8gPSAxCi1NQl9MRU5fTUFYID0gMTYKLV9MSU1JVFNfSCA9IDEKLUNIQVJfQklUID0gOAotU0NIQVJfTUlOID0gKC0xMjgpCi1TQ0hBUl9NQVggPSAxMjcKLVVDSEFSX01BWCA9IDI1NQotQ0hBUl9NSU4gPSAwCi1DSEFSX01BWCA9IFVDSEFSX01BWAotQ0hBUl9NSU4gPSBTQ0hBUl9NSU4KLUNIQVJfTUFYID0gU0NIQVJfTUFYCi1TSFJUX01JTiA9ICgtMzI3NjgpCi1TSFJUX01BWCA9IDMyNzY3Ci1VU0hSVF9NQVggPSA2NTUzNQotSU5UX01BWCA9IDIxNDc0ODM2NDcKLUxPTkdfTUFYID0gOTIyMzM3MjAzNjg1NDc3NTgwNwotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtTE9OR19NQVggLSAxKQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wb3NpeDFfbGltLmgKLV9CSVRTX1BPU0lYMV9MSU1fSCA9IDEKLV9QT1NJWF9BSU9fTElTVElPX01BWCA9IDIKLV9QT1NJWF9BSU9fTUFYID0gMQotX1BPU0lYX0FSR19NQVggPSA0MDk2Ci1fUE9TSVhfQ0hJTERfTUFYID0gNgotX1BPU0lYX0RFTEFZVElNRVJfTUFYID0gMzIKLV9QT1NJWF9MSU5LX01BWCA9IDgKLV9QT1NJWF9NQVhfQ0FOT04gPSAyNTUKLV9QT1NJWF9NQVhfSU5QVVQgPSAyNTUKLV9QT1NJWF9NUV9PUEVOX01BWCA9IDgKLV9QT1NJWF9NUV9QUklPX01BWCA9IDMyCi1fUE9TSVhfTkdST1VQU19NQVggPSAwCi1fUE9TSVhfT1BFTl9NQVggPSAxNgotX1BPU0lYX0ZEX1NFVFNJWkUgPSBfUE9TSVhfT1BFTl9NQVgKLV9QT1NJWF9OQU1FX01BWCA9IDE0Ci1fUE9TSVhfUEFUSF9NQVggPSAyNTYKLV9QT1NJWF9QSVBFX0JVRiA9IDUxMgotX1BPU0lYX1JUU0lHX01BWCA9IDgKLV9QT1NJWF9TRU1fTlNFTVNfTUFYID0gMjU2Ci1fUE9TSVhfU0VNX1ZBTFVFX01BWCA9IDMyNzY3Ci1fUE9TSVhfU0lHUVVFVUVfTUFYID0gMzIKLV9QT1NJWF9TU0laRV9NQVggPSAzMjc2NwotX1BPU0lYX1NUUkVBTV9NQVggPSA4Ci1fUE9TSVhfVFpOQU1FX01BWCA9IDYKLV9QT1NJWF9RTElNSVQgPSAxCi1fUE9TSVhfSElXQVQgPSBfUE9TSVhfUElQRV9CVUYKLV9QT1NJWF9VSU9fTUFYSU9WID0gMTYKLV9QT1NJWF9UVFlfTkFNRV9NQVggPSA5Ci1fUE9TSVhfVElNRVJfTUFYID0gMzIKLV9QT1NJWF9MT0dJTl9OQU1FX01BWCA9IDkKLV9QT1NJWF9DTE9DS1JFU19NSU4gPSAyMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9sb2NhbF9saW0uaAotCi0jIEluY2x1ZGVkIGZyb20gbGludXgvbGltaXRzLmgKLU5SX09QRU4gPSAxMDI0Ci1OR1JPVVBTX01BWCA9IDMyCi1BUkdfTUFYID0gMTMxMDcyCi1DSElMRF9NQVggPSA5OTkKLU9QRU5fTUFYID0gMjU2Ci1MSU5LX01BWCA9IDEyNwotTUFYX0NBTk9OID0gMjU1Ci1NQVhfSU5QVVQgPSAyNTUKLU5BTUVfTUFYID0gMjU1Ci1QQVRIX01BWCA9IDQwOTYKLVBJUEVfQlVGID0gNDA5NgotUlRTSUdfTUFYID0gMzIKLV9QT1NJWF9USFJFQURfS0VZU19NQVggPSAxMjgKLVBUSFJFQURfS0VZU19NQVggPSAxMDI0Ci1fUE9TSVhfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDQKLVBUSFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TID0gX1BPU0lYX1RIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMKLV9QT1NJWF9USFJFQURfVEhSRUFEU19NQVggPSA2NAotUFRIUkVBRF9USFJFQURTX01BWCA9IDEwMjQKLUFJT19QUklPX0RFTFRBX01BWCA9IDIwCi1QVEhSRUFEX1NUQUNLX01JTiA9IDE2Mzg0Ci1USU1FUl9NQVggPSAyNTYKLVNTSVpFX01BWCA9IExPTkdfTUFYCi1OR1JPVVBTX01BWCA9IF9QT1NJWF9OR1JPVVBTX01BWAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wb3NpeDJfbGltLmgKLV9CSVRTX1BPU0lYMl9MSU1fSCA9IDEKLV9QT1NJWDJfQkNfQkFTRV9NQVggPSA5OQotX1BPU0lYMl9CQ19ESU1fTUFYID0gMjA0OAotX1BPU0lYMl9CQ19TQ0FMRV9NQVggPSA5OQotX1BPU0lYMl9CQ19TVFJJTkdfTUFYID0gMTAwMAotX1BPU0lYMl9DT0xMX1dFSUdIVFNfTUFYID0gMgotX1BPU0lYMl9FWFBSX05FU1RfTUFYID0gMzIKLV9QT1NJWDJfTElORV9NQVggPSAyMDQ4Ci1fUE9TSVgyX1JFX0RVUF9NQVggPSAyNTUKLV9QT1NJWDJfQ0hBUkNMQVNTX05BTUVfTUFYID0gMTQKLUJDX0JBU0VfTUFYID0gX1BPU0lYMl9CQ19CQVNFX01BWAotQkNfRElNX01BWCA9IF9QT1NJWDJfQkNfRElNX01BWAotQkNfU0NBTEVfTUFYID0gX1BPU0lYMl9CQ19TQ0FMRV9NQVgKLUJDX1NUUklOR19NQVggPSBfUE9TSVgyX0JDX1NUUklOR19NQVgKLUNPTExfV0VJR0hUU19NQVggPSAyNTUKLUVYUFJfTkVTVF9NQVggPSBfUE9TSVgyX0VYUFJfTkVTVF9NQVgKLUxJTkVfTUFYID0gX1BPU0lYMl9MSU5FX01BWAotQ0hBUkNMQVNTX05BTUVfTUFYID0gMjA0OAotUkVfRFVQX01BWCA9ICgweDdmZmYpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3hvcGVuX2xpbS5oCi1fWE9QRU5fTElNX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3N0ZGlvX2xpbS5oCi1MX3RtcG5hbSA9IDIwCi1UTVBfTUFYID0gMjM4MzI4Ci1GSUxFTkFNRV9NQVggPSA0MDk2Ci1MX2N0ZXJtaWQgPSA5Ci1MX2N1c2VyaWQgPSA5Ci1GT1BFTl9NQVggPSAxNgotSU9WX01BWCA9IDEwMjQKLV9YT1BFTl9JT1ZfTUFYID0gX1BPU0lYX1VJT19NQVhJT1YKLU5MX0FSR01BWCA9IF9QT1NJWF9BUkdfTUFYCi1OTF9MQU5HTUFYID0gX1BPU0lYMl9MSU5FX01BWAotTkxfTVNHTUFYID0gSU5UX01BWAotTkxfTk1BWCA9IElOVF9NQVgKLU5MX1NFVE1BWCA9IElOVF9NQVgKLU5MX1RFWFRNQVggPSBJTlRfTUFYCi1OWkVSTyA9IDIwCi1XT1JEX0JJVCA9IDE2Ci1XT1JEX0JJVCA9IDMyCi1XT1JEX0JJVCA9IDY0Ci1XT1JEX0JJVCA9IDE2Ci1XT1JEX0JJVCA9IDMyCi1XT1JEX0JJVCA9IDY0Ci1XT1JEX0JJVCA9IDMyCi1MT05HX0JJVCA9IDMyCi1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDMyCi1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDY0Ci1MT05HX0JJVCA9IDMyCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QRl9VTlNQRUMgPSAwCi1QRl9MT0NBTCA9IDEKLVBGX1VOSVggPSBQRl9MT0NBTAotUEZfRklMRSA9IFBGX0xPQ0FMCi1QRl9JTkVUID0gMgotUEZfQVgyNSA9IDMKLVBGX0lQWCA9IDQKLVBGX0FQUExFVEFMSyA9IDUKLVBGX05FVFJPTSA9IDYKLVBGX0JSSURHRSA9IDcKLVBGX0FUTVBWQyA9IDgKLVBGX1gyNSA9IDkKLVBGX0lORVQ2ID0gMTAKLVBGX1JPU0UgPSAxMQotUEZfREVDbmV0ID0gMTIKLVBGX05FVEJFVUkgPSAxMwotUEZfU0VDVVJJVFkgPSAxNAotUEZfS0VZID0gMTUKLVBGX05FVExJTksgPSAxNgotUEZfUk9VVEUgPSBQRl9ORVRMSU5LCi1QRl9QQUNLRVQgPSAxNwotUEZfQVNIID0gMTgKLVBGX0VDT05FVCA9IDE5Ci1QRl9BVE1TVkMgPSAyMAotUEZfU05BID0gMjIKLVBGX0lSREEgPSAyMwotUEZfUFBQT1ggPSAyNAotUEZfV0FOUElQRSA9IDI1Ci1QRl9CTFVFVE9PVEggPSAzMQotUEZfTUFYID0gMzIKLUFGX1VOU1BFQyA9IFBGX1VOU1BFQwotQUZfTE9DQUwgPSBQRl9MT0NBTAotQUZfVU5JWCA9IFBGX1VOSVgKLUFGX0ZJTEUgPSBQRl9GSUxFCi1BRl9JTkVUID0gUEZfSU5FVAotQUZfQVgyNSA9IFBGX0FYMjUKLUFGX0lQWCA9IFBGX0lQWAotQUZfQVBQTEVUQUxLID0gUEZfQVBQTEVUQUxLCi1BRl9ORVRST00gPSBQRl9ORVRST00KLUFGX0JSSURHRSA9IFBGX0JSSURHRQotQUZfQVRNUFZDID0gUEZfQVRNUFZDCi1BRl9YMjUgPSBQRl9YMjUKLUFGX0lORVQ2ID0gUEZfSU5FVDYKLUFGX1JPU0UgPSBQRl9ST1NFCi1BRl9ERUNuZXQgPSBQRl9ERUNuZXQKLUFGX05FVEJFVUkgPSBQRl9ORVRCRVVJCi1BRl9TRUNVUklUWSA9IFBGX1NFQ1VSSVRZCi1BRl9LRVkgPSBQRl9LRVkKLUFGX05FVExJTksgPSBQRl9ORVRMSU5LCi1BRl9ST1VURSA9IFBGX1JPVVRFCi1BRl9QQUNLRVQgPSBQRl9QQUNLRVQKLUFGX0FTSCA9IFBGX0FTSAotQUZfRUNPTkVUID0gUEZfRUNPTkVUCi1BRl9BVE1TVkMgPSBQRl9BVE1TVkMKLUFGX1NOQSA9IFBGX1NOQQotQUZfSVJEQSA9IFBGX0lSREEKLUFGX1BQUE9YID0gUEZfUFBQT1gKLUFGX1dBTlBJUEUgPSBQRl9XQU5QSVBFCi1BRl9CTFVFVE9PVEggPSBQRl9CTFVFVE9PVEgKLUFGX01BWCA9IFBGX01BWAotU09MX1JBVyA9IDI1NQotU09MX0RFQ05FVCA9IDI2MQotU09MX1gyNSA9IDI2MgotU09MX1BBQ0tFVCA9IDI2MwotU09MX0FUTSA9IDI2NAotU09MX0FBTCA9IDI2NQotU09MX0lSREEgPSAyNjYKLVNPTUFYQ09OTiA9IDEyOAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zb2NrYWRkci5oCi1fQklUU19TT0NLQUREUl9IID0gMQotZGVmIF9fU09DS0FERFJfQ09NTU9OKHNhX3ByZWZpeCk6IHJldHVybiBcCi0KLV9TU19TSVpFID0gMTI4Ci1kZWYgQ01TR19GSVJTVEhEUihtaGRyKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gYXNtL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBhc20vc29ja2lvcy5oCi1GSU9TRVRPV04gPSAweDg5MDEKLVNJT0NTUEdSUCA9IDB4ODkwMgotRklPR0VUT1dOID0gMHg4OTAzCi1TSU9DR1BHUlAgPSAweDg5MDQKLVNJT0NBVE1BUksgPSAweDg5MDUKLVNJT0NHU1RBTVAgPSAweDg5MDYKLVNPTF9TT0NLRVQgPSAxCi1TT19ERUJVRyA9IDEKLVNPX1JFVVNFQUREUiA9IDIKLVNPX1RZUEUgPSAzCi1TT19FUlJPUiA9IDQKLVNPX0RPTlRST1VURSA9IDUKLVNPX0JST0FEQ0FTVCA9IDYKLVNPX1NOREJVRiA9IDcKLVNPX1JDVkJVRiA9IDgKLVNPX0tFRVBBTElWRSA9IDkKLVNPX09PQklOTElORSA9IDEwCi1TT19OT19DSEVDSyA9IDExCi1TT19QUklPUklUWSA9IDEyCi1TT19MSU5HRVIgPSAxMwotU09fQlNEQ09NUEFUID0gMTQKLVNPX1BBU1NDUkVEID0gMTYKLVNPX1BFRVJDUkVEID0gMTcKLVNPX1JDVkxPV0FUID0gMTgKLVNPX1NORExPV0FUID0gMTkKLVNPX1JDVlRJTUVPID0gMjAKLVNPX1NORFRJTUVPID0gMjEKLVNPX1NFQ1VSSVRZX0FVVEhFTlRJQ0FUSU9OID0gMjIKLVNPX1NFQ1VSSVRZX0VOQ1JZUFRJT05fVFJBTlNQT1JUID0gMjMKLVNPX1NFQ1VSSVRZX0VOQ1JZUFRJT05fTkVUV09SSyA9IDI0Ci1TT19CSU5EVE9ERVZJQ0UgPSAyNQotU09fQVRUQUNIX0ZJTFRFUiA9IDI2Ci1TT19ERVRBQ0hfRklMVEVSID0gMjcKLVNPX1BFRVJOQU1FID0gMjgKLVNPX1RJTUVTVEFNUCA9IDI5Ci1TQ01fVElNRVNUQU1QID0gU09fVElNRVNUQU1QCi1TT19BQ0NFUFRDT05OID0gMzAKLVNPQ0tfU1RSRUFNID0gMQotU09DS19ER1JBTSA9IDIKLVNPQ0tfUkFXID0gMwotU09DS19SRE0gPSA0Ci1TT0NLX1NFUVBBQ0tFVCA9IDUKLVNPQ0tfUEFDS0VUID0gMTAKLVNPQ0tfTUFYID0gKFNPQ0tfUEFDS0VUKzEpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2luLmgKLUlQX1RPUyA9IDEKLUlQX1RUTCA9IDIKLUlQX0hEUklOQ0wgPSAzCi1JUF9PUFRJT05TID0gNAotSVBfUk9VVEVSX0FMRVJUID0gNQotSVBfUkVDVk9QVFMgPSA2Ci1JUF9SRVRPUFRTID0gNwotSVBfUEtUSU5GTyA9IDgKLUlQX1BLVE9QVElPTlMgPSA5Ci1JUF9QTVRVRElTQyA9IDEwCi1JUF9NVFVfRElTQ09WRVIgPSAxMAotSVBfUkVDVkVSUiA9IDExCi1JUF9SRUNWVFRMID0gMTIKLUlQX1JFQ1ZUT1MgPSAxMwotSVBfTVVMVElDQVNUX0lGID0gMzIKLUlQX01VTFRJQ0FTVF9UVEwgPSAzMwotSVBfTVVMVElDQVNUX0xPT1AgPSAzNAotSVBfQUREX01FTUJFUlNISVAgPSAzNQotSVBfRFJPUF9NRU1CRVJTSElQID0gMzYKLUlQX1JFQ1ZSRVRPUFRTID0gSVBfUkVUT1BUUwotSVBfUE1UVURJU0NfRE9OVCA9IDAKLUlQX1BNVFVESVNDX1dBTlQgPSAxCi1JUF9QTVRVRElTQ19ETyA9IDIKLVNPTF9JUCA9IDAKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBWNl9BRERSRk9STSA9IDEKLUlQVjZfUEtUSU5GTyA9IDIKLUlQVjZfSE9QT1BUUyA9IDMKLUlQVjZfRFNUT1BUUyA9IDQKLUlQVjZfUlRIRFIgPSA1Ci1JUFY2X1BLVE9QVElPTlMgPSA2Ci1JUFY2X0NIRUNLU1VNID0gNwotSVBWNl9IT1BMSU1JVCA9IDgKLUlQVjZfTkVYVEhPUCA9IDkKLUlQVjZfQVVUSEhEUiA9IDEwCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDE2Ci1JUFY2X01VTFRJQ0FTVF9JRiA9IDE3Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTgKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxOQotSVBWNl9KT0lOX0dST1VQID0gMjAKLUlQVjZfTEVBVkVfR1JPVVAgPSAyMQotSVBWNl9ST1VURVJfQUxFUlQgPSAyMgotSVBWNl9NVFVfRElTQ09WRVIgPSAyMwotSVBWNl9NVFUgPSAyNAotSVBWNl9SRUNWRVJSID0gMjUKLUlQVjZfUlhIT1BPUFRTID0gSVBWNl9IT1BPUFRTCi1JUFY2X1JYRFNUT1BUUyA9IElQVjZfRFNUT1BUUwotSVBWNl9BRERfTUVNQkVSU0hJUCA9IElQVjZfSk9JTl9HUk9VUAotSVBWNl9EUk9QX01FTUJFUlNISVAgPSBJUFY2X0xFQVZFX0dST1VQCi1JUFY2X1BNVFVESVNDX0RPTlQgPSAwCi1JUFY2X1BNVFVESVNDX1dBTlQgPSAxCi1JUFY2X1BNVFVESVNDX0RPID0gMgotU09MX0lQVjYgPSA0MQotU09MX0lDTVBWNiA9IDU4Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIGVuZGlhbi5oCi1fRU5ESUFOX0ggPSAxCi1fX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fX0JJR19FTkRJQU4gPSA0MzIxCi1fX1BEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2VuZGlhbi5oCi1fX0JZVEVfT1JERVIgPSBfX0xJVFRMRV9FTkRJQU4KLV9fRkxPQVRfV09SRF9PUkRFUiA9IF9fQllURV9PUkRFUgotTElUVExFX0VORElBTiA9IF9fTElUVExFX0VORElBTgotQklHX0VORElBTiA9IF9fQklHX0VORElBTgotUERQX0VORElBTiA9IF9fUERQX0VORElBTgotQllURV9PUkRFUiA9IF9fQllURV9PUkRFUgotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9ieXRlc3dhcC5oCi1fQklUU19CWVRFU1dBUF9IID0gMQotZGVmIF9fYnN3YXBfY29uc3RhbnRfMTYoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzE2KHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8xNih4KTogcmV0dXJuIF9fYnN3YXBfY29uc3RhbnRfMTYgKHgpCi0KLWRlZiBfX2Jzd2FwX2NvbnN0YW50XzMyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8zMih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfMzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzMyKHgpOiByZXR1cm4gX19ic3dhcF9jb25zdGFudF8zMiAoeCkKLQotZGVmIF9fYnN3YXBfY29uc3RhbnRfNjQoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzY0KHgpOiByZXR1cm4gXAotCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19ic3dhcF8zMiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19ic3dhcF8xNiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gX19ic3dhcF8zMiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gX19ic3dhcF8xNiAoeCkKLQotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvVFlQRVMucHkgYi9MaWIvcGxhdC1saW51eC9UWVBFUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdhMzI0Yi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9UWVBFUy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oCi1fU1lTX1RZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90eXBlcy5oCi1fQklUU19UWVBFU19IID0gMQotX19GRF9TRVRTSVpFID0gMTAyNAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wdGhyZWFkdHlwZXMuaAotX0JJVFNfUFRIUkVBRFRZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NjaGVkLmgKLVNDSEVEX09USEVSID0gMAotU0NIRURfRklGTyA9IDEKLVNDSEVEX1JSID0gMgotQ1NJR05BTCA9IDB4MDAwMDAwZmYKLUNMT05FX1ZNID0gMHgwMDAwMDEwMAotQ0xPTkVfRlMgPSAweDAwMDAwMjAwCi1DTE9ORV9GSUxFUyA9IDB4MDAwMDA0MDAKLUNMT05FX1NJR0hBTkQgPSAweDAwMDAwODAwCi1DTE9ORV9QSUQgPSAweDAwMDAxMDAwCi1DTE9ORV9QVFJBQ0UgPSAweDAwMDAyMDAwCi1DTE9ORV9WRk9SSyA9IDB4MDAwMDQwMDAKLV9fZGVmaW5lZF9zY2hlZHBhcmFtID0gMQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1fVElNRV9IID0gMQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90aW1lLmgKLV9CSVRTX1RJTUVfSCA9IDEKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotQ0xPQ0tfUkVBTFRJTUUgPSAwCi1DTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQgPSAyCi1DTE9DS19USFJFQURfQ1BVVElNRV9JRCA9IDMKLVRJTUVSX0FCU1RJTUUgPSAxCi1fU1RSVUNUX1RJTUVWQUwgPSAxCi1DTEtfVENLID0gQ0xPQ0tTX1BFUl9TRUMKLV9fY2xvY2tfdF9kZWZpbmVkID0gMQotX190aW1lX3RfZGVmaW5lZCA9IDEKLV9fY2xvY2tpZF90X2RlZmluZWQgPSAxCi1fX3RpbWVyX3RfZGVmaW5lZCA9IDEKLV9fdGltZXNwZWNfZGVmaW5lZCA9IDEKLWRlZiBfX2lzbGVhcCh5ZWFyKTogcmV0dXJuIFwKLQotX19CSVRfVFlQRVNfREVGSU5FRF9fID0gMQotCi0jIEluY2x1ZGVkIGZyb20gZW5kaWFuLmgKLV9FTkRJQU5fSCA9IDEKLV9fTElUVExFX0VORElBTiA9IDEyMzQKLV9fQklHX0VORElBTiA9IDQzMjEKLV9fUERQX0VORElBTiA9IDM0MTIKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvZW5kaWFuLmgKLV9fQllURV9PUkRFUiA9IF9fTElUVExFX0VORElBTgotX19GTE9BVF9XT1JEX09SREVSID0gX19CWVRFX09SREVSCi1MSVRUTEVfRU5ESUFOID0gX19MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX19CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX19QRFBfRU5ESUFOCi1CWVRFX09SREVSID0gX19CWVRFX09SREVSCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLV9TWVNfU0VMRUNUX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NlbGVjdC5oCi1kZWYgX19GRF9aRVJPKGZkc3ApOiByZXR1cm4gXAotCi1kZWYgX19GRF9aRVJPKHNldCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc2lnc2V0LmgKLV9TSUdTRVRfSF90eXBlcyA9IDEKLV9TSUdTRVRfSF9mbnMgPSAxCi1kZWYgX19zaWdtYXNrKHNpZyk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2VtcHR5c2V0KHNldCk6IHJldHVybiBcCi0KLWRlZiBfX3NpZ2ZpbGxzZXQoc2V0KTogcmV0dXJuIFwKLQotZGVmIF9fc2lnaXNlbXB0eXNldChzZXQpOiByZXR1cm4gXAotCi1kZWYgX19GREVMVChkKTogcmV0dXJuICgoZCkgLyBfX05GREJJVFMpCi0KLUZEX1NFVFNJWkUgPSBfX0ZEX1NFVFNJWkUKLWRlZiBGRF9aRVJPKGZkc2V0cCk6IHJldHVybiBfX0ZEX1pFUk8gKGZkc2V0cCkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5c21hY3Jvcy5oCi1fU1lTX1NZU01BQ1JPU19IID0gMQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKGludCkoKChkZXYpID4+IDgpICYgMHhmZikpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChpbnQpKChkZXYpICYgMHhmZikpCi0KLWRlZiBtYWpvcihkZXYpOiByZXR1cm4gKCgoZGV2KS5fX3ZhbFsxXSA+PiA4KSAmIDB4ZmYpCi0KLWRlZiBtaW5vcihkZXYpOiByZXR1cm4gKChkZXYpLl9fdmFsWzFdICYgMHhmZikKLQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKChkZXYpLl9fdmFsWzBdID4+IDgpICYgMHhmZikKLQotZGVmIG1pbm9yKGRldik6IHJldHVybiAoKGRldikuX192YWxbMF0gJiAweGZmKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgvcmVnZW4gYi9MaWIvcGxhdC1saW51eC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzc2OTUwZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1saW51eC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWVgIGluCi1MaW51eCopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIExpbnV4IHN5c3RlbSAxPiYyCi0JZXhpdCAxOzsKLWVzYWMKLXNldCAtdgotaDJweSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIC91c3IvaW5jbHVkZS9kbGZjbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXRic2QxL0lOLnB5IGIvTGliL3BsYXQtbmV0YnNkMS9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0YzUxZS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXRic2QxL0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBJUCA9IDQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fRU5DQVAgPSA5OAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotZGVmIF9fSVBBRERSKHgpOiByZXR1cm4gKCh1X2ludDMyX3QpKHgpKQotCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9NQVggPSAxMjgKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9SRUNWSUYgPSAyMAotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fSURQICsgMSkKLUlQQ1RMX0ZPUldBUkRJTkcgPSAxCi1JUENUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBDVExfREVGVFRMID0gMwotSVBDVExfREVGTVRVID0gNAotSVBDVExfRk9SV1NSQ1JUID0gNQotSVBDVExfRElSRUNURURCQ0FTVCA9IDYKLUlQQ1RMX0FMTE9XU1JDUlQgPSA3Ci1JUENUTF9NQVhJRCA9IDgKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuIGIvTGliL3BsYXQtbmV0YnNkMS9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1uZXh0My9yZWdlbiBiL0xpYi9wbGF0LW5leHQzL3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YTAzNjEzLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LW5leHQzL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLUlOQ0xVREU9Ii9OZXh0RGV2ZWxvcGVyL0hlYWRlcnM7L05leHREZXZlbG9wZXIvSGVhZGVycy9hbnNpOy9OZXh0RGV2ZWxvcGVyL0hlYWRlcnMvYnNkIgotZXhwb3J0IElOQ0xVREUKLQotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9ic2QvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvQ0RJTy5weSBiL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY2YjUwLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvY2Rpby5oCi1DRFJPTV9MQkEgPSAweDAxCi1DRFJPTV9NU0YgPSAweDAyCi1DRFJPTV9EQVRBX1RSQUNLID0gMHgwNAotQ0RST01fTEVBRE9VVCA9IDB4QUEKLUNEUk9NX0FVRElPX0lOVkFMSUQgPSAweDAwCi1DRFJPTV9BVURJT19QTEFZID0gMHgxMQotQ0RST01fQVVESU9fUEFVU0VEID0gMHgxMgotQ0RST01fQVVESU9fQ09NUExFVEVEID0gMHgxMwotQ0RST01fQVVESU9fRVJST1IgPSAweDE0Ci1DRFJPTV9BVURJT19OT19TVEFUVVMgPSAweDE1Ci1DRFJPTV9EQV9OT19TVUJDT0RFID0gMHgwMAotQ0RST01fREFfU1VCUSA9IDB4MDEKLUNEUk9NX0RBX0FMTF9TVUJDT0RFID0gMHgwMgotQ0RST01fREFfU1VCQ09ERV9PTkxZID0gMHgwMwotQ0RST01fWEFfREFUQSA9IDB4MDAKLUNEUk9NX1hBX1NFQ1RPUl9EQVRBID0gMHgwMQotQ0RST01fWEFfREFUQV9XX0VSUk9SID0gMHgwMgotQ0RST01fQkxLXzUxMiA9IDUxMgotQ0RST01fQkxLXzEwMjQgPSAxMDI0Ci1DRFJPTV9CTEtfMjA0OCA9IDIwNDgKLUNEUk9NX0JMS18yMDU2ID0gMjA1NgotQ0RST01fQkxLXzIzMzYgPSAyMzM2Ci1DRFJPTV9CTEtfMjM0MCA9IDIzNDAKLUNEUk9NX0JMS18yMzUyID0gMjM1MgotQ0RST01fQkxLXzIzNjggPSAyMzY4Ci1DRFJPTV9CTEtfMjQ0OCA9IDI0NDgKLUNEUk9NX0JMS18yNjQ2ID0gMjY0NgotQ0RST01fQkxLXzI2NDcgPSAyNjQ3Ci1DRFJPTV9CTEtfU1VCQ09ERSA9IDk2Ci1DRFJPTV9OT1JNQUxfU1BFRUQgPSAweDAwCi1DRFJPTV9ET1VCTEVfU1BFRUQgPSAweDAxCi1DRFJPTV9RVUFEX1NQRUVEID0gMHgwMwotQ0RST01fVFdFTFZFX1NQRUVEID0gMHgwQwotQ0RST01fTUFYSU1VTV9TUEVFRCA9IDB4ZmYKLUNESU9DID0gKDB4MDQgPDwgOCkKLUNEUk9NUEFVU0UgPSAoQ0RJT0N8MTUxKQotQ0RST01SRVNVTUUgPSAoQ0RJT0N8MTUyKQotQ0RST01QTEFZTVNGID0gKENESU9DfDE1MykKLUNEUk9NUExBWVRSS0lORCA9IChDRElPQ3wxNTQpCi1DRFJPTVJFQURUT0NIRFIgPSAoQ0RJT0N8MTU1KQotQ0RST01SRUFEVE9DRU5UUlkgPSAoQ0RJT0N8MTU2KQotQ0RST01TVE9QID0gKENESU9DfDE1NykKLUNEUk9NU1RBUlQgPSAoQ0RJT0N8MTU4KQotQ0RST01FSkVDVCA9IChDRElPQ3wxNTkpCi1DRFJPTVZPTENUUkwgPSAoQ0RJT0N8MTYwKQotQ0RST01TVUJDSE5MID0gKENESU9DfDE2MSkKLUNEUk9NUkVBRE1PREUyID0gKENESU9DfDE2MikKLUNEUk9NUkVBRE1PREUxID0gKENESU9DfDE2MykKLUNEUk9NUkVBRE9GRlNFVCA9IChDRElPQ3wxNjQpCi1DRFJPTUdCTEtNT0RFID0gKENESU9DfDE2NSkKLUNEUk9NU0JMS01PREUgPSAoQ0RJT0N8MTY2KQotQ0RST01DRERBID0gKENESU9DfDE2NykKLUNEUk9NQ0RYQSA9IChDRElPQ3wxNjgpCi1DRFJPTVNVQkNPREUgPSAoQ0RJT0N8MTY5KQotQ0RST01HRFJWU1BFRUQgPSAoQ0RJT0N8MTcwKQotQ0RST01TRFJWU1BFRUQgPSAoQ0RJT0N8MTcxKQotU0NNRF9SRUFEX1RPQyA9IDB4NDMKLVNDTURfUExBWUFVRElPX01TRiA9IDB4NDcKLVNDTURfUExBWUFVRElPX1RJID0gMHg0OAotU0NNRF9QQVVTRV9SRVNVTUUgPSAweDRCCi1TQ01EX1JFQURfU1VCQ0hBTk5FTCA9IDB4NDIKLVNDTURfUExBWUFVRElPMTAgPSAweDQ1Ci1TQ01EX1BMQVlUUkFDS19SRUwxMCA9IDB4NDkKLVNDTURfUkVBRF9IRUFERVIgPSAweDQ0Ci1TQ01EX1BMQVlBVURJTzEyID0gMHhBNQotU0NNRF9QTEFZVFJBQ0tfUkVMMTIgPSAweEE5Ci1TQ01EX0NEX1BMQVlCQUNLX0NPTlRST0wgPSAweEM5Ci1TQ01EX0NEX1BMQVlCQUNLX1NUQVRVUyA9IDB4QzQKLVNDTURfUkVBRF9DRERBID0gMHhEOAotU0NNRF9SRUFEX0NEWEEgPSAweERCCi1TQ01EX1JFQURfQUxMX1NVQkNPREVTID0gMHhERgotQ0RST01fTU9ERTJfU0laRSA9IDIzMzYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weSBiL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQ5MjM1MC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvRExGQ04ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL2RsZmNuLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVJUTERfTEFaWSA9IDB4MDAwMDEKLVJUTERfTk9XID0gMHgwMDAwMgotUlRMRF9OT0xPQUQgPSAweDAwMDA0Ci1SVExEX0dMT0JBTCA9IDB4MDAxMDAKLVJUTERfTE9DQUwgPSAweDAwMDAwCi1SVExEX1BBUkVOVCA9IDB4MDAyMDAKLVJUTERfR1JPVVAgPSAweDAwNDAwCi1SVExEX1dPUkxEID0gMHgwMDgwMAotUlRMRF9OT0RFTEVURSA9IDB4MDEwMDAKLVJUTERfQ09ORkdFTiA9IDB4MTAwMDAKLVJUTERfUkVMX1JFTEFUSVZFID0gMHgwMDAwMQotUlRMRF9SRUxfRVhFQyA9IDB4MDAwMDIKLVJUTERfUkVMX0RFUEVORFMgPSAweDAwMDA0Ci1SVExEX1JFTF9QUkVMT0FEID0gMHgwMDAwOAotUlRMRF9SRUxfU0VMRiA9IDB4MDAwMTAKLVJUTERfUkVMX1dFQUsgPSAweDAwMDIwCi1SVExEX1JFTF9BTEwgPSAweDAwZmZmCi1SVExEX01FTU9SWSA9IDB4MDEwMDAKLVJUTERfU1RSSVAgPSAweDAyMDAwCi1SVExEX05PSEVBUCA9IDB4MDQwMDAKLVJUTERfQ09ORlNFVCA9IDB4MTAwMDAKLVJUTERfRElfTE1JRCA9IDEKLVJUTERfRElfTElOS01BUCA9IDIKLVJUTERfRElfQ09ORklHQUREUiA9IDMKLVJUTERfRElfTUFYID0gMwpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L0lOLnB5IGIvTGliL3BsYXQtc3Vub3M1L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTcyZWFkLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MjEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJlYW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Zub2RlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90X2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUxPQ0tfSEVMRF9WQUxVRSA9IDB4ZmYKLWRlZiBTUElOX0xPQ0socGwpOiByZXR1cm4gKChwbCkgPiBpcGx0b3NwbChMT0NLX0xFVkVMKSkKLQotZGVmIExPQ0tfU0FNUExFX0lOVEVSVkFMKGkpOiByZXR1cm4gKCgoaSkgJiAweGZmKSA9PSAwKQotCi1DTE9DS19MRVZFTCA9IDEwCi1MT0NLX0xFVkVMID0gMTAKLURJU1BfTEVWRUwgPSAoTE9DS19MRVZFTCArIDEpCi1QVFIyNF9MU0IgPSA1Ci1QVFIyNF9NU0IgPSAoUFRSMjRfTFNCICsgMjQpCi1QVFIyNF9BTElHTiA9IDMyCi1QVFIyNF9CQVNFID0gMHhlMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BhcmFtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU1BWF9JTlBVVCA9IDUxMgotTUFYX0NBTk9OID0gMjU2Ci1VSURfTk9CT0RZID0gNjAwMDEKLUdJRF9OT0JPRFkgPSBVSURfTk9CT0RZCi1VSURfTk9BQ0NFU1MgPSA2MDAwMgotTUFYX1RBU0tJRCA9IDk5OTk5OQotTUFYX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfSlVNUFBJRCA9IDEwMDAwMAotREVGQVVMVF9NQVhQSUQgPSAzMDAwMAotREVGQVVMVF9KVU1QUElEID0gMAotTUFYVUlEID0gMjE0NzQ4MzY0NwotTUFYUFJPSklEID0gTUFYVUlECi1NQVhMSU5LID0gMzI3NjcKLU5NT1VOVCA9IDQwCi1DQU5CU0laID0gMjU2Ci1OT0ZJTEUgPSAyMAotTkdST1VQU19VTUlOID0gMAotTkdST1VQU19VTUFYID0gMzIKLU5HUk9VUFNfTUFYX0RFRkFVTFQgPSAxNgotTlpFUk8gPSAyMAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTUFTSyA9IDBvMjIKLUNETElNSVQgPSAoMTw8MTEpCi1OQlBTID0gMHgyMDAwMAotTkJQU0NUUiA9IDUxMgotVUJTSVpFID0gNTEyCi1TQ1RSU0hGVCA9IDkKLVNZU05BTUUgPSA5Ci1QUkVNT1RFID0gMzkKLU1BWFBBVEhMRU4gPSAxMDI0Ci1NQVhTWU1MSU5LUyA9IDIwCi1NQVhOQU1FTEVOID0gMjU2Ci1OQUREUiA9IDEzCi1QSVBFX0JVRiA9IDUxMjAKLVBJUEVfTUFYID0gNTEyMAotTkJCWSA9IDgKLU1BWEJTSVpFID0gODE5MgotREVWX0JTSVpFID0gNTEyCi1ERVZfQlNISUZUID0gOQotTUFYRlJBRyA9IDgKLU1BWE9GRjMyX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmCi1kZWYgYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBkYnRvYihkYik6IHJldHVybiAgIFwKLQotZGVmIGxidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGxkYnRvYihkYik6IHJldHVybiAgIFwKLQotTkNBUkdTMzIgPSAweDEwMDAwMAotTkNBUkdTNjQgPSAweDIwMDAwMAotTkNBUkdTID0gTkNBUkdTNjQKLU5DQVJHUyA9IE5DQVJHUzMyCi1GU0hJRlQgPSA4Ci1GU0NBTEUgPSAoMTw8RlNISUZUKQotZGVmIERFTEFZKG4pOiByZXR1cm4gZHJ2X3VzZWN3YWl0KG4pCi0KLWRlZiBtbXVfcHRvYih4KTogcmV0dXJuICgoeCkgPDwgTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wKHgpOiByZXR1cm4gKCgoeCkpID4+IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBNTVVfUEFHRU9GRlNFVCkgPj4gTU1VX1BBR0VTSElGVCkpCi0KLWRlZiBtbXVfcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKE1NVV9QQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2QoeCk6IHJldHVybiAoKHgpIDw8IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2IoeCk6IHJldHVybiAoKHgpIDw8IFBBR0VTSElGVCkKLQotZGVmIGJ0b3AoeCk6IHJldHVybiAoKCh4KSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBQQUdFT0ZGU0VUKSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgZHRvcChERCk6IHJldHVybiAoKChERCkgKyBORFBQIC0gMSkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgZHRvcHQoREQpOiByZXR1cm4gKChERCkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1fQUlPX0xJU1RJT19NQVggPSAoNDA5NikKLV9BSU9fTUFYID0gKC0xKQotX01RX09QRU5fTUFYID0gKDMyKQotX01RX1BSSU9fTUFYID0gKDMyKQotX1NFTV9OU0VNU19NQVggPSBJTlRfTUFYCi1fU0VNX1ZBTFVFX01BWCA9IElOVF9NQVgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotX0NTX1BBVEggPSA2NQotX0NTX0xGU19DRkxBR1MgPSA2OAotX0NTX0xGU19MREZMQUdTID0gNjkKLV9DU19MRlNfTElCUyA9IDcwCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDcxCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gNzIKLV9DU19MRlM2NF9MREZMQUdTID0gNzMKLV9DU19MRlM2NF9MSUJTID0gNzQKLV9DU19MRlM2NF9MSU5URkxBR1MgPSA3NQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gNzAwCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTID0gNzAxCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTID0gNzAyCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MgPSA3MDMKLV9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MgPSA3MDUKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTID0gNzA2Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyA9IDcwNwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyA9IDcwOAotX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgPSA3MDkKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUyA9IDcxMAotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTID0gNzExCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyA9IDcxMgotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyA9IDcxMwotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MgPSA3MTQKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTID0gNzE1Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTID0gNzE2Ci1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX1NUUkVBTV9NQVggPSAxNgotX1NDX1RaTkFNRV9NQVggPSAxNwotX1NDX0FJT19MSVNUSU9fTUFYID0gMTgKLV9TQ19BSU9fTUFYID0gMTkKLV9TQ19BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotX1NDX0FTWU5DSFJPTk9VU19JTyA9IDIxCi1fU0NfREVMQVlUSU1FUl9NQVggPSAyMgotX1NDX0ZTWU5DID0gMjMKLV9TQ19NQVBQRURfRklMRVMgPSAyNAotX1NDX01FTUxPQ0sgPSAyNQotX1NDX01FTUxPQ0tfUkFOR0UgPSAyNgotX1NDX01FTU9SWV9QUk9URUNUSU9OID0gMjcKLV9TQ19NRVNTQUdFX1BBU1NJTkcgPSAyOAotX1NDX01RX09QRU5fTUFYID0gMjkKLV9TQ19NUV9QUklPX01BWCA9IDMwCi1fU0NfUFJJT1JJVElaRURfSU8gPSAzMQotX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAzMgotX1NDX1JFQUxUSU1FX1NJR05BTFMgPSAzMwotX1NDX1JUU0lHX01BWCA9IDM0Ci1fU0NfU0VNQVBIT1JFUyA9IDM1Ci1fU0NfU0VNX05TRU1TX01BWCA9IDM2Ci1fU0NfU0VNX1ZBTFVFX01BWCA9IDM3Ci1fU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTID0gMzgKLV9TQ19TSUdRVUVVRV9NQVggPSAzOQotX1NDX1NJR1JUX01JTiA9IDQwCi1fU0NfU0lHUlRfTUFYID0gNDEKLV9TQ19TWU5DSFJPTklaRURfSU8gPSA0MgotX1NDX1RJTUVSUyA9IDQzCi1fU0NfVElNRVJfTUFYID0gNDQKLV9TQ18yX0NfQklORCA9IDQ1Ci1fU0NfMl9DX0RFViA9IDQ2Ci1fU0NfMl9DX1ZFUlNJT04gPSA0NwotX1NDXzJfRk9SVF9ERVYgPSA0OAotX1NDXzJfRk9SVF9SVU4gPSA0OQotX1NDXzJfTE9DQUxFREVGID0gNTAKLV9TQ18yX1NXX0RFViA9IDUxCi1fU0NfMl9VUEUgPSA1MgotX1NDXzJfVkVSU0lPTiA9IDUzCi1fU0NfQkNfQkFTRV9NQVggPSA1NAotX1NDX0JDX0RJTV9NQVggPSA1NQotX1NDX0JDX1NDQUxFX01BWCA9IDU2Ci1fU0NfQkNfU1RSSU5HX01BWCA9IDU3Ci1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDU4Ci1fU0NfRVhQUl9ORVNUX01BWCA9IDU5Ci1fU0NfTElORV9NQVggPSA2MAotX1NDX1JFX0RVUF9NQVggPSA2MQotX1NDX1hPUEVOX0NSWVBUID0gNjIKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDYzCi1fU0NfWE9QRU5fU0hNID0gNjQKLV9TQ18yX0NIQVJfVEVSTSA9IDY2Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSA2NwotX1NDX0FURVhJVF9NQVggPSA3NgotX1NDX0lPVl9NQVggPSA3NwotX1NDX1hPUEVOX1VOSVggPSA3OAotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1RfSU9WX01BWCA9IDc5Ci1fU0NfUEhZU19QQUdFUyA9IDUwMAotX1NDX0FWUEhZU19QQUdFUyA9IDUwMQotX1NDX0NPSEVSX0JMS1NaID0gNTAzCi1fU0NfU1BMSVRfQ0FDSEUgPSA1MDQKLV9TQ19JQ0FDSEVfU1ogPSA1MDUKLV9TQ19EQ0FDSEVfU1ogPSA1MDYKLV9TQ19JQ0FDSEVfTElORVNaID0gNTA3Ci1fU0NfRENBQ0hFX0xJTkVTWiA9IDUwOAotX1NDX0lDQUNIRV9CTEtTWiA9IDUwOQotX1NDX0RDQUNIRV9CTEtTWiA9IDUxMAotX1NDX0RDQUNIRV9UQkxLU1ogPSA1MTEKLV9TQ19JQ0FDSEVfQVNTT0MgPSA1MTIKLV9TQ19EQ0FDSEVfQVNTT0MgPSA1MTMKLV9TQ19NQVhQSUQgPSA1MTQKLV9TQ19TVEFDS19QUk9UID0gNTE1Ci1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU2OAotX1NDX0dFVEdSX1JfU0laRV9NQVggPSA1NjkKLV9TQ19HRVRQV19SX1NJWkVfTUFYID0gNTcwCi1fU0NfTE9HSU5fTkFNRV9NQVggPSA1NzEKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NzIKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTczCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNTc0Ci1fU0NfVFRZX05BTUVfTUFYID0gNTc1Ci1fU0NfVEhSRUFEUyA9IDU3NgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDU3NwotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDU3OAotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTc5Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU4MAotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1ODEKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA1ODIKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA1ODMKLV9TQ19YT1BFTl9MRUdBQ1kgPSA3MTcKLV9TQ19YT1BFTl9SRUFMVElNRSA9IDcxOAotX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgPSA3MTkKLV9TQ19YQlM1X0lMUDMyX09GRjMyID0gNzIwCi1fU0NfWEJTNV9JTFAzMl9PRkZCSUcgPSA3MjEKLV9TQ19YQlM1X0xQNjRfT0ZGNjQgPSA3MjIKLV9TQ19YQlM1X0xQQklHX09GRkJJRyA9IDcyMwotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19BU1lOQ19JTyA9IDEwCi1fUENfUFJJT19JTyA9IDExCi1fUENfU1lOQ19JTyA9IDEyCi1fUENfRklMRVNJWkVCSVRTID0gNjcKLV9QQ19MQVNUID0gNjcKLV9QT1NJWF9WRVJTSU9OID0gMTk5NTA2Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fWE9QRU5fUkVBTFRJTUUgPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fU0hNID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9DX0RFViA9IDEKLV9QT1NJWDJfU1dfREVWID0gMQotX1BPU0lYMl9VUEUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yd2xvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIFJXX1JFQURfSEVMRCh4KTogcmV0dXJuIChyd19yZWFkX2hlbGQoKHgpKSkKLQotZGVmIFJXX1dSSVRFX0hFTEQoeCk6IHJldHVybiAocndfd3JpdGVfaGVsZCgoeCkpKQotCi1kZWYgUldfTE9DS19IRUxEKHgpOiByZXR1cm4gKHJ3X2xvY2tfaGVsZCgoeCkpKQotCi1kZWYgUldfSVNXUklURVIoeCk6IHJldHVybiAocndfaXN3cml0ZXIoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZW1hcGhvcmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RocmVhZC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva2x3cC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZHZhci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnbmFsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc28vc2lnbmFsX2lzby5oCi1TSUdIVVAgPSAxCi1TSUdJTlQgPSAyCi1TSUdRVUlUID0gMwotU0lHSUxMID0gNAotU0lHVFJBUCA9IDUKLVNJR0lPVCA9IDYKLVNJR0FCUlQgPSA2Ci1TSUdFTVQgPSA3Ci1TSUdGUEUgPSA4Ci1TSUdLSUxMID0gOQotU0lHQlVTID0gMTAKLVNJR1NFR1YgPSAxMQotU0lHU1lTID0gMTIKLVNJR1BJUEUgPSAxMwotU0lHQUxSTSA9IDE0Ci1TSUdURVJNID0gMTUKLVNJR1VTUjEgPSAxNgotU0lHVVNSMiA9IDE3Ci1TSUdDTEQgPSAxOAotU0lHQ0hMRCA9IDE4Ci1TSUdQV1IgPSAxOQotU0lHV0lOQ0ggPSAyMAotU0lHVVJHID0gMjEKLVNJR1BPTEwgPSAyMgotU0lHSU8gPSBTSUdQT0xMCi1TSUdTVE9QID0gMjMKLVNJR1RTVFAgPSAyNAotU0lHQ09OVCA9IDI1Ci1TSUdUVElOID0gMjYKLVNJR1RUT1UgPSAyNwotU0lHVlRBTFJNID0gMjgKLVNJR1BST0YgPSAyOQotU0lHWENQVSA9IDMwCi1TSUdYRlNaID0gMzEKLVNJR1dBSVRJTkcgPSAzMgotU0lHTFdQID0gMzMKLVNJR0ZSRUVaRSA9IDM0Ci1TSUdUSEFXID0gMzUKLVNJR0NBTkNFTCA9IDM2Ci1TSUdMT1NUID0gMzcKLV9TSUdSVE1JTiA9IDM4Ci1fU0lHUlRNQVggPSA0NQotU0lHX0JMT0NLID0gMQotU0lHX1VOQkxPQ0sgPSAyCi1TSUdfU0VUTUFTSyA9IDMKLVNJR05PX01BU0sgPSAweEZGCi1TSUdERUZFUiA9IDB4MTAwCi1TSUdIT0xEID0gMHgyMDAKLVNJR1JFTFNFID0gMHg0MDAKLVNJR0lHTk9SRSA9IDB4ODAwCi1TSUdQQVVTRSA9IDB4MTAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ2luZm8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0lHRVZfTk9ORSA9IDEKLVNJR0VWX1NJR05BTCA9IDIKLVNJR0VWX1RIUkVBRCA9IDMKLVNJX05PSU5GTyA9IDMyNzY3Ci1TSV9VU0VSID0gMAotU0lfTFdQID0gKC0xKQotU0lfUVVFVUUgPSAoLTIpCi1TSV9USU1FUiA9ICgtMykKLVNJX0FTWU5DSU8gPSAoLTQpCi1TSV9NRVNHUSA9ICgtNSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoc2lnLmgKLUlMTF9JTExPUEMgPSAxCi1JTExfSUxMT1BOID0gMgotSUxMX0lMTEFEUiA9IDMKLUlMTF9JTExUUlAgPSA0Ci1JTExfUFJWT1BDID0gNQotSUxMX1BSVlJFRyA9IDYKLUlMTF9DT1BST0MgPSA3Ci1JTExfQkFEU1RLID0gOAotTlNJR0lMTCA9IDgKLUVNVF9UQUdPVkYgPSAxCi1FTVRfQ1BDT1ZGID0gMgotTlNJR0VNVCA9IDIKLUZQRV9JTlRESVYgPSAxCi1GUEVfSU5UT1ZGID0gMgotRlBFX0ZMVERJViA9IDMKLUZQRV9GTFRPVkYgPSA0Ci1GUEVfRkxUVU5EID0gNQotRlBFX0ZMVFJFUyA9IDYKLUZQRV9GTFRJTlYgPSA3Ci1GUEVfRkxUU1VCID0gOAotTlNJR0ZQRSA9IDgKLVNFR1ZfTUFQRVJSID0gMQotU0VHVl9BQ0NFUlIgPSAyCi1OU0lHU0VHViA9IDIKLUJVU19BRFJBTE4gPSAxCi1CVVNfQURSRVJSID0gMgotQlVTX09CSkVSUiA9IDMKLU5TSUdCVVMgPSAzCi1UUkFQX0JSS1BUID0gMQotVFJBUF9UUkFDRSA9IDIKLVRSQVBfUldBVENIID0gMwotVFJBUF9XV0FUQ0ggPSA0Ci1UUkFQX1hXQVRDSCA9IDUKLU5TSUdUUkFQID0gNQotQ0xEX0VYSVRFRCA9IDEKLUNMRF9LSUxMRUQgPSAyCi1DTERfRFVNUEVEID0gMwotQ0xEX1RSQVBQRUQgPSA0Ci1DTERfU1RPUFBFRCA9IDUKLUNMRF9DT05USU5VRUQgPSA2Ci1OU0lHQ0xEID0gNgotUE9MTF9JTiA9IDEKLVBPTExfT1VUID0gMgotUE9MTF9NU0cgPSAzCi1QT0xMX0VSUiA9IDQKLVBPTExfUFJJID0gNQotUE9MTF9IVVAgPSA2Ci1OU0lHUE9MTCA9IDYKLVBST0ZfU0lHID0gMQotTlNJR1BST0YgPSAxCi1TSV9NQVhTWiA9IDI1NgotU0lfTUFYU1ogPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX3N0ZF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJMzJfTUFYU1ogPSAxMjgKLWRlZiBTSV9DQU5RVUVVRShjKTogcmV0dXJuICgoYykgPD0gU0lfUVVFVUUpCi0KLVNBX05PQ0xEU1RPUCA9IDB4MDAwMjAwMDAKLVNBX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TQV9SRVNFVEhBTkQgPSAweDAwMDAwMDAyCi1TQV9SRVNUQVJUID0gMHgwMDAwMDAwNAotU0FfU0lHSU5GTyA9IDB4MDAwMDAwMDgKLVNBX05PREVGRVIgPSAweDAwMDAwMDEwCi1TQV9OT0NMRFdBSVQgPSAweDAwMDEwMDAwCi1TQV9XQUlUU0lHID0gMHgwMDAxMDAwMAotTlNJRyA9IDQ2Ci1NQVhTSUcgPSA0NQotU19TSUdOQUwgPSAxCi1TX1NJR1NFVCA9IDIKLVNfU0lHQUNUSU9OID0gMwotU19OT05FID0gNAotTUlOU0lHU1RLU1ogPSAyMDQ4Ci1TSUdTVEtTWiA9IDgxOTIKLVNTX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TU19ESVNBQkxFID0gMHgwMDAwMDAwMgotU05fUFJPQyA9IDEKLVNOX0NBTkNFTCA9IDIKLVNOX1NFTkQgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWNvbnRleHQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZ3NldC5oCi1SRUdfQ0NSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUEMgPSAoMSkKLVJFR19uUEMgPSAoMikKLVJFR19ZID0gKDMpCi1SRUdfRzEgPSAoNCkKLVJFR19HMiA9ICg1KQotUkVHX0czID0gKDYpCi1SRUdfRzQgPSAoNykKLVJFR19HNSA9ICg4KQotUkVHX0c2ID0gKDkpCi1SRUdfRzcgPSAoMTApCi1SRUdfTzAgPSAoMTEpCi1SRUdfTzEgPSAoMTIpCi1SRUdfTzIgPSAoMTMpCi1SRUdfTzMgPSAoMTQpCi1SRUdfTzQgPSAoMTUpCi1SRUdfTzUgPSAoMTYpCi1SRUdfTzYgPSAoMTcpCi1SRUdfTzcgPSAoMTgpCi1SRUdfQVNJID0gKDE5KQotUkVHX0ZQUlMgPSAoMjApCi1SRUdfUFMgPSBSRUdfUFNSCi1SRUdfU1AgPSBSRUdfTzYKLVJFR19SMCA9IFJFR19PMAotUkVHX1IxID0gUkVHX08xCi1fTkdSRUcgPSAyMQotX05HUkVHID0gMTkKLU5HUkVHID0gX05HUkVHCi1fTkdSRUczMiA9IDE5Ci1fTkdSRUc2NCA9IDIxCi1TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotTUFYRlBRID0gMTYKLVhSU19JRCA9IDB4Nzg3MjczMDAKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wcml2cmVncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHNyLmgKLVBTUl9DV1AgPSAweDAwMDAwMDFGCi1QU1JfRVQgPSAweDAwMDAwMDIwCi1QU1JfUFMgPSAweDAwMDAwMDQwCi1QU1JfUyA9IDB4MDAwMDAwODAKLVBTUl9QSUwgPSAweDAwMDAwRjAwCi1QU1JfRUYgPSAweDAwMDAxMDAwCi1QU1JfRUMgPSAweDAwMDAyMDAwCi1QU1JfUlNWID0gMHgwMDBGQzAwMAotUFNSX0lDQyA9IDB4MDBGMDAwMDAKLVBTUl9DID0gMHgwMDEwMDAwMAotUFNSX1YgPSAweDAwMjAwMDAwCi1QU1JfWiA9IDB4MDA0MDAwMDAKLVBTUl9OID0gMHgwMDgwMDAwMAotUFNSX1ZFUiA9IDB4MEYwMDAwMDAKLVBTUl9JTVBMID0gMHhGMDAwMDAwMAotUFNMX0FMTENDID0gUFNSX0lDQwotUFNMX1VTRVIgPSAoUFNSX1MpCi1QU0xfVVNFUk1BU0sgPSAoUFNSX0lDQykKLVBTTF9VQklUUyA9IChQU1JfSUNDfFBTUl9FRikKLWRlZiBVU0VSTU9ERShwcyk6IHJldHVybiAoKChwcykgJiBQU1JfUFMpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mc3IuaAotRlNSX0NFWEMgPSAweDAwMDAwMDFmCi1GU1JfQUVYQyA9IDB4MDAwMDAzZTAKLUZTUl9GQ0MgPSAweDAwMDAwYzAwCi1GU1JfUFIgPSAweDAwMDAxMDAwCi1GU1JfUU5FID0gMHgwMDAwMjAwMAotRlNSX0ZUVCA9IDB4MDAwMWMwMDAKLUZTUl9WRVIgPSAweDAwMGUwMDAwCi1GU1JfVEVNID0gMHgwZjgwMDAwMAotRlNSX1JQID0gMHgzMDAwMDAwMAotRlNSX1JEID0gMHhjMDAwMDAwMAotRlNSX1ZFUl9TSElGVCA9IDE3Ci1GU1JfRkNDMSA9IDB4MDAwMDAwMDMKLUZTUl9GQ0MyID0gMHgwMDAwMDAwQwotRlNSX0ZDQzMgPSAweDAwMDAwMDMwCi1GU1JfQ0VYQ19OWCA9IDB4MDAwMDAwMDEKLUZTUl9DRVhDX0RaID0gMHgwMDAwMDAwMgotRlNSX0NFWENfVUYgPSAweDAwMDAwMDA0Ci1GU1JfQ0VYQ19PRiA9IDB4MDAwMDAwMDgKLUZTUl9DRVhDX05WID0gMHgwMDAwMDAxMAotRlNSX0FFWENfTlggPSAoMHgxIDw8IDUpCi1GU1JfQUVYQ19EWiA9ICgweDIgPDwgNSkKLUZTUl9BRVhDX1VGID0gKDB4NCA8PCA1KQotRlNSX0FFWENfT0YgPSAoMHg4IDw8IDUpCi1GU1JfQUVYQ19OViA9ICgweDEwIDw8IDUpCi1GVFRfTk9ORSA9IDAKLUZUVF9JRUVFID0gMQotRlRUX1VORklOID0gMgotRlRUX1VOSU1QID0gMwotRlRUX1NFUSA9IDQKLUZUVF9BTElHTiA9IDUKLUZUVF9ERkFVTFQgPSA2Ci1GU1JfRlRUX1NISUZUID0gMTQKLUZTUl9GVFRfSUVFRSA9IChGVFRfSUVFRSAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VORklOID0gKEZUVF9VTkZJTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5JTVAgPSAoRlRUX1VOSU1QICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9TRVEgPSAoRlRUX1NFUSAgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9BTElHTiA9IChGVFRfQUxJR04gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0RGQVVMVCA9IChGVFRfREZBVUxUIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfVEVNX05YID0gKDB4MSA8PCAyMykKLUZTUl9URU1fRFogPSAoMHgyIDw8IDIzKQotRlNSX1RFTV9VRiA9ICgweDQgPDwgMjMpCi1GU1JfVEVNX09GID0gKDB4OCA8PCAyMykKLUZTUl9URU1fTlYgPSAoMHgxMCA8PCAyMykKLVJQX0RCTEVYVCA9IDAKLVJQX1NJTkdMRSA9IDEKLVJQX0RPVUJMRSA9IDIKLVJQX1JFU0VSVkVEID0gMwotUkRfTkVBUiA9IDAKLVJEX1pFUjAgPSAxCi1SRF9QT1NJTkYgPSAyCi1SRF9ORUdJTkYgPSAzCi1GUFJTX0RMID0gMHgxCi1GUFJTX0RVID0gMHgyCi1GUFJTX0ZFRiA9IDB4NAotUElMX01BWCA9IDB4ZgotZGVmIFNBVkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFNUT1JFX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLWRlZiBMT0FEX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLV9TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotX1hSU19JRCA9IDB4Nzg3MjczMDAKLUdFVENPTlRFWFQgPSAwCi1TRVRDT05URVhUID0gMQotVUNfU0lHTUFTSyA9IDBvMDEKLVVDX1NUQUNLID0gMG8wMgotVUNfQ1BVID0gMG8wNAotVUNfTUFVID0gMG8xMAotVUNfRlBVID0gVUNfTUFVCi1VQ19JTlRSID0gMG8yMAotVUNfQVNSID0gMG80MAotVUNfTUNPTlRFWFQgPSAoVUNfQ1BVfFVDX0ZQVXxVQ19BU1IpCi1VQ19BTEwgPSAoVUNfU0lHTUFTS3xVQ19TVEFDS3xVQ19NQ09OVEVYVCkKLV9TSUdRVUVVRV9NQVggPSAzMgotX1NJR05PVElGWV9NQVggPSAzMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BjYi5oCi1JTlNUUl9WQUxJRCA9IDB4MDIKLU5PUk1BTF9TVEVQID0gMHgwNAotV0FUQ0hfU1RFUCA9IDB4MDgKLUNQQ19PVkVSRkxPVyA9IDB4MTAKLUFTWU5DX0hXRVJSID0gMHgyMAotU1RFUF9OT05FID0gMAotU1RFUF9SRVFVRVNURUQgPSAxCi1TVEVQX0FDVElWRSA9IDIKLVNURVBfV0FTQUNUSVZFID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21zYWNjdC5oCi1MTVNfVVNFUiA9IDAKLUxNU19TWVNURU0gPSAxCi1MTVNfVFJBUCA9IDIKLUxNU19URkFVTFQgPSAzCi1MTVNfREZBVUxUID0gNAotTE1TX0tGQVVMVCA9IDUKLUxNU19VU0VSX0xPQ0sgPSA2Ci1MTVNfU0xFRVAgPSA3Ci1MTVNfV0FJVF9DUFUgPSA4Ci1MTVNfU1RPUFBFRCA9IDkKLU5NU1RBVEVTID0gMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9sd3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5bmNoLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVVTWU5DX1RIUkVBRCA9IDB4MDAKLVVTWU5DX1BST0NFU1MgPSAweDAxCi1MT0NLX05PUk1BTCA9IDB4MDAKLUxPQ0tfRVJST1JDSEVDSyA9IDB4MDIKLUxPQ0tfUkVDVVJTSVZFID0gMHgwNAotVVNZTkNfUFJPQ0VTU19ST0JVU1QgPSAweDA4Ci1MT0NLX1BSSU9fTk9ORSA9IDB4MDAKLUxPQ0tfUFJJT19JTkhFUklUID0gMHgxMAotTE9DS19QUklPX1BST1RFQ1QgPSAweDIwCi1MT0NLX1NUQUxMX05QID0gMHgwMAotTE9DS19ST0JVU1RfTlAgPSAweDQwCi1MT0NLX09XTkVSREVBRCA9IDB4MQotTE9DS19OT1RSRUNPVkVSQUJMRSA9IDB4MgotTE9DS19JTklURUQgPSAweDQKLUxPQ0tfVU5NQVBQRUQgPSAweDgKLUxXUF9ERVRBQ0hFRCA9IDB4MDAwMDAwNDAKLUxXUF9TVVNQRU5ERUQgPSAweDAwMDAwMDgwCi1fX0xXUF9BU0xXUCA9IDB4MDAwMDAxMDAKLU1BWFNZU0FSR1MgPSA4Ci1OT1JNQUxSRVRVUk4gPSAwCi1KVVNUUkVUVVJOID0gMQotTFdQX1VTRVIgPSAweDAxCi1MV1BfU1lTID0gMHgwMgotVFNfRlJFRSA9IDB4MDAKLVRTX1NMRUVQID0gMHgwMQotVFNfUlVOID0gMHgwMgotVFNfT05QUk9DID0gMHgwNAotVFNfWk9NQiA9IDB4MDgKLVRTX1NUT1BQRUQgPSAweDEwCi1UX0lOVFJfVEhSRUFEID0gMHgwMDAxCi1UX1dBS0VBQkxFID0gMHgwMDAyCi1UX1RPTUFTSyA9IDB4MDAwNAotVF9UQUxMT0NTVEsgPSAweDAwMDgKLVRfV09VTERCTE9DSyA9IDB4MDAyMAotVF9ET05UQkxPQ0sgPSAweDAwNDAKLVRfRE9OVFBFTkQgPSAweDAwODAKLVRfU1lTX1BST0YgPSAweDAxMDAKLVRfV0FJVENWU0VNID0gMHgwMjAwCi1UX1dBVENIUFQgPSAweDA0MDAKLVRfUEFOSUMgPSAweDA4MDAKLVRQX0hPTERMV1AgPSAweDAwMDIKLVRQX1RXQUlUID0gMHgwMDA0Ci1UUF9MV1BFWElUID0gMHgwMDA4Ci1UUF9QUlNUT1AgPSAweDAwMTAKLVRQX0NIS1BUID0gMHgwMDIwCi1UUF9FWElUTFdQID0gMHgwMDQwCi1UUF9QUlZTVE9QID0gMHgwMDgwCi1UUF9NU0FDQ1QgPSAweDAxMDAKLVRQX1NUT1BQSU5HID0gMHgwMjAwCi1UUF9XQVRDSFBUID0gMHgwNDAwCi1UUF9QQVVTRSA9IDB4MDgwMAotVFBfQ0hBTkdFQklORCA9IDB4MTAwMAotVFNfTE9BRCA9IDB4MDAwMQotVFNfRE9OVF9TV0FQID0gMHgwMDAyCi1UU19TV0FQRU5RID0gMHgwMDA0Ci1UU19PTl9TV0FQUSA9IDB4MDAwOAotVFNfQ1NUQVJUID0gMHgwMTAwCi1UU19VTlBBVVNFID0gMHgwMjAwCi1UU19YU1RBUlQgPSAweDA0MDAKLVRTX1BTVEFSVCA9IDB4MDgwMAotVFNfUkVTVU1FID0gMHgxMDAwCi1UU19DUkVBVEUgPSAweDIwMDAKLVRTX0FMTFNUQVJUID0gXAotICAgICAgICAoVFNfQ1NUQVJUfFRTX1VOUEFVU0V8VFNfWFNUQVJUfFRTX1BTVEFSVHxUU19SRVNVTUV8VFNfQ1JFQVRFKQotZGVmIENQUl9WU1RPUFBFRCh0KTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9UUkFOU0lUSU9OKHRwKTogcmV0dXJuIHRocmVhZF90cmFuc2l0aW9uKHRwKTsKLQotZGVmIFRIUkVBRF9TVE9QKHRwKTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9aT01CKHRwKTogcmV0dXJuIFRIUkVBRF9TRVRfU1RBVEUodHAsIFRTX1pPTUIsIE5VTEwpCi0KLWRlZiBTRU1BX0hFTEQoeCk6IHJldHVybiAoc2VtYV9oZWxkKCh4KSkpCi0KLU5PX0xPQ0tTX0hFTEQgPSAxCi1OT19DT01QRVRJTkdfVEhSRUFEUyA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91aW8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Jlc291cmNlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVBSSU9fUFJPQ0VTUyA9IDAKLVBSSU9fUEdSUCA9IDEKLVBSSU9fVVNFUiA9IDIKLVJMSU1JVF9DUFUgPSAwCi1STElNSVRfRlNJWkUgPSAxCi1STElNSVRfREFUQSA9IDIKLVJMSU1JVF9TVEFDSyA9IDMKLVJMSU1JVF9DT1JFID0gNAotUkxJTUlUX05PRklMRSA9IDUKLVJMSU1JVF9WTUVNID0gNgotUkxJTUlUX0FTID0gUkxJTUlUX1ZNRU0KLVJMSU1fTkxJTUlUUyA9IDcKLVJMSU1fSU5GSU5JVFkgPSAoLTMpCi1STElNX1NBVkVEX01BWCA9ICgtMikKLVJMSU1fU0FWRURfQ1VSID0gKC0xKQotUkxJTV9JTkZJTklUWSA9IDB4N2ZmZmZmZmYKLVJMSU1fU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTV9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi1STElNMzJfSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNMzJfU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTTMyX1NBVkVEX0NVUiA9IDB4N2ZmZmZmZmQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tb2RlbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGVidWcuaAotZGVmIEFTU0VSVDY0KHgpOiByZXR1cm4gQVNTRVJUKHgpCi0KLWRlZiBBU1NFUlQzMih4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1EQVRBTU9ERUxfTUFTSyA9IDB4MEZGMDAwMDAKLURBVEFNT0RFTF9JTFAzMiA9IDB4MDAxMDAwMDAKLURBVEFNT0RFTF9MUDY0ID0gMHgwMDIwMDAwMAotREFUQU1PREVMX05PTkUgPSAwCi1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0xQNjQKLURBVEFNT0RFTF9OQVRJVkUgPSBEQVRBTU9ERUxfSUxQMzIKLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0ci5tNjQpCi0KLWRlZiBTSVpFT0ZfUFRSKHVtb2RlbCk6IHJldHVybiBcCi0KLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gKHNpemVvZiAoKihoYW5kbGUpLnB0cikpCi0KLWRlZiBTVFJVQ1RfQlVGKGhhbmRsZSk6IHJldHVybiAoKGhhbmRsZSkucHRyKQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gc2l6ZW9mIChjYWRkcl90KQotCi1kZWYgbHdwX2dldGRhdGFtb2RlbCh0KTogcmV0dXJuIERBVEFNT0RFTF9JTFAzMgotCi1SVVNBR0VfU0VMRiA9IDAKLVJVU0FHRV9DSElMRFJFTiA9IC0xCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWdfZW51bS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnVmLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3RhdC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1LU1RBVF9TVFJMRU4gPSAzMQotZGVmIEtTVEFUX0VOVEVSKGspOiByZXR1cm4gXAotCi1kZWYgS1NUQVRfRVhJVChrKTogcmV0dXJuIFwKLQotS1NUQVRfVFlQRV9SQVcgPSAwCi1LU1RBVF9UWVBFX05BTUVEID0gMQotS1NUQVRfVFlQRV9JTlRSID0gMgotS1NUQVRfVFlQRV9JTyA9IDMKLUtTVEFUX1RZUEVfVElNRVIgPSA0Ci1LU1RBVF9OVU1fVFlQRVMgPSA1Ci1LU1RBVF9GTEFHX1ZJUlRVQUwgPSAweDAxCi1LU1RBVF9GTEFHX1ZBUl9TSVpFID0gMHgwMgotS1NUQVRfRkxBR19XUklUQUJMRSA9IDB4MDQKLUtTVEFUX0ZMQUdfUEVSU0lTVEVOVCA9IDB4MDgKLUtTVEFUX0ZMQUdfRE9STUFOVCA9IDB4MTAKLUtTVEFUX0ZMQUdfSU5WQUxJRCA9IDB4MjAKLUtTVEFUX1JFQUQgPSAwCi1LU1RBVF9XUklURSA9IDEKLUtTVEFUX0RBVEFfQ0hBUiA9IDAKLUtTVEFUX0RBVEFfSU5UMzIgPSAxCi1LU1RBVF9EQVRBX1VJTlQzMiA9IDIKLUtTVEFUX0RBVEFfSU5UNjQgPSAzCi1LU1RBVF9EQVRBX1VJTlQ2NCA9IDQKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UMzIKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQzMgotS1NUQVRfREFUQV9MT05HID0gS1NUQVRfREFUQV9JTlQ2NAotS1NUQVRfREFUQV9VTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0xPTkcgPSA3Ci1LU1RBVF9EQVRBX1VMT05HID0gOAotS1NUQVRfREFUQV9MT05HTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkdMT05HID0gS1NUQVRfREFUQV9VSU5UNjQKLUtTVEFUX0RBVEFfRkxPQVQgPSA1Ci1LU1RBVF9EQVRBX0RPVUJMRSA9IDYKLUtTVEFUX0lOVFJfSEFSRCA9IDAKLUtTVEFUX0lOVFJfU09GVCA9IDEKLUtTVEFUX0lOVFJfV0FUQ0hET0cgPSAyCi1LU1RBVF9JTlRSX1NQVVJJT1VTID0gMwotS1NUQVRfSU5UUl9NVUxUU1ZDID0gNAotS1NUQVRfTlVNX0lOVFJTID0gNQotQl9CVVNZID0gMHgwMDAxCi1CX0RPTkUgPSAweDAwMDIKLUJfRVJST1IgPSAweDAwMDQKLUJfUEFHRUlPID0gMHgwMDEwCi1CX1BIWVMgPSAweDAwMjAKLUJfUkVBRCA9IDB4MDA0MAotQl9XUklURSA9IDB4MDEwMAotQl9LRVJOQlVGID0gMHgwMDA4Ci1CX1dBTlRFRCA9IDB4MDA4MAotQl9BR0UgPSAweDAwMDIwMAotQl9BU1lOQyA9IDB4MDAwNDAwCi1CX0RFTFdSSSA9IDB4MDAwODAwCi1CX1NUQUxFID0gMHgwMDEwMDAKLUJfRE9OVE5FRUQgPSAweDAwMjAwMAotQl9SRU1BUFBFRCA9IDB4MDA0MDAwCi1CX0ZSRUUgPSAweDAwODAwMAotQl9JTlZBTCA9IDB4MDEwMDAwCi1CX0ZPUkNFID0gMHgwMjAwMDAKLUJfSEVBRCA9IDB4MDQwMDAwCi1CX05PQ0FDSEUgPSAweDA4MDAwMAotQl9UUlVOQyA9IDB4MTAwMDAwCi1CX1NIQURPVyA9IDB4MjAwMDAwCi1CX1JFVFJZV1JJID0gMHg0MDAwMDAKLWRlZiBub3RhdmFpbChicCk6IHJldHVybiBcCi0KLWRlZiBCV1JJVEUoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFMihicCk6IHJldHVybiBcCi0KLVZST09UID0gMHgwMQotVk5PQ0FDSEUgPSAweDAyCi1WTk9NQVAgPSAweDA0Ci1WRFVQID0gMHgwOAotVk5PU1dBUCA9IDB4MTAKLVZOT01PVU5UID0gMHgyMAotVklTU1dBUCA9IDB4NDAKLVZTV0FQTElLRSA9IDB4ODAKLVZWRlNMT0NLID0gMHgxMDAKLVZWRlNXQUlUID0gMHgyMDAKLVZWTUxPQ0sgPSAweDQwMAotVkRJUk9QRU4gPSAweDgwMAotVlZNRVhFQyA9IDB4MTAwMAotVlBYRlMgPSAweDIwMDAKLUFUX1RZUEUgPSAweDAwMDEKLUFUX01PREUgPSAweDAwMDIKLUFUX1VJRCA9IDB4MDAwNAotQVRfR0lEID0gMHgwMDA4Ci1BVF9GU0lEID0gMHgwMDEwCi1BVF9OT0RFSUQgPSAweDAwMjAKLUFUX05MSU5LID0gMHgwMDQwCi1BVF9TSVpFID0gMHgwMDgwCi1BVF9BVElNRSA9IDB4MDEwMAotQVRfTVRJTUUgPSAweDAyMDAKLUFUX0NUSU1FID0gMHgwNDAwCi1BVF9SREVWID0gMHgwODAwCi1BVF9CTEtTSVpFID0gMHgxMDAwCi1BVF9OQkxPQ0tTID0gMHgyMDAwCi1BVF9WQ09ERSA9IDB4NDAwMAotQVRfQUxMID0gKEFUX1RZUEV8QVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX05MSU5LfEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfUkRFVnxBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1BVF9TVEFUID0gKEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxBVF9OTElOS3xcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfEFUX1JERVYpCi1BVF9USU1FUyA9IChBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRSkKLUFUX05PU0VUID0gKEFUX05MSU5LfEFUX1JERVZ8QVRfRlNJRHxBVF9OT0RFSUR8QVRfVFlQRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1WU1VJRCA9IDBvNDAwMAotVlNHSUQgPSAwbzIwMDAKLVZTVlRYID0gMG8xMDAwCi1WUkVBRCA9IDBvMDQwMAotVldSSVRFID0gMG8wMjAwCi1WRVhFQyA9IDBvMDEwMAotTU9ERU1BU0sgPSAwbzc3NzcKLVBFUk1NQVNLID0gMG8wNzc3Ci1kZWYgTUFORE1PREUobW9kZSk6IHJldHVybiAoKChtb2RlKSAmIChWU0dJRHwoVkVYRUM+PjMpKSkgPT0gVlNHSUQpCi0KLVZTQV9BQ0wgPSAweDAwMDEKLVZTQV9BQ0xDTlQgPSAweDAwMDIKLVZTQV9ERkFDTCA9IDB4MDAwNAotVlNBX0RGQUNMQ05UID0gMHgwMDA4Ci1MT09LVVBfRElSID0gMHgwMQotRFVNUF9BTExPQyA9IDAKLURVTVBfRlJFRSA9IDEKLURVTVBfU0NBTiA9IDIKLUFUVFJfVVRJTUUgPSAweDAxCi1BVFRSX0VYRUMgPSAweDAyCi1BVFRSX0NPTU0gPSAweDA0Ci1BVFRSX0hJTlQgPSAweDA4Ci1BVFRSX1JFQUwgPSAweDEwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcG9sbC5oCi1QT0xMSU4gPSAweDAwMDEKLVBPTExQUkkgPSAweDAwMDIKLVBPTExPVVQgPSAweDAwMDQKLVBPTExSRE5PUk0gPSAweDAwNDAKLVBPTExXUk5PUk0gPSBQT0xMT1VUCi1QT0xMUkRCQU5EID0gMHgwMDgwCi1QT0xMV1JCQU5EID0gMHgwMTAwCi1QT0xMTk9STSA9IFBPTExSRE5PUk0KLVBPTExFUlIgPSAweDAwMDgKLVBPTExIVVAgPSAweDAwMTAKLVBPTExOVkFMID0gMHgwMDIwCi1QT0xMUkVNT1ZFID0gMHgwODAwCi1QT0xMUkREQVRBID0gMHgwMjAwCi1QT0xMTk9FUlIgPSAweDA0MDAKLVBPTExDTE9TRUQgPSAweDgwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJtZGVwLmgKLWRlZiBzdHJfYWxpZ25lZChYKTogcmV0dXJuICgoKHVsb25nX3QpKFgpICYgKHNpemVvZiAoaW50KSAtIDEpKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RyZnQuaAotdGRlbHRhX3Rfc3ogPSAxMgotRlRFVl9NQVNLID0gMHgxRkZGCi1GVEVWX0lTV1IgPSAweDgwMDAKLUZURVZfQ1MgPSAweDQwMDAKLUZURVZfUFMgPSAweDIwMDAKLUZURVZfUU1BU0sgPSAweDFGMDAKLUZURVZfQUxMT0NNQVNLID0gMHgxRkY4Ci1GVEVWX0FMTE9DQiA9IDB4MDAwMAotRlRFVl9FU0JBTExPQyA9IDB4MDAwMQotRlRFVl9ERVNCQUxMT0MgPSAweDAwMDIKLUZURVZfRVNCQUxMT0NBID0gMHgwMDAzCi1GVEVWX0RFU0JBTExPQ0EgPSAweDAwMDQKLUZURVZfQUxMT0NCSUcgPSAweDAwMDUKLUZURVZfQUxMT0NCVyA9IDB4MDAwNgotRlRFVl9GUkVFQiA9IDB4MDAwOAotRlRFVl9EVVBCID0gMHgwMDA5Ci1GVEVWX0NPUFlCID0gMHgwMDBBCi1GVEVWX0NBTExFUiA9IDB4MDAwRgotRlRFVl9QVVQgPSAweDAxMDAKLUZURVZfRlNZTkNRID0gMHgwMTAzCi1GVEVWX0RTWU5DUSA9IDB4MDEwNAotRlRFVl9QVVRRID0gMHgwMTA1Ci1GVEVWX0dFVFEgPSAweDAxMDYKLUZURVZfUk1WUSA9IDB4MDEwNwotRlRFVl9JTlNRID0gMHgwMTA4Ci1GVEVWX1BVVEJRID0gMHgwMTA5Ci1GVEVWX0ZMVVNIUSA9IDB4MDEwQQotRlRFVl9SRVBMWVEgPSAweDAxMEIKLUZURVZfUFVUTkVYVCA9IDB4MDEwRAotRlRFVl9SV05FWFQgPSAweDAxMEUKLUZURVZfUVdJTk5FUiA9IDB4MDEwRgotRlRFVl9HRVdSSVRFID0gMHgwMTAxCi1kZWYgRlRGTFdfSEFTSChoKTogcmV0dXJuICgoKHVuc2lnbmVkKShoKSklZnRmbHdfaGFzaF9zeikKLQotRlRCTEtfRVZOVFMgPSAweDkKLVFFTkFCID0gMHgwMDAwMDAwMQotUVdBTlRSID0gMHgwMDAwMDAwMgotUVdBTlRXID0gMHgwMDAwMDAwNAotUUZVTEwgPSAweDAwMDAwMDA4Ci1RUkVBRFIgPSAweDAwMDAwMDEwCi1RVVNFID0gMHgwMDAwMDAyMAotUU5PRU5CID0gMHgwMDAwMDA0MAotUUJBQ0sgPSAweDAwMDAwMTAwCi1RSExJU1QgPSAweDAwMDAwMjAwCi1RUEFJUiA9IDB4MDAwMDA4MDAKLVFQRVJRID0gMHgwMDAwMTAwMAotUVBFUk1PRCA9IDB4MDAwMDIwMDAKLVFNVFNBRkUgPSAweDAwMDA0MDAwCi1RTVRPVVRQRVJJTSA9IDB4MDAwMDgwMDAKLVFNVF9UWVBFTUFTSyA9IChRUEFJUnxRUEVSUXxRUEVSTU9EfFFNVFNBRkV8UU1UT1VUUEVSSU0pCi1RSU5TRVJWSUNFID0gMHgwMDAxMDAwMAotUVdDTE9TRSA9IDB4MDAwMjAwMDAKLVFFTkQgPSAweDAwMDQwMDAwCi1RV0FOVFdTWU5DID0gMHgwMDA4MDAwMAotUVNZTkNTVFIgPSAweDAwMTAwMDAwCi1RSVNEUlYgPSAweDAwMjAwMDAwCi1RSE9UID0gMHgwMDQwMDAwMAotUU5FWFRIT1QgPSAweDAwODAwMDAwCi1fUUlOU0VSVElORyA9IDB4MDQwMDAwMDAKLV9RUkVNT1ZJTkcgPSAweDA4MDAwMDAwCi1RX1NRUVVFVUVEID0gMHgwMQotUV9TUURSQUlOSU5HID0gMHgwMgotUUJfRlVMTCA9IDB4MDEKLVFCX1dBTlRXID0gMHgwMgotUUJfQkFDSyA9IDB4MDQKLU5CQU5EID0gMjU2Ci1TVFJVSU9UX05PTkUgPSAtMQotU1RSVUlPVF9ET05UQ0FSRSA9IDAKLVNUUlVJT1RfU1RBTkRBUkQgPSAxCi1TVFJVSU9UX0lQID0gMgotREJMS19SRUZNSU4gPSAweDAxCi1TVFJVSU9fU1BFQyA9IDB4MDEKLVNUUlVJT19ET05FID0gMHgwMgotU1RSVUlPX0lQID0gMHgwNAotU1RSVUlPX1pDID0gMHgwOAotU1RSVUlPX0lDSyA9IDB4MTAKLU1TR01BUksgPSAweDAxCi1NU0dOT0xPT1AgPSAweDAyCi1NU0dERUxJTSA9IDB4MDQKLU1TR05PR0VUID0gMHgwOAotTVNHTUFSS05FWFQgPSAweDEwCi1NU0dOT1RNQVJLTkVYVCA9IDB4MjAKLU1fREFUQSA9IDB4MDAKLU1fUFJPVE8gPSAweDAxCi1NX0JSRUFLID0gMHgwOAotTV9QQVNTRlAgPSAweDA5Ci1NX0VWRU5UID0gMHgwYQotTV9TSUcgPSAweDBiCi1NX0RFTEFZID0gMHgwYwotTV9DVEwgPSAweDBkCi1NX0lPQ1RMID0gMHgwZQotTV9TRVRPUFRTID0gMHgxMAotTV9SU0UgPSAweDExCi1NX0lPQ0FDSyA9IDB4ODEKLU1fSU9DTkFLID0gMHg4MgotTV9QQ1BST1RPID0gMHg4MwotTV9QQ1NJRyA9IDB4ODQKLU1fUkVBRCA9IDB4ODUKLU1fRkxVU0ggPSAweDg2Ci1NX1NUT1AgPSAweDg3Ci1NX1NUQVJUID0gMHg4OAotTV9IQU5HVVAgPSAweDg5Ci1NX0VSUk9SID0gMHg4YQotTV9DT1BZSU4gPSAweDhiCi1NX0NPUFlPVVQgPSAweDhjCi1NX0lPQ0RBVEEgPSAweDhkCi1NX1BDUlNFID0gMHg4ZQotTV9TVE9QSSA9IDB4OGYKLU1fU1RBUlRJID0gMHg5MAotTV9QQ0VWRU5UID0gMHg5MQotTV9VTkhBTkdVUCA9IDB4OTIKLVFOT1JNID0gMHgwMAotUVBDVEwgPSAweDgwCi1JT0NfTU9ERUxTID0gREFUQU1PREVMX01BU0sKLUlPQ19JTFAzMiA9IERBVEFNT0RFTF9JTFAzMgotSU9DX0xQNjQgPSBEQVRBTU9ERUxfTFA2NAotSU9DX05BVElWRSA9IERBVEFNT0RFTF9OQVRJVkUKLUlPQ19OT05FID0gREFUQU1PREVMX05PTkUKLVNUUkNBTk9OID0gMHgwMQotUkVDT1BZID0gMHgwMgotU09fQUxMID0gMHgwMDNmCi1TT19SRUFET1BUID0gMHgwMDAxCi1TT19XUk9GRiA9IDB4MDAwMgotU09fTUlOUFNaID0gMHgwMDA0Ci1TT19NQVhQU1ogPSAweDAwMDgKLVNPX0hJV0FUID0gMHgwMDEwCi1TT19MT1dBVCA9IDB4MDAyMAotU09fTVJFQURPTiA9IDB4MDA0MAotU09fTVJFQURPRkYgPSAweDAwODAKLVNPX05ERUxPTiA9IDB4MDEwMAotU09fTkRFTE9GRiA9IDB4MDIwMAotU09fSVNUVFkgPSAweDA0MDAKLVNPX0lTTlRUWSA9IDB4MDgwMAotU09fVE9TVE9QID0gMHgxMDAwCi1TT19UT05TVE9QID0gMHgyMDAwCi1TT19CQU5EID0gMHg0MDAwCi1TT19ERUxJTSA9IDB4ODAwMAotU09fTk9ERUxJTSA9IDB4MDEwMDAwCi1TT19TVFJIT0xEID0gMHgwMjAwMDAKLVNPX0VSUk9QVCA9IDB4MDQwMDAwCi1TT19DT1BZT1BUID0gMHgwODAwMDAKLVNPX01BWEJMSyA9IDB4MTAwMDAwCi1ERUZfSU9WX01BWCA9IDE2Ci1JTkZPRF9GSVJTVEJZVEVTID0gMHgwMgotSU5GT0RfQllURVMgPSAweDA0Ci1JTkZPRF9DT1VOVCA9IDB4MDgKLUlORk9EX0NPUFlPVVQgPSAweDEwCi1NT0RPUEVOID0gMHgxCi1DTE9ORU9QRU4gPSAweDIKLUNPTlNPUEVOID0gMHg0Ci1PUEVORkFJTCA9IC0xCi1CUFJJX0xPID0gMQotQlBSSV9NRUQgPSAyCi1CUFJJX0hJID0gMwotQlBSSV9GVCA9IDQKLUlORlBTWiA9IC0xCi1GTFVTSEFMTCA9IDEKLUZMVVNIREFUQSA9IDAKLVNUUkhJR0ggPSA1MTIwCi1TVFJMT1cgPSAxMDI0Ci1NQVhJT0NCU1ogPSAxMDI0Ci1QRVJJTV9JTk5FUiA9IDEKLVBFUklNX09VVEVSID0gMgotZGVmIGRhdGFtc2codHlwZSk6IHJldHVybiBcCi0KLWRlZiBzdHJhbG4oYSk6IHJldHVybiAoY2FkZHJfdCkoKGludHB0cl90KShhKSAmIH4oc2l6ZW9mIChpbnQpLTEpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyLmgKLWRlZiBudG9obCh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuICh4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0VOQ0FQID0gNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBPUlRfRUNITyA9IDcKLUlQUE9SVF9ESVNDQVJEID0gOQotSVBQT1JUX1NZU1RBVCA9IDExCi1JUFBPUlRfREFZVElNRSA9IDEzCi1JUFBPUlRfTkVUU1RBVCA9IDE1Ci1JUFBPUlRfRlRQID0gMjEKLUlQUE9SVF9URUxORVQgPSAyMwotSVBQT1JUX1NNVFAgPSAyNQotSVBQT1JUX1RJTUVTRVJWRVIgPSAzNwotSVBQT1JUX05BTUVTRVJWRVIgPSA0MgotSVBQT1JUX1dIT0lTID0gNDMKLUlQUE9SVF9NVFAgPSA1NwotSVBQT1JUX0JPT1RQUyA9IDY3Ci1JUFBPUlRfQk9PVFBDID0gNjgKLUlQUE9SVF9URlRQID0gNjkKLUlQUE9SVF9SSkUgPSA3NwotSVBQT1JUX0ZJTkdFUiA9IDc5Ci1JUFBPUlRfVFRZTElOSyA9IDg3Ci1JUFBPUlRfU1VQRFVQID0gOTUKLUlQUE9SVF9FWEVDU0VSVkVSID0gNTEyCi1JUFBPUlRfTE9HSU5TRVJWRVIgPSA1MTMKLUlQUE9SVF9DTURTRVJWRVIgPSA1MTQKLUlQUE9SVF9FRlNTRVJWRVIgPSA1MjAKLUlQUE9SVF9CSUZGVURQID0gNTEyCi1JUFBPUlRfV0hPU0VSVkVSID0gNTEzCi1JUFBPUlRfUk9VVEVTRVJWRVIgPSA1MjAKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JTVBMSU5LX0lQID0gMTU1Ci1JTVBMSU5LX0xPV0VYUEVSID0gMTU2Ci1JTVBMSU5LX0hJR0hFWFBFUiA9IDE1OAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfTUFYID0gMTI4Ci1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1JTl9MT09QQkFDS05FVCA9IDEyNwotZGVmIElOX1NFVF9MT09QQkFDS19BRERSKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTVVMVElDQVNUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTVVMVElDQVNUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEX0FOWShhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEX0FOWShhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19SRVNFUlZFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1JFU0VSVkVEKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhZGRyKTogcmV0dXJuIFwKLQotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gMHgxMAotSVBfTVVMVElDQVNUX1RUTCA9IDB4MTEKLUlQX01VTFRJQ0FTVF9MT09QID0gMHgxMgotSVBfQUREX01FTUJFUlNISVAgPSAweDEzCi1JUF9EUk9QX01FTUJFUlNISVAgPSAweDE0Ci1JUF9TRUNfT1BUID0gMHgyMgotSVBTRUNfUFJFRl9ORVZFUiA9IDB4MDEKLUlQU0VDX1BSRUZfUkVRVUlSRUQgPSAweDAyCi1JUFNFQ19QUkVGX1VOSVFVRSA9IDB4MDQKLUlQX0FERF9QUk9YWV9BRERSID0gMHg0MAotSVBfQk9VTkRfSUYgPSAweDQxCi1JUF9VTlNQRUNfU1JDID0gMHg0MgotSVBfUkVVU0VBRERSID0gMHgxMDQKLUlQX0RPTlRST1VURSA9IDB4MTA1Ci1JUF9CUk9BRENBU1QgPSAweDEwNgotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9VTklDQVNUX0hPUFMgPSAweDUKLUlQVjZfTVVMVElDQVNUX0lGID0gMHg2Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMHg3Ci1JUFY2X01VTFRJQ0FTVF9MT09QID0gMHg4Ci1JUFY2X0pPSU5fR1JPVVAgPSAweDkKLUlQVjZfTEVBVkVfR1JPVVAgPSAweGEKLUlQVjZfQUREX01FTUJFUlNISVAgPSAweDkKLUlQVjZfRFJPUF9NRU1CRVJTSElQID0gMHhhCi1JUFY2X1BLVElORk8gPSAweGIKLUlQVjZfSE9QTElNSVQgPSAweGMKLUlQVjZfTkVYVEhPUCA9IDB4ZAotSVBWNl9IT1BPUFRTID0gMHhlCi1JUFY2X0RTVE9QVFMgPSAweGYKLUlQVjZfUlRIRFIgPSAweDEwCi1JUFY2X1JUSERSRFNUT1BUUyA9IDB4MTEKLUlQVjZfUkVDVlBLVElORk8gPSAweDEyCi1JUFY2X1JFQ1ZIT1BMSU1JVCA9IDB4MTMKLUlQVjZfUkVDVkhPUE9QVFMgPSAweDE0Ci1JUFY2X1JFQ1ZEU1RPUFRTID0gMHgxNQotSVBWNl9SRUNWUlRIRFIgPSAweDE2Ci1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSAweDE3Ci1JUFY2X0NIRUNLU1VNID0gMHgxOAotSVBWNl9CT1VORF9JRiA9IDB4NDEKLUlQVjZfVU5TUEVDX1NSQyA9IDB4NDIKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfUEFEMV9PUFQgPSAwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvU1RST1BUUy5weSBiL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjczNWM0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTgxMyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy9zdHJvcHRzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc2FfZGVmcy5oCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA0Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDQKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAwCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDgKLV9ET1VCTEVfQUxJR05NRU5UID0gOAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA0Ci1fTUFYX0FMSUdOTUVOVCA9IDgKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX1BPU0lYX0NfU09VUkNFID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX0ZJTEVfT0ZGU0VUX0JJVFMgPSA2NAotX0ZJTEVfT0ZGU0VUX0JJVFMgPSAzMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fUE9TSVhfUFRIUkVBRF9TRU1BTlRJQ1MgPSAxCi1fWE9QRU5fVkVSU0lPTiA9IDUwMAotX1hPUEVOX1ZFUlNJT04gPSA0Ci1fWE9QRU5fVkVSU0lPTiA9IDMKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb25mLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90X2xvY2suaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hsb2NrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUxPQ0tfSEVMRF9WQUxVRSA9IDB4ZmYKLWRlZiBTUElOX0xPQ0socGwpOiByZXR1cm4gKChwbCkgPiBpcGx0b3NwbChMT0NLX0xFVkVMKSkKLQotZGVmIExPQ0tfU0FNUExFX0lOVEVSVkFMKGkpOiByZXR1cm4gKCgoaSkgJiAweGZmKSA9PSAwKQotCi1DTE9DS19MRVZFTCA9IDEwCi1MT0NLX0xFVkVMID0gMTAKLURJU1BfTEVWRUwgPSAoTE9DS19MRVZFTCArIDEpCi1QVFIyNF9MU0IgPSA1Ci1QVFIyNF9NU0IgPSAoUFRSMjRfTFNCICsgMjQpCi1QVFIyNF9BTElHTiA9IDMyCi1QVFIyNF9CQVNFID0gMHhlMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BhcmFtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9QT1NJWF9WRElTQUJMRSA9IDAKLU1BWF9JTlBVVCA9IDUxMgotTUFYX0NBTk9OID0gMjU2Ci1VSURfTk9CT0RZID0gNjAwMDEKLUdJRF9OT0JPRFkgPSBVSURfTk9CT0RZCi1VSURfTk9BQ0NFU1MgPSA2MDAwMgotTUFYX1RBU0tJRCA9IDk5OTk5OQotTUFYX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9NQVhQSUQgPSA5OTk5OTkKLURFRkFVTFRfSlVNUFBJRCA9IDEwMDAwMAotREVGQVVMVF9NQVhQSUQgPSAzMDAwMAotREVGQVVMVF9KVU1QUElEID0gMAotTUFYVUlEID0gMjE0NzQ4MzY0NwotTUFYUFJPSklEID0gTUFYVUlECi1NQVhMSU5LID0gMzI3NjcKLU5NT1VOVCA9IDQwCi1DQU5CU0laID0gMjU2Ci1OT0ZJTEUgPSAyMAotTkdST1VQU19VTUlOID0gMAotTkdST1VQU19VTUFYID0gMzIKLU5HUk9VUFNfTUFYX0RFRkFVTFQgPSAxNgotTlpFUk8gPSAyMAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTUFTSyA9IDBvMjIKLUNETElNSVQgPSAoMTw8MTEpCi1OQlBTID0gMHgyMDAwMAotTkJQU0NUUiA9IDUxMgotVUJTSVpFID0gNTEyCi1TQ1RSU0hGVCA9IDkKLVNZU05BTUUgPSA5Ci1QUkVNT1RFID0gMzkKLU1BWFBBVEhMRU4gPSAxMDI0Ci1NQVhTWU1MSU5LUyA9IDIwCi1NQVhOQU1FTEVOID0gMjU2Ci1OQUREUiA9IDEzCi1QSVBFX0JVRiA9IDUxMjAKLVBJUEVfTUFYID0gNTEyMAotTkJCWSA9IDgKLU1BWEJTSVpFID0gODE5MgotREVWX0JTSVpFID0gNTEyCi1ERVZfQlNISUZUID0gOQotTUFYRlJBRyA9IDgKLU1BWE9GRjMyX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmZmZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZgotTUFYT0ZGU0VUX1QgPSAweDdmZmZmZmZmCi1kZWYgYnRvZGIoYnl0ZXMpOiByZXR1cm4gICBcCi0KLWRlZiBkYnRvYihkYik6IHJldHVybiAgIFwKLQotZGVmIGxidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGxkYnRvYihkYik6IHJldHVybiAgIFwKLQotTkNBUkdTMzIgPSAweDEwMDAwMAotTkNBUkdTNjQgPSAweDIwMDAwMAotTkNBUkdTID0gTkNBUkdTNjQKLU5DQVJHUyA9IE5DQVJHUzMyCi1GU0hJRlQgPSA4Ci1GU0NBTEUgPSAoMTw8RlNISUZUKQotZGVmIERFTEFZKG4pOiByZXR1cm4gZHJ2X3VzZWN3YWl0KG4pCi0KLWRlZiBtbXVfcHRvYih4KTogcmV0dXJuICgoeCkgPDwgTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wKHgpOiByZXR1cm4gKCgoeCkpID4+IE1NVV9QQUdFU0hJRlQpCi0KLWRlZiBtbXVfYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBNTVVfUEFHRU9GRlNFVCkgPj4gTU1VX1BBR0VTSElGVCkpCi0KLWRlZiBtbXVfcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKE1NVV9QQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2QoeCk6IHJldHVybiAoKHgpIDw8IChQQUdFU0hJRlQgLSBERVZfQlNISUZUKSkKLQotZGVmIHB0b2IoeCk6IHJldHVybiAoKHgpIDw8IFBBR0VTSElGVCkKLQotZGVmIGJ0b3AoeCk6IHJldHVybiAoKCh4KSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgYnRvcHIoeCk6IHJldHVybiAoKCgoeCkgKyBQQUdFT0ZGU0VUKSA+PiBQQUdFU0hJRlQpKQotCi1kZWYgZHRvcChERCk6IHJldHVybiAoKChERCkgKyBORFBQIC0gMSkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgZHRvcHQoREQpOiByZXR1cm4gKChERCkgPj4gKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1fQUlPX0xJU1RJT19NQVggPSAoNDA5NikKLV9BSU9fTUFYID0gKC0xKQotX01RX09QRU5fTUFYID0gKDMyKQotX01RX1BSSU9fTUFYID0gKDMyKQotX1NFTV9OU0VNU19NQVggPSBJTlRfTUFYCi1fU0VNX1ZBTFVFX01BWCA9IElOVF9NQVgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91bmlzdGQuaAotX0NTX1BBVEggPSA2NQotX0NTX0xGU19DRkxBR1MgPSA2OAotX0NTX0xGU19MREZMQUdTID0gNjkKLV9DU19MRlNfTElCUyA9IDcwCi1fQ1NfTEZTX0xJTlRGTEFHUyA9IDcxCi1fQ1NfTEZTNjRfQ0ZMQUdTID0gNzIKLV9DU19MRlM2NF9MREZMQUdTID0gNzMKLV9DU19MRlM2NF9MSUJTID0gNzQKLV9DU19MRlM2NF9MSU5URkxBR1MgPSA3NQotX0NTX1hCUzVfSUxQMzJfT0ZGMzJfQ0ZMQUdTID0gNzAwCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MREZMQUdTID0gNzAxCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSUJTID0gNzAyCi1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9MSU5URkxBR1MgPSA3MDMKLV9DU19YQlM1X0lMUDMyX09GRkJJR19DRkxBR1MgPSA3MDUKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MREZMQUdTID0gNzA2Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElCUyA9IDcwNwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xJTlRGTEFHUyA9IDcwOAotX0NTX1hCUzVfTFA2NF9PRkY2NF9DRkxBR1MgPSA3MDkKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTERGTEFHUyA9IDcxMAotX0NTX1hCUzVfTFA2NF9PRkY2NF9MSUJTID0gNzExCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJTlRGTEFHUyA9IDcxMgotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0NGTEFHUyA9IDcxMwotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xERkxBR1MgPSA3MTQKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSUJTID0gNzE1Ci1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTElOVEZMQUdTID0gNzE2Ci1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX1NUUkVBTV9NQVggPSAxNgotX1NDX1RaTkFNRV9NQVggPSAxNwotX1NDX0FJT19MSVNUSU9fTUFYID0gMTgKLV9TQ19BSU9fTUFYID0gMTkKLV9TQ19BSU9fUFJJT19ERUxUQV9NQVggPSAyMAotX1NDX0FTWU5DSFJPTk9VU19JTyA9IDIxCi1fU0NfREVMQVlUSU1FUl9NQVggPSAyMgotX1NDX0ZTWU5DID0gMjMKLV9TQ19NQVBQRURfRklMRVMgPSAyNAotX1NDX01FTUxPQ0sgPSAyNQotX1NDX01FTUxPQ0tfUkFOR0UgPSAyNgotX1NDX01FTU9SWV9QUk9URUNUSU9OID0gMjcKLV9TQ19NRVNTQUdFX1BBU1NJTkcgPSAyOAotX1NDX01RX09QRU5fTUFYID0gMjkKLV9TQ19NUV9QUklPX01BWCA9IDMwCi1fU0NfUFJJT1JJVElaRURfSU8gPSAzMQotX1NDX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSAzMgotX1NDX1JFQUxUSU1FX1NJR05BTFMgPSAzMwotX1NDX1JUU0lHX01BWCA9IDM0Ci1fU0NfU0VNQVBIT1JFUyA9IDM1Ci1fU0NfU0VNX05TRU1TX01BWCA9IDM2Ci1fU0NfU0VNX1ZBTFVFX01BWCA9IDM3Ci1fU0NfU0hBUkVEX01FTU9SWV9PQkpFQ1RTID0gMzgKLV9TQ19TSUdRVUVVRV9NQVggPSAzOQotX1NDX1NJR1JUX01JTiA9IDQwCi1fU0NfU0lHUlRfTUFYID0gNDEKLV9TQ19TWU5DSFJPTklaRURfSU8gPSA0MgotX1NDX1RJTUVSUyA9IDQzCi1fU0NfVElNRVJfTUFYID0gNDQKLV9TQ18yX0NfQklORCA9IDQ1Ci1fU0NfMl9DX0RFViA9IDQ2Ci1fU0NfMl9DX1ZFUlNJT04gPSA0NwotX1NDXzJfRk9SVF9ERVYgPSA0OAotX1NDXzJfRk9SVF9SVU4gPSA0OQotX1NDXzJfTE9DQUxFREVGID0gNTAKLV9TQ18yX1NXX0RFViA9IDUxCi1fU0NfMl9VUEUgPSA1MgotX1NDXzJfVkVSU0lPTiA9IDUzCi1fU0NfQkNfQkFTRV9NQVggPSA1NAotX1NDX0JDX0RJTV9NQVggPSA1NQotX1NDX0JDX1NDQUxFX01BWCA9IDU2Ci1fU0NfQkNfU1RSSU5HX01BWCA9IDU3Ci1fU0NfQ09MTF9XRUlHSFRTX01BWCA9IDU4Ci1fU0NfRVhQUl9ORVNUX01BWCA9IDU5Ci1fU0NfTElORV9NQVggPSA2MAotX1NDX1JFX0RVUF9NQVggPSA2MQotX1NDX1hPUEVOX0NSWVBUID0gNjIKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDYzCi1fU0NfWE9QRU5fU0hNID0gNjQKLV9TQ18yX0NIQVJfVEVSTSA9IDY2Ci1fU0NfWE9QRU5fWENVX1ZFUlNJT04gPSA2NwotX1NDX0FURVhJVF9NQVggPSA3NgotX1NDX0lPVl9NQVggPSA3NwotX1NDX1hPUEVOX1VOSVggPSA3OAotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1RfSU9WX01BWCA9IDc5Ci1fU0NfUEhZU19QQUdFUyA9IDUwMAotX1NDX0FWUEhZU19QQUdFUyA9IDUwMQotX1NDX0NPSEVSX0JMS1NaID0gNTAzCi1fU0NfU1BMSVRfQ0FDSEUgPSA1MDQKLV9TQ19JQ0FDSEVfU1ogPSA1MDUKLV9TQ19EQ0FDSEVfU1ogPSA1MDYKLV9TQ19JQ0FDSEVfTElORVNaID0gNTA3Ci1fU0NfRENBQ0hFX0xJTkVTWiA9IDUwOAotX1NDX0lDQUNIRV9CTEtTWiA9IDUwOQotX1NDX0RDQUNIRV9CTEtTWiA9IDUxMAotX1NDX0RDQUNIRV9UQkxLU1ogPSA1MTEKLV9TQ19JQ0FDSEVfQVNTT0MgPSA1MTIKLV9TQ19EQ0FDSEVfQVNTT0MgPSA1MTMKLV9TQ19NQVhQSUQgPSA1MTQKLV9TQ19TVEFDS19QUk9UID0gNTE1Ci1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU2OAotX1NDX0dFVEdSX1JfU0laRV9NQVggPSA1NjkKLV9TQ19HRVRQV19SX1NJWkVfTUFYID0gNTcwCi1fU0NfTE9HSU5fTkFNRV9NQVggPSA1NzEKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NzIKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTczCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNTc0Ci1fU0NfVFRZX05BTUVfTUFYID0gNTc1Ci1fU0NfVEhSRUFEUyA9IDU3NgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDU3NwotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDU3OAotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTc5Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU4MAotX1NDX1RIUkVBRF9QUklPX1BST1RFQ1QgPSA1ODEKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA1ODIKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA1ODMKLV9TQ19YT1BFTl9MRUdBQ1kgPSA3MTcKLV9TQ19YT1BFTl9SRUFMVElNRSA9IDcxOAotX1NDX1hPUEVOX1JFQUxUSU1FX1RIUkVBRFMgPSA3MTkKLV9TQ19YQlM1X0lMUDMyX09GRjMyID0gNzIwCi1fU0NfWEJTNV9JTFAzMl9PRkZCSUcgPSA3MjEKLV9TQ19YQlM1X0xQNjRfT0ZGNjQgPSA3MjIKLV9TQ19YQlM1X0xQQklHX09GRkJJRyA9IDcyMwotX1BDX0xJTktfTUFYID0gMQotX1BDX01BWF9DQU5PTiA9IDIKLV9QQ19NQVhfSU5QVVQgPSAzCi1fUENfTkFNRV9NQVggPSA0Ci1fUENfUEFUSF9NQVggPSA1Ci1fUENfUElQRV9CVUYgPSA2Ci1fUENfTk9fVFJVTkMgPSA3Ci1fUENfVkRJU0FCTEUgPSA4Ci1fUENfQ0hPV05fUkVTVFJJQ1RFRCA9IDkKLV9QQ19BU1lOQ19JTyA9IDEwCi1fUENfUFJJT19JTyA9IDExCi1fUENfU1lOQ19JTyA9IDEyCi1fUENfRklMRVNJWkVCSVRTID0gNjcKLV9QQ19MQVNUID0gNjcKLV9QT1NJWF9WRVJTSU9OID0gMTk5NTA2Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fWE9QRU5fWENVX1ZFUlNJT04gPSA0Ci1fWE9QRU5fUkVBTFRJTUUgPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fU0hNID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9DX0RFViA9IDEKLV9QT1NJWDJfU1dfREVWID0gMQotX1BPU0lYMl9VUEUgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yd2xvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIFJXX1JFQURfSEVMRCh4KTogcmV0dXJuIChyd19yZWFkX2hlbGQoKHgpKSkKLQotZGVmIFJXX1dSSVRFX0hFTEQoeCk6IHJldHVybiAocndfd3JpdGVfaGVsZCgoeCkpKQotCi1kZWYgUldfTE9DS19IRUxEKHgpOiByZXR1cm4gKHJ3X2xvY2tfaGVsZCgoeCkpKQotCi1kZWYgUldfSVNXUklURVIoeCk6IHJldHVybiAocndfaXN3cml0ZXIoeCkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZW1hcGhvcmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RocmVhZC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva2x3cC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZHZhci5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi1kZWYgVElDS19UT19TRUModGljayk6IHJldHVybiAoKHRpY2spIC8gaHopCi0KLWRlZiBTRUNfVE9fVElDSyhzZWMpOiByZXR1cm4gKChzZWMpICogaHopCi0KLWRlZiBUSUNLX1RPX01TRUModGljayk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0sobXNlYyk6IHJldHVybiBcCi0KLWRlZiBNU0VDX1RPX1RJQ0tfUk9VTkRVUChtc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fVVNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLKHVzZWMpOiByZXR1cm4gKCh1c2VjKSAvIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0tfUk9VTkRVUCh1c2VjKTogcmV0dXJuIFwKLQotZGVmIFRJQ0tfVE9fTlNFQyh0aWNrKTogcmV0dXJuICgodGljaykgKiBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLKG5zZWMpOiByZXR1cm4gKChuc2VjKSAvIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0tfUk9VTkRVUChuc2VjKTogcmV0dXJuIFwKLQotZGVmIFRJTUVWQUxfVE9fVElDSyh0dnApOiByZXR1cm4gXAotCi1kZWYgVElNRVNUUlVDX1RPX1RJQ0sodHNwKTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBpc28vdGltZV9pc28uaAotTlVMTCA9IDAKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnbmFsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pc28vc2lnbmFsX2lzby5oCi1TSUdIVVAgPSAxCi1TSUdJTlQgPSAyCi1TSUdRVUlUID0gMwotU0lHSUxMID0gNAotU0lHVFJBUCA9IDUKLVNJR0lPVCA9IDYKLVNJR0FCUlQgPSA2Ci1TSUdFTVQgPSA3Ci1TSUdGUEUgPSA4Ci1TSUdLSUxMID0gOQotU0lHQlVTID0gMTAKLVNJR1NFR1YgPSAxMQotU0lHU1lTID0gMTIKLVNJR1BJUEUgPSAxMwotU0lHQUxSTSA9IDE0Ci1TSUdURVJNID0gMTUKLVNJR1VTUjEgPSAxNgotU0lHVVNSMiA9IDE3Ci1TSUdDTEQgPSAxOAotU0lHQ0hMRCA9IDE4Ci1TSUdQV1IgPSAxOQotU0lHV0lOQ0ggPSAyMAotU0lHVVJHID0gMjEKLVNJR1BPTEwgPSAyMgotU0lHSU8gPSBTSUdQT0xMCi1TSUdTVE9QID0gMjMKLVNJR1RTVFAgPSAyNAotU0lHQ09OVCA9IDI1Ci1TSUdUVElOID0gMjYKLVNJR1RUT1UgPSAyNwotU0lHVlRBTFJNID0gMjgKLVNJR1BST0YgPSAyOQotU0lHWENQVSA9IDMwCi1TSUdYRlNaID0gMzEKLVNJR1dBSVRJTkcgPSAzMgotU0lHTFdQID0gMzMKLVNJR0ZSRUVaRSA9IDM0Ci1TSUdUSEFXID0gMzUKLVNJR0NBTkNFTCA9IDM2Ci1TSUdMT1NUID0gMzcKLV9TSUdSVE1JTiA9IDM4Ci1fU0lHUlRNQVggPSA0NQotU0lHX0JMT0NLID0gMQotU0lHX1VOQkxPQ0sgPSAyCi1TSUdfU0VUTUFTSyA9IDMKLVNJR05PX01BU0sgPSAweEZGCi1TSUdERUZFUiA9IDB4MTAwCi1TSUdIT0xEID0gMHgyMDAKLVNJR1JFTFNFID0gMHg0MDAKLVNJR0lHTk9SRSA9IDB4ODAwCi1TSUdQQVVTRSA9IDB4MTAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NpZ2luZm8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0lHRVZfTk9ORSA9IDEKLVNJR0VWX1NJR05BTCA9IDIKLVNJR0VWX1RIUkVBRCA9IDMKLVNJX05PSU5GTyA9IDMyNzY3Ci1TSV9VU0VSID0gMAotU0lfTFdQID0gKC0xKQotU0lfUVVFVUUgPSAoLTIpCi1TSV9USU1FUiA9ICgtMykKLVNJX0FTWU5DSU8gPSAoLTQpCi1TSV9NRVNHUSA9ICgtNSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tYWNoc2lnLmgKLUlMTF9JTExPUEMgPSAxCi1JTExfSUxMT1BOID0gMgotSUxMX0lMTEFEUiA9IDMKLUlMTF9JTExUUlAgPSA0Ci1JTExfUFJWT1BDID0gNQotSUxMX1BSVlJFRyA9IDYKLUlMTF9DT1BST0MgPSA3Ci1JTExfQkFEU1RLID0gOAotTlNJR0lMTCA9IDgKLUVNVF9UQUdPVkYgPSAxCi1FTVRfQ1BDT1ZGID0gMgotTlNJR0VNVCA9IDIKLUZQRV9JTlRESVYgPSAxCi1GUEVfSU5UT1ZGID0gMgotRlBFX0ZMVERJViA9IDMKLUZQRV9GTFRPVkYgPSA0Ci1GUEVfRkxUVU5EID0gNQotRlBFX0ZMVFJFUyA9IDYKLUZQRV9GTFRJTlYgPSA3Ci1GUEVfRkxUU1VCID0gOAotTlNJR0ZQRSA9IDgKLVNFR1ZfTUFQRVJSID0gMQotU0VHVl9BQ0NFUlIgPSAyCi1OU0lHU0VHViA9IDIKLUJVU19BRFJBTE4gPSAxCi1CVVNfQURSRVJSID0gMgotQlVTX09CSkVSUiA9IDMKLU5TSUdCVVMgPSAzCi1UUkFQX0JSS1BUID0gMQotVFJBUF9UUkFDRSA9IDIKLVRSQVBfUldBVENIID0gMwotVFJBUF9XV0FUQ0ggPSA0Ci1UUkFQX1hXQVRDSCA9IDUKLU5TSUdUUkFQID0gNQotQ0xEX0VYSVRFRCA9IDEKLUNMRF9LSUxMRUQgPSAyCi1DTERfRFVNUEVEID0gMwotQ0xEX1RSQVBQRUQgPSA0Ci1DTERfU1RPUFBFRCA9IDUKLUNMRF9DT05USU5VRUQgPSA2Ci1OU0lHQ0xEID0gNgotUE9MTF9JTiA9IDEKLVBPTExfT1VUID0gMgotUE9MTF9NU0cgPSAzCi1QT0xMX0VSUiA9IDQKLVBPTExfUFJJID0gNQotUE9MTF9IVVAgPSA2Ci1OU0lHUE9MTCA9IDYKLVBST0ZfU0lHID0gMQotTlNJR1BST0YgPSAxCi1TSV9NQVhTWiA9IDI1NgotU0lfTUFYU1ogPSAxMjgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lX3N0ZF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVNJMzJfTUFYU1ogPSAxMjgKLWRlZiBTSV9DQU5RVUVVRShjKTogcmV0dXJuICgoYykgPD0gU0lfUVVFVUUpCi0KLVNBX05PQ0xEU1RPUCA9IDB4MDAwMjAwMDAKLVNBX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TQV9SRVNFVEhBTkQgPSAweDAwMDAwMDAyCi1TQV9SRVNUQVJUID0gMHgwMDAwMDAwNAotU0FfU0lHSU5GTyA9IDB4MDAwMDAwMDgKLVNBX05PREVGRVIgPSAweDAwMDAwMDEwCi1TQV9OT0NMRFdBSVQgPSAweDAwMDEwMDAwCi1TQV9XQUlUU0lHID0gMHgwMDAxMDAwMAotTlNJRyA9IDQ2Ci1NQVhTSUcgPSA0NQotU19TSUdOQUwgPSAxCi1TX1NJR1NFVCA9IDIKLVNfU0lHQUNUSU9OID0gMwotU19OT05FID0gNAotTUlOU0lHU1RLU1ogPSAyMDQ4Ci1TSUdTVEtTWiA9IDgxOTIKLVNTX09OU1RBQ0sgPSAweDAwMDAwMDAxCi1TU19ESVNBQkxFID0gMHgwMDAwMDAwMgotU05fUFJPQyA9IDEKLVNOX0NBTkNFTCA9IDIKLVNOX1NFTkQgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWNvbnRleHQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3JlZ3NldC5oCi1SRUdfQ0NSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUFNSID0gKDApCi1SRUdfUEMgPSAoMSkKLVJFR19uUEMgPSAoMikKLVJFR19ZID0gKDMpCi1SRUdfRzEgPSAoNCkKLVJFR19HMiA9ICg1KQotUkVHX0czID0gKDYpCi1SRUdfRzQgPSAoNykKLVJFR19HNSA9ICg4KQotUkVHX0c2ID0gKDkpCi1SRUdfRzcgPSAoMTApCi1SRUdfTzAgPSAoMTEpCi1SRUdfTzEgPSAoMTIpCi1SRUdfTzIgPSAoMTMpCi1SRUdfTzMgPSAoMTQpCi1SRUdfTzQgPSAoMTUpCi1SRUdfTzUgPSAoMTYpCi1SRUdfTzYgPSAoMTcpCi1SRUdfTzcgPSAoMTgpCi1SRUdfQVNJID0gKDE5KQotUkVHX0ZQUlMgPSAoMjApCi1SRUdfUFMgPSBSRUdfUFNSCi1SRUdfU1AgPSBSRUdfTzYKLVJFR19SMCA9IFJFR19PMAotUkVHX1IxID0gUkVHX08xCi1fTkdSRUcgPSAyMQotX05HUkVHID0gMTkKLU5HUkVHID0gX05HUkVHCi1fTkdSRUczMiA9IDE5Ci1fTkdSRUc2NCA9IDIxCi1TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotTUFYRlBRID0gMTYKLVhSU19JRCA9IDB4Nzg3MjczMDAKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wcml2cmVncy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2Ny9zeXMvcHNyLmgKLVBTUl9DV1AgPSAweDAwMDAwMDFGCi1QU1JfRVQgPSAweDAwMDAwMDIwCi1QU1JfUFMgPSAweDAwMDAwMDQwCi1QU1JfUyA9IDB4MDAwMDAwODAKLVBTUl9QSUwgPSAweDAwMDAwRjAwCi1QU1JfRUYgPSAweDAwMDAxMDAwCi1QU1JfRUMgPSAweDAwMDAyMDAwCi1QU1JfUlNWID0gMHgwMDBGQzAwMAotUFNSX0lDQyA9IDB4MDBGMDAwMDAKLVBTUl9DID0gMHgwMDEwMDAwMAotUFNSX1YgPSAweDAwMjAwMDAwCi1QU1JfWiA9IDB4MDA0MDAwMDAKLVBTUl9OID0gMHgwMDgwMDAwMAotUFNSX1ZFUiA9IDB4MEYwMDAwMDAKLVBTUl9JTVBMID0gMHhGMDAwMDAwMAotUFNMX0FMTENDID0gUFNSX0lDQwotUFNMX1VTRVIgPSAoUFNSX1MpCi1QU0xfVVNFUk1BU0sgPSAoUFNSX0lDQykKLVBTTF9VQklUUyA9IChQU1JfSUNDfFBTUl9FRikKLWRlZiBVU0VSTU9ERShwcyk6IHJldHVybiAoKChwcykgJiBQU1JfUFMpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mc3IuaAotRlNSX0NFWEMgPSAweDAwMDAwMDFmCi1GU1JfQUVYQyA9IDB4MDAwMDAzZTAKLUZTUl9GQ0MgPSAweDAwMDAwYzAwCi1GU1JfUFIgPSAweDAwMDAxMDAwCi1GU1JfUU5FID0gMHgwMDAwMjAwMAotRlNSX0ZUVCA9IDB4MDAwMWMwMDAKLUZTUl9WRVIgPSAweDAwMGUwMDAwCi1GU1JfVEVNID0gMHgwZjgwMDAwMAotRlNSX1JQID0gMHgzMDAwMDAwMAotRlNSX1JEID0gMHhjMDAwMDAwMAotRlNSX1ZFUl9TSElGVCA9IDE3Ci1GU1JfRkNDMSA9IDB4MDAwMDAwMDMKLUZTUl9GQ0MyID0gMHgwMDAwMDAwQwotRlNSX0ZDQzMgPSAweDAwMDAwMDMwCi1GU1JfQ0VYQ19OWCA9IDB4MDAwMDAwMDEKLUZTUl9DRVhDX0RaID0gMHgwMDAwMDAwMgotRlNSX0NFWENfVUYgPSAweDAwMDAwMDA0Ci1GU1JfQ0VYQ19PRiA9IDB4MDAwMDAwMDgKLUZTUl9DRVhDX05WID0gMHgwMDAwMDAxMAotRlNSX0FFWENfTlggPSAoMHgxIDw8IDUpCi1GU1JfQUVYQ19EWiA9ICgweDIgPDwgNSkKLUZTUl9BRVhDX1VGID0gKDB4NCA8PCA1KQotRlNSX0FFWENfT0YgPSAoMHg4IDw8IDUpCi1GU1JfQUVYQ19OViA9ICgweDEwIDw8IDUpCi1GVFRfTk9ORSA9IDAKLUZUVF9JRUVFID0gMQotRlRUX1VORklOID0gMgotRlRUX1VOSU1QID0gMwotRlRUX1NFUSA9IDQKLUZUVF9BTElHTiA9IDUKLUZUVF9ERkFVTFQgPSA2Ci1GU1JfRlRUX1NISUZUID0gMTQKLUZTUl9GVFRfSUVFRSA9IChGVFRfSUVFRSAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1VORklOID0gKEZUVF9VTkZJTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5JTVAgPSAoRlRUX1VOSU1QICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9TRVEgPSAoRlRUX1NFUSAgICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9BTElHTiA9IChGVFRfQUxJR04gIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0RGQVVMVCA9IChGVFRfREZBVUxUIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfVEVNX05YID0gKDB4MSA8PCAyMykKLUZTUl9URU1fRFogPSAoMHgyIDw8IDIzKQotRlNSX1RFTV9VRiA9ICgweDQgPDwgMjMpCi1GU1JfVEVNX09GID0gKDB4OCA8PCAyMykKLUZTUl9URU1fTlYgPSAoMHgxMCA8PCAyMykKLVJQX0RCTEVYVCA9IDAKLVJQX1NJTkdMRSA9IDEKLVJQX0RPVUJMRSA9IDIKLVJQX1JFU0VSVkVEID0gMwotUkRfTkVBUiA9IDAKLVJEX1pFUjAgPSAxCi1SRF9QT1NJTkYgPSAyCi1SRF9ORUdJTkYgPSAzCi1GUFJTX0RMID0gMHgxCi1GUFJTX0RVID0gMHgyCi1GUFJTX0ZFRiA9IDB4NAotUElMX01BWCA9IDB4ZgotZGVmIFNBVkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX0dMT0JBTFMoUlApOiByZXR1cm4gXAotCi1kZWYgU0FWRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfT1VUUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9XSU5ET1coU0JQKTogcmV0dXJuIFwKLQotZGVmIFNUT1JFX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLWRlZiBMT0FEX0ZQUkVHUyhGUCk6IHJldHVybiBcCi0KLV9TUEFSQ19NQVhSRUdXSU5ET1cgPSAzMQotX1hSU19JRCA9IDB4Nzg3MjczMDAKLUdFVENPTlRFWFQgPSAwCi1TRVRDT05URVhUID0gMQotVUNfU0lHTUFTSyA9IDBvMDEKLVVDX1NUQUNLID0gMG8wMgotVUNfQ1BVID0gMG8wNAotVUNfTUFVID0gMG8xMAotVUNfRlBVID0gVUNfTUFVCi1VQ19JTlRSID0gMG8yMAotVUNfQVNSID0gMG80MAotVUNfTUNPTlRFWFQgPSAoVUNfQ1BVfFVDX0ZQVXxVQ19BU1IpCi1VQ19BTEwgPSAoVUNfU0lHTUFTS3xVQ19TVEFDS3xVQ19NQ09OVEVYVCkKLV9TSUdRVUVVRV9NQVggPSAzMgotX1NJR05PVElGWV9NQVggPSAzMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BjYi5oCi1JTlNUUl9WQUxJRCA9IDB4MDIKLU5PUk1BTF9TVEVQID0gMHgwNAotV0FUQ0hfU1RFUCA9IDB4MDgKLUNQQ19PVkVSRkxPVyA9IDB4MTAKLUFTWU5DX0hXRVJSID0gMHgyMAotU1RFUF9OT05FID0gMAotU1RFUF9SRVFVRVNURUQgPSAxCi1TVEVQX0FDVElWRSA9IDIKLVNURVBfV0FTQUNUSVZFID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21zYWNjdC5oCi1MTVNfVVNFUiA9IDAKLUxNU19TWVNURU0gPSAxCi1MTVNfVFJBUCA9IDIKLUxNU19URkFVTFQgPSAzCi1MTVNfREZBVUxUID0gNAotTE1TX0tGQVVMVCA9IDUKLUxNU19VU0VSX0xPQ0sgPSA2Ci1MTVNfU0xFRVAgPSA3Ci1MTVNfV0FJVF9DUFUgPSA4Ci1MTVNfU1RPUFBFRCA9IDkKLU5NU1RBVEVTID0gMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9sd3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5bmNoLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVVTWU5DX1RIUkVBRCA9IDB4MDAKLVVTWU5DX1BST0NFU1MgPSAweDAxCi1MT0NLX05PUk1BTCA9IDB4MDAKLUxPQ0tfRVJST1JDSEVDSyA9IDB4MDIKLUxPQ0tfUkVDVVJTSVZFID0gMHgwNAotVVNZTkNfUFJPQ0VTU19ST0JVU1QgPSAweDA4Ci1MT0NLX1BSSU9fTk9ORSA9IDB4MDAKLUxPQ0tfUFJJT19JTkhFUklUID0gMHgxMAotTE9DS19QUklPX1BST1RFQ1QgPSAweDIwCi1MT0NLX1NUQUxMX05QID0gMHgwMAotTE9DS19ST0JVU1RfTlAgPSAweDQwCi1MT0NLX09XTkVSREVBRCA9IDB4MQotTE9DS19OT1RSRUNPVkVSQUJMRSA9IDB4MgotTE9DS19JTklURUQgPSAweDQKLUxPQ0tfVU5NQVBQRUQgPSAweDgKLUxXUF9ERVRBQ0hFRCA9IDB4MDAwMDAwNDAKLUxXUF9TVVNQRU5ERUQgPSAweDAwMDAwMDgwCi1fX0xXUF9BU0xXUCA9IDB4MDAwMDAxMDAKLU1BWFNZU0FSR1MgPSA4Ci1OT1JNQUxSRVRVUk4gPSAwCi1KVVNUUkVUVVJOID0gMQotTFdQX1VTRVIgPSAweDAxCi1MV1BfU1lTID0gMHgwMgotVFNfRlJFRSA9IDB4MDAKLVRTX1NMRUVQID0gMHgwMQotVFNfUlVOID0gMHgwMgotVFNfT05QUk9DID0gMHgwNAotVFNfWk9NQiA9IDB4MDgKLVRTX1NUT1BQRUQgPSAweDEwCi1UX0lOVFJfVEhSRUFEID0gMHgwMDAxCi1UX1dBS0VBQkxFID0gMHgwMDAyCi1UX1RPTUFTSyA9IDB4MDAwNAotVF9UQUxMT0NTVEsgPSAweDAwMDgKLVRfV09VTERCTE9DSyA9IDB4MDAyMAotVF9ET05UQkxPQ0sgPSAweDAwNDAKLVRfRE9OVFBFTkQgPSAweDAwODAKLVRfU1lTX1BST0YgPSAweDAxMDAKLVRfV0FJVENWU0VNID0gMHgwMjAwCi1UX1dBVENIUFQgPSAweDA0MDAKLVRfUEFOSUMgPSAweDA4MDAKLVRQX0hPTERMV1AgPSAweDAwMDIKLVRQX1RXQUlUID0gMHgwMDA0Ci1UUF9MV1BFWElUID0gMHgwMDA4Ci1UUF9QUlNUT1AgPSAweDAwMTAKLVRQX0NIS1BUID0gMHgwMDIwCi1UUF9FWElUTFdQID0gMHgwMDQwCi1UUF9QUlZTVE9QID0gMHgwMDgwCi1UUF9NU0FDQ1QgPSAweDAxMDAKLVRQX1NUT1BQSU5HID0gMHgwMjAwCi1UUF9XQVRDSFBUID0gMHgwNDAwCi1UUF9QQVVTRSA9IDB4MDgwMAotVFBfQ0hBTkdFQklORCA9IDB4MTAwMAotVFNfTE9BRCA9IDB4MDAwMQotVFNfRE9OVF9TV0FQID0gMHgwMDAyCi1UU19TV0FQRU5RID0gMHgwMDA0Ci1UU19PTl9TV0FQUSA9IDB4MDAwOAotVFNfQ1NUQVJUID0gMHgwMTAwCi1UU19VTlBBVVNFID0gMHgwMjAwCi1UU19YU1RBUlQgPSAweDA0MDAKLVRTX1BTVEFSVCA9IDB4MDgwMAotVFNfUkVTVU1FID0gMHgxMDAwCi1UU19DUkVBVEUgPSAweDIwMDAKLVRTX0FMTFNUQVJUID0gXAotICAgICAgICAoVFNfQ1NUQVJUfFRTX1VOUEFVU0V8VFNfWFNUQVJUfFRTX1BTVEFSVHxUU19SRVNVTUV8VFNfQ1JFQVRFKQotZGVmIENQUl9WU1RPUFBFRCh0KTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9UUkFOU0lUSU9OKHRwKTogcmV0dXJuIHRocmVhZF90cmFuc2l0aW9uKHRwKTsKLQotZGVmIFRIUkVBRF9TVE9QKHRwKTogcmV0dXJuIFwKLQotZGVmIFRIUkVBRF9aT01CKHRwKTogcmV0dXJuIFRIUkVBRF9TRVRfU1RBVEUodHAsIFRTX1pPTUIsIE5VTEwpCi0KLWRlZiBTRU1BX0hFTEQoeCk6IHJldHVybiAoc2VtYV9oZWxkKCh4KSkpCi0KLU5PX0xPQ0tTX0hFTEQgPSAxCi1OT19DT01QRVRJTkdfVEhSRUFEUyA9IDEKLUZNTkFNRVNaID0gOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N5c3RtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wcm9jLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91c2VyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yZXNvdXJjZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1QUklPX1BST0NFU1MgPSAwCi1QUklPX1BHUlAgPSAxCi1QUklPX1VTRVIgPSAyCi1STElNSVRfQ1BVID0gMAotUkxJTUlUX0ZTSVpFID0gMQotUkxJTUlUX0RBVEEgPSAyCi1STElNSVRfU1RBQ0sgPSAzCi1STElNSVRfQ09SRSA9IDQKLVJMSU1JVF9OT0ZJTEUgPSA1Ci1STElNSVRfVk1FTSA9IDYKLVJMSU1JVF9BUyA9IFJMSU1JVF9WTUVNCi1STElNX05MSU1JVFMgPSA3Ci1STElNX0lORklOSVRZID0gKC0zKQotUkxJTV9TQVZFRF9NQVggPSAoLTIpCi1STElNX1NBVkVEX0NVUiA9ICgtMSkKLVJMSU1fSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU1fU0FWRURfQ1VSID0gMHg3ZmZmZmZmZAotUkxJTTMyX0lORklOSVRZID0gMHg3ZmZmZmZmZgotUkxJTTMyX1NBVkVEX01BWCA9IDB4N2ZmZmZmZmUKLVJMSU0zMl9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbW9kZWwuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RlYnVnLmgKLWRlZiBBU1NFUlQ2NCh4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1kZWYgQVNTRVJUMzIoeCk6IHJldHVybiBBU1NFUlQoeCkKLQotREFUQU1PREVMX01BU0sgPSAweDBGRjAwMDAwCi1EQVRBTU9ERUxfSUxQMzIgPSAweDAwMTAwMDAwCi1EQVRBTU9ERUxfTFA2NCA9IDB4MDAyMDAwMDAKLURBVEFNT0RFTF9OT05FID0gMAotREFUQU1PREVMX05BVElWRSA9IERBVEFNT0RFTF9MUDY0Ci1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0lMUDMyCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIFwKLQotZGVmIFNUUlVDVF9CVUYoaGFuZGxlKTogcmV0dXJuICgoaGFuZGxlKS5wdHIubTY0KQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX1NJWkUoaGFuZGxlKTogcmV0dXJuIChzaXplb2YgKCooaGFuZGxlKS5wdHIpKQotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0cikKLQotZGVmIFNJWkVPRl9QVFIodW1vZGVsKTogcmV0dXJuIHNpemVvZiAoY2FkZHJfdCkKLQotZGVmIGx3cF9nZXRkYXRhbW9kZWwodCk6IHJldHVybiBEQVRBTU9ERUxfSUxQMzIKLQotUlVTQUdFX1NFTEYgPSAwCi1SVVNBR0VfQ0hJTERSRU4gPSAtMQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2F1eHYuaAotQVRfTlVMTCA9IDAKLUFUX0lHTk9SRSA9IDEKLUFUX0VYRUNGRCA9IDIKLUFUX1BIRFIgPSAzCi1BVF9QSEVOVCA9IDQKLUFUX1BITlVNID0gNQotQVRfUEFHRVNaID0gNgotQVRfQkFTRSA9IDcKLUFUX0ZMQUdTID0gOAotQVRfRU5UUlkgPSA5Ci1BVF9EQ0FDSEVCU0laRSA9IDEwCi1BVF9JQ0FDSEVCU0laRSA9IDExCi1BVF9VQ0FDSEVCU0laRSA9IDEyCi1BVF9TVU5fVUlEID0gMjAwMAotQVRfU1VOX1JVSUQgPSAyMDAxCi1BVF9TVU5fR0lEID0gMjAwMgotQVRfU1VOX1JHSUQgPSAyMDAzCi1BVF9TVU5fTERFTEYgPSAyMDA0Ci1BVF9TVU5fTERTSERSID0gMjAwNQotQVRfU1VOX0xETkFNRSA9IDIwMDYKLUFUX1NVTl9MUEFHRVNaID0gMjAwNwotQVRfU1VOX1BMQVRGT1JNID0gMjAwOAotQVRfU1VOX0hXQ0FQID0gMjAwOQotQVRfU1VOX0lGTFVTSCA9IDIwMTAKLUFUX1NVTl9DUFUgPSAyMDExCi1BVF9TVU5fRU1VTF9FTlRSWSA9IDIwMTIKLUFUX1NVTl9FTVVMX0VYRUNGRCA9IDIwMTMKLUFUX1NVTl9FWEVDTkFNRSA9IDIwMTQKLUFUX1NVTl9NTVUgPSAyMDE1Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZXJybm8uaAotRVBFUk0gPSAxCi1FTk9FTlQgPSAyCi1FU1JDSCA9IDMKLUVJTlRSID0gNAotRUlPID0gNQotRU5YSU8gPSA2Ci1FMkJJRyA9IDcKLUVOT0VYRUMgPSA4Ci1FQkFERiA9IDkKLUVDSElMRCA9IDEwCi1FQUdBSU4gPSAxMQotRU5PTUVNID0gMTIKLUVBQ0NFUyA9IDEzCi1FRkFVTFQgPSAxNAotRU5PVEJMSyA9IDE1Ci1FQlVTWSA9IDE2Ci1FRVhJU1QgPSAxNwotRVhERVYgPSAxOAotRU5PREVWID0gMTkKLUVOT1RESVIgPSAyMAotRUlTRElSID0gMjEKLUVJTlZBTCA9IDIyCi1FTkZJTEUgPSAyMwotRU1GSUxFID0gMjQKLUVOT1RUWSA9IDI1Ci1FVFhUQlNZID0gMjYKLUVGQklHID0gMjcKLUVOT1NQQyA9IDI4Ci1FU1BJUEUgPSAyOQotRVJPRlMgPSAzMAotRU1MSU5LID0gMzEKLUVQSVBFID0gMzIKLUVET00gPSAzMwotRVJBTkdFID0gMzQKLUVOT01TRyA9IDM1Ci1FSURSTSA9IDM2Ci1FQ0hSTkcgPSAzNwotRUwyTlNZTkMgPSAzOAotRUwzSExUID0gMzkKLUVMM1JTVCA9IDQwCi1FTE5STkcgPSA0MQotRVVOQVRDSCA9IDQyCi1FTk9DU0kgPSA0MwotRUwySExUID0gNDQKLUVERUFETEsgPSA0NQotRU5PTENLID0gNDYKLUVDQU5DRUxFRCA9IDQ3Ci1FTk9UU1VQID0gNDgKLUVEUVVPVCA9IDQ5Ci1FQkFERSA9IDUwCi1FQkFEUiA9IDUxCi1FWEZVTEwgPSA1MgotRU5PQU5PID0gNTMKLUVCQURSUUMgPSA1NAotRUJBRFNMVCA9IDU1Ci1FREVBRExPQ0sgPSA1NgotRUJGT05UID0gNTcKLUVPV05FUkRFQUQgPSA1OAotRU5PVFJFQ09WRVJBQkxFID0gNTkKLUVOT1NUUiA9IDYwCi1FTk9EQVRBID0gNjEKLUVUSU1FID0gNjIKLUVOT1NSID0gNjMKLUVOT05FVCA9IDY0Ci1FTk9QS0cgPSA2NQotRVJFTU9URSA9IDY2Ci1FTk9MSU5LID0gNjcKLUVBRFYgPSA2OAotRVNSTU5UID0gNjkKLUVDT01NID0gNzAKLUVQUk9UTyA9IDcxCi1FTE9DS1VOTUFQUEVEID0gNzIKLUVOT1RBQ1RJVkUgPSA3MwotRU1VTFRJSE9QID0gNzQKLUVCQURNU0cgPSA3NwotRU5BTUVUT09MT05HID0gNzgKLUVPVkVSRkxPVyA9IDc5Ci1FTk9UVU5JUSA9IDgwCi1FQkFERkQgPSA4MQotRVJFTUNIRyA9IDgyCi1FTElCQUNDID0gODMKLUVMSUJCQUQgPSA4NAotRUxJQlNDTiA9IDg1Ci1FTElCTUFYID0gODYKLUVMSUJFWEVDID0gODcKLUVJTFNFUSA9IDg4Ci1FTk9TWVMgPSA4OQotRUxPT1AgPSA5MAotRVJFU1RBUlQgPSA5MQotRVNUUlBJUEUgPSA5MgotRU5PVEVNUFRZID0gOTMKLUVVU0VSUyA9IDk0Ci1FTk9UU09DSyA9IDk1Ci1FREVTVEFERFJSRVEgPSA5NgotRU1TR1NJWkUgPSA5NwotRVBST1RPVFlQRSA9IDk4Ci1FTk9QUk9UT09QVCA9IDk5Ci1FUFJPVE9OT1NVUFBPUlQgPSAxMjAKLUVTT0NLVE5PU1VQUE9SVCA9IDEyMQotRU9QTk9UU1VQUCA9IDEyMgotRVBGTk9TVVBQT1JUID0gMTIzCi1FQUZOT1NVUFBPUlQgPSAxMjQKLUVBRERSSU5VU0UgPSAxMjUKLUVBRERSTk9UQVZBSUwgPSAxMjYKLUVORVRET1dOID0gMTI3Ci1FTkVUVU5SRUFDSCA9IDEyOAotRU5FVFJFU0VUID0gMTI5Ci1FQ09OTkFCT1JURUQgPSAxMzAKLUVDT05OUkVTRVQgPSAxMzEKLUVOT0JVRlMgPSAxMzIKLUVJU0NPTk4gPSAxMzMKLUVOT1RDT05OID0gMTM0Ci1FU0hVVERPV04gPSAxNDMKLUVUT09NQU5ZUkVGUyA9IDE0NAotRVRJTUVET1VUID0gMTQ1Ci1FQ09OTlJFRlVTRUQgPSAxNDYKLUVIT1NURE9XTiA9IDE0NwotRUhPU1RVTlJFQUNIID0gMTQ4Ci1FV09VTERCTE9DSyA9IEVBR0FJTgotRUFMUkVBRFkgPSAxNDkKLUVJTlBST0dSRVNTID0gMTUwCi1FU1RBTEUgPSAxNTEKLVBTQVJHU1ogPSA4MAotUFNDT01TSVogPSAxNAotTUFYQ09NTEVOID0gMTYKLV9fS0VSTl9OQVVYVl9JTVBMID0gMTkKLV9fS0VSTl9OQVVYVl9JTVBMID0gMjEKLV9fS0VSTl9OQVVYVl9JTVBMID0gMjEKLVBTQVJHU1ogPSA4MAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3dhdGNocG9pbnQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gdm0vc2VnX2VudW0uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvcHlvcHMuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J1Zi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N0YXQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotS1NUQVRfU1RSTEVOID0gMzEKLWRlZiBLU1RBVF9FTlRFUihrKTogcmV0dXJuIFwKLQotZGVmIEtTVEFUX0VYSVQoayk6IHJldHVybiBcCi0KLUtTVEFUX1RZUEVfUkFXID0gMAotS1NUQVRfVFlQRV9OQU1FRCA9IDEKLUtTVEFUX1RZUEVfSU5UUiA9IDIKLUtTVEFUX1RZUEVfSU8gPSAzCi1LU1RBVF9UWVBFX1RJTUVSID0gNAotS1NUQVRfTlVNX1RZUEVTID0gNQotS1NUQVRfRkxBR19WSVJUVUFMID0gMHgwMQotS1NUQVRfRkxBR19WQVJfU0laRSA9IDB4MDIKLUtTVEFUX0ZMQUdfV1JJVEFCTEUgPSAweDA0Ci1LU1RBVF9GTEFHX1BFUlNJU1RFTlQgPSAweDA4Ci1LU1RBVF9GTEFHX0RPUk1BTlQgPSAweDEwCi1LU1RBVF9GTEFHX0lOVkFMSUQgPSAweDIwCi1LU1RBVF9SRUFEID0gMAotS1NUQVRfV1JJVEUgPSAxCi1LU1RBVF9EQVRBX0NIQVIgPSAwCi1LU1RBVF9EQVRBX0lOVDMyID0gMQotS1NUQVRfREFUQV9VSU5UMzIgPSAyCi1LU1RBVF9EQVRBX0lOVDY0ID0gMwotS1NUQVRfREFUQV9VSU5UNjQgPSA0Ci1LU1RBVF9EQVRBX0xPTkcgPSBLU1RBVF9EQVRBX0lOVDMyCi1LU1RBVF9EQVRBX1VMT05HID0gS1NUQVRfREFUQV9VSU5UMzIKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQ2NAotS1NUQVRfREFUQV9MT05HID0gNwotS1NUQVRfREFUQV9VTE9ORyA9IDgKLUtTVEFUX0RBVEFfTE9OR0xPTkcgPSBLU1RBVF9EQVRBX0lOVDY0Ci1LU1RBVF9EQVRBX1VMT05HTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0ZMT0FUID0gNQotS1NUQVRfREFUQV9ET1VCTEUgPSA2Ci1LU1RBVF9JTlRSX0hBUkQgPSAwCi1LU1RBVF9JTlRSX1NPRlQgPSAxCi1LU1RBVF9JTlRSX1dBVENIRE9HID0gMgotS1NUQVRfSU5UUl9TUFVSSU9VUyA9IDMKLUtTVEFUX0lOVFJfTVVMVFNWQyA9IDQKLUtTVEFUX05VTV9JTlRSUyA9IDUKLUJfQlVTWSA9IDB4MDAwMQotQl9ET05FID0gMHgwMDAyCi1CX0VSUk9SID0gMHgwMDA0Ci1CX1BBR0VJTyA9IDB4MDAxMAotQl9QSFlTID0gMHgwMDIwCi1CX1JFQUQgPSAweDAwNDAKLUJfV1JJVEUgPSAweDAxMDAKLUJfS0VSTkJVRiA9IDB4MDAwOAotQl9XQU5URUQgPSAweDAwODAKLUJfQUdFID0gMHgwMDAyMDAKLUJfQVNZTkMgPSAweDAwMDQwMAotQl9ERUxXUkkgPSAweDAwMDgwMAotQl9TVEFMRSA9IDB4MDAxMDAwCi1CX0RPTlRORUVEID0gMHgwMDIwMDAKLUJfUkVNQVBQRUQgPSAweDAwNDAwMAotQl9GUkVFID0gMHgwMDgwMDAKLUJfSU5WQUwgPSAweDAxMDAwMAotQl9GT1JDRSA9IDB4MDIwMDAwCi1CX0hFQUQgPSAweDA0MDAwMAotQl9OT0NBQ0hFID0gMHgwODAwMDAKLUJfVFJVTkMgPSAweDEwMDAwMAotQl9TSEFET1cgPSAweDIwMDAwMAotQl9SRVRSWVdSSSA9IDB4NDAwMDAwCi1kZWYgbm90YXZhaWwoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFKGJwKTogcmV0dXJuIFwKLQotZGVmIEJXUklURTIoYnApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYWlvX3JlcS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVdQX05PV0FUQ0ggPSAweDAxCi1XUF9TRVRQUk9UID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLV9USU1FUl9NQVggPSAzMgotSVRMS19MT0NLRUQgPSAweDAxCi1JVExLX1dBTlRFRCA9IDB4MDIKLUlUTEtfUkVNT1ZFID0gMHgwNAotSVRfUEVSTFdQID0gMHgwMQotSVRfU0lHTkFMID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3V0cmFwLmgKLVVUX0lOU1RSVUNUSU9OX0RJU0FCTEVEID0gMQotVVRfSU5TVFJVQ1RJT05fRVJST1IgPSAyCi1VVF9JTlNUUlVDVElPTl9QUk9URUNUSU9OID0gMwotVVRfSUxMVFJBUF9JTlNUUlVDVElPTiA9IDQKLVVUX0lMTEVHQUxfSU5TVFJVQ1RJT04gPSA1Ci1VVF9QUklWSUxFR0VEX09QQ09ERSA9IDYKLVVUX0ZQX0RJU0FCTEVEID0gNwotVVRfRlBfRVhDRVBUSU9OX0lFRUVfNzU0ID0gOAotVVRfRlBfRVhDRVBUSU9OX09USEVSID0gOQotVVRfVEFHX09WRVJGTE9XID0gMTAKLVVUX0RJVklTSU9OX0JZX1pFUk8gPSAxMQotVVRfREFUQV9FWENFUFRJT04gPSAxMgotVVRfREFUQV9FUlJPUiA9IDEzCi1VVF9EQVRBX1BST1RFQ1RJT04gPSAxNAotVVRfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQgPSAxNQotVVRfUFJJVklMRUdFRF9BQ1RJT04gPSAxNgotVVRfQVNZTkNfREFUQV9FUlJPUiA9IDE3Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzE2ID0gMTgKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMTcgPSAxOQotVVRfVFJBUF9JTlNUUlVDVElPTl8xOCA9IDIwCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzE5ID0gMjEKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjAgPSAyMgotVVRfVFJBUF9JTlNUUlVDVElPTl8yMSA9IDIzCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzIyID0gMjQKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjMgPSAyNQotVVRfVFJBUF9JTlNUUlVDVElPTl8yNCA9IDI2Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI1ID0gMjcKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjYgPSAyOAotVVRfVFJBUF9JTlNUUlVDVElPTl8yNyA9IDI5Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI4ID0gMzAKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjkgPSAzMQotVVRfVFJBUF9JTlNUUlVDVElPTl8zMCA9IDMyCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzMxID0gMzMKLVVUUkFQX1Y4UF9GUF9ESVNBQkxFRCA9IFVUX0ZQX0RJU0FCTEVECi1VVFJBUF9WOFBfTUVNX0FERFJFU1NfTk9UX0FMSUdORUQgPSBVVF9NRU1fQUREUkVTU19OT1RfQUxJR05FRAotVVRfUFJFQ0lTRV9NQVhUUkFQUyA9IDMzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcmVmc3RyLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90YXNrLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVRBU0tfTk9STUFMID0gMHgwCi1UQVNLX0ZJTkFMID0gMHgxCi1UQVNLX0ZJTkFMSVRZID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaWRfc3BhY2UuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3ZtZW0uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotVk1fU0xFRVAgPSAweDAwMDAwMDAwCi1WTV9OT1NMRUVQID0gMHgwMDAwMDAwMQotVk1fUEFOSUMgPSAweDAwMDAwMDAyCi1WTV9LTUZMQUdTID0gMHgwMDAwMDBmZgotVk1fQkVTVEZJVCA9IDB4MDAwMDAxMDAKLVZNRU1fQUxMT0MgPSAweDAxCi1WTUVNX0ZSRUUgPSAweDAyCi1WTUVNX1NQQU4gPSAweDEwCi1JU1BfTk9STUFMID0gMHgwCi1JU1BfUkVTRVJWRSA9IDB4MQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2V4YWNjdF9pbXBsLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rbWVtLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUtNX1NMRUVQID0gMHgwMDAwCi1LTV9OT1NMRUVQID0gMHgwMDAxCi1LTV9QQU5JQyA9IDB4MDAwMgotS01fVk1GTEFHUyA9IDB4MDBmZgotS01fRkxBR1MgPSAweGZmZmYKLUtNQ19OT1RPVUNIID0gMHgwMDAxMDAwMAotS01DX05PREVCVUcgPSAweDAwMDIwMDAwCi1LTUNfTk9NQUdBWklORSA9IDB4MDAwNDAwMDAKLUtNQ19OT0hBU0ggPSAweDAwMDgwMDAwCi1LTUNfUUNBQ0hFID0gMHgwMDEwMDAwMAotX0lTQV9JQTMyID0gMAotX0lTQV9JQTY0ID0gMQotU1NMRUVQID0gMQotU1JVTiA9IDIKLVNaT01CID0gMwotU1NUT1AgPSA0Ci1TSURMID0gNQotU09OUFJPQyA9IDYKLUNMRFBFTkQgPSAweDAwMDEKLUNMRENPTlQgPSAweDAwMDIKLVNTWVMgPSAweDAwMDAwMDAxCi1TVFJDID0gMHgwMDAwMDAwMgotU0xPQUQgPSAweDAwMDAwMDA4Ci1TTE9DSyA9IDB4MDAwMDAwMTAKLVNQUkVYRUMgPSAweDAwMDAwMDIwCi1TUFJPQ1RSID0gMHgwMDAwMDA0MAotU1BSRk9SSyA9IDB4MDAwMDAwODAKLVNLSUxMRUQgPSAweDAwMDAwMTAwCi1TVUxPQUQgPSAweDAwMDAwMjAwCi1TUlVOTENMID0gMHgwMDAwMDQwMAotU0JQVEFESiA9IDB4MDAwMDA4MDAKLVNLSUxMQ0wgPSAweDAwMDAxMDAwCi1TT1dFVVBDID0gMHgwMDAwMjAwMAotU0VYRUNFRCA9IDB4MDAwMDQwMDAKLVNQQVNZTkMgPSAweDAwMDA4MDAwCi1TSkNUTCA9IDB4MDAwMTAwMDAKLVNOT1dBSVQgPSAweDAwMDIwMDAwCi1TVkZPUksgPSAweDAwMDQwMDAwCi1TVkZXQUlUID0gMHgwMDA4MDAwMAotRVhJVExXUFMgPSAweDAwMTAwMDAwCi1IT0xERk9SSyA9IDB4MDAyMDAwMDAKLVNXQUlUU0lHID0gMHgwMDQwMDAwMAotSE9MREZPUksxID0gMHgwMDgwMDAwMAotQ09SRURVTVAgPSAweDAxMDAwMDAwCi1TTVNBQ0NUID0gMHgwMjAwMDAwMAotQVNMV1AgPSAweDA0MDAwMDAwCi1TUFJMT0NLID0gMHgwODAwMDAwMAotTk9DRCA9IDB4MTAwMDAwMDAKLUhPTERXQVRDSCA9IDB4MjAwMDAwMDAKLVNNU0ZPUksgPSAweDQwMDAwMDAwCi1TRE9DT1JFID0gMHg4MDAwMDAwMAotRk9SUkVBTCA9IDAKLUpVU1RMT09LSU5HID0gMQotU1VTUEVORF9OT1JNQUwgPSAwCi1TVVNQRU5EX1BBVVNFID0gMQotTk9DTEFTUyA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGl0eXBlcy5oCi1ERElfREVWSUNFX0FUVFJfVjAgPSAweDAwMDEKLURESV9ORVZFUlNXQVBfQUNDID0gMHgwMAotRERJX1NUUlVDVFVSRV9MRV9BQ0MgPSAweDAxCi1ERElfU1RSVUNUVVJFX0JFX0FDQyA9IDB4MDIKLURESV9TVFJJQ1RPUkRFUl9BQ0MgPSAweDAwCi1ERElfVU5PUkRFUkVEX09LX0FDQyA9IDB4MDEKLURESV9NRVJHSU5HX09LX0FDQyA9IDB4MDIKLURESV9MT0FEQ0FDSElOR19PS19BQ0MgPSAweDAzCi1ERElfU1RPUkVDQUNISU5HX09LX0FDQyA9IDB4MDQKLURESV9EQVRBX1NaMDFfQUNDID0gMQotRERJX0RBVEFfU1owMl9BQ0MgPSAyCi1ERElfREFUQV9TWjA0X0FDQyA9IDQKLURESV9EQVRBX1NaMDhfQUNDID0gOAotVkVSU19BQ0NIREwgPSAweDAwMDEKLURFVklEX05PTkUgPSAwCi1ERVZJRF9TQ1NJM19XV04gPSAxCi1ERVZJRF9TQ1NJX1NFUklBTCA9IDIKLURFVklEX0ZBQiA9IDMKLURFVklEX0VOQ0FQID0gNAotREVWSURfTUFYVFlQRSA9IDQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92YXJhcmdzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy92YV9saXN0LmgKLVZBX0FMSUdOID0gOAotZGVmIF9BUkdTSVpFT0YodCk6IHJldHVybiAoKHNpemVvZiAodCkgKyBWQV9BTElHTiAtIDEpICYgfihWQV9BTElHTiAtIDEpKQotCi1WQV9BTElHTiA9IDgKLWRlZiBfQVJHU0laRU9GKHQpOiByZXR1cm4gKChzaXplb2YgKHQpICsgVkFfQUxJR04gLSAxKSAmIH4oVkFfQUxJR04gLSAxKSkKLQotTlNZU0NBTEwgPSAyNTYKLVNFXzMyUlZBTDEgPSAweDAKLVNFXzMyUlZBTDIgPSAweDEKLVNFXzY0UlZBTCA9IDB4MgotU0VfUlZBTF9NQVNLID0gMHgzCi1TRV9MT0FEQUJMRSA9IDB4MDgKLVNFX0xPQURFRCA9IDB4MTAKLVNFX05PVU5MT0FEID0gMHgyMAotU0VfQVJHQyA9IDB4NDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZXZvcHMuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3BvbGwuaAotUE9MTElOID0gMHgwMDAxCi1QT0xMUFJJID0gMHgwMDAyCi1QT0xMT1VUID0gMHgwMDA0Ci1QT0xMUkROT1JNID0gMHgwMDQwCi1QT0xMV1JOT1JNID0gUE9MTE9VVAotUE9MTFJEQkFORCA9IDB4MDA4MAotUE9MTFdSQkFORCA9IDB4MDEwMAotUE9MTE5PUk0gPSBQT0xMUkROT1JNCi1QT0xMRVJSID0gMHgwMDA4Ci1QT0xMSFVQID0gMHgwMDEwCi1QT0xMTlZBTCA9IDB4MDAyMAotUE9MTFJFTU9WRSA9IDB4MDgwMAotUE9MTFJEREFUQSA9IDB4MDIwMAotUE9MTE5PRVJSID0gMHgwNDAwCi1QT0xMQ0xPU0VEID0gMHg4MDAwCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9hcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWcuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Zub2RlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVZST09UID0gMHgwMQotVk5PQ0FDSEUgPSAweDAyCi1WTk9NQVAgPSAweDA0Ci1WRFVQID0gMHgwOAotVk5PU1dBUCA9IDB4MTAKLVZOT01PVU5UID0gMHgyMAotVklTU1dBUCA9IDB4NDAKLVZTV0FQTElLRSA9IDB4ODAKLVZWRlNMT0NLID0gMHgxMDAKLVZWRlNXQUlUID0gMHgyMDAKLVZWTUxPQ0sgPSAweDQwMAotVkRJUk9QRU4gPSAweDgwMAotVlZNRVhFQyA9IDB4MTAwMAotVlBYRlMgPSAweDIwMDAKLUFUX1RZUEUgPSAweDAwMDEKLUFUX01PREUgPSAweDAwMDIKLUFUX1VJRCA9IDB4MDAwNAotQVRfR0lEID0gMHgwMDA4Ci1BVF9GU0lEID0gMHgwMDEwCi1BVF9OT0RFSUQgPSAweDAwMjAKLUFUX05MSU5LID0gMHgwMDQwCi1BVF9TSVpFID0gMHgwMDgwCi1BVF9BVElNRSA9IDB4MDEwMAotQVRfTVRJTUUgPSAweDAyMDAKLUFUX0NUSU1FID0gMHgwNDAwCi1BVF9SREVWID0gMHgwODAwCi1BVF9CTEtTSVpFID0gMHgxMDAwCi1BVF9OQkxPQ0tTID0gMHgyMDAwCi1BVF9WQ09ERSA9IDB4NDAwMAotQVRfQUxMID0gKEFUX1RZUEV8QVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX05MSU5LfEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfUkRFVnxBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1BVF9TVEFUID0gKEFUX01PREV8QVRfVUlEfEFUX0dJRHxBVF9GU0lEfEFUX05PREVJRHxBVF9OTElOS3xcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9TSVpFfEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FfEFUX1JERVYpCi1BVF9USU1FUyA9IChBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRSkKLUFUX05PU0VUID0gKEFUX05MSU5LfEFUX1JERVZ8QVRfRlNJRHxBVF9OT0RFSUR8QVRfVFlQRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9CTEtTSVpFfEFUX05CTE9DS1N8QVRfVkNPREUpCi1WU1VJRCA9IDBvNDAwMAotVlNHSUQgPSAwbzIwMDAKLVZTVlRYID0gMG8xMDAwCi1WUkVBRCA9IDBvMDQwMAotVldSSVRFID0gMG8wMjAwCi1WRVhFQyA9IDBvMDEwMAotTU9ERU1BU0sgPSAwbzc3NzcKLVBFUk1NQVNLID0gMG8wNzc3Ci1kZWYgTUFORE1PREUobW9kZSk6IHJldHVybiAoKChtb2RlKSAmIChWU0dJRHwoVkVYRUM+PjMpKSkgPT0gVlNHSUQpCi0KLVZTQV9BQ0wgPSAweDAwMDEKLVZTQV9BQ0xDTlQgPSAweDAwMDIKLVZTQV9ERkFDTCA9IDB4MDAwNAotVlNBX0RGQUNMQ05UID0gMHgwMDA4Ci1MT09LVVBfRElSID0gMHgwMQotRFVNUF9BTExPQyA9IDAKLURVTVBfRlJFRSA9IDEKLURVTVBfU0NBTiA9IDIKLUFUVFJfVVRJTUUgPSAweDAxCi1BVFRSX0VYRUMgPSAweDAyCi1BVFRSX0NPTU0gPSAweDA0Ci1BVFRSX0hJTlQgPSAweDA4Ci1BVFRSX1JFQUwgPSAweDEwCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9mYXVsdGNvZGUuaAotRkNfSFdFUlIgPSAweDEKLUZDX0FMSUdOID0gMHgyCi1GQ19PQkpFUlIgPSAweDMKLUZDX1BST1QgPSAweDQKLUZDX05PTUFQID0gMHg1Ci1GQ19OT1NVUFBPUlQgPSAweDYKLWRlZiBGQ19NQUtFX0VSUihlKTogcmV0dXJuICgoKGUpIDw8IDgpIHwgRkNfT0JKRVJSKQotCi1kZWYgRkNfQ09ERShmYyk6IHJldHVybiAoKGZjKSAmIDB4ZmYpCi0KLWRlZiBGQ19FUlJOTyhmYyk6IHJldHVybiAoKHVuc2lnbmVkKShmYykgPj4gOCkKLQotCi0jIEluY2x1ZGVkIGZyb20gdm0vaGF0LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHZtL3BhZ2UuaAotUEFHRV9IQVNIQVZFTEVOID0gNAotUEFHRV9IQVNIVlBTSElGVCA9IDYKLVBHX0VYQ0wgPSAweDAwMDEKLVBHX1dBSVQgPSAweDAwMDIKLVBHX1BIWVNDT05USUcgPSAweDAwMDQKLVBHX01BVENIX0NPTE9SID0gMHgwMDA4Ci1QR19OT1JFTE9DID0gMHgwMDEwCi1QR19GUkVFX0xJU1QgPSAxCi1QR19DQUNIRV9MSVNUID0gMgotUEdfTElTVF9UQUlMID0gMAotUEdfTElTVF9IRUFEID0gMQotZGVmIHBhZ2VfbmV4dF9yYXcoUFApOiByZXR1cm4gcGFnZV9uZXh0bl9yYXcoKFBQKSwgMSkKLQotUEFHRV9JT19JTlVTRSA9IDB4MQotUEFHRV9JT19XQU5URUQgPSAweDIKLVBHUkVMX05PVFJFTCA9IDB4MQotUEdSRUxfQ0xFQU4gPSAweDIKLVBHUkVMX01PRCA9IDB4MwotUF9GUkVFID0gMHg4MAotUF9OT1JFTE9DID0gMHg0MAotZGVmIFBQX1NFVEFHRUQocHApOiByZXR1cm4gQVNTRVJUKFBQX0lTQUdFRChwcCkpCi0KLUhBVF9GTEFHU19SRVNWID0gMHhGRjAwMDAwMAotSEFUX0xPQUQgPSAweDAwCi1IQVRfTE9BRF9MT0NLID0gMHgwMQotSEFUX0xPQURfQURWID0gMHgwNAotSEFUX0xPQURfQ09OVElHID0gMHgxMAotSEFUX0xPQURfTk9DT05TSVNUID0gMHgyMAotSEFUX0xPQURfU0hBUkUgPSAweDQwCi1IQVRfTE9BRF9SRU1BUCA9IDB4ODAKLUhBVF9SRUxPQURfU0hBUkUgPSAweDEwMAotSEFUX1BMQVRfQVRUUl9NQVNLID0gMHhGMDAwMDAKLUhBVF9QUk9UX01BU0sgPSAweDBGCi1IQVRfTk9GQVVMVCA9IDB4MTAKLUhBVF9OT1NZTkMgPSAweDIwCi1IQVRfU1RSSUNUT1JERVIgPSAweDAwMDAKLUhBVF9VTk9SREVSRURfT0sgPSAweDAxMDAKLUhBVF9NRVJHSU5HX09LID0gMHgwMjAwCi1IQVRfTE9BRENBQ0hJTkdfT0sgPSAweDAzMDAKLUhBVF9TVE9SRUNBQ0hJTkdfT0sgPSAweDA0MDAKLUhBVF9PUkRFUl9NQVNLID0gMHgwNzAwCi1IQVRfTkVWRVJTV0FQID0gMHgwMDAwCi1IQVRfU1RSVUNUVVJFX0JFID0gMHgxMDAwCi1IQVRfU1RSVUNUVVJFX0xFID0gMHgyMDAwCi1IQVRfRU5ESUFOX01BU0sgPSAweDMwMDAKLUhBVF9DT1cgPSAweDAwMDEKLUhBVF9VTkxPQUQgPSAweDAwCi1IQVRfVU5MT0FEX05PU1lOQyA9IDB4MDIKLUhBVF9VTkxPQURfVU5MT0NLID0gMHgwNAotSEFUX1VOTE9BRF9PVEhFUiA9IDB4MDgKLUhBVF9VTkxPQURfVU5NQVAgPSAweDEwCi1IQVRfU1lOQ19ET05UWkVSTyA9IDB4MDAKLUhBVF9TWU5DX1pFUk9STSA9IDB4MDEKLUhBVF9TWU5DX1NUT1BPTl9SRUYgPSAweDAyCi1IQVRfU1lOQ19TVE9QT05fTU9EID0gMHgwNAotSEFUX1NZTkNfU1RPUE9OX1JNID0gKEhBVF9TWU5DX1NUT1BPTl9SRUYgfCBIQVRfU1lOQ19TVE9QT05fTU9EKQotSEFUX0RVUF9BTEwgPSAxCi1IQVRfRFVQX0NPVyA9IDIKLUhBVF9NQVAgPSAweDAwCi1IQVRfQURWX1BHVU5MT0FEID0gMHgwMAotSEFUX0ZPUkNFX1BHVU5MT0FEID0gMHgwMQotUF9NT0QgPSAweDEKLVBfUkVGID0gMHgyCi1QX1JPID0gMHg0Ci1kZWYgaGF0X2lzbW9kKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX01PRCkpCi0KLWRlZiBoYXRfaXNyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX2dldGF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9pc3JvKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRhdHRyKHBwLCBQX1JPKSkKLQotZGVmIGhhdF9zZXRtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9zZXRyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9zZXRyZWZtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX3NldGF0dHIocHAsIFBfUkVGfFBfTU9EKSkKLQotZGVmIGhhdF9jbHJtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9jbHJyZWYocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfUkVGKSkKLQotZGVmIGhhdF9jbHJyZWZtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2NscmF0dHIocHAsIFBfUkVGfFBfTU9EKSkKLQotZGVmIGhhdF9wYWdlX2lzX21hcHBlZChwcCk6IHJldHVybiAoaGF0X3BhZ2VfZ2V0c2hhcmUocHApKQotCi1IQVRfRE9OVEFMTE9DID0gMAotSEFUX0FMTE9DID0gMQotSFJNX1NISUZUID0gNAotSFJNX0JZVEVTID0gKDEgPDwgSFJNX1NISUZUKQotSFJNX1BBR0VTID0gKChIUk1fQllURVMgKiBOQkJZKSAvIDIpCi1IUk1fUEdQRVJCWVRFID0gKE5CQlkvMikKLUhSTV9QR0JZVEVNQVNLID0gKEhSTV9QR1BFUkJZVEUtMSkKLUhSTV9IQVNIU0laRSA9IDB4MjAwCi1IUk1fSEFTSE1BU0sgPSAoSFJNX0hBU0hTSVpFIC0gMSkKLUhSTV9CTElTVF9JTkNSID0gMHgyMDAKLUhSTV9TV1NNT05JRCA9IDEKLVNTTF9OTEVWRUxTID0gNAotU1NMX0JGQUNUT1IgPSA0Ci1TU0xfTE9HMkJGID0gMgotU0VHUF9BU1lOQ19GTFVTSCA9IDB4MQotU0VHUF9GT1JDRV9XSVJFRCA9IDB4MgotU0VHUF9TVUNDRVNTID0gMAotU0VHUF9GQUlMID0gMQotZGVmIHNlZ19wYWdlcyhzZWcpOiByZXR1cm4gXAotCi1JRV9OT01FTSA9IC0xCi1BU19QQUdMQ0sgPSAweDgwCi1BU19DTEFJTUdBUCA9IDB4NDAKLUFTX1VOTUFQV0FJVCA9IDB4MjAKLWRlZiBBU19UWVBFXzY0QklUKGFzXyk6IHJldHVybiBcCi0KLUFTX0xSRVBfTElOS0VETElTVCA9IDAKLUFTX0xSRVBfU0tJUExJU1QgPSAxCi1BU19NVVRBVElPTl9USFJFU0ggPSAyMjUKLUFIX0RJUiA9IDB4MQotQUhfTE8gPSAweDAKLUFIX0hJID0gMHgxCi1BSF9DT05UQUlOID0gMHgyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGRpZG1hcmVxLmgKLURNQV9VTklUXzggPSAxCi1ETUFfVU5JVF8xNiA9IDIKLURNQV9VTklUXzMyID0gNAotRE1BTElNX1ZFUjAgPSAoKDB4ODYwMDAwMDApICsgMCkKLURESV9ETUFfRk9SQ0VfUEhZU0lDQUwgPSAweDAxMDAKLURNQV9BVFRSX1YwID0gMAotRE1BX0FUVFJfVkVSU0lPTiA9IERNQV9BVFRSX1YwCi1ERElfRE1BX0NBTExCQUNLX1JVTk9VVCA9IDAKLURESV9ETUFfQ0FMTEJBQ0tfRE9ORSA9IDEKLURESV9ETUFfV1JJVEUgPSAweDAwMDEKLURESV9ETUFfUkVBRCA9IDB4MDAwMgotRERJX0RNQV9SRFdSID0gKERESV9ETUFfUkVBRCB8IERESV9ETUFfV1JJVEUpCi1ERElfRE1BX1JFRFpPTkUgPSAweDAwMDQKLURESV9ETUFfUEFSVElBTCA9IDB4MDAwOAotRERJX0RNQV9DT05TSVNURU5UID0gMHgwMDEwCi1ERElfRE1BX0VYQ0xVU0lWRSA9IDB4MDAyMAotRERJX0RNQV9TVFJFQU1JTkcgPSAweDAwNDAKLURESV9ETUFfU0JVU182NEJJVCA9IDB4MjAwMAotRERJX0RNQV9NQVBQRUQgPSAwCi1ERElfRE1BX01BUE9LID0gMAotRERJX0RNQV9QQVJUSUFMX01BUCA9IDEKLURESV9ETUFfRE9ORSA9IDIKLURESV9ETUFfTk9SRVNPVVJDRVMgPSAtMQotRERJX0RNQV9OT01BUFBJTkcgPSAtMgotRERJX0RNQV9UT09CSUcgPSAtMwotRERJX0RNQV9UT09TTUFMTCA9IC00Ci1ERElfRE1BX0xPQ0tFRCA9IC01Ci1ERElfRE1BX0JBRExJTUlUUyA9IC02Ci1ERElfRE1BX1NUQUxFID0gLTcKLURESV9ETUFfQkFEQVRUUiA9IC04Ci1ERElfRE1BX0lOVVNFID0gLTkKLURESV9ETUFfU1lOQ19GT1JERVYgPSAweDAKLURESV9ETUFfU1lOQ19GT1JDUFUgPSAweDEKLURESV9ETUFfU1lOQ19GT1JLRVJORUwgPSAweDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGltYXByZXEuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21tYW4uaAotUFJPVF9SRUFEID0gMHgxCi1QUk9UX1dSSVRFID0gMHgyCi1QUk9UX0VYRUMgPSAweDQKLVBST1RfVVNFUiA9IDB4OAotUFJPVF9aRk9EID0gKFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMgfCBQUk9UX1VTRVIpCi1QUk9UX0FMTCA9IChQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDIHwgUFJPVF9VU0VSKQotUFJPVF9OT05FID0gMHgwCi1NQVBfU0hBUkVEID0gMQotTUFQX1BSSVZBVEUgPSAyCi1NQVBfVFlQRSA9IDB4ZgotTUFQX0ZJWEVEID0gMHgxMAotTUFQX05PUkVTRVJWRSA9IDB4NDAKLU1BUF9BTk9OID0gMHgxMDAKLU1BUF9BTk9OWU1PVVMgPSBNQVBfQU5PTgotTUFQX1JFTkFNRSA9IDB4MjAKLVBST0NfVEVYVCA9IChQUk9UX0VYRUMgfCBQUk9UX1JFQUQpCi1QUk9DX0RBVEEgPSAoUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQykKLVNIQVJFRCA9IDB4MTAKLVBSSVZBVEUgPSAweDIwCi1WQUxJRF9BVFRSID0gKFBST1RfUkVBRHxQUk9UX1dSSVRFfFBST1RfRVhFQ3xTSEFSRUR8UFJJVkFURSkKLVBST1RfRVhDTCA9IDB4MjAKLV9NQVBfTE9XMzIgPSAweDgwCi1fTUFQX05FVyA9IDB4ODAwMDAwMDAKLWZyb20gVFlQRVMgaW1wb3J0ICoKLU1BRFZfTk9STUFMID0gMAotTUFEVl9SQU5ET00gPSAxCi1NQURWX1NFUVVFTlRJQUwgPSAyCi1NQURWX1dJTExORUVEID0gMwotTUFEVl9ET05UTkVFRCA9IDQKLU1BRFZfRlJFRSA9IDUKLU1TX09MRFNZTkMgPSAweDAKLU1TX1NZTkMgPSAweDQKLU1TX0FTWU5DID0gMHgxCi1NU19JTlZBTElEQVRFID0gMHgyCi1NQ19TWU5DID0gMQotTUNfTE9DSyA9IDIKLU1DX1VOTE9DSyA9IDMKLU1DX0FEVklTRSA9IDQKLU1DX0xPQ0tBUyA9IDUKLU1DX1VOTE9DS0FTID0gNgotTUNMX0NVUlJFTlQgPSAweDEKLU1DTF9GVVRVUkUgPSAweDIKLURESV9NQVBfVkVSU0lPTiA9IDB4MDAwMQotRERJX01GX1VTRVJfTUFQUElORyA9IDB4MQotRERJX01GX0tFUk5FTF9NQVBQSU5HID0gMHgyCi1ERElfTUZfREVWSUNFX01BUFBJTkcgPSAweDQKLURESV9NRV9HRU5FUklDID0gKC0xKQotRERJX01FX1VOSU1QTEVNRU5URUQgPSAoLTIpCi1ERElfTUVfTk9SRVNPVVJDRVMgPSAoLTMpCi1ERElfTUVfVU5TVVBQT1JURUQgPSAoLTQpCi1ERElfTUVfUkVHU1BFQ19SQU5HRSA9ICgtNSkKLURESV9NRV9STlVNQkVSX1JBTkdFID0gKC02KQotRERJX01FX0lOVkFMID0gKC03KQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaXByb3BkZWZzLmgKLWRlZiBDRUxMU18xMjc1X1RPX0JZVEVTKG4pOiByZXR1cm4gKChuKSAqIFBST1BfMTI3NV9DRUxMX1NJWkUpCi0KLWRlZiBCWVRFU19UT18xMjc1X0NFTExTKG4pOiByZXR1cm4gKChuKSAvIFBST1BfMTI3NV9DRUxMX1NJWkUpCi0KLVBIX0ZST01fUFJPTSA9IDB4MDEKLURESV9QUk9QX1NVQ0NFU1MgPSAwCi1ERElfUFJPUF9OT1RfRk9VTkQgPSAxCi1ERElfUFJPUF9VTkRFRklORUQgPSAyCi1ERElfUFJPUF9OT19NRU1PUlkgPSAzCi1ERElfUFJPUF9JTlZBTF9BUkcgPSA0Ci1ERElfUFJPUF9CVUZfVE9PX1NNQUxMID0gNQotRERJX1BST1BfQ0FOTk9UX0RFQ09ERSA9IDYKLURESV9QUk9QX0NBTk5PVF9FTkNPREUgPSA3Ci1ERElfUFJPUF9FTkRfT0ZfREFUQSA9IDgKLURESV9QUk9QX0ZPVU5EXzEyNzUgPSAyNTUKLVBST1BfMTI3NV9JTlRfU0laRSA9IDQKLURESV9QUk9QX0RPTlRQQVNTID0gMHgwMDAxCi1ERElfUFJPUF9DQU5TTEVFUCA9IDB4MDAwMgotRERJX1BST1BfU1lTVEVNX0RFRiA9IDB4MDAwNAotRERJX1BST1BfTk9UUFJPTSA9IDB4MDAwOAotRERJX1BST1BfRE9OVFNMRUVQID0gMHgwMDEwCi1ERElfUFJPUF9TVEFDS19DUkVBVEUgPSAweDAwMjAKLURESV9QUk9QX1VOREVGX0lUID0gMHgwMDQwCi1ERElfUFJPUF9IV19ERUYgPSAweDAwODAKLURESV9QUk9QX1RZUEVfSU5UID0gMHgwMTAwCi1ERElfUFJPUF9UWVBFX1NUUklORyA9IDB4MDIwMAotRERJX1BST1BfVFlQRV9CWVRFID0gMHgwNDAwCi1ERElfUFJPUF9UWVBFX0NPTVBPU0lURSA9IDB4MDgwMAotRERJX1BST1BfVFlQRV9BTlkgPSAoRERJX1BST1BfVFlQRV9JTlQgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfU1RSSU5HICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQllURSAgICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQ09NUE9TSVRFKQotRERJX1BST1BfVFlQRV9NQVNLID0gKERESV9QUk9QX1RZUEVfSU5UIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfU1RSSU5HICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQllURSAgICAgIHwgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERESV9QUk9QX1RZUEVfQ09NUE9TSVRFKQotRERJX1JFTEFUSVZFX0FERFJFU1NJTkcgPSAicmVsYXRpdmUtYWRkcmVzc2luZyIKLURESV9HRU5FUklDX0FERFJFU1NJTkcgPSAiZ2VuZXJpYy1hZGRyZXNzaW5nIgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaWRldm1hcC5oCi1LTUVNX1BBR0VBQkxFID0gMHgxMDAKLUtNRU1fTk9OX1BBR0VBQkxFID0gMHgyMDAKLVVNRU1fTE9DS0VEID0gMHg0MDAKLVVNRU1fVFJBU0ggPSAweDgwMAotREVWTUFQX09QU19SRVYgPSAxCi1ERVZNQVBfREVGQVVMVFMgPSAweDAwCi1ERVZNQVBfTUFQUElOR19JTlZBTElEID0gMHgwMQotREVWTUFQX0FMTE9XX1JFTUFQID0gMHgwMgotREVWTUFQX1VTRV9QQUdFU0laRSA9IDB4MDQKLURFVk1BUF9TRVRVUF9GTEFHUyA9IFwKLSAgICAgICAgKERFVk1BUF9NQVBQSU5HX0lOVkFMSUQgfCBERVZNQVBfQUxMT1dfUkVNQVAgfCBERVZNQVBfVVNFX1BBR0VTSVpFKQotREVWTUFQX1NFVFVQX0RPTkUgPSAweDEwMAotREVWTUFQX0xPQ0tfSU5JVEVEID0gMHgyMDAKLURFVk1BUF9GQVVMVElORyA9IDB4NDAwCi1ERVZNQVBfTE9DS0VEID0gMHg4MDAKLURFVk1BUF9GTEFHX0xBUkdFID0gMHgxMDAwCi1ERElfVU1FTV9TTEVFUCA9IDB4MAotRERJX1VNRU1fTk9TTEVFUCA9IDB4MDEKLURESV9VTUVNX1BBR0VBQkxFID0gMHgwMgotRERJX1VNRU1fVFJBU0ggPSAweDA0Ci1ERElfVU1FTUxPQ0tfUkVBRCA9IDB4MDEKLURESV9VTUVNTE9DS19XUklURSA9IDB4MDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9uZXh1c2RlZnMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25leHVzaW50ci5oCi1CVVNPX1JFViA9IDQKLUJVU09fUkVWXzMgPSAzCi1CVVNPX1JFVl80ID0gNAotREVWT19SRVYgPSAzCi1DQl9SRVYgPSAxCi1ERElfSURFTlRJRklFRCA9ICgwKQotRERJX05PVF9JREVOVElGSUVEID0gKC0xKQotRERJX1BST0JFX0ZBSUxVUkUgPSBFTlhJTwotRERJX1BST0JFX0RPTlRDQVJFID0gMAotRERJX1BST0JFX1BBUlRJQUwgPSAxCi1ERElfUFJPQkVfU1VDQ0VTUyA9IDIKLU1BUERFVl9SRVYgPSAxCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1EX05FVyA9IDB4MDAKLV9EX09MRCA9IDB4MDEKLURfVEFQRSA9IDB4MDgKLURfTVRTQUZFID0gMHgwMDIwCi1fRF9RTkVYVExFU1MgPSAweDAwNDAKLV9EX01UT0NTSEFSRUQgPSAweDAwODAKLURfTVRPQ0VYQ0wgPSAweDA4MDAKLURfTVRQVVRTSEFSRUQgPSAweDEwMDAKLURfTVRQRVJRID0gMHgyMDAwCi1EX01UUVBBSVIgPSAweDQwMDAKLURfTVRQRVJNT0QgPSAweDYwMDAKLURfTVRPVVRQRVJJTSA9IDB4ODAwMAotX0RfTVRDQlNIQVJFRCA9IDB4MTAwMDAKLURfTVRJTk5FUl9NT0QgPSAoRF9NVFBVVFNIQVJFRHxfRF9NVE9DU0hBUkVEfF9EX01UQ0JTSEFSRUQpCi1EX01UT1VURVJfTU9EID0gKERfTVRPQ0VYQ0wpCi1EX01QID0gRF9NVFNBRkUKLURfNjRCSVQgPSAweDIwMAotRF9TWU5DU1RSID0gMHg0MDAKLURfREVWTUFQID0gMHgxMDAKLURfSE9UUExVRyA9IDB4NAotU05EWkVSTyA9IDB4MDAxCi1TTkRQSVBFID0gMHgwMDIKLVJOT1JNID0gMHgwMDAKLVJNU0dEID0gMHgwMDEKLVJNU0dOID0gMHgwMDIKLVJNT0RFTUFTSyA9IDB4MDAzCi1SUFJPVERBVCA9IDB4MDA0Ci1SUFJPVERJUyA9IDB4MDA4Ci1SUFJPVE5PUk0gPSAweDAxMAotUlBST1RNQVNLID0gMHgwMWMKLVJGTFVTSE1BU0sgPSAweDAyMAotUkZMVVNIUENQUk9UID0gMHgwMjAKLVJFUlJOT1JNID0gMHgwMDEKLVJFUlJOT05QRVJTSVNUID0gMHgwMDIKLVJFUlJNQVNLID0gKFJFUlJOT1JNfFJFUlJOT05QRVJTSVNUKQotV0VSUk5PUk0gPSAweDAwNAotV0VSUk5PTlBFUlNJU1QgPSAweDAwOAotV0VSUk1BU0sgPSAoV0VSUk5PUk18V0VSUk5PTlBFUlNJU1QpCi1GTFVTSFIgPSAweDAxCi1GTFVTSFcgPSAweDAyCi1GTFVTSFJXID0gMHgwMwotRkxVU0hCQU5EID0gMHgwNAotTUFQSU5PSyA9IDB4MDEKLU5PTUFQSU4gPSAweDAyCi1SRU1BUE9LID0gMHgwNAotTk9SRU1BUCA9IDB4MDgKLVNfSU5QVVQgPSAweDAwMDEKLVNfSElQUkkgPSAweDAwMDIKLVNfT1VUUFVUID0gMHgwMDA0Ci1TX01TRyA9IDB4MDAwOAotU19FUlJPUiA9IDB4MDAxMAotU19IQU5HVVAgPSAweDAwMjAKLVNfUkROT1JNID0gMHgwMDQwCi1TX1dSTk9STSA9IFNfT1VUUFVUCi1TX1JEQkFORCA9IDB4MDA4MAotU19XUkJBTkQgPSAweDAxMDAKLVNfQkFORFVSRyA9IDB4MDIwMAotUlNfSElQUkkgPSAweDAxCi1TVFJVSU9fUE9TVFBPTkUgPSAweDA4Ci1TVFJVSU9fTUFQSU4gPSAweDEwCi1NU0dfSElQUkkgPSAweDAxCi1NU0dfQU5ZID0gMHgwMgotTVNHX0JBTkQgPSAweDA0Ci1NU0dfWFBHNCA9IDB4MDgKLU1TR19JUEVFSyA9IDB4MTAKLU1TR19ESVNDQVJEVEFJTCA9IDB4MjAKLU1TR19IT0xEU0lHID0gMHg0MAotTVNHX0lHTkVSUk9SID0gMHg4MAotTVNHX0RFTEFZRVJST1IgPSAweDEwMAotTVNHX0lHTkZMT1cgPSAweDIwMAotTVNHX05PTUFSSyA9IDB4NDAwCi1NT1JFQ1RMID0gMQotTU9SRURBVEEgPSAyCi1NVVhJRF9BTEwgPSAoLTEpCi1BTllNQVJLID0gMHgwMQotTEFTVE1BUksgPSAweDAyCi1fSU5GVElNID0gLTEKLUlORlRJTSA9IF9JTkZUSU0KZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weSBiL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0ZTZiMS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1zdW5vczUvVFlQRVMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lzYV9kZWZzLmgKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDQKLV9ET1VCTEVfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gNAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDAKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gOAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZmVhdHVyZV90ZXN0cy5oCi1fUE9TSVhfQ19TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fRklMRV9PRkZTRVRfQklUUyA9IDY0Ci1fRklMRV9PRkZTRVRfQklUUyA9IDMyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUyA9IDEKLV9YT1BFTl9WRVJTSU9OID0gNTAwCi1fWE9QRU5fVkVSU0lPTiA9IDQKLV9YT1BFTl9WRVJTSU9OID0gMwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2h0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50dHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF90eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X2xpbWl0cy5oCi1JTlQ4X01BWCA9ICgxMjcpCi1JTlQxNl9NQVggPSAoMzI3NjcpCi1JTlQzMl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVE1BWF9NQVggPSBJTlQzMl9NQVgKLUlOVF9MRUFTVDhfTUFYID0gSU5UOF9NQVgKLUlOVF9MRUFTVDE2X01BWCA9IElOVDE2X01BWAotSU5UX0xFQVNUMzJfTUFYID0gSU5UMzJfTUFYCi1JTlQ4X01JTiA9ICgtMTI4KQotSU5UMTZfTUlOID0gKC0zMjc2Ny0xKQotSU5UMzJfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRNQVhfTUlOID0gSU5UMzJfTUlOCi1JTlRfTEVBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfTEVBU1QxNl9NSU4gPSBJTlQxNl9NSU4KLUlOVF9MRUFTVDMyX01JTiA9IElOVDMyX01JTgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF9jb25zdC5oCi1kZWYgSU5UOF9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQxNl9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQzMl9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGwpCi0KLWRlZiBJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGxsKQotCi1kZWYgVUlOVDhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1KQotCi1kZWYgVUlOVDE2X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdSkKLQotZGVmIFVJTlQzMl9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHUpCi0KLWRlZiBVSU5UNjRfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bCkKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHVsbCkKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGwpCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdWwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyxsbCkKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bGwpCi0KLWRlZiBJTlRNQVhfQyhjKTogcmV0dXJuIChjKQotCi1kZWYgVUlOVE1BWF9DKGMpOiByZXR1cm4gKGMpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfZm10aW8uaAotUFJJZDggPSAiZCIKLVBSSWQxNiA9ICJkIgotUFJJZDMyID0gImQiCi1QUklkNjQgPSAibGQiCi1QUklkNjQgPSAibGxkIgotUFJJZExFQVNUOCA9ICJkIgotUFJJZExFQVNUMTYgPSAiZCIKLVBSSWRMRUFTVDMyID0gImQiCi1QUklkTEVBU1Q2NCA9ICJsZCIKLVBSSWRMRUFTVDY0ID0gImxsZCIKLVBSSWk4ID0gImkiCi1QUklpMTYgPSAiaSIKLVBSSWkzMiA9ICJpIgotUFJJaTY0ID0gImxpIgotUFJJaTY0ID0gImxsaSIKLVBSSWlMRUFTVDggPSAiaSIKLVBSSWlMRUFTVDE2ID0gImkiCi1QUklpTEVBU1QzMiA9ICJpIgotUFJJaUxFQVNUNjQgPSAibGkiCi1QUklpTEVBU1Q2NCA9ICJsbGkiCi1QUklvOCA9ICJvIgotUFJJbzE2ID0gIm8iCi1QUklvMzIgPSAibyIKLVBSSW82NCA9ICJsbyIKLVBSSW82NCA9ICJsbG8iCi1QUklvTEVBU1Q4ID0gIm8iCi1QUklvTEVBU1QxNiA9ICJvIgotUFJJb0xFQVNUMzIgPSAibyIKLVBSSW9MRUFTVDY0ID0gImxvIgotUFJJb0xFQVNUNjQgPSAibGxvIgotUFJJeDggPSAieCIKLVBSSXgxNiA9ICJ4IgotUFJJeDMyID0gIngiCi1QUkl4NjQgPSAibHgiCi1QUkl4NjQgPSAibGx4IgotUFJJeExFQVNUOCA9ICJ4IgotUFJJeExFQVNUMTYgPSAieCIKLVBSSXhMRUFTVDMyID0gIngiCi1QUkl4TEVBU1Q2NCA9ICJseCIKLVBSSXhMRUFTVDY0ID0gImxseCIKLVBSSVg4ID0gIlgiCi1QUklYMTYgPSAiWCIKLVBSSVgzMiA9ICJYIgotUFJJWDY0ID0gImxYIgotUFJJWDY0ID0gImxsWCIKLVBSSVhMRUFTVDggPSAiWCIKLVBSSVhMRUFTVDE2ID0gIlgiCi1QUklYTEVBU1QzMiA9ICJYIgotUFJJWExFQVNUNjQgPSAibFgiCi1QUklYTEVBU1Q2NCA9ICJsbFgiCi1QUkl1OCA9ICJ1IgotUFJJdTE2ID0gInUiCi1QUkl1MzIgPSAidSIKLVBSSXU2NCA9ICJsdSIKLVBSSXU2NCA9ICJsbHUiCi1QUkl1TEVBU1Q4ID0gInUiCi1QUkl1TEVBU1QxNiA9ICJ1IgotUFJJdUxFQVNUMzIgPSAidSIKLVBSSXVMRUFTVDY0ID0gImx1IgotUFJJdUxFQVNUNjQgPSAibGx1IgotU0NOZDE2ID0gImhkIgotU0NOZDMyID0gImQiCi1TQ05kNjQgPSAibGQiCi1TQ05kNjQgPSAibGxkIgotU0NOaTE2ID0gImhpIgotU0NOaTMyID0gImkiCi1TQ05pNjQgPSAibGkiCi1TQ05pNjQgPSAibGxpIgotU0NObzE2ID0gImhvIgotU0NObzMyID0gIm8iCi1TQ05vNjQgPSAibG8iCi1TQ05vNjQgPSAibGxvIgotU0NOdTE2ID0gImh1IgotU0NOdTMyID0gInUiCi1TQ051NjQgPSAibHUiCi1TQ051NjQgPSAibGx1IgotU0NOeDE2ID0gImh4IgotU0NOeDMyID0gIngiCi1TQ054NjQgPSAibHgiCi1TQ054NjQgPSAibGx4IgotUFJJZE1BWCA9ICJsZCIKLVBSSW9NQVggPSAibG8iCi1QUkl4TUFYID0gImx4IgotUFJJdU1BWCA9ICJsdSIKLVBSSWRNQVggPSAibGxkIgotUFJJb01BWCA9ICJsbG8iCi1QUkl4TUFYID0gImxseCIKLVBSSXVNQVggPSAibGx1IgotUFJJZE1BWCA9ICJkIgotUFJJb01BWCA9ICJvIgotUFJJeE1BWCA9ICJ4IgotUFJJdU1BWCA9ICJ1IgotU0NOaU1BWCA9ICJsaSIKLVNDTmRNQVggPSAibGQiCi1TQ05vTUFYID0gImxvIgotU0NOeE1BWCA9ICJseCIKLVNDTmlNQVggPSAibGxpIgotU0NOZE1BWCA9ICJsbGQiCi1TQ05vTUFYID0gImxsbyIKLVNDTnhNQVggPSAibGx4IgotU0NOaU1BWCA9ICJpIgotU0NOZE1BWCA9ICJkIgotU0NOb01BWCA9ICJvIgotU0NOeE1BWCA9ICJ4IgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3R5cGVzMzIuaAotU0hSVF9NSU4gPSAoLTMyNzY4KQotU0hSVF9NQVggPSAzMjc2NwotVVNIUlRfTUFYID0gNjU1MzUKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotTE9OR19NQVggPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1QX01ZSUQgPSAoLTEpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lLmgKLVRJTUUzMl9NQVggPSBJTlQzMl9NQVgKLVRJTUUzMl9NSU4gPSBJTlQzMl9NSU4KLWRlZiBUSU1FVkFMX09WRVJGTE9XKHR2KTogcmV0dXJuIFwKLQotZnJvbSBUWVBFUyBpbXBvcnQgKgotRFNUX05PTkUgPSAwCi1EU1RfVVNBID0gMQotRFNUX0FVU1QgPSAyCi1EU1RfV0VUID0gMwotRFNUX01FVCA9IDQKLURTVF9FRVQgPSA1Ci1EU1RfQ0FOID0gNgotRFNUX0dCID0gNwotRFNUX1JVTSA9IDgKLURTVF9UVVIgPSA5Ci1EU1RfQVVTVEFMVCA9IDEwCi1JVElNRVJfUkVBTCA9IDAKLUlUSU1FUl9WSVJUVUFMID0gMQotSVRJTUVSX1BST0YgPSAyCi1JVElNRVJfUkVBTFBST0YgPSAzCi1kZWYgSVRJTUVSVkFMX09WRVJGTE9XKGl0dik6IHJldHVybiBcCi0KLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfaW1wbC5oCi1kZWYgVElNRVNQRUNfT1ZFUkZMT1codHMpOiByZXR1cm4gXAotCi1kZWYgSVRJTUVSU1BFQ19PVkVSRkxPVyhpdCk6IHJldHVybiBcCi0KLV9fQ0xPQ0tfUkVBTFRJTUUwID0gMAotQ0xPQ0tfVklSVFVBTCA9IDEKLUNMT0NLX1BST0YgPSAyCi1fX0NMT0NLX1JFQUxUSU1FMyA9IDMKLUNMT0NLX0hJR0hSRVMgPSA0Ci1DTE9DS19NQVggPSA1Ci1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUzCi1DTE9DS19SRUFMVElNRSA9IF9fQ0xPQ0tfUkVBTFRJTUUwCi1USU1FUl9SRUxUSU1FID0gMHgwCi1USU1FUl9BQlNUSU1FID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXV0ZXguaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotZGVmIE1VVEVYX0hFTEQoeCk6IHJldHVybiAobXV0ZXhfb3duZWQoeCkpCi0KLWRlZiBUSUNLX1RPX1NFQyh0aWNrKTogcmV0dXJuICgodGljaykgLyBoeikKLQotZGVmIFNFQ19UT19USUNLKHNlYyk6IHJldHVybiAoKHNlYykgKiBoeikKLQotZGVmIFRJQ0tfVE9fTVNFQyh0aWNrKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDSyhtc2VjKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDS19ST1VORFVQKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19VU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0sodXNlYyk6IHJldHVybiAoKHVzZWMpIC8gdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDS19ST1VORFVQKHVzZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19OU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0sobnNlYyk6IHJldHVybiAoKG5zZWMpIC8gbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDS19ST1VORFVQKG5zZWMpOiByZXR1cm4gXAotCi1kZWYgVElNRVZBTF9UT19USUNLKHR2cCk6IHJldHVybiBcCi0KLWRlZiBUSU1FU1RSVUNfVE9fVElDSyh0c3ApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSB0aW1lLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIGlzby90aW1lX2lzby5oCi1OVUxMID0gMAotTlVMTCA9IDAKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotRkRfU0VUU0laRSA9IDY1NTM2Ci1GRF9TRVRTSVpFID0gMTAyNAotX05CQlkgPSA4Ci1OQkJZID0gX05CQlkKLWRlZiBGRF9aRVJPKHApOiByZXR1cm4gYnplcm8oKHApLCBzaXplb2YgKCoocCkpKQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L3JlZ2VuIGIvTGliL3BsYXQtc3Vub3M1L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3OGNiN2RlLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXNyYCBpbgotJ1N1bk9TIDUuJyopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIFNvbGFyaXMgMiBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmggL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaCAvdXNyL2luY2x1ZGUvc3lzL3N0cm9wdHMuaCAvdXNyL2luY2x1ZGUvZGxmY24uaAotCmRpZmYgLS1naXQgYS9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkgYi9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmMDIzYjQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODM2ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX2YuaAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKGludCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9BTlkgPSAweDAwMDAwMDAwCi1JTkFERFJfTE9PUEJBQ0sgPSAweDdmMDAwMDAxCi1JTkFERFJfQlJPQURDQVNUID0gMHhmZmZmZmZmZgotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5BRERSX1VOU1BFQ19HUk9VUCA9IDB4ZTAwMDAwMDAKLUlOQUREUl9BTExIT1NUU19HUk9VUCA9IDB4ZTAwMDAwMDEKLUlOQUREUl9BTExSVFJTX0dST1VQID0gMHhlMDAwMDAwMgotSU5BRERSX01BWF9MT0NBTF9HUk9VUCA9IDB4ZTAwMDAwZmYKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQvaW42LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90eXBlcy5oCi1kZWYgcXVhZF9sb3coeCk6IHJldHVybiB4LnZhbFswXQotCi1BRFRfRU1BU0tTSVpFID0gOAotU0hSVF9NSU4gPSAtMzI3NjgKLVNIUlRfTUFYID0gMzI3NjcKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1PRkYzMl9NQVggPSBMT05HX01BWAotSVNUQVRfQVNTRVJURUQgPSAwCi1JU1RBVF9BU1NVTUVEID0gMQotSVNUQVRfTk9ORSA9IDIKLU9GRl9NQVggPSBPRkYzMl9NQVgKLUNMT0NLX01BWCA9IExPTkdfTUFYCi1QX01ZSUQgPSAoLTEpCi1QX01ZSE9TVElEID0gKC0xKQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi1GRF9TRVRTSVpFID0gNDA5NgotTkJCWSA9IDgKLU5VTEwgPSAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYml0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luNl9mLmgKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIElONl9BRERSX0VRVUFMX0woYSwgMCwgMCwgMCwgMCkKLQotZGVmIElONl9TRVRfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X0lTX0FERFJfQU5ZKGEpOiByZXR1cm4gSU42X0FERFJfRVFVQUxfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X1NFVF9BRERSX0FOWShhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBJTjZfQUREUl9FUVVBTF9MKGEsIDAsIDAsIDAsIDB4MDEwMDAwMDApCi0KLWRlZiBJTjZfU0VUX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBJTjZfQUREUl9DT1BZX0woYSwgMCwgMCwgMCwgMHgwMTAwMDAwMCkKLQotSU42X01DX0ZMQUdfUEVSTUFORU5UID0gMHgwCi1JTjZfTUNfRkxBR19UUkFOU0lFTlQgPSAweDEKLUlONl9NQ19TQ09QRV9OT0RFTE9DQUwgPSAweDEKLUlONl9NQ19TQ09QRV9MSU5LTE9DQUwgPSAweDIKLUlONl9NQ19TQ09QRV9TSVRFTE9DQUwgPSAweDUKLUlONl9NQ19TQ09QRV9PUkdMT0NBTCA9IDB4OAotSU42X01DX1NDT1BFX0dMT0JBTCA9IDB4RQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29udnNhLmgKLV9fTkVUTElCX1VXMjExX1NWUjQgPSAxCi1fX05FVExJQl9VVzIxMV9YUEc0ID0gMgotX19ORVRMSUJfR0VNSU5JX1NWUjQgPSAzCi1fX05FVExJQl9HRU1JTklfWFBHNCA9IDQKLV9fTkVUTElCX0ZQMV9TVlI0ID0gNQotX19ORVRMSUJfRlAxX1hQRzQgPSA2Ci1fX05FVExJQl9CQVNFX1ZFUlNJT05fXyA9IF9fTkVUTElCX1VXMjExX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0ZQMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfWFBHNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfR0VNSU5JX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0dFTUlOSV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9TVlI0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9VVzIxMV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9GUDFfWFBHNAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2J5dGVvcmRlci5oCi1MSVRUTEVfRU5ESUFOID0gMTIzNAotQklHX0VORElBTiA9IDQzMjEKLVBEUF9FTkRJQU4gPSAzNDEyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyX2YuaAotQllURV9PUkRFUiA9IExJVFRMRV9FTkRJQU4KLWRlZiBodG9ubChobCk6IHJldHVybiBfX2h0b25sKGhsKQotCi1kZWYgbnRvaGwobmwpOiByZXR1cm4gX19udG9obChubCkKLQotZGVmIGh0b25zKGhzKTogcmV0dXJuIF9faHRvbnMoaHMpCi0KLWRlZiBudG9ocyhucyk6IHJldHVybiBfX250b2hzKG5zKQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSVNfWFBHNCh2ZXJzaW9uKTogcmV0dXJuICgoKHZlcnNpb24pICUgMikgPT0gMCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSEFTX1NBTEVOKHZlcnNpb24pOiByZXR1cm4gKCh2ZXJzaW9uKSA+PSBfX05FVExJQl9HRU1JTklfU1ZSNCkKLQotZGVmIF9fTkVUTElCX1ZFUlNJT05fSVNfSUtTKHZlcnNpb24pOiByZXR1cm4gKCh2ZXJzaW9uKSA+PSBfX05FVExJQl9GUDFfU1ZSNCkKLQotZGVmIFNBX0ZBTUlMWV9HRVQoc2EpOiByZXR1cm4gXAotCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfVU5JQ0FTVF9IT1BTID0gMwotSVBWNl9BRERSRk9STSA9IDI0Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMjUKLUlQVjZfTVVMVElDQVNUX0lGID0gMjYKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAyNwotSVBWNl9BRERfTUVNQkVSU0hJUCA9IDI4Ci1JUFY2X0RST1BfTUVNQkVSU0hJUCA9IDI5Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW5zcmVtLmgKLWRlZiBMSVNUX0lOSVQoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBMSVNUX0lOSVQoaGVhZCk6IHJldHVybiBcCi0KLWRlZiByZW1xdWUoYSk6IHJldHVybiBSRU1RVUUoYSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdWlvLmgKLVNIVVRfUkQgPSAwCi1TSFVUX1dSID0gMQotU0hVVF9SRFdSID0gMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25ldGNvbmZpZy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuICgpCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICJ4IgotCi1ORVRDT05GSUcgPSAiL2V0Yy9uZXRjb25maWciCi1ORVRQQVRIID0gIk5FVFBBVEgiCi1OQ19UUElfQ0xUUyA9IDEKLU5DX1RQSV9DT1RTID0gMgotTkNfVFBJX0NPVFNfT1JEID0gMwotTkNfVFBJX1JBVyA9IDQKLU5DX05PRkxBRyA9IDAwCi1OQ19WSVNJQkxFID0gMG8xCi1OQ19CUk9BRENBU1QgPSAwbzIKLU5DX05PUFJPVE9GTUxZID0gIi0iCi1OQ19MT09QQkFDSyA9ICJsb29wYmFjayIKLU5DX0lORVQgPSAiaW5ldCIKLU5DX0lORVQ2ID0gImluZXQ2IgotTkNfSU1QTElOSyA9ICJpbXBsaW5rIgotTkNfUFVQID0gInB1cCIKLU5DX0NIQU9TID0gImNoYW9zIgotTkNfTlMgPSAibnMiCi1OQ19OQlMgPSAibmJzIgotTkNfRUNNQSA9ICJlY21hIgotTkNfREFUQUtJVCA9ICJkYXRha2l0IgotTkNfQ0NJVFQgPSAiY2NpdHQiCi1OQ19TTkEgPSAic25hIgotTkNfREVDTkVUID0gImRlY25ldCIKLU5DX0RMSSA9ICJkbGkiCi1OQ19MQVQgPSAibGF0IgotTkNfSFlMSU5LID0gImh5bGluayIKLU5DX0FQUExFVEFMSyA9ICJhcHBsZXRhbGsiCi1OQ19OSVQgPSAibml0IgotTkNfSUVFRTgwMiA9ICJpZWVlODAyIgotTkNfT1NJID0gIm9zaSIKLU5DX1gyNSA9ICJ4MjUiCi1OQ19PU0lORVQgPSAib3NpbmV0IgotTkNfR09TSVAgPSAiZ29zaXAiCi1OQ19ORVRXQVJFID0gIm5ldHdhcmUiCi1OQ19OT1BST1RPID0gIi0iCi1OQ19UQ1AgPSAidGNwIgotTkNfVURQID0gInVkcCIKLU5DX0lDTVAgPSAiaWNtcCIKLU5DX0lQWCA9ICJpcHgiCi1OQ19TUFggPSAic3B4IgotTkNfVFBJX0NMVFMgPSAxCi1OQ19UUElfQ09UUyA9IDIKLU5DX1RQSV9DT1RTX09SRCA9IDMKLU5DX1RQSV9SQVcgPSA0Ci1TT0NLX1NUUkVBTSA9IDIKLVNPQ0tfREdSQU0gPSAxCi1TT0NLX1JBVyA9IDQKLVNPQ0tfUkRNID0gNQotU09DS19TRVFQQUNLRVQgPSA2Ci1TT19ERUJVRyA9IDB4MDAwMQotU09fQUNDRVBUQ09OTiA9IDB4MDAwMgotU09fUkVVU0VBRERSID0gMHgwMDA0Ci1TT19LRUVQQUxJVkUgPSAweDAwMDgKLVNPX0RPTlRST1VURSA9IDB4MDAxMAotU09fQlJPQURDQVNUID0gMHgwMDIwCi1TT19VU0VMT09QQkFDSyA9IDB4MDA0MAotU09fTElOR0VSID0gMHgwMDgwCi1TT19PT0JJTkxJTkUgPSAweDAxMDAKLVNPX09SRFJFTCA9IDB4MDIwMAotU09fSU1BU09DS0VUID0gMHgwNDAwCi1TT19NR01UID0gMHgwODAwCi1TT19SRVVTRVBPUlQgPSAweDEwMDAKLVNPX0xJU1RFTklORyA9IDB4MjAwMAotU09fUkRXUiA9IDB4NDAwMAotU09fU0VNQSA9IDB4ODAwMAotU09fRE9OVExJTkdFUiA9ICh+U09fTElOR0VSKQotU09fU05EQlVGID0gMHgxMDAxCi1TT19SQ1ZCVUYgPSAweDEwMDIKLVNPX1NORExPV0FUID0gMHgxMDAzCi1TT19SQ1ZMT1dBVCA9IDB4MTAwNAotU09fU05EVElNRU8gPSAweDEwMDUKLVNPX1JDVlRJTUVPID0gMHgxMDA2Ci1TT19FUlJPUiA9IDB4MTAwNwotU09fVFlQRSA9IDB4MTAwOAotU09fUFJPVE9UWVBFID0gMHgxMDA5Ci1TT19BTExSQVcgPSAweDEwMGEKLVNPTF9TT0NLRVQgPSAweGZmZmYKLUFGX1VOU1BFQyA9IDAKLUFGX1VOSVggPSAxCi1BRl9MT0NBTCA9IEFGX1VOSVgKLUFGX0lORVQgPSAyCi1BRl9JTVBMSU5LID0gMwotQUZfUFVQID0gNAotQUZfQ0hBT1MgPSA1Ci1BRl9OUyA9IDYKLUFGX05CUyA9IDcKLUFGX0VDTUEgPSA4Ci1BRl9EQVRBS0lUID0gOQotQUZfQ0NJVFQgPSAxMAotQUZfU05BID0gMTEKLUFGX0RFQ25ldCA9IDEyCi1BRl9ETEkgPSAxMwotQUZfTEFUID0gMTQKLUFGX0hZTElOSyA9IDE1Ci1BRl9BUFBMRVRBTEsgPSAxNgotQUZfTklUID0gMTcKLUFGXzgwMiA9IDE4Ci1BRl9PU0kgPSAxOQotQUZfSVNPID0gQUZfT1NJCi1BRl9YMjUgPSAyMAotQUZfT1NJTkVUID0gMjEKLUFGX0dPU0lQID0gMjIKLUFGX1lORVQgPSAyMwotQUZfUk9VVEUgPSAyNAotQUZfTElOSyA9IDI1Ci1wc2V1ZG9fQUZfWFRQID0gMjYKLUFGX0lORVQ2ID0gMjcKLUFGX01BWCA9IDI3Ci1BRl9JTkVUX0JTV0FQID0gMHgwMjAwCi1QRl9VTlNQRUMgPSBBRl9VTlNQRUMKLVBGX1VOSVggPSBBRl9VTklYCi1QRl9MT0NBTCA9IEFGX0xPQ0FMCi1QRl9JTkVUID0gQUZfSU5FVAotUEZfSU1QTElOSyA9IEFGX0lNUExJTksKLVBGX1BVUCA9IEFGX1BVUAotUEZfQ0hBT1MgPSBBRl9DSEFPUwotUEZfTlMgPSBBRl9OUwotUEZfTkJTID0gQUZfTkJTCi1QRl9FQ01BID0gQUZfRUNNQQotUEZfREFUQUtJVCA9IEFGX0RBVEFLSVQKLVBGX0NDSVRUID0gQUZfQ0NJVFQKLVBGX1NOQSA9IEFGX1NOQQotUEZfREVDbmV0ID0gQUZfREVDbmV0Ci1QRl9ETEkgPSBBRl9ETEkKLVBGX0xBVCA9IEFGX0xBVAotUEZfSFlMSU5LID0gQUZfSFlMSU5LCi1QRl9BUFBMRVRBTEsgPSBBRl9BUFBMRVRBTEsKLVBGX05JVCA9IEFGX05JVAotUEZfODAyID0gQUZfODAyCi1QRl9PU0kgPSBBRl9PU0kKLVBGX0lTTyA9IFBGX09TSQotUEZfWDI1ID0gQUZfWDI1Ci1QRl9PU0lORVQgPSBBRl9PU0lORVQKLVBGX0dPU0lQID0gQUZfR09TSVAKLVBGX1lORVQgPSBBRl9ZTkVUCi1QRl9ST1VURSA9IEFGX1JPVVRFCi1QRl9MSU5LID0gQUZfTElOSwotcHNldWRvX1BGX1hUUCA9IHBzZXVkb19BRl9YVFAKLVBGX0lORVQ2ID0gQUZfSU5FVDYKLVBGX01BWCA9IEFGX01BWAotU09NQVhDT05OID0gNQotU0NNX1JJR0hUUyA9IDEKLU1TR19PT0IgPSAweDEKLU1TR19QRUVLID0gMHgyCi1NU0dfRE9OVFJPVVRFID0gMHg0Ci1NU0dfQ1RSVU5DID0gMHg4Ci1NU0dfVFJVTkMgPSAweDEwCi1NU0dfRU9SID0gMHgzMAotTVNHX1dBSVRBTEwgPSAweDIwCi1NU0dfTUFYSU9WTEVOID0gMTYKLWRlZiBPUFRMRU4oeCk6IHJldHVybiAoKCgoeCkgKyBzaXplb2YoaW50KSAtIDEpIC8gc2l6ZW9mKGludCkpICogc2l6ZW9mKGludCkpCi0KLUdJQVJHID0gMHgxCi1DT05USSA9IDB4MgotR0lUQUIgPSAweDQKLVNPQ0tFVFNZUyA9IDg4Ci1TT0NLRVRTWVMgPSA4MwotU09fQUNDRVBUID0gMQotU09fQklORCA9IDIKLVNPX0NPTk5FQ1QgPSAzCi1TT19HRVRQRUVSTkFNRSA9IDQKLVNPX0dFVFNPQ0tOQU1FID0gNQotU09fR0VUU09DS09QVCA9IDYKLVNPX0xJU1RFTiA9IDcKLVNPX1JFQ1YgPSA4Ci1TT19SRUNWRlJPTSA9IDkKLVNPX1NFTkQgPSAxMAotU09fU0VORFRPID0gMTEKLVNPX1NFVFNPQ0tPUFQgPSAxMgotU09fU0hVVERPV04gPSAxMwotU09fU09DS0VUID0gMTQKLVNPX1NPQ0tQT0xMID0gMTUKLVNPX0dFVElQRE9NQUlOID0gMTYKLVNPX1NFVElQRE9NQUlOID0gMTcKLVNPX0FESlRJTUUgPSAxOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cmVhbS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY3JlZC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMva3N5bmNoLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kbC5oCi1TSUdOQklUID0gMHg4MDAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lwbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGlzcF9wLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90cmFwLmgKLURJVkVSUiA9IDAKLVNHTFNUUCA9IDEKLU5NSUZMVCA9IDIKLUJQVEZMVCA9IDMKLUlOVE9GTFQgPSA0Ci1CT1VOREZMVCA9IDUKLUlOVk9QRkxUID0gNgotTk9FWFRGTFQgPSA3Ci1EQkxGTFQgPSA4Ci1FWFRPVlJGTFQgPSA5Ci1JTlZUU1NGTFQgPSAxMAotU0VHTlBGTFQgPSAxMQotU1RLRkxUID0gMTIKLUdQRkxUID0gMTMKLVBHRkxUID0gMTQKLUVYVEVSUkZMVCA9IDE2Ci1BTElHTkZMVCA9IDE3Ci1NQ0VGTFQgPSAxOAotVVNFUkZMVCA9IDB4MTAwCi1UUlBfUFJFRU1QVCA9IDB4MjAwCi1UUlBfVU5VU0VEID0gMHgyMDEKLVBGX0VSUl9NQVNLID0gMHgwMQotUEZfRVJSX1BBR0UgPSAwCi1QRl9FUlJfUFJPVCA9IDEKLVBGX0VSUl9XUklURSA9IDIKLVBGX0VSUl9VU0VSID0gNAotRVZUX1NUUlNDSEVEID0gMHgwNAotRVZUX0dMT0JDQUxMT1VUID0gMHgwOAotRVZUX0xDTENBTExPVVQgPSAweDEwCi1FVlRfU09GVElOVE1BU0sgPSAoRVZUX1NUUlNDSEVEfEVWVF9HTE9CQ0FMTE9VVHxFVlRfTENMQ0FMTE9VVCkKLVBMMCA9IDAKLVBMMSA9IDEKLVBMMiA9IDIKLVBMMyA9IDMKLVBMNCA9IDQKLVBMNSA9IDUKLVBMNiA9IDYKLVBMSEkgPSA4Ci1QTDcgPSBQTEhJCi1QTEJBU0UgPSBQTDAKLVBMVElNRU9VVCA9IFBMMQotUExESVNLID0gUEw1Ci1QTFNUUiA9IFBMNgotUExUVFkgPSBQTFNUUgotUExNSU4gPSBQTDAKLVBMTUlOID0gUEwxCi1NQVhfSU5UUl9MRVZFTFMgPSAxMAotTUFYX0lOVFJfTkVTVElORyA9IDUwCi1TVFJTQ0hFRCA9IEVWVF9TVFJTQ0hFRAotR0xPQkFMU09GVElOVCA9IEVWVF9HTE9CQ0FMTE9VVAotTE9DQUxTT0ZUSU5UID0gRVZUX0xDTENBTExPVVQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3luY2hfcC5oCi1kZWYgR0VUX1RJTUUodGltZXApOiByZXR1cm4gXAotCi1MS19USFJFU0hPTEQgPSA1MDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9saXN0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9saXN0YXNtLmgKLWRlZiByZW1xdWVfbnVsbChlKTogcmV0dXJuIFwKLQotZGVmIExTX0lTRU1QVFkobGlzdHApOiByZXR1cm4gXAotCi1MS19CQVNJQyA9IDB4MQotTEtfU0xFRVAgPSAweDIKLUxLX05PU1RBVFMgPSAweDQKLWRlZiBDWUNMRVNfU0lOQ0UoYyk6IHJldHVybiBDWUNMRVNfQkVUV0VFTigoYyksIENZQ0xFUygpKQotCi1MU0JfTkxLRFMgPSA5MgotRVZUX1JVTlJVTiA9IDB4MDEKLUVWVF9LUFJVTlJVTiA9IDB4MDIKLVNQX1VOTE9DS0VEID0gMAotU1BfTE9DS0VEID0gMQotS1NfTE9DS1RFU1QgPSAweDAxCi1LU19NUFNUQVRTID0gMHgwMgotS1NfREVJTklURUQgPSAweDA0Ci1LU19OVkxUVFJBQ0UgPSAweDA4Ci1SV1NfUkVBRCA9IChvcmQoJ3InKSkKLVJXU19XUklURSA9IChvcmQoJ3cnKSkKLVJXU19VTkxPQ0tFRCA9IChvcmQoJ3UnKSkKLVJXU19CVVNZID0gKG9yZCgnYicpKQotZGVmIFNMRUVQX0xPQ0tPV05FRChsa3ApOiByZXR1cm4gXAotCi1kZWYgU0xFRVBfRElTT1dOKGxrcCk6IHJldHVybiBcCi0KLUtTX05PUFJNUFQgPSAweDAwMDAwMDAxCi1fX0tTX0xPQ0tURVNUID0gS1NfTE9DS1RFU1QKLV9fS1NfTE9DS1RFU1QgPSAwCi1fX0tTX01QU1RBVFMgPSBLU19NUFNUQVRTCi1fX0tTX01QU1RBVFMgPSAwCi1fX0tTX05WTFRUUkFDRSA9IEtTX05WTFRUUkFDRQotX19LU19OVkxUVFJBQ0UgPSAwCi1LU0ZMQUdTID0gKF9fS1NfTE9DS1RFU1R8X19LU19NUFNUQVRTfF9fS1NfTlZMVFRSQUNFKQotS1NWVU5JUFJPQyA9IDEKLUtTVk1QREVCVUcgPSAyCi1LU1ZNUE5PREVCVUcgPSAzCi1LU1ZGTEFHID0gS1NWVU5JUFJPQwotS1NWRkxBRyA9IEtTVk1QREVCVUcKLUtTVkZMQUcgPSBLU1ZNUE5PREVCVUcKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc2lubGluZS5oCi1fQV9TUF9MT0NLRUQgPSAxCi1fQV9TUF9VTkxPQ0tFRCA9IDAKLV9BX0lOVlBMID0gLTEKLWRlZiBfQVRPTUlDX0lOVF9JTkNSKGF0b21pY19pbnRwKTogcmV0dXJuIFwKLQotZGVmIF9BVE9NSUNfSU5UX0RFQ1IoYXRvbWljX2ludHApOiByZXR1cm4gXAotCi1kZWYgQVRPTUlDX0lOVF9SRUFEKGF0b21pY19pbnRwKTogcmV0dXJuIF9BVE9NSUNfSU5UX1JFQUQoYXRvbWljX2ludHApCi0KLWRlZiBBVE9NSUNfSU5UX0lOQ1IoYXRvbWljX2ludHApOiByZXR1cm4gX0FUT01JQ19JTlRfSU5DUihhdG9taWNfaW50cCkKLQotZGVmIEFUT01JQ19JTlRfREVDUihhdG9taWNfaW50cCk6IHJldHVybiBfQVRPTUlDX0lOVF9ERUNSKGF0b21pY19pbnRwKQotCi1kZWYgRlNQSU5fSU5JVChscCk6IHJldHVybgotCi1kZWYgRlNQSU5fTE9DSyhsKTogcmV0dXJuIERJU0FCTEUoKQotCi1kZWYgRlNQSU5fVFJZTE9DSyhsKTogcmV0dXJuIChESVNBQkxFKCksIEJfVFJVRSkKLQotZGVmIEZTUElOX1VOTE9DSyhsKTogcmV0dXJuIEVOQUJMRSgpCi0KLWRlZiBMT0NLX0RFSU5JVChscCk6IHJldHVybgotCi1kZWYgTE9DS19ERUFMTE9DKGxwKTogcmV0dXJuCi0KLWRlZiBMT0NLX09XTkVEKGxwKTogcmV0dXJuIChCX1RSVUUpCi0KLWRlZiBSV19ERUlOSVQobHApOiByZXR1cm4KLQotZGVmIFJXX0RFQUxMT0MobHApOiByZXR1cm4KLQotZGVmIFJXX09XTkVEKGxwKTogcmV0dXJuIChCX1RSVUUpCi0KLWRlZiBJU19MT0NLRUQobG9ja3ApOiByZXR1cm4gQl9GQUxTRQotCi1kZWYgTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBcCi0KLWRlZiBUUllMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBMT0NLX1NIX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBSV19SRExPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DS19QTE1JTihsb2NrcCkKLQotZGVmIFJXX1dSTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1BMTUlOKGxvY2twKQotCi1kZWYgTE9DS19ERUlOSVQobCk6IHJldHVybgotCi1kZWYgTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgVFJZTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBUUllMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgTE9DS19TSF9QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1NIKChsb2NrcCksIFBMTUlOKQotCi1kZWYgUldfUkRMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIFJXX1JETE9DSygobG9ja3ApLCBQTE1JTikKLQotZGVmIFJXX1dSTE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBSV19XUkxPQ0soKGxvY2twKSwgUExNSU4pCi0KLWRlZiBGU1BJTl9JU19MT0NLRUQoZnNwKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIFNQSU5fSVNfTE9DS0VEKGxvY2twKTogcmV0dXJuIEJfRkFMU0UKLQotZGVmIEZTUElOX09XTkVEKGwpOiByZXR1cm4gKEJfVFJVRSkKLQotQ1JfTUxEUkVBTCA9IDB4MDAwMDAwMDEKLUNSX1JEVU1QID0gMHgwMDAwMDAwMgotZGVmIGNyaG9sZChjcmVkcCk6IHJldHVybiBjcmhvbGRuKChjcmVkcCksIDEpCi0KLWRlZiBjcmZyZWUoY3JlZHApOiByZXR1cm4gY3JmcmVlbigoY3JlZHApLCAxKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RybWRlcC5oCi1kZWYgc3RyX2FsaWduZWQoWCk6IHJldHVybiAoKCh1aW50KShYKSAmIChzaXplb2YoaW50KSAtIDEpKSA9PSAwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZW5naW5lLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jbG9jay5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZS5oCi1EU1RfTk9ORSA9IDAKLURTVF9VU0EgPSAxCi1EU1RfQVVTVCA9IDIKLURTVF9XRVQgPSAzCi1EU1RfTUVUID0gNAotRFNUX0VFVCA9IDUKLURTVF9DQU4gPSA2Ci1EU1RfR0IgPSA3Ci1EU1RfUlVNID0gOAotRFNUX1RVUiA9IDkKLURTVF9BVVNUQUxUID0gMTAKLUlUSU1FUl9SRUFMID0gMAotSVRJTUVSX1ZJUlRVQUwgPSAxCi1JVElNRVJfUFJPRiA9IDIKLUZEX1NFVFNJWkUgPSA0MDk2Ci1GRF9OQkJZID0gOAotCi0jIEluY2x1ZGVkIGZyb20gdGltZS5oCi1OVUxMID0gMAotQ0xPQ0tTX1BFUl9TRUMgPSAxMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2xvY2tfcC5oCi1DR0JJVFMgPSA0Ci1JREJJVFMgPSAyOAotZGVmIHRvaWRfdW5wYWNrY2coaWR2YWwpOiByZXR1cm4gKCgoaWR2YWwpID4+IElEQklUUykgJiAweGYpCi0KLWRlZiB0b2lkX3VucGFja2lkKGlkdmFsKTogcmV0dXJuICgoaWR2YWwpICYgMHhmZmZmZmZmKQotCi1kZWYgdG9pZF91bnBhY2tjZyhpZHZhbCk6IHJldHVybiAwCi0KLWRlZiB0b2lkX3VucGFja2lkKGlkdmFsKTogcmV0dXJuIChpZHZhbCkKLQotTkNBTExPVVRfSEFTSCA9IDEwMjQKLUNBTExPVVRfTUFYVkFMID0gMHg3ZmZmZmZmZgotVE9fUEVSSU9ESUMgPSAweDgwMDAwMDAwCi1UT19JTU1FRElBVEUgPSAweDgwMDAwMDAwCi1TRUMgPSAxCi1NSUxMSVNFQyA9IDEwMDAKLU1JQ1JPU0VDID0gMTAwMDAwMAotTkFOT1NFQyA9IDEwMDAwMDAwMDAKLVNFQ0hSID0gKDYwKjYwKQotU0VDREFZID0gKDI0KlNFQ0hSKQotU0VDWVIgPSAoMzY1KlNFQ0RBWSkKLWRlZiBUSU1FX09XTkVEX1IoY2dudW0pOiByZXR1cm4gKEJfVFJVRSkKLQotTE9PUFNFQ09ORFMgPSAxODAwCi1MT09QTUlDUk9TRUNPTkRTID0gKExPT1BTRUNPTkRTICogTUlDUk9TRUMpCi1kZWYgVElDS1NfU0lOQ0UodCk6IHJldHVybiBUSUNLU19CRVRXRUVOKHQsIFRJQ0tTKCkpCi0KLU1BWFJRUyA9IDIKLUVfT0ZGTElORSA9IDB4MDEKLUVfQkFEID0gMHgwMgotRV9TSFVURE9XTiA9IDB4MDQKLUVfRFJJVkVSID0gMHgwOAotRV9ERUZBVUxUS0VFUCA9IDB4MTAwCi1FX0RSSVZFUkJPVU5EID0gMHgyMDAKLUVfRVhDTFVTSVZFID0gMHg0MDAKLUVfQ0dMRUFERVIgPSAweDgwMAotRV9OT1dBWSA9IChFX09GRkxJTkV8RV9CQUR8RV9TSFVURE9XTikKLUVfQk9VTkQgPSAweDAxCi1FX0dMT0JBTCA9IDB4MDAKLUVfVU5BVkFJTCA9IC0xCi1FTkdJTkVfT05MSU5FID0gMQotZGVmIFBST0NFU1NPUl9VTk1BUChlKTogcmV0dXJuICgoZSkgLSBlbmdpbmUpCi0KLUJPT1RFTkcgPSAwCi1RTU9WRUQgPSAweDAwMDEKLVFXQU5UUiA9IDB4MDAwMgotUVdBTlRXID0gMHgwMDA0Ci1RRlVMTCA9IDB4MDAwOAotUVJFQURSID0gMHgwMDEwCi1RVVNFID0gMHgwMDIwCi1RTk9FTkIgPSAweDAwNDAKLVFVUCA9IDB4MDA4MAotUUJBQ0sgPSAweDAxMDAKLVFJTlRFUiA9IDB4MDIwMAotUVBST0NTT04gPSAweDA0MDAKLVFUT0VOQUIgPSAweDA4MDAKLVFGUkVFWkUgPSAweDEwMDAKLVFCT1VORCA9IDB4MjAwMAotUURFRkNOVCA9IDB4NDAwMAotUUVOQUIgPSAweDAwMDEKLVFTVkNCVVNZID0gMHgwMDAyCi1TVFJNX1BVVENOVF9UQUJMRVMgPSAzMQotZGVmIFNUUk1fTVlFTkdfUFVUQ05UKHNkcCk6IHJldHVybiBTVFJNX1BVVENOVChsLmVuZ19udW0sIHNkcCkKLQotUUJfRlVMTCA9IDB4MDEKLVFCX1dBTlRXID0gMHgwMgotUUJfQkFDSyA9IDB4MDQKLU5CQU5EID0gMjU2Ci1EQl9XQVNEVVBFRCA9IDB4MQotREJfMlBJRUNFID0gMHgyCi1TVFJMRUFLSEFTSFNaID0gMTAyMQotTVNHTUFSSyA9IDB4MDEKLU1TR05PTE9PUCA9IDB4MDIKLU1TR0RFTElNID0gMHgwNAotTVNHTk9HRVQgPSAweDA4Ci1NU0dMT0cgPSAweDEwCi1NX0RBVEEgPSAweDAwCi1NX1BST1RPID0gMHgwMQotTV9CUkVBSyA9IDB4MDgKLU1fUEFTU0ZQID0gMHgwOQotTV9TSUcgPSAweDBiCi1NX0RFTEFZID0gMHgwYwotTV9DVEwgPSAweDBkCi1NX0lPQ1RMID0gMHgwZQotTV9TRVRPUFRTID0gMHgxMAotTV9SU0UgPSAweDExCi1NX1RSQUlMID0gMHgxMgotTV9JT0NBQ0sgPSAweDgxCi1NX0lPQ05BSyA9IDB4ODIKLU1fUENQUk9UTyA9IDB4ODMKLU1fUENTSUcgPSAweDg0Ci1NX1JFQUQgPSAweDg1Ci1NX0ZMVVNIID0gMHg4NgotTV9TVE9QID0gMHg4NwotTV9TVEFSVCA9IDB4ODgKLU1fSEFOR1VQID0gMHg4OQotTV9FUlJPUiA9IDB4OGEKLU1fQ09QWUlOID0gMHg4YgotTV9DT1BZT1VUID0gMHg4YwotTV9JT0NEQVRBID0gMHg4ZAotTV9QQ1JTRSA9IDB4OGUKLU1fU1RPUEkgPSAweDhmCi1NX1NUQVJUSSA9IDB4OTAKLU1fUENDVEwgPSAweDkxCi1NX1BDU0VUT1BUUyA9IDB4OTIKLVFOT1JNID0gMHgwMAotUVBDVEwgPSAweDgwCi1TVFJDQU5PTiA9IDB4MDEKLVJFQ09QWSA9IDB4MDIKLVNPX0FMTCA9IDB4MDAzZgotU09fUkVBRE9QVCA9IDB4MDAwMQotU09fV1JPRkYgPSAweDAwMDIKLVNPX01JTlBTWiA9IDB4MDAwNAotU09fTUFYUFNaID0gMHgwMDA4Ci1TT19ISVdBVCA9IDB4MDAxMAotU09fTE9XQVQgPSAweDAwMjAKLVNPX01SRUFET04gPSAweDAwNDAKLVNPX01SRUFET0ZGID0gMHgwMDgwCi1TT19OREVMT04gPSAweDAxMDAKLVNPX05ERUxPRkYgPSAweDAyMDAKLVNPX0lTVFRZID0gMHgwNDAwCi1TT19JU05UVFkgPSAweDA4MDAKLVNPX1RPU1RPUCA9IDB4MTAwMAotU09fVE9OU1RPUCA9IDB4MjAwMAotU09fQkFORCA9IDB4NDAwMAotU09fREVMSU0gPSAweDgwMDAKLVNPX05PREVMSU0gPSAweDAxMDAwMAotU09fU1RSSE9MRCA9IDB4MDIwMDAwCi1TT19MT09QID0gMHgwNDAwMDAKLURSVk9QRU4gPSAweDAKLU1PRE9QRU4gPSAweDEKLUNMT05FT1BFTiA9IDB4MgotT1BFTkZBSUwgPSAtMQotQlBSSV9MTyA9IDEKLUJQUklfTUVEID0gMgotQlBSSV9ISSA9IDMKLUlORlBTWiA9IC0xCi1GTFVTSEFMTCA9IDEKLUZMVVNIREFUQSA9IDAKLVNUUkhJR0ggPSA1MTIwCi1TVFJMT1cgPSAxMDI0Ci1NQVhJT0NCU1ogPSAxMDI0Ci1kZWYgc3RyYWxuKGEpOiByZXR1cm4gKGNhZGRyX3QpKChpbnQpKGEpICYgfihzaXplb2YoaW50KS0xKSkKLQotSVBNX0lEID0gMjAwCi1JQ01QTV9JRCA9IDIwMQotVENQTV9JRCA9IDIwMgotVURQTV9JRCA9IDIwMwotQVJQTV9JRCA9IDIwNAotQVBQTV9JRCA9IDIwNQotUklQTV9JRCA9IDIwNgotUFBQTV9JRCA9IDIwNwotQUhETENNX0lEID0gMjA4Ci1NSERMQ1JJUE1fSUQgPSAyMDkKLUhETENNX0lEID0gMjEwCi1QUENJRF9JRCA9IDIxMQotSUdNUE1fSUQgPSAyMTIKLUlQSVBNX0lEID0gMjEzCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQSVAgPSA0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fSEVMTE8gPSA2MwotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9FQ0hPID0gNwotSVBQT1JUX0RJU0NBUkQgPSA5Ci1JUFBPUlRfU1lTVEFUID0gMTEKLUlQUE9SVF9EQVlUSU1FID0gMTMKLUlQUE9SVF9ORVRTVEFUID0gMTUKLUlQUE9SVF9GVFAgPSAyMQotSVBQT1JUX1RFTE5FVCA9IDIzCi1JUFBPUlRfU01UUCA9IDI1Ci1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1JUFBPUlRfTkFNRVNFUlZFUiA9IDQyCi1JUFBPUlRfV0hPSVMgPSA0MwotSVBQT1JUX01UUCA9IDU3Ci1JUFBPUlRfVEZUUCA9IDY5Ci1JUFBPUlRfUkpFID0gNzcKLUlQUE9SVF9GSU5HRVIgPSA3OQotSVBQT1JUX1RUWUxJTksgPSA4NwotSVBQT1JUX1NVUERVUCA9IDk1Ci1JUFBPUlRfRVhFQ1NFUlZFUiA9IDUxMgotSVBQT1JUX0xPR0lOU0VSVkVSID0gNTEzCi1JUFBPUlRfQ01EU0VSVkVSID0gNTE0Ci1JUFBPUlRfRUZTU0VSVkVSID0gNTIwCi1JUFBPUlRfQklGRlVEUCA9IDUxMgotSVBQT1JUX1dIT1NFUlZFUiA9IDUxMwotSVBQT1JUX1JPVVRFU0VSVkVSID0gNTIwCi1JUFBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRF9MT1cgPSA1MTIKLUlQUE9SVF9SRVNFUlZFRF9ISUdIID0gMTAyMwotSVBQT1JUX1VTRVJSRVNFUlZFRF9MT1cgPSAzMjc2OAotSVBQT1JUX1VTRVJSRVNFUlZFRF9ISUdIID0gNjU1MzUKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfVE9TID0gMgotSVBfVFRMID0gMwotSVBfSERSSU5DTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfTE9PUCA9IDEwCi1JUF9BRERfTUVNQkVSU0hJUCA9IDExCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMgotSVBfQlJPQURDQVNUX0lGID0gMTQKLUlQX1JFQ1ZJRklOREVYID0gMTUKLUlQX01VTFRJQ0FTVF9UVEwgPSAxNgotTVJUX0lOSVQgPSAxNwotTVJUX0RPTkUgPSAxOAotTVJUX0FERF9WSUYgPSAxOQotTVJUX0RFTF9WSUYgPSAyMAotTVJUX0FERF9NRkMgPSAyMQotTVJUX0RFTF9NRkMgPSAyMgotTVJUX1ZFUlNJT04gPSAyMwotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JTkFERFJfVU5TUEVDX0dST1VQID0gMHhlMDAwMDAwMAotSU5BRERSX0FMTEhPU1RTX0dST1VQID0gMHhlMDAwMDAwMQotSU5BRERSX0FMTFJUUlNfR1JPVVAgPSAweGUwMDAwMDAyCi1JTkFERFJfTUFYX0xPQ0FMX0dST1VQID0gMHhlMDAwMDBmZgotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldC9pbl9tcC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX21wX2RkaS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW5saW5lLmgKLUlQX0hJRVJfQkFTRSA9ICgyMCkKLWRlZiBBU1NFUlRfTE9DSyh4KTogcmV0dXJuCi0KLWRlZiBBU1NFUlRfV1JMT0NLKHgpOiByZXR1cm4KLQotZGVmIEFTU0VSVF9VTkxPQ0soeCk6IHJldHVybgotCi1kZWYgQ0FOUFVUKHEpOiByZXR1cm4gY2FucHV0KChxKSkKLQotZGVmIENBTlBVVE5FWFQocSk6IHJldHVybiBjYW5wdXRuZXh0KChxKSkKLQotSU5FVF9ERUJVRyA9IDEKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXVuaXh3YXJlNy9TVFJPUFRTLnB5IGIvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmNTBhOWMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMuaAotZGVmIHF1YWRfbG93KHgpOiByZXR1cm4geC52YWxbMF0KLQotQURUX0VNQVNLU0laRSA9IDgKLVNIUlRfTUlOID0gLTMyNzY4Ci1TSFJUX01BWCA9IDMyNzY3Ci1JTlRfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfTUFYID0gMjE0NzQ4MzY0NwotTE9OR19NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUxPTkdfTUFYID0gMjE0NzQ4MzY0NwotT0ZGMzJfTUFYID0gTE9OR19NQVgKLUlTVEFUX0FTU0VSVEVEID0gMAotSVNUQVRfQVNTVU1FRCA9IDEKLUlTVEFUX05PTkUgPSAyCi1PRkZfTUFYID0gT0ZGMzJfTUFYCi1DTE9DS19NQVggPSBMT05HX01BWAotUF9NWUlEID0gKC0xKQotUF9NWUhPU1RJRCA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotRkRfU0VUU0laRSA9IDQwOTYKLU5CQlkgPSA4Ci1OVUxMID0gMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvbmYuaAotRF9ORVcgPSAweDAwCi1EX09MRCA9IDB4MDEKLURfRE1BID0gMHgwMgotRF9CTEtPRkYgPSAweDQwMAotRF9MRlMgPSAweDgwMDAKLURfU1RSID0gMHgwODAwCi1EX01PRCA9IDB4MTAwMAotRF9QU0VVRE8gPSAweDIwMDAKLURfUkFORE9NID0gMHg0MDAwCi1EX0hPVCA9IDB4MTAwMDAKLURfU0VFS05FRyA9IDB4MDQKLURfVEFQRSA9IDB4MDgKLURfTk9CUktVUCA9IDB4MTAKLURfSU5JVFBVQiA9IDB4MjAKLURfTk9TUEVDTUFDREFUQSA9IDB4NDAKLURfUkRXRVEgPSAweDgwCi1TRUNNQVNLID0gKERfSU5JVFBVQnxEX05PU1BFQ01BQ0RBVEF8RF9SRFdFUSkKLURBRl9SRVFETUEgPSAweDEKLURBRl9QSFlTUkVRID0gMHgyCi1EQUZfUFJFOCA9IDB4NAotREFGX1NUQVRJQyA9IDB4OAotREFGX1NUUiA9IDB4MTAKLURfTVAgPSAweDEwMAotRF9VUEYgPSAweDIwMAotUk9PVEZTX05BTUVTWiA9IDcKLUZNTkFNRVNaID0gOAotTUNEX1ZFUlNJT04gPSAxCi1ESV9CQ0JQID0gMAotRElfTUVESUEgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2Vjc3lzLmgKLUVTX01BQ09QRU5MSUQgPSAxCi1FU19NQUNTWVNMSUQgPSAyCi1FU19NQUNST09UTElEID0gMwotRVNfUFJWSU5GTyA9IDQKLUVTX1BSVlNFVENOVCA9IDUKLUVTX1BSVlNFVFMgPSA2Ci1FU19NQUNBRFRMSUQgPSA3Ci1FU19QUlZJRCA9IDgKLUVTX1RQR0VUTUFKT1IgPSA5Ci1TQV9FWEVDID0gMG8wMQotU0FfV1JJVEUgPSAwbzAyCi1TQV9SRUFEID0gMG8wNAotU0FfU1VCU0laRSA9IDBvMTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJvcHRzX2YuaAotWF9TVFIgPSAob3JkKCdTJyk8PDgpCi1YX0lfQkFTRSA9IChYX1NUUnwwbzIwMCkKLVhfSV9OUkVBRCA9IChYX1NUUnwwbzIwMSkKLVhfSV9QVVNIID0gKFhfU1RSfDBvMjAyKQotWF9JX1BPUCA9IChYX1NUUnwwbzIwMykKLVhfSV9MT09LID0gKFhfU1RSfDBvMjA0KQotWF9JX0ZMVVNIID0gKFhfU1RSfDBvMjA1KQotWF9JX1NSRE9QVCA9IChYX1NUUnwwbzIwNikKLVhfSV9HUkRPUFQgPSAoWF9TVFJ8MG8yMDcpCi1YX0lfU1RSID0gKFhfU1RSfDBvMjEwKQotWF9JX1NFVFNJRyA9IChYX1NUUnwwbzIxMSkKLVhfSV9HRVRTSUcgPSAoWF9TVFJ8MG8yMTIpCi1YX0lfRklORCA9IChYX1NUUnwwbzIxMykKLVhfSV9MSU5LID0gKFhfU1RSfDBvMjE0KQotWF9JX1VOTElOSyA9IChYX1NUUnwwbzIxNSkKLVhfSV9QRUVLID0gKFhfU1RSfDBvMjE3KQotWF9JX0ZESU5TRVJUID0gKFhfU1RSfDBvMjIwKQotWF9JX1NFTkRGRCA9IChYX1NUUnwwbzIyMSkKLVhfSV9SRUNWRkQgPSAoWF9TVFJ8MG8yMjIpCi0KLSMgSW5jbHVkZWQgZnJvbSB1bmlzdGQuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3VuaXN0ZC5oCi1SX09LID0gMG8wNAotV19PSyA9IDBvMDIKLVhfT0sgPSAwbzAxCi1GX09LID0gMDAwCi1FRkZfT05MWV9PSyA9IDBvMTAKLUVYX09LID0gMG8yMAotU0VFS19TRVQgPSAwCi1TRUVLX0NVUiA9IDEKLVNFRUtfRU5EID0gMgotX1NDX0FSR19NQVggPSAxCi1fU0NfQ0hJTERfTUFYID0gMgotX1NDX0NMS19UQ0sgPSAzCi1fU0NfTkdST1VQU19NQVggPSA0Ci1fU0NfT1BFTl9NQVggPSA1Ci1fU0NfSk9CX0NPTlRST0wgPSA2Ci1fU0NfU0FWRURfSURTID0gNwotX1NDX1ZFUlNJT04gPSA4Ci1fU0NfUEFTU19NQVggPSA5Ci1fU0NfTE9HTkFNRV9NQVggPSAxMAotX1NDX1BBR0VTSVpFID0gMTEKLV9TQ19QQUdFX1NJWkUgPSBfU0NfUEFHRVNJWkUKLV9TQ19YT1BFTl9WRVJTSU9OID0gMTIKLV9TQ19OQUNMU19NQVggPSAxMwotX1NDX05QUk9DRVNTT1JTX0NPTkYgPSAxNAotX1NDX05QUk9DRVNTT1JTX09OTE4gPSAxNQotX1NDX05QUk9DRVNTRVMgPSAzOQotX1NDX1RPVEFMX01FTU9SWSA9IDQwCi1fU0NfVVNFQUJMRV9NRU1PUlkgPSA0MQotX1NDX0dFTkVSQUxfTUVNT1JZID0gNDIKLV9TQ19ERURJQ0FURURfTUVNT1JZID0gNDMKLV9TQ19OQ0dTX0NPTkYgPSA0NAotX1NDX05DR1NfT05MTiA9IDQ1Ci1fU0NfTUFYX0NQVVNfUEVSX0NHID0gNDYKLV9TQ19DR19TSU1QTEVfSU1QTCA9IDQ3Ci1fU0NfQ0FDSEVfTElORSA9IDQ4Ci1fU0NfU1lTVEVNX0lEID0gNDkKLV9TQ19USFJFQURTID0gNTEKLV9TQ19USFJFQURfQVRUUl9TVEFDS0FERFIgPSA1MgotX1NDX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDUzCi1fU0NfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUyA9IDU0Ci1fU0NfVEhSRUFEX0tFWVNfTUFYID0gNTUKLV9TQ19USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDU2Ci1fU0NfVEhSRUFEX1BSSU9fSU5IRVJJVCA9IDU3Ci1fU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCA9IDU4Ci1fU0NfVEhSRUFEX1NUQUNLX01JTiA9IDU5Ci1fU0NfVEhSRUFEX1BST0NFU1NfU0hBUkVEID0gNjAKLV9TQ19USFJFQURfU0FGRV9GVU5DVElPTlMgPSA2MQotX1NDX1RIUkVBRF9USFJFQURTX01BWCA9IDYyCi1fU0NfS0VSTkVMX1ZNID0gNjMKLV9TQ19UWk5BTUVfTUFYID0gMzIwCi1fU0NfU1RSRUFNX01BWCA9IDMyMQotX1NDX1hPUEVOX0NSWVBUID0gMzIzCi1fU0NfWE9QRU5fRU5IX0kxOE4gPSAzMjQKLV9TQ19YT1BFTl9TSE0gPSAzMjUKLV9TQ19YT1BFTl9YQ1VfVkVSU0lPTiA9IDMyNwotX1NDX0FFU19PU19WRVJTSU9OID0gMzMwCi1fU0NfQVRFWElUX01BWCA9IDMzMQotX1NDXzJfQ19CSU5EID0gMzUwCi1fU0NfMl9DX0RFViA9IDM1MQotX1NDXzJfQ19WRVJTSU9OID0gMzUyCi1fU0NfMl9DSEFSX1RFUk0gPSAzNTMKLV9TQ18yX0ZPUlRfREVWID0gMzU0Ci1fU0NfMl9GT1JUX1JVTiA9IDM1NQotX1NDXzJfTE9DQUxFREVGID0gMzU2Ci1fU0NfMl9TV19ERVYgPSAzNTcKLV9TQ18yX1VQRSA9IDM1OAotX1NDXzJfVkVSU0lPTiA9IDM1OQotX1NDX0JDX0JBU0VfTUFYID0gMzcwCi1fU0NfQkNfRElNX01BWCA9IDM3MQotX1NDX0JDX1NDQUxFX01BWCA9IDM3MgotX1NDX0JDX1NUUklOR19NQVggPSAzNzMKLV9TQ19DT0xMX1dFSUdIVFNfTUFYID0gMzgwCi1fU0NfRVhQUl9ORVNUX01BWCA9IDM4MQotX1NDX0xJTkVfTUFYID0gMzgyCi1fU0NfUkVfRFVQX01BWCA9IDM4MwotX1NDX0lPVl9NQVggPSAzOTAKLV9TQ19OUFJPQ19DT05GID0gMzkxCi1fU0NfTlBST0NfT05MTiA9IDM5MgotX1NDX1hPUEVOX1VOSVggPSA0MDAKLV9TQ19TRU1BUEhPUkVTID0gNDQwCi1fQ1NfUEFUSCA9IDEKLV9fT19DU19IT1NUTkFNRSA9IDIKLV9DU19SRUxFQVNFID0gMwotX0NTX1ZFUlNJT04gPSA0Ci1fX09fQ1NfTUFDSElORSA9IDUKLV9fT19DU19BUkNISVRFQ1RVUkUgPSA2Ci1fQ1NfSFdfU0VSSUFMID0gNwotX19PX0NTX0hXX1BST1ZJREVSID0gOAotX0NTX1NSUENfRE9NQUlOID0gOQotX0NTX0lOSVRUQUJfTkFNRSA9IDEwCi1fX09fQ1NfU1lTTkFNRSA9IDExCi1fQ1NfTEZTX0NGTEFHUyA9IDIwCi1fQ1NfTEZTX0xERkxBR1MgPSAyMQotX0NTX0xGU19MSUJTID0gMjIKLV9DU19MRlNfTElOVEZMQUdTID0gMjMKLV9DU19MRlM2NF9DRkxBR1MgPSAyNAotX0NTX0xGUzY0X0xERkxBR1MgPSAyNQotX0NTX0xGUzY0X0xJQlMgPSAyNgotX0NTX0xGUzY0X0xJTlRGTEFHUyA9IDI3Ci1fQ1NfQVJDSElURUNUVVJFID0gMTAwCi1fQ1NfQlVTVFlQRVMgPSAxMDEKLV9DU19IT1NUTkFNRSA9IDEwMgotX0NTX0hXX1BST1ZJREVSID0gMTAzCi1fQ1NfS0VSTkVMX1NUQU1QID0gMTA0Ci1fQ1NfTUFDSElORSA9IDEwNQotX0NTX09TX0JBU0UgPSAxMDYKLV9DU19PU19QUk9WSURFUiA9IDEwNwotX0NTX1NZU05BTUUgPSAxMDgKLV9DU19VU0VSX0xJTUlUID0gMTA5Ci1fUENfTElOS19NQVggPSAxCi1fUENfTUFYX0NBTk9OID0gMgotX1BDX01BWF9JTlBVVCA9IDMKLV9QQ19OQU1FX01BWCA9IDQKLV9QQ19QQVRIX01BWCA9IDUKLV9QQ19QSVBFX0JVRiA9IDYKLV9QQ19OT19UUlVOQyA9IDcKLV9QQ19WRElTQUJMRSA9IDgKLV9QQ19DSE9XTl9SRVNUUklDVEVEID0gOQotX1BDX0ZJTEVTSVpFQklUUyA9IDEwCi1fUE9TSVhfVkVSU0lPTiA9IDE5OTAwOQotX1hPUEVOX1ZFUlNJT04gPSA0Ci1HRl9QQVRIID0gIi9ldGMvZ3JvdXAiCi1QRl9QQVRIID0gIi9ldGMvcGFzc3dkIgotRl9VTE9DSyA9IDAKLUZfTE9DSyA9IDEKLUZfVExPQ0sgPSAyCi1GX1RFU1QgPSAzCi1fUE9TSVhfSk9CX0NPTlRST0wgPSAxCi1fUE9TSVhfU0FWRURfSURTID0gMQotX1BPU0lYX1ZESVNBQkxFID0gMAotTlVMTCA9IDAKLVNURElOX0ZJTEVOTyA9IDAKLVNURE9VVF9GSUxFTk8gPSAxCi1TVERFUlJfRklMRU5PID0gMgotX1hPUEVOX1VOSVggPSAxCi1fWE9QRU5fRU5IX0kxOE4gPSAxCi1fWE9QRU5fWFBHNCA9IDEKLV9QT1NJWDJfQ19WRVJTSU9OID0gMTk5MjA5Ci1fUE9TSVgyX1ZFUlNJT04gPSAxOTkyMDkKLV9YT1BFTl9YQ1VfVkVSU0lPTiA9IDQKLV9QT1NJWF9TRU1BUEhPUkVTID0gMQotX1BPU0lYX1RIUkVBRFMgPSAxCi1fUE9TSVhfVEhSRUFEX0FUVFJfU1RBQ0tBRERSID0gMQotX1BPU0lYX1RIUkVBRF9BVFRSX1NUQUNLU0laRSA9IDEKLV9QT1NJWF9USFJFQURfUFJJT1JJVFlfU0NIRURVTElORyA9IDEKLV9QT1NJWF9USFJFQURfUFJPQ0VTU19TSEFSRUQgPSAxCi1fUE9TSVhfVEhSRUFEX1NBRkVfRlVOQ1RJT05TID0gMQotX1BPU0lYMl9DX0JJTkQgPSAxCi1fUE9TSVgyX0NIQVJfVEVSTSA9IDEKLV9QT1NJWDJfRk9SVF9SVU4gPSAxCi1fUE9TSVgyX0xPQ0FMRURFRiA9IDEKLV9QT1NJWDJfVVBFID0gMQotX0xGU19BU1lOQ0hST05PVVNfSU8gPSAxCi1fTEZTX0xBUkdFRklMRSA9IDEKLV9MRlM2NF9BU1lOQ0hST05PVVNfSU8gPSAxCi1fTEZTNjRfTEFSR0VGSUxFID0gMQotX0xGUzY0X1NURElPID0gMQotRk1OQU1FU1ogPSA4Ci1TTkRaRVJPID0gMHgwMDEKLVNORFBJUEUgPSAweDAwMgotUk5PUk0gPSAweDAwMAotUk1TR0QgPSAweDAwMQotUk1TR04gPSAweDAwMgotUk1PREVNQVNLID0gMHgwMDMKLVJQUk9UREFUID0gMHgwMDQKLVJQUk9URElTID0gMHgwMDgKLVJQUk9UTk9STSA9IDB4MDEwCi1SUFJPVE1BU0sgPSAweDAxYwotRkxVU0hSID0gMHgwMQotRkxVU0hXID0gMHgwMgotRkxVU0hSVyA9IDB4MDMKLUZMVVNIQkFORCA9IDB4MDQKLVNfSU5QVVQgPSAweDAwMDEKLVNfSElQUkkgPSAweDAwMDIKLVNfT1VUUFVUID0gMHgwMDA0Ci1TX01TRyA9IDB4MDAwOAotU19FUlJPUiA9IDB4MDAxMAotU19IQU5HVVAgPSAweDAwMjAKLVNfUkROT1JNID0gMHgwMDQwCi1TX1dSTk9STSA9IFNfT1VUUFVUCi1TX1JEQkFORCA9IDB4MDA4MAotU19XUkJBTkQgPSAweDAxMDAKLVNfQkFORFVSRyA9IDB4MDIwMAotUlNfSElQUkkgPSAweDAxCi1NU0dfSElQUkkgPSAweDAxCi1NU0dfQU5ZID0gMHgwMgotTVNHX0JBTkQgPSAweDA0Ci1NU0dfRElTQ0FSRCA9IDB4MDgKLU1TR19QRUVLSU9DVEwgPSAweDEwCi1NT1JFQ1RMID0gMQotTU9SRURBVEEgPSAyCi1NVVhJRF9BTEwgPSAoLTEpCi1BTllNQVJLID0gMHgwMQotTEFTVE1BUksgPSAweDAyCi1TVFIgPSAob3JkKCdTJyk8PDgpCi1JX05SRUFEID0gKFNUUnwwbzEpCi1JX1BVU0ggPSAoU1RSfDBvMikKLUlfUE9QID0gKFNUUnwwbzMpCi1JX0xPT0sgPSAoU1RSfDBvNCkKLUlfRkxVU0ggPSAoU1RSfDBvNSkKLUlfU1JET1BUID0gKFNUUnwwbzYpCi1JX0dSRE9QVCA9IChTVFJ8MG83KQotSV9TVFIgPSAoU1RSfDBvMTApCi1JX1NFVFNJRyA9IChTVFJ8MG8xMSkKLUlfR0VUU0lHID0gKFNUUnwwbzEyKQotSV9GSU5EID0gKFNUUnwwbzEzKQotSV9MSU5LID0gKFNUUnwwbzE0KQotSV9VTkxJTksgPSAoU1RSfDBvMTUpCi1JX1BFRUsgPSAoU1RSfDBvMTcpCi1JX0ZESU5TRVJUID0gKFNUUnwwbzIwKQotSV9TRU5ERkQgPSAoU1RSfDBvMjEpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8yMikKLUlfRV9SRUNWRkQgPSAoU1RSfDBvMTYpCi1JX1JFQ1ZGRCA9IChTVFJ8MG8xNikKLUlfUkVDVkZEID0gKFNUUnwwbzIyKQotSV9TV1JPUFQgPSAoU1RSfDBvMjMpCi1JX0dXUk9QVCA9IChTVFJ8MG8yNCkKLUlfTElTVCA9IChTVFJ8MG8yNSkKLUlfUExJTksgPSAoU1RSfDBvMjYpCi1JX1BVTkxJTksgPSAoU1RSfDBvMjcpCi1JX0ZMVVNIQkFORCA9IChTVFJ8MG8zNCkKLUlfQ0tCQU5EID0gKFNUUnwwbzM1KQotSV9HRVRCQU5EID0gKFNUUnwwbzM2KQotSV9BVE1BUksgPSAoU1RSfDBvMzcpCi1JX1NFVENMVElNRSA9IChTVFJ8MG80MCkKLUlfR0VUQ0xUSU1FID0gKFNUUnwwbzQxKQotSV9DQU5QVVQgPSAoU1RSfDBvNDIpCi1JX1NfUkVDVkZEID0gKFNUUnwwbzQzKQotSV9TVEFUUyA9IChTVFJ8MG80NCkKLUlfQklHUElQRSA9IChTVFJ8MG80NSkKLUlfR0VUVFAgPSAoU1RSfDBvNDYpCi1JTkZUSU0gPSAtMQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuIGIvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2ODk5OGE3Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXVuaXh3YXJlNy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotIyEgL2Jpbi9zaAotY2FzZSBgdW5hbWUgLXNyYCBpbgotVW5peFdhcmUqKQk7OwotKikJZWNobyBQcm9iYWJseSBub3Qgb24gYSBVbml4V2FyZSBzeXN0ZW0gMT4mMgotCWV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1oMnB5IC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdGZvcm0ucHkgYi9MaWIvcGxhdGZvcm0ucHkKaW5kZXggM2U3MjZhNy4uZTQ4YWQwYiAxMDA3NTUKLS0tIGEvTGliL3BsYXRmb3JtLnB5CisrKyBiL0xpYi9wbGF0Zm9ybS5weQpAQCAtMTMsNyArMTMsNiBAQAogIyAgICBQeXRob24gYnVnIHRyYWNrZXIgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcpIGFuZCBhc3NpZ24gdGhlbSB0byAibGVtYnVyZyIuCiAjCiAjICAgIFN0aWxsIG5lZWRlZDoKLSMgICAgKiBtb3JlIHN1cHBvcnQgZm9yIFdpbkNFCiAjICAgICogc3VwcG9ydCBmb3IgTVMtRE9TIChQeXRob25EWCA/KQogIyAgICAqIHN1cHBvcnQgZm9yIEFtaWdhIGFuZCBvdGhlciBzdGlsbCB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMgcnVubmluZyBQeXRob24KICMgICAgKiBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIExpbnV4IGRpc3RyaWJ1dGlvbnMKQEAgLTI1MiwxMyArMjUxLDEzIEBACiAKIF9yZWxlYXNlX2ZpbGVuYW1lID0gcmUuY29tcGlsZShyJyhcdyspWy1fXShyZWxlYXNlfHZlcnNpb24pJywgcmUuQVNDSUkpCiBfbHNiX3JlbGVhc2VfdmVyc2lvbiA9IHJlLmNvbXBpbGUocicoLispJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJlbGVhc2UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKFtcZC5dKyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyByZWxlYXNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhbXGQuXSspJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInW14oXSooPzpcKCguKylcKSk/JywgcmUuQVNDSUkpCiBfcmVsZWFzZV92ZXJzaW9uID0gcmUuY29tcGlsZShyJyhbXjAtOV0rKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKD86IHJlbGVhc2UgKT8nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhbXGQuXSspJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInKD86IHJlbGVhc2UgKT8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJyhbXGQuXSspJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKIAogIyBTZWUgYWxzbyBodHRwOi8vd3d3Lm5vdmVsbC5jb20vY29vbHNvbHV0aW9ucy9mZWF0dXJlLzExMjUxLmh0bWwKICMgYW5kIGh0dHA6Ly9saW51eG1hZmlhLmNvbS9mYXEvQWRtaW4vcmVsZWFzZS1maWxlcy5odG1sCkBAIC00MDgsOCArNDA3LDggQEAKICAgICByZXR1cm4gdmVyc2lvbgogCiBfdmVyX291dHB1dCA9IHJlLmNvbXBpbGUocicoPzooW1x3IF0rKSAoW1x3Ll0rKSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJy4qJwotICAgICAgICAgICAgICAgICAgICAgICAgICdcWy4qIChbXGQuXSspXF0pJykKKyAgICAgICAgICAgICAgICAgICAgICAgICByJy4qJworICAgICAgICAgICAgICAgICAgICAgICAgIHInXFsuKiAoW1xkLl0rKVxdKScpCiAKICMgRXhhbXBsZXMgb2YgVkVSIGNvbW1hbmQgb3V0cHV0OgogIwpAQCAtNTA5LDcgKzUwOCw3IEBACiAgICAgICAgIGZyb20gX3dpbnJlZyBpbXBvcnQgT3BlbktleUV4LCBRdWVyeVZhbHVlRXgsIENsb3NlS2V5LCBIS0VZX0xPQ0FMX01BQ0hJTkUKIAogICAgIHdpbnZlciA9IGdldHdpbmRvd3N2ZXJzaW9uKCkKLSAgICBtYWosIG1pbiwgYnVpbGQgPSB3aW52ZXIuX3BsYXRmb3JtX3ZlcnNpb24gb3Igd2ludmVyWzozXQorICAgIG1haiwgbWluLCBidWlsZCA9IHdpbnZlci5wbGF0Zm9ybV92ZXJzaW9uIG9yIHdpbnZlcls6M10KICAgICB2ZXJzaW9uID0gJ3swfS57MX0uezJ9Jy5mb3JtYXQobWFqLCBtaW4sIGJ1aWxkKQogCiAgICAgcmVsZWFzZSA9IChfV0lOMzJfQ0xJRU5UX1JFTEVBU0VTLmdldCgobWFqLCBtaW4pKSBvcgpAQCAtMTA5NSwyMiArMTA5NCwyMiBAQAogCiBfaXJvbnB5dGhvbl9zeXNfdmVyc2lvbl9wYXJzZXIgPSByZS5jb21waWxlKAogICAgIHInSXJvblB5dGhvblxzKicKLSAgICAnKFtcZFwuXSspJwotICAgICcoPzogXCgoW1xkXC5dKylcKSk/JwotICAgICcgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKKyAgICByJyhbXGRcLl0rKScKKyAgICByJyg/OiBcKChbXGRcLl0rKVwpKT8nCisgICAgcicgb24gKC5ORVQgW1xkXC5dKyknLCByZS5BU0NJSSkKIAogIyBJcm9uUHl0aG9uIGNvdmVyaW5nIDIuNiBhbmQgMi43CiBfaXJvbnB5dGhvbjI2X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcicoW1xkLl0rKVxzKicKLSAgICAnXChJcm9uUHl0aG9uXHMqJwotICAgICdbXGQuXStccyonCi0gICAgJ1woKFtcZC5dKylcKSBvbiAoW1x3Ll0rIFtcZC5dKyg/OiBcKFxkKy1iaXRcKSk/KVwpJworICAgIHInXChJcm9uUHl0aG9uXHMqJworICAgIHInW1xkLl0rXHMqJworICAgIHInXCgoW1xkLl0rKVwpIG9uIChbXHcuXSsgW1xkLl0rKD86IFwoXGQrLWJpdFwpKT8pXCknCiApCiAKIF9weXB5X3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcicoW1x3LitdKylccyonCi0gICAgJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJwotICAgICdcW1B5UHkgW15cXV0rXF0/JykKKyAgICByJ1woIz8oW14sXSspLFxzKihbXHcgXSspLFxzKihbXHcgOl0rKVwpXHMqJworICAgIHInXFtQeVB5IFteXF1dK1xdPycpCiAKIF9zeXNfdmVyc2lvbl9jYWNoZSA9IHt9CiAKQEAgLTEzNDUsNyArMTM0NCw3IEBACiAgICAgICAgICAgICAjIHNlZSBpc3N1ZSAjMTMyMiBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3BsaXN0bGliLnB5IGIvTGliL3BsaXN0bGliLnB5CmluZGV4IDI1MDJiMzkuLjA5YmU1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi9wbGlzdGxpYi5weQorKysgYi9MaWIvcGxpc3RsaWIucHkKQEAgLTQ3LDcgKzQ3LDcgQEAKICIiIgogX19hbGxfXyA9IFsKICAgICAicmVhZFBsaXN0IiwgIndyaXRlUGxpc3QiLCAicmVhZFBsaXN0RnJvbUJ5dGVzIiwgIndyaXRlUGxpc3RUb0J5dGVzIiwKLSAgICAiUGxpc3QiLCAiRGF0YSIsICJEaWN0IiwgIkZNVF9YTUwiLCAiRk1UX0JJTkFSWSIsCisgICAgIlBsaXN0IiwgIkRhdGEiLCAiRGljdCIsICJJbnZhbGlkRmlsZUV4Y2VwdGlvbiIsICJGTVRfWE1MIiwgIkZNVF9CSU5BUlkiLAogICAgICJsb2FkIiwgImR1bXAiLCAibG9hZHMiLCAiZHVtcHMiCiBdCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IGY2NzIzOTAuLmNhZTY5NTAgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtNDMxLDYgKzQzMSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IGQ5ZjNmOTkuLjZkYmRhYjIgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtNDksNiArNDksNyBAQAogCiBkZWYgbm9ybWNhc2Uocyk6CiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuICBIYXMgbm8gZWZmZWN0IHVuZGVyIFBvc2l4IiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgc3RyKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm9ybWNhc2UoKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgIgogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAne30nIi5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQpAQCAtNjAsNiArNjEsNyBAQAogCiBkZWYgaXNhYnMocyk6CiAgICAgIiIiVGVzdCB3aGV0aGVyIGEgcGF0aCBpcyBhYnNvbHV0ZSIiIgorICAgIHMgPSBvcy5mc3BhdGgocykKICAgICBzZXAgPSBfZ2V0X3NlcChzKQogICAgIHJldHVybiBzLnN0YXJ0c3dpdGgoc2VwKQogCkBAIC03MywxMiArNzUsMTMgQEAKICAgICBJZiBhbnkgY29tcG9uZW50IGlzIGFuIGFic29sdXRlIHBhdGgsIGFsbCBwcmV2aW91cyBwYXRoIGNvbXBvbmVudHMKICAgICB3aWxsIGJlIGRpc2NhcmRlZC4gIEFuIGVtcHR5IGxhc3QgcGFydCB3aWxsIHJlc3VsdCBpbiBhIHBhdGggdGhhdAogICAgIGVuZHMgd2l0aCBhIHNlcGFyYXRvci4iIiIKKyAgICBhID0gb3MuZnNwYXRoKGEpCiAgICAgc2VwID0gX2dldF9zZXAoYSkKICAgICBwYXRoID0gYQogICAgIHRyeToKICAgICAgICAgaWYgbm90IHA6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCi0gICAgICAgIGZvciBiIGluIHA6CisgICAgICAgIGZvciBiIGluIG1hcChvcy5mc3BhdGgsIHApOgogICAgICAgICAgICAgaWYgYi5zdGFydHN3aXRoKHNlcCk6CiAgICAgICAgICAgICAgICAgcGF0aCA9IGIKICAgICAgICAgICAgIGVsaWYgbm90IHBhdGggb3IgcGF0aC5lbmRzd2l0aChzZXApOgpAQCAtOTksNiArMTAyLDcgQEAKIGRlZiBzcGxpdChwKToKICAgICAiIiJTcGxpdCBhIHBhdGhuYW1lLiAgUmV0dXJucyB0dXBsZSAiKGhlYWQsIHRhaWwpIiB3aGVyZSAidGFpbCIgaXMKICAgICBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaW5hbCBzbGFzaC4gIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQsIHRhaWwgPSBwWzppXSwgcFtpOl0KQEAgLTExMyw2ICsxMTcsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYicvJwogICAgICAgICBleHRzZXAgPSBiJy4nCkBAIC0xMjgsNiArMTMzLDcgQEAKIGRlZiBzcGxpdGRyaXZlKHApOgogICAgICIiIlNwbGl0IGEgcGF0aG5hbWUgaW50byBkcml2ZSBhbmQgcGF0aC4gT24gUG9zaXgsIGRyaXZlIGlzIGFsd2F5cwogICAgIGVtcHR5LiIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICByZXR1cm4gcFs6MF0sIHAKIAogCkBAIC0xMzUsNiArMTQxLDcgQEAKIAogZGVmIGJhc2VuYW1lKHApOgogICAgICIiIlJldHVybnMgdGhlIGZpbmFsIGNvbXBvbmVudCBvZiBhIHBhdGhuYW1lIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHNlcCA9IF9nZXRfc2VwKHApCiAgICAgaSA9IHAucmZpbmQoc2VwKSArIDEKICAgICByZXR1cm4gcFtpOl0KQEAgLTE0NCw2ICsxNTEsNyBAQAogCiBkZWYgZGlybmFtZShwKToKICAgICAiIiJSZXR1cm5zIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IG9mIGEgcGF0aG5hbWUiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIGhlYWQgPSBwWzppXQpAQCAtMjIyLDYgKzIzMCw3IEBACiBkZWYgZXhwYW5kdXNlcihwYXRoKToKICAgICAiIiJFeHBhbmQgfiBhbmQgfnVzZXIgY29uc3RydWN0aW9ucy4gIElmIHVzZXIgb3IgJEhPTUUgaXMgdW5rbm93biwKICAgICBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTI2Nyw2ICsyNzYsNyBAQAogZGVmIGV4cGFuZHZhcnMocGF0aCk6CiAgICAgIiIiRXhwYW5kIHNoZWxsIHZhcmlhYmxlcyBvZiBmb3JtICR2YXIgYW5kICR7dmFyfS4gIFVua25vd24gdmFyaWFibGVzCiAgICAgYXJlIGxlZnQgdW5jaGFuZ2VkLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBnbG9iYWwgX3ZhcnByb2csIF92YXJwcm9nYgogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoOgpAQCAtMzE4LDYgKzMyOCw3IEBACiAKIGRlZiBub3JtcGF0aChwYXRoKToKICAgICAiIiJOb3JtYWxpemUgcGF0aCwgZWxpbWluYXRpbmcgZG91YmxlIHNsYXNoZXMsIGV0Yy4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgZW1wdHkgPSBiJycKQEAgLTM1NSw2ICszNjYsNyBAQAogCiBkZWYgYWJzcGF0aChwYXRoKToKICAgICAiIiJSZXR1cm4gYW4gYWJzb2x1dGUgcGF0aC4iIiIKKyAgICBwYXRoID0gb3MuZnNwYXRoKHBhdGgpCiAgICAgaWYgbm90IGlzYWJzKHBhdGgpOgogICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQpAQCAtMzcwLDYgKzM4Miw3IEBACiBkZWYgcmVhbHBhdGgoZmlsZW5hbWUpOgogICAgICIiIlJldHVybiB0aGUgY2Fub25pY2FsIHBhdGggb2YgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgZWxpbWluYXRpbmcgYW55CiBzeW1ib2xpYyBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aC4iIiIKKyAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICBwYXRoLCBvayA9IF9qb2lucmVhbHBhdGgoZmlsZW5hbWVbOjBdLCBmaWxlbmFtZSwge30pCiAgICAgcmV0dXJuIGFic3BhdGgocGF0aCkKIApAQCAtNDM0LDYgKzQ0Nyw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgY3VyZGlyID0gYicuJwogICAgICAgICBzZXAgPSBiJy8nCkBAIC00NDUsNiArNDU5LDggQEAKIAogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIHN0YXJ0ID0gY3VyZGlyCisgICAgZWxzZToKKyAgICAgICAgc3RhcnQgPSBvcy5mc3BhdGgoc3RhcnQpCiAKICAgICB0cnk6CiAgICAgICAgIHN0YXJ0X2xpc3QgPSBbeCBmb3IgeCBpbiBhYnNwYXRoKHN0YXJ0KS5zcGxpdChzZXApIGlmIHhdCkBAIC00NzIsNiArNDg4LDcgQEAKICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2NvbW1vbnBhdGgoKSBhcmcgaXMgYW4gZW1wdHkgc2VxdWVuY2UnKQogCisgICAgcGF0aHMgPSB0dXBsZShtYXAob3MuZnNwYXRoLCBwYXRocykpCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoc1swXSwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJy8nCiAgICAgICAgIGN1cmRpciA9IGInLicKZGlmZiAtLWdpdCBhL0xpYi9weWNsYnIucHkgYi9MaWIvcHljbGJyLnB5CmluZGV4IDRkNDBiODcuLmQ3ZGJhOTcgMTAwNjQ0Ci0tLSBhL0xpYi9weWNsYnIucHkKKysrIGIvTGliL3B5Y2xici5weQpAQCAtNDAsMTIgKzQwLDEwIEBACiAiIiIKIAogaW1wb3J0IGlvCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHRva2VuaXplCiBmcm9tIHRva2VuIGltcG9ydCBOQU1FLCBERURFTlQsIE9QCi1mcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAKIF9fYWxsX18gPSBbInJlYWRtb2R1bGUiLCAicmVhZG1vZHVsZV9leCIsICJDbGFzcyIsICJGdW5jdGlvbiJdCiAKQEAgLTMyOCw2ICszMjYsNyBAQAogZGVmIF9tYWluKCk6CiAgICAgIyBNYWluIHByb2dyYW0gZm9yIHRlc3RpbmcuCiAgICAgaW1wb3J0IG9zCisgICAgZnJvbSBvcGVyYXRvciBpbXBvcnQgaXRlbWdldHRlcgogICAgIG1vZCA9IHN5cy5hcmd2WzFdCiAgICAgaWYgb3MucGF0aC5leGlzdHMobW9kKToKICAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUobW9kKV0KZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDBkMGQwYWIuLjM5ZGIzOTEKLS0tIGEvTGliL3B5ZG9jLnB5CisrKyBiL0xpYi9weWRvYy5weQpAQCAtMjA5LDYgKzIwOSwxOCBAQAogICAgICAgICByZXN1bHRzLmFwcGVuZCgobmFtZSwga2luZCwgY2xzLCB2YWx1ZSkpCiAgICAgcmV0dXJuIHJlc3VsdHMKIAorZGVmIHNvcnRfYXR0cmlidXRlcyhhdHRycywgb2JqZWN0KToKKyAgICAnU29ydCB0aGUgYXR0cnMgbGlzdCBpbi1wbGFjZSBieSBfZmllbGRzIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IGJ5IG5hbWUnCisgICAgIyBUaGlzIGFsbG93cyBkYXRhIGRlc2NyaXB0b3JzIHRvIGJlIG9yZGVyZWQgYWNjb3JkaW5nCisgICAgIyB0byBhIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisgICAgZmllbGRzID0gZ2V0YXR0cihvYmplY3QsICdfZmllbGRzJywgW10pCisgICAgdHJ5OgorICAgICAgICBmaWVsZF9vcmRlciA9IHtuYW1lIDogaS1sZW4oZmllbGRzKSBmb3IgKGksIG5hbWUpIGluIGVudW1lcmF0ZShmaWVsZHMpfQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIGZpZWxkX29yZGVyID0ge30KKyAgICBrZXlmdW5jID0gbGFtYmRhIGF0dHI6IChmaWVsZF9vcmRlci5nZXQoYXR0clswXSwgMCksIGF0dHJbMF0pCisgICAgYXR0cnMuc29ydChrZXk9a2V5ZnVuYykKKwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtb2R1bGUgbWFuaXB1bGF0aW9uCiAKIGRlZiBpc3BhY2thZ2UocGF0aCk6CkBAIC0zMzgsNyArMzUwLDcgQEAKICAgICAgICAgZWxpZiBleGMgaXMgU3ludGF4RXJyb3I6CiAgICAgICAgICAgICAjIEEgU3ludGF4RXJyb3Igb2NjdXJyZWQgYmVmb3JlIHdlIGNvdWxkIGV4ZWN1dGUgdGhlIG1vZHVsZS4KICAgICAgICAgICAgIHJhaXNlIEVycm9yRHVyaW5nSW1wb3J0KHZhbHVlLmZpbGVuYW1lLCBpbmZvKQotICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICBlbGlmIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcikgYW5kIHZhbHVlLm5hbWUgPT0gcGF0aDoKICAgICAgICAgICAgICMgTm8gc3VjaCBtb2R1bGUgaW4gdGhlIHBhdGguCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBlbHNlOgpAQCAtODY4LDggKzg4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQogICAgICAgICAgICAgdGFnICs9ICc6PGJyPlxuJwogCi0gICAgICAgICAgICAjIFNvcnQgYXR0cnMgYnkgbmFtZS4KLSAgICAgICAgICAgIGF0dHJzLnNvcnQoa2V5PWxhbWJkYSB0OiB0WzBdKQorICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCdNZXRob2RzICVzJyAlIHRhZywgYXR0cnMsCkBAIC0xMjg3LDggKzEyOTgsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0YWcgPSAiaW5oZXJpdGVkIGZyb20gJXMiICUgY2xhc3NuYW1lKHRoaXNjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX21vZHVsZV9fKQotICAgICAgICAgICAgIyBTb3J0IGF0dHJzIGJ5IG5hbWUuCi0gICAgICAgICAgICBhdHRycy5zb3J0KCkKKworICAgICAgICAgICAgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpCiAKICAgICAgICAgICAgICMgUHVtcCBvdXQgdGhlIGF0dHJzLCBzZWdyZWdhdGVkIGJ5IGtpbmQuCiAgICAgICAgICAgICBhdHRycyA9IHNwaWxsKCJNZXRob2RzICVzOlxuIiAlIHRhZywgYXR0cnMsCkBAIC0xNDE4LDEzICsxNDI5LDE0IEBACiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgbm90IHN5cy5zdGRpbi5pc2F0dHkoKSBvciBub3Qgc3lzLnN0ZG91dC5pc2F0dHkoKToKICAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKLSAgICBpZiAnUEFHRVInIGluIG9zLmVudmlyb246CisgICAgdXNlX3BhZ2VyID0gb3MuZW52aXJvbi5nZXQoJ01BTlBBR0VSJykgb3Igb3MuZW52aXJvbi5nZXQoJ1BBR0VSJykKKyAgICBpZiB1c2VfcGFnZXI6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOiAjIHBpcGVzIGNvbXBsZXRlbHkgYnJva2VuIGluIFdpbmRvd3MKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogdGVtcGZpbGVwYWdlcihwbGFpbih0ZXh0KSwgdXNlX3BhZ2VyKQogICAgICAgICBlbGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcihwbGFpbih0ZXh0KSwgb3MuZW52aXJvblsnUEFHRVInXSkKKyAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHBsYWluKHRleHQpLCB1c2VfcGFnZXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcih0ZXh0LCBvcy5lbnZpcm9uWydQQUdFUiddKQorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIodGV4dCwgdXNlX3BhZ2VyKQogICAgIGlmIG9zLmVudmlyb24uZ2V0KCdURVJNJykgaW4gKCdkdW1iJywgJ2VtYWNzJyk6CiAgICAgICAgIHJldHVybiBwbGFpbnBhZ2VyCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CkBAIC0xOTAxLDEwICsxOTEzLDEwIEBACiAKICAgICBkZWYgaW50cm8oc2VsZik6CiAgICAgICAgIHNlbGYub3V0cHV0LndyaXRlKCcnJwotV2VsY29tZSB0byBQeXRob24gJXMncyBoZWxwIHV0aWxpdHkhCitXZWxjb21lIHRvIFB5dGhvbiB7MH0ncyBoZWxwIHV0aWxpdHkhCiAKIElmIHRoaXMgaXMgeW91ciBmaXJzdCB0aW1lIHVzaW5nIFB5dGhvbiwgeW91IHNob3VsZCBkZWZpbml0ZWx5IGNoZWNrIG91dAotdGhlIHR1dG9yaWFsIG9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vZG9jcy5weXRob24ub3JnLyVzL3R1dG9yaWFsLy4KK3RoZSB0dXRvcmlhbCBvbiB0aGUgSW50ZXJuZXQgYXQgaHR0cDovL2RvY3MucHl0aG9uLm9yZy97MH0vdHV0b3JpYWwvLgogCiBFbnRlciB0aGUgbmFtZSBvZiBhbnkgbW9kdWxlLCBrZXl3b3JkLCBvciB0b3BpYyB0byBnZXQgaGVscCBvbiB3cml0aW5nCiBQeXRob24gcHJvZ3JhbXMgYW5kIHVzaW5nIFB5dGhvbiBtb2R1bGVzLiAgVG8gcXVpdCB0aGlzIGhlbHAgdXRpbGl0eSBhbmQKQEAgLTE5MTQsNyArMTkyNiw3IEBACiAibW9kdWxlcyIsICJrZXl3b3JkcyIsICJzeW1ib2xzIiwgb3IgInRvcGljcyIuICBFYWNoIG1vZHVsZSBhbHNvIGNvbWVzCiB3aXRoIGEgb25lLWxpbmUgc3VtbWFyeSBvZiB3aGF0IGl0IGRvZXM7IHRvIGxpc3QgdGhlIG1vZHVsZXMgd2hvc2UgbmFtZQogb3Igc3VtbWFyeSBjb250YWluIGEgZ2l2ZW4gc3RyaW5nIHN1Y2ggYXMgInNwYW0iLCB0eXBlICJtb2R1bGVzIHNwYW0iLgotJycnICUgdHVwbGUoW3N5cy52ZXJzaW9uWzozXV0qMikpCisnJycuZm9ybWF0KCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkpCiAKICAgICBkZWYgbGlzdChzZWxmLCBpdGVtcywgY29sdW1ucz00LCB3aWR0aD04MCk6CiAgICAgICAgIGl0ZW1zID0gbGlzdChzb3J0ZWQoaXRlbXMpKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5IGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CmluZGV4IGQ2ZjEzNjYuLmFhZjJjZTYgMTAwNjQ0Ci0tLSBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQorKysgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKQEAgLTEsNzkgKzEsMTI5NDkgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCi0jIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBKdW4gMjUgMTQ6MDg6NDQgMjAxNgotdG9waWNzID0geydhc3NlcnQnOiB1J1xuVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG5cblRoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiByZWZlclxudG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiIHVuZGVyXG5ub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgKGNvbW1hbmRcbmxpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yIGFuXG5hc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlIHRpbWUuICBOb3RlXG50aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZXhwcmVzc2lvblxudGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgb2YgdGhlXG5zdGFjayB0cmFjZS5cblxuQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAotICdhc3NpZ25tZW50JzogdSdcbkFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kIHRvXG5tb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG5cbiAgIGFzc2lnbm1lbnRfc3RtdCA6Oj0gKHRhcmdldF9saXN0ICI9IikrIChzdGFycmVkX2V4cHJlc3Npb24gfCB5aWVsZF9leHByZXNzaW9uKVxuICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuICAgdGFyZ2V0ICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3JcbiphdHRyaWJ1dGVyZWYqLCAqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG5cbkFuIGFzc2lnbm1lbnQgc3RhdGVtZW50IGV2YWx1YXRlcyB0aGUgZXhwcmVzc2lvbiBsaXN0IChyZW1lbWJlciB0aGF0XG50aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSBsYXR0ZXJcbnlpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byBlYWNoIG9mXG50aGUgdGFyZ2V0IGxpc3RzLCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlIHRhcmdldFxuKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gYXR0cmlidXRlXG5yZWZlcmVuY2UsIHN1YnNjcmlwdGlvbiBvciBzbGljaW5nKSwgdGhlIG11dGFibGUgb2JqZWN0IG11c3RcbnVsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyB2YWxpZGl0eSwgYW5kXG5tYXkgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSBhc3NpZ25tZW50IGlzIHVuYWNjZXB0YWJsZS4gIFRoZSBydWxlc1xub2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiB3aXRoIHRoZVxuZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGVcbmhpZXJhcmNoeSopLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkIGluXG5wYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuIGVtcHR5XG4gIGl0ZXJhYmxlLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQgaW4gcGFyZW50aGVzZXM6IFRoZSBvYmplY3RcbiAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGFyZ2V0cywgb3IgYVxuICBzaW5nbGUgdGFyZ2V0IGluIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlXG4gIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXRcbiAgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlXG4gIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbiAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlIGFuXG4gICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZVxuICAgIHRhcmdldCBsaXN0LCBtaW51cyBvbmUuICBUaGUgZmlyc3QgaXRlbXMgb2YgdGhlIGl0ZXJhYmxlIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvIHRoZVxuICAgIHRhcmdldHMgYWZ0ZXIgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgQSBsaXN0IG9mIHRoZSByZW1haW5pbmcgaXRlbXNcbiAgICBpbiB0aGUgaXRlcmFibGUgaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgKHRoZSBsaXN0XG4gICAgY2FuIGJlIGVtcHR5KS5cblxuICAqIEVsc2U6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZlxuICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmVcbiAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiIHN0YXRlbWVudFxuICAgIGluIHRoZSBjdXJyZW50IGNvZGUgYmxvY2s6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlXG4gICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG5cbiAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgIm5vbmxvY2FsIixcbiAgICByZXNwZWN0aXZlbHkuXG5cbiAgVGhlIG5hbWUgaXMgcmVib3VuZCBpZiBpdCB3YXMgYWxyZWFkeSBib3VuZC4gIFRoaXMgbWF5IGNhdXNlIHRoZVxuICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSB0byByZWFjaFxuICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyBkZXN0cnVjdG9yIChpZiBpdFxuICBoYXMgb25lKSB0byBiZSBjYWxsZWQuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluXG4gIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4gIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAiQXR0cmlidXRlRXJyb3IiKS5cblxuICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlXG4gIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTIGV4cHJlc3Npb24sXG4gICJhLngiIGNhbiBhY2Nlc3MgZWl0aGVyIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBvciAoaWYgbm8gaW5zdGFuY2VcbiAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiBpcyBhbHdheXNcbiAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgVGh1cywgdGhlXG4gIHR3byBvY2N1cnJlbmNlcyBvZiAiYS54IiBkbyBub3QgbmVjZXNzYXJpbHkgcmVmZXIgdG8gdGhlIHNhbWVcbiAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgYXR0cmlidXRlLCB0aGVcbiAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4gIGFzc2lnbm1lbnQ6XG5cbiAgICAgY2xhc3MgQ2xzOlxuICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuICAgICBpbnN0ID0gQ2xzKClcbiAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggYXMgM1xuXG4gIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byBhXG4gIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nXCdzIGtleSB0eXBlLFxuICBhbmQgdGhlIG1hcHBpbmcgaXMgdGhlbiBhc2tlZCB0byBjcmVhdGUgYSBrZXkvZGF0dW0gcGFpciB3aGljaCBtYXBzXG4gIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciByZXBsYWNlIGFuXG4gIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSBuZXdcbiAga2V5L3ZhbHVlIHBhaXIgKGlmIG5vIGtleSB3aXRoIHRoZSBzYW1lIHZhbHVlIGV4aXN0ZWQpLlxuXG4gIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgY2FsbGVkIHdpdGhcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzbGljaW5nOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3RcbiAgKHN1Y2ggYXMgYSBsaXN0KS4gIFRoZSBhc3NpZ25lZCBvYmplY3Qgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2JqZWN0XG4gIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kIGV4cHJlc3Npb25zIGFyZVxuICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kIHRoZVxuICBzZXF1ZW5jZVwncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gSWZcbiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3MgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlXG4gIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZCB0byByZXBsYWNlXG4gIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgbGVuZ3RoIG9mXG4gIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UsXG4gIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGUgdGFyZ2V0XG4gIHNlcXVlbmNlIGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5BbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwcyBiZXR3ZWVuXG50aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2ltdWx0YW5lb3VzXCcgKGZvclxuZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiB0aGVcbmNvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsIHNvbWV0aW1lc1xucmVzdWx0aW5nIGluIGNvbmZ1c2lvbi4gIEZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBwcm9ncmFtIHByaW50c1xuIlswLCAyXSI6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMiAgICAgICAgICMgaSBpcyB1cGRhdGVkLCB0aGVuIHhbaV0gaXMgdXBkYXRlZFxuICAgcHJpbnQoeClcblxuU2VlIGFsc286ICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG5cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2F0b20taWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgKE5hbWVzKVxuKioqKioqKioqKioqKioqKioqKlxuXG5BbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSBzZWN0aW9uXG4qSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKiBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uICpOYW1pbmdcbmFuZCBiaW5kaW5nKiBmb3IgZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG5cbldoZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSBhdG9tIHlpZWxkc1xudGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byBldmFsdWF0ZSBpdFxucmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgc2luZ2xlIHVuZGVyc2NvcmVcbmluc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgaWRlbnRpZmllciAiX19zcGFtIlxub2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byAiX0hhbV9fc3BhbSIuXG5UaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCBjb250ZXh0IGluIHdoaWNoXG50aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgZXh0cmVtZWx5IGxvbmdcbihsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgdHJ1bmNhdGlvbiBtYXlcbmhhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm9cbnRyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAotICdhdG9tLWxpdGVyYWxzJzogdSJcbkxpdGVyYWxzXG4qKioqKioqKlxuXG5QeXRob24gc3VwcG9ydHMgc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljXG5saXRlcmFsczpcblxuICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG5cbkV2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgKHN0cmluZyxcbmJ5dGVzLCBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggbnVtYmVyKSB3aXRoIHRoZSBnaXZlblxudmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiBmbG9hdGluZyBwb2ludFxuYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiAqTGl0ZXJhbHMqIGZvciBkZXRhaWxzLlxuXG5BbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlIHRoZVxub2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICBNdWx0aXBsZVxuZXZhbHVhdGlvbnMgb2YgbGl0ZXJhbHMgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZWl0aGVyIHRoZSBzYW1lXG5vY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgbWF5IG9idGFpblxudGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLlxuIiwKLSAnYXR0cmlidXRlLWFjY2Vzcyc6IHUnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgIngubmFtZSIpIGZvclxuY2xhc3MgaW5zdGFuY2VzLlxuXG5vYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSBhdHRyaWJ1dGUgaW4gdGhlXG4gICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgaXQgZm91bmRcbiAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS4gVGhpc1xuICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cblxuICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbSxcbiAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyBkb25lIGJvdGggZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiB3b3VsZCBoYXZlXG4gICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSB0aGF0IGF0XG4gICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieSBub3RcbiAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSAqU3BlY2lhbCBtZXRob2QgbG9va3VwKi5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgKnZhbHVlKiBpcyB0aGVcbiAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgbXVzdCBiZVxuICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgbGlzdCBhbmRcbiAgIHNvcnRzIGl0LlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiIG1vZHVsZSBhc1xuc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgdGhpc1xuYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljIGNsYXNzXG5hdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2Ugb2YgdGhlXG5naXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgZmlyc3RcbnBvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyBhdHRyaWJ1dGUgZm9yXG51bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4iX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCwgaXRcbmlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgImEueCIgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbiJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cblxuU3VwZXIgQmluZGluZ1xuICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgInN1cGVyKEIsXG4gICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlIGNsYXNzICJBIlxuICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yIHdpdGggdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAiX19kZWxldGVfXygpIi4gIElmIGl0XG5kb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbnRoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlIG9iamVjdFwnc1xuaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgIl9fc2V0X18oKSIgYW5kL29yXG4iX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgbmVpdGhlciwgaXQgaXNcbmEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzIGRlZmluZSBib3RoXG4iX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGhhdmUganVzdCB0aGVcbiJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiBhbmQgIl9fZ2V0X18oKSJcbmRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJblxuY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGluc3RhbmNlcy5cblxuUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAiY2xhc3NtZXRob2QoKSIpIGFyZVxuaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhIGRlc2NyaXB0b3IuXG5BY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSBwcm9wZXJ0eS5cblxuXG5fX3Nsb3RzX19cbj09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgY2xhc3NlcyBoYXZlIGEgZGljdGlvbmFyeSBmb3IgYXR0cmlidXRlXG5zdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3IGluc3RhbmNlXG52YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlXG5udW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBjbGFzc1xuZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbnZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0byBob2xkIGFcbnZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzIG5vdFxuY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxub2JqZWN0Ll9fc2xvdHNfX1xuXG4gICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4gICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAqX19zbG90c19fKlxuICAgcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZVxuICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yIGVhY2hcbiAgIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiBhbmQgInR1cGxlIi5cblxuKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4gIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyBtYXkgYmVcbiAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuXG4qICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZVxuICAqX19zbG90c19fKi5cbicsCi0gJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogdSdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllci4gIFRoaXNcbnByb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZC5cbklmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gIkF0dHJpYnV0ZUVycm9yIiBpc1xucmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgdHlwZSBhbmQgdmFsdWUgb2YgdGhlIG9iamVjdCBwcm9kdWNlZCBpc1xuZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgdGhlIHNhbWUgYXR0cmlidXRlXG5yZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKLSAnYXVnYXNzaWduJzogdSdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gKlByaW1hcmllcyogZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5Vbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlIGxlZnQtXG5oYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yIGV4YW1wbGUsICJhW2ldXG4rPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgcGVyZm9ybXNcbnRoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgKmNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMqIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgYXNzaWdubWVudHMuXG4nLAotICdiaW5hcnknOiB1J1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIkAiIG1fZXhwciB8XG4gICAgICAgICAgICAgIG1fZXhwciAiLy8iIHVfZXhwcnwgbV9leHByICIvIiB1X2V4cHIgfFxuICAgICAgICAgICAgICBtX2V4cHIgIiUiIHVfZXhwclxuICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG5cblRoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCBiZSBhblxuaW50ZWdlciBhbmQgdGhlIG90aGVyIG11c3QgYmUgYSBzZXF1ZW5jZS4gSW4gdGhlIGZvcm1lciBjYXNlLCB0aGVcbm51bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgdG9nZXRoZXIuXG5JbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlXG5yZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSAiQCIgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXhcbm11bHRpcGxpY2F0aW9uLiAgTm8gYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgb3BlcmF0b3IuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNS5cblxuVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxucXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCB3aGlsZVxuZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzIHRoYXRcbm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSBcJ2Zsb29yXCcgZnVuY3Rpb24gYXBwbGllZCB0byB0aGVcbnJlc3VsdC4gIERpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHRoZSAiWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi5cblxuVGhlICIlIiAobW9kdWxvKSBvcGVyYXRvciB5aWVsZHMgdGhlIHJlbWFpbmRlciBmcm9tIHRoZSBkaXZpc2lvbiBvZlxudGhlIGZpcnN0IGFyZ3VtZW50IGJ5IHRoZSBzZWNvbmQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIEEgemVybyByaWdodCBhcmd1bWVudCByYWlzZXMgdGhlXG4iWmVyb0RpdmlzaW9uRXJyb3IiIGV4Y2VwdGlvbi4gIFRoZSBhcmd1bWVudHMgbWF5IGJlIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBlLmcuLCAiMy4xNCUwLjciIGVxdWFscyAiMC4zNCIgKHNpbmNlICIzLjE0IiBlcXVhbHMgIjQqMC43ICtcbjAuMzQiLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoIHRoZSBzYW1lIHNpZ25cbmFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcmVzdWx0IGlzXG5zdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmQgb3BlcmFuZCBbMV0uXG5cblRoZSBmbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZSBmb2xsb3dpbmdcbmlkZW50aXR5OiAieCA9PSAoeC8veSkqeSArICh4JXkpIi4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlIGFsc29cbmNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZGl2bW9kKCkiOiAiZGl2bW9kKHgsIHkpID09XG4oeC8veSwgeCV5KSIuIFsyXS5cblxuSW4gYWRkaXRpb24gdG8gcGVyZm9ybWluZyB0aGUgbW9kdWxvIG9wZXJhdGlvbiBvbiBudW1iZXJzLCB0aGUgIiUiXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSJcbmZ1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhXG5mbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAotICdiaXR3aXNlJzogdSdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgIiYiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbmFyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cblxuVGhlICJ8IiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgKGluY2x1c2l2ZSkgT1Igb2YgaXRzIGFyZ3VtZW50cyxcbndoaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAotICdibHRpbi1jb2RlLW9iamVjdHMnOiB1J1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiBvYmplY3RzXG50aHJvdWdoIHRoZWlyICJfX2NvZGVfXyIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgImNvZGUiIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjKCkiIG9yICJldmFsKCkiICBidWlsdC1pbiBmdW5jdGlvbnMuXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6IHUnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbiJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgcHJvZHVjZXMgdGhlXG4iRWxsaXBzaXMiIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKLSAnYmx0aW4tbnVsbC1vYmplY3QnOiB1J1xuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShOb25lKSgpIiBwcm9kdWNlcyB0aGVcbnNhbWUgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCi0gJ2JsdGluLXR5cGUtb2JqZWN0cyc6IHUnXG5UeXBlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5UeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuIG9iamVjdFwncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiBkZWZpbmVzIG5hbWVzIGZvclxuYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuXG5UeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8Y2xhc3MgXCdpbnRcJz4iLlxuJywKLSAnYm9vbGVhbnMnOiB1J1xuQm9vbGVhbiBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKipcblxuICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4gICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuXG5JbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgYXJlXG51c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIGZhbHNlOiAiRmFsc2UiLCAiTm9uZSIsIG51bWVyaWMgemVybyBvZiBhbGwgdHlwZXMsIGFuZCBlbXB0eVxuc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG5kaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWRcbmFzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlIGJ5XG5wcm92aWRpbmcgYSAiX19ib29sX18oKSIgbWV0aG9kLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCIgeWllbGRzICJUcnVlIiBpZiBpdHMgYXJndW1lbnQgaXMgZmFsc2UsICJGYWxzZSJcbm90aGVyd2lzZS5cblxuVGhlIGV4cHJlc3Npb24gInggYW5kIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gInggb3IgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIHRydWUsIGl0cyB2YWx1ZVxuaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSBpc1xucmV0dXJuZWQuXG5cbihOb3RlIHRoYXQgbmVpdGhlciAiYW5kIiBub3IgIm9yIiByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvICJGYWxzZSIgYW5kICJUcnVlIiwgYnV0IHJhdGhlciByZXR1cm4gdGhlIGxhc3QgZXZhbHVhdGVkXG5hcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG4icyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byBjcmVhdGUgYVxubmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mIGl0c1xuYXJndW1lbnQgKGZvciBleGFtcGxlLCAibm90IFwnZm9vXCciIHByb2R1Y2VzICJGYWxzZSIgcmF0aGVyIHRoYW4gIlwnXCciLilcbicsCi0gJ2JyZWFrJzogdSdcblRoZSAiYnJlYWsiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcblxuImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxubG9vcC5cblxuSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICJlbHNlIlxuY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG5rZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cblxuV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5sb29wLlxuJywKLSAnY2FsbGFibGUtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCi0gJ2NhbGxzJzogdSdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhIHBvc3NpYmx5XG5lbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIgc3RhcnJlZF9hbmRfa2V5d29yZHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgfCBzdGFycmVkX2FuZF9rZXl3b3JkcyBbIiwiIGtleXdvcmRzX2FyZ3VtZW50c11cbiAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4gICBwb3NpdGlvbmFsX2FyZ3VtZW50cyA6Oj0gWyIqIl0gZXhwcmVzc2lvbiAoIiwiIFsiKiJdIGV4cHJlc3Npb24pKlxuICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiICIqIiBleHByZXNzaW9uIHwgIiwiIGtleXdvcmRfaXRlbSkqXG4gICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBrZXl3b3JkX2l0ZW0gfCAiKioiIGV4cHJlc3Npb24pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQW4gb3B0aW9uYWwgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYW5kXG5rZXl3b3JkIGFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBvYmplY3QgKHVzZXItZGVmaW5lZFxuZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgY2xhc3Ncbm9iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbiJfX2NhbGxfXygpIiBtZXRob2QgYXJlIGNhbGxhYmxlKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbipGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsICpwYXJhbWV0ZXIqIGxpc3RzLlxuXG5JZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcHJlc2VudCwgdGhleSBhcmUgZmlyc3QgY29udmVydGVkIHRvXG5wb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgc2xvdHMgaXNcbmNyZWF0ZWQgZm9yIHRoZSBmb3JtYWwgcGFyYW1ldGVycy4gIElmIHRoZXJlIGFyZSBOIHBvc2l0aW9uYWxcbmFyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbmtleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuY29ycmVzcG9uZGluZyBzbG90IChpZiB0aGUgaWRlbnRpZmllciBpcyB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgZm9ybWFsXG5wYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90IGlzXG5hbHJlYWR5IGZpbGxlZCwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxudmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiB0aGVcbmV4cHJlc3Npb24gaXMgIk5vbmUiLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgIlR5cGVFcnJvciJcbmV4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZCBzbG90cyBpcyB1c2VkIGFzXG50aGUgYXJndW1lbnQgbGlzdCBmb3IgdGhlIGNhbGwuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbmJ1aWx0LWluIGZ1bmN0aW9ucyB3aG9zZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZG8gbm90IGhhdmUgbmFtZXMsIGV2ZW5cbmlmIHRoZXkgYXJlIFwnbmFtZWRcJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG50aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSBjYXNlXG5mb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgIlB5QXJnX1BhcnNlVHVwbGUoKSIgdG8gcGFyc2VcbnRoZWlyIGFyZ3VtZW50cy5cblxuSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsIHBhcmFtZXRlclxuc2xvdHMsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCBmb3JtYWxcbnBhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzKS5cblxuSWYgYW55IGtleXdvcmQgYXJndW1lbnQgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhIGZvcm1hbCBwYXJhbWV0ZXJcbm5hbWUsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggIipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLCAiZXhwcmVzc2lvbiJcbm11c3QgZXZhbHVhdGUgdG8gYW4gKml0ZXJhYmxlKi4gIEVsZW1lbnRzIGZyb20gdGhlc2UgaXRlcmFibGVzIGFyZVxudHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIEZvciB0aGUgY2FsbFxuImYoeDEsIHgyLCAqeSwgeDMsIHg0KSIsIGlmICp5KiBldmFsdWF0ZXMgdG8gYSBzZXF1ZW5jZSAqeTEqLCAuLi4sXG4qeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTSs0IHBvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosXG4qeDIqLCAqeTEqLCAuLi4sICp5TSosICp4MyosICp4NCouXG5cbkEgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgKmJlZm9yZSpcbnRoZSBrZXl3b3JkIGFyZ3VtZW50cyAoYW5kIGFueSAiKipleHByZXNzaW9uIiBhcmd1bWVudHMgLS0gc2VlIGJlbG93KS5cblNvOlxuXG4gICA+Pj4gZGVmIGYoYSwgYik6XG4gICAuLi4gICAgIHByaW50KGEsIGIpXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheFxudG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzIG5vdFxuYXJpc2UuXG5cbklmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbiJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgKm1hcHBpbmcqLCB0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlXG50cmVhdGVkIGFzIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMuICBJZiBhIGtleXdvcmQgaXMgYWxyZWFkeVxucHJlc2VudCAoYXMgYW4gZXhwbGljaXQga2V5d29yZCBhcmd1bWVudCwgb3IgZnJvbSBhbm90aGVyIHVucGFja2luZyksXG5hICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5cbkZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNTogRnVuY3Rpb24gY2FsbHMgYWNjZXB0IGFueSBudW1iZXIgb2YgIioiIGFuZFxuIioqIiB1bnBhY2tpbmdzLCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBtYXkgZm9sbG93IGl0ZXJhYmxlIHVucGFja2luZ3NcbigiKiIpLCBhbmQga2V5d29yZCBhcmd1bWVudHMgbWF5IGZvbGxvdyBkaWN0aW9uYXJ5IHVucGFja2luZ3MgKCIqKiIpLlxuT3JpZ2luYWxseSBwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyBhblxuZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbmNhbGxhYmxlIG9iamVjdC5cblxuSWYgaXQgaXMtLS1cblxuYSB1c2VyLWRlZmluZWQgZnVuY3Rpb246XG4gICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgdGhlXG4gICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uXG4gICAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4gICBzdGF0ZW1lbnQsIHRoaXMgc3BlY2lmaWVzIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuXG5cbmEgYnVpbHQtaW4gZnVuY3Rpb24gb3IgbWV0aG9kOlxuICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSAqQnVpbHQtaW4gRnVuY3Rpb25zKiBmb3JcbiAgIHRoZSBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiB0aGVcbiAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCi0gJ2NsYXNzJzogdSdcbkNsYXNzIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uICIic2VsZi5uYW1lIiIsXG5hbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgbmFtZVxud2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgZGVmYXVsdHNcbmZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuIGxlYWQgdG9cbnVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG52YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4gIENsYXNzIERlY29yYXRvcnNcbicsCi0gJ2NvbXBhcmlzb25zJzogdSdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblxuVmFsdWUgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBkbyBub3QgbmVlZCB0byBoYXZlIHRoZSBzYW1lIHR5cGUuXG5cbkNoYXB0ZXIgKk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMqIHN0YXRlcyB0aGF0IG9iamVjdHMgaGF2ZSBhIHZhbHVlXG4oaW4gYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhXG5yYXRoZXIgYWJzdHJhY3Qgbm90aW9uIGluIFB5dGhvbjogRm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIGNhbm9uaWNhbFxuYWNjZXNzIG1ldGhvZCBmb3IgYW4gb2JqZWN0XCdzIHZhbHVlLiAgQWxzbywgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnRcbnRoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBzaG91bGQgYmUgY29uc3RydWN0ZWQgaW4gYSBwYXJ0aWN1bGFyIHdheSxcbmUuZy4gY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9yc1xuaW1wbGVtZW50IGEgcGFydGljdWxhciBub3Rpb24gb2Ygd2hhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzLiAgT25lXG5jYW4gdGhpbmsgb2YgdGhlbSBhcyBkZWZpbmluZyB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGluZGlyZWN0bHksIGJ5XG5tZWFucyBvZiB0aGVpciBjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuXG5CZWNhdXNlIGFsbCB0eXBlcyBhcmUgKGRpcmVjdCBvciBpbmRpcmVjdCkgc3VidHlwZXMgb2YgIm9iamVjdCIsIHRoZXlcbmluaGVyaXQgdGhlIGRlZmF1bHQgY29tcGFyaXNvbiBiZWhhdmlvciBmcm9tICJvYmplY3QiLiAgVHlwZXMgY2FuXG5jdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggY29tcGFyaXNvblxubWV0aG9kcyogbGlrZSAiX19sdF9fKCkiLCBkZXNjcmliZWQgaW4gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgaXMgYmFzZWRcbm9uIHRoZSBpZGVudGl0eSBvZiB0aGUgb2JqZWN0cy4gIEhlbmNlLCBlcXVhbGl0eSBjb21wYXJpc29uIG9mXG5pbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSByZXN1bHRzIGluIGVxdWFsaXR5LCBhbmQgZXF1YWxpdHlcbmNvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuaW5lcXVhbGl0eS4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoZSBkZXNpcmUgdGhhdFxuYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09IHkiKS5cblxuQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90IHByb3ZpZGVkO1xuYW4gYXR0ZW1wdCByYWlzZXMgIlR5cGVFcnJvciIuICBBIG1vdGl2YXRpb24gZm9yIHRoaXMgZGVmYXVsdCBiZWhhdmlvclxuaXMgdGhlIGxhY2sgb2YgYSBzaW1pbGFyIGludmFyaWFudCBhcyBmb3IgZXF1YWxpdHkuXG5cblRoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0IGluc3RhbmNlcyB3aXRoXG5kaWZmZXJlbnQgaWRlbnRpdGllcyBhcmUgYWx3YXlzIHVuZXF1YWwsIG1heSBiZSBpbiBjb250cmFzdCB0byB3aGF0XG50eXBlcyB3aWxsIG5lZWQgdGhhdCBoYXZlIGEgc2Vuc2libGUgZGVmaW5pdGlvbiBvZiBvYmplY3QgdmFsdWUgYW5kXG52YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSB0aGVpclxuY29tcGFyaXNvbiBiZWhhdmlvciwgYW5kIGluIGZhY3QsIGEgbnVtYmVyIG9mIGJ1aWx0LWluIHR5cGVzIGhhdmUgZG9uZVxudGhhdC5cblxuVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgbW9zdFxuaW1wb3J0YW50IGJ1aWx0LWluIHR5cGVzLlxuXG4qIE51bWJlcnMgb2YgYnVpbHQtaW4gbnVtZXJpYyB0eXBlcyAoKk51bWVyaWMgVHlwZXMgLS0tIGludCwgZmxvYXQsXG4gIGNvbXBsZXgqKSBhbmQgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdHlwZXMgImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4gICJkZWNpbWFsLkRlY2ltYWwiIGNhbiBiZSBjb21wYXJlZCB3aXRoaW4gYW5kIGFjcm9zcyB0aGVpciB0eXBlcyxcbiAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgb3JkZXJcbiAgY29tcGFyaXNvbi4gIFdpdGhpbiB0aGUgbGltaXRzIG9mIHRoZSB0eXBlcyBpbnZvbHZlZCwgdGhleSBjb21wYXJlXG4gIG1hdGhlbWF0aWNhbGx5IChhbGdvcml0aG1pY2FsbHkpIGNvcnJlY3Qgd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi5cblxuICBUaGUgbm90LWEtbnVtYmVyIHZhbHVlcyAiZmxvYXQoXCdOYU5cJykiIGFuZCAiRGVjaW1hbChcJ05hTlwnKSIgYXJlXG4gIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgdHJ1ZSkgYnV0XG4gIGFyZSBub3QgZXF1YWwgdG8gdGhlbXNlbHZlcyAoInggPT0geCIgaXMgZmFsc2UpLiAgQWRkaXRpb25hbGx5LFxuICBjb21wYXJpbmcgYW55IG51bWJlciB0byBhIG5vdC1hLW51bWJlciB2YWx1ZSB3aWxsIHJldHVybiAiRmFsc2UiLlxuICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpIDwgMyIgd2lsbFxuICByZXR1cm4gIkZhbHNlIi5cblxuKiBCaW5hcnkgc2VxdWVuY2VzIChpbnN0YW5jZXMgb2YgImJ5dGVzIiBvciAiYnl0ZWFycmF5IikgY2FuIGJlXG4gIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4gIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIChpbnN0YW5jZXMgb2YgInN0ciIpIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlXG4gIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAib3JkKCkiKSBvZiB0aGVpciBjaGFyYWN0ZXJzLiBbM11cblxuICBTdHJpbmdzIGFuZCBiaW5hcnkgc2VxdWVuY2VzIGNhbm5vdCBiZSBkaXJlY3RseSBjb21wYXJlZC5cblxuKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiBiZVxuICBjb21wYXJlZCBvbmx5IHdpdGhpbiBlYWNoIG9mIHRoZWlyIHR5cGVzLCB3aXRoIHRoZSByZXN0cmljdGlvbiB0aGF0XG4gIHJhbmdlcyBkbyBub3Qgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uLiAgRXF1YWxpdHkgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiBhY3Jvc3NcbiAgdGhlc2UgdHlwZXMgcmFpc2VzICJUeXBlRXJyb3IiLlxuXG4gIFNlcXVlbmNlcyBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgd2hlcmVieSByZWZsZXhpdml0eSBvZiB0aGUgZWxlbWVudHMgaXNcbiAgZW5mb3JjZWQuXG5cbiAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiBjb2xsZWN0aW9uc1xuICBhc3N1bWVzIHRoYXQgZm9yIGEgY29sbGVjdGlvbiBlbGVtZW50ICJ4IiwgInggPT0geCIgaXMgYWx3YXlzIHRydWUuXG4gIEJhc2VkIG9uIHRoYXQgYXNzdW1wdGlvbiwgZWxlbWVudCBpZGVudGl0eSBpcyBjb21wYXJlZCBmaXJzdCwgYW5kXG4gIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgZWxlbWVudHMuICBUaGlzXG4gIGFwcHJvYWNoIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgYSBzdHJpY3QgZWxlbWVudCBjb21wYXJpc29uXG4gIHdvdWxkLCBpZiB0aGUgY29tcGFyZWQgZWxlbWVudHMgYXJlIHJlZmxleGl2ZS4gIEZvciBub24tcmVmbGV4aXZlXG4gIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuICBjb21wYXJpc29uLCBhbmQgbWF5IGJlIHN1cnByaXNpbmc6ICBUaGUgbm9uLXJlZmxleGl2ZSBub3QtYS1udW1iZXJcbiAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gYmVoYXZpb3Igd2hlblxuICB1c2VkIGluIGEgbGlzdDpcblxuICAgICA+Pj4gbmFuID0gZmxvYXQoXCdOYU5cJylcbiAgICAgPj4+IG5hbiBpcyBuYW5cbiAgICAgVHJ1ZVxuICAgICA+Pj4gbmFuID09IG5hblxuICAgICBGYWxzZSAgICAgICAgICAgICAgICAgPC0tIHRoZSBkZWZpbmVkIG5vbi1yZWZsZXhpdmUgYmVoYXZpb3Igb2YgTmFOXG4gICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuICAgICBUcnVlICAgICAgICAgICAgICAgICAgPC0tIGxpc3QgZW5mb3JjZXMgcmVmbGV4aXZpdHkgYW5kIHRlc3RzIGlkZW50aXR5IGZpcnN0XG5cbiAgTGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmlzb24gYmV0d2VlbiBidWlsdC1pbiBjb2xsZWN0aW9ucyB3b3JrcyBhc1xuICBmb2xsb3dzOlxuXG4gICogRm9yIHR3byBjb2xsZWN0aW9ucyB0byBjb21wYXJlIGVxdWFsLCB0aGV5IG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgICB0eXBlLCBoYXZlIHRoZSBzYW1lIGxlbmd0aCwgYW5kIGVhY2ggcGFpciBvZiBjb3JyZXNwb25kaW5nXG4gICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICgxLDIpIiBpc1xuICAgIGZhbHNlIGJlY2F1c2UgdGhlIHR5cGUgaXMgbm90IHRoZSBzYW1lKS5cblxuICAqIENvbGxlY3Rpb25zIHRoYXQgc3VwcG9ydCBvcmRlciBjb21wYXJpc29uIGFyZSBvcmRlcmVkIHRoZSBzYW1lXG4gICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9IFsxLDIseV0iXG4gICAgaGFzIHRoZSBzYW1lIHZhbHVlIGFzICJ4IDw9IHkiKS4gIElmIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXNcbiAgICBub3QgZXhpc3QsIHRoZSBzaG9ydGVyIGNvbGxlY3Rpb24gaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsXG4gICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG5cbiogTWFwcGluZ3MgKGluc3RhbmNlcyBvZiAiZGljdCIpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleVxuICBoYXZlIGVxdWFsICooa2V5LCB2YWx1ZSkqIHBhaXJzLiBFcXVhbGl0eSBjb21wYXJpc29uIG9mIHRoZSBrZXlzIGFuZFxuICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cblxuICBPcmRlciBjb21wYXJpc29ucyAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSByYWlzZSAiVHlwZUVycm9yIi5cblxuKiBTZXRzIChpbnN0YW5jZXMgb2YgInNldCIgb3IgImZyb3plbnNldCIpIGNhbiBiZSBjb21wYXJlZCB3aXRoaW5cbiAgYW5kIGFjcm9zcyB0aGVpciB0eXBlcy5cblxuICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgc3VwZXJzZXRcbiAgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKGZvciBleGFtcGxlLFxuICB0aGUgdHdvIHNldHMgInsxLDJ9IiBhbmQgInsyLDN9IiBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZ1xuICAoZm9yIGV4YW1wbGUsICJtaW4oKSIsICJtYXgoKSIsIGFuZCAic29ydGVkKCkiIHByb2R1Y2UgdW5kZWZpbmVkXG4gIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cblxuICBDb21wYXJpc29uIG9mIHNldHMgZW5mb3JjZXMgcmVmbGV4aXZpdHkgb2YgaXRzIGVsZW1lbnRzLlxuXG4qIE1vc3Qgb3RoZXIgYnVpbHQtaW4gdHlwZXMgaGF2ZSBubyBjb21wYXJpc29uIG1ldGhvZHMgaW1wbGVtZW50ZWQsXG4gIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuXG5Vc2VyLWRlZmluZWQgY2xhc3NlcyB0aGF0IGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIHNob3VsZFxuZm9sbG93IHNvbWUgY29uc2lzdGVuY3kgcnVsZXMsIGlmIHBvc3NpYmxlOlxuXG4qIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsIGlkZW50aWNhbFxuICBvYmplY3RzIHNob3VsZCBjb21wYXJlIGVxdWFsOlxuXG4gICAgICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSJcblxuKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgZm9sbG93aW5nXG4gIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgInkgPT0geCJcblxuICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcblxuICAgICAieCA8IHkiIGFuZCAieSA+IHgiXG5cbiAgICAgInggPD0geSIgYW5kICJ5ID49IHgiXG5cbiogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAobm9uLWV4aGF1c3RpdmUpXG4gIGV4YW1wbGVzIGlsbHVzdHJhdGUgdGhhdDpcblxuICAgICAieCA+IHkgYW5kIHkgPiB6IiBpbXBsaWVzICJ4ID4geiJcblxuICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG5cbiogSW52ZXJzZSBjb21wYXJpc29uIHNob3VsZCByZXN1bHQgaW4gdGhlIGJvb2xlYW4gbmVnYXRpb24uIEluIG90aGVyXG4gIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcblxuICAgICAieCA9PSB5IiBhbmQgIm5vdCB4ICE9IHkiXG5cbiAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgICAgInggPiB5IiBhbmQgIm5vdCB4IDw9IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG5cbiAgVGhlIGxhc3QgdHdvIGV4cHJlc3Npb25zIGFwcGx5IHRvIHRvdGFsbHkgb3JkZXJlZCBjb2xsZWN0aW9ucyAoZS5nLlxuICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuICAidG90YWxfb3JkZXJpbmcoKSIgZGVjb3JhdG9yLlxuXG5QeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgdGhlXG5ub3QtYS1udW1iZXIgdmFsdWVzIGFyZSBhbiBleGFtcGxlIGZvciBub3QgZm9sbG93aW5nIHRoZXNlIHJ1bGVzLlxuXG5cbk1lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG5cblxuSWRlbnRpdHkgY29tcGFyaXNvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiBpc1xudHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG55aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiB1J1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsIGNvbnRyb2xcbmZsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXBcbmNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgYWxsb3dzIHRoZVxuZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYSBibG9jayBvZlxuY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5IGNvbXBvdW5kXG5zdGF0ZW1lbnRzLlxuXG5BIGNvbXBvdW5kIHN0YXRlbWVudCBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2YgYSBzdWl0ZSBjYW4gY29udGFpbiBuZXN0ZWQgY29tcG91bmRcbnN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuXCd0IGJlXG5jbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbiJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG5cbiAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuXG5TdW1tYXJpemluZzpcblxuICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aGlsZV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4gICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX3dpdGhfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4gICBzdWl0ZSAgICAgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IE5FV0xJTkUgSU5ERU5UIHN0YXRlbWVudCsgREVERU5UXG4gICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbiAgIHN0bXRfbGlzdCAgICAgOjo9IHNpbXBsZV9zdG10ICgiOyIgc2ltcGxlX3N0bXQpKiBbIjsiXVxuXG5Ob3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkIGJ5IGFcbiJERURFTlQiLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzIGJlZ2luXG53aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyAiZWxzZSJcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gYnlcbnJlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgImlmIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PVxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG5cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzIGFuXG5leHByZXNzaW9uIGlzIHRydWU6XG5cbiAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCBleGVjdXRlcyB0aGVcbmZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCB0aW1lXG5pdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWRcbmFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgYmFja1xudG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgImZvciIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09XG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG5cblxuVGhlICJ0cnkiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PVxuXG5UaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuIG5vXG5leGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yIGFuXG5leGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCBjbGF1c2VzXG5pbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuIGV4cHJlc3Npb24tXG5sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbmV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG5pcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG53aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSBleGNlcHRpb25cbm9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgcmFpc2VkXG50aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZlxucHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4ic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlXG5leGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG5wcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbnJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxubm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuXG5JZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAidHJ5IlxuY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmIGFuXG5leGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gIElmXG50aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICJmaW5hbGx5IlxuY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbmlzIGRpc2NhcmRlZDpcblxuICAgPj4+IGRlZiBmKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIDEvMFxuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4gICAuLi5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cblxuV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlIGlzXG5hbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsIGluXG50aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cblRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG5zdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbiJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSB0aGVcbmxhc3Qgb25lIGV4ZWN1dGVkOlxuXG4gICA+Pj4gZGVmIGZvbygpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCd0cnlcJ1xuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnZmluYWxseVwnXG4gICAuLi5cbiAgID4+PiBmb28oKVxuICAgXCdmaW5hbGx5XCdcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG5cblRoZSAid2l0aCIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICB8ICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqIFsiLCIgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzXG5pcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHdoZW4gdGhlXG5mdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpc1xuZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtXG5jb21wdXRlZCIgdmFsdWUgaXMgdXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudFxudG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhXG5saXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnlcbmFwcGVuZGluZyBhbiBpdGVtIHRvIGEgbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC5cblRoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZVxuIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGVcbmZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiIiKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnlcbmV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlXG5mb3JtICIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3IgIiIqaWRlbnRpZmllciIiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICIiOiBleHByZXNzaW9uIiIgZm9sbG93aW5nXG50aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiB0aG9zZVxub2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgaGF2ZVxuInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiIi0+IGV4cHJlc3Npb24iIiBhZnRlciB0aGUgcGFyYW1ldGVyXG5saXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgYXJlXG5ldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zIG1heVxuYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlLlxuVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbmZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXMgdmFsdWVzIG9mIGFcbmRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGUgIl9fYW5ub3RhdGlvbnNfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbmV4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiImRlZiIiXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbmZ1bmN0aW9uIHRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkXG5pbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcblxuICAgICBUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgZnVuY3Rpb24gYW5ub3RhdGlvbnMuXG5cblxuQ2xhc3MgZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09XG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuXG5cbkNvcm91dGluZXNcbj09PT09PT09PT1cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5cbkNvcm91dGluZSBmdW5jdGlvbiBkZWZpbml0aW9uXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mdW5jZGVmIDo6PSBbZGVjb3JhdG9yc10gImFzeW5jIiAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG5cbkV4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0IG1hbnlcbnBvaW50cyAoc2VlICpjb3JvdXRpbmUqKS4gIEluIHRoZSBib2R5IG9mIGEgY29yb3V0aW5lLCBhbnkgImF3YWl0IiBhbmRcbiJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiIGV4cHJlc3Npb25zLFxuImFzeW5jIGZvciIgYW5kICJhc3luYyB3aXRoIiBjYW4gb25seSBiZSB1c2VkIGluIGNvcm91dGluZSBib2RpZXMuXG5cbkZ1bmN0aW9ucyBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4IGFyZSBhbHdheXMgY29yb3V0aW5lXG5mdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIga2V5d29yZHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuY29yb3V0aW5lcy5cblxuQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcblxuICAgYXN5bmMgZGVmIGZ1bmMocGFyYW0xLCBwYXJhbTIpOlxuICAgICAgIGRvX3N0dWZmKClcbiAgICAgICBhd2FpdCBzb21lX2Nvcm91dGluZSgpXG5cblxuVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY19mb3Jfc3RtdCA6Oj0gImFzeW5jIiBmb3Jfc3RtdFxuXG5BbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzXG4qaXRlciogaW1wbGVtZW50YXRpb24sIGFuZCAqYXN5bmNocm9ub3VzIGl0ZXJhdG9yKiBjYW4gY2FsbFxuYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG5cblRoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgYWxsb3dzIGNvbnZlbmllbnQgaXRlcmF0aW9uIG92ZXJcbmFzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG5cblRoZSBmb2xsb3dpbmcgY29kZTpcblxuICAgYXN5bmMgZm9yIFRBUkdFVCBpbiBJVEVSOlxuICAgICAgIEJMT0NLXG4gICBlbHNlOlxuICAgICAgIEJMT0NLMlxuXG5JcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcblxuICAgaXRlciA9IChJVEVSKVxuICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4gICBydW5uaW5nID0gVHJ1ZVxuICAgd2hpbGUgcnVubmluZzpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIFRBUkdFVCA9IGF3YWl0IHR5cGUoaXRlcikuX19hbmV4dF9fKGl0ZXIpXG4gICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjpcbiAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4gICAgICAgZWxzZTpcbiAgICAgICAgICAgQkxPQ0tcbiAgIGVsc2U6XG4gICAgICAgQkxPQ0syXG5cblNlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG5cbkl0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIGZvciIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5cblRoZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gICBhc3luY193aXRoX3N0bXQgOjo9ICJhc3luYyIgd2l0aF9zdG10XG5cbkFuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgYWJsZVxudG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLlxuXG5UaGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4gICAgICAgQkxPQ0tcblxuSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG5cbiAgIG1nciA9IChFWFBSKVxuICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4gICBhZW50ZXIgPSB0eXBlKG1ncikuX19hZW50ZXJfXyhtZ3IpXG4gICBleGMgPSBUcnVlXG5cbiAgIFZBUiA9IGF3YWl0IGFlbnRlclxuICAgdHJ5OlxuICAgICAgIEJMT0NLXG4gICBleGNlcHQ6XG4gICAgICAgaWYgbm90IGF3YWl0IGFleGl0KG1nciwgKnN5cy5leGNfaW5mbygpKTpcbiAgICAgICAgICAgcmFpc2VcbiAgIGVsc2U6XG4gICAgICAgYXdhaXQgYWV4aXQobWdyLCBOb25lLCBOb25lLCBOb25lKVxuXG5TZWUgYWxzbyAiX19hZW50ZXJfXygpIiBhbmQgIl9fYWV4aXRfXygpIiBmb3IgZGV0YWlscy5cblxuSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgYW5cbiJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuXG5TZWUgYWxzbzogKipQRVAgNDkyKiogLSBDb3JvdXRpbmVzIHdpdGggYXN5bmMgYW5kIGF3YWl0IHN5bnRheFxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbiAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4gICAgZXhjZXB0aW9uLiBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbiAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuICAgICJicmVhayIgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbiAgICBmdW5jdGlvbiBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzICJfX2RvY19fIlxuICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgIl9fZG9jX18iIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCi0gJ2NvbnRleHQtbWFuYWdlcnMnOiB1J1xuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgY29udGV4dCBtYW5hZ2VyXG5oYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZSBjb250ZXh0XG5mb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG5pbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAqVGhlIHdpdGhcbnN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286ICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG4nLAotICdjb250aW51ZSc6IHUnXG5UaGUgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbiJjb250aW51ZSIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgImZpbmFsbHkiXG5jbGF1c2Ugd2l0aGluIHRoYXQgbG9vcC4gIEl0IGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGN5Y2xlIG9mIHRoZVxubmVhcmVzdCBlbmNsb3NpbmcgbG9vcC5cblxuV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbiJmaW5hbGx5IiBjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKLSAnY29udmVyc2lvbnMnOiB1J1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzIGZvbGxvd3M6XG5cbiogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyBjb252ZXJ0ZWQgdG9cbiAgY29tcGxleDtcblxuKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGZsb2F0aW5nIHBvaW50IG51bWJlciwgdGhlXG4gIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGFzIGFcbmxlZnQgYXJndW1lbnQgdG8gdGhlIFwnJVwnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgdGhlaXIgb3duXG5jb252ZXJzaW9uIGJlaGF2aW9yLlxuJywKLSAnY3VzdG9taXphdGlvbic6IHUnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAiX19uZXdfXygpIiBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHkgYW5cbiAgIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4gICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAiX19uZXdfXygpIi5cblxuICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAiX19uZXdfXygpIiksIGJ1dFxuICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCwgaWZcbiAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGVcbiAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cblxuICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gY29uc3RydWN0aW5nXG4gICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gY3VzdG9taXNlXG4gICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgZG9pbmcgc29cbiAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiBtZXRob2QsIHRoZVxuICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXRcbiAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2UuXG4gICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgdGhlXG4gICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgbGF0dGVyIGlzXG4gICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lIGNvbW1vblxuICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3QgZnJvbVxuICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiBvYmplY3RzIChlLmcuLFxuICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBwYXJlbnQgYW5kXG4gICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgb2ZcbiAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSByZWZlcmVuY2VcbiAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gdW5oYW5kbGVkXG4gICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgdGhpcmQgY2FuXG4gICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuIHRoZVxuICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyXG4gICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICAgYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbiAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZ1xuICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0b1xuICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkIGluXG4gICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZVxuICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICJfX2RlbF9fKCkiXG4gICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZ1xuICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpc1xuICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZFxuICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSxcbiAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpc1xuICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0b1xuICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgIl9fcmVwcl9fKCkiIGJ1dFxuICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAiaW5mb3JtYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImZvcm1hdCgpIiBhbmRcbiAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgc3RyaW5nXG4gICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAqc3RyaW5nKlxuICAgb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0IHRoZXJlIGlzIG5vXG4gICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAib2JqZWN0IlxuICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICAic3RyLmZvcm1hdCgpIiBtZXRob2Qgb2YgY2xhc3MgInN0ciIpIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYVxuICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG9cbiAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbFxuICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGFcbiAgIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiBpdHNlbGZcbiAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgInguX19sZV9fKHkpIixcbiAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbiAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kIGludmVydHMgdGhlXG4gICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgaW1wbGllZFxuICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciBleGFtcGxlLCB0aGVcbiAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvIGF1dG9tYXRpY2FsbHlcbiAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290IG9wZXJhdGlvbiwgc2VlXG4gICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG4gICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gSWYgdGhlXG4gICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGFcbiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzIHR5cGUsIHRoZVxuICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksIG90aGVyd2lzZSB0aGVcbiAgIGxlZnQgb3BlcmFuZFwncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyBpcyBub3RcbiAgIGNvbnNpZGVyZWQuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zIG9uIG1lbWJlcnNcbiAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgImRpY3QiLlxuICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5XG4gICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzXG4gICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2hcbiAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW5cbiAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuIG9iamVjdFwnc1xuICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICJQeV9zc2l6ZV90Ii4gIFRoaXNcbiAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAzMi1iaXRcbiAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCBpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4gICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uIGFsbFxuICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICJweXRob24gLWNcbiAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG4nLAotICdkZWJ1Z2dlcic6IHUnXG4icGRiIiAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKipTb3VyY2UgY29kZToqKiBMaWIvcGRiLnB5XG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG1vZHVsZSAicGRiIiBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG4iUGRiIi4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieSByZWFkaW5nXG50aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgImNtZCIuXG5cblRoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtIHVuZGVyXG5jb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgInJlYWRsaW5lIiBtb2R1bGUgaXNcbmF2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50IGdsb2JhbFxuYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzIGFyZ3VtZW50cyBvZiB0aGUgInAiIGNvbW1hbmQuXG5cbiJwZGIucHkiIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy4gIEZvclxuZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgZXhlY3V0ZXNcbmNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgIi5wZGJyYyIgZmlsZSwgc2VlICpEZWJ1Z2dlciBDb21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjb250aW51ZSIgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91IGNhblxuICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgIl9fbWFpbl9fIiBpcyB1c2VkLiAgKFNlZSB0aGVcbiAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgInJ1bigpIi5cblxucGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG5cbiAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgc3RyaW5nKVxuICAgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiAgV2hlbiAicnVuY2FsbCgpIiByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG5UaGUgInJ1bioiIGZ1bmN0aW9ucyBhbmQgInNldF90cmFjZSgpIiBhcmUgYWxpYXNlcyBmb3IgaW5zdGFudGlhdGluZ1xudGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSB3YW50XG50byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgIlBkYiIgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoIGlzIHNlbnRcbiAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyAiQ3RybC1DIiBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSBhXG4gICAiY29udGludWUiIGNvbW1hbmQuIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlclxuICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZVxuICAgU0lHSU5UIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuImgoZWxwKSIgbWVhbnMgdGhhdCBlaXRoZXIgImgiIG9yICJoZWxwIiBjYW4gYmUgdXNlZCB0byBlbnRlciB0aGUgaGVscFxuY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuQXJndW1lbnRzIHRvIGNvbW1hbmRzIG11c3QgYmUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UgKHNwYWNlcyBvclxudGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAoIltdIikgaW5cbnRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKCJ8IikuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSBsaXN0ZWQuXG5cbkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuXCd0IHJlY29nbml6ZSBhcmUgYXNzdW1lZCB0byBiZSBQeXRob25cbnN0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQuICBQeXRob24gc3RhdGVtZW50cyBjYW4gYWxzbyBiZSBwcmVmaXhlZCB3aXRoIGFuIGV4Y2xhbWF0aW9uXG5wb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnkgIjs7Ii5cbihBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgY29tbWFuZHNcbmluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyBpbnRlbGxpZ2VuY2UgaXNcbmFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdCBhdCB0aGUgZmlyc3RcbiI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cblxuSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiB0aGVcbmN1cnJlbnQgZGlyZWN0b3J5LCBpdCBpcyByZWFkIGluIGFuZCBleGVjdXRlZCBhcyBpZiBpdCBoYWQgYmVlbiB0eXBlZFxuYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgYWxpYXNlcy4gIElmXG5ib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0IGFuZFxuYWxpYXNlcyBkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzICJjb250aW51ZSIgb3IgIm5leHQiLiAgUHJldmlvdXNseSwgdGhlc2VcbmNvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG5cbmgoZWxwKSBbY29tbWFuZF1cblxuICAgV2l0aG91dCBhcmd1bWVudCwgcHJpbnQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGNvbW1hbmRzLiAgV2l0aCBhXG4gICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgcGRiIlxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgInBkYiJcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgImhlbHBcbiAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gInN5cy5wYXRoIi4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciAiYnJlYWsiLlxuXG5jbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzIGF0XG4gICB0aGlzIGxpbmUuIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyXG4gICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0IGZpcnN0XG4gICBhc2sgY29uZmlybWF0aW9uKS5cblxuZGlzYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbiAgIGJyZWFrcG9pbnQgbnVtYmVycy4gIERpc2FibGluZyBhIGJyZWFrcG9pbnQgbWVhbnMgaXQgY2Fubm90IGNhdXNlXG4gICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhIGJyZWFrcG9pbnQsIGl0XG4gICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuXG5lbmFibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cblxuaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cblxuICAgU2V0IHRoZSBpZ25vcmUgY291bnQgZm9yIHRoZSBnaXZlbiBicmVha3BvaW50IG51bWJlci4gIElmIGNvdW50IGlzXG4gICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgYWN0aXZlXG4gICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSBicmVha3BvaW50XG4gICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gdHJ1ZS5cblxuY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG5cbiAgIFNldCBhIG5ldyAqY29uZGl0aW9uKiBmb3IgdGhlIGJyZWFrcG9pbnQsIGFuIGV4cHJlc3Npb24gd2hpY2ggbXVzdFxuICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICpjb25kaXRpb24qXG4gICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG1hZGUgdW5jb25kaXRpb25hbC5cblxuY29tbWFuZHMgW2JwbnVtYmVyXVxuXG4gICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gIFRoZVxuICAgY29tbWFuZHMgdGhlbXNlbHZlcyBhcHBlYXIgb24gdGhlIGZvbGxvd2luZyBsaW5lcy4gIFR5cGUgYSBsaW5lXG4gICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4gICAgICAoY29tKSBlbmRcbiAgICAgIChQZGIpXG5cbiAgIFRvIHJlbW92ZSBhbGwgY29tbWFuZHMgZnJvbSBhIGJyZWFrcG9pbnQsIHR5cGUgY29tbWFuZHMgYW5kIGZvbGxvd1xuICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAibmV4dCIgYW5kICJzdGVwIlxuICAgaXMgdGhhdCAic3RlcCIgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZSAibmV4dCJcbiAgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seSBzdG9wcGluZyBhdFxuICAgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgImZvciIgbG9vcCBvciBvdXRcbiAgIG9mIGEgImZpbmFsbHkiIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICBXaXRoXG4gICBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4gICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIGxlc3NcbiAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuXG4gICBUaGUgY3VycmVudCBsaW5lIGluIHRoZSBjdXJyZW50IGZyYW1lIGlzIGluZGljYXRlZCBieSAiLT4iLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5ICI+PiIsIGlmIGl0IGRpZmZlcnNcbiAgIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG5cbmxsIHwgbG9uZ2xpc3RcblxuICAgTGlzdCBhbGwgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uIG9yIGZyYW1lLlxuICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgImxpc3QiLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucCBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxuICAgTm90ZTogInByaW50KCkiIGNhbiBhbHNvIGJlIHVzZWQsIGJ1dCBpcyBub3QgYSBkZWJ1Z2dlciBjb21tYW5kXG4gICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuXG5wcCBleHByZXNzaW9uXG5cbiAgIExpa2UgdGhlICJwIiBjb21tYW5kLCBleGNlcHQgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlzIHByZXR0eS1cbiAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgd2hvc2VcbiAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgZm91bmQgaW5cbiAgIHRoZSBjdXJyZW50IHNjb3BlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmFsaWFzIFtuYW1lIFtjb21tYW5kXV1cblxuICAgQ3JlYXRlIGFuIGFsaWFzIGNhbGxlZCAqbmFtZSogdGhhdCBleGVjdXRlcyAqY29tbWFuZCouICBUaGUgY29tbWFuZFxuICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiBiZVxuICAgaW5kaWNhdGVkIGJ5ICIlMSIsICIlMiIsIGFuZCBzbyBvbiwgd2hpbGUgIiUqIiBpcyByZXBsYWNlZCBieSBhbGxcbiAgIHRoZSBwYXJhbWV0ZXJzLiBJZiBubyBjb21tYW5kIGlzIGdpdmVuLCB0aGUgY3VycmVudCBhbGlhcyBmb3JcbiAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlIGxpc3RlZC5cblxuICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSBsZWdhbGx5XG4gICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgKmNhbiogYmVcbiAgIG92ZXJyaWRkZW4gYnkgYWxpYXNlcy4gIFN1Y2ggYSBjb21tYW5kIGlzIHRoZW4gaGlkZGVuIHVudGlsIHRoZVxuICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgbGVmdFxuICAgYWxvbmUuXG5cbiAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuIHBsYWNlZFxuICAgaW4gdGhlICIucGRicmMiIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4gICAic3lzLmFyZ3YiLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9ucyBhcmVcbiAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cblxucSh1aXQpXG5cbiAgIFF1aXQgZnJvbSB0aGUgZGVidWdnZXIuICBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gbW9kdWxlXG4gICAgaXMgZGV0ZXJtaW5lZCBieSB0aGUgIl9fbmFtZV9fIiBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6IHUnXG5UaGUgImRlbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbmZyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG5ibG9jay5cbicsCi0gJ2RpY3QnOiB1J1xuRGljdGlvbmFyeSBkaXNwbGF5c1xuKioqKioqKioqKioqKioqKioqKlxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbmVuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcblxuICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAifSJcbiAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbiAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiB8ICIqKiIgb3JfZXhwclxuICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cblxuSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlIGRpY3Rpb25hcnk6XG5lYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG5tdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeVwncyB2YWx1ZVxuZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuXG5BIGRvdWJsZSBhc3RlcmlzayAiKioiIGRlbm90ZXMgKmRpY3Rpb25hcnkgdW5wYWNraW5nKi4gSXRzIG9wZXJhbmRcbm11c3QgYmUgYSAqbWFwcGluZyouICBFYWNoIG1hcHBpbmcgaXRlbSBpcyBhZGRlZCB0byB0aGUgbmV3XG5kaWN0aW9uYXJ5LiAgTGF0ZXIgdmFsdWVzIHJlcGxhY2UgdmFsdWVzIGFscmVhZHkgc2V0IGJ5IGVhcmxpZXJcbmtleS9kYXR1bSBwYWlycyBhbmQgZWFybGllciBkaWN0aW9uYXJ5IHVucGFja2luZ3MuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNTogVW5wYWNraW5nIGludG8gZGljdGlvbmFyeSBkaXNwbGF5cywgb3JpZ2luYWxseVxucHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG5cbkEgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG5uZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgdXN1YWxcbiJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgcmVzdWx0aW5nXG5rZXkgYW5kIHZhbHVlIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCBpbiB0aGUgbmV3IGRpY3Rpb25hcnkgaW4gdGhlIG9yZGVyXG50aGV5IGFyZSBwcm9kdWNlZC5cblxuUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSouICAoVG8gc3VtbWFyaXplLCB0aGUga2V5IHR5cGVcbnNob3VsZCBiZSAqaGFzaGFibGUqLCB3aGljaCBleGNsdWRlcyBhbGwgbXV0YWJsZSBvYmplY3RzLikgIENsYXNoZXNcbmJldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxucmlnaHRtb3N0IGluIHRoZSBkaXNwbGF5KSBzdG9yZWQgZm9yIGEgZ2l2ZW4ga2V5IHZhbHVlIHByZXZhaWxzLlxuJywKLSAnZHluYW1pYy1mZWF0dXJlcyc6IHUnXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ2Vsc2UnOiB1J1xuVGhlICJpZiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKipcblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnZXhjZXB0aW9ucyc6IHUnXG5FeGNlcHRpb25zXG4qKioqKioqKioqXG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleGVjbW9kZWwnOiB1J1xuRXhlY3V0aW9uIG1vZGVsXG4qKioqKioqKioqKioqKipcblxuXG5TdHJ1Y3R1cmUgb2YgYSBwcm9ncmFtXG49PT09PT09PT09PT09PT09PT09PT09XG5cbkEgUHl0aG9uIHByb2dyYW0gaXMgY29uc3RydWN0ZWQgZnJvbSBjb2RlIGJsb2Nrcy4gQSAqYmxvY2sqIGlzIGEgcGllY2Vcbm9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhIHVuaXQuIFRoZSBmb2xsb3dpbmcgYXJlXG5ibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzIGRlZmluaXRpb24uIEVhY2hcbmNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHQgZmlsZSAoYSBmaWxlIGdpdmVuXG5hcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkIGFzIGEgY29tbWFuZCBsaW5lXG5hcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEEgc2NyaXB0IGNvbW1hbmQgKGFcbmNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgd2l0aCB0aGUgXCcqKi1jKipcJ1xub3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgYnVpbHQtaW5cbmZ1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5cbk5hbWluZyBhbmQgYmluZGluZ1xuPT09PT09PT09PT09PT09PT09XG5cblxuQmluZGluZyBvZiBuYW1lc1xuLS0tLS0tLS0tLS0tLS0tLVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cblxuXG5FeGNlcHRpb25zXG49PT09PT09PT09XG5cbkV4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiBjb250cm9sXG5vZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlIGVycm9yIGlzXG5kZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciBieSBhbnlcbmNvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgd2hlcmVcbnRoZSBlcnJvciBvY2N1cnJlZC5cblxuVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhIHJ1bi10aW1lXG5lcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbmV4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiBFeGNlcHRpb25cbmhhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gIFRoZVxuImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgY2xlYW51cFxuY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkIHdoZXRoZXIgYW5cbmV4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuXG5QeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gb3V0ZXJcbmxldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSB0aGVcbmZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiBjb2RlXG5mcm9tIHRoZSB0b3ApLlxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciB0ZXJtaW5hdGVzXG5leGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gbG9vcC4gIEluXG5laXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgZXhjZXB0aW9uIGlzXG4iU3lzdGVtRXhpdCIuXG5cbkV4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiIGNsYXVzZSBpc1xuc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgcmVmZXJlbmNlIHRoZVxuY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlIGNhbiBiZVxucmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuXG5Ob3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgdHJ5XG5zdGF0ZW1lbnQqIGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBieVxuICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlIGlzXG4gICAgY29tcGlsZWQuXG4nLAotICdleHBybGlzdHMnOiB1J1xuRXhwcmVzc2lvbiBsaXN0c1xuKioqKioqKioqKioqKioqKlxuXG4gICBleHByZXNzaW9uX2xpc3QgICAgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuICAgc3RhcnJlZF9saXN0ICAgICAgIDo6PSBzdGFycmVkX2l0ZW0gKCAiLCIgc3RhcnJlZF9pdGVtICkqIFsiLCJdXG4gICBzdGFycmVkX2V4cHJlc3Npb24gOjo9IGV4cHJlc3Npb24gfCAoIHN0YXJyZWRfaXRlbSAiLCIgKSogW3N0YXJyZWRfaXRlbV1cbiAgIHN0YXJyZWRfaXRlbSAgICAgICA6Oj0gZXhwcmVzc2lvbiB8ICIqIiBvcl9leHByXG5cbkV4Y2VwdCB3aGVuIHBhcnQgb2YgYSBsaXN0IG9yIHNldCBkaXNwbGF5LCBhbiBleHByZXNzaW9uIGxpc3RcbmNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGNvbW1hIHlpZWxkcyBhIHR1cGxlLiAgVGhlIGxlbmd0aCBvZiB0aGUgdHVwbGVcbmlzIHRoZSBudW1iZXIgb2YgZXhwcmVzc2lvbnMgaW4gdGhlIGxpc3QuICBUaGUgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5BbiBhc3RlcmlzayAiKiIgZGVub3RlcyAqaXRlcmFibGUgdW5wYWNraW5nKi4gIEl0cyBvcGVyYW5kIG11c3QgYmUgYW5cbippdGVyYWJsZSouICBUaGUgaXRlcmFibGUgaXMgZXhwYW5kZWQgaW50byBhIHNlcXVlbmNlIG9mIGl0ZW1zLCB3aGljaFxuYXJlIGluY2x1ZGVkIGluIHRoZSBuZXcgdHVwbGUsIGxpc3QsIG9yIHNldCwgYXQgdGhlIHNpdGUgb2YgdGhlXG51bnBhY2tpbmcuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuNTogSXRlcmFibGUgdW5wYWNraW5nIGluIGV4cHJlc3Npb24gbGlzdHMsIG9yaWdpbmFsbHlcbnByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuXG5UaGUgdHJhaWxpbmcgY29tbWEgaXMgcmVxdWlyZWQgb25seSB0byBjcmVhdGUgYSBzaW5nbGUgdHVwbGUgKGEuay5hLiBhXG4qc2luZ2xldG9uKik7IGl0IGlzIG9wdGlvbmFsIGluIGFsbCBvdGhlciBjYXNlcy4gIEEgc2luZ2xlIGV4cHJlc3Npb25cbndpdGhvdXQgYSB0cmFpbGluZyBjb21tYSBkb2VzblwndCBjcmVhdGUgYSB0dXBsZSwgYnV0IHJhdGhlciB5aWVsZHMgdGhlXG52YWx1ZSBvZiB0aGF0IGV4cHJlc3Npb24uIChUbyBjcmVhdGUgYW4gZW1wdHkgdHVwbGUsIHVzZSBhbiBlbXB0eSBwYWlyXG5vZiBwYXJlbnRoZXNlczogIigpIi4pXG4nLAotICdmbG9hdGluZyc6IHUnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCAiMDc3ZTAxMCIgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lIG51bWJlclxuYXMgIjc3ZTEwIi4gVGhlIGFsbG93ZWQgcmFuZ2Ugb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgaXNcbmltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICItIiBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ2Zvcic6IHUnXG5UaGUgImZvciIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gIEVhY2hcbml0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG5mb3IgYXNzaWdubWVudHMgKHNlZSAqQXNzaWdubWVudCBzdGF0ZW1lbnRzKiksIGFuZCB0aGVuIHRoZSBzdWl0ZSBpc1xuZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZVxuc2VxdWVuY2UgaXMgZW1wdHkgb3IgYW4gaXRlcmF0b3IgcmFpc2VzIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiksXG50aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlIGxvb3BcbnRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgY29udGludWVzXG53aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlICJlbHNlIiBjbGF1c2UgaWYgdGhlcmUgaXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCBsaXN0LlxuVGhpcyBvdmVyd3JpdGVzIGFsbCBwcmV2aW91cyBhc3NpZ25tZW50cyB0byB0aG9zZSB2YXJpYWJsZXMgaW5jbHVkaW5nXG50aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG5cbiAgIGZvciBpIGluIHJhbmdlKDEwKTpcbiAgICAgICBwcmludChpKVxuICAgICAgIGkgPSA1ICAgICAgICAgICAgICMgdGhpcyB3aWxsIG5vdCBhZmZlY3QgdGhlIGZvci1sb29wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoIHRoZSBuZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIyBpbmRleCBpbiB0aGUgcmFuZ2VcblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXRcbmFsbCBieSB0aGUgbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGlcbjo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgQW5cbiAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkIG5leHQsXG4gIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzXG4gIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgbWVhbnNcbiAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSBmcm9tIHRoZVxuICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlIGluZGV4IG9mXG4gIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCBpZiB0aGVcbiAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgdGhlXG4gIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSBsb29wLlxuICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcblxuICAgICBmb3IgeCBpbiBhWzpdOlxuICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nLAotICdmb3JtYXRzdHJpbmdzJzogdSdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kIGFuZCB0aGUgIkZvcm1hdHRlciIgY2xhc3Mgc2hhcmUgdGhlIHNhbWVcbnN5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mICJGb3JtYXR0ZXIiLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbiJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbiJ7eyIgYW5kICJ9fSIuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50ICJcJyFcJyIsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgZm9ybWF0IGZvciB0aGVcbnJlcGxhY2VtZW50IHZhbHVlLlxuXG5TZWUgYWxzbyB0aGUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgIlwnMTBcJyIgb3JcbiJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5IGFueVxubnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybVxuIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCB3aGlsZSBhblxuZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwIHVzaW5nXG4iX19nZXRpdGVtX18oKSIuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAiX19mb3JtYXRfXygpIlxubWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzIGl0IGlzIGRlc2lyYWJsZSB0b1xuZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgb3duXG5kZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhIHN0cmluZyBiZWZvcmVcbmNhbGxpbmcgIl9fZm9ybWF0X18oKSIsIHRoZSBub3JtYWwgZm9ybWF0dGluZyBsb2dpYyBpcyBieXBhc3NlZC5cblxuVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogIlwnIXNcJyIgd2hpY2ggY2FsbHNcbiJzdHIoKSIgb24gdGhlIHZhbHVlLCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIiBhbmQgIlwnIWFcJyIgd2hpY2hcbmNhbGxzICJhc2NpaSgpIi5cblxuU29tZSBleGFtcGxlczpcblxuICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcblxuVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgdmFsdWVcbnNob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsIGFsaWdubWVudCxcbnBhZGRpbmcsIGRlY2ltYWwgcHJlY2lzaW9uIGFuZCBzbyBvbi4gIEVhY2ggdmFsdWUgdHlwZSBjYW4gZGVmaW5lIGl0c1xub3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAqZm9ybWF0X3NwZWMqLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlLCB3aGljaFxuaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG5cbkEgKmZvcm1hdF9zcGVjKiBmaWVsZCBjYW4gYWxzbyBpbmNsdWRlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHNcbndpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBtYXkgY29udGFpbiBhIGZpZWxkIG5hbWUsXG5jb252ZXJzaW9uIGZsYWcgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9uLCBidXQgZGVlcGVyIG5lc3RpbmcgaXMgbm90XG5hbGxvd2VkLiAgVGhlIHJlcGxhY2VtZW50IGZpZWxkcyB3aXRoaW4gdGhlIGZvcm1hdF9zcGVjIGFyZVxuc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZSAqZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gVGhpc1xuYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGEgdmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgc3BlY2lmaWVkLlxuXG5TZWUgdGhlICpGb3JtYXQgZXhhbXBsZXMqIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KikuICBUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGVcbmJ1aWx0LWluICJmb3JtYXQoKSIgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nICgiIiIiKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkICJzdHIoKSIgb24gdGhlIHZhbHVlLiBBIG5vbi1lbXB0eVxuZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGFueSBjaGFyYWN0ZXI+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuSWYgYSB2YWxpZCAqYWxpZ24qIHZhbHVlIGlzIHNwZWNpZmllZCwgaXQgY2FuIGJlIHByZWNlZGVkIGJ5IGEgKmZpbGwqXG5jaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSBpZlxub21pdHRlZC4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgKCIieyIiIG9yXG4iIn0iIikgYXMgdGhlICpmaWxsKiBjaGFyYWN0ZXIgd2hlbiB1c2luZyB0aGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kLlxuSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gaW5zZXJ0IGEgY3VybHkgYnJhY2Ugd2l0aCBhIG5lc3RlZFxucmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc25cJ3QgYWZmZWN0IHRoZSAiZm9ybWF0KCkiXG5mdW5jdGlvbi5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCc8XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJz5cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnPVwnIiAgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgSXQgYmVjb21lcyB0aGUgZGVmYXVsdCB3aGVuIFwnMFwnICB8XG4gICB8ICAgICAgICAgICB8IGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBmaWVsZCB3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJytcJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnLVwnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgIlwnI1wnIiBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSAiXCcwYlwnIiwgIlwnMG9cJyIsIG9yXG4iXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgIlwnZ1wnIiBhbmQgIlwnR1wnIlxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSAiXCcsXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHMgc2VwYXJhdG9yLlxuRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVcbmluc3RlYWQuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHRoZSAiXCcsXCciIG9wdGlvbiAoc2VlIGFsc28gKipQRVAgMzc4KiopLlxuXG4qd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkIHdpZHRoLiAgSWYgbm90XG5zcGVjaWZpZWQsIHRoZW4gdGhlIGZpZWxkIHdpZHRoIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29udGVudC5cblxuV2hlbiBubyBleHBsaWNpdCBhbGlnbm1lbnQgaXMgZ2l2ZW4sIHByZWNlZGluZyB0aGUgKndpZHRoKiBmaWVsZCBieSBhXG56ZXJvICgiXCcwXCciKSBjaGFyYWN0ZXIgZW5hYmxlcyBzaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpY1xudHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgd2l0aCBhblxuKmFsaWdubWVudCogdHlwZSBvZiAiXCc9XCciLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggIlwnZlwnIiBhbmQgIlwnRlwnIiwgb3IgYmVmb3JlIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludFxuZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggIlwnZ1wnIiBvciAiXCdHXCciLiAgRm9yIG5vbi1cbm51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpbiBvdGhlclxud29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuIFRoZVxuKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdzXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnYlwnIiAgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ29cJyIgICAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCd4XCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ1hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnblwnIiAgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgIlwnZFwnIiwgZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAiXCdkXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0ICJcJ25cJyJcbmFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCB0aGUgaW50ZWdlciB0b1xuYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG5cblRoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgZGVjaW1hbCB2YWx1ZXNcbmFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiBzY2llbnRpZmljICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyIFwnZVwnIHRvIGluZGljYXRlIHRoZSBleHBvbmVudC4gICAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnRlwnIiAgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyAiXCdmXCciLCBidXQgY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuICAgfCAgICAgICAgICAgfCBhbmQgImluZiIgdG8gIklORiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gInAgPj0gMSIsIHRoaXMgICAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCBwcmVjaXNpb24gInAtMSIgfFxuICAgfCAgICAgICAgICAgfCB3b3VsZCBoYXZlIGV4cG9uZW50ICJleHAiLiAgVGhlbiBpZiAiLTQgPD0gZXhwIDwgcCIsIHRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2ZcJyIgYW5kICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4gICB8ICAgICAgICAgICB8IHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZVwnIiBhbmQgcHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4gICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlIHJlbW92ZWQgZnJvbSB0aGUgICAgfFxuICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gcmVtb3ZlZCBpZiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nIGl0LiAgUG9zaXRpdmUgYW5kICB8XG4gICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgemVybywgYW5kIG5hbnMsICAgfFxuICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiBhbmQgIm5hbiIgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSBwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4gICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSBwcmVjaXNpb24gb2YgIjEiLiBUaGUgICAgfFxuICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgc3dpdGNoZXMgdG8gIlwnRVwnIiBpZiAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbiAgIHwgICAgICAgICAgIHwgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCBleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4gICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJyVcJyIgICAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgcGVyY2VudCBzaWduLiAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvICJcJ2dcJyIsIGV4Y2VwdCB0aGF0IGZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuICAgfCAgICAgICAgICAgfCB1c2VkLCBoYXMgYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgdGhlIGRlY2ltYWwgcG9pbnQuIFRoZSAgIHxcbiAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IHBhcnRpY3VsYXIgdmFsdWUuIFRoZSBvdmVyYWxsIGVmZmVjdCBpcyB0byBtYXRjaCB0aGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBvdXRwdXQgb2YgInN0cigpIiBhcyBhbHRlcmVkIGJ5IHRoZSBvdGhlciBmb3JtYXQgICAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgInN0ci5mb3JtYXQoKSIgc3ludGF4IGFuZFxuY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLFxud2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCBvZiAiJSIuIEZvclxuZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyAiJStmIiwgIiUtZiIsIGFuZCAiJSBmIiBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyAiJXgiIGFuZCAiJW8iIGFuZCBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBkaWZmZXJlbnQgYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0VcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKLSAnZnVuY3Rpb24nOiB1J1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFthcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCi0gJ2dsb2JhbCc6IHUnXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaXMgYSBkZWNsYXJhdGlvbiB3aGljaCBob2xkcyBmb3IgdGhlIGVudGlyZVxuY3VycmVudCBjb2RlIGJsb2NrLiAgSXQgbWVhbnMgdGhhdCB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIGFyZSB0byBiZVxuaW50ZXJwcmV0ZWQgYXMgZ2xvYmFscy4gIEl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gYXNzaWduIHRvIGEgZ2xvYmFsXG52YXJpYWJsZSB3aXRob3V0ICJnbG9iYWwiLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbmdsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIGNvZGVcbmJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCAiZ2xvYmFsIiBzdGF0ZW1lbnQuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbFxucGFyYW1ldGVycyBvciBpbiBhICJmb3IiIGxvb3AgY29udHJvbCB0YXJnZXQsICJjbGFzcyIgZGVmaW5pdGlvbixcbmZ1bmN0aW9uIGRlZmluaXRpb24sIG9yICJpbXBvcnQiIHN0YXRlbWVudC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdFxuZW5mb3JjZSB0aGUgdHdvIHJlc3RyaWN0aW9ucywgYnV0IHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgdGhpc1xuZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZSB0aGVtIG9yIHNpbGVudGx5IGNoYW5nZVxudGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIHRoZSAiZ2xvYmFsIiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgcGFyc2VyLiAgSXRcbmFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSAiZ2xvYmFsIlxuc3RhdGVtZW50LiBJbiBwYXJ0aWN1bGFyLCBhICJnbG9iYWwiIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSBzdHJpbmdcbm9yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiAiZXhlYygpIiBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgImdsb2JhbCIgc3RhdGVtZW50cyBpbiB0aGVcbmNvZGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gY2FsbC4gIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlICJldmFsKCkiXG5hbmQgImNvbXBpbGUoKSIgZnVuY3Rpb25zLlxuJywKLSAnaWQtY2xhc3Nlcyc6IHUnXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICBXaGVuIG5vdFxuICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCBkZWZpbmVkLlxuICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lcyBub3RcbiAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlIHdpdGhvdXRcbiAgIHdhcm5pbmcuXG5cbiJfXyoiXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKLSAnaWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgIkEiIHRocm91Z2ggIloiLCB0aGUgdW5kZXJzY29yZSAiXyIgYW5kLCBleGNlcHQgZm9yIHRoZSBmaXJzdFxuY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cblxuUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlIEFTQ0lJXG5yYW5nZSAoc2VlICoqUEVQIDMxMzEqKikuICBGb3IgdGhlc2UgY2hhcmFjdGVycywgdGhlIGNsYXNzaWZpY2F0aW9uXG51c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyBpbmNsdWRlZCBpbiB0aGVcbiJ1bmljb2RlZGF0YSIgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwczovL3d3dy5kY2wuaHBpLnVuaS1cbnBvdHNkYW0uZGUvaG9tZS9sb2V3aXMvdGFibGUtMzEzMS5odG1sLlxuXG5cbktleXdvcmRzXG49PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkIGFzIHJlc2VydmVkIHdvcmRzLCBvciAqa2V5d29yZHMqIG9mXG50aGUgbGFuZ3VhZ2UsIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBvcmRpbmFyeSBpZGVudGlmaWVycy4gIFRoZXkgbXVzdFxuYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcblxuICAgRmFsc2UgICAgICBjbGFzcyAgICAgIGZpbmFsbHkgICAgaXMgICAgICAgICByZXR1cm5cbiAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4gICBUcnVlICAgICAgIGRlZiAgICAgICAgZnJvbSAgICAgICBub25sb2NhbCAgIHdoaWxlXG4gICBhbmQgICAgICAgIGRlbCAgICAgICAgZ2xvYmFsICAgICBub3QgICAgICAgIHdpdGhcbiAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbiAgIGFzc2VydCAgICAgZWxzZSAgICAgICBpbXBvcnQgICAgIHBhc3NcbiAgIGJyZWFrICAgICAgZXhjZXB0ICAgICBpbiAgICAgICAgIHJhaXNlXG5cblxuUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5DZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgc3BlY2lhbFxubWVhbmluZ3MuICBUaGVzZSBjbGFzc2VzIGFyZSBpZGVudGlmaWVkIGJ5IHRoZSBwYXR0ZXJucyBvZiBsZWFkaW5nIGFuZFxudHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuXG4iXyoiXG4gICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXIgIl8iXG4gICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoZVxuICAgbGFzdCBldmFsdWF0aW9uOyBpdCBpcyBzdG9yZWQgaW4gdGhlICJidWlsdGlucyIgbW9kdWxlLiAgV2hlbiBub3RcbiAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgZGVmaW5lZC5cbiAgIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbiJfXypfXyJcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXMgbm90XG4gICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSB3aXRob3V0XG4gICB3YXJuaW5nLlxuXG4iX18qIlxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCi0gJ2lmJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCi0gJ2ltYWdpbmFyeSc6IHUnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgIigzKzRqKSIuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcblxuICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogIDMuMTRlLTEwalxuJywKLSAnaW1wb3J0JzogdSdcblRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4gICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbiAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4gICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbiAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5XaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgdGhlXG50d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzIHRob3VnaFxudGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWR1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG5kZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlICppbXBvcnQgc3lzdGVtKixcbndoaWNoIGFsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHRoYXRcbmNhbiBiZSBpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbmN1c3RvbWl6ZSB0aGUgaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCBtYXlcbmluZGljYXRlIGVpdGhlciB0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCBhblxuZXJyb3Igb2NjdXJyZWQgd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzIGV4ZWN1dGlvblxub2YgdGhlIG1vZHVsZVwncyBjb2RlLlxuXG5JZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlIG1hZGVcbmF2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuXG4qIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgImZyb20iIGZvcm0gdXNlcyBhIHNsaWdodGx5IG1vcmUgY29tcGxleCBwcm9jZXNzOlxuXG4xLiBmaW5kIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIHRoZSAiZnJvbSIgY2xhdXNlLCBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgImltcG9ydCIgY2xhdXNlczpcblxuICAgMS4gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZVxuXG4gICAyLiBpZiBub3QsIGF0dGVtcHQgdG8gaW1wb3J0IGEgc3VibW9kdWxlIHdpdGggdGhhdCBuYW1lIGFuZCB0aGVuXG4gICAgICBjaGVjayB0aGUgaW1wb3J0ZWQgbW9kdWxlIGFnYWluIGZvciB0aGF0IGF0dHJpYnV0ZVxuXG4gICAzLiBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBmb3VuZCwgIkltcG9ydEVycm9yIiBpcyByYWlzZWQuXG5cbiAgIDQuIG90aGVyd2lzZSwgYSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSAiYXMiIGNsYXVzZSBpZiBpdCBpcyBwcmVzZW50LFxuICAgICAgb3RoZXJ3aXNlIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbmFtZVxuXG5FeGFtcGxlczpcblxuICAgaW1wb3J0IGZvbyAgICAgICAgICAgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiAgICAgICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQsIGZvbyBib3VuZCBsb2NhbGx5XG4gICBpbXBvcnQgZm9vLmJhci5iYXogYXMgZmJiICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyBmYmJcbiAgIGZyb20gZm9vLmJhciBpbXBvcnQgYmF6ICAgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGJhelxuICAgZnJvbSBmb28gaW1wb3J0IGF0dHIgICAgICAgIyBmb28gaW1wb3J0ZWQgYW5kIGZvby5hdHRyIGJvdW5kIGFzIGF0dHJcblxuSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXMgcmVwbGFjZWQgYnkgYSBzdGFyICgiXCcqXCciKSwgYWxsIHB1YmxpY1xubmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZSBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGVcbnNjb3BlIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgIl9fYWxsX18iOyBpZiBkZWZpbmVkLCBpdCBtdXN0XG5iZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgd2hpY2ggYXJlIG5hbWVzIGRlZmluZWQgb3IgaW1wb3J0ZWQgYnkgdGhhdFxubW9kdWxlLiAgVGhlIG5hbWVzIGdpdmVuIGluICJfX2FsbF9fIiBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljIGFuZFxuYXJlIHJlcXVpcmVkIHRvIGV4aXN0LiAgSWYgIl9fYWxsX18iIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mIHB1YmxpY1xubmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoIGRvIG5vdFxuYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoIlwnX1wnIikuICAiX19hbGxfXyIgc2hvdWxkIGNvbnRhaW5cbnRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGV4cG9ydGluZ1xuaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZVxuaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiIC0tLSBpcyBvbmx5XG5hbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuICBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvclxuZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiB5b3VcbmNhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG53aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxucGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgdXBcbm9uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91IGV4ZWN1dGVcbiJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSB3aWxsXG5lbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCBtb2QiXG5mcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG5zcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbiJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyB0aGF0XG5kZXRlcm1pbmUgZHluYW1pY2FsbHkgdGhlIG1vZHVsZXMgdG8gYmUgbG9hZGVkLlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24gd2hlcmUgdGhlIGZlYXR1cmVcbmJlY29tZXMgc3RhbmRhcmQuXG5cblRoZSBmdXR1cmUgc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9uc1xub2YgUHl0aG9uIHRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0XG5hbGxvd3MgdXNlIG9mIHRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGVcbnJlbGVhc2UgaW4gd2hpY2ggdGhlIGZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cblxuICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbiAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlIG9ubHlcbmxpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcblxuKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcblxuKiBjb21tZW50cyxcblxuKiBibGFuayBsaW5lcywgYW5kXG5cbiogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG5cblRoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlICJhYnNvbHV0ZV9pbXBvcnQiLFxuImRpdmlzaW9uIiwgImdlbmVyYXRvcnMiLCAidW5pY29kZV9saXRlcmFscyIsICJwcmludF9mdW5jdGlvbiIsXG4ibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICBUaGV5IGFyZSBhbGwgcmVkdW5kYW50IGJlY2F1c2VcbnRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS5cblxuQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbnRpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG5pbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlIGNhc2VcbnRoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgbmV3XG5yZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG5tb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxucnVudGltZS5cblxuRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyBoYXZlXG5iZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgc3RhdGVtZW50XG5jb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuXG5UaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCBzdGF0ZW1lbnQ6XG50aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSAiX19mdXR1cmVfXyIsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0IHdpbGxcbmJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSBzdGF0ZW1lbnRcbndpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoIHRoZVxuZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG4iY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzogKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG5cbiAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAotICdpbic6IHUnXG5NZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxubm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluIHNlcXVlbmNlc1xuYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiB0ZXN0c1xud2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xubGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KSIuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXNcbmEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG5zdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cblxuVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4iaW4iLlxuJywKLSAnaW50ZWdlcnMnOiB1J1xuSW50ZWdlciBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5JbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpbnRlZ2VyICAgICAgICA6Oj0gZGVjaW1hbGludGVnZXIgfCBvY3RpbnRlZ2VyIHwgaGV4aW50ZWdlciB8IGJpbmludGVnZXJcbiAgIGRlY2ltYWxpbnRlZ2VyIDo6PSBub256ZXJvZGlnaXQgZGlnaXQqIHwgIjAiK1xuICAgbm9uemVyb2RpZ2l0ICAgOjo9ICIxIi4uLiI5IlxuICAgZGlnaXQgICAgICAgICAgOjo9ICIwIi4uLiI5IlxuICAgb2N0aW50ZWdlciAgICAgOjo9ICIwIiAoIm8iIHwgIk8iKSBvY3RkaWdpdCtcbiAgIGhleGludGVnZXIgICAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgaGV4ZGlnaXQrXG4gICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuICAgb2N0ZGlnaXQgICAgICAgOjo9ICIwIi4uLiI3IlxuICAgaGV4ZGlnaXQgICAgICAgOjo9IGRpZ2l0IHwgImEiLi4uImYiIHwgIkEiLi4uIkYiXG4gICBiaW5kaWdpdCAgICAgICA6Oj0gIjAiIHwgIjEiXG5cblRoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSB3aGF0XG5jYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG5cbk5vdGUgdGhhdCBsZWFkaW5nIHplcm9zIGluIGEgbm9uLXplcm8gZGVjaW1hbCBudW1iZXIgYXJlIG5vdCBhbGxvd2VkLlxuVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCBQeXRob25cbnVzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuXG5Tb21lIGV4YW1wbGVzIG9mIGludGVnZXIgbGl0ZXJhbHM6XG5cbiAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuICAgMyAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgIDBvMzc3ICAgIDB4ZGVhZGJlZWZcbicsCi0gJ2xhbWJkYSc6IHUnXG5MYW1iZGFzXG4qKioqKioqXG5cbiAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uX25vY29uZFxuXG5MYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byBjcmVhdGVcbmFub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiBleHByZXNzaW9uIlxueWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGZ1bmN0aW9uXG5vYmplY3QgZGVmaW5lZCB3aXRoXG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGV4cHJlc3Npb25zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKLSAnbGlzdHMnOiB1J1xuTGlzdCBkaXNwbGF5c1xuKioqKioqKioqKioqKlxuXG5BIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCBpblxuc3F1YXJlIGJyYWNrZXRzOlxuXG4gICBsaXN0X2Rpc3BsYXkgOjo9ICJbIiBbc3RhcnJlZF9saXN0IHwgY29tcHJlaGVuc2lvbl0gIl0iXG5cbkEgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nIHNwZWNpZmllZFxuYnkgZWl0aGVyIGEgbGlzdCBvZiBleHByZXNzaW9ucyBvciBhIGNvbXByZWhlbnNpb24uICBXaGVuIGEgY29tbWEtXG5zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSBldmFsdWF0ZWRcbmZyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0IGluIHRoYXQgb3JkZXIuXG5XaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbmVsZW1lbnRzIHJlc3VsdGluZyBmcm9tIHRoZSBjb21wcmVoZW5zaW9uLlxuJywKLSAnbmFtaW5nJzogdSdcbk5hbWluZyBhbmQgYmluZGluZ1xuKioqKioqKioqKioqKioqKioqXG5cblxuQmluZGluZyBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PVxuXG4qTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cblRoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byBmdW5jdGlvbnMsXG4iaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgdGhlXG5jbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgYXJlXG5pZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yIGFmdGVyXG4iYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbm9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG5pbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtXG5tYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jayxcbnVubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZVxubW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSBtb2R1bGVcbmNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZVxuYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cblxuRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgKmJpbmRpbmcqXG5vZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG5cblxuUmVzb2x1dGlvbiBvZiBuYW1lc1xuPT09PT09PT09PT09PT09PT09PVxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cblxuV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSBuZWFyZXN0XG5lbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSBibG9ja1xuaXMgY2FsbGVkIHRoZSBibG9ja1wncyAqZW52aXJvbm1lbnQqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIElmXG50aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWxcbnZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVcbm5hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5JZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssIGFsbFxudXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gdGhlXG5jdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gYVxuYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlIG5hbWVcbnNwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiB0aGVcbnRvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC4gIElmXG50aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICBUaGVcbiJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbiJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzIG5vdFxuZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cblxuVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIGFcbm1vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzIGNhbGxlZFxuIl9fbWFpbl9fIi5cblxuQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgYXJlXG5zcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuXG5leGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgcmVmZXJlbmNlc1xuZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiB0aGF0XG51bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBUaGVcbm5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSBvZlxudGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG9cbnRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tXG50aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSBhcmVcbmltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZ1xud2lsbCBmYWlsOlxuXG4gICBjbGFzcyBBOlxuICAgICAgIGEgPSA0MlxuICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcblxuXG5CdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSBibG9ja1xuaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgZ2xvYmFsXG5uYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciBjYXNlXG50aGUgbW9kdWxlXCdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiX19tYWluX18iXG5tb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiBpbiBhbnlcbm90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mIHRoZVxuImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhIHVzZXItY3JlYXRlZFxuZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFVzZXJzXG53YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAiaW1wb3J0IlxudGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cblxuXG5JbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5OYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCBjb21waWxlXG50aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG5cbiAgIGkgPSAxMFxuICAgZGVmIGYoKTpcbiAgICAgICBwcmludChpKVxuICAgaSA9IDQyXG4gICBmKClcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG5vdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgaXNcbnNwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCi0gJ25vbmxvY2FsJzogdSdcblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuXG5UaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBleGNsdWRpbmdcbmdsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGJpbmRpbmcgaXNcbnRvIHNlYXJjaCB0aGUgbG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3NcbmVuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGVcbmJlc2lkZXMgdGhlIGdsb2JhbCAobW9kdWxlKSBzY29wZS5cblxuTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQsIHVubGlrZSB0aG9zZSBsaXN0ZWQgaW4gYVxuImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuZW5jbG9zaW5nIHNjb3BlICh0aGUgc2NvcGUgaW4gd2hpY2ggYSBuZXcgYmluZGluZyBzaG91bGQgYmUgY3JlYXRlZFxuY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCBwcmUtXG5leGlzdGluZyBiaW5kaW5ncyBpbiB0aGUgbG9jYWwgc2NvcGUuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCi0gJ251bWJlcnMnOiB1J1xuTnVtZXJpYyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50XG5udW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm8gY29tcGxleCBsaXRlcmFsc1xuKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuaW1hZ2luYXJ5IG51bWJlcikuXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBcJyItIlwnIGFuZCB0aGVcbmxpdGVyYWwgIjEiLlxuJywKLSAnbnVtZXJpYy10eXBlcyc6IHUnXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJywKLSAnb2JqZWN0cyc6IHUnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciBjb21wYXJlcyB0aGVcbmlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgImlkKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgImlkKHgpIiBpcyB0aGUgbWVtb3J5XG5hZGRyZXNzIHdoZXJlICJ4IiBpcyBzdG9yZWQuXG5cbkFuIG9iamVjdFwncyB0eXBlIGRldGVybWluZXMgdGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzXG4oZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXNcbmZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgImdjIiBtb2R1bGUgZm9yXG5pbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gT3RoZXJcbmltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90IGRlcGVuZFxub24gaW1tZWRpYXRlIGZpbmFsaXphdGlvbiBvZiBvYmplY3RzIHdoZW4gdGhleSBiZWNvbWUgdW5yZWFjaGFibGUgKHNvXG55b3Ugc2hvdWxkIGFsd2F5cyBjbG9zZSBmaWxlcyBleHBsaWNpdGx5KS5cblxuTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uXCdzIHRyYWNpbmcgb3IgZGVidWdnaW5nXG5mYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSBjb2xsZWN0YWJsZS5cbkFsc28gbm90ZSB0aGF0IGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB3aXRoIGEgXCcidHJ5Ii4uLiJleGNlcHQiXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgImNsb3NlKCkiIG1ldGhvZC4gUHJvZ3JhbXNcbmFyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuXCcidHJ5Ii4uLiJmaW5hbGx5IlwnIHN0YXRlbWVudCBhbmQgdGhlIFwnIndpdGgiXCcgc3RhdGVtZW50IHByb3ZpZGVcbmNvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSBjYWxsZWRcbipjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbmRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyXCdzIHZhbHVlLiAgSW5cbm1vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5IHRoZVxudmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCB3aGVuIHdlXG50YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mIHRoZVxuaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG5jb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlIG9iamVjdCwgaXRzXG52YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cblxuVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yIGltbXV0YWJsZVxudHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG5yZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCB3aGlsZVxuZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgImEgPSAxOyBiID0gMSIsXG4iYSIgYW5kICJiIiBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGUgdmFsdWVcbm9uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICJjIlxuYW5kICJkIiBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LCB1bmlxdWUsIG5ld2x5XG5jcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lIG9iamVjdFxudG8gYm90aCAiYyIgYW5kICJkIi4pXG4nLAotICdvcGVyYXRvci1zdW1tYXJ5JzogdSdcbk9wZXJhdG9yIHByZWNlZGVuY2VcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlIGluIFB5dGhvbiwgZnJvbVxubG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAobW9zdFxuYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZS4gIFVubGVzc1xudGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gIE9wZXJhdG9ycyBpblxudGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgZXhwb25lbnRpYXRpb24sIHdoaWNoXG5ncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cblxuTm90ZSB0aGF0IGNvbXBhcmlzb25zLCBtZW1iZXJzaGlwIHRlc3RzLCBhbmQgaWRlbnRpdHkgdGVzdHMsIGFsbCBoYXZlXG50aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBoYXZlIGEgbGVmdC10by1yaWdodCBjaGFpbmluZyBmZWF0dXJlIGFzXG5kZXNjcmliZWQgaW4gdGhlICpDb21wYXJpc29ucyogc2VjdGlvbi5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8IENvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxufCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8IE11bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiK3giLCAiLXgiLCAifngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKioiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEV4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiYXdhaXQiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEF3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAieFtpbmRleF0iLCAieFtpbmRleDppbmRleF0iLCAgICAgICAgICAgICAgICAgICB8IFN1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxufCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8IGF0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8IEJpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxufCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8IGRpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFdoaWxlICJhYnMoeCV5KSA8IGFicyh5KSIgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0c1xuICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCAiLTFlLTEwMCAlIDFlMTAwIiBoYXZlIHRoZSBzYW1lXG4gICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgMWUxMDAiLCB3aGljaFxuICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSBmdW5jdGlvblxuICAgICJtYXRoLmZtb2QoKSIgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgdGhlIHNpZ24gb2YgdGhlXG4gICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiIGluIHRoaXMgY2FzZS5cbiAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlIGFwcGxpY2F0aW9uLlxuXG5bMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgeSwgaXRcJ3NcbiAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAiKHgteCV5KS8veSIgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0ICJkaXZtb2QoeCx5KVswXSAqIHkgKyB4ICUgeSIgYmUgdmVyeSBjbG9zZVxuICAgIHRvICJ4Ii5cblxuWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSBwb2ludHMqIChlLmcuXG4gICAgVSswMDQxKSBhbmQgKmFic3RyYWN0IGNoYXJhY3RlcnMqIChlLmcuICJMQVRJTiBDQVBJVEFMIExFVFRFUiBBIikuXG4gICAgV2hpbGUgbW9zdCBhYnN0cmFjdCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYXJlIG9ubHkgcmVwcmVzZW50ZWRcbiAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgY2hhcmFjdGVyc1xuICAgIHRoYXQgY2FuIGluIGFkZGl0aW9uIGJlIHJlcHJlc2VudGVkIHVzaW5nIGEgc2VxdWVuY2Ugb2YgbW9yZSB0aGFuXG4gICAgb25lIGNvZGUgcG9pbnQuICBGb3IgZXhhbXBsZSwgdGhlIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzIGEgc2luZ2xlXG4gICAgKnByZWNvbXBvc2VkIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwQzcsIG9yIGFzIGEgc2VxdWVuY2VcbiAgICBvZiBhICpiYXNlIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwNDMgKExBVElOIENBUElUQUxcbiAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb25cbiAgICBVKzAzMjcgKENPTUJJTklORyBDRURJTExBKS5cblxuICAgIFRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBvbiBzdHJpbmdzIGNvbXBhcmUgYXQgdGhlIGxldmVsIG9mXG4gICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gaHVtYW5zLiAgRm9yXG4gICAgZXhhbXBsZSwgIiJcXHUwMEM3IiA9PSAiXFx1MDA0M1xcdTAzMjciIiBpcyAiRmFsc2UiLCBldmVuIHRob3VnaCBib3RoXG4gICAgc3RyaW5ncyByZXByZXNlbnQgdGhlIHNhbWUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiBDQVBJVEFMXG4gICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cblxuICAgIFRvIGNvbXBhcmUgc3RyaW5ncyBhdCB0aGUgbGV2ZWwgb2YgYWJzdHJhY3QgY2hhcmFjdGVycyAodGhhdCBpcyxcbiAgICBpbiBhIHdheSBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlICJ1bmljb2RlZGF0YS5ub3JtYWxpemUoKSIuXG5cbls0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kIHRoZVxuICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSBzZWVtaW5nbHkgdW51c3VhbFxuICAgIGJlaGF2aW91ciBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlICJpcyIgb3BlcmF0b3IsIGxpa2UgdGhvc2VcbiAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuXG4gICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuXG5bNV0gVGhlICIlIiBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuIGFyaXRobWV0aWNcbiAgICBvciBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgIjIqKi0xIiBpcyAiMC41Ii5cbicsCi0gJ3Bhc3MnOiB1J1xuVGhlICJwYXNzIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG5cbiJwYXNzIiBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nIGhhcHBlbnMuXG5JdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG5zeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG5cbiAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG5cbiAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKLSAncG93ZXInOiB1J1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9ICggYXdhaXRfZXhwciB8IHByaW1hcnkgKSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cblxuVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuXG5Gb3IgaW50IG9wZXJhbmRzLCB0aGUgcmVzdWx0IGhhcyB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyB1bmxlc3NcbnRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbmNvbnZlcnRlZCB0byBmbG9hdCBhbmQgYSBmbG9hdCByZXN1bHQgaXMgZGVsaXZlcmVkLiBGb3IgZXhhbXBsZSxcbiIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuXG5SYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICJaZXJvRGl2aXNpb25FcnJvciIuXG5SYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgImNvbXBsZXgiXG5udW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAotICdyYWlzZSc6IHUnXG5UaGUgInJhaXNlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCBleGNlcHRpb25cbnRoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgaW5cbnRoZSBjdXJyZW50IHNjb3BlLCBhICJSdW50aW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5kaWNhdGluZ1xudGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuXG5PdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbiJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG5vYnRhaW5lZCB3aGVuIG5lZWRlZCBieSBpbnN0YW50aWF0aW5nIHRoZSBjbGFzcyB3aXRoIG5vIGFyZ3VtZW50cy5cblxuVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2VcJ3MgY2xhc3MsIHRoZVxuKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuXG5BIHRyYWNlYmFjayBvYmplY3QgaXMgbm9ybWFsbHkgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gYW4gZXhjZXB0aW9uXG5pcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCB3aGljaFxuaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayBpblxub25lIHN0ZXAgdXNpbmcgdGhlICJ3aXRoX3RyYWNlYmFjaygpIiBleGNlcHRpb24gbWV0aG9kICh3aGljaCByZXR1cm5zXG50aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzIGFyZ3VtZW50KSxcbmxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgc2Vjb25kXG4qZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggd2lsbFxudGhlbiBiZSBhdHRhY2hlZCB0byB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBhcyB0aGUgIl9fY2F1c2VfXyIgYXR0cmlidXRlXG4od2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbmV4Y2VwdGlvbnMgd2lsbCBiZSBwcmludGVkOlxuXG4gICA+Pj4gdHJ5OlxuICAgLi4uICAgICBwcmludCgxIC8gMClcbiAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4gICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcblxuQSBzaW1pbGFyIG1lY2hhbmlzbSB3b3JrcyBpbXBsaWNpdGx5IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW5zaWRlXG5hbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXNcbnRoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdDpcbiAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIilcbiAgIC4uLlxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuXG4gICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gc2VjdGlvblxuKlRoZSB0cnkgc3RhdGVtZW50Ki5cbicsCi0gJ3JldHVybic6IHUnXG5UaGUgInJldHVybiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG4icmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sXG5ub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG5zdWJzdGl0dXRlZC5cblxuInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0IChvclxuIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlICJTdG9wSXRlcmF0aW9uIiB0byBiZSByYWlzZWQuIFRoZVxucmV0dXJuZWQgdmFsdWUgKGlmIGFueSkgaXMgdXNlZCBhcyBhbiBhcmd1bWVudCB0byBjb25zdHJ1Y3RcbiJTdG9wSXRlcmF0aW9uIiBhbmQgYmVjb21lcyB0aGUgIlN0b3BJdGVyYXRpb24udmFsdWUiIGF0dHJpYnV0ZS5cbicsCi0gJ3NlcXVlbmNlLXR5cGVzJzogdSdcbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAiY2xlYXIoKSIsXG4ic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIlxuYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy5cblRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgYWJzdHJhY3QgYmFzZVxuY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLFxuIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXNcbnNob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsXG4iaW5zZXJ0KCkiLCAicG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uXG5zdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50XG5hZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsXG4iX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWRcbmJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciBzZXF1ZW5jZXMsIGl0XG5zaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgcmVjb21tZW5kZWQgdGhhdCBib3RoXG5tYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCB0byBhbGxvd1xuZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgIl9faXRlcl9fKCkiXG5zaG91bGQgYmUgdGhlIHNhbWUgYXMgImtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiIG1ldGhvZFxuICAgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2xlbmd0aF9oaW50X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCByZXR1cm4gYW5cbiAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyIG9yIGxlc3MgdGhhblxuICAgdGhlIGFjdHVhbCBsZW5ndGgpLiBUaGUgbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciAiPj0iIDAuIFRoaXNcbiAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCBmb3JcbiAgIGNvcnJlY3RuZXNzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbk5vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgbWV0aG9kcy5cbiAgQSBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aCAiTm9uZSIuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgKnRoaXMgc2VjdGlvbiBpbiB0aGVcbiAgIGxhbmd1YWdlIHJlZmVyZW5jZSouXG4nLAotICdzaGlmdGluZyc6IHUnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGZsb29yIGRpdmlzaW9uIGJ5ICJwb3coMixuKSIuXG5BIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICJwb3coMixuKSIuXG5cbk5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIHJlcXVpcmVkIHRvIGJlIGF0IG1vc3QgInN5cy5tYXhzaXplIi4gIElmIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCi0gJ3NsaWNpbmdzJzogdSdcblNsaWNpbmdzXG4qKioqKioqKlxuXG5BIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCBhXG5zdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgYXNcbnRhcmdldHMgaW4gYXNzaWdubWVudCBvciAiZGVsIiBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYSBzbGljaW5nOlxuXG4gICBzbGljaW5nICAgICAgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbiAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuICAgcHJvcGVyX3NsaWNlIDo6PSBbbG93ZXJfYm91bmRdICI6IiBbdXBwZXJfYm91bmRdIFsgIjoiIFtzdHJpZGVdIF1cbiAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgdXBwZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cblxuVGhlcmUgaXMgYW1iaWd1aXR5IGluIHRoZSBmb3JtYWwgc3ludGF4IGhlcmU6IGFueXRoaW5nIHRoYXQgbG9va3MgbGlrZVxuYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSBzdWJzY3JpcHRpb25cbmNhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyIGNvbXBsaWNhdGluZyB0aGVcbnN5bnRheCwgdGhpcyBpcyBkaXNhbWJpZ3VhdGVkIGJ5IGRlZmluaW5nIHRoYXQgaW4gdGhpcyBjYXNlIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuY29udGFpbnMgbm8gcHJvcGVyIHNsaWNlKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgaW5kZXhlZFxuKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgd2l0aCBhXG5rZXkgdGhhdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBzbGljZSBsaXN0LCBhcyBmb2xsb3dzLiAgSWYgdGhlIHNsaWNlXG5saXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG5jb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgbG9uZVxuc2xpY2UgaXRlbSBpcyB0aGUga2V5LiAgVGhlIGNvbnZlcnNpb24gb2YgYSBzbGljZSBpdGVtIHRoYXQgaXMgYW5cbmV4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgaXMgYVxuc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kikgd2hvc2VcbiJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlXG5leHByZXNzaW9ucyBnaXZlbiBhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSxcbnJlc3BlY3RpdmVseSwgc3Vic3RpdHV0aW5nICJOb25lIiBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6IHUnXG5TcGVjaWFsIEF0dHJpYnV0ZXNcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIHNldmVyYWxcbm9iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSBub3QgcmVwb3J0ZWRcbmJ5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuXG5jbGFzcy5fX3N1YmNsYXNzZXNfXygpXG5cbiAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgaW1tZWRpYXRlXG4gICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlIHJlZmVyZW5jZXNcbiAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuXG4gICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbiAgICAgIFs8Y2xhc3MgXCdib29sXCc+XVxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSBmb3VuZFxuICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoKkJhc2ljIGN1c3RvbWl6YXRpb24qKS5cblxuWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksXG4gICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbiAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIi5cbkV4Y2VwdCB3aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuXG5leGNlcHRpb24gd2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5XG4iQXR0cmlidXRlRXJyb3IiIG9yICJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlXG4gICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlIHRoaXJkIGNhblxuICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gQ2lyY3VsYXJcbiAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgdXAgd2hlbiB0aGVcbiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLiBSZWZlclxuICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAgIGFib3V0IHRoaXMgdG9waWMuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXNcbiAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG9cbiAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgcmV0dXJuXG4gICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXRcbiAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJmb3JtYXQoKSIgYW5kXG4gICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlIHN0cmluZ1xuICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgKnN0cmluZypcbiAgIG9iamVjdC5cblxuICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCB0aGVyZSBpcyBub1xuICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYVxuICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG5cbiAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgIm9iamVjdCJcbiAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG5cbm9iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuXG4gICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgInN0ci5mb3JtYXQoKSIgbWV0aG9kIG9mIGNsYXNzICJzdHIiKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGFcbiAgIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvXG4gICB0aGUgdHlwZSBpbXBsZW1lbnRpbmcgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGxcbiAgIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhXG4gICBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgIm9iamVjdCIgaXRzZWxmXG4gICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4gICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyBpcyBhc1xuICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICJ4Ll9fbGVfXyh5KSIsXG4gICAieD09eSIgY2FsbHMgInguX19lcV9fKHkpIiwgInghPXkiIGNhbGxzICJ4Ll9fbmVfXyh5KSIsICJ4PnkiIGNhbGxzXG4gICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gIk5vdEltcGxlbWVudGVkIlxuICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciBvZlxuICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkIGZvciBhXG4gICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiBhbnkgdmFsdWUsXG4gICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiBjb250ZXh0IChlLmcuLFxuICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgImJvb2woKSJcbiAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yIGZhbHNlLlxuXG4gICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCBpbnZlcnRzIHRoZVxuICAgcmVzdWx0IHVubGVzcyBpdCBpcyAiTm90SW1wbGVtZW50ZWQiLiAgVGhlcmUgYXJlIG5vIG90aGVyIGltcGxpZWRcbiAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgZXhhbXBsZSwgdGhlXG4gICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyBhdXRvbWF0aWNhbGx5XG4gICBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdCBvcGVyYXRpb24sIHNlZVxuICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cblxuICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCBub3RlcyBvblxuICAgY3JlYXRpbmcgKmhhc2hhYmxlKiBvYmplY3RzIHdoaWNoIHN1cHBvcnQgY3VzdG9tIGNvbXBhcmlzb25cbiAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuXG4gICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICh0byBiZSB1c2VkXG4gICB3aGVuIHRoZSBsZWZ0IGFyZ3VtZW50IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiBidXQgdGhlIHJpZ2h0XG4gICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzIHJlZmxlY3Rpb24sXG4gICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uIElmIHRoZVxuICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhXG4gICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwncyB0eXBlLCB0aGVcbiAgIHJlZmxlY3RlZCBtZXRob2Qgb2YgdGhlIHJpZ2h0IG9wZXJhbmQgaGFzIHByaW9yaXR5LCBvdGhlcndpc2UgdGhlXG4gICBsZWZ0IG9wZXJhbmRcJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgaXMgbm90XG4gICBjb25zaWRlcmVkLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyBvbiBtZW1iZXJzXG4gICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICJkaWN0Ii5cbiAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCBwcm9wZXJ0eVxuICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlOyBpdCBpc1xuICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpIHRoZSBoYXNoXG4gICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSBwYXJ0IGluXG4gICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiBvYmplY3RcJ3NcbiAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAiUHlfc3NpemVfdCIuICBUaGlzXG4gICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gMzItYml0XG4gICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiBhbGxcbiAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAicHl0aG9uIC1jXG4gICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAiX19lcV9fKCkiXG4gICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgaXRlbXMgaW5cbiAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyBhbmRcbiAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4gICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSBjb2xsZWN0aW9uc1xuICAgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlIG9iamVjdFwncyBoYXNoXG4gICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gaGFzaCh5KSIuXG5cbiAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICJfX2hhc2hfXygpIlxuICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgV2hlbiB0aGVcbiAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3NcbiAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG9cbiAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4gICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlIGludGVycHJldGVyXG4gICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbiAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gc3VwcHJlc3NcbiAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzXG4gICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgdGhhdFxuICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgY2FsbC5cblxuICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmRcbiAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS5cbiAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uXG4gICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mXG4gICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLVxuICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlXG4gICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuXG4gICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4gICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mXG4gICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSBndWFyYW50ZWVzXG4gICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gMzItYml0IGFuZFxuICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90XG4gICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzIGFyZVxuICAgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAieC5uYW1lIikgZm9yXG5jbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLiBUaGlzXG4gICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzIGRvbmUgYm90aCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbiAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlIHRoYXQgYXRcbiAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5IG5vdFxuICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICJfX2dldGF0dHJfXygpIixcbiAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbiAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgbWV0aG9kXG4gICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpblxuICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3NcbiAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3JcbiAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbFxuICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4XG4gICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsIG9iai5uYW1lIiBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gImRpcigpIiBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZFxuICAgc29ydHMgaXQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICJOb25lIiB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gIkF0dHJpYnV0ZUVycm9yIlxuICAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5UaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAiaW5zcGVjdCIgbW9kdWxlIGFzXG5zcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzXG5hcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3NcbmF0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiBpbnN0YW5jZSBvZiB0aGVcbmdpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzIHRoZSBmaXJzdFxucG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzIGF0dHJpYnV0ZSBmb3JcbnVuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCBhbmRcbiJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LCBpdFxuaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiYS54IiBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG4idHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAiYS54Ii4gSG93XG50aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAic3VwZXIoQixcbiAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgY2xhc3MgIkEiXG4gICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3Igd2l0aCB0aGVcbiAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbmRvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsIHJldHVyblxudGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgb2JqZWN0XCdzXG5pbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiBhbmQvb3JcbiJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyBuZWl0aGVyLCBpdCBpc1xuYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lIGJvdGhcbiJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZVxuIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAiX19nZXRfXygpIlxuZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluXG5jb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICJjbGFzc21ldGhvZCgpIikgYXJlXG5pbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuLS0tLS0tLS0tXG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICpfX3Nsb3RzX18qXG4gICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgdGhlXG4gICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgZWFjaFxuICAgaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAiQXR0cmlidXRlRXJyb3IiLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXNcbiAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0c1xuICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZVxuICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlXG4gIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS5cbiAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAiYnl0ZXMiIGFuZCAidHVwbGUiLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3NcbiAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuXG5cbkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5CeSBkZWZhdWx0LCBjbGFzc2VzIGFyZSBjb25zdHJ1Y3RlZCB1c2luZyAidHlwZSgpIi4gVGhlIGNsYXNzIGJvZHkgaXNcbmV4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0byB0aGVcbnJlc3VsdCBvZiAidHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKSIuXG5cblRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlXG4ibWV0YWNsYXNzIiBrZXl3b3JkIGFyZ3VtZW50IGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGxpbmUsIG9yIGJ5XG5pbmhlcml0aW5nIGZyb20gYW4gZXhpc3RpbmcgY2xhc3MgdGhhdCBpbmNsdWRlZCBzdWNoIGFuIGFyZ3VtZW50LiBJblxudGhlIGZvbGxvd2luZyBleGFtcGxlLCBib3RoICJNeUNsYXNzIiBhbmQgIk15U3ViY2xhc3MiIGFyZSBpbnN0YW5jZXNcbm9mICJNZXRhIjpcblxuICAgY2xhc3MgTWV0YSh0eXBlKTpcbiAgICAgICBwYXNzXG5cbiAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU1ldGEpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlTdWJjbGFzcyhNeUNsYXNzKTpcbiAgICAgICBwYXNzXG5cbkFueSBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbmFyZSBwYXNzZWQgdGhyb3VnaCB0byBhbGwgbWV0YWNsYXNzIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGJlbG93LlxuXG5XaGVuIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBleGVjdXRlZCwgdGhlIGZvbGxvd2luZyBzdGVwcyBvY2N1cjpcblxuKiB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWRcblxuKiB0aGUgY2xhc3MgbmFtZXNwYWNlIGlzIHByZXBhcmVkXG5cbiogdGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWRcblxuKiB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWRcblxuXG5EZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgZm9yIGEgY2xhc3MgZGVmaW5pdGlvbiBpcyBkZXRlcm1pbmVkIGFzXG5mb2xsb3dzOlxuXG4qIGlmIG5vIGJhc2VzIGFuZCBubyBleHBsaWNpdCBtZXRhY2xhc3MgYXJlIGdpdmVuLCB0aGVuICJ0eXBlKCkiIGlzXG4gIHVzZWRcblxuKiBpZiBhbiBleHBsaWNpdCBtZXRhY2xhc3MgaXMgZ2l2ZW4gYW5kIGl0IGlzICpub3QqIGFuIGluc3RhbmNlIG9mXG4gICJ0eXBlKCkiLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuXG4qIGlmIGFuIGluc3RhbmNlIG9mICJ0eXBlKCkiIGlzIGdpdmVuIGFzIHRoZSBleHBsaWNpdCBtZXRhY2xhc3MsIG9yXG4gIGJhc2VzIGFyZSBkZWZpbmVkLCB0aGVuIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHVzZWRcblxuVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgc2VsZWN0ZWQgZnJvbSB0aGUgZXhwbGljaXRseSBzcGVjaWZpZWRcbm1ldGFjbGFzcyAoaWYgYW55KSBhbmQgdGhlIG1ldGFjbGFzc2VzIChpLmUuICJ0eXBlKGNscykiKSBvZiBhbGxcbnNwZWNpZmllZCBiYXNlIGNsYXNzZXMuIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIG9uZSB3aGljaCBpcyBhXG5zdWJ0eXBlIG9mICphbGwqIG9mIHRoZXNlIGNhbmRpZGF0ZSBtZXRhY2xhc3Nlcy4gSWYgbm9uZSBvZiB0aGVcbmNhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cyB0aGF0IGNyaXRlcmlvbiwgdGhlbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxud2lsbCBmYWlsIHdpdGggIlR5cGVFcnJvciIuXG5cblxuUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLFxuaXQgaXMgY2FsbGVkIGFzICJuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSwgYmFzZXMsXG4qKmt3ZHMpIiAod2hlcmUgdGhlIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZSBmcm9tXG50aGUgY2xhc3MgZGVmaW5pdGlvbikuXG5cbklmIHRoZSBtZXRhY2xhc3MgaGFzIG5vICJfX3ByZXBhcmVfXyIgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5ICJkaWN0KCkiIGluc3RhbmNlLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMwMDBcblxuICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG5cblxuRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksIGdsb2JhbHMoKSxcbm5hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICJleGVjKCkiIGlzIHRoYXRcbmxleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgbWV0aG9kcykgdG9cbnJlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgY2xhc3NcbmRlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuXG5Ib3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgZnVuY3Rpb24sXG5tZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzIGRlZmluZWQgYXQgdGhlXG5jbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgZmlyc3RcbnBhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGF0IGFsbFxuZnJvbSBzdGF0aWMgbWV0aG9kcy5cblxuXG5DcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSBjbGFzc1xuYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgIm1ldGFjbGFzcyhuYW1lLCBiYXNlcyxcbm5hbWVzcGFjZSwgKiprd2RzKSIgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZVxuYXMgdGhvc2UgcGFzc2VkIHRvICJfX3ByZXBhcmVfXyIpLlxuXG5UaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSB6ZXJvLVxuYXJndW1lbnQgZm9ybSBvZiAic3VwZXIoKSIuICJfX2NsYXNzX18iIGlzIGFuIGltcGxpY2l0IGNsb3N1cmVcbnJlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXJcbnRvIGVpdGhlciAiX19jbGFzc19fIiBvciAic3VwZXIiLiBUaGlzIGFsbG93cyB0aGUgemVybyBhcmd1bWVudCBmb3JtXG5vZiAic3VwZXIoKSIgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkIGJhc2VkIG9uXG5sZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvIG1ha2UgdGhlXG5jdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoZVxubWV0aG9kLlxuXG5BZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3NcbmRlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLlxuXG5XaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgcHJvdmlkZWQgYXNcbnRoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIHN0YW5kYXJkIFB5dGhvbiBkaWN0aW9uYXJ5IGFuZFxudGhlIG9yaWdpbmFsIG9iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBiZWNvbWVzIHRoZSAiX19kaWN0X18iXG5hdHRyaWJ1dGUgb2YgdGhlIGNsYXNzIG9iamVjdC5cblxuU2VlIGFsc286ICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuXG4gICAgIERlc2NyaWJlcyB0aGUgaW1wbGljaXQgIl9fY2xhc3NfXyIgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG4iY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiIHRvIHJlbWVtYmVyIHRoZSBvcmRlciB0aGF0IGNsYXNzIHZhcmlhYmxlc1xuYXJlIGRlZmluZWQ6XG5cbiAgIGNsYXNzIE9yZGVyZWRDbGFzcyh0eXBlKTpcblxuICAgICAgIEBjbGFzc21ldGhvZFxuICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgKiprd2RzKTpcbiAgICAgICAgICAgcmVzdWx0ID0gdHlwZS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGRpY3QobmFtZXNwYWNlKSlcbiAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpXG4gICAgICAgICAgIHJldHVybiByZXN1bHRcblxuICAgY2xhc3MgQShtZXRhY2xhc3M9T3JkZXJlZENsYXNzKTpcbiAgICAgICBkZWYgb25lKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHR3byhzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0aHJlZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiBmb3VyKHNlbGYpOiBwYXNzXG5cbiAgID4+PiBBLm1lbWJlcnNcbiAgIChcJ19fbW9kdWxlX19cJywgXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnLCBcJ2ZvdXJcJylcblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzIGJlZ2luc1xud2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHMgYW5kXG5hdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgZ2V0c1xuaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSBvcmRlcmVkXG5kaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG4iaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5JbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzIGluXG5vcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuXG5Ob3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlIChtZXRhY2xhc3MpIG9mIGFcbmNsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSBhY3R1YWwgY2xhc3MuXG5UaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0IGFyZSBjYWxsZWRcbm9uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhIGNsYXNzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG5cbiAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICJpc2luc3RhbmNlKCkiIGFuZFxuICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiBhbmRcbiAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgZnVuY3Rpb25hbGl0eSBpblxuICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICJhYmMiXG4gICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19wb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLFxuICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYVxuICAgY2xhc3MgdGhhdCBoYXMgYW4gIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuXG4gICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byB1c2luZ1xuICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0b1xuICAgIl9fdHJ1ZWRpdl9fKCkiLiAgTm90ZSB0aGF0ICJfX3Bvd19fKCkiIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdFxuICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW5cbiAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuXG5vYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycG93X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZClcbiAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXNcbiAgIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZlxuICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCAtXG4gICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gIl9fcnN1Yl9fKCkiXG4gICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAiX19ycG93X18oKSIgKHRoZVxuICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG5cbiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2RcbiAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdFxuICAgICBvcGVyYW5kXCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3Mgc3ViY2xhc3Nlc1xuICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnNcJyBvcGVyYXRpb25zLlxuXG5vYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCBhcml0aG1ldGljXG4gICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICIqKj0iLFxuICAgIjw8PSIsICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgdG9cbiAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gdGhlIHJlc3VsdFxuICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWNcbiAgIG1ldGhvZCBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlXG4gICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3NcbiAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAieCA9XG4gICB4Ll9faWFkZF9fKHkpIiAuIE90aGVyd2lzZSwgInguX19hZGRfXyh5KSIgYW5kICJ5Ll9fcmFkZF9fKHgpIiBhcmVcbiAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gY2VydGFpblxuICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGVycm9yc1xuICAgKHNlZSAqV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbXCdpdGVtXCddIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZVxuICAgYWRkaXRpb24gd29ya3M/KiksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiB0aGUgZGF0YVxuICAgbW9kZWwuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19mbG9hdF9fKHNlbGYpXG5vYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgUHl0aG9uIG5lZWRzXG4gICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgb2JqZWN0IChzdWNoXG4gICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgIm9jdCgpIlxuICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWVyaWNcbiAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuXG4gICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCB3aGVuXG4gICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSBkZWZpbmVkLCBhbmRcbiAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuXG5cbldpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gKlRoZSB3aXRoXG5zdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgbWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSBpbXBsZW1lbnRlZCBieVxuYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2YgdGhlc2Vcbm1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWwgd2hlblxuaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uIHByb3ZpZGVzXG5zaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlIGludGVycHJldGVyLCBhdFxudGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBtZXRob2RzICh0aGVcbnNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gb3JkZXIgdG8gYmVcbmNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAotICdzdHJpbmctbWV0aG9kcyc6IHUnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSAic3RyLmZvcm1hdCgpIixcbipGb3JtYXQgU3RyaW5nIFN5bnRheCogYW5kICpDdXN0b20gU3RyaW5nIEZvcm1hdHRpbmcqKSBhbmQgdGhlIG90aGVyXG5iYXNlZCBvbiBDICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2ZcbnR5cGVzIGFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3JcbnRoZSBjYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSAicmUiIG1vZHVsZSkuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jYXNlZm9sZCgpXG5cbiAgIFJldHVybiBhIGNhc2Vmb2xkZWQgY29weSBvZiB0aGUgc3RyaW5nLiBDYXNlZm9sZGVkIHN0cmluZ3MgbWF5IGJlXG4gICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cblxuICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSBhZ2dyZXNzaXZlIGJlY2F1c2VcbiAgIGl0IGlzIGludGVuZGVkIHRvIHJlbW92ZSBhbGwgY2FzZSBkaXN0aW5jdGlvbnMgaW4gYSBzdHJpbmcuIEZvclxuICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ1x4ZGZcJyIgaXMgZXF1aXZhbGVudCB0byAiInNzIiIuXG4gICBTaW5jZSBpdCBpcyBhbHJlYWR5IGxvd2VyY2FzZSwgImxvd2VyKCkiIHdvdWxkIGRvIG5vdGhpbmcgdG8gIlwnXHhkZlwnIjtcbiAgICJjYXNlZm9sZCgpIiBjb252ZXJ0cyBpdCB0byAiInNzIiIuXG5cbiAgIFRoZSBjYXNlZm9sZGluZyBhbGdvcml0aG0gaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSSBzcGFjZSkuIFRoZVxuICAgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvXG4gICAibGVuKHMpIi5cblxuc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKnN1YipcbiAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kXG4gICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cbnN0ci5lbmNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyBvYmplY3QuIERlZmF1bHRcbiAgIGVuY29kaW5nIGlzICJcJ3V0Zi04XCciLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyAiXCdzdHJpY3RcJyIsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuIE90aGVyIHBvc3NpYmxlXG4gICB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiwgIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4gICAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHZpYVxuICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gKkVycm9yIEhhbmRsZXJzKi4gRm9yIGEgbGlzdFxuICAgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmQgRW5jb2RpbmdzKi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG5cbnN0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHN1ZmZpeGVzXG4gICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyh0YWJzaXplPTgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kIHRoZVxuICAgZ2l2ZW4gdGFiIHNpemUuICBUYWIgcG9zaXRpb25zIG9jY3VyIGV2ZXJ5ICp0YWJzaXplKiBjaGFyYWN0ZXJzXG4gICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2IGFuZCBzbyBvbikuXG4gICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvIGFuZCB0aGVcbiAgIHN0cmluZyBpcyBleGFtaW5lZCBjaGFyYWN0ZXIgYnkgY2hhcmFjdGVyLiAgSWYgdGhlIGNoYXJhY3RlciBpcyBhXG4gICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIHJlc3VsdFxuICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiBwb3NpdGlvbi4gKFRoZVxuICAgdGFiIGNoYXJhY3RlciBpdHNlbGYgaXMgbm90IGNvcGllZC4pICBJZiB0aGUgY2hhcmFjdGVyIGlzIGEgbmV3bGluZVxuICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCBjb2x1bW4gaXNcbiAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWQgYW5kIHRoZVxuICAgY3VycmVudCBjb2x1bW4gaXMgaW5jcmVtZW50ZWQgYnkgb25lIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZVxuICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cblxuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKClcbiAgIFwnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzRcJ1xuICAgPj4+IFwnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzRcJy5leHBhbmR0YWJzKDQpXG4gICBcJzAxICAwMTIgMDEyMyAgICAwMTIzNFwnXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCB3aXRoaW4gdGhlIHNsaWNlICJzW3N0YXJ0OmVuZF0iLiAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCpcbiAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gIi0xIiBpZlxuICAgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgImZpbmQoKSIgbWV0aG9kIHNob3VsZCBiZSB1c2VkIG9ubHkgaWYgeW91IG5lZWQgdG8ga25vd1xuICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciBub3QsXG4gICAgIHVzZSB0aGUgImluIiBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzICJ7fSIuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgIm1hcHBpbmciIGlzIHVzZWRcbiAgIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgImRpY3QiLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yIGV4YW1wbGVcbiAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyICJjIlxuICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgIlRydWUiOlxuICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAiYy5pc251bWVyaWMoKSIuXG5cbnN0ci5pc2FscGhhKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFiZXRpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEFscGhhYmV0aWNcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJMZXR0ZXIiLCBpLmUuLCB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSB0aGF0IHRoaXMgaXNcbiAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgU3RhbmRhcmQuXG5cbnN0ci5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsIGNoYXJhY3RlcnNcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIERlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzIGNhdGVnb3J5XG4gICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsIGUuZy4gVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgaW5jbHVkZSBkZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFuZCBkaWdpdHMgdGhhdCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcsIHN1Y2ggYXMgdGhlXG4gICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzIGEgY2hhcmFjdGVyXG4gICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4gICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cblxuc3RyLmlzaWRlbnRpZmllcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB2YWxpZCBpZGVudGlmaWVyIGFjY29yZGluZyB0byB0aGVcbiAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyouXG5cbiAgIFVzZSAia2V5d29yZC5pc2tleXdvcmQoKSIgdG8gdGVzdCBmb3IgcmVzZXJ2ZWQgaWRlbnRpZmllcnMgc3VjaCBhc1xuICAgImRlZiIgYW5kICJjbGFzcyIuXG5cbnN0ci5pc2xvd2VyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIGxvd2VyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzbnVtZXJpYygpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgY2hhcmFjdGVycyxcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuIE51bWVyaWNcbiAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBoYXZlXG4gICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OXG4gICBPTkUgRklGVEguICBGb3JtYWxseSwgbnVtZXJpYyBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIHRoZVxuICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCBvclxuICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG5cbnN0ci5pc3ByaW50YWJsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIHByaW50YWJsZSBvciB0aGVcbiAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlIGNoYXJhY3RlcnMgYXJlXG4gICB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlIGFzXG4gICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICgweDIwKSB3aGljaCBpc1xuICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzIGluIHRoaXNcbiAgIGNvbnRleHQgYXJlIHRob3NlIHdoaWNoIHNob3VsZCBub3QgYmUgZXNjYXBlZCB3aGVuICJyZXByKCkiIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gInN5cy5zdGRvdXQiIG9yICJzeXMuc3RkZXJyIi4pXG5cbnN0ci5pc3NwYWNlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmdcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBXaGl0ZXNwYWNlXG4gICBjaGFyYWN0ZXJzICBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCBiaWRpcmVjdGlvbmFsXG4gICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG5cbnN0ci5pc3RpdGxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCB0aGVyZSBpcyBhdFxuICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5IG9ubHlcbiAgIGZvbGxvdyB1bmNhc2VkIGNoYXJhY3RlcnMgYW5kIGxvd2VyY2FzZSBjaGFyYWN0ZXJzIG9ubHkgY2FzZWQgb25lcy5cbiAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmpvaW4oaXRlcmFibGUpXG5cbiAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5ncyBpbiB0aGVcbiAgICppdGVyYWJsZSogKml0ZXJhYmxlKi4gIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgICAgXCdzcGFjaW91cyAgIFwnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICAic3RyLnRyYW5zbGF0ZSgpIi5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUlcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gImxlbihzKSIuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0IGZvciBzcGxpdHRpbmdcbiAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggaXNcbiAgIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICAgICBcJyAgIHNwYWNpb3VzXCdcbiAgICAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICAgICBcJ21pc3Npc3NcJ1xuXG5zdHIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgIm1heHNwbGl0KzEiXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgdGhlbiB0aGVyZSBpc1xuICAgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICAiXCcxLCwyXCcuc3BsaXQoXCcsXCcpIiByZXR1cm5zICJbXCcxXCcsIFwnXCcsIFwnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4gICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgICJcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpIiByZXR1cm5zICJbXCcxXCcsIFwnMlwnLCBcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4gICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAiW1wnXCddIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEsMiwzXCcuc3BsaXQoXCcsXCcsIG1heHNwbGl0PTEpXG4gICAgICBbXCcxXCcsIFwnMiwzXCddXG4gICAgICA+Pj4gXCcxLDIsLDMsXCcuc3BsaXQoXCcsXCcpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJ1wnLCBcJzNcJywgXCdcJ11cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhICJOb25lIiBzZXBhcmF0b3IgcmV0dXJucyAiW10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdCgpXG4gICAgICBbXCcxXCcsIFwnMlwnLCBcJzNcJ11cbiAgICAgID4+PiBcJzEgMiAzXCcuc3BsaXQobWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyIDNcJ11cbiAgICAgID4+PiBcJyAgIDEgICAyICAgMyAgIFwnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG4gICBUaGlzIG1ldGhvZCBzcGxpdHMgb24gdGhlIGZvbGxvd2luZyBsaW5lIGJvdW5kYXJpZXMuICBJblxuICAgcGFydGljdWxhciwgdGhlIGJvdW5kYXJpZXMgYXJlIGEgc3VwZXJzZXQgb2YgKnVuaXZlcnNhbCBuZXdsaW5lcyouXG5cbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFJlcHJlc2VudGF0aW9uICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcciIgICAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcclxcbiIgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiArIExpbmUgRmVlZCAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lIFRhYnVsYXRpb24gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxmIiBvciAiXFx4MGMiICAgICAgICAgIHwgRm9ybSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFjIiAgICAgICAgICAgICAgICAgIHwgRmlsZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgU2VwYXJhdG9yICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDFlIiAgICAgICAgICAgICAgICAgIHwgUmVjb3JkIFNlcGFyYXRvciAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxceDg1IiAgICAgICAgICAgICAgICAgIHwgTmV4dCBMaW5lIChDMSBDb250cm9sIENvZGUpICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdTIwMjkiICAgICAgICAgICAgICAgIHwgUGFyYWdyYXBoIFNlcGFyYXRvciAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3Qgb2YgbGluZVxuICAgYm91bmRhcmllcy5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuXCcuc3BsaXRsaW5lcygpXG4gICAgICBbXCdhYiBjXCcsIFwnXCcsIFwnZGUgZmdcJywgXCdrbFwnXVxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4gICAgICBbXCdhYiBjXFxuXCcsIFwnXFxuXCcsIFwnZGUgZmdcXHJcJywgXCdrbFxcclxcblwnXVxuXG4gICBVbmxpa2UgInNwbGl0KCkiIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzIGdpdmVuLCB0aGlzXG4gICBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBsaXN0IGZvciB0aGUgZW1wdHkgc3RyaW5nLCBhbmQgYSB0ZXJtaW5hbFxuICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcblxuICAgICAgPj4+ICIiLnNwbGl0bGluZXMoKVxuICAgICAgW11cbiAgICAgID4+PiAiT25lIGxpbmVcXG4iLnNwbGl0bGluZXMoKVxuICAgICAgW1wnT25lIGxpbmVcJ11cblxuICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG5cbiAgICAgID4+PiBcJ1wnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdcJ11cbiAgICAgID4+PiBcJ1R3byBsaW5lc1xcblwnLnNwbGl0KFwnXFxuXCcpXG4gICAgICBbXCdUd28gbGluZXNcJywgXCdcJ11cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuICJUcnVlIiBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2UgcmV0dXJuXG4gICAiRmFsc2UiLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2sgZm9yLlxuICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cbiAgIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzXG4gICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmVcbiAgIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgICAgIFwnc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgICAgIFwnZXhhbXBsZVwnXG5cbiAgIFRoZSBvdXRlcm1vc3QgbGVhZGluZyBhbmQgdHJhaWxpbmcgKmNoYXJzKiBhcmd1bWVudCB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZCBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgbGVhZGluZ1xuICAgZW5kIHVudGlsIHJlYWNoaW5nIGEgc3RyaW5nIGNoYXJhY3RlciB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyBpbiAqY2hhcnMqLiBBIHNpbWlsYXIgYWN0aW9uIHRha2VzIHBsYWNlIG9uIHRoZVxuICAgdHJhaWxpbmcgZW5kLiBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nID0gXCcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICMzMiAuLi4uLi4uXCdcbiAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcChcJy4jISBcJylcbiAgICAgIFwnU2VjdGlvbiAzLjIuMSBJc3N1ZSAjMzJcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgICJzLnN3YXBjYXNlKCkuc3dhcGNhc2UoKSA9PSBzIi5cblxuc3RyLnRpdGxlKClcblxuICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgc3RhcnQgd2l0aCBhblxuICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBsb3dlcmNhc2UuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCdIZWxsbyB3b3JsZFwnLnRpdGxlKClcbiAgICAgIFwnSGVsbG8gV29ybGRcJ1xuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbiAgICAgIC4uLlxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZSh0YWJsZSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGluIHdoaWNoIGVhY2ggY2hhcmFjdGVyIGhhcyBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuICBUaGUgdGFibGUgbXVzdCBiZSBhbiBvYmplY3RcbiAgIHRoYXQgaW1wbGVtZW50cyBpbmRleGluZyB2aWEgIl9fZ2V0aXRlbV9fKCkiLCB0eXBpY2FsbHkgYSAqbWFwcGluZypcbiAgIG9yICpzZXF1ZW5jZSouICBXaGVuIGluZGV4ZWQgYnkgYSBVbmljb2RlIG9yZGluYWwgKGFuIGludGVnZXIpLCB0aGVcbiAgIHRhYmxlIG9iamVjdCBjYW4gZG8gYW55IG9mIHRoZSBmb2xsb3dpbmc6IHJldHVybiBhIFVuaWNvZGUgb3JkaW5hbFxuICAgb3IgYSBzdHJpbmcsIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIG9uZSBvciBtb3JlIG90aGVyIGNoYXJhY3RlcnM7XG4gICByZXR1cm4gIk5vbmUiLCB0byBkZWxldGUgdGhlIGNoYXJhY3RlciBmcm9tIHRoZSByZXR1cm4gc3RyaW5nOyBvclxuICAgcmFpc2UgYSAiTG9va3VwRXJyb3IiIGV4Y2VwdGlvbiwgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgdG8gaXRzZWxmLlxuXG4gICBZb3UgY2FuIHVzZSAic3RyLm1ha2V0cmFucygpIiB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgU2VlIGFsc28gdGhlICJjb2RlY3MiIG1vZHVsZSBmb3IgYSBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIHRvIGN1c3RvbVxuICAgY2hhcmFjdGVyIG1hcHBpbmdzLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0ICJzdHIudXBwZXIoKS5pc3VwcGVyKCkiIG1pZ2h0IGJlXG4gICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAiXCcwXCciIGRpZ2l0cyB0b1xuICAgbWFrZSBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gQSBsZWFkaW5nIHNpZ24gcHJlZml4XG4gICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAqYWZ0ZXIqIHRoZSBzaWduXG4gICBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmXG4gICAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4gICAgICBcJzAwMDQyXCdcbiAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuICAgICAgXCctMDA0MlwnXG4nLAotICdzdHJpbmdzJzogdSdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgIlIiIHwgIlUiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiXG4gICBzaG9ydGJ5dGVzICAgICA6Oj0gIlwnIiBzaG9ydGJ5dGVzaXRlbSogIlwnIiB8IFwnIlwnIHNob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuICAgbG9uZ2J5dGVzICAgICAgOjo9ICJcJ1wnXCciIGxvbmdieXRlc2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyBsb25nYnl0ZXNpdGVtKiBcJyIiIlwnXG4gICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgbG9uZ2J5dGVzaXRlbSAgOjo9IGxvbmdieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuICAgc2hvcnRieXRlc2NoYXIgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiIG9yIG5ld2xpbmUgb3IgdGhlIHF1b3RlPlxuICAgbG9uZ2J5dGVzY2hhciAgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgYnl0ZXNlc2NhcGVzZXEgOjo9ICJcXCIgPGFueSBBU0NJSSBjaGFyYWN0ZXI+XG5cbk9uZSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gbm90IGluZGljYXRlZCBieSB0aGVzZSBwcm9kdWN0aW9ucyBpcyB0aGF0XG53aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICJieXRlc3ByZWZpeCJcbmFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0IGlzIGRlZmluZWQgYnlcbnRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gaXNcbmdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nIGRlY2xhcmF0aW9ucyouXG5cbkluIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nXG5zaW5nbGUgcXVvdGVzICgiXCciKSBvciBkb3VibGUgcXVvdGVzICgiIiIpLiAgVGhleSBjYW4gYWxzbyBiZSBlbmNsb3NlZFxuaW4gbWF0Y2hpbmcgZ3JvdXBzIG9mIHRocmVlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzICh0aGVzZSBhcmVcbmdlbmVyYWxseSByZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgYmFja3NsYXNoXG4oIlxcIikgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSBhXG5zcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG5jaGFyYWN0ZXIuXG5cbkJ5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgcHJvZHVjZVxuYW4gaW5zdGFuY2Ugb2YgdGhlICJieXRlcyIgdHlwZSBpbnN0ZWFkIG9mIHRoZSAic3RyIiB0eXBlLiAgVGhleSBtYXlcbm9ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggb3JcbmdyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuXG5BcyBvZiBQeXRob24gMy4zIGl0IGlzIHBvc3NpYmxlIGFnYWluIHRvIHByZWZpeCBzdHJpbmcgbGl0ZXJhbHMgd2l0aCBhXG4idSIgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLlxuXG5Cb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG5sZXR0ZXIgIlwnclwnIiBvciAiXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZCB0cmVhdFxuYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyBsaXRlcmFscyxcbiJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS5cbkdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgdGhhblxuUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG5cbk5ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJcJ3JiXCciIHByZWZpeCBvZiByYXcgYnl0ZXMgbGl0ZXJhbHMgaGFzIGJlZW5cbmFkZGVkIGFzIGEgc3lub255bSBvZiAiXCdiclwnIi5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuKCJ1XCd2YWx1ZVwnIikgd2FzIHJlaW50cm9kdWNlZCB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgZHVhbFxuUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuXG5JbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxubGl0ZXJhbCwgaS5lLiBlaXRoZXIgIlwnIiBvciAiIiIuKVxuXG5Vbmxlc3MgYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzIGluIHN0cmluZ1xuYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZVxudXNlZCBieSBTdGFuZGFyZCBDLiAgVGhlIHJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgIlxcbmV3bGluZSIgICAgICAgIHwgQmFja3NsYXNoIGFuZCBuZXdsaW5lIGlnbm9yZWQgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFxcIiAgICAgICAgICAgICAgfCBCYWNrc2xhc2ggKCJcXCIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXFwnIiAgICAgICAgICAgICAgfCBTaW5nbGUgcXVvdGUgKCJcJyIpICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXCIiICAgICAgICAgICAgICB8IERvdWJsZSBxdW90ZSAoIiIiKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxhIiAgICAgICAgICAgICAgfCBBU0NJSSBCZWxsIChCRUwpICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYiIgICAgICAgICAgICAgIHwgQVNDSUkgQmFja3NwYWNlIChCUykgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGYiICAgICAgICAgICAgICB8IEFTQ0lJIEZvcm1mZWVkIChGRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxuIiAgICAgICAgICAgICAgfCBBU0NJSSBMaW5lZmVlZCAoTEYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcciIgICAgICAgICAgICAgIHwgQVNDSUkgQ2FycmlhZ2UgUmV0dXJuIChDUikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHQiICAgICAgICAgICAgICB8IEFTQ0lJIEhvcml6b250YWwgVGFiIChUQUIpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx2IiAgICAgICAgICAgICAgfCBBU0NJSSBWZXJ0aWNhbCBUYWIgKFZUKSAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcb29vIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggb2N0YWwgdmFsdWUgKm9vbyogIHwgKDEsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHhoaCIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIGhleCB2YWx1ZSAqaGgqICAgICB8ICgyLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Fc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx1eHh4eCIgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcVXh4eHh4eHh4IiAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgKDYpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuXG4yLiBVbmxpa2UgaW4gU3RhbmRhcmQgQywgZXhhY3RseSB0d28gaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZVxuICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlc1xuICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG5cbjQuIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBbMV0gaGFzIGJlZW5cbiAgIGFkZGVkLlxuXG41LiBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cbjYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgZWlnaHRcbiAgIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlXG5iYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSB2YWxpZFxuc3RyaW5nIGxpdGVyYWwgY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlXG5xdW90ZTsgInIiXFwiIiBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgY2Fubm90XG5lbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyBsaXRlcmFsXG5jYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2ggd291bGQgZXNjYXBlXG50aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSBiYWNrc2xhc2hcbmZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyBwYXJ0XG5vZiB0aGUgbGl0ZXJhbCwgKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicsCi0gJ3N1YnNjcmlwdGlvbnMnOiB1J1xuU3Vic2NyaXB0aW9uc1xuKioqKioqKioqKioqKlxuXG5BIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSBvciBsaXN0KVxub3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuXG4gICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3QgdGhhdCBzdXBwb3J0cyBzdWJzY3JpcHRpb25cbihsaXN0cyBvciBkaWN0aW9uYXJpZXMgZm9yIGV4YW1wbGUpLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgY2FuIHN1cHBvcnRcbnN1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgIl9fZ2V0aXRlbV9fKCkiXG5tZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSBsZW5ndGggb2YgdGhlXG5zZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2YgIngiKS5cblRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuIHRoZSBudW1iZXJcbm9mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgaXRlbSB3aG9zZVxuaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgZm9yXG5uZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nIG9jY3VycyBpbiB0aGUgb2JqZWN0XCdzICJfX2dldGl0ZW1fXygpIlxubWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvIGV4cGxpY2l0bHkgYWRkXG50aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKLSAndHJ1dGgnOiB1J1xuVHJ1dGggVmFsdWUgVGVzdGluZ1xuKioqKioqKioqKioqKioqKioqKlxuXG5Bbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbiJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qICJOb25lIlxuXG4qICJGYWxzZSJcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cblxuKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gICJfX2Jvb2xfXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbiAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG5vdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyAib3IiXG5hbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKLSAndHJ5JzogdSdcblRoZSAidHJ5IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50IHJhaXNlZFxudGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWZcbnByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlICJzeXMiIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2Vzc2VkIHZpYVxuInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mIHRoZVxuZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxucHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG5yZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICJmaW5hbGx5IlxuY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAiZmluYWxseSJcbmNsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG5pcyBkaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cbicsCi0gJ3R5cGVzJzogdSdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSAiTm9uZSIuIEl0XG4gICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsIGUuZy4sXG4gICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgIk5vdEltcGxlbWVudGVkIi4gTnVtZXJpYyBtZXRob2RzIGFuZCByaWNoIGNvbXBhcmlzb24gbWV0aG9kc1xuICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvclxuICAgdGhlIG9wZXJhbmRzIHByb3ZpZGVkLiAgKFRoZSBpbnRlcnByZXRlciB3aWxsIHRoZW4gdHJ5IHRoZVxuICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiAgIFNlZSAqSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMqIGZvciBtb3JlIGRldGFpbHMuXG5cbkVsbGlwc2lzXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lICJFbGxpcHNpcyIuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuIm51bWJlcnMuTnVtYmVyIlxuICAgVGhlc2UgYXJlIGNyZWF0ZWQgYnkgbnVtZXJpYyBsaXRlcmFscyBhbmQgcmV0dXJuZWQgYXMgcmVzdWx0cyBieVxuICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgTnVtZXJpY1xuICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbiAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbiAgIG51bWJlcnMsIGJ1dCBzdWJqZWN0IHRvIHRoZSBsaW1pdGF0aW9ucyBvZiBudW1lcmljYWwgcmVwcmVzZW50YXRpb25cbiAgIGluIGNvbXB1dGVycy5cblxuICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYW5kXG4gICBjb21wbGV4IG51bWJlcnM6XG5cbiAgICJudW1iZXJzLkludGVncmFsIlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoImludCIpXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoImJvb2wiKVxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4gICAgICAgICBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgdmFsdWVzICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgdGhlXG4gICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlXG4gICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kXG4gICAgICAgICAxLCByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSBjb2RlXG4gICAgICAgICBwb2ludHMuIEFsbCB0aGUgY29kZSBwb2ludHMgaW4gdGhlIHJhbmdlICJVKzAwMDAgLSBVKzEwRkZGRiJcbiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2VzblwndCBoYXZlIGEgImNoYXIiXG4gICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgcmVwcmVzZW50ZWRcbiAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICAgICAgICJvcmQoKSIgY29udmVydHMgYSBjb2RlIHBvaW50IGZyb20gaXRzIHN0cmluZyBmb3JtIHRvIGFuXG4gICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyBsZW5ndGhcbiAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0IGFcbiAgICAgICAgICJzdHIiIHRvICJieXRlcyIgdXNpbmcgdGhlIGdpdmVuIHRleHQgZW5jb2RpbmcsIGFuZFxuICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cblxuICAgICAgVHVwbGVzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgb2ZcbiAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4gICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgXCdzaW5nbGV0b25cJykgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uIGJ5XG4gICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbiAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuIGJlXG4gICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cblxuICAgICAgQnl0ZXNcbiAgICAgICAgIEEgYnl0ZXMgb2JqZWN0IGlzIGFuIGltbXV0YWJsZSBhcnJheS4gIFRoZSBpdGVtcyBhcmUgOC1iaXRcbiAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuICAgICAgICAgQnl0ZXMgbGl0ZXJhbHMgKGxpa2UgImJcJ2FiY1wnIikgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbiAgICAgICAgIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGRlY29kZWQgdG8gc3RyaW5ncyB2aWEgdGhlICJkZWNvZGUoKSJcbiAgICAgICAgIG1ldGhvZC5cblxuICAgTXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICBUaGVcbiAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCBvZlxuICAgICAgYXNzaWdubWVudCBhbmQgImRlbCIgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbiAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlIHByb3ZpZGVcbiAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbiAgICAgICAgIG9iamVjdHMuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlIG9mIGFcbiAgICAgIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgYXMgZG9lcyB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uICpEaWN0aW9uYXJ5IGRpc3BsYXlzKikuXG5cbiAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlcyAiZGJtLm5kYm0iIGFuZCAiZGJtLmdudSIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiXG4gICAgICBtb2R1bGUuXG5cbkNhbGxhYmxlIHR5cGVzXG4gICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4gICBzZWN0aW9uICpDYWxscyopIGNhbiBiZSBhcHBsaWVkOlxuXG4gICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4gICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4gICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvbiAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZTsgbm90IGluaGVyaXRlZCBieSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGVmYXVsdHNfXyIgICAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY29kZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZ2xvYmFsc19fIiAgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY29udGFpbiBiaW5kaW5ncyBmb3IgdGhlICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSByZXR1cm4gICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgaW5zdGFuY2VcbiAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAiX19uYW1lX18iXG4gICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIlxuICAgICAgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbWV0aG9kIHdhcyBkZWZpbmVkIGluLCBvciAiTm9uZSJcbiAgICAgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3RcbiAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpc1xuICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgV2hlbiBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZ1xuICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciBpc1xuICAgICAgdGhlIHNhbWUgYXMgZm9yIGEgZnVuY3Rpb24gb2JqZWN0LCBleGNlcHQgdGhhdCB0aGUgIl9fZnVuY19fIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiBhdHRyaWJ1dGVcbiAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4gICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCB3aGVuXG4gICAgICAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gImYoKSIsXG4gICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50IHRvXG4gICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgYWN0dWFsbHlcbiAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgIkMuZigxKSJcbiAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiZihDLDEpIiB3aGVyZSAiZiIgaXMgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbiAgICAgIHNlY3Rpb24gKlRoZSB5aWVsZCBzdGF0ZW1lbnQqKSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yIGZ1bmN0aW9uKi5cbiAgICAgIFN1Y2ggYSBmdW5jdGlvbiwgd2hlbiBjYWxsZWQsIGFsd2F5cyByZXR1cm5zIGFuIGl0ZXJhdG9yIG9iamVjdFxuICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICBjYWxsaW5nXG4gICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAieWllbGQiXG4gICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvclxuICAgICAgZmFsbHMgb2ZmIHRoZSBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIENvcm91dGluZSBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgImFzeW5jIGRlZiIgaXNcbiAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCxcbiAgICAgIHJldHVybnMgYSAqY29yb3V0aW5lKiBvYmplY3QuICBJdCBtYXkgY29udGFpbiAiYXdhaXQiXG4gICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiIHN0YXRlbWVudHMuXG4gICAgICBTZWUgYWxzbyB0aGUgKkNvcm91dGluZSBPYmplY3RzKiBzZWN0aW9uLlxuXG4gICBCdWlsdC1pbiBmdW5jdGlvbnNcbiAgICAgIEEgYnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYSBDIGZ1bmN0aW9uLlxuICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbiAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlIG9mXG4gICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsIHJlYWQtXG4gICAgICBvbmx5IGF0dHJpYnV0ZXM6ICJfX2RvY19fIiBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzXG4gICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4gICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWRcbiAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlICJfX3NlbGZfXyIgaXMgc2V0IHRvIHRoZVxuICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cblxuICAgQ2xhc3Nlc1xuICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXNcbiAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSBmb3JcbiAgICAgIGNsYXNzIHR5cGVzIHRoYXQgb3ZlcnJpZGUgIl9fbmV3X18oKSIuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG5cbiAgIENsYXNzIEluc3RhbmNlc1xuICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5IGRlZmluaW5nXG4gICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuICAgY3JlYXRlZCBieSB0aGUgKmltcG9ydCBzeXN0ZW0qIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4gICAiaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgYW5kIGJ1aWx0LWluICJfX2ltcG9ydF9fKCkiLiAgQSBtb2R1bGVcbiAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyBpc1xuICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbiAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4gICB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50XG4gICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbiAgIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlXG4gICB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lO1xuICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlXG4gICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlICJfX2ZpbGVfXyJcbiAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIENcbiAgIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvclxuICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXNcbiAgIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ3VzdG9tIGNsYXNzZXNcbiAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZVxuICAgc2VjdGlvbiAqQ2xhc3MgZGVmaW5pdGlvbnMqKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkXG4gICBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZFxuICAgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWQgdG9cbiAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggYWxsb3dcbiAgIGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXNcbiAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9yZWxlYXNlcy8yLjMvbXJvLy5cblxuICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCBhXG4gICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgYnlcbiAgIHRoZSBzdGF0aWMgbWV0aG9kIG9iamVjdC4gU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycypcbiAgIGZvciBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5XG4gICBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICJfX2RpY3RfXyIuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iIGlzXG4gICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzIHRoZVxuICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgdHVwbGVcbiAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiB0aGVcbiAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzIHRoZVxuICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbiAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvIHRyYW5zZm9ybWVkOyBzZWUgYWJvdmUgdW5kZXJcbiAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqIGZvciBhbm90aGVyIHdheVxuICAgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3MgIl9fZGljdF9fIi5cbiAgIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3RcJ3MgY2xhc3MgaGFzIGFcbiAgICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlIGxvb2t1cC5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZVwnc1xuICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzc1wncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4gICAiX19zZXRhdHRyX18oKSIgb3IgIl9fZGVsYXR0cl9fKCkiIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWQgaW5zdGVhZFxuICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZFxuICAgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzICJzeXMuc3RkaW4iLCAic3lzLnN0ZG91dCIgYW5kICJzeXMuc3RkZXJyIiBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICAiaW8uVGV4dElPQmFzZSIgYWJzdHJhY3QgY2xhc3MuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uIG5hbWU7XG4gICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciBvZlxuICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbiAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiIGlzIGFcbiAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSBzdHJpbmdcbiAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAiY29fY29uc3RzIlxuICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciBlbmNvZGluZyBhXG4gICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAiMHgwNCJcbiAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgYW5cbiAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgYXJiaXRyYXJ5XG4gICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbiAgICAgIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIpXG4gICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgb2JqZWN0XG4gICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgaXNcbiAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uIGVuYWJsZWQ7XG4gICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbiAgICAgIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgc3RhY2tcbiAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4gICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXNcbiAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzOyAiZl9sYXN0aSJcbiAgICAgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlXG4gICAgICBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2xpbmVubyIgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgb2ZcbiAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24ganVtcHNcbiAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSBkZWJ1Z2dlclxuICAgICAgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudCkgYnkgd3JpdGluZ1xuICAgICAgdG8gZl9saW5lbm8uXG5cbiAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBmcmFtZS5jbGVhcigpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCBieVxuICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCB0aGVcbiAgICAgICAgIGdlbmVyYXRvciBpcyBmaW5hbGl6ZWQuICBUaGlzIGhlbHBzIGJyZWFrIHJlZmVyZW5jZSBjeWNsZXNcbiAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4gICAgICAgICBleGNlcHRpb24gYW5kIHN0b3JpbmcgaXRzIHRyYWNlYmFjayBmb3IgbGF0ZXIgdXNlKS5cblxuICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLlxuXG4gICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgInN5cy5leGNfaW5mbygpIi4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyBub1xuICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSBmb3JtYXR0ZWQpXG4gICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsXG4gICAgICBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gdGhlXG4gICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksIG9yXG4gICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4gICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSBsaW5lXG4gICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluXG4gICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4gICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIG5vXG4gICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAiX19nZXRpdGVtX18oKSJcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAic3RvcCJcbiAgICAgIGlzIHRoZSB1cHBlciBib3VuZDsgInN0ZXAiIGlzIHRoZSBzdGVwIHZhbHVlOyBlYWNoIGlzICJOb25lIiBpZlxuICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic3RhdGljbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuXG4gICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuICAgICAgQSBjbGFzcyBtZXRob2Qgb2JqZWN0LCBsaWtlIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGlzIGEgd3JhcHBlclxuICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCBvYmplY3RcbiAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciBvZlxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgdXBvbiBzdWNoIHJldHJpZXZhbCBpcyBkZXNjcmliZWQgYWJvdmUsXG4gICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZFxuICAgICAgYnkgdGhlIGJ1aWx0LWluICJjbGFzc21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicsCi0gJ3R5cGVzZnVuY3Rpb25zJzogdSdcbkZ1bmN0aW9uc1xuKioqKioqKioqXG5cbkZ1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgb25seVxub3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cblxuVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiBmdW5jdGlvbnNcbmFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAgQm90aCBzdXBwb3J0IHRoZSBzYW1lIG9wZXJhdGlvbiAodG8gY2FsbFxudGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlIHRoZVxuZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cblxuU2VlICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21hcHBpbmcnOiB1J1xuTWFwcGluZyBUeXBlcyAtLS0gImRpY3QiXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuQSAqbWFwcGluZyogb2JqZWN0IG1hcHMgKmhhc2hhYmxlKiB2YWx1ZXMgdG8gYXJiaXRyYXJ5IG9iamVjdHMuXG5NYXBwaW5ncyBhcmUgbXV0YWJsZSBvYmplY3RzLiAgVGhlcmUgaXMgY3VycmVudGx5IG9ubHkgb25lIHN0YW5kYXJkXG5tYXBwaW5nIHR5cGUsIHRoZSAqZGljdGlvbmFyeSouICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdC1cbmluICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgIjEiIGFuZCAiMS4wIikgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleFxudGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzIHN0b3JlXG5mbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvIHVzZVxudGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mICJrZXk6XG52YWx1ZSIgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6ICJ7XCdqYWNrXCc6IDQwOTgsIFwnc2pvZXJkXCc6XG40MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgImRpY3QiXG5jb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdCgqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuY2xhc3MgY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG5cbiAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgY3JlYXRlZC5cbiAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nIG9iamVjdCwgYVxuICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzIHRoZSBtYXBwaW5nXG4gICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gKml0ZXJhYmxlKlxuICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiBpdGVyYWJsZSB3aXRoXG4gICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gYmVjb21lcyBhIGtleVxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBmb3IgdGhhdCBrZXlcbiAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlaXJcbiAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlIHZhbHVlIGZyb21cbiAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSBwb3NpdGlvbmFsXG4gICBhcmd1bWVudC5cblxuICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgZGljdGlvbmFyeSBlcXVhbFxuICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcblxuICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbiAgICAgID4+PiBiID0ge1wnb25lXCc6IDEsIFwndHdvXCc6IDIsIFwndGhyZWVcJzogM31cbiAgICAgID4+PiBjID0gZGljdCh6aXAoW1wnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJ10sIFsxLCAyLCAzXSkpXG4gICAgICA+Pj4gZCA9IGRpY3QoWyhcJ3R3b1wnLCAyKSwgKFwnb25lXCcsIDEpLCAoXCd0aHJlZVwnLCAzKV0pXG4gICAgICA+Pj4gZSA9IGRpY3Qoe1wndGhyZWVcJzogMywgXCdvbmVcJzogMSwgXCd0d29cJzogMn0pXG4gICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4gICAgICBUcnVlXG5cbiAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5IHdvcmtzIGZvclxuICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSB2YWxpZCBrZXlzXG4gICBjYW4gYmUgdXNlZC5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCAiX19taXNzaW5nX18oKSIgYW5kICprZXkqXG4gICAgICBpcyBub3QgcHJlc2VudCwgdGhlICJkW2tleV0iIG9wZXJhdGlvbiBjYWxscyB0aGF0IG1ldGhvZCB3aXRoXG4gICAgICB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlICJkW2tleV0iIG9wZXJhdGlvbiB0aGVuIHJldHVybnNcbiAgICAgIG9yIHJhaXNlcyB3aGF0ZXZlciBpcyByZXR1cm5lZCBvciByYWlzZWQgYnkgdGhlXG4gICAgICAiX19taXNzaW5nX18oa2V5KSIgY2FsbC4gTm8gb3RoZXIgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZVxuICAgICAgIl9fbWlzc2luZ19fKCkiLiBJZiAiX19taXNzaW5nX18oKSIgaXMgbm90IGRlZmluZWQsICJLZXlFcnJvciJcbiAgICAgIGlzIHJhaXNlZC4gIl9fbWlzc2luZ19fKCkiIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhblxuICAgICAgaW5zdGFuY2UgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFRoZSBleGFtcGxlIGFib3ZlIHNob3dzIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0aW9uIG9mXG4gICAgICAiY29sbGVjdGlvbnMuQ291bnRlciIuICBBIGRpZmZlcmVudCAiX19taXNzaW5nX18iIG1ldGhvZCBpcyB1c2VkXG4gICAgICBieSAiY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QiLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICprZXkqIGlzIG5vdFxuICAgICAgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG5cbiAgIGtleSBub3QgaW4gZFxuXG4gICAgICBFcXVpdmFsZW50IHRvICJub3Qga2V5IGluIGQiLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgIml0ZXIoZC5rZXlzKCkpIi5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvICJOb25lIiwgc29cbiAgICAgIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksIHZhbHVlKSJcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciBmcm9tIHRoZVxuICAgICAgZGljdGlvbmFyeS5cblxuICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cblxuICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiBub3QsIGluc2VydFxuICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICpkZWZhdWx0KlxuICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cblxuICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yIGFuXG4gICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciBpdGVyYWJsZXMgb2ZcbiAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogImQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKSIuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSAiKGtleSxcbiAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCBcJz49XCcsIFwnPlwnKSByYWlzZVxuICAgIlR5cGVFcnJvciIuXG5cblNlZSBhbHNvOiAidHlwZXMuTWFwcGluZ1Byb3h5VHlwZSIgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVhZC1vbmx5XG4gIHZpZXcgb2YgYSAiZGljdCIuXG5cblxuRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LmtleXMoKSIsICJkaWN0LnZhbHVlcygpIiBhbmRcbiJkaWN0Lml0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgdmlldyBvbiB0aGVcbmRpY3Rpb25hcnlcJ3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5IGNoYW5nZXMsXG50aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuXG5EaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyIHJlc3BlY3RpdmUgZGF0YSxcbmFuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG5cbmxlbihkaWN0dmlldylcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cblxuaXRlcihkaWN0dmlldylcblxuICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAocmVwcmVzZW50ZWQgYXNcbiAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiBwYWlycyB1c2luZ1xuICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyIHdheSB0b1xuICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluIGQuaXRlbXMoKV0iLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3Mga2V5cywgdmFsdWVzXG4gICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksIHZhbHVlKSJcbiAgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0ICIoa2V5LCB2YWx1ZSkiIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgImNvbGxlY3Rpb25zLmFiYy5TZXQiIGFyZSBhdmFpbGFibGUgKGZvciBleGFtcGxlLCAiPT0iLFxuIjwiLCBvciAiXiIpLlxuXG5BbiBleGFtcGxlIG9mIGRpY3Rpb25hcnkgdmlldyB1c2FnZTpcblxuICAgPj4+IGRpc2hlcyA9IHtcJ2VnZ3NcJzogMiwgXCdzYXVzYWdlXCc6IDEsIFwnYmFjb25cJzogMSwgXCdzcGFtXCc6IDUwMH1cbiAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuICAgPj4+IGtleXMgXiB7XCdzYXVzYWdlXCcsIFwnanVpY2VcJ31cbiAgIHtcJ2p1aWNlXCcsIFwnc2F1c2FnZVwnLCBcJ2JhY29uXCcsIFwnc3BhbVwnfVxuJywKLSAndHlwZXNtZXRob2RzJzogdSdcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgb24gbGlzdHMpXG5hbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCB3aXRoIHRoZVxudHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGUgInNlbGYiXG5hcmd1bWVudCB0byB0aGUgYXJndW1lbnQgbGlzdC4gIEJvdW5kIG1ldGhvZHMgaGF2ZSB0d28gc3BlY2lhbCByZWFkLVxub25seSBhdHRyaWJ1dGVzOiAibS5fX3NlbGZfXyIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kXG5vcGVyYXRlcywgYW5kICJtLl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gaW1wbGVtZW50aW5nIHRoZSBtZXRob2QuXG5DYWxsaW5nICJtKGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiIGlzIGNvbXBsZXRlbHkgZXF1aXZhbGVudCB0b1xuY2FsbGluZyAibS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cblxuTGlrZSBmdW5jdGlvbiBvYmplY3RzLCBib3VuZCBtZXRob2Qgb2JqZWN0cyBzdXBwb3J0IGdldHRpbmcgYXJiaXRyYXJ5XG5hdHRyaWJ1dGVzLiAgSG93ZXZlciwgc2luY2UgbWV0aG9kIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5IHN0b3JlZCBvblxudGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0ICgibWV0aC5fX2Z1bmNfXyIpLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuICBBdHRlbXB0aW5nIHRvIHNldCBhblxuYXR0cmlidXRlIG9uIGEgbWV0aG9kIHJlc3VsdHMgaW4gYW4gIkF0dHJpYnV0ZUVycm9yIiBiZWluZyByYWlzZWQuICBJblxub3JkZXIgdG8gc2V0IGEgbWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlXG51bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdDpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6XG4gICAuLi4gICAgICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnICAjIGNhblwndCBzZXQgb24gdGhlIG1ldGhvZFxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgQXR0cmlidXRlRXJyb3I6IFwnbWV0aG9kXCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgXCd3aG9hbWlcJ1xuICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuICAgPj4+IGMubWV0aG9kLndob2FtaVxuICAgXCdteSBuYW1lIGlzIG1ldGhvZFwnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ3R5cGVzbW9kdWxlcyc6IHUnXG5Nb2R1bGVzXG4qKioqKioqXG5cblRoZSBvbmx5IHNwZWNpYWwgb3BlcmF0aW9uIG9uIGEgbW9kdWxlIGlzIGF0dHJpYnV0ZSBhY2Nlc3M6ICJtLm5hbWUiLFxud2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWQgaW4gKm0qXCdzXG5zeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlIHRoYXQgdGhlXG4iaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uIG9uIGEgbW9kdWxlXG5vYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCBuYW1lZCAqZm9vKiB0b1xuZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSBtb2R1bGVcbm5hbWVkICpmb28qIHNvbWV3aGVyZS4pXG5cbkEgc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZVwncyBzeW1ib2wgdGFibGUuIE1vZGlmeWluZyB0aGlzXG5kaWN0aW9uYXJ5IHdpbGwgYWN0dWFsbHkgY2hhbmdlIHRoZSBtb2R1bGVcJ3Mgc3ltYm9sIHRhYmxlLCBidXQgZGlyZWN0XG5hc3NpZ25tZW50IHRvIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW4gd3JpdGVcbiJtLl9fZGljdF9fW1wnYVwnXSA9IDEiLCB3aGljaCBkZWZpbmVzICJtLmEiIHRvIGJlICIxIiwgYnV0IHlvdSBjYW5cJ3RcbndyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5IGlzIG5vdFxucmVjb21tZW5kZWQuXG5cbk1vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPG1vZHVsZVxuXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlIHdyaXR0ZW4gYXNcbiI8bW9kdWxlIFwnb3NcJyBmcm9tIFwnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAotICd0eXBlc3NlcSc6IHUnXG5TZXF1ZW5jZSBUeXBlcyAtLS0gImxpc3QiLCAidHVwbGUiLCAicmFuZ2UiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kIHJhbmdlXG5vYmplY3RzLiBBZGRpdGlvbmFsIHNlcXVlbmNlIHR5cGVzIHRhaWxvcmVkIGZvciBwcm9jZXNzaW5nIG9mICpiaW5hcnlcbmRhdGEqIGFuZCAqdGV4dCBzdHJpbmdzKiBhcmUgZGVzY3JpYmVkIGluIGRlZGljYXRlZCBzZWN0aW9ucy5cblxuXG5Db21tb24gU2VxdWVuY2UgT3BlcmF0aW9uc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgc3VwcG9ydGVkIGJ5IG1vc3Qgc2VxdWVuY2VcbnR5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQ1xuaXMgcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zXG5vbiBjdXN0b20gc2VxdWVuY2UgdHlwZXMuXG5cblRoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyBwcmlvcml0eS5cbkluIHRoZSB0YWJsZSwgKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICppKixcbipqKiBhbmQgKmsqIGFyZSBpbnRlZ2VycyBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnlcbnR5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cblxuVGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZVxuY29tcGFyaXNvbiBvcGVyYXRpb25zLiBUaGUgIisiIChjb25jYXRlbmF0aW9uKSBhbmQgIioiIChyZXBldGl0aW9uKVxub3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWNcbm9wZXJhdGlvbnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgInggaW4gcyIgICAgICAgICAgICAgICAgICAgfCAiVHJ1ZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiRmFsc2UiICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInggbm90IGluIHMiICAgICAgICAgICAgICAgfCAiRmFsc2UiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiVHJ1ZSIgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMgKyB0IiAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSg3KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzICogbiIgb3IgIm4gKiBzIiAgICAgICAgIHwgZXF1aXZhbGVudCB0byBhZGRpbmcgKnMqIHRvICAgICAgfCAoMikoNykgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdHNlbGYgKm4qIHRpbWVzICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2ldIiAgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgImxlbihzKSIgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtaW4ocykiICAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibWF4KHMpIiAgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB8ICg4KSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicy5jb3VudCh4KSIgICAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLFxudHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG5jb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbmVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG50eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAqQ29tcGFyaXNvbnMqIGluXG50aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoaWxlIHRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yIHNpbXBsZVxuICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkIHNlcXVlbmNlc1xuICAgKHN1Y2ggYXMgInN0ciIsICJieXRlcyIgYW5kICJieXRlYXJyYXkiKSBhbHNvIHVzZSB0aGVtIGZvclxuICAgc3Vic2VxdWVuY2UgdGVzdGluZzpcblxuICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiXG4gICAgICBUcnVlXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuICIwIiBhcmUgdHJlYXRlZCBhcyAiMCIgKHdoaWNoIHlpZWxkcyBhblxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSB0aGF0IGl0ZW1zIGluIHRoZVxuICAgc2VxdWVuY2UgKnMqIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlIHRpbWVzLlxuICAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCAiW1tdXSIgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmdcbiAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSByZWZlcmVuY2VzXG4gICB0byB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbiAgIEZ1cnRoZXIgZXhwbGFuYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBGQVEgZW50cnkgKkhvdyBkbyBJIGNyZWF0ZVxuICAgYSBtdWx0aWRpbWVuc2lvbmFsIGxpc3Q/Ki5cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2ZcbiAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZVxuICAgdGhhdCAiLTAiIGlzIHN0aWxsICIwIi5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqIGlzXG4gICBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpcyBvbWl0dGVkIG9yICJOb25lIixcbiAgIHVzZSAiMCIuICBJZiAqaiogaXMgb21pdHRlZCBvciAiTm9uZSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpc1xuICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICAieCA9IGkgKyBuKmsiIHN1Y2ggdGhhdCAiMCA8PSBuIDxcbiAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAiaSsyKmsiLFxuICAgImkrMyprIiBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dCBuZXZlclxuICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlXG4gICAibGVuKHMpIi4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGV5IGJlY29tZSAiZW5kIlxuICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqIGNhbm5vdCBiZVxuICAgemVyby4gSWYgKmsqIGlzICJOb25lIiwgaXQgaXMgdHJlYXRlZCBsaWtlICIxIi5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc2VxdWVuY2VzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3XG4gICBvYmplY3QuIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkXG4gICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsXG4gICBzZXF1ZW5jZSBsZW5ndGguIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0IHN3aXRjaCB0b1xuICAgb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgICJzdHIuam9pbigpIiBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYW4gImlvLlN0cmluZ0lPIlxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJieXRlcyIgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSAiYnl0ZWFycmF5IiBvYmplY3QuICAiYnl0ZWFycmF5IiBvYmplY3RzIGFyZVxuICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJ0dXBsZSIgb2JqZWN0cywgZXh0ZW5kIGEgImxpc3QiIGluc3RlYWRcblxuICAgKiBmb3Igb3RoZXIgdHlwZXMsIGludmVzdGlnYXRlIHRoZSByZWxldmFudCBjbGFzcyBkb2N1bWVudGF0aW9uXG5cbjcuIFNvbWUgc2VxdWVuY2UgdHlwZXMgKHN1Y2ggYXMgInJhbmdlIikgb25seSBzdXBwb3J0IGl0ZW1cbiAgIHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvblwndCBzdXBwb3J0XG4gICBzZXF1ZW5jZSBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG5cbjguICJpbmRleCIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLiBXaGVuXG4gICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kIGFsbG93XG4gICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyB0aGVcbiAgIGV4dHJhIGFyZ3VtZW50cyBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gdXNpbmcgInNbaTpqXS5pbmRleCh4KSIsXG4gICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggYmVpbmdcbiAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0IG9mIHRoZVxuICAgc2xpY2UuXG5cblxuSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9ubHkgb3BlcmF0aW9uIHRoYXQgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGdlbmVyYWxseSBpbXBsZW1lbnRcbnRoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyBzdXBwb3J0IGZvclxudGhlICJoYXNoKCkiIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgInR1cGxlIiBpbnN0YW5jZXMsIHRvXG5iZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiIGluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiAiVHlwZUVycm9yIi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gMjU1IikuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzIGNvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qIHRpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSB4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzXG4gICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkXG4gICBzZXF1ZW5jZS5cblxuNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG5cbjYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlIHNlcXVlbmNlLlxuICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlXG4gICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyICpDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9ucyouXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiAiW10iXG5cbiAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiW2FdIixcbiAgICAgIlthLCBiLCBjXSJcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogIlt4IGZvciB4IGluIGl0ZXJhYmxlXSJcblxuICAgKiBVc2luZyB0aGUgdHlwZSBjb25zdHJ1Y3RvcjogImxpc3QoKSIgb3IgImxpc3QoaXRlcmFibGUpIlxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gIml0ZXJhYmxlWzpdIi4gRm9yIGV4YW1wbGUsICJsaXN0KFwnYWJjXCcpIlxuICAgcmV0dXJucyAiW1wnYVwnLCBcJ2JcJywgXCdjXCddIiBhbmQgImxpc3QoICgxLCAyLCAzKSApIiByZXR1cm5zICJbMSwgMixcbiAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5XG4gICBsaXN0LCAiW10iLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlICJzb3J0ZWQoKSJcbiAgIGJ1aWx0LWluLlxuXG4gICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBhbmQgKm11dGFibGUqIHNlcXVlbmNlXG4gICBvcGVyYXRpb25zLiBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDpcblxuICAgc29ydCgqLCBrZXk9Tm9uZSwgcmV2ZXJzZT1Ob25lKVxuXG4gICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgY29tcGFyaXNvbnNcbiAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb25cbiAgICAgIG9wZXJhdGlvbnMgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGVcbiAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG5cbiAgICAgICJzb3J0KCkiIGFjY2VwdHMgdHdvIGFyZ3VtZW50cyB0aGF0IGNhbiBvbmx5IGJlIHBhc3NlZCBieVxuICAgICAga2V5d29yZCAoKmtleXdvcmQtb25seSBhcmd1bWVudHMqKTpcblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgImtleT1zdHIubG93ZXIiKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdFxuICAgICAgaXMgY2FsY3VsYXRlZCBvbmNlIGFuZCB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLlxuICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgc29ydGVkXG4gICAgICBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuXG4gICAgICBUaGUgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuIHRoZSBsaXN0XG4gICAgICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2Ygc3BhY2VcbiAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgb3BlcmF0ZXNcbiAgICAgIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHNvcnRlZCBzZXF1ZW5jZSAodXNlXG4gICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuXG5cbiAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0XG4gICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuXG5UdXBsZXNcbj09PT09PVxuXG5UdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mXG5oZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSAiZW51bWVyYXRlKCkiXG5idWlsdC1pbikuIFR1cGxlcyBhcmUgYWxzbyB1c2VkIGZvciBjYXNlcyB3aGVyZSBhbiBpbW11dGFibGUgc2VxdWVuY2Vcbm9mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAic2V0IiBvclxuImRpY3QiIGluc3RhbmNlKS5cblxuY2xhc3MgY2xhc3MgdHVwbGUoW2l0ZXJhYmxlXSlcblxuICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiAiKCkiXG5cbiAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6ICJhLCIgb3IgIihhLCkiXG5cbiAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogImEsIGIsIGMiIG9yICIoYSwgYiwgYykiXG5cbiAgICogVXNpbmcgdGhlICJ0dXBsZSgpIiBidWlsdC1pbjogInR1cGxlKCkiIG9yICJ0dXBsZShpdGVyYWJsZSkiXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsIFwnYlwnLCBcJ2NcJykiXG4gICBhbmQgInR1cGxlKCBbMSwgMiwgM10gKSIgcmV0dXJucyAiKDEsIDIsIDMpIi4gSWYgbm8gYXJndW1lbnQgaXNcbiAgIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSB0dXBsZSwgIigpIi5cblxuICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgdGhlXG4gICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSBlbXB0eVxuICAgdHVwbGUgY2FzZSwgb3Igd2hlbiB0aGV5IGFyZSBuZWVkZWQgdG8gYXZvaWQgc3ludGFjdGljIGFtYmlndWl0eS5cbiAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLFxuICAgd2hpbGUgImYoKGEsIGIsIGMpKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzIHRoZSBzb2xlXG4gICBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbmFwcHJvcHJpYXRlIGNob2ljZSB0aGFuIGEgc2ltcGxlIHR1cGxlIG9iamVjdC5cblxuXG5SYW5nZXNcbj09PT09PVxuXG5UaGUgInJhbmdlIiB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzXG5jb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShzdG9wKVxuY2xhc3MgY2xhc3MgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSlcblxuICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAoZWl0aGVyXG4gICBidWlsdC1pbiAiaW50IiBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgIl9faW5kZXhfXyJcbiAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG9cbiAgICIxIi4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gIjAiLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sICJWYWx1ZUVycm9yIiBpcyByYWlzZWQuXG5cbiAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSBkZXRlcm1pbmVkXG4gICBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiB3aGVyZSAiaSA+PSAwIiBhbmQgInJbaV0gPFxuICAgc3RvcCIuXG5cbiAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbiAgIGRldGVybWluZWQgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSAiaSA+PSAwIiBhbmQgInJbaV0gPiBzdG9wIi5cblxuICAgQSByYW5nZSBvYmplY3Qgd2lsbCBiZSBlbXB0eSBpZiAiclswXSIgZG9lcyBub3QgbWVldCB0aGUgdmFsdWVcbiAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSBhcmVcbiAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgZGV0ZXJtaW5lZCBieVxuICAgdGhlIHBvc2l0aXZlIGluZGljZXMuXG5cbiAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzICJsZW4oKSIpIG1heSByYWlzZVxuICAgIk92ZXJmbG93RXJyb3IiLlxuXG4gICBSYW5nZSBleGFtcGxlczpcblxuICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKVxuICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpXG4gICAgICBbMCwgMywgNiwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbiAgICAgIFtdXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSlcbiAgICAgIFtdXG5cbiAgIFJhbmdlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zIGV4Y2VwdFxuICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2Ugb2JqZWN0c1xuICAgY2FuIG9ubHkgcmVwcmVzZW50IHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBhIHN0cmljdCBwYXR0ZXJuIGFuZFxuICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0IHBhdHRlcm4pLlxuXG4gICBzdGFydFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGFydCogcGFyYW1ldGVyIChvciAiMCIgaWYgdGhlIHBhcmFtZXRlciB3YXNcbiAgICAgIG5vdCBzdXBwbGllZClcblxuICAgc3RvcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXJcblxuICAgc3RlcFxuXG4gICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yICIxIiBpZiB0aGUgcGFyYW1ldGVyIHdhc1xuICAgICAgbm90IHN1cHBsaWVkKVxuXG5UaGUgYWR2YW50YWdlIG9mIHRoZSAicmFuZ2UiIHR5cGUgb3ZlciBhIHJlZ3VsYXIgImxpc3QiIG9yICJ0dXBsZSIgaXNcbnRoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50IG9mXG5tZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQgb25seVxuc3RvcmVzIHRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWxcbml0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQywgYW5kXG5wcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLFxuc2xpY2luZyBhbmQgc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlICpTZXF1ZW5jZSBUeXBlcyAtLS1cbmxpc3QsIHR1cGxlLCByYW5nZSopOlxuXG4+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuPj4+IHJcbnJhbmdlKDAsIDIwLCAyKVxuPj4+IDExIGluIHJcbkZhbHNlXG4+Pj4gMTAgaW4gclxuVHJ1ZVxuPj4+IHIuaW5kZXgoMTApXG41XG4+Pj4gcls1XVxuMTBcbj4+PiByWzo1XVxucmFuZ2UoMCwgMTAsIDIpXG4+Pj4gclstMV1cbjE4XG5cblRlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzIHRoZW0gYXNcbnNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmIHRoZXlcbnJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZSBvYmplY3RzXG50aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCJcbmF0dHJpYnV0ZXMsIGZvciBleGFtcGxlICJyYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKSIgb3IgInJhbmdlKDAsIDMsXG4yKSA9PSByYW5nZSgwLCA0LCAyKSIuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCAiaW50IiBvYmplY3RzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50XG50aW1lIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggYWxsIGl0ZW1zLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgXCc9PVwnIGFuZCBcJyE9XCcgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzXG5iYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mIGNvbXBhcmluZ1xuYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5KS5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcy5cbicsCi0gJ3R5cGVzc2VxLW11dGFibGUnOiB1J1xuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgc2VxdWVuY2VcbnR5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiIG9ubHlcbmFjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9IDI1NSIpLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSBsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSBlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsIHNbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgY29weSBvZiAicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKGZvciB0aGUgbW9zdCBwYXJ0IHRoZSBzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldID0gdCIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyBjb250ZW50cyAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiB0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSBhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9IFt4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0geCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgcmVwbGFjaW5nLlxuXG4yLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gInJlbW92ZSIgcmFpc2VzICJWYWx1ZUVycm9yIiB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLlxuXG40LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbiAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2Vyc1xuICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZFxuICAgc2VxdWVuY2UuXG5cbjUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuXG42LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCBpbXBsZW1lbnRpbmdcbiAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSBzZXF1ZW5jZS5cbiAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZVxuICAgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciAqQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMqLlxuJywKLSAndW5hcnknOiB1J1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG5hcmd1bWVudC5cblxuVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50IHVuY2hhbmdlZC5cblxuVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXMgZGVmaW5lZCBhc1xuIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICd3aGlsZSc6IHUnXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKLSAnd2l0aCc6IHUnXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsIHRocmVlXG4gICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gdmFsdWVcbiAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzIHJlcmFpc2VkLlxuICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbiAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4gICBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG5cbiAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuICAgICAgIHN1aXRlXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgd2l0aCBBKCkgYXMgYTpcbiAgICAgICB3aXRoIEIoKSBhcyBiOlxuICAgICAgICAgICBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCi0gJ3lpZWxkJzogdSdcblRoZSAieWllbGQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cblxuQSAieWllbGQiIHN0YXRlbWVudCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhICp5aWVsZFxuZXhwcmVzc2lvbiouIFRoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXNcbnRoYXQgd291bGQgb3RoZXJ3aXNlIGJlIHJlcXVpcmVkIGluIHRoZSBlcXVpdmFsZW50IHlpZWxkIGV4cHJlc3Npb25cbnN0YXRlbWVudC4gRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG5cbiAgIHlpZWxkIDxleHByPlxuICAgeWllbGQgZnJvbSA8ZXhwcj5cblxuYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHlpZWxkIGV4cHJlc3Npb24gc3RhdGVtZW50c1xuXG4gICAoeWllbGQgPGV4cHI+KVxuICAgKHlpZWxkIGZyb20gPGV4cHI+KVxuXG5ZaWVsZCBleHByZXNzaW9ucyBhbmQgc3RhdGVtZW50cyBhcmUgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYVxuKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3JcbmZ1bmN0aW9uLiAgVXNpbmcgeWllbGQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2VcbnRoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuZnVuY3Rpb24uXG5cbkZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSAqWWllbGRcbmV4cHJlc3Npb25zKiBzZWN0aW9uLlxuJ30KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gTW9uIE9jdCAxMCAxNTo1OToxNyAyMDE2Cit0b3BpY3MgPSB7J2Fzc2VydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyAnCisgICAgICAgICAgICdhc3NlcnRpb25zXG4nCisgICAgICAgICAgICdpbnRvIGEgcHJvZ3JhbTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyAnCisgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgJworICAgICAgICAgICAncmVmZXJcbicKKyAgICAgICAgICAgJ3RvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxuJworICAgICAgICAgICAnbm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgJyhjb21tYW5kXG4nCisgICAgICAgICAgICdsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuJworICAgICAgICAgICAnYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgJworICAgICAgICAgICAnTm90ZVxuJworICAgICAgICAgICAndGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ3RoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc3RhY2sgdHJhY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgJworICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKKyAnYXNzaWdubWVudCc6ICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCAnCisgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICdtb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKHN0YXJyZWRfZXhwcmVzc2lvbiAnCisgICAgICAgICAgICAgICAnfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIigiIFt0YXJnZXRfbGlzdF0gIikiXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8ICJbIiBbdGFyZ2V0X2xpc3RdICJdIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHNsaWNpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIioiIHRhcmdldFxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICcqYXR0cmlidXRlcmVmKixcbicKKyAgICAgICAgICAgICAgICcqc3Vic2NyaXB0aW9uKiwgYW5kICpzbGljaW5nKi4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAgICAgJyhyZW1lbWJlciB0aGF0XG4nCisgICAgICAgICAgICAgICAndGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgJworICAgICAgICAgICAgICAgJ2xhdHRlclxuJworICAgICAgICAgICAgICAgJ3lpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byAnCisgICAgICAgICAgICAgICAnZWFjaCBvZlxuJworICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxuJworICAgICAgICAgICAgICAgJ3VsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyAnCisgICAgICAgICAgICAgICAndmFsaWRpdHksIGFuZFxuJworICAgICAgICAgICAgICAgJ21heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICAgJ29ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gJworICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZVxuJworICAgICAgICAgICAgICAgJ2hpZXJhcmNoeSkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCAnCisgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICdwYXJlbnRoZXNlcyBvciBzcXVhcmUgYnJhY2tldHMsIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXMgJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgZW1wdHk6IFRoZSBvYmplY3QgbXVzdCBhbHNvIGJlIGFuICcKKyAgICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICAgJyAgaXRlcmFibGUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0IGluIHBhcmVudGhlc2VzOiBUaGUgJworICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgJyAgaXMgYXNzaWduZWQgdG8gdGhhdCB0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzLCBvciAnCisgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgJyAgc2luZ2xlIHRhcmdldCBpbiBzcXVhcmUgYnJhY2tldHM6IFRoZSBvYmplY3QgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAgICcgIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIElmIHRoZSB0YXJnZXQgbGlzdCBjb250YWlucyBvbmUgdGFyZ2V0IHByZWZpeGVkIHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICcgICAgYXN0ZXJpc2ssIGNhbGxlZCBhICJzdGFycmVkIiB0YXJnZXQ6IFRoZSBvYmplY3QgbXVzdCBiZSAnCisgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICcgICAgaXRlcmFibGUgd2l0aCBhdCBsZWFzdCBhcyBtYW55IGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0IGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgJworICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlICcKKyAgICAgICAgICAgICAgICdzdGFycmVkXG4nCisgICAgICAgICAgICAgICAnICAgIHRhcmdldC4gIFRoZSBmaW5hbCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlIGFzc2lnbmVkIHRvICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyAnCisgICAgICAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGl0ZXJhYmxlIGlzIHRoZW4gYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICcKKyAgICAgICAgICAgICAgICcodGhlIGxpc3RcbicKKyAgICAgICAgICAgICAgICcgICAgY2FuIGJlIGVtcHR5KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyICcKKyAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgJyAgICBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgJ2l0ZW1zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgICAndGFyZ2V0cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgJworICAgICAgICAgICAgICAgJ2RlZmluZWQgYXNcbicKKyAgICAgICAgICAgICAgICdmb2xsb3dzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBvciAibm9ubG9jYWwiICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICcgICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICAgIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBPdGhlcndpc2U6IHRoZSBuYW1lIGlzIGJvdW5kIHRvIHRoZSBvYmplY3QgaW4gdGhlIGdsb2JhbFxuJworICAgICAgICAgICAgICAgJyAgICBuYW1lc3BhY2Ugb3IgdGhlIG91dGVyIG5hbWVzcGFjZSBkZXRlcm1pbmVkIGJ5ICcKKyAgICAgICAgICAgICAgICcibm9ubG9jYWwiLFxuJworICAgICAgICAgICAgICAgJyAgICByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGNvdW50IGZvciB0aGUgb2JqZWN0IHByZXZpb3VzbHkgYm91bmQgdG8gdGhlIG5hbWUgJworICAgICAgICAgICAgICAgJ3RvIHJlYWNoXG4nCisgICAgICAgICAgICAgICAnICB6ZXJvLCBjYXVzaW5nIHRoZSBvYmplY3QgdG8gYmUgZGVhbGxvY2F0ZWQgYW5kIGl0cyAnCisgICAgICAgICAgICAgICAnZGVzdHJ1Y3RvciAoaWYgaXRcbicKKyAgICAgICAgICAgICAgICcgIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaW5cbicKKyAgICAgICAgICAgICAgICcgIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnb2JqZWN0IHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgJworICAgICAgICAgICAgICAgJ3JhaXNlc1xuJworICAgICAgICAgICAgICAgJyAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgJworICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uLFxuJworICAgICAgICAgICAgICAgJyAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyAnCisgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgJworICAgICAgICAgICAgICAgJ2lzIGFsd2F5c1xuJworICAgICAgICAgICAgICAgJyAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgJworICAgICAgICAgICAgICAgJ1RodXMsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25tZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgY2xhc3MgQ2xzOlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QgPSBDbHMoKVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggJworICAgICAgICAgICAgICAgJ2FzIDNcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgICAnICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdsaXN0KSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhbiBpbnRlZ2VyLiAgSWYgaXQgaXMgbmVnYXRpdmUsIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgJ25vbm5lZ2F0aXZlXG4nCisgICAgICAgICAgICAgICAiICBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgc2VxdWVuY2UncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgIgorICAgICAgICAgICAgICAgJ2Fza2VkXG4nCisgICAgICAgICAgICAgICAnICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICAnCisgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAnICBpbmRleCBpcyBvdXQgb2YgcmFuZ2UsICJJbmRleEVycm9yIiBpcyByYWlzZWQgKGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdGVkIHNlcXVlbmNlIGNhbm5vdCBhZGQgbmV3IGl0ZW1zIHRvIGEgbGlzdCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZydzIGtleSAiCisgICAgICAgICAgICAgICAndHlwZSxcbicKKyAgICAgICAgICAgICAgICcgIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyICcKKyAgICAgICAgICAgICAgICd3aGljaCBtYXBzXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgJworICAgICAgICAgICAgICAgJ3JlcGxhY2UgYW5cbicKKyAgICAgICAgICAgICAgICcgIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSAnCisgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAnICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBGb3IgdXNlci1kZWZpbmVkIG9iamVjdHMsIHRoZSAiX19zZXRpdGVtX18oKSIgbWV0aG9kIGlzICcKKyAgICAgICAgICAgICAgICdjYWxsZWQgd2l0aFxuJworICAgICAgICAgICAgICAgJyAgYXBwcm9wcmlhdGUgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGEgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICBvZiB0aGUgc2FtZSB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgICAgICAnICBldmFsdWF0ZWQsIGluc29mYXIgdGhleSBhcmUgcHJlc2VudDsgZGVmYXVsdHMgYXJlIHplcm8gYW5kICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHNlcXVlbmNlJ3MgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuICIKKyAgICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICAgIiAgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2UncyBsZW5ndGggaXMgYWRkZWQgdG8gIgorICAgICAgICAgICAgICAgJ2l0LiAgVGhlXG4nCisgICAgICAgICAgICAgICAnICByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSAnCisgICAgICAgICAgICAgICAic2VxdWVuY2Unc1xuIgorICAgICAgICAgICAgICAgJyAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvICcKKyAgICAgICAgICAgICAgICdyZXBsYWNlXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdsZW5ndGggb2ZcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWQgJworICAgICAgICAgICAgICAgJ3NlcXVlbmNlLFxuJworICAgICAgICAgICAgICAgJyAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnICBzZXF1ZW5jZSBhbGxvd3MgaXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZVxuJworICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsICcKKyAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICdpbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgJworICAgICAgICAgICAgICAgJ2NhdXNpbmdcbicKKyAgICAgICAgICAgICAgICdsZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0FsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzICcKKyAgICAgICAgICAgICAgICdiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAidGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSAnc2ltdWx0YW5lb3VzJyAiCisgICAgICAgICAgICAgICAnKGZvclxuJworICAgICAgICAgICAgICAgJ2V4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb24gb2YgYXNzaWduZWQtdG8gdmFyaWFibGVzIG9jY3VyIGxlZnQtdG8tcmlnaHQsICcKKyAgICAgICAgICAgICAgICdzb21ldGltZXNcbicKKyAgICAgICAgICAgICAgICdyZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gJworICAgICAgICAgICAgICAgJ3ByaW50c1xuJworICAgICAgICAgICAgICAgJyJbMCwgMl0iOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIHggPSBbMCwgMV1cbicKKyAgICAgICAgICAgICAgICcgICBpID0gMFxuJworICAgICAgICAgICAgICAgJyAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyAnCisgICAgICAgICAgICAgICAndXBkYXRlZFxuJworICAgICAgICAgICAgICAgJyAgIHByaW50KHgpXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCAzMTMyKiogLSBFeHRlbmRlZCBJdGVyYWJsZSBVbnBhY2tpbmdcbicKKyAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgIip0YXJnZXQiIGZlYXR1cmUuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAnCisgICAgICAgICAgICAgICAnIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgJworICAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICAnc3ltYm9scy4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAgJ2xpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAgJ3RhcmdldC5cbicKKyAgICAgICAgICAgICAgICdUaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSAnCisgICAgICAgICAgICAgICAncmV3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCAnCisgICAgICAgICAgICAgICAnZWZmZWN0LiBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICdhdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gJworICAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgJworICAgICAgICAgICAgICAgJ3JhdGhlciB0aGFuXG4nCisgICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgJworICAgICAgICAgICAgICAgJ29sZCBvYmplY3RcbicKKyAgICAgICAgICAgICAgICdpcyBtb2RpZmllZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1VubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgJ2xlZnQtXG4nCisgICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICAnZXhhbXBsZSwgImFbaV1cbicKKyAgICAgICAgICAgICAgICcrPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgJworICAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICAndGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICcKKyAgICAgICAgICAgICAgICciYVtpXSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgJworICAgICAgICAgICAgICAgJ2luIGFcbicKKyAgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuICcKKyAgICAgICAgICAgICAgICdTaW1pbGFybHksXG4nCisgICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAgJ2JpbmFyeVxuJworICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlICcKKyAgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICAnYWJvdXRcbicKKyAgICAgICAgICAgICAgICdjbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyBhcHBsaWVzIGFzIGZvciByZWd1bGFyICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbm5vdGF0ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fubm90YXRpb24gYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICd2YXJpYWJsZSBvciBhdHRyaWJ1dGUgYW5ub3RhdGlvbiBhbmQgYW4gb3B0aW9uYWwgYXNzaWdubWVudCAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIGFubm90YXRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCAiOiIgZXhwcmVzc2lvbiBbIj0iICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1RoZSBkaWZmZXJlbmNlIGZyb20gbm9ybWFsIEFzc2lnbm1lbnQgc3RhdGVtZW50cyBpcyB0aGF0IG9ubHkgJworICAgICAgICAgICAgICAgJ3NpbmdsZVxuJworICAgICAgICAgICAgICAgJ3RhcmdldCBhbmQgb25seSBzaW5nbGUgcmlnaHQgaGFuZCBzaWRlIHZhbHVlIGlzIGFsbG93ZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRm9yIHNpbXBsZSBuYW1lcyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIGlmIGluIGNsYXNzIG9yIG1vZHVsZSAnCisgICAgICAgICAgICAgICAnc2NvcGUsXG4nCisgICAgICAgICAgICAgICAndGhlIGFubm90YXRpb25zIGFyZSBldmFsdWF0ZWQgYW5kIHN0b3JlZCBpbiBhIHNwZWNpYWwgY2xhc3Mgb3IgJworICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSAiX19hbm5vdGF0aW9uc19fIiB0aGF0IGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGZyb20gJworICAgICAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICAnbmFtZXMgKG1hbmdsZWQgaWYgcHJpdmF0ZSkgdG8gZXZhbHVhdGVkIGFubm90YXRpb25zLiBUaGlzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaXNcbicKKyAgICAgICAgICAgICAgICd3cml0YWJsZSBhbmQgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGF0IHRoZSBzdGFydCBvZiBjbGFzcyBvciAnCisgICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICAnYm9keSBleGVjdXRpb24sIGlmIGFubm90YXRpb25zIGFyZSBmb3VuZCBzdGF0aWNhbGx5LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0ZvciBleHByZXNzaW9ucyBhcyBhc3NpZ25tZW50IHRhcmdldHMsIHRoZSBhbm5vdGF0aW9ucyBhcmUgJworICAgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICAgJ2lmIGluIGNsYXNzIG9yIG1vZHVsZSBzY29wZSwgYnV0IG5vdCBzdG9yZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGFubm90YXRlZCBpbiBhIGZ1bmN0aW9uIHNjb3BlLCB0aGVuIHRoaXMgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgICdmb3IgdGhhdCBzY29wZS4gQW5ub3RhdGlvbnMgYXJlIG5ldmVyIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluICcKKyAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgJ3Njb3Blcy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIHByZXNlbnQsIGFuIGFubm90YXRlZCBhc3NpZ25tZW50ICcKKyAgICAgICAgICAgICAgICdwZXJmb3Jtc1xuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgYXNzaWdubWVudCBiZWZvcmUgZXZhbHVhdGluZyBhbm5vdGF0aW9ucyAod2hlcmVcbicKKyAgICAgICAgICAgICAgICdhcHBsaWNhYmxlKS4gSWYgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyBub3QgcHJlc2VudCBmb3IgYW4gJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAgICd0YXJnZXQsIHRoZW4gdGhlIGludGVycHJldGVyIGV2YWx1YXRlcyB0aGUgdGFyZ2V0IGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgJ3RoZSBsYXN0XG4nCisgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiIG9yICJfX3NldGF0dHJfXygpIiBjYWxsLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCA1MjYqKiAtIFZhcmlhYmxlIGFuZCBhdHRyaWJ1dGUgYW5ub3RhdGlvbiAnCisgICAgICAgICAgICAgICAnc3ludGF4XG4nCisgICAgICAgICAgICAgICAnICAqKlBFUCA0ODQqKiAtIFR5cGUgaGludHNcbicsCisgJ2F0b20taWRlbnRpZmllcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgKE5hbWVzKVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdBbiBpZGVudGlmaWVyIG9jY3VycmluZyBhcyBhbiBhdG9tIGlzIGEgbmFtZS4gIFNlZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VjdGlvbiBJZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBrZXl3b3JkcyBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uIE5hbWluZyAnCisgICAgICAgICAgICAgICAgICAgICAnYW5kIGJpbmRpbmcgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9jdW1lbnRhdGlvbiBvZiBuYW1pbmcgYW5kIGJpbmRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgbmFtZSBpcyBib3VuZCB0byBhbiBvYmplY3QsIGV2YWx1YXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdG9tIHlpZWxkc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAncmFpc2VzIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXh0dWFsbHkgb2NjdXJzIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCBhICpwcml2YXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnbmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gYSAnCisgICAgICAgICAgICAgICAgICAgICAnbG9uZ2VyIGZvcm1cbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gJworICAgICAgICAgICAgICAgICAgICAgJ2luc2VydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3MgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQgYW5kIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3NpbmdsZSB1bmRlcnNjb3JlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW5zZXJ0ZWQsIGluIGZyb250IG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiX19zcGFtIlxuJworICAgICAgICAgICAgICAgICAgICAgJ29jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJyJfSGFtX19zcGFtIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIHRyYW5zZm9ybWF0aW9uIGlzIGluZGVwZW5kZW50IG9mIHRoZSBzeW50YWN0aWNhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGV4dCBpbiB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBpZGVudGlmaWVyIGlzIHVzZWQuICBJZiB0aGUgdHJhbnNmb3JtZWQgbmFtZSBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnZXh0cmVtZWx5IGxvbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICd0cnVuY2F0aW9uIG1heVxuJworICAgICAgICAgICAgICAgICAgICAgJ2hhcHBlbi4gSWYgdGhlIGNsYXNzIG5hbWUgY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3JlcywgJworICAgICAgICAgICAgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCisgJ2F0b20tbGl0ZXJhbHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnTGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBzdXBwb3J0cyBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIGFuZCB2YXJpb3VzICcKKyAgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAnbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgbGl0ZXJhbCA6Oj0gc3RyaW5nbGl0ZXJhbCB8IGJ5dGVzbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0V2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyhzdHJpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnYnl0ZXMsIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciwgY29tcGxleCBudW1iZXIpIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3RoZSBnaXZlblxuJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgJworICAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nIHBvaW50XG4nCisgICAgICAgICAgICAgICAgICAnYW5kIGltYWdpbmFyeSAoY29tcGxleCkgbGl0ZXJhbHMuICBTZWUgc2VjdGlvbiBMaXRlcmFscyBmb3IgJworICAgICAgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICAiCisgICAgICAgICAgICAgICAgICAnTXVsdGlwbGVcbicKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0aW9ucyBvZiBsaXRlcmFscyB3aXRoIHRoZSBzYW1lIHZhbHVlIChlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICAnb2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpICcKKyAgICAgICAgICAgICAgICAgICdtYXkgb2J0YWluXG4nCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZS5cbicsCisgJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbWVhbmluZyBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgJyJ4Lm5hbWUiKSBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3IgaXMgaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBuYW1lLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgICAgICdvciByYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3JtYWwgbWVjaGFuaXNtLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2ludGVudGlvbmFsIGFzeW1tZXRyeVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgJworICAgICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCBhdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udHJvbCBieSBub3RcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IChidXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdhY3R1YWxseSBnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbmZpbml0ZSByZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGJhc2UgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICAgICAnbmVlZHMsIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyAnCisgICAgICAgICAgICAgICAgICAgICAndXAgc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgICAgICdsYW5ndWFnZSBzeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlIFNwZWNpYWwgbWV0aG9kIGxvb2t1cC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGVhZCBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5uYW1lIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGlyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBtdXN0IGJlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc29ydHMgaXQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBlYXJzIGluIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICJvd25lcidzIGNsYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICd3aG9zZSBuYW1lIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAidGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzJyAiCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgJworICAgICAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnIk5vbmUiIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAgICAgJ29mIHRoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhdCB0aGUgdGltZSB0aGUgb3duaW5nIGNsYXNzICpvd25lciogaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnImluc3BlY3QiIG1vZHVsZSBhc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgICAgICcoc2V0dGluZyB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnZHluYW1pYyBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ3VuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnZva2luZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXQsIG9yIGRlbGV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgInRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3QncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICIKKyAgICAgICAgICAgICAgICAgICAgICciYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyAnCisgICAgICAgICAgICAgICAgICAgICAnb25lIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICAgICAnd2VyZSBkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2hvdyB0aGV5IHdlcmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2JpbmRpbmcsICJhLngiLiBIb3dcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRGlyZWN0IENhbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAndHJhbnNmb3JtZWQgaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NhbGw6XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1N1cGVyIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAnCisgICAgICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MgIkEiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciB3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgJworICAgICAgICAgICAgICAgICAgICAgJ29iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAgICAgJ29uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUgb2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fc2V0X18oKSIgYW5kL29yXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2Egbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmUgYm90aFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUganVzdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCAiX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uIGluIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LiAgSW5cbicKKyAgICAgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICciY2xhc3NtZXRob2QoKSIpIGFyZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgY2FuXG4nCisgICAgICAgICAgICAgICAgICAgICAncmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IuXG4nCisgICAgICAgICAgICAgICAgICAgICAnQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZSBhY3V0ZSB3aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZyBsYXJnZVxuJworICAgICAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluICcKKyAgICAgICAgICAgICAgICAgICAgICdhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi4gVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ29mIGluc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSB0byBob2xkIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgJworICAgICAgICAgICAgICAgICAgICAgJypfX2RpY3RfXyogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsICcKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvZiBzdHJpbmdzIHdpdGggdmFyaWFibGUgbmFtZXMgdXNlZCBieSBpbnN0YW5jZXMuICAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZXZlbnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZWFjaFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyAnCisgICAgICAgICAgICAgICAgICAgICAnYSAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgICAgICdBdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FkZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVzY3JpcHRvcnMgKEltcGxlbWVudGluZyBEZXNjcmlwdG9ycykgZm9yIGVhY2ggJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlIG5hbWUuICBBcyBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGEgKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbiBuYW1lc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5hY2Nlc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MpLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAnCisgICAgICAgICAgICAgICAgICAgICAnImJ5dGVzIiBhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXyouIE1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWFuaW5nIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgKl9fc2xvdHNfXyouXG4nLAorICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQXR0cmlidXRlIHJlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0FuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgICAgICAgICdwZXJpb2QgYW5kIGEgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhhdCBzdXBwb3J0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgcmVmZXJlbmNlcywgd2hpY2ggbW9zdCBvYmplY3RzIGRvLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyB0aGVuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Byb2R1Y3Rpb24gY2FuIGJlIGN1c3RvbWl6ZWQgYnkgb3ZlcnJpZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGF0dHJpYnV0ZSBpcyBub3QgYXZhaWxhYmxlLCB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdyYWlzZWQuICBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZWQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgTXVsdGlwbGUgZXZhbHVhdGlvbnMgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCisgJ2F1Z2Fzc2lnbic6ICdcbicKKyAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsICcKKyAgICAgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAnKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICcgICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgJworICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAnICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICcKKyAgICAgICAgICAgICAgJyIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuJworICAgICAgICAgICAgICAnICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcoU2VlIHNlY3Rpb24gUHJpbWFyaWVzIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICdzeW1ib2xzLilcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICdhc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAnbGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgJworICAgICAgICAgICAgICAnYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAndGFyZ2V0LlxuJworICAgICAgICAgICAgICAnVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlICcKKyAgICAgICAgICAgICAgJ3Jld3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuICcKKyAgICAgICAgICAgICAgJ0luIHRoZVxuJworICAgICAgICAgICAgICAnYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuICcKKyAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAndGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCAnCisgICAgICAgICAgICAgICdyYXRoZXIgdGhhblxuJworICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkICcKKyAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAnaXMgbW9kaWZpZWQgaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICdsZWZ0LVxuJworICAgICAgICAgICAgICAnaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciAnCisgICAgICAgICAgICAgICdleGFtcGxlLCAiYVtpXVxuJworICAgICAgICAgICAgICAnKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kICcKKyAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICd0aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyAnCisgICAgICAgICAgICAgICdpbiBhXG4nCisgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gJworICAgICAgICAgICAgICAnU2ltaWxhcmx5LFxuJworICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAnCisgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICdhYm91dFxuJworICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXBwbGllcyBhcyBmb3IgcmVndWxhciAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicsCisgJ2JpbmFyeSc6ICdcbicKKyAgICAgICAgICAgJ0JpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgaGF2ZSB0aGUgY29udmVudGlvbmFsIHByaW9yaXR5XG4nCisgICAgICAgICAgICdsZXZlbHMuICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBvcGVyYXRpb25zIGFsc28gYXBwbHkgdG8gY2VydGFpbiAnCisgICAgICAgICAgICdub24tXG4nCisgICAgICAgICAgICdudW1lcmljIHR5cGVzLiAgQXBhcnQgZnJvbSB0aGUgcG93ZXIgb3BlcmF0b3IsIHRoZXJlIGFyZSBvbmx5IHR3b1xuJworICAgICAgICAgICAnbGV2ZWxzLCBvbmUgZm9yIG11bHRpcGxpY2F0aXZlIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZVxuJworICAgICAgICAgICAnb3BlcmF0b3JzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBtX2V4cHIgOjo9IHVfZXhwciB8IG1fZXhwciAiKiIgdV9leHByIHwgbV9leHByICJAIiBtX2V4cHIgfFxuJworICAgICAgICAgICAnICAgICAgICAgICAgICBtX2V4cHIgIi8vIiB1X2V4cHJ8IG1fZXhwciAiLyIgdV9leHByIHxcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgbV9leHByICIlIiB1X2V4cHJcbicKKyAgICAgICAgICAgJyAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIioiIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0cyAnCisgICAgICAgICAgICdhcmd1bWVudHMuXG4nCisgICAgICAgICAgICdUaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50IG11c3QgYmUgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2ludGVnZXIgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZSBmb3JtZXIgY2FzZSwgdGhlXG4nCisgICAgICAgICAgICdudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlbiBtdWx0aXBsaWVkICcKKyAgICAgICAgICAgJ3RvZ2V0aGVyLlxuJworICAgICAgICAgICAnSW4gdGhlIGxhdHRlciBjYXNlLCBzZXF1ZW5jZSByZXBldGl0aW9uIGlzIHBlcmZvcm1lZDsgYSBuZWdhdGl2ZVxuJworICAgICAgICAgICAncmVwZXRpdGlvbiBmYWN0b3IgeWllbGRzIGFuIGVtcHR5IHNlcXVlbmNlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIkAiIChhdCkgb3BlcmF0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgbWF0cml4XG4nCisgICAgICAgICAgICdtdWx0aXBsaWNhdGlvbi4gIE5vIGJ1aWx0aW4gUHl0aG9uIHR5cGVzIGltcGxlbWVudCB0aGlzIG9wZXJhdG9yLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLyIgKGRpdmlzaW9uKSBhbmQgIi8vIiAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbicKKyAgICAgICAgICAgJ3F1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbicKKyAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBEaXZpc2lvbiBvZiBpbnRlZ2VycyB5aWVsZHMgYSBmbG9hdCwgJworICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgJ2Zsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICJvZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgJ2Zsb29yJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZVxuIgorICAgICAgICAgICAncmVzdWx0LiAgRGl2aXNpb24gYnkgemVybyByYWlzZXMgdGhlICJaZXJvRGl2aXNpb25FcnJvciIgJworICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIiUiIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uICcKKyAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICd0aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgJworICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbicKKyAgICAgICAgICAgJyJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLiAgVGhlIGFyZ3VtZW50cyBtYXkgYmUgZmxvYXRpbmcgJworICAgICAgICAgICAncG9pbnRcbicKKyAgICAgICAgICAgJ251bWJlcnMsIGUuZy4sICIzLjE0JTAuNyIgZXF1YWxzICIwLjM0IiAoc2luY2UgIjMuMTQiIGVxdWFscyAnCisgICAgICAgICAgICciNCowLjcgK1xuJworICAgICAgICAgICAnMC4zNCIuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAnc2lnblxuJworICAgICAgICAgICAnYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSByZXN1bHQgJworICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgJ3N0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kICcKKyAgICAgICAgICAgJ1sxXS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0b3JzIGFyZSBjb25uZWN0ZWQgYnkgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnaWRlbnRpdHk6ICJ4ID09ICh4Ly95KSp5ICsgKHgleSkiLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmUgJworICAgICAgICAgICAnYWxzb1xuJworICAgICAgICAgICAnY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJkaXZtb2QoKSI6ICJkaXZtb2QoeCwgeSkgPT1cbicKKyAgICAgICAgICAgJyh4Ly95LCB4JXkpIi4gWzJdLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAnCisgICAgICAgICAgICciJSJcbicKKyAgICAgICAgICAgJ29wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtICcKKyAgICAgICAgICAgJ29sZC1zdHlsZVxuJworICAgICAgICAgICAnc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuJworICAgICAgICAgICAnc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG4nCisgICAgICAgICAgICdzZWN0aW9uIHByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlICcKKyAgICAgICAgICAgJyJkaXZtb2QoKSJcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGFyZSBub3QgZGVmaW5lZCBmb3IgY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byAnCisgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICdmbG9hdGluZyBwb2ludCBudW1iZXIgdXNpbmcgdGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG4nCisgICAgICAgICAgICdhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggYmUgc2VxdWVuY2VzIG9mIHRoZSAnCisgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICd0eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uICcKKyAgICAgICAgICAgJ3R5cGVcbicKKyAgICAgICAgICAgJ2FuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG4nCisgICAgICAgICAgICdjb25jYXRlbmF0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAorICdiaXR3aXNlJzogJ1xuJworICAgICAgICAgICAgJ0JpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSAnCisgICAgICAgICAgICAnbGV2ZWw6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuJworICAgICAgICAgICAgJyAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuJworICAgICAgICAgICAgJyAgIG9yX2V4cHIgIDo6PSB4b3JfZXhwciB8IG9yX2V4cHIgInwiIHhvcl9leHByXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoICcKKyAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAnYmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICJeIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuJworICAgICAgICAgICAgJ2FyZ3VtZW50cywgd2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgInwiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBpdHMgJworICAgICAgICAgICAgJ2FyZ3VtZW50cyxcbicKKyAgICAgICAgICAgICd3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKKyAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBPYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnQgInBzZXVkby1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdib2R5LiBUaGV5IGRpZmZlclxuJworICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb24ndCBjb250YWluIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRvIHRoZWlyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBieSB0aGUgYnVpbHQtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdpbiAiY29tcGlsZSgpIiBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlaXIgIl9fY29kZV9fIiBhdHRyaWJ1dGUuIFNlZSBhbHNvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICciY29kZSIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdBIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgcGFzc2luZyAnCisgICAgICAgICAgICAgICAgICAgICAgICdpdCAoaW5zdGVhZCBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2Ugc3RyaW5nKSB0byB0aGUgImV4ZWMoKSIgb3IgImV2YWwoKSIgIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnU2VlIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicsCisgJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBFbGxpcHNpcyBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnU2xpY2luZ3MpLiAgSXQgc3VwcG9ydHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsbGlwc2lzIG9iamVjdCwgbmFtZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuICAidHlwZShFbGxpcHNpcykoKSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICciRWxsaXBzaXMiIHNpbmdsZXRvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnSXQgaXMgd3JpdHRlbiBhcyAiRWxsaXBzaXMiIG9yICIuLi4iLlxuJywKKyAnYmx0aW4tbnVsbC1vYmplY3QnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBOdWxsIE9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0ICIKKyAgICAgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSByZXR1cm4gYVxuJworICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAnZXhhY3RseSBvbmUgbnVsbFxuJworICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QsIG5hbWVkICJOb25lIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKE5vbmUpKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjZXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ3NhbWUgc2luZ2xldG9uLlxuJworICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAnSXQgaXMgd3JpdHRlbiBhcyAiTm9uZSIuXG4nLAorICdibHRpbi10eXBlLW9iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlIE9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdUeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIHR5cGUgaXNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAidHlwZSgpIi4gIFRoZXJlIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdubyBzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIG9uIHR5cGVzLiAgVGhlIHN0YW5kYXJkIG1vZHVsZSAidHlwZXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMgbmFtZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdhbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogIjxjbGFzcyBcJ2ludFwnPiIuXG4nLAorICdib29sZWFucyc6ICdcbicKKyAgICAgICAgICAgICAnQm9vbGVhbiBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgb3JfdGVzdCAgOjo9IGFuZF90ZXN0IHwgb3JfdGVzdCAib3IiIGFuZF90ZXN0XG4nCisgICAgICAgICAgICAgJyAgIGFuZF90ZXN0IDo6PSBub3RfdGVzdCB8IGFuZF90ZXN0ICJhbmQiIG5vdF90ZXN0XG4nCisgICAgICAgICAgICAgJyAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0luIHRoZSBjb250ZXh0IG9mIEJvb2xlYW4gb3BlcmF0aW9ucywgYW5kIGFsc28gd2hlbiBleHByZXNzaW9ucyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICd1c2VkIGJ5IGNvbnRyb2wgZmxvdyBzdGF0ZW1lbnRzLCB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICdpbnRlcnByZXRlZFxuJworICAgICAgICAgICAgICdhcyBmYWxzZTogIkZhbHNlIiwgIk5vbmUiLCBudW1lcmljIHplcm8gb2YgYWxsIHR5cGVzLCBhbmQgZW1wdHlcbicKKyAgICAgICAgICAgICAnc3RyaW5ncyBhbmQgY29udGFpbmVycyAoaW5jbHVkaW5nIHN0cmluZ3MsIHR1cGxlcywgbGlzdHMsXG4nCisgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgJ2ludGVycHJldGVkXG4nCisgICAgICAgICAgICAgJ2FzIHRydWUuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gY3VzdG9taXplIHRoZWlyIHRydXRoIHZhbHVlICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncHJvdmlkaW5nIGEgIl9fYm9vbF9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IiB5aWVsZHMgIlRydWUiIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSwgJworICAgICAgICAgICAgICciRmFsc2UiXG4nCisgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHMgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcoTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlICcKKyAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICdyZXR1cm4gdG8gIkZhbHNlIiBhbmQgIlRydWUiLCBidXQgcmF0aGVyIHJldHVybiB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICdhcmd1bWVudC4gIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICdzaG91bGQgYmUgcmVwbGFjZWQgYnkgYSBkZWZhdWx0IHZhbHVlIGlmIGl0IGlzIGVtcHR5LCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyJzIG9yIFwnZm9vXCciIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgIm5vdCIgaGFzIHRvICcKKyAgICAgICAgICAgICAnY3JlYXRlIGFcbicKKyAgICAgICAgICAgICAnbmV3IHZhbHVlLCBpdCByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IChmb3IgZXhhbXBsZSwgIm5vdCBcJ2Zvb1wnIiBwcm9kdWNlcyAiRmFsc2UiIHJhdGhlciAnCisgICAgICAgICAgICAgJ3RoYW4gIlwnXCciLilcbicsCisgJ2JyZWFrJzogJ1xuJworICAgICAgICAgICdUaGUgImJyZWFrIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBicmVha19zdG10IDo6PSAiYnJlYWsiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICciYnJlYWsiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgIndoaWxlIlxuJworICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gd2l0aGluIHRoYXRcbicKKyAgICAgICAgICAnbG9vcC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0l0IHRlcm1pbmF0ZXMgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGxvb3AsIHNraXBwaW5nIHRoZSBvcHRpb25hbCAnCisgICAgICAgICAgJyJlbHNlIlxuJworICAgICAgICAgICdjbGF1c2UgaWYgdGhlIGxvb3AgaGFzIG9uZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG4nCisgICAgICAgICAgJ2tlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgJworICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2xvb3AuXG4nLAorICdjYWxsYWJsZS10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgJworICAgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nLAorICdjYWxscyc6ICdcbicKKyAgICAgICAgICAnQ2FsbHNcbicKKyAgICAgICAgICAnKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2FsbCBjYWxscyBhIGNhbGxhYmxlIG9iamVjdCAoZS5nLiwgYSAqZnVuY3Rpb24qKSB3aXRoIGEgJworICAgICAgICAgICdwb3NzaWJseVxuJworICAgICAgICAgICdlbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjYWxsICAgICAgICAgICAgICAgICA6Oj0gcHJpbWFyeSAiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl0gfCAnCisgICAgICAgICAgJ2NvbXByZWhlbnNpb25dICIpIlxuJworICAgICAgICAgICcgICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiAnCisgICAgICAgICAgJ3N0YXJyZWRfYW5kX2tleXdvcmRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHN0YXJyZWRfYW5kX2tleXdvcmRzIFsiLCIgJworICAgICAgICAgICdrZXl3b3Jkc19hcmd1bWVudHNdXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZHNfYXJndW1lbnRzXG4nCisgICAgICAgICAgJyAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBbIioiXSBleHByZXNzaW9uICgiLCIgWyIqIl0gJworICAgICAgICAgICdleHByZXNzaW9uKSpcbicKKyAgICAgICAgICAnICAgc3RhcnJlZF9hbmRfa2V5d29yZHMgOjo9ICgiKiIgZXhwcmVzc2lvbiB8IGtleXdvcmRfaXRlbSlcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgIioiIGV4cHJlc3Npb24gfCAiLCIgJworICAgICAgICAgICdrZXl3b3JkX2l0ZW0pKlxuJworICAgICAgICAgICcgICBrZXl3b3Jkc19hcmd1bWVudHMgICA6Oj0gKGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbikqXG4nCisgICAgICAgICAgJyAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbiBvcHRpb25hbCB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmRcbicKKyAgICAgICAgICAna2V5d29yZCBhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJ2Z1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG4nCisgICAgICAgICAgJ29iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgYWxsIG9iamVjdHMgaGF2aW5nIGFcbicKKyAgICAgICAgICAnIl9fY2FsbF9fKCkiIG1ldGhvZCBhcmUgY2FsbGFibGUpLiAgQWxsIGFyZ3VtZW50IGV4cHJlc3Npb25zIGFyZVxuJworICAgICAgICAgICdldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4nCisgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuJworICAgICAgICAgICdhcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG4nCisgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbicKKyAgICAgICAgICAndmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdleHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbicKKyAgICAgICAgICAnYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgJyhEZWZhdWx0XG4nCisgICAgICAgICAgJ3ZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgYVxuJworICAgICAgICAgICdtdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSAnCisgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAiYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvbid0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yICIKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlIGFyZSAnCisgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICd1bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgJworICAgICAgICAgICciVHlwZUVycm9yIlxuJworICAgICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJ3RoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbicKKyAgICAgICAgICAnYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgJworICAgICAgICAgICdldmVuXG4nCisgICAgICAgICAgImlmIHRoZXkgYXJlICduYW1lZCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxuIgorICAgICAgICAgICd0aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSAnCisgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAnZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvICcKKyAgICAgICAgICAncGFyc2VcbicKKyAgICAgICAgICAndGhlaXIgYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsICcKKyAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3Nsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICd1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsICcKKyAgICAgICAgICAnYXJndW1lbnRzXG4nCisgICAgICAgICAgJyhvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxuJworICAgICAgICAgICduYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbicKKyAgICAgICAgICAndXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuJworICAgICAgICAgICdhcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICdleGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgJworICAgICAgICAgICciZXhwcmVzc2lvbiJcbicKKyAgICAgICAgICAnbXVzdCBldmFsdWF0ZSB0byBhbiAqaXRlcmFibGUqLiAgRWxlbWVudHMgZnJvbSB0aGVzZSBpdGVyYWJsZXMgYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgaWYgdGhleSB3ZXJlIGFkZGl0aW9uYWwgcG9zaXRpb25hbCBhcmd1bWVudHMuICBGb3IgdGhlICcKKyAgICAgICAgICAnY2FsbFxuJworICAgICAgICAgICciZih4MSwgeDIsICp5LCB4MywgeDQpIiwgaWYgKnkqIGV2YWx1YXRlcyB0byBhIHNlcXVlbmNlICp5MSosIC4uLixcbicKKyAgICAgICAgICAnKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rNCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJyp4MSosXG4nCisgICAgICAgICAgJyp4MiosICp5MSosIC4uLiwgKnlNKiwgKngzKiwgKng0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCAnCisgICAgICAgICAgJ21heVxuJworICAgICAgICAgICdhcHBlYXIgKmFmdGVyKiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50cywgaXQgaXMgcHJvY2Vzc2VkICcKKyAgICAgICAgICAnKmJlZm9yZSpcbicKKyAgICAgICAgICAndGhlIGtleXdvcmQgYXJndW1lbnRzIChhbmQgYW55ICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50cyAtLSBzZWUgJworICAgICAgICAgICdiZWxvdykuXG4nCisgICAgICAgICAgJ1NvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IGRlZiBmKGEsIGIpOlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KGEsIGIpXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICA+Pj4gZihiPTEsICooMiwpKVxuJworICAgICAgICAgICcgICAyIDFcbicKKyAgICAgICAgICAnICAgPj4+IGYoYT0xLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbicKKyAgICAgICAgICAiICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnYSdcbiIKKyAgICAgICAgICAnICAgPj4+IGYoMSwgKigyLCkpXG4nCisgICAgICAgICAgJyAgIDEgMlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSXQgaXMgdW51c3VhbCBmb3IgYm90aCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlICIqZXhwcmVzc2lvbiIgJworICAgICAgICAgICdzeW50YXhcbicKKyAgICAgICAgICAndG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJ2FyaXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlIHN5bnRheCAiKipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuJworICAgICAgICAgICciZXhwcmVzc2lvbiIgbXVzdCBldmFsdWF0ZSB0byBhICptYXBwaW5nKiwgdGhlIGNvbnRlbnRzIG9mIHdoaWNoICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIGEga2V5d29yZCBpcyBhbHJlYWR5XG4nCisgICAgICAgICAgJ3ByZXNlbnQgKGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIG9yIGZyb20gYW5vdGhlciAnCisgICAgICAgICAgJ3VucGFja2luZyksXG4nCisgICAgICAgICAgJ2EgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0Zvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuJworICAgICAgICAgICdjYW5ub3QgYmUgdXNlZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IHNsb3RzIG9yIGFzIGtleXdvcmQgYXJndW1lbnRcbicKKyAgICAgICAgICAnbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy41OiBGdW5jdGlvbiBjYWxscyBhY2NlcHQgYW55IG51bWJlciBvZiAiKiIgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnIioqIiB1bnBhY2tpbmdzLCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBtYXkgZm9sbG93IGl0ZXJhYmxlICcKKyAgICAgICAgICAndW5wYWNraW5nc1xuJworICAgICAgICAgICcoIioiKSwgYW5kIGtleXdvcmQgYXJndW1lbnRzIG1heSBmb2xsb3cgZGljdGlvbmFyeSB1bnBhY2tpbmdzICcKKyAgICAgICAgICAnKCIqKiIpLlxuJworICAgICAgICAgICdPcmlnaW5hbGx5IHByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5ICJOb25lIiwgdW5sZXNzIGl0IHJhaXNlcyAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJ2V4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG4nCisgICAgICAgICAgJ2NhbGxhYmxlIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGl0IGlzLS0tXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbicKKyAgICAgICAgICAnICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbicKKyAgICAgICAgICAnICAgYXJndW1lbnQgbGlzdC4gIFRoZSBmaXJzdCB0aGluZyB0aGUgY29kZSBibG9jayB3aWxsIGRvIGlzIGJpbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgIEZ1bmN0aW9uIGRlZmluaXRpb25zLiAgV2hlbiB0aGUgY29kZSBibG9jayBleGVjdXRlcyBhICJyZXR1cm4iXG4nCisgICAgICAgICAgJyAgIHN0YXRlbWVudCwgdGhpcyBzcGVjaWZpZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICdjYWxsLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBidWlsdC1pbiBmdW5jdGlvbiBvciBtZXRob2Q6XG4nCisgICAgICAgICAgJyAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgQnVpbHQtaW4gRnVuY3Rpb25zIGZvciAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBvYmplY3Q6XG4nCisgICAgICAgICAgJyAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbicKKyAgICAgICAgICAnICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiAnCisgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgJyAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuJworICAgICAgICAgICcgICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3MgaW5zdGFuY2U6XG4nCisgICAgICAgICAgJyAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBzYW1lIGFzIGlmIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQuXG4nLAorICdjbGFzcyc6ICdcbicKKyAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgJworICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICd0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiICcKKyAgICAgICAgICAnc3VpdGVcbicKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbYXJndW1lbnRfbGlzdF0gIikiXG4nCisgICAgICAgICAgJyAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgJworICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgJ3VzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlIE1ldGFjbGFzc2VzIGZvciBtb3JlXG4nCisgICAgICAgICAgJ2FkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGEgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICdvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlICcKKyAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICdpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzICJvYmplY3QiOyBoZW5jZSxcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzpcbicKKyAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbyhvYmplY3QpOlxuJworICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuIgorICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmcpLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbicKKyAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbicKKyAgICAgICAgICAiZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sICIKKyAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgJ2V4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlICcKKyAgICAgICAgICAnYmFzZVxuJworICAgICAgICAgICdjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAnVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG4nCisgICAgICAgICAgJ25hbWVzcGFjZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBvcmRlciBpbiB3aGljaCBhdHRyaWJ1dGVzIGFyZSBkZWZpbmVkIGluIHRoZSBjbGFzcyBib2R5IGlzXG4nCisgICAgICAgICAgJ3ByZXNlcnZlZCBpbiB0aGUgbmV3IGNsYXNzXCdzICJfX2RpY3RfXyIuICBOb3RlIHRoYXQgdGhpcyBpcyAnCisgICAgICAgICAgJ3JlbGlhYmxlXG4nCisgICAgICAgICAgJ29ubHkgcmlnaHQgYWZ0ZXIgdGhlIGNsYXNzIGlzIGNyZWF0ZWQgYW5kIG9ubHkgZm9yIGNsYXNzZXMgdGhhdCAnCisgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAnZGVmaW5lZCB1c2luZyB0aGUgZGVmaW5pdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgJworICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICcgICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgaXMgdGhlbiBib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gIgorICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlICcKKyAgICAgICAgICAnYXR0cmlidXRlc1xuJworICAgICAgICAgICdjYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgYW5kXG4nCisgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gIERlc2NyaXB0b3JzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxuJworICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicsCisgJ2NvbXBhcmlzb25zJzogJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdwcmlvcml0eSxcbicKKyAgICAgICAgICAgICAgICAnd2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciAnCisgICAgICAgICAgICAgICAgJ2JpdHdpc2VcbicKKyAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuJworICAgICAgICAgICAgICAgICcgICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiIT0iXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyAnCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmx5XG4nCisgICAgICAgICAgICAgICAgJ29uY2UgKGJ1dCBpbiBib3RoIGNhc2VzICJ6IiBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuICJ4IDwgJworICAgICAgICAgICAgICAgICd5IiBpc1xuJworICAgICAgICAgICAgICAgICdmb3VuZCB0byBiZSBmYWxzZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICcKKyAgICAgICAgICAgICAgICAnKm9wMSosXG4nCisgICAgICAgICAgICAgICAgJypvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiBvcDIgJworICAgICAgICAgICAgICAgICdjIC4uLiB5XG4nCisgICAgICAgICAgICAgICAgJ29wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gJworICAgICAgICAgICAgICAgICd6IiwgZXhjZXB0XG4nCisgICAgICAgICAgICAgICAgJ3RoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAgJyphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgJworICAgICAgICAgICAgICAgICcodGhvdWdoXG4nCisgICAgICAgICAgICAgICAgJ3BlcmhhcHMgbm90IHByZXR0eSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVmFsdWUgY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICd0aGUgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgJ29mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgZG8gbm90IG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ3R5cGUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDaGFwdGVyIE9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMgc3RhdGVzIHRoYXQgb2JqZWN0cyBoYXZlIGEgJworICAgICAgICAgICAgICAgICd2YWx1ZSAoaW5cbicKKyAgICAgICAgICAgICAgICAnYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhICcKKyAgICAgICAgICAgICAgICAncmF0aGVyXG4nCisgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IG5vdGlvbiBpbiBQeXRob246IEZvciBleGFtcGxlLCB0aGVyZSBpcyBubyBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICdhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAibWV0aG9kIGZvciBhbiBvYmplY3QncyB2YWx1ZS4gIEFsc28sIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50ICIKKyAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAndmFsdWUgb2YgYW4gb2JqZWN0IHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBpbiBhIHBhcnRpY3VsYXIgd2F5LCAnCisgICAgICAgICAgICAgICAgJ2UuZy5cbicKKyAgICAgICAgICAgICAgICAnY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9ycyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudCBhXG4nCisgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgbm90aW9uIG9mIHdoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcy4gIE9uZSBjYW4gJworICAgICAgICAgICAgICAgICd0aGluayBvZlxuJworICAgICAgICAgICAgICAgICd0aGVtIGFzIGRlZmluaW5nIHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaW5kaXJlY3RseSwgYnkgbWVhbnMgJworICAgICAgICAgICAgICAgICdvZiB0aGVpclxuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQmVjYXVzZSBhbGwgdHlwZXMgYXJlIChkaXJlY3Qgb3IgaW5kaXJlY3QpIHN1YnR5cGVzIG9mICcKKyAgICAgICAgICAgICAgICAnIm9iamVjdCIsIHRoZXlcbicKKyAgICAgICAgICAgICAgICAnaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yIGZyb20gIm9iamVjdCIuICBUeXBlcyAnCisgICAgICAgICAgICAgICAgJ2NhblxuJworICAgICAgICAgICAgICAgICdjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciBieSBpbXBsZW1lbnRpbmcgKnJpY2ggJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJ21ldGhvZHMqIGxpa2UgIl9fbHRfXygpIiwgZGVzY3JpYmVkIGluIEJhc2ljIGN1c3RvbWl6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoIj09IiBhbmQgIiE9IikgJworICAgICAgICAgICAgICAgICdpcyBiYXNlZFxuJworICAgICAgICAgICAgICAgICdvbiB0aGUgaWRlbnRpdHkgb2YgdGhlIG9iamVjdHMuICBIZW5jZSwgZXF1YWxpdHkgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB3aXRoIHRoZSBzYW1lIGlkZW50aXR5IHJlc3VsdHMgaW4gZXF1YWxpdHksIGFuZCAnCisgICAgICAgICAgICAgICAgJ2VxdWFsaXR5XG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGlkZW50aXRpZXMgcmVzdWx0cyBpblxuJworICAgICAgICAgICAgICAgICdpbmVxdWFsaXR5LiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlICcKKyAgICAgICAgICAgICAgICAnZGVzaXJlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiAieCBpcyB5IiBpbXBsaWVzICJ4ID09ICcKKyAgICAgICAgICAgICAgICAneSIpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAncHJvdmlkZWQ7XG4nCisgICAgICAgICAgICAgICAgJ2FuIGF0dGVtcHQgcmFpc2VzICJUeXBlRXJyb3IiLiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICdiZWhhdmlvclxuJworICAgICAgICAgICAgICAgICdpcyB0aGUgbGFjayBvZiBhIHNpbWlsYXIgaW52YXJpYW50IGFzIGZvciBlcXVhbGl0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnZGlmZmVyZW50IGlkZW50aXRpZXMgYXJlIGFsd2F5cyB1bmVxdWFsLCBtYXkgYmUgaW4gY29udHJhc3QgJworICAgICAgICAgICAgICAgICd0byB3aGF0XG4nCisgICAgICAgICAgICAgICAgJ3R5cGVzIHdpbGwgbmVlZCB0aGF0IGhhdmUgYSBzZW5zaWJsZSBkZWZpbml0aW9uIG9mIG9iamVjdCAnCisgICAgICAgICAgICAgICAgJ3ZhbHVlIGFuZFxuJworICAgICAgICAgICAgICAgICd2YWx1ZS1iYXNlZCBlcXVhbGl0eS4gIFN1Y2ggdHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgJ3RoZWlyXG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYmVoYXZpb3IsIGFuZCBpbiBmYWN0LCBhIG51bWJlciBvZiBidWlsdC1pbiB0eXBlcyAnCisgICAgICAgICAgICAgICAgJ2hhdmUgZG9uZVxuJworICAgICAgICAgICAgICAgICd0aGF0LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgJworICAgICAgICAgICAgICAgICdtb3N0XG4nCisgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCBidWlsdC1pbiB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTnVtYmVycyBvZiBidWlsdC1pbiBudW1lcmljIHR5cGVzIChOdW1lcmljIFR5cGVzIC0tLSBpbnQsICcKKyAgICAgICAgICAgICAgICAnZmxvYXQsXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGxleCkgYW5kIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IHR5cGVzICcKKyAgICAgICAgICAgICAgICAnImZyYWN0aW9ucy5GcmFjdGlvbiIgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgImRlY2ltYWwuRGVjaW1hbCIgY2FuIGJlIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyICcKKyAgICAgICAgICAgICAgICAndHlwZXMsXG4nCisgICAgICAgICAgICAgICAgJyAgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4IG51bWJlcnMgZG8gbm90IHN1cHBvcnQgJworICAgICAgICAgICAgICAgICdvcmRlclxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24uICBXaXRoaW4gdGhlIGxpbWl0cyBvZiB0aGUgdHlwZXMgaW52b2x2ZWQsIHRoZXkgJworICAgICAgICAgICAgICAgICdjb21wYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgbWF0aGVtYXRpY2FsbHkgKGFsZ29yaXRobWljYWxseSkgY29ycmVjdCB3aXRob3V0IGxvc3Mgb2YgJworICAgICAgICAgICAgICAgICdwcmVjaXNpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFRoZSBub3QtYS1udW1iZXIgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICcKKyAgICAgICAgICAgICAgICAnIkRlY2ltYWwoXCdOYU5cJykiIGFyZVxuJworICAgICAgICAgICAgICAgICcgIHNwZWNpYWwuICBUaGV5IGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcyAoInggaXMgeCIgaXMgJworICAgICAgICAgICAgICAgICd0cnVlKSBidXRcbicKKyAgICAgICAgICAgICAgICAnICBhcmUgbm90IGVxdWFsIHRvIHRoZW1zZWx2ZXMgKCJ4ID09IHgiIGlzIGZhbHNlKS4gICcKKyAgICAgICAgICAgICAgICAnQWRkaXRpb25hbGx5LFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmluZyBhbnkgbnVtYmVyIHRvIGEgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAnIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAnICBGb3IgZXhhbXBsZSwgYm90aCAiMyA8IGZsb2F0KFwnTmFOXCcpIiBhbmQgImZsb2F0KFwnTmFOXCcpICcKKyAgICAgICAgICAgICAgICAnPCAzIiB3aWxsXG4nCisgICAgICAgICAgICAgICAgJyAgcmV0dXJuICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEJpbmFyeSBzZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAiYnl0ZXMiIG9yICJieXRlYXJyYXkiKSBjYW4gJworICAgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLiAgVGhleSBjb21wYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgdmFsdWVzIG9mIHRoZWlyICcKKyAgICAgICAgICAgICAgICAnZWxlbWVudHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFN0cmluZ3MgKGluc3RhbmNlcyBvZiAic3RyIikgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSAnCisgICAgICAgICAgICAgICAgJ3VzaW5nIHRoZVxuJworICAgICAgICAgICAgICAgICcgIG51bWVyaWNhbCBVbmljb2RlIGNvZGUgcG9pbnRzICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgICAgJyAgIm9yZCgpIikgb2YgdGhlaXIgY2hhcmFjdGVycy4gWzNdXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFN0cmluZ3MgYW5kIGJpbmFyeSBzZXF1ZW5jZXMgY2Fubm90IGJlIGRpcmVjdGx5IGNvbXBhcmVkLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBTZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAidHVwbGUiLCAibGlzdCIsIG9yICJyYW5nZSIpIGNhbiAnCisgICAgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGFyZWQgb25seSB3aXRoaW4gZWFjaCBvZiB0aGVpciB0eXBlcywgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICdyZXN0cmljdGlvbiB0aGF0XG4nCisgICAgICAgICAgICAgICAgJyAgcmFuZ2VzIGRvIG5vdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24uICBFcXVhbGl0eSAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gYWNyb3NzXG4nCisgICAgICAgICAgICAgICAgJyAgdGhlc2UgdHlwZXMgcmVzdWx0cyBpbiB1bmVxdWFsaXR5LCBhbmQgb3JkZXJpbmcgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ2Fjcm9zc1xuJworICAgICAgICAgICAgICAgICcgIHRoZXNlIHR5cGVzIHJhaXNlcyAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgU2VxdWVuY2VzIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuJworICAgICAgICAgICAgICAgICcgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMsIHdoZXJlYnkgcmVmbGV4aXZpdHkgb2YgdGhlIGVsZW1lbnRzICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnICBlbmZvcmNlZC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiAnCisgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgJyAgYXNzdW1lcyB0aGF0IGZvciBhIGNvbGxlY3Rpb24gZWxlbWVudCAieCIsICJ4ID09IHgiIGlzICcKKyAgICAgICAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgICAgICAgJyAgQmFzZWQgb24gdGhhdCBhc3N1bXB0aW9uLCBlbGVtZW50IGlkZW50aXR5IGlzIGNvbXBhcmVkICcKKyAgICAgICAgICAgICAgICAnZmlyc3QsIGFuZFxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgJworICAgICAgICAgICAgICAgICdlbGVtZW50cy4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb2FjaCB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIGEgc3RyaWN0IGVsZW1lbnQgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJyAgd291bGQsIGlmIHRoZSBjb21wYXJlZCBlbGVtZW50cyBhcmUgcmVmbGV4aXZlLiAgRm9yICcKKyAgICAgICAgICAgICAgICAnbm9uLXJlZmxleGl2ZVxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24sIGFuZCBtYXkgYmUgc3VycHJpc2luZzogIFRoZSBub24tcmVmbGV4aXZlICcKKyAgICAgICAgICAgICAgICAnbm90LWEtbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgJyAgdmFsdWVzIGZvciBleGFtcGxlIHJlc3VsdCBpbiB0aGUgZm9sbG93aW5nIGNvbXBhcmlzb24gJworICAgICAgICAgICAgICAgICdiZWhhdmlvciB3aGVuXG4nCisgICAgICAgICAgICAgICAgJyAgdXNlZCBpbiBhIGxpc3Q6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICIgICAgID4+PiBuYW4gPSBmbG9hdCgnTmFOJylcbiIKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gbmFuIGlzIG5hblxuJworICAgICAgICAgICAgICAgICcgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAnICAgICA+Pj4gbmFuID09IG5hblxuJworICAgICAgICAgICAgICAgICcgICAgIEZhbHNlICAgICAgICAgICAgICAgICA8LS0gdGhlIGRlZmluZWQgbm9uLXJlZmxleGl2ZSAnCisgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIG9mIE5hTlxuJworICAgICAgICAgICAgICAgICcgICAgID4+PiBbbmFuXSA9PSBbbmFuXVxuJworICAgICAgICAgICAgICAgICcgICAgIFRydWUgICAgICAgICAgICAgICAgICA8LS0gbGlzdCBlbmZvcmNlcyByZWZsZXhpdml0eSBhbmQgJworICAgICAgICAgICAgICAgICd0ZXN0cyBpZGVudGl0eSBmaXJzdFxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBMZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBiZXR3ZWVuIGJ1aWx0LWluIGNvbGxlY3Rpb25zICcKKyAgICAgICAgICAgICAgICAnd29ya3MgYXNcbicKKyAgICAgICAgICAgICAgICAnICBmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAqIEZvciB0d28gY29sbGVjdGlvbnMgdG8gY29tcGFyZSBlcXVhbCwgdGhleSBtdXN0IGJlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICAnICAgIHR5cGUsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgZWFjaCBwYWlyIG9mICcKKyAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICcgICAgZWxlbWVudHMgbXVzdCBjb21wYXJlIGVxdWFsIChmb3IgZXhhbXBsZSwgIlsxLDJdID09ICcKKyAgICAgICAgICAgICAgICAnKDEsMikiIGlzXG4nCisgICAgICAgICAgICAgICAgJyAgICBmYWxzZSBiZWNhdXNlIHRoZSB0eXBlIGlzIG5vdCB0aGUgc2FtZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICogQ29sbGVjdGlvbnMgdGhhdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24gYXJlIG9yZGVyZWQgdGhlICcKKyAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICcgICAgYXMgdGhlaXIgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsICJbMSwyLHhdIDw9ICcKKyAgICAgICAgICAgICAgICAnWzEsMix5XSJcbicKKyAgICAgICAgICAgICAgICAnICAgIGhhcyB0aGUgc2FtZSB2YWx1ZSBhcyAieCA8PSB5IikuICBJZiBhIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICAgICdlbGVtZW50IGRvZXNcbicKKyAgICAgICAgICAgICAgICAnICAgIG5vdCBleGlzdCwgdGhlIHNob3J0ZXIgY29sbGVjdGlvbiBpcyBvcmRlcmVkIGZpcnN0IChmb3IgJworICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICcgICAgIlsxLDJdIDwgWzEsMiwzXSIgaXMgdHJ1ZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIE1hcHBpbmdzIChpbnN0YW5jZXMgb2YgImRpY3QiKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmICcKKyAgICAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICAgICcgIGhhdmUgZXF1YWwgKihrZXksIHZhbHVlKSogcGFpcnMuIEVxdWFsaXR5IGNvbXBhcmlzb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAna2V5cyBhbmRcbicKKyAgICAgICAgICAgICAgICAnICBlbGVtZW50cyBlbmZvcmNlcyByZWZsZXhpdml0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgT3JkZXIgY29tcGFyaXNvbnMgKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgcmFpc2UgJworICAgICAgICAgICAgICAgICciVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU2V0cyAoaW5zdGFuY2VzIG9mICJzZXQiIG9yICJmcm96ZW5zZXQiKSBjYW4gYmUgY29tcGFyZWQgJworICAgICAgICAgICAgICAgICd3aXRoaW5cbicKKyAgICAgICAgICAgICAgICAnICBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGV5IGRlZmluZSBvcmRlciBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmQgJworICAgICAgICAgICAgICAgICdzdXBlcnNldFxuJworICAgICAgICAgICAgICAgICcgIHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzIChmb3IgJworICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICcgIHRoZSB0d28gc2V0cyAiezEsMn0iIGFuZCAiezIsM30iIGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzICcKKyAgICAgICAgICAgICAgICAnb2Ygb25lXG4nCisgICAgICAgICAgICAgICAgJyAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyAnCisgICAgICAgICAgICAgICAgJ2FyZSBub3RcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb3ByaWF0ZSBhcmd1bWVudHMgZm9yIGZ1bmN0aW9ucyB3aGljaCBkZXBlbmQgb24gdG90YWwgJworICAgICAgICAgICAgICAgICdvcmRlcmluZ1xuJworICAgICAgICAgICAgICAgICcgIChmb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSAnCisgICAgICAgICAgICAgICAgJ3VuZGVmaW5lZFxuJworICAgICAgICAgICAgICAgICcgIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgQ29tcGFyaXNvbiBvZiBzZXRzIGVuZm9yY2VzIHJlZmxleGl2aXR5IG9mIGl0cyBlbGVtZW50cy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTW9zdCBvdGhlciBidWlsdC1pbiB0eXBlcyBoYXZlIG5vIGNvbXBhcmlzb24gbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkLFxuJworICAgICAgICAgICAgICAgICcgIHNvIHRoZXkgaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVXNlci1kZWZpbmVkIGNsYXNzZXMgdGhhdCBjdXN0b21pemUgdGhlaXIgY29tcGFyaXNvbiBiZWhhdmlvciAnCisgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICdmb2xsb3cgc29tZSBjb25zaXN0ZW5jeSBydWxlcywgaWYgcG9zc2libGU6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4gSW4gb3RoZXIgd29yZHMsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpY2FsXG4nCisgICAgICAgICAgICAgICAgJyAgb2JqZWN0cyBzaG91bGQgY29tcGFyZSBlcXVhbDpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggaXMgeSIgaW1wbGllcyAieCA9PSB5IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuIEluIG90aGVyIHdvcmRzLCB0aGUgJworICAgICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAgICAnICBleHByZXNzaW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSByZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID09IHkiIGFuZCAieSA9PSB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCAhPSB5IiBhbmQgInkgIT0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IiBhbmQgInkgPiB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8PSB5IiBhbmQgInkgPj0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4gVGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgJyhub24tZXhoYXVzdGl2ZSlcbicKKyAgICAgICAgICAgICAgICAnICBleGFtcGxlcyBpbGx1c3RyYXRlIHRoYXQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID4geSBhbmQgeSA+IHoiIGltcGxpZXMgInggPiB6IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8IHkgYW5kIHkgPD0geiIgaW1wbGllcyAieCA8IHoiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIEludmVyc2UgY29tcGFyaXNvbiBzaG91bGQgcmVzdWx0IGluIHRoZSBib29sZWFuIG5lZ2F0aW9uLiAnCisgICAgICAgICAgICAgICAgJ0luIG90aGVyXG4nCisgICAgICAgICAgICAgICAgJyAgd29yZHMsIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdyZXN1bHQ6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID09IHkiIGFuZCAibm90IHggIT0geSJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IiBhbmQgIm5vdCB4ID49IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ID4geSIgYW5kICJub3QgeCA8PSB5IiAoZm9yIHRvdGFsIG9yZGVyaW5nKVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBUaGUgbGFzdCB0d28gZXhwcmVzc2lvbnMgYXBwbHkgdG8gdG90YWxseSBvcmRlcmVkICcKKyAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMgKGUuZy5cbicKKyAgICAgICAgICAgICAgICAnICB0byBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZVxuJworICAgICAgICAgICAgICAgICcgICJ0b3RhbF9vcmRlcmluZygpIiBkZWNvcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdQeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4gSW4gZmFjdCwgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnbm90LWEtbnVtYmVyIHZhbHVlcyBhcmUgYW4gZXhhbXBsZSBmb3Igbm90IGZvbGxvd2luZyB0aGVzZSAnCisgICAgICAgICAgICAgICAgJ3J1bGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ01lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiAnCisgICAgICAgICAgICAgICAgJ3MiXG4nCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSAnCisgICAgICAgICAgICAgICAgJ290aGVyd2lzZS4gICJ4XG4nCisgICAgICAgICAgICAgICAgJ25vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICdhbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAnCisgICAgICAgICAgICAgICAgJyJpbiIgdGVzdHNcbicKKyAgICAgICAgICAgICAgICAnd2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgJworICAgICAgICAgICAgICAgICdzdWNoIGFzXG4nCisgICAgICAgICAgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlICcKKyAgICAgICAgICAgICAgICAnZm9yIGUgaW5cbicKKyAgICAgICAgICAgICAgICAneSkiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5ICcKKyAgICAgICAgICAgICAgICAnaWYgKngqIGlzXG4nCisgICAgICAgICAgICAgICAgJ2Egc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9ICcKKyAgICAgICAgICAgICAgICAnLTEiLiAgRW1wdHlcbicKKyAgICAgICAgICAgICAgICAnc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyICcKKyAgICAgICAgICAgICAgICAnc3RyaW5nLFxuJworICAgICAgICAgICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgJworICAgICAgICAgICAgICAgICdtZXRob2QsICJ4XG4nCisgICAgICAgICAgICAgICAgJ2luIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiAnCisgICAgICAgICAgICAgICAgJ2J1dCBkb1xuJworICAgICAgICAgICAgICAgICdkZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggJworICAgICAgICAgICAgICAgICcieCA9PSB6IlxuJworICAgICAgICAgICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgICAgICAgICAnZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdMYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSAnCisgICAgICAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsICcKKyAgICAgICAgICAgICAgICAnbG93ZXJcbicKKyAgICAgICAgICAgICAgICAnaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSAnCisgICAgICAgICAgICAgICAgJ290aGVyXG4nCisgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgJworICAgICAgICAgICAgICAgICdleGNlcHRpb24pLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlICcKKyAgICAgICAgICAgICAgICAndmFsdWUgb2ZcbicKKyAgICAgICAgICAgICAgICAnImluIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdJZGVudGl0eSBjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4ICcKKyAgICAgICAgICAgICAgICAnaXMgeSIgaXNcbicKKyAgICAgICAgICAgICAgICAndHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgT2JqZWN0ICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpdHlcbicKKyAgICAgICAgICAgICAgICAnaXMgZGV0ZXJtaW5lZCB1c2luZyB0aGUgImlkKCkiIGZ1bmN0aW9uLiAgInggaXMgbm90IHkiIHlpZWxkcyAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdpbnZlcnNlIHRydXRoIHZhbHVlLiBbNF1cbicsCisgJ2NvbXBvdW5kJzogJ1xuJworICAgICAgICAgICAgICdDb21wb3VuZCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5ICcKKyAgICAgICAgICAgICAnYWZmZWN0XG4nCisgICAgICAgICAgICAgJ29yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgJworICAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgICdnZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJ2luY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSAnCisgICAgICAgICAgICAgJ2xpbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImlmIiwgIndoaWxlIiBhbmQgImZvciIgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWwgJworICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgJ2Zsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yICcKKyAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICdjb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSAid2l0aCIgc3RhdGVtZW50ICcKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZVxuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhIGJsb2NrICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5ICcKKyAgICAgICAgICAgICAnY29tcG91bmRcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkEgY29tcG91bmQgc3RhdGVtZW50IGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlICdjbGF1c2VzLicgIEEgIgorICAgICAgICAgICAgICdjbGF1c2VcbicKKyAgICAgICAgICAgICAiY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgJ3N1aXRlLicgIFRoZSBjbGF1c2UgaGVhZGVycyBvZiBhXG4iCisgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gJworICAgICAgICAgICAgICdsZXZlbC5cbicKKyAgICAgICAgICAgICAnRWFjaCBjbGF1c2UgaGVhZGVyIGJlZ2lucyB3aXRoIGEgdW5pcXVlbHkgaWRlbnRpZnlpbmcga2V5d29yZCAnCisgICAgICAgICAgICAgJ2FuZCBlbmRzXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuJworICAgICAgICAgICAgICdjbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkIHNpbXBsZVxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSAnCisgICAgICAgICAgICAgImhlYWRlcidzXG4iCisgICAgICAgICAgICAgJ2NvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiAnCisgICAgICAgICAgICAgJ3N1YnNlcXVlbnRcbicKKyAgICAgICAgICAgICAnbGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBhIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCAnCisgICAgICAgICAgICAgJ2NvbXBvdW5kXG4nCisgICAgICAgICAgICAgInN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuJ3QgIgorICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdjbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkICcKKyAgICAgICAgICAgICAnYmVsb25nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluICcKKyAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICdjb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyJwcmludCgpIiBjYWxscyBhcmUgZXhlY3V0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1N1bW1hcml6aW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29tcG91bmRfc3RtdCA6Oj0gaWZfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IHRyeV9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGNsYXNzZGVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfd2l0aF9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfZm9yX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mdW5jZGVmXG4nCisgICAgICAgICAgICAgJyAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQrIERFREVOVFxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgICAgIDo6PSBzdG10X2xpc3QgTkVXTElORSB8IGNvbXBvdW5kX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgc3RhdGVtZW50cyBhbHdheXMgZW5kIGluIGEgIk5FV0xJTkUiIHBvc3NpYmx5IGZvbGxvd2VkICcKKyAgICAgICAgICAgICAnYnkgYVxuJworICAgICAgICAgICAgICciREVERU5UIi4gIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlZ2luXG4nCisgICAgICAgICAgICAgJ3dpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuJworICAgICAgICAgICAgICdhbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAncmVxdWlyaW5nIG5lc3RlZCAiaWYiIHN0YXRlbWVudHMgdG8gYmUgaW5kZW50ZWQpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyAnCisgICAgICAgICAgICAgJ3BsYWNlc1xuJworICAgICAgICAgICAgICdlYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9ucyBvbmVcbicKKyAgICAgICAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICAgICcoYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yICcKKyAgICAgICAgICAgICAnZXZhbHVhdGVkKS5cbicKKyAgICAgICAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdHJ1ZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlX3N0bXQgOjo9ICJ3aGlsZSIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGlzIHJlcGVhdGVkbHkgdGVzdHMgdGhlIGV4cHJlc3Npb24gYW5kLCBpZiBpdCBpcyB0cnVlLCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVzIHRoZVxuJworICAgICAgICAgICAgICdmaXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgJworICAgICAgICAgICAgICd0aW1lXG4nCisgICAgICAgICAgICAgJ2l0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGdvZXMgJworICAgICAgICAgICAgICdiYWNrXG4nCisgICAgICAgICAgICAgJ3RvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgJworICAgICAgICAgICAgICdzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gJworICAgICAgICAgICAgICdpdGVyYWJsZVxuJworICAgICAgICAgICAgICdvYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuJworICAgICAgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggJworICAgICAgICAgICAgICdpdGVtXG4nCisgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yLiAgRWFjaFxuJworICAgICAgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCAnCisgICAgICAgICAgICAgJ3J1bGVzXG4nCisgICAgICAgICAgICAgJ2ZvciBhc3NpZ25tZW50cyAoc2VlIEFzc2lnbm1lbnQgc3RhdGVtZW50cyksIGFuZCB0aGVuIHRoZSBzdWl0ZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgJworICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAgICAgICdleGNlcHRpb24pLFxuJworICAgICAgICAgICAgICd0aGUgc3VpdGUgaW4gdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiICcKKyAgICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kICcKKyAgICAgICAgICAgICAnY29udGludWVzXG4nCisgICAgICAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyAnCisgICAgICAgICAgICAgJ25leHRcbicKKyAgICAgICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgJworICAgICAgICAgICAgICdsaXN0LlxuJworICAgICAgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICAgICAgJ2luY2x1ZGluZ1xuJworICAgICAgICAgICAgICd0aG9zZSBtYWRlIGluIHRoZSBzdWl0ZSBvZiB0aGUgZm9yLWxvb3A6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmb3IgaSBpbiByYW5nZSgxMCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCAnCisgICAgICAgICAgICAgJ3RoZSBuZXh0XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzICcKKyAgICAgICAgICAgICAnZmluaXNoZWQsXG4nCisgICAgICAgICAgICAgJ2J1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAndG8gYXRcbicKKyAgICAgICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAiaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbCdzICIKKyAgICAgICAgICAgICAnImZvciBpXG4nCisgICAgICAgICAgICAgJzo9IGEgdG8gYiBkbyI7IGUuZy4sICJsaXN0KHJhbmdlKDMpKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsICcKKyAgICAgICAgICAgICAnMl0iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gICcKKyAgICAgICAgICAgICAnQW5cbicKKyAgICAgICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgJworICAgICAgICAgICAgICduZXh0LFxuJworICAgICAgICAgICAgICcgIGFuZCB0aGlzIGlzIGluY3JlbWVudGVkIG9uIGVhY2ggaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgJworICAgICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAgICAnICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzICcKKyAgICAgICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtICcKKyAgICAgICAgICAgICAnZnJvbSB0aGVcbicKKyAgICAgICAgICAgICAnICBzZXF1ZW5jZSwgdGhlIG5leHQgaXRlbSB3aWxsIGJlIHNraXBwZWQgKHNpbmNlIGl0IGdldHMgdGhlICcKKyAgICAgICAgICAgICAnaW5kZXggb2ZcbicKKyAgICAgICAgICAgICAnICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgIGN1cnJlbnQgaXRlbSB3aWxsIGJlIHRyZWF0ZWQgYWdhaW4gdGhlIG5leHQgdGltZSB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3AuXG4nCisgICAgICAgICAgICAgJyAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbicKKyAgICAgICAgICAgICAnICB0ZW1wb3JhcnkgY29weSB1c2luZyBhIHNsaWNlIG9mIHRoZSB3aG9sZSBzZXF1ZW5jZSwgZS5nLixcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgZm9yIHggaW4gYVs6XTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgaWYgeCA8IDA6IGEucmVtb3ZlKHgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgJworICAgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICAgJ2ZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAgICAgICcgICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiICcKKyAgICAgICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuICcKKyAgICAgICAgICAgICAnV2hlbiBub1xuJworICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCAnCisgICAgICAgICAgICAgJ2ZvciBhblxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgICAgICAnaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24tXG4nCisgICAgICAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAgICAgICdleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgJworICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSAnCisgICAgICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgICAgICdvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyAnCisgICAgICAgICAgICAgJ2NvbXBhdGlibGVcbicKKyAgICAgICAgICAgICAnd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZVxuJworICAgICAgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgJworICAgICAgICAgICAgICdjYW5jZWxlZCBhbmRcbicKKyAgICAgICAgICAgICAnYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSAnCisgICAgICAgICAgICAgJ2FuZCBvblxuJworICAgICAgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG9cbicKKyAgICAgICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZSwgaWZcbicKKyAgICAgICAgICAgICAicHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG4iCisgICAgICAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyAnCisgICAgICAgICAgICAgJ2Jsb2NrIGlzXG4nCisgICAgICAgICAgICAgJ3JlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgJworICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJyhUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgJworICAgICAgICAgICAgICdleGNlcHRpb24sXG4nCisgICAgICAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnb3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3YXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0IEUgYXMgTjpcbicKKyAgICAgICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgICAgICAnICAgICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgZGVsIE5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gJworICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgJworICAgICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgICAgJ2JlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhICcKKyAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgJ2N5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSAnCisgICAgICAgICAgICAgJ2FsaXZlXG4nCisgICAgICAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJCZWZvcmUgYW4gZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuIgorICAgICAgICAgICAgICdleGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgJworICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAnInN5cy5leGNfaW5mbygpIi4gInN5cy5leGNfaW5mbygpIiByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ3Byb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ3Jlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuICcKKyAgICAgICAgICAgICAncmV0dXJuaW5nXG4nCisgICAgICAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyAnCisgICAgICAgICAgICAgJ29mZlxuJworICAgICAgICAgICAgICd0aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgJworICAgICAgICAgICAgICdUaGUgInRyeSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gICcKKyAgICAgICAgICAgICAnSWYgYW5cbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkLiAgSWZcbicKKyAgICAgICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlICcKKyAgICAgICAgICAgICAnc2F2ZWRcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICcKKyAgICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaXMgZGlzY2FyZGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gNDJcbicKKyAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgJyAgID4+PiBmKClcbicKKyAgICAgICAgICAgICAnICAgNDJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2R1cmluZ1xuJworICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgJworICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgJworICAgICAgICAgICAgICdpbGxlZ2FsIGluXG4nCisgICAgICAgICAgICAgJ3RoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuJworICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSAnCisgICAgICAgICAgICAgJ2Z1dHVyZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJyJyZXR1cm4iXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2JlIHRoZVxuJworICAgICAgICAgICAgICdsYXN0IG9uZSBleGVjdXRlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBkZWYgZm9vKCk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ3RyeSdcbiIKKyAgICAgICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ2ZpbmFsbHknXG4iCisgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICcgICA+Pj4gZm9vKClcbicKKyAgICAgICAgICAgICAiICAgJ2ZpbmFsbHknXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byAnCisgICAgICAgICAgICAgJ2dlbmVyYXRlXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gVGhlIHJhaXNlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayAnCisgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAnbWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiBXaXRoICcKKyAgICAgICAgICAgICAnU3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ0NvbnRleHQgTWFuYWdlcnMpLiBUaGlzIGFsbG93cyBjb21tb24gJworICAgICAgICAgICAgICcidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAgICAgJ3VzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgJworICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICcKKyAgICAgICAgICAgICAnIndpdGhfaXRlbSIpXG4nCisgICAgICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICcKKyAgICAgICAgICAgICAnIl9fZW50ZXJfXygpIlxuJworICAgICAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgJworICAgICAgICAgICAgICdhbHdheXMgYmVcbicKKyAgICAgICAgICAgICAnICAgICBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yICcKKyAgICAgICAgICAgICAnb2NjdXJyaW5nXG4nCisgICAgICAgICAgICAgJyAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgJyAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZHVlIHRvIGFuIGV4Y2VwdGlvbiwgYW5kIHRoZSByZXR1cm4gJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgJ3JlcmFpc2VkLlxuJworICAgICAgICAgICAgICcgICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gJworICAgICAgICAgICAgICdleGNlcHRpb24sIHRoZVxuJworICAgICAgICAgICAgICcgICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ3Byb2NlZWRzXG4nCisgICAgICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJ211bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICAgICAnICAgICAgIHdpdGggQigpIGFzIGI6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgJworICAgICAgICAgICAgICdleHByZXNzaW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAnCisgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICAgICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICAgICAgICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICAgICAgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgJworICAgICAgICAgICAgICdbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0ICAgICAgICAgIDo6PSBkZWZwYXJhbWV0ZXIgKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgW3BhcmFtZXRlcl9saXN0X3N0YXJhcmdzXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3MgOjo9ICIqIiBbcGFyYW1ldGVyXSAoIiwiICcKKyAgICAgICAgICAgICAnZGVmcGFyYW1ldGVyKSogWyIsIiBbIioqIiBwYXJhbWV0ZXIgWyIsIl1dXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlciBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgICAgICAgICAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdleGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvICcKKyAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAnImZ1bmMiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJyJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCAnCisgICAgICAgICAgICAgJ2FzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IG9yZGVyZWRcbicKKyAgICAgICAgICAgICAnbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhICcKKyAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3JcbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgJworICAgICAgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgICAgICAndXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyAnCisgICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlICcKKyAgICAgICAgICAgICAnY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgJworICAgICAgICAgICAgICdib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcgZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgJ3R5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAnCisgICAgICAgICAgICAgJyI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbicKKyAgICAgICAgICAgICAnICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSAnCisgICAgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAgICAndXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgTWV0YWNsYXNzZXMgZm9yIG1vcmVcbicKKyAgICAgICAgICAgICAnYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJ29iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2UgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJ2luaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOlxuJworICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vKG9iamVjdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJUaGUgY2xhc3MncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAiCisgICAgICAgICAgICAgJyhzZWVcbicKKyAgICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbicKKyAgICAgICAgICAgICAiZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSBmaW5pc2hlcyAiCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiwgaXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuICcKKyAgICAgICAgICAgICAnWzRdIEFcbicKKyAgICAgICAgICAgICAnY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlICcKKyAgICAgICAgICAgICAnYmFzZVxuJworICAgICAgICAgICAgICdjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAnVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsICcKKyAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAnbmFtZXNwYWNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9yZGVyIGluIHdoaWNoIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIGJvZHkgaXNcbicKKyAgICAgICAgICAgICAncHJlc2VydmVkIGluIHRoZSBuZXcgY2xhc3NcJ3MgIl9fZGljdF9fIi4gIE5vdGUgdGhhdCB0aGlzIGlzICcKKyAgICAgICAgICAgICAncmVsaWFibGVcbicKKyAgICAgICAgICAgICAnb25seSByaWdodCBhZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0ICcKKyAgICAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICAgICdkZWZpbmVkIHVzaW5nIHRoZSBkZWZpbml0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgbWV0YWNsYXNzZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIHJvdWdobHkgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgICAgJyAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBpcyB0aGVuIGJvdW5kIHRvIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgJ25hbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uICIKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ2NsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSAnCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ2luc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gJworICAgICAgICAgICAgICciInNlbGYubmFtZSIiLFxuJworICAgICAgICAgICAgICdhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlIHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICAgJ3doZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzICcKKyAgICAgICAgICAgICAnZGVmYXVsdHNcbicKKyAgICAgICAgICAgICAnZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJ3VuZXhwZWN0ZWQgcmVzdWx0cy4gIERlc2NyaXB0b3JzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxuJworICAgICAgICAgICAgICd2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuJworICAgICAgICAgICAgICcgIENsYXNzIERlY29yYXRvcnNcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDb3JvdXRpbmUgZnVuY3Rpb24gZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfZnVuY2RlZiA6Oj0gW2RlY29yYXRvcnNdICJhc3luYyIgImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdFeGVjdXRpb24gb2YgUHl0aG9uIGNvcm91dGluZXMgY2FuIGJlIHN1c3BlbmRlZCBhbmQgcmVzdW1lZCBhdCAnCisgICAgICAgICAgICAgJ21hbnlcbicKKyAgICAgICAgICAgICAncG9pbnRzIChzZWUgKmNvcm91dGluZSopLiAgSW4gdGhlIGJvZHkgb2YgYSBjb3JvdXRpbmUsIGFueSAnCisgICAgICAgICAgICAgJyJhd2FpdCIgYW5kXG4nCisgICAgICAgICAgICAgJyJhc3luYyIgaWRlbnRpZmllcnMgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzOyAiYXdhaXQiICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsXG4nCisgICAgICAgICAgICAgJyJhc3luYyBmb3IiIGFuZCAiYXN5bmMgd2l0aCIgY2FuIG9ubHkgYmUgdXNlZCBpbiBjb3JvdXRpbmUgJworICAgICAgICAgICAgICdib2RpZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbnMgZGVmaW5lZCB3aXRoICJhc3luYyBkZWYiIHN5bnRheCBhcmUgYWx3YXlzIGNvcm91dGluZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbnMsIGV2ZW4gaWYgdGhleSBkbyBub3QgY29udGFpbiAiYXdhaXQiIG9yICJhc3luYyIgJworICAgICAgICAgICAgICdrZXl3b3Jkcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgInlpZWxkIiBleHByZXNzaW9ucyBpbiAiYXN5bmMgZGVmIlxuJworICAgICAgICAgICAgICdjb3JvdXRpbmVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQW4gZXhhbXBsZSBvZiBhIGNvcm91dGluZSBmdW5jdGlvbjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIGRlZiBmdW5jKHBhcmFtMSwgcGFyYW0yKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGRvX3N0dWZmKClcbicKKyAgICAgICAgICAgICAnICAgICAgIGF3YWl0IHNvbWVfY29yb3V0aW5lKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIGZvciIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX2Zvcl9zdG10IDo6PSAiYXN5bmMiIGZvcl9zdG10XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbiAqYXN5bmNocm9ub3VzIGl0ZXJhYmxlKiBpcyBhYmxlIHRvIGNhbGwgYXN5bmNocm9ub3VzIGNvZGUgaW4gJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAnKml0ZXIqIGltcGxlbWVudGF0aW9uLCBhbmQgKmFzeW5jaHJvbm91cyBpdGVyYXRvciogY2FuIGNhbGxcbicKKyAgICAgICAgICAgICAnYXN5bmNocm9ub3VzIGNvZGUgaW4gaXRzICpuZXh0KiBtZXRob2QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIGZvciIgc3RhdGVtZW50IGFsbG93cyBjb252ZW5pZW50IGl0ZXJhdGlvbiBvdmVyXG4nCisgICAgICAgICAgICAgJ2FzeW5jaHJvbm91cyBpdGVyYXRvcnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvZGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luYyBmb3IgVEFSR0VUIGluIElURVI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICcgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0syXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGl0ZXIgPSAoSVRFUilcbicKKyAgICAgICAgICAgICAnICAgaXRlciA9IHR5cGUoaXRlcikuX19haXRlcl9fKGl0ZXIpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bm5pbmcgPSBUcnVlXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlIHJ1bm5pbmc6XG4nCisgICAgICAgICAgICAgJyAgICAgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgVEFSR0VUID0gYXdhaXQgdHlwZShpdGVyKS5fX2FuZXh0X18oaXRlcilcbicKKyAgICAgICAgICAgICAnICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcnVubmluZyA9IEZhbHNlXG4nCisgICAgICAgICAgICAgJyAgICAgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DSzJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvICJfX2FpdGVyX18oKSIgYW5kICJfX2FuZXh0X18oKSIgZm9yIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyBmb3IiIHN0YXRlbWVudCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnImFzeW5jIGRlZiIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJhc3luYyB3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jX3dpdGhfc3RtdCA6Oj0gImFzeW5jIiB3aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FuICphc3luY2hyb25vdXMgY29udGV4dCBtYW5hZ2VyKiBpcyBhICpjb250ZXh0IG1hbmFnZXIqIHRoYXQgaXMgJworICAgICAgICAgICAgICdhYmxlXG4nCisgICAgICAgICAgICAgJ3RvIHN1c3BlbmQgZXhlY3V0aW9uIGluIGl0cyAqZW50ZXIqIGFuZCAqZXhpdCogbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29kZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIHdpdGggRVhQUiBhcyBWQVI6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DS1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG86XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBtZ3IgPSAoRVhQUilcbicKKyAgICAgICAgICAgICAnICAgYWV4aXQgPSB0eXBlKG1ncikuX19hZXhpdF9fXG4nCisgICAgICAgICAgICAgJyAgIGFlbnRlciA9IHR5cGUobWdyKS5fX2FlbnRlcl9fKG1ncilcbicKKyAgICAgICAgICAgICAnICAgZXhjID0gVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVkFSID0gYXdhaXQgYWVudGVyXG4nCisgICAgICAgICAgICAgJyAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdDpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIG5vdCBhd2FpdCBhZXhpdChtZ3IsICpzeXMuZXhjX2luZm8oKSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcmFpc2VcbicKKyAgICAgICAgICAgICAnICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGF3YWl0IGFleGl0KG1nciwgTm9uZSwgTm9uZSwgTm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvICJfX2FlbnRlcl9fKCkiIGFuZCAiX19hZXhpdF9fKCkiIGZvciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgd2l0aCIgc3RhdGVtZW50IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICciYXN5bmMgZGVmIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOiAqKlBFUCA0OTIqKiAtIENvcm91dGluZXMgd2l0aCBhc3luYyBhbmQgYXdhaXQgc3ludGF4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1sxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4nCisgICAgICAgICAgICAgJyAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4nCisgICAgICAgICAgICAgJyAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgJworICAgICAgICAgICAgICdsb3N0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICBhbiBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhICJyZXR1cm4iLCAiY29udGludWUiLCBvclxuJworICAgICAgICAgICAgICcgICAgImJyZWFrIiBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGVcbicKKyAgICAgICAgICAgICAnICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4nCisgICAgICAgICAgICAgIiAgICBhdHRyaWJ1dGUgYW5kIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb24ncyAqZG9jc3RyaW5nKi5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1s0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICIgICAgdGhlcmVmb3JlIHRoZSBjbGFzcydzICpkb2NzdHJpbmcqLlxuIiwKKyAnY29udGV4dC1tYW5hZ2Vycyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dCB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ2JlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICdoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZWlyIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAgICAgJ2Nsb3Npbmcgb3BlbmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnTWFuYWdlciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICdhbnkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICdjb250aW51ZSc6ICdcbicKKyAgICAgICAgICAgICAnVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICcKKyAgICAgICAgICAgICAnIndoaWxlIlxuJworICAgICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICduZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbicKKyAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgJ3JlYWxseVxuJworICAgICAgICAgICAgICdzdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKKyAnY29udmVyc2lvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0FyaXRobWV0aWMgY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2hlbiBhIGRlc2NyaXB0aW9uIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IgYmVsb3cgdXNlcyB0aGUgJworICAgICAgICAgICAgICAgICdwaHJhc2VcbicKKyAgICAgICAgICAgICAgICAnInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzICcKKyAgICAgICAgICAgICAgICAnbWVhbnNcbicKKyAgICAgICAgICAgICAgICAndGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIGFzICcKKyAgICAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogSWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgY29tcGxleCBudW1iZXIsIHRoZSBvdGhlciBpcyAnCisgICAgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICAgICcgIGNvbXBsZXg7XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICcgIG90aGVyIGlzIGNvbnZlcnRlZCB0byBmbG9hdGluZyBwb2ludDtcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgJworICAgICAgICAgICAgICAgICduZWNlc3NhcnkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdTb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhICcKKyAgICAgICAgICAgICAgICAnc3RyaW5nIGFzIGFcbicKKyAgICAgICAgICAgICAgICAibGVmdCBhcmd1bWVudCB0byB0aGUgJyUnIG9wZXJhdG9yKS4gIEV4dGVuc2lvbnMgbXVzdCBkZWZpbmUgIgorICAgICAgICAgICAgICAgICd0aGVpciBvd25cbicKKyAgICAgICAgICAgICAgICAnY29udmVyc2lvbiBiZWhhdmlvci5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG4nCisgICAgICAgICAgICAgICAgICAnQmFzaWMgY3VzdG9taXphdGlvblxuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAgJ2FzIHN1Y2gpXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCAnCisgICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgJworICAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIG9mICpjbHMqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzcyBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3ICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgJworICAgICAgICAgICAgICAgICAgJ3RoZW4gdGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluICcKKyAgICAgICAgICAgICAgICAgICdvcmRlciB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIpLCBidXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2QsIGlmXG4nCisgICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgICdpbml0aWFsaXphdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluICcKKyAgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gJworICAgICAgICAgICAgICAgICAgJ2N1c3RvbWl6ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgJworICAgICAgICAgICAgICAgICAgJyJfX2luaXRfXygpIjsgZG9pbmcgc29cbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICAnaXMgYWxzb1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBjYWxsIGl0XG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICAnYXQgYSBsYXRlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgJworICAgICAgICAgICAgICAgICAgJ2V4aXN0IHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2xhdHRlciBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gICcKKyAgICAgICAgICAgICAgICAgICdTb21lIGNvbW1vblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gJworICAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cyAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdwYXJlbnQgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdzdGFjayBmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgJworICAgICAgICAgICAgICAgICAgJ3N0b3JlZCBpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhICcKKyAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuICcKKyAgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCAnCisgICAgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICAnCisgICAgICAgICAgICAgICAgICAnVGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyAnCisgICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAndGhpcmQgY2FuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gJworICAgICAgICAgICAgICAgICAgJ0NpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCAnCisgICAgICAgICAgICAgICAgICAndXAgd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgICdkZWZhdWx0KS4gUmVmZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgJworICAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIHRvcGljLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyICcKKyAgICAgICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyICcKKyAgICAgICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkICcKKyAgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgJworICAgICAgICAgICAgICAgICAgJ2ludm9rZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gJworICAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJfX2RlbF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAgJ29mIGJlaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICAnCisgICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlICcKKyAgICAgICAgICAgICAgICAgICdtaW5pbXVtIG5lZWRlZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24gMS41LFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggJworICAgICAgICAgICAgICAgICAgJ2Egc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAnZ2xvYmFscyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCAnCisgICAgICAgICAgICAgICAgICAndGhpcyBtYXlcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCAnCisgICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCAnCisgICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICd1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1cbicKKyAgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiAnCisgICAgICAgICAgICAgICAgICAnVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICcKKyAgICAgICAgICAgICAgICAgICciaW5mb3JtYWwiXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgICdyZXF1aXJlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgICciZm9ybWF0KCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgJworICAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgICcgICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbjogYVxuJworICAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24sIGFuZCBieSAnCisgICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRpb24gb2YgZm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscyBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiIHN0cmluZyByZXByZXNlbnRhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGRlc2lyZWQuIFRoZSAnCisgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGwgZWl0aGVyICcKKyAgICAgICAgICAgICAgICAgICdkZWxlZ2F0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGEgJworICAgICAgICAgICAgICAgICAgJ3NpbWlsYXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UgZm9yIGEgZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICcKKyAgICAgICAgICAgICAgICAgICcib2JqZWN0IiBpdHNlbGZcbicKKyAgICAgICAgICAgICAgICAgICcgICByYWlzZXMgYSAiVHlwZUVycm9yIiBpZiBwYXNzZWQgYW55IG5vbi1lbXB0eSBzdHJpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcy4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9sbG93czogIng8eSIgY2FsbHMgInguX19sdF9fKHkpIiwgIng8PXkiIGNhbGxzICcKKyAgICAgICAgICAgICAgICAgICcieC5fX2xlX18oeSkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgJworICAgICAgICAgICAgICAgICAgJyJ4PnkiIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICAnICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gJworICAgICAgICAgICAgICAgICAgJyJOb3RJbXBsZW1lbnRlZCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyICcKKyAgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAnYW55IHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgICdjb250ZXh0IChlLmcuLFxuJworICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICcKKyAgICAgICAgICAgICAgICAgICciYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yICcKKyAgICAgICAgICAgICAgICAgICdmYWxzZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBCeSBkZWZhdWx0LCAiX19uZV9fKCkiIGRlbGVnYXRlcyB0byAiX19lcV9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnaW52ZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gJworICAgICAgICAgICAgICAgICAgJ290aGVyIGltcGxpZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yICcKKyAgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0cnV0aCBvZiAiKHg8eSBvciB4PT15KSIgZG9lcyBub3QgaW1wbHkgIng8PXkiLiBUbyAnCisgICAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseVxuJworICAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24sIHNlZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgU2VlIHRoZSBwYXJhZ3JhcGggb24gIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVyZSBhcmUgbm8gc3dhcHBlZC1hcmd1bWVudCB2ZXJzaW9ucyBvZiB0aGVzZSBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgICcodG8gYmUgdXNlZFxuJworICAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICdidXQgdGhlIHJpZ2h0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgJworICAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAgJyAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgJworICAgICAgICAgICAgICAgICAgJ3JlZmxlY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiAnCisgICAgICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmQncyAiCisgICAgICAgICAgICAgICAgICAndHlwZSBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAiICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmQncyB0eXBlLCAiCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksICcKKyAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICAiICAgbGVmdCBvcGVyYW5kJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgIgorICAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgJworICAgICAgICAgICAgICAgICAgJyJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgJworICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkIHByb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAnICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSAnCisgICAgICAgICAgICAgICAgICAnb3IpIHRoZSBoYXNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgJworICAgICAgICAgICAgICAgICAgJ3BhcnQgaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuICcKKyAgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAgJyAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAnCisgICAgICAgICAgICAgICAgICAnIlB5X3NzaXplX3QiLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiAnCisgICAgICAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICcicHl0aG9uIC1jXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCAnCisgICAgICAgICAgICAgICAgICAnc2hvdWxkIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlICcKKyAgICAgICAgICAgICAgICAgICdhcyBpdGVtcyBpblxuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCAnCisgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgJworICAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAgIm9iamVjdCdzIGhhc2hcbiIKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYnlcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSAnCisgICAgICAgICAgICAgICAgICAnaGFzaCh5KSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgJworICAgICAgICAgICAgICAgICAgJyJfX2hhc2hfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgICdXaGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSAnCisgICAgICAgICAgICAgICAgICAnYXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosICcKKyAgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICAnICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgICdzdXBwcmVzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgJworICAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgJworICAgICAgICAgICAgICAgICAgJ3JhbmRvbSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkICcKKyAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgJworICAgICAgICAgICAgICAgICAgJ2EgZGVuaWFsLVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnZXhwbG9pdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgU2VlICcKKyAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSAnCisgICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICAnMzItYml0IGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSAnCisgICAgICAgICAgICAgICAgICAnZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ib29sX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlIG9iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG4nCisgICAgICAgICAgICAgJyJwZGIiIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKlNvdXJjZSBjb2RlOioqIExpYi9wZGIucHlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICdQeXRob24gcHJvZ3JhbXMuICBJdCBzdXBwb3J0cyBzZXR0aW5nIChjb25kaXRpb25hbCkgYnJlYWtwb2ludHMgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayAnCisgICAgICAgICAgICAgJ2ZyYW1lcyxcbicKKyAgICAgICAgICAgICAnc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2NvbnRleHQgb2YgYW55IHN0YWNrIGZyYW1lLiAgSXQgYWxzbyBzdXBwb3J0cyBwb3N0LW1vcnRlbSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2luZ1xuJworICAgICAgICAgICAgICdhbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJyJQZGIiLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5ICcKKyAgICAgICAgICAgICAncmVhZGluZ1xuJworICAgICAgICAgICAgICd0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyAiYmRiIiBhbmQgJworICAgICAgICAgICAgICciY21kIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBkZWJ1Z2dlclwncyBwcm9tcHQgaXMgIihQZGIpIi4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSAnCisgICAgICAgICAgICAgJ3Byb2dyYW0gdW5kZXJcbicKKyAgICAgICAgICAgICAnY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IHBkYlxuJworICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4nCisgICAgICAgICAgICAgIiAgID4+PiBwZGIucnVuKCdteW1vZHVsZS50ZXN0KCknKVxuIgorICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDApPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpIGNvbnRpbnVlXG4nCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMSk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYikgY29udGludWVcbicKKyAgICAgICAgICAgICAiICAgTmFtZUVycm9yOiAnc3BhbSdcbiIKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigxKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogVGFiLWNvbXBsZXRpb24gdmlhIHRoZSAicmVhZGxpbmUiIG1vZHVsZSAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2F2YWlsYWJsZSBmb3IgY29tbWFuZHMgYW5kIGNvbW1hbmQgYXJndW1lbnRzLCBlLmcuIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgJ2FuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcyBhcmd1bWVudHMgb2YgdGhlICJwIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnInBkYi5weSIgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciAnCisgICAgICAgICAgICAgJ3NjcmlwdHMuICBGb3JcbicKKyAgICAgICAgICAgICAnZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHB5dGhvbjMgLW0gcGRiIG15c2NyaXB0LnB5XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgJworICAgICAgICAgICAgICdwb3N0LW1vcnRlbVxuJworICAgICAgICAgICAgICdkZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyICcKKyAgICAgICAgICAgICAncG9zdC1cbicKKyAgICAgICAgICAgICAnbW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgJworICAgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICAgInJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiJ3Mgc3RhdGUgIgorICAgICAgICAgICAgICcoc3VjaFxuJworICAgICAgICAgICAgICdhcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICJkZWJ1Z2dlciB1cG9uIHByb2dyYW0ncyBleGl0LlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4yOiAicGRiLnB5IiBub3cgYWNjZXB0cyBhICItYyIgb3B0aW9uIHRoYXQgJworICAgICAgICAgICAgICdleGVjdXRlc1xuJworICAgICAgICAgICAgICdjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhICIucGRicmMiIGZpbGUsIHNlZSBEZWJ1Z2dlciBDb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nICcKKyAgICAgICAgICAgICAncHJvZ3JhbSBpc1xuJworICAgICAgICAgICAgICd0byBpbnNlcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiAnCisgICAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgICAnc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlICcKKyAgICAgICAgICAgICAncnVubmluZ1xuJworICAgICAgICAgICAgICd3aXRob3V0IHRoZSBkZWJ1Z2dlciB1c2luZyB0aGUgImNvbnRpbnVlIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgcGRiXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgbXltb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuJworICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuJworICAgICAgICAgICAgICcgICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbicKKyAgICAgICAgICAgICAnICAgICAgIHRlc3QyKClcbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuJworICAgICAgICAgICAgICcgICAgICAgcHJpbnQoc3BhbSlcbicKKyAgICAgICAgICAgICAnICAgTmFtZUVycm9yOiBzcGFtXG4nCisgICAgICAgICAgICAgJyAgID4+PiBwZGIucG0oKVxuJworICAgICAgICAgICAgICcgICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4nCisgICAgICAgICAgICAgJyAgIC0+IHByaW50KHNwYW0pXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM7IGVhY2ggZW50ZXJzIHRoZSAnCisgICAgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgICAgJ2luIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKnN0YXRlbWVudCogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpICcKKyAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAnICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55ICcKKyAgICAgICAgICAgICAnY29kZSBpc1xuJworICAgICAgICAgICAgICcgICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91ICcKKyAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nICJzdGVwIiBvciAibmV4dCIgKGFsbCB0aGVzZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICcKKyAgICAgICAgICAgICAnKmxvY2FscypcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGVudmlyb25tZW50IGluIHdoaWNoIHRoZSBjb2RlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQ7IGJ5XG4nCisgICAgICAgICAgICAgJyAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSAiX19tYWluX18iIGlzIHVzZWQuICAnCisgICAgICAgICAgICAgJyhTZWUgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGV4cGxhbmF0aW9uIG9mIHRoZSBidWlsdC1pbiAiZXhlYygpIiBvciAiZXZhbCgpIiBmdW5jdGlvbnMuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSAnCisgICAgICAgICAgICAgJ29iamVjdClcbicKKyAgICAgICAgICAgICAnICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICAicnVuKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhICcKKyAgICAgICAgICAgICAnc3RyaW5nKVxuJworICAgICAgICAgICAgICcgICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuICJydW5jYWxsKCkiIHJldHVybnMsIGl0ICcKKyAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICcgICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgJworICAgICAgICAgICAgICdhcHBlYXJzXG4nCisgICAgICAgICAgICAgJyAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgJworICAgICAgICAgICAgICd1c2VmdWwgdG9cbicKKyAgICAgICAgICAgICAnICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbicKKyAgICAgICAgICAgICAnICAgZmFpbHMpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICAnCisgICAgICAgICAgICAgJ0lmIG5vXG4nCisgICAgICAgICAgICAgJyAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5wbSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuJworICAgICAgICAgICAgICcgICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicnVuKiIgZnVuY3Rpb25zIGFuZCAic2V0X3RyYWNlKCkiIGFyZSBhbGlhc2VzIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbnRpYXRpbmdcbicKKyAgICAgICAgICAgICAndGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSAnCisgICAgICAgICAgICAgJ3dhbnRcbicKKyAgICAgICAgICAgICAndG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgIgorICAgICAgICAgICAgICdza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlLCByZWFkcmM9VHJ1ZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICJQZGIiIGlzIHRoZSBkZWJ1Z2dlciBjbGFzcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCAnCisgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICcgICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICcKKyAgICAgICAgICAgICAnZ2xvYi1zdHlsZVxuJworICAgICAgICAgICAgICcgICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICcgICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gJworICAgICAgICAgICAgICdbMV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsIFBkYiBzZXRzIGEgaGFuZGxlciBmb3IgdGhlIFNJR0lOVCBzaWduYWwgKHdoaWNoICcKKyAgICAgICAgICAgICAnaXMgc2VudFxuJworICAgICAgICAgICAgICcgICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgIkN0cmwtQyIgb24gdGhlIGNvbnNvbGUpIHdoZW4geW91IGdpdmUgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICJjb250aW51ZSIgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlICcKKyAgICAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnICAgYWdhaW4gYnkgcHJlc3NpbmcgIkN0cmwtQyIuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlICpyZWFkcmMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHRydWUgYW5kIGNvbnRyb2xzIHdoZXRoZXIgJworICAgICAgICAgICAgICdQZGJcbicKKyAgICAgICAgICAgICAnICAgd2lsbCBsb2FkIC5wZGJyYyBmaWxlcyBmcm9tIHRoZSBmaWxlc3lzdGVtLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKClcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMTogVGhlICpza2lwKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhICcKKyAgICAgICAgICAgICAnU0lHSU5UXG4nCisgICAgICAgICAgICAgJyAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBUaGUgKnJlYWRyYyogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICcgICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4nCisgICAgICAgICAgICAgJyAgIHNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0RlYnVnZ2VyIENvbW1hbmRzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgY2FuIGJlIGFiYnJldmlhdGVkIHRvIG9uZSBvciB0d28gbGV0dGVycyBhcyBpbmRpY2F0ZWQ7ICcKKyAgICAgICAgICAgICAnZS5nLlxuJworICAgICAgICAgICAgICciaChlbHApIiBtZWFucyB0aGF0IGVpdGhlciAiaCIgb3IgImhlbHAiIGNhbiBiZSB1c2VkIHRvIGVudGVyICcKKyAgICAgICAgICAgICAndGhlIGhlbHBcbicKKyAgICAgICAgICAgICAnY29tbWFuZCAoYnV0IG5vdCAiaGUiIG9yICJoZWwiLCBub3IgIkgiIG9yICJIZWxwIiBvciAiSEVMUCIpLlxuJworICAgICAgICAgICAgICdBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSAoc3BhY2VzICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAndGFicykuICBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGVuY2xvc2VkIGluIHNxdWFyZSBicmFja2V0cyAnCisgICAgICAgICAgICAgJygiW10iKSBpblxuJworICAgICAgICAgICAgICd0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG4nCisgICAgICAgICAgICAgJ0FsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsICcKKyAgICAgICAgICAgICAnYmFyXG4nCisgICAgICAgICAgICAgJygifCIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgJworICAgICAgICAgICAgICdFeGNlcHRpb246IGlmXG4nCisgICAgICAgICAgICAgJ3RoZSBsYXN0IGNvbW1hbmQgd2FzIGEgImxpc3QiIGNvbW1hbmQsIHRoZSBuZXh0IDExIGxpbmVzIGFyZSAnCisgICAgICAgICAgICAgJ2xpc3RlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkNvbW1hbmRzIHRoYXQgdGhlIGRlYnVnZ2VyIGRvZXNuJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlICIKKyAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMgYW5kIGFyZSBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZ1xuJworICAgICAgICAgICAgICdkZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gJworICAgICAgICAgICAgICdleGNsYW1hdGlvblxuJworICAgICAgICAgICAgICdwb2ludCAoIiEiKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgICAgJ2RlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAicHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZGVidWdnZXIgc3VwcG9ydHMgYWxpYXNlcy4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgJ2FsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuJworICAgICAgICAgICAgICdleGFtaW5hdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieSAnCisgICAgICAgICAgICAgJyI7OyIuXG4nCisgICAgICAgICAgICAgJyhBIHNpbmdsZSAiOyIgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3IgbXVsdGlwbGUgJworICAgICAgICAgICAgICdjb21tYW5kc1xuJworICAgICAgICAgICAgICdpbiBhIGxpbmUgdGhhdCBpcyBwYXNzZWQgdG8gdGhlIFB5dGhvbiBwYXJzZXIuKSAgTm8gaW50ZWxsaWdlbmNlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0IGF0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyI7OyIgcGFpciwgZXZlbiBpZiBpdCBpcyBpbiB0aGUgbWlkZGxlIG9mIGEgcXVvdGVkIHN0cmluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmIGEgZmlsZSAiLnBkYnJjIiBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuICcKKyAgICAgICAgICAgICAndHlwZWRcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGRlYnVnZ2VyIHByb21wdC4gIFRoaXMgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgJworICAgICAgICAgICAgICdhbGlhc2VzLiAgSWZcbicKKyAgICAgICAgICAgICAnYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdhbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiLnBkYnJjIiBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuJworICAgICAgICAgICAgICdjb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgImNvbnRpbnVlIiBvciAibmV4dCIuICBQcmV2aW91c2x5LCAnCisgICAgICAgICAgICAgJ3RoZXNlXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGhhZCBubyBlZmZlY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdoKGVscCkgW2NvbW1hbmRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICAqY29tbWFuZCogYXMgYXJndW1lbnQsIHByaW50IGhlbHAgYWJvdXQgdGhhdCBjb21tYW5kLiAgImhlbHAgJworICAgICAgICAgICAgICdwZGIiXG4nCisgICAgICAgICAgICAgJyAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlICJwZGIiXG4nCisgICAgICAgICAgICAgJyAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllciwgJworICAgICAgICAgICAgICciaGVscFxuJworICAgICAgICAgICAgICcgICBleGVjIiBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlICIhIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndyhoZXJlKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlICcKKyAgICAgICAgICAgICAnYm90dG9tLiAgQW5cbicKKyAgICAgICAgICAgICAnICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSAnCisgICAgICAgICAgICAgJ2NvbnRleHQgb2ZcbicKKyAgICAgICAgICAgICAnICAgbW9zdCBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Qob3duKSBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1KHApIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgJworICAgICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICAgICcgICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZmlsZS5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGFibGVcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSAnCisgICAgICAgICAgICAgJ3ByZWZpeGVkXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gJworICAgICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgICAgIiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc24ndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgIgorICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBzZWFyY2hlZCBvbiAic3lzLnBhdGgiLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIGFcbicKKyAgICAgICAgICAgICAnICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmIGEgc2Vjb25kIGFyZ3VtZW50IGlzIHByZXNlbnQsIGl0IGlzIGFuIGV4cHJlc3Npb24gd2hpY2ggJworICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQsXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBicmVha3BvaW50IGhhcyBiZWVuIGhpdCwgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRlbXBvcmFyeSBicmVha3BvaW50LCB3aGljaCBpcyByZW1vdmVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpdCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yICJicmVhayIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbChlYXIpIFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyAnCisgICAgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgICAgJyAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgJworICAgICAgICAgICAgICdjbGVhclxuJworICAgICAgICAgICAgICcgICB0aG9zZSBicmVha3BvaW50cy4gV2l0aG91dCBhcmd1bWVudCwgY2xlYXIgYWxsIGJyZWFrcyAoYnV0ICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgYXNrIGNvbmZpcm1hdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERpc2FibGUgdGhlIGJyZWFrcG9pbnRzIGdpdmVuIGFzIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2ZcbicKKyAgICAgICAgICAgICAnICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgJworICAgICAgICAgICAgICdjYXVzZVxuJworICAgICAgICAgICAgICcgICB0aGUgcHJvZ3JhbSB0byBzdG9wIGV4ZWN1dGlvbiwgYnV0IHVubGlrZSBjbGVhcmluZyBhICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludCwgaXRcbicKKyAgICAgICAgICAgICAnICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2VuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbmFibGUgdGhlIGJyZWFrcG9pbnRzIHNwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lnbm9yZSBicG51bWJlciBbY291bnRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgJworICAgICAgICAgICAgICdjb3VudCBpc1xuJworICAgICAgICAgICAgICcgICBvbWl0dGVkLCB0aGUgaWdub3JlIGNvdW50IGlzIHNldCB0byAwLiAgQSBicmVha3BvaW50IGJlY29tZXMgJworICAgICAgICAgICAgICdhY3RpdmVcbicKKyAgICAgICAgICAgICAnICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbicKKyAgICAgICAgICAgICAnICAgZGVjcmVtZW50ZWQgZWFjaCB0aW1lIHRoZSBicmVha3BvaW50IGlzIHJlYWNoZWQgYW5kIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvICcKKyAgICAgICAgICAgICAndHJ1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCAnCisgICAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC4gIElmICcKKyAgICAgICAgICAgICAnKmNvbmRpdGlvbipcbicKKyAgICAgICAgICAgICAnICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnRcbicKKyAgICAgICAgICAgICAnICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgW2JwbnVtYmVyXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICcgICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhICcKKyAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICcgICBjb250YWluaW5nIGp1c3QgImVuZCIgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIChQZGIpIGNvbW1hbmRzIDFcbicKKyAgICAgICAgICAgICAnICAgICAgKGNvbSkgcCBzb21lX3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgJyAgICAgIChjb20pIGVuZFxuJworICAgICAgICAgICAgICcgICAgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgJworICAgICAgICAgICAgICdmb2xsb3dcbicKKyAgICAgICAgICAgICAnICAgaXQgaW1tZWRpYXRlbHkgd2l0aCAiZW5kIjsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludFxuJworICAgICAgICAgICAgICcgICBzZXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCAnCisgICAgICAgICAgICAgJ2FnYWluLlxuJworICAgICAgICAgICAgICcgICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgJworICAgICAgICAgICAgICdjb21tYW5kIHRoYXRcbicKKyAgICAgICAgICAgICAnICAgcmVzdW1lcyBleGVjdXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5ICcKKyAgICAgICAgICAgICAnY29udGludWUsXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgJworICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICcgICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAnICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgJworICAgICAgICAgICAgICdicmVha3BvaW50LS13aGljaFxuJworICAgICAgICAgICAgICcgICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzIGFib3V0ICcKKyAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAnICAgbGlzdCB0byBleGVjdXRlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgSWYgeW91IHVzZSB0aGUgJ3NpbGVudCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgIgorICAgICAgICAgICAgICd1c3VhbFxuJworICAgICAgICAgICAgICcgICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgJworICAgICAgICAgICAgICdtYXkgYmVcbicKKyAgICAgICAgICAgICAnICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljICcKKyAgICAgICAgICAgICAnbWVzc2FnZSBhbmRcbicKKyAgICAgICAgICAgICAnICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50IGFueXRoaW5nLCAnCisgICAgICAgICAgICAgJ3lvdVxuJworICAgICAgICAgICAgICcgICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncyh0ZXApXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlICcKKyAgICAgICAgICAgICAnb2NjYXNpb25cbicKKyAgICAgICAgICAgICAnICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudCBmdW5jdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICduKGV4dClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gIm5leHQiIGFuZCAnCisgICAgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICAgICcgICBpcyB0aGF0ICJzdGVwIiBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlICJuZXh0IlxuJworICAgICAgICAgICAgICcgICBleGVjdXRlcyBjYWxsZWQgZnVuY3Rpb25zIGF0IChuZWFybHkpIGZ1bGwgc3BlZWQsIG9ubHkgJworICAgICAgICAgICAgICdzdG9wcGluZyBhdFxuJworICAgICAgICAgICAgICcgICB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VudChpbCkgW2xpbmVub11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgYXJndW1lbnQsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbGluZSB3aXRoIGEgJworICAgICAgICAgICAgICdudW1iZXJcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICcgICBncmVhdGVyIG9yIGVxdWFsIHRvIHRoYXQgaXMgcmVhY2hlZC4gIEluIGJvdGggY2FzZXMsIGFsc28gJworICAgICAgICAgICAgICdzdG9wIHdoZW5cbicKKyAgICAgICAgICAgICAnICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lICcKKyAgICAgICAgICAgICAnbnVtYmVyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncihldHVybilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgY3VycmVudCBmdW5jdGlvbiByZXR1cm5zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYyhvbnQoaW51ZSkpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyAnCisgICAgICAgICAgICAgJ2VuY291bnRlcmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaih1bXApIGxpbmVub1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2V0IHRoZSBuZXh0IGxpbmUgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkLiAgT25seSBhdmFpbGFibGUgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlICcKKyAgICAgICAgICAgICAnYWdhaW4sXG4nCisgICAgICAgICAgICAgIiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uJ3Qgd2FudCB0byBydW4uXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgJyAgIGl0IGlzIG5vdCBwb3NzaWJsZSB0byBqdW1wIGludG8gdGhlIG1pZGRsZSBvZiBhICJmb3IiIGxvb3Agb3IgJworICAgICAgICAgICAgICdvdXRcbicKKyAgICAgICAgICAgICAnICAgb2YgYSAiZmluYWxseSIgY2xhdXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnbChpc3QpIFtmaXJzdFssIGxhc3RdXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCAnCisgICAgICAgICAgICAgJ2xpc3QgMTFcbicKKyAgICAgICAgICAgICAnICAgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUgb3IgY29udGludWUgdGhlIHByZXZpb3VzICcKKyAgICAgICAgICAgICAnbGlzdGluZy5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCAiLiIgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuICAnCisgICAgICAgICAgICAgJ1dpdGhcbicKKyAgICAgICAgICAgICAnICAgb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuJworICAgICAgICAgICAgICcgICBhcmd1bWVudHMsIGxpc3QgdGhlIGdpdmVuIHJhbmdlOyBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzICcKKyAgICAgICAgICAgICAnbGVzc1xuJworICAgICAgICAgICAgICcgICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5ICItPiIuICAnCisgICAgICAgICAgICAgJ0lmIGFuXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICAgICcgICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSAiPj4iLCBpZiBpdCAnCisgICAgICAgICAgICAgJ2RpZmZlcnNcbicKKyAgICAgICAgICAgICAnICAgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgIj4+IiBtYXJrZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdsbCB8IGxvbmdsaXN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4nCisgICAgICAgICAgICAgJyAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yICJsaXN0Ii5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2EocmdzKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAnICAgdmFsdWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlOiAicHJpbnQoKSIgY2FuIGFsc28gYmUgdXNlZCwgYnV0IGlzIG5vdCBhIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAnY29tbWFuZFxuJworICAgICAgICAgICAgICcgICAgIC0tLSB0aGlzIGV4ZWN1dGVzIHRoZSBQeXRob24gInByaW50KCkiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncHAgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlrZSB0aGUgInAiIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgJworICAgICAgICAgICAgICdwcmV0dHktXG4nCisgICAgICAgICAgICAgJyAgIHByaW50ZWQgdXNpbmcgdGhlICJwcHJpbnQiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3doYXRpcyBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc291cmNlIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRyeSB0byBnZXQgc291cmNlIGNvZGUgZm9yIHRoZSBnaXZlbiBvYmplY3QgYW5kIGRpc3BsYXkgaXQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdkaXNwbGF5IFtleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGlzcGxheSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaWYgaXQgY2hhbmdlZCwgZWFjaCB0aW1lXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgbGlzdCBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlICcKKyAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICcgICBmcmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuZGlzcGxheSBbZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuJworICAgICAgICAgICAgICcgICBXaXRob3V0IGV4cHJlc3Npb24sIGNsZWFyIGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIGZyYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaW50ZXJhY3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFN0YXJ0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgImNvZGUiIG1vZHVsZSkgJworICAgICAgICAgICAgICd3aG9zZVxuJworICAgICAgICAgICAgICcgICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzICcKKyAgICAgICAgICAgICAnZm91bmQgaW5cbicKKyAgICAgICAgICAgICAnICAgdGhlIGN1cnJlbnQgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhbGlhcyBbbmFtZSBbY29tbWFuZF1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSAnCisgICAgICAgICAgICAgJ2NvbW1hbmRcbicKKyAgICAgICAgICAgICAnICAgbXVzdCAqbm90KiBiZSBlbmNsb3NlZCBpbiBxdW90ZXMuICBSZXBsYWNlYWJsZSBwYXJhbWV0ZXJzIGNhbiAnCisgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgJyAgIGluZGljYXRlZCBieSAiJTEiLCAiJTIiLCBhbmQgc28gb24sIHdoaWxlICIlKiIgaXMgcmVwbGFjZWQgYnkgJworICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAnICAgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzICcKKyAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgJyAgICpuYW1lKiBpcyBzaG93bi4gSWYgbm8gYXJndW1lbnRzIGFyZSBnaXZlbiwgYWxsIGFsaWFzZXMgYXJlICcKKyAgICAgICAgICAgICAnbGlzdGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQWxpYXNlcyBtYXkgYmUgbmVzdGVkIGFuZCBjYW4gY29udGFpbiBhbnl0aGluZyB0aGF0IGNhbiBiZSAnCisgICAgICAgICAgICAgJ2xlZ2FsbHlcbicKKyAgICAgICAgICAgICAnICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICcKKyAgICAgICAgICAgICAnKmNhbiogYmVcbicKKyAgICAgICAgICAgICAnICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgYWxpYXMgaXMgcmVtb3ZlZC4gIEFsaWFzaW5nIGlzIHJlY3Vyc2l2ZWx5IGFwcGxpZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlICcKKyAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICcgICBhbG9uZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEFzIGFuIGV4YW1wbGUsIGhlcmUgYXJlIHR3byB1c2VmdWwgYWxpYXNlcyAoZXNwZWNpYWxseSB3aGVuICcKKyAgICAgICAgICAgICAncGxhY2VkXG4nCisgICAgICAgICAgICAgJyAgIGluIHRoZSAiLnBkYnJjIiBmaWxlKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbicKKyAgICAgICAgICAgICAnICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiAnCisgICAgICAgICAgICAgJ3ByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuJworICAgICAgICAgICAgICcgICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4nCisgICAgICAgICAgICAgJyAgICAgIGFsaWFzIHBzIHBpIHNlbGZcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuYWxpYXMgbmFtZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICchIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJyAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0ICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgImdsb2JhbCIgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICAgICAoUGRiKSBnbG9iYWwgbGlzdF9vcHRpb25zOyBsaXN0X29wdGlvbnMgPSBbJy1sJ11cbiIKKyAgICAgICAgICAgICAnICAgICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3J1biBbYXJncyAuLi5dXG4nCisgICAgICAgICAgICAgJ3Jlc3RhcnQgW2FyZ3MgLi4uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyAnCisgICAgICAgICAgICAgJ3N1cHBsaWVkLFxuJworICAgICAgICAgICAgICcgICBpdCBpcyBzcGxpdCB3aXRoICJzaGxleCIgYW5kIHRoZSByZXN1bHQgaXMgdXNlZCBhcyB0aGUgbmV3XG4nCisgICAgICAgICAgICAgJyAgICJzeXMuYXJndiIuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciAnCisgICAgICAgICAgICAgJ29wdGlvbnMgYXJlXG4nCisgICAgICAgICAgICAgJyAgIHByZXNlcnZlZC4gInJlc3RhcnQiIGlzIGFuIGFsaWFzIGZvciAicnVuIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3EodWl0KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzICcKKyAgICAgICAgICAgICAnYWJvcnRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzFdIFdoZXRoZXIgYSBmcmFtZSBpcyBjb25zaWRlcmVkIHRvIG9yaWdpbmF0ZSBpbiBhIGNlcnRhaW4gJworICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgIGlzIGRldGVybWluZWQgYnkgdGhlICJfX25hbWVfXyIgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAorICdkZWwnOiAnXG4nCisgICAgICAgICdUaGUgImRlbCIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgJworICAgICAgICAnaXNcbicKKyAgICAgICAgJ2RlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbicKKyAgICAgICAgJ2hpbnRzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxuJworICAgICAgICAndG8gcmlnaHQuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0RlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCAnCisgICAgICAgICdvclxuJworICAgICAgICAnZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbicKKyAgICAgICAgJ3N0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuJworICAgICAgICAnIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgJworICAgICAgICAncGFzc2VkXG4nCisgICAgICAgICd0byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG4nCisgICAgICAgICdlcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCAnCisgICAgICAgICdldmVuXG4nCisgICAgICAgICd0aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWVcbicKKyAgICAgICAgJ2Zyb20gdGhlIGxvY2FsIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkXG4nCisgICAgICAgICdibG9jay5cbicsCisgJ2RpY3QnOiAnXG4nCisgICAgICAgICAnRGljdGlvbmFyeSBkaXNwbGF5c1xuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBrZXkvZGF0dW0gcGFpcnNcbicKKyAgICAgICAgICdlbmNsb3NlZCBpbiBjdXJseSBicmFjZXM6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgZGljdF9kaXNwbGF5ICAgICAgIDo6PSAieyIgW2tleV9kYXR1bV9saXN0IHwgZGljdF9jb21wcmVoZW5zaW9uXSAnCisgICAgICAgICAnIn0iXG4nCisgICAgICAgICAnICAga2V5X2RhdHVtX2xpc3QgICAgIDo6PSBrZXlfZGF0dW0gKCIsIiBrZXlfZGF0dW0pKiBbIiwiXVxuJworICAgICAgICAgJyAgIGtleV9kYXR1bSAgICAgICAgICA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiB8ICIqKiIgb3JfZXhwclxuJworICAgICAgICAgJyAgIGRpY3RfY29tcHJlaGVuc2lvbiA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiBjb21wX2ZvclxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdGlvbmFyeSBkaXNwbGF5IHlpZWxkcyBhIG5ldyBkaWN0aW9uYXJ5IG9iamVjdC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdJZiBhIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZSBvZiBrZXkvZGF0dW0gcGFpcnMgaXMgZ2l2ZW4sIHRoZXkgYXJlXG4nCisgICAgICAgICAnZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB0byBkZWZpbmUgdGhlIGVudHJpZXMgb2YgdGhlICcKKyAgICAgICAgICdkaWN0aW9uYXJ5OlxuJworICAgICAgICAgJ2VhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG4nCisgICAgICAgICAnY29ycmVzcG9uZGluZyBkYXR1bS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIHNwZWNpZnkgdGhlIHNhbWUga2V5XG4nCisgICAgICAgICAibXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnkncyAiCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICdmb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkb3VibGUgYXN0ZXJpc2sgIioqIiBkZW5vdGVzICpkaWN0aW9uYXJ5IHVucGFja2luZyouIEl0cyBvcGVyYW5kXG4nCisgICAgICAgICAnbXVzdCBiZSBhICptYXBwaW5nKi4gIEVhY2ggbWFwcGluZyBpdGVtIGlzIGFkZGVkIHRvIHRoZSBuZXdcbicKKyAgICAgICAgICdkaWN0aW9uYXJ5LiAgTGF0ZXIgdmFsdWVzIHJlcGxhY2UgdmFsdWVzIGFscmVhZHkgc2V0IGJ5IGVhcmxpZXJcbicKKyAgICAgICAgICdrZXkvZGF0dW0gcGFpcnMgYW5kIGVhcmxpZXIgZGljdGlvbmFyeSB1bnBhY2tpbmdzLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNTogVW5wYWNraW5nIGludG8gZGljdGlvbmFyeSBkaXNwbGF5cywgb3JpZ2luYWxseVxuJworICAgICAgICAgJ3Byb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG4nCisgICAgICAgICAnbmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4nCisgICAgICAgICAnImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSAnCisgICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICAna2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSAnCisgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICd0aGV5IGFyZSBwcm9kdWNlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdSZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuJworICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5LiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG4nCisgICAgICAgICAnc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuJworICAgICAgICAgJ2JldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxuJworICAgICAgICAgJ3JpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCisgJ2R5bmFtaWMtZmVhdHVyZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgJworICAgICAgICAgICAgICAgICAgICAgJ2F0IGNvbXBpbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBmKClcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2lsbGVnYWwgd2hlbiB1c2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlICcKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2lsbGVnYWwgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgJworICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICd0byB0aGUgZnVsbFxuJworICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZSBsb2NhbFxuJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3QgcmVzb2x2ZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCAnCisgICAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlLiAgWzFdXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicsCisgJ2Vsc2UnOiAnXG4nCisgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICAgJ29uZVxuJworICAgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gQm9vbGVhbiAnCisgICAgICAgICAnb3BlcmF0aW9uc1xuJworICAgICAgICAgJ2ZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuJworICAgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbicKKyAgICAgICAgICdJZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG4nCisgICAgICAgICAncHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAorICdleGNlcHRpb25zJzogJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mICcKKyAgICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgICAnb2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsXG4nCisgICAgICAgICAgICAgICAnY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlICcKKyAgICAgICAgICAgICAgICdlcnJvciBpc1xuJworICAgICAgICAgICAgICAgJ2RldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yICcKKyAgICAgICAgICAgICAgICdieSBhbnlcbicKKyAgICAgICAgICAgICAgICdjb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrICcKKyAgICAgICAgICAgICAgICd3aGVyZVxuJworICAgICAgICAgICAgICAgJ3RoZSBlcnJvciBvY2N1cnJlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdUaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgJworICAgICAgICAgICAgICAgJ3J1bi10aW1lXG4nCisgICAgICAgICAgICAgICAnZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG4nCisgICAgICAgICAgICAgICAnZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuICcKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25cbicKKyAgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICAnCisgICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgJworICAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgICdjb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAgJ3doZXRoZXIgYW5cbicKKyAgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdQeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAgJ2hhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCAnCisgICAgICAgICAgICAgICAnYW4gb3V0ZXJcbicKKyAgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJ2ZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSAnCisgICAgICAgICAgICAgICAnb2YgY29kZVxuJworICAgICAgICAgICAgICAgJ2Zyb20gdGhlIHRvcCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gJworICAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAgJ2VpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzXG4nCisgICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiICcKKyAgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgICdzZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCAnCisgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRoZVxuJworICAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICAncmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgICdleGNlcHRpb25hbCBjb25kaXRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gICcKKyAgICAgICAgICAgICAgICdUaGVpclxuJworICAgICAgICAgICAgICAgJyAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgJyAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biAnCisgICAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAgICcgIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgICAndHJ5XG4nCisgICAgICAgICAgICAgICAnc3RhdGVtZW50IGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSByYWlzZSAnCisgICAgICAgICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1sxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgICcgICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgJworICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhlY21vZGVsJzogJ1xuJworICAgICAgICAgICAgICAnRXhlY3V0aW9uIG1vZGVsXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdTdHJ1Y3R1cmUgb2YgYSBwcm9ncmFtXG4nCisgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgUHl0aG9uIHByb2dyYW0gaXMgY29uc3RydWN0ZWQgZnJvbSBjb2RlIGJsb2Nrcy4gQSAqYmxvY2sqIGlzICcKKyAgICAgICAgICAgICAgJ2EgcGllY2VcbicKKyAgICAgICAgICAgICAgJ29mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhIHVuaXQuIFRoZSAnCisgICAgICAgICAgICAgICdmb2xsb3dpbmcgYXJlXG4nCisgICAgICAgICAgICAgICdibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzIGRlZmluaXRpb24uICcKKyAgICAgICAgICAgICAgJ0VhY2hcbicKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHQgZmlsZSAoYSBmaWxlICcKKyAgICAgICAgICAgICAgJ2dpdmVuXG4nCisgICAgICAgICAgICAgICdhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkIGFzIGEgY29tbWFuZCAnCisgICAgICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgICAgICdhcmd1bWVudCB0byB0aGUgaW50ZXJwcmV0ZXIpIGlzIGEgY29kZSBibG9jay4gIEEgc2NyaXB0IGNvbW1hbmQgJworICAgICAgICAgICAgICAnKGFcbicKKyAgICAgICAgICAgICAgJ2NvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgd2l0aCB0aGUgJworICAgICAgICAgICAgICAiJyoqLWMqKidcbiIKKyAgICAgICAgICAgICAgJ29wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyBhcmd1bWVudCBwYXNzZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICdmdW5jdGlvbnMgImV2YWwoKSIgYW5kICJleGVjKCkiIGlzIGEgY29kZSBibG9jay5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSAnCisgICAgICAgICAgICAgICdjb250YWluc1xuJworICAgICAgICAgICAgICAnc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgJworICAgICAgICAgICAgICAnZGV0ZXJtaW5lc1xuJworICAgICAgICAgICAgICAid2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrJ3MgIgorICAgICAgICAgICAgICAnZXhlY3V0aW9uIGhhc1xuJworICAgICAgICAgICAgICAnY29tcGxldGVkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ05hbWluZyBhbmQgYmluZGluZ1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQmluZGluZyBvZiBuYW1lc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byAnCisgICAgICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgJworICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICdpZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsICcKKyAgICAgICAgICAgICAgJ29yIGFmdGVyXG4nCisgICAgICAgICAgICAgICciYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICdpbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgJworICAgICAgICAgICAgICAnVGhpcyBmb3JtXG4nCisgICAgICAgICAgICAgICdtYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgJworICAgICAgICAgICAgICAnYm91bmQgZm9yXG4nCisgICAgICAgICAgICAgICd0aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSAnCisgICAgICAgICAgICAgICduYW1lKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrICcKKyAgICAgICAgICAgICAgJ2RlZmluZWQgYnkgYVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgJworICAgICAgICAgICAgICAndG9wLWxldmVsXG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCAnCisgICAgICAgICAgICAgICdibG9jayxcbicKKyAgICAgICAgICAgICAgJ3VubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kICcKKyAgICAgICAgICAgICAgJ2F0IHRoZVxuJworICAgICAgICAgICAgICAnbW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgJworICAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICAnYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgJworICAgICAgICAgICAgICAnKmJpbmRpbmcqXG4nCisgICAgICAgICAgICAgICdvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gJworICAgICAgICAgICAgICAncnVsZXMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUmVzb2x1dGlvbiBvZiBuYW1lc1xuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiAnCisgICAgICAgICAgICAgICdhIGxvY2FsXG4nCisgICAgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgJworICAgICAgICAgICAgICAnSWYgdGhlXG4nCisgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgJworICAgICAgICAgICAgICAnYmxvY2tzXG4nCisgICAgICAgICAgICAgICdjb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayAnCisgICAgICAgICAgICAgICdpbnRyb2R1Y2VzXG4nCisgICAgICAgICAgICAgICdhIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSAnCisgICAgICAgICAgICAgICduZWFyZXN0XG4nCisgICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAgICAiaXMgY2FsbGVkIHRoZSBibG9jaydzICplbnZpcm9ubWVudCouXG4iCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAgJ3JhaXNlZC4gSWZcbicKKyAgICAgICAgICAgICAgJ3RoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSAnCisgICAgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAgICAndmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50ICcKKyAgICAgICAgICAgICAgJ3doZXJlIHRoZVxuJworICAgICAgICAgICAgICAnbmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgICciVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9jaywgYWxsXG4nCisgICAgICAgICAgICAgICd1c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2N1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkICcKKyAgICAgICAgICAgICAgJ3dpdGhpbiBhXG4nCisgICAgICAgICAgICAgICdibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG4nCisgICAgICAgICAgICAgICdkZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciAnCisgICAgICAgICAgICAgICdhbnl3aGVyZVxuJworICAgICAgICAgICAgICAnd2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiAnCisgICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiAnCisgICAgICAgICAgICAgICd0aGUgbmFtZVxuJworICAgICAgICAgICAgICAnc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAndG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZSBieVxuJworICAgICAgICAgICAgICAnc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSAnCisgICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAgJ29mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkICcKKyAgICAgICAgICAgICAgJ2ZpcnN0LiAgSWZcbicKKyAgICAgICAgICAgICAgJ3RoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyAnCisgICAgICAgICAgICAgICdzZWFyY2hlZC4gIFRoZVxuJworICAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgJworICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICdpbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlICcKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICAgICdjb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSAnCisgICAgICAgICAgICAgICdnbG9iYWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciAnCisgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAgJ3Njb3BlLlxuJworICAgICAgICAgICAgICAnIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lIGRvZXMgJworICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICdleGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAgJ3RpbWUgYVxuJworICAgICAgICAgICAgICAnbW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgJworICAgICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICAgICciX19tYWluX18iLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAiZXZhbCgpIiAnCisgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgJ3NwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gJworICAgICAgICAgICAgICAnaXMgYW5cbicKKyAgICAgICAgICAgICAgJ2V4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSAnCisgICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICdmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgJ3VuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICcKKyAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAnbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9mXG4nCisgICAgICAgICAgICAgICd0aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgJworICAgICAgICAgICAgICAnbGltaXRlZCB0b1xuJworICAgICAgICAgICAgICAndGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mICcKKyAgICAgICAgICAgICAgJ21ldGhvZHMgLS1cbicKKyAgICAgICAgICAgICAgJ3RoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSAnCisgICAgICAgICAgICAgICd0aGV5IGFyZVxuJworICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgICd3aWxsIGZhaWw6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGNsYXNzIEE6XG4nCisgICAgICAgICAgICAgICcgICAgICAgYSA9IDQyXG4nCisgICAgICAgICAgICAgICcgICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0J1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuJworICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlICcKKyAgICAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICAgICdpcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyAnCisgICAgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgJworICAgICAgICAgICAgICAnbGF0dGVyIGNhc2VcbicKKyAgICAgICAgICAgICAgInRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIgorICAgICAgICAgICAgICAnIl9fbWFpbl9fIlxuJworICAgICAgICAgICAgICAnbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gJworICAgICAgICAgICAgICAnaW4gYW55XG4nCisgICAgICAgICAgICAgICdvdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJyJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSAnCisgICAgICAgICAgICAgICd1c2VyLWNyZWF0ZWRcbicKKyAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbicKKyAgICAgICAgICAgICAgJyJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAnCisgICAgICAgICAgICAgICdVc2Vyc1xuJworICAgICAgICAgICAgICAnd2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgJworICAgICAgICAgICAgICAnImltcG9ydCJcbicKKyAgICAgICAgICAgICAgJ3RoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgJworICAgICAgICAgICAgICAnY29tcGlsZVxuJworICAgICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBpID0gMTBcbicKKyAgICAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgICAgJyAgIGkgPSA0MlxuJworICAgICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsICcKKyAgICAgICAgICAgICAgJ3doZW4gdXNlZFxuJworICAgICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgJworICAgICAgICAgICAgICAnaWxsZWdhbCB0b1xuJworICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAgICAnZnVsbFxuJworICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgJworICAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICdyZXNvbHZlZFxuJworICAgICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlLiAgWzFdXG4nCisgICAgICAgICAgICAgICdUaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlICcKKyAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9uc1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgJworICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAnb2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbicKKyAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICdlcnJvciBpc1xuJworICAgICAgICAgICAgICAnZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgJworICAgICAgICAgICAgICAnYnkgYW55XG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrICcKKyAgICAgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSAnCisgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAnZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG4nCisgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gJworICAgICAgICAgICAgICAnRXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICAnCisgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgJ2NvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICd3aGV0aGVyIGFuXG4nCisgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAnaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuICcKKyAgICAgICAgICAgICAgJ291dGVyXG4nCisgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdmYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgJworICAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICAnZnJvbSB0aGUgdG9wKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluICcKKyAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAnZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpc1xuJworICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgJ3NlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0ICcKKyAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgJ3JlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTm90ZTogRXhjZXB0aW9uIG1lc3NhZ2VzIGFyZSBub3QgcGFydCBvZiB0aGUgUHl0aG9uIEFQSS4gICcKKyAgICAgICAgICAgICAgJ1RoZWlyXG4nCisgICAgICAgICAgICAgICcgIGNvbnRlbnRzIG1heSBjaGFuZ2UgZnJvbSBvbmUgdmVyc2lvbiBvZiBQeXRob24gdG8gdGhlIG5leHQgJworICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAnICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuICcKKyAgICAgICAgICAgICAgJ3VuZGVyXG4nCisgICAgICAgICAgICAgICcgIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAidHJ5IiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICAndHJ5XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQgYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlIHJhaXNlICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1sxXSBUaGlzIGxpbWl0YXRpb24gb2NjdXJzIGJlY2F1c2UgdGhlIGNvZGUgdGhhdCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICAnICAgIHRoZXNlIG9wZXJhdGlvbnMgaXMgbm90IGF2YWlsYWJsZSBhdCB0aGUgdGltZSB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICcgICAgY29tcGlsZWQuXG4nLAorICdleHBybGlzdHMnOiAnXG4nCisgICAgICAgICAgICAgICdFeHByZXNzaW9uIGxpc3RzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGV4cHJlc3Npb25fbGlzdCAgICA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG4nCisgICAgICAgICAgICAgICcgICBzdGFycmVkX2xpc3QgICAgICAgOjo9IHN0YXJyZWRfaXRlbSAoICIsIiBzdGFycmVkX2l0ZW0gKSogJworICAgICAgICAgICAgICAnWyIsIl1cbicKKyAgICAgICAgICAgICAgJyAgIHN0YXJyZWRfZXhwcmVzc2lvbiA6Oj0gZXhwcmVzc2lvbiB8ICggc3RhcnJlZF9pdGVtICIsIiApKiAnCisgICAgICAgICAgICAgICdbc3RhcnJlZF9pdGVtXVxuJworICAgICAgICAgICAgICAnICAgc3RhcnJlZF9pdGVtICAgICAgIDo6PSBleHByZXNzaW9uIHwgIioiIG9yX2V4cHJcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0IHdoZW4gcGFydCBvZiBhIGxpc3Qgb3Igc2V0IGRpc3BsYXksIGFuIGV4cHJlc3Npb24gbGlzdFxuJworICAgICAgICAgICAgICAnY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGUgbGVuZ3RoIG9mICcKKyAgICAgICAgICAgICAgJ3RoZSB0dXBsZVxuJworICAgICAgICAgICAgICAnaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZSBleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGFzdGVyaXNrICIqIiBkZW5vdGVzICppdGVyYWJsZSB1bnBhY2tpbmcqLiAgSXRzIG9wZXJhbmQgbXVzdCAnCisgICAgICAgICAgICAgICdiZSBhblxuJworICAgICAgICAgICAgICAnKml0ZXJhYmxlKi4gIFRoZSBpdGVyYWJsZSBpcyBleHBhbmRlZCBpbnRvIGEgc2VxdWVuY2Ugb2YgaXRlbXMsICcKKyAgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgICdhcmUgaW5jbHVkZWQgaW4gdGhlIG5ldyB0dXBsZSwgbGlzdCwgb3Igc2V0LCBhdCB0aGUgc2l0ZSBvZiAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ3VucGFja2luZy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy41OiBJdGVyYWJsZSB1bnBhY2tpbmcgaW4gZXhwcmVzc2lvbiBsaXN0cywgJworICAgICAgICAgICAgICAnb3JpZ2luYWxseVxuJworICAgICAgICAgICAgICAncHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAnCisgICAgICAgICAgICAgICcoYS5rLmEuIGFcbicKKyAgICAgICAgICAgICAgJypzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAid2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgIgorICAgICAgICAgICAgICAneWllbGRzIHRoZVxuJworICAgICAgICAgICAgICAndmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gJworICAgICAgICAgICAgICAnZW1wdHkgcGFpclxuJworICAgICAgICAgICAgICAnb2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKKyAnZmxvYXRpbmcnOiAnXG4nCisgICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuJworICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4nCisgICAgICAgICAgICAgJyAgIHBvaW50ZmxvYXQgICAgOjo9IFtkaWdpdHBhcnRdIGZyYWN0aW9uIHwgZGlnaXRwYXJ0ICIuIlxuJworICAgICAgICAgICAgICcgICBleHBvbmVudGZsb2F0IDo6PSAoZGlnaXRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbicKKyAgICAgICAgICAgICAnICAgZGlnaXRwYXJ0ICAgICA6Oj0gZGlnaXQgKFsiXyJdIGRpZ2l0KSpcbicKKyAgICAgICAgICAgICAnICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0cGFydFxuJworICAgICAgICAgICAgICcgICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdHBhcnRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCAnCisgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgJ3JhZGl4IDEwLiBGb3IgZXhhbXBsZSwgIjA3N2UwMTAiIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICdhcyAiNzdlMTAiLiBUaGUgYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpc1xuJworICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBBcyBpbiBpbnRlZ2VyIGxpdGVyYWxzLCB1bmRlcnNjb3JlcyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdzdXBwb3J0ZWQgZm9yIGRpZ2l0IGdyb3VwaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwICAgICcKKyAgICAgICAgICAgICAnMy4xNF8xNV85M1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICcKKyAgICAgICAgICAgICAnIi0xIlxuJworICAgICAgICAgICAgICdpcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAiLSIgYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2xpdGVyYWwgIjEiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogVW5kZXJzY29yZXMgYXJlIG5vdyBhbGxvd2VkIGZvciAnCisgICAgICAgICAgICAgJ2dyb3VwaW5nXG4nCisgICAgICAgICAgICAgJ3B1cnBvc2VzIGluIGxpdGVyYWxzLlxuJywKKyAnZm9yJzogJ1xuJworICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhICcKKyAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICcoc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxuJworICAgICAgICAnb2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbicKKyAgICAgICAgJyJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCBpdGVtXG4nCisgICAgICAgICdwcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciByZXR1cm5lZCBieSB0aGUgaXRlcmF0b3IuICAnCisgICAgICAgICdFYWNoXG4nCisgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuJworICAgICAgICAnZm9yIGFzc2lnbm1lbnRzIChzZWUgQXNzaWdubWVudCBzdGF0ZW1lbnRzKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG4nCisgICAgICAgICdleGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gJworICAgICAgICAndGhlXG4nCisgICAgICAgICdzZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgJworICAgICAgICAnZXhjZXB0aW9uKSxcbicKKyAgICAgICAgJ3RoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgJworICAgICAgICAnbG9vcFxuJworICAgICAgICAndGVybWluYXRlcy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxuJworICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCAnCisgICAgICAgICdjb250aW51ZXNcbicKKyAgICAgICAgJ3dpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyBuZXh0XG4nCisgICAgICAgICdpdGVtLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZm9yLWxvb3AgbWFrZXMgYXNzaWdubWVudHMgdG8gdGhlIHZhcmlhYmxlcyhzKSBpbiB0aGUgdGFyZ2V0ICcKKyAgICAgICAgJ2xpc3QuXG4nCisgICAgICAgICdUaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyAnCisgICAgICAgICdpbmNsdWRpbmdcbicKKyAgICAgICAgJ3Rob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yIGkgaW4gcmFuZ2UoMTApOlxuJworICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICcgICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlICcKKyAgICAgICAgJ25leHRcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuJworICAgICAgICAnXG4nCisgICAgICAgICdOYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG4nCisgICAgICAgICdidXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdFxuJworICAgICAgICAnYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zIGFuXG4nCisgICAgICAgICdpdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzICJmb3IgJworICAgICAgICAnaVxuJworICAgICAgICAnOj0gYSB0byBiIGRvIjsgZS5nLiwgImxpc3QocmFuZ2UoMykpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgMl0iLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdOb3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZVxuJworICAgICAgICAnICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuJworICAgICAgICAnICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbicKKyAgICAgICAgJyAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbicKKyAgICAgICAgJyAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyAnCisgICAgICAgICdtZWFuc1xuJworICAgICAgICAnICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gJworICAgICAgICAndGhlXG4nCisgICAgICAgICcgIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggJworICAgICAgICAnb2ZcbicKKyAgICAgICAgJyAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmICcKKyAgICAgICAgJ3RoZVxuJworICAgICAgICAnICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbicKKyAgICAgICAgJyAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4nCisgICAgICAgICcgIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4nCisgICAgICAgICcgIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICAgIGZvciB4IGluIGFbOl06XG4nCisgICAgICAgICcgICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IFN0cmluZyBTeW50YXhcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QgYW5kIHRoZSAiRm9ybWF0dGVyIiBjbGFzcyBzaGFyZSAnCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICdzeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiAnCisgICAgICAgICAgICAgICAgICAnIkZvcm1hdHRlciIsXG4nCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuICBUaGUgJworICAgICAgICAgICAgICAgICAgJ3N5bnRheCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG8gdGhhdCBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzLCBidXQgdGhlcmUgJworICAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVuY2VzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSAnCisgICAgICAgICAgICAgICAgICAnY3VybHkgYnJhY2VzXG4nCisgICAgICAgICAgICAgICAgICAnInt9Ii4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyAnCisgICAgICAgICAgICAgICAgICAnY29uc2lkZXJlZCBsaXRlcmFsXG4nCisgICAgICAgICAgICAgICAgICAndGV4dCwgd2hpY2ggaXMgY29waWVkIHVuY2hhbmdlZCB0byB0aGUgb3V0cHV0LiAgSWYgeW91IG5lZWQgJworICAgICAgICAgICAgICAgICAgJ3RvIGluY2x1ZGVcbicKKyAgICAgICAgICAgICAgICAgICdhIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSAnCisgICAgICAgICAgICAgICAgICAnZG91Ymxpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnInt7IiBhbmQgIn19Ii5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgJworICAgICAgICAgICAgICAgICAgJyJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgJworICAgICAgICAgICAgICAgICAgJyJdIj4gK1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICAgICAnc2VjdGlvbj5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAgICAnKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlZFxuJworICAgICAgICAgICAgICAgICAgJ2FuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICcqZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkLCB3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50ICJcJyFcJyIsIGFuZCBhICcKKyAgICAgICAgICAgICAgICAgICcqZm9ybWF0X3NwZWMqLCB3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVkIGJ5IGEgY29sb24gIlwnOlwnIi4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSBzZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyAnCisgICAgICAgICAgICAgICAgICAnZWl0aGVyIGFcbicKKyAgICAgICAgICAgICAgICAgICJudW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXQncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgIgorICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgICJhcmd1bWVudCwgYW5kIGlmIGl0J3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCAiCisgICAgICAgICAgICAgICAgICAna2V5d29yZFxuJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICdhcmUgMCwgMSwgMixcbicKKyAgICAgICAgICAgICAgICAgICcuLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSAnCisgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgICdCZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICdwb3NzaWJsZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgJworICAgICAgICAgICAgICAgICAgJyJcJzEwXCciIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIlwnOi1dXCciKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgJworICAgICAgICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5IGFueVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciBvZiBpbmRleCBvciBhdHRyaWJ1dGUgZXhwcmVzc2lvbnMuIEFuIGV4cHJlc3Npb24gb2YgJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtXG4nCisgICAgICAgICAgICAgICAgICAnIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCAnCisgICAgICAgICAgICAgICAgICAnd2hpbGUgYW5cbicKKyAgICAgICAgICAgICAgICAgICdleHByZXNzaW9uIG9mIHRoZSBmb3JtICJcJ1tpbmRleF1cJyIgZG9lcyBhbiBpbmRleCBsb29rdXAgJworICAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgJworICAgICAgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQsIHNvICJcJ3t9IHt9XCciIGlzIGVxdWl2YWxlbnQgdG8gIlwnezB9IHsxfVwnIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICAjIFJlZmVyZW5jZXMgZmlyc3QgJworICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgICMgU2FtZSBhcyAiRnJvbSB7MH0gdG8gJworICAgICAgICAgICAgICAgICAgJ3sxfSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgJworICAgICAgICAgICAgICAgICAgImFyZ3VtZW50ICduYW1lJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICdvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICAjIEZpcnN0IGVsZW1lbnQgb2YgJworICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJ3BsYXllcnMnLlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICciX19mb3JtYXRfXygpIlxuJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlcyBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAnZGVzaXJhYmxlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgJworICAgICAgICAgICAgICAgICAgJ293blxuJworICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3N0cmluZyBiZWZvcmVcbicKKyAgICAgICAgICAgICAgICAgICdjYWxsaW5nICJfX2Zvcm1hdF9fKCkiLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmcgbG9naWMgaXMgJworICAgICAgICAgICAgICAgICAgJ2J5cGFzc2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6ICJcJyFzXCciICcKKyAgICAgICAgICAgICAgICAgICd3aGljaCBjYWxsc1xuJworICAgICAgICAgICAgICAgICAgJyJzdHIoKSIgb24gdGhlIHZhbHVlLCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJcJyFhXCciIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAnY2FsbHMgImFzY2lpKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIkhhcm9sZFwncyBhIGNsZXZlciB7MCFzfSIgICAgICAgICMgQ2FsbHMgc3RyKCkgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJyAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBwcmVzZW50ZWQsIGluY2x1ZGluZyBzdWNoIGRldGFpbHMgYXMgZmllbGQgd2lkdGgsICcKKyAgICAgICAgICAgICAgICAgICdhbGlnbm1lbnQsXG4nCisgICAgICAgICAgICAgICAgICAncGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lIGl0c1xuJworICAgICAgICAgICAgICAgICAgJ293biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJypmb3JtYXRfc3BlYyouXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgJworICAgICAgICAgICAgICAgICAgJ21pbmktbGFuZ3VhZ2UsIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAnaXMgZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgbWF5IGNvbnRhaW4gYSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgbmFtZSxcbicKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uIGZsYWcgYW5kIGZvcm1hdCBzcGVjaWZpY2F0aW9uLCBidXQgZGVlcGVyICcKKyAgICAgICAgICAgICAgICAgICduZXN0aW5nIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgJ2FsbG93ZWQuICBUaGUgcmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgJworICAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAgJ3N1YnN0aXR1dGVkIGJlZm9yZSB0aGUgKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuICcKKyAgICAgICAgICAgICAgICAgICdUaGlzXG4nCisgICAgICAgICAgICAgICAgICAnYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGEgdmFsdWUgdG8gYmUgZHluYW1pY2FsbHkgJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTZWUgdGhlIEZvcm1hdCBleGFtcGxlcyBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2VcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyAnCisgICAgICAgICAgICAgICAgICAnY29udGFpbmVkXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkXG4nCisgICAgICAgICAgICAgICAgICAnKHNlZSBGb3JtYXQgU3RyaW5nIFN5bnRheCBhbmQgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscykuICcKKyAgICAgICAgICAgICAgICAgICdUaGV5IGNhblxuJworICAgICAgICAgICAgICAgICAgJ2Fsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBidWlsdC1pbiAiZm9ybWF0KCkiICcKKyAgICAgICAgICAgICAgICAgICdmdW5jdGlvbi4gIEVhY2hcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93IHRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyAnCisgICAgICAgICAgICAgICAgICAndG8gYmVcbicKKyAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdNb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXRcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSAnCisgICAgICAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKCIiIiIpICcKKyAgICAgICAgICAgICAgICAgICdwcm9kdWNlc1xuJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCAic3RyKCkiIG9uIHRoZSB2YWx1ZS4gJworICAgICAgICAgICAgICAgICAgJ0Egbm9uLWVtcHR5XG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdF9zcGVjICAgICA6Oj0gJworICAgICAgICAgICAgICAgICAgJ1tbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdW2dyb3VwaW5nX29wdGlvbl1bLnByZWNpc2lvbl1bdHlwZV1cbicKKyAgICAgICAgICAgICAgICAgICcgICBmaWxsICAgICAgICAgICAgOjo9IDxhbnkgY2hhcmFjdGVyPlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFsaWduICAgICAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2lnbiAgICAgICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWR0aCAgICAgICAgICAgOjo9IGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBncm91cGluZ19vcHRpb24gOjo9ICJfIiB8ICIsIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHByZWNpc2lvbiAgICAgICA6Oj0gaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHR5cGUgICAgICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgJworICAgICAgICAgICAgICAgICAgJyJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgYSAqZmlsbCpcbicKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgdGhhdCBjYW4gYmUgYW55IGNoYXJhY3RlciBhbmQgZGVmYXVsdHMgdG8gYSBzcGFjZSAnCisgICAgICAgICAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAnCisgICAgICAgICAgICAgICAgICAnKCIieyIiIG9yXG4nCisgICAgICAgICAgICAgICAgICAnIiJ9IiIpIGFzIHRoZSAqZmlsbCogY2hhcmFjdGVyIGluIGEgZm9ybWF0dGVkIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnbGl0ZXJhbCBvciB3aGVuXG4nCisgICAgICAgICAgICAgICAgICAndXNpbmcgdGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZC4gIEhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlICcKKyAgICAgICAgICAgICAgICAgICd0byBpbnNlcnQgYVxuJworICAgICAgICAgICAgICAgICAgJ2N1cmx5IGJyYWNlIHdpdGggYSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICJsaW1pdGF0aW9uIGRvZXNuJ3RcbiIKKyAgICAgICAgICAgICAgICAgICdhZmZlY3QgdGhlICJmb3JtYXQoKSIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgJworICAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPFwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cykuICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciAnCisgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gKGlmIGFueSkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcgZmllbGRzICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gJyswMDAwMDAxMjAnLiBUaGlzIGFsaWdubWVudCAiCisgICAgICAgICAgICAgICAgICAnb3B0aW9uIGlzIG9ubHkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICBJdCBiZWNvbWVzIHRoZSAnCisgICAgICAgICAgICAgICAgICAiZGVmYXVsdCB3aGVuICcwJyAgfFxuIgorICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiAnCisgICAgICAgICAgICAgICAgICAndGhlIGF2YWlsYWJsZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgd2lkdGhcbicKKyAgICAgICAgICAgICAgICAgICd3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2FsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgb25lIG9mXG4nCisgICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE9wdGlvbiAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ2JvdGggcG9zaXRpdmUgYXMgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkICcKKyAgICAgICAgICAgICAgICAgICdvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAndXNlZCBvbiBwb3NpdGl2ZSAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycy4gICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCcjXCciIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICAnZm9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24uICBUaGUgYWx0ZXJuYXRlIGZvcm0gaXMgZGVmaW5lZCBkaWZmZXJlbnRseSBmb3IgJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudFxuJworICAgICAgICAgICAgICAgICAgJ3R5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsICcKKyAgICAgICAgICAgICAgICAgICdjb21wbGV4IGFuZFxuJworICAgICAgICAgICAgICAgICAgJ0RlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciAnCisgICAgICAgICAgICAgICAgICAnaGV4YWRlY2ltYWwgb3V0cHV0XG4nCisgICAgICAgICAgICAgICAgICAnaXMgdXNlZCwgdGhpcyBvcHRpb24gYWRkcyB0aGUgcHJlZml4IHJlc3BlY3RpdmUgIlwnMGJcJyIsICcKKyAgICAgICAgICAgICAgICAgICciXCcwb1wnIiwgb3JcbicKKyAgICAgICAgICAgICAgICAgICciXCcweFwnIiB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCAnCisgICAgICAgICAgICAgICAgICAnRGVjaW1hbCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byAnCisgICAgICAgICAgICAgICAgICAnYWx3YXlzIGNvbnRhaW4gYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyLCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuICcKKyAgICAgICAgICAgICAgICAgICdOb3JtYWxseSwgYVxuJworICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSAnCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAgICdvbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciAiXCdnXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIlwnR1wnIlxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgJ3Jlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnLFwnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgJworICAgICAgICAgICAgICAgICAgJ3Rob3VzYW5kcyBzZXBhcmF0b3IuXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSAiXCduXCciIGludGVnZXIgJworICAgICAgICAgICAgICAgICAgJ3ByZXNlbnRhdGlvbiB0eXBlXG4nCisgICAgICAgICAgICAgICAgICAnaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgIlwnLFwnIiBvcHRpb24gKHNlZSBhbHNvICcKKyAgICAgICAgICAgICAgICAgICcqKlBFUCAzNzgqKikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJ19cJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhbiB1bmRlcnNjb3JlIGZvciBhICcKKyAgICAgICAgICAgICAgICAgICd0aG91c2FuZHNcbicKKyAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAncHJlc2VudGF0aW9uIHR5cGUgIlwnZFwnIi4gIEZvciBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyAnCisgICAgICAgICAgICAgICAgICAnIlwnYlwnIiwgIlwnb1wnIixcbicKKyAgICAgICAgICAgICAgICAgICciXCd4XCciLCBhbmQgIlwnWFwnIiwgdW5kZXJzY29yZXMgd2lsbCBiZSBpbnNlcnRlZCBldmVyeSA0ICcKKyAgICAgICAgICAgICAgICAgICdkaWdpdHMuICBGb3JcbicKKyAgICAgICAgICAgICAgICAgICdvdGhlciBwcmVzZW50YXRpb24gdHlwZXMsIHNwZWNpZnlpbmcgdGhpcyBvcHRpb24gaXMgYW4gJworICAgICAgICAgICAgICAgICAgJ2Vycm9yLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IEFkZGVkIHRoZSAiXCdfXCciIG9wdGlvbiAoc2VlIGFsc28gJworICAgICAgICAgICAgICAgICAgJyoqUEVQIDUxNSoqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcqd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gIElmIG5vdFxuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnY29udGVudC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdXaGVuIG5vIGV4cGxpY2l0IGFsaWdubWVudCBpcyBnaXZlbiwgcHJlY2VkaW5nIHRoZSAqd2lkdGgqICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCBieSBhXG4nCisgICAgICAgICAgICAgICAgICAnemVybyAoIlwnMFwnIikgY2hhcmFjdGVyIGVuYWJsZXMgc2lnbi1hd2FyZSB6ZXJvLXBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgJ2ZvciBudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAndHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgJworICAgICAgICAgICAgICAgICAgJ3dpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICcqYWxpZ25tZW50KiB0eXBlIG9mICJcJz1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgJ2JlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQgd2l0aCAiXCdmXCciIGFuZCAiXCdGXCciLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludFxuJworICAgICAgICAgICAgICAgICAgJ2ZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyIuICBGb3Igbm9uLVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSAnCisgICAgICAgICAgICAgICAgICAnaW4gb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgICd3b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJypwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgJworICAgICAgICAgICAgICAgICAgJ2ZvciBzdHJpbmdzIGFuZCAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAnIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdiXCciICAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAyLiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAxMC4gICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzguICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyBsb3dlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnWFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgJworICAgICAgICAgICAgICAgICAgJzkuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdkXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2RcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuICcKKyAgICAgICAgICAgICAgICAgICdiZSBmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93ICcKKyAgICAgICAgICAgICAgICAgICcoZXhjZXB0ICJcJ25cJyJcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgTm9uZSkuIFdoZW4gZG9pbmcgc28sICJmbG9hdCgpIiBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnRlZ2VyIHRvXG4nCisgICAgICAgICAgICAgICAgICAnYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgICdhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ3NjaWVudGlmaWMgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyICdlJyB0byBpbmRpY2F0ZSAiCisgICAgICAgICAgICAgICAgICAndGhlIGV4cG9uZW50LiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdFXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2V4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgY2FzZSAnRScgYXMgdGhlIHNlcGFyYXRvciAiCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZlwnIiAgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhICcKKyAgICAgICAgICAgICAgICAgICdmaXhlZC1wb2ludCBudW1iZXIuICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgJworICAgICAgICAgICAgICAgICAgJyI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdGXCciICAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzICJcJ2ZcJyIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICAnY29udmVydHMgIm5hbiIgdG8gIk5BTiIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYW5kICJpbmYiIHRvICcKKyAgICAgICAgICAgICAgICAgICciSU5GIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZ1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiAnCisgICAgICAgICAgICAgICAgICAnInAgPj0gMSIsIHRoaXMgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByb3VuZHMgdGhlIG51bWJlciB0byAicCIgc2lnbmlmaWNhbnQgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cyBhbmQgdGhlbiAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50ICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgb3IgaW4gICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzICcKKyAgICAgICAgICAgICAgICAgICdtYWduaXR1ZGUuICBUaGUgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOiBzdXBwb3NlIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHQgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciICcKKyAgICAgICAgICAgICAgICAgICdhbmQgcHJlY2lzaW9uICJwLTEiIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdvdWxkIGhhdmUgZXhwb25lbnQgImV4cCIuICBUaGVuIGlmICItNCA8PSAnCisgICAgICAgICAgICAgICAgICAnZXhwIDwgcCIsIHRoZSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAnCisgICAgICAgICAgICAgICAgICAnIlwnZlwnIiBhbmQgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uICJwLTEtZXhwIi4gIE90aGVyd2lzZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgaXMgZm9ybWF0dGVkICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uICJwLTEiLiBJbiBib3RoICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBmcm9tIHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzaWduaWZpY2FuZCwgYW5kIHRoZSBkZWNpbWFsIHBvaW50IGlzIGFsc28gJworICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQgaWYgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAgJ2l0LiAgUG9zaXRpdmUgYW5kICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBuZWdhdGl2ZSBpbmZpbml0eSwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICd6ZXJvLCBhbmQgbmFucywgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhcmUgZm9ybWF0dGVkIGFzICJpbmYiLCAiLWluZiIsICIwIiwgIi0wIiAnCisgICAgICAgICAgICAgICAgICAnYW5kICJuYW4iICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24uICBBIHByZWNpc2lvbiBvZiB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAiMCIgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50IHRvIGEgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbiBvZiAiMSIuIFRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdHXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiBTYW1lIGFzICJcJ2dcJyIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICdzd2l0Y2hlcyB0byAiXCdFXCciIGlmICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9ucyBvZiBpbmZpbml0eSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCAnCisgICAgICAgICAgICAgICAgICAndG9vLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdnXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnJVwnIiAgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwICcKKyAgICAgICAgICAgICAgICAgICdhbmQgZGlzcGxheXMgaW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBmaXhlZCAoIlwnZlwnIikgZm9ybWF0LCBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICdwZXJjZW50IHNpZ24uICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gIlwnZ1wnIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG5vdGF0aW9uLCB3aGVuICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdXNlZCwgaGFzIGF0IGxlYXN0IG9uZSBkaWdpdCBwYXN0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludC4gVGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgZGVmYXVsdCBwcmVjaXNpb24gaXMgYXMgaGlnaCBhcyBuZWVkZWQgdG8gJworICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudCB0aGUgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgcGFydGljdWxhciB2YWx1ZS4gVGhlIG92ZXJhbGwgZWZmZWN0IGlzIHRvICcKKyAgICAgICAgICAgICAgICAgICdtYXRjaCB0aGUgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgb3V0cHV0IG9mICJzdHIoKSIgYXMgYWx0ZXJlZCBieSB0aGUgb3RoZXIgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ21vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgZXhhbXBsZXNcbicKKyAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlICJzdHIuZm9ybWF0KCkiIHN5bnRheCAnCisgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgJyIlIi1mb3JtYXR0aW5nLFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSAie30iIGFuZCB3aXRoICI6IiB1c2VkIGluc3RlYWQgb2YgJworICAgICAgICAgICAgICAgICAgJyIlIi4gRm9yXG4nCisgICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICdvcHRpb25zLCBzaG93blxuJworICAgICAgICAgICAgICAgICAgJ2luIHRoZSBmb2xsb3cgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3swfSwgezF9LCB7Mn0nLmZvcm1hdCgnYScsICdiJywgJ2MnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAne30sIHt9LCB7fScuZm9ybWF0KCdhJywgJ2InLCAnYycpICAjIDMuMSsgb25seVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdhLCBiLCBjJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezJ9LCB7MX0sIHswfScuZm9ybWF0KCdhJywgJ2InLCAnYycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2MsIGIsIGEnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Mn0sIHsxfSwgezB9Jy5mb3JtYXQoKidhYmMnKSAgICAgICMgdW5wYWNraW5nICIKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgIiAgICdjLCBiLCBhJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezB9ezF9ezB9Jy5mb3JtYXQoJ2FicmEnLCAnY2FkJykgICAjIGFyZ3VtZW50cycgIgorICAgICAgICAgICAgICAgICAgJ2luZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2FicmFjYWRhYnJhJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdChsYXRpdHVkZT0nMzcuMjROJywgIgorICAgICAgICAgICAgICAgICAgImxvbmdpdHVkZT0nLTExNS44MVcnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gY29vcmQgPSB7J2xhdGl0dWRlJzogJzM3LjI0TicsICdsb25naXR1ZGUnOiAiCisgICAgICAgICAgICAgICAgICAiJy0xMTUuODFXJ31cbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCAiCisgICAgICAgICAgICAgICAgICAie2xvbmdpdHVkZX0nLmZvcm1hdCgqKmNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxVydcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBhdHRyaWJ1dGVzOlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gMy01alxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAoJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgIgorICAgICAgICAgICAgICAgICAgInBhcnQgezAucmVhbH0gJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uJykuZm9ybWF0KGMpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ1RoZSBjb21wbGV4IG51bWJlciAoMy01aikgaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCAiCisgICAgICAgICAgICAgICAgICAiMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC4nXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIFBvaW50OlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdQb2ludCh7c2VsZi54fSwgIgorICAgICAgICAgICAgICAgICAgIntzZWxmLnl9KScuZm9ybWF0KHNlbGY9c2VsZilcbiIKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdQb2ludCg0LCAyKSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBpdGVtczpcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY29vcmQgPSAoMywgNSlcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ1g6IHswWzBdfTsgIFk6IHswWzFdfScuZm9ybWF0KGNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdYOiAzOyAgWTogNSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiAnCisgICAgICAgICAgICAgICAgICAneyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuJworICAgICAgICAgICAgICAgICAgJyAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezo8MzB9Jy5mb3JtYXQoJ2xlZnQgYWxpZ25lZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6PjMwfScuZm9ybWF0KCdyaWdodCBhbGlnbmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezpeMzB9Jy5mb3JtYXQoJ2NlbnRlcmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezoqXjMwfScuZm9ybWF0KCdjZW50ZXJlZCcpICAjIHVzZSAnKicgYXMgYSBmaWxsICIKKyAgICAgICAgICAgICAgICAgICdjaGFyXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKidcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiUrZiIsICIlLWYiLCBhbmQgIiUgZiIgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezorZn07IHs6K2Z9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgIgorICAgICAgICAgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICAgICAgICAgIiAgICcrMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6IGZ9OyB7OiBmfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgIgorICAgICAgICAgICAgICAgICAgJ2ZvciBwb3NpdGl2ZSBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyAzLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezotZn07IHs6LWZ9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgIgorICAgICAgICAgICAgICAgICAgIm1pbnVzIC0tIHNhbWUgYXMgJ3s6Zn07IHs6Zn0nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgYmFzZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOmJ9Ii5mb3JtYXQoNDIpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOiNifSIuZm9ybWF0KDQyKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezosfScuZm9ybWF0KDEyMzQ1Njc4OTApXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzEsMjM0LDU2Nyw4OTAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHBvaW50cyA9IDE5XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHRvdGFsID0gMjJcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ0NvcnJlY3QgYW5zd2VyczogezouMiV9Jy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDb3JyZWN0IGFuc3dlcnM6IDg2LjM2JSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBkYXRldGltZVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6JVktJW0tJWQgJUg6JU06JVN9Jy5mb3JtYXQoZClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMjAxMC0wNy0wNCAxMjoxNTo1OCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdOZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKCc8Xj4nLCBbJ2xlZnQnLCAnY2VudGVyJywgIgorICAgICAgICAgICAgICAgICAgIidyaWdodCddKTpcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICd7MDp7ZmlsbH17YWxpZ259MTZ9Jy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgIgorICAgICAgICAgICAgICAgICAgJ2FsaWduPWFsaWduKVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgIiAgICdsZWZ0PDw8PDw8PDw8PDw8J1xuIgorICAgICAgICAgICAgICAgICAgIiAgICdeXl5eXmNlbnRlcl5eXl5eJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgICc+Pj4+Pj4+Pj4+PnJpZ2h0J1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OjAyWH17OjAyWH17OjAyWH17OjAyWH0nLmZvcm1hdCgqb2N0ZXRzKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdDMEE4MDAwMSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50KF8sIDE2KVxuJworICAgICAgICAgICAgICAgICAgJyAgIDMyMzIyMzU1MjFcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gd2lkdGggPSA1XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6ICNkb2N0ZXN0OiAnCisgICAgICAgICAgICAgICAgICAnK05PUk1BTElaRV9XSElURVNQQUNFXG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICBmb3IgYmFzZSBpbiAnZFhvYic6XG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcHJpbnQoJ3swOnt3aWR0aH17YmFzZX19Jy5mb3JtYXQobnVtLCAiCisgICAgICAgICAgICAgICAgICAiYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD0nICcpXG4iCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwcmludCgpXG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCisgJ2Z1bmN0aW9uJzogJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmdW5jZGVmICAgICAgICAgICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiAnCisgICAgICAgICAgICAgJ1twYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICAgICAgICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICAgICAgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgJworICAgICAgICAgICAgICdbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGRvdHRlZF9uYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlcl9saXN0ICAgICAgICAgIDo6PSBkZWZwYXJhbWV0ZXIgKCIsIiBkZWZwYXJhbWV0ZXIpKiAnCisgICAgICAgICAgICAgJ1siLCIgW3BhcmFtZXRlcl9saXN0X3N0YXJhcmdzXV1cbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3MgOjo9ICIqIiBbcGFyYW1ldGVyXSAoIiwiICcKKyAgICAgICAgICAgICAnZGVmcGFyYW1ldGVyKSogWyIsIiBbIioqIiBwYXJhbWV0ZXIgWyIsIl1dXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlciBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGRlZnBhcmFtZXRlciAgICAgICAgICAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdleGNlcHQgdGhhdCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gaXMgbm90IHRlbXBvcmFyaWx5IGJvdW5kIHRvICcKKyAgICAgICAgICAgICAndGhlIG5hbWVcbicKKyAgICAgICAgICAgICAnImZ1bmMiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbicKKyAgICAgICAgICAgICAnKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciAnCisgICAgICAgICAgICAgJ3ZhbHVlcy4iXG4nCisgICAgICAgICAgICAgJ0ZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgJworICAgICAgICAgICAgICcqYXJndW1lbnQqIG1heVxuJworICAgICAgICAgICAgICJiZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXIncyBkZWZhdWx0ICIKKyAgICAgICAgICAgICAndmFsdWUgaXNcbicKKyAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2lzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgJworICAgICAgICAgICAgICdncmFtbWFyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzXG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJyJwcmUtXG4nCisgICAgICAgICAgICAgJ2NvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgJworICAgICAgICAgICAgICdpbXBvcnRhbnRcbicKKyAgICAgICAgICAgICAndG8gdW5kZXJzdGFuZCB3aGVuIGEgZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCAnCisgICAgICAgICAgICAgJ2FzIGFcbicKKyAgICAgICAgICAgICAnbGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuICcKKyAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAnYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0ICcKKyAgICAgICAgICAgICAnbW9kaWZpZWQuXG4nCisgICAgICAgICAgICAgJ1RoaXMgaXMgZ2VuZXJhbGx5IG5vdCB3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzICcKKyAgICAgICAgICAgICAndG8gdXNlXG4nCisgICAgICAgICAgICAgJyJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24sIGUuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IG9yZGVyZWRcbicKKyAgICAgICAgICAgICAnbWFwcGluZyByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhICcKKyAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgJ2VtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgIiIqIiIgb3JcbicKKyAgICAgICAgICAgICAnIiIqaWRlbnRpZmllciIiIGFyZSBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgJworICAgICAgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgICAgICAndXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1BhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiAnCisgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb24gZXZlbiAnCisgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgJ29mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5ICcKKyAgICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAgICcicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICAgICdsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiBhbmQgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyAnCisgICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgICdiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlICcKKyAgICAgICAgICAgICAnY29kZS5cbicKKyAgICAgICAgICAgICAnVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIGFcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuJworICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzJyBuYW1lcyBpbiB0aGUgIgorICAgICAgICAgICAgICciX19hbm5vdGF0aW9uc19fIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgJworICAgICAgICAgICAgICdib3VuZFxuJworICAgICAgICAgICAgICd0byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uO1xuJworICAgICAgICAgICAgICdhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ2Fzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSAnCisgICAgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgICAgJ2FsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWxcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICdpbiB0aGUgbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcgZm9yICcKKyAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuJworICAgICAgICAgICAgICcgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCisgJ2dsb2JhbCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgJworICAgICAgICAgICAnZW50aXJlXG4nCisgICAgICAgICAgICdjdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdpbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSAnCisgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHdpdGhvdXQgImdsb2JhbCIsIGFsdGhvdWdoIGZyZWUgdmFyaWFibGVzIG1heSByZWZlciB0b1xuJworICAgICAgICAgICAnZ2xvYmFscyB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAnYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0ICJnbG9iYWwiIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgJworICAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgICdwYXJhbWV0ZXJzIG9yIGluIGEgImZvciIgbG9vcCBjb250cm9sIHRhcmdldCwgImNsYXNzIiBkZWZpbml0aW9uLFxuJworICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbiwgImltcG9ydCIgc3RhdGVtZW50LCBvciB2YXJpYWJsZSBhbm5vdGF0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgJworICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdlbmZvcmNlIHNvbWUgb2YgdGhlc2UgcmVzdHJpY3Rpb24sIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlICcKKyAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgJ2ZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseSAnCisgICAgICAgICAgICdjaGFuZ2VcbicKKyAgICAgICAgICAgJ3RoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlICcKKyAgICAgICAgICAgJ3BhcnNlci4gIEl0XG4nCisgICAgICAgICAgICdhcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbicKKyAgICAgICAgICAgJ3N0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgJworICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICdvciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gImV4ZWMoKSIgZnVuY3Rpb24gZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2FmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlIGZ1bmN0aW9uIGNhbGwsIGFuZCBjb2RlXG4nCisgICAgICAgICAgICdjb250YWluZWQgaW4gc3VjaCBhIHN0cmluZyBpcyB1bmFmZmVjdGVkIGJ5ICJnbG9iYWwiIHN0YXRlbWVudHMgaW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjb2RlIGNvbnRhaW5pbmcgdGhlIGZ1bmN0aW9uIGNhbGwuICBUaGUgc2FtZSBhcHBsaWVzIHRvIHRoZSAnCisgICAgICAgICAgICciZXZhbCgpIlxuJworICAgICAgICAgICAnYW5kICJjb21waWxlKCkiIGZ1bmN0aW9ucy5cbicsCisgJ2lkLWNsYXNzZXMnOiAnXG4nCisgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdDZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgJworICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICdsZWFkaW5nIGFuZFxuJworICAgICAgICAgICAgICAgJ3RyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciXyoiXG4nCisgICAgICAgICAgICAgICAnICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCAnCisgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICcgICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAnV2hlbiBub3RcbicKKyAgICAgICAgICAgICAgICcgICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICdkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgJyAgIFNlZSBzZWN0aW9uIFRoZSBpbXBvcnQgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgJ2NvbnZlbnRpb24uXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgJyAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgJworICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gICcKKyAgICAgICAgICAgICAgICdDdXJyZW50XG4nCisgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIFNwZWNpYWwgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICdzZWN0aW9uIGFuZFxuJworICAgICAgICAgICAgICAgJyAgIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgJworICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0ICcKKyAgICAgICAgICAgICAgICdkb2VzIG5vdFxuJworICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAnICAgd2FybmluZy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgJyAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgJworICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgJ21hbmdsZWQgZm9ybVxuJworICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgJworICAgICAgICAgICAgICAgJ2Jhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiBJZGVudGlmaWVycyAoTmFtZXMpLlxuJywKKyAnaWRlbnRpZmllcnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFuZCBrZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIChhbHNvIHJlZmVycmVkIHRvIGFzICpuYW1lcyopIGFyZSBkZXNjcmliZWQgYnkgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSAnCisgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgJ2FubmV4IFVBWC0zMSwgd2l0aCBlbGFib3JhdGlvbiBhbmQgY2hhbmdlcyBhcyBkZWZpbmVkIGJlbG93OyAnCisgICAgICAgICAgICAgICAgJ3NlZSBhbHNvXG4nCisgICAgICAgICAgICAgICAgJyoqUEVQIDMxMzEqKiBmb3IgZnVydGhlciBkZXRhaWxzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICdpZGVudGlmaWVycyBhcmUgdGhlIHNhbWUgYXMgaW4gUHl0aG9uIDIueDogdGhlIHVwcGVyY2FzZSBhbmQgJworICAgICAgICAgICAgICAgICdsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAnbGV0dGVycyAiQSIgdGhyb3VnaCAiWiIsIHRoZSB1bmRlcnNjb3JlICJfIiBhbmQsIGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgICd0aGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVyLCB0aGUgZGlnaXRzICIwIiB0aHJvdWdoICI5Ii5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSAnCisgICAgICAgICAgICAgICAgJ0FTQ0lJXG4nCisgICAgICAgICAgICAgICAgJ3JhbmdlIChzZWUgKipQRVAgMzEzMSoqKS4gIEZvciB0aGVzZSBjaGFyYWN0ZXJzLCB0aGUgJworICAgICAgICAgICAgICAgICdjbGFzc2lmaWNhdGlvblxuJworICAgICAgICAgICAgICAgICd1c2VzIHRoZSB2ZXJzaW9uIG9mIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSBhcyAnCisgICAgICAgICAgICAgICAgJ2luY2x1ZGVkIGluIHRoZVxuJworICAgICAgICAgICAgICAgICcidW5pY29kZWRhdGEiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbicKKyAgICAgICAgICAgICAgICAnICAgaWRfc3RhcnQgICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gZ2VuZXJhbCBjYXRlZ29yaWVzIEx1LCAnCisgICAgICAgICAgICAgICAgJ0xsLCBMdCwgTG0sIExvLCBObCwgdGhlIHVuZGVyc2NvcmUsIGFuZCBjaGFyYWN0ZXJzIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgICAnT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4nCisgICAgICAgICAgICAgICAgJyAgIGlkX2NvbnRpbnVlICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0LCBwbHVzICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBpbiB0aGUgY2F0ZWdvcmllcyBNbiwgTWMsIE5kLCBQYyBhbmQgb3RoZXJzIHdpdGggJworICAgICAgICAgICAgICAgICd0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4nCisgICAgICAgICAgICAgICAgJyAgIHhpZF9zdGFydCAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0IHdob3NlIE5GS0MgJworICAgICAgICAgICAgICAgICdub3JtYWxpemF0aW9uIGlzIGluICJpZF9zdGFydCB4aWRfY29udGludWUqIj5cbicKKyAgICAgICAgICAgICAgICAnICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyAnCisgICAgICAgICAgICAgICAgJ25vcm1hbGl6YXRpb24gaXMgaW4gImlkX2NvbnRpbnVlKiI+XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTHUqIC0gdXBwZXJjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkxsKiAtIGxvd2VyY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTG0qIC0gbW9kaWZpZXIgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTG8qIC0gb3RoZXIgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk1uKiAtIG5vbnNwYWNpbmcgbWFya3NcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk1jKiAtIHNwYWNpbmcgY29tYmluaW5nIG1hcmtzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpOZCogLSBkZWNpbWFsIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKlBjKiAtIGNvbm5lY3RvciBwdW5jdHVhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk90aGVyX0lEX1N0YXJ0KiAtIGV4cGxpY2l0IGxpc3Qgb2YgY2hhcmFjdGVycyBpbiAnCisgICAgICAgICAgICAgICAgJ1Byb3BMaXN0LnR4dCB0b1xuJworICAgICAgICAgICAgICAgICcgIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk90aGVyX0lEX0NvbnRpbnVlKiAtIGxpa2V3aXNlXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdBbGwgaWRlbnRpZmllcnMgYXJlIGNvbnZlcnRlZCBpbnRvIHRoZSBub3JtYWwgZm9ybSBORktDIHdoaWxlICcKKyAgICAgICAgICAgICAgICAncGFyc2luZztcbicKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQSBub24tbm9ybWF0aXZlIEhUTUwgZmlsZSBsaXN0aW5nIGFsbCB2YWxpZCBpZGVudGlmaWVyICcKKyAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBmb3JcbicKKyAgICAgICAgICAgICAgICAnVW5pY29kZSA0LjEgY2FuIGJlIGZvdW5kIGF0IGh0dHBzOi8vd3d3LmRjbC5ocGkudW5pLVxuJworICAgICAgICAgICAgICAgICdwb3RzZGFtLmRlL2hvbWUvbG9ld2lzL3RhYmxlLTMxMzEuaHRtbC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdLZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgJworICAgICAgICAgICAgICAgICcqa2V5d29yZHMqIG9mXG4nCisgICAgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgJworICAgICAgICAgICAgICAgICdUaGV5IG11c3RcbicKKyAgICAgICAgICAgICAgICAnYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIEZhbHNlICAgICAgY2xhc3MgICAgICBmaW5hbGx5ICAgIGlzICAgICAgICAgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vbmUgICAgICAgY29udGludWUgICBmb3IgICAgICAgIGxhbWJkYSAgICAgdHJ5XG4nCisgICAgICAgICAgICAgICAgJyAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kICAgICAgICBkZWwgICAgICAgIGdsb2JhbCAgICAgbm90ICAgICAgICB3aXRoXG4nCisgICAgICAgICAgICAgICAgJyAgIGFzICAgICAgICAgZWxpZiAgICAgICBpZiAgICAgICAgIG9yICAgICAgICAgeWllbGRcbicKKyAgICAgICAgICAgICAgICAnICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICcgICBicmVhayAgICAgIGV4Y2VwdCAgICAgaW4gICAgICAgICByYWlzZVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlICcKKyAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICdtZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mICcKKyAgICAgICAgICAgICAgICAnbGVhZGluZyBhbmRcbicKKyAgICAgICAgICAgICAgICAndHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl8qIlxuJworICAgICAgICAgICAgICAgICcgICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAnaWRlbnRpZmllciAiXyJcbicKKyAgICAgICAgICAgICAgICAnICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCAnCisgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICAnCisgICAgICAgICAgICAgICAgJ1doZW4gbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgJworICAgICAgICAgICAgICAgICdkZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICcgICBTZWUgc2VjdGlvbiBUaGUgaW1wb3J0IHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJyAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzICcKKyAgICAgICAgICAgICAgICAnY29udmVudGlvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyJfXypfXyJcbicKKyAgICAgICAgICAgICAgICAnICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICAnCisgICAgICAgICAgICAgICAgJ0N1cnJlbnRcbicKKyAgICAgICAgICAgICAgICAnICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlIFNwZWNpYWwgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAnc2VjdGlvbiBhbmRcbicKKyAgICAgICAgICAgICAgICAnICAgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyAnCisgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgJyAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCAnCisgICAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlICcKKyAgICAgICAgICAgICAgICAnd2l0aG91dFxuJworICAgICAgICAgICAgICAgICcgICB3YXJuaW5nLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl9fKiJcbicKKyAgICAgICAgICAgICAgICAnICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCAnCisgICAgICAgICAgICAgICAgJ3dpdGhpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhICcKKyAgICAgICAgICAgICAgICAnbWFuZ2xlZCBmb3JtXG4nCisgICAgICAgICAgICAgICAgJyAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgJworICAgICAgICAgICAgICAgICdiYXNlIGFuZFxuJworICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uIElkZW50aWZpZXJzIChOYW1lcykuXG4nLAorICdpZic6ICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50XG4nCisgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcbicKKyAgICAgICAnXG4nCisgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAnICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbicKKyAgICAgICAnICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgJ1xuJworICAgICAgICdJdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICdvbmVcbicKKyAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuIG9wZXJhdGlvbnNcbicKKyAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4nCisgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbicKKyAgICAgICAnSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxuJworICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCisgJ2ltYWdpbmFyeSc6ICdcbicKKyAgICAgICAgICAgICAgJ0ltYWdpbmFyeSBsaXRlcmFsc1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgZGlnaXRwYXJ0KSAoImoiIHwgIkoiKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0ICcKKyAgICAgICAgICAgICAgJ29mIDAuMC5cbicKKyAgICAgICAgICAgICAgJ0NvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAgJ251bWJlcnNcbicKKyAgICAgICAgICAgICAgJ2FuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgJ2NvbXBsZXhcbicKKyAgICAgICAgICAgICAgJ251bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byAnCisgICAgICAgICAgICAgICdpdCxcbicKKyAgICAgICAgICAgICAgJ2UuZy4sICIoMys0aikiLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAgMy4xNGUtMTBqICAgJworICAgICAgICAgICAgICAnMy4xNF8xNV85M2pcbicsCisgJ2ltcG9ydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgJworICAgICAgICAgICAnWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiAnCisgICAgICAgICAgICdpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4nCisgICAgICAgICAgICcgICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJhc2ljIGltcG9ydCBzdGF0ZW1lbnQgKG5vICJmcm9tIiBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuJworICAgICAgICAgICAnc3RlcHM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGVcbicKKyAgICAgICAgICAgJyAgIHdoZXJlIHRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2NjdXJzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHRoZSBzdGF0ZW1lbnQgY29udGFpbnMgbXVsdGlwbGUgY2xhdXNlcyAoc2VwYXJhdGVkIGJ5IGNvbW1hcykgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICd0d28gc3RlcHMgYXJlIGNhcnJpZWQgb3V0IHNlcGFyYXRlbHkgZm9yIGVhY2ggY2xhdXNlLCBqdXN0IGFzICcKKyAgICAgICAgICAgJ3Rob3VnaFxuJworICAgICAgICAgICAndGhlIGNsYXVzZXMgaGFkIGJlZW4gc2VwYXJhdGVkIG91dCBpbnRvIGluZGl2aWR1YWwgaW1wb3J0ICcKKyAgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgYXJlXG4nCisgICAgICAgICAgICdkZXNjcmliZWQgaW4gZ3JlYXRlciBkZXRhaWwgaW4gdGhlIHNlY3Rpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0sICcKKyAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICdhbHNvIGRlc2NyaWJlcyB0aGUgdmFyaW91cyB0eXBlcyBvZiBwYWNrYWdlcyBhbmQgbW9kdWxlcyB0aGF0IGNhbiAnCisgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQsIGFzIHdlbGwgYXMgYWxsIHRoZSBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2ltcG9ydCBzeXN0ZW0uIE5vdGUgdGhhdCBmYWlsdXJlcyBpbiB0aGlzIHN0ZXAgbWF5IGluZGljYXRlICcKKyAgICAgICAgICAgJ2VpdGhlclxuJworICAgICAgICAgICAndGhhdCB0aGUgbW9kdWxlIGNvdWxkIG5vdCBiZSBsb2NhdGVkLCAqb3IqIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWRcbicKKyAgICAgICAgICAgJ3doaWxlIGluaXRpYWxpemluZyB0aGUgbW9kdWxlLCB3aGljaCBpbmNsdWRlcyBleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICJtb2R1bGUncyBjb2RlLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlICcKKyAgICAgICAgICAgJ21hZGVcbicKKyAgICAgICAgICAgJ2F2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSAiYXMiLCB0aGVuIHRoZSBuYW1lIGZvbGxvd2luZ1xuJworICAgICAgICAgICAnICAiYXMiIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgIiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZSdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsICIKKyAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAnICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICcgIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCAnCisgICAgICAgICAgICdpblxuJworICAgICAgICAgICAnICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICcgIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4nCisgICAgICAgICAgICcgIHJhdGhlciB0aGFuIGRpcmVjdGx5XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZnJvbSIgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlICJmcm9tIiBjbGF1c2UsIGxvYWRpbmcgYW5kXG4nCisgICAgICAgICAgICcgICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcyLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSAiaW1wb3J0IiBjbGF1c2VzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kICcKKyAgICAgICAgICAgJ3RoZW5cbicKKyAgICAgICAgICAgJyAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgNC4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAgJyAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlICJhcyIgY2xhdXNlIGlmIGl0IGlzICcKKyAgICAgICAgICAgJ3ByZXNlbnQsXG4nCisgICAgICAgICAgICcgICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0V4YW1wbGVzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kICcKKyAgICAgICAgICAgJ2xvY2FsbHlcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzICcKKyAgICAgICAgICAgJ2ZiYlxuJworICAgICAgICAgICAnICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgJworICAgICAgICAgICAnYmF6XG4nCisgICAgICAgICAgICcgICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgJworICAgICAgICAgICAnYXR0clxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICduYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsIGl0ICcKKyAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgJ2JlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgJworICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICdhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICJuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSB3aGljaCBkbyAiCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2JlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAgIl9fYWxsX18iIHNob3VsZCAnCisgICAgICAgICAgICdjb250YWluXG4nCisgICAgICAgICAgICd0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkIGFjY2lkZW50YWxseSAnCisgICAgICAgICAgICdleHBvcnRpbmdcbicKKyAgICAgICAgICAgJ2l0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMgbGlicmFyeSBtb2R1bGVzIHdoaWNoICcKKyAgICAgICAgICAgJ3dlcmVcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImZyb20gbW9kdWxlIGltcG9ydCAqIiAtLS0gaXMgJworICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAnYWxsb3dlZCBhdCB0aGUgbW9kdWxlIGxldmVsLiAgQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3JcbicKKyAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIHNwZWNpZnlpbmcgd2hhdCBtb2R1bGUgdG8gaW1wb3J0IHlvdSBkbyBub3QgaGF2ZSB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnYWJzb2x1dGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBXaGVuIGEgbW9kdWxlIG9yIHBhY2thZ2UgaXMgJworICAgICAgICAgICAnY29udGFpbmVkXG4nCisgICAgICAgICAgICd3aXRoaW4gYW5vdGhlciBwYWNrYWdlIGl0IGlzIHBvc3NpYmxlIHRvIG1ha2UgYSByZWxhdGl2ZSBpbXBvcnQgJworICAgICAgICAgICAnd2l0aGluXG4nCisgICAgICAgICAgICd0aGUgc2FtZSB0b3AgcGFja2FnZSB3aXRob3V0IGhhdmluZyB0byBtZW50aW9uIHRoZSBwYWNrYWdlIG5hbWUuICcKKyAgICAgICAgICAgJ0J5XG4nCisgICAgICAgICAgICd1c2luZyBsZWFkaW5nIGRvdHMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgb3IgcGFja2FnZSBhZnRlciAiZnJvbSIgJworICAgICAgICAgICAneW91XG4nCisgICAgICAgICAgICdjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxuJworICAgICAgICAgICAnd2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbicKKyAgICAgICAgICAgJ3BhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zICcKKyAgICAgICAgICAgJ3VwXG4nCisgICAgICAgICAgICdvbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSAnCisgICAgICAgICAgICdleGVjdXRlXG4nCisgICAgICAgICAgICciZnJvbSAuIGltcG9ydCBtb2QiIGZyb20gYSBtb2R1bGUgaW4gdGhlICJwa2ciIHBhY2thZ2UgdGhlbiB5b3UgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAnZW5kIHVwIGltcG9ydGluZyAicGtnLm1vZCIuIElmIHlvdSBleGVjdXRlICJmcm9tIC4uc3VicGtnMiBpbXBvcnQgJworICAgICAgICAgICAnbW9kIlxuJworICAgICAgICAgICAnZnJvbSB3aXRoaW4gInBrZy5zdWJwa2cxIiB5b3Ugd2lsbCBpbXBvcnQgInBrZy5zdWJwa2cyLm1vZCIuIFRoZVxuJworICAgICAgICAgICAnc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpcyBjb250YWluZWQgd2l0aGluICoqUEVQICcKKyAgICAgICAgICAgJzMyOCoqLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICciaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSIgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgJworICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAnZGV0ZXJtaW5lIGR5bmFtaWNhbGx5IHRoZSBtb2R1bGVzIHRvIGJlIGxvYWRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdGdXR1cmUgc3RhdGVtZW50c1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSAnCisgICAgICAgICAgICdwYXJ0aWN1bGFyXG4nCisgICAgICAgICAgICdtb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG4nCisgICAgICAgICAgICdhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uIHdoZXJlIHRoZSAnCisgICAgICAgICAgICdmZWF0dXJlXG4nCisgICAgICAgICAgICdiZWNvbWVzIHN0YW5kYXJkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZnV0dXJlIHN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgJworICAgICAgICAgICAndmVyc2lvbnNcbicKKyAgICAgICAgICAgJ29mIFB5dGhvbiB0aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICAnCisgICAgICAgICAgICdJdFxuJworICAgICAgICAgICAnYWxsb3dzIHVzZSBvZiB0aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlXG4nCisgICAgICAgICAgICdyZWxlYXNlIGluIHdoaWNoIHRoZSBmZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiAnCisgICAgICAgICAgICduYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSAnCisgICAgICAgICAgICdbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4nCisgICAgICAgICAgICcgICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSAnCisgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICdsaW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogY29tbWVudHMsXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogYmxhbmsgbGluZXMsIGFuZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSAiYWJzb2x1dGVfaW1wb3J0IixcbicKKyAgICAgICAgICAgJyJkaXZpc2lvbiIsICJnZW5lcmF0b3JzIiwgInVuaWNvZGVfbGl0ZXJhbHMiLCAicHJpbnRfZnVuY3Rpb24iLFxuJworICAgICAgICAgICAnIm5lc3RlZF9zY29wZXMiIGFuZCAid2l0aF9zdGF0ZW1lbnQiLiAgVGhleSBhcmUgYWxsIHJlZHVuZGFudCAnCisgICAgICAgICAgICdiZWNhdXNlXG4nCisgICAgICAgICAgICd0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3IgYmFja3dhcmRzICcKKyAgICAgICAgICAgJ2NvbXBhdGliaWxpdHkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG4nCisgICAgICAgICAgICd0aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuJworICAgICAgICAgICAnaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICd0aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAncmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxuJworICAgICAgICAgICAnbW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbicKKyAgICAgICAgICAgJ3J1bnRpbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgJworICAgICAgICAgICAnaGF2ZVxuJworICAgICAgICAgICAnYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgJworICAgICAgICAgICAnc3RhdGVtZW50OlxuJworICAgICAgICAgICAndGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgIl9fZnV0dXJlX18iLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG4nCisgICAgICAgICAgICdleGVjdXRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuJworICAgICAgICAgICAnZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAiVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgIgorICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAnbm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJleGVjKCkiIGFuZFxuJworICAgICAgICAgICAnImNvbXBpbGUoKSIgdGhhdCBvY2N1ciBpbiBhIG1vZHVsZSAiTSIgY29udGFpbmluZyBhIGZ1dHVyZSAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ3dpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICciY29tcGlsZSgpIiAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yICcKKyAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAndGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbicKKyAgICAgICAgICAgJ2ludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgIi1pIiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCAnCisgICAgICAgICAgICduYW1lXG4nCisgICAgICAgICAgICd0byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgJworICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgJ2VmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbicKKyAgICAgICAgICAgJ2V4ZWN1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cbicKKyAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAorICdpbic6ICdcbicKKyAgICAgICAnTWVtYmVyc2hpcCB0ZXN0IG9wZXJhdGlvbnNcbicKKyAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG4nCisgICAgICAgJ2V2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICAieFxuJworICAgICAgICdub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG4nCisgICAgICAgJ2FuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgJworICAgICAgICd0ZXN0c1xuJworICAgICAgICd3aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG4nCisgICAgICAgJ2xpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuJworICAgICAgICdleHByZXNzaW9uICJ4IGluIHkiIGlzIGVxdWl2YWxlbnQgdG8gImFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG4nCisgICAgICAgJ3kpIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogJworICAgICAgICdpc1xuJworICAgICAgICdhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuJworICAgICAgICdzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLFxuJworICAgICAgICdzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuJworICAgICAgICdpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG4nCisgICAgICAgJ2RlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuJworICAgICAgICdpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG4nCisgICAgICAgJ2R1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0xhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuJworICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG4nCisgICAgICAgJ25lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuJworICAgICAgICdpbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG4nCisgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuJworICAgICAgICciaW4iLlxuJywKKyAnaW50ZWdlcnMnOiAnXG4nCisgICAgICAgICAgICAgJ0ludGVnZXIgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaW50ZWdlciAgICAgIDo6PSBkZWNpbnRlZ2VyIHwgYmluaW50ZWdlciB8IG9jdGludGVnZXIgfCAnCisgICAgICAgICAgICAgJ2hleGludGVnZXJcbicKKyAgICAgICAgICAgICAnICAgZGVjaW50ZWdlciAgIDo6PSBub256ZXJvZGlnaXQgKFsiXyJdIGRpZ2l0KSogfCAiMCIrIChbIl8iXSAnCisgICAgICAgICAgICAgJyIwIikqXG4nCisgICAgICAgICAgICAgJyAgIGJpbmludGVnZXIgICA6Oj0gIjAiICgiYiIgfCAiQiIpIChbIl8iXSBiaW5kaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIG9jdGludGVnZXIgICA6Oj0gIjAiICgibyIgfCAiTyIpIChbIl8iXSBvY3RkaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIGhleGludGVnZXIgICA6Oj0gIjAiICgieCIgfCAiWCIpIChbIl8iXSBoZXhkaWdpdCkrXG4nCisgICAgICAgICAgICAgJyAgIG5vbnplcm9kaWdpdCA6Oj0gIjEiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIGRpZ2l0ICAgICAgICA6Oj0gIjAiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIGJpbmRpZ2l0ICAgICA6Oj0gIjAiIHwgIjEiXG4nCisgICAgICAgICAgICAgJyAgIG9jdGRpZ2l0ICAgICA6Oj0gIjAiLi4uIjciXG4nCisgICAgICAgICAgICAgJyAgIGhleGRpZ2l0ICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGlzIG5vIGxpbWl0IGZvciB0aGUgbGVuZ3RoIG9mIGludGVnZXIgbGl0ZXJhbHMgYXBhcnQgZnJvbSAnCisgICAgICAgICAgICAgJ3doYXRcbicKKyAgICAgICAgICAgICAnY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVW5kZXJzY29yZXMgYXJlIGlnbm9yZWQgZm9yIGRldGVybWluaW5nIHRoZSBudW1lcmljIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2xpdGVyYWwuICBUaGV5IGNhbiBiZSB1c2VkIHRvIGdyb3VwIGRpZ2l0cyBmb3IgZW5oYW5jZWQgJworICAgICAgICAgICAgICdyZWFkYWJpbGl0eS5cbicKKyAgICAgICAgICAgICAnT25lIHVuZGVyc2NvcmUgY2FuIG9jY3VyIGJldHdlZW4gZGlnaXRzLCBhbmQgYWZ0ZXIgYmFzZSAnCisgICAgICAgICAgICAgJ3NwZWNpZmllcnNcbicKKyAgICAgICAgICAgICAnbGlrZSAiMHgiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90ICcKKyAgICAgICAgICAgICAnYWxsb3dlZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBDLXN0eWxlIG9jdGFsIGxpdGVyYWxzLCB3aGljaCAnCisgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICd1c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIDcgICAgIDIxNDc0ODM2NDcgICAgICAgICAgICAgICAgICAgICAgICAwbzE3NyAgICAwYjEwMDExMDExMVxuJworICAgICAgICAgICAgICcgICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZlxuJworICAgICAgICAgICAgICcgICAgICAgICAxMDBfMDAwXzAwMF8wMDAgICAgICAgICAgICAgICAgICAgMGJfMTExMF8wMTAxXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yICcKKyAgICAgICAgICAgICAnZ3JvdXBpbmdcbicKKyAgICAgICAgICAgICAncHVycG9zZXMgaW4gbGl0ZXJhbHMuXG4nLAorICdsYW1iZGEnOiAnXG4nCisgICAgICAgICAgICdMYW1iZGFzXG4nCisgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGxhbWJkYV9leHByICAgICAgICA6Oj0gImxhbWJkYSIgW3BhcmFtZXRlcl9saXN0XTogZXhwcmVzc2lvblxuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHJfbm9jb25kIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiAnCisgICAgICAgICAgICdleHByZXNzaW9uX25vY29uZFxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdMYW1iZGEgZXhwcmVzc2lvbnMgKHNvbWV0aW1lcyBjYWxsZWQgbGFtYmRhIGZvcm1zKSBhcmUgdXNlZCB0byAnCisgICAgICAgICAgICdjcmVhdGVcbicKKyAgICAgICAgICAgJ2Fub255bW91cyBmdW5jdGlvbnMuIFRoZSBleHByZXNzaW9uICJsYW1iZGEgYXJndW1lbnRzOiAnCisgICAgICAgICAgICdleHByZXNzaW9uIlxuJworICAgICAgICAgICAneWllbGRzIGEgZnVuY3Rpb24gb2JqZWN0LiAgVGhlIHVubmFtZWQgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhICcKKyAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICdvYmplY3QgZGVmaW5lZCB3aXRoOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBkZWYgPGxhbWJkYT4oYXJndW1lbnRzKTpcbicKKyAgICAgICAgICAgJyAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgc2VjdGlvbiBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgJworICAgICAgICAgICAnbGlzdHMuXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90ICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3N0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLAorICdsaXN0cyc6ICdcbicKKyAgICAgICAgICAnTGlzdCBkaXNwbGF5c1xuJworICAgICAgICAgICcqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ3NxdWFyZSBicmFja2V0czpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGxpc3RfZGlzcGxheSA6Oj0gIlsiIFtzdGFycmVkX2xpc3QgfCBjb21wcmVoZW5zaW9uXSAiXSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgbGlzdCBkaXNwbGF5IHlpZWxkcyBhIG5ldyBsaXN0IG9iamVjdCwgdGhlIGNvbnRlbnRzIGJlaW5nICcKKyAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgJ2J5IGVpdGhlciBhIGxpc3Qgb2YgZXhwcmVzc2lvbnMgb3IgYSBjb21wcmVoZW5zaW9uLiAgV2hlbiBhIGNvbW1hLVxuJworICAgICAgICAgICdzZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpcyBzdXBwbGllZCwgaXRzIGVsZW1lbnRzIGFyZSAnCisgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICdmcm9tIGxlZnQgdG8gcmlnaHQgYW5kIHBsYWNlZCBpbnRvIHRoZSBsaXN0IG9iamVjdCBpbiB0aGF0IG9yZGVyLlxuJworICAgICAgICAgICdXaGVuIGEgY29tcHJlaGVuc2lvbiBpcyBzdXBwbGllZCwgdGhlIGxpc3QgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGVcbicKKyAgICAgICAgICAnZWxlbWVudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXByZWhlbnNpb24uXG4nLAorICduYW1pbmcnOiAnXG4nCisgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0JpbmRpbmcgb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gJworICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0ICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBvciAnCisgICAgICAgICAgICdhZnRlclxuJworICAgICAgICAgICAnImFzIiBpbiBhICJ3aXRoIiBzdGF0ZW1lbnQgb3IgImV4Y2VwdCIgY2xhdXNlLiBUaGUgImltcG9ydCIgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICdvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICoiIGJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgYmVnaW5uaW5nIHdpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgJworICAgICAgICAgICAnZm9ybVxuJworICAgICAgICAgICAnbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlIGxldmVsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kICcKKyAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAnbmFtZSkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkICcKKyAgICAgICAgICAgJ2J5IGFcbicKKyAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAnYmxvY2ssXG4nCisgICAgICAgICAgICd1bmxlc3MgZGVjbGFyZWQgYXMgIm5vbmxvY2FsIiBvciAiZ2xvYmFsIi4gIElmIGEgbmFtZSBpcyBib3VuZCBhdCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ21vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlIHZhcmlhYmxlcyBvZiB0aGUgJworICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICdjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGEgdmFyaWFibGUgaXMgdXNlZCBpbiBhICcKKyAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgJ2Jsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZSB2YXJpYWJsZSouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0VhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCByZWZlcnMgdG8gdGhlICcKKyAgICAgICAgICAgJypiaW5kaW5nKlxuJworICAgICAgICAgICAnb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGJ5IHRoZSBmb2xsb3dpbmcgbmFtZSByZXNvbHV0aW9uIHJ1bGVzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1Jlc29sdXRpb24gb2YgbmFtZXNcbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAndmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55ICcKKyAgICAgICAgICAgJ2Jsb2Nrc1xuJworICAgICAgICAgICAnY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgJworICAgICAgICAgICAnaW50cm9kdWNlc1xuJworICAgICAgICAgICAnYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICdyYWlzZWQuIElmXG4nCisgICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSBpcyBhIGZ1bmN0aW9uIHNjb3BlLCBhbmQgdGhlIG5hbWUgcmVmZXJzIHRvIGEgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBib3VuZCB0byBhIHZhbHVlIGF0IHRoZSBwb2ludCB3aGVyZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ25hbWUgaXMgdXNlZCwgYW4gIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhIHN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssICcKKyAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiAgVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuJworICAgICAgICAgICAnZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbicKKyAgICAgICAgICAgJ2RldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSAnCisgICAgICAgICAgICdiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiB0aGUgImdsb2JhbCIgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuICBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCAnCisgICAgICAgICAgICduYW1lc3BhY2UgYnlcbicKKyAgICAgICAgICAgJ3NlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgJworICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICdvZiB0aGUgbW9kdWxlICJidWlsdGlucyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCAnCisgICAgICAgICAgICdmaXJzdC4gIElmXG4nCisgICAgICAgICAgICd0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuICAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJyJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIGNvcnJlc3BvbmRpbmcgbmFtZXMgdG8gcmVmZXIgdG9cbicKKyAgICAgICAgICAgJ3ByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBmdW5jdGlvbiAnCisgICAgICAgICAgICdzY29wZS5cbicKKyAgICAgICAgICAgJyJTeW50YXhFcnJvciIgaXMgcmFpc2VkIGF0IGNvbXBpbGUgdGltZSBpZiB0aGUgZ2l2ZW4gbmFtZSBkb2VzICcKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnZXhpc3QgaW4gYW55IGVuY2xvc2luZyBmdW5jdGlvbiBzY29wZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBmb3IgYSBtb2R1bGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgJ21vZHVsZSBpcyBpbXBvcnRlZC4gIFRoZSBtYWluIG1vZHVsZSBmb3IgYSBzY3JpcHQgaXMgYWx3YXlzICcKKyAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAnIl9fbWFpbl9fIi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbiBibG9ja3MgYW5kIGFyZ3VtZW50cyB0byAiZXhlYygpIiBhbmQgImV2YWwoKSIgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdzcGVjaWFsIGluIHRoZSBjb250ZXh0IG9mIG5hbWUgcmVzb2x1dGlvbi4gQSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICdleGVjdXRhYmxlIHN0YXRlbWVudCB0aGF0IG1heSB1c2UgYW5kIGRlZmluZSBuYW1lcy4gVGhlc2UgJworICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAnZm9sbG93IHRoZSBub3JtYWwgcnVsZXMgZm9yIG5hbWUgcmVzb2x1dGlvbiB3aXRoIGFuIGV4Y2VwdGlvbiAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICd1bmJvdW5kIGxvY2FsIHZhcmlhYmxlcyBhcmUgbG9va2VkIHVwIGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ25hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAndGhlIGNsYXNzLiBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhIGNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ3RoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZSBjb2RlIGJsb2NrcyBvZiBtZXRob2RzICcKKyAgICAgICAgICAgJy0tXG4nCisgICAgICAgICAgICd0aGlzIGluY2x1ZGVzIGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgc2luY2UgdGhleSAnCisgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgdGhlICcKKyAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAnd2lsbCBmYWlsOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdCdWlsdGlucyBhbmQgcmVzdHJpY3RlZCBleGVjdXRpb25cbicKKyAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluICcKKyAgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICAnb3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICciYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgJworICAgICAgICAgICAndXNlci1jcmVhdGVkXG4nCisgICAgICAgICAgICdkaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbicKKyAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICd0aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0ICcKKyAgICAgICAgICAgJ2NvbXBpbGVcbicKKyAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaSA9IDEwXG4nCisgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICcgICBpID0gNDJcbicKKyAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuICcKKyAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlICcKKyAgICAgICAgICAgJ2Z1bGxcbicKKyAgICAgICAgICAgJ2Vudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICdhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgJworICAgICAgICAgICAncmVzb2x2ZWRcbicKKyAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gICcKKyAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAnVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnbm9ubG9jYWwnOiAnXG4nCisgICAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG5vbmxvY2FsX3N0bXQgOjo9ICJub25sb2NhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIHRvIHJlZmVyICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlICcKKyAgICAgICAgICAgICAnZXhjbHVkaW5nXG4nCisgICAgICAgICAgICAgJ2dsb2JhbHMuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yICcKKyAgICAgICAgICAgICAnYmluZGluZyBpc1xuJworICAgICAgICAgICAgICd0byBzZWFyY2ggdGhlIGxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzXG4nCisgICAgICAgICAgICAgJ2VuY2Fwc3VsYXRlZCBjb2RlIHRvIHJlYmluZCB2YXJpYWJsZXMgb3V0c2lkZSBvZiB0aGUgbG9jYWwgJworICAgICAgICAgICAgICdzY29wZVxuJworICAgICAgICAgICAgICdiZXNpZGVzIHRoZSBnbG9iYWwgKG1vZHVsZSkgc2NvcGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCwgdW5saWtlIHRob3NlIGxpc3RlZCBpbiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50LCBtdXN0IHJlZmVyIHRvIHByZS1leGlzdGluZyBiaW5kaW5ncyBpbiBhblxuJworICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgJ2NyZWF0ZWRcbicKKyAgICAgICAgICAgICAnY2Fubm90IGJlIGRldGVybWluZWQgdW5hbWJpZ3VvdXNseSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggJworICAgICAgICAgICAgICdwcmUtXG4nCisgICAgICAgICAgICAgJ2V4aXN0aW5nIGJpbmRpbmdzIGluIHRoZSBsb2NhbCBzY29wZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAqKlBFUCAzMTA0KiogLSBBY2Nlc3MgdG8gTmFtZXMgaW4gT3V0ZXIgU2NvcGVzXG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAibm9ubG9jYWwiIHN0YXRlbWVudC5cbicsCisgJ251bWJlcnMnOiAnXG4nCisgICAgICAgICAgICAnTnVtZXJpYyBsaXRlcmFsc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogaW50ZWdlcnMsIGZsb2F0aW5nICcKKyAgICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICAgJ251bWJlcnMsIGFuZCBpbWFnaW5hcnkgbnVtYmVycy4gIFRoZXJlIGFyZSBubyBjb21wbGV4IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWwgbnVtYmVyIGFuZCBhblxuJworICAgICAgICAgICAgJ2ltYWdpbmFyeSBudW1iZXIpLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAnCisgICAgICAgICAgICAnIi0xIlxuJworICAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIFwnIi0iXCcgJworICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicsCisgJ251bWVyaWMtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAnTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCAnCisgICAgICAgICAgICAgICAgICAnYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICdub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSwgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fZmxvb3JkaXZfXygpIiBhbmQgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgJworICAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkIHRvIGFjY2VwdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ybHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yeG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgJworICAgICAgICAgICAgICAgICAgJyhzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhbmRzLiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5IGNhbGxlZCBpZiB0aGUgbGVmdCAnCisgICAgICAgICAgICAgICAgICAnb3BlcmFuZCBkb2VzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFszXSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYW5kcyBhcmUgb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgdHlwZXMuIFs0XSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCAtXG4nCisgICAgICAgICAgICAgICAgICAnICAgeSIsIHdoZXJlICp5KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICcKKyAgICAgICAgICAgICAgICAgICciX19yc3ViX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgJworICAgICAgICAgICAgICAgICAgJ3JldHVybnNcbicKKyAgICAgICAgICAgICAgICAgICcgICAqTm90SW1wbGVtZW50ZWQqLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCB0ZXJuYXJ5ICJwb3coKSIgd2lsbCBub3QgdHJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAgJyJfX3Jwb3dfXygpIiAodGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgIgorICAgICAgICAgICAgICAgICAgJ3JlZmxlY3RlZCBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ3RoZSBsZWZ0XG4nCisgICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyAiCisgICAgICAgICAgICAgICAgICAnc3ViY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAgIiAgICAgdG8gb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzJyBvcGVyYXRpb25zLlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50cyAoIis9IiwgIi09IiwgIio9IiwgIkA9IiwgIi89IiwgIi8vPSIsICIlPSIsICcKKyAgICAgICAgICAgICAgICAgICciKio9IixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgJ2F0dGVtcHQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAnICAgKHdoaWNoIGNvdWxkIGJlLCBidXQgZG9lcyBub3QgaGF2ZSB0byBiZSwgKnNlbGYqKS4gIElmIGEgJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmljXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgJworICAgICAgICAgICAgICAgICAgJ2JhY2sgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICAnYSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpdGggYW4gIl9faWFkZF9fKCkiIG1ldGhvZCwgInggKz0geSIgaXMgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICAnInggPVxuJworICAgICAgICAgICAgICAgICAgJyAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJ5Ll9fcmFkZF9fKHgpIiBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluICcKKyAgICAgICAgICAgICAgICAgICdjZXJ0YWluXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2l0dWF0aW9ucywgYXVnbWVudGVkIGFzc2lnbm1lbnQgY2FuIHJlc3VsdCBpbiAnCisgICAgICAgICAgICAgICAgICAndW5leHBlY3RlZCBlcnJvcnNcbicKKyAgICAgICAgICAgICAgICAgICIgICAoc2VlIFdoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gZXhjZXB0aW9uICIKKyAgICAgICAgICAgICAgICAgICd3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFkZGl0aW9uIHdvcmtzPyksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICcgICBtb2RlbC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWJzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnKCItIiwgIisiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJhYnMoKSIgYW5kICJ+IikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9hdF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbmRleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciAnCisgICAgICAgICAgICAgICAgICAnUHl0aG9uIG5lZWRzXG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3QgKHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVkLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicsCisgJ29iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICIqT2JqZWN0cyogYXJlIFB5dGhvbidzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSAiCisgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuICcKKyAgICAgICAgICAgICdvYmplY3RzLiAoSW5cbicKKyAgICAgICAgICAgICdhIHNlbnNlLCBhbmQgaW4gY29uZm9ybWFuY2UgdG8gVm9uIE5ldW1hbm5cJ3MgbW9kZWwgb2YgYSAic3RvcmVkXG4nCisgICAgICAgICAgICAncHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJFdmVyeSBvYmplY3QgaGFzIGFuIGlkZW50aXR5LCBhIHR5cGUgYW5kIGEgdmFsdWUuICBBbiBvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyppZGVudGl0eSogbmV2ZXIgY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgJworICAgICAgICAgICAgJ29mIGl0XG4nCisgICAgICAgICAgICAnYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciAnCisgICAgICAgICAgICAnY29tcGFyZXMgdGhlXG4nCisgICAgICAgICAgICAnaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSAiaWQoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG4nCisgICAgICAgICAgICAncmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCAiaWQoeCkiIGlzIHRoZSAnCisgICAgICAgICAgICAnbWVtb3J5XG4nCisgICAgICAgICAgICAnYWRkcmVzcyB3aGVyZSAieCIgaXMgc3RvcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIkFuIG9iamVjdCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3QgIgorICAgICAgICAgICAgJ3N1cHBvcnRzXG4nCisgICAgICAgICAgICAnKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgJworICAgICAgICAgICAgJ3ZhbHVlc1xuJworICAgICAgICAgICAgJ2ZvciBvYmplY3RzIG9mIHRoYXQgdHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuICcKKyAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgJ3R5cGUgKHdoaWNoIGlzIGFuIG9iamVjdCBpdHNlbGYpLiAgTGlrZSBpdHMgaWRlbnRpdHksIGFuICcKKyAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgJyp0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICp2YWx1ZSogb2Ygc29tZSBvYmplY3RzIGNhbiBjaGFuZ2UuICBPYmplY3RzIHdob3NlIHZhbHVlIGNhblxuJworICAgICAgICAgICAgJ2NoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgJworICAgICAgICAgICAgJ3VuY2hhbmdlYWJsZVxuJworICAgICAgICAgICAgJ29uY2UgdGhleSBhcmUgY3JlYXRlZCBhcmUgY2FsbGVkICppbW11dGFibGUqLiAoVGhlIHZhbHVlIG9mIGFuXG4nCisgICAgICAgICAgICAnaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhICcKKyAgICAgICAgICAgICdtdXRhYmxlXG4nCisgICAgICAgICAgICAib2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciAiCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uICcKKyAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgJ29iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuJworICAgICAgICAgICAgJ3N0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgJworICAgICAgICAgICAgJ3N1YnRsZS4pXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG4iCisgICAgICAgICAgICAnbnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyAnCisgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAnbGlzdHMgYXJlIG11dGFibGUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSAnCisgICAgICAgICAgICAnYmVjb21lXG4nCisgICAgICAgICAgICAndW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuJworICAgICAgICAgICAgJ2FsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gJworICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAnYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAncmVhY2hhYmxlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhICcKKyAgICAgICAgICAgICdyZWZlcmVuY2UtXG4nCisgICAgICAgICAgICAnY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5ICcKKyAgICAgICAgICAgICdsaW5rZWRcbicKKyAgICAgICAgICAgICdnYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxuJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbicKKyAgICAgICAgICAgICdjaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSAnCisgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAnaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuICcKKyAgICAgICAgICAgICdPdGhlclxuJworICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90ICcKKyAgICAgICAgICAgICdkZXBlbmRcbicKKyAgICAgICAgICAgICdvbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAnCisgICAgICAgICAgICAnKHNvXG4nCisgICAgICAgICAgICAneW91IHNob3VsZCBhbHdheXMgY2xvc2UgZmlsZXMgZXhwbGljaXRseSkuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbiIKKyAgICAgICAgICAgICdmYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSAnCisgICAgICAgICAgICAnY29sbGVjdGFibGUuXG4nCisgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuJworICAgICAgICAgICAgJ3N0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyAnCisgICAgICAgICAgICAnb3BlblxuJworICAgICAgICAgICAgJ2ZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSAnCisgICAgICAgICAgICAnZnJlZWRcbicKKyAgICAgICAgICAgICd3aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlICcKKyAgICAgICAgICAgICdjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnbm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICd3YXkgdG9cbicKKyAgICAgICAgICAgICdyZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuICcKKyAgICAgICAgICAgICdQcm9ncmFtc1xuJworICAgICAgICAgICAgJ2FyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuJworICAgICAgICAgICAgJ1wnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgYW5kIHRoZSBcJyJ3aXRoIlwnIHN0YXRlbWVudCAnCisgICAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICAgJ2NvbnZlbmllbnQgd2F5cyB0byBkbyB0aGlzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlICcKKyAgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgICcqY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG4nCisgICAgICAgICAgICAiZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXIncyB2YWx1ZS4gICIKKyAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgJ21vc3QgY2FzZXMsIHdoZW4gd2UgdGFsayBhYm91dCB0aGUgdmFsdWUgb2YgYSBjb250YWluZXIsIHdlIGltcGx5ICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICd2YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsICcKKyAgICAgICAgICAgICd3aGVuIHdlXG4nCisgICAgICAgICAgICAndGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnaW1tZWRpYXRlbHkgY29udGFpbmVkIG9iamVjdHMgYXJlIGltcGxpZWQuICBTbywgaWYgYW4gaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAnY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAnb2JqZWN0LCBpdHNcbicKKyAgICAgICAgICAgICd2YWx1ZSBjaGFuZ2VzIGlmIHRoYXQgbXV0YWJsZSBvYmplY3QgaXMgY2hhbmdlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG4nCisgICAgICAgICAgICAnaW1wb3J0YW5jZSBvZiBvYmplY3QgaWRlbnRpdHkgaXMgYWZmZWN0ZWQgaW4gc29tZSBzZW5zZTogZm9yICcKKyAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICd0eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbicKKyAgICAgICAgICAgICdyZWZlcmVuY2UgdG8gYW55IGV4aXN0aW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHR5cGUgYW5kIHZhbHVlLCAnCisgICAgICAgICAgICAnd2hpbGVcbicKKyAgICAgICAgICAgICdmb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciAiYSA9IDE7IGIgPSAnCisgICAgICAgICAgICAnMSIsXG4nCisgICAgICAgICAgICAnImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlICcKKyAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgJ29uZSwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGFmdGVyICJjID0gW107IGQgPSBbXSIsICcKKyAgICAgICAgICAgICciYyJcbicKKyAgICAgICAgICAgICdhbmQgImQiIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsIHVuaXF1ZSwgbmV3bHlcbicKKyAgICAgICAgICAgICdjcmVhdGVkIGVtcHR5IGxpc3RzLiAoTm90ZSB0aGF0ICJjID0gZCA9IFtdIiBhc3NpZ25zIHRoZSBzYW1lICcKKyAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICd0byBib3RoICJjIiBhbmQgImQiLilcbicsCisgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0b3IgcHJlY2VkZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2luIFB5dGhvbiwgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvd2VzdCBwcmVjZWRlbmNlIChsZWFzdCBiaW5kaW5nKSB0byBoaWdoZXN0IHByZWNlZGVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJyhtb3N0XG4nCisgICAgICAgICAgICAgICAgICAgICAnYmluZGluZykuICBPcGVyYXRvcnMgaW4gdGhlIHNhbWUgYm94IGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UuICBVbmxlc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdG9ycyBpblxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleHBvbmVudGlhdGlvbiwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICdncm91cHMgZnJvbSByaWdodCB0byBsZWZ0KS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgY29tcGFyaXNvbnMsIG1lbWJlcnNoaXAgdGVzdHMsIGFuZCBpZGVudGl0eSAnCisgICAgICAgICAgICAgICAgICAgICAndGVzdHMsIGFsbCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgaGF2ZSBhIGxlZnQtdG8tcmlnaHQgY2hhaW5pbmcgJworICAgICAgICAgICAgICAgICAgICAgJ2ZlYXR1cmUgYXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmliZWQgaW4gdGhlIENvbXBhcmlzb25zIHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPj0iLCAiIT0iLCAiPT0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAifCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiXiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiJiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiPDwiLCAiPj4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKyIsICItIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsaWNhdGlvbiwgbWF0cml4IG11bHRpcGxpY2F0aW9uIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uLCByZW1haW5kZXIgWzVdICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIreCIsICIteCIsICJ+eCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Bvc2l0aXZlLCBuZWdhdGl2ZSwgYml0d2lzZSBOT1QgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIqKiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0V4cG9uZW50aWF0aW9uIFs2XSAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJhd2FpdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0F3YWl0IGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ4W2luZGV4XSIsICJ4W2luZGV4OmluZGV4XSIsICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1N1YnNjcmlwdGlvbiwgc2xpY2luZywgY2FsbCwgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCB2YWx1ZS4uLn0iLCAie2V4cHJlc3Npb25zLi4ufSIgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMV0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGZsb2F0c1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpdCBtYXkgbm90IGJlIHRydWUgbnVtZXJpY2FsbHkgZHVlIHRvIHJvdW5kb2ZmLiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnSUVFRSA3NTQgZG91YmxlLVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIHRoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHNpZ24gYXMgIjFlMTAwIiwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyAiLTFlLTEwMCArICcKKyAgICAgICAgICAgICAgICAgICAgICcxZTEwMCIsIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gIjFlMTAwIi4gIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zICItMWUtMTAwIiBpbiAnCisgICAgICAgICAgICAgICAgICAgICAndGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbMl0gSWYgeCBpcyB2ZXJ5IGNsb3NlIHRvIGFuIGV4YWN0IGludGVnZXIgbXVsdGlwbGUgb2YgJworICAgICAgICAgICAgICAgICAgICAgInksIGl0J3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcG9zc2libGUgZm9yICJ4Ly95IiB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gJworICAgICAgICAgICAgICAgICAgICAgJyIoeC14JXkpLy95IiBkdWUgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN1bHQsIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5IiAnCisgICAgICAgICAgICAgICAgICAgICAnYmUgdmVyeSBjbG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0byAieCIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSAnCisgICAgICAgICAgICAgICAgICAgICAncG9pbnRzKiAoZS5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBVKzAwNDEpIGFuZCAqYWJzdHJhY3QgY2hhcmFjdGVycyogKGUuZy4gIkxBVElOICcKKyAgICAgICAgICAgICAgICAgICAgICdDQVBJVEFMIExFVFRFUiBBIikuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFdoaWxlIG1vc3QgYWJzdHJhY3QgY2hhcmFjdGVycyBpbiBVbmljb2RlIGFyZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgdGhhdCBjYW4gaW4gYWRkaXRpb24gYmUgcmVwcmVzZW50ZWQgdXNpbmcgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgbW9yZSB0aGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9uZSBjb2RlIHBvaW50LiAgRm9yIGV4YW1wbGUsIHRoZSBhYnN0cmFjdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICAgJyJMQVRJTlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICdhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAqcHJlY29tcG9zZWQgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uIFUrMDBDNywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FzIGEgc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb2YgYSAqYmFzZSBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMDQzIChMQVRJTiAnCisgICAgICAgICAgICAgICAgICAgICAnQ0FQSVRBTFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb2RlIHBvc2l0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFUrMDMyNyAoQ09NQklOSU5HIENFRElMTEEpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBUaGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgb24gc3RyaW5ncyBjb21wYXJlIGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGV2ZWwgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVW5pY29kZSBjb2RlIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgJworICAgICAgICAgICAgICAgICAgICAgJ3RvIGh1bWFucy4gIEZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBleGFtcGxlLCAiIlxcdTAwQzciID09ICJcXHUwMDQzXFx1MDMyNyIiIGlzICJGYWxzZSIsICcKKyAgICAgICAgICAgICAgICAgICAgICdldmVuIHRob3VnaCBib3RoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHN0cmluZ3MgcmVwcmVzZW50IHRoZSBzYW1lIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU4gJworICAgICAgICAgICAgICAgICAgICAgJ0NBUElUQUxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVG8gY29tcGFyZSBzdHJpbmdzIGF0IHRoZSBsZXZlbCBvZiBhYnN0cmFjdCAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyAodGhhdCBpcyxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW4gYSB3YXkgaW50dWl0aXZlIHRvIGh1bWFucyksIHVzZSAnCisgICAgICAgICAgICAgICAgICAgICAnInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGR5bmFtaWMgbmF0dXJlIG9mIGRlc2NyaXB0b3JzLCB5b3UgbWF5IG5vdGljZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VlbWluZ2x5IHVudXN1YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgbGlrZSAnCisgICAgICAgICAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW52b2x2aW5nIGNvbXBhcmlzb25zIGJldHdlZW4gaW5zdGFuY2UgbWV0aG9kcywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnN0YW50cy5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgQ2hlY2sgdGhlaXIgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s1XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7ICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBwcmVjZWRlbmNlIGFwcGxpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzZdIFRoZSBwb3dlciBvcGVyYXRvciAiKioiIGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAnCisgICAgICAgICAgICAgICAgICAgICAnIjIqKi0xIiBpcyAiMC41Ii5cbicsCisgJ3Bhc3MnOiAnXG4nCisgICAgICAgICAnVGhlICJwYXNzIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHBhc3Nfc3RtdCA6Oj0gInBhc3MiXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnInBhc3MiIGlzIGEgbnVsbCBvcGVyYXRpb24gLS0tIHdoZW4gaXQgaXMgZXhlY3V0ZWQsIG5vdGhpbmcgJworICAgICAgICAgJ2hhcHBlbnMuXG4nCisgICAgICAgICAnSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuJworICAgICAgICAgJ3N5bnRhY3RpY2FsbHksIGJ1dCBubyBjb2RlIG5lZWRzIHRvIGJlIGV4ZWN1dGVkLCBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGNsYXNzIEM6IHBhc3MgICAgICAgIyBhIGNsYXNzIHdpdGggbm8gbWV0aG9kcyAoeWV0KVxuJywKKyAncG93ZXInOiAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvclxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBwb3dlciBvcGVyYXRvciBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzXG4nCisgICAgICAgICAgJ2xlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICdzeW50YXggaXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBwb3dlciA6Oj0gKCBhd2FpdF9leHByIHwgcHJpbWFyeSApIFsiKioiIHVfZXhwcl1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdvcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgJworICAgICAgICAgICdjb25zdHJhaW5cbicKKyAgICAgICAgICAndGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbicKKyAgICAgICAgICAnZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0ICcKKyAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAncmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG9wZXJhbmRzICcKKyAgICAgICAgICAndW5sZXNzXG4nCisgICAgICAgICAgJ3RoZSBzZWNvbmQgYXJndW1lbnQgaXMgbmVnYXRpdmU7IGluIHRoYXQgY2FzZSwgYWxsIGFyZ3VtZW50cyBhcmVcbicKKyAgICAgICAgICAnY29udmVydGVkIHRvIGZsb2F0IGFuZCBhIGZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLFxuJworICAgICAgICAgICciMTAqKjIiIHJldHVybnMgIjEwMCIsIGJ1dCAiMTAqKi0yIiByZXR1cm5zICIwLjAxIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1JhaXNpbmcgIjAuMCIgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGEgJworICAgICAgICAgICciWmVyb0RpdmlzaW9uRXJyb3IiLlxuJworICAgICAgICAgICdSYWlzaW5nIGEgbmVnYXRpdmUgbnVtYmVyIHRvIGEgZnJhY3Rpb25hbCBwb3dlciByZXN1bHRzIGluIGEgJworICAgICAgICAgICciY29tcGxleCJcbicKKyAgICAgICAgICAnbnVtYmVyLiAoSW4gZWFybGllciB2ZXJzaW9ucyBpdCByYWlzZWQgYSAiVmFsdWVFcnJvciIuKVxuJywKKyAncmFpc2UnOiAnXG4nCisgICAgICAgICAgJ1RoZSAicmFpc2UiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCAicmFpc2UiIHJlLXJhaXNlcyB0aGUgbGFzdCAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICd0aGF0IHdhcyBhY3RpdmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBubyBleGNlcHRpb24gaXMgYWN0aXZlICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAndGhlIGN1cnJlbnQgc2NvcGUsIGEgIlJ1bnRpbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbmRpY2F0aW5nXG4nCisgICAgICAgICAgJ3RoYXQgdGhpcyBpcyBhbiBlcnJvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ090aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxuJworICAgICAgICAgICdvYmplY3QuICBJdCBtdXN0IGJlIGVpdGhlciBhIHN1YmNsYXNzIG9yIGFuIGluc3RhbmNlIG9mXG4nCisgICAgICAgICAgJyJCYXNlRXhjZXB0aW9uIi4gSWYgaXQgaXMgYSBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSB3aWxsIGJlXG4nCisgICAgICAgICAgJ29idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiVGhlICp0eXBlKiBvZiB0aGUgZXhjZXB0aW9uIGlzIHRoZSBleGNlcHRpb24gaW5zdGFuY2UncyBjbGFzcywgdGhlXG4iCisgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlIGluc3RhbmNlIGl0c2VsZi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiAnCisgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICdpcyByYWlzZWQgYW5kIGF0dGFjaGVkIHRvIGl0IGFzIHRoZSAiX190cmFjZWJhY2tfXyIgYXR0cmlidXRlLCAnCisgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgJ2lzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICdvbmUgc3RlcCB1c2luZyB0aGUgIndpdGhfdHJhY2ViYWNrKCkiIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoICcKKyAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICd0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzICcKKyAgICAgICAgICAnYXJndW1lbnQpLFxuJworICAgICAgICAgICdsaWtlIHNvOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgImZyb20iIGNsYXVzZSBpcyB1c2VkIGZvciBleGNlcHRpb24gY2hhaW5pbmc6IGlmIGdpdmVuLCB0aGUgJworICAgICAgICAgICdzZWNvbmRcbicKKyAgICAgICAgICAnKmV4cHJlc3Npb24qIG11c3QgYmUgYW5vdGhlciBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UsIHdoaWNoICcKKyAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICd0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSAiX19jYXVzZV9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcod2hpY2ggaXMgd3JpdGFibGUpLiAgSWYgdGhlIHJhaXNlZCBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQsIGJvdGhcbicKKyAgICAgICAgICAnZXhjZXB0aW9ucyB3aWxsIGJlIHByaW50ZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gdHJ5OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KDEgLyAwKVxuJworICAgICAgICAgICcgICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcmFpc2UgUnVudGltZUVycm9yKCJTb21ldGhpbmcgYmFkIGhhcHBlbmVkIikgZnJvbSBleGNcbicKKyAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAyLCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGUgYWJvdmUgZXhjZXB0aW9uIHdhcyB0aGUgZGlyZWN0IGNhdXNlIG9mIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICdleGNlcHRpb246XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIHNpbWlsYXIgbWVjaGFuaXNtIHdvcmtzIGltcGxpY2l0bHkgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCAnCisgICAgICAgICAgJ2luc2lkZVxuJworICAgICAgICAgICdhbiBleGNlcHRpb24gaGFuZGxlciBvciBhICJmaW5hbGx5IiBjbGF1c2U6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICd0aGVuIGF0dGFjaGVkIGFzIHRoZSBuZXcgZXhjZXB0aW9uXCdzICJfX2NvbnRleHRfXyIgYXR0cmlidXRlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgPj4+IHRyeTpcbicKKyAgICAgICAgICAnICAgLi4uICAgICBwcmludCgxIC8gMClcbicKKyAgICAgICAgICAnICAgLi4uIGV4Y2VwdDpcbicKKyAgICAgICAgICAnICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuJworICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ29jY3VycmVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDQsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICdUaGUgdHJ5IHN0YXRlbWVudC5cbicsCisgJ3JldHVybic6ICdcbicKKyAgICAgICAgICAgJ1RoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gJworICAgICAgICAgICAnZGVmaW5pdGlvbixcbicKKyAgICAgICAgICAgJ25vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgaXNcbicKKyAgICAgICAgICAgJ3N1YnN0aXR1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcicmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAnKG9yXG4nCisgICAgICAgICAgICciTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICcKKyAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0luIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvIGJlIHJhaXNlZC4gJworICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICdyZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuJworICAgICAgICAgICAnIlN0b3BJdGVyYXRpb24iIGFuZCBiZWNvbWVzIHRoZSAiU3RvcEl0ZXJhdGlvbi52YWx1ZSIgYXR0cmlidXRlLlxuJywKKyAnc2VxdWVuY2UtdHlwZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lciBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdDb250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpICcKKyAgICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyAnCisgICAgICAgICAgICAgICAgICAgJ3dlbGwuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAnb3IgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2FsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSAnCisgICAgICAgICAgICAgICAgICAgJ2sgPCBOIiB3aGVyZVxuJworICAgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgICAnZGVmaW5lIGFcbicKKyAgICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImNsZWFyKCkiLFxuJworICAgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAgICcidXBkYXRlKCkiXG4nCisgICAgICAgICAgICAgICAgICAgImJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvbidzIHN0YW5kYXJkIGRpY3Rpb25hcnkgIgorICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICdUaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciICcKKyAgICAgICAgICAgICAgICAgICAnYWJzdHJhY3QgYmFzZVxuJworICAgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fc2V0aXRlbV9fKCkiLCAiX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICAgJyJleHRlbmQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgJworICAgICAgICAgICAgICAgICAgICdsaWtlIFB5dGhvblxuJworICAgICAgICAgICAgICAgICAgICdzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnKG1lYW5pbmdcbicKKyAgICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgICAnIl9fcmFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciX19pYWRkX18oKSIsICJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiAnCisgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAgICdiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgJworICAgICAgICAgICAgICAgICAgICdJdCBpc1xuJworICAgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAgICdmb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3IgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciAnCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aFxuJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGUgIl9faXRlcl9fKCkiIG1ldGhvZCAnCisgICAgICAgICAgICAgICAgICAgJ3RvIGFsbG93XG4nCisgICAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAgICd0aHJvdWdoIHRoZSB2YWx1ZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5fXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gJworICAgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2xlbl9fKCkiIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAgICdjb250ZXh0LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IubGVuZ3RoX2hpbnQoKSIuIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciAnCisgICAgICAgICAgICAgICAgICAgJ29yIGxlc3MgdGhhblxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgJworICAgICAgICAgICAgICAgICAgICcwLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBpcyBwdXJlbHkgYW4gb3B0aW1pemF0aW9uIGFuZCBpcyBuZXZlciByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgICcgICBjb3JyZWN0bmVzcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ05vdGU6IFNsaWNpbmcgaXMgZG9uZSBleGNsdXNpdmVseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGhyZWUgJworICAgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICcgIEEgY2FsbCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3dpdGggIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2UgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLiAgTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2NsYXNzIHdpc2hlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgICdyYWlzZWQ7IGlmIG9mXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJyhhZnRlciBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAnCisgICAgICAgICAgICAgICAgICAgJyJJbmRleEVycm9yIiBzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgJworICAgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICcic2VsZltrZXldIiBmb3IgZGljdFxuJworICAgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ25vdGUgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yICcKKyAgICAgICAgICAgICAgICAgICAnaWYgbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzICcKKyAgICAgICAgICAgICAgICAgICAnaWYgZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zICcKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdhIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ2NhbiBpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gJworICAgICAgICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAgICcgICBvYmplY3RzLCBzZWUgSXRlcmF0b3IgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3JldmVyc2Ugb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAgICcicmV2ZXJzZWQoKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgcHJvdG9jb2xcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZSBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJyZXZlcnNlZCgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSAnCisgICAgICAgICAgICAgICAgICAgJ21vcmUgZWZmaWNpZW50XG4nCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ2Egc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgJworICAgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMsIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBvclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUga2V5LWl0ZW0gcGFpcnMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnbWVtYmVyc2hpcCB0ZXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRpb24gcHJvdG9jb2wgdmlhICJfX2dldGl0ZW1fXygpIiwgc2VlIHRoaXMgJworICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSByZWZlcmVuY2UuXG4nLAorICdzaGlmdGluZyc6ICdcbicKKyAgICAgICAgICAgICAnU2hpZnRpbmcgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2hpZnRpbmcgb3BlcmF0aW9ucyBoYXZlIGxvd2VyIHByaW9yaXR5IHRoYW4gdGhlIGFyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNoaWZ0X2V4cHIgOjo9IGFfZXhwciB8IHNoaWZ0X2V4cHIgKCAiPDwiIHwgIj4+IiApIGFfZXhwclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSAnCisgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdzZWNvbmQgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZmxvb3IgZGl2aXNpb24gYnkgJworICAgICAgICAgICAgICcicG93KDIsbikiLlxuJworICAgICAgICAgICAgICdBIGxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoICcKKyAgICAgICAgICAgICAnInBvdygyLG4pIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgcmVxdWlyZWQgdG8gYmUgYXQgbW9zdCAic3lzLm1heHNpemUiLiAgSWYgdGhlIHJpZ2h0LWhhbmQgJworICAgICAgICAgICAgICdvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAncmFpc2VkLlxuJywKKyAnc2xpY2luZ3MnOiAnXG4nCisgICAgICAgICAgICAgJ1NsaWNpbmdzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yICcKKyAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAndGFyZ2V0cyBpbiBhc3NpZ25tZW50IG9yICJkZWwiIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhICcKKyAgICAgICAgICAgICAnc2xpY2luZzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNpbmcgICAgICA6Oj0gcHJpbWFyeSAiWyIgc2xpY2VfbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAnICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNlX2l0ZW0gICA6Oj0gZXhwcmVzc2lvbiB8IHByb3Blcl9zbGljZVxuJworICAgICAgICAgICAgICcgICBwcm9wZXJfc2xpY2UgOjo9IFtsb3dlcl9ib3VuZF0gIjoiIFt1cHBlcl9ib3VuZF0gWyAiOiIgJworICAgICAgICAgICAgICdbc3RyaWRlXSBdXG4nCisgICAgICAgICAgICAgJyAgIGxvd2VyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcgICB1cHBlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCAnCisgICAgICAgICAgICAgJ2xvb2tzIGxpa2VcbicKKyAgICAgICAgICAgICAnYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSAnCisgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICdjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciAnCisgICAgICAgICAgICAgJ2NvbXBsaWNhdGluZyB0aGVcbicKKyAgICAgICAgICAgICAnc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuJworICAgICAgICAgICAgICdjb250YWlucyBubyBwcm9wZXIgc2xpY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHNlbWFudGljcyBmb3IgYSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgaXMgJworICAgICAgICAgICAgICdpbmRleGVkXG4nCisgICAgICAgICAgICAgJyh1c2luZyB0aGUgc2FtZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pICcKKyAgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAgJ2tleSB0aGF0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNsaWNlIGxpc3QsIGFzIGZvbGxvd3MuICBJZiB0aGUgJworICAgICAgICAgICAgICdzbGljZVxuJworICAgICAgICAgICAgICdsaXN0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBjb21tYSwgdGhlIGtleSBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAnbG9uZVxuJworICAgICAgICAgICAgICdzbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYSBwcm9wZXIgc2xpY2UgJworICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgJ3NsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KSB3aG9zZSAnCisgICAgICAgICAgICAgJyJzdGFydCIsXG4nCisgICAgICAgICAgICAgJyJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAgICAnZ2l2ZW5cbicKKyAgICAgICAgICAgICAnYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsIHJlc3BlY3RpdmVseSwgJworICAgICAgICAgICAgICdzdWJzdGl0dXRpbmdcbicKKyAgICAgICAgICAgICAnIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBBdHRyaWJ1dGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyAnCisgICAgICAgICAgICAgICAgICd0byBzZXZlcmFsXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgJworICAgICAgICAgICAgICAgICAnbm90IHJlcG9ydGVkXG4nCisgICAgICAgICAgICAgICAgICdieSB0aGUgImRpcigpIiBidWlsdC1pbiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGljdF9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICcgICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLl9fY2xhc3NfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX2Jhc2VzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi5fX25hbWVfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgbmFtZSBvZiB0aGUgY2xhc3MsIGZ1bmN0aW9uLCBtZXRob2QsIGRlc2NyaXB0b3IsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2dlbmVyYXRvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uX19xdWFsbmFtZV9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcywgZnVuY3Rpb24sIG1ldGhvZCwgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciwgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRvciBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX21yb19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLm1ybygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgJ2F0IGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVhY2ggY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHMgJworICAgICAgICAgICAgICAgICAnaW1tZWRpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFs8Y2xhc3MgJ2Jvb2wnPl1cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1sxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgJworICAgICAgICAgICAgICAgICAnZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKEJhc2ljIGN1c3RvbWl6YXRpb24pLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCBlcXVhbCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJbM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW4ndCB0ZWxsIHRoZSB0eXBlIG9mICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgIG9wZXJhbmRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNF0gQ2FzZWQgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICcgICAgYmVpbmcgb25lIG9mICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgIkxsIiAoTGV0dGVyLCAnCisgICAgICAgICAgICAgICAgICdsb3dlcmNhc2UpLFxuJworICAgICAgICAgICAgICAgICAnICAgIG9yICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzVdIFRvIGZvcm1hdCBvbmx5IGEgdHVwbGUgeW91IHNob3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgc2luZ2xldG9uIHR1cGxlIHdob3NlIG9ubHkgZWxlbWVudCBpcyB0aGUgdHVwbGUgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkLlxuJywKKyAnc3BlY2lhbG5hbWVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBtZXRob2QgbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICdzeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgJworICAgICAgICAgICAgICAgICAnc2xpY2luZykgYnlcbicKKyAgICAgICAgICAgICAgICAgImRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvbidzICIKKyAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvXG4nCisgICAgICAgICAgICAgICAgICcqb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3JcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgY2xhc3MsXG4nCisgICAgICAgICAgICAgICAgICd0aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gInR5cGUoeCkuX19nZXRpdGVtX18oeCwgJworICAgICAgICAgICAgICAgICAnaSkiLlxuJworICAgICAgICAgICAgICAgICAnRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIgb3IgIlR5cGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZXR0aW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gIk5vbmUiIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gaXMgbm90IGF2YWlsYWJsZS4gIEZvciBleGFtcGxlLCBpZiBhIGNsYXNzIHNldHMgJworICAgICAgICAgICAgICAgICAnIl9faXRlcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICd0byAiTm9uZSIsIHRoZSBjbGFzcyBpcyBub3QgaXRlcmFibGUsIHNvIGNhbGxpbmcgIml0ZXIoKSIgb24gJworICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2lsbCByYWlzZSBhICJUeXBlRXJyb3IiICh3aXRob3V0IGZhbGxpbmcgYmFjayB0b1xuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiKS4gWzJdXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gaW1wbGVtZW50aW5nIGEgY2xhc3MgdGhhdCBlbXVsYXRlcyBhbnkgYnVpbHQtaW4gdHlwZSwgJworICAgICAgICAgICAgICAgICAnaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2ltcG9ydGFudCB0aGF0IHRoZSBlbXVsYXRpb24gb25seSBiZSBpbXBsZW1lbnRlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnZGVncmVlIHRoYXQgaXRcbicKKyAgICAgICAgICAgICAgICAgJ21ha2VzIHNlbnNlIGZvciB0aGUgb2JqZWN0IGJlaW5nIG1vZGVsbGVkLiAgRm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJ3NvbWVcbicKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsIG9mIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnZWxlbWVudHMsIGJ1dFxuJworICAgICAgICAgICAgICAgICAnZXh0cmFjdGluZyBhIHNsaWNlIG1heSBub3QgbWFrZSBzZW5zZS4gIChPbmUgZXhhbXBsZSBvZiB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIHRoZVxuJworICAgICAgICAgICAgICAgICAnIk5vZGVMaXN0IiBpbnRlcmZhY2UgaW4gdGhlIFczQ1wncyBEb2N1bWVudCBPYmplY3QgTW9kZWwuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Jhc2ljIGN1c3RvbWl6YXRpb25cbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgJworICAgICAgICAgICAgICAgICAnYXMgc3VjaClcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgJworICAgICAgICAgICAgICAgICAnYXMgaXRzXG4nCisgICAgICAgICAgICAgICAgICcgICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgJworICAgICAgICAgICAgICAgICAndG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gICcKKyAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICcodXN1YWxseSBhblxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gJworICAgICAgICAgICAgICAgICAndGhlIG5ld1xuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiAnCisgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW9uLiAgSXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICcKKyAgICAgICAgICAgICAgICAgJyJfX25ld19fKCkiKSwgYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICcgICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MgaGFzIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLCBpZlxuJworICAgICAgICAgICAgICAgICAnICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyICcKKyAgICAgICAgICAgICAgICAgJ2luaXRpYWxpemF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICcgICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiAnCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3RpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byAnCisgICAgICAgICAgICAgICAgICdjdXN0b21pemVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgIl9faW5pdF9fKCkiOyAnCisgICAgICAgICAgICAgICAgICdkb2luZyBzb1xuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCwgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgY2FsbCBpdFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCAnCisgICAgICAgICAgICAgICAgICdhIGxhdGVyXG4nCisgICAgICAgICAgICAgICAgICcgICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCAnCisgICAgICAgICAgICAgICAgICdleGlzdCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSAnCisgICAgICAgICAgICAgICAgICd0aGUgZm9ybWVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdsYXR0ZXIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gICcKKyAgICAgICAgICAgICAgICAgJ1NvbWUgY29tbW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayAnCisgICAgICAgICAgICAgICAgICdmcmFtZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayAnCisgICAgICAgICAgICAgICAgICdzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhICcKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiAnCisgICAgICAgICAgICAgICAgICd1bmhhbmRsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgJworICAgICAgICAgICAgICAgICAndGhlIGN5Y2xlcztcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICd0aGlyZCBjYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuICcKKyAgICAgICAgICAgICAgICAgJ0NpcmN1bGFyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkICcKKyAgICAgICAgICAgICAgICAgJ3VwIHdoZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICIgICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdCdzIG9uIGJ5ICIKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHQpLiBSZWZlclxuJworICAgICAgICAgICAgICAgICAnICAgICB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgdG9waWMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciAnCisgICAgICAgICAgICAgICAgICdkdXJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCAnCisgICAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgICAnICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuICcKKyAgICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciX19kZWxfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3MgJworICAgICAgICAgICAgICAgICAnb2YgYmVpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgJworICAgICAgICAgICAgICAgICAnRm9yIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgJworICAgICAgICAgICAgICAgICAnbWluaW11bSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAnCisgICAgICAgICAgICAgICAgICcxLjUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgJworICAgICAgICAgICAgICAgICAnc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCAnCisgICAgICAgICAgICAgICAgICd0aGlzIG1heVxuJworICAgICAgICAgICAgICAgICAnICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgJworICAgICAgICAgICAgICAgICAnYXZhaWxhYmxlIGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJvZmZpY2lhbCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsICcKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgJ3VzZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICAgICAgICcgICAiPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPiIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgJworICAgICAgICAgICAgICAgICAncmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC4gSWYgYSBjbGFzcyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX3JlcHJfXygpIiBidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gJworICAgICAgICAgICAgICAgICAnImluZm9ybWFsIlxuJworICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N0cl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAic3RyKG9iamVjdCkiIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICcKKyAgICAgICAgICAgICAgICAgJyJmb3JtYXQoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAicHJpbnQoKSIgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBvciBuaWNlbHkgcHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgJworICAgICAgICAgICAgICAgICAndGhlcmUgaXMgbm9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb246IGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgJyJvYmplY3QiXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ieXRlc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uLCBhbmQgYnkgJworICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGlvbiBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhIHN0cmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgZGVzaXJlZC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsIGVpdGhlciAnCisgICAgICAgICAgICAgICAgICdkZWxlZ2F0ZVxuJworICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYSAnCisgICAgICAgICAgICAgICAgICdzaW1pbGFyXG4nCisgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFNlZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlIGZvciBhIGRlc2NyaXB0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiAnCisgICAgICAgICAgICAgICAgICdpdHNlbGZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAnInguX19sZV9fKHkpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgJworICAgICAgICAgICAgICAgICAnIng+eSIgY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAnCisgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiXG4nCisgICAgICAgICAgICAgICAgICcgICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyICcKKyAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgJworICAgICAgICAgICAgICAgICAnZm9yIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ2FueSB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAnCisgICAgICAgICAgICAgICAgICciYm9vbCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgJworICAgICAgICAgICAgICAgICAnZmFsc2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2ludmVydHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgJworICAgICAgICAgICAgICAgICAnaW1wbGllZFxuJworICAgICAgICAgICAgICAgICAnICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciAnCisgICAgICAgICAgICAgICAgICdleGFtcGxlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvICcKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpY2FsbHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiwgc2VlXG4nCisgICAgICAgICAgICAgICAgICcgICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgJ25vdGVzIG9uXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAnKHRvIGJlIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCAnCisgICAgICAgICAgICAgICAgICd0aGUgcmlnaHRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlICcKKyAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyAnCisgICAgICAgICAgICAgICAgICdyZWZsZWN0aW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiAnCisgICAgICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kJ3MgdHlwZSAiCisgICAgICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgICAgICIgICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksICcKKyAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgIGxlZnQgb3BlcmFuZCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsIHN1YmNsYXNzaW5nICIKKyAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAnICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAnCisgICAgICAgICAgICAgICAgICciZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSAnCisgICAgICAgICAgICAgICAgICd0aGUgaGFzaFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgJworICAgICAgICAgICAgICAgICAncGFydCBpblxuJworICAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgY3VzdG9tICJfX2hhc2hfXygpIiBtZXRob2QgdG8gdGhlIHNpemUgb2YgYSAnCisgICAgICAgICAgICAgICAgICciUHlfc3NpemVfdCIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGlzIHR5cGljYWxseSA4IGJ5dGVzIG9uIDY0LWJpdCBidWlsZHMgYW5kIDQgYnl0ZXMgb24gJworICAgICAgICAgICAgICAgICAnMzItYml0XG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgJworICAgICAgICAgICAgICAgICAnaW50ZXJvcGVyYXRlIG9uIGJ1aWxkc1xuJworICAgICAgICAgICAgICAgICAnICAgICBvZiBkaWZmZXJlbnQgYml0IHNpemVzLCBiZSBzdXJlIHRvIGNoZWNrIHRoZSB3aWR0aCBvbiAnCisgICAgICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc3VwcG9ydGVkIGJ1aWxkcy4gIEFuIGVhc3kgd2F5IHRvIGRvIHRoaXMgaXMgd2l0aCAnCisgICAgICAgICAgICAgICAgICcicHl0aG9uIC1jXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiAiX19lcV9fKCkiIG1ldGhvZCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbmUgYSAiX19oYXNoX18oKSIgb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19lcV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgYXMgJworICAgICAgICAgICAgICAgICAnaXRlbXMgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGUgb2JqZWN0cyAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudHMgYW4gIl9fZXFfXygpIiBtZXRob2QsIGl0IHNob3VsZCBub3QgaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uc1xuJworICAgICAgICAgICAgICAgICAiICAgcmVxdWlyZXMgdGhhdCBhIGtleSdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgIgorICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaGFzaFxuIgorICAgICAgICAgICAgICAgICAnICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIHN1Y2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09ICcKKyAgICAgICAgICAgICAgICAgJ2hhc2goeSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAnCisgICAgICAgICAgICAgICAgICciX19oYXNoX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gICcKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICAgJ2F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlclxuJworICAgICAgICAgICAgICAgICAnICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4nCisgICAgICAgICAgICAgICAgICcgICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgJworICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiICcKKyAgICAgICAgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSAnCisgICAgICAgICAgICAgICAgICdyYW5kb20gdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICAgICAnICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCAnCisgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhICcKKyAgICAgICAgICAgICAgICAgJ2RlbmlhbC1cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdleHBsb2l0IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSAnCisgICAgICAgICAgICAgICAgICdjb21wbGV4aXR5LlxuJworICAgICAgICAgICAgICAgICAnICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgJworICAgICAgICAgICAgICAgICAnZ3VhcmFudGVlc1xuJworICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgJzMyLWJpdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgJworICAgICAgICAgICAgICAgICAnZGVmYXVsdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21lYW5pbmcgb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAnIngubmFtZSIpIGZvclxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB1c3VhbCBwbGFjZXMgKGkuZS4gaXQgaXMgbm90IGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBub3IgaXMgJworICAgICAgICAgICAgICAgICAnaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnbmFtZS4gVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgbm9ybWFsICcKKyAgICAgICAgICAgICAgICAgJ21lY2hhbmlzbSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgJworICAgICAgICAgICAgICAgICAnYXN5bW1ldHJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBiZXR3ZWVuICJfX2dldGF0dHJfXygpIiBhbmQgIl9fc2V0YXR0cl9fKCkiLikgVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICJfX2dldGF0dHJfXygpIiAnCisgICAgICAgICAgICAgICAgICd3b3VsZCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICd0aGF0IGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCAnCisgICAgICAgICAgICAgICAgICdieSBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICcoYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgJworICAgICAgICAgICAgICAgICAnZ2V0IHRvdGFsXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgJworICAgICAgICAgICAgICAgICAnZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSAnCisgICAgICAgICAgICAgICAgICdyZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSAnCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICduZWVkcywgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlIHN5bnRheFxuJworICAgICAgICAgICAgICAgICAnICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSBTcGVjaWFsIG1ldGhvZCBsb29rdXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJyp2YWx1ZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgJworICAgICAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgJworICAgICAgICAgICAgICAgICAnb2JqLm5hbWUiIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJ211c3QgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhICcKKyAgICAgICAgICAgICAgICAgJ2xpc3QgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICBzb3J0cyBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgaW4gYW5cbicKKyAgICAgICAgICAgICAgICAgIipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lcidzICIKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgJ3BhcmVudHMpLiAgSW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgJ3dob3NlIG5hbWUgaXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAnCisgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICciTm9uZSIgd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgb3duZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGF0IHRoZSB0aW1lIHRoZSBvd25pbmcgY2xhc3MgKm93bmVyKiBpcyBjcmVhdGVkLiAnCisgICAgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAnZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGZvclxuJworICAgICAgICAgICAgICAgICAndW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ludm9raW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyJiaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAnaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QsIGl0XG4nCisgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2RlbGV0ZVxuJworICAgICAgICAgICAgICAgICAidGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgIgorICAgICAgICAgICAgICAgICAnImEueCIgaGFzIGFcbicKKyAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyBvZlxuJworICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3IgYW5kXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAnaG93IHRoZXkgd2VyZSBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgJworICAgICAgICAgICAgICAgICAnImEueCIuIEhvd1xuJworICAgICAgICAgICAgICAgICAndGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaXJlY3QgQ2FsbFxuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSAnCisgICAgICAgICAgICAgICAgICdkaXJlY3RseVxuJworICAgICAgICAgICAgICAgICAnICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5zdGFuY2UgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkICcKKyAgICAgICAgICAgICAgICAgJ2ludG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0NsYXNzIEJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgJworICAgICAgICAgICAgICAgICAnY2FsbDpcbicKKyAgICAgICAgICAgICAgICAgJyAgICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU3VwZXIgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgJworICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzICJBIlxuJworICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAnb24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICdjYW4gZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gIElmIGl0XG4nCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmQvb3JcbicKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgJ2JvdGhcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSAnCisgICAgICAgICAgICAgICAgICdqdXN0IHRoZVxuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIEluXG4nCisgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJjbGFzc21ldGhvZCgpIikgYXJlXG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgJworICAgICAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgICAgICdyZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHRvXG4nCisgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ0FjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJ3N0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gJworICAgICAgICAgICAgICAgICAnY3JlYXRpbmcgbGFyZ2VcbicKKyAgICAgICAgICAgICAgICAgJ251bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgJ2hvbGQgYVxuJworICAgICAgICAgICAgICAgICAndmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogJworICAgICAgICAgICAgICAgICAnaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICdjcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgJworICAgICAgICAgICAgICAgICAnb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgJworICAgICAgICAgICAgICAgICAnZWFjaFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJ35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ2Fzc2lnbmVkIG5ld1xuJworICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgJ0F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICcgIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAnCisgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAnICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuJworICAgICAgICAgICAgICAgICAnICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVjbGFyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9ycyAoSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKSBmb3IgZWFjaCB2YXJpYWJsZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiAgQXMgYVxuJworICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzICcKKyAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcykuXG4nCisgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgJworICAgICAgICAgICAgICAgICAnZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICcgIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAiaW50IiwgImJ5dGVzIiAnCisgICAgICAgICAgICAgICAgICdhbmQgInR1cGxlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBBbnkgbm9uLXN0cmluZyBpdGVyYWJsZSBtYXkgYmUgYXNzaWduZWQgdG8gKl9fc2xvdHNfXyouICcKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcgIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgbWVhbmluZyAnCisgICAgICAgICAgICAgICAgICdtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduZWQgdG8gdGhlIHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIGVhY2gga2V5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgd29ya3Mgb25seSBpZiBib3RoIGNsYXNzZXMgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbmV2ZXIgYSBjbGFzcyBpbmhlcml0cyBmcm9tIGFub3RoZXIgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJypfX2luaXRfc3ViY2xhc3NfXyogaXNcbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCBvbiB0aGF0IGNsYXNzLiBUaGlzIHdheSwgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyB3aGljaFxuJworICAgICAgICAgICAgICAgICAnY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBzdWJjbGFzc2VzLiBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCAnCisgICAgICAgICAgICAgICAgICd0byBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVjb3JhdG9ycywgYnV0IHdoZXJlIGNsYXNzIGRlY29yYXRvcnMgb25seSBhZmZlY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmljIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICd0aGV5XCdyZSBhcHBsaWVkIHRvLCAiX19pbml0X3N1YmNsYXNzX18iIHNvbGVseSBhcHBsaWVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ2Z1dHVyZVxuJworICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlcyBvZiB0aGUgY2xhc3MgZGVmaW5pbmcgdGhlIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3NtZXRob2Qgb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fKGNscylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb250YWluaW5nIGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZWQuXG4nCisgICAgICAgICAgICAgICAgICcgICAqY2xzKiBpcyB0aGVuIHRoZSBuZXcgc3ViY2xhc3MuIElmIGRlZmluZWQgYXMgYSBub3JtYWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgdGhpcyBtZXRob2QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBnaXZlbiB0byBhIG5ldyBjbGFzcyBhcmUgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcGFyZW50XCdzIGNsYXNzICJfX2luaXRfc3ViY2xhc3NfXyIuIEZvciBjb21wYXRpYmlsaXR5ICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzZXMgdXNpbmcgIl9faW5pdF9zdWJjbGFzc19fIiwgb25lIHNob3VsZCB0YWtlIG91dCAnCisgICAgICAgICAgICAgICAgICd0aGUgbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgb3RoZXJzIG92ZXIgdG8gdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MsIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgUGhpbG9zb3BoZXI6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgZGVmYXVsdF9uYW1lLCAnCisgICAgICAgICAgICAgICAgICcqKmt3YXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIGNscy5kZWZhdWx0X25hbWUgPSBkZWZhdWx0X25hbWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgY2xhc3MgQXVzdHJhbGlhblBoaWxvc29waGVyKFBoaWxvc29waGVyLCAnCisgICAgICAgICAgICAgICAgICdkZWZhdWx0X25hbWU9IkJydWNlIik6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiAib2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fIiAnCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdGhpbmcsXG4nCisgICAgICAgICAgICAgICAgICcgICBidXQgcmFpc2VzIGFuIGVycm9yIGlmIGl0IGlzIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSBtZXRhY2xhc3MgaGludCAibWV0YWNsYXNzIiBpcyBjb25zdW1lZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAncmVzdCBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgdHlwZSBtYWNoaW5lcnksIGFuZCBpcyBuZXZlciBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAnIl9faW5pdF9zdWJjbGFzc19fIlxuJworICAgICAgICAgICAgICAgICAnICAgICBpbXBsZW1lbnRhdGlvbnMuIFRoZSBhY3R1YWwgbWV0YWNsYXNzIChyYXRoZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaGludCkgY2FuIGJlIGFjY2Vzc2VkIGFzICJ0eXBlKGNscykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0YWNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYm9keSBpc1xuJworICAgICAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCAnCisgICAgICAgICAgICAgICAgICdsb2NhbGx5IHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAncmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgcGFzc2luZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgJworICAgICAgICAgICAgICAgICAnb3IgYnlcbicKKyAgICAgICAgICAgICAgICAgJ2luaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQuIEluXG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlc1xuJworICAgICAgICAgICAgICAgICAnb2YgIk1ldGEiOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICAgICAnYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICAnYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzICcKKyAgICAgICAgICAgICAgICAgJ29jY3VyOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RldGVybWluZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gJworICAgICAgICAgICAgICAgICAnInR5cGUoKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgdXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzcywgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5ICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mICcKKyAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lICcKKyAgICAgICAgICAgICAgICAgJ3doaWNoIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJ3N1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICd3aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsXG4nCisgICAgICAgICAgICAgICAgICdpdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCAnCisgICAgICAgICAgICAgICAgICdiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJyoqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCAnCisgICAgICAgICAgICAgICAgICdjb21lIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzcyBkZWZpbml0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgb3JkZXJlZCBtYXBwaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuJworICAgICAgICAgICAgICAgICAnICAgICBJbnRyb2R1Y2VkIHRoZSAiX19wcmVwYXJlX18iIG5hbWVzcGFjZSBob29rXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzICJleGVjKGJvZHksICcKKyAgICAgICAgICAgICAgICAgJ2dsb2JhbHMoKSxcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSkiLiBUaGUga2V5IGRpZmZlcmVuY2UgZnJvbSBhIG5vcm1hbCBjYWxsIHRvICcKKyAgICAgICAgICAgICAgICAgJyJleGVjKCkiIGlzIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJ2xleGljYWwgc2NvcGluZyBhbGxvd3MgdGhlIGNsYXNzIGJvZHkgKGluY2x1ZGluZyBhbnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcykgdG9cbicKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBuYW1lcyBmcm9tIHRoZSBjdXJyZW50IGFuZCBvdXRlciBzY29wZXMgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluc2lkZSBhIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIb3dldmVyLCBldmVuIHdoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gb2NjdXJzIGluc2lkZSB0aGUgJworICAgICAgICAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGRlZmluZWQgaW5zaWRlIHRoZSBjbGFzcyBzdGlsbCBjYW5ub3Qgc2VlIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBzY29wZS4gQ2xhc3MgdmFyaWFibGVzIG11c3QgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlciBvZiBpbnN0YW5jZSBvciBjbGFzcyBtZXRob2RzLCBhbmQgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VkIGF0IGFsbFxuJworICAgICAgICAgICAgICAgICAnZnJvbSBzdGF0aWMgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDcmVhdGluZyB0aGUgY2xhc3Mgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ09uY2UgdGhlIGNsYXNzIG5hbWVzcGFjZSBoYXMgYmVlbiBwb3B1bGF0ZWQgYnkgZXhlY3V0aW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnYm9keSwgdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgJworICAgICAgICAgICAgICAgICAnIm1ldGFjbGFzcyhuYW1lLCBiYXNlcyxcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSwgKiprd2RzKSIgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSAnCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAnYXMgdGhvc2UgcGFzc2VkIHRvICJfX3ByZXBhcmVfXyIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGlzIGNsYXNzIG9iamVjdCBpcyB0aGUgb25lIHRoYXQgd2lsbCBiZSByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICd6ZXJvLVxuJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZm9ybSBvZiAic3VwZXIoKSIuICJfX2NsYXNzX18iIGlzIGFuIGltcGxpY2l0ICcKKyAgICAgICAgICAgICAgICAgJ2Nsb3N1cmVcbicKKyAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2JvZHkgcmVmZXJcbicKKyAgICAgICAgICAgICAgICAgJ3RvIGVpdGhlciAiX19jbGFzc19fIiBvciAic3VwZXIiLiBUaGlzIGFsbG93cyB0aGUgemVybyAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmb3JtXG4nCisgICAgICAgICAgICAgICAgICdvZiAic3VwZXIoKSIgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2VkIG9uXG4nCisgICAgICAgICAgICAgICAgICdsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkICcKKyAgICAgICAgICAgICAgICAgJ3RvIG1ha2UgdGhlXG4nCisgICAgICAgICAgICAgICAgICdjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGEgbmV3IGNsYXNzIGlzIGNyZWF0ZWQgYnkgInR5cGUuX19uZXdfXyIsIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBuYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIG5ldyBvcmRlcmVkIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAnb3JpZ2luYWwgb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGlzIHdyYXBwZWQgaW4gYSAnCisgICAgICAgICAgICAgICAgICdyZWFkLW9ubHlcbicKKyAgICAgICAgICAgICAgICAgJ3Byb3h5LCB3aGljaCBiZWNvbWVzIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3MgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTM1KiogLSBOZXcgc3VwZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRGVzY3JpYmVzIHRoZSBpbXBsaWNpdCAiX19jbGFzc19fIiBjbG9zdXJlIHJlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGFjbGFzcyBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgJworICAgICAgICAgICAgICAgICAndGhhdCBoYXZlXG4nCisgICAgICAgICAgICAgICAgICdiZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCAnCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNcbicKKyAgICAgICAgICAgICAgICAgJ2RlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgJworICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrcywgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbicKKyAgICAgICAgICAgICAgICAgJyJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzXG4nCisgICAgICAgICAgICAgICAgICdhcmUgZGVmaW5lZDpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgT3JkZXJlZENsYXNzKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgQGNsYXNzbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgJworICAgICAgICAgICAgICAgICAnZGljdChuYW1lc3BhY2UpKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IEEubWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAiICAgKCdfX21vZHVsZV9fJywgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicpXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyAnCisgICAgICAgICAgICAgICAgICdiZWdpbnNcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzICJfX3ByZXBhcmVfXygpIiBtZXRob2Qgd2hpY2ggJworICAgICAgICAgICAgICAgICAncmV0dXJucyBhblxuJworICAgICAgICAgICAgICAgICAnZW1wdHkgImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0Ii4gIFRoYXQgbWFwcGluZyByZWNvcmRzIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGFuZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvZiAqQSogYXMgdGhleSBhcmUgZGVmaW5lZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQuIE9uY2UgdGhvc2UgZGVmaW5pdGlvbnMgYXJlIGV4ZWN1dGVkLCB0aGUgb3JkZXJlZCAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICdpcyBmdWxseSBwb3B1bGF0ZWQgYW5kIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgJ2dldHNcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgJworICAgICAgICAgICAgICAgICAnb3JkZXJlZFxuJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgIm1lbWJlcnMiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3NcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBpblxuJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgJworICAgICAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAgICAgJyJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAndHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0ICcKKyAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCAnCisgICAgICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAnCisgICAgICAgICAgICAgICAgICcobWV0YWNsYXNzKSBvZiBhXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnYWN0dWFsIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdhcmUgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICdvbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAnCisgICAgICAgICAgICAgICAgICciaXNpbnN0YW5jZSgpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uYWxpdHkgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAnCisgICAgICAgICAgICAgICAgICciYWJjIlxuJworICAgICAgICAgICAgICAgICAnICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ0NvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgJworICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgJyhsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgJworICAgICAgICAgICAgICAgICAnd2VsbC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAnZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICdlbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdhbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayAnCisgICAgICAgICAgICAgICAgICc8IE4iIHdoZXJlXG4nCisgICAgICAgICAgICAgICAgICcqTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZSBhXG4nCisgICAgICAgICAgICAgICAgICdyYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlIHRoZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiZ2V0KCkiLCAnCisgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsXG4nCisgICAgICAgICAgICAgICAgICcic2V0ZGVmYXVsdCgpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAnInVwZGF0ZSgpIlxuJworICAgICAgICAgICAgICAgICAiYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiAnCisgICAgICAgICAgICAgICAgICdhYnN0cmFjdCBiYXNlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgJworICAgICAgICAgICAgICAgICAnImV4dGVuZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgJworICAgICAgICAgICAgICAgICAnbGlrZSBQeXRob25cbicKKyAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ2FkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAnCisgICAgICAgICAgICAgICAgICcobWVhbmluZ1xuJworICAgICAgICAgICAgICAgICAncmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICcKKyAgICAgICAgICAgICAgICAgJyJfX3JhZGRfXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICAgICAgICAnYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0ICcKKyAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAnZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcywgaXRcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCAnCisgICAgICAgICAgICAgICAgICd0aGF0IGJvdGhcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvICcKKyAgICAgICAgICAgICAgICAgJ2FsbG93XG4nCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgJ1Nob3VsZCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgJworICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSIgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAnY29udGV4dC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybiBhblxuJworICAgICAgICAgICAgICAgICAnICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgJworICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gJworICAgICAgICAgICAgICAgICAnVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVjdG5lc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnICBBIGNhbGwgbGlrZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFbMToyXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICBpcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiAnCisgICAgICAgICAgICAgICAgICd3aXRoICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3IgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXMsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICAnCisgICAgICAgICAgICAgICAgICdOb3RlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyB3aXNoZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC4gSWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZDsgaWYgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICcoYWZ0ZXIgYW55XG4nCisgICAgICAgICAgICAgICAgICcgICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiAnCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAncmFpc2VkIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iICcKKyAgICAgICAgICAgICAgICAgJ2ZvciBkaWN0XG4nCisgICAgICAgICAgICAgICAgICcgICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgJworICAgICAgICAgICAgICAgICAnbmV3IGtleXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgJworICAgICAgICAgICAgICAgICAncmVwbGFjZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSAnCisgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiAnCisgICAgICAgICAgICAgICAgICdlbGVtZW50c1xuJworICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgJworICAgICAgICAgICAgICAgICAnc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5ICcKKyAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cywgc2VlIEl0ZXJhdG9yIFR5cGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgJworICAgICAgICAgICAgICAgICAnInJldmVyc2VkKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAnKCJfX2xlbl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICdwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgJworICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAicmV2ZXJzZWQoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgJ25vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSAnCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBudW1lcmljIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkICcKKyAgICAgICAgICAgICAgICAgJ2J5IHRoZVxuJworICAgICAgICAgICAgICAgICAncGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGZvclxuJworICAgICAgICAgICAgICAgICAnbm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICcKKyAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgJ3VzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICdyZWxhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAndG8gYWNjZXB0XG4nCisgICAgICAgICAgICAgICAgICcgICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkICcKKyAgICAgICAgICAgICAgICAgJyhzd2FwcGVkKVxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0ICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmQgZG9lc1xuJworICAgICAgICAgICAgICAgICAnICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIFszXSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhbmRzIGFyZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IHR5cGVzLiBbNF0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCAtXG4nCisgICAgICAgICAgICAgICAgICcgICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gJworICAgICAgICAgICAgICAgICAnIl9fcnN1Yl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QsICJ5Ll9fcnN1Yl9fKHgpIiBpcyBjYWxsZWQgaWYgInguX19zdWJfXyh5KSIgJworICAgICAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAnICAgKk5vdEltcGxlbWVudGVkKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICciX19ycG93X18oKSIgKHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29lcmNpb24gcnVsZXMgd291bGQgYmVjb21lIHRvbyBjb21wbGljYXRlZCkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSAiCisgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgIgorICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGZvciB0aGUgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgJworICAgICAgICAgICAgICAgICAndGhlIGxlZnRcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3MgIgorICAgICAgICAgICAgICAgICAnc3ViY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAiICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnMnIG9wZXJhdGlvbnMuXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgJworICAgICAgICAgICAgICAgICAnIioqPSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAnYXR0ZW1wdCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICd0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICcgICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWZpY1xuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgJworICAgICAgICAgICAgICAgICAnYmFjayB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ICcKKyAgICAgICAgICAgICAgICAgJz1cbicKKyAgICAgICAgICAgICAgICAgJyAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgJworICAgICAgICAgICAgICAgICAnInkuX19yYWRkX18oeCkiIGFyZVxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiAnCisgICAgICAgICAgICAgICAgICdjZXJ0YWluXG4nCisgICAgICAgICAgICAgICAgICcgICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgJworICAgICAgICAgICAgICAgICAnZXJyb3JzXG4nCisgICAgICAgICAgICAgICAgICIgICAoc2VlIFdoeSBkb2VzIGFfdHVwbGVbaV0gKz0gWydpdGVtJ10gcmFpc2UgYW4gZXhjZXB0aW9uICIKKyAgICAgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBhZGRpdGlvbiB3b3Jrcz8pLCBidXQgdGhpcyBiZWhhdmlvciBpcyBpbiBmYWN0IHBhcnQgb2YgJworICAgICAgICAgICAgICAgICAndGhlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGVsLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZWdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG9zX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Fic19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnZlcnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgKCItIiwgJworICAgICAgICAgICAgICAgICAnIisiLFxuJworICAgICAgICAgICAgICAgICAnICAgImFicygpIiBhbmQgIn4iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgJworICAgICAgICAgICAgICAgICAnImludCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAnICAgdHlwZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiBuZWVkc1xuJworICAgICAgICAgICAgICAgICAnICAgdG8gbG9zc2xlc3NseSBjb252ZXJ0IHRoZSBudW1lcmljIG9iamVjdCB0byBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCAoc3VjaFxuJworICAgICAgICAgICAgICAgICAnICAgYXMgaW4gc2xpY2luZywgb3IgaW4gdGhlIGJ1aWx0LWluICJiaW4oKSIsICJoZXgoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJvY3QoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICdudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QgaXMgYW4gaW50ZWdlciB0eXBlLiAgTXVzdCByZXR1cm4gYW4gaW50ZWdlci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogSW4gb3JkZXIgdG8gaGF2ZSBhIGNvaGVyZW50IGludGVnZXIgdHlwZSBjbGFzcywgJworICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCwgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGJvdGggc2hvdWxkIHJldHVybiB0aGUgc2FtZSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IHRvXG4nCisgICAgICAgICAgICAgICAgICdiZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgJ2hhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCAnCisgICAgICAgICAgICAgICAgICdydW50aW1lIGNvbnRleHRcbicKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyAnCisgICAgICAgICAgICAgICAgICdhcmUgbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQpLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgJworICAgICAgICAgICAgICAgICAncmVzdG9yaW5nIHZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAnY2xvc2luZyBvcGVuZWRcbicKKyAgICAgICAgICAgICAgICAgJ2ZpbGVzLCBldGMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSBDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgJ01hbmFnZXIgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VudGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICIgICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSAiCisgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlcnNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyB3aWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvICcKKyAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0ICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAncHJvY2Vzc2VkXG4nCisgICAgICAgICAgICAgICAgICcgICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgJworICAgICAgICAgICAgICAgICAncGFzc2VkLWluXG4nCisgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBsb29rdXBcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgY3VzdG9tIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICdhcmUgb25seVxuJworICAgICAgICAgICAgICAgICAiZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgJ25vdCBpblxuJworICAgICAgICAgICAgICAgICAidGhlIG9iamVjdCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgIgorICAgICAgICAgICAgICAgICAncmVhc29uIHdoeVxuJworICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlICdDJyBoYXMgbm8gbGVuKClcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBieVxuJworICAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgJworICAgICAgICAgICAgICAgICAnb2YgdGhlc2VcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ZhaWwgd2hlblxuJworICAgICAgICAgICAgICAgICAnaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgJ19faGFzaF9fJyBvZiAnaW50JyBvYmplY3QgbmVlZHMgYW4gIgorICAgICAgICAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbiB0aGlzXG4nCisgICAgICAgICAgICAgICAgICJ3YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzICdtZXRhY2xhc3MgY29uZnVzaW9uJywgYW5kICIKKyAgICAgICAgICAgICAgICAgJ2lzIGF2b2lkZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyZXN0IG9mXG4nCisgICAgICAgICAgICAgICAgICdjb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvICcKKyAgICAgICAgICAgICAgICAgJ2J5cGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICd0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyAnCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IEMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgJworICAgICAgICAgICAgICAgICAndHlwZVxuJworICAgICAgICAgICAgICAgICAnICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVzXG4nCisgICAgICAgICAgICAgICAgICdzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyLCBhdFxuJworICAgICAgICAgICAgICAgICAndGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzICh0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gJworICAgICAgICAgICAgICAgICAnb3JkZXIgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG4nLAorICdzdHJpbmctbWV0aG9kcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5nIE1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIHNlcXVlbmNlIG9wZXJhdGlvbnMsICcKKyAgICAgICAgICAgICAgICAgICAnYWxvbmcgd2l0aFxuJworICAgICAgICAgICAgICAgICAgICd0aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGluZyBhXG4nCisgICAgICAgICAgICAgICAgICAgJ2xhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlICcKKyAgICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBTdHJpbmcgU3ludGF4IGFuZCBDdXN0b20gU3RyaW5nIEZvcm1hdHRpbmcpIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgICdvdGhlciBiYXNlZFxuJworICAgICAgICAgICAgICAgICAgICdvbiBDICJwcmludGYiIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgJworICAgICAgICAgICAgICAgICAgICdyYW5nZSBvZiB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgICdhbmQgaXMgc2xpZ2h0bHkgaGFyZGVyIHRvIHVzZSBjb3JyZWN0bHksIGJ1dCBpcyBvZnRlbiAnCisgICAgICAgICAgICAgICAgICAgJ2Zhc3RlciBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2Nhc2VzIGl0IGNhbiBoYW5kbGUgKHByaW50Zi1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZykuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkICcKKyAgICAgICAgICAgICAgICAgICAnbGlicmFyeSBjb3ZlcnMgYVxuJworICAgICAgICAgICAgICAgICAgICdudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgJworICAgICAgICAgICAgICAgICAgICd1dGlsaXRpZXNcbicKKyAgICAgICAgICAgICAgICAgICAnKGluY2x1ZGluZyByZWd1bGFyIGV4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgInJlIiAnCisgICAgICAgICAgICAgICAgICAgJ21vZHVsZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FwaXRhbGl6ZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAnY2FwaXRhbGl6ZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2FzZWZvbGQoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzIG1heSBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2VkIGZvciBjYXNlbGVzcyBtYXRjaGluZy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhc2Vmb2xkaW5nIGlzIHNpbWlsYXIgdG8gbG93ZXJjYXNpbmcgYnV0IG1vcmUgJworICAgICAgICAgICAgICAgICAgICdhZ2dyZXNzaXZlIGJlY2F1c2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5nLiBGb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgdGhlIEdlcm1hbiBsb3dlcmNhc2UgbGV0dGVyICJcJ8OfXCciIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAiInNzIiIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCAibG93ZXIoKSIgd291bGQgZG8gJworICAgICAgICAgICAgICAgICAgICdub3RoaW5nIHRvICJcJ8OfXCciO1xuJworICAgICAgICAgICAgICAgICAgICcgICAiY2FzZWZvbGQoKSIgY29udmVydHMgaXQgdG8gIiJzcyIiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzICcKKyAgICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICAnaXMgZG9uZVxuJworICAgICAgICAgICAgICAgICAgICcgICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYW4gQVNDSUkgJworICAgICAgICAgICAgICAgICAgICdzcGFjZSkuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgJworICAgICAgICAgICAgICAgICAgICdlcXVhbCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnKnN0YXJ0KiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgYXMgYSBieXRlcyAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC4gRGVmYXVsdFxuJworICAgICAgICAgICAgICAgICAgICcgICBlbmNvZGluZyBpcyAiXCd1dGYtOFwnIi4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhICcKKyAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnIlwnc3RyaWN0XCciLFxuJworICAgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuICcKKyAgICAgICAgICAgICAgICAgICAnT3RoZXIgcG9zc2libGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSAiXCdpZ25vcmVcJyIsICJcJ3JlcGxhY2VcJyIsICcKKyAgICAgICAgICAgICAgICAgICAnIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJ2JhY2tzbGFzaHJlcGxhY2VcJyIgYW5kIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgJworICAgICAgICAgICAgICAgICAgICd2aWFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gRXJyb3IgSGFuZGxlcnMuICcKKyAgICAgICAgICAgICAgICAgICAnRm9yIGEgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uIFN0YW5kYXJkIEVuY29kaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnYWRkZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAnCisgICAgICAgICAgICAgICAgICAgJypzdWZmaXgqLFxuJworICAgICAgICAgICAgICAgICAgICcgICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlICcKKyAgICAgICAgICAgICAgICAgICAnb2Ygc3VmZml4ZXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5leHBhbmR0YWJzKHRhYnNpemU9OClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVwbGFjZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2ICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHNvIG9uKS5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgJworICAgICAgICAgICAgICAgICAgICdpbiB0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi4gKFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdpcyBhIG5ld2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbHVtbiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzQnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoNClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJzAxICAwMTIgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyAqc3RhcnQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gJworICAgICAgICAgICAgICAgICAgICciLTEiIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpzdWIqIGlzIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgJworICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGtub3dcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIG9yIG5vdCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICAgID4+PiAnUHknIGluICdQeXRob24nXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiAnCisgICAgICAgICAgICAgICAgICAgJ3doaWNoIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgJworICAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCBmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuJworICAgICAgICAgICAgICAgICAgICIgICAnVGhlIHN1bSBvZiAxICsgMiBpcyAzJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTdHJpbmcgU3ludGF4IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdF9tYXAobWFwcGluZylcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNpbWlsYXIgdG8gInN0ci5mb3JtYXQoKiptYXBwaW5nKSIsIGV4Y2VwdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnIm1hcHBpbmciIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCBpZiAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciBleGFtcGxlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJtYXBwaW5nIiBpcyBhIGRpY3Qgc3ViY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgRGVmYXVsdChkaWN0KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7bmFtZX0gd2FzIGJvcm4gaW4gIgorICAgICAgICAgICAgICAgICAgICJ7Y291bnRyeX0nLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPSdHdWlkbycpKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbG51bSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhbnVtZXJpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciAiYyJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgJworICAgICAgICAgICAgICAgICAgICciVHJ1ZSI6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjLmlzYWxwaGEoKSIsICJjLmlzZGVjaW1hbCgpIiwgImMuaXNkaWdpdCgpIiwgb3IgJworICAgICAgICAgICAgICAgICAgICciYy5pc251bWVyaWMoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbHBoYSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhYmV0aWMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gICcKKyAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJlaW5nIG9uZSBvZiAiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCBvciAiTG8iLiAgTm90ZSAnCisgICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhpcyBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2RlY2ltYWwoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdEZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGZyb20gZ2VuZXJhbCBjYXRlZ29yeSAiTmQiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuICcKKyAgICAgICAgICAgICAgICAgICAnYmUgdXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyAnCisgICAgICAgICAgICAgICAgICAgJ0RJR0lUIFpFUk8uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNkaWdpdCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlcmUgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzICcKKyAgICAgICAgICAgICAgICAgICAnaW5jbHVkZSBkZWNpbWFsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb21wYXRpYmlsaXR5IHN1cGVyc2NyaXB0IGRpZ2l0cy4gIEZvcm1hbGx5LCBhIGRpZ2l0IGlzICcKKyAgICAgICAgICAgICAgICAgICAnYSBjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBOdW1lcmljX1R5cGU9RGVjaW1hbC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2lkZW50aWZpZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgJworICAgICAgICAgICAgICAgICAgICdhY2NvcmRpbmcgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIGRlZmluaXRpb24sIHNlY3Rpb24gSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCAnCisgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIHN1Y2ggYXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImRlZiIgYW5kICJjbGFzcyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNsb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSBsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzbnVtZXJpYygpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gJworICAgICAgICAgICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICd0aGF0IGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiAnCisgICAgICAgICAgICAgICAgICAgJ0ZSQUNUSU9OXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0LCBOdW1lcmljX1R5cGU9RGVjaW1hbCAnCisgICAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzcHJpbnRhYmxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAncHJpbnRhYmxlIG9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdkYXRhYmFzZSBhc1xuJworICAgICAgICAgICAgICAgICAgICcgICAiT3RoZXIiIG9yICJTZXBhcmF0b3IiLCBleGNlcHRpbmcgdGhlIEFTQ0lJIHNwYWNlICcKKyAgICAgICAgICAgICAgICAgICAnKDB4MjApIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gJworICAgICAgICAgICAgICAgICAgICcicmVwcigpIiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nICcKKyAgICAgICAgICAgICAgICAgICAnb2Ygc3RyaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcgICB3cml0dGVuIHRvICJzeXMuc3Rkb3V0IiBvciAic3lzLnN0ZGVyciIuKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzc3BhY2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgJworICAgICAgICAgICAgICAgICAgICdXaGl0ZXNwYWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGF0YWJhc2UgYXMgIk90aGVyIiBvciAiU2VwYXJhdG9yIiBhbmQgdGhvc2Ugd2l0aCAnCisgICAgICAgICAgICAgICAgICAgJ2JpZGlyZWN0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzdGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHRpdGxlY2FzZWQgc3RyaW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGlzIGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnbWF5IG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSAnCisgICAgICAgICAgICAgICAgICAgJ2Nhc2VkIG9uZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBmYWxzZSBvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXN1cHBlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSB1cHBlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmpvaW4oaXRlcmFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5ncyBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZXJlIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZyBwcm92aWRpbmcgJworICAgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgICAgJyp3aWR0aCouXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICdpcyBhbiBBU0NJSVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2xlc3MgdGhhbiBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sb3dlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBbNF1cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBsb3dlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJzMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubHN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAncHJlZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5sc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnc3BhY2lvdXMgICAnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5sc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlLmNvbSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgJworICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInN0ci50cmFuc2xhdGUoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnbGVuZ3RoIDEpIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciAnCisgICAgICAgICAgICAgICAgICAgJ05vbmUuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgJworICAgICAgICAgICAgICAgICAgICdlcXVhbCBsZW5ndGgsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggJworICAgICAgICAgICAgICAgICAgICd3aWxsIGJlIG1hcHBlZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGEgdGhpcmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBOb25lIGluIHRoZSByZXN1bHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucGFydGl0aW9uKHNlcClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHdvIGVtcHR5IHN0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyAqb2xkKlxuJworICAgICAgICAgICAgICAgICAgICcgICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZ2l2ZW4sIG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICcqc3ViKiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gJworICAgICAgICAgICAgICAgICAgICcic1tzdGFydDplbmRdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyAnCisgICAgICAgICAgICAgICAgICAgJ2luIHNsaWNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgb24gZmFpbHVyZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggJworICAgICAgICAgICAgICAgICAgICcqd2lkdGgqLlxuJworICAgICAgICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYW4gQVNDSUlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgJworICAgICAgICAgICAgICAgICAgICdsZXNzIHRoYW4gb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnBhcnRpdGlvbihzZXApXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3IgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsICcKKyAgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIHN0cmluZyBpdHNlbGYuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqICcKKyAgICAgICAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICAgICAgICcqbWF4c3BsaXQqIHNwbGl0c1xuJworICAgICAgICAgICAgICAgICAgICcgICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgJworICAgICAgICAgICAgICAgICAgICdmb3Igc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZyb20gdGhlIHJpZ2h0LCAicnNwbGl0KCkiIGJlaGF2ZXMgbGlrZSAic3BsaXQoKSIgd2hpY2ggJworICAgICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJzdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgJworICAgICAgICAgICAgICAgICAgICdzdWZmaXg7IHJhdGhlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLnJzdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICcgICBzcGFjaW91cydcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdtaXNzaXNzaXBwaScucnN0cmlwKCdpcHonKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnbWlzc2lzcydcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyptYXhzcGxpdCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyJtYXhzcGxpdCsxIlxuJworICAgICAgICAgICAgICAgICAgICcgICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgJworICAgICAgICAgICAgICAgICAgICd0aGVuIHRoZXJlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIG1hZGUpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ2dyb3VwZWQgdG9nZXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnMSwsMlwnLnNwbGl0KFwnLFwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJ1wnLCAnCisgICAgICAgICAgICAgICAgICAgJ1wnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJzJcJywgJworICAgICAgICAgICAgICAgICAgICdcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICcKKyAgICAgICAgICAgICAgICAgICAnIltcJ1wnXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLDMnLnNwbGl0KCcsJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLDMnLnNwbGl0KCcsJywgbWF4c3BsaXQ9MSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzIsMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnMSwyLCwzLCcuc3BsaXQoJywnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICcnLCAnMycsICcnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyAiTm9uZSIsIGEgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICAgICAgICAnc3BsaXR0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVnYXJkZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gJworICAgICAgICAgICAgICAgICAgICdlbXB0eSBzdHJpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciAnCisgICAgICAgICAgICAgICAgICAgJ3RyYWlsaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgJworICAgICAgICAgICAgICAgICAgICdhIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybnMgIltdIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxIDIgMycuc3BsaXQoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxIDIgMycuc3BsaXQobWF4c3BsaXQ9MSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzIgMyddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgMSAgIDIgICAzICAgJy5zcGxpdCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdyZXN1bHRpbmcgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNwbGl0cyBvbiB0aGUgZm9sbG93aW5nIGxpbmUgYm91bmRhcmllcy4gICcKKyAgICAgICAgICAgICAgICAgICAnSW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcGFydGljdWxhciwgdGhlIGJvdW5kYXJpZXMgYXJlIGEgc3VwZXJzZXQgb2YgKnVuaXZlcnNhbCAnCisgICAgICAgICAgICAgICAgICAgJ25ld2xpbmVzKi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxyIiAgICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSAnCisgICAgICAgICAgICAgICAgICAgJ1JldHVybiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnVGFidWxhdGlvbiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWUiICAgICAgICAgICAgICAgICAgfCBSZWNvcmQgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCAnCisgICAgICAgICAgICAgICAgICAgJ0NvZGUpICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx1MjAyOSIgICAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3QgJworICAgICAgICAgICAgICAgICAgICdvZiBsaW5lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJvdW5kYXJpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG4nLnNwbGl0bGluZXMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ2FiIGMnLCAnJywgJ2RlIGZnJywgJ2tsJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdhYiBjXFxuXFxuZGUgIgorICAgICAgICAgICAgICAgICAgICJmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnYWIgY1xcbicsICdcXG4nLCAnZGUgZmdcXHInLCAna2xcXHJcXG4nXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2dpdmVuLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ2EgdGVybWluYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnT25lIGxpbmUnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJycuc3BsaXQoJ1xcbicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdUd28gbGluZXNcXG4nLnNwbGl0KCdcXG4nKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJ1R3byBsaW5lcycsICcnXVxuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4KiwgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJGYWxzZSIuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gJworICAgICAgICAgICAgICAgICAgICdsb29rIGZvci5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICcgICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsICcKKyAgICAgICAgICAgICAgICAgICAndGhlICpjaGFycypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLnN0cmlwKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ3NwYWNpb3VzJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ3d3dy5leGFtcGxlLmNvbScuc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdleGFtcGxlJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIG91dGVybW9zdCBsZWFkaW5nIGFuZCB0cmFpbGluZyAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZCBmcm9tIHRoZSBzdHJpbmcuIENoYXJhY3RlcnMgYXJlIHJlbW92ZWQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgJ3RoZSBsZWFkaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVuZCB1bnRpbCByZWFjaGluZyBhIHN0cmluZyBjaGFyYWN0ZXIgdGhhdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNldCBvZiBjaGFyYWN0ZXJzIGluICpjaGFycyouIEEgc2ltaWxhciBhY3Rpb24gdGFrZXMgJworICAgICAgICAgICAgICAgICAgICdwbGFjZSBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdHJhaWxpbmcgZW5kLiBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjb21tZW50X3N0cmluZyA9ICcjLi4uLi4uLiBTZWN0aW9uIDMuMi4xIElzc3VlICIKKyAgICAgICAgICAgICAgICAgICAiIzMyIC4uLi4uLi4nXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjb21tZW50X3N0cmluZy5zdHJpcCgnLiMhICcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdTZWN0aW9uIDMuMi4xIElzc3VlICMzMidcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5zd2FwY2FzZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgICduZWNlc3NhcmlseSB0cnVlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHMiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnRpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzICcKKyAgICAgICAgICAgICAgICAgICAnc3RhcnQgd2l0aCBhblxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbG93ZXJjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ0hlbGxvIHdvcmxkJy50aXRsZSgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdIZWxsbyBXb3JsZCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gJworICAgICAgICAgICAgICAgICAgICd3b3JrcyBpblxuJworICAgICAgICAgICAgICAgICAgICcgICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluICcKKyAgICAgICAgICAgICAgICAgICAnY29udHJhY3Rpb25zIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgJworICAgICAgICAgICAgICAgICAgICdkZXNpcmVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyAnCisgICAgICAgICAgICAgICAgICAgJ3JlZ3VsYXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXhwcmVzc2lvbnM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gaW1wb3J0IHJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi4gICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86ICcKKyAgICAgICAgICAgICAgICAgICAnbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAnbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBzKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnRyYW5zbGF0ZSh0YWJsZSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBpbiB3aGljaCBlYWNoIGNoYXJhY3RlciBoYXMgJworICAgICAgICAgICAgICAgICAgICdiZWVuIG1hcHBlZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4gIFRoZSB0YWJsZSBtdXN0IGJlICcKKyAgICAgICAgICAgICAgICAgICAnYW4gb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgaW1wbGVtZW50cyBpbmRleGluZyB2aWEgIl9fZ2V0aXRlbV9fKCkiLCB0eXBpY2FsbHkgJworICAgICAgICAgICAgICAgICAgICdhICptYXBwaW5nKlxuJworICAgICAgICAgICAgICAgICAgICcgICBvciAqc2VxdWVuY2UqLiAgV2hlbiBpbmRleGVkIGJ5IGEgVW5pY29kZSBvcmRpbmFsIChhbiAnCisgICAgICAgICAgICAgICAgICAgJ2ludGVnZXIpLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGFibGUgb2JqZWN0IGNhbiBkbyBhbnkgb2YgdGhlIGZvbGxvd2luZzogcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAgICdVbmljb2RlIG9yZGluYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3IgYSBzdHJpbmcsIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIG9uZSBvciBtb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycztcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuICJOb25lIiwgdG8gZGVsZXRlIHRoZSBjaGFyYWN0ZXIgZnJvbSB0aGUgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5nOyBvclxuJworICAgICAgICAgICAgICAgICAgICcgICByYWlzZSBhICJMb29rdXBFcnJvciIgZXhjZXB0aW9uLCB0byBtYXAgdGhlIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgJ3RvIGl0c2VsZi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFlvdSBjYW4gdXNlICJzdHIubWFrZXRyYW5zKCkiIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnbWFwIGZyb21cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNlZSBhbHNvIHRoZSAiY29kZWNzIiBtb2R1bGUgZm9yIGEgbW9yZSBmbGV4aWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvIGN1c3RvbVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgbWFwcGluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIudXBwZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgWzRdXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgJworICAgICAgICAgICAgICAgICAgICcic3RyLnVwcGVyKCkuaXN1cHBlcigpIiBtaWdodCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICAiRmFsc2UiIGlmICJzIiBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAnCisgICAgICAgICAgICAgICAgICAgJyhMZXR0ZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJzMuMTMgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgU3RhbmRhcmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuemZpbGwod2lkdGgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCBBU0NJSSAnCisgICAgICAgICAgICAgICAgICAgJyJcJzBcJyIgZGlnaXRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1ha2UgYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIEEgbGVhZGluZyBzaWduIHByZWZpeFxuJworICAgICAgICAgICAgICAgICAgICcgICAoIlwnK1wnIi8iXCctXCciKSBpcyBoYW5kbGVkIGJ5IGluc2VydGluZyB0aGUgcGFkZGluZyAnCisgICAgICAgICAgICAgICAgICAgJyphZnRlciogdGhlIHNpZ25cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIHJhdGhlciB0aGFuIGJlZm9yZS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIjQyIi56ZmlsbCg1KVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICAnMDAwNDInXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiLTQyIi56ZmlsbCg1KVxuJworICAgICAgICAgICAgICAgICAgICIgICAgICAnLTAwNDInXG4iLAorICdzdHJpbmdzJzogJ1xuJworICAgICAgICAgICAgJ1N0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbicKKyAgICAgICAgICAgICcgICBzdHJpbmdwcmVmaXggICAgOjo9ICJyIiB8ICJ1IiB8ICJSIiB8ICJVIiB8ICJmIiB8ICJGIlxuJworICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgfCAiZnIiIHwgIkZyIiB8ICJmUiIgfCAiRlIiIHwgInJmIiB8ICJyRiIgfCAnCisgICAgICAgICAgICAnIlJmIiB8ICJSRiJcbicKKyAgICAgICAgICAgICcgICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgJworICAgICAgICAgICAgJ3Nob3J0c3RyaW5naXRlbSogXCciXCdcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8ICcKKyAgICAgICAgICAgICdcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgJworICAgICAgICAgICAgJ25ld2xpbmUgb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuJworICAgICAgICAgICAgJyAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4nCisgICAgICAgICAgICAnICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIgfCAnCisgICAgICAgICAgICAnInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIlxuJworICAgICAgICAgICAgJyAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgJworICAgICAgICAgICAgJ3Nob3J0Ynl0ZXNpdGVtKiBcJyJcJ1xuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlcyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nYnl0ZXNpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgJworICAgICAgICAgICAgJ2xvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzaXRlbSA6Oj0gc2hvcnRieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlc2l0ZW0gIDo6PSBsb25nYnl0ZXNjaGFyIHwgYnl0ZXNlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSAnCisgICAgICAgICAgICAnb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdieXRlc2NoYXIgIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbicKKyAgICAgICAgICAgICcgICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdPbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgJworICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICd3aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIG9yICcKKyAgICAgICAgICAgICciYnl0ZXNwcmVmaXgiXG4nCisgICAgICAgICAgICAnYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXQgaXMgZGVmaW5lZCAnCisgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICd0aGUgZW5jb2RpbmcgZGVjbGFyYXRpb247IGl0IGlzIFVURi04IGlmIG5vIGVuY29kaW5nIGRlY2xhcmF0aW9uICcKKyAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgJ2dpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gRW5jb2RpbmcgZGVjbGFyYXRpb25zLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0luIHBsYWluIEVuZ2xpc2g6IEJvdGggdHlwZXMgb2YgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluICcKKyAgICAgICAgICAgICdtYXRjaGluZ1xuJworICAgICAgICAgICAgJ3NpbmdsZSBxdW90ZXMgKCJcJyIpIG9yIGRvdWJsZSBxdW90ZXMgKCIiIikuICBUaGV5IGNhbiBhbHNvIGJlICcKKyAgICAgICAgICAgICdlbmNsb3NlZFxuJworICAgICAgICAgICAgJ2luIG1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2UgYXJlXG4nCisgICAgICAgICAgICAnZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSAnCisgICAgICAgICAgICAnYmFja3NsYXNoXG4nCisgICAgICAgICAgICAnKCJcXCIpIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgJworICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICdzcGVjaWFsIG1lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlXG4nCisgICAgICAgICAgICAnY2hhcmFjdGVyLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0J5dGVzIGxpdGVyYWxzIGFyZSBhbHdheXMgcHJlZml4ZWQgd2l0aCAiXCdiXCciIG9yICJcJ0JcJyI7IHRoZXkgJworICAgICAgICAgICAgJ3Byb2R1Y2VcbicKKyAgICAgICAgICAgICdhbiBpbnN0YW5jZSBvZiB0aGUgImJ5dGVzIiB0eXBlIGluc3RlYWQgb2YgdGhlICJzdHIiIHR5cGUuICBUaGV5ICcKKyAgICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAgICdvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2YgMTI4ICcKKyAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgJ2dyZWF0ZXIgbXVzdCBiZSBleHByZXNzZWQgd2l0aCBlc2NhcGVzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0FzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHN0cmluZyBsaXRlcmFscyAnCisgICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICAnInUiIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54ICcKKyAgICAgICAgICAgICdjb2RlYmFzZXMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxuJworICAgICAgICAgICAgJ2xldHRlciAiXCdyXCciIG9yICJcJ1JcJyI7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogJworICAgICAgICAgICAgJ2FuZCB0cmVhdFxuJworICAgICAgICAgICAgJ2JhY2tzbGFzaGVzIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4gIEFzIGEgcmVzdWx0LCBpbiBzdHJpbmcgJworICAgICAgICAgICAgJ2xpdGVyYWxzLFxuJworICAgICAgICAgICAgJyJcJ1xcVVwnIiBhbmQgIlwnXFx1XCciIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkICcKKyAgICAgICAgICAgICdzcGVjaWFsbHkuXG4nCisgICAgICAgICAgICAiR2l2ZW4gdGhhdCBQeXRob24gMi54J3MgcmF3IHVuaWNvZGUgbGl0ZXJhbHMgYmVoYXZlIGRpZmZlcmVudGx5ICIKKyAgICAgICAgICAgICd0aGFuXG4nCisgICAgICAgICAgICAnUHl0aG9uIDMueFwncyB0aGUgIlwndXJcJyIgc3ludGF4IGlzIG5vdCBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgIlwncmJcJyIgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyBoYXMgJworICAgICAgICAgICAgJ2JlZW5cbicKKyAgICAgICAgICAgICdhZGRlZCBhcyBhIHN5bm9ueW0gb2YgIlwnYnJcJyIuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuJworICAgICAgICAgICAgJygidVwndmFsdWVcJyIpIHdhcyByZWludHJvZHVjZWQgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mICcKKyAgICAgICAgICAgICdkdWFsXG4nCisgICAgICAgICAgICAnUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4gU2VlICoqUEVQIDQxNCoqIGZvciBtb3JlICcKKyAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdBIHN0cmluZyBsaXRlcmFsIHdpdGggIlwnZlwnIiBvciAiXCdGXCciIGluIGl0cyBwcmVmaXggaXMgYSAnCisgICAgICAgICAgICAnKmZvcm1hdHRlZFxuJworICAgICAgICAgICAgJ3N0cmluZyBsaXRlcmFsKjsgc2VlIEZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMuICBUaGUgIlwnZlwnIiBtYXkgJworICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAnY29tYmluZWQgd2l0aCAiXCdyXCciLCBidXQgbm90IHdpdGggIlwnYlwnIiBvciAiXCd1XCciLCB0aGVyZWZvcmUgJworICAgICAgICAgICAgJ3Jhd1xuJworICAgICAgICAgICAgJ2Zvcm1hdHRlZCBzdHJpbmdzIGFyZSBwb3NzaWJsZSwgYnV0IGZvcm1hdHRlZCBieXRlcyBsaXRlcmFscyBhcmUgJworICAgICAgICAgICAgJ25vdC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiB0cmlwbGUtcXVvdGVkIGxpdGVyYWxzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgJworICAgICAgICAgICAgJ2FsbG93ZWRcbicKKyAgICAgICAgICAgICcoYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbicKKyAgICAgICAgICAgICd0ZXJtaW5hdGUgdGhlIGxpdGVyYWwuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdsaXRlcmFsLCBpLmUuIGVpdGhlciAiXCciIG9yICIiIi4pXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVW5sZXNzIGFuICJcJ3JcJyIgb3IgIlwnUlwnIiBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyAnCisgICAgICAgICAgICAnaW4gc3RyaW5nXG4nCisgICAgICAgICAgICAnYW5kIGJ5dGVzIGxpdGVyYWxzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byAnCisgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICd1c2VkIGJ5IFN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAnfCAiXFxuZXdsaW5lIiAgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcXFwiICAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoIlxcIikgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcXCciICAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoIlwnIikgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcIiIgICAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlICgiIiIpICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGEiICAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxiIiAgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcZiIgICAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXG4iICAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxyIiAgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcdCIgICAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHYiICAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxvb28iICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAnCisgICAgICAgICAgICAnKDEsMykgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxceGhoIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgJworICAgICAgICAgICAgJygyLDMpICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdFc2NhcGUgc2VxdWVuY2VzIG9ubHkgcmVjb2duaXplZCBpbiBzdHJpbmcgbGl0ZXJhbHMgYXJlOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbicKKyAgICAgICAgICAgICd8ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICcKKyAgICAgICAgICAgICcoNCkgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHV4eHh4IiAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICcKKyAgICAgICAgICAgICcoNSkgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFV4eHh4eHh4eCIgICAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICcKKyAgICAgICAgICAgICcoNikgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcxLiBBcyBpbiBTdGFuZGFyZCBDLCB1cCB0byB0aHJlZSBvY3RhbCBkaWdpdHMgYXJlIGFjY2VwdGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICczLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGVcbicKKyAgICAgICAgICAgICcgICBieXRlIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzXG4nCisgICAgICAgICAgICAnICAgZGVub3RlIGEgVW5pY29kZSBjaGFyYWN0ZXIgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNC4gQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsxXSBoYXMgYmVlblxuJworICAgICAgICAgICAgJyAgIGFkZGVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzUuIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc2LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXkuICBFeGFjdGx5IGVpZ2h0XG4nCisgICAgICAgICAgICAnICAgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVW5saWtlIFN0YW5kYXJkIEMsIGFsbCB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbGVmdCBpbiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgcmVzdWx0Ki4gICcKKyAgICAgICAgICAgICcoVGhpc1xuJworICAgICAgICAgICAgJ2JlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzICcKKyAgICAgICAgICAgICdtaXN0eXBlZCxcbicKKyAgICAgICAgICAgICd0aGUgcmVzdWx0aW5nIG91dHB1dCBpcyBtb3JlIGVhc2lseSByZWNvZ25pemVkIGFzIGJyb2tlbi4pICBJdCBpcyAnCisgICAgICAgICAgICAnYWxzb1xuJworICAgICAgICAgICAgJ2ltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluICcKKyAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICdsaXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciAnCisgICAgICAgICAgICAnYnl0ZXNcbicKKyAgICAgICAgICAgICdsaXRlcmFscy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBVbnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBwcm9kdWNlICcKKyAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAnICAgRGVwcmVjYXRpb25XYXJuaW5nLiAgSW4gc29tZSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24gdGhleSAnCisgICAgICAgICAgICAnd2lsbCBiZVxuJworICAgICAgICAgICAgJyAgIGEgU3ludGF4RXJyb3IuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRXZlbiBpbiBhIHJhdyBsaXRlcmFsLCBxdW90ZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIGJhY2tzbGFzaCwgJworICAgICAgICAgICAgJ2J1dCB0aGVcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgcmVzdWx0OyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSAnCisgICAgICAgICAgICAndmFsaWRcbicKKyAgICAgICAgICAgICdzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSAnCisgICAgICAgICAgICAnZG91YmxlXG4nCisgICAgICAgICAgICAncXVvdGU7ICJyIlxcIiIgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXcgc3RyaW5nICcKKyAgICAgICAgICAgICdjYW5ub3RcbicKKyAgICAgICAgICAgICdlbmQgaW4gYW4gb2RkIG51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyAnCisgICAgICAgICAgICAnbGl0ZXJhbFxuJworICAgICAgICAgICAgJ2Nhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaCB3b3VsZCAnCisgICAgICAgICAgICAnZXNjYXBlXG4nCisgICAgICAgICAgICAndGhlIGZvbGxvd2luZyBxdW90ZSBjaGFyYWN0ZXIpLiAgTm90ZSBhbHNvIHRoYXQgYSBzaW5nbGUgJworICAgICAgICAgICAgJ2JhY2tzbGFzaFxuJworICAgICAgICAgICAgJ2ZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVycyBhcyAnCisgICAgICAgICAgICAncGFydFxuJworICAgICAgICAgICAgJ29mIHRoZSBsaXRlcmFsLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKKyAnc3Vic2NyaXB0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdTdWJzY3JpcHRpb25zXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Egc3Vic2NyaXB0aW9uIHNlbGVjdHMgYW4gaXRlbSBvZiBhIHNlcXVlbmNlIChzdHJpbmcsIHR1cGxlICcKKyAgICAgICAgICAgICAgICAgICdvciBsaXN0KVxuJworICAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdWJzY3JpcHRpb24gOjo9IHByaW1hcnkgIlsiIGV4cHJlc3Npb25fbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzICcKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb25cbicKKyAgICAgICAgICAgICAgICAgICcobGlzdHMgb3IgZGljdGlvbmFyaWVzIGZvciBleGFtcGxlKS4gIFVzZXItZGVmaW5lZCBvYmplY3RzICcKKyAgICAgICAgICAgICAgICAgICdjYW4gc3VwcG9ydFxuJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbiBieSBkZWZpbmluZyBhICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9yIGJ1aWx0LWluIG9iamVjdHMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb2JqZWN0cyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdzdXBwb3J0XG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSB0byBhblxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIHZhbHVlIGluIHRoZSBtYXBwaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRzIHRvIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICdrZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgJworICAgICAgICAgICAgICAgICAgJ2V4YWN0bHkgb25lXG4nCisgICAgICAgICAgICAgICAgICAnaXRlbS4pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAnc2VjdGlvbikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdpbmRpY2VzIGluXG4nCisgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzOyBob3dldmVyLCBidWlsdC1pbiBzZXF1ZW5jZXMgYWxsIHByb3ZpZGUgYSAnCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kIHRoYXQgaW50ZXJwcmV0cyBuZWdhdGl2ZSBpbmRpY2VzIGJ5IGFkZGluZyB0aGUgJworICAgICAgICAgICAgICAgICAgJ2xlbmd0aCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0byB0aGUgaW5kZXggKHNvIHRoYXQgInhbLTFdIiBzZWxlY3RzIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAgICAgICdpdGVtIG9mICJ4IikuXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzIHRoYW4gJworICAgICAgICAgICAgICAgICAgJ3RoZSBudW1iZXJcbicKKyAgICAgICAgICAgICAgICAgICdvZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpdGVtIHdob3NlXG4nCisgICAgICAgICAgICAgICAgICAnaW5kZXggaXMgdGhhdCB2YWx1ZSAoY291bnRpbmcgZnJvbSB6ZXJvKS4gU2luY2UgdGhlIHN1cHBvcnQgJworICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcgb2NjdXJzIGluIHRoZSBvYmplY3QncyAiCisgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkIHRvICcKKyAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGFkZFxuJworICAgICAgICAgICAgICAgICAgJ3RoYXQgc3VwcG9ydC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBIHN0cmluZydzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgIgorICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRlIGRhdGFcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlIGJ1dCBhIHN0cmluZyBvZiBleGFjdGx5IG9uZSBjaGFyYWN0ZXIuXG4nLAorICd0cnV0aCc6ICdcbicKKyAgICAgICAgICAnVHJ1dGggVmFsdWUgVGVzdGluZ1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbicKKyAgICAgICAgICAnIndoaWxlIiBjb25kaXRpb24gb3IgYXMgb3BlcmFuZCBvZiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zIGJlbG93LiAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICdmb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiAiTm9uZSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogIkZhbHNlIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwLjAiLCAiMGoiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCAiXCdcJyIsICIoKSIsICJbXSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgInt9Ii5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4nCisgICAgICAgICAgJyAgIl9fYm9vbF9fKCkiIG9yICJfX2xlbl9fKCkiIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuJworICAgICAgICAgICcgIGludGVnZXIgemVybyBvciAiYm9vbCIgdmFsdWUgIkZhbHNlIi4gWzFdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbGwgb3RoZXIgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRydWUgLS0tIHNvIG9iamVjdHMgb2YgbWFueSB0eXBlcyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdhbHdheXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ09wZXJhdGlvbnMgYW5kIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSBCb29sZWFuIHJlc3VsdCAnCisgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICdyZXR1cm4gIjAiIG9yICJGYWxzZSIgZm9yIGZhbHNlIGFuZCAiMSIgb3IgIlRydWUiIGZvciB0cnVlLCB1bmxlc3NcbicKKyAgICAgICAgICAnb3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgJworICAgICAgICAgICcib3IiXG4nCisgICAgICAgICAgJ2FuZCAiYW5kIiBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4nLAorICd0cnknOiAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG4nCisgICAgICAgICdmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAnICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIGlkZW50aWZpZXJdXSAiOiIgJworICAgICAgICAnc3VpdGUpK1xuJworICAgICAgICAnICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4nCisgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW4gJworICAgICAgICAnbm9cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbicKKyAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCBmb3IgJworICAgICAgICAnYW5cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0ICcKKyAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgJ2luIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gJworICAgICAgICAnZXhwcmVzc2lvbi1cbicKKyAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAnZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0IGV4cHJlc3Npb25cbicKKyAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmdcbicKKyAgICAgICAgJ29iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzIGNvbXBhdGlibGVcbicKKyAgICAgICAgJ3dpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgZXhjZXB0aW9uLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICdoYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gJworICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICdbMV1cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbicKKyAgICAgICAgJ3JhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCAnCisgICAgICAgICdhbmRcbicKKyAgICAgICAgJ2Egc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG4nCisgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICdyYWlzZWRcbicKKyAgICAgICAgJ3RoZSBleGNlcHRpb24pLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdXaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xuJworICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsICcKKyAgICAgICAgJ2lmXG4nCisgICAgICAgICJwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2UncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbiIKKyAgICAgICAgJ2NsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayAnCisgICAgICAgICdpc1xuJworICAgICAgICAncmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSAnCisgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICcoVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lICcKKyAgICAgICAgJ2V4Y2VwdGlvbixcbicKKyAgICAgICAgJ2FuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG4nCisgICAgICAgICdvdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgImFzIHRhcmdldCIsIGl0IGlzIGNsZWFyZWRcbicKKyAgICAgICAgJ2F0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICcgICAgICAgZm9vXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ3dhcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICcgICAgICAgdHJ5OlxuJworICAgICAgICAnICAgICAgICAgICBmb29cbicKKyAgICAgICAgJyAgICAgICBmaW5hbGx5OlxuJworICAgICAgICAnICAgICAgICAgICBkZWwgTlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG4nCisgICAgICAgICdhYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuJworICAgICAgICAnYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG4nCisgICAgICAgICdjeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbicKKyAgICAgICAgJ3VudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgIkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG4iCisgICAgICAgICdleGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4nCisgICAgICAgICcic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG4nCisgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZVxuJworICAgICAgICAncHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgYXJlXG4nCisgICAgICAgICdyZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbicKKyAgICAgICAgJ2Zyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxuJworICAgICAgICAndGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbicKKyAgICAgICAgJ25vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgJworICAgICAgICAnInRyeSJcbicKKyAgICAgICAgJ2NsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiAnCisgICAgICAgICdhblxuJworICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICAnCisgICAgICAgICdJZlxuJworICAgICAgICAndGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlICcKKyAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAnY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgc2F2ZWRcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uIElmIHRoZSAnCisgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgJ2NsYXVzZSBleGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uXG4nCisgICAgICAgICdpcyBkaXNjYXJkZWQ6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgID4+PiBkZWYgZigpOlxuJworICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICcgICAuLi4gICAgICAgICAxLzBcbicKKyAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuJworICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICcgICA+Pj4gZigpXG4nCisgICAgICAgICcgICA0MlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG4nCisgICAgICAgICdleGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbicKKyAgICAgICAgJyJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSAnCisgICAgICAgICdpc1xuJworICAgICAgICAnYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCAnCisgICAgICAgICdpblxuJworICAgICAgICAndGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG4nCisgICAgICAgICdpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuJworICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4nCisgICAgICAgICcicmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgJworICAgICAgICAndGhlXG4nCisgICAgICAgICdsYXN0IG9uZSBleGVjdXRlZDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgPj4+IGRlZiBmb28oKTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgdHJ5OlxuJworICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICd0cnknXG4iCisgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ2ZpbmFsbHknXG4iCisgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgJyAgID4+PiBmb28oKVxuJworICAgICAgICAiICAgJ2ZpbmFsbHknXG4iCisgICAgICAgICdcbicKKyAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byAnCisgICAgICAgICdnZW5lcmF0ZVxuJworICAgICAgICAnZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuJywKKyAndHlwZXMnOiAnXG4nCisgICAgICAgICAgJ1RoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0JlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICAnCisgICAgICAgICAgJ0V4dGVuc2lvblxuJworICAgICAgICAgICdtb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJ1B5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgJworICAgICAgICAgICdudW1iZXJzLFxuJworICAgICAgICAgICdlZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCAnCisgICAgICAgICAgJ2FkZGl0aW9uc1xuJworICAgICAgICAgICd3aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG4nCisgICAgICAgICAgIidzcGVjaWFsIGF0dHJpYnV0ZXMuJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byAiCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciAnCisgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAnbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm9uZVxuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lICJOb25lIi4gJworICAgICAgICAgICdJdFxuJworICAgICAgICAgICcgICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsICcKKyAgICAgICAgICAnZS5nLixcbicKKyAgICAgICAgICAiICAgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleHBsaWNpdGx5IHJldHVyblxuIgorICAgICAgICAgICcgICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm90SW1wbGVtZW50ZWRcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuJworICAgICAgICAgICcgICAiTm90SW1wbGVtZW50ZWQiLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgIHNob3VsZCByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICB0aGUgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlXG4nCisgICAgICAgICAgJyAgIHJlZmxlY3RlZCBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGVcbicKKyAgICAgICAgICAnICAgb3BlcmF0b3IuKSAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZWUgSW1wbGVtZW50aW5nIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0VsbGlwc2lzXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGxpdGVyYWwgIi4uLiIgb3IgdGhlXG4nCisgICAgICAgICAgJyAgIGJ1aWx0LWluIG5hbWUgIkVsbGlwc2lzIi4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnIm51bWJlcnMuTnVtYmVyIlxuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgYXJpdGhtZXRpYyBvcGVyYXRvcnMgYW5kIGFyaXRobWV0aWMgYnVpbHQtaW4gZnVuY3Rpb25zLiAgJworICAgICAgICAgICdOdW1lcmljXG4nCisgICAgICAgICAgJyAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4nCisgICAgICAgICAgJyAgIFB5dGhvbiBudW1iZXJzIGFyZSBvZiBjb3Vyc2Ugc3Ryb25nbHkgcmVsYXRlZCB0byBtYXRoZW1hdGljYWxcbicKKyAgICAgICAgICAnICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCAnCisgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uXG4nCisgICAgICAgICAgJyAgIGluIGNvbXB1dGVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgIGNvbXBsZXggbnVtYmVyczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICJudW1iZXJzLkludGVncmFsIlxuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgZWxlbWVudHMgZnJvbSB0aGUgbWF0aGVtYXRpY2FsIHNldCBvZiAnCisgICAgICAgICAgJ2ludGVnZXJzXG4nCisgICAgICAgICAgJyAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEludGVnZXJzICgiaW50IilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuJworICAgICAgICAgICcgICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mICcKKyAgICAgICAgICAnc2hpZnRcbicKKyAgICAgICAgICAnICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAiICAgICAgICAgbmVnYXRpdmUgbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB2YXJpYW50IG9mIDInc1xuIgorICAgICAgICAgICcgICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQm9vbGVhbnMgKCJib29sIilcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlc2UgcmVwcmVzZW50IHRoZSB0cnV0aCB2YWx1ZXMgRmFsc2UgYW5kIFRydWUuICBUaGUgdHdvXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBvbmx5IEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgIDEsIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuJworICAgICAgICAgICcgICAgICAgICAiIlRydWUiIiBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuJworICAgICAgICAgICcgICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5SZWFsIiAoImZsb2F0IilcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyAnCisgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgJyAgICAgIG51bWJlcnMuIFlvdSBhcmUgYXQgdGhlIG1lcmN5IG9mIHRoZSB1bmRlcmx5aW5nIG1hY2hpbmVcbicKKyAgICAgICAgICAnICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4nCisgICAgICAgICAgJyAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgJworICAgICAgICAgICdzaW5nbGUtXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgbWVtb3J5IHVzYWdlIHRoYXQgYXJlIHVzdWFsbHkgdGhlIHJlYXNvbiBmb3IgdXNpbmcgdGhlc2UgYXJlXG4nCisgICAgICAgICAgJyAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiAnCisgICAgICAgICAgJ2Zsb2F0aW5nXG4nCisgICAgICAgICAgJyAgICAgIHBvaW50IG51bWJlcnMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAibnVtYmVycy5Db21wbGV4IiAoImNvbXBsZXgiKVxuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4nCisgICAgICAgICAgJyAgICAgIGRvdWJsZSBwcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gIFRoZSBzYW1lIGNhdmVhdHMgJworICAgICAgICAgICdhcHBseVxuJworICAgICAgICAgICcgICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgInoucmVhbCIgYW5kICJ6LmltYWciLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4nCisgICAgICAgICAgJyAgIG51bWJlcnMuIFRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiAnCisgICAgICAgICAgJ2l0ZW1zXG4nCisgICAgICAgICAgJyAgIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlIGluZGV4ICcKKyAgICAgICAgICAnc2V0XG4nCisgICAgICAgICAgJyAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICBzZWxlY3RlZCBieSAiYVtpXSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXF1ZW5jZXMgYWxzbyBzdXBwb3J0IHNsaWNpbmc6ICJhW2k6al0iIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbicKKyAgICAgICAgICAnICAgaW5kZXggKmsqIHN1Y2ggdGhhdCAqaSogIjw9IiAqayogIjwiICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuJworICAgICAgICAgICcgICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgJworICAgICAgICAgICdpbXBsaWVzXG4nCisgICAgICAgICAgJyAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAnCisgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICcgICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqICcKKyAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAnICAgInggPSBpICsgbiprIiwgKm4qICI+PSIgIjAiIGFuZCAqaSogIjw9IiAqeCogIjwiICpqKi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyICcKKyAgICAgICAgICAnb2JqZWN0cyxcbicKKyAgICAgICAgICAnICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7ICcKKyAgICAgICAgICAnaG93ZXZlcixcbicKKyAgICAgICAgICAnICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTdHJpbmdzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgc3RyaW5nIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoYXQgcmVwcmVzZW50IFVuaWNvZGUgJworICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgJyAgICAgICAgIHBvaW50cy4gQWxsIHRoZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgIlUrMDAwMCAtICcKKyAgICAgICAgICAnVSsxMEZGRkYiXG4nCisgICAgICAgICAgIiAgICAgICAgIGNhbiBiZSByZXByZXNlbnRlZCBpbiBhIHN0cmluZy4gIFB5dGhvbiBkb2Vzbid0IGhhdmUgYSAiCisgICAgICAgICAgJyJjaGFyIlxuJworICAgICAgICAgICcgICAgICAgICB0eXBlOyBpbnN0ZWFkLCBldmVyeSBjb2RlIHBvaW50IGluIHRoZSBzdHJpbmcgaXMgJworICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICcgICAgICAgICBhcyBhIHN0cmluZyBvYmplY3Qgd2l0aCBsZW5ndGggIjEiLiAgVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgIm9yZCgpIiBjb252ZXJ0cyBhIGNvZGUgcG9pbnQgZnJvbSBpdHMgc3RyaW5nIGZvcm0gdG8gYW5cbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiOyAiY2hyKCkiIGNvbnZlcnRzIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIiB0byB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgJ2xlbmd0aFxuJworICAgICAgICAgICcgICAgICAgICAiMSIgc3RyaW5nIG9iamVjdC4gInN0ci5lbmNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gY29udmVydCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgICAgICAgInN0ciIgdG8gImJ5dGVzIiB1c2luZyB0aGUgZ2l2ZW4gdGV4dCBlbmNvZGluZywgYW5kXG4nCisgICAgICAgICAgJyAgICAgICAgICJieXRlcy5kZWNvZGUoKSIgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGUgb3Bwb3NpdGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUdXBsZXNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbicKKyAgICAgICAgICAiICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhICdzaW5nbGV0b24nKSBjYW4gYmVcbiIKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuJworICAgICAgICAgICcgICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQnl0ZXNcbicKKyAgICAgICAgICAnICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSAnCisgICAgICAgICAgJzgtYml0XG4nCisgICAgICAgICAgJyAgICAgICAgIGJ5dGVzLCByZXByZXNlbnRlZCBieSBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuJworICAgICAgICAgICcgICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSAiYlwnYWJjXCciKSBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgICAgImJ5dGVzKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBieXRlcyBvYmplY3RzLiAgQWxzbyxcbicKKyAgICAgICAgICAnICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgJworICAgICAgICAgICciZGVjb2RlKCkiXG4nCisgICAgICAgICAgJyAgICAgICAgIG1ldGhvZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIE11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICcgICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBMaXN0c1xuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzICcKKyAgICAgICAgICAnbmVlZGVkXG4nCisgICAgICAgICAgJyAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCeXRlIEFycmF5c1xuJworICAgICAgICAgICcgICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlICcKKyAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1NldCB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuJworICAgICAgICAgICcgICBvYmplY3RzLiBBcyBzdWNoLCB0aGV5IGNhbm5vdCBiZSBpbmRleGVkIGJ5IGFueSBzdWJzY3JpcHQuICcKKyAgICAgICAgICAnSG93ZXZlcixcbicKKyAgICAgICAgICAnICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiXG4nCisgICAgICAgICAgJyAgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIHNldC4gQ29tbW9uIHVzZXMgZm9yIHNldHMgYXJlICcKKyAgICAgICAgICAnZmFzdFxuJworICAgICAgICAgICcgICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbicKKyAgICAgICAgICAnICAgY29tcHV0aW5nIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIHN1Y2ggYXMgaW50ZXJzZWN0aW9uLCB1bmlvbixcbicKKyAgICAgICAgICAnICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRm9yIHNldCBlbGVtZW50cywgdGhlIHNhbWUgaW1tdXRhYmlsaXR5IHJ1bGVzIGFwcGx5IGFzIGZvclxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sICIxIiBhbmRcbicKKyAgICAgICAgICAnICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgc2V0IHR5cGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2V0c1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgYSBtdXRhYmxlIHNldC4gVGhleSBhcmUgY3JlYXRlZCBieSB0aGUgJworICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICcgICAgICAic2V0KCkiIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSAnCisgICAgICAgICAgJ3NldmVyYWxcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJvemVuIHNldHNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuJworICAgICAgICAgICcgICAgICBidWlsdC1pbiAiZnJvemVuc2V0KCkiIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXMgJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgJworICAgICAgICAgICdhbm90aGVyXG4nCisgICAgICAgICAgJyAgICAgIHNldCwgb3IgYXMgYSBkaWN0aW9uYXJ5IGtleS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ01hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgYXJiaXRyYXJ5ICcKKyAgICAgICAgICAnaW5kZXhcbicKKyAgICAgICAgICAnICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiAiYVtrXSIgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5ICcKKyAgICAgICAgICAnImsiXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICB0YXJnZXQgb2YgYXNzaWdubWVudHMgb3IgImRlbCIgc3RhdGVtZW50cy4gVGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBtYXBwaW5nLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBEaWN0aW9uYXJpZXNcbicKKyAgICAgICAgICAnICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbicKKyAgICAgICAgICAnICAgICAgYXJiaXRyYXJ5IHZhbHVlcy4gIFRoZSBvbmx5IHR5cGVzIG9mIHZhbHVlcyBub3QgYWNjZXB0YWJsZSAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJyAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuJworICAgICAgICAgICcgICAgICBtdXRhYmxlIHR5cGVzIHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5ICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgIiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleSdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuIgorICAgICAgICAgICcgICAgICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvciAnCisgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAnICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAnCisgICAgICAgICAgJyIxLjAiKVxuJworICAgICAgICAgICcgICAgICB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4IHRoZSBzYW1lXG4nCisgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBEaWN0aW9uYXJpZXMgYXJlIG11dGFibGU7IHRoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgdGhlICJ7Li4ufSJcbicKKyAgICAgICAgICAnICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uIERpY3Rpb25hcnkgZGlzcGxheXMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGVzICJkYm0ubmRibSIgYW5kICJkYm0uZ251IiBwcm92aWRlXG4nCisgICAgICAgICAgJyAgICAgIGFkZGl0aW9uYWwgZXhhbXBsZXMgb2YgbWFwcGluZyB0eXBlcywgYXMgZG9lcyB0aGUgJworICAgICAgICAgICciY29sbGVjdGlvbnMiXG4nCisgICAgICAgICAgJyAgICAgIG1vZHVsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NhbGxhYmxlIHR5cGVzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgdHlwZXMgdG8gd2hpY2ggdGhlIGZ1bmN0aW9uIGNhbGwgb3BlcmF0aW9uIChzZWVcbicKKyAgICAgICAgICAnICAgc2VjdGlvbiBDYWxscykgY2FuIGJlIGFwcGxpZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gRnVuY3Rpb24gZGVmaW5pdGlvbnMpLiAgSXQgc2hvdWxkIGJlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgJworICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICIgICAgICBhcyB0aGUgZnVuY3Rpb24ncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG4iCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuJworICAgICAgICAgICcgICAgICB8ICJfX2RvY19fIiAgICAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgJworICAgICAgICAgICdkb2N1bWVudGF0aW9uICAgIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yICJOb25lIiBpZiAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuYXZhaWxhYmxlOyBub3QgaW5oZXJpdGVkIGJ5ICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3ViY2xhc3NlcyAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbmFtZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAnCisgICAgICAgICAgJ25hbWUgICAgICAgICAgICAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19xdWFsbmFtZV9fIiAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICpxdWFsaWZpZWQgJworICAgICAgICAgICduYW1lKiB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbW9kdWxlX18iICAgICAgICAgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAiTm9uZSIgaWYgdW5hdmFpbGFibGUuICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50cyB0aGF0IGhhdmUgZGVmYXVsdHMsICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyBoYXZlICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhIGRlZmF1bHQgdmFsdWUgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jb2RlX18iICAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICAnCisgICAgICAgICAgJ3wgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICIgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvbidzICAgICAgICIKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGUgaW4gICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kaWN0X18iICAgICAgICAgICAgICAgIHwgVGhlIG5hbWVzcGFjZSBzdXBwb3J0aW5nICAgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jbG9zdXJlX18iICAgICAgICAgICAgIHwgIk5vbmUiIG9yIGEgdHVwbGUgb2YgY2VsbHMgdGhhdCAnCisgICAgICAgICAgJ3wgUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgIiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgIgorICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2Fubm90YXRpb25zX18iICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBhbm5vdGF0aW9ucyAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbmQgIlwncmV0dXJuXCciIGZvciB0aGUgJworICAgICAgICAgICdyZXR1cm4gICB8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fa3dkZWZhdWx0c19fIiAgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGRlZmF1bHRzIGZvciAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgYXNzaWduZWQgdmFsdWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCAnCisgICAgICAgICAgJ21ldGFkYXRhXG4nCisgICAgICAgICAgJyAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAnb25seVxuJworICAgICAgICAgICcgICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICcKKyAgICAgICAgICAnRnVuY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnV0dXJlLipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvbidzIGRlZmluaXRpb24gY2FuIGJlXG4iCisgICAgICAgICAgJyAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiAnCisgICAgICAgICAgJ2ludGVybmFsXG4nCisgICAgICAgICAgJyAgICAgIHR5cGVzIGJlbG93LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgSW5zdGFuY2UgbWV0aG9kc1xuJworICAgICAgICAgICcgICAgICBBbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGNvbWJpbmVzIGEgY2xhc3MsIGEgY2xhc3MgaW5zdGFuY2UgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogIl9fc2VsZl9fIiBpcyB0aGUgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QsICJfX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgIl9fZG9jX18iIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiX19mdW5jX18uX19kb2NfXyIpOyAnCisgICAgICAgICAgJyJfX25hbWVfXyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzICJfX2Z1bmNfXy5fX25hbWVfXyIpOyAnCisgICAgICAgICAgJyJfX21vZHVsZV9fIlxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICcKKyAgICAgICAgICAnIk5vbmUiXG4nCisgICAgICAgICAgJyAgICAgIGlmIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgJworICAgICAgICAgICd1c2VyLVxuJworICAgICAgICAgICcgICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgJworICAgICAgICAgICdpbnN0YW5jZXMsXG4nCisgICAgICAgICAgJyAgICAgIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyAiX19mdW5jX18iIGF0dHJpYnV0ZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4nCisgICAgICAgICAgJyAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSAnCisgICAgICAgICAgJyJfX2Z1bmNfXyJcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgYnV0IGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgIl9fc2VsZl9fIiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzIHRoZVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gKCJfX2Z1bmNfXyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgICgiX19zZWxmX18iKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSwgJworICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgJyAgICAgICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiAnCisgICAgICAgICAgJyJmKCkiLFxuJworICAgICAgICAgICcgICAgICBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIiBpcyBlcXVpdmFsZW50ICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgICAgY2FsbGluZyAiQy5mKHgsIDEpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiX19zZWxmX18iIHdpbGwgJworICAgICAgICAgICdhY3R1YWxseVxuJworICAgICAgICAgICcgICAgICBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyICJ4LmYoMSkiIG9yICcKKyAgICAgICAgICAnIkMuZigxKSJcbicKKyAgICAgICAgICAnICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgJworICAgICAgICAgICd1bmRlcmx5aW5nXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgTm90ZSB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZ1bmN0aW9uIG9iamVjdCB0byAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgJworICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZS4gQWxzbyBub3RpY2UgdGhhdCB0aGlzIHRyYW5zZm9ybWF0aW9uIG9ubHkgaGFwcGVucyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbicKKyAgICAgICAgICAnICAgICAgY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0IHRyYW5zZm9ybWF0aW9uLiAgSXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3QgY29udmVydGVkIHRvIGJvdW5kXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnICAgICAgb2YgdGhlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSAieWllbGQiIHN0YXRlbWVudCAoc2VlXG4nCisgICAgICAgICAgJyAgICAgIHNlY3Rpb24gVGhlIHlpZWxkIHN0YXRlbWVudCkgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciAnCisgICAgICAgICAgJ2Z1bmN0aW9uKi5cbicKKyAgICAgICAgICAnICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3IgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICAnCisgICAgICAgICAgJ2NhbGxpbmdcbicKKyAgICAgICAgICAnICAgICAgdGhlIGl0ZXJhdG9yXCdzICJpdGVyYXRvci5fX25leHRfXygpIiBtZXRob2Qgd2lsbCBjYXVzZSB0aGVcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gdG8gZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSAnCisgICAgICAgICAgJyJ5aWVsZCJcbicKKyAgICAgICAgICAnICAgICAgc3RhdGVtZW50LiAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSAicmV0dXJuIiBzdGF0ZW1lbnQgJworICAgICAgICAgICdvclxuJworICAgICAgICAgICcgICAgICBmYWxscyBvZmYgdGhlIGVuZCwgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byAnCisgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgJyAgICAgIHJldHVybmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29yb3V0aW5lIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCBpcyBkZWZpbmVkIHVzaW5nICJhc3luYyBkZWYiIGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxlZCBhICpjb3JvdXRpbmUgZnVuY3Rpb24qLiAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuICcKKyAgICAgICAgICAnY2FsbGVkLFxuJworICAgICAgICAgICcgICAgICByZXR1cm5zIGEgKmNvcm91dGluZSogb2JqZWN0LiAgSXQgbWF5IGNvbnRhaW4gImF3YWl0IlxuJworICAgICAgICAgICcgICAgICBleHByZXNzaW9ucywgYXMgd2VsbCBhcyAiYXN5bmMgd2l0aCIgYW5kICJhc3luYyBmb3IiICcKKyAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAnICAgICAgU2VlIGFsc28gdGhlIENvcm91dGluZSBPYmplY3RzIHNlY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJyAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgIm1hdGguc2luKCkiXG4nCisgICAgICAgICAgJyAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCAnCisgICAgICAgICAgJ3JlYWQtXG4nCisgICAgICAgICAgJyAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4nCisgICAgICAgICAgJyAgICAgIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlOyAiX19uYW1lX18iIGlzIHRoZSAnCisgICAgICAgICAgImZ1bmN0aW9uJ3NcbiIKKyAgICAgICAgICAnICAgICAgbmFtZTsgIl9fc2VsZl9fIiBpcyBzZXQgdG8gIk5vbmUiIChidXQgc2VlIHRoZSBuZXh0IGl0ZW0pO1xuJworICAgICAgICAgICcgICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzICcKKyAgICAgICAgICAnZGVmaW5lZFxuJworICAgICAgICAgICcgICAgICBpbiBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuJworICAgICAgICAgICcgICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbicKKyAgICAgICAgICAnICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzZXNcbicKKyAgICAgICAgICAnICAgICAgQ2xhc3NlcyBhcmUgY2FsbGFibGUuICBUaGVzZSBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyAnCisgICAgICAgICAgJ2ZhY3Rvcmllc1xuJworICAgICAgICAgICcgICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byAiX19uZXdfXygpIiBhbmQsIGluIHRoZSB0eXBpY2FsIGNhc2UsIHRvXG4nCisgICAgICAgICAgJyAgICAgICJfX2luaXRfXygpIiB0byBpbml0aWFsaXplIHRoZSBuZXcgaW5zdGFuY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBJbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgICAgSW5zdGFuY2VzIG9mIGFyYml0cmFyeSBjbGFzc2VzIGNhbiBiZSBtYWRlIGNhbGxhYmxlIGJ5ICcKKyAgICAgICAgICAnZGVmaW5pbmdcbicKKyAgICAgICAgICAnICAgICAgYSAiX19jYWxsX18oKSIgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICcgICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbicKKyAgICAgICAgICAnICAgY3JlYXRlZCBieSB0aGUgaW1wb3J0IHN5c3RlbSBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgImltcG9ydCJcbicKKyAgICAgICAgICAnICAgc3RhdGVtZW50IChzZWUgImltcG9ydCIpLCBvciBieSBjYWxsaW5nIGZ1bmN0aW9ucyBzdWNoIGFzXG4nCisgICAgICAgICAgJyAgICJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBhbmQgYnVpbHQtaW4gIl9faW1wb3J0X18oKSIuICBBICcKKyAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgJyAgIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdCAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlICJfX2dsb2JhbHNfXyIgYXR0cmlidXRlIG9mXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLiAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlXG4nCisgICAgICAgICAgJyAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJtLngiIGlzICcKKyAgICAgICAgICAnZXF1aXZhbGVudFxuJworICAgICAgICAgICcgICB0byAibS5fX2RpY3RfX1sieCJdIi4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGVcbicKKyAgICAgICAgICAiICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgIgorICAgICAgICAgICdvbmNlXG4nCisgICAgICAgICAgJyAgIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuIgorICAgICAgICAgICcgICBlLmcuLCAibS54ID0gMSIgaXMgZXF1aXZhbGVudCB0byAibS5fX2RpY3RfX1sieCJdID0gMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZTtcbicKKyAgICAgICAgICAnICAgIl9fZG9jX18iIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZlxuJworICAgICAgICAgICcgICB1bmF2YWlsYWJsZTsgIl9fYW5ub3RhdGlvbnNfXyIgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnlcbicKKyAgICAgICAgICAnICAgY29udGFpbmluZyAqdmFyaWFibGUgYW5ub3RhdGlvbnMqIGNvbGxlY3RlZCBkdXJpbmcgbW9kdWxlIGJvZHlcbicKKyAgICAgICAgICAnICAgZXhlY3V0aW9uOyAiX19maWxlX18iIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgIl9fZmlsZV9fIlxuJworICAgICAgICAgICcgICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyAnCisgICAgICAgICAgJ0NcbicKKyAgICAgICAgICAnICAgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yXG4nCisgICAgICAgICAgJyAgIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiAiX19kaWN0X18iIGlzIHRoZSBtb2R1bGVcJ3MgJworICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAnICAgYXMgYSBkaWN0aW9uYXJ5IG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbicKKyAgICAgICAgICAnICAgY2xlYXJzIG1vZHVsZSBkaWN0aW9uYXJpZXMsIHRoZSBtb2R1bGUgZGljdGlvbmFyeSB3aWxsIGJlICcKKyAgICAgICAgICAnY2xlYXJlZFxuJworICAgICAgICAgICcgICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgJworICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAnICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG1vZHVsZSBhcm91bmQgd2hpbGUgdXNpbmcgaXRzIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDdXN0b20gY2xhc3Nlc1xuJworICAgICAgICAgICcgICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zICcKKyAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICcgICBzZWN0aW9uIENsYXNzIGRlZmluaXRpb25zKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgdHJhbnNsYXRlZCB0b1xuJworICAgICAgICAgICcgICAiQy5fX2RpY3RfX1sieCJdIiAoYWx0aG91Z2ggdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoICcKKyAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAnICAgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGUgbmFtZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4nCisgICAgICAgICAgJyAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiBpbiB0aGUgcHJlc2VuY2UgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgICAnZGlhbW9uZCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiIKKyAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4nCisgICAgICAgICAgJyAgIGRldGFpbHMgb24gdGhlIEMzIE1STyB1c2VkIGJ5IFB5dGhvbiBjYW4gYmUgZm91bmQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuJworICAgICAgICAgICcgICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgJworICAgICAgICAgICd5aWVsZCBhXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIG9iamVjdCB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZXMgaXMgIkMiLiAgV2hlbiBpdCB3b3VsZCB5aWVsZCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMgJworICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAnICAgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heSAnCisgICAgICAgICAgJ2RpZmZlclxuJworICAgICAgICAgICcgICBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzJ3MgZGljdGlvbmFyeSwgIgorICAgICAgICAgICduZXZlclxuJworICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgJworICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICcgICAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgY2xhc3MgbmFtZTsgIl9fbW9kdWxlX18iICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgIl9fZGljdF9fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgIl9fYmFzZXNfXyIgaXMgYSAnCisgICAgICAgICAgJ3R1cGxlXG4nCisgICAgICAgICAgJyAgIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7ICJfX2RvY19fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICIgICBjbGFzcydzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmIHVuZGVmaW5lZDtcbiIKKyAgICAgICAgICAnICAgIl9fYW5ub3RhdGlvbnNfXyIgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyAnCisgICAgICAgICAgJyp2YXJpYWJsZVxuJworICAgICAgICAgICcgICBhbm5vdGF0aW9ucyogY29sbGVjdGVkIGR1cmluZyBjbGFzcyBib2R5IGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzIGluc3RhbmNlc1xuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgYnkgY2FsbGluZyBhIGNsYXNzIG9iamVjdCAoc2VlICcKKyAgICAgICAgICAnYWJvdmUpLlxuJworICAgICAgICAgICcgICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICcgICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuJworICAgICAgICAgICIgICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2UncyBjbGFzcyAiCisgICAgICAgICAgJ2hhc1xuJworICAgICAgICAgICcgICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuJworICAgICAgICAgICcgICBhdHRyaWJ1dGVzLiAgSWYgYSBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQgdGhhdCBpcyBhICcKKyAgICAgICAgICAndXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJyAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgd2hvc2UgIl9fc2VsZl9fIiBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLiAgU3RhdGljIG1ldGhvZCBhbmRcbicKKyAgICAgICAgICAnICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuJworICAgICAgICAgICcgICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMgZm9yIGFub3RoZXIgd2F5ICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzIGluc3RhbmNlcyBtYXkgJworICAgICAgICAgICdkaWZmZXJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzICJfX2RpY3RfXyIuICBJZiAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgIiAgIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZSBvYmplY3QncyBjbGFzcyBoYXMgYVxuIgorICAgICAgICAgICcgICAiX19nZXRhdHRyX18oKSIgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZSBsb29rdXAuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlJ3NcbiIKKyAgICAgICAgICAiICAgZGljdGlvbmFyeSwgbmV2ZXIgYSBjbGFzcydzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiIKKyAgICAgICAgICAnICAgIl9fc2V0YXR0cl9fKCkiIG9yICJfX2RlbGF0dHJfXygpIiBtZXRob2QsIHRoaXMgaXMgY2FsbGVkICcKKyAgICAgICAgICAnaW5zdGVhZFxuJworICAgICAgICAgICcgICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yICcKKyAgICAgICAgICAnbWFwcGluZ3NcbicKKyAgICAgICAgICAnICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuJworICAgICAgICAgICcgICBTcGVjaWFsIG1ldGhvZCBuYW1lcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4nCisgICAgICAgICAgJyAgICJfX2NsYXNzX18iIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0kvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbicKKyAgICAgICAgICAnICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4nCisgICAgICAgICAgJyAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvbixcbicKKyAgICAgICAgICAnICAgYW5kIGFsc28gIm9zLnBvcGVuKCkiLCAib3MuZmRvcGVuKCkiLCBhbmQgdGhlICJtYWtlZmlsZSgpIiAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgcHJvdmlkZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVGhlIG9iamVjdHMgInN5cy5zdGRpbiIsICJzeXMuc3Rkb3V0IiBhbmQgInN5cy5zdGRlcnIiIGFyZVxuJworICAgICAgICAgICIgICBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXInc1xuIgorICAgICAgICAgICcgICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiAnCisgICAgICAgICAgJ3RleHRcbicKKyAgICAgICAgICAnICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4nCisgICAgICAgICAgJyAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ludGVybmFsIHR5cGVzXG4nCisgICAgICAgICAgJyAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbicKKyAgICAgICAgICAnICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ29kZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uICcKKyAgICAgICAgICAnY29kZSxcbicKKyAgICAgICAgICAnICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gJworICAgICAgICAgICdleHBsaWNpdFxuJworICAgICAgICAgICIgICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCAiCisgICAgICAgICAgJ3dhc1xuJworICAgICAgICAgICcgICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuJworICAgICAgICAgICcgICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsICcKKyAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgJyAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCAnCisgICAgICAgICAgJ2F0XG4nCisgICAgICAgICAgJyAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvICcKKyAgICAgICAgICAnbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBvYmplY3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImNvX25hbWUiIGdpdmVzIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19hcmdjb3VudCIgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgJyhpbmNsdWRpbmdcbicKKyAgICAgICAgICAnICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nIGFyZ3VtZW50cyk7XG4nCisgICAgICAgICAgJyAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgJworICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgJyAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuJworICAgICAgICAgICcgICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuJworICAgICAgICAgICcgICAgICBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlIHZhcmlhYmxlczsgImNvX2NvZGUiIGlzIGEgJworICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAnICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICcKKyAgICAgICAgICAnImNvX2NvbnN0cyJcbicKKyAgICAgICAgICAnICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbicKKyAgICAgICAgICAnICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlICcKKyAgICAgICAgICAnYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzICcKKyAgICAgICAgICAnY29tcGlsZWQ7XG4nCisgICAgICAgICAgJyAgICAgICJjb19maXJzdGxpbmVubyIgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbicKKyAgICAgICAgICAnICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuJworICAgICAgICAgICcgICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4nCisgICAgICAgICAgJyAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyICcKKyAgICAgICAgICAnZW5jb2RpbmcgYVxuJworICAgICAgICAgICcgICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciAiY29fZmxhZ3MiOiBiaXQgJworICAgICAgICAgICciMHgwNCJcbicKKyAgICAgICAgICAnICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgJyAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0ICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqKmtleXdvcmRzIiBzeW50YXggdG8gYWNjZXB0ICcKKyAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgJyAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuJworICAgICAgICAgICcgICAgICBnZW5lcmF0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0ICcKKyAgICAgICAgICAnZGl2aXNpb24iKVxuJworICAgICAgICAgICcgICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0ICIweDIwMDAiICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gJworICAgICAgICAgICdlbmFibGVkO1xuJworICAgICAgICAgICcgICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAnICAgICAgUHl0aG9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4nCisgICAgICAgICAgJyAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4nCisgICAgICAgICAgJyAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGcmFtZSBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuJworICAgICAgICAgICcgICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJmX2JhY2siIGlzIHRvIHRoZSBwcmV2aW91cyAnCisgICAgICAgICAgJ3N0YWNrXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4nCisgICAgICAgICAgJyAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4nCisgICAgICAgICAgJyAgICAgICJmX2J1aWx0aW5zIiBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lczsgJworICAgICAgICAgICciZl9sYXN0aSJcbicKKyAgICAgICAgICAnICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbicKKyAgICAgICAgICAnICAgICAgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24gJworICAgICAgICAgICdqdW1wc1xuJworICAgICAgICAgICcgICAgICB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEEgJworICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICcgICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSAnCisgICAgICAgICAgJ3dyaXRpbmdcbicKKyAgICAgICAgICAnICAgICAgdG8gZl9saW5lbm8uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIGZyYW1lLmNsZWFyKClcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoaXMgbWV0aG9kIGNsZWFycyBhbGwgcmVmZXJlbmNlcyB0byBsb2NhbCB2YXJpYWJsZXMgaGVsZCAnCisgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBmcmFtZS4gIEFsc28sIGlmIHRoZSBmcmFtZSBiZWxvbmdlZCB0byBhIGdlbmVyYXRvciwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlICcKKyAgICAgICAgICAnY3ljbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIGludm9sdmluZyBmcmFtZSBvYmplY3RzIChmb3IgZXhhbXBsZSB3aGVuIGNhdGNoaW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgIlJ1bnRpbWVFcnJvciIgaXMgcmFpc2VkIGlmIHRoZSBmcmFtZSBpcyBjdXJyZW50bHkgJworICAgICAgICAgICdleGVjdXRpbmcuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBOZXcgaW4gdmVyc2lvbiAzLjQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssICcKKyAgICAgICAgICAnYXRcbicKKyAgICAgICAgICAnICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgJworICAgICAgICAgICdlbnRlcmVkLFxuJworICAgICAgICAgICcgICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIFRoZSB0cnkgc3RhdGVtZW50LikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICB0dXBsZSByZXR1cm5lZCBieSAic3lzLmV4Y19pbmZvKCkiLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAnICAgICAgc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseSAnCisgICAgICAgICAgJ2Zvcm1hdHRlZClcbicKKyAgICAgICAgICAnICAgICAgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgaWYgdGhlIGludGVycHJldGVyIGlzICcKKyAgICAgICAgICAnaW50ZXJhY3RpdmUsXG4nCisgICAgICAgICAgJyAgICAgIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXMgJworICAgICAgICAgICcic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgIk5vbmUiIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7ICJ0Yl9mcmFtZSIgcG9pbnRzIHRvIHRoZVxuJworICAgICAgICAgICcgICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSAnCisgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQ7ICJ0Yl9sYXN0aSIgaW5kaWNhdGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gJworICAgICAgICAgICdpblxuJworICAgICAgICAgICcgICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggJworICAgICAgICAgICdub1xuJworICAgICAgICAgICcgICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNsaWNlIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciAnCisgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIlxuJworICAgICAgICAgICcgICAgICBtZXRob2RzLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pbiAic2xpY2UoKSJcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAic3RhcnQiIGlzIHRoZSBsb3dlciBib3VuZDsgJworICAgICAgICAgICcic3RvcCJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiAnCisgICAgICAgICAgJ2l0ZW1zLlxuJworICAgICAgICAgICcgICAgICAgICBJdCByZXR1cm5zIGEgdHVwbGUgb2YgdGhyZWUgaW50ZWdlcnM7IHJlc3BlY3RpdmVseSB0aGVzZSAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4nCisgICAgICAgICAgJyAgICAgICAgIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGFyZVxuJworICAgICAgICAgICcgICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4nCisgICAgICAgICAgJyAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdkZXNjcmliZWRcbicKKyAgICAgICAgICAnICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuJworICAgICAgICAgICcgICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCAnCisgICAgICAgICAgJ3VzdWFsbHlcbicKKyAgICAgICAgICAnICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4nCisgICAgICAgICAgJyAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBtZXRob2Qgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSAnCisgICAgICAgICAgJ3dyYXBwZXJcbicKKyAgICAgICAgICAnICAgICAgYXJvdW5kIGFub3RoZXIgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSB3YXkgaW4gd2hpY2ggdGhhdCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbicKKyAgICAgICAgICAnICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAnY3JlYXRlZFxuJworICAgICAgICAgICcgICAgICBieSB0aGUgYnVpbHQtaW4gImNsYXNzbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJywKKyAndHlwZXNmdW5jdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ0Z1bmN0aW9uIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBUaGUgJworICAgICAgICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiAnCisgICAgICAgICAgICAgICAgICAgJyJmdW5jKGFyZ3VtZW50LWxpc3QpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICAnYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICBCb3RoIHN1cHBvcnQgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gKHRvIGNhbGxcbicKKyAgICAgICAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uKSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBkaWZmZXJlbnQsIGhlbmNlICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudCBvYmplY3QgdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdTZWUgRnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21hcHBpbmcnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAgJ21hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgJworICAgICAgICAgICAgICAgICAndGhlIGJ1aWx0LVxuJworICAgICAgICAgICAgICAgICAnaW4gImxpc3QiLCAic2V0IiwgYW5kICJ0dXBsZSIgY2xhc3NlcywgYW5kIHRoZSAiY29sbGVjdGlvbnMiICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIkEgZGljdGlvbmFyeSdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgIgorICAgICAgICAgICAgICAgICAndGhhdCBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ25vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyaWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICdvdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiAnCisgICAgICAgICAgICAgICAgICdieSBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgJ2lkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAna2V5cyBvYmV5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBhcmUgZXF1YWxcbicKKyAgICAgICAgICAgICAgICAgJyhzdWNoIGFzICIxIiBhbmQgIjEuMCIpIHRoZW4gdGhleSBjYW4gYmUgdXNlZCAnCisgICAgICAgICAgICAgICAgICdpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXhcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlICcKKyAgICAgICAgICAgICAgICAgJ2NvbXB1dGVycyBzdG9yZVxuJworICAgICAgICAgICAgICAgICAnZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3Vud2lzZSB0byB1c2VcbicKKyAgICAgICAgICAgICAgICAgJ3RoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgJworICAgICAgICAgICAgICAgICAnbGlzdCBvZiAia2V5OlxuJworICAgICAgICAgICAgICAgICAndmFsdWUiIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiAie1wnamFja1wnOiA0MDk4LCAnCisgICAgICAgICAgICAgICAgICInc2pvZXJkJzpcbiIKKyAgICAgICAgICAgICAgICAgJzQxMjd9IiBvciAiezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfSIsIG9yIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICciZGljdCJcbicKKyAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdG9yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KCoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICdpcyBjcmVhdGVkLlxuJworICAgICAgICAgICAgICAgICAnICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0LCBhXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgJworICAgICAgICAgICAgICAgICAndGhlIG1hcHBpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAgICcqaXRlcmFibGUqXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSAnCisgICAgICAgICAgICAgICAgICdiZWNvbWVzIGEga2V5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgJworICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlICcKKyAgICAgICAgICAgICAgICAgJ2ZvciB0aGF0IGtleVxuJworICAgICAgICAgICAgICAgICAnICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFuZCAnCisgICAgICAgICAgICAgICAgICd0aGVpclxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgJworICAgICAgICAgICAgICAgICAndmFsdWUgZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcgICB0byAieyJvbmUiOiAxLCAidHdvIjogMiwgInRocmVlIjogM30iOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9IGRpY3Qob25lPTEsIHR3bz0yLCB0aHJlZT0zKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGIgPSB7J29uZSc6IDEsICd0d28nOiAyLCAndGhyZWUnOiAzfVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGMgPSBkaWN0KHppcChbJ29uZScsICd0d28nLCAndGhyZWUnXSwgWzEsIDIsIDNdKSlcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBkID0gZGljdChbKCd0d28nLCAyKSwgKCdvbmUnLCAxKSwgKCd0aHJlZScsIDMpXSlcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBlID0gZGljdCh7J3RocmVlJzogMywgJ29uZSc6IDEsICd0d28nOiAyfSlcbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBhID09IGIgPT0gYyA9PSBkID09IGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUHJvdmlkaW5nIGtleXdvcmQgYXJndW1lbnRzIGFzIGluIHRoZSBmaXJzdCBleGFtcGxlIG9ubHkgJworICAgICAgICAgICAgICAgICAnd29ya3MgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycy4gIE90aGVyd2lzZSwgYW55ICcKKyAgICAgICAgICAgICAgICAgJ3ZhbGlkIGtleXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kICcKKyAgICAgICAgICAgICAgICAgJ3RoZXJlZm9yZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxlbihkKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgJworICAgICAgICAgICAgICAgICAnIktleUVycm9yIiBpZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kICJfX21pc3NpbmdfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmQgKmtleSpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIG5vdCBwcmVzZW50LCB0aGUgImRba2V5XSIgb3BlcmF0aW9uIGNhbGxzIHRoYXQgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgImRba2V5XSIgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3RoZW4gcmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJfX21pc3NpbmdfXyhrZXkpIiBjYWxsLiBObyBvdGhlciBvcGVyYXRpb25zIG9yICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgaW52b2tlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiX19taXNzaW5nX18oKSIuIElmICJfX21pc3NpbmdfXygpIiBpcyBub3QgZGVmaW5lZCwgJworICAgICAgICAgICAgICAgICAnIktleUVycm9yIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgcmFpc2VkLiAiX19taXNzaW5nX18oKSIgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90ICcKKyAgICAgICAgICAgICAgICAgJ2JlIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbnN0YW5jZSB2YXJpYWJsZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIDBcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgID4+PiBjWydyZWQnXSArPSAxXG4iCisgICAgICAgICAgICAgICAgICIgICAgICAgICA+Pj4gY1sncmVkJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIDFcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVGhlIGV4YW1wbGUgYWJvdmUgc2hvd3MgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJjb2xsZWN0aW9ucy5Db3VudGVyIi4gIEEgZGlmZmVyZW50ICJfX21pc3NpbmdfXyIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGJ5ICJjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XSA9IHZhbHVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFNldCAiZFtrZXldIiB0byAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkZWwgZFtrZXldXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSAiZFtrZXldIiBmcm9tICpkKi4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWYgJworICAgICAgICAgICAgICAgICAnKmtleSogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXkgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gIlRydWUiIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAga2V5IG5vdCBpbiBkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIEVxdWl2YWxlbnQgdG8gIm5vdCBrZXkgaW4gZCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXIoZClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICAnCisgICAgICAgICAgICAgICAgICdUaGlzIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHNob3J0Y3V0IGZvciAiaXRlcihkLmtleXMoKSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGVhcigpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY29weSgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIHNldCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgImZyb21rZXlzKCkiIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdldChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnksIGVsc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gJworICAgICAgICAgICAgICAgICAnIk5vbmUiLCBzb1xuJworICAgICAgICAgICAgICAgICAnICAgICAgdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSAiS2V5RXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVtcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zICgiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgcGFpcnMpLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBrZXlzLiAgU2VlIHRoZVxuIgorICAgICAgICAgICAgICAgICAnICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBvcChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ2l0cyB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICcKKyAgICAgICAgICAgICAgICAgJyprZXkqIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBvcGl0ZW0oKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciAnCisgICAgICAgICAgICAgICAgICdmcm9tIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiAnCisgICAgICAgICAgICAgICAgICdub3QsIGluc2VydFxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICcKKyAgICAgICAgICAgICAgICAgJypkZWZhdWx0KlxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB1cGRhdGUoW290aGVyXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJypvdGhlciosXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZXMgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogJworICAgICAgICAgICAgICAgICAnImQudXBkYXRlKHJlZD0xLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgYmx1ZT0yKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgdmFsdWVzLiAgU2VlICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSAiKGtleSxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlKSIgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIChcJzxcJywgXCc8PVwnLCBcJz49XCcsICcKKyAgICAgICAgICAgICAgICAgIic+JykgcmFpc2VcbiIKKyAgICAgICAgICAgICAgICAgJyAgICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzogInR5cGVzLk1hcHBpbmdQcm94eVR5cGUiIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgICAgJ3JlYWQtb25seVxuJworICAgICAgICAgICAgICAgICAnICB2aWV3IG9mIGEgImRpY3QiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcnkgdmlldyBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb2JqZWN0cyByZXR1cm5lZCBieSAiZGljdC5rZXlzKCkiLCAiZGljdC52YWx1ZXMoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICciZGljdC5pdGVtcygpIiBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSBkeW5hbWljICcKKyAgICAgICAgICAgICAgICAgJ3ZpZXcgb24gdGhlXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5J3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5ICIKKyAgICAgICAgICAgICAgICAgJ2NoYW5nZXMsXG4nCisgICAgICAgICAgICAgICAgICd0aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3BlY3RpdmUgZGF0YSxcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2xlbihkaWN0dmlldylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnaXRlcihkaWN0dmlldylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAnCisgICAgICAgICAgICAgICAgICcocmVwcmVzZW50ZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgJworICAgICAgICAgICAgICAgICAnd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2RlcGVuZHMgb25cbicKKyAgICAgICAgICAgICAgICAgIiAgIHRoZSBkaWN0aW9uYXJ5J3MgaGlzdG9yeSBvZiBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuIElmICIKKyAgICAgICAgICAgICAgICAgJ2tleXMsXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgYW5kIGl0ZW1zIHZpZXdzIGFyZSBpdGVyYXRlZCBvdmVyIHdpdGggbm8gJworICAgICAgICAgICAgICAgICAnaW50ZXJ2ZW5pbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBvcmRlciBvZiBpdGVtcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kLiAgVGhpcyBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mICIodmFsdWUsIGtleSkiICcKKyAgICAgICAgICAgICAgICAgJ3BhaXJzIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiemlwKCkiOiAicGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpIi4gIEFub3RoZXIgJworICAgICAgICAgICAgICAgICAnd2F5IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGUgdGhlIHNhbWUgbGlzdCBpcyAicGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW4gJworICAgICAgICAgICAgICAgICAnZC5pdGVtcygpXSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEl0ZXJhdGluZyB2aWV3cyB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgbWF5IHJhaXNlIGEgIlJ1bnRpbWVFcnJvciIgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsICcKKyAgICAgICAgICAgICAgICAgJ2VudHJpZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ3ggaW4gZGljdHZpZXdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyAnCisgICAgICAgICAgICAgICAgICdrZXlzLCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSAiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIlxuJworICAgICAgICAgICAgICAgICAnICAgdHVwbGUpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdLZXlzIHZpZXdzIGFyZSBzZXQtbGlrZSBzaW5jZSB0aGVpciBlbnRyaWVzIGFyZSB1bmlxdWUgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2hhc2hhYmxlLlxuJworICAgICAgICAgICAgICAgICAnSWYgYWxsIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgIihrZXksIHZhbHVlKSIgcGFpcnMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3VuaXF1ZVxuJworICAgICAgICAgICAgICAgICAnYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzICcKKyAgICAgICAgICAgICAgICAgJ3ZpZXdzIGFyZVxuJworICAgICAgICAgICAgICAgICAnbm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgJworICAgICAgICAgICAgICAgICAndW5pcXVlLilcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdhYnN0cmFjdFxuJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcyAiY29sbGVjdGlvbnMuYWJjLlNldCIgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJyI9PSIsXG4nCisgICAgICAgICAgICAgICAgICciPCIsIG9yICJeIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGlzaGVzID0geydlZ2dzJzogMiwgJ3NhdXNhZ2UnOiAxLCAnYmFjb24nOiAxLCAiCisgICAgICAgICAgICAgICAgICInc3BhbSc6IDUwMH1cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBrZXlzID0gZGlzaGVzLmtleXMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHZhbHVlcyA9IGRpc2hlcy52YWx1ZXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBpdGVyYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBuID0gMFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBuICs9IHZhbFxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHByaW50KG4pXG4nCisgICAgICAgICAgICAgICAgICcgICA1MDRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdChrZXlzKVxuJworICAgICAgICAgICAgICAgICAiICAgWydlZ2dzJywgJ2JhY29uJywgJ3NhdXNhZ2UnLCAnc3BhbSddXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdCh2YWx1ZXMpXG4nCisgICAgICAgICAgICAgICAgICcgICBbMiwgMSwgMSwgNTAwXVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGVsIGRpc2hlc1snZWdncyddXG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGVsIGRpc2hlc1snc2F1c2FnZSddXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGlzdChrZXlzKVxuJworICAgICAgICAgICAgICAgICAiICAgWydzcGFtJywgJ2JhY29uJ11cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBrZXlzICYgeydlZ2dzJywgJ2JhY29uJywgJ3NhbGFkJ31cbiIKKyAgICAgICAgICAgICAgICAgIiAgIHsnYmFjb24nfVxuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGtleXMgXiB7J3NhdXNhZ2UnLCAnanVpY2UnfVxuIgorICAgICAgICAgICAgICAgICAiICAgeydqdWljZScsICdzYXVzYWdlJywgJ2JhY29uJywgJ3NwYW0nfVxuIiwKKyAndHlwZXNtZXRob2RzJzogJ1xuJworICAgICAgICAgICAgICAgICAnTWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHVzaW5nIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnbm90YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdUaGVyZSBhcmUgdHdvIGZsYXZvcnM6IGJ1aWx0LWluIG1ldGhvZHMgKHN1Y2ggYXMgImFwcGVuZCgpIiAnCisgICAgICAgICAgICAgICAgICdvbiBsaXN0cylcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBjbGFzcyBpbnN0YW5jZSBtZXRob2RzLiAgQnVpbHQtaW4gbWV0aG9kcyBhcmUgZGVzY3JpYmVkICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICd0eXBlcyB0aGF0IHN1cHBvcnQgdGhlbS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSWYgeW91IGFjY2VzcyBhIG1ldGhvZCAoYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlKVxuJworICAgICAgICAgICAgICAgICAndGhyb3VnaCBhbiBpbnN0YW5jZSwgeW91IGdldCBhIHNwZWNpYWwgb2JqZWN0OiBhICpib3VuZCAnCisgICAgICAgICAgICAgICAgICdtZXRob2QqIChhbHNvXG4nCisgICAgICAgICAgICAgICAgICdjYWxsZWQgKmluc3RhbmNlIG1ldGhvZCopIG9iamVjdC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgYWRkICcKKyAgICAgICAgICAgICAgICAgJ3RoZSAic2VsZiJcbicKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3byAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsIHJlYWQtXG4nCisgICAgICAgICAgICAgICAgICdvbmx5IGF0dHJpYnV0ZXM6ICJtLl9fc2VsZl9fIiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGVzLCBhbmQgIm0uX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ0NhbGxpbmcgIm0oYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIgaXMgY29tcGxldGVseSAnCisgICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgICAgICdjYWxsaW5nICJtLl9fZnVuY19fKG0uX19zZWxmX18sIGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdMaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyAnCisgICAgICAgICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgJworICAgICAgICAgICAgICAgICAnc3RvcmVkIG9uXG4nCisgICAgICAgICAgICAgICAgICd0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKCJtZXRoLl9fZnVuY19fIiksIHNldHRpbmcgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzIG9uIGJvdW5kIG1ldGhvZHMgaXMgZGlzYWxsb3dlZC4gIEF0dGVtcHRpbmcgdG8gJworICAgICAgICAgICAgICAgICAnc2V0IGFuXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhbiAiQXR0cmlidXRlRXJyb3IiIGJlaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZC4gIEluXG4nCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBzZXQgYSBtZXRob2QgYXR0cmlidXRlLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCAnCisgICAgICAgICAgICAgICAgICdpdCBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3VuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0OlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgQzpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBjLm1ldGhvZC53aG9hbWkgPSAnbXkgbmFtZSBpcyBtZXRob2QnICAjIGNhbid0IHNldCBvbiAiCisgICAgICAgICAgICAgICAgICd0aGUgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBBdHRyaWJ1dGVFcnJvcjogJ21ldGhvZCcgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgIgorICAgICAgICAgICAgICAgICAiJ3dob2FtaSdcbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBjLm1ldGhvZC5fX2Z1bmNfXy53aG9hbWkgPSAnbXkgbmFtZSBpcyBtZXRob2QnXG4iCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5tZXRob2Qud2hvYW1pXG4nCisgICAgICAgICAgICAgICAgICIgICAnbXkgbmFtZSBpcyBtZXRob2QnXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAorICd0eXBlc21vZHVsZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNb2R1bGVzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBvbmx5IHNwZWNpYWwgb3BlcmF0aW9uIG9uIGEgbW9kdWxlIGlzIGF0dHJpYnV0ZSBhY2Nlc3M6ICcKKyAgICAgICAgICAgICAgICAgJyJtLm5hbWUiLFxuJworICAgICAgICAgICAgICAgICAnd2hlcmUgKm0qIGlzIGEgbW9kdWxlIGFuZCAqbmFtZSogYWNjZXNzZXMgYSBuYW1lIGRlZmluZWQgaW4gJworICAgICAgICAgICAgICAgICAiKm0qJ3NcbiIKKyAgICAgICAgICAgICAgICAgJ3N5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGUgJworICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAnb24gYSBtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdDsgImltcG9ydCBmb28iIGRvZXMgbm90IHJlcXVpcmUgYSBtb2R1bGUgb2JqZWN0IG5hbWVkICcKKyAgICAgICAgICAgICAgICAgJypmb28qIHRvXG4nCisgICAgICAgICAgICAgICAgICdleGlzdCwgcmF0aGVyIGl0IHJlcXVpcmVzIGFuIChleHRlcm5hbCkgKmRlZmluaXRpb24qIGZvciBhICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAgICAnbmFtZWQgKmZvbyogc29tZXdoZXJlLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSBzcGVjaWFsIGF0dHJpYnV0ZSBvZiBldmVyeSBtb2R1bGUgaXMgIl9fZGljdF9fIi4gVGhpcyBpcyAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgIgorICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlJ3Mgc3ltYm9sIHRhYmxlLCAiCisgICAgICAgICAgICAgICAgICdidXQgZGlyZWN0XG4nCisgICAgICAgICAgICAgICAgICdhc3NpZ25tZW50IHRvIHRoZSAiX19kaWN0X18iIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSAnCisgICAgICAgICAgICAgICAgICdjYW4gd3JpdGVcbicKKyAgICAgICAgICAgICAgICAgJyJtLl9fZGljdF9fW1wnYVwnXSA9IDEiLCB3aGljaCBkZWZpbmVzICJtLmEiIHRvIGJlICIxIiwgYnV0ICcKKyAgICAgICAgICAgICAgICAgInlvdSBjYW4ndFxuIgorICAgICAgICAgICAgICAgICAnd3JpdGUgIm0uX19kaWN0X18gPSB7fSIpLiAgTW9kaWZ5aW5nICJfX2RpY3RfXyIgZGlyZWN0bHkgaXMgJworICAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlcyBidWlsdCBpbnRvIHRoZSBpbnRlcnByZXRlciBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICcKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdcJ3N5c1wnIChidWlsdC1pbik+Ii4gIElmIGxvYWRlZCBmcm9tIGEgZmlsZSwgdGhleSBhcmUgJworICAgICAgICAgICAgICAgICAnd3JpdHRlbiBhc1xuJworICAgICAgICAgICAgICAgICAnIjxtb2R1bGUgXCdvc1wnIGZyb20gJworICAgICAgICAgICAgICAgICAnXCcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljXCc+Ii5cbicsCisgJ3R5cGVzc2VxJzogJ1xuJworICAgICAgICAgICAgICdTZXF1ZW5jZSBUeXBlcyAtLS0gImxpc3QiLCAidHVwbGUiLCAicmFuZ2UiXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGFyZSB0aHJlZSBiYXNpYyBzZXF1ZW5jZSB0eXBlczogbGlzdHMsIHR1cGxlcywgYW5kIHJhbmdlXG4nCisgICAgICAgICAgICAgJ29iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgJworICAgICAgICAgICAgICdiaW5hcnlcbicKKyAgICAgICAgICAgICAnZGF0YSBhbmQgdGV4dCBzdHJpbmdzIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLCBib3RoIG11dGFibGUgYW5kIGltbXV0YWJsZS4gVGhlICcKKyAgICAgICAgICAgICAnImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDXG4nCisgICAgICAgICAgICAgJ2lzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2UgJworICAgICAgICAgICAgICdvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJ29uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyAnCisgICAgICAgICAgICAgJ3ByaW9yaXR5LlxuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAnCisgICAgICAgICAgICAgJyppKixcbicKKyAgICAgICAgICAgICAnKmoqIGFuZCAqayogYXJlIGludGVnZXJzIGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAnbWVldHMgYW55XG4nCisgICAgICAgICAgICAgJ3R5cGUgYW5kIHZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSAiKyIgKGNvbmNhdGVuYXRpb24pIGFuZCAiKiIgJworICAgICAgICAgICAgICcocmVwZXRpdGlvbilcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWNcbicKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8IE5vdGVzICAgICAgfFxuJworICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAnfCAieCBpbiBzIiAgICAgICAgICAgICAgICAgICB8ICJUcnVlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgICcKKyAgICAgICAgICAgICAnfCAoMSkgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiRmFsc2UiICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInggbm90IGluIHMiICAgICAgICAgICAgICAgfCAiRmFsc2UiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICAnCisgICAgICAgICAgICAgJ3wgKDEpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgIlRydWUiICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICsgdCIgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogJworICAgICAgICAgICAgICd8ICg2KSg3KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyAqIG4iIG9yICJuICogcyIgICAgICAgICB8IGVxdWl2YWxlbnQgdG8gYWRkaW5nICpzKiB0byAgICAgICcKKyAgICAgICAgICAgICAnfCAoMikoNykgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0c2VsZiAqbiogdGltZXMgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaV0iICAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICAnCisgICAgICAgICAgICAgJ3wgKDMpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgJworICAgICAgICAgICAgICd8ICgzKSg0KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgICcKKyAgICAgICAgICAgICAnfCAoMykoNSkgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImxlbihzKSIgICAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJtaW4ocykiICAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibWF4KHMpIiAgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAnCisgICAgICAgICAgICAgJ3wgKDgpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqIChhdCBvciBhZnRlciBpbmRleCAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluICcKKyAgICAgICAgICAgICAncGFydGljdWxhcixcbicKKyAgICAgICAgICAgICAndHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG4nCisgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuJworICAgICAgICAgICAgICdlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgJworICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgJ3R5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICcKKyAgICAgICAgICAgICAnQ29tcGFyaXNvbnMgaW5cbicKKyAgICAgICAgICAgICAndGhlIGxhbmd1YWdlIHJlZmVyZW5jZS4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuIFdoaWxlIHRoZSAiaW4iIGFuZCAibm90IGluIiBvcGVyYXRpb25zIGFyZSB1c2VkIG9ubHkgZm9yICcKKyAgICAgICAgICAgICAnc2ltcGxlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICAgICAgICcgICAoc3VjaCBhcyAic3RyIiwgImJ5dGVzIiBhbmQgImJ5dGVhcnJheSIpIGFsc28gdXNlIHRoZW0gZm9yXG4nCisgICAgICAgICAgICAgJyAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gImdnIiBpbiAiZWdncyJcbicKKyAgICAgICAgICAgICAnICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gIjAiIGFyZSB0cmVhdGVkIGFzICIwIiAod2hpY2ggeWllbGRzICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSB0aGF0IGl0ZW1zIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlICpzKiBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZSAnCisgICAgICAgICAgICAgJ3RpbWVzLlxuJworICAgICAgICAgICAgICcgICBUaGlzIG9mdGVuIGhhdW50cyBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICAgICBbW10sIFtdLCBbXV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1szXSwgWzNdLCBbM11dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0ICJbW11dIiBpcyBhIG9uZS1lbGVtZW50IGxpc3QgJworICAgICAgICAgICAgICdjb250YWluaW5nXG4nCisgICAgICAgICAgICAgJyAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSAnCisgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAnICAgdG8gdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4nCisgICAgICAgICAgICAgJyAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4nCisgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbM10sIFs1XSwgWzddXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRnVydGhlciBleHBsYW5hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIEZBUSBlbnRyeSBIb3cgZG8gSSAnCisgICAgICAgICAgICAgJ2NyZWF0ZSBhXG4nCisgICAgICAgICAgICAgJyAgIG11bHRpZGltZW5zaW9uYWwgbGlzdD8uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBzdHJpbmc6ICJsZW4ocykgKyBpIiBvciAibGVuKHMpICsgaiIgaXMgc3Vic3RpdHV0ZWQuICBCdXQgJworICAgICAgICAgICAgICdub3RlXG4nCisgICAgICAgICAgICAgJyAgIHRoYXQgIi0wIiBpcyBzdGlsbCAiMCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIuICBJZiAqaSogb3IgKmoqICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2UgImxlbihzKSIuICBJZiAqaSogaXMgb21pdHRlZCBvciAnCisgICAgICAgICAgICAgJyJOb25lIixcbicKKyAgICAgICAgICAgICAnICAgdXNlICIwIi4gIElmICpqKiBpcyBvbWl0dGVkIG9yICJOb25lIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICpqKiwgdGhlIHNsaWNlIGlzIGVtcHR5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogd2l0aCBzdGVwICprKiBpcyBkZWZpbmVkIGFzICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggICJ4ID0gaSArIG4qayIgc3VjaCB0aGF0ICIwIDw9IG4gJworICAgICAgICAgICAgICc8XG4nCisgICAgICAgICAgICAgJyAgIChqLWkpL2siLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSAiaSIsICJpK2siLCAnCisgICAgICAgICAgICAgJyJpKzIqayIsXG4nCisgICAgICAgICAgICAgJyAgICJpKzMqayIgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuICpqKiBpcyByZWFjaGVkIChidXQgbmV2ZXJcbicKKyAgICAgICAgICAgICAnICAgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlXG4nCisgICAgICAgICAgICAgJyAgICJsZW4ocykiLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciAiTm9uZSIsIHRoZXkgYmVjb21lICcKKyAgICAgICAgICAgICAnImVuZCJcbicKKyAgICAgICAgICAgICAnICAgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqICcKKyAgICAgICAgICAgICAnY2Fubm90IGJlXG4nCisgICAgICAgICAgICAgJyAgIHplcm8uIElmICprKiBpcyAiTm9uZSIsIGl0IGlzIHRyZWF0ZWQgbGlrZSAiMSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc2LiBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXdcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZFxuJworICAgICAgICAgICAgICcgICBjb25jYXRlbmF0aW9uIHdpbGwgaGF2ZSBhIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlICcKKyAgICAgICAgICAgICAndG90YWxcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgbGVuZ3RoLiBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCAnCisgICAgICAgICAgICAgJ3N3aXRjaCB0b1xuJworICAgICAgICAgICAgICcgICBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAic3RyIiBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgJworICAgICAgICAgICAgICd1c2VcbicKKyAgICAgICAgICAgICAnICAgICAic3RyLmpvaW4oKSIgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGFuICJpby5TdHJpbmdJTyJcbicKKyAgICAgICAgICAgICAnICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAiYnl0ZXMiIG9iamVjdHMsIHlvdSBjYW4gc2ltaWxhcmx5IHVzZVxuJworICAgICAgICAgICAgICcgICAgICJieXRlcy5qb2luKCkiIG9yICJpby5CeXRlc0lPIiwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuJworICAgICAgICAgICAgICcgICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhICJieXRlYXJyYXkiIG9iamVjdC4gICJieXRlYXJyYXkiICcKKyAgICAgICAgICAgICAnb2JqZWN0cyBhcmVcbicKKyAgICAgICAgICAgICAnICAgICBtdXRhYmxlIGFuZCBoYXZlIGFuIGVmZmljaWVudCBvdmVyYWxsb2NhdGlvbiBtZWNoYW5pc21cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogaWYgY29uY2F0ZW5hdGluZyAidHVwbGUiIG9iamVjdHMsIGV4dGVuZCBhICJsaXN0IiBpbnN0ZWFkXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzICcKKyAgICAgICAgICAgICAnZG9jdW1lbnRhdGlvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyAicmFuZ2UiKSBvbmx5IHN1cHBvcnQgaXRlbVxuJworICAgICAgICAgICAgICIgICBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb24ndCAiCisgICAgICAgICAgICAgJ3N1cHBvcnRcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnOC4gImluZGV4IiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouICcKKyAgICAgICAgICAgICAnV2hlblxuJworICAgICAgICAgICAgICcgICBzdXBwb3J0ZWQsIHRoZSBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byB0aGUgaW5kZXggbWV0aG9kICcKKyAgICAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAgICAnICAgZWZmaWNpZW50IHNlYXJjaGluZyBvZiBzdWJzZWN0aW9ucyBvZiB0aGUgc2VxdWVuY2UuIFBhc3NpbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyAnCisgICAgICAgICAgICAgJyJzW2k6al0uaW5kZXgoeCkiLFxuJworICAgICAgICAgICAgICcgICBvbmx5IHdpdGhvdXQgY29weWluZyBhbnkgZGF0YSBhbmQgd2l0aCB0aGUgcmV0dXJuZWQgaW5kZXggJworICAgICAgICAgICAgICdiZWluZ1xuJworICAgICAgICAgICAgICcgICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCAnCisgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICcgICBzbGljZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbW11dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5ICcKKyAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgJ3RoYXQgaXMgbm90IGFsc28gaW1wbGVtZW50ZWQgYnkgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBpcyAnCisgICAgICAgICAgICAgJ3N1cHBvcnQgZm9yXG4nCisgICAgICAgICAgICAgJ3RoZSAiaGFzaCgpIiBidWlsdC1pbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyAidHVwbGUiICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VzLCB0b1xuJworICAgICAgICAgICAgICdiZSB1c2VkIGFzICJkaWN0IiBrZXlzIGFuZCBzdG9yZWQgaW4gInNldCIgYW5kICJmcm96ZW5zZXQiICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zICcKKyAgICAgICAgICAgICAndW5oYXNoYWJsZVxuJworICAgICAgICAgICAgICd2YWx1ZXMgd2lsbCByZXN1bHQgaW4gIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uIG11dGFibGUgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcy4gVGhlICJjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlIiBBQkMgaXMgcHJvdmlkZWQgdG8gJworICAgICAgICAgICAgICdtYWtlXG4nCisgICAgICAgICAgICAgJ2l0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAndHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogJworICAgICAgICAgICAgICdpcyBhbnlcbicKKyAgICAgICAgICAgICAnaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSAnCisgICAgICAgICAgICAgJ3R5cGUgYW5kXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICJieXRlYXJyYXkiICcKKyAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICdhY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gIjAgPD0geCA8PSAnCisgICAgICAgICAgICAgJzI1NSIpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICd8ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCAnCisgICAgICAgICAgICAgJ2J5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICcKKyAgICAgICAgICAgICAnaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgJworICAgICAgICAgICAgICd0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgJyp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICdbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iICcKKyAgICAgICAgICAgICAnYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICcKKyAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlICcKKyAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiAnCisgICAgICAgICAgICAgJ3RoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2VxdWVuY2UgKHNhbWUgJworICAgICAgICAgICAgICdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgJ1t4XSIpICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gInMiICcKKyAgICAgICAgICAgICAnKHNhbWUgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgJworICAgICAgICAgICAgICdzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICcKKyAgICAgICAgICAgICAnInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyAnCisgICAgICAgICAgICAgJyJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZXh0ZW5kcyAqcyogd2l0aCB0aGUgY29udGVudHMgJworICAgICAgICAgICAgICdvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChmb3IgdGhlIG1vc3QgcGFydCB0aGUgJworICAgICAgICAgICAgICdzYW1lICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgJ3QiKSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzICcKKyAgICAgICAgICAgICAnY29udGVudHMgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGVhdGVkICpuKiAnCisgICAgICAgICAgICAgJ3RpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBpbnNlcnRzICp4KiBpbnRvICpzKiBhdCAnCisgICAgICAgICAgICAgJ3RoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgJworICAgICAgICAgICAgICdhcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gJworICAgICAgICAgICAgICdbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiAnCisgICAgICAgICAgICAgJ2FuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWxzbyByZW1vdmVzIGl0IGZyb20gJworICAgICAgICAgICAgICcqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnJlbW92ZSh4KSIgICAgICAgICAgICAgICAgICB8IHJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tICcKKyAgICAgICAgICAgICAnKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09ICcKKyAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqICcKKyAgICAgICAgICAgICAnaW4gICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJ3BsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgYnkgJworICAgICAgICAgICAgICdkZWZhdWx0XG4nCisgICAgICAgICAgICAgJyAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgInJldmVyc2UoKSIgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3JcbicKKyAgICAgICAgICAgICAnICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kICcKKyAgICAgICAgICAgICAndXNlcnNcbicKKyAgICAgICAgICAgICAnICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSAnCisgICAgICAgICAgICAgJ3JldmVyc2VkXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4nCisgICAgICAgICAgICAgIiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzbGljaW5nXG4iCisgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gVGhlIHZhbHVlICpuKiBpcyBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3QgaW1wbGVtZW50aW5nXG4nCisgICAgICAgICAgICAgJyAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyIHRoZSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlLlxuJworICAgICAgICAgICAgICcgICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgJworICAgICAgICAgICAgICdtdWx0aXBsZVxuJworICAgICAgICAgICAgICcgICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyIENvbW1vbiBTZXF1ZW5jZSAnCisgICAgICAgICAgICAgJ09wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTGlzdHNcbicKKyAgICAgICAgICAgICAnPT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0xpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICdob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCAnCisgICAgICAgICAgICAgJ3ZhcnkgYnlcbicKKyAgICAgICAgICAgICAnYXBwbGljYXRpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIHNldmVyYWwgd2F5czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6ICcKKyAgICAgICAgICAgICAnIltdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICcKKyAgICAgICAgICAgICAnIlthXSIsXG4nCisgICAgICAgICAgICAgJyAgICAgIlthLCBiLCBjXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSBsaXN0IGNvbXByZWhlbnNpb246ICJbeCBmb3IgeCBpbiBpdGVyYWJsZV0iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiAibGlzdCgpIiBvciAibGlzdChpdGVyYWJsZSkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgIiAgIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyICIKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cyBpdGVyYXRpb24sIG9yIGFuICcKKyAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kXG4nCisgICAgICAgICAgICAgJyAgIHJldHVybmVkLCBzaW1pbGFyIHRvICJpdGVyYWJsZVs6XSIuIEZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgJyJsaXN0KFwnYWJjXCcpIlxuJworICAgICAgICAgICAgICcgICByZXR1cm5zICJbXCdhXCcsIFwnYlwnLCBcJ2NcJ10iIGFuZCAibGlzdCggKDEsIDIsIDMpICkiICcKKyAgICAgICAgICAgICAncmV0dXJucyAiWzEsIDIsXG4nCisgICAgICAgICAgICAgJyAgIDNdIi4gSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3ICcKKyAgICAgICAgICAgICAnZW1wdHlcbicKKyAgICAgICAgICAgICAnICAgbGlzdCwgIltdIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGUgJworICAgICAgICAgICAgICcic29ydGVkKCkiXG4nCisgICAgICAgICAgICAgJyAgIGJ1aWx0LWluLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIGFuZCBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnICAgTGlzdHMgYWxzbyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2Q6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGlzIG1ldGhvZCBzb3J0cyB0aGUgbGlzdCBpbiBwbGFjZSwgdXNpbmcgb25seSAiPCIgJworICAgICAgICAgICAgICdjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICcgICAgICBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmIGFueSAnCisgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAnICAgICAgb3BlcmF0aW9ucyBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbCAoYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgICAgIGxpc3Qgd2lsbCBsaWtlbHkgYmUgbGVmdCBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAic29ydCgpIiBhY2NlcHRzIHR3byBhcmd1bWVudHMgdGhhdCBjYW4gb25seSBiZSBwYXNzZWQgYnlcbicKKyAgICAgICAgICAgICAnICAgICAga2V5d29yZCAoa2V5d29yZC1vbmx5IGFyZ3VtZW50cyk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAnICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciAnCisgICAgICAgICAgICAgJ2V4YW1wbGUsXG4nCisgICAgICAgICAgICAgJyAgICAgICJrZXk9c3RyLmxvd2VyIikuIFRoZSBrZXkgY29ycmVzcG9uZGluZyB0byBlYWNoIGl0ZW0gaW4gJworICAgICAgICAgICAgICd0aGUgbGlzdFxuJworICAgICAgICAgICAgICcgICAgICBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nICcKKyAgICAgICAgICAgICAncHJvY2Vzcy5cbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgb2YgIk5vbmUiIG1lYW5zIHRoYXQgbGlzdCBpdGVtcyBhcmUgJworICAgICAgICAgICAgICdzb3J0ZWRcbicKKyAgICAgICAgICAgICAnICAgICAgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSAiZnVuY3Rvb2xzLmNtcF90b19rZXkoKSIgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gJworICAgICAgICAgICAgICdjb252ZXJ0IGFcbicKKyAgICAgICAgICAgICAnICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvICJUcnVlIiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGlzIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yIGVjb25vbXkgb2YgJworICAgICAgICAgICAgICdzcGFjZVxuJworICAgICAgICAgICAgICcgICAgICB3aGVuIHNvcnRpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0ICcKKyAgICAgICAgICAgICAnb3BlcmF0ZXNcbicKKyAgICAgICAgICAgICAnICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnKHVzZVxuJworICAgICAgICAgICAgICcgICAgICAic29ydGVkKCkiIHRvIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCAnCisgICAgICAgICAgICAgJ2luc3RhbmNlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSAic29ydCgpIiBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICAgICBzdGFibGUgaWYgaXQgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgICAgIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciAnCisgICAgICAgICAgICAgJ3NvcnRpbmcgaW5cbicKKyAgICAgICAgICAgICAnICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5ICcKKyAgICAgICAgICAgICAnc2FsYXJ5XG4nCisgICAgICAgICAgICAgJyAgICAgIGdyYWRlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nICcKKyAgICAgICAgICAgICAnc29ydGVkLFxuJworICAgICAgICAgICAgICcgICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSAnCisgICAgICAgICAgICAgJ2xpc3QgaXNcbicKKyAgICAgICAgICAgICAnICAgICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0ICcKKyAgICAgICAgICAgICAnYXBwZWFyXG4nCisgICAgICAgICAgICAgJyAgICAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgIlZhbHVlRXJyb3IiIGlmIGl0IGNhbiAnCisgICAgICAgICAgICAgJ2RldGVjdFxuJworICAgICAgICAgICAgICcgICAgICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUdXBsZXNcbicKKyAgICAgICAgICAgICAnPT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUdXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlICcKKyAgICAgICAgICAgICAnY29sbGVjdGlvbnMgb2ZcbicKKyAgICAgICAgICAgICAnaGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGUgJworICAgICAgICAgICAgICciZW51bWVyYXRlKCkiXG4nCisgICAgICAgICAgICAgJ2J1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGltbXV0YWJsZSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ29mIGhvbW9nZW5lb3VzIGRhdGEgaXMgbmVlZGVkIChzdWNoIGFzIGFsbG93aW5nIHN0b3JhZ2UgaW4gYSAnCisgICAgICAgICAgICAgJyJzZXQiIG9yXG4nCisgICAgICAgICAgICAgJyJkaWN0IiBpbnN0YW5jZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHBhaXIgb2YgcGFyZW50aGVzZXMgdG8gZGVub3RlIHRoZSBlbXB0eSB0dXBsZTogJworICAgICAgICAgICAgICciKCkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiAiYSwiIG9yICcKKyAgICAgICAgICAgICAnIihhLCkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICJhLCBiLCBjIiBvciAiKGEsIGIsIGMpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyB0aGUgInR1cGxlKCkiIGJ1aWx0LWluOiAidHVwbGUoKSIgb3IgJworICAgICAgICAgICAgICcidHVwbGUoaXRlcmFibGUpIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgJworICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAiICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgIgorICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gJworICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICcgICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSB0dXBsZSwgaXQgaXMgcmV0dXJuZWRcbicKKyAgICAgICAgICAgICAnICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgInR1cGxlKFwnYWJjXCcpIiByZXR1cm5zICIoXCdhXCcsICcKKyAgICAgICAgICAgICAnXCdiXCcsIFwnY1wnKSJcbicKKyAgICAgICAgICAgICAnICAgYW5kICJ0dXBsZSggWzEsIDIsIDNdICkiIHJldHVybnMgIigxLCAyLCAzKSIuIElmIG5vIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLCAiKCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIGFjdHVhbGx5IHRoZSBjb21tYSB3aGljaCBtYWtlcyBhIHR1cGxlLCBub3QgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgcGFyZW50aGVzZXMuIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgJworICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICcgICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgJworICAgICAgICAgICAgICdhbWJpZ3VpdHkuXG4nCisgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlLCAiZihhLCBiLCBjKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgJworICAgICAgICAgICAgICdhcmd1bWVudHMsXG4nCisgICAgICAgICAgICAgJyAgIHdoaWxlICJmKChhLCBiLCBjKSkiIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgMy10dXBsZSBhcyB0aGUgJworICAgICAgICAgICAgICdzb2xlXG4nCisgICAgICAgICAgICAgJyAgIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBzZXF1ZW5jZSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyAnCisgICAgICAgICAgICAgJ2NsZWFyZXJcbicKKyAgICAgICAgICAgICAndGhhbiBhY2Nlc3MgYnkgaW5kZXgsICJjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkiIG1heSBiZSBhIG1vcmVcbicKKyAgICAgICAgICAgICAnYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1Jhbmdlc1xuJworICAgICAgICAgICAgICc9PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicmFuZ2UiIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBhbmQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdjb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluICJmb3IiICcKKyAgICAgICAgICAgICAnbG9vcHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyByYW5nZShzdG9wKVxuJworICAgICAgICAgICAgICdjbGFzcyByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGFyZ3VtZW50cyB0byB0aGUgcmFuZ2UgY29uc3RydWN0b3IgbXVzdCBiZSBpbnRlZ2VycyAnCisgICAgICAgICAgICAgJyhlaXRoZXJcbicKKyAgICAgICAgICAgICAnICAgYnVpbHQtaW4gImludCIgb3IgYW55IG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlICJfX2luZGV4X18iXG4nCisgICAgICAgICAgICAgJyAgIHNwZWNpYWwgbWV0aG9kKS4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgJworICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICcgICAiMSIuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICIwIi4gJworICAgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAgICcgICAqc3RlcCogaXMgemVybywgIlZhbHVlRXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciBhIHBvc2l0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgInIiIGFyZSAnCisgICAgICAgICAgICAgJ2RldGVybWluZWRcbicKKyAgICAgICAgICAgICAnICAgYnkgdGhlIGZvcm11bGEgInJbaV0gPSBzdGFydCArIHN0ZXAqaSIgd2hlcmUgImkgPj0gMCIgYW5kICcKKyAgICAgICAgICAgICAnInJbaV0gPFxuJworICAgICAgICAgICAgICcgICBzdG9wIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciBhIG5lZ2F0aXZlICpzdGVwKiwgdGhlIGNvbnRlbnRzIG9mIHRoZSByYW5nZSBhcmUgc3RpbGxcbicKKyAgICAgICAgICAgICAnICAgZGV0ZXJtaW5lZCBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiwgYnV0IHRoZVxuJworICAgICAgICAgICAgICcgICBjb25zdHJhaW50cyBhcmUgImkgPj0gMCIgYW5kICJyW2ldID4gc3RvcCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBIHJhbmdlIG9iamVjdCB3aWxsIGJlIGVtcHR5IGlmICJyWzBdIiBkb2VzIG5vdCBtZWV0IHRoZSAnCisgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnN0cmFpbnQuIFJhbmdlcyBkbyBzdXBwb3J0IG5lZ2F0aXZlIGluZGljZXMsIGJ1dCB0aGVzZSAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICcgICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBieVxuJworICAgICAgICAgICAgICcgICB0aGUgcG9zaXRpdmUgaW5kaWNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJyAgIHBlcm1pdHRlZCBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyAibGVuKCkiKSBtYXkgcmFpc2VcbicKKyAgICAgICAgICAgICAnICAgIk92ZXJmbG93RXJyb3IiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmFuZ2UgZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxMCkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDEwLCAzKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDMsIDYsIDldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwgLTcsIC04LCAtOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFtdXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDApKVxuJworICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmFuZ2VzIGltcGxlbWVudCBhbGwgb2YgdGhlIGNvbW1vbiBzZXF1ZW5jZSBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAnZXhjZXB0XG4nCisgICAgICAgICAgICAgJyAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlICcKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICcgICBjYW4gb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgcmVwZXRpdGlvbiBhbmQgY29uY2F0ZW5hdGlvbiB3aWxsIHVzdWFsbHkgdmlvbGF0ZSB0aGF0ICcKKyAgICAgICAgICAgICAncGF0dGVybikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzdGFydFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RhcnQqIHBhcmFtZXRlciAob3IgIjAiIGlmIHRoZSAnCisgICAgICAgICAgICAgJ3BhcmFtZXRlciB3YXNcbicKKyAgICAgICAgICAgICAnICAgICAgbm90IHN1cHBsaWVkKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc3RvcFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RvcCogcGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzdGVwXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yICIxIiBpZiB0aGUgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAnd2FzXG4nCisgICAgICAgICAgICAgJyAgICAgIG5vdCBzdXBwbGllZClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBhZHZhbnRhZ2Ugb2YgdGhlICJyYW5nZSIgdHlwZSBvdmVyIGEgcmVndWxhciAibGlzdCIgb3IgJworICAgICAgICAgICAgICcidHVwbGUiIGlzXG4nCisgICAgICAgICAgICAgJ3RoYXQgYSAicmFuZ2UiIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbCkgYW1vdW50ICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnbWVtb3J5LCBubyBtYXR0ZXIgdGhlIHNpemUgb2YgdGhlIHJhbmdlIGl0IHJlcHJlc2VudHMgKGFzIGl0ICcKKyAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICdzdG9yZXMgdGhlICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIHZhbHVlcywgY2FsY3VsYXRpbmcgJworICAgICAgICAgICAgICdpbmRpdmlkdWFsXG4nCisgICAgICAgICAgICAgJ2l0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1JhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSAiY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlIiBBQkMsIGFuZFxuJworICAgICAgICAgICAgICdwcm92aWRlIGZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggJworICAgICAgICAgICAgICdsb29rdXAsXG4nCisgICAgICAgICAgICAgJ3NsaWNpbmcgYW5kIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSBTZXF1ZW5jZSBUeXBlcyAtLS0gJworICAgICAgICAgICAgICdsaXN0LFxuJworICAgICAgICAgICAgICd0dXBsZSwgcmFuZ2UpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IHJcbicKKyAgICAgICAgICAgICAncmFuZ2UoMCwgMjAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiAxMSBpbiByXG4nCisgICAgICAgICAgICAgJ0ZhbHNlXG4nCisgICAgICAgICAgICAgJz4+PiAxMCBpbiByXG4nCisgICAgICAgICAgICAgJ1RydWVcbicKKyAgICAgICAgICAgICAnPj4+IHIuaW5kZXgoMTApXG4nCisgICAgICAgICAgICAgJzVcbicKKyAgICAgICAgICAgICAnPj4+IHJbNV1cbicKKyAgICAgICAgICAgICAnMTBcbicKKyAgICAgICAgICAgICAnPj4+IHJbOjVdXG4nCisgICAgICAgICAgICAgJ3JhbmdlKDAsIDEwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gclstMV1cbicKKyAgICAgICAgICAgICAnMThcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1Rlc3RpbmcgcmFuZ2Ugb2JqZWN0cyBmb3IgZXF1YWxpdHkgd2l0aCAiPT0iIGFuZCAiIT0iIGNvbXBhcmVzICcKKyAgICAgICAgICAgICAndGhlbSBhc1xuJworICAgICAgICAgICAgICdzZXF1ZW5jZXMuICBUaGF0IGlzLCB0d28gcmFuZ2Ugb2JqZWN0cyBhcmUgY29uc2lkZXJlZCBlcXVhbCBpZiAnCisgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAncmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlICcKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICd0aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgInN0YXJ0IiwgInN0b3AiIGFuZCAnCisgICAgICAgICAgICAgJyJzdGVwIlxuJworICAgICAgICAgICAgICdhdHRyaWJ1dGVzLCBmb3IgZXhhbXBsZSAicmFuZ2UoMCkgPT0gcmFuZ2UoMiwgMSwgMykiIG9yICcKKyAgICAgICAgICAgICAnInJhbmdlKDAsIDMsXG4nCisgICAgICAgICAgICAgJzIpID09IHJhbmdlKDAsIDQsIDIpIi4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCAnCisgICAgICAgICAgICAgJ3NsaWNpbmdcbicKKyAgICAgICAgICAgICAnYW5kIG5lZ2F0aXZlIGluZGljZXMuIFRlc3QgImludCIgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiAnCisgICAgICAgICAgICAgJ2NvbnN0YW50XG4nCisgICAgICAgICAgICAgJ3RpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBEZWZpbmUgJz09JyBhbmQgJyE9JyB0byBjb21wYXJlIHJhbmdlICIKKyAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICdiYXNlZCBvbiB0aGUgc2VxdWVuY2Ugb2YgdmFsdWVzIHRoZXkgZGVmaW5lIChpbnN0ZWFkIG9mICcKKyAgICAgICAgICAgICAnY29tcGFyaW5nXG4nCisgICAgICAgICAgICAgJ2Jhc2VkIG9uIG9iamVjdCBpZGVudGl0eSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICogVGhlIGxpbnNwYWNlIHJlY2lwZSBzaG93cyBob3cgdG8gaW1wbGVtZW50IGEgbGF6eSB2ZXJzaW9uICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgIHJhbmdlIHRoYXQgc3VpdGFibGUgZm9yIGZsb2F0aW5nIHBvaW50IGFwcGxpY2F0aW9ucy5cbicsCisgJ3R5cGVzc2VxLW11dGFibGUnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBkZWZpbmVkIG9uICcKKyAgICAgICAgICAgICAgICAgICAgICdtdXRhYmxlIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdwcm92aWRlZCB0byBtYWtlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiAnCisgICAgICAgICAgICAgICAgICAgICAnY3VzdG9tIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAndHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ3R5cGUsICp0KiBpcyBhbnlcbicKKyAgICAgICAgICAgICAgICAgICAgICdpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgJ21lZXRzIGFueSB0eXBlIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgICAgICciYnl0ZWFycmF5IiBvbmx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggJworICAgICAgICAgICAgICAgICAgICAgJzw9IDI1NSIpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1Jlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJyp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogJworICAgICAgICAgICAgICAgICAgICAgJ3RvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICcKKyAgICAgICAgICAgICAgICAgICAgICcqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW10iICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcic1tpOmo6a10iIGFyZSAgIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTpqOmtdIiBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmFwcGVuZCh4KSIgICAgICAgICAgICAgICAgICB8IGFwcGVuZHMgKngqIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAiZGVsICcKKyAgICAgICAgICAgICAgICAgICAgICdzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuY29weSgpIiAgICAgICAgICAgICAgICAgICAgIHwgY3JlYXRlcyBhIHNoYWxsb3cgJworICAgICAgICAgICAgICAgICAgICAgJ2NvcHkgb2YgInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICcic1s6XSIpICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChmb3IgdGhlIG1vc3QgJworICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJzW2xlbihzKTpsZW4ocyldICcKKyAgICAgICAgICAgICAgICAgICAgICc9IHQiKSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqICcKKyAgICAgICAgICAgICAgICAgICAgICdhdCB0aGUgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogJworICAgICAgICAgICAgICAgICAgICAgJyhzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaTppXSA9ICcKKyAgICAgICAgICAgICAgICAgICAgICdbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHJldHJpZXZlcyB0aGUgaXRlbSBhdCAnCisgICAgICAgICAgICAgICAgICAgICAnKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAnCisgICAgICAgICAgICAgICAgICAgICAnKnMqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tICpzKiAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09ICcKKyAgICAgICAgICAgICAgICAgICAgICd4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgJworICAgICAgICAgICAgICAgICAgICAgJypzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ3BsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTm90ZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdieSBkZWZhdWx0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICczLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAnKnMqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBlY29ub215IG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyAnCisgICAgICAgICAgICAgICAgICAgICAncmVtaW5kIHVzZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgcmV2ZXJzZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc1LiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgJworICAgICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAiICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0ICIKKyAgICAgICAgICAgICAgICAgICAgICdzbGljaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogImNsZWFyKCkiIGFuZCAiY29weSgpIiBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZWQgbXVsdGlwbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyIENvbW1vbiBTZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9ucy5cbicsCisgJ3VuYXJ5JzogJ1xuJworICAgICAgICAgICdVbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICdwcmlvcml0eTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiLSIgKG1pbnVzKSBvcGVyYXRvciB5aWVsZHMgdGhlIG5lZ2F0aW9uIG9mIGl0cyBudW1lcmljXG4nCisgICAgICAgICAgJ2FyZ3VtZW50LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHVuYXJ5ICIrIiAocGx1cykgb3BlcmF0b3IgeWllbGRzIGl0cyBudW1lcmljIGFyZ3VtZW50ICcKKyAgICAgICAgICAndW5jaGFuZ2VkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHVuYXJ5ICJ+IiAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICcKKyAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgJ2ludGVnZXIgYXJndW1lbnQuICBUaGUgYml0d2lzZSBpbnZlcnNpb24gb2YgIngiIGlzIGRlZmluZWQgYXNcbicKKyAgICAgICAgICAnIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0luIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCisgJ3doaWxlJzogJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0cnVlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2ZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ3RpbWVcbicKKyAgICAgICAgICAnaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzICcKKyAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAnYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyAnCisgICAgICAgICAgJ2JhY2tcbicKKyAgICAgICAgICAndG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCisgJ3dpdGgnOiAnXG4nCisgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxuJworICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gV2l0aCBTdGF0ZW1lbnRcbicKKyAgICAgICAgICdDb250ZXh0IE1hbmFnZXJzKS4gVGhpcyBhbGxvd3MgY29tbW9uICJ0cnkiLi4uImV4Y2VwdCIuLi4iZmluYWxseSJcbicKKyAgICAgICAgICd1c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4nCisgICAgICAgICAnICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgZXhlY3V0aW9uIG9mIHRoZSAid2l0aCIgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuJworICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICJ3aXRoX2l0ZW0iKVxuJworICAgICAgICAgJyAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuJworICAgICAgICAgJyAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbicKKyAgICAgICAgICcgICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzICcKKyAgICAgICAgICdiZVxuJworICAgICAgICAgJyAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuJworICAgICAgICAgJyAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbicKKyAgICAgICAgICcgICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbicKKyAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4nCisgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICcgICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAnICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbicKKyAgICAgICAgICcgICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuJworICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgJworICAgICAgICAgJ3RoZVxuJworICAgICAgICAgJyAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uICcKKyAgICAgICAgICdwcm9jZWVkc1xuJworICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbicKKyAgICAgICAgICdtdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgc3VpdGVcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcgICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gJworICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJywKKyAneWllbGQnOiAnXG4nCisgICAgICAgICAgJ1RoZSAieWllbGQiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHlpZWxkX3N0bXQgOjo9IHlpZWxkX2V4cHJlc3Npb25cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgInlpZWxkIiBzdGF0ZW1lbnQgaXMgc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gYSB5aWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb24uXG4nCisgICAgICAgICAgJ1RoZSB5aWVsZCBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gb21pdCB0aGUgcGFyZW50aGVzZXMgdGhhdCB3b3VsZFxuJworICAgICAgICAgICdvdGhlcndpc2UgYmUgcmVxdWlyZWQgaW4gdGhlIGVxdWl2YWxlbnQgeWllbGQgZXhwcmVzc2lvbiAnCisgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAnRm9yIGV4YW1wbGUsIHRoZSB5aWVsZCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB5aWVsZCA8ZXhwcj5cbicKKyAgICAgICAgICAnICAgeWllbGQgZnJvbSA8ZXhwcj5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2FyZSBlcXVpdmFsZW50IHRvIHRoZSB5aWVsZCBleHByZXNzaW9uIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICh5aWVsZCA8ZXhwcj4pXG4nCisgICAgICAgICAgJyAgICh5aWVsZCBmcm9tIDxleHByPilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1lpZWxkIGV4cHJlc3Npb25zIGFuZCBzdGF0ZW1lbnRzIGFyZSBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhXG4nCisgICAgICAgICAgJypnZW5lcmF0b3IqIGZ1bmN0aW9uLCBhbmQgYXJlIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgJworICAgICAgICAgICdnZW5lcmF0b3JcbicKKyAgICAgICAgICAnZnVuY3Rpb24uICBVc2luZyB5aWVsZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byAnCisgICAgICAgICAgJ2NhdXNlXG4nCisgICAgICAgICAgJ3RoYXQgZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuJworICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0ZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSBZaWVsZCAnCisgICAgICAgICAgJ2V4cHJlc3Npb25zXG4nCisgICAgICAgICAgJ3NlY3Rpb24uXG4nfQpkaWZmIC0tZ2l0IGEvTGliL3JhbmRvbS5weSBiL0xpYi9yYW5kb20ucHkKaW5kZXggNGVmYmIwYS4uYTA0NzQ0NCAxMDA2NDQKLS0tIGEvTGliL3JhbmRvbS5weQorKysgYi9MaWIvcmFuZG9tLnB5CkBAIC04LDYgKzgsNyBAQAogICAgIC0tLS0tLS0tLQogICAgICAgICAgICBwaWNrIHJhbmRvbSBlbGVtZW50CiAgICAgICAgICAgIHBpY2sgcmFuZG9tIHNhbXBsZQorICAgICAgICAgICBwaWNrIHdlaWdodGVkIHJhbmRvbSBzYW1wbGUKICAgICAgICAgICAgZ2VuZXJhdGUgcmFuZG9tIHBlcm11dGF0aW9uCiAKICAgICBkaXN0cmlidXRpb25zIG9uIHRoZSByZWFsIGxpbmU6CkBAIC00MywxMiArNDQsMTQgQEAKIGZyb20gb3MgaW1wb3J0IHVyYW5kb20gYXMgX3VyYW5kb20KIGZyb20gX2NvbGxlY3Rpb25zX2FiYyBpbXBvcnQgU2V0IGFzIF9TZXQsIFNlcXVlbmNlIGFzIF9TZXF1ZW5jZQogZnJvbSBoYXNobGliIGltcG9ydCBzaGE1MTIgYXMgX3NoYTUxMgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCitpbXBvcnQgYmlzZWN0IGFzIF9iaXNlY3QKIAogX19hbGxfXyA9IFsiUmFuZG9tIiwic2VlZCIsInJhbmRvbSIsInVuaWZvcm0iLCJyYW5kaW50IiwiY2hvaWNlIiwic2FtcGxlIiwKICAgICAgICAgICAgInJhbmRyYW5nZSIsInNodWZmbGUiLCJub3JtYWx2YXJpYXRlIiwibG9nbm9ybXZhcmlhdGUiLAogICAgICAgICAgICAiZXhwb3ZhcmlhdGUiLCJ2b25taXNlc3ZhcmlhdGUiLCJnYW1tYXZhcmlhdGUiLCJ0cmlhbmd1bGFyIiwKICAgICAgICAgICAgImdhdXNzIiwiYmV0YXZhcmlhdGUiLCJwYXJldG92YXJpYXRlIiwid2VpYnVsbHZhcmlhdGUiLAotICAgICAgICAgICAiZ2V0c3RhdGUiLCJzZXRzdGF0ZSIsICJnZXRyYW5kYml0cyIsCisgICAgICAgICAgICJnZXRzdGF0ZSIsInNldHN0YXRlIiwgImdldHJhbmRiaXRzIiwgImNob2ljZXMiLAogICAgICAgICAgICAiU3lzdGVtUmFuZG9tIl0KIAogTlZfTUFHSUNDT05TVCA9IDQgKiBfZXhwKC0wLjUpL19zcXJ0KDIuMCkKQEAgLTEwNSwxNSArMTA4LDYgQEAKIAogICAgICAgICAiIiIKIAotICAgICAgICBpZiBhIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBTZWVkIHdpdGggZW5vdWdoIGJ5dGVzIHRvIHNwYW4gdGhlIDE5OTM3IGJpdAotICAgICAgICAgICAgICAgICMgc3RhdGUgc3BhY2UgZm9yIHRoZSBNZXJzZW5uZSBUd2lzdGVyCi0gICAgICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKF91cmFuZG9tKDI1MDApLCAnYmlnJykKLSAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICAgICAgICAgIGltcG9ydCB0aW1lCi0gICAgICAgICAgICAgICAgYSA9IGludCh0aW1lLnRpbWUoKSAqIDI1NikgIyB1c2UgZnJhY3Rpb25hbCBzZWNvbmRzCi0KICAgICAgICAgaWYgdmVyc2lvbiA9PSAxIGFuZCBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzKSk6CiAgICAgICAgICAgICB4ID0gb3JkKGFbMF0pIDw8IDcgaWYgYSBlbHNlIDAKICAgICAgICAgICAgIGZvciBjIGluIGE6CkBAIC0xMjEsMTIgKzExNSwxMSBAQAogICAgICAgICAgICAgeCBePSBsZW4oYSkKICAgICAgICAgICAgIGEgPSAtMiBpZiB4ID09IC0xIGVsc2UgeAogCi0gICAgICAgIGlmIHZlcnNpb24gPT0gMjoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgKHN0ciwgYnl0ZXMsIGJ5dGVhcnJheSkpOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKLSAgICAgICAgICAgICAgICBhICs9IF9zaGE1MTIoYSkuZGlnZXN0KCkKLSAgICAgICAgICAgICAgICBhID0gaW50LmZyb21fYnl0ZXMoYSwgJ2JpZycpCisgICAgICAgIGlmIHZlcnNpb24gPT0gMiBhbmQgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGEsIHN0cik6CisgICAgICAgICAgICAgICAgYSA9IGEuZW5jb2RlKCkKKyAgICAgICAgICAgIGEgKz0gX3NoYTUxMihhKS5kaWdlc3QoKQorICAgICAgICAgICAgYSA9IGludC5mcm9tX2J5dGVzKGEsICdiaWcnKQogCiAgICAgICAgIHN1cGVyKCkuc2VlZChhKQogICAgICAgICBzZWxmLmdhdXNzX25leHQgPSBOb25lCkBAIC0zNDQsNiArMzM3LDI5IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gcG9wdWxhdGlvbltqXQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKKyAgICBkZWYgY2hvaWNlcyhzZWxmLCBwb3B1bGF0aW9uLCB3ZWlnaHRzPU5vbmUsICosIGN1bV93ZWlnaHRzPU5vbmUsIGs9MSk6CisgICAgICAgICIiIlJldHVybiBhIGsgc2l6ZWQgbGlzdCBvZiBwb3B1bGF0aW9uIGVsZW1lbnRzIGNob3NlbiB3aXRoIHJlcGxhY2VtZW50LgorCisgICAgICAgIElmIHRoZSByZWxhdGl2ZSB3ZWlnaHRzIG9yIGN1bXVsYXRpdmUgd2VpZ2h0cyBhcmUgbm90IHNwZWNpZmllZCwKKyAgICAgICAgdGhlIHNlbGVjdGlvbnMgYXJlIG1hZGUgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFuZG9tID0gc2VsZi5yYW5kb20KKyAgICAgICAgaWYgY3VtX3dlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIHdlaWdodHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBfaW50ID0gaW50CisgICAgICAgICAgICAgICAgdG90YWwgPSBsZW4ocG9wdWxhdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gW3BvcHVsYXRpb25bX2ludChyYW5kb20oKSAqIHRvdGFsKV0gZm9yIGkgaW4gcmFuZ2UoayldCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGN1bV93ZWlnaHRzID0gbGlzdChfaXRlcnRvb2xzLmFjY3VtdWxhdGUod2VpZ2h0cykpCisgICAgICAgIGVsaWYgd2VpZ2h0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IHNwZWNpZnkgYm90aCB3ZWlnaHRzIGFuZCBjdW11bGF0aXZlX3dlaWdodHMnKQorICAgICAgICBpZiBsZW4oY3VtX3dlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RoZSBudW1iZXIgb2Ygd2VpZ2h0cyBkb2VzIG5vdCBtYXRjaCB0aGUgcG9wdWxhdGlvbicpCisgICAgICAgIGJpc2VjdCA9IF9iaXNlY3QuYmlzZWN0CisgICAgICAgIHRvdGFsID0gY3VtX3dlaWdodHNbLTFdCisgICAgICAgIHJldHVybiBbcG9wdWxhdGlvbltiaXNlY3QoY3VtX3dlaWdodHMsIHJhbmRvbSgpICogdG90YWwpXSBmb3IgaSBpbiByYW5nZShrKV0KKwogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVhbC12YWx1ZWQgZGlzdHJpYnV0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02MTUsMTEgKzYzMSwxMSBAQAogCiAgICAgICAgICMgVGhpcyB2ZXJzaW9uIGR1ZSB0byBKYW5uZSBTaW5ra29uZW4sIGFuZCBtYXRjaGVzIGFsbCB0aGUgc3RkCiAgICAgICAgICMgdGV4dHMgKGUuZy4sIEtudXRoIFZvbCAyIEVkIDMgcGcgMTM0ICJ0aGUgYmV0YSBkaXN0cmlidXRpb24iKS4KLSAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLikKKyAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLjApCiAgICAgICAgIGlmIHkgPT0gMDoKICAgICAgICAgICAgIHJldHVybiAwLjAKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB5IC8gKHkgKyBzZWxmLmdhbW1hdmFyaWF0ZShiZXRhLCAxLikpCisgICAgICAgICAgICByZXR1cm4geSAvICh5ICsgc2VsZi5nYW1tYXZhcmlhdGUoYmV0YSwgMS4wKSkKIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gUGFyZXRvIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTczNCw2ICs3NTAsNyBAQAogcmFuZHJhbmdlID0gX2luc3QucmFuZHJhbmdlCiBzYW1wbGUgPSBfaW5zdC5zYW1wbGUKIHNodWZmbGUgPSBfaW5zdC5zaHVmZmxlCitjaG9pY2VzID0gX2luc3QuY2hvaWNlcwogbm9ybWFsdmFyaWF0ZSA9IF9pbnN0Lm5vcm1hbHZhcmlhdGUKIGxvZ25vcm12YXJpYXRlID0gX2luc3QubG9nbm9ybXZhcmlhdGUKIGV4cG92YXJpYXRlID0gX2luc3QuZXhwb3ZhcmlhdGUKZGlmZiAtLWdpdCBhL0xpYi9yZS5weSBiL0xpYi9yZS5weQppbmRleCBkZGU4OTAxLi5kMzIxY2ZmIDEwMDY0NAotLS0gYS9MaWIvcmUucHkKKysrIGIvTGliL3JlLnB5CkBAIC0xMTksOSArMTE5LDEwIEBACiAKICIiIgogCi1pbXBvcnQgc3lzCitpbXBvcnQgZW51bQogaW1wb3J0IHNyZV9jb21waWxlCiBpbXBvcnQgc3JlX3BhcnNlCitpbXBvcnQgZnVuY3Rvb2xzCiB0cnk6CiAgICAgaW1wb3J0IF9sb2NhbGUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTEzOCwxOCArMTM5LDI2IEBACiAKIF9fdmVyc2lvbl9fID0gIjIuMi4xIgogCi0jIGZsYWdzCi1BID0gQVNDSUkgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19BU0NJSSAjIGFzc3VtZSBhc2NpaSAibG9jYWxlIgotSSA9IElHTk9SRUNBU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKLUwgPSBMT0NBTEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19MT0NBTEUgIyBhc3N1bWUgY3VycmVudCA4LWJpdCBsb2NhbGUKLVUgPSBVTklDT0RFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVU5JQ09ERSAjIGFzc3VtZSB1bmljb2RlICJsb2NhbGUiCi1NID0gTVVMVElMSU5FID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKLVMgPSBET1RBTEwgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ET1RBTEwgIyBtYWtlIGRvdCBtYXRjaCBuZXdsaW5lCi1YID0gVkVSQk9TRSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1ZFUkJPU0UgIyBpZ25vcmUgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKLQotIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQotVCA9IFRFTVBMQVRFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVEVNUExBVEUgIyBkaXNhYmxlIGJhY2t0cmFja2luZwotREVCVUcgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgorY2xhc3MgUmVnZXhGbGFnKGVudW0uSW50RmxhZyk6CisgICAgQVNDSUkgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19BU0NJSSAjIGFzc3VtZSBhc2NpaSAibG9jYWxlIgorICAgIElHTk9SRUNBU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKKyAgICBMT0NBTEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19MT0NBTEUgIyBhc3N1bWUgY3VycmVudCA4LWJpdCBsb2NhbGUKKyAgICBVTklDT0RFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVU5JQ09ERSAjIGFzc3VtZSB1bmljb2RlICJsb2NhbGUiCisgICAgTVVMVElMSU5FID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKKyAgICBET1RBTEwgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ET1RBTEwgIyBtYWtlIGRvdCBtYXRjaCBuZXdsaW5lCisgICAgVkVSQk9TRSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1ZFUkJPU0UgIyBpZ25vcmUgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKKyAgICBBID0gQVNDSUkKKyAgICBJID0gSUdOT1JFQ0FTRQorICAgIEwgPSBMT0NBTEUKKyAgICBVID0gVU5JQ09ERQorICAgIE0gPSBNVUxUSUxJTkUKKyAgICBTID0gRE9UQUxMCisgICAgWCA9IFZFUkJPU0UKKyAgICAjIHNyZSBleHRlbnNpb25zIChleHBlcmltZW50YWwsIGRvbid0IHJlbHkgb24gdGhlc2UpCisgICAgVEVNUExBVEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19URU1QTEFURSAjIGRpc2FibGUgYmFja3RyYWNraW5nCisgICAgVCA9IFRFTVBMQVRFCisgICAgREVCVUcgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgorZ2xvYmFscygpLnVwZGF0ZShSZWdleEZsYWcuX19tZW1iZXJzX18pCiAKICMgc3JlIGV4Y2VwdGlvbgogZXJyb3IgPSBzcmVfY29tcGlsZS5lcnJvcgpAQCAtMjI2LDcgKzIzNSw3IEBACiBkZWYgcHVyZ2UoKToKICAgICAiQ2xlYXIgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYWNoZXMiCiAgICAgX2NhY2hlLmNsZWFyKCkKLSAgICBfY2FjaGVfcmVwbC5jbGVhcigpCisgICAgX2NvbXBpbGVfcmVwbC5jYWNoZV9jbGVhcigpCiAKIGRlZiB0ZW1wbGF0ZShwYXR0ZXJuLCBmbGFncz0wKToKICAgICAiQ29tcGlsZSBhIHRlbXBsYXRlIHBhdHRlcm4sIHJldHVybmluZyBhIHBhdHRlcm4gb2JqZWN0IgpAQCAtMjcwLDcgKzI3OSw2IEBACiAjIGludGVybmFscwogCiBfY2FjaGUgPSB7fQotX2NhY2hlX3JlcGwgPSB7fQogCiBfcGF0dGVybl90eXBlID0gdHlwZShzcmVfY29tcGlsZS5jb21waWxlKCIiLCAwKSkKIApAQCAtMzAzLDE3ICszMTEsMTAgQEAKICAgICAgICAgX2NhY2hlW3R5cGUocGF0dGVybiksIHBhdHRlcm4sIGZsYWdzXSA9IHAsIGxvYwogICAgIHJldHVybiBwCiAKK0BmdW5jdG9vbHMubHJ1X2NhY2hlKF9NQVhDQUNIRSkKIGRlZiBfY29tcGlsZV9yZXBsKHJlcGwsIHBhdHRlcm4pOgogICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgcmVwbGFjZW1lbnQgcGF0dGVybgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9jYWNoZV9yZXBsW3JlcGwsIHBhdHRlcm5dCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgcCA9IHNyZV9wYXJzZS5wYXJzZV90ZW1wbGF0ZShyZXBsLCBwYXR0ZXJuKQotICAgIGlmIGxlbihfY2FjaGVfcmVwbCkgPj0gX01BWENBQ0hFOgotICAgICAgICBfY2FjaGVfcmVwbC5jbGVhcigpCi0gICAgX2NhY2hlX3JlcGxbcmVwbCwgcGF0dGVybl0gPSBwCi0gICAgcmV0dXJuIHAKKyAgICByZXR1cm4gc3JlX3BhcnNlLnBhcnNlX3RlbXBsYXRlKHJlcGwsIHBhdHRlcm4pCiAKIGRlZiBfZXhwYW5kKHBhdHRlcm4sIG1hdGNoLCB0ZW1wbGF0ZSk6CiAgICAgIyBpbnRlcm5hbDogbWF0Y2guZXhwYW5kIGltcGxlbWVudGF0aW9uIGhvb2sKQEAgLTM1Myw3ICszNTQsNyBAQAogICAgICAgICBmb3IgcGhyYXNlLCBhY3Rpb24gaW4gbGV4aWNvbjoKICAgICAgICAgICAgIGdpZCA9IHMub3Blbmdyb3VwKCkKICAgICAgICAgICAgIHAuYXBwZW5kKHNyZV9wYXJzZS5TdWJQYXR0ZXJuKHMsIFsKLSAgICAgICAgICAgICAgICAoU1VCUEFUVEVSTiwgKGdpZCwgc3JlX3BhcnNlLnBhcnNlKHBocmFzZSwgZmxhZ3MpKSksCisgICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIDAsIDAsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAogICAgICAgICAgICAgICAgIF0pKQogICAgICAgICAgICAgcy5jbG9zZWdyb3VwKGdpZCwgcFstMV0pCiAgICAgICAgIHAgPSBzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbKEJSQU5DSCwgKE5vbmUsIHApKV0pCmRpZmYgLS1naXQgYS9MaWIvcmxjb21wbGV0ZXIucHkgYi9MaWIvcmxjb21wbGV0ZXIucHkKaW5kZXggNDAxYTYyNi4uYmNhNGE3YiAxMDA2NDQKLS0tIGEvTGliL3JsY29tcGxldGVyLnB5CisrKyBiL0xpYi9ybGNvbXBsZXRlci5weQpAQCAtMTEzLDYgKzExMywxMiBAQAogICAgICAgICBmb3Igd29yZCBpbiBrZXl3b3JkLmt3bGlzdDoKICAgICAgICAgICAgIGlmIHdvcmRbOm5dID09IHRleHQ6CiAgICAgICAgICAgICAgICAgc2Vlbi5hZGQod29yZCkKKyAgICAgICAgICAgICAgICBpZiB3b3JkIGluIHsnZmluYWxseScsICd0cnknfToKKyAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmQgKyAnOicKKyAgICAgICAgICAgICAgICBlbGlmIHdvcmQgbm90IGluIHsnRmFsc2UnLCAnTm9uZScsICdUcnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJlYWsnLCAnY29udGludWUnLCAncGFzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vsc2UnfToKKyAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmQgKyAnICcKICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZCh3b3JkKQogICAgICAgICBmb3IgbnNwYWNlIGluIFtzZWxmLm5hbWVzcGFjZSwgYnVpbHRpbnMuX19kaWN0X19dOgogICAgICAgICAgICAgZm9yIHdvcmQsIHZhbCBpbiBuc3BhY2UuaXRlbXMoKToKQEAgLTE1MiwxNCArMTU4LDMwIEBACiAgICAgICAgICAgICB3b3Jkcy51cGRhdGUoZ2V0X2NsYXNzX21lbWJlcnModGhpc29iamVjdC5fX2NsYXNzX18pKQogICAgICAgICBtYXRjaGVzID0gW10KICAgICAgICAgbiA9IGxlbihhdHRyKQotICAgICAgICBmb3Igd29yZCBpbiB3b3JkczoKLSAgICAgICAgICAgIGlmIHdvcmRbOm5dID09IGF0dHI6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHRoaXNvYmplY3QsIHdvcmQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUgICMgRXhjbHVkZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBzZXQKLSAgICAgICAgICAgICAgICB3b3JkID0gc2VsZi5fY2FsbGFibGVfcG9zdGZpeCh2YWwsICIlcy4lcyIgJSAoZXhwciwgd29yZCkpCi0gICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQod29yZCkKKyAgICAgICAgaWYgYXR0ciA9PSAnJzoKKyAgICAgICAgICAgIG5vcHJlZml4ID0gJ18nCisgICAgICAgIGVsaWYgYXR0ciA9PSAnXyc6CisgICAgICAgICAgICBub3ByZWZpeCA9ICdfXycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5vcHJlZml4ID0gTm9uZQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6CisgICAgICAgICAgICAgICAgaWYgKHdvcmRbOm5dID09IGF0dHIgYW5kCisgICAgICAgICAgICAgICAgICAgIG5vdCAobm9wcmVmaXggYW5kIHdvcmRbOm4rMV0gPT0gbm9wcmVmaXgpKToKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSAiJXMuJXMiICUgKGV4cHIsIHdvcmQpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIodGhpc29iamVjdCwgd29yZCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgICMgSW5jbHVkZSBldmVuIGlmIGF0dHJpYnV0ZSBub3Qgc2V0CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuX2NhbGxhYmxlX3Bvc3RmaXgodmFsLCBtYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpCisgICAgICAgICAgICBpZiBtYXRjaGVzIG9yIG5vdCBub3ByZWZpeDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgbm9wcmVmaXggPT0gJ18nOgorICAgICAgICAgICAgICAgIG5vcHJlZml4ID0gJ19fJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKICAgICAgICAgbWF0Y2hlcy5zb3J0KCkKICAgICAgICAgcmV0dXJuIG1hdGNoZXMKIApkaWZmIC0tZ2l0IGEvTGliL3NjaGVkLnB5IGIvTGliL3NjaGVkLnB5CmluZGV4IGI0NzY0OGQuLjNkOGMwMTEgMTAwNjQ0Ci0tLSBhL0xpYi9zY2hlZC5weQorKysgYi9MaWIvc2NoZWQucHkKQEAgLTIzLDExICsyMyw2IEBACiBoYXMgYW5vdGhlciB3YXkgdG8gcmVmZXJlbmNlIHByaXZhdGUgZGF0YSAoYmVzaWRlcyBnbG9iYWwgdmFyaWFibGVzKS4KICIiIgogCi0jIFhYWCBUaGUgdGltZWZ1bmMgYW5kIGRlbGF5ZnVuYyBzaG91bGQgaGF2ZSBiZWVuIGRlZmluZWQgYXMgbWV0aG9kcwotIyBYWFggc28geW91IGNhbiBkZWZpbmUgbmV3IGtpbmRzIG9mIHNjaGVkdWxlcnMgdXNpbmcgc3ViY2xhc3NpbmcKLSMgWFhYIGluc3RlYWQgb2YgaGF2aW5nIHRvIGRlZmluZSBhIG1vZHVsZSBvciBjbGFzcyBqdXN0IHRvIGhvbGQKLSMgWFhYIHRoZSBnbG9iYWwgc3RhdGUgb2YgeW91ciBwYXJ0aWN1bGFyIHRpbWUgYW5kIGRlbGF5IGZ1bmN0aW9ucy4KLQogaW1wb3J0IHRpbWUKIGltcG9ydCBoZWFwcQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQpAQCAtNDAsMTIgKzM1LDI0IEBACiBfX2FsbF9fID0gWyJzY2hlZHVsZXIiXQogCiBjbGFzcyBFdmVudChuYW1lZHR1cGxlKCdFdmVudCcsICd0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCwga3dhcmdzJykpOgorICAgIF9fc2xvdHNfXyA9IFtdCiAgICAgZGVmIF9fZXFfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID09IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbHRfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDwgIChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fbGVfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpIDw9IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fZ3RfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID4gIChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fZ2VfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID49IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAKK0V2ZW50LnRpbWUuX19kb2NfXyA9ICgnJydOdW1lcmljIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCit0aW1lZnVuYyBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLicnJykKK0V2ZW50LnByaW9yaXR5Ll9fZG9jX18gPSAoJycnRXZlbnRzIHNjaGVkdWxlZCBmb3IgdGhlIHNhbWUgdGltZSB3aWxsIGJlIGV4ZWN1dGVkCitpbiB0aGUgb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHkuJycnKQorRXZlbnQuYWN0aW9uLl9fZG9jX18gPSAoJycnRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcKK2FjdGlvbigqYXJndW1lbnQsICoqa3dhcmdzKScnJykKK0V2ZW50LmFyZ3VtZW50Ll9fZG9jX18gPSAoJycnYXJndW1lbnQgaXMgYSBzZXF1ZW5jZSBob2xkaW5nIHRoZSBwb3NpdGlvbmFsCithcmd1bWVudHMgZm9yIHRoZSBhY3Rpb24uJycnKQorRXZlbnQua3dhcmdzLl9fZG9jX18gPSAoJycna3dhcmdzIGlzIGEgZGljdGlvbmFyeSBob2xkaW5nIHRoZSBrZXl3b3JkCithcmd1bWVudHMgZm9yIHRoZSBhY3Rpb24uJycnKQorCiBfc2VudGluZWwgPSBvYmplY3QoKQogCiBjbGFzcyBzY2hlZHVsZXI6CmRpZmYgLS1naXQgYS9MaWIvc2VjcmV0cy5weSBiL0xpYi9zZWNyZXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZmE0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvc2VjcmV0cy5weQpAQCAtMCwwICsxLDcxIEBACisiIiJHZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvcgorbWFuYWdpbmcgc2VjcmV0cyBzdWNoIGFzIGFjY291bnQgYXV0aGVudGljYXRpb24sIHRva2VucywgYW5kIHNpbWlsYXIuCisKK1NlZSBQRVAgNTA2IGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDUwNi8KKworIiIiCisKK19fYWxsX18gPSBbJ2Nob2ljZScsICdyYW5kYmVsb3cnLCAncmFuZGJpdHMnLCAnU3lzdGVtUmFuZG9tJywKKyAgICAgICAgICAgJ3Rva2VuX2J5dGVzJywgJ3Rva2VuX2hleCcsICd0b2tlbl91cmxzYWZlJywKKyAgICAgICAgICAgJ2NvbXBhcmVfZGlnZXN0JywKKyAgICAgICAgICAgXQorCisKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IG9zCisKK2Zyb20gaG1hYyBpbXBvcnQgY29tcGFyZV9kaWdlc3QKK2Zyb20gcmFuZG9tIGltcG9ydCBTeXN0ZW1SYW5kb20KKworX3N5c3JhbmQgPSBTeXN0ZW1SYW5kb20oKQorCityYW5kYml0cyA9IF9zeXNyYW5kLmdldHJhbmRiaXRzCitjaG9pY2UgPSBfc3lzcmFuZC5jaG9pY2UKKworZGVmIHJhbmRiZWxvdyhleGNsdXNpdmVfdXBwZXJfYm91bmQpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSBpbnQgaW4gdGhlIHJhbmdlIFswLCBuKS4iIiIKKyAgICByZXR1cm4gX3N5c3JhbmQuX3JhbmRiZWxvdyhleGNsdXNpdmVfdXBwZXJfYm91bmQpCisKK0RFRkFVTFRfRU5UUk9QWSA9IDMyICAjIG51bWJlciBvZiBieXRlcyB0byByZXR1cm4gYnkgZGVmYXVsdAorCitkZWYgdG9rZW5fYnl0ZXMobmJ5dGVzPU5vbmUpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSBieXRlIHN0cmluZyBjb250YWluaW5nICpuYnl0ZXMqIGJ5dGVzLgorCisgICAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUKKyAgICBkZWZhdWx0IGlzIHVzZWQuCisKKyAgICA+Pj4gdG9rZW5fYnl0ZXMoMTYpICAjZG9jdGVzdDorU0tJUAorICAgIGInXFx4ZWJyXFx4MTdEKnRcXHhhZVxceGQ0XFx4ZTNTXFx4YjZcXHhlMlxceGViUDFcXHg4YicKKworICAgICIiIgorICAgIGlmIG5ieXRlcyBpcyBOb25lOgorICAgICAgICBuYnl0ZXMgPSBERUZBVUxUX0VOVFJPUFkKKyAgICByZXR1cm4gb3MudXJhbmRvbShuYnl0ZXMpCisKK2RlZiB0b2tlbl9oZXgobmJ5dGVzPU5vbmUpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSB0ZXh0IHN0cmluZywgaW4gaGV4YWRlY2ltYWwuCisKKyAgICBUaGUgc3RyaW5nIGhhcyAqbmJ5dGVzKiByYW5kb20gYnl0ZXMsIGVhY2ggYnl0ZSBjb252ZXJ0ZWQgdG8gdHdvCisgICAgaGV4IGRpZ2l0cy4gIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlCisgICAgZGVmYXVsdCBpcyB1c2VkLgorCisgICAgPj4+IHRva2VuX2hleCgxNikgICNkb2N0ZXN0OitTS0lQCisgICAgJ2Y5YmY3OGI5YTE4Y2U2ZDQ2YTBjZDJiMGI4NmRmOWRhJworCisgICAgIiIiCisgICAgcmV0dXJuIGJpbmFzY2lpLmhleGxpZnkodG9rZW5fYnl0ZXMobmJ5dGVzKSkuZGVjb2RlKCdhc2NpaScpCisKK2RlZiB0b2tlbl91cmxzYWZlKG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gVVJMLXNhZmUgdGV4dCBzdHJpbmcsIGluIEJhc2U2NCBlbmNvZGluZy4KKworICAgIFRoZSBzdHJpbmcgaGFzICpuYnl0ZXMqIHJhbmRvbSBieXRlcy4gIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgCisgICAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcyB1c2VkLgorCisgICAgPj4+IHRva2VuX3VybHNhZmUoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICdEcm1oemU2RVBjdjBmTl84MUJqLW5BJworCisgICAgIiIiCisgICAgdG9rID0gdG9rZW5fYnl0ZXMobmJ5dGVzKQorICAgIHJldHVybiBiYXNlNjQudXJsc2FmZV9iNjRlbmNvZGUodG9rKS5yc3RyaXAoYic9JykuZGVjb2RlKCdhc2NpaScpCmRpZmYgLS1naXQgYS9MaWIvc2hsZXgucHkgYi9MaWIvc2hsZXgucHkKaW5kZXggZWNkMmVmZC4uZTg3MjY2ZiAxMDA2NDQKLS0tIGEvTGliL3NobGV4LnB5CisrKyBiL0xpYi9zaGxleC5weQpAQCAtNSw2ICs1LDcgQEAKICMgcHVzaF9zb3VyY2UoKSBhbmQgcG9wX3NvdXJjZSgpIG1hZGUgZXhwbGljaXQgYnkgRVNSLCBKYW51YXJ5IDIwMDEuCiAjIFBvc2l4IGNvbXBsaWFuY2UsIHNwbGl0KCksIHN0cmluZyBhcmd1bWVudHMsIGFuZAogIyBpdGVyYXRvciBpbnRlcmZhY2UgYnkgR3VzdGF2byBOaWVtZXllciwgQXByaWwgMjAwMy4KKyMgY2hhbmdlcyB0byB0b2tlbml6ZSBtb3JlIGxpa2UgUG9zaXggc2hlbGxzIGJ5IFZpbmF5IFNhamlwLCBKdWx5IDIwMTYuCiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCkBAIC0xNyw3ICsxOCw4IEBACiAKIGNsYXNzIHNobGV4OgogICAgICJBIGxleGljYWwgYW5hbHl6ZXIgY2xhc3MgZm9yIHNpbXBsZSBzaGVsbC1saWtlIHN5bnRheGVzLiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PUZhbHNlLAorICAgICAgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycz1GYWxzZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5zdHJlYW0sIHN0cik6CiAgICAgICAgICAgICBpbnN0cmVhbSA9IFN0cmluZ0lPKGluc3RyZWFtKQogICAgICAgICBpZiBpbnN0cmVhbSBpcyBub3QgTm9uZToKQEAgLTQ5LDYgKzUxLDE5IEBACiAgICAgICAgIHNlbGYudG9rZW4gPSAnJwogICAgICAgICBzZWxmLmZpbGVzdGFjayA9IGRlcXVlKCkKICAgICAgICAgc2VsZi5zb3VyY2UgPSBOb25lCisgICAgICAgIGlmIG5vdCBwdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzID0gJycKKyAgICAgICAgZWxpZiBwdW5jdHVhdGlvbl9jaGFycyBpcyBUcnVlOgorICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnMgPSAnKCk7PD58JicKKyAgICAgICAgc2VsZi5wdW5jdHVhdGlvbl9jaGFycyA9IHB1bmN0dWF0aW9uX2NoYXJzCisgICAgICAgIGlmIHB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgIyBfcHVzaGJhY2tfY2hhcnMgaXMgYSBwdXNoIGJhY2sgcXVldWUgdXNlZCBieSBsb29rYWhlYWQgbG9naWMKKyAgICAgICAgICAgIHNlbGYuX3B1c2hiYWNrX2NoYXJzID0gZGVxdWUoKQorICAgICAgICAgICAgIyB0aGVzZSBjaGFycyBhZGRlZCBiZWNhdXNlIGFsbG93ZWQgaW4gZmlsZSBuYW1lcywgYXJncywgd2lsZGNhcmRzCisgICAgICAgICAgICBzZWxmLndvcmRjaGFycyArPSAnfi0uLyo/PScKKyAgICAgICAgICAgICNyZW1vdmUgYW55IHB1bmN0dWF0aW9uIGNoYXJzIGZyb20gd29yZGNoYXJzCisgICAgICAgICAgICB0ID0gc2VsZi53b3JkY2hhcnMubWFrZXRyYW5zKGRpY3QuZnJvbWtleXMocHVuY3R1YXRpb25fY2hhcnMpKQorICAgICAgICAgICAgc2VsZi53b3JkY2hhcnMgPSBzZWxmLndvcmRjaGFycy50cmFuc2xhdGUodCkKIAogICAgIGRlZiBwdXNoX3Rva2VuKHNlbGYsIHRvayk6CiAgICAgICAgICJQdXNoIGEgdG9rZW4gb250byB0aGUgc3RhY2sgcG9wcGVkIGJ5IHRoZSBnZXRfdG9rZW4gbWV0aG9kIgpAQCAtMTE1LDEyICsxMzAsMTUgQEAKICAgICAgICAgcXVvdGVkID0gRmFsc2UKICAgICAgICAgZXNjYXBlZHN0YXRlID0gJyAnCiAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBuZXh0Y2hhciA9IHNlbGYuaW5zdHJlYW0ucmVhZCgxKQorICAgICAgICAgICAgaWYgc2VsZi5wdW5jdHVhdGlvbl9jaGFycyBhbmQgc2VsZi5fcHVzaGJhY2tfY2hhcnM6CisgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLl9wdXNoYmFja19jaGFycy5wb3AoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuZXh0Y2hhciA9IHNlbGYuaW5zdHJlYW0ucmVhZCgxKQogICAgICAgICAgICAgaWYgbmV4dGNoYXIgPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYubGluZW5vICsgMQorICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMzoKLSAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IGluIHN0YXRlIiwgcmVwcihzZWxmLnN0YXRlKSwgXAotICAgICAgICAgICAgICAgICAgICAgICJJIHNlZSBjaGFyYWN0ZXI6IiwgcmVwcihuZXh0Y2hhcikpCisgICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBpbiBzdGF0ZSAlciBJIHNlZSBjaGFyYWN0ZXI6ICVyIiAlIChzZWxmLnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIpKQogICAgICAgICAgICAgaWYgc2VsZi5zdGF0ZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSAnJyAgICAgICAgIyBwYXN0IGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTEzNywxMyArMTU1LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5jb21tZW50ZXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmluc3RyZWFtLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gKz0gMQogICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGU6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWRzdGF0ZSA9ICdhJwogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYud29yZGNoYXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICdhJworICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYycKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYucXVvdGVzOgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wb3NpeDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgpAQCAtMTY2LDE3ICsxODcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gY2xvc2luZyBxdW90YXRpb24iKQogICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyID09IHNlbGYuc3RhdGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnBvc2l4OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlIGluIHNlbGYuZXNjYXBlZHF1b3RlczoKKyAgICAgICAgICAgICAgICBlbGlmIChzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZSBhbmQgc2VsZi5zdGF0ZQorICAgICAgICAgICAgICAgICAgICAgIGluIHNlbGYuZXNjYXBlZHF1b3Rlcyk6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWRzdGF0ZSA9IHNlbGYuc3RhdGUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgaW4gc2VsZi5lc2NhcGU6CiAgICAgICAgICAgICAgICAgaWYgbm90IG5leHRjaGFyOiAgICAgICMgZW5kIG9mIGZpbGUKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAyOgpAQCAtMTg1LDEyICsyMDYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gZXNjYXBlZCBjaGFyYWN0ZXIiKQogICAgICAgICAgICAgICAgICMgSW4gcG9zaXggc2hlbGxzLCBvbmx5IHRoZSBxdW90ZSBpdHNlbGYgb3IgdGhlIGVzY2FwZQogICAgICAgICAgICAgICAgICMgY2hhcmFjdGVyIG1heSBiZSBlc2NhcGVkIHdpdGhpbiBxdW90ZXMuCi0gICAgICAgICAgICAgICAgaWYgZXNjYXBlZHN0YXRlIGluIHNlbGYucXVvdGVzIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgbmV4dGNoYXIgIT0gc2VsZi5zdGF0ZSBhbmQgbmV4dGNoYXIgIT0gZXNjYXBlZHN0YXRlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIHNlbGYuc3RhdGUKLSAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCisgICAgICAgICAgICAgICAgaWYgKGVzY2FwZWRzdGF0ZSBpbiBzZWxmLnF1b3RlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjaGFyICE9IHNlbGYuc3RhdGUgYW5kIG5leHRjaGFyICE9IGVzY2FwZWRzdGF0ZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gc2VsZi5zdGF0ZQorICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gZXNjYXBlZHN0YXRlCi0gICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gJ2EnOgorICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlIGluICgnYScsICdjJyk6CiAgICAgICAgICAgICAgICAgaWYgbm90IG5leHRjaGFyOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gTm9uZSAgICMgZW5kIG9mIGZpbGUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTIwNCw3ICsyMjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYuY29tbWVudGVyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnN0cmVhbS5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5saW5lbm8gKyAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5wb3NpeDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudG9rZW4gb3IgKHNlbGYucG9zaXggYW5kIHF1b3RlZCk6CkBAIC0yMTYsMTEgKzIzNywyMiBAQAogICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGU6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWRzdGF0ZSA9ICdhJwogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKLSAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYud29yZGNoYXJzIG9yIG5leHRjaGFyIGluIHNlbGYucXVvdGVzIFwKLSAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi53aGl0ZXNwYWNlX3NwbGl0OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09ICdjJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNoYXIgaW4gc2VsZi5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyIG5vdCBpbiBzZWxmLndoaXRlc3BhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMuYXBwZW5kKG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbGlmIChuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFycyBvciBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlcworICAgICAgICAgICAgICAgICAgICAgIG9yIHNlbGYud2hpdGVzcGFjZV9zcGxpdCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2hiYWNrLmFwcGVuZGxlZnQobmV4dGNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycy5hcHBlbmQobmV4dGNoYXIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2hiYWNrLmFwcGVuZGxlZnQobmV4dGNoYXIpCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogSSBzZWUgcHVuY3R1YXRpb24gaW4gd29yZCBzdGF0ZSIpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKZGlmZiAtLWdpdCBhL0xpYi9zaHV0aWwucHkgYi9MaWIvc2h1dGlsLnB5CmluZGV4IDZjZjg4ZDkuLjkwYjcxOTggMTAwNjQ0Ci0tLSBhL0xpYi9zaHV0aWwucHkKKysrIGIvTGliL3NodXRpbC5weQpAQCAtOTc1LDYgKzk3NSw5IEBACiAKICAgICBfX2FsbF9fLmFwcGVuZCgnZGlza191c2FnZScpCiAgICAgX250dXBsZV9kaXNrdXNhZ2UgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCd1c2FnZScsICd0b3RhbCB1c2VkIGZyZWUnKQorICAgIF9udHVwbGVfZGlza3VzYWdlLnRvdGFsLl9fZG9jX18gPSAnVG90YWwgc3BhY2UgaW4gYnl0ZXMnCisgICAgX250dXBsZV9kaXNrdXNhZ2UudXNlZC5fX2RvY19fID0gJ1VzZWQgc3BhY2UgaW4gYnl0ZXMnCisgICAgX250dXBsZV9kaXNrdXNhZ2UuZnJlZS5fX2RvY19fID0gJ0ZyZWUgc3BhY2UgaW4gYnl0ZXMnCiAKICAgICBkZWYgZGlza191c2FnZShwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aC4KZGlmZiAtLWdpdCBhL0xpYi9zaXRlLXBhY2thZ2VzL1JFQURNRS50eHQgYi9MaWIvc2l0ZS1wYWNrYWdlcy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3M2Y2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvc2l0ZS1wYWNrYWdlcy9SRUFETUUudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBkaXJlY3RvcnkgZXhpc3RzIHNvIHRoYXQgM3JkIHBhcnR5IHBhY2thZ2VzIGNhbiBiZSBpbnN0YWxsZWQKK2hlcmUuICBSZWFkIHRoZSBzb3VyY2UgZm9yIHNpdGUucHkgZm9yIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0xpYi9zaXRlLnB5IGIvTGliL3NpdGUucHkKaW5kZXggM2Y3OGVmNS4uMDg1OWYyOCAxMDA2NDQKLS0tIGEvTGliL3NpdGUucHkKKysrIGIvTGliL3NpdGUucHkKQEAgLTYwLDcgKzYwLDggQEAKIAogVGhlIHJlYWRsaW5lIG1vZHVsZSBpcyBhbHNvIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCB0byBlbmFibGUKIGNvbXBsZXRpb24gZm9yIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGl0LiAgVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBpbgotc2l0ZWN1c3RvbWl6ZSwgdXNlcmN1c3RvbWl6ZSBvciBQWVRIT05TVEFSVFVQLgorc2l0ZWN1c3RvbWl6ZSwgdXNlcmN1c3RvbWl6ZSBvciBQWVRIT05TVEFSVFVQLiAgU3RhcnRpbmcgUHl0aG9uIGluCitpc29sYXRlZCBtb2RlICgtSSkgZGlzYWJsZXMgYXV0b21hdGljIHJlYWRsaW5lIGNvbmZpZ3VyYXRpb24uCiAKIEFmdGVyIHRoZXNlIG9wZXJhdGlvbnMsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBpbXBvcnQgYSBtb2R1bGUKIG5hbWVkIHNpdGVjdXN0b21pemUsIHdoaWNoIGNhbiBwZXJmb3JtIGFyYml0cmFyeSBhZGRpdGlvbmFsCkBAIC0xMzEsMTMgKzEzMiwxMyBAQAogCiAKIGRlZiBfaW5pdF9wYXRoaW5mbygpOgotICAgICIiIlJldHVybiBhIHNldCBjb250YWluaW5nIGFsbCBleGlzdGluZyBkaXJlY3RvcnkgZW50cmllcyBmcm9tIHN5cy5wYXRoIiIiCisgICAgIiIiUmV0dXJuIGEgc2V0IGNvbnRhaW5pbmcgYWxsIGV4aXN0aW5nIGZpbGUgc3lzdGVtIGl0ZW1zIGZyb20gc3lzLnBhdGguIiIiCiAgICAgZCA9IHNldCgpCi0gICAgZm9yIGRpciBpbiBzeXMucGF0aDoKKyAgICBmb3IgaXRlbSBpbiBzeXMucGF0aDoKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihkaXIpOgotICAgICAgICAgICAgICAgIGRpciwgZGlyY2FzZSA9IG1ha2VwYXRoKGRpcikKLSAgICAgICAgICAgICAgICBkLmFkZChkaXJjYXNlKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaXRlbSk6CisgICAgICAgICAgICAgICAgXywgaXRlbWNhc2UgPSBtYWtlcGF0aChpdGVtKQorICAgICAgICAgICAgICAgIGQuYWRkKGl0ZW1jYXNlKQogICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgY29udGludWUKICAgICByZXR1cm4gZApAQCAtMTUwLDkgKzE1MSw5IEBACiAgICAgIiIiCiAgICAgaWYga25vd25fcGF0aHMgaXMgTm9uZToKICAgICAgICAga25vd25fcGF0aHMgPSBfaW5pdF9wYXRoaW5mbygpCi0gICAgICAgIHJlc2V0ID0gMQorICAgICAgICByZXNldCA9IFRydWUKICAgICBlbHNlOgotICAgICAgICByZXNldCA9IDAKKyAgICAgICAgcmVzZXQgPSBGYWxzZQogICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHNpdGVkaXIsIG5hbWUpCiAgICAgdHJ5OgogICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInIiKQpAQCAtMTkwLDkgKzE5MSw5IEBACiAgICAgJ3NpdGVkaXInIiIiCiAgICAgaWYga25vd25fcGF0aHMgaXMgTm9uZToKICAgICAgICAga25vd25fcGF0aHMgPSBfaW5pdF9wYXRoaW5mbygpCi0gICAgICAgIHJlc2V0ID0gMQorICAgICAgICByZXNldCA9IFRydWUKICAgICBlbHNlOgotICAgICAgICByZXNldCA9IDAKKyAgICAgICAgcmVzZXQgPSBGYWxzZQogICAgIHNpdGVkaXIsIHNpdGVkaXJjYXNlID0gbWFrZXBhdGgoc2l0ZWRpcikKICAgICBpZiBub3Qgc2l0ZWRpcmNhc2UgaW4ga25vd25fcGF0aHM6CiAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChzaXRlZGlyKSAgICAgICAgIyBBZGQgcGF0aCBjb21wb25lbnQKQEAgLTMwNCw3ICszMDUsNyBAQAogCiAgICAgICAgIGlmIG9zLnNlcCA9PSAnLyc6CiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24lZC4lZCIgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l0ZS1wYWNrYWdlcyIpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChwcmVmaXgpCkBAIC0zMTcsNyArMzE4LDcgQEAKICAgICAgICAgICAgIGlmIGZyYW1ld29yazoKICAgICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKCIvTGlicmFyeSIsIGZyYW1ld29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbls6M10sICJzaXRlLXBhY2thZ2VzIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLCAic2l0ZS1wYWNrYWdlcyIpKQogICAgIHJldHVybiBzaXRlcGFja2FnZXMKIAogZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgcHJlZml4ZXM9Tm9uZSk6CkBAIC0zMzUsOSArMzM2LDcgQEAKICAgICBUaGUgcmVwciBvZiBlYWNoIG9iamVjdCBjb250YWlucyBhIGhpbnQgYXQgaG93IGl0IHdvcmtzLgogCiAgICAgIiIiCi0gICAgaWYgb3Muc2VwID09ICc6JzoKLSAgICAgICAgZW9mID0gJ0NtZC1RJwotICAgIGVsaWYgb3Muc2VwID09ICdcXCc6CisgICAgaWYgb3Muc2VwID09ICdcXCc6CiAgICAgICAgIGVvZiA9ICdDdHJsLVogcGx1cyBSZXR1cm4nCiAgICAgZWxzZToKICAgICAgICAgZW9mID0gJ0N0cmwtRCAoaS5lLiBFT0YpJwpAQCAtNDIzLDIxICs0MjIsNiBAQAogCiAgICAgc3lzLl9faW50ZXJhY3RpdmVob29rX18gPSByZWdpc3Rlcl9yZWFkbGluZQogCi1kZWYgYWxpYXNtYmNzKCk6Ci0gICAgIiIiT24gV2luZG93cywgc29tZSBkZWZhdWx0IGVuY29kaW5ncyBhcmUgbm90IHByb3ZpZGVkIGJ5IFB5dGhvbiwKLSAgICB3aGlsZSB0aGV5IGFyZSBhbHdheXMgYXZhaWxhYmxlIGFzICJtYmNzIiBpbiBlYWNoIGxvY2FsZS4gTWFrZQotICAgIHRoZW0gdXNhYmxlIGJ5IGFsaWFzaW5nIHRvICJtYmNzIiBpbiBzdWNoIGEgY2FzZS4iIiIKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlLCBjb2RlY3MKLSAgICAgICAgZW5jID0gX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCi0gICAgICAgIGlmIGVuYy5zdGFydHN3aXRoKCdjcCcpOiAgICAgICAgICAgICMgImNwKioqIiA/Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY29kZWNzLmxvb2t1cChlbmMpCi0gICAgICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IGVuY29kaW5ncwotICAgICAgICAgICAgICAgIGVuY29kaW5ncy5fY2FjaGVbZW5jXSA9IGVuY29kaW5ncy5fdW5rbm93bgotICAgICAgICAgICAgICAgIGVuY29kaW5ncy5hbGlhc2VzLmFsaWFzZXNbZW5jXSA9ICdtYmNzJwotCiBDT05GSUdfTElORSA9IHInXig/UDxrZXk+KFx3fFstX10pKylccyo9XHMqKD9QPHZhbHVlPi4qKVxzKiQnCiAKIGRlZiB2ZW52KGtub3duX3BhdGhzKToKQEAgLTQ3OCwxMiArNDYyLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnaG9tZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuX2hvbWUgPSB2YWx1ZQotICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnYXBwbG9jYWwnIGFuZCB2YWx1ZS5sb3dlcigpID09ICd0cnVlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwLWxvY2FsIGluc3RhbGxzIHVzZSB0aGUgZXhlX2RpciBhcyBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBvbmUgbGV2ZWwgaGlnaGVyLCBhbmQgZG8gbm90IHVzZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgc2l0ZSBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVfcHJlZml4ID0gZXhlX2RpcgotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSAnZmFsc2UnCiAKICAgICAgICAgc3lzLnByZWZpeCA9IHN5cy5leGVjX3ByZWZpeCA9IHNpdGVfcHJlZml4CiAKQEAgLTUwNCwxMSArNDgyLDE1IEBACiBkZWYgZXhlY3NpdGVjdXN0b21pemUoKToKICAgICAiIiJSdW4gY3VzdG9tIHNpdGUgc3BlY2lmaWMgY29kZSwgaWYgYXZhaWxhYmxlLiIiIgogICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHNpdGVjdXN0b21pemUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHNpdGVjdXN0b21pemUKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09ICdzaXRlY3VzdG9taXplJzoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6Ci0gICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCJQWVRIT05WRVJCT1NFIik6CisgICAgICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgogICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKQEAgLTUyMCwxMSArNTAyLDE1IEBACiBkZWYgZXhlY3VzZXJjdXN0b21pemUoKToKICAgICAiIiJSdW4gY3VzdG9tIHVzZXIgc3BlY2lmaWMgY29kZSwgaWYgYXZhaWxhYmxlLiIiIgogICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHVzZXJjdXN0b21pemUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHVzZXJjdXN0b21pemUKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09ICd1c2VyY3VzdG9taXplJzoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6Ci0gICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCJQWVRIT05WRVJCT1NFIik6CisgICAgICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgogICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKQEAgLTU1MSwxMyArNTM3LDEzIEBACiAgICAgc2V0cXVpdCgpCiAgICAgc2V0Y29weXJpZ2h0KCkKICAgICBzZXRoZWxwZXIoKQotICAgIGVuYWJsZXJsY29tcGxldGVyKCkKLSAgICBhbGlhc21iY3MoKQorICAgIGlmIG5vdCBzeXMuZmxhZ3MuaXNvbGF0ZWQ6CisgICAgICAgIGVuYWJsZXJsY29tcGxldGVyKCkKICAgICBleGVjc2l0ZWN1c3RvbWl6ZSgpCiAgICAgaWYgRU5BQkxFX1VTRVJfU0lURToKICAgICAgICAgZXhlY3VzZXJjdXN0b21pemUoKQogCi0jIFByZXZlbnQgZWRpdGlvbiBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAorIyBQcmV2ZW50IGV4dGVuZGluZyBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAogIyBzaXRlIGlzIGltcG9ydGVkIGxhdGVyLgogaWYgbm90IHN5cy5mbGFncy5ub19zaXRlOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3NtdHBkLnB5IGIvTGliL3NtdHBkLnB5CmluZGV4IDczMjA2NmUuLjgxMDNjYTkgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwZC5weQorKysgYi9MaWIvc210cGQucHkKQEAgLTg5LDcgKzg5LDEwIEBACiBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiBmcm9tIGVtYWlsLl9oZWFkZXJfdmFsdWVfcGFyc2VyIGltcG9ydCBnZXRfYWRkcl9zcGVjLCBnZXRfYW5nbGVfYWRkcgogCi1fX2FsbF9fID0gWyJTTVRQU2VydmVyIiwiRGVidWdnaW5nU2VydmVyIiwiUHVyZVByb3h5IiwiTWFpbG1hblByb3h5Il0KK19fYWxsX18gPSBbCisgICAgIlNNVFBDaGFubmVsIiwgIlNNVFBTZXJ2ZXIiLCAiRGVidWdnaW5nU2VydmVyIiwgIlB1cmVQcm94eSIsCisgICAgIk1haWxtYW5Qcm94eSIsCitdCiAKIHByb2dyYW0gPSBzeXMuYXJndlswXQogX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjMnCkBAIC0xMjgsMjQgKzEzMSwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsCi0gICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPU5vbmUpOgorICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSk6CiAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgbWFwPW1hcCkKICAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHNlcnZlcgogICAgICAgICBzZWxmLmNvbm4gPSBjb25uCiAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKLSAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgotICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBGYWxzZQotICAgICAgICBpZiBkZWNvZGVfZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgd2FybigiVGhlIGRlY29kZV9kYXRhIGRlZmF1bHQgb2YgVHJ1ZSB3aWxsIGNoYW5nZSB0byBGYWxzZSBpbiAzLjY7IgotICAgICAgICAgICAgICAgICAiIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMga2V5d29yZCIsCi0gICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gVHJ1ZQogICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSA9IGRlY29kZV9kYXRhCisgICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGOCBhbmQgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKICAgICAgICAgaWYgZGVjb2RlX2RhdGE6CiAgICAgICAgICAgICBzZWxmLl9lbXB0eXN0cmluZyA9ICcnCiAgICAgICAgICAgICBzZWxmLl9saW5lc2VwID0gJ1xyXG4nCkBAIC02MzUsMjMgKzYzMSwxNSBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKICAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULCBtYXA9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1Ob25lKToKKyAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSk6CiAgICAgICAgIHNlbGYuX2xvY2FsYWRkciA9IGxvY2FsYWRkcgogICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gcmVtb3RlYWRkcgogICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAotICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6Ci0gICAgICAgICAgICBpZiBkZWNvZGVfZGF0YToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGFyYW1ldGVycyBjYW5ub3QgYmUgc2V0IHRvIFRydWUgYXQgdGhlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzYW1lIHRpbWUuIikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKLSAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKLSAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKLSAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAotICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQorICAgICAgICBpZiBlbmFibGVfU01UUFVURjggYW5kIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmUgc2V0IHRvIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgbWFwPW1hcCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZ2FpX3Jlc3VsdHMgPSBzb2NrZXQuZ2V0YWRkcmluZm8oKmxvY2FsYWRkciwKQEAgLTY5OCw5ICs2ODYsOSBAQAogICAgICAgICBjb250YWluaW5nIGEgYC4nIGZvbGxvd2VkIGJ5IG90aGVyIHRleHQgaGFzIGhhZCB0aGUgbGVhZGluZyBkb3QKICAgICAgICAgcmVtb3ZlZC4KIAotICAgICAgICBrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gSXQgaXMgZW1wdHkKLSAgICAgICAgdW5sZXNzIGRlY29kZV9kYXRhPUZhbHNlIG9yIGVuYWJsZV9TTVRQVVRGOD1UcnVlIHdhcyBnaXZlbiBhcyBpbml0Ci0gICAgICAgIHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSB1dCB3aWxsIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgorICAgICAgICBrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIEl0IGlzCisgICAgICAgIGVtcHR5IGlmIGRlY29kZV9kYXRhPVRydWUgd2FzIGdpdmVuIGFzIGluaXQgcGFyYW1ldGVyLCBvdGhlcndpc2UKKyAgICAgICAgaXQgd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5czoKICAgICAgICAgICAgICdtYWlsX29wdGlvbnMnOiBsaXN0IG9mIHBhcmFtZXRlcnMgdG8gdGhlIG1haWwgY29tbWFuZC4gIEFsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzIGFyZSB1cHBlcmNhc2Ugc3RyaW5ncy4gIEV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydCT0RZPThCSVRNSU1FJywgJ1NNVFBVVEY4J10uCmRpZmYgLS1naXQgYS9MaWIvc210cGxpYi5weSBiL0xpYi9zbXRwbGliLnB5CmluZGV4IDViOWU2NjUuLmY3YzJjNzcgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwbGliLnB5CisrKyBiL0xpYi9zbXRwbGliLnB5CkBAIC03NTksNiArNzU5LDEwIEBACiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSkKQEAgLTEwMTEsNiArMTAxNSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9zbmRoZHIucHkgYi9MaWIvc25kaGRyLnB5CmluZGV4IGU1OTAxZWMuLjdlY2FmYjQgMTAwNjQ0Ci0tLSBhL0xpYi9zbmRoZHIucHkKKysrIGIvTGliL3NuZGhkci5weQpAQCAtMzcsNiArMzcsMTggQEAKIFNuZEhlYWRlcnMgPSBuYW1lZHR1cGxlKCdTbmRIZWFkZXJzJywKICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxldHlwZSBmcmFtZXJhdGUgbmNoYW5uZWxzIG5mcmFtZXMgc2FtcHdpZHRoJykKIAorU25kSGVhZGVycy5maWxldHlwZS5fX2RvY19fID0gKCIiIlRoZSB2YWx1ZSBmb3IgdHlwZSBpbmRpY2F0ZXMgdGhlIGRhdGEgdHlwZQorYW5kIHdpbGwgYmUgb25lIG9mIHRoZSBzdHJpbmdzICdhaWZjJywgJ2FpZmYnLCAnYXUnLCdoY29tJywKKydzbmRyJywgJ3NuZHQnLCAndm9jJywgJ3dhdicsICc4c3Z4JywgJ3NiJywgJ3ViJywgb3IgJ3VsJy4iIiIpCitTbmRIZWFkZXJzLmZyYW1lcmF0ZS5fX2RvY19fID0gKCIiIlRoZSBzYW1wbGluZ19yYXRlIHdpbGwgYmUgZWl0aGVyIHRoZSBhY3R1YWwKK3ZhbHVlIG9yIDAgaWYgdW5rbm93biBvciBkaWZmaWN1bHQgdG8gZGVjb2RlLiIiIikKK1NuZEhlYWRlcnMubmNoYW5uZWxzLl9fZG9jX18gPSAoIiIiVGhlIG51bWJlciBvZiBjaGFubmVscyBvciAwIGlmIGl0IGNhbm5vdCBiZQorZGV0ZXJtaW5lZCBvciBpZiB0aGUgdmFsdWUgaXMgZGlmZmljdWx0IHRvIGRlY29kZS4iIiIpCitTbmRIZWFkZXJzLm5mcmFtZXMuX19kb2NfXyA9ICgiIiJUaGUgdmFsdWUgZm9yIGZyYW1lcyB3aWxsIGJlIGVpdGhlciB0aGUgbnVtYmVyCitvZiBmcmFtZXMgb3IgLTEuIiIiKQorU25kSGVhZGVycy5zYW1wd2lkdGguX19kb2NfXyA9ICgiIiJFaXRoZXIgdGhlIHNhbXBsZSBzaXplIGluIGJpdHMgb3IKKydBJyBmb3IgQS1MQVcgb3IgJ1UnIGZvciB1LUxBVy4iIiIpCisKIGRlZiB3aGF0KGZpbGVuYW1lKToKICAgICAiIiJHdWVzcyB0aGUgdHlwZSBvZiBhIHNvdW5kIGZpbGUuIiIiCiAgICAgcmVzID0gd2hhdGhkcihmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXQucHkgYi9MaWIvc29ja2V0LnB5CmluZGV4IGE5Y2FiMzIuLjc0MGU3MTcgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXQucHkKKysrIGIvTGliL3NvY2tldC5weQpAQCAtNTAsNyArNTAsNyBAQAogZnJvbSBfc29ja2V0IGltcG9ydCAqCiAKIGltcG9ydCBvcywgc3lzLCBpbywgc2VsZWN0b3JzCi1mcm9tIGVudW0gaW1wb3J0IEludEVudW0KK2Zyb20gZW51bSBpbXBvcnQgSW50RW51bSwgSW50RmxhZwogCiB0cnk6CiAgICAgaW1wb3J0IGVycm5vCkBAIC04MCw2ICs4MCwxNiBAQAogICAgICAgICBfX25hbWVfXywKICAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ1NPQ0tfJykpCiAKK0ludEZsYWcuX2NvbnZlcnQoCisgICAgICAgICdNc2dGbGFnJywKKyAgICAgICAgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdNU0dfJykpCisKK0ludEZsYWcuX2NvbnZlcnQoCisgICAgICAgICdBZGRyZXNzSW5mbycsCisgICAgICAgIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgQzogQy5pc3VwcGVyKCkgYW5kIEMuc3RhcnRzd2l0aCgnQUlfJykpCisKIF9MT0NBTEhPU1QgICAgPSAnMTI3LjAuMC4xJwogX0xPQ0FMSE9TVF9WNiA9ICc6OjEnCiAKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvc29ja2V0c2VydmVyLnB5CmluZGV4IDg4MDg4MTMuLjQxYTM3NjYgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3NvY2tldHNlcnZlci5weQpAQCAtMTI3LDE2ICsxMjcsMjAgQEAKIGltcG9ydCBzZWxlY3RvcnMKIGltcG9ydCBvcwogaW1wb3J0IGVycm5vCitpbXBvcnQgc3lzCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCitmcm9tIGlvIGltcG9ydCBCdWZmZXJlZElPQmFzZQogZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQogCi1fX2FsbF9fID0gWyJCYXNlU2VydmVyIiwgIlRDUFNlcnZlciIsICJVRFBTZXJ2ZXIiLCAiRm9ya2luZ1VEUFNlcnZlciIsCi0gICAgICAgICAgICJGb3JraW5nVENQU2VydmVyIiwgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLAorX19hbGxfXyA9IFsiQmFzZVNlcnZlciIsICJUQ1BTZXJ2ZXIiLCAiVURQU2VydmVyIiwKKyAgICAgICAgICAgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLAogICAgICAgICAgICAiQmFzZVJlcXVlc3RIYW5kbGVyIiwgIlN0cmVhbVJlcXVlc3RIYW5kbGVyIiwKLSAgICAgICAgICAgIkRhdGFncmFtUmVxdWVzdEhhbmRsZXIiLCAiVGhyZWFkaW5nTWl4SW4iLCAiRm9ya2luZ01peEluIl0KKyAgICAgICAgICAgIkRhdGFncmFtUmVxdWVzdEhhbmRsZXIiLCAiVGhyZWFkaW5nTWl4SW4iXQoraWYgaGFzYXR0cihvcywgImZvcmsiKToKKyAgICBfX2FsbF9fLmV4dGVuZChbIkZvcmtpbmdVRFBTZXJ2ZXIiLCJGb3JraW5nVENQU2VydmVyIiwgIkZvcmtpbmdNaXhJbiJdKQogaWYgaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIik6CiAgICAgX19hbGxfXy5leHRlbmQoWyJVbml4U3RyZWFtU2VydmVyIiwiVW5peERhdGFncmFtU2VydmVyIiwKICAgICAgICAgICAgICAgICAgICAgIlRocmVhZGluZ1VuaXhTdHJlYW1TZXJ2ZXIiLApAQCAtMzExLDkgKzMxNSwxMiBAQAogICAgICAgICBpZiBzZWxmLnZlcmlmeV9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogCkBAIC0zNjcsMTIgKzM3NCwxOCBAQAogICAgICAgICBUaGUgZGVmYXVsdCBpcyB0byBwcmludCBhIHRyYWNlYmFjayBhbmQgY29udGludWUuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHByaW50KCctJyo0MCkKLSAgICAgICAgcHJpbnQoJ0V4Y2VwdGlvbiBoYXBwZW5lZCBkdXJpbmcgcHJvY2Vzc2luZyBvZiByZXF1ZXN0IGZyb20nLCBlbmQ9JyAnKQotICAgICAgICBwcmludChjbGllbnRfYWRkcmVzcykKKyAgICAgICAgcHJpbnQoJy0nKjQwLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHByaW50KCdFeGNlcHRpb24gaGFwcGVuZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgcmVxdWVzdCBmcm9tJywKKyAgICAgICAgICAgIGNsaWVudF9hZGRyZXNzLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpICMgWFhYIEJ1dCB0aGlzIGdvZXMgdG8gc3RkZXJyIQotICAgICAgICBwcmludCgnLScqNDApCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICBwcmludCgnLScqNDAsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAKIAogY2xhc3MgVENQU2VydmVyKEJhc2VTZXJ2ZXIpOgpAQCAtNTI3LDg1ICs1NDAsODYgQEAKICAgICAgICAgIyBObyBuZWVkIHRvIGNsb3NlIGFueXRoaW5nLgogICAgICAgICBwYXNzCiAKLWNsYXNzIEZvcmtpbmdNaXhJbjoKK2lmIGhhc2F0dHIob3MsICJmb3JrIik6CisgICAgY2xhc3MgRm9ya2luZ01peEluOgorICAgICAgICAiIiJNaXgtaW4gY2xhc3MgdG8gaGFuZGxlIGVhY2ggcmVxdWVzdCBpbiBhIG5ldyBwcm9jZXNzLiIiIgogCi0gICAgIiIiTWl4LWluIGNsYXNzIHRvIGhhbmRsZSBlYWNoIHJlcXVlc3QgaW4gYSBuZXcgcHJvY2Vzcy4iIiIKKyAgICAgICAgdGltZW91dCA9IDMwMAorICAgICAgICBhY3RpdmVfY2hpbGRyZW4gPSBOb25lCisgICAgICAgIG1heF9jaGlsZHJlbiA9IDQwCiAKLSAgICB0aW1lb3V0ID0gMzAwCi0gICAgYWN0aXZlX2NoaWxkcmVuID0gTm9uZQotICAgIG1heF9jaGlsZHJlbiA9IDQwCi0KLSAgICBkZWYgY29sbGVjdF9jaGlsZHJlbihzZWxmKToKLSAgICAgICAgIiIiSW50ZXJuYWwgcm91dGluZSB0byB3YWl0IGZvciBjaGlsZHJlbiB0aGF0IGhhdmUgZXhpdGVkLiIiIgotICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jaGlsZHJlbiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBJZiB3ZSdyZSBhYm92ZSB0aGUgbWF4IG51bWJlciBvZiBjaGlsZHJlbiwgd2FpdCBhbmQgcmVhcCB0aGVtIHVudGlsCi0gICAgICAgICMgd2UgZ28gYmFjayBiZWxvdyB0aHJlc2hvbGQuIE5vdGUgdGhhdCB3ZSB1c2Ugd2FpdHBpZCgtMSkgYmVsb3cgdG8gYmUKLSAgICAgICAgIyBhYmxlIHRvIGNvbGxlY3QgY2hpbGRyZW4gaW4gc2l6ZSg8ZGVmdW5jdCBjaGlsZHJlbj4pIHN5c2NhbGxzIGluc3RlYWQKLSAgICAgICAgIyBvZiBzaXplKDxjaGlsZHJlbj4pOiB0aGUgZG93bnNpZGUgaXMgdGhhdCB0aGlzIG1pZ2h0IHJlYXAgY2hpbGRyZW4KLSAgICAgICAgIyB3aGljaCB3ZSBkaWRuJ3Qgc3Bhd24sIHdoaWNoIGlzIHdoeSB3ZSBvbmx5IHJlc29ydCB0byB0aGlzIHdoZW4gd2UncmUKLSAgICAgICAgIyBhYm92ZSBtYXhfY2hpbGRyZW4uCi0gICAgICAgIHdoaWxlIGxlbihzZWxmLmFjdGl2ZV9jaGlsZHJlbikgPj0gc2VsZi5tYXhfY2hpbGRyZW46Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZCgtMSwgMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAgICAgICAjIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCB3ZSdyZSBkb25lCi0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uY2xlYXIoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAjIE5vdyByZWFwIGFsbCBkZWZ1bmN0IGNoaWxkcmVuLgotICAgICAgICBmb3IgcGlkIGluIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNvcHkoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKHBpZCwgb3MuV05PSEFORykKLSAgICAgICAgICAgICAgICAjIGlmIHRoZSBjaGlsZCBoYXNuJ3QgZXhpdGVkIHlldCwgcGlkIHdpbGwgYmUgMCBhbmQgaWdub3JlZCBieQotICAgICAgICAgICAgICAgICMgZGlzY2FyZCgpIGJlbG93Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBzb21lb25lIGVsc2UgcmVhcGVkIGl0Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3RpbWVvdXQoc2VsZik6Ci0gICAgICAgICIiIldhaXQgZm9yIHpvbWJpZXMgYWZ0ZXIgc2VsZi50aW1lb3V0IHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KLQotICAgICAgICBNYXkgYmUgZXh0ZW5kZWQsIGRvIG5vdCBvdmVycmlkZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCi0KLSAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgotICAgICAgICAiIiJDb2xsZWN0IHRoZSB6b21iaWUgY2hpbGQgcHJvY2Vzc2VzIHJlZ3VsYXJseSBpbiB0aGUgRm9ya2luZ01peEluLgotCi0gICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCi0KLSAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKLSAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCi0gICAgICAgIHBpZCA9IG9zLmZvcmsoKQotICAgICAgICBpZiBwaWQ6Ci0gICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCisgICAgICAgIGRlZiBjb2xsZWN0X2NoaWxkcmVuKHNlbGYpOgorICAgICAgICAgICAgIiIiSW50ZXJuYWwgcm91dGluZSB0byB3YWl0IGZvciBjaGlsZHJlbiB0aGF0IGhhdmUgZXhpdGVkLiIiIgogICAgICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IHNldCgpCi0gICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hZGQocGlkKQotICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KLSAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAgICAgICAgIG9zLl9leGl0KDApCi0gICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgSWYgd2UncmUgYWJvdmUgdGhlIG1heCBudW1iZXIgb2YgY2hpbGRyZW4sIHdhaXQgYW5kIHJlYXAgdGhlbSB1bnRpbAorICAgICAgICAgICAgIyB3ZSBnbyBiYWNrIGJlbG93IHRocmVzaG9sZC4gTm90ZSB0aGF0IHdlIHVzZSB3YWl0cGlkKC0xKSBiZWxvdyB0byBiZQorICAgICAgICAgICAgIyBhYmxlIHRvIGNvbGxlY3QgY2hpbGRyZW4gaW4gc2l6ZSg8ZGVmdW5jdCBjaGlsZHJlbj4pIHN5c2NhbGxzIGluc3RlYWQKKyAgICAgICAgICAgICMgb2Ygc2l6ZSg8Y2hpbGRyZW4+KTogdGhlIGRvd25zaWRlIGlzIHRoYXQgdGhpcyBtaWdodCByZWFwIGNoaWxkcmVuCisgICAgICAgICAgICAjIHdoaWNoIHdlIGRpZG4ndCBzcGF3biwgd2hpY2ggaXMgd2h5IHdlIG9ubHkgcmVzb3J0IHRvIHRoaXMgd2hlbiB3ZSdyZQorICAgICAgICAgICAgIyBhYm92ZSBtYXhfY2hpbGRyZW4uCisgICAgICAgICAgICB3aGlsZSBsZW4oc2VsZi5hY3RpdmVfY2hpbGRyZW4pID49IHNlbGYubWF4X2NoaWxkcmVuOgogICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZCgtMSwgMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCisgICAgICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCB3ZSdyZSBkb25lCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgIyBOb3cgcmVhcCBhbGwgZGVmdW5jdCBjaGlsZHJlbi4KKyAgICAgICAgICAgIGZvciBwaWQgaW4gc2VsZi5hY3RpdmVfY2hpbGRyZW4uY29weSgpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZChwaWQsIG9zLldOT0hBTkcpCisgICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIGNoaWxkIGhhc24ndCBleGl0ZWQgeWV0LCBwaWQgd2lsbCBiZSAwIGFuZCBpZ25vcmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICMgZGlzY2FyZCgpIGJlbG93CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBzb21lb25lIGVsc2UgcmVhcGVkIGl0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIGhhbmRsZV90aW1lb3V0KHNlbGYpOgorICAgICAgICAgICAgIiIiV2FpdCBmb3Igem9tYmllcyBhZnRlciBzZWxmLnRpbWVvdXQgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgorCisgICAgICAgICAgICBNYXkgYmUgZXh0ZW5kZWQsIGRvIG5vdCBvdmVycmlkZS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKworICAgICAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAgICAgIiIiQ29sbGVjdCB0aGUgem9tYmllIGNoaWxkIHByb2Nlc3NlcyByZWd1bGFybHkgaW4gdGhlIEZvcmtpbmdNaXhJbi4KKworICAgICAgICAgICAgc2VydmljZV9hY3Rpb25zIGlzIGNhbGxlZCBpbiB0aGUgQmFzZVNlcnZlcidzIHNlcnZlX2ZvcnZlciBsb29wLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQorCisgICAgICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgICAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCisgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgICAgIGlmIHBpZDoKKyAgICAgICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCisgICAgICAgICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4gPSBzZXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmFkZChwaWQpCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAjIFRoaXMgbXVzdCBuZXZlciByZXR1cm4sIGhlbmNlIG9zLl9leGl0KCkhCisgICAgICAgICAgICAgICAgc3RhdHVzID0gMQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMAorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKICAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgxKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KHN0YXR1cykKIAogCiBjbGFzcyBUaHJlYWRpbmdNaXhJbjoKQEAgLTYyMyw5ICs2MzcsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKKyAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogCiAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CkBAIC02MzYsOCArNjUwLDkgQEAKICAgICAgICAgdC5zdGFydCgpCiAKIAotY2xhc3MgRm9ya2luZ1VEUFNlcnZlcihGb3JraW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKLWNsYXNzIEZvcmtpbmdUQ1BTZXJ2ZXIoRm9ya2luZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCitpZiBoYXNhdHRyKG9zLCAiZm9yayIpOgorICAgIGNsYXNzIEZvcmtpbmdVRFBTZXJ2ZXIoRm9ya2luZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCisgICAgY2xhc3MgRm9ya2luZ1RDUFNlcnZlcihGb3JraW5nTWl4SW4sIFRDUFNlcnZlcik6IHBhc3MKIAogY2xhc3MgVGhyZWFkaW5nVURQU2VydmVyKFRocmVhZGluZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCiBjbGFzcyBUaHJlYWRpbmdUQ1BTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIFRDUFNlcnZlcik6IHBhc3MKQEAgLTcyOSw3ICs3NDQsMTAgQEAKICAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5UQ1BfTk9ERUxBWSwgVHJ1ZSkKICAgICAgICAgc2VsZi5yZmlsZSA9IHNlbGYuY29ubmVjdGlvbi5tYWtlZmlsZSgncmInLCBzZWxmLnJidWZzaXplKQotICAgICAgICBzZWxmLndmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCd3YicsIHNlbGYud2J1ZnNpemUpCisgICAgICAgIGlmIHNlbGYud2J1ZnNpemUgPT0gMDoKKyAgICAgICAgICAgIHNlbGYud2ZpbGUgPSBfU29ja2V0V3JpdGVyKHNlbGYuY29ubmVjdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud2ZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3diJywgc2VsZi53YnVmc2l6ZSkKIAogICAgIGRlZiBmaW5pc2goc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLndmaWxlLmNsb3NlZDoKQEAgLTc0Miw2ICs3NjAsMjQgQEAKICAgICAgICAgc2VsZi53ZmlsZS5jbG9zZSgpCiAgICAgICAgIHNlbGYucmZpbGUuY2xvc2UoKQogCitjbGFzcyBfU29ja2V0V3JpdGVyKEJ1ZmZlcmVkSU9CYXNlKToKKyAgICAiIiJTaW1wbGUgd3JpdGFibGUgQnVmZmVyZWRJT0Jhc2UgaW1wbGVtZW50YXRpb24gZm9yIGEgc29ja2V0CisKKyAgICBEb2VzIG5vdCBob2xkIGRhdGEgaW4gYSBidWZmZXIsIGF2b2lkaW5nIGFueSBuZWVkIHRvIGNhbGwgZmx1c2goKS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrKToKKyAgICAgICAgc2VsZi5fc29jayA9IHNvY2sKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBiKToKKyAgICAgICAgc2VsZi5fc29jay5zZW5kYWxsKGIpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyB2aWV3OgorICAgICAgICAgICAgcmV0dXJuIHZpZXcubmJ5dGVzCisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc29jay5maWxlbm8oKQogCiBjbGFzcyBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyKEJhc2VSZXF1ZXN0SGFuZGxlcik6CiAKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CmluZGV4IDdmYjhkN2UuLmNiODU4MTQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQpAQCAtMTg4LDcgKzE4OCwxMCBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5jeCA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCiAgICAgICAgIHNlbGYuY3UgPSBzZWxmLmN4LmN1cnNvcigpCi0gICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaWQgaW50ZWdlciBwcmltYXJ5IGtleSwgbmFtZSB0ZXh0LCBpbmNvbWUgbnVtYmVyKSIpCisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJjcmVhdGUgdGFibGUgdGVzdChpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBuYW1lIHRleHQsICIKKyAgICAgICAgICAgICJpbmNvbWUgbnVtYmVyLCB1bmlxdWVfdGVzdCB0ZXh0IHVuaXF1ZSkiCisgICAgICAgICkKICAgICAgICAgc2VsZi5jdS5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KG5hbWUpIHZhbHVlcyAoPykiLCAoImZvbyIsKSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTQ2Miw2ICs0NjUsNDQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgY3VyID0gc3FsaXRlLkN1cnNvcihmb28pCiAKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURPblJlcGxhY2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJTlNFUlQgT1IgUkVQTEFDRSBhbmQgUkVQTEFDRSBJTlRPIHNob3VsZCBwcm9kdWNlIHRoZSBzYW1lIGJlaGF2aW9yLgorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gJ3t9IElOVE8gdGVzdChpZCwgdW5pcXVlX3Rlc3QpIFZBTFVFUyAoPywgPyknCisgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gKCdJTlNFUlQgT1IgUkVQTEFDRScsICdSRVBMQUNFJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdGF0ZW1lbnQ9c3RhdGVtZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoc3FsLmZvcm1hdChzdGF0ZW1lbnQpLCAoMSwgJ2ZvbycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDEpCisKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURPbklnbm9yZShzZWxmKToKKyAgICAgICAgc2VsZi5jdS5leGVjdXRlKAorICAgICAgICAgICAgImluc2VydCBvciBpZ25vcmUgaW50byB0ZXN0KHVuaXF1ZV90ZXN0KSB2YWx1ZXMgKD8pIiwKKyAgICAgICAgICAgICgndGVzdCcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmN1Lmxhc3Ryb3dpZCwgMikKKyAgICAgICAgc2VsZi5jdS5leGVjdXRlKAorICAgICAgICAgICAgImluc2VydCBvciBpZ25vcmUgaW50byB0ZXN0KHVuaXF1ZV90ZXN0KSB2YWx1ZXMgKD8pIiwKKyAgICAgICAgICAgICgndGVzdCcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmN1Lmxhc3Ryb3dpZCwgMikKKworICAgIGRlZiBDaGVja0xhc3RSb3dJREluc2VydE9SKHNlbGYpOgorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHN0YXRlbWVudCBpbiAoJ0ZBSUwnLCAnQUJPUlQnLCAnUk9MTEJBQ0snKToKKyAgICAgICAgICAgIHNxbCA9ICdJTlNFUlQgT1Ige30gSU5UTyB0ZXN0KHVuaXF1ZV90ZXN0KSBWQUxVRVMgKD8pJworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RhdGVtZW50PSdJTlNFUlQgT1Ige30nLmZvcm1hdChzdGF0ZW1lbnQpKToKKyAgICAgICAgICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoc3FsLmZvcm1hdChzdGF0ZW1lbnQpLCAoc3RhdGVtZW50LCkpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHN0YXRlbWVudCwgc2VsZi5jdS5sYXN0cm93aWQpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3FsaXRlLkludGVncml0eUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKHN0YXRlbWVudCwpKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChzdGF0ZW1lbnQsIHNlbGYuY3UubGFzdHJvd2lkKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ0ZBSUwnLCAyKSwgKCdGQUlMJywgMiksCisgICAgICAgICAgICAoJ0FCT1JUJywgMyksICgnQUJPUlQnLCAzKSwKKyAgICAgICAgICAgICgnUk9MTEJBQ0snLCA0KSwgKCdST0xMQkFDSycsIDQpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgZXhwZWN0ZWQpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhpcyB0ZXN0IHJlcXVpcmVzIHRocmVhZGluZy4nKQogY2xhc3MgVGhyZWFkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKaW5kZXggYTI1MzYwYS4uNDVmMWIwNCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKQEAgLTUyLDEzICs1MiwxMyBAQAogICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiBDaGVja0RNTGRvZXNBdXRvQ29tbWl0QmVmb3JlKHNlbGYpOgorICAgIGRlZiBDaGVja0RNTERvZXNOb3RBdXRvQ29tbWl0QmVmb3JlKHNlbGYpOgogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChpKSB2YWx1ZXMgKDUpIikKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0MihqKSIpCiAgICAgICAgIHNlbGYuY3VyMi5leGVjdXRlKCJzZWxlY3QgaSBmcm9tIHRlc3QiKQogICAgICAgICByZXMgPSBzZWxmLmN1cjIuZmV0Y2hhbGwoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXMpLCAwKQogCiAgICAgZGVmIENoZWNrSW5zZXJ0U3RhcnRzVHJhbnNhY3Rpb24oc2VsZik6CiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCkBAIC0xNTMsMTEgKzE1Myw2IEBACiAgICAgICAgIHNlbGYuY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKICAgICAgICAgc2VsZi5jdXIgPSBzZWxmLmNvbi5jdXJzb3IoKQogCi0gICAgZGVmIENoZWNrVmFjdXVtKHNlbGYpOgotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCi0gICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCi0gICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoInZhY3V1bSIpCi0KICAgICBkZWYgQ2hlY2tEcm9wVGFibGUoc2VsZik6CiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKICAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChpKSB2YWx1ZXMgKDUpIikKQEAgLTE3MiwxMCArMTY3LDM1IEBACiAgICAgICAgIHNlbGYuY3VyLmNsb3NlKCkKICAgICAgICAgc2VsZi5jb24uY2xvc2UoKQogCitjbGFzcyBUcmFuc2FjdGlvbmFsRERMKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKworICAgIGRlZiBDaGVja0RkbERvZXNOb3RBdXRvc3RhcnRUcmFuc2FjdGlvbihzZWxmKToKKyAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgRERMIHN0YXRlbWVudHMgc2hvdWxkIG5vdAorICAgICAgICAjIGltcGxpY2l0bHkgc3RhcnQgYSB0cmFuc2FjdGlvbi4KKyAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQorICAgICAgICBzZWxmLmNvbi5yb2xsYmFjaygpCisgICAgICAgIHJlc3VsdCA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCAqIGZyb20gdGVzdCIpLmZldGNoYWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFtdKQorCisgICAgZGVmIENoZWNrVHJhbnNhY3Rpb25hbERETChzZWxmKToKKyAgICAgICAgIyBZb3UgY2FuIGFjaGlldmUgdHJhbnNhY3Rpb25hbCBEREwgYnkgaXNzdWluZyBhIEJFR0lOCisgICAgICAgICMgc3RhdGVtZW50IG1hbnVhbGx5LgorICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJiZWdpbiIpCisgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKKyAgICAgICAgc2VsZi5jb24ucm9sbGJhY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNxbGl0ZS5PcGVyYXRpb25hbEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCAqIGZyb20gdGVzdCIpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY29uLmNsb3NlKCkKKwogZGVmIHN1aXRlKCk6CiAgICAgZGVmYXVsdF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShUcmFuc2FjdGlvblRlc3RzLCAiQ2hlY2siKQogICAgIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShTcGVjaWFsQ29tbWFuZFRlc3RzLCAiQ2hlY2siKQotICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGRlZmF1bHRfc3VpdGUsIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSkpCisgICAgZGRsX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFRyYW5zYWN0aW9uYWxEREwsICJDaGVjayIpCisgICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZSgoZGVmYXVsdF9zdWl0ZSwgc3BlY2lhbF9jb21tYW5kX3N1aXRlLCBkZGxfc3VpdGUpKQogCiBkZWYgdGVzdCgpOgogICAgIHJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKCkKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29tcGlsZS5weSBiL0xpYi9zcmVfY29tcGlsZS5weQppbmRleCA1MDJiMDYxLi40MjBkODNkIDEwMDY0NAotLS0gYS9MaWIvc3JlX2NvbXBpbGUucHkKKysrIGIvTGliL3NyZV9jb21waWxlLnB5CkBAIC03MSw3ICs3MSw4IEBACiAgICAgQVNTRVJUX0NPREVTID0gX0FTU0VSVF9DT0RFUwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UgYW5kCiAgICAgICAgICAgICBub3QgKGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFKSBhbmQKLSAgICAgICAgICAgIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSk6CisgICAgICAgICAgICBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUgYW5kCisgICAgICAgICAgICBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpKToKICAgICAgICAgZml4ZXMgPSBfaWdub3JlY2FzZV9maXhlcwogICAgIGVsc2U6CiAgICAgICAgIGZpeGVzID0gTm9uZQpAQCAtMTM3LDE0ICsxMzgsMTUgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBlbWl0KE1JTl9VTlRJTCkKICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgotICAgICAgICAgICAgaWYgYXZbMF06CisgICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgorICAgICAgICAgICAgaWYgZ3JvdXA6CiAgICAgICAgICAgICAgICAgZW1pdChNQVJLKQotICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIpCi0gICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgYXZbMV0sIGZsYWdzKQotICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMV0sIGZsYWdzKQotICAgICAgICAgICAgaWYgYXZbMF06CisgICAgICAgICAgICAgICAgZW1pdCgoZ3JvdXAtMSkqMikKKyAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBwLCAoZmxhZ3MgfCBhZGRfZmxhZ3MpICYgfmRlbF9mbGFncykKKyAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIHAsIChmbGFncyB8IGFkZF9mbGFncykgJiB+ZGVsX2ZsYWdzKQorICAgICAgICAgICAgaWYgZ3JvdXA6CiAgICAgICAgICAgICAgICAgZW1pdChNQVJLKQotICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIrMSkKKyAgICAgICAgICAgICAgICBlbWl0KChncm91cC0xKSoyKzEpCiAgICAgICAgIGVsaWYgb3AgaW4gU1VDQ0VTU19DT0RFUzoKICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgIGVsaWYgb3AgaW4gQVNTRVJUX0NPREVTOgpAQCAtMTcyLDcgKzE3NCw3IEBACiAgICAgICAgICAgICAgICAgYXYgPSBBVF9NVUxUSUxJTkUuZ2V0KGF2LCBhdikKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfTE9DQUxFLmdldChhdiwgYXYpCi0gICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKKyAgICAgICAgICAgIGVsaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgYW5kIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSk6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9VTklDT0RFLmdldChhdiwgYXYpCiAgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKQEAgLTE5Myw3ICsxOTUsNyBAQAogICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGF2ID0gQ0hfTE9DQUxFW2F2XQotICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CisgICAgICAgICAgICBlbGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIGFuZCBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpOgogICAgICAgICAgICAgICAgIGF2ID0gQ0hfVU5JQ09ERVthdl0KICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUY6CkBAIC0yMzcsNyArMjM5LDcgQEAKICAgICAgICAgZWxpZiBvcCBpcyBDQVRFR09SWToKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGVtaXQoQ0hfTE9DQUxFW2F2XSkKLSAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgorICAgICAgICAgICAgZWxpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKSBhbmQgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKToKICAgICAgICAgICAgICAgICBlbWl0KENIX1VOSUNPREVbYXZdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbWl0KGF2KQpAQCAtNDA5LDQyICs0MTEsNDIgQEAKICAgICAgICAgICAgIHRhYmxlW2ldID0gaWR4ICsgMQogICAgIHJldHVybiB0YWJsZQogCi1kZWYgX2NvbXBpbGVfaW5mbyhjb2RlLCBwYXR0ZXJuLCBmbGFncyk6Ci0gICAgIyBpbnRlcm5hbDogY29tcGlsZSBhbiBpbmZvIGJsb2NrLiAgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbiwKLSAgICAjIHRoaXMgY29udGFpbnMgbWluL21heCBwYXR0ZXJuIHdpZHRoLCBhbmQgYW4gb3B0aW9uYWwgbGl0ZXJhbAotICAgICMgcHJlZml4IG9yIGEgY2hhcmFjdGVyIG1hcAotICAgIGxvLCBoaSA9IHBhdHRlcm4uZ2V0d2lkdGgoKQotICAgIGlmIGhpID4gTUFYQ09ERToKLSAgICAgICAgaGkgPSBNQVhDT0RFCi0gICAgaWYgbG8gPT0gMDoKLSAgICAgICAgY29kZS5leHRlbmQoW0lORk8sIDQsIDAsIGxvLCBoaV0pCi0gICAgICAgIHJldHVybgotICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAorZGVmIF9nZXRfbGl0ZXJhbF9wcmVmaXgocGF0dGVybik6CisgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAogICAgIHByZWZpeCA9IFtdCiAgICAgcHJlZml4YXBwZW5kID0gcHJlZml4LmFwcGVuZAotICAgIHByZWZpeF9za2lwID0gMAorICAgIHByZWZpeF9za2lwID0gTm9uZQorICAgIGZvciBvcCwgYXYgaW4gcGF0dGVybi5kYXRhOgorICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgorICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQorICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46CisgICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgorICAgICAgICAgICAgaWYgYWRkX2ZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcHJlZml4MSwgcHJlZml4X3NraXAxLCBnb3RfYWxsID0gX2dldF9saXRlcmFsX3ByZWZpeChwKQorICAgICAgICAgICAgaWYgcHJlZml4X3NraXAgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4X3NraXAgPSBsZW4ocHJlZml4KQorICAgICAgICAgICAgICAgIGVsaWYgcHJlZml4X3NraXAxIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IGxlbihwcmVmaXgpICsgcHJlZml4X3NraXAxCisgICAgICAgICAgICBwcmVmaXguZXh0ZW5kKHByZWZpeDEpCisgICAgICAgICAgICBpZiBub3QgZ290X2FsbDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcHJlZml4LCBwcmVmaXhfc2tpcCwgVHJ1ZQorICAgIHJldHVybiBwcmVmaXgsIHByZWZpeF9za2lwLCBGYWxzZQorCitkZWYgX2dldF9jaGFyc2V0X3ByZWZpeChwYXR0ZXJuKToKICAgICBjaGFyc2V0ID0gW10gIyBub3QgdXNlZAogICAgIGNoYXJzZXRhcHBlbmQgPSBjaGFyc2V0LmFwcGVuZAotICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFKToKLSAgICAgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAotICAgICAgICBmb3Igb3AsIGF2IGluIHBhdHRlcm4uZGF0YToKLSAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6Ci0gICAgICAgICAgICAgICAgaWYgbGVuKHByZWZpeCkgPT0gcHJlZml4X3NraXA6Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeF9za2lwID0gcHJlZml4X3NraXAgKyAxCi0gICAgICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQotICAgICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOIGFuZCBsZW4oYXZbMV0pID09IDE6Ci0gICAgICAgICAgICAgICAgb3AsIGF2ID0gYXZbMV1bMF0KLSAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXhhcHBlbmQoYXYpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyBpZiBubyBwcmVmaXgsIGxvb2sgZm9yIGNoYXJzZXQgcHJlZml4Ci0gICAgICAgIGlmIG5vdCBwcmVmaXggYW5kIHBhdHRlcm4uZGF0YToKLSAgICAgICAgICAgIG9wLCBhdiA9IHBhdHRlcm4uZGF0YVswXQotICAgICAgICAgICAgaWYgb3AgaXMgU1VCUEFUVEVSTiBhbmQgYXZbMV06Ci0gICAgICAgICAgICAgICAgb3AsIGF2ID0gYXZbMV1bMF0KKyAgICBpZiBwYXR0ZXJuLmRhdGE6CisgICAgICAgIG9wLCBhdiA9IHBhdHRlcm4uZGF0YVswXQorICAgICAgICBpZiBvcCBpcyBTVUJQQVRURVJOOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIHAgYW5kIG5vdCAoYWRkX2ZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSk6CisgICAgICAgICAgICAgICAgb3AsIGF2ID0gcFswXQogICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXRhcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CkBAIC00NjAsMjEgKzQ2Miw0MyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYwotICAgICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6Ci0gICAgICAgICAgICAgICAgYyA9IFtdCi0gICAgICAgICAgICAgICAgY2FwcGVuZCA9IGMuYXBwZW5kCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gYXZbMV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgb3AsIGF2ID0gcFswXQotICAgICAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FwcGVuZCgob3AsIGF2KSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgorICAgICAgICAgICAgYyA9IFtdCisgICAgICAgICAgICBjYXBwZW5kID0gYy5hcHBlbmQKKyAgICAgICAgICAgIGZvciBwIGluIGF2WzFdOgorICAgICAgICAgICAgICAgIGlmIG5vdCBwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KKyAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgorICAgICAgICAgICAgICAgICAgICBjYXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBjCi0gICAgICAgICAgICBlbGlmIG9wIGlzIElOOgotICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBhdgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYworICAgICAgICBlbGlmIG9wIGlzIElOOgorICAgICAgICAgICAgY2hhcnNldCA9IGF2CisgICAgcmV0dXJuIGNoYXJzZXQKKworZGVmIF9jb21waWxlX2luZm8oY29kZSwgcGF0dGVybiwgZmxhZ3MpOgorICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgYW4gaW5mbyBibG9jay4gIGluIHRoZSBjdXJyZW50IHZlcnNpb24sCisgICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKKyAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKKyAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKKyAgICBpZiBoaSA+IE1BWENPREU6CisgICAgICAgIGhpID0gTUFYQ09ERQorICAgIGlmIGxvID09IDA6CisgICAgICAgIGNvZGUuZXh0ZW5kKFtJTkZPLCA0LCAwLCBsbywgaGldKQorICAgICAgICByZXR1cm4KKyAgICAjIGxvb2sgZm9yIGEgbGl0ZXJhbCBwcmVmaXgKKyAgICBwcmVmaXggPSBbXQorICAgIHByZWZpeF9za2lwID0gMAorICAgIGNoYXJzZXQgPSBbXSAjIG5vdCB1c2VkCisgICAgaWYgbm90IChmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UpOgorICAgICAgICAjIGxvb2sgZm9yIGxpdGVyYWwgcHJlZml4CisgICAgICAgIHByZWZpeCwgcHJlZml4X3NraXAsIGdvdF9hbGwgPSBfZ2V0X2xpdGVyYWxfcHJlZml4KHBhdHRlcm4pCisgICAgICAgICMgaWYgbm8gcHJlZml4LCBsb29rIGZvciBjaGFyc2V0IHByZWZpeAorICAgICAgICBpZiBub3QgcHJlZml4OgorICAgICAgICAgICAgY2hhcnNldCA9IF9nZXRfY2hhcnNldF9wcmVmaXgocGF0dGVybikKICMjICAgICBpZiBwcmVmaXg6CiAjIyAgICAgICAgIHByaW50KCIqKiogUFJFRklYIiwgcHJlZml4LCBwcmVmaXhfc2tpcCkKICMjICAgICBpZiBjaGFyc2V0OgpAQCAtNDg3LDcgKzUxMSw3IEBACiAgICAgbWFzayA9IDAKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIG1hc2sgPSBTUkVfSU5GT19QUkVGSVgKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPT0gcHJlZml4X3NraXAgPT0gbGVuKHBhdHRlcm4uZGF0YSk6CisgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmUgYW5kIGdvdF9hbGw6CiAgICAgICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0xJVEVSQUwKICAgICBlbGlmIGNoYXJzZXQ6CiAgICAgICAgIG1hc2sgPSBtYXNrIHwgU1JFX0lORk9fQ0hBUlNFVApAQCAtNTAyLDYgKzUyNiw4IEBACiAgICAgIyBhZGQgbGl0ZXJhbCBwcmVmaXgKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIGVtaXQobGVuKHByZWZpeCkpICMgbGVuZ3RoCisgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmU6CisgICAgICAgICAgICBwcmVmaXhfc2tpcCA9ICBsZW4ocHJlZml4KQogICAgICAgICBlbWl0KHByZWZpeF9za2lwKSAjIHNraXAKICAgICAgICAgY29kZS5leHRlbmQocHJlZml4KQogICAgICAgICAjIGdlbmVyYXRlIG92ZXJsYXAgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9zcmVfcGFyc2UucHkgYi9MaWIvc3JlX3BhcnNlLnB5CmluZGV4IDRmZjUwZDEuLmFiMzdmZDMgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfcGFyc2UucHkKKysrIGIvTGliL3NyZV9wYXJzZS5weQpAQCAtNjUsNiArNjUsMTIgQEAKICAgICAidSI6IFNSRV9GTEFHX1VOSUNPREUsCiB9CiAKK0dMT0JBTF9GTEFHUyA9IChTUkVfRkxBR19BU0NJSSB8IFNSRV9GTEFHX0xPQ0FMRSB8IFNSRV9GTEFHX1VOSUNPREUgfAorICAgICAgICAgICAgICAgIFNSRV9GTEFHX0RFQlVHIHwgU1JFX0ZMQUdfVEVNUExBVEUpCisKK2NsYXNzIFZlcmJvc2UoRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGNsYXNzIFBhdHRlcm46CiAgICAgIyBtYXN0ZXIgcGF0dGVybiBvYmplY3QuICBrZWVwcyB0cmFjayBvZiBnbG9iYWwgYXR0cmlidXRlcwogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTE4NCw3ICsxOTAsNyBAQAogICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKICAgICAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKLSAgICAgICAgICAgICAgICBpLCBqID0gYXZbMV0uZ2V0d2lkdGgoKQorICAgICAgICAgICAgICAgIGksIGogPSBhdlstMV0uZ2V0d2lkdGgoKQogICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKICAgICAgICAgICAgIGVsaWYgb3AgaW4gX1JFUEVBVENPREVTOgpAQCAtMjczLDYgKzI3OSw5IEBACiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHJlc3VsdCArPSBjCiAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcG9zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbmRleCAtIGxlbihzZWxmLm5leHQgb3IgJycpCiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgICBkZWYgc2VlayhzZWxmLCBpbmRleCk6CkBAIC0yODIsMzMgKzI5MSw2IEBACiAgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgb2Zmc2V0PTApOgogICAgICAgICByZXR1cm4gZXJyb3IobXNnLCBzZWxmLnN0cmluZywgc2VsZi50ZWxsKCkgLSBvZmZzZXQpCiAKLSMgVGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIG5vdCB1c2VkIGluIHRoaXMgbW9kdWxlIGFueW1vcmUsIGJ1dCB3ZSBrZWVwCi0jIHRoZW0gaGVyZSAod2l0aCBEZXByZWNhdGlvbldhcm5pbmdzKSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0KLWRlZiBpc2lkZW50KGNoYXIpOgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIHdhcm5pbmdzLndhcm4oJ3NyZV9wYXJzZS5pc2lkZW50KCkgd2lsbCBiZSByZW1vdmVkIGluIDMuNScsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gImEiIDw9IGNoYXIgPD0gInoiIG9yICJBIiA8PSBjaGFyIDw9ICJaIiBvciBjaGFyID09ICJfIgotCi1kZWYgaXNkaWdpdChjaGFyKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNkaWdpdCgpIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuICIwIiA8PSBjaGFyIDw9ICI5IgotCi1kZWYgaXNuYW1lKG5hbWUpOgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIHdhcm5pbmdzLndhcm4oJ3NyZV9wYXJzZS5pc25hbWUoKSB3aWxsIGJlIHJlbW92ZWQgaW4gMy41JywKLSAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICMgY2hlY2sgdGhhdCBncm91cCBuYW1lIGlzIGEgdmFsaWQgc3RyaW5nCi0gICAgaWYgbm90IGlzaWRlbnQobmFtZVswXSk6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGZvciBjaGFyIGluIG5hbWVbMTpdOgotICAgICAgICBpZiBub3QgaXNpZGVudChjaGFyKSBhbmQgbm90IGlzZGlnaXQoY2hhcik6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCiBkZWYgX2NsYXNzX2VzY2FwZShzb3VyY2UsIGVzY2FwZSk6CiAgICAgIyBoYW5kbGUgZXNjYXBlIGNvZGUgaW5zaWRlIGNoYXJhY3RlciBjbGFzcwogICAgIGNvZGUgPSBFU0NBUEVTLmdldChlc2NhcGUpCkBAIC0zNTEsOSArMzMzLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKICAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgotICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTgpCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgcGFzcwpAQCAtNDE1LDE4ICszOTUsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihlc2NhcGUpKQogICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGdyb3VwLCBzb3VyY2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdST1VQUkVGLCBncm91cAotICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSIsIGxlbihlc2NhcGUpKQorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBncm91cCwgbGVuKGVzY2FwZSkgLSAxKQogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgogICAgICAgICAgICAgaWYgYyBpbiBBU0NJSUxFVFRFUlM6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9OCkKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBlc2NhcGUgJXMiICUgZXNjYXBlLCBsZW4oZXNjYXBlKSkKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCiAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAKLWRlZiBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIG5lc3RlZD1UcnVlKToKK2RlZiBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UsIG5lc3RlZD1UcnVlKToKICAgICAjIHBhcnNlIGFuIGFsdGVybmF0aW9uOiBhfGJ8YwogCiAgICAgaXRlbXMgPSBbXQpAQCAtNDM0LDcgKzQxMiw3IEBACiAgICAgc291cmNlbWF0Y2ggPSBzb3VyY2UubWF0Y2gKICAgICBzdGFydCA9IHNvdXJjZS50ZWxsKCkKICAgICB3aGlsZSBUcnVlOgotICAgICAgICBpdGVtc2FwcGVuZChfcGFyc2Uoc291cmNlLCBzdGF0ZSkpCisgICAgICAgIGl0ZW1zYXBwZW5kKF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKSkKICAgICAgICAgaWYgbm90IHNvdXJjZW1hdGNoKCJ8Iik6CiAgICAgICAgICAgICBicmVhawogCkBAIC00NzYsMTAgKzQ1NCwxMCBAQAogICAgIHN1YnBhdHRlcm4uYXBwZW5kKChCUkFOQ0gsIChOb25lLCBpdGVtcykpKQogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKLWRlZiBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKToKLSAgICBpdGVtX3llcyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlKQorZGVmIF9wYXJzZV9zdWJfY29uZChzb3VyY2UsIHN0YXRlLCBjb25kZ3JvdXAsIHZlcmJvc2UpOgorICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpCiAgICAgaWYgc291cmNlLm1hdGNoKCJ8Iik6Ci0gICAgICAgIGl0ZW1fbm8gPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgaXRlbV9ubyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKQogICAgICAgICBpZiBzb3VyY2UubmV4dCA9PSAifCI6CiAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImNvbmRpdGlvbmFsIGJhY2tyZWYgd2l0aCBtb3JlIHRoYW4gdHdvIGJyYW5jaGVzIikKICAgICBlbHNlOgpAQCAtNDg4LDcgKzQ2Niw3IEBACiAgICAgc3VicGF0dGVybi5hcHBlbmQoKEdST1VQUkVGX0VYSVNUUywgKGNvbmRncm91cCwgaXRlbV95ZXMsIGl0ZW1fbm8pKSkKICAgICByZXR1cm4gc3VicGF0dGVybgogCi1kZWYgX3BhcnNlKHNvdXJjZSwgc3RhdGUpOgorZGVmIF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKToKICAgICAjIHBhcnNlIGEgc2ltcGxlIHBhdHRlcm4KICAgICBzdWJwYXR0ZXJuID0gU3ViUGF0dGVybihzdGF0ZSkKIApAQCAtNDk4LDcgKzQ3Niw2IEBACiAgICAgc291cmNlbWF0Y2ggPSBzb3VyY2UubWF0Y2gKICAgICBfbGVuID0gbGVuCiAgICAgX29yZCA9IG9yZAotICAgIHZlcmJvc2UgPSBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UKIAogICAgIHdoaWxlIFRydWU6CiAKQEAgLTY1Miw2ICs2MjksOCBAQAogICAgICAgICAgICAgZ3JvdXAgPSBUcnVlCiAgICAgICAgICAgICBuYW1lID0gTm9uZQogICAgICAgICAgICAgY29uZGdyb3VwID0gTm9uZQorICAgICAgICAgICAgYWRkX2ZsYWdzID0gMAorICAgICAgICAgICAgZGVsX2ZsYWdzID0gMAogICAgICAgICAgICAgaWYgc291cmNlbWF0Y2goIj8iKToKICAgICAgICAgICAgICAgICAjIG9wdGlvbnMKICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKQEAgLTcxMyw3ICs2OTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmxvb2tiZWhpbmRncm91cHMKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxvb2tiZWhpbmRncm91cHMgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzID0gc3RhdGUuZ3JvdXBzCi0gICAgICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUpCisgICAgICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRpciA8IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IE5vbmUKQEAgLTc0NiwyMiArNzI1LDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZ3JvdXAgbnVtYmVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXAgPj0gTUFYR1JPVVBTOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQiICUgY29uZGdyb3VwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNvbmRuYW1lKSArIDEpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmNoZWNrbG9va2JlaGluZGdyb3VwKGNvbmRncm91cCwgc291cmNlKQotICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXIgaW4gRkxBR1Mgb3IgY2hhciA9PSAiLSI6CiAgICAgICAgICAgICAgICAgICAgICMgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmZsYWdzIHw9IEZMQUdTW2NoYXJdCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyID09ICIpIjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmtub3duIGZsYWciLCBsZW4oY2hhcikpCi0gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UgPSBzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gc291cmNlLnBvcworICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9wYXJzZV9mbGFncyhzb3VyY2UsIHN0YXRlLCBjaGFyKQorICAgICAgICAgICAgICAgICAgICBpZiBmbGFncyBpcyBOb25lOiAgIyBnbG9iYWwgZmxhZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBvcyAhPSAzOiAgIyAiKD94IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzJXMnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnN0cmluZ1s6MjBdLCAgIyB0cnVuY2F0ZSBsb25nIHJlZ2V4ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgKHRydW5jYXRlZCknIGlmIGxlbihzb3VyY2Uuc3RyaW5nKSA+IDIwIGVsc2UgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD03CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MgPSBmbGFncworICAgICAgICAgICAgICAgICAgICBncm91cCA9IE5vbmUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZXh0ZW5zaW9uID8iICsgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihjaGFyKSArIDEpCkBAIC03NzMsMTUgKzc1NiwxNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihlcnIubXNnLCBsZW4obmFtZSkgKyAxKSBmcm9tIE5vbmUKICAgICAgICAgICAgIGlmIGNvbmRncm91cDoKLSAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCkKKyAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgdmVyYm9zZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICBzdWJfdmVyYm9zZSA9ICgodmVyYm9zZSBvciAoYWRkX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCAoZGVsX2ZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSkpCisgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgc3ViX3ZlcmJvc2UpCiAgICAgICAgICAgICBpZiBub3Qgc291cmNlLm1hdGNoKCIpIik6CiAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLnRlbGwoKSAtIHN0YXJ0KQogICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3RhdGUuY2xvc2Vncm91cChncm91cCwgcCkKLSAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKFNVQlBBVFRFUk4sIChncm91cCwgcCkpKQorICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBhZGRfZmxhZ3MsIGRlbF9mbGFncywgcCkpKQogCiAgICAgICAgIGVsaWYgdGhpcyA9PSAiXiI6CiAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChBVCwgQVRfQkVHSU5OSU5HKSkKQEAgLTc5NCwxNCArNzc5LDU4IEBACiAKICAgICByZXR1cm4gc3VicGF0dGVybgogCitkZWYgX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpOgorICAgIHNvdXJjZWdldCA9IHNvdXJjZS5nZXQKKyAgICBhZGRfZmxhZ3MgPSAwCisgICAgZGVsX2ZsYWdzID0gMAorICAgIGlmIGNoYXIgIT0gIi0iOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgYWRkX2ZsYWdzIHw9IEZMQUdTW2NoYXJdCisgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgLSwgOiBvciApIikKKyAgICAgICAgICAgIGlmIGNoYXIgaW4gIiktOiI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGZsYWciIGlmIGNoYXIuaXNhbHBoYSgpIGVsc2UgIm1pc3NpbmcgLSwgOiBvciApIgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICBpZiBjaGFyID09ICIpIjoKKyAgICAgICAgaWYgKChhZGRfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSBhbmQKKyAgICAgICAgICAgIG5vdCAoc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSk6CisgICAgICAgICAgICByYWlzZSBWZXJib3NlCisgICAgICAgIHN0YXRlLmZsYWdzIHw9IGFkZF9mbGFncworICAgICAgICByZXR1cm4gTm9uZQorICAgIGlmIGFkZF9mbGFncyAmIEdMT0JBTF9GTEFHUzoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvbiBnbG9iYWwgZmxhZyIsIDEpCisgICAgaWYgY2hhciA9PSAiLSI6CisgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICBpZiBjaGFyIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgZmxhZyIpCisgICAgICAgIGlmIGNoYXIgbm90IGluIEZMQUdTOgorICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyBmbGFnIgorICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZGVsX2ZsYWdzIHw9IEZMQUdTW2NoYXJdCisgICAgICAgICAgICBjaGFyID0gc291cmNlZ2V0KCkKKyAgICAgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgOiIpCisgICAgICAgICAgICBpZiBjaGFyID09ICI6IjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyA6IgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcihtc2csIGxlbihjaGFyKSkKKyAgICBhc3NlcnQgY2hhciA9PSAiOiIKKyAgICBpZiBkZWxfZmxhZ3MgJiBHTE9CQUxfRkxBR1M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb2ZmIGdsb2JhbCBmbGFnIiwgMSkKKyAgICBpZiBhZGRfZmxhZ3MgJiBkZWxfZmxhZ3M6CisgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGlubGluZSBmbGFnczogZmxhZyB0dXJuZWQgb24gYW5kIG9mZiIsIDEpCisgICAgcmV0dXJuIGFkZF9mbGFncywgZGVsX2ZsYWdzCisKIGRlZiBmaXhfZmxhZ3Moc3JjLCBmbGFncyk6CiAgICAgIyBDaGVjayBhbmQgZml4IGZsYWdzIGFjY29yZGluZyB0byB0aGUgdHlwZSBvZiBwYXR0ZXJuIChzdHIgb3IgYnl0ZXMpCiAgICAgaWYgaXNpbnN0YW5jZShzcmMsIHN0cik6CiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJMT0NBTEUgZmxhZyB3aXRoIGEgc3RyIHBhdHRlcm4gaXMgZGVwcmVjYXRlZC4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBiZSBhbiBlcnJvciBpbiAzLjYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgTE9DQUxFIGZsYWcgd2l0aCBhIHN0ciBwYXR0ZXJuIikKICAgICAgICAgaWYgbm90IGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6CiAgICAgICAgICAgICBmbGFncyB8PSBTUkVfRkxBR19VTklDT0RFCiAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgpAQCAtODEwLDEwICs4MzksNyBAQAogICAgICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgdXNlIFVOSUNPREUgZmxhZyB3aXRoIGEgYnl0ZXMgcGF0dGVybiIpCiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFIGFuZCBmbGFncyAmIFNSRV9GTEFHX0FTQ0lJOgotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJBU0NJSSBhbmQgTE9DQUxFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbGwgYmUgYW4gZXJyb3IgaW4gMy42IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTYpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBU0NJSSBhbmQgTE9DQUxFIGZsYWdzIGFyZSBpbmNvbXBhdGlibGUiKQogICAgIHJldHVybiBmbGFncwogCiBkZWYgcGFyc2Uoc3RyLCBmbGFncz0wLCBwYXR0ZXJuPU5vbmUpOgpAQCAtODI2LDE4ICs4NTIsMjMgQEAKICAgICBwYXR0ZXJuLmZsYWdzID0gZmxhZ3MKICAgICBwYXR0ZXJuLnN0ciA9IHN0cgogCi0gICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCAwKQorICAgIHRyeToKKyAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBwYXR0ZXJuLCBmbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UsIEZhbHNlKQorICAgIGV4Y2VwdCBWZXJib3NlOgorICAgICAgICAjIHRoZSBWRVJCT1NFIGZsYWcgd2FzIHN3aXRjaGVkIG9uIGluc2lkZSB0aGUgcGF0dGVybi4gIHRvIGJlCisgICAgICAgICMgb24gdGhlIHNhZmUgc2lkZSwgd2UnbGwgcGFyc2UgdGhlIHdob2xlIHRoaW5nIGFnYWluLi4uCisgICAgICAgIHBhdHRlcm4gPSBQYXR0ZXJuKCkKKyAgICAgICAgcGF0dGVybi5mbGFncyA9IGZsYWdzIHwgU1JFX0ZMQUdfVkVSQk9TRQorICAgICAgICBwYXR0ZXJuLnN0ciA9IHN0cgorICAgICAgICBzb3VyY2Uuc2VlaygwKQorICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIFRydWUsIEZhbHNlKQorCiAgICAgcC5wYXR0ZXJuLmZsYWdzID0gZml4X2ZsYWdzKHN0ciwgcC5wYXR0ZXJuLmZsYWdzKQogCiAgICAgaWYgc291cmNlLm5leHQgaXMgbm90IE5vbmU6CiAgICAgICAgIGFzc2VydCBzb3VyY2UubmV4dCA9PSAiKSIKICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJ1bmJhbGFuY2VkIHBhcmVudGhlc2lzIikKIAotICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSBhbmQgcC5wYXR0ZXJuLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRToKLSAgICAgICAgIyB0aGUgVkVSQk9TRSBmbGFnIHdhcyBzd2l0Y2hlZCBvbiBpbnNpZGUgdGhlIHBhdHRlcm4uICB0byBiZQotICAgICAgICAjIG9uIHRoZSBzYWZlIHNpZGUsIHdlJ2xsIHBhcnNlIHRoZSB3aG9sZSB0aGluZyBhZ2Fpbi4uLgotICAgICAgICByZXR1cm4gcGFyc2Uoc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCi0KICAgICBpZiBmbGFncyAmIFNSRV9GTEFHX0RFQlVHOgogICAgICAgICBwLmR1bXAoKQogCkBAIC04NTIsNyArODgzLDkgQEAKICAgICBsaXRlcmFscyA9IFtdCiAgICAgbGl0ZXJhbCA9IFtdCiAgICAgbGFwcGVuZCA9IGxpdGVyYWwuYXBwZW5kCi0gICAgZGVmIGFkZGdyb3VwKGluZGV4KToKKyAgICBkZWYgYWRkZ3JvdXAoaW5kZXgsIHBvcyk6CisgICAgICAgIGlmIGluZGV4ID4gcGF0dGVybi5ncm91cHM6CisgICAgICAgICAgICByYWlzZSBzLmVycm9yKCJpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCIgJSBpbmRleCwgcG9zKQogICAgICAgICBpZiBsaXRlcmFsOgogICAgICAgICAgICAgbGl0ZXJhbHMuYXBwZW5kKCcnLmpvaW4obGl0ZXJhbCkpCiAgICAgICAgICAgICBkZWwgbGl0ZXJhbFs6XQpAQCAtODg1LDkgKzkxOCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzLmVycm9yKCJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJXIiICUgbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKG5hbWUpICsgMSkgZnJvbSBOb25lCiAgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID49IE1BWEdST1VQUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4obmFtZSkgKyAxKQotICAgICAgICAgICAgICAgIGFkZGdyb3VwKGluZGV4KQorICAgICAgICAgICAgICAgIGFkZGdyb3VwKGluZGV4LCBsZW4obmFtZSkgKyAxKQogICAgICAgICAgICAgZWxpZiBjID09ICIwIjoKICAgICAgICAgICAgICAgICBpZiBzLm5leHQgaW4gT0NURElHSVRTOgogICAgICAgICAgICAgICAgICAgICB0aGlzICs9IHNnZXQoKQpAQCAtOTA4LDE1ICs5NDEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5nZSAwLTBvMzc3JyAlIHRoaXMsIGxlbih0aGlzKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGxhcHBlbmQoY2hyKGMpKQogICAgICAgICAgICAgICAgIGlmIG5vdCBpc29jdGFsOgotICAgICAgICAgICAgICAgICAgICBhZGRncm91cChpbnQodGhpc1sxOl0pKQorICAgICAgICAgICAgICAgICAgICBhZGRncm91cChpbnQodGhpc1sxOl0pLCBsZW4odGhpcykgLSAxKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHRoaXMgPSBjaHIoRVNDQVBFU1t0aGlzXVsxXSkKICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgotICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdiYWQgZXNjYXBlICVzJyAlIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD00KQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugcy5lcnJvcignYmFkIGVzY2FwZSAlcycgJSB0aGlzLCBsZW4odGhpcykpCiAgICAgICAgICAgICAgICAgbGFwcGVuZCh0aGlzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGFwcGVuZCh0aGlzKQpAQCAtOTM3LDUgKzk2OCw1IEBACiAgICAgICAgIGZvciBpbmRleCwgZ3JvdXAgaW4gZ3JvdXBzOgogICAgICAgICAgICAgbGl0ZXJhbHNbaW5kZXhdID0gZyhncm91cCkgb3IgZW1wdHkKICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgcmFpc2UgZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIikKKyAgICAgICAgcmFpc2UgZXJyb3IoImludmFsaWQgZ3JvdXAgcmVmZXJlbmNlICVkIiAlIGluZGV4KQogICAgIHJldHVybiBlbXB0eS5qb2luKGxpdGVyYWxzKQpkaWZmIC0tZ2l0IGEvTGliL3NzbC5weSBiL0xpYi9zc2wucHkKaW5kZXggZTE5MTM5MC4uOGFkNGEzMyAxMDA2NDQKLS0tIGEvTGliL3NzbC5weQorKysgYi9MaWIvc3NsLnB5CkBAIC01Miw2ICs1Miw4IEBACiBQUk9UT0NPTF9TU0x2MwogUFJPVE9DT0xfU1NMdjIzCiBQUk9UT0NPTF9UTFMKK1BST1RPQ09MX1RMU19DTElFTlQKK1BST1RPQ09MX1RMU19TRVJWRVIKIFBST1RPQ09MX1RMU3YxCiBQUk9UT0NPTF9UTFN2MV8xCiBQUk9UT0NPTF9UTFN2MV8yCkBAIC05NCwxNyArOTYsMTYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQotZnJvbSBlbnVtIGltcG9ydCBFbnVtIGFzIF9FbnVtLCBJbnRFbnVtIGFzIF9JbnRFbnVtCitmcm9tIGVudW0gaW1wb3J0IEVudW0gYXMgX0VudW0sIEludEVudW0gYXMgX0ludEVudW0sIEludEZsYWcgYXMgX0ludEZsYWcKIAogaW1wb3J0IF9zc2wgICAgICAgICAgICAgIyBpZiB3ZSBjYW4ndCBpbXBvcnQgaXQsIGxldCB0aGUgZXJyb3IgcHJvcGFnYXRlCiAKIGZyb20gX3NzbCBpbXBvcnQgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiwgT1BFTlNTTF9WRVJTSU9OX0lORk8sIE9QRU5TU0xfVkVSU0lPTgotZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dCwgTWVtb3J5QklPCitmcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0LCBNZW1vcnlCSU8sIFNTTFNlc3Npb24KIGZyb20gX3NzbCBpbXBvcnQgKAogICAgIFNTTEVycm9yLCBTU0xaZXJvUmV0dXJuRXJyb3IsIFNTTFdhbnRSZWFkRXJyb3IsIFNTTFdhbnRXcml0ZUVycm9yLAogICAgIFNTTFN5c2NhbGxFcnJvciwgU1NMRU9GRXJyb3IsCiAgICAgKQotZnJvbSBfc3NsIGltcG9ydCBDRVJUX05PTkUsIENFUlRfT1BUSU9OQUwsIENFUlRfUkVRVUlSRUQKIGZyb20gX3NzbCBpbXBvcnQgdHh0Mm9iaiBhcyBfdHh0Mm9iaiwgbmlkMm9iaiBhcyBfbmlkMm9iagogZnJvbSBfc3NsIGltcG9ydCBSQU5EX3N0YXR1cywgUkFORF9hZGQsIFJBTkRfYnl0ZXMsIFJBTkRfcHNldWRvX2J5dGVzCiB0cnk6CkBAIC0xMTMsMzIgKzExNCw0NyBAQAogICAgICMgTGlicmVTU0wgZG9lcyBub3QgcHJvdmlkZSBSQU5EX2VnZAogICAgIHBhc3MKIAotZGVmIF9pbXBvcnRfc3ltYm9scyhwcmVmaXgpOgotICAgIGZvciBuIGluIGRpcihfc3NsKToKLSAgICAgICAgaWYgbi5zdGFydHN3aXRoKHByZWZpeCk6Ci0gICAgICAgICAgICBnbG9iYWxzKClbbl0gPSBnZXRhdHRyKF9zc2wsIG4pCi0KLV9pbXBvcnRfc3ltYm9scygnT1BfJykKLV9pbXBvcnRfc3ltYm9scygnQUxFUlRfREVTQ1JJUFRJT05fJykKLV9pbXBvcnRfc3ltYm9scygnU1NMX0VSUk9SXycpCi1faW1wb3J0X3N5bWJvbHMoJ1ZFUklGWV8nKQogCiBmcm9tIF9zc2wgaW1wb3J0IEhBU19TTkksIEhBU19FQ0RILCBIQVNfTlBOLCBIQVNfQUxQTgotCiBmcm9tIF9zc2wgaW1wb3J0IF9PUEVOU1NMX0FQSV9WRVJTSU9OCiAKKwogX0ludEVudW0uX2NvbnZlcnQoCi0gICAgICAgICdfU1NMTWV0aG9kJywgX19uYW1lX18sCi0gICAgICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1BST1RPQ09MXycpIGFuZCBuYW1lICE9ICdQUk9UT0NPTF9TU0x2MjMnLAotICAgICAgICBzb3VyY2U9X3NzbCkKKyAgICAnX1NTTE1ldGhvZCcsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1BST1RPQ09MXycpIGFuZCBuYW1lICE9ICdQUk9UT0NPTF9TU0x2MjMnLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RmxhZy5fY29udmVydCgKKyAgICAnT3B0aW9ucycsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ09QXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAnQWxlcnREZXNjcmlwdGlvbicsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ0FMRVJUX0RFU0NSSVBUSU9OXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RW51bS5fY29udmVydCgKKyAgICAnU1NMRXJyb3JOdW1iZXInLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdTU0xfRVJST1JfJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRGbGFnLl9jb252ZXJ0KAorICAgICdWZXJpZnlGbGFncycsIF9fbmFtZV9fLAorICAgIGxhbWJkYSBuYW1lOiBuYW1lLnN0YXJ0c3dpdGgoJ1ZFUklGWV8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgJ1ZlcmlmeU1vZGUnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdDRVJUXycpLAorICAgIHNvdXJjZT1fc3NsKQorCiAKIFBST1RPQ09MX1NTTHYyMyA9IF9TU0xNZXRob2QuUFJPVE9DT0xfU1NMdjIzID0gX1NTTE1ldGhvZC5QUk9UT0NPTF9UTFMKIF9QUk9UT0NPTF9OQU1FUyA9IHt2YWx1ZTogbmFtZSBmb3IgbmFtZSwgdmFsdWUgaW4gX1NTTE1ldGhvZC5fX21lbWJlcnNfXy5pdGVtcygpfQogCi10cnk6Ci0gICAgX1NTTHYyX0lGX0VYSVNUUyA9IFBST1RPQ09MX1NTTHYyCi1leGNlcHQgTmFtZUVycm9yOgotICAgIF9TU0x2Ml9JRl9FWElTVFMgPSBOb25lCitfU1NMdjJfSUZfRVhJU1RTID0gZ2V0YXR0cihfU1NMTWV0aG9kLCAnUFJPVE9DT0xfU1NMdjInLCBOb25lKQorCiAKIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgogICAgIGZyb20gX3NzbCBpbXBvcnQgZW51bV9jZXJ0aWZpY2F0ZXMsIGVudW1fY3JscwpAQCAtMzc3LDE4ICszOTMsMTggQEAKICAgICBkZWYgd3JhcF9zb2NrZXQoc2VsZiwgc29jaywgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsCiAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsIHNlc3Npb249Tm9uZSk6CiAgICAgICAgIHJldHVybiBTU0xTb2NrZXQoc29jaz1zb2NrLCBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1kb19oYW5kc2hha2Vfb25fY29ubmVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1zdXBwcmVzc19yYWdnZWRfZW9mcywKICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c2VydmVyX2hvc3RuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0PXNlbGYpCisgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9c2VsZiwgX3Nlc3Npb249c2Vzc2lvbikKIAogICAgIGRlZiB3cmFwX2JpbyhzZWxmLCBpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlPUZhbHNlLAotICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpOgogICAgICAgICBzc2xvYmogPSBzZWxmLl93cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIHNlcnZlcl9zaWRlPXNlcnZlcl9zaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c2VydmVyX2hvc3RuYW1lKQotICAgICAgICByZXR1cm4gU1NMT2JqZWN0KHNzbG9iaikKKyAgICAgICAgcmV0dXJuIFNTTE9iamVjdChzc2xvYmosIHNlc3Npb249c2Vzc2lvbikKIAogICAgIGRlZiBzZXRfbnBuX3Byb3RvY29scyhzZWxmLCBucG5fcHJvdG9jb2xzKToKICAgICAgICAgcHJvdG9zID0gYnl0ZWFycmF5KCkKQEAgLTQzNCw2ICs0NTAsMzQgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9sb2FkX3dpbmRvd3Nfc3RvcmVfY2VydHMoc3RvcmVuYW1lLCBwdXJwb3NlKQogICAgICAgICBzZWxmLnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgb3B0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuIE9wdGlvbnMoc3VwZXIoKS5vcHRpb25zKQorCisgICAgQG9wdGlvbnMuc2V0dGVyCisgICAgZGVmIG9wdGlvbnMoc2VsZiwgdmFsdWUpOgorICAgICAgICBzdXBlcihTU0xDb250ZXh0LCBTU0xDb250ZXh0KS5vcHRpb25zLl9fc2V0X18oc2VsZiwgdmFsdWUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyaWZ5X2ZsYWdzKHNlbGYpOgorICAgICAgICByZXR1cm4gVmVyaWZ5RmxhZ3Moc3VwZXIoKS52ZXJpZnlfZmxhZ3MpCisKKyAgICBAdmVyaWZ5X2ZsYWdzLnNldHRlcgorICAgIGRlZiB2ZXJpZnlfZmxhZ3Moc2VsZiwgdmFsdWUpOgorICAgICAgICBzdXBlcihTU0xDb250ZXh0LCBTU0xDb250ZXh0KS52ZXJpZnlfZmxhZ3MuX19zZXRfXyhzZWxmLCB2YWx1ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJpZnlfbW9kZShzZWxmKToKKyAgICAgICAgdmFsdWUgPSBzdXBlcigpLnZlcmlmeV9tb2RlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBWZXJpZnlNb2RlKHZhbHVlKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorCisgICAgQHZlcmlmeV9tb2RlLnNldHRlcgorICAgIGRlZiB2ZXJpZnlfbW9kZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHN1cGVyKFNTTENvbnRleHQsIFNTTENvbnRleHQpLnZlcmlmeV9tb2RlLl9fc2V0X18oc2VsZiwgdmFsdWUpCisKIAogZGVmIGNyZWF0ZV9kZWZhdWx0X2NvbnRleHQocHVycG9zZT1QdXJwb3NlLlNFUlZFUl9BVVRILCAqLCBjYWZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcGF0aD1Ob25lLCBjYWRhdGE9Tm9uZSk6CkBAIC00NDYsMzIgKzQ5MCwxNiBAQAogICAgIGlmIG5vdCBpc2luc3RhbmNlKHB1cnBvc2UsIF9BU04xT2JqZWN0KToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKHB1cnBvc2UpCiAKKyAgICAjIFNTTENvbnRleHQgc2V0cyBPUF9OT19TU0x2MiwgT1BfTk9fU1NMdjMsIE9QX05PX0NPTVBSRVNTSU9OLAorICAgICMgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFIGFuZCBPUF9TSU5HTEVfRUNESF9VU0UKKyAgICAjIGJ5IGRlZmF1bHQuCiAgICAgY29udGV4dCA9IFNTTENvbnRleHQoUFJPVE9DT0xfVExTKQogCi0gICAgIyBTU0x2MiBjb25zaWRlcmVkIGhhcm1mdWwuCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYyCi0KLSAgICAjIFNTTHYzIGhhcyBwcm9ibGVtYXRpYyBzZWN1cml0eSBhbmQgaXMgb25seSByZXF1aXJlZCBmb3IgcmVhbGx5IG9sZAotICAgICMgY2xpZW50cyBzdWNoIGFzIElFNiBvbiBXaW5kb3dzIFhQCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYzCi0KLSAgICAjIGRpc2FibGUgY29tcHJlc3Npb24gdG8gcHJldmVudCBDUklNRSBhdHRhY2tzIChPcGVuU1NMIDEuMCspCi0gICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCkKLQogICAgIGlmIHB1cnBvc2UgPT0gUHVycG9zZS5TRVJWRVJfQVVUSDoKICAgICAgICAgIyB2ZXJpZnkgY2VydHMgYW5kIGhvc3QgbmFtZSBpbiBjbGllbnQgbW9kZQogICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gQ0VSVF9SRVFVSVJFRAogICAgICAgICBjb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQogICAgIGVsaWYgcHVycG9zZSA9PSBQdXJwb3NlLkNMSUVOVF9BVVRIOgotICAgICAgICAjIFByZWZlciB0aGUgc2VydmVyJ3MgY2lwaGVycyBieSBkZWZhdWx0IHNvIHRoYXQgd2UgZ2V0IHN0cm9uZ2VyCi0gICAgICAgICMgZW5jcnlwdGlvbgotICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKLQotICAgICAgICAjIFVzZSBzaW5nbGUgdXNlIGtleXMgaW4gb3JkZXIgdG8gaW1wcm92ZSBmb3J3YXJkIHNlY3JlY3kKLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX1NJTkdMRV9ESF9VU0UiLCAwKQotICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gZ2V0YXR0cihfc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCkKLQotICAgICAgICAjIGRpc2FsbG93IGNpcGhlcnMgd2l0aCBrbm93biB2dWxuZXJhYmlsaXRpZXMKICAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycyhfUkVTVFJJQ1RFRF9TRVJWRVJfQ0lQSEVSUykKIAogICAgIGlmIGNhZmlsZSBvciBjYXBhdGggb3IgY2FkYXRhOgpAQCAtNDk3LDEyICs1MjUsMTAgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShwdXJwb3NlLCBfQVNOMU9iamVjdCk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihwdXJwb3NlKQogCisgICAgIyBTU0xDb250ZXh0IHNldHMgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAjIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgT1BfU0lOR0xFX0RIX1VTRSBhbmQgT1BfU0lOR0xFX0VDREhfVVNFCisgICAgIyBieSBkZWZhdWx0LgogICAgIGNvbnRleHQgPSBTU0xDb250ZXh0KHByb3RvY29sKQotICAgICMgU1NMdjIgY29uc2lkZXJlZCBoYXJtZnVsLgotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MgotICAgICMgU1NMdjMgaGFzIHByb2JsZW1hdGljIHNlY3VyaXR5IGFuZCBpcyBvbmx5IHJlcXVpcmVkIGZvciByZWFsbHkgb2xkCi0gICAgIyBjbGllbnRzIHN1Y2ggYXMgSUU2IG9uIFdpbmRvd3MgWFAKLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjMKIAogICAgIGlmIGNlcnRfcmVxcyBpcyBub3QgTm9uZToKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IGNlcnRfcmVxcwpAQCAtNTQ4LDEwICs1NzQsMTIgQEAKICAgICAgKiBUaGUgYGBkb19oYW5kc2hha2Vfb25fY29ubmVjdGBgIGFuZCBgYHN1cHByZXNzX3JhZ2dlZF9lb2ZzYGAgbWFjaGluZXJ5LgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNzbG9iaiwgb3duZXI9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNzbG9iaiwgb3duZXI9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgc2VsZi5fc3Nsb2JqID0gc3Nsb2JqCiAgICAgICAgICMgTm90ZTogX3NzbG9iaiB0YWtlcyBhIHdlYWsgcmVmZXJlbmNlIHRvIG93bmVyCiAgICAgICAgIHNlbGYuX3NzbG9iai5vd25lciA9IG93bmVyIG9yIHNlbGYKKyAgICAgICAgaWYgc2Vzc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3NzbG9iai5zZXNzaW9uID0gc2Vzc2lvbgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGNvbnRleHQoc2VsZik6CkBAIC01NjMsNiArNTkxLDIwIEBACiAgICAgICAgIHNlbGYuX3NzbG9iai5jb250ZXh0ID0gY3R4CiAKICAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbihzZWxmKToKKyAgICAgICAgIiIiVGhlIFNTTFNlc3Npb24gZm9yIGNsaWVudCBzb2NrZXQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2Vzc2lvbgorCisgICAgQHNlc3Npb24uc2V0dGVyCisgICAgZGVmIHNlc3Npb24oc2VsZiwgc2Vzc2lvbik6CisgICAgICAgIHNlbGYuX3NzbG9iai5zZXNzaW9uID0gc2Vzc2lvbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlc3Npb25fcmV1c2VkKHNlbGYpOgorICAgICAgICAiIiJXYXMgdGhlIGNsaWVudCBzZXNzaW9uIHJldXNlZCBkdXJpbmcgaGFuZHNoYWtlIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2Vzc2lvbl9yZXVzZWQKKworICAgIEBwcm9wZXJ0eQogICAgIGRlZiBzZXJ2ZXJfc2lkZShzZWxmKToKICAgICAgICAgIiIiV2hldGhlciB0aGlzIGlzIGEgc2VydmVyLXNpZGUgc29ja2V0LiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlcnZlcl9zaWRlCkBAIC02NzksNyArNzIxLDcgQEAKICAgICAgICAgICAgICAgICAgZmFtaWx5PUFGX0lORVQsIHR5cGU9U09DS19TVFJFQU0sIHByb3RvPTAsIGZpbGVubz1Ob25lLAogICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBucG5fcHJvdG9jb2xzPU5vbmUsIGNpcGhlcnM9Tm9uZSwKICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUsCi0gICAgICAgICAgICAgICAgIF9jb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgICAgICBfY29udGV4dD1Ob25lLCBfc2Vzc2lvbj1Ob25lKToKIAogICAgICAgICBpZiBfY29udGV4dDoKICAgICAgICAgICAgIHNlbGYuX2NvbnRleHQgPSBfY29udGV4dApAQCAtNzExLDExICs3NTMsMTYgQEAKICAgICAgICAgIyBtaXhlZCBpbi4KICAgICAgICAgaWYgc29jay5nZXRzb2Nrb3B0KFNPTF9TT0NLRVQsIFNPX1RZUEUpICE9IFNPQ0tfU1RSRUFNOgogICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigib25seSBzdHJlYW0gc29ja2V0cyBhcmUgc3VwcG9ydGVkIikKLSAgICAgICAgaWYgc2VydmVyX3NpZGUgYW5kIHNlcnZlcl9ob3N0bmFtZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlcnZlcl9ob3N0bmFtZSBjYW4gb25seSBiZSBzcGVjaWZpZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gY2xpZW50IG1vZGUiKQorICAgICAgICBpZiBzZXJ2ZXJfc2lkZToKKyAgICAgICAgICAgIGlmIHNlcnZlcl9ob3N0bmFtZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXJ2ZXJfaG9zdG5hbWUgY2FuIG9ubHkgYmUgc3BlY2lmaWVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBjbGllbnQgbW9kZSIpCisgICAgICAgICAgICBpZiBfc2Vzc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXNzaW9uIGNhbiBvbmx5IGJlIHNwZWNpZmllZCBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xpZW50IG1vZGUiKQogICAgICAgICBpZiBzZWxmLl9jb250ZXh0LmNoZWNrX2hvc3RuYW1lIGFuZCBub3Qgc2VydmVyX2hvc3RuYW1lOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2hlY2tfaG9zdG5hbWUgcmVxdWlyZXMgc2VydmVyX2hvc3RuYW1lIikKKyAgICAgICAgc2VsZi5fc2Vzc2lvbiA9IF9zZXNzaW9uCiAgICAgICAgIHNlbGYuc2VydmVyX3NpZGUgPSBzZXJ2ZXJfc2lkZQogICAgICAgICBzZWxmLnNlcnZlcl9ob3N0bmFtZSA9IHNlcnZlcl9ob3N0bmFtZQogICAgICAgICBzZWxmLmRvX2hhbmRzaGFrZV9vbl9jb25uZWN0ID0gZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QKQEAgLTc1MSw3ICs3OTgsOCBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNzbG9iaiA9IHNlbGYuX2NvbnRleHQuX3dyYXBfc29ja2V0KHNlbGYsIHNlcnZlcl9zaWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmKQorICAgICAgICAgICAgICAgIHNlbGYuX3NzbG9iaiA9IFNTTE9iamVjdChzc2xvYmosIG93bmVyPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb249c2VsZi5fc2Vzc2lvbikKICAgICAgICAgICAgICAgICBpZiBkb19oYW5kc2hha2Vfb25fY29ubmVjdDoKICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuZ2V0dGltZW91dCgpCiAgICAgICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPT0gMC4wOgpAQCAtNzcyLDYgKzgyMCwyNCBAQAogICAgICAgICBzZWxmLl9jb250ZXh0ID0gY3R4CiAgICAgICAgIHNlbGYuX3NzbG9iai5jb250ZXh0ID0gY3R4CiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2Vzc2lvbihzZWxmKToKKyAgICAgICAgIiIiVGhlIFNTTFNlc3Npb24gZm9yIGNsaWVudCBzb2NrZXQuIiIiCisgICAgICAgIGlmIHNlbGYuX3NzbG9iaiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2Vzc2lvbgorCisgICAgQHNlc3Npb24uc2V0dGVyCisgICAgZGVmIHNlc3Npb24oc2VsZiwgc2Vzc2lvbik6CisgICAgICAgIHNlbGYuX3Nlc3Npb24gPSBzZXNzaW9uCisgICAgICAgIGlmIHNlbGYuX3NzbG9iaiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX3NzbG9iai5zZXNzaW9uID0gc2Vzc2lvbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlc3Npb25fcmV1c2VkKHNlbGYpOgorICAgICAgICAiIiJXYXMgdGhlIGNsaWVudCBzZXNzaW9uIHJldXNlZCBkdXJpbmcgaGFuZHNoYWtlIiIiCisgICAgICAgIGlmIHNlbGYuX3NzbG9iaiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmouc2Vzc2lvbl9yZXVzZWQKKwogICAgIGRlZiBkdXAoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkKCJDYW4ndCBkdXAoKSAlcyBpbnN0YW5jZXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCkBAIC04OTgsNyArOTY0LDYgQEAKICAgICAgICAgICAgIHdoaWxlIChjb3VudCA8IGFtb3VudCk6CiAgICAgICAgICAgICAgICAgdiA9IHNlbGYuc2VuZChkYXRhW2NvdW50Ol0pCiAgICAgICAgICAgICAgICAgY291bnQgKz0gdgotICAgICAgICAgICAgcmV0dXJuIGFtb3VudAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5zZW5kYWxsKHNlbGYsIGRhdGEsIGZsYWdzKQogCkBAIC0xMDA1LDcgKzEwNzAsOCBAQAogICAgICAgICBpZiBzZWxmLl9jb25uZWN0ZWQ6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhdHRlbXB0IHRvIGNvbm5lY3QgYWxyZWFkeS1jb25uZWN0ZWQgU1NMU29ja2V0ISIpCiAgICAgICAgIHNzbG9iaiA9IHNlbGYuY29udGV4dC5fd3JhcF9zb2NrZXQoc2VsZiwgRmFsc2UsIHNlbGYuc2VydmVyX2hvc3RuYW1lKQotICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmKQorICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbj1zZWxmLl9zZXNzaW9uKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBjb25uZWN0X2V4OgogICAgICAgICAgICAgICAgIHJjID0gc29ja2V0LmNvbm5lY3RfZXgoc2VsZiwgYWRkcikKQEAgLTEwNjgsNyArMTEzNCw2IEBACiAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLAogICAgICAgICAgICAgICAgIGNpcGhlcnM9Tm9uZSk6Ci0KICAgICByZXR1cm4gU1NMU29ja2V0KHNvY2s9c29jaywga2V5ZmlsZT1rZXlmaWxlLCBjZXJ0ZmlsZT1jZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPXNlcnZlcl9zaWRlLCBjZXJ0X3JlcXM9Y2VydF9yZXFzLAogICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsX3ZlcnNpb24sIGNhX2NlcnRzPWNhX2NlcnRzLApkaWZmIC0tZ2l0IGEvTGliL3N0YXRpc3RpY3MucHkgYi9MaWIvc3RhdGlzdGljcy5weQppbmRleCA0ZjVjMWMxLi4zMGZlNTVjIDEwMDY0NAotLS0gYS9MaWIvc3RhdGlzdGljcy5weQorKysgYi9MaWIvc3RhdGlzdGljcy5weQpAQCAtMSwyMCArMSwzIEBACi0jIyAgTW9kdWxlIHN0YXRpc3RpY3MucHkKLSMjCi0jIyAgQ29weXJpZ2h0IChjKSAyMDEzIFN0ZXZlbiBEJ0FwcmFubyA8c3RldmUrcHl0aG9uQHBlYXJ3b29kLmluZm8+LgotIyMKLSMjICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSMjICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0jIyAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0jIwotIyMgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotIyMKLSMjICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0jIyAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSMjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSMjICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0jIyAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLQogIiIiCiBCYXNpYyBzdGF0aXN0aWNzIG1vZHVsZS4KIApAQCAtMjgsNiArMTEsNyBAQAogRnVuY3Rpb24gICAgICAgICAgICBEZXNjcmlwdGlvbgogPT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIG1lYW4gICAgICAgICAgICAgICAgQXJpdGhtZXRpYyBtZWFuIChhdmVyYWdlKSBvZiBkYXRhLgoraGFybW9uaWNfbWVhbiAgICAgICBIYXJtb25pYyBtZWFuIG9mIGRhdGEuCiBtZWRpYW4gICAgICAgICAgICAgIE1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBkYXRhLgogbWVkaWFuX2xvdyAgICAgICAgICBMb3cgbWVkaWFuIG9mIGRhdGEuCiBtZWRpYW5faGlnaCAgICAgICAgIEhpZ2ggbWVkaWFuIG9mIGRhdGEuCkBAIC05NSwxNiArNzksMTggQEAKIF9fYWxsX18gPSBbICdTdGF0aXN0aWNzRXJyb3InLAogICAgICAgICAgICAgJ3BzdGRldicsICdwdmFyaWFuY2UnLCAnc3RkZXYnLCAndmFyaWFuY2UnLAogICAgICAgICAgICAgJ21lZGlhbicsICAnbWVkaWFuX2xvdycsICdtZWRpYW5faGlnaCcsICdtZWRpYW5fZ3JvdXBlZCcsCi0gICAgICAgICAgICAnbWVhbicsICdtb2RlJywKKyAgICAgICAgICAgICdtZWFuJywgJ21vZGUnLCAnaGFybW9uaWNfbWVhbicsCiAgICAgICAgICAgXQogCi0KIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGRlY2ltYWwKIGltcG9ydCBtYXRoCitpbXBvcnQgbnVtYmVycwogCiBmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAotZnJvbSBpdGVydG9vbHMgaW1wb3J0IGdyb3VwYnkKK2Zyb20gaXRlcnRvb2xzIGltcG9ydCBncm91cGJ5LCBjaGFpbgorZnJvbSBiaXNlY3QgaW1wb3J0IGJpc2VjdF9sZWZ0LCBiaXNlY3RfcmlnaHQKIAogCiAKQEAgLTEzNCw3ICsxMjAsOCBAQAogCiAgICAgU29tZSBzb3VyY2VzIG9mIHJvdW5kLW9mZiBlcnJvciB3aWxsIGJlIGF2b2lkZWQ6CiAKLSAgICA+Pj4gX3N1bShbMWU1MCwgMSwgLTFlNTBdICogMTAwMCkgICMgQnVpbHQtaW4gc3VtIHJldHVybnMgemVyby4KKyAgICAjIEJ1aWx0LWluIHN1bSByZXR1cm5zIHplcm8uCisgICAgPj4+IF9zdW0oWzFlNTAsIDEsIC0xZTUwXSAqIDEwMDApCiAgICAgKDxjbGFzcyAnZmxvYXQnPiwgRnJhY3Rpb24oMTAwMCwgMSksIDMwMDApCiAKICAgICBGcmFjdGlvbnMgYW5kIERlY2ltYWxzIGFyZSBhbHNvIHN1cHBvcnRlZDoKQEAgLTIyMyw1NiArMjEwLDI2IEBACiAgICAgICAgICMgT3B0aW1pc2UgdGhlIGNvbW1vbiBjYXNlIG9mIGZsb2F0cy4gV2UgZXhwZWN0IHRoYXQgdGhlIG1vc3Qgb2Z0ZW4KICAgICAgICAgIyB1c2VkIG51bWVyaWMgdHlwZSB3aWxsIGJlIGJ1aWx0aW4gZmxvYXRzLCBzbyB0cnkgdG8gbWFrZSB0aGlzIGFzCiAgICAgICAgICMgZmFzdCBhcyBwb3NzaWJsZS4KLSAgICAgICAgaWYgdHlwZSh4KSBpcyBmbG9hdDoKKyAgICAgICAgaWYgdHlwZSh4KSBpcyBmbG9hdCBvciB0eXBlKHgpIGlzIERlY2ltYWw6CiAgICAgICAgICAgICByZXR1cm4geC5hc19pbnRlZ2VyX3JhdGlvKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyB4IG1heSBiZSBhbiBpbnQsIEZyYWN0aW9uLCBvciBJbnRlZ3JhbCBBQkMuCiAgICAgICAgICAgICByZXR1cm4gKHgubnVtZXJhdG9yLCB4LmRlbm9taW5hdG9yKQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyB4IG1heSBiZSBhIGZsb2F0IHN1YmNsYXNzLgorICAgICAgICAgICAgICAgICMgeCBtYXkgYmUgYSBmbG9hdCBvciBEZWNpbWFsIHN1YmNsYXNzLgogICAgICAgICAgICAgICAgIHJldHVybiB4LmFzX2ludGVnZXJfcmF0aW8oKQogICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgIyB4IG1heSBiZSBhIERlY2ltYWwuCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfZGVjaW1hbF90b19yYXRpbyh4KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBKdXN0IGdpdmUgdXA/Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAjIEp1c3QgZ2l2ZSB1cD8KKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBWYWx1ZUVycm9yKToKICAgICAgICAgIyBmbG9hdCBOQU4gb3IgSU5GLgotICAgICAgICBhc3NlcnQgbm90IG1hdGguaXNmaW5pdGUoeCkKKyAgICAgICAgYXNzZXJ0IG5vdCBfaXNmaW5pdGUoeCkKICAgICAgICAgcmV0dXJuICh4LCBOb25lKQogICAgIG1zZyA9ICJjYW4ndCBjb252ZXJ0IHR5cGUgJ3t9JyB0byBudW1lcmF0b3IvZGVub21pbmF0b3IiCiAgICAgcmFpc2UgVHlwZUVycm9yKG1zZy5mb3JtYXQodHlwZSh4KS5fX25hbWVfXykpCiAKIAotIyBGSVhNRSBUaGlzIGlzIGZhc3RlciB0aGFuIEZyYWN0aW9uLmZyb21fZGVjaW1hbCwgYnV0IHN0aWxsIHRvbyBzbG93LgotZGVmIF9kZWNpbWFsX3RvX3JhdGlvKGQpOgotICAgICIiIkNvbnZlcnQgRGVjaW1hbCBkIHRvIGV4YWN0IGludGVnZXIgcmF0aW8gKG51bWVyYXRvciwgZGVub21pbmF0b3IpLgotCi0gICAgPj4+IGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAotICAgID4+PiBfZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIyLjYiKSkKLSAgICAoMjYsIDEwKQotCi0gICAgIiIiCi0gICAgc2lnbiwgZGlnaXRzLCBleHAgPSBkLmFzX3R1cGxlKCkKLSAgICBpZiBleHAgaW4gKCdGJywgJ24nLCAnTicpOiAgIyBJTkYsIE5BTiwgc05BTgotICAgICAgICBhc3NlcnQgbm90IGQuaXNfZmluaXRlKCkKLSAgICAgICAgcmV0dXJuIChkLCBOb25lKQotICAgIG51bSA9IDAKLSAgICBmb3IgZGlnaXQgaW4gZGlnaXRzOgotICAgICAgICBudW0gPSBudW0qMTAgKyBkaWdpdAotICAgIGlmIGV4cCA8IDA6Ci0gICAgICAgIGRlbiA9IDEwKiotZXhwCi0gICAgZWxzZToKLSAgICAgICAgbnVtICo9IDEwKipleHAKLSAgICAgICAgZGVuID0gMQotICAgIGlmIHNpZ246Ci0gICAgICAgIG51bSA9IC1udW0KLSAgICByZXR1cm4gKG51bSwgZGVuKQotCi0KIGRlZiBfY29udmVydCh2YWx1ZSwgVCk6CiAgICAgIiIiQ29udmVydCB2YWx1ZSB0byBnaXZlbiBudW1lcmljIHR5cGUgVC4iIiIKICAgICBpZiB0eXBlKHZhbHVlKSBpcyBUOgpAQCAtMzA1LDYgKzI2MiwzMCBAQAogICAgIHJldHVybiB0YWJsZQogCiAKK2RlZiBfZmluZF9sdGVxKGEsIHgpOgorICAgICdMb2NhdGUgdGhlIGxlZnRtb3N0IHZhbHVlIGV4YWN0bHkgZXF1YWwgdG8geCcKKyAgICBpID0gYmlzZWN0X2xlZnQoYSwgeCkKKyAgICBpZiBpICE9IGxlbihhKSBhbmQgYVtpXSA9PSB4OgorICAgICAgICByZXR1cm4gaQorICAgIHJhaXNlIFZhbHVlRXJyb3IKKworCitkZWYgX2ZpbmRfcnRlcShhLCBsLCB4KToKKyAgICAnTG9jYXRlIHRoZSByaWdodG1vc3QgdmFsdWUgZXhhY3RseSBlcXVhbCB0byB4JworICAgIGkgPSBiaXNlY3RfcmlnaHQoYSwgeCwgbG89bCkKKyAgICBpZiBpICE9IChsZW4oYSkrMSkgYW5kIGFbaS0xXSA9PSB4OgorICAgICAgICByZXR1cm4gaS0xCisgICAgcmFpc2UgVmFsdWVFcnJvcgorCisKK2RlZiBfZmFpbF9uZWcodmFsdWVzLCBlcnJtc2c9J25lZ2F0aXZlIHZhbHVlJyk6CisgICAgIiIiSXRlcmF0ZSBvdmVyIHZhbHVlcywgZmFpbGluZyBpZiBhbnkgYXJlIGxlc3MgdGhhbiB6ZXJvLiIiIgorICAgIGZvciB4IGluIHZhbHVlczoKKyAgICAgICAgaWYgeCA8IDA6CisgICAgICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoZXJybXNnKQorICAgICAgICB5aWVsZCB4CisKKwogIyA9PT0gTWVhc3VyZXMgb2YgY2VudHJhbCB0ZW5kZW5jeSAoYXZlcmFnZXMpID09PQogCiBkZWYgbWVhbihkYXRhKToKQEAgLTMzMyw2ICszMTQsNTIgQEAKICAgICByZXR1cm4gX2NvbnZlcnQodG90YWwvbiwgVCkKIAogCitkZWYgaGFybW9uaWNfbWVhbihkYXRhKToKKyAgICAiIiJSZXR1cm4gdGhlIGhhcm1vbmljIG1lYW4gb2YgZGF0YS4KKworICAgIFRoZSBoYXJtb25pYyBtZWFuLCBzb21ldGltZXMgY2FsbGVkIHRoZSBzdWJjb250cmFyeSBtZWFuLCBpcyB0aGUKKyAgICByZWNpcHJvY2FsIG9mIHRoZSBhcml0aG1ldGljIG1lYW4gb2YgdGhlIHJlY2lwcm9jYWxzIG9mIHRoZSBkYXRhLAorICAgIGFuZCBpcyBvZnRlbiBhcHByb3ByaWF0ZSB3aGVuIGF2ZXJhZ2luZyBxdWFudGl0aWVzIHdoaWNoIGFyZSByYXRlcworICAgIG9yIHJhdGlvcywgZm9yIGV4YW1wbGUgc3BlZWRzLiBFeGFtcGxlOgorCisgICAgU3VwcG9zZSBhbiBpbnZlc3RvciBwdXJjaGFzZXMgYW4gZXF1YWwgdmFsdWUgb2Ygc2hhcmVzIGluIGVhY2ggb2YKKyAgICB0aHJlZSBjb21wYW5pZXMsIHdpdGggUC9FIChwcmljZS9lYXJuaW5nKSByYXRpb3Mgb2YgMi41LCAzIGFuZCAxMC4KKyAgICBXaGF0IGlzIHRoZSBhdmVyYWdlIFAvRSByYXRpbyBmb3IgdGhlIGludmVzdG9yJ3MgcG9ydGZvbGlvPworCisgICAgPj4+IGhhcm1vbmljX21lYW4oWzIuNSwgMywgMTBdKSAgIyBGb3IgYW4gZXF1YWwgaW52ZXN0bWVudCBwb3J0Zm9saW8uCisgICAgMy42CisKKyAgICBVc2luZyB0aGUgYXJpdGhtZXRpYyBtZWFuIHdvdWxkIGdpdmUgYW4gYXZlcmFnZSBvZiBhYm91dCA1LjE2Nywgd2hpY2gKKyAgICBpcyB0b28gaGlnaC4KKworICAgIElmIGBgZGF0YWBgIGlzIGVtcHR5LCBvciBhbnkgZWxlbWVudCBpcyBsZXNzIHRoYW4gemVybywKKyAgICBgYGhhcm1vbmljX21lYW5gYCB3aWxsIHJhaXNlIGBgU3RhdGlzdGljc0Vycm9yYGAuCisgICAgIiIiCisgICAgIyBGb3IgYSBqdXN0aWZpY2F0aW9uIGZvciB1c2luZyBoYXJtb25pYyBtZWFuIGZvciBQL0UgcmF0aW9zLCBzZWUKKyAgICAjIGh0dHA6Ly9maXh0aGVwaXRjaC5wZWxsdWNpZC5jb20vY29tcHMtYW5hbHlzaXMtdGhlLW1pc3NpbmctaGFybW9ueS1vZi1zdW1tYXJ5LXN0YXRpc3RpY3MvCisgICAgIyBodHRwOi8vcGFwZXJzLnNzcm4uY29tL3NvbDMvcGFwZXJzLmNmbT9hYnN0cmFjdF9pZD0yNjIxMDg3CisgICAgaWYgaXRlcihkYXRhKSBpcyBkYXRhOgorICAgICAgICBkYXRhID0gbGlzdChkYXRhKQorICAgIGVycm1zZyA9ICdoYXJtb25pYyBtZWFuIGRvZXMgbm90IHN1cHBvcnQgbmVnYXRpdmUgdmFsdWVzJworICAgIG4gPSBsZW4oZGF0YSkKKyAgICBpZiBuIDwgMToKKyAgICAgICAgcmFpc2UgU3RhdGlzdGljc0Vycm9yKCdoYXJtb25pY19tZWFuIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBkYXRhIHBvaW50JykKKyAgICBlbGlmIG4gPT0gMToKKyAgICAgICAgeCA9IGRhdGFbMF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZSh4LCAobnVtYmVycy5SZWFsLCBEZWNpbWFsKSk6CisgICAgICAgICAgICBpZiB4IDwgMDoKKyAgICAgICAgICAgICAgICByYWlzZSBTdGF0aXN0aWNzRXJyb3IoZXJybXNnKQorICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigndW5zdXBwb3J0ZWQgdHlwZScpCisgICAgdHJ5OgorICAgICAgICBULCB0b3RhbCwgY291bnQgPSBfc3VtKDEveCBmb3IgeCBpbiBfZmFpbF9uZWcoZGF0YSwgZXJybXNnKSkKKyAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgIHJldHVybiAwCisgICAgYXNzZXJ0IGNvdW50ID09IG4KKyAgICByZXR1cm4gX2NvbnZlcnQobi90b3RhbCwgVCkKKworCiAjIEZJWE1FOiBpbnZlc3RpZ2F0ZSB3YXlzIHRvIGNhbGN1bGF0ZSBtZWRpYW5zIHdpdGhvdXQgc29ydGluZz8gUXVpY2tzZWxlY3Q/CiBkZWYgbWVkaWFuKGRhdGEpOgogICAgICIiIlJldHVybiB0aGUgbWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIG51bWVyaWMgZGF0YS4KQEAgLTQ0Miw5ICs0NjksMTUgQEAKICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAjIE1peGVkIHR5cGUuIEZvciBub3cgd2UganVzdCBjb2VyY2UgdG8gZmxvYXQuCiAgICAgICAgIEwgPSBmbG9hdCh4KSAtIGZsb2F0KGludGVydmFsKS8yCi0gICAgY2YgPSBkYXRhLmluZGV4KHgpICAjIE51bWJlciBvZiB2YWx1ZXMgYmVsb3cgdGhlIG1lZGlhbiBpbnRlcnZhbC4KLSAgICAjIEZJWE1FIFRoZSBmb2xsb3dpbmcgbGluZSBjb3VsZCBiZSBtb3JlIGVmZmljaWVudCBmb3IgYmlnIGxpc3RzLgotICAgIGYgPSBkYXRhLmNvdW50KHgpICAjIE51bWJlciBvZiBkYXRhIHBvaW50cyBpbiB0aGUgbWVkaWFuIGludGVydmFsLgorCisgICAgIyBVc2VzIGJpc2VjdGlvbiBzZWFyY2ggdG8gc2VhcmNoIGZvciB4IGluIGRhdGEgd2l0aCBsb2cobikgdGltZSBjb21wbGV4aXR5CisgICAgIyBGaW5kIHRoZSBwb3NpdGlvbiBvZiBsZWZ0bW9zdCBvY2N1cnJlbmNlIG9mIHggaW4gZGF0YQorICAgIGwxID0gX2ZpbmRfbHRlcShkYXRhLCB4KQorICAgICMgRmluZCB0aGUgcG9zaXRpb24gb2YgcmlnaHRtb3N0IG9jY3VycmVuY2Ugb2YgeCBpbiBkYXRhW2wxLi4ubGVuKGRhdGEpXQorICAgICMgQXNzdW1pbmcgYWx3YXlzIGwxIDw9IGwyCisgICAgbDIgPSBfZmluZF9ydGVxKGRhdGEsIGwxLCB4KQorICAgIGNmID0gbDEKKyAgICBmID0gbDIgLSBsMSArIDEKICAgICByZXR1cm4gTCArIGludGVydmFsKihuLzIgLSBjZikvZgogCiAKZGlmZiAtLWdpdCBhL0xpYi9zdHJpbmcucHkgYi9MaWIvc3RyaW5nLnB5CmluZGV4IDg5Mjg3YzQuLmM5MDIwMDcgMTAwNjQ0Ci0tLSBhL0xpYi9zdHJpbmcucHkKKysrIGIvTGliL3N0cmluZy5weQpAQCAtMjgsNyArMjgsNyBAQAogZGlnaXRzID0gJzAxMjM0NTY3ODknCiBoZXhkaWdpdHMgPSBkaWdpdHMgKyAnYWJjZGVmJyArICdBQkNERUYnCiBvY3RkaWdpdHMgPSAnMDEyMzQ1NjcnCi1wdW5jdHVhdGlvbiA9ICIiIiEiIyQlJicoKSorLC0uLzo7PD0+P0BbXF1eX2B7fH1+IiIiCitwdW5jdHVhdGlvbiA9IHIiIiIhIiMkJSYnKCkqKywtLi86Ozw9Pj9AW1xdXl9ge3x9fiIiIgogcHJpbnRhYmxlID0gZGlnaXRzICsgYXNjaWlfbGV0dGVycyArIHB1bmN0dWF0aW9uICsgd2hpdGVzcGFjZQogCiAjIEZ1bmN0aW9ucyB3aGljaCBhcmVuJ3QgYXZhaWxhYmxlIGFzIHN0cmluZyBtZXRob2RzLgpAQCAtMTE2LDEwICsxMTYsNyBAQAogICAgICAgICAgICAgIyBDaGVjayB0aGUgbW9zdCBjb21tb24gcGF0aCBmaXJzdC4KICAgICAgICAgICAgIG5hbWVkID0gbW8uZ3JvdXAoJ25hbWVkJykgb3IgbW8uZ3JvdXAoJ2JyYWNlZCcpCiAgICAgICAgICAgICBpZiBuYW1lZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB2YWwgPSBtYXBwaW5nW25hbWVkXQotICAgICAgICAgICAgICAgICMgV2UgdXNlIHRoaXMgaWRpb20gaW5zdGVhZCBvZiBzdHIoKSBiZWNhdXNlIHRoZSBsYXR0ZXIgd2lsbAotICAgICAgICAgICAgICAgICMgZmFpbCBpZiB2YWwgaXMgYSBVbmljb2RlIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0gICAgICAgICAgICAgICAgcmV0dXJuICclcycgJSAodmFsLCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyKG1hcHBpbmdbbmFtZWRdKQogICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2VzY2FwZWQnKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWxpbWl0ZXIKICAgICAgICAgICAgIGlmIG1vLmdyb3VwKCdpbnZhbGlkJykgaXMgbm90IE5vbmU6CkBAIC0xNDYsOSArMTQzLDcgQEAKICAgICAgICAgICAgIG5hbWVkID0gbW8uZ3JvdXAoJ25hbWVkJykgb3IgbW8uZ3JvdXAoJ2JyYWNlZCcpCiAgICAgICAgICAgICBpZiBuYW1lZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICMgV2UgdXNlIHRoaXMgaWRpb20gaW5zdGVhZCBvZiBzdHIoKSBiZWNhdXNlIHRoZSBsYXR0ZXIKLSAgICAgICAgICAgICAgICAgICAgIyB3aWxsIGZhaWwgaWYgdmFsIGlzIGEgVW5pY29kZSBjb250YWluaW5nIG5vbi1BU0NJSQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyVzJyAlIChtYXBwaW5nW25hbWVkXSwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHIobWFwcGluZ1tuYW1lZF0pCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbW8uZ3JvdXAoKQogICAgICAgICAgICAgaWYgbW8uZ3JvdXAoJ2VzY2FwZWQnKSBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9zdWJwcm9jZXNzLnB5IGIvTGliL3N1YnByb2Nlc3MucHkKaW5kZXggNTAyZTI2Yi4uZTc0MmE0ZSAxMDA2NDQKLS0tIGEvTGliL3N1YnByb2Nlc3MucHkKKysrIGIvTGliL3N1YnByb2Nlc3MucHkKQEAgLTcxLDcgKzcxLDE2IEBACiAgICAgICAgIHNlbGYuc3RkZXJyID0gc3RkZXJyCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJDb21tYW5kICclcycgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgJWQiICUgKHNlbGYuY21kLCBzZWxmLnJldHVybmNvZGUpCisgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBhbmQgc2VsZi5yZXR1cm5jb2RlIDwgMDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyBkaWVkIHdpdGggJXIuIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY21kLCBzaWduYWwuU2lnbmFscygtc2VsZi5yZXR1cm5jb2RlKSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAiQ29tbWFuZCAnJXMnIGRpZWQgd2l0aCB1bmtub3duIHNpZ25hbCAlZC4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbWQsIC1zZWxmLnJldHVybmNvZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZC4iICUgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmNtZCwgc2VsZi5yZXR1cm5jb2RlKQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHN0ZG91dChzZWxmKToKQEAgLTE2MSw3ICsxNzAsOCBAQAogICAgIF9fYWxsX18uZXh0ZW5kKFsiQ1JFQVRFX05FV19DT05TT0xFIiwgIkNSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfSU5QVVRfSEFORExFIiwgIlNURF9PVVRQVVRfSEFORExFIiwKICAgICAgICAgICAgICAgICAgICAgIlNURF9FUlJPUl9IQU5ETEUiLCAiU1dfSElERSIsCi0gICAgICAgICAgICAgICAgICAgICJTVEFSVEZfVVNFU1RESEFORExFUyIsICJTVEFSVEZfVVNFU0hPV1dJTkRPVyJdKQorICAgICAgICAgICAgICAgICAgICAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCAiU1RBUlRGX1VTRVNIT1dXSU5ET1ciLAorICAgICAgICAgICAgICAgICAgICAiU1RBUlRVUElORk8iXSkKIAogICAgIGNsYXNzIEhhbmRsZShpbnQpOgogICAgICAgICBjbG9zZWQgPSBGYWxzZQpAQCAtMjEwLDYgKzIyMCwxNiBAQAogIyBidXQgaXQncyBoZXJlIHNvIHRoYXQgaXQgY2FuIGJlIGltcG9ydGVkIHdoZW4gUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGhvdXQKICMgdGhyZWFkcy4KIAorZGVmIF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKKyAgICBvcHRpbWl6YXRpb24gc2V0dGluZ3MgaW4gc3lzLmZsYWdzLiIiIgorICAgIGFyZ3MgPSBbXQorICAgIHZhbHVlID0gc3lzLmZsYWdzLm9wdGltaXplCisgICAgaWYgdmFsdWUgPiAwOgorICAgICAgICBhcmdzLmFwcGVuZCgnLScgKyAnTycgKiB2YWx1ZSkKKyAgICByZXR1cm4gYXJncworCisKIGRlZiBfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21tYW5kLWxpbmUgYXJndW1lbnRzIHJlcHJvZHVjaW5nIHRoZSBjdXJyZW50CiAgICAgc2V0dGluZ3MgaW4gc3lzLmZsYWdzIGFuZCBzeXMud2Fybm9wdGlvbnMuIiIiCkBAIC0yMTcsNyArMjM3LDYgQEAKICAgICAgICAgJ2RlYnVnJzogJ2QnLAogICAgICAgICAjICdpbnNwZWN0JzogJ2knLAogICAgICAgICAjICdpbnRlcmFjdGl2ZSc6ICdpJywKLSAgICAgICAgJ29wdGltaXplJzogJ08nLAogICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKICAgICAgICAgJ25vX3VzZXJfc2l0ZSc6ICdzJywKICAgICAgICAgJ25vX3NpdGUnOiAnUycsCkBAIC0yMjUsOCArMjQ0LDkgQEAKICAgICAgICAgJ3ZlcmJvc2UnOiAndicsCiAgICAgICAgICdieXRlc193YXJuaW5nJzogJ2InLAogICAgICAgICAncXVpZXQnOiAncScsCisgICAgICAgICMgLU8gaXMgaGFuZGxlZCBpbiBfb3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKICAgICB9Ci0gICAgYXJncyA9IFtdCisgICAgYXJncyA9IF9vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogICAgIGZvciBmbGFnLCBvcHQgaW4gZmxhZ19vcHRfbWFwLml0ZW1zKCk6CiAgICAgICAgIHYgPSBnZXRhdHRyKHN5cy5mbGFncywgZmxhZykKICAgICAgICAgaWYgdiA+IDA6CkBAIC00NzYsOCArNDk2LDggQEAKICAgICAiIiIgICAgUmV0dXJuIChzdGF0dXMsIG91dHB1dCkgb2YgZXhlY3V0aW5nIGNtZCBpbiBhIHNoZWxsLgogCiAgICAgRXhlY3V0ZSB0aGUgc3RyaW5nICdjbWQnIGluIGEgc2hlbGwgd2l0aCAnY2hlY2tfb3V0cHV0JyBhbmQKLSAgICByZXR1cm4gYSAyLXR1cGxlIChzdGF0dXMsIG91dHB1dCkuIFVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGlzIHVzZWQsCi0gICAgbWVhbmluZyB0aGF0IHRoZSByZXN1bHQgd2l0aCBiZSBkZWNvZGVkIHRvIGEgc3RyaW5nLgorICAgIHJldHVybiBhIDItdHVwbGUgKHN0YXR1cywgb3V0cHV0KS4gVGhlIGxvY2FsZSBlbmNvZGluZyBpcyB1c2VkCisgICAgdG8gZGVjb2RlIHRoZSBvdXRwdXQgYW5kIHByb2Nlc3MgbmV3bGluZXMuCiAKICAgICBBIHRyYWlsaW5nIG5ld2xpbmUgaXMgc3RyaXBwZWQgZnJvbSB0aGUgb3V0cHV0LgogICAgIFRoZSBleGl0IHN0YXR1cyBmb3IgdGhlIGNvbW1hbmQgY2FuIGJlIGludGVycHJldGVkCkBAIC01NTUsNiArNTc1LDkgQEAKIAogICAgICAgcGFzc19mZHMgKFBPU0lYIG9ubHkpCiAKKyAgICAgIGVuY29kaW5nIGFuZCBlcnJvcnM6IFRleHQgbW9kZSBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxpbmcgdG8gdXNlIGZvcgorICAgICAgICAgIGZpbGUgb2JqZWN0cyBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIuCisKICAgICBBdHRyaWJ1dGVzOgogICAgICAgICBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIsIHBpZCwgcmV0dXJuY29kZQogICAgICIiIgpAQCAtNTY2LDcgKzU4OSw3IEBACiAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCBjd2Q9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwKICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm89Tm9uZSwgY3JlYXRpb25mbGFncz0wLAogICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHM9VHJ1ZSwgc3RhcnRfbmV3X3Nlc3Npb249RmFsc2UsCi0gICAgICAgICAgICAgICAgIHBhc3NfZmRzPSgpKToKKyAgICAgICAgICAgICAgICAgcGFzc19mZHM9KCksICosIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIG5ldyBQb3BlbiBpbnN0YW5jZS4iIiIKICAgICAgICAgX2NsZWFudXAoKQogICAgICAgICAjIEhlbGQgd2hpbGUgYW55dGhpbmcgaXMgY2FsbGluZyB3YWl0cGlkIGJlZm9yZSByZXR1cm5jb2RlIGhhcyBiZWVuCkBAIC02MTksNiArNjQyLDggQEAKICAgICAgICAgc2VsZi5waWQgPSBOb25lCiAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKICAgICAgICAgc2VsZi51bml2ZXJzYWxfbmV3bGluZXMgPSB1bml2ZXJzYWxfbmV3bGluZXMKKyAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCisgICAgICAgIHNlbGYuZXJyb3JzID0gZXJyb3JzCiAKICAgICAgICAgIyBJbnB1dCBhbmQgb3V0cHV0IG9iamVjdHMuIFRoZSBnZW5lcmFsIHByaW5jaXBsZSBpcyBsaWtlCiAgICAgICAgICMgdGhpczoKQEAgLTY1MSwyMiArNjc2LDI4IEBACiAgICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgogICAgICAgICAgICAgICAgIGVycnJlYWQgPSBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUoZXJycmVhZC5EZXRhY2goKSwgMCkKIAotICAgICAgICBpZiBwMmN3cml0ZSAhPSAtMToKLSAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5vcGVuKHAyY3dyaXRlLCAnd2InLCBidWZzaXplKQotICAgICAgICAgICAgaWYgdW5pdmVyc2FsX25ld2xpbmVzOgotICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4gPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3RkaW4sIHdyaXRlX3Rocm91Z2g9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX2J1ZmZlcmluZz0oYnVmc2l6ZSA9PSAxKSkKLSAgICAgICAgaWYgYzJwcmVhZCAhPSAtMToKLSAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gaW8ub3BlbihjMnByZWFkLCAncmInLCBidWZzaXplKQotICAgICAgICAgICAgaWYgdW5pdmVyc2FsX25ld2xpbmVzOgotICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZG91dCkKLSAgICAgICAgaWYgZXJycmVhZCAhPSAtMToKLSAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gaW8ub3BlbihlcnJyZWFkLCAncmInLCBidWZzaXplKQotICAgICAgICAgICAgaWYgdW5pdmVyc2FsX25ld2xpbmVzOgotICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGVycikKKyAgICAgICAgdGV4dF9tb2RlID0gZW5jb2Rpbmcgb3IgZXJyb3JzIG9yIHVuaXZlcnNhbF9uZXdsaW5lcwogCiAgICAgICAgIHNlbGYuX2Nsb3NlZF9jaGlsZF9waXBlX2ZkcyA9IEZhbHNlCisKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgcDJjd3JpdGUgIT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCisgICAgICAgICAgICAgICAgaWYgdGV4dF9tb2RlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGluLCB3cml0ZV90aHJvdWdoPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmc9KGJ1ZnNpemUgPT0gMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBpZiBjMnByZWFkICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0ID0gaW8ub3BlbihjMnByZWFkLCAncmInLCBidWZzaXplKQorICAgICAgICAgICAgICAgIGlmIHRleHRfbW9kZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQgPSBpby5UZXh0SU9XcmFwcGVyKHNlbGYuc3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9ZXJyb3JzKQorICAgICAgICAgICAgaWYgZXJycmVhZCAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyciA9IGlvLm9wZW4oZXJycmVhZCwgJ3JiJywgYnVmc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiB0ZXh0X21vZGU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKKwogICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZV9jaGlsZChhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8sIGNyZWF0aW9uZmxhZ3MsIHNoZWxsLApAQCAtNzAwLDkgKzczMSw4IEBACiAKICAgICAgICAgICAgIHJhaXNlCiAKLQotICAgIGRlZiBfdHJhbnNsYXRlX25ld2xpbmVzKHNlbGYsIGRhdGEsIGVuY29kaW5nKToKLSAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKGVuY29kaW5nKQorICAgIGRlZiBfdHJhbnNsYXRlX25ld2xpbmVzKHNlbGYsIGRhdGEsIGVuY29kaW5nLCBlcnJvcnMpOgorICAgICAgICBkYXRhID0gZGF0YS5kZWNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgcmV0dXJuIGRhdGEucmVwbGFjZSgiXHJcbiIsICJcbiIpLnJlcGxhY2UoIlxyIiwgIlxuIikKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CkBAIC03MjQsNiArNzU0LDExIEBACiAgICAgICAgIGlmIG5vdCBzZWxmLl9jaGlsZF9jcmVhdGVkOgogICAgICAgICAgICAgIyBXZSBkaWRuJ3QgZ2V0IHRvIHN1Y2Nlc3NmdWxseSBjcmVhdGUgYSBjaGlsZCBwcm9jZXNzLgogICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgICAgICAgIyBOb3QgcmVhZGluZyBzdWJwcm9jZXNzIGV4aXQgc3RhdHVzIGNyZWF0ZXMgYSB6b21iaSBwcm9jZXNzIHdoaWNoCisgICAgICAgICAgICAjIGlzIG9ubHkgZGVzdHJveWVkIGF0IHRoZSBwYXJlbnQgcHl0aG9uIHByb2Nlc3MgZXhpdAorICAgICAgICAgICAgd2FybmluZ3Mud2Fybigic3VicHJvY2VzcyAlcyBpcyBzdGlsbCBydW5uaW5nIiAlIHNlbGYucGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVdhcm5pbmcsIHNvdXJjZT1zZWxmKQogICAgICAgICAjIEluIGNhc2UgdGhlIGNoaWxkIGhhc24ndCBiZWVuIHdhaXRlZCBvbiwgY2hlY2sgaWYgaXQncyBkb25lLgogICAgICAgICBzZWxmLl9pbnRlcm5hbF9wb2xsKF9kZWFkc3RhdGU9X21heHNpemUpCiAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lIGFuZCBfYWN0aXZlIGlzIG5vdCBOb25lOgpAQCAtMTI1MSw5ICsxMjg2LDE0IEBACiAKICAgICAgICAgICAgIGlmIGVycnBpcGVfZGF0YToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLndhaXRwaWQoc2VsZi5waWQsIDApCisgICAgICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gb3Mud2FpdHBpZChzZWxmLnBpZCwgMCkKKyAgICAgICAgICAgICAgICAgICAgaWYgcGlkID09IHNlbGYucGlkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2V4aXRzdGF0dXMoc3RzKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gc3lzLm1heHNpemUKICAgICAgICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uX25hbWUsIGhleF9lcnJubywgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX2RhdGEuc3BsaXQoYic6JywgMikpCkBAIC0xNDc5LDEzICsxNTE5LDE1IEBACiAKICAgICAgICAgICAgICMgVHJhbnNsYXRlIG5ld2xpbmVzLCBpZiByZXF1ZXN0ZWQuCiAgICAgICAgICAgICAjIFRoaXMgYWxzbyB0dXJucyBieXRlcyBpbnRvIHN0cmluZ3MuCi0gICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKKyAgICAgICAgICAgIGlmIHNlbGYuZW5jb2Rpbmcgb3Igc2VsZi5lcnJvcnMgb3Igc2VsZi51bml2ZXJzYWxfbmV3bGluZXM6CiAgICAgICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl90cmFuc2xhdGVfbmV3bGluZXMoc3Rkb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXQuZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZG91dC5lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmVycm9ycykKICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX3RyYW5zbGF0ZV9uZXdsaW5lcyhzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lbmNvZGluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnIuZXJyb3JzKQogCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCkBAIC0xNDk3LDggKzE1MzksMTAgQEAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW4gYW5kIHNlbGYuX2lucHV0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXRfb2Zmc2V0ID0gMAogICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gaW5wdXQKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyBhbmQgaW5wdXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcpCisgICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmUgYW5kICgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lbmNvZGluZyBvciBzZWxmLmVycm9ycyBvciBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lcyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0ID0gc2VsZi5faW5wdXQuZW5jb2RlKHNlbGYuc3RkaW4uZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uZXJyb3JzKQogCiAKICAgICAgICAgZGVmIHNlbmRfc2lnbmFsKHNlbGYsIHNpZyk6CmRpZmYgLS1naXQgYS9MaWIvc3ltYm9sLnB5IGIvTGliL3N5bWJvbC5weQppbmRleCA3NTQxNDk3Li5kOWYwMWUwIDEwMDc1NQotLS0gYS9MaWIvc3ltYm9sLnB5CisrKyBiL0xpYi9zeW1ib2wucHkKQEAgLTI3LDc0ICsyNyw3NSBAQAogc2ltcGxlX3N0bXQgPSAyNzAKIHNtYWxsX3N0bXQgPSAyNzEKIGV4cHJfc3RtdCA9IDI3MgotdGVzdGxpc3Rfc3Rhcl9leHByID0gMjczCi1hdWdhc3NpZ24gPSAyNzQKLWRlbF9zdG10ID0gMjc1Ci1wYXNzX3N0bXQgPSAyNzYKLWZsb3dfc3RtdCA9IDI3NwotYnJlYWtfc3RtdCA9IDI3OAotY29udGludWVfc3RtdCA9IDI3OQotcmV0dXJuX3N0bXQgPSAyODAKLXlpZWxkX3N0bXQgPSAyODEKLXJhaXNlX3N0bXQgPSAyODIKLWltcG9ydF9zdG10ID0gMjgzCi1pbXBvcnRfbmFtZSA9IDI4NAotaW1wb3J0X2Zyb20gPSAyODUKLWltcG9ydF9hc19uYW1lID0gMjg2Ci1kb3R0ZWRfYXNfbmFtZSA9IDI4NwotaW1wb3J0X2FzX25hbWVzID0gMjg4Ci1kb3R0ZWRfYXNfbmFtZXMgPSAyODkKLWRvdHRlZF9uYW1lID0gMjkwCi1nbG9iYWxfc3RtdCA9IDI5MQotbm9ubG9jYWxfc3RtdCA9IDI5MgotYXNzZXJ0X3N0bXQgPSAyOTMKLWNvbXBvdW5kX3N0bXQgPSAyOTQKLWFzeW5jX3N0bXQgPSAyOTUKLWlmX3N0bXQgPSAyOTYKLXdoaWxlX3N0bXQgPSAyOTcKLWZvcl9zdG10ID0gMjk4Ci10cnlfc3RtdCA9IDI5OQotd2l0aF9zdG10ID0gMzAwCi13aXRoX2l0ZW0gPSAzMDEKLWV4Y2VwdF9jbGF1c2UgPSAzMDIKLXN1aXRlID0gMzAzCi10ZXN0ID0gMzA0Ci10ZXN0X25vY29uZCA9IDMwNQotbGFtYmRlZiA9IDMwNgotbGFtYmRlZl9ub2NvbmQgPSAzMDcKLW9yX3Rlc3QgPSAzMDgKLWFuZF90ZXN0ID0gMzA5Ci1ub3RfdGVzdCA9IDMxMAotY29tcGFyaXNvbiA9IDMxMQotY29tcF9vcCA9IDMxMgotc3Rhcl9leHByID0gMzEzCi1leHByID0gMzE0Ci14b3JfZXhwciA9IDMxNQotYW5kX2V4cHIgPSAzMTYKLXNoaWZ0X2V4cHIgPSAzMTcKLWFyaXRoX2V4cHIgPSAzMTgKLXRlcm0gPSAzMTkKLWZhY3RvciA9IDMyMAotcG93ZXIgPSAzMjEKLWF0b21fZXhwciA9IDMyMgotYXRvbSA9IDMyMwotdGVzdGxpc3RfY29tcCA9IDMyNAotdHJhaWxlciA9IDMyNQotc3Vic2NyaXB0bGlzdCA9IDMyNgotc3Vic2NyaXB0ID0gMzI3Ci1zbGljZW9wID0gMzI4Ci1leHBybGlzdCA9IDMyOQotdGVzdGxpc3QgPSAzMzAKLWRpY3RvcnNldG1ha2VyID0gMzMxCi1jbGFzc2RlZiA9IDMzMgotYXJnbGlzdCA9IDMzMwotYXJndW1lbnQgPSAzMzQKLWNvbXBfaXRlciA9IDMzNQotY29tcF9mb3IgPSAzMzYKLWNvbXBfaWYgPSAzMzcKLWVuY29kaW5nX2RlY2wgPSAzMzgKLXlpZWxkX2V4cHIgPSAzMzkKLXlpZWxkX2FyZyA9IDM0MAorYW5uYXNzaWduID0gMjczCit0ZXN0bGlzdF9zdGFyX2V4cHIgPSAyNzQKK2F1Z2Fzc2lnbiA9IDI3NQorZGVsX3N0bXQgPSAyNzYKK3Bhc3Nfc3RtdCA9IDI3NworZmxvd19zdG10ID0gMjc4CiticmVha19zdG10ID0gMjc5Citjb250aW51ZV9zdG10ID0gMjgwCityZXR1cm5fc3RtdCA9IDI4MQoreWllbGRfc3RtdCA9IDI4MgorcmFpc2Vfc3RtdCA9IDI4MworaW1wb3J0X3N0bXQgPSAyODQKK2ltcG9ydF9uYW1lID0gMjg1CitpbXBvcnRfZnJvbSA9IDI4NgoraW1wb3J0X2FzX25hbWUgPSAyODcKK2RvdHRlZF9hc19uYW1lID0gMjg4CitpbXBvcnRfYXNfbmFtZXMgPSAyODkKK2RvdHRlZF9hc19uYW1lcyA9IDI5MAorZG90dGVkX25hbWUgPSAyOTEKK2dsb2JhbF9zdG10ID0gMjkyCitub25sb2NhbF9zdG10ID0gMjkzCithc3NlcnRfc3RtdCA9IDI5NAorY29tcG91bmRfc3RtdCA9IDI5NQorYXN5bmNfc3RtdCA9IDI5NgoraWZfc3RtdCA9IDI5Nword2hpbGVfc3RtdCA9IDI5OAorZm9yX3N0bXQgPSAyOTkKK3RyeV9zdG10ID0gMzAwCit3aXRoX3N0bXQgPSAzMDEKK3dpdGhfaXRlbSA9IDMwMgorZXhjZXB0X2NsYXVzZSA9IDMwMworc3VpdGUgPSAzMDQKK3Rlc3QgPSAzMDUKK3Rlc3Rfbm9jb25kID0gMzA2CitsYW1iZGVmID0gMzA3CitsYW1iZGVmX25vY29uZCA9IDMwOAorb3JfdGVzdCA9IDMwOQorYW5kX3Rlc3QgPSAzMTAKK25vdF90ZXN0ID0gMzExCitjb21wYXJpc29uID0gMzEyCitjb21wX29wID0gMzEzCitzdGFyX2V4cHIgPSAzMTQKK2V4cHIgPSAzMTUKK3hvcl9leHByID0gMzE2CithbmRfZXhwciA9IDMxNworc2hpZnRfZXhwciA9IDMxOAorYXJpdGhfZXhwciA9IDMxOQordGVybSA9IDMyMAorZmFjdG9yID0gMzIxCitwb3dlciA9IDMyMgorYXRvbV9leHByID0gMzIzCithdG9tID0gMzI0Cit0ZXN0bGlzdF9jb21wID0gMzI1Cit0cmFpbGVyID0gMzI2CitzdWJzY3JpcHRsaXN0ID0gMzI3CitzdWJzY3JpcHQgPSAzMjgKK3NsaWNlb3AgPSAzMjkKK2V4cHJsaXN0ID0gMzMwCit0ZXN0bGlzdCA9IDMzMQorZGljdG9yc2V0bWFrZXIgPSAzMzIKK2NsYXNzZGVmID0gMzMzCithcmdsaXN0ID0gMzM0Cithcmd1bWVudCA9IDMzNQorY29tcF9pdGVyID0gMzM2Citjb21wX2ZvciA9IDMzNworY29tcF9pZiA9IDMzOAorZW5jb2RpbmdfZGVjbCA9IDMzOQoreWllbGRfZXhwciA9IDM0MAoreWllbGRfYXJnID0gMzQxCiAjLS1lbmQgY29uc3RhbnRzLS0KIAogc3ltX25hbWUgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL3N5bXRhYmxlLnB5IGIvTGliL3N5bXRhYmxlLnB5CmluZGV4IDg0ZmVjNGEuLmIwZTUyNjAgMTAwNjQ0Ci0tLSBhL0xpYi9zeW10YWJsZS5weQorKysgYi9MaWIvc3ltdGFibGUucHkKQEAgLTIsNyArMiw3IEBACiAKIGltcG9ydCBfc3ltdGFibGUKIGZyb20gX3N5bXRhYmxlIGltcG9ydCAoVVNFLCBERUZfR0xPQkFMLCBERUZfTE9DQUwsIERFRl9QQVJBTSwKLSAgICAgREVGX0lNUE9SVCwgREVGX0JPVU5ELCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCisgICAgIERFRl9JTVBPUlQsIERFRl9CT1VORCwgREVGX0FOTk9ULCBTQ09QRV9PRkYsIFNDT1BFX01BU0ssIEZSRUUsCiAgICAgIExPQ0FMLCBHTE9CQUxfSU1QTElDSVQsIEdMT0JBTF9FWFBMSUNJVCwgQ0VMTCkKIAogaW1wb3J0IHdlYWtyZWYKQEAgLTE5MCw2ICsxOTAsOSBAQAogICAgIGRlZiBpc19sb2NhbChzZWxmKToKICAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX2ZsYWdzICYgREVGX0JPVU5EKQogCisgICAgZGVmIGlzX2Fubm90YXRlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5fX2ZsYWdzICYgREVGX0FOTk9UKQorCiAgICAgZGVmIGlzX2ZyZWUoc2VsZik6CiAgICAgICAgIHJldHVybiBib29sKHNlbGYuX19zY29wZSA9PSBGUkVFKQogCmRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQppbmRleCA5YzM0YmUwLi45MzE0ZTcxIDEwMDY0NAotLS0gYS9MaWIvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9zeXNjb25maWcucHkKQEAgLTg2LDggKzg2LDggQEAKICAjIEZJWE1FIGRvbid0IHJlbHkgb24gc3lzLnZlcnNpb24gaGVyZSwgaXRzIGZvcm1hdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwKICAjIG9mIENQeXRob24sIHVzZSBzeXMudmVyc2lvbl9pbmZvIG9yIHN5cy5oZXh2ZXJzaW9uCiBfUFlfVkVSU0lPTiA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KLV9QWV9WRVJTSU9OX1NIT1JUID0gc3lzLnZlcnNpb25bOjNdCi1fUFlfVkVSU0lPTl9TSE9SVF9OT19ET1QgPSBfUFlfVkVSU0lPTlswXSArIF9QWV9WRVJTSU9OWzJdCitfUFlfVkVSU0lPTl9TSE9SVCA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQorX1BZX1ZFUlNJT05fU0hPUlRfTk9fRE9UID0gJyVkJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIF9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCiBfQkFTRV9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkKIF9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQpAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgIyBSZWdleGVzIG5lZWRlZCBmb3IgcGFyc2luZyBNYWtlZmlsZSAoYW5kIHNpbWlsYXIgc3ludGF4ZXMsCiAgICAgIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCiAgICAgaW1wb3J0IHJlCi0gICAgX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZSgiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCisgICAgX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZShyIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQogICAgIF9maW5kdmFyMV9yeCA9IHJlLmNvbXBpbGUociJcJFwoKFtBLVphLXpdW0EtWmEtejAtOV9dKilcKSIpCiAgICAgX2ZpbmR2YXIyX3J4ID0gcmUuY29tcGlsZShyIlwkeyhbQS1aYS16XVtBLVphLXowLTlfXSopfSIpCiAKQEAgLTMzNyw4ICszMzcsMjAgQEAKICAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZy0lcyVzJyAlIChfUFlfVkVSU0lPTl9TSE9SVCwgc3lzLmFiaWZsYWdzKQogICAgIGVsc2U6CiAgICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWcnCisgICAgaWYgaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJyk6CisgICAgICAgIGNvbmZpZ19kaXJfbmFtZSArPSAnLSVzJyAlIHN5cy5pbXBsZW1lbnRhdGlvbi5fbXVsdGlhcmNoCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihnZXRfcGF0aCgnc3RkbGliJyksIGNvbmZpZ19kaXJfbmFtZSwgJ01ha2VmaWxlJykKIAorCitkZWYgX2dldF9zeXNjb25maWdkYXRhX25hbWUoKToKKyAgICByZXR1cm4gb3MuZW52aXJvbi5nZXQoJ19QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FJywKKyAgICAgICAgJ19zeXNjb25maWdkYXRhX3thYml9X3twbGF0Zm9ybX1fe211bHRpYXJjaH0nLmZvcm1hdCgKKyAgICAgICAgYWJpPXN5cy5hYmlmbGFncywKKyAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAorICAgICAgICBtdWx0aWFyY2g9Z2V0YXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdfbXVsdGlhcmNoJywgJycpLAorICAgICkpCisKKwogZGVmIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCk6CiAgICAgIiIiR2VuZXJhdGUgdGhlIFB5dGhvbiBtb2R1bGUgY29udGFpbmluZyBidWlsZC10aW1lIHZhcmlhYmxlcy4iIiIKICAgICBpbXBvcnQgcHByaW50CkBAIC0zNzksMTQgKzM5MSwxNCBAQAogICAgICMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIG1hbnVhbGx5IGFuZCBwb3B1bGF0ZSBpdCB3aXRoIHRoZSBidWlsZCB2YXJzLgogICAgICMgVGhpcyBpcyBtb3JlIHRoYW4gc3VmZmljaWVudCBmb3IgZW5zdXJpbmcgdGhlIHN1YnNlcXVlbnQgY2FsbCB0bwogICAgICMgZ2V0X3BsYXRmb3JtKCkgc3VjY2VlZHMuCi0gICAgbmFtZSA9ICdfc3lzY29uZmlnZGF0YScKKyAgICBuYW1lID0gX2dldF9zeXNjb25maWdkYXRhX25hbWUoKQogICAgIGlmICdkYXJ3aW4nIGluIHN5cy5wbGF0Zm9ybToKICAgICAgICAgaW1wb3J0IHR5cGVzCiAgICAgICAgIG1vZHVsZSA9IHR5cGVzLk1vZHVsZVR5cGUobmFtZSkKICAgICAgICAgbW9kdWxlLmJ1aWxkX3RpbWVfdmFycyA9IHZhcnMKICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKIAotICAgIHB5YnVpbGRkaXIgPSAnYnVpbGQvbGliLiVzLSVzJyAlIChnZXRfcGxhdGZvcm0oKSwgc3lzLnZlcnNpb25bOjNdKQorICAgIHB5YnVpbGRkaXIgPSAnYnVpbGQvbGliLiVzLSVzJyAlIChnZXRfcGxhdGZvcm0oKSwgX1BZX1ZFUlNJT05fU0hPUlQpCiAgICAgaWYgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6CiAgICAgICAgIHB5YnVpbGRkaXIgKz0gJy1weWRlYnVnJwogICAgIG9zLm1ha2VkaXJzKHB5YnVpbGRkaXIsIGV4aXN0X29rPVRydWUpCkBAIC00MDUsNyArNDE3LDkgQEAKIGRlZiBfaW5pdF9wb3NpeCh2YXJzKToKICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCiAgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKLSAgICBmcm9tIF9zeXNjb25maWdkYXRhIGltcG9ydCBidWlsZF90aW1lX3ZhcnMKKyAgICBuYW1lID0gX2dldF9zeXNjb25maWdkYXRhX25hbWUoKQorICAgIF90ZW1wID0gX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbJ2J1aWxkX3RpbWVfdmFycyddLCAwKQorICAgIGJ1aWxkX3RpbWVfdmFycyA9IF90ZW1wLmJ1aWxkX3RpbWVfdmFycwogICAgIHZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKIAogZGVmIF9pbml0X25vbl9wb3NpeCh2YXJzKToKQEAgLTUxOCw3ICs1MzIsNyBAQAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2V4ZWNfcHJlZml4J10gPSBfRVhFQ19QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uJ10gPSBfUFlfVkVSU0lPTgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fc2hvcnQnXSA9IF9QWV9WRVJTSU9OX1NIT1JUCi0gICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQorICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fbm9kb3QnXSA9IF9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVAogICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9iYXNlJ10gPSBfQkFTRV9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydiYXNlJ10gPSBfUFJFRklYCiAgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX3BsYXRiYXNlJ10gPSBfQkFTRV9FWEVDX1BSRUZJWApkaWZmIC0tZ2l0IGEvTGliL3RhcmZpbGUucHkgYi9MaWIvdGFyZmlsZS5weQppbmRleCA3MjFmOWQ3Li5hNjJhYjgyIDEwMDc1NQotLS0gYS9MaWIvdGFyZmlsZS5weQorKysgYi9MaWIvdGFyZmlsZS5weQpAQCAtNjQsNyArNjQsMTAgQEAKICAgICBwYXNzCiAKICMgZnJvbSB0YXJmaWxlIGltcG9ydCAqCi1fX2FsbF9fID0gWyJUYXJGaWxlIiwgIlRhckluZm8iLCAiaXNfdGFyZmlsZSIsICJUYXJFcnJvciJdCitfX2FsbF9fID0gWyJUYXJGaWxlIiwgIlRhckluZm8iLCAiaXNfdGFyZmlsZSIsICJUYXJFcnJvciIsICJSZWFkRXJyb3IiLAorICAgICAgICAgICAiQ29tcHJlc3Npb25FcnJvciIsICJTdHJlYW1FcnJvciIsICJFeHRyYWN0RXJyb3IiLCAiSGVhZGVyRXJyb3IiLAorICAgICAgICAgICAiRU5DT0RJTkciLCAiVVNUQVJfRk9STUFUIiwgIkdOVV9GT1JNQVQiLCAiUEFYX0ZPUk1BVCIsCisgICAgICAgICAgICJERUZBVUxUX0ZPUk1BVCIsICJvcGVuIl0KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyB0YXIgY29uc3RhbnRzCkBAIC0xNDEsNyArMTQ0LDcgQEAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgaW5pdGlhbGl6YXRpb24KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgb3MubmFtZSA9PSAibnQiOgogICAgIEVOQ09ESU5HID0gInV0Zi04IgogZWxzZToKICAgICBFTkNPRElORyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQpAQCAtMjI1LDIxICsyMjgsMjEgQEAKICAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Yjh4MzU2YiIsIGJ1ZikpCiAgICAgcmV0dXJuIHVuc2lnbmVkX2Noa3N1bSwgc2lnbmVkX2Noa3N1bQogCi1kZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvcik6CitkZWYgY29weWZpbGVvYmooc3JjLCBkc3QsIGxlbmd0aD1Ob25lLCBleGNlcHRpb249T1NFcnJvciwgYnVmc2l6ZT1Ob25lKToKICAgICAiIiJDb3B5IGxlbmd0aCBieXRlcyBmcm9tIGZpbGVvYmogc3JjIHRvIGZpbGVvYmogZHN0LgogICAgICAgIElmIGxlbmd0aCBpcyBOb25lLCBjb3B5IHRoZSBlbnRpcmUgY29udGVudC4KICAgICAiIiIKKyAgICBidWZzaXplID0gYnVmc2l6ZSBvciAxNiAqIDEwMjQKICAgICBpZiBsZW5ndGggPT0gMDoKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbGVuZ3RoIGlzIE5vbmU6Ci0gICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzcmMsIGRzdCkKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKHNyYywgZHN0LCBidWZzaXplKQogICAgICAgICByZXR1cm4KIAotICAgIEJVRlNJWkUgPSAxNiAqIDEwMjQKLSAgICBibG9ja3MsIHJlbWFpbmRlciA9IGRpdm1vZChsZW5ndGgsIEJVRlNJWkUpCisgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QobGVuZ3RoLCBidWZzaXplKQogICAgIGZvciBiIGluIHJhbmdlKGJsb2Nrcyk6Ci0gICAgICAgIGJ1ZiA9IHNyYy5yZWFkKEJVRlNJWkUpCi0gICAgICAgIGlmIGxlbihidWYpIDwgQlVGU0laRToKKyAgICAgICAgYnVmID0gc3JjLnJlYWQoYnVmc2l6ZSkKKyAgICAgICAgaWYgbGVuKGJ1ZikgPCBidWZzaXplOgogICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9uKCJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIikKICAgICAgICAgZHN0LndyaXRlKGJ1ZikKIApAQCAtMTQwMCw3ICsxNDAzLDggQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIG1vZGU9InIiLCBmaWxlb2JqPU5vbmUsIGZvcm1hdD1Ob25lLAogICAgICAgICAgICAgdGFyaW5mbz1Ob25lLCBkZXJlZmVyZW5jZT1Ob25lLCBpZ25vcmVfemVyb3M9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSwKLSAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwgZXJyb3JsZXZlbD1Ob25lKToKKyAgICAgICAgICAgIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIiwgcGF4X2hlYWRlcnM9Tm9uZSwgZGVidWc9Tm9uZSwKKyAgICAgICAgICAgIGVycm9ybGV2ZWw9Tm9uZSwgY29weWJ1ZnNpemU9Tm9uZSk6CiAgICAgICAgICIiIk9wZW4gYW4gKHVuY29tcHJlc3NlZCkgdGFyIGFyY2hpdmUgYG5hbWUnLiBgbW9kZScgaXMgZWl0aGVyICdyJyB0bwogICAgICAgICAgICByZWFkIGZyb20gYW4gZXhpc3RpbmcgYXJjaGl2ZSwgJ2EnIHRvIGFwcGVuZCBkYXRhIHRvIGFuIGV4aXN0aW5nCiAgICAgICAgICAgIGZpbGUgb3IgJ3cnIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIG9uZS4gYG1vZGUnCkBAIC0xNDU2LDYgKzE0NjAsNyBAQAogICAgICAgICAgICAgc2VsZi5lcnJvcmxldmVsID0gZXJyb3JsZXZlbAogCiAgICAgICAgICMgSW5pdCBkYXRhc3RydWN0dXJlcy4KKyAgICAgICAgc2VsZi5jb3B5YnVmc2l6ZSA9IGNvcHlidWZzaXplCiAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKICAgICAgICAgc2VsZi5tZW1iZXJzID0gW10gICAgICAgIyBsaXN0IG9mIG1lbWJlcnMgYXMgVGFySW5mbyBvYmplY3RzCiAgICAgICAgIHNlbGYuX2xvYWRlZCA9IEZhbHNlICAgICMgZmxhZyBpZiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZApAQCAtMTU1NSw3ICsxNTYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2F2ZWRfcG9zID0gZmlsZW9iai50ZWxsKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKG5hbWUsICJyIiwgZmlsZW9iaiwgKiprd2FyZ3MpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChSZWFkRXJyb3IsIENvbXByZXNzaW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgZXhjZXB0IChSZWFkRXJyb3IsIENvbXByZXNzaW9uRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW9iai5zZWVrKHNhdmVkX3BvcykKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTE5NjAsMTAgKzE5NjUsMTAgQEAKICAgICAgICAgYnVmID0gdGFyaW5mby50b2J1ZihzZWxmLmZvcm1hdCwgc2VsZi5lbmNvZGluZywgc2VsZi5lcnJvcnMpCiAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShidWYpCiAgICAgICAgIHNlbGYub2Zmc2V0ICs9IGxlbihidWYpCi0KKyAgICAgICAgYnVmc2l6ZT1zZWxmLmNvcHlidWZzaXplCiAgICAgICAgICMgSWYgdGhlcmUncyBkYXRhIHRvIGZvbGxvdywgYXBwZW5kIGl0LgogICAgICAgICBpZiBmaWxlb2JqIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29weWZpbGVvYmooZmlsZW9iaiwgc2VsZi5maWxlb2JqLCB0YXJpbmZvLnNpemUpCisgICAgICAgICAgICBjb3B5ZmlsZW9iaihmaWxlb2JqLCBzZWxmLmZpbGVvYmosIHRhcmluZm8uc2l6ZSwgYnVmc2l6ZT1idWZzaXplKQogICAgICAgICAgICAgYmxvY2tzLCByZW1haW5kZXIgPSBkaXZtb2QodGFyaW5mby5zaXplLCBCTE9DS1NJWkUpCiAgICAgICAgICAgICBpZiByZW1haW5kZXIgPiAwOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai53cml0ZShOVUwgKiAoQkxPQ0tTSVpFIC0gcmVtYWluZGVyKSkKQEAgLTIxNDUsMTUgKzIxNTAsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNvdXJjZSA9IHNlbGYuZmlsZW9iagogICAgICAgICBzb3VyY2Uuc2Vlayh0YXJpbmZvLm9mZnNldF9kYXRhKQorICAgICAgICBidWZzaXplID0gc2VsZi5jb3B5YnVmc2l6ZQogICAgICAgICB3aXRoIGJsdG5fb3Blbih0YXJnZXRwYXRoLCAid2IiKSBhcyB0YXJnZXQ6CiAgICAgICAgICAgICBpZiB0YXJpbmZvLnNwYXJzZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBmb3Igb2Zmc2V0LCBzaXplIGluIHRhcmluZm8uc3BhcnNlOgogICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2VlayhvZmZzZXQpCi0gICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCBzaXplLCBSZWFkRXJyb3IpCisgICAgICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCBzaXplLCBSZWFkRXJyb3IsIGJ1ZnNpemUpCiAgICAgICAgICAgICAgICAgdGFyZ2V0LnNlZWsodGFyaW5mby5zaXplKQogICAgICAgICAgICAgICAgIHRhcmdldC50cnVuY2F0ZSgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKHNvdXJjZSwgdGFyZ2V0LCB0YXJpbmZvLnNpemUsIFJlYWRFcnJvcikKKyAgICAgICAgICAgICAgICBjb3B5ZmlsZW9iaihzb3VyY2UsIHRhcmdldCwgdGFyaW5mby5zaXplLCBSZWFkRXJyb3IsIGJ1ZnNpemUpCiAKICAgICBkZWYgbWFrZXVua25vd24oc2VsZiwgdGFyaW5mbywgdGFyZ2V0cGF0aCk6CiAgICAgICAgICIiIk1ha2UgYSBmaWxlIGZyb20gYSBUYXJJbmZvIG9iamVjdCB3aXRoIGFuIHVua25vd24gdHlwZQpAQCAtMjIzMiw3ICsyMjM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3MubGNob3duKHRhcmdldHBhdGgsIHUsIGcpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgb3MuY2hvd24odGFyZ2V0cGF0aCwgdSwgZykKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBFeHRyYWN0RXJyb3IoImNvdWxkIG5vdCBjaGFuZ2Ugb3duZXIiKQogCiAgICAgZGVmIGNobW9kKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgpAQCAtMjI0MSw3ICsyMjQ3LDcgQEAKICAgICAgICAgaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MuY2htb2QodGFyZ2V0cGF0aCwgdGFyaW5mby5tb2RlKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RlIikKIAogICAgIGRlZiB1dGltZShzZWxmLCB0YXJpbmZvLCB0YXJnZXRwYXRoKToKQEAgLTIyNTEsNyArMjI1Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3MudXRpbWUodGFyZ2V0cGF0aCwgKHRhcmluZm8ubXRpbWUsIHRhcmluZm8ubXRpbWUpKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIEV4dHJhY3RFcnJvcigiY291bGQgbm90IGNoYW5nZSBtb2RpZmljYXRpb24gdGltZSIpCiAKICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNzQsOSArMjM4MCwzMiBAQAogICAgICAgICAiIiJQcm92aWRlIGFuIGl0ZXJhdG9yIG9iamVjdC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuX2xvYWRlZDoKLSAgICAgICAgICAgIHJldHVybiBpdGVyKHNlbGYubWVtYmVycykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBUYXJJdGVyKHNlbGYpCisgICAgICAgICAgICB5aWVsZCBmcm9tIHNlbGYubWVtYmVycworICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBZaWVsZCBpdGVtcyB1c2luZyBUYXJGaWxlJ3MgbmV4dCgpIG1ldGhvZC4KKyAgICAgICAgIyBXaGVuIGFsbCBtZW1iZXJzIGhhdmUgYmVlbiByZWFkLCBzZXQgVGFyRmlsZSBhcyBfbG9hZGVkLgorICAgICAgICBpbmRleCA9IDAKKyAgICAgICAgIyBGaXggZm9yIFNGICMxMTAwNDI5OiBVbmRlciByYXJlIGNpcmN1bXN0YW5jZXMgaXQgY2FuCisgICAgICAgICMgaGFwcGVuIHRoYXQgZ2V0bWVtYmVycygpIGlzIGNhbGxlZCBkdXJpbmcgaXRlcmF0aW9uLAorICAgICAgICAjIHdoaWNoIHdpbGwgaGF2ZSBhbHJlYWR5IGV4aGF1c3RlZCB0aGUgbmV4dCgpIG1ldGhvZC4KKyAgICAgICAgaWYgc2VsZi5maXJzdG1lbWJlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm5leHQoKQorICAgICAgICAgICAgaW5kZXggKz0gMQorICAgICAgICAgICAgeWllbGQgdGFyaW5mbworCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBpbmRleCA8IGxlbihzZWxmLm1lbWJlcnMpOgorICAgICAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLm1lbWJlcnNbaW5kZXhdCisgICAgICAgICAgICBlbGlmIG5vdCBzZWxmLl9sb2FkZWQ6CisgICAgICAgICAgICAgICAgdGFyaW5mbyA9IHNlbGYubmV4dCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHRhcmluZm86CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvYWRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgaW5kZXggKz0gMQorICAgICAgICAgICAgeWllbGQgdGFyaW5mbwogCiAgICAgZGVmIF9kYmcoc2VsZiwgbGV2ZWwsIG1zZyk6CiAgICAgICAgICIiIldyaXRlIGRlYnVnZ2luZyBvdXRwdXQgdG8gc3lzLnN0ZGVyci4KQEAgLTIzOTcsNDUgKzI0MjYsNiBAQAogICAgICAgICAgICAgaWYgbm90IHNlbGYuX2V4dGZpbGVvYmo6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQotIyBjbGFzcyBUYXJGaWxlCi0KLWNsYXNzIFRhckl0ZXI6Ci0gICAgIiIiSXRlcmF0b3IgQ2xhc3MuCi0KLSAgICAgICBmb3IgdGFyaW5mbyBpbiBUYXJGaWxlKC4uLik6Ci0gICAgICAgICAgIHN1aXRlLi4uCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhIFRhckl0ZXIgb2JqZWN0LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi50YXJmaWxlID0gdGFyZmlsZQotICAgICAgICBzZWxmLmluZGV4ID0gMAotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGl0ZXJhdG9yIG9iamVjdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmCi0gICAgZGVmIF9fbmV4dF9fKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5leHQgaXRlbSB1c2luZyBUYXJGaWxlJ3MgbmV4dCgpIG1ldGhvZC4KLSAgICAgICAgICAgV2hlbiBhbGwgbWVtYmVycyBoYXZlIGJlZW4gcmVhZCwgc2V0IFRhckZpbGUgYXMgX2xvYWRlZC4KLSAgICAgICAgIiIiCi0gICAgICAgICMgRml4IGZvciBTRiAjMTEwMDQyOTogVW5kZXIgcmFyZSBjaXJjdW1zdGFuY2VzIGl0IGNhbgotICAgICAgICAjIGhhcHBlbiB0aGF0IGdldG1lbWJlcnMoKSBpcyBjYWxsZWQgZHVyaW5nIGl0ZXJhdGlvbiwKLSAgICAgICAgIyB3aGljaCB3aWxsIGNhdXNlIFRhckl0ZXIgdG8gc3RvcCBwcmVtYXR1cmVseS4KLQotICAgICAgICBpZiBzZWxmLmluZGV4ID09IDAgYW5kIHNlbGYudGFyZmlsZS5maXJzdG1lbWJlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhcmZpbGUubmV4dCgpCi0gICAgICAgIGVsaWYgc2VsZi5pbmRleCA8IGxlbihzZWxmLnRhcmZpbGUubWVtYmVycyk6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm1lbWJlcnNbc2VsZi5pbmRleF0KLSAgICAgICAgZWxpZiBub3Qgc2VsZi50YXJmaWxlLl9sb2FkZWQ6Ci0gICAgICAgICAgICB0YXJpbmZvID0gc2VsZi50YXJmaWxlLm5leHQoKQotICAgICAgICAgICAgaWYgbm90IHRhcmluZm86Ci0gICAgICAgICAgICAgICAgc2VsZi50YXJmaWxlLl9sb2FkZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotICAgICAgICBzZWxmLmluZGV4ICs9IDEKLSAgICAgICAgcmV0dXJuIHRhcmluZm8KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIGV4cG9ydGVkIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvTGliL3RlbG5ldGxpYi5weSBiL0xpYi90ZWxuZXRsaWIucHkKaW5kZXggNzJkYWJjNy4uYjA4NjNiMSAxMDA2NDQKLS0tIGEvTGliL3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVsbmV0bGliLnB5CkBAIC02MzcsNiArNjM3LDEyIEBACiAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgogICAgICAgICByZXR1cm4gKC0xLCBOb25lLCB0ZXh0KQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIHRlc3QoKToKICAgICAiIiJUZXN0IHByb2dyYW0gZm9yIHRlbG5ldGxpYi4KQEAgLTY2MCwxMSArNjY2LDEwIEBACiAgICAgICAgICAgICBwb3J0ID0gaW50KHBvcnRzdHIpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcG9ydCA9IHNvY2tldC5nZXRzZXJ2YnluYW1lKHBvcnRzdHIsICd0Y3AnKQotICAgIHRuID0gVGVsbmV0KCkKLSAgICB0bi5zZXRfZGVidWdsZXZlbChkZWJ1Z2xldmVsKQotICAgIHRuLm9wZW4oaG9zdCwgcG9ydCwgdGltZW91dD0wLjUpCi0gICAgdG4uaW50ZXJhY3QoKQotICAgIHRuLmNsb3NlKCkKKyAgICB3aXRoIFRlbG5ldCgpIGFzIHRuOgorICAgICAgICB0bi5zZXRfZGVidWdsZXZlbChkZWJ1Z2xldmVsKQorICAgICAgICB0bi5vcGVuKGhvc3QsIHBvcnQsIHRpbWVvdXQ9MC41KQorICAgICAgICB0bi5pbnRlcmFjdCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVtcGZpbGUucHkgYi9MaWIvdGVtcGZpbGUucHkKaW5kZXggYWQ2ODdiOS4uNjE0NjIzNSAxMDA2NDQKLS0tIGEvTGliL3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZW1wZmlsZS5weQpAQCAtNzk3LDcgKzc5Nyw2IEBACiAgICAgICAgIF9zaHV0aWwucm10cmVlKG5hbWUpCiAgICAgICAgIF93YXJuaW5ncy53YXJuKHdhcm5fbWVzc2FnZSwgUmVzb3VyY2VXYXJuaW5nKQogCi0KICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJldHVybiAiPHt9IHshcn0+Ii5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX19tYWluX18ucHkgYi9MaWIvdGVzdC9fX21haW5fXy5weQppbmRleCBkNWZiZTE1Li4xOWE2YjJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9fX21haW5fXy5weQorKysgYi9MaWIvdGVzdC9fX21haW5fXy5weQpAQCAtMSwzICsxLDIgQEAKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotcmVncnRlc3QubWFpbl9pbl90ZW1wX2N3ZCgpCitmcm9tIHRlc3QubGlicmVncnRlc3QgaW1wb3J0IG1haW4KK21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5IGIvTGliL3Rlc3QvX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IDJiZWNmYWEuLmMwMDg0NmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L190ZXN0X211bHRpcHJvY2Vzc2luZy5weQorKysgYi9MaWIvdGVzdC9fdGVzdF9tdWx0aXByb2Nlc3NpbmcucHkKQEAgLTE2MjgsMTMgKzE2MjgsMzMgQEAKICAgICAgICAgZCA9IFthLCBiXQogICAgICAgICBlID0gc2VsZi5saXN0KGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBlWzpdLAorICAgICAgICAgICAgW2VsZW1lbnRbOl0gZm9yIGVsZW1lbnQgaW4gZV0sCiAgICAgICAgICAgICBbWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldLCBbMCwgMSwgMiwgMywgNCwgMCwgMSwgMiwgMywgNF1dCiAgICAgICAgICAgICApCiAKICAgICAgICAgZiA9IHNlbGYubGlzdChbYV0pCiAgICAgICAgIGEuYXBwZW5kKCdoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZls6XSwgW1swLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAnaGVsbG8nXV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZlswXVs6XSwgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksICdoZWxsbyddKQorCisgICAgZGVmIHRlc3RfbGlzdF9wcm94eV9pbl9saXN0KHNlbGYpOgorICAgICAgICBhID0gc2VsZi5saXN0KFtzZWxmLmxpc3QocmFuZ2UoMykpIGZvciBfaSBpbiByYW5nZSgzKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2lubmVyWzpdIGZvciBpbm5lciBpbiBhXSwgW1swLCAxLCAyXV0gKiAzKQorCisgICAgICAgIGFbMF1bLTFdID0gNTUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzBdWzpdLCBbMCwgMSwgNTVdKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVtpXVs6XSwgWzAsIDEsIDJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYVsxXS5wb3AoKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYVsxXSksIDIpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDMsIDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYVtpXSksIDMpCisKKyAgICAgICAgZGVsIGEKKworICAgICAgICBiID0gc2VsZi5saXN0KCkKKyAgICAgICAgYi5hcHBlbmQoYikKKyAgICAgICAgZGVsIGIKIAogICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLmRpY3QoKQpAQCAtMTY0Niw2ICsxNjY2LDUyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGQudmFsdWVzKCkpLCBbY2hyKGkpIGZvciBpIGluIGluZGljZXNdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChkLml0ZW1zKCkpLCBbKGksIGNocihpKSkgZm9yIGkgaW4gaW5kaWNlc10pCiAKKyAgICBkZWYgdGVzdF9kaWN0X3Byb3h5X25lc3RlZChzZWxmKToKKyAgICAgICAgcGV0cyA9IHNlbGYuZGljdChmZXJyZXRzPTIsIGhhbXN0ZXJzPTQpCisgICAgICAgIHN1cHBsaWVzID0gc2VsZi5kaWN0KHdhdGVyPTEwLCBmZWVkPTMpCisgICAgICAgIGQgPSBzZWxmLmRpY3QocGV0cz1wZXRzLCBzdXBwbGllcz1zdXBwbGllcykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWyd3YXRlciddLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCAxMCkKKworICAgICAgICBkWydzdXBwbGllcyddWydibGFua2V0cyddID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBsaWVzWydibGFua2V0cyddLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3N1cHBsaWVzJ11bJ2JsYW5rZXRzJ10sIDUpCisKKyAgICAgICAgZFsnc3VwcGxpZXMnXVsnd2F0ZXInXSA9IDcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCA3KQorCisgICAgICAgIGRlbCBwZXRzCisgICAgICAgIGRlbCBzdXBwbGllcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ3BldHMnXVsnZmVycmV0cyddLCAyKQorICAgICAgICBkWydzdXBwbGllcyddWydibGFua2V0cyddID0gMTEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWydibGFua2V0cyddLCAxMSkKKworICAgICAgICBwZXRzID0gZFsncGV0cyddCisgICAgICAgIHN1cHBsaWVzID0gZFsnc3VwcGxpZXMnXQorICAgICAgICBzdXBwbGllc1snd2F0ZXInXSA9IDcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydzdXBwbGllcyddWyd3YXRlciddLCA3KQorCisgICAgICAgIGQuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwbGllc1snd2F0ZXInXSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwZXRzWydoYW1zdGVycyddLCA0KQorCisgICAgICAgIGwgPSBzZWxmLmxpc3QoW3BldHMsIHN1cHBsaWVzXSkKKyAgICAgICAgbFswXVsnbWFybW90cyddID0gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBldHNbJ21hcm1vdHMnXSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzBdWydtYXJtb3RzJ10sIDEpCisKKyAgICAgICAgZGVsIHBldHMKKyAgICAgICAgZGVsIHN1cHBsaWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFswXVsnbWFybW90cyddLCAxKQorCisgICAgICAgIG91dGVyID0gc2VsZi5saXN0KFtbODgsIDk5XSwgbF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShvdXRlclswXSwgbGlzdCkgICMgTm90IGEgTGlzdFByb3h5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0ZXJbLTFdWy0xXVsnZmVlZCddLCAzKQorCiAgICAgZGVmIHRlc3RfbmFtZXNwYWNlKHNlbGYpOgogICAgICAgICBuID0gc2VsZi5OYW1lc3BhY2UoKQogICAgICAgICBuLm5hbWUgPSAnQm9iJwpAQCAtMTY2OCw2ICsxNzM0LDEwIEBACiBkZWYgbXVsKHgsIHkpOgogICAgIHJldHVybiB4KnkKIAorZGVmIHJhaXNlX2xhcmdlX3ZhbHVlcnJvcih3YWl0KToKKyAgICB0aW1lLnNsZWVwKHdhaXQpCisgICAgcmFpc2UgVmFsdWVFcnJvcigieCIgKiAxMDI0KioyKQorCiBjbGFzcyBTYXlXaGVuRXJyb3IoVmFsdWVFcnJvcik6IHBhc3MKIAogZGVmIGV4Y2VwdGlvbl90aHJvd2luZ19nZW5lcmF0b3IodG90YWwsIHdoZW4pOgpAQCAtMTkxMCw2ICsxOTgwLDI2IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CiAgICAgICAgICAgICAgICAgcC5hcHBseShzZWxmLl90ZXN0X3dyYXBwZWRfZXhjZXB0aW9uKQogCisgICAgZGVmIHRlc3RfbWFwX25vX2ZhaWxmYXN0KHNlbGYpOgorICAgICAgICAjIElzc3VlICMyMzk5MjogdGhlIGZhaWwtZmFzdCBiZWhhdmlvdXIgd2hlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkCisgICAgICAgICMgZHVyaW5nIG1hcCgpIHdvdWxkIG1ha2UgUG9vbC5qb2luKCkgZGVhZGxvY2ssIGJlY2F1c2UgYSB3b3JrZXIKKyAgICAgICAgIyBwcm9jZXNzIHdvdWxkIGZpbGwgdGhlIHJlc3VsdCBxdWV1ZSAoYWZ0ZXIgdGhlIHJlc3VsdCBoYW5kbGVyIHRocmVhZAorICAgICAgICAjIHRlcm1pbmF0ZWQsIGhlbmNlIG5vdCBkcmFpbmluZyBpdCBhbnltb3JlKS4KKworICAgICAgICB0X3N0YXJ0ID0gdGltZS50aW1lKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLlBvb2woMikgYXMgcDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHAubWFwKHJhaXNlX2xhcmdlX3ZhbHVlcnJvciwgWzAsIDFdKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQorICAgICAgICAgICAgICAgICAgICBwLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgcC5qb2luKCkKKworICAgICAgICAjIGNoZWNrIHRoYXQgd2UgaW5kZWVkIHdhaXRlZCBmb3IgYWxsIGpvYnMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHRpbWUudGltZSgpIC0gdF9zdGFydCwgMC45KQorCiAKIGRlZiByYWlzaW5nKCk6CiAgICAgcmFpc2UgS2V5RXJyb3IoImtleSIpCkBAIC0zNzY3LDcgKzM4NTcsNyBAQAogICAgICAgICBwLnN0ZGVyci5jbG9zZSgpCiAgICAgICAgIGV4cGVjdGVkID0gJ3NlbWFwaG9yZV90cmFja2VyOiBUaGVyZSBhcHBlYXIgdG8gYmUgMiBsZWFrZWQgc2VtYXBob3JlcycKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsIGV4cGVjdGVkKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyciwgJ3NlbWFwaG9yZV90cmFja2VyOiAlcjogXFtFcnJubycgJSBuYW1lMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIsIHInc2VtYXBob3JlX3RyYWNrZXI6ICVyOiBcW0Vycm5vJyAlIG5hbWUxKQogCiAjCiAjIE1peGlucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYW5uX21vZHVsZS5weSBiL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2Yjg3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUucHkKQEAgLTAsMCArMSw1MyBAQAorCisKKyIiIgorVGhlIG1vZHVsZSBmb3IgdGVzdGluZyB2YXJpYWJsZSBhbm5vdGF0aW9ucy4KK0VtcHR5IGxpbmVzIGFib3ZlIGFyZSBmb3IgZ29vZCByZWFzb24gKHRlc3RpbmcgZm9yIGNvcnJlY3QgbGluZSBudW1iZXJzKQorIiIiCisKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCitfX2Fubm90YXRpb25zX19bMV0gPSAyCisKK2NsYXNzIEM6CisKKyAgICB4ID0gNTsgeTogT3B0aW9uYWxbJ0MnXSA9IE5vbmUKKworZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCit4OiBpbnQgPSA1OyB5OiBzdHIgPSB4OyBmOiBUdXBsZVtpbnQsIGludF0KKworY2xhc3MgTSh0eXBlKToKKworICAgIF9fYW5ub3RhdGlvbnNfX1snMTIzJ10gPSAxMjMKKyAgICBvOiB0eXBlID0gb2JqZWN0CisKKyhwYXJzKTogYm9vbCA9IFRydWUKKworY2xhc3MgRChDKToKKyAgICBqOiBzdHIgPSAnaGknOyBrOiBzdHI9ICdieWUnCisKK2Zyb20gdHlwZXMgaW1wb3J0IG5ld19jbGFzcworaF9jbGFzcyA9IG5ld19jbGFzcygnSCcsIChDLCkpCitqX2NsYXNzID0gbmV3X2NsYXNzKCdKJykKKworY2xhc3MgRigpOgorICAgIHo6IGludCA9IDUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgIHBhc3MKKworY2xhc3MgWShGKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEYsIHNlbGYpLl9faW5pdF9fKDEyMykKKworY2xhc3MgTWV0YSh0eXBlKToKKyAgICBkZWYgX19uZXdfXyhtZXRhLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtZXRhLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKQorCitjbGFzcyBTKG1ldGFjbGFzcyA9IE1ldGEpOgorICAgIHg6IHN0ciA9ICdzb21ldGhpbmcnCisgICAgeTogc3RyID0gJ3NvbWV0aGluZyBlbHNlJworCitkZWYgZm9vKHg6IGludCA9IDEwKToKKyAgICBkZWYgYmFyKHk6IExpc3Rbc3RyXSk6CisgICAgICAgIHg6IHN0ciA9ICd5ZXMnCisgICAgYmFyKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZTIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzZjZjViMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUyLnB5CkBAIC0wLDAgKzEsMzYgQEAKKyIiIgorU29tZSBjb3JyZWN0IHN5bnRheCBmb3IgdmFyaWFibGUgYW5ub3RhdGlvbiBoZXJlLgorTW9yZSBleGFtcGxlcyBhcmUgaW4gdGVzdF9ncmFtbWFyIGFuZCB0ZXN0X3BhcnNlci4KKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQgbm9fdHlwZV9jaGVjaywgQ2xhc3NWYXIKKworaTogaW50ID0gMQorajogaW50Cit4OiBmbG9hdCA9IGkvMTAKKworZGVmIGYoKToKKyAgICBjbGFzcyBDOiAuLi4KKyAgICByZXR1cm4gQygpCisKK2YoKS5uZXdfYXR0cjogb2JqZWN0ID0gb2JqZWN0KCkKKworY2xhc3MgQzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZWxmLnggPSB4CisKK2MgPSBDKDUpCitjLm5ld19hdHRyOiBpbnQgPSAxMAorCitfX2Fubm90YXRpb25zX18gPSB7fQorCisKK0Bub190eXBlX2NoZWNrCitjbGFzcyBOVEM6CisgICAgZGVmIG1ldGgoc2VsZiwgcGFyYW06IGNvbXBsZXgpIC0+IE5vbmU6CisgICAgICAgIC4uLgorCitjbGFzcyBDVjoKKyAgICB2YXI6IENsYXNzVmFyWydDViddCisKK0NWLnZhciA9IENWKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5IGIvTGliL3Rlc3QvYW5uX21vZHVsZTMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjZDdiZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2Fubl9tb2R1bGUzLnB5CkBAIC0wLDAgKzEsMTggQEAKKyIiIgorQ29ycmVjdCBzeW50YXggZm9yIHZhcmlhYmxlIGFubm90YXRpb24gdGhhdCBzaG91bGQgZmFpbCBhdCBydW50aW1lCitpbiBhIGNlcnRhaW4gbWFubmVyLiBNb3JlIGV4YW1wbGVzIGFyZSBpbiB0ZXN0X2dyYW1tYXIgYW5kIHRlc3RfcGFyc2VyLgorIiIiCisKK2RlZiBmX2JhZF9hbm4oKToKKyAgICBfX2Fubm90YXRpb25zX19bMV0gPSAyCisKK2NsYXNzIENfT0s6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHg6IGludCkgLT4gTm9uZToKKyAgICAgICAgc2VsZi54OiBub19zdWNoX25hbWUgPSB4ICAjIFRoaXMgb25lIGlzIE9LIGFzIHByb3Bvc2VkIGJ5IEd1aWRvCisKK2NsYXNzIERfYmFkX2FubjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOgorICAgICAgICBzZmVsLnk6IGludCA9IDAKKworZGVmIGdfYmFkX2FubigpOgorICAgIG5vX3N1Y2hfbmFtZS5hdHRyOiBpbnQgPSAwCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5IGIvTGliL3Rlc3QvYXVkaW90ZXN0cy5weQppbmRleCAwYWUyMjQyLi5kM2U4ZTllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9hdWRpb3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2F1ZGlvdGVzdHMucHkKQEAgLTEsOSArMSw4IEBACiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIFRFU1RGTiwgdW5saW5rCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBhcnJheQogaW1wb3J0IGlvCiBpbXBvcnQgcGlja2xlCi1pbXBvcnQgc3lzCisKIAogY2xhc3MgVW5zZWVrYWJsZUlPKGlvLkZpbGVJTyk6CiAgICAgZGVmIHRlbGwoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hdXRvdGVzdC5weSBiL0xpYi90ZXN0L2F1dG90ZXN0LnB5CmluZGV4IDQxYzIwODguLmZhODVjYzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2F1dG90ZXN0LnB5CisrKyBiL0xpYi90ZXN0L2F1dG90ZXN0LnB5CkBAIC0xLDYgKzEsNSBAQAogIyBUaGlzIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIHJ1bm5pbmcgcmVncnRlc3QucHkgZnJvbSB0aGUgY21kbGluZS4KICMgSXQgY2FuIGJlIGVzcGVjaWFsbHkgaGFuZHkgaWYgeW91J3JlIGluIGFuIGludGVyYWN0aXZlIHNoZWxsLCBlLmcuLAogIyBmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0LgotCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci1yZWdydGVzdC5tYWluKCkKK2Zyb20gdGVzdC5saWJyZWdydGVzdCBpbXBvcnQgbWFpbgorbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI4NWUyOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMxLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmMyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjg1ZTI5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oYT1hd2FpdCBzb21ldGhpbmcoKSk6Ci0gICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZTFiYzUuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jMy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotYXN5bmMgZGVmIGZvbygpOgotICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDMzYjI4Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICBhd2FpdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weSBiL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMTlhZjYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNS5weQorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotZGVmIGZvbygpOgotICAgIGF3YWl0IHNvbWV0aGluZygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jNi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwYTIzZC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM2LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgeWllbGQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkgYi9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM3LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWU0YmY5Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2JhZHN5bnRheF9hc3luYzcucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWFzeW5jIGRlZiBmb28oKToKLSAgICB5aWVsZCBmcm9tIFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5IGIvTGliL3Rlc3QvYmFkc3ludGF4X2FzeW5jOC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2M2MzZmOS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9iYWRzeW50YXhfYXN5bmM4LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1hc3luYyBkZWYgZm9vKCk6Ci0gICAgYXdhaXQgYXdhaXQgZnV0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvMGU0MDE1YjkuMCBiL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNmQyNTliLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NhcGF0aC8wZTQwMTViOS4wCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDbFRDQ0FmNmdBd0lCQWdJSkFLR1U5NXdLUjhwVE1BMEdDU3FHU0liM0RRRUJCUVVBTUhBeEN6QUpCZ05WCi1CQVlUQWxoWk1SY3dGUVlEVlFRSERBNURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2d3YVVIbDBhRzl1Ci1JRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4SXpBaEJnTlZCQU1NR25ObGJHWXRjMmxuYm1Wa0xuQjVkR2h2Ci1iblJsYzNRdWJtVjBNQjRYRFRFME1URXdNakU0TURreU9Wb1hEVEkwTVRBek1ERTRNRGt5T1Zvd2NERUxNQWtHCi1BMVVFQmhNQ1dGa3hGekFWQmdOVkJBY01Ea05oYzNSc1pTQkJiblJvY21GNE1TTXdJUVlEVlFRS0RCcFFlWFJvCi1iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmpFak1DRUdBMVVFQXd3YWMyVnNaaTF6YVdkdVpXUXVjSGwwCi1hRzl1ZEdWemRDNXVaWFF3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU5EWFFYVzl0anlaCi1YdDBJdjJ0TEwxK2ppbnI0d0dnMzZpb0xETEZrTWYrMlkxR0wwdjBCbktZRzROMU9LbEFVMTVMWEdlR2VyOHZtCi1Tdi95SXZtZHJFTHZoQWJibzN3NGE5VE1ZUUE0WGtJVkxkdnUzbXZOT0FldCs4UE1KeG4yNmRiRGhHODA5QUx2Ci1FSFk1N2xRc0JTM0c1OVJaeUJQVnFBcW1JbVdOSm5WekFnTUJBQUdqTnpBMU1DVUdBMVVkRVFRZU1CeUNHbk5sCi1iR1l0YzJsbmJtVmtMbkI1ZEdodmJuUmxjM1F1Ym1WME1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOCi1BUUVGQlFBRGdZRUFJdXpBaGdNb3VKcE5kZjNVUkNISWluZXlvU3Q2V0svOStleVVjamxLT3JEb1hOWmFENzJoCi1UWE1lS1lvV3ZKeVZjU0xLTDhja1B0RG9iZ1AyT1R0MFVreUFhajBuK1pIYXFxMWxIMnlWZkdVQTFJTEp2NTE1Ci1DOEJxYnZWWnVxbTNpN3lnbXczYnFFL2xZTWdPcll0WFhucU9yejZudnNFNlljOVY5ckZmbE9NPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAgYi9MaWIvdGVzdC9jYXBhdGgvYjE5MzAyMTguMApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzMzNDljCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvY2FwYXRoL2IxOTMwMjE4LjAKQEAgLTAsMCArMSwyMSBAQAorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlEYlRDQ0FsV2dBd0lCQWdJSkFMQ1NaTEh5MmlIUU1BMEdDU3FHU0liM0RRRUJCUVVBTUUweEN6QUpCZ05WCitCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhNekF4TURReE9UUTNNRGRhRncweU16QXhNREl4CitPVFEzTURkYU1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnCitSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakNDQVNJd0RRWUpLb1pJCitodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9mZTZlTU1ud0Myb2Ywclc1YlNiOHpndm9hNUlGN3NBM3BWCitxK3FrNmZsSmhkSm0xZTNIZXVwV2ppMlA1MExpWWlpcG45WWJqdXUxdEp5ZkZLdmY1cFNMZGgwK2JTUmg3UXkvCitBSXBoRE45Y3lEWnpGZ0ROUjdwdHBLUjBpSU1qQ2huOENhYzhTa3ZUNXgwdDVPcE1WQ0h6SnR1Sk54alVBcnRBCitNbCtrL3kwYzk5Uzc3STdQWElLczVud0liRWlGWVFkL0plQmM0THcwWCtDNUJFZDF5RWNMamJ6V3lHaGZNNE5pCiswaUJFTmJHdGdScUt6Yncxc0Z5TFI5WVk2WndZbDh3QlBDbk02QjdrNU1HNDN1ZkNFUmlIV3BNMDJLWWw5eFJ4Cis2K1Fob3RJUExpN1VZZ0ExMDlidlhHQkxUS2tVNHQwVldFWTNNeWEzNXk1ZDdVTGt4VTBDQXdFQUFhTlFNRTR3CitIUVlEVlIwT0JCWUVGTHpkWXRsMjJodlNWR3ZQNEdhYkhoNTdWZ3dMTUI4R0ExVWRJd1FZTUJhQUZMemRZdGwyCisyaHZTVkd2UDRHYWJIaDU3Vmd3TE1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCCitBSDBLOWN1TjAxMjltWTc0S3crNjY4TFpwaWRQTG5zdkRtVFlIRFZRVHU3OGtMbU5iYWpGeGdhd3IvTXR2enU0CitRZ2ZkR0gxdGxWUlhoUmhnUnkvcmVCdjU2QmY5V2cySEZ5aXNUR3JtdkNuMDlGVndLVUxlaGVxcmJDTUdaREIxCitBbzVUdkY0Qk16Zk1IczI0cFAzSzVGOWxPNE1jaHZGVkFxQTZqOXVSdDBBVXRPZU4wdTV6dXVQbE5DMjhsRzlPCitKQWIzWDRzT3A0NXIzbDUxOURLYVVMRkVNNXJRQmVKNGd2L2Iyb3BqNjZuZDBiK2dZYTNqbm9va1hXSU81MHlSCitmKy9mTkRZN0wxMzFoTEl2eEcyVGxocHZNQ2p4MmhLYVpMUkFNeDI5M2l0VHFPcSsxcnhPbHZWRSt6SVlydFVmCis5bW12dGs1N0hWanNPNmxUbzE1WXlKND0KKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NhcGF0aC9jZTdiODY0My4wIGIvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2ZDI1OWIuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvY2FwYXRoL2NlN2I4NjQzLjAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUNsVENDQWY2Z0F3SUJBZ0lKQUtHVTk1d0tSOHBUTUEwR0NTcUdTSWIzRFFFQkJRVUFNSEF4Q3pBSkJnTlYKLUJBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXUKLUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhJekFoQmdOVkJBTU1Hbk5sYkdZdGMybG5ibVZrTG5CNWRHaHYKLWJuUmxjM1F1Ym1WME1CNFhEVEUwTVRFd01qRTRNRGt5T1ZvWERUSTBNVEF6TURFNE1Ea3lPVm93Y0RFTE1Ba0cKLUExVUVCaE1DV0ZreEZ6QVZCZ05WQkFjTURrTmhjM1JzWlNCQmJuUm9jbUY0TVNNd0lRWURWUVFLREJwUWVYUm8KLWIyNGdVMjltZEhkaGNtVWdSbTkxYm1SaGRHbHZiakVqTUNFR0ExVUVBd3dhYzJWc1ppMXphV2R1WldRdWNIbDAKLWFHOXVkR1Z6ZEM1dVpYUXdnWjh3RFFZSktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTkRYUVhXOXRqeVoKLVh0MEl2MnRMTDEramlucjR3R2czNmlvTERMRmtNZisyWTFHTDB2MEJuS1lHNE4xT0tsQVUxNUxYR2VHZXI4dm0KLVN2L3lJdm1kckVMdmhBYmJvM3c0YTlUTVlRQTRYa0lWTGR2dTNtdk5PQWV0KzhQTUp4bjI2ZGJEaEc4MDlBTHYKLUVIWTU3bFFzQlMzRzU5Ulp5QlBWcUFxbUltV05KblZ6QWdNQkFBR2pOekExTUNVR0ExVWRFUVFlTUJ5Q0duTmwKLWJHWXRjMmxuYm1Wa0xuQjVkR2h2Ym5SbGMzUXVibVYwTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y04KLUFRRUZCUUFEZ1lFQUl1ekFoZ01vdUpwTmRmM1VSQ0hJaW5leW9TdDZXSy85K2V5VWNqbEtPckRvWE5aYUQ3MmgKLVRYTWVLWW9Xdkp5VmNTTEtMOGNrUHREb2JnUDJPVHQwVWt5QWFqMG4rWkhhcXExbEgyeVZmR1VBMUlMSnY1MTUKLUM4QnFidlZadXFtM2k3eWdtdzNicUUvbFlNZ09yWXRYWG5xT3J6Nm52c0U2WWM5VjlyRmZsT009Ci0tLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMCBiL0xpYi90ZXN0L2NhcGF0aC9jZWZmMTcxMC4wCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3MzM0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9jYXBhdGgvY2VmZjE3MTAuMApAQCAtMCwwICsxLDIxIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSURiVENDQWxXZ0F3SUJBZ0lKQUxDU1pMSHkyaUhRTUEwR0NTcUdTSWIzRFFFQkJRVUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE16QXhNRFF4T1RRM01EZGFGdzB5TXpBeE1ESXgKK09UUTNNRGRhTUUweEN6QUpCZ05WQkFZVEFsaFpNU1l3SkFZRFZRUUtEQjFRZVhSb2IyNGdVMjltZEhkaGNtVWcKK1JtOTFibVJoZEdsdmJpQkRRVEVXTUJRR0ExVUVBd3dOYjNWeUxXTmhMWE5sY25abGNqQ0NBU0l3RFFZSktvWkkKK2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT2ZlNmVNTW53QzJvZjByVzViU2I4emd2b2E1SUY3c0EzcFYKK3ErcWs2ZmxKaGRKbTFlM0hldXBXamkyUDUwTGlZaWlwbjlZYmp1dTF0SnlmRkt2ZjVwU0xkaDArYlNSaDdReS8KK0FJcGhETjljeURaekZnRE5SN3B0cEtSMGlJTWpDaG44Q2FjOFNrdlQ1eDB0NU9wTVZDSHpKdHVKTnhqVUFydEEKK01sK2sveTBjOTlTNzdJN1BYSUtzNW53SWJFaUZZUWQvSmVCYzRMdzBYK0M1QkVkMXlFY0xqYnpXeUdoZk00TmkKKzBpQkVOYkd0Z1JxS3pidzFzRnlMUjlZWTZad1lsOHdCUENuTTZCN2s1TUc0M3VmQ0VSaUhXcE0wMktZbDl4UngKKzYrUWhvdElQTGk3VVlnQTEwOWJ2WEdCTFRLa1U0dDBWV0VZM015YTM1eTVkN1VMa3hVMENBd0VBQWFOUU1FNHcKK0hRWURWUjBPQkJZRUZMemRZdGwyMmh2U1ZHdlA0R2FiSGg1N1Znd0xNQjhHQTFVZEl3UVlNQmFBRkx6ZFl0bDIKKzJodlNWR3ZQNEdhYkhoNTdWZ3dMTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUIKK0FIMEs5Y3VOMDEyOW1ZNzRLdys2NjhMWnBpZFBMbnN2RG1UWUhEVlFUdTc4a0xtTmJhakZ4Z2F3ci9NdHZ6dTQKK1FnZmRHSDF0bFZSWGhSaGdSeS9yZUJ2NTZCZjlXZzJIRnlpc1RHcm12Q24wOUZWd0tVTGVoZXFyYkNNR1pEQjEKK0FvNVR2RjRCTXpmTUhzMjRwUDNLNUY5bE80TWNodkZWQXFBNmo5dVJ0MEFVdE9lTjB1NXp1dVBsTkMyOGxHOU8KK0pBYjNYNHNPcDQ1cjNsNTE5REthVUxGRU01clFCZUo0Z3YvYjJvcGo2Nm5kMGIrZ1lhM2pub29rWFdJTzUweVIKK2YrL2ZORFk3TDEzMWhMSXZ4RzJUbGhwdk1DangyaEthWkxSQU14MjkzaXRUcU9xKzFyeE9sdlZFK3pJWXJ0VWYKKzltbXZ0azU3SFZqc082bFRvMTVZeUo0PQorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dCBiL0xpYi90ZXN0L2NtYXRoX3Rlc3RjYXNlcy50eHQKaW5kZXggOWIwODY1My4uZGQ3ZTQ1OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvY21hdGhfdGVzdGNhc2VzLnR4dAorKysgYi9MaWIvdGVzdC9jbWF0aF90ZXN0Y2FzZXMudHh0CkBAIC01Myw2ICs1MywxMiBAQAogLS0gTVBGUiBob21lcGFnZSBhdCBodHRwOi8vd3d3Lm1wZnIub3JnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZQogLS0gTVBGUiBwcm9qZWN0LgogCistLSBBIG1pbm9yaXR5IG9mIHRoZSB0ZXN0IGNhc2VzIHdlcmUgZ2VuZXJhdGVkIHdpdGggdGhlIGhlbHAgb2YKKy0tIG1wbWF0aCAwLjE5IGF0IDEwMCBiaXQgYWNjdXJhY3kgKGh0dHA6Ly9tcG1hdGgub3JnKSB0byBpbXByb3ZlCistLSBjb3ZlcmFnZSBvZiByZWFsIGZ1bmN0aW9ucyB3aXRoIHJlYWwtdmFsdWVkIGFyZ3VtZW50cy4gVGhlc2UgYXJlCistLSB1c2VkIGluIHRlc3QudGVzdF9tYXRoLk1hdGhUZXN0cy50ZXN0X3Rlc3RmaWxlLCBhcyB3ZWxsIGFzIGluCistLSB0ZXN0X2NtYXRoLgorCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSBhY29zOiBJbnZlcnNlIGNvc2luZSAtLQpAQCAtODQ4LDYgKzg1NCwxOCBAQAogYXRhbjAzMDMgYXRhbiAtMWUtMTY1IDEuMCAtPiAtMC43ODUzOTgxNjMzOTc0NDgyOCAxOTAuMzA5ODQzNzYyMjg4NzUKIGF0YW4wMzA0IGF0YW4gLTkuOTk5ODg4NjcxODI2ODMwMWUtMzIxIC0xLjAgLT4gLTAuNzg1Mzk4MTYzMzk3NDQ4MjggLTM2OC43NjAxOTQwMzU3NjY5MgogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCithdGFuMDQwMCBhdGFuIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAxLjU3MDc5NjMyNjc5NDg5NjYxOTIgMC4wCithdGFuMDQwMSBhdGFuIC0xLjc5NzY5MzEzNDg2MjMxNTdlKzMwOCAwLjAgLT4gLTEuNTcwNzk2MzI2Nzk0ODk2NjE5MiAwLjAKK2F0YW4wNDAyIGF0YW4gMWUtMTcgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDcxNWUtMTcgMC4wCithdGFuMDQwMyBhdGFuIC0xZS0xNyAwLjAgLT4gLTEuMDAwMDAwMDAwMDAwMDAwMDcxNWUtMTcgMC4wCithdGFuMDQwNCBhdGFuIDAuMDAwMSAwLjAgLT4gMC4wMDAwOTk5OTk5OTk2NjY2NjY2NzM0NTkgMC4wCithdGFuMDQwNSBhdGFuIC0wLjAwMDEgMC4wIC0+IC0wLjAwMDA5OTk5OTk5OTY2NjY2NjY3MzQ1OSAwLjAKK2F0YW4wNDA2IGF0YW4gMC45OTk5OTk5OTk5OTk5OTkgMC4wIC0+IDAuNzg1Mzk4MTYzMzk3NDQ3ODEwMDIgMC4wCithdGFuMDQwNyBhdGFuIDEuMDAwMDAwMDAwMDAwMDAxIDAuMCAtPiAwLjc4NTM5ODE2MzM5NzQ0ODg2NDczIDAuMAorYXRhbjA0MDggYXRhbiAxNC4xMDE0MTk5NDcxNzE3MTkgMC4wIC0+IDEuNDk5OTk5OTk5OTk5OTk5OTk2OSAwLjAKK2F0YW4wNDA5IGF0YW4gMTI1NS43NjU1OTE1MDA3ODk3IDAuMCAtPiAxLjU3MDAwMDAwMDAwMDAwMDA2MjIgMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiBhdGFuMTAwMCBhdGFuIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiBhdGFuMTAwMSBhdGFuIG5hbiAwLjAgLT4gbmFuIDAuMApAQCAtMTUxNCw2ICsxNTMyLDExIEBACiBzcXJ0MDE0MCBzcXJ0IDEuNjk5OTk5OTk5OTk5OTk5OWUrMzA4IC0xLjY5OTk5OTk5OTk5OTk5OTllKzMwOCAtPiAxLjQzMjUwODgyMzAxNTQ1NzNlKzE1NCAtNS45MzM2NDU4MjcxMjEyMjA3ZSsxNTMKIHNxcnQwMTQxIHNxcnQgLTEuNzk3ZSszMDggLTkuOTk5OTk5OTk5OTk5OTk5OWUrMzA2IC0+IDMuNzI4NDQ3NjQzMjA1NzMwN2UrMTUyIC0xLjM0MTA0MDY4OTk4MDI5MDFlKzE1NAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzcXJ0MDE1MCBzcXJ0IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IDAuMCAtPiAxLjM0MDc4MDc5Mjk5NDI1OTYzNTVlKzE1NCAwLjAKK3NxcnQwMTUxIHNxcnQgMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDggMC4wIC0+IDEuNDkxNjY4MTQ2MjQwMDQxMzQ4N2UtMTU0IDAuMAorc3FydDAxNTIgc3FydCA1ZS0zMjQgMC4wIC0+IDIuMjIyNzU4NzQ5NDg1MDc3NDgzNGUtMTYyIDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc3FydDEwMDAgc3FydCAwLjAgMC4wIC0+IDAuMCAwLjAKIHNxcnQxMDAxIHNxcnQgLTAuMCAwLjAgLT4gMC4wIDAuMApAQCAtMTYxNiw2ICsxNjM5LDIwIEBACiBleHAwMDUzIGV4cCA3MTAuMCAxLjYgLT4gLTYuNTIzMTU3OTk5NTUwMTM3MmUrMzA2IGluZiAgIG92ZXJmbG93CiBleHAwMDU0IGV4cCA3MTAuMCAyLjggLT4gLWluZiA3LjQ4MzYxNzc0MTc0NDg1MjhlKzMwNyAgIG92ZXJmbG93CiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK2V4cDAwNzAgZXhwIDFlLTA4IDAuMCAtPiAxLjAwMDAwMDAxMDAwMDAwMDA1IDAuMAorZXhwMDA3MSBleHAgMC4wMDAzIDAuMCAtPiAxLjAwMDMwMDA0NTAwNDUwMDMzNzUgMC4wCitleHAwMDcyIGV4cCAwLjIgMC4wIC0+IDEuMjIxNDAyNzU4MTYwMTY5ODQ3NSAwLjAKK2V4cDAwNzMgZXhwIDEuMCAwLjAgLT4gMi43MTgyODE4Mjg0NTkwNDUyMzU0IDAuMAorZXhwMDA3NCBleHAgLTFlLTA4IDAuMCAtPiAwLjk5OTk5OTk5MDAwMDAwMDA1IDAuMAorZXhwMDA3NSBleHAgLTAuMDAwMyAwLjAgLT4gMC45OTk3MDAwNDQ5OTU1MDAzMzc1MSAwLjAKK2V4cDAwNzYgZXhwIC0xLjAgMC4wIC0+IDAuMzY3ODc5NDQxMTcxNDQyMzIxNiAwLjAKK2V4cDAwNzcgZXhwIDIuMjIwNDQ2MDQ5MjUwMzEzZS0xNiAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAyMjIgMC4wCitleHAwMDc4IGV4cCAtMS4xMTAyMjMwMjQ2MjUxNTY1ZS0xNiAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk4ODg5OCAwLjAKK2V4cDAwNzkgZXhwIDIuMzAyNTg1MDkyOTk0MDQ2IDAuMCAtPiAxMC4wMDAwMDAwMDAwMDAwMDIxNzEgMC4wCitleHAwMDgwIGV4cCAtMi4zMDI1ODUwOTI5OTQwNDYgMC4wIC0+IDAuMDk5OTk5OTk5OTk5OTk5OTc4MjkyIDAuMAorZXhwMDA4MSBleHAgNzA5Ljc4MjcgMC4wIC0+IDEuNzk3NjY5OTU2NjYzODAxNDY1NGUrMzA4IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogZXhwMTAwMCBleHAgMC4wIDAuMCAtPiAxLjAgMC4wCiBleHAxMDAxIGV4cCAtMC4wIDAuMCAtPiAxLjAgMC4wCkBAIC0xNzA4LDYgKzE3NDUsMjMgQEAKIGNvc2gwMDMwIGNvc2ggNzEwLjUgMi4zNTE5OTk5OTk5OTk5OTk5IC0+IC0xLjI5Njc0NjUyMzkzNTU5OThlKzMwOCAxLjMwNzY3MDc5MDg4NTczMzNlKzMwOAogY29zaDAwMzEgY29zaCAtNzEwLjUgMC42OTk5OTk5OTk5OTk5OTk5NiAtPiAxLjQwODU0NjYzODEzOTI0OTllKzMwOCAtMS4xODY0MDI0NjY2NDUwMjM5ZSszMDgKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorY29zaDAwNTAgY29zaCAxZS0xNTAgMC4wIC0+IDEuMCAwLjAKK2Nvc2gwMDUxIGNvc2ggMWUtMTggMC4wIC0+IDEuMCAwLjAKK2Nvc2gwMDUyIGNvc2ggMWUtMDkgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDAwNSAwLjAKK2Nvc2gwMDUzIGNvc2ggMC4wMDAzIDAuMCAtPiAxLjAwMDAwMDA0NTAwMDAwMDMzNzUgMC4wCitjb3NoMDA1NCBjb3NoIDAuMiAwLjAgLT4gMS4wMjAwNjY3NTU2MTkwNzU4NDg1IDAuMAorY29zaDAwNTUgY29zaCAxLjAgMC4wIC0+IDEuNTQzMDgwNjM0ODE1MjQzNzc4NSAwLjAKK2Nvc2gwMDU2IGNvc2ggLTFlLTE4IDAuMCAtPiAxLjAgLTAuMAorY29zaDAwNTcgY29zaCAtMC4wMDAzIDAuMCAtPiAxLjAwMDAwMDA0NTAwMDAwMDMzNzUgLTAuMAorY29zaDAwNTggY29zaCAtMS4wIDAuMCAtPiAxLjU0MzA4MDYzNDgxNTI0Mzc3ODUgLTAuMAorY29zaDAwNTkgY29zaCAxLjMxNjk1Nzg5NjkyNDgxNjggMC4wIC0+IDIuMDAwMDAwMDAwMDAwMDAwMTUwNCAwLjAKK2Nvc2gwMDYwIGNvc2ggLTEuMzE2OTU3ODk2OTI0ODE2OCAwLjAgLT4gMi4wMDAwMDAwMDAwMDAwMDAxNTA0IC0wLjAKK2Nvc2gwMDYxIGNvc2ggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAxNjc3NzIxNi4wMDAwMDAwMjE5MzggMC4wCitjb3NoMDA2MiBjb3NoIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gNjcxMDg4NjQuMDAwMDAwMDQzNjYyIDAuMAorY29zaDAwNjMgY29zaCA3MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCitjb3NoMDA2NCBjb3NoIC03MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgLTAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogY29zaDEwMDAgY29zaCAwLjAgMC4wIC0+IDEuMCAwLjAKIGNvc2gxMDAxIGNvc2ggMC4wIGluZiAtPiBuYW4gMC4wICAgICAgICBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTE4MDAsNiArMTg1NCwyNCBAQAogc2luaDAwMzAgc2luaCA3MTAuNSAtMi4zOTk5OTk5OTk5OTk5OTk5IC0+IC0xLjM1Nzk5NzA1NjQ4ODU5MTllKzMwOCAtMS4yNDM5NDQ3MDkwNzc5OGUrMzA4CiBzaW5oMDAzMSBzaW5oIC03MTAuNSAwLjgwMDAwMDAwMDAwMDAwMDA0IC0+IC0xLjI4MzA2NzE2MDE3MzUxNjRlKzMwOCAxLjMyMTA5NTQxOTM5OTc2NzhlKzMwOAogCistLSBBZGRpdGlvbmFsIHJlYWwgdmFsdWVzIChtcG1hdGgpCitzaW5oMDA1MCBzaW5oIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAorc2luaDAwNTEgc2luaCA1ZS0xNyAwLjAgLT4gNC45OTk5OTk5OTk5OTk5OTk4OTU1ZS0xNyAwLjAKK3NpbmgwMDUyIHNpbmggMWUtMTYgMC4wIC0+IDkuOTk5OTk5OTk5OTk5OTk5NzkxZS0xNyAwLjAKK3NpbmgwMDUzIHNpbmggMy43ZS0wOCAwLjAgLT4gMy43MDAwMDAwMDAwMDAwMDA4ODg1ZS04IDAuMAorc2luaDAwNTQgc2luaCAwLjAwMSAwLjAgLT4gMC4wMDEwMDAwMDAxNjY2NjY2NzUwMjA4IDAuMAorc2luaDAwNTUgc2luaCAwLjIgMC4wIC0+IDAuMjAxMzM2MDAyNTQxMDkzOTk4OTUgMC4wCitzaW5oMDA1NiBzaW5oIDEuMCAwLjAgLT4gMS4xNzUyMDExOTM2NDM4MDE0NTY5IDAuMAorc2luaDAwNTcgc2luaCAtMy43ZS0wOCAwLjAgLT4gLTMuNzAwMDAwMDAwMDAwMDAwODg4NWUtOCAwLjAKK3NpbmgwMDU4IHNpbmggLTAuMDAxIDAuMCAtPiAtMC4wMDEwMDAwMDAxNjY2NjY2NzUwMjA4IDAuMAorc2luaDAwNTkgc2luaCAtMS4wIDAuMCAtPiAtMS4xNzUyMDExOTM2NDM4MDE0NTY5IDAuMAorc2luaDAwNjAgc2luaCAxLjQ0MzYzNTQ3NTE3ODgxMDMgMC4wIC0+IDEuOTk5OTk5OTk5OTk5OTk5OTA3OCAwLjAKK3NpbmgwMDYxIHNpbmggLTEuNDQzNjM1NDc1MTc4ODEwMyAwLjAgLT4gLTEuOTk5OTk5OTk5OTk5OTk5OTA3OCAwLjAKK3NpbmgwMDYyIHNpbmggMTcuMzI4Njc5NTEzOTk4NjMzIDAuMCAtPiAxNjc3NzIxNS45OTk5OTk5OTIxMzYgMC4wCitzaW5oMDA2MyBzaW5oIDE4LjcxNDk3Mzg3NTExODUyNCAwLjAgLT4gNjcxMDg4NjQuMDAwMDAwMDM2MjExIDAuMAorc2luaDAwNjQgc2luaCA3MDkuNzgyNyAwLjAgLT4gOC45ODgzNDk3ODMzMTkwMDczMjcyZSszMDcgMC4wCitzaW5oMDA2NSBzaW5oIC03MDkuNzgyNyAwLjAgLT4gLTguOTg4MzQ5NzgzMzE5MDA3MzI3MmUrMzA3IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogc2luaDEwMDAgc2luaCAwLjAgMC4wIC0+IDAuMCAwLjAKIHNpbmgxMDAxIHNpbmggMC4wIGluZiAtPiAwLjAgbmFuICAgICAgICBpbnZhbGlkIGlnbm9yZS1yZWFsLXNpZ24KQEAgLTE4OTcsNiArMTk2OSwyNCBAQAogdGFuaDAwMzIgdGFuaCAxMDAwIC0yLjMxOTk5OTk5OTk5OTk5OTggLT4gMS4wIDAuMAogdGFuaDAwMzMgdGFuaCAtMS4wMDAwMDAwMDAwMDAwMDAxZSszMDAgLTkuNjY5OTk5OTk5OTk5OTk5OSAtPiAtMS4wIC0wLjAKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQordGFuaDAwNTAgdGFuaCAxZS0xMDAgMC4wIC0+IDEuMDAwMDAwMDAwMDAwMDAwMDJlLTEwMCAwLjAKK3RhbmgwMDUxIHRhbmggNWUtMTcgMC4wIC0+IDQuOTk5OTk5OTk5OTk5OTk5ODk1NWUtMTcgMC4wCit0YW5oMDA1MiB0YW5oIDFlLTE2IDAuMCAtPiA5Ljk5OTk5OTk5OTk5OTk5OTc5MWUtMTcgMC4wCit0YW5oMDA1MyB0YW5oIDMuN2UtMDggMC4wIC0+IDMuNjk5OTk5OTk5OTk5OTk4MzU1OWUtOCAwLjAKK3RhbmgwMDU0IHRhbmggMC4wMDEgMC4wIC0+IDAuMDAwOTk5OTk5NjY2NjY2ODAwMDIwNzYgMC4wCit0YW5oMDA1NSB0YW5oIDAuMiAwLjAgLT4gMC4xOTczNzUzMjAyMjQ5MDQwMTE0MSAwLjAKK3RhbmgwMDU2IHRhbmggMS4wIDAuMCAtPiAwLjc2MTU5NDE1NTk1NTc2NDg4ODEyIDAuMAordGFuaDAwNTcgdGFuaCAtMy43ZS0wOCAwLjAgLT4gLTMuNjk5OTk5OTk5OTk5OTk4MzU1OWUtOCAwLjAKK3RhbmgwMDU4IHRhbmggLTAuMDAxIDAuMCAtPiAtMC4wMDA5OTk5OTk2NjY2NjY4MDAwMjA3NiAwLjAKK3RhbmgwMDU5IHRhbmggLTEuMCAwLjAgLT4gLTAuNzYxNTk0MTU1OTU1NzY0ODg4MTIgMC4wCit0YW5oMDA2MCB0YW5oIDAuNTQ5MzA2MTQ0MzM0MDU0OSAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwMzQwMiAwLjAKK3RhbmgwMDYxIHRhbmggLTAuNTQ5MzA2MTQ0MzM0MDU0OSAwLjAgLT4gLTAuNTAwMDAwMDAwMDAwMDAwMDM0MDIgMC4wCit0YW5oMDA2MiB0YW5oIDE3LjMyODY3OTUxMzk5ODYzMyAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTgyMjM2NCAwLjAKK3RhbmgwMDYzIHRhbmggMTguNzE0OTczODc1MTE4NTI0IDAuMCAtPiAwLjk5OTk5OTk5OTk5OTk5OTg4ODk4IDAuMAordGFuaDAwNjQgdGFuaCA3MTEgMC4wIC0+IDEuMCAwLjAKK3RhbmgwMDY1IHRhbmggMS43OTdlKzMwOCAwLjAgLT4gMS4wIDAuMAorCiAtLXNwZWNpYWwgdmFsdWVzCiB0YW5oMTAwMCB0YW5oIDAuMCAwLjAgLT4gMC4wIDAuMAogdGFuaDEwMDEgdGFuaCAwLjAgaW5mIC0+IG5hbiBuYW4gICAgICAgIGludmFsaWQKQEAgLTE5ODUsNiArMjA3NSwyMiBAQAogY29zMDAyMiBjb3MgNy45OTE0NTE1NDMzODU4NTE1IDAuNzE2NTk5NjY2MTU1MDE0MzYgLT4gLTAuMTczNzU0Mzk5MDY5MzY1NjYgLTAuNzcyMTcwNDM1MjcyOTQ1ODIKIGNvczAwMjMgY29zIDAuNDUxMjQzNTExNTI1NDAyMjYgMS42OTkyNjkzOTkzODEyMTU4IC0+IDIuNTQzNDc3OTQ4OTcyMjM3IC0xLjE1MjgxOTM2OTQ4NzU0NzcKIAorLS0gQWRkaXRpb25hbCByZWFsIHZhbHVlcyAobXBtYXRoKQorY29zMDA1MCBjb3MgMWUtMTUwIDAuMCAtPiAxLjAgLTAuMAorY29zMDA1MSBjb3MgMWUtMTggMC4wIC0+IDEuMCAtMC4wCitjb3MwMDUyIGNvcyAxZS0wOSAwLjAgLT4gMC45OTk5OTk5OTk5OTk5OTk5OTk1IC0wLjAKK2NvczAwNTMgY29zIDAuMDAwMyAwLjAgLT4gMC45OTk5OTk5NTUwMDAwMDAzMzc1IC0wLjAKK2NvczAwNTQgY29zIDAuMiAwLjAgLT4gMC45ODAwNjY1Nzc4NDEyNDE2Mjg5MiAtMC4wCitjb3MwMDU1IGNvcyAxLjAgMC4wIC0+IDAuNTQwMzAyMzA1ODY4MTM5NzE3NCAtMC4wCitjb3MwMDU2IGNvcyAtMWUtMTggMC4wIC0+IDEuMCAwLjAKK2NvczAwNTcgY29zIC0wLjAwMDMgMC4wIC0+IDAuOTk5OTk5OTU1MDAwMDAwMzM3NSAwLjAKK2NvczAwNTggY29zIC0xLjAgMC4wIC0+IDAuNTQwMzAyMzA1ODY4MTM5NzE3NCAwLjAKK2NvczAwNTkgY29zIDEuMDQ3MTk3NTUxMTk2NTk3NiAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwOTk0NSAtMC4wCitjb3MwMDYwIGNvcyAyLjU3MDc5NjMyNjc5NDg5NjYgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjQ3MzU3IC0wLjAKK2NvczAwNjEgY29zIC0yLjU3MDc5NjMyNjc5NDg5NjYgMC4wIC0+IC0wLjg0MTQ3MDk4NDgwNzg5NjQ3MzU3IDAuMAorY29zMDA2MiBjb3MgNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDAuNTg3Nzg1MjUyMjkyNDc0MDc1NTkgLTAuMAorY29zMDA2MyBjb3MgLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IC0wLjgwOTAxNjk5NDM3NDk0NzIyMjU1IDAuMAorCiAtLSBzcGVjaWFsIHZhbHVlcwogY29zMTAwMCBjb3MgLTAuMCAwLjAgLT4gMS4wIDAuMAogY29zMTAwMSBjb3MgLWluZiAwLjAgLT4gbmFuIDAuMCBpbnZhbGlkIGlnbm9yZS1pbWFnLXNpZ24KQEAgLTIwNzMsNiArMjE3OSwyMiBAQAogc2luMDAyMiBzaW4gMS4xNTE4MDg3MzU0NDAzNzI1IDQuODU5NzIzNTk2NjE1MDU1OCAtPiA1OC45MTkxNDE5ODk2MDMwNDEgMjYuMjM3MDAzNDAzNzU4ODUyCiBzaW4wMDIzIHNpbiAwLjAwMDg3NzczMDc4NDA2NjQ5MTkyIDM0Ljc5MjM3OTIxMTMxMjA5NSAtPiA1NjU1NDgxNDU1NjkuMzgyNDUgNjQ0MzI5Njg1ODIyNzAwLjYyCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3NpbjAwNTAgc2luIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAorc2luMDA1MSBzaW4gMy43ZS0wOCAwLjAgLT4gMy42OTk5OTk5OTk5OTk5OTkyMDAxZS04IDAuMAorc2luMDA1MiBzaW4gMC4wMDEgMC4wIC0+IDAuMDAwOTk5OTk5ODMzMzMzMzQxNjg3NDggMC4wCitzaW4wMDUzIHNpbiAwLjIgMC4wIC0+IDAuMTk4NjY5MzMwNzk1MDYxMjI2MzQgMC4wCitzaW4wMDU0IHNpbiAxLjAgMC4wIC0+IDAuODQxNDcwOTg0ODA3ODk2NTA2NjUgMC4wCitzaW4wMDU1IHNpbiAtMy43ZS0wOCAwLjAgLT4gLTMuNjk5OTk5OTk5OTk5OTk5MjAwMWUtOCAwLjAKK3NpbjAwNTYgc2luIC0wLjAwMSAwLjAgLT4gLTAuMDAwOTk5OTk5ODMzMzMzMzQxNjg3NDggMC4wCitzaW4wMDU3IHNpbiAtMS4wIDAuMCAtPiAtMC44NDE0NzA5ODQ4MDc4OTY1MDY2NSAwLjAKK3NpbjAwNTggc2luIDAuNTIzNTk4Nzc1NTk4Mjk4OSAwLjAgLT4gMC41MDAwMDAwMDAwMDAwMDAwNDY0MiAwLjAKK3NpbjAwNTkgc2luIC0wLjUyMzU5ODc3NTU5ODI5ODkgMC4wIC0+IC0wLjUwMDAwMDAwMDAwMDAwMDA0NjQyIDAuMAorc2luMDA2MCBzaW4gMi42MTc5OTM4Nzc5OTE0OTQ0IDAuMCAtPiAwLjQ5OTk5OTk5OTk5OTk5OTk2MDE4IC0wLjAKK3NpbjAwNjEgc2luIC0yLjYxNzk5Mzg3Nzk5MTQ5NDQgMC4wIC0+IC0wLjQ5OTk5OTk5OTk5OTk5OTk2MDE4IC0wLjAKK3NpbjAwNjIgc2luIDcuMjI1NjYzMTAzMjU2NTIzIDAuMCAtPiAwLjgwOTAxNjk5NDM3NDk0NjczNjQ4IDAuMAorc2luMDA2MyBzaW4gLTguNzk2NDU5NDMwMDUxNDIgMC4wIC0+IC0wLjU4Nzc4NTI1MjI5MjQ3MzQwNjU4IC0wLjAKKwogLS0gc3BlY2lhbCB2YWx1ZXMKIHNpbjEwMDAgc2luIC0wLjAgMC4wIC0+IC0wLjAgMC4wCiBzaW4xMDAxIHNpbiAtaW5mIDAuMCAtPiBuYW4gMC4wIGludmFsaWQgaWdub3JlLWltYWctc2lnbgpAQCAtMjE2MSw2ICsyMjgzLDI1IEBACiB0YW4wMDIyIHRhbiAxLjE2MTUzMTM5MDA4ODA1NzcgMS43OTU2Mjk4NzI4NjQ3MTA3IC0+IDAuMDQxNzkzMTg2ODI2MzkwMzYyIDEuMDM3NTMzOTU0NjAzNDc5MgogdGFuMDAyMyB0YW4gMC4wNjcwMTQ3Nzk0Nzc5MDg5NDUgNS44NTE3MzYxNTc3NDU3MDk3IC0+IDIuMjA4ODYzOTc1NDgwMDAzNGUtMDYgMC45OTk5ODM2MTgyNDIwMDYxCiAKKy0tIEFkZGl0aW9uYWwgcmVhbCB2YWx1ZXMgKG1wbWF0aCkKK3RhbjAwNTAgdGFuIDFlLTEwMCAwLjAgLT4gMS4wMDAwMDAwMDAwMDAwMDAwMmUtMTAwIDAuMAordGFuMDA1MSB0YW4gMy43ZS0wOCAwLjAgLT4gMy43MDAwMDAwMDAwMDAwMDE3MzI4ZS04IDAuMAordGFuMDA1MiB0YW4gMC4wMDEgMC4wIC0+IDAuMDAxMDAwMDAwMzMzMzMzNDY2Njg3NSAwLjAKK3RhbjAwNTMgdGFuIDAuMiAwLjAgLT4gMC4yMDI3MTAwMzU1MDg2NzI0OTQ4OCAwLjAKK3RhbjAwNTQgdGFuIDEuMCAwLjAgLT4gMS41NTc0MDc3MjQ2NTQ5MDIyMzA1IDAuMAordGFuMDA1NSB0YW4gLTMuN2UtMDggMC4wIC0+IC0zLjcwMDAwMDAwMDAwMDAwMTczMjhlLTggMC4wCit0YW4wMDU2IHRhbiAtMC4wMDEgMC4wIC0+IC0wLjAwMTAwMDAwMDMzMzMzMzQ2NjY4NzUgMC4wCit0YW4wMDU3IHRhbiAtMS4wIDAuMCAtPiAtMS41NTc0MDc3MjQ2NTQ5MDIyMzA1IDAuMAordGFuMDA1OCB0YW4gMC40NjM2NDc2MDkwMDA4MDYxIDAuMCAtPiAwLjQ5OTk5OTk5OTk5OTk5OTk3MTYzIDAuMAordGFuMDA1OSB0YW4gLTAuNDYzNjQ3NjA5MDAwODA2MSAwLjAgLT4gLTAuNDk5OTk5OTk5OTk5OTk5OTcxNjMgMC4wCit0YW4wMDYwIHRhbiAxLjEwNzE0ODcxNzc5NDA5MDQgMC4wIC0+IDEuOTk5OTk5OTk5OTk5OTk5NTI5OCAwLjAKK3RhbjAwNjEgdGFuIC0xLjEwNzE0ODcxNzc5NDA5MDQgMC4wIC0+IC0xLjk5OTk5OTk5OTk5OTk5OTUyOTggMC4wCit0YW4wMDYyIHRhbiAxLjUgMC4wIC0+IDE0LjEwMTQxOTk0NzE3MTcxOTM4OCAwLjAKK3RhbjAwNjMgdGFuIDEuNTcgMC4wIC0+IDEyNTUuNzY1NTkxNTAwNzg5NjQ3NSAwLjAKK3RhbjAwNjQgdGFuIDEuNTcwNzk2MzI2Nzk0ODk2MSAwLjAgLT4gMTk3ODkzNzk2NjA5NTIxOS4wNTM4IDAuMAordGFuMDA2NSB0YW4gNy4yMjU2NjMxMDMyNTY1MjMgMC4wIC0+IDEuMzc2MzgxOTIwNDcxMTcwMTUyMiAwLjAKK3RhbjAwNjYgdGFuIC04Ljc5NjQ1OTQzMDA1MTQyIDAuMCAtPiAwLjcyNjU0MjUyODAwNTM2MTQwOTggMC4wCisKIC0tIHNwZWNpYWwgdmFsdWVzCiB0YW4xMDAwIHRhbiAtMC4wIDAuMCAtPiAtMC4wIDAuMAogdGFuMTAwMSB0YW4gLWluZiAwLjAgLT4gbmFuIG5hbiBpbnZhbGlkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kYXRldGltZXRlc3Rlci5weSBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CmluZGV4IDA4NjBkYjguLjk4OGM2ZjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5CkBAIC0yLDE0ICsyLDIyIEBACiAKIFNlZSBodHRwOi8vd3d3LnpvcGUub3JnL01lbWJlcnMvZmRyYWtlL0RhdGVUaW1lV2lraS9UZXN0Q2FzZXMKICIiIgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGlzX3Jlc291cmNlX2VuYWJsZWQKKworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IGJpc2VjdAogCiBpbXBvcnQgY29weQogaW1wb3J0IGRlY2ltYWwKIGltcG9ydCBzeXMKK2ltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJhbmRvbQoraW1wb3J0IHN0cnVjdAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gYXJyYXkgaW1wb3J0IGFycmF5CisKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGx0LCBsZSwgZ3QsIGdlLCBlcSwgbmUsIHRydWVkaXYsIGZsb29yZGl2LCBtb2QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0yODQsNyArMjkyLDggQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOiBzZWxmLkVTVC5kc3QoNSkKIAogICAgIGRlZiB0ZXN0X3R6bmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVVRDKzAwOjAwJywgdGltZXpvbmUoWkVSTykudHpuYW1lKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMnLCB0aW1lem9uZS51dGMudHpuYW1lKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMnLCB0aW1lem9uZShaRVJPKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQy0wNTowMCcsIHRpbWV6b25lKC01ICogSE9VUikudHpuYW1lKE5vbmUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdVVEMrMDk6MzAnLCB0aW1lem9uZSg5LjUgKiBIT1VSKS50em5hbWUoTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1VUQy0wMDowMScsIHRpbWV6b25lKHRpbWVkZWx0YShtaW51dGVzPS0xKSkudHpuYW1lKE5vbmUpKQpAQCAtMTU1OCwxMyArMTU2NywzMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdCwgZHQyKQogCiAgICAgZGVmIHRlc3RfaXNvZm9ybWF0KHNlbGYpOgotICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyLCA0LCA1LCAxLCAxMjMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoKSwgICAgIjAwMDItMDMtMDJUMDQ6MDU6MDEuMDAwMTIzIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnVCcpLCAiMDAwMi0wMy0wMlQwNDowNTowMS4wMDAxMjMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAyLTAzLTAyIDA0OjA1OjAxLjAwMDEyMyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1x4MDAnKSwgIjAwMDItMDMtMDJceDAwMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSwgMTIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQoJ1QnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgnICcpLCAiMDAwMS0wMi0wMyAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCdceDAwJyksICIwMDAxLTAyLTAzXHgwMDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2hvdXJzJyksICIwMDAxLTAyLTAzVDA0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpLCAiMDAwMS0wMi0wM1QwNDowNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjAwMDEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdChzZXA9JyAnLCB0aW1lc3BlYz0nbWludXRlcycpLCAiMDAwMS0wMi0wMyAwNDowNSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHQuaXNvZm9ybWF0LCB0aW1lc3BlYz0nZm9vJykKICAgICAgICAgIyBzdHIgaXMgSVNPIGZvcm1hdCB3aXRoIHRoZSBzZXBhcmF0b3IgZm9yY2VkIHRvIGEgYmxhbmsuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMi0wMy0wMiAwNDowNTowMS4wMDAxMjMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0KSwgIjAwMDEtMDItMDMgMDQ6MDU6MDEuMDAwMTIzIikKKworICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxLCAyLCAzLCA0LCA1LCAxLCA5OTk1MDAsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS45OTkrMDA6MDAiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDEsIDIsIDMsIDQsIDUsIDEsIDk5OTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIwMDAxLTAyLTAzVDA0OjA1OjAxLjk5OSIpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMSwgMiwgMywgNCwgNSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMDAwMS0wMi0wM1QwNDowNTowMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMDAwMS0wMi0wM1QwNDowNTowMS4wMDAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWNyb3NlY29uZHMnKSwgIjAwMDEtMDItMDNUMDQ6MDU6MDEuMDAwMDAwIikKIAogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyLCAzLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICAgICIwMDAyLTAzLTAyVDAwOjAwOjAwIikKQEAgLTE1NzIsNiArMTYwMCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCcgJyksICIwMDAyLTAzLTAyIDAwOjAwOjAwIikKICAgICAgICAgIyBzdHIgaXMgSVNPIGZvcm1hdCB3aXRoIHRoZSBzZXBhcmF0b3IgZm9yY2VkIHRvIGEgYmxhbmsuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHQpLCAiMDAwMi0wMy0wMiAwMDowMDowMCIpCisgICAgICAgICMgSVNPIGZvcm1hdCB3aXRoIHRpbWV6b25lCisgICAgICAgIHR6ID0gRml4ZWRPZmZzZXQodGltZWRlbHRhKHNlY29uZHM9MTYpLCAnWFhYJykKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMiwgMywgMiwgdHppbmZvPXR6KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KCksICIwMDAyLTAzLTAyVDAwOjAwOjAwKzAwOjAwOjE2IikKIAogICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzKDIwMDcsIDksIDEwLCA0LCA1LCAxLCAxMjMpCkBAIC0xNjkxLDYgKzE3MjMsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIDIzLCA1OSwgNTksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAwMDApCisgICAgICAgICMgYmFkIGZvbGQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMjAwMCwgMSwgMzEsIGZvbGQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCBmb2xkPTIpCisgICAgICAgICMgUG9zaXRpb25hbCBmb2xkOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudGhlY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDAsIDEsIDMxLCAyMywgNTksIDU5LCAwLCBOb25lLCAxKQogCiAgICAgZGVmIHRlc3RfaGFzaF9lcXVhbGl0eShzZWxmKToKICAgICAgICAgZCA9IHNlbGYudGhlY2xhc3MoMjAwMCwgMTIsIDMxLCAyMywgMzAsIDE3KQpAQCAtMTg3NCwxNiArMTkxNCwyMCBAQAogICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCAxLCAyLCAzLCA0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgMTgwMDAuMCArIDM2MDAgKyAyKjYwICsgMyArIDQqMWUtNikKLSAgICAgICAgIyBNaXNzaW5nIGhvdXIgbWF5IHByb2R1Y2UgcGxhdGZvcm0tZGVwZW5kZW50IHJlc3VsdAotICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAzLCAxMSwgMiwgMzApCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQudGltZXN0YW1wKCkpLAotICAgICAgICAgICAgICAgICAgICAgIFt0IC0gdGltZWRlbHRhKGhvdXJzPTEpLCB0ICsgdGltZWRlbHRhKGhvdXJzPTEpXSkKKyAgICAgICAgIyBNaXNzaW5nIGhvdXIKKyAgICAgICAgdDAgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDMsIDExLCAyLCAzMCkKKyAgICAgICAgdDEgPSB0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodDEudGltZXN0YW1wKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHQwIC0gdGltZWRlbHRhKGhvdXJzPTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCh0MC50aW1lc3RhbXAoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdDEgKyB0aW1lZGVsdGEoaG91cnM9MSkpCiAgICAgICAgICMgQW1iaWd1b3VzIGhvdXIgZGVmYXVsdHMgdG8gRFNUCiAgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDExLCA0LCAxLCAzMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksIHQpCiAKICAgICAgICAgIyBUaW1lc3RhbXAgbWF5IHJhaXNlIGFuIG92ZXJmbG93IGVycm9yIG9uIHNvbWUgcGxhdGZvcm1zCi0gICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDEsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk5LDEyLDEyKV06CisgICAgICAgICMgWFhYOiBEbyB3ZSBjYXJlIHRvIHN1cHBvcnQgdGhlIGZpcnN0IGFuZCBsYXN0IHllYXI/CisgICAgICAgIGZvciB0IGluIFtzZWxmLnRoZWNsYXNzKDIsMSwxKSwgc2VsZi50aGVjbGFzcyg5OTk4LDEyLDEyKV06CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcyA9IHQudGltZXN0YW1wKCkKICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgpAQCAtMTkwMiw2ICsxOTQ2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIDE4MDAwICsgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQogCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ01TSy0wMycpICAjIFNvbWV0aGluZyBlYXN0IG9mIEdyZWVud2ljaAogICAgIGRlZiB0ZXN0X21pY3Jvc2Vjb25kX3JvdW5kaW5nKHNlbGYpOgogICAgICAgICBmb3IgZnRzIGluIFtzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGhlY2xhc3MudXRjZnJvbXRpbWVzdGFtcF06CkBAIC0yMDc2LDExICsyMTIxLDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSkgIyBuZWVkIGFuIGFyZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQpICMgbmVlZCB0d28gYXJncwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIHQsIGQpICMgYXJncyByZXZlcnNlZAotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEpICMgdG9vIG1hbnkgYXJncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsIGQsIHQsIDEpICMgd3JvbmcgdHppbmZvIHR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkLCB0LCAxLCAyKSAgIyB0b28gbWFueSBhcmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluZSwgImRhdGUiLCAidGltZSIpICMgd3JvbmcgdHlwZXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5lLCBkLCAidGltZSIpICMgd3JvbmcgdHlwZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmUsICJkYXRlIiwgdCkgIyB3cm9uZyB0eXBlCiAKKyAgICAgICAgIyB0emluZm89IGFyZ3VtZW50CisgICAgICAgIGR0ID0gY29tYmluZShkLCB0LCB0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZHQudHppbmZvLCB0aW1lem9uZS51dGMpCisgICAgICAgIGR0ID0gY29tYmluZShkLCB0LCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydElzKGR0LnR6aW5mbywgdGltZXpvbmUudXRjKQorICAgICAgICB0ID0gdGltZSgpCisgICAgICAgIGR0ID0gY29tYmluZShkdCwgdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5kYXRlKCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQudGltZSgpLCB0KQorCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwogICAgICAgICBhcmdzID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddCkBAIC0yMTA3LDYgKzIxNjMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiYXNlLnJlcGxhY2UsIHllYXI9MjAwMSkKIAogICAgIGRlZiB0ZXN0X2FzdGltZXpvbmUoc2VsZik6CisgICAgICAgIHJldHVybiAgIyBUaGUgcmVzdCBpcyBubyBsb25nZXIgYXBwbGljYWJsZQogICAgICAgICAjIFByZXR0eSBib3JpbmchICBUaGUgVFogdGVzdCBpcyBtb3JlIGludGVyZXN0aW5nIGhlcmUuICBhc3RpbWV6b25lKCkKICAgICAgICAgIyBzaW1wbHkgY2FuJ3QgYmUgYXBwbGllZCB0byBhIG5haXZlIG9iamVjdC4KICAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzLm5vdygpCkBAIC0yMzI0LDYgKzIzODEsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCAiMDA6MDA6MDAuMTAwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCgpLCBzdHIodCkpCiAKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTEyMzQ1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0naG91cnMnKSwgIjEyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWludXRlcycpLCAiMTI6MzQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdzZWNvbmRzJyksICIxMjozNDo1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pbGxpc2Vjb25kcycpLCAiMTI6MzQ6NTYuMTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWljcm9zZWNvbmRzJyksICIxMjozNDo1Ni4xMjM0NTYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdhdXRvJyksICIxMjozNDo1Ni4xMjM0NTYiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0Lmlzb2Zvcm1hdCwgdGltZXNwZWM9J21vbmtleScpCisKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoaG91cj0xMiwgbWludXRlPTM0LCBzZWNvbmQ9NTYsIG1pY3Jvc2Vjb25kPTk5OTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nbWlsbGlzZWNvbmRzJyksICIxMjozNDo1Ni45OTkiKQorCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKGhvdXI9MTIsIG1pbnV0ZT0zNCwgc2Vjb25kPTU2LCBtaWNyb3NlY29uZD0wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaWxsaXNlY29uZHMnKSwgIjEyOjM0OjU2LjAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpLCAiMTI6MzQ6NTYuMDAwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpLCAiMTI6MzQ6NTYiKQorCiAgICAgZGVmIHRlc3RfMTY1MzczNihzZWxmKToKICAgICAgICAgIyB2ZXJpZnkgaXQgZG9lc24ndCBhY2NlcHQgZXh0cmEga2V5d29yZCBhcmd1bWVudHMKICAgICAgICAgdCA9IHNlbGYudGhlY2xhc3Moc2Vjb25kPTEpCkBAIC0yNTgyLDkgKzI2NTYsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnV0Y29mZnNldCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdC5kc3QpCiAKLSAgICAgICAgIyBOb3QgYSB3aG9sZSBudW1iZXIgb2YgbWludXRlcy4KKyAgICAgICAgIyBOb3QgYSB3aG9sZSBudW1iZXIgb2Ygc2Vjb25kcy4KICAgICAgICAgY2xhc3MgQzcodHppbmZvKToKLSAgICAgICAgICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOiByZXR1cm4gdGltZWRlbHRhKHNlY29uZHM9NjEpCisgICAgICAgICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KTogcmV0dXJuIHRpbWVkZWx0YShtaWNyb3NlY29uZHM9NjEpCiAgICAgICAgICAgICBkZWYgZHN0KHNlbGYsIGR0KTogcmV0dXJuIHRpbWVkZWx0YShtaWNyb3NlY29uZHM9LTgxKQogICAgICAgICB0ID0gY2xzKDEsIDEsIDEsIHR6aW5mbz1DNygpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0LnV0Y29mZnNldCkKQEAgLTM5MjcsMTIgKzQwMDEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWUoeHgsIHh4LCB4eCwgeHgsIHh4LCB4eCwgeHgpKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdeYW4gaW50ZWdlciBpcyByZXF1aXJlZCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcKGdvdCB0eXBlIHN0clwpJCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXChnb3QgdHlwZSBzdHJcKSQnKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgJzEwJykKIAogICAgICAgICBmMTAgPSBOdW1iZXIoMTAuOSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ15fX2ludF9fIHJldHVybmVkIG5vbi1pbnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXCh0eXBlIGZsb2F0XCkkJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcKHR5cGUgZmxvYXRcKSQnKToKICAgICAgICAgICAgIGRhdGV0aW1lKDEwLCAxMCwgZjEwKQogCiAgICAgICAgIGNsYXNzIEZsb2F0KGZsb2F0KToKQEAgLTM5NTcsNSArNDAzMSw3OTAgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgZGF0ZXRpbWUoMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAuKQogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uCisKKyMgQW4gZXhwZXJpbWVudGFsIHJlaW1wbGVtZW50YXRpb24gb2YgZnJvbXV0YyB0aGF0IHJlc3BlY3RzIHRoZSAiZm9sZCIgZmxhZy4KKworY2xhc3MgdHppbmZvMih0emluZm8pOgorCisgICAgZGVmIGZyb211dGMoc2VsZiwgZHQpOgorICAgICAgICAiZGF0ZXRpbWUgaW4gVVRDIC0+IGRhdGV0aW1lIGluIGxvY2FsIHRpbWUuIgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIGRhdGV0aW1lIGFyZ3VtZW50IikKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKKyAgICAgICAgIyBSZXR1cm5lZCB2YWx1ZSBzYXRpc2ZpZXMKKyAgICAgICAgIyAgICAgICAgICBkdCArIGxkdC51dGNvZmZzZXQoKSA9IGxkdAorICAgICAgICBvZmYwID0gZHQucmVwbGFjZShmb2xkPTApLnV0Y29mZnNldCgpCisgICAgICAgIG9mZjEgPSBkdC5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCkKKyAgICAgICAgaWYgb2ZmMCBpcyBOb25lIG9yIG9mZjEgaXMgTm9uZSBvciBkdC5kc3QoKSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBpZiBvZmYwID09IG9mZjE6CisgICAgICAgICAgICBsZHQgPSBkdCArIG9mZjAKKyAgICAgICAgICAgIG9mZjEgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIG9mZjAgPT0gb2ZmMToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisgICAgICAgICMgTm93LCB3ZSBkaXNjb3ZlcmVkIGJvdGggcG9zc2libGUgb2Zmc2V0cywgc28KKyAgICAgICAgIyB3ZSBjYW4ganVzdCB0cnkgZm91ciBwb3NzaWJsZSBzb2x1dGlvbnM6CisgICAgICAgIGZvciBvZmYgaW4gW29mZjAsIG9mZjFdOgorICAgICAgICAgICAgbGR0ID0gZHQgKyBvZmYKKyAgICAgICAgICAgIGlmIGxkdC51dGNvZmZzZXQoKSA9PSBvZmY6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxkdAorICAgICAgICAgICAgbGR0ID0gbGR0LnJlcGxhY2UoZm9sZD0xKQorICAgICAgICAgICAgaWYgbGR0LnV0Y29mZnNldCgpID09IG9mZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gbGR0CisKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gc3VpdGFibGUgbG9jYWwgdGltZSBmb3VuZCIpCisKKyMgUmVpbXBsZW1lbnRpbmcgc2ltcGxpZmllZCBVUyB0aW1lem9uZXMgdG8gcmVzcGVjdCB0aGUgImZvbGQiIGZsYWc6CisKK2NsYXNzIFVTVGltZVpvbmUyKHR6aW5mbzIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvdXJzLCByZXBybmFtZSwgc3RkbmFtZSwgZHN0bmFtZSk6CisgICAgICAgIHNlbGYuc3Rkb2Zmc2V0ID0gdGltZWRlbHRhKGhvdXJzPWhvdXJzKQorICAgICAgICBzZWxmLnJlcHJuYW1lID0gcmVwcm5hbWUKKyAgICAgICAgc2VsZi5zdGRuYW1lID0gc3RkbmFtZQorICAgICAgICBzZWxmLmRzdG5hbWUgPSBkc3RuYW1lCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnJlcHJuYW1lCisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgaWYgc2VsZi5kc3QoZHQpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHN0bmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3RkbmFtZQorCisgICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6CisgICAgICAgIHJldHVybiBzZWxmLnN0ZG9mZnNldCArIHNlbGYuZHN0KGR0KQorCisgICAgZGVmIGRzdChzZWxmLCBkdCk6CisgICAgICAgIGlmIGR0IGlzIE5vbmUgb3IgZHQudHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICAjIEFuIGV4Y2VwdGlvbiBpbnN0ZWFkIG1heSBiZSBzZW5zaWJsZSBoZXJlLCBpbiBvbmUgb3IgbW9yZSBvZgorICAgICAgICAgICAgIyB0aGUgY2FzZXMuCisgICAgICAgICAgICByZXR1cm4gWkVSTworICAgICAgICBhc3NlcnQgZHQudHppbmZvIGlzIHNlbGYKKworICAgICAgICAjIEZpbmQgZmlyc3QgU3VuZGF5IGluIEFwcmlsLgorICAgICAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihEU1RTVEFSVC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCisgICAgICAgIGFzc2VydCBzdGFydC53ZWVrZGF5KCkgPT0gNiBhbmQgc3RhcnQubW9udGggPT0gNCBhbmQgc3RhcnQuZGF5IDw9IDcKKworICAgICAgICAjIEZpbmQgbGFzdCBTdW5kYXkgaW4gT2N0b2Jlci4KKyAgICAgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKERTVEVORC5yZXBsYWNlKHllYXI9ZHQueWVhcikpCisgICAgICAgIGFzc2VydCBlbmQud2Vla2RheSgpID09IDYgYW5kIGVuZC5tb250aCA9PSAxMCBhbmQgZW5kLmRheSA+PSAyNQorCisgICAgICAgICMgQ2FuJ3QgY29tcGFyZSBuYWl2ZSB0byBhd2FyZSBvYmplY3RzLCBzbyBzdHJpcCB0aGUgdGltZXpvbmUgZnJvbQorICAgICAgICAjIGR0IGZpcnN0LgorICAgICAgICBkdCA9IGR0LnJlcGxhY2UodHppbmZvPU5vbmUpCisgICAgICAgIGlmIHN0YXJ0ICsgSE9VUiA8PSBkdCA8IGVuZDoKKyAgICAgICAgICAgICMgRFNUIGlzIGluIGVmZmVjdC4KKyAgICAgICAgICAgIHJldHVybiBIT1VSCisgICAgICAgIGVsaWYgZW5kIDw9IGR0IDwgZW5kICsgSE9VUjoKKyAgICAgICAgICAgICMgRm9sZCAoYW4gYW1iaWd1b3VzIGhvdXIpOiB1c2UgZHQuZm9sZCB0byBkaXNhbWJpZ3VhdGUuCisgICAgICAgICAgICByZXR1cm4gWkVSTyBpZiBkdC5mb2xkIGVsc2UgSE9VUgorICAgICAgICBlbGlmIHN0YXJ0IDw9IGR0IDwgc3RhcnQgKyBIT1VSOgorICAgICAgICAgICAgIyBHYXAgKGEgbm9uLWV4aXN0ZW50IGhvdXIpOiByZXZlcnNlIHRoZSBmb2xkIHJ1bGUuCisgICAgICAgICAgICByZXR1cm4gSE9VUiBpZiBkdC5mb2xkIGVsc2UgWkVSTworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBEU1QgaXMgb2ZmLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8KKworRWFzdGVybjIgID0gVVNUaW1lWm9uZTIoLTUsICJFYXN0ZXJuMiIsICAiRVNUIiwgIkVEVCIpCitDZW50cmFsMiAgPSBVU1RpbWVab25lMigtNiwgIkNlbnRyYWwyIiwgICJDU1QiLCAiQ0RUIikKK01vdW50YWluMiA9IFVTVGltZVpvbmUyKC03LCAiTW91bnRhaW4yIiwgIk1TVCIsICJNRFQiKQorUGFjaWZpYzIgID0gVVNUaW1lWm9uZTIoLTgsICJQYWNpZmljMiIsICAiUFNUIiwgIlBEVCIpCisKKyMgRXVyb3BlX1ZpbG5pdXNfMTk0MSB0emluZm8gaW1wbGVtZW50YXRpb24gcmVwcm9kdWNlcyB0aGUgZm9sbG93aW5nCisjIDE5NDEgdHJhbnNpdGlvbiBmcm9tIE9sc29uJ3MgdHpkaXN0OgorIworIyBab25lIE5BTUUgICAgICAgICAgIEdNVE9GRiBSVUxFUyAgRk9STUFUIFtVTlRJTF0KKyMgWm9uZUV1cm9wZS9WaWxuaXVzICAxOjAwICAgLSAgICAgIENFVCAgICAxOTQwIEF1ZyAgMworIyAgICAgICAgICAgICAgICAgICAgIDM6MDAgICAtICAgICAgTVNLICAgIDE5NDEgSnVuIDI0CisjICAgICAgICAgICAgICAgICAgICAgMTowMCAgIEMtRXVyICBDRSVzVCAgMTk0NCBBdWcKKyMKKyMgJCB6ZHVtcCAtdiBFdXJvcGUvVmlsbml1cyB8IGdyZXAgMTk0MQorIyBFdXJvcGUvVmlsbml1cyAgTW9uIEp1biAyMyAyMDo1OTo1OSAxOTQxIFVUQyA9IE1vbiBKdW4gMjMgMjM6NTk6NTkgMTk0MSBNU0sgaXNkc3Q9MCBnbXRvZmY9MTA4MDAKKyMgRXVyb3BlL1ZpbG5pdXMgIE1vbiBKdW4gMjMgMjE6MDA6MDAgMTk0MSBVVEMgPSBNb24gSnVuIDIzIDIzOjAwOjAwIDE5NDEgQ0VTVCBpc2RzdD0xIGdtdG9mZj03MjAwCisKK2NsYXNzIEV1cm9wZV9WaWxuaXVzXzE5NDEodHppbmZvKToKKyAgICBkZWYgX3V0Y19mb2xkKHNlbGYpOgorICAgICAgICByZXR1cm4gW2RhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMSwgdHppbmZvPXNlbGYpLCAgIyBNb24gSnVuIDIzIDIxOjAwOjAwIDE5NDEgVVRDCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCB0emluZm89c2VsZildICAjIE1vbiBKdW4gMjMgMjI6MDA6MDAgMTk0MSBVVEMKKworICAgIGRlZiBfbG9jX2ZvbGQoc2VsZik6CisgICAgICAgIHJldHVybiBbZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCB0emluZm89c2VsZiksICAjIE1vbiBKdW4gMjMgMjM6MDA6MDAgMTk0MSBNU0sgLyBDRVNUCisgICAgICAgICAgICAgICAgZGF0ZXRpbWUoMTk0MSwgNiwgMjQsIDAsIHR6aW5mbz1zZWxmKV0gICAjIE1vbiBKdW4gMjQgMDA6MDA6MDAgMTk0MSBDRVNUCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fbG9jX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gMyAqIEhPVVIKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0b3A6CisgICAgICAgICAgICByZXR1cm4gKDIgaWYgZHQuZm9sZCBlbHNlIDMpICogSE9VUgorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gMiAqIEhPVVIKKworICAgIGRlZiBkc3Qoc2VsZiwgZHQpOgorICAgICAgICBmb2xkX3N0YXJ0LCBmb2xkX3N0b3AgPSBzZWxmLl9sb2NfZm9sZCgpCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdGFydDoKKyAgICAgICAgICAgIHJldHVybiAwICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoMSBpZiBkdC5mb2xkIGVsc2UgMCkgKiBIT1VSCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiAxICogSE9VUgorCisgICAgZGVmIHR6bmFtZShzZWxmLCBkdCk6CisgICAgICAgIGZvbGRfc3RhcnQsIGZvbGRfc3RvcCA9IHNlbGYuX2xvY19mb2xkKCkKKyAgICAgICAgaWYgZHQgPCBmb2xkX3N0YXJ0OgorICAgICAgICAgICAgcmV0dXJuICdNU0snCisgICAgICAgIGlmIGR0IDwgZm9sZF9zdG9wOgorICAgICAgICAgICAgcmV0dXJuICgnTVNLJywgJ0NFU1QnKVtkdC5mb2xkXQorICAgICAgICAjIGlmIGR0ID49IGZvbGRfc3RvcAorICAgICAgICByZXR1cm4gJ0NFU1QnCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC5mb2xkID09IDAKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIGlmIGR0LnllYXIgIT0gMTk0MToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgZm9sZF9zdGFydCwgZm9sZF9zdG9wID0gc2VsZi5fdXRjX2ZvbGQoKQorICAgICAgICBpZiBkdCA8IGZvbGRfc3RhcnQ6CisgICAgICAgICAgICByZXR1cm4gZHQgKyAzICogSE9VUgorICAgICAgICBpZiBkdCA8IGZvbGRfc3RvcDoKKyAgICAgICAgICAgIHJldHVybiAoZHQgKyAyICogSE9VUikucmVwbGFjZShmb2xkPTEpCisgICAgICAgICMgaWYgZHQgPj0gZm9sZF9zdG9wCisgICAgICAgIHJldHVybiBkdCArIDIgKiBIT1VSCisKKworY2xhc3MgVGVzdExvY2FsVGltZURpc2FtYmlndWF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3ZpbG5pdXNfMTk0MV9mcm9tdXRjKHNlbGYpOgorICAgICAgICBWaWxuaXVzID0gRXVyb3BlX1ZpbG5pdXNfMTk0MSgpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIwLCA1OSwgNTksIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxkdCA9IGdkdC5hc3RpbWV6b25lKFZpbG5pdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LnN0cmZ0aW1lKCIlYyAlWiV6IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbiBKdW4gMjMgMjM6NTk6NTkgMTk0MSBNU0srMDMwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGR0LmRzdCgpKQorCisgICAgICAgIGdkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMSwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgbGR0ID0gZ2R0LmFzdGltZXpvbmUoVmlsbml1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuc3RyZnRpbWUoIiVjICVaJXoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMzowMDowMCAxOTQxIENFU1QrMDIwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGR0LmZvbGQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZHQuZHN0KCkpCisKKyAgICAgICAgZ2R0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIyLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsZHQgPSBnZHQuYXN0aW1lem9uZShWaWxuaXVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5zdHJmdGltZSgiJWMgJVoleiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUdWUgSnVuIDI0IDAwOjAwOjAwIDE5NDEgQ0VTVCswMjAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxkdC5kc3QoKSkKKworICAgIGRlZiB0ZXN0X3ZpbG5pdXNfMTk0MV90b3V0YyhzZWxmKToKKyAgICAgICAgVmlsbml1cyA9IEV1cm9wZV9WaWxuaXVzXzE5NDEoKQorCisgICAgICAgIGxkdCA9IGRhdGV0aW1lKDE5NDEsIDYsIDIzLCAyMiwgNTksIDU5LCB0emluZm89Vmlsbml1cykKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAxOTo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjMsIDIzLCA1OSwgNTksIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIwOjU5OjU5IDE5NDEgVVRDJykKKworICAgICAgICBsZHQgPSBkYXRldGltZSgxOTQxLCA2LCAyMywgMjMsIDU5LCA1OSwgdHppbmZvPVZpbG5pdXMsIGZvbGQ9MSkKKyAgICAgICAgZ2R0ID0gbGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdkdC5zdHJmdGltZSgiJWMgJVoiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9uIEp1biAyMyAyMTo1OTo1OSAxOTQxIFVUQycpCisKKyAgICAgICAgbGR0ID0gZGF0ZXRpbWUoMTk0MSwgNiwgMjQsIDAsIHR6aW5mbz1WaWxuaXVzKQorICAgICAgICBnZHQgPSBsZHQuYXN0aW1lem9uZSh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2R0LnN0cmZ0aW1lKCIlYyAlWiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb24gSnVuIDIzIDIyOjAwOjAwIDE5NDEgVVRDJykKKworCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3JzKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwLCBmb2xkPTEpCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5mb2xkLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0aW1lKDAsIDAsIDAsIDAsIE5vbmUsIDApCisKKyAgICBkZWYgdGVzdF9tZW1iZXIoc2VsZik6CisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSwgZm9sZD0xKQorICAgICAgICB0ID0gZHQudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5mb2xkLCAxKQorICAgICAgICB0ID0gZHQudGltZXR6KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmZvbGQsIDEpCisKKyAgICBkZWYgdGVzdF9yZXBsYWNlKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKGZvbGQ9MSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdC5yZXBsYWNlKGZvbGQ9MSkuZm9sZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlcGxhY2UoZm9sZD0wKS5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UoZm9sZD0wKS5mb2xkLCAwKQorICAgICAgICAjIENoZWNrIHRoYXQgcmVwbGFjZW1lbnQgb2Ygb3RoZXIgZmllbGRzIGRvZXMgbm90IGNoYW5nZSAiZm9sZCIuCisgICAgICAgIHQgPSB0LnJlcGxhY2UoZm9sZD0xLCB0emluZm89RWFzdGVybikKKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKGZvbGQ9MSwgdHppbmZvPUVhc3Rlcm4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXBsYWNlKHR6aW5mbz1Ob25lKS5mb2xkLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LnJlcGxhY2UodHppbmZvPU5vbmUpLmZvbGQsIDEpCisgICAgICAgICMgQ2hlY2sgdGhhdCBmb2xkIGlzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHQucmVwbGFjZSgxLCAxLCAxLCBOb25lLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkdC5yZXBsYWNlKDEsIDEsIDEsIDEsIDEsIDEsIDEsIE5vbmUsIDEpCisKKyAgICBkZWYgdGVzdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICB0ID0gdGltZSgwKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5yZXBsYWNlKGZvbGQ9MSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGR0LnJlcGxhY2UoZm9sZD0xKSkKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgIHQgPSB0aW1lKDApCisgICAgICAgIGR0ID0gZGF0ZXRpbWUoMSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHQpLCBoYXNoKHQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGR0KSwgaGFzaChkdC5yZXBsYWNlKGZvbGQ9MSkpKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfZnJvbXRpbWVzdGFtcChzZWxmKToKKyAgICAgICAgcyA9IDE0MTQ5MDYyMDAKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICBkdDEgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKHMgKyAzNjAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0MS5mb2xkLCAxKQorCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0F1c3RyYWxpYS9Mb3JkX0hvd2UnKQorICAgIGRlZiB0ZXN0X2Zyb210aW1lc3RhbXBfbG9yZF9ob3dlKHNlbGYpOgorICAgICAgICB0bSA9IF90aW1lLmxvY2FsdGltZSgxLjRlOSkKKyAgICAgICAgaWYgX3RpbWUuc3RyZnRpbWUoJyVaJXonLCB0bSkgIT0gJ0xIU1QrMTAzMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdBdXN0cmFsaWEvTG9yZF9Ib3dlIHRpbWV6b25lIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgICAgICAgICMgJCBUWj1BdXN0cmFsaWEvTG9yZF9Ib3dlIGRhdGUgLXIgMTQyODE1ODcwMAorICAgICAgICAjIFN1biBBcHIgIDUgMDE6NDU6MDAgTEhEVCAyMDE1CisgICAgICAgICMgJCBUWj1BdXN0cmFsaWEvTG9yZF9Ib3dlIGRhdGUgLXIgMTQyODE2MDUwMAorICAgICAgICAjIFN1biBBcHIgIDUgMDE6NDU6MDAgTEhTVCAyMDE1CisgICAgICAgIHMgPSAxNDI4MTU4NzAwCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICB0MSA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAocyArIDE4MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAsIHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQwLmZvbGQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEuZm9sZCwgMSkKKworCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfdGltZXN0YW1wKHNlbGYpOgorICAgICAgICBkdDAgPSBkYXRldGltZSgyMDE0LCAxMSwgMiwgMSwgMzApCisgICAgICAgIGR0MSA9IGR0MC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdDAudGltZXN0YW1wKCkgKyAzNjAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGR0MS50aW1lc3RhbXAoKSkKKworICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdBdXN0cmFsaWEvTG9yZF9Ib3dlJykKKyAgICBkZWYgdGVzdF90aW1lc3RhbXBfbG9yZF9ob3dlKHNlbGYpOgorICAgICAgICB0bSA9IF90aW1lLmxvY2FsdGltZSgxLjRlOSkKKyAgICAgICAgaWYgX3RpbWUuc3RyZnRpbWUoJyVaJXonLCB0bSkgIT0gJ0xIU1QrMTAzMCc6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdBdXN0cmFsaWEvTG9yZF9Ib3dlIHRpbWV6b25lIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybScpCisgICAgICAgIHQgPSBkYXRldGltZSgyMDE1LCA0LCA1LCAxLCA0NSkKKyAgICAgICAgczAgPSB0LnJlcGxhY2UoZm9sZD0wKS50aW1lc3RhbXAoKQorICAgICAgICBzMSA9IHQucmVwbGFjZShmb2xkPTEpLnRpbWVzdGFtcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczAgKyAxODAwLCBzMSkKKworCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfYXN0aW1lem9uZShzZWxmKToKKyAgICAgICAgZHQwID0gZGF0ZXRpbWUoMjAxNCwgMTEsIDIsIDEsIDMwKQorICAgICAgICBkdDEgPSBkdDAucmVwbGFjZShmb2xkPTEpCisgICAgICAgICMgQ29udmVydCBib3RoIG5haXZlIGluc3RhbmNlcyB0byBhd2FyZS4KKyAgICAgICAgYWR0MCA9IGR0MC5hc3RpbWV6b25lKCkKKyAgICAgICAgYWR0MSA9IGR0MS5hc3RpbWV6b25lKCkKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBmaXJzdCBpbnN0YW5jZSBpbiBEU1Qgem9uZSBhbmQgdGhlIHNlY29uZCBpbiBTVEQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwLnR6bmFtZSgpLCAnRURUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQxLnR6bmFtZSgpLCAnRVNUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZHQwICsgSE9VUiwgYWR0MSkKKyAgICAgICAgIyBBd2FyZSBpbnN0YW5jZXMgd2l0aCBmaXhlZCBvZmZzZXQgdHppbmZvJ3MgYWx3YXlzIGhhdmUgZm9sZD0wCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWR0MC5mb2xkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkdDEuZm9sZCwgMCkKKworCisgICAgZGVmIHRlc3RfcGlja2xlX2ZvbGQoc2VsZik6CisgICAgICAgIHQgPSB0aW1lKGZvbGQ9MSkKKyAgICAgICAgZHQgPSBkYXRldGltZSgxLCAxLCAxLCBmb2xkPTEpCisgICAgICAgIGZvciBwaWNrbGVyLCB1bnBpY2tsZXIsIHByb3RvIGluIHBpY2tsZV9jaG9pY2VzOgorICAgICAgICAgICAgZm9yIHggaW4gW3QsIGR0XToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlci5kdW1wcyh4LCBwcm90bykKKyAgICAgICAgICAgICAgICB5ID0gdW5waWNrbGVyLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAgaWYgcHJvdG8gPCA0IGVsc2UgeC5mb2xkKSwgeS5mb2xkKQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgdCA9IHRpbWUoZm9sZD0xKQorICAgICAgICBkdCA9IGRhdGV0aW1lKDEsIDEsIDEsIGZvbGQ9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHQpLCAnZGF0ZXRpbWUudGltZSgwLCAwLCBmb2xkPTEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0ZXRpbWUuZGF0ZXRpbWUoMSwgMSwgMSwgMCwgMCwgZm9sZD0xKScpCisKKyAgICBkZWYgdGVzdF9kc3Qoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgZHRfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgZHRfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAyLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLmRzdCgpLCBIT1VSKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3dpbnRlci5kc3QoKSwgWkVSTykKKyAgICAgICAgIyBUaGUgZGlzYW1iaWd1YXRpb24gZmxhZyBpcyBpZ25vcmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnJlcGxhY2UoZm9sZD0xKS5kc3QoKSwgSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBaRVJPKQorCisgICAgICAgICMgUGljayBsb2NhbCB0aW1lIGluIHRoZSBmb2xkLgorICAgICAgICBmb3IgbWludXRlIGluIFswLCAzMCwgNTldOgorICAgICAgICAgICAgZHQgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIG1pbnV0ZSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MCAodGhlIGRlZmF1bHQpIGl0IGlzIGluIERTVC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZHN0KCksIEhPVVIpCisgICAgICAgICAgICAjIFdpdGggZm9sZD0xIGl0IGlzIGluIFNURC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBaRVJPKQorCisgICAgICAgICMgUGljayBsb2NhbCB0aW1lIGluIHRoZSBnYXAuCisgICAgICAgIGZvciBtaW51dGUgaW4gWzAsIDMwLCA1OV06CisgICAgICAgICAgICBkdCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIG1pbnV0ZSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICAgICAgIyBXaXRoIGZvbGQ9MCAodGhlIGRlZmF1bHQpIGl0IGlzIGluIFNURC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuZHN0KCksIFpFUk8pCisgICAgICAgICAgICAjIFdpdGggZm9sZD0xIGl0IGlzIGluIERTVC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQucmVwbGFjZShmb2xkPTEpLmRzdCgpLCBIT1VSKQorCisKKyAgICBkZWYgdGVzdF91dGNvZmZzZXQoc2VsZik6CisgICAgICAgICMgTGV0J3MgZmlyc3QgZXN0YWJsaXNoIHRoYXQgdGhpbmdzIHdvcmsgaW4gcmVndWxhciB0aW1lcy4KKyAgICAgICAgZHRfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgZHRfd2ludGVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAyLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfc3VtbWVyLnV0Y29mZnNldCgpLCAtNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHRfd2ludGVyLnV0Y29mZnNldCgpLCAtNSAqIEhPVVIpCisgICAgICAgICMgVGhlIGRpc2FtYmlndWF0aW9uIGZsYWcgaXMgaWdub3JlZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0X3N1bW1lci5yZXBsYWNlKGZvbGQ9MSkudXRjb2Zmc2V0KCksIC00ICogSE9VUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdF93aW50ZXIucmVwbGFjZShmb2xkPTEpLnV0Y29mZnNldCgpLCAtNSAqIEhPVVIpCisKKyAgICBkZWYgdGVzdF9mcm9tdXRjKHNlbGYpOgorICAgICAgICAjIExldCdzIGZpcnN0IGVzdGFibGlzaCB0aGF0IHRoaW5ncyB3b3JrIGluIHJlZ3VsYXIgdGltZXMuCisgICAgICAgIHVfc3VtbWVyID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCA2LCB0emluZm89RWFzdGVybjIpIC0gdGltZWRlbHRhLnJlc29sdXRpb24KKyAgICAgICAgdV93aW50ZXIgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDcsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9zdW1tZXIgPSBFYXN0ZXJuMi5mcm9tdXRjKHVfc3VtbWVyKQorICAgICAgICB0X3dpbnRlciA9IEVhc3Rlcm4yLmZyb211dGModV93aW50ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF9zdW1tZXIsIHVfc3VtbWVyIC0gNCAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF93aW50ZXIsIHVfd2ludGVyIC0gNSAqIEhPVVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodF9zdW1tZXIuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0X3dpbnRlci5mb2xkLCAwKQorCisgICAgICAgICMgV2hhdCBoYXBwZW5zIGluIHRoZSBmYWxsLWJhY2sgZm9sZD8KKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNSwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdDAgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHUgKz0gSE9VUgorICAgICAgICB0MSA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MCwgdDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDAuZm9sZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MS5mb2xkLCAxKQorICAgICAgICAjIFRoZSB0cmlja3kgcGFydCBpcyB3aGVuIHUgaXMgaW4gdGhlIGxvY2FsIGZvbGQ6CisgICAgICAgIHUgPSBkYXRldGltZSgyMDAyLCAxMCwgMjcsIDEsIDMwLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHQgPSBFYXN0ZXJuMi5mcm9tdXRjKHUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHQuZGF5LCB0LmhvdXIpLCAoMjYsIDIxKSkKKyAgICAgICAgIyAuLiBvciBnZXRzIGludG8gdGhlIGxvY2FsIGZvbGQgYWZ0ZXIgYSBzdGFuZGFyZCB0aW1lIGFkanVzdG1lbnQKKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgNiwgMzAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICgyNywgMSkpCisKKyAgICAgICAgIyBXaGF0IGhhcHBlbnMgaW4gdGhlIHNwcmluZy1mb3J3YXJkIGdhcD8KKyAgICAgICAgdSA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDAsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdCA9IEVhc3Rlcm4yLmZyb211dGModSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodC5kYXksIHQuaG91ciksICg2LCAyMSkpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX3JlZ3VsYXIoc2VsZik6CisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCAxLCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykpCisgICAgICAgIHQgPSBkYXRldGltZSgyMDAwLCA2LCAxLCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX2ZvbGQoc2VsZik6CisgICAgICAgIHRfZm9sZCA9IGRhdGV0aW1lKDIwMDIsIDEwLCAyNywgMSwgNDUsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgdF9mb2xkX3V0YyA9IHRfZm9sZC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0X2ZvbGQsIHRfZm9sZF91dGMpCisKKyAgICBkZWYgdGVzdF9taXhlZF9jb21wYXJlX2dhcChzZWxmKToKKyAgICAgICAgdF9nYXAgPSBkYXRldGltZSgyMDAyLCA0LCA3LCAyLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2dhcF91dGMgPSB0X2dhcC5hc3RpbWV6b25lKHRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0X2dhcCwgdF9nYXBfdXRjKQorCisgICAgZGVmIHRlc3RfaGFzaF9hd2FyZShzZWxmKToKKyAgICAgICAgdCA9IGRhdGV0aW1lKDIwMDAsIDEsIDEsIHR6aW5mbz1FYXN0ZXJuMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHQpLCBoYXNoKHQucmVwbGFjZShmb2xkPTEpKSkKKyAgICAgICAgdF9mb2xkID0gZGF0ZXRpbWUoMjAwMiwgMTAsIDI3LCAxLCA0NSwgdHppbmZvPUVhc3Rlcm4yKQorICAgICAgICB0X2dhcCA9IGRhdGV0aW1lKDIwMDIsIDQsIDcsIDIsIDQ1LCB0emluZm89RWFzdGVybjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaCh0X2ZvbGQpLCBoYXNoKHRfZm9sZC5yZXBsYWNlKGZvbGQ9MSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2godF9nYXApLCBoYXNoKHRfZ2FwLnJlcGxhY2UoZm9sZD0xKSkpCisKK1NFQyA9IHRpbWVkZWx0YSgwLCAxKQorCitkZWYgcGFpcnMoaXRlcmFibGUpOgorICAgIGEsIGIgPSBpdGVydG9vbHMudGVlKGl0ZXJhYmxlKQorICAgIG5leHQoYiwgTm9uZSkKKyAgICByZXR1cm4gemlwKGEsIGIpCisKK2NsYXNzIFpvbmVJbmZvKHR6aW5mbyk6CisgICAgem9uZXJvb3QgPSAnL3Vzci9zaGFyZS96b25laW5mbycKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXQsIHRpKToKKyAgICAgICAgIiIiCisKKyAgICAgICAgOnBhcmFtIHV0OiBhcnJheQorICAgICAgICAgICAgQXJyYXkgb2YgdHJhbnNpdGlvbiBwb2ludCB0aW1lc3RhbXBzCisgICAgICAgIDpwYXJhbSB0aTogbGlzdAorICAgICAgICAgICAgQSBsaXN0IG9mIChvZmZzZXQsIGlzZHN0LCBhYmJyKSB0dXBsZXMKKyAgICAgICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi51dCA9IHV0CisgICAgICAgIHNlbGYudGkgPSB0aQorICAgICAgICBzZWxmLmx0ID0gc2VsZi5pbnZlcnQodXQsIHRpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBpbnZlcnQodXQsIHRpKToKKyAgICAgICAgbHQgPSAoYXJyYXkoJ3EnLCB1dCksIGFycmF5KCdxJywgdXQpKQorICAgICAgICBpZiB1dDoKKyAgICAgICAgICAgIG9mZnNldCA9IHRpWzBdWzBdIC8vIFNFQworICAgICAgICAgICAgbHRbMF1bMF0gKz0gb2Zmc2V0CisgICAgICAgICAgICBsdFsxXVswXSArPSBvZmZzZXQKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbih1dCkpOgorICAgICAgICAgICAgICAgIGx0WzBdW2ldICs9IHRpW2ktMV1bMF0gLy8gU0VDCisgICAgICAgICAgICAgICAgbHRbMV1baV0gKz0gdGlbaV1bMF0gLy8gU0VDCisgICAgICAgIHJldHVybiBsdAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZyb21maWxlKGNscywgZmlsZW9iaik6CisgICAgICAgIGlmIGZpbGVvYmoucmVhZCg0KS5kZWNvZGUoKSAhPSAiVFppZiI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSB6b25laW5mbyBmaWxlIikKKyAgICAgICAgZmlsZW9iai5zZWVrKDMyKQorICAgICAgICBjb3VudHMgPSBhcnJheSgnaScpCisgICAgICAgIGNvdW50cy5mcm9tZmlsZShmaWxlb2JqLCAzKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgY291bnRzLmJ5dGVzd2FwKCkKKworICAgICAgICB1dCA9IGFycmF5KCdpJykKKyAgICAgICAgdXQuZnJvbWZpbGUoZmlsZW9iaiwgY291bnRzWzBdKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyICE9ICdiaWcnOgorICAgICAgICAgICAgdXQuYnl0ZXN3YXAoKQorCisgICAgICAgIHR5cGVfaW5kaWNlcyA9IGFycmF5KCdCJykKKyAgICAgICAgdHlwZV9pbmRpY2VzLmZyb21maWxlKGZpbGVvYmosIGNvdW50c1swXSkKKworICAgICAgICB0dGlzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoY291bnRzWzFdKToKKyAgICAgICAgICAgIHR0aXMuYXBwZW5kKHN0cnVjdC51bnBhY2soIj5sYmIiLCBmaWxlb2JqLnJlYWQoNikpKQorCisgICAgICAgIGFiYnJzID0gZmlsZW9iai5yZWFkKGNvdW50c1syXSkKKworICAgICAgICAjIENvbnZlcnQgdHRpcworICAgICAgICBmb3IgaSwgKGdtdG9mZiwgaXNkc3QsIGFiYnJpbmQpIGluIGVudW1lcmF0ZSh0dGlzKToKKyAgICAgICAgICAgIGFiYnIgPSBhYmJyc1thYmJyaW5kOmFiYnJzLmZpbmQoMCwgYWJicmluZCldLmRlY29kZSgpCisgICAgICAgICAgICB0dGlzW2ldID0gKHRpbWVkZWx0YSgwLCBnbXRvZmYpLCBpc2RzdCwgYWJicikKKworICAgICAgICB0aSA9IFtOb25lXSAqIGxlbih1dCkKKyAgICAgICAgZm9yIGksIGlkeCBpbiBlbnVtZXJhdGUodHlwZV9pbmRpY2VzKToKKyAgICAgICAgICAgIHRpW2ldID0gdHRpc1tpZHhdCisKKyAgICAgICAgc2VsZiA9IGNscyh1dCwgdGkpCisKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tbmFtZShjbHMsIG5hbWUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGNscy56b25lcm9vdCwgbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gY2xzLmZyb21maWxlKGYpCisKKyAgICBFUE9DSE9SRElOQUwgPSBkYXRlKDE5NzAsIDEsIDEpLnRvb3JkaW5hbCgpCisKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgICIiImRhdGV0aW1lIGluIFVUQyAtPiBkYXRldGltZSBpbiBsb2NhbCB0aW1lLiIiIgorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGR0LCBkYXRldGltZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZyb211dGMoKSByZXF1aXJlcyBhIGRhdGV0aW1lIGFyZ3VtZW50IikKKyAgICAgICAgaWYgZHQudHppbmZvIGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHQudHppbmZvIGlzIG5vdCBzZWxmIikKKworICAgICAgICB0aW1lc3RhbXAgPSAoKGR0LnRvb3JkaW5hbCgpIC0gc2VsZi5FUE9DSE9SRElOQUwpICogODY0MDAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQuaG91ciAqIDM2MDAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQubWludXRlICogNjAKKyAgICAgICAgICAgICAgICAgICAgICsgZHQuc2Vjb25kKQorCisgICAgICAgIGlmIHRpbWVzdGFtcCA8IHNlbGYudXRbMV06CisgICAgICAgICAgICB0dGkgPSBzZWxmLnRpWzBdCisgICAgICAgICAgICBmb2xkID0gMAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWR4ID0gYmlzZWN0LmJpc2VjdF9yaWdodChzZWxmLnV0LCB0aW1lc3RhbXApCisgICAgICAgICAgICBhc3NlcnQgc2VsZi51dFtpZHgtMV0gPD0gdGltZXN0YW1wCisgICAgICAgICAgICBhc3NlcnQgaWR4ID09IGxlbihzZWxmLnV0KSBvciB0aW1lc3RhbXAgPCBzZWxmLnV0W2lkeF0KKyAgICAgICAgICAgIHR0aV9wcmV2LCB0dGkgPSBzZWxmLnRpW2lkeC0yOmlkeF0KKyAgICAgICAgICAgICMgRGV0ZWN0IGZvbGQKKyAgICAgICAgICAgIHNoaWZ0ID0gdHRpX3ByZXZbMF0gLSB0dGlbMF0KKyAgICAgICAgICAgIGZvbGQgPSAoc2hpZnQgPiB0aW1lZGVsdGEoMCwgdGltZXN0YW1wIC0gc2VsZi51dFtpZHgtMV0pKQorICAgICAgICBkdCArPSB0dGlbMF0KKyAgICAgICAgaWYgZm9sZDoKKyAgICAgICAgICAgIHJldHVybiBkdC5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBkdAorCisgICAgZGVmIF9maW5kX3RpKHNlbGYsIGR0LCBpKToKKyAgICAgICAgdGltZXN0YW1wID0gKChkdC50b29yZGluYWwoKSAtIHNlbGYuRVBPQ0hPUkRJTkFMKSAqIDg2NDAwCisgICAgICAgICAgICAgKyBkdC5ob3VyICogMzYwMAorICAgICAgICAgICAgICsgZHQubWludXRlICogNjAKKyAgICAgICAgICAgICArIGR0LnNlY29uZCkKKyAgICAgICAgbHQgPSBzZWxmLmx0W2R0LmZvbGRdCisgICAgICAgIGlkeCA9IGJpc2VjdC5iaXNlY3RfcmlnaHQobHQsIHRpbWVzdGFtcCkKKworICAgICAgICByZXR1cm4gc2VsZi50aVttYXgoMCwgaWR4IC0gMSldW2ldCisKKyAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfdGkoZHQsIDApCisKKyAgICBkZWYgZHN0KHNlbGYsIGR0KToKKyAgICAgICAgaXNkc3QgPSBzZWxmLl9maW5kX3RpKGR0LCAxKQorICAgICAgICAjIFhYWDogV2UgY2Fubm90IGFjY3VyYXRlbHkgZGV0ZXJtaW5lIHRoZSAic2F2ZSIgdmFsdWUsCisgICAgICAgICMgc28gbGV0J3MgcmV0dXJuIDFoIHdoZW5ldmVyIERTVCBpcyBpbiBlZmZlY3QuICBTaW5jZQorICAgICAgICAjIHdlIGRvbid0IHVzZSBkc3QoKSBpbiBmcm9tdXRjKCksIGl0IGlzIHVubGlrZWx5IHRoYXQKKyAgICAgICAgIyBpdCB3aWxsIGJlIG5lZWRlZCBmb3IgYW55dGhpbmcgbW9yZSB0aGFuIGJvb2woZHN0KCkpLgorICAgICAgICByZXR1cm4gWkVSTyBpZiBpc2RzdCBlbHNlIEhPVVIKKworICAgIGRlZiB0em5hbWUoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmluZF90aShkdCwgMikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB6b25lbmFtZXMoY2xzLCB6b25lZGlyPU5vbmUpOgorICAgICAgICBpZiB6b25lZGlyIGlzIE5vbmU6CisgICAgICAgICAgICB6b25lZGlyID0gY2xzLnpvbmVyb290CisgICAgICAgIHpvbmVfdGFiID0gb3MucGF0aC5qb2luKHpvbmVkaXIsICd6b25lLnRhYicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBvcGVuKHpvbmVfdGFiKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB3aXRoIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUuc3BsaXQoKVsyXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHN0YXRzKGNscywgc3RhcnRfeWVhcj0xKToKKyAgICAgICAgY291bnQgPSBnYXBfY291bnQgPSBmb2xkX2NvdW50ID0gemVyb3NfY291bnQgPSAwCisgICAgICAgIG1pbl9nYXAgPSBtaW5fZm9sZCA9IHRpbWVkZWx0YS5tYXgKKyAgICAgICAgbWF4X2dhcCA9IG1heF9mb2xkID0gWkVSTworICAgICAgICBtaW5fZ2FwX2RhdGV0aW1lID0gbWF4X2dhcF9kYXRldGltZSA9IGRhdGV0aW1lLm1pbgorICAgICAgICBtaW5fZ2FwX3pvbmUgPSBtYXhfZ2FwX3pvbmUgPSBOb25lCisgICAgICAgIG1pbl9mb2xkX2RhdGV0aW1lID0gbWF4X2ZvbGRfZGF0ZXRpbWUgPSBkYXRldGltZS5taW4KKyAgICAgICAgbWluX2ZvbGRfem9uZSA9IG1heF9mb2xkX3pvbmUgPSBOb25lCisgICAgICAgIHN0YXRzX3NpbmNlID0gZGF0ZXRpbWUoc3RhcnRfeWVhciwgMSwgMSkgIyBTdGFydGluZyBmcm9tIDE5NzAgZWxpbWluYXRlcyBhIGxvdCBvZiBub2lzZQorICAgICAgICBmb3Igem9uZW5hbWUgaW4gY2xzLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgdHogPSBjbHMuZnJvbW5hbWUoem9uZW5hbWUpCisgICAgICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICAgICAgaWYgZHQgPCBzdGF0c19zaW5jZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBzaGlmdCA+IFpFUk86CisgICAgICAgICAgICAgICAgICAgIGdhcF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZHQpID4gKG1heF9nYXAsIG1heF9nYXBfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2FwX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2dhcF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZGF0ZXRpbWUubWF4IC0gZHQpIDwgKG1pbl9nYXAsIGRhdGV0aW1lLm1heCAtIG1pbl9nYXBfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZ2FwX3pvbmUgPSB6b25lbmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgbWluX2dhcF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgZWxpZiBzaGlmdCA8IFpFUk86CisgICAgICAgICAgICAgICAgICAgIGZvbGRfY291bnQgKz0gMQorICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IC1zaGlmdAorICAgICAgICAgICAgICAgICAgICBpZiAoc2hpZnQsIGR0KSA+IChtYXhfZm9sZCwgbWF4X2ZvbGRfZGF0ZXRpbWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGQgPSBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2ZvbGRfem9uZSA9IHpvbmVuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZm9sZF9kYXRldGltZSA9IGR0CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCwgZGF0ZXRpbWUubWF4IC0gZHQpIDwgKG1pbl9mb2xkLCBkYXRldGltZS5tYXggLSBtaW5fZm9sZF9kYXRldGltZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZCA9IHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgICBtaW5fZm9sZF96b25lID0gem9uZW5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9mb2xkX2RhdGV0aW1lID0gZHQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB6ZXJvc19jb3VudCArPSAxCisgICAgICAgIHRyYW5zX2NvdW50cyA9IChnYXBfY291bnQsIGZvbGRfY291bnQsIHplcm9zX2NvdW50KQorICAgICAgICBwcmludCgiTnVtYmVyIG9mIHpvbmVzOiAgICAgICAlNWQiICUgY291bnQpCisgICAgICAgIHByaW50KCJOdW1iZXIgb2YgdHJhbnNpdGlvbnM6ICU1ZCA9ICVkIChnYXBzKSArICVkIChmb2xkcykgKyAlZCAoemVyb3MpIiAlCisgICAgICAgICAgICAgICgoc3VtKHRyYW5zX2NvdW50cyksKSArIHRyYW5zX2NvdW50cykpCisgICAgICAgIHByaW50KCJNaW4gZ2FwOiAgICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1pbl9nYXAsIG1pbl9nYXBfZGF0ZXRpbWUsIG1pbl9nYXBfem9uZSkpCisgICAgICAgIHByaW50KCJNYXggZ2FwOiAgICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1heF9nYXAsIG1heF9nYXBfZGF0ZXRpbWUsIG1heF9nYXBfem9uZSkpCisgICAgICAgIHByaW50KCJNaW4gZm9sZDogICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1pbl9mb2xkLCBtaW5fZm9sZF9kYXRldGltZSwgbWluX2ZvbGRfem9uZSkpCisgICAgICAgIHByaW50KCJNYXggZm9sZDogICAgICAgICUxNnMgYXQgJXMgaW4gJXMiICUgKG1heF9mb2xkLCBtYXhfZm9sZF9kYXRldGltZSwgbWF4X2ZvbGRfem9uZSkpCisKKworICAgIGRlZiB0cmFuc2l0aW9ucyhzZWxmKToKKyAgICAgICAgZm9yIChfLCBwcmV2X3RpKSwgKHQsIHRpKSBpbiBwYWlycyh6aXAoc2VsZi51dCwgc2VsZi50aSkpOgorICAgICAgICAgICAgc2hpZnQgPSB0aVswXSAtIHByZXZfdGlbMF0KKyAgICAgICAgICAgIHlpZWxkIGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodCksIHNoaWZ0CisKKyAgICBkZWYgbm9uZHN0X2ZvbGRzKHNlbGYpOgorICAgICAgICAiIiJGaW5kIGFsbCBmb2xkcyB3aXRoIHRoZSBzYW1lIHZhbHVlIG9mIGlzZHN0IG9uIGJvdGggc2lkZXMgb2YgdGhlIHRyYW5zaXRpb24uIiIiCisgICAgICAgIGZvciAoXywgcHJldl90aSksICh0LCB0aSkgaW4gcGFpcnMoemlwKHNlbGYudXQsIHNlbGYudGkpKToKKyAgICAgICAgICAgIHNoaWZ0ID0gdGlbMF0gLSBwcmV2X3RpWzBdCisgICAgICAgICAgICBpZiBzaGlmdCA8IFpFUk8gYW5kIHRpWzFdID09IHByZXZfdGlbMV06CisgICAgICAgICAgICAgICAgeWllbGQgZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0KSwgLXNoaWZ0LCBwcmV2X3RpWzJdLCB0aVsyXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHByaW50X2FsbF9ub25kc3RfZm9sZHMoY2xzLCBzYW1lX2FiYnI9RmFsc2UsIHN0YXJ0X3llYXI9MSk6CisgICAgICAgIGNvdW50ID0gMAorICAgICAgICBmb3Igem9uZW5hbWUgaW4gY2xzLnpvbmVuYW1lcygpOgorICAgICAgICAgICAgdHogPSBjbHMuZnJvbW5hbWUoem9uZW5hbWUpCisgICAgICAgICAgICBmb3IgZHQsIHNoaWZ0LCBwcmV2X2FiYnIsIGFiYnIgaW4gdHoubm9uZHN0X2ZvbGRzKCk6CisgICAgICAgICAgICAgICAgaWYgZHQueWVhciA8IHN0YXJ0X3llYXIgb3Igc2FtZV9hYmJyIGFuZCBwcmV2X2FiYnIgIT0gYWJicjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICAgICAgcHJpbnQoIiUzZCkgJS0zMHMgJXMgJTEwcyAlNXMgLT4gJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAoY291bnQsIHpvbmVuYW1lLCBkdCwgc2hpZnQsIHByZXZfYWJiciwgYWJicikpCisKKyAgICBkZWYgZm9sZHMoc2VsZik6CisgICAgICAgIGZvciB0LCBzaGlmdCBpbiBzZWxmLnRyYW5zaXRpb25zKCk6CisgICAgICAgICAgICBpZiBzaGlmdCA8IFpFUk86CisgICAgICAgICAgICAgICAgeWllbGQgdCwgLXNoaWZ0CisKKyAgICBkZWYgZ2FwcyhzZWxmKToKKyAgICAgICAgZm9yIHQsIHNoaWZ0IGluIHNlbGYudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgIGlmIHNoaWZ0ID4gWkVSTzoKKyAgICAgICAgICAgICAgICB5aWVsZCB0LCBzaGlmdAorCisgICAgZGVmIHplcm9zKHNlbGYpOgorICAgICAgICBmb3IgdCwgc2hpZnQgaW4gc2VsZi50cmFuc2l0aW9ucygpOgorICAgICAgICAgICAgaWYgbm90IHNoaWZ0OgorICAgICAgICAgICAgICAgIHlpZWxkIHQKKworCitjbGFzcyBab25lSW5mb1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHpvbmVuYW1lID0gJ0FtZXJpY2EvTmV3X1lvcmsnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgem9uZWluZm8gdGVzdHMgb24gV2luZG93cyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYudHogPSBab25lSW5mby5mcm9tbmFtZShzZWxmLnpvbmVuYW1lKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgJXM6ICVzIiAlIChzZWxmLnpvbmVuYW1lLCBlcnIpKQorCisgICAgZGVmIGFzc2VydEVxdWl2RGF0ZXRpbWVzKHNlbGYsIGEsIGIpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhLnJlcGxhY2UodHppbmZvPU5vbmUpLCBhLmZvbGQsIGlkKGEudHppbmZvKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKGIucmVwbGFjZSh0emluZm89Tm9uZSksIGIuZm9sZCwgaWQoYi50emluZm8pKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRzKHNlbGYpOgorICAgICAgICB0eiA9IHNlbGYudHoKKyAgICAgICAgZm9yIGR0LCBzaGlmdCBpbiB0ei5mb2xkcygpOgorICAgICAgICAgICAgZm9yIHggaW4gWzAgKiBzaGlmdCwgMC41ICogc2hpZnQsIHNoaWZ0IC0gdGltZWRlbHRhLnJlc29sdXRpb25dOgorICAgICAgICAgICAgICAgIHVkdCA9IGR0ICsgeAorICAgICAgICAgICAgICAgIGxkdCA9IHR6LmZyb211dGModWR0LnJlcGxhY2UodHppbmZvPXR6KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5mb2xkLCAxKQorICAgICAgICAgICAgICAgIGFkdCA9IHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpLmFzdGltZXpvbmUodHopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhhZHQsIGxkdCkKKyAgICAgICAgICAgICAgICB1dGNvZmZzZXQgPSBsZHQudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSwgdWR0ICsgdXRjb2Zmc2V0KQorICAgICAgICAgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMobGR0LmFzdGltZXpvbmUodGltZXpvbmUudXRjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkdC5yZXBsYWNlKHR6aW5mbz10aW1lem9uZS51dGMpKQorCisKKyAgICAgICAgICAgIGZvciB4IGluIFstdGltZWRlbHRhLnJlc29sdXRpb24sIHNoaWZ0XToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICB1ZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dHopCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKworICAgIGRlZiB0ZXN0X2dhcHMoc2VsZik6CisgICAgICAgIHR6ID0gc2VsZi50egorICAgICAgICBmb3IgZHQsIHNoaWZ0IGluIHR6LmdhcHMoKToKKyAgICAgICAgICAgIGZvciB4IGluIFswICogc2hpZnQsIDAuNSAqIHNoaWZ0LCBzaGlmdCAtIHRpbWVkZWx0YS5yZXNvbHV0aW9uXToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICB1ZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dHopCisgICAgICAgICAgICAgICAgbGR0ID0gdHouZnJvbXV0Yyh1ZHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKyAgICAgICAgICAgICAgICBhZHQgPSB1ZHQucmVwbGFjZSh0emluZm89dGltZXpvbmUudXRjKS5hc3RpbWV6b25lKHR6KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1aXZEYXRldGltZXMoYWR0LCBsZHQpCisgICAgICAgICAgICAgICAgdXRjb2Zmc2V0ID0gbGR0LnV0Y29mZnNldCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQucmVwbGFjZSh0emluZm89Tm9uZSksIHVkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSArIHV0Y29mZnNldCkKKyAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIGxvY2FsIHRpbWUgaW5zaWRlIHRoZSBnYXAKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKGR0LnJlcGxhY2UodHppbmZvPXR6KSkgLSBzaGlmdCArIHgKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGR0LnJlcGxhY2UoZm9sZD0xKS51dGNvZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGR0LnJlcGxhY2UoZm9sZD0wKS51dGNvZmZzZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0ICVzLiIgJSBsZHQpCisKKyAgICAgICAgICAgIGZvciB4IGluIFstdGltZWRlbHRhLnJlc29sdXRpb24sIHNoaWZ0XToKKyAgICAgICAgICAgICAgICB1ZHQgPSBkdCArIHgKKyAgICAgICAgICAgICAgICBsZHQgPSB0ei5mcm9tdXRjKHVkdC5yZXBsYWNlKHR6aW5mbz10eikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZHQuZm9sZCwgMCkKKworICAgIGRlZiB0ZXN0X3N5c3RlbV90cmFuc2l0aW9ucyhzZWxmKToKKyAgICAgICAgaWYgKCdSaXlhZGg4JyBpbiBzZWxmLnpvbmVuYW1lIG9yCisgICAgICAgICAgICAjIEZyb20gdHpkYXRhIE5FV1MgZmlsZToKKyAgICAgICAgICAgICMgVGhlIGZpbGVzIHNvbGFyODcsIHNvbGFyODgsIGFuZCBzb2xhcjg5IGFyZSBubyBsb25nZXIgZGlzdHJpYnV0ZWQuCisgICAgICAgICAgICAjIFRoZXkgd2VyZSBhIG5lZ2F0aXZlIGV4cGVyaW1lbnQgLSB0aGF0IGlzLCBhIGRlbW9uc3RyYXRpb24gdGhhdAorICAgICAgICAgICAgIyB0eiBkYXRhIGNhbiByZXByZXNlbnQgc29sYXIgdGltZSBvbmx5IHdpdGggc29tZSBkaWZmaWN1bHR5IGFuZCBlcnJvci4KKyAgICAgICAgICAgICMgVGhlaXIgcHJlc2VuY2UgaW4gdGhlIGRpc3RyaWJ1dGlvbiBjYXVzZWQgY29uZnVzaW9uLCBhcyBSaXlhZGgKKyAgICAgICAgICAgICMgY2l2aWwgdGltZSB3YXMgZ2VuZXJhbGx5IG5vdCBzb2xhciB0aW1lIGluIHRob3NlIHllYXJzLgorICAgICAgICAgICAgICAgIHNlbGYuem9uZW5hbWUuc3RhcnRzd2l0aCgncmlnaHQvJykpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU2tpcHBpbmcgJXMiICUgc2VsZi56b25lbmFtZSkKKyAgICAgICAgdHogPSBzZWxmLnR6CisgICAgICAgIFRaID0gb3MuZW52aXJvbi5nZXQoJ1RaJykKKyAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IHNlbGYuem9uZW5hbWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgX3RpbWUudHpzZXQoKQorICAgICAgICAgICAgZm9yIHVkdCwgc2hpZnQgaW4gdHoudHJhbnNpdGlvbnMoKToKKyAgICAgICAgICAgICAgICBpZiB1ZHQueWVhciA+PSAyMDM3OgorICAgICAgICAgICAgICAgICAgICAjIFN5c3RlbSBzdXBwb3J0IGZvciB0aW1lcyBhcm91bmQgdGhlIGVuZCBvZiAzMi1iaXQgdGltZV90CisgICAgICAgICAgICAgICAgICAgICMgYW5kIGxhdGVyIGlzIGZsYWt5IG9uIG1hbnkgc3lzdGVtcy4KKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzMCA9ICh1ZHQgLSBkYXRldGltZSgxOTcwLCAxLCAxKSkgLy8gU0VDCisgICAgICAgICAgICAgICAgc3MgPSBzaGlmdCAvLyBTRUMgICAjIHNoaWZ0IHNlY29uZHMKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiBbLTQwICogMzYwMCwgLTIwKjM2MDAsIC0xLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzcyAtIDEsIHNzICsgMjAgKiAzNjAwLCBzcyArIDQwICogMzYwMF06CisgICAgICAgICAgICAgICAgICAgIHMgPSBzMCArIHgKKyAgICAgICAgICAgICAgICAgICAgc2R0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzKQorICAgICAgICAgICAgICAgICAgICB0emR0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChzLCB0eikucmVwbGFjZSh0emluZm89Tm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVpdkRhdGV0aW1lcyhzZHQsIHR6ZHQpCisgICAgICAgICAgICAgICAgICAgIHMxID0gc2R0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgczEpCisgICAgICAgICAgICAgICAgaWYgc3MgPiAwOiAgIyBnYXAKKyAgICAgICAgICAgICAgICAgICAgIyBDcmVhdGUgbG9jYWwgdGltZSBpbnNpZGUgdGhlIGdhcAorICAgICAgICAgICAgICAgICAgICBkdCA9IGRhdGV0aW1lLmZyb210aW1lc3RhbXAoczApIC0gc2hpZnQgLyAyCisgICAgICAgICAgICAgICAgICAgIHRzMCA9IGR0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICAgICAgICAgIHRzMSA9IGR0LnJlcGxhY2UoZm9sZD0xKS50aW1lc3RhbXAoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRzMCwgczAgKyBzcyAvIDIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHMxLCBzMCAtIHNzIC8gMikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIFRaIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1RaJ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IFRaCisgICAgICAgICAgICBfdGltZS50enNldCgpCisKKworY2xhc3MgWm9uZUluZm9Db21wbGV0ZVRlc3QodW5pdHRlc3QuVGVzdFN1aXRlKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHRlc3RzID0gW10KKyAgICAgICAgaWYgaXNfcmVzb3VyY2VfZW5hYmxlZCgndHpkYXRhJyk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBab25lSW5mby56b25lbmFtZXMoKToKKyAgICAgICAgICAgICAgICBUZXN0ID0gdHlwZSgnWm9uZUluZm9UZXN0WyVzXScgJSBuYW1lLCAoWm9uZUluZm9UZXN0LCksIHt9KQorICAgICAgICAgICAgICAgIFRlc3Quem9uZW5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiBkaXIoVGVzdCk6CisgICAgICAgICAgICAgICAgICAgIGlmIG1ldGhvZC5zdGFydHN3aXRoKCd0ZXN0XycpOgorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMuYXBwZW5kKFRlc3QobWV0aG9kKSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyh0ZXN0cykKKworIyBJcmFuIGhhZCBhIHN1Yi1taW51dGUgVVRDIG9mZnNldCBiZWZvcmUgMTk0Ni4KK2NsYXNzIElyYW5UZXN0KFpvbmVJbmZvVGVzdCk6CisgICAgem9uZW5hbWUgPSAnQXNpYS9UZWhyYW4nCisKK2RlZiBsb2FkX3Rlc3RzKGxvYWRlciwgc3RhbmRhcmRfdGVzdHMsIHBhdHRlcm4pOgorICAgIHN0YW5kYXJkX3Rlc3RzLmFkZFRlc3QoWm9uZUluZm9Db21wbGV0ZVRlc3QoKSkKKyAgICByZXR1cm4gc3RhbmRhcmRfdGVzdHMKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjJkNGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLmQKQEAgLTAsMCArMSw1IEBACitCRUdJTgoreworICAgIHByaW50ZigicHJvYmU6IHN1Y2Nlc3NcbiIpOworICAgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2Fzc2VydF91c2FibGUuc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGU3ZTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9hc3NlcnRfdXNhYmxlLnN0cApAQCAtMCwwICsxLDUgQEAKK3Byb2JlIGJlZ2luCit7CisgIHByaW50bG4oInByb2JlOiBzdWNjZXNzIikKKyAgZXhpdCAoKQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTBlOTM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQKQEAgLTAsMCArMSwzMSBAQAorc2VsZiBpbnQgaW5kZW50OworCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tZW50cnkKKy9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KK3sKKyAgICBzZWxmLT50cmFjZSA9IDE7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorL3NlbGYtPnRyYWNlLworeworICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgIHByaW50ZigiJSpzIiwgc2VsZi0+aW5kZW50LCAiIik7IAorICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgc2VsZi0+aW5kZW50Kys7Cit9CisKK3B5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1yZXR1cm4KKy9zZWxmLT50cmFjZS8KK3sKKyAgICBzZWxmLT5pbmRlbnQtLTsKKyAgICBwcmludGYoIiVkXHQlKnM6IiwgdGltZXN0YW1wLCAxNSwgcHJvYmVuYW1lKTsKKyAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOyAKKyAgICBwcmludGYoIiVzOiVzOiVkXG4iLCBiYXNlbmFtZShjb3B5aW5zdHIoYXJnMCkpLCBjb3B5aW5zdHIoYXJnMSksIGFyZzIpOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suZC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzg0OWQxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSwxOCBAQAorIGZ1bmN0aW9uLWVudHJ5OmNhbGxfc3RhY2sucHk6c3RhcnQ6MjMKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8yOjUKKyBmdW5jdGlvbi1lbnRyeTogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCisgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uLXJldHVybjogICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKK2Z1bmN0aW9uLXJldHVybjogIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzo5CitmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKK2Z1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjE0CisgZnVuY3Rpb24tZW50cnk6IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2Z1bmN0aW9uLXJldHVybjpjYWxsX3N0YWNrLnB5OnN0YXJ0OjI4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU5ZjNhZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5weQpAQCAtMCwwICsxLDMwIEBACitkZWYgZnVuY3Rpb25fMSgpOgorICAgIGZ1bmN0aW9uXzMoMSwgMikKKworIyBDaGVjayBzdGFja3RyYWNlCitkZWYgZnVuY3Rpb25fMigpOgorICAgIGZ1bmN0aW9uXzEoKQorCisjIENBTExfRlVOQ1RJT05fVkFSCitkZWYgZnVuY3Rpb25fMyhkdW1teSwgZHVtbXkyKToKKyAgICBwYXNzCisKKyMgQ0FMTF9GVU5DVElPTl9LVworZGVmIGZ1bmN0aW9uXzQoKipkdW1teSk6CisgICAgcmV0dXJuIDEKKyAgICByZXR1cm4gMiAgIyB1bnJlYWNoYWJsZQorCisjIENBTExfRlVOQ1RJT05fVkFSX0tXCitkZWYgZnVuY3Rpb25fNShkdW1teSwgZHVtbXkyLCAqKmR1bW15Myk6CisgICAgaWYgRmFsc2U6CisgICAgICAgIHJldHVybiA3CisgICAgcmV0dXJuIDgKKworZGVmIHN0YXJ0KCk6CisgICAgZnVuY3Rpb25fMSgpCisgICAgZnVuY3Rpb25fMigpCisgICAgZnVuY3Rpb25fMygxLCAyKQorICAgIGZ1bmN0aW9uXzQodGVzdD00MikKKyAgICBmdW5jdGlvbl81KCooMSwgMiksICoqeyJ0ZXN0IjogNDJ9KQorCitzdGFydCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDA4MmMyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9jYWxsX3N0YWNrLnN0cApAQCAtMCwwICsxLDQxIEBACitnbG9iYWwgdHJhY2luZworCitmdW5jdGlvbiBiYXNlbmFtZTpzdHJpbmcocGF0aDpzdHJpbmcpCit7CisgICAgbGFzdF90b2tlbiA9IHRva2VuID0gdG9rZW5pemUocGF0aCwgIi8iKTsKKyAgICB3aGlsZSAodG9rZW4gIT0gIiIpIHsKKyAgICAgICAgbGFzdF90b2tlbiA9IHRva2VuOworICAgICAgICB0b2tlbiA9IHRva2VuaXplKCIiLCAiLyIpOworICAgIH0KKyAgICByZXR1cm4gbGFzdF90b2tlbjsKK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDE7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpLCBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZpbGVuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzEpOworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgIGxpbmVubyA9ICRhcmczOworCisgICAgaWYgKHRyYWNpbmcpIHsKKyAgICAgICAgcHJpbnRmKCIlZFx0JXM6JXM6JXM6JWRcbiIsIGdldHRpbWVvZmRheV91cygpLCAkJG5hbWUsCisgICAgICAgICAgICAgICBiYXNlbmFtZShmaWxlbmFtZSksIGZ1bmNuYW1lLCBsaW5lbm8pOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJmdW5jdGlvbl9fcmV0dXJuIikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAwOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvY2FsbF9zdGFjay5zdHAuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyY2YzOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2NhbGxfc3RhY2suc3RwLmV4cGVjdGVkCkBAIC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKK2Z1bmN0aW9uX19lbnRyeTpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToxCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMToyCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCitmdW5jdGlvbl9fZW50cnk6Y2FsbF9zdGFjay5weTpmdW5jdGlvbl80OjEzCitmdW5jdGlvbl9fcmV0dXJuOmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNDoxNAorZnVuY3Rpb25fX2VudHJ5OmNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fNToxOAorZnVuY3Rpb25fX3JldHVybjpjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKK2Z1bmN0aW9uX19yZXR1cm46Y2FsbF9zdGFjay5weTpzdGFydDoyOApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkOTE0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQKQEAgLTAsMCArMSwxOCBAQAorcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAxOworfQorCitweXRob24kdGFyZ2V0Ojo6Z2Mtc3RhcnQsCitweXRob24kdGFyZ2V0Ojo6Z2MtZG9uZQorL3NlbGYtPnRyYWNlLworeworICAgIHByaW50ZigiJWRcdCVzOiVsZFxuIiwgdGltZXN0YW1wLCBwcm9iZW5hbWUsIGFyZzApOworfQorCitweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisvY29weWluc3RyKGFyZzEpID09ICJzdGFydCIvCit7CisgICAgc2VsZi0+dHJhY2UgPSAwOworfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5kLmV4cGVjdGVkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNWFjMmEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLmQuZXhwZWN0ZWQKQEAgLTAsMCArMSw4IEBACitnYy1zdGFydDowCitnYy1kb25lOjAKK2djLXN0YXJ0OjEKK2djLWRvbmU6MAorZ2Mtc3RhcnQ6MgorZ2MtZG9uZTowCitnYy1zdGFydDoyCitnYy1kb25lOjEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2MucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NGE3ODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnB5CkBAIC0wLDAgKzEsMTMgQEAKK2ltcG9ydCBnYworCitkZWYgc3RhcnQoKToKKyAgICBnYy5jb2xsZWN0KDApCisgICAgZ2MuY29sbGVjdCgxKQorICAgIGdjLmNvbGxlY3QoMikKKyAgICBsID0gW10KKyAgICBsLmFwcGVuZChsKQorICAgIGRlbCBsCisgICAgZ2MuY29sbGVjdCgyKQorCitnYy5jb2xsZWN0KCkKK3N0YXJ0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyYzZkMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvZ2Muc3RwCkBAIC0wLDAgKzEsMjYgQEAKK2dsb2JhbCB0cmFjaW5nCisKK3Byb2JlIHByb2Nlc3MubWFyaygiZnVuY3Rpb25fX2VudHJ5IikKK3sKKyAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKworICAgIGlmIChmdW5jbmFtZSA9PSAic3RhcnQiKSB7CisgICAgICAgIHRyYWNpbmcgPSAxOworICAgIH0KK30KKworcHJvYmUgcHJvY2Vzcy5tYXJrKCJnY19fc3RhcnQiKSwgcHJvY2Vzcy5tYXJrKCJnY19fZG9uZSIpCit7CisgICAgaWYgKHRyYWNpbmcpIHsKKyAgICAgICAgcHJpbnRmKCIlZFx0JXM6JWxkXG4iLCBnZXR0aW1lb2ZkYXlfdXMoKSwgJCRuYW1lLCAkYXJnMSk7CisgICAgfQorfQorCitwcm9iZSBwcm9jZXNzLm1hcmsoImZ1bmN0aW9uX19yZXR1cm4iKQoreworICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworCisgICAgaWYgKGZ1bmNuYW1lID09ICJzdGFydCIpIHsKKyAgICAgICAgdHJhY2luZyA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2djLnN0cC5leHBlY3RlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTZlNjIyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9nYy5zdHAuZXhwZWN0ZWQKQEAgLTAsMCArMSw4IEBACitnY19fc3RhcnQ6MAorZ2NfX2RvbmU6MAorZ2NfX3N0YXJ0OjEKK2djX19kb25lOjAKK2djX19zdGFydDoyCitnY19fZG9uZTowCitnY19fc3RhcnQ6MgorZ2NfX2RvbmU6MQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZHRyYWNlZGF0YS9pbnN0YW5jZS5weSBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE0MjEzNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvaW5zdGFuY2UucHkKQEAgLTAsMCArMSwyNCBAQAoraW1wb3J0IGdjCisKK2NsYXNzIG9sZF9zdHlsZV9jbGFzcygpOgorICAgIHBhc3MKK2NsYXNzIG5ld19zdHlsZV9jbGFzcyhvYmplY3QpOgorICAgIHBhc3MKKworYSA9IG9sZF9zdHlsZV9jbGFzcygpCitkZWwgYQorZ2MuY29sbGVjdCgpCitiID0gbmV3X3N0eWxlX2NsYXNzKCkKK2RlbCBiCitnYy5jb2xsZWN0KCkKKworYSA9IG9sZF9zdHlsZV9jbGFzcygpCitkZWwgb2xkX3N0eWxlX2NsYXNzCitnYy5jb2xsZWN0KCkKK2IgPSBuZXdfc3R5bGVfY2xhc3MoKQorZGVsIG5ld19zdHlsZV9jbGFzcworZ2MuY29sbGVjdCgpCitkZWwgYQorZ2MuY29sbGVjdCgpCitkZWwgYgorZ2MuY29sbGVjdCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZCBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZjIyZGIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUuZApAQCAtMCwwICsxLDcgQEAKK3B5dGhvbiR0YXJnZXQ6OjpsaW5lCisvKGNvcHlpbnN0cihhcmcxKT09InRlc3RfbGluZSIpLworeworICAgIHByaW50ZigiJWRcdCVzOiVzOiVzOiVkXG4iLCB0aW1lc3RhbXAsCisgICAgICAgIHByb2JlbmFtZSwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwKKyAgICAgICAgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKK30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkIGIvTGliL3Rlc3QvZHRyYWNlZGF0YS9saW5lLmQuZXhwZWN0ZWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIxNmNlNwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5kLmV4cGVjdGVkCkBAIC0wLDAgKzEsMjAgQEAKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6MgorbGluZTpsaW5lLnB5OnRlc3RfbGluZTozCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo2CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjcKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OAorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo5CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEwCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjExCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjQKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6NQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo2CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjcKK2xpbmU6bGluZS5weTp0ZXN0X2xpbmU6OAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMAorbGluZTpsaW5lLnB5OnRlc3RfbGluZToxMQorbGluZTpsaW5lLnB5OnRlc3RfbGluZTo0CitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEyCitsaW5lOmxpbmUucHk6dGVzdF9saW5lOjEzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkgYi9MaWIvdGVzdC9kdHJhY2VkYXRhL2xpbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzMGZmMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2R0cmFjZWRhdGEvbGluZS5weQpAQCAtMCwwICsxLDE3IEBACitkZWYgdGVzdF9saW5lKCk6CisgICAgYSA9IDEKKyAgICBwcmludCgnIyBQcmVhbWJsZScsIGEpCisgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgIGEgPSBpCisgICAgICAgIGIgPSBpKzIKKyAgICAgICAgYyA9IGkrMworICAgICAgICBpZiBjIDwgNDoKKyAgICAgICAgICAgIGEgPSBjCisgICAgICAgIGQgPSBhICsgYiArYworICAgICAgICBwcmludCgnIycsIGEsIGIsIGMsIGQpCisgICAgYSA9IDEKKyAgICBwcmludCgnIyBFcGlsb2d1ZScsIGEpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X2xpbmUoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weSBiL0xpYi90ZXN0L2VpbnRyZGF0YS9laW50cl90ZXN0ZXIucHkKaW5kZXggZTNmMWFhNS4uOWZiZTA0ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZWludHJkYXRhL2VpbnRyX3Rlc3Rlci5weQorKysgYi9MaWIvdGVzdC9laW50cmRhdGEvZWludHJfdGVzdGVyLnB5CkBAIC05LDcgKzksNyBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCi1pbXBvcnQgaW8KK2ltcG9ydCBmYXVsdGhhbmRsZXIKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbApAQCAtNTAsNiArNTAsMTAgQEAKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIGNscy5zaWduYWxfZGVsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNpZ25hbF9wZXJpb2QpCiAKKyAgICAgICAgIyBJc3N1ZSAjMjUyNzc6IFVzZSBmYXVsdGhhbmRsZXIgdG8gdHJ5IHRvIGRlYnVnIGEgaGFuZyBvbiBGcmVlQlNECisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcigxMCAqIDYwLCBleGl0PVRydWUpCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc3RvcF9hbGFybShjbHMpOgogICAgICAgICBzaWduYWwuc2V0aXRpbWVyKHNpZ25hbC5JVElNRVJfUkVBTCwgMCwgMCkKQEAgLTU4LDYgKzYyLDggQEAKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgogICAgICAgICBjbHMuc3RvcF9hbGFybSgpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGNscy5vcmlnX2hhbmRsZXIpCisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKIAogICAgIGRlZiBzdWJwcm9jZXNzKHNlbGYsICphcmdzLCAqKmt3KToKICAgICAgICAgY21kX2FyZ3MgPSAoc3lzLmV4ZWN1dGFibGUsICctYycpICsgYXJncwpAQCAtNzcsNiArODMsOSBAQAogICAgICAgICBwcm9jZXNzZXMgPSBbc2VsZi5uZXdfc2xlZXBfcHJvY2VzcygpIGZvciBfIGluIHJhbmdlKG51bSldCiAgICAgICAgIGZvciBfIGluIHJhbmdlKG51bSk6CiAgICAgICAgICAgICB3YWl0X2Z1bmMoKQorICAgICAgICAjIENhbGwgdGhlIFBvcGVuIG1ldGhvZCB0byBhdm9pZCBhIFJlc291cmNlV2FybmluZworICAgICAgICBmb3IgcHJvYyBpbiBwcm9jZXNzZXM6CisgICAgICAgICAgICBwcm9jLndhaXQoKQogCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF93YWl0X211bHRpcGxlKG9zLndhaXQpCkBAIC04OCw2ICs5Nyw4IEBACiAgICAgZGVmIF90ZXN0X3dhaXRfc2luZ2xlKHNlbGYsIHdhaXRfZnVuYyk6CiAgICAgICAgIHByb2MgPSBzZWxmLm5ld19zbGVlcF9wcm9jZXNzKCkKICAgICAgICAgd2FpdF9mdW5jKHByb2MucGlkKQorICAgICAgICAjIENhbGwgdGhlIFBvcGVuIG1ldGhvZCB0byBhdm9pZCBhIFJlc291cmNlV2FybmluZworICAgICAgICBwcm9jLndhaXQoKQogCiAgICAgZGVmIHRlc3Rfd2FpdHBpZChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF93YWl0X3NpbmdsZShsYW1iZGEgcGlkOiBvcy53YWl0cGlkKHBpZCwgMCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dCBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CmluZGV4IDA1MTM3NjUuLjczMzNiMmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CisrKyBiL0xpYi90ZXN0L2V4Y2VwdGlvbl9oaWVyYXJjaHkudHh0CkBAIC0xNCw2ICsxNCw3IEBACiAgICAgICArLS0gQnVmZmVyRXJyb3IKICAgICAgICstLSBFT0ZFcnJvcgogICAgICAgKy0tIEltcG9ydEVycm9yCisgICAgICAgICAgICstLSBNb2R1bGVOb3RGb3VuZEVycm9yCiAgICAgICArLS0gTG9va3VwRXJyb3IKICAgICAgIHwgICAgKy0tIEluZGV4RXJyb3IKICAgICAgIHwgICAgKy0tIEtleUVycm9yCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTBlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDUgQEAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKKworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LmNtZGxpbmUgaW1wb3J0IF9wYXJzZV9hcmdzLCBSRVNPVVJDRV9OQU1FUworZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0Lm1haW4gaW1wb3J0IG1haW4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L2NtZGxpbmUucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MWIwMGMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9jbWRsaW5lLnB5CkBAIC0wLDAgKzEsMzQ3IEBACitpbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKworVVNBR0UgPSAiIiJcCitweXRob24gLW0gdGVzdCBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgW3Rlc3RfbmFtZTIgLi4uXV0KK3B5dGhvbiBwYXRoL3RvL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQorIiIiCisKK0RFU0NSSVBUSU9OID0gIiIiXAorUnVuIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLgorCitJZiBubyBhcmd1bWVudHMgb3Igb3B0aW9ucyBhcmUgcHJvdmlkZWQsIGZpbmRzIGFsbCBmaWxlcyBtYXRjaGluZwordGhlIHBhdHRlcm4gInRlc3RfKiIgaW4gdGhlIExpYi90ZXN0IHN1YmRpcmVjdG9yeSBhbmQgcnVucwordGhlbSBpbiBhbHBoYWJldGljYWwgb3JkZXIgKGJ1dCBzZWUgLU0gYW5kIC11LCBiZWxvdywgZm9yIGV4Y2VwdGlvbnMpLgorCitGb3IgbW9yZSByaWdvcm91cyB0ZXN0aW5nLCBpdCBpcyB1c2VmdWwgdG8gdXNlIHRoZSBmb2xsb3dpbmcKK2NvbW1hbmQgbGluZToKKworcHl0aG9uIC1FIC1XZCAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSAuLi5dCisiIiIKKworRVBJTE9HID0gIiIiXAorQWRkaXRpb25hbCBvcHRpb24gZGV0YWlsczoKKworLXIgcmFuZG9taXplcyB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4gWW91IGNhbiB1c2UgLS1yYW5kc2VlZD1pbnQgdG8gcHJvdmlkZSBhbgoraW50IHNlZWQgdmFsdWUgZm9yIHRoZSByYW5kb21pemVyOyB0aGlzIGlzIHVzZWZ1bCBmb3IgcmVwcm9kdWNpbmcgdHJvdWJsZXNvbWUKK3Rlc3Qgb3JkZXJzLgorCistcyBPbiB0aGUgZmlyc3QgaW52b2NhdGlvbiBvZiByZWdydGVzdCB1c2luZyAtcywgdGhlIGZpcnN0IHRlc3QgZmlsZSBmb3VuZAorb3IgdGhlIGZpcnN0IHRlc3QgZmlsZSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIHJ1biwgYW5kIHRoZSBuYW1lIG9mCit0aGUgbmV4dCB0ZXN0IGlzIHJlY29yZGVkIGluIGEgZmlsZSBuYW1lZCBweW5leHR0ZXN0LiAgSWYgcnVuIGZyb20gdGhlCitQeXRob24gYnVpbGQgZGlyZWN0b3J5LCBweW5leHR0ZXN0IGlzIGxvY2F0ZWQgaW4gdGhlICdidWlsZCcgc3ViZGlyZWN0b3J5LAorb3RoZXJ3aXNlIGl0IGlzIGxvY2F0ZWQgaW4gdGVtcGZpbGUuZ2V0dGVtcGRpcigpLiAgT24gc3Vic2VxdWVudCBydW5zLAordGhlIHRlc3QgaW4gcHluZXh0dGVzdCBpcyBydW4sIGFuZCB0aGUgbmV4dCB0ZXN0IGlzIHdyaXR0ZW4gdG8gcHluZXh0dGVzdC4KK1doZW4gdGhlIGxhc3QgdGVzdCBoYXMgYmVlbiBydW4sIHB5bmV4dHRlc3QgaXMgZGVsZXRlZC4gIEluIHRoaXMgd2F5IGl0CitpcyBwb3NzaWJsZSB0byBzaW5nbGUgc3RlcCB0aHJvdWdoIHRoZSB0ZXN0IGZpbGVzLiAgVGhpcyBpcyB1c2VmdWwgd2hlbgorZG9pbmcgbWVtb3J5IGFuYWx5c2lzIG9uIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIHdoaWNoIHByb2Nlc3MgdGVuZHMgdG8KK2NvbnN1bWUgdG9vIG1hbnkgcmVzb3VyY2VzIHRvIHJ1biB0aGUgZnVsbCByZWdyZXNzaW9uIHRlc3Qgbm9uLXN0b3AuCisKKy1TIGlzIHVzZWQgdG8gY29udGludWUgcnVubmluZyB0ZXN0cyBhZnRlciBhbiBhYm9ydGVkIHJ1bi4gIEl0IHdpbGwKK21haW50YWluIHRoZSBvcmRlciBhIHN0YW5kYXJkIHJ1biAoaWUsIHRoaXMgYXNzdW1lcyAtciBpcyBub3QgdXNlZCkuCitUaGlzIGlzIHVzZWZ1bCBhZnRlciB0aGUgdGVzdHMgaGF2ZSBwcmVtYXR1cmVseSBzdG9wcGVkIGZvciBzb21lIGV4dGVybmFsCityZWFzb24gYW5kIHlvdSB3YW50IHRvIHN0YXJ0IHJ1bm5pbmcgZnJvbSB3aGVyZSB5b3UgbGVmdCBvZmYgcmF0aGVyCit0aGFuIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZy4KKworLWYgcmVhZHMgdGhlIG5hbWVzIG9mIHRlc3RzIGZyb20gdGhlIGZpbGUgZ2l2ZW4gYXMgZidzIGFyZ3VtZW50LCBvbmUKK29yIG1vcmUgdGVzdCBuYW1lcyBwZXIgbGluZS4gIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4gIEJsYW5rIGxpbmVzIGFuZAorbGluZXMgYmVnaW5uaW5nIHdpdGggJyMnIGFyZSBpZ25vcmVkLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IKK3doaXR0bGluZyBkb3duIGZhaWx1cmVzIGludm9sdmluZyBpbnRlcmFjdGlvbnMgYW1vbmcgdGVzdHMuCisKKy1MIGNhdXNlcyB0aGUgbGVha3MoMSkgY29tbWFuZCB0byBiZSBydW4ganVzdCBiZWZvcmUgZXhpdCBpZiBpdCBleGlzdHMuCitsZWFrcygxKSBpcyBhdmFpbGFibGUgb24gTWFjIE9TIFggYW5kIHByZXN1bWFibHkgb24gc29tZSBvdGhlcgorRnJlZUJTRC1kZXJpdmVkIHN5c3RlbXMuCisKKy1SIHJ1bnMgZWFjaCB0ZXN0IHNldmVyYWwgdGltZXMgYW5kIGV4YW1pbmVzIHN5cy5nZXR0b3RhbHJlZmNvdW50KCkgdG8KK3NlZSBpZiB0aGUgdGVzdCBhcHBlYXJzIHRvIGJlIGxlYWtpbmcgcmVmZXJlbmNlcy4gIFRoZSBhcmd1bWVudCBzaG91bGQKK2JlIG9mIHRoZSBmb3JtIHN0YWI6cnVuOmZuYW1lIHdoZXJlICdzdGFiJyBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZQordGVzdCBpcyBydW4gdG8gbGV0IGdldHRvdGFscmVmY291bnQgc2V0dGxlIGRvd24sICdydW4nIGlzIHRoZSBudW1iZXIKK29mIHRpbWVzIGZ1cnRoZXIgaXQgaXMgcnVuIGFuZCAnZm5hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRoZQorcmVwb3J0cyBhcmUgd3JpdHRlbiB0by4gIFRoZXNlIHBhcmFtZXRlcnMgYWxsIGhhdmUgZGVmYXVsdHMgKDUsIDQgYW5kCisicmVmbG9nLnR4dCIgcmVzcGVjdGl2ZWx5KSwgYW5kIHRoZSBtaW5pbWFsIGludm9jYXRpb24gaXMgJy1SIDonLgorCistTSBydW5zIHRlc3RzIHRoYXQgcmVxdWlyZSBhbiBleG9yYml0YW50IGFtb3VudCBvZiBtZW1vcnkuIFRoZXNlIHRlc3RzCit0eXBpY2FsbHkgdHJ5IHRvIGFzY2VydGFpbiBjb250YWluZXJzIGtlZXAgd29ya2luZyB3aGVuIGNvbnRhaW5pbmcgbW9yZSB0aGFuCisyIGJpbGxpb24gb2JqZWN0cywgd2hpY2ggb25seSB3b3JrcyBvbiA2NC1iaXQgc3lzdGVtcy4gVGhlcmUgYXJlIGFsc28gc29tZQordGVzdHMgdGhhdCB0cnkgdG8gZXhoYXVzdCB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUgcHJvY2Vzcywgd2hpY2ggb25seSBtYWtlcworc2Vuc2Ugb24gMzItYml0IHN5c3RlbXMgd2l0aCBhdCBsZWFzdCAyR2Igb2YgbWVtb3J5LiBUaGUgcGFzc2VkLWluIG1lbWxpbWl0LAord2hpY2ggaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YgJzIuNUdiJywgZGV0ZXJtaW5lcyBob3dtdWNoIG1lbW9yeSB0aGUKK3Rlc3RzIHdpbGwgbGltaXQgdGhlbXNlbHZlcyB0byAoYnV0IHRoZXkgbWF5IGdvIHNsaWdodGx5IG92ZXIuKSBUaGUgbnVtYmVyCitzaG91bGRuJ3QgYmUgbW9yZSBtZW1vcnkgdGhhbiB0aGUgbWFjaGluZSBoYXMgKGluY2x1ZGluZyBzd2FwIG1lbW9yeSkuIFlvdQorc2hvdWxkIGFsc28ga2VlcCBpbiBtaW5kIHRoYXQgc3dhcCBtZW1vcnkgaXMgZ2VuZXJhbGx5IG11Y2gsIG11Y2ggc2xvd2VyCit0aGFuIFJBTSwgYW5kIHNldHRpbmcgbWVtbGltaXQgdG8gYWxsIGF2YWlsYWJsZSBSQU0gb3IgaGlnaGVyIHdpbGwgaGVhdmlseQordGF4IHRoZSBtYWNoaW5lLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaXMgbm8gdXNlIHJ1bm5pbmcgdGhlc2UgdGVzdHMgd2l0aCBhCitsaW1pdCBvZiBsZXNzIHRoYW4gMi41R2IsIGFuZCBtYW55IHJlcXVpcmUgbW9yZSB0aGFuIDIwR2IuIFRlc3RzIHRoYXQgZXhwZWN0Cit0byB1c2UgbW9yZSB0aGFuIG1lbWxpbWl0IG1lbW9yeSB3aWxsIGJlIHNraXBwZWQuIFRoZSBiaWctbWVtb3J5IHRlc3RzCitnZW5lcmFsbHkgcnVuIHZlcnksIHZlcnkgbG9uZy4KKworLXUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzIHRvIHJ1biwKK3N1Y2ggYXMgdGhvc2UgcmVxdWlyaW5nIGxhcmdlIGZpbGUgc3VwcG9ydCBvciBuZXR3b3JrIGNvbm5lY3Rpdml0eS4KK1RoZSBhcmd1bWVudCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHdvcmRzIGluZGljYXRpbmcgdGhlCityZXNvdXJjZXMgdG8gdGVzdC4gIEN1cnJlbnRseSBvbmx5IHRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQ6CisKKyAgICBhbGwgLSAgICAgICBFbmFibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzLgorCisgICAgbm9uZSAtICAgICAgRGlzYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLgorCisgICAgYXVkaW8gLSAgICAgVGVzdHMgdGhhdCB1c2UgdGhlIGF1ZGlvIGRldmljZS4gIChUaGVyZSBhcmUga25vd24KKyAgICAgICAgICAgICAgICBjYXNlcyBvZiBicm9rZW4gYXVkaW8gZHJpdmVycyB0aGF0IGNhbiBjcmFzaCBQeXRob24gb3IKKyAgICAgICAgICAgICAgICBldmVuIHRoZSBMaW51eCBrZXJuZWwuKQorCisgICAgY3Vyc2VzIC0gICAgVGVzdHMgdGhhdCB1c2UgY3Vyc2VzIGFuZCB3aWxsIG1vZGlmeSB0aGUgdGVybWluYWwncworICAgICAgICAgICAgICAgIHN0YXRlIGFuZCBvdXRwdXQgbW9kZXMuCisKKyAgICBsYXJnZWZpbGUgLSBJdCBpcyBva2F5IHRvIHJ1biBzb21lIHRlc3QgdGhhdCBtYXkgY3JlYXRlIGh1Z2UKKyAgICAgICAgICAgICAgICBmaWxlcy4gIFRoZXNlIHRlc3RzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBtYXkKKyAgICAgICAgICAgICAgICBjb25zdW1lID4yR0Igb2YgZGlzayBzcGFjZSB0ZW1wb3JhcmlseS4KKworICAgIG5ldHdvcmsgLSAgIEl0IGlzIG9rYXkgdG8gcnVuIHRlc3RzIHRoYXQgdXNlIGV4dGVybmFsIG5ldHdvcmsKKyAgICAgICAgICAgICAgICByZXNvdXJjZSwgZS5nLiB0ZXN0aW5nIFNTTCBzdXBwb3J0IGZvciBzb2NrZXRzLgorCisgICAgZGVjaW1hbCAtICAgVGVzdCB0aGUgZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhIGxhcmdlIHN1aXRlIHRoYXQKKyAgICAgICAgICAgICAgICB2ZXJpZmllcyBjb21wbGlhbmNlIHdpdGggc3RhbmRhcmRzLgorCisgICAgY3B1IC0gICAgICAgVXNlZCBmb3IgY2VydGFpbiBDUFUtaGVhdnkgdGVzdHMuCisKKyAgICBzdWJwcm9jZXNzICBSdW4gYWxsIHRlc3RzIGZvciB0aGUgc3VicHJvY2VzcyBtb2R1bGUuCisKKyAgICB1cmxmZXRjaCAtICBJdCBpcyBva2F5IHRvIGRvd25sb2FkIGZpbGVzIHJlcXVpcmVkIG9uIHRlc3RpbmcuCisKKyAgICBndWkgLSAgICAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIGEgcnVubmluZyBHVUkuCisKKyAgICB0emRhdGEgLSAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIHRpbWV6b25lIGRhdGEuCisKK1RvIGVuYWJsZSBhbGwgcmVzb3VyY2VzIGV4Y2VwdCBvbmUsIHVzZSAnLXVhbGwsLTxyZXNvdXJjZT4nLiAgRm9yCitleGFtcGxlLCB0byBydW4gYWxsIHRoZSB0ZXN0cyBleGNlcHQgZm9yIHRoZSBndWkgdGVzdHMsIGdpdmUgdGhlCitvcHRpb24gJy11YWxsLC1ndWknLgorIiIiCisKKworUkVTT1VSQ0VfTkFNRVMgPSAoJ2F1ZGlvJywgJ2N1cnNlcycsICdsYXJnZWZpbGUnLCAnbmV0d29yaycsCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCcsICdjcHUnLCAnc3VicHJvY2VzcycsICd1cmxmZXRjaCcsICdndWknLCAndHpkYXRhJykKKworY2xhc3MgX0FyZ1BhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6CisKKyAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHN1cGVyKCkuZXJyb3IobWVzc2FnZSArICJcblBhc3MgLWggb3IgLS1oZWxwIGZvciBjb21wbGV0ZSBoZWxwLiIpCisKKworZGVmIF9jcmVhdGVfcGFyc2VyKCk6CisgICAgIyBTZXQgcHJvZyB0byBwcmV2ZW50IHRoZSB1bmluZm9ybWF0aXZlICJfX21haW5fXy5weSIgZnJvbSBkaXNwbGF5aW5nIGluCisgICAgIyBlcnJvciBtZXNzYWdlcyB3aGVuIHVzaW5nICJweXRob24gLW0gdGVzdCAuLi4iLgorICAgIHBhcnNlciA9IF9BcmdQYXJzZXIocHJvZz0ncmVncnRlc3QucHknLAorICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2U9VVNBR0UsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1ERVNDUklQVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVwaWxvZz1FUElMT0csCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRfaGVscD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9jbGFzcz1hcmdwYXJzZS5SYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpCisKKyAgICAjIEFyZ3VtZW50cyB3aXRoIHRoaXMgY2xhdXNlIGFkZGVkIHRvIGl0cyBoZWxwIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbgorICAgICMgdGhlIGVwaWxvZydzICJBZGRpdGlvbmFsIG9wdGlvbiBkZXRhaWxzIiBzZWN0aW9uLgorICAgIG1vcmVfZGV0YWlscyA9ICcgIFNlZSB0aGUgc2VjdGlvbiBhdCBib3R0b20gZm9yIG1vcmUgZGV0YWlscy4nCisKKyAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ0dlbmVyYWwgb3B0aW9ucycpCisgICAgIyBXZSBhZGQgaGVscCBleHBsaWNpdGx5IHRvIGNvbnRyb2wgd2hhdCBhcmd1bWVudCBncm91cCBpdCByZW5kZXJzIHVuZGVyLgorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWgnLCAnLS1oZWxwJywgYWN0aW9uPSdoZWxwJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRpbWVvdXQnLCBtZXRhdmFyPSdUSU1FT1VUJywgdHlwZT1mbG9hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2R1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBuZWdhdGl2ZSBvciBlcXVhbHMgdG8gemVybycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdhaXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd3YWl0IGZvciB1c2VyIGlucHV0LCBlLmcuLCBhbGxvdyBhIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG8gYmUgYXR0YWNoZWQnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zbGF2ZWFyZ3MnLCBtZXRhdmFyPSdBUkdTJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1TJywgJy0tc3RhcnQnLCBtZXRhdmFyPSdTVEFSVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3RoZSBuYW1lIG9mIHRoZSB0ZXN0IGF0IHdoaWNoIHRvIHN0YXJ0LicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKworICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnVmVyYm9zaXR5JykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nY291bnQnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGVzdHMgaW4gdmVyYm9zZSBtb2RlIHdpdGggb3V0cHV0IHRvIHN0ZG91dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdycsICctLXZlcmJvc2UyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmUtcnVuIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVcnLCAnLS12ZXJib3NlMycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Rpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcScsICctLXF1aWV0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1vJywgJy0tc2xvd2VzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9J3ByaW50X3Nsb3cnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwcmludCB0aGUgc2xvd2VzdCAxMCB0ZXN0cycpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWhlYWRlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IGhlYWRlciB3aXRoIGludGVycHJldGVyIGluZm8nKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTZWxlY3RpbmcgdGVzdHMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXInLCAnLS1yYW5kb21pemUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyYW5kb21pemUgdGVzdCBleGVjdXRpb24gb3JkZXIuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcmFuZHNlZWQnLCBtZXRhdmFyPSdTRUVEJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncmFuZG9tX3NlZWQnLCB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncGFzcyBhIHJhbmRvbSBzZWVkIHRvIHJlcHJvZHVjZSBhIHByZXZpb3VzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFuZG9tIHJ1bicpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctZicsICctLWZyb21maWxlJywgbWV0YXZhcj0nRklMRScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlYWQgbmFtZXMgb2YgdGVzdHMgdG8gcnVuIGZyb20gYSBmaWxlLicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy14JywgJy0tZXhjbHVkZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2FyZ3VtZW50cyBhcmUgdGVzdHMgdG8gKmV4Y2x1ZGUqJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2luZ2xlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2luZ2xlIHN0ZXAgdGhyb3VnaCBhIHNldCBvZiB0ZXN0cy4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbScsICctLW1hdGNoJywgbWV0YXZhcj0nUEFUJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbWF0Y2hfdGVzdHMnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdtYXRjaCB0ZXN0IGNhc2VzIGFuZCBtZXRob2RzIHdpdGggZ2xvYiBwYXR0ZXJuIFBBVCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRycsICctLWZhaWxmYXN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmFpbCBhcyBzb29uIGFzIGEgdGVzdCBmYWlscyAob25seSB3aXRoIC12IG9yIC1XKScpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdScsICctLXVzZScsIG1ldGF2YXI9J1JFUzEsUkVTMiwuLi4nLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J2FwcGVuZCcsIHR5cGU9cmVzb3VyY2VzX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3NwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBydW4uJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1NJywgJy0tbWVtbGltaXQnLCBtZXRhdmFyPSdMSU1JVCcsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB2ZXJ5IGxhcmdlIG1lbW9yeS1jb25zdW1pbmcgdGVzdHMuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS10ZXN0ZGlyJywgbWV0YXZhcj0nRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1yZWxhdGl2ZV9maWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGluc3RlYWQgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSknKQorCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdTcGVjaWFsIHJ1bnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1maW5kbGVha3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdpZiBHQyBpcyBhdmFpbGFibGUgZGV0ZWN0IHRlc3RzIHRoYXQgbGVhayBtZW1vcnknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUwnLCAnLS1ydW5sZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0aGUgbGVha3MoMSkgY29tbWFuZCBqdXN0IGJlZm9yZSBleGl0LicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1SJywgJy0taHVudHJsZWFrcycsIG1ldGF2YXI9J1JVTkNPVU5UUycsCisgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aHVudHJsZWFrcywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VhcmNoIGZvciByZWZlcmVuY2UgbGVha3MgKG5lZWRzIGRlYnVnIGJ1aWxkLCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Zlcnkgc2xvdykuJyArIG1vcmVfZGV0YWlscykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1qJywgJy0tbXVsdGlwcm9jZXNzJywgbWV0YXZhcj0nUFJPQ0VTU0VTJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX21wJywgdHlwZT1pbnQsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biBQUk9DRVNTRVMgcHJvY2Vzc2VzIGF0IG9uY2UnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVQnLCAnLS1jb3ZlcmFnZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3RyYWNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndHVybiBvbiBjb2RlIGNvdmVyYWdlIHRyYWNpbmcgdXNpbmcgdGhlIHRyYWNlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kdWxlJykKKyAgICBncm91cC5hZGRfYXJndW1lbnQoJy1EJywgJy0tY292ZXJkaXInLCBtZXRhdmFyPSdESVInLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdkaXJlY3Rvcnkgd2hlcmUgY292ZXJhZ2UgZmlsZXMgYXJlIHB1dCcpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTicsICctLW5vY292ZXJkaXInLAorICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9Tm9uZSwgZGVzdD0nY292ZXJkaXInLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwdXQgY292ZXJhZ2UgZmlsZXMgYWxvbmdzaWRlIG1vZHVsZXMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXQnLCAnLS10aHJlc2hvbGQnLCBtZXRhdmFyPSdUSFJFU0hPTEQnLAorICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nY2FsbCBnYy5zZXRfdGhyZXNob2xkKFRIUkVTSE9MRCknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1ub3dpbmRvd3MnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzdXBwcmVzcyBlcnJvciBtZXNzYWdlIGJveGVzIG9uIFdpbmRvd3MnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUYnLCAnLS1mb3JldmVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBzcGVjaWZpZWQgdGVzdHMgaW4gYSBsb29wLCB1bnRpbCBhbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yIGhhcHBlbnMnKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1saXN0LXRlc3RzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ib25seSB3cml0ZSB0aGUgbmFtZSBvZiB0ZXN0cyB0aGF0IHdpbGwgYmUgcnVuLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbid0IGV4ZWN1dGUgdGhlbSIpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUCcsICctLXBnbycsIGRlc3Q9J3BnbycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2VuYWJsZSBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24gdHJhaW5pbmcnKQorCisgICAgcmV0dXJuIHBhcnNlcgorCisKK2RlZiByZWxhdGl2ZV9maWxlbmFtZShzdHJpbmcpOgorICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKKyAgICAjIGpvaW4gaXQgd2l0aCB0aGUgc2F2ZWQgQ1dEIHNvIGl0IGVuZHMgdXAgd2hlcmUgdGhlIHVzZXIgZXhwZWN0cy4KKyAgICByZXR1cm4gb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIHN0cmluZykKKworCitkZWYgaHVudHJsZWFrcyhzdHJpbmcpOgorICAgIGFyZ3MgPSBzdHJpbmcuc3BsaXQoJzonKQorICAgIGlmIGxlbihhcmdzKSBub3QgaW4gKDIsIDMpOgorICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigKKyAgICAgICAgICAgICduZWVkcyAyIG9yIDMgY29sb24tc2VwYXJhdGVkIGFyZ3VtZW50cycpCisgICAgbndhcm11cCA9IGludChhcmdzWzBdKSBpZiBhcmdzWzBdIGVsc2UgNQorICAgIG50cmFja2VkID0gaW50KGFyZ3NbMV0pIGlmIGFyZ3NbMV0gZWxzZSA0CisgICAgZm5hbWUgPSBhcmdzWzJdIGlmIGxlbihhcmdzKSA+IDIgYW5kIGFyZ3NbMl0gZWxzZSAncmVmbG9nLnR4dCcKKyAgICByZXR1cm4gbndhcm11cCwgbnRyYWNrZWQsIGZuYW1lCisKKworZGVmIHJlc291cmNlc19saXN0KHN0cmluZyk6CisgICAgdSA9IFt4Lmxvd2VyKCkgZm9yIHggaW4gc3RyaW5nLnNwbGl0KCcsJyldCisgICAgZm9yIHIgaW4gdToKKyAgICAgICAgaWYgciA9PSAnYWxsJyBvciByID09ICdub25lJzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIHJbMF0gPT0gJy0nOgorICAgICAgICAgICAgciA9IHJbMTpdCisgICAgICAgIGlmIHIgbm90IGluIFJFU09VUkNFX05BTUVTOgorICAgICAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoJ2ludmFsaWQgcmVzb3VyY2U6ICcgKyByKQorICAgIHJldHVybiB1CisKKworZGVmIF9wYXJzZV9hcmdzKGFyZ3MsICoqa3dhcmdzKToKKyAgICAjIERlZmF1bHRzCisgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UodGVzdGRpcj1Ob25lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLAorICAgICAgICAgZXhjbHVkZT1GYWxzZSwgc2luZ2xlPUZhbHNlLCByYW5kb21pemU9RmFsc2UsIGZyb21maWxlPU5vbmUsCisgICAgICAgICBmaW5kbGVha3M9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwgdHJhY2U9RmFsc2UsIGNvdmVyZGlyPSdjb3ZlcmFnZScsCisgICAgICAgICBydW5sZWFrcz1GYWxzZSwgaHVudHJsZWFrcz1GYWxzZSwgdmVyYm9zZTI9RmFsc2UsIHByaW50X3Nsb3c9RmFsc2UsCisgICAgICAgICByYW5kb21fc2VlZD1Ob25lLCB1c2VfbXA9Tm9uZSwgdmVyYm9zZTM9RmFsc2UsIGZvcmV2ZXI9RmFsc2UsCisgICAgICAgICBoZWFkZXI9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lLCBwZ289RmFsc2UpCisgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKG5zLCBrKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXIgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9yIHRoaXMgZnVuY3Rpb24nICUgaykKKyAgICAgICAgc2V0YXR0cihucywgaywgdikKKyAgICBpZiBucy51c2VfcmVzb3VyY2VzIGlzIE5vbmU6CisgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMgPSBbXQorCisgICAgcGFyc2VyID0gX2NyZWF0ZV9wYXJzZXIoKQorICAgICMgSXNzdWUgIzE0MTkxOiBhcmdwYXJzZSBkb2Vzbid0IHN1cHBvcnQgImludGVybWl4ZWQiIHBvc2l0aW9uYWwgYW5kCisgICAgIyBvcHRpb25hbCBhcmd1bWVudHMuIFVzZSBwYXJzZV9rbm93bl9hcmdzKCkgYXMgd29ya2Fyb3VuZC4KKyAgICBucy5hcmdzID0gcGFyc2VyLnBhcnNlX2tub3duX2FyZ3MoYXJncz1hcmdzLCBuYW1lc3BhY2U9bnMpWzFdCisgICAgZm9yIGFyZyBpbiBucy5hcmdzOgorICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLScpOgorICAgICAgICAgICAgcGFyc2VyLmVycm9yKCJ1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAlcyIgJSBhcmcpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgaWYgbnMuc2luZ2xlIGFuZCBucy5mcm9tZmlsZToKKyAgICAgICAgcGFyc2VyLmVycm9yKCItcyBhbmQgLWYgZG9uJ3QgZ28gdG9nZXRoZXIhIikKKyAgICBpZiBucy51c2VfbXAgYW5kIG5zLnRyYWNlOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1UIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQorICAgIGlmIG5zLnVzZV9tcCBhbmQgbnMuZmluZGxlYWtzOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1sIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQorICAgIGlmIG5zLmZhaWxmYXN0IGFuZCBub3QgKG5zLnZlcmJvc2Ugb3IgbnMudmVyYm9zZTMpOgorICAgICAgICBwYXJzZXIuZXJyb3IoIi1HLy0tZmFpbGZhc3QgbmVlZHMgZWl0aGVyIC12IG9yIC1XIikKKyAgICBpZiBucy5wZ28gYW5kIChucy52ZXJib3NlIG9yIG5zLnZlcmJvc2UyIG9yIG5zLnZlcmJvc2UzKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCItLXBnby8tdiBkb24ndCBnbyB0b2dldGhlciEiKQorCisgICAgaWYgbnMubm93aW5kb3dzOgorICAgICAgICBwcmludCgiV2FybmluZzogdGhlIC0tbm93aW5kb3dzICgtbikgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuICIKKyAgICAgICAgICAgICAgIlVzZSAtdnYgdG8gZGlzcGxheSBhc3NlcnRpb25zIGluIHN0ZGVyci4iLCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICBpZiBucy5xdWlldDoKKyAgICAgICAgbnMudmVyYm9zZSA9IDAKKyAgICBpZiBucy50aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICBpZiBucy50aW1lb3V0IDw9IDA6CisgICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQorICAgIGlmIG5zLnVzZV9tcCBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgbnMudXNlX21wIDw9IDA6CisgICAgICAgICAgICAjIFVzZSBhbGwgY29yZXMgKyBleHRyYXMgZm9yIHRlc3RzIHRoYXQgbGlrZSB0byBzbGVlcAorICAgICAgICAgICAgbnMudXNlX21wID0gMiArIChvcy5jcHVfY291bnQoKSBvciAxKQorICAgIGlmIG5zLnVzZToKKyAgICAgICAgZm9yIGEgaW4gbnMudXNlOgorICAgICAgICAgICAgZm9yIHIgaW4gYToKKyAgICAgICAgICAgICAgICBpZiByID09ICdhbGwnOgorICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzWzpdID0gUkVTT1VSQ0VfTkFNRVMKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiByID09ICdub25lJzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG5zLnVzZV9yZXNvdXJjZXNbOl0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICByZW1vdmUgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIHJbMF0gPT0gJy0nOgorICAgICAgICAgICAgICAgICAgICByZW1vdmUgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHIgPSByWzE6XQorICAgICAgICAgICAgICAgIGlmIHJlbW92ZToKKyAgICAgICAgICAgICAgICAgICAgaWYgciBpbiBucy51c2VfcmVzb3VyY2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5yZW1vdmUocikKKyAgICAgICAgICAgICAgICBlbGlmIHIgbm90IGluIG5zLnVzZV9yZXNvdXJjZXM6CisgICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMuYXBwZW5kKHIpCisgICAgaWYgbnMucmFuZG9tX3NlZWQgaXMgbm90IE5vbmU6CisgICAgICAgIG5zLnJhbmRvbWl6ZSA9IFRydWUKKworICAgIHJldHVybiBucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvbWFpbi5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L21haW4ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBlZmZjOQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L21haW4ucHkKQEAgLTAsMCArMSw1MzIgQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IGxvY2FsZQoraW1wb3J0IG9zCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByYW5kb20KK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCB0aW1lCitmcm9tIHRlc3QubGlicmVncnRlc3QuY21kbGluZSBpbXBvcnQgX3BhcnNlX2FyZ3MKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0IGltcG9ydCAoCisgICAgZmluZHRlc3RzLCBydW50ZXN0LAorICAgIFNURFRFU1RTLCBOT1RURVNUUywgUEFTU0VELCBGQUlMRUQsIEVOVl9DSEFOR0VELCBTS0lQUEVELCBSRVNPVVJDRV9ERU5JRUQsCisgICAgSU5URVJSVVBURUQsIENISUxEX0VSUk9SLAorICAgIFBST0dSRVNTX01JTl9USU1FLCBmb3JtYXRfdGVzdF9yZXN1bHQpCitmcm9tIHRlc3QubGlicmVncnRlc3Quc2V0dXAgaW1wb3J0IHNldHVwX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgZ2MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBnYyA9IE5vbmUKKworCisjIFdoZW4gdGVzdHMgYXJlIHJ1biBmcm9tIHRoZSBQeXRob24gYnVpbGQgZGlyZWN0b3J5LCBpdCBpcyBiZXN0IHByYWN0aWNlCisjIHRvIGtlZXAgdGhlIHRlc3QgZmlsZXMgaW4gYSBzdWJmb2xkZXIuICBUaGlzIGVhc2VzIHRoZSBjbGVhbnVwIG9mIGxlZnRvdmVyCisjIGZpbGVzIHVzaW5nIHRoZSAibWFrZSBkaXN0Y2xlYW4iIGNvbW1hbmQuCitpZiBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6CisgICAgVEVNUERJUiA9IG9zLnBhdGguam9pbihzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpLCAnYnVpbGQnKQorZWxzZToKKyAgICBURU1QRElSID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCitURU1QRElSID0gb3MucGF0aC5hYnNwYXRoKFRFTVBESVIpCisKKworZGVmIGZvcm1hdF9kdXJhdGlvbihzZWNvbmRzKToKKyAgICBpZiBzZWNvbmRzIDwgMS4wOgorICAgICAgICByZXR1cm4gJyUuMGYgbXMnICUgKHNlY29uZHMgKiAxZTMpCisgICAgaWYgc2Vjb25kcyA8IDYwLjA6CisgICAgICAgIHJldHVybiAnJS4wZiBzZWMnICUgc2Vjb25kcworCisgICAgbWludXRlcywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCA2MC4wKQorICAgIHJldHVybiAnJS4wZiBtaW4gJS4wZiBzZWMnICUgKG1pbnV0ZXMsIHNlY29uZHMpCisKKworY2xhc3MgUmVncnRlc3Q6CisgICAgIiIiRXhlY3V0ZSBhIHRlc3Qgc3VpdGUuCisKKyAgICBUaGlzIGFsc28gcGFyc2VzIGNvbW1hbmQtbGluZSBvcHRpb25zIGFuZCBtb2RpZmllcyBpdHMgYmVoYXZpb3IKKyAgICBhY2NvcmRpbmdseS4KKworICAgIHRlc3RzIC0tIGEgbGlzdCBvZiBzdHJpbmdzIGNvbnRhaW5pbmcgdGVzdCBuYW1lcyAob3B0aW9uYWwpCisgICAgdGVzdGRpciAtLSB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGxvb2sgZm9yIHRlc3RzIChvcHRpb25hbCkKKworICAgIFVzZXJzIG90aGVyIHRoYW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHdpbGwgY2VydGFpbmx5IHdhbnQgdG8KKyAgICBzcGVjaWZ5IHRlc3RkaXI7IGlmIGl0J3Mgb21pdHRlZCwgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZQorICAgIFB5dGhvbiB0ZXN0IHN1aXRlIGlzIHNlYXJjaGVkIGZvci4KKworICAgIElmIHRoZSB0ZXN0cyBhcmd1bWVudCBpcyBvbWl0dGVkLCB0aGUgdGVzdHMgbGlzdGVkIG9uIHRoZQorICAgIGNvbW1hbmQtbGluZSB3aWxsIGJlIHVzZWQuICBJZiB0aGF0J3MgZW1wdHksIHRvbywgdGhlbiBhbGwgKi5weQorICAgIGZpbGVzIGJlZ2lubmluZyB3aXRoIHRlc3RfIHdpbGwgYmUgdXNlZC4KKworICAgIFRoZSBvdGhlciBkZWZhdWx0IGFyZ3VtZW50cyAodmVyYm9zZSwgcXVpZXQsIGV4Y2x1ZGUsCisgICAgc2luZ2xlLCByYW5kb21pemUsIGZpbmRsZWFrcywgdXNlX3Jlc291cmNlcywgdHJhY2UsIGNvdmVyZGlyLAorICAgIHByaW50X3Nsb3csIGFuZCByYW5kb21fc2VlZCkgYWxsb3cgcHJvZ3JhbW1lcnMgY2FsbGluZyBtYWluKCkKKyAgICBkaXJlY3RseSB0byBzZXQgdGhlIHZhbHVlcyB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIHNldCBieSBmbGFncworICAgIG9uIHRoZSBjb21tYW5kIGxpbmUuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAjIE5hbWVzcGFjZSBvZiBjb21tYW5kIGxpbmUgb3B0aW9ucworICAgICAgICBzZWxmLm5zID0gTm9uZQorCisgICAgICAgICMgdGVzdHMKKyAgICAgICAgc2VsZi50ZXN0cyA9IFtdCisgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBbXQorCisgICAgICAgICMgdGVzdCByZXN1bHRzCisgICAgICAgIHNlbGYuZ29vZCA9IFtdCisgICAgICAgIHNlbGYuYmFkID0gW10KKyAgICAgICAgc2VsZi5za2lwcGVkID0gW10KKyAgICAgICAgc2VsZi5yZXNvdXJjZV9kZW5pZWRzID0gW10KKyAgICAgICAgc2VsZi5lbnZpcm9ubWVudF9jaGFuZ2VkID0gW10KKyAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IEZhbHNlCisKKyAgICAgICAgIyB1c2VkIGJ5IC0tc2xvdworICAgICAgICBzZWxmLnRlc3RfdGltZXMgPSBbXQorCisgICAgICAgICMgdXNlZCBieSAtLWNvdmVyYWdlLCB0cmFjZS5UcmFjZSBpbnN0YW5jZQorICAgICAgICBzZWxmLnRyYWNlciA9IE5vbmUKKworICAgICAgICAjIHVzZWQgYnkgLS1maW5kbGVha3MsIHN0b3JlIGZvciBnYy5nYXJiYWdlCisgICAgICAgIHNlbGYuZm91bmRfZ2FyYmFnZSA9IFtdCisKKyAgICAgICAgIyB1c2VkIHRvIGRpc3BsYXkgdGhlIHByb2dyZXNzIGJhciAiWyAzLzEwMF0iCisgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IHRpbWUubW9ub3RvbmljKCkKKyAgICAgICAgc2VsZi50ZXN0X2NvdW50ID0gJycKKyAgICAgICAgc2VsZi50ZXN0X2NvdW50X3dpZHRoID0gMQorCisgICAgICAgICMgdXNlZCBieSAtLXNpbmdsZQorICAgICAgICBzZWxmLm5leHRfc2luZ2xlX3Rlc3QgPSBOb25lCisgICAgICAgIHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUgPSBOb25lCisKKyAgICBkZWYgYWNjdW11bGF0ZV9yZXN1bHQoc2VsZiwgdGVzdCwgcmVzdWx0KToKKyAgICAgICAgb2ssIHRlc3RfdGltZSA9IHJlc3VsdAorICAgICAgICBpZiBvayBub3QgaW4gKENISUxEX0VSUk9SLCBJTlRFUlJVUFRFRCk6CisgICAgICAgICAgICBzZWxmLnRlc3RfdGltZXMuYXBwZW5kKCh0ZXN0X3RpbWUsIHRlc3QpKQorICAgICAgICBpZiBvayA9PSBQQVNTRUQ6CisgICAgICAgICAgICBzZWxmLmdvb2QuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsaWYgb2sgPT0gRkFJTEVEOgorICAgICAgICAgICAgc2VsZi5iYWQuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsaWYgb2sgPT0gRU5WX0NIQU5HRUQ6CisgICAgICAgICAgICBzZWxmLmVudmlyb25tZW50X2NoYW5nZWQuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsaWYgb2sgPT0gU0tJUFBFRDoKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgZWxpZiBvayA9PSBSRVNPVVJDRV9ERU5JRUQ6CisgICAgICAgICAgICBzZWxmLnNraXBwZWQuYXBwZW5kKHRlc3QpCisgICAgICAgICAgICBzZWxmLnJlc291cmNlX2RlbmllZHMuYXBwZW5kKHRlc3QpCisKKyAgICBkZWYgZGlzcGxheV9wcm9ncmVzcyhzZWxmLCB0ZXN0X2luZGV4LCB0ZXN0KToKKyAgICAgICAgaWYgc2VsZi5ucy5xdWlldDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBzZWxmLmJhZCBhbmQgbm90IHNlbGYubnMucGdvOgorICAgICAgICAgICAgZm10ID0gInt0aW1lfSBbe3Rlc3RfaW5kZXg6e2NvdW50X3dpZHRofX17dGVzdF9jb3VudH0ve25iYWR9XSB7dGVzdF9uYW1lfSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZtdCA9ICJ7dGltZX0gW3t0ZXN0X2luZGV4Ontjb3VudF93aWR0aH19e3Rlc3RfY291bnR9XSB7dGVzdF9uYW1lfSIKKyAgICAgICAgdGVzdF90aW1lID0gdGltZS5tb25vdG9uaWMoKSAtIHNlbGYuc3RhcnRfdGltZQorICAgICAgICB0ZXN0X3RpbWUgPSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1pbnQodGVzdF90aW1lKSkKKyAgICAgICAgbGluZSA9IGZtdC5mb3JtYXQoY291bnRfd2lkdGg9c2VsZi50ZXN0X2NvdW50X3dpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2luZGV4PXRlc3RfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnQ9c2VsZi50ZXN0X2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBuYmFkPWxlbihzZWxmLmJhZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbmFtZT10ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lPXRlc3RfdGltZSkKKyAgICAgICAgcHJpbnQobGluZSwgZmx1c2g9VHJ1ZSkKKworICAgIGRlZiBwYXJzZV9hcmdzKHNlbGYsIGt3YXJncyk6CisgICAgICAgIG5zID0gX3BhcnNlX2FyZ3Moc3lzLmFyZ3ZbMTpdLCAqKmt3YXJncykKKworICAgICAgICBpZiBucy50aW1lb3V0IGFuZCBub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpOgorICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IFRoZSB0aW1lb3V0IG9wdGlvbiByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAiZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgbnMudGltZW91dCA9IE5vbmUKKworICAgICAgICBpZiBucy50aHJlc2hvbGQgaXMgbm90IE5vbmUgYW5kIGdjIGlzIE5vbmU6CisgICAgICAgICAgICBwcmludCgnTm8gR0MgYXZhaWxhYmxlLCBpZ25vcmUgLS10aHJlc2hvbGQuJywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgbnMudGhyZXNob2xkID0gTm9uZQorCisgICAgICAgIGlmIG5zLmZpbmRsZWFrczoKKyAgICAgICAgICAgIGlmIGdjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IHRvIHJlcG9ydCBnYXJiYWdlIHRoYXQgaXMgbm90CisgICAgICAgICAgICAgICAgIyBmcmVlYWJsZSBieSByZWZlcmVuY2UgY291bnRpbmcgYWxvbmUuICBCeSBkZWZhdWx0IG9ubHkKKyAgICAgICAgICAgICAgICAjIGdhcmJhZ2UgdGhhdCBpcyBub3QgY29sbGVjdGFibGUgYnkgdGhlIEdDIGlzIHJlcG9ydGVkLgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAjZ2Muc2V0X2RlYnVnKGdjLkRFQlVHX1NBVkVBTEwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCdObyBHQyBhdmFpbGFibGUsIGRpc2FibGluZyAtLWZpbmRsZWFrcycsCisgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIG5zLmZpbmRsZWFrcyA9IEZhbHNlCisKKyAgICAgICAgIyBTdHJpcCAucHkgZXh0ZW5zaW9ucy4KKyAgICAgICAgcmVtb3ZlcHkobnMuYXJncykKKworICAgICAgICByZXR1cm4gbnMKKworICAgIGRlZiBmaW5kX3Rlc3RzKHNlbGYsIHRlc3RzKToKKyAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzCisKKyAgICAgICAgaWYgc2VsZi5ucy5zaW5nbGU6CisgICAgICAgICAgICBzZWxmLm5leHRfc2luZ2xlX2ZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICdweW5leHR0ZXN0JykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSwgJ3InKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0ID0gZnAucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0cyA9IFtuZXh0X3Rlc3RdCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgaWYgc2VsZi5ucy5mcm9tZmlsZToKKyAgICAgICAgICAgIHNlbGYudGVzdHMgPSBbXQorICAgICAgICAgICAgIyByZWdleCB0byBtYXRjaCAndGVzdF9idWlsdGluJyBpbiBsaW5lOgorICAgICAgICAgICAgIyAnMDowMDowMCBbICA0LzQwMF0gdGVzdF9idWlsdGluIC0tIHRlc3RfZGljdCB0b29rIDEgc2VjJworICAgICAgICAgICAgcmVnZXggPSAocideKD86WzAtOV0rOlswLTldKzpbMC05XSsgKik/JworICAgICAgICAgICAgICAgICAgICAgcicoPzpcW1swLTkvIF0rXF0gKik/JworICAgICAgICAgICAgICAgICAgICAgcicodGVzdF9bYS16QS1aMC05X10rKScpCisgICAgICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocmVnZXgpCisgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsIHNlbGYubnMuZnJvbWZpbGUpKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmVnZXgubWF0Y2gobGluZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2ggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHMuYXBwZW5kKG1hdGNoLmdyb3VwKDEpKQorCisgICAgICAgIHJlbW92ZXB5KHNlbGYudGVzdHMpCisKKyAgICAgICAgc3RkdGVzdHMgPSBTVERURVNUU1s6XQorICAgICAgICBub3R0ZXN0cyA9IE5PVFRFU1RTLmNvcHkoKQorICAgICAgICBpZiBzZWxmLm5zLmV4Y2x1ZGU6CisgICAgICAgICAgICBmb3IgYXJnIGluIHNlbGYubnMuYXJnczoKKyAgICAgICAgICAgICAgICBpZiBhcmcgaW4gc3RkdGVzdHM6CisgICAgICAgICAgICAgICAgICAgIHN0ZHRlc3RzLnJlbW92ZShhcmcpCisgICAgICAgICAgICAgICAgbm90dGVzdHMuYWRkKGFyZykKKyAgICAgICAgICAgIHNlbGYubnMuYXJncyA9IFtdCisKKyAgICAgICAgIyBpZiB0ZXN0ZGlyIGlzIHNldCwgdGhlbiB3ZSBhcmUgbm90IHJ1bm5pbmcgdGhlIHB5dGhvbiB0ZXN0cyBzdWl0ZSwgc28KKyAgICAgICAgIyBkb24ndCBhZGQgZGVmYXVsdCB0ZXN0cyB0byBiZSBleGVjdXRlZCBvciBza2lwcGVkIChwYXNzIGVtcHR5IHZhbHVlcykKKyAgICAgICAgaWYgc2VsZi5ucy50ZXN0ZGlyOgorICAgICAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMoc2VsZi5ucy50ZXN0ZGlyLCBsaXN0KCksIHNldCgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWxsdGVzdHMgPSBmaW5kdGVzdHMoc2VsZi5ucy50ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCisKKyAgICAgICAgaWYgbm90IHNlbGYubnMuZnJvbWZpbGU6CisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkID0gc2VsZi50ZXN0cyBvciBzZWxmLm5zLmFyZ3Mgb3IgYWxsdGVzdHMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSBzZWxmLnRlc3RzCisgICAgICAgIGlmIHNlbGYubnMuc2luZ2xlOgorICAgICAgICAgICAgc2VsZi5zZWxlY3RlZCA9IHNlbGYuc2VsZWN0ZWRbOjFdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcG9zID0gYWxsdGVzdHMuaW5kZXgoc2VsZi5zZWxlY3RlZFswXSkKKyAgICAgICAgICAgICAgICBzZWxmLm5leHRfc2luZ2xlX3Rlc3QgPSBhbGx0ZXN0c1twb3MgKyAxXQorICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICMgUmVtb3ZlIGFsbCB0aGUgc2VsZWN0ZWQgdGVzdHMgdGhhdCBwcmVjZWRlIHN0YXJ0IGlmIGl0J3Mgc2V0LgorICAgICAgICBpZiBzZWxmLm5zLnN0YXJ0OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLnNlbGVjdGVkWzpzZWxmLnNlbGVjdGVkLmluZGV4KHNlbGYubnMuc3RhcnQpXQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGZpbmQgc3RhcnRpbmcgdGVzdCAoJXMpLCB1c2luZyBhbGwgdGVzdHMiCisgICAgICAgICAgICAgICAgICAgICAgJSBzZWxmLm5zLnN0YXJ0LCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICAgICAgaWYgc2VsZi5ucy5yYW5kb21pemU6CisgICAgICAgICAgICBpZiBzZWxmLm5zLnJhbmRvbV9zZWVkIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5ucy5yYW5kb21fc2VlZCA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDApCisgICAgICAgICAgICByYW5kb20uc2VlZChzZWxmLm5zLnJhbmRvbV9zZWVkKQorICAgICAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZi5zZWxlY3RlZCkKKworICAgIGRlZiBsaXN0X3Rlc3RzKHNlbGYpOgorICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLnNlbGVjdGVkOgorICAgICAgICAgICAgcHJpbnQobmFtZSkKKworICAgIGRlZiByZXJ1bl9mYWlsZWRfdGVzdHMoc2VsZik6CisgICAgICAgIHNlbGYubnMudmVyYm9zZSA9IFRydWUKKyAgICAgICAgc2VsZi5ucy5mYWlsZmFzdCA9IEZhbHNlCisgICAgICAgIHNlbGYubnMudmVyYm9zZTMgPSBGYWxzZQorICAgICAgICBzZWxmLm5zLm1hdGNoX3Rlc3RzID0gTm9uZQorCisgICAgICAgIHByaW50KCJSZS1ydW5uaW5nIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUiKQorICAgICAgICBmb3IgdGVzdCBpbiBzZWxmLmJhZFs6XToKKyAgICAgICAgICAgIHByaW50KCJSZS1ydW5uaW5nIHRlc3QgJXIgaW4gdmVyYm9zZSBtb2RlIiAlIHRlc3QsIGZsdXNoPVRydWUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5ucy52ZXJib3NlID0gVHJ1ZQorICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdChzZWxmLm5zLCB0ZXN0KQorICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgICAgIHNlbGYuaW50ZXJydXB0ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgIyBwcmludCBhIG5ld2xpbmUgc2VwYXJhdGUgZnJvbSB0aGUgXkMKKyAgICAgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgb2tbMF0gaW4ge1BBU1NFRCwgRU5WX0NIQU5HRUQsIFNLSVBQRUQsIFJFU09VUkNFX0RFTklFRH06CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmFkLnJlbW92ZSh0ZXN0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgc2VsZi5iYWQ6CisgICAgICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuYmFkKSwgJ3Rlc3QnKSwgImZhaWxlZCBhZ2FpbjoiKQorICAgICAgICAgICAgICAgIHByaW50bGlzdChzZWxmLmJhZCkKKworICAgIGRlZiBkaXNwbGF5X3Jlc3VsdChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIGFmdGVyIF5DCisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludCgiVGVzdCBzdWl0ZSBpbnRlcnJ1cHRlZCBieSBzaWduYWwgU0lHSU5ULiIpCisgICAgICAgICAgICBleGVjdXRlZCA9IHNldChzZWxmLmdvb2QpIHwgc2V0KHNlbGYuYmFkKSB8IHNldChzZWxmLnNraXBwZWQpCisgICAgICAgICAgICBvbWl0dGVkID0gc2V0KHNlbGYuc2VsZWN0ZWQpIC0gZXhlY3V0ZWQKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihvbWl0dGVkKSwgInRlc3QiKSwgIm9taXR0ZWQ6IikKKyAgICAgICAgICAgIHByaW50bGlzdChvbWl0dGVkKQorCisgICAgICAgICMgSWYgcnVubmluZyB0aGUgdGVzdCBzdWl0ZSBmb3IgUEdPIHRoZW4gbm8gb25lIGNhcmVzIGFib3V0CisgICAgICAgICMgcmVzdWx0cy4KKyAgICAgICAgaWYgc2VsZi5ucy5wZ286CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBzZWxmLmdvb2QgYW5kIG5vdCBzZWxmLm5zLnF1aWV0OgorICAgICAgICAgICAgaWYgKG5vdCBzZWxmLmJhZAorICAgICAgICAgICAgICAgIGFuZCBub3Qgc2VsZi5za2lwcGVkCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWxmLmludGVycnVwdGVkCisgICAgICAgICAgICAgICAgYW5kIGxlbihzZWxmLmdvb2QpID4gMSk6CisgICAgICAgICAgICAgICAgcHJpbnQoIkFsbCIsIGVuZD0nICcpCisgICAgICAgICAgICBwcmludChjb3VudChsZW4oc2VsZi5nb29kKSwgInRlc3QiKSwgIk9LLiIpCisKKyAgICAgICAgaWYgc2VsZi5ucy5wcmludF9zbG93OgorICAgICAgICAgICAgc2VsZi50ZXN0X3RpbWVzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoIjEwIHNsb3dlc3QgdGVzdHM6IikKKyAgICAgICAgICAgIGZvciB0aW1lLCB0ZXN0IGluIHNlbGYudGVzdF90aW1lc1s6MTBdOgorICAgICAgICAgICAgICAgIHByaW50KCItICVzOiAlcyIgJSAodGVzdCwgZm9ybWF0X2R1cmF0aW9uKHRpbWUpKSkKKworICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIHByaW50KGNvdW50KGxlbihzZWxmLmJhZCksICJ0ZXN0IiksICJmYWlsZWQ6IikKKyAgICAgICAgICAgIHByaW50bGlzdChzZWxmLmJhZCkKKworICAgICAgICBpZiBzZWxmLmVudmlyb25tZW50X2NoYW5nZWQ6CisgICAgICAgICAgICBwcmludCgpCisgICAgICAgICAgICBwcmludCgie30gYWx0ZXJlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50OiIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgY291bnQobGVuKHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZCksICJ0ZXN0IikpKQorICAgICAgICAgICAgcHJpbnRsaXN0KHNlbGYuZW52aXJvbm1lbnRfY2hhbmdlZCkKKworICAgICAgICBpZiBzZWxmLnNraXBwZWQgYW5kIG5vdCBzZWxmLm5zLnF1aWV0OgorICAgICAgICAgICAgcHJpbnQoKQorICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKHNlbGYuc2tpcHBlZCksICJ0ZXN0IiksICJza2lwcGVkOiIpCisgICAgICAgICAgICBwcmludGxpc3Qoc2VsZi5za2lwcGVkKQorCisgICAgZGVmIHJ1bl90ZXN0c19zZXF1ZW50aWFsKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm5zLnRyYWNlOgorICAgICAgICAgICAgaW1wb3J0IHRyYWNlCisgICAgICAgICAgICBzZWxmLnRyYWNlciA9IHRyYWNlLlRyYWNlKHRyYWNlPUZhbHNlLCBjb3VudD1UcnVlKQorCisgICAgICAgIHNhdmVfbW9kdWxlcyA9IHN5cy5tb2R1bGVzLmtleXMoKQorCisgICAgICAgIHByaW50KCJSdW4gdGVzdHMgc2VxdWVudGlhbGx5IikKKworICAgICAgICBwcmV2aW91c190ZXN0ID0gTm9uZQorICAgICAgICBmb3IgdGVzdF9pbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUoc2VsZi50ZXN0cywgMSk6CisgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorCisgICAgICAgICAgICB0ZXh0ID0gdGVzdAorICAgICAgICAgICAgaWYgcHJldmlvdXNfdGVzdDoKKyAgICAgICAgICAgICAgICB0ZXh0ID0gJyVzIC0tICVzJyAlICh0ZXh0LCBwcmV2aW91c190ZXN0KQorICAgICAgICAgICAgc2VsZi5kaXNwbGF5X3Byb2dyZXNzKHRlc3RfaW5kZXgsIHRleHQpCisKKyAgICAgICAgICAgIGlmIHNlbGYudHJhY2VyOgorICAgICAgICAgICAgICAgICMgSWYgd2UncmUgdHJhY2luZyBjb2RlIGNvdmVyYWdlLCB0aGVuIHdlIGRvbid0IGV4aXQgd2l0aCBzdGF0dXMKKyAgICAgICAgICAgICAgICAjIGlmIG9uIGEgZmFsc2UgcmV0dXJuIHZhbHVlIGZyb20gbWFpbi4KKyAgICAgICAgICAgICAgICBjbWQgPSAoJ3Jlc3VsdCA9IHJ1bnRlc3Qoc2VsZi5ucywgdGVzdCk7ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGYuYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KScpCisgICAgICAgICAgICAgICAgbnMgPSBkaWN0KGxvY2FscygpKQorICAgICAgICAgICAgICAgIHNlbGYudHJhY2VyLnJ1bmN0eChjbWQsIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9bnMpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbnNbJ3Jlc3VsdCddCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdChzZWxmLm5zLCB0ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCAoSU5URVJSVVBURUQsIE5vbmUpKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQorCisgICAgICAgICAgICBwcmV2aW91c190ZXN0ID0gZm9ybWF0X3Rlc3RfcmVzdWx0KHRlc3QsIHJlc3VsdFswXSkKKyAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUubW9ub3RvbmljKCkgLSBzdGFydF90aW1lCisgICAgICAgICAgICBpZiB0ZXN0X3RpbWUgPj0gUFJPR1JFU1NfTUlOX1RJTUU6CisgICAgICAgICAgICAgICAgcHJldmlvdXNfdGVzdCA9ICIlcyBpbiAlcyIgJSAocHJldmlvdXNfdGVzdCwgZm9ybWF0X2R1cmF0aW9uKHRlc3RfdGltZSkpCisgICAgICAgICAgICBlbGlmIHJlc3VsdFswXSA9PSBQQVNTRUQ6CisgICAgICAgICAgICAgICAgIyBiZSBxdWlldDogc2F5IG5vdGhpbmcgaWYgdGhlIHRlc3QgcGFzc2VkIHNob3J0bHkKKyAgICAgICAgICAgICAgICBwcmV2aW91c190ZXN0ID0gTm9uZQorCisgICAgICAgICAgICBpZiBzZWxmLm5zLmZpbmRsZWFrczoKKyAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgorICAgICAgICAgICAgICAgICAgICBwcmludCgiV2FybmluZzogdGVzdCBjcmVhdGVkIiwgbGVuKGdjLmdhcmJhZ2UpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgICAgICBwcmludCgidW5jb2xsZWN0YWJsZSBvYmplY3QocykuIikKKyAgICAgICAgICAgICAgICAgICAgIyBtb3ZlIHRoZSB1bmNvbGxlY3RhYmxlIG9iamVjdHMgc29tZXdoZXJlIHNvIHdlIGRvbid0IHNlZQorICAgICAgICAgICAgICAgICAgICAjIHRoZW0gYWdhaW4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3VuZF9nYXJiYWdlLmV4dGVuZChnYy5nYXJiYWdlKQorICAgICAgICAgICAgICAgICAgICBkZWwgZ2MuZ2FyYmFnZVs6XQorCisgICAgICAgICAgICAjIFVubG9hZCB0aGUgbmV3bHkgaW1wb3J0ZWQgbW9kdWxlcyAoYmVzdCBlZmZvcnQgZmluYWxpemF0aW9uKQorICAgICAgICAgICAgZm9yIG1vZHVsZSBpbiBzeXMubW9kdWxlcy5rZXlzKCk6CisgICAgICAgICAgICAgICAgaWYgbW9kdWxlIG5vdCBpbiBzYXZlX21vZHVsZXMgYW5kIG1vZHVsZS5zdGFydHN3aXRoKCJ0ZXN0LiIpOgorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubG9hZChtb2R1bGUpCisKKyAgICAgICAgaWYgcHJldmlvdXNfdGVzdDoKKyAgICAgICAgICAgIHByaW50KHByZXZpb3VzX3Rlc3QpCisKKyAgICBkZWYgX3Rlc3RfZm9yZXZlcihzZWxmLCB0ZXN0cyk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0CisgICAgICAgICAgICAgICAgaWYgc2VsZi5iYWQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmKToKKyAgICAgICAgIyBGb3IgYSBwYXJ0aWFsIHJ1biwgd2UgZG8gbm90IG5lZWQgdG8gY2x1dHRlciB0aGUgb3V0cHV0LgorICAgICAgICBpZiAoc2VsZi5ucy52ZXJib3NlCisgICAgICAgICAgICBvciBzZWxmLm5zLmhlYWRlcgorICAgICAgICAgICAgb3Igbm90IChzZWxmLm5zLnBnbyBvciBzZWxmLm5zLnF1aWV0IG9yIHNlbGYubnMuc2luZ2xlCisgICAgICAgICAgICAgICAgICAgIG9yIHNlbGYudGVzdHMgb3Igc2VsZi5ucy5hcmdzKSk6CisgICAgICAgICAgICAjIFByaW50IGJhc2ljIHBsYXRmb3JtIGluZm9ybWF0aW9uCisgICAgICAgICAgICBwcmludCgiPT0iLCBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwgKnN5cy52ZXJzaW9uLnNwbGl0KCkpCisgICAgICAgICAgICBwcmludCgiPT0gICIsIHBsYXRmb3JtLnBsYXRmb3JtKGFsaWFzZWQ9VHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICIlcy1lbmRpYW4iICUgc3lzLmJ5dGVvcmRlcikKKyAgICAgICAgICAgIHByaW50KCI9PSAgIiwgImhhc2ggYWxnb3JpdGhtOiIsIHN5cy5oYXNoX2luZm8uYWxnb3JpdGhtLAorICAgICAgICAgICAgICAgICAgIjY0Yml0IiBpZiBzeXMubWF4c2l6ZSA+IDIqKjMyIGVsc2UgIjMyYml0IikKKyAgICAgICAgICAgIHByaW50KCI9PSAgY3dkOiIsIG9zLmdldGN3ZCgpKQorICAgICAgICAgICAgcHJpbnQoIj09ICBlbmNvZGluZ3M6IGxvY2FsZT0lcywgRlM9JXMiCisgICAgICAgICAgICAgICAgICAlIChsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKSkKKyAgICAgICAgICAgIHByaW50KCJUZXN0aW5nIHdpdGggZmxhZ3M6Iiwgc3lzLmZsYWdzKQorCisgICAgICAgIGlmIHNlbGYubnMucmFuZG9taXplOgorICAgICAgICAgICAgcHJpbnQoIlVzaW5nIHJhbmRvbSBzZWVkIiwgc2VsZi5ucy5yYW5kb21fc2VlZCkKKworICAgICAgICBpZiBzZWxmLm5zLmZvcmV2ZXI6CisgICAgICAgICAgICBzZWxmLnRlc3RzID0gc2VsZi5fdGVzdF9mb3JldmVyKGxpc3Qoc2VsZi5zZWxlY3RlZCkpCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnQgPSAnJworICAgICAgICAgICAgc2VsZi50ZXN0X2NvdW50X3dpZHRoID0gMworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50ZXN0cyA9IGl0ZXIoc2VsZi5zZWxlY3RlZCkKKyAgICAgICAgICAgIHNlbGYudGVzdF9jb3VudCA9ICcve30nLmZvcm1hdChsZW4oc2VsZi5zZWxlY3RlZCkpCisgICAgICAgICAgICBzZWxmLnRlc3RfY291bnRfd2lkdGggPSBsZW4oc2VsZi50ZXN0X2NvdW50KSAtIDEKKworICAgICAgICBpZiBzZWxmLm5zLnVzZV9tcDoKKyAgICAgICAgICAgIGZyb20gdGVzdC5saWJyZWdydGVzdC5ydW50ZXN0X21wIGltcG9ydCBydW5fdGVzdHNfbXVsdGlwcm9jZXNzCisgICAgICAgICAgICBydW5fdGVzdHNfbXVsdGlwcm9jZXNzKHNlbGYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnJ1bl90ZXN0c19zZXF1ZW50aWFsKCkKKworICAgIGRlZiBmaW5hbGl6ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZToKKyAgICAgICAgICAgIGlmIHNlbGYubmV4dF9zaW5nbGVfdGVzdDoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5uZXh0X3NpbmdsZV9maWxlbmFtZSwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgICAgICAgICAgZnAud3JpdGUoc2VsZi5uZXh0X3NpbmdsZV90ZXN0ICsgJ1xuJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKHNlbGYubmV4dF9zaW5nbGVfZmlsZW5hbWUpCisKKyAgICAgICAgaWYgc2VsZi50cmFjZXI6CisgICAgICAgICAgICByID0gc2VsZi50cmFjZXIucmVzdWx0cygpCisgICAgICAgICAgICByLndyaXRlX3Jlc3VsdHMoc2hvd19taXNzaW5nPVRydWUsIHN1bW1hcnk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3ZlcmRpcj1zZWxmLm5zLmNvdmVyZGlyKQorCisgICAgICAgIHByaW50KCkKKyAgICAgICAgZHVyYXRpb24gPSB0aW1lLm1vbm90b25pYygpIC0gc2VsZi5zdGFydF90aW1lCisgICAgICAgIHByaW50KCJUb3RhbCBkdXJhdGlvbjogJXMiICUgZm9ybWF0X2R1cmF0aW9uKGR1cmF0aW9uKSkKKworICAgICAgICBpZiBzZWxmLmJhZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICJGQUlMVVJFIgorICAgICAgICBlbGlmIHNlbGYuaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICByZXN1bHQgPSAiSU5URVJSVVBURUQiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSAiU1VDQ0VTUyIKKyAgICAgICAgcHJpbnQoIlRlc3RzIHJlc3VsdDogJXMiICUgcmVzdWx0KQorCisgICAgICAgIGlmIHNlbGYubnMucnVubGVha3M6CisgICAgICAgICAgICBvcy5zeXN0ZW0oImxlYWtzICVkIiAlIG9zLmdldHBpZCgpKQorCisgICAgZGVmIG1haW4oc2VsZiwgdGVzdHM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICBnbG9iYWwgVEVNUERJUgorCisgICAgICAgIGlmIHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5ta2RpcihURU1QRElSKQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgIyBEZWZpbmUgYSB3cml0YWJsZSB0ZW1wIGRpciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBjd2Qgd2hpbGUgcnVubmluZworICAgICAgICAjIHRoZSB0ZXN0cy4gVGhlIG5hbWUgb2YgdGhlIGRpciBpbmNsdWRlcyB0aGUgcGlkIHRvIGFsbG93IHBhcmFsbGVsCisgICAgICAgICMgdGVzdGluZyAoc2VlIHRoZSAtaiBvcHRpb24pLgorICAgICAgICB0ZXN0X2N3ZCA9ICd0ZXN0X3B5dGhvbl97fScuZm9ybWF0KG9zLmdldHBpZCgpKQorICAgICAgICB0ZXN0X2N3ZCA9IG9zLnBhdGguam9pbihURU1QRElSLCB0ZXN0X2N3ZCkKKworICAgICAgICAjIFJ1biB0aGUgdGVzdHMgaW4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcmlseSBjaGFuZ2VzIHRoZSBDV0QgdG8gYQorICAgICAgICAjIHRlbXBvcmFyeSBhbmQgd3JpdGFibGUgZGlyZWN0b3J5LiAgSWYgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG9yCisgICAgICAgICMgY2hhbmdlIHRoZSBDV0QsIHRoZSBvcmlnaW5hbCBDV0Qgd2lsbCBiZSB1c2VkLiAgVGhlIG9yaWdpbmFsIENXRCBpcworICAgICAgICAjIGF2YWlsYWJsZSBmcm9tIHN1cHBvcnQuU0FWRURDV0QuCisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCh0ZXN0X2N3ZCwgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICBzZWxmLl9tYWluKHRlc3RzLCBrd2FyZ3MpCisKKyAgICBkZWYgX21haW4oc2VsZiwgdGVzdHMsIGt3YXJncyk6CisgICAgICAgIHNlbGYubnMgPSBzZWxmLnBhcnNlX2FyZ3Moa3dhcmdzKQorCisgICAgICAgIGlmIHNlbGYubnMuc2xhdmVhcmdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3RfbXAgaW1wb3J0IHJ1bl90ZXN0c19zbGF2ZQorICAgICAgICAgICAgcnVuX3Rlc3RzX3NsYXZlKHNlbGYubnMuc2xhdmVhcmdzKQorCisgICAgICAgIGlmIHNlbGYubnMud2FpdDoKKyAgICAgICAgICAgIGlucHV0KCJQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlLi4uIikKKworICAgICAgICBzdXBwb3J0LlBHTyA9IHNlbGYubnMucGdvCisKKyAgICAgICAgc2V0dXBfdGVzdHMoc2VsZi5ucykKKworICAgICAgICBzZWxmLmZpbmRfdGVzdHModGVzdHMpCisKKyAgICAgICAgaWYgc2VsZi5ucy5saXN0X3Rlc3RzOgorICAgICAgICAgICAgc2VsZi5saXN0X3Rlc3RzKCkKKyAgICAgICAgICAgIHN5cy5leGl0KDApCisKKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoKQorICAgICAgICBzZWxmLmRpc3BsYXlfcmVzdWx0KCkKKworICAgICAgICBpZiBzZWxmLm5zLnZlcmJvc2UyIGFuZCBzZWxmLmJhZDoKKyAgICAgICAgICAgIHNlbGYucmVydW5fZmFpbGVkX3Rlc3RzKCkKKworICAgICAgICBzZWxmLmZpbmFsaXplKCkKKyAgICAgICAgc3lzLmV4aXQobGVuKHNlbGYuYmFkKSA+IDAgb3Igc2VsZi5pbnRlcnJ1cHRlZCkKKworCitkZWYgcmVtb3ZlcHkobmFtZXMpOgorICAgIGlmIG5vdCBuYW1lczoKKyAgICAgICAgcmV0dXJuCisgICAgZm9yIGlkeCwgbmFtZSBpbiBlbnVtZXJhdGUobmFtZXMpOgorICAgICAgICBiYXNlbmFtZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQorICAgICAgICBpZiBleHQgPT0gJy5weSc6CisgICAgICAgICAgICBuYW1lc1tpZHhdID0gYmFzZW5hbWUKKworCitkZWYgY291bnQobiwgd29yZCk6CisgICAgaWYgbiA9PSAxOgorICAgICAgICByZXR1cm4gIiVkICVzIiAlIChuLCB3b3JkKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAiJWQgJXNzIiAlIChuLCB3b3JkKQorCisKK2RlZiBwcmludGxpc3QoeCwgd2lkdGg9NzAsIGluZGVudD00KToKKyAgICAiIiJQcmludCB0aGUgZWxlbWVudHMgb2YgaXRlcmFibGUgeCB0byBzdGRvdXQuCisKKyAgICBPcHRpb25hbCBhcmcgd2lkdGggKGRlZmF1bHQgNzApIGlzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgorICAgIE9wdGlvbmFsIGFyZyBpbmRlbnQgKGRlZmF1bHQgNCkgaXMgdGhlIG51bWJlciBvZiBibGFua3Mgd2l0aCB3aGljaCB0bworICAgIGJlZ2luIGVhY2ggbGluZS4KKyAgICAiIiIKKworICAgIGJsYW5rcyA9ICcgJyAqIGluZGVudAorICAgICMgUHJpbnQgdGhlIHNvcnRlZCBsaXN0OiAneCcgbWF5IGJlIGEgJy0tcmFuZG9tJyBsaXN0IG9yIGEgc2V0KCkKKyAgICBwcmludCh0ZXh0d3JhcC5maWxsKCcgJy5qb2luKHN0cihlbHQpIGZvciBlbHQgaW4gc29ydGVkKHgpKSwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsX2luZGVudD1ibGFua3MsIHN1YnNlcXVlbnRfaW5kZW50PWJsYW5rcykpCisKKworZGVmIG1haW4odGVzdHM9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIlJ1biB0aGUgUHl0aG9uIHN1aXRlLiIiIgorICAgIFJlZ3J0ZXN0KCkubWFpbih0ZXN0cz10ZXN0cywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9saWJyZWdydGVzdC9yZWZsZWFrLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcmVmbGVhay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWRjNDlmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbGlicmVncnRlc3QvcmVmbGVhay5weQpAQCAtMCwwICsxLDIwMiBAQAoraW1wb3J0IGVycm5vCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHdhcm5pbmdzCitmcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK3RyeToKKyAgICBNQVhGRCA9IG9zLnN5c2NvbmYoIlNDX09QRU5fTUFYIikKK2V4Y2VwdCBFeGNlcHRpb246CisgICAgTUFYRkQgPSAyNTYKKworCitkZWYgZmRfY291bnQoKToKKyAgICAiIiJDb3VudCB0aGUgbnVtYmVyIG9mIG9wZW4gZmlsZSBkZXNjcmlwdG9ycyIiIgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCgnbGludXgnLCAnZnJlZWJzZCcpKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKCIvcHJvYy9zZWxmL2ZkIikKKyAgICAgICAgICAgIHJldHVybiBsZW4obmFtZXMpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGNvdW50ID0gMAorICAgIGZvciBmZCBpbiByYW5nZShNQVhGRCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgUHJlZmVyIGR1cCgpIG92ZXIgZnN0YXQoKS4gZnN0YXQoKSBjYW4gcmVxdWlyZSBpbnB1dC9vdXRwdXQKKyAgICAgICAgICAgICMgd2hlcmVhcyBkdXAoKSBkb2Vzbid0LgorICAgICAgICAgICAgZmQyID0gb3MuZHVwKGZkKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQkFERjoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3MuY2xvc2UoZmQyKQorICAgICAgICAgICAgY291bnQgKz0gMQorICAgIHJldHVybiBjb3VudAorCisKK2RlZiBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgaW5kaXJlY3RfdGVzdCwgaHVudHJsZWFrcyk6CisgICAgIiIiUnVuIGEgdGVzdCBtdWx0aXBsZSB0aW1lcywgbG9va2luZyBmb3IgcmVmZXJlbmNlIGxlYWtzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgRmFsc2UgaWYgdGhlIHRlc3QgZGlkbid0IGxlYWsgcmVmZXJlbmNlczsgVHJ1ZSBpZiB3ZSBkZXRlY3RlZCByZWZsZWFrcy4KKyAgICAiIiIKKyAgICAjIFRoaXMgY29kZSBpcyBoYWNraXNoIGFuZCBpbmVsZWdhbnQsIGJ1dCBpdCBzZWVtcyB0byBkbyB0aGUgam9iLgorICAgIGltcG9ydCBjb3B5cmVnCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYworCisgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oIlRyYWNraW5nIHJlZmVyZW5jZSBsZWFrcyByZXF1aXJlcyBhIGRlYnVnIGJ1aWxkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJvZiBQeXRob24iKQorCisgICAgIyBTYXZlIGN1cnJlbnQgdmFsdWVzIGZvciBkYXNoX1JfY2xlYW51cCgpIHRvIHJlc3RvcmUuCisgICAgZnMgPSB3YXJuaW5ncy5maWx0ZXJzWzpdCisgICAgcHMgPSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorICAgIHBpYyA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNvcHkoKQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHppcGltcG9ydAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgemRjID0gTm9uZSAjIFJ1biB1bm1vZGlmaWVkIG9uIHBsYXRmb3JtcyB3aXRob3V0IHppcGltcG9ydCBzdXBwb3J0CisgICAgZWxzZToKKyAgICAgICAgemRjID0gemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNvcHkoKQorICAgIGFiY3MgPSB7fQorICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106CisgICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106CisgICAgICAgICAgICBhYmNzW29ial0gPSBvYmouX2FiY19yZWdpc3RyeS5jb3B5KCkKKworICAgIG53YXJtdXAsIG50cmFja2VkLCBmbmFtZSA9IGh1bnRybGVha3MKKyAgICBmbmFtZSA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBmbmFtZSkKKyAgICByZXBjb3VudCA9IG53YXJtdXAgKyBudHJhY2tlZAorICAgIHJjX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50CisgICAgYWxsb2NfZGVsdGFzID0gWzBdICogcmVwY291bnQKKyAgICBmZF9kZWx0YXMgPSBbMF0gKiByZXBjb3VudAorCisgICAgcHJpbnQoImJlZ2lubmluZyIsIHJlcGNvdW50LCAicmVwZXRpdGlvbnMiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgcHJpbnQoKCIxMjM0NTY3ODkwIioocmVwY291bnQvLzEwICsgMSkpWzpyZXBjb3VudF0sIGZpbGU9c3lzLnN0ZGVyciwKKyAgICAgICAgICBmbHVzaD1UcnVlKQorICAgICMgaW5pdGlhbGl6ZSB2YXJpYWJsZXMgdG8gbWFrZSBweWZsYWtlcyBxdWlldAorICAgIHJjX2JlZm9yZSA9IGFsbG9jX2JlZm9yZSA9IGZkX2JlZm9yZSA9IDAKKyAgICBmb3IgaSBpbiByYW5nZShyZXBjb3VudCk6CisgICAgICAgIGluZGlyZWN0X3Rlc3QoKQorICAgICAgICBhbGxvY19hZnRlciwgcmNfYWZ0ZXIsIGZkX2FmdGVyID0gZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiY3MpCisgICAgICAgIHByaW50KCcuJywgZW5kPScnLCBmbHVzaD1UcnVlKQorICAgICAgICBpZiBpID49IG53YXJtdXA6CisgICAgICAgICAgICByY19kZWx0YXNbaV0gPSByY19hZnRlciAtIHJjX2JlZm9yZQorICAgICAgICAgICAgYWxsb2NfZGVsdGFzW2ldID0gYWxsb2NfYWZ0ZXIgLSBhbGxvY19iZWZvcmUKKyAgICAgICAgICAgIGZkX2RlbHRhc1tpXSA9IGZkX2FmdGVyIC0gZmRfYmVmb3JlCisgICAgICAgIGFsbG9jX2JlZm9yZSA9IGFsbG9jX2FmdGVyCisgICAgICAgIHJjX2JlZm9yZSA9IHJjX2FmdGVyCisgICAgICAgIGZkX2JlZm9yZSA9IGZkX2FmdGVyCisgICAgcHJpbnQoZmlsZT1zeXMuc3RkZXJyKQorICAgICMgVGhlc2UgY2hlY2tlcnMgcmV0dXJuIEZhbHNlIG9uIHN1Y2Nlc3MsIFRydWUgb24gZmFpbHVyZQorICAgIGRlZiBjaGVja19yY19kZWx0YXMoZGVsdGFzKToKKyAgICAgICAgcmV0dXJuIGFueShkZWx0YXMpCisgICAgZGVmIGNoZWNrX2FsbG9jX2RlbHRhcyhkZWx0YXMpOgorICAgICAgICAjIEF0IGxlYXN0IDEvM3JkIG9mIDBzCisgICAgICAgIGlmIDMgKiBkZWx0YXMuY291bnQoMCkgPCBsZW4oZGVsdGFzKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICMgTm90aGluZyBlbHNlIHRoYW4gMXMsIDBzIGFuZCAtMXMKKyAgICAgICAgaWYgbm90IHNldChkZWx0YXMpIDw9IHsxLDAsLTF9OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZmFpbGVkID0gRmFsc2UKKyAgICBmb3IgZGVsdGFzLCBpdGVtX25hbWUsIGNoZWNrZXIgaW4gWworICAgICAgICAocmNfZGVsdGFzLCAncmVmZXJlbmNlcycsIGNoZWNrX3JjX2RlbHRhcyksCisgICAgICAgIChhbGxvY19kZWx0YXMsICdtZW1vcnkgYmxvY2tzJywgY2hlY2tfYWxsb2NfZGVsdGFzKSwKKyAgICAgICAgKGZkX2RlbHRhcywgJ2ZpbGUgZGVzY3JpcHRvcnMnLCBjaGVja19yY19kZWx0YXMpXToKKyAgICAgICAgaWYgY2hlY2tlcihkZWx0YXMpOgorICAgICAgICAgICAgbXNnID0gJyVzIGxlYWtlZCAlcyAlcywgc3VtPSVzJyAlICgKKyAgICAgICAgICAgICAgICB0ZXN0LCBkZWx0YXNbbndhcm11cDpdLCBpdGVtX25hbWUsIHN1bShkZWx0YXMpKQorICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJhIikgYXMgcmVmcmVwOgorICAgICAgICAgICAgICAgIHByaW50KG1zZywgZmlsZT1yZWZyZXApCisgICAgICAgICAgICAgICAgcmVmcmVwLmZsdXNoKCkKKyAgICAgICAgICAgIGZhaWxlZCA9IFRydWUKKyAgICByZXR1cm4gZmFpbGVkCisKKworZGVmIGRhc2hfUl9jbGVhbnVwKGZzLCBwcywgcGljLCB6ZGMsIGFiY3MpOgorICAgIGltcG9ydCBnYywgY29weXJlZworICAgIGltcG9ydCBfc3RycHRpbWUsIGxpbmVjYWNoZQorICAgIGltcG9ydCB1cmxsaWIucGFyc2UsIHVybGxpYi5yZXF1ZXN0LCBtaW1ldHlwZXMsIGRvY3Rlc3QKKyAgICBpbXBvcnQgc3RydWN0LCBmaWxlY21wLCBjb2xsZWN0aW9ucy5hYmMKKyAgICBmcm9tIGRpc3R1dGlscy5kaXJfdXRpbCBpbXBvcnQgX3BhdGhfY3JlYXRlZAorICAgIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha1NldAorCisgICAgIyBDbGVhciB0aGUgd2FybmluZ3MgcmVnaXN0cnksIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBhZ2FpbgorICAgIGZvciBtb2QgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6CisgICAgICAgIGlmIGhhc2F0dHIobW9kLCAnX193YXJuaW5ncmVnaXN0cnlfXycpOgorICAgICAgICAgICAgZGVsIG1vZC5fX3dhcm5pbmdyZWdpc3RyeV9fCisKKyAgICAjIFJlc3RvcmUgc29tZSBvcmlnaW5hbCB2YWx1ZXMuCisgICAgd2FybmluZ3MuZmlsdGVyc1s6XSA9IGZzCisgICAgY29weXJlZy5kaXNwYXRjaF90YWJsZS5jbGVhcigpCisgICAgY29weXJlZy5kaXNwYXRjaF90YWJsZS51cGRhdGUocHMpCisgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY2xlYXIoKQorICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnVwZGF0ZShwaWMpCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKKyAgICBlbHNlOgorICAgICAgICB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY2xlYXIoKQorICAgICAgICB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUudXBkYXRlKHpkYykKKworICAgICMgY2xlYXIgdHlwZSBjYWNoZQorICAgIHN5cy5fY2xlYXJfdHlwZV9jYWNoZSgpCisKKyAgICAjIENsZWFyIEFCQyByZWdpc3RyaWVzLCByZXN0b3JpbmcgcHJldmlvdXNseSBzYXZlZCBBQkMgcmVnaXN0cmllcy4KKyAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgorICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgorICAgICAgICAgICAgb2JqLl9hYmNfcmVnaXN0cnkgPSBhYmNzLmdldChvYmosIFdlYWtTZXQoKSkuY29weSgpCisgICAgICAgICAgICBvYmouX2FiY19jYWNoZS5jbGVhcigpCisgICAgICAgICAgICBvYmouX2FiY19uZWdhdGl2ZV9jYWNoZS5jbGVhcigpCisKKyAgICAjIEZsdXNoIHN0YW5kYXJkIG91dHB1dCwgc28gdGhhdCBidWZmZXJlZCBkYXRhIGlzIHNlbnQgdG8gdGhlIE9TIGFuZAorICAgICMgYXNzb2NpYXRlZCBQeXRob24gb2JqZWN0cyBhcmUgcmVjbGFpbWVkLgorICAgIGZvciBzdHJlYW0gaW4gKHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIsIHN5cy5fX3N0ZG91dF9fLCBzeXMuX19zdGRlcnJfXyk6CisgICAgICAgIGlmIHN0cmVhbSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHN0cmVhbS5mbHVzaCgpCisKKyAgICAjIENsZWFyIGFzc29ydGVkIG1vZHVsZSBjYWNoZXMuCisgICAgX3BhdGhfY3JlYXRlZC5jbGVhcigpCisgICAgcmUucHVyZ2UoKQorICAgIF9zdHJwdGltZS5fcmVnZXhfY2FjaGUuY2xlYXIoKQorICAgIHVybGxpYi5wYXJzZS5jbGVhcl9jYWNoZSgpCisgICAgdXJsbGliLnJlcXVlc3QudXJsY2xlYW51cCgpCisgICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQorICAgIG1pbWV0eXBlcy5fZGVmYXVsdF9taW1lX3R5cGVzKCkKKyAgICBmaWxlY21wLl9jYWNoZS5jbGVhcigpCisgICAgc3RydWN0Ll9jbGVhcmNhY2hlKCkKKyAgICBkb2N0ZXN0Lm1hc3RlciA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBjdHlwZXMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICMgRG9uJ3Qgd29ycnkgYWJvdXQgcmVzZXR0aW5nIHRoZSBjYWNoZSBpZiBjdHlwZXMgaXMgbm90IHN1cHBvcnRlZAorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgY3R5cGVzLl9yZXNldF9jYWNoZSgpCisKKyAgICAjIENvbGxlY3QgY3ljbGljIHRyYXNoIGFuZCByZWFkIG1lbW9yeSBzdGF0aXN0aWNzIGltbWVkaWF0ZWx5IGFmdGVyLgorICAgIGZ1bmMxID0gc3lzLmdldGFsbG9jYXRlZGJsb2NrcworICAgIGZ1bmMyID0gc3lzLmdldHRvdGFscmVmY291bnQKKyAgICBnYy5jb2xsZWN0KCkKKyAgICByZXR1cm4gZnVuYzEoKSwgZnVuYzIoKSwgZmRfY291bnQoKQorCisKK2RlZiB3YXJtX2NhY2hlcygpOgorICAgICMgY2hhciBjYWNoZQorICAgIHMgPSBieXRlcyhyYW5nZSgyNTYpKQorICAgIGZvciBpIGluIHJhbmdlKDI1Nik6CisgICAgICAgIHNbaTppKzFdCisgICAgIyB1bmljb2RlIGNhY2hlCisgICAgW2NocihpKSBmb3IgaSBpbiByYW5nZSgyNTYpXQorICAgICMgaW50IGNhY2hlCisgICAgbGlzdChyYW5nZSgtNSwgMjU3KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3QucHkgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyODI1NDMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9saWJyZWdydGVzdC9ydW50ZXN0LnB5CkBAIC0wLDAgKzEsMjQ0IEBACitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgaW8KK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QubGlicmVncnRlc3QucmVmbGVhayBpbXBvcnQgZGFzaF9SCitmcm9tIHRlc3QubGlicmVncnRlc3Quc2F2ZV9lbnYgaW1wb3J0IHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQKKworCisjIFRlc3QgcmVzdWx0IGNvbnN0YW50cy4KK1BBU1NFRCA9IDEKK0ZBSUxFRCA9IDAKK0VOVl9DSEFOR0VEID0gLTEKK1NLSVBQRUQgPSAtMgorUkVTT1VSQ0VfREVOSUVEID0gLTMKK0lOVEVSUlVQVEVEID0gLTQKK0NISUxEX0VSUk9SID0gLTUgICAjIGVycm9yIGluIGEgY2hpbGQgcHJvY2VzcworCitfRk9STUFUX1RFU1RfUkVTVUxUID0geworICAgIFBBU1NFRDogJyVzIHBhc3NlZCcsCisgICAgRkFJTEVEOiAnJXMgZmFpbGVkJywKKyAgICBFTlZfQ0hBTkdFRDogJyVzIGZhaWxlZCAoZW52IGNoYW5nZWQpJywKKyAgICBTS0lQUEVEOiAnJXMgc2tpcHBlZCcsCisgICAgUkVTT1VSQ0VfREVOSUVEOiAnJXMgc2tpcHBlZCAocmVzb3VyY2UgZGVuaWVkKScsCisgICAgSU5URVJSVVBURUQ6ICclcyBpbnRlcnJ1cHRlZCcsCisgICAgQ0hJTERfRVJST1I6ICclcyBjcmFzaGVkJywKK30KKworIyBNaW5pbXVtIGR1cmF0aW9uIG9mIGEgdGVzdCB0byBkaXNwbGF5IGl0cyBkdXJhdGlvbiBvciB0byBtZW50aW9uIHRoYXQKKyMgdGhlIHRlc3QgaXMgcnVubmluZyBpbiBiYWNrZ3JvdW5kCitQUk9HUkVTU19NSU5fVElNRSA9IDMwLjAgICAjIHNlY29uZHMKKworIyBzbWFsbCBzZXQgb2YgdGVzdHMgdG8gZGV0ZXJtaW5lIGlmIHdlIGhhdmUgYSBiYXNpY2FsbHkgZnVuY3Rpb25pbmcgaW50ZXJwcmV0ZXIKKyMgKGkuZS4gaWYgYW55IG9mIHRoZXNlIGZhaWwsIHRoZW4gYW55dGhpbmcgZWxzZSBpcyBsaWtlbHkgdG8gZm9sbG93KQorU1REVEVTVFMgPSBbCisgICAgJ3Rlc3RfZ3JhbW1hcicsCisgICAgJ3Rlc3Rfb3Bjb2RlcycsCisgICAgJ3Rlc3RfZGljdCcsCisgICAgJ3Rlc3RfYnVpbHRpbicsCisgICAgJ3Rlc3RfZXhjZXB0aW9ucycsCisgICAgJ3Rlc3RfdHlwZXMnLAorICAgICd0ZXN0X3VuaXR0ZXN0JywKKyAgICAndGVzdF9kb2N0ZXN0JywKKyAgICAndGVzdF9kb2N0ZXN0MicsCisgICAgJ3Rlc3Rfc3VwcG9ydCcKK10KKworIyBzZXQgb2YgdGVzdHMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdXNpbmcgcmVncnRlc3QKK05PVFRFU1RTID0gc2V0KCkKKworCitkZWYgZm9ybWF0X3Rlc3RfcmVzdWx0KHRlc3RfbmFtZSwgcmVzdWx0KToKKyAgICBmbXQgPSBfRk9STUFUX1RFU1RfUkVTVUxULmdldChyZXN1bHQsICIlcyIpCisgICAgcmV0dXJuIGZtdCAlIHRlc3RfbmFtZQorCisKK2RlZiBmaW5kdGVzdHModGVzdGRpcj1Ob25lLCBzdGR0ZXN0cz1TVERURVNUUywgbm90dGVzdHM9Tk9UVEVTVFMpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIGFwcGxpY2FibGUgdGVzdCBtb2R1bGVzLiIiIgorICAgIHRlc3RkaXIgPSBmaW5kdGVzdGRpcih0ZXN0ZGlyKQorICAgIG5hbWVzID0gb3MubGlzdGRpcih0ZXN0ZGlyKQorICAgIHRlc3RzID0gW10KKyAgICBvdGhlcnMgPSBzZXQoc3RkdGVzdHMpIHwgbm90dGVzdHMKKyAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgbW9kLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCisgICAgICAgIGlmIG1vZFs6NV0gPT0gInRlc3RfIiBhbmQgZXh0IGluICgiLnB5IiwgIiIpIGFuZCBtb2Qgbm90IGluIG90aGVyczoKKyAgICAgICAgICAgIHRlc3RzLmFwcGVuZChtb2QpCisgICAgcmV0dXJuIHN0ZHRlc3RzICsgc29ydGVkKHRlc3RzKQorCisKK2RlZiBydW50ZXN0KG5zLCB0ZXN0KToKKyAgICAiIiJSdW4gYSBzaW5nbGUgdGVzdC4KKworICAgIG5zIC0tIHJlZ3J0ZXN0IG5hbWVzcGFjZSBvZiBvcHRpb25zCisgICAgdGVzdCAtLSB0aGUgbmFtZSBvZiB0aGUgdGVzdAorCisgICAgUmV0dXJucyB0aGUgdHVwbGUgKHJlc3VsdCwgdGVzdF90aW1lKSwgd2hlcmUgcmVzdWx0IGlzIG9uZSBvZiB0aGUKKyAgICBjb25zdGFudHM6CisKKyAgICAgICAgSU5URVJSVVBURUQgICAgICBLZXlib2FyZEludGVycnVwdCB3aGVuIHJ1biB1bmRlciAtagorICAgICAgICBSRVNPVVJDRV9ERU5JRUQgIHRlc3Qgc2tpcHBlZCBiZWNhdXNlIHJlc291cmNlIGRlbmllZAorICAgICAgICBTS0lQUEVEICAgICAgICAgIHRlc3Qgc2tpcHBlZCBmb3Igc29tZSBvdGhlciByZWFzb24KKyAgICAgICAgRU5WX0NIQU5HRUQgICAgICB0ZXN0IGZhaWxlZCBiZWNhdXNlIGl0IGNoYW5nZWQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudAorICAgICAgICBGQUlMRUQgICAgICAgICAgIHRlc3QgZmFpbGVkCisgICAgICAgIFBBU1NFRCAgICAgICAgICAgdGVzdCBwYXNzZWQKKyAgICAiIiIKKworICAgIG91dHB1dF9vbl9mYWlsdXJlID0gbnMudmVyYm9zZTMKKworICAgIHVzZV90aW1lb3V0ID0gKG5zLnRpbWVvdXQgaXMgbm90IE5vbmUpCisgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcihucy50aW1lb3V0LCBleGl0PVRydWUpCisgICAgdHJ5OgorICAgICAgICBzdXBwb3J0Lm1hdGNoX3Rlc3RzID0gbnMubWF0Y2hfdGVzdHMKKyAgICAgICAgaWYgbnMuZmFpbGZhc3Q6CisgICAgICAgICAgICBzdXBwb3J0LmZhaWxmYXN0ID0gVHJ1ZQorICAgICAgICBpZiBvdXRwdXRfb25fZmFpbHVyZToKKyAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IFRydWUKKworICAgICAgICAgICAgIyBSZXVzZSB0aGUgc2FtZSBpbnN0YW5jZSB0byBhbGwgY2FsbHMgdG8gcnVudGVzdCgpLiBTb21lCisgICAgICAgICAgICAjIHRlc3RzIGtlZXAgYSByZWZlcmVuY2UgdG8gc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyCisgICAgICAgICAgICAjIChlZy4gdGVzdF9hcmdwYXJzZSkuCisgICAgICAgICAgICBpZiBydW50ZXN0LnN0cmluZ2lvIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgICAgIHJ1bnRlc3Quc3RyaW5naW8gPSBzdHJlYW0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3RyZWFtID0gcnVudGVzdC5zdHJpbmdpbworICAgICAgICAgICAgICAgIHN0cmVhbS5zZWVrKDApCisgICAgICAgICAgICAgICAgc3RyZWFtLnRydW5jYXRlKCkKKworICAgICAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgICAgICBvcmlnX3N0ZGVyciA9IHN5cy5zdGRlcnIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc3RyZWFtCisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN0cmVhbQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3RfaW5uZXIobnMsIHRlc3QsIGRpc3BsYXlfZmFpbHVyZT1GYWxzZSkKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gIT0gUEFTU0VEOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBzdHJlYW0uZ2V0dmFsdWUoKQorICAgICAgICAgICAgICAgICAgICBvcmlnX3N0ZGVyci53cml0ZShvdXRwdXQpCisgICAgICAgICAgICAgICAgICAgIG9yaWdfc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IG9yaWdfc3Rkb3V0CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9yaWdfc3RkZXJyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdXBwb3J0LnZlcmJvc2UgPSBucy52ZXJib3NlICAjIFRlbGwgdGVzdHMgdG8gYmUgbW9kZXJhdGVseSBxdWlldAorICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdF9pbm5lcihucywgdGVzdCwgZGlzcGxheV9mYWlsdXJlPW5vdCBucy52ZXJib3NlKQorICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgZmluYWxseToKKyAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKyAgICAgICAgY2xlYW51cF90ZXN0X2Ryb3BwaW5ncyh0ZXN0LCBucy52ZXJib3NlKQorcnVudGVzdC5zdHJpbmdpbyA9IE5vbmUKKworCitkZWYgcnVudGVzdF9pbm5lcihucywgdGVzdCwgZGlzcGxheV9mYWlsdXJlPVRydWUpOgorICAgIHN1cHBvcnQudW5sb2FkKHRlc3QpCisKKyAgICB0ZXN0X3RpbWUgPSAwLjAKKyAgICByZWZsZWFrID0gRmFsc2UgICMgVHJ1ZSBpZiB0aGUgdGVzdCBsZWFrZWQgcmVmZXJlbmNlcy4KKyAgICB0cnk6CisgICAgICAgIGlmIHRlc3Quc3RhcnRzd2l0aCgndGVzdC4nKSBvciBucy50ZXN0ZGlyOgorICAgICAgICAgICAgYWJzdGVzdCA9IHRlc3QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgQWx3YXlzIGltcG9ydCBpdCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2UKKyAgICAgICAgICAgIGFic3Rlc3QgPSAndGVzdC4nICsgdGVzdAorICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdCwgbnMudmVyYm9zZSwgbnMucXVpZXQsIHBnbz1ucy5wZ28pIGFzIGVudmlyb25tZW50OgorICAgICAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICB0aGVfbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoYWJzdGVzdCkKKyAgICAgICAgICAgICMgSWYgdGhlIHRlc3QgaGFzIGEgdGVzdF9tYWluLCB0aGF0IHdpbGwgcnVuIHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAgICAgIyB0ZXN0cy4gIElmIG5vdCwgdXNlIG5vcm1hbCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcuCisgICAgICAgICAgICB0ZXN0X3J1bm5lciA9IGdldGF0dHIodGhlX21vZHVsZSwgInRlc3RfbWFpbiIsIE5vbmUpCisgICAgICAgICAgICBpZiB0ZXN0X3J1bm5lciBpcyBOb25lOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bm5lcigpOgorICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdHMgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSh0aGVfbW9kdWxlKQorICAgICAgICAgICAgICAgICAgICBmb3IgZXJyb3IgaW4gbG9hZGVyLmVycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGVycm9yLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgICAgIGlmIGxvYWRlci5lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImVycm9ycyB3aGlsZSBsb2FkaW5nIHRlc3RzIikKKyAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QodGVzdHMpCisgICAgICAgICAgICB0ZXN0X3J1bm5lcigpCisgICAgICAgICAgICBpZiBucy5odW50cmxlYWtzOgorICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgdGVzdF9ydW5uZXIsIG5zLmh1bnRybGVha3MpCisgICAgICAgICAgICB0ZXN0X3RpbWUgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUKKyAgICBleGNlcHQgc3VwcG9ydC5SZXNvdXJjZURlbmllZCBhcyBtc2c6CisgICAgICAgIGlmIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIHByaW50KHRlc3QsICJza2lwcGVkIC0tIiwgbXNnLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gUkVTT1VSQ0VfREVOSUVELCB0ZXN0X3RpbWUKKyAgICBleGNlcHQgdW5pdHRlc3QuU2tpcFRlc3QgYXMgbXNnOgorICAgICAgICBpZiBub3QgbnMucXVpZXQgYW5kIG5vdCBucy5wZ286CisgICAgICAgICAgICBwcmludCh0ZXN0LCAic2tpcHBlZCAtLSIsIG1zZywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIFNLSVBQRUQsIHRlc3RfdGltZQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcmFpc2UKKyAgICBleGNlcHQgc3VwcG9ydC5UZXN0RmFpbGVkIGFzIG1zZzoKKyAgICAgICAgaWYgbm90IG5zLnBnbzoKKyAgICAgICAgICAgIGlmIGRpc3BsYXlfZmFpbHVyZToKKyAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQgLS0iLCBtc2csIGZpbGU9c3lzLnN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgICBmbHVzaD1UcnVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQiLCBmaWxlPXN5cy5zdGRlcnIsIGZsdXNoPVRydWUpCisgICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQorICAgIGV4Y2VwdDoKKyAgICAgICAgbXNnID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQorICAgICAgICBpZiBub3QgbnMucGdvOgorICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiY3Jhc2hlZCAtLSIsIG1zZywgZmlsZT1zeXMuc3RkZXJyLAorICAgICAgICAgICAgICAgICAgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCisgICAgZWxzZToKKyAgICAgICAgaWYgcmVmbGVhazoKKyAgICAgICAgICAgIHJldHVybiBGQUlMRUQsIHRlc3RfdGltZQorICAgICAgICBpZiBlbnZpcm9ubWVudC5jaGFuZ2VkOgorICAgICAgICAgICAgcmV0dXJuIEVOVl9DSEFOR0VELCB0ZXN0X3RpbWUKKyAgICAgICAgcmV0dXJuIFBBU1NFRCwgdGVzdF90aW1lCisKKworZGVmIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdG5hbWUsIHZlcmJvc2UpOgorICAgIGltcG9ydCBzaHV0aWwKKyAgICBpbXBvcnQgc3RhdAorICAgIGltcG9ydCBnYworCisgICAgIyBGaXJzdCBraWxsIGFueSBkYW5nbGluZyByZWZlcmVuY2VzIHRvIG9wZW4gZmlsZXMgZXRjLgorICAgICMgVGhpcyBjYW4gYWxzbyBpc3N1ZSBzb21lIFJlc291cmNlV2FybmluZ3Mgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGdldAorICAgICMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgZm9sbG93aW5nIHRlc3QgcnVuLCBhbmQgcG9zc2libHkgcHJvZHVjZSBmYWlsdXJlcy4KKyAgICBnYy5jb2xsZWN0KCkKKworICAgICMgVHJ5IHRvIGNsZWFuIHVwIGp1bmsgY29tbW9ubHkgbGVmdCBiZWhpbmQuICBXaGlsZSB0ZXN0cyBzaG91bGRuJ3QgbGVhdmUKKyAgICAjIGFueSBmaWxlcyBvciBkaXJlY3RvcmllcyBiZWhpbmQsIHdoZW4gYSB0ZXN0IGZhaWxzIHRoYXQgY2FuIGJlIHRlZGlvdXMKKyAgICAjIGZvciBpdCB0byBhcnJhbmdlLiAgVGhlIGNvbnNlcXVlbmNlcyBjYW4gYmUgZXNwZWNpYWxseSBuYXN0eSBvbiBXaW5kb3dzLAorICAgICMgc2luY2UgaWYgYSB0ZXN0IGxlYXZlcyBhIGZpbGUgb3BlbiwgaXQgY2Fubm90IGJlIGRlbGV0ZWQgYnkgbmFtZSAod2hpbGUKKyAgICAjIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgdGhhdCBoZXJlIGVpdGhlciwgd2UgY2FuIGRpc3BsYXkgdGhlCisgICAgIyBuYW1lIG9mIHRoZSBvZmZlbmRpbmcgdGVzdCwgd2hpY2ggaXMgYSByZWFsIGhlbHApLgorICAgIGZvciBuYW1lIGluIChzdXBwb3J0LlRFU1RGTiwKKyAgICAgICAgICAgICAgICAgImRiX2hvbWUiLAorICAgICAgICAgICAgICAgICk6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhuYW1lKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgb3MucGF0aC5pc2RpcihuYW1lKToKKyAgICAgICAgICAgIGtpbmQsIG51a2VyID0gImRpcmVjdG9yeSIsIHNodXRpbC5ybXRyZWUKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShuYW1lKToKKyAgICAgICAgICAgIGtpbmQsIG51a2VyID0gImZpbGUiLCBvcy51bmxpbmsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCJvcy5wYXRoIHNheXMgJXIgZXhpc3RzIGJ1dCBpcyBuZWl0aGVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3Rvcnkgbm9yIGZpbGUiICUgbmFtZSkKKworICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoIiVyIGxlZnQgYmVoaW5kICVzICVyIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgaWYgd2UgaGF2ZSBjaG1vZCwgZml4IHBvc3NpYmxlIHBlcm1pc3Npb25zIHByb2JsZW1zCisgICAgICAgICAgICAjIHRoYXQgbWlnaHQgcHJldmVudCBjbGVhbnVwCisgICAgICAgICAgICBpZiAoaGFzYXR0cihvcywgJ2NobW9kJykpOgorICAgICAgICAgICAgICAgIG9zLmNobW9kKG5hbWUsIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYRyB8IHN0YXQuU19JUldYTykKKyAgICAgICAgICAgIG51a2VyKG5hbWUpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgbXNnOgorICAgICAgICAgICAgcHJpbnQoKCIlciBsZWZ0IGJlaGluZCAlcyAlciBhbmQgaXQgY291bGRuJ3QgYmUgIgorICAgICAgICAgICAgICAgICJyZW1vdmVkOiAlcyIgJSAodGVzdG5hbWUsIGtpbmQsIG5hbWUsIG1zZykpLCBmaWxlPXN5cy5zdGRlcnIpCisKKworZGVmIGZpbmR0ZXN0ZGlyKHBhdGg9Tm9uZSk6CisgICAgcmV0dXJuIHBhdGggb3Igb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpIG9yIG9zLmN1cmRpcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlicmVncnRlc3QvcnVudGVzdF9tcC5weSBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3RfbXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYwNGMxNgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3J1bnRlc3RfbXAucHkKQEAgLTAsMCArMSwyNDUgQEAKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBxdWV1ZQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCB0eXBlcworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHByaW50KCJNdWx0aXByb2Nlc3Mgb3B0aW9uIHJlcXVpcmVzIHRocmVhZCBzdXBwb3J0IikKKyAgICBzeXMuZXhpdCgyKQorCitmcm9tIHRlc3QubGlicmVncnRlc3QucnVudGVzdCBpbXBvcnQgKAorICAgIHJ1bnRlc3QsIElOVEVSUlVQVEVELCBDSElMRF9FUlJPUiwgUFJPR1JFU1NfTUlOX1RJTUUsCisgICAgZm9ybWF0X3Rlc3RfcmVzdWx0KQorZnJvbSB0ZXN0LmxpYnJlZ3J0ZXN0LnNldHVwIGltcG9ydCBzZXR1cF90ZXN0cworCisKKyMgRGlzcGxheSB0aGUgcnVubmluZyB0ZXN0cyBpZiBub3RoaW5nIGhhcHBlbmVkIGxhc3QgTiBzZWNvbmRzCitQUk9HUkVTU19VUERBVEUgPSAzMC4wICAgIyBzZWNvbmRzCisKKyMgSWYgaW50ZXJydXB0ZWQsIGRpc3BsYXkgdGhlIHdhaXQgcHJvZ3Jlc3MgZXZlcnkgTiBzZWNvbmRzCitXQUlUX1BST0dSRVNTID0gMi4wICAgIyBzZWNvbmRzCisKKworZGVmIHJ1bl90ZXN0X2luX3N1YnByb2Nlc3ModGVzdG5hbWUsIG5zKToKKyAgICAiIiJSdW4gdGhlIGdpdmVuIHRlc3QgaW4gYSBzdWJwcm9jZXNzIHdpdGggLS1zbGF2ZWFyZ3MuCisKKyAgICBucyBpcyB0aGUgb3B0aW9uIE5hbWVzcGFjZSBwYXJzZWQgZnJvbSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLiByZWdydGVzdAorICAgIGlzIGludm9rZWQgaW4gYSBzdWJwcm9jZXNzIHdpdGggdGhlIC0tc2xhdmVhcmdzIGFyZ3VtZW50OyB3aGVuIHRoZQorICAgIHN1YnByb2Nlc3MgZXhpdHMsIGl0cyByZXR1cm4gY29kZSwgc3Rkb3V0IGFuZCBzdGRlcnIgYXJlIHJldHVybmVkIGFzIGEKKyAgICAzLXR1cGxlLgorICAgICIiIgorICAgIGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKKworICAgIG5zX2RpY3QgPSB2YXJzKG5zKQorICAgIHNsYXZlYXJncyA9IChuc19kaWN0LCB0ZXN0bmFtZSkKKyAgICBzbGF2ZWFyZ3MgPSBqc29uLmR1bXBzKHNsYXZlYXJncykKKworICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgKnN1cHBvcnQuYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCksCisgICAgICAgICAgICctWCcsICdmYXVsdGhhbmRsZXInLAorICAgICAgICAgICAnLW0nLCAndGVzdC5yZWdydGVzdCcsCisgICAgICAgICAgICctLXNsYXZlYXJncycsIHNsYXZlYXJnc10KKyAgICBpZiBucy5wZ286CisgICAgICAgIGNtZCArPSBbJy0tcGdvJ10KKworICAgICMgUnVubmluZyB0aGUgY2hpbGQgZnJvbSB0aGUgc2FtZSB3b3JraW5nIGRpcmVjdG9yeSBhcyByZWdydGVzdCdzIG9yaWdpbmFsCisgICAgIyBpbnZvY2F0aW9uIGVuc3VyZXMgdGhhdCBURU1QRElSIGZvciB0aGUgY2hpbGQgaXMgdGhlIHNhbWUgd2hlbgorICAgICMgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpIGlzIHRydWUuIFNlZSBpc3N1ZSAxNTMwMC4KKyAgICBwb3BlbiA9IFBvcGVuKGNtZCwKKyAgICAgICAgICAgICAgICAgIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwKKyAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPShvcy5uYW1lICE9ICdudCcpLAorICAgICAgICAgICAgICAgICAgY3dkPXN1cHBvcnQuU0FWRURDV0QpCisgICAgd2l0aCBwb3BlbjoKKyAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCisgICAgICAgIHJldGNvZGUgPSBwb3Blbi53YWl0KCkKKyAgICByZXR1cm4gcmV0Y29kZSwgc3Rkb3V0LCBzdGRlcnIKKworCitkZWYgcnVuX3Rlc3RzX3NsYXZlKHNsYXZlYXJncyk6CisgICAgbnNfZGljdCwgdGVzdG5hbWUgPSBqc29uLmxvYWRzKHNsYXZlYXJncykKKyAgICBucyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgqKm5zX2RpY3QpCisKKyAgICBzZXR1cF90ZXN0cyhucykKKworICAgIHRyeToKKyAgICAgICAgcmVzdWx0ID0gcnVudGVzdChucywgdGVzdG5hbWUpCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgJycKKyAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgorICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKKyAgICAgICAgcmVzdWx0ID0gQ0hJTERfRVJST1IsIHN0cihlKQorCisgICAgcHJpbnQoKSAgICMgRm9yY2UgYSBuZXdsaW5lIChqdXN0IGluIGNhc2UpCisgICAgcHJpbnQoanNvbi5kdW1wcyhyZXN1bHQpLCBmbHVzaD1UcnVlKQorICAgIHN5cy5leGl0KDApCisKKworIyBXZSBkbyBub3QgdXNlIGEgZ2VuZXJhdG9yIHNvIG11bHRpcGxlIHRocmVhZHMgY2FuIGNhbGwgbmV4dCgpLgorY2xhc3MgTXVsdGlwcm9jZXNzSXRlcmF0b3I6CisKKyAgICAiIiJBIHRocmVhZC1zYWZlIGl0ZXJhdG9yIG92ZXIgdGVzdHMgZm9yIG11bHRpcHJvY2VzcyBtb2RlLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RzKToKKyAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi50ZXN0cyA9IHRlc3RzCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCd0ZXN0cyBpbnRlcnJ1cHRlZCcpCisgICAgICAgICAgICByZXR1cm4gbmV4dChzZWxmLnRlc3RzKQorCisKK2NsYXNzIE11bHRpcHJvY2Vzc1RocmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGVuZGluZywgb3V0cHV0LCBucyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorICAgICAgICBzZWxmLnBlbmRpbmcgPSBwZW5kaW5nCisgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisgICAgICAgIHNlbGYubnMgPSBucworICAgICAgICBzZWxmLmN1cnJlbnRfdGVzdCA9IE5vbmUKKyAgICAgICAgc2VsZi5zdGFydF90aW1lID0gTm9uZQorCisgICAgZGVmIF9ydW50ZXN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0ID0gbmV4dChzZWxmLnBlbmRpbmcpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICAgICAgc2VsZi5jdXJyZW50X3Rlc3QgPSB0ZXN0CisKKyAgICAgICAgICAgIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0LCBzZWxmLm5zKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5jdXJyZW50X3Rlc3QgPSBOb25lCisKKyAgICAgICAgc3Rkb3V0LCBfLCByZXN1bHQgPSBzdGRvdXQuc3RyaXAoKS5ycGFydGl0aW9uKCJcbiIpCisgICAgICAgIGlmIHJldGNvZGUgIT0gMDoKKyAgICAgICAgICAgIHJlc3VsdCA9IChDSElMRF9FUlJPUiwgIkV4aXQgY29kZSAlcyIgJSByZXRjb2RlKQorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIHNlbGYub3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHJlc3VsdCA9IGpzb24ubG9hZHMocmVzdWx0KQorICAgICAgICBzZWxmLm91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RvcCA9IEZhbHNlCisgICAgICAgICAgICB3aGlsZSBub3Qgc3RvcDoKKyAgICAgICAgICAgICAgICBzdG9wID0gc2VsZi5fcnVudGVzdCgpCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgorICAgICAgICAgICAgc2VsZi5vdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHJhaXNlCisKKworZGVmIHJ1bl90ZXN0c19tdWx0aXByb2Nlc3MocmVncnRlc3QpOgorICAgIG91dHB1dCA9IHF1ZXVlLlF1ZXVlKCkKKyAgICBwZW5kaW5nID0gTXVsdGlwcm9jZXNzSXRlcmF0b3IocmVncnRlc3QudGVzdHMpCisgICAgdGVzdF90aW1lb3V0ID0gcmVncnRlc3QubnMudGltZW91dAorICAgIHVzZV90aW1lb3V0ID0gKHRlc3RfdGltZW91dCBpcyBub3QgTm9uZSkKKworICAgIHdvcmtlcnMgPSBbTXVsdGlwcm9jZXNzVGhyZWFkKHBlbmRpbmcsIG91dHB1dCwgcmVncnRlc3QubnMpCisgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShyZWdydGVzdC5ucy51c2VfbXApXQorICAgIHByaW50KCJSdW4gdGVzdHMgaW4gcGFyYWxsZWwgdXNpbmcgJXMgY2hpbGQgcHJvY2Vzc2VzIgorICAgICAgICAgICUgbGVuKHdvcmtlcnMpKQorICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKKyAgICAgICAgd29ya2VyLnN0YXJ0KCkKKworICAgIGRlZiBnZXRfcnVubmluZyh3b3JrZXJzKToKKyAgICAgICAgcnVubmluZyA9IFtdCisgICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKKyAgICAgICAgICAgIGN1cnJlbnRfdGVzdCA9IHdvcmtlci5jdXJyZW50X3Rlc3QKKyAgICAgICAgICAgIGlmIG5vdCBjdXJyZW50X3Rlc3Q6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGR0ID0gdGltZS5tb25vdG9uaWMoKSAtIHdvcmtlci5zdGFydF90aW1lCisgICAgICAgICAgICBpZiBkdCA+PSBQUk9HUkVTU19NSU5fVElNRToKKyAgICAgICAgICAgICAgICBydW5uaW5nLmFwcGVuZCgnJXMgKCUuMGYgc2VjKScgJSAoY3VycmVudF90ZXN0LCBkdCkpCisgICAgICAgIHJldHVybiBydW5uaW5nCisKKyAgICBmaW5pc2hlZCA9IDAKKyAgICB0ZXN0X2luZGV4ID0gMQorICAgIGdldF90aW1lb3V0ID0gbWF4KFBST0dSRVNTX1VQREFURSwgUFJPR1JFU1NfTUlOX1RJTUUpCisgICAgdHJ5OgorICAgICAgICB3aGlsZSBmaW5pc2hlZCA8IHJlZ3J0ZXN0Lm5zLnVzZV9tcDoKKyAgICAgICAgICAgIGlmIHVzZV90aW1lb3V0OgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcih0ZXN0X3RpbWVvdXQsIGV4aXQ9VHJ1ZSkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGl0ZW0gPSBvdXRwdXQuZ2V0KHRpbWVvdXQ9Z2V0X3RpbWVvdXQpCisgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgcnVubmluZyA9IGdldF9ydW5uaW5nKHdvcmtlcnMpCisgICAgICAgICAgICAgICAgaWYgcnVubmluZyBhbmQgbm90IHJlZ3J0ZXN0Lm5zLnBnbzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ3J1bm5pbmc6ICVzJyAlICcsICcuam9pbihydW5uaW5nKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICB0ZXN0LCBzdGRvdXQsIHN0ZGVyciwgcmVzdWx0ID0gaXRlbQorICAgICAgICAgICAgaWYgdGVzdCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZpbmlzaGVkICs9IDEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcmVncnRlc3QuYWNjdW11bGF0ZV9yZXN1bHQodGVzdCwgcmVzdWx0KQorCisgICAgICAgICAgICAjIERpc3BsYXkgcHJvZ3Jlc3MKKyAgICAgICAgICAgIG9rLCB0ZXN0X3RpbWUgPSByZXN1bHQKKyAgICAgICAgICAgIHRleHQgPSBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdCwgb2spCisgICAgICAgICAgICBpZiAob2sgbm90IGluIChDSElMRF9FUlJPUiwgSU5URVJSVVBURUQpCisgICAgICAgICAgICAgICAgYW5kIHRlc3RfdGltZSA+PSBQUk9HUkVTU19NSU5fVElNRQorICAgICAgICAgICAgICAgIGFuZCBub3QgcmVncnRlc3QubnMucGdvKToKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICcgKCUuMGYgc2VjKScgJSB0ZXN0X3RpbWUKKyAgICAgICAgICAgIHJ1bm5pbmcgPSBnZXRfcnVubmluZyh3b3JrZXJzKQorICAgICAgICAgICAgaWYgcnVubmluZyBhbmQgbm90IHJlZ3J0ZXN0Lm5zLnBnbzoKKyAgICAgICAgICAgICAgICB0ZXh0ICs9ICcgLS0gcnVubmluZzogJXMnICUgJywgJy5qb2luKHJ1bm5pbmcpCisgICAgICAgICAgICByZWdydGVzdC5kaXNwbGF5X3Byb2dyZXNzKHRlc3RfaW5kZXgsIHRleHQpCisKKyAgICAgICAgICAgICMgQ29weSBzdGRvdXQgYW5kIHN0ZGVyciBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzCisgICAgICAgICAgICBpZiBzdGRvdXQ6CisgICAgICAgICAgICAgICAgcHJpbnQoc3Rkb3V0LCBmbHVzaD1UcnVlKQorICAgICAgICAgICAgaWYgc3RkZXJyIGFuZCBub3QgcmVncnRlc3QubnMucGdvOgorICAgICAgICAgICAgICAgIHByaW50KHN0ZGVyciwgZmlsZT1zeXMuc3RkZXJyLCBmbHVzaD1UcnVlKQorCisgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gSU5URVJSVVBURUQ6CisgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgICAgICAgICAgIGlmIHJlc3VsdFswXSA9PSBDSElMRF9FUlJPUjoKKyAgICAgICAgICAgICAgICBtc2cgPSAiQ2hpbGQgZXJyb3Igb24ge306IHt9Ii5mb3JtYXQodGVzdCwgcmVzdWx0WzFdKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihtc2cpCisgICAgICAgICAgICB0ZXN0X2luZGV4ICs9IDEKKyAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIHJlZ3J0ZXN0LmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICBwZW5kaW5nLmludGVycnVwdGVkID0gVHJ1ZQorICAgICAgICBwcmludCgpCisgICAgZmluYWxseToKKyAgICAgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKworICAgICMgSWYgdGVzdHMgYXJlIGludGVycnVwdGVkLCB3YWl0IHVudGlsIHRlc3RzIGNvbXBsZXRlCisgICAgd2FpdF9zdGFydCA9IHRpbWUubW9ub3RvbmljKCkKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBydW5uaW5nID0gW3dvcmtlci5jdXJyZW50X3Rlc3QgZm9yIHdvcmtlciBpbiB3b3JrZXJzXQorICAgICAgICBydW5uaW5nID0gbGlzdChmaWx0ZXIoYm9vbCwgcnVubmluZykpCisgICAgICAgIGlmIG5vdCBydW5uaW5nOgorICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBkdCA9IHRpbWUubW9ub3RvbmljKCkgLSB3YWl0X3N0YXJ0CisgICAgICAgIGxpbmUgPSAiV2FpdGluZyBmb3IgJXMgKCVzIHRlc3RzKSIgJSAoJywgJy5qb2luKHJ1bm5pbmcpLCBsZW4ocnVubmluZykpCisgICAgICAgIGlmIGR0ID49IFdBSVRfUFJPR1JFU1M6CisgICAgICAgICAgICBsaW5lID0gIiVzIHNpbmNlICUuMGYgc2VjIiAlIChsaW5lLCBkdCkKKyAgICAgICAgcHJpbnQobGluZSkKKyAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgorICAgICAgICAgICAgd29ya2VyLmpvaW4oV0FJVF9QUk9HUkVTUykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NhdmVfZW52LnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2F2ZV9lbnYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZhZDNhZgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NhdmVfZW52LnB5CkBAIC0wLDAgKzEsMjg1IEBACitpbXBvcnQgYnVpbHRpbnMKK2ltcG9ydCBsb2NhbGUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgX211bHRpcHJvY2Vzc2luZywgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCisKKworIyBVbml0IHRlc3RzIGFyZSBzdXBwb3NlZCB0byBsZWF2ZSB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50IHVuY2hhbmdlZAorIyBvbmNlIHRoZXkgY29tcGxldGUuICBCdXQgc29tZXRpbWVzIHRlc3RzIGhhdmUgYnVncywgZXNwZWNpYWxseSB3aGVuCisjIHRlc3RzIGZhaWwsIGFuZCB0aGUgY2hhbmdlcyB0byBlbnZpcm9ubWVudCBnbyBvbiB0byBtZXNzIHVwIG90aGVyCisjIHRlc3RzLiAgVGhpcyBjYW4gY2F1c2UgaXNzdWVzIHdpdGggYnVpbGRib3Qgc3RhYmlsaXR5LCBzaW5jZSB0ZXN0cworIyBhcmUgcnVuIGluIHJhbmRvbSBvcmRlciBhbmQgc28gcHJvYmxlbXMgbWF5IGFwcGVhciB0byBjb21lIGFuZCBnby4KKyMgVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB3ZSBjYW4gc2F2ZSBhbmQgcmVzdG9yZSB0byBtaXRpZ2F0ZSB0aGlzLCBhbmQKKyMgdGhlIGZvbGxvd2luZyBjb250ZXh0IG1hbmFnZXIgaGFuZGxlcyB0aGlzIHRhc2suCisKK2NsYXNzIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQ6CisgICAgIiIiU2F2ZSBiaXRzIG9mIHRoZSB0ZXN0IGVudmlyb25tZW50IGFuZCByZXN0b3JlIHRoZW0gYXQgYmxvY2sgZXhpdC4KKworICAgICAgICB3aXRoIHNhdmVkX3Rlc3RfZW52aXJvbm1lbnQodGVzdG5hbWUsIHZlcmJvc2UsIHF1aWV0KToKKyAgICAgICAgICAgICNzdHVmZgorCisgICAgVW5sZXNzIHF1aWV0IGlzIFRydWUsIGEgd2FybmluZyBpcyBwcmludGVkIHRvIHN0ZGVyciBpZiBhbnkgb2YKKyAgICB0aGUgc2F2ZWQgaXRlbXMgd2FzIGNoYW5nZWQgYnkgdGhlIHRlc3QuICBUaGUgYXR0cmlidXRlICdjaGFuZ2VkJworICAgIGlzIGluaXRpYWxseSBGYWxzZSwgYnV0IGlzIHNldCB0byBUcnVlIGlmIGEgY2hhbmdlIGlzIGRldGVjdGVkLgorCisgICAgSWYgdmVyYm9zZSBpcyBtb3JlIHRoYW4gMSwgdGhlIGJlZm9yZSBhbmQgYWZ0ZXIgc3RhdGUgb2YgY2hhbmdlZAorICAgIGl0ZW1zIGlzIGFsc28gcHJpbnRlZC4KKyAgICAiIiIKKworICAgIGNoYW5nZWQgPSBGYWxzZQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RuYW1lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLCAqLCBwZ289RmFsc2UpOgorICAgICAgICBzZWxmLnRlc3RuYW1lID0gdGVzdG5hbWUKKyAgICAgICAgc2VsZi52ZXJib3NlID0gdmVyYm9zZQorICAgICAgICBzZWxmLnF1aWV0ID0gcXVpZXQKKyAgICAgICAgc2VsZi5wZ28gPSBwZ28KKworICAgICMgVG8gYWRkIHRoaW5ncyB0byBzYXZlIGFuZCByZXN0b3JlLCBhZGQgYSBuYW1lIFhYWCB0byB0aGUgcmVzb3VyY2VzIGxpc3QKKyAgICAjIGFuZCBhZGQgY29ycmVzcG9uZGluZyBnZXRfWFhYL3Jlc3RvcmVfWFhYIGZ1bmN0aW9ucy4gIGdldF9YWFggc2hvdWxkCisgICAgIyByZXR1cm4gdGhlIHZhbHVlIHRvIGJlIHNhdmVkIGFuZCBjb21wYXJlZCBhZ2FpbnN0IGEgc2Vjb25kIGNhbGwgdG8gdGhlCisgICAgIyBnZXQgZnVuY3Rpb24gd2hlbiB0ZXN0IGV4ZWN1dGlvbiBjb21wbGV0ZXMuICByZXN0b3JlX1hYWCBzaG91bGQgYWNjZXB0CisgICAgIyB0aGUgc2F2ZWQgdmFsdWUgYW5kIHJlc3RvcmUgdGhlIHJlc291cmNlIHVzaW5nIGl0LiAgSXQgd2lsbCBiZSBjYWxsZWQgaWYKKyAgICAjIGFuZCBvbmx5IGlmIGEgY2hhbmdlIGluIHRoZSB2YWx1ZSBpcyBkZXRlY3RlZC4KKyAgICAjCisgICAgIyBOb3RlOiBYWFggd2lsbCBoYXZlIGFueSAnLicgcmVwbGFjZWQgd2l0aCAnXycgY2hhcmFjdGVycyB3aGVuIGRldGVybWluaW5nCisgICAgIyB0aGUgY29ycmVzcG9uZGluZyBtZXRob2QgbmFtZXMuCisKKyAgICByZXNvdXJjZXMgPSAoJ3N5cy5hcmd2JywgJ2N3ZCcsICdzeXMuc3RkaW4nLCAnc3lzLnN0ZG91dCcsICdzeXMuc3RkZXJyJywKKyAgICAgICAgICAgICAgICAgJ29zLmVudmlyb24nLCAnc3lzLnBhdGgnLCAnc3lzLnBhdGhfaG9va3MnLCAnX19pbXBvcnRfXycsCisgICAgICAgICAgICAgICAgICd3YXJuaW5ncy5maWx0ZXJzJywgJ2FzeW5jb3JlLnNvY2tldF9tYXAnLAorICAgICAgICAgICAgICAgICAnbG9nZ2luZy5faGFuZGxlcnMnLCAnbG9nZ2luZy5faGFuZGxlckxpc3QnLCAnc3lzLmdldHRyYWNlJywKKyAgICAgICAgICAgICAgICAgJ3N5cy53YXJub3B0aW9ucycsCisgICAgICAgICAgICAgICAgICMgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2NsZWFudXAoKSBtYXkgcmVsZWFzZSByZWYKKyAgICAgICAgICAgICAgICAgIyB0byBhIHRocmVhZCwgc28gY2hlY2sgcHJvY2Vzc2VzIGZpcnN0LgorICAgICAgICAgICAgICAgICAnbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nJywgJ3RocmVhZGluZy5fZGFuZ2xpbmcnLAorICAgICAgICAgICAgICAgICAnc3lzY29uZmlnLl9DT05GSUdfVkFSUycsICdzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUycsCisgICAgICAgICAgICAgICAgICdmaWxlcycsICdsb2NhbGUnLCAnd2FybmluZ3Muc2hvd3dhcm5pbmcnLAorICAgICAgICAgICAgICAgICAnc2h1dGlsX2FyY2hpdmVfZm9ybWF0cycsICdzaHV0aWxfdW5wYWNrX2Zvcm1hdHMnLAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBnZXRfc3lzX2FyZ3Yoc2VsZik6CisgICAgICAgIHJldHVybiBpZChzeXMuYXJndiksIHN5cy5hcmd2LCBzeXMuYXJndls6XQorICAgIGRlZiByZXN0b3JlX3N5c19hcmd2KHNlbGYsIHNhdmVkX2FyZ3YpOgorICAgICAgICBzeXMuYXJndiA9IHNhdmVkX2FyZ3ZbMV0KKyAgICAgICAgc3lzLmFyZ3ZbOl0gPSBzYXZlZF9hcmd2WzJdCisKKyAgICBkZWYgZ2V0X2N3ZChzZWxmKToKKyAgICAgICAgcmV0dXJuIG9zLmdldGN3ZCgpCisgICAgZGVmIHJlc3RvcmVfY3dkKHNlbGYsIHNhdmVkX2N3ZCk6CisgICAgICAgIG9zLmNoZGlyKHNhdmVkX2N3ZCkKKworICAgIGRlZiBnZXRfc3lzX3N0ZG91dChzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5zdGRvdXQKKyAgICBkZWYgcmVzdG9yZV9zeXNfc3Rkb3V0KHNlbGYsIHNhdmVkX3N0ZG91dCk6CisgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlZF9zdGRvdXQKKworICAgIGRlZiBnZXRfc3lzX3N0ZGVycihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5zdGRlcnIKKyAgICBkZWYgcmVzdG9yZV9zeXNfc3RkZXJyKHNlbGYsIHNhdmVkX3N0ZGVycik6CisgICAgICAgIHN5cy5zdGRlcnIgPSBzYXZlZF9zdGRlcnIKKworICAgIGRlZiBnZXRfc3lzX3N0ZGluKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLnN0ZGluCisgICAgZGVmIHJlc3RvcmVfc3lzX3N0ZGluKHNlbGYsIHNhdmVkX3N0ZGluKToKKyAgICAgICAgc3lzLnN0ZGluID0gc2F2ZWRfc3RkaW4KKworICAgIGRlZiBnZXRfb3NfZW52aXJvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKG9zLmVudmlyb24pLCBvcy5lbnZpcm9uLCBkaWN0KG9zLmVudmlyb24pCisgICAgZGVmIHJlc3RvcmVfb3NfZW52aXJvbihzZWxmLCBzYXZlZF9lbnZpcm9uKToKKyAgICAgICAgb3MuZW52aXJvbiA9IHNhdmVkX2Vudmlyb25bMV0KKyAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCisgICAgICAgIG9zLmVudmlyb24udXBkYXRlKHNhdmVkX2Vudmlyb25bMl0pCisKKyAgICBkZWYgZ2V0X3N5c19wYXRoKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQoc3lzLnBhdGgpLCBzeXMucGF0aCwgc3lzLnBhdGhbOl0KKyAgICBkZWYgcmVzdG9yZV9zeXNfcGF0aChzZWxmLCBzYXZlZF9wYXRoKToKKyAgICAgICAgc3lzLnBhdGggPSBzYXZlZF9wYXRoWzFdCisgICAgICAgIHN5cy5wYXRoWzpdID0gc2F2ZWRfcGF0aFsyXQorCisgICAgZGVmIGdldF9zeXNfcGF0aF9ob29rcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy5wYXRoX2hvb2tzKSwgc3lzLnBhdGhfaG9va3MsIHN5cy5wYXRoX2hvb2tzWzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX3BhdGhfaG9va3Moc2VsZiwgc2F2ZWRfaG9va3MpOgorICAgICAgICBzeXMucGF0aF9ob29rcyA9IHNhdmVkX2hvb2tzWzFdCisgICAgICAgIHN5cy5wYXRoX2hvb2tzWzpdID0gc2F2ZWRfaG9va3NbMl0KKworICAgIGRlZiBnZXRfc3lzX2dldHRyYWNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc3lzLmdldHRyYWNlKCkKKyAgICBkZWYgcmVzdG9yZV9zeXNfZ2V0dHJhY2Uoc2VsZiwgdHJhY2VfZnhuKToKKyAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlX2Z4bikKKworICAgIGRlZiBnZXRfX19pbXBvcnRfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGJ1aWx0aW5zLl9faW1wb3J0X18KKyAgICBkZWYgcmVzdG9yZV9fX2ltcG9ydF9fKHNlbGYsIGltcG9ydF8pOgorICAgICAgICBidWlsdGlucy5fX2ltcG9ydF9fID0gaW1wb3J0XworCisgICAgZGVmIGdldF93YXJuaW5nc19maWx0ZXJzKHNlbGYpOgorICAgICAgICByZXR1cm4gaWQod2FybmluZ3MuZmlsdGVycyksIHdhcm5pbmdzLmZpbHRlcnMsIHdhcm5pbmdzLmZpbHRlcnNbOl0KKyAgICBkZWYgcmVzdG9yZV93YXJuaW5nc19maWx0ZXJzKHNlbGYsIHNhdmVkX2ZpbHRlcnMpOgorICAgICAgICB3YXJuaW5ncy5maWx0ZXJzID0gc2F2ZWRfZmlsdGVyc1sxXQorICAgICAgICB3YXJuaW5ncy5maWx0ZXJzWzpdID0gc2F2ZWRfZmlsdGVyc1syXQorCisgICAgZGVmIGdldF9hc3luY29yZV9zb2NrZXRfbWFwKHNlbGYpOgorICAgICAgICBhc3luY29yZSA9IHN5cy5tb2R1bGVzLmdldCgnYXN5bmNvcmUnKQorICAgICAgICAjIFhYWCBNYWtpbmcgYSBjb3B5IGtlZXBzIG9iamVjdHMgYWxpdmUgdW50aWwgX19leGl0X18gZ2V0cyBjYWxsZWQuCisgICAgICAgIHJldHVybiBhc3luY29yZSBhbmQgYXN5bmNvcmUuc29ja2V0X21hcC5jb3B5KCkgb3Ige30KKyAgICBkZWYgcmVzdG9yZV9hc3luY29yZV9zb2NrZXRfbWFwKHNlbGYsIHNhdmVkX21hcCk6CisgICAgICAgIGFzeW5jb3JlID0gc3lzLm1vZHVsZXMuZ2V0KCdhc3luY29yZScpCisgICAgICAgIGlmIGFzeW5jb3JlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKGlnbm9yZV9hbGw9VHJ1ZSkKKyAgICAgICAgICAgIGFzeW5jb3JlLnNvY2tldF9tYXAudXBkYXRlKHNhdmVkX21hcCkKKworICAgIGRlZiBnZXRfc2h1dGlsX2FyY2hpdmVfZm9ybWF0cyhzZWxmKToKKyAgICAgICAgIyB3ZSBjb3VsZCBjYWxsIGdldF9hcmNoaXZlc19mb3JtYXRzKCkgYnV0IHRoYXQgb25seSByZXR1cm5zIHRoZQorICAgICAgICAjIHJlZ2lzdHJ5IGtleXM7IHdlIHdhbnQgdG8gY2hlY2sgdGhlIHZhbHVlcyB0b28gKHRoZSBmdW5jdGlvbnMgdGhhdAorICAgICAgICAjIGFyZSByZWdpc3RlcmVkKQorICAgICAgICByZXR1cm4gc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMsIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUyA9IHNhdmVkWzBdCisgICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLmNsZWFyKCkKKyAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMudXBkYXRlKHNhdmVkWzFdKQorCisgICAgZGVmIGdldF9zaHV0aWxfdW5wYWNrX2Zvcm1hdHMoc2VsZik6CisgICAgICAgIHJldHVybiBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLCBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX3NodXRpbF91bnBhY2tfZm9ybWF0cyhzZWxmLCBzYXZlZCk6CisgICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMgPSBzYXZlZFswXQorICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTLmNsZWFyKCkKKyAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy51cGRhdGUoc2F2ZWRbMV0pCisKKyAgICBkZWYgZ2V0X2xvZ2dpbmdfX2hhbmRsZXJzKHNlbGYpOgorICAgICAgICAjIF9oYW5kbGVycyBpcyBhIFdlYWtWYWx1ZURpY3Rpb25hcnkKKyAgICAgICAgcmV0dXJuIGlkKGxvZ2dpbmcuX2hhbmRsZXJzKSwgbG9nZ2luZy5faGFuZGxlcnMsIGxvZ2dpbmcuX2hhbmRsZXJzLmNvcHkoKQorICAgIGRlZiByZXN0b3JlX2xvZ2dpbmdfX2hhbmRsZXJzKHNlbGYsIHNhdmVkX2hhbmRsZXJzKToKKyAgICAgICAgIyBDYW4ndCBlYXNpbHkgcmV2ZXJ0IHRoZSBsb2dnaW5nIHN0YXRlCisgICAgICAgIHBhc3MKKworICAgIGRlZiBnZXRfbG9nZ2luZ19faGFuZGxlckxpc3Qoc2VsZik6CisgICAgICAgICMgX2hhbmRsZXJMaXN0IGlzIGEgbGlzdCBvZiB3ZWFrcmVmcyB0byBoYW5kbGVycworICAgICAgICByZXR1cm4gaWQobG9nZ2luZy5faGFuZGxlckxpc3QpLCBsb2dnaW5nLl9oYW5kbGVyTGlzdCwgbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KKyAgICBkZWYgcmVzdG9yZV9sb2dnaW5nX19oYW5kbGVyTGlzdChzZWxmLCBzYXZlZF9oYW5kbGVyTGlzdCk6CisgICAgICAgICMgQ2FuJ3QgZWFzaWx5IHJldmVydCB0aGUgbG9nZ2luZyBzdGF0ZQorICAgICAgICBwYXNzCisKKyAgICBkZWYgZ2V0X3N5c193YXJub3B0aW9ucyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGlkKHN5cy53YXJub3B0aW9ucyksIHN5cy53YXJub3B0aW9ucywgc3lzLndhcm5vcHRpb25zWzpdCisgICAgZGVmIHJlc3RvcmVfc3lzX3dhcm5vcHRpb25zKHNlbGYsIHNhdmVkX29wdGlvbnMpOgorICAgICAgICBzeXMud2Fybm9wdGlvbnMgPSBzYXZlZF9vcHRpb25zWzFdCisgICAgICAgIHN5cy53YXJub3B0aW9uc1s6XSA9IHNhdmVkX29wdGlvbnNbMl0KKworICAgICMgQ29udHJvbGxpbmcgZGFuZ2xpbmcgcmVmZXJlbmNlcyB0byBUaHJlYWQgb2JqZWN0cyBjYW4gbWFrZSBpdCBlYXNpZXIKKyAgICAjIHRvIHRyYWNrIHJlZmVyZW5jZSBsZWFrcy4KKyAgICBkZWYgZ2V0X3RocmVhZGluZ19fZGFuZ2xpbmcoc2VsZik6CisgICAgICAgIGlmIG5vdCB0aHJlYWRpbmc6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFRoaXMgY29waWVzIHRoZSB3ZWFrcmVmcyB3aXRob3V0IG1ha2luZyBhbnkgc3Ryb25nIHJlZmVyZW5jZQorICAgICAgICByZXR1cm4gdGhyZWFkaW5nLl9kYW5nbGluZy5jb3B5KCkKKyAgICBkZWYgcmVzdG9yZV90aHJlYWRpbmdfX2RhbmdsaW5nKHNlbGYsIHNhdmVkKToKKyAgICAgICAgaWYgbm90IHRocmVhZGluZzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0aHJlYWRpbmcuX2RhbmdsaW5nLmNsZWFyKCkKKyAgICAgICAgdGhyZWFkaW5nLl9kYW5nbGluZy51cGRhdGUoc2F2ZWQpCisKKyAgICAjIFNhbWUgZm9yIFByb2Nlc3Mgb2JqZWN0cworICAgIGRlZiBnZXRfbXVsdGlwcm9jZXNzaW5nX3Byb2Nlc3NfX2RhbmdsaW5nKHNlbGYpOgorICAgICAgICBpZiBub3QgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBVbmpvaW5lZCBwcm9jZXNzIG9iamVjdHMgY2FuIHN1cnZpdmUgYWZ0ZXIgcHJvY2VzcyBleGl0cworICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fY2xlYW51cCgpCisgICAgICAgICMgVGhpcyBjb3BpZXMgdGhlIHdlYWtyZWZzIHdpdGhvdXQgbWFraW5nIGFueSBzdHJvbmcgcmVmZXJlbmNlCisgICAgICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY29weSgpCisgICAgZGVmIHJlc3RvcmVfbXVsdGlwcm9jZXNzaW5nX3Byb2Nlc3NfX2RhbmdsaW5nKHNlbGYsIHNhdmVkKToKKyAgICAgICAgaWYgbm90IG11bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY2xlYXIoKQorICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQorCisgICAgZGVmIGdldF9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgZGljdCBpcyBpbml0aWFsaXplZAorICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3ByZWZpeCcpCisgICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9DT05GSUdfVkFSUyksIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMsCisgICAgICAgICAgICAgICAgZGljdChzeXNjb25maWcuX0NPTkZJR19WQVJTKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNhdmVkWzFdCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzYXZlZFsyXSkKKworICAgIGRlZiBnZXRfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZik6CisgICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMpLCBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUywKKyAgICAgICAgICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jb3B5KCkpCisgICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyA9IHNhdmVkWzFdCisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMudXBkYXRlKHNhdmVkWzJdKQorCisgICAgZGVmIGdldF9maWxlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvcnRlZChmbiArICgnLycgaWYgb3MucGF0aC5pc2RpcihmbikgZWxzZSAnJykKKyAgICAgICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcigpKQorICAgIGRlZiByZXN0b3JlX2ZpbGVzKHNlbGYsIHNhdmVkX3ZhbHVlKToKKyAgICAgICAgZm4gPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBpZiBmbiBub3QgaW4gc2F2ZWRfdmFsdWUgYW5kIChmbiArICcvJykgbm90IGluIHNhdmVkX3ZhbHVlOgorICAgICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZm4pOgorICAgICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKGZuKQorICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZuKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShmbikKKworICAgIF9sYyA9IFtnZXRhdHRyKGxvY2FsZSwgbGMpIGZvciBsYyBpbiBkaXIobG9jYWxlKQorICAgICAgICAgICBpZiBsYy5zdGFydHN3aXRoKCdMQ18nKV0KKyAgICBkZWYgZ2V0X2xvY2FsZShzZWxmKToKKyAgICAgICAgcGFpcmluZ3MgPSBbXQorICAgICAgICBmb3IgbGMgaW4gc2VsZi5fbGM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGFpcmluZ3MuYXBwZW5kKChsYywgbG9jYWxlLnNldGxvY2FsZShsYywgTm9uZSkpKQorICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHJldHVybiBwYWlyaW5ncworICAgIGRlZiByZXN0b3JlX2xvY2FsZShzZWxmLCBzYXZlZCk6CisgICAgICAgIGZvciBsYywgc2V0dGluZyBpbiBzYXZlZDoKKyAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobGMsIHNldHRpbmcpCisKKyAgICBkZWYgZ2V0X3dhcm5pbmdzX3Nob3d3YXJuaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gd2FybmluZ3Muc2hvd3dhcm5pbmcKKyAgICBkZWYgcmVzdG9yZV93YXJuaW5nc19zaG93d2FybmluZyhzZWxmLCBmeG4pOgorICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZyA9IGZ4bgorCisgICAgZGVmIHJlc291cmNlX2luZm8oc2VsZik6CisgICAgICAgIGZvciBuYW1lIGluIHNlbGYucmVzb3VyY2VzOgorICAgICAgICAgICAgbWV0aG9kX3N1ZmZpeCA9IG5hbWUucmVwbGFjZSgnLicsICdfJykKKyAgICAgICAgICAgIGdldF9uYW1lID0gJ2dldF8nICsgbWV0aG9kX3N1ZmZpeAorICAgICAgICAgICAgcmVzdG9yZV9uYW1lID0gJ3Jlc3RvcmVfJyArIG1ldGhvZF9zdWZmaXgKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIGdldGF0dHIoc2VsZiwgZ2V0X25hbWUpLCBnZXRhdHRyKHNlbGYsIHJlc3RvcmVfbmFtZSkKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHNlbGYuc2F2ZWRfdmFsdWVzID0gZGljdCgobmFtZSwgZ2V0KCkpIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHNlbGYucmVzb3VyY2VfaW5mbygpKQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgorICAgICAgICBzYXZlZF92YWx1ZXMgPSBzZWxmLnNhdmVkX3ZhbHVlcworICAgICAgICBkZWwgc2VsZi5zYXZlZF92YWx1ZXMKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkgICMgU29tZSByZXNvdXJjZXMgdXNlIHdlYWsgcmVmZXJlbmNlcworICAgICAgICBmb3IgbmFtZSwgZ2V0LCByZXN0b3JlIGluIHNlbGYucmVzb3VyY2VfaW5mbygpOgorICAgICAgICAgICAgY3VycmVudCA9IGdldCgpCisgICAgICAgICAgICBvcmlnaW5hbCA9IHNhdmVkX3ZhbHVlcy5wb3AobmFtZSkKKyAgICAgICAgICAgICMgQ2hlY2sgZm9yIGNoYW5nZXMgdG8gdGhlIHJlc291cmNlJ3MgdmFsdWUKKyAgICAgICAgICAgIGlmIGN1cnJlbnQgIT0gb3JpZ2luYWw6CisgICAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJlc3RvcmUob3JpZ2luYWwpCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYucXVpZXQgYW5kIG5vdCBzZWxmLnBnbzoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZiJXYXJuaW5nIC0tIHtuYW1lfSB3YXMgbW9kaWZpZWQgYnkge3NlbGYudGVzdG5hbWV9IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyLCBmbHVzaD1UcnVlKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2UgPiAxOgorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZiIgIEJlZm9yZToge29yaWdpbmFsfVxuICBBZnRlcjogIHtjdXJyZW50fSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyLCBmbHVzaD1UcnVlKQorICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NldHVwLnB5IGIvTGliL3Rlc3QvbGlicmVncnRlc3Qvc2V0dXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQyNDUzMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2xpYnJlZ3J0ZXN0L3NldHVwLnB5CkBAIC0wLDAgKzEsMTIxIEBACitpbXBvcnQgYXRleGl0CitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Cit0cnk6CisgICAgaW1wb3J0IGdjCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZ2MgPSBOb25lCisKK2Zyb20gdGVzdC5saWJyZWdydGVzdC5yZWZsZWFrIGltcG9ydCB3YXJtX2NhY2hlcworCisKK2RlZiBzZXR1cF90ZXN0cyhucyk6CisgICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycyAoZS5nLiBzZWdmYXVsdCkKKyAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKGFsbF90aHJlYWRzPVRydWUpCisKKyAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gU0lHQUxSTSBvciBTSUdVU1IxIHNpZ25hbAorICAgIHNpZ25hbHMgPSBbXQorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpOgorICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHQUxSTSkKKyAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR1VTUjEnKToKKyAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR1VTUjEpCisgICAgZm9yIHNpZ251bSBpbiBzaWduYWxzOgorICAgICAgICBmYXVsdGhhbmRsZXIucmVnaXN0ZXIoc2lnbnVtLCBjaGFpbj1UcnVlKQorCisgICAgcmVwbGFjZV9zdGRvdXQoKQorICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQorCisgICAgaWYgbnMudGVzdGRpcjoKKyAgICAgICAgIyBQcmVwZW5kIHRlc3QgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLCBzbyBydW50ZXN0KCkgd2lsbCBiZSBhYmxlCisgICAgICAgICMgdG8gbG9jYXRlIHRlc3RzCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmFic3BhdGgobnMudGVzdGRpcikpCisKKyAgICAjIFNvbWUgdGltZXMgX19wYXRoX18gYW5kIF9fZmlsZV9fIGFyZSBub3QgYWJzb2x1dGUgKGUuZy4gd2hpbGUgcnVubmluZyBmcm9tCisgICAgIyBMaWIvKSBhbmQsIGlmIHdlIGNoYW5nZSB0aGUgQ1dEIHRvIHJ1biB0aGUgdGVzdHMgaW4gYSB0ZW1wb3JhcnkgZGlyLCBzb21lCisgICAgIyBpbXBvcnRzIG1pZ2h0IGZhaWwuICBUaGlzIGFmZmVjdHMgb25seSB0aGUgbW9kdWxlcyBpbXBvcnRlZCBiZWZvcmUgb3MuY2hkaXIoKS4KKyAgICAjIFRoZXNlIG1vZHVsZXMgYXJlIHNlYXJjaGVkIGZpcnN0IGluIHN5cy5wYXRoWzBdIChzbyAnJyAtLSB0aGUgQ1dEKSBhbmQgaWYKKyAgICAjIHRoZXkgYXJlIGZvdW5kIGluIHRoZSBDV0QgdGhlaXIgX19maWxlX18gYW5kIF9fcGF0aF9fIHdpbGwgYmUgcmVsYXRpdmUgKHRoaXMKKyAgICAjIGhhcHBlbnMgYmVmb3JlIHRoZSBjaGRpcikuICBBbGwgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYWZ0ZXIgdGhlIGNoZGlyLCBhcmUKKyAgICAjIG5vdCBmb3VuZCBpbiB0aGUgQ1dELCBhbmQgc2luY2UgdGhlIG90aGVyIHBhdGhzIGluIHN5cy5wYXRoWzE6XSBhcmUgYWJzb2x1dGUKKyAgICAjIChzaXRlLnB5IGFic29sdXRpemUgdGhlbSksIHRoZSBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSBhYnNvbHV0ZSB0b28uCisgICAgIyBUaGVyZWZvcmUgaXQgaXMgbmVjZXNzYXJ5IHRvIGFic29sdXRpemUgbWFudWFsbHkgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyBvZgorICAgICMgdGhlIHBhY2thZ2VzIHRvIHByZXZlbnQgbGF0ZXIgaW1wb3J0cyB0byBmYWlsIHdoZW4gdGhlIENXRCBpcyBkaWZmZXJlbnQuCisgICAgZm9yIG1vZHVsZSBpbiBzeXMubW9kdWxlcy52YWx1ZXMoKToKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX3BhdGhfXycpOgorICAgICAgICAgICAgZm9yIGluZGV4LCBwYXRoIGluIGVudW1lcmF0ZShtb2R1bGUuX19wYXRoX18pOgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfX1tpbmRleF0gPSBvcy5wYXRoLmFic3BhdGgocGF0aCkKKyAgICAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpOgorICAgICAgICAgICAgbW9kdWxlLl9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKG1vZHVsZS5fX2ZpbGVfXykKKworICAgICMgTWFjT1NYIChhLmsuYS4gRGFyd2luKSBoYXMgYSBkZWZhdWx0IHN0YWNrIHNpemUgdGhhdCBpcyB0b28gc21hbGwKKyAgICAjIGZvciBkZWVwbHkgcmVjdXJzaXZlIHJlZ3VsYXIgZXhwcmVzc2lvbnMuICBXZSBzZWUgdGhpcyBhcyBjcmFzaGVzIGluCisgICAgIyB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2hlbiBydW5uaW5nIHRlc3RfcmUucHkgYW5kIHRlc3Rfc3JlLnB5LiAgVGhlCisgICAgIyBmaXggaXMgdG8gc2V0IHRoZSBzdGFjayBsaW1pdCB0byAyMDQ4LgorICAgICMgVGhpcyBhcHByb2FjaCBtYXkgYWxzbyBiZSB1c2VmdWwgZm9yIG90aGVyIFVuaXh5IHBsYXRmb3JtcyB0aGF0CisgICAgIyBzdWZmZXIgZnJvbSBzbWFsbCBkZWZhdWx0IHN0YWNrIGxpbWl0cy4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCByZXNvdXJjZQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzb2Z0LCBoYXJkID0gcmVzb3VyY2UuZ2V0cmxpbWl0KHJlc291cmNlLlJMSU1JVF9TVEFDSykKKyAgICAgICAgICAgIG5ld3NvZnQgPSBtaW4oaGFyZCwgbWF4KHNvZnQsIDEwMjQqMjA0OCkpCisgICAgICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX1NUQUNLLCAobmV3c29mdCwgaGFyZCkpCisKKyAgICBpZiBucy5odW50cmxlYWtzOgorICAgICAgICB1bml0dGVzdC5CYXNlVGVzdFN1aXRlLl9jbGVhbnVwID0gRmFsc2UKKworICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdmFyaW91cyBjYWNoZXMKKyAgICAgICAgIyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhOgorICAgICAgICB3YXJtX2NhY2hlcygpCisKKyAgICBpZiBucy5tZW1saW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAgc3VwcG9ydC5zZXRfbWVtbGltaXQobnMubWVtbGltaXQpCisKKyAgICBpZiBucy50aHJlc2hvbGQgaXMgbm90IE5vbmU6CisgICAgICAgIGdjLnNldF90aHJlc2hvbGQobnMudGhyZXNob2xkKQorCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgbXN2Y3J0CisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgbXN2Y3J0LlNldEVycm9yTW9kZShtc3ZjcnQuU0VNX0ZBSUxDUklUSUNBTEVSUk9SU3wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LlNFTV9OT0dQRkFVTFRFUlJPUkJPWHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuU0VNX05PT1BFTkZJTEVFUlJPUkJPWCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyByZWxlYXNlIGJ1aWxkCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgbSBpbiBbbXN2Y3J0LkNSVF9XQVJOLCBtc3ZjcnQuQ1JUX0VSUk9SLCBtc3ZjcnQuQ1JUX0FTU0VSVF06CisgICAgICAgICAgICAgICAgaWYgbnMudmVyYm9zZSBhbmQgbnMudmVyYm9zZSA+PSAyOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCBtc3ZjcnQuQ1JUREJHX01PREVfRklMRSkKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydEZpbGUobSwgbXN2Y3J0LkNSVERCR19GSUxFX1NUREVSUikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZShtLCAwKQorCisgICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gbnMudXNlX3Jlc291cmNlcworCisKK2RlZiByZXBsYWNlX3N0ZG91dCgpOgorICAgICIiIlNldCBzdGRvdXQgZW5jb2RlciBlcnJvciBoYW5kbGVyIHRvIGJhY2tzbGFzaHJlcGxhY2UgKGFzIHN0ZGVyciBlcnJvcgorICAgIGhhbmRsZXIpIHRvIGF2b2lkIFVuaWNvZGVFbmNvZGVFcnJvciB3aGVuIHByaW50aW5nIGEgdHJhY2ViYWNrIiIiCisgICAgc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgIHN5cy5zdGRvdXQgPSBvcGVuKHN0ZG91dC5maWxlbm8oKSwgJ3cnLAorICAgICAgICBlbmNvZGluZz1zdGRvdXQuZW5jb2RpbmcsCisgICAgICAgIGVycm9ycz0iYmFja3NsYXNocmVwbGFjZSIsCisgICAgICAgIGNsb3NlZmQ9RmFsc2UsCisgICAgICAgIG5ld2xpbmU9J1xuJykKKworICAgIGRlZiByZXN0b3JlX3N0ZG91dCgpOgorICAgICAgICBzeXMuc3Rkb3V0LmNsb3NlKCkKKyAgICAgICAgc3lzLnN0ZG91dCA9IHN0ZG91dAorICAgIGF0ZXhpdC5yZWdpc3RlcihyZXN0b3JlX3N0ZG91dCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CmluZGV4IGYyMGZkYzAuLjI2ZTkzNjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQpAQCAtMjY2LDkgKzI2NiwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGxpc3QoInNwYW1lZ2dzIikpCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhLmV4dGVuZCwgTm9uZSkKLQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGEuZXh0ZW5kKQogCisgICAgICAgICMgb3ZlcmZsb3cgdGVzdC4gaXNzdWUxNjIxCisgICAgICAgIGNsYXNzIEN1c3RvbUl0ZXI6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICBkZWYgX19sZW5ndGhfaGludF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzeXMubWF4c2l6ZQorICAgICAgICBhID0gc2VsZi50eXBlMnRlc3QoWzEsMiwzLDRdKQorICAgICAgICBhLmV4dGVuZChDdXN0b21JdGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzEsMiwzLDRdKQorCisKICAgICBkZWYgdGVzdF9pbnNlcnQoc2VsZik6CiAgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChbMCwgMSwgMl0pCiAgICAgICAgIGEuaW5zZXJ0KDAsIC0yKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weSBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKaW5kZXggYTY0YWExOC4uYTZjYjNiMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbG9ja190ZXN0cy5weQorKysgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CkBAIC03LDYgKzcsNyBAQAogZnJvbSBfdGhyZWFkIGltcG9ydCBzdGFydF9uZXdfdGhyZWFkLCBUSU1FT1VUX01BWAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Vha3JlZgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMTk4LDYgKzE5OSwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3VsdHNbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltZW91dChyZXN1bHRzWzFdLCAwLjUpCiAKKyAgICBkZWYgdGVzdF93ZWFrcmVmX2V4aXN0cyhzZWxmKToKKyAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQorICAgICAgICByZWYgPSB3ZWFrcmVmLnJlZihsb2NrKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZWYoKSkKKworICAgIGRlZiB0ZXN0X3dlYWtyZWZfZGVsZXRlZChzZWxmKToKKyAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQorICAgICAgICByZWYgPSB3ZWFrcmVmLnJlZihsb2NrKQorICAgICAgICBkZWwgbG9jaworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZWYoKSkKKwogCiBjbGFzcyBMb2NrVGVzdHMoQmFzZUxvY2tUZXN0cyk6CiAgICAgIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weSBiL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5CmluZGV4IGExZjI5OGQuLjRkOWYwMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5CisrKyBiL0xpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5CkBAIC0zLDcgKzMsNiBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSBzdWJwcm9jZXNzIGltcG9ydCAqCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weSBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQppbmRleCA3OTIyYjU0Li41YzgzMzYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKKysrIGIvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CkBAIC0xMDAwLDcgKzEwMDAsNyBAQAogICAgICAgICAgICAgYicwJywgICAgICAgICAgICAgICAgICAgICAgICMgUE9QCiAgICAgICAgICAgICBiJzEnLCAgICAgICAgICAgICAgICAgICAgICAgIyBQT1BfTUFSSwogICAgICAgICAgICAgYicyJywgICAgICAgICAgICAgICAgICAgICAgICMgRFVQCi0gICAgICAgICAgICAjIGInKDInLCAgICAgICAgICAgICAgICAgICAgIyBQeVVucGlja2xlciBkb2Vzbid0IHJhaXNlCisgICAgICAgICAgICBiJygyJywKICAgICAgICAgICAgIGInUicsICAgICAgICAgICAgICAgICAgICAgICAjIFJFRFVDRQogICAgICAgICAgICAgYicpUicsCiAgICAgICAgICAgICBiJ2EnLCAgICAgICAgICAgICAgICAgICAgICAgIyBBUFBFTkQKQEAgLTEwMDksNyArMTAwOSw3IEBACiAgICAgICAgICAgICBiJ05iJywKICAgICAgICAgICAgIGInZCcsICAgICAgICAgICAgICAgICAgICAgICAjIERJQ1QKICAgICAgICAgICAgIGInZScsICAgICAgICAgICAgICAgICAgICAgICAjIEFQUEVORFMKLSAgICAgICAgICAgICMgYicoZScsICAgICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgorICAgICAgICAgICAgYicoZScsCiAgICAgICAgICAgICBiJ2lidWlsdGluc1xubGlzdFxuJywgICAgICAgIyBJTlNUCiAgICAgICAgICAgICBiJ2wnLCAgICAgICAgICAgICAgICAgICAgICAgIyBMSVNUCiAgICAgICAgICAgICBiJ28nLCAgICAgICAgICAgICAgICAgICAgICAgIyBPQkoKQEAgLTEwMjIsNyArMTAyMiw3IEBACiAgICAgICAgICAgICBiJ05OcycsCiAgICAgICAgICAgICBiJ3QnLCAgICAgICAgICAgICAgICAgICAgICAgIyBUVVBMRQogICAgICAgICAgICAgYid1JywgICAgICAgICAgICAgICAgICAgICAgICMgU0VUSVRFTVMKLSAgICAgICAgICAgICMgYicodScsICAgICAgICAgICAgICAgICAgICAjIFB5VW5waWNrbGVyIGRvZXNuJ3QgcmFpc2UKKyAgICAgICAgICAgIGInKHUnLAogICAgICAgICAgICAgYid9KE51JywKICAgICAgICAgICAgIGInXHg4MScsICAgICAgICAgICAgICAgICAgICAjIE5FV09CSgogICAgICAgICAgICAgYicpXHg4MScsCkBAIC0xMDMzLDcgKzEwMzMsNyBAQAogICAgICAgICAgICAgYidOXHg4NycsCiAgICAgICAgICAgICBiJ05OXHg4NycsCiAgICAgICAgICAgICBiJ1x4OTAnLCAgICAgICAgICAgICAgICAgICAgIyBBRERJVEVNUwotICAgICAgICAgICAgIyBiJyhceDkwJywgICAgICAgICAgICAgICAgICMgUHlVbnBpY2tsZXIgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCisgICAgICAgICAgICBiJyhceDkwJywKICAgICAgICAgICAgIGInXHg5MScsICAgICAgICAgICAgICAgICAgICAjIEZST1pFTlNFVAogICAgICAgICAgICAgYidceDkyJywgICAgICAgICAgICAgICAgICAgICMgTkVXT0JKX0VYCiAgICAgICAgICAgICBiJyl9XHg5MicsCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQAogCiAgICAgZGVmIHRlc3RfYmFkX21hcmsoc2VsZik6CiAgICAgICAgIGJhZHBpY2tsZXMgPSBbCi0gICAgICAgICAgICAjIGInTiguJywgICAgICAgICAgICAgICAgICAgICAjIFNUT1AKKyAgICAgICAgICAgIGInTiguJywgICAgICAgICAgICAgICAgICAgICAjIFNUT1AKICAgICAgICAgICAgIGInTigyJywgICAgICAgICAgICAgICAgICAgICAjIERVUAogICAgICAgICAgICAgYidjYnVpbHRpbnNcbmxpc3RcbikoUicsICAgICMgUkVEVUNFCiAgICAgICAgICAgICBiJ2NidWlsdGluc1xubGlzdFxuKClSJywKQEAgLTEwODEsNyArMTA4MSw3IEBACiAgICAgICAgICAgICBiJ04oXHg5NCcsICAgICAgICAgICAgICAgICAgIyBNRU1PSVpFCiAgICAgICAgIF0KICAgICAgICAgZm9yIHAgaW4gYmFkcGlja2xlczoKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfdW5waWNrbGluZ19lcnJvcihzZWxmLmJhZF9tYXJrX2Vycm9ycywgcCkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfdW5waWNrbGluZ19lcnJvcihzZWxmLmJhZF9zdGFja19lcnJvcnMsIHApCiAKICAgICBkZWYgdGVzdF90cnVuY2F0ZWRfZGF0YShzZWxmKToKICAgICAgICAgc2VsZi5jaGVja191bnBpY2tsaW5nX2Vycm9yKEVPRkVycm9yLCBiJycpCkBAIC0xODU1LDE2ICsxODU1LDE0IEBACiAgICAgICAgIHguYWJjID0gNjY2CiAgICAgICAgIGZvciBwcm90byBpbiBwcm90b2NvbHM6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwcm90bz1wcm90byk6Ci0gICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuZHVtcHMsIHgsIHByb3RvKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHgsIHByb3RvKQogICAgICAgICAgICAgICAgIGlmIHByb3RvIDwgMToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1xuTDY0MjA2JywgcykgICMgTE9ORwogICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCAyOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInTVx4Y2VceGZhJywgcykgICMgQklOSU5UMgorICAgICAgICAgICAgICAgIGVsaWYgcHJvdG8gPCA0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInWFx4MDRceDAwXHgwMFx4MDBGQUNFJywgcykgICMgQklOVU5JQ09ERQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydCBwcm90byA+PSA0CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidceDhjXHgwNEZBQ0UnLCBzKSAgIyBTSE9SVF9CSU5VTklDT0RFCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcGNvZGVfaW5fcGlja2xlKHBpY2tsZS5ORVdPQkosIHMpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bjb2RlX2luX3BpY2tsZShwaWNrbGUuTkVXT0JKX0VYLCBzKSwKQEAgLTI1ODMsMTEgKzI1ODEsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhwaWNrbGUuUGlja2xpbmdFcnJvciwgQmFkUGlja2xlcigpLmR1bXAsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEJhZFVucGlja2xlcigpLmxvYWQpCiAKLSAgICBkZWYgdGVzdF9iYWRfaW5wdXQoc2VsZik6Ci0gICAgICAgICMgVGVzdCBpc3N1ZTQyOTgKLSAgICAgICAgcyA9IGJ5dGVzKFsweDU4LCAwLCAwLCAwLCAweDU0XSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IsIHBpY2tsZS5sb2FkcywgcykKLQogCiBjbGFzcyBBYnN0cmFjdFBlcnNpc3RlbnRQaWNrbGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9weWRvY19tb2QucHkgYi9MaWIvdGVzdC9weWRvY19tb2QucHkKaW5kZXggY2RhMWM5ZS4uOWMxZmZmNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcHlkb2NfbW9kLnB5CisrKyBiL0xpYi90ZXN0L3B5ZG9jX21vZC5weQpAQCAtMTIsNyArMTIsNyBAQAogICAgICAgICBwYXNzCiAKIGNsYXNzIEIob2JqZWN0KToKLSAgICBOT19NRUFOSU5HID0gImVnZ3MiCisgICAgTk9fTUVBTklORzogc3RyID0gImVnZ3MiCiAgICAgcGFzcwogCiBjbGFzcyBDKG9iamVjdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZV90ZXN0cy5weSBiL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CmluZGV4IDhjMTU4ZjguLmEzNzlkMzMgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3JlX3Rlc3RzLnB5CkBAIC0xMDYsOCArMTA2LDggQEAKICAgICAoJ2EuKmInLCAnYWNjXG5jY2InLCBGQUlMKSwKICAgICAoJ2EuezQsNX1iJywgJ2FjY1xuY2NiJywgRkFJTCksCiAgICAgKCdhLmInLCAnYVxyYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXHJiJyksCi0gICAgKCdhLmIoP3MpJywgJ2FcbmInLCBTVUNDRUVELCAnZm91bmQnLCAnYVxuYicpLAotICAgICgnYS4qKD9zKWInLCAnYWNjXG5jY2InLCBTVUNDRUVELCAnZm91bmQnLCAnYWNjXG5jY2InKSwKKyAgICAoJyg/cylhLmInLCAnYVxuYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXG5iJyksCisgICAgKCcoP3MpYS4qYicsICdhY2NcbmNjYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhY2NcbmNjYicpLAogICAgICgnKD9zKWEuezQsNX1iJywgJ2FjY1xuY2NiJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FjY1xuY2NiJyksCiAgICAgKCcoP3MpYS5iJywgJ2FcbmInLCBTVUNDRUVELCAnZm91bmQnLCAnYVxuYicpLAogCkBAIC0xNTgsNyArMTU4LDcgQEAKICAgICAoJyhhYmMnLCAnLScsIFNZTlRBWF9FUlJPUiksCiAgICAgKCdhXScsICdhXScsIFNVQ0NFRUQsICdmb3VuZCcsICdhXScpLAogICAgICgnYVtdXWInLCAnYV1iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdYicpLAotICAgICgnYVtcXV1iJywgJ2FdYicsIFNVQ0NFRUQsICdmb3VuZCcsICdhXWInKSwKKyAgICAoJ2FbXFxdXWInLCAnYV1iJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2FdYicpLAogICAgICgnYVteYmNdZCcsICdhZWQnLCBTVUNDRUVELCAnZm91bmQnLCAnYWVkJyksCiAgICAgKCdhW15iY11kJywgJ2FiZCcsIEZBSUwpLAogICAgICgnYVteLWJdYycsICdhZGMnLCBTVUNDRUVELCAnZm91bmQnLCAnYWRjJyksCkBAIC01NTEsNyArNTUxLDcgQEAKICAgICAjIGxvb2tiZWhpbmQ6IHNwbGl0IGJ5IDogYnV0IG5vdCBpZiBpdCBpcyBlc2NhcGVkIGJ5IC0uCiAgICAgKCcoPzwhLSk6KC4qPykoPzwhLSk6JywgJ2E6YmMtOmRlOmYnLCBTVUNDRUVELCAnZzEnLCAnYmMtOmRlJyApLAogICAgICMgZXNjYXBpbmcgd2l0aCBcIGFzIHdlIGtub3cgaXQKLSAgICAoJyg/PCFcXFwpOiguKj8pKD88IVxcXCk6JywgJ2E6YmNcXDpkZTpmJywgU1VDQ0VFRCwgJ2cxJywgJ2JjXFw6ZGUnICksCisgICAgKCcoPzwhXFxcXCk6KC4qPykoPzwhXFxcXCk6JywgJ2E6YmNcXDpkZTpmJywgU1VDQ0VFRCwgJ2cxJywgJ2JjXFw6ZGUnICksCiAgICAgIyB0ZXJtaW5hdGluZyB3aXRoICcgYW5kIGVzY2FwaW5nIHdpdGggPyBhcyBpbiBlZGlmYWN0CiAgICAgKCIoPzwhXFw/KScoLio/KSg/PCFcXD8pJyIsICJhJ2JjPydkZSdmIiwgU1VDQ0VFRCwgJ2cxJywgImJjPydkZSIgKSwKIApAQCAtNTYzLDcgKzU2Myw3IEBACiAgICAgIyBDaGVjayBvZGQgcGxhY2VtZW50IG9mIGVtYmVkZGVkIHBhdHRlcm4gbW9kaWZpZXJzCiAKICAgICAjIG5vdCBhbiBlcnJvciB1bmRlciBQQ1JFL1BSRToKLSAgICAoJ3coP2kpJywgJ1cnLCBTVUNDRUVELCAnZm91bmQnLCAnVycpLAorICAgICgnKD9pKXcnLCAnVycsIFNVQ0NFRUQsICdmb3VuZCcsICdXJyksCiAgICAgIyAoJ3coP2kpJywgJ1cnLCBTWU5UQVhfRVJST1IpLAogCiAgICAgIyBDb21tZW50cyB1c2luZyB0aGUgeCBlbWJlZGRlZCBwYXR0ZXJuIG1vZGlmaWVyCkBAIC02MjcsNyArNjI3LDcgQEAKICAgICAjIGJ1ZyAxMTQwMzM6IG5vdGhpbmcgdG8gcmVwZWF0CiAgICAgKHInKHg/KT8nLCAneCcsIFNVQ0NFRUQsICdmb3VuZCcsICd4JyksCiAgICAgIyBidWcgMTE1MDQwOiByZXNjYW4gaWYgZmxhZ3MgYXJlIG1vZGlmaWVkIGluc2lkZSBwYXR0ZXJuCi0gICAgKHInICg/eClmb28gJywgJ2ZvbycsIFNVQ0NFRUQsICdmb3VuZCcsICdmb28nKSwKKyAgICAocicoP3gpIGZvbyAnLCAnZm9vJywgU1VDQ0VFRCwgJ2ZvdW5kJywgJ2ZvbycpLAogICAgICMgYnVnIDExNTYxODogbmVnYXRpdmUgbG9va2FoZWFkCiAgICAgKHInKD88IWFiYykoZC5mKScsICdhYmNkZWZkb2YnLCBTVUNDRUVELCAnZm91bmQnLCAnZG9mJyksCiAgICAgIyBidWcgMTE2MjUxOiBjaGFyYWN0ZXIgY2xhc3MgYnVnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggZjg3MDg1NC4uMjFiMGVkZgotLS0gYS9MaWIvdGVzdC9yZWdydGVzdC5weQorKysgYi9MaWIvdGVzdC9yZWdydGVzdC5weQpAQCAtNiwxNjA4ICs2LDMzIEBACiBSdW4gdGhpcyBzY3JpcHQgd2l0aCAtaCBvciAtLWhlbHAgZm9yIGRvY3VtZW50YXRpb24uCiAiIiIKIAotVVNBR0UgPSAiIiJcCi1weXRob24gLW0gdGVzdCBbb3B0aW9uc10gW3Rlc3RfbmFtZTEgW3Rlc3RfbmFtZTIgLi4uXV0KLXB5dGhvbiBwYXRoL3RvL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IFtvcHRpb25zXSBbdGVzdF9uYW1lMSBbdGVzdF9uYW1lMiAuLi5dXQotIiIiCi0KLURFU0NSSVBUSU9OID0gIiIiXAotUnVuIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLgotCi1JZiBubyBhcmd1bWVudHMgb3Igb3B0aW9ucyBhcmUgcHJvdmlkZWQsIGZpbmRzIGFsbCBmaWxlcyBtYXRjaGluZwotdGhlIHBhdHRlcm4gInRlc3RfKiIgaW4gdGhlIExpYi90ZXN0IHN1YmRpcmVjdG9yeSBhbmQgcnVucwotdGhlbSBpbiBhbHBoYWJldGljYWwgb3JkZXIgKGJ1dCBzZWUgLU0gYW5kIC11LCBiZWxvdywgZm9yIGV4Y2VwdGlvbnMpLgotCi1Gb3IgbW9yZSByaWdvcm91cyB0ZXN0aW5nLCBpdCBpcyB1c2VmdWwgdG8gdXNlIHRoZSBmb2xsb3dpbmcKLWNvbW1hbmQgbGluZToKLQotcHl0aG9uIC1FIC1XZCAtbSB0ZXN0IFtvcHRpb25zXSBbdGVzdF9uYW1lMSAuLi5dCi0iIiIKLQotRVBJTE9HID0gIiIiXAotQWRkaXRpb25hbCBvcHRpb24gZGV0YWlsczoKLQotLXIgcmFuZG9taXplcyB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4gWW91IGNhbiB1c2UgLS1yYW5kc2VlZD1pbnQgdG8gcHJvdmlkZSBhbgotaW50IHNlZWQgdmFsdWUgZm9yIHRoZSByYW5kb21pemVyOyB0aGlzIGlzIHVzZWZ1bCBmb3IgcmVwcm9kdWNpbmcgdHJvdWJsZXNvbWUKLXRlc3Qgb3JkZXJzLgotCi0tcyBPbiB0aGUgZmlyc3QgaW52b2NhdGlvbiBvZiByZWdydGVzdCB1c2luZyAtcywgdGhlIGZpcnN0IHRlc3QgZmlsZSBmb3VuZAotb3IgdGhlIGZpcnN0IHRlc3QgZmlsZSBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIHJ1biwgYW5kIHRoZSBuYW1lIG9mCi10aGUgbmV4dCB0ZXN0IGlzIHJlY29yZGVkIGluIGEgZmlsZSBuYW1lZCBweW5leHR0ZXN0LiAgSWYgcnVuIGZyb20gdGhlCi1QeXRob24gYnVpbGQgZGlyZWN0b3J5LCBweW5leHR0ZXN0IGlzIGxvY2F0ZWQgaW4gdGhlICdidWlsZCcgc3ViZGlyZWN0b3J5LAotb3RoZXJ3aXNlIGl0IGlzIGxvY2F0ZWQgaW4gdGVtcGZpbGUuZ2V0dGVtcGRpcigpLiAgT24gc3Vic2VxdWVudCBydW5zLAotdGhlIHRlc3QgaW4gcHluZXh0dGVzdCBpcyBydW4sIGFuZCB0aGUgbmV4dCB0ZXN0IGlzIHdyaXR0ZW4gdG8gcHluZXh0dGVzdC4KLVdoZW4gdGhlIGxhc3QgdGVzdCBoYXMgYmVlbiBydW4sIHB5bmV4dHRlc3QgaXMgZGVsZXRlZC4gIEluIHRoaXMgd2F5IGl0Ci1pcyBwb3NzaWJsZSB0byBzaW5nbGUgc3RlcCB0aHJvdWdoIHRoZSB0ZXN0IGZpbGVzLiAgVGhpcyBpcyB1c2VmdWwgd2hlbgotZG9pbmcgbWVtb3J5IGFuYWx5c2lzIG9uIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIHdoaWNoIHByb2Nlc3MgdGVuZHMgdG8KLWNvbnN1bWUgdG9vIG1hbnkgcmVzb3VyY2VzIHRvIHJ1biB0aGUgZnVsbCByZWdyZXNzaW9uIHRlc3Qgbm9uLXN0b3AuCi0KLS1TIGlzIHVzZWQgdG8gY29udGludWUgcnVubmluZyB0ZXN0cyBhZnRlciBhbiBhYm9ydGVkIHJ1bi4gIEl0IHdpbGwKLW1haW50YWluIHRoZSBvcmRlciBhIHN0YW5kYXJkIHJ1biAoaWUsIHRoaXMgYXNzdW1lcyAtciBpcyBub3QgdXNlZCkuCi1UaGlzIGlzIHVzZWZ1bCBhZnRlciB0aGUgdGVzdHMgaGF2ZSBwcmVtYXR1cmVseSBzdG9wcGVkIGZvciBzb21lIGV4dGVybmFsCi1yZWFzb24gYW5kIHlvdSB3YW50IHRvIHN0YXJ0IHJ1bm5pbmcgZnJvbSB3aGVyZSB5b3UgbGVmdCBvZmYgcmF0aGVyCi10aGFuIHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZy4KLQotLWYgcmVhZHMgdGhlIG5hbWVzIG9mIHRlc3RzIGZyb20gdGhlIGZpbGUgZ2l2ZW4gYXMgZidzIGFyZ3VtZW50LCBvbmUKLW9yIG1vcmUgdGVzdCBuYW1lcyBwZXIgbGluZS4gIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4gIEJsYW5rIGxpbmVzIGFuZAotbGluZXMgYmVnaW5uaW5nIHdpdGggJyMnIGFyZSBpZ25vcmVkLiAgVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IKLXdoaXR0bGluZyBkb3duIGZhaWx1cmVzIGludm9sdmluZyBpbnRlcmFjdGlvbnMgYW1vbmcgdGVzdHMuCi0KLS1MIGNhdXNlcyB0aGUgbGVha3MoMSkgY29tbWFuZCB0byBiZSBydW4ganVzdCBiZWZvcmUgZXhpdCBpZiBpdCBleGlzdHMuCi1sZWFrcygxKSBpcyBhdmFpbGFibGUgb24gTWFjIE9TIFggYW5kIHByZXN1bWFibHkgb24gc29tZSBvdGhlcgotRnJlZUJTRC1kZXJpdmVkIHN5c3RlbXMuCi0KLS1SIHJ1bnMgZWFjaCB0ZXN0IHNldmVyYWwgdGltZXMgYW5kIGV4YW1pbmVzIHN5cy5nZXR0b3RhbHJlZmNvdW50KCkgdG8KLXNlZSBpZiB0aGUgdGVzdCBhcHBlYXJzIHRvIGJlIGxlYWtpbmcgcmVmZXJlbmNlcy4gIFRoZSBhcmd1bWVudCBzaG91bGQKLWJlIG9mIHRoZSBmb3JtIHN0YWI6cnVuOmZuYW1lIHdoZXJlICdzdGFiJyBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZQotdGVzdCBpcyBydW4gdG8gbGV0IGdldHRvdGFscmVmY291bnQgc2V0dGxlIGRvd24sICdydW4nIGlzIHRoZSBudW1iZXIKLW9mIHRpbWVzIGZ1cnRoZXIgaXQgaXMgcnVuIGFuZCAnZm5hbWUnIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRoZQotcmVwb3J0cyBhcmUgd3JpdHRlbiB0by4gIFRoZXNlIHBhcmFtZXRlcnMgYWxsIGhhdmUgZGVmYXVsdHMgKDUsIDQgYW5kCi0icmVmbG9nLnR4dCIgcmVzcGVjdGl2ZWx5KSwgYW5kIHRoZSBtaW5pbWFsIGludm9jYXRpb24gaXMgJy1SIDonLgotCi0tTSBydW5zIHRlc3RzIHRoYXQgcmVxdWlyZSBhbiBleG9yYml0YW50IGFtb3VudCBvZiBtZW1vcnkuIFRoZXNlIHRlc3RzCi10eXBpY2FsbHkgdHJ5IHRvIGFzY2VydGFpbiBjb250YWluZXJzIGtlZXAgd29ya2luZyB3aGVuIGNvbnRhaW5pbmcgbW9yZSB0aGFuCi0yIGJpbGxpb24gb2JqZWN0cywgd2hpY2ggb25seSB3b3JrcyBvbiA2NC1iaXQgc3lzdGVtcy4gVGhlcmUgYXJlIGFsc28gc29tZQotdGVzdHMgdGhhdCB0cnkgdG8gZXhoYXVzdCB0aGUgYWRkcmVzcyBzcGFjZSBvZiB0aGUgcHJvY2Vzcywgd2hpY2ggb25seSBtYWtlcwotc2Vuc2Ugb24gMzItYml0IHN5c3RlbXMgd2l0aCBhdCBsZWFzdCAyR2Igb2YgbWVtb3J5LiBUaGUgcGFzc2VkLWluIG1lbWxpbWl0LAotd2hpY2ggaXMgYSBzdHJpbmcgaW4gdGhlIGZvcm0gb2YgJzIuNUdiJywgZGV0ZXJtaW5lcyBob3dtdWNoIG1lbW9yeSB0aGUKLXRlc3RzIHdpbGwgbGltaXQgdGhlbXNlbHZlcyB0byAoYnV0IHRoZXkgbWF5IGdvIHNsaWdodGx5IG92ZXIuKSBUaGUgbnVtYmVyCi1zaG91bGRuJ3QgYmUgbW9yZSBtZW1vcnkgdGhhbiB0aGUgbWFjaGluZSBoYXMgKGluY2x1ZGluZyBzd2FwIG1lbW9yeSkuIFlvdQotc2hvdWxkIGFsc28ga2VlcCBpbiBtaW5kIHRoYXQgc3dhcCBtZW1vcnkgaXMgZ2VuZXJhbGx5IG11Y2gsIG11Y2ggc2xvd2VyCi10aGFuIFJBTSwgYW5kIHNldHRpbmcgbWVtbGltaXQgdG8gYWxsIGF2YWlsYWJsZSBSQU0gb3IgaGlnaGVyIHdpbGwgaGVhdmlseQotdGF4IHRoZSBtYWNoaW5lLiBPbiB0aGUgb3RoZXIgaGFuZCwgaXQgaXMgbm8gdXNlIHJ1bm5pbmcgdGhlc2UgdGVzdHMgd2l0aCBhCi1saW1pdCBvZiBsZXNzIHRoYW4gMi41R2IsIGFuZCBtYW55IHJlcXVpcmUgbW9yZSB0aGFuIDIwR2IuIFRlc3RzIHRoYXQgZXhwZWN0Ci10byB1c2UgbW9yZSB0aGFuIG1lbWxpbWl0IG1lbW9yeSB3aWxsIGJlIHNraXBwZWQuIFRoZSBiaWctbWVtb3J5IHRlc3RzCi1nZW5lcmFsbHkgcnVuIHZlcnksIHZlcnkgbG9uZy4KLQotLXUgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIHNwZWNpYWwgcmVzb3VyY2UgaW50ZW5zaXZlIHRlc3RzIHRvIHJ1biwKLXN1Y2ggYXMgdGhvc2UgcmVxdWlyaW5nIGxhcmdlIGZpbGUgc3VwcG9ydCBvciBuZXR3b3JrIGNvbm5lY3Rpdml0eS4KLVRoZSBhcmd1bWVudCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHdvcmRzIGluZGljYXRpbmcgdGhlCi1yZXNvdXJjZXMgdG8gdGVzdC4gIEN1cnJlbnRseSBvbmx5IHRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQ6Ci0KLSAgICBhbGwgLSAgICAgICBFbmFibGUgYWxsIHNwZWNpYWwgcmVzb3VyY2VzLgotCi0gICAgbm9uZSAtICAgICAgRGlzYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMgKHRoaXMgaXMgdGhlIGRlZmF1bHQpLgotCi0gICAgYXVkaW8gLSAgICAgVGVzdHMgdGhhdCB1c2UgdGhlIGF1ZGlvIGRldmljZS4gIChUaGVyZSBhcmUga25vd24KLSAgICAgICAgICAgICAgICBjYXNlcyBvZiBicm9rZW4gYXVkaW8gZHJpdmVycyB0aGF0IGNhbiBjcmFzaCBQeXRob24gb3IKLSAgICAgICAgICAgICAgICBldmVuIHRoZSBMaW51eCBrZXJuZWwuKQotCi0gICAgY3Vyc2VzIC0gICAgVGVzdHMgdGhhdCB1c2UgY3Vyc2VzIGFuZCB3aWxsIG1vZGlmeSB0aGUgdGVybWluYWwncwotICAgICAgICAgICAgICAgIHN0YXRlIGFuZCBvdXRwdXQgbW9kZXMuCi0KLSAgICBsYXJnZWZpbGUgLSBJdCBpcyBva2F5IHRvIHJ1biBzb21lIHRlc3QgdGhhdCBtYXkgY3JlYXRlIGh1Z2UKLSAgICAgICAgICAgICAgICBmaWxlcy4gIFRoZXNlIHRlc3RzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBtYXkKLSAgICAgICAgICAgICAgICBjb25zdW1lID4yR0Igb2YgZGlzayBzcGFjZSB0ZW1wb3JhcmlseS4KLQotICAgIG5ldHdvcmsgLSAgIEl0IGlzIG9rYXkgdG8gcnVuIHRlc3RzIHRoYXQgdXNlIGV4dGVybmFsIG5ldHdvcmsKLSAgICAgICAgICAgICAgICByZXNvdXJjZSwgZS5nLiB0ZXN0aW5nIFNTTCBzdXBwb3J0IGZvciBzb2NrZXRzLgotCi0gICAgZGVjaW1hbCAtICAgVGVzdCB0aGUgZGVjaW1hbCBtb2R1bGUgYWdhaW5zdCBhIGxhcmdlIHN1aXRlIHRoYXQKLSAgICAgICAgICAgICAgICB2ZXJpZmllcyBjb21wbGlhbmNlIHdpdGggc3RhbmRhcmRzLgotCi0gICAgY3B1IC0gICAgICAgVXNlZCBmb3IgY2VydGFpbiBDUFUtaGVhdnkgdGVzdHMuCi0KLSAgICBzdWJwcm9jZXNzICBSdW4gYWxsIHRlc3RzIGZvciB0aGUgc3VicHJvY2VzcyBtb2R1bGUuCi0KLSAgICB1cmxmZXRjaCAtICBJdCBpcyBva2F5IHRvIGRvd25sb2FkIGZpbGVzIHJlcXVpcmVkIG9uIHRlc3RpbmcuCi0KLSAgICBndWkgLSAgICAgICBSdW4gdGVzdHMgdGhhdCByZXF1aXJlIGEgcnVubmluZyBHVUkuCi0KLVRvIGVuYWJsZSBhbGwgcmVzb3VyY2VzIGV4Y2VwdCBvbmUsIHVzZSAnLXVhbGwsLTxyZXNvdXJjZT4nLiAgRm9yCi1leGFtcGxlLCB0byBydW4gYWxsIHRoZSB0ZXN0cyBleGNlcHQgZm9yIHRoZSBndWkgdGVzdHMsIGdpdmUgdGhlCi1vcHRpb24gJy11YWxsLC1ndWknLgotIiIiCi0KICMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKIGltcG9ydCBpbXBvcnRsaWIKIAotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgYnVpbHRpbnMKLWltcG9ydCBmYXVsdGhhbmRsZXIKLWltcG9ydCBpbwotaW1wb3J0IGpzb24KLWltcG9ydCBsb2NhbGUKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCi1pbXBvcnQgc3lzY29uZmlnCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCB0aW1lCi1pbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwotZnJvbSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0Citmcm9tIHRlc3QubGlicmVncnRlc3QgaW1wb3J0IG1haW4KIAotdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0aHJlYWRpbmcgPSBOb25lCi10cnk6Ci0gICAgaW1wb3J0IF9tdWx0aXByb2Nlc3NpbmcsIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgbXVsdGlwcm9jZXNzaW5nID0gTm9uZQogCisjIEFsaWFzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IChqdXN0IGluIGNhc2UpCittYWluX2luX3RlbXBfY3dkID0gbWFpbgogCi0jIFNvbWUgdGltZXMgX19wYXRoX18gYW5kIF9fZmlsZV9fIGFyZSBub3QgYWJzb2x1dGUgKGUuZy4gd2hpbGUgcnVubmluZyBmcm9tCi0jIExpYi8pIGFuZCwgaWYgd2UgY2hhbmdlIHRoZSBDV0QgdG8gcnVuIHRoZSB0ZXN0cyBpbiBhIHRlbXBvcmFyeSBkaXIsIHNvbWUKLSMgaW1wb3J0cyBtaWdodCBmYWlsLiAgVGhpcyBhZmZlY3RzIG9ubHkgdGhlIG1vZHVsZXMgaW1wb3J0ZWQgYmVmb3JlIG9zLmNoZGlyKCkuCi0jIFRoZXNlIG1vZHVsZXMgYXJlIHNlYXJjaGVkIGZpcnN0IGluIHN5cy5wYXRoWzBdIChzbyAnJyAtLSB0aGUgQ1dEKSBhbmQgaWYKLSMgdGhleSBhcmUgZm91bmQgaW4gdGhlIENXRCB0aGVpciBfX2ZpbGVfXyBhbmQgX19wYXRoX18gd2lsbCBiZSByZWxhdGl2ZSAodGhpcwotIyBoYXBwZW5zIGJlZm9yZSB0aGUgY2hkaXIpLiAgQWxsIHRoZSBtb2R1bGVzIGltcG9ydGVkIGFmdGVyIHRoZSBjaGRpciwgYXJlCi0jIG5vdCBmb3VuZCBpbiB0aGUgQ1dELCBhbmQgc2luY2UgdGhlIG90aGVyIHBhdGhzIGluIHN5cy5wYXRoWzE6XSBhcmUgYWJzb2x1dGUKLSMgKHNpdGUucHkgYWJzb2x1dGl6ZSB0aGVtKSwgdGhlIF9fZmlsZV9fIGFuZCBfX3BhdGhfXyB3aWxsIGJlIGFic29sdXRlIHRvby4KLSMgVGhlcmVmb3JlIGl0IGlzIG5lY2Vzc2FyeSB0byBhYnNvbHV0aXplIG1hbnVhbGx5IHRoZSBfX2ZpbGVfXyBhbmQgX19wYXRoX18gb2YKLSMgdGhlIHBhY2thZ2VzIHRvIHByZXZlbnQgbGF0ZXIgaW1wb3J0cyB0byBmYWlsIHdoZW4gdGhlIENXRCBpcyBkaWZmZXJlbnQuCi1mb3IgbW9kdWxlIGluIHN5cy5tb2R1bGVzLnZhbHVlcygpOgotICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKLSAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW29zLnBhdGguYWJzcGF0aChwYXRoKSBmb3IgcGF0aCBpbiBtb2R1bGUuX19wYXRoX19dCi0gICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpOgotICAgICAgICBtb2R1bGUuX19maWxlX18gPSBvcy5wYXRoLmFic3BhdGgobW9kdWxlLl9fZmlsZV9fKQogCi0KLSMgTWFjT1NYIChhLmsuYS4gRGFyd2luKSBoYXMgYSBkZWZhdWx0IHN0YWNrIHNpemUgdGhhdCBpcyB0b28gc21hbGwKLSMgZm9yIGRlZXBseSByZWN1cnNpdmUgcmVndWxhciBleHByZXNzaW9ucy4gIFdlIHNlZSB0aGlzIGFzIGNyYXNoZXMgaW4KLSMgdGhlIFB5dGhvbiB0ZXN0IHN1aXRlIHdoZW4gcnVubmluZyB0ZXN0X3JlLnB5IGFuZCB0ZXN0X3NyZS5weS4gIFRoZQotIyBmaXggaXMgdG8gc2V0IHRoZSBzdGFjayBsaW1pdCB0byAyMDQ4LgotIyBUaGlzIGFwcHJvYWNoIG1heSBhbHNvIGJlIHVzZWZ1bCBmb3Igb3RoZXIgVW5peHkgcGxhdGZvcm1zIHRoYXQKLSMgc3VmZmVyIGZyb20gc21hbGwgZGVmYXVsdCBzdGFjayBsaW1pdHMuCi1pZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgcmVzb3VyY2UKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBzb2Z0LCBoYXJkID0gcmVzb3VyY2UuZ2V0cmxpbWl0KHJlc291cmNlLlJMSU1JVF9TVEFDSykKLSAgICAgICAgbmV3c29mdCA9IG1pbihoYXJkLCBtYXgoc29mdCwgMTAyNCoyMDQ4KSkKLSAgICAgICAgcmVzb3VyY2Uuc2V0cmxpbWl0KHJlc291cmNlLlJMSU1JVF9TVEFDSywgKG5ld3NvZnQsIGhhcmQpKQotCi0jIFRlc3QgcmVzdWx0IGNvbnN0YW50cy4KLVBBU1NFRCA9IDEKLUZBSUxFRCA9IDAKLUVOVl9DSEFOR0VEID0gLTEKLVNLSVBQRUQgPSAtMgotUkVTT1VSQ0VfREVOSUVEID0gLTMKLUlOVEVSUlVQVEVEID0gLTQKLUNISUxEX0VSUk9SID0gLTUgICAjIGVycm9yIGluIGEgY2hpbGQgcHJvY2VzcwotCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLQotUkVTT1VSQ0VfTkFNRVMgPSAoJ2F1ZGlvJywgJ2N1cnNlcycsICdsYXJnZWZpbGUnLCAnbmV0d29yaycsCi0gICAgICAgICAgICAgICAgICAnZGVjaW1hbCcsICdjcHUnLCAnc3VicHJvY2VzcycsICd1cmxmZXRjaCcsICdndWknKQotCi0jIFdoZW4gdGVzdHMgYXJlIHJ1biBmcm9tIHRoZSBQeXRob24gYnVpbGQgZGlyZWN0b3J5LCBpdCBpcyBiZXN0IHByYWN0aWNlCi0jIHRvIGtlZXAgdGhlIHRlc3QgZmlsZXMgaW4gYSBzdWJmb2xkZXIuICBUaGlzIGVhc2VzIHRoZSBjbGVhbnVwIG9mIGxlZnRvdmVyCi0jIGZpbGVzIHVzaW5nIHRoZSAibWFrZSBkaXN0Y2xlYW4iIGNvbW1hbmQuCi1pZiBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6Ci0gICAgVEVNUERJUiA9IG9zLnBhdGguam9pbihzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpLCAnYnVpbGQnKQotZWxzZToKLSAgICBURU1QRElSID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi1URU1QRElSID0gb3MucGF0aC5hYnNwYXRoKFRFTVBESVIpCi0KLWNsYXNzIF9BcmdQYXJzZXIoYXJncGFyc2UuQXJndW1lbnRQYXJzZXIpOgotCi0gICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICBzdXBlcigpLmVycm9yKG1lc3NhZ2UgKyAiXG5QYXNzIC1oIG9yIC0taGVscCBmb3IgY29tcGxldGUgaGVscC4iKQotCi1kZWYgX2NyZWF0ZV9wYXJzZXIoKToKLSAgICAjIFNldCBwcm9nIHRvIHByZXZlbnQgdGhlIHVuaW5mb3JtYXRpdmUgIl9fbWFpbl9fLnB5IiBmcm9tIGRpc3BsYXlpbmcgaW4KLSAgICAjIGVycm9yIG1lc3NhZ2VzIHdoZW4gdXNpbmcgInB5dGhvbiAtbSB0ZXN0IC4uLiIuCi0gICAgcGFyc2VyID0gX0FyZ1BhcnNlcihwcm9nPSdyZWdydGVzdC5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2FnZT1VU0FHRSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPURFU0NSSVBUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPUVQSUxPRywKLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9oZWxwPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLlJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcikKLQotICAgICMgQXJndW1lbnRzIHdpdGggdGhpcyBjbGF1c2UgYWRkZWQgdG8gaXRzIGhlbHAgYXJlIGRlc2NyaWJlZCBmdXJ0aGVyIGluCi0gICAgIyB0aGUgZXBpbG9nJ3MgIkFkZGl0aW9uYWwgb3B0aW9uIGRldGFpbHMiIHNlY3Rpb24uCi0gICAgbW9yZV9kZXRhaWxzID0gJyAgU2VlIHRoZSBzZWN0aW9uIGF0IGJvdHRvbSBmb3IgbW9yZSBkZXRhaWxzLicKLQotICAgIGdyb3VwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnR2VuZXJhbCBvcHRpb25zJykKLSAgICAjIFdlIGFkZCBoZWxwIGV4cGxpY2l0bHkgdG8gY29udHJvbCB3aGF0IGFyZ3VtZW50IGdyb3VwIGl0IHJlbmRlcnMgdW5kZXIuCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tdGltZW91dCcsIG1ldGF2YXI9J1RJTUVPVVQnLCB0eXBlPWZsb2F0LAotICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3JlIHRoYW4gVElNRU9VVCBzZWNvbmRzOyBkaXNhYmxlZCBpZiBUSU1FT1VUICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5lZ2F0aXZlIG9yIGVxdWFscyB0byB6ZXJvJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0td2FpdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3dhaXQgZm9yIHVzZXIgaW5wdXQsIGUuZy4sIGFsbG93IGEgZGVidWdnZXIgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0byBiZSBhdHRhY2hlZCcpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXNsYXZlYXJncycsIG1ldGF2YXI9J0FSR1MnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVMnLCAnLS1zdGFydCcsIG1ldGF2YXI9J1NUQVJUJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndGhlIG5hbWUgb2YgdGhlIHRlc3QgYXQgd2hpY2ggdG8gc3RhcnQuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdWZXJib3NpdHknKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJib3NlJywgYWN0aW9uPSdjb3VudCcsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3J1biB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUgd2l0aCBvdXRwdXQgdG8gc3Rkb3V0JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy13JywgJy0tdmVyYm9zZTInLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZS1ydW4gZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctVycsICctLXZlcmJvc2UzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzcGxheSB0ZXN0IG91dHB1dCBvbiBmYWlsdXJlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1xJywgJy0tcXVpZXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdubyBvdXRwdXQgdW5sZXNzIG9uZSBvciBtb3JlIHRlc3RzIGZhaWwnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLW8nLCAnLS1zbG93JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ncHJpbnRfc2xvdycsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3ByaW50IHRoZSBzbG93ZXN0IDEwIHRlc3RzJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0taGVhZGVyJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncHJpbnQgaGVhZGVyIHdpdGggaW50ZXJwcmV0ZXIgaW5mbycpCi0KLSAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1NlbGVjdGluZyB0ZXN0cycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcicsICctLXJhbmRvbWl6ZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JhbmRvbWl6ZSB0ZXN0IGV4ZWN1dGlvbiBvcmRlci4nICsgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1yYW5kc2VlZCcsIG1ldGF2YXI9J1NFRUQnLAotICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdyYW5kb21fc2VlZCcsIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwYXNzIGEgcmFuZG9tIHNlZWQgdG8gcmVwcm9kdWNlIGEgcHJldmlvdXMgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYW5kb20gcnVuJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1mJywgJy0tZnJvbWZpbGUnLCBtZXRhdmFyPSdGSUxFJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncmVhZCBuYW1lcyBvZiB0ZXN0cyB0byBydW4gZnJvbSBhIGZpbGUuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXgnLCAnLS1leGNsdWRlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nYXJndW1lbnRzIGFyZSB0ZXN0cyB0byAqZXhjbHVkZSonKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zaW5nbGUnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzaW5nbGUgc3RlcCB0aHJvdWdoIGEgc2V0IG9mIHRlc3RzLicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVfZGV0YWlscykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbWF0Y2gnLCBtZXRhdmFyPSdQQVQnLAotICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdtYXRjaF90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J21hdGNoIHRlc3QgY2FzZXMgYW5kIG1ldGhvZHMgd2l0aCBnbG9iIHBhdHRlcm4gUEFUJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1HJywgJy0tZmFpbGZhc3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmYWlsIGFzIHNvb24gYXMgYSB0ZXN0IGZhaWxzIChvbmx5IHdpdGggLXYgb3IgLVcpJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy11JywgJy0tdXNlJywgbWV0YXZhcj0nUkVTMSxSRVMyLC4uLicsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nYXBwZW5kJywgdHlwZT1yZXNvdXJjZXNfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nc3BlY2lmeSB3aGljaCBzcGVjaWFsIHJlc291cmNlIGludGVuc2l2ZSB0ZXN0cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvIHJ1bi4nICsgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLU0nLCAnLS1tZW1saW1pdCcsIG1ldGF2YXI9J0xJTUlUJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHZlcnkgbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cy4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3JlX2RldGFpbHMpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXRlc3RkaXInLCBtZXRhdmFyPSdESVInLAotICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXJlbGF0aXZlX2ZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdleGVjdXRlIHRlc3QgZmlsZXMgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoaW5zdGVhZCBvZiB0aGUgUHl0aG9uIHN0ZGxpYiB0ZXN0IHN1aXRlKScpCi0KLSAgICBncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ1NwZWNpYWwgcnVucycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbCcsICctLWZpbmRsZWFrcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2lmIEdDIGlzIGF2YWlsYWJsZSBkZXRlY3QgdGVzdHMgdGhhdCBsZWFrIG1lbW9yeScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctTCcsICctLXJ1bmxlYWtzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIHRoZSBsZWFrcygxKSBjb21tYW5kIGp1c3QgYmVmb3JlIGV4aXQuJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLVInLCAnLS1odW50cmxlYWtzJywgbWV0YXZhcj0nUlVOQ09VTlRTJywKLSAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1odW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZWFyY2ggZm9yIHJlZmVyZW5jZSBsZWFrcyAobmVlZHMgZGVidWcgYnVpbGQsICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyeSBzbG93KS4nICsgbW9yZV9kZXRhaWxzKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLWonLCAnLS1tdWx0aXByb2Nlc3MnLCBtZXRhdmFyPSdQUk9DRVNTRVMnLAotICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1c2VfbXAnLCB0eXBlPWludCwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIFBST0NFU1NFUyBwcm9jZXNzZXMgYXQgb25jZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctVCcsICctLWNvdmVyYWdlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndHJhY2UnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd0dXJuIG9uIGNvZGUgY292ZXJhZ2UgdHJhY2luZyB1c2luZyB0aGUgdHJhY2UgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb2R1bGUnKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLUQnLCAnLS1jb3ZlcmRpcicsIG1ldGF2YXI9J0RJUicsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9cmVsYXRpdmVfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2RpcmVjdG9yeSB3aGVyZSBjb3ZlcmFnZSBmaWxlcyBhcmUgcHV0JykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy1OJywgJy0tbm9jb3ZlcmRpcicsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD1Ob25lLCBkZXN0PSdjb3ZlcmRpcicsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3B1dCBjb3ZlcmFnZSBmaWxlcyBhbG9uZ3NpZGUgbW9kdWxlcycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctdCcsICctLXRocmVzaG9sZCcsIG1ldGF2YXI9J1RIUkVTSE9MRCcsCi0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU9aW50LAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjYWxsIGdjLnNldF90aHJlc2hvbGQoVEhSRVNIT0xEKScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbicsICctLW5vd2luZG93cycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3N1cHByZXNzIGVycm9yIG1lc3NhZ2UgYm94ZXMgb24gV2luZG93cycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctRicsICctLWZvcmV2ZXInLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdydW4gdGhlIHNwZWNpZmllZCB0ZXN0cyBpbiBhIGxvb3AsIHVudGlsIGFuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3IgaGFwcGVucycpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUCcsICctLXBnbycsIGRlc3Q9J3BnbycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2VuYWJsZSBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24gdHJhaW5pbmcnKQotCi0gICAgcmV0dXJuIHBhcnNlcgotCi1kZWYgcmVsYXRpdmVfZmlsZW5hbWUoc3RyaW5nKToKLSAgICAjIENXRCBpcyByZXBsYWNlZCB3aXRoIGEgdGVtcG9yYXJ5IGRpciBiZWZvcmUgY2FsbGluZyBtYWluKCksIHNvIHdlCi0gICAgIyBqb2luIGl0IHdpdGggdGhlIHNhdmVkIENXRCBzbyBpdCBlbmRzIHVwIHdoZXJlIHRoZSB1c2VyIGV4cGVjdHMuCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBzdHJpbmcpCi0KLWRlZiBodW50cmxlYWtzKHN0cmluZyk6Ci0gICAgYXJncyA9IHN0cmluZy5zcGxpdCgnOicpCi0gICAgaWYgbGVuKGFyZ3MpIG5vdCBpbiAoMiwgMyk6Ci0gICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50VHlwZUVycm9yKAotICAgICAgICAgICAgJ25lZWRzIDIgb3IgMyBjb2xvbi1zZXBhcmF0ZWQgYXJndW1lbnRzJykKLSAgICBud2FybXVwID0gaW50KGFyZ3NbMF0pIGlmIGFyZ3NbMF0gZWxzZSA1Ci0gICAgbnRyYWNrZWQgPSBpbnQoYXJnc1sxXSkgaWYgYXJnc1sxXSBlbHNlIDQKLSAgICBmbmFtZSA9IGFyZ3NbMl0gaWYgbGVuKGFyZ3MpID4gMiBhbmQgYXJnc1syXSBlbHNlICdyZWZsb2cudHh0JwotICAgIHJldHVybiBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUKLQotZGVmIHJlc291cmNlc19saXN0KHN0cmluZyk6Ci0gICAgdSA9IFt4Lmxvd2VyKCkgZm9yIHggaW4gc3RyaW5nLnNwbGl0KCcsJyldCi0gICAgZm9yIHIgaW4gdToKLSAgICAgICAgaWYgciA9PSAnYWxsJyBvciByID09ICdub25lJzoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmIHJbMF0gPT0gJy0nOgotICAgICAgICAgICAgciA9IHJbMTpdCi0gICAgICAgIGlmIHIgbm90IGluIFJFU09VUkNFX05BTUVTOgotICAgICAgICAgICAgcmFpc2UgYXJncGFyc2UuQXJndW1lbnRUeXBlRXJyb3IoJ2ludmFsaWQgcmVzb3VyY2U6ICcgKyByKQotICAgIHJldHVybiB1Ci0KLWRlZiBfcGFyc2VfYXJncyhhcmdzLCAqKmt3YXJncyk6Ci0gICAgIyBEZWZhdWx0cwotICAgIG5zID0gYXJncGFyc2UuTmFtZXNwYWNlKHRlc3RkaXI9Tm9uZSwgdmVyYm9zZT0wLCBxdWlldD1GYWxzZSwKLSAgICAgICAgIGV4Y2x1ZGU9RmFsc2UsIHNpbmdsZT1GYWxzZSwgcmFuZG9taXplPUZhbHNlLCBmcm9tZmlsZT1Ob25lLAotICAgICAgICAgZmluZGxlYWtzPUZhbHNlLCB1c2VfcmVzb3VyY2VzPU5vbmUsIHRyYWNlPUZhbHNlLCBjb3ZlcmRpcj0nY292ZXJhZ2UnLAotICAgICAgICAgcnVubGVha3M9RmFsc2UsIGh1bnRybGVha3M9RmFsc2UsIHZlcmJvc2UyPUZhbHNlLCBwcmludF9zbG93PUZhbHNlLAotICAgICAgICAgcmFuZG9tX3NlZWQ9Tm9uZSwgdXNlX21wPU5vbmUsIHZlcmJvc2UzPUZhbHNlLCBmb3JldmVyPUZhbHNlLAotICAgICAgICAgaGVhZGVyPUZhbHNlLCBmYWlsZmFzdD1GYWxzZSwgbWF0Y2hfdGVzdHM9Tm9uZSwgcGdvPUZhbHNlKQotICAgIGZvciBrLCB2IGluIGt3YXJncy5pdGVtcygpOgotICAgICAgICBpZiBub3QgaGFzYXR0cihucywgayk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVyIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGlzIGZ1bmN0aW9uJyAlIGspCi0gICAgICAgIHNldGF0dHIobnMsIGssIHYpCi0gICAgaWYgbnMudXNlX3Jlc291cmNlcyBpcyBOb25lOgotICAgICAgICBucy51c2VfcmVzb3VyY2VzID0gW10KLQotICAgIHBhcnNlciA9IF9jcmVhdGVfcGFyc2VyKCkKLSAgICAjIElzc3VlICMxNDE5MTogYXJncGFyc2UgZG9lc24ndCBzdXBwb3J0ICJpbnRlcm1peGVkIiBwb3NpdGlvbmFsIGFuZAotICAgICMgb3B0aW9uYWwgYXJndW1lbnRzLiBVc2UgcGFyc2Vfa25vd25fYXJncygpIGFzIHdvcmthcm91bmQuCi0gICAgbnMuYXJncyA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKGFyZ3M9YXJncywgbmFtZXNwYWNlPW5zKVsxXQotICAgIGZvciBhcmcgaW4gbnMuYXJnczoKLSAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy0nKToKLSAgICAgICAgICAgIHBhcnNlci5lcnJvcigidW5yZWNvZ25pemVkIGFyZ3VtZW50czogJXMiICUgYXJnKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIG5zLnNpbmdsZSBhbmQgbnMuZnJvbWZpbGU6Ci0gICAgICAgIHBhcnNlci5lcnJvcigiLXMgYW5kIC1mIGRvbid0IGdvIHRvZ2V0aGVyISIpCi0gICAgaWYgbnMudXNlX21wIGFuZCBucy50cmFjZToKLSAgICAgICAgcGFyc2VyLmVycm9yKCItVCBhbmQgLWogZG9uJ3QgZ28gdG9nZXRoZXIhIikKLSAgICBpZiBucy51c2VfbXAgYW5kIG5zLmZpbmRsZWFrczoKLSAgICAgICAgcGFyc2VyLmVycm9yKCItbCBhbmQgLWogZG9uJ3QgZ28gdG9nZXRoZXIhIikKLSAgICBpZiBucy51c2VfbXAgYW5kIG5zLm1lbWxpbWl0OgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1NIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQotICAgIGlmIG5zLmZhaWxmYXN0IGFuZCBub3QgKG5zLnZlcmJvc2Ugb3IgbnMudmVyYm9zZTMpOgotICAgICAgICBwYXJzZXIuZXJyb3IoIi1HLy0tZmFpbGZhc3QgbmVlZHMgZWl0aGVyIC12IG9yIC1XIikKLQotICAgIGlmIG5zLnF1aWV0OgotICAgICAgICBucy52ZXJib3NlID0gMAotICAgIGlmIG5zLnRpbWVvdXQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKLSAgICAgICAgICAgIGlmIG5zLnRpbWVvdXQgPD0gMDoKLSAgICAgICAgICAgICAgICBucy50aW1lb3V0ID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IFRoZSB0aW1lb3V0IG9wdGlvbiByZXF1aXJlcyAiCi0gICAgICAgICAgICAgICAgICAiZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyIikKLSAgICAgICAgICAgIG5zLnRpbWVvdXQgPSBOb25lCi0gICAgaWYgbnMudXNlX21wIGlzIG5vdCBOb25lOgotICAgICAgICBpZiBucy51c2VfbXAgPD0gMDoKLSAgICAgICAgICAgICMgVXNlIGFsbCBjb3JlcyArIGV4dHJhcyBmb3IgdGVzdHMgdGhhdCBsaWtlIHRvIHNsZWVwCi0gICAgICAgICAgICBucy51c2VfbXAgPSAyICsgKG9zLmNwdV9jb3VudCgpIG9yIDEpCi0gICAgICAgIGlmIG5zLnVzZV9tcCA9PSAxOgotICAgICAgICAgICAgbnMudXNlX21wID0gTm9uZQotICAgIGlmIG5zLnVzZToKLSAgICAgICAgZm9yIGEgaW4gbnMudXNlOgotICAgICAgICAgICAgZm9yIHIgaW4gYToKLSAgICAgICAgICAgICAgICBpZiByID09ICdhbGwnOgotICAgICAgICAgICAgICAgICAgICBucy51c2VfcmVzb3VyY2VzWzpdID0gUkVTT1VSQ0VfTkFNRVMKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiByID09ICdub25lJzoKLSAgICAgICAgICAgICAgICAgICAgZGVsIG5zLnVzZV9yZXNvdXJjZXNbOl0KLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICByZW1vdmUgPSBGYWxzZQotICAgICAgICAgICAgICAgIGlmIHJbMF0gPT0gJy0nOgotICAgICAgICAgICAgICAgICAgICByZW1vdmUgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHIgPSByWzE6XQotICAgICAgICAgICAgICAgIGlmIHJlbW92ZToKLSAgICAgICAgICAgICAgICAgICAgaWYgciBpbiBucy51c2VfcmVzb3VyY2VzOgotICAgICAgICAgICAgICAgICAgICAgICAgbnMudXNlX3Jlc291cmNlcy5yZW1vdmUocikKLSAgICAgICAgICAgICAgICBlbGlmIHIgbm90IGluIG5zLnVzZV9yZXNvdXJjZXM6Ci0gICAgICAgICAgICAgICAgICAgIG5zLnVzZV9yZXNvdXJjZXMuYXBwZW5kKHIpCi0gICAgaWYgbnMucmFuZG9tX3NlZWQgaXMgbm90IE5vbmU6Ci0gICAgICAgIG5zLnJhbmRvbWl6ZSA9IFRydWUKLQotICAgIHJldHVybiBucwotCi0KLWRlZiBydW5fdGVzdF9pbl9zdWJwcm9jZXNzKHRlc3RuYW1lLCBucyk6Ci0gICAgIiIiUnVuIHRoZSBnaXZlbiB0ZXN0IGluIGEgc3VicHJvY2VzcyB3aXRoIC0tc2xhdmVhcmdzLgotCi0gICAgbnMgaXMgdGhlIG9wdGlvbiBOYW1lc3BhY2UgcGFyc2VkIGZyb20gY29tbWFuZC1saW5lIGFyZ3VtZW50cy4gcmVncnRlc3QKLSAgICBpcyBpbnZva2VkIGluIGEgc3VicHJvY2VzcyB3aXRoIHRoZSAtLXNsYXZlYXJncyBhcmd1bWVudDsgd2hlbiB0aGUKLSAgICBzdWJwcm9jZXNzIGV4aXRzLCBpdHMgcmV0dXJuIGNvZGUsIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSByZXR1cm5lZCBhcyBhCi0gICAgMy10dXBsZS4KLSAgICAiIiIKLSAgICBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IFBvcGVuLCBQSVBFCi0gICAgYmFzZV9jbWQgPSAoW3N5cy5leGVjdXRhYmxlXSArIHN1cHBvcnQuYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkgKwotICAgICAgICAgICAgICAgIFsnLVgnLCAnZmF1bHRoYW5kbGVyJywgJy1tJywgJ3Rlc3QucmVncnRlc3QnXSkKLSAgICAjIHJlcXVpcmVkIHRvIHNwYXduIGEgbmV3IHByb2Nlc3Mgd2l0aCBQR08gZmxhZyBvbi9vZmYKLSAgICBpZiBucy5wZ286Ci0gICAgICAgIGJhc2VfY21kID0gYmFzZV9jbWQgKyBbJy0tcGdvJ10KLSAgICBzbGF2ZWFyZ3MgPSAoCi0gICAgICAgICAgICAodGVzdG5hbWUsIG5zLnZlcmJvc2UsIG5zLnF1aWV0KSwKLSAgICAgICAgICAgIGRpY3QoaHVudHJsZWFrcz1ucy5odW50cmxlYWtzLAotICAgICAgICAgICAgICAgICB1c2VfcmVzb3VyY2VzPW5zLnVzZV9yZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAgIG91dHB1dF9vbl9mYWlsdXJlPW5zLnZlcmJvc2UzLAotICAgICAgICAgICAgICAgICB0aW1lb3V0PW5zLnRpbWVvdXQsIGZhaWxmYXN0PW5zLmZhaWxmYXN0LAotICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1ucy5tYXRjaF90ZXN0cywgcGdvPW5zLnBnbykpCi0gICAgIyBSdW5uaW5nIHRoZSBjaGlsZCBmcm9tIHRoZSBzYW1lIHdvcmtpbmcgZGlyZWN0b3J5IGFzIHJlZ3J0ZXN0J3Mgb3JpZ2luYWwKLSAgICAjIGludm9jYXRpb24gZW5zdXJlcyB0aGF0IFRFTVBESVIgZm9yIHRoZSBjaGlsZCBpcyB0aGUgc2FtZSB3aGVuCi0gICAgIyBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCkgaXMgdHJ1ZS4gU2VlIGlzc3VlIDE1MzAwLgotICAgIHBvcGVuID0gUG9wZW4oYmFzZV9jbWQgKyBbJy0tc2xhdmVhcmdzJywganNvbi5kdW1wcyhzbGF2ZWFyZ3MpXSwKLSAgICAgICAgICAgICAgICAgIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwKLSAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAotICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPShvcy5uYW1lICE9ICdudCcpLAotICAgICAgICAgICAgICAgICAgY3dkPXN1cHBvcnQuU0FWRURDV0QpCi0gICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCi0gICAgcmV0Y29kZSA9IHBvcGVuLndhaXQoKQotICAgIHJldHVybiByZXRjb2RlLCBzdGRvdXQsIHN0ZGVycgotCi0KLWRlZiBtYWluKHRlc3RzPU5vbmUsICoqa3dhcmdzKToKLSAgICAiIiJFeGVjdXRlIGEgdGVzdCBzdWl0ZS4KLQotICAgIFRoaXMgYWxzbyBwYXJzZXMgY29tbWFuZC1saW5lIG9wdGlvbnMgYW5kIG1vZGlmaWVzIGl0cyBiZWhhdmlvcgotICAgIGFjY29yZGluZ2x5LgotCi0gICAgdGVzdHMgLS0gYSBsaXN0IG9mIHN0cmluZ3MgY29udGFpbmluZyB0ZXN0IG5hbWVzIChvcHRpb25hbCkKLSAgICB0ZXN0ZGlyIC0tIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gbG9vayBmb3IgdGVzdHMgKG9wdGlvbmFsKQotCi0gICAgVXNlcnMgb3RoZXIgdGhhbiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUgd2lsbCBjZXJ0YWlubHkgd2FudCB0bwotICAgIHNwZWNpZnkgdGVzdGRpcjsgaWYgaXQncyBvbWl0dGVkLCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlCi0gICAgUHl0aG9uIHRlc3Qgc3VpdGUgaXMgc2VhcmNoZWQgZm9yLgotCi0gICAgSWYgdGhlIHRlc3RzIGFyZ3VtZW50IGlzIG9taXR0ZWQsIHRoZSB0ZXN0cyBsaXN0ZWQgb24gdGhlCi0gICAgY29tbWFuZC1saW5lIHdpbGwgYmUgdXNlZC4gIElmIHRoYXQncyBlbXB0eSwgdG9vLCB0aGVuIGFsbCAqLnB5Ci0gICAgZmlsZXMgYmVnaW5uaW5nIHdpdGggdGVzdF8gd2lsbCBiZSB1c2VkLgotCi0gICAgVGhlIG90aGVyIGRlZmF1bHQgYXJndW1lbnRzICh2ZXJib3NlLCBxdWlldCwgZXhjbHVkZSwKLSAgICBzaW5nbGUsIHJhbmRvbWl6ZSwgZmluZGxlYWtzLCB1c2VfcmVzb3VyY2VzLCB0cmFjZSwgY292ZXJkaXIsCi0gICAgcHJpbnRfc2xvdywgYW5kIHJhbmRvbV9zZWVkKSBhbGxvdyBwcm9ncmFtbWVycyBjYWxsaW5nIG1haW4oKQotICAgIGRpcmVjdGx5IHRvIHNldCB0aGUgdmFsdWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgc2V0IGJ5IGZsYWdzCi0gICAgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAgICAiIiIKLSAgICAjIERpc3BsYXkgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzIChlLmcuIHNlZ2ZhdWx0KQotICAgIGZhdWx0aGFuZGxlci5lbmFibGUoYWxsX3RocmVhZHM9VHJ1ZSkKLQotICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBTSUdBTFJNIG9yIFNJR1VTUjEgc2lnbmFsCi0gICAgc2lnbmFscyA9IFtdCi0gICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdBTFJNJyk6Ci0gICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdBTFJNKQotICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAnU0lHVVNSMScpOgotICAgICAgICBzaWduYWxzLmFwcGVuZChzaWduYWwuU0lHVVNSMSkKLSAgICBmb3Igc2lnbnVtIGluIHNpZ25hbHM6Ci0gICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWdudW0sIGNoYWluPVRydWUpCi0KLSAgICByZXBsYWNlX3N0ZG91dCgpCi0KLSAgICBzdXBwb3J0LnJlY29yZF9vcmlnaW5hbF9zdGRvdXQoc3lzLnN0ZG91dCkKLQotICAgIG5zID0gX3BhcnNlX2FyZ3Moc3lzLmFyZ3ZbMTpdLCAqKmt3YXJncykKLQotICAgIGlmIG5zLmh1bnRybGVha3M6Ci0gICAgICAgICMgQXZvaWQgZmFsc2UgcG9zaXRpdmVzIGR1ZSB0byB2YXJpb3VzIGNhY2hlcwotICAgICAgICAjIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGE6Ci0gICAgICAgIHdhcm1fY2FjaGVzKCkKLSAgICBpZiBucy5tZW1saW1pdCBpcyBub3QgTm9uZToKLSAgICAgICAgc3VwcG9ydC5zZXRfbWVtbGltaXQobnMubWVtbGltaXQpCi0gICAgaWYgbnMudGhyZXNob2xkIGlzIG5vdCBOb25lOgotICAgICAgICBpbXBvcnQgZ2MKLSAgICAgICAgZ2Muc2V0X3RocmVzaG9sZChucy50aHJlc2hvbGQpCi0gICAgaWYgbnMubm93aW5kb3dzOgotICAgICAgICBwcmludCgnVGhlIC0tbm93aW5kb3dzICgtbikgb3B0aW9uIGlzIGRlcHJlY2F0ZWQuICcKLSAgICAgICAgICAgICAgJ1VzZSAtdnYgdG8gZGlzcGxheSBhc3NlcnRpb25zIGluIHN0ZGVyci4nKQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IG1zdmNydAotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIG1zdmNydC5TZXRFcnJvck1vZGUobXN2Y3J0LlNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LlNFTV9OT0FMSUdOTUVOVEZBVUxURVhDRVBUfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zdmNydC5TRU1fTk9HUEZBVUxURVJST1JCT1h8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LlNFTV9OT09QRU5GSUxFRVJST1JCT1gpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICMgcmVsZWFzZSBidWlsZAotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIG0gaW4gW21zdmNydC5DUlRfV0FSTiwgbXN2Y3J0LkNSVF9FUlJPUiwgbXN2Y3J0LkNSVF9BU1NFUlRdOgotICAgICAgICAgICAgICAgIGlmIG5zLnZlcmJvc2UgYW5kIG5zLnZlcmJvc2UgPj0gMjoKLSAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUobSwgbXN2Y3J0LkNSVERCR19NT0RFX0ZJTEUpCi0gICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRGaWxlKG0sIG1zdmNydC5DUlREQkdfRklMRV9TVERFUlIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUobSwgMCkKLSAgICBpZiBucy53YWl0OgotICAgICAgICBpbnB1dCgiUHJlc3MgYW55IGtleSB0byBjb250aW51ZS4uLiIpCi0KLSAgICBpZiBucy5zbGF2ZWFyZ3MgaXMgbm90IE5vbmU6Ci0gICAgICAgIGFyZ3MsIGt3YXJncyA9IGpzb24ubG9hZHMobnMuc2xhdmVhcmdzKQotICAgICAgICBpZiBrd2FyZ3MuZ2V0KCdodW50cmxlYWtzJyk6Ci0gICAgICAgICAgICB1bml0dGVzdC5CYXNlVGVzdFN1aXRlLl9jbGVhbnVwID0gRmFsc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCgqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCAnJwotICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICByZXN1bHQgPSBDSElMRF9FUlJPUiwgc3RyKGUpCi0gICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICBwcmludCgpICAgIyBGb3JjZSBhIG5ld2xpbmUgKGp1c3QgaW4gY2FzZSkKLSAgICAgICAgcHJpbnQoanNvbi5kdW1wcyhyZXN1bHQpKQotICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgZ29vZCA9IFtdCi0gICAgYmFkID0gW10KLSAgICBza2lwcGVkID0gW10KLSAgICByZXNvdXJjZV9kZW5pZWRzID0gW10KLSAgICBlbnZpcm9ubWVudF9jaGFuZ2VkID0gW10KLSAgICBpbnRlcnJ1cHRlZCA9IEZhbHNlCi0KLSAgICBpZiBucy5maW5kbGVha3M6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCBnYwotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBwcmludCgnTm8gR0MgYXZhaWxhYmxlLCBkaXNhYmxpbmcgZmluZGxlYWtzLicpCi0gICAgICAgICAgICBucy5maW5kbGVha3MgPSBGYWxzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBVbmNvbW1lbnQgdGhlIGxpbmUgYmVsb3cgdG8gcmVwb3J0IGdhcmJhZ2UgdGhhdCBpcyBub3QKLSAgICAgICAgICAgICMgZnJlZWFibGUgYnkgcmVmZXJlbmNlIGNvdW50aW5nIGFsb25lLiAgQnkgZGVmYXVsdCBvbmx5Ci0gICAgICAgICAgICAjIGdhcmJhZ2UgdGhhdCBpcyBub3QgY29sbGVjdGFibGUgYnkgdGhlIEdDIGlzIHJlcG9ydGVkLgotICAgICAgICAgICAgI2djLnNldF9kZWJ1ZyhnYy5ERUJVR19TQVZFQUxMKQotICAgICAgICAgICAgZm91bmRfZ2FyYmFnZSA9IFtdCi0KLSAgICBpZiBucy5odW50cmxlYWtzOgotICAgICAgICB1bml0dGVzdC5CYXNlVGVzdFN1aXRlLl9jbGVhbnVwID0gRmFsc2UKLQotICAgIGlmIG5zLnNpbmdsZToKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgJ3B5bmV4dHRlc3QnKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbmV4dF90ZXN0ID0gZnAucmVhZCgpLnN0cmlwKCkKLSAgICAgICAgICAgICAgICB0ZXN0cyA9IFtuZXh0X3Rlc3RdCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgaWYgbnMuZnJvbWZpbGU6Ci0gICAgICAgIHRlc3RzID0gW10KLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBucy5mcm9tZmlsZSkpIGFzIGZwOgotICAgICAgICAgICAgY291bnRfcGF0ID0gcmUuY29tcGlsZShyJ1xbXHMqXGQrL1xzKlxkK1xdJykKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGZwOgotICAgICAgICAgICAgICAgIGxpbmUgPSBjb3VudF9wYXQuc3ViKCcnLCBsaW5lKQotICAgICAgICAgICAgICAgIGd1dHMgPSBsaW5lLnNwbGl0KCkgIyBhc3N1bWluZyBubyB0ZXN0IGhhcyB3aGl0ZXNwYWNlIGluIGl0cyBuYW1lCi0gICAgICAgICAgICAgICAgaWYgZ3V0cyBhbmQgbm90IGd1dHNbMF0uc3RhcnRzd2l0aCgnIycpOgotICAgICAgICAgICAgICAgICAgICB0ZXN0cy5leHRlbmQoZ3V0cykKLQotICAgICMgU3RyaXAgLnB5IGV4dGVuc2lvbnMuCi0gICAgcmVtb3ZlcHkobnMuYXJncykKLSAgICByZW1vdmVweSh0ZXN0cykKLQotICAgIHN0ZHRlc3RzID0gU1REVEVTVFNbOl0KLSAgICBub3R0ZXN0cyA9IE5PVFRFU1RTLmNvcHkoKQotICAgIGlmIG5zLmV4Y2x1ZGU6Ci0gICAgICAgIGZvciBhcmcgaW4gbnMuYXJnczoKLSAgICAgICAgICAgIGlmIGFyZyBpbiBzdGR0ZXN0czoKLSAgICAgICAgICAgICAgICBzdGR0ZXN0cy5yZW1vdmUoYXJnKQotICAgICAgICAgICAgbm90dGVzdHMuYWRkKGFyZykKLSAgICAgICAgbnMuYXJncyA9IFtdCi0KLSAgICAjIEZvciBhIHBhcnRpYWwgcnVuLCB3ZSBkbyBub3QgbmVlZCB0byBjbHV0dGVyIHRoZSBvdXRwdXQuCi0gICAgaWYgKG5zLnZlcmJvc2Ugb3IgbnMuaGVhZGVyIG9yCi0gICAgICAgICAgICBub3QgKG5zLnBnbyBvciBucy5xdWlldCBvciBucy5zaW5nbGUgb3IgdGVzdHMgb3IgbnMuYXJncykpOgotICAgICAgICAjIFByaW50IGJhc2ljIHBsYXRmb3JtIGluZm9ybWF0aW9uCi0gICAgICAgIHByaW50KCI9PSIsIHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLCAqc3lzLnZlcnNpb24uc3BsaXQoKSkKLSAgICAgICAgcHJpbnQoIj09ICAiLCBwbGF0Zm9ybS5wbGF0Zm9ybShhbGlhc2VkPVRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVzLWVuZGlhbiIgJSBzeXMuYnl0ZW9yZGVyKQotICAgICAgICBwcmludCgiPT0gICIsICJoYXNoIGFsZ29yaXRobToiLCBzeXMuaGFzaF9pbmZvLmFsZ29yaXRobSwKLSAgICAgICAgICAgICAgICAiNjRiaXQiIGlmIHN5cy5tYXhzaXplID4gMioqMzIgZWxzZSAiMzJiaXQiKQotICAgICAgICBwcmludCgiPT0gICIsIG9zLmdldGN3ZCgpKQotICAgICAgICBwcmludCgiVGVzdGluZyB3aXRoIGZsYWdzOiIsIHN5cy5mbGFncykKLQotICAgICMgaWYgdGVzdGRpciBpcyBzZXQsIHRoZW4gd2UgYXJlIG5vdCBydW5uaW5nIHRoZSBweXRob24gdGVzdHMgc3VpdGUsIHNvCi0gICAgIyBkb24ndCBhZGQgZGVmYXVsdCB0ZXN0cyB0byBiZSBleGVjdXRlZCBvciBza2lwcGVkIChwYXNzIGVtcHR5IHZhbHVlcykKLSAgICBpZiBucy50ZXN0ZGlyOgotICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyhucy50ZXN0ZGlyLCBsaXN0KCksIHNldCgpKQotICAgIGVsc2U6Ci0gICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKG5zLnRlc3RkaXIsIHN0ZHRlc3RzLCBub3R0ZXN0cykKLQotICAgIHNlbGVjdGVkID0gdGVzdHMgb3IgbnMuYXJncyBvciBhbGx0ZXN0cwotICAgIGlmIG5zLnNpbmdsZToKLSAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZFs6MV0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbmV4dF9zaW5nbGVfdGVzdCA9IGFsbHRlc3RzW2FsbHRlc3RzLmluZGV4KHNlbGVjdGVkWzBdKSsxXQotICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgIG5leHRfc2luZ2xlX3Rlc3QgPSBOb25lCi0gICAgIyBSZW1vdmUgYWxsIHRoZSBzZWxlY3RlZCB0ZXN0cyB0aGF0IHByZWNlZGUgc3RhcnQgaWYgaXQncyBzZXQuCi0gICAgaWYgbnMuc3RhcnQ6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlbCBzZWxlY3RlZFs6c2VsZWN0ZWQuaW5kZXgobnMuc3RhcnQpXQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHByaW50KCJDb3VsZG4ndCBmaW5kIHN0YXJ0aW5nIHRlc3QgKCVzKSwgdXNpbmcgYWxsIHRlc3RzIiAlIG5zLnN0YXJ0KQotICAgIGlmIG5zLnJhbmRvbWl6ZToKLSAgICAgICAgaWYgbnMucmFuZG9tX3NlZWQgaXMgTm9uZToKLSAgICAgICAgICAgIG5zLnJhbmRvbV9zZWVkID0gcmFuZG9tLnJhbmRyYW5nZSgxMDAwMDAwMCkKLSAgICAgICAgcmFuZG9tLnNlZWQobnMucmFuZG9tX3NlZWQpCi0gICAgICAgIHByaW50KCJVc2luZyByYW5kb20gc2VlZCIsIG5zLnJhbmRvbV9zZWVkKQotICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxlY3RlZCkKLSAgICBpZiBucy50cmFjZToKLSAgICAgICAgaW1wb3J0IHRyYWNlLCB0ZW1wZmlsZQotICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT1GYWxzZSwgY291bnQ9VHJ1ZSkKLQotICAgIHRlc3RfdGltZXMgPSBbXQotICAgIHN1cHBvcnQudmVyYm9zZSA9IG5zLnZlcmJvc2UgICAgICAjIFRlbGwgdGVzdHMgdG8gYmUgbW9kZXJhdGVseSBxdWlldAotICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IG5zLnVzZV9yZXNvdXJjZXMKLSAgICBzYXZlX21vZHVsZXMgPSBzeXMubW9kdWxlcy5rZXlzKCkKLQotICAgIGRlZiBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpOgotICAgICAgICBvaywgdGVzdF90aW1lID0gcmVzdWx0Ci0gICAgICAgIGlmIG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKToKLSAgICAgICAgICAgIHRlc3RfdGltZXMuYXBwZW5kKCh0ZXN0X3RpbWUsIHRlc3QpKQotICAgICAgICBpZiBvayA9PSBQQVNTRUQ6Ci0gICAgICAgICAgICBnb29kLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IEZBSUxFRDoKLSAgICAgICAgICAgIGJhZC5hcHBlbmQodGVzdCkKLSAgICAgICAgZWxpZiBvayA9PSBFTlZfQ0hBTkdFRDoKLSAgICAgICAgICAgIGVudmlyb25tZW50X2NoYW5nZWQuYXBwZW5kKHRlc3QpCi0gICAgICAgIGVsaWYgb2sgPT0gU0tJUFBFRDoKLSAgICAgICAgICAgIHNraXBwZWQuYXBwZW5kKHRlc3QpCi0gICAgICAgIGVsaWYgb2sgPT0gUkVTT1VSQ0VfREVOSUVEOgotICAgICAgICAgICAgc2tpcHBlZC5hcHBlbmQodGVzdCkKLSAgICAgICAgICAgIHJlc291cmNlX2RlbmllZHMuYXBwZW5kKHRlc3QpCi0KLSAgICBpZiBucy5mb3JldmVyOgotICAgICAgICBkZWYgdGVzdF9mb3JldmVyKHRlc3RzPWxpc3Qoc2VsZWN0ZWQpKToKLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKLSAgICAgICAgICAgICAgICAgICAgaWYgYmFkOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRlc3RzID0gdGVzdF9mb3JldmVyKCkKLSAgICAgICAgdGVzdF9jb3VudCA9ICcnCi0gICAgICAgIHRlc3RfY291bnRfd2lkdGggPSAzCi0gICAgZWxzZToKLSAgICAgICAgdGVzdHMgPSBpdGVyKHNlbGVjdGVkKQotICAgICAgICB0ZXN0X2NvdW50ID0gJy97fScuZm9ybWF0KGxlbihzZWxlY3RlZCkpCi0gICAgICAgIHRlc3RfY291bnRfd2lkdGggPSBsZW4odGVzdF9jb3VudCkgLSAxCi0KLSAgICBpZiBucy51c2VfbXA6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZyb20gdGhyZWFkaW5nIGltcG9ydCBUaHJlYWQKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcHJpbnQoIk11bHRpcHJvY2VzcyBvcHRpb24gcmVxdWlyZXMgdGhyZWFkIHN1cHBvcnQiKQotICAgICAgICAgICAgc3lzLmV4aXQoMikKLSAgICAgICAgZnJvbSBxdWV1ZSBpbXBvcnQgUXVldWUKLSAgICAgICAgZGVidWdfb3V0cHV0X3BhdCA9IHJlLmNvbXBpbGUociJcW1xkKyByZWZzLCBcZCsgYmxvY2tzXF0kIikKLSAgICAgICAgb3V0cHV0ID0gUXVldWUoKQotICAgICAgICBwZW5kaW5nID0gTXVsdGlwcm9jZXNzVGVzdHModGVzdHMpCi0gICAgICAgIGRlZiB3b3JrKCk6Ci0gICAgICAgICAgICAjIEEgd29ya2VyIHRocmVhZC4KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gbmV4dChwZW5kaW5nKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgIHJldGNvZGUsIHN0ZG91dCwgc3RkZXJyID0gcnVuX3Rlc3RfaW5fc3VicHJvY2Vzcyh0ZXN0LCBucykKLSAgICAgICAgICAgICAgICAgICAgIyBTdHJpcCBsYXN0IHJlZmNvdW50IG91dHB1dCBsaW5lIGlmIGl0IGV4aXN0cywgc2luY2UgaXQKLSAgICAgICAgICAgICAgICAgICAgIyBjb21lcyBmcm9tIHRoZSBzaHV0ZG93biBvZiB0aGUgaW50ZXJwcmV0ZXIgaW4gdGhlIHN1YmNvbW1hbmQuCi0gICAgICAgICAgICAgICAgICAgIHN0ZGVyciA9IGRlYnVnX291dHB1dF9wYXQuc3ViKCIiLCBzdGRlcnIpCi0gICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgXywgcmVzdWx0ID0gc3Rkb3V0LnN0cmlwKCkucnBhcnRpdGlvbigiXG4iKQotICAgICAgICAgICAgICAgICAgICBpZiByZXRjb2RlICE9IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0hJTERfRVJST1IsICJFeGl0IGNvZGUgJXMiICUgcmV0Y29kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLCByZXN1bHQpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBqc29uLmxvYWRzKHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgodGVzdCwgc3Rkb3V0LnJzdHJpcCgpLCBzdGRlcnIucnN0cmlwKCksIHJlc3VsdCkpCi0gICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKLSAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICB3b3JrZXJzID0gW1RocmVhZCh0YXJnZXQ9d29yaykgZm9yIGkgaW4gcmFuZ2UobnMudXNlX21wKV0KLSAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgotICAgICAgICAgICAgd29ya2VyLnN0YXJ0KCkKLSAgICAgICAgZmluaXNoZWQgPSAwCi0gICAgICAgIHRlc3RfaW5kZXggPSAxCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIGZpbmlzaGVkIDwgbnMudXNlX21wOgotICAgICAgICAgICAgICAgIHRlc3QsIHN0ZG91dCwgc3RkZXJyLCByZXN1bHQgPSBvdXRwdXQuZ2V0KCkKLSAgICAgICAgICAgICAgICBpZiB0ZXN0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkICs9IDEKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCi0gICAgICAgICAgICAgICAgaWYgbm90IG5zLnF1aWV0OgotICAgICAgICAgICAgICAgICAgICBpZiBiYWQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSAiW3sxOnswfX17Mn0vezN9XSB7NH0iCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSAiW3sxOnswfX17Mn1dIHs0fSIKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoZm10LmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnRfd2lkdGgsIHRlc3RfaW5kZXgsIHRlc3RfY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW4oYmFkKSwgdGVzdCkpCi0gICAgICAgICAgICAgICAgaWYgc3Rkb3V0OgotICAgICAgICAgICAgICAgICAgICBwcmludChzdGRvdXQpCi0gICAgICAgICAgICAgICAgaWYgc3RkZXJyIGFuZCBub3QgbnMucGdvOgotICAgICAgICAgICAgICAgICAgICBwcmludChzdGRlcnIsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gSU5URVJSVVBURUQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEtleWJvYXJkSW50ZXJydXB0Ci0gICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IENISUxEX0VSUk9SOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNoaWxkIGVycm9yIG9uIHt9OiB7fSIuZm9ybWF0KHRlc3QsIHJlc3VsdFsxXSkpCi0gICAgICAgICAgICAgICAgdGVzdF9pbmRleCArPSAxCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQotICAgICAgICAgICAgcGVuZGluZy5pbnRlcnJ1cHRlZCA9IFRydWUKLSAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgotICAgICAgICAgICAgd29ya2VyLmpvaW4oKQotICAgIGVsc2U6Ci0gICAgICAgIGZvciB0ZXN0X2luZGV4LCB0ZXN0IGluIGVudW1lcmF0ZSh0ZXN0cywgMSk6Ci0gICAgICAgICAgICBpZiBub3QgbnMucXVpZXQ6Ci0gICAgICAgICAgICAgICAgaWYgYmFkIGFuZCBub3QgbnMucGdvOgotICAgICAgICAgICAgICAgICAgICBmbXQgPSAiW3sxOnswfX17Mn0vezN9XSB7NH0iCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZm10ID0gIlt7MTp7MH19ezJ9XSB7NH0iCi0gICAgICAgICAgICAgICAgcHJpbnQoZm10LmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3VudF93aWR0aCwgdGVzdF9pbmRleCwgdGVzdF9jb3VudCwgbGVuKGJhZCksIHRlc3QpKQotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICAgICAgaWYgbnMudHJhY2U6Ci0gICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSB0cmFjaW5nIGNvZGUgY292ZXJhZ2UsIHRoZW4gd2UgZG9uJ3QgZXhpdCB3aXRoIHN0YXR1cwotICAgICAgICAgICAgICAgICMgaWYgb24gYSBmYWxzZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluLgotICAgICAgICAgICAgICAgIHRyYWNlci5ydW5jdHgoJ3J1bnRlc3QodGVzdCwgbnMudmVyYm9zZSwgbnMucXVpZXQsIHRpbWVvdXQ9bnMudGltZW91dCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzKCksIGxvY2Fscz12YXJzKCkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCh0ZXN0LCBucy52ZXJib3NlLCBucy5xdWlldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucy5odW50cmxlYWtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9vbl9mYWlsdXJlPW5zLnZlcmJvc2UzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9bnMudGltZW91dCwgZmFpbGZhc3Q9bnMuZmFpbGZhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bnMubWF0Y2hfdGVzdHMsIHBnbz1ucy5wZ28pCi0gICAgICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKLSAgICAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgbnMuZmluZGxlYWtzOgotICAgICAgICAgICAgICAgIGdjLmNvbGxlY3QoKQotICAgICAgICAgICAgICAgIGlmIGdjLmdhcmJhZ2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiB0ZXN0IGNyZWF0ZWQiLCBsZW4oZ2MuZ2FyYmFnZSksIGVuZD0nICcpCi0gICAgICAgICAgICAgICAgICAgIHByaW50KCJ1bmNvbGxlY3RhYmxlIG9iamVjdChzKS4iKQotICAgICAgICAgICAgICAgICAgICAjIG1vdmUgdGhlIHVuY29sbGVjdGFibGUgb2JqZWN0cyBzb21ld2hlcmUgc28gd2UgZG9uJ3Qgc2VlCi0gICAgICAgICAgICAgICAgICAgICMgdGhlbSBhZ2FpbgotICAgICAgICAgICAgICAgICAgICBmb3VuZF9nYXJiYWdlLmV4dGVuZChnYy5nYXJiYWdlKQotICAgICAgICAgICAgICAgICAgICBkZWwgZ2MuZ2FyYmFnZVs6XQotICAgICAgICAgICAgIyBVbmxvYWQgdGhlIG5ld2x5IGltcG9ydGVkIG1vZHVsZXMgKGJlc3QgZWZmb3J0IGZpbmFsaXphdGlvbikKLSAgICAgICAgICAgIGZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMua2V5cygpOgotICAgICAgICAgICAgICAgIGlmIG1vZHVsZSBub3QgaW4gc2F2ZV9tb2R1bGVzIGFuZCBtb2R1bGUuc3RhcnRzd2l0aCgidGVzdC4iKToKLSAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC51bmxvYWQobW9kdWxlKQotCi0gICAgaWYgaW50ZXJydXB0ZWQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIGFmdGVyIF5DCi0gICAgICAgIHByaW50KCkKLSAgICAgICAgcHJpbnQoIlRlc3Qgc3VpdGUgaW50ZXJydXB0ZWQgYnkgc2lnbmFsIFNJR0lOVC4iKQotICAgICAgICBvbWl0dGVkID0gc2V0KHNlbGVjdGVkKSAtIHNldChnb29kKSAtIHNldChiYWQpIC0gc2V0KHNraXBwZWQpCi0gICAgICAgIHByaW50KGNvdW50KGxlbihvbWl0dGVkKSwgInRlc3QiKSwgIm9taXR0ZWQ6IikKLSAgICAgICAgcHJpbnRsaXN0KG9taXR0ZWQpCi0gICAgaWYgZ29vZCBhbmQgbm90IG5zLnF1aWV0IGFuZCBub3QgbnMucGdvOgotICAgICAgICBpZiBub3QgYmFkIGFuZCBub3Qgc2tpcHBlZCBhbmQgbm90IGludGVycnVwdGVkIGFuZCBsZW4oZ29vZCkgPiAxOgotICAgICAgICAgICAgcHJpbnQoIkFsbCIsIGVuZD0nICcpCi0gICAgICAgIHByaW50KGNvdW50KGxlbihnb29kKSwgInRlc3QiKSwgIk9LLiIpCi0gICAgaWYgbnMucHJpbnRfc2xvdzoKLSAgICAgICAgdGVzdF90aW1lcy5zb3J0KHJldmVyc2U9VHJ1ZSkKLSAgICAgICAgcHJpbnQoIjEwIHNsb3dlc3QgdGVzdHM6IikKLSAgICAgICAgZm9yIHRpbWUsIHRlc3QgaW4gdGVzdF90aW1lc1s6MTBdOgotICAgICAgICAgICAgcHJpbnQoIiVzOiAlLjFmcyIgJSAodGVzdCwgdGltZSkpCi0gICAgaWYgYmFkIGFuZCBub3QgbnMucGdvOgotICAgICAgICBwcmludChjb3VudChsZW4oYmFkKSwgInRlc3QiKSwgImZhaWxlZDoiKQotICAgICAgICBwcmludGxpc3QoYmFkKQotICAgIGlmIGVudmlyb25tZW50X2NoYW5nZWQgYW5kIG5vdCBucy5wZ286Ci0gICAgICAgIHByaW50KCJ7fSBhbHRlcmVkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQ6Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgIGNvdW50KGxlbihlbnZpcm9ubWVudF9jaGFuZ2VkKSwgInRlc3QiKSkpCi0gICAgICAgIHByaW50bGlzdChlbnZpcm9ubWVudF9jaGFuZ2VkKQotICAgIGlmIHNraXBwZWQgYW5kIG5vdCBucy5xdWlldCBhbmQgbm90IG5zLnBnbzoKLSAgICAgICAgcHJpbnQoY291bnQobGVuKHNraXBwZWQpLCAidGVzdCIpLCAic2tpcHBlZDoiKQotICAgICAgICBwcmludGxpc3Qoc2tpcHBlZCkKLQotICAgIGlmIG5zLnZlcmJvc2UyIGFuZCBiYWQ6Ci0gICAgICAgIHByaW50KCJSZS1ydW5uaW5nIGZhaWxlZCB0ZXN0cyBpbiB2ZXJib3NlIG1vZGUiKQotICAgICAgICBmb3IgdGVzdCBpbiBiYWRbOl06Ci0gICAgICAgICAgICBpZiBub3QgbnMucGdvOgotICAgICAgICAgICAgICAgIHByaW50KCJSZS1ydW5uaW5nIHRlc3QgJXIgaW4gdmVyYm9zZSBtb2RlIiAlIHRlc3QpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBucy52ZXJib3NlID0gVHJ1ZQotICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdCh0ZXN0LCBUcnVlLCBucy5xdWlldCwgbnMuaHVudHJsZWFrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1ucy50aW1lb3V0LCBwZ289bnMucGdvKQotICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIHNlcGFyYXRlIGZyb20gdGhlIF5DCi0gICAgICAgICAgICAgICAgcHJpbnQoKQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIG9rWzBdIGluIHtQQVNTRUQsIEVOVl9DSEFOR0VELCBTS0lQUEVELCBSRVNPVVJDRV9ERU5JRUR9OgotICAgICAgICAgICAgICAgICAgICBiYWQucmVtb3ZlKHRlc3QpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBiYWQ6Ci0gICAgICAgICAgICAgICAgcHJpbnQoY291bnQobGVuKGJhZCksICd0ZXN0JyksICJmYWlsZWQgYWdhaW46IikKLSAgICAgICAgICAgICAgICBwcmludGxpc3QoYmFkKQotCi0gICAgaWYgbnMuc2luZ2xlOgotICAgICAgICBpZiBuZXh0X3NpbmdsZV90ZXN0OgotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAndycpIGFzIGZwOgotICAgICAgICAgICAgICAgIGZwLndyaXRlKG5leHRfc2luZ2xlX3Rlc3QgKyAnXG4nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lKQotCi0gICAgaWYgbnMudHJhY2U6Ci0gICAgICAgIHIgPSB0cmFjZXIucmVzdWx0cygpCi0gICAgICAgIHIud3JpdGVfcmVzdWx0cyhzaG93X21pc3Npbmc9VHJ1ZSwgc3VtbWFyeT1UcnVlLCBjb3ZlcmRpcj1ucy5jb3ZlcmRpcikKLQotICAgIGlmIG5zLnJ1bmxlYWtzOgotICAgICAgICBvcy5zeXN0ZW0oImxlYWtzICVkIiAlIG9zLmdldHBpZCgpKQotCi0gICAgc3lzLmV4aXQobGVuKGJhZCkgPiAwIG9yIGludGVycnVwdGVkKQotCi0KLSMgc21hbGwgc2V0IG9mIHRlc3RzIHRvIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgYmFzaWNhbGx5IGZ1bmN0aW9uaW5nIGludGVycHJldGVyCi0jIChpLmUuIGlmIGFueSBvZiB0aGVzZSBmYWlsLCB0aGVuIGFueXRoaW5nIGVsc2UgaXMgbGlrZWx5IHRvIGZvbGxvdykKLVNURFRFU1RTID0gWwotICAgICd0ZXN0X2dyYW1tYXInLAotICAgICd0ZXN0X29wY29kZXMnLAotICAgICd0ZXN0X2RpY3QnLAotICAgICd0ZXN0X2J1aWx0aW4nLAotICAgICd0ZXN0X2V4Y2VwdGlvbnMnLAotICAgICd0ZXN0X3R5cGVzJywKLSAgICAndGVzdF91bml0dGVzdCcsCi0gICAgJ3Rlc3RfZG9jdGVzdCcsCi0gICAgJ3Rlc3RfZG9jdGVzdDInLAotICAgICd0ZXN0X3N1cHBvcnQnCi1dCi0KLSMgc2V0IG9mIHRlc3RzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBiZSBleGVjdXRlZCB3aGVuIHVzaW5nIHJlZ3J0ZXN0Ci1OT1RURVNUUyA9IHNldCgpCi0KLWRlZiBmaW5kdGVzdHModGVzdGRpcj1Ob25lLCBzdGR0ZXN0cz1TVERURVNUUywgbm90dGVzdHM9Tk9UVEVTVFMpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIGFwcGxpY2FibGUgdGVzdCBtb2R1bGVzLiIiIgotICAgIHRlc3RkaXIgPSBmaW5kdGVzdGRpcih0ZXN0ZGlyKQotICAgIG5hbWVzID0gb3MubGlzdGRpcih0ZXN0ZGlyKQotICAgIHRlc3RzID0gW10KLSAgICBvdGhlcnMgPSBzZXQoc3RkdGVzdHMpIHwgbm90dGVzdHMKLSAgICBmb3IgbmFtZSBpbiBuYW1lczoKLSAgICAgICAgbW9kLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIG1vZFs6NV0gPT0gInRlc3RfIiBhbmQgZXh0IGluICgiLnB5IiwgIiIpIGFuZCBtb2Qgbm90IGluIG90aGVyczoKLSAgICAgICAgICAgIHRlc3RzLmFwcGVuZChtb2QpCi0gICAgcmV0dXJuIHN0ZHRlc3RzICsgc29ydGVkKHRlc3RzKQotCi0jIFdlIGRvIG5vdCB1c2UgYSBnZW5lcmF0b3Igc28gbXVsdGlwbGUgdGhyZWFkcyBjYW4gY2FsbCBuZXh0KCkuCi1jbGFzcyBNdWx0aXByb2Nlc3NUZXN0cyhvYmplY3QpOgotCi0gICAgIiIiQSB0aHJlYWQtc2FmZSBpdGVyYXRvciBvdmVyIHRlc3RzIGZvciBtdWx0aXByb2Nlc3MgbW9kZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0cyk6Ci0gICAgICAgIHNlbGYuaW50ZXJydXB0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmxvY2sgPSB0aHJlYWRpbmcuTG9jaygpCi0gICAgICAgIHNlbGYudGVzdHMgPSB0ZXN0cwotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fbmV4dF9fKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYubG9jazoKLSAgICAgICAgICAgIGlmIHNlbGYuaW50ZXJydXB0ZWQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbigndGVzdHMgaW50ZXJydXB0ZWQnKQotICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi50ZXN0cykKLQotZGVmIHJlcGxhY2Vfc3Rkb3V0KCk6Ci0gICAgIiIiU2V0IHN0ZG91dCBlbmNvZGVyIGVycm9yIGhhbmRsZXIgdG8gYmFja3NsYXNocmVwbGFjZSAoYXMgc3RkZXJyIGVycm9yCi0gICAgaGFuZGxlcikgdG8gYXZvaWQgVW5pY29kZUVuY29kZUVycm9yIHdoZW4gcHJpbnRpbmcgYSB0cmFjZWJhY2siIiIKLSAgICBpbXBvcnQgYXRleGl0Ci0KLSAgICBzdGRvdXQgPSBzeXMuc3Rkb3V0Ci0gICAgc3lzLnN0ZG91dCA9IG9wZW4oc3Rkb3V0LmZpbGVubygpLCAndycsCi0gICAgICAgIGVuY29kaW5nPXN0ZG91dC5lbmNvZGluZywKLSAgICAgICAgZXJyb3JzPSJiYWNrc2xhc2hyZXBsYWNlIiwKLSAgICAgICAgY2xvc2VmZD1GYWxzZSwKLSAgICAgICAgbmV3bGluZT0nXG4nKQotCi0gICAgZGVmIHJlc3RvcmVfc3Rkb3V0KCk6Ci0gICAgICAgIHN5cy5zdGRvdXQuY2xvc2UoKQotICAgICAgICBzeXMuc3Rkb3V0ID0gc3Rkb3V0Ci0gICAgYXRleGl0LnJlZ2lzdGVyKHJlc3RvcmVfc3Rkb3V0KQotCi1kZWYgcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwKLSAgICAgICAgICAgIGh1bnRybGVha3M9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwKLSAgICAgICAgICAgIG91dHB1dF9vbl9mYWlsdXJlPUZhbHNlLCBmYWlsZmFzdD1GYWxzZSwgbWF0Y2hfdGVzdHM9Tm9uZSwKLSAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSwgKiwgcGdvPUZhbHNlKToKLSAgICAiIiJSdW4gYSBzaW5nbGUgdGVzdC4KLQotICAgIHRlc3QgLS0gdGhlIG5hbWUgb2YgdGhlIHRlc3QKLSAgICB2ZXJib3NlIC0tIGlmIHRydWUsIHByaW50IG1vcmUgbWVzc2FnZXMKLSAgICBxdWlldCAtLSBpZiB0cnVlLCBkb24ndCBwcmludCAnc2tpcHBlZCcgbWVzc2FnZXMgKHByb2JhYmx5IHJlZHVuZGFudCkKLSAgICBodW50cmxlYWtzIC0tIHJ1biBtdWx0aXBsZSB0aW1lcyB0byB0ZXN0IGZvciBsZWFrczsgcmVxdWlyZXMgYSBkZWJ1ZwotICAgICAgICAgICAgICAgICAgYnVpbGQ7IGEgdHJpcGxlIGNvcnJlc3BvbmRpbmcgdG8gLVIncyB0aHJlZSBhcmd1bWVudHMKLSAgICB1c2VfcmVzb3VyY2VzIC0tIGxpc3Qgb2YgZXh0cmEgcmVzb3VyY2VzIHRvIHVzZQotICAgIG91dHB1dF9vbl9mYWlsdXJlIC0tIGlmIHRydWUsIGRpc3BsYXkgdGVzdCBvdXRwdXQgb24gZmFpbHVyZQotICAgIHRpbWVvdXQgLS0gZHVtcCB0aGUgdHJhY2ViYWNrIGFuZCBleGl0IGlmIGEgdGVzdCB0YWtlcyBtb3JlIHRoYW4KLSAgICAgICAgICAgICAgIHRpbWVvdXQgc2Vjb25kcwotICAgIGZhaWxmYXN0LCBtYXRjaF90ZXN0cyAtLSBTZWUgcmVncnRlc3QgY29tbWFuZC1saW5lIGZsYWdzIGZvciB0aGVzZS4KLSAgICBwZ28gLS0gaWYgdHJ1ZSwgZG8gbm90IHByaW50IHVubmVjZXNzYXJ5IGluZm8gd2hlbiBydW5uaW5nIHRoZSB0ZXN0Ci0gICAgICAgICAgIGZvciBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24gYnVpbGQKLQotICAgIFJldHVybnMgdGhlIHR1cGxlIHJlc3VsdCwgdGVzdF90aW1lLCB3aGVyZSByZXN1bHQgaXMgb25lIG9mIHRoZSBjb25zdGFudHM6Ci0gICAgICAgIElOVEVSUlVQVEVEICAgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiBydW4gdW5kZXIgLWoKLSAgICAgICAgUkVTT1VSQ0VfREVOSUVEICB0ZXN0IHNraXBwZWQgYmVjYXVzZSByZXNvdXJjZSBkZW5pZWQKLSAgICAgICAgU0tJUFBFRCAgICAgICAgICB0ZXN0IHNraXBwZWQgZm9yIHNvbWUgb3RoZXIgcmVhc29uCi0gICAgICAgIEVOVl9DSEFOR0VEICAgICAgdGVzdCBmYWlsZWQgYmVjYXVzZSBpdCBjaGFuZ2VkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQKLSAgICAgICAgRkFJTEVEICAgICAgICAgICB0ZXN0IGZhaWxlZAotICAgICAgICBQQVNTRUQgICAgICAgICAgIHRlc3QgcGFzc2VkCi0gICAgIiIiCi0gICAgaWYgdXNlX3Jlc291cmNlcyBpcyBub3QgTm9uZToKLSAgICAgICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gdXNlX3Jlc291cmNlcwotICAgIHVzZV90aW1lb3V0ID0gKHRpbWVvdXQgaXMgbm90IE5vbmUpCi0gICAgaWYgdXNlX3RpbWVvdXQ6Ci0gICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja19sYXRlcih0aW1lb3V0LCBleGl0PVRydWUpCi0gICAgdHJ5OgotICAgICAgICBzdXBwb3J0Lm1hdGNoX3Rlc3RzID0gbWF0Y2hfdGVzdHMKLSAgICAgICAgaWYgZmFpbGZhc3Q6Ci0gICAgICAgICAgICBzdXBwb3J0LmZhaWxmYXN0ID0gVHJ1ZQotICAgICAgICBpZiBvdXRwdXRfb25fZmFpbHVyZToKLSAgICAgICAgICAgIHN1cHBvcnQudmVyYm9zZSA9IFRydWUKLQotICAgICAgICAgICAgIyBSZXVzZSB0aGUgc2FtZSBpbnN0YW5jZSB0byBhbGwgY2FsbHMgdG8gcnVudGVzdCgpLiBTb21lCi0gICAgICAgICAgICAjIHRlc3RzIGtlZXAgYSByZWZlcmVuY2UgdG8gc3lzLnN0ZG91dCBvciBzeXMuc3RkZXJyCi0gICAgICAgICAgICAjIChlZy4gdGVzdF9hcmdwYXJzZSkuCi0gICAgICAgICAgICBpZiBydW50ZXN0LnN0cmluZ2lvIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgICAgIHJ1bnRlc3Quc3RyaW5naW8gPSBzdHJlYW0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3RyZWFtID0gcnVudGVzdC5zdHJpbmdpbwotICAgICAgICAgICAgICAgIHN0cmVhbS5zZWVrKDApCi0gICAgICAgICAgICAgICAgc3RyZWFtLnRydW5jYXRlKCkKLQotICAgICAgICAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0Ci0gICAgICAgICAgICBvcmlnX3N0ZGVyciA9IHN5cy5zdGRlcnIKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc3RyZWFtCi0gICAgICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN0cmVhbQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3RfaW5uZXIodGVzdCwgdmVyYm9zZSwgcXVpZXQsIGh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5X2ZhaWx1cmU9RmFsc2UsIHBnbz1wZ28pCi0gICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdICE9IFBBU1NFRCBhbmQgbm90IHBnbzoKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3RyZWFtLmdldHZhbHVlKCkKLSAgICAgICAgICAgICAgICAgICAgb3JpZ19zdGRlcnIud3JpdGUob3V0cHV0KQotICAgICAgICAgICAgICAgICAgICBvcmlnX3N0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBvcmlnX3N0ZG91dAotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvcmlnX3N0ZGVycgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gdmVyYm9zZSAgIyBUZWxsIHRlc3RzIHRvIGJlIG1vZGVyYXRlbHkgcXVpZXQKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3RfaW5uZXIodGVzdCwgdmVyYm9zZSwgcXVpZXQsIGh1bnRybGVha3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfZmFpbHVyZT1ub3QgdmVyYm9zZSwgcGdvPXBnbykKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotICAgIGZpbmFsbHk6Ci0gICAgICAgIGlmIHVzZV90aW1lb3V0OgotICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCi0gICAgICAgIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdCwgdmVyYm9zZSkKLXJ1bnRlc3Quc3RyaW5naW8gPSBOb25lCi0KLSMgVW5pdCB0ZXN0cyBhcmUgc3VwcG9zZWQgdG8gbGVhdmUgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCB1bmNoYW5nZWQKLSMgb25jZSB0aGV5IGNvbXBsZXRlLiAgQnV0IHNvbWV0aW1lcyB0ZXN0cyBoYXZlIGJ1Z3MsIGVzcGVjaWFsbHkgd2hlbgotIyB0ZXN0cyBmYWlsLCBhbmQgdGhlIGNoYW5nZXMgdG8gZW52aXJvbm1lbnQgZ28gb24gdG8gbWVzcyB1cCBvdGhlcgotIyB0ZXN0cy4gIFRoaXMgY2FuIGNhdXNlIGlzc3VlcyB3aXRoIGJ1aWxkYm90IHN0YWJpbGl0eSwgc2luY2UgdGVzdHMKLSMgYXJlIHJ1biBpbiByYW5kb20gb3JkZXIgYW5kIHNvIHByb2JsZW1zIG1heSBhcHBlYXIgdG8gY29tZSBhbmQgZ28uCi0jIFRoZXJlIGFyZSBhIGZldyB0aGluZ3Mgd2UgY2FuIHNhdmUgYW5kIHJlc3RvcmUgdG8gbWl0aWdhdGUgdGhpcywgYW5kCi0jIHRoZSBmb2xsb3dpbmcgY29udGV4dCBtYW5hZ2VyIGhhbmRsZXMgdGhpcyB0YXNrLgotCi1jbGFzcyBzYXZlZF90ZXN0X2Vudmlyb25tZW50OgotICAgICIiIlNhdmUgYml0cyBvZiB0aGUgdGVzdCBlbnZpcm9ubWVudCBhbmQgcmVzdG9yZSB0aGVtIGF0IGJsb2NrIGV4aXQuCi0KLSAgICAgICAgd2l0aCBzYXZlZF90ZXN0X2Vudmlyb25tZW50KHRlc3RuYW1lLCB2ZXJib3NlLCBxdWlldCk6Ci0gICAgICAgICAgICAjc3R1ZmYKLQotICAgIFVubGVzcyBxdWlldCBpcyBUcnVlLCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBzdGRlcnIgaWYgYW55IG9mCi0gICAgdGhlIHNhdmVkIGl0ZW1zIHdhcyBjaGFuZ2VkIGJ5IHRoZSB0ZXN0LiAgVGhlIGF0dHJpYnV0ZSAnY2hhbmdlZCcKLSAgICBpcyBpbml0aWFsbHkgRmFsc2UsIGJ1dCBpcyBzZXQgdG8gVHJ1ZSBpZiBhIGNoYW5nZSBpcyBkZXRlY3RlZC4KLQotICAgIElmIHZlcmJvc2UgaXMgbW9yZSB0aGFuIDEsIHRoZSBiZWZvcmUgYW5kIGFmdGVyIHN0YXRlIG9mIGNoYW5nZWQKLSAgICBpdGVtcyBpcyBhbHNvIHByaW50ZWQuCi0gICAgIiIiCi0KLSAgICBjaGFuZ2VkID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0bmFtZSwgdmVyYm9zZT0wLCBxdWlldD1GYWxzZSwgKiwgcGdvPUZhbHNlKToKLSAgICAgICAgc2VsZi50ZXN0bmFtZSA9IHRlc3RuYW1lCi0gICAgICAgIHNlbGYudmVyYm9zZSA9IHZlcmJvc2UKLSAgICAgICAgc2VsZi5xdWlldCA9IHF1aWV0Ci0gICAgICAgIHNlbGYucGdvID0gcGdvCi0KLSAgICAjIFRvIGFkZCB0aGluZ3MgdG8gc2F2ZSBhbmQgcmVzdG9yZSwgYWRkIGEgbmFtZSBYWFggdG8gdGhlIHJlc291cmNlcyBsaXN0Ci0gICAgIyBhbmQgYWRkIGNvcnJlc3BvbmRpbmcgZ2V0X1hYWC9yZXN0b3JlX1hYWCBmdW5jdGlvbnMuICBnZXRfWFhYIHNob3VsZAotICAgICMgcmV0dXJuIHRoZSB2YWx1ZSB0byBiZSBzYXZlZCBhbmQgY29tcGFyZWQgYWdhaW5zdCBhIHNlY29uZCBjYWxsIHRvIHRoZQotICAgICMgZ2V0IGZ1bmN0aW9uIHdoZW4gdGVzdCBleGVjdXRpb24gY29tcGxldGVzLiAgcmVzdG9yZV9YWFggc2hvdWxkIGFjY2VwdAotICAgICMgdGhlIHNhdmVkIHZhbHVlIGFuZCByZXN0b3JlIHRoZSByZXNvdXJjZSB1c2luZyBpdC4gIEl0IHdpbGwgYmUgY2FsbGVkIGlmCi0gICAgIyBhbmQgb25seSBpZiBhIGNoYW5nZSBpbiB0aGUgdmFsdWUgaXMgZGV0ZWN0ZWQuCi0gICAgIwotICAgICMgTm90ZTogWFhYIHdpbGwgaGF2ZSBhbnkgJy4nIHJlcGxhY2VkIHdpdGggJ18nIGNoYXJhY3RlcnMgd2hlbiBkZXRlcm1pbmluZwotICAgICMgdGhlIGNvcnJlc3BvbmRpbmcgbWV0aG9kIG5hbWVzLgotCi0gICAgcmVzb3VyY2VzID0gKCdzeXMuYXJndicsICdjd2QnLCAnc3lzLnN0ZGluJywgJ3N5cy5zdGRvdXQnLCAnc3lzLnN0ZGVycicsCi0gICAgICAgICAgICAgICAgICdvcy5lbnZpcm9uJywgJ3N5cy5wYXRoJywgJ3N5cy5wYXRoX2hvb2tzJywgJ19faW1wb3J0X18nLAotICAgICAgICAgICAgICAgICAnd2FybmluZ3MuZmlsdGVycycsICdhc3luY29yZS5zb2NrZXRfbWFwJywKLSAgICAgICAgICAgICAgICAgJ2xvZ2dpbmcuX2hhbmRsZXJzJywgJ2xvZ2dpbmcuX2hhbmRsZXJMaXN0JywgJ3N5cy5nZXR0cmFjZScsCi0gICAgICAgICAgICAgICAgICdzeXMud2Fybm9wdGlvbnMnLAotICAgICAgICAgICAgICAgICAjIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9jbGVhbnVwKCkgbWF5IHJlbGVhc2UgcmVmCi0gICAgICAgICAgICAgICAgICMgdG8gYSB0aHJlYWQsIHNvIGNoZWNrIHByb2Nlc3NlcyBmaXJzdC4KLSAgICAgICAgICAgICAgICAgJ211bHRpcHJvY2Vzc2luZy5wcm9jZXNzLl9kYW5nbGluZycsICd0aHJlYWRpbmcuX2RhbmdsaW5nJywKLSAgICAgICAgICAgICAgICAgJ3N5c2NvbmZpZy5fQ09ORklHX1ZBUlMnLCAnc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMnLAotICAgICAgICAgICAgICAgICAnZmlsZXMnLCAnbG9jYWxlJywgJ3dhcm5pbmdzLnNob3d3YXJuaW5nJywKLSAgICAgICAgICAgICAgICAgJ3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMnLCAnc2h1dGlsX3VucGFja19mb3JtYXRzJywKLSAgICAgICAgICAgICAgICApCi0KLSAgICBkZWYgZ2V0X3N5c19hcmd2KHNlbGYpOgotICAgICAgICByZXR1cm4gaWQoc3lzLmFyZ3YpLCBzeXMuYXJndiwgc3lzLmFyZ3ZbOl0KLSAgICBkZWYgcmVzdG9yZV9zeXNfYXJndihzZWxmLCBzYXZlZF9hcmd2KToKLSAgICAgICAgc3lzLmFyZ3YgPSBzYXZlZF9hcmd2WzFdCi0gICAgICAgIHN5cy5hcmd2WzpdID0gc2F2ZWRfYXJndlsyXQotCi0gICAgZGVmIGdldF9jd2Qoc2VsZik6Ci0gICAgICAgIHJldHVybiBvcy5nZXRjd2QoKQotICAgIGRlZiByZXN0b3JlX2N3ZChzZWxmLCBzYXZlZF9jd2QpOgotICAgICAgICBvcy5jaGRpcihzYXZlZF9jd2QpCi0KLSAgICBkZWYgZ2V0X3N5c19zdGRvdXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuc3Rkb3V0Ci0gICAgZGVmIHJlc3RvcmVfc3lzX3N0ZG91dChzZWxmLCBzYXZlZF9zdGRvdXQpOgotICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZWRfc3Rkb3V0Ci0KLSAgICBkZWYgZ2V0X3N5c19zdGRlcnIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzeXMuc3RkZXJyCi0gICAgZGVmIHJlc3RvcmVfc3lzX3N0ZGVycihzZWxmLCBzYXZlZF9zdGRlcnIpOgotICAgICAgICBzeXMuc3RkZXJyID0gc2F2ZWRfc3RkZXJyCi0KLSAgICBkZWYgZ2V0X3N5c19zdGRpbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHN5cy5zdGRpbgotICAgIGRlZiByZXN0b3JlX3N5c19zdGRpbihzZWxmLCBzYXZlZF9zdGRpbik6Ci0gICAgICAgIHN5cy5zdGRpbiA9IHNhdmVkX3N0ZGluCi0KLSAgICBkZWYgZ2V0X29zX2Vudmlyb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChvcy5lbnZpcm9uKSwgb3MuZW52aXJvbiwgZGljdChvcy5lbnZpcm9uKQotICAgIGRlZiByZXN0b3JlX29zX2Vudmlyb24oc2VsZiwgc2F2ZWRfZW52aXJvbik6Ci0gICAgICAgIG9zLmVudmlyb24gPSBzYXZlZF9lbnZpcm9uWzFdCi0gICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQotICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShzYXZlZF9lbnZpcm9uWzJdKQotCi0gICAgZGVmIGdldF9zeXNfcGF0aChzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHN5cy5wYXRoKSwgc3lzLnBhdGgsIHN5cy5wYXRoWzpdCi0gICAgZGVmIHJlc3RvcmVfc3lzX3BhdGgoc2VsZiwgc2F2ZWRfcGF0aCk6Ci0gICAgICAgIHN5cy5wYXRoID0gc2F2ZWRfcGF0aFsxXQotICAgICAgICBzeXMucGF0aFs6XSA9IHNhdmVkX3BhdGhbMl0KLQotICAgIGRlZiBnZXRfc3lzX3BhdGhfaG9va3Moc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMucGF0aF9ob29rcyksIHN5cy5wYXRoX2hvb2tzLCBzeXMucGF0aF9ob29rc1s6XQotICAgIGRlZiByZXN0b3JlX3N5c19wYXRoX2hvb2tzKHNlbGYsIHNhdmVkX2hvb2tzKToKLSAgICAgICAgc3lzLnBhdGhfaG9va3MgPSBzYXZlZF9ob29rc1sxXQotICAgICAgICBzeXMucGF0aF9ob29rc1s6XSA9IHNhdmVkX2hvb2tzWzJdCi0KLSAgICBkZWYgZ2V0X3N5c19nZXR0cmFjZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHN5cy5nZXR0cmFjZSgpCi0gICAgZGVmIHJlc3RvcmVfc3lzX2dldHRyYWNlKHNlbGYsIHRyYWNlX2Z4bik6Ci0gICAgICAgIHN5cy5zZXR0cmFjZSh0cmFjZV9meG4pCi0KLSAgICBkZWYgZ2V0X19faW1wb3J0X18oc2VsZik6Ci0gICAgICAgIHJldHVybiBidWlsdGlucy5fX2ltcG9ydF9fCi0gICAgZGVmIHJlc3RvcmVfX19pbXBvcnRfXyhzZWxmLCBpbXBvcnRfKToKLSAgICAgICAgYnVpbHRpbnMuX19pbXBvcnRfXyA9IGltcG9ydF8KLQotICAgIGRlZiBnZXRfd2FybmluZ3NfZmlsdGVycyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGlkKHdhcm5pbmdzLmZpbHRlcnMpLCB3YXJuaW5ncy5maWx0ZXJzLCB3YXJuaW5ncy5maWx0ZXJzWzpdCi0gICAgZGVmIHJlc3RvcmVfd2FybmluZ3NfZmlsdGVycyhzZWxmLCBzYXZlZF9maWx0ZXJzKToKLSAgICAgICAgd2FybmluZ3MuZmlsdGVycyA9IHNhdmVkX2ZpbHRlcnNbMV0KLSAgICAgICAgd2FybmluZ3MuZmlsdGVyc1s6XSA9IHNhdmVkX2ZpbHRlcnNbMl0KLQotICAgIGRlZiBnZXRfYXN5bmNvcmVfc29ja2V0X21hcChzZWxmKToKLSAgICAgICAgYXN5bmNvcmUgPSBzeXMubW9kdWxlcy5nZXQoJ2FzeW5jb3JlJykKLSAgICAgICAgIyBYWFggTWFraW5nIGEgY29weSBrZWVwcyBvYmplY3RzIGFsaXZlIHVudGlsIF9fZXhpdF9fIGdldHMgY2FsbGVkLgotICAgICAgICByZXR1cm4gYXN5bmNvcmUgYW5kIGFzeW5jb3JlLnNvY2tldF9tYXAuY29weSgpIG9yIHt9Ci0gICAgZGVmIHJlc3RvcmVfYXN5bmNvcmVfc29ja2V0X21hcChzZWxmLCBzYXZlZF9tYXApOgotICAgICAgICBhc3luY29yZSA9IHN5cy5tb2R1bGVzLmdldCgnYXN5bmNvcmUnKQotICAgICAgICBpZiBhc3luY29yZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbChpZ25vcmVfYWxsPVRydWUpCi0gICAgICAgICAgICBhc3luY29yZS5zb2NrZXRfbWFwLnVwZGF0ZShzYXZlZF9tYXApCi0KLSAgICBkZWYgZ2V0X3NodXRpbF9hcmNoaXZlX2Zvcm1hdHMoc2VsZik6Ci0gICAgICAgICMgd2UgY291bGQgY2FsbCBnZXRfYXJjaGl2ZXNfZm9ybWF0cygpIGJ1dCB0aGF0IG9ubHkgcmV0dXJucyB0aGUKLSAgICAgICAgIyByZWdpc3RyeSBrZXlzOyB3ZSB3YW50IHRvIGNoZWNrIHRoZSB2YWx1ZXMgdG9vICh0aGUgZnVuY3Rpb25zIHRoYXQKLSAgICAgICAgIyBhcmUgcmVnaXN0ZXJlZCkKLSAgICAgICAgcmV0dXJuIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLCBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9zaHV0aWxfYXJjaGl2ZV9mb3JtYXRzKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc2h1dGlsLl9BUkNISVZFX0ZPUk1BVFMgPSBzYXZlZFswXQotICAgICAgICBzaHV0aWwuX0FSQ0hJVkVfRk9STUFUUy5jbGVhcigpCi0gICAgICAgIHNodXRpbC5fQVJDSElWRV9GT1JNQVRTLnVwZGF0ZShzYXZlZFsxXSkKLQotICAgIGRlZiBnZXRfc2h1dGlsX3VucGFja19mb3JtYXRzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2h1dGlsLl9VTlBBQ0tfRk9STUFUUywgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9zaHV0aWxfdW5wYWNrX2Zvcm1hdHMoc2VsZiwgc2F2ZWQpOgotICAgICAgICBzaHV0aWwuX1VOUEFDS19GT1JNQVRTID0gc2F2ZWRbMF0KLSAgICAgICAgc2h1dGlsLl9VTlBBQ0tfRk9STUFUUy5jbGVhcigpCi0gICAgICAgIHNodXRpbC5fVU5QQUNLX0ZPUk1BVFMudXBkYXRlKHNhdmVkWzFdKQotCi0gICAgZGVmIGdldF9sb2dnaW5nX19oYW5kbGVycyhzZWxmKToKLSAgICAgICAgIyBfaGFuZGxlcnMgaXMgYSBXZWFrVmFsdWVEaWN0aW9uYXJ5Ci0gICAgICAgIHJldHVybiBpZChsb2dnaW5nLl9oYW5kbGVycyksIGxvZ2dpbmcuX2hhbmRsZXJzLCBsb2dnaW5nLl9oYW5kbGVycy5jb3B5KCkKLSAgICBkZWYgcmVzdG9yZV9sb2dnaW5nX19oYW5kbGVycyhzZWxmLCBzYXZlZF9oYW5kbGVycyk6Ci0gICAgICAgICMgQ2FuJ3QgZWFzaWx5IHJldmVydCB0aGUgbG9nZ2luZyBzdGF0ZQotICAgICAgICBwYXNzCi0KLSAgICBkZWYgZ2V0X2xvZ2dpbmdfX2hhbmRsZXJMaXN0KHNlbGYpOgotICAgICAgICAjIF9oYW5kbGVyTGlzdCBpcyBhIGxpc3Qgb2Ygd2Vha3JlZnMgdG8gaGFuZGxlcnMKLSAgICAgICAgcmV0dXJuIGlkKGxvZ2dpbmcuX2hhbmRsZXJMaXN0KSwgbG9nZ2luZy5faGFuZGxlckxpc3QsIGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdCi0gICAgZGVmIHJlc3RvcmVfbG9nZ2luZ19faGFuZGxlckxpc3Qoc2VsZiwgc2F2ZWRfaGFuZGxlckxpc3QpOgotICAgICAgICAjIENhbid0IGVhc2lseSByZXZlcnQgdGhlIGxvZ2dpbmcgc3RhdGUKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGdldF9zeXNfd2Fybm9wdGlvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBpZChzeXMud2Fybm9wdGlvbnMpLCBzeXMud2Fybm9wdGlvbnMsIHN5cy53YXJub3B0aW9uc1s6XQotICAgIGRlZiByZXN0b3JlX3N5c193YXJub3B0aW9ucyhzZWxmLCBzYXZlZF9vcHRpb25zKToKLSAgICAgICAgc3lzLndhcm5vcHRpb25zID0gc2F2ZWRfb3B0aW9uc1sxXQotICAgICAgICBzeXMud2Fybm9wdGlvbnNbOl0gPSBzYXZlZF9vcHRpb25zWzJdCi0KLSAgICAjIENvbnRyb2xsaW5nIGRhbmdsaW5nIHJlZmVyZW5jZXMgdG8gVGhyZWFkIG9iamVjdHMgY2FuIG1ha2UgaXQgZWFzaWVyCi0gICAgIyB0byB0cmFjayByZWZlcmVuY2UgbGVha3MuCi0gICAgZGVmIGdldF90aHJlYWRpbmdfX2RhbmdsaW5nKHNlbGYpOgotICAgICAgICBpZiBub3QgdGhyZWFkaW5nOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgIyBUaGlzIGNvcGllcyB0aGUgd2Vha3JlZnMgd2l0aG91dCBtYWtpbmcgYW55IHN0cm9uZyByZWZlcmVuY2UKLSAgICAgICAgcmV0dXJuIHRocmVhZGluZy5fZGFuZ2xpbmcuY29weSgpCi0gICAgZGVmIHJlc3RvcmVfdGhyZWFkaW5nX19kYW5nbGluZyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIGlmIG5vdCB0aHJlYWRpbmc6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdGhyZWFkaW5nLl9kYW5nbGluZy5jbGVhcigpCi0gICAgICAgIHRocmVhZGluZy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQotCi0gICAgIyBTYW1lIGZvciBQcm9jZXNzIG9iamVjdHMKLSAgICBkZWYgZ2V0X211bHRpcHJvY2Vzc2luZ19wcm9jZXNzX19kYW5nbGluZyhzZWxmKToKLSAgICAgICAgaWYgbm90IG11bHRpcHJvY2Vzc2luZzoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICMgVW5qb2luZWQgcHJvY2VzcyBvYmplY3RzIGNhbiBzdXJ2aXZlIGFmdGVyIHByb2Nlc3MgZXhpdHMKLSAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2NsZWFudXAoKQotICAgICAgICAjIFRoaXMgY29waWVzIHRoZSB3ZWFrcmVmcyB3aXRob3V0IG1ha2luZyBhbnkgc3Ryb25nIHJlZmVyZW5jZQotICAgICAgICByZXR1cm4gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLmNvcHkoKQotICAgIGRlZiByZXN0b3JlX211bHRpcHJvY2Vzc2luZ19wcm9jZXNzX19kYW5nbGluZyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIGlmIG5vdCBtdWx0aXByb2Nlc3Npbmc6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLmNsZWFyKCkKLSAgICAgICAgbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nLnVwZGF0ZShzYXZlZCkKLQotICAgIGRlZiBnZXRfc3lzY29uZmlnX19DT05GSUdfVkFSUyhzZWxmKToKLSAgICAgICAgIyBtYWtlIHN1cmUgdGhlIGRpY3QgaXMgaW5pdGlhbGl6ZWQKLSAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdwcmVmaXgnKQotICAgICAgICByZXR1cm4gKGlkKHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpLCBzeXNjb25maWcuX0NPTkZJR19WQVJTLAotICAgICAgICAgICAgICAgIGRpY3Qoc3lzY29uZmlnLl9DT05GSUdfVkFSUykpCi0gICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19DT05GSUdfVkFSUyhzZWxmLCBzYXZlZCk6Ci0gICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMgPSBzYXZlZFsxXQotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLmNsZWFyKCkKLSAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy51cGRhdGUoc2F2ZWRbMl0pCi0KLSAgICBkZWYgZ2V0X3N5c2NvbmZpZ19fSU5TVEFMTF9TQ0hFTUVTKHNlbGYpOgotICAgICAgICByZXR1cm4gKGlkKHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTKSwgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMsCi0gICAgICAgICAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMuY29weSgpKQotICAgIGRlZiByZXN0b3JlX3N5c2NvbmZpZ19fSU5TVEFMTF9TQ0hFTUVTKHNlbGYsIHNhdmVkKToKLSAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMgPSBzYXZlZFsxXQotICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jbGVhcigpCi0gICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLnVwZGF0ZShzYXZlZFsyXSkKLQotICAgIGRlZiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzb3J0ZWQoZm4gKyAoJy8nIGlmIG9zLnBhdGguaXNkaXIoZm4pIGVsc2UgJycpCi0gICAgICAgICAgICAgICAgICAgICAgZm9yIGZuIGluIG9zLmxpc3RkaXIoKSkKLSAgICBkZWYgcmVzdG9yZV9maWxlcyhzZWxmLCBzYXZlZF92YWx1ZSk6Ci0gICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KLSAgICAgICAgaWYgZm4gbm90IGluIHNhdmVkX3ZhbHVlIGFuZCAoZm4gKyAnLycpIG5vdCBpbiBzYXZlZF92YWx1ZToKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuKToKLSAgICAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhmbikKLSAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2Rpcihmbik6Ci0gICAgICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoZm4pCi0KLSAgICBfbGMgPSBbZ2V0YXR0cihsb2NhbGUsIGxjKSBmb3IgbGMgaW4gZGlyKGxvY2FsZSkKLSAgICAgICAgICAgaWYgbGMuc3RhcnRzd2l0aCgnTENfJyldCi0gICAgZGVmIGdldF9sb2NhbGUoc2VsZik6Ci0gICAgICAgIHBhaXJpbmdzID0gW10KLSAgICAgICAgZm9yIGxjIGluIHNlbGYuX2xjOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhaXJpbmdzLmFwcGVuZCgobGMsIGxvY2FsZS5zZXRsb2NhbGUobGMsIE5vbmUpKSkKLSAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICByZXR1cm4gcGFpcmluZ3MKLSAgICBkZWYgcmVzdG9yZV9sb2NhbGUoc2VsZiwgc2F2ZWQpOgotICAgICAgICBmb3IgbGMsIHNldHRpbmcgaW4gc2F2ZWQ6Ci0gICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxjLCBzZXR0aW5nKQotCi0gICAgZGVmIGdldF93YXJuaW5nc19zaG93d2FybmluZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHdhcm5pbmdzLnNob3d3YXJuaW5nCi0gICAgZGVmIHJlc3RvcmVfd2FybmluZ3Nfc2hvd3dhcm5pbmcoc2VsZiwgZnhuKToKLSAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcgPSBmeG4KLQotICAgIGRlZiByZXNvdXJjZV9pbmZvKHNlbGYpOgotICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLnJlc291cmNlczoKLSAgICAgICAgICAgIG1ldGhvZF9zdWZmaXggPSBuYW1lLnJlcGxhY2UoJy4nLCAnXycpCi0gICAgICAgICAgICBnZXRfbmFtZSA9ICdnZXRfJyArIG1ldGhvZF9zdWZmaXgKLSAgICAgICAgICAgIHJlc3RvcmVfbmFtZSA9ICdyZXN0b3JlXycgKyBtZXRob2Rfc3VmZml4Ci0gICAgICAgICAgICB5aWVsZCBuYW1lLCBnZXRhdHRyKHNlbGYsIGdldF9uYW1lKSwgZ2V0YXR0cihzZWxmLCByZXN0b3JlX25hbWUpCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLnNhdmVkX3ZhbHVlcyA9IGRpY3QoKG5hbWUsIGdldCgpKSBmb3IgbmFtZSwgZ2V0LCByZXN0b3JlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBzZWxmLnJlc291cmNlX2luZm8oKSkKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKLSAgICAgICAgc2F2ZWRfdmFsdWVzID0gc2VsZi5zYXZlZF92YWx1ZXMKLSAgICAgICAgZGVsIHNlbGYuc2F2ZWRfdmFsdWVzCi0gICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpICAjIFNvbWUgcmVzb3VyY2VzIHVzZSB3ZWFrIHJlZmVyZW5jZXMKLSAgICAgICAgZm9yIG5hbWUsIGdldCwgcmVzdG9yZSBpbiBzZWxmLnJlc291cmNlX2luZm8oKToKLSAgICAgICAgICAgIGN1cnJlbnQgPSBnZXQoKQotICAgICAgICAgICAgb3JpZ2luYWwgPSBzYXZlZF92YWx1ZXMucG9wKG5hbWUpCi0gICAgICAgICAgICAjIENoZWNrIGZvciBjaGFuZ2VzIHRvIHRoZSByZXNvdXJjZSdzIHZhbHVlCi0gICAgICAgICAgICBpZiBjdXJyZW50ICE9IG9yaWdpbmFsOgotICAgICAgICAgICAgICAgIHNlbGYuY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgICAgICByZXN0b3JlKG9yaWdpbmFsKQotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnF1aWV0IGFuZCBub3Qgc2VsZi5wZ286Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nIC0tIHt9IHdhcyBtb2RpZmllZCBieSB7fSIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYudGVzdG5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi52ZXJib3NlID4gMSBhbmQgbm90IHNlbGYucGdvOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiAgQmVmb3JlOiB7fVxuICBBZnRlcjogIHt9ICIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCwgY3VycmVudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIHJ1bnRlc3RfaW5uZXIodGVzdCwgdmVyYm9zZSwgcXVpZXQsCi0gICAgICAgICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCBkaXNwbGF5X2ZhaWx1cmU9VHJ1ZSwgcGdvPUZhbHNlKToKLSAgICBzdXBwb3J0LnVubG9hZCh0ZXN0KQotCi0gICAgdGVzdF90aW1lID0gMC4wCi0gICAgcmVmbGVhayA9IEZhbHNlICAjIFRydWUgaWYgdGhlIHRlc3QgbGVha2VkIHJlZmVyZW5jZXMuCi0gICAgdHJ5OgotICAgICAgICBpZiB0ZXN0LnN0YXJ0c3dpdGgoJ3Rlc3QuJyk6Ci0gICAgICAgICAgICBhYnN0ZXN0ID0gdGVzdAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBBbHdheXMgaW1wb3J0IGl0IGZyb20gdGhlIHRlc3QgcGFja2FnZQotICAgICAgICAgICAgYWJzdGVzdCA9ICd0ZXN0LicgKyB0ZXN0Ci0gICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgcGdvPXBnbykgYXMgZW52aXJvbm1lbnQ6Ci0gICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShhYnN0ZXN0KQotICAgICAgICAgICAgIyBJZiB0aGUgdGVzdCBoYXMgYSB0ZXN0X21haW4sIHRoYXQgd2lsbCBydW4gdGhlIGFwcHJvcHJpYXRlCi0gICAgICAgICAgICAjIHRlc3RzLiAgSWYgbm90LCB1c2Ugbm9ybWFsIHVuaXR0ZXN0IHRlc3QgbG9hZGluZy4KLSAgICAgICAgICAgIHRlc3RfcnVubmVyID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKLSAgICAgICAgICAgIGlmIHRlc3RfcnVubmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVubmVyKCk6Ci0gICAgICAgICAgICAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQotICAgICAgICAgICAgICAgICAgICB0ZXN0cyA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBlcnJvciBpbiBsb2FkZXIuZXJyb3JzOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoZXJyb3IsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICAgICAgaWYgbG9hZGVyLmVycm9yczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiZXJyb3JzIHdoaWxlIGxvYWRpbmcgdGVzdHMiKQotICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKLSAgICAgICAgICAgIHRlc3RfcnVubmVyKCkKLSAgICAgICAgICAgIGlmIGh1bnRybGVha3M6Ci0gICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwgaHVudHJsZWFrcykKLSAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQotICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKLSAgICAgICAgaWYgbm90IHF1aWV0IGFuZCBub3QgcGdvOgotICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2cpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIFJFU09VUkNFX0RFTklFRCwgdGVzdF90aW1lCi0gICAgZXhjZXB0IHVuaXR0ZXN0LlNraXBUZXN0IGFzIG1zZzoKLSAgICAgICAgaWYgbm90IHF1aWV0IGFuZCBub3QgcGdvOgotICAgICAgICAgICAgcHJpbnQodGVzdCwgInNraXBwZWQgLS0iLCBtc2cpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIFNLSVBQRUQsIHRlc3RfdGltZQotICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgcmFpc2UKLSAgICBleGNlcHQgc3VwcG9ydC5UZXN0RmFpbGVkIGFzIG1zZzoKLSAgICAgICAgaWYgbm90IHBnbzoKLSAgICAgICAgICAgIGlmIGRpc3BsYXlfZmFpbHVyZToKLSAgICAgICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJmYWlsZWQgLS0iLCBtc2csIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoInRlc3QiLCB0ZXN0LCAiZmFpbGVkIiwgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCi0gICAgZXhjZXB0OgotICAgICAgICBtc2cgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCi0gICAgICAgIGlmIG5vdCBwZ286Ci0gICAgICAgICAgICBwcmludCgidGVzdCIsIHRlc3QsICJjcmFzaGVkIC0tIiwgbXNnLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICByZXR1cm4gRkFJTEVELCB0ZXN0X3RpbWUKLSAgICBlbHNlOgotICAgICAgICBpZiByZWZsZWFrOgotICAgICAgICAgICAgcmV0dXJuIEZBSUxFRCwgdGVzdF90aW1lCi0gICAgICAgIGlmIGVudmlyb25tZW50LmNoYW5nZWQ6Ci0gICAgICAgICAgICByZXR1cm4gRU5WX0NIQU5HRUQsIHRlc3RfdGltZQotICAgICAgICByZXR1cm4gUEFTU0VELCB0ZXN0X3RpbWUKLQotZGVmIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdG5hbWUsIHZlcmJvc2UpOgotICAgIGltcG9ydCBzaHV0aWwKLSAgICBpbXBvcnQgc3RhdAotICAgIGltcG9ydCBnYwotCi0gICAgIyBGaXJzdCBraWxsIGFueSBkYW5nbGluZyByZWZlcmVuY2VzIHRvIG9wZW4gZmlsZXMgZXRjLgotICAgICMgVGhpcyBjYW4gYWxzbyBpc3N1ZSBzb21lIFJlc291cmNlV2FybmluZ3Mgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGdldAotICAgICMgdHJpZ2dlcmVkIGR1cmluZyB0aGUgZm9sbG93aW5nIHRlc3QgcnVuLCBhbmQgcG9zc2libHkgcHJvZHVjZSBmYWlsdXJlcy4KLSAgICBnYy5jb2xsZWN0KCkKLQotICAgICMgVHJ5IHRvIGNsZWFuIHVwIGp1bmsgY29tbW9ubHkgbGVmdCBiZWhpbmQuICBXaGlsZSB0ZXN0cyBzaG91bGRuJ3QgbGVhdmUKLSAgICAjIGFueSBmaWxlcyBvciBkaXJlY3RvcmllcyBiZWhpbmQsIHdoZW4gYSB0ZXN0IGZhaWxzIHRoYXQgY2FuIGJlIHRlZGlvdXMKLSAgICAjIGZvciBpdCB0byBhcnJhbmdlLiAgVGhlIGNvbnNlcXVlbmNlcyBjYW4gYmUgZXNwZWNpYWxseSBuYXN0eSBvbiBXaW5kb3dzLAotICAgICMgc2luY2UgaWYgYSB0ZXN0IGxlYXZlcyBhIGZpbGUgb3BlbiwgaXQgY2Fubm90IGJlIGRlbGV0ZWQgYnkgbmFtZSAod2hpbGUKLSAgICAjIHRoZXJlJ3Mgbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgdGhhdCBoZXJlIGVpdGhlciwgd2UgY2FuIGRpc3BsYXkgdGhlCi0gICAgIyBuYW1lIG9mIHRoZSBvZmZlbmRpbmcgdGVzdCwgd2hpY2ggaXMgYSByZWFsIGhlbHApLgotICAgIGZvciBuYW1lIGluIChzdXBwb3J0LlRFU1RGTiwKLSAgICAgICAgICAgICAgICAgImRiX2hvbWUiLAotICAgICAgICAgICAgICAgICk6Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhuYW1lKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihuYW1lKToKLSAgICAgICAgICAgIGtpbmQsIG51a2VyID0gImRpcmVjdG9yeSIsIHNodXRpbC5ybXRyZWUKLSAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShuYW1lKToKLSAgICAgICAgICAgIGtpbmQsIG51a2VyID0gImZpbGUiLCBvcy51bmxpbmsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCJvcy5wYXRoIHNheXMgJXIgZXhpc3RzIGJ1dCBpcyBuZWl0aGVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3Rvcnkgbm9yIGZpbGUiICUgbmFtZSkKLQotICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIiVyIGxlZnQgYmVoaW5kICVzICVyIiAlICh0ZXN0bmFtZSwga2luZCwgbmFtZSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgaWYgd2UgaGF2ZSBjaG1vZCwgZml4IHBvc3NpYmxlIHBlcm1pc3Npb25zIHByb2JsZW1zCi0gICAgICAgICAgICAjIHRoYXQgbWlnaHQgcHJldmVudCBjbGVhbnVwCi0gICAgICAgICAgICBpZiAoaGFzYXR0cihvcywgJ2NobW9kJykpOgotICAgICAgICAgICAgICAgIG9zLmNobW9kKG5hbWUsIHN0YXQuU19JUldYVSB8IHN0YXQuU19JUldYRyB8IHN0YXQuU19JUldYTykKLSAgICAgICAgICAgIG51a2VyKG5hbWUpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgbXNnOgotICAgICAgICAgICAgcHJpbnQoKCIlciBsZWZ0IGJlaGluZCAlcyAlciBhbmQgaXQgY291bGRuJ3QgYmUgIgotICAgICAgICAgICAgICAgICJyZW1vdmVkOiAlcyIgJSAodGVzdG5hbWUsIGtpbmQsIG5hbWUsIG1zZykpLCBmaWxlPXN5cy5zdGRlcnIpCi0KLWRlZiBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgaW5kaXJlY3RfdGVzdCwgaHVudHJsZWFrcyk6Ci0gICAgIiIiUnVuIGEgdGVzdCBtdWx0aXBsZSB0aW1lcywgbG9va2luZyBmb3IgcmVmZXJlbmNlIGxlYWtzLgotCi0gICAgUmV0dXJuczoKLSAgICAgICAgRmFsc2UgaWYgdGhlIHRlc3QgZGlkbid0IGxlYWsgcmVmZXJlbmNlczsgVHJ1ZSBpZiB3ZSBkZXRlY3RlZCByZWZsZWFrcy4KLSAgICAiIiIKLSAgICAjIFRoaXMgY29kZSBpcyBoYWNraXNoIGFuZCBpbmVsZWdhbnQsIGJ1dCBpdCBzZWVtcyB0byBkbyB0aGUgam9iLgotICAgIGltcG9ydCBjb3B5cmVnCi0gICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwotCi0gICAgaWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oIlRyYWNraW5nIHJlZmVyZW5jZSBsZWFrcyByZXF1aXJlcyBhIGRlYnVnIGJ1aWxkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJvZiBQeXRob24iKQotCi0gICAgIyBTYXZlIGN1cnJlbnQgdmFsdWVzIGZvciBkYXNoX1JfY2xlYW51cCgpIHRvIHJlc3RvcmUuCi0gICAgZnMgPSB3YXJuaW5ncy5maWx0ZXJzWzpdCi0gICAgcHMgPSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQotICAgIHBpYyA9IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLmNvcHkoKQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHppcGltcG9ydAotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgemRjID0gTm9uZSAjIFJ1biB1bm1vZGlmaWVkIG9uIHBsYXRmb3JtcyB3aXRob3V0IHppcGltcG9ydCBzdXBwb3J0Ci0gICAgZWxzZToKLSAgICAgICAgemRjID0gemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNvcHkoKQotICAgIGFiY3MgPSB7fQotICAgIGZvciBhYmMgaW4gW2dldGF0dHIoY29sbGVjdGlvbnMuYWJjLCBhKSBmb3IgYSBpbiBjb2xsZWN0aW9ucy5hYmMuX19hbGxfX106Ci0gICAgICAgIGlmIG5vdCBpc2Fic3RyYWN0KGFiYyk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBmb3Igb2JqIGluIGFiYy5fX3N1YmNsYXNzZXNfXygpICsgW2FiY106Ci0gICAgICAgICAgICBhYmNzW29ial0gPSBvYmouX2FiY19yZWdpc3RyeS5jb3B5KCkKLQotICAgIG53YXJtdXAsIG50cmFja2VkLCBmbmFtZSA9IGh1bnRybGVha3MKLSAgICBmbmFtZSA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBmbmFtZSkKLSAgICByZXBjb3VudCA9IG53YXJtdXAgKyBudHJhY2tlZAotICAgIHJjX2RlbHRhcyA9IFswXSAqIHJlcGNvdW50Ci0gICAgYWxsb2NfZGVsdGFzID0gWzBdICogcmVwY291bnQKLQotICAgIHByaW50KCJiZWdpbm5pbmciLCByZXBjb3VudCwgInJlcGV0aXRpb25zIiwgZmlsZT1zeXMuc3RkZXJyKQotICAgIHByaW50KCgiMTIzNDU2Nzg5MCIqKHJlcGNvdW50Ly8xMCArIDEpKVs6cmVwY291bnRdLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgZm9yIGkgaW4gcmFuZ2UocmVwY291bnQpOgotICAgICAgICBpbmRpcmVjdF90ZXN0KCkKLSAgICAgICAgYWxsb2NfYWZ0ZXIsIHJjX2FmdGVyID0gZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcykKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnLicpCi0gICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQotICAgICAgICBpZiBpID49IG53YXJtdXA6Ci0gICAgICAgICAgICByY19kZWx0YXNbaV0gPSByY19hZnRlciAtIHJjX2JlZm9yZQotICAgICAgICAgICAgYWxsb2NfZGVsdGFzW2ldID0gYWxsb2NfYWZ0ZXIgLSBhbGxvY19iZWZvcmUKLSAgICAgICAgYWxsb2NfYmVmb3JlLCByY19iZWZvcmUgPSBhbGxvY19hZnRlciwgcmNfYWZ0ZXIKLSAgICBwcmludChmaWxlPXN5cy5zdGRlcnIpCi0gICAgIyBUaGVzZSBjaGVja2VycyByZXR1cm4gRmFsc2Ugb24gc3VjY2VzcywgVHJ1ZSBvbiBmYWlsdXJlCi0gICAgZGVmIGNoZWNrX3JjX2RlbHRhcyhkZWx0YXMpOgotICAgICAgICByZXR1cm4gYW55KGRlbHRhcykKLSAgICBkZWYgY2hlY2tfYWxsb2NfZGVsdGFzKGRlbHRhcyk6Ci0gICAgICAgICMgQXQgbGVhc3QgMS8zcmQgb2YgMHMKLSAgICAgICAgaWYgMyAqIGRlbHRhcy5jb3VudCgwKSA8IGxlbihkZWx0YXMpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgIyBOb3RoaW5nIGVsc2UgdGhhbiAxcywgMHMgYW5kIC0xcwotICAgICAgICBpZiBub3Qgc2V0KGRlbHRhcykgPD0gezEsMCwtMX06Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBmYWlsZWQgPSBGYWxzZQotICAgIGZvciBkZWx0YXMsIGl0ZW1fbmFtZSwgY2hlY2tlciBpbiBbCi0gICAgICAgIChyY19kZWx0YXMsICdyZWZlcmVuY2VzJywgY2hlY2tfcmNfZGVsdGFzKSwKLSAgICAgICAgKGFsbG9jX2RlbHRhcywgJ21lbW9yeSBibG9ja3MnLCBjaGVja19hbGxvY19kZWx0YXMpXToKLSAgICAgICAgaWYgY2hlY2tlcihkZWx0YXMpOgotICAgICAgICAgICAgbXNnID0gJyVzIGxlYWtlZCAlcyAlcywgc3VtPSVzJyAlICgKLSAgICAgICAgICAgICAgICB0ZXN0LCBkZWx0YXNbbndhcm11cDpdLCBpdGVtX25hbWUsIHN1bShkZWx0YXMpKQotICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgImEiKSBhcyByZWZyZXA6Ci0gICAgICAgICAgICAgICAgcHJpbnQobXNnLCBmaWxlPXJlZnJlcCkKLSAgICAgICAgICAgICAgICByZWZyZXAuZmx1c2goKQotICAgICAgICAgICAgZmFpbGVkID0gVHJ1ZQotICAgIHJldHVybiBmYWlsZWQKLQotZGVmIGRhc2hfUl9jbGVhbnVwKGZzLCBwcywgcGljLCB6ZGMsIGFiY3MpOgotICAgIGltcG9ydCBnYywgY29weXJlZwotICAgIGltcG9ydCBfc3RycHRpbWUsIGxpbmVjYWNoZQotICAgIGltcG9ydCB1cmxsaWIucGFyc2UsIHVybGxpYi5yZXF1ZXN0LCBtaW1ldHlwZXMsIGRvY3Rlc3QKLSAgICBpbXBvcnQgc3RydWN0LCBmaWxlY21wLCBjb2xsZWN0aW9ucy5hYmMKLSAgICBmcm9tIGRpc3R1dGlscy5kaXJfdXRpbCBpbXBvcnQgX3BhdGhfY3JlYXRlZAotICAgIGZyb20gd2Vha3JlZiBpbXBvcnQgV2Vha1NldAotCi0gICAgIyBDbGVhciB0aGUgd2FybmluZ3MgcmVnaXN0cnksIHNvIHRoZXkgY2FuIGJlIGRpc3BsYXllZCBhZ2FpbgotICAgIGZvciBtb2QgaW4gc3lzLm1vZHVsZXMudmFsdWVzKCk6Ci0gICAgICAgIGlmIGhhc2F0dHIobW9kLCAnX193YXJuaW5ncmVnaXN0cnlfXycpOgotICAgICAgICAgICAgZGVsIG1vZC5fX3dhcm5pbmdyZWdpc3RyeV9fCi0KLSAgICAjIFJlc3RvcmUgc29tZSBvcmlnaW5hbCB2YWx1ZXMuCi0gICAgd2FybmluZ3MuZmlsdGVyc1s6XSA9IGZzCi0gICAgY29weXJlZy5kaXNwYXRjaF90YWJsZS5jbGVhcigpCi0gICAgY29weXJlZy5kaXNwYXRjaF90YWJsZS51cGRhdGUocHMpCi0gICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY2xlYXIoKQotICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnVwZGF0ZShwaWMpCi0gICAgdHJ5OgotICAgICAgICBpbXBvcnQgemlwaW1wb3J0Ci0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzICMgUnVuIHVubW9kaWZpZWQgb24gcGxhdGZvcm1zIHdpdGhvdXQgemlwaW1wb3J0IHN1cHBvcnQKLSAgICBlbHNlOgotICAgICAgICB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUuY2xlYXIoKQotICAgICAgICB6aXBpbXBvcnQuX3ppcF9kaXJlY3RvcnlfY2FjaGUudXBkYXRlKHpkYykKLQotICAgICMgY2xlYXIgdHlwZSBjYWNoZQotICAgIHN5cy5fY2xlYXJfdHlwZV9jYWNoZSgpCi0KLSAgICAjIENsZWFyIEFCQyByZWdpc3RyaWVzLCByZXN0b3JpbmcgcHJldmlvdXNseSBzYXZlZCBBQkMgcmVnaXN0cmllcy4KLSAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgotICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgotICAgICAgICAgICAgb2JqLl9hYmNfcmVnaXN0cnkgPSBhYmNzLmdldChvYmosIFdlYWtTZXQoKSkuY29weSgpCi0gICAgICAgICAgICBvYmouX2FiY19jYWNoZS5jbGVhcigpCi0gICAgICAgICAgICBvYmouX2FiY19uZWdhdGl2ZV9jYWNoZS5jbGVhcigpCi0KLSAgICAjIEZsdXNoIHN0YW5kYXJkIG91dHB1dCwgc28gdGhhdCBidWZmZXJlZCBkYXRhIGlzIHNlbnQgdG8gdGhlIE9TIGFuZAotICAgICMgYXNzb2NpYXRlZCBQeXRob24gb2JqZWN0cyBhcmUgcmVjbGFpbWVkLgotICAgIGZvciBzdHJlYW0gaW4gKHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIsIHN5cy5fX3N0ZG91dF9fLCBzeXMuX19zdGRlcnJfXyk6Ci0gICAgICAgIGlmIHN0cmVhbSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN0cmVhbS5mbHVzaCgpCi0KLSAgICAjIENsZWFyIGFzc29ydGVkIG1vZHVsZSBjYWNoZXMuCi0gICAgX3BhdGhfY3JlYXRlZC5jbGVhcigpCi0gICAgcmUucHVyZ2UoKQotICAgIF9zdHJwdGltZS5fcmVnZXhfY2FjaGUuY2xlYXIoKQotICAgIHVybGxpYi5wYXJzZS5jbGVhcl9jYWNoZSgpCi0gICAgdXJsbGliLnJlcXVlc3QudXJsY2xlYW51cCgpCi0gICAgbGluZWNhY2hlLmNsZWFyY2FjaGUoKQotICAgIG1pbWV0eXBlcy5fZGVmYXVsdF9taW1lX3R5cGVzKCkKLSAgICBmaWxlY21wLl9jYWNoZS5jbGVhcigpCi0gICAgc3RydWN0Ll9jbGVhcmNhY2hlKCkKLSAgICBkb2N0ZXN0Lm1hc3RlciA9IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBjdHlwZXMKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICMgRG9uJ3Qgd29ycnkgYWJvdXQgcmVzZXR0aW5nIHRoZSBjYWNoZSBpZiBjdHlwZXMgaXMgbm90IHN1cHBvcnRlZAotICAgICAgICBwYXNzCi0gICAgZWxzZToKLSAgICAgICAgY3R5cGVzLl9yZXNldF9jYWNoZSgpCi0KLSAgICAjIENvbGxlY3QgY3ljbGljIHRyYXNoIGFuZCByZWFkIG1lbW9yeSBzdGF0aXN0aWNzIGltbWVkaWF0ZWx5IGFmdGVyLgotICAgIGZ1bmMxID0gc3lzLmdldGFsbG9jYXRlZGJsb2NrcwotICAgIGZ1bmMyID0gc3lzLmdldHRvdGFscmVmY291bnQKLSAgICBnYy5jb2xsZWN0KCkKLSAgICByZXR1cm4gZnVuYzEoKSwgZnVuYzIoKQotCi1kZWYgd2FybV9jYWNoZXMoKToKLSAgICAjIGNoYXIgY2FjaGUKLSAgICBzID0gYnl0ZXMocmFuZ2UoMjU2KSkKLSAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgotICAgICAgICBzW2k6aSsxXQotICAgICMgdW5pY29kZSBjYWNoZQotICAgIHggPSBbY2hyKGkpIGZvciBpIGluIHJhbmdlKDI1NildCi0gICAgIyBpbnQgY2FjaGUKLSAgICB4ID0gbGlzdChyYW5nZSgtNSwgMjU3KSkKLQotZGVmIGZpbmR0ZXN0ZGlyKHBhdGg9Tm9uZSk6Ci0gICAgcmV0dXJuIHBhdGggb3Igb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSBvciBvcy5jdXJkaXIKLQotZGVmIHJlbW92ZXB5KG5hbWVzKToKLSAgICBpZiBub3QgbmFtZXM6Ci0gICAgICAgIHJldHVybgotICAgIGZvciBpZHgsIG5hbWUgaW4gZW51bWVyYXRlKG5hbWVzKToKLSAgICAgICAgYmFzZW5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgaWYgZXh0ID09ICcucHknOgotICAgICAgICAgICAgbmFtZXNbaWR4XSA9IGJhc2VuYW1lCi0KLWRlZiBjb3VudChuLCB3b3JkKToKLSAgICBpZiBuID09IDE6Ci0gICAgICAgIHJldHVybiAiJWQgJXMiICUgKG4sIHdvcmQpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuICIlZCAlc3MiICUgKG4sIHdvcmQpCi0KLWRlZiBwcmludGxpc3QoeCwgd2lkdGg9NzAsIGluZGVudD00KToKLSAgICAiIiJQcmludCB0aGUgZWxlbWVudHMgb2YgaXRlcmFibGUgeCB0byBzdGRvdXQuCi0KLSAgICBPcHRpb25hbCBhcmcgd2lkdGggKGRlZmF1bHQgNzApIGlzIHRoZSBtYXhpbXVtIGxpbmUgbGVuZ3RoLgotICAgIE9wdGlvbmFsIGFyZyBpbmRlbnQgKGRlZmF1bHQgNCkgaXMgdGhlIG51bWJlciBvZiBibGFua3Mgd2l0aCB3aGljaCB0bwotICAgIGJlZ2luIGVhY2ggbGluZS4KLSAgICAiIiIKLQotICAgIGZyb20gdGV4dHdyYXAgaW1wb3J0IGZpbGwKLSAgICBibGFua3MgPSAnICcgKiBpbmRlbnQKLSAgICAjIFByaW50IHRoZSBzb3J0ZWQgbGlzdDogJ3gnIG1heSBiZSBhICctLXJhbmRvbScgbGlzdCBvciBhIHNldCgpCi0gICAgcHJpbnQoZmlsbCgnICcuam9pbihzdHIoZWx0KSBmb3IgZWx0IGluIHNvcnRlZCh4KSksIHdpZHRoLAotICAgICAgICAgICAgICAgaW5pdGlhbF9pbmRlbnQ9YmxhbmtzLCBzdWJzZXF1ZW50X2luZGVudD1ibGFua3MpKQotCi0KLWRlZiBtYWluX2luX3RlbXBfY3dkKCk6Ci0gICAgIiIiUnVuIG1haW4oKSBpbiBhIHRlbXBvcmFyeSB3b3JraW5nIGRpcmVjdG9yeS4iIiIKLSAgICBpZiBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1rZGlyKFRFTVBESVIpCi0gICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAjIERlZmluZSBhIHdyaXRhYmxlIHRlbXAgZGlyIHRoYXQgd2lsbCBiZSB1c2VkIGFzIGN3ZCB3aGlsZSBydW5uaW5nCi0gICAgIyB0aGUgdGVzdHMuIFRoZSBuYW1lIG9mIHRoZSBkaXIgaW5jbHVkZXMgdGhlIHBpZCB0byBhbGxvdyBwYXJhbGxlbAotICAgICMgdGVzdGluZyAoc2VlIHRoZSAtaiBvcHRpb24pLgotICAgIHRlc3RfY3dkID0gJ3Rlc3RfcHl0aG9uX3t9Jy5mb3JtYXQob3MuZ2V0cGlkKCkpCi0gICAgdGVzdF9jd2QgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgdGVzdF9jd2QpCi0KLSAgICAjIFJ1biB0aGUgdGVzdHMgaW4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcmlseSBjaGFuZ2VzIHRoZSBDV0QgdG8gYQotICAgICMgdGVtcG9yYXJ5IGFuZCB3cml0YWJsZSBkaXJlY3RvcnkuICBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKLSAgICAjIGNoYW5nZSB0aGUgQ1dELCB0aGUgb3JpZ2luYWwgQ1dEIHdpbGwgYmUgdXNlZC4gIFRoZSBvcmlnaW5hbCBDV0QgaXMKLSAgICAjIGF2YWlsYWJsZSBmcm9tIHN1cHBvcnQuU0FWRURDV0QuCi0gICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKHRlc3RfY3dkLCBxdWlldD1UcnVlKToKLSAgICAgICAgbWFpbigpCi0KK2RlZiBfbWFpbigpOgorICAgIGdsb2JhbCBfX2ZpbGVfXwogCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICMgUmVtb3ZlIHJlZ3J0ZXN0LnB5J3Mgb3duIGRpcmVjdG9yeSBmcm9tIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGguIERlc3BpdGUKICAgICAjIHRoZSBlbGltaW5hdGlvbiBvZiBpbXBsaWNpdCByZWxhdGl2ZSBpbXBvcnRzLCB0aGlzIGlzIHN0aWxsIG5lZWRlZCB0bwogICAgICMgZW5zdXJlIHRoYXQgc3VibW9kdWxlcyBvZiB0aGUgdGVzdCBwYWNrYWdlIGRvIG5vdCBpbmFwcHJvcHJpYXRlbHkgYXBwZWFyCiAgICAgIyBhcyB0b3AtbGV2ZWwgbW9kdWxlcyBldmVuIHdoZW4gcGVvcGxlIChvciBidWlsZGJvdHMhKSBpbnZva2UgcmVncnRlc3QucHkKICAgICAjIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcgdGhlIC1tIHN3aXRjaAogICAgIG15ZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5kaXJuYW1lKHN5cy5hcmd2WzBdKSkpCi0gICAgaSA9IGxlbihzeXMucGF0aCkKKyAgICBpID0gbGVuKHN5cy5wYXRoKSAtIDEKICAgICB3aGlsZSBpID49IDA6Ci0gICAgICAgIGkgLT0gMQogICAgICAgICBpZiBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChzeXMucGF0aFtpXSkpID09IG15ZGlyOgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoW2ldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpIC09IDEKIAogICAgICMgZmluZHRlc3RkaXIoKSBnZXRzIHRoZSBkaXJuYW1lIG91dCBvZiBfX2ZpbGVfXywgc28gd2UgaGF2ZSB0byBtYWtlIGl0CiAgICAgIyBhYnNvbHV0ZSBiZWZvcmUgY2hhbmdpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgpAQCAtMTYxOCw0ICs0Myw4IEBACiAgICAgIyBzYW5pdHkgY2hlY2sKICAgICBhc3NlcnQgX19maWxlX18gPT0gb3MucGF0aC5hYnNwYXRoKHN5cy5hcmd2WzBdKQogCi0gICAgbWFpbl9pbl90ZW1wX2N3ZCgpCisgICAgbWFpbigpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zZXFfdGVzdHMucHkgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKaW5kZXggNzJmNDg0NS4uMWU3YTZmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L3NlcV90ZXN0cy5weQpAQCAtMzE4LDcgKzMxOCw2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKHMpLCBpZChzKjEpKQogCiAgICAgZGVmIHRlc3RfYmlncmVwZWF0KHNlbGYpOgotICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGlmIHN5cy5tYXhzaXplIDw9IDIxNDc0ODM2NDc6CiAgICAgICAgICAgICB4ID0gc2VsZi50eXBlMnRlc3QoWzBdKQogICAgICAgICAgICAgeCAqPSAyKioxNgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5IGIvTGliL3Rlc3Qvc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYWUxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9zaWduYWxpbnRlcnByb2N0ZXN0ZXIucHkKQEAgLTAsMCArMSw4NCBAQAoraW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIFNJR1VTUjFFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBwYXNzCisKKworY2xhc3MgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5nb3Rfc2lnbmFscyA9IHsnU0lHSFVQJzogMCwgJ1NJR1VTUjEnOiAwLCAnU0lHQUxSTSc6IDB9CisKKyAgICBkZWYgc2lnaHVwX2hhbmRsZXIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CisgICAgICAgIHNlbGYuZ290X3NpZ25hbHNbJ1NJR0hVUCddICs9IDEKKworICAgIGRlZiBzaWd1c3IxX2hhbmRsZXIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CisgICAgICAgIHNlbGYuZ290X3NpZ25hbHNbJ1NJR1VTUjEnXSArPSAxCisgICAgICAgIHJhaXNlIFNJR1VTUjFFeGNlcHRpb24KKworICAgIGRlZiB3YWl0X3NpZ25hbChzZWxmLCBjaGlsZCwgc2lnbmFtZSwgZXhjX2NsYXNzPU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBjaGlsZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFRoaXMgd2FpdCBzaG91bGQgYmUgaW50ZXJydXB0ZWQgYnkgZXhjX2NsYXNzCisgICAgICAgICAgICAgICAgIyAoaWYgc2V0KQorICAgICAgICAgICAgICAgIGNoaWxkLndhaXQoKQorCisgICAgICAgICAgICB0aW1lb3V0ID0gMTAuMAorICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLm1vbm90b25pYygpICsgdGltZW91dAorCisgICAgICAgICAgICB3aGlsZSB0aW1lLm1vbm90b25pYygpIDwgZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5nb3Rfc2lnbmFsc1tzaWduYW1lXToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgc2lnbmFsLnBhdXNlKCkKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjX2NsYXNzIGlzIG5vdCBOb25lIGFuZCBpc2luc3RhbmNlKGV4YywgZXhjX2NsYXNzKToKKyAgICAgICAgICAgICAgICAjIGdvdCB0aGUgZXhwZWN0ZWQgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByYWlzZQorCisgICAgICAgIHNlbGYuZmFpbCgnc2lnbmFsICVzIG5vdCByZWNlaXZlZCBhZnRlciAlcyBzZWNvbmRzJworICAgICAgICAgICAgICAgICAgJSAoc2lnbmFtZSwgdGltZW91dCkpCisKKyAgICBkZWYgc3VicHJvY2Vzc19zZW5kX3NpZ25hbChzZWxmLCBwaWQsIHNpZ25hbWUpOgorICAgICAgICBjb2RlID0gJ2ltcG9ydCBvcywgc2lnbmFsOyBvcy5raWxsKCVzLCBzaWduYWwuJXMpJyAlIChwaWQsIHNpZ25hbWUpCisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsIGNvZGVdCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9pbnRlcnByb2Nlc3Nfc2lnbmFsKHNlbGYpOgorICAgICAgICAjIEluc3RhbGwgaGFuZGxlcnMuIFRoaXMgZnVuY3Rpb24gcnVucyBpbiBhIHN1Yi1wcm9jZXNzLCBzbyB3ZQorICAgICAgICAjIGRvbid0IHdvcnJ5IGFib3V0IHJlLXNldHRpbmcgdGhlIGRlZmF1bHQgaGFuZGxlcnMuCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgc2VsZi5zaWdodXBfaGFuZGxlcikKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgc2VsZi5zaWd1c3IxX2hhbmRsZXIpCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjIsIHNpZ25hbC5TSUdfSUdOKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzaWduYWwuZGVmYXVsdF9pbnRfaGFuZGxlcikKKworICAgICAgICAjIExldCB0aGUgc3ViLXByb2Nlc3NlcyBrbm93IHdobyB0byBzZW5kIHNpZ25hbHMgdG8uCisgICAgICAgIHBpZCA9IHN0cihvcy5nZXRwaWQoKSkKKworICAgICAgICB3aXRoIHNlbGYuc3VicHJvY2Vzc19zZW5kX3NpZ25hbChwaWQsICJTSUdIVVAiKSBhcyBjaGlsZDoKKyAgICAgICAgICAgIHNlbGYud2FpdF9zaWduYWwoY2hpbGQsICdTSUdIVVAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ290X3NpZ25hbHMsIHsnU0lHSFVQJzogMSwgJ1NJR1VTUjEnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0lHQUxSTSc6IDB9KQorCisgICAgICAgIHdpdGggc2VsZi5zdWJwcm9jZXNzX3NlbmRfc2lnbmFsKHBpZCwgIlNJR1VTUjEiKSBhcyBjaGlsZDoKKyAgICAgICAgICAgIHNlbGYud2FpdF9zaWduYWwoY2hpbGQsICdTSUdVU1IxJywgU0lHVVNSMUV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdvdF9zaWduYWxzLCB7J1NJR0hVUCc6IDEsICdTSUdVU1IxJzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NJR0FMUk0nOiAwfSkKKworICAgICAgICB3aXRoIHNlbGYuc3VicHJvY2Vzc19zZW5kX3NpZ25hbChwaWQsICJTSUdVU1IyIikgYXMgY2hpbGQ6CisgICAgICAgICAgICAjIE5vdGhpbmcgc2hvdWxkIGhhcHBlbjogU0lHVVNSMiBpcyBpZ25vcmVkCisgICAgICAgICAgICBjaGlsZC53YWl0KCkKKworICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgc2VsZi53YWl0X3NpZ25hbChOb25lLCAnU0lHQUxSTScsIEtleWJvYXJkSW50ZXJydXB0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ290X3NpZ25hbHMsIHsnU0lHSFVQJzogMSwgJ1NJR1VTUjEnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0lHQUxSTSc6IDB9KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zb3J0cGVyZi5weSBiL0xpYi90ZXN0L3NvcnRwZXJmLnB5CmluZGV4IDkwNzIyZjcuLjE3MWU1Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NvcnRwZXJmLnB5CisrKyBiL0xpYi90ZXN0L3NvcnRwZXJmLnB5CkBAIC02NCw3ICs2NCw3IEBACiAgICAgZmx1c2goKQogCiBkZWYgdGFidWxhdGUocik6Ci0gICAgIiIiVGFidWxhdGUgc29ydCBzcGVlZCBmb3IgbGlzdHMgb2YgdmFyaW91cyBzaXplcy4KKyAgICByIiIiVGFidWxhdGUgc29ydCBzcGVlZCBmb3IgbGlzdHMgb2YgdmFyaW91cyBzaXplcy4KIAogICAgIFRoZSBzaXplcyBhcmUgMioqaSBmb3IgaSBpbiByICh0aGUgYXJndW1lbnQsIGEgbGlzdCkuCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkgYi9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5CmluZGV4IDAwN2YzYmMuLjhiNjZmOTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3N1cHBvcnQvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQoraW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB1cmxsaWIuZXJyb3IKIGltcG9ydCB3YXJuaW5ncwpAQCAtODksOCArOTAsOSBAQAogICAgICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLCAiY3B5dGhvbl9vbmx5IiwgImdldF9hdHRyaWJ1dGUiLAogICAgICJyZXF1aXJlc19JRUVFXzc1NCIsICJza2lwX3VubGVzc194YXR0ciIsICJyZXF1aXJlc196bGliIiwKICAgICAiYW50aWNpcGF0ZV9mYWlsdXJlIiwgImxvYWRfcGFja2FnZV90ZXN0cyIsICJkZXRlY3RfYXBpX21pc21hdGNoIiwKKyAgICAiY2hlY2tfX2FsbF9fIiwKICAgICAjIHN5cwotICAgICJpc19qeXRob24iLCAiY2hlY2tfaW1wbF9kZXRhaWwiLAorICAgICJpc19qeXRob24iLCAiaXNfYW5kcm9pZCIsICJjaGVja19pbXBsX2RldGFpbCIsICJ1bml4X3NoZWxsIiwKICAgICAjIG5ldHdvcmsKICAgICAiSE9TVCIsICJJUFY2X0VOQUJMRUQiLCAiZmluZF91bnVzZWRfcG9ydCIsICJiaW5kX3BvcnQiLCAib3Blbl91cmxyZXNvdXJjZSIsCiAgICAgIyBwcm9jZXNzZXMKQEAgLTEwMyw3ICsxMDUsNyBAQAogICAgICJjaGVja193YXJuaW5ncyIsICJjaGVja19ub19yZXNvdXJjZV93YXJuaW5nIiwgIkVudmlyb25tZW50VmFyR3VhcmQiLAogICAgICJydW5fd2l0aF9sb2NhbGUiLCAic3dhcF9pdGVtIiwKICAgICAic3dhcF9hdHRyIiwgIk1hdGNoZXIiLCAic2V0X21lbWxpbWl0IiwgIlN1cHByZXNzQ3Jhc2hSZXBvcnQiLCAic29ydGRpY3QiLAotICAgICJydW5fd2l0aF90eiIsCisgICAgInJ1bl93aXRoX3R6IiwgIlBHTyIsCiAgICAgXQogCiBjbGFzcyBFcnJvcihFeGNlcHRpb24pOgpAQCAtNzMzLDYgKzczNSwxMyBAQAogCiBpc19qeXRob24gPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnamF2YScpCiAKK2lzX2FuZHJvaWQgPSBib29sKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQU5EUk9JRF9BUElfTEVWRUwnKSkKKworaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgdW5peF9zaGVsbCA9ICcvc3lzdGVtL2Jpbi9zaCcgaWYgaXNfYW5kcm9pZCBlbHNlICcvYmluL3NoJworZWxzZToKKyAgICB1bml4X3NoZWxsID0gTm9uZQorCiAjIEZpbGVuYW1lIHVzZWQgZm9yIHRlc3RpbmcKIGlmIG9zLm5hbWUgPT0gJ2phdmEnOgogICAgICMgSnl0aG9uIGRpc2FsbG93cyBAIGluIG1vZHVsZSBuYW1lcwpAQCAtODAyLDcgKzgxMSw3IEBACiAjIGVuY29kZWQgYnkgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKGluIHN0cmljdCBtb2RlKS4gSXQgY2FuIGJlIE5vbmUgaWYgd2UKICMgY2Fubm90IGdlbmVyYXRlIHN1Y2ggZmlsZW5hbWUuCiBURVNURk5fVU5FTkNPREFCTEUgPSBOb25lCi1pZiBvcy5uYW1lIGluICgnbnQnLCAnY2UnKToKK2lmIG9zLm5hbWUgPT0gJ250JzoKICAgICAjIHNraXAgd2luMzJzICgwKSBvciBXaW5kb3dzIDl4L01FICgxKQogICAgIGlmIHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLnBsYXRmb3JtID49IDI6CiAgICAgICAgICMgRGlmZmVyZW50IGtpbmRzIG9mIGNoYXJhY3RlcnMgZnJvbSB2YXJpb3VzIGxhbmd1YWdlcyB0byBtaW5pbWl6ZSB0aGUKQEAgLTg2OSw2ICs4NzgsMTAgQEAKICMgU2F2ZSB0aGUgaW5pdGlhbCBjd2QKIFNBVkVEQ1dEID0gb3MuZ2V0Y3dkKCkKIAorIyBTZXQgYnkgbGlicmVncnRlc3QvbWFpbi5weSBzbyB3ZSBjYW4gc2tpcCB0ZXN0cyB0aGF0IGFyZSBub3QKKyMgdXNlZnVsIGZvciBQR08KK1BHTyA9IEZhbHNlCisKIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgdGVtcF9kaXIocGF0aD1Ob25lLCBxdWlldD1GYWxzZSk6CiAgICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgY3JlYXRlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuCkBAIC05MDEsNyArOTE0LDcgQEAKICAgICAgICAgeWllbGQgcGF0aAogICAgIGZpbmFsbHk6CiAgICAgICAgIGlmIGRpcl9jcmVhdGVkOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQorICAgICAgICAgICAgcm10cmVlKHBhdGgpCiAKIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCiBkZWYgY2hhbmdlX2N3ZChwYXRoLCBxdWlldD1GYWxzZSk6CkBAIC0yMDc4LDYgKzIwOTEsMTEgQEAKICAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MgYW5kIHN5cy53YXJub3B0aW9ucy4iIiIKICAgICByZXR1cm4gc3VicHJvY2Vzcy5fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKIAorZGVmIG9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAorICAgIG9wdGltaXphdGlvbiBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MuIiIiCisgICAgcmV0dXJuIHN1YnByb2Nlc3MuX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgU3VwcG9ydCBmb3IgYXNzZXJ0aW9ucyBhYm91dCBsb2dnaW5nLgogIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjE4NCw3ICsyMjAyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksIGIidXNlci50ZXN0IiwgYiIiKQogICAgICAgICAgICAgICAgICAgICAjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KICAgICAgICAgICAgICAgICAgICAga2VybmVsX3ZlcnNpb24gPSBwbGF0Zm9ybS5yZWxlYXNlKCkKLSAgICAgICAgICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCIyLjYuKFxkezEsMn0pIiwga2VybmVsX3ZlcnNpb24pCisgICAgICAgICAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKICAgICAgICAgICAgICAgICAgICAgY2FuID0gbSBpcyBOb25lIG9yIGludChtLmdyb3VwKDEpKSA+PSAzOQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBjYW4gPSBGYWxzZQpAQCAtMjIyOSw2ICsyMjQ3LDY1IEBACiAgICAgcmV0dXJuIG1pc3NpbmdfaXRlbXMKIAogCitkZWYgY2hlY2tfX2FsbF9fKHRlc3RfY2FzZSwgbW9kdWxlLCBuYW1lX29mX21vZHVsZT1Ob25lLCBleHRyYT0oKSwKKyAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PSgpKToKKyAgICAiIiJBc3NlcnQgdGhhdCB0aGUgX19hbGxfXyB2YXJpYWJsZSBvZiAnbW9kdWxlJyBjb250YWlucyBhbGwgcHVibGljIG5hbWVzLgorCisgICAgVGhlIG1vZHVsZSdzIHB1YmxpYyBuYW1lcyAoaXRzIEFQSSkgYXJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkgYmFzZWQgb24KKyAgICB3aGV0aGVyIHRoZXkgbWF0Y2ggdGhlIHB1YmxpYyBuYW1lIGNvbnZlbnRpb24gYW5kIHdlcmUgZGVmaW5lZCBpbgorICAgICdtb2R1bGUnLgorCisgICAgVGhlICduYW1lX29mX21vZHVsZScgYXJndW1lbnQgY2FuIHNwZWNpZnkgKGFzIGEgc3RyaW5nIG9yIHR1cGxlIHRoZXJlb2YpCisgICAgd2hhdCBtb2R1bGUocykgYW4gQVBJIGNvdWxkIGJlIGRlZmluZWQgaW4gaW4gb3JkZXIgdG8gYmUgZGV0ZWN0ZWQgYXMgYQorICAgIHB1YmxpYyBBUEkuIE9uZSBjYXNlIGZvciB0aGlzIGlzIHdoZW4gJ21vZHVsZScgaW1wb3J0cyBwYXJ0IG9mIGl0cyBwdWJsaWMKKyAgICBBUEkgZnJvbSBvdGhlciBtb2R1bGVzLCBwb3NzaWJseSBhIEMgYmFja2VuZCAobGlrZSAnY3N2JyBhbmQgaXRzICdfY3N2JykuCisKKyAgICBUaGUgJ2V4dHJhJyBhcmd1bWVudCBjYW4gYmUgYSBzZXQgb2YgbmFtZXMgdGhhdCB3b3VsZG4ndCBvdGhlcndpc2UgYmUKKyAgICBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIGFzICJwdWJsaWMiLCBsaWtlIG9iamVjdHMgd2l0aG91dCBhIHByb3BlcgorICAgICdfX21vZHVsZV9fJyBhdHRyaXVidXRlLiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUKKyAgICBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIG9uZXMuCisKKyAgICBUaGUgJ2JsYWNrbGlzdCcgYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgbXVzdCBub3QgYmUgdHJlYXRlZAorICAgIGFzIHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkgZXZlbiB0aG91Z2ggdGhlaXIgbmFtZXMgaW5kaWNhdGUgb3RoZXJ3aXNlLgorCisgICAgVXNhZ2U6CisgICAgICAgIGltcG9ydCBiYXIKKyAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmb28pCisKKyAgICAgICAgY2xhc3MgT3RoZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgZXh0cmEgPSB7J0JBUl9DT05TVCcsICdGT09fQ09OU1QnfQorICAgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IHsnYmF6J30gICMgVW5kb2N1bWVudGVkIG5hbWUuCisgICAgICAgICAgICAgICAgIyBiYXIgaW1wb3J0cyBwYXJ0IG9mIGl0cyBBUEkgZnJvbSBfYmFyLgorICAgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGJhciwgKCdiYXInLCAnX2JhcicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAgIiIiCisKKyAgICBpZiBuYW1lX29mX21vZHVsZSBpcyBOb25lOgorICAgICAgICBuYW1lX29mX21vZHVsZSA9IChtb2R1bGUuX19uYW1lX18sICkKKyAgICBlbGlmIGlzaW5zdGFuY2UobmFtZV9vZl9tb2R1bGUsIHN0cik6CisgICAgICAgIG5hbWVfb2ZfbW9kdWxlID0gKG5hbWVfb2ZfbW9kdWxlLCApCisKKyAgICBleHBlY3RlZCA9IHNldChleHRyYSkKKworICAgIGZvciBuYW1lIGluIGRpcihtb2R1bGUpOgorICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJ18nKSBvciBuYW1lIGluIGJsYWNrbGlzdDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIG9iaiA9IGdldGF0dHIobW9kdWxlLCBuYW1lKQorICAgICAgICBpZiAoZ2V0YXR0cihvYmosICdfX21vZHVsZV9fJywgTm9uZSkgaW4gbmFtZV9vZl9tb2R1bGUgb3IKKyAgICAgICAgICAgICAgICAobm90IGhhc2F0dHIob2JqLCAnX19tb2R1bGVfXycpIGFuZAorICAgICAgICAgICAgICAgICBub3QgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1vZHVsZVR5cGUpKSk6CisgICAgICAgICAgICBleHBlY3RlZC5hZGQobmFtZSkKKyAgICB0ZXN0X2Nhc2UuYXNzZXJ0Q291bnRFcXVhbChtb2R1bGUuX19hbGxfXywgZXhwZWN0ZWQpCisKKwogY2xhc3MgU3VwcHJlc3NDcmFzaFJlcG9ydDoKICAgICAiIiJUcnkgdG8gcHJldmVudCBhIGNyYXNoIHJlcG9ydCBmcm9tIHBvcHBpbmcgdXAuCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weSBiL0xpYi90ZXN0L3Rlc3RfX19hbGxfXy5weQppbmRleCBlOTRkOTg0Li5hZTkxMTRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19fYWxsX18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fX2FsbF9fLnB5CkBAIC0zOCw2ICszOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsIGUuX19jbGFzc19fLl9fbmFtZV9fLCBlKSkKICAgICAgICAgICAgIGlmICJfX2J1aWx0aW5zX18iIGluIG5hbWVzOgogICAgICAgICAgICAgICAgIGRlbCBuYW1lc1siX19idWlsdGluc19fIl0KKyAgICAgICAgICAgIGlmICdfX2Fubm90YXRpb25zX18nIGluIG5hbWVzOgorICAgICAgICAgICAgICAgIGRlbCBuYW1lc1snX19hbm5vdGF0aW9uc19fJ10KICAgICAgICAgICAgIGtleXMgPSBzZXQobmFtZXMpCiAgICAgICAgICAgICBhbGxfbGlzdCA9IHN5cy5tb2R1bGVzW21vZG5hbWVdLl9fYWxsX18KICAgICAgICAgICAgIGFsbF9zZXQgPSBzZXQoYWxsX2xpc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKaW5kZXggNThmMmYwNC4uYWI0ZTI0NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQpAQCAtNCw3ICs0LDYgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBubF9sYW5naW5mbyA9IE5vbmUKIAotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CmluZGV4IGFjNjMyNWEuLmJjYmE4Y2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5CkBAIC00LDcgKzQsNiBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0YXQKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5IGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CmluZGV4IGFiNTE0MzcuLjFiZDFmODkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKQEAgLTIsNyArMiw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cwogZnJvbSBhdWRpb29wIGltcG9ydCBieXRlc3dhcAotaW1wb3J0IG9zCiBpbXBvcnQgaW8KIGltcG9ydCBzeXMKIGltcG9ydCBzdHJ1Y3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CmluZGV4IDQ3NzlhMTMuLmJjODMxNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQpAQCAtNDUxMiw2ICs0NTEyLDIxIEBACiAgICAgICAgIHN0cmluZyA9ICJOYW1lc3BhY2UoYmFyPSdzcGFtJywgZm9vPTQyKSIKICAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQogCisgICAgZGVmIHRlc3RfbmFtZXNwYWNlX3N0YXJrd2FyZ3Nfbm90aWRlbnRpZmllcihzZWxmKToKKyAgICAgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UoKip7JyInOiAncXVvdGUnfSkKKyAgICAgICAgc3RyaW5nID0gIiIiTmFtZXNwYWNlKCoqeyciJzogJ3F1b3RlJ30pIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0U3RyaW5nRXF1YWwobnMsIHN0cmluZykKKworICAgIGRlZiB0ZXN0X25hbWVzcGFjZV9rd2FyZ3NfYW5kX3N0YXJrd2FyZ3Nfbm90aWRlbnRpZmllcihzZWxmKToKKyAgICAgICAgbnMgPSBhcmdwYXJzZS5OYW1lc3BhY2UoYT0xLCAqKnsnIic6ICdxdW90ZSd9KQorICAgICAgICBzdHJpbmcgPSAiIiJOYW1lc3BhY2UoYT0xLCAqKnsnIic6ICdxdW90ZSd9KSIiIgorICAgICAgICBzZWxmLmFzc2VydFN0cmluZ0VxdWFsKG5zLCBzdHJpbmcpCisKKyAgICBkZWYgdGVzdF9uYW1lc3BhY2Vfc3Rhcmt3YXJnc19pZGVudGlmaWVyKHNlbGYpOgorICAgICAgICBucyA9IGFyZ3BhcnNlLk5hbWVzcGFjZSgqKnsndmFsaWQnOiBUcnVlfSkKKyAgICAgICAgc3RyaW5nID0gIk5hbWVzcGFjZSh2YWxpZD1UcnVlKSIKKyAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChucywgc3RyaW5nKQorCiAgICAgZGVmIHRlc3RfcGFyc2VyKHNlbGYpOgogICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJykKICAgICAgICAgc3RyaW5nID0gKApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hcnJheS5weSBiL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKaW5kZXggMmEyMWU3NC4uMWY4OTY3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hcnJheS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CkBAIC03LDggKzcsNiBAQAogaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBvcGVyYXRvcgotaW1wb3J0IGlvCi1pbXBvcnQgbWF0aAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCkBAIC0zMjgsOCArMzI2LDE5IEBACiAgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKChpdG9yaWcsIG9yaWcpLCBwcm90bykKICAgICAgICAgICAgIGl0LCBhID0gcGlja2xlLmxvYWRzKGQpCiAgICAgICAgICAgICBhLmZyb21saXN0KGRhdGEyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0KSwgdHlwZShpdG9yaWcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBbXSkKKworICAgIGRlZiB0ZXN0X2V4aGF1c3RlZF9pdGVyYXRvcihzZWxmKToKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBsaXN0KHNlbGYuZXhhbXBsZSkpCisgICAgICAgIGV4aGl0ID0gaXRlcihhKQorICAgICAgICBlbXBpdCA9IGl0ZXIoYSkKKyAgICAgICAgZm9yIHggaW4gZXhoaXQ6ICAjIGV4aGF1c3QgdGhlIGl0ZXJhdG9yCisgICAgICAgICAgICBuZXh0KGVtcGl0KSAgIyBub3QgZXhoYXVzdGVkCisgICAgICAgIGEuYXBwZW5kKHNlbGYub3V0c2lkZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGV4aGl0KSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChlbXBpdCksIFtzZWxmLm91dHNpZGVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxpc3Qoc2VsZi5leGFtcGxlKSArIFtzZWxmLm91dHNpZGVdKQogCiAgICAgZGVmIHRlc3RfaW5zZXJ0KHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQpAQCAtMTA4MCw2ICsxMDg5LDEyIEBACiAgICAgICAgIGEgPSBhcnJheS5hcnJheSgnQicsIGIiIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIGdldGJ1ZmZlcl93aXRoX251bGxfdmlldywgYSkKIAorICAgIGRlZiB0ZXN0X2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIGFycmF5LmFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnR5cGVjb2RlLCkpCisgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgcmV2ZXJzZWQsIGFycmF5LmFycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnR5cGVjb2RlLCkpCisKIGNsYXNzIFN0cmluZ1Rlc3QoQmFzZVRlc3QpOgogCiAgICAgZGVmIHRlc3Rfc2V0aXRlbShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKaW5kZXggZDNlNmQzNS4uOGM2MjQwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3QucHkKQEAgLTEsNyArMSw4IEBACitpbXBvcnQgYXN0CitpbXBvcnQgZGlzCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGFzdAogaW1wb3J0IHdlYWtyZWYKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xMTUsNiArMTE2LDggQEAKICAgICAjIFBFUCA0NDg6IEFkZGl0aW9uYWwgVW5wYWNraW5nIEdlbmVyYWxpemF0aW9ucwogICAgICJ7Kip7MToyfSwgMjozfSIsCiAgICAgInsqezEsIDJ9LCAzfSIsCisgICAgIyBBc3luY2hyb25vdXMgY29tcHJlaGVuc2lvbnMKKyAgICAiYXN5bmMgZGVmIGYoKTpcbiBbaSBhc3luYyBmb3IgYiBpbiBjXSIsCiBdCiAKICMgVGhlc2UgYXJlIGNvbXBpbGVkIHRocm91Z2ggInNpbmdsZSIKQEAgLTIzOCw3ICsyNDEsNyBAQAogICAgICAgICAgICAgICAgICAgICBhc3RfdHJlZSA9IGNvbXBpbGUoaSwgIj8iLCBraW5kLCBhc3QuUHlDRl9PTkxZX0FTVCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0b190dXBsZShhc3RfdHJlZSksIG8pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydFRydWVvcmRlcihhc3RfdHJlZSwgKDAsIDApKQotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGFjdGlvbj0iY29tcGlsaW5nIiwgaW5wdXQ9aSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYWN0aW9uPSJjb21waWxpbmciLCBpbnB1dD1pLCBraW5kPWtpbmQpOgogICAgICAgICAgICAgICAgICAgICBjb21waWxlKGFzdF90cmVlLCAiPyIsIGtpbmQpCiAKICAgICBkZWYgdGVzdF9zbGljZShzZWxmKToKQEAgLTU0Nyw2ICs1NTAsMTcgQEAKICAgICAgICAgICAgIGNvbXBpbGUobW9kLCAndGVzdCcsICdleGVjJykKICAgICAgICAgc2VsZi5hc3NlcnRJbigiaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiBOb25lIiwgc3RyKGNtLmV4Y2VwdGlvbikpCiAKKyAgICBkZWYgdGVzdF9sZXZlbF9hc19ub25lKHNlbGYpOgorICAgICAgICBib2R5ID0gW2FzdC5JbXBvcnRGcm9tKG1vZHVsZT0ndGltZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXM9W2FzdC5hbGlhcyhuYW1lPSdzbGVlcCcpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVubz0wLCBjb2xfb2Zmc2V0PTApXQorICAgICAgICBtb2QgPSBhc3QuTW9kdWxlKGJvZHkpCisgICAgICAgIGNvZGUgPSBjb21waWxlKG1vZCwgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignc2xlZXAnLCBucykKKwogCiBjbGFzcyBBU1RWYWxpZGF0b3JUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTc0Miw3ICs3NTYsNyBAQAogCiAgICAgZGVmIHRlc3RfaW1wb3J0ZnJvbShzZWxmKToKICAgICAgICAgaW1wID0gYXN0LkltcG9ydEZyb20oTm9uZSwgW2FzdC5hbGlhcygieCIsIE5vbmUpXSwgLTQyKQotICAgICAgICBzZWxmLnN0bXQoaW1wLCAibGV2ZWwgbGVzcyB0aGFuIC0xIikKKyAgICAgICAgc2VsZi5zdG10KGltcCwgIk5lZ2F0aXZlIEltcG9ydEZyb20gbGV2ZWwiKQogICAgICAgICBzZWxmLnN0bXQoYXN0LkltcG9ydEZyb20oTm9uZSwgW10sIDApLCAiZW1wdHkgbmFtZXMgb24gSW1wb3J0RnJvbSIpCiAKICAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CkBAIC03OTcsMjEgKzgxMSwyMSBAQAogICAgIGRlZiBfY2hlY2tfY29tcHJlaGVuc2lvbihzZWxmLCBmYWMpOgogICAgICAgICBzZWxmLmV4cHIoZmFjKFtdKSwgImNvbXByZWhlbnNpb24gd2l0aCBubyBnZW5lcmF0b3JzIikKICAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbXSwgMCkKICAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCiAgICAgICAgIHggPSBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKQogICAgICAgICB5ID0gYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKQotICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW05vbmVdKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW05vbmVdLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJOb25lIGRpc2FsbG93ZWQiKQotICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSkKKyAgICAgICAgZyA9IGFzdC5jb21wcmVoZW5zaW9uKHgsIHksIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0sIDApCiAgICAgICAgIHNlbGYuZXhwcihmYWMoW2ddKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogCiAgICAgZGVmIF9zaW1wbGVfY29tcChzZWxmLCBmYWMpOgogICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdLCAwKQogICAgICAgICBzZWxmLmV4cHIoZmFjKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbZ10pLAogICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQogICAgICAgICBkZWYgd3JhcChnZW5zKToKQEAgLTgyOSw3ICs4NDMsNyBAQAogCiAgICAgZGVmIHRlc3RfZGljdGNvbXAoc2VsZik6CiAgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJwIiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInAiLCBhc3QuTG9hZCgpKSwgW10sIDApCiAgICAgICAgIGMgPSBhc3QuRGljdENvbXAoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKSwgW2ddKQogICAgICAgICBzZWxmLmV4cHIoYywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQpAQCAtOTMzLDYgKzk0NywxMjUgQEAKICAgICAgICAgICAgIGNvbXBpbGUobW9kLCBmbiwgImV4ZWMiKQogCiAKK2NsYXNzIENvbnN0YW50VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIG9uIHRoZSBhc3QuQ29uc3RhbnQgbm9kZSB0eXBlLiIiIgorCisgICAgZGVmIGNvbXBpbGVfY29uc3RhbnQoc2VsZiwgdmFsdWUpOgorICAgICAgICB0cmVlID0gYXN0LnBhcnNlKCJ4ID0gMTIzIikKKworICAgICAgICBub2RlID0gdHJlZS5ib2R5WzBdLnZhbHVlCisgICAgICAgIG5ld19ub2RlID0gYXN0LkNvbnN0YW50KHZhbHVlPXZhbHVlKQorICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfbm9kZSwgbm9kZSkKKyAgICAgICAgdHJlZS5ib2R5WzBdLnZhbHVlID0gbmV3X25vZGUKKworICAgICAgICBjb2RlID0gY29tcGlsZSh0cmVlLCAiPHN0cmluZz4iLCAiZXhlYyIpCisKKyAgICAgICAgbnMgPSB7fQorICAgICAgICBleGVjKGNvZGUsIG5zKQorICAgICAgICByZXR1cm4gbnNbJ3gnXQorCisgICAgZGVmIHRlc3RfdmFsaWRhdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VsZi5jb21waWxlX2NvbnN0YW50KFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZ290IGFuIGludmFsaWQgdHlwZSBpbiBDb25zdGFudDogbGlzdCIpCisKKyAgICBkZWYgdGVzdF9zaW5nbGV0b25zKHNlbGYpOgorICAgICAgICBmb3IgY29uc3QgaW4gKE5vbmUsIEZhbHNlLCBUcnVlLCBFbGxpcHNpcywgYicnLCBmcm96ZW5zZXQoKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb25zdD1jb25zdCk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLmNvbXBpbGVfY29uc3RhbnQoY29uc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh2YWx1ZSwgY29uc3QpCisKKyAgICBkZWYgdGVzdF92YWx1ZXMoc2VsZik6CisgICAgICAgIG5lc3RlZF90dXBsZSA9ICgxLCkKKyAgICAgICAgbmVzdGVkX2Zyb3plbnNldCA9IGZyb3plbnNldCh7MX0pCisgICAgICAgIGZvciBsZXZlbCBpbiByYW5nZSgzKToKKyAgICAgICAgICAgIG5lc3RlZF90dXBsZSA9IChuZXN0ZWRfdHVwbGUsIDIpCisgICAgICAgICAgICBuZXN0ZWRfZnJvemVuc2V0ID0gZnJvemVuc2V0KHtuZXN0ZWRfZnJvemVuc2V0LCAyfSkKKyAgICAgICAgdmFsdWVzID0gKDEyMywgMTIzLjAsIDEyM2osCisgICAgICAgICAgICAgICAgICAidW5pY29kZSIsIGInYnl0ZXMnLAorICAgICAgICAgICAgICAgICAgdHVwbGUoInR1cGxlIiksIGZyb3plbnNldCgiZnJvemVuc2V0IiksCisgICAgICAgICAgICAgICAgICBuZXN0ZWRfdHVwbGUsIG5lc3RlZF9mcm96ZW5zZXQpCisgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh2YWx1ZT12YWx1ZSk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jb21waWxlX2NvbnN0YW50KHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCB2YWx1ZSkKKworICAgIGRlZiB0ZXN0X2Fzc2lnbl90b19jb25zdGFudChzZWxmKToKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZSgieCA9IDEiKQorCisgICAgICAgIHRhcmdldCA9IHRyZWUuYm9keVswXS50YXJnZXRzWzBdCisgICAgICAgIG5ld190YXJnZXQgPSBhc3QuQ29uc3RhbnQodmFsdWU9MSkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X3RhcmdldCwgdGFyZ2V0KQorICAgICAgICB0cmVlLmJvZHlbMF0udGFyZ2V0c1swXSA9IG5ld190YXJnZXQKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY29tcGlsZSh0cmVlLCAic3RyaW5nIiwgImV4ZWMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICJleHByZXNzaW9uIHdoaWNoIGNhbid0IGJlIGFzc2lnbmVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidG8gaW4gU3RvcmUgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9jc3RyaW5nKHNlbGYpOgorICAgICAgICB0cmVlID0gYXN0LnBhcnNlKCInZG9jc3RyaW5nJ1xueCA9IDEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5nZXRfZG9jc3RyaW5nKHRyZWUpLCAnZG9jc3RyaW5nJykKKworICAgICAgICB0cmVlLmJvZHlbMF0udmFsdWUgPSBhc3QuQ29uc3RhbnQodmFsdWU9J2NvbnN0YW50IGRvY3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmdldF9kb2NzdHJpbmcodHJlZSksICdjb25zdGFudCBkb2NzdHJpbmcnKQorCisgICAgZGVmIGdldF9sb2FkX2NvbnN0KHNlbGYsIHRyZWUpOgorICAgICAgICAjIENvbXBpbGUgdG8gYnl0ZWNvZGUsIGRpc2Fzc2VtYmxlIGFuZCBnZXQgcGFyYW1ldGVyIG9mIExPQURfQ09OU1QKKyAgICAgICAgIyBpbnN0cnVjdGlvbnMKKyAgICAgICAgY28gPSBjb21waWxlKHRyZWUsICc8c3RyaW5nPicsICdleGVjJykKKyAgICAgICAgY29uc3RzID0gW10KKyAgICAgICAgZm9yIGluc3RyIGluIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGNvKToKKyAgICAgICAgICAgIGlmIGluc3RyLm9wbmFtZSA9PSAnTE9BRF9DT05TVCc6CisgICAgICAgICAgICAgICAgY29uc3RzLmFwcGVuZChpbnN0ci5hcmd2YWwpCisgICAgICAgIHJldHVybiBjb25zdHMKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2xvYWRfY29uc3Qoc2VsZik6CisgICAgICAgIGNvbnN0cyA9IFtOb25lLAorICAgICAgICAgICAgICAgICAgVHJ1ZSwgRmFsc2UsCisgICAgICAgICAgICAgICAgICAxMjQsCisgICAgICAgICAgICAgICAgICAyLjAsCisgICAgICAgICAgICAgICAgICAzaiwKKyAgICAgICAgICAgICAgICAgICJ1bmljb2RlIiwKKyAgICAgICAgICAgICAgICAgIGInYnl0ZXMnLAorICAgICAgICAgICAgICAgICAgKDEsIDIsIDMpXQorCisgICAgICAgIGNvZGUgPSAnXG4nLmpvaW4oWyd4PXshcn0nLmZvcm1hdChjb25zdCkgZm9yIGNvbnN0IGluIGNvbnN0c10pCisgICAgICAgIGNvZGUgKz0gJ1xueCA9IC4uLicKKyAgICAgICAgY29uc3RzLmV4dGVuZCgoRWxsaXBzaXMsIE5vbmUpKQorCisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoY29kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9sb2FkX2NvbnN0KHRyZWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cykKKworICAgICAgICAjIFJlcGxhY2UgZXhwcmVzc2lvbiBub2RlcyB3aXRoIGNvbnN0YW50cworICAgICAgICBmb3IgYXNzaWduLCBjb25zdCBpbiB6aXAodHJlZS5ib2R5LCBjb25zdHMpOgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYXNzaWduLCBhc3QuQXNzaWduKSwgYXN0LmR1bXAoYXNzaWduKQorICAgICAgICAgICAgbmV3X25vZGUgPSBhc3QuQ29uc3RhbnQodmFsdWU9Y29uc3QpCisgICAgICAgICAgICBhc3QuY29weV9sb2NhdGlvbihuZXdfbm9kZSwgYXNzaWduLnZhbHVlKQorICAgICAgICAgICAgYXNzaWduLnZhbHVlID0gbmV3X25vZGUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2xvYWRfY29uc3QodHJlZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzKQorCisgICAgZGVmIHRlc3RfbGl0ZXJhbF9ldmFsKHNlbGYpOgorICAgICAgICB0cmVlID0gYXN0LnBhcnNlKCIxICsgMiIpCisgICAgICAgIGJpbm9wID0gdHJlZS5ib2R5WzBdLnZhbHVlCisKKyAgICAgICAgbmV3X2xlZnQgPSBhc3QuQ29uc3RhbnQodmFsdWU9MTApCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19sZWZ0LCBiaW5vcC5sZWZ0KQorICAgICAgICBiaW5vcC5sZWZ0ID0gbmV3X2xlZnQKKworICAgICAgICBuZXdfcmlnaHQgPSBhc3QuQ29uc3RhbnQodmFsdWU9MjApCisgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19yaWdodCwgYmlub3AucmlnaHQpCisgICAgICAgIGJpbm9wLnJpZ2h0ID0gbmV3X3JpZ2h0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3QubGl0ZXJhbF9ldmFsKGJpbm9wKSwgMzApCisKKwogZGVmIG1haW4oKToKICAgICBpZiBfX25hbWVfXyAhPSAnX19tYWluX18nOgogICAgICAgICByZXR1cm4KQEAgLTk0MCw4ICsxMDczLDkgQEAKICAgICAgICAgZm9yIHN0YXRlbWVudHMsIGtpbmQgaW4gKChleGVjX3Rlc3RzLCAiZXhlYyIpLCAoc2luZ2xlX3Rlc3RzLCAic2luZ2xlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZhbF90ZXN0cywgImV2YWwiKSk6CiAgICAgICAgICAgICBwcmludChraW5kKyJfcmVzdWx0cyA9IFsiKQotICAgICAgICAgICAgZm9yIHMgaW4gc3RhdGVtZW50czoKLSAgICAgICAgICAgICAgICBwcmludChyZXByKHRvX3R1cGxlKGNvbXBpbGUocywgIj8iLCBraW5kLCAweDQwMCkpKSsiLCIpCisgICAgICAgICAgICBmb3Igc3RhdGVtZW50IGluIHN0YXRlbWVudHM6CisgICAgICAgICAgICAgICAgdHJlZSA9IGFzdC5wYXJzZShzdGF0ZW1lbnQsICI/Iiwga2luZCkKKyAgICAgICAgICAgICAgICBwcmludCgiJXIsIiAlICh0b190dXBsZSh0cmVlKSwpKQogICAgICAgICAgICAgcHJpbnQoIl0iKQogICAgICAgICBwcmludCgibWFpbigpIikKICAgICAgICAgcmFpc2UgU3lzdGVtRXhpdApAQCAtOTc5LDE5ICsxMTEzLDIwIEBACiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDQpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICd2JywgKCdMb2FkJywpKSwgWygnQnJlYWsnLCAoMSwgMTEpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnTmFtZScsICgxLCA0KSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAndicsICgnTG9hZCcsKSksIFsoJ0NvbnRpbnVlJywgKDEsIDExKSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ1R1cGxlJywgKDEsIDQpLCBbKCdOYW1lJywgKDEsIDQpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgNiksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDExKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDE0KSldLCBbXSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTIpLCBbKCdOYW1lJywgKDEsIDEyKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjApLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgyLCA0KSwgKCdUdXBsZScsICgzLCA0KSwgWygnTmFtZScsICgzLCA0KSwgJ0FhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDUsIDcpLCAnQmInLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoOCwgNCksIFsoJ05hbWUnLCAoOCwgNCksICdBYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDQpLCAnQmInLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMTAsIDEwKSwgJ0NjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAxMSksICd3JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNiksICd4JywgKCdMb2FkJywpKSwgW10pLCAoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMjIpLCAnbScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMjcpLCAncCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMzIpLCAnZycsICgnTG9hZCcsKSldKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICd3JywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ3gnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2cnLCAoJ0xvYWQnLCkpXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXRDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdyJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgNyksIFsoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ20nLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMiksIFsoJ05hbWUnLCAoMSwgMTIpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyMCksICdjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDIsIDQpLCAoJ1R1cGxlJywgKDMsIDQpLCBbKCdOYW1lJywgKDMsIDQpLCAnQWEnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoNSwgNyksICdCYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICg4LCA0KSwgWygnTmFtZScsICg4LCA0KSwgJ0FhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgNCksICdCYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgMTApLCAnQ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDExKSwgJ3cnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE2KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSwgMCksICgnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAyMiksICdtJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyNyksICdwJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAzMiksICdnJywgKCdMb2FkJywpKV0sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ3cnLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAneCcsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAneCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZycsICgnTG9hZCcsKSldLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCA3KSwgWygnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAnbScsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICd4JywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCiAoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0V4cHInLCAoMiwgMSksICgnQXdhaXQnLCAoMiwgMSksICgnQ2FsbCcsICgyLCA3KSwgKCdOYW1lJywgKDIsIDcpLCAnc29tZXRoaW5nJywgKCdMb2FkJywpKSwgW10sIFtdKSkpXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0FzeW5jRm9yJywgKDIsIDcpLCAoJ05hbWUnLCAoMiwgMTEpLCAnZScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMiwgMTYpLCAnaScsICgnTG9hZCcsKSksIFsoJ0V4cHInLCAoMiwgMTkpLCAoJ051bScsICgyLCAxOSksIDEpKV0sIFsoJ0V4cHInLCAoMywgNyksICgnTnVtJywgKDMsIDcpLCAyKSldKV0sIFtdLCBOb25lKV0pLAogKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdBc3luY1dpdGgnLCAoMiwgNyksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDIsIDEyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMiwgMTcpLCAnYicsICgnU3RvcmUnLCkpKV0sIFsoJ0V4cHInLCAoMiwgMjApLCAoJ051bScsICgyLCAyMCksIDEpKV0pXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdCcsICgxLCAwKSwgW05vbmUsICgnTnVtJywgKDEsIDEwKSwgMildLCBbKCdEaWN0JywgKDEsIDMpLCBbKCdOdW0nLCAoMSwgNCksIDEpXSwgWygnTnVtJywgKDEsIDYpLCAyKV0pLCAoJ051bScsICgxLCAxMiksIDMpXSkpXSksCiAoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0JywgKDEsIDApLCBbKCdTdGFycmVkJywgKDEsIDEpLCAoJ1NldCcsICgxLCAyKSwgWygnTnVtJywgKDEsIDMpLCAxKSwgKCdOdW0nLCAoMSwgNiksIDIpXSksICgnTG9hZCcsKSksICgnTnVtJywgKDEsIDEwKSwgMyldKSldKSwKKygnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnRXhwcicsICgyLCAxKSwgKCdMaXN0Q29tcCcsICgyLCAyKSwgKCdOYW1lJywgKDIsIDIpLCAnaScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMiwgMTQpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMiwgMTkpLCAnYycsICgnTG9hZCcsKSksIFtdLCAxKV0pKV0sIFtdLCBOb25lKV0pLAogXQogc2luZ2xlX3Jlc3VsdHMgPSBbCiAoJ0ludGVyYWN0aXZlJywgWygnRXhwcicsICgxLCAwKSwgKCdCaW5PcCcsICgxLCAwKSwgKCdOdW0nLCAoMSwgMCksIDEpLCAoJ0FkZCcsKSwgKCdOdW0nLCAoMSwgMiksIDIpKSldKSwKQEAgLTEwMDYsOCArMTE0MSw4IEBACiAoJ0V4cHJlc3Npb24nLCAoJ0RpY3QnLCAoMSwgMCksIFtdLCBbXSkpLAogKCdFeHByZXNzaW9uJywgKCdTZXQnLCAoMSwgMCksIFsoJ05hbWVDb25zdGFudCcsICgxLCAxKSwgTm9uZSldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0RpY3QnLCAoMSwgMCksIFsoJ051bScsICgyLCA2KSwgMSldLCBbKCdOdW0nLCAoNCwgMTApLCAyKV0pKSwKLSgnRXhwcmVzc2lvbicsICgnTGlzdENvbXAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKLSgnRXhwcmVzc2lvbicsICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSldKSksCisoJ0V4cHJlc3Npb24nLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSwgMCldKSksCisoJ0V4cHJlc3Npb24nLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0sIDApXSkpLAogKCdFeHByZXNzaW9uJywgKCdDb21wYXJlJywgKDEsIDApLCAoJ051bScsICgxLCAwKSwgMSksIFsoJ0x0JywpLCAoJ0x0JywpXSwgWygnTnVtJywgKDEsIDQpLCAyKSwgKCdOdW0nLCAoMSwgOCksIDMpXSkpLAogKCdFeHByZXNzaW9uJywgKCdDYWxsJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMCksICdmJywgKCdMb2FkJywpKSwgWygnTnVtJywgKDEsIDIpLCAxKSwgKCdOdW0nLCAoMSwgNCksIDIpLCAoJ1N0YXJyZWQnLCAoMSwgMTApLCAoJ05hbWUnLCAoMSwgMTEpLCAnZCcsICgnTG9hZCcsKSksICgnTG9hZCcsKSldLCBbKCdrZXl3b3JkJywgJ2MnLCAoJ051bScsICgxLCA4KSwgMykpLCAoJ2tleXdvcmQnLCBOb25lLCAoJ05hbWUnLCAoMSwgMTUpLCAnZScsICgnTG9hZCcsKSkpXSkpLAogKCdFeHByZXNzaW9uJywgKCdOdW0nLCAoMSwgMCksIDEwKSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jZ2VuLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2dlbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjRmYmVhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2dlbi5weQpAQCAtMCwwICsxLDgyNSBAQAoraW1wb3J0IGluc3BlY3QKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKKworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUKK2FzeW5jaW8gPSBpbXBvcnRfbW9kdWxlKCJhc3luY2lvIikKKworCitjbGFzcyBBd2FpdEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitAdHlwZXMuY29yb3V0aW5lCitkZWYgYXdhaXRhYmxlKCosIHRocm93PUZhbHNlKToKKyAgICBpZiB0aHJvdzoKKyAgICAgICAgeWllbGQgKCd0aHJvdycsKQorICAgIGVsc2U6CisgICAgICAgIHlpZWxkICgncmVzdWx0JywpCisKKworZGVmIHJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKToKKyAgICBleGMgPSBGYWxzZQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGV4YzoKKyAgICAgICAgICAgICAgICBleGMgPSBGYWxzZQorICAgICAgICAgICAgICAgIGZ1dCA9IGNvcm8udGhyb3coQXdhaXRFeGNlcHRpb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZ1dCA9IGNvcm8uc2VuZChOb25lKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdCisKKyAgICAgICAgaWYgZnV0ID09ICgndGhyb3cnLCk6CisgICAgICAgICAgICBleGMgPSBUcnVlCisKKworZGVmIHRvX2xpc3QoZ2VuKToKKyAgICBhc3luYyBkZWYgaXRlcmF0ZSgpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBhc3luYyBmb3IgaSBpbiBnZW46CisgICAgICAgICAgICByZXMuYXBwZW5kKGkpCisgICAgICAgIHJldHVybiByZXMKKworICAgIHJldHVybiBydW5fdW50aWxfY29tcGxldGUoaXRlcmF0ZSgpKQorCisKK2NsYXNzIEFzeW5jR2VuU3ludGF4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAxKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgYWJjCisgICAgICAgICAgICB5aWVsZCBmcm9tIDEyMworICAgICAgICAnJycKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICd5aWVsZCBmcm9tLippbnNpZGUgYXN5bmMnKToKKyAgICAgICAgICAgIGV4ZWMoY29kZSwge30sIHt9KQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX3N5bnRheF8wMihzZWxmKToKKyAgICAgICAgY29kZSA9ICcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3lpZWxkIGZyb20uKmluc2lkZSBhc3luYycpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAzKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgYWJjCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgcmV0dXJuIDEyMworICAgICAgICAnJycKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdyZXR1cm4uKnZhbHVlLiphc3luYyBnZW4nKToKKyAgICAgICAgICAgIGV4ZWMoY29kZSwge30sIHt9KQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX3N5bnRheF8wNChzZWxmKToKKyAgICAgICAgY29kZSA9ICcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzA1KHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgaWYgMDoKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgcmV0dXJuIDEyCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKworY2xhc3MgQXN5bmNHZW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBjb21wYXJlX2dlbmVyYXRvcnMoc2VsZiwgc3luY19nZW4sIGFzeW5jX2dlbik6CisgICAgICAgIGRlZiBzeW5jX2l0ZXJhdGUoZyk6CisgICAgICAgICAgICByZXMgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoZy5fX25leHRfXygpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKCdTVE9QJykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHN0cih0eXBlKGV4KSkpCisgICAgICAgICAgICByZXR1cm4gcmVzCisKKyAgICAgICAgZGVmIGFzeW5jX2l0ZXJhdGUoZyk6CisgICAgICAgICAgICByZXMgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGcuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoJ1NUT1AnKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICBpZiBleC5hcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChleC5hcmdzWzBdKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgnRU1QVFkgU3RvcEl0ZXJhdGlvbicpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHR5cGUoZXgpKSkKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICBzeW5jX2dlbl9yZXN1bHQgPSBzeW5jX2l0ZXJhdGUoc3luY19nZW4pCisgICAgICAgIGFzeW5jX2dlbl9yZXN1bHQgPSBhc3luY19pdGVyYXRlKGFzeW5jX2dlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeW5jX2dlbl9yZXN1bHQsIGFzeW5jX2dlbl9yZXN1bHQpCisgICAgICAgIHJldHVybiBhc3luY19nZW5fcmVzdWx0CisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5faXRlcmF0aW9uXzAxKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgYSA9IHlpZWxkIDEyMworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhhLCBOb25lKQorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDQ1NgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDc4OQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9fbGlzdChnZW4oKSksIFsxMjMsIDQ1NiwgNzg5XSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9pdGVyYXRpb25fMDIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisKKyAgICAgICAgZyA9IGdlbigpCisgICAgICAgIGFpID0gZy5fX2FpdGVyX18oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhaS5fX2FuZXh0X18oKS5fX25leHRfXygpLCAoJ3Jlc3VsdCcsKSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBhaS5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BBc3luY0l0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzAzKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgMTIzCisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUodGhyb3c9VHJ1ZSkKKyAgICAgICAgICAgIHlpZWxkIDQ1NgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXdhaXRFeGNlcHRpb24pOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIDEgLyAwCisKKyAgICAgICAgZyA9IGdlbigpCisgICAgICAgIGFpID0gZy5fX2FpdGVyX18oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBhaS5fX2FuZXh0X18oKS5fX25leHRfXygpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA1KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXN5bmMgZ2VuZXJhdG9yLipTdG9wQXN5bmNJdGVyYXRpb24nKToKKyAgICAgICAgICAgIHRvX2xpc3QoZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA2KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzeW5jIGdlbmVyYXRvci4qU3RvcEl0ZXJhdGlvbicpOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDcoc2VsZik6CisgICAgICAgIGRlZiBzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgICAgICB5aWVsZCAxMDAKKworICAgICAgICBhc3luYyBkZWYgYXN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIHNlbGYuY29tcGFyZV9nZW5lcmF0b3JzKHN5bmNfZ2VuKCksIGFzeW5jX2dlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wOChzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIHNlbGYuY29tcGFyZV9nZW5lcmF0b3JzKHN5bmNfZ2VuKCksIGFzeW5jX2dlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wOShzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIHNlbGYuY29tcGFyZV9nZW5lcmF0b3JzKHN5bmNfZ2VuKCksIGFzeW5jX2dlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8xMChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLU5vbmUgdmFsdWUgLiogYXN5bmMgZ2VuZXJhdG9yIik6CisgICAgICAgICAgICBnZW4oKS5fX2FuZXh0X18oKS5zZW5kKDEwMCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hcGlfMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworCisgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX25hbWVfXywgJ2dlbicpCisgICAgICAgIGcuX19uYW1lX18gPSAnMTIzJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuX19uYW1lX18sICcxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy5nZW4nLCBnLl9fcXVhbG5hbWVfXykKKyAgICAgICAgZy5fX3F1YWxuYW1lX18gPSAnMTIzJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuX19xdWFsbmFtZV9fLCAnMTIzJykKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLmFnX2F3YWl0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZy5hZ19mcmFtZSwgdHlwZXMuRnJhbWVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGcuYWdfcnVubmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGcuYWdfY29kZSwgdHlwZXMuQ29kZVR5cGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNhd2FpdGFibGUoZy5hY2xvc2UoKSkpCisKKworY2xhc3MgQXN5bmNHZW5Bc3luY2lvVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9vcCA9IGFzeW5jaW8ubmV3X2V2ZW50X2xvb3AoKQorICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKE5vbmUpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5jbG9zZSgpCisgICAgICAgIHNlbGYubG9vcCA9IE5vbmUKKworICAgIGFzeW5jIGRlZiB0b19saXN0KHNlbGYsIGdlbik6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGFzeW5jIGZvciBpIGluIGdlbjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoaSkKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgcmVzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoZ2VuKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fMDIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoZ2VuKCkpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fMDMoc2VsZik6CisgICAgICAgIGxvb3AgPSBzZWxmLmxvb3AKKworICAgICAgICBjbGFzcyBHZW46CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9bG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisKKyAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi50b19saXN0KEdlbigpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFsxLCAyXSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0XzA0KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgeWllbGQgMTAwMAorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDQKKworICAgICAgICBhc3luYyBkZWYgcnVuMSgpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCA0KQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBhc3luYyBkZWYgcnVuMigpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS50aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTAwMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDQpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bjEoKSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4yKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hbmV4dF8wNShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgIHYgPSB5aWVsZCB2CisgICAgICAgICAgICB5aWVsZCB2ICogMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXQuX19hbmV4dF9fKCkuc2VuZChOb25lKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXQuX19hbmV4dF9fKCkuc2VuZCgxMCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKDEyKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMjAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA2KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMTIKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnZW4uYWNsb3NlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJhc3luYyBnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0Iik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA3KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgKz0gMQorICAgICAgICAgICAgRE9ORSArPSAxMDAwCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZ2VuID0gZm9vKCkKKyAgICAgICAgICAgIGl0ID0gZ2VuLl9fYWl0ZXJfXygpCisgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorICAgICAgICAgICAgYXdhaXQgZ2VuLmFjbG9zZSgpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA4KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgZnV0CisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSArPSAxCisgICAgICAgICAgICBET05FICs9IDEwMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICB0ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKGl0Ll9fYW5leHRfXygpKQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIGF3YWl0IGdlbi5hY2xvc2UoKQorICAgICAgICAgICAgcmV0dXJuIHQKKworICAgICAgICB0ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgICAgICMgU2lsZW5jZSBSZXNvdXJjZVdhcm5pbmdzCisgICAgICAgIGZ1dC5jYW5jZWwoKQorICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19nY19hY2xvc2VfMDkoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisgICAgICAgICAgICBhd2FpdCBnLl9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnLl9fYW5leHRfXygpCisgICAgICAgICAgICBkZWwgZworCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXNlbmRfMDEoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgIyBTYW5pdHkgY2hlY2s6CisgICAgICAgIGRlZiBzZ2VuKCk6CisgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgc2cgPSBzZ2VuKCkKKyAgICAgICAgdiA9IHNnLnNlbmQoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorICAgICAgICB2ID0gc2cuc2VuZCgxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwKQorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZCgxMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMihzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKGRlbGF5LCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIDEgLyAwCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoMTAwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXNlbmRfMDMoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHNsZWVwX25fY3Jhc2goZGVsYXkpOgorICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5lbnN1cmVfZnV0dXJlKGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVyKGRlbGF5IC8gMiwgbGFtYmRhOiBmdXQuY2FuY2VsKCkpCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgZnV0CisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoMTAwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5DYW5jZWxsZWRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfMDEoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgY2xhc3MgRm9vRXIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFNhbml0eSBjaGVjazoKKyAgICAgICAgZGVmIHNnZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgZXhjZXB0IEZvb0VyOgorICAgICAgICAgICAgICAgIHYgPSAxMDAwCisgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICBzZyA9IHNnZW4oKQorICAgICAgICB2ID0gc2cuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgIHYgPSBzZy50aHJvdyhGb29FcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgc2cuc2VuZChOb25lKQorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBleGNlcHQgRm9vRXI6CisgICAgICAgICAgICAgICAgICAgIHYgPSAxMDAwCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICMgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hdGhyb3coRm9vRXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMDApCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXRocm93XzAyKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGNsYXNzIEZvb0VyKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXN5bmMgZGVmIHNsZWVwX25fY3Jhc2goZGVsYXkpOgorICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5lbnN1cmVfZnV0dXJlKGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVyKGRlbGF5IC8gMiwgbGFtYmRhOiBmdXQuY2FuY2VsKCkpCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgZnV0CisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGb29FcjoKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2xlZXBfbl9jcmFzaCgwLjAxKQorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICAjIHJldHVybgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXRocm93KEZvb0VyKQorICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnQ2FuY2VsbGVkRXJyb3Igd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5DYW5jZWxsZWRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19zaHV0ZG93bl8wMShzZWxmKToKKyAgICAgICAgZmluYWxpemVkID0gMAorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0ZXIodGltZW91dCk6CisgICAgICAgICAgICBub25sb2NhbCBmaW5hbGl6ZWQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKHRpbWVvdXQsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBmaW5hbGl6ZWQgKz0gMQorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0KCk6CisgICAgICAgICAgICBhc3luYyBmb3IgXyBpbiB3YWl0ZXIoMSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHQxID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHdhaXQoKSkKKyAgICAgICAgdDIgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubG9vcC5zaHV0ZG93bl9hc3luY2dlbnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5hbGl6ZWQsIDIpCisKKyAgICAgICAgIyBTaWxlbmNlIHdhcm5pbmdzCisgICAgICAgIHQxLmNhbmNlbCgpCisgICAgICAgIHQyLmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX3NodXRkb3duXzAyKHNlbGYpOgorICAgICAgICBsb2dnZWQgPSAwCisKKyAgICAgICAgZGVmIGxvZ2dlcihsb29wLCBjb250ZXh0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGxvZ2dlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignYXN5bmNnZW4nLCBjb250ZXh0KQorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsb3Npbmcgb2YgYXN5bmNocm9ub3VzJworICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaW4gY29udGV4dFsnbWVzc2FnZSddOgorICAgICAgICAgICAgICAgIGxvZ2dlZCArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXRlcih0aW1lb3V0KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKHRpbWVvdXQsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBhc3luYyBkZWYgd2FpdCgpOgorICAgICAgICAgICAgYXN5bmMgZm9yIF8gaW4gd2FpdGVyKDEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHdhaXQoKSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgICAgIHNlbGYubG9vcC5zZXRfZXhjZXB0aW9uX2hhbmRsZXIobG9nZ2VyKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubG9vcC5zaHV0ZG93bl9hc3luY2dlbnMoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlZCwgMSkKKworICAgICAgICAjIFNpbGVuY2Ugd2FybmluZ3MKKyAgICAgICAgdC5jYW5jZWwoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQppbmRleCAzYTMzZmM4Li4wZWJhNzZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKQEAgLTEyLDcgKzEyLDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0yOTcsMzcgKzI5Niw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmNoYXQuZmluZF9wcmVmaXhfYXRfZW5kKCJxd2VydHlka2pmIiwgIlxyXG4iKSwgMCkKIAogCi1jbGFzcyBUZXN0Rmlmbyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgotICAgICAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS53YXJuaW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNiIpCi0gICAgICAgIGYucHVzaCg3KQotICAgICAgICBmLnB1c2goYidhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5maXJzdCgpLCA3KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCA3KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5maXJzdCgpLCBiJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuaXNfZW1wdHkoKSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIGInYScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmlzX2VtcHR5KCksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDAsIE5vbmUpKQotCi0gICAgZGVmIHRlc3RfZ2l2ZW5fbGlzdChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206Ci0gICAgICAgICAgICBmID0gYXN5bmNoYXQuZmlmbyhbYid4JywgMTcsIDNdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS53YXJuaW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCBiJ3gnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgMTcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMCwgTm9uZSkpCi0KLQogY2xhc3MgVGVzdE5vdENvbm5lY3RlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGlzYWxsb3dfbmVnYXRpdmVfdGVybWluYXRvcihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTEyNTkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF9mdXR1cmVzLnB5CmluZGV4IGQyMGViNjguLjJjMTdlZjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X2Z1dHVyZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY2lvL3Rlc3RfZnV0dXJlcy5weQpAQCAtOSw2ICs5LDcgQEAKIAogaW1wb3J0IGFzeW5jaW8KIGZyb20gYXN5bmNpbyBpbXBvcnQgdGVzdF91dGlscworZnJvbSBhc3luY2lvIGltcG9ydCBmdXR1cmVzCiB0cnk6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC05MywxNCArOTQsMTcgQEAKICAgICAgICAgYXNzZXJ0IGcgaXMgZgogCiAKLWNsYXNzIEZ1dHVyZVRlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorY2xhc3MgQmFzZUZ1dHVyZVRlc3RzOgorCisgICAgZGVmIF9uZXdfZnV0dXJlKHNlbGYsIGxvb3A9Tm9uZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5sb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYubG9vcC5jbG9zZSkKIAogICAgIGRlZiB0ZXN0X2luaXRpYWxfc3RhdGUoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWxsZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmRvbmUoKSkKICAgICAgICAgZi5jYW5jZWwoKQpAQCAtMTA4LDE1ICsxMTIsMTUgQEAKIAogICAgIGRlZiB0ZXN0X2luaXRfY29uc3RydWN0b3JfZGVmYXVsdF9sb29wKHNlbGYpOgogICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKHNlbGYubG9vcCkKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUoKQogICAgICAgICBzZWxmLmFzc2VydElzKGYuX2xvb3AsIHNlbGYubG9vcCkKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX3Bvc2l0aW9uYWwoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIEZ1dHVyZSBkb2Vzbid0IGFjY2VwdCBhIHBvc2l0aW9uYWwgYXJndW1lbnQKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhc3luY2lvLkZ1dHVyZSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5fbmV3X2Z1dHVyZSwgNDIpCiAKICAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNhbmNlbCgpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jYW5jZWxsZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuZG9uZSgpKQpAQCAtMTI3LDcgKzEzMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWwoKSkKIAogICAgIGRlZiB0ZXN0X3Jlc3VsdChzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5JbnZhbGlkU3RhdGVFcnJvciwgZi5yZXN1bHQpCiAKICAgICAgICAgZi5zZXRfcmVzdWx0KDQyKQpAQCAtMTQxLDcgKzE0NSw3IEBACiAKICAgICBkZWYgdGVzdF9leGNlcHRpb24oc2VsZik6CiAgICAgICAgIGV4YyA9IFJ1bnRpbWVFcnJvcigpCi0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uSW52YWxpZFN0YXRlRXJyb3IsIGYuZXhjZXB0aW9uKQogCiAgICAgICAgICMgU3RvcEl0ZXJhdGlvbiBjYW5ub3QgYmUgcmFpc2VkIGludG8gYSBGdXR1cmUgLSBDUHl0aG9uIGlzc3VlMjYyMjEKQEAgLTE1OCwxMiArMTYyLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jYW5jZWwoKSkKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9jbGFzcyhzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZi5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYuZXhjZXB0aW9uKCksIFJ1bnRpbWVFcnJvcikKIAogICAgIGRlZiB0ZXN0X3lpZWxkX2Zyb21fdHdpY2Uoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAKICAgICAgICAgZGVmIGZpeHR1cmUoKToKICAgICAgICAgICAgIHlpZWxkICdBJwpAQCAtMTgyLDcgKzE4Niw3IEBACiAKICAgICBkZWYgdGVzdF9mdXR1cmVfcmVwcihzZWxmKToKICAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQotICAgICAgICBmX3BlbmRpbmdfZGVidWcgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9wZW5kaW5nX2RlYnVnID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZnJhbWUgPSBmX3BlbmRpbmdfZGVidWcuX3NvdXJjZV90cmFjZWJhY2tbLTFdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmX3BlbmRpbmdfZGVidWcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIHBlbmRpbmcgY3JlYXRlZCBhdCAlczolcz4nCkBAIC0xOTAsMjEgKzE5NCwyMSBAQAogICAgICAgICBmX3BlbmRpbmdfZGVidWcuY2FuY2VsKCkKIAogICAgICAgICBzZWxmLmxvb3Auc2V0X2RlYnVnKEZhbHNlKQotICAgICAgICBmX3BlbmRpbmcgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9wZW5kaW5nID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZfcGVuZGluZyksICc8RnV0dXJlIHBlbmRpbmc+JykKICAgICAgICAgZl9wZW5kaW5nLmNhbmNlbCgpCiAKLSAgICAgICAgZl9jYW5jZWxsZWQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl9jYW5jZWxsZWQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX2NhbmNlbGxlZC5jYW5jZWwoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9jYW5jZWxsZWQpLCAnPEZ1dHVyZSBjYW5jZWxsZWQ+JykKIAotICAgICAgICBmX3Jlc3VsdCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX3Jlc3VsdCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfcmVzdWx0LnNldF9yZXN1bHQoNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZfcmVzdWx0KSwgJzxGdXR1cmUgZmluaXNoZWQgcmVzdWx0PTQ+JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmX3Jlc3VsdC5yZXN1bHQoKSwgNCkKIAogICAgICAgICBleGMgPSBSdW50aW1lRXJyb3IoKQotICAgICAgICBmX2V4Y2VwdGlvbiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX2V4Y2VwdGlvbiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZfZXhjZXB0aW9uLnNldF9leGNlcHRpb24oZXhjKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9leGNlcHRpb24pLAogICAgICAgICAgICAgICAgICAgICAgICAgICc8RnV0dXJlIGZpbmlzaGVkIGV4Y2VwdGlvbj1SdW50aW1lRXJyb3IoKT4nKQpAQCAtMjE1LDcgKzIxOSw3IEBACiAgICAgICAgICAgICB0ZXh0ID0gJyVzKCkgYXQgJXM6JXMnICUgKGZ1bmMuX19xdWFsbmFtZV9fLCBmaWxlbmFtZSwgbGluZW5vKQogICAgICAgICAgICAgcmV0dXJuIHJlLmVzY2FwZSh0ZXh0KQogCi0gICAgICAgIGZfb25lX2NhbGxiYWNrcyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX29uZV9jYWxsYmFja3MgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmX29uZV9jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2soX2Zha2VmdW5jKQogICAgICAgICBmYWtlX3JlcHIgPSBmdW5jX3JlcHIoX2Zha2VmdW5jKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHJlcHIoZl9vbmVfY2FsbGJhY2tzKSwKQEAgLTIyNCw3ICsyMjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZl9vbmVfY2FsbGJhY2tzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnPEZ1dHVyZSBjYW5jZWxsZWQ+JykKIAotICAgICAgICBmX3R3b19jYWxsYmFja3MgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZl90d29fY2FsbGJhY2tzID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl90d29fY2FsbGJhY2tzLmFkZF9kb25lX2NhbGxiYWNrKGZpcnN0X2NiKQogICAgICAgICBmX3R3b19jYWxsYmFja3MuYWRkX2RvbmVfY2FsbGJhY2sobGFzdF9jYikKICAgICAgICAgZmlyc3RfcmVwciA9IGZ1bmNfcmVwcihmaXJzdF9jYikKQEAgLTIzMyw3ICsyMzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHInPEZ1dHVyZSBwZW5kaW5nIGNiPVxbJXMsICVzXF0+JwogICAgICAgICAgICAgICAgICAgICAgICAgICUgKGZpcnN0X3JlcHIsIGxhc3RfcmVwcikpCiAKLSAgICAgICAgZl9tYW55X2NhbGxiYWNrcyA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmX21hbnlfY2FsbGJhY2tzID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9tYW55X2NhbGxiYWNrcy5hZGRfZG9uZV9jYWxsYmFjayhmaXJzdF9jYikKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoOCk6CiAgICAgICAgICAgICBmX21hbnlfY2FsbGJhY2tzLmFkZF9kb25lX2NhbGxiYWNrKF9mYWtlZnVuYykKQEAgLTI0OCwzMSArMjUyLDMxIEBACiAgICAgZGVmIHRlc3RfY29weV9zdGF0ZShzZWxmKToKICAgICAgICAgZnJvbSBhc3luY2lvLmZ1dHVyZXMgaW1wb3J0IF9jb3B5X2Z1dHVyZV9zdGF0ZQogCi0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGYuc2V0X3Jlc3VsdCgxMCkKIAotICAgICAgICBuZXdmID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIG5ld2YgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBfY29weV9mdXR1cmVfc3RhdGUoZiwgbmV3ZikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5ld2YuZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2YucmVzdWx0KCksIDEwKQogCi0gICAgICAgIGZfZXhjZXB0aW9uID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfZXhjZXB0aW9uID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9leGNlcHRpb24uc2V0X2V4Y2VwdGlvbihSdW50aW1lRXJyb3IoKSkKIAotICAgICAgICBuZXdmX2V4Y2VwdGlvbiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBuZXdmX2V4Y2VwdGlvbiA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIF9jb3B5X2Z1dHVyZV9zdGF0ZShmX2V4Y2VwdGlvbiwgbmV3Zl9leGNlcHRpb24pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdmX2V4Y2VwdGlvbi5kb25lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbmV3Zl9leGNlcHRpb24ucmVzdWx0KQogCi0gICAgICAgIGZfY2FuY2VsbGVkID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfY2FuY2VsbGVkID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZl9jYW5jZWxsZWQuY2FuY2VsKCkKIAotICAgICAgICBuZXdmX2NhbmNlbGxlZCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBuZXdmX2NhbmNlbGxlZCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIF9jb3B5X2Z1dHVyZV9zdGF0ZShmX2NhbmNlbGxlZCwgbmV3Zl9jYW5jZWxsZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdmX2NhbmNlbGxlZC5jYW5jZWxsZWQoKSkKIAogICAgIGRlZiB0ZXN0X2l0ZXIoc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogCiAgICAgICAgIGRlZiBjb3JvKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dApAQCAtMjg1LDIwICsyODksMjAgQEAKIAogICAgIEBtb2NrLnBhdGNoKCdhc3luY2lvLmJhc2VfZXZlbnRzLmxvZ2dlcicpCiAgICAgZGVmIHRlc3RfdGJfbG9nZ2VyX2FiYW5kb25lZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobV9sb2cuZXJyb3IuY2FsbGVkKQogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfcmVzdWx0X3VucmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KDQyKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobV9sb2cuZXJyb3IuY2FsbGVkKQogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfcmVzdWx0X3JldHJpZXZlZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuc2V0X3Jlc3VsdCg0MikKICAgICAgICAgZnV0LnJlc3VsdCgpCiAgICAgICAgIGRlbCBmdXQKQEAgLTMwNiw3ICszMTAsNyBAQAogCiAgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKICAgICBkZWYgdGVzdF90Yl9sb2dnZXJfZXhjZXB0aW9uX3VucmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcignYm9vbScpKQogICAgICAgICBkZWwgZnV0CiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQpAQCAtMzE1LDcgKzMxOSw3IEBACiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9leGNlcHRpb25fcmV0cmlldmVkKHNlbGYsIG1fbG9nKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dC5zZXRfZXhjZXB0aW9uKFJ1bnRpbWVFcnJvcignYm9vbScpKQogICAgICAgICBmdXQuZXhjZXB0aW9uKCkKICAgICAgICAgZGVsIGZ1dApAQCAtMzIzLDcgKzMyNyw3IEBACiAKICAgICBAbW9jay5wYXRjaCgnYXN5bmNpby5iYXNlX2V2ZW50cy5sb2dnZXInKQogICAgIGRlZiB0ZXN0X3RiX2xvZ2dlcl9leGNlcHRpb25fcmVzdWx0X3JldHJpZXZlZChzZWxmLCBtX2xvZyk6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuc2V0X2V4Y2VwdGlvbihSdW50aW1lRXJyb3IoJ2Jvb20nKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmdXQucmVzdWx0KQogICAgICAgICBkZWwgZnV0CkBAIC0zMzcsMTIgKzM0MSwxMiBAQAogICAgICAgICBmMSA9IGV4LnN1Ym1pdChydW4sICdvaScpCiAgICAgICAgIGYyID0gYXN5bmNpby53cmFwX2Z1dHVyZShmMSwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHJlcywgaWRlbnQgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGYyKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZjIsIGFzeW5jaW8uRnV0dXJlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5pc2Z1dHVyZShmMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAnb2knKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkZW50LCB0aHJlYWRpbmcuZ2V0X2lkZW50KCkpCiAKICAgICBkZWYgdGVzdF93cmFwX2Z1dHVyZV9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGYxID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGYxID0gc2VsZi5fbmV3X2Z1dHVyZShsb29wPXNlbGYubG9vcCkKICAgICAgICAgZjIgPSBhc3luY2lvLndyYXBfZnV0dXJlKGYxKQogICAgICAgICBzZWxmLmFzc2VydElzKGYxLCBmMikKIApAQCAtMzc3LDEwICszODEsMTAgQEAKICAgICBkZWYgdGVzdF9mdXR1cmVfc291cmNlX3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQogCi0gICAgICAgIGZ1dHVyZSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXR1cmUgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBsaW5lbm8gPSBzeXMuX2dldGZyYW1lKCkuZl9saW5lbm8gLSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2ssIGxpc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0xXVs6M10sCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0yXVs6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fZmlsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X2Z1dHVyZV9zb3VyY2VfdHJhY2ViYWNrJykpCkBAIC0zOTYsNTcgKzQwMCwxOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBleGMKICAgICAgICAgZXhjID0gbWVtb3J5X2Vycm9yKCkKIAotICAgICAgICBmdXR1cmUgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICBzb3VyY2VfdHJhY2ViYWNrID0gZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrCisgICAgICAgIGZ1dHVyZSA9IHNlbGYuX25ld19mdXR1cmUobG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIGZ1dHVyZS5zZXRfZXhjZXB0aW9uKGV4YykKICAgICAgICAgZnV0dXJlID0gTm9uZQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKIAogICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLCA0KToKLSAgICAgICAgICAgIGlmIGRlYnVnOgotICAgICAgICAgICAgICAgIGZyYW1lID0gc291cmNlX3RyYWNlYmFja1stMV0KLSAgICAgICAgICAgICAgICByZWdleCA9IChyJ15GdXR1cmUgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJ2Z1dHVyZTogPEZ1dHVyZSBmaW5pc2hlZCBleGNlcHRpb249TWVtb3J5RXJyb3JcKFwpICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidjcmVhdGVkIGF0IHtmaWxlbmFtZX06e2xpbmVub30+XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidzb3VyY2VfdHJhY2ViYWNrOiBPYmplY3QgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInY3JlYXRlZCBhdCBcKG1vc3QgcmVjZW50IGNhbGwgbGFzdFwpOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICBGaWxlJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInLipcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgRmlsZSAie2ZpbGVuYW1lfSIsIGxpbmUge2xpbmVub30sICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ2luIGNoZWNrX2Z1dHVyZV9leGNlcHRpb25fbmV2ZXJfcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgICAgZnV0dXJlID0gYXN5bmNpb1wuRnV0dXJlXChsb29wPXNlbGZcLmxvb3BcKSQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoZmlsZW5hbWU9cmUuZXNjYXBlKGZyYW1lWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89ZnJhbWVbMV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInZnV0dXJlOiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8RnV0dXJlIGZpbmlzaGVkIGV4Y2VwdGlvbj1NZW1vcnlFcnJvclwoXCk+JCcKLSAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICByZWdleCA9IHInXkZ1dHVyZSBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwogICAgICAgICAgICAgZXhjX2luZm8gPSAodHlwZShleGMpLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKQogICAgICAgICAgICAgbV9sb2cuZXJyb3IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgobW9jay5BTlksIGV4Y19pbmZvPWV4Y19pbmZvKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICAgICAgZnJhbWUgPSBzb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZS9UYXNrIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidGdXR1cmUvVGFzayBjcmVhdGVkIGF0IFwobW9zdCByZWNlbnQgY2FsbCBsYXN0XCk6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicgIEZpbGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgcicuKlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgIHInICBGaWxlICJ7ZmlsZW5hbWV9IiwgbGluZSB7bGluZW5vfSwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInaW4gY2hlY2tfZnV0dXJlX2V4Y2VwdGlvbl9uZXZlcl9yZXRyaWV2ZWRcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJyAgICBmdXR1cmUgPSBhc3luY2lvXC5GdXR1cmVcKGxvb3A9c2VsZlwubG9vcFwpXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidUcmFjZWJhY2sgXChtb3N0IHJlY2VudCBjYWxsIGxhc3RcKTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidNZW1vcnlFcnJvciQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoZmlsZW5hbWU9cmUuZXNjYXBlKGZyYW1lWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm89ZnJhbWVbMV0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gKHInXkZ1dHVyZS9UYXNrIGV4Y2VwdGlvbiB3YXMgbmV2ZXIgcmV0cmlldmVkXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidUcmFjZWJhY2sgXChtb3N0IHJlY2VudCBjYWxsIGxhc3RcKTpcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICByJy4qXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgcidNZW1vcnlFcnJvciQnCi0gICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmVnZXggPSByJ15GdXR1cmUvVGFzayBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZFxuJwogICAgICAgICAgICAgbV9sb2cuZXJyb3IuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgobW9jay5BTlksIGV4Y19pbmZvPUZhbHNlKQogICAgICAgICBtZXNzYWdlID0gbV9sb2cuZXJyb3IuY2FsbF9hcmdzWzBdWzBdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobWVzc2FnZSwgcmUuY29tcGlsZShyZWdleCwgcmUuRE9UQUxMKSkKQEAgLTQ1OCwxNCArNDIzLDQwIEBACiAgICAgICAgIHNlbGYuY2hlY2tfZnV0dXJlX2V4Y2VwdGlvbl9uZXZlcl9yZXRyaWV2ZWQoVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3NldF9yZXN1bHRfdW5sZXNzX2NhbmNlbGxlZChzZWxmKToKLSAgICAgICAgZnJvbSBhc3luY2lvIGltcG9ydCBmdXR1cmVzCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQogICAgICAgICBmdXQuY2FuY2VsKCkKICAgICAgICAgZnV0dXJlcy5fc2V0X3Jlc3VsdF91bmxlc3NfY2FuY2VsbGVkKGZ1dCwgMikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZ1dC5jYW5jZWxsZWQoKSkKIAorICAgIGRlZiB0ZXN0X2Z1dHVyZV9zdG9wX2l0ZXJhdGlvbl9hcmdzKHNlbGYpOgorICAgICAgICBmdXQgPSBzZWxmLl9uZXdfZnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQuc2V0X3Jlc3VsdCgoMSwgMikpCisgICAgICAgIGZpID0gZnV0Ll9faXRlcl9fKCkKKyAgICAgICAgcmVzdWx0ID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaS5zZW5kKE5vbmUpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmVzdWx0ID0gZXguYXJnc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBleHBlY3RlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAoMSwgMikpCiAKLWNsYXNzIEZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScpLAorICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHRoZSBDIF9hc3luY2lvIG1vZHVsZScpCitjbGFzcyBDRnV0dXJlVGVzdHMoQmFzZUZ1dHVyZVRlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmLCAgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIGZ1dHVyZXMuX0NGdXR1cmUoKmFyZ3MsICoqa3dhcmdzKQorCisKK2NsYXNzIFB5RnV0dXJlVGVzdHMoQmFzZUZ1dHVyZVRlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gZnV0dXJlcy5fUHlGdXR1cmUoKmFyZ3MsICoqa3dhcmdzKQorCisKK2NsYXNzIEJhc2VGdXR1cmVEb25lQ2FsbGJhY2tUZXN0cygpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoKQpAQCAtNDgwLDcgKzQ3MSw3IEBACiAgICAgICAgIHJldHVybiBiYWdfYXBwZW5kZXIKIAogICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmKToKLSAgICAgICAgcmV0dXJuIGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgdGVzdF9jYWxsYmFja3NfaW52b2tlZF9vbl9zZXRfcmVzdWx0KHNlbGYpOgogICAgICAgICBiYWcgPSBbXQpAQCAtNTQ0LDUgKzUzNSwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVzdWx0KCksICdmb28nKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIENGdXR1cmVEb25lQ2FsbGJhY2tUZXN0cyhCYXNlRnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisKKyAgICBkZWYgX25ld19mdXR1cmUoc2VsZik6CisgICAgICAgIHJldHVybiBmdXR1cmVzLl9DRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisKK2NsYXNzIFB5RnV0dXJlRG9uZUNhbGxiYWNrVGVzdHMoQmFzZUZ1dHVyZURvbmVDYWxsYmFja1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKworICAgIGRlZiBfbmV3X2Z1dHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGZ1dHVyZXMuX1B5RnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaW8vdGVzdF90YXNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CmluZGV4IDFjZWI5YjIuLmQ4ODYyZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNpby90ZXN0X3Rhc2tzLnB5CkBAIC0xLDUgKzEsNiBAQAogIiIiVGVzdHMgZm9yIHRhc2tzLnB5LiIiIgogCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KQEAgLTE0LDYgKzE1LDggQEAKIAogaW1wb3J0IGFzeW5jaW8KIGZyb20gYXN5bmNpbyBpbXBvcnQgY29yb3V0aW5lcworZnJvbSBhc3luY2lvIGltcG9ydCBmdXR1cmVzCitmcm9tIGFzeW5jaW8gaW1wb3J0IHRhc2tzCiBmcm9tIGFzeW5jaW8gaW1wb3J0IHRlc3RfdXRpbHMKIHRyeToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTcyLDE0ICs3NSwyNSBAQAogICAgICAgICBwYXNzCiAKIAotY2xhc3MgVGFza1Rlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorY2xhc3MgQmFzZVRhc2tUZXN0czoKKworICAgIFRhc2sgPSBOb25lCisgICAgRnV0dXJlID0gTm9uZQorCisgICAgZGVmIG5ld190YXNrKHNlbGYsIGxvb3AsIGNvcm8pOgorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18uVGFzayhjb3JvLCBsb29wPWxvb3ApCisKKyAgICBkZWYgbmV3X2Z1dHVyZShzZWxmLCBsb29wKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fLkZ1dHVyZShsb29wPWxvb3ApCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcCgpCisgICAgICAgIHNlbGYubG9vcC5zZXRfdGFza19mYWN0b3J5KHNlbGYubmV3X3Rhc2spCisgICAgICAgIHNlbGYubG9vcC5jcmVhdGVfZnV0dXJlID0gbGFtYmRhOiBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgZGVmIHRlc3Rfb3RoZXJfbG9vcF9mdXR1cmUoc2VsZik6CiAgICAgICAgIG90aGVyX2xvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1vdGhlcl9sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUob3RoZXJfbG9vcCkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIHJ1bihmdXQpOgpAQCAtMTA3LDcgKzEyMSw3IEBACiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgbm90bXVjaCgpOgogICAgICAgICAgICAgcmV0dXJuICdvaycKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhub3RtdWNoKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIG5vdG11Y2goKSkKICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUodC5kb25lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZXN1bHQoKSwgJ29rJykKQEAgLTExNSw3ICsxMjksNyBAQAogCiAgICAgICAgIGxvb3AgPSBhc3luY2lvLm5ld19ldmVudF9sb29wKCkKICAgICAgICAgc2VsZi5zZXRfZXZlbnRfbG9vcChsb29wKQotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKG5vdG11Y2goKSwgbG9vcD1sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBub3RtdWNoKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXModC5fbG9vcCwgbG9vcCkKICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgbG9vcC5jbG9zZSgpCkBAIC0xMzgsNyArMTUyLDcgQEAKICAgICAgICAgbG9vcC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9lbnN1cmVfZnV0dXJlX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZl9vcmlnID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZfb3JpZyA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIGZfb3JpZy5zZXRfcmVzdWx0KCdrbycpCiAKICAgICAgICAgZiA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShmX29yaWcpCkBAIC0xNjIsNyArMTc2LDcgQEAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBub3RtdWNoKCk6CiAgICAgICAgICAgICByZXR1cm4gJ29rJwotICAgICAgICB0X29yaWcgPSBhc3luY2lvLlRhc2sobm90bXVjaCgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdF9vcmlnID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIG5vdG11Y2goKSkKICAgICAgICAgdCA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZSh0X29yaWcpCiAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZG9uZSgpKQpAQCAtMjAzLDcgKzIxNyw3IEBACiAgICAgICAgICAgICBhc3luY2lvLmVuc3VyZV9mdXR1cmUoJ29rJykKIAogICAgIGRlZiB0ZXN0X2FzeW5jX3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSBlbnN1cmVfJyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGYsIGFzeW5jaW8uYXN5bmMoZikpCkBAIC0yNTAsOCArMjY0LDggQEAKICAgICAgICAgIyB0ZXN0IGNvcm91dGluZSBmdW5jdGlvbgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vdG11Y2guX19uYW1lX18sICdub3RtdWNoJykKICAgICAgICAgaWYgUFkzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm90bXVjaC5fX3F1YWxuYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUYXNrVGVzdHMudGVzdF90YXNrX3JlcHIuPGxvY2Fscz4ubm90bXVjaCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG5vdG11Y2guX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1x3Ky50ZXN0X3Rhc2tfcmVwci48bG9jYWxzPi5ub3RtdWNoJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3RtdWNoLl9fbW9kdWxlX18sIF9fbmFtZV9fKQogCiAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8gPSB0ZXN0X3V0aWxzLmdldF9mdW5jdGlvbl9zb3VyY2Uobm90bXVjaCkKQEAgLTI2MCw3ICsyNzQsNyBAQAogICAgICAgICAjIHRlc3QgY29yb3V0aW5lIG9iamVjdAogICAgICAgICBnZW4gPSBub3RtdWNoKCkKICAgICAgICAgaWYgY29yb3V0aW5lcy5fREVCVUcgb3IgUFkzNToKLSAgICAgICAgICAgIGNvcm9fcXVhbG5hbWUgPSAnVGFza1Rlc3RzLnRlc3RfdGFza19yZXByLjxsb2NhbHM+Lm5vdG11Y2gnCisgICAgICAgICAgICBjb3JvX3F1YWxuYW1lID0gJ0Jhc2VUYXNrVGVzdHMudGVzdF90YXNrX3JlcHIuPGxvY2Fscz4ubm90bXVjaCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvcm9fcXVhbG5hbWUgPSAnbm90bXVjaCcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW4uX19uYW1lX18sICdub3RtdWNoJykKQEAgLTI2OSw3ICsyODMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3JvX3F1YWxuYW1lKQogCiAgICAgICAgICMgdGVzdCBwZW5kaW5nIFRhc2sKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhnZW4sIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGdlbikKICAgICAgICAgdC5hZGRfZG9uZV9jYWxsYmFjayhEdW1teSgpKQogCiAgICAgICAgIGNvcm8gPSBmb3JtYXRfY29yb3V0aW5lKGNvcm9fcXVhbG5hbWUsICdydW5uaW5nJywgc3JjLApAQCAtMjkxLDcgKzMwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJzxUYXNrIGNhbmNlbGxlZCAlcz4nICUgY29ybykKIAogICAgICAgICAjIHRlc3QgZmluaXNoZWQgVGFzawotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKG5vdG11Y2goKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgbm90bXVjaCgpKQogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCiAgICAgICAgIGNvcm8gPSBmb3JtYXRfY29yb3V0aW5lKGNvcm9fcXVhbG5hbWUsICdkb25lJywgc3JjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Ll9zb3VyY2VfdHJhY2ViYWNrKQpAQCAtMzEwLDkgKzMyNCw5IEBACiAgICAgICAgICMgdGVzdCBjb3JvdXRpbmUgZnVuY3Rpb24KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3RtdWNoLl9fbmFtZV9fLCAnbm90bXVjaCcpCiAgICAgICAgIGlmIFBZMzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vdG11Y2guX19xdWFsbmFtZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFza1Rlc3RzLnRlc3RfdGFza19yZXByX2Nvcm9fZGVjb3JhdG9yJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLjxsb2NhbHM+Lm5vdG11Y2gnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChub3RtdWNoLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidcdysudGVzdF90YXNrX3JlcHJfY29yb19kZWNvcmF0b3InCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXC48bG9jYWxzPlwubm90bXVjaCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm90bXVjaC5fX21vZHVsZV9fLCBfX25hbWVfXykKIAogICAgICAgICAjIHRlc3QgY29yb3V0aW5lIG9iamVjdApAQCAtMzIyLDcgKzMzNiw3IEBACiAgICAgICAgICAgICAjIGZ1bmN0aW9uLCBhcyBleHBlY3RlZCwgYW5kIGhhdmUgYSBxdWFsaWZpZWQgbmFtZSAoX19xdWFsbmFtZV9fCiAgICAgICAgICAgICAjIGF0dHJpYnV0ZSkuCiAgICAgICAgICAgICBjb3JvX25hbWUgPSAnbm90bXVjaCcKLSAgICAgICAgICAgIGNvcm9fcXVhbG5hbWUgPSAoJ1Rhc2tUZXN0cy50ZXN0X3Rhc2tfcmVwcl9jb3JvX2RlY29yYXRvcicKKyAgICAgICAgICAgIGNvcm9fcXVhbG5hbWUgPSAoJ0Jhc2VUYXNrVGVzdHMudGVzdF90YXNrX3JlcHJfY29yb19kZWNvcmF0b3InCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuPGxvY2Fscz4ubm90bXVjaCcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIE9uIFB5dGhvbiA8IDMuNSwgZ2VuZXJhdG9ycyBpbmhlcml0IHRoZSBuYW1lIG9mIHRoZSBjb2RlLCBub3Qgb2YKQEAgLTM1MCw3ICszNjQsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGdlbiksICc8Q29yb1dyYXBwZXIgJXM+JyAlIGNvcm8pCiAKICAgICAgICAgIyB0ZXN0IHBlbmRpbmcgVGFzawotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKGdlbiwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgZ2VuKQogICAgICAgICB0LmFkZF9kb25lX2NhbGxiYWNrKER1bW15KCkpCiAKICAgICAgICAgIyBmb3JtYXQgdGhlIGNvcm91dGluZSBvYmplY3QKQEAgLTM3Myw4ICszODcsOCBAQAogICAgICAgICBkZWYgd2FpdF9mb3IoZnV0KToKICAgICAgICAgICAgIHJldHVybiAoeWllbGQgZnJvbSBmdXQpCiAKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2sod2FpdF9mb3IoZnV0KSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgd2FpdF9mb3IoZnV0KSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgocmVwcih0YXNrKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnPFRhc2sgLiogd2FpdF9mb3I9JXM+JyAlIHJlLmVzY2FwZShyZXByKGZ1dCkpKQpAQCAtNDAwLDEwICs0MTQsMTEgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0YXNrLl9jb3JvLmNsb3NlKQogCiAgICAgICAgIGNvcm9fcmVwciA9IHJlcHIodGFzay5fY29ybykKLSAgICAgICAgZXhwZWN0ZWQgPSAoJzxDb3JvV3JhcHBlciBUYXNrVGVzdHMudGVzdF90YXNrX3JlcHJfcGFydGlhbF9jb3Jvd3JhcHBlcicKLSAgICAgICAgICAgICAgICAgICAgJy48bG9jYWxzPi5mdW5jKDEpKCkgcnVubmluZywgJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcm9fcmVwci5zdGFydHN3aXRoKGV4cGVjdGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvcm9fcmVwcikKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgICByJzxDb3JvV3JhcHBlciBcdysudGVzdF90YXNrX3JlcHJfcGFydGlhbF9jb3Jvd3JhcHBlcicKKyAgICAgICAgICAgIHInXC48bG9jYWxzPlwuZnVuY1woMVwpXChcKSBydW5uaW5nLCAnCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb3JvX3JlcHIsIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RfdGFza19iYXNpY3Moc2VsZik6CiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQpAQCAtNDM3LDcgKzQ1Miw3IEBACiAgICAgICAgICAgICB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKQogICAgICAgICAgICAgcmV0dXJuIDEyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgdGFzaygpKQogICAgICAgICBsb29wLmNhbGxfc29vbih0LmNhbmNlbCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLkNhbmNlbGxlZEVycm9yKToKICAgICAgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHQpCkBAIC00NTIsNyArNDY3LDcgQEAKICAgICAgICAgICAgIHlpZWxkCiAgICAgICAgICAgICByZXR1cm4gMTIKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHRhc2soKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdGFzaygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkgICMgc3RhcnQgY29ybwogICAgICAgICB0LmNhbmNlbCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKApAQCAtNDYyLDE0ICs0NzcsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmNhbmNlbCgpKQogCiAgICAgZGVmIHRlc3RfY2FuY2VsX2lubmVyX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIHRhc2soKToKICAgICAgICAgICAgIHlpZWxkIGZyb20gZgogICAgICAgICAgICAgcmV0dXJuIDEyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHRhc2soKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApICAjIHN0YXJ0IHRhc2sKICAgICAgICAgZi5jYW5jZWwoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IpOgpAQCAtNDc4LDE0ICs0OTMsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuY2FuY2VsbGVkKCkpCiAKICAgICBkZWYgdGVzdF9jYW5jZWxfYm90aF90YXNrX2FuZF9pbm5lcl9mdXR1cmUoc2VsZik6Ci0gICAgICAgIGYgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiB0YXNrKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGYKICAgICAgICAgICAgIHJldHVybiAxMgogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0YXNrKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogCiAgICAgICAgIGYuY2FuY2VsKCkKQEAgLTQ5OSw4ICs1MTQsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUodC5jYW5jZWxsZWQoKSkKIAogICAgIGRlZiB0ZXN0X2NhbmNlbF90YXNrX2NhdGNoaW5nKHNlbGYpOgotICAgICAgICBmdXQxID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIGZ1dDIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0MSA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgIGZ1dDIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgdGFzaygpOgpAQCAtNTEwLDcgKzUyNSw3IEBACiAgICAgICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gNDIKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHRhc2soKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKHNlbGYubG9vcCwgdGFzaygpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KHNlbGYubG9vcCkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0Ll9mdXRfd2FpdGVyLCBmdXQxKSAgIyBXaGl0ZS1ib3ggdGVzdC4KICAgICAgICAgZnV0MS5zZXRfcmVzdWx0KE5vbmUpCkBAIC01MjMsOSArNTM4LDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmNhbmNlbGxlZCgpKQogCiAgICAgZGVmIHRlc3RfY2FuY2VsX3Rhc2tfaWdub3Jpbmcoc2VsZik6Ci0gICAgICAgIGZ1dDEgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKLSAgICAgICAgZnV0MiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBmdXQzID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dDEgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQorICAgICAgICBmdXQyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgZnV0MyA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiB0YXNrKCk6CkBAIC01MzcsNyArNTUyLDcgQEAKICAgICAgICAgICAgIHJlcyA9IHlpZWxkIGZyb20gZnV0MwogICAgICAgICAgICAgcmV0dXJuIHJlcwogCi0gICAgICAgIHQgPSBhc3luY2lvLlRhc2sodGFzaygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0YXNrKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydElzKHQuX2Z1dF93YWl0ZXIsIGZ1dDEpICAjIFdoaXRlLWJveCB0ZXN0LgogICAgICAgICBmdXQxLnNldF9yZXN1bHQoTm9uZSkKQEAgLTU2NSw3ICs1ODAsNyBAQAogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDEwMCwgbG9vcD1sb29wKQogICAgICAgICAgICAgcmV0dXJuIDEyCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgdGFzaygpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKICAgICAgICAgICAgIGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3IsIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlLCB0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUodC5kb25lKCkpCkBAIC01OTgsNyArNjEzLDcgQEAKICAgICAgICAgICAgICAgICBpZiB4ID09IDI6CiAgICAgICAgICAgICAgICAgICAgIGxvb3Auc3RvcCgpCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayh0YXNrKCksIGxvb3A9bG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2sobG9vcCwgdGFzaygpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CiAgICAgICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLApAQCAtNjM2LDcgKzY1MSw3IEBACiAgICAgICAgICAgICAgICAgZm9vX3J1bm5pbmcgPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuICdkb25lJwogCi0gICAgICAgIGZ1dCA9IGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5UaW1lb3V0RXJyb3IpOgogICAgICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby53YWl0X2ZvcihmdXQsIDAuMSwgbG9vcD1sb29wKSkKQEAgLTY3Niw3ICs2OTEsNyBAQAogCiAgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AobG9vcCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApCisgICAgICAgICAgICBmdXQgPSBzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhc3luY2lvLlRpbWVvdXRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby53YWl0X2ZvcihmdXQsIDAuMDEpKQogICAgICAgICBmaW5hbGx5OgpAQCAtNjk1LDcgKzcxMCw3IEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUobG9vcCkKICAgICAgICAgdGFzayA9IGFzeW5jaW8ud2FpdF9mb3IoZnV0LCB0aW1lb3V0PTAuMiwgbG9vcD1sb29wKQogICAgICAgICBsb29wLmNhbGxfbGF0ZXIoMC4xLCBmdXQuc2V0X3Jlc3VsdCwgIm9rIikKICAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKQEAgLTcxMiw4ICs3MjcsOCBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCkpCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xNSwgbG9vcD1sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGZvbygpOgpAQCAtNzIyLDEyICs3MzcsMTIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVuZGluZywgc2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gNDIKIAotICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xNSwgbG9vcC50aW1lKCkpCiAKICAgICAgICAgIyBEb2luZyBpdCBhZ2FpbiBzaG91bGQgdGFrZSBubyB0aW1lIGFuZCBleGVyY2lzZSBhIGRpZmZlcmVudCBwYXRoLgotICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDAuMTUsIGxvb3AudGltZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCiAKQEAgLTc0Miw4ICs3NTcsOCBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjAxNSwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQorICAgICAgICBhID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9bG9vcCkpCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4wMTUsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmb28oKToKQEAgLTc1NCw3ICs3NjksNyBAQAogCiAgICAgICAgIGFzeW5jaW8uc2V0X2V2ZW50X2xvb3AobG9vcCkKICAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoCi0gICAgICAgICAgICBhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgICAgICBzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCiAKQEAgLTc2NCw5ICs3NzksOSBAQAogICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgYyA9IGNvcm8oJ3Rlc3QnKQogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soCi0gICAgICAgICAgICBhc3luY2lvLndhaXQoW2MsIGMsIGNvcm8oJ3NwYW0nKV0sIGxvb3A9c2VsZi5sb29wKSwKLSAgICAgICAgICAgIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0YXNrID1zZWxmLm5ld190YXNrKAorICAgICAgICAgICAgc2VsZi5sb29wLAorICAgICAgICAgICAgYXN5bmNpby53YWl0KFtjLCBjLCBjb3JvKCdzcGFtJyldLCBsb29wPXNlbGYubG9vcCkpCiAKICAgICAgICAgZG9uZSwgcGVuZGluZyA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKIApAQCAtNzk3LDEyICs4MTIsMTIgQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSwgbG9vcD1sb29wKQotICAgICAgICBiID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSkKKyAgICAgICAgYiA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCkpCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKAorICAgICAgICAgICAgbG9vcCwKICAgICAgICAgICAgIGFzeW5jaW8ud2FpdChbYiwgYV0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfQ09NUExFVEVELAotICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9vcCksCi0gICAgICAgICAgICBsb29wPWxvb3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKSkKIAogICAgICAgICBkb25lLCBwZW5kaW5nID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7Yn0sIGRvbmUpCkBAIC04MjksMTIgKzg0NCwxMiBAQAogICAgICAgICAgICAgeWllbGQKICAgICAgICAgICAgIHlpZWxkCiAKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhjb3JvMSgpLCBsb29wPXNlbGYubG9vcCkKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhjb3JvMigpLCBsb29wPXNlbGYubG9vcCkKLSAgICAgICAgdGFzayA9IGFzeW5jaW8uVGFzaygKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvMSgpKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGNvcm8yKCkpCisgICAgICAgIHRhc2sgPSBzZWxmLm5ld190YXNrKAorICAgICAgICAgICAgc2VsZi5sb29wLAogICAgICAgICAgICAgYXN5bmNpby53YWl0KFtiLCBhXSwgcmV0dXJuX3doZW49YXN5bmNpby5GSVJTVF9DT01QTEVURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApLAotICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1zZWxmLmxvb3ApKQogCiAgICAgICAgIGRvbmUsIHBlbmRpbmcgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHRhc2spCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe2EsIGJ9LCBkb25lKQpAQCAtODUzLDE3ICs4NjgsMTcgQEAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKICAgICAgICAgIyBmaXJzdF9leGNlcHRpb24sIHRhc2sgYWxyZWFkeSBoYXMgZXhjZXB0aW9uCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgxMC4wLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMTAuMCwgbG9vcD1sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGV4YygpOgogICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IoJ2VycicpCiAKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhleGMoKSwgbG9vcD1sb29wKQotICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKAorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBleGMoKSkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soCisgICAgICAgICAgICBsb29wLAogICAgICAgICAgICAgYXN5bmNpby53YWl0KFtiLCBhXSwgcmV0dXJuX3doZW49YXN5bmNpby5GSVJTVF9FWENFUFRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgbG9vcD1sb29wKSwKLSAgICAgICAgICAgIGxvb3A9bG9vcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApKQogCiAgICAgICAgIGRvbmUsIHBlbmRpbmcgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHtifSwgZG9uZSkKQEAgLTg4NiwxNCArOTAxLDE0IEBACiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCiAgICAgICAgICMgZmlyc3RfZXhjZXB0aW9uLCBleGNlcHRpb24gZHVyaW5nIHdhaXRpbmcKLSAgICAgICAgYSA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDEwLjAsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgxMC4wLCBsb29wPWxvb3ApKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgZXhjKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1sb29wKQogICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IoJ2VycicpCiAKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhleGMoKSwgbG9vcD1sb29wKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBleGMoKSkKICAgICAgICAgdGFzayA9IGFzeW5jaW8ud2FpdChbYiwgYV0sIHJldHVybl93aGVuPWFzeW5jaW8uRklSU1RfRVhDRVBUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3A9bG9vcCkKIApAQCAtOTE3LDE0ICs5MzIsMTQgQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgc2xlZXBlcigpOgogICAgICAgICAgICAgeWllbGQgZnJvbSBhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCkKICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yKCdyZWFsbHknKQogCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soc2xlZXBlcigpLCBsb29wPWxvb3ApCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIHNsZWVwZXIoKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGZvbygpOgpAQCAtOTM0LDEwICs5NDksMTAgQEAKICAgICAgICAgICAgIGVycm9ycyA9IHNldChmIGZvciBmIGluIGRvbmUgaWYgZi5leGNlcHRpb24oKSBpcyBub3QgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVycm9ycyksIDEpCiAKLSAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjE1LCBsb29wLnRpbWUoKSkKIAotICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLlRhc2soZm9vKCksIGxvb3A9bG9vcCkpCisgICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubmV3X3Rhc2sobG9vcCwgZm9vKCkpKQogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDAuMTUsIGxvb3AudGltZSgpKQogCiAgICAgZGVmIHRlc3Rfd2FpdF93aXRoX3RpbWVvdXQoc2VsZik6CkBAIC05NTMsOCArOTY4LDggQEAKIAogICAgICAgICBsb29wID0gc2VsZi5uZXdfdGVzdF9sb29wKGdlbikKIAotICAgICAgICBhID0gYXN5bmNpby5UYXNrKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCi0gICAgICAgIGIgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjE1LCBsb29wPWxvb3ApLCBsb29wPWxvb3ApCisgICAgICAgIGEgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPWxvb3ApKQorICAgICAgICBiID0gc2VsZi5uZXdfdGFzayhsb29wLCBhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCkpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBmb28oKToKQEAgLTk2Myw3ICs5NzgsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb25lLCBzZXQoW2FdKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVuZGluZywgc2V0KFtiXSkpCiAKLSAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjExLCBsb29wLnRpbWUoKSkKIAogICAgICAgICAjIG1vdmUgZm9yd2FyZCB0byBjbG9zZSBnZW5lcmF0b3IKQEAgLTk4Myw4ICs5OTgsOCBAQAogCiAgICAgICAgIGxvb3AgPSBzZWxmLm5ld190ZXN0X2xvb3AoZ2VuKQogCi0gICAgICAgIGEgPSBhc3luY2lvLlRhc2soYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKLSAgICAgICAgYiA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDAuMTUsIGxvb3A9bG9vcCksIGxvb3A9bG9vcCkKKyAgICAgICAgYSA9IHNlbGYubmV3X3Rhc2sobG9vcCwgYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9bG9vcCkpCisgICAgICAgIGIgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMC4xNSwgbG9vcD1sb29wKSkKIAogICAgICAgICBkb25lLCBwZW5kaW5nID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoCiAgICAgICAgICAgICBhc3luY2lvLndhaXQoW2IsIGFdLCB0aW1lb3V0PTAuMSwgbG9vcD1sb29wKSkKQEAgLTEwMzIsMTQgKzEwNDcsMTQgQEAKICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCh5aWVsZCBmcm9tIGYpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlcwogCi0gICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMC4xNSwgbG9vcC50aW1lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYScgaW4gcmVzWzoyXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdiJyBpbiByZXNbOjJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1syXSwgJ2MnKQogCiAgICAgICAgICMgRG9pbmcgaXQgYWdhaW4gc2hvdWxkIHRha2Ugbm8gdGltZSBhbmQgZXhlcmNpc2UgYSBkaWZmZXJlbnQgcGF0aC4KLSAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5UYXNrKGZvbygpLCBsb29wPWxvb3ApKQorICAgICAgICByZXMgPSBsb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLm5ld190YXNrKGxvb3AsIGZvbygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjE1LCBsb29wLnRpbWUoKSkKIAogICAgIGRlZiB0ZXN0X2FzX2NvbXBsZXRlZF93aXRoX3RpbWVvdXQoc2VsZik6CkBAIC0xMDY4LDcgKzEwODMsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCgyLCBleGMpKQogICAgICAgICAgICAgcmV0dXJuIHZhbHVlcwogCi0gICAgICAgIHJlcyA9IGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlcyksIDIsIHJlcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbMF0sICgxLCAnYScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1sxXVswXSwgMikKQEAgLTEwOTYsNyArMTExMSw3IEBACiAgICAgICAgICAgICAgICAgdiA9IHlpZWxkIGZyb20gZgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgJ2EnKQogCi0gICAgICAgIGxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uVGFzayhmb28oKSwgbG9vcD1sb29wKSkKKyAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi5uZXdfdGFzayhsb29wLCBmb28oKSkpCiAKICAgICBkZWYgdGVzdF9hc19jb21wbGV0ZWRfcmV2ZXJzZV93YWl0KHNlbGYpOgogCkBAIC0xMTU2LDcgKzExNzEsNyBAQAogICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKHlpZWxkIGZyb20gZikpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICAgICAgZnV0ID0gYXN5bmNpby5UYXNrKHJ1bm5lcigpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHJ1bm5lcigpKQogICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGZ1dCkKICAgICAgICAgcmVzdWx0ID0gZnV0LnJlc3VsdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHJlc3VsdCksIHsnaGFtJywgJ3NwYW0nfSkKQEAgLTExNzksNyArMTE5NCw3IEBACiAgICAgICAgICAgICByZXMgPSB5aWVsZCBmcm9tIGFzeW5jaW8uc2xlZXAoZHQvMiwgYXJnLCBsb29wPWxvb3ApCiAgICAgICAgICAgICByZXR1cm4gcmVzCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhzbGVlcGVyKDAuMSwgJ3llYWgnKSwgbG9vcD1sb29wKQorICAgICAgICB0ID0gc2VsZi5uZXdfdGFzayhsb29wLCBzbGVlcGVyKDAuMSwgJ3llYWgnKSkKICAgICAgICAgbG9vcC5ydW5fdW50aWxfY29tcGxldGUodCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZG9uZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQucmVzdWx0KCksICd5ZWFoJykKQEAgLTExOTQsOCArMTIwOSw3IEBACiAKICAgICAgICAgbG9vcCA9IHNlbGYubmV3X3Rlc3RfbG9vcChnZW4pCiAKLSAgICAgICAgdCA9IGFzeW5jaW8uVGFzayhhc3luY2lvLnNsZWVwKDEwLjAsICd5ZWFoJywgbG9vcD1sb29wKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPWxvb3ApCisgICAgICAgIHQgPSBzZWxmLm5ld190YXNrKGxvb3AsIGFzeW5jaW8uc2xlZXAoMTAuMCwgJ3llYWgnLCBsb29wPWxvb3ApKQogCiAgICAgICAgIGhhbmRsZSA9IE5vbmUKICAgICAgICAgb3JpZ19jYWxsX2xhdGVyID0gbG9vcC5jYWxsX2xhdGVyCkBAIC0xMjMxLDcgKzEyNDUsNyBAQAogCiAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICBkZWYgZG9pdCgpOgotICAgICAgICAgICAgc2xlZXBlciA9IGFzeW5jaW8uVGFzayhzbGVlcCg1MDAwKSwgbG9vcD1sb29wKQorICAgICAgICAgICAgc2xlZXBlciA9IHNlbGYubmV3X3Rhc2sobG9vcCwgc2xlZXAoNTAwMCkpCiAgICAgICAgICAgICBsb29wLmNhbGxfbGF0ZXIoMC4xLCBzbGVlcGVyLmNhbmNlbCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNsZWVwZXIKQEAgLTEyNDUsMTMgKzEyNTksMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgwLjEsIGxvb3AudGltZSgpKQogCiAgICAgZGVmIHRlc3RfdGFza19jYW5jZWxfd2FpdGVyX2Z1dHVyZShzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBjb3JvKCk6CiAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dAogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soY29ybygpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvKCkpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBzZWxmLmFzc2VydElzKHRhc2suX2Z1dF93YWl0ZXIsIGZ1dCkKIApAQCAtMTI2OCw3ICsxMjgyLDcgQEAKICAgICAgICAgICAgIHJldHVybiAna28nCiAKICAgICAgICAgZ2VuID0gbm90bXVjaCgpCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soZ2VuLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBnZW4pCiAgICAgICAgIHRhc2suc2V0X3Jlc3VsdCgnb2snKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCB0YXNrLl9zdGVwKQpAQCAtMTMwNCw3ICsxMzE4LDcgQEAKICAgICAgICAgICAgIG5vbmxvY2FsIHJlc3VsdAogICAgICAgICAgICAgcmVzdWx0ID0geWllbGQgZnJvbSBmdXQKIAotICAgICAgICB0ID0gYXN5bmNpby5UYXNrKHdhaXRfZm9yX2Z1dHVyZSgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdCA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB3YWl0X2Zvcl9mdXR1cmUoKSkKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmdXQuY2JfYWRkZWQpCiAKQEAgLTEzMjAsNyArMTMzNCw3IEBACiAgICAgICAgIGRlZiBub3RtdXRjaCgpOgogICAgICAgICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlvbigpCiAKLSAgICAgICAgdGFzayA9IGFzeW5jaW8uVGFzayhub3RtdXRjaCgpLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBub3RtdXRjaCgpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCYXNlRXhjZXB0aW9uLCB0YXNrLl9zdGVwKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0YXNrLmRvbmUoKSkKQEAgLTEzNDgsNyArMTM2Miw3IEBACiAgICAgICAgICAgICBleGNlcHQgYXN5bmNpby5DYW5jZWxsZWRFcnJvcjoKICAgICAgICAgICAgICAgICByYWlzZSBiYXNlX2V4YwogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2sobm90bXV0Y2goKSwgbG9vcD1sb29wKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzayhsb29wLCBub3RtdXRjaCgpKQogICAgICAgICB0ZXN0X3V0aWxzLnJ1bl9icmllZmx5KGxvb3ApCiAKICAgICAgICAgdGFzay5jYW5jZWwoKQpAQCAtMTM3Niw3ICsxMzkwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uaXNjb3JvdXRpbmVmdW5jdGlvbihmbjIpKQogCiAgICAgZGVmIHRlc3RfeWllbGRfdnNfeWllbGRfZnJvbShzZWxmKToKLSAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiB3YWl0X2Zvcl9mdXR1cmUoKToKQEAgLTE0MjAsNyArMTQzNCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCAndGVzdCcpCiAKICAgICBkZWYgdGVzdF9jb3JvdXRpbmVfbm9uX2dlbl9mdW5jdGlvbl9yZXR1cm5fZnV0dXJlKHNlbGYpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGZ1bmMoKToKQEAgLTE0MzAsNDkgKzE0NDQsNTMgQEAKICAgICAgICAgZGVmIGNvcm8oKToKICAgICAgICAgICAgIGZ1dC5zZXRfcmVzdWx0KCd0ZXN0JykKIAotICAgICAgICB0MSA9IGFzeW5jaW8uVGFzayhmdW5jKCksIGxvb3A9c2VsZi5sb29wKQotICAgICAgICB0MiA9IGFzeW5jaW8uVGFzayhjb3JvKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0MSA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBmdW5jKCkpCisgICAgICAgIHQyID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGNvcm8oKSkKICAgICAgICAgcmVzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsICd0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodDIucmVzdWx0KCkpCiAKICAgICBkZWYgdGVzdF9jdXJyZW50X3Rhc2soc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQorICAgICAgICBUYXNrID0gc2VsZi5fX2NsYXNzX18uVGFzaworCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGNvcm8obG9vcCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2spCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrKQogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soY29ybyhzZWxmLmxvb3ApLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvKHNlbGYubG9vcCkpCiAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKIAogICAgIGRlZiB0ZXN0X2N1cnJlbnRfdGFza193aXRoX2ludGVybGVhdmluZ190YXNrcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCisgICAgICAgIFRhc2sgPSBzZWxmLl9fY2xhc3NfXy5UYXNrCiAKLSAgICAgICAgZnV0MSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBmdXQyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKFRhc2suY3VycmVudF90YXNrKGxvb3A9c2VsZi5sb29wKSkKKworICAgICAgICBmdXQxID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgZnV0MiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBjb3JvMShsb29wKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMSkKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0MQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2sxKQogICAgICAgICAgICAgZnV0Mi5zZXRfcmVzdWx0KFRydWUpCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBjb3JvMihsb29wKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhc3luY2lvLlRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoVGFzay5jdXJyZW50X3Rhc2sobG9vcD1sb29wKSBpcyB0YXNrMikKICAgICAgICAgICAgIGZ1dDEuc2V0X3Jlc3VsdChUcnVlKQogICAgICAgICAgICAgeWllbGQgZnJvbSBmdXQyCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzayhsb29wPWxvb3ApIGlzIHRhc2syKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRhc2suY3VycmVudF90YXNrKGxvb3A9bG9vcCkgaXMgdGFzazIpCiAKLSAgICAgICAgdGFzazEgPSBhc3luY2lvLlRhc2soY29ybzEoc2VsZi5sb29wKSwgbG9vcD1zZWxmLmxvb3ApCi0gICAgICAgIHRhc2syID0gYXN5bmNpby5UYXNrKGNvcm8yKHNlbGYubG9vcCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0YXNrMSA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvMShzZWxmLmxvb3ApKQorICAgICAgICB0YXNrMiA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCBjb3JvMihzZWxmLmxvb3ApKQogCiAgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby53YWl0KCh0YXNrMSwgdGFzazIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFzeW5jaW8uVGFzay5jdXJyZW50X3Rhc2sobG9vcD1zZWxmLmxvb3ApKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShUYXNrLmN1cnJlbnRfdGFzayhsb29wPXNlbGYubG9vcCkpCiAKICAgICAjIFNvbWUgdGhvcm91Z2ggdGVzdHMgZm9yIGNhbmNlbGxhdGlvbiBwcm9wYWdhdGlvbiB0aHJvdWdoCiAgICAgIyBjb3JvdXRpbmVzLCB0YXNrcyBhbmQgd2FpdCgpLgpAQCAtMTQ4MCw3ICsxNDk4LDcgQEAKICAgICBkZWYgdGVzdF95aWVsZF9mdXR1cmVfcGFzc2VzX2NhbmNlbChzZWxmKToKICAgICAgICAgIyBDYW5jZWxsaW5nIG91dGVyKCkgY2FuY2VscyBpbm5lcigpIGNhbmNlbHMgd2FpdGVyLgogICAgICAgICBwcm9vZiA9IDAKLSAgICAgICAgd2FpdGVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHdhaXRlciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBpbm5lcigpOgpAQCAtMTUxNCw3ICsxNTMyLDcgQEAKICAgICAgICAgIyBDYW5jZWxsaW5nIG91dGVyKCkgbWFrZXMgd2FpdCgpIHJldHVybiBlYXJseSwgbGVhdmVzIGlubmVyKCkKICAgICAgICAgIyBydW5uaW5nLgogICAgICAgICBwcm9vZiA9IDAKLSAgICAgICAgd2FpdGVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHdhaXRlciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBpbm5lcigpOgpAQCAtMTUzOCwxNCArMTU1NiwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb29mLCAxKQogCiAgICAgZGVmIHRlc3Rfc2hpZWxkX3Jlc3VsdChzZWxmKToKLSAgICAgICAgaW5uZXIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgaW5uZXIgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICBvdXRlciA9IGFzeW5jaW8uc2hpZWxkKGlubmVyKQogICAgICAgICBpbm5lci5zZXRfcmVzdWx0KDQyKQogICAgICAgICByZXMgPSBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKG91dGVyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCiAKICAgICBkZWYgdGVzdF9zaGllbGRfZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICBpbm5lciA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBpbm5lciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAgICAgICAgIG91dGVyID0gYXN5bmNpby5zaGllbGQoaW5uZXIpCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQogICAgICAgICBleGMgPSBSdW50aW1lRXJyb3IoJ2V4cGVjdGVkJykKQEAgLTE1NTQsNyArMTU3Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3V0ZXIuZXhjZXB0aW9uKCksIGV4YykKIAogICAgIGRlZiB0ZXN0X3NoaWVsZF9jYW5jZWwoc2VsZik6Ci0gICAgICAgIGlubmVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIGlubmVyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgb3V0ZXIgPSBhc3luY2lvLnNoaWVsZChpbm5lcikKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAgICAgICAgIGlubmVyLmNhbmNlbCgpCkBAIC0xNTYyLDcgKzE1ODAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0ZXIuY2FuY2VsbGVkKCkpCiAKICAgICBkZWYgdGVzdF9zaGllbGRfc2hvcnRjdXQoc2VsZik6Ci0gICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICBmdXQuc2V0X3Jlc3VsdCg0MikKICAgICAgICAgcmVzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNoaWVsZChmdXQpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgNDIpCkBAIC0xNTcwLDcgKzE1ODgsNyBAQAogICAgIGRlZiB0ZXN0X3NoaWVsZF9lZmZlY3Qoc2VsZik6CiAgICAgICAgICMgQ2FuY2VsbGluZyBvdXRlcigpIGRvZXMgbm90IGFmZmVjdCBpbm5lcigpLgogICAgICAgICBwcm9vZiA9IDAKLSAgICAgICAgd2FpdGVyID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgIHdhaXRlciA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCiAKICAgICAgICAgQGFzeW5jaW8uY29yb3V0aW5lCiAgICAgICAgIGRlZiBpbm5lcigpOgpAQCAtMTU5NCw4ICsxNjEyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9vZiwgMSkKIAogICAgIGRlZiB0ZXN0X3NoaWVsZF9nYXRoZXIoc2VsZik6Ci0gICAgICAgIGNoaWxkMSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBjaGlsZDIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgY2hpbGQxID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgY2hpbGQyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgcGFyZW50ID0gYXN5bmNpby5nYXRoZXIoY2hpbGQxLCBjaGlsZDIsIGxvb3A9c2VsZi5sb29wKQogICAgICAgICBvdXRlciA9IGFzeW5jaW8uc2hpZWxkKHBhcmVudCwgbG9vcD1zZWxmLmxvb3ApCiAgICAgICAgIHRlc3RfdXRpbHMucnVuX2JyaWVmbHkoc2VsZi5sb29wKQpAQCAtMTYwOCw4ICsxNjI2LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJlbnQucmVzdWx0KCksIFsxLCAyXSkKIAogICAgIGRlZiB0ZXN0X2dhdGhlcl9zaGllbGQoc2VsZik6Ci0gICAgICAgIGNoaWxkMSA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICBjaGlsZDIgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgY2hpbGQxID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKKyAgICAgICAgY2hpbGQyID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKICAgICAgICAgaW5uZXIxID0gYXN5bmNpby5zaGllbGQoY2hpbGQxLCBsb29wPXNlbGYubG9vcCkKICAgICAgICAgaW5uZXIyID0gYXN5bmNpby5zaGllbGQoY2hpbGQyLCBsb29wPXNlbGYubG9vcCkKICAgICAgICAgcGFyZW50ID0gYXN5bmNpby5nYXRoZXIoaW5uZXIxLCBpbm5lcjIsIGxvb3A9c2VsZi5sb29wKQpAQCAtMTYyNSw3ICsxNjQzLDcgQEAKICAgICAgICAgdGVzdF91dGlscy5ydW5fYnJpZWZseShzZWxmLmxvb3ApCiAKICAgICBkZWYgdGVzdF9hc19jb21wbGV0ZWRfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICAjIGFzX2NvbXBsZXRlZCgpIGV4cGVjdHMgYSBsaXN0IG9mIGZ1dHVyZXMsIG5vdCBhIGZ1dHVyZSBpbnN0YW5jZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUsCkBAIC0xNjM2LDcgKzE2NTQsNyBAQAogICAgICAgICBjb3JvLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3dhaXRfaW52YWxpZF9hcmdzKHNlbGYpOgotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKyAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKHNlbGYubG9vcCkKIAogICAgICAgICAjIHdhaXQoKSBleHBlY3RzIGEgbGlzdCBvZiBmdXR1cmVzLCBub3QgYSBmdXR1cmUgaW5zdGFuY2UKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlLApAQCAtMTY2Myw3ICsxNjgxLDcgQEAKICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGZ1dAogCiAgICAgICAgICAgICAjIEEgY29tcGxldGVkIEZ1dHVyZSB1c2VkIHRvIHJ1biB0aGUgY29yb3V0aW5lLgotICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICBmdXQgPSBzZWxmLm5ld19mdXR1cmUoc2VsZi5sb29wKQogICAgICAgICAgICAgZnV0LnNldF9yZXN1bHQoTm9uZSkKIAogICAgICAgICAgICAgIyBDYWxsIHRoZSBjb3JvdXRpbmUuCkBAIC0xNjk3LDE1ICsxNzE1LDE1IEBACiAKICAgICAgICAgICAgIEBhc3luY2lvLmNvcm91dGluZQogICAgICAgICAgICAgZGVmIHQyKCk6Ci0gICAgICAgICAgICAgICAgZiA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQotICAgICAgICAgICAgICAgIGFzeW5jaW8uVGFzayh0MyhmKSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgZiA9IHNlbGYubmV3X2Z1dHVyZShzZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIHQzKGYpKQogICAgICAgICAgICAgICAgIHJldHVybiAoeWllbGQgZnJvbSBmKQogCiAgICAgICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgICAgIGRlZiB0MyhmKToKICAgICAgICAgICAgICAgICBmLnNldF9yZXN1bHQoKDEsIDIsIDMpKQogCi0gICAgICAgICAgICB0YXNrID0gYXN5bmNpby5UYXNrKHQxKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgdGFzayA9IHNlbGYubmV3X3Rhc2soc2VsZi5sb29wLCB0MSgpKQogICAgICAgICAgICAgdmFsID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZSh0YXNrKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWwsICgxLCAyLCAzKSkKIApAQCAtMTc2OCw5ICsxNzg2LDExIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoUFkzNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBweXRob24gMy40IG9yIGxhdGVyJykKICAgICBkZWYgdGVzdF9sb2dfZGVzdHJveWVkX3BlbmRpbmdfdGFzayhzZWxmKToKKyAgICAgICAgVGFzayA9IHNlbGYuX19jbGFzc19fLlRhc2sKKwogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGtpbGxfbWUobG9vcCk6Ci0gICAgICAgICAgICBmdXR1cmUgPSBhc3luY2lvLkZ1dHVyZShsb29wPWxvb3ApCisgICAgICAgICAgICBmdXR1cmUgPSBzZWxmLm5ld19mdXR1cmUobG9vcCkKICAgICAgICAgICAgIHlpZWxkIGZyb20gZnV0dXJlCiAgICAgICAgICAgICAjIGF0IHRoaXMgcG9pbnQsIHRoZSBvbmx5IHJlZmVyZW5jZSB0byBraWxsX21lKCkgdGFzayBpcwogICAgICAgICAgICAgIyB0aGUgVGFzay5fd2FrZXVwKCkgbWV0aG9kIGluIGZ1dHVyZS5fY2FsbGJhY2tzCkBAIC0xNzgzLDcgKzE4MDMsNyBAQAogICAgICAgICAjIHNjaGVkdWxlIHRoZSB0YXNrCiAgICAgICAgIGNvcm8gPSBraWxsX21lKHNlbGYubG9vcCkKICAgICAgICAgdGFzayA9IGFzeW5jaW8uZW5zdXJlX2Z1dHVyZShjb3JvLCBsb29wPXNlbGYubG9vcCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luY2lvLlRhc2suYWxsX3Rhc2tzKGxvb3A9c2VsZi5sb29wKSwge3Rhc2t9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRhc2suYWxsX3Rhc2tzKGxvb3A9c2VsZi5sb29wKSwge3Rhc2t9KQogCiAgICAgICAgICMgZXhlY3V0ZSB0aGUgdGFzayBzbyBpdCB3YWl0cyBmb3IgZnV0dXJlCiAgICAgICAgIHNlbGYubG9vcC5fcnVuX29uY2UoKQpAQCAtMTc5OCw3ICsxODE4LDcgQEAKICAgICAgICAgIyBubyBtb3JlIHJlZmVyZW5jZSB0byBraWxsX21lKCkgdGFzazogdGhlIHRhc2sgaXMgZGVzdHJveWVkIGJ5IHRoZSBHQwogICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmNpby5UYXNrLmFsbF90YXNrcyhsb29wPXNlbGYubG9vcCksIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRhc2suYWxsX3Rhc2tzKGxvb3A9c2VsZi5sb29wKSwgc2V0KCkpCiAKICAgICAgICAgbW9ja19oYW5kbGVyLmFzc2VydF9jYWxsZWRfd2l0aChzZWxmLmxvb3AsIHsKICAgICAgICAgICAgICdtZXNzYWdlJzogJ1Rhc2sgd2FzIGRlc3Ryb3llZCBidXQgaXQgaXMgcGVuZGluZyEnLApAQCAtMTg2MywxMCArMTg4MywxMCBAQAogICAgIGRlZiB0ZXN0X3Rhc2tfc291cmNlX3RyYWNlYmFjayhzZWxmKToKICAgICAgICAgc2VsZi5sb29wLnNldF9kZWJ1ZyhUcnVlKQogCi0gICAgICAgIHRhc2sgPSBhc3luY2lvLlRhc2soY29yb3V0aW5lX2Z1bmN0aW9uKCksIGxvb3A9c2VsZi5sb29wKQorICAgICAgICB0YXNrID0gc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGNvcm91dGluZV9mdW5jdGlvbigpKQogICAgICAgICBsaW5lbm8gPSBzeXMuX2dldGZyYW1lKCkuZl9saW5lbm8gLSAxCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0YXNrLl9zb3VyY2VfdHJhY2ViYWNrLCBsaXN0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRhc2suX3NvdXJjZV90cmFjZWJhY2tbLTFdWzozXSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXNrLl9zb3VyY2VfdHJhY2ViYWNrWy0yXVs6M10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKF9fZmlsZV9fLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0X3Rhc2tfc291cmNlX3RyYWNlYmFjaycpKQpAQCAtMTg3OCw3ICsxODk4LDcgQEAKIAogICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKICAgICAgICAgZGVmIGJsb2NraW5nX2Nvcm91dGluZSgpOgotICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5GdXR1cmUobG9vcD1sb29wKQorICAgICAgICAgICAgZnV0ID0gc2VsZi5uZXdfZnV0dXJlKGxvb3ApCiAgICAgICAgICAgICAjIEJsb2NrOiBmdXQgcmVzdWx0IGlzIG5ldmVyIHNldAogICAgICAgICAgICAgeWllbGQgZnJvbSBmdXQKIApAQCAtMTkwNSw3ICsxOTI1LDcgQEAKICAgICAgICAgbG9vcCA9IGFzeW5jaW8ubmV3X2V2ZW50X2xvb3AoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAobG9vcC5jbG9zZSkKIAotICAgICAgICBmdXQgPSBhc3luY2lvLkZ1dHVyZShsb29wPWxvb3ApCisgICAgICAgIGZ1dCA9IHNlbGYubmV3X2Z1dHVyZShsb29wKQogICAgICAgICAjIFRoZSBpbmRpcmVjdGlvbiBmdXQtPmNoaWxkX2Nvcm8gaXMgbmVlZGVkIHNpbmNlIG90aGVyd2lzZSB0aGUKICAgICAgICAgIyBnYXRoZXJpbmcgdGFzayBpcyBkb25lIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIGNoaWxkIGZ1dHVyZQogICAgICAgICBkZWYgY2hpbGRfY29ybygpOgpAQCAtMTkyOSw2ICsxOTQ5LDE1NyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdhdGhlcl90YXNrLmNhbmNlbGxlZCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdhdGhlcl90YXNrLnJlc3VsdCgpLCBbNDJdKQogCisgICAgQG1vY2sucGF0Y2goJ2FzeW5jaW8uYmFzZV9ldmVudHMubG9nZ2VyJykKKyAgICBkZWYgdGVzdF9lcnJvcl9pbl9jYWxsX3Nvb24oc2VsZiwgbV9sb2cpOgorICAgICAgICBkZWYgY2FsbF9zb29uKGNhbGxiYWNrLCAqYXJncyk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgIHNlbGYubG9vcC5jYWxsX3Nvb24gPSBjYWxsX3Nvb24KKworICAgICAgICBAYXN5bmNpby5jb3JvdXRpbmUKKyAgICAgICAgZGVmIGNvcm8oKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1fbG9nLmVycm9yLmNhbGxlZCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5uZXdfdGFzayhzZWxmLmxvb3AsIGNvcm8oKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUobV9sb2cuZXJyb3IuY2FsbGVkKQorICAgICAgICBtZXNzYWdlID0gbV9sb2cuZXJyb3IuY2FsbF9hcmdzWzBdWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1Rhc2sgd2FzIGRlc3Ryb3llZCBidXQgaXQgaXMgcGVuZGluZycsIG1lc3NhZ2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLlRhc2suYWxsX3Rhc2tzKHNlbGYubG9vcCksIHNldCgpKQorCisKK2RlZiBhZGRfc3ViY2xhc3NfdGVzdHMoY2xzKToKKyAgICBCYXNlVGFzayA9IGNscy5UYXNrCisgICAgQmFzZUZ1dHVyZSA9IGNscy5GdXR1cmUKKworICAgIGlmIEJhc2VUYXNrIGlzIE5vbmUgb3IgQmFzZUZ1dHVyZSBpcyBOb25lOgorICAgICAgICByZXR1cm4gY2xzCisKKyAgICBjbGFzcyBDb21tb25GdXR1cmU6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc2VsZi5jYWxscyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYTogMCkKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIGRlZiBfc2NoZWR1bGVfY2FsbGJhY2tzKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5jYWxsc1snX3NjaGVkdWxlX2NhbGxiYWNrcyddICs9IDEKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9zY2hlZHVsZV9jYWxsYmFja3MoKQorCisgICAgICAgIGRlZiBhZGRfZG9uZV9jYWxsYmFjayhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICBzZWxmLmNhbGxzWydhZGRfZG9uZV9jYWxsYmFjayddICs9IDEKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmFkZF9kb25lX2NhbGxiYWNrKCphcmdzKQorCisgICAgY2xhc3MgVGFzayhDb21tb25GdXR1cmUsIEJhc2VUYXNrKToKKyAgICAgICAgZGVmIF9zdGVwKHNlbGYsICphcmdzKToKKyAgICAgICAgICAgIHNlbGYuY2FsbHNbJ19zdGVwJ10gKz0gMQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX3N0ZXAoKmFyZ3MpCisKKyAgICAgICAgZGVmIF93YWtldXAoc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgc2VsZi5jYWxsc1snX3dha2V1cCddICs9IDEKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl93YWtldXAoKmFyZ3MpCisKKyAgICBjbGFzcyBGdXR1cmUoQ29tbW9uRnV0dXJlLCBCYXNlRnV0dXJlKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfc3ViY2xhc3Nlc19jdGFza19jZnV0dXJlKHNlbGYpOgorICAgICAgICBmdXQgPSBzZWxmLkZ1dHVyZShsb29wPXNlbGYubG9vcCkKKworICAgICAgICBhc3luYyBkZWYgZnVuYygpOgorICAgICAgICAgICAgc2VsZi5sb29wLmNhbGxfc29vbihsYW1iZGE6IGZ1dC5zZXRfcmVzdWx0KCdzcGFtJykpCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgZnV0CisKKyAgICAgICAgdGFzayA9IHNlbGYuVGFzayhmdW5jKCksIGxvb3A9c2VsZi5sb29wKQorCisgICAgICAgIHJlc3VsdCA9IHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUodGFzaykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgJ3NwYW0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBkaWN0KHRhc2suY2FsbHMpLAorICAgICAgICAgICAgeydfc3RlcCc6IDIsICdfd2FrZXVwJzogMSwgJ2FkZF9kb25lX2NhbGxiYWNrJzogMSwKKyAgICAgICAgICAgICAnX3NjaGVkdWxlX2NhbGxiYWNrcyc6IDF9KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBkaWN0KGZ1dC5jYWxscyksCisgICAgICAgICAgICB7J2FkZF9kb25lX2NhbGxiYWNrJzogMSwgJ19zY2hlZHVsZV9jYWxsYmFja3MnOiAxfSkKKworICAgICMgQWRkIHBhdGNoZWQgVGFzayAmIEZ1dHVyZSBiYWNrIHRvIHRoZSB0ZXN0IGNhc2UKKyAgICBjbHMuVGFzayA9IFRhc2sKKyAgICBjbHMuRnV0dXJlID0gRnV0dXJlCisKKyAgICAjIEFkZCBhbiBleHRyYSB1bml0LXRlc3QKKyAgICBjbHMudGVzdF9zdWJjbGFzc2VzX2N0YXNrX2NmdXR1cmUgPSB0ZXN0X3N1YmNsYXNzZXNfY3Rhc2tfY2Z1dHVyZQorCisgICAgIyBEaXNhYmxlIHRoZSAidGVzdF90YXNrX3NvdXJjZV90cmFjZWJhY2siIHRlc3QKKyAgICAjICh0aGUgdGVzdCBpcyBoYXJkY29kZWQgZm9yIGEgcGFydGljdWxhciBjYWxsIHN0YWNrLCB3aGljaAorICAgICMgaXMgc2xpZ2h0bHkgZGlmZmVyZW50IGZvciBUYXNrIHN1YmNsYXNzZXMpCisgICAgY2xzLnRlc3RfdGFza19zb3VyY2VfdHJhY2ViYWNrID0gTm9uZQorCisgICAgcmV0dXJuIGNscworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZnV0dXJlcywgJ19DRnV0dXJlJyksCisgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgdGhlIEMgX2FzeW5jaW8gbW9kdWxlJykKK2NsYXNzIENUYXNrX0NGdXR1cmVfVGVzdHMoQmFzZVRhc2tUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgVGFzayA9IGdldGF0dHIodGFza3MsICdfQ1Rhc2snLCBOb25lKQorICAgIEZ1dHVyZSA9IGdldGF0dHIoZnV0dXJlcywgJ19DRnV0dXJlJywgTm9uZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScpLAorICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHRoZSBDIF9hc3luY2lvIG1vZHVsZScpCitAYWRkX3N1YmNsYXNzX3Rlc3RzCitjbGFzcyBDVGFza19DRnV0dXJlX1N1YmNsYXNzVGVzdHMoQmFzZVRhc2tUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgVGFzayA9IGdldGF0dHIodGFza3MsICdfQ1Rhc2snLCBOb25lKQorICAgIEZ1dHVyZSA9IGdldGF0dHIoZnV0dXJlcywgJ19DRnV0dXJlJywgTm9uZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScpLAorICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHRoZSBDIF9hc3luY2lvIG1vZHVsZScpCitjbGFzcyBDVGFza19QeUZ1dHVyZV9UZXN0cyhCYXNlVGFza1Rlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICBUYXNrID0gZ2V0YXR0cih0YXNrcywgJ19DVGFzaycsIE5vbmUpCisgICAgRnV0dXJlID0gZnV0dXJlcy5fUHlGdXR1cmUKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKGZ1dHVyZXMsICdfQ0Z1dHVyZScpLAorICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIHRoZSBDIF9hc3luY2lvIG1vZHVsZScpCitjbGFzcyBQeVRhc2tfQ0Z1dHVyZV9UZXN0cyhCYXNlVGFza1Rlc3RzLCB0ZXN0X3V0aWxzLlRlc3RDYXNlKToKKyAgICBUYXNrID0gdGFza3MuX1B5VGFzaworICAgIEZ1dHVyZSA9IGdldGF0dHIoZnV0dXJlcywgJ19DRnV0dXJlJywgTm9uZSkKKworCitjbGFzcyBQeVRhc2tfUHlGdXR1cmVfVGVzdHMoQmFzZVRhc2tUZXN0cywgdGVzdF91dGlscy5UZXN0Q2FzZSk6CisgICAgVGFzayA9IHRhc2tzLl9QeVRhc2sKKyAgICBGdXR1cmUgPSBmdXR1cmVzLl9QeUZ1dHVyZQorCisKK0BhZGRfc3ViY2xhc3NfdGVzdHMKK2NsYXNzIFB5VGFza19QeUZ1dHVyZV9TdWJjbGFzc1Rlc3RzKEJhc2VUYXNrVGVzdHMsIHRlc3RfdXRpbHMuVGVzdENhc2UpOgorICAgIFRhc2sgPSB0YXNrcy5fUHlUYXNrCisgICAgRnV0dXJlID0gZnV0dXJlcy5fUHlGdXR1cmUKKworCitjbGFzcyBHZW5lcmljVGFza1Rlc3RzKHRlc3RfdXRpbHMuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZnV0dXJlX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhhc3luY2lvLlRhc2ssIGFzeW5jaW8uRnV0dXJlKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jaW9fbW9kdWxlX2NvbXBpbGVkKHNlbGYpOgorICAgICAgICAjIEJlY2F1c2Ugb2YgY2lyY3VsYXIgaW1wb3J0cyBpdCdzIGVhc3kgdG8gbWFrZSBfYXN5bmNpbworICAgICAgICAjIG1vZHVsZSBub24taW1wb3J0YWJsZS4gIFRoaXMgaXMgYSBzaW1wbGUgdGVzdCB0aGF0IHdpbGwKKyAgICAgICAgIyBmYWlsIG9uIHN5c3RlbXMgd2hlcmUgQyBtb2R1bGVzIHdlcmUgc3VjY2Vzc2Z1bGx5IGNvbXBpbGVkCisgICAgICAgICMgKGhlbmNlIHRoZSB0ZXN0IGZvciBfZnVuY3Rvb2xzKSwgYnV0IF9hc3luY2lvIHNvbWVob3cgZGlkbid0LgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX2Z1bmN0b29scworICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IF9hc3luY2lvCisgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdfYXN5bmNpbyBtb2R1bGUgaXMgbWlzc2luZycpCisKIAogY2xhc3MgR2F0aGVyVGVzdHNCYXNlOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQppbmRleCAzODU3OTE2Li5kYmVlNTkzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKQEAgLTExLDYgKzExLDkgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKKwogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXVnYXNzaWduLnB5IGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKaW5kZXggNTA5M2U5ZC4uNTkzMGQ5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkKQEAgLTgzLDYgKzgzLDEwIEBACiAgICAgICAgICAgICBkZWYgX19pYWRkX18oc2VsZiwgdmFsKToKICAgICAgICAgICAgICAgICByZXR1cm4gYXVnX3Rlc3QzKHNlbGYudmFsICsgdmFsKQogCisgICAgICAgIGNsYXNzIGF1Z190ZXN0NChhdWdfdGVzdDMpOgorICAgICAgICAgICAgIiIiQmxvY2tzIGluaGVyaXRhbmNlLCBhbmQgZmFsbGJhY2sgdG8gX19hZGRfXyIiIgorICAgICAgICAgICAgX19pYWRkX18gPSBOb25lCisKICAgICAgICAgeCA9IGF1Z190ZXN0KDEpCiAgICAgICAgIHkgPSB4CiAgICAgICAgIHggKz0gMTAKQEAgLTEwNiw2ICsxMTAsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC52YWwsIDEzKQogCisgICAgICAgIHggPSBhdWdfdGVzdDQoNCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgeCArPSAxMAorCiAKICAgICBkZWYgdGVzdEN1c3RvbU1ldGhvZHMyKHRlc3Rfc2VsZik6CiAgICAgICAgIG91dHB1dCA9IFtdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDM1Mi5weSBiL0xpYi90ZXN0L3Rlc3RfYmFzZWV4Y2VwdGlvbi5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDM1Mi5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9iYXNlZXhjZXB0aW9uLnB5CmluZGV4IDdjOThjNDYuLjI3ZDUxNGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmFzZWV4Y2VwdGlvbi5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBvcwogZnJvbSBwbGF0Zm9ybSBpbXBvcnQgc3lzdGVtIGFzIHBsYXRmb3JtX3N5c3RlbQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weSBiL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CmluZGV4IDQwYWM5YmYuLjYxMzNiYmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5CkBAIC0xNCw3ICsxNCw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN5cwotaW1wb3J0IGZ1bmN0b29scwogCiAjIFRoZXNlIHRlc3RzIGFsbCB1c2Ugb25lIG9mIHRoZSBiaWdtZW10ZXN0IGRlY29yYXRvcnMgdG8gaW5kaWNhdGUgaG93IG11Y2gKICMgbWVtb3J5IHRoZXkgdXNlIGFuZCBob3cgbXVjaCBtZW1vcnkgdGhleSBuZWVkIHRvIGJlIGV2ZW4gbWVhbmluZ2Z1bC4gIFRoZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKaW5kZXggMDM0MjQ1ZC4uNmIzZTQzNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CkBAIC0xNTksMTEgKzE1OSwyNSBAQAogICAgICAgICAjIFRoZW4gY2FsY3VsYXRlIHRoZSBoZXhiaW40IGJpbmFyeS10by1BU0NJSSB0cmFuc2xhdGlvbgogICAgICAgICBybGUgPSBiaW5hc2NpaS5ybGVjb2RlX2hxeChzZWxmLmRhdGEpCiAgICAgICAgIGEgPSBiaW5hc2NpaS5iMmFfaHF4KHNlbGYudHlwZTJ0ZXN0KHJsZSkpCisKICAgICAgICAgYiwgXyA9IGJpbmFzY2lpLmEyYl9ocXgoc2VsZi50eXBlMnRlc3QoYSkpCiAgICAgICAgIHJlcyA9IGJpbmFzY2lpLnJsZWRlY29kZV9ocXgoYikKLQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgc2VsZi5yYXdkYXRhKQogCisgICAgZGVmIHRlc3RfcmxlKHNlbGYpOgorICAgICAgICAjIHRlc3QgcmVwZXRpdGlvbiB3aXRoIGEgcmVwZXRpdGlvbiBsb25nZXIgdGhhbiB0aGUgbGltaXQgb2YgMjU1CisgICAgICAgIGRhdGEgPSAoYidhJyAqIDEwMCArIGInYicgKyBiJ2MnICogMzAwKQorCisgICAgICAgIGVuY29kZWQgPSBiaW5hc2NpaS5ybGVjb2RlX2hxeChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGInYVx4OTBkJyAgICAgICMgJ2EnICogMTAwCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInYicgICAgICAgICAgICMgJ2InCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInY1x4OTBceGZmJyAgICMgJ2MnICogMjU1CisgICAgICAgICAgICAgICAgICAgICAgICAgIGInY1x4OTAtJykpICAgICMgJ2MnICogNDUKKworICAgICAgICBkZWNvZGVkID0gYmluYXNjaWkucmxlZGVjb2RlX2hxeChlbmNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsIGRhdGEpCisKICAgICBkZWYgdGVzdF9oZXgoc2VsZik6CiAgICAgICAgICMgdGVzdCBoZXhsaWZpY2F0aW9uCiAgICAgICAgIHMgPSBiJ3tzXDAwNVwwMDBcMDAwXDAwMHdvcmxkaVwwMDJcMDAwXDAwMFwwMDBzXDAwNVwwMDBcMDAwXDAwMGhlbGxvaVwwMDFcMDAwXDAwMFwwMDAwJwpAQCAtMzMxLDYgKzM0NSwxNiBAQAogICAgICAgICAgICAgIyBub24tQVNDSUkgc3RyaW5nCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBhMmIsICJceDgwIikKIAorICAgIGRlZiB0ZXN0X2IyYV9iYXNlNjRfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjUzNTc6IHRlc3QgbmV3bGluZSBwYXJhbWV0ZXIKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpbmFzY2lpLmIyYV9iYXNlNjQoYiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhR1ZzYkc4PVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW5hc2NpaS5iMmFfYmFzZTY0KGIsIG5ld2xpbmU9VHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhR1ZzYkc4PVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaW5hc2NpaS5iMmFfYmFzZTY0KGIsIG5ld2xpbmU9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYUdWc2JHOD0nKQorCiAKIGNsYXNzIEFycmF5QmluQVNDSUlUZXN0KEJpbkFTQ0lJVGVzdCk6CiAgICAgZGVmIHR5cGUydGVzdChzZWxmLCBzKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmluaGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkKaW5kZXggOWQ0Yzg1YS4uMjFmNDQ2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkKQEAgLTQsNyArNCw2IEBACiAgICBCYXNlZCBvbiBhbiBvcmlnaW5hbCB0ZXN0IGJ5IFJvZ2VyIEUuIE1hc3NlLgogIiIiCiBpbXBvcnQgYmluaGV4Ci1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkgYi9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CmluZGV4IGU5ZGJkZGMuLjNlZDAxOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQpAQCAtMiw3ICsyLDcgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gb3BlcmF0b3IgaW1wb3J0IGVxLCBuZSwgbHQsIGd0LCBsZSwgZ2UKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IGVxLCBsZSwgbmUKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhCiAKIGRlZiBnY2QoYSwgYik6CkBAIC0zODgsNiArMzg4LDU0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bfc2VxdWVuY2UoZXEsIEIsIFYpLCBbJ0IuX19lcV9fJywgJ1YuX19lcV9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Bfc2VxdWVuY2UobGUsIEIsIFYpLCBbJ0IuX19sZV9fJywgJ1YuX19nZV9fJ10pCiAKK2NsYXNzIFN1cEVxKG9iamVjdCk6CisgICAgIiIiQ2xhc3MgdGhhdCBjYW4gdGVzdCBlcXVhbGl0eSIiIgorICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCitjbGFzcyBTKFN1cEVxKToKKyAgICAiIiJTdWJjbGFzcyBvZiBTdXBFcSB0aGF0IHNob3VsZCBmYWlsIiIiCisgICAgX19lcV9fID0gTm9uZQorCitjbGFzcyBGKG9iamVjdCk6CisgICAgIiIiSW5kZXBlbmRlbnQgY2xhc3MgdGhhdCBzaG91bGQgZmFsbCBiYWNrIiIiCisKK2NsYXNzIFgob2JqZWN0KToKKyAgICAiIiJJbmRlcGVuZGVudCBjbGFzcyB0aGF0IHNob3VsZCBmYWlsIiIiCisgICAgX19lcV9fID0gTm9uZQorCitjbGFzcyBTTihTdXBFcSk6CisgICAgIiIiU3ViY2xhc3Mgb2YgU3VwRXEgdGhhdCBjYW4gdGVzdCBlcXVhbGl0eSwgYnV0IG5vdCBub24tZXF1YWxpdHkiIiIKKyAgICBfX25lX18gPSBOb25lCisKK2NsYXNzIFhOOgorICAgICIiIkluZGVwZW5kZW50IGNsYXNzIHRoYXQgY2FuIHRlc3QgZXF1YWxpdHksIGJ1dCBub3Qgbm9uLWVxdWFsaXR5IiIiCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgX19uZV9fID0gTm9uZQorCitjbGFzcyBGYWxsYmFja0Jsb2NraW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIE5vbmUgbWV0aG9kIGJsb2NraW5nIiIiCisKKyAgICBkZWYgdGVzdF9mYWxsYmFja19ybWV0aG9kX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBlLCBmLCBzLCB4ID0gU3VwRXEoKSwgRigpLCBTKCksIFgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBlKQorICAgICAgICAjIGxlZnQgb3BlcmFuZCBpcyBjaGVja2VkIGZpcnN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlcSwgeCwgZSkKKyAgICAgICAgIyBTIGlzIGEgc3ViY2xhc3MsIHNvIGl0J3MgYWx3YXlzIGNoZWNrZWQgZmlyc3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlcSwgZSwgcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlcSwgcywgZSkKKworICAgIGRlZiB0ZXN0X2ZhbGxiYWNrX25lX2Jsb2NraW5nKHNlbGYpOgorICAgICAgICBlLCBzbiwgeG4gPSBTdXBFcSgpLCBTTigpLCBYTigpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZSAhPSBlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5lLCBlLCBzbikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZSwgc24sIGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZSAhPSB4bikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZSwgeG4sIGUpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jvb2wucHkgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKaW5kZXggZDMwYTNiOS4uOWY4ZjBlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQpAQCAtOTYsNiArOTYsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZS8xLCAwKQogICAgICAgICBzZWxmLmFzc2VydElzTm90KEZhbHNlLzEsIEZhbHNlKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSUxLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KFRydWUlMSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSUyLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KFRydWUlMiwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSUxLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KEZhbHNlJTEsIEZhbHNlKQorCiAgICAgICAgIGZvciBiIGluIEZhbHNlLCBUcnVlOgogICAgICAgICAgICAgZm9yIGkgaW4gMCwgMSwgMjoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIqKmksIGludChiKSoqaSkKQEAgLTMzMyw2ICszNDAsMTcgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgKEV4Y2VwdGlvbikgYXMgZV9sZW46CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGVfYm9vbCksIHN0cihlX2xlbikpCiAKKyAgICBkZWYgdGVzdF9ibG9ja2VkKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgX19ib29sX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYm9vbCwgQSgpKQorCisgICAgICAgIGNsYXNzIEI6CisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMTAKKyAgICAgICAgICAgIF9fYm9vbF9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJvb2wsIEIoKSkKKwogICAgIGRlZiB0ZXN0X3JlYWxfYW5kX2ltYWcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZS5yZWFsLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUuaW1hZywgMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKaW5kZXggMmVlZjlmYy4uYjgzZjJmMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKQEAgLTE2LDcgKzE2LDYgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucywgcHJvZHVjdAogZnJvbSByYW5kb20gaW1wb3J0IHJhbmRyYW5nZSwgc2FtcGxlLCBjaG9pY2UKLWZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgc3lzLCBhcnJheSwgaW8KIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZpby5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKaW5kZXggOTkzMWM4NC4uZmVhNmRhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWZpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CkBAIC01OSw3ICs1OSw3IEBACiAgICAgICAgIHNlbGYuZHJpdmVfb25lKGIiMTIzNDU2Nzg5MFwwMFwwMVwwMlwwM1wwNFwwNVwwNiIpCiAKICAgICBkZWYgdGVzdF9udWxscGF0KHNlbGYpOgotICAgICAgICBzZWxmLmRyaXZlX29uZShieXRlcygxMDAwKSkKKyAgICAgICAgc2VsZi5kcml2ZV9vbmUoYidcMCcgKiAxMDAwKQogCiAKIGNsYXNzIENCdWZmZXJTaXplVGVzdChCdWZmZXJTaXplVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5IGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CmluZGV4IDM5YzgwYjAuLmUwY2ZmZTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKQEAgLTgxLDcgKzgxLDcgQEAKICAgICAgICAgKCcnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICBcdFx0ICAnLCBWYWx1ZUVycm9yKSwKLSAgICAgICAgKHN0cihiJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKKyAgICAgICAgKHN0cihicidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCiAgICAgICAgIChjaHIoMHgyMDApLCBWYWx1ZUVycm9yKSwKIF0KIApAQCAtMTAzLDcgKzEwMyw3IEBACiAgICAgICAgICgnJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICcsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAgXHRcdCAgJywgVmFsdWVFcnJvciksCi0gICAgICAgIChzdHIoYidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCisgICAgICAgIChzdHIoYnInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAogICAgICAgICAoY2hyKDB4MjAwKSwgVmFsdWVFcnJvciksCiBdCiAKQEAgLTE3MTAsMjEgKzE3MTAsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnNwYW0oKSwgJ3NwYW00MicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b19ieXRlcygyLCAnbGl0dGxlJyksIGInXHgyYVx4MDAnKQogCi0gICAgZGVmIHRlc3RfdHlwZV9uZXdfa2V5d29yZHMoc2VsZik6Ci0gICAgICAgIGNsYXNzIEI6Ci0gICAgICAgICAgICBkZWYgaGFtKHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiAnaGFtJWQnICUgc2VsZgotICAgICAgICBDID0gdHlwZS5fX25ld19fKHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nQycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYmFzZXM9KEIsIGludCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGljdD17J3NwYW0nOiBsYW1iZGEgc2VsZjogJ3NwYW0lcycgJSBzZWxmfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbmFtZV9fLCAnQycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX3F1YWxuYW1lX18sICdDJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbW9kdWxlX18sIF9fbmFtZV9fKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19iYXNlc19fLCAoQiwgaW50KSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhDLl9fYmFzZV9fLCBpbnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NwYW0nLCBDLl9fZGljdF9fKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdoYW0nLCBDLl9fZGljdF9fKQorICAgIGRlZiB0ZXN0X3R5cGVfbm9rd2FyZ3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGUoJ2EnLCAoKSwge30sIHg9NSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZSgnYScsICgpLCBkaWN0PXt9KQogCiAgICAgZGVmIHRlc3RfdHlwZV9uYW1lKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSBpbiAnQScsICdceGM0JywgJ1xVMDAwMWY0MGQnLCAnQi5BJywgJzQyJywgJyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQppbmRleCBjYzMxMmIxLi4yMjI0NDI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKQEAgLTIxNiw3ICsyMTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYudHlwZTJ0ZXN0KHNhbXBsZVs6LTNdLCAidXRmLTgiKSkKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKLSAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5cdTEyMzRcdTU2NzhcdTlhYmNcZGVmMFxkZWYwIgorICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiYyIKICAgICAgICAgZm9yIGVuYyBpbiAoInV0Zi04IiwgInV0Zi0xNiIpOgogICAgICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgZW5jKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlbmMpLCBzYW1wbGUpCkBAIC0yNjksNiArMjY5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigyMDAsIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogMzAwIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogLTEgaW4gYikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBzeXMubWF4c2l6ZSsxIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBOb25lIGluIGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBmbG9hdChvcmQoJ2EnKSkgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6ICJhIiBpbiBiKQpAQCAtMzAwLDYgKzMwMSwyMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnR5cGUydGVzdC5mcm9taGV4LCAnXHgwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgsICcxMiAgIFx4MDAgICAzNCcpCiAKKyAgICAgICAgZm9yIGRhdGEsIHBvcyBpbiAoCisgICAgICAgICAgICAjIGludmFsaWQgZmlyc3QgaGV4YWRlY2ltYWwgY2hhcmFjdGVyCisgICAgICAgICAgICAoJzEyIHg0IDU2JywgMyksCisgICAgICAgICAgICAjIGludmFsaWQgc2Vjb25kIGhleGFkZWNpbWFsIGNoYXJhY3RlcgorICAgICAgICAgICAgKCcxMiAzeCA1NicsIDQpLAorICAgICAgICAgICAgIyB0d28gaW52YWxpZCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAoJzEyIHh5IDU2JywgMyksCisgICAgICAgICAgICAjIHRlc3Qgbm9uLUFTQ0lJIHN0cmluZworICAgICAgICAgICAgKCcxMiAzXHhmZiA1NicsIDQpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnR5cGUydGVzdC5mcm9taGV4KGRhdGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhdCBwb3NpdGlvbiAlcycgJSBwb3MsIHN0cihjbS5leGNlcHRpb24pKQorCiAgICAgZGVmIHRlc3RfaGV4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmhleCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdC5oZXgsIDEpCkBAIC02NzQsNiArNjg5LDM3IEBACiAgICAgICAgIHRlc3Quc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBpdGVyLCBzZWxmLnR5cGUydGVzdCkKICAgICAgICAgdGVzdC5zdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIHJldmVyc2VkLCBzZWxmLnR5cGUydGVzdCkKIAorICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmKToKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQorICAgICAgICByb3NldHRhID0gYnl0ZWFycmF5KHJhbmdlKDI1NikpCisgICAgICAgIHJvc2V0dGFbb3JkKCdvJyldID0gb3JkKCdlJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGIudHJhbnNsYXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGIudHJhbnNsYXRlLCBOb25lLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnRyYW5zbGF0ZSwgYnl0ZXMocmFuZ2UoMjU1KSkpCisKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgc2VsZi50eXBlMnRlc3QpCisKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEpCisgICAgICAgIGQgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlbGxlJykKKworICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYidsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShOb25lLCBiJ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCisKKyAgICAgICAgIyB0ZXN0IGRlbGV0ZSBhcyBhIGtleXdvcmQgYXJndW1lbnQKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGRlbGV0ZT1iJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWxsZScpCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBkZWxldGU9YidsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShOb25lLCBkZWxldGU9YidlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQorCiAKIGNsYXNzIEJ5dGVzVGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZXMKQEAgLTcyMiwzMSArNzY4LDE0MiBAQAogCiAgICAgIyBUZXN0IFB5Qnl0ZXNfRnJvbUZvcm1hdCgpCiAgICAgZGVmIHRlc3RfZnJvbV9mb3JtYXQoc2VsZik6Ci0gICAgICAgIHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgcHl0aG9uYXBpLCBweV9vYmplY3QsIGNfaW50LCBjX2NoYXJfcAorICAgICAgICBjdHlwZXMgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY3R5cGVzJykKKyAgICAgICAgX3Rlc3RjYXBpID0gdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190ZXN0Y2FwaScpCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBweXRob25hcGksIHB5X29iamVjdAorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgKAorICAgICAgICAgICAgY19pbnQsIGNfdWludCwKKyAgICAgICAgICAgIGNfbG9uZywgY191bG9uZywKKyAgICAgICAgICAgIGNfc2l6ZV90LCBjX3NzaXplX3QsCisgICAgICAgICAgICBjX2NoYXJfcCkKKwogICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQgPSBweXRob25hcGkuUHlCeXRlc19Gcm9tRm9ybWF0CiAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdC5yZXN0eXBlID0gcHlfb2JqZWN0CiAKKyAgICAgICAgIyBiYXNpYyB0ZXN0cwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2Zvcm1hdCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGInZm9ybWF0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidIZWxsbyAlcyAhJywgYid3b3JsZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInSGVsbG8gd29ybGQgIScpCiAKKyAgICAgICAgIyB0ZXN0IGZvcm1hdHRlcnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjPSVjJywgY19pbnQoMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYz1cMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYz0lYycsIGNfaW50KG9yZCgnQCcpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidjPUAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M9JWMnLCBjX2ludCgyNTUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M9XHhmZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInZD0lZCBsZD0lbGQgemQ9JXpkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19pbnQoMSksIGNfbG9uZygyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19zaXplX3QoMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInZD0xIGxkPTIgemQ9MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInZD0lZCBsZD0lbGQgemQ9JXpkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19pbnQoLTEpLCBjX2xvbmcoLTIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3NpemVfdCgtMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInZD0tMSBsZD0tMiB6ZD0tMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIndT0ldSBsdT0lbHUgenU9JXp1JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY191aW50KDEyMyksIGNfdWxvbmcoNDU2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19zaXplX3QoNzg5KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYid1PTEyMyBsdT00NTYgenU9Nzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidpPSVpJywgY19pbnQoMTIzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidpPTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInaT0laScsIGNfaW50KC0xMjMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2k9LTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIneD0leCcsIGNfaW50KDB4YWJjKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYid4PWFiYycpCisKKyAgICAgICAgc2l6ZW9mX3B0ciA9IGN0eXBlcy5zaXplb2YoY19jaGFyX3ApCisKKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgIyBXaW5kb3dzIChNU0NSVCkKKyAgICAgICAgICAgIHB0cl9mb3JtYXQgPSAnMHglMHt9WCcuZm9ybWF0KDIgKiBzaXplb2ZfcHRyKQorICAgICAgICAgICAgZGVmIHB0cl9mb3JtYXR0ZXIocHRyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKHB0cl9mb3JtYXQgJSBwdHIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFVOSVggKGdsaWJjKQorICAgICAgICAgICAgZGVmIHB0cl9mb3JtYXR0ZXIocHRyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJyUjeCcgJSBwdHIKKworICAgICAgICBwdHIgPSAweGFiY2RlZgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3B0cj0lcCcsIGNfY2hhcl9wKHB0cikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgncHRyPScgKyBwdHJfZm9ybWF0dGVyKHB0cikpLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidzPSVzJywgY19jaGFyX3AoYidjc3RyJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIncz1jc3RyJykKKworICAgICAgICAjIHRlc3QgbWluaW11bSBhbmQgbWF4aW11bSBpbnRlZ2VyIHZhbHVlcworICAgICAgICBzaXplX21heCA9IGNfc2l6ZV90KC0xKS52YWx1ZQorICAgICAgICBmb3IgZm9ybWF0c3RyLCBjdHlwZXNfdHlwZSwgdmFsdWUsIHB5X2Zvcm1hdHRlciBpbiAoCisgICAgICAgICAgICAoYiclZCcsIGNfaW50LCBfdGVzdGNhcGkuSU5UX01JTiwgc3RyKSwKKyAgICAgICAgICAgIChiJyVkJywgY19pbnQsIF90ZXN0Y2FwaS5JTlRfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJWxkJywgY19sb25nLCBfdGVzdGNhcGkuTE9OR19NSU4sIHN0ciksCisgICAgICAgICAgICAoYiclbGQnLCBjX2xvbmcsIF90ZXN0Y2FwaS5MT05HX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyVsdScsIGNfdWxvbmcsIF90ZXN0Y2FwaS5VTE9OR19NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclemQnLCBjX3NzaXplX3QsIF90ZXN0Y2FwaS5QWV9TU0laRV9UX01JTiwgc3RyKSwKKyAgICAgICAgICAgIChiJyV6ZCcsIGNfc3NpemVfdCwgX3Rlc3RjYXBpLlBZX1NTSVpFX1RfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJXp1JywgY19zaXplX3QsIHNpemVfbWF4LCBzdHIpLAorICAgICAgICAgICAgKGInJXAnLCBjX2NoYXJfcCwgc2l6ZV9tYXgsIHB0cl9mb3JtYXR0ZXIpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoZm9ybWF0c3RyLCBjdHlwZXNfdHlwZSh2YWx1ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweV9mb3JtYXR0ZXIodmFsdWUpLmVuY29kZSgnYXNjaWknKSksCisKKyAgICAgICAgIyB3aWR0aCBhbmQgcHJlY2lzaW9uICh3aWR0aCBpcyBjdXJyZW50bHkgaWdub3JlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclNXMnLCBiJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUuM3MnLCBiJ2FiY2RlZicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYWJjJykKKworICAgICAgICAjICclJScgZm9ybWF0dGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ1slJV0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1slXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSUlYycsIGNfaW50KG9yZCgnXycpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiclXycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSVzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiclcycpCisKKyAgICAgICAgIyBJbnZhbGlkIGZvcm1hdHMgYW5kIHBhcnRpYWwgZm9ybWF0dGluZwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUnKSwgYiclJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJScpLCBiJyUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlcycpLCBiJyVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidbJSVdJyksIGInWyVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJSVjJywgY19pbnQob3JkKCdfJykpKSwgYiclXycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIneD0laSB5PSUnLCBjX2ludCgyKSwgY19pbnQoMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGIneD0yIHk9JScpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjOiVjJywgY19pbnQoMjU1KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidjOlx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3M6JXMnLCBjX2NoYXJfcChiJ2NzdHInKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidzOmNzdHInKQotCi0gICAgICAgICMgSXNzdWUgIzE5OTY5CisgICAgICAgICMgSXNzdWUgIzE5OTY5OiAlYyBtdXN0IHJhaXNlIE92ZXJmbG93RXJyb3IgZm9yIHZhbHVlcworICAgICAgICAjIG5vdCBpbiB0aGUgcmFuZ2UgWzA7IDI1NV0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0LCBiJyVjJywgY19pbnQoLTEpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQsIGInJWMnLCBjX2ludCgyNTYpKQogCisgICAgZGVmIHRlc3RfYnl0ZXNfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGNsYXNzIEl0ZXJhdGlvbkJsb2NrZWQobGlzdCk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIGkgPSBbMCwgMSwgMiwgM10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhpKSwgYidceDAwXHgwMVx4MDJceDAzJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgSXRlcmF0aW9uQmxvY2tlZChpKSkKKworICAgICAgICAjIEF0IGxlYXN0IGluIENQeXRob24sIGJlY2F1c2UgYnl0ZXMuX19uZXdfXyBhbmQgdGhlIEMgQVBJCisgICAgICAgICMgUHlCeXRlc19Gcm9tT2JqZWN0IGhhdmUgZGlmZmVyZW50IGZhbGxiYWNrIHJ1bGVzLCBpbnRlZ2VyCisgICAgICAgICMgZmFsbGJhY2sgaXMgaGFuZGxlZCBzcGVjaWFsbHksIHNvIHRlc3Qgc2VwYXJhdGVseS4KKyAgICAgICAgY2xhc3MgSW50QmxvY2tlZChpbnQpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDMpLCBiJ1wwXDBcMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIEludEJsb2NrZWQoMykpCisKKyAgICAgICAgIyBXaGlsZSB0aGVyZSBpcyBubyBzZXBhcmF0ZWx5LWRlZmluZWQgcnVsZSBmb3IgaGFuZGxpbmcgYnl0ZXMKKyAgICAgICAgIyBzdWJjbGFzc2VzIGRpZmZlcmVudGx5IGZyb20gb3RoZXIgYnVmZmVyLWludGVyZmFjZSBjbGFzc2VzLAorICAgICAgICAjIGFuIGltcGxlbWVudGF0aW9uIG1heSB3ZWxsIHNwZWNpYWwtY2FzZSB0aGVtIChhcyBDUHl0aG9uIDIueAorICAgICAgICAjIHN0ciBkaWQpLCBzbyB0ZXN0IHRoZW0gc2VwYXJhdGVseS4KKyAgICAgICAgY2xhc3MgQnl0ZXNTdWJjbGFzc0Jsb2NrZWQoYnl0ZXMpOgorICAgICAgICAgICAgX19ieXRlc19fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGInYWInKSwgYidhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnl0ZXMsIEJ5dGVzU3ViY2xhc3NCbG9ja2VkKGInYWInKSkKKworICAgICAgICBjbGFzcyBCdWZmZXJCbG9ja2VkKGJ5dGVhcnJheSk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIGJhLCBiYiA9IGJ5dGVhcnJheShiJ2FiJyksIEJ1ZmZlckJsb2NrZWQoYidhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYmEpLCBiJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgYmIpCisKIAogY2xhc3MgQnl0ZUFycmF5VGVzdChCYXNlQnl0ZXNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdHlwZTJ0ZXN0ID0gYnl0ZWFycmF5CkBAIC0xMzIzLDI0ICsxNDgwLDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2IiJXMiJyAlIGNocihjKSkKIAotICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmKToKLSAgICAgICAgYiA9IGInaGVsbG8nCi0gICAgICAgIGJhID0gYnl0ZWFycmF5KGIpCi0gICAgICAgIHJvc2V0dGEgPSBieXRlYXJyYXkocmFuZ2UoMCwgMjU2KSkKLSAgICAgICAgcm9zZXR0YVtvcmQoJ28nKV0gPSBvcmQoJ2UnKQotICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYidsJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCi0gICAgICAgIGMgPSBiYS50cmFuc2xhdGUocm9zZXR0YSwgYidsJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYidoZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidoZWUnKQotICAgICAgICBjID0gYi50cmFuc2xhdGUoTm9uZSwgYidlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQotICAgICAgICBjID0gYmEudHJhbnNsYXRlKE5vbmUsIGInZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiLnRyYW5zbGF0ZSwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiYS50cmFuc2xhdGUsIE5vbmUsIE5vbmUpCi0KICAgICBkZWYgdGVzdF9zcGxpdF9ieXRlYXJyYXkoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidhIGInLnNwbGl0KG1lbW9yeXZpZXcoYicgJykpLCBbYidhJywgYidiJ10pCiAKQEAgLTE1MDQsNyArMTY0MywzMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGEpLCB0eXBlKGIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGEueSksIHR5cGUoYi55KSkKIAotICAgIHRlc3RfZnJvbWhleCA9IEJhc2VCeXRlc1Rlc3QudGVzdF9mcm9taGV4CisgICAgZGVmIHRlc3RfZnJvbWhleChzZWxmKToKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgoJzFhMkIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidceDFhXHgyYlx4MzAnKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYiksIHNlbGYudHlwZTJ0ZXN0KQorCisgICAgICAgIGNsYXNzIEIxKHNlbGYuYmFzZXR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbWUgPSBzZWxmLmJhc2V0eXBlLl9fbmV3X18oY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBtZS5mb28gPSAnYmFyJworICAgICAgICAgICAgICAgIHJldHVybiBtZQorCisgICAgICAgIGIgPSBCMS5mcm9taGV4KCcxYTJCMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInXHgxYVx4MmJceDMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGIpLCBCMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZvbywgJ2JhcicpCisKKyAgICAgICAgY2xhc3MgQjIoc2VsZi5iYXNldHlwZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18obWUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5iYXNldHlwZSBpcyBub3QgYnl0ZXM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmFzZXR5cGUuX19pbml0X18obWUsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICBtZS5mb28gPSAnYmFyJworCisgICAgICAgIGIgPSBCMi5mcm9taGV4KCcxYTJCMzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInXHgxYVx4MmJceDMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGIpLCBCMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZvbywgJ2JhcicpCiAKIAogY2xhc3MgQnl0ZUFycmF5U3ViY2xhc3MoYnl0ZWFycmF5KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5IGIvTGliL3Rlc3QvdGVzdF9iejIucHkKaW5kZXggNDc4OTIxYS4uNDgyMjQyYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iejIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iejIucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBnbG9iCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKQEAgLTU2MCwxMyArNTYxLDIwIEBACiAgICAgICAgIHdpdGggQloyRmlsZShzdHJfZmlsZW5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCiAKKyAgICBkZWYgdGVzdE9wZW5QYXRoTGlrZUZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChzZWxmLmZpbGVuYW1lKQorICAgICAgICB3aXRoIEJaMkZpbGUoZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKGZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgc2VsZi5EQVRBKQorCiAgICAgZGVmIHRlc3REZWNvbXByZXNzTGltaXRlZChzZWxmKToKICAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCi0gICAgICAgIGJvbWIgPSBiejIuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBjb21wcmVzc2xldmVsPTkpCisgICAgICAgIGJvbWIgPSBiejIuY29tcHJlc3MoYidcMCcgKiBpbnQoMmU2KSwgY29tcHJlc3NsZXZlbD05KQogICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUpCiAKICAgICAgICAgZGVjb21wID0gQloyRmlsZShCeXRlc0lPKGJvbWIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKDEpLCBkZWNvbXAucmVhZCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvbXAucmVhZCgxKSwgYidcMCcpCiAgICAgICAgIG1heF9kZWNvbXAgPSAxICsgREVGQVVMVF9CVUZGRVJfU0laRQogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChkZWNvbXAuX2J1ZmZlci5yYXcudGVsbCgpLCBtYXhfZGVjb21wLAogICAgICAgICAgICAgIkV4Y2Vzc2l2ZSBhbW91bnQgb2YgZGF0YSB3YXMgZGVjb21wcmVzc2VkIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CmluZGV4IGFjY2YyNTEuLjJiYzRmZWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQpAQCAtNzIyLDE5ICs3MjIsMTkgQEAKIAogICAgIGRlZiBhc3NlcnRGYWlsdXJlKHNlbGYsICphcmdzKToKICAgICAgICAgcmMsIHN0ZG91dCwgc3RkZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctbScsICdjYWxlbmRhcicsICphcmdzKQotICAgICAgICBzZWxmLmFzc2VydEluKGInVXNhZ2U6Jywgc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEluKGIndXNhZ2U6Jywgc3RkZXJyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCAyKQogCiAgICAgZGVmIHRlc3RfaGVscChzZWxmKToKICAgICAgICAgc3Rkb3V0ID0gc2VsZi5ydW5fb2soJy1oJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1VzYWdlOicsIHN0ZG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiJ3VzYWdlOicsIHN0ZG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2NhbGVuZGFyLnB5Jywgc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydEluKGInLS1oZWxwJywgc3Rkb3V0KQogCiAgICAgZGVmIHRlc3RfaWxsZWdhbF9hcmd1bWVudHMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnLXonKQotICAgICAgICAjc2VsZi5hc3NlcnRGYWlsdXJlKCdzcGFtJykKLSAgICAgICAgI3NlbGYuYXNzZXJ0RmFpbHVyZSgnMjAwNCcsICdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCdzcGFtJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCcyMDA0JywgJ3NwYW0nKQogICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJy10JywgJ2h0bWwnLCAnMjAwNCcsICcxJykKIAogICAgIGRlZiB0ZXN0X291dHB1dF9jdXJyZW50X3llYXIoc2VsZik6CkBAIC04MzUsNSArODM1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgYidocmVmPSJjdXN0b20uY3NzIiAvPicsIHN0ZG91dCkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydtZGF5cycsICdKYW51YXJ5JywgJ0ZlYnJ1YXJ5JywgJ0VQT0NIJywKKyAgICAgICAgICAgICAgICAgICAgICdNT05EQVknLCAnVFVFU0RBWScsICdXRURORVNEQVknLCAnVEhVUlNEQVknLCAnRlJJREFZJywKKyAgICAgICAgICAgICAgICAgICAgICdTQVRVUkRBWScsICdTVU5EQVknLCAnZGlmZmVyZW50X2xvY2FsZScsICdjJywKKyAgICAgICAgICAgICAgICAgICAgICdwcndlZWsnLCAnd2VlaycsICdmb3JtYXQnLCAnZm9ybWF0c3RyaW5nJywgJ21haW4nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjYWxlbmRhciwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CmluZGV4IDFlYWRkMjIuLjZjMzYyNWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKQEAgLTQsOCArNCwxMCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmFuZG9tCitpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTIyMCw4ICsyMjIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidyZXN1bHQgd2l0aCBhbiBlcnJvciBzZXRcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInVmFsdWVFcnJvclxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1RoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcbicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnInXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJ1N5c3RlbUVycm9yOiA8YnVpbHQtaW4gJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicidmdW5jdGlvbiByZXR1cm5fcmVzdWx0X3dpdGhfZXJyb3I+ICcKQEAgLTQ0Miw2ICs0NDQsNyBAQAogICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LnN0cmlwKCksIGV4cGVjdGVkX291dHB1dCkKIAorCiBjbGFzcyBTa2lwaXRlbVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfc2tpcGl0ZW0oc2VsZik6CkBAIC00OTEsMTAgKzQ5NCwxMCBAQAogICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHModHVwbGVfMSwgZGljdF9iLAogICAgICAgICAgICAgICAgICAgICBmb3JtYXQuZW5jb2RlKCJhc2NpaSIpLCBrZXl3b3JkcykKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIHMgPSAiYXJndW1lbnQgMSAoaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+KSIKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gKHN0cihlKSA9PSBzKQotICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgICAgICB3aGVuX25vdF9za2lwcGVkID0gRmFsc2UKIAogICAgICAgICAgICAgIyB0ZXN0IHRoZSBmb3JtYXQgdW5pdCB3aGVuIHNraXBwZWQKQEAgLTUwMyw3ICs1MDYsNyBAQAogICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMoZW1wdHlfdHVwbGUsIGRpY3RfYiwKICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxfZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCiAgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIHMgPSAiaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+OiAne30nIi5mb3JtYXQoZm9ybWF0KQogICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IChzdHIoZSkgPT0gcykKIApAQCAtNTI0LDYgKzUyNywzMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAoKSwge30sIGInJywgWzQyXSkKIAorICAgIGRlZiB0ZXN0X3Bvc2l0aW9uYWxfb25seShzZWxmKToKKyAgICAgICAgcGFyc2UgPSBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzCisKKyAgICAgICAgcGFyc2UoKDEsIDIsIDMpLCB7fSwgYidPT08nLCBbJycsICcnLCAnYSddKQorICAgICAgICBwYXJzZSgoMSwgMiksIHsnYSc6IDN9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgxIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHsnYSc6IDN9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098T08nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoKSwge30sIGInT3xPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCAyKSwgeydhJzogM30sIGInT08kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGV4YWN0bHkgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDEgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwgeydhJzogM30sIGInT08kTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098TyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKCksIHt9LCBiJ098TyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5c3RlbUVycm9yLCByJ0VtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyIFwkJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7fSwgYidPfCRPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeXN0ZW1FcnJvciwgJ0VtcHR5IGtleXdvcmQnKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098T08nLCBbJycsICdhJywgJyddKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBUZXN0VGhyZWFkU3RhdGUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01NDgsNiArNTc3LDcgQEAKICAgICAgICAgdC5zdGFydCgpCiAgICAgICAgIHQuam9pbigpCiAKKwogY2xhc3MgVGVzdF90ZXN0Y2FwaSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfX3Rlc3RjYXBpKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSBpbiBkaXIoX3Rlc3RjYXBpKToKQEAgLTU1Niw1ICs1ODYsODUgQEAKICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IGdldGF0dHIoX3Rlc3RjYXBpLCBuYW1lKQogICAgICAgICAgICAgICAgICAgICB0ZXN0KCkKIAorCitjbGFzcyBQeU1lbURlYnVnVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIFBZVEhPTk1BTExPQyA9ICdkZWJ1ZycKKyAgICAjICcweDA0YzA2ZTAnIG9yICcwNEMwNkUwJworICAgIFBUUl9SRUdFWCA9IHInKD86MHgpP1swLTlhLWZBLUZdKycKKworICAgIGRlZiBjaGVjayhzZWxmLCBjb2RlKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKKyAgICAgICAgICAgIG91dCA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLWMnLCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZVEhPTk1BTExPQz1zZWxmLlBZVEhPTk1BTExPQykKKyAgICAgICAgc3RkZXJyID0gb3V0LmVycgorICAgICAgICByZXR1cm4gc3RkZXJyLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCisKKyAgICBkZWYgdGVzdF9idWZmZXJfb3ZlcmZsb3coc2VsZik6CisgICAgICAgIG91dCA9IHNlbGYuY2hlY2soJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW1lbV9idWZmZXJfb3ZlcmZsb3coKScpCisgICAgICAgIHJlZ2V4ID0gKHIiRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD17cHRyfTogQVBJICdtJ1xuIgorICAgICAgICAgICAgICAgICByIiAgICAxNiBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZFxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHAtWzAtOV0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHRhaWw9e3B0cn0gYXJlIG5vdCBhbGwgRk9SQklEREVOQllURSBcKDB4WzAtOWEtZl17ezJ9fVwpOlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMDogMHg3OCBcKlwqXCogT1VDSFxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMTogMHhmYlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgYXQgdGFpbFwrMjogMHhmYlxuIgorICAgICAgICAgICAgICAgICByIiAgICAgICAgLipcbiIKKyAgICAgICAgICAgICAgICAgciIgICAgVGhlIGJsb2NrIHdhcyBtYWRlIGJ5IGNhbGwgI1swLTldKyB0byBkZWJ1ZyBtYWxsb2MvcmVhbGxvYy5cbiIKKyAgICAgICAgICAgICAgICAgciIgICAgRGF0YSBhdCBwOiBjYiBjYiBjYiAuKlxuIgorICAgICAgICAgICAgICAgICByIlxuIgorICAgICAgICAgICAgICAgICByIkZhdGFsIFB5dGhvbiBlcnJvcjogYmFkIHRyYWlsaW5nIHBhZCBieXRlIikKKyAgICAgICAgcmVnZXggPSByZWdleC5mb3JtYXQocHRyPXNlbGYuUFRSX1JFR0VYKQorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocmVnZXgsIGZsYWdzPXJlLkRPVEFMTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXQsIHJlZ2V4KQorCisgICAgZGVmIHRlc3RfYXBpX21pc3VzZShzZWxmKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjaygnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX2FwaV9taXN1c2UoKScpCisgICAgICAgIHJlZ2V4ID0gKHIiRGVidWcgbWVtb3J5IGJsb2NrIGF0IGFkZHJlc3MgcD17cHRyfTogQVBJICdtJ1xuIgorICAgICAgICAgICAgICAgICByIiAgICAxNiBieXRlcyBvcmlnaW5hbGx5IHJlcXVlc3RlZFxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHAtWzAtOV0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgWzAtOV0gcGFkIGJ5dGVzIGF0IHRhaWw9e3B0cn0gYXJlIEZPUkJJRERFTkJZVEUsIGFzIGV4cGVjdGVkLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjWzAtOV0rIHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBEYXRhIGF0IHA6IGNiIGNiIGNiIC4qXG4iCisgICAgICAgICAgICAgICAgIHIiXG4iCisgICAgICAgICAgICAgICAgIHIiRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgSUQ6IEFsbG9jYXRlZCB1c2luZyBBUEkgJ20nLCB2ZXJpZmllZCB1c2luZyBBUEkgJ3InXG4iKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChwdHI9c2VsZi5QVFJfUkVHRVgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0LCByZWdleCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1Rlc3QgcmVxdWlyZXMgYSBHSUwgKG11bHRpdGhyZWFkaW5nKScpCisgICAgZGVmIGNoZWNrX21hbGxvY193aXRob3V0X2dpbChzZWxmLCBjb2RlKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjayhjb2RlKQorICAgICAgICBleHBlY3RlZCA9ICgnRmF0YWwgUHl0aG9uIGVycm9yOiBQeXRob24gbWVtb3J5IGFsbG9jYXRvciBjYWxsZWQgJworICAgICAgICAgICAgICAgICAgICAnd2l0aG91dCBob2xkaW5nIHRoZSBHSUwnKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXQpCisKKyAgICBkZWYgdGVzdF9weW1lbV9tYWxsb2Nfd2l0aG91dF9naWwoc2VsZik6CisgICAgICAgICMgRGVidWcgaG9va3MgbXVzdCByYWlzZSBhbiBlcnJvciBpZiBQeU1lbV9NYWxsb2MoKSBpcyBjYWxsZWQKKyAgICAgICAgIyB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTAorICAgICAgICBjb2RlID0gJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW1lbV9tYWxsb2Nfd2l0aG91dF9naWwoKScKKyAgICAgICAgc2VsZi5jaGVja19tYWxsb2Nfd2l0aG91dF9naWwoY29kZSkKKworICAgIGRlZiB0ZXN0X3B5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbChzZWxmKToKKyAgICAgICAgIyBEZWJ1ZyBob29rcyBtdXN0IHJhaXNlIGFuIGVycm9yIGlmIFB5T2JqZWN0X01hbGxvYygpIGlzIGNhbGxlZAorICAgICAgICAjIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgIGNvZGUgPSAnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCgpJworICAgICAgICBzZWxmLmNoZWNrX21hbGxvY193aXRob3V0X2dpbChjb2RlKQorCisKK2NsYXNzIFB5TWVtTWFsbG9jRGVidWdUZXN0cyhQeU1lbURlYnVnVGVzdHMpOgorICAgIFBZVEhPTk1BTExPQyA9ICdtYWxsb2NfZGVidWcnCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1BZTUFMTE9DJykgPT0gMSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIHB5bWFsbG9jJykKK2NsYXNzIFB5TWVtUHltYWxsb2NEZWJ1Z1Rlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgUFlUSE9OTUFMTE9DID0gJ3B5bWFsbG9jX2RlYnVnJworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKFB5X0RFQlVHLCAnbmVlZCBQeV9ERUJVRycpCitjbGFzcyBQeU1lbURlZmF1bHRUZXN0cyhQeU1lbURlYnVnVGVzdHMpOgorICAgICMgdGVzdCBkZWZhdWx0IGFsbG9jYXRvciBvZiBQeXRob24gY29tcGlsZWQgaW4gZGVidWcgbW9kZQorICAgIFBZVEhPTk1BTExPQyA9ICcnCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKaW5kZXggYWI5ZjZhYi4uNjM3MzIyMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKQEAgLTcsNiArNyw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgSGFja2VkU3lzTW9kdWxlOgogICAgICMgVGhlIHJlZ3Jlc3Npb24gdGVzdCB3aWxsIGhhdmUgcmVhbCB2YWx1ZXMgaW4gc3lzLmFyZ3YsIHdoaWNoCkBAIC0xNDcsNyArMTQ4LDcgQEAKICAgICBkZWYgdGVzdF9lc2NhcGUoc2VsZik6CiAgICAgICAgICMgY2dpLmVzY2FwZSgpIGlzIGRlcHJlY2F0ZWQuCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnLCAnY2dpXC5lc2NhcGUnLAorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsIHInY2dpXC5lc2NhcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3QgJmFtcDsgc3RyaW5nIiwgY2dpLmVzY2FwZSgidGVzdCAmIHN0cmluZyIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJmx0O3Rlc3Qgc3RyaW5nJmd0OyIsIGNnaS5lc2NhcGUoIjx0ZXN0IHN0cmluZz4iKSkKQEAgLTQ3Myw2ICs0NzQsMTEgQEAKICAgICAgICAgICAgIGNnaS5wYXJzZV9oZWFkZXIoJ2Zvcm0tZGF0YTsgbmFtZT0iZmlsZXMiOyBmaWxlbmFtZT0iZm9cXCJvO2JhciInKSwKICAgICAgICAgICAgICgiZm9ybS1kYXRhIiwgeyJuYW1lIjogImZpbGVzIiwgImZpbGVuYW1lIjogJ2ZvIm87YmFyJ30pKQogCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7ImxvZ2ZpbGUiLCAibG9nZnAiLCAiaW5pdGxvZyIsICJkb2xvZyIsICJub2xvZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2xvc2Vsb2ciLCAibG9nIiwgIm1heGxlbiIsICJ2YWxpZF9ib3VuZGFyeSJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNnaSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogCiBCT1VOREFSWSA9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS03MjE4MzczNzMzNTA3MDU1MjY2ODgxNjQ2ODQiCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKaW5kZXggNDA2NGFlZi4uMGQ0NTk0ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKQEAgLTksNyArOSw3IEBACiAKICIiIiMiCiAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGNvZGVjcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQppbmRleCAxZjg4NGU1Li4wNDUxZmIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKQEAgLTQsNiArNCw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjbWF0aCwgbWF0aAogZnJvbSBjbWF0aCBpbXBvcnQgcGhhc2UsIHBvbGFyLCByZWN0LCBwaQoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiAKIElORiA9IGZsb2F0KCdpbmYnKQpAQCAtMTU0LDYgKzE1NiwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNtYXRoLmUsIGVfZXhwZWN0ZWQsIHBsYWNlcz05LAogICAgICAgICAgICAgbXNnPSJjbWF0aC5lIGlzIHt9OyBzaG91bGQgYmUge30iLmZvcm1hdChjbWF0aC5lLCBlX2V4cGVjdGVkKSkKIAorICAgIGRlZiB0ZXN0X2luZmluaXR5X2FuZF9uYW5fY29uc3RhbnRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZi5yZWFsLCBtYXRoLmluZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmYuaW1hZywgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZmoucmVhbCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZmouaW1hZywgbWF0aC5pbmYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oY21hdGgubmFuLnJlYWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLm5hbi5pbWFnLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGgubmFuai5yZWFsLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGNtYXRoLm5hbmouaW1hZykpCisKKyAgICAgICAgIyBDaGVjayBjb25zaXN0ZW5jeSB3aXRoIHJlcHJzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGguaW5mKSwgImluZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5pbmZqKSwgImluZmoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGgubmFuKSwgIm5hbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5uYW5qKSwgIm5hbmoiKQorCiAgICAgZGVmIHRlc3RfdXNlcl9vYmplY3Qoc2VsZik6CiAgICAgICAgICMgVGVzdCBhdXRvbWF0aWMgY2FsbGluZyBvZiBfX2NvbXBsZXhfXyBhbmQgX19mbG9hdF9fIGJ5IGNtYXRoCiAgICAgICAgICMgZnVuY3Rpb25zCkBAIC0zMTUsNiArMzM0LDE4IEBACiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9zcGVjaWZpY192YWx1ZXMoc2VsZik6CisgICAgICAgICMgU29tZSB0ZXN0cyBuZWVkIHRvIGJlIHNraXBwZWQgb24gYW5jaWVudCBPUyBYIHZlcnNpb25zLgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjc5NTMuCisgICAgICAgIFNLSVBfT05fVElHRVIgPSB7J3RhbjAwNjQnfQorCisgICAgICAgIG9zeF92ZXJzaW9uID0gTm9uZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLm1hY192ZXIoKVswXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgZGVmIHJlY3RfY29tcGxleCh6KToKICAgICAgICAgICAgICIiIldyYXBwZWQgdmVyc2lvbiBvZiByZWN0IHRoYXQgYWNjZXB0cyBhIGNvbXBsZXggbnVtYmVyIGluc3RlYWQgb2YKICAgICAgICAgICAgIHR3byBmbG9hdCBhcmd1bWVudHMuIiIiCkBAIC0zMjgsNiArMzU5LDEyIEBACiAgICAgICAgIGZvciBpZCwgZm4sIGFyLCBhaSwgZXIsIGVpLCBmbGFncyBpbiBwYXJzZV90ZXN0ZmlsZSh0ZXN0X2ZpbGUpOgogICAgICAgICAgICAgYXJnID0gY29tcGxleChhciwgYWkpCiAgICAgICAgICAgICBleHBlY3RlZCA9IGNvbXBsZXgoZXIsIGVpKQorCisgICAgICAgICAgICAjIFNraXAgY2VydGFpbiB0ZXN0cyBvbiBPUyBYIDEwLjQuCisgICAgICAgICAgICBpZiBvc3hfdmVyc2lvbiBpcyBub3QgTm9uZSBhbmQgb3N4X3ZlcnNpb24gPCAoMTAsIDUpOgorICAgICAgICAgICAgICAgIGlmIGlkIGluIFNLSVBfT05fVElHRVI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgIGlmIGZuID09ICdyZWN0JzoKICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHJlY3RfY29tcGxleAogICAgICAgICAgICAgZWxpZiBmbiA9PSAncG9sYXInOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKaW5kZXggM2QyZjc2OS4uODc1NzFkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CkBAIC0zNDgsOCArMzQ4LDkgQEAKICAgICAgICAgICAgIHRlc3Quc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCkuX19lbnRlcl9fKCkKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJ3gnKQogICAgICAgICAgICAgb3MuY2xvc2Uoc3lzLnN0ZG91dC5maWxlbm8oKSkiIiIKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMjAsIHJjKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gaWdub3JlZCBpbi4qXG5PU0Vycm9yOiAuKicpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKaW5kZXggYmVmZTBlNC4uMzhjYjJlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKQEAgLTEzOCw5ICsxMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlLCBleHBlY3RlZF9sb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNtZF9saW5lX3N3aXRjaGVzKToKLSAgICAgICAgaWYgbm90IF9fZGVidWdfXzoKLSAgICAgICAgICAgIGNtZF9saW5lX3N3aXRjaGVzICs9ICgnLScgKyAnTycgKiBzeXMuZmxhZ3Mub3B0aW1pemUsKQotICAgICAgICBydW5fYXJncyA9IGNtZF9saW5lX3N3aXRjaGVzICsgKHNjcmlwdF9uYW1lLCkgKyB0dXBsZShleGFtcGxlX2FyZ3MpCisgICAgICAgIHJ1bl9hcmdzID0gWypzdXBwb3J0Lm9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpLAorICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMsIHNjcmlwdF9uYW1lLCAqZXhhbXBsZV9hcmdzXQogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCpydW5fYXJncywgX19pc29sYXRlZD1GYWxzZSkKICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0ICsgZXJyLCBleHBlY3RlZF9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLApAQCAtNDI5LDcgKzQyOCw3IEBACiAgICAgICAgICAgICAoJ2J1aWx0aW5zLngnLCBicidFcnJvciB3aGlsZSBmaW5kaW5nIG1vZHVsZSBzcGVjaWZpY2F0aW9uLionCiAgICAgICAgICAgICAgICAgYnInQXR0cmlidXRlRXJyb3InKSwKICAgICAgICAgICAgICgnYnVpbHRpbnMueC55JywgYnInRXJyb3Igd2hpbGUgZmluZGluZyBtb2R1bGUgc3BlY2lmaWNhdGlvbi4qJwotICAgICAgICAgICAgICAgIGJyJ0ltcG9ydEVycm9yLipObyBtb2R1bGUgbmFtZWQuKm5vdCBhIHBhY2thZ2UnKSwKKyAgICAgICAgICAgICAgICBicidNb2R1bGVOb3RGb3VuZEVycm9yLipObyBtb2R1bGUgbmFtZWQuKm5vdCBhIHBhY2thZ2UnKSwKICAgICAgICAgICAgICgnb3MucGF0aCcsIGJyJ2xvYWRlci4qY2Fubm90IGhhbmRsZScpLAogICAgICAgICAgICAgKCdpbXBvcnRsaWInLCBicidObyBtb2R1bGUgbmFtZWQuKicKICAgICAgICAgICAgICAgICBicidpcyBhIHBhY2thZ2UgYW5kIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCcpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKaW5kZXggMzM5NGIzOS4uMWE4ZjY5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgICMgd2l0aCBiYW5uZXIKICAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQogICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPSdGb28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAzKQogICAgICAgICBiYW5uZXJfY2FsbCA9IHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsc1swXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhbm5lcl9jYWxsLCBbJ3dyaXRlJywgKCdGb29cbicsKSwge31dKQogCkBAIC03Nyw4ICs3NywzNiBAQAogICAgICAgICBzZWxmLnN0ZGVyci5yZXNldF9tb2NrKCkKICAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQogICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAyKQorCisgICAgZGVmIHRlc3RfZXhpdF9tc2coc2VsZik6CisgICAgICAgICMgZGVmYXVsdCBleGl0IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAyKQorICAgICAgICBlcnJfbXNnID0gc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzWzFdCisgICAgICAgIGV4cGVjdGVkID0gJ25vdyBleGl0aW5nIEludGVyYWN0aXZlQ29uc29sZS4uLlxuJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycl9tc2csIFsnd3JpdGUnLCAoZXhwZWN0ZWQsKSwge31dKQorCisgICAgICAgICMgbm8gZXhpdCBtZXNzYWdlCisgICAgICAgIHNlbGYuc3RkZXJyLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycsIGV4aXRtc2c9JycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDEpCiAKKyAgICAgICAgIyBjdXN0b20gZXhpdCBtZXNzYWdlCisgICAgICAgIHNlbGYuc3RkZXJyLnJlc2V0X21vY2soKQorICAgICAgICBtZXNzYWdlID0gKAorICAgICAgICAgICAgJ2J5ZSEgXE57R1JFRUsgU01BTEwgTEVUVEVSIFpFVEF9XE57Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRX0nCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJywgZXhpdG1zZz1tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAyKQorICAgICAgICBlcnJfbXNnID0gc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzWzFdCisgICAgICAgIGV4cGVjdGVkID0gbWVzc2FnZSArICdcbicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJfbXNnLCBbJ3dyaXRlJywgKGV4cGVjdGVkLCksIHt9XSkKKworCiAgICAgZGVmIHRlc3RfY2F1c2VfdGIoc2VsZik6CiAgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gWyJyYWlzZSBWYWx1ZUVycm9yKCcnKSBmcm9tIEF0dHJpYnV0ZUVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVPRkVycm9yKCdGaW5pc2hlZCcpXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKaW5kZXggZWUxZTI4YS4uNmEzZTk5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHVuaWNvZGVkYXRhCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogCiBjbGFzcyBQb3NSZXR1cm46CiAgICAgIyB0aGlzIGNhbiBiZSB1c2VkIGZvciBjb25maWd1cmFibGUgY2FsbGJhY2tzCkBAIC0yODEsMTIgKzI4MCwxMiBAQAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGIiXFx1MzA0Mlx1M3h4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCisgICAgICAgICAgICBiIlxcdTMwNDJcXHUzeHh4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKICAgICAgICAgICAgICJcdTMwNDJbPDkyPjwxMTc+PDUxPl14eHgiCiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgYiJcXHUzMDQyXHUzeHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAorICAgICAgICAgICAgYiJcXHUzMDQyXFx1M3h4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKICAgICAgICAgICAgICJcdTMwNDJbPDkyPjwxMTc+PDUxPl14eCIKICAgICAgICAgKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQppbmRleCBkMGUzYTE1Li4zYmRmN2QwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIFBSQyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggYmI5YmUxMS4uYzVlMmY5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBIb25nS29uZyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CmluZGV4IDhhM2NhNzAuLjAwZWExYzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKQEAgLTEsNiArMSw1IEBACiAjIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBJU08gMjAyMiBlbmNvZGluZ3MuCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKaW5kZXggNDRiNjNhMC4uOTQzNzhkMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBKYXBhbmVzZSBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKaW5kZXggYjZhNzRmYi4uODYzZDE2YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBST0sgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IDkxNzQyOTYuLmJiMWQxMzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgUk9DIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5CmluZGV4IGYxYmQzODQuLjg5ZTUxYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIFBSQyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CmluZGV4IDRjMGM0MTUuLjdhNDhkMjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIEhvbmdLb25nIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKaW5kZXggNTc3MzgyMy4uZmRmZWM4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgSmFwYW5lc2UgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQppbmRleCA2Y2I0MWM4Li40NzFjZDc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBST0sgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQppbmRleCAyZWE0NGI1Li4xNDVhOTdkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBST0MgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQppbmRleCAwMTNlYzY0Li4xZTYzZWQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQpAQCAtNCwxNiArNCwxMCBAQAogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBlbmNvZGluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIFZJU1RBX09SX0xBVEVSID0gKHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yID49IDYpCi1lbHNlOgotICAgIFZJU1RBX09SX0xBVEVSID0gRmFsc2UKLQogdHJ5OgogICAgIGltcG9ydCBjdHlwZXMKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTI3LDYgKzIxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlcihpbnB1dCksIChleHBlY3QsIGxlbihpbnB1dCkpKQogICAgIHJldHVybiBjaGVjawogCisKIGNsYXNzIFF1ZXVlKG9iamVjdCk6CiAgICAgIiIiCiAgICAgcXVldWU6IHdyaXRlIGJ5dGVzIGF0IG9uZSBlbmQsIHJlYWQgYnl0ZXMgZnJvbSB0aGUgb3RoZXIgZW5kCkBAIC00Nyw2ICs0Miw3IEBACiAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2l6ZTpdCiAgICAgICAgICAgICByZXR1cm4gcwogCisKIGNsYXNzIE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nOgogICAgIGRlZiBjaGVja19zdGF0ZV9oYW5kbGluZ19kZWNvZGUoc2VsZiwgZW5jb2RpbmcsIHUsIHMpOgogICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocykrMSk6CkBAIC04MCw2ICs3Niw3IEBACiAgICAgICAgICAgICBwYXJ0MiA9IGQuZW5jb2RlKHVbaTpdLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBwYXJ0MStwYXJ0MikKIAorCiBjbGFzcyBSZWFkVGVzdChNaXhJbkNoZWNrU3RhdGVIYW5kbGluZyk6CiAgICAgZGVmIGNoZWNrX3BhcnRpYWwoc2VsZiwgaW5wdXQsIHBhcnRpYWxyZXN1bHRzKToKICAgICAgICAgIyBnZXQgYSBTdHJlYW1SZWFkZXIgZm9yIHRoZSBlbmNvZGluZyBhbmQgZmVlZCB0aGUgYnl0ZXN0cmluZyB2ZXJzaW9uCkBAIC0zNTgsNiArMzU1LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiWz9dIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAKKyAgICAgICAgIyBzZXF1ZW50aWFsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdUQ4MDBcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgImlnbm9yZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEODAwXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIls/P10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKKwogICAgICAgICBib20gPSAiIi5lbmNvZGUoc2VsZi5lbmNvZGluZykKICAgICAgICAgZm9yIGJlZm9yZSwgYWZ0ZXIgaW4gWygiXFUwMDAxMGZmZiIsICJBIiksICgiWyIsICJdIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkEiLCAiXFUwMDAxMGZmZiIpXToKQEAgLTM4Myw2ICszODYsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3NlcXVlbmNlLmRlY29kZShzZWxmLmVuY29kaW5nLCAiYmFja3NsYXNocmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgKyBiYWNrc2xhc2hyZXBsYWNlICsgYWZ0ZXIpCiAKKwogY2xhc3MgVVRGMzJUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyIgogICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CkBAIC00NzgsNiArNDgyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDAwMCcgKiAxMDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy51dGZfMzJfZGVjb2RlKGVuY29kZWRfYmUpWzBdKQogCisKIGNsYXNzIFVURjMyTEVUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyLWxlIgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2UgPSBiIlx4ODBceGRjXHgwMFx4MDAiCkBAIC01MjMsNiArNTI4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDAwMCcgKiAxMDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy51dGZfMzJfbGVfZGVjb2RlKGVuY29kZWQpWzBdKQogCisKIGNsYXNzIFVURjMyQkVUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyLWJlIgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2UgPSBiIlx4MDBceDAwXHhkY1x4ODAiCkBAIC03NDcsNiArNzUzLDcgQEAKICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlID0gYiJceGVkXHhiMlx4ODAiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZV9yZXBsYWNlID0gIlx1ZmZmZCIgKiAzCisgICAgQk9NID0gYicnCiAKICAgICBkZWYgdGVzdF9wYXJ0aWFsKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3BhcnRpYWwoCkBAIC03NzUsMjcgKzc4Miw0OSBAQAogICAgICAgICBzZWxmLmNoZWNrX3N0YXRlX2hhbmRsaW5nX2RlY29kZShzZWxmLmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1LmVuY29kZShzZWxmLmVuY29kaW5nKSkKIAorICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjODBcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCAnW1xceDgwXFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKHNlbGYuZW5jb2RpbmcsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CiAgICAgICAgIHN1cGVyKCkudGVzdF9sb25lX3N1cnJvZ2F0ZXMoKQogICAgICAgICAjIG5vdCBzdXJlIGlmIHRoaXMgaXMgbWFraW5nIHNlbnNlIGZvcgogICAgICAgICAjIFVURi0xNiBhbmQgVVRGLTMyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoJ3V0Zi04JywgInN1cnJvZ2F0ZWVzY2FwZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInW1x4ODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlZXNjYXBlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiJ1tceDgwXScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgIltcdURDODBcdUQ4MDBcdURGRkZdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5vYmplY3RbZXhjLnN0YXJ0OmV4Yy5lbmRdLCAnXHVEODAwXHVERkZGJykKIAogICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJhYmNceGVkXHhhMFx4ODBkZWYiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmNcdWQ4MDBkZWYiLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYiJhYmNceGVkXHhhMFx4ODBkZWYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcVTAwMDEwZmZmXHVEODAwIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdUQ4MDBcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGInW1x4ZWRceGEwXHg4MFx4ZWRceGIyXHg4MF0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJhYmNceGVkXHhhMFx4ODBkZWYiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNcdWQ4MDBkZWYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcVTAwMDEwZmZmXHVEODAwIi5lbmNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCisKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvZGVjcy5sb29rdXBfZXJyb3IoInN1cnJvZ2F0ZXBhc3MiKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IpOgotICAgICAgICAgICAgYiJhYmNceGVkXHhhMCIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIikKKyAgICAgICAgICAgIGIiYWJjXHhlZFx4YTAiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKLSAgICAgICAgICAgIGIiYWJjXHhlZFx4YTB6Ii5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKQorICAgICAgICAgICAgYiJhYmNceGVkXHhhMHoiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCiAgICAgICAgICAgICAgICAgICAgICAnY3A2NTAwMSBpcyBhIFdpbmRvd3Mtb25seSBjb2RlYycpCkBAIC04MDcsMTggKzgzNiwxMyBAQAogICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKICAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGMzXHhhOVx4ZTJceDgyXHhhYycpLAogICAgICAgICAgICAgKCdcVTAwMTBmZmZmJywgJ3N0cmljdCcsIGInXHhmNFx4OGZceGJmXHhiZicpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAncmVwbGFjZScsIGInPycpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnYmFja3NsYXNocmVwbGFjZScsIGInXFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnbmFtZXJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3N1cnJvZ2F0ZXBhc3MnLCBiJ1x4ZWRceGIyXHg4MCcpLAogICAgICAgICBdCi0gICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgotICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnbmFtZXJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKLSAgICAgICAgICAgICkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQoKCdcdWRjODAnLCAnc3RyaWN0JywgYidceGVkXHhiMlx4ODAnKSkKICAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CiAgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC04NDUsMTcgKzg2OSwxMCBAQAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ2lnbm9yZScsICdbXScpLAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZF0nKSwKICAgICAgICAgICAgIChiJ1tceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRcdWZmZmRdJyksCiAgICAgICAgIF0KLSAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6Ci0gICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAotICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsIE5vbmUpLAotICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAotICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKLSAgICAgICAgICAgICkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAotICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsICdbXHVkYzgwXScpLAotICAgICAgICAgICAgKSkKICAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTg3MCw3ICs4ODcsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgcmF3LmRlY29kZSwgJ2NwNjUwMDEnLCBlcnJvcnMpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhWSVNUQV9PUl9MQVRFUiwgJ3JlcXVpcmUgV2luZG93cyBWaXN0YSBvciBsYXRlcicpCiAgICAgZGVmIHRlc3RfbG9uZV9zdXJyb2dhdGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsICJcdWQ4MDAiLmVuY29kZSwgImNwNjUwMDEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIiXHhlZFx4YTBceDgwIi5kZWNvZGUsICJjcDY1MDAxIikKQEAgLTg4Nyw3ICs5MDMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1s/XScpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhWSVNUQV9PUl9MQVRFUiwgJ3JlcXVpcmUgV2luZG93cyBWaXN0YSBvciBsYXRlcicpCiAgICAgZGVmIHRlc3Rfc3Vycm9nYXRlcGFzc19oYW5kbGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmNcdWQ4MDBkZWYiLmVuY29kZSgiY3A2NTAwMSIsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYiJhYmNceGVkXHhhMFx4ODBkZWYiKQpAQCAtMTA1OSw2ICsxMDc0LDcgQEAKIAogY2xhc3MgVVRGOFNpZ1Rlc3QoVVRGOFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtOC1zaWciCisgICAgQk9NID0gY29kZWNzLkJPTV9VVEY4CiAKICAgICBkZWYgdGVzdF9wYXJ0aWFsKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3BhcnRpYWwoCkBAIC0xMTU5LDcgKzExNzUsNyBAQAogICAgICAgICBjaGVjayhiIltcXFxuXSIsIGIiW10iKQogICAgICAgICBjaGVjayhicidbXCJdJywgYidbIl0nKQogICAgICAgICBjaGVjayhiciJbXCddIiwgYiJbJ10iKQotICAgICAgICBjaGVjayhiciJbXFxdIiwgYnIiW1xdIikKKyAgICAgICAgY2hlY2soYnIiW1xcXSIsIGIiW1xcXSIpCiAgICAgICAgIGNoZWNrKGJyIltcYV0iLCBiIltceDA3XSIpCiAgICAgICAgIGNoZWNrKGJyIltcYl0iLCBiIltceDA4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcdF0iLCBiIltceDA5XSIpCkBAIC0xMTY4LDcgKzExODQsNiBAQAogICAgICAgICBjaGVjayhiciJbXGZdIiwgYiJbXHgwY10iKQogICAgICAgICBjaGVjayhiciJbXHJdIiwgYiJbXHgwZF0iKQogICAgICAgICBjaGVjayhiciJbXDddIiwgYiJbXHgwN10iKQotICAgICAgICBjaGVjayhiciJbXDhdIiwgYnIiW1w4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNzhdIiwgYiJbXHgwNzhdIikKICAgICAgICAgY2hlY2soYnIiW1w0MV0iLCBiIlshXSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDE4XSIsIGIiWyE4XSIpCkBAIC0xMTc2LDEyICsxMTkxLDE4IEBACiAgICAgICAgIGNoZWNrKGJyIltcMTAxMF0iLCBiIltBMF0iKQogICAgICAgICBjaGVjayhiciJbXDUwMV0iLCBiIltBXSIpCiAgICAgICAgIGNoZWNrKGJyIltceDQxXSIsIGIiW0FdIikKLSAgICAgICAgY2hlY2soYnIiW1xYNDFdIiwgYnIiW1xYNDFdIikKICAgICAgICAgY2hlY2soYnIiW1x4NDEwXSIsIGIiW0EwXSIpCi0gICAgICAgIGZvciBiIGluIHJhbmdlKDI1Nik6Ci0gICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ1xuIlwnXFxhYnRudmZyMDEyMzQ1Njd4JzoKLSAgICAgICAgICAgICAgICBiID0gYnl0ZXMoW2JdKQotICAgICAgICAgICAgICAgIGNoZWNrKGInXFwnICsgYiwgYidcXCcgKyBiKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg5NywgMTIzKToKKyAgICAgICAgICAgIGIgPSBieXRlcyhbaV0pCisgICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ2FiZm5ydHZ4JzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLCBiIlxcIiArIGIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIudXBwZXIoKSwgYiJcXCIgKyBiLnVwcGVyKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDgiLCBiIlxcOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDkiLCBiIlxcOSIpCiAKICAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CiAgICAgICAgIGRlY29kZSA9IGNvZGVjcy5lc2NhcGVfZGVjb2RlCkBAIC0xMTk0LDYgKzEyMTUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZShiciJbXHgwXVx4MCIsICJpZ25vcmUiKSwgKGIiW10iLCA4KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGUoYnIiW1x4MF1ceDAiLCAicmVwbGFjZSIpLCAoYiJbP10/IiwgOCkpCiAKKwogY2xhc3MgUmVjb2RpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZWNvZGluZyhzZWxmKToKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQpAQCAtMTMxMyw2ICsxMzM1LDcgQEAKICAgICBpZiBsZW4oaSkhPTI6CiAgICAgICAgIHByaW50KHJlcHIoaSkpCiAKKwogY2xhc3MgUHVueWNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CiAgICAgICAgIGZvciB1bmksIHB1bnkgaW4gcHVueWNvZGVfdGVzdGNhc2VzOgpAQCAtMTMzMiw2ICsxMzU1LDcgQEAKICAgICAgICAgICAgIHB1bnkgPSBwdW55LmRlY29kZSgiYXNjaWkiKS5lbmNvZGUoImFzY2lpIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pLCBwdW55LmRlY29kZSgicHVueWNvZGUiKSkKIAorCiBjbGFzcyBVbmljb2RlSW50ZXJuYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTSVpFT0ZfV0NIQVJfVCA9PSA0LCAnc3BlY2lmaWMgdG8gMzItYml0IHdjaGFyX3QnKQogICAgIGRlZiB0ZXN0X2J1ZzEyNTEzMDAoc2VsZik6CkBAIC0xNTg2LDYgKzE2MTAsNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJUZXN0IDMuJWQ6ICVzIiAlIChwb3MrMSwgc3RyKGUpKSkKIAorCiBjbGFzcyBJRE5BQ29kZWNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWlsdGluX2RlY29kZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYiJweXRob24ub3JnIiwgImlkbmEiKSwgInB5dGhvbi5vcmciKQpAQCAtMTY3Miw2ICsxNjk3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICBiInB5dGhvbi5vcmciLmRlY29kZSwgImlkbmEiLCBlcnJvcnMpCiAKKwogY2xhc3MgQ29kZWNzTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CkBAIC0xNzgwLDYgKzE4MDYsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLAogICAgICAgICAgICAgICAgIGNvZGVjcy5kZWNvZGUsIGInYWJjJywgJ3VuZGVmaW5lZCcsIGVycm9ycykKIAorCiBjbGFzcyBTdHJlYW1SZWFkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE3OTAsNiArMTgxNyw3IEBACiAgICAgICAgIGYgPSBzZWxmLnJlYWRlcihzZWxmLnN0cmVhbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBbJ1x1ZDU1Y1xuJywgJ1x1YWUwMCddKQogCisKIGNsYXNzIEVuY29kZWRGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKQEAgLTE5MDksNiArMTkzNyw4IEBACiAKIGlmIGhhc2F0dHIoY29kZWNzLCAibWJjc19lbmNvZGUiKToKICAgICBhbGxfdW5pY29kZV9lbmNvZGluZ3MuYXBwZW5kKCJtYmNzIikKK2lmIGhhc2F0dHIoY29kZWNzLCAib2VtX2VuY29kZSIpOgorICAgIGFsbF91bmljb2RlX2VuY29kaW5ncy5hcHBlbmQoIm9lbSIpCiAKICMgVGhlIGZvbGxvd2luZyBlbmNvZGluZyBpcyBub3QgdGVzdGVkLCBiZWNhdXNlIGl0J3Mgbm90IHN1cHBvc2VkCiAjIHRvIHdvcms6CkBAIC0xOTIwLDYgKzE5NTAsNyBAQAogICAgICJ1bmljb2RlX2ludGVybmFsIgogXQogCisKIGNsYXNzIEJhc2ljVW5pY29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UsIE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nKToKICAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CiAgICAgICAgIHMgPSAiYWJjMTIzIiAgIyBhbGwgY29kZWNzIHNob3VsZCBiZSBhYmxlIHRvIGVuY29kZSB0aGVzZQpAQCAtMjA4Miw2ICsyMTEzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXRlX2hhbmRsaW5nX2RlY29kZShlbmNvZGluZywgdSwgdS5lbmNvZGUoZW5jb2RpbmcpKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfaGFuZGxpbmdfZW5jb2RlKGVuY29kaW5nLCB1LCB1LmVuY29kZShlbmNvZGluZykpCiAKKwogY2xhc3MgQ2hhcm1hcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2RlY29kZV93aXRoX3N0cmluZ19tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0yMzMyLDYgKzIzNjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5zdHJlYW13cml0ZXIsICdzdHJpY3QnKSBhcyBzcnc6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNydy5yZWFkKCksICJceGZjIikKIAorCiBjbGFzcyBUeXBlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2RlY29kZV91bmljb2RlKHNlbGYpOgogICAgICAgICAjIE1vc3QgZGVjb2RlcnMgZG9uJ3QgYWNjZXB0IHVuaWNvZGUgaW5wdXQKQEAgLTI0MjAsNyArMjQ1Myw2IEBACiAgICAgICAgIGNoZWNrKGJyIltcZl0iLCAiW1x4MGNdIikKICAgICAgICAgY2hlY2soYnIiW1xyXSIsICJbXHgwZF0iKQogICAgICAgICBjaGVjayhiciJbXDddIiwgIltceDA3XSIpCi0gICAgICAgIGNoZWNrKGJyIltcOF0iLCByIltcOF0iKQogICAgICAgICBjaGVjayhiciJbXDc4XSIsICJbXHgwNzhdIikKICAgICAgICAgY2hlY2soYnIiW1w0MV0iLCAiWyFdIikKICAgICAgICAgY2hlY2soYnIiW1w0MThdIiwgIlshOF0iKQpAQCAtMjQzMCw5ICsyNDYyLDE4IEBACiAgICAgICAgIGNoZWNrKGJyIltceDQxMF0iLCAiW0EwXSIpCiAgICAgICAgIGNoZWNrKGJyIlx1MjBhYyIsICJcdTIwYWMiKQogICAgICAgICBjaGVjayhiciJcVTAwMDFkMTIwIiwgIlxVMDAwMWQxMjAiKQotICAgICAgICBmb3IgYiBpbiByYW5nZSgyNTYpOgotICAgICAgICAgICAgaWYgYiBub3QgaW4gYidcbiJcJ1xcYWJ0bnZmcjAxMjM0NTY3eHVVTic6Ci0gICAgICAgICAgICAgICAgY2hlY2soYidcXCcgKyBieXRlcyhbYl0pLCAnXFwnICsgY2hyKGIpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg5NywgMTIzKToKKyAgICAgICAgICAgIGIgPSBieXRlcyhbaV0pCisgICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ2FiZm5ydHV2eCc6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYiwgIlxcIiArIGNocihpKSkKKyAgICAgICAgICAgIGlmIGIudXBwZXIoKSBub3QgaW4gYidVTic6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYi51cHBlcigpLCAiXFwiICsgY2hyKGktMzIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw4IiwgIlxcOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDkiLCAiXFw5IikKIAogICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcnMoc2VsZik6CiAgICAgICAgIGRlY29kZSA9IGNvZGVjcy51bmljb2RlX2VzY2FwZV9kZWNvZGUKQEAgLTI2NDIsNiArMjY4Myw3IEBACiAgICAgYnl0ZXNfdHJhbnNmb3JtX2VuY29kaW5ncy5hcHBlbmQoImJ6Ml9jb2RlYyIpCiAgICAgdHJhbnNmb3JtX2FsaWFzZXNbImJ6Ml9jb2RlYyJdID0gWyJiejIiXQogCisKIGNsYXNzIFRyYW5zZm9ybUNvZGVjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CkBAIC0yNjk0LDggKzI3MzYsOCBAQAogICAgICAgICBiYWRfaW5wdXQgPSAiYmFkIGlucHV0IHR5cGUiCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBieXRlc190cmFuc2Zvcm1fZW5jb2RpbmdzOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW5jb2Rpbmc9ZW5jb2RpbmcpOgotICAgICAgICAgICAgICAgIGZtdCA9ICggInshcn0gaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICAgZm10ID0gKHIieyFyfSBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCisgICAgICAgICAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KGVuY29kaW5nKQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKSBhcyBmYWlsdXJlOgogICAgICAgICAgICAgICAgICAgICBiYWRfaW5wdXQuZW5jb2RlKGVuY29kaW5nKQpAQCAtMjcwNCw3ICsyNzQ2LDcgQEAKICAgICBkZWYgdGVzdF90ZXh0X3RvX2JpbmFyeV9ibGFja2xpc3RzX3RleHRfdHJhbnNmb3JtcyhzZWxmKToKICAgICAgICAgIyBDaGVjayBzdHIuZW5jb2RlIGdpdmVzIGEgZ29vZCBlcnJvciBtZXNzYWdlIGZvciBzdHIgLT4gc3RyIGNvZGVjcwogICAgICAgICBtc2cgPSAociJeJ3JvdF8xMycgaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAianVzdCBhbiBleGFtcGxlIG1lc3NhZ2UiLmVuY29kZSgicm90XzEzIikKIApAQCAtMjcxNiw3ICsyNzU4LDcgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVuY29kaW5nPWVuY29kaW5nKToKICAgICAgICAgICAgICAgICBlbmNvZGVkX2RhdGEgPSBjb2RlY3MuZW5jb2RlKGRhdGEsIGVuY29kaW5nKQogICAgICAgICAgICAgICAgIGZtdCA9IChyInshcn0gaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KGVuY29kaW5nKQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKToKICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9kYXRhLmRlY29kZShlbmNvZGluZykKQEAgLTI3MjgsNyArMjc3MCw3IEBACiAgICAgICAgIGZvciBiYWRfaW5wdXQgaW4gKGIiaW1tdXRhYmxlIiwgYnl0ZWFycmF5KGIibXV0YWJsZSIpKToKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJhZF9pbnB1dD1iYWRfaW5wdXQpOgogICAgICAgICAgICAgICAgIG1zZyA9IChyIl4ncm90XzEzJyBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKSBhcyBmYWlsdXJlOgogICAgICAgICAgICAgICAgICAgICBiYWRfaW5wdXQuZGVjb2RlKCJyb3RfMTMiKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZhaWx1cmUuZXhjZXB0aW9uLl9fY2F1c2VfXykKQEAgLTI5NDcsMTIgKzI5ODksMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBiIm5vdCBzdHIhIikKICAgICAgICAgIyBUZXh0IG1vZGVsIG1ldGhvZHMgc2hvdWxkIGNvbXBsYWluCiAgICAgICAgIGZtdCA9IChyIl57IXJ9IGVuY29kZXIgcmV0dXJuZWQgJ3N0cicgaW5zdGVhZCBvZiAnYnl0ZXMnOyAiCi0gICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBlbmNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCisgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBlbmNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCiAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoc2VsZi5jb2RlY19uYW1lKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgInN0cl9pbnB1dCIuZW5jb2RlKHNlbGYuY29kZWNfbmFtZSkKICAgICAgICAgZm10ID0gKHIiXnshcn0gZGVjb2RlciByZXR1cm5lZCAnYnl0ZXMnIGluc3RlYWQgb2YgJ3N0cic7ICIKLSAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGRlY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKKyAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGRlY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKICAgICAgICAgbXNnID0gZm10LmZvcm1hdChzZWxmLmNvZGVjX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICBiImJ5dGVzIGlucHV0Ii5kZWNvZGUoc2VsZi5jb2RlY19uYW1lKQpAQCAtMzA5MywxMSArMzEzNSwxMCBAQAogICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAnaWdub3JlJywgJ1xVMDAxMGZmZmYnKSwKICAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ3JlcGxhY2UnLCAnXHVmZmZkXFUwMDEwZmZmZicpLAogICAgICAgICApKQotICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAotICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCi0gICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAncmVwbGFjZScsIGInW1x4ZjRceDhmXHhiZlx4YmY/XScpLAotICAgICAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoc2VsZi5DUF9VVEY4LCAoCisgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdpZ25vcmUnLCBiJ1tceGY0XHg4Zlx4YmZceGJmXScpLAorICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAncmVwbGFjZScsIGInW1x4ZjRceDhmXHhiZlx4YmY/XScpLAorICAgICAgICApKQogCiAgICAgZGVmIHRlc3RfaW5jcmVtZW50YWwoc2VsZik6CiAgICAgICAgIGRlY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSg5MzIsIGInXHg4MicsICdzdHJpY3QnLCBGYWxzZSkKQEAgLTMxMTgsNiArMzE1OSw5NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCdhYmMnLCAzKSkKIAorICAgIGRlZiB0ZXN0X21iY3NfYWxpYXMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBsb29raW5nIHVwIG91ciAnZGVmYXVsdCcgY29kZXBhZ2Ugd2lsbCByZXR1cm4KKyAgICAgICAgIyBtYmNzIHdoZW4gd2UgZG9uJ3QgaGF2ZSBhIG1vcmUgc3BlY2lmaWMgb25lIGF2YWlsYWJsZQorICAgICAgICBpbXBvcnQgX2Jvb3Rsb2NhbGUKKyAgICAgICAgZGVmIF9nZXRfZmFrZV9jb2RlcGFnZSgqYSk6CisgICAgICAgICAgICByZXR1cm4gJ2NwMTIzJworICAgICAgICBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZworICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9nZXRfZmFrZV9jb2RlcGFnZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb2RlYyA9IGNvZGVjcy5sb29rdXAoJ2NwMTIzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWMubmFtZSwgJ21iY3MnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcKKworCitjbGFzcyBBU0NJSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjMTIzJy5lbmNvZGUoJ2FzY2lpJyksIGInYWJjMTIzJykKKworICAgIGRlZiB0ZXN0X2VuY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY10nLCAncmVwbGFjZScsIGInWz8/P10nKSwKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjMTI4OyYjMjU1OyYjODM2NDtdJyksCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY1xVMDAwYWJjZGVdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLAorICAgICAgICAgICAgIGInW1xceDgwXFx4ZmZcXHUyMGFjXFxVMDAwYWJjZGVdJyksCisgICAgICAgICAgICAoJ1tcdWRjODBcdWRjZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsIGInW1x4ODBceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmVuY29kZSgnYXNjaWknLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX3N1cnJvZ2F0ZWVzY2FwZV9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IpOgorICAgICAgICAgICAgIyB0aGUgZmlyc3QgY2hhcmFjdGVyIGNhbiBiZSBkZWNvZGVkLCBidXQgbm90IHRoZSBzZWNvbmQKKyAgICAgICAgICAgICdcdWRjODBceGZmJy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidhYmMnLmRlY29kZSgnYXNjaWknKSwgJ2FiYycpCisKKyAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkYzgwXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgJ1tcXHg4MFxceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgnYXNjaWknLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisKK2NsYXNzIExhdGluMVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgnYWJjJywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHg4MFx4ZTlceGZmJywgYidceDgwXHhlOVx4ZmYnKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5lbmNvZGUoJ2xhdGluMScpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kZV9lcnJvcnMoc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ1tcdTIwYWNcdWRjODBdJywgJ2lnbm9yZScsIGInW10nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY1x1ZGM4MF0nLCAncmVwbGFjZScsIGInWz8/XScpLAorICAgICAgICAgICAgKCdbXHUyMGFjXFUwMDBhYmNkZV0nLCAnYmFja3NsYXNocmVwbGFjZScsCisgICAgICAgICAgICAgYidbXFx1MjBhY1xcVTAwMGFiY2RlXScpLAorICAgICAgICAgICAgKCdbXHUyMGFjXHVkYzgwXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjODM2NDsmIzU2NDQ4O10nKSwKKyAgICAgICAgICAgICgnW1x1ZGM4MFx1ZGNmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgYidbXHg4MFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZW5jb2RlKCdsYXRpbjEnLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX3N1cnJvZ2F0ZWVzY2FwZV9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IpOgorICAgICAgICAgICAgIyB0aGUgZmlyc3QgY2hhcmFjdGVyIGNhbiBiZSBkZWNvZGVkLCBidXQgbm90IHRoZSBzZWNvbmQKKyAgICAgICAgICAgICdcdWRjODBcdTIwYWMnLmVuY29kZSgnbGF0aW4xJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoYidhYmMnLCAnYWJjJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ1tceDgwXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoJ2xhdGluMScpLCBleHBlY3RlZCkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQppbmRleCA1MDliZjVkLi45OGRhMjZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQpAQCAtMjgyLDcgKzI4Miw2IEBACiAgICAgICAgIGFpKCJpZiAoYSA9PSAxIGFuZCBiID0gMik6IHBhc3MiKQogCiAgICAgICAgIGFpKCJkZWwgMSIpCi0gICAgICAgIGFpKCJkZWwgKCkiKQogICAgICAgICBhaSgiZGVsICgxLCkiKQogICAgICAgICBhaSgiZGVsIFsxXSIpCiAgICAgICAgIGFpKCJkZWwgJzEnIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CmluZGV4IDUyMzgzODIuLjUyZmYyNTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQpAQCAtMjAsMTAgKzIwLDEwIEBACiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBBd2FpdGFibGUsIENvcm91dGluZSwgQXN5bmNJdGVyYXRvciwgQXN5bmNJdGVyYWJsZQotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIEdlbmVyYXRvcgotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgR2VuZXJhdG9yLCBSZXZlcnNpYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGUsIENvbGxlY3Rpb24KIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXQsIE11dGFibGVTZXQKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldworZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3LCBWYWx1ZXNWaWV3CiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2VxdWVuY2UsIE11dGFibGVTZXF1ZW5jZQogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEJ5dGVTdHJpbmcKIApAQCAtMjQyLDYgKzI0MiwxMCBAQAogICAgICAgICBdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lZHR1cGxlKCdOVCcsIHNwZWMsIHJlbmFtZT1UcnVlKS5fZmllbGRzLCByZW5hbWVkKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsneCcsICd5J10sIG1vZHVsZT1jb2xsZWN0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVC5fX21vZHVsZV9fLCBjb2xsZWN0aW9ucykKKwogICAgIGRlZiB0ZXN0X2luc3RhbmNlKHNlbGYpOgogICAgICAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpCiAgICAgICAgIHAgPSBQb2ludCgxMSwgMjIpCkBAIC00MTIsNiArNDE2LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlRDb2xvci5fZmllbGRzLCAoJ3JlZCcsICdncmVlbicsICdibHVlJykpCiAgICAgICAgIGdsb2JhbHMoKS5wb3AoJ05UQ29sb3InLCBOb25lKSAgICAgICAgICAjIGNsZWFuLXVwIGFmdGVyIHRoaXMgdGVzdAogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9vbmx5X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgMjU2MjgKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHRlbXBsYXRlOgorICAgICAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsneCcsICd5J10sIHZlcmJvc2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY2xhc3MgTlQnLCBOVC5fc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWyd4JywgJ3knXSwgVHJ1ZSkKKworICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWydhYmMnLCAnZGVmJ10sIHJlbmFtZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5ULl9maWVsZHMsICgnYWJjJywgJ18xJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ2FiYycsICdkZWYnXSwgRmFsc2UsIFRydWUpCiAKICAgICBkZWYgdGVzdF9uYW1lZHR1cGxlX3N1YmNsYXNzX2lzc3VlXzI0OTMxKHNlbGYpOgogICAgICAgICBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdfUG9pbnQnLCBbJ3gnLCAneSddKSk6CkBAIC00ODcsNiArNTAzLDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdGhlci5yaWdodF9zaWRlLCdSaWdodCBzaWRlIG5vdCBjYWxsZWQgZm9yICVzLiVzJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHR5cGUoaW5zdGFuY2UpLCBuYW1lKSkKIAorZGVmIF90ZXN0X2dlbigpOgorICAgIHlpZWxkCisKIGNsYXNzIFRlc3RPbmVUcmlja1BvbnlBQkNzKEFCQ1Rlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X0F3YWl0YWJsZShzZWxmKToKQEAgLTY3NCw3ICs2OTMsNyBAQAogICAgICAgICBzYW1wbGVzID0gW2J5dGVzKCksIHN0cigpLAogICAgICAgICAgICAgICAgICAgIHR1cGxlKCksIGxpc3QoKSwgc2V0KCksIGZyb3plbnNldCgpLCBkaWN0KCksCiAgICAgICAgICAgICAgICAgICAgZGljdCgpLmtleXMoKSwgZGljdCgpLml0ZW1zKCksIGRpY3QoKS52YWx1ZXMoKSwKLSAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CkBAIC02ODgsNiArNzA3LDE2MSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc3RyLCBJKSkKICAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKEl0ZXJhYmxlLCAnX19pdGVyX18nKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2lzaW5zdGFuY2UoSXRlcmFibGUsICdfX2l0ZXJfXycpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZworICAgICAgICBjbGFzcyBJdDoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgIGNsYXNzIEl0QmxvY2tlZChJdCk6CisgICAgICAgICAgICBfX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoSXQsIEl0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoSXQoKSwgSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoSXRCbG9ja2VkLCBJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShJdEJsb2NrZWQoKSwgSXRlcmFibGUpKQorCisgICAgZGVmIHRlc3RfUmV2ZXJzaWJsZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1yZXZlcnNpYmxlcworICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosIGRpY3QoKSwgc2V0KCksIGZyb3plbnNldCgpXQorICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBSZXZlcnNpYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIFJldmVyc2libGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLXJldmVyc2libGUgaXRlcmFibGVzCisgICAgICAgIG5vbl9yZXZlcnNpYmxlcyA9IFtkaWN0KCkua2V5cygpLCBkaWN0KCkuaXRlbXMoKSwgZGljdCgpLnZhbHVlcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlcigpLCBDb3VudGVyKCkua2V5cygpLCBDb3VudGVyKCkuaXRlbXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIoKS52YWx1ZXMoKSwgX3Rlc3RfZ2VuKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksIGl0ZXIoW10pLCByZXZlcnNlZChbXSldCisgICAgICAgIGZvciB4IGluIG5vbl9yZXZlcnNpYmxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBSZXZlcnNpYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIFJldmVyc2libGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgcmV2ZXJzaWJsZSBpdGVyYWJsZXMKKyAgICAgICAgc2FtcGxlcyA9IFtieXRlcygpLCBzdHIoKSwgdHVwbGUoKSwgbGlzdCgpLCBPcmRlcmVkRGljdCgpLAorICAgICAgICAgICAgICAgICAgIE9yZGVyZWREaWN0KCkua2V5cygpLCBPcmRlcmVkRGljdCgpLml0ZW1zKCksCisgICAgICAgICAgICAgICAgICAgT3JkZXJlZERpY3QoKS52YWx1ZXMoKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBSZXZlcnNpYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgUmV2ZXJzaWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgYWxzbyBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgYW5kIFNlcXVlbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNlcXVlbmNlLCBSZXZlcnNpYmxlKSwgcmVwcihTZXF1ZW5jZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhNYXBwaW5nLCBSZXZlcnNpYmxlKSwgcmVwcihNYXBwaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKE11dGFibGVNYXBwaW5nLCBSZXZlcnNpYmxlKSwgcmVwcihNdXRhYmxlTWFwcGluZykpCisgICAgICAgICMgQ2hlY2sgZGlyZWN0IHN1YmNsYXNzaW5nCisgICAgICAgIGNsYXNzIFIoUmV2ZXJzaWJsZSk6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICAgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChSKCkpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhmbG9hdCwgUikpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhSZXZlcnNpYmxlLCAnX19yZXZlcnNlZF9fJywgJ19faXRlcl9fJykKKyAgICAgICAgIyBDaGVjayByZXZlcnNpYmxlIG5vbi1pdGVyYWJsZSAod2hpY2ggaXMgbm90IFJldmVyc2libGUpCisgICAgICAgIGNsYXNzIFJldk5vSXRlcjoKKyAgICAgICAgICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6IHJldHVybiByZXZlcnNlZChbXSkKKyAgICAgICAgY2xhc3MgUmV2UGx1c0l0ZXIoUmV2Tm9JdGVyKToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhSZXZOb0l0ZXIsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoUmV2Tm9JdGVyKCksIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhSZXZQbHVzSXRlciwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKFJldlBsdXNJdGVyKCksIFJldmVyc2libGUpKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcKKyAgICAgICAgY2xhc3MgUmV2OgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6IHJldHVybiByZXZlcnNlZChbXSkKKyAgICAgICAgY2xhc3MgUmV2SXRCbG9ja2VkKFJldik6CisgICAgICAgICAgICBfX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgY2xhc3MgUmV2UmV2QmxvY2tlZChSZXYpOgorICAgICAgICAgICAgX19yZXZlcnNlZF9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhSZXYsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShSZXYoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhSZXZJdEJsb2NrZWQsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoUmV2SXRCbG9ja2VkKCksIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoUmV2UmV2QmxvY2tlZCwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShSZXZSZXZCbG9ja2VkKCksIFJldmVyc2libGUpKQorCisgICAgZGVmIHRlc3RfQ29sbGVjdGlvbihzZWxmKToKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1jb2xsZWN0aW9ucworICAgICAgICBub25fY29sbGVjdGlvbnMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLCBsYW1iZGEgeDogMip4XQorICAgICAgICBmb3IgeCBpbiBub25fY29sbGVjdGlvbnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBDb2xsZWN0aW9uKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1jb2xsZWN0aW9uIGl0ZXJhYmxlcworICAgICAgICBub25fY29sX2l0ZXJhYmxlcyA9IFtfdGVzdF9nZW4oKSwgaXRlcihiJycpLCBpdGVyKGJ5dGVhcnJheSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLCBkaWN0KCkudmFsdWVzKCldCisgICAgICAgIGZvciB4IGluIG5vbl9jb2xfaXRlcmFibGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIENvbGxlY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29sbGVjdGlvbiksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBjb2xsZWN0aW9ucworICAgICAgICBzYW1wbGVzID0gW3NldCgpLCBmcm96ZW5zZXQoKSwgZGljdCgpLCBieXRlcygpLCBzdHIoKSwgdHVwbGUoKSwKKyAgICAgICAgICAgICAgICAgICBsaXN0KCksIGRpY3QoKS5rZXlzKCksIGRpY3QoKS5pdGVtcygpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIENvbGxlY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBDb2xsZWN0aW9uKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBhbHNvIE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBldGMuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNlcXVlbmNlLCBDb2xsZWN0aW9uKSwgcmVwcihTZXF1ZW5jZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hcHBpbmcsIENvbGxlY3Rpb24pLCByZXByKE1hcHBpbmcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNdXRhYmxlTWFwcGluZywgQ29sbGVjdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKE11dGFibGVNYXBwaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2V0LCBDb2xsZWN0aW9uKSwgcmVwcihTZXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNdXRhYmxlU2V0LCBDb2xsZWN0aW9uKSwgcmVwcihNdXRhYmxlU2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2VxdWVuY2UsIENvbGxlY3Rpb24pLCByZXByKE11dGFibGVTZXQpKQorICAgICAgICAjIENoZWNrIGRpcmVjdCBzdWJjbGFzc2luZworICAgICAgICBjbGFzcyBDb2woQ29sbGVjdGlvbik6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIERlckNvbChDb2wpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKENvbCgpKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MobGlzdCwgQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHNldCwgQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGZsb2F0LCBDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihEZXJDb2woKSkpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGxpc3QsIERlckNvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzZXQsIERlckNvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhmbG9hdCwgRGVyQ29sKSkKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKENvbGxlY3Rpb24sICdfX2xlbl9fJywgJ19faXRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2NvbnRhaW5zX18nKQorICAgICAgICAjIENoZWNrIHNpemVkIGNvbnRhaW5lciBub24taXRlcmFibGUgKHdoaWNoIGlzIG5vdCBDb2xsZWN0aW9uKSBldGMuCisgICAgICAgIGNsYXNzIENvbE5vSXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKTogcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIENvbE5vU2l6ZToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOiByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgQ29sTm9Db250OgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29sTm9JdGVyLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvbE5vSXRlcigpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbE5vU2l6ZSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb2xOb1NpemUoKSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb2xOb0NvbnQsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29sTm9Db250KCksIENvbGxlY3Rpb24pKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcKKyAgICAgICAgY2xhc3MgU2l6ZUJsb2NrOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZik6IHJldHVybiBGYWxzZQorICAgICAgICAgICAgX19sZW5fXyA9IE5vbmUKKyAgICAgICAgY2xhc3MgSXRlckJsb2NrOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYpOiByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgX19pdGVyX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhTaXplQmxvY2ssIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoU2l6ZUJsb2NrKCksIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoSXRlckJsb2NrLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKEl0ZXJCbG9jaygpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nIGluIHN1YmNsYXNzCisgICAgICAgIGNsYXNzIENvbEltcGw6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIE5vbkNvbChDb2xJbXBsKToKKyAgICAgICAgICAgIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKE5vbkNvbCwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShOb25Db2woKSwgQ29sbGVjdGlvbikpCisKIAogICAgIGRlZiB0ZXN0X0l0ZXJhdG9yKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosIGIiIiwgIiIsICgpLCBbXSwge30sIHNldCgpXQpAQCAtNjk5LDcgKzg3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgaXRlcihzZXQoKSksIGl0ZXIoZnJvemVuc2V0KCkpLAogICAgICAgICAgICAgICAgICAgIGl0ZXIoZGljdCgpLmtleXMoKSksIGl0ZXIoZGljdCgpLml0ZW1zKCkpLAogICAgICAgICAgICAgICAgICAgIGl0ZXIoZGljdCgpLnZhbHVlcygpKSwKLSAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CkBAIC03ODcsNyArOTYxLDcgQEAKIAogICAgIGRlZiB0ZXN0X1NpemVkKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04MDUsNyArOTc5LDcgQEAKIAogICAgIGRlZiB0ZXN0X0NvbnRhaW5lcihzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAotICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgpAQCAtODI0LDcgKzk5OCw3IEBACiAgICAgZGVmIHRlc3RfQ2FsbGFibGUoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKICAgICAgICAgICAgICAgICAgICAgICAgIiIsIGIiIiwgKCksIFtdLCB7fSwgc2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04NDIsMTQgKzEwMTYsMTQgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9pc2luc3RhbmNlKENhbGxhYmxlLCAnX19jYWxsX18nKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0X3N1YmNsYXNzaW5nKHNlbGYpOgotICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKKyAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgUmV2ZXJzaWJsZSwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CiAgICAgICAgICAgICBjbGFzcyBDKEIpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIEIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGludCwgQykpCiAKICAgICBkZWYgdGVzdF9yZWdpc3RyYXRpb24oc2VsZik6Ci0gICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgorICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBSZXZlcnNpYmxlLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgX19oYXNoX18gPSBOb25lICAjIE1ha2Ugc3VyZSBpdCBpc24ndCBoYXNoYWJsZSBieSBkZWZhdWx0CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQywgQiksIEIuX19uYW1lX18pCkBAIC0xMDQ5LDYgKzEyMjMsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuY3MgPiBjcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jcyA+PSBjcykKIAorICAgIGRlZiB0ZXN0X2lzc3VlMjY5MTUoc2VsZik6CisgICAgICAgICMgQ29udGFpbmVyIG1lbWJlcnNoaXAgdGVzdCBzaG91bGQgY2hlY2sgaWRlbnRpdHkgZmlyc3QKKyAgICAgICAgY2xhc3MgQ3VzdG9tRXF1YWxPYmplY3Q6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgQ3VzdG9tU2VxdWVuY2UobGlzdCk6CisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gU2VxdWVuY2UuX19jb250YWluc19fKHNlbGYsIHZhbHVlKQorCisgICAgICAgIG5hbiA9IGZsb2F0KCduYW4nKQorICAgICAgICBvYmogPSBDdXN0b21FcXVhbE9iamVjdCgpCisgICAgICAgIGNvbnRhaW5lcnMgPSBbCisgICAgICAgICAgICBDdXN0b21TZXF1ZW5jZShbbmFuLCBvYmpdKSwKKyAgICAgICAgICAgIEl0ZW1zVmlldyh7MTogbmFuLCAyOiBvYmp9KSwKKyAgICAgICAgICAgIFZhbHVlc1ZpZXcoezE6IG5hbiwgMjogb2JqfSkKKyAgICAgICAgXQorICAgICAgICBmb3IgY29udGFpbmVyIGluIGNvbnRhaW5lcnM6CisgICAgICAgICAgICBmb3IgZWxlbSBpbiBjb250YWluZXI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBjb250YWluZXIpCisKICAgICBkZWYgYXNzZXJ0U2FtZVNldChzZWxmLCBzMSwgczIpOgogICAgICAgICAjIGNvZXJjZSBib3RoIHRvIGEgcmVhbCBzZXQgdGhlbiBjaGVjayBlcXVhbGl0eQogICAgICAgICBzZWxmLmFzc2VydFNldEVxdWFsKHNldChzMSksIHNldChzMikpCkBAIC0xMjE5LDYgKzE0MTMsNyBAQAogICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKCgpKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2NvbXBhcmlzb24oTXlNYXBwaW5nKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIE15TWFwcGluZygpKQogCiAgICAgZGVmIHRlc3RfTXV0YWJsZU1hcHBpbmcoc2VsZik6CiAgICAgICAgIGZvciBzYW1wbGUgaW4gW2RpY3RdOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CmluZGV4IDgyNGU4NDMuLjQwOWVjODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKQEAgLTQ3MywxMCArNDczLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgezE6IDIsIDM6IDR9KQogCiAgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlbmFtZShzZWxmKToKLSAgICAgICAgZm9yIGZpbGVuYW1lIGluICgnZmlsZS5weScsIGInZmlsZS5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpKToKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluICdmaWxlLnB5JywgYidmaWxlLnB5JzoKICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKCdwYXNzJywgZmlsZW5hbWUsICdleGVjJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoJ3Bhc3MnLCBmaWxlbmFtZSwgJ2V4ZWMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgJ3Bhc3MnLCBsaXN0KGInZmlsZS5weScpLCAnZXhlYycpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKQEAgLTY2MSw2ICs2NjQsMTYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYxKDApKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZjIoMC4wKSkKIAorICAgIGRlZiB0ZXN0X3BhdGhfbGlrZV9vYmplY3RzKHNlbGYpOgorICAgICAgICAjIEFuIGltcGxpY2l0IHRlc3QgZm9yIFB5VW5pY29kZV9GU0RlY29kZXIoKS4KKyAgICAgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGgKKyAgICAgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoCisKKyAgICAgICAgY29tcGlsZSgiNDIiLCBQYXRoTGlrZSgidGVzdF9jb21waWxlX3BhdGhsaWtlIiksICJzaW5nbGUiKQorCiAKIGNsYXNzIFRlc3RTdGFja1NpemUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCB0aGUgY29tcHV0ZWQgc3RhY2sgc2l6ZSBmb3IgYSBjb2RlIG9iamVjdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CmluZGV4IDJjZThhNjEuLjIzNTZlZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgY29tcGlsZWFsbAogaW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsCiBpbXBvcnQgb3MKIGltcG9ydCBwYXRobGliCiBpbXBvcnQgcHlfY29tcGlsZQpAQCAtNDAsNiArNDEsMTEgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5kaXJlY3RvcnkpCiAKKyAgICBkZWYgYWRkX2JhZF9zb3VyY2VfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5iYWRfc291cmNlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksICdfdGVzdF9iYWQucHknKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5iYWRfc291cmNlX3BhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoJ3ggKFxuJykKKwogICAgIGRlZiBkYXRhKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oc2VsZi5iY19wYXRoLCAncmInKSBhcyBmaWxlOgogICAgICAgICAgICAgZGF0YSA9IGZpbGUucmVhZCg4KQpAQCAtNzgsMTUgKzg0LDQ3IEBACiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2ZpbGUoc2VsZi5zb3VyY2VfcGF0aCwgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLnNvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgyKSkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aCkKLSAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBmb3JjZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9VHJ1ZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoMikpCiAgICAgICAgIG9zLnVubGluayhzZWxmLmJjX3BhdGgpCiAgICAgICAgIG9zLnVubGluayhzZWxmLmJjX3BhdGgyKQorICAgICAgICAjIFRlc3QgYWdhaW5zdCBiYWQgZmlsZXMKKyAgICAgICAgc2VsZi5hZGRfYmFkX3NvdXJjZV9maWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLmJhZF9zb3VyY2VfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1GYWxzZSwgcXVpZXQ9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPUZhbHNlLCBxdWlldD0yKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfZmlsZV9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorICAgICAgICAjIHdlIHNob3VsZCBhbHNvIHRlc3QgdGhlIG91dHB1dAorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHBhdGhsaWIuUGF0aChzZWxmLnNvdXJjZV9wYXRoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3Rkb3V0LmdldHZhbHVlKCksIHInQ29tcGlsaW5nIChbXldpbmRvd3NQYXRofFBvc2l4UGF0aF0uKiknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfZmlsZV9wYXRobGlrZV9kZGlyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShwYXRobGliLlBhdGgoc2VsZi5zb3VyY2VfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZGlyPXBhdGhsaWIuUGF0aCgnZGRpcl9wYXRoJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldD0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3BhdGgoc2VsZik6CisgICAgICAgIHdpdGggdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtzZWxmLmRpcmVjdG9yeV0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9wYXRoKHF1aWV0PTIpKQorCisgICAgICAgIHdpdGggdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtzZWxmLmRpcmVjdG9yeV0pOgorICAgICAgICAgICAgc2VsZi5hZGRfYmFkX3NvdXJjZV9maWxlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPVRydWUsIHF1aWV0PTIpKQogCiAgICAgZGVmIHRlc3Rfbm9fcHljYWNoZV9pbl9ub25fcGFja2FnZShzZWxmKToKICAgICAgICAgIyBCdWcgODU2MyByZXBvcnRlZCB0aGF0IF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGdvdCBjcmVhdGVkIGJ5CkBAIC0xMTUsNiArMTUzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkMykpCiAKKyAgICBkZWYgdGVzdF9jb21waWxlX2Rpcl9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgorICAgICAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihwYXRobGliLlBhdGgoc2VsZi5kaXJlY3RvcnkpKQorICAgICAgICBsaW5lID0gc3Rkb3V0LmdldHZhbHVlKCkuc3BsaXRsaW5lcygpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobGluZSwgcidMaXN0aW5nIChbXldpbmRvd3NQYXRofFBvc2l4UGF0aF0uKiknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKwogICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLlByb2Nlc3NQb29sRXhlY3V0b3InKQogICAgIGRlZiB0ZXN0X2NvbXBpbGVfcG9vbF9jYWxsZWQoc2VsZiwgcG9vbF9tb2NrKToKICAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgcXVpZXQ9VHJ1ZSwgd29ya2Vycz01KQpAQCAtMTk3LDEwICsyNDMsOSBAQAogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ25vdCBhbGwgZW50cmllcyBvbiBzeXMucGF0aCBhcmUgd3JpdGFibGUnKQogCiAgICAgZGVmIF9nZXRfcnVuX2FyZ3Moc2VsZiwgYXJncyk6Ci0gICAgICAgIGludGVycF9hcmdzID0gWyctUyddCi0gICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZToKLSAgICAgICAgICAgIGludGVycF9hcmdzLmFwcGVuZCh7MSA6ICctTycsIDIgOiAnLU9PJ31bc3lzLmZsYWdzLm9wdGltaXplXSkKLSAgICAgICAgcmV0dXJuIGludGVycF9hcmdzICsgWyctbScsICdjb21waWxlYWxsJ10gKyBsaXN0KGFyZ3MpCisgICAgICAgIHJldHVybiBbKnN1cHBvcnQub3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCksCisgICAgICAgICAgICAgICAgJy1TJywgJy1tJywgJ2NvbXBpbGVhbGwnLAorICAgICAgICAgICAgICAgICphcmdzXQogCiAgICAgZGVmIGFzc2VydFJ1bk9LKHNlbGYsICphcmdzLCAqKmVudl92YXJzKToKICAgICAgICAgcmMsIG91dCwgZXJyID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CmluZGV4IDQwM2VlM2IuLmMyNDljYTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKQEAgLTEsNSArMSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogCiBmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZG9tCiBmcm9tIG1hdGggaW1wb3J0IGF0YW4yLCBpc25hbiwgY29weXNpZ24KQEAgLTM4NSw2ICszODcsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjb21wbGV4KGNvbXBsZXgxKDFqKSksIDJqKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBsZXgsIGNvbXBsZXgyKDFqKSkKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVzKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHVuZGVyc2NvcmVzCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAneFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4KGxpdCksIGV2YWwobGl0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgobGl0KSwgY29tcGxleChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbGl0IGluICgnMF83JywgJzA5Xzk5Jyk6ICAjIG9jdGFscyBhcmUgbm90IHJlY29nbml6ZWQgaGVyZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ3hYb09iQicpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbXBsZXgsIGxpdCkKKwogICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CiAgICAgICAgIGZvciB4IGluIHJhbmdlKC0zMCwgMzApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHgpLCBoYXNoKGNvbXBsZXgoeCwgMCkpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCA3NTEzODE1Li4yM2U5NWIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtMTU0LDYgKzE1NCwzMCBAQAogICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgogICAgICAgICAgICAgdC5qb2luKCkKIAorICAgIGRlZiB0ZXN0X3RocmVhZF9uYW1lc19hc3NpZ25lZChzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBmdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcigKKyAgICAgICAgICAgIG1heF93b3JrZXJzPTUsIHRocmVhZF9uYW1lX3ByZWZpeD0nU3BlY2lhbFBvb2wnKQorICAgICAgICBleGVjdXRvci5tYXAoYWJzLCByYW5nZSgtNSwgNSkpCisgICAgICAgIHRocmVhZHMgPSBleGVjdXRvci5fdGhyZWFkcworICAgICAgICBkZWwgZXhlY3V0b3IKKworICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0Lm5hbWUsIHInXlNwZWNpYWxQb29sX1swLTRdJCcpCisgICAgICAgICAgICB0LmpvaW4oKQorCisgICAgZGVmIHRlc3RfdGhyZWFkX25hbWVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIGV4ZWN1dG9yID0gZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9NSkKKyAgICAgICAgZXhlY3V0b3IubWFwKGFicywgcmFuZ2UoLTUsIDUpKQorICAgICAgICB0aHJlYWRzID0gZXhlY3V0b3IuX3RocmVhZHMKKyAgICAgICAgZGVsIGV4ZWN1dG9yCisKKyAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKKyAgICAgICAgICAgICMgV2UgZG9uJ3QgcGFydGljdWxhcmx5IGNhcmUgd2hhdCB0aGUgZGVmYXVsdCBuYW1lIGlzLCBqdXN0IHRoYXQKKyAgICAgICAgICAgICMgaXQgaGFzIGEgZGVmYXVsdCBuYW1lIGltcGx5aW5nIHRoYXQgaXQgaXMgYSBUaHJlYWRQb29sRXhlY3V0b3IKKyAgICAgICAgICAgICMgZm9sbG93ZWQgYnkgd2hhdCBsb29rcyBsaWtlIGEgdGhyZWFkIG51bWJlci4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodC5uYW1lLCByJ14uKlRocmVhZFBvb2xFeGVjdXRvci4qX1swLTRdJCcpCisgICAgICAgICAgICB0LmpvaW4oKQorCiAKIGNsYXNzIFByb2Nlc3NQb29sU2h1dGRvd25UZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yU2h1dGRvd25UZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9wcmltZV9leGVjdXRvcihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKaW5kZXggNzFhOGYzZi4uMmIwODE5OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKQEAgLTIwNTIsNSArMjA1MiwxMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsiRXJyb3IifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjb25maWdwYXJzZXIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CmluZGV4IDNjNmJkZWYuLjAzNmExZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQpAQCAtODQsNiArODQsMzEgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250YWluZXIgPT0gY29uc3RydWN0b3IodmFsdWVzKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250YWluZXIgPT0gY29udGFpbmVyKQogCisgICAgZGVmIHRlc3RfYmxvY2tfZmFsbGJhY2soc2VsZik6CisgICAgICAgICMgYmxvY2tpbmcgZmFsbGJhY2sgd2l0aCBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIGNsYXNzIEJ5Q29udGFpbnMob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjID0gQnlDb250YWlucygpCisgICAgICAgIGNsYXNzIEJsb2NrQ29udGFpbnMoQnlDb250YWlucyk6CisgICAgICAgICAgICAiIiJJcyBub3QgYSBjb250YWluZXIKKworICAgICAgICAgICAgVGhpcyBjbGFzcyBpcyBhIHBlcmZlY3RseSBnb29kIGl0ZXJhYmxlIChhcyB0ZXN0ZWQgYnkKKyAgICAgICAgICAgIGxpc3QoYmMpKSwgYXMgd2VsbCBhcyBpbmhlcml0aW5nIGZyb20gYSBwZXJmZWN0bHkgZ29vZAorICAgICAgICAgICAgY29udGFpbmVyLCBidXQgX19jb250YWluc19fID0gTm9uZSBwcmV2ZW50cyB0aGUgdXN1YWwKKyAgICAgICAgICAgIGZhbGxiYWNrIHRvIGl0ZXJhdGlvbiBpbiB0aGUgY29udGFpbmVyIHByb3RvY29sLiBUaGF0CisgICAgICAgICAgICBpcywgbm9ybWFsbHksIDAgaW4gYmMgd291bGQgZmFsbCBiYWNrIHRvIHRoZSBlcXVpdmFsZW50CisgICAgICAgICAgICBvZiBhbnkoeD09MCBmb3IgeCBpbiBiYyksIGJ1dCBoZXJlIGl0J3MgYmxvY2tlZCBmcm9tCisgICAgICAgICAgICBkb2luZyBzby4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHdoaWxlIEZhbHNlOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBOb25lCisgICAgICAgICAgICBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIGJjID0gQmxvY2tDb250YWlucygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiBjKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gbGlzdChiYykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAwIGluIGJjKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDUxNjQwM2UuLmMwNGM4MDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTEyLDYgKzEyLDM5IEBACiAgICAgdGhyZWFkaW5nID0gTm9uZQogCiAKK2NsYXNzIFRlc3RBYnN0cmFjdENvbnRleHRNYW5hZ2VyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2VudGVyKHNlbGYpOgorICAgICAgICBjbGFzcyBEZWZhdWx0RW50ZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19leGl0X18oKmFyZ3MpCisKKyAgICAgICAgbWFuYWdlciA9IERlZmF1bHRFbnRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFuYWdlci5fX2VudGVyX18oKSwgbWFuYWdlcikKKworICAgIGRlZiB0ZXN0X2V4aXRfaXNfYWJzdHJhY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIE1pc3NpbmdFeGl0KEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE1pc3NpbmdFeGl0KCkKKworICAgIGRlZiB0ZXN0X3N0cnVjdHVyYWxfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIE1hbmFnZXJGcm9tU2NyYXRjaDoKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFuYWdlckZyb21TY3JhdGNoLCBBYnN0cmFjdENvbnRleHRNYW5hZ2VyKSkKKworICAgICAgICBjbGFzcyBEZWZhdWx0RW50ZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19leGl0X18oKmFyZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVmYXVsdEVudGVyLCBBYnN0cmFjdENvbnRleHRNYW5hZ2VyKSkKKworCiBjbGFzcyBDb250ZXh0TWFuYWdlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRtYW5hZ2VyX3BsYWluKHNlbGYpOgpAQCAtODksNyArMTIyLDcgQEAKICAgICAgICAgZGVmIHdvb2hvbygpOgogICAgICAgICAgICAgeWllbGQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uIik6CiAgICAgICAgICAgICAgICAgd2l0aCB3b29ob28oKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc3RvcF9leGMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29weS5weSBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQppbmRleCAwZTFmNjcwLi40NWE2OTIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgIHRlc3RzID0gW05vbmUsIC4uLiwgTm90SW1wbGVtZW50ZWQsCiAgICAgICAgICAgICAgICAgIDQyLCAyKioxMDAsIDMuMTQsIFRydWUsIEZhbHNlLCAxaiwKICAgICAgICAgICAgICAgICAgImhlbGxvIiwgImhlbGxvXHUxMjM0IiwgZi5fX2NvZGVfXywKLSAgICAgICAgICAgICAgICAgYiJ3b3JsZCIsIGJ5dGVzKHJhbmdlKDI1NikpLCByYW5nZSgxMCksCisgICAgICAgICAgICAgICAgIGIid29ybGQiLCBieXRlcyhyYW5nZSgyNTYpKSwgcmFuZ2UoMTApLCBzbGljZSgxLCAxMCwgMiksCiAgICAgICAgICAgICAgICAgIE5ld1N0eWxlLCBDbGFzc2ljLCBtYXgsIFdpdGhNZXRhY2xhc3NdCiAgICAgICAgIGZvciB4IGluIHRlc3RzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LmNvcHkoeCksIHgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkgYi9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKaW5kZXggZTUyNjU0Yy4uZjI4MzlhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQpAQCAtNjksNTUgKzY5LDEzMCBAQAogY2xhc3MgQXN5bmNCYWRTeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICInYXdhaXQnIG91dHNpZGUiKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzEKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8yKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICInYXdhaXQnIG91dHNpZGUiKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzIKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8zKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMwotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzQoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM0Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzUKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF82KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBTeW50YXhFcnJvciwgIid5aWVsZCcgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik6Ci0KLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzYKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF83KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBTeW50YXhFcnJvciwgIid5aWVsZCBmcm9tJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKToKLQotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNwotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4Xzgoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM4Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfOShzZWxmKToKLSAgICAgICAgbnMgPSB7fQotICAgICAgICBmb3IgY29tcCBpbiB7Jyhhd2FpdCBhIGZvciBhIGluIGIpJywKLSAgICAgICAgICAgICAgICAgICAgICdbYXdhaXQgYSBmb3IgYSBpbiBiXScsCi0gICAgICAgICAgICAgICAgICAgICAne2F3YWl0IGEgZm9yIGEgaW4gYn0nLAotICAgICAgICAgICAgICAgICAgICAgJ3thd2FpdCBhOiBjIGZvciBhIGluIGJ9J306Ci0KLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2F3YWl0LippbiBjb21wcmVoZW4nKToKLSAgICAgICAgICAgICAgICBleGVjKCdhc3luYyBkZWYgZigpOlxuXHR7fScuZm9ybWF0KGNvbXApLCBucywgbnMpCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfMTAoc2VsZik6Ci0gICAgICAgICMgVGVzdHMgZm9yIGlzc3VlIDI0NjE5Ci0KICAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdCBzb21ldGhpbmcoKQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhd2FpdCBzb21ldGhpbmcoKSIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gW10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0IGZ1dAorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhOmF3YWl0IHNvbWV0aGluZygpKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYgorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGF3YWl0IGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXdhaXQgYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMgaWYgYXdhaXQgaV0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBhc3luYyBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGIKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGF3YWl0IGJdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscyBpZiBhd2FpdCBpXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQKKyAgICAgICAgICAgICIiIiwKKwogICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgogICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKTogcGFzcwogICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMQpAQCAtMjgzLDU3ICszNTgsMTEwIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpLCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgY29tcGlsZShjb2RlLCAiPHRlc3Q+IiwgImV4ZWMiKQogCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6CisgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIEJhcjoKKyAgICAgICAgICAgICAgICBkZWYgYXN5bmMoKTogcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBCYXI6CisgICAgICAgICAgICAgICAgYXN5bmMgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIGFzeW5jOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgYXdhaXQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJpbXBvcnQgbWF0aCBhcyBhd2FpdCIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGFzeW5jKCk6CisgICAgICAgICAgICAgICAgcGFzcyIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGZvbygqLCBhd2FpdD0xKToKKyAgICAgICAgICAgICAgICBwYXNzIiIiCisKKyAgICAgICAgICAgICIiImFzeW5jID0gMSIiIiwKKworICAgICAgICAgICAgIiIicHJpbnQoYXdhaXQ9MSkiIiIKKyAgICAgICAgXQorCisgICAgICAgIGZvciBjb2RlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpLCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoCisgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgIidhd2FpdCcgd2lsbCBiZWNvbWUgcmVzZXJ2ZWQga2V5d29yZHMiKToKKyAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQorICAgICAgICAgICAgICAgIGNvbXBpbGUoImFzeW5jID0gMSIsICI8dGVzdD4iLCAiZXhlYyIpCisKICAgICBkZWYgdGVzdF9nb29kc3ludGF4XzEoc2VsZik6CiAgICAgICAgICMgVGVzdHMgZm9yIGlzc3VlIDI0NjE5CiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDEwKSwgMTEpCisgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CiAKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwogCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKIAotICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgICIiInNwYW0iIiIKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogXAotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICMgMTIzCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgICMgNDU2Ci0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICAiIiJzcGFtIiIiCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBcCisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAjIDEyMworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgICMgNDU2CisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcmV0dXJuIGF3YWl0XwotICAgICAgICAgICAgYXdhaXRfID0gYXdhaXQKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBiYXIoKS5zZW5kKE5vbmUpCi0gICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbyg0MiksIDQyKQorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCisgICAgICAgICAgICAgICAgYXdhaXRfID0gYXdhaXQKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0gKyAxCisgICAgICAgICAgICAnJycKKyAgICAgICAgXQogCi0gICAgICAgIGFzeW5jIGRlZiBmKCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZygpOiBwYXNzCi0gICAgICAgICAgICBhd2FpdCB6Ci0gICAgICAgIGF3YWl0ID0gMQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGYpKQorICAgICAgICBmb3IgY29kZSBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29kZT1jb2RlKToKKyAgICAgICAgICAgICAgICBsb2MgPSB7fQorCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICAgICAgICAgIGV4ZWMoY29kZSwgbG9jLCBsb2MpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY1snZm9vJ10oMTApLCAxMSkKIAogCiBjbGFzcyBUb2tlbml6ZXJSZWdyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04OTEsNyArMTAxOSw3IEBACiAgICAgICAgICAgICByZXR1cm4gYXdhaXQgQXdhaXRhYmxlKCkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBUeXBlRXJyb3IsICJfX2F3YWl0X19cKFwpIHJldHVybmVkIGEgY29yb3V0aW5lIik6CisgICAgICAgICAgICBUeXBlRXJyb3IsIHIiX19hd2FpdF9fXChcKSByZXR1cm5lZCBhIGNvcm91dGluZSIpOgogCiAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKQEAgLTEzMzMsNyArMTQ2MSw3IEBACiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAogICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19haXRlci4qXDogSSIpOgorICAgICAgICAgICAgICAgIHIiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19haXRlci4qXDogSSIpOgogCiAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKQEAgLTE1MzcsNiArMTY2NSwxODUgQEAKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIikKICAgICAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKKyAgICBkZWYgdGVzdF9jb21wXzEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGkpOgorICAgICAgICAgICAgcmV0dXJuIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbYXdhaXQgYyBmb3IgYyBpbiBbZigxKSwgZig0MSldXQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2F3YWl0IGMgZm9yIGMgaW4gW2YoMSksIGYoNDEpXX0KKworICAgICAgICBhc3luYyBkZWYgcnVuX2RpY3QxKCk6CisgICAgICAgICAgICByZXR1cm4ge2F3YWl0IGM6ICdhJyBmb3IgYyBpbiBbZigxKSwgZig0MSldfQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdDIoKToKKyAgICAgICAgICAgIHJldHVybiB7aTogYXdhaXQgYyBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoW2YoMSksIGYoNDEpXSl9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2xpc3QoKSksIChbXSwgWzEsIDQxXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9zZXQoKSksIChbXSwgezEsIDQxfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9kaWN0MSgpKSwgKFtdLCB7MTogJ2EnLCA0MTogJ2EnfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9kaWN0MigpKSwgKFtdLCB7MDogMSwgMTogNDF9KSkKKworICAgIGRlZiB0ZXN0X2NvbXBfMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaSk6CisgICAgICAgICAgICByZXR1cm4gaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtzIGZvciBjIGluIFtmKCcnKSwgZignYWJjJyksIGYoJycpLCBmKFsnZGUnLCAnZmcnXSldCisgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGF3YWl0IGNdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWydhJywgJ2InLCAnYycsICdkZScsICdmZyddKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtkCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIFtmKFtmKFsxMCwgMzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYoWzIwXSldKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgYworICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBhd2FpdCBzfQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezEwLCAyMCwgMzB9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldDIoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgcworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBbZihbZigxMCksIGYoMjApXSldCisgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGF3YWl0IGN9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0MigpKSwKKyAgICAgICAgICAgIChbXSwgezEwLCAyMH0pKQorCisgICAgZGVmIHRlc3RfY29tcF8zKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbMTEsIDIxXSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7aSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSl9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezExLCAyMX0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMTogaSArIDIgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSl9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2RpY3QoKSksCisgICAgICAgICAgICAoW10sIHsxMTogMTIsIDIxOiAyMn0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZ2VuKCk6CisgICAgICAgICAgICBnZW4gPSAoaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkpCisgICAgICAgICAgICByZXR1cm4gW2cgKyAxMDAgYXN5bmMgZm9yIGcgaW4gZ2VuXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9nZW4oKSksCisgICAgICAgICAgICAoW10sIFsxMTEsIDEyMV0pKQorCisgICAgZGVmIHRlc3RfY29tcF80KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzIxXSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7aSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQoKSksCisgICAgICAgICAgICAoW10sIHsyMX0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMTogaSArIDIgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9kaWN0KCkpLAorICAgICAgICAgICAgKFtdLCB7MjE6IDIyfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9nZW4oKToKKyAgICAgICAgICAgIGdlbiA9IChpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTApCisgICAgICAgICAgICByZXR1cm4gW2cgKyAxMDAgYXN5bmMgZm9yIGcgaW4gZ2VuXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9nZW4oKSksCisgICAgICAgICAgICAoW10sIFsxMjFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaXQpOgorICAgICAgICAgICAgZm9yIGkgaW4gaXQ6CisgICAgICAgICAgICAgICAgeWllbGQgaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtpICsgMSBmb3IgcGFpciBpbiAoWzEwLCAyMF0sIFszMCwgNDBdKSBpZiBwYWlyWzBdID4gMTAKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gZihwYWlyKSBpZiBpID4gMzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFs0MV0pKQorCisgICAgZGVmIHRlc3RfY29tcF82KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBzZXEgaW4gZihbKDEwLCAyMCksICgzMCwpXSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gc2VxXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsxMSwgMjEsIDMxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzcoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2FhYScpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgYXN5bmMgZm9yIGkgaW4gZigpXQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICdhYWEnKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKQorCisgICAgZGVmIHRlc3RfY29tcF84KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgcmV0dXJuIFtpIGZvciBpIGluIFsxLCAyLCAzXV0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKGYoKSksCisgICAgICAgICAgICAoW10sIFsxLCAyLCAzXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzkoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIGwgPSBbaSBhc3luYyBmb3IgaSBpbiBnZW4oKV0KKyAgICAgICAgICAgIHJldHVybiBbaSBmb3IgaSBpbiBsXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgWzEsIDJdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfMTAoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICB4eCA9IHtpIGZvciBpIGluIFsxLCAyLCAzXX0KKyAgICAgICAgICAgIHJldHVybiB7eDogeCBmb3IgeCBpbiB4eH0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKGYoKSksCisgICAgICAgICAgICAoW10sIHsxOiAxLCAyOiAyLCAzOiAzfSkpCisKICAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgogICAgICAgICBhc3luYyBkZWYgZnVuYygpOiBwYXNzCiAgICAgICAgIGNvcm8gPSBmdW5jKCkKQEAgLTE2NjcsOCArMTk3NCw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCksIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCiAgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICJjb3JvdXRpbmUgd3JhcHBlci4qXC53cmFwcGVyIGF0IDB4LiphdHRlbXB0ZWQgdG8gIgotICAgICAgICAgICAgICAgICJyZWN1cnNpdmVseSB3cmFwIC4qIHdyYXAgLioiKToKKyAgICAgICAgICAgICAgICByImNvcm91dGluZSB3cmFwcGVyLipcLndyYXBwZXIgYXQgMHguKmF0dGVtcHRlZCB0byAiCisgICAgICAgICAgICAgICAgciJyZWN1cnNpdmVseSB3cmFwIC4qIHdyYXAgLioiKToKIAogICAgICAgICAgICAgICAgIGZvbygpCiAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQppbmRleCBmMTg5ODNmLi41M2Y4OTE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKQEAgLTYsNyArNiw3IEBACiAjIHJpcCBvZmYgYWxsIGludGVyZXN0aW5nIHN0dWZmIGZyb20gdGVzdF9wcm9maWxlCiBpbXBvcnQgY1Byb2ZpbGUKIGZyb20gdGVzdC50ZXN0X3Byb2ZpbGUgaW1wb3J0IFByb2ZpbGVUZXN0LCByZWdlbmVyYXRlX2V4cGVjdGVkX291dHB1dAotZnJvbSB0ZXN0LnByb2ZpbGVlIGltcG9ydCB0ZXN0ZnVuYworCiAKIGNsYXNzIENQcm9maWxlVGVzdChQcm9maWxlVGVzdCk6CiAgICAgcHJvZmlsZXJjbGFzcyA9IGNQcm9maWxlLlByb2ZpbGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5IGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKaW5kZXggNzdjMzE1ZS4uMDNhYjE4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jc3YucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKQEAgLTIsOSArMiw3IEBACiAjIGNzdiBwYWNrYWdlIHVuaXQgdGVzdHMKIAogaW1wb3J0IGNvcHkKLWltcG9ydCBpbwogaW1wb3J0IHN5cwotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCkBAIC0xMiw2ICsxMCw5IEBACiBpbXBvcnQgZ2MKIGltcG9ydCBwaWNrbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucworZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogCiBjbGFzcyBUZXN0X0Nzdih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiCkBAIC00MjYsMTcgKzQyNywxNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNzdi5yZWFkZXIsIFtdLCBxdW90aW5nID0gLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LnJlYWRlciwgW10sIHF1b3RpbmcgPSAxMDApCiAKLSAgICAjIFNlZSBpc3N1ZSAjMjI5OTUKLSAgICAjIyBkZWYgdGVzdF9jb3B5KHNlbGYpOgotICAgICMjICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgotICAgICMjICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQotICAgICMjICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb3B5LmNvcHksIGRpYWxlY3QpCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKKyAgICAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29weS5jb3B5LCBkaWFsZWN0KQogCi0gICAgIyMgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICMjICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgotICAgICMjICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQotICAgICMjICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgIyMgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGRpYWxlY3QsIHByb3RvKQorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKKyAgICAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkaWFsZWN0LCBwcm90bykKIAogY2xhc3MgVGVzdENzdkJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiByZWFkZXJBc3NlcnRFcXVhbChzZWxmLCBpbnB1dCwgZXhwZWN0ZWRfcmVzdWx0KToKQEAgLTYyNiw2ICs2MjYsMjQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIidmMiciLCBleGNlcHRpb24pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIxIiwgZXhjZXB0aW9uKQogCisgICAgZGVmIHRlc3RfdHlwb19pbl9leHRyYXNhY3Rpb25fcmFpc2VzX2Vycm9yKHNlbGYpOgorICAgICAgICBmaWxlb2JqID0gU3RyaW5nSU8oKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjc3YuRGljdFdyaXRlciwgZmlsZW9iaiwgWydmMScsICdmMiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYXNhY3Rpb249InJhaXNlZCIpCisKKyAgICBkZWYgdGVzdF93cml0ZV9maWVsZF9ub3RfaW5fZmllbGRfbmFtZXNfcmFpc2Uoc2VsZik6CisgICAgICAgIGZpbGVvYmogPSBTdHJpbmdJTygpCisgICAgICAgIHdyaXRlciA9IGNzdi5EaWN0V3JpdGVyKGZpbGVvYmosIFsnZjEnLCAnZjInXSwgZXh0cmFzYWN0aW9uPSJyYWlzZSIpCisgICAgICAgIGRpY3Ryb3cgPSB7J2YwJzogMCwgJ2YxJzogMSwgJ2YyJzogMiwgJ2YzJzogM30KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3N2LkRpY3RXcml0ZXIud3JpdGVyb3csIHdyaXRlciwgZGljdHJvdykKKworICAgIGRlZiB0ZXN0X3dyaXRlX2ZpZWxkX25vdF9pbl9maWVsZF9uYW1lc19pZ25vcmUoc2VsZik6CisgICAgICAgIGZpbGVvYmogPSBTdHJpbmdJTygpCisgICAgICAgIHdyaXRlciA9IGNzdi5EaWN0V3JpdGVyKGZpbGVvYmosIFsnZjEnLCAnZjInXSwgZXh0cmFzYWN0aW9uPSJpZ25vcmUiKQorICAgICAgICBkaWN0cm93ID0geydmMCc6IDAsICdmMSc6IDEsICdmMic6IDIsICdmMyc6IDN9CisgICAgICAgIGNzdi5EaWN0V3JpdGVyLndyaXRlcm93KHdyaXRlciwgZGljdHJvdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlb2JqLmdldHZhbHVlKCksICIxLDJcclxuIikKKwogICAgIGRlZiB0ZXN0X3JlYWRfZGljdF9maWVsZHMoc2VsZik6CiAgICAgICAgIHdpdGggVGVtcG9yYXJ5RmlsZSgidysiKSBhcyBmaWxlb2JqOgogICAgICAgICAgICAgZmlsZW9iai53cml0ZSgiMSwyLGFiY1xyXG4iKQpAQCAtMTA4MCw3ICsxMDk4LDYgQEAKICAgICAgICAgICAgICAiRnJhbsOnb2lzIFBpbmFyZCJdCiAKICAgICBkZWYgdGVzdF91bmljb2RlX3JlYWQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBpbwogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIGZpbGVvYmoud3JpdGUoIiwiLmpvaW4oc2VsZi5uYW1lcykgKyAiXHJcbiIpCiAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKQEAgLTEwODksNyArMTEwNiw2IEBACiAKIAogICAgIGRlZiB0ZXN0X3VuaWNvZGVfd3JpdGUoc2VsZik6Ci0gICAgICAgIGltcG9ydCBpbwogICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoIncrIiwgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iajoKICAgICAgICAgICAgIHdyaXRlciA9IGNzdi53cml0ZXIoZmlsZW9iaikKICAgICAgICAgICAgIHdyaXRlci53cml0ZXJvdyhzZWxmLm5hbWVzKQpAQCAtMTA5Nyw2ICsxMTEzLDYzIEBACiAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZW9iai5yZWFkKCksIGV4cGVjdGVkKQogCitjbGFzcyBLZXlPcmRlcmluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfb3JkZXJpbmdfZm9yX3RoZV9kaWN0X3JlYWRlcl9hbmRfd3JpdGVyKHNlbGYpOgorICAgICAgICByZXN1bHRzZXQgPSBzZXQoKQorICAgICAgICBmb3Iga2V5cyBpbiBwZXJtdXRhdGlvbnMoImFiY2RlIik6CisgICAgICAgICAgICB3aXRoIFRlbXBvcmFyeUZpbGUoJ3crJywgbmV3bGluZT0nJywgZW5jb2Rpbmc9InV0Zi04IikgYXMgZmlsZW9iamVjdDoKKyAgICAgICAgICAgICAgICBkdyA9IGNzdi5EaWN0V3JpdGVyKGZpbGVvYmplY3QsIGtleXMpCisgICAgICAgICAgICAgICAgZHcud3JpdGVoZWFkZXIoKQorICAgICAgICAgICAgICAgIGZpbGVvYmplY3Quc2VlaygwKQorICAgICAgICAgICAgICAgIGRyID0gY3N2LkRpY3RSZWFkZXIoZmlsZW9iamVjdCkKKyAgICAgICAgICAgICAgICBrdCA9IHR1cGxlKGRyLmZpZWxkbmFtZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXlzLCBrdCkKKyAgICAgICAgICAgICAgICByZXN1bHRzZXQuYWRkKGt0KQorICAgICAgICAjIEZpbmFsIHNhbml0eSBjaGVjazogd2VyZSBhbGwgcGVybXV0YXRpb25zIHVuaXF1ZT8KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0c2V0KSwgMTIwLCAiS2V5IG9yZGVyaW5nOiBzb21lIGtleSBwZXJtdXRhdGlvbnMgbm90IGNvbGxlY3RlZCAoZXhwZWN0ZWQgMTIwKSIpCisKKyAgICBkZWYgdGVzdF9vcmRlcmVkX2RpY3RfcmVhZGVyKHNlbGYpOgorICAgICAgICBkYXRhID0gZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIEZpcnN0TmFtZSxMYXN0TmFtZQorICAgICAgICAgICAgRXJpYyxJZGxlCisgICAgICAgICAgICBHcmFoYW0sQ2hhcG1hbixPdmVyMSxPdmVyMgorCisgICAgICAgICAgICBVbmRlcjEKKyAgICAgICAgICAgIEpvaG4sQ2xlZXNlCisgICAgICAgICcnJykuc3BsaXRsaW5lcygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNzdi5EaWN0UmVhZGVyKGRhdGEpKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnRXJpYycpLCAoJ0xhc3ROYW1lJywgJ0lkbGUnKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdHcmFoYW0nKSwgKCdMYXN0TmFtZScsICdDaGFwbWFuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBbJ092ZXIxJywgJ092ZXIyJ10pXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ1VuZGVyMScpLCAoJ0xhc3ROYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnSm9obicpLCAoJ0xhc3ROYW1lJywgJ0NsZWVzZScpXSksCisgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjc3YuRGljdFJlYWRlcihkYXRhLCByZXN0a2V5PSdPdGhlckluZm8nKSksCisgICAgICAgICAgICBbT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0VyaWMnKSwgKCdMYXN0TmFtZScsICdJZGxlJyldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnR3JhaGFtJyksICgnTGFzdE5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ090aGVySW5mbycsIFsnT3ZlcjEnLCAnT3ZlcjInXSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnVW5kZXIxJyksICgnTGFzdE5hbWUnLCBOb25lKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdKb2huJyksICgnTGFzdE5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAgZGVsIGRhdGFbMF0gICAgICAgICAgICAjIFJlbW92ZSB0aGUgaGVhZGVyIHJvdworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3N2LkRpY3RSZWFkZXIoZGF0YSwgZmllbGRuYW1lcz1bJ2ZuYW1lJywgJ2xuYW1lJ10pKSwKKyAgICAgICAgICAgIFtPcmRlcmVkRGljdChbKCdmbmFtZScsICdFcmljJyksICgnbG5hbWUnLCAnSWRsZScpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnR3JhaGFtJyksICgnbG5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgWydPdmVyMScsICdPdmVyMiddKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ1VuZGVyMScpLCAoJ2xuYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdmbmFtZScsICdKb2huJyksICgnbG5hbWUnLCAnQ2xlZXNlJyldKSwKKyAgICAgICAgICAgIF0pCisKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geydfX2RvY19fJywgJ19fdmVyc2lvbl9fJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgY3N2LCAoJ2NzdicsICdfY3N2JyksIGV4dHJhPWV4dHJhKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQppbmRleCAyZDRlYjUyLi4yNDJlMWJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKQEAgLTIzLDkgKzIzLDE2IEBACiB0ZXN0X2NsYXNzZXMgPSBbXQogCiBmb3IgbW9kdWxlLCBzdWZmaXggaW4gemlwKHRlc3RfbW9kdWxlcywgdGVzdF9zdWZmaXhlcyk6CisgICAgdGVzdF9jbGFzc2VzID0gW10KICAgICBmb3IgbmFtZSwgY2xzIGluIG1vZHVsZS5fX2RpY3RfXy5pdGVtcygpOgotICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UoY2xzLCB0eXBlKSBhbmQgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RDYXNlKSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNscywgdHlwZSk6CiAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpc3N1YmNsYXNzKGNscywgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgdGVzdF9jbGFzc2VzLmFwcGVuZChjbHMpCisgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RTdWl0ZSk6CisgICAgICAgICAgICBzdWl0ID0gY2xzKCkKKyAgICAgICAgICAgIHRlc3RfY2xhc3Nlcy5leHRlbmQodHlwZSh0ZXN0KSBmb3IgdGVzdCBpbiBzdWl0KQorICAgIGZvciBjbHMgaW4gdGVzdF9jbGFzc2VzOgogICAgICAgICBjbHMuX19uYW1lX18gPSBuYW1lICsgc3VmZml4CiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgc2V0VXBDbGFzcyhjbHNfLCBtb2R1bGU9bW9kdWxlKToKQEAgLTM5LDcgKzQ2LDYgQEAKICAgICAgICAgICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShjbHNfLl9zYXZlX3N5c19tb2R1bGVzKQogICAgICAgICBjbHMuc2V0VXBDbGFzcyA9IHNldFVwQ2xhc3MKICAgICAgICAgY2xzLnRlYXJEb3duQ2xhc3MgPSB0ZWFyRG93bkNsYXNzCi0gICAgICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQoY2xzKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KCp0ZXN0X2NsYXNzZXMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CmluZGV4IDYyM2Q5OTIuLmYwYTQyOGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdCBzY3JpcHQgZm9yIHRoZSBkYm0ub3BlbiBmdW5jdGlvbiBiYXNlZCBvbiB0ZXN0ZHVtYmRibS5weSIiIgogCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGdsb2IKIGltcG9ydCB0ZXN0LnN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CmluZGV4IGZmNjNjODguLjJkNzdmMDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGRibS5kdW1iIGFzIGR1bWJkYm0KIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKQEAgLTc4LDYgKzc5LDEyIEBACiAgICAgICAgIHNlbGYuaW5pdF9kYigpCiAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAncicpCiAgICAgICAgIHNlbGYucmVhZF9oZWxwZXIoZikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5Jyk6CisgICAgICAgICAgICBmW2InZyddID0gYid4JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknKToKKyAgICAgICAgICAgIGRlbCBmW2InYSddCiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZHVtYmRibV9rZXlzKHNlbGYpOgpAQCAtMTQ4LDcgKzE1NSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2RpY3Rba2V5XSwgZltrZXldKQogCiAgICAgZGVmIGluaXRfZGIoc2VsZik6Ci0gICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAndycpCisgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCAnbicpCiAgICAgICAgIGZvciBrIGluIHNlbGYuX2RpY3Q6CiAgICAgICAgICAgICBmW2tdID0gc2VsZi5fZGljdFtrXQogICAgICAgICBmLmNsb3NlKCkKQEAgLTIzNCw2ICsyNDEsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJycpCiAKKyAgICBkZWYgdGVzdF93YXJuX29uX2lnbm9yZWRfZmxhZ3Moc2VsZik6CisgICAgICAgIGZvciB2YWx1ZSBpbiAoJ3InLCAndycpOgorICAgICAgICAgICAgX2RlbGV0ZV9maWxlcygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGRhdGFiYXNlIGZpbGUgaXMgbWlzc2luZywgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW1hbnRpY3Mgb2YgdGhlICdjJyBmbGFnIHdpbGwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIHVzZWQuIik6CisgICAgICAgICAgICAgICAgZiA9IGR1bWJkYm0ub3BlbihfZm5hbWUsIHZhbHVlKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2ZsYWcoc2VsZik6CisgICAgICAgIGZvciBmbGFnIGluICgneCcsICdyZicsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZsYWcgbXVzdCBiZSBvbmUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidyJywgJ3cnLCAnYycsIG9yICduJyIpOgorICAgICAgICAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCBmbGFnKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIF9kZWxldGVfZmlsZXMoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKaW5kZXggYTc4MDhmNS4uMzA0YjMzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQpAQCAtMiw3ICsyLDcgQEAKIGdkYm0gPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5nbnUiKSAjc2tpcCBpZiBub3Qgc3VwcG9ydGVkCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCB1bmxpbmsKIAogCiBmaWxlbmFtZSA9IFRFU1RGTgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weSBiL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKaW5kZXggMjI5MTU2MS4uNDlmNDQyNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CkBAIC0xLDggKzEsNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoImRibS5uZGJtIikgI3NraXAgaWYgbm90IHN1cHBvcnRlZAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KIGltcG9ydCBkYm0ubmRibQogZnJvbSBkYm0ubmRibSBpbXBvcnQgZXJyb3IKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IDFhYTBiZjguLjYxN2EzN2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTU1NCw2ICs1NTQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnICAtNy44OScpKSwgJy03Ljg5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiICAzLjQ1Njc5ICAiKSksICczLjQ1Njc5JykKIAorICAgICAgICAjIHVuZGVyc2NvcmVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJzFfMy4zZTRfMCcpKSwgJzEuMzNFKzQxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnMV8wXzBfMCcpKSwgJzEwMDAnKQorCiAgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCiAgICAgICAgIGZvciBsZWFkIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgogICAgICAgICAgICAgZm9yIHRyYWlsIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgpAQCAtNTc4LDYgKzU4Miw5IEBACiAgICAgICAgICAgICAjIGVtYmVkZGVkIE5VTAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjEyXHUwMDAwMyIpCiAKKyAgICAgICAgICAgICMgdW5kZXJzY29yZXMgZG9uJ3QgcHJldmVudCBlcnJvcnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICIxXzJfXHUwMDAwMyIpCisKICAgICBAY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3RfZnJvbV9sZWdhY3lfc3RyaW5ncyhzZWxmKToKICAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQpAQCAtNzcyLDYgKzc3OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAieHl6IikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICgxLCAieHl6IiwgLTI1KSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyMzQiLCAiNTY3OCIpCisgICAgICAgICMgbm8gd2hpdGVzcGFjZSBhbmQgdW5kZXJzY29yZSBzdHJpcHBpbmcgaXMgZG9uZSB3aXRoIHRoaXMgbWV0aG9kCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAiIDEyMzQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgIjEyXzM0IikKIAogICAgICAgICAjIHRvbyBtYW55IE5hTiBwYXlsb2FkIGRpZ2l0cwogICAgICAgICBuYy5wcmVjID0gMwpAQCAtMjA0Nyw2ICsyMDU3LDM5IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQogCisgICAgZGVmIHRlc3RfYXNfaW50ZWdlcl9yYXRpbyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgIyBleGNlcHRpb25hbCBjYXNlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJ2luZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJy1pbmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCctbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnc25hbjEyMycpKQorCisgICAgICAgIGZvciBleHAgaW4gcmFuZ2UoLTQsIDIpOgorICAgICAgICAgICAgZm9yIGNvZWZmIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgICAgIGZvciBzaWduIGluICcrJywgJy0nOgorICAgICAgICAgICAgICAgICAgICBkID0gRGVjaW1hbCgnJXMlZEUlZCcgJSAoc2lnbiwgY29lZmYsIGV4cCkpCisgICAgICAgICAgICAgICAgICAgIHBxID0gZC5hc19pbnRlZ2VyX3JhdGlvKCkKKyAgICAgICAgICAgICAgICAgICAgcCwgcSA9IHBxCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayByZXR1cm4gdHlwZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocHEsIHR1cGxlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocCwgaW50KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocSwgaW50KQorCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgbm9ybWFsaXphdGlvbjogIHEgc2hvdWxkIGJlIHBvc2l0aXZlOworICAgICAgICAgICAgICAgICAgICAjIHAgc2hvdWxkIGJlIHJlbGF0aXZlbHkgcHJpbWUgdG8gcS4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHEsIDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5nY2QocCwgcSksIDEpCisKKyAgICAgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IHAvcSBhY3R1YWxseSBnaXZlcyB0aGUgY29ycmVjdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwocCkgLyBEZWNpbWFsKHEpLCBkKQorCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CiAgICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCiAgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKaW5kZXggMThlMWRmMC4uY2U1MTdiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CkBAIC0yODksNyArMjg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5pbmRleChlbGVtZW50LCBzdGFydCwgc3RvcCksIHRhcmdldCkKIAotICAgIGRlZiB0ZXN0X2luc2VydF9idWdfMjQ5MTMoc2VsZik6CisgICAgZGVmIHRlc3RfaW5kZXhfYnVnXzI0OTEzKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ0EnICogMykKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIGkgPSBkLmluZGV4KCJIZWxsbyB3b3JsZCIsIDAsIDQpCkBAIC02MjIsMjAgKzYyMiwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGQgPSBkZXF1ZShyYW5nZSgyMDApKQotICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhkLCBpKQotICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCisgICAgICAgIGZvciBkIGluIGRlcXVlKHJhbmdlKDIwMCkpLCBkZXF1ZShyYW5nZSgyMDApLCAxMDApOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBzID0gcGlja2xlLmR1bXBzKGQsIGkpCisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChlKSwgbGlzdChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKLSMjICAgICAgICBkID0gZGVxdWUoJ2FiYycpCi0jIyAgICAgICAgZC5hcHBlbmQoZCkKLSMjICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotIyMgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBpKSkKLSMjICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0jIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVbLTFdKSkKKyAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBmb3IgZCBpbiBkZXF1ZSgnYWJjJyksIGRlcXVlKCdhYmMnLCAzKToKKyAgICAgICAgICAgIGQuYXBwZW5kKGQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIGkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZSksIGlkKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZVstMV0pLCBpZChlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubWF4bGVuLCBkLm1heGxlbikKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKICAgICAgICAgb3JpZyA9IGRlcXVlKHJhbmdlKDIwMCkpCkBAIC02OTYsNiArNjk4LDE1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBmb3IgbWF4bGVuIGluIHJhbmdlKC0xLCA2KToKKyAgICAgICAgICAgICAgICBzID0gW3JhbmRvbS5yYW5kb20oKSBmb3IgaiBpbiByYW5nZShpKV0KKyAgICAgICAgICAgICAgICBkID0gZGVxdWUocykgaWYgbWF4bGVuID09IC0xIGVsc2UgZGVxdWUocywgbWF4bGVuKQorICAgICAgICAgICAgICAgIGUgPSBkLmNvcHkoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQubWF4bGVuLCBlLm1heGxlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKHggaXMgeSBmb3IgeCwgeSBpbiB6aXAoZCwgZSkpKQorCiAgICAgZGVmIHRlc3RfY29weV9tZXRob2Qoc2VsZik6CiAgICAgICAgIG11dCA9IFsxMF0KICAgICAgICAgZCA9IGRlcXVlKFttdXRdKQpAQCAtODQ1LDI0ICs4NTYsMjYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKSwgdHlwZShlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChkKSwgbGlzdChlKSkKIAotIyMgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotIyMgICAgICAgIGQgPSBEZXF1ZSgnYWJjJykKLSMjICAgICAgICBkLmFwcGVuZChkKQotIyMKLSMjICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkKSkKLSMjICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZCksIHR5cGUoZSkpCi0jIyAgICAgICAgZGQgPSBkLnBvcCgpCi0jIyAgICAgICAgZWUgPSBlLnBvcCgpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlKSwgaWQoZWUpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgZSkKLSMjCi0jIyAgICAgICAgZC54ID0gZAotIyMgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQpKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGUueCkpCi0jIwotIyMgICAgICAgIGQgPSBEZXF1ZVdpdGhCYWRJdGVyKCdhYmMnKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkKQorICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWUoJ2FiYycpLCBEZXF1ZSgnYWJjJywgMyk6CisgICAgICAgICAgICAgICAgZC5hcHBlbmQoZCkKKworICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGQsIHByb3RvKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGUpLCBpZChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZSksIHR5cGUoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm1heGxlbiwgZC5tYXhsZW4pCisgICAgICAgICAgICAgICAgZGQgPSBkLnBvcCgpCisgICAgICAgICAgICAgICAgZWUgPSBlLnBvcCgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlZSksIGlkKGUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZCkKKworICAgICAgICAgICAgICAgIGQueCA9IGQKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChlLngpLCBpZChlKSkKKworICAgICAgICAgICAgZm9yIGQgaW4gRGVxdWVXaXRoQmFkSXRlcignYWJjJyksIERlcXVlV2l0aEJhZEl0ZXIoJ2FiYycsIDIpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkLCBwcm90bykKIAogICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CiAgICAgICAgIGQgPSBkZXF1ZSgnZ2FsbGFoYWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggNDE4ZjhkMi4uMWUwOGVkOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC00NzM4LDExICs0NzM4LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gKGFyZ3MsIGt3YXJncykKICAgICAgICAgb2JqID0gQzMoKQogICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgotICAgICAgICAgICAgaWYgcHJvdG8gPj0gNDoKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CiAgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfcmVkdWNlKHByb3RvLCBvYmosIGFyZ3MsIGt3YXJncykKLSAgICAgICAgICAgIGVsaWYgcHJvdG8gPj0gMjoKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBvYmouX19yZWR1Y2VfZXhfXyhwcm90bykKIAogICAgICAgICBjbGFzcyBDNDoKICAgICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfZXhfXyhzZWxmKToKQEAgLTUwNjEsMTAgKzUwNTgsNiBAQAogICAgICAgICAgICAgICAgIGt3YXJncyA9IGdldGF0dHIoY2xzLCAnS1dBUkdTJywge30pCiAgICAgICAgICAgICAgICAgb2JqID0gY2xzKCpjbHMuQVJHUywgKiprd2FyZ3MpCiAgICAgICAgICAgICAgICAgcHJvdG8gPSBwaWNrbGVfY29waWVyLnByb3RvCi0gICAgICAgICAgICAgICAgaWYgMiA8PSBwcm90byA8IDQgYW5kIGhhc2F0dHIoY2xzLCAnX19nZXRuZXdhcmdzX2V4X18nKToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZV9jb3BpZXIuZHVtcHMob2JqLCBwcm90bykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBvYmpjb3B5ID0gcGlja2xlX2NvcGllci5jb3B5KG9iaikKICAgICAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfaXNfY29weShvYmosIG9iamNvcHkpCiAgICAgICAgICAgICAgICAgIyBGb3IgdGVzdCBjbGFzc2VzIHRoYXQgc3VwcG9ydHMgdGhpcywgbWFrZSBzdXJlIHdlIGRpZG4ndCBnbwpAQCAtNTEyMywxMiArNTExNiwxNCBAQAogICAgICAgICBhLCBiID0gQSgpLCBCKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGEueCwgYS55LCBhLnosIGEudyA9IHJhbmdlKDQpCisgICAgICAgICMgSW5pdGlhbCBoYXNoIHRhYmxlIGNhbiBjb250YWluIGF0IG1vc3QgNSBlbGVtZW50cy4KKyAgICAgICAgIyBTZXQgNiBhdHRyaWJ1dGVzIHRvIGNhdXNlIGludGVybmFsIHJlc2l6aW5nLgorICAgICAgICBhLngsIGEueSwgYS56LCBhLncsIGEudiwgYS51ID0gcmFuZ2UoNikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYikpKQogICAgICAgICBhMiA9IEEoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2YodmFycyhhMikpKQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih7fSkpCi0gICAgICAgIGIudSwgYi52LCBiLncsIGIudCA9IHJhbmdlKDQpCisgICAgICAgIGIudSwgYi52LCBiLncsIGIudCwgYi5zLCBiLnIgPSByYW5nZSg2KQogICAgICAgICBzZWxmLmFzc2VydExlc3Moc3lzLmdldHNpemVvZih2YXJzKGIpKSwgc3lzLmdldHNpemVvZih7fSkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKaW5kZXggNTA2ZDFhYi4uYjg0ZDY0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CkBAIC0xODIsNiArMTgyLDcgQEAKICAgICAgJ19faWFkZF9fJywKICAgICAgJ19faW11bF9fJywKICAgICAgJ19faW5pdF9fJywKKyAgICAgJ19faW5pdF9zdWJjbGFzc19fJywKICAgICAgJ19faXRlcl9fJywKICAgICAgJ19fbGVfXycsCiAgICAgICdfX2xlbl9fJywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQppbmRleCA5NTU2MThhLi5jMTMzYzgxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CkBAIC01LDkgKzUsOCBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc2VsZWN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgY3B5dGhvbl9vbmx5Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcHl0aG9uX29ubHkKIAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAnZGV2cG9sbCcpIDoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndGVzdCB3b3JrcyBvbmx5IG9uIFNvbGFyaXMgT1MgZmFtaWx5JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCA2ZDY4ZTc2Li5lZDY2ZGRiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC0xLDEwICsxLDEzIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCi1pbXBvcnQgY29sbGVjdGlvbnMsIHJhbmRvbSwgc3RyaW5nCitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLWltcG9ydCBnYywgd2Vha3JlZgoraW1wb3J0IGdjCiBpbXBvcnQgcGlja2xlCitpbXBvcnQgcmFuZG9tCitpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3ZWFrcmVmCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBEaWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04MzYsNiArODM5LDgzIEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuX3RyYWNrZWQoTXlEaWN0KCkpCiAKKyAgICBkZWYgbWFrZV9zaGFyZWRfa2V5X2RpY3Qoc2VsZiwgbik6CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGljdHMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGEgPSBDKCkKKyAgICAgICAgICAgIGEueCwgYS55LCBhLnogPSAxLCAyLCAzCisgICAgICAgICAgICBkaWN0cy5hcHBlbmQoYS5fX2RpY3RfXykKKworICAgICAgICByZXR1cm4gZGljdHMKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfZGVsKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZGVsIGRba10iIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgZGVsIGFbJ3knXSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGRlbCBhWyd5J10KKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgICAgICMgVHdvIGRpY3RzIGhhdmUgZGlmZmVyZW50IGluc2VydGlvbiBvcmRlci4KKyAgICAgICAgYVsneSddID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneicsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3Aoc2VsZik6CisgICAgICAgICIiInNwbGl0IHRhYmxlIG11c3QgYmUgY29tYmluZWQgd2hlbiBkLnBvcChrKSIiIgorICAgICAgICBhLCBiID0gc2VsZi5tYWtlX3NoYXJlZF9rZXlfZGljdCgyKQorCisgICAgICAgIG9yaWdfc2l6ZSA9IHN5cy5nZXRzaXplb2YoYSkKKworICAgICAgICBhLnBvcCgneScpICAjIHNwbGl0IHRhYmxlIGlzIGNvbWJpbmVkCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgYS5wb3AoJ3knKQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKGEpLCBvcmlnX3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICAgICAgIyBUd28gZGljdHMgaGF2ZSBkaWZmZXJlbnQgaW5zZXJ0aW9uIG9yZGVyLgorICAgICAgICBhWyd5J10gPSA0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6JywgJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX3BvcF9wZW5kaW5nKHNlbGYpOgorICAgICAgICAiIiJwb3AgYSBwZW5kaW5nIGtleSBpbiBhIHNwbGl0dGVkIHRhYmxlIHNob3VsZCBub3QgY3Jhc2giIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBhWydhJ10gPSA0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgYi5wb3AoJ2EnKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3BpdGVtKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZC5wb3BpdGVtKCkiIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgaXRlbSA9IGEucG9waXRlbSgpICAjIHNwbGl0IHRhYmxlIGlzIGNvbWJpbmVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbSwgKCd6JywgMykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZGVsIGFbJ3onXQorCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzeXMuZ2V0c2l6ZW9mKGEpLCBvcmlnX3NpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGIpLCBbJ3gnLCAneScsICd6J10pCisKICAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBkYXRhID0gezE6ImEiLCAyOiJiIiwgMzoiYyJ9CkBAIC05NjksNSArMTA0OSw2IEBACiBjbGFzcyBTdWJjbGFzc01hcHBpbmdUZXN0cyhtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CiAgICAgdHlwZTJ0ZXN0ID0gRGljdAogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdF92ZXJzaW9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NzFmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weQpAQCAtMCwwICsxLDE4NiBAQAorIiIiCitUZXN0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQRVAgNTA5OiBkaWN0aW9uYXJ5IHZlcnNpb25uaW5nLgorIiIiCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisjIFBFUCA1MDkgaXMgaW1wbGVtZW50ZWQgaW4gQ1B5dGhvbiBidXQgb3RoZXIgUHl0aG9uIGltcGxlbWVudGF0aW9ucworIyBkb24ndCByZXF1aXJlIHRvIGltcGxlbWVudCBpdAorX3Rlc3RjYXBpID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQorCisKK2NsYXNzIERpY3RWZXJzaW9uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHR5cGUydGVzdCA9IGRpY3QKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zID0gc2V0KCkKKyAgICAgICAgc2VsZi5kaWN0ID0gTm9uZQorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fdW5pcXVlKHNlbGYsIG15ZGljdCk6CisgICAgICAgIHZlcnNpb24gPSBfdGVzdGNhcGkuZGljdF9nZXRfdmVyc2lvbihteWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odmVyc2lvbiwgc2VsZi5zZWVuX3ZlcnNpb25zKQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24pCisKKyAgICBkZWYgY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX3VuaXF1ZShteWRpY3QpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBjaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKHNlbGYsIG15ZGljdCwgbWV0aG9kLCAqYXJncywgKiprdyk6CisgICAgICAgIHZlcnNpb24xID0gX3Rlc3RjYXBpLmRpY3RfZ2V0X3ZlcnNpb24obXlkaWN0KQorICAgICAgICBzZWxmLnNlZW5fdmVyc2lvbnMuYWRkKHZlcnNpb24xKQorCisgICAgICAgIHJlc3VsdCA9IG1ldGhvZCgqYXJncywgKiprdykKKworICAgICAgICB2ZXJzaW9uMiA9IF90ZXN0Y2FwaS5kaWN0X2dldF92ZXJzaW9uKG15ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uMiwgdmVyc2lvbjEsICJ2ZXJzaW9uIGNoYW5nZWQiKQorCisgICAgICAgIHJldHVybiAgcmVzdWx0CisKKyAgICBkZWYgbmV3X2RpY3Qoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBkID0gc2VsZi50eXBlMnRlc3QoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZCkKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICAjIG5ldyBlbXB0eSBkaWN0aW9uYXJpZXMgbXVzdCBhbGwgaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBlbXB0eTEgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgZW1wdHkyID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIGVtcHR5MyA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgbm9uLWVtcHR5IGRpY3Rpb25hcmllcyBtdXN0IGFsc28gaGF2ZSBhbiB1bmlxdWUgdmVyc2lvbgorICAgICAgICBub25lbXB0eTEgPSBzZWxmLm5ld19kaWN0KHg9J3gnKQorICAgICAgICBub25lbXB0eTIgPSBzZWxmLm5ld19kaWN0KHg9J3gnLCB5PSd5JykKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGE9MSwgYj0yKQorCisgICAgICAgIGQyID0gc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQuY29weSkKKworICAgICAgICAjIGRpY3QuY29weSgpIG11c3QgY3JlYXRlIGEgZGljdGlvbmFyeSB3aXRoIGEgbmV3IHVuaXF1ZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUoZDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBjcmVhdGluZyBuZXcga2V5cyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneCcsICd4JykKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3knLCAneScpCisKKyAgICAgICAgIyBjaGFuZ2luZyB2YWx1ZXMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3gnLCAxKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAneScsIDIpCisKKyAgICBkZWYgdGVzdF9zZXRpdGVtX3NhbWVfdmFsdWUoc2VsZik6CisgICAgICAgIHZhbHVlID0gb2JqZWN0KCkKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIHRoZSBzYW1lIHZhbHVlIHdpdGggZGljdC5fX3NldGl0ZW1fXworICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gdGhlIHNhbWUgdmFsdWUgd2l0aCBkaWN0LnVwZGF0ZQorICAgICAgICAjIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9dmFsdWUpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZSkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGQyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9lcXVhbChzZWxmKToKKyAgICAgICAgY2xhc3MgQWx3YXlzRXF1YWw6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHZhbHVlMSA9IEFsd2F5c0VxdWFsKCkKKyAgICAgICAgdmFsdWUyID0gQWx3YXlzRXF1YWwoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUxID09IHZhbHVlMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2YWx1ZTEgIT0gdmFsdWUyKQorCisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlMSkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgdG8gYSB2YWx1ZSBlcXVhbCB0byB0aGUgY3VycmVudCB2YWx1ZQorICAgICAgICAjIHdpdGggZGljdC5fX3NldGl0ZW1fXygpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZTIpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgIyB3aXRoIGRpY3QudXBkYXRlKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC51cGRhdGUsIGtleT12YWx1ZTEpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT12YWx1ZTIpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X3NldGRlZmF1bHQoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgd2l0aCBkaWN0LnNldGRlZmF1bHQoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUxJykKKworICAgICAgICAjIGRvbid0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGFscmVhZHkgZXhpc3RzCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnNldGRlZmF1bHQsICdrZXknLCAndmFsdWUyJykKKworICAgIGRlZiB0ZXN0X2RlbGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgZGVsZXRpbmcgYSBrZXkgd2l0aCBkaWN0Ll9fZGVsaXRlbV9fKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX2RlbGl0ZW1fXywgJ2tleScpCisKKyAgICAgICAgIyBkb24ndCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBzZWxmLmFzc2VydFJhaXNlcywgS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLl9fZGVsaXRlbV9fLCAna2V5JykKKworICAgIGRlZiB0ZXN0X3BvcChzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUga2V5IGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnBvcCwgJ2tleScpCisKKyAgICAgICAgIyBwb3AoKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdAorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgc2VsZi5hc3NlcnRSYWlzZXMsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5wb3AsICdrZXknKQorCisgICAgZGVmIHRlc3RfcG9waXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBwb3BpdGVtKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQucG9waXRlbSkKKworICAgICAgICAjIHBvcGl0ZW0oKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIHNlbGYuYXNzZXJ0UmFpc2VzLCBLZXlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucG9waXRlbSkKKworICAgIGRlZiB0ZXN0X3VwZGF0ZShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyB1cGRhdGUoKSBjYWxsaW5nIHdpdGggbm8gYXJndW1lbnQgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLnVwZGF0ZSkKKworICAgICAgICAjIHVwZGF0ZSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9J25ldyB2YWx1ZScpCisKKyAgICAgICAgZDIgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUgMycpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X2NsZWFyKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIGNsZWFyKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgbm90IGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuY2xlYXIpCisKKyAgICAgICAgIyBjbGVhcigpIG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbiBpZiB0aGUgZGljdCBpcyBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC5jbGVhcikKKworCitjbGFzcyBEaWN0KGRpY3QpOgorICAgIHBhc3MKKworCitjbGFzcyBEaWN0U3VidHlwZVZlcnNpb25UZXN0cyhEaWN0VmVyc2lvblRlc3RzKToKKyAgICB0eXBlMnRlc3QgPSBEaWN0CisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKaW5kZXggM2M4Yjk1Yy4uMDg3MzA3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0Y29tcHMucHkKQEAgLTEsNyArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci0KICMgRm9yIHNjb3BlIHRlc3RpbmcuCiBnID0gIkdsb2JhbCB2YXJpYWJsZSIKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQppbmRleCAwYzk5NjUyLi40OWE5ZTljIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMjQ1LDYgKzI0NiwyNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgcGlja2xlLlBpY2tsaW5nRXJyb3IpLAogICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcywgZC5pdGVtcygpLCBwcm90bykKIAorICAgIGRlZiB0ZXN0X2FiY19yZWdpc3RyeShzZWxmKToKKyAgICAgICAgZCA9IGRpY3QoYT0xKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuS2V5c1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuTWFwcGluZ1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLmtleXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLlNpemVkKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuVmFsdWVzVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLk1hcHBpbmdWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC52YWx1ZXMoKSwgY29sbGVjdGlvbnMuU2l6ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlbXNWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5NYXBwaW5nVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuU2V0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5TaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkNvbnRhaW5lcikKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CmluZGV4IGFiOWRlYmYuLjE1NmI1MjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKQEAgLTEyMiwxNyArMTIyLDE3IEBACiAiIiIKIAogcGF0Y2g5MTQ1NzVfZnJvbTIgPSAiIiIKLVx0XHRMaW5lIDE6IHByZWNlZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCi0gIFx0XHRMaW5lIDI6IHByZWNlZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCi0gIFx0IFx0TGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCitcdFx0TGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgIFx0XHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgXHQgXHRMaW5lIDM6IHByZWNlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQogTGluZSA0OiAgXHRoYXMgZnJvbTpbc3N0XSB0bzpbc3NzXSBhZnRlciA6CiBMaW5lIDU6IGhhcyBmcm9tOlt0XSB0bzpbc3NdIGF0IGVuZFx0CiAiIiIKIAogcGF0Y2g5MTQ1NzVfdG8yID0gIiIiCi0gICAgTGluZSAxOiBwcmVjZWVkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQotICAgIFx0TGluZSAyOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQotICAgICAgTGluZSAzOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCisgICAgTGluZSAxOiBwcmVjZWRlZCBieSBmcm9tOlt0dF0gdG86W3Nzc3NdCisgICAgXHRMaW5lIDI6IHByZWNlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KKyAgICAgIExpbmUgMzogcHJlY2VkZWQgYnkgZnJvbTpbc3N0c3RdIHRvOltzc3Nzc3NdCiBMaW5lIDQ6ICAgaGFzIGZyb206W3NzdF0gdG86W3Nzc10gYWZ0ZXIgOgogTGluZSA1OiBoYXMgZnJvbTpbdF0gdG86W3NzXSBhdCBlbmQKICIiIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCmluZGV4IGVhN2EyNGUuLjNlNmE3YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAorKysgYi9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKQEAgLTM4Nyw5ICszODcsOSBAQAogICAgICAgICAKICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0IiBpZD0iZGlmZmxpYl9jaGdfdG85X18wIj48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV82Ij42PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs1OiZuYnNwO2hhcyZuYnNwO2Zyb206W3RdJm5ic3A7dG86W3NzXSZuYnNwO2F0Jm5ic3A7ZW5kPHNwYW4gY2xhc3M9ImRpZmZfc3ViIj4mbmJzcDs8L3NwYW4+PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8L3RkPjwvdHI+CiAgICAgICAgIDwvdGJvZHk+CkBAIC00MDMsOSArNDAzLDkgQEAKICAgICAgICAgCiAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCIgaWQ9ImRpZmZsaWJfY2hnX3RvMTBfXzAiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8xIj4xPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX18wIj5mPC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNSI+NTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NDombmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5oYXMmbmJzcDtmcm9tOltzc3RdJm5ic3A7dG86W3Nzc10mbmJzcDthZnRlciZuYnNwOzo8L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDxzcGFuIGNsYXNzPSJkaWZmX3N1YiI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvMTBfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDwvdGQ+PC90cj4KICAgICAgICAgPC90Ym9keT4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKaW5kZXggMGZkMTM0OC4uYjliNWFjMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKQEAgLTQwLDQxICs0MCw0MSBAQAogCiBkaXNfY19pbnN0YW5jZV9tZXRob2QgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChzZWxmKQotICAgICAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICAgICAgNiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoc2VsZikKKyAgICAgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5fX2luaXRfXy5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsKQogCiBkaXNfY19pbnN0YW5jZV9tZXRob2RfYnl0ZXMgPSAiIiJcCiAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICA0IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKKyAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgIDggU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgIDEyIFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc19jX2NsYXNzX21ldGhvZCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCi0gICAgICAgICAgICAgIDkgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGNscykKLSAgICAgICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxOCBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGNscykKKyAgICAgICAgICAgICAgOCBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIiAlIChfQy5jbS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIsKQogCiBkaXNfY19zdGF0aWNfbWV0aG9kID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICAgICAgOSBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxNSBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX0Muc20uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyLCkKIAogIyBDbGFzcyBkaXNhc3NlbWJsaW5nIGluZm8gaGFzIGFuIGV4dHJhIG5ld2xpbmUgYXQgZW5kLgpAQCAtOTUsMjMgKzk1LDIzIEBACiAKIGRpc19mID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChwcmludCkKLSAgICAgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYSkKLSAgICAgICAgICAgICAgNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAgOSBQT1BfVE9QCisgICAgICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGEpCisgICAgICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgNiBQT1BfVE9QCiAKLSUzZCAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyUzZCAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIiAlIChfZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgX2YuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyKQogCiAKIGRpc19mX2NvX2NvZGUgPSAiIiJcCiAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgOSBQT1BfVE9QCi0gICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgIDEzIFJFVFVSTl9WQUxVRQorICAgICAgICAgIDIgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAgNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgIDYgUE9QX1RPUAorICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAxMCBSRVRVUk5fVkFMVUUKICIiIgogCiAKQEAgLTEyMSwyMCArMTIxLDIwIEBACiAgICAgICAgIHBhc3MKIAogZGlzX2J1ZzcwODkwMSA9ICIiIlwKLSUzZCAgICAgICAgICAgMCBTRVRVUF9MT09QICAgICAgICAgICAgICAyMyAodG8gMjYpCi0gICAgICAgICAgICAgIDMgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHJhbmdlKQotICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorJTNkICAgICAgICAgICAwIFNFVFVQX0xPT1AgICAgICAgICAgICAgIDE4ICh0byAyMCkKKyAgICAgICAgICAgICAgMiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAocmFuZ2UpCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCiAKLSUzZCAgICAgICAgICAgOSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMTApCi0gICAgICAgICAgICAgMTIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIgKDIgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgICAgMTUgR0VUX0lURVIKLSAgICAgICAgPj4gICAxNiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNiAodG8gMjUpCi0gICAgICAgICAgICAgMTkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKKyUzZCAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMTApCisgICAgICAgICAgICAgIDggQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDIKKyAgICAgICAgICAgICAxMCBHRVRfSVRFUgorICAgICAgICA+PiAgIDEyIEZPUl9JVEVSICAgICAgICAgICAgICAgICA0ICh0byAxOCkKKyAgICAgICAgICAgICAxNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAocmVzKQogCi0lM2QgICAgICAgICAgMjIgSlVNUF9BQlNPTFVURSAgICAgICAgICAgMTYKLSAgICAgICAgPj4gICAyNSBQT1BfQkxPQ0sKLSAgICAgICAgPj4gICAyNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAyOSBSRVRVUk5fVkFMVUUKKyUzZCAgICAgICAgICAxNiBKVU1QX0FCU09MVVRFICAgICAgICAgICAxMgorICAgICAgICA+PiAgIDE4IFBPUF9CTE9DSworICAgICAgICA+PiAgIDIwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDIyIFJFVFVSTl9WQUxVRQogIiIiICUgKGJ1ZzcwODkwMS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgYnVnNzA4OTAxLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMiwKICAgICAgICBidWc3MDg5MDEuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAzKQpAQCAtMTQ3LDIyICsxNDcsMjIgQEAKIAogZGlzX2J1ZzEzMzM5ODIgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDApCi0gICAgICAgICAgICAgIDMgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMzUKLSAgICAgICAgICAgICAgNiBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoQXNzZXJ0aW9uRXJyb3IpCi0gICAgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDxjb2RlIG9iamVjdCA8bGlzdGNvbXA+IGF0IDB4Li4uLCBmaWxlICIlcyIsIGxpbmUgJWQ+KQotICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAzICgnYnVnMTMzMzk4Mi48bG9jYWxzPi48bGlzdGNvbXA+JykKLSAgICAgICAgICAgICAxNSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAgMAotICAgICAgICAgICAgIDE4IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDIxIEdFVF9JVEVSCi0gICAgICAgICAgICAgMjIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCisgICAgICAgICAgICAgIDIgUE9QX0pVTVBfSUZfVFJVRSAgICAgICAgMjYKKyAgICAgICAgICAgICAgNCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoQXNzZXJ0aW9uRXJyb3IpCisgICAgICAgICAgICAgIDYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDxjb2RlIG9iamVjdCA8bGlzdGNvbXA+IGF0IDB4Li4uLCBmaWxlICIlcyIsIGxpbmUgJWQ+KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAzICgnYnVnMTMzMzk4Mi48bG9jYWxzPi48bGlzdGNvbXA+JykKKyAgICAgICAgICAgICAxMCBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAgMAorICAgICAgICAgICAgIDEyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgIDE0IEdFVF9JVEVSCisgICAgICAgICAgICAgMTYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKIAotJTNkICAgICAgICAgIDI1IExPQURfQ09OU1QgICAgICAgICAgICAgICA0ICgxKQotICAgICAgICAgICAgIDI4IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAyOSBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKLSAgICAgICAgICAgICAzMiBSQUlTRV9WQVJBUkdTICAgICAgICAgICAgMQorJTNkICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICA0ICgxKQorICAgICAgICAgICAgIDIwIEJJTkFSWV9BREQKKyAgICAgICAgICAgICAyMiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgIDI0IFJBSVNFX1ZBUkFSR1MgICAgICAgICAgICAxCiAKLSUzZCAgICAgPj4gICAzNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAzOCBSRVRVUk5fVkFMVUUKKyUzZCAgICAgPj4gICAyNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAyOCBSRVRVUk5fVkFMVUUKICIiIiAlIChidWcxMzMzOTgyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKICAgICAgICBfX2ZpbGVfXywKICAgICAgICBidWcxMzMzOTgyLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwKQEAgLTE3MSwxOSArMTcxLDE5IEBACiAKIF9CSUdfTElORU5PX0ZPUk1BVCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAoc3BhbSkKLSAgICAgICAgICAgICAgMyBQT1BfVE9QCisgICAgICAgICAgICAgIDIgUE9QX1RPUAogICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgICA3IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICA2IFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc19tb2R1bGVfZXhwZWN0ZWRfcmVzdWx0cyA9ICIiIlwKIERpc2Fzc2VtYmx5IG9mIGY6CiAgIDQgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgUkVUVVJOX1ZBTFVFCiAKIERpc2Fzc2VtYmx5IG9mIGc6CiAgIDUgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgIDMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgUkVUVVJOX1ZBTFVFCiAKICIiIgogCkBAIC0xOTEsMjAgKzE5MSw1MiBAQAogCiBkaXNfZXhwcl9zdHIgPSAiIiJcCiAgIDEgICAgICAgICAgIDAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCi0gICAgICAgICAgICAgIDYgQklOQVJZX0FERAotICAgICAgICAgICAgICA3IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IEJJTkFSWV9BREQKKyAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKICIiIgogCiBzaW1wbGVfc3RtdF9zdHIgPSAieCA9IHggKyAxIgogCiBkaXNfc2ltcGxlX3N0bXRfc3RyID0gIiIiXAogICAxICAgICAgICAgICAwIExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQotICAgICAgICAgICAgICA2IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAgNyBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoTm9uZSkKLSAgICAgICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAgNCBCSU5BUllfQURECisgICAgICAgICAgICAgIDYgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKE5vbmUpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCisiIiIKKworYW5ub3Rfc3RtdF9zdHIgPSAiIiJcCisKK3g6IGludCA9IDEKK3k6IGZ1bigxKQorbHN0W2Z1bigwKV06IGludCA9IDEKKyIiIgorIyBsZWFkaW5nIG5ld2xpbmUgaXMgZm9yIGEgcmVhc29uICh0ZXN0cyBsaW5lbm8pCisKK2Rpc19hbm5vdF9zdG10X3N0ciA9ICIiIlwKKyAgMiAgICAgICAgICAgMCBTRVRVUF9BTk5PVEFUSU9OUworICAgICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgICA0IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA2IExPQURfTkFNRSAgICAgICAgICAgICAgICAxIChpbnQpCisgICAgICAgICAgICAgIDggU1RPUkVfQU5OT1RBVElPTiAgICAgICAgIDAgKHgpCisKKyAgMyAgICAgICAgICAxMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMiAoZnVuKQorICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQorICAgICAgICAgICAgIDE0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgMTYgU1RPUkVfQU5OT1RBVElPTiAgICAgICAgIDMgKHkpCisKKyAgNCAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAyMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgNCAobHN0KQorICAgICAgICAgICAgIDIyIExPQURfTkFNRSAgICAgICAgICAgICAgICAyIChmdW4pCisgICAgICAgICAgICAgMjQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDApCisgICAgICAgICAgICAgMjYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAyOCBTVE9SRV9TVUJTQ1IKKyAgICAgICAgICAgICAzMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMSAoaW50KQorICAgICAgICAgICAgIDMyIFBPUF9UT1AKKyAgICAgICAgICAgICAzNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoTm9uZSkKKyAgICAgICAgICAgICAzNiBSRVRVUk5fVkFMVUUKICIiIgogCiBjb21wb3VuZF9zdG10X3N0ciA9ICIiIlwKQEAgLTIxNSw2MCArMjQ3LDgxIEBACiAKIGRpc19jb21wb3VuZF9zdG10X3N0ciA9ICIiIlwKICAgMSAgICAgICAgICAgMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICAgICAgMyBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgMiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKIAotICAyICAgICAgICAgICA2IFNFVFVQX0xPT1AgICAgICAgICAgICAgIDE0ICh0byAyMykKKyAgMiAgICAgICAgICAgNCBTRVRVUF9MT09QICAgICAgICAgICAgICAxMiAodG8gMTgpCiAKLSAgMyAgICAgPj4gICAgOSBMT0FEX05BTUUgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxNSBJTlBMQUNFX0FERAotICAgICAgICAgICAgIDE2IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgIDE5IEpVTVBfQUJTT0xVVEUgICAgICAgICAgICA5Ci0gICAgICAgICAgICAgMjIgUE9QX0JMT0NLCi0gICAgICAgID4+ICAgMjMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKE5vbmUpCi0gICAgICAgICAgICAgMjYgUkVUVVJOX1ZBTFVFCisgIDMgICAgID4+ICAgIDYgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgMTAgSU5QTEFDRV9BREQKKyAgICAgICAgICAgICAxMiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxNCBKVU1QX0FCU09MVVRFICAgICAgICAgICAgNgorICAgICAgICAgICAgIDE2IFBPUF9CTE9DSworICAgICAgICA+PiAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyIChOb25lKQorICAgICAgICAgICAgIDIwIFJFVFVSTl9WQUxVRQogIiIiCiAKIGRpc190cmFjZWJhY2sgPSAiIiJcCi0lM2QgICAgICAgICAgIDAgU0VUVVBfRVhDRVBUICAgICAgICAgICAgMTIgKHRvIDE1KQorJTNkICAgICAgICAgICAwIFNFVFVQX0VYQ0VQVCAgICAgICAgICAgIDEyICh0byAxNCkKIAotJTNkICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgwKQotICAgIC0tPiAgICAgICA5IEJJTkFSWV9UUlVFX0RJVklERQotICAgICAgICAgICAgIDEwIFBPUF9UT1AKLSAgICAgICAgICAgICAxMSBQT1BfQkxPQ0sKLSAgICAgICAgICAgICAxMiBKVU1QX0ZPUldBUkQgICAgICAgICAgICA0NiAodG8gNjEpCislM2QgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDApCisgICAgLS0+ICAgICAgIDYgQklOQVJZX1RSVUVfRElWSURFCisgICAgICAgICAgICAgIDggUE9QX1RPUAorICAgICAgICAgICAgIDEwIFBPUF9CTE9DSworICAgICAgICAgICAgIDEyIEpVTVBfRk9SV0FSRCAgICAgICAgICAgIDQwICh0byA1NCkKIAotJTNkICAgICA+PiAgIDE1IERVUF9UT1AKKyUzZCAgICAgPj4gICAxNCBEVVBfVE9QCiAgICAgICAgICAgICAgMTYgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKEV4Y2VwdGlvbikKLSAgICAgICAgICAgICAxOSBDT01QQVJFX09QICAgICAgICAgICAgICAxMCAoZXhjZXB0aW9uIG1hdGNoKQotICAgICAgICAgICAgIDIyIFBPUF9KVU1QX0lGX0ZBTFNFICAgICAgIDYwCi0gICAgICAgICAgICAgMjUgUE9QX1RPUAotICAgICAgICAgICAgIDI2IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChlKQotICAgICAgICAgICAgIDI5IFBPUF9UT1AKLSAgICAgICAgICAgICAzMCBTRVRVUF9GSU5BTExZICAgICAgICAgICAxNCAodG8gNDcpCisgICAgICAgICAgICAgMTggQ09NUEFSRV9PUCAgICAgICAgICAgICAgMTAgKGV4Y2VwdGlvbiBtYXRjaCkKKyAgICAgICAgICAgICAyMCBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICA1MgorICAgICAgICAgICAgIDIyIFBPUF9UT1AKKyAgICAgICAgICAgICAyNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKKyAgICAgICAgICAgICAyNiBQT1BfVE9QCisgICAgICAgICAgICAgMjggU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTIgKHRvIDQyKQogCi0lM2QgICAgICAgICAgMzMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgMzYgTE9BRF9BVFRSICAgICAgICAgICAgICAgIDEgKF9fdHJhY2ViYWNrX18pCi0gICAgICAgICAgICAgMzkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDEgKHRiKQotICAgICAgICAgICAgIDQyIFBPUF9CTE9DSwotICAgICAgICAgICAgIDQzIFBPUF9FWENFUFQKLSAgICAgICAgICAgICA0NCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgPj4gICA0NyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICA1MCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICA1MyBERUxFVEVfRkFTVCAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICA1NiBFTkRfRklOQUxMWQotICAgICAgICAgICAgIDU3IEpVTVBfRk9SV0FSRCAgICAgICAgICAgICAxICh0byA2MSkKLSAgICAgICAgPj4gICA2MCBFTkRfRklOQUxMWQorJTNkICAgICAgICAgIDMwIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDMyIExPQURfQVRUUiAgICAgICAgICAgICAgICAxIChfX3RyYWNlYmFja19fKQorICAgICAgICAgICAgIDM0IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAxICh0YikKKyAgICAgICAgICAgICAzNiBQT1BfQkxPQ0sKKyAgICAgICAgICAgICAzOCBQT1BfRVhDRVBUCisgICAgICAgICAgICAgNDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgID4+ICAgNDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgNDQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgNDYgREVMRVRFX0ZBU1QgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgNDggRU5EX0ZJTkFMTFkKKyAgICAgICAgICAgICA1MCBKVU1QX0ZPUldBUkQgICAgICAgICAgICAgMiAodG8gNTQpCisgICAgICAgID4+ICAgNTIgRU5EX0ZJTkFMTFkKIAotJTNkICAgICA+PiAgIDYxIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICh0YikKLSAgICAgICAgICAgICA2NCBSRVRVUk5fVkFMVUUKKyUzZCAgICAgPj4gICA1NCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAodGIpCisgICAgICAgICAgICAgNTYgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgMiwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDMsCiAgICAgICAgVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyA0LAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgNSkKIAorZGVmIF9mc3RyaW5nKGEsIGIsIGMsIGQpOgorICAgIHJldHVybiBmJ3thfSB7Yjo0fSB7YyFyfSB7ZCFyOjR9JworCitkaXNfZnN0cmluZyA9ICIiIlwKKyUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYSkKKyAgICAgICAgICAgICAgMiBGT1JNQVRfVkFMVUUgICAgICAgICAgICAgMAorICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgnICcpCisgICAgICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKGIpCisgICAgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKCc0JykKKyAgICAgICAgICAgICAxMCBGT1JNQVRfVkFMVUUgICAgICAgICAgICAgNCAod2l0aCBmb3JtYXQpCisgICAgICAgICAgICAgMTIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKCcgJykKKyAgICAgICAgICAgICAxNCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMiAoYykKKyAgICAgICAgICAgICAxNiBGT1JNQVRfVkFMVUUgICAgICAgICAgICAgMiAocmVwcikKKyAgICAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoJyAnKQorICAgICAgICAgICAgIDIwIExPQURfRkFTVCAgICAgICAgICAgICAgICAzIChkKQorICAgICAgICAgICAgIDIyIExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgnNCcpCisgICAgICAgICAgICAgMjQgRk9STUFUX1ZBTFVFICAgICAgICAgICAgIDYgKHJlcHIsIHdpdGggZm9ybWF0KQorICAgICAgICAgICAgIDI2IEJVSUxEX1NUUklORyAgICAgICAgICAgICA3CisgICAgICAgICAgICAgMjggUkVUVVJOX1ZBTFVFCisiIiIgJSAoX2ZzdHJpbmcuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKKwogZGVmIF9nKHgpOgogICAgIHlpZWxkIHgKIApAQCAtMzQ1LDYgKzM5OCw3IEBACiAgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfc3RyKHNlbGYpOgogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoZXhwcl9zdHIsIGRpc19leHByX3N0cikKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KHNpbXBsZV9zdG10X3N0ciwgZGlzX3NpbXBsZV9zdG10X3N0cikKKyAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KGFubm90X3N0bXRfc3RyLCBkaXNfYW5ub3Rfc3RtdF9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChjb21wb3VuZF9zdG10X3N0ciwgZGlzX2NvbXBvdW5kX3N0bXRfc3RyKQogCiAgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfYnl0ZXMoc2VsZik6CkBAIC0zNzEsNiArNDI1LDkgQEAKICAgICAgICAgZ2VuX2Rpc2FzID0gc2VsZi5nZXRfZGlzYXNzZW1ibHkoX2coMSkpICAjIERpc2Fzc2VtYmxlIGdlbmVyYXRvciBpdHNlbGYKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZW5fZGlzYXMsIGdlbl9mdW5jX2Rpc2FzKQogCisgICAgZGVmIHRlc3RfZGlzYXNzZW1ibGVfZnN0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KF9mc3RyaW5nLCBkaXNfZnN0cmluZykKKwogICAgIGRlZiB0ZXN0X2Rpc19ub25lKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkZWwgc3lzLmxhc3RfdHJhY2ViYWNrCkBAIC01NDEsNyArNTk4LDcgQEAKIEt3LW9ubHkgYXJndW1lbnRzOiAwCiBOdW1iZXIgb2YgbG9jYWxzOiAgMgogU3RhY2sgc2l6ZTogICAgICAgIDE3Ci1GbGFnczogICAgICAgICAgICAgT1BUSU1JWkVELCBORVdMT0NBTFMsIEdFTkVSQVRPUiwgTk9GUkVFLCBDT1JPVVRJTkUKK0ZsYWdzOiAgICAgICAgICAgICBPUFRJTUlaRUQsIE5FV0xPQ0FMUywgTk9GUkVFLCBDT1JPVVRJTkUKIENvbnN0YW50czoKICAgIDA6IE5vbmUKICAgIDE6IDEiIiIKQEAgLTY0OSwxNzEgKzcwNiwxNjkgQEAKIAogSW5zdHJ1Y3Rpb24gPSBkaXMuSW5zdHJ1Y3Rpb24KIGV4cGVjdGVkX29waW5mb19vdXRlciA9IFsKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEsIGFyZ3ZhbD0zLCBhcmdyZXByPSczJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9mLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfZiksIG9mZnNldD0xNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYnIiwgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9DTE9TVVJFJywgb3Bjb2RlPTEzNCwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjcsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MzMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0nJywgYXJncmVwcj0iJyciLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTM5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTElTVCcsIG9wY29kZT0xMDMsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTUFQJywgb3Bjb2RlPTEwNSwgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9NDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0nSGVsbG8gd29ybGQhJywgYXJncmVwcj0iJ0hlbGxvIHdvcmxkISciLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTcsIGFyZ3ZhbD03LCBhcmdyZXByPSc3IHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTU1LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OCwgYXJndmFsPSgzLCA0KSwgYXJncmVwcj0nKDMsIDQpJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTIsIGFyZ3ZhbD0yLCBhcmdyZXByPScnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2YsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9mKSwgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nb3V0ZXIuPGxvY2Fscz4uZicsIGFyZ3JlcHI9IidvdXRlci48bG9jYWxzPi5mJyIsIG9mZnNldD0xMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J01BS0VfRlVOQ1RJT04nLCBvcGNvZGU9MTMyLCBhcmc9OSwgYXJndmFsPTksIGFyZ3JlcHI9JycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPScnLCBhcmdyZXByPSInJyIsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9MSVNUJywgb3Bjb2RlPTEwMywgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9MjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9NQVAnLCBvcGNvZGU9MTA1LCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPSdIZWxsbyB3b3JsZCEnLCBhcmdyZXByPSInSGVsbG8gd29ybGQhJyIsIG9mZnNldD0zMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NywgYXJndmFsPTcsIGFyZ3JlcHI9JycsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogZXhwZWN0ZWRfb3BpbmZvX2YgPSBbCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9NSwgYXJncmVwcj0nNScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0zLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MCwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0xLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JycsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2lubmVyLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfaW5uZXIpLCBvZmZzZXQ9MjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lcicsIGFyZ3JlcHI9IidvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJyIsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J01BS0VfQ0xPU1VSRScsIG9wY29kZT0xMzQsIGFyZz0yLCBhcmd2YWw9MiwgYXJncmVwcj0nJywgb2Zmc2V0PTI3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2lubmVyJywgYXJncmVwcj0naW5uZXInLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MzMsIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MzksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9NDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9NDUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPSc0IHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTQ4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2lubmVyJywgYXJncmVwcj0naW5uZXInLCBvZmZzZXQ9NTIsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9KDUsIDYpLCBhcmdyZXByPScoNSwgNiknLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0yLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTAsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0xLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfaW5uZXIsIGFyZ3JlcHI9cmVwcihjb2RlX29iamVjdF9pbm5lciksIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJywgYXJncmVwcj0iJ291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInIiwgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTUFLRV9GVU5DVElPTicsIG9wY29kZT0xMzIsIGFyZz05LCBhcmd2YWw9OSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2lubmVyJywgYXJncmVwcj0naW5uZXInLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9MjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPScnLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0naW5uZXInLCBhcmdyZXByPSdpbm5lcicsIG9mZnNldD0zNCwgc3RhcnRzX2xpbmU9NiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogZXhwZWN0ZWRfb3BpbmZvX2lubmVyID0gWwogICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0wLCBzdGFydHNfbGluZT00LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0nZScsIGFyZ3JlcHI9J2UnLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MSwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9NiwgYXJndmFsPTYsIGFyZ3JlcHI9JzYgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MSwgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTMsIGFyZ3ZhbD0nZCcsIGFyZ3JlcHI9J2QnLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2UnLCBhcmdyZXByPSdlJywgb2Zmc2V0PTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTEsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTYsIGFyZ3ZhbD02LCBhcmdyZXByPScnLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKIF0KIAogZXhwZWN0ZWRfb3BpbmZvX2p1bXB5ID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NjgsIGFyZ3ZhbD03MSwgYXJncmVwcj0ndG8gNzEnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncmFuZ2UnLCBhcmdyZXByPSdyYW5nZScsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JzEwJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdHRVRfSVRFUicsIG9wY29kZT02OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdGT1JfSVRFUicsIG9wY29kZT05MywgYXJnPTQ0LCBhcmd2YWw9NjAsIGFyZ3JlcHI9J3RvIDYwJywgb2Zmc2V0PTEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTksIHN0YXJ0c19saW5lPTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0yMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjksIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTM1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NDQsIGFyZ3ZhbD00NCwgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NDEsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD00NCwgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD00Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD01MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEzLCBhcmd2YWw9MTMsIGFyZ3JlcHI9JycsIG9mZnNldD01Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTU2LCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTYwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NjEsIHN0YXJ0c19saW5lPTEwLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nLCBhcmdyZXByPSInSSBjYW4gaGF6IGVsc2UgY2xhdXNlPyciLCBvZmZzZXQ9NjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTY3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD03MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NjgsIGFyZ3ZhbD0xNDIsIGFyZ3JlcHI9J3RvIDE0MicsIG9mZnNldD03MSwgc3RhcnRzX2xpbmU9MTEsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTc0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMzEsIGFyZ3ZhbD0xMzEsIGFyZ3JlcHI9JycsIG9mZnNldD03Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD04MCwgc3RhcnRzX2xpbmU9MTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD04Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9ODYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTg5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9OTAsIHN0YXJ0c19saW5lPTEzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD05Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0lOUExBQ0VfU1VCVFJBQ1QnLCBvcGNvZGU9NTYsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTk3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTAwLCBzdGFydHNfbGluZT0xNCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9MTAzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTEwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTExNSwgYXJndmFsPTExNSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTExMiwgc3RhcnRzX2xpbmU9MTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMTUsIHN0YXJ0c19saW5lPTE2LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTExOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0xMjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz03NCwgYXJndmFsPTc0LCBhcmdyZXByPScnLCBvZmZzZXQ9MTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTI3LCBzdGFydHNfbGluZT0xNywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTMyLCBzdGFydHNfbGluZT0xOSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPSdXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JywgYXJncmVwcj0iJ1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nIiwgb2Zmc2V0PTEzNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9GSU5BTExZJywgb3Bjb2RlPTEyMiwgYXJnPTczLCBhcmd2YWw9MjE4LCBhcmdyZXByPSd0byAyMTgnLCBvZmZzZXQ9MTQyLCBzdGFydHNfbGluZT0yMCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRVhDRVBUJywgb3Bjb2RlPTEyMSwgYXJnPTEyLCBhcmd2YWw9MTYwLCBhcmdyZXByPSd0byAxNjAnLCBvZmZzZXQ9MTQ1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0xNDgsIHN0YXJ0c19saW5lPTIxLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9MCwgYXJncmVwcj0nMCcsIG9mZnNldD0xNTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCSU5BUllfVFJVRV9ESVZJREUnLCBvcGNvZGU9MjcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjgsIGFyZ3ZhbD0xODgsIGFyZ3JlcHI9J3RvIDE4OCcsIG9mZnNldD0xNTcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdEVVBfVE9QJywgb3Bjb2RlPTQsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2MCwgc3RhcnRzX2xpbmU9MjIsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTIsIGFyZ3ZhbD0nWmVyb0RpdmlzaW9uRXJyb3InLCBhcmdyZXByPSdaZXJvRGl2aXNpb25FcnJvcicsIG9mZnNldD0xNjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTEwLCBhcmd2YWw9J2V4Y2VwdGlvbiBtYXRjaCcsIGFyZ3JlcHI9J2V4Y2VwdGlvbiBtYXRjaCcsIG9mZnNldD0xNjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xODcsIGFyZ3ZhbD0xODcsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTczLCBzdGFydHNfbGluZT0yMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OCwgYXJndmFsPSdIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJywgYXJncmVwcj0iJ0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nIiwgb2Zmc2V0PTE3Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MTc5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfRVhDRVBUJywgb3Bjb2RlPTg5LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjcsIGFyZ3ZhbD0yMTQsIGFyZ3JlcHI9J3RvIDIxNCcsIG9mZnNldD0xODQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xODgsIHN0YXJ0c19saW5lPTI1LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9XSVRIJywgb3Bjb2RlPTE0MywgYXJnPTE3LCBhcmd2YWw9MjExLCBhcmdyZXByPSd0byAyMTEnLCBvZmZzZXQ9MTkxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0xLCBhcmd2YWw9J2RvZGd5JywgYXJncmVwcj0nZG9kZ3knLCBvZmZzZXQ9MTk0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE5Nywgc3RhcnRzX2xpbmU9MjYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTksIGFyZ3ZhbD0nTmV2ZXIgcmVhY2ggdGhpcycsIGFyZ3JlcHI9IidOZXZlciByZWFjaCB0aGlzJyIsIG9mZnNldD0yMDAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjA2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIwOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9TVEFSVCcsIG9wY29kZT04MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjExLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfRklOSVNIJywgb3Bjb2RlPTgyLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTIxOCwgc3RhcnRzX2xpbmU9MjgsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MTAsIGFyZ3ZhbD0iT0ssIG5vdyB3ZSdyZSBkb25lIiwgYXJncmVwcj0nIk9LLCBub3cgd2VcJ3JlIGRvbmUiJywgb2Zmc2V0PTIyMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXInLCBvZmZzZXQ9MjI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMjcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMjksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIzMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NTIsIGFyZ3ZhbD01NCwgYXJncmVwcj0ndG8gNTQnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTAsIGFyZ3ZhbD0ncmFuZ2UnLCBhcmdyZXByPSdyYW5nZScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JzEwJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0dFVF9JVEVSJywgb3Bjb2RlPTY4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRk9SX0lURVInLCBvcGNvZGU9OTMsIGFyZz0zMiwgYXJndmFsPTQ0LCBhcmdyZXByPSd0byA0NCcsIG9mZnNldD0xMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT00LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPTUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MzIsIGFyZ3ZhbD0zMiwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMCwgYXJndmFsPTEwLCBhcmdyZXByPScnLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9NywgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD0zNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD0zNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTEwLCBhcmd2YWw9MTAsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTQwLCBzdGFydHNfbGluZT04LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz0xMCwgYXJndmFsPTEwLCBhcmdyZXByPScnLCBvZmZzZXQ9NDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTQ0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NDYsIHN0YXJ0c19saW5lPTEwLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nLCBhcmdyZXByPSInSSBjYW4gaGF6IGVsc2UgY2xhdXNlPyciLCBvZmZzZXQ9NDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9NTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTUyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfTE9PUCcsIG9wY29kZT0xMjAsIGFyZz01MiwgYXJndmFsPTEwOCwgYXJncmVwcj0ndG8gMTA4Jywgb2Zmc2V0PTU0LCBzdGFydHNfbGluZT0xMSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTk4LCBhcmd2YWw9OTgsIGFyZ3JlcHI9JycsIG9mZnNldD01OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD02MCwgc3RhcnRzX2xpbmU9MTIsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD02Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD02NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD02OCwgc3RhcnRzX2xpbmU9MTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSU5QTEFDRV9TVUJUUkFDVCcsIG9wY29kZT01NiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03Niwgc3RhcnRzX2xpbmU9MTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTc4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz00LCBhcmd2YWw9Jz4nLCBhcmdyZXByPSc+Jywgb2Zmc2V0PTgwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9ODYsIGFyZ3ZhbD04NiwgYXJncmVwcj0nJywgb2Zmc2V0PTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz01NiwgYXJndmFsPTU2LCBhcmdyZXByPScnLCBvZmZzZXQ9ODQsIHN0YXJ0c19saW5lPTE1LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODYsIHN0YXJ0c19saW5lPTE2LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTIsIGFyZ3ZhbD00LCBhcmdyZXByPSc0Jywgb2Zmc2V0PTg4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0wLCBhcmd2YWw9JzwnLCBhcmdyZXByPSc8Jywgb2Zmc2V0PTkwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NTYsIGFyZ3ZhbD01NiwgYXJncmVwcj0nJywgb2Zmc2V0PTkyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlJFQUtfTE9PUCcsIG9wY29kZT04MCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OTQsIHN0YXJ0c19saW5lPTE3LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9BQlNPTFVURScsIG9wY29kZT0xMTMsIGFyZz01NiwgYXJndmFsPTU2LCBhcmdyZXByPScnLCBvZmZzZXQ9OTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTAwLCBzdGFydHNfbGluZT0xOSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NiwgYXJndmFsPSdXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JywgYXJncmVwcj0iJ1dobyBsZXQgbG9sY2F0eiBpbnRvIHRoaXMgdGVzdCBzdWl0ZT8nIiwgb2Zmc2V0PTEwMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0ZJTkFMTFknLCBvcGNvZGU9MTIyLCBhcmc9NzAsIGFyZ3ZhbD0xODAsIGFyZ3JlcHI9J3RvIDE4MCcsIG9mZnNldD0xMDgsIHN0YXJ0c19saW5lPTIwLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9FWENFUFQnLCBvcGNvZGU9MTIxLCBhcmc9MTIsIGFyZ3ZhbD0xMjQsIGFyZ3JlcHI9J3RvIDEyNCcsIG9mZnNldD0xMTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTExMiwgc3RhcnRzX2xpbmU9MjEsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0wLCBhcmdyZXByPScwJywgb2Zmc2V0PTExNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JJTkFSWV9UUlVFX0RJVklERScsIG9wY29kZT0yNywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yOCwgYXJndmFsPTE1MiwgYXJncmVwcj0ndG8gMTUyJywgb2Zmc2V0PTEyMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0RVUF9UT1AnLCBvcGNvZGU9NCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTI0LCBzdGFydHNfbGluZT0yMiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MiwgYXJndmFsPSdaZXJvRGl2aXNpb25FcnJvcicsIGFyZ3JlcHI9J1plcm9EaXZpc2lvbkVycm9yJywgb2Zmc2V0PTEyNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MTAsIGFyZ3ZhbD0nZXhjZXB0aW9uIG1hdGNoJywgYXJncmVwcj0nZXhjZXB0aW9uIG1hdGNoJywgb2Zmc2V0PTEyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTE1MCwgYXJndmFsPTE1MCwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTMyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xMzgsIHN0YXJ0c19saW5lPTIzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz04LCBhcmd2YWw9J0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nLCBhcmdyZXByPSInSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLiciLCBvZmZzZXQ9MTQwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQ0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0VYQ0VQVCcsIG9wY29kZT04OSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQ2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI2LCBhcmd2YWw9MTc2LCBhcmdyZXByPSd0byAxNzYnLCBvZmZzZXQ9MTQ4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTUyLCBzdGFydHNfbGluZT0yNSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfV0lUSCcsIG9wY29kZT0xNDMsIGFyZz0xNCwgYXJndmFsPTE3MCwgYXJncmVwcj0ndG8gMTcwJywgb2Zmc2V0PTE1NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MSwgYXJndmFsPSdkb2RneScsIGFyZ3JlcHI9J2RvZGd5Jywgb2Zmc2V0PTE1Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNTgsIHN0YXJ0c19saW5lPTI2LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz05LCBhcmd2YWw9J05ldmVyIHJlYWNoIHRoaXMnLCBhcmdyZXByPSInTmV2ZXIgcmVhY2ggdGhpcyciLCBvZmZzZXQ9MTYwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE2OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1dJVEhfQ0xFQU5VUF9TVEFSVCcsIG9wY29kZT04MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfRklOSVNIJywgb3Bjb2RlPTgyLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTc0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTc4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE4MCwgc3RhcnRzX2xpbmU9MjgsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MTAsIGFyZ3ZhbD0iT0ssIG5vdyB3ZSdyZSBkb25lIiwgYXJncmVwcj0nIk9LLCBub3cgd2VcJ3JlIGRvbmUiJywgb2Zmc2V0PTE4Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xODQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE5MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTkyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKICMgT25lIGxhc3QgcGllY2Ugb2YgaW5zcGVjdCBmb2RkZXIgdG8gY2hlY2sgdGhlIGRlZmF1bHQgbGluZSBudW1iZXIgaGFuZGxpbmcKIGRlZiBzaW1wbGUoKTogcGFzcwogZXhwZWN0ZWRfb3BpbmZvX3NpbXBsZSA9IFsKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPXNpbXBsZS5fX2NvZGVfXy5jb19maXJzdGxpbmVubywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSkKIF0KIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKaW5kZXggMzMxNjNiOS4uMjI1OGM2YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQpAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgLi4uCiAgICAgLi4uIE5vbi1leGFtcGxlIHRleHQuCiAgICAgLi4uCi0gICAgLi4uICAgICA+Pj4gcHJpbnQoJ2Fub3RoZXJcZXhhbXBsZScpCisgICAgLi4uICAgICA+Pj4gcHJpbnQoJ2Fub3RoZXJcXGV4YW1wbGUnKQogICAgIC4uLiAgICAgYW5vdGhlcgogICAgIC4uLiAgICAgZXhhbXBsZQogICAgIC4uLiAnJycKQEAgLTE4NzYsNyArMTg3Niw2IEBACiAgICAgICAgIFRvIGRlbW9uc3RyYXRlIHRoaXMsIHdlJ2xsIGNyZWF0ZSBhIGZha2Ugc3RhbmRhcmQgaW5wdXQgdGhhdAogICAgICAgICBjYXB0dXJlcyBvdXIgZGVidWdnZXIgaW5wdXQ6CiAKLSAgICAgICAgICA+Pj4gaW1wb3J0IHRlbXBmaWxlCiAgICAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KICAgICAgICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCiAgICAgICAgICAgLi4uICAgICdwcmludCh4KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBieSB0aGUgZXhhbXBsZQpAQCAtMTkxNyw3ICsxOTE2LDcgQEAKICAgICAgICAgICAuLi4gZmluYWxseToKICAgICAgICAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KICAgICAgICAgICAtLVJldHVybi0tCi0gICAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbOF0+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKKyAgICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZVs3XT4oMyljYWxsc19zZXRfdHJhY2UoKS0+Tm9uZQogICAgICAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQogICAgICAgICAgIChQZGIpIHByaW50KHkpCiAgICAgICAgICAgMgpAQCAtMjc5OCw3ICsyNzk3LDYgQEAKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgiICAgICAgICdhYmMgZGVmJ1xuIikKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgiXG4iKQogICAgIC4uLiAgICAgICAgIF8gPSBmLndyaXRlKCcgICBcIlwiXCJcbicpCi0gICAgLi4uICAgICBpbXBvcnQgc2h1dGlsCiAgICAgLi4uICAgICByYzEsIG91dDEsIGVycjEgPSBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fZmFpbHVyZSgKICAgICAuLi4gICAgICAgICAgICAgJy1tJywgJ2RvY3Rlc3QnLCBmbiwgZm4yKQogICAgIC4uLiAgICAgcmMyLCBvdXQyLCBlcnIyID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKApAQCAtMjk0MiwxMiArMjk0MCwxMSBAQAogZGVmIHRlc3RfbWFpbigpOgogICAgICMgQ2hlY2sgdGhlIGRvY3Rlc3QgY2FzZXMgaW4gZG9jdGVzdCBpdHNlbGY6CiAgICAgcmV0ID0gc3VwcG9ydC5ydW5fZG9jdGVzdChkb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKKwogICAgICMgQ2hlY2sgdGhlIGRvY3Rlc3QgY2FzZXMgZGVmaW5lZCBoZXJlOgogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9kb2N0ZXN0CiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X2RvY3Rlc3QsIHZlcmJvc2l0eT1UcnVlKQogCi1pbXBvcnQgc3lzLCByZSwgaW8KLQogZGVmIHRlc3RfY292ZXJhZ2UoY292ZXJkaXIpOgogICAgIHRyYWNlID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0cmFjZScpCiAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLmJhc2VfcHJlZml4LCBzeXMuYmFzZV9leGVjX3ByZWZpeCxdLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X2R0cmFjZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTIzOWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9kdHJhY2UucHkKQEAgLTAsMCArMSwxNzggQEAKK2ltcG9ydCBkaXMKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIHJ1bl91bml0dGVzdAorCisKK2RlZiBhYnNwYXRoKGZpbGVuYW1lKToKKyAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKGZpbmRmaWxlKGZpbGVuYW1lLCBzdWJkaXI9ImR0cmFjZWRhdGEiKSkKKworCitkZWYgbm9ybWFsaXplX3RyYWNlX291dHB1dChvdXRwdXQpOgorICAgICIiIk5vcm1hbGl6ZSBEVHJhY2Ugb3V0cHV0IGZvciBjb21wYXJpc29uLgorCisgICAgRFRyYWNlIGtlZXBzIGEgcGVyLUNQVSBidWZmZXIsIGFuZCB3aGVuIHNob3dpbmcgdGhlIGZpcmVkIHByb2JlcywgYnVmZmVycworICAgIGFyZSBjb25jYXRlbmF0ZWQuIFNvIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1vdmVzIG91ciB0aHJlYWQgYXJvdW5kLCB0aGUKKyAgICBzdHJhaWdodCByZXN1bHQgY2FuIGJlICJub24tY2F1c2FsIi4gU28gd2UgYWRkIHRpbWVzdGFtcHMgdG8gdGhlIHByb2JlCisgICAgZmlyaW5nLCBzb3J0IGJ5IHRoYXQgZmllbGQsIHRoZW4gc3RyaXAgaXQgZnJvbSB0aGUgb3V0cHV0IiIiCisKKyAgICAjIFdoZW4gY29tcGlsaW5nIHdpdGggJy0td2l0aC1weWRlYnVnJywgc3RyaXAgJ1sjIHJlZnNdJyBkZWJ1ZyBvdXRwdXQuCisgICAgb3V0cHV0ID0gcmUuc3ViKHIiXFtbMC05XSsgcmVmc1xdIiwgIiIsIG91dHB1dCkKKyAgICB0cnk6CisgICAgICAgIHJlc3VsdCA9IFsKKyAgICAgICAgICAgIHJvdy5zcGxpdCgiXHQiKQorICAgICAgICAgICAgZm9yIHJvdyBpbiBvdXRwdXQuc3BsaXRsaW5lcygpCisgICAgICAgICAgICBpZiByb3cgYW5kIG5vdCByb3cuc3RhcnRzd2l0aCgnIycpCisgICAgICAgIF0KKyAgICAgICAgcmVzdWx0LnNvcnQoa2V5PWxhbWJkYSByb3c6IGludChyb3dbMF0pKQorICAgICAgICByZXN1bHQgPSBbcm93WzFdIGZvciByb3cgaW4gcmVzdWx0XQorICAgICAgICByZXR1cm4gIlxuIi5qb2luKHJlc3VsdCkKKyAgICBleGNlcHQgKEluZGV4RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICJ0cmFjZXIgcHJvZHVjZWQgdW5wYXJzZWFibGUgb3V0cHV0Olxue30iLmZvcm1hdChvdXRwdXQpCisgICAgICAgICkKKworCitjbGFzcyBUcmFjZUJhY2tlbmQ6CisgICAgRVhURU5TSU9OID0gTm9uZQorICAgIENPTU1BTkQgPSBOb25lCisgICAgQ09NTUFORF9BUkdTID0gW10KKworICAgIGRlZiBydW5fY2FzZShzZWxmLCBuYW1lLCBvcHRpbWl6ZV9weXRob249Tm9uZSk6CisgICAgICAgIGFjdHVhbF9vdXRwdXQgPSBub3JtYWxpemVfdHJhY2Vfb3V0cHV0KHNlbGYudHJhY2VfcHl0aG9uKAorICAgICAgICAgICAgc2NyaXB0X2ZpbGU9YWJzcGF0aChuYW1lICsgc2VsZi5FWFRFTlNJT04pLAorICAgICAgICAgICAgcHl0aG9uX2ZpbGU9YWJzcGF0aChuYW1lICsgIi5weSIpLAorICAgICAgICAgICAgb3B0aW1pemVfcHl0aG9uPW9wdGltaXplX3B5dGhvbikpCisKKyAgICAgICAgd2l0aCBvcGVuKGFic3BhdGgobmFtZSArIHNlbGYuRVhURU5TSU9OICsgIi5leHBlY3RlZCIpKSBhcyBmOgorICAgICAgICAgICAgZXhwZWN0ZWRfb3V0cHV0ID0gZi5yZWFkKCkucnN0cmlwKCkKKworICAgICAgICByZXR1cm4gKGV4cGVjdGVkX291dHB1dCwgYWN0dWFsX291dHB1dCkKKworICAgIGRlZiBnZW5lcmF0ZV90cmFjZV9jb21tYW5kKHNlbGYsIHNjcmlwdF9maWxlLCBzdWJjb21tYW5kPU5vbmUpOgorICAgICAgICBjb21tYW5kID0gc2VsZi5DT01NQU5EICsgW3NjcmlwdF9maWxlXQorICAgICAgICBpZiBzdWJjb21tYW5kOgorICAgICAgICAgICAgY29tbWFuZCArPSBbIi1jIiwgc3ViY29tbWFuZF0KKyAgICAgICAgcmV0dXJuIGNvbW1hbmQKKworICAgIGRlZiB0cmFjZShzZWxmLCBzY3JpcHRfZmlsZSwgc3ViY29tbWFuZD1Ob25lKToKKyAgICAgICAgY29tbWFuZCA9IHNlbGYuZ2VuZXJhdGVfdHJhY2VfY29tbWFuZChzY3JpcHRfZmlsZSwgc3ViY29tbWFuZCkKKyAgICAgICAgc3Rkb3V0LCBfID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKS5jb21tdW5pY2F0ZSgpCisgICAgICAgIHJldHVybiBzdGRvdXQKKworICAgIGRlZiB0cmFjZV9weXRob24oc2VsZiwgc2NyaXB0X2ZpbGUsIHB5dGhvbl9maWxlLCBvcHRpbWl6ZV9weXRob249Tm9uZSk6CisgICAgICAgIHB5dGhvbl9mbGFncyA9IFtdCisgICAgICAgIGlmIG9wdGltaXplX3B5dGhvbjoKKyAgICAgICAgICAgIHB5dGhvbl9mbGFncy5leHRlbmQoWyItTyJdICogb3B0aW1pemVfcHl0aG9uKQorICAgICAgICBzdWJjb21tYW5kID0gIiAiLmpvaW4oW3N5cy5leGVjdXRhYmxlXSArIHB5dGhvbl9mbGFncyArIFtweXRob25fZmlsZV0pCisgICAgICAgIHJldHVybiBzZWxmLnRyYWNlKHNjcmlwdF9maWxlLCBzdWJjb21tYW5kKQorCisgICAgZGVmIGFzc2VydF91c2FibGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYudHJhY2UoYWJzcGF0aCgiYXNzZXJ0X3VzYWJsZSIgKyBzZWxmLkVYVEVOU0lPTikpCisgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuc3RyaXAoKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZm5mZToKKyAgICAgICAgICAgIG91dHB1dCA9IHN0cihmbmZlKQorICAgICAgICBpZiBvdXRwdXQgIT0gInByb2JlOiBzdWNjZXNzIjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KAorICAgICAgICAgICAgICAgICJ7fSgxKSBmYWlsZWQ6IHt9Ii5mb3JtYXQoc2VsZi5DT01NQU5EWzBdLCBvdXRwdXQpCisgICAgICAgICAgICApCisKKworY2xhc3MgRFRyYWNlQmFja2VuZChUcmFjZUJhY2tlbmQpOgorICAgIEVYVEVOU0lPTiA9ICIuZCIKKyAgICBDT01NQU5EID0gWyJkdHJhY2UiLCAiLXEiLCAiLXMiXQorCisKK2NsYXNzIFN5c3RlbVRhcEJhY2tlbmQoVHJhY2VCYWNrZW5kKToKKyAgICBFWFRFTlNJT04gPSAiLnN0cCIKKyAgICBDT01NQU5EID0gWyJzdGFwIiwgIi1nIl0KKworCitjbGFzcyBUcmFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHVuaXR0ZXN0LlRlc3RDYXNlIG9wdGlvbnMKKyAgICBtYXhEaWZmID0gTm9uZQorCisgICAgIyBUcmFjZVRlc3RzIG9wdGlvbnMKKyAgICBiYWNrZW5kID0gTm9uZQorICAgIG9wdGltaXplX3B5dGhvbiA9IDAKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmJhY2tlbmQuYXNzZXJ0X3VzYWJsZSgpCisKKyAgICBkZWYgcnVuX2Nhc2Uoc2VsZiwgbmFtZSk6CisgICAgICAgIGFjdHVhbF9vdXRwdXQsIGV4cGVjdGVkX291dHB1dCA9IHNlbGYuYmFja2VuZC5ydW5fY2FzZSgKKyAgICAgICAgICAgIG5hbWUsIG9wdGltaXplX3B5dGhvbj1zZWxmLm9wdGltaXplX3B5dGhvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfb3V0cHV0LCBleHBlY3RlZF9vdXRwdXQpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9lbnRyeV9yZXR1cm4oc2VsZik6CisgICAgICAgIHNlbGYucnVuX2Nhc2UoImNhbGxfc3RhY2siKQorCisgICAgZGVmIHRlc3RfdmVyaWZ5X2NhbGxfb3Bjb2RlcyhzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIG91ciBjYWxsIHN0YWNrIHRlc3QgaGl0cyBhbGwgZnVuY3Rpb24gY2FsbCBvcGNvZGVzIiIiCisKKyAgICAgICAgb3Bjb2RlcyA9IHNldChbIkNBTExfRlVOQ1RJT04iLCAiQ0FMTF9GVU5DVElPTl9FWCIsICJDQUxMX0ZVTkNUSU9OX0tXIl0pCisKKyAgICAgICAgd2l0aCBvcGVuKGFic3BhdGgoImNhbGxfc3RhY2sucHkiKSkgYXMgZjoKKyAgICAgICAgICAgIGNvZGVfc3RyaW5nID0gZi5yZWFkKCkKKworICAgICAgICBkZWYgZ2V0X2Z1bmN0aW9uX2luc3RydWN0aW9ucyhmdW5jbmFtZSk6CisgICAgICAgICAgICAjIFJlY29tcGlsZSB3aXRoIGFwcHJvcHJpYXRlIG9wdGltaXphdGlvbiBzZXR0aW5nCisgICAgICAgICAgICBjb2RlID0gY29tcGlsZShzb3VyY2U9Y29kZV9zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT0iPHN0cmluZz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZT0iZXhlYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1zZWxmLm9wdGltaXplX3B5dGhvbikKKworICAgICAgICAgICAgZm9yIGMgaW4gY29kZS5jb19jb25zdHM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjLCB0eXBlcy5Db2RlVHlwZSkgYW5kIGMuY29fbmFtZSA9PSBmdW5jbmFtZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpcy5nZXRfaW5zdHJ1Y3Rpb25zKGMpCisgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAgICBmb3IgaW5zdHJ1Y3Rpb24gaW4gZ2V0X2Z1bmN0aW9uX2luc3RydWN0aW9ucygnc3RhcnQnKToKKyAgICAgICAgICAgIG9wY29kZXMuZGlzY2FyZChpbnN0cnVjdGlvbi5vcG5hbWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgb3Bjb2RlcykKKworICAgIGRlZiB0ZXN0X2djKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jYXNlKCJnYyIpCisKKyAgICBkZWYgdGVzdF9saW5lKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jYXNlKCJsaW5lIikKKworCitjbGFzcyBEVHJhY2VOb3JtYWxUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gRFRyYWNlQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMAorCisKK2NsYXNzIERUcmFjZU9wdGltaXplZFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBEVHJhY2VCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAyCisKKworY2xhc3MgU3lzdGVtVGFwTm9ybWFsVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IFN5c3RlbVRhcEJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDAKKworCitjbGFzcyBTeXN0ZW1UYXBPcHRpbWl6ZWRUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gU3lzdGVtVGFwQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMgorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoRFRyYWNlTm9ybWFsVGVzdHMsIERUcmFjZU9wdGltaXplZFRlc3RzLCBTeXN0ZW1UYXBOb3JtYWxUZXN0cywKKyAgICAgICAgICAgICAgICAgU3lzdGVtVGFwT3B0aW1pemVkVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5IGIvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CmluZGV4IDUwODBlYzkuLjNhZTA5MGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKQEAgLTEsNyArMSw2IEBACiAjIFRlc3QgdGhlIG1vc3QgZHluYW1pYyBjb3JuZXIgY2FzZXMgb2YgUHl0aG9uJ3MgcnVudGltZSBzZW1hbnRpY3MuCiAKIGltcG9ydCBidWlsdGlucwotaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc3dhcF9pdGVtLCBzd2FwX2F0dHIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZWludHIucHkgYi9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5CmluZGV4IGFhYmFkODMuLjI1Zjg2ZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQpAQCAtMSw3ICsxLDUgQEAKIGltcG9ydCBvcwogaW1wb3J0IHNpZ25hbAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTE2LDE0ICsxNCw4IEBACiAgICAgICAgICMgUnVuIHRoZSB0ZXN0ZXIgaW4gYSBzdWItcHJvY2VzcywgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIG9ubHkgb25lCiAgICAgICAgICMgdGhyZWFkIChmb3IgcmVsaWFibGUgc2lnbmFsIGRlbGl2ZXJ5KS4KICAgICAgICAgdGVzdGVyID0gc3VwcG9ydC5maW5kZmlsZSgiZWludHJfdGVzdGVyLnB5Iiwgc3ViZGlyPSJlaW50cmRhdGEiKQotCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsIHRlc3Rlcl0KLSAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihhcmdzKSBhcyBwcm9jOgotICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gcHJvYy53YWl0KCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2sodGVzdGVyKQorICAgICAgICAjIHVzZSAtdSB0byB0cnkgdG8gZ2V0IHRoZSBmdWxsIG91dHB1dCBpZiB0aGUgdGVzdCBoYW5ncyBvciBjcmFzaAorICAgICAgICBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soIi11IiwgdGVzdGVyKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weQppbmRleCBkNGEwM2VlLi44ODg3NTFlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgZW1haWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQppbmRleCBmN2FjMGUzLi4yNmVjZTY5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CkBAIC01ODEsNyArNTgxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X3F1b3RlZF9wYXJlbnMoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAotICAgICAgICAgICAgJyhmb29cKSBcKFwpYmFyKScsICcoZm9vXCkgXChcKWJhciknLCAnICcsIFtdLCAnJywgWydmb28pICgpYmFyJ10pCisgICAgICAgICAgICByJyhmb29cKSBcKFwpYmFyKScsIHInKGZvb1wpIFwoXCliYXIpJywgJyAnLCBbXSwgJycsIFsnZm9vKSAoKWJhciddKQogCiAgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbm9uX3ByaW50YWJsZShzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCkBAIC02MjUsNyArNjI1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X3FzX2luX25lc3RlZF9jb21tZW50KHNlbGYpOgogICAgICAgICBjb21tZW50ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCi0gICAgICAgICAgICAnKGZvbyAoYlwpKSknLCAnKGZvbyAoYlwpKSknLCAnICcsIFtdLCAnJywgWydmb28gKGJcKSknXSkKKyAgICAgICAgICAgIHInKGZvbyAoYlwpKSknLCByJyhmb28gKGJcKSkpJywgJyAnLCBbXSwgJycsIFtyJ2ZvbyAoYlwpKSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnRbMl0uY29udGVudCwgJ2IpJykKIAogICAgICMgZ2V0X2Nmd3MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CmluZGV4IGY5Y2Q3ZDkuLjFlMGNhZWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQpAQCAtMyw3ICszLDYgQEAKICMgZW1haWwgcGFja2FnZSB1bml0IHRlc3RzIGZvciAob3B0aW9uYWwpIEFzaWFuIGNvZGVjcwogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKIGZyb20gZW1haWwuY2hhcnNldCBpbXBvcnQgQ2hhcnNldApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CmluZGV4IGE1M2NjOWIuLmRhYTEyODUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKQEAgLTMxLDYgKzMxLDcgQEAKIGZyb20gZW1haWwubWltZS5iYXNlIGltcG9ydCBNSU1FQmFzZQogZnJvbSBlbWFpbC5taW1lLm1lc3NhZ2UgaW1wb3J0IE1JTUVNZXNzYWdlCiBmcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Citmcm9tIGVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0IGltcG9ydCBNSU1FTm9uTXVsdGlwYXJ0CiBmcm9tIGVtYWlsIGltcG9ydCB1dGlscwogZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCiBmcm9tIGVtYWlsIGltcG9ydCBlbmNvZGVycwpAQCAtMjA3Nyw3ICsyMDc4LDEzIEBACiAtLT09PT09PT09PT09PT09PTAwMTIzOTQxNjQ9PS0tIiIiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ2V0X3BheWxvYWQoMCkuZ2V0X3BheWxvYWQoKSwgJ1lYTmtaZz09JykKIAorICAgIGRlZiB0ZXN0X21pbWViYXNlX2RlZmF1bHRfcG9saWN5KHNlbGYpOgorICAgICAgICBtID0gTUlNRUJhc2UoJ211bHRpcGFydCcsICdtaXhlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5jb21wYXQzMikKIAorICAgIGRlZiB0ZXN0X21pbWViYXNlX2N1c3RvbV9wb2xpY3koc2VsZik6CisgICAgICAgIG0gPSBNSU1FQmFzZSgnbXVsdGlwYXJ0JywgJ21peGVkJywgcG9saWN5PWVtYWlsLnBvbGljeS5kZWZhdWx0KQorICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuZGVmYXVsdCkKIAogIyBUZXN0IHNvbWUgYmFkbHkgZm9ybWF0dGVkIG1lc3NhZ2VzCiBjbGFzcyBUZXN0Tm9uQ29uZm9ybWFudChUZXN0RW1haWxCYXNlKToKQEAgLTI2NzksNiArMjY4NiwxOSBAQAogICAgICAgICBtc2cgPSBNSU1FTXVsdGlwYXJ0KCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1zZy5pc19tdWx0aXBhcnQoKSkKIAorICAgIGRlZiB0ZXN0X211bHRpcGFydF9kZWZhdWx0X3BvbGljeShzZWxmKToKKyAgICAgICAgbXNnID0gTUlNRU11bHRpcGFydCgpCisgICAgICAgIG1zZ1snVG8nXSA9ICdhQGIuY29tJworICAgICAgICBtc2dbJ1RvJ10gPSAnY0BkLmNvbScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2FsbCgndG8nKSwgWydhQGIuY29tJywgJ2NAZC5jb20nXSkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF9jdXN0b21fcG9saWN5KHNlbGYpOgorICAgICAgICBtc2cgPSBNSU1FTXVsdGlwYXJ0KHBvbGljeT1lbWFpbC5wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgbXNnWydUbyddID0gJ2FAYi5jb20nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBtc2dbJ1RvJ10gPSAnY0BkLmNvbScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlcmUgbWF5IGJlIGF0IG1vc3QgMSBUbyBoZWFkZXJzIGluIGEgbWVzc2FnZScpCiAKICMgQSBnZW5lcmFsIHRlc3Qgb2YgcGFyc2VyLT5tb2RlbC0+Z2VuZXJhdG9yIGlkZW1wb3RlbmN5LiAgSU9XLCByZWFkIGEgbWVzc2FnZQogIyBpbiwgcGFyc2UgaXQgaW50byBhIG1lc3NhZ2Ugb2JqZWN0IHRyZWUsIHRoZW4gd2l0aG91dCB0b3VjaGluZyB0aGUgdHJlZSwKQEAgLTMwMzIsNyArMzA1Miw3IEBACiAKICAgICBkZWYgdGVzdF9lc2NhcGVfYmFja3NsYXNoZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICB1dGlscy5mb3JtYXRhZGRyKCgnQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicsICdwZXJzb25AZG9tLmFpbicpKSwKKyAgICAgICAgICAgIHV0aWxzLmZvcm1hdGFkZHIoKHInQXJ0aHVyIFxCYWNrc2xhc2hcIEZvb2JhcicsICdwZXJzb25AZG9tLmFpbicpKSwKICAgICAgICAgICAgIHInIkFydGh1ciBcXEJhY2tzbGFzaFxcIEZvb2JhciIgPHBlcnNvbkBkb20uYWluPicpCiAgICAgICAgIGEgPSByJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInCiAgICAgICAgIGIgPSAncGVyc29uQGRvbS5haW4nCkBAIC0zMzI4LDYgKzMzNDgsMjcgQEAKICAgICAgICAgZy5mbGF0dGVuKG1zZywgbGluZXNlcD0nXHJcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBtc2d0eHQpCiAKKyAgICBkZWYgdGVzdF9taW1lX2NsYXNzZXNfcG9saWN5X2FyZ3VtZW50KHNlbGYpOgorICAgICAgICB3aXRoIG9wZW5maWxlKCdhdWRpb3Rlc3QuYXUnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIGF1ZGlvZGF0YSA9IGZwLnJlYWQoKQorICAgICAgICB3aXRoIG9wZW5maWxlKCdQeUJhbm5lcjA0OC5naWYnLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIGJpbmRhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgY2xhc3NlcyA9IFsKKyAgICAgICAgICAgIChNSU1FQXBwbGljYXRpb24sICgnJywpKSwKKyAgICAgICAgICAgIChNSU1FQXVkaW8sIChhdWRpb2RhdGEsKSksCisgICAgICAgICAgICAoTUlNRUltYWdlLCAoYmluZGF0YSwpKSwKKyAgICAgICAgICAgIChNSU1FTWVzc2FnZSwgKE1lc3NhZ2UoKSwpKSwKKyAgICAgICAgICAgIChNSU1FTm9uTXVsdGlwYXJ0LCAoJ211bHRpcGFydCcsICdtaXhlZCcpKSwKKyAgICAgICAgICAgIChNSU1FVGV4dCwgKCcnLCkpLAorICAgICAgICBdCisgICAgICAgIGZvciBjbHMsIGNvbnN0cnVjdG9yIGluIGNsYXNzZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbHM9Y2xzLl9fbmFtZV9fLCBwb2xpY3k9J2NvbXBhdDMyJyk6CisgICAgICAgICAgICAgICAgbSA9IGNscygqY29uc3RydWN0b3IpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmNvbXBhdDMyKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xzPWNscy5fX25hbWVfXywgcG9saWN5PSdkZWZhdWx0Jyk6CisgICAgICAgICAgICAgICAgbSA9IGNscygqY29uc3RydWN0b3IsIHBvbGljeT1lbWFpbC5wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuZGVmYXVsdCkKKwogCiAjIFRlc3QgdGhlIGl0ZXJhdG9yL2dlbmVyYXRvcnMKIGNsYXNzIFRlc3RJdGVyYXRvcnMoVGVzdEVtYWlsQmFzZSk6CkBAIC0zNDM2LDcgKzM0NzcsNiBAQAogY2xhc3MgVGVzdEZlZWRQYXJzZXJzKFRlc3RFbWFpbEJhc2UpOgogCiAgICAgZGVmIHBhcnNlKHNlbGYsIGNodW5rcyk6Ci0gICAgICAgIGZyb20gZW1haWwuZmVlZHBhcnNlciBpbXBvcnQgRmVlZFBhcnNlcgogICAgICAgICBmZWVkcGFyc2VyID0gRmVlZFBhcnNlcigpCiAgICAgICAgIGZvciBjaHVuayBpbiBjaHVua3M6CiAgICAgICAgICAgICBmZWVkcGFyc2VyLmZlZWQoY2h1bmspCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQppbmRleCBiMWNiY2UyLi43Yzg4NzdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKQEAgLTE0Myw3ICsxNDMsNyBAQAogICAgIGRlZiB0ZXN0X3NldF9tYW5nbGVfZnJvbV92aWFfcG9saWN5KHNlbGYpOgogICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAogICAgICAgICAgICAgU3ViamVjdDogdGVzdCB0aGF0Ci0gICAgICAgICAgICAgZnJvbSBpcyBtYW5nZWxkIGluIHRoZSBib2R5IQorICAgICAgICAgICAgIGZyb20gaXMgbWFuZ2xlZCBpbiB0aGUgYm9keSEKIAogICAgICAgICAgICAgRnJvbSB0aW1lIHRvIHRpbWUgSSB3cml0ZSBhIHJoeW1lLgogICAgICAgICAgICAgIiIiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CmluZGV4IDU1ZWNkZWEuLmFmODM2ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdHlwZXMKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwogZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5CiBmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKaW5kZXggNDM0NTE2Mi4uZjNhNTdkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X21lc3NhZ2UucHkKQEAgLTc2NCw2ICs3NjQsMjYgQEAKICAgICAgICAgbS5zZXRfY29udGVudChjb250ZW50X21hbmFnZXI9Y20pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnTUlNRS1WZXJzaW9uJ10sICcxLjAnKQogCisgICAgZGVmIHRlc3RfYXNfc3RyaW5nX3VzZXNfbWF4X2hlYWRlcl9sZW5ndGhfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgbSA9IHNlbGYuX3N0cl9tc2coJ1N1YmplY3Q6IGxvbmcgbGluZScgKyAnIGFiJyo1MCArICdcblxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5hc19zdHJpbmcoKS5zdHJpcCgpLnNwbGl0bGluZXMoKSksIDMpCisKKyAgICBkZWYgdGVzdF9hc19zdHJpbmdfYWxsb3dzX21heGhlYWRlcmxlbihzZWxmKToKKyAgICAgICAgbSA9IHNlbGYuX3N0cl9tc2coJ1N1YmplY3Q6IGxvbmcgbGluZScgKyAnIGFiJyo1MCArICdcblxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5hc19zdHJpbmcobWF4aGVhZGVybGVuPTApLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmFzX3N0cmluZyhtYXhoZWFkZXJsZW49MzQpLnN0cmlwKCkuc3BsaXRsaW5lcygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICA2KQorCisgICAgZGVmIHRlc3Rfc3RyX2RlZmF1bHRzX3RvX3BvbGljeV9tYXhfbGluZV9sZW5ndGgoc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiBsb25nIGxpbmUnICsgJyBhYicqNTAgKyAnXG5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN0cihtKS5zdHJpcCgpLnNwbGl0bGluZXMoKSksIDMpCisKKyAgICBkZWYgdGVzdF9zdHJfZGVmYXVsdHNfdG9fdXRmOChzZWxmKToKKyAgICAgICAgbSA9IEVtYWlsTWVzc2FnZSgpCisgICAgICAgIG1bJ1N1YmplY3QnXSA9ICd1bmljw7ZkZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobSksICdTdWJqZWN0OiB1bmljw7ZkZVxuXG4nKQorCiAKIGNsYXNzIFRlc3RNSU1FUGFydChUZXN0RW1haWxNZXNzYWdlQmFzZSwgVGVzdEVtYWlsQmFzZSk6CiAgICAgIyBEb2luZyB0aGUgZnVsbCB0ZXN0IHJ1biBoZXJlIG1heSBzZWVtIGEgYml0IHJlZHVuZGFudCwgc2luY2UgdGhlIHR3bwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkKaW5kZXggOGRkYzE3NjMuLjA2Yzg2NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQpAQCAtMSw3ICsxLDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IGVtYWlsCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlLCBFbWFpbE1lc3NhZ2UKIGZyb20gZW1haWwucG9saWN5IGltcG9ydCBkZWZhdWx0CiBmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQogCkBAIC0zOSwzOCArMzksNzEgQEAKICAgICAgICAgIyBUaGUgdW5pY29kZSBsaW5lIHNwbGl0dGVyIHNwbGl0cyBvbiB1bmljb2RlIGxpbmVicmVha3MsIHdoaWNoIGFyZQogICAgICAgICAjIG1vcmUgbnVtZXJvdXMgdGhhbiBhbGxvd2VkIGJ5IHRoZSBlbWFpbCBSRkNzOyBtYWtlIHN1cmUgd2UgYXJlIG9ubHkKICAgICAgICAgIyBzcGxpdHRpbmcgb24gdGhvc2UgdHdvLgotICAgICAgICBtc2cgPSBzZWxmLnBhcnNlcigKLSAgICAgICAgICAgICJOZXh0LUxpbmU6IG5vdFx4ODVicm9rZW5cclxuIgotICAgICAgICAgICAgIk51bGw6IG5vdFx4MDBicm9rZW5cclxuIgotICAgICAgICAgICAgIlZlcnRpY2FsLVRhYjogbm90XHZicm9rZW5cclxuIgotICAgICAgICAgICAgIkZvcm0tRmVlZDogbm90XGZicm9rZW5cclxuIgotICAgICAgICAgICAgIkZpbGUtU2VwYXJhdG9yOiBub3RceDFDYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJHcm91cC1TZXBhcmF0b3I6IG5vdFx4MURicm9rZW5cclxuIgotICAgICAgICAgICAgIlJlY29yZC1TZXBhcmF0b3I6IG5vdFx4MUVicm9rZW5cclxuIgotICAgICAgICAgICAgIkxpbmUtU2VwYXJhdG9yOiBub3RcdTIwMjhicm9rZW5cclxuIgotICAgICAgICAgICAgIlBhcmFncmFwaC1TZXBhcmF0b3I6IG5vdFx1MjAyOWJyb2tlblxyXG4iCi0gICAgICAgICAgICAiXHJcbiIsCi0gICAgICAgICAgICBwb2xpY3k9ZGVmYXVsdCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5pdGVtcygpLCBbCi0gICAgICAgICAgICAoIk5leHQtTGluZSIsICJub3RceDg1YnJva2VuIiksCi0gICAgICAgICAgICAoIk51bGwiLCAibm90XHgwMGJyb2tlbiIpLAotICAgICAgICAgICAgKCJWZXJ0aWNhbC1UYWIiLCAibm90XHZicm9rZW4iKSwKLSAgICAgICAgICAgICgiRm9ybS1GZWVkIiwgIm5vdFxmYnJva2VuIiksCi0gICAgICAgICAgICAoIkZpbGUtU2VwYXJhdG9yIiwgIm5vdFx4MUNicm9rZW4iKSwKLSAgICAgICAgICAgICgiR3JvdXAtU2VwYXJhdG9yIiwgIm5vdFx4MURicm9rZW4iKSwKLSAgICAgICAgICAgICgiUmVjb3JkLVNlcGFyYXRvciIsICJub3RceDFFYnJva2VuIiksCi0gICAgICAgICAgICAoIkxpbmUtU2VwYXJhdG9yIiwgIm5vdFx1MjAyOGJyb2tlbiIpLAotICAgICAgICAgICAgKCJQYXJhZ3JhcGgtU2VwYXJhdG9yIiwgIm5vdFx1MjAyOWJyb2tlbiIpLAotICAgICAgICBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgpLCAiIikKKyAgICAgICAgZm9yIHBhcnNlciBpbiBzZWxmLnBhcnNlcnM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwYXJzZXI9cGFyc2VyLl9fbmFtZV9fKToKKyAgICAgICAgICAgICAgICBtc2cgPSBwYXJzZXIoCisgICAgICAgICAgICAgICAgICAgICJOZXh0LUxpbmU6IG5vdFx4ODVicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiTnVsbDogbm90XHgwMGJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJWZXJ0aWNhbC1UYWI6IG5vdFx2YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkZvcm0tRmVlZDogbm90XGZicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiRmlsZS1TZXBhcmF0b3I6IG5vdFx4MUNicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiR3JvdXAtU2VwYXJhdG9yOiBub3RceDFEYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlJlY29yZC1TZXBhcmF0b3I6IG5vdFx4MUVicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiTGluZS1TZXBhcmF0b3I6IG5vdFx1MjAyOGJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJQYXJhZ3JhcGgtU2VwYXJhdG9yOiBub3RcdTIwMjlicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIHBvbGljeT1kZWZhdWx0LAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5pdGVtcygpLCBbCisgICAgICAgICAgICAgICAgICAgICgiTmV4dC1MaW5lIiwgIm5vdFx4ODVicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJOdWxsIiwgIm5vdFx4MDBicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJWZXJ0aWNhbC1UYWIiLCAibm90XHZicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJGb3JtLUZlZWQiLCAibm90XGZicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJGaWxlLVNlcGFyYXRvciIsICJub3RceDFDYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiR3JvdXAtU2VwYXJhdG9yIiwgIm5vdFx4MURicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJSZWNvcmQtU2VwYXJhdG9yIiwgIm5vdFx4MUVicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJMaW5lLVNlcGFyYXRvciIsICJub3RcdTIwMjhicm9rZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgKCJQYXJhZ3JhcGgtU2VwYXJhdG9yIiwgIm5vdFx1MjAyOWJyb2tlbiIpLAorICAgICAgICAgICAgICAgIF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoKSwgIiIpCisKKyAgICBjbGFzcyBNeU1lc3NhZ2UoRW1haWxNZXNzYWdlKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfY3VzdG9tX21lc3NhZ2VfZmFjdG9yeV9vbl9wb2xpY3koc2VsZik6CisgICAgICAgIGZvciBwYXJzZXIgaW4gc2VsZi5wYXJzZXJzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFyc2VyPXBhcnNlci5fX25hbWVfXyk6CisgICAgICAgICAgICAgICAgTXlQb2xpY3kgPSBkZWZhdWx0LmNsb25lKG1lc3NhZ2VfZmFjdG9yeT1zZWxmLk15TWVzc2FnZSkKKyAgICAgICAgICAgICAgICBtc2cgPSBwYXJzZXIoIlRvOiBmb29cblxudGVzdCIsIHBvbGljeT1NeVBvbGljeSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLCBzZWxmLk15TWVzc2FnZSkKKworICAgIGRlZiB0ZXN0X2ZhY3RvcnlfYXJnX292ZXJyaWRlc19wb2xpY3koc2VsZik6CisgICAgICAgIGZvciBwYXJzZXIgaW4gc2VsZi5wYXJzZXJzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFyc2VyPXBhcnNlci5fX25hbWVfXyk6CisgICAgICAgICAgICAgICAgTXlQb2xpY3kgPSBkZWZhdWx0LmNsb25lKG1lc3NhZ2VfZmFjdG9yeT1zZWxmLk15TWVzc2FnZSkKKyAgICAgICAgICAgICAgICBtc2cgPSBwYXJzZXIoIlRvOiBmb29cblxudGVzdCIsIE1lc3NhZ2UsIHBvbGljeT1NeVBvbGljeSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UobXNnLCBzZWxmLk15TWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLCBNZXNzYWdlKQorCisjIFBsYXkgc29tZSBnYW1lcyB0byBnZXQgbmljZSBvdXRwdXQgaW4gc3ViVGVzdC4gIFRoaXMgY29kZSBjb3VsZCBiZSBjbGVhcmVyCisjIGlmIHN0YXRpY21ldGhvZCBzdXBwb3J0ZWQgX19uYW1lX18uCisKK2RlZiBtZXNzYWdlX2Zyb21fZmlsZShzLCAqYXJncywgKiprdyk6CisgICAgZiA9IGlvLlN0cmluZ0lPKHMpCisgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGYsICphcmdzLCAqKmt3KQogCiBjbGFzcyBUZXN0UGFyc2VyKFRlc3RQYXJzZXJCYXNlLCBUZXN0RW1haWxCYXNlKToKLSAgICBwYXJzZXIgPSBzdGF0aWNtZXRob2QoZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZykKKyAgICBwYXJzZXJzID0gKGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcsIG1lc3NhZ2VfZnJvbV9maWxlKQorCitkZWYgbWVzc2FnZV9mcm9tX2J5dGVzKHMsICphcmdzLCAqKmt3KToKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKHMuZW5jb2RlKCksICphcmdzLCAqKmt3KQorCitkZWYgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKHMsICphcmdzLCAqKmt3KToKKyAgICBmID0gaW8uQnl0ZXNJTyhzLmVuY29kZSgpKQorICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZiwgKmFyZ3MsICoqa3cpCiAKIGNsYXNzIFRlc3RCeXRlc1BhcnNlcihUZXN0UGFyc2VyQmFzZSwgVGVzdEVtYWlsQmFzZSk6Ci0gICAgZGVmIHBhcnNlcihzZWxmLCBzLCAqYXJncywgKiprdyk6Ci0gICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMocy5lbmNvZGUoKSwgKmFyZ3MsICoqa3cpCisgICAgcGFyc2VycyA9IChtZXNzYWdlX2Zyb21fYnl0ZXMsIG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKaW5kZXggNzBhYzRkYi4uOGZlY2I4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0IGVtYWlsLnBvbGljeQogaW1wb3J0IGVtYWlsLnBhcnNlcgogaW1wb3J0IGVtYWlsLmdlbmVyYXRvcgoraW1wb3J0IGVtYWlsLm1lc3NhZ2UKIGZyb20gZW1haWwgaW1wb3J0IGhlYWRlcnJlZ2lzdHJ5CiAKIGRlZiBtYWtlX2RlZmF1bHRzKGJhc2VfZGVmYXVsdHMsIGRpZmZlcmVuY2VzKToKQEAgLTIzLDYgKzI0LDcgQEAKICAgICAgICAgJ2N0ZV90eXBlJzogICAgICAgICAgICAgICAgICc4Yml0JywKICAgICAgICAgJ3JhaXNlX29uX2RlZmVjdCc6ICAgICAgICAgIEZhbHNlLAogICAgICAgICAnbWFuZ2xlX2Zyb21fJzogICAgICAgICAgICAgVHJ1ZSwKKyAgICAgICAgJ21lc3NhZ2VfZmFjdG9yeSc6ICAgICAgICAgIE5vbmUsCiAgICAgICAgIH0KICAgICAjIFRoZXNlIGRlZmF1bHQgdmFsdWVzIGFyZSB0aGUgb25lcyBzZXQgb24gZW1haWwucG9saWN5LmRlZmF1bHQuCiAgICAgIyBJZiBhbnkgb2YgdGhlc2UgZGVmYXVsdHMgY2hhbmdlLCB0aGUgZG9jcyBtdXN0IGJlIHVwZGF0ZWQuCkBAIC0zNCw2ICszNiw3IEBACiAgICAgICAgICdyZWZvbGRfc291cmNlJzogICAgICAgICAgICAnbG9uZycsCiAgICAgICAgICdjb250ZW50X21hbmFnZXInOiAgICAgICAgICBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuY29udGVudF9tYW5hZ2VyLAogICAgICAgICAnbWFuZ2xlX2Zyb21fJzogICAgICAgICAgICAgRmFsc2UsCisgICAgICAgICdtZXNzYWdlX2ZhY3RvcnknOiAgICAgICAgICBlbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZSwKICAgICAgICAgfSkKIAogICAgICMgRm9yIGVhY2ggcG9saWN5IHVuZGVyIHRlc3QsIHdlIGdpdmUgaGVyZSB3aGF0IHdlIGV4cGVjdCB0aGUgZGVmYXVsdHMgdG8KQEAgLTYyLDIwICs2NSwyMiBAQAogICAgIGRlZiB0ZXN0X2RlZmF1bHRzKHNlbGYpOgogICAgICAgICBmb3IgcG9saWN5LCBleHBlY3RlZCBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIocG9saWN5LCBhdHRyKSwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiY2hhbmdlIHt9IGRvY3MvZG9jc3RyaW5ncyBpZiBkZWZhdWx0cyBoYXZlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiKS5mb3JtYXQocG9saWN5KSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwb2xpY3k9cG9saWN5LCBhdHRyPWF0dHIpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIocG9saWN5LCBhdHRyKSwgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNoYW5nZSB7fSBkb2NzL2RvY3N0cmluZ3MgaWYgZGVmYXVsdHMgaGF2ZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlZCIpLmZvcm1hdChwb2xpY3kpKQogCiAgICAgZGVmIHRlc3RfYWxsX2F0dHJpYnV0ZXNfY292ZXJlZChzZWxmKToKICAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgogICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGlyKHBvbGljeSk6Ci0gICAgICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aCgnXycpIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGdldGF0dHIoZW1haWwucG9saWN5LkVtYWlsUG9saWN5LCBhdHRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSkpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYXR0ciwgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInt9IGlzIG5vdCBmdWxseSB0ZXN0ZWQiLmZvcm1hdChhdHRyKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChwb2xpY3k9cG9saWN5LCBhdHRyPWF0dHIpOgorICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci5zdGFydHN3aXRoKCdfJykgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGdldGF0dHIoZW1haWwucG9saWN5LkVtYWlsUG9saWN5LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5GdW5jdGlvblR5cGUpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie30gaXMgbm90IGZ1bGx5IHRlc3RlZCIuZm9ybWF0KGF0dHIpKQogCiAgICAgZGVmIHRlc3RfYWJjKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CkBAIC0yMzcsNiArMjQyLDkgQEAKICAgICAjIHdpbnMpLCBidXQgdGhhdCB0aGUgb3JkZXIgc3RpbGwgd29ya3MgKHJpZ2h0IG92ZXJyaWRlcyBsZWZ0KS4KIAogCitjbGFzcyBUZXN0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgcGFzcworCiBjbGFzcyBUZXN0UG9saWN5UHJvcGFnYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBUaGUgYWJzdHJhY3QgbWV0aG9kcyBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIGJ1dCBub3QgYnkgdGhlIHdyYXBwZXIKQEAgLTI0NCw0MCArMjUyLDQwIEBACiAgICAgIyBwb2xpY3kgd2FzIGFjdHVhbGx5IHByb3BhZ2F0ZWQgYWxsIHRoZSB3YXkgdG8gZmVlZHBhcnNlci4KICAgICBjbGFzcyBNeVBvbGljeShlbWFpbC5wb2xpY3kuUG9saWN5KToKICAgICAgICAgZGVmIGJhZG1ldGhvZChzZWxmLCAqYXJncywgKiprdyk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInRlc3QiKQorICAgICAgICAgICAgcmFpc2UgVGVzdEV4Y2VwdGlvbigidGVzdCIpCiAgICAgICAgIGZvbGQgPSBmb2xkX2JpbmFyeSA9IGhlYWRlcl9mZXRjaF9wYXJzZXIgPSBiYWRtZXRob2QKICAgICAgICAgaGVhZGVyX3NvdXJjZV9wYXJzZSA9IGhlYWRlcl9zdG9yZV9wYXJzZSA9IGJhZG1ldGhvZAogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX3N0cmluZyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygiU3ViamVjdDogdGVzdFxuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKIAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9ieXRlcyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKGIiU3ViamVjdDogdGVzdFxuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQogCiAgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2ZpbGUoc2VsZik6CiAgICAgICAgIGYgPSBpby5TdHJpbmdJTygnU3ViamVjdDogdGVzdFxuXG4nKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmLCBwb2xpY3k9c2VsZi5NeVBvbGljeSkKIAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShzZWxmKToKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oYidTdWJqZWN0OiB0ZXN0XG5cbicpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmLCBwb2xpY3k9c2VsZi5NeVBvbGljeSkKIAogICAgICMgVGhlc2UgYXJlIHJlZHVuZGFudCwgYnV0IHdlIG5lZWQgdGhlbSBmb3IgYmxhY2stYm94IGNvbXBsZXRlbmVzcy4KIAogICAgIGRlZiB0ZXN0X3BhcnNlcihzZWxmKToKICAgICAgICAgcCA9IGVtYWlsLnBhcnNlci5QYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIHAucGFyc2VzdHIoJ1N1YmplY3Q6IHRlc3RcblxuJykKIAogICAgIGRlZiB0ZXN0X2J5dGVzX3BhcnNlcihzZWxmKToKICAgICAgICAgcCA9IGVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcihwb2xpY3k9c2VsZi5NeVBvbGljeSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgcC5wYXJzZWJ5dGVzKGInU3ViamVjdDogdGVzdFxuXG4nKQogCiAgICAgIyBOb3cgdGhhdCB3ZSd2ZSBlc3RhYmxpc2hlZCB0aGF0IGFsbCB0aGUgcGFyc2UgbWV0aG9kcyBnZXQgdGhlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VudW0ucHkgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKaW5kZXggNjMwYjE1NS4uMmIzYmZlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW51bS5weQpAQCAtMyw5ICszLDEwIEBACiBpbXBvcnQgcHlkb2MKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKLWZyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bSwgRW51bU1ldGEsIHVuaXF1ZQorZnJvbSBlbnVtIGltcG9ydCBFbnVtLCBJbnRFbnVtLCBFbnVtTWV0YSwgRmxhZywgSW50RmxhZywgdW5pcXVlLCBhdXRvCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogZnJvbSBwaWNrbGUgaW1wb3J0IGR1bXBzLCBsb2FkcywgUGlja2xpbmdFcnJvciwgSElHSEVTVF9QUk9UT0NPTAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKICMgZm9yIHBpY2tsZSB0ZXN0cwogdHJ5OgpAQCAtMzIsNiArMzMsMTQgQEAKIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgogICAgIEZsb2F0U3Rvb2dlcyA9IGV4YwogCit0cnk6CisgICAgY2xhc3MgRmxhZ1N0b29nZXMoRmxhZyk6CisgICAgICAgIExBUlJZID0gMQorICAgICAgICBDVVJMWSA9IDIKKyAgICAgICAgTU9FID0gMworZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgRmxhZ1N0b29nZXMgPSBleGMKKwogIyBmb3IgcGlja2xlIHRlc3QgYW5kIHN1YmNsYXNzIHRlc3RzCiB0cnk6CiAgICAgY2xhc3MgU3RyRW51bShzdHIsIEVudW0pOgpAQCAtMTA0LDYgKzExMyw3IEBACiAgICAgICAgICAgICAgICAgJ19fJywgJ19fXycsICdfX19fJywgJ19fX19fJywpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlbnVtLl9pc19kdW5kZXIocykpCiAKKyMgdGVzdHMKIAogY2xhc3MgVGVzdEVudW0odW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yODMsNiArMjkzLDI4IEBACiAgICAgICAgICAgICBjbGFzcyBXcm9uZyhFbnVtKToKICAgICAgICAgICAgICAgICBfYW55X25hbWVfID0gOQogCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgIyBwbGFpbiBFbnVtIG1lbWJlcnMgYXJlIGFsd2F5cyBUcnVlCisgICAgICAgIGNsYXNzIExvZ2ljKEVudW0pOgorICAgICAgICAgICAgdHJ1ZSA9IFRydWUKKyAgICAgICAgICAgIGZhbHNlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKExvZ2ljLnRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShMb2dpYy5mYWxzZSkKKyAgICAgICAgIyB1bmxlc3Mgb3ZlcnJpZGRlbgorICAgICAgICBjbGFzcyBSZWFsTG9naWMoRW51bSk6CisgICAgICAgICAgICB0cnVlID0gVHJ1ZQorICAgICAgICAgICAgZmFsc2UgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBib29sKHNlbGYuX3ZhbHVlXykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFJlYWxMb2dpYy50cnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFJlYWxMb2dpYy5mYWxzZSkKKyAgICAgICAgIyBtaXhlZCBFbnVtcyBkZXBlbmQgb24gbWl4ZWQtaW4gdHlwZQorICAgICAgICBjbGFzcyBJbnRMb2dpYyhpbnQsIEVudW0pOgorICAgICAgICAgICAgdHJ1ZSA9IDEKKyAgICAgICAgICAgIGZhbHNlID0gMAorICAgICAgICBzZWxmLmFzc2VydFRydWUoSW50TG9naWMudHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShJbnRMb2dpYy5mYWxzZSkKKwogICAgIGRlZiB0ZXN0X2NvbnRhaW5zKHNlbGYpOgogICAgICAgICBTZWFzb24gPSBzZWxmLlNlYXNvbgogICAgICAgICBzZWxmLmFzc2VydEluKFNlYXNvbi5BVVRVTU4sIFNlYXNvbikKQEAgLTE1NDcsNiArMTU3OSw3MDEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChMYWJlbGxlZExpc3QudW5wcm9jZXNzZWQsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTGFiZWxsZWRMaXN0KDEpLCBMYWJlbGxlZExpc3QudW5wcm9jZXNzZWQpCiAKKyAgICBkZWYgdGVzdF9hdXRvX251bWJlcihzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAzKQorCisgICAgZGVmIHRlc3RfYXV0b19uYW1lKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIGRlZiBfZ2VuZXJhdGVfbmV4dF92YWx1ZV8obmFtZSwgc3RhcnQsIGNvdW50LCBsYXN0KToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsICdyZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsICdibHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgJ2dyZWVuJykKKworICAgIGRlZiB0ZXN0X2F1dG9fbmFtZV9pbmhlcml0KHNlbGYpOgorICAgICAgICBjbGFzcyBBdXRvTmFtZUVudW0oRW51bSk6CisgICAgICAgICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAgICAgY2xhc3MgQ29sb3IoQXV0b05hbWVFbnVtKToKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAncmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAnYmx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsICdncmVlbicpCisKKyAgICBkZWYgdGVzdF9hdXRvX2dhcmJhZ2Uoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gJ3JlZCcKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAxKQorCisgICAgZGVmIHRlc3RfYXV0b19nYXJiYWdlX2NvcnJlY3RlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICByZWQgPSAncmVkJworICAgICAgICAgICAgYmx1ZSA9IDIKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgJ3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgMykKKworICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV9hdXRvKHNlbGYpOgorICAgICAgICBjbGFzcyBEdXBlcyhFbnVtKToKKyAgICAgICAgICAgIGZpcnN0ID0gcHJpbWVybyA9IGF1dG8oKQorICAgICAgICAgICAgc2Vjb25kID0gYXV0bygpCisgICAgICAgICAgICB0aGlyZCA9IGF1dG8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtEdXBlcy5maXJzdCwgRHVwZXMuc2Vjb25kLCBEdXBlcy50aGlyZF0sIGxpc3QoRHVwZXMpKQorCisKK2NsYXNzIFRlc3RPcmRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnMoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgYmx1ZSA9IDMKKworICAgIGRlZiB0ZXN0X3NhbWVfbWVtYmVyc193aXRoX2FsaWFzZXMoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworICAgIGRlZiB0ZXN0X3NhbWVfbWVtYmVyc193cm9uZ19vcmRlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIGdyZWVuID0gMgorCisgICAgZGVmIHRlc3Rfb3JkZXJfaGFzX2V4dHJhX21lbWJlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZSBwdXJwbGUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisKKyAgICBkZWYgdGVzdF9vcmRlcl9oYXNfZXh0cmFfbWVtYmVyc193aXRoX2FsaWFzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZSBwdXJwbGUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgdmVyZGUgPSBncmVlbgorCisgICAgZGVmIHRlc3RfZW51bV9oYXNfZXh0cmFfbWVtYmVycyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHB1cnBsZSA9IDQKKworICAgIGRlZiB0ZXN0X2VudW1faGFzX2V4dHJhX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICAgICAgcmVkID0gMQorICAgICAgICAgICAgICAgIGdyZWVuID0gMgorICAgICAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICAgICAgcHVycGxlID0gNAorICAgICAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworCitjbGFzcyBUZXN0RmxhZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgb2YgdGhlIEZsYWdzLiIiIgorCisgICAgY2xhc3MgUGVybShGbGFnKToKKyAgICAgICAgUiwgVywgWCA9IDQsIDIsIDEKKworICAgIGNsYXNzIE9wZW4oRmxhZyk6CisgICAgICAgIFJPID0gMAorICAgICAgICBXTyA9IDEKKyAgICAgICAgUlcgPSAyCisgICAgICAgIEFDID0gMworICAgICAgICBDRSA9IDE8PDE5CisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SKSwgJ1Blcm0uUicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uVyksICdQZXJtLlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlgpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJ1Blcm0uUnxXfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKDApKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlIpLCAnUGVybS5XfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5XKSwgJ1Blcm0uUnxYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uWCksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XKSksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnUGVybS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+MCkpLCAnUGVybS5SfFd8WCcpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPKSwgJ09wZW4uUk8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPKSwgJ09wZW4uV08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLkFDKSwgJ09wZW4uQUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPIHwgT3Blbi5DRSksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnT3Blbi5DRXxXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLlJPKSwgJ09wZW4uQ0V8QUN8Uld8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5XTyksICdPcGVuLkNFfFJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uQUMpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJ09wZW4uQUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uV08gfCBPcGVuLkNFKSksICdPcGVuLlJXJykKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiksICc8UGVybS5SOiA0PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlcpLCAnPFBlcm0uVzogMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5YKSwgJzxQZXJtLlg6IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyksICc8UGVybS5SfFc6IDY+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICc8UGVybS5SfFd8WDogNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSgwKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5SKSwgJzxQZXJtLld8WDogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uVyksICc8UGVybS5SfFg6IDU+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlgpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVykpLCAnPFBlcm0uWDogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJzxQZXJtLjA6IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0ofjApKSwgJzxQZXJtLlJ8V3xYOiA3PicpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyksICc8T3Blbi5STzogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyksICc8T3Blbi5XTzogMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5BQyksICc8T3Blbi5BQzogMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0U6IDUyNDI4OD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnPE9wZW4uQ0V8V086IDUyNDI4OT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uUk8pLCAnPE9wZW4uQ0V8QUN8Uld8V086IDUyNDI5MT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uV08pLCAnPE9wZW4uQ0V8Ulc6IDUyNDI5MD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uQUMpLCAnPE9wZW4uQ0U6IDUyNDI4OD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJzxPcGVuLlJXOiAyPicpCisKKyAgICBkZWYgdGVzdF9vcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaiksIFBlcm0oaS52YWx1ZSB8IGoudmFsdWUpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSB8IGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIHwgT3Blbi5DRSwgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X2FuZChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIGZvciBqIGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpICYgaiksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiBpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgUldYLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhSV1ggJiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyAmIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF94b3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIF4gUGVybSgwKSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUGVybSgwKSBeIGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIF4gT3Blbi5DRSwgT3Blbi5DRSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLkNFIF4gT3Blbi5DRSwgT3Blbi5STykKKworICAgIGRlZiB0ZXN0X2ludmVydChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSh+aSksIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKH5+aSwgaSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMofn5pLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5XTyAmIH5PcGVuLldPLCBPcGVuLlJPKQorICAgICAgICBzZWxmLmFzc2VydElzKChPcGVuLldPfE9wZW4uQ0UpICYgfk9wZW4uV08sIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBmIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZikKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib29sKGYudmFsdWUpLCBib29sKGYpKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nKHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsICdSIFcgWCcpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCAnUiBXIFgnLCBzdGFydD04KQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDg8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX2xpc3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgWydSJywgJ1cnLCAnWCddKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCBPcmRlcmVkRGljdCgoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShGbGFnU3Rvb2dlcywgRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIEZsYWdTdG9vZ2VzCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBGbGFnU3Rvb2dlcy5DVVJMWXxGbGFnU3Rvb2dlcy5NT0UpCisgICAgICAgIHRlc3RfcGlja2xlX2R1bXBfbG9hZChzZWxmLmFzc2VydElzLCBGbGFnU3Rvb2dlcykKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5tZW50KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFIsIFcsIFggPSBQZXJtCisgICAgICAgIFJXID0gUiB8IFcKKyAgICAgICAgUlggPSBSIHwgWAorICAgICAgICBXWCA9IFcgfCBYCisgICAgICAgIFJXWCA9IFIgfCBXIHwgWAorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFIgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVyBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShYIGluIFJXKQorCisgICAgZGVmIHRlc3RfYXV0b19udW1iZXIoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEZsYWcpOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgNCkKKworICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyX2dhcmJhZ2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdJbnZhbGlkIEZsYWcgdmFsdWU6IC5ub3QgYW4gaW50LicpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRmxhZyk6CisgICAgICAgICAgICAgICAgcmVkID0gJ25vdCBhbiBpbnQnCisgICAgICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorCisgICAgZGVmIHRlc3RfY2FzY2FkaW5nX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIGNsYXNzIEJpemFycmUoRmxhZyk6CisgICAgICAgICAgICBjID0gMworICAgICAgICAgICAgZCA9IDQKKyAgICAgICAgICAgIGYgPSA2CisgICAgICAgICMgQml6YXJyZS5jIHwgQml6YXJyZS5kCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjUgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjUgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjIgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjIgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjEgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIjEgaXMgbm90IGEgdmFsaWQgQml6YXJyZSIsIEJpemFycmUsIDEpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVfYXV0byhzZWxmKToKKyAgICAgICAgY2xhc3MgRHVwZXMoRW51bSk6CisgICAgICAgICAgICBmaXJzdCA9IHByaW1lcm8gPSBhdXRvKCkKKyAgICAgICAgICAgIHNlY29uZCA9IGF1dG8oKQorICAgICAgICAgICAgdGhpcmQgPSBhdXRvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbRHVwZXMuZmlyc3QsIER1cGVzLnNlY29uZCwgRHVwZXMudGhpcmRdLCBsaXN0KER1cGVzKSkKKworICAgIGRlZiB0ZXN0X2JpemFycmUoc2VsZik6CisgICAgICAgIGNsYXNzIEJpemFycmUoRmxhZyk6CisgICAgICAgICAgICBiID0gMworICAgICAgICAgICAgYyA9IDQKKyAgICAgICAgICAgIGQgPSA2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihCaXphcnJlKDcpKSwgJzxCaXphcnJlLmR8Y3xiOiA3PicpCisKKworY2xhc3MgVGVzdEludEZsYWcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIG9mIHRoZSBJbnRGbGFncy4iIiIKKworICAgIGNsYXNzIFBlcm0oSW50RmxhZyk6CisgICAgICAgIFggPSAxIDw8IDAKKyAgICAgICAgVyA9IDEgPDwgMQorICAgICAgICBSID0gMSA8PCAyCisKKyAgICBjbGFzcyBPcGVuKEludEZsYWcpOgorICAgICAgICBSTyA9IDAKKyAgICAgICAgV08gPSAxCisgICAgICAgIFJXID0gMgorICAgICAgICBBQyA9IDMKKyAgICAgICAgQ0UgPSAxPDwxOQorCisgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIGZvciBmIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmLCBQZXJtKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgZi52YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoUGVybS5XIHwgUGVybS5YLCBQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQZXJtLlcgfCBQZXJtLlgsIDMpCisgICAgICAgIGZvciBmIGluIE9wZW46CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmLCBPcGVuKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiwgZi52YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoT3Blbi5XTyB8IE9wZW4uUlcsIE9wZW4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE9wZW4uV08gfCBPcGVuLlJXLCAzKQorCisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SKSwgJ1Blcm0uUicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uVyksICdQZXJtLlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlgpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XKSwgJ1Blcm0uUnxXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSwgJ1Blcm0uUnxXfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlIgfCA4KSwgJ1Blcm0uOHxSJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSgwKSksICdQZXJtLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKDgpKSwgJ1Blcm0uOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlIpLCAnUGVybS5XfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5XKSwgJ1Blcm0uUnxYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uWCksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgUGVybS5XKSksICdQZXJtLlgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnUGVybS4tOCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oUGVybS5SIHwgOCkpLCAnUGVybS5XfFgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtKH4wKSksICdQZXJtLlJ8V3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+OCkpLCAnUGVybS5SfFd8WCcpCisKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPKSwgJ09wZW4uUk8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLldPKSwgJ09wZW4uV08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLkFDKSwgJ09wZW4uQUMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuLlJPIHwgT3Blbi5DRSksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyB8IE9wZW4uQ0UpLCAnT3Blbi5DRXxXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4oNCkpLCAnT3Blbi40JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uUk8pLCAnT3Blbi5DRXxBQ3xSV3xXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLldPKSwgJ09wZW4uQ0V8UlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5BQyksICdPcGVuLkNFJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnT3Blbi5BQ3xSV3xXTycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJ09wZW4uUlcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuKH40KSksICdPcGVuLkNFfEFDfFJXfFdPJykKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiksICc8UGVybS5SOiA0PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlcpLCAnPFBlcm0uVzogMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5YKSwgJzxQZXJtLlg6IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyksICc8UGVybS5SfFc6IDY+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICc8UGVybS5SfFd8WDogNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5SIHwgOCksICc8UGVybS44fFI6IDEyPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKDApKSwgJzxQZXJtLjA6IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0oOCkpLCAnPFBlcm0uODogOD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uUiksICc8UGVybS5XfFg6IC01PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5XKSwgJzxQZXJtLlJ8WDogLTM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlgpLCAnPFBlcm0uUnxXOiAtMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJzxQZXJtLlg6IC03PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCkpLCAnPFBlcm0uLTg6IC04PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KFBlcm0uUiB8IDgpKSwgJzxQZXJtLld8WDogLTEzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKH4wKSksICc8UGVybS5SfFd8WDogLTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0ofjgpKSwgJzxQZXJtLlJ8V3xYOiAtOT4nKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8pLCAnPE9wZW4uUk86IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08pLCAnPE9wZW4uV086IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uQUMpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8gfCBPcGVuLkNFKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08gfCBPcGVuLkNFKSwgJzxPcGVuLkNFfFdPOiA1MjQyODk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4oNCkpLCAnPE9wZW4uNDogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uUk8pLCAnPE9wZW4uQ0V8QUN8Uld8V086IC0xPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5XTyksICc8T3Blbi5DRXxSVzogLTI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLkFDKSwgJzxPcGVuLkNFOiAtND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihPcGVuLlJPIHwgT3Blbi5DRSkpLCAnPE9wZW4uQUN8Uld8V086IC01MjQyODk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5XTyB8IE9wZW4uQ0UpKSwgJzxPcGVuLlJXOiAtNTI0MjkwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuKH40KSksICc8T3Blbi5DRXxBQ3xSV3xXTzogLTU+JykKKworICAgIGRlZiB0ZXN0X29yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSB8IGosIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSB8IGosIGkudmFsdWUgfCBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgfCBqKS52YWx1ZSwgaS52YWx1ZSB8IGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgfCBqKSwgUGVybSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGogfCBpLCBqIHwgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChqIHwgaSkudmFsdWUsIGogfCBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShqIHwgaSksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgfCBpLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIHwgMCwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoMCB8IGksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLlJPIHwgT3Blbi5DRSwgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X2FuZChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSVyA9IFBlcm0uUiB8IFBlcm0uVworICAgICAgICBSWCA9IFBlcm0uUiB8IFBlcm0uWAorICAgICAgICBXWCA9IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICBSV1ggPSBQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgdmFsdWVzID0gbGlzdChQZXJtKSArIFtSVywgUlgsIFdYLCBSV1gsIFBlcm0oMCldCisgICAgICAgIGZvciBpIGluIHZhbHVlczoKKyAgICAgICAgICAgIGZvciBqIGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJiBqLCBpLnZhbHVlICYgai52YWx1ZSwgJ2kgaXMgJXIsIGogaXMgJXInICUgKGksIGopKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgJiBqKS52YWx1ZSwgaS52YWx1ZSAmIGoudmFsdWUsICdpIGlzICVyLCBqIGlzICVyJyAlIChpLCBqKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtLCAnaSBpcyAlciwgaiBpcyAlcicgJSAoaSwgaikpCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSg4KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgJiBqLCBpLnZhbHVlICYgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpICYgaiksIFBlcm0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqICYgaSwgaiAmIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaiAmIGkpLnZhbHVlLCBqICYgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaiAmIGkpLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIDcsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDcgJiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyAmIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF94b3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIF4gaiwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoOCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpIF4gaiwgaS52YWx1ZSBeIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSBeIGopLnZhbHVlLCBpLnZhbHVlIF4gaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSBeIGopLCBQZXJtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaiBeIGksIGogXiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGogXiBpKS52YWx1ZSwgaiBeIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGogXiBpKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSBeIDAsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDAgXiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyBeIE9wZW4uQ0UsIE9wZW4uQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5DRSBeIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKH5pLCB+aS52YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKH5pKS52YWx1ZSwgfmkudmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUofmkpLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+fmksIGkpCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKH5+aSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uV08gJiB+T3Blbi5XTywgT3Blbi5STykKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoT3Blbi5XT3xPcGVuLkNFKSAmIH5PcGVuLldPLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nKHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsICdSIFcgWCcpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8aQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9zdHJpbmdfd2l0aF9zdGFydChzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCAnUiBXIFgnLCBzdGFydD04KQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDg8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX2xpc3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgWydSJywgJ1cnLCAnWCddKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25faXRlcmFibGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCBPcmRlcmVkRGljdCgoKCdSJywgMiksICgnVycsIDgpLCAoJ1gnLCAzMikpKSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDwoMippKzEpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworCisgICAgZGVmIHRlc3RfY29udGFpbm1lbnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUiwgVywgWCA9IFBlcm0KKyAgICAgICAgUlcgPSBSIHwgVworICAgICAgICBSWCA9IFIgfCBYCisgICAgICAgIFdYID0gVyB8IFgKKyAgICAgICAgUldYID0gUiB8IFcgfCBYCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoUiBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShXIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFggaW4gUlcpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBmIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZikKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib29sKGYudmFsdWUpLCBib29sKGYpKQogCiBjbGFzcyBUZXN0VW5pcXVlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTczOSw1ICsyNDY2LDQ3IEBACiAgICAgICAgIGlmIGZhaWxlZDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgicmVzdWx0IGRvZXMgbm90IGVxdWFsIGV4cGVjdGVkLCBzZWUgcHJpbnQgYWJvdmUiKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBlbnVtKQorCisKKyMgVGhlc2UgYXJlIHVub3JkZXJlZCBoZXJlIG9uIHB1cnBvc2UgdG8gZW5zdXJlIHRoYXQgZGVjbGFyYXRpb24gb3JkZXIKKyMgbWFrZXMgbm8gZGlmZmVyZW5jZS4KK0NPTlZFUlRfVEVTVF9OQU1FX0QgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9DID0gNQorQ09OVkVSVF9URVNUX05BTUVfQiA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0EgPSA1ICAjIFRoaXMgb25lIHNob3VsZCBzb3J0IGZpcnN0LgorQ09OVkVSVF9URVNUX05BTUVfRSA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0YgPSA1CisKK2NsYXNzIFRlc3RJbnRFbnVtQ29udmVydCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfY29udmVydF92YWx1ZV9sb29rdXBfcHJpb3JpdHkoc2VsZik6CisgICAgICAgIHRlc3RfdHlwZSA9IGVudW0uSW50RW51bS5fY29udmVydCgKKyAgICAgICAgICAgICAgICAnVW5pdHRlc3RDb252ZXJ0JywgJ3Rlc3QudGVzdF9lbnVtJywKKyAgICAgICAgICAgICAgICBmaWx0ZXI9bGFtYmRhIHg6IHguc3RhcnRzd2l0aCgnQ09OVkVSVF9URVNUXycpKQorICAgICAgICAjIFdlIGRvbid0IHdhbnQgdGhlIHJldmVyc2UgbG9va3VwIHZhbHVlIHRvIHZhcnkgd2hlbiB0aGVyZSBhcmUKKyAgICAgICAgIyBtdWx0aXBsZSBwb3NzaWJsZSBuYW1lcyBmb3IgYSBnaXZlbiB2YWx1ZS4gIEl0IHNob3VsZCBhbHdheXMKKyAgICAgICAgIyByZXBvcnQgdGhlIGZpcnN0IGxleGlncmFwaGljYWwgbmFtZSBpbiB0aGF0IGNhc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlKDUpLm5hbWUsICdDT05WRVJUX1RFU1RfTkFNRV9BJykKKworICAgIGRlZiB0ZXN0X2NvbnZlcnQoc2VsZik6CisgICAgICAgIHRlc3RfdHlwZSA9IGVudW0uSW50RW51bS5fY29udmVydCgKKyAgICAgICAgICAgICAgICAnVW5pdHRlc3RDb252ZXJ0JywgJ3Rlc3QudGVzdF9lbnVtJywKKyAgICAgICAgICAgICAgICBmaWx0ZXI9bGFtYmRhIHg6IHguc3RhcnRzd2l0aCgnQ09OVkVSVF9URVNUXycpKQorICAgICAgICAjIEVuc3VyZSB0aGF0IHRlc3RfdHlwZSBoYXMgYWxsIG9mIHRoZSBkZXNpcmVkIG5hbWVzIGFuZCB2YWx1ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0YsCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0EpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0IsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0MsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0QsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF90eXBlLkNPTlZFUlRfVEVTVF9OQU1FX0UsIDUpCisgICAgICAgICMgRW5zdXJlIHRoYXQgdGVzdF90eXBlIG9ubHkgcGlja2VkIHVwIG5hbWVzIG1hdGNoaW5nIHRoZSBmaWx0ZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW25hbWUgZm9yIG5hbWUgaW4gZGlyKHRlc3RfdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZVswOjJdIG5vdCBpbiAoJ0NPJywgJ19fJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLCBtc2c9J05hbWVzIG90aGVyIHRoYW4gQ09OVkVSVF9URVNUXyogZm91bmQuJykKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQppbmRleCAyNjMwY2YyLi5lNDU1YWRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weQpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgZGVmIHRlc3Rfb2JqbWV0aG9kcyhzZWxmKToKICAgICAgICAgIyBPYmplY3RzIG11c3QgaGF2ZSBfX2xlbl9fKCkgYW5kIF9fZ2V0aXRlbV9fKCkgaW1wbGVtZW50ZWQuCiAgICAgICAgIGNsYXNzIE5vTGVuKG9iamVjdCk6Ci0gICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZik6IHJldHVybiAxCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaSk6IHJldHVybiAxCiAgICAgICAgIG5sID0gTm9MZW4oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBubCkKIApAQCAtMjMyLDYgKzIzMiwxMyBAQAogICAgICAgICBuZ2kgPSBOb0dldEl0ZW0oKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJldmVyc2VkLCBuZ2kpCiAKKyAgICAgICAgY2xhc3MgQmxvY2tlZChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOiByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAyCisgICAgICAgICAgICBfX3JldmVyc2VkX18gPSBOb25lCisgICAgICAgIGIgPSBCbG9ja2VkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgYikKKwogICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKICAgICAgICAgZm9yIGRhdGEgaW4gJ2FiYycsIHJhbmdlKDUpLCB0dXBsZShlbnVtZXJhdGUoJ2FiYycpKSwgcmFuZ2UoMSwxNyw1KToKICAgICAgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKHJldmVyc2VkKGRhdGEpLCBsaXN0KGRhdGEpWzo6LTFdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKaW5kZXggYTczNTllOS4uYTdhZmY4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CkBAIC0yOCw3ICsyOCw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaWYgbm90IGhhc2F0dHIoc2VsZWN0LCAiZXBvbGwiKToKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCB3b3JrcyBvbmx5IG9uIExpbnV4IDIuNiIpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzE1MS5weSBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQppbmRleCA3YjBkNDY1Li44NjQ5NTk2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25faGllcmFyY2h5LnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBlcnJubwogZnJvbSBlcnJubyBpbXBvcnQgRUVYSVNUCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKaW5kZXggOTZjM2E0OC4uNDgzNzkyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQpAQCAtMTEwOSw3ICsxMTA5LDYgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKICAgICAgICAgICAgIEltcG9ydEVycm9yKGludmFsaWQ9J2tleXdvcmQnKQogCi0gICAgICAgIG1zZyA9ICInaW52YWxpZHxhbm90aGVyJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICBJbXBvcnRFcnJvcigndGVzdCcsIGludmFsaWQ9J2tleXdvcmQnLCBhbm90aGVyPVRydWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weSBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQppbmRleCA5Y2IwZDM4Li4wNDNkZjAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CkBAIC0yMzgsNiArMjM4LDExIEBACiAgICAgICAuLi4KICAgICBUeXBlRXJyb3I6IGgoKSBhcmd1bWVudCBhZnRlciAqIG11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCBmdW5jdGlvbgogCisgICAgPj4+IGgoKlsxXSwgKmgpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBoKCkgYXJndW1lbnQgYWZ0ZXIgKiBtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgZnVuY3Rpb24KKwogICAgID4+PiBkaXIoKmgpCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weSBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CmluZGV4IDE1NjJlZWMuLjIyY2NiYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmF1bHRoYW5kbGVyLnB5CkBAIC0yMyw2ICsyMyw3IEBACiAgICAgX3Rlc3RjYXBpID0gTm9uZQogCiBUSU1FT1VUID0gMC41CitNU19XSU5ET1dTID0gKG9zLm5hbWUgPT0gJ250JykKIAogZGVmIGV4cGVjdGVkX3RyYWNlYmFjayhsaW5lbm8xLCBsaW5lbm8yLCBoZWFkZXIsIG1pbl9jb3VudD0xKToKICAgICByZWdleCA9IGhlYWRlcgpAQCAtNTgsOCArNTksOSBAQAogICAgICAgICAgICAgcGFzc19mZHMuYXBwZW5kKGZkKQogICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgogICAgICAgICAgICAgcHJvY2VzcyA9IHNjcmlwdF9oZWxwZXIuc3Bhd25fcHl0aG9uKCctYycsIGNvZGUsIHBhc3NfZmRzPXBhc3NfZmRzKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCisgICAgICAgICAgICB3aXRoIHByb2Nlc3M6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Nlc3Mud2FpdCgpCiAgICAgICAgIG91dHB1dCA9IHN1cHBvcnQuc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRvdXQpCiAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQogICAgICAgICBpZiBmaWxlbmFtZToKQEAgLTczLDE0ICs3NSwxMSBAQAogICAgICAgICAgICAgd2l0aCBvcGVuKGZkLCAicmIiLCBjbG9zZWZkPUZhbHNlKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQotICAgICAgICBvdXRwdXQgPSByZS5zdWIoJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdDdXJyZW50IHRocmVhZCBYWFgnLAotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQogICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0bGluZXMoKSwgZXhpdGNvZGUKIAotICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSk6CisgICAgZGVmIGNoZWNrX2Vycm9yKHNlbGYsIGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiwKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgZmQ9Tm9uZSwga25vd19jdXJyZW50X3RocmVhZD1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIENoZWNrIHRoYXQgdGhlIGZhdWx0IGhhbmRsZXIgZm9yIGZhdGFsIGVycm9ycyBpcyBlbmFibGVkIGFuZCBjaGVjayB0aGUKICAgICAgICAgdHJhY2ViYWNrIGZyb20gdGhlIGNoaWxkIHByb2Nlc3Mgb3V0cHV0LgpAQCAtODgsMTkgKzg3LDIyIEBACiAgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgogICAgICAgICAiIiIKICAgICAgICAgaWYgYWxsX3RocmVhZHM6Ci0gICAgICAgICAgICBoZWFkZXIgPSAnQ3VycmVudCB0aHJlYWQgWFhYIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKKyAgICAgICAgICAgIGlmIGtub3dfY3VycmVudF90aHJlYWQ6CisgICAgICAgICAgICAgICAgaGVhZGVyID0gJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoZWFkZXIgPSAnVGhyZWFkIDB4WzAtOWEtZl0rJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaGVhZGVyID0gJ1N0YWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KScKLSAgICAgICAgcmVnZXggPSAiIiIKLSAgICAgICAgICAgIF5GYXRhbCBQeXRob24gZXJyb3I6IHtuYW1lfQorICAgICAgICAgICAgaGVhZGVyID0gJ1N0YWNrJworICAgICAgICByZWdleCA9IHIiIiIKKyAgICAgICAgICAgIF57ZmF0YWxfZXJyb3J9CiAKLSAgICAgICAgICAgIHtoZWFkZXJ9OgorICAgICAgICAgICAge2hlYWRlcn0gXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiA8bW9kdWxlPgogICAgICAgICAgICAgIiIiCiAgICAgICAgIHJlZ2V4ID0gZGVkZW50KHJlZ2V4LmZvcm1hdCgKICAgICAgICAgICAgIGxpbmVubz1saW5lX251bWJlciwKLSAgICAgICAgICAgIG5hbWU9bmFtZV9yZWdleCwKLSAgICAgICAgICAgIGhlYWRlcj1yZS5lc2NhcGUoaGVhZGVyKSkpLnN0cmlwKCkKKyAgICAgICAgICAgIGZhdGFsX2Vycm9yPWZhdGFsX2Vycm9yLAorICAgICAgICAgICAgaGVhZGVyPWhlYWRlcikpLnN0cmlwKCkKICAgICAgICAgaWYgb3RoZXJfcmVnZXg6CiAgICAgICAgICAgICByZWdleCArPSAnfCcgKyBvdGhlcl9yZWdleAogICAgICAgICBvdXRwdXQsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lPWZpbGVuYW1lLCBmZD1mZCkKQEAgLTEwOCwxNyArMTEwLDM2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKIAorICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwgKiprdyk6CisgICAgICAgIGZhdGFsX2Vycm9yID0gJ0ZhdGFsIFB5dGhvbiBlcnJvcjogJXMnICUgbmFtZV9yZWdleAorICAgICAgICBzZWxmLmNoZWNrX2Vycm9yKGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiprdykKKworICAgIGRlZiBjaGVja193aW5kb3dzX2V4Y2VwdGlvbihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwgKiprdyk6CisgICAgICAgIGZhdGFsX2Vycm9yID0gJ1dpbmRvd3MgZmF0YWwgZXhjZXB0aW9uOiAlcycgJSBuYW1lX3JlZ2V4CisgICAgICAgIHNlbGYuY2hlY2tfZXJyb3IoY29kZSwgbGluZV9udW1iZXIsIGZhdGFsX2Vycm9yLCAqKmt3KQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnYWl4JyksCiAgICAgICAgICAgICAgICAgICAgICAidGhlIGZpcnN0IHBhZ2Ugb2YgbWVtb3J5IGlzIGEgbWFwcGVkIHJlYWQtb25seSBvbiBBSVgiKQogICAgIGRlZiB0ZXN0X3JlYWRfbnVsbChzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKLSAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQotICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQotICAgICAgICAgICAgIiIiLAotICAgICAgICAgICAgMywKLSAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCi0gICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvcnxJbGxlZ2FsIGluc3RydWN0aW9uKScpCisgICAgICAgIGlmIG5vdCBNU19XSU5ET1dTOgorICAgICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEyNzAwOiBSZWFkIE5VTEwgcmFpc2VzIFNJR0lMTCBvbiBNYWMgT1MgWCBMaW9uCisgICAgICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdCcKKyAgICAgICAgICAgICAgICAgICAgJ3xCdXMgZXJyb3InCisgICAgICAgICAgICAgICAgICAgICd8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja193aW5kb3dzX2V4Y2VwdGlvbigiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorICAgICAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgICAgICAzLAorICAgICAgICAgICAgICAgICdhY2Nlc3MgdmlvbGF0aW9uJykKIAogICAgIGRlZiB0ZXN0X3NpZ3NlZ3Yoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCkBAIC0xMjksNiArMTUwLDE3IEBACiAgICAgICAgICAgICAzLAogICAgICAgICAgICAgJ1NlZ21lbnRhdGlvbiBmYXVsdCcpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBIQVZFX1RIUkVBRFMsICduZWVkIHRocmVhZHMnKQorICAgIGRlZiB0ZXN0X2ZhdGFsX2Vycm9yX2NfdGhyZWFkKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgorICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuX2ZhdGFsX2Vycm9yX2NfdGhyZWFkKCkKKyAgICAgICAgICAgICIiIiwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnaW4gbmV3IHRocmVhZCcsCisgICAgICAgICAgICBrbm93X2N1cnJlbnRfdGhyZWFkPUZhbHNlKQorCiAgICAgZGVmIHRlc3Rfc2lnYWJydChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKICAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKQEAgLTQ1OCwxNCArNDkwLDE0IEBACiAgICAgICAgICAgICBsaW5lbm8gPSA4CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaW5lbm8gPSAxMAotICAgICAgICByZWdleCA9ICIiIgorICAgICAgICByZWdleCA9IHIiIiIKICAgICAgICAgICAgIF5UaHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAoPzogIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gW19hLXpdKwogICAgICAgICAgICAgKXt7MSwzfX0gIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyMyBpbiBydW4KICAgICAgICAgICAgICAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBfYm9vdHN0cmFwX2lubmVyCiAgICAgICAgICAgICAgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcAogCi0gICAgICAgICAgICBDdXJyZW50IHRocmVhZCBYWFggXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CisgICAgICAgICAgICBDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKToKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIGR1bXAKICAgICAgICAgICAgICAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDI4IGluIDxtb2R1bGU+JAogICAgICAgICAgICAgIiIiCkBAIC02MzcsOSArNjY5LDkgQEAKICAgICAgICAgdHJhY2UgPSAnXG4nLmpvaW4odHJhY2UpCiAgICAgICAgIGlmIG5vdCB1bnJlZ2lzdGVyOgogICAgICAgICAgICAgaWYgYWxsX3RocmVhZHM6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAnQ3VycmVudCB0aHJlYWQgWFhYIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgICAgIHJlZ2V4ID0gcidDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKyBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVnZXggPSAnU3RhY2sgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCisgICAgICAgICAgICAgICAgcmVnZXggPSByJ1N0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJwogICAgICAgICAgICAgcmVnZXggPSBleHBlY3RlZF90cmFjZWJhY2soMTQsIDMyLCByZWdleCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQogICAgICAgICBlbHNlOgpAQCAtNjk2LDYgKzcyOCwyMiBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLmNoZWNrX3N0ZGVycl9ub25lKCk6CiAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ25hbC5TSUdVU1IxKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoTVNfV0lORE9XUywgJ3NwZWNpZmljIHRvIFdpbmRvd3MnKQorICAgIGRlZiB0ZXN0X3JhaXNlX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgZm9yIGV4YywgbmFtZSBpbiAoCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OJywgJ2FjY2VzcyB2aW9sYXRpb24nKSwKKyAgICAgICAgICAgICgnRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTycsICdpbnQgZGl2aWRlIGJ5IHplcm8nKSwKKyAgICAgICAgICAgICgnRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XJywgJ3N0YWNrIG92ZXJmbG93JyksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmNoZWNrX3dpbmRvd3NfZXhjZXB0aW9uKGYiIiIKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9yYWlzZV9leGNlcHRpb24oZmF1bHRoYW5kbGVyLl97ZXhjfSkKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgMywKKyAgICAgICAgICAgICAgICBuYW1lKQorCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQppbmRleCA0ZTM5MmI3Li42NWJlMzBmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlLnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgX3B5aW8gYXMgcHlpbwogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0CiAKIGNsYXNzIEF1dG9GaWxlVGVzdHM6CkBAIC0xMzksNyArMTM5LDcgQEAKIAogICAgIGRlZiB0ZXN0TW9kZVN0cmluZ3Moc2VsZik6CiAgICAgICAgICMgY2hlY2sgaW52YWxpZCBtb2RlIHN0cmluZ3MKLSAgICAgICAgZm9yIG1vZGUgaW4gKCIiLCAiYVUiLCAid1UrIik6CisgICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIsICJVKyIsICIrVSIsICJyVSsiKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmID0gc2VsZi5vcGVuKFRFU1RGTiwgbW9kZSkKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQppbmRleCA3ODRiYzkyLi41NjU2MzNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQpAQCAtMjIsOCArMjIsOSBAQAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIGZyb20gZmlsZWlucHV0IGltcG9ydCBGaWxlSW5wdXQsIGhvb2tfZW5jb2RlZAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGNoZWNrX3dhcm5pbmdzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCBjaGVja193YXJuaW5ncwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHVubGluayBhcyBzYWZlX3VubGluaworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiAKIApAQCAtOTIsNyArOTMsMTEgQEAKICAgICAgICAgICAgICAgICB0MiA9IHdyaXRlVG1wKDIsIFsiTGluZSAlcyBvZiBmaWxlIDJcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSgxMCldKQogICAgICAgICAgICAgICAgIHQzID0gd3JpdGVUbXAoMywgWyJMaW5lICVzIG9mIGZpbGUgM1xuIiAlIChpKzEpIGZvciBpIGluIHJhbmdlKDUpXSkKICAgICAgICAgICAgICAgICB0NCA9IHdyaXRlVG1wKDQsIFsiTGluZSAlcyBvZiBmaWxlIDRcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSgxKV0pCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCisgICAgICAgICAgICAgICAgaWYgYnM6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5idWZmZXJfc2l6ZV90ZXN0KHQxLCB0MiwgdDMsIHQ0LCBicywgcm91bmQpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHJlbW92ZV90ZW1wZmlsZXModDEsIHQyLCB0MywgdDQpCiAKQEAgLTk0MCw3ICs5NDUsOCBAQAogCiAgICAgZGVmIHRlc3Qoc2VsZik6CiAgICAgICAgIGVuY29kaW5nID0gb2JqZWN0KCkKLSAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZykKKyAgICAgICAgZXJyb3JzID0gb2JqZWN0KCkKKyAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0Lmhvb2tfZW5jb2RlZChlbmNvZGluZywgZXJyb3JzPWVycm9ycykKIAogICAgICAgICBmYWtlX29wZW4gPSBJbnZvY2F0aW9uUmVjb3JkZXIoKQogICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnVpbHRpbnMub3BlbgpAQCAtOTU4LDggKzk2NCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMF0sIGZpbGVuYW1lKQogICAgICAgICBzZWxmLmFzc2VydElzKGFyZ3NbMV0sIG1vZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZW5jb2RpbmcnKSwgZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoa3dhcmdzLnBvcCgnZXJyb3JzJyksIGVycm9ycykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShrd2FyZ3MpCiAKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGInXHg4MGFiYycpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzYWZlX3VubGluaywgVEVTVEZOKQorCisgICAgICAgIGRlZiBjaGVjayhlcnJvcnMsIGV4cGVjdGVkX2xpbmVzKToKKyAgICAgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVRFU1RGTiwgbW9kZT0ncicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuaG9vaz1ob29rX2VuY29kZWQoJ3V0Zi04JywgZXJyb3JzPWVycm9ycykpIGFzIGZpOgorICAgICAgICAgICAgICAgIGxpbmVzID0gbGlzdChmaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIGV4cGVjdGVkX2xpbmVzKQorCisgICAgICAgIGNoZWNrKCdpZ25vcmUnLCBbJ2FiYyddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6CisgICAgICAgICAgICBjaGVjaygnc3RyaWN0JywgWydhYmMnXSkKKyAgICAgICAgY2hlY2soJ3JlcGxhY2UnLCBbJ1x1ZmZmZGFiYyddKQorICAgICAgICBjaGVjaygnYmFja3NsYXNocmVwbGFjZScsIFsnXFx4ODBhYmMnXSkKKwogICAgIGRlZiB0ZXN0X21vZGVzKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgogICAgICAgICAgICAgIyBVVEYtNyBpcyBhIGNvbnZlbmllbnQsIHNlbGRvbSB1c2VkIGVuY29kaW5nCkBAIC05ODEsNSArMTAwNSwxMSBAQAogICAgICAgICAgICAgY2hlY2soJ3JiJywgWydBXG4nLCAnQlxyXG4nLCAnQ1xyJywgJ0RcdTIwYWMnXSkKIAogCitjbGFzcyBNaXNjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZpbGVpbnB1dCkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKaW5kZXggY2IxZjZkYi4uYWM4NDczZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CkBAIC0xLDYgKzEsNCBAQAotCiBpbXBvcnQgZnJhY3Rpb25zCi1pbXBvcnQgbWF0aAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgb3MKIGltcG9ydCByYW5kb20KQEAgLTEwLDYgKzgsOCBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogZnJvbSBtYXRoIGltcG9ydCBpc2luZiwgaXNuYW4sIGNvcHlzaWduLCBsZGV4cAogCiBJTkYgPSBmbG9hdCgiaW5mIikKQEAgLTYxLDYgKzYxLDI3IEBACiAgICAgICAgIGZsb2F0KGInLicgKyBiJzEnKjEwMDApCiAgICAgICAgIGZsb2F0KCcuJyArICcxJyoxMDAwKQogCisgICAgZGVmIHRlc3RfdW5kZXJzY29yZXMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnakp4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGxpdCksIGV2YWwobGl0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGxpdCksIGZsb2F0KGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBsaXQgaW4gKCcwXzcnLCAnMDlfOTknKTogICMgb2N0YWxzIGFyZSBub3QgcmVjb2duaXplZCBoZXJlCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnakp4WG9PYkInKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgbGl0KQorICAgICAgICAjIEFkZGl0aW9uYWwgdGVzdCBjYXNlczsgbmFuIGFuZCBpbmYgYXJlIG5ldmVyIHZhbGlkIGFzIGxpdGVyYWxzLAorICAgICAgICAjIG9ubHkgaW4gdGhlIGZsb2F0KCkgY29uc3RydWN0b3IsIGJ1dCB3ZSBkb24ndCBhbGxvdyB1bmRlcnNjb3JlcworICAgICAgICAjIGluIG9yIGFyb3VuZCB0aGVtLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ19OYU4nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ05hX04nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJ0lOX0YnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJy1fSU5GJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICctSU5GXycpCisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBoYW5kbGUgYnl0ZXMgdmFsdWVzIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGInMF8uXHhmZjknKQorCiAgICAgZGVmIHRlc3Rfbm9uX251bWVyaWNfaW5wdXRfdHlwZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBwb3NzaWJsZSBub24tbnVtZXJpYyB0eXBlcyBmb3IgdGhlIGFyZ3VtZW50IHgsIGluY2x1ZGluZwogICAgICAgICAjIHN1YmNsYXNzZXMgb2YgdGhlIGV4cGxpY2l0bHkgZG9jdW1lbnRlZCBhY2NlcHRlZCB0eXBlcy4KQEAgLTE2MiwxMSArMTgzLDEyIEBACiAgICAgICAgICAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChzdHIoc2VsZikpICsgMQogCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vMSgpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvbzIoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb28zKDIxKSksIDQyLikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChGb28xKCkpLCA0Mi4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMigpKSwgNDIuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMygyMSkpLCA0Mi4pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmxvYXQsIEZvbzQoNDIpKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvb1N0cignOCcpKSwgOS4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vU3RyKCc4JykpLCA5LikKIAogICAgICAgICBjbGFzcyBGb281OgogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKQEAgLTE3NywxMCArMTk5LDE0IEBACiAgICAgICAgIGNsYXNzIEY6CiAgICAgICAgICAgICBkZWYgX19mbG9hdF9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBPdGhlckZsb2F0U3ViY2xhc3MoNDIuKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEYoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGZsb2F0KEYoKSkpLCBPdGhlckZsb2F0U3ViY2xhc3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoRmxvYXRTdWJjbGFzcyhGKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShGbG9hdFN1YmNsYXNzKEYoKSkpLCBGbG9hdFN1YmNsYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRigpKSwgNDIuKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShmbG9hdChGKCkpKSwgZmxvYXQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGbG9hdFN1YmNsYXNzKEYoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmxvYXRTdWJjbGFzcyhGKCkpKSwgRmxvYXRTdWJjbGFzcykKIAogICAgIGRlZiB0ZXN0X2lzX2ludGVnZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKDEuMSkuaXNfaW50ZWdlcigpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5IGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CmluZGV4IGZhMzdmOTAuLmZiNzQyNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKQEAgLTYyLDE0ICs2MiwxNCBAQAogY2xhc3MgVHJhbnNsYXRlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnKicpLCAnLipcWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJz8nKSwgJy5cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ2E/YionKSwgJ2EuYi4qXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbYWJjXScpLCAnW2FiY11cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1tdXScpLCAnW11dXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbIXhdJyksICdbXnhdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXnhdJyksICdbXFxeeF1cWig/bXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1t4JyksICdcXFt4XFooP21zKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCcqJyksIHInKD9zOi4qKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJz8nKSwgcicoP3M6LilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdhP2IqJyksIHInKD9zOmEuYi4qKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1thYmNdJyksIHInKD9zOlthYmNdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1tdXScpLCByJyg/czpbXV0pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnWyF4XScpLCByJyg/czpbXnhdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1teeF0nKSwgcicoP3M6W1xeeF0pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW3gnKSwgcicoP3M6XFt4KVxaJykKIAogCiBjbGFzcyBGaWx0ZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weSBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CmluZGV4IDliMTM2MzIuLjhhZmQ1YjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZm9ybWF0LnB5CkBAIC0yNzQsNyArMjc0LDcgQEAKICAgICAgICAgdGVzdF9leGMoJyVkJywgJzEnLCBUeXBlRXJyb3IsICIlZCBmb3JtYXQ6IGEgbnVtYmVyIGlzIHJlcXVpcmVkLCBub3Qgc3RyIikKICAgICAgICAgdGVzdF9leGMoJyV4JywgJzEnLCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBzdHIiKQogICAgICAgICB0ZXN0X2V4YygnJXgnLCAzLjE0LCBUeXBlRXJyb3IsICIleCBmb3JtYXQ6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQsIG5vdCBmbG9hdCIpCi0gICAgICAgIHRlc3RfZXhjKCclZycsICcxJywgVHlwZUVycm9yLCAiYSBmbG9hdCBpcyByZXF1aXJlZCIpCisgICAgICAgIHRlc3RfZXhjKCclZycsICcxJywgVHlwZUVycm9yLCAibXVzdCBiZSByZWFsIG51bWJlciwgbm90IHN0ciIpCiAgICAgICAgIHRlc3RfZXhjKCdubyBmb3JtYXQnLCAnMScsIFR5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKQogICAgICAgICB0ZXN0X2V4YygnJWMnLCAtMSwgT3ZlcmZsb3dFcnJvciwgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIikKQEAgLTMwMCw2ICszMDAsOCBAQAogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCA3LCBiIlx4MDciKQogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCBiIloiLCBiIloiKQogICAgICAgICB0ZXN0Y29tbW9uKGIiJWMiLCBieXRlYXJyYXkoYiJaIiksIGIiWiIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlNWMiLCA2NSwgYiIgICAgQSIpCisgICAgICAgIHRlc3Rjb21tb24oYiIlLTVjIiwgNjUsIGIiQSAgICAiKQogICAgICAgICAjICViIHdpbGwgaW5zZXJ0IGEgc2VyaWVzIG9mIGJ5dGVzLCBlaXRoZXIgZnJvbSBhIHR5cGUgdGhhdCBzdXBwb3J0cwogICAgICAgICAjIHRoZSBQeV9idWZmZXIgcHJvdG9jb2wsIG9yIHNvbWV0aGluZyB0aGF0IGhhcyBhIF9fYnl0ZXNfXyBtZXRob2QKICAgICAgICAgY2xhc3MgRmFrZUJ5dGVzKG9iamVjdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weSBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CmluZGV4IDlkZjRhNTQuLjc5MDVjMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5CkBAIC0xNTAsNiArMTUwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAiMy8yIiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAzLCAwaikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAzLCAxaikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGLCAxLCAyLCAzKQogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RJbml0RnJvbUZsb2F0KHNlbGYpOgpAQCAtMjYzLDEzICsyNjQsMTMgQEAKICAgICAgICAgbmFuID0gaW5mIC0gaW5mCiAgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGZsb2F0IC0+IGludAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgaW5mIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIGluZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IC1pbmYgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgLWluZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVmFsdWVFcnJvciwgIkNhbm5vdCBjb252ZXJ0IG5hbiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9mbG9hdCwgbmFuKQogCiAgICAgZGVmIHRlc3RGcm9tRGVjaW1hbChzZWxmKToKQEAgLTI4NCwxNiArMjg1LDE2IEBACiAKICAgICAgICAgIyBidWcgMTY0Njk6IGVycm9yIHR5cGVzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggZGVjaW1hbCAtPiBpbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgiaW5mIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCAtSW5maW5pdHkgdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCItaW5mIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBOYU4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgibmFuIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBzTmFOIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoInNuYW4iKSkKIAogICAgIGRlZiB0ZXN0TGltaXREZW5vbWluYXRvcihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mjk5NWZkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9mc3RyaW5nLnB5CkBAIC0wLDAgKzEsNzQ4IEBACitpbXBvcnQgYXN0CitpbXBvcnQgdHlwZXMKK2ltcG9ydCBkZWNpbWFsCitpbXBvcnQgdW5pdHRlc3QKKworYV9nbG9iYWwgPSAnZ2xvYmFsIHZhcmlhYmxlJworCisjIFlvdSBjb3VsZCBhcmd1ZSB0aGF0IEknbSB0b28gc3RyaWN0IGluIGxvb2tpbmcgZm9yIHNwZWNpZmljIGVycm9yCisjICB2YWx1ZXMgd2l0aCBhc3NlcnRSYWlzZXNSZWdleCwgYnV0IHdpdGhvdXQgaXQgaXQncyB3YXkgdG9vIGVhc3kgdG8KKyMgIG1ha2UgYSBzeW50YXggZXJyb3IgaW4gdGhlIHRlc3Qgc3RyaW5ncy4gRXNwZWNpYWxseSB3aXRoIGFsbCBvZiB0aGUKKyMgIHRyaXBsZSBxdW90ZXMsIHJhdyBzdHJpbmdzLCBiYWNrc2xhc2hlcywgZXRjLiBJIHRoaW5rIGl0J3MgYQorIyAgd29ydGh3aGlsZSB0cmFkZW9mZi4gV2hlbiBJIHN3aXRjaGVkIHRvIHRoaXMgbWV0aG9kLCBJIGZvdW5kIG1hbnkKKyMgIGV4YW1wbGVzIHdoZXJlIEkgd2Fzbid0IHRlc3Rpbmcgd2hhdCBJIHRob3VnaHQgSSB3YXMuCisKK2NsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgYXNzZXJ0QWxsUmFpc2Uoc2VsZiwgZXhjZXB0aW9uX3R5cGUsIHJlZ2V4LCBlcnJvcl9zdHJpbmdzKToKKyAgICAgICAgZm9yIHN0ciBpbiBlcnJvcl9zdHJpbmdzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RyPXN0cik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KGV4Y2VwdGlvbl90eXBlLCByZWdleCk6CisgICAgICAgICAgICAgICAgICAgIGV2YWwoc3RyKQorCisgICAgZGVmIHRlc3RfX2Zvcm1hdF9fbG9va3VwKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBfX2Zvcm1hdF9fIGlzIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSwgbm90IHRoZSBpbnN0YW5jZS4KKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIHJldHVybiAnY2xhc3MnCisKKyAgICAgICAgeCA9IFgoKQorCisgICAgICAgICMgQWRkIGEgYm91bmQgX19mb3JtYXRfXyBtZXRob2QgdG8gdGhlICd5JyBpbnN0YW5jZSwgYnV0IG5vdAorICAgICAgICAjICB0aGUgJ3gnIGluc3RhbmNlLgorICAgICAgICB5ID0gWCgpCisgICAgICAgIHkuX19mb3JtYXRfXyA9IHR5cGVzLk1ldGhvZFR5cGUobGFtYmRhIHNlbGYsIHNwZWM6ICdpbnN0YW5jZScsIHkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t5fScsIGZvcm1hdCh5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t5fScsICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KHgpLCBmb3JtYXQoeSkpCisKKyAgICAgICAgIyBfX2Zvcm1hdF9fIGlzIG5vdCBjYWxsZWQgdGhpcyB3YXksIGJ1dCBzdGlsbCBtYWtlIHN1cmUgaXQKKyAgICAgICAgIyAgcmV0dXJucyB3aGF0IHdlIGV4cGVjdCAoc28gd2UgY2FuIG1ha2Ugc3VyZSB3ZSdyZSBieXBhc3NpbmcKKyAgICAgICAgIyAgaXQpLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19mb3JtYXRfXygnJyksICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS5fX2Zvcm1hdF9fKCcnKSwgJ2luc3RhbmNlJykKKworICAgICAgICAjIFRoaXMgaXMgaG93IF9fZm9ybWF0X18gaXMgYWN0dWFsbHkgY2FsbGVkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoeCkuX19mb3JtYXRfXyh4LCAnJyksICdjbGFzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSh5KS5fX2Zvcm1hdF9fKHksICcnKSwgJ2NsYXNzJykKKworICAgIGRlZiB0ZXN0X2FzdChzZWxmKToKKyAgICAgICAgIyBJbnNwaXJlZCBieSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjQ5NzUKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIDQKKyAgICAgICAgeCA9IFgoKQorICAgICAgICBleHByID0gIiIiCithID0gMTAKK2Yne2EgKiB4KCl9JyIiIgorICAgICAgICB0ID0gYXN0LnBhcnNlKGV4cHIpCisgICAgICAgIGMgPSBjb21waWxlKHQsICcnLCAnZXhlYycpCisKKyAgICAgICAgIyBNYWtlIHN1cmUgeCB3YXMgbm90IGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh4LmNhbGxlZCkKKworICAgICAgICAjIEFjdHVhbGx5IHJ1biB0aGUgY29kZS4KKyAgICAgICAgZXhlYyhjKQorCisgICAgICAgICMgTWFrZSBzdXJlIHggd2FzIGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguY2FsbGVkKQorCisgICAgZGVmIHRlc3RfbGl0ZXJhbF9ldmFsKHNlbGYpOgorICAgICAgICAjIFdpdGggbm8gZXhwcmVzc2lvbnMsIGFuIGYtc3RyaW5nIGlzIG9rYXkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbCgiZid4JyIpLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmxpdGVyYWxfZXZhbCgiZid4JyAneSciKSwgJ3h5JykKKworICAgICAgICAjIEJ1dCB0aGlzIHNob3VsZCByYWlzZSBhbiBlcnJvci4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdtYWxmb3JtZWQgbm9kZSBvciBzdHJpbmcnKToKKyAgICAgICAgICAgIGFzdC5saXRlcmFsX2V2YWwoImYneHszfSciKQorCisgICAgICAgICMgQXMgc2hvdWxkIHRoaXMsIHdoaWNoIHVzZXMgYSBkaWZmZXJlbnQgYXN0IG5vZGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdtYWxmb3JtZWQgbm9kZSBvciBzdHJpbmcnKToKKyAgICAgICAgICAgIGFzdC5saXRlcmFsX2V2YWwoImYnezN9JyIpCisKKyAgICBkZWYgdGVzdF9hc3RfY29tcGlsZV90aW1lX2NvbmNhdChzZWxmKToKKyAgICAgICAgeCA9IFsnJ10KKworICAgICAgICBleHByID0gIiIieFswXSA9ICdmb28nIGYnezN9JyIiIgorICAgICAgICB0ID0gYXN0LnBhcnNlKGV4cHIpCisgICAgICAgIGMgPSBjb21waWxlKHQsICcnLCAnZXhlYycpCisgICAgICAgIGV4ZWMoYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4WzBdLCAnZm9vMycpCisKKyAgICBkZWYgdGVzdF9saXRlcmFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhJywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnICcsICcgJykKKworICAgIGRlZiB0ZXN0X3VudGVybWluYXRlZF9zdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogdW50ZXJtaW5hdGVkIHN0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiIiJmJ3sieCciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJmJ3sieH0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiZid7KCJ4JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiImYneygieH0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWlzbWF0Y2hlZF9wYXJlbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogbWlzbWF0Y2hlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3soKH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RvdWJsZV9icmFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eycsICd7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7eycsICdheycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e2InLCAne2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7YicsICdhe2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX0nLCAnfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhfX0nLCAnYX0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX1iJywgJ31iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F9fWInLCAnYX1iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7fX0nLCAne30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7fX0nLCAnYXt9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7Yn19JywgJ3tifScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e319YycsICd7fWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7Yn19JywgJ2F7Yn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7fX1jJywgJ2F7fWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3tifX1jJywgJ3tifWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYXt7Yn19YycsICdhe2J9YycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7ezEwfScsICd7MTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX17MTB9JywgJ30xMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fXt7ezEwfScsICd9ezEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319YXt7ezEwfScsICd9YXsxMCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH17eycsICcxMHsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfX19JywgJzEwfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9fX17eycsICcxMH17JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH19fWF7eycgJ30nLCAnMTB9YXt9JykKKworICAgICAgICAjIEluc2lkZSBvZiBzdHJpbmdzLCBkb24ndCBpbnRlcnByZXQgZG91YmxlZCBicmFja2V0cy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sie3t9fSJ9JywgJ3t7fX0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoVHlwZUVycm9yLCAndW5oYXNoYWJsZSB0eXBlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYneyB7e319IH0nIiwgIyBkaWN0IGluIGEgc2V0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3RpbWVfY29uY2F0KHNlbGYpOgorICAgICAgICB4ID0gJ2RlZicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJyBmJyMjIHt4fWdoaScsICdhYmMjIyBkZWZnaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnIGYne3h9JyAnZ2hpJywgJ2FiY2RlZmdoaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycgZid7eH0nICdnaCcgZidpe3g6NH0nLCAnYWJjZGVmZ2hpZGVmICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t4fScgZid7eH0nLCAne3h9ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3gnIGYne3h9JywgJ3t4ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3h9JyBmJ3t4fScsICd7eH1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7e3h9fScgZid7eH0nLCAne3t4fX1kZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7e3gnIGYne3h9JywgJ3t7eGRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3h9fScgZid7eH0nLCAneH19ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgJ3h9fScsICdkZWZ4fX0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyAnJywgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZid7eH0nICcnLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJ3t4fScsICdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyAnMicsICdkZWYyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMScgZid7eH0nICcyJywgJzFkZWYyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMScgZid7eH0nLCAnMWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nIGYnLXt4fScsICdkZWYtZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYnJyAnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZicnICcnIGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycgJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyAnJyBmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJyAnJyBmJycgJycsICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szJyBmJ30nIiwgICMgY2FuJ3QgY29uY2F0IHRvIGdldCBhIHZhbGlkIGYtc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9jb21tZW50cyhzZWxmKToKKyAgICAgICAgIyBUaGVzZSBhcmVuJ3QgY29tbWVudHMsIHNpbmNlIHRoZXkncmUgaW4gc3RyaW5ncy4KKyAgICAgICAgZCA9IHsnIyc6ICdoYXNoJ30KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIyJ9JywgJyMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbIiMiXX0nLCAnaGFzaCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nIGV4cHJlc3Npb24gcGFydCBjYW5ub3QgaW5jbHVkZSAnIyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MSN9JyIsICAgIyBlcnJvciBiZWNhdXNlIHRoZSBleHByZXNzaW9uIGJlY29tZXMgIigxIykiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szKCMpfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7I30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneykjfSciLCAgICMgV2hlbiB3cmFwcGVkIGluIHBhcmVucywgdGhpcyBiZWNvbWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAnKCkjKScuICBNYWtlIHN1cmUgdGhhdCBkb2Vzbid0IGNvbXBpbGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9tYW55X2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICAjIENyZWF0ZSBhIHN0cmluZyB3aXRoIG1hbnkgZXhwcmVzc2lvbnMgaW4gaXQuIE5vdGUgdGhhdAorICAgICAgICAjICBiZWNhdXNlIHdlIGhhdmUgYSBzcGFjZSBpbiBoZXJlIGFzIGEgbGl0ZXJhbCwgd2UncmUgYWN0dWFsbHkKKyAgICAgICAgIyAgZ29pbmcgdG8gdXNlIHR3aWNlIGFzIG1hbnkgYXN0IG5vZGVzOiBvbmUgZm9yIGVhY2ggbGl0ZXJhbAorICAgICAgICAjICBwbHVzIG9uZSBmb3IgZWFjaCBleHByZXNzaW9uLgorICAgICAgICBkZWYgYnVpbGRfZnN0cihuLCBleHRyYT0nJyk6CisgICAgICAgICAgICByZXR1cm4gImYnIiArICgne3h9ICcgKiBuKSArIGV4dHJhICsgIiciCisKKyAgICAgICAgeCA9ICdYJworICAgICAgICB3aWR0aCA9IDEKKworICAgICAgICAjIFRlc3QgYXJvdW5kIDI1Ni4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjUwLCAyNjApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGJ1aWxkX2ZzdHIoaSkpLCAoeCsnICcpKmkpCisKKyAgICAgICAgIyBUZXN0IGNvbmNhdGVuYXRpbmcgMiBsYXJncyBmc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKGJ1aWxkX2ZzdHIoMjU1KSoyNTYpLCAoeCsnICcpKigyNTUqMjU2KSkKKworICAgICAgICBzID0gYnVpbGRfZnN0cigyNTMsICd7eDp7d2lkdGh9fSAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwocyksICh4KycgJykqMjU0KQorCisgICAgICAgICMgVGVzdCBsb3RzIG9mIGV4cHJlc3Npb25zIGFuZCBjb25zdGFudHMsIGNvbmNhdGVuYXRlZC4KKyAgICAgICAgcyA9ICJmJ3sxfScgJ3gnICd5JyIgKiAxMDI0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChzKSwgJzF4eScgKiAxMDI0KQorCisgICAgZGVmIHRlc3RfZm9ybWF0X3NwZWNpZmllcl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgd2lkdGggPSAxMAorICAgICAgICBwcmVjaXNpb24gPSA0CisgICAgICAgIHZhbHVlID0gZGVjaW1hbC5EZWNpbWFsKCcxMi4zNDU2NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGh9LntwcmVjaXNpb259fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6e3dpZHRoIXJ9LntwcmVjaXNpb259fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6e3dpZHRoOjB9LntwcmVjaXNpb246MX19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidyZXN1bHQ6IHt2YWx1ZTp7MX17MDowfS57cHJlY2lzaW9uOjF9fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6eyAxfXsgMDowfS57IHByZWNpc2lvbjoxfX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMDojezF9MHh9JywgJyAgICAgICAweGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwOnsiIyJ9MXswfXsieCJ9fScsICcgICAgICAgMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3stMTA6LXsiIyJ9MXswfXh9JywgJyAgICAgIC0weGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYney0xMDp7Ii0ifSN7MX0weyJ4In19JywgJyAgICAgIC0weGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwOiN7MyAhPSB7NDo1fSBhbmQgd2lkdGh9eH0nLCAnICAgICAgIDB4YScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIiIiZid7InMiIXJ7IjoxMCJ9fSciIiIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGxvb2tzIGxpa2UgYSBuZXN0ZWQgZm9ybWF0IHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImludmFsaWQgc3ludGF4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIyBJbnZhbGlkIHN5bnRheCBpbnNpZGUgYSBuZXN0ZWQgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezQ6ey81fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cHJlc3Npb25zIG5lc3RlZCB0b28gZGVlcGx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIyBDYW4ndCBuZXN0IGZvcm1hdCBzcGVjaWZpZXJzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZidyZXN1bHQ6IHt2YWx1ZTp7d2lkdGg6ezB9fS57cHJlY2lzaW9uOjF9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogaW52YWxpZCBjb252ZXJzaW9uIGNoYXJhY3RlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyMgTm8gZXhwYW5zaW9uIGluc2lkZSBjb252ZXJzaW9uIG9yIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICB0aGUgOiBvciAhIGl0c2VsZi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIiZid7InMiIXsiciJ9fSciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9vcmRlcihzZWxmKToKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmkgPSAwCisgICAgICAgICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICBzZWxmLmkgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi5pKQorCisgICAgICAgIHggPSBYKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fSB7eH0nLCAnMSAyJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZXhwcmVzc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBlbXB0eSBleHByZXNzaW9uIG5vdCBhbGxvd2VkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyB9JyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnIHt9ICciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXJ9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXJ9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sxMDp7IH19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJyB7IH0gJyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDYXRjaCB0aGUgZW1wdHkgZXhwcmVzc2lvbiBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIGludmFsaWQgY29udmVyc2lvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICF4cn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF4On0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF4OmF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXhyOn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAheHI6YX0nIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezp9JyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBmaW5kIHRoZSBlbXB0eSBleHByZXNzaW9uIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgbWlzc2luZyBjbG9zaW5nIGJyYWNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ISciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7IXM6JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s6JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s6eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfcGFyZW5zX2luX2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMsfScsICcoMywpJykKKworICAgICAgICAjIEFkZCB0aGVzZSBiZWNhdXNlIHdoZW4gYW4gZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIHBhcmVucworICAgICAgICAjICBhcmUgYWRkZWQgYXJvdW5kIGl0LiBCdXQgd2Ugc2hvdWxkbid0IGdvIGZyb20gYW4gaW52YWxpZAorICAgICAgICAjICBleHByZXNzaW9uIHRvIGEgdmFsaWQgb25lLiBUaGUgYWRkZWQgcGFyZW5zIGFyZSBqdXN0CisgICAgICAgICMgIHN1cHBvc2VkIHRvIGFsbG93IHdoaXRlc3BhY2UgKGluY2x1ZGluZyBuZXdsaW5lcykuCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3ssfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7LH0nIiwgICMgdGhpcyBpcyAoLCksIHdoaWNoIGlzIGFuIGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezMpKyg0fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdFT0wgd2hpbGUgc2Nhbm5pbmcgc3RyaW5nIGxpdGVyYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7XG59JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9iYWNrc2xhc2hlc19pbl9zdHJpbmdfcGFydChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x0JywgJ1x0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1x0JywgJ1xcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXHQnLCAnXFx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx0JywgJzJcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdHszfScsICcyXHQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x0ezN9JywgJ1x0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDM5NCcsICdcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXHUwMzk0JywgJ1xcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1x1MDM5NCcsICdcXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx1MDM5NCcsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx1MDM5NHszfScsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdTAzOTR7M30nLCAnXHUwMzk0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xVMDAwMDAzOTQnLCAnXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1xVMDAwMDAzOTQnLCAnXFxVMDAwMDAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1xVMDAwMDAzOTQnLCAnXFxVMDAwMDAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XFUwMDAwMDM5NCcsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxVMDAwMDAzOTR7M30nLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXFUwMDAwMDM5NHszfScsICdcdTAzOTQzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9JywgJ1x1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0nLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX17M30nLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9ezN9JywgJ1x1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnMlxOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfScsICcyXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0zJywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfTMnLCAnXHUwMzk0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4MjAnLCAnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidceDIwJywgJ1xceDIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidceDIwJywgJ1xceDIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx4MjAnLCAnMiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHgyMHszfScsICcyIDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHgyMHszfScsICcgMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJceDIwJywgJzIgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJceDIwMycsICcyIDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHgyMDMnLCAnIDMnKQorCisgICAgZGVmIHRlc3RfbWlzZm9ybWVkX3VuaWNvZGVfY2hhcmFjdGVyX25hbWUoc2VsZik6CisgICAgICAgICMgVGhlc2UgdGVzdCBhcmUgbmVlZGVkIGJlY2F1c2UgdW5pY29kZSBuYW1lcyBhcmUgcGFyc2VkCisgICAgICAgICMgZGlmZmVyZW50bHkgaW5zaWRlIGYtc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgciJcKHVuaWNvZGUgZXJyb3JcKSAndW5pY29kZWVzY2FwZScgY29kZWMgY2FuJ3QgZGVjb2RlIGJ5dGVzIGluIHBvc2l0aW9uIC4qOiBtYWxmb3JtZWQgXFxOIGNoYXJhY3RlciBlc2NhcGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYnXE4nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ1xOeyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEEnIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEhlcmUgYXJlIHRoZSBub24tZi1zdHJpbmcgdmVyc2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIHdoaWNoIHNob3VsZCBnaXZlIHRoZSBzYW1lIGVycm9ycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciInXE4nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciInXE57JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9ub19iYWNrc2xhc2hlc19pbl9leHByZXNzaW9uX3BhcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgY2Fubm90IGluY2x1ZGUgYSBiYWNrc2xhc2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYne1wnYVwnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYne1x0M30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3tcfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByInJmJ3tcJ2FcJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJyZid7XHQzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByInJmJ3tcfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIicmYneyJcTntMRUZUIENVUkxZIEJSQUNLRVR9In0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfbm9fZXNjYXBlc19mb3JfYnJhY2VzKHNlbGYpOgorICAgICAgICAjIFx4N2IgaXMgJ3snLiAgTWFrZSBzdXJlIGl0IGRvZXNuJ3Qgc3RhcnQgYW4gZXhwcmVzc2lvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4N2IyfX0nLCAnezJ9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4N2IyJywgJ3syJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x1MDA3YjInLCAnezInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXE57TEVGVCBDVVJMWSBCUkFDS0VUfTJcTntSSUdIVCBDVVJMWSBCUkFDS0VUfScsICd7Mn0nKQorCisgICAgZGVmIHRlc3RfbmV3bGluZXNfaW5fZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MH0nLCAnMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnJyd7MysKKzR9JycnLCAnNycpCisKKyAgICBkZWYgdGVzdF9sYW1iZGEoc2VsZik6CisgICAgICAgIHggPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7KGxhbWJkYSB5OngqeSkoIjgiKSFyfScsICInODg4ODgnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sobGFtYmRhIHk6eCp5KSgiOCIpIXI6MTB9JywgIic4ODg4OCcgICAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyhsYW1iZGEgeTp4KnkpKCI4Iik6MTB9JywgIjg4ODg4ICAgICAiKQorCisgICAgICAgICMgbGFtYmRhIGRvZXNuJ3Qgd29yayB3aXRob3V0IHBhcmVucywgYmVjYXVzZSB0aGUgY29sb24KKyAgICAgICAgIyAgbWFrZXMgdGhlIHBhcnNlciB0aGluayBpdCdzIGEgZm9ybWF0X3NwZWMKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ3VuZXhwZWN0ZWQgRU9GIHdoaWxlIHBhcnNpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7bGFtYmRhIHg6eH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3lpZWxkKHNlbGYpOgorICAgICAgICAjIE5vdCB0ZXJyaWJseSB1c2VmdWwsIGJ1dCBtYWtlIHN1cmUgdGhlIHlpZWxkIHR1cm5zCisgICAgICAgICMgIGEgZnVuY3Rpb24gaW50byBhIGdlbmVyYXRvcgorICAgICAgICBkZWYgZm4oeSk6CisgICAgICAgICAgICBmJ3k6e3lpZWxkIHkqMn0nCisKKyAgICAgICAgZyA9IGZuKDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgOCkKKworICAgIGRlZiB0ZXN0X3lpZWxkX3NlbmQoc2VsZik6CisgICAgICAgIGRlZiBmbih4KToKKyAgICAgICAgICAgIHlpZWxkIGYneDp7eWllbGQgKGxhbWJkYSBpOiB4ICogaSl9JworCisgICAgICAgIGcgPSBmbigxMCkKKyAgICAgICAgdGhlX2xhbWJkYSA9IG5leHQoZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfbGFtYmRhKDQpLCA0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLnNlbmQoJ3N0cmluZycpLCAneDpzdHJpbmcnKQorCisgICAgZGVmIHRlc3RfZXhwcmVzc2lvbnNfd2l0aF90cmlwbGVfcXVvdGVkX3N0cmluZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7JycneCcnJ30iLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7JycnZXJpYydzJycnfSIsICJlcmljJ3MiKQorCisgICAgICAgICMgVGVzdCBjb25jYXRlbmF0aW9uIHdpdGhpbiBhbiBleHByZXNzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IngiICIiImVyaWMicyIiIiAieSJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sieCIgIiIiZXJpYyJzIiIifScsICd4ZXJpYyJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJlcmljInMiIiIgInkifScsICdlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJ4IiIiICIiImVyaWMicyIiIiAieSJ9JywgJ3hlcmljInN5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siIiJ4IiIiICIiImVyaWMicyIiIiAiIiJ5IiIifScsICd4ZXJpYyJzeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ciIiIngiIiIgIiIiZXJpYyJzIiIiICIiInkiIiJ9JywgJ3hlcmljInN5JykKKworICAgIGRlZiB0ZXN0X211bHRpcGxlX3ZhcnMoc2VsZik6CisgICAgICAgIHggPSA5OAorICAgICAgICB5ID0gJ2FiYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fXt5fScsICc5OGFiYycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH17eX0nLCAnWDk4YWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fVh7eX0nLCAnOThYYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fXt5fVgnLCAnOThhYmNYJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fVl7eX0nLCAnWDk4WWFiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9e3l9WScsICdYOThhYmNZJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fVh7eX1ZJywgJzk4WGFiY1knKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9WXt5fVonLCAnWDk4WWFiY1onKQorCisgICAgZGVmIHRlc3RfY2xvc3VyZShzZWxmKToKKyAgICAgICAgZGVmIG91dGVyKHgpOgorICAgICAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGYneDp7eH0nCisgICAgICAgICAgICByZXR1cm4gaW5uZXIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dGVyKCc5ODcnKSgpLCAneDo5ODcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dGVyKDcpKCksICd4OjcnKQorCisgICAgZGVmIHRlc3RfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICB5ID0gMgorICAgICAgICBkZWYgZih4LCB3aWR0aCk6CisgICAgICAgICAgICByZXR1cm4gZid4PXt4Knk6e3dpZHRofX0nCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKCdmb28nLCAxMCksICd4PWZvb2ZvbyAgICAnKQorICAgICAgICB4ID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmKDEwLCAxMCksICd4PSAgICAgICAgMjAnKQorCisgICAgZGVmIHRlc3RfbG9jYWxzKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IDEyMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYndjp7dmFsdWV9JywgJ3Y6MTIzJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfdmFyaWFibGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGYndjp7dmFsdWV9JworCisgICAgZGVmIHRlc3RfbWlzc2luZ19mb3JtYXRfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgTzoKKyAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIHNwZWMpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzcGVjOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyonCisgICAgICAgICAgICAgICAgcmV0dXJuIHNwZWMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKTp4fScsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tPKCl9JywgJyonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne08oKTp9JywgJyonKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mzp9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhczp9JywgJzMnKQorCisgICAgZGVmIHRlc3RfZ2xvYmFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9JywgJ2c6Z2xvYmFsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywgImc6J2dsb2JhbCB2YXJpYWJsZSciKQorCisgICAgICAgIGFfbG9jYWwgPSAnbG9jYWwgdmFyaWFibGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbH0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnOmdsb2JhbCB2YXJpYWJsZSBsOmxvY2FsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzonZ2xvYmFsIHZhcmlhYmxlJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbCFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgImc6Z2xvYmFsIHZhcmlhYmxlIGw6J2xvY2FsIHZhcmlhYmxlJyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbigibW9kdWxlICd1bml0dGVzdCcgZnJvbSIsIGYne3VuaXR0ZXN0fScpCisKKyAgICBkZWYgdGVzdF9zaGFkb3dlZF9nbG9iYWwoc2VsZik6CisgICAgICAgIGFfZ2xvYmFsID0gJ3JlYWxseSBhIGxvY2FsJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9JywgJ2c6cmVhbGx5IGEgbG9jYWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWwhcn0nLCAiZzoncmVhbGx5IGEgbG9jYWwnIikKKworICAgICAgICBhX2xvY2FsID0gJ2xvY2FsIHZhcmlhYmxlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWx9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZzpyZWFsbHkgYSBsb2NhbCBsOmxvY2FsIHZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzoncmVhbGx5IGEgbG9jYWwnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsIXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZzpyZWFsbHkgYSBsb2NhbCBsOidsb2NhbCB2YXJpYWJsZSciKQorCisgICAgZGVmIHRlc3RfY2FsbChzZWxmKToKKyAgICAgICAgZGVmIGZvbyh4KToKKyAgICAgICAgICAgIHJldHVybiAneD0nICsgc3RyKHgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmb28oMTApfScsICd4PTEwJykKKworICAgIGRlZiB0ZXN0X25lc3RlZF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgeSA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmInswfSIqM30nLCAnMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tmInt5fSIqM30nLCAnNTU1JykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfc3RyaW5nX3ByZWZpeGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAndW5leHBlY3RlZCBFT0Ygd2hpbGUgcGFyc2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmdScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmVScnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidUYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1ZnInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdXInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJydWYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGVVInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdXInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZCJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGQicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYkYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJGJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbGVhZGluZ190cmFpbGluZ19zcGFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IDN9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyAgM30nLCAnMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyB9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMgIH0nLCAnMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2V4cHI9eyB7eDogeSBmb3IgeCwgeSBpbiBbKDEsIDIpLCBdfX0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleHByPXsxOiAyfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidleHByPXsge3g6IHkgZm9yIHgsIHkgaW4gWygxLCAyKSwgXX0gfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cHI9ezE6IDJ9JykKKworICAgIGRlZiB0ZXN0X25vdF9lcXVhbChzZWxmKToKKyAgICAgICAgIyBUaGVyZSdzIGEgc3BlY2lhbCB0ZXN0IGZvciB0aGlzIGJlY2F1c2UgdGhlcmUncyBhIHNwZWNpYWwKKyAgICAgICAgIyAgY2FzZSBpbiB0aGUgZi1zdHJpbmcgcGFyc2VyIHRvIGxvb2sgZm9yICE9IGFzIG5vdCBlbmRpbmcgYW4KKyAgICAgICAgIyAgZXhwcmVzc2lvbi4gTm9ybWFsbHkgaXQgd291bGQsIHdoaWxlIGxvb2tpbmcgZm9yICFzIG9yICFyLgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NH0nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NDp9JywgJ1RydWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhPTQhc30nLCAnVHJ1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MyE9NCFzOi4zfScsICdUcnUnKQorCisgICAgZGVmIHRlc3RfY29udmVyc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNDoxMC4xMH0nLCAnICAgICAgMy4xNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNCFzOjEwLjEwfScsICczLjE0ICAgICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0IXI6MTAuMTB9JywgJzMuMTQgICAgICAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQhYToxMC4xMH0nLCAnMy4xNCAgICAgICcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siYSJ9JywgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIiFyfScsICInYSciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJhIiFhfScsICInYSciKQorCisgICAgICAgICMgTm90IGEgY29udmVyc2lvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siYSFyIn0nLCAiYSFyIikKKworICAgICAgICAjIE5vdCBhIGNvbnZlcnNpb24sIGJ1dCBzaG93IHRoYXQgISBpcyBhbGxvd2VkIGluIGEgZm9ybWF0IHNwZWMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNDohPDEwLjEwfScsICczLjE0ISEhISEhJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGludmFsaWQgY29udmVyc2lvbiBjaGFyYWN0ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MyFnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFBfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFHfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEhfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyE6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEgc30nIiwgICMgbm8gc3BhY2UgYmVmb3JlIGNvbnZlcnNpb24gY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t4IXN7eX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzczp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXNzOnN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9hc3NpZ25tZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZicnID0gMyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3swfScgPSB4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3h9JyA9IHgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZGVsIGYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWwgJycgZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21pc21hdGNoZWRfYnJhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IHNpbmdsZSAnfScgaXMgbm90IGFsbG93ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7e30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3t9fX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid4fXgnIiwKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENhbid0IGhhdmUgeyBvciB9IGluIGEgZm9ybWF0IHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOn0+MTB9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOn19PjEwfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szOnt7PjEwfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhczonIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhczozJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3h7eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7eCciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MzpzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t7eyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7e319eyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgIyBCdXQgdGhlc2UgYXJlIGp1c3Qgbm9ybWFsIHN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7InsifScsICd7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sifSJ9JywgJ30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezM6eyJ9In0+MTB9JywgJ319fX19fX19fTMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezI6eyJ7In0+MTB9JywgJ3t7e3t7e3t7ezInKQorCisgICAgZGVmIHRlc3RfaWZfY29uZGl0aW9uYWwoc2VsZik6CisgICAgICAgICMgVGhlcmUncyBzcGVjaWFsIGxvZ2ljIGluIGNvbXBpbGUuYyB0byB0ZXN0IGlmIHRoZQorICAgICAgICAjICBjb25kaXRpb25hbCBmb3IgYW4gaWYgKGFuZCB3aGlsZSkgYXJlIGNvbnN0YW50cy4gRXhlcmNpc2UKKyAgICAgICAgIyAgdGhhdCBjb2RlLgorCisgICAgICAgIGRlZiB0ZXN0X2ZzdHJpbmcoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmIGYne3h9JzoKKyAgICAgICAgICAgICAgICBmbGFnID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmbGFnID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBleHBlY3RlZCkKKworICAgICAgICBkZWYgdGVzdF9jb25jYXRfZW1wdHkoeCwgZXhwZWN0ZWQpOgorICAgICAgICAgICAgZmxhZyA9IDAKKyAgICAgICAgICAgIGlmICcnIGYne3h9JzoKKyAgICAgICAgICAgICAgICBmbGFnID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmbGFnID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBleHBlY3RlZCkKKworICAgICAgICBkZWYgdGVzdF9jb25jYXRfbm9uX2VtcHR5KHgsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIGZsYWcgPSAwCisgICAgICAgICAgICBpZiAnICcgZid7eH0nOgorICAgICAgICAgICAgICAgIGZsYWcgPSAxCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZsYWcgPSAyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIGV4cGVjdGVkKQorCisgICAgICAgIHRlc3RfZnN0cmluZygnJywgMikKKyAgICAgICAgdGVzdF9mc3RyaW5nKCcgJywgMSkKKworICAgICAgICB0ZXN0X2NvbmNhdF9lbXB0eSgnJywgMikKKyAgICAgICAgdGVzdF9jb25jYXRfZW1wdHkoJyAnLCAxKQorCisgICAgICAgIHRlc3RfY29uY2F0X25vbl9lbXB0eSgnJywgMSkKKyAgICAgICAgdGVzdF9jb25jYXRfbm9uX2VtcHR5KCcgJywgMSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X2Zvcm1hdF9zcGVjaWZpZXIoc2VsZik6CisgICAgICAgIHggPSAndGVzdCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4On0nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eCFzOn0nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eCFyOn0nLCAiJ3Rlc3QnIikKKworICAgIGRlZiB0ZXN0X3N0cl9mb3JtYXRfZGlmZmVyZW5jZXMoc2VsZik6CisgICAgICAgIGQgPSB7J2EnOiAnc3RyaW5nJywKKyAgICAgICAgICAgICAwOiAnaW50ZWdlcicsCisgICAgICAgICAgICAgfQorICAgICAgICBhID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbMF19JywgJ2ludGVnZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne2RbImEiXX0nLCAnc3RyaW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkW2FdfScsICdpbnRlZ2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne2RbYV19Jy5mb3JtYXQoZD1kKSwgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3tkWzBdfScuZm9ybWF0KGQ9ZCksICdpbnRlZ2VyJykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7YVs0KX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3thKDRdfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgICAgICMgc2VlIGlzc3VlIDI2Mjg3CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoVHlwZUVycm9yLCAnbm9uLWVtcHR5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3sobGFtYmRhOiAwKTp4fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYneygwLCk6eH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShWYWx1ZUVycm9yLCAnVW5rbm93biBmb3JtYXQgY29kZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7MTAwMDpqfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByImYnezEwMDA6an0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbG9vcChzZWxmKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnaTp7aX0nLCAnaTonICsgc3RyKGkpKQorCisgICAgZGVmIHRlc3RfZGljdChzZWxmKToKKyAgICAgICAgZCA9IHsnIic6ICdkcXVvdGUnLAorICAgICAgICAgICAgICInIjogJ3NxdW90ZScsCisgICAgICAgICAgICAgJ2Zvbyc6ICdiYXInLAorICAgICAgICAgICAgIH0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycne2RbIiciXX0nJycsICdzcXVvdGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYiIiJ7ZFsnIiddfSIiIiwgJ2RxdW90ZScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkWyJmb28iXX0nLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmIntkWydmb28nXX0iLCAnYmFyJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggYWVmNjZkYS4uMTJmYWJjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTMxMSwxMCArMzExLDEyIEBACiAgICAgICAgIF9zc2xfY2xvc2luZyA9IEZhbHNlCiAKICAgICAgICAgZGVmIHNlY3VyZV9jb25uZWN0aW9uKHNlbGYpOgotICAgICAgICAgICAgc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwgc2VydmVyX3NpZGU9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc29ja2V0ID0gY29udGV4dC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQogICAgICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCiAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQoc29ja2V0KQogICAgICAgICAgICAgc2VsZi5fc3NsX2FjY2VwdGluZyA9IFRydWUKQEAgLTEwNDksMTAgKzEwNTEsMTkgQEAKICAgICAgICAgZnRwLmNsb3NlKCkKIAogCitjbGFzcyBNaXNjVGVzdENhc2UoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydNU0dfT09CJywgJ0ZUUF9QT1JUJywgJ01BWExJTkUnLCAnQ1JMRicsICdCX0NSTEYnLAorICAgICAgICAgICAgICAgICAgICAgJ0Vycm9yJywgJ3BhcnNlMTUwJywgJ3BhcnNlMjI3JywgJ3BhcnNlMjI5JywgJ3BhcnNlMjU3JywKKyAgICAgICAgICAgICAgICAgICAgICdwcmludF9saW5lJywgJ2Z0cGNwJywgJ3Rlc3QnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmdHBsaWIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW1Rlc3RGVFBDbGFzcywgVGVzdFRpbWVvdXRzLAogICAgICAgICAgICAgIFRlc3RJUHY2RW52aXJvbm1lbnQsCi0gICAgICAgICAgICAgVGVzdFRMU19GVFBDbGFzc01peGluLCBUZXN0VExTX0ZUUENsYXNzXQorICAgICAgICAgICAgIFRlc3RUTFNfRlRQQ2xhc3NNaXhpbiwgVGVzdFRMU19GVFBDbGFzcywKKyAgICAgICAgICAgICBNaXNjVGVzdENhc2VdCiAKICAgICB0aHJlYWRfaW5mbyA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CmluZGV4IDUwNzY2NDQuLjllYTY3NDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CkBAIC04LDYgKzgsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKK2ltcG9ydCBjb250ZXh0bGliCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMjAsNiArMjEsMTQgQEAKIAogZGVjaW1hbCA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKIAorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiByZXBsYWNlZF9tb2R1bGUobmFtZSwgcmVwbGFjZW1lbnQpOgorICAgIG9yaWdpbmFsX21vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSByZXBsYWNlbWVudAorICAgIHRyeToKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG9yaWdpbmFsX21vZHVsZQogCiBkZWYgY2FwdHVyZSgqYXJncywgKiprdyk6CiAgICAgIiIiY2FwdHVyZSBhbGwgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMiIiIKQEAgLTE2Nyw1OCArMTc2LDM1IEBACiAgICAgICAgIHAyLm5ld19hdHRyID0gJ3NwYW0nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIubmV3X2F0dHIsICdzcGFtJykKIAotCi1AdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKLWNsYXNzIFRlc3RQYXJ0aWFsQyhUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGlmIGNfZnVuY3Rvb2xzOgotICAgICAgICBwYXJ0aWFsID0gY19mdW5jdG9vbHMucGFydGlhbAotCi0gICAgZGVmIHRlc3RfYXR0cmlidXRlc191bndyaXRhYmxlKHNlbGYpOgotICAgICAgICAjIGF0dHJpYnV0ZXMgc2hvdWxkIG5vdCBiZSB3cml0YWJsZQotICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsIDEsIDIsIGE9MTAsIGI9MjApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnZnVuYycsIG1hcCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdhcmdzJywgKDEsIDIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2tleXdvcmRzJywgZGljdChhPTEsIGI9MikpCi0KLSAgICAgICAgcCA9IHNlbGYucGFydGlhbChoZXgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRlbCBwLl9fZGljdF9fCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ3BhcnRpYWwgb2JqZWN0IGFsbG93ZWQgX19kaWN0X18gdG8gYmUgZGVsZXRlZCcpCi0KICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICBhcmdzID0gKG9iamVjdCgpLCBvYmplY3QoKSkKICAgICAgICAgYXJnc19yZXByID0gJywgJy5qb2luKHJlcHIoYSkgZm9yIGEgaW4gYXJncykKICAgICAgICAga3dhcmdzID0geydhJzogb2JqZWN0KCksICdiJzogb2JqZWN0KCl9CiAgICAgICAgIGt3YXJnc19yZXBycyA9IFsnYT17YSFyfSwgYj17YiFyfScuZm9ybWF0X21hcChrd2FyZ3MpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ2I9e2Ihcn0sIGE9e2Ehcn0nLmZvcm1hdF9tYXAoa3dhcmdzKV0KLSAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGlzIGNfZnVuY3Rvb2xzLnBhcnRpYWw6CisgICAgICAgIGlmIHNlbGYucGFydGlhbCBpbiAoY19mdW5jdG9vbHMucGFydGlhbCwgcHlfZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgICAgICAgbmFtZSA9ICdmdW5jdG9vbHMucGFydGlhbCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5hbWUgPSBzZWxmLnBhcnRpYWwuX19uYW1lX18KIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t9KHshcn0pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihmKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tuYW1lfSh7Y2FwdHVyZSFyfSknLCByZXByKGYpKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgKmFyZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t9KHshcn0sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGFyZ3NfcmVwciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihmKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tuYW1lfSh7Y2FwdHVyZSFyfSwge2FyZ3NfcmVwcn0pJywgcmVwcihmKSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKHJlcHIoZiksCi0gICAgICAgICAgICAgICAgICAgICAgWyd7fSh7IXJ9LCB7fSknLmZvcm1hdChuYW1lLCBjYXB0dXJlLCBrd2FyZ3NfcmVwcikKKyAgICAgICAgICAgICAgICAgICAgICBbZid7bmFtZX0oe2NhcHR1cmUhcn0sIHtrd2FyZ3NfcmVwcn0pJwogICAgICAgICAgICAgICAgICAgICAgICBmb3Iga3dhcmdzX3JlcHIgaW4ga3dhcmdzX3JlcHJzXSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsICphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXByKGYpLAotICAgICAgICAgICAgICAgICAgICAgIFsne30oeyFyfSwge30sIHt9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUsIGFyZ3NfcmVwciwga3dhcmdzX3JlcHIpCisgICAgICAgICAgICAgICAgICAgICAgW2Yne25hbWV9KHtjYXB0dXJlIXJ9LCB7YXJnc19yZXByfSwge2t3YXJnc19yZXByfSknCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrd2FyZ3NfcmVwciBpbiBrd2FyZ3NfcmVwcnNdKQogCiAgICAgZGVmIHRlc3RfcmVjdXJzaXZlX3JlcHIoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucGFydGlhbCBpcyBjX2Z1bmN0b29scy5wYXJ0aWFsOgorICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaW4gKGNfZnVuY3Rvb2xzLnBhcnRpYWwsIHB5X2Z1bmN0b29scy5wYXJ0aWFsKToKICAgICAgICAgICAgIG5hbWUgPSAnZnVuY3Rvb2xzLnBhcnRpYWwnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuYW1lID0gc2VsZi5wYXJ0aWFsLl9fbmFtZV9fCkBAIC0yMjYsMzAgKzIxMiwzMSBAQAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChmLCAoKSwge30sIHt9KSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXMoLi4uKSknICUgKG5hbWUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoLi4uKScgJSAobmFtZSwpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsIChmLCksIHt9LCB7fSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVyLCAlcyguLi4pKScgJSAobmFtZSwgY2FwdHVyZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgLi4uKScgJSAobmFtZSwgY2FwdHVyZSwpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7J2EnOiBmfSwge30pKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgYT0lcyguLi4pKScgJSAobmFtZSwgY2FwdHVyZSwgbmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgYT0uLi4pJyAlIChuYW1lLCBjYXB0dXJlLCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlLCBbJ2FzZGYnXSwgYmFyPVtUcnVlXSkKLSAgICAgICAgZi5hdHRyID0gW10KLSAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGZfY29weSksIHNpZ25hdHVyZShmKSkKKyAgICAgICAgd2l0aCBzZWxmLkFsbG93UGlja2xlKCk6CisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgWydhc2RmJ10sIGJhcj1bVHJ1ZV0pCisgICAgICAgICAgICBmLmF0dHIgPSBbXQorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZl9jb3B5KSwgc2lnbmF0dXJlKGYpKQogCiAgICAgZGVmIHRlc3RfY29weShzZWxmKToKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUsIFsnYXNkZiddLCBiYXI9W1RydWVdKQpAQCAtMjc0LDExICsyNjEsMTMgQEAKICAgICBkZWYgdGVzdF9zZXRzdGF0ZShzZWxmKToKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCBkaWN0KGF0dHI9W10pKSkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwgZGljdChhdHRyPVtdKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigyLCBiPTIwKSwgKCgxLCAyKSwgeydhJzogMTAsICdiJzogMjB9KSkKIAogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwgTm9uZSkpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZiksIChjYXB0dXJlLCAoMSwpLCBkaWN0KGE9MTApLCB7fSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigyLCBiPTIwKSwgKCgxLCAyKSwgeydhJzogMTAsICdiJzogMjB9KSkKIApAQCAtMzI1LDM4ICszMTQsMzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJbMF0pLCB0dXBsZSkKIAogICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9waWNrbGUoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKLSAgICAgICAgZi5fX3NldHN0YXRlX18oKGYsICgpLCB7fSwge30pKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJlY3Vyc2lvbkVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKGYsIHByb3RvKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICB3aXRoIHNlbGYuQWxsb3dQaWNrbGUoKToKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKKyAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChmLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcHMoZiwgcHJvdG8pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoZiwpLCB7fSwge30pKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmFyZ3NbMF0sIGZfY29weSkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSkKKyAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoZiwpLCB7fSwge30pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkuYXJnc1swXSwgZl9jb3B5KQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwgeydhJzogZn0sIHt9KSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5rZXl3b3Jkc1snYSddLCBmX2NvcHkpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCisgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHsnYSc6IGZ9LCB7fSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5rZXl3b3Jkc1snYSddLCBmX2NvcHkpCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBmX2NvcHkuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgIyBJc3N1ZSA2MDgzOiBSZWZlcmVuY2UgY291bnRpbmcgYnVnCiAgICAgZGVmIHRlc3Rfc2V0c3RhdGVfcmVmY291bnQoc2VsZik6CkBAIC0zNzUsMjQgKzM2NSw2MCBAQAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKG9iamVjdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLl9fc2V0c3RhdGVfXywgQmFkU2VxdWVuY2UoKSkKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCitjbGFzcyBUZXN0UGFydGlhbEMoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBpZiBjX2Z1bmN0b29sczoKKyAgICAgICAgcGFydGlhbCA9IGNfZnVuY3Rvb2xzLnBhcnRpYWwKKworICAgIGNsYXNzIEFsbG93UGlja2xlOgorICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0Yik6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfdW53cml0YWJsZShzZWxmKToKKyAgICAgICAgIyBhdHRyaWJ1dGVzIHNob3VsZCBub3QgYmUgd3JpdGFibGUKKyAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAxLCAyLCBhPTEwLCBiPTIwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2Z1bmMnLCBtYXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnYXJncycsICgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdrZXl3b3JkcycsIGRpY3QoYT0xLCBiPTIpKQorCisgICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoaGV4KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgcC5fX2RpY3RfXworICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdwYXJ0aWFsIG9iamVjdCBhbGxvd2VkIF9fZGljdF9fIHRvIGJlIGRlbGV0ZWQnKQogCiBjbGFzcyBUZXN0UGFydGlhbFB5KFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgcGFydGlhbCA9IHN0YXRpY21ldGhvZChweV9mdW5jdG9vbHMucGFydGlhbCkKKyAgICBwYXJ0aWFsID0gcHlfZnVuY3Rvb2xzLnBhcnRpYWwKIAorICAgIGNsYXNzIEFsbG93UGlja2xlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBzZWxmLl9jbSA9IHJlcGxhY2VkX21vZHVsZSgiZnVuY3Rvb2xzIiwgcHlfZnVuY3Rvb2xzKQorICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtLl9fZW50ZXJfXygpCisgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdGIpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtLl9fZXhpdF9fKHR5cGUsIHZhbHVlLCB0YikKIAogaWYgY19mdW5jdG9vbHM6Ci0gICAgY2xhc3MgUGFydGlhbFN1YmNsYXNzKGNfZnVuY3Rvb2xzLnBhcnRpYWwpOgorICAgIGNsYXNzIENQYXJ0aWFsU3ViY2xhc3MoY19mdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgIHBhc3MKIAorY2xhc3MgUHlQYXJ0aWFsU3ViY2xhc3MocHlfZnVuY3Rvb2xzLnBhcnRpYWwpOgorICAgIHBhc3MKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCiBjbGFzcyBUZXN0UGFydGlhbENTdWJjbGFzcyhUZXN0UGFydGlhbEMpOgogICAgIGlmIGNfZnVuY3Rvb2xzOgotICAgICAgICBwYXJ0aWFsID0gUGFydGlhbFN1YmNsYXNzCisgICAgICAgIHBhcnRpYWwgPSBDUGFydGlhbFN1YmNsYXNzCiAKICAgICAjIHBhcnRpYWwgc3ViY2xhc3NlcyBhcmUgbm90IG9wdGltaXplZCBmb3IgbmVzdGVkIGNhbGxzCiAgICAgdGVzdF9uZXN0ZWRfb3B0aW1pemF0aW9uID0gTm9uZQogCitjbGFzcyBUZXN0UGFydGlhbFB5U3ViY2xhc3MoVGVzdFBhcnRpYWxQeSk6CisgICAgcGFydGlhbCA9IFB5UGFydGlhbFN1YmNsYXNzCiAKIGNsYXNzIFRlc3RQYXJ0aWFsTWV0aG9kKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNjgzLDkgKzcwOSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYSBkaWZmZXJlbnQgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5kaWN0X2F0dHIsIGYuZGljdF9hdHRyKQogCi0KK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQogY2xhc3MgVGVzdFJlZHVjZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZnVuYyA9IGZ1bmN0b29scy5yZWR1Y2UKKyAgICBpZiBjX2Z1bmN0b29sczoKKyAgICAgICAgZnVuYyA9IGNfZnVuY3Rvb2xzLnJlZHVjZQogCiAgICAgZGVmIHRlc3RfcmVkdWNlKHNlbGYpOgogICAgICAgICBjbGFzcyBTcXVhcmVzOgpAQCAtMTU0OCwxMyArMTU3NSwxNSBAQAogICAgICAgICBiYXNlcyA9IFtjLlNlcXVlbmNlLCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsIGMuU2V0XQogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oZGljdCwgaGF5c3RhY2spCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtkaWN0LCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsIGMuU2l6ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwgb2JqZWN0XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW2RpY3QsIGMuTXV0YWJsZU1hcHBpbmcsIGMuTWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29udGFpbmVyLCBvYmplY3RdKQogICAgICAgICBiYXNlcyA9IFtjLkNvbnRhaW5lciwgYy5NYXBwaW5nLCBjLk11dGFibGVNYXBwaW5nLCBjLk9yZGVyZWREaWN0XQogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oYy5DaGFpbk1hcCwgaGF5c3RhY2spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtjLkNoYWluTWFwLCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwgb2JqZWN0XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29udGFpbmVyLCBvYmplY3RdKQogCiAgICAgICAgICMgSWYgdGhlcmUncyBhIGdlbmVyaWMgZnVuY3Rpb24gd2l0aCBpbXBsZW1lbnRhdGlvbnMgcmVnaXN0ZXJlZCBmb3IKICAgICAgICAgIyBib3RoIFNpemVkIGFuZCBDb250YWluZXIsIHBhc3NpbmcgYSBkZWZhdWx0ZGljdCB0byBpdCByZXN1bHRzIGluIGFuCkBAIC0xNTc1LDkgKzE2MDQsOSBAQAogICAgICAgICBiYXNlcyA9IFtjLk11dGFibGVTZXF1ZW5jZSwgYy5NdXRhYmxlTWFwcGluZ10KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKEQsIGJhc2VzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbRCwgYy5NdXRhYmxlU2VxdWVuY2UsIGMuU2VxdWVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLk11dGFibGVNYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5NYXBwaW5nLCBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW0QsIGMuTXV0YWJsZVNlcXVlbmNlLCBjLlNlcXVlbmNlLCBjLlJldmVyc2libGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0XSkKIAogICAgICAgICAjIENvbnRhaW5lciBhbmQgQ2FsbGFibGUgYXJlIHJlZ2lzdGVyZWQgb24gZGlmZmVyZW50IGJhc2UgY2xhc3NlcyBhbmQKQEAgLTE1OTAsNyArMTYxOSw4IEBACiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhDLCBoYXlzdGFjaykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW0MsIGMuQ2FsbGFibGUsIGMuZGVmYXVsdGRpY3QsIGRpY3QsIGMuTWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuU2l6ZWQsIGMuSXRlcmFibGUsIGMuQ29udGFpbmVyLCBvYmplY3RdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db250YWluZXIsIG9iamVjdF0pCiAKICAgICBkZWYgdGVzdF9yZWdpc3Rlcl9hYmMoc2VsZik6CiAgICAgICAgIGMgPSBjb2xsZWN0aW9ucwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkgYi9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weQppbmRleCBiZWFjOTkzLi4yMTNiMmJhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weQpAQCAtNCw3ICs0LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHJlCiAKLXJ4ID0gcmUuY29tcGlsZSgnXCgoXFMrKS5weSwgbGluZSAoXGQrKScpCityeCA9IHJlLmNvbXBpbGUocidcKChcUyspLnB5LCBsaW5lIChcZCspJykKIAogZGVmIGdldF9lcnJvcl9sb2NhdGlvbihtc2cpOgogICAgIG1vID0gcnguc2VhcmNoKHN0cihtc2cpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nYy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2MucHkKaW5kZXggYTRkNjg0Yi4uZTcyNzQ5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2djLnB5CkBAIC02ODQsNyArNjg0LDYgQEAKICAgICAgICAgIyBDcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUgdGhyb3VnaCB0aGUgX19tYWluX18gbW9kdWxlIGFuZCBjaGVjawogICAgICAgICAjIGl0IGdldHMgY29sbGVjdGVkIGF0IGludGVycHJldGVyIHNodXRkb3duLgogICAgICAgICBjb2RlID0gIiIiaWYgMToKLSAgICAgICAgICAgIGltcG9ydCB3ZWFrcmVmCiAgICAgICAgICAgICBjbGFzcyBDOgogICAgICAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICBwcmludCgnX19kZWxfXyBjYWxsZWQnKQpAQCAtNjk5LDcgKzY5OCw2IEBACiAgICAgICAgICMgU2FtZSBhcyBhYm92ZSwgYnV0IHdpdGggYSBub24tX19tYWluX18gbW9kdWxlLgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIG1vZHVsZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHdlYWtyZWYKICAgICAgICAgICAgICAgICBjbGFzcyBDOgogICAgICAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdfX2RlbF9fIGNhbGxlZCcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dkYi5weSBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CmluZGV4IDNkYjEwYjYuLjVmYmYxNTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2RiLnB5CkBAIC01LDEzICs1LDE1IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgcHByaW50CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbG9jYWxlCiAKKyMgRklYTUU6IGlzc3VlICMyODAyMworcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkZJWE1FOiBpc3N1ZSAjMjgwMjMsIGNvbXBhY3QgZGljdCAoaXNzdWUgIzI3MzUwKSBicm9rZSBweXRob24tZ2RiLnB5IikKKwogIyBJcyB0aGlzIFB5dGhvbiBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhyZWFkcz8KIHRyeToKICAgICBpbXBvcnQgX3RocmVhZApAQCAtMTExLDYgKzExMyw3IEBACiAKIEJSRUFLUE9JTlRfRk49J2J1aWx0aW5faWQnCiAKK0B1bml0dGVzdC5za2lwSWYoc3VwcG9ydC5QR08sICJub3QgdXNlZnVsIGZvciBQR08iKQogY2xhc3MgRGVidWdnZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0IHRoYXQgdGhlIGRlYnVnZ2VyIGNhbiBkZWJ1ZyBQeXRob24uIiIiCkBAIC0xNzcsNiArMTgwLDcgQEAKICAgICAgICAgYXJncyA9IFsnLS1ldmFsLWNvbW1hbmQ9JXMnICUgY21kIGZvciBjbWQgaW4gY29tbWFuZHNdCiAgICAgICAgIGFyZ3MgKz0gWyItLWFyZ3MiLAogICAgICAgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZV0KKyAgICAgICAgYXJncy5leHRlbmQoc3VicHJvY2Vzcy5fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkpCiAKICAgICAgICAgaWYgbm90IGltcG9ydF9zaXRlOgogICAgICAgICAgICAgIyAtUyBzdXBwcmVzc2VzIHRoZSBkZWZhdWx0ICdpbXBvcnQgc2l0ZScKQEAgLTI0MCw3ICsyNDQsNyBAQAogICAgICAgICAjIGdkYiBjYW4gaW5zZXJ0IGFkZGl0aW9uYWwgJ1xuJyBhbmQgc3BhY2UgY2hhcmFjdGVycyBpbiB2YXJpb3VzIHBsYWNlcwogICAgICAgICAjIGluIGl0cyBvdXRwdXQsIGRlcGVuZGluZyBvbiB0aGUgd2lkdGggb2YgdGhlIHRlcm1pbmFsIGl0J3MgY29ubmVjdGVkCiAgICAgICAgICMgdG8gKHVzaW5nIGl0cyAid3JhcF9oZXJlIiBmdW5jdGlvbikKLSAgICAgICAgbSA9IHJlLm1hdGNoKCcuKiMwXHMrYnVpbHRpbl9pZFxzK1woc2VsZlw9LiosXHMrdj1ccyooLio/KVwpXHMrYXRccytcUypQeXRob24vYmx0aW5tb2R1bGUuYy4qJywKKyAgICAgICAgbSA9IHJlLm1hdGNoKHInLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrXFMqUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCiAgICAgICAgICAgICAgICAgICAgICBnZGJfb3V0cHV0LCByZS5ET1RBTEwpCiAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGdkYiBvdXRwdXQ6ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCkBAIC0yOTIsNyArMjk2LDkgQEAKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIGRpY3Rpb25hcmllcycKICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHt9KQogICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoeydmb28nOiAnYmFyJ30sICJ7J2Zvbyc6ICdiYXInfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7J2Zvbyc6ICdiYXInLCAnZG91Z2xhcyc6IDQyfSwgInsnZG91Z2xhcyc6IDQyLCAnZm9vJzogJ2Jhcid9IikKKyAgICAgICAgIyBQWVRIT05IQVNIU0VFRCBpcyBuZWVkIHRvIGdldCB0aGUgZXhhY3QgaXRlbSBvcmRlcgorICAgICAgICBpZiBub3Qgc3lzLmZsYWdzLmlnbm9yZV9lbnZpcm9ubWVudDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7J2Zvbyc6ICdiYXInLCAnZG91Z2xhcyc6IDQyfSwgInsnZG91Z2xhcyc6IDQyLCAnZm9vJzogJ2Jhcid9IikKIAogICAgIGRlZiB0ZXN0X2xpc3RzKHNlbGYpOgogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2YgbGlzdHMnCkBAIC0zNTUsOSArMzYxLDEyIEBACiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBzZXRzJwogICAgICAgICBpZiAoZ2RiX21ham9yX3ZlcnNpb24sIGdkYl9taW5vcl92ZXJzaW9uKSA8ICg3LCAzKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInByZXR0eS1wcmludGluZyBvZiBzZXRzIG5lZWRzIGdkYiA3LjMgb3IgbGF0ZXIiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KCksICdzZXQoKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWydhJywgJ2InXSksICJ7J2EnLCAnYid9IikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbNCwgNSwgNl0pLCAiezQsIDUsIDZ9IikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldCgpLCAic2V0KCkiKQorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFsnYSddKSwgInsnYSd9IikKKyAgICAgICAgIyBQWVRIT05IQVNIU0VFRCBpcyBuZWVkIHRvIGdldCB0aGUgZXhhY3QgZnJvemVuc2V0IGl0ZW0gb3JkZXIKKyAgICAgICAgaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFsnYScsICdiJ10pLCAieydhJywgJ2InfSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFs0LCA1LCA2XSksICJ7NCwgNSwgNn0iKQogCiAgICAgICAgICMgRW5zdXJlIHRoYXQgd2UgaGFuZGxlIHNldHMgY29udGFpbmluZyB0aGUgImR1bW15IiBrZXkgdmFsdWUsCiAgICAgICAgICMgd2hpY2ggaGFwcGVucyBvbiBkZWxldGlvbjoKQEAgLTM3MCw5ICszNzksMTIgQEAKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIGZyb3plbnNldHMnCiAgICAgICAgIGlmIChnZGJfbWFqb3JfdmVyc2lvbiwgZ2RiX21pbm9yX3ZlcnNpb24pIDwgKDcsIDMpOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgicHJldHR5LXByaW50aW5nIG9mIGZyb3plbnNldHMgbmVlZHMgZ2RiIDcuMyBvciBsYXRlciIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoKSwgJ2Zyb3plbnNldCgpJykKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbJ2EnLCAnYiddKSwgImZyb3plbnNldCh7J2EnLCAnYid9KSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWzQsIDUsIDZdKSwgImZyb3plbnNldCh7NCwgNSwgNn0pIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldCgpLCAiZnJvemVuc2V0KCkiKQorICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFsnYSddKSwgImZyb3plbnNldCh7J2EnfSkiKQorICAgICAgICAjIFBZVEhPTkhBU0hTRUVEIGlzIG5lZWQgdG8gZ2V0IHRoZSBleGFjdCBmcm96ZW5zZXQgaXRlbSBvcmRlcgorICAgICAgICBpZiBub3Qgc3lzLmZsYWdzLmlnbm9yZV9lbnZpcm9ubWVudDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWydhJywgJ2InXSksICJmcm96ZW5zZXQoeydhJywgJ2InfSkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbNCwgNSwgNl0pLCAiZnJvemVuc2V0KHs0LCA1LCA2fSkiKQogCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9ucyhzZWxmKToKICAgICAgICAgIyBUZXN0IGEgUnVudGltZUVycm9yCkBAIC01MDEsNiArNTEzLDEwIEBACiAKICAgICBkZWYgdGVzdF9idWlsdGluc19oZWxwKHNlbGYpOgogICAgICAgICAnRW5zdXJlIHRoYXQgdGhlIG5ldy1zdHlsZSBjbGFzcyBfSGVscGVyIGluIHNpdGUucHkgY2FuIGJlIGhhbmRsZWQnCisKKyAgICAgICAgaWYgc3lzLmZsYWdzLm5vX3NpdGU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJuZWVkIHNpdGUgbW9kdWxlLCBidXQgLVMgb3B0aW9uIHdhcyB1c2VkIikKKwogICAgICAgICAjICh0aGlzIHdhcyB0aGUgaXNzdWUgY2F1c2luZyB0cmFjZWJhY2tzIGluCiAgICAgICAgICMgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4MDMyI21zZzEwMDUzNyApCiAgICAgICAgIGdkYl9yZXByLCBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfZ2RiX3JlcHIoJ2lkKF9fYnVpbHRpbnNfXy5oZWxwKScsIGltcG9ydF9zaXRlPVRydWUpCkBAIC01MzYsNyArNTUyLDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU0OSw3ICs1NjUsNyBAQAogZm9vID0gRm9vKCkKIGZvby5hbl9hdHRyID0gZm9vCiBpZChmb28pJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocic8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTYzLDcgKzU3OSw3IEBACiBhLmFuX2F0dHIgPSBiCiBiLmFuX2F0dHIgPSBhCiBpZChhKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocic8Rm9vXChhbl9hdHRyPTxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01OTgsNyArNjE0LDcgQEAKIAogICAgIGRlZiB0ZXN0X2J1aWx0aW5fbWV0aG9kKHNlbGYpOgogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpbXBvcnQgc3lzOyBpZChzeXMuc3Rkb3V0LnJlYWRsaW5lcyknKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocic8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNjEzLDcgKzYyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSdidWlsdGluX2lkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3ByaW50IChQeUZyYW1lT2JqZWN0KikoKChQeUNvZGVPYmplY3QqKXYpLT5jb196b21iaWVmcmFtZSknXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJy4qXHMrXCQxID1ccytGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInLipccytcJDEgPVxzK0ZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIDxzdHJpbmc+LCBsaW5lIDMsIGluIGZvbyBcKFwpXHMrLionLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLkRPVEFMTCksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDQ3OS5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9yX3N0b3AucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwNDc5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2dlbmVyYXRvcl9zdG9wLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggM2Y4MjQ2Mi4uZjRiMzNhZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtMjQ1LDExICsyNDUsMTEgQEAKICAgICAgICAgICAgIHlpZWxkCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKSwgXAotICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAKICAgICAgICAgICAgIG5leHQoZ2VuKCkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIC4qIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiksIFwKICAgICAgICAgICAgICB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogCkBAIC0yNjgsNyArMjY4LDcgQEAKICAgICAgICAgZyA9IGYoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZyksIDEpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKICAgICAgICAgICAgICAgICBuZXh0KGcpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CmluZGV4IGI3N2QxZDcuLmFlNWRkNmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQpAQCAtMTAsMTEgKzEwLDkgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKLWRlZiBzYWZlX3JtZGlyKGRpcm5hbWUpOgotICAgIHRyeToKLSAgICAgICAgb3Mucm1kaXIoZGlybmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcworZGVmIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBkYXRhPWInZm9vJyk6CisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAneGInLCAwKSBhcyBmcDoKKyAgICAgICAgZnAud3JpdGUoZGF0YSkKIAogCiBjbGFzcyBHZW5lcmljVGVzdDoKQEAgLTk3LDUyICs5NSw0NyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHMxW246bisxXSwgczJbbjpuKzFdKQogCiAgICAgZGVmIHRlc3RfZ2V0c2l6ZShzZWxmKToKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aG1vZHVsZS5nZXRzaXplKHN1cHBvcnQuVEVTVEZOKSwgMykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlZDoKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCiAKLSAgICBkZWYgdGVzdF90aW1lKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAiYWIiKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidIZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRobW9kdWxlLmdldHNpemUoZmlsZW5hbWUpLCA1KQorICAgICAgICBvcy5yZW1vdmUoZmlsZW5hbWUpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGInSGVsbG8gV29ybGQhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGhtb2R1bGUuZ2V0c2l6ZShmaWxlbmFtZSksIDEyKQorCisgICAgZGVmIHRlc3RfZmlsZXRpbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidmb28nKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgImFiIiwgMCkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJiYXIiKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInJiIikKLSAgICAgICAgICAgIGQgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGIiZm9vYmFyIikKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoCi0gICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldGN0aW1lKHN1cHBvcnQuVEVTVEZOKSwKLSAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0bXRpbWUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICApCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiLCAwKSBhcyBmOgorICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgYiJmb29iYXIiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKAorICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldGN0aW1lKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRtdGltZShmaWxlbmFtZSkKKyAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInhiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgaWYgbm90IHNlbGYucGF0aG1vZHVsZSA9PSBnZW5lcmljcGF0aDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5sZXhpc3RzKHN1cHBvcnQuVEVTVEZOKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZSgpOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgICAgICBpZiBub3Qgc2VsZi5wYXRobW9kdWxlID09IGdlbmVyaWNwYXRoOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUubGV4aXN0cyhmaWxlbmFtZSksIFRydWUpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAicGlwZSIpLCAicmVxdWlyZXMgb3MucGlwZSgpIikKICAgICBkZWYgdGVzdF9leGlzdHNfZmQoc2VsZik6CkBAIC0xNTQsNTMgKzE0Nyw2NiBAQAogICAgICAgICAgICAgb3MuY2xvc2UodykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHIpKQogCi0gICAgZGVmIHRlc3RfaXNkaXIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKLSAgICAgICAgICAgIG9zLnJlbW92ZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIG9zLm1rZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBUcnVlKQotICAgICAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZSgpOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzYWZlX3JtZGlyKHN1cHBvcnQuVEVTVEZOKQorICAgIGRlZiB0ZXN0X2lzZGlyX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoZmlsZW5hbWUpLCBGYWxzZSkKIAotICAgIGRlZiB0ZXN0X2lzZmlsZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKHN1cHBvcnQuVEVTVEZOKSwgVHJ1ZSkKLSAgICAgICAgICAgIG9zLnJlbW92ZShzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIG9zLm1rZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGlmIG5vdCBmLmNsb3NlKCk6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNhZmVfcm1kaXIoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIEZhbHNlKQogCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBfY3JlYXRlX2ZpbGUoZmlsZW5hbWUpOgotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGInZm9vJykKKyAgICBkZWYgdGVzdF9pc2Rpcl9kaXIoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm1kaXIsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIEZhbHNlKQorCisgICAgICAgIG9zLm1rZGlyKGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihmaWxlbmFtZSksIFRydWUpCisKKyAgICBkZWYgdGVzdF9pc2ZpbGVfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBGYWxzZSkKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKGZpbGVuYW1lKSwgVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2lzZmlsZV9kaXIoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm1kaXIsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2ZpbGUoZmlsZW5hbWUpLCBGYWxzZSkKKworICAgICAgICBvcy5ta2RpcihmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKGZpbGVuYW1lKSwgRmFsc2UpCiAKICAgICBkZWYgdGVzdF9zYW1lZmlsZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbiA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuLCB0ZXN0X2ZuKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4pCisgICAgICAgIGZpbGUxID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgZmlsZTIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGUxKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGUyKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGUxKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKGZpbGUxLCBmaWxlMSkpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKGZpbGUxLCBmaWxlMikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUpCisKKyAgICBkZWYgX3Rlc3Rfc2FtZWZpbGVfb25fbGlua19mdW5jKHNlbGYsIGZ1bmMpOgorICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKKworICAgICAgICBmdW5jKHRlc3RfZm4xLCB0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQorICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCiAKICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3Rfc2FtZWZpbGVfb25fc3ltbGluayhzZWxmKToKQEAgLTIwOSwzMSArMjE1LDM3IEBACiAgICAgZGVmIHRlc3Rfc2FtZWZpbGVfb25fbGluayhzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMob3MubGluaykKIAotICAgIGRlZiBfdGVzdF9zYW1lZmlsZV9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4xKQotCi0gICAgICAgICAgICBmdW5jKHRlc3RfZm4xLCB0ZXN0X2ZuMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4xKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCiAgICAgZGVmIHRlc3Rfc2FtZXN0YXQoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4gPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbikKLSAgICAgICAgICAgIHRlc3RfZm5zID0gW3Rlc3RfZm5dKjIKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4pCisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorICAgICAgICBzdGF0MSA9IG9zLnN0YXQodGVzdF9mbjEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoc3RhdDEsIG9zLnN0YXQodGVzdF9mbjEpKSkKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc3RhdDIgPSBvcy5zdGF0KHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChzdGF0MSwgc3RhdDIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KQorCisgICAgZGVmIF90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKKyAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgorICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisgICAgICAgIGZ1bmModGVzdF9mbjEsIHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KG9zLnN0YXQodGVzdF9mbjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQodGVzdF9mbjIpKSkKKyAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChvcy5zdGF0KHRlc3RfZm4xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdCh0ZXN0X2ZuMikpKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3NhbWVzdGF0X29uX3N5bWxpbmsoc2VsZik6CkBAIC0yNDIsMzEgKzI1NCwxNyBAQAogICAgIGRlZiB0ZXN0X3NhbWVzdGF0X29uX2xpbmsoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc2FtZXN0YXRfb25fbGlua19mdW5jKG9zLmxpbmspCiAKLSAgICBkZWYgX3Rlc3Rfc2FtZXN0YXRfb25fbGlua19mdW5jKHNlbGYsIGZ1bmMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKLSAgICAgICAgICAgIHRlc3RfZm5zID0gKHRlc3RfZm4xLCB0ZXN0X2ZuMikKLSAgICAgICAgICAgIGZ1bmMoKnRlc3RfZm5zKQotICAgICAgICAgICAgc3RhdHMgPSBtYXAob3Muc3RhdCwgdGVzdF9mbnMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KCpzdGF0cykpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4yKQotICAgICAgICAgICAgc3RhdHMgPSBtYXAob3Muc3RhdCwgdGVzdF9mbnMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQogICAgIGRlZiB0ZXN0X3NhbWVvcGVuZmlsZShzZWxmKToKLSAgICAgICAgZm5hbWUgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJ3YiIpIGFzIGEsIG9wZW4oZm5hbWUsICJ3YiIpIGFzIGI6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVvcGVuZmlsZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYS5maWxlbm8oKSwgYi5maWxlbm8oKSkpCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiLCAwKSBhcyBmcDE6CisgICAgICAgICAgICBmZDEgPSBmcDEuZmlsZW5vKCkKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIiwgMCkgYXMgZnAyOgorICAgICAgICAgICAgICAgIGZkMiA9IGZwMi5maWxlbm8oKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZW9wZW5maWxlKGZkMSwgZmQyKSkKKwogCiBjbGFzcyBUZXN0R2VuZXJpY1Rlc3QoR2VuZXJpY1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIElzc3VlIDE2ODUyOiBHZW5lcmljVGVzdCBjYW4ndCBpbmhlcml0IGZyb20gdW5pdHRlc3QuVGVzdENhc2UKQEAgLTM5MCwxMCArMzg4LDEzIEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJmb28iLCBzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChiImZvbyIpKQogCisgICAgICAgICMgYXZvaWQgVW5pY29kZURlY29kZUVycm9yIG9uIFdpbmRvd3MKKyAgICAgICAgdW5kZWNvZGFibGVfcGF0aCA9IGInJyBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBlbHNlIGInZlx4ZjJceGYyJworCiAgICAgICAgICMgQWJzcGF0aCByZXR1cm5zIGJ5dGVzIHdoZW4gdGhlIGFyZyBpcyBieXRlcwogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIGZvciBwYXRoIGluIChiJycsIGInZm9vJywgYidmXHhmMlx4ZjInLCBiJy9mb28nLCBiJ0M6XFwnKToKKyAgICAgICAgICAgIGZvciBwYXRoIGluIChiJycsIGInZm9vJywgdW5kZWNvZGFibGVfcGF0aCwgYicvZm9vJywgYidDOlxcJyk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKHBhdGgpLCBieXRlcykKIAogICAgIGRlZiB0ZXN0X3JlYWxwYXRoKHNlbGYpOgpAQCAtNDUyLDE2ICs0NTMsMTUgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oJ3N0cicsIGInYnl0ZXMnKQogICAgICAgICAgICAgIyByZWdyZXNzaW9uLCBzZWUgIzE1Mzc3Ci0gICAgICAgICAgICBlcnJtc2cgPSByJ2pvaW5cKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oNDIsICdzdHInKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKCdzdHInLCA0MikKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbig0MikKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdsaXN0Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbGlzdCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKFtdKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2J5dGVhcnJheScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2J5dGVhcnJheScpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKGJ5dGVhcnJheShiJ2ZvbycpLCBieXRlYXJyYXkoYidiYXInKSkKIAogICAgIGRlZiB0ZXN0X3JlbHBhdGhfZXJyb3JzKHNlbGYpOgpAQCAtNDczLDE0ICs0NzMsNTkgQEAKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChiJ2J5dGVzJywgJ3N0cicpCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCBiJ2J5dGVzJykKLSAgICAgICAgICAgIGVycm1zZyA9IHIncmVscGF0aFwoXCkgYXJndW1lbnQgbXVzdCBiZSBzdHIgb3IgYnl0ZXMsIG5vdCAlcicKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCg0MiwgJ3N0cicpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoJ3N0cicsIDQyKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2J5dGVhcnJheScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2J5dGVhcnJheScpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKGJ5dGVhcnJheShiJ2ZvbycpLCBieXRlYXJyYXkoYidiYXInKSkKIAogCitjbGFzcyBQYXRoTGlrZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD0nJyk6CisgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9uYW1lID0gc3VwcG9ydC5URVNURk4ubG93ZXIoKQorICAgICAgICBzZWxmLmZpbGVfcGF0aCA9IHNlbGYuUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisgICAgICAgIGNyZWF0ZV9maWxlKHNlbGYuZmlsZV9uYW1lLCBiInRlc3RfZ2VuZXJpY3BhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhpc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmV4aXN0cykKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNmaWxlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmlzZmlsZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNkaXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguaXNkaXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnByZWZpeChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmNvbW1vbnByZWZpeChbc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9uYW1lXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlX25hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2dldHNpemUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguZ2V0c2l6ZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZ2V0bXRpbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKG9zLnBhdGguZ2V0YXRpbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2dldGN0aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldGN0aW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9zYW1lZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9uYW1lKSkKKworCiBpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CmluZGV4IDk4NGFhYzcuLjhhMTk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQpAQCAtNSwxMCArNSw2IEBACiAjIFNraXAgdGhpcyB0ZXN0IGlmIHRoZSBfdGVzdGNhcGkgbW9kdWxlIGlzbid0IGF2YWlsYWJsZS4KIHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2tleXdvcmRzLCBnZXRhcmdzX2tleXdvcmRfb25seQotdHJ5OgotICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX0wsIGdldGFyZ3NfSwotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGdldGFyZ3NfTCA9IE5vbmUgIyBQWV9MT05HX0xPTkcgbm90IGF2YWlsYWJsZQogCiAjID4gSG93IGFib3V0IHRoZSBmb2xsb3dpbmcgY291bnRlcnByb3Bvc2FsLiBUaGlzIGFsc28gY2hhbmdlcyBzb21lIG9mCiAjID4gdGhlIG90aGVyIGZvcm1hdCBjb2RlcyB0byBiZSBhIGxpdHRsZSBtb3JlIHJlZ3VsYXIuCkBAIC0zMDksNyArMzA1LDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXJnc19uLCBWRVJZX0xBUkdFKQogCiAKLUB1bml0dGVzdC5za2lwSWYoZ2V0YXJnc19MIGlzIE5vbmUsICdQWV9MT05HX0xPTkcgaXMgbm90IGF2YWlsYWJsZScpCiBjbGFzcyBMb25nTG9uZ19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfTChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfTApAQCAtMzY1LDcgKzM2MCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEZsb2F0U3ViY2xhc3MoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoRmxvYXRTdWJjbGFzczIoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2YsIEJhZEZsb2F0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEJhZEZsb2F0MigpKSwgNC4yNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDIoKSksIDQuMjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEJhZEZsb2F0Myg3LjUpKSwgNy41KQogCiAgICAgICAgIGZvciB4IGluIChGTFRfTUlOLCAtRkxUX01JTiwgRkxUX01BWCwgLUZMVF9NQVgsIElORiwgLUlORik6CkBAIC0zOTAsNyArMzg2LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoRmxvYXRTdWJjbGFzcyg3LjUpKSwgNy41KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChGbG9hdFN1YmNsYXNzMig3LjUpKSwgNy41KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGdldGFyZ3NfZCwgQmFkRmxvYXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoQmFkRmxvYXQyKCkpLCA0LjI1KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0MigpKSwgNC4yNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoQmFkRmxvYXQzKDcuNSkpLCA3LjUpCiAKICAgICAgICAgZm9yIHggaW4gKERCTF9NSU4sIC1EQkxfTUlOLCBEQkxfTUFYLCAtREJMX01BWCwgSU5GLCAtSU5GKToKQEAgLTQ3NCw3ICs0NzEsNyBAQAogCiAgICAgICAgIHJldCA9IGdldF9hcmdzKCpUdXBsZVN1YmNsYXNzKFsxLCAyXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LCAoMSwgMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXQsIHR1cGxlKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocmV0KSwgdHVwbGUpCiAKICAgICAgICAgcmV0ID0gZ2V0X2FyZ3MoKQogICAgICAgICBzZWxmLmFzc2VydEluKHJldCwgKCgpLCBOb25lKSkKQEAgLTUxMiw3ICs1MDksNyBAQAogCiAgICAgICAgIHJldCA9IGdldF9rd2FyZ3MoKipEaWN0U3ViY2xhc3MoeydhJzogMSwgJ2InOiAyfSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LCB7J2EnOiAxLCAnYic6IDJ9KQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmV0LCBkaWN0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUocmV0KSwgZGljdCkKIAogICAgICAgICByZXQgPSBnZXRfa3dhcmdzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXQsICh7fSwgTm9uZSkpCkBAIC02MjgsMjAgKzYyNSwyMCBAQAogICAgICAgICAgICAgKQogICAgICAgICAjIHJlcXVpcmVkIGFyZyBtaXNzaW5nCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CisgICAgICAgICAgICByIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkob3B0aW9uYWw9MikKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgciJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KGtleXdvcmRfb25seT0zKQogCiAgICAgZGVmIHRlc3RfdG9vX21hbnlfYXJncyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDIgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgzIGdpdmVuXCkiKToKKyAgICAgICAgICAgIHIiRnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMyBnaXZlblwpIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAzKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiZnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAzIGFyZ3VtZW50cyBcKDQgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgciJmdW5jdGlvbiB0YWtlcyBhdCBtb3N0IDMgYXJndW1lbnRzIFwoNCBnaXZlblwpIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAzLCBrZXl3b3JkX29ubHk9NSkKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfa2V5d29yZChzZWxmKToKQEAgLTY1Niw2ICs2NTMsMzkgQEAKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsICoqeydcdURDODAnOiAxMH0pCiAKIAorY2xhc3MgUG9zaXRpb25hbE9ubHlBbmRLZXl3b3Jkc19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfcG9zaXRpb25hbF9vbmx5X2FuZF9rZXl3b3JkcyBhcyBnZXRhcmdzCisKKyAgICBkZWYgdGVzdF9wb3NpdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgdXNpbmcgYWxsIHBvc3NpYmxlIHBvc2l0aW9uYWwgYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCAyLCAzKSwgKDEsIDIsIDMpKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfYXJncyhzZWxmKToKKyAgICAgICAgIyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwgMiwga2V5d29yZD0zKSwgKDEsIDIsIDMpKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uYWxfYXJncyhzZWxmKToKKyAgICAgICAgIyBtaXNzaW5nIG9wdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwgMiksICgxLCAyLCAtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIGtleXdvcmQ9MyksICgxLCAtMSwgMykpCisKKyAgICBkZWYgdGVzdF9yZXF1aXJlZF9hcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxKSwgKDEsIC0xLCAtMSkpCisgICAgICAgICMgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmcgbWlzc2luZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgciJGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpIik6CisgICAgICAgICAgICBzZWxmLmdldGFyZ3MoKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICByIkZ1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCkiKToKKyAgICAgICAgICAgIHNlbGYuZ2V0YXJncyhrZXl3b3JkPTMpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9rZXl3b3JkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIicnIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIpOgorICAgICAgICAgICAgc2VsZi5nZXRhcmdzKDEsIDIsICoqeycnOiA2NjZ9KQorCisKIGNsYXNzIEJ5dGVzX1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9jKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19jCkBAIC04MjIsMTAgKzg1MiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZXNfaGFzaCgnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpLCBiJ2FiY1x4ZTknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGInYWJjXHhlOVx4MDAnKSkKICAgICAgICAgYnVmID0gYnl0ZWFycmF5KGIneCcqNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2VzX2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoYid4Jyo0KSkKICAgICAgICAgYnVmID0gYnl0ZWFycmF5KCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2VzX2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCiAKICAgICBkZWYgdGVzdF9ldF9oYXNoKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19ldF9oYXNoCkBAIC04NDgsMTAgKzg3OCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZXRfaGFzaCgnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpLCBiJ2FiY1x4ZTknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGInYWJjXHhlOVx4MDAnKSkKICAgICAgICAgYnVmID0gYnl0ZWFycmF5KGIneCcqNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2V0X2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBieXRlYXJyYXkoYid4Jyo0KSkKICAgICAgICAgYnVmID0gYnl0ZWFycmF5KCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2V0X2hhc2gsICdhYmNceGU5JywgJ2xhdGluMScsIGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCiAKICAgICBkZWYgdGVzdF91KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc191CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkgYi9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKaW5kZXggZGU2MTBjNy4uZDM0NWJhYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBvcwogaW1wb3J0IGJhc2U2NAotaW1wb3J0IHNodXRpbAogaW1wb3J0IGdldHRleHQKIGltcG9ydCB1bml0dGVzdAogCkBAIC00NDAsNiArNDM5LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5fX2NsYXNzX18sIER1bW15R05VVHJhbnNsYXRpb25zKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2MycHknLCAnRU5PRU5UJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZ2V0dGV4dCwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQppbmRleCAxNTRlM2I2Li4wM2YyYzg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CkBAIC04LDYgKzgsOTUgQEAKICMgdGVzdGluZyBpbXBvcnQgKgogZnJvbSBzeXMgaW1wb3J0ICoKIAorIyBkaWZmZXJlbnQgaW1wb3J0IHBhdHRlcm5zIHRvIGNoZWNrIHRoYXQgX19hbm5vdGF0aW9uc19fIGRvZXMgbm90IGludGVyZmVyZQorIyB3aXRoIGltcG9ydCBtYWNoaW5lcnkKK2ltcG9ydCB0ZXN0LmFubl9tb2R1bGUgYXMgYW5uX21vZHVsZQoraW1wb3J0IHR5cGluZworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKK2Zyb20gdGVzdCBpbXBvcnQgYW5uX21vZHVsZTIKK2ltcG9ydCB0ZXN0CisKKyMgVGhlc2UgYXJlIHNoYXJlZCB3aXRoIHRlc3RfdG9rZW5pemUgYW5kIG90aGVyIHRlc3QgbW9kdWxlcy4KKyMKKyMgTm90ZTogc2luY2Ugc2V2ZXJhbCB0ZXN0IGNhc2VzIGZpbHRlciBvdXQgZmxvYXRzIGJ5IGxvb2tpbmcgZm9yICJlIiBhbmQgIi4iLAorIyBkb24ndCBhZGQgaGV4YWRlY2ltYWwgbGl0ZXJhbHMgdGhhdCBjb250YWluICJlIiBvciAiRSIuCitWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTID0gWworICAgICcwXzBfMCcsCisgICAgJzRfMicsCisgICAgJzFfMDAwMF8wMDAwJywKKyAgICAnMGIxMDAxXzAxMDAnLAorICAgICcweGZmZmZfZmZmZicsCisgICAgJzBvNV83XzcnLAorICAgICcxXzAwXzAwLjUnLAorICAgICcxXzAwXzAwLjVlNScsCisgICAgJzFfMDBfMDBlNV8xJywKKyAgICAnMWUxXzAnLAorICAgICcuMV80JywKKyAgICAnLjFfNGUxJywKKyAgICAnMGJfMCcsCisgICAgJzB4X2YnLAorICAgICcwb181JywKKyAgICAnMV8wMF8wMGonLAorICAgICcxXzAwXzAwLjVqJywKKyAgICAnMV8wMF8wMGU1XzFqJywKKyAgICAnLjFfNGonLAorICAgICcoMV8yLjUrM18zaiknLAorICAgICcoLjVfNmopJywKK10KK0lOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUyA9IFsKKyAgICAjIFRyYWlsaW5nIHVuZGVyc2NvcmVzOgorICAgICcwXycsCisgICAgJzQyXycsCisgICAgJzEuNGpfJywKKyAgICAnMHhfJywKKyAgICAnMGIxXycsCisgICAgJzB4Zl8nLAorICAgICcwbzVfJywKKyAgICAnMCBpZiAxX0Vsc2UgMScsCisgICAgIyBVbmRlcnNjb3JlcyBpbiB0aGUgYmFzZSBzZWxlY3RvcjoKKyAgICAnMF9iMCcsCisgICAgJzBfeGYnLAorICAgICcwX281JywKKyAgICAjIE9sZC1zdHlsZSBvY3RhbCwgc3RpbGwgZGlzYWxsb3dlZDoKKyAgICAnMF83JywKKyAgICAnMDlfOTknLAorICAgICMgTXVsdGlwbGUgY29uc2VjdXRpdmUgdW5kZXJzY29yZXM6CisgICAgJzRfX19fX19fMicsCisgICAgJzAuMV9fNCcsCisgICAgJzAuMV9fNGonLAorICAgICcwYjEwMDFfXzAxMDAnLAorICAgICcweGZmZmZfX2ZmZmYnLAorICAgICcweF9fXycsCisgICAgJzBvNV9fNzcnLAorICAgICcxZTFfXzAnLAorICAgICcxZTFfXzBqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYmVmb3JlIGEgZG90OgorICAgICcxXy40JywKKyAgICAnMV8uNGonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBhIGRvdDoKKyAgICAnMS5fNCcsCisgICAgJzEuXzRqJywKKyAgICAnLl81JywKKyAgICAnLl81aicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGFmdGVyIGEgc2lnbjoKKyAgICAnMS4wZStfMScsCisgICAgJzEuMGUrXzFqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYmVmb3JlIGo6CisgICAgJzEuNF9qJywKKyAgICAnMS40ZTVfaicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBlOgorICAgICcxX2UxJywKKyAgICAnMS40X2UxJywKKyAgICAnMS40X2UxaicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGFmdGVyIGU6CisgICAgJzFlXzEnLAorICAgICcxLjRlXzEnLAorICAgICcxLjRlXzFqJywKKyAgICAjIENvbXBsZXggY2FzZXMgd2l0aCBwYXJlbnM6CisgICAgJygxKzEuNV9qXyknLAorICAgICcoMSsxLjVfaiknLAorXQorCiAKIGNsYXNzIFRva2VuVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC04Nyw2ICsxNzYsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxIGlmIDBlbHNlIDAsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiMCBpZiAxRWxzZSAwIikKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChsaXQpLCBldmFsKGxpdC5yZXBsYWNlKCdfJywgJycpKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgbGl0KQorICAgICAgICAjIFNhbml0eSBjaGVjazogbm8gbGl0ZXJhbCBiZWdpbnMgd2l0aCBhbiB1bmRlcnNjb3JlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgZXZhbCwgIl8wIikKKwogICAgIGRlZiB0ZXN0X3N0cmluZ19saXRlcmFscyhzZWxmKToKICAgICAgICAgeCA9ICcnOyB5ID0gIiI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMCBhbmQgeCA9PSB5KQogICAgICAgICB4ID0gJ1wnJzsgeSA9ICInIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAxIGFuZCB4ID09IHkgYW5kIG9yZCh4KSA9PSAzOSkKQEAgLTEzOSw2ICsyMzYsMTkgQEAKICAgICAgICAgICAgICAgICBjb21waWxlKHMsICI8dGVzdD4iLCAiZXhlYyIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ1bmV4cGVjdGVkIEVPRiIsIHN0cihjbS5leGNlcHRpb24pKQogCit2YXJfYW5ub3RfZ2xvYmFsOiBpbnQgIyBhIGdsb2JhbCBhbm5vdGF0ZWQgaXMgbmVjZXNzYXJ5IGZvciB0ZXN0X3Zhcl9hbm5vdAorCisjIGN1c3RvbSBuYW1lc3BhY2UgZm9yIHRlc3RpbmcgX19hbm5vdGF0aW9uc19fCisKK2NsYXNzIENOUzoKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2RjdCA9IHt9CisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGl0ZW0sIHZhbHVlKToKKyAgICAgICAgc2VsZi5fZGN0W2l0ZW0ubG93ZXIoKV0gPSB2YWx1ZQorICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RjdFtpdGVtXQorCisKIGNsYXNzIEdyYW1tYXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHNpbmdsZV9pbnB1dDogTkVXTElORSB8IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdCBORVdMSU5FCkBAIC0xNTQsNiArMjY0LDE2MyBAQAogICAgICAgICAjIHRlc3RsaXN0IEVORE1BUktFUgogICAgICAgICB4ID0gZXZhbCgnMSwgMCBvciAxJykKIAorICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9iYXNpY3Moc2VsZik6CisgICAgICAgICMgYWxsIHRoZXNlIHNob3VsZCBiZSBhbGxvd2VkCisgICAgICAgIHZhcjE6IGludCA9IDUKKyAgICAgICAgdmFyMjogW2ludCwgc3RyXQorICAgICAgICBteV9sc3QgPSBbNDJdCisgICAgICAgIGRlZiBvbmUoKToKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGludC5uZXdfYXR0cjogaW50CisgICAgICAgIFtsaXN0XVswXTogdHlwZQorICAgICAgICBteV9sc3Rbb25lKCktMV06IGludCA9IDUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9sc3QsIFs1XSkKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9zeW50YXhfZXJyb3JzKHNlbGYpOgorICAgICAgICAjIHBhcnNlciBwYXNzCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGY6IGludCIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieDogaW50OiBzdHIiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIG5vbmxvY2FsIHg6IGludFxuIikKKyAgICAgICAgIyBBU1QgcGFzcworICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIlt4LCAwXTogaW50XG4iKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImYoKTogaW50XG4iKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIih4LCk6IGludCIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgKHgsIHkpOiBpbnQgPSAoMSwgMilcbiIpCisgICAgICAgICMgc3ltdGFibGUgcGFzcworICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbG9iYWwgeFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBnbG9iYWwgeFxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfYmFzaWNfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICAjIGV4ZWN1dGlvbiBvcmRlcgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIG5vX25hbWVbZG9lc19ub3RfZXhpc3RdOiBub19uYW1lX2FnYWluID0gMS8wCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIG5vX25hbWVbZG9lc19ub3RfZXhpc3RdOiAxLzAgPSAwCisgICAgICAgIGdsb2JhbCB2YXJfYW5ub3RfZ2xvYmFsCisKKyAgICAgICAgIyBmdW5jdGlvbiBzZW1hbnRpY3MKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHN0OiBzdHIgPSAiSGVsbG8iCisgICAgICAgICAgICBhLmI6IGludCA9ICgxLCAyKQorICAgICAgICAgICAgcmV0dXJuIHN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5fX2Fubm90YXRpb25zX18sIHt9KQorICAgICAgICBkZWYgZl9PSygpOgorICAgICAgICAgICAgeDogMS8wCisgICAgICAgIGZfT0soKQorICAgICAgICBkZWYgZmJhZCgpOgorICAgICAgICAgICAgeDogaW50CisgICAgICAgICAgICBwcmludCh4KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuYm91bmRMb2NhbEVycm9yKToKKyAgICAgICAgICAgIGZiYWQoKQorICAgICAgICBkZWYgZjJiYWQoKToKKyAgICAgICAgICAgIChub19zdWNoX2dsb2JhbCk6IGludAorICAgICAgICAgICAgcHJpbnQobm9fc3VjaF9nbG9iYWwpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYyYmFkKCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBOYW1lRXJyb3IpCisKKyAgICAgICAgIyBjbGFzcyBzZW1hbnRpY3MKKyAgICAgICAgY2xhc3MgQzoKKyAgICAgICAgICAgIF9fZm9vOiBpbnQKKyAgICAgICAgICAgIHM6IHN0ciA9ICJhdHRyIgorICAgICAgICAgICAgeiA9IDIKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICBzZWxmLng6IGludCA9IHgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYW5ub3RhdGlvbnNfXywgeydfQ19fZm9vJzogaW50LCAncyc6IHN0cn0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIENCYWQ6CisgICAgICAgICAgICAgICAgbm9fc3VjaF9uYW1lX2RlZmluZWQuYXR0cjogaW50ID0gMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDYmFkMihDKToKKyAgICAgICAgICAgICAgICB4OiBpbnQKKyAgICAgICAgICAgICAgICB4Lnk6IGxpc3QgPSBbXQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X21ldGFjbGFzc19zZW1hbnRpY3Moc2VsZik6CisgICAgICAgIGNsYXNzIENNZXRhKHR5cGUpOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHsnX19hbm5vdGF0aW9uc19fJzogQ05TKCl9CisgICAgICAgIGNsYXNzIENDKG1ldGFjbGFzcz1DTWV0YSk6CisgICAgICAgICAgICBYWDogJ0FOTk9UJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENDLl9fYW5ub3RhdGlvbnNfX1sneHgnXSwgJ0FOTk9UJykKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9tb2R1bGVfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHByaW50KHRlc3QuX19hbm5vdGF0aW9uc19fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFubl9tb2R1bGUuX19hbm5vdGF0aW9uc19fLAorICAgICAgICAgICAgICAgICAgICAgezE6IDIsICd4JzogaW50LCAneSc6IHN0ciwgJ2YnOiB0eXBpbmcuVHVwbGVbaW50LCBpbnRdfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbm5fbW9kdWxlLk0uX19hbm5vdGF0aW9uc19fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeycxMjMnOiAxMjMsICdvJzogdHlwZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5uX21vZHVsZTIuX19hbm5vdGF0aW9uc19fLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBpbmcuZ2V0X3R5cGVfaGludHMoYW5uX21vZHVsZTIuQ1YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFubl9tb2R1bGUyLl9fZGljdF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDaGFpbk1hcCh7J3Zhcic6IHR5cGluZy5DbGFzc1Zhclthbm5fbW9kdWxlMi5DVl19LCB7fSkpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfaW5fbW9kdWxlKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgZnVuY3Rpb25zIGZhaWwgdGhlIHNhbWUgd2F5IHdoZW4gZXhlY3V0ZWQKKyAgICAgICAgIyBvdXRzaWRlIG9mIG1vZHVsZSB3aGVyZSB0aGV5IHdlcmUgZGVmaW5lZAorICAgICAgICBmcm9tIHRlc3QuYW5uX21vZHVsZTMgaW1wb3J0IGZfYmFkX2FubiwgZ19iYWRfYW5uLCBEX2JhZF9hbm4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZl9iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgZ19iYWRfYW5uKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgRF9iYWRfYW5uKDUpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc2ltcGxlX2V4ZWMoc2VsZik6CisgICAgICAgIGducyA9IHt9OyBsbnM9IHt9CisgICAgICAgIGV4ZWMoIidkb2NzdHJpbmcnXG4iCisgICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfX1sxXSA9IDJcbiIKKyAgICAgICAgICAgICAieDogaW50ID0gNVxuIiwgZ25zLCBsbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG5zWyJfX2Fubm90YXRpb25zX18iXSwgezE6IDIsICd4JzogaW50fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBnbnNbJ19fYW5ub3RhdGlvbnNfXyddCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfY3VzdG9tX21hcHMoc2VsZik6CisgICAgICAgICMgdGVzdHMgd2l0aCBjdXN0b20gbG9jYWxzKCkgYW5kIF9fYW5ub3RhdGlvbnNfXworICAgICAgICBucyA9IHsnX19hbm5vdGF0aW9uc19fJzogQ05TKCl9CisgICAgICAgIGV4ZWMoJ1g6IGludDsgWjogc3RyID0gIloiOyAodyk6IGNvbXBsZXggPSAxaicsIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXVsneCddLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnNbJ19fYW5ub3RhdGlvbnNfXyddWyd6J10sIHN0cikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBuc1snX19hbm5vdGF0aW9uc19fJ11bJ3cnXQorICAgICAgICBub25sb2NfbnMgPSB7fQorICAgICAgICBjbGFzcyBDTlMyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuX2RjdCA9IHt9CisgICAgICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaXRlbSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG5vbmxvY19ucworICAgICAgICAgICAgICAgIHNlbGYuX2RjdFtpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgbm9ubG9jX25zW2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGN0W2l0ZW1dCisgICAgICAgIGV4ZWMoJ3g6IGludCA9IDEnLCB7fSwgQ05TMigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vbmxvY19uc1snX19hbm5vdGF0aW9uc19fJ11bJ3gnXSwgaW50KQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X3JlZmxlYWsoc2VsZik6CisgICAgICAgICMgY29tcGxleCBjYXNlOiBjdXN0b20gbG9jYWxzIHBsdXMgY3VzdG9tIF9fYW5ub3RhdGlvbnNfXworICAgICAgICAjIHRoaXMgd2FzIGNhdXNpbmcgcmVmbGVhaworICAgICAgICBjbnMgPSBDTlMoKQorICAgICAgICBub25sb2NfbnMgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgY2xhc3MgQ05TMjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3QgPSB7J19fYW5ub3RhdGlvbnNfXyc6IGNuc30KKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgbm9ubG9jYWwgbm9ubG9jX25zCisgICAgICAgICAgICAgICAgc2VsZi5fZGN0W2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgICAgICBub25sb2NfbnNbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGl0ZW0pOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKyAgICAgICAgZXhlYygnWDogc3RyJywge30sIENOUzIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub25sb2NfbnNbJ19fYW5ub3RhdGlvbnNfXyddWyd4J10sIHN0cikKKwogICAgIGRlZiB0ZXN0X2Z1bmNkZWYoc2VsZik6CiAgICAgICAgICMjIyBbZGVjb3JhdG9yc10gJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZQogICAgICAgICAjIyMgZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKQEAgLTI5NSw2ICs1NjIsMTAgQEAKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMixrMj0xMDAsdG9rd2FyZzE9MTAwLHRva3dhcmcyPTIwMCkKICAgICAgICAgcG9zMmtleTJkaWN0KDEsMix0b2t3YXJnMT0xMDAsdG9rd2FyZzI9MjAwLCBrMj0xMDApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqKTogcGFzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZGVmIGYoKiwpOiBwYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICJkZWYgZigqLCAqKmt3ZHMpOiBwYXNzIikKKwogICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIGFmdGVyICphcmdsaXN0CiAgICAgICAgIGRlZiBmKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICByZXR1cm4gYXJncywga3dhcmdzCkBAIC0zNDEsNyArNjEyLDcgQEAKICAgICAgICAgZGVmIGYoeCkgLT4gbGlzdDogcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7J3JldHVybic6IGxpc3R9KQogCi0gICAgICAgICMgdGVzdCBNQUtFX0NMT1NVUkUgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmcncworICAgICAgICAjIHRlc3QgY2xvc3VyZXMgd2l0aCBhIHZhcmlldHkgb2Ygb3BhcmdzCiAgICAgICAgIGNsb3N1cmUgPSAxCiAgICAgICAgIGRlZiBmKCk6IHJldHVybiBjbG9zdXJlCiAgICAgICAgIGRlZiBmKHg9MSk6IHJldHVybiBjbG9zdXJlCkBAIC0zNTIsNiArNjIzLDIzIEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqZygxPTIpKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqKmcoMT0yKSkiKQogCisgICAgICAgICMgQ2hlY2sgdHJhaWxpbmcgY29tbWFzIGFyZSBwZXJtaXR0ZWQgaW4gZnVuY2RlZiBhcmd1bWVudCBsaXN0CisgICAgICAgIGRlZiBmKGEsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywpOiBwYXNzCisgICAgICAgIGRlZiBmKCoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsIGIsKTogcGFzcworICAgICAgICBkZWYgZigqLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKiwgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZigqYXJncywgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKiwgYiwgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoYSwgKmFyZ3MsIGIsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICosIGIsICoqa3dkcywpOiBwYXNzCisKICAgICBkZWYgdGVzdF9sYW1iZGVmKHNlbGYpOgogICAgICAgICAjIyMgbGFtYmRlZjogJ2xhbWJkYScgW3ZhcmFyZ3NsaXN0XSAnOicgdGVzdAogICAgICAgICBsMSA9IGxhbWJkYSA6IDAKQEAgLTM3MCw2ICs2NTgsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsNigxLDIpLCAxKzIrMjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDYoMSwyLGs9MTApLCAxKzIrMTApCiAKKyAgICAgICAgIyBjaGVjayB0aGF0IHRyYWlsaW5nIGNvbW1hcyBhcmUgcGVybWl0dGVkCisgICAgICAgIGwxMCA9IGxhbWJkYSBhLDogMAorICAgICAgICBsMTEgPSBsYW1iZGEgKmFyZ3MsOiAwCisgICAgICAgIGwxMiA9IGxhbWJkYSAqKmt3ZHMsOiAwCisgICAgICAgIGwxMyA9IGxhbWJkYSBhLCAqYXJncyw6IDAKKyAgICAgICAgbDE0ID0gbGFtYmRhIGEsICoqa3dkcyw6IDAKKyAgICAgICAgbDE1ID0gbGFtYmRhICphcmdzLCBiLDogMAorICAgICAgICBsMTYgPSBsYW1iZGEgKiwgYiw6IDAKKyAgICAgICAgbDE3ID0gbGFtYmRhICphcmdzLCAqKmt3ZHMsOiAwCisgICAgICAgIGwxOCA9IGxhbWJkYSBhLCAqYXJncywgYiw6IDAKKyAgICAgICAgbDE5ID0gbGFtYmRhIGEsICosIGIsOiAwCisgICAgICAgIGwyMCA9IGxhbWJkYSBhLCAqYXJncywgKiprd2RzLDogMAorICAgICAgICBsMjEgPSBsYW1iZGEgKmFyZ3MsIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIyID0gbGFtYmRhICosIGIsICoqa3dkcyw6IDAKKyAgICAgICAgbDIzID0gbGFtYmRhIGEsICphcmdzLCBiLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyNCA9IGxhbWJkYSBhLCAqLCBiLCAqKmt3ZHMsOiAwCisKIAogICAgICMjIyBzdG10OiBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwpAQCAtMTA0MCwxOCArMTM0NSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5vdGhlciwgNDIpCiAKICAgICBkZWYgdGVzdF9hc3luY19hd2FpdChzZWxmKToKLSAgICAgICAgYXN5bmMgPSAxCi0gICAgICAgIGF3YWl0ID0gMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzeW5jLCAxKQotCi0gICAgICAgIGRlZiBhc3luYygpOgotICAgICAgICAgICAgbm9ubG9jYWwgYXdhaXQKLSAgICAgICAgICAgIGF3YWl0ID0gMTAKLSAgICAgICAgYXN5bmMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0LCAxMCkKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2woYXN5bmMuX19jb2RlX18uY29fZmxhZ3MgJiBpbnNwZWN0LkNPX0NPUk9VVElORSkpCi0KICAgICAgICAgYXN5bmMgZGVmIHRlc3QoKToKICAgICAgICAgICAgIGRlZiBzdW0oKToKICAgICAgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dycC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CmluZGV4IDI3MmIwODYuLjY5MDk1YTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JwLnB5CkBAIC05Miw1ICs5MiwxNSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBncnAuZ2V0Z3JnaWQsIGZha2VnaWQpCiAKKyAgICBkZWYgdGVzdF9ub25pbnRlZ2VyX2dpZChzZWxmKToKKyAgICAgICAgZW50cmllcyA9IGdycC5nZXRncmFsbCgpCisgICAgICAgIGlmIG5vdCBlbnRyaWVzOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbm8gZ3JvdXBzJykKKyAgICAgICAgIyBDaG9vc2UgYW4gZXhpc3RlbnQgZ2lkLgorICAgICAgICBnaWQgPSBlbnRyaWVzWzBdWzJdCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIGZsb2F0KGdpZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCBncnAuZ2V0Z3JnaWQsIHN0cihnaWQpKQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKaW5kZXggM2M1MTY3My4uYjQ1N2JkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtNSw2ICs1LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF80RwogaW1wb3J0IG9zCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IGlvCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgYXJyYXkKQEAgLTY3LDYgKzY4LDE4IEBACiAgICAgICAgICMgVGVzdCBtdWx0aXBsZSBjbG9zZSgpIGNhbGxzLgogICAgICAgICBmLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3JlYWRfd2l0aF9wYXRobGlrZV9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChzZWxmLmZpbGVuYW1lKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEgKiA1MCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGYubmFtZSwgc3RyKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUsICdhJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEpCisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgIGQgPSBmLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGRhdGExICogNTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLm5hbWUsIHN0cikKKwogICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0X3dyaXRlX3h5IG1ldGhvZHMgdGVzdCB0aGF0IHdyaXRlIGFjY2VwdHMKICAgICAjIHRoZSBjb3JyZXNwb25kaW5nIGJ5dGVzLWxpa2Ugb2JqZWN0IHR5cGUgYXMgaW5wdXQKICAgICAjIGFuZCB0aGF0IHRoZSBkYXRhIHdyaXR0ZW4gZXF1YWxzIGJ5dGVzKHh5KSBpbiBhbGwgY2FzZXMuCkBAIC00MzQsMTIgKzQ0NywxMiBAQAogCiAgICAgZGVmIHRlc3RfZGVjb21wcmVzc19saW1pdGVkKHNlbGYpOgogICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKLSAgICAgICAgYm9tYiA9IGd6aXAuY29tcHJlc3MoYnl0ZXMoaW50KDJlNikpLCBjb21wcmVzc2xldmVsPTkpCisgICAgICAgIGJvbWIgPSBnemlwLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIGNvbXByZXNzbGV2ZWw9OSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihib21iKSwgaW8uREVGQVVMVF9CVUZGRVJfU0laRSkKIAogICAgICAgICBib21iID0gaW8uQnl0ZXNJTyhib21iKQogICAgICAgICBkZWNvbXAgPSBnemlwLkd6aXBGaWxlKGZpbGVvYmo9Ym9tYikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCkBAIC01MjEsNiArNTM0LDE1IEBACiAgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQogCisgICAgZGVmIHRlc3RfcGF0aGxpa2VfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoc2VsZi5maWxlbmFtZSkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGExICogNTApCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGZpbGVuYW1lLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBkYXRhMSAqIDUxKQorCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfYmluYXJ5X21vZGVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgaW1wbGljaXQgYmluYXJ5IG1vZGVzIChubyAiYiIgb3IgInQiIGluIG1vZGUgc3RyaW5nKS4KICAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEgKiA1MApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IGM5YjExM2UuLmY3NDhiNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTcsNiArNyw3IEBACiAjCiAKIGltcG9ydCBhcnJheQorZnJvbSBiaW5hc2NpaSBpbXBvcnQgdW5oZXhsaWZ5CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9zCkBAIC0xOSw2ICsyMCw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IF80RywgYmlnbWVtdGVzdCwgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogCiAjIFdlcmUgd2UgY29tcGlsZWQgLS13aXRoLXB5ZGVidWcgb3Igd2l0aCAjZGVmaW5lIFB5X0RFQlVHPwogQ09NUElMRURfV0lUSF9QWURFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKQEAgLTI2LDYgKzI4LDIxIEBACiBjX2hhc2hsaWIgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdoYXNobGliJywgZnJlc2g9WydfaGFzaGxpYiddKQogcHlfaGFzaGxpYiA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2hhc2hsaWInLCBibG9ja2VkPVsnX2hhc2hsaWInXSkKIAordHJ5OgorICAgIGltcG9ydCBfYmxha2UyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX2JsYWtlMiA9IE5vbmUKKworcmVxdWlyZXNfYmxha2UyID0gdW5pdHRlc3Quc2tpcFVubGVzcyhfYmxha2UyLCAncmVxdWlyZXMgX2JsYWtlMicpCisKK3RyeToKKyAgICBpbXBvcnQgX3NoYTMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfc2hhMyA9IE5vbmUKKworcmVxdWlyZXNfc2hhMyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoX3NoYTMsICdyZXF1aXJlcyBfc2hhMycpCisKKwogZGVmIGhleHN0cihzKToKICAgICBhc3NlcnQgaXNpbnN0YW5jZShzLCBieXRlcyksIHJlcHIocykKICAgICBoID0gIjAxMjM0NTY3ODlhYmNkZWYiCkBAIC0zNSwxMCArNTIsMzMgQEAKICAgICByZXR1cm4gcgogCiAKK1VSTCA9ICJodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0L2hhc2hsaWIve30udHh0IgorCitkZWYgcmVhZF92ZWN0b3JzKGhhc2hfbmFtZSk6CisgICAgdXJsID0gVVJMLmZvcm1hdChoYXNoX25hbWUpCisgICAgdHJ5OgorICAgICAgICB0ZXN0ZGF0YSA9IHN1cHBvcnQub3Blbl91cmxyZXNvdXJjZSh1cmwpCisgICAgZXhjZXB0IChPU0Vycm9yLCBIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNvdWxkIG5vdCByZXRyaWV2ZSB7fSIuZm9ybWF0KHVybCkpCisgICAgd2l0aCB0ZXN0ZGF0YToKKyAgICAgICAgZm9yIGxpbmUgaW4gdGVzdGRhdGE6CisgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyMnKSBvciBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgcGFydHMgPSBsaW5lLnNwbGl0KCcsJykKKyAgICAgICAgICAgIHBhcnRzWzBdID0gYnl0ZXMuZnJvbWhleChwYXJ0c1swXSkKKyAgICAgICAgICAgIHlpZWxkIHBhcnRzCisKKwogY2xhc3MgSGFzaExpYlRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzdXBwb3J0ZWRfaGFzaF9uYW1lcyA9ICggJ21kNScsICdNRDUnLCAnc2hhMScsICdTSEExJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTIyNCcsICdTSEEyMjQnLCAnc2hhMjU2JywgJ1NIQTI1NicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzODQnLCAnU0hBMzg0JywgJ3NoYTUxMicsICdTSEE1MTInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JsYWtlMmInLCAnYmxha2UycycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGFrZV8xMjgnLCAnc2hha2VfMjU2JykKKworICAgIHNoYWtlcyA9IHsnc2hha2VfMTI4JywgJ3NoYWtlXzI1Nid9CiAKICAgICAjIElzc3VlICMxNDY5MzogZmFsbGJhY2sgbW9kdWxlcyBhcmUgYWx3YXlzIGNvbXBpbGVkIHVuZGVyIFBPU0lYCiAgICAgX3dhcm5fb25fZXh0ZW5zaW9uX2ltcG9ydCA9IG9zLm5hbWUgPT0gJ3Bvc2l4JyBvciBDT01QSUxFRF9XSVRIX1BZREVCVUcKQEAgLTU2LDYgKzk2LDExIEBACiAgICAgICAgIGFsZ29yaXRobXMgPSBzZXQoKQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXM6CiAgICAgICAgICAgICBhbGdvcml0aG1zLmFkZChhbGdvcml0aG0ubG93ZXIoKSkKKworICAgICAgICBfYmxha2UyID0gc2VsZi5fY29uZGl0aW9uYWxfaW1wb3J0X21vZHVsZSgnX2JsYWtlMicpCisgICAgICAgIGlmIF9ibGFrZTI6CisgICAgICAgICAgICBhbGdvcml0aG1zLnVwZGF0ZSh7J2JsYWtlMmInLCAnYmxha2Uycyd9KQorCiAgICAgICAgIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QgPSB7fQogICAgICAgICBmb3IgYWxnb3JpdGhtIGluIGFsZ29yaXRobXM6CiAgICAgICAgICAgICBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W2FsZ29yaXRobV0gPSBzZXQoKQpAQCAtNjQsMTAgKzEwOSwxMCBAQAogICAgICAgICAjIG9mIGhhc2hsaWIubmV3IGdpdmVuIHRoZSBhbGdvcml0aG0gbmFtZS4KICAgICAgICAgZm9yIGFsZ29yaXRobSwgY29uc3RydWN0b3JzIGluIHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3QuaXRlbXMoKToKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoZ2V0YXR0cihoYXNobGliLCBhbGdvcml0aG0pKQotICAgICAgICAgICAgZGVmIF90ZXN0X2FsZ29yaXRobV92aWFfaGFzaGxpYl9uZXcoZGF0YT1Ob25lLCBfYWxnPWFsZ29yaXRobSk6CisgICAgICAgICAgICBkZWYgX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldyhkYXRhPU5vbmUsIF9hbGc9YWxnb3JpdGhtLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZykKLSAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZywgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnLCBkYXRhLCAqKmt3YXJncykKICAgICAgICAgICAgIGNvbnN0cnVjdG9ycy5hZGQoX3Rlc3RfYWxnb3JpdGhtX3ZpYV9oYXNobGliX25ldykKIAogICAgICAgICBfaGFzaGxpYiA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19oYXNobGliJykKQEAgLTk5LDYgKzE0NCwxOCBAQAogICAgICAgICBpZiBfc2hhNTEyOgogICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTM4NCcpCiAgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhNTEyJykKKyAgICAgICAgaWYgX2JsYWtlMjoKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJzJykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdibGFrZTJiJykKKworICAgICAgICBfc2hhMyA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19zaGEzJykKKyAgICAgICAgaWYgX3NoYTM6CisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM18yMjQnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfMjU2JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzM4NCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM181MTInKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYWtlXzEyOCcpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hha2VfMjU2JykKIAogICAgICAgICBzdXBlcihIYXNoTGliVGVzdENhc2UsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKIApAQCAtMTExLDcgKzE2OCwxMCBAQAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoImIiLCByYW5nZSgxMCkpCiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBjID0gY29ucyhhKQotICAgICAgICAgICAgYy5oZXhkaWdlc3QoKQorICAgICAgICAgICAgaWYgYy5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIGMuaGV4ZGlnZXN0KDE2KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjLmhleGRpZ2VzdCgpCiAKICAgICBkZWYgdGVzdF9hbGdvcml0aG1zX2d1YXJhbnRlZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGxpYi5hbGdvcml0aG1zX2d1YXJhbnRlZWQsCkBAIC0xNTUsMTQgKzIxNSwyMSBAQAogICAgIGRlZiB0ZXN0X2hleGRpZ2VzdChzZWxmKToKICAgICAgICAgZm9yIGNvbnMgaW4gc2VsZi5oYXNoX2NvbnN0cnVjdG9yczoKICAgICAgICAgICAgIGggPSBjb25zKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgpLCBieXRlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQorICAgICAgICAgICAgaWYgaC5uYW1lIGluIHNlbGYuc2hha2VzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgxNiksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KDE2KSksIGguaGV4ZGlnZXN0KDE2KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGguZGlnZXN0KCksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGV4c3RyKGguZGlnZXN0KCkpLCBoLmhleGRpZ2VzdCgpKQogCiAgICAgZGVmIHRlc3RfbmFtZV9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBoID0gY29ucygpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5uYW1lLCBzdHIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKKyAgICAgICAgICAgIGlmIGgubmFtZSBpbiBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaC5uYW1lLCBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCBoYXNobGliLm5ldyhoLm5hbWUpLm5hbWUpCiAKICAgICBkZWYgdGVzdF9sYXJnZV91cGRhdGUoc2VsZik6CkBAIC0xNzcsNDAgKzI0NCw0NiBAQAogICAgICAgICAgICAgbTEudXBkYXRlKGJlZXMpCiAgICAgICAgICAgICBtMS51cGRhdGUoY2VlcykKICAgICAgICAgICAgIG0xLnVwZGF0ZShkZWVzKQorICAgICAgICAgICAgaWYgbTEubmFtZSBpbiBzZWxmLnNoYWtlczoKKyAgICAgICAgICAgICAgICBhcmdzID0gKDE2LCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgpCiAKICAgICAgICAgICAgIG0yID0gY29ucygpCiAgICAgICAgICAgICBtMi51cGRhdGUoYWFzICsgYmVlcyArIGNlZXMgKyBkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTIuZGlnZXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgqYXJncyksIG0yLmRpZ2VzdCgqYXJncykpCiAKICAgICAgICAgICAgIG0zID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcyArIGRlZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgpLCBtMy5kaWdlc3QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTMuZGlnZXN0KCphcmdzKSkKIAogICAgICAgICAgICAgIyB2ZXJpZnkgY29weSgpIGRvZXNuJ3QgdG91Y2ggb3JpZ2luYWwKICAgICAgICAgICAgIG00ID0gY29ucyhhYXMgKyBiZWVzICsgY2VlcykKLSAgICAgICAgICAgIG00X2RpZ2VzdCA9IG00LmRpZ2VzdCgpCisgICAgICAgICAgICBtNF9kaWdlc3QgPSBtNC5kaWdlc3QoKmFyZ3MpCiAgICAgICAgICAgICBtNF9jb3B5ID0gbTQuY29weSgpCiAgICAgICAgICAgICBtNF9jb3B5LnVwZGF0ZShkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTRfY29weS5kaWdlc3QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTQuZGlnZXN0KCksIG00X2RpZ2VzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCphcmdzKSwgbTRfY29weS5kaWdlc3QoKmFyZ3MpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtNC5kaWdlc3QoKmFyZ3MpLCBtNF9kaWdlc3QpCiAKLSAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0KToKKyAgICBkZWYgY2hlY2soc2VsZiwgbmFtZSwgZGF0YSwgaGV4ZGlnZXN0LCBzaGFrZT1GYWxzZSwgKiprd2FyZ3MpOgorICAgICAgICBsZW5ndGggPSBsZW4oaGV4ZGlnZXN0KS8vMgogICAgICAgICBoZXhkaWdlc3QgPSBoZXhkaWdlc3QubG93ZXIoKQogICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCiAgICAgICAgICMgMiBpcyBmb3IgaGFzaGxpYi5uYW1lKC4uLikgYW5kIGhhc2hsaWIubmV3KG5hbWUsIC4uLikKICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKGNvbnN0cnVjdG9ycyksIDIpCiAgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6Ci0gICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoZGF0YSkKLSAgICAgICAgICAgIGNvbXB1dGVkID0gbS5oZXhkaWdlc3QoKQorICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKGRhdGEsICoqa3dhcmdzKQorICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmhleGRpZ2VzdCgpIGlmIG5vdCBzaGFrZSBlbHNlIG0uaGV4ZGlnZXN0KGxlbmd0aCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkLCBoZXhkaWdlc3QsCiAgICAgICAgICAgICAgICAgICAgICJIYXNoIGFsZ29yaXRobSAlcyBjb25zdHJ1Y3RlZCB1c2luZyAlcyByZXR1cm5lZCBoZXhkaWdlc3QiCiAgICAgICAgICAgICAgICAgICAgICIgJXIgZm9yICVkIGJ5dGUgaW5wdXQgZGF0YSB0aGF0IHNob3VsZCBoYXZlIGhhc2hlZCB0byAlci4iCiAgICAgICAgICAgICAgICAgICAgICUgKG5hbWUsIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZCwgbGVuKGRhdGEpLCBoZXhkaWdlc3QpKQotICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmRpZ2VzdCgpCisgICAgICAgICAgICBjb21wdXRlZCA9IG0uZGlnZXN0KCkgaWYgbm90IHNoYWtlIGVsc2UgbS5kaWdlc3QobGVuZ3RoKQogICAgICAgICAgICAgZGlnZXN0ID0gYnl0ZXMuZnJvbWhleChoZXhkaWdlc3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXB1dGVkLCBkaWdlc3QpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWdlc3QpLCBtLmRpZ2VzdF9zaXplKQorICAgICAgICAgICAgaWYgbm90IHNoYWtlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpZ2VzdCksIG0uZGlnZXN0X3NpemUpCiAKICAgICBkZWYgY2hlY2tfbm9fdW5pY29kZShzZWxmLCBhbGdvcml0aG1fbmFtZSk6CiAgICAgICAgICMgVW5pY29kZSBvYmplY3RzIGFyZSBub3QgYWxsb3dlZCBhcyBpbnB1dC4KQEAgLTIyNiwxMyArMjk5LDM1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhMzg0JykKICAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGE1MTInKQogCi0gICAgZGVmIGNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKHNlbGYsIG5hbWUsIGJsb2NrX3NpemU9MCwgZGlnZXN0X3NpemU9MCk6CisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X25vX3VuaWNvZGVfYmxha2UyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMmInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ2JsYWtlMnMnKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ub191bmljb2RlX3NoYTMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18yMjQnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMjU2JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzM4NCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM181MTInKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYWtlXzEyOCcpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hha2VfMjU2JykKKworICAgIGRlZiBjaGVja19ibG9ja3NpemVfbmFtZShzZWxmLCBuYW1lLCBibG9ja19zaXplPTAsIGRpZ2VzdF9zaXplPTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGg9Tm9uZSk6CiAgICAgICAgIGNvbnN0cnVjdG9ycyA9IHNlbGYuY29uc3RydWN0b3JzX3RvX3Rlc3RbbmFtZV0KICAgICAgICAgZm9yIGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yIGluIGNvbnN0cnVjdG9yczoKICAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcigpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uYmxvY2tfc2l6ZSwgYmxvY2tfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5kaWdlc3Rfc2l6ZSwgZGlnZXN0X3NpemUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICBpZiBkaWdlc3RfbGVuZ3RoOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uZGlnZXN0KGRpZ2VzdF9sZW5ndGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9sZW5ndGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoZGlnZXN0X2xlbmd0aCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMipkaWdlc3RfbGVuZ3RoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdCgpKSwgZGlnZXN0X3NpemUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5oZXhkaWdlc3QoKSksIDIqZGlnZXN0X3NpemUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubmFtZSwgbmFtZSkKICAgICAgICAgICAgICMgc3BsaXQgZm9yIHNoYTNfNTEyIC8gX3NoYTMuc2hhMyBvYmplY3QKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZS5zcGxpdCgiXyIpWzBdLCByZXByKG0pKQpAQCAtMjQ1LDYgKzM0MCwzOCBAQAogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzODQnLCAxMjgsIDQ4KQogICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGE1MTInLCAxMjgsIDY0KQogCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9ibG9ja3NpemVfbmFtZV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzIyNCcsIDE0NCwgMjgpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMjU2JywgMTM2LCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18zODQnLCAxMDQsIDQ4KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzUxMicsIDcyLCA2NCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hha2VfMTI4JywgMTY4LCAwLCAzMikKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hha2VfMjU2JywgMTM2LCAwLCA2NCkKKworICAgIGRlZiBjaGVja19zaGEzKHNlbGYsIG5hbWUsIGNhcGFjaXR5LCByYXRlLCBzdWZmaXgpOgorICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCisgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6CisgICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXBhY2l0eSArIHJhdGUsIDE2MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX2NhcGFjaXR5X2JpdHMsIGNhcGFjaXR5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9yYXRlX2JpdHMsIHJhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX3N1ZmZpeCwgc3VmZml4KQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9leHRyYV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMjI0JywgNDQ4LCAxMTUyLCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMjU2JywgNTEyLCAxMDg4LCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfMzg0JywgNzY4LCA4MzIsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hhM181MTInLCAxMDI0LCA1NzYsIGInXHgwNicpCisgICAgICAgIHNlbGYuY2hlY2tfc2hhMygnc2hha2VfMTI4JywgMjU2LCAxMzQ0LCBiJ1x4MWYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYWtlXzI1NicsIDUxMiwgMTA4OCwgYidceDFmJykKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibG9ja3NpemVfbmFtZV9ibGFrZTIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ2JsYWtlMmInLCAxMjgsIDY0KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdibGFrZTJzJywgNjQsIDMyKQorCiAgICAgZGVmIHRlc3RfY2FzZV9tZDVfMChzZWxmKToKICAgICAgICAgc2VsZi5jaGVjaygnbWQ1JywgYicnLCAnZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UnKQogCkBAIC0zNzMsNiArNTAwLDIyMSBAQAogICAgICAgICAgICJlNzE4NDgzZDBjZTc2OTY0NGUyZTQyYzdiYzE1YjQ2MzhlMWY5OGIxM2IyMDQ0Mjg1NjMyYTgwM2FmYTk3M2ViIisKICAgICAgICAgICAiZGUwZmYyNDQ4NzdlYTYwYTRjYjA0MzJjZTU3N2MzMWJlYjAwOWM1YzJjNDlhYTJlNGVhZGIyMTdhZDhjYzA5YiIpCiAKKyAgICBkZWYgY2hlY2tfYmxha2UyKHNlbGYsIGNvbnN0cnVjdG9yLCBzYWx0X3NpemUsIHBlcnNvbl9zaXplLCBrZXlfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIGRpZ2VzdF9zaXplLCBtYXhfb2Zmc2V0KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3Rvci5TQUxUX1NJWkUsIHNhbHRfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2FsdF9zaXplICsgMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihzYWx0PWInYScgKiBpKQorICAgICAgICBzYWx0ID0gYidhJyAqIChzYWx0X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwgc2FsdD1zYWx0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuUEVSU09OX1NJWkUsIHBlcnNvbl9zaXplKQorICAgICAgICBmb3IgaSBpbiByYW5nZShwZXJzb25fc2l6ZSsxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKHBlcnNvbj1iJ2EnICogaSkKKyAgICAgICAgcGVyc29uID0gYidhJyAqIChwZXJzb25fc2l6ZSArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBwZXJzb249cGVyc29uKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0RJR0VTVF9TSVpFLCBkaWdlc3Rfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgZGlnZXN0X3NpemUgKyAxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRpZ2VzdF9zaXplPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRpZ2VzdF9zaXplPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT1kaWdlc3Rfc2l6ZSsxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuTUFYX0tFWV9TSVpFLCBrZXlfc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoa2V5X3NpemUrMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihrZXk9YidhJyAqIGkpCisgICAgICAgIGtleSA9IGInYScgKiAoa2V5X3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwga2V5PWtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25zdHJ1Y3RvcigpLmhleGRpZ2VzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yKGtleT1iJycpLmhleGRpZ2VzdCgpKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDI1Nik6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihmYW5vdXQ9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGZhbm91dD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGRlcHRoPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGRlcHRoPTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjU2KToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKG5vZGVfZGVwdGg9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfZGVwdGg9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX2RlcHRoPTI1NikKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBkaWdlc3Rfc2l6ZSArIDEpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoaW5uZXJfc2l6ZT1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgaW5uZXJfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGlubmVyX3NpemU9ZGlnZXN0X3NpemUrMSkKKworICAgICAgICBjb25zdHJ1Y3RvcihsZWFmX3NpemU9MCkKKyAgICAgICAgY29uc3RydWN0b3IobGVhZl9zaXplPSgxPDwzMiktMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0tMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIGxlYWZfc2l6ZT0xPDwzMikKKworICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD0wKQorICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX29mZnNldD1tYXhfb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9vZmZzZXQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX29mZnNldD1tYXhfb2Zmc2V0KzEpCisKKyAgICAgICAgY29uc3RydWN0b3IoCisgICAgICAgICAgICBzdHJpbmc9YicnLAorICAgICAgICAgICAga2V5PWInJywKKyAgICAgICAgICAgIHNhbHQ9YicnLAorICAgICAgICAgICAgcGVyc29uPWInJywKKyAgICAgICAgICAgIGRpZ2VzdF9zaXplPTE3LAorICAgICAgICAgICAgZmFub3V0PTEsCisgICAgICAgICAgICBkZXB0aD0xLAorICAgICAgICAgICAgbGVhZl9zaXplPTI1NiwKKyAgICAgICAgICAgIG5vZGVfb2Zmc2V0PTUxMiwKKyAgICAgICAgICAgIG5vZGVfZGVwdGg9MSwKKyAgICAgICAgICAgIGlubmVyX3NpemU9NywKKyAgICAgICAgICAgIGxhc3Rfbm9kZT1UcnVlCisgICAgICAgICkKKworICAgIGRlZiBibGFrZTJfcmZjNzY5MyhzZWxmLCBjb25zdHJ1Y3RvciwgbWRfbGVuLCBpbl9sZW4pOgorICAgICAgICBkZWYgc2VsZnRlc3Rfc2VxKGxlbmd0aCwgc2VlZCk6CisgICAgICAgICAgICBtYXNrID0gKDE8PDMyKS0xCisgICAgICAgICAgICBhID0gKDB4REVBRDRCQUQgKiBzZWVkKSAmIG1hc2sKKyAgICAgICAgICAgIGIgPSAxCisgICAgICAgICAgICBvdXQgPSBieXRlYXJyYXkobGVuZ3RoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgICAgICB0ID0gKGEgKyBiKSAmIG1hc2sKKyAgICAgICAgICAgICAgICBhLCBiID0gYiwgdAorICAgICAgICAgICAgICAgIG91dFtpXSA9ICh0ID4+IDI0KSAmIDB4RkYKKyAgICAgICAgICAgIHJldHVybiBvdXQKKyAgICAgICAgb3V0ZXIgPSBjb25zdHJ1Y3RvcihkaWdlc3Rfc2l6ZT0zMikKKyAgICAgICAgZm9yIG91dGxlbiBpbiBtZF9sZW46CisgICAgICAgICAgICBmb3IgaW5sZW4gaW4gaW5fbGVuOgorICAgICAgICAgICAgICAgIGluZGF0YSA9IHNlbGZ0ZXN0X3NlcShpbmxlbiwgaW5sZW4pCisgICAgICAgICAgICAgICAga2V5ID0gc2VsZnRlc3Rfc2VxKG91dGxlbiwgb3V0bGVuKQorICAgICAgICAgICAgICAgIHVua2V5ZWQgPSBjb25zdHJ1Y3RvcihpbmRhdGEsIGRpZ2VzdF9zaXplPW91dGxlbikKKyAgICAgICAgICAgICAgICBvdXRlci51cGRhdGUodW5rZXllZC5kaWdlc3QoKSkKKyAgICAgICAgICAgICAgICBrZXllZCA9IGNvbnN0cnVjdG9yKGluZGF0YSwga2V5PWtleSwgZGlnZXN0X3NpemU9b3V0bGVuKQorICAgICAgICAgICAgICAgIG91dGVyLnVwZGF0ZShrZXllZC5kaWdlc3QoKSkKKyAgICAgICAgcmV0dXJuIG91dGVyLmhleGRpZ2VzdCgpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UyYihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJiLCAxNiwgMTYsIDY0LCA2NCwgKDE8PDY0KS0xKQorICAgICAgICBiMmJfbWRfbGVuID0gWzIwLCAzMiwgNDgsIDY0XQorICAgICAgICBiMmJfaW5fbGVuID0gWzAsIDMsIDEyOCwgMTI5LCAyNTUsIDEwMjRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmJsYWtlMl9yZmM3NjkzKGhhc2hsaWIuYmxha2UyYiwgYjJiX21kX2xlbiwgYjJiX2luX2xlbiksCisgICAgICAgICAgICAiYzIzYTc4MDBkOTgxMjNiZDEwZjUwNmM2MWUyOWRhNTYwM2Q3NjNiOGJiYWQyZTczN2Y1ZTc2NWE3YmNjZDQ3NSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJiXzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMmInLCBiIiIsCisgICAgICAgICAgIjc4NmEwMmY3NDIwMTU5MDNjNmM2ZmQ4NTI1NTJkMjcyOTEyZjQ3NDBlMTU4NDc2MThhODZlMjE3ZjcxZjU0MTkiKworICAgICAgICAgICJkMjVlMTAzMWFmZWU1ODUzMTM4OTY0NDQ5MzRlYjA0YjkwM2E2ODViMTQ0OGI3NTVkNTZmNzAxYWZlOWJlMmNlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMmJfMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIGIiYWJjIiwKKyAgICAgICAgICAiYmE4MGE1M2Y5ODFjNGQwZDZhMjc5N2I2OWYxMmY2ZTk0YzIxMmYxNDY4NWFjNGI3NGIxMmJiNmZkYmZmYTJkMSIrCisgICAgICAgICAgIjdkODdjNTM5MmFhYjc5MmRjMjUyZDVkZTQ1MzNjYzk1MThkMzhhYThkYmYxOTI1YWI5MjM4NmVkZDQwMDk5MjMiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMmJfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMmInKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UyYicsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxha2UycyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibGFrZTIoaGFzaGxpYi5ibGFrZTJzLCA4LCA4LCAzMiwgMzIsICgxPDw0OCktMSkKKyAgICAgICAgYjJzX21kX2xlbiA9IFsxNiwgMjAsIDI4LCAzMl0KKyAgICAgICAgYjJzX2luX2xlbiA9IFswLCAzLCA2NCwgNjUsIDI1NSwgMTAyNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuYmxha2UyX3JmYzc2OTMoaGFzaGxpYi5ibGFrZTJzLCBiMnNfbWRfbGVuLCBiMnNfaW5fbGVuKSwKKyAgICAgICAgICAgICI2YTQxMWYwOGNlMjVhZGNkZmIwMmFiYTY0MTQ1MWNlYzUzYzU5OGIyNGY0ZmM3ODdmYmRjODg3OTdmNGMxZGZlIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9jYXNlX2JsYWtlMnNfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIGIiIiwKKyAgICAgICAgICAiNjkyMTdhMzA3OTkwODA5NGUxMTEyMWQwNDIzNTRhN2MxZjU1YjY0ODJjYTFhNTFlMWIyNTBkZmQxZWQwZWVmOSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJzXzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMnMnLCBiImFiYyIsCisgICAgICAgICAgIjUwOGM1ZThjMzI3YzE0ZTJlMWE3MmJhMzRlZWI0NTJmMzc0NThiMjA5ZWQ2M2EyOTRkOTk5YjRjODY2NzU5ODIiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMnNfdmVjdG9ycyhzZWxmKToKKyAgICAgICAgZm9yIG1zZywga2V5LCBtZCBpbiByZWFkX3ZlY3RvcnMoJ2JsYWtlMnMnKToKKyAgICAgICAgICAgIGtleSA9IGJ5dGVzLmZyb21oZXgoa2V5KQorICAgICAgICAgICAgc2VsZi5jaGVjaygnYmxha2UycycsIG1zZywgbWQsIGtleT1rZXkpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yMjRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yMjQnLCBiIiIsCisgICAgICAgICAgIjZiNGUwMzQyMzY2N2RiYjczYjZlMTU0NTRmMGViMWFiZDQ1OTdmOWExYjA3OGUzZjViNWE2YmM3IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzIyNF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM18yMjQnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjI0JywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIGIiIiwKKyAgICAgICAgICAiYTdmZmM2ZjhiZjFlZDc2NjUxYzE0NzU2YTA2MWQ2NjJmNTgwZmY0ZGU0M2I0OWZhODJkODBhNGI4MGY4NDM0YSIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yNTZfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMjU2Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzI1NicsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18zODQnLCBiIiIsCisgICAgICAgICAgIjBjNjNhNzViODQ1ZTRmN2QwMTEwN2Q4NTJlNGMyNDg1YzUxYTUwYWFhYTk0ZmM2MTk5NWU3MWJiZWU5ODNhMmEiKworICAgICAgICAgICJjMzcxMzgzMTI2NGFkYjQ3ZmI2YmQxZTA1OGQ1ZjAwNCIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18zODRfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMzg0Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzM4NCcsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM181MTJfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM181MTInLCBiIiIsCisgICAgICAgICAgImE2OWY3M2NjYTIzYTlhYzVjOGI1NjdkYzE4NWE3NTZlOTdjOTgyMTY0ZmUyNTg1OWUwZDFkY2MxNDc1YzgwYTYiKworICAgICAgICAgICIxNWIyMTIzYWYxZjVmOTRjMTFlM2U5NDAyYzNhYzU1OGY1MDAxOTlkOTViNmQzZTMwMTc1ODU4NjI4MWRjZDI2IikKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGEzXzUxMl92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hhM181MTInKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfNTEyJywgbXNnLCBtZCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZV8xMjhfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMTI4JywgYiIiLAorICAgICAgICAgICI3ZjljMmJhNGU4OGY4MjdkNjE2MDQ1NTA3NjA1ODUzZWQ3M2I4MDkzZjZlZmJjODhlYjFhNmVhY2ZhNjZlZjI2IiwKKyAgICAgICAgICBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBiIiIsICI3ZjljIiwgVHJ1ZSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZTEyOF92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hha2VfMTI4Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8xMjgnLCBtc2csIG1kLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlXzI1Nl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8yNTYnLCBiIiIsCisgICAgICAgICAgIjQ2YjlkZDJiMGJhODhkMTMyMzNiM2ZlYjc0M2VlYjI0M2ZjZDUyZWE2MmI4MWI4MmI1MGMyNzY0NmVkNTc2MmYiLAorICAgICAgICAgIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIGIiIiwgIjQ2YjkiLCBUcnVlKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYWtlMjU2X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGFrZV8yNTYnKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzI1NicsIG1zZywgbWQsIFRydWUpCisKICAgICBkZWYgdGVzdF9naWwoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhpbmdzIHdvcmsgZmluZSB3aXRoIGFuIGlucHV0IGxhcmdlciB0aGFuIHRoZSBzaXplIHJlcXVpcmVkCiAgICAgICAgICMgZm9yIG11bHRpdGhyZWFkZWQgb3BlcmF0aW9uICh3aGljaCBpcyBoYXJkd2lyZWQgdG8gMjA0OCkuCkBAIC00NDcsNiArNzg5LDEyIEBACiAgICAgICAgIChiJ3Bhc3NcMHdvcmQnLCBiJ3NhXDBsdCcsIDQwOTYsIDE2KSwKICAgICBdCiAKKyAgICBzY3J5cHRfdGVzdF92ZWN0b3JzID0gWworICAgICAgICAoYicnLCBiJycsIDE2LCAxLCAxLCB1bmhleGxpZnkoJzc3ZDY1NzYyMzg2NTdiMjAzYjE5Y2E0MmMxOGEwNDk3ZjE2YjQ4NDRlMzA3NGFlOGRmZGZmYTNmZWRlMjE0NDJmY2QwMDY5ZGVkMDk0OGY4MzI2YTc1M2EwZmM4MWYxN2U4ZDNlMGZiMmUwZDM2MjhjZjM1ZTIwYzM4ZDE4OTA2JykpLAorICAgICAgICAoYidwYXNzd29yZCcsIGInTmFDbCcsIDEwMjQsIDgsIDE2LCB1bmhleGxpZnkoJ2ZkYmFiZTFjOWQzNDcyMDA3ODU2ZTcxOTBkMDFlOWZlN2M2YWQ3Y2JjODIzNzgzMGU3NzM3NjYzNGIzNzMxNjIyZWFmMzBkOTJlMjJhMzg4NmZmMTA5Mjc5ZDk4MzBkYWM3MjdhZmI5NGE4M2VlNmQ4MzYwY2JkZmEyY2MwNjQwJykpLAorICAgICAgICAoYidwbGVhc2VsZXRtZWluJywgYidTb2RpdW1DaGxvcmlkZScsIDE2Mzg0LCA4LCAxLCB1bmhleGxpZnkoJzcwMjNiZGNiM2FmZDczNDg0NjFjMDZjZDgxZmQzOGViZmRhOGZiYmE5MDRmOGUzZWE5YjU0M2Y2NTQ1ZGExZjJkNTQzMjk1NTYxM2YwZmNmNjJkNDk3MDUyNDJhOWFmOWU2MWU4NWRjMGQ2NTFlNDBkZmNmMDE3YjQ1NTc1ODg3JykpLAorICAgXQorCiAgICAgcGJrZGYyX3Jlc3VsdHMgPSB7CiAgICAgICAgICJzaGExIjogWwogICAgICAgICAgICAgIyBvZmZpY2lhbCB0ZXN0IHZlY3RvcnMgZnJvbSBSRkMgNjA3MApAQCAtNTI2LDUgKzg3NCw0NSBAQAogICAgICAgICBzZWxmLl90ZXN0X3Bia2RmMl9obWFjKGNfaGFzaGxpYi5wYmtkZjJfaG1hYykKIAogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihjX2hhc2hsaWIsICdzY3J5cHQnKSwKKyAgICAgICAgICAgICAgICAgICAgICcgICB0ZXN0IHJlcXVpcmVzIE9wZW5TU0wgPiAxLjEnKQorICAgIGRlZiB0ZXN0X3NjcnlwdChzZWxmKToKKyAgICAgICAgZm9yIHBhc3N3b3JkLCBzYWx0LCBuLCByLCBwLCBleHBlY3RlZCBpbiBzZWxmLnNjcnlwdF90ZXN0X3ZlY3RvcnM6CisgICAgICAgICAgICByZXN1bHQgPSBoYXNobGliLnNjcnlwdChwYXNzd29yZCwgc2FsdD1zYWx0LCBuPW4sIHI9ciwgcD1wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4cGVjdGVkKQorCisgICAgICAgICMgdGhpcyB2YWx1ZXMgc2hvdWxkIHdvcmsKKyAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSkKKyAgICAgICAgIyBwYXNzd29yZCBhbmQgc2FsdCBtdXN0IGJlIGJ5dGVzLWxpa2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD0nc2FsdCcsIG49Miwgcj04LCBwPTEpCisgICAgICAgICMgcmVxdWlyZSBrZXl3b3JkIGFyZ3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBiJ3NhbHQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgMiwgOCwgMSwgc2FsdD1iJ3NhbHQnKQorICAgICAgICBmb3IgbiBpbiBbLTEsIDAsIDEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj1uLCByPTgsIHA9MSkKKyAgICAgICAgZm9yIHIgaW4gWy0xLCAwLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj1yLCBwPTEpCisgICAgICAgIGZvciBwIGluIFstMSwgMCwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD1wKQorICAgICAgICBmb3IgbWF4bWVtIGluIFstMSwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9OCwgcD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heG1lbT1tYXhtZW0pCisgICAgICAgIGZvciBka2xlbiBpbiBbLTEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBka2xlbj1ka2xlbikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weSBiL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKaW5kZXggYjdlODI1OS4uMmY4YzY0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVW5pdHRlc3RzIGZvciBoZWFwcS4iIiIKIAotaW1wb3J0IHN5cwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaG1hYy5weSBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQppbmRleCA5ODgyNmI1Li4wNjdlMTNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2htYWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9obWFjLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBkZWYgaWdub3JlX3dhcm5pbmcoZnVuYyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggMTE0MjBiMi4uMzI2ZTM0MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCBodG1sLnBhcnNlcgogaW1wb3J0IHBwcmludAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCiBjbGFzcyBFdmVudENvbGxlY3RvcihodG1sLnBhcnNlci5IVE1MUGFyc2VyKToKQEAgLTcwMiw3ICs3MDEsNyBAQAogCiAgICAgZGVmIHRlc3RfYXR0cl9mdW5reV9uYW1lczIoc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bl9jaGVjaygKLSAgICAgICAgICAgICI8YSAkPjxiICQ9JT48YyBcPS8+IiwKKyAgICAgICAgICAgIHIiPGEgJD48YiAkPSU+PGMgXD0vPiIsCiAgICAgICAgICAgICBbKCJzdGFydHRhZyIsICJhIiwgWygiJCIsIE5vbmUpXSksCiAgICAgICAgICAgICAgKCJzdGFydHRhZyIsICJiIiwgWygiJCIsICIlIildKSwKICAgICAgICAgICAgICAoInN0YXJ0dGFnIiwgImMiLCBbKCJcXCIsICIvIildKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQppbmRleCA0OWMwMWFlLi42ZmVlNGRmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKQEAgLTEwNTEsNyArMTA1MSw3IEBACiAgICAgICAgIHVybCA9ICJodHRwOi8vZm9vLmJhci5jb20vIgogICAgICAgICBpbnRlcmFjdF8yOTY1KGMsIHVybCwgInNwYW09ZWdnczsgVmVyc2lvbj0xOyBQb3J0IikKICAgICAgICAgaCA9IGludGVyYWN0XzI5NjUoYywgdXJsKQotICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGgsICJcJFBvcnQoW149XXwkKSIsCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoaCwgciJcJFBvcnQoW149XXwkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInBvcnQgd2l0aCBubyB2YWx1ZSBub3QgcmV0dXJuZWQgd2l0aCBubyB2YWx1ZSIpCiAKICAgICAgICAgYyA9IENvb2tpZUphcihwb2wpCkBAIC0xMzk2LDkgKzEzOTYsOSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29va2llLCByJ15cJFZlcnNpb249Ij8xIj87JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInUGFydF9OdW1iZXI9Ij9Sb2NrZXRfTGF1bmNoZXJfMDAwMSI/OycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHMqXCRQYXRoPSJcL2FjbWUiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHMqXCRQYXRoPSJcL2FjbWUiJykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChjb29raWUsIHInQ3VzdG9tZXI9Ij9XSUxFX0VfQ09ZT1RFIj87JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdccypcJFBhdGg9IlwvYWNtZSInKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidccypcJFBhdGg9IlwvYWNtZSInKQogCiAgICAgICAgICMKICAgICAgICAgIyAgIDcuICBVc2VyIEFnZW50IC0+IFNlcnZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CmluZGV4IDYxZWQ2YmIuLjY4ZjY5NDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKQEAgLTM0NCw2ICszNDQsMTM0IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbm4ucHV0aGVhZGVyKG5hbWUsIHZhbHVlKQogCiAKK2NsYXNzIFRyYW5zZmVyRW5jb2RpbmdUZXN0KFRlc3RDYXNlKToKKyAgICBleHBlY3RlZF9ib2R5ID0gYiJJdCdzIGp1c3QgYSBmbGVzaCB3b3VuZCIKKworICAgIGRlZiB0ZXN0X2VuZGhlYWRlcnNfY2h1bmtlZChzZWxmKToKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5wdXRyZXF1ZXN0KCdQT1NUJywgJy8nKQorICAgICAgICBjb25uLmVuZGhlYWRlcnMoc2VsZi5fbWFrZV9ib2R5KCksIGVuY29kZV9jaHVua2VkPVRydWUpCisKKyAgICAgICAgXywgXywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgZGVmIHRlc3RfZXhwbGljaXRfaGVhZGVycyhzZWxmKToKKyAgICAgICAgIyBleHBsaWNpdCBjaHVua2VkCisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgICMgdGhpcyBzaG91bGRuJ3QgYWN0dWFsbHkgYmUgYXV0b21hdGljYWxseSBjaHVuay1lbmNvZGVkIGJlY2F1c2UgdGhlCisgICAgICAgICMgY2FsbGluZyBjb2RlIGhhcyBleHBsaWNpdGx5IHN0YXRlZCB0aGF0IGl0J3MgdGFraW5nIGNhcmUgb2YgaXQKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuX21ha2VfYm9keSgpLCB7J1RyYW5zZmVyLUVuY29kaW5nJzogJ2NodW5rZWQnfSkKKworICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnMua2V5cygpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgICAgICMgZXhwbGljaXQgY2h1bmtlZCwgc3RyaW5nIGJvZHkKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgJ1BPU1QnLCAnLycsIHNlbGYuZXhwZWN0ZWRfYm9keS5kZWNvZGUoJ2xhdGluLTEnKSwKKyAgICAgICAgICAgIHsnVHJhbnNmZXItRW5jb2RpbmcnOiAnY2h1bmtlZCd9KQorCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVycy5rZXlzKCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICAgICAgIyBVc2VyLXNwZWNpZmllZCBURSwgYnV0IHJlcXVlc3QoKSBkb2VzIHRoZSBjaHVuayBlbmNvZGluZworICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsCisgICAgICAgICAgICBoZWFkZXJzPXsnVHJhbnNmZXItRW5jb2RpbmcnOiAnZ3ppcCwgY2h1bmtlZCd9LAorICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQ9VHJ1ZSwKKyAgICAgICAgICAgIGJvZHk9c2VsZi5fbWFrZV9ib2R5KCkpCisgICAgICAgIF8sIGhlYWRlcnMsIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2d6aXAsIGNodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3BhcnNlX2NodW5rZWQoYm9keSksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgIGRlZiB0ZXN0X3JlcXVlc3Qoc2VsZik6CisgICAgICAgIGZvciBlbXB0eV9saW5lcyBpbiAoRmFsc2UsIFRydWUsKToKKyAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICAgICAgY29ubi5yZXF1ZXN0KAorICAgICAgICAgICAgICAgICdQT1NUJywgJy8nLCBzZWxmLl9tYWtlX2JvZHkoZW1wdHlfbGluZXM9ZW1wdHlfbGluZXMpKQorCisgICAgICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorCisgICAgICAgICAgICAjIENvbnRlbnQtTGVuZ3RoIGFuZCBUcmFuc2Zlci1FbmNvZGluZyBTSE9VTEQgbm90IGJlIHNlbnQgaW4gdGhlCisgICAgICAgICAgICAjIHNhbWUgcmVxdWVzdAorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorCisgICAgZGVmIHRlc3RfZW1wdHlfYm9keShzZWxmKToKKyAgICAgICAgIyBaZXJvLWxlbmd0aCBpdGVyYWJsZSBzaG91bGQgYmUgdHJlYXRlZCBsaWtlIGFueSBvdGhlciBpdGVyYWJsZQorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICBjb25uLnJlcXVlc3QoJ1BPU1QnLCAnLycsICgpKQorICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBiIjBcclxuXHJcbiIpCisKKyAgICBkZWYgX21ha2VfYm9keShzZWxmLCBlbXB0eV9saW5lcz1GYWxzZSk6CisgICAgICAgIGxpbmVzID0gc2VsZi5leHBlY3RlZF9ib2R5LnNwbGl0KGInICcpCisgICAgICAgIGZvciBpZHgsIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKKyAgICAgICAgICAgICMgZm9yIHRlc3RpbmcgaGFuZGxpbmcgZW1wdHkgbGluZXMKKyAgICAgICAgICAgIGlmIGVtcHR5X2xpbmVzIGFuZCBpZHggJSAyOgorICAgICAgICAgICAgICAgIHlpZWxkIGInJworICAgICAgICAgICAgaWYgaWR4IDwgbGVuKGxpbmVzKSAtIDE6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZSArIGInICcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIF9wYXJzZV9yZXF1ZXN0KHNlbGYsIGRhdGEpOgorICAgICAgICBsaW5lcyA9IGRhdGEuc3BsaXQoYidcclxuJykKKyAgICAgICAgcmVxdWVzdCA9IGxpbmVzWzBdCisgICAgICAgIGhlYWRlcnMgPSB7fQorICAgICAgICBuID0gMQorICAgICAgICB3aGlsZSBuIDwgbGVuKGxpbmVzKSBhbmQgbGVuKGxpbmVzW25dKSA+IDA6CisgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmVzW25dLnNwbGl0KGInOicpCisgICAgICAgICAgICBrZXkgPSBrZXkuZGVjb2RlKCdsYXRpbi0xJykuc3RyaXAoKQorICAgICAgICAgICAgaGVhZGVyc1trZXldID0gdmFsLmRlY29kZSgnbGF0aW4tMScpLnN0cmlwKCkKKyAgICAgICAgICAgIG4gKz0gMQorCisgICAgICAgIHJldHVybiByZXF1ZXN0LCBoZWFkZXJzLCBiJ1xyXG4nLmpvaW4obGluZXNbbiArIDE6XSkKKworICAgIGRlZiBfcGFyc2VfY2h1bmtlZChzZWxmLCBkYXRhKToKKyAgICAgICAgYm9keSA9IFtdCisgICAgICAgIHRyYWlsZXJzID0ge30KKyAgICAgICAgbiA9IDAKKyAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KGInXHJcbicpCisgICAgICAgICMgcGFyc2UgYm9keQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgc2l6ZSwgY2h1bmsgPSBsaW5lc1tuOm4rMl0KKyAgICAgICAgICAgIHNpemUgPSBpbnQoc2l6ZSwgMTYpCisKKyAgICAgICAgICAgIGlmIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICBuICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihjaHVuaykpCisgICAgICAgICAgICBib2R5LmFwcGVuZChjaHVuaykKKworICAgICAgICAgICAgbiArPSAyCisgICAgICAgICAgICAjIHdlIC9zaG91bGQvIGhpdCB0aGUgZW5kIGNodW5rLCBidXQgY2hlY2sgYWdhaW5zdCB0aGUgc2l6ZSBvZgorICAgICAgICAgICAgIyBsaW5lcyBzbyB3ZSdyZSBub3Qgc3R1Y2sgaW4gYW4gaW5maW5pdGUgbG9vcCBzaG91bGQgd2UgZ2V0CisgICAgICAgICAgICAjIG1hbGZvcm1lZCBkYXRhCisgICAgICAgICAgICBpZiBuID4gbGVuKGxpbmVzKToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHJldHVybiBiJycuam9pbihib2R5KQorCisKIGNsYXNzIEJhc2ljVGVzdChUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3RhdHVzX2xpbmVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgSFRUUCBzdGF0dXMgbGluZXMKQEAgLTU2NCw3ICs2OTIsOSBAQAogCiAgICAgZGVmIHRlc3Rfc2VuZF9maWxlKHNlbGYpOgogICAgICAgICBleHBlY3RlZCA9IChiJ0dFVCAvZm9vIEhUVFAvMS4xXHJcbkhvc3Q6IGV4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICAgICAgICAgYidBY2NlcHQtRW5jb2Rpbmc6IGlkZW50aXR5XHJcbkNvbnRlbnQtTGVuZ3RoOicpCisgICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG4nCisgICAgICAgICAgICAgICAgICAgIGInVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuJworICAgICAgICAgICAgICAgICAgICBiJ1xyXG4nKQogCiAgICAgICAgIHdpdGggb3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgYm9keToKICAgICAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKQEAgLTU5NCwxMSArNzI0LDExIEBACiAgICAgICAgICAgICB5aWVsZCBOb25lCiAgICAgICAgICAgICB5aWVsZCAnZGF0YV90d28nCiAKLSAgICAgICAgY2xhc3MgVXBkYXRpbmdGaWxlKCk6CisgICAgICAgIGNsYXNzIFVwZGF0aW5nRmlsZShpby5UZXh0SU9CYXNlKToKICAgICAgICAgICAgIG1vZGUgPSAncicKICAgICAgICAgICAgIGQgPSBkYXRhKCkKICAgICAgICAgICAgIGRlZiByZWFkKHNlbGYsIGJsb2Nrc2l6ZT0tMSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZC5fX25leHRfXygpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoc2VsZi5kKQogCiAgICAgICAgIGV4cGVjdGVkID0gYidkYXRhJwogCkBAIC05NzAsNiArMTEwMCw3IEBACiAKICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX3NlcnZlcikKICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRocmVhZC5qb2luLCBmbG9hdCgxKSkKICAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbigqc2Vydi5nZXRzb2NrbmFtZSgpKQogICAgICAgICBjb25uLnJlcXVlc3QoIkNPTk5FQ1QiLCAiZHVtbXk6MTIzNCIpCiAgICAgICAgIHJlc3BvbnNlID0gY29ubi5nZXRyZXNwb25zZSgpCkBAIC05ODMsNyArMTExNCw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXNwb25zZS5jbG9zZSgpCiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgICAgIHRocmVhZC5qb2luKCkKKyAgICAgICAgdGhyZWFkLmpvaW4oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYiJwcm94aWVkIGRhdGFcbiIpCiAKIGNsYXNzIEV4dGVuZGVkUmVhZFRlc3QoVGVzdENhc2UpOgpAQCAtMTUxMSwxNCArMTY0MiwxNiBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKToKICAgICAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy8nKQogICAgICAgICAjIFNhbWUgd2l0aCBleHBsaWNpdCBjaGVja19ob3N0bmFtZT1UcnVlCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgIyBXaXRoIGNoZWNrX2hvc3RuYW1lPUZhbHNlLCB0aGUgbWlzbWF0Y2hpbmcgaXMgaWdub3JlZAogICAgICAgICBjb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKLSAgICAgICAgaCA9IGNsaWVudC5IVFRQU0Nvbm5lY3Rpb24oJ2xvY2FsaG9zdCcsIHNlcnZlci5wb3J0LCBjb250ZXh0PWNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPUZhbHNlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9RmFsc2UpCiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgcmVzcC5jbG9zZSgpCkBAIC0xNTM1LDggKzE2NjgsOSBAQAogICAgICAgICBoLmNsb3NlKCkKICAgICAgICAgIyBQYXNzaW5nIGNoZWNrX2hvc3RuYW1lIHRvIEhUVFBTQ29ubmVjdGlvbiBzaG91bGQgb3ZlcnJpZGUgdGhlCiAgICAgICAgICMgY29udGV4dCdzIHNldHRpbmcuCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1UcnVlKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKIApAQCAtMTU3NSw2ICsxNzA5LDI2IEBACiAgICAgICAgIG1lc3NhZ2UgPSBjbGllbnQucGFyc2VfaGVhZGVycyhmKQogICAgICAgICByZXR1cm4gbWVzc2FnZSwgZgogCisgICAgZGVmIHRlc3RfbGlzdF9ib2R5KHNlbGYpOgorICAgICAgICAjIE5vdGUgdGhhdCBubyBjb250ZW50LWxlbmd0aCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgZm9yCisgICAgICAgICMgYW4gaXRlcmFibGUuICBUaGUgcmVxdWVzdCB3aWxsIGZhbGwgYmFjayB0byBzZW5kIGNodW5rZWQKKyAgICAgICAgIyB0cmFuc2ZlciBlbmNvZGluZy4KKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAoW2InZm9vJywgYidiYXInXSwgYiczXHJcbmZvb1xyXG4zXHJcbmJhclxyXG4wXHJcblxyXG4nKSwKKyAgICAgICAgICAgICgoYidmb28nLCBiJ2JhcicpLCBiJzNcclxuZm9vXHJcbjNcclxuYmFyXHJcbjBcclxuXHJcbicpLAorICAgICAgICApCisgICAgICAgIGZvciBib2R5LCBleHBlY3RlZCBpbiBjYXNlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJvZHkpOgorICAgICAgICAgICAgICAgIHNlbGYuY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICAgICAgICAgIHNlbGYuY29ubi5zb2NrID0gc2VsZi5zb2NrID0gRmFrZVNvY2tldCgnJykKKworICAgICAgICAgICAgICAgIHNlbGYuY29ubi5yZXF1ZXN0KCdQVVQnLCAnL3VybCcsIGJvZHkpCisgICAgICAgICAgICAgICAgbXNnLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NvbnRlbnQtVHlwZScsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdDb250ZW50LUxlbmd0aCcsIG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXQoJ1RyYW5zZmVyLUVuY29kaW5nJyksICdjaHVua2VkJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBmLnJlYWQoKSkKKwogICAgIGRlZiB0ZXN0X21hbnVhbF9jb250ZW50X2xlbmd0aChzZWxmKToKICAgICAgICAgIyBTZXQgYW4gaW5jb3JyZWN0IGNvbnRlbnQtbGVuZ3RoIHNvIHRoYXQgd2UgY2FuIHZlcmlmeSB0aGF0CiAgICAgICAgICMgaXQgd2lsbCBub3QgYmUgb3Zlci1yaWRkZW4gYnkgdGhlIGxpYnJhcnkuCkBAIC0xNjA4LDcgKzE3NjIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCI1IiwgbWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQogCi0gICAgZGVmIHRlc3RfZmlsZV9ib2R5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3RleHRfZmlsZV9ib2R5KHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQogICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3IikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImJvZHkiKQpAQCAtMTYxNyw4ICsxNzcxLDExIEBACiAgICAgICAgICAgICBtZXNzYWdlLCBmID0gc2VsZi5nZXRfaGVhZGVyc19hbmRfZnAoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGV4dC9wbGFpbiIsIG1lc3NhZ2UuZ2V0X2NvbnRlbnRfdHlwZSgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWVzc2FnZS5nZXRfY2hhcnNldCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNCIsIG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2JvZHknLCBmLnJlYWQoKSkKKyAgICAgICAgICAgICMgTm8gY29udGVudC1sZW5ndGggd2lsbCBiZSBkZXRlcm1pbmVkIGZvciBmaWxlczsgdGhlIGJvZHkKKyAgICAgICAgICAgICMgd2lsbCBiZSBzZW50IHVzaW5nIGNodW5rZWQgdHJhbnNmZXIgZW5jb2RpbmcgaW5zdGVhZC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJ0cmFuc2Zlci1lbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzRcclxuYm9keVxyXG4wXHJcblxyXG4nLCBmLnJlYWQoKSkKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9maWxlX2JvZHkoc2VsZik6CiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCkBAIC0xNjI5LDggKzE3ODYsOSBAQAogICAgICAgICAgICAgbWVzc2FnZSwgZiA9IHNlbGYuZ2V0X2hlYWRlcnNfYW5kX2ZwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQvcGxhaW4iLCBtZXNzYWdlLmdldF9jb250ZW50X3R5cGUoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0X2NoYXJzZXQoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjUiLCBtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5XHhjMScsIGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiY2h1bmtlZCIsIG1lc3NhZ2UuZ2V0KCJUcmFuc2Zlci1FbmNvZGluZyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiQ29udGVudC1MZW5ndGgiLCBtZXNzYWdlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJzVcclxuYm9keVx4YzFcclxuMFxyXG5cclxuJywgZi5yZWFkKCkpCiAKIAogY2xhc3MgSFRUUFJlc3BvbnNlVGVzdChUZXN0Q2FzZSk6CkBAIC0xNzQxLDEzICsxODk5LDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbignaGVhZGVyOiB7fScuZm9ybWF0KGV4cGVjdGVkX2hlYWRlciksIGxpbmVzKQogCiAKLUBzdXBwb3J0LnJlYXBfdGhyZWFkcwotZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlYWRlclRlc3RzLCBPZmZsaW5lVGVzdCwgQmFzaWNUZXN0LCBUaW1lb3V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQZXJzaXN0ZW5jZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSFRUUFNUZXN0LCBSZXF1ZXN0Qm9keVRlc3QsIFNvdXJjZUFkZHJlc3NUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBSZXNwb25zZVRlc3QsIEV4dGVuZGVkUmVhZFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5kZWRSZWFkVGVzdENodW5rZWQsIFR1bm5lbFRlc3RzKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IDcyZTZlMDguLjRlOTMxNDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtMTgsNiArMTgsNyBAQAogaW1wb3J0IGh0bWwKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGltZQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTE4OSw3ICsxOTAsNyBAQAogICAgICAgICByZXMgPSBzZWxmLmNvbi5nZXRyZXNwb25zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgSFRUUFN0YXR1cy5OT1RfSU1QTEVNRU5URUQpCiAKLSAgICBkZWYgdGVzdF9oZWFkX2tlZXBfYWxpdmUoc2VsZik6CisgICAgZGVmIHRlc3RfaGVhZGVyX2tlZXBfYWxpdmUoc2VsZik6CiAgICAgICAgIHNlbGYuY29uLl9odHRwX3Zzbl9zdHIgPSAnSFRUUC8xLjEnCiAgICAgICAgIHNlbGYuY29uLnB1dHJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgc2VsZi5jb24ucHV0aGVhZGVyKCdDb25uZWN0aW9uJywgJ2tlZXAtYWxpdmUnKQpAQCAtMzY5LDYgKzM3MCw4IEBACiAgICAgICAgIHJldHVybiBib2R5CiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA1KQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCisgICAgICAgICAgICAgICAgICAgICAndW5kZWNvZGFibGUgbmFtZSBjYW5ub3QgYmUgZGVjb2RlZCBvbiB3aW4zMicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc3VwcG9ydC5URVNURk5fVU5ERUNPREFCTEUnKQogICAgIGRlZiB0ZXN0X3VuZGVjb2RhYmxlX2ZpbGVuYW1lKHNlbGYpOgpAQCAtMzg4LDcgKzM5MSw3IEBACiAgICAgICAgIHF1b3RlZG5hbWUgPSB1cmxsaWIucGFyc2UucXVvdGUoZmlsZW5hbWUsIGVycm9ycz0nc3Vycm9nYXRlcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCdocmVmPSIlcyInICUgcXVvdGVkbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpLCBib2R5KQotICAgICAgICBzZWxmLmFzc2VydEluKCgnPiVzPCcgJSBodG1sLmVzY2FwZShmaWxlbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkpCiAgICAgICAgICAgICAgICAgICAgICAgLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKSwgYm9keSkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJyArIHF1b3RlZG5hbWUpCiAgICAgICAgIHNlbGYuY2hlY2tfc3RhdHVzX2FuZF9yZWFzb24ocmVzcG9uc2UsIEhUVFBTdGF0dXMuT0ssCkBAIC00NjYsNiArNDY5LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2UuZ2V0aGVhZGVyKCJMb2NhdGlvbiIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVtcGRpcl9uYW1lICsgIi8/aGk9MSIpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAnPHRlc3QmPi50eHQnCisgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3BlbihmdWxscGF0aCwgJ3cnKS5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ0NhbiBub3QgY3JlYXRlIGZpbGUgJXMgb24gY3VycmVudCBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXN0ZW0nICUgZmlsZW5hbWUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnJlcXVlc3Qoc2VsZi5iYXNlX3VybCArICcvJykKKyAgICAgICAgICAgIGJvZHkgPSBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LKQorICAgICAgICAgICAgZW5jID0gcmVzcG9uc2UuaGVhZGVycy5nZXRfY29udGVudF9jaGFyc2V0KCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVubGluayhmdWxscGF0aCkgICMgYXZvaWQgYWZmZWN0aW5nIHRlc3RfdW5kZWNvZGFibGVfZmlsZW5hbWUKKworICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShlbmMpCisgICAgICAgIGh0bWxfdGV4dCA9ICc+JXM8JyAlIGh0bWwuZXNjYXBlKGZpbGVuYW1lLCBxdW90ZT1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihodG1sX3RleHQuZW5jb2RlKGVuYyksIGJvZHkpCisKIAogY2dpX2ZpbGUxID0gIiIiXAogIyElcwpAQCAtOTE2LDcgKzk0MCw3IEBACiAgICAgICAgICMgSXNzdWUgIzY3OTE6IHNhbWUgZm9yIGhlYWRlcnMKICAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKICAgICAgICAgICAgIGInR0VUIC8gSFRUUC8xLjFcclxuWC1Gb286IGJhcicgKyBiJ3InICogNjU1MzcgKyBiJ1xyXG5cclxuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDAwIExpbmUgdG9vIGxvbmdcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbMF0sIGInSFRUUC8xLjEgNDMxIExpbmUgdG9vIGxvbmdcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKQEAgLTkyNyw2ICs5NTEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmhhbmRsZXIuZ2V0X2NhbGxlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIucmVxdWVzdGxpbmUsICdHRVQgLyBIVFRQLzEuMScpCiAKKyAgICBkZWYgdGVzdF9odG1sX2VzY2FwZV9vbl9lcnJvcihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5zZW5kX3R5cGljYWxfcmVxdWVzdCgKKyAgICAgICAgICAgIGInPHNjcmlwdD5hbGVydCgiaGVsbG8iKTwvc2NyaXB0PiAvIEhUVFAvMS4xJykKKyAgICAgICAgcmVzdWx0ID0gYicnLmpvaW4ocmVzdWx0KQorICAgICAgICB0ZXh0ID0gJzxzY3JpcHQ+YWxlcnQoImhlbGxvIik8L3NjcmlwdD4nCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaHRtbC5lc2NhcGUodGV4dCwgcXVvdGU9RmFsc2UpLmVuY29kZSgnYXNjaWknKSwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3RfY2xvc2VfY29ubmVjdGlvbihzZWxmKToKICAgICAgICAgIyBoYW5kbGVfb25lX3JlcXVlc3QoKSBzaG91bGQgYmUgcmVwZWF0ZWRseSBjYWxsZWQgdW50aWwKICAgICAgICAgIyBpdCBzZXRzIGNsb3NlX2Nvbm5lY3Rpb24KQEAgLTk0Miw2ICs5NzMsMTkgQEAKICAgICAgICAgc2VsZi5oYW5kbGVyLmhhbmRsZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGNsb3NlX3ZhbHVlcykKIAorICAgIGRlZiB0ZXN0X2RhdGVfdGltZV9zdHJpbmcoc2VsZik6CisgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCisgICAgICAgICMgdGhpcyBpcyB0aGUgb2xkIGNvZGUgdGhhdCBmb3JtYXRzIHRoZSB0aW1lc3RhbXAKKyAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaGgsIG1tLCBzcywgd2QsIHksIHogPSB0aW1lLmdtdGltZShub3cpCisgICAgICAgIGV4cGVjdGVkID0gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlICgKKyAgICAgICAgICAgIHNlbGYuaGFuZGxlci53ZWVrZGF5bmFtZVt3ZF0sCisgICAgICAgICAgICBkYXksCisgICAgICAgICAgICBzZWxmLmhhbmRsZXIubW9udGhuYW1lW21vbnRoXSwKKyAgICAgICAgICAgIHllYXIsIGhoLCBtbSwgc3MKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaGFuZGxlci5kYXRlX3RpbWVfc3RyaW5nKHRpbWVzdGFtcD1ub3cpLCBleHBlY3RlZCkKKworCiBjbGFzcyBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiIFRlc3QgdXJsIHBhcnNpbmcgIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pZGxlLnB5IGIvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CmluZGV4IDE0MWU4OWUuLmRhMDVkYTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lkbGUucHkKQEAgLTEsMTYgKzEsMjMgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X21vZHVsZQogCi0jIFNraXAgdGVzdCBpZiBfdGhyZWFkIG9yIF90a2ludGVyIHdhc24ndCBidWlsdCBvciBpZGxlbGliIHdhcyBkZWxldGVkLgorIyBTa2lwIHRlc3QgaWYgX3RocmVhZCBvciBfdGtpbnRlciB3YXNuJ3QgYnVpbHQsIGlmIGlkbGVsaWIgaXMgbWlzc2luZywKKyMgb3IgaWYgdGNsL3RrIGlzIG5vdCB0aGUgOC41KyBuZWVkZWQgZm9yIHR0ayB3aWRnZXRzLgogaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykgICMgaW1wb3J0ZWQgYnkgUHlTaGVsbCwgaW1wb3J0cyBfdGhyZWFkCiB0ayA9IGltcG9ydF9tb2R1bGUoJ3RraW50ZXInKSAgIyBpbXBvcnRzIF90a2ludGVyCi1pZGxldGVzdCA9IGltcG9ydF9tb2R1bGUoJ2lkbGVsaWIuaWRsZV90ZXN0JykKK2lmIHRrLlRrVmVyc2lvbiA8IDguNToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiSURMRSByZXF1aXJlcyB0ayA4LjUgb3IgbGF0ZXIuIikKK2lkbGVsaWIgPSBpbXBvcnRfbW9kdWxlKCdpZGxlbGliJykKIAotIyBXaXRob3V0IHRlc3RfbWFpbiBwcmVzZW50LCByZWdydGVzdC5ydW50ZXN0X2lubmVyIChsaW5lMTIxOSkgY2FsbHMKLSMgdW5pdHRlc3QuVGVzdExvYWRlcigpLmxvYWRUZXN0c0Zyb21Nb2R1bGUodGhpc19tb2R1bGUpIHdoaWNoIGNhbGxzCi0jIGxvYWRfdGVzdHMoKSBpZiBpdCBmaW5kcyBpdC4gKFVuaXR0ZXN0Lm1haW4gZG9lcyB0aGUgc2FtZS4pCi1sb2FkX3Rlc3RzID0gaWRsZXRlc3QubG9hZF90ZXN0cworIyBCZWZvcmUgdGVzdCBpbXBvcnRzLCB0ZWxsIElETEUgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGVudmlyb25tZW50LgoraWRsZWxpYi50ZXN0aW5nID0gVHJ1ZQorCisjIHVuaXR0ZXN0Lm1haW4gYW5kIHRlc3QubGlicmVncnRlc3QucnVudGVzdC5ydW50ZXN0X2lubmVyCisjIGNhbGwgbG9hZF90ZXN0cywgd2hlbiBwcmVzZW50LCB0byBkaXNjb3ZlciB0ZXN0cyB0byBydW4uCitmcm9tIGlkbGVsaWIuaWRsZV90ZXN0IGltcG9ydCBsb2FkX3Rlc3RzCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKyAgICB0ay5Ob0RlZmF1bHRSb290KCkKKyAgICB1bml0dGVzdC5tYWluKGV4aXQ9RmFsc2UpCisgICAgdGsuX3N1cHBvcnRfZGVmYXVsdF9yb290ID0gMQorICAgIHRrLl9kZWZhdWx0X3Jvb3QgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKaW5kZXggMDcxNTdmNS4uNjNhYzgxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQpAQCAtNzcsOSArNzcsOSBAQAogCiAgICAgICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKICAgICAgICAgICAgIG5ld3NvY2tldCwgZnJvbWFkZHIgPSBzZWxmLnNvY2tldC5hY2NlcHQoKQotICAgICAgICAgICAgY29ubnN0cmVhbSA9IHNzbC53cmFwX3NvY2tldChuZXdzb2NrZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgY29ubnN0cmVhbSA9IGNvbnRleHQud3JhcF9zb2NrZXQobmV3c29ja2V0LCBzZXJ2ZXJfc2lkZT1UcnVlKQogICAgICAgICAgICAgcmV0dXJuIGNvbm5zdHJlYW0sIGZyb21hZGRyCiAKICAgICBJTUFQNF9TU0wgPSBpbWFwbGliLklNQVA0X1NTTApAQCAtMjQzLDYgKzI0Myw1NSBAQAogICAgICAgICAgICAgY2xpZW50LnNodXRkb3duKCkKIAogICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9icmFja2V0X2ZsYWdzKHNlbGYpOgorCisgICAgICAgICMgVGhpcyB2aW9sYXRlcyBSRkMgMzUwMSwgd2hpY2ggZGlzYWxsb3dzICddJyBjaGFyYWN0ZXJzIGluIHRhZyBuYW1lcywKKyAgICAgICAgIyBidXQgaW1hcGxpYiBoYXMgYWxsb3dlZCBwcm9kdWNpbmcgc3VjaCB0YWdzIGZvcmV2ZXIsIG90aGVyIHByb2dyYW1zCisgICAgICAgICMgYWxzbyBwcm9kdWNlIHRoZW0gKGVnOiBPdGhlckluYm94J3MgT3JnYW5pemVyIGFwcCBhcyBvZiAyMDE0MDcxNiksCisgICAgICAgICMgYW5kIEdtYWlsLCBmb3IgZXhhbXBsZSwgYWNjZXB0cyB0aGVtIGFuZCBwcm9kdWNlcyB0aGVtLiAgU28gd2UKKyAgICAgICAgIyBzdXBwb3J0IHRoZW0uICBTZWUgaXNzdWUgIzIxODE1LgorCisgICAgICAgIGNsYXNzIEJyYWNrZXRGbGFnSGFuZGxlcihTaW1wbGVJTUFQSGFuZGxlcik6CisKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mbGFncyA9IFsnQW5zd2VyZWQnLCAnRmxhZ2dlZCcsICdEZWxldGVkJywgJ1NlZW4nLCAnRHJhZnQnXQorICAgICAgICAgICAgICAgIHN1cGVyKCkuaGFuZGxlKCkKKworICAgICAgICAgICAgZGVmIGNtZF9BVVRIRU5USUNBVEUoc2VsZiwgdGFnLCBhcmdzKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RleHRsaW5lKCcrJykKKyAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5yZXNwb25zZSA9IHlpZWxkCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnRkFLRUFVVEggc3VjY2Vzc2Z1bCcpCisKKyAgICAgICAgICAgIGRlZiBjbWRfU0VMRUNUKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgZmxhZ19tc2cgPSAnIFxcJy5qb2luKHNlbGYuZmxhZ3MpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKCgnKiBGTEFHUyAoJXMpJyAlIGZsYWdfbXNnKS5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAyIEVYSVNUUycpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKGInKiAwIFJFQ0VOVCcpCisgICAgICAgICAgICAgICAgbXNnID0gKCcqIE9LIFtQRVJNQU5FTlRGTEFHUyAlcyBcXCopXSBGbGFncyBwZXJtaXR0ZWQuJworICAgICAgICAgICAgICAgICAgICAgICAgJSBmbGFnX21zZykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUobXNnLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdbUkVBRC1XUklURV0gU0VMRUNUIGNvbXBsZXRlZC4nKQorCisgICAgICAgICAgICBkZWYgY21kX1NUT1JFKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgbmV3X2ZsYWdzID0gYXJnc1syXS5zdHJpcCgnKCcpLnN0cmlwKCcpJykuc3BsaXQoKQorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MuZXh0ZW5kKG5ld19mbGFncykKKyAgICAgICAgICAgICAgICBmbGFnc19tc2cgPSAnKEZMQUdTICglcykpJyAlICcgXFwnLmpvaW4oc2VsZi5mbGFncykKKyAgICAgICAgICAgICAgICBtc2cgPSAnKiAlcyBGRVRDSCAlcycgJSAoYXJnc1swXSwgZmxhZ3NfbXNnKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShtc2cuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ1NUT1JFIGNvbXBsZXRlZC4nKQorCisgICAgICAgIHdpdGggc2VsZi5yZWFwZWRfcGFpcihCcmFja2V0RmxhZ0hhbmRsZXIpIGFzIChzZXJ2ZXIsIGNsaWVudCk6CisgICAgICAgICAgICBjb2RlLCBkYXRhID0gY2xpZW50LmF1dGhlbnRpY2F0ZSgnTVlBVVRIJywgbGFtYmRhIHg6IGInZmFrZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUsICdPSycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5yZXNwb25zZSwgYidabUZyWlE9PVxyXG4nKQorICAgICAgICAgICAgY2xpZW50LnNlbGVjdCgndGVzdCcpCisgICAgICAgICAgICB0eXAsIFtkYXRhXSA9IGNsaWVudC5zdG9yZShiJzEnLCAiK0ZMQUdTIiwgIlt0ZXN0XSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInW3Rlc3RdJywgZGF0YSkKKyAgICAgICAgICAgIGNsaWVudC5zZWxlY3QoJ3Rlc3QnKQorICAgICAgICAgICAgdHlwLCBbZGF0YV0gPSBjbGllbnQucmVzcG9uc2UoJ1BFUk1BTkVOVEZMQUdTJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidbdGVzdF0nLCBkYXRhKQorCisgICAgQHJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0X2lzc3VlNTk0OShzZWxmKToKIAogICAgICAgICBjbGFzcyBFT0ZIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CkBAIC01ODksOCArNjM4LDEwIEBACiAKICAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfY2VydGZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6Ci0gICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBjZXJ0ZmlsZT1DRVJURklMRSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUpCisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKIAogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKICAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKaW5kZXggYjU0ZGFmOC4uNDc2YmE5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbWdoZHIucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgaW1naGRyCiBpbXBvcnQgaW8KIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIFRFU1RGTiwgdW5saW5rCkBAIC00OSw2ICs1MCwxMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbWdoZHIud2hhdChOb25lLCBkYXRhKSwgZXhwZWN0ZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltZ2hkci53aGF0KE5vbmUsIGJ5dGVhcnJheShkYXRhKSksIGV4cGVjdGVkKQogCisgICAgZGVmIHRlc3RfcGF0aGxpa2VfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZvciBmaWxlbmFtZSwgZXhwZWN0ZWQgaW4gVEVTVF9GSUxFUzoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbmRmaWxlKGZpbGVuYW1lLCBzdWJkaXI9J2ltZ2hkcmRhdGEnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1naGRyLndoYXQocGF0aGxpYi5QYXRoKGZpbGVuYW1lKSksIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfdGVzdChzZWxmKToKICAgICAgICAgZGVmIHRlc3RfanVtYm8oaCwgZmlsZSk6CiAgICAgICAgICAgICBpZiBoLnN0YXJ0c3dpdGgoYidlZ2dzJyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CmluZGV4IGVlOWVlMWEuLjRlY2UzNjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wLnB5CkBAIC02LDEzICs2LDEyIEBACiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgaW1wb3J0IGltcAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKaW5kZXggMWUzMzI3NC4uNzYwOTA4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQvX19pbml0X18ucHkKQEAgLTY5LDYgKzY5LDE4IEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB1bmxvYWQoVEVTVEZOKQogCisgICAgZGVmIHRlc3RfaW1wb3J0X3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IHNvbWV0aGluZ190aGF0X3Nob3VsZF9ub3RfZXhpc3RfYW55d2hlcmUKKworICAgIGRlZiB0ZXN0X2Zyb21faW1wb3J0X21pc3NpbmdfbW9kdWxlX3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgZnJvbSBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlIGltcG9ydCBibGFoCisKKyAgICBkZWYgdGVzdF9mcm9tX2ltcG9ydF9taXNzaW5nX2F0dHJfcmFpc2VzX0ltcG9ydEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlCisKICAgICBkZWYgdGVzdF9jYXNlX3NlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICAjIEJyaWVmIGRpZ3Jlc3Npb24gdG8gdGVzdCB0aGF0IGltcG9ydCBpcyBjYXNlLXNlbnNpdGl2ZTogIGlmIHdlIGdvdAogICAgICAgICAjIHRoaXMgZmFyLCB3ZSBrbm93IGZvciBzdXJlIHRoYXQgInJhbmRvbSIgZXhpc3RzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggYzExMmNhNy4uMGRkOWM4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXBfZXh0ZXJuYWwKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTksOCArOCw2IEBACiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiAKLSMgWFhYIGZpbmRfc3BlYyB0ZXN0cwotCiBAdW5pdHRlc3Quc2tpcElmKHV0aWwuRVhURU5TSU9OUy5maWxlbmFtZSBpcyBOb25lLCAnX3Rlc3RjYXBpIG5vdCBhdmFpbGFibGUnKQogQHV0aWwuY2FzZV9pbnNlbnNpdGl2ZV90ZXN0cwogY2xhc3MgRXh0ZW5zaW9uTW9kdWxlQ2FzZVNlbnNpdGl2aXR5VGVzdCh1dGlsLkNBU0VPS1Rlc3RCYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCA3MWJmNjdmLi5jOWI0YTM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CkBAIC02LDcgKzYsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIAotIyBYWFggZmluZF9zcGVjIHRlc3RzCiAKIGNsYXNzIEZpbmRlclRlc3RzKGFiYy5GaW5kZXJUZXN0cyk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQppbmRleCA4ZjRiOGJiLi5hNGI1YTY0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0yLDggKzIsNiBAQAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCi1pbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCA2MDNjN2Q3Li4yOWVjZmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CkBAIC0zLDggKzMsNiBAQAogCiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCi0KLWltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQKIGltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKaW5kZXggYzdkM2EyYS4uN2Y2NDU0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpAQCAtNSw2ICs1LDcgQEAKIAogIiIiCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSAuLiBpbXBvcnQgdXRpbAogCiAKQEAgLTMzLDMxICszNCw1MCBAQAogCiAgICAgIiIiCiAKLSAgICBkZWYgdGVzdF91c2luZ19fX3BhY2thZ2VfXyhzZWxmKToKLSAgICAgICAgIyBbX19wYWNrYWdlX19dCisgICAgZGVmIGltcG9ydF9tb2R1bGUoc2VsZiwgZ2xvYmFsc18pOgogICAgICAgICB3aXRoIHNlbGYubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLmZha2UnKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgogICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnLmZha2UnKQogICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz17J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJ30sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0PVsnYXR0ciddLCBsZXZlbD0yKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHNfLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisgICAgZGVmIHRlc3RfdXNpbmdfX19wYWNrYWdlX18oc2VsZik6CisgICAgICAgICMgW19fcGFja2FnZV9fXQorICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3BhY2thZ2VfXyc6ICdwa2cuZmFrZSd9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCiAKLSAgICBkZWYgdGVzdF91c2luZ19fX25hbWVfXyhzZWxmLCBwYWNrYWdlX2FzX05vbmU9RmFsc2UpOgorICAgIGRlZiB0ZXN0X3VzaW5nX19fbmFtZV9fKHNlbGYpOgogICAgICAgICAjIFtfX25hbWVfX10KLSAgICAgICAgZ2xvYmFsc18gPSB7J19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW119Ci0gICAgICAgIGlmIHBhY2thZ2VfYXNfTm9uZToKLSAgICAgICAgICAgIGdsb2JhbHNfWydfX3BhY2thZ2VfXyddID0gTm9uZQotICAgICAgICB3aXRoIHNlbGYubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLmZha2UnKSBhcyBpbXBvcnRlcjoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygncGtnLmZha2UnKQotICAgICAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuX19pbXBvcnRfXygnJywgZ2xvYmFscz0gZ2xvYmFsc18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19uYW1lX18nOiAncGtnLmZha2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYXRoX18nOiBbXX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3dhcm5fd2hlbl91c2luZ19fX25hbWVfXyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKEltcG9ydFdhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19uYW1lX18nOiAncGtnLmZha2UnLCAnX19wYXRoX18nOiBbXX0pCiAKICAgICBkZWYgdGVzdF9Ob25lX2FzX19fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICAjIFtOb25lXQotICAgICAgICBzZWxmLnRlc3RfdXNpbmdfX19uYW1lX18ocGFja2FnZV9hc19Ob25lPVRydWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7CisgICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW10sICdfX3BhY2thZ2VfXyc6IE5vbmUgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfc3BlY19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyBpc24ndCBkZWZpbmVkLCBmYWxsIGJhY2sgb24gX19zcGVjX18ucGFyZW50LgorICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3NwZWNfXyc6IEZha2VTcGVjKCdwa2cuZmFrZScpfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQorCisgICAgZGVmIHRlc3Rfd2Fybl93aGVuX3BhY2thZ2VfYW5kX3NwZWNfZGlzYWdyZWUoc2VsZik6CisgICAgICAgICMgUmFpc2UgYW4gSW1wb3J0V2FybmluZyBpZiBfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhJbXBvcnRXYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuaW1wb3J0X21vZHVsZSh7J19fcGFja2FnZV9fJzogJ3BrZy5mYWtlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fc3BlY19fJzogRmFrZVNwZWMoJ3BrZy5mYWtlZmFrZScpfSkKIAogICAgIGRlZiB0ZXN0X2JhZF9fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICBnbG9iYWxzID0geydfX3BhY2thZ2VfXyc6ICc8bm90IHJlYWw+J30KQEAgLTcwLDYgKzkwLDExIEBACiAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJycsIGdsb2JhbHMsIHt9LCBbJ3JlbGltcG9ydCddLCAxKQogCiAKK2NsYXNzIEZha2VTcGVjOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorCisKIGNsYXNzIFVzaW5nX19wYWNrYWdlX19QRVAzMDIoVXNpbmdfX3BhY2thZ2VfXyk6CiAgICAgbW9ja19tb2R1bGVzID0gdXRpbC5tb2NrX21vZHVsZXMKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKaW5kZXggNzA2OWQ5ZS4uYTdiZjI3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CkBAIC00Myw2ICs0MywxMCBAQAogICAgICIiIlRlc3QgQVBJLXNwZWNpZmljIGRldGFpbHMgZm9yIF9faW1wb3J0X18gKGUuZy4gcmFpc2luZyB0aGUgcmlnaHQKICAgICBleGNlcHRpb24gd2hlbiBwYXNzaW5nIGluIGFuIGludCBmb3IgdGhlIG1vZHVsZSBuYW1lKS4iIiIKIAorICAgIGRlZiB0ZXN0X3JhaXNlc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdzb21lIG1vZHVsZSB0aGF0IGRvZXMgbm90IGV4aXN0JykKKwogICAgIGRlZiB0ZXN0X25hbWVfcmVxdWlyZXNfcnBhcml0aW9uKHNlbGYpOgogICAgICAgICAjIFJhaXNlIFR5cGVFcnJvciBpZiBhIG5vbi1zdHJpbmcgaXMgcGFzc2VkIGluIGZvciB0aGUgbW9kdWxlIG5hbWUuCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQppbmRleCA4MDQ1NDY1Li4xNDY0MDAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CkBAIC03MywxNiArNzMsMTYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5tb2R1bGUuX19uYW1lX18sICdwa2cubW9kdWxlJykKIAotICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3BhY2thZ2VfdHJpZ2dlcnNfSW1wb3J0RXJyb3Ioc2VsZik6Ci0gICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIEltcG9ydEVycm9yIGJlY2F1c2UgaXQgdHJpZXMgdG8gaW1wb3J0Ci0gICAgICAgICMgYSBtb2R1bGUgd2hpY2ggZG9lc24ndCBleGlzdCwgdGhhdCBzaG91bGQgbGV0IHRoZSBJbXBvcnRFcnJvcgotICAgICAgICAjIHByb3BhZ2F0ZS4KKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9wYWNrYWdlX3RyaWdnZXJzX01vZHVsZU5vdEZvdW5kRXJyb3Ioc2VsZik6CisgICAgICAgICMgSWYgYSBzdWJtb2R1bGUgY2F1c2VzIGFuIE1vZHVsZU5vdEZvdW5kRXJyb3IgYmVjYXVzZSBpdCB0cmllcworICAgICAgICAjIHRvIGltcG9ydCBhIG1vZHVsZSB3aGljaCBkb2Vzbid0IGV4aXN0LCB0aGF0IHNob3VsZCBsZXQgdGhlCisgICAgICAgICMgTW9kdWxlTm90Rm91bmRFcnJvciBwcm9wYWdhdGUuCiAgICAgICAgIGRlZiBtb2R1bGVfY29kZSgpOgogICAgICAgICAgICAgaW1wb3J0IGlfZG9fbm90X2V4aXN0CiAgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZy5tb2QnOiBtb2R1bGVfY29kZX0pIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgZXhjOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTW9kdWxlTm90Rm91bmRFcnJvcikgYXMgZXhjOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3BrZycsIGZyb21saXN0PVsnbW9kJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaV9kb19ub3RfZXhpc3QnLCBleGMuZXhjZXB0aW9uLm5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQppbmRleCAzNzU1Yjg0Li4yNDM5NjA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CkBAIC0xLDcgKzEsNiBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CmluZGV4IGIzMmE4NzYuLjdhYTI2YjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CkBAIC0xNiwxMSArMTYsMTQgQEAKIAogICAgICIiIlRlc3RzIGZvciBQYXRoRmluZGVyLiIiIgogCisgICAgZmluZCA9IE5vbmUKKyAgICBjaGVja19mb3VuZCA9IE5vbmUKKwogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgVGVzdCBOb25lIHJldHVybmVkIHVwb24gbm90IGZpbmRpbmcgYSBzdWl0YWJsZSBsb2FkZXIuCiAgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQobW9kdWxlKSkKIAogICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCkBAIC0zMCw4ICszMyw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZm91bmQoZm91bmQsIGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgJ3BhdGgnIGlzIHVzZWQgd2hlbiBzZXQuCkBAIC00MCw4ICs0Myw4IEBACiAgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2xpc3Qoc2VsZik6CiAgICAgICAgICMgQW4gZW1wdHkgbGlzdCBzaG91bGQgbm90IGNvdW50IGFzIGFza2luZyBmb3Igc3lzLnBhdGguCkBAIC01MCw3ICs1Myw3IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdtb2R1bGUnLCBbXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmZpbmQoJ21vZHVsZScsIFtdKSkKIAogICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCkBAIC02MCw4ICs2Myw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2hvb2tzPVtob29rXSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdLCBpbXBvcnRlcikKIApAQCAtNzMsNyArNzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhfZW50cnldKToKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CiAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdhbHdheXMnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ29zJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kKCdvcycpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhfZW50cnldKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbLTFdLmNhdGVnb3J5LCBJbXBvcnRXYXJuaW5nKSkKQEAgLTg1LDggKzg4LDggQEAKICAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfc3BlYyhtb2R1bGUpCiAgICAgICAgIGhvb2sgPSB1dGlsLm1vY2tfcGF0aF9ob29rKG9zLmdldGN3ZCgpLCBpbXBvcnRlcj1pbXBvcnRlcikKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtwYXRoXSwgcGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MuZ2V0Y3dkKCksIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQogCiAgICAgZGVmIHRlc3RfTm9uZV9vbl9zeXNfcGF0aChzZWxmKToKQEAgLTE4MiwxNSArMTg1LDUwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnd2hhdGV2ZXInKSkKIAogCitjbGFzcyBGaW5kTW9kdWxlVGVzdHMoRmluZGVyVGVzdHMpOgorICAgIGRlZiBmaW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgY2hlY2tfZm91bmQoc2VsZiwgZm91bmQsIGltcG9ydGVyKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmb3VuZCwgaW1wb3J0ZXIpCiAKIAotKEZyb3plbl9GaW5kZXJUZXN0cywKLSBTb3VyY2VfRmluZGVyVGVzdHMKLSApID0gdXRpbC50ZXN0X2JvdGgoRmluZGVyVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCisoRnJvemVuX0ZpbmRNb2R1bGVUZXN0cywKKyBTb3VyY2VfRmluZE1vZHVsZVRlc3RzCispID0gdXRpbC50ZXN0X2JvdGgoRmluZE1vZHVsZVRlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorCisKK2NsYXNzIEZpbmRTcGVjVGVzdHMoRmluZGVyVGVzdHMpOgorICAgIGRlZiBmaW5kKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGNoZWNrX2ZvdW5kKHNlbGYsIGZvdW5kLCBpbXBvcnRlcik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm91bmQubG9hZGVyLCBpbXBvcnRlcikKKworCisoRnJvemVuX0ZpbmRTcGVjVGVzdHMsCisgU291cmNlX0ZpbmRTcGVjVGVzdHMKKyApID0gdXRpbC50ZXN0X2JvdGgoRmluZFNwZWNUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKIAogCiBjbGFzcyBQYXRoRW50cnlGaW5kZXJUZXN0czoKIAorICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZhaWxpbmdfZmluZF9zcGVjKHNlbGYpOgorICAgICAgICAjIFBhdGhFbnRyeUZpbmRlciB3aXRoIGZpbmRfbW9kdWxlKCkgZGVmaW5lZCBzaG91bGQgd29yay4KKyAgICAgICAgIyBJc3N1ZSAjMjA3NjMuCisgICAgICAgIGNsYXNzIEZpbmRlcjoKKyAgICAgICAgICAgIHBhdGhfbG9jYXRpb24gPSAndGVzdF9maW5kZXJfd2l0aF9maW5kX21vZHVsZScKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBpZiBwYXRoICE9IHNlbGYucGF0aF9sb2NhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKworICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGZpbmRfbW9kdWxlKGZ1bGxuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtGaW5kZXIucGF0aF9sb2NhdGlvbl0rc3lzLnBhdGhbOl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcz1bRmluZGVyXSk6CisgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfc3BlYygnaW1wb3J0bGliJykKKwogICAgIGRlZiB0ZXN0X2ZpbmRlcl93aXRoX2ZhaWxpbmdfZmluZF9tb2R1bGUoc2VsZik6CiAgICAgICAgICMgUGF0aEVudHJ5RmluZGVyIHdpdGggZmluZF9tb2R1bGUoKSBkZWZpbmVkIHNob3VsZCB3b3JrLgogICAgICAgICAjIElzc3VlICMyMDc2My4KQEAgLTIwNyw3ICsyNDUsNyBAQAogCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bRmluZGVyLnBhdGhfbG9jYXRpb25dK3N5cy5wYXRoWzpdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfaG9va3M9W0ZpbmRlcl0pOgotICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ2ltcG9ydGxpYicpCisgICAgICAgICAgICBzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdpbXBvcnRsaWInKQogCiAKIChGcm96ZW5fUEVGVGVzdHMsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CmluZGV4IDNiYjgxOWYuLjhhOTVhMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CkBAIC0xLDcgKzEsOCBAQAogIiIiVGVzdCByZWxhdGl2ZSBpbXBvcnRzIChQRVAgMzI4KS4iIiIKIGZyb20gLi4gaW1wb3J0IHV0aWwKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKIAogY2xhc3MgUmVsYXRpdmVJbXBvcnRzOgogCkBAIC02NSw5ICs2NiwxMSBAQAogICAgICAgICAgICAgICAgIHVuY2FjaGVfbmFtZXMuYXBwZW5kKG5hbWVbOi1sZW4oJy5fX2luaXRfXycpXSkKICAgICAgICAgd2l0aCB1dGlsLm1vY2tfc3BlYygqY3JlYXRlKSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIGZvciBnbG9iYWxfIGluIGdsb2JhbHNfOgotICAgICAgICAgICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgqdW5jYWNoZV9uYW1lcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhnbG9iYWxfKQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgICAgICAgICBmb3IgZ2xvYmFsXyBpbiBnbG9iYWxzXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCp1bmNhY2hlX25hbWVzKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhnbG9iYWxfKQogCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9tb2R1bGUoc2VsZik6CkBAIC0yMDQsMTEgKzIwNywxOCBAQAogCiAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX2dsb2JhbHMoc2VsZik6CiAgICAgICAgICMgTm8gZ2xvYmFscyBmb3IgYSByZWxhdGl2ZSBpbXBvcnQgaXMgYW4gZXJyb3IuCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgotICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3N5cycsIGxldmVsPTEpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fcGFja2FnZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ2EnLCB7J19fcGFja2FnZV9fJzogJycsICdfX3NwZWNfXyc6IE5vbmV9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPTEpCiAKICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfbm9fcGFja2FnZV9leGlzdHNfYWJzb2x1dGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgeydfX3BhY2thZ2VfXyc6ICcnLCAnX19zcGVjX18nOiBOb25lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0xKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWJlMTFmLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3JlZ3J0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIiIiUnVuIFB5dGhvbidzIHN0YW5kYXJkIHRlc3Qgc3VpdGUgdXNpbmcgaW1wb3J0bGliLl9faW1wb3J0X18uCi0KLVRlc3RzIGtub3duIHRvIGZhaWwgYmVjYXVzZSBvZiBhc3N1bXB0aW9ucyB0aGF0IGltcG9ydGxpYiAocHJvcGVybHkpCi1pbnZhbGlkYXRlcyBhcmUgYXV0b21hdGljYWxseSBza2lwcGVkIGlmIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBpcyBydW4uCi1PdGhlcndpc2UgYWxsIGNvbW1hbmQtbGluZSBvcHRpb25zIHZhbGlkIGZvciB0ZXN0LnJlZ3J0ZXN0IGFyZSBhbHNvIHZhbGlkIGZvcgotdGhpcyBzY3JpcHQuCi0KLSIiIgotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IHN5cwotZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0bGliLl9faW1wb3J0X18KLSAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCi0KLSAgICByZWdydGVzdC5tYWluKHF1aWV0PVRydWUsIHZlcmJvc2UyPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQppbmRleCAzNGI4NmNkLi4xMmNlMGNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTUsNyArNSw2IEBACiBtYWNoaW5lcnkgPSB1dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi5tYWNoaW5lcnknKQogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCBhcyB0ZXN0X3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CmluZGV4IDczZjRjNjIuLmExNTExNDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CkBAIC0yMTcsNyArMjE3LDcgQEAKICAgICAgICAgICAgICMgUEVQIDMwMgogICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKSAjIFhYWAorICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgIyBTYW5pdHkgY2hlY2tzLgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19jYWNoZWRfXywgY29tcGlsZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC54LCA1KQpAQCAtMjQ1LDEyICsyNDUsNyBAQAogY2xhc3MgQmFkQnl0ZWNvZGVUZXN0OgogCiAgICAgZGVmIGltcG9ydF8oc2VsZiwgZmlsZSwgbW9kdWxlX25hbWUpOgotICAgICAgICBsb2FkZXIgPSBzZWxmLmxvYWRlcihtb2R1bGVfbmFtZSwgZmlsZSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAjIFhYWCBDaGFuZ2UgdG8gdXNlIGV4ZWNfbW9kdWxlKCkuCi0gICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUobW9kdWxlX25hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgbWFuaXB1bGF0ZV9ieXRlY29kZShzZWxmLCBuYW1lLCBtYXBwaW5nLCBtYW5pcHVsYXRvciwgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQppbmRleCBlNmEyNDE1Li43OTVkNDM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CkBAIC0xNiwxMCArMTYsMTkgQEAKICAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX3NwZWMnKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfbGVnYWN5KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX3NwZWMnKSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZ19sZWdhY3koc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkoJycpLCAnZmluZF9tb2R1bGUnKSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKaW5kZXggMWUwNzcxYi4uOTgwODU1ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBpbXBvcnRsaWIudXRpbAogaW1wb3J0IHJlCi1pbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKICMgQmVjYXVzZSBzeXMucGF0aCBnZXRzIGVzc2VudGlhbGx5IGJsYW5rZWQsIG5lZWQgdG8gaGF2ZSB1bmljb2RlZGF0YSBhbHJlYWR5CiAjIGltcG9ydGVkIGZvciB0aGUgcGFyc2VyIHRvIHVzZS4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKaW5kZXggZDRiZjkxNS4uYzg2MjQ4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTIwNyw2ICsyMDcsMTAgQEAKIAogICAgIFNQTElUID0gbWFrZV9hYmNfc3ViY2xhc3NlcyhMb2FkZXIpCiAKKyAgICBkZWYgdGVzdF9jcmVhdGVfbW9kdWxlKHNlbGYpOgorICAgICAgICBzcGVjID0gJ2Egc3BlYycKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5pbnMuY3JlYXRlX21vZHVsZShzcGVjKSkKKwogICAgIGRlZiB0ZXN0X2xvYWRfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgIHNlbGYuaW5zLmxvYWRfbW9kdWxlKCdzb21ldGhpbmcnKQpAQCAtNTE5LDYgKzUyMywxMiBAQAogICAgICAgICBzdXBwb3J0LnVubG9hZChzZWxmLm1vZHVsZV9uYW1lKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxvYWQsIHNlbGYubW9kdWxlX25hbWUpCiAKKyAgICBkZWYgbG9hZChzZWxmLCBsb2FkZXIpOgorICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9sb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwgbG9hZGVyKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmluaXQuX2Jvb3RzdHJhcC5fbG9hZF91bmxvY2tlZChzcGVjKQorCiAgICAgZGVmIG1vY2tfZ2V0X2NvZGUoc2VsZik6CiAgICAgICAgIHJldHVybiBtb2NrLnBhdGNoLm9iamVjdChzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcywgJ2dldF9jb2RlJykKIApAQCAtNTI4LDkgKzUzOCw3IEBACiAgICAgICAgICAgICBtb2NrZWRfZ2V0X2NvZGUuc2lkZV9lZmZlY3QgPSBJbXBvcnRFcnJvcgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MoKQotICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICAgICAgICAgIGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgIHNlbGYubG9hZChsb2FkZXIpCiAKICAgICBkZWYgdGVzdF9nZXRfY29kZV9Ob25lKHNlbGYpOgogICAgICAgICAjIElmIGdldF9jb2RlKCkgcmV0dXJucyBOb25lLCByYWlzZSBJbXBvcnRFcnJvci4KQEAgLTUzOCw3ICs1NDYsNyBAQAogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IE5vbmUKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWQobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX3JldHVybmVkKHNlbGYpOgogICAgICAgICAjIFRoZSBsb2FkZWQgbW9kdWxlIHNob3VsZCBiZSByZXR1cm5lZC4KQEAgLTU0NiwxNCArNTU0LDE2IEBACiAgICAgICAgIHdpdGggc2VsZi5tb2NrX2dldF9jb2RlKCkgYXMgbW9ja2VkX2dldF9jb2RlOgogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnJldHVybl92YWx1ZSA9IGNvZGUKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShzZWxmLm1vZHVsZV9uYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkKGxvYWRlcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1tzZWxmLm1vZHVsZV9uYW1lXSkKIAogCiAoRnJvemVuX0lMTG9hZE1vZHVsZVRlc3RzLAogIFNvdXJjZV9JTExvYWRNb2R1bGVUZXN0cwogICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEluc3BlY3RMb2FkZXJMb2FkTW9kdWxlVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdExvYWRlclN1YmNsYXNzPVNQTElUX0lMKQorICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcz1TUExJVF9JTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbml0PWluaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbD11dGlsKQogCiAKICMjIyMjIEV4ZWN1dGlvbkxvYWRlciBjb25jcmV0ZSBtZXRob2RzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CmluZGV4IDZiYzNjNTYuLmIwYTk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYXBpLnB5CkBAIC05OSw5ICs5OSw3IEBACiAKIGNsYXNzIEZpbmRMb2FkZXJUZXN0czoKIAotICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgotICAgICAgICBAc3RhdGljbWV0aG9kCi0gICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOiByZXR1cm4gbmFtZSwgcGF0aAorICAgIEZha2VNZXRhRmluZGVyID0gTm9uZQogCiAgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXMoc2VsZik6CiAgICAgICAgICMgSWYgYSBtb2R1bGUgd2l0aCBfX2xvYWRlcl9fIGlzIGluIHN5cy5tb2R1bGVzLCB0aGVuIHJldHVybiBpdC4KQEAgLTE3MSw5ICsxNjksMzAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuaW5pdC5maW5kX2xvYWRlcignbmV2ZXJnb2luZ3RvZmluZHRoaXNtb2R1bGUnKSkKIAogCi0oRnJvemVuX0ZpbmRMb2FkZXJUZXN0cywKLSBTb3VyY2VfRmluZExvYWRlclRlc3RzCi0gKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclRlc3RzLCBpbml0PWluaXQpCitjbGFzcyBGaW5kTG9hZGVyUEVQNDUxVGVzdHMoRmluZExvYWRlclRlc3RzKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX3NwZWMobmFtZSwgcGF0aD1Ob25lLCB0YXJnZXQ9Tm9uZSk6CisgICAgICAgICAgICByZXR1cm4gbWFjaGluZXJ5WydTb3VyY2UnXS5Nb2R1bGVTcGVjKG5hbWUsIChuYW1lLCBwYXRoKSkKKworCisoRnJvemVuX0ZpbmRMb2FkZXJQRVA0NTFUZXN0cywKKyBTb3VyY2VfRmluZExvYWRlclBFUDQ1MVRlc3RzCisgKSA9IHRlc3RfdXRpbC50ZXN0X2JvdGgoRmluZExvYWRlclBFUDQ1MVRlc3RzLCBpbml0PWluaXQpCisKKworY2xhc3MgRmluZExvYWRlclBFUDMwMlRlc3RzKEZpbmRMb2FkZXJUZXN0cyk6CisKKyAgICBjbGFzcyBGYWtlTWV0YUZpbmRlcjoKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKToKKyAgICAgICAgICAgIHJldHVybiBuYW1lLCBwYXRoCisKKworKEZyb3plbl9GaW5kTG9hZGVyUEVQMzAyVGVzdHMsCisgU291cmNlX0ZpbmRMb2FkZXJQRVAzMDJUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEZpbmRMb2FkZXJQRVAzMDJUZXN0cywgaW5pdD1pbml0KQogCiAKIGNsYXNzIFJlbG9hZFRlc3RzOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5CmluZGV4IGNjMzgzYzIuLmZmZDhkYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKQEAgLTY2LDYgKzY2LDggQEAKICAgICAgICAgc3BlYyA9IHV0aWwuc3BlY19mcm9tX2xvYWRlcihUZXN0aW5nSW1wb3J0ZXIubW9kdWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5MYXp5TG9hZGVyKGxvYWRlcikpCiAgICAgICAgIG1vZHVsZSA9IHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUoc3BlYykKKyAgICAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgICAgICBtb2R1bGUgPSB0eXBlcy5Nb2R1bGVUeXBlKFRlc3RpbmdJbXBvcnRlci5tb2R1bGVfbmFtZSkKICAgICAgICAgbW9kdWxlLl9fc3BlY19fID0gc3BlYwogICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNwZWMubG9hZGVyCiAgICAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CmluZGV4IGRmMGFmMTIuLmIyYWFkZmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQpAQCAtMyw3ICszLDYgQEAKIGluaXQgPSB0ZXN0X3V0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliJykKIAogaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdlYWtyZWYKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKaW5kZXggNjYzOTYxMi4uZTM3ZDhhMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CkBAIC0xLDEzICsxLDEwIEBACiBpbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGltcG9ydGxpYi5hYmMKLWltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCB0eXBlcwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gdGVzdC50ZXN0X2ltcG9ydGxpYiBpbXBvcnQgdXRpbAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiAjIG5lZWRlZCB0ZXN0czoKICMKQEAgLTcxLDYgKzY4LDcgQEAKICAgICAgICAgIyBUT0RPOiB3aWxsIHdlIGV2ZXIgd2FudCB0byBwYXNzIGV4Y19pbmZvIHRvIF9fZXhpdF9fPwogICAgICAgICBzZWxmLmN0eC5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQogCisKIGNsYXNzIFNpbmdsZU5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgogICAgIHBhdGhzID0gWydwb3J0aW9uMSddCiAKQEAgLTg3LDcgKzg1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGZvbyksICI8bW9kdWxlICdmb28nIChuYW1lc3BhY2UpPiIpCiAKIAotY2xhc3MgRHluYW1pY1BhdGhlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CitjbGFzcyBEeW5hbWljUGF0aE5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgogICAgIHBhdGhzID0gWydwb3J0aW9uMSddCiAKICAgICBkZWYgdGVzdF9keW5hbWljX3BhdGgoc2VsZik6CkBAIC0yODksNSArMjg3LDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYV90ZXN0LmF0dHIsICdpbiBtb2R1bGUnKQogCiAKK2NsYXNzIFJlbG9hZFRlc3RzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnXQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGZvbyA9IGltcG9ydGxpYi5yZWxvYWQoZm9vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgZGVmIHRlc3RfY2FudF9pbXBvcnRfb3RoZXIoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBmb28gPSBpbXBvcnRsaWIucmVsb2FkKGZvbykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisgICAgZGVmIHRlc3RfZHluYW1pY19wYXRoKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICAgICAgIyBOb3cgbW9kaWZ5IHN5cy5wYXRoIGFuZCByZWxvYWQuCisgICAgICAgIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5yb290LCAncG9ydGlvbjInKSkKKyAgICAgICAgZm9vID0gaW1wb3J0bGliLnJlbG9hZChmb28pCisKKyAgICAgICAgIyBBbmQgbWFrZSBzdXJlIGZvby50d28gaXMgbm93IGltcG9ydGFibGUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CmluZGV4IDhiMzMzZTguLjVhMTZhMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKQEAgLTUsNiArNSw3IEBACiB1dGlsID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYi51dGlsJykKIAogaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBwYXRobGliCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgQ2xlYW5JbXBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwpAQCAtNjU5LDYgKzY2MCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMuY2FjaGVkLCBzZWxmLmNhY2hlZCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNwZWMuaGFzX2xvY2F0aW9uKQogCisgICAgZGVmIHRlc3Rfc3BlY19mcm9tX2ZpbGVfbG9jYXRpb25fcGF0aF9saWtlX2FyZyhzZWxmKToKKyAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbihzZWxmLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aGxpYi5QdXJlUGF0aChzZWxmLnBhdGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMub3JpZ2luLCBzZWxmLnBhdGgpCisKICAgICBkZWYgdGVzdF9zcGVjX2Zyb21fZmlsZV9sb2NhdGlvbl9kZWZhdWx0X3dpdGhvdXRfbG9jYXRpb24oc2VsZik6CiAgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oc2VsZi5uYW1lKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKaW5kZXggNDFjYTMzMy4uZDYxNTM3NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydGxpYl91dGlsID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCiAKIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydApAQCAtNDYsMTQgKzQ3LDggQEAKICAgICAgICAgICAgIGRlZiBleGVjX21vZHVsZShzZWxmLCBtb2R1bGUpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc3BlYyA9IHNlbGYubWFjaGluZXJ5Lk1vZHVsZVNwZWMoJ3Rlc3QnLCBMb2FkZXIoKSkKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih3KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgRGVwcmVjYXRpb25XYXJuaW5nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignY3JlYXRlX21vZHVsZScsIHN0cih3WzBdLm1lc3NhZ2UpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgc3BlYy5uYW1lKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX21vZHVsZV9yZXR1cm5zX05vbmUoc2VsZik6CiAgICAgICAgIGNsYXNzIExvYWRlcihzZWxmLmFiYy5Mb2FkZXIpOgpAQCAtNjc3LDYgKzY3MiwxNSBAQAogICAgICAgICAgICAgJ1xcZm9vXFxiYXJcXGJhelxcX19weWNhY2hlX19cXHF1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIG5vdCBiZSBOb25lJykKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9wYXRoX2xpa2VfYXJnKHNlbGYpOgorICAgICAgICBwYXRoID0gcGF0aGxpYi5QdXJlUGF0aCgnZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnV0aWwuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgb3B0aW1pemF0aW9uPScnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIHRvIG5vdCBiZSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbmUnKQogICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlKHNlbGYpOgpAQCAtNzM4LDYgKzc0MiwxNSBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIG5vdCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIHRvIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ05vbmUnKQorICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX3BhdGhfbGlrZV9hcmcoc2VsZik6CisgICAgICAgIHBhdGggPSBwYXRobGliLlB1cmVQYXRoKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLnNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpLCBleHBlY3QpCisKIAogKEZyb3plbl9QRVAzMTQ3VGVzdHMsCiAgU291cmNlX1BFUDMxNDdUZXN0cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CmluZGV4IGM4OTNiY2YuLjAwNWI2ODUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKQEAgLTQwLDcgKzQwLDcgQEAKICAgICBlbHNlOgogICAgICAgICByb290ID0gbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlci5SRUdJU1RSWV9LRVkKICAgICBrZXkgPSByb290LmZvcm1hdChmdWxsbmFtZT1uYW1lLAotICAgICAgICAgICAgICAgICAgICAgIHN5c192ZXJzaW9uPXN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj0nJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0pCiAgICAgdHJ5OgogICAgICAgICB3aXRoIHRlbXBfbW9kdWxlKG5hbWUsICJhID0gMSIpIGFzIGxvY2F0aW9uOgogICAgICAgICAgICAgc3Via2V5ID0gQ3JlYXRlS2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBrZXkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKaW5kZXggNjcxZTA1YS4uOTc2MzRlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQpAQCAtMzAsNiArMzAsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiBmcm9tIHRlc3QgaW1wb3J0IGluc3BlY3RfZm9kZGVyIGFzIG1vZAogZnJvbSB0ZXN0IGltcG9ydCBpbnNwZWN0X2ZvZGRlcjIgYXMgbW9kMgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGZyb20gdGVzdC50ZXN0X2ltcG9ydCBpbXBvcnQgX3JlYWR5X3RvX2ltcG9ydAogCkBAIC0zOCw3ICszOSw3IEBACiAjIGlzbW9kdWxlLCBpc2NsYXNzLCBpc21ldGhvZCwgaXNmdW5jdGlvbiwgaXN0cmFjZWJhY2ssIGlzZnJhbWUsIGlzY29kZSwKICMgaXNidWlsdGluLCBpc3JvdXRpbmUsIGlzZ2VuZXJhdG9yLCBpc2dlbmVyYXRvcmZ1bmN0aW9uLCBnZXRtZW1iZXJzLAogIyBnZXRkb2MsIGdldGZpbGUsIGdldG1vZHVsZSwgZ2V0c291cmNlZmlsZSwgZ2V0Y29tbWVudHMsIGdldHNvdXJjZSwKLSMgZ2V0Y2xhc3N0cmVlLCBnZXRhcmdzcGVjLCBnZXRhcmd2YWx1ZXMsIGZvcm1hdGFyZ3NwZWMsIGZvcm1hdGFyZ3ZhbHVlcywKKyMgZ2V0Y2xhc3N0cmVlLCBnZXRhcmd2YWx1ZXMsIGZvcm1hdGFyZ3NwZWMsIGZvcm1hdGFyZ3ZhbHVlcywKICMgY3VycmVudGZyYW1lLCBzdGFjaywgdHJhY2UsIGlzZGF0YWRlc2NyaXB0b3IKIAogIyBOT1RFOiBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIHRlc3RzIHJlbGF0aW5nIHRvIGludGVyYWN0aW9uIHdpdGgKQEAgLTY0LDcgKzY1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzZnJhbWUsIGluc3BlY3QuaXNmdW5jdGlvbiwgaW5zcGVjdC5pc21ldGhvZCwKICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzbW9kdWxlLCBpbnNwZWN0LmlzdHJhY2ViYWNrLAogICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNnZW5lcmF0b3IsIGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzY29yb3V0aW5lLCBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb25dKQorICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjb3JvdXRpbmUsIGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzYXN5bmNnZW4sIGluc3BlY3QuaXNhc3luY2dlbmZ1bmN0aW9uXSkKIAogICAgIGRlZiBpc3Rlc3Qoc2VsZiwgcHJlZGljYXRlLCBleHApOgogICAgICAgICBvYmogPSBldmFsKGV4cCkKQEAgLTcyLDYgKzc0LDcgQEAKIAogICAgICAgICBmb3Igb3RoZXIgaW4gc2VsZi5wcmVkaWNhdGVzIC0gc2V0KFtwcmVkaWNhdGVdKToKICAgICAgICAgICAgIGlmIChwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uIG9yIFwKKyAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9PSBpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbiBvciBcCiAgICAgICAgICAgICAgICBwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKSBhbmQgXAogICAgICAgICAgICAgICAgb3RoZXIgPT0gaW5zcGVjdC5pc2Z1bmN0aW9uOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC04MSw2ICs4NCwxMCBAQAogICAgIGZvciBpIGluIHJhbmdlKDIpOgogICAgICAgICB5aWVsZCBpCiAKK2FzeW5jIGRlZiBhc3luY19nZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZShzZWxmKToKKyAgICBhc3luYyBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgeWllbGQgaQorCiBhc3luYyBkZWYgY29yb3V0aW5lX2Z1bmN0aW9uX2V4YW1wbGUoc2VsZik6CiAgICAgcmV0dXJuICdzcGFtJwogCkBAIC0xMjEsNiArMTI4LDEwIEBACiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNkYXRhZGVzY3JpcHRvciwgJ2NvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3IsICcoeCBmb3IgeCBpbiByYW5nZSgyKSknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sICdnZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZScpCisgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNhc3luY2dlbiwKKyAgICAgICAgICAgICAgICAgICAgJ2FzeW5jX2dlbmVyYXRvcl9mdW5jdGlvbl9leGFtcGxlKDEpJykKKyAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICdhc3luY19nZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZScpCiAKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQpAQCAtNDAwLDcgKzQxMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKG1vZC5zcGFtKSksIG1vZGZpbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ybWNhc2UoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGdpdC5hYnVzZSkpLCBtb2RmaWxlKQogICAgICAgICBmbiA9ICJfbm9uX2V4aXN0aW5nX2ZpbGVuYW1lX3VzZWRfZm9yX3NvdXJjZWZpbGVfdGVzdC5weSIKLSAgICAgICAgY28gPSBjb21waWxlKCJOb25lIiwgZm4sICJleGVjIikKKyAgICAgICAgY28gPSBjb21waWxlKCJ4PTEiLCBmbiwgImV4ZWMiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlZmlsZShjbyksIE5vbmUpCiAgICAgICAgIGxpbmVjYWNoZS5jYWNoZVtjby5jb19maWxlbmFtZV0gPSAoMSwgTm9uZSwgIk5vbmUiLCBjby5jb19maWxlbmFtZSkKICAgICAgICAgdHJ5OgpAQCAtMjkwMiw2ICsyOTEzLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCckJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKIAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJy5hJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CiAgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQpAQCAtMjk4NSw2ICszMDAwLDE3IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICduYW1lIG11c3QgYmUgYSBzdHInKToKICAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQogCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfaW1wbGljaXQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcGxpY2l0IGFyZ3VtZW50cyBtdXN0IGJlIHBhc3NlZCBpbiBhcycpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJy4wJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisKKyAgICAgICAgcGFyYW0gPSBpbnNwZWN0LlBhcmFtZXRlcigKKyAgICAgICAgICAgICcuMCcsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmFtLmtpbmQsIGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbS5uYW1lLCAnaW1wbGljaXQwJykKKwogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfaW1tdXRhYmlsaXR5KHNlbGYpOgogICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ3NwYW0nLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkKIApAQCAtMzIzMyw2ICszMjU5LDE3IEBACiAgICAgICAgIGJhID0gc2lnLmJpbmQoYXJncz0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLmFyZ3VtZW50cywgeydrd2FyZ3MnOiB7J2FyZ3MnOiAxfX0pCiAKKyAgICBAY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfaW1wbGljaXRfYXJnKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxOTYxMTogZ2V0Y2FsbGFyZ3Mgc2hvdWxkIHdvcmsgd2l0aCBzZXQgY29tcHJlaGVuc2lvbnMKKyAgICAgICAgZGVmIG1ha2Vfc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge3ogKiB6IGZvciB6IGluIHJhbmdlKDUpfQorICAgICAgICBzZXRjb21wX2NvZGUgPSBtYWtlX3NldC5fX2NvZGVfXy5jb19jb25zdHNbMV0KKyAgICAgICAgc2V0Y29tcF9mdW5jID0gdHlwZXMuRnVuY3Rpb25UeXBlKHNldGNvbXBfY29kZSwge30pCisKKyAgICAgICAgaXRlcmF0b3IgPSBpdGVyKHJhbmdlKDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbChzZXRjb21wX2Z1bmMsIGl0ZXJhdG9yKSwgezAsIDEsIDQsIDksIDE2fSkKKwogCiBjbGFzcyBUZXN0Qm91bmRBcmd1bWVudHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfdW5oYXNoYWJsZShzZWxmKToKQEAgLTM1NDMsMTQgKzM1ODAsMTQgQEAKIAogICAgIGRlZiB0ZXN0X2RldGFpbHMoc2VsZik6CiAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCd1bml0dGVzdCcpCi0gICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ2luc3BlY3QnLAorICAgICAgICBhcmdzID0gc3VwcG9ydC5vcHRpbV9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCphcmdzLCAnLW0nLCAnaW5zcGVjdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaXR0ZXN0JywgJy0tZGV0YWlscycpCiAgICAgICAgIG91dHB1dCA9IG91dC5kZWNvZGUoKQogICAgICAgICAjIEp1c3QgYSBxdWljayBzYW5pdHkgY2hlY2sgb24gdGhlIG91dHB1dAogICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX25hbWVfXywgb3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2ZpbGVfXywgb3V0cHV0KQotICAgICAgICBpZiBub3Qgc3lzLmZsYWdzLm9wdGltaXplOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGUuX19jYWNoZWRfXywgb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX2NhY2hlZF9fLCBvdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnQucHkgYi9MaWIvdGVzdC90ZXN0X2ludC5weQppbmRleCBiNjZjNWQ2Li4xNGJiZDYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ludC5weQpAQCAtMiw2ICsyLDggQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC50ZXN0X2dyYW1tYXIgaW1wb3J0IChWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUykKIAogTCA9IFsKICAgICAgICAgKCcwJywgMCksCkBAIC0yMTIsNiArMjE0LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KCcyYnI0NXFjJywgMzUpLCA0Mjk0OTY3Mjk3KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgnMXoxNDF6NScsIDM2KSwgNDI5NDk2NzI5NykKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnLmVFakonKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobGl0LCAwKSwgZXZhbChsaXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobGl0LCAwKSwgaW50KGxpdC5yZXBsYWNlKCdfJywgJycpLCAwKSkKKyAgICAgICAgZm9yIGxpdCBpbiBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAnLmVFakonKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBsaXQsIDApCisgICAgICAgICMgQWRkaXRpb25hbCB0ZXN0IGNhc2VzIHdpdGggYmFzZXMgIT0gMCwgb25seSBmb3IgdGhlIGNvbnN0cnVjdG9yOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgiMV8wMCIsIDMpLCA5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgiMF8xMDAiKSwgMTAwKSAgIyBub3QgdmFsaWQgYXMgYSBsaXRlcmFsIQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChiIjFfMDAiKSwgMTAwKSAgIyBieXRlIHVuZGVyc2NvcmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiXzEwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIitfMTAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiMV9fMDAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIxMDBfIikKKwogICAgIEBzdXBwb3J0LmNweXRob25fb25seQogICAgIGRlZiB0ZXN0X3NtYWxsX2ludHMoc2VsZik6CiAgICAgICAgICMgQnVnICMzMjM2OiBSZXR1cm4gc21hbGwgbG9uZ3MgZnJvbSBQeUxvbmdfRnJvbVN0cmluZwpAQCAtNDMwLDIxICs0NTEsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICBuID0gaW50KGJhZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBpbnQpCiAKICAgICAgICAgYmFkX2ludCA9IEJhZEludDIoKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKICAgICAgICAgICAgIG4gPSBpbnQoYmFkX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKIAogICAgICAgICBiYWRfaW50ID0gVHJ1bmNSZXR1cm5zQmFkSW50KCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICBuID0gaW50KGJhZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBpbnQpCiAKICAgICAgICAgZ29vZF9pbnQgPSBUcnVuY1JldHVybnNJbnRTdWJjbGFzcygpCiAgICAgICAgIG4gPSBpbnQoZ29vZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIGludCkKICAgICAgICAgbiA9IEludFN1YmNsYXNzKGdvb2RfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgSW50U3ViY2xhc3MpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lvLnB5IGIvTGliL3Rlc3QvdGVzdF9pby5weQppbmRleCA1MTExODgyLi44YTIxMTFjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKQEAgLTQ5Niw3ICs0OTYsMTEgQEAKICAgICBkZWYgdGVzdF9vcGVuX2hhbmRsZXNfTlVMX2NoYXJzKHNlbGYpOgogICAgICAgICBmbl93aXRoX05VTCA9ICdmb29cMGJhcicKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5vcGVuLCBmbl93aXRoX05VTCwgJ3cnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLm9wZW4sIGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKSwgJ3cnKQorCisgICAgICAgIGJ5dGVzX2ZuID0gYnl0ZXMoZm5fd2l0aF9OVUwsICdhc2NpaScpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5vcGVuLCBieXRlc19mbiwgJ3cnKQogCiAgICAgZGVmIHRlc3RfcmF3X2ZpbGVfaW8oc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiLCBidWZmZXJpbmc9MCkgYXMgZjoKQEAgLTg1Niw2ICs4NjAsMzIgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoc3RyZWFtLCBtZXRob2QpKGJ1ZmZlciksIDUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhidWZmZXIpLCBiIjEyMzQ1IikKIAorICAgIGRlZiB0ZXN0X2ZzcGF0aF9zdXBwb3J0KHNlbGYpOgorICAgICAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICAgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgICAgICBkZWYgY2hlY2tfcGF0aF9zdWNjZWVkcyhwYXRoKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKHBhdGgsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJlZ2dcbiIpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuKHBhdGgsICJyIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAiZWdnXG4iKQorCisgICAgICAgIGNoZWNrX3BhdGhfc3VjY2VlZHMoUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pKQorICAgICAgICBjaGVja19wYXRoX3N1Y2NlZWRzKFBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOLmVuY29kZSgndXRmLTgnKSkpCisKKyAgICAgICAgYmFkX3BhdGggPSBQYXRoTGlrZShUeXBlRXJyb3IpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNlbGYub3BlbihiYWRfcGF0aCwgJ3cnKQorCisgICAgICAgICMgZW5zdXJlIHRoYXQgcmVmY291bnRpbmcgaXMgY29ycmVjdCB3aXRoIHNvbWUgZXJyb3IgY29uZGl0aW9ucworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ3JlYWQvd3JpdGUvYXBwZW5kIG1vZGUnKToKKyAgICAgICAgICAgIHNlbGYub3BlbihQYXRoTGlrZShzdXBwb3J0LlRFU1RGTiksICdyd3hhJykKKwogCiBjbGFzcyBDSU9UZXN0KElPVGVzdCk6CiAKQEAgLTE3ODIsNyArMTgxMiw3IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChtZXRob2QpOgogICAgICAgICAgICAgICAgIHBhaXIgPSBzZWxmLnRwKHNlbGYuQnl0ZXNJTyhiImFiY2RlZiIpLCBzZWxmLk1vY2tSYXdJTygpKQogCi0gICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzbGlrZSg1KQorICAgICAgICAgICAgICAgIGRhdGEgPSBieXRlc2xpa2UoYidcMCcgKiA1KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihwYWlyLCBtZXRob2QpKGRhdGEpLCA1KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoZGF0YSksIGIiYWJjZGUiKQogCkBAIC0zMjQ2LDggKzMyNzYsNyBAQAogCiBjbGFzcyBQeVRleHRJT1dyYXBwZXJUZXN0KFRleHRJT1dyYXBwZXJUZXN0KToKICAgICBpbyA9IHB5aW8KLSAgICAjc2h1dGRvd25fZXJyb3IgPSAiTG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGFzY2lpIgotICAgIHNodXRkb3duX2Vycm9yID0gIlR5cGVFcnJvcjogJ05vbmVUeXBlJyBvYmplY3QgaXMgbm90IGl0ZXJhYmxlIgorICAgIHNodXRkb3duX2Vycm9yID0gIkxvb2t1cEVycm9yOiB1bmtub3duIGVuY29kaW5nOiBhc2NpaSIKIAogCiBjbGFzcyBJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weSBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CmluZGV4IDkxYWU4ZDguLjBlMzk1MTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5CkBAIC0xMTksNyArMTE5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9wYWNrZWRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBkZWYgYXNzZXJ0QmFkTGVuZ3RoKGxlbmd0aCk6Ci0gICAgICAgICAgICBhZGRyID0gYnl0ZXMobGVuZ3RoKQorICAgICAgICAgICAgYWRkciA9IGInXDAnICogbGVuZ3RoCiAgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSA0KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjQgYWRkcmVzcyIKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChhZGRyLCBsZW5ndGgpKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCkBAIC0xMzksMTEgKzEzOSwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDMyMzIyMzU1MjEsICI6OmMwYTg6MSIpCiAKICAgICBkZWYgdGVzdF9wYWNrZWQoc2VsZik6Ci0gICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCIwMDAwMDAwMCIpCisgICAgICAgIGFkZHIgPSBiJ1wwJyoxMiArIGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIikKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiOjoiKQotICAgICAgICBhZGRyID0gYnl0ZXMoMTIpICsgYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKQorICAgICAgICBhZGRyID0gYidcMCcqMTIgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgIjo6YzBhODoxIikKLSAgICAgICAgYWRkciA9IGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikgKyBieXRlcygxMikKKyAgICAgICAgYWRkciA9IGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikgKyBiJ1wwJyoxMgogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICJjMGE4OjE6OiIpCiAKICAgICBkZWYgdGVzdF9uZWdhdGl2ZV9pbnRzX3JlamVjdGVkKHNlbGYpOgpAQCAtMTU4LDcgKzE1OCw3IEBACiAKICAgICBkZWYgdGVzdF9iYWRfcGFja2VkX2xlbmd0aChzZWxmKToKICAgICAgICAgZGVmIGFzc2VydEJhZExlbmd0aChsZW5ndGgpOgotICAgICAgICAgICAgYWRkciA9IGJ5dGVzKGxlbmd0aCkKKyAgICAgICAgICAgIGFkZHIgPSBiJ1wwJyAqIGxlbmd0aAogICAgICAgICAgICAgbXNnID0gIiVyIChsZW4gJWQgIT0gMTYpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NiBhZGRyZXNzIgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKGFkZHIsIGxlbmd0aCkpKToKICAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKQEAgLTExNzYsNiArMTE3Niw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmtbNV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6NScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuaXB2Nl9uZXR3b3JrLl9fZ2V0aXRlbV9fLCAxIDw8IDY0KQogCiAgICAgZGVmIHRlc3RHZXRpdGVtKHNlbGYpOgogICAgICAgICAjIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9pcGFkZHItcHkvaXNzdWVzL2RldGFpbD9pZD0xNQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CmluZGV4IGE5MTY3MGIuLjU0MmIyODQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKQEAgLTU0LDYgKzU0LDE0IEBACiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgogICAgICAgICByZXR1cm4gaQogCitjbGFzcyBEZWZhdWx0SXRlckNsYXNzOgorICAgIHBhc3MKKworY2xhc3MgTm9JdGVyQ2xhc3M6CisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgorICAgICAgICByZXR1cm4gaQorICAgIF9faXRlcl9fID0gTm9uZQorCiAjIE1haW4gdGVzdCBzdWl0ZQogCiBjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC05OTUsNiArMTAwMywxMCBAQAogICAgIGRlZiB0ZXN0X2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYpOgogICAgICAgICBjaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBpdGVyLCBTZXF1ZW5jZUNsYXNzLCAoMCwpKQogCisgICAgZGVmIHRlc3RfZXJyb3JfaXRlcihzZWxmKToKKyAgICAgICAgZm9yIHR5cCBpbiAoRGVmYXVsdEl0ZXJDbGFzcywgTm9JdGVyQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpdGVyLCB0eXAoKSkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KFRlc3RDYXNlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CmluZGV4IDE1MmY1ZmMuLjQxYzk3NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKQEAgLTQyLDcgKzQyLDYgQEAKICIiIgogCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpdGVydG9vbHMgaW1wb3J0IHJlcGVhdAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGxlbmd0aF9oaW50CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CmluZGV4IGUwNTQzMDMuLmVhMWY1N2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IHdlYWtyZWYKIGZyb20gZGVjaW1hbCBpbXBvcnQgRGVjaW1hbAogZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCByYW5kb20KIGltcG9ydCBjb3B5CkBAIC02NDQsMjQgKzY0Myw1OCBAQAogICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChwcm90bywgY3ljbGUoJ2FiYycpKQogCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgIyB0ZXN0IHdpdGggcGFydGlhbCBjb25zdW1lZCBpbnB1dCBpdGVyYWJsZQorICAgICAgICAgICAgaXQgPSBpdGVyKCdhYmNkZScpCisgICAgICAgICAgICBjID0gY3ljbGUoaXQpCisgICAgICAgICAgICBfID0gW25leHQoYykgZm9yIGkgaW4gcmFuZ2UoMildICAgICAgIyBjb25zdW1lIDIgb2YgNSBpbnB1dHMKKyAgICAgICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoYywgcHJvdG8pCisgICAgICAgICAgICBkID0gcGlja2xlLmxvYWRzKHApICAgICAgICAgICAgICAgICAgIyByZWJ1aWxkIHRoZSBjeWNsZSBvYmplY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgZCksIGxpc3QoJ2NkZWFiY2RlYWJjZGVhYmNkZWFiJykpCisKKyAgICAgICAgICAgICMgdGVzdCB3aXRoIGNvbXBsZXRlbHkgY29uc3VtZWQgaW5wdXQgaXRlcmFibGUKKyAgICAgICAgICAgIGl0ID0gaXRlcignYWJjZGUnKQorICAgICAgICAgICAgYyA9IGN5Y2xlKGl0KQorICAgICAgICAgICAgXyA9IFtuZXh0KGMpIGZvciBpIGluIHJhbmdlKDcpXSAgICAgICMgY29uc3VtZSA3IG9mIDUgaW5wdXRzCisgICAgICAgICAgICBwID0gcGlja2xlLmR1bXBzKGMsIHByb3RvKQorICAgICAgICAgICAgZCA9IHBpY2tsZS5sb2FkcyhwKSAgICAgICAgICAgICAgICAgICMgcmVidWlsZCB0aGUgY3ljbGUgb2JqZWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGQpLCBsaXN0KCdjZGVhYmNkZWFiY2RlYWJjZGVhYicpKQorCiAgICAgZGVmIHRlc3RfY3ljbGVfc2V0c3RhdGUoc2VsZik6CisgICAgICAgICMgVmVyaWZ5IGJvdGggbW9kZXMgZm9yIHJlc3RvcmluZyBzdGF0ZQorCisgICAgICAgICMgTW9kZSAwIGlzIGVmZmljaWVudC4gIEl0IHVzZXMgYW4gaW5jb21wbGV0ZWx5IGNvbnN1bWVkIGlucHV0CisgICAgICAgICMgaXRlcmF0b3IgdG8gYnVpbGQgYSBjeWNsZSBvYmplY3QgYW5kIHRoZW4gcGFzc2VzIGluIHN0YXRlIHdpdGgKKyAgICAgICAgIyBhIGxpc3Qgb2YgcHJldmlvdXNseSBjb25zdW1lZCB2YWx1ZXMuICBUaGVyZSBpcyBubyBkYXRhCisgICAgICAgICMgb3ZlcmxhcCBiZXR3ZWVuIHRoZSB0d28uCisgICAgICAgIGMgPSBjeWNsZSgnZGVmZycpCisgICAgICAgIGMuX19zZXRzdGF0ZV9fKChsaXN0KCdhYmMnKSwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgYyksIGxpc3QoJ2RlZmdhYmNkZWZnYWJjZGVmZ2FiJykpCisKKyAgICAgICAgIyBNb2RlIDEgaXMgaW5lZmZpY2llbnQuICBJdCBzdGFydHMgd2l0aCBhIGN5Y2xlIG9iamVjdCBidWlsdAorICAgICAgICAjIGZyb20gYW4gaXRlcmF0b3Igb3ZlciB0aGUgcmVtYWluaW5nIGVsZW1lbnRzIGluIGEgcGFydGlhbAorICAgICAgICAjIGN5Y2xlIGFuZCB0aGVuIHBhc3NlcyBpbiBzdGF0ZSB3aXRoIGFsbCBvZiB0aGUgcHJldmlvdXNseQorICAgICAgICAjIHNlZW4gdmFsdWVzICh0aGlzIG92ZXJsYXBzIHZhbHVlcyBpbmNsdWRlZCBpbiB0aGUgaXRlcmF0b3IpLgorICAgICAgICBjID0gY3ljbGUoJ2RlZmcnKQorICAgICAgICBjLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjZGVmZycpLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBjKSwgbGlzdCgnZGVmZ2FiY2RlZmdhYmNkZWZnYWInKSkKKworICAgICAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCB0byBzZXRzdGF0ZSBuZWVkcyB0byBiZSBhIHR1cGxlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGN5Y2xlKCdkZWZnJykuX19zZXRzdGF0ZV9fKFtsaXN0KCdhYmNkZWZnJyksIDBdKQorCisgICAgICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50IGluIHRoZSBzZXRzdGF0ZSB0dXBsZSBtdXN0IGJlIGEgbGlzdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjID0gY3ljbGUoJ2RlZmcnKQorICAgICAgICAgICAgYy5fX3NldHN0YXRlX18oKHR1cGxlKCdkZWZnJyksIDApKQorICAgICAgICB0YWtlKDIwLCBjKQorCisgICAgICAgICMgVGhlIHNlY29uZCBhcmd1bWVudCBpbiB0aGUgc2V0c3RhdGUgdHVwbGUgbXVzdCBiZSBhbiBpbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY3ljbGUoJ2RlZmcnKS5fX3NldHN0YXRlX18oKGxpc3QoJ2FiY2RlZmcnKSwgJ3gnKSkKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlKCcnKS5fX3NldHN0YXRlX18sICgpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlKCcnKS5fX3NldHN0YXRlX18sIFtdKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlKCcnKS5fX3NldHN0YXRlX18sIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgKFtdLCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3ljbGUoJycpLl9fc2V0c3RhdGVfXywgKCgpLCAwKSkKLSAgICAgICAgaXQgPSBjeWNsZSgnYWJjJykKLSAgICAgICAgaXQuX19zZXRzdGF0ZV9fKChbJ2RlJywgJ2ZnJ10sIDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGl0LCAxNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnXSkKLSAgICAgICAgaXQgPSBjeWNsZSgnYWJjJykKLSAgICAgICAgaXQuX19zZXRzdGF0ZV9fKChbJ2RlJywgJ2ZnJ10sIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGl0LCAxNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnYScsICdiJywgJ2MnLCAnZGUnLCAnZmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnZGUnLCAnZmcnLCAnZGUnLCAnZmcnLCAnZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnZmcnLCAnZGUnLCAnZmcnLCAnZGUnLCAnZmcnXSkKIAogICAgIGRlZiB0ZXN0X2dyb3VwYnkoc2VsZik6CiAgICAgICAgICMgQ2hlY2sgd2hldGhlciBpdCBhY2NlcHRzIGFyZ3VtZW50cyBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQppbmRleCAwODA3ZTZmLi5iYWMzNzBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQganNvbgogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CmluZGV4IGZkYWZlYjYuLjdlNTY4YmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKQEAgLTcyLDEwICs3Miw4IEBACiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2lucHV0X3R5cGUoc2VsZik6CiAgICAgICAgIG1zZyA9ICd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHInCi0gICAgICAgIGZvciB2YWx1ZSBpbiBbMSwgMy4xNCwgYidieXRlcycsIGInXHhmZlx4MDAnLCBbXSwge30sIE5vbmVdOgorICAgICAgICBmb3IgdmFsdWUgaW4gWzEsIDMuMTQsIFtdLCB7fSwgTm9uZV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnLCBzZWxmLmxvYWRzLCB2YWx1ZSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgbXNnKToKLSAgICAgICAgICAgIHNlbGYuanNvbi5sb2FkKEJ5dGVzSU8oYidbMSwyLDNdJykpCiAKICAgICBkZWYgdGVzdF9zdHJpbmdfd2l0aF91dGY4X2JvbShzZWxmKToKICAgICAgICAgIyBzZWUgIzE4OTU4CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQppbmRleCA5NWZmNWI4Li43OTEwNTIxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKQEAgLTEsNSArMSw0IEBACiBmcm9tIHRlc3QudGVzdF9qc29uIGltcG9ydCBQeVRlc3QsIENUZXN0Ci1pbXBvcnQgcmUKIAogIyAyMDA3LTEwLTA1CiBKU09ORE9DUyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5CmluZGV4IGM3Y2M4YTcuLmVkYTE3N2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBjb2RlY3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIHRlc3QudGVzdF9qc29uIGltcG9ydCBQeVRlc3QsIENUZXN0CiAKQEAgLTUyLDkgKzUzLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kdW1wcywgW2IiaGkiXSkKIAogICAgIGRlZiB0ZXN0X2J5dGVzX2RlY29kZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvYWRzLCBiJyJoaSInKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubG9hZHMsIGInWyJoaSJdJykKLQorICAgICAgICBmb3IgZW5jb2RpbmcsIGJvbSBpbiBbCisgICAgICAgICAgICAgICAgKCd1dGYtOCcsIGNvZGVjcy5CT01fVVRGOCksCisgICAgICAgICAgICAgICAgKCd1dGYtMTZiZScsIGNvZGVjcy5CT01fVVRGMTZfQkUpLAorICAgICAgICAgICAgICAgICgndXRmLTE2bGUnLCBjb2RlY3MuQk9NX1VURjE2X0xFKSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0zMmJlJywgY29kZWNzLkJPTV9VVEYzMl9CRSksCisgICAgICAgICAgICAgICAgKCd1dGYtMzJsZScsIGNvZGVjcy5CT01fVVRGMzJfTEUpLAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgIGRhdGEgPSBbImFceGI1XHUyMGFjXFUwMDAxZDEyMCJdCisgICAgICAgICAgICBlbmNvZGVkID0gc2VsZi5kdW1wcyhkYXRhKS5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoYm9tICsgZW5jb2RlZCksIGRhdGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoZW5jb2RlZCksIGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgc2VsZi5sb2FkcywgYidbIlx4ODAiXScpCiAKICAgICBkZWYgdGVzdF9vYmplY3RfcGFpcnNfaG9va193aXRoX3VuaWNvZGUoc2VsZik6CiAgICAgICAgIHMgPSAneyJ4a2QiOjEsICJrY3ciOjIsICJhcnQiOjMsICJoeG0iOjQsICJxcnQiOjUsICJwYWQiOjYsICJob3kiOjd9JwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQppbmRleCBmODIyMDI0Li45ZjQ5ODg2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weSBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CmluZGV4IDQ3ZTJlZGQuLjM3NWQ5YzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CkBAIC0zLDYgKzMsOCBAQAogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdG9rZW5pemUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAKQEAgLTEwLDggKzEyLDYgQEAKIE5PTkVYSVNURU5UX0ZJTEVOQU1FID0gRklMRU5BTUUgKyAnLm1pc3NpbmcnCiBJTlZBTElEX05BTUUgPSAnIUAkKSghQCNfMScKIEVNUFRZID0gJycKLVRFU1RTID0gJ2luc3BlY3RfZm9kZGVyIGluc3BlY3RfZm9kZGVyMiBtYXBwaW5nX3Rlc3RzJwotVEVTVFMgPSBURVNUUy5zcGxpdCgpCiBURVNUX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCiBNT0RVTEVTID0gImxpbmVjYWNoZSBhYmMiLnNwbGl0KCkKIE1PRFVMRV9QQVRIID0gb3MucGF0aC5kaXJuYW1lKEZJTEVOQU1FKQpAQCAtMzcsNiArMzcsNjUgQEAKICAgICByZXR1cm4gMycnJyAjIE5vIGVuZGluZyBuZXdsaW5lCiAKIAorY2xhc3MgVGVtcEZpbGU6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShkZWxldGU9RmFsc2UpIGFzIGZwOgorICAgICAgICAgICAgc2VsZi5maWxlX25hbWUgPSBmcC5uYW1lCisgICAgICAgICAgICBmcC53cml0ZShzZWxmLmZpbGVfYnl0ZV9zdHJpbmcpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisKKworY2xhc3MgR2V0TGluZVRlc3RzR29vZERhdGEoVGVtcEZpbGUpOgorICAgICMgZmlsZV9saXN0ICAgPSBbJ2xpc3RcbicsICdvZlxuJywgJ2dvb2RcbicsICdzdHJpbmdzXG4nXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfYnl0ZV9zdHJpbmcgPSAnJy5qb2luKHNlbGYuZmlsZV9saXN0KS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgorICAgICAgICB3aXRoIHRva2VuaXplLm9wZW4oc2VsZi5maWxlX25hbWUpIGFzIGZwOgorICAgICAgICAgICAgZm9yIGluZGV4LCBsaW5lIGluIGVudW1lcmF0ZShmcCk6CisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmUuZW5kc3dpdGgoJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gJ1xuJworCisgICAgICAgICAgICAgICAgY2FjaGVkX2xpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShzZWxmLmZpbGVfbmFtZSwgaW5kZXggKyAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgY2FjaGVkX2xpbmUpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lcyhzZWxmKToKKyAgICAgICAgbGluZXMgPSBsaW5lY2FjaGUuZ2V0bGluZXMoc2VsZi5maWxlX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIHNlbGYuZmlsZV9saXN0KQorCisKK2NsYXNzIEdldExpbmVUZXN0c0JhZERhdGEoVGVtcEZpbGUpOgorICAgICMgZmlsZV9ieXRlX3N0cmluZyA9IGInQmFkIGRhdGEgZ29lcyBoZXJlJworCisgICAgZGVmIHRlc3RfZ2V0bGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFN5bnRheEVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZSwgc2VsZi5maWxlX25hbWUsIDEpCisKKyAgICBkZWYgdGVzdF9nZXRsaW5lcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFN5bnRheEVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMsIHNlbGYuZmlsZV9uYW1lKQorCisKK2NsYXNzIEVtcHR5RmlsZShHZXRMaW5lVGVzdHNHb29kRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfbGlzdCA9IFtdCisKKworY2xhc3MgU2luZ2xlRW1wdHlMaW5lKEdldExpbmVUZXN0c0dvb2REYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9saXN0ID0gWydcbiddCisKKworY2xhc3MgR29vZFVuaWNvZGUoR2V0TGluZVRlc3RzR29vZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2xpc3QgPSBbJ8OhXG4nLCAnYlxuJywgJ2FiY2RlZlxuJywgJ8Ohw6HDocOhw6FcbiddCisKKworY2xhc3MgQmFkVW5pY29kZShHZXRMaW5lVGVzdHNCYWREYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9ieXRlX3N0cmluZyA9IGInXHg4MGFiYycKKworCiBjbGFzcyBMaW5lQ2FjaGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9nZXRsaW5lKHNlbGYpOgpAQCAtNTMsMTMgKzExMiw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0bGluZShFTVBUWSwgMSksIEVNUFRZKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGxpbmUoSU5WQUxJRF9OQU1FLCAxKSwgRU1QVFkpCiAKLSAgICAgICAgIyBDaGVjayB3aGV0aGVyIGxpbmVzIGNvcnJlc3BvbmQgdG8gdGhvc2UgZnJvbSBmaWxlIGl0ZXJhdGlvbgotICAgICAgICBmb3IgZW50cnkgaW4gVEVTVFM6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihURVNUX1BBVEgsIGVudHJ5KSArICcucHknCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZm9yIGluZGV4LCBsaW5lIGluIGVudW1lcmF0ZShmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBnZXRsaW5lKGZpbGVuYW1lLCBpbmRleCArIDEpKQotCiAgICAgICAgICMgQ2hlY2sgbW9kdWxlIGxvYWRpbmcKICAgICAgICAgZm9yIGVudHJ5IGluIE1PRFVMRVM6CiAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihNT0RVTEVfUEFUSCwgZW50cnkpICsgJy5weScKQEAgLTgwLDEyICsxMzIsMTMgQEAKIAogICAgIGRlZiB0ZXN0X2NsZWFyY2FjaGUoc2VsZik6CiAgICAgICAgIGNhY2hlZCA9IFtdCi0gICAgICAgIGZvciBlbnRyeSBpbiBURVNUUzoKLSAgICAgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKFRFU1RfUEFUSCwgZW50cnkpICsgJy5weScKKyAgICAgICAgZm9yIGVudHJ5IGluIE1PRFVMRVM6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihNT0RVTEVfUEFUSCwgZW50cnkpICsgJy5weScKICAgICAgICAgICAgIGNhY2hlZC5hcHBlbmQoZmlsZW5hbWUpCiAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgMSkKIAogICAgICAgICAjIEFyZSBhbGwgZmlsZXMgY2FjaGVkPworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNhY2hlZCwgW10pCiAgICAgICAgIGNhY2hlZF9lbXB0eSA9IFtmbiBmb3IgZm4gaW4gY2FjaGVkIGlmIGZuIG5vdCBpbiBsaW5lY2FjaGUuY2FjaGVdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FjaGVkX2VtcHR5LCBbXSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CmluZGV4IDhmODJhYjUuLmFlZTYyZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpc3QucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIGxpc3RfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgbGlzdF90ZXN0cwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQppbmRleCA4NTM0NGRlLi4wNzhhODZiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CkBAIC0yNiw2ICsyNiw3IEBACiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgY29uZmlncGFyc2VyCiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgaW8KIGltcG9ydCBnYwpAQCAtMzA4LDYgKzMwOSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKCdJTkZPJyksIGxvZ2dpbmcuSU5GTykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExldmVsTmFtZShsb2dnaW5nLklORk8pLCAnSU5GTycpCiAKKyAgICBkZWYgdGVzdF9pc3N1ZTI3OTM1KHNlbGYpOgorICAgICAgICBmYXRhbCA9IGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKCdGQVRBTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmF0YWwsIGxvZ2dpbmcuRkFUQUwpCisKIGNsYXNzIEJhc2ljRmlsdGVyVGVzdChCYXNlVGVzdCk6CiAKICAgICAiIiJUZXN0IHRoZSBidW5kbGVkIEZpbHRlciBjbGFzcy4iIiIKQEAgLTU3NSw2ICs1ODAsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoLnNob3VsZEZsdXNoKHIpKQogICAgICAgICBoLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3BhdGhfb2JqZWN0cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBQYXRoIG9iamVjdHMgYXJlIGFjY2VwdGVkIGFzIGZpbGVuYW1lIGFyZ3VtZW50cyB0byBoYW5kbGVycy4KKworICAgICAgICBTZWUgSXNzdWUgIzI3NDkzLgorICAgICAgICAiIiIKKyAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgIHBmbiA9IHBhdGhsaWIuUGF0aChmbikKKyAgICAgICAgY2FzZXMgPSAoCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLkZpbGVIYW5kbGVyLCAocGZuLCAndycpKSwKKyAgICAgICAgICAgICAgICAgICAgKGxvZ2dpbmcuaGFuZGxlcnMuUm90YXRpbmdGaWxlSGFuZGxlciwgKHBmbiwgJ2EnKSksCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwgKHBmbiwgJ2gnKSksCisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdsaW51eCcsICdkYXJ3aW4nKToKKyAgICAgICAgICAgIGNhc2VzICs9ICgobG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIsIChwZm4sICd3JykpLCkKKyAgICAgICAgZm9yIGNscywgYXJncyBpbiBjYXNlczoKKyAgICAgICAgICAgIGggPSBjbHMoKmFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pKQorICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisKICAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ1dhdGNoZWRGaWxlSGFuZGxlciBub3QgYXBwcm9wcmlhdGUgZm9yIFdpbmRvd3MuJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0X3JhY2Uoc2VsZik6CkBAIC05NTgsNyArOTg2LDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCiAgICAgICAgIHNlbGYubWVtX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLk1lbW9yeUhhbmRsZXIoMTAsIGxvZ2dpbmcuV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIpCiAgICAgICAgIHNlbGYubWVtX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdtZW0nKQogICAgICAgICBzZWxmLm1lbV9sb2dnZXIucHJvcGFnYXRlID0gMAogICAgICAgICBzZWxmLm1lbV9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLm1lbV9oZGxyKQpAQCAtOTk1LDYgKzEwMjMsMzYgQEAKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykKIAorICAgIGRlZiB0ZXN0X2ZsdXNoX29uX2Nsb3NlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBmbHVzaC1vbi1jbG9zZSBjb25maWd1cmF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmluZm8oc2VsZi5uZXh0X21lc3NhZ2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLm1lbV9oZGxyKQorICAgICAgICAjIERlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGZsdXNoIG9uIGNsb3NlLiBDaGVjayB0aGF0IGl0IGhhcHBlbnMuCisgICAgICAgIHNlbGYubWVtX2hkbHIuY2xvc2UoKQorICAgICAgICBsaW5lcyA9IFsKKyAgICAgICAgICAgICgnREVCVUcnLCAnMScpLAorICAgICAgICAgICAgKCdJTkZPJywgJzInKSwKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpCisgICAgICAgICMgTm93IGNvbmZpZ3VyZSBmb3IgZmx1c2hpbmcgbm90IHRvIGJlIGRvbmUgb24gY2xvc2UuCisgICAgICAgIHNlbGYubWVtX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLk1lbW9yeUhhbmRsZXIoMTAsIGxvZ2dpbmcuV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJvb3RfaGRsciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5tZW1faGRscikKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmRlYnVnKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYubWVtX2hkbHIpCisgICAgICAgIHNlbGYubWVtX2hkbHIuY2xvc2UoKQorICAgICAgICAjIGFzc2VydCB0aGF0IG5vIG5ldyBsaW5lcyBoYXZlIGJlZW4gYWRkZWQKKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKSAgIyBubyBjaGFuZ2UKKwogCiBjbGFzcyBFeGNlcHRpb25Gb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIpOgogICAgICIiIkEgc3BlY2lhbCBleGNlcHRpb24gZm9ybWF0dGVyLiIiIgpAQCAtNDIzOSw2ICs0Mjk3LDE3IEBACiAgICAgICAgIG1zZyA9ICdSZWNvcmQgbm90IGZvdW5kIGluIGV2ZW50IGxvZywgd2VudCBiYWNrICVkIHJlY29yZHMnICUgR09fQkFDSwogICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIG1zZz1tc2cpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnbG9nVGhyZWFkcycsICdsb2dNdWx0aXByb2Nlc3NpbmcnLAorICAgICAgICAgICAgICAgICAgICAgJ2xvZ1Byb2Nlc3NlcycsICdjdXJyZW50ZnJhbWUnLAorICAgICAgICAgICAgICAgICAgICAgJ1BlcmNlbnRTdHlsZScsICdTdHJGb3JtYXRTdHlsZScsICdTdHJpbmdUZW1wbGF0ZVN0eWxlJywKKyAgICAgICAgICAgICAgICAgICAgICdGaWx0ZXJlcicsICdQbGFjZUhvbGRlcicsICdNYW5hZ2VyJywgJ1Jvb3RMb2dnZXInLAorICAgICAgICAgICAgICAgICAgICAgJ3Jvb3QnLCAndGhyZWFkaW5nJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgbG9nZ2luZywgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiAjIFNldCB0aGUgbG9jYWxlIHRvIHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZGVmYXVsdC4gIEkgaGF2ZSBubyBpZGVhCiAjIHdoeSB0aGUgdGVzdCBkb2VzIHRoaXMsIGJ1dCBpbiBhbnkgY2FzZSB3ZSBzYXZlIHRoZSBjdXJyZW50IGxvY2FsZQogIyBmaXJzdCBhbmQgcmVzdG9yZSBpdCBhdCB0aGUgZW5kLgpAQCAtNDI1Niw2ICs0MzI1LDcgQEAKICAgICAgICAgRXhjZXB0aW9uVGVzdCwgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwKICAgICAgICAgTlRFdmVudExvZ0hhbmRsZXJUZXN0LCBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAogICAgICAgICBVbml4U29ja2V0SGFuZGxlclRlc3QsIFVuaXhEYXRhZ3JhbUhhbmRsZXJUZXN0LCBVbml4U3lzTG9nSGFuZGxlclRlc3QsCisgICAgICAgIE1pc2NUZXN0Q2FzZQogICAgIF0KICAgICBpZiBoYXNhdHRyKGxvZ2dpbmcuaGFuZGxlcnMsICdRdWV1ZUxpc3RlbmVyJyk6CiAgICAgICAgIHRlc3RzLmFwcGVuZChRdWV1ZUxpc3RlbmVyVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQppbmRleCA0YjJkODFjLi5mZDE1ZjA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CkBAIC02MjEsNiArNjIxLDggQEAKICAgICBkZWYgdGVzdF9fZm9ybWF0X18oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ2QnKSwgJzEyMzQ1Njc4OScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ2QnKSwgJzEyMzQ1Njc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJywnKSwgJzEyMyw0NTYsNzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnXycpLCAnMTIzXzQ1Nl83ODknKQogCiAgICAgICAgICMgc2lnbiBhbmQgYWxpZ25pbmcgYXJlIGludGVyZGVwZW5kZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEsICItIiksICcxJykKQEAgLTY0OSw4ICs2NTEsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoaW50KCdiZScsIDE2KSwgIlgiKSwgIkJFIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLWludCgnYmUnLCAxNiksICJ4IiksICItYmUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtaW50KCdiZScsIDE2KSwgIlgiKSwgIi1CRSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyx4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ194JyksICc0OTk2XzAyZDInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODkwLCAnX1gnKSwgJzQ5OTZfMDJEMicpCiAKICAgICAgICAgIyBvY3RhbAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgzLCAibyIpLCAiMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0zLCAibyIpLCAiLTMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAibyIpLCAiMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAibyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiLW8iKSwgIjIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIi1vIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICIgbyIpLCAiIDIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIiBvIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICIrbyIpLCAiKzIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIitvIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ19vJyksICcxMTFfNDU0MF8xMzIyJykKKworICAgICAgICAjIGJpbmFyeQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgzLCAiYiIpLCAiMTEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMywgImIiKSwgIi0xMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICJiIiksICIxMDAxMTAxMDAxMCIpCkBAIC02NjEsMTIgKzY4MCwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIiBiIiksICItMTAwMTEwMTAwMTAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiK2IiKSwgIisxMDAxMTAxMDAxMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiK2IiKSwgIi0xMDAxMTAxMDAxMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDUsICdfYicpLCAnMTFfMDAwMF8wMDExXzEwMDEnKQogCiAgICAgICAgICMgbWFrZSBzdXJlIHRoZXNlIGFyZSBlcnJvcnMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiMS4zIikgICMgcHJlY2lzaW9uIGRpc2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiX2MiKSAgICMgdW5kZXJzY29yZSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiLGMiKSAgICMgY29tbWEsIGFuZAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICIrYyIpICAgIyBzaWduIG5vdCBhbGxvd2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggJ2MnCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJ18sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJyxfJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJ18sZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICcsX2QnKQorCiAgICAgICAgICMgZW5zdXJlIHRoYXQgb25seSBpbnQgYW5kIGZsb2F0IHR5cGUgc3BlY2lmaWVycyB3b3JrCiAgICAgICAgIGZvciBmb3JtYXRfc3BlYyBpbiAoW2Nocih4KSBmb3IgeCBpbiByYW5nZShvcmQoJ2EnKSwgb3JkKCd6JykrMSldICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hyKHgpIGZvciB4IGluIHJhbmdlKG9yZCgnQScpLCBvcmQoJ1onKSsxKV0pOgpAQCAtNjg5LDYgKzcxNywyMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIGZsb2F0KCctaW5mJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgZmxvYXQoJ25hbicpKQogCisgICAgZGVmIHRlc3RfbW9kX2RpdmlzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIF8gPSAxICUgMAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTMgJSAxMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTMgJSAxMCwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMyAlIC0xMCwgLTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEzICUgLTEwLCAtMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyICUgNCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgJSA0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyICUgLTQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyICUgLTQsIDApCisKICAgICBkZWYgdGVzdF90cnVlX2RpdmlzaW9uKHNlbGYpOgogICAgICAgICBodWdlID0gMSA8PCA0MDAwMAogICAgICAgICBtaHVnZSA9IC1odWdlCkBAIC03MjMsNiArNzY1LDI1IEBACiAgICAgICAgIGZvciB6ZXJvIGluIFsiaHVnZSAvIDAiLCAibWh1Z2UgLyAwIl06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgZXZhbCwgemVybywgbmFtZXNwYWNlKQogCisgICAgZGVmIHRlc3RfZmxvb3JkaXYoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgXyA9IDEgLy8gMAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAvLyAzLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgLy8gLTMsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0yIC8vIDMsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0yIC8vIC0zLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTExIC8vIC0zLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMSAvLyAzLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMSAvLyAtMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTEgLy8gMywgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAvLyAtMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgLy8gMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgLy8gLTMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyIC8vIDMsIDQpCisKICAgICBkZWYgY2hlY2tfdHJ1ZWRpdihzZWxmLCBhLCBiLCBza2lwX3NtYWxsPVRydWUpOgogICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgcmVzdWx0IG9mIGEvYiBpcyBjb3JyZWN0bHkgcm91bmRlZCwgYnkKICAgICAgICAgY29tcGFyaW5nIGl0IHdpdGggYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBjb3JyZWN0bHkKQEAgLTg0NSw2ICs5MDYsMjEgQEAKICAgICAgICAgICAgIHNlbGYuY2hlY2tfdHJ1ZWRpdigteCwgeSkKICAgICAgICAgICAgIHNlbGYuY2hlY2tfdHJ1ZWRpdigteCwgLXkpCiAKKyAgICBkZWYgdGVzdF9sc2hpZnRfb2ZfemVybyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwIDw8IDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCAxMCwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIDAgPDwgLTEKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2h1Z2VfbHNoaWZ0X29mX3plcm8oc2VsZik6CisgICAgICAgICMgU2hvdWxkbid0IHRyeSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgaHVnZSBzaGlmdC4gU2VlIGlzc3VlICMyNzg3MC4KKyAgICAgICAgIyBPdGhlciBpbXBsZW1lbnRhdGlvbnMgbWF5IGhhdmUgYSBkaWZmZXJlbnQgYm91bmRhcnkgZm9yIG92ZXJmbG93LAorICAgICAgICAjIG9yIG5vdCByYWlzZSBhdCBhbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCBzeXMubWF4c2l6ZSwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgIDAgPDwgKHN5cy5tYXhzaXplICsgMSkKKwogICAgIGRlZiB0ZXN0X3NtYWxsX2ludHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCAyNTcpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpLCBpICsgMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQppbmRleCAxNmU4OWQ1Li5mZGM4ZTExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IF9jb21wcmVzc2lvbgogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24sIERFRkFVTFRfQlVGRkVSX1NJWkUKIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KIGltcG9ydCB1bml0dGVzdApAQCAtNDg4LDYgKzQ4OSwxNiBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgImEiKSBhcyBmOgogICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIHRlc3RfaW5pdF93aXRoX1BhdGhMaWtlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChURVNURk4pCisgICAgICAgIHdpdGggVGVtcEZpbGUoZmlsZW5hbWUsIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUsICJhIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCisKICAgICBkZWYgdGVzdF9pbml0X3dpdGhfZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOLCBDT01QUkVTU0VEX1haKToKICAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOKSBhcyBmOgpAQCAtOTM1LDExICs5NDYsMTEgQEAKIAogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKICAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCi0gICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgcHJlc2V0PTYpCisgICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIHByZXNldD02KQogICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUpCiAKICAgICAgICAgZGVjb21wID0gTFpNQUZpbGUoQnl0ZXNJTyhib21iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIERFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCkBAIC0xMTgwLDYgKzExOTEsMTcgQEAKICAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCiAKKyAgICBkZWYgdGVzdF93aXRoX3BhdGhsaWtlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChURVNURk4pCisgICAgICAgIHdpdGggVGVtcEZpbGUoZmlsZW5hbWUpOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKICAgICBkZWYgdGVzdF9iYWRfcGFyYW1zKHNlbGYpOgogICAgICAgICAjIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXIgY29tYmluYXRpb25zLgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CmluZGV4IDgwYmVjN2EuLjA2OThmZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgbWFjcGF0aAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCB0ZXN0X2dlbmVyaWNwYXRoCitmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZ2VuZXJpY3BhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQppbmRleCAwOTkxZjc0Li5hZWFiZGJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CkBAIC03LDE3ICs3LDEyIEBACiBpbXBvcnQgZW1haWwubWVzc2FnZQogaW1wb3J0IHJlCiBpbXBvcnQgaW8KLWltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IG1haWxib3gKIGltcG9ydCBnbG9iCi10cnk6Ci0gICAgaW1wb3J0IGZjbnRsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwogCiAKIGNsYXNzIFRlc3RCYXNlOgpAQCAtMjI3MywxMiArMjI2OCwxOCBAQAogIiIiKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7ImxpbmVzZXAiLCAiZmNudGwifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBtYWlsYm94LCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IChUZXN0TWFpbGJveFN1cGVyY2xhc3MsIFRlc3RNYWlsZGlyLCBUZXN0TWJveCwgVGVzdE1NREYsIFRlc3RNSCwKICAgICAgICAgICAgICBUZXN0QmFieWwsIFRlc3RNZXNzYWdlLCBUZXN0TWFpbGRpck1lc3NhZ2UsIFRlc3RNYm94TWVzc2FnZSwKICAgICAgICAgICAgICBUZXN0TUhNZXNzYWdlLCBUZXN0QmFieWxNZXNzYWdlLCBUZXN0TU1ERk1lc3NhZ2UsCiAgICAgICAgICAgICAgVGVzdE1lc3NhZ2VDb252ZXJzaW9uLCBUZXN0UHJveHlGaWxlLCBUZXN0UGFydGlhbEZpbGUsCi0gICAgICAgICAgICAgTWFpbGRpclRlc3RDYXNlLCBUZXN0RmFrZU1haWxCb3gpCisgICAgICAgICAgICAgTWFpbGRpclRlc3RDYXNlLCBUZXN0RmFrZU1haWxCb3gsIE1pc2NUZXN0Q2FzZSkKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CmluZGV4IGE4NWM2OTEuLmMwODQyM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgbWFpbGNhcAogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgY29weQogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xMjMsNyArMTIyLDcgQEAKICAgICAgICAgICAgIChbImVjaG8gZm9vIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBmb28iKSwKICAgICAgICAgICAgIChbImVjaG8gJXMiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvby50eHQiKSwKICAgICAgICAgICAgIChbImVjaG8gJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGF1ZGlvLyoiKSwKLSAgICAgICAgICAgIChbImVjaG8gXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAorICAgICAgICAgICAgKFsiZWNobyBcXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAogICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyBmb28iKSwKICAgICAgICAgICAgIChbImVjaG8gJXt0b3RhbH0iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyAzIikKICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CmluZGV4IGM3ZGVmOWEuLmIzNzhmZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKQEAgLTEzNSw2ICsxMzUsMTMgQEAKICAgICAgICAgZm9yIGNvbnN0cnVjdG9yIGluIChzZXQsIGZyb3plbnNldCk6CiAgICAgICAgICAgICBzZWxmLmhlbHBlcihjb25zdHJ1Y3RvcihzZWxmLmQua2V5cygpKSkKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2VtcHR5X2Zyb3plbnNldF9zaW5nbGV0b24oc2VsZik6CisgICAgICAgICMgbWFyc2hhbC5sb2FkcygpIG11c3QgcmV1c2UgdGhlIGVtcHR5IGZyb3plbnNldCBzaW5nbGV0b24KKyAgICAgICAgb2JqID0gZnJvemVuc2V0KCkKKyAgICAgICAgb2JqMiA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhvYmopKQorICAgICAgICBzZWxmLmFzc2VydElzKG9iajIsIG9iaikKKwogCiBjbGFzcyBCdWZmZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgSGVscGVyTWl4aW4pOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hdGgucHkgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKaW5kZXggYTM3OWE2YS4uZWFhNDFiYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQpAQCAtNywxNCArNywxNSBAQAogaW1wb3J0IG1hdGgKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiAKIGVwcyA9IDFFLTA1CiBOQU4gPSBmbG9hdCgnbmFuJykKIElORiA9IGZsb2F0KCdpbmYnKQogTklORiA9IGZsb2F0KCctaW5mJykKK0ZMT0FUX01BWCA9IHN5cy5mbG9hdF9pbmZvLm1heAogCiAjIGRldGVjdCBldmlkZW5jZSBvZiBkb3VibGUtcm91bmRpbmc6IGZzdW0gaXMgbm90IGFsd2F5cyBjb3JyZWN0bHkKICMgcm91bmRlZCBvbiBtYWNoaW5lcyB0aGF0IHN1ZmZlciBmcm9tIGRvdWJsZSByb3VuZGluZy4KQEAgLTMwLDYgKzMxLDcgQEAKIG1hdGhfdGVzdGNhc2VzID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCAnbWF0aF90ZXN0Y2FzZXMudHh0JykKIHRlc3RfZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJ2NtYXRoX3Rlc3RjYXNlcy50eHQnKQogCisKIGRlZiB0b191bHBzKHgpOgogICAgICIiIkNvbnZlcnQgYSBub24tTmFOIGZsb2F0IHggdG8gYW4gaW50ZWdlciwgaW4gc3VjaCBhIHdheSB0aGF0CiAgICAgYWRqYWNlbnQgZmxvYXRzIGFyZSBjb252ZXJ0ZWQgdG8gYWRqYWNlbnQgaW50ZWdlcnMuICBUaGVuCkBAIC0zNywyNSArMzksMzkgQEAKICAgICBmbG9hdHMuCiAKICAgICBUaGUgcmVzdWx0cyBmcm9tIHRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zCi0gICAgd2hlcmUgQyBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCisgICAgd2hlcmUgbmF0aXZlIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KIAorICAgIE5vdGU6IDAuMCBhbmQgLTAuMCBhcmUgY29udmVydGVkIHRvIDAgYW5kIC0xLCByZXNwZWN0aXZlbHkuCiAgICAgIiIiCiAgICAgbiA9IHN0cnVjdC51bnBhY2soJzxxJywgc3RydWN0LnBhY2soJzxkJywgeCkpWzBdCiAgICAgaWYgbiA8IDA6CiAgICAgICAgIG4gPSB+KG4rMioqNjMpCiAgICAgcmV0dXJuIG4KIAotZGVmIHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwcz0yMCk6Ci0gICAgIiIiR2l2ZW4gbm9uLU5hTiBmbG9hdHMgYGV4cGVjdGVkYCBhbmQgYGdvdGAsCi0gICAgY2hlY2sgdGhhdCB0aGV5J3JlIGVxdWFsIHRvIHdpdGhpbiB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVscHMuCiAKLSAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLiIiIgorZGVmIHVscCh4KToKKyAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgYQorICAgIGZsb2F0IHgsIHN1Y2ggdGhhdCB0aGUgZmlyc3QgZmxvYXQgYmlnZ2VyIHRoYW4geCBpcyB4K3VscCh4KS4KKyAgICBUaGVuLCBnaXZlbiBhbiBleHBlY3RlZCByZXN1bHQgeCBhbmQgYSB0b2xlcmFuY2Ugb2YgbiB1bHBzLAorICAgIHRoZSByZXN1bHQgeSBzaG91bGQgYmUgc3VjaCB0aGF0IGFicyh5LXgpIDw9IG4gKiB1bHAoeCkuCisgICAgVGhlIHJlc3VsdHMgZnJvbSB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcworICAgIHdoZXJlIG5hdGl2ZSBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCisgICAgIiIiCisgICAgeCA9IGFicyhmbG9hdCh4KSkKKyAgICBpZiBtYXRoLmlzbmFuKHgpIG9yIG1hdGguaXNpbmYoeCk6CisgICAgICAgIHJldHVybiB4CiAKLSAgICB1bHBzX2Vycm9yID0gdG9fdWxwcyhnb3QpIC0gdG9fdWxwcyhleHBlY3RlZCkKLSAgICBpZiBhYnModWxwc19lcnJvcikgPD0gdWxwczoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gImVycm9yID0ge30gdWxwczsgcGVybWl0dGVkIGVycm9yID0ge30gdWxwcyIuZm9ybWF0KHVscHNfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bHBzKQorICAgICMgRmluZCBuZXh0IGZsb2F0IHVwIGZyb20geC4KKyAgICBuID0gc3RydWN0LnVucGFjaygnPHEnLCBzdHJ1Y3QucGFjaygnPGQnLCB4KSlbMF0KKyAgICB4X25leHQgPSBzdHJ1Y3QudW5wYWNrKCc8ZCcsIHN0cnVjdC5wYWNrKCc8cScsIG4gKyAxKSlbMF0KKyAgICBpZiBtYXRoLmlzaW5mKHhfbmV4dCk6CisgICAgICAgICMgQ29ybmVyIGNhc2U6IHggd2FzIHRoZSBsYXJnZXN0IGZpbml0ZSBmbG9hdC4gVGhlbiBpdCdzCisgICAgICAgICMgbm90IGFuIGV4YWN0IHBvd2VyIG9mIHR3bywgc28gd2UgY2FuIHRha2UgdGhlIGRpZmZlcmVuY2UKKyAgICAgICAgIyBiZXR3ZWVuIHggYW5kIHRoZSBwcmV2aW91cyBmbG9hdC4KKyAgICAgICAgeF9wcmV2ID0gc3RydWN0LnVucGFjaygnPGQnLCBzdHJ1Y3QucGFjaygnPHEnLCBuIC0gMSkpWzBdCisgICAgICAgIHJldHVybiB4IC0geF9wcmV2CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHhfbmV4dCAtIHgKIAogIyBIZXJlJ3MgYSBwdXJlIFB5dGhvbiB2ZXJzaW9uIG9mIHRoZSBtYXRoLmZhY3RvcmlhbCBhbGdvcml0aG0sIGZvcgogIyBkb2N1bWVudGF0aW9uIGFuZCBjb21wYXJpc29uIHB1cnBvc2VzLgpAQCAtMTA3LDI0ICsxMjMsMjMgQEAKICAgICAgICAgb3V0ZXIgKj0gaW5uZXIKICAgICByZXR1cm4gb3V0ZXIgPDwgKG4gLSBjb3VudF9zZXRfYml0cyhuKSkKIAotZGVmIGFjY19jaGVjayhleHBlY3RlZCwgZ290LCByZWxfZXJyPTJlLTE1LCBhYnNfZXJyID0gNWUtMzIzKToKLSAgICAiIiJEZXRlcm1pbmUgd2hldGhlciBub24tTmFOIGZsb2F0cyBhIGFuZCBiIGFyZSBlcXVhbCB0byB3aXRoaW4gYQotICAgIChzbWFsbCkgcm91bmRpbmcgZXJyb3IuICBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHJlbF9lcnIgYW5kCi0gICAgYWJzX2VyciBhcmUgY2hvc2VuIHRvIGJlIHN1aXRhYmxlIGZvciBwbGF0Zm9ybXMgd2hlcmUgYSBmbG9hdCBpcwotICAgIHJlcHJlc2VudGVkIGJ5IGFuIElFRUUgNzU0IGRvdWJsZS4gIFRoZXkgYWxsb3cgYW4gZXJyb3Igb2YgYmV0d2VlbgotICAgIDkgYW5kIDE5IHVscHMuIiIiCitkZWYgdWxwX2Fic19jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKToKKyAgICAiIiJHaXZlbiBmaW5pdGUgZmxvYXRzIGBleHBlY3RlZGAgYW5kIGBnb3RgLCBjaGVjayB0aGF0IHRoZXkncmUKKyAgICBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIHdpdGhpbiB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVscHMgb3IgdGhlCisgICAgZ2l2ZW4gYWJzb2x1dGUgdG9sZXJhbmNlLCB3aGljaGV2ZXIgaXMgYmlnZ2VyLgogCi0gICAgIyBuZWVkIHRvIHNwZWNpYWwgY2FzZSBpbmZpbml0aWVzLCBzaW5jZSBpbmYgLSBpbmYgZ2l2ZXMgbmFuCi0gICAgaWYgbWF0aC5pc2luZihleHBlY3RlZCkgYW5kIGdvdCA9PSBleHBlY3RlZDoKKyAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgorICAgICIiIgorICAgIHVscF9lcnJvciA9IGFicyh0b191bHBzKGV4cGVjdGVkKSAtIHRvX3VscHMoZ290KSkKKyAgICBhYnNfZXJyb3IgPSBhYnMoZXhwZWN0ZWQgLSBnb3QpCisKKyAgICAjIFN1Y2NlZWQgaWYgZWl0aGVyIGFic19lcnJvciA8PSBhYnNfdG9sIG9yIHVscF9lcnJvciA8PSB1bHBfdG9sLgorICAgIGlmIGFic19lcnJvciA8PSBhYnNfdG9sIG9yIHVscF9lcnJvciA8PSB1bHBfdG9sOgogICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZXJyb3IgPSBnb3QgLSBleHBlY3RlZAotCi0gICAgcGVybWl0dGVkX2Vycm9yID0gbWF4KGFic19lcnIsIHJlbF9lcnIgKiBhYnMoZXhwZWN0ZWQpKQotICAgIGlmIGFicyhlcnJvcikgPCBwZXJtaXR0ZWRfZXJyb3I6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJuICJlcnJvciA9IHt9OyBwZXJtaXR0ZWQgZXJyb3IgPSB7fSIuZm9ybWF0KGVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXR0ZWRfZXJyb3IpCisgICAgZWxzZToKKyAgICAgICAgZm10ID0gKCJlcnJvciA9IHs6LjNnfSAoezpkfSB1bHBzKTsgIgorICAgICAgICAgICAgICAgInBlcm1pdHRlZCBlcnJvciA9IHs6LjNnfSBvciB7OmR9IHVscHMiKQorICAgICAgICByZXR1cm4gZm10LmZvcm1hdChhYnNfZXJyb3IsIHVscF9lcnJvciwgYWJzX3RvbCwgdWxwX3RvbCkKIAogZGVmIHBhcnNlX210ZXN0ZmlsZShmbmFtZSk6CiAgICAgIiIiUGFyc2UgYSBmaWxlIHdpdGggdGVzdCB2YWx1ZXMKQEAgLTE1MSw2ICsxNjYsNyBAQAogCiAgICAgICAgICAgICB5aWVsZCAoaWQsIGZuLCBmbG9hdChhcmcpLCBmbG9hdChleHApLCBmbGFncykKIAorCiBkZWYgcGFyc2VfdGVzdGZpbGUoZm5hbWUpOgogICAgICIiIlBhcnNlIGEgZmlsZSB3aXRoIHRlc3QgdmFsdWVzCiAKQEAgLTE3Miw4ICsxODgsNTMgQEAKICAgICAgICAgICAgIHlpZWxkIChpZCwgZm4sCiAgICAgICAgICAgICAgICAgICAgZmxvYXQoYXJnX3JlYWwpLCBmbG9hdChhcmdfaW1hZyksCiAgICAgICAgICAgICAgICAgICAgZmxvYXQoZXhwX3JlYWwpLCBmbG9hdChleHBfaW1hZyksCi0gICAgICAgICAgICAgICAgICAgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICBmbGFncykKKworCitkZWYgcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2w9NSwgYWJzX3RvbD0wLjApOgorICAgICMgQ29tbW9uIGxvZ2ljIG9mIE1hdGhUZXN0cy4oZnRlc3QsIHRlc3RfdGVzdGNhc2VzLCB0ZXN0X210ZXN0Y2FzZXMpCisgICAgIiIiQ29tcGFyZSBhcmd1bWVudHMgZXhwZWN0ZWQgYW5kIGdvdCwgYXMgZmxvYXRzLCBpZiBlaXRoZXIKKyAgICBpcyBhIGZsb2F0LCB1c2luZyBhIHRvbGVyYW5jZSBleHByZXNzZWQgaW4gbXVsdGlwbGVzIG9mCisgICAgdWxwKGV4cGVjdGVkKSBvciBhYnNvbHV0ZWx5IChpZiBnaXZlbiBhbmQgZ3JlYXRlcikuCisKKyAgICBBcyBhIGNvbnZlbmllbmNlLCB3aGVuIG5laXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdCwgYW5kIGZvcgorICAgIG5vbi1maW5pdGUgZmxvYXRzLCBleGFjdCBlcXVhbGl0eSBpcyBkZW1hbmRlZC4gQWxzbywgbmFuPT1uYW4KKyAgICBhcyBmYXIgYXMgdGhpcyBmdW5jdGlvbiBpcyBjb25jZXJuZWQuCisKKyAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgorICAgICIiIgorCisgICAgIyBDaGVjayBleGFjdGx5IGVxdWFsIChhcHBsaWVzIGFsc28gdG8gc3RyaW5ncyByZXByZXNlbnRpbmcgZXhjZXB0aW9ucykKKyAgICBpZiBnb3QgPT0gZXhwZWN0ZWQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBmYWlsdXJlID0gIm5vdCBlcXVhbCIKKworICAgICMgVHVybiBtaXhlZCBmbG9hdCBhbmQgaW50IGNvbXBhcmlzb24gKGUuZy4gZmxvb3IoKSkgdG8gYWxsLWZsb2F0CisgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGdvdCwgaW50KToKKyAgICAgICAgZ290ID0gZmxvYXQoZ290KQorICAgIGVsaWYgaXNpbnN0YW5jZShnb3QsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgaW50KToKKyAgICAgICAgZXhwZWN0ZWQgPSBmbG9hdChleHBlY3RlZCkKKworICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShnb3QsIGZsb2F0KToKKyAgICAgICAgaWYgbWF0aC5pc25hbihleHBlY3RlZCkgYW5kIG1hdGguaXNuYW4oZ290KToKKyAgICAgICAgICAgICMgUGFzcywgc2luY2UgYm90aCBuYW4KKyAgICAgICAgICAgIGZhaWx1cmUgPSBOb25lCisgICAgICAgIGVsaWYgbWF0aC5pc2luZihleHBlY3RlZCkgb3IgbWF0aC5pc2luZihnb3QpOgorICAgICAgICAgICAgIyBXZSBhbHJlYWR5IGtub3cgdGhleSdyZSBub3QgZXF1YWwsIGRyb3AgdGhyb3VnaCB0byBmYWlsdXJlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEJvdGggYXJlIGZpbml0ZSBmbG9hdHMgKG5vdykuIEFyZSB0aGV5IGNsb3NlIGVub3VnaD8KKyAgICAgICAgICAgIGZhaWx1cmUgPSB1bHBfYWJzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisKKyAgICAjIGFyZ3VtZW50cyBhcmUgbm90IGVxdWFsLCBhbmQgaWYgbnVtZXJpYywgYXJlIHRvbyBmYXIgYXBhcnQKKyAgICBpZiBmYWlsdXJlIGlzIG5vdCBOb25lOgorICAgICAgICBmYWlsX2ZtdCA9ICJleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKKyAgICAgICAgZmFpbF9tc2cgPSBmYWlsX2ZtdC5mb3JtYXQoZXhwZWN0ZWQsIGdvdCkKKyAgICAgICAgZmFpbF9tc2cgKz0gJyAoe30pJy5mb3JtYXQoZmFpbHVyZSkKKyAgICAgICAgcmV0dXJuIGZhaWxfbXNnCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogIyBDbGFzcyBwcm92aWRpbmcgYW4gX19pbmRleF9fIG1ldGhvZC4KIGNsYXNzIE15SW5kZXhhYmxlKG9iamVjdCk6CkBAIC0xODUsMTggKzI0NiwyNCBAQAogCiBjbGFzcyBNYXRoVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIHZhbHVlLCBleHBlY3RlZCk6Ci0gICAgICAgIGlmIGFicyh2YWx1ZS1leHBlY3RlZCkgPiBlcHM6Ci0gICAgICAgICAgICAjIFVzZSAlciBpbnN0ZWFkIG9mICVmIHNvIHRoZSBlcnJvciBtZXNzYWdlCi0gICAgICAgICAgICAjIGRpc3BsYXlzIGZ1bGwgcHJlY2lzaW9uLiBPdGhlcndpc2UgZGlzY3JlcGFuY2llcwotICAgICAgICAgICAgIyBpbiB0aGUgbGFzdCBmZXcgYml0cyB3aWxsIGxlYWQgdG8gdmVyeSBjb25mdXNpbmcKLSAgICAgICAgICAgICMgZXJyb3IgbWVzc2FnZXMKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnJXMgcmV0dXJuZWQgJXIsIGV4cGVjdGVkICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHZhbHVlLCBleHBlY3RlZCkpCisgICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIGdvdCwgZXhwZWN0ZWQsIHVscF90b2w9NSwgYWJzX3RvbD0wLjApOgorICAgICAgICAiIiJDb21wYXJlIGFyZ3VtZW50cyBleHBlY3RlZCBhbmQgZ290LCBhcyBmbG9hdHMsIGlmIGVpdGhlcgorICAgICAgICBpcyBhIGZsb2F0LCB1c2luZyBhIHRvbGVyYW5jZSBleHByZXNzZWQgaW4gbXVsdGlwbGVzIG9mCisgICAgICAgIHVscChleHBlY3RlZCkgb3IgYWJzb2x1dGVseSwgd2hpY2hldmVyIGlzIGdyZWF0ZXIuCisKKyAgICAgICAgQXMgYSBjb252ZW5pZW5jZSwgd2hlbiBuZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXQsIGFuZCBmb3IKKyAgICAgICAgbm9uLWZpbml0ZSBmbG9hdHMsIGV4YWN0IGVxdWFsaXR5IGlzIGRlbWFuZGVkLiBBbHNvLCBuYW49PW5hbgorICAgICAgICBpbiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgZmFpbHVyZSA9IHJlc3VsdF9jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKQorICAgICAgICBpZiBmYWlsdXJlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJ7fToge30iLmZvcm1hdChuYW1lLCBmYWlsdXJlKSkKIAogICAgIGRlZiB0ZXN0Q29uc3RhbnRzKHNlbGYpOgotICAgICAgICBzZWxmLmZ0ZXN0KCdwaScsIG1hdGgucGksIDMuMTQxNTkyNikKLSAgICAgICAgc2VsZi5mdGVzdCgnZScsIG1hdGguZSwgMi43MTgyODE4KQorICAgICAgICAjIFJlZjogQWJyYW1vd2l0eiAmIFN0ZWd1biAoRG92ZXIsIDE5NjUpCisgICAgICAgIHNlbGYuZnRlc3QoJ3BpJywgbWF0aC5waSwgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMpCisgICAgICAgIHNlbGYuZnRlc3QoJ2UnLCBtYXRoLmUsIDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgudGF1LCAyKm1hdGgucGkpCiAKICAgICBkZWYgdGVzdEFjb3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5hY29zKQpAQCAtMjA1LDYgKzI3Miw4IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2Fjb3MoMSknLCBtYXRoLmFjb3MoMSksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgSU5GKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgMSArIGVwcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCAtMSAtIGVwcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5hY29zKE5BTikpKQogCiAgICAgZGVmIHRlc3RBY29zaChzZWxmKToKQEAgLTIyNCw2ICsyOTMsOCBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdhc2luKDEpJywgbWF0aC5hc2luKDEpLCBtYXRoLnBpLzIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgMSArIGVwcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCAtMSAtIGVwcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5hc2luKE5BTikpKQogCiAgICAgZGVmIHRlc3RBc2luaChzZWxmKToKQEAgLTM3OCw5ICs0NDksOSBAQAogCiAgICAgZGVmIHRlc3RDb3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5jb3MpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2NvcygtcGkvMiknLCBtYXRoLmNvcygtbWF0aC5waS8yKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnY29zKC1waS8yKScsIG1hdGguY29zKC1tYXRoLnBpLzIpLCAwLCBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgnY29zKDApJywgbWF0aC5jb3MoMCksIDEpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaS8yKScsIG1hdGguY29zKG1hdGgucGkvMiksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaS8yKScsIG1hdGguY29zKG1hdGgucGkvMiksIDAsIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MocGkpJywgbWF0aC5jb3MobWF0aC5waSksIC0xKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmNvcyhJTkYpKSkKQEAgLTQwMyw2ICs0NzQsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKHBpKScsIG1hdGguZGVncmVlcyhtYXRoLnBpKSwgMTgwLjApCiAgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMocGkvMiknLCBtYXRoLmRlZ3JlZXMobWF0aC5waS8yKSwgOTAuMCkKICAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcygtcGkvNCknLCBtYXRoLmRlZ3JlZXMoLW1hdGgucGkvNCksIC00NS4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKDApJywgbWF0aC5kZWdyZWVzKDApLCAwKQogCiAgICAgZGVmIHRlc3RFeHAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5leHApCkBAIC00MTIsNiArNDg0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmV4cChJTkYpLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5leHAoTklORiksIDAuKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmV4cChOQU4pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5leHAsIDEwMDAwMDApCiAKICAgICBkZWYgdGVzdEZhYnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5mYWJzKQpAQCAtNjU0LDYgKzcyNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5oeXBvdChJTkYsIE5BTiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KE5BTiwgTklORiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KE5JTkYsIE5BTiksIElORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5oeXBvdCwgRkxPQVRfTUFYLCBGTE9BVF9NQVgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguaHlwb3QoMS4wLCBOQU4pKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5oeXBvdChOQU4sIC0yLjApKSkKIApAQCAtNzA3LDggKzc4MSwxMCBAQAogCiAgICAgZGVmIHRlc3RMb2cxcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmxvZzFwKQotICAgICAgICBuPSAyKio5MAotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQorICAgICAgICBmb3IgbiBpbiBbMiwgMioqOTAsIDIqKjMwMF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmxvZzFwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzFwKElORiksIElORikKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0TG9nMihzZWxmKToKQEAgLTkyMiw2ICs5OTgsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDE4MCknLCBtYXRoLnJhZGlhbnMoMTgwKSwgbWF0aC5waSkKICAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucyg5MCknLCBtYXRoLnJhZGlhbnMoOTApLCBtYXRoLnBpLzIpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoLTQ1KScsIG1hdGgucmFkaWFucygtNDUpLCAtbWF0aC5waS80KQorICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDApJywgbWF0aC5yYWRpYW5zKDApLCAwKQogCiAgICAgZGVmIHRlc3RTaW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5zaW4pCkBAIC05NTEsNiArMTAyOCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ3NxcnQoMSknLCBtYXRoLnNxcnQoMSksIDEpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3NxcnQoNCknLCBtYXRoLnNxcnQoNCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5zcXJ0KElORiksIElORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5zcXJ0LCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5zcXJ0LCBOSU5GKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLnNxcnQoTkFOKSkpCiAKQEAgLTk3MCw3ICsxMDQ4LDggQEAKICAgICBkZWYgdGVzdFRhbmgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC50YW5oKQogICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDApJywgbWF0aC50YW5oKDApLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDEpK3RhbmgoLTEpJywgbWF0aC50YW5oKDEpK21hdGgudGFuaCgtMSksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMSkrdGFuaCgtMSknLCBtYXRoLnRhbmgoMSkrbWF0aC50YW5oKC0xKSwgMCwKKyAgICAgICAgICAgICAgICAgICBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgndGFuaChpbmYpJywgbWF0aC50YW5oKElORiksIDEpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoLWluZiknLCBtYXRoLnRhbmgoTklORiksIC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLnRhbmgoTkFOKSkpCkBAIC0xMDIwLDcgKzEwOTksOCBAQAogCiAgICAgZGVmIHRlc3RJc25hbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoIm5hbiIpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoImluZiIpKiAwLikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCItbmFuIikpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgiaW5mIikgKiAwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbihmbG9hdCgiaW5mIikpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oMC4pKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oMS4pKQpAQCAtMTA4NCwzMCArMTE2NCw2NCBAQAogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfdGVzdGZpbGUoc2VsZik6CisgICAgICAgICMgU29tZSB0ZXN0cyBuZWVkIHRvIGJlIHNraXBwZWQgb24gYW5jaWVudCBPUyBYIHZlcnNpb25zLgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjc5NTMuCisgICAgICAgIFNLSVBfT05fVElHRVIgPSB7J3RhbjAwNjQnfQorCisgICAgICAgIG9zeF92ZXJzaW9uID0gTm9uZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLm1hY192ZXIoKVswXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZmFpbF9mbXQgPSAie306IHt9KHshcn0pOiB7fSIKKworICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZvciBpZCwgZm4sIGFyLCBhaSwgZXIsIGVpLCBmbGFncyBpbiBwYXJzZV90ZXN0ZmlsZSh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgIyBTa2lwIGlmIGVpdGhlciB0aGUgaW5wdXQgb3IgcmVzdWx0IGlzIGNvbXBsZXgsIG9yIGlmCi0gICAgICAgICAgICAjIGZsYWdzIGlzIG5vbmVtcHR5Ci0gICAgICAgICAgICBpZiBhaSAhPSAwLiBvciBlaSAhPSAwLiBvciBmbGFnczoKKyAgICAgICAgICAgICMgU2tpcCBpZiBlaXRoZXIgdGhlIGlucHV0IG9yIHJlc3VsdCBpcyBjb21wbGV4CisgICAgICAgICAgICBpZiBhaSAhPSAwLjAgb3IgZWkgIT0gMC4wOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBmbiBpbiBbJ3JlY3QnLCAncG9sYXInXToKICAgICAgICAgICAgICAgICAjIG5vIHJlYWwgdmVyc2lvbnMgb2YgcmVjdCwgcG9sYXIKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBTa2lwIGNlcnRhaW4gdGVzdHMgb24gT1MgWCAxMC40LgorICAgICAgICAgICAgaWYgb3N4X3ZlcnNpb24gaXMgbm90IE5vbmUgYW5kIG9zeF92ZXJzaW9uIDwgKDEwLCA1KToKKyAgICAgICAgICAgICAgICBpZiBpZCBpbiBTS0lQX09OX1RJR0VSOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihtYXRoLCBmbikKKworICAgICAgICAgICAgaWYgJ2ludmFsaWQnIGluIGZsYWdzIG9yICdkaXZpZGUtYnktemVybycgaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgZXIgPSAnVmFsdWVFcnJvcicKKyAgICAgICAgICAgIGVsaWYgJ292ZXJmbG93JyBpbiBmbGFnczoKKyAgICAgICAgICAgICAgICBlciA9ICdPdmVyZmxvd0Vycm9yJworCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZnVuYyhhcikKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCgiVW5leHBlY3RlZCBWYWx1ZUVycm9yOiAlc1xuICAgICAgICAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0ZXN0ICVzOiVzKCVyKVxuIikgJSAoZXhjLmFyZ3NbMF0sIGlkLCBmbiwgYXIpKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbChtZXNzYWdlKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1ZhbHVlRXJyb3InCiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJVbmV4cGVjdGVkIE92ZXJmbG93RXJyb3IgaW4gIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCAlczolcyglcilcbiIgJSAoaWQsIGZuLCBhcikpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1lc3NhZ2UpCi0gICAgICAgICAgICBzZWxmLmZ0ZXN0KCIlczolcyglcikiICUgKGlkLCBmbiwgYXIpLCByZXN1bHQsIGVyKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9ICdPdmVyZmxvd0Vycm9yJworCisgICAgICAgICAgICAjIERlZmF1bHQgdG9sZXJhbmNlcworICAgICAgICAgICAgdWxwX3RvbCwgYWJzX3RvbCA9IDUsIDAuMAorCisgICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGVyLCByZXN1bHQsIHVscF90b2wsIGFic190b2wpCisgICAgICAgICAgICBpZiBmYWlsdXJlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXIsIGZhaWx1cmUpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQobXNnKQorCisgICAgICAgIGlmIGZhaWx1cmVzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdGYWlsdXJlcyBpbiB0ZXN0X3Rlc3RmaWxlOlxuICAnICsKKyAgICAgICAgICAgICAgICAgICAgICAnXG4gICcuam9pbihmYWlsdXJlcykpCiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9tdGVzdGZpbGUoc2VsZik6Ci0gICAgICAgIGZhaWxfZm10ID0gInt9Ont9KHshcn0pOiBleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKKyAgICAgICAgZmFpbF9mbXQgPSAie306IHt9KHshcn0pOiB7fSIKIAogICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZvciBpZCwgZm4sIGFyZywgZXhwZWN0ZWQsIGZsYWdzIGluIHBhcnNlX210ZXN0ZmlsZShtYXRoX3Rlc3RjYXNlcyk6CkBAIC0xMTI1LDQxICsxMjM5LDQ4IEBACiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKICAgICAgICAgICAgICAgICBnb3QgPSAnT3ZlcmZsb3dFcnJvcicKIAotICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IE5vbmUKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ290LCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KToKLSAgICAgICAgICAgICAgICBpZiBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbWF0aC5pc25hbihnb3QpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbm90IG1hdGguaXNuYW4oZ290KToKLSAgICAgICAgICAgICAgICAgICAgaWYgZm4gPT0gJ2xnYW1tYSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHdlIHVzZSBhIHdlYWtlciBhY2N1cmFjeSB0ZXN0IGZvciBsZ2FtbWE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGxnYW1tYSBvbmx5IGFjaGlldmVzIGFuIGFic29sdXRlIGVycm9yIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgZmV3IG11bHRpcGxlcyBvZiB0aGUgbWFjaGluZSBhY2N1cmFjeSwgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgZ2VuZXJhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSBhY2NfY2hlY2soZXhwZWN0ZWQsIGdvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsX2VyciA9IDVlLTE1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfZXJyID0gNWUtMTUpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2VyZmMnOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBlcmZjIGhhcyBsZXNzLXRoYW4taWRlYWwgYWNjdXJhY3kgZm9yIGxhcmdlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cyAoeCB+IDI1IG9yIHNvKSwgbWFpbmx5IGR1ZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZXJyb3IgaW52b2x2ZWQgaW4gY29tcHV0aW5nIGV4cCgteCp4KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYIFdvdWxkIGJlIGJldHRlciB0byB3ZWFrZW4gdGhpcyB0ZXN0IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGxhcmdlIHgsIGluc3RlYWQgb2YgZm9yIGFsbCB4LgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgMjAwMCkKKyAgICAgICAgICAgICMgRGVmYXVsdCB0b2xlcmFuY2VzCisgICAgICAgICAgICB1bHBfdG9sLCBhYnNfdG9sID0gNSwgMC4wCiAKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSB1bHBzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIDIwKQotICAgICAgICAgICAgICAgICAgICBpZiBhY2N1cmFjeV9mYWlsdXJlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBFeGNlcHRpb25zIHRvIHRoZSBkZWZhdWx0cworICAgICAgICAgICAgaWYgZm4gPT0gJ2dhbW1hJzoKKyAgICAgICAgICAgICAgICAjIEV4cGVyaW1lbnRhbCByZXN1bHRzIG9uIG9uZSBwbGF0Zm9ybSBnYXZlCisgICAgICAgICAgICAgICAgIyBhbiBhY2N1cmFjeSBvZiA8PSAxMCB1bHBzIGFjcm9zcyB0aGUgZW50aXJlIGZsb2F0CisgICAgICAgICAgICAgICAgIyBkb21haW4uIFdlIHdlYWtlbiB0aGF0IHRvIHJlcXVpcmUgMjAgdWxwIGFjY3VyYWN5LgorICAgICAgICAgICAgICAgIHVscF90b2wgPSAyMAogCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGdvdCwgc3RyKSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgc3RyKToKLSAgICAgICAgICAgICAgICBpZiBnb3QgPT0gZXhwZWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIGZuID09ICdsZ2FtbWEnOgorICAgICAgICAgICAgICAgICMgd2UgdXNlIGEgd2Vha2VyIGFjY3VyYWN5IHRlc3QgZm9yIGxnYW1tYTsKKyAgICAgICAgICAgICAgICAjIGxnYW1tYSBvbmx5IGFjaGlldmVzIGFuIGFic29sdXRlIGVycm9yIG9mCisgICAgICAgICAgICAgICAgIyBhIGZldyBtdWx0aXBsZXMgb2YgdGhlIG1hY2hpbmUgYWNjdXJhY3ksIGluCisgICAgICAgICAgICAgICAgIyBnZW5lcmFsLgorICAgICAgICAgICAgICAgIGFic190b2wgPSAxZS0xNQogCi0gICAgICAgICAgICBmYWlsX21zZyA9IGZhaWxfZm10LmZvcm1hdChpZCwgZm4sIGFyZywgZXhwZWN0ZWQsIGdvdCkKLSAgICAgICAgICAgIGlmIGFjY3VyYWN5X2ZhaWx1cmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZmFpbF9tc2cgKz0gJyAoe30pJy5mb3JtYXQoYWNjdXJhY3lfZmFpbHVyZSkKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChmYWlsX21zZykKKyAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2VyZmMnIGFuZCBhcmcgPj0gMC4wOgorICAgICAgICAgICAgICAgICMgZXJmYyBoYXMgbGVzcy10aGFuLWlkZWFsIGFjY3VyYWN5IGZvciBsYXJnZQorICAgICAgICAgICAgICAgICMgYXJndW1lbnRzICh4IH4gMjUgb3Igc28pLCBtYWlubHkgZHVlIHRvIHRoZQorICAgICAgICAgICAgICAgICMgZXJyb3IgaW52b2x2ZWQgaW4gY29tcHV0aW5nIGV4cCgteCp4KS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBPYnNlcnZlZCBiZXR3ZWVuIENQeXRob24gYW5kIG1wbWF0aCBhdCAyNSBkcDoKKyAgICAgICAgICAgICAgICAjICAgICAgIHggPCAgMCA6IGVyciA8PSAyIHVscAorICAgICAgICAgICAgICAgICMgIDAgPD0geCA8ICAxIDogZXJyIDw9IDEwIHVscAorICAgICAgICAgICAgICAgICMgIDEgPD0geCA8IDEwIDogZXJyIDw9IDEwMCB1bHAKKyAgICAgICAgICAgICAgICAjIDEwIDw9IHggPCAyMCA6IGVyciA8PSAzMDAgdWxwCisgICAgICAgICAgICAgICAgIyAyMCA8PSB4ICAgICAgOiA8IDYwMCB1bHAKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgaWYgYXJnIDwgMS4wOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAKKyAgICAgICAgICAgICAgICBlbGlmIGFyZyA8IDEwLjA6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAwMAorCisgICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisgICAgICAgICAgICBpZiBmYWlsdXJlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXJnLCBmYWlsdXJlKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKG1zZykKIAogICAgICAgICBpZiBmYWlsdXJlczoKICAgICAgICAgICAgIHNlbGYuZmFpbCgnRmFpbHVyZXMgaW4gdGVzdF9tdGVzdGZpbGU6XG4gICcgKwpAQCAtMTI3Miw3ICsxMzkzLDggQEAKIAogICAgICAgICBkZWNpbWFsX2V4YW1wbGVzID0gWyhEZWNpbWFsKCcxLjAwMDAwMDAxJyksIERlY2ltYWwoJzEuMCcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMjAnKSwgRGVjaW1hbCgnMS4wZS0yMCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMTAwJyksIERlY2ltYWwoJzEuMGUtMTAwJykpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlMjAnKSwgRGVjaW1hbCgnMS4wZTIwJykpXQogICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKICAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShkZWNpbWFsX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCiAKQEAgLTEyODAsOCArMTQwMiwxMCBAQAogICAgICAgICAjIHRlc3Qgd2l0aCBGcmFjdGlvbiB2YWx1ZXMKICAgICAgICAgZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCiAKLSAgICAgICAgIyBjb3VsZCB1c2Ugc29tZSBtb3JlIGV4YW1wbGVzIGhlcmUhCi0gICAgICAgIGZyYWN0aW9uX2V4YW1wbGVzID0gWyhGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpXQorICAgICAgICBmcmFjdGlvbl9leGFtcGxlcyA9IFsKKyAgICAgICAgICAgIChGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpLAorICAgICAgICAgICAgKEZyYWN0aW9uKDEwMDAwMDAwMSksIEZyYWN0aW9uKDEwMDAwMDAwMCkpLAorICAgICAgICAgICAgKEZyYWN0aW9uKDEwKio4ICsgMSwgMTAqKjI4KSwgRnJhY3Rpb24oMSwgMTAqKjIwKSldCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZnJhY3Rpb25fZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKICAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS05KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CmluZGV4IDY4NTY1OTMuLjRlMmM5MDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CkBAIC0xMDEsNSArMTAxLDExIEBACiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UuanBnIiksICgiaW1hZ2UvanBlZyIsIE5vbmUpKQogICAgICAgICBlcShzZWxmLmRiLmd1ZXNzX3R5cGUoImltYWdlLnBuZyIpLCAoImltYWdlL3BuZyIsIE5vbmUpKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBtaW1ldHlwZXMpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weSBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQppbmRleCBmM2Y3MGNjLi41NmQ4NWU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21tYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CkBAIC03MTMsNiArNzEzLDEzIEBACiAgICAgICAgIGdjX2NvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9yZXR1cm5pbmdfdGhlX251bWJlcl9vZl9ieXRlc193cml0dGVuKHNlbGYpOgorICAgICAgICBtbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiIiKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiIngiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiInl6IiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiJweXRob24iKSwgNikKKwogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnY2Fubm90IHJlc2l6ZSBhbm9ueW1vdXMgbW1hcHMgb24gV2luZG93cycpCiAgICAgZGVmIHRlc3RfcmVzaXplX3Bhc3RfcG9zKHNlbGYpOgogICAgICAgICBtID0gbW1hcC5tbWFwKC0xLCA4MTkyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tc2lsaWIucHkgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQppbmRleCA4ZWYzMzRmLi5mNjU2ZjcyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQpAQCAtMSw2ICsxLDUgQEAKICIiIiBUZXN0IHN1aXRlIGZvciB0aGUgY29kZSBpbiBtc2lsaWIgIiIiCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUKIG1zaWxpYiA9IGltcG9ydF9tb2R1bGUoJ21zaWxpYicpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CmluZGV4IDhkN2EyMTMuLjAxYTFjZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQpAQCAtNSw3ICs1LDcgQEAKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCi1pbXBvcnQgdW5pdHRlc3QsIGlvLCBjb2RlY3MsIHN5cywgb3MKK2ltcG9ydCB1bml0dGVzdCwgaW8sIGNvZGVjcywgc3lzCiBpbXBvcnQgX211bHRpYnl0ZWNvZGVjCiAKIEFMTF9DSktFTkNPRElOR1MgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weQppbmRleCAyYmY0ZTc1Li45ZjIyNTAwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkKQEAgLTEsNiArMSwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCisKIHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLmluc3RhbGxfdGVzdHNfaW5fbW9kdWxlX2RpY3QoZ2xvYmFscygpLCAnZm9yaycpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weQppbmRleCAxOTNhMDRhLi40MDdiYjNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkKQEAgLTEsNiArMSwxMSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZy5pbnN0YWxsX3Rlc3RzX2luX21vZHVsZV9kaWN0KGdsb2JhbHMoKSwgJ2ZvcmtzZXJ2ZXInKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKaW5kZXggNTIyNzNlYS4uMzI1OTNkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CkBAIC02LDcgKzYsNiBAQAogCiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQotaW1wb3J0IHppcGltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKQEAgLTE1LDcgKzE0LDEwIEBACiAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKKyAgICBhc3NlcnRfcHl0aG9uX29rKQorCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKIAogIyBMb29rIHVwIHdoaWNoIHN0YXJ0IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSB0byB0ZXN0CiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3bi5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CmluZGV4IDMzNGFlOWUuLjY1NTg5NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CkBAIC0xLDYgKzEsMTEgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nCiAKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKKwogdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcuaW5zdGFsbF90ZXN0c19pbl9tb2R1bGVfZGljdChnbG9iYWxzKCksICdzcGF3bicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25pcy5weSBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CmluZGV4IDM4N2E0ZTcuLjIxMDc0YzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CkBAIC0xLDYgKzEsNSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIAogIyBTa2lwIHRlc3QgaWYgbmlzIG1vZHVsZSBkb2VzIG5vdCBleGlzdC4KIG5pcyA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnbmlzJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQppbmRleCAyZWY2ZDAyLi5mZWFiYTNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CkBAIC0xNTQyLDggKzE1NDIsMTAgQEAKICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSBiJ1NUQVJUVExTXHJcbic6CiAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5zZW5kYWxsKGInMzgyIEJlZ2luIFRMUyBuZWdvdGlhdGlvbiBub3dcclxuJykKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50ID0gc3NsLndyYXBfc29ja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1jZXJ0ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGNsaWVudCA9IGNvbnRleHQud3JhcF9zb2NrZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgICAgICAgICAgICAgIGNsZWFudXAuZW50ZXJfY29udGV4dChjbGllbnQpCiAgICAgICAgICAgICAgICAgICAgIHJlYWRlciA9IGNsZWFudXAuZW50ZXJfY29udGV4dChjbGllbnQubWFrZWZpbGUoJ3JiJykpCiAgICAgICAgICAgICAgICAgZWxpZiBjbWQgPT0gYidRVUlUXHJcbic6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKaW5kZXggMzBmYTYxMi4uNWI1OTBlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQpAQCAtMyw3ICszLDYgQEAKIAogZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogaW1wb3J0IHN5cwotaW1wb3J0IG9zCiBmcm9tIHVuaWNvZGVkYXRhIGltcG9ydCBub3JtYWxpemUsIHVuaWRhdGFfdmVyc2lvbgogCiBURVNUREFUQUZJTEUgPSAiTm9ybWFsaXphdGlvblRlc3QudHh0IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQppbmRleCA1ODBmMjAzLi45MGVkYjZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQpAQCAtNDUyLDUgKzQ1Miw4OCBAQAogICAgIGF0dHJpYnV0ZXMgPSBbJ3JlbHBhdGgnLCAnc3BsaXR1bmMnXQogCiAKK2NsYXNzIFBhdGhMaWtlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcGF0aCA9IG50cGF0aAorCisgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPScnKToKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlX25hbWUgPSBzdXBwb3J0LlRFU1RGTi5sb3dlcigpCisgICAgICAgIHNlbGYuZmlsZV9wYXRoID0gc2VsZi5QYXRoTGlrZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAneGInLCAwKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShiInRlc3RfbnRwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1jYXNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybWNhc2UpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzYWJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNhYnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2pvaW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRoLmpvaW4oJ2EnLCBzZWxmLlBhdGhMaWtlKCdiJyksICdjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoLmpvaW4oJ2EnLCAnYicsICdjJykpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRleHQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZHJpdmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGRyaXZlKQorCisgICAgZGVmIHRlc3RfcGF0aF9iYXNlbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmJhc2VuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9kaXJuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZGlybmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNsaW5rKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNsaW5rKQorCisgICAgZGVmIHRlc3RfcGF0aF9sZXhpc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubGV4aXN0cykKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNtb3VudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbW91bnQpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR1c2VyKQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR2YXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdmFycykKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybXBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfYWJzcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmFic3BhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlYWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVhbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wYXRoKHNlbGYpOgorICAgICAgICBjb21tb25fcGF0aCA9IHNlbGYucGF0aC5jb21tb25wYXRoKFtzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbl9wYXRoLCBzZWxmLmZpbGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNkaXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2RpcikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CmluZGV4IDZlZjkzZDkuLjY4MDZjNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKQEAgLTEsNiArMSw3IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBwYXJ0IDIsIG9wY29kZXMKIAogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IGFubl9tb2R1bGUKIAogY2xhc3MgT3Bjb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIwLDYgKzIxLDMyIEBACiAgICAgICAgIGlmIG4gIT0gOTA6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ3RyeSBpbnNpZGUgZm9yJykKIAorICAgIGRlZiB0ZXN0X3NldHVwX2Fubm90YXRpb25zX2xpbmUoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBTRVRVUF9BTk5PVEFUSU9OUyBkb2VzIG5vdCBjcmVhdGUgc3B1cmlvdXMgbGluZSBudW1iZXJzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3Blbihhbm5fbW9kdWxlLl9fZmlsZV9fKSBhcyBmOgorICAgICAgICAgICAgICAgIHR4dCA9IGYucmVhZCgpCisgICAgICAgICAgICBjbyA9IGNvbXBpbGUodHh0LCBhbm5fbW9kdWxlLl9fZmlsZV9fLCAnZXhlYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvLmNvX2ZpcnN0bGluZW5vLCA2KQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X25vX2Fubm90YXRpb25zX2lmX25vdF9uZWVkZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEM6IHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBDLl9fYW5ub3RhdGlvbnNfXworCisgICAgZGVmIHRlc3RfdXNlX2V4aXN0aW5nX2Fubm90YXRpb25zKHNlbGYpOgorICAgICAgICBucyA9IHsnX19hbm5vdGF0aW9uc19fJzogezE6IDJ9fQorICAgICAgICBleGVjKCd4OiBpbnQnLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuc1snX19hbm5vdGF0aW9uc19fJ10sIHsneCc6IGludCwgMTogMn0pCisKKyAgICBkZWYgdGVzdF9kb19ub3RfcmVjcmVhdGVfYW5ub3RhdGlvbnMoc2VsZik6CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBkZWwgX19hbm5vdGF0aW9uc19fCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICAgICAgeDogaW50CisKICAgICBkZWYgdGVzdF9yYWlzZV9jbGFzc19leGNlcHRpb25zKHNlbGYpOgogCiAgICAgICAgIGNsYXNzIEFDbGFzcyhFeGNlcHRpb24pOiBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5IGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQppbmRleCBiNWJhOTc2Li42MjU0MDkxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKQEAgLTEyMCw2MyArMTIwLDYzIEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYWRkLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuYWRkKDMsIDQpID09IDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuYWRkKDMsIDQpLCA3KQogCiAgICAgZGVmIHRlc3RfYml0d2lzZV9hbmQoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hbmRfKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFuZF8sIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5hbmRfKDB4ZiwgMHhhKSA9PSAweGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuYW5kXygweGYsIDB4YSksIDB4YSkKIAogICAgIGRlZiB0ZXN0X2NvbmNhdChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoJ3B5JywgJ3Rob24nKSA9PSAncHl0aG9uJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdChbMSwgMl0sIFszLCA0XSkgPT0gWzEsIDIsIDMsIDRdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KFNlcTEoWzUsIDZdKSwgU2VxMShbN10pKSA9PSBbNSwgNiwgN10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoU2VxMihbNSwgNl0pLCBTZXEyKFs3XSkpID09IFs1LCA2LCA3XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoJ3B5JywgJ3Rob24nKSwgJ3B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KFsxLCAyXSwgWzMsIDRdKSwgWzEsIDIsIDMsIDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdChTZXExKFs1LCA2XSksIFNlcTEoWzddKSksIFs1LCA2LCA3XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoU2VxMihbNSwgNl0pLCBTZXEyKFs3XSkpLCBbNSwgNiwgN10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0LCAxMywgMjkpCiAKICAgICBkZWYgdGVzdF9jb3VudE9mKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY291bnRPZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb3VudE9mLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY291bnRPZihbMSwgMiwgMSwgMywgMSwgNF0sIDMpID09IDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgNSkgPT0gMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY291bnRPZihbMSwgMiwgMSwgMywgMSwgNF0sIDUpLCAwKQogCiAgICAgZGVmIHRlc3RfZGVsaXRlbShzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBhID0gWzQsIDMsIDIsIDFdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZGVsaXRlbSwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5kZWxpdGVtLCBhLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZGVsaXRlbShhLCAxKSBpcyBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA9PSBbNCwgMiwgMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9wZXJhdG9yLmRlbGl0ZW0oYSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzQsIDIsIDFdKQogCiAgICAgZGVmIHRlc3RfZmxvb3JkaXYoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5mbG9vcmRpdiwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5mbG9vcmRpdiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmZsb29yZGl2KDUsIDIpID09IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuZmxvb3JkaXYoNSwgMiksIDIpCiAKICAgICBkZWYgdGVzdF90cnVlZGl2KHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IudHJ1ZWRpdiwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci50cnVlZGl2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IudHJ1ZWRpdig1LCAyKSA9PSAyLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IudHJ1ZWRpdig1LCAyKSwgMi41KQogCiAgICAgZGVmIHRlc3RfZ2V0aXRlbShzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBhID0gcmFuZ2UoMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZ2V0aXRlbSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZXRpdGVtLCBhLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZ2V0aXRlbShhLCAyKSA9PSAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmdldGl0ZW0oYSwgMiksIDIpCiAKICAgICBkZWYgdGVzdF9pbmRleE9mKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaW5kZXhPZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleE9mLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuaW5kZXhPZihbNCwgMywgMiwgMV0sIDMpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW5kZXhPZihbNCwgMywgMiwgMV0sIDMpLCAxKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5pbmRleE9mLCBbNCwgMywgMiwgMV0sIDApCiAKICAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CkBAIC0xODksMjEgKzE4OSwyMSBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubHNoaWZ0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmxzaGlmdCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5sc2hpZnQoNSwgMSkgPT0gMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5sc2hpZnQoNSwgMCkgPT0gNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5sc2hpZnQoNSwgMSksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxzaGlmdCg1LCAwKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IubHNoaWZ0LCAyLCAtMSkKIAogICAgIGRlZiB0ZXN0X21vZChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tb2QsIE5vbmUsIDQyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubW9kKDUsIDIpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubW9kKDUsIDIpLCAxKQogCiAgICAgZGVmIHRlc3RfbXVsKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm11bCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm11bCg1LCAyKSA9PSAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5tdWwoNSwgMiksIDEwKQogCiAgICAgZGVmIHRlc3RfbWF0bXVsKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCkBAIC0yMjcsNyArMjI3LDcgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm9yXykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5vcl8sIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5vcl8oMHhhLCAweDUpID09IDB4ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5vcl8oMHhhLCAweDUpLCAweGYpCiAKICAgICBkZWYgdGVzdF9wb3Moc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKQEAgLTI1MCw4ICsyNTAsOCBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucnNoaWZ0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnJzaGlmdCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5yc2hpZnQoNSwgMSkgPT0gMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnJzaGlmdCg1LCAwKSA9PSA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnJzaGlmdCg1LCAxKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5yc2hpZnQoNSwgMCksIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLnJzaGlmdCwgMiwgLTEpCiAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKQEAgLTI2NiwxNSArMjY2LDE1IEBACiAgICAgICAgIGEgPSBsaXN0KHJhbmdlKDMpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnNldGl0ZW0sIGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnNldGl0ZW0oYSwgMCwgMikgaXMgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPT0gWzIsIDEsIDJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcGVyYXRvci5zZXRpdGVtKGEsIDAsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIFsyLCAxLCAyXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSwgNCwgMikKIAogICAgIGRlZiB0ZXN0X3N1YihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnN1YikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zdWIsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5zdWIoNSwgMikgPT0gMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5zdWIoNSwgMiksIDMpCiAKICAgICBkZWYgdGVzdF90cnV0aChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpAQCAtMjkyLDcgKzI5Miw3IEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci54b3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IueG9yLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IueG9yKDB4YiwgMHhjKSA9PSAweDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IueG9yKDB4YiwgMHhjKSwgMHg3KQogCiAgICAgZGVmIHRlc3RfaXMoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CmluZGV4IDc2MjFjMjQuLjkxYTAzMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQpAQCAtMTYsNiArMTYsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAoraW1wb3J0IG9wdHBhcnNlCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbiwgT3B0aW9uLCBcCiAgICAgIFRpdGxlZEhlbHBGb3JtYXR0ZXIsIE9wdGlvblBhcnNlciwgT3B0aW9uR3JvdXAsIFwKICAgICAgU1VQUFJFU1NfVVNBR0UsIE9wdGlvbkVycm9yLCBPcHRpb25Db25mbGljdEVycm9yLCBcCkBAIC0xNjUwLDYgKzE2NTEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wdGlvbiAtbDogaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiAnMHgxMngnIikKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydjaGVja19idWlsdGluJywgJ0FtYmlndW91c09wdGlvbkVycm9yJywgJ05PX0RFRkFVTFQnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBvcHRwYXJzZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3JkZXJlZF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKaW5kZXggOTAxZDRiMi4uYTM1ZWQxMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgY29weQogaW1wb3J0IGdjCkBAIC05Nyw2ICs5OCwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCAoKSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QudXBkYXRlKQogCisgICAgZGVmIHRlc3RfaW5pdF9jYWxscyhzZWxmKToKKyAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgZGVmIGtleXMoc2VsZik6CisgICAgICAgICAgICAgICAgY2FsbHMuYXBwZW5kKCdrZXlzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKyAgICAgICAgICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgICAgICAgICBjYWxscy5hcHBlbmQoJ2l0ZW1zJykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKworICAgICAgICBzZWxmLk9yZGVyZWREaWN0KFNwYW0oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxscywgWydrZXlzJ10pCisKICAgICBkZWYgdGVzdF9mcm9ta2V5cyhzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycpCkBAIC0yOTgsOSArMzEyLDExIEBACiAgICAgICAgICMgZG8gbm90IHNhdmUgaW5zdGFuY2UgZGljdGlvbmFyeSBpZiBub3QgbmVlZGVkCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShvZC5fX2RpY3RfXywgZGljdCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2QuX19yZWR1Y2VfXygpWzJdKQogICAgICAgICBvZC54ID0gMTAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUob2QuX19yZWR1Y2VfXygpWzJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLl9fZGljdF9fWyd4J10sIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLl9fcmVkdWNlX18oKVsyXSwgeyd4JzogMTB9KQogCiAgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CkBAIC00MDMsNiArNDE5LDE0IEBACiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKipkKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihvZCksIHN5cy5nZXRzaXplb2YoZCkpCiAKKyAgICBkZWYgdGVzdF92aWV3cyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNDI4NgorICAgICAgICBzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZyB5ZXN0ZXJkYXkgYmVmb3JlIGRhd24nLnNwbGl0KCkKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cyhzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLmtleXMoKSwgZGljdChvZCkua2V5cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLml0ZW1zKCksIGRpY3Qob2QpLml0ZW1zKCkpCisKICAgICBkZWYgdGVzdF9vdmVycmlkZV91cGRhdGUoc2VsZik6CiAgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICAjIFZlcmlmeSB0aGF0IHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHVwZGF0ZSgpIHdpdGhvdXQgYnJlYWtpbmcgX19pbml0X18oKQpAQCAtNjExLDYgKzYzNSwyNSBAQAogICAgIE9yZGVyZWREaWN0ID0gcHlfY29sbC5PcmRlcmVkRGljdAogCiAKK2NsYXNzIENQeXRob25CdWlsdGluRGljdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJCdWlsdGluIGRpY3QgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlci4KKworICAgIFJldXNlIHNvbWUgb2YgdGVzdHMgaW4gT3JkZXJlZERpY3Qgc2VsZWN0aXZlbHkuCisgICAgIiIiCisKKyAgICBtb2R1bGUgPSBidWlsdGlucworICAgIE9yZGVyZWREaWN0ID0gZGljdAorCitmb3IgbWV0aG9kIGluICgKKyAgICAidGVzdF9pbml0IHRlc3RfdXBkYXRlIHRlc3RfYWJjIHRlc3RfY2xlYXIgdGVzdF9kZWxpdGVtICIgKworICAgICJ0ZXN0X3NldGl0ZW0gdGVzdF9kZXRlY3RfZGVsZXRpb25fZHVyaW5nX2l0ZXJhdGlvbiAiICsKKyAgICAidGVzdF9wb3BpdGVtIHRlc3RfcmVpbnNlcnQgdGVzdF9vdmVycmlkZV91cGRhdGUgIiArCisgICAgInRlc3RfaGlnaGx5X25lc3RlZCB0ZXN0X2hpZ2hseV9uZXN0ZWRfc3ViY2xhc3MgIiArCisgICAgInRlc3RfZGVsaXRlbV9oYXNoX2NvbGxpc2lvbiAiKS5zcGxpdCgpOgorICAgIHNldGF0dHIoQ1B5dGhvbkJ1aWx0aW5EaWN0VGVzdHMsIG1ldGhvZCwgZ2V0YXR0cihPcmRlcmVkRGljdFRlc3RzLCBtZXRob2QpKQorZGVsIG1ldGhvZAorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNfY29sbCwgJ3JlcXVpcmVzIHRoZSBDIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb25zIG1vZHVsZScpCiBjbGFzcyBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cyhPcmRlcmVkRGljdFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTYyNSwxOCArNjY4LDIwIEBACiAgICAgICAgIHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKIAotICAgICAgICBiYXNpY3NpemUgPSBzaXplKCduMlAnICsgJzNQblBuMlAnKSArIGNhbGNzaXplKCcyblBuJykKLSAgICAgICAgZW50cnlzaXplID0gY2FsY3NpemUoJ24yUCcpICsgY2FsY3NpemUoJ1AnKQorICAgICAgICBiYXNpY3NpemUgPSBzaXplKCduUTJQJyArICczUG5QbjJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKQorCisgICAgICAgIGVudHJ5c2l6ZSA9IGNhbGNzaXplKCduMlAnKQorICAgICAgICBwID0gY2FsY3NpemUoJ1AnKQogICAgICAgICBub2Rlc2l6ZSA9IGNhbGNzaXplKCdQbjJQJykKIAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqZW50cnlzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplKSAgIyA4Ynl0ZSBpbmRpY2llcyArIDgqMi8vMyAqIGVudHJ5IHRhYmxlCiAgICAgICAgIG9kLnggPSAxCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSkKKyAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqcCArIDggKyA1KmVudHJ5c2l6ZSkKICAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMyldKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUgKyAzKm5vZGVzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplICsgMypub2Rlc2l6ZSkKICAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMywgMTApXSkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDE2KmVudHJ5c2l6ZSArIDEwKm5vZGVzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgMTYqcCArIDE2ICsgMTAqZW50cnlzaXplICsgMTAqbm9kZXNpemUpCiAKICAgICAgICAgY2hlY2sob2Qua2V5cygpLCBzaXplKCdQJykpCiAgICAgICAgIGNoZWNrKG9kLml0ZW1zKCksIHNpemUoJ1AnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IDEwMzgzY2YuLjYzODI0NGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IG1tYXAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzaWduYWwKQEAgLTY1LDYgKzY0LDggQEAKICAgICBJTlRfTUFYID0gUFlfU1NJWkVfVF9NQVggPSBzeXMubWF4c2l6ZQogCiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5peF9zaGVsbAorCiAKIHJvb3RfaW5fcG9zaXggPSBGYWxzZQogaWYgaGFzYXR0cihvcywgJ2dldGV1aWQnKToKQEAgLTgyLDYgKzgzLDMyIEBACiAjIElzc3VlICMxNDExMDogU29tZSB0ZXN0cyBmYWlsIG9uIEZyZWVCU0QgaWYgdGhlIHVzZXIgaXMgaW4gdGhlIHdoZWVsIGdyb3VwLgogSEFWRV9XSEVFTF9HUk9VUCA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJykgYW5kIG9zLmdldGdpZCgpID09IDAKIAorCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGlnbm9yZV9kZXByZWNhdGlvbl93YXJuaW5ncyhtc2dfcmVnZXgsIHF1aWV0PUZhbHNlKToKKyAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKG1zZ19yZWdleCwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpZXQ9cXVpZXQpOgorICAgICAgICB5aWVsZAorCisKK2RlZiByZXF1aXJlc19vc19mdW5jKG5hbWUpOgorICAgIHJldHVybiB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsIG5hbWUpLCAncmVxdWlyZXMgb3MuJXMnICUgbmFtZSkKKworCitjbGFzcyBfUGF0aExpa2Uob3MuUGF0aExpa2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9IiIpOgorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLnBhdGgpCisKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKwogZGVmIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBjb250ZW50PWInY29udGVudCcpOgogICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInhiIiwgMCkgYXMgZnA6CiAgICAgICAgIGZwLndyaXRlKGNvbnRlbnQpCkBAIC0xNDUsOSArMTcyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZHMgSU5UX01BWCA8IFBZX1NTSVpFX1RfTUFYIikKICAgICBAc3VwcG9ydC5iaWdtZW10ZXN0KHNpemU9SU5UX01BWCArIDEwLCBtZW11c2U9MSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9sYXJnZV9yZWFkKHNlbGYsIHNpemUpOgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgotICAgICAgICAgICAgZnAud3JpdGUoYid0ZXN0JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIndGVzdCcpCiAKICAgICAgICAgIyBJc3N1ZSAjMjE5MzI6IE1ha2Ugc3VyZSB0aGF0IG9zLnJlYWQoKSBkb2VzIG5vdCByYWlzZSBhbgogICAgICAgICAjIE92ZXJmbG93RXJyb3IgZm9yIHNpemUgbGFyZ2VyIHRoYW4gSU5UX01BWApAQCAtMjA0LDExICsyMzAsMTIgQEAKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIFRFU1RGTjIgPSBzdXBwb3J0LlRFU1RGTiArICIuMiIKLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCIxIikKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoIjIiKQotICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBURVNURk4yKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIFRFU1RGTjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIiMSIpCisgICAgICAgIGNyZWF0ZV9maWxlKFRFU1RGTjIsIGIiMiIpCisKICAgICAgICAgb3MucmVwbGFjZShzdXBwb3J0LlRFU1RGTiwgVEVTVEZOMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIG9zLnN0YXQsIHN1cHBvcnQuVEVTVEZOKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3InKSBhcyBmOgpAQCAtMzA5LDkgKzMzNiw3IEBACiAgICAgICAgICAgICBmbmFtZSA9IHNlbGYuZm5hbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBlbmNvZGUgJWEgZm9yIHRoZSBmaWxlc3lzdGVtIiAlIHNlbGYuZm5hbWUpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQogCiAgICAgZGVmIHRlc3Rfc3RhdF9yZXN1bHRfcGlja2xlKHNlbGYpOgogICAgICAgICByZXN1bHQgPSBvcy5zdGF0KHNlbGYuZm5hbWUpCkBAIC00NjIsMTkgKzQ4NywxNCBAQAogCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi5kaXJuYW1lKQogICAgICAgICBvcy5ta2RpcihzZWxmLmRpcm5hbWUpCi0gICAgICAgIHdpdGggb3BlbihzZWxmLmZuYW1lLCAnd2InKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIiQUJDIikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc2VsZi5mbmFtZSkKIAogICAgICAgICBkZWYgcmVzdG9yZV9mbG9hdF90aW1lcyhzdGF0ZSk6Ci0gICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0KKyAgICAgICAgICAgIHdpdGggaWdub3JlX2RlcHJlY2F0aW9uX3dhcm5pbmdzKCdzdGF0X2Zsb2F0X3RpbWVzJyk6CiAgICAgICAgICAgICAgICAgb3Muc3RhdF9mbG9hdF90aW1lcyhzdGF0ZSkKIAogICAgICAgICAjIGVuc3VyZSB0aGF0IHN0X2F0aW1lIGFuZCBzdF9tdGltZSBhcmUgZmxvYXQKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0KKyAgICAgICAgd2l0aCBpZ25vcmVfZGVwcmVjYXRpb25fd2FybmluZ3MoJ3N0YXRfZmxvYXRfdGltZXMnKToKICAgICAgICAgICAgIG9sZF9mbG9hdF90aW1lcyA9IG9zLnN0YXRfZmxvYXRfdGltZXMoLTEpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9mbG9hdF90aW1lcywgb2xkX2Zsb2F0X3RpbWVzKQogCkBAIC01NjYsNyArNTg2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmQgc3VwcG9ydCBmb3IgdXRpbWUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQogICAgIGRlZiB0ZXN0X3V0aW1lX2ZkKHNlbGYpOgogICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIG5zKToKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicsIDApIGFzIGZwOgogICAgICAgICAgICAgICAgICMgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIHRvIHRlc3QgZnV0aW1lbnModGltZXNwZWMpCiAgICAgICAgICAgICAgICAgIyBvciBmdXRpbWVzKHRpbWV2YWwpCiAgICAgICAgICAgICAgICAgb3MudXRpbWUoZnAuZmlsZW5vKCksIG5zPW5zKQpAQCAtNjc4LDE4ICs2OTgsMjAgQEAKICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24KIAogICAgICMgQnVnIDExMTA0NzgKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModW5peF9zaGVsbCBhbmQgb3MucGF0aC5leGlzdHModW5peF9zaGVsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIGEgc2hlbGwnKQogICAgIGRlZiB0ZXN0X3VwZGF0ZTIoc2VsZik6CiAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQogICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShIRUxMTz0iV29ybGQiKQotICAgICAgICB3aXRoIG9zLnBvcGVuKCIvYmluL3NoIC1jICdlY2hvICRIRUxMTyciKSBhcyBwb3BlbjoKKyAgICAgICAgd2l0aCBvcy5wb3BlbigiJXMgLWMgJ2VjaG8gJEhFTExPJyIgJSB1bml4X3NoZWxsKSBhcyBwb3BlbjoKICAgICAgICAgICAgIHZhbHVlID0gcG9wZW4ucmVhZCgpLnN0cmlwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICJXb3JsZCIpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModW5peF9zaGVsbCBhbmQgb3MucGF0aC5leGlzdHModW5peF9zaGVsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIGEgc2hlbGwnKQogICAgIGRlZiB0ZXN0X29zX3BvcGVuX2l0ZXIoc2VsZik6Ci0gICAgICAgIHdpdGggb3MucG9wZW4oCi0gICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKKyAgICAgICAgd2l0aCBvcy5wb3BlbigiJXMgLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIgorICAgICAgICAgICAgICAgICAgICAgICUgdW5peF9zaGVsbCkgYXMgcG9wZW46CiAgICAgICAgICAgICBpdCA9IGl0ZXIocG9wZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTFcbiIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTJcbiIpCkBAIC04MjAsNiArODQyLDcgQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgam9pbiA9IG9zLnBhdGguam9pbgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHN1cHBvcnQuVEVTVEZOKQogCiAgICAgICAgICMgQnVpbGQ6CiAgICAgICAgICMgICAgIFRFU1RGTi8KQEAgLTg0MiwxMSArODY1LDExIEBACiAgICAgICAgIHNlbGYuc3ViMV9wYXRoID0gam9pbihzZWxmLndhbGtfcGF0aCwgIlNVQjEiKQogICAgICAgICBzZWxmLnN1YjExX3BhdGggPSBqb2luKHNlbGYuc3ViMV9wYXRoLCAiU1VCMTEiKQogICAgICAgICBzdWIyX3BhdGggPSBqb2luKHNlbGYud2Fsa19wYXRoLCAiU1VCMiIpCi0gICAgICAgIHNlbGYuc3ViMjFfcGF0aCA9IGpvaW4oc3ViMl9wYXRoLCAiU1VCMjEiKQorICAgICAgICBzdWIyMV9wYXRoID0gam9pbihzdWIyX3BhdGgsICJTVUIyMSIpCiAgICAgICAgIHRtcDFfcGF0aCA9IGpvaW4oc2VsZi53YWxrX3BhdGgsICJ0bXAxIikKICAgICAgICAgdG1wMl9wYXRoID0gam9pbihzZWxmLnN1YjFfcGF0aCwgInRtcDIiKQogICAgICAgICB0bXAzX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgInRtcDMiKQotICAgICAgICB0bXA1X3BhdGggPSBqb2luKHNlbGYuc3ViMjFfcGF0aCwgInRtcDMiKQorICAgICAgICB0bXA1X3BhdGggPSBqb2luKHN1YjIxX3BhdGgsICJ0bXAzIikKICAgICAgICAgc2VsZi5saW5rX3BhdGggPSBqb2luKHN1YjJfcGF0aCwgImxpbmsiKQogICAgICAgICB0Ml9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIikKICAgICAgICAgdG1wNF9wYXRoID0gam9pbihzdXBwb3J0LlRFU1RGTiwgIlRFU1QyIiwgInRtcDQiKQpAQCAtODU3LDcgKzg4MCw3IEBACiAgICAgICAgICMgQ3JlYXRlIHN0dWZmLgogICAgICAgICBvcy5tYWtlZGlycyhzZWxmLnN1YjExX3BhdGgpCiAgICAgICAgIG9zLm1ha2VkaXJzKHN1YjJfcGF0aCkKLSAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5zdWIyMV9wYXRoKQorICAgICAgICBvcy5tYWtlZGlycyhzdWIyMV9wYXRoKQogICAgICAgICBvcy5tYWtlZGlycyh0Ml9wYXRoKQogCiAgICAgICAgIGZvciBwYXRoIGluIHRtcDFfcGF0aCwgdG1wMl9wYXRoLCB0bXAzX3BhdGgsIHRtcDRfcGF0aCwgdG1wNV9wYXRoOgpAQCAtODc1LDE2ICs4OTgsMTUgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc3ViMl90cmVlID0gKHN1YjJfcGF0aCwgW10sIFsidG1wMyJdKQogCi0gICAgICAgIG9zLmNobW9kKHNlbGYuc3ViMjFfcGF0aCwgMCkKKyAgICAgICAgb3MuY2htb2Qoc3ViMjFfcGF0aCwgMCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubGlzdGRpcihzZWxmLnN1YjIxX3BhdGgpCisgICAgICAgICAgICBvcy5saXN0ZGlyKHN1YjIxX3BhdGgpCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2htb2QsIHN1YjIxX3BhdGgsIHN0YXQuU19JUldYVSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuc3ViMjFfcGF0aCwgc3RhdC5TX0lSV1hVKQorICAgICAgICAgICAgb3MuY2htb2Qoc3ViMjFfcGF0aCwgc3RhdC5TX0lSV1hVKQogICAgICAgICAgICAgb3MudW5saW5rKHRtcDVfcGF0aCkKLSAgICAgICAgICAgIG9zLnJtZGlyKHNlbGYuc3ViMjFfcGF0aCkKLSAgICAgICAgICAgIHNlbGYuc3ViMjFfcGF0aCA9IE5vbmUKKyAgICAgICAgICAgIG9zLnJtZGlyKHN1YjIxX3BhdGgpCiAgICAgICAgICAgICBkZWwgc2VsZi5zdWIyX3RyZWVbMV1bOjFdCiAKICAgICBkZWYgdGVzdF93YWxrX3RvcGRvd24oc2VsZik6CkBAIC05MDQsMTAgKzkyNiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsyICsgZmxpcHBlZF0sIChzZWxmLnN1YjExX3BhdGgsIFtdLCBbXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzMgLSAyICogZmxpcHBlZF0sIHNlbGYuc3ViMl90cmVlKQogCi0gICAgZGVmIHRlc3Rfd2Fsa19wcnVuZShzZWxmKToKKyAgICBkZWYgdGVzdF93YWxrX3BydW5lKHNlbGYsIHdhbGtfcGF0aD1Ob25lKToKKyAgICAgICAgaWYgd2Fsa19wYXRoIGlzIE5vbmU6CisgICAgICAgICAgICB3YWxrX3BhdGggPSBzZWxmLndhbGtfcGF0aAogICAgICAgICAjIFBydW5lIHRoZSBzZWFyY2guCiAgICAgICAgIGFsbCA9IFtdCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBzZWxmLndhbGsoc2VsZi53YWxrX3BhdGgpOgorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gc2VsZi53YWxrKHdhbGtfcGF0aCk6CiAgICAgICAgICAgICBhbGwuYXBwZW5kKChyb290LCBkaXJzLCBmaWxlcykpCiAgICAgICAgICAgICAjIERvbid0IGRlc2NlbmQgaW50byBTVUIxLgogICAgICAgICAgICAgaWYgJ1NVQjEnIGluIGRpcnM6CkBAIC05MTYsMTcgKzk0MCwyMCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLndhbGtfcGF0aCwgWyJTVUIyIl0sIFsidG1wMSJdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHdhbGtfcGF0aCksIFsiU1VCMiJdLCBbInRtcDEiXSkpCiAKICAgICAgICAgYWxsWzFdWy0xXS5zb3J0KCkKICAgICAgICAgYWxsWzFdWzFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxXSwgc2VsZi5zdWIyX3RyZWUpCiAKKyAgICBkZWYgdGVzdF9maWxlX2xpa2VfcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X3dhbGtfcHJ1bmUoX1BhdGhMaWtlKHNlbGYud2Fsa19wYXRoKSkKKwogICAgIGRlZiB0ZXN0X3dhbGtfYm90dG9tX3VwKHNlbGYpOgogICAgICAgICAjIFdhbGsgYm90dG9tLXVwLgogICAgICAgICBhbGwgPSBsaXN0KHNlbGYud2FsayhzZWxmLndhbGtfcGF0aCwgdG9wZG93bj1GYWxzZSkpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWxsKSwgNCwgYWxsKQogICAgICAgICAjIFdlIGNhbid0IGtub3cgd2hpY2ggb3JkZXIgU1VCMSBhbmQgU1VCMiB3aWxsIGFwcGVhciBpbi4KICAgICAgICAgIyBOb3QgZmxpcHBlZDogIFNVQjExLCBTVUIxLCBTVUIyLCBURVNURk4KICAgICAgICAgIyAgICAgZmxpcHBlZDogIFNVQjIsIFNVQjExLCBTVUIxLCBURVNURk4KQEAgLTk1NywyNCArOTg0LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRGlkbid0IGZvbGxvdyBzeW1saW5rIHdpdGggZm9sbG93bGlua3M9VHJ1ZSIpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICMgVGVhciBldmVyeXRoaW5nIGRvd24uICBUaGlzIGlzIGEgZGVjZW50IHVzZSBmb3IgYm90dG9tLXVwIG9uCi0gICAgICAgICMgV2luZG93cywgd2hpY2ggZG9lc24ndCBoYXZlIGEgcmVjdXJzaXZlIGRlbGV0ZSBjb21tYW5kLiAgVGhlCi0gICAgICAgICMgKG5vdCBzbykgc3VidGxldHkgaXMgdGhhdCBybWRpciB3aWxsIGZhaWwgdW5sZXNzIHRoZSBkaXIncwotICAgICAgICAjIGtpZHMgYXJlIHJlbW92ZWQgZmlyc3QsIHNvIGJvdHRvbSB1cCBpcyBlc3NlbnRpYWwuCi0gICAgICAgIGlmIHNlbGYuc3ViMjFfcGF0aDoKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuc3ViMjFfcGF0aCwgc3RhdC5TX0lSV1hVKQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKLSAgICAgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5qb2luKHJvb3QsIG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNsaW5rKGRpcm5hbWUpOgotICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXJuYW1lKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkaXJuYW1lKQotICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLQogICAgIGRlZiB0ZXN0X3dhbGtfYmFkX2RpcihzZWxmKToKICAgICAgICAgIyBXYWxrIHRvcC1kb3duLgogICAgICAgICBlcnJvcnMgPSBbXQpAQCAtMTA2MiwyOSArMTA3MSwxMSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIG5ld2ZkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2ZkLCBtaW5mZCkKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgIyBjbGVhbnVwCi0gICAgICAgIGlmIHNlbGYuc3ViMjFfcGF0aDoKLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuc3ViMjFfcGF0aCwgc3RhdC5TX0lSV1hVKQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcnM6Ci0gICAgICAgICAgICAgICAgc3QgPSBvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIoc3Quc3RfbW9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCi0gICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotCiBjbGFzcyBCeXRlc1dhbGtUZXN0cyhXYWxrVGVzdHMpOgogICAgICIiIlRlc3RzIGZvciBvcy53YWxrKCkgd2l0aCBieXRlcy4iIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKCkuc2V0VXAoKQogICAgICAgICBzZWxmLnN0YWNrID0gY29udGV4dGxpYi5FeGl0U3RhY2soKQotICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6Ci0gICAgICAgICAgICBzZWxmLnN0YWNrLmVudGVyX2NvbnRleHQod2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKSkKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnN0YWNrLmNsb3NlKCkKQEAgLTEyNjEsOCArMTI1Miw3IEBACiAgICAgICAgIG9zLm1rZGlyKGRpcmEpCiAgICAgICAgIGRpcmIgPSBvcy5wYXRoLmpvaW4oZGlyYSwgJ2RpcmInKQogICAgICAgICBvcy5ta2RpcihkaXJiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRpcmEsICdmaWxlLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCd0ZXh0JykKKyAgICAgICAgY3JlYXRlX2ZpbGUob3MucGF0aC5qb2luKGRpcmEsICdmaWxlLnR4dCcpKQogICAgICAgICBvcy5yZW1vdmVkaXJzKGRpcmIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZGlyYikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkaXJhKSkKQEAgLTEyNzMsOCArMTI2Myw3IEBACiAgICAgICAgIG9zLm1rZGlyKGRpcmEpCiAgICAgICAgIGRpcmIgPSBvcy5wYXRoLmpvaW4oZGlyYSwgJ2RpcmInKQogICAgICAgICBvcy5ta2RpcihkaXJiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRpcmIsICdmaWxlLnR4dCcpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCd0ZXh0JykKKyAgICAgICAgY3JlYXRlX2ZpbGUob3MucGF0aC5qb2luKGRpcmIsICdmaWxlLnR4dCcpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpOgogICAgICAgICAgICAgb3MucmVtb3ZlZGlycyhkaXJiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyYikpCkBAIC0xMjg0LDcgKzEyNzMsNyBAQAogCiBjbGFzcyBEZXZOdWxsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Rldm51bGwoc2VsZik6Ci0gICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAnd2InKSBhcyBmOgorICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3diJywgMCkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYidoZWxsbycpCiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICdyYicpIGFzIGY6CkBAIC0xMzAxLDYgKzEyOTAsNyBAQAogCiAgICAgZGVmIHRlc3RfdXJhbmRvbV92YWx1ZShzZWxmKToKICAgICAgICAgZGF0YTEgPSBvcy51cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGF0YTEsIGJ5dGVzKQogICAgICAgICBkYXRhMiA9IG9zLnVyYW5kb20oMTYpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQogCkBAIC0xMzIxLDYgKzEzMTEsNDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYXRhMSwgZGF0YTIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHJhbmRvbScpLCAnbmVlZCBvcy5nZXRyYW5kb20oKScpCitjbGFzcyBHZXRSYW5kb21UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuZ2V0cmFuZG9tKDEpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FTk9TWVM6CisgICAgICAgICAgICAgICAgIyBQeXRob24gY29tcGlsZWQgb24gYSBtb3JlIHJlY2VudCBMaW51eCB2ZXJzaW9uCisgICAgICAgICAgICAgICAgIyB0aGFuIHRoZSBjdXJyZW50IExpbnV4IGtlcm5lbAorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJnZXRyYW5kb20oKSBzeXNjYWxsIGZhaWxzIHdpdGggRU5PU1lTIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV90eXBlKHNlbGYpOgorICAgICAgICBkYXRhID0gb3MuZ2V0cmFuZG9tKDE2KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGF0YSwgYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCAxNikKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbTAoc2VsZik6CisgICAgICAgIGVtcHR5ID0gb3MuZ2V0cmFuZG9tKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW1wdHksIGInJykKKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV9yYW5kb20oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9zLCAnR1JORF9SQU5ET00nKSkKKworICAgICAgICAjIERvbid0IHRlc3Qgb3MuZ2V0cmFuZG9tKDEsIG9zLkdSTkRfUkFORE9NKSB0byBub3QgY29uc3VtZSB0aGUgcmFyZQorICAgICAgICAjIHJlc291cmNlIC9kZXYvcmFuZG9tCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fbm9uYmxvY2soc2VsZik6CisgICAgICAgICMgVGhlIGNhbGwgbXVzdCBub3QgZmFpbC4gQ2hlY2sgYWxzbyB0aGF0IHRoZSBmbGFnIGV4aXN0cworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5nZXRyYW5kb20oMSwgb3MuR1JORF9OT05CTE9DSykKKyAgICAgICAgZXhjZXB0IEJsb2NraW5nSU9FcnJvcjoKKyAgICAgICAgICAgICMgU3lzdGVtIHVyYW5kb20gaXMgbm90IGluaXRpYWxpemVkIHlldAorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX3ZhbHVlKHNlbGYpOgorICAgICAgICBkYXRhMSA9IG9zLmdldHJhbmRvbSgxNikKKyAgICAgICAgZGF0YTIgPSBvcy5nZXRyYW5kb20oMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGF0YTEsIGRhdGEyKQorCisKICMgb3MudXJhbmRvbSgpIGRvZXNuJ3QgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIHdoZW4gaXQgaXMgaW1wbGVtZW50ZWQgd2l0aCB0aGUKICMgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uLCB0aGUgZ2V0cmFuZG9tKCkgZnVuY3Rpb24gb3IgdGhlIGdldHJhbmRvbSgpIHN5c2NhbGwKIE9TX1VSQU5ET01fRE9OVF9VU0VfRkQgPSAoCkBAIC0xMzcxLDkgKzE0MDQsOSBAQAogICAgIGRlZiB0ZXN0X3VyYW5kb21fZmRfcmVvcGVuZWQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzIxMjA3OiB1cmFuZG9tKCkgc2hvdWxkIGRldGVjdCBpdHMgZmQgdG8gL2Rldi91cmFuZG9tCiAgICAgICAgICMgY2hhbmdlZCB0byBzb21ldGhpbmcgZWxzZSwgYW5kIHJlb3BlbiBpdC4KLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShiIngiICogMjU2KQotICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIieCIgKiAyNTYpCisKICAgICAgICAgY29kZSA9ICIiImlmIDE6CiAgICAgICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgICAgIGltcG9ydCBzeXMKQEAgLTE0MzUsNiArMTQ2OCw3IEBACiAgICAgICAgIG9zLmV4ZWN2ZSA9IG9yaWdfZXhlY3ZlCiAgICAgICAgIG9zLmRlZnBhdGggPSBvcmlnX2RlZnBhdGgKIAorCiBjbGFzcyBFeGVjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIEB1bml0dGVzdC5za2lwSWYoVVNJTkdfTElOVVhUSFJFQURTLAogICAgICAgICAgICAgICAgICAgICAgImF2b2lkIHRyaWdnZXJpbmcgYSBsaW51eHRocmVhZHMgYnVnOiBzZWUgaXNzdWUgIzQ5NzAiKQpAQCAtMTUwMiw2ICsxNTM2LDE4IEBACiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQogY2xhc3MgV2luMzJFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgIGV4aXN0cyA9IEZhbHNlCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGV4aXN0cyA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZmlsZSAlcyBtdXN0IG5vdCBleGlzdDsgb3Muc3RhdCBmYWlsZWQgd2l0aCAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAlIChzdXBwb3J0LlRFU1RGTiwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZmlsZSAlcyBtdXN0IG5vdCBleGlzdCIgJSBzdXBwb3J0LlRFU1RGTikKKwogICAgIGRlZiB0ZXN0X3JlbmFtZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MucmVuYW1lLCBzdXBwb3J0LlRFU1RGTiwgc3VwcG9ydC5URVNURk4rIi5iYWsiKQogCkBAIC0xNTEyLDEyICsxNTU4LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmNoZGlyLCBzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X21rZGlyKHNlbGYpOgotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgInciKQotICAgICAgICB0cnk6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAieCIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5ta2Rpciwgc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy51dGltZSwgc3VwcG9ydC5URVNURk4sIE5vbmUpCkBAIC0xNTI1LDYgKzE1NjksNyBAQAogICAgIGRlZiB0ZXN0X2NobW9kKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5jaG1vZCwgc3VwcG9ydC5URVNURk4sIDApCiAKKwogY2xhc3MgVGVzdEludmFsaWRGRCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc2luZ2xlcyA9IFsiZmNoZGlyIiwgImR1cCIsICJmZG9wZW4iLCAiZmRhdGFzeW5jIiwgImZzdGF0IiwKICAgICAgICAgICAgICAgICJmc3RhdHZmcyIsICJmc3luYyIsICJ0Y2dldHBncnAiLCAidHR5bmFtZSJdCkBAIC0xNjM2LDEyICsxNjgxLDkgQEAKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZmlsZSkKIAogICAgIGRlZiBfdGVzdF9saW5rKHNlbGYsIGZpbGUxLCBmaWxlMik6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmMToKLSAgICAgICAgICAgIGYxLndyaXRlKCJ0ZXN0IikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZTEpCiAKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKKyAgICAgICAgb3MubGluayhmaWxlMSwgZmlsZTIpCiAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInIiKSBhcyBmMSwgb3BlbihmaWxlMiwgInIiKSBhcyBmMjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVvcGVuZmlsZShmMS5maWxlbm8oKSwgZjIuZmlsZW5vKCkpKQogCkBAIC0xOTMyLDYgKzE5NzQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHNvcnRlZChvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOKSksCiAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVkX3BhdGhzKQorCiAgICAgICAgICMgYnl0ZXMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKSwKQEAgLTE5NDUsNiArMTk4OCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIocGF0aCkpLAogICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlZF9wYXRocykKKwogICAgICAgICAjIGJ5dGVzCiAgICAgICAgIHBhdGggPSBiJ1xcXFw/XFwnICsgb3MuZnNlbmNvZGUob3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKQEAgLTIwMjQsNTEgKzIwNjgsNDMgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChsaW5rKSwgb3Muc3RhdChsaW5rKSkKIAogICAgICAgICBieXRlc19saW5rID0gb3MuZnNlbmNvZGUobGluaykKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KGJ5dGVzX2xpbmspKQogCiAgICAgZGVmIHRlc3RfMTIwODQoc2VsZik6CiAgICAgICAgIGxldmVsMSA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgbGV2ZWwyID0gb3MucGF0aC5qb2luKGxldmVsMSwgImxldmVsMiIpCiAgICAgICAgIGxldmVsMyA9IG9zLnBhdGguam9pbihsZXZlbDIsICJsZXZlbDMiKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIGxldmVsMSkKKworICAgICAgICBvcy5ta2RpcihsZXZlbDEpCisgICAgICAgIG9zLm1rZGlyKGxldmVsMikKKyAgICAgICAgb3MubWtkaXIobGV2ZWwzKQorCisgICAgICAgIGZpbGUxID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihsZXZlbDEsICJmaWxlMSIpKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlMSkKKworICAgICAgICBvcmlnX2RpciA9IG9zLmdldGN3ZCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMSkKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMikKLSAgICAgICAgICAgIG9zLm1rZGlyKGxldmVsMykKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMikKKyAgICAgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4obGV2ZWwyLCAibGluayIpCisgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGgucmVscGF0aChmaWxlMSksICJsaW5rIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImxpbmsiLCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSkKIAotICAgICAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGxldmVsMSwgImZpbGUxIikpCisgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSB0aGUgc2FtZSBkaXIgYXMgdGhlIGxpbmsKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksIG9zLnN0YXQoImxpbmsiKSkKIAotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiZmlsZTEiKQorICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYmVsb3cgdGhlIGxpbmsKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKIAotICAgICAgICAgICAgb3JpZ19kaXIgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMikKLSAgICAgICAgICAgICAgICBsaW5rID0gb3MucGF0aC5qb2luKGxldmVsMiwgImxpbmsiKQotICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5yZWxwYXRoKGZpbGUxKSwgImxpbmsiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImxpbmsiLCBvcy5saXN0ZGlyKG9zLmdldGN3ZCgpKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIHRoZSBzYW1lIGRpciBhcyB0aGUgbGluawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksIG9zLnN0YXQoImxpbmsiKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGJlbG93IHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCi0KLSAgICAgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBhYm92ZSB0aGUgbGluawotICAgICAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihvcmlnX2RpcikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgc2VsZi5mYWlsKGVycikKKyAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGFib3ZlIHRoZSBsaW5rCisgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoZmlsZTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUoZmlsZTEpCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGxldmVsMSkKKyAgICAgICAgICAgIG9zLmNoZGlyKG9yaWdfZGlyKQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQpAQCAtMjEwNiw3ICsyMTQyLDcgQEAKIGNsYXNzIE5vbkxvY2FsU3ltbGlua1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiCisgICAgICAgIHIiIiIKICAgICAgICAgQ3JlYXRlIHRoaXMgc3RydWN0dXJlOgogCiAgICAgICAgIGJhc2UKQEAgLTIxNzcsMTEgKzIyMTMsMTEwIEBACiAKICAgICBkZWYgdGVzdF93YWl0cGlkKHNlbGYpOgogICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddCi0gICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgIyBBZGQgYW4gaW1wbGljaXQgdGVzdCBmb3IgUHlVbmljb2RlX0ZTQ29udmVydGVyKCkuCisgICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgX1BhdGhMaWtlKGFyZ3NbMF0pLCBhcmdzKQogICAgICAgICBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIChwaWQsIDApKQogCiAKK2NsYXNzIFNwYXduVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBjcmVhdGVfYXJncyhzZWxmLCAqLCB3aXRoX2Vudj1GYWxzZSwgdXNlX2J5dGVzPUZhbHNlKToKKyAgICAgICAgc2VsZi5leGl0Y29kZSA9IDE3CisKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgIGlmIG5vdCB3aXRoX2VudjoKKyAgICAgICAgICAgIGNvZGUgPSAnaW1wb3J0IHN5czsgc3lzLmV4aXQoJXMpJyAlIHNlbGYuZXhpdGNvZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZW52ID0gZGljdChvcy5lbnZpcm9uKQorICAgICAgICAgICAgIyBjcmVhdGUgYW4gdW5pcXVlIGtleQorICAgICAgICAgICAgc2VsZi5rZXkgPSBzdHIodXVpZC51dWlkNCgpKQorICAgICAgICAgICAgc2VsZi5lbnZbc2VsZi5rZXldID0gc2VsZi5rZXkKKyAgICAgICAgICAgICMgcmVhZCB0aGUgdmFyaWFibGUgZnJvbSBvcy5lbnZpcm9uIHRvIGNoZWNrIHRoYXQgaXQgZXhpc3RzCisgICAgICAgICAgICBjb2RlID0gKCdpbXBvcnQgc3lzLCBvczsgbWFnaWMgPSBvcy5lbnZpcm9uWyVyXTsgc3lzLmV4aXQoJXMpJworICAgICAgICAgICAgICAgICAgICAlIChzZWxmLmtleSwgc2VsZi5leGl0Y29kZSkpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUoY29kZSkKKworICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCBmaWxlbmFtZV0KKyAgICAgICAgaWYgdXNlX2J5dGVzOgorICAgICAgICAgICAgYXJncyA9IFtvcy5mc2VuY29kZShhKSBmb3IgYSBpbiBhcmdzXQorICAgICAgICAgICAgc2VsZi5lbnYgPSB7b3MuZnNlbmNvZGUoayk6IG9zLmZzZW5jb2RlKHYpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBzZWxmLmVudi5pdGVtcygpfQorCisgICAgICAgIHJldHVybiBhcmdzCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25sJykKKyAgICBkZWYgdGVzdF9zcGF3bmwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmwob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxlJykKKyAgICBkZWYgdGVzdF9zcGF3bmxlKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubGUob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd25scCcpCisgICAgZGVmIHRlc3Rfc3Bhd25scChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubHAob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxwZScpCisgICAgZGVmIHRlc3Rfc3Bhd25scGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25scGUob3MuUF9XQUlULCBhcmdzWzBdLCAqYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252JykKKyAgICBkZWYgdGVzdF9zcGF3bnYoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnYob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudmUnKQorICAgIGRlZiB0ZXN0X3NwYXdudmUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252ZShvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudnAnKQorICAgIGRlZiB0ZXN0X3NwYXdudnAoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKCkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZwKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZwZScpCisgICAgZGVmIHRlc3Rfc3Bhd252cGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd252cGUob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnYnKQorICAgIGRlZiB0ZXN0X25vd2FpdChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBwaWQgPSBvcy5zcGF3bnYob3MuUF9OT1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHJlc3VsdCA9IG9zLndhaXRwaWQocGlkLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdFswXSwgcGlkKQorICAgICAgICBzdGF0dXMgPSByZXN1bHRbMV0KKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ1dJRkVYSVRFRCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLldJRkVYSVRFRChzdGF0dXMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5XRVhJVFNUQVRVUyhzdGF0dXMpLCBzZWxmLmV4aXRjb2RlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIHNlbGYuZXhpdGNvZGUgPDwgOCkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnZlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZlX2J5dGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgYnl0ZXMgaGFuZGxpbmcgaW4gcGFyc2VfYXJnbGlzdCBhbmQgcGFyc2VfZW52bGlzdCAoIzI4MTE0KQorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncyh3aXRoX2Vudj1UcnVlLCB1c2VfYnl0ZXM9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZlKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKwogIyBUaGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgVGVzdENhc2UgY2F1c2VkIGF0IGxlYXN0IHR3byBkaWZmZXJlbnQgZXJyb3JzIG9uCiAjICpuaXggYnVpbGRib3RzLiBUZW1wb3JhcmlseSBza2lwIHRoaXMgdG8gbGV0IHRoZSBidWlsZGJvdHMgbW92ZSBhbG9uZy4KIEB1bml0dGVzdC5za2lwKCJTa2lwIGR1ZSB0byBwbGF0Zm9ybS9lbnZpcm9ubWVudCBkaWZmZXJlbmNlcyBvbiAqTklYIGJ1aWxkYm90cyIpCkBAIC0yMjA0LDggKzIzMzksOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBuZXdfcHJpbyA9IG9zLmdldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCkpCiAgICAgICAgICAgICBpZiBiYXNlID49IDE5IGFuZCBuZXdfcHJpbyA8PSAxOToKLSAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKLSAgICAgICJ1bmFibGUgdG8gcmVsaWFibHkgdGVzdCBzZXRwcmlvcml0eSBhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdCBjdXJyZW50IG5pY2UgbGV2ZWwgb2YgJXMiICUgYmFzZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfcHJpbywgYmFzZSArIDEpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yMzE1LDggKzI0NTAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5rZXkgPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCi0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoY2xzLkRBVEEpCisgICAgICAgIGNyZWF0ZV9maWxlKHN1cHBvcnQuVEVTVEZOLCBjbHMuREFUQSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0yNDY2LDEwICsyNjAwLDExIEBACiAgICAgZGVmIHRlc3RfdHJhaWxlcnMoc2VsZik6CiAgICAgICAgIFRFU1RGTjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgogICAgICAgICBmaWxlX2RhdGEgPSBiImFiY2RlZiIKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICd3YicpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGZpbGVfZGF0YSkKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIFRFU1RGTjIpCisKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBURVNURk4yKQorICAgICAgICBjcmVhdGVfZmlsZShURVNURk4yLCBmaWxlX2RhdGEpCisKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpIGFzIGY6CiAgICAgICAgICAgICBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgZi5maWxlbm8oKSwgMCwgbGVuKGZpbGVfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGVycz1bYiIxMjM0Il0pCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCkBAIC0yNDkyLDM1ICsyNjI3LDM3IEBACiBkZWYgc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpOgogICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAic2V0eGF0dHIiKToKICAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICB0cnk6Ci0gICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInhiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3Muc2V0eGF0dHIoZnAuZmlsZW5vKCksIGIidXNlci50ZXN0IiwgYiIiKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgIyBLZXJuZWxzIDwgMi42LjM5IGRvbid0IHJlc3BlY3Qgc2V0eGF0dHIgZmxhZ3MuCi0gICAga2VybmVsX3ZlcnNpb24gPSBwbGF0Zm9ybS5yZWxlYXNlKCkKLSAgICBtID0gcmUubWF0Y2goIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKLSAgICByZXR1cm4gbSBpcyBOb25lIG9yIGludChtLmdyb3VwKDEpKSA+PSAzOQorCisgICAgcmV0dXJuIFRydWUKIAogCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0c19leHRlbmRlZF9hdHRyaWJ1dGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAibm8gbm9uLWJyb2tlbiBleHRlbmRlZCBhdHRyaWJ1dGUgc3VwcG9ydCIpCisjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KK0BzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMzkpCiBjbGFzcyBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0KICAgICBkZWYgX2NoZWNrX3hhdHRyc19zdHIoc2VsZiwgcywgZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyLCAqKmt3YXJncyk6CiAgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KLSAgICAgICAgb3BlbihmbiwgIndiIikuY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZuKQorICAgICAgICBjcmVhdGVfZmlsZShmbikKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgaW5pdF94YXR0ciA9IGxpc3R4YXR0cihmbikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluaXRfeGF0dHIsIGxpc3QpCisKICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiIiIsICoqa3dhcmdzKQogICAgICAgICB4YXR0ciA9IHNldChpbml0X3hhdHRyKQogICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdCIpCkBAIC0yNTI4LDE5ICsyNjY1LDI0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIGIidXNlci50ZXN0IiwgKiprd2FyZ3MpLCBiIiIpCiAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJoZWxsbyIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBiInVzZXIudGVzdCIsICoqa3dhcmdzKSwgYiJoZWxsbyIpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJieWUiLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImJ5ZSIsIG9zLlhBVFRSX1JFUExBQ0UsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKwogICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCBiImZvbyIsIG9zLlhBVFRSX0NSRUFURSwgKiprd2FyZ3MpCiAgICAgICAgIHhhdHRyLmFkZCgidXNlci50ZXN0MiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCB4YXR0cikKICAgICAgICAgcmVtb3ZleGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisKICAgICAgICAgeGF0dHIucmVtb3ZlKCJ1c2VyLnRlc3QiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChsaXN0eGF0dHIoZm4pKSwgeGF0dHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgKiprd2FyZ3MpLCBiImZvbyIpCkBAIC0yNTUzLDExICsyNjk1LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCBzZXQoaW5pdF94YXR0cikgfCBzZXQobWFueSkpCiAKICAgICBkZWYgX2NoZWNrX3hhdHRycyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBkZWYgbWFrZV9ieXRlcyhzKToKLSAgICAgICAgICAgIHJldHVybiBieXRlcyhzLCAiYXNjaWkiKQogICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKHN0ciwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihtYWtlX2J5dGVzLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihvcy5mc2VuY29kZSwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKG9zLmdldHhhdHRyLCBvcy5zZXR4YXR0ciwgb3MucmVtb3ZleGF0dHIsCkBAIC0yNTcyLDEwICsyNzE0LDEwIEBACiAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmdldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKICAgICAgICAgZGVmIHNldHhhdHRyKHBhdGgsICphcmdzKToKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiLCAwKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCiAgICAgICAgIGRlZiByZW1vdmV4YXR0cihwYXRoLCAqYXJncyk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIiwgMCkgYXMgZnA6CiAgICAgICAgICAgICAgICAgb3MucmVtb3ZleGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQogICAgICAgICBkZWYgbGlzdHhhdHRyKHBhdGgsICphcmdzKToKICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKQEAgLTI1ODMsNDMgKzI3MjUsNiBAQAogICAgICAgICBzZWxmLl9jaGVja194YXR0cnMoZ2V0eGF0dHIsIHNldHhhdHRyLCByZW1vdmV4YXR0ciwgbGlzdHhhdHRyKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQotY2xhc3MgV2luMzJEZXByZWNhdGVkQnl0ZXNBUEkodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBudAotICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgZm9yIGZ1bmMsICphcmdzIGluICgKLSAgICAgICAgICAgICAgICAobnQuX2dldGZ1bGxwYXRobmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChudC5faXNkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MuYWNjZXNzLCBmaWxlbmFtZSwgb3MuUl9PSyksCi0gICAgICAgICAgICAgICAgKG9zLmNoZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmNobW9kLCBmaWxlbmFtZSwgMG83NzcpLAotICAgICAgICAgICAgICAgIChvcy5nZXRjd2RiLCksCi0gICAgICAgICAgICAgICAgKG9zLmxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLmxpc3RkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubHN0YXQsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubWtkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Mub3BlbiwgZmlsZW5hbWUsIG9zLk9fUkRPTkxZKSwKLSAgICAgICAgICAgICAgICAob3MucmVuYW1lLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5ybWRpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5zdGFydGZpbGUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3Muc3RhdCwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy51bmxpbmssIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MudXRpbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLCBmdW5jLCAqYXJncykKLQotICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKLSAgICBkZWYgdGVzdF9zeW1saW5rKHNlbGYpOgotICAgICAgICBmaWxlbmFtZSA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluaywgZmlsZW5hbWUsIGZpbGVuYW1lKQotCi0KIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfdGVybWluYWxfc2l6ZScpLCAicmVxdWlyZXMgb3MuZ2V0X3Rlcm1pbmFsX3NpemUiKQogY2xhc3MgVGVybXNpemVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZG9lc19ub3RfY3Jhc2goc2VsZik6CkBAIC0yNjgyLDYgKzI3ODcsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZW5jb2RlZCA9IG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZWxmLmJ5dGVzX2ZpbGVuYW1lcy5hcHBlbmQoZW5jb2RlZCkKKyAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKGJ5dGVhcnJheShlbmNvZGVkKSkKICAgICAgICAgc2VsZi5ieXRlc19maWxlbmFtZXMuYXBwZW5kKG1lbW9yeXZpZXcoZW5jb2RlZCkpCiAKICAgICAgICAgc2VsZi5maWxlbmFtZXMgPSBzZWxmLmJ5dGVzX2ZpbGVuYW1lcyArIHNlbGYudW5pY29kZV9maWxlbmFtZXMKQEAgLTI3MDIsMTYgKzI4MDgsNyBAQAogICAgICAgICAgICAgICAgIChzZWxmLmJ5dGVzX2ZpbGVuYW1lcywgb3MucmVwbGFjZSwgYiJkc3QiKSwKICAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MucmVuYW1lLCAiZHN0IiksCiAgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLnJlcGxhY2UsICJkc3QiKSwKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxNjQxNDogRG9uJ3QgdGVzdCB1bmRlY29kYWJsZSBuYW1lcyB3aXRoIGxpc3RkaXIoKQotICAgICAgICAgICAgICAgICMgYmVjYXVzZSBvZiBhIFdpbmRvd3MgYnVnLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFdpdGggdGhlIEFOU0kgY29kZSBwYWdlIDkzMiwgb3MubGlzdGRpcihiJ1x4ZTcnKSByZXR1cm4gYW4KLSAgICAgICAgICAgICAgICAjIGVtcHR5IGxpc3QgKGluc3RlYWQgb2YgZmFpbGluZyksIHdoZXJlYXMgb3MubGlzdGRpcihiJ1x4ZmYnKQotICAgICAgICAgICAgICAgICMgcmFpc2VzIGEgRmlsZU5vdEZvdW5kRXJyb3IuIEl0IGxvb2tzIGxpa2UgYSBXaW5kb3dzIGJ1ZzoKLSAgICAgICAgICAgICAgICAjIGInXHhlNycgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LCBGaW5kRmlyc3RGaWxlQShiJ1x4ZTcnKQotICAgICAgICAgICAgICAgICMgZmFpbHMgd2l0aCBFUlJPUl9GSUxFX05PVF9GT1VORCAoMiksIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAjIEVSUk9SX1BBVEhfTk9UX0ZPVU5EICgzKS4KLSAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MubGlzdGRpciwpLAorICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5saXN0ZGlyLCApLAogICAgICAgICAgICAgKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZ1bmNzLmV4dGVuZCgoCkBAIC0yNzUyLDEyICsyODQ5LDI0IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZ1bmNzLmFwcGVuZCgoc2VsZi5maWxlbmFtZXMsIG9zLnJlYWRsaW5rLCkpCiAKKwogICAgICAgICBmb3IgZmlsZW5hbWVzLCBmdW5jLCAqZnVuY19hcmdzIGluIGZ1bmNzOgogICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZW5hbWVzOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZnVuYyhuYW1lLCAqZnVuY19hcmdzKQorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICdzaG91bGQgYmUnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGVyci5maWxlbmFtZSwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhlcnIuZmlsZW5hbWUsIG5hbWUsIHN0cihmdW5jKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgICAgICAgICAgICAgICMgaXNzdWUyNzc4MTogdW5kZWNvZGFibGUgYnl0ZXMgY3VycmVudGx5IHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICAgICAgICAgICAgICAjIGJ5IDMuNi4wYjQgdGhpcyB3aWxsIGJlY29tZSBVbmljb2RlRGVjb2RlRXJyb3Igb3Igbm90aGluZworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXJyLl9fY29udGV4dF9fLCBVbmljb2RlRGVjb2RlRXJyb3IpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJObyBleGNlcHRpb24gdGhyb3duIGJ5IHt9Ii5mb3JtYXQoZnVuYykpCiAKQEAgLTI4NTUsNiArMjk2NCw2MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldF9pbmhlcml0YWJsZShzbGF2ZV9mZCksIEZhbHNlKQogCiAKK2NsYXNzIFBhdGhUQ29udmVydGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgdHVwbGVzIG9mIChmdW5jdGlvbiBuYW1lLCBhbGxvd3MgZmQgYXJndW1lbnRzLCBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0bworICAgICMgZnVuY3Rpb24sIGNsZWFudXAgZnVuY3Rpb24pCisgICAgZnVuY3Rpb25zID0gWworICAgICAgICAoJ3N0YXQnLCBUcnVlLCAoKSwgTm9uZSksCisgICAgICAgICgnbHN0YXQnLCBGYWxzZSwgKCksIE5vbmUpLAorICAgICAgICAoJ2FjY2VzcycsIEZhbHNlLCAob3MuRl9PSywpLCBOb25lKSwKKyAgICAgICAgKCdjaGZsYWdzJywgRmFsc2UsICgwLCksIE5vbmUpLAorICAgICAgICAoJ2xjaGZsYWdzJywgRmFsc2UsICgwLCksIE5vbmUpLAorICAgICAgICAoJ29wZW4nLCBGYWxzZSwgKDAsKSwgZ2V0YXR0cihvcywgJ2Nsb3NlJywgTm9uZSkpLAorICAgIF0KKworICAgIGRlZiB0ZXN0X3BhdGhfdF9jb252ZXJ0ZXIoc2VsZik6CisgICAgICAgIHN0cl9maWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCA9IGJ5dGVzX2ZpbGVuYW1lID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTi5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCA9IF9QYXRoTGlrZShieXRlc19maWxlbmFtZSkKKyAgICAgICAgZmQgPSBvcy5vcGVuKF9QYXRoTGlrZShzdHJfZmlsZW5hbWUpLCBvcy5PX1dST05MWXxvcy5PX0NSRUFUKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIGZkKQorCisgICAgICAgIGludF9mc3BhdGggPSBfUGF0aExpa2UoZmQpCisgICAgICAgIHN0cl9mc3BhdGggPSBfUGF0aExpa2Uoc3RyX2ZpbGVuYW1lKQorCisgICAgICAgIGZvciBuYW1lLCBhbGxvd19mZCwgZXh0cmFfYXJncywgY2xlYW51cF9mbiBpbiBzZWxmLmZ1bmN0aW9uczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWU9bmFtZSk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmbiA9IGdldGF0dHIob3MsIG5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gKHN0cl9maWxlbmFtZSwgYnl0ZXNfZmlsZW5hbWUsIHN0cl9mc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX2ZzcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbWU9bmFtZSwgcGF0aD1wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZuKHBhdGgsICpleHRyYV9hcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xlYW51cF9mbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2ZuKHJlc3VsdCkKKworICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzJyk6CisgICAgICAgICAgICAgICAgICAgIGZuKGludF9mc3BhdGgsICpleHRyYV9hcmdzKQorCisgICAgICAgICAgICAgICAgaWYgYWxsb3dfZmQ6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZuKGZkLCAqZXh0cmFfYXJncykgICMgc2hvdWxkIG5vdCBmYWlsCisgICAgICAgICAgICAgICAgICAgIGlmIGNsZWFudXBfZm4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbnVwX2ZuKHJlc3VsdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcy5QYXRoTGlrZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm4oZmQsICpleHRyYV9hcmdzKQorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdnZXRfYmxvY2tpbmcnKSwKICAgICAgICAgICAgICAgICAgICAgICduZWVkcyBvcy5nZXRfYmxvY2tpbmcoKSBhbmQgb3Muc2V0X2Jsb2NraW5nKCknKQogY2xhc3MgQmxvY2tpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yODc4LDE1ICszMDQ0LDE4IEBACiAKIAogY2xhc3MgVGVzdFNjYW5kaXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcgPSBzdXBwb3J0LmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcKKwogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5yZWFscGF0aChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5ieXRlc19wYXRoID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHNlbGYucGF0aCkKICAgICAgICAgb3MubWtkaXIoc2VsZi5wYXRoKQogCiAgICAgZGVmIGNyZWF0ZV9maWxlKHNlbGYsIG5hbWU9ImZpbGUudHh0Iik6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgbmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIncHl0aG9uJykKKyAgICAgICAgcGF0aCA9IHNlbGYuYnl0ZXNfcGF0aCBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKSBlbHNlIHNlbGYucGF0aAorICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihwYXRoLCBuYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSwgYidweXRob24nKQogICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIGRlZiBnZXRfZW50cmllcyhzZWxmLCBuYW1lcyk6CkBAIC0yOTA5LDYgKzMwNzgsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0MSwgc3RhdDIpCiAKICAgICBkZWYgY2hlY2tfZW50cnkoc2VsZiwgZW50cnksIG5hbWUsIGlzX2RpciwgaXNfZmlsZSwgaXNfc3ltbGluayk6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlbnRyeSwgb3MuRGlyRW50cnkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkubmFtZSwgbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5wYXRoLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBuYW1lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5pbm9kZSgpLApAQCAtMjk3NCwxNSArMzE0NCwxNiBAQAogICAgICAgICAgICAgc2VsZi5jaGVja19lbnRyeShlbnRyeSwgJ3N5bWxpbmtfZmlsZS50eHQnLCBGYWxzZSwgVHJ1ZSwgVHJ1ZSkKIAogICAgIGRlZiBnZXRfZW50cnkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIoc2VsZi5wYXRoKSkKKyAgICAgICAgcGF0aCA9IHNlbGYuYnl0ZXNfcGF0aCBpZiBpc2luc3RhbmNlKG5hbWUsIGJ5dGVzKSBlbHNlIHNlbGYucGF0aAorICAgICAgICBlbnRyaWVzID0gbGlzdChvcy5zY2FuZGlyKHBhdGgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSkKIAogICAgICAgICBlbnRyeSA9IGVudHJpZXNbMF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBuYW1lKQogICAgICAgICByZXR1cm4gZW50cnkKIAotICAgIGRlZiBjcmVhdGVfZmlsZV9lbnRyeShzZWxmKToKLSAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKCkKKyAgICBkZWYgY3JlYXRlX2ZpbGVfZW50cnkoc2VsZiwgbmFtZT0nZmlsZS50eHQnKToKKyAgICAgICAgZmlsZW5hbWUgPSBzZWxmLmNyZWF0ZV9maWxlKG5hbWU9bmFtZSkKICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2VudHJ5KG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpKQogCiAgICAgZGVmIHRlc3RfY3VycmVudF9kaXJlY3Rvcnkoc2VsZik6CkBAIC0zMDAzLDYgKzMxNzQsMTggQEAKICAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGVudHJ5KSwgIjxEaXJFbnRyeSAnZmlsZS50eHQnPiIpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfcHJvdG9jb2woc2VsZik6CisgICAgICAgIGVudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnNwYXRoKGVudHJ5KSwgb3MucGF0aC5qb2luKHNlbGYucGF0aCwgJ2ZpbGUudHh0JykpCisKKyAgICBkZWYgdGVzdF9mc3BhdGhfcHJvdG9jb2xfYnl0ZXMoc2VsZik6CisgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gb3MuZnNlbmNvZGUoJ2J5dGVzZmlsZS50eHQnKQorICAgICAgICBieXRlc19lbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkobmFtZT1ieXRlc19maWxlbmFtZSkKKyAgICAgICAgZnNwYXRoID0gb3MuZnNwYXRoKGJ5dGVzX2VudHJ5KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZnNwYXRoLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmc3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKHNlbGYucGF0aCksYnl0ZXNfZmlsZW5hbWUpKQorCiAgICAgZGVmIHRlc3RfcmVtb3ZlZF9kaXIoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZGlyJykKIApAQCAtMzA2NiwxMSArMzI0OSw2IEBACiAgICAgICAgIGVudHJ5LnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCiAgICAgZGVmIHRlc3RfYnl0ZXMoc2VsZik6Ci0gICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgICMgT24gV2luZG93cywgb3Muc2NhbmRpcihieXRlcykgbXVzdCByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgYicuJykKLSAgICAgICAgICAgIHJldHVybgotCiAgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKIAogICAgICAgICBwYXRoX2J5dGVzID0gb3MuZnNlbmNvZGUoc2VsZi5wYXRoKQpAQCAtMzEwMCw2ICszMjc4LDExMiBAQAogICAgICAgICBmb3Igb2JqIGluIFsxMjM0LCAxLjIzNCwge30sIFtdXToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3Muc2NhbmRpciwgb2JqKQogCisgICAgZGVmIHRlc3RfY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgaXRlcmF0b3IuY2xvc2UoKQorICAgICAgICAjIG11bHRpcGxlIGNsb3NlcworICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcihzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgIHdpdGggc2VsZi5jaGVja19ub19yZXNvdXJjZV93YXJuaW5nKCk6CisgICAgICAgICAgICBkZWwgaXRlcmF0b3IKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXJfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBvcy5zY2FuZGlyKHNlbGYucGF0aCkgYXMgaXRlcmF0b3I6CisgICAgICAgICAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisgICAgZGVmIHRlc3RfcmVzb3VyY2Vfd2FybmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICBpdGVyYXRvciA9IG9zLnNjYW5kaXIoc2VsZi5wYXRoKQorICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoUmVzb3VyY2VXYXJuaW5nKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorICAgICAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgIyBleGhhdXN0ZWQgaXRlcmF0b3IKKyAgICAgICAgaXRlcmF0b3IgPSBvcy5zY2FuZGlyKHNlbGYucGF0aCkKKyAgICAgICAgbGlzdChpdGVyYXRvcikKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisKK2NsYXNzIFRlc3RQRVA1MTkodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBBYnN0cmFjdGVkIHNvIGl0IGNhbiBiZSBvdmVycmlkZGVuIHRvIHRlc3QgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24KKyAgICAjIGlmIGEgQyB2ZXJzaW9uIGlzIHByb3ZpZGVkLgorICAgIGZzcGF0aCA9IHN0YXRpY21ldGhvZChvcy5mc3BhdGgpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5fYnl0ZXMoc2VsZik6CisgICAgICAgIGZvciBiIGluIGInaGVsbG8nLCBiJ2dvb2RieWUnLCBiJ3NvbWUvcGF0aC9hbmQvZmlsZSc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHNlbGYuZnNwYXRoKGIpKQorCisgICAgZGVmIHRlc3RfcmV0dXJuX3N0cmluZyhzZWxmKToKKyAgICAgICAgZm9yIHMgaW4gJ2hlbGxvJywgJ2dvb2RieWUnLCAnc29tZS9wYXRoL2FuZC9maWxlJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgc2VsZi5mc3BhdGgocykpCisKKyAgICBkZWYgdGVzdF9mc2VuY29kZV9mc2RlY29kZShzZWxmKToKKyAgICAgICAgZm9yIHAgaW4gInBhdGgvbGlrZS9vYmplY3QiLCBiInBhdGgvbGlrZS9vYmplY3QiOgorICAgICAgICAgICAgcGF0aGxpa2UgPSBfUGF0aExpa2UocCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBzZWxmLmZzcGF0aChwYXRobGlrZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIicGF0aC9saWtlL29iamVjdCIsIG9zLmZzZW5jb2RlKHBhdGhsaWtlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInBhdGgvbGlrZS9vYmplY3QiLCBvcy5mc2RlY29kZShwYXRobGlrZSkpCisKKyAgICBkZWYgdGVzdF9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnI2ZlZWx0aGVnaWwnLCBzZWxmLmZzcGF0aChfUGF0aExpa2UoJyNmZWVsdGhlZ2lsJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhfUGF0aExpa2UsIG9zLlBhdGhMaWtlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoX1BhdGhMaWtlKCksIG9zLlBhdGhMaWtlKSkKKworICAgIGRlZiB0ZXN0X2dhcmJhZ2VfaW5fZXhjZXB0aW9uX291dChzZWxmKToKKyAgICAgICAgdmFwb3IgPSB0eXBlKCdibGFoJywgKCksIHt9KQorICAgICAgICBmb3IgbyBpbiBpbnQsIHR5cGUsIG9zLCB2YXBvcigpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCwgbykKKworICAgIGRlZiB0ZXN0X2FyZ3VtZW50X3JlcXVpcmVkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoKQorCisgICAgZGVmIHRlc3RfYmFkX3BhdGhsaWtlKHNlbGYpOgorICAgICAgICAjIF9fZnNwYXRoX18gcmV0dXJucyBhIHZhbHVlIG90aGVyIHRoYW4gc3RyIG9yIGJ5dGVzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoLCBfUGF0aExpa2UoNDIpKQorICAgICAgICAjIF9fZnNwYXRoX18gYXR0cmlidXRlIHRoYXQgaXMgbm90IGNhbGxhYmxlLgorICAgICAgICBjID0gdHlwZSgnZm9vJywgKCksIHt9KQorICAgICAgICBjLl9fZnNwYXRoX18gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgsIGMoKSkKKyAgICAgICAgIyBfX2ZzcGF0aF9fIHJhaXNlcyBhbiBleGNlcHRpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBzZWxmLmZzcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX1BhdGhMaWtlKFplcm9EaXZpc2lvbkVycm9yKCkpKQorCisjIE9ubHkgdGVzdCBpZiB0aGUgQyB2ZXJzaW9uIGlzIHByb3ZpZGVkLCBvdGhlcndpc2UgVGVzdFBFUDUxOSBhbHJlYWR5IHRlc3RlZAorIyB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCitpZiBoYXNhdHRyKG9zLCAiX2ZzcGF0aCIpOgorICAgIGNsYXNzIFRlc3RQRVA1MTlQdXJlUHl0aG9uKFRlc3RQRVA1MTkpOgorCisgICAgICAgICIiIkV4cGxpY2l0bHkgdGVzdCB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygb3MuZnNwYXRoKCkuIiIiCisKKyAgICAgICAgZnNwYXRoID0gc3RhdGljbWV0aG9kKG9zLl9mc3BhdGgpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKaW5kZXggYWI2NTc3Zi4uZDZlNmY3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgcGFyc2VyCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xMzksNiArMTM4LDQ1IEBACiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgPSBiIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYSA9IGIgPSBjID0gZCA9IGUiKQogCisgICAgZGVmIHRlc3RfdmFyX2Fubm90KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4OiBpbnQgPSA1IikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieTogTGlzdFtUXSA9IFtdOyB6OiBbbGlzdF0gPSBmdW4oKSIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IHR1cGxlID0gKDEsIDIpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZFtmKCldOiBpbnQgPSA0MiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImYoZFt4XSk6IHN0ciA9ICdhYmMnIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieC55LnoudzogY29tcGxleCA9IDQyaiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IGludCIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBzdHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHk6IGludCA9IDVcbiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBzdHJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHk6IGludCA9IDVcbiIpCisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImNsYXNzIEM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBkZWYgX19pbml0X18oc2VsZiwgeDogaW50KSAtPiBOb25lOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHNlbGYueDogaW50ID0geFxuIikKKyAgICAgICAgIyBkb3VibGUgY2hlY2sgZm9yIG5vbnNlbnNlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiMisyOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiW106IGludCA9IDUiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieCwgKnksIHo6IGludCA9IHJhbmdlKDUpIiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoInQ6IHR1cGxlID0gMSwgMiIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ1ID0gdjogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIkZhbHNlOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieC5GYWxzZTogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIngueSw6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJbMF06IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJmKCk6IGludCIsIHt9LCB7fSkKKwogICAgIGRlZiB0ZXN0X3NpbXBsZV9hdWdtZW50ZWRfYXNzaWdubWVudHMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgKz0gYiIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImEgLT0gYiIpCkBAIC02MzMsMTIgKzY3MSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3ludGF4LXRyZWU+JykKICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICc8c3ludGF4LXRyZWU+JykKLSAgICAgICAgZm9yIGZpbGVuYW1lIGluICgnZmlsZS5weScsIGInZmlsZS5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpKToKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluICdmaWxlLnB5JywgYidmaWxlLnB5JzoKICAgICAgICAgICAgIGNvZGUgPSBwYXJzZXIuY29tcGlsZXN0KHN0LCBmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQogICAgICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoZmlsZW5hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluIGJ5dGVhcnJheShiJ2ZpbGUucHknKSwgbWVtb3J5dmlldyhiJ2ZpbGUucHknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgICAgIGNvZGUgPSBwYXJzZXIuY29tcGlsZXN0KHN0LCBmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY29kZSA9IHN0LmNvbXBpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGUuY29fZmlsZW5hbWUsICdmaWxlLnB5JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXJzZXIuY29tcGlsZXN0LCBzdCwgbGlzdChiJ2ZpbGUucHknKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdC5jb21waWxlLCBsaXN0KGInZmlsZS5weScpKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKaW5kZXggZmE5NmQ5Zi4uMmYyYmEzYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQpAQCAtMTkwLDEzICsxOTAsMTggQEAKICAgICAgICAgUCA9IHNlbGYuY2xzCiAgICAgICAgIHAgPSBQKCdhJykKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIFApCisgICAgICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICJhL2IvYyIKICAgICAgICAgUCgnYScsICdiJywgJ2MnKQogICAgICAgICBQKCcvYScsICdiJywgJ2MnKQogICAgICAgICBQKCdhL2IvYycpCiAgICAgICAgIFAoJy9hL2IvYycpCisgICAgICAgIFAoUGF0aExpa2UoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSksIFAoJ2EnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgJ2InKSwgUCgnYS9iJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksIFAoJ2InKSksIFAoJ2EvYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCBQKCdiJyksIFAoJ2MnKSksIFAoUGF0aExpa2UoKSkpCiAKICAgICBkZWYgX2NoZWNrX3N0cl9zdWJjbGFzcyhzZWxmLCAqYXJncyk6CiAgICAgICAgICMgSXNzdWUgIzIxMTI3OiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY29uc3RydWN0IGEgUHVyZVBhdGggb2JqZWN0CkBAIC0zODQsNiArMzg5LDEyIEBACiAgICAgICAgIHBhcnRzID0gcC5wYXJ0cwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnRzLCAoc2VwLCAnYScsICdiJykpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfY29tbW9uKHNlbGYpOgorICAgICAgICBQID0gc2VsZi5jbHMKKyAgICAgICAgcCA9IFAoJ2EvYicpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cihwLl9fZnNwYXRoX18oKSwgKCdhL2InLCkpCisgICAgICAgIHNlbGYuX2NoZWNrX3N0cihvcy5mc3BhdGgocCksICgnYS9iJywpKQorCiAgICAgZGVmIHRlc3RfZXF1aXZhbGVuY2VzKHNlbGYpOgogICAgICAgICBmb3IgaywgdHVwbGVzIGluIHNlbGYuZXF1aXZhbGVuY2VzLml0ZW1zKCk6CiAgICAgICAgICAgICBjYW5vbiA9IGsucmVwbGFjZSgnLycsIHNlbGYuc2VwKQpAQCAtMTQ3NCwxMyArMTQ4NSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChwLmdsb2IoImRpckEvLi4vZmlsZSoiKSksIHsgUChCQVNFLCAiZGlyQS8uLi9maWxlQSIpIH0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAuZ2xvYigiLi4veHl6enkiKSksIHNldCgpKQogCi0gICAgZGVmIF9jaGVja19yZXNvbHZlX3JlbGF0aXZlKHNlbGYsIHAsIGV4cGVjdGVkKToKKworICAgIGRlZiBfY2hlY2tfcmVzb2x2ZShzZWxmLCBwLCBleHBlY3RlZCk6CiAgICAgICAgIHEgPSBwLnJlc29sdmUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHEsIGV4cGVjdGVkKQogCi0gICAgZGVmIF9jaGVja19yZXNvbHZlX2Fic29sdXRlKHNlbGYsIHAsIGV4cGVjdGVkKToKLSAgICAgICAgcSA9IHAucmVzb2x2ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocSwgZXhwZWN0ZWQpCisgICAgIyB0aGlzIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGJvdGggcmVsYXRpdmUgYW5kIGFic29sdXRlIHJlc29sdXRpb25zCisgICAgX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUgPSBfY2hlY2tfcmVzb2x2ZV9hYnNvbHV0ZSA9IF9jaGVja19yZXNvbHZlCiAKICAgICBAd2l0aF9zeW1saW5rcwogICAgIGRlZiB0ZXN0X3Jlc29sdmVfY29tbW9uKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZGIucHkgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQppbmRleCA2NmE3YjU1Li4wZWEyYWY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQpAQCAtMSw2ICsxLDcgQEAKICMgQSB0ZXN0IHN1aXRlIGZvciBwZGI7IG5vdCB2ZXJ5IGNvbXByZWhlbnNpdmUgYXQgdGhlIG1vbWVudC4KIAogaW1wb3J0IGRvY3Rlc3QKK2ltcG9ydCBvcwogaW1wb3J0IHBkYgogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCkBAIC0zNCw3ICszNSw3IEBACiAgICAgIiIiVGhpcyB0ZXN0cyB0aGUgY3VzdG9tIGRpc3BsYXlob29rIGZvciBwZGIuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oZm9vLCBiYXIpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBwYXNzCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNzQsNyArNzUsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIGZvby51cHBlcigpCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogICAgIC4uLiAgICAgcHJpbnQocmV0KQogCkBAIC0xNzMsNyArMTc0LDcgQEAKICAgICAiIiJUZXN0IGJhc2ljIGNvbW1hbmRzIHJlbGF0ZWQgdG8gYnJlYWtwb2ludHMuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcHJpbnQoMSkKICAgICAuLi4gICAgIHByaW50KDIpCiAgICAgLi4uICAgICBwcmludCgzKQpAQCAtMzA1LDcgKzMwNiw3IEBACiAgICAgLi4uICAgICByZXR1cm4gZm9vCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsgICMgZG9jdGVzdDogK0VMTElQU0lTLCArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTMyOCw3ICszMjksNyBAQAogICAgIC0+IHJldCA9IHRlc3RfZnVuY3Rpb25fMignYmF6JykKICAgICAoUGRiKSBsaXN0CiAgICAgICAxICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAgIDMgIC0+ICAgICAgICAgcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogICAgIFtFT0ZdCiAgICAgKFBkYikgc3RlcApAQCAtMzkxLDcgKzM5Miw3IEBACiAgICAgLi4uICAgICAgICAgcHJpbnQoJ0V4Y2VwdGlvbiEnKQogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgLi4uICAgICBwcmludCgnTm90IHJlYWNoZWQuJykKIApAQCAtNDI0LDcgKzQyNSw3IEBACiAgICAgLT4gMS8wCiAgICAgKFBkYikgbGlzdAogICAgICAgMSAgICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAzICAtPiAgICAgICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgICA0ICAgICAgICAgICAgIHByaW50KCdOb3QgcmVhY2hlZC4nKQogICAgIFtFT0ZdCkBAIC00NDgsNyArNDQ5LDcgQEAKIAogICAgID4+PiBkZWYgc2tpcF9tb2R1bGUoKToKICAgICAuLi4gICAgIGltcG9ydCBzdHJpbmcKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ3N0cmkqJ10sIG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydzdHJpKiddLCBub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBzdHJpbmcuY2Fwd29yZHMoJ0ZPTycpCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWwpAQCAtNDc3LDcgKzQ3OCw3IEBACiAgICAgPj4+IGRlZiBza2lwX21vZHVsZSgpOgogICAgIC4uLiAgICAgZGVmIGNhbGxiYWNrKCk6CiAgICAgLi4uICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ21vZHVsZV90b19za2lwKiddLCBub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnbW9kdWxlX3RvX3NraXAqJ10sIG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIG1vZC5mb29fcG9ueShjYWxsYmFjaykKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCkBAIC01MTgsNyArNTE5LDcgQEAKICAgICAiIiJUZXN0IHRoYXQgImNvbnRpbnVlIiBhbmQgIm5leHQiIHdvcmsgcHJvcGVybHkgaW4gYm90dG9tIGZyYW1lIChpc3N1ZSAjNTI5NCkuCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGIsIHN5czsgaW5zdCA9IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkKKyAgICAuLi4gICAgIGltcG9ydCBwZGIsIHN5czsgaW5zdCA9IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKQogICAgIC4uLiAgICAgaW5zdC5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaW5zdC5ib3RmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKSAgIyBoYWNrZXJ5IHRvIGdldCB0aGUgcmlnaHQgYm90ZnJhbWUKICAgICAuLi4gICAgIHByaW50KDEpCkBAIC01NTgsOCArNTU5LDcgQEAKIAogZGVmIHBkYl9pbnZva2UobWV0aG9kLCBhcmcpOgogICAgICIiIlJ1biBwZGIubWV0aG9kKGFyZykuIiIiCi0gICAgaW1wb3J0IHBkYgotICAgIGdldGF0dHIocGRiLlBkYihub3NpZ2ludD1UcnVlKSwgbWV0aG9kKShhcmcpCisgICAgZ2V0YXR0cihwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSksIG1ldGhvZCkoYXJnKQogCiAKIGRlZiB0ZXN0X3BkYl9ydW5fd2l0aF9pbmNvcnJlY3RfYXJndW1lbnQoKToKQEAgLTYwOCw3ICs2MDgsNyBAQAogICAgIC4uLiAgICAgeCA9IDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCkBAIC02NzQsNyArNjc0LDcgQEAKICAgICAuLi4gICAgIHlpZWxkIDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBpdCA9IHRlc3RfZ2VuKCkKICAgICAuLi4gICAgIHRyeToKICAgICAuLi4gICAgICAgICBpZiBuZXh0KGl0KSAhPSAwOgpAQCAtNzM0LDcgKzczNCw3IEBACiAgICAgLi4uICAgICB5aWVsZCAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgaXQgPSB0ZXN0X2dlbigpCiAgICAgLi4uICAgICB0cnk6CiAgICAgLi4uICAgICAgICAgaWYgbmV4dChpdCkgIT0gMDoKQEAgLTc4OSw3ICs3ODksNyBAQAogICAgIC4uLiAgICAgeWllbGQgMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoaSkKICAgICAuLi4gICAgIHByaW50KCJmaW5pc2hlZCIpCkBAIC04MzEsNyArODMxLDcgQEAKICAgICAuLi4gICAgIHJldHVybiAxCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgZm9yIGkgaW4gdGVzdF9nZW4oKToKICAgICAuLi4gICAgICAgICBwcmludCgndmFsdWUnLCBpKQogICAgIC4uLiAgICAgeCA9IDEyMwpAQCAtODc2LDcgKzg3Niw3IEBACiAgICAgLi4uICAgICByZXR1cm4geAogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGZvciBpIGluIHRlc3RfZ2VuKCk6CiAgICAgLi4uICAgICAgICAgcHJpbnQoJ3ZhbHVlJywgaSkKICAgICAuLi4gICAgIHggPSAxMjMKQEAgLTEwNDksNyArMTA0OSw3IEBACiAgICAgICAgICAgICAgICAgaW1wb3J0IHBkYgogCiAgICAgICAgICAgICAgICAgZGVmIHN0YXJ0X3BkYigpOgotICAgICAgICAgICAgICAgICAgICBwZGIuUGRiKCkuc2V0X3RyYWNlKCkKKyAgICAgICAgICAgICAgICAgICAgcGRiLlBkYihyZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgICAgICAgICAgICAgICAgIHggPSAxCiAgICAgICAgICAgICAgICAgICAgIHkgPSAxCiAKQEAgLTEwNzgsNiArMTA3OCwzOCBAQAogICAgICAgICAgICAgLmZvcm1hdChleHBlY3RlZCwgc3Rkb3V0KSkKIAogCisgICAgZGVmIHRlc3RfcmVhZHJjX2t3YXJnKHNlbGYpOgorICAgICAgICBzY3JpcHQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKKworICAgICAgICAgICAgcHJpbnQoJ2hlbGxvJykKKyAgICAgICAgIiIiKQorCisgICAgICAgIHNhdmVfaG9tZSA9IG9zLmVudmlyb24ucG9wKCdIT01FJywgTm9uZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCk6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCcucGRicmMnLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoImludmFsaWRcbiIpCisKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oJ21haW4ucHknLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2NyaXB0KQorCisgICAgICAgICAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAnbWFpbi5weSddCisgICAgICAgICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oCisgICAgICAgICAgICAgICAgICAgIGNtZCwKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICB3aXRoIHByb2M6CisgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZShiJ3FcbicpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIk5hbWVFcnJvcjogbmFtZSAnaW52YWxpZCcgaXMgbm90IGRlZmluZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dC5kZWNvZGUoKSkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc2F2ZV9ob21lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIG9zLmVudmlyb25bJ0hPTUUnXSA9IHNhdmVfaG9tZQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQppbmRleCA0MWU1MDkxLi5iMDMzNjQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQpAQCAtMSw5ICsxLDggQEAKIGltcG9ydCBkaXMKIGltcG9ydCByZQogaW1wb3J0IHN5cwotZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIG1hdGggaW1wb3J0IGNvcHlzaWduCiAKIGZyb20gdGVzdC5ieXRlY29kZV9oZWxwZXIgaW1wb3J0IEJ5dGVjb2RlVGVzdENhc2UKIApAQCAtMzAsMjIgKzI5LDI1IEBACiAKICAgICBkZWYgdGVzdF9nbG9iYWxfYXNfY29uc3RhbnQoc2VsZik6CiAgICAgICAgICMgTE9BRF9HTE9CQUwgTm9uZS9UcnVlL0ZhbHNlICAtLT4gIExPQURfQ09OU1QgTm9uZS9UcnVlL0ZhbHNlCi0gICAgICAgIGRlZiBmKHgpOgotICAgICAgICAgICAgTm9uZQotICAgICAgICAgICAgTm9uZQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgeCA9IE5vbmUKKyAgICAgICAgICAgIHggPSBOb25lCiAgICAgICAgICAgICByZXR1cm4geAotICAgICAgICBkZWYgZyh4KToKLSAgICAgICAgICAgIFRydWUKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHggPSBUcnVlCiAgICAgICAgICAgICByZXR1cm4geAotICAgICAgICBkZWYgaCh4KToKLSAgICAgICAgICAgIEZhbHNlCisgICAgICAgIGRlZiBoKCk6CisgICAgICAgICAgICB4ID0gRmFsc2UKICAgICAgICAgICAgIHJldHVybiB4CisKICAgICAgICAgZm9yIGZ1bmMsIGVsZW0gaW4gKChmLCBOb25lKSwgKGcsIFRydWUpLCAoaCwgRmFsc2UpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmdW5jLCAnTE9BRF9HTE9CQUwnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbkJ5dGVjb2RlKGZ1bmMsICdMT0FEX0NPTlNUJywgZWxlbSkKKwogICAgICAgICBkZWYgZigpOgogICAgICAgICAgICAgJ0FkZGluZyBhIGRvY3N0cmluZyBtYWRlIHRoaXMgdGVzdCBmYWlsIGluIFB5Mi41LjAnCiAgICAgICAgICAgICByZXR1cm4gTm9uZQorCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5CeXRlY29kZShmLCAnTE9BRF9HTE9CQUwnKQogICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZiwgJ0xPQURfQ09OU1QnLCBOb25lKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI0Ny5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTdjZWVkLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotIiIiCi1UZXN0IHN1aXRlIHRvIGNoZWNrIGNvbXBsaWFuY2Ugd2l0aCBQRVAgMjQ3LCB0aGUgc3RhbmRhcmQgQVBJCi1mb3IgaGFzaGluZyBhbGdvcml0aG1zCi0iIiIKLQotaW1wb3J0IGhtYWMKLWltcG9ydCB1bml0dGVzdAotZnJvbSBoYXNobGliIGltcG9ydCBtZDUsIHNoYTEsIHNoYTIyNCwgc2hhMjU2LCBzaGEzODQsIHNoYTUxMgotCi1jbGFzcyBQZXAyNDdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBjaGVja19tb2R1bGUoc2VsZiwgbW9kdWxlLCBrZXk9Tm9uZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ2RpZ2VzdF9zaXplJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUuZGlnZXN0X3NpemUgaXMgTm9uZSBvciBtb2R1bGUuZGlnZXN0X3NpemUgPiAwKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChtb2R1bGUubmV3LCBtb2R1bGUuZGlnZXN0X3NpemUsIGtleSkKLQotICAgIGRlZiBjaGVja19vYmplY3Qoc2VsZiwgY2xzLCBkaWdlc3Rfc2l6ZSwga2V5LCBkaWdlc3Rtb2Q9Tm9uZSk6Ci0gICAgICAgIGlmIGtleSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIGRpZ2VzdG1vZCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRpZ2VzdG1vZCA9IG1kNQotICAgICAgICAgICAgb2JqMSA9IGNscyhrZXksIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpCi0gICAgICAgICAgICBvYmoyID0gY2xzKGtleSwgYidzdHJpbmcnLCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQotICAgICAgICAgICAgaDEgPSBjbHMoa2V5LCBiJ3N0cmluZycsIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpLmRpZ2VzdCgpCi0gICAgICAgICAgICBvYmozID0gY2xzKGtleSwgZGlnZXN0bW9kPWRpZ2VzdG1vZCkKLSAgICAgICAgICAgIG9iajMudXBkYXRlKGInc3RyaW5nJykKLSAgICAgICAgICAgIGgyID0gb2JqMy5kaWdlc3QoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb2JqMSA9IGNscygpCi0gICAgICAgICAgICBvYmoyID0gY2xzKGInc3RyaW5nJykKLSAgICAgICAgICAgIGgxID0gY2xzKGInc3RyaW5nJykuZGlnZXN0KCkKLSAgICAgICAgICAgIG9iajMgPSBjbHMoKQotICAgICAgICAgICAgb2JqMy51cGRhdGUoYidzdHJpbmcnKQotICAgICAgICAgICAgaDIgPSBvYmozLmRpZ2VzdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihvYmoxLCAnZGlnZXN0X3NpemUnKSkKLQotICAgICAgICBpZiBkaWdlc3Rfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqMS5kaWdlc3Rfc2l6ZSwgZGlnZXN0X3NpemUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdF9zaXplLCBsZW4oaDEpKQotICAgICAgICBvYmoxLnVwZGF0ZShiJ3N0cmluZycpCi0gICAgICAgIG9ial9jb3B5ID0gb2JqMS5jb3B5KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdCgpLCBvYmpfY29weS5kaWdlc3QoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmhleGRpZ2VzdCgpLCBvYmpfY29weS5oZXhkaWdlc3QoKSkKLQotICAgICAgICBkaWdlc3QsIGhleGRpZ2VzdCA9IG9iajEuZGlnZXN0KCksIG9iajEuaGV4ZGlnZXN0KCkKLSAgICAgICAgaGQyID0gIiIKLSAgICAgICAgZm9yIGJ5dGUgaW4gZGlnZXN0OgotICAgICAgICAgICAgaGQyICs9ICclMDJ4JyAlIGJ5dGUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZDIsIGhleGRpZ2VzdCkKLQotICAgIGRlZiB0ZXN0X21kNShzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3QobWQ1LCBOb25lLCBOb25lKQotCi0gICAgZGVmIHRlc3Rfc2hhKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGExLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGEyMjQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTI1NiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMzg0LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGE1MTIsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9obWFjKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX21vZHVsZShobWFjLCBrZXk9YidhYmMnKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waWNrbGUucHkgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQppbmRleCBkNDY3ZDUyLi5lNmM1ZDA4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weQpAQCAtMzQsOCArMzQsNiBAQAogCiAgICAgdW5waWNrbGVyID0gcGlja2xlLl9VbnBpY2tsZXIKICAgICBiYWRfc3RhY2tfZXJyb3JzID0gKEluZGV4RXJyb3IsKQotICAgIGJhZF9tYXJrX2Vycm9ycyA9IChJbmRleEVycm9yLCBwaWNrbGUuVW5waWNrbGluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBFT0ZFcnJvcikKICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuZXJyb3IsIEluZGV4RXJyb3IsIEltcG9ydEVycm9yKQpAQCAtNzAsOCArNjgsNiBAQAogICAgIHBpY2tsZXIgPSBwaWNrbGUuX1BpY2tsZXIKICAgICB1bnBpY2tsZXIgPSBwaWNrbGUuX1VucGlja2xlcgogICAgIGJhZF9zdGFja19lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgSW5kZXhFcnJvcikKLSAgICBiYWRfbWFya19lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgRU9GRXJyb3IpCiAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBFT0ZFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LmVycm9yLCBJbmRleEVycm9yLCBJbXBvcnRFcnJvcikKQEAgLTE0Myw5ICsxMzksNyBAQAogICAgIGNsYXNzIENVbnBpY2tsZXJUZXN0cyhQeVVucGlja2xlclRlc3RzKToKICAgICAgICAgdW5waWNrbGVyID0gX3BpY2tsZS5VbnBpY2tsZXIKICAgICAgICAgYmFkX3N0YWNrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCkKLSAgICAgICAgYmFkX21hcmtfZXJyb3JzID0gKEVPRkVycm9yLCkKLSAgICAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBFT0ZFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcikKKyAgICAgICAgdHJ1bmNhdGVkX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCkKIAogICAgIGNsYXNzIENQaWNrbGVyVGVzdHMoUHlQaWNrbGVyVGVzdHMpOgogICAgICAgICBwaWNrbGVyID0gX3BpY2tsZS5QaWNrbGVyCkBAIC0zNDEsNiArMzM1LDkgQEAKICAgICAgICAgICAgICAgICBpZiAobW9kdWxlMiwgbmFtZTIpID09ICgnZXhjZXB0aW9ucycsICdPU0Vycm9yJyk6CiAgICAgICAgICAgICAgICAgICAgIGF0dHIgPSBnZXRhdHRyaWJ1dGUobW9kdWxlMywgbmFtZTMpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGF0dHIsIE9TRXJyb3IpKQorICAgICAgICAgICAgICAgIGVsaWYgKG1vZHVsZTIsIG5hbWUyKSA9PSAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKToKKyAgICAgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHJpYnV0ZShtb2R1bGUzLCBuYW1lMykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYXR0ciwgSW1wb3J0RXJyb3IpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgbmFtZSA9IG1hcHBpbmcobW9kdWxlMiwgbmFtZTIpCiAgICAgICAgICAgICAgICAgICAgIGlmIG1vZHVsZTNbOjFdICE9ICdfJzoKQEAgLTQwNyw2ICs0MDQsMTEgQEAKICAgICAgICAgICAgICAgICBpZiBleGMgaXMgbm90IE9TRXJyb3IgYW5kIGlzc3ViY2xhc3MoZXhjLCBPU0Vycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgJ09TRXJyb3InKSkKKyAgICAgICAgICAgICAgICBlbGlmIGV4YyBpcyBub3QgSW1wb3J0RXJyb3IgYW5kIGlzc3ViY2xhc3MoZXhjLCBJbXBvcnRFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsICdJbXBvcnRFcnJvcicpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hcHBpbmcoJ2V4Y2VwdGlvbnMnLCBuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCBuYW1lKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCBuYW1lKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5CmluZGV4IGJiZTY4NzUuLjg2YmViZmEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weQpAQCAtMSw5ICsxLDkgQEAKLWltcG9ydCBzdHJ1Y3QKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBwaWNrbGV0b29scwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzCitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgT3B0aW1pemVkUGlja2xlVGVzdHMoQWJzdHJhY3RQaWNrbGVUZXN0cywgQWJzdHJhY3RQaWNrbGVNb2R1bGVUZXN0cyk6CiAKQEAgLTU5LDggKzU5LDQwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocGlja2xlLkJJTlBVVCwgcGlja2xlZDIpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnYnl0ZXNfdHlwZXMnLAorICAgICAgICAgICAgICAgICAgICAgJ1VQX1RPX05FV0xJTkUnLCAnVEFLRU5fRlJPTV9BUkdVTUVOVDEnLAorICAgICAgICAgICAgICAgICAgICAgJ1RBS0VOX0ZST01fQVJHVU1FTlQ0JywgJ1RBS0VOX0ZST01fQVJHVU1FTlQ0VScsCisgICAgICAgICAgICAgICAgICAgICAnVEFLRU5fRlJPTV9BUkdVTUVOVDhVJywgJ0FyZ3VtZW50RGVzY3JpcHRvcicsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91aW50MScsICdyZWFkX3VpbnQyJywgJ3JlYWRfaW50NCcsICdyZWFkX3VpbnQ0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VpbnQ4JywgJ3JlYWRfc3RyaW5nbmwnLCAncmVhZF9zdHJpbmdubF9ub2VzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9zdHJpbmdubF9ub2VzY2FwZV9wYWlyJywgJ3JlYWRfc3RyaW5nMScsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9zdHJpbmc0JywgJ3JlYWRfYnl0ZXMxJywgJ3JlYWRfYnl0ZXM0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2J5dGVzOCcsICdyZWFkX3VuaWNvZGVzdHJpbmdubCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF91bmljb2Rlc3RyaW5nMScsICdyZWFkX3VuaWNvZGVzdHJpbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VuaWNvZGVzdHJpbmc4JywgJ3JlYWRfZGVjaW1hbG5sX3Nob3J0JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2RlY2ltYWxubF9sb25nJywgJ3JlYWRfZmxvYXRubCcsICdyZWFkX2Zsb2F0OCcsCisgICAgICAgICAgICAgICAgICAgICAncmVhZF9sb25nMScsICdyZWFkX2xvbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICd1aW50MScsICd1aW50MicsICdpbnQ0JywgJ3VpbnQ0JywgJ3VpbnQ4JywgJ3N0cmluZ25sJywKKyAgICAgICAgICAgICAgICAgICAgICdzdHJpbmdubF9ub2VzY2FwZScsICdzdHJpbmdubF9ub2VzY2FwZV9wYWlyJywgJ3N0cmluZzEnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZzQnLCAnYnl0ZXMxJywgJ2J5dGVzNCcsICdieXRlczgnLAorICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVzdHJpbmdubCcsICd1bmljb2Rlc3RyaW5nMScsICd1bmljb2Rlc3RyaW5nNCcsCisgICAgICAgICAgICAgICAgICAgICAndW5pY29kZXN0cmluZzgnLCAnZGVjaW1hbG5sX3Nob3J0JywgJ2RlY2ltYWxubF9sb25nJywKKyAgICAgICAgICAgICAgICAgICAgICdmbG9hdG5sJywgJ2Zsb2F0OCcsICdsb25nMScsICdsb25nNCcsCisgICAgICAgICAgICAgICAgICAgICAnU3RhY2tPYmplY3QnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5aW50JywgJ3B5bG9uZycsICdweWludGVnZXJfb3JfYm9vbCcsICdweWJvb2wnLCAncHlmbG9hdCcsCisgICAgICAgICAgICAgICAgICAgICAncHlieXRlc19vcl9zdHInLCAncHlzdHJpbmcnLCAncHlieXRlcycsICdweXVuaWNvZGUnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5bm9uZScsICdweXR1cGxlJywgJ3B5bGlzdCcsICdweWRpY3QnLCAncHlzZXQnLAorICAgICAgICAgICAgICAgICAgICAgJ3B5ZnJvemVuc2V0JywgJ2FueW9iamVjdCcsICdtYXJrb2JqZWN0JywgJ3N0YWNrc2xpY2UnLAorICAgICAgICAgICAgICAgICAgICAgJ09wY29kZUluZm8nLCAnb3Bjb2RlcycsICdjb2RlMm9wJywKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgcGlja2xldG9vbHMsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE9wdGltaXplZFBpY2tsZVRlc3RzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1pc2NUZXN0Q2FzZSkKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHBpY2tsZXRvb2xzKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CmluZGV4IDZhN2I0NWYuLmFkMDFkMDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waXBlcy5weQpAQCAtMiw2ICsyLDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc2h1dGlsCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIHVubGluaywgcmVhcF9jaGlsZHJlbgogCiBpZiBvcy5uYW1lICE9ICdwb3NpeCc6CkBAIC0xOCw2ICsxOSw4IEBACiAgICAgICAgICAgICB1bmxpbmsoZikKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTEoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCiAgICAgICAgIHQuYXBwZW5kKHNfY29tbWFuZCwgcGlwZXMuU1RESU5fU1RET1VUKQogICAgICAgICBmID0gdC5vcGVuKFRFU1RGTiwgJ3cnKQpAQCAtMjcsNiArMzAsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgJ0hFTExPIFdPUkxEICMxJykKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTIoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ2hlbGxvIHdvcmxkICMyJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKQEAgLTM2LDYgKzQxLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICdIRUxMTyBXT1JMRCAjMicpCiAKICAgICBkZWYgdGVzdFNpbXBsZVBpcGUzKHNlbGYpOgorICAgICAgICBpZiBzaHV0aWwud2hpY2goJ3RyJykgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3RyIGlzIG5vdCBhdmFpbGFibGUnKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCdoZWxsbyB3b3JsZCAjMicpCiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKaW5kZXggYTgyMDU4Ny4uZmMwNGRjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQpAQCAtODEsOCArODEsOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlczIsIFJFU09VUkNFX0RBVEEpCiAKICAgICAgICAgbmFtZXMgPSBbXQotICAgICAgICBmb3IgbG9hZGVyLCBuYW1lLCBpc3BrZyBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbemlwX2ZpbGVdKToKLSAgICAgICAgICAgIG5hbWVzLmFwcGVuZChuYW1lKQorICAgICAgICBmb3IgbW9kdWxlaW5mbyBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbemlwX2ZpbGVdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGVpbmZvLCBwa2d1dGlsLk1vZHVsZUluZm8pCisgICAgICAgICAgICBuYW1lcy5hcHBlbmQobW9kdWxlaW5mby5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVzLCBbJ3Rlc3RfZ2V0ZGF0YV96aXBmaWxlJ10pCiAKICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCkBAIC00MTMsNiArNDE0LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigidGVzdC5zdXBwb3J0IikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoX19uYW1lX18gPT0gJ19fbWFpbl9fJywgJ25vdCBjb21wYXRpYmxlIHdpdGggX19tYWluX18nKQogICAgIGRlZiB0ZXN0X2dldF9sb2FkZXJfaGFuZGxlc19taXNzaW5nX2xvYWRlcl9hdHRyaWJ1dGUoc2VsZik6CiAgICAgICAgIGdsb2JhbCBfX2xvYWRlcl9fCiAgICAgICAgIHRoaXNfbG9hZGVyID0gX19sb2FkZXJfXwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weSBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKaW5kZXggMThkZTExMC4uNWY4NzVlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CkBAIC0zMyw2ICszMyw3IEBACiAgICAgICAgICAgICAgICAgJ2ltcG9ydCBwbGF0Zm9ybTsgcHJpbnQocGxhdGZvcm0uYXJjaGl0ZWN0dXJlKCkpJ10KICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgICAgIHJldHVybiBwLmNvbW11bmljYXRlKCkKKwogICAgICAgICByZWFsID0gb3MucGF0aC5yZWFscGF0aChzeXMuZXhlY3V0YWJsZSkKICAgICAgICAgbGluayA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgb3Muc3ltbGluayhyZWFsLCBsaW5rKQpAQCAtMjYyLDcgKzI2Myw3IEBACiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKAogICAgICAgICAgICAgICAgICdpZ25vcmUnLAotICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgcidkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCiAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCiAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICkKQEAgLTMzOCw3ICszMzksNyBAQAogICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0XChcKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uXChcKSAnCisgICAgICAgICAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKaW5kZXggNjkyY2FjNC4uYzc3YTZiZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CkBAIC03LDcgKzcsNiBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGJpbmFzY2lpCiBpbXBvcnQgY29sbGVjdGlvbnMKLWltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCkBAIC01MzQsOCArNTMzLDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VyLCBpbl9kYXRhKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7IlBsaXN0Rm9ybWF0IiwgIlBMSVNUSEVBREVSIn0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgcGxpc3RsaWIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQbGlzdGxpYiwgVGVzdFBsaXN0bGliRGVwcmVjYXRlZCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0UGxpc3RsaWIsIFRlc3RQbGlzdGxpYkRlcHJlY2F0ZWQsIE1pc2NUZXN0Q2FzZSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCBiY2VlYjkzLi5lNWIxNmRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtOCw3ICs4LDYgQEAKIGltcG9ydCBhc3luY2hhdAogaW1wb3J0IHNvY2tldAogaW1wb3J0IG9zCi1pbXBvcnQgdGltZQogaW1wb3J0IGVycm5vCiAKIGZyb20gdW5pdHRlc3QgaW1wb3J0IFRlc3RDYXNlLCBza2lwVW5sZXNzCkBAIC0xNTMsMTAgKzE1MiwxMiBAQAogICAgICAgICBkZWYgY21kX3N0bHMoc2VsZiwgYXJnKToKICAgICAgICAgICAgIGlmIHNlbGYudGxzX2FjdGl2ZSBpcyBGYWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnB1c2goJytPSyBCZWdpbiBUTFMgbmVnb3RpYXRpb24nKQotICAgICAgICAgICAgICAgIHRsc19zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29ja2V0LCBjZXJ0ZmlsZT1DRVJURklMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlKQorICAgICAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICAgICAgdGxzX3NvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29ja2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCiAgICAgICAgICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCiAgICAgICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHRsc19zb2NrKQogICAgICAgICAgICAgICAgIHNlbGYudGxzX2FjdGl2ZSA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CmluZGV4IDJhNTljMzguLjYzYzc0Y2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQpAQCAtMTEsNyArMTEsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwd2QKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdApAQCAtMzk4LDcgKzM5Nyw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChmcC5maWxlbm8oKSkpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBmbG9hdChmcC5maWxlbm8oKSkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmcC5jbG9zZSgpCkBAIC00MDgsMTYgKzQwNywxOCBAQAogICAgIGRlZiB0ZXN0X3N0YXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoYnl0ZWFycmF5KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpKQogCisgICAgICAgIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGJ5dGVhcnJheShvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAnY2FuXCd0IHNwZWNpZnkgTm9uZSBmb3IgcGF0aCBhcmd1bWVudCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciwgbm90JywKICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBsaXN0KHN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGxpc3Qob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdta2ZpZm8nKSwgImRvbid0IGhhdmUgbWtmaWZvKCkiKQpAQCAtNzk4LDcgKzc5OSwxMSBAQAogICAgICAgICAgICAgZ3JvdXBzID0gaWRnLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICByZXQgPSBpZGcuY2xvc2UoKQogCi0gICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBvciBub3QgZ3JvdXBzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZGdfZ3JvdXBzID0gc2V0KGludChnKSBmb3IgZyBpbiBncm91cHMuc3BsaXQoKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBpZGdfZ3JvdXBzID0gc2V0KCkKKyAgICAgICAgaWYgcmV0IGlzIG5vdCBOb25lIG9yIG5vdCBpZGdfZ3JvdXBzOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm5lZWQgd29ya2luZyAnaWQgLUcnIikKIAogICAgICAgICAjIElzc3VlcyAxNjY5ODogT1MgWCBBQklzIHByaW9yIHRvIDEwLjYgaGF2ZSBsaW1pdHMgb24gZ2V0Z3JvdXBzKCkKQEAgLTgwOSwxMiArODE0LDExIEBACiAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImdldGdyb3VwcygyKSBpcyBicm9rZW4gcHJpb3IgdG8gMTAuNiIpCiAKICAgICAgICAgIyAnaWQgLUcnIGFuZCAnb3MuZ2V0Z3JvdXBzKCknIHNob3VsZCByZXR1cm4gdGhlIHNhbWUKLSAgICAgICAgIyBncm91cHMsIGlnbm9yaW5nIG9yZGVyIGFuZCBkdXBsaWNhdGVzLgotICAgICAgICAjICMxMDgyMiAtIGl0IGlzIGltcGxlbWVudGF0aW9uIGRlZmluZWQgd2hldGhlciBwb3NpeC5nZXRncm91cHMoKQotICAgICAgICAjIGluY2x1ZGVzIHRoZSBlZmZlY3RpdmUgZ2lkIHNvIHdlIGluY2x1ZGUgaXQgYW55d2F5LCBzaW5jZSBpZCAtRyBkb2VzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc2V0KFtpbnQoeCkgZm9yIHggaW4gZ3JvdXBzLnNwbGl0KCldKSwKLSAgICAgICAgICAgICAgICBzZXQocG9zaXguZ2V0Z3JvdXBzKCkgKyBbcG9zaXguZ2V0ZWdpZCgpXSkpCisgICAgICAgICMgZ3JvdXBzLCBpZ25vcmluZyBvcmRlciwgZHVwbGljYXRlcywgYW5kIHRoZSBlZmZlY3RpdmUgZ2lkLgorICAgICAgICAjICMxMDgyMi8jMjY5NDQgLSBJdCBpcyBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHdoZXRoZXIKKyAgICAgICAgIyBwb3NpeC5nZXRncm91cHMoKSBpbmNsdWRlcyB0aGUgZWZmZWN0aXZlIGdpZC4KKyAgICAgICAgc3ltZGlmZiA9IGlkZ19ncm91cHMuc3ltbWV0cmljX2RpZmZlcmVuY2UocG9zaXguZ2V0Z3JvdXBzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc3ltZGlmZiBvciBzeW1kaWZmID09IHtwb3NpeC5nZXRlZ2lkKCl9KQogCiAgICAgIyB0ZXN0cyBmb3IgdGhlIHBvc2l4ICphdCBmdW5jdGlvbnMgZm9sbG93CiAKQEAgLTg2Myw5ICs4NjcsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMSwgczIpCiAgICAgICAgICAgICBzMiA9IHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4sIGRpcl9mZD1Ob25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMSwgczIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciBvciBOb25lLCBub3QnLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPXBvc2l4LmdldGN3ZCgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD1mbG9hdChmKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9MTAqKjIwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQppbmRleCAwNzgzYzM2Li44YTFlMzNiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weQpAQCAtNTk2LDUgKzU5Niw4NSBAQAogICAgIGF0dHJpYnV0ZXMgPSBbJ3JlbHBhdGgnLCAnc2FtZWZpbGUnLCAnc2FtZW9wZW5maWxlJywgJ3NhbWVzdGF0J10KIAogCitjbGFzcyBQYXRoTGlrZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHBhdGggPSBwb3NpeHBhdGgKKworICAgIGNsYXNzIFBhdGhMaWtlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD0nJyk6CisgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYucGF0aAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmlsZV9uYW1lID0gc3VwcG9ydC5URVNURk4ubG93ZXIoKQorICAgICAgICBzZWxmLmZpbGVfcGF0aCA9IHNlbGYuUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi5maWxlX25hbWUpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVfbmFtZSwgJ3hiJywgMCkgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoYiJ0ZXN0X3Bvc2l4cGF0aC5QYXRoTGlrZVRlc3RzIikKKworICAgIGRlZiBhc3NlcnRQYXRoRXF1YWwoc2VsZiwgZnVuYyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyhzZWxmLmZpbGVfcGF0aCksIGZ1bmMoc2VsZi5maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtY2FzZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1jYXNlKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2FicyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzYWJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9qb2luKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aC5qb2luKCdhJywgc2VsZi5QYXRoTGlrZSgnYicpLCAnYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aC5qb2luKCdhJywgJ2InLCAnYycpKQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0KQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZXh0KQorCisgICAgZGVmIHRlc3RfcGF0aF9zcGxpdGRyaXZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRkcml2ZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfYmFzZW5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5iYXNlbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfZGlybmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmRpcm5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzbGluayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbGluaykKKworICAgIGRlZiB0ZXN0X3BhdGhfbGV4aXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmxleGlzdHMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzbW91bnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc21vdW50KQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR1c2VyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdXNlcikKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdmFycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHZhcnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1wYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybXBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Fic3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5hYnNwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9yZWFscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlYWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9yZWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfY29tbW9ucGF0aChzZWxmKToKKyAgICAgICAgY29tbW9uX3BhdGggPSBzZWxmLnBhdGguY29tbW9ucGF0aChbc2VsZi5maWxlX3BhdGgsIHNlbGYuZmlsZV9uYW1lXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb25fcGF0aCwgc2VsZi5maWxlX25hbWUpCisKKwogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvdy5weSBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CmluZGV4IDZmZWFjNDAuLmNlOTlmZTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG93LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG93LnB5CkBAIC0xLDQgKzEsNCBAQAotaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBQb3dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdHkucHkgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQppbmRleCBlZjVlOTllLi4xNWY4OGU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQpAQCAtMjc3LDcgKzI3Nyw2IEBACiAgICAgICAgIHNvY2tldHBhaXIgPSBzZWxmLl9zb2NrZXRwYWlyKCkKICAgICAgICAgbWFzdGVycyA9IFtzLmZpbGVubygpIGZvciBzIGluIHNvY2tldHBhaXJdCiAKLSAgICAgICAgb3MuY2xvc2UobWFzdGVyc1sxXSkKICAgICAgICAgc29ja2V0cGFpclsxXS5jbG9zZSgpCiAgICAgICAgIG9zLmNsb3NlKHdyaXRlX3RvX3N0ZGluX2ZkKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKaW5kZXggMTkzMmM2Yi4uM2Q4OWUzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBpbwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgeG1sLnNheAogCiBmcm9tIHhtbC5zYXgueG1scmVhZGVyIGltcG9ydCBBdHRyaWJ1dGVzSW1wbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkgYi9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQppbmRleCA2ZmZiYmJkLi4yY2ZmMWM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5Y2xici5weQpAQCAtMTU2LDkgKzE1Niw5IEBACiAgICAgICAgICMgVGhlc2Ugd2VyZSBvbmNlIGFib3V0IHRoZSAxMCBsb25nZXN0IG1vZHVsZXMKICAgICAgICAgY20oJ3JhbmRvbScsIGlnbm9yZT0oJ1JhbmRvbScsKSkgICMgZnJvbSBfcmFuZG9tIGltcG9ydCBSYW5kb20gYXMgQ29yZUdlbmVyYXRvcgogICAgICAgICBjbSgnY2dpJywgaWdub3JlPSgnbG9nJywpKSAgICAgICMgc2V0IHdpdGggPSBpbiBtb2R1bGUKLSAgICAgICAgY20oJ3BpY2tsZScpCisgICAgICAgIGNtKCdwaWNrbGUnLCBpZ25vcmU9KCdwYXJ0aWFsJywpKQogICAgICAgICBjbSgnYWlmYycsIGlnbm9yZT0oJ29wZW5mcCcsICdfYWlmY19wYXJhbXMnKSkgICMgc2V0IHdpdGggPSBpbiBtb2R1bGUKLSAgICAgICAgY20oJ3NyZV9wYXJzZScsIGlnbm9yZT0oJ2R1bXAnLCAnZ3JvdXBzJykpICMgZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqOyBwcm9wZXJ0eQorICAgICAgICBjbSgnc3JlX3BhcnNlJywgaWdub3JlPSgnZHVtcCcsICdncm91cHMnLCAncG9zJykpICMgZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCAqOyBwcm9wZXJ0eQogICAgICAgICBjbSgncGRiJykKICAgICAgICAgY20oJ3B5ZG9jJykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weSBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKaW5kZXggMWY3YWI3Zi4uZWQ0MzhkNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CkBAIC04NCw2ICs4NCw4IEBACiAgICAgIHwgIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOgogICAgICB8XHgyMFx4MjAKICAgICAgfCAgTk9fTUVBTklORyA9ICdlZ2dzJworICAgICB8XHgyMFx4MjAKKyAgICAgfCAgX19hbm5vdGF0aW9uc19fID0geydOT19NRUFOSU5HJzogPGNsYXNzICdzdHInPn0KIFx4MjBceDIwXHgyMFx4MjAKICAgICBjbGFzcyBDKGJ1aWx0aW5zLm9iamVjdCkKICAgICAgfCAgTWV0aG9kcyBkZWZpbmVkIGhlcmU6CkBAIC0xOTYsNiArMTk4LDggQEAKIERhdGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgZGVmaW5lZCBoZXJlOjxicj4KIDxkbD48ZHQ+PHN0cm9uZz5OT19NRUFOSU5HPC9zdHJvbmc+ID0gJ2VnZ3MnPC9kbD4KIAorPGRsPjxkdD48c3Ryb25nPl9fYW5ub3RhdGlvbnNfXzwvc3Ryb25nPiA9IHsnTk9fTUVBTklORyc6ICZsdDtjbGFzcyAnc3RyJyZndDt9PC9kbD4KKwogPC90ZD48L3RyPjwvdGFibGU+IDxwPgogPHRhYmxlIHdpZHRoPSIxMDAlJSIgY2VsbHNwYWNpbmc9MCBjZWxscGFkZGluZz0yIGJvcmRlcj0wIHN1bW1hcnk9InNlY3Rpb24iPgogPHRyIGJnY29sb3I9IiNmZmM4ZDgiPgpAQCAtMjY0LDcgKzI2OCw3IEBACiBVc2UgaGVscChzdHIpIGZvciBoZWxwIG9uIHRoZSBzdHIgY2xhc3MuJycnLnJlcGxhY2UoJ1xuJywgb3MubGluZXNlcCkKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbW9kdWxlIHdpdGggYmFkIGltcG9ydHMKLWJhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVyIgorYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIE1vZHVsZU5vdEZvdW5kRXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKIAogZXhwZWN0ZWRfZHluYW1pY2F0dHJpYnV0ZV9wYXR0ZXJuID0gIiIiCiBIZWxwIG9uIGNsYXNzIERBIGluIG1vZHVsZSAlczoKQEAgLTYzOSw4ICs2NDMsOSBAQAogICAgICAgICBkZWwgZXhwZWN0ZWRbJ19fZG9jX18nXQogICAgICAgICBkZWwgZXhwZWN0ZWRbJ19fY2xhc3NfXyddCiAgICAgICAgICMgaW5zcGVjdCByZXNvbHZlcyBkZXNjcmlwdG9ycyBvbiB0eXBlIGludG8gbWV0aG9kcywgYnV0IHZhcnMgZG9lc24ndCwKLSAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBfX3N1YmNsYXNzaG9va19fLgorICAgICAgICAjIHNvIHdlIG5lZWQgdG8gdXBkYXRlIF9fc3ViY2xhc3Nob29rX18gYW5kIF9faW5pdF9zdWJjbGFzc19fLgogICAgICAgICBleHBlY3RlZFsnX19zdWJjbGFzc2hvb2tfXyddID0gVGVzdENsYXNzLl9fc3ViY2xhc3Nob29rX18KKyAgICAgICAgZXhwZWN0ZWRbJ19faW5pdF9zdWJjbGFzc19fJ10gPSBUZXN0Q2xhc3MuX19pbml0X3N1YmNsYXNzX18KIAogICAgICAgICBtZXRob2RzID0gcHlkb2MuYWxsbWV0aG9kcyhUZXN0Q2xhc3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RGljdEVxdWFsKG1ldGhvZHMsIGV4cGVjdGVkKQpAQCAtODY4LDYgKzg3MywyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9zdW1tYXJ5X2xpbmUodC53cmFwKSwKICAgICAgICAgICAgICJ3cmFwKHRleHQpIG1ldGhvZCBvZiB0ZXh0d3JhcC5UZXh0V3JhcHBlciBpbnN0YW5jZSIpCiAKKyAgICBkZWYgdGVzdF9maWVsZF9vcmRlcl9mb3JfbmFtZWRfdHVwbGVzKHNlbGYpOgorICAgICAgICBQZXJzb24gPSBuYW1lZHR1cGxlKCdQZXJzb24nLCBbJ25pY2tuYW1lJywgJ2ZpcnN0bmFtZScsICdhZ2Vncm91cCddKQorICAgICAgICBzID0gcHlkb2MucmVuZGVyX2RvYyhQZXJzb24pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzLmluZGV4KCduaWNrbmFtZScpLCBzLmluZGV4KCdmaXJzdG5hbWUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHMuaW5kZXgoJ2ZpcnN0bmFtZScpLCBzLmluZGV4KCdhZ2Vncm91cCcpKQorCisgICAgICAgIGNsYXNzIE5vbkl0ZXJhYmxlRmllbGRzOgorICAgICAgICAgICAgX2ZpZWxkcyA9IE5vbmUKKworICAgICAgICBjbGFzcyBOb25IYXNoYWJsZUZpZWxkczoKKyAgICAgICAgICAgIF9maWVsZHMgPSBbW11dCisKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlc2UgZG9lc24ndCBmYWlsCisgICAgICAgIHB5ZG9jLnJlbmRlcl9kb2MoTm9uSXRlcmFibGVGaWVsZHMpCisgICAgICAgIHB5ZG9jLnJlbmRlcl9kb2MoTm9uSGFzaGFibGVGaWVsZHMpCisKICAgICBAcmVxdWlyZXNfZG9jc3RyaW5ncwogICAgIGRlZiB0ZXN0X2JvdW5kX2J1aWx0aW5fbWV0aG9kKHNlbGYpOgogICAgICAgICBzID0gU3RyaW5nSU8oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkgYi9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQppbmRleCA3Y2FjMDEzLi43MTU1NDRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3F1b3ByaS5weQpAQCAtMSw2ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAogCi1pbXBvcnQgc3lzLCBvcywgaW8sIHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMsIGlvLCBzdWJwcm9jZXNzCiBpbXBvcnQgcXVvcHJpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQppbmRleCBlODBlZDE3Li5hNDQxM2I1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JhbmRvbS5weQpAQCAtNyw2ICs3LDcgQEAKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiBmcm9tIG1hdGggaW1wb3J0IGxvZywgZXhwLCBwaSwgZnN1bSwgc2luCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgogCiBjbGFzcyBUZXN0QmFzaWNPcHM6CiAgICAgIyBTdXBlcmNsYXNzIHdpdGggdGVzdHMgY29tbW9uIHRvIGFsbCBnZW5lcmF0b3JzLgpAQCAtMTQxLDYgKzE0Miw4MyBAQAogICAgIGRlZiB0ZXN0X3NhbXBsZV9vbl9kaWN0cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmdlbi5zYW1wbGUsIGRpY3QuZnJvbWtleXMoJ2FiY2RlZicpLCAyKQogCisgICAgZGVmIHRlc3RfY2hvaWNlcyhzZWxmKToKKyAgICAgICAgY2hvaWNlcyA9IHNlbGYuZ2VuLmNob2ljZXMKKyAgICAgICAgZGF0YSA9IFsncmVkJywgJ2dyZWVuJywgJ2JsdWUnLCAneWVsbG93J10KKyAgICAgICAgc3RyX2RhdGEgPSAnYWJjZCcKKyAgICAgICAgcmFuZ2VfZGF0YSA9IHJhbmdlKDQpCisgICAgICAgIHNldF9kYXRhID0gc2V0KHJhbmdlKDQpKQorCisgICAgICAgICMgYmFzaWMgZnVuY3Rpb25hbGl0eQorICAgICAgICBmb3Igc2FtcGxlIGluIFsKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgaz01KSwKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgcmFuZ2UoNCksIGs9NSksCisgICAgICAgICAgICBjaG9pY2VzKGs9NSwgcG9wdWxhdGlvbj1kYXRhLCB3ZWlnaHRzPXJhbmdlKDQpKSwKKyAgICAgICAgICAgIGNob2ljZXMoaz01LCBwb3B1bGF0aW9uPWRhdGEsIGN1bV93ZWlnaHRzPXJhbmdlKDQpKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNhbXBsZSksIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc2FtcGxlKSwgbGlzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoc2FtcGxlKSA8PSBzZXQoZGF0YSkpCisKKyAgICAgICAgIyB0ZXN0IGFyZ3VtZW50IGhhbmRsaW5nCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBtaXNzaW5nIGFyZ3VtZW50cworICAgICAgICAgICAgY2hvaWNlcygyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcyhkYXRhLCBrPTApLCBbXSkgICAgICAgICAgICAgICAgICAgICAgICAgIyBrID09IDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKGRhdGEsIGs9LTEpLCBbXSkgICAgICAgICAgICAgICAgICAgICAgICAjIG5lZ2F0aXZlIGsgYmVoYXZlcyBsaWtlIGBgWzBdICogLTFgYAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGs9Mi41KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBrIGlzIGEgZmxvYXQKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoc3RyX2RhdGEsIGs9NSkpIDw9IHNldChzdHJfZGF0YSkpICAgICMgcG9wdWxhdGlvbiBpcyBhIHN0cmluZyBzZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMocmFuZ2VfZGF0YSwgaz01KSkgPD0gc2V0KHJhbmdlX2RhdGEpKSAgIyBwb3B1bGF0aW9uIGlzIGEgcmFuZ2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhzZXRfZGF0YSwgaz0yKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9wdWxhdGlvbiBpcyBub3QgYSBzZXF1ZW5jZQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhkYXRhLCBOb25lLCBrPTUpKSA8PSBzZXQoZGF0YSkpICAgICAgIyB3ZWlnaHRzIGlzIE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIHdlaWdodHM9Tm9uZSwgaz01KSkgPD0gc2V0KGRhdGEpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBbMSwyXSwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbGVuKHdlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIDEwLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24taXRlcmFibGUgd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIFtOb25lXSo0LCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24tbnVtZXJpYyB3ZWlnaHRzCisgICAgICAgIGZvciB3ZWlnaHRzIGluIFsKKyAgICAgICAgICAgICAgICBbMTUsIDEwLCAyNSwgMzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVnZXIgd2VpZ2h0cworICAgICAgICAgICAgICAgIFsxNS4xLCAxMC4yLCAyNS4yLCAzMC4zXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmxvYXQgd2VpZ2h0cworICAgICAgICAgICAgICAgIFtGcmFjdGlvbigxLCAzKSwgRnJhY3Rpb24oMiwgNiksIEZyYWN0aW9uKDMsIDYpLCBGcmFjdGlvbig0LCA2KV0sICMgZnJhY3Rpb25hbCB3ZWlnaHRzCisgICAgICAgICAgICAgICAgW1RydWUsIEZhbHNlLCBUcnVlLCBGYWxzZV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBib29sZWFucyAoaW5jbHVkZSAvIGV4Y2x1ZGUpCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgd2VpZ2h0cywgaz01KSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPVsxLDJdLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgIyBsZW4od2VpZ2h0cykgIT0gbGVuKHBvcHVsYXRpb24pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9MTAsIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vbi1pdGVyYWJsZSBjdW1fd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPVtOb25lXSo0LCBrPTUpICAgICAgICAgICAgICAgICAgICAgIyBub24tbnVtZXJpYyBjdW1fd2VpZ2h0cworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIHJhbmdlKDQpLCBjdW1fd2VpZ2h0cz1yYW5nZSg0KSwgaz01KSAgICAgICAgICAgIyBib3RoIHdlaWdodHMgYW5kIGN1bV93ZWlnaHRzCisgICAgICAgIGZvciB3ZWlnaHRzIGluIFsKKyAgICAgICAgICAgICAgICBbMTUsIDEwLCAyNSwgMzBdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGludGVnZXIgY3VtX3dlaWdodHMKKyAgICAgICAgICAgICAgICBbMTUuMSwgMTAuMiwgMjUuMiwgMzAuM10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZsb2F0IGN1bV93ZWlnaHRzCisgICAgICAgICAgICAgICAgW0ZyYWN0aW9uKDEsIDMpLCBGcmFjdGlvbigyLCA2KSwgRnJhY3Rpb24oMywgNiksIEZyYWN0aW9uKDQsIDYpXSwgIyBmcmFjdGlvbmFsIGN1bV93ZWlnaHRzCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgY3VtX3dlaWdodHM9d2VpZ2h0cywgaz01KSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgICMgVGVzdCB3ZWlnaHQgZm9jdXNlZCBvbiBhIHNpbmdsZSBlbGVtZW50IG9mIHRoZSBwb3B1bGF0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFsxLCAwLCAwLCAwXSksIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoJ2FiY2QnLCBbMCwgMSwgMCwgMF0pLCBbJ2InXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKCdhYmNkJywgWzAsIDAsIDEsIDBdKSwgWydjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFswLCAwLCAwLCAxXSksIFsnZCddKQorCisgICAgICAgICMgVGVzdCBjb25zaXN0ZW5jeSB3aXRoIHJhbmRvbS5jaG9pY2UoKSBmb3IgZW1wdHkgcG9wdWxhdGlvbgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgaz0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgd2VpZ2h0cz1bXSwgaz0xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhbXSwgY3VtX3dlaWdodHM9W10sIGs9NSkKKwogICAgIGRlZiB0ZXN0X2dhdXNzKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBzZWVkKCkgbWV0aG9kIGluaXRpYWxpemVzIGFsbCB0aGUgaGlkZGVuIHN0YXRlLiAgSW4KICAgICAgICAgIyBwYXJ0aWN1bGFyLCB0aHJvdWdoIDIuMi4xIGl0IGZhaWxlZCB0byByZXNldCBhIHBpZWNlIG9mIHN0YXRlIHVzZWQKQEAgLTU1MSw2ICs2MjksMzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0b3AgPCB4IDw9IHN0YXJ0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh4K3N0b3ApJXN0ZXAsIDApCiAKKyAgICBkZWYgdGVzdF9jaG9pY2VzX2FsZ29yaXRobXMoc2VsZik6CisgICAgICAgICMgVGhlIHZhcmlvdXMgd2F5cyBvZiBzcGVjaWZpbmcgd2VpZ2h0cyBzaG91bGQgcHJvZHVjZSB0aGUgc2FtZSByZXN1bHRzCisgICAgICAgIGNob2ljZXMgPSBzZWxmLmdlbi5jaG9pY2VzCisgICAgICAgIG4gPSAxMzEzMjgxNworCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoODY3NTMwOSkKKyAgICAgICAgYSA9IHNlbGYuZ2VuLmNob2ljZXMocmFuZ2UobiksIGs9MTAwMDApCisKKyAgICAgICAgc2VsZi5nZW4uc2VlZCg4Njc1MzA5KQorICAgICAgICBiID0gc2VsZi5nZW4uY2hvaWNlcyhyYW5nZShuKSwgWzFdKm4sIGs9MTAwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKworICAgICAgICBzZWxmLmdlbi5zZWVkKDg2NzUzMDkpCisgICAgICAgIGMgPSBzZWxmLmdlbi5jaG9pY2VzKHJhbmdlKG4pLCBjdW1fd2VpZ2h0cz1yYW5nZSgxLCBuKzEpLCBrPTEwMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGMpCisKKyAgICAgICAgIyBBbWVyaWFuIFJvdWxldHRlCisgICAgICAgIHBvcHVsYXRpb24gPSBbJ1JlZCcsICdCbGFjaycsICdHcmVlbiddCisgICAgICAgIHdlaWdodHMgPSBbMTgsIDE4LCAyXQorICAgICAgICBjdW1fd2VpZ2h0cyA9IFsxOCwgMzYsIDM4XQorICAgICAgICBleHBhbmRlZF9wb3B1bGF0aW9uID0gWydSZWQnXSAqIDE4ICsgWydCbGFjayddICogMTggKyBbJ0dyZWVuJ10gKiAyCisKKyAgICAgICAgc2VsZi5nZW4uc2VlZCg5MDM1NzY4KQorICAgICAgICBhID0gc2VsZi5nZW4uY2hvaWNlcyhleHBhbmRlZF9wb3B1bGF0aW9uLCBrPTEwMDAwKQorCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoOTAzNTc2OCkKKyAgICAgICAgYiA9IHNlbGYuZ2VuLmNob2ljZXMocG9wdWxhdGlvbiwgd2VpZ2h0cywgaz0xMDAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQorCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoOTAzNTc2OCkKKyAgICAgICAgYyA9IHNlbGYuZ2VuLmNob2ljZXMocG9wdWxhdGlvbiwgY3VtX3dlaWdodHM9Y3VtX3dlaWdodHMsIGs9MTAwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYykKKwogZGVmIGdhbW1hKHosIHNxcnQycGk9KDIuMCpwaSkqKjAuNSk6CiAgICAgIyBSZWZsZWN0aW9uIHRvIHJpZ2h0IGhhbGYgb2YgY29tcGxleCBwbGFuZQogICAgIGlmIHogPCAwLjU6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQppbmRleCBjMDIyZjA3Li45ZTExZTUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKQEAgLTEsOSArMSwxMCBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gYnVpbHQtaW4gZnVuY3Rpb25zCiAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKIAogIyBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgKDMgYXJncyBvbmx5KSwgZm9yIGNvbXBhcmlzb24KIGRlZiBweXJhbmdlKHN0YXJ0LCBzdG9wLCBzdGVwKToKQEAgLTQ5OCwyOSArNDk5LDMyIEBACiAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgcmFuZ2VpdGVyX3R5cGUgPSB0eXBlKGl0ZXIocmFuZ2UoMCkpKQogCi0gICAgICAgICMgcmFuZ2VpdGVyX25ldyBkb2Vzbid0IHRha2Uga2V5d29yZCBhcmd1bWVudHMKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUoYT0xKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmFuZ2VpdGVyX3R5cGUsIDEsIDMsIDEpCiAKLSAgICAgICAgIyByYW5nZWl0ZXJfbmV3IHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMSwgMSkKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgcmFuZ2VpdGVyX25ldyBkb2Vzbid0IHRha2Uga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShhPTEpCiAKLSAgICAgICAgIyBzdGFydCwgc3RvcCBhbmQgc3RvcCBtdXN0IGZpdCBpbiBDIGxvbmcKLSAgICAgICAgZm9yIGdvb2RfdmFsIGluIFtfdGVzdGNhcGkuTE9OR19NQVgsIF90ZXN0Y2FwaS5MT05HX01JTl06Ci0gICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShnb29kX3ZhbCwgZ29vZF92YWwsIGdvb2RfdmFsKQotICAgICAgICBmb3IgYmFkX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYICsgMSwgX3Rlc3RjYXBpLkxPTkdfTUlOIC0gMV06Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIGJhZF92YWwsIDEsIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIGJhZF92YWwsIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIGJhZF92YWwpCisgICAgICAgICAgICAjIHJhbmdlaXRlcl9uZXcgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMSwgMSkKIAotICAgICAgICAjIHN0ZXAgbXVzdG4ndCBiZSB6ZXJvCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxLCAwKQorICAgICAgICAgICAgIyBzdGFydCwgc3RvcCBhbmQgc3RvcCBtdXN0IGZpdCBpbiBDIGxvbmcKKyAgICAgICAgICAgIGZvciBnb29kX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYLCBfdGVzdGNhcGkuTE9OR19NSU5dOgorICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlKGdvb2RfdmFsLCBnb29kX3ZhbCwgZ29vZF92YWwpCisgICAgICAgICAgICBmb3IgYmFkX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYICsgMSwgX3Rlc3RjYXBpLkxPTkdfTUlOIC0gMV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgYmFkX3ZhbCwgMSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCBiYWRfdmFsLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIGJhZF92YWwpCisKKyAgICAgICAgICAgICMgc3RlcCBtdXN0bid0IGJlIHplcm8KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxLCAwKQogCiAgICAgZGVmIHRlc3Rfc2xpY2Uoc2VsZik6CiAgICAgICAgIGRlZiBjaGVjayhzdGFydCwgc3RvcCwgc3RlcD1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CmluZGV4IDA4MzRmZTAuLjNiZDZkN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZS5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCByZQogZnJvbSByZSBpbXBvcnQgU2Nhbm5lcgogaW1wb3J0IHNyZV9jb21waWxlCi1pbXBvcnQgc3JlX2NvbnN0YW50cwogaW1wb3J0IHN5cwogaW1wb3J0IHN0cmluZwogaW1wb3J0IHRyYWNlYmFjawpAQCAtMTE1LDEwICsxMTQsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIHJlLmVzY2FwZShzKSwgJ3gnKSwgcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIGxhbWJkYSBtOiBzLCAneCcpLCBzKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsICdcZzxhPlxnPGE+JywgJ3h4JyksICd4eHh4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgJ1xnPGE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzx1bms+XGc8dW5rPicsICd4eCcpLCAneHh4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPDE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGE+XGc8YT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsIHInXGc8dW5rPlxnPHVuaz4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsIHInXGc8MT5cZzwxPicsICd4eCcpLCAneHh4eCcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCByJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQpAQCAtMTI2LDE0ICsxMjUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpK2Nocig4KSkpCiAgICAgICAgIGZvciBjIGluICdjZGVoaWprbG1vcHFzdXd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXFwnICsgYywgJ2EnKSwgJ1xcJyArIGMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ15ccyonLCAnWCcsICd0ZXN0JyksICdYdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInXlxzKicsICdYJywgJ3Rlc3QnKSwgJ1h0ZXN0JykKIAogICAgIGRlZiB0ZXN0X2J1Z180NDk5NjQoc2VsZik6CiAgICAgICAgICMgZmFpbHMgZm9yIGdyb3VwIGZvbGxvd2VkIGJ5IG90aGVyIGVzY2FwZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyg/UDx1bms+eCknLCAnXGc8MT5cZzwxPlxcYicsICd4eCcpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyg/UDx1bms+eCknLCByJ1xnPDE+XGc8MT5cYicsICd4eCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4eFxieHhcYicpCiAKICAgICBkZWYgdGVzdF9idWdfNDQ5MDAwKHNlbGYpOgpAQCAtMTg2LDE4ICsxODUsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDc3NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMCkKIAotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDE4JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDFhJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDkwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDk5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1wxMScgKyAnOCcKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKSAjIHInXDE4JyArICcxJwotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgwMCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlJykgIyByJ1w4MCcgKyAnMCcKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDgnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDknLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA5JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDExJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDE4JywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxYScsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDEnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDkwJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOTAnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDk5JywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOTknLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDExOCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDExJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1wxMWEnLCAneCcsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAxMScsIDEpCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCd4JywgcidcMTgxJywgJ3gnLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMTgnLCAxKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcigneCcsIHInXDgwMCcsICd4JywgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDgwJywgMSkKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJ3gnLCByJ1w4JywgJycsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSA4JywgMSkKIAogICAgICAgICAjIGluIHB5dGhvbjIuMyAoZXRjKSwgdGhlc2UgbG9vcCBlbmRsZXNzbHkgaW4gc3JlX3BhcnNlci5weQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKCgoKCgoKCgoKCh4KSkpKSkpKSkpKSknLCByJ1wxMScsICd4JyksICd4JykKQEAgLTIyMSwyNiArMjIxLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCd4KycsICctJywgJ2FieGQnKSwgJ2FiLWQnKQogCiAgICAgZGVmIHRlc3Rfc3ltYm9saWNfZ3JvdXBzKHNlbGYpOgotICAgICAgICByZS5jb21waWxlKCcoP1A8YT54KSg/UD1hKSg/KGEpeSknKQotICAgICAgICByZS5jb21waWxlKCcoP1A8YTE+eCkoP1A9YTEpKD8oYTEpeSknKQotICAgICAgICByZS5jb21waWxlKCcoP1A8YTE+eClcMSg/KDEpeSknKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4pKD9QPGE+KScsCisgICAgICAgIHJlLmNvbXBpbGUocicoP1A8YT54KSg/UD1hKSg/KGEpeSknKQorICAgICAgICByZS5jb21waWxlKHInKD9QPGExPngpKD9QPWExKSg/KGExKXkpJykKKyAgICAgICAgcmUuY29tcGlsZShyJyg/UDxhMT54KVwxKD8oMSl5KScpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD9QPGE+KScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZGVmaW5pdGlvbiBvZiBncm91cCBuYW1lICdhJyBhcyBncm91cCAyOyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcyBncm91cCAxIikKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KD9QPWEpKScsCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4oP1A9YSkpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IHJlZmVyIHRvIGFuIG9wZW4gZ3JvdXAiLCAxMCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QeHkpJywgJ3Vua25vd24gZXh0ZW5zaW9uID9QeCcpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPikoP1A9YScsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBuYW1lJywgMTEpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD0nLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPSknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPTEpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YSknLCAidW5rbm93biBncm91cCBuYW1lICdhJyIpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hMSknLCAidW5rbm93biBncm91cCBuYW1lICdhMSciKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9YS4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPCknLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDw+KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QeHkpJywgJ3Vua25vd24gZXh0ZW5zaW9uID9QeCcpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD9QPWEnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgbmFtZScsIDExKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPSknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD0xKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJzEnIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD1hKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2EnIikKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UD1hMSknLCAidW5rbm93biBncm91cCBuYW1lICdhMSciKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPWEuKScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8KScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPCcsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPD4pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8MT4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGEuPiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8oJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCkBAIC0yNTksMzUgKzI1OSwzNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHBhdCwgJ3hjOHl6Jykuc3BhbigpLCAoMCwgNSkpCiAKICAgICBkZWYgdGVzdF9zeW1ib2xpY19yZWZzKHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8YScsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8YScsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPCcsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZycsICd4eCcsICdtaXNzaW5nIDwnLCAyKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8YSBhPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGcnLCAneHgnLCAnbWlzc2luZyA8JywgMikKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzxhIGE+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYSBhJyIsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzw+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzw+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwxYTE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwxYTE+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMWExJyIsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8Mj4nLCAneHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMicsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXDInLCAneHgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgMicsIDEpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAidW5rbm93biBncm91cCBuYW1lICdhYiciKToKLSAgICAgICAgICAgIHJlLnN1YignKD9QPGE+eCknLCAnXGc8YWI+JywgJ3h4JykKKyAgICAgICAgICAgIHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGFiPicsICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXGc8Yj4nLCAneHgnKSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KXwoP1A8Yj55KScsIHInXDInLCAneHgnKSwgJycpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzwtMT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPC0xPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJy0xJyIsIDMpCiAgICAgICAgICMgTmV3IHZhbGlkL2ludmFsaWQgaWRlbnRpZmllcnMgaW4gUHl0aG9uIDMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDzCtT54KScsIHInXGc8wrU+JywgJ3h4JyksICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj54KScsIHInXGc88J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2Uoj4nLCAneHgnKSwgJ3h4JykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPMKpPicsICd4eCcsCisgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXGc8wqk+JywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnwqknIiwgMykKICAgICAgICAgIyBTdXBwb3J0ID4gMTAwIGdyb3Vwcy4KICAgICAgICAgcGF0ID0gJ3wnLmpvaW4oJ3goP1A8YSVkPiV4KXknICUgKGksIGkpIGZvciBpIGluIHJhbmdlKDEsIDIwMCArIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihwYXQsICdcZzwyMDA+JywgJ3hjOHl6eGM4eScpLCAnYzh6YzgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihwYXQsIHInXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKIAogICAgIGRlZiB0ZXN0X3JlX3N1Ym4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3VibigiKD9pKWIrIiwgIngiLCAiYmJiYiBCQkJCIiksICgneCB4JywgMikpCkBAIC00MTksMTkgKzQxOSw3NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYmMnKS5ncm91cHMoKSwgKCdiJywgTm9uZSwgJ2InLCAnYycpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYmMnKS5ncm91cHMoIiIpLCAoJ2InLCAiIiwgJ2InLCAnYycpKQogCi0gICAgICAgICMgQSBzaW5nbGUgZ3JvdXAKLSAgICAgICAgbSA9IHJlLm1hdGNoKCcoYSknLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgwKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDEpLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxLCAxKSwgKCdhJywgJ2EnKSkKLQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoPzooP1A8YTE+YSl8KD9QPGIyPmIpKSg/UDxjMz5jKT8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5tYXRjaCgnYScpLmdyb3VwKDEsIDIsIDMpLCAoJ2EnLCBOb25lLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2InKS5ncm91cCgnYTEnLCAnYjInLCAnYzMnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2InLCBOb25lKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2FjJykuZ3JvdXAoMSwgJ2IyJywgMyksICgnYScsIE5vbmUsICdjJykpCiAKKyAgICBkZWYgdGVzdF9ncm91cChzZWxmKToKKyAgICAgICAgY2xhc3MgSW5kZXg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgZGVmIF9faW5kZXhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZQorICAgICAgICAjIEEgc2luZ2xlIGdyb3VwCisgICAgICAgIG0gPSByZS5tYXRjaCgnKGEpKGIpJywgJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKCksICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgwKSwgJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDEpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cChJbmRleCgxKSksICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIDE8PDEwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIEluZGV4KDE8PDEwMDApKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAneCcpCisgICAgICAgICMgTXVsdGlwbGUgZ3JvdXBzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgyLCAxKSwgKCdiJywgJ2EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKEluZGV4KDIpLCBJbmRleCgxKSksICgnYicsICdhJykpCisKKyAgICBkZWYgdGVzdF9tYXRjaF9nZXRpdGVtKHNlbGYpOgorICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoPzooP1A8YTE+YSl8KD9QPGIyPmIpKSg/UDxjMz5jKT8nKQorCisgICAgICAgIG0gPSBwYXQubWF0Y2goJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2ExJ10sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydiMiddLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2MzJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ExPXthMX0gYjI9e2IyfSBjMz17YzN9Jy5mb3JtYXRfbWFwKG0pLCAnYTE9YSBiMj1Ob25lIGMzPU5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsyXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzNdLCBOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bJ1gnXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bLTFdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVs0XQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bMCwgMV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWygwLCldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVsoMCwgMSldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChLZXlFcnJvciwgJ2EyJyk6CisgICAgICAgICAgICAnYTE9e2EyfScuZm9ybWF0X21hcChtKQorCisgICAgICAgIG0gPSBwYXQubWF0Y2goJ2FjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydhMSddLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYjInXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydjMyddLCAnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ExPXthMX0gYjI9e2IyfSBjMz17YzN9Jy5mb3JtYXRfbWFwKG0pLCAnYTE9YSBiMj1Ob25lIGMzPWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sICdhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVszXSwgJ2MnKQorCisgICAgICAgICMgQ2Fubm90IGFzc2lnbi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgbVswXSA9IDEKKworICAgICAgICAjIE5vIGxlbigpLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxlbiwgbSkKKwogICAgIGRlZiB0ZXN0X3JlX2Z1bGxtYXRjaChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAxNjIwMzogUHJvcG9zYWw6IGFkZCByZS5mdWxsbWF0Y2goKSBtZXRob2QuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZnVsbG1hdGNoKHIiYSIsICJhIikuc3BhbigpLCAoMCwgMSkpCkBAIC00NjMsMTkgKzUyMSwxOSBAQAogICAgICAgICAgICAgcmUuY29tcGlsZShyIi4qPyIpLmZ1bGxtYXRjaCgiYWJjZCIsIHBvcz0xLCBlbmRwb3M9Mykuc3BhbigpLCAoMSwgMykpCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZl9leGlzdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhKScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEpJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCcoJywgJ2EnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYScpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnYScpKQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYSknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnYSknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocideKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpYnxkKSkkJywgJ2FiJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgJ2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdjZCcpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnYScpLmdyb3VwcygpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2EnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAnJykpCiAKICAgICAgICAgIyBUZXN0cyBmb3IgYnVnICMxMTc3ODMxOiBleGVyY2lzZSBncm91cHMgb3RoZXIgdGhhbiB0aGUgZmlyc3QgZ3JvdXAKQEAgLTUwMCwxMCArNTU4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R3byBicmFuY2hlcycsIDEwKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWZfb3ZlcmZsb3coc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoKScsICdcZzwlcz4nICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsICd4eCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD8oJWQpKScgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAxMCkKKyAgICAgICAgZnJvbSBzcmVfY29uc3RhbnRzIGltcG9ydCBNQVhHUk9VUFMKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJygpJywgcidcZzwlcz4nICUgTUFYR1JPVVBTLCAneHgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgJWQnICUgTUFYR1JPVVBTLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGE+KSg/KCVkKSknICUgTUFYR1JPVVBTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZSAlZCcgJSBNQVhHUk9VUFMsIDEwKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWYoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKFx8KT8oW14oKV0rKVwxJCcsICd8YXwnKS5ncm91cHMoKSwKQEAgLTUzNSwzNyArNTk0LDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiKQogCiAgICAgZGVmIHRlc3RfcmVwZWF0X21pbm1heChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9PyQiLCAiYWJjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxLDJ9JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezEsMn0/JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxfSQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MX0/JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxLDJ9JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxLDJ9PyQiLCAiYWJjIikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7M30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsM30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsNH0kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsM30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsM30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDR9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezF9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezF9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxLDJ9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezEsMn0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MX0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxLDJ9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxLDJ9PyQiLCAieHh4IikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MywzfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSw0fSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7Myw0fT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsNH0/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDR9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSwzfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezMsM30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDR9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7Myw0fT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDN9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsNH0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7Myw0fT8kIiwgInh4eCIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHt9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHt9JCIsICJ4e30iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHt9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7fSQiLCAieHt9IikpCiAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ3h7MiwxfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbiByZXBlYXQgZ3JlYXRlciB0aGFuIG1heCByZXBlYXQnLCAyKQpAQCAtNjM4LDE0ICs2OTcsMTAgQEAKICAgICAgICAgcmUucHVyZ2UoKSAgIyBmb3Igd2FybmluZ3MKICAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6Q0VGR0hJSktMTU5PUFFSVFZYWSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1xcJWMnICUgYywgYykuZ3JvdXAoKSwgYykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ1xcJWMnICUgYywgJ2EnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJ1xcJWMnICUgYykKICAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6QUJDRUZHSElKS0xNTk9QUVJUVlhZWic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1tcXCVjXScgJSBjLCBjKS5ncm91cCgpLCBjKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnW1xcJWNdJyAlIGMsICdhJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICdbXFwlY10nICUgYykKIAogICAgIGRlZiB0ZXN0X3N0cmluZ19ib3VuZGFyaWVzKHNlbGYpOgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA3MTMKQEAgLTY5MiwxMCArNzQ3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImFcblxuYiIpCiAKICAgICBkZWYgdGVzdF9sb29rYWhlYWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbXmFdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1teYV0qKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1thYmNdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1thYmNdKikpIiwgImEgYmMiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1teYV0pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1teYV0qKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbYWJjXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW2FiY10qKSkiLCAiYSBiYyIpLmdyb3VwKDEpLCAiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSkoPz1cc1wxKSIsICJhIGEiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHNcMSopIiwgImEgYWEiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHMoYWJjfGEpKSIsICJhIGEiKS5ncm91cCgxKSwgImEiKQpAQCAtODQzLDEyICs4OTgsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChiImFiYyIsIGIiQUJDIiwgcmUuSXxyZS5MKS5ncm91cCgwKSwgYiJBQkMiKQogCiAgICAgZGVmIHRlc3Rfbm90X2xpdGVyYWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKikiLCAiIGJiIikuZ3JvdXAoMSksICJiYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXHMoW15hXSkiLCAiIGIiKS5ncm91cCgxKSwgImIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKFteYV0qKSIsICIgYmIiKS5ncm91cCgxKSwgImJiIikKIAogICAgIGRlZiB0ZXN0X3NlYXJjaF9jb3ZlcmFnZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKGIpIiwgIiBiIikuZ3JvdXAoMSksICJiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goImFccyIsICJhICIpLmdyb3VwKDApLCAiYSAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKGIpIiwgIiBiIikuZ3JvdXAoMSksICJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJhXHMiLCAiYSAiKS5ncm91cCgwKSwgImEgIikKIAogICAgIGRlZiBhc3NlcnRNYXRjaChzZWxmLCBwYXR0ZXJuLCB0ZXh0LCBtYXRjaD1Ob25lLCBzcGFuPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXI9cmUubWF0Y2gpOgpAQCAtOTUzLDcgKzEwMDgsNyBAQAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXDU2NyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHIiXDkxMSIsICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDApCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcOTExIiwgJ2ludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIDkxJywgMSkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx4MSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyIlx4MXoiLCByJ2luY29tcGxldGUgZXNjYXBlIFx4MScsIDApCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IociJcdTEyMyIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHUxMjMnLCAwKQpAQCAtOTk4LDEwICsxMDUzLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeDAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4eiIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiInoiKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXHUxMjM0IiwgYid1MTIzNCcpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcVTAwMDEyMzQ1IiwgYidVMDAwMTIzNDUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIlx1MTIzNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJcVTAwMDEyMzQ1IikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwIiwgYiJcMDAwIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDgiLCBiIlwwMDA4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDEiLCBiIlwwMDEiKSkKQEAgLTEwMDksNyArMTA2Miw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiXDU2NyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidvY3RhbCBlc2NhcGUgdmFsdWUgXDU2NyBvdXRzaWRlIG9mICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ3JhbmdlIDAtMG8zNzcnLCAwKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlw5MTEiLCAnaW52YWxpZCBncm91cCByZWZlcmVuY2UgOTEnLCAxKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKGJyIlx4MSIsIHInaW5jb21wbGV0ZSBlc2NhcGUgXHgxJywgMCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJceDF6IiwgcidpbmNvbXBsZXRlIGVzY2FwZSBceDEnLCAwKQogCkBAIC0xMDIzLDEwICsxMDc2LDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiW1x4JTAyeDBdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4el0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXHUxMjM0XSIsIGIndScpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJbXFUwMDAxMjM0NV0iLCBiJ1UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIltcdTEyMzRdIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIltcVTAwMDEyMzQ1XSIpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoYnIiW1w1NjddIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ29jdGFsIGVzY2FwZSB2YWx1ZSBcNTY3IG91dHNpZGUgb2YgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIncmFuZ2UgMC0wbzM3NycsIDEpCkBAIC0xMDU0LDggKzExMDUsOCBAQAogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyhhKT9hJywnYScpLmxhc3RpbmRleCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyhhKShiKT9iJywnYWInKS5sYXN0aW5kZXgsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocicoP1A8YT5hKSg/UDxiPmIpP2InLCdhYicpLmxhc3Rncm91cCwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoP1A8YT5hKGIpKSIsICJhYiIpLmxhc3Rncm91cCwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCIoKGEpKSIsICJhIikubGFzdGluZGV4LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKD9QPGE+YShiKSkiLCAiYWIiKS5sYXN0Z3JvdXAsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIigoYSkpIiwgImEiKS5sYXN0aW5kZXgsIDEpCiAKICAgICBkZWYgdGVzdF9idWdfNDE4NjI2KHNlbGYpOgogICAgICAgICAjIGJ1Z3MgNDE4NjI2IGF0IGFsLiAtLSBUZXN0aW5nIEdyZWcgQ2hhcG1hbidzIGFkZGl0aW9uIG9mIG9wIGNvZGUKQEAgLTEyMjcsNyArMTI3OCw3IEBACiAgICAgICAgICAgICAnXHVmZjEwJywgIyAnXE57RlVMTFdJRFRIIERJR0lUIFpFUk99JywgY2F0ZWdvcnkgJ05kJwogICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBkZWNpbWFsX2RpZ2l0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ15cZCQnLCB4KS5ncm91cCgwKSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideXGQkJywgeCkuZ3JvdXAoMCksIHgpCiAKICAgICAgICAgbm90X2RlY2ltYWxfZGlnaXRzID0gWwogICAgICAgICAgICAgJ1x1MjE2NScsICMgJ1xOe1JPTUFOIE5VTUVSQUwgU0lYfScsIGNhdGVnb3J5ICdObCcKQEAgLTEyMzYsNyArMTI4Nyw3IEBACiAgICAgICAgICAgICAnXHUzMmI0JywgIyAnXE57Q0lSQ0xFRCBOVU1CRVIgVEhJUlRZIE5JTkV9JywgY2F0ZWdvcnkgJ05vJwogICAgICAgICAgICAgXQogICAgICAgICBmb3IgeCBpbiBub3RfZGVjaW1hbF9kaWdpdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXlxkJCcsIHgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocideXGQkJywgeCkpCiAKICAgICBkZWYgdGVzdF9lbXB0eV9hcnJheShzZWxmKToKICAgICAgICAgIyBTRiBidWYgMTY0NzU0MQpAQCAtMTI3OCw2ICsxMzI5LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnKD9peHUpICcgKyB1cHBlcl9jaGFyLCBsb3dlcl9jaGFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcoP2l4dSkgJyArIGxvd2VyX2NoYXIsIHVwcGVyX2NoYXIpKQogCisgICAgICAgIHAgPSB1cHBlcl9jaGFyICsgJyg/aSknCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIHdhcm5zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHAsIGxvd2VyX2NoYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKHdhcm5zLndhcm5pbmdzWzBdLm1lc3NhZ2UpLAorICAgICAgICAgICAgJ0ZsYWdzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gJXMnICUgcAorICAgICAgICApCisKKyAgICAgICAgcCA9IHVwcGVyX2NoYXIgKyAnKD9pKSVzJyAlICgnLj8nICogMTAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyB3YXJuczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChwLCBsb3dlcl9jaGFyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHN0cih3YXJucy53YXJuaW5nc1swXS5tZXNzYWdlKSwKKyAgICAgICAgICAgICdGbGFncyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleHByZXNzaW9uICVzICh0cnVuY2F0ZWQpJyAlIHBbOjIwXQorICAgICAgICApCisKICAgICBkZWYgdGVzdF9kb2xsYXJfbWF0Y2hlc190d2ljZShzZWxmKToKICAgICAgICAgIiQgbWF0Y2hlcyB0aGUgZW5kIG9mIHN0cmluZywgYW5kIGp1c3QgYmVmb3JlIHRoZSB0ZXJtaW5hdGluZyBcbiIKICAgICAgICAgcGF0dGVybiA9IHJlLmNvbXBpbGUoJyQnKQpAQCAtMTMwOCwyOSArMTM3NSwyOSBAQAogICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIHJlLlVOSUNPREUpOgogICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHhjMCcsIGZsYWdzIHwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goJ1x4ZTAnKSkKLSAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x3JywgZmxhZ3MpCisgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKHInXHcnLCBmbGFncykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goJ1x4ZTAnKSkKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHhjMCcsIHJlLkFTQ0lJIHwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJyg/YSlceGMwJywgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ1x3JywgcmUuQVNDSUkpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocidcdycsIHJlLkFTQ0lJKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD9hKVx3JykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJyg/YSlcdycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQogICAgICAgICAjIEJ5dGVzIHBhdHRlcm5zCiAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgcmUuQVNDSUkpOgogICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x4YzAnLCBmbGFncyB8IHJlLklHTk9SRUNBU0UpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYidceGUwJykpCi0gICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnLCBmbGFncykKKyAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInXHcnLCBmbGFncykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChiJ1x4ZTAnKSkKICAgICAgICAgIyBJbmNvbXBhdGliaWxpdGllcwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJ1x3JywgcmUuVU5JQ09ERSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP3UpXHcnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnXHcnLCByZS5VTklDT0RFIHwgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP3UpXHcnLCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/YSlcdycsIHJlLlVOSUNPREUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP2F1KVx3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYnInXHcnLCByZS5VTklDT0RFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBicicoP3UpXHcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJ1x3JywgcmUuVU5JQ09ERSB8IHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJyg/dSlcdycsIHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCByJyg/YSlcdycsIHJlLlVOSUNPREUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInKD9hdSlcdycpCiAKICAgICBkZWYgdGVzdF9sb2NhbGVfZmxhZyhzZWxmKToKICAgICAgICAgaW1wb3J0IGxvY2FsZQpAQCAtMTM2MSwyNyArMTQyOCw1OSBAQAogICAgICAgICBwYXQgPSByZS5jb21waWxlKGJwYXQsIHJlLklHTk9SRUNBU0UpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goYmxldHRlcikpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycsIHJlLkxPQ0FMRSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidcdycsIHJlLkxPQ0FMRSkKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYicoP0wpXHcnKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJyg/TClcdycpCiAgICAgICAgIGlmIGJsZXR0ZXI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGF0Lm1hdGNoKGJsZXR0ZXIpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHcnKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ1x3JykKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChibGV0dGVyKSkKICAgICAgICAgIyBJbmNvbXBhdGliaWxpdGllcwotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgJycsIHJlLkxPQ0FMRSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsICcoP0wpJykKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInJywgcmUuTE9DQUxFIHwgcmUuQVNDSUkpCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCBiJyg/TCknLCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9hKScsIHJlLkxPQ0FMRSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9hTCknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnJywgcmUuTE9DQUxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9MKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInJywgcmUuTE9DQUxFIHwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD9MKScsIHJlLkFTQ0lJKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/YSknLCByZS5MT0NBTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD9hTCknKQorCisgICAgZGVmIHRlc3Rfc2NvcGVkX2ZsYWdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoP2k6YSliJywgJ0FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD9pOmEpYicsICdhQicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/LWk6YSliJywgJ0FiJywgcmUuSUdOT1JFQ0FTRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/LWk6YSliJywgJ2FCJywgcmUuSUdOT1JFQ0FTRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD9pOig/LWk6YSliKScsICdBYicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoP2k6KD8taTphKWIpJywgJ2FCJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD94OiBhKSBiJywgJ2EgYicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJyg/eDogYSkgYicsICcgYSBiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/LXg6IGEpIGInLCAnIGFiJywgcmUuVkVSQk9TRSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD8teDogYSkgYicsICdhYicsIHJlLlZFUkJPU0UpKQorCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2E6XHcpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb24gZ2xvYmFsIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9hKSg/LWE6XHcpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFkIGlubGluZSBmbGFnczogY2Fubm90IHR1cm4gb2ZmIGdsb2JhbCBmbGFnJywgOCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aS1pOmEpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFkIGlubGluZSBmbGFnczogZmxhZyB0dXJuZWQgb24gYW5kIG9mZicsIDUpCisKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LScsICdtaXNzaW5nIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8tKycsICdtaXNzaW5nIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8teicsICd1bmtub3duIGZsYWcnLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taScsICdtaXNzaW5nIDonLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taSknLCAnbWlzc2luZyA6JywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWkrJywgJ21pc3NpbmcgOicsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1peicsICd1bmtub3duIGZsYWcnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pOicsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBzdWJwYXR0ZXJuJywgMCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aScsICdtaXNzaW5nIC0sIDogb3IgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2krJywgJ21pc3NpbmcgLSwgOiBvciApJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aXonLCAndW5rbm93biBmbGFnJywgMykKIAogICAgIGRlZiB0ZXN0X2J1Z182NTA5KHNlbGYpOgogICAgICAgICAjIFJlcGxhY2VtZW50IHN0cmluZ3Mgb2YgYm90aCB0eXBlcyBtdXN0IHBhcnNlIHByb3Blcmx5LgogICAgICAgICAjIGFsbCBzdHJpbmdzCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ2EoXHcpJykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ2EoXHcpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKCdiXFwxJywgJ2FjJyksICdiYycpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoJ2EoLiknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoJ2JcXDEnLCAnYVx1MTIzNCcpLCAnYlx1MTIzNCcpCkBAIC0xMzg5LDcgKzE0ODgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIobGFtYmRhIG06ICdzdHInLCAnYTUnKSwgJ3N0cicpCiAKICAgICAgICAgIyBhbGwgYnl0ZXMKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ2EoXHcpJykKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidhKFx3KScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YihiJ2JcXDEnLCBiJ2FjJyksIGInYmMnKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKGInYSguKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YihiJ2JcXDEnLCBiJ2FceENEJyksIGInYlx4Q0QnKQpAQCAtMTQyNywxMyArMTUyNiw2IEBACiAgICAgICAgICMgVGVzdCBiZWhhdmlvdXIgd2hlbiBub3QgZ2l2ZW4gYSBzdHJpbmcgb3IgcGF0dGVybiBhcyBwYXJhbWV0ZXIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZS5jb21waWxlLCAwKQogCi0gICAgZGVmIHRlc3RfYnVnXzEzODk5KHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMzg5OTogcmUgcGF0dGVybiByIltcQV0iIHNob3VsZCB3b3JrIGxpa2UgIkEiIGJ1dCBtYXRjaGVzCi0gICAgICAgICMgbm90aGluZy4gRGl0dG8gQiBhbmQgWi4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZpbmRhbGwocidbXEFcQlxiXENcWl0nLCAnQUJcYkNaJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQScsICdCJywgJ1xiJywgJ0MnLCAnWiddKQotCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0xKQogICAgIGRlZiB0ZXN0X2xhcmdlX3NlYXJjaChzZWxmLCBzaXplKToKICAgICAgICAgIyBJc3N1ZSAjMTAxODI6IGluZGljZXMgd2VyZSAzMi1iaXQtdHJ1bmNhdGVkLgpAQCAtMTUxOCw3ICsxNjEwLDcgQEAKICAgICAgICAgZm9yIHN0cmluZyBpbiAoYidbYWJyYWNhZGFicmFdJywgQihiJ1thYnJhY2FkYWJyYV0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInW2FicmFjYWRhYnJhXScpLAogICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnl2aWV3KGInW2FicmFjYWRhYnJhXScpKToKLSAgICAgICAgICAgIG0gPSByZS5zZWFyY2gocmInKC4rKSguKj8pXDEnLCBzdHJpbmcpCisgICAgICAgICAgICBtID0gcmUuc2VhcmNoKGJyJyguKykoLio/KVwxJywgc3RyaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPCVzLiVzIG9iamVjdDsgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Bhbj0oMSwgMTIpLCBtYXRjaD1iJ2FicmFjYWRhYnJhJz4iICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUobSkuX19tb2R1bGVfXywgdHlwZShtKS5fX3F1YWxuYW1lX18pKQpAQCAtMTU0Nyw5ICsxNjM5LDkgQEAKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXQ6CiAgICAgICAgICAgICByZS5jb21waWxlKHBhdCwgcmUuREVCVUcpCiAgICAgICAgIGR1bXAgPSAnJydcCi1TVUJQQVRURVJOIDEKK1NVQlBBVFRFUk4gMSAwIDAKICAgTElURVJBTCA0NgotU1VCUEFUVEVSTiBOb25lCitTVUJQQVRURVJOIE5vbmUgMCAwCiAgIEJSQU5DSAogICAgIElOCiAgICAgICBMSVRFUkFMIDk5CkBAIC0xNTU3LDcgKzE2NDksNyBAQAogICBPUgogICAgIExJVEVSQUwgMTEyCiAgICAgTElURVJBTCAxMjEKLVNVQlBBVFRFUk4gTm9uZQorU1VCUEFUVEVSTiBOb25lIDAgMAogICBHUk9VUFJFRl9FWElTVFMgMQogICAgIEFUIEFUX0VORAogICBFTFNFCkBAIC0xNjczLDcgKzE3NjUsNyBAQAogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QJywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD96KScsICd1bmtub3duIGV4dGVuc2lvbiA/eicsIDEpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2l6KScsICd1bmtub3duIGZsYWcnLCAzKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgKScsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8jYWJjJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIGNvbW1lbnQnLCAwKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88JywgJ3VuZXhwZWN0ZWQgZW5kIG9mIHBhdHRlcm4nLCAzKQogICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD88PiknLCAndW5rbm93biBleHRlbnNpb24gPzw+JywgMSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CmluZGV4IDJjNzNkZjIuLjA2YTkxNDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQpAQCAtMTIxLDYgKzEyMSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFUk09J3h0ZXJtLTI1NmNvbG9yJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIGInJykKIAorICAgIGF1dG9faGlzdG9yeV9zY3JpcHQgPSAiIiJcCitpbXBvcnQgcmVhZGxpbmUKK3JlYWRsaW5lLnNldF9hdXRvX2hpc3Rvcnkoe30pCitpbnB1dCgpCitwcmludCgiSGlzdG9yeSBsZW5ndGg6IiwgcmVhZGxpbmUuZ2V0X2N1cnJlbnRfaGlzdG9yeV9sZW5ndGgoKSkKKyIiIgorCisgICAgZGVmIHRlc3RfYXV0b19oaXN0b3J5X2VuYWJsZWQoc2VsZik6CisgICAgICAgIG91dHB1dCA9IHJ1bl9wdHkoc2VsZi5hdXRvX2hpc3Rvcnlfc2NyaXB0LmZvcm1hdChUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiIkhpc3RvcnkgbGVuZ3RoOiAxXHJcbiIsIG91dHB1dCkKKworICAgIGRlZiB0ZXN0X2F1dG9faGlzdG9yeV9kaXNhYmxlZChzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gcnVuX3B0eShzZWxmLmF1dG9faGlzdG9yeV9zY3JpcHQuZm9ybWF0KEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiIkhpc3RvcnkgbGVuZ3RoOiAwXHJcbiIsIG91dHB1dCkKKwogICAgIGRlZiB0ZXN0X25vbmFzY2lpKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZWFkbGluZS5hZGRfaGlzdG9yeSgiXHhFQlx4RUYiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKaW5kZXggYWUxODMyNy4uNTI5MDlkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5CkBAIC0xLDIxICsxLDQ4IEBACiAiIiIKIFRlc3RzIG9mIHJlZ3J0ZXN0LnB5LgorCitOb3RlOiB0ZXN0X3JlZ3J0ZXN0IGNhbm5vdCBiZSBydW4gdHdpY2UgaW4gcGFyYWxsZWwuCiAiIiIKIAotaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGZhdWx0aGFuZGxlcgotaW1wb3J0IGdldG9wdAoraW1wb3J0IGlvCiBpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0LCBzdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IGxpYnJlZ3J0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitQeV9ERUJVRyA9IGhhc2F0dHIoc3lzLCAnZ2V0b2JqZWN0cycpCitST09UX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nKQorUk9PVF9ESVIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5ub3JtcGF0aChST09UX0RJUikpCisKK1RFU1RfSU5URVJSVVBURUQgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgZnJvbSBzaWduYWwgaW1wb3J0IFNJR0lOVAorICAgIHRyeToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHJhaXNlX3NpZ25hbAorICAgICAgICByYWlzZV9zaWduYWwoU0lHSU5UKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgaW1wb3J0IG9zCisgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIFNJR0lOVCkKKyAgICAiIiIpCisKIAogY2xhc3MgUGFyc2VBcmdzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdCByZWdydGVzdCdzIGFyZ3VtZW50IHBhcnNpbmcuIiIiCisgICAgIiIiCisgICAgVGVzdCByZWdydGVzdCdzIGFyZ3VtZW50IHBhcnNpbmcsIGZ1bmN0aW9uIF9wYXJzZV9hcmdzKCkuCisgICAgIiIiCiAKICAgICBkZWYgY2hlY2tFcnJvcihzZWxmLCBhcmdzLCBtc2cpOgogICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyLCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgIHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKGFyZ3MpCisgICAgICAgICAgICBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEluKG1zZywgZXJyLmdldHZhbHVlKCkpCiAKICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgpAQCAtMjMsODIgKzUwLDgyIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKICAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgb3V0LCBcCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KToKLSAgICAgICAgICAgICAgICAgICAgcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgICAgIGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1J1biBQeXRob24gcmVncmVzc2lvbiB0ZXN0cy4nLCBvdXQuZ2V0dmFsdWUoKSkKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgcmVxdWlyZWQiKQogICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRpbWVvdXQnLCAnNC4yJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRpbWVvdXQnLCAnNC4yJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGltZW91dCwgNC4yKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXRpbWVvdXQnXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGltZW91dCcsICdmb28nXSwgJ2ludmFsaWQgZmxvYXQgdmFsdWUnKQogCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0td2FpdCddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS13YWl0J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy53YWl0KQogCiAgICAgZGVmIHRlc3Rfc2xhdmVhcmdzKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zbGF2ZWFyZ3MnLCAnW1tdLCB7fV0nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc2xhdmVhcmdzJywgJ1tbXSwge31dJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuc2xhdmVhcmdzLCAnW1tdLCB7fV0nKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXNsYXZlYXJncyddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3N0YXJ0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctUycsICctLXN0YXJ0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2ZvbyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuc3RhcnQsICdmb28nKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF92ZXJib3NlKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXYnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy12J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMSkKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy12dnYnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy12dnYnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAzKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10gKiAzKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS12ZXJib3NlJ10gKiAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDMpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2UyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctdycsICctLXZlcmJvc2UyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudmVyYm9zZTIpCiAKICAgICBkZWYgdGVzdF92ZXJib3NlMyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVcnLCAnLS12ZXJib3NlMyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnZlcmJvc2UzKQogCiAgICAgZGVmIHRlc3RfcXVpZXQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1xJywgJy0tcXVpZXQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF9zbG93KHNlbGYpOgotICAgICAgICBmb3Igb3B0IGluICctbycsICctLXNsb3cnOgorICAgICAgICBmb3Igb3B0IGluICctbycsICctLXNsb3dlc3QnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5wcmludF9zbG93KQogCiAgICAgZGVmIHRlc3RfaGVhZGVyKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1oZWFkZXInXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0taGVhZGVyJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5oZWFkZXIpCiAKICAgICBkZWYgdGVzdF9yYW5kb21pemUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1yJywgJy0tcmFuZG9taXplJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucmFuZG9taXplKQogCiAgICAgZGVmIHRlc3RfcmFuZHNlZWQoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXJhbmRzZWVkJywgJzEyMzQ1J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXJhbmRzZWVkJywgJzEyMzQ1J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMucmFuZG9tX3NlZWQsIDEyMzQ1KQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucmFuZG9taXplKQogICAgICAgICBzZWxmLmNoZWNrRXJyb3IoWyctLXJhbmRzZWVkJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQpAQCAtMTA3LDcgKzEzNCw3IEBACiAgICAgZGVmIHRlc3RfZnJvbWZpbGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1mJywgJy0tZnJvbWZpbGUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5mcm9tZmlsZSwgJ2ZvbycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbycsICctcyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQpAQCAtMTE1LDQyICsxNDIsNDIgQEAKICAgICBkZWYgdGVzdF9leGNsdWRlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICcteCcsICctLWV4Y2x1ZGUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5leGNsdWRlKQogCiAgICAgZGVmIHRlc3Rfc2luZ2xlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctcycsICctLXNpbmdsZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnNpbmdsZSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJy1mJywgJ2ZvbyddLCAiZG9uJ3QgZ28gdG9nZXRoZXIiKQogCiAgICAgZGVmIHRlc3RfbWF0Y2goc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1tJywgJy0tbWF0Y2gnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAncGF0dGVybiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ3BhdHRlcm4nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLm1hdGNoX3Rlc3RzLCAncGF0dGVybicpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X2ZhaWxmYXN0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctRycsICctLWZhaWxmYXN0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy12J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLXYnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZmFpbGZhc3QpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLVcnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctVyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mYWlsZmFzdCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICctRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVycpCiAKICAgICBkZWYgdGVzdF91c2Uoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy11JywgJy0tdXNlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxuZXR3b3JrJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5ldHdvcmsnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9yZXNvdXJjZXMsIFsnZ3VpJywgJ25ldHdvcmsnXSkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbm9uZSxuZXR3b3JrJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5vbmUsbmV0d29yayddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgWyduZXR3b3JrJ10pCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBsaXN0KHJlZ3J0ZXN0LlJFU09VUkNFX05BTUVTKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbGlzdChsaWJyZWdydGVzdC5SRVNPVVJDRV9OQU1FUykKICAgICAgICAgICAgICAgICBleHBlY3RlZC5yZW1vdmUoJ2d1aScpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnYWxsLC1ndWknXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdhbGwsLWd1aSddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgZXhwZWN0ZWQpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJ2ZvbyddLCAnaW52YWxpZCByZXNvdXJjZScpCkBAIC0xNTgsMzEgKzE4NSwzMSBAQAogICAgIGRlZiB0ZXN0X21lbWxpbWl0KHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTScsICctLW1lbWxpbWl0JzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzRHJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNEcnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLm1lbWxpbWl0LCAnNEcnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAKICAgICBkZWYgdGVzdF90ZXN0ZGlyKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10ZXN0ZGlyJywgJ2ZvbyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS10ZXN0ZGlyJywgJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnRlc3RkaXIsIG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCAnZm9vJykpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGVzdGRpciddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3J1bmxlYWtzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTCcsICctLXJ1bmxlYWtzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucnVubGVha3MpCiAKICAgICBkZWYgdGVzdF9odW50cmxlYWtzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctUicsICctLWh1bnRybGVha3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzonXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg1LCA0LCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjonXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg2LCA0LCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzozJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOjMnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg1LCAzLCAncmVmbG9nLnR4dCcpKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6MzpsZWFrcy5sb2cnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OjM6bGVha3MubG9nJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5odW50cmxlYWtzLCAoNiwgMywgJ2xlYWtzLmxvZycpKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICc2J10sCkBAIC0xOTMsMjQgKzIyMCwyMyBAQAogICAgIGRlZiB0ZXN0X211bHRpcHJvY2VzcyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLWonLCAnLS1tdWx0aXByb2Nlc3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMiddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzInXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnVzZV9tcCwgMikKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIGludCB2YWx1ZScpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1UJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1sJ10sICJkb24ndCBnbyB0b2dldGhlciIpCi0gICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICcyJywgJy1NJywgJzRHJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAKICAgICBkZWYgdGVzdF9jb3ZlcmFnZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLVQnLCAnLS1jb3ZlcmFnZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnRyYWNlKQogCiAgICAgZGVmIHRlc3RfY292ZXJkaXIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1EJywgJy0tY292ZXJkaXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5jb3ZlcmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCAnZm9vJykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKQEAgLTIxOCwxMyArMjQ0LDEzIEBACiAgICAgZGVmIHRlc3Rfbm9jb3ZlcmRpcihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLU4nLCAnLS1ub2NvdmVyZGlyJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShucy5jb3ZlcmRpcikKIAogICAgIGRlZiB0ZXN0X3RocmVzaG9sZChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXQnLCAnLS10aHJlc2hvbGQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMTAwMCddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzEwMDAnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnRocmVzaG9sZCwgMTAwMCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIGludCB2YWx1ZScpCkBAIC0yMzIsMTMgKzI1OCwxNiBAQAogICAgIGRlZiB0ZXN0X25vd2luZG93cyhzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLW4nLCAnLS1ub3dpbmRvd3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIucmVkaXJlY3Rfc3RkZXJyKGlvLlN0cmluZ0lPKCkpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMubm93aW5kb3dzKQorICAgICAgICAgICAgICAgIGVyciA9IHN0ZGVyci5nZXR2YWx1ZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndGhlIC0tbm93aW5kb3dzICgtbikgb3B0aW9uIGlzIGRlcHJlY2F0ZWQnLCBlcnIpCiAKICAgICBkZWYgdGVzdF9mb3JldmVyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctRicsICctLWZvcmV2ZXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mb3JldmVyKQogCiAKQEAgLTI0NiwzMiArMjc1LDMyIEBACiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0teHh4J10sICd1c2FnZTonKQogCiAgICAgZGVmIHRlc3RfbG9uZ19vcHRpb25fX3BhcnRpYWwoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWknXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDApCiAKICAgICBkZWYgdGVzdF90d29fb3B0aW9ucyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnLS1leGNsdWRlJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJy0tZXhjbHVkZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmV4Y2x1ZGUpCiAKICAgICBkZWYgdGVzdF9vcHRpb25fd2l0aF9lbXB0eV9zdHJpbmdfdmFsdWUoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXN0YXJ0JywgJyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zdGFydCcsICcnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zdGFydCwgJycpCiAKICAgICBkZWYgdGVzdF9hcmcoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWydmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsnZm9vJ10pCiAKICAgICBkZWYgdGVzdF9vcHRpb25fYW5kX2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnZm9vJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aWV0JywgJ2ZvbyddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5hcmdzLCBbJ2ZvbyddKQogCiAgICAgZGVmIHRlc3RfYXJnX29wdGlvbl9hcmcoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyd0ZXN0X3VuYXJ5b3AnLCAnLXYnLCAndGVzdF9iaW5vcCddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsndGVzdF91bmFyeW9wJywgJy12JywgJ3Rlc3RfYmlub3AnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsndGVzdF91bmFyeW9wJywgJ3Rlc3RfYmlub3AnXSkKIApAQCAtMjgwLDYgKzMwOSw0OTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICd1bnJlY29nbml6ZWQgYXJndW1lbnRzOiAtLXVua25vd24tb3B0aW9uJykKIAogCitjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIFRFU1RfVU5JUVVFX0lEID0gMQorICAgIFRFU1ROQU1FX1BSRUZJWCA9ICd0ZXN0X3JlZ3J0ZXN0XycKKyAgICBURVNUTkFNRV9SRUdFWCA9IHIndGVzdF9bYS16QS1aMC05X10rJworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3RkaXIgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCisKKyAgICAgICAgc2VsZi50bXB0ZXN0ZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi50bXB0ZXN0ZGlyKQorCisgICAgZGVmIGNyZWF0ZV90ZXN0KHNlbGYsIG5hbWU9Tm9uZSwgY29kZT0nJyk6CisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgbmFtZSA9ICdub29wJXMnICUgQmFzZVRlc3RDYXNlLlRFU1RfVU5JUVVFX0lECisgICAgICAgICAgICBCYXNlVGVzdENhc2UuVEVTVF9VTklRVUVfSUQgKz0gMQorCisgICAgICAgICMgdGVzdF9yZWdydGVzdCBjYW5ub3QgYmUgcnVuIHR3aWNlIGluIHBhcmFsbGVsIGJlY2F1c2UKKyAgICAgICAgIyBvZiBzZXRVcCgpIGFuZCBjcmVhdGVfdGVzdCgpCisgICAgICAgIG5hbWUgPSBzZWxmLlRFU1ROQU1FX1BSRUZJWCArIG5hbWUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRtcHRlc3RkaXIsIG5hbWUgKyAnLnB5JykKKworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisgICAgICAgICMgVXNlICd4JyBtb2RlIHRvIGVuc3VyZSB0aGF0IHdlIGRvIG5vdCBvdmVycmlkZSBleGlzdGluZyB0ZXN0cworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3gnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBmcC53cml0ZShjb2RlKQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIG5vdCBzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCk6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiY2Fubm90IHdyaXRlICVzOiAlcyIgJSAocGF0aCwgZXhjKSkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiBuYW1lCisKKyAgICBkZWYgcmVnZXhfc2VhcmNoKHNlbGYsIHJlZ2V4LCBvdXRwdXQpOgorICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChyZWdleCwgb3V0cHV0LCByZS5NVUxUSUxJTkUpCisgICAgICAgIGlmIG5vdCBtYXRjaDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiJXIgbm90IGZvdW5kIGluICVyIiAlIChyZWdleCwgb3V0cHV0KSkKKyAgICAgICAgcmV0dXJuIG1hdGNoCisKKyAgICBkZWYgY2hlY2tfbGluZShzZWxmLCBvdXRwdXQsIHJlZ2V4KToKKyAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHInXicgKyByZWdleCwgcmUuTVVMVElMSU5FKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgcGFyc2VfZXhlY3V0ZWRfdGVzdHMoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgcmVnZXggPSAocideWzAtOV0rOlswLTldKzpbMC05XSsgXFsgKlswLTldKyg/Oi8gKlswLTldKyk/XF0gKCVzKScKKyAgICAgICAgICAgICAgICAgJSBzZWxmLlRFU1ROQU1FX1JFR0VYKQorICAgICAgICBwYXJzZXIgPSByZS5maW5kaXRlcihyZWdleCwgb3V0cHV0LCByZS5NVUxUSUxJTkUpCisgICAgICAgIHJldHVybiBsaXN0KG1hdGNoLmdyb3VwKDEpIGZvciBtYXRjaCBpbiBwYXJzZXIpCisKKyAgICBkZWYgY2hlY2tfZXhlY3V0ZWRfdGVzdHMoc2VsZiwgb3V0cHV0LCB0ZXN0cywgc2tpcHBlZD0oKSwgZmFpbGVkPSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbWl0dGVkPSgpLCByYW5kb21pemU9RmFsc2UsIGludGVycnVwdGVkPUZhbHNlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXN0cywgc3RyKToKKyAgICAgICAgICAgIHRlc3RzID0gW3Rlc3RzXQorICAgICAgICBpZiBpc2luc3RhbmNlKHNraXBwZWQsIHN0cik6CisgICAgICAgICAgICBza2lwcGVkID0gW3NraXBwZWRdCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZmFpbGVkLCBzdHIpOgorICAgICAgICAgICAgZmFpbGVkID0gW2ZhaWxlZF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShvbWl0dGVkLCBzdHIpOgorICAgICAgICAgICAgb21pdHRlZCA9IFtvbWl0dGVkXQorICAgICAgICBudGVzdCA9IGxlbih0ZXN0cykKKyAgICAgICAgbnNraXBwZWQgPSBsZW4oc2tpcHBlZCkKKyAgICAgICAgbmZhaWxlZCA9IGxlbihmYWlsZWQpCisgICAgICAgIG5vbWl0dGVkID0gbGVuKG9taXR0ZWQpCisKKyAgICAgICAgZXhlY3V0ZWQgPSBzZWxmLnBhcnNlX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCkKKyAgICAgICAgaWYgcmFuZG9taXplOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZXhlY3V0ZWQpLCBzZXQodGVzdHMpLCBvdXRwdXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4ZWN1dGVkLCB0ZXN0cywgb3V0cHV0KQorCisgICAgICAgIGRlZiBwbHVyYWwoY291bnQpOgorICAgICAgICAgICAgcmV0dXJuICdzJyBpZiBjb3VudCAhPSAxIGVsc2UgJycKKworICAgICAgICBkZWYgbGlzdF9yZWdleChsaW5lX2Zvcm1hdCwgdGVzdHMpOgorICAgICAgICAgICAgY291bnQgPSBsZW4odGVzdHMpCisgICAgICAgICAgICBuYW1lcyA9ICcgJy5qb2luKHNvcnRlZCh0ZXN0cykpCisgICAgICAgICAgICByZWdleCA9IGxpbmVfZm9ybWF0ICUgKGNvdW50LCBwbHVyYWwoY291bnQpKQorICAgICAgICAgICAgcmVnZXggPSByJyVzOlxuICAgICVzJCcgJSAocmVnZXgsIG5hbWVzKQorICAgICAgICAgICAgcmV0dXJuIHJlZ2V4CisKKyAgICAgICAgaWYgc2tpcHBlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIHNraXBwZWQnLCBza2lwcGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgZmFpbGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgZmFpbGVkJywgZmFpbGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgb21pdHRlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIG9taXR0ZWQnLCBvbWl0dGVkKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgZ29vZCA9IG50ZXN0IC0gbnNraXBwZWQgLSBuZmFpbGVkIC0gbm9taXR0ZWQKKyAgICAgICAgaWYgZ29vZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gciclcyB0ZXN0JXMgT0tcLiQnICUgKGdvb2QsIHBsdXJhbChnb29kKSkKKyAgICAgICAgICAgIGlmIG5vdCBza2lwcGVkIGFuZCBub3QgZmFpbGVkIGFuZCBnb29kID4gMToKKyAgICAgICAgICAgICAgICByZWdleCA9ICdBbGwgJXMnICUgcmVnZXgKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGlmIGludGVycnVwdGVkOgorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgJ1Rlc3Qgc3VpdGUgaW50ZXJydXB0ZWQgYnkgc2lnbmFsIFNJR0lOVC4nKQorCisgICAgICAgIGlmIG5mYWlsZWQ6CisgICAgICAgICAgICByZXN1bHQgPSAnRkFJTFVSRScKKyAgICAgICAgZWxpZiBpbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICdJTlRFUlJVUFRFRCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3VsdCA9ICdTVUNDRVNTJworICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnVGVzdHMgcmVzdWx0OiAlcycgJSByZXN1bHQpCisKKyAgICBkZWYgcGFyc2VfcmFuZG9tX3NlZWQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1VzaW5nIHJhbmRvbSBzZWVkIChbMC05XSspJywgb3V0cHV0KQorICAgICAgICByYW5kc2VlZCA9IGludChtYXRjaC5ncm91cCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gcmFuZHNlZWQgPD0gMTAwMDAwMDAsIHJhbmRzZWVkKQorICAgICAgICByZXR1cm4gcmFuZHNlZWQKKworICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdzLCBpbnB1dD1Ob25lLCBleGl0Y29kZT0wLCAqKmt3KToKKyAgICAgICAgaWYgbm90IGlucHV0OgorICAgICAgICAgICAgaW5wdXQgPSAnJworICAgICAgICBpZiAnc3RkZXJyJyBub3QgaW4ga3c6CisgICAgICAgICAgICBrd1snc3RkZXJyJ10gPSBzdWJwcm9jZXNzLlBJUEUKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MucnVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0PWlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3cpCisgICAgICAgIGlmIHByb2MucmV0dXJuY29kZSAhPSBleGl0Y29kZToKKyAgICAgICAgICAgIG1zZyA9ICgiQ29tbWFuZCAlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXNcbiIKKyAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgInN0ZG91dDpcbiIKKyAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgIiVzXG4iCisgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICUgKHN0cihhcmdzKSwgcHJvYy5yZXR1cm5jb2RlLCBwcm9jLnN0ZG91dCkpCisgICAgICAgICAgICBpZiBwcm9jLnN0ZGVycjoKKyAgICAgICAgICAgICAgICBtc2cgKz0gKCJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdGRlcnI6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAlIHByb2Muc3RkZXJyKQorICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKKyAgICAgICAgcmV0dXJuIHByb2MKKworCisgICAgZGVmIHJ1bl9weXRob24oc2VsZiwgYXJncywgKiprdyk6CisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctWCcsICdmYXVsdGhhbmRsZXInLCAnLUknLCAqYXJnc10KKyAgICAgICAgcHJvYyA9IHNlbGYucnVuX2NvbW1hbmQoYXJncywgKiprdykKKyAgICAgICAgcmV0dXJuIHByb2Muc3Rkb3V0CisKKworY2xhc3MgUHJvZ3JhbXNUZXN0Q2FzZShCYXNlVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdmFyaW91cyB3YXlzIHRvIHJ1biB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuIFVzZSBvcHRpb25zIGNsb3NlCisgICAgdG8gb3B0aW9ucyB1c2VkIG9uIHRoZSBidWlsZGJvdC4KKyAgICAiIiIKKworICAgIE5URVNUID0gNAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgICAgICAjIENyZWF0ZSBOVEVTVCB0ZXN0cyBkb2luZyBub3RoaW5nCisgICAgICAgIHNlbGYudGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZShzZWxmLk5URVNUKV0KKworICAgICAgICBzZWxmLnB5dGhvbl9hcmdzID0gWyctV2QnLCAnLUUnLCAnLWJiJ10KKyAgICAgICAgc2VsZi5yZWdydGVzdF9hcmdzID0gWyctdWFsbCcsICctcndXJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXRlc3RkaXI9JXMnICUgc2VsZi50bXB0ZXN0ZGlyXQorICAgICAgICBpZiBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ2R1bXBfdHJhY2ViYWNrX2xhdGVyJyk6CisgICAgICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MuZXh0ZW5kKCgnLS10aW1lb3V0JywgJzM2MDAnLCAnLWo0JykpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgc2VsZi5yZWdydGVzdF9hcmdzLmFwcGVuZCgnLW4nKQorCisgICAgZGVmIGNoZWNrX291dHB1dChzZWxmLCBvdXRwdXQpOgorICAgICAgICBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHNlbGYudGVzdHMsIHJhbmRvbWl6ZT1UcnVlKQorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCBhcmdzKToKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fcHl0aG9uKGFyZ3MpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KG91dHB1dCkKKworICAgIGRlZiB0ZXN0X3NjcmlwdF9yZWdydGVzdChzZWxmKToKKyAgICAgICAgIyBMaWIvdGVzdC9yZWdydGVzdC5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAncmVncnRlc3QucHknKQorCisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsIHNjcmlwdCwgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfdGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZWdydGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0LnJlZ3J0ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0LnJlZ3J0ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0LmF1dG90ZXN0CisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctbScsICd0ZXN0LmF1dG90ZXN0JywKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9mcm9tX3Rlc3RfYXV0b3Rlc3Qoc2VsZik6CisgICAgICAgICMgZnJvbSB0ZXN0IGltcG9ydCBhdXRvdGVzdAorICAgICAgICBjb2RlID0gJ2Zyb20gdGVzdCBpbXBvcnQgYXV0b3Rlc3QnCisgICAgICAgIGFyZ3MgPSBbKnNlbGYucHl0aG9uX2FyZ3MsICctYycsIGNvZGUsCisgICAgICAgICAgICAgICAgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9zY3JpcHRfYXV0b3Rlc3Qoc2VsZik6CisgICAgICAgICMgTGliL3Rlc3QvYXV0b3Rlc3QucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ2F1dG90ZXN0LnB5JykKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgc2NyaXB0LCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncnVuX3Rlc3RzLnB5IHNjcmlwdCBpcyBub3QgaW5zdGFsbGVkJykKKyAgICBkZWYgdGVzdF90b29sc19zY3JpcHRfcnVuX3Rlc3RzKHNlbGYpOgorICAgICAgICAjIFRvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgJ1Rvb2xzJywgJ3NjcmlwdHMnLCAncnVuX3Rlc3RzLnB5JykKKyAgICAgICAgYXJncyA9IFtzY3JpcHQsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHJ1bl9iYXRjaChzZWxmLCAqYXJncyk6CisgICAgICAgIHByb2MgPSBzZWxmLnJ1bl9jb21tYW5kKGFyZ3MpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KHByb2Muc3Rkb3V0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LmJhdCBzY3JpcHQgaXMgbm90IGluc3RhbGxlZCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzIG9ubHknKQorICAgIGRlZiB0ZXN0X3Rvb2xzX2J1aWxkYm90X3Rlc3Qoc2VsZik6CisgICAgICAgICMgVG9vbHNcYnVpbGRib3RcdGVzdC5iYXQKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCAnVG9vbHMnLCAnYnVpbGRib3QnLCAndGVzdC5iYXQnKQorICAgICAgICB0ZXN0X2FyZ3MgPSBbJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXJdCisgICAgICAgIGlmIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpWzBdID09ICc2NGJpdCc6CisgICAgICAgICAgICB0ZXN0X2FyZ3MuYXBwZW5kKCcteDY0JykgICAjIDY0LWJpdCBidWlsZAorICAgICAgICBpZiBub3QgUHlfREVCVUc6CisgICAgICAgICAgICB0ZXN0X2FyZ3MuYXBwZW5kKCcrZCcpICAgICAjIFJlbGVhc2UgYnVpbGQsIHVzZSBweXRob24uZXhlCisgICAgICAgIHNlbGYucnVuX2JhdGNoKHNjcmlwdCwgKnRlc3RfYXJncywgKnNlbGYudGVzdHMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgJ1dpbmRvd3Mgb25seScpCisgICAgZGVmIHRlc3RfcGNidWlsZF9ydChzZWxmKToKKyAgICAgICAgIyBQQ2J1aWxkXHJ0LmJhdAorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsIHInUENidWlsZFxydC5iYXQnKQorICAgICAgICBydF9hcmdzID0gWyItcSJdICAgICAgICAgICAgICMgUXVpY2ssIGRvbid0IHJ1biB0ZXN0cyB0d2ljZQorICAgICAgICBpZiBwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKVswXSA9PSAnNjRiaXQnOgorICAgICAgICAgICAgcnRfYXJncy5hcHBlbmQoJy14NjQnKSAgICMgNjQtYml0IGJ1aWxkCisgICAgICAgIGlmIFB5X0RFQlVHOgorICAgICAgICAgICAgcnRfYXJncy5hcHBlbmQoJy1kJykgICAgICMgRGVidWcgYnVpbGQsIHVzZSBweXRob25fZC5leGUKKyAgICAgICAgc2VsZi5ydW5fYmF0Y2goc2NyaXB0LCAqcnRfYXJncywgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHMpCisKKworY2xhc3MgQXJnc1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBhcmd1bWVudHMgb2YgdGhlIFB5dGhvbiB0ZXN0IHN1aXRlLgorICAgICIiIgorCisgICAgZGVmIHJ1bl90ZXN0cyhzZWxmLCAqdGVzdGFyZ3MsICoqa3cpOgorICAgICAgICBjbWRhcmdzID0gWyctbScsICd0ZXN0JywgJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXIsICp0ZXN0YXJnc10KKyAgICAgICAgcmV0dXJuIHNlbGYucnVuX3B5dGhvbihjbWRhcmdzLCAqKmt3KQorCisgICAgZGVmIHRlc3RfZmFpbGluZ190ZXN0KHNlbGYpOgorICAgICAgICAjIHRlc3QgYSBmYWlsaW5nIHRlc3QKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICBjbGFzcyBGYWlsaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfZmFpbGluZyhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJidWciKQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3Rfb2sgPSBzZWxmLmNyZWF0ZV90ZXN0KCdvaycpCisgICAgICAgIHRlc3RfZmFpbGluZyA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZhaWxpbmcnLCBjb2RlPWNvZGUpCisgICAgICAgIHRlc3RzID0gW3Rlc3Rfb2ssIHRlc3RfZmFpbGluZ10KKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygqdGVzdHMsIGV4aXRjb2RlPTEpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cywgZmFpbGVkPXRlc3RfZmFpbGluZykKKworICAgIGRlZiB0ZXN0X3Jlc291cmNlcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC11IGNvbW1hbmQgbGluZSBvcHRpb24KKyAgICAgICAgdGVzdHMgPSB7fQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gKCdhdWRpbycsICduZXR3b3JrJyk6CisgICAgICAgICAgICBjb2RlID0gJ2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydFxuc3VwcG9ydC5yZXF1aXJlcyglciknICUgcmVzb3VyY2UKKyAgICAgICAgICAgIHRlc3RzW3Jlc291cmNlXSA9IHNlbGYuY3JlYXRlX3Rlc3QocmVzb3VyY2UsIGNvZGUpCisgICAgICAgIHRlc3RfbmFtZXMgPSBzb3J0ZWQodGVzdHMudmFsdWVzKCkpCisKKyAgICAgICAgIyAtdSBhbGw6IDIgcmVzb3VyY2VzIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy11JywgJ2FsbCcsICp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcykKKworICAgICAgICAjIC11IGF1ZGlvOiAxIHJlc291cmNlIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy11YXVkaW8nLCAqdGVzdF9uYW1lcykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZD10ZXN0c1snbmV0d29yayddKQorCisgICAgICAgICMgbm8gb3B0aW9uOiAwIHJlc291cmNlcyBlbmFibGVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkPXRlc3RfbmFtZXMpCisKKyAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CisgICAgICAgICMgdGVzdCAtciBhbmQgLS1yYW5kc2VlZCBjb21tYW5kIGxpbmUgb3B0aW9uCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgcmFuZG9tCisgICAgICAgICAgICBwcmludCgiVEVTVFJBTkRPTTogJXMiICUgcmFuZG9tLnJhbmRpbnQoMSwgMTAwMCkpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3JhbmRvbScsIGNvZGUpCisKKyAgICAgICAgIyBmaXJzdCBydW4gdG8gZ2V0IHRoZSBvdXRwdXQgd2l0aCB0aGUgcmFuZG9tIHNlZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy1yJywgdGVzdCkKKyAgICAgICAgcmFuZHNlZWQgPSBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1RFU1RSQU5ET006IChbMC05XSspJywgb3V0cHV0KQorICAgICAgICB0ZXN0X3JhbmRvbSA9IGludChtYXRjaC5ncm91cCgxKSkKKworICAgICAgICAjIHRyeSB0byByZXByb2R1Y2Ugd2l0aCB0aGUgcmFuZG9tIHNlZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy1yJywgJy0tcmFuZHNlZWQ9JXMnICUgcmFuZHNlZWQsIHRlc3QpCisgICAgICAgIHJhbmRzZWVkMiA9IHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmRzZWVkMiwgcmFuZHNlZWQpCisKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1RFU1RSQU5ET006IChbMC05XSspJywgb3V0cHV0KQorICAgICAgICB0ZXN0X3JhbmRvbTIgPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9yYW5kb20yLCB0ZXN0X3JhbmRvbSkKKworICAgIGRlZiB0ZXN0X2Zyb21maWxlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1mcm9tZmlsZQorICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKDUpXQorCisgICAgICAgICMgV3JpdGUgdGhlIGxpc3Qgb2YgZmlsZXMgdXNpbmcgYSBmb3JtYXQgc2ltaWxhciB0byByZWdydGVzdCBvdXRwdXQ6CisgICAgICAgICMgWzEvMl0gdGVzdF8xCisgICAgICAgICMgWzIvMl0gdGVzdF8yCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICcwOjAwOjAwIFsyLzddIHRlc3Rfb3Bjb2RlcyAtLSB0ZXN0X2dyYW1tYXIgdG9vayAwIHNlYycKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgcHJldmlvdXMgPSBOb25lCisgICAgICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gZW51bWVyYXRlKHRlc3RzLCAxKToKKyAgICAgICAgICAgICAgICBsaW5lID0gKCIwMDowMDolMDJpIFslcy8lc10gJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAlIChpbmRleCwgaW5kZXgsIGxlbih0ZXN0cyksIG5hbWUpKQorICAgICAgICAgICAgICAgIGlmIHByZXZpb3VzOgorICAgICAgICAgICAgICAgICAgICBsaW5lICs9ICIgLS0gJXMgdG9vayAwIHNlYyIgJSBwcmV2aW91cworICAgICAgICAgICAgICAgIHByaW50KGxpbmUsIGZpbGU9ZnApCisgICAgICAgICAgICAgICAgcHJldmlvdXMgPSBuYW1lCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgICAgICMgdGVzdCBmb3JtYXQgJ1syLzddIHRlc3Rfb3Bjb2RlcycKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZm9yIGluZGV4LCBuYW1lIGluIGVudW1lcmF0ZSh0ZXN0cywgMSk6CisgICAgICAgICAgICAgICAgcHJpbnQoIlslcy8lc10gJXMiICUgKGluZGV4LCBsZW4odGVzdHMpLCBuYW1lKSwgZmlsZT1mcCkKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mcm9tZmlsZScsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisKKyAgICAgICAgIyB0ZXN0IGZvcm1hdCAndGVzdF9vcGNvZGVzJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICBwcmludChuYW1lLCBmaWxlPWZwKQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZyb21maWxlJywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKworICAgIGRlZiB0ZXN0X2ludGVycnVwdGVkKHNlbGYpOgorICAgICAgICBjb2RlID0gVEVTVF9JTlRFUlJVUFRFRAorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnc2lnaW50JywgY29kZT1jb2RlKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cyh0ZXN0LCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdCwgb21pdHRlZD10ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVycnVwdGVkPVRydWUpCisKKyAgICBkZWYgdGVzdF9zbG93ZXN0KHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1zbG93ZXN0CisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaW5kZXggaW4gcmFuZ2UoMyldCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCItLXNsb3dlc3QiLCAqdGVzdHMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKyAgICAgICAgcmVnZXggPSAoJzEwIHNsb3dlc3QgdGVzdHM6XG4nCisgICAgICAgICAgICAgICAgICcoPzotICVzOiAuKlxuKXslc30nCisgICAgICAgICAgICAgICAgICUgKHNlbGYuVEVTVE5BTUVfUkVHRVgsIGxlbih0ZXN0cykpKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X3Nsb3dfaW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI1MzczOiB0ZXN0IC0tc2xvd2VzdCB3aXRoIGFuIGludGVycnVwdGVkIHRlc3QKKyAgICAgICAgY29kZSA9IFRFU1RfSU5URVJSVVBURUQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoInNpZ2ludCIsIGNvZGU9Y29kZSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICB0ZXN0cyA9IChGYWxzZSwgVHJ1ZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgdGVzdHMgPSAoRmFsc2UsKQorICAgICAgICBmb3IgbXVsdGlwcm9jZXNzaW5nIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgbXVsdGlwcm9jZXNzaW5nOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAoIi0tc2xvd2VzdCIsICItajIiLCB0ZXN0KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdzID0gKCItLXNsb3dlc3QiLCB0ZXN0KQorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKmFyZ3MsIGV4aXRjb2RlPTEpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdHRlZD10ZXN0LCBpbnRlcnJ1cHRlZD1UcnVlKQorCisgICAgICAgICAgICByZWdleCA9ICgnMTAgc2xvd2VzdCB0ZXN0czpcbicpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X2NvdmVyYWdlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1jb3ZlcmFnZQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnY292ZXJhZ2UnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS1jb3ZlcmFnZSIsIHRlc3QpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0pCisgICAgICAgIHJlZ2V4ID0gKHInbGluZXMgK2NvdiUgK21vZHVsZSArXChwYXRoXClcbicKKyAgICAgICAgICAgICAgICAgcicoPzogKlswLTldKyAqWzAtOV17MSwyfSUgKlteIF0rICtcKFteKV0rXCkrKSsnKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CisgICAgICAgICMgdGVzdCAtLXdhaXQKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3dhaXQnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS13YWl0IiwgdGVzdCwgaW5wdXQ9J2tleScpCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdQcmVzcyBhbnkga2V5IHRvIGNvbnRpbnVlJykKKworICAgIGRlZiB0ZXN0X2ZvcmV2ZXIoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWZvcmV2ZXIKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBidWlsdGlucworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgIGNsYXNzIEZvcmV2ZXJUZXN0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X3J1bihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgIyBTdG9yZSB0aGUgc3RhdGUgaW4gdGhlIGJ1aWx0aW5zIG1vZHVsZSwgYmVjYXVzZSB0aGUgdGVzdAorICAgICAgICAgICAgICAgICAgICAjIG1vZHVsZSBpcyByZWxvYWQgYXQgZWFjaCBydW4KKyAgICAgICAgICAgICAgICAgICAgaWYgJ1JVTicgaW4gYnVpbHRpbnMuX19kaWN0X186CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddID49IDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJmYWlsIGF0IHRoZSAzcmQgcnVucyIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGlucy5fX2RpY3RfX1snUlVOJ10gPSAxCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZvcmV2ZXInLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZvcmV2ZXInLCB0ZXN0LCBleGl0Y29kZT0xKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdKjMsIGZhaWxlZD10ZXN0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoUHlfREVCVUcsICduZWVkIGEgZGVidWcgYnVpbGQnKQorICAgIGRlZiB0ZXN0X2h1bnRybGVha3NfZmRfbGVhayhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0taHVudHJsZWFrcyBmb3IgZmlsZSBkZXNjcmlwdG9yIGxlYWsKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgICMgSXNzdWUgIzI1MzA2OiBEaXNhYmxlIHBvcHVwcyBhbmQgbG9ncyB0byBzdGRlcnIgb24gYXNzZXJ0aW9uCisgICAgICAgICAgICAjIGZhaWx1cmVzIGluIE1TQ1JUCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IG1zdmNydAorICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgIyBubyBXaW5kb3dzLCBvIHJlbGVhc2UgYnVpbGQKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBtIGluIFttc3ZjcnQuQ1JUX1dBUk4sIG1zdmNydC5DUlRfRVJST1IsIG1zdmNydC5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUobSwgMCkKKworICAgICAgICAgICAgY2xhc3MgRkRMZWFrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfbGVhayhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKF9fZmlsZV9fLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgICAgICAgICAgIyBidWc6IG5ldmVyIGNsb2VzIHRoZSBmaWxlIGRlc2NyaXB0b3IKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnaHVudHJsZWFrcycsIGNvZGU9Y29kZSkKKworICAgICAgICBmaWxlbmFtZSA9ICdyZWZsb2cudHh0JworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1odW50cmxlYWtzJywgJzM6MzonLCB0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0Y29kZT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0sIGZhaWxlZD10ZXN0KQorCisgICAgICAgIGxpbmUgPSAnYmVnaW5uaW5nIDYgcmVwZXRpdGlvbnNcbjEyMzQ1NlxuLi4uLi4uXG4nCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlLmVzY2FwZShsaW5lKSkKKworICAgICAgICBsaW5lMiA9ICclcyBsZWFrZWQgWzEsIDEsIDFdIGZpbGUgZGVzY3JpcHRvcnMsIHN1bT0zXG4nICUgdGVzdAorICAgICAgICBzZWxmLmFzc2VydEluKGxpbmUyLCBvdXRwdXQpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIHJlZmxvZyA9IGZwLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihsaW5lMiwgcmVmbG9nKQorCisgICAgZGVmIHRlc3RfbGlzdF90ZXN0cyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tbGlzdC10ZXN0cworICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGkgaW4gcmFuZ2UoNSldCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWxpc3QtdGVzdHMnLCAqdGVzdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnJzdHJpcCgpLnNwbGl0bGluZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0cykKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CmluZGV4IDE1ODJjYWEuLjU4NzI5YTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKQEAgLTI1Myw2ICsyNTMsMzEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgIT0gYikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPCBiKQogCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdGVzdHMgPSBbCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IE5vbmUsIHIiJzwnIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiBOb25lIDwgNDIsIHIiJzwnIC4qIG9mICdOb25lVHlwZScgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA+IE5vbmUsIHIiJz4nIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiAiZm9vIiA8IE5vbmUsIHIiJzwnIC4qIG9mICdzdHInIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiAiZm9vIiA+PSA2NjYsIHIiJz49JyAuKiBvZiAnc3RyJyBhbmQgJ2ludCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyIDw9IE5vbmUsIHIiJzw9JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPj0gTm9uZSwgciInPj0nIC4qIG9mICdpbnQnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IFtdLCByIic8JyAuKiBvZiAnaW50JyBhbmQgJ2xpc3QnIiksCisgICAgICAgICAgICAobGFtYmRhOiAoKSA+IFtdLCByIic+JyAuKiBvZiAndHVwbGUnIGFuZCAnbGlzdCciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IE5vbmUgPj0gTm9uZSwgciInPj0nIC4qIG9mICdOb25lVHlwZScgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IFNwYW0oKSA8IDQyLCByIic8JyAuKiBvZiAnU3BhbScgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8IFNwYW0oKSwgciInPCcgLiogb2YgJ2ludCcgYW5kICdTcGFtJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogU3BhbSgpIDw9IFNwYW0oKSwgciInPD0nIC4qIG9mICdTcGFtJyBhbmQgJ1NwYW0nIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGksIHRlc3QgaW4gZW51bWVyYXRlKHRlc3RzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHRlc3Q9aSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgdGVzdFsxXSk6CisgICAgICAgICAgICAgICAgICAgIHRlc3RbMF0oKQorCisKIGNsYXNzIERpY3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2RpY3RzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weSBiL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKaW5kZXggODUzZTc3My4uMGRjMTA4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CkBAIC0xLDExICsxLDEyIEBACiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB1bml0dGVzdC5tb2NrCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBybGNvbXBsZXRlcgogCiBjbGFzcyBDb21wbGV0ZU1lOgogICAgICIiIiBUcml2aWFsIGNsYXNzIHVzZWQgaW4gdGVzdGluZyBybGNvbXBsZXRlci5Db21wbGV0ZXIuICIiIgogICAgIHNwYW0gPSAxCisgICAgX2hhbSA9IDIKIAogCiBjbGFzcyBUZXN0Umxjb21wbGV0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTIsMTggKzUzLDMyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgWydzdHIue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCdzJyldKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygndHVwbGUuZm9vc3BhbWVnZycpLCBbXSkKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0ZWQoeydOb25lLiVzJXMnICUgKHgsICcoJyBpZiB4ICE9ICdfX2RvY19fJyBlbHNlICcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gZGlyKE5vbmUpfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuJyksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnTm9uZS5fJyksIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc3RkY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnTm9uZS5fXycpLCBleHBlY3RlZCkKIAogICAgICAgICAjIHRlc3Qgd2l0aCBhIGN1c3RvbWl6ZWQgbmFtZXNwYWNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLnNwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLnNwYW0nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlbWUuZWdnJyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubXJvKCcsICdDb21wbGV0ZU1lLnNwYW0nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuXycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5faGFtJ10pCisgICAgICAgIG1hdGNoZXMgPSBzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuX18nKQorICAgICAgICBmb3IgeCBpbiBtYXRjaGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguc3RhcnRzd2l0aCgnQ29tcGxldGVNZS5fXycpLCB4KQorICAgICAgICBzZWxmLmFzc2VydEluKCdDb21wbGV0ZU1lLl9fbmFtZV9fJywgbWF0Y2hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQ29tcGxldGVNZS5fX25ld19fKCcsIG1hdGNoZXMpCiAKLSAgICAgICAgQ29tcGxldGVNZS5tZSA9IENvbXBsZXRlTWUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUubWUubWUuc3AnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubWUubWUuc3BhbSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnZWdnLnMnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2VnZy57fSgnLmZvcm1hdCh4KSBmb3IgeCBpbiBkaXIoc3RyKQotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCisgICAgICAgIHdpdGggcGF0Y2gub2JqZWN0KENvbXBsZXRlTWUsICJtZSIsIENvbXBsZXRlTWUsIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLm1lLm1lLnNwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5tZS5tZS5zcGFtJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnZWdnLnMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydlZ2cue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aCgncycpXSkKIAogICAgIGRlZiB0ZXN0X2V4Y2Vzc2l2ZV9nZXRhdHRyKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSBnZXRhdHRyKCkgaXMgaW52b2tlZCBubyBtb3JlIHRoYW4gb25jZSBwZXIgYXR0cmlidXRlCkBAIC03OCwxNCArOTMsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2YuYicsIDApLCAnZi5iYXInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuY2FsbHMsIDEpCiAKKyAgICBkZWYgdGVzdF91bmNyZWF0ZWRfYXR0cihzZWxmKToKKyAgICAgICAgIyBBdHRyaWJ1dGVzIGxpa2UgcHJvcGVydGllcyBhbmQgc2xvdHMgc2hvdWxkIGJlIGNvbXBsZXRlZCBldmVuIHdoZW4KKyAgICAgICAgIyB0aGV5IGhhdmVuJ3QgYmVlbiBjcmVhdGVkIG9uIGFuIGluc3RhbmNlCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgiYmFyIiwpCisgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcihkaWN0KGY9Rm9vKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZi4nLCAwKSwgJ2YuYmFyJykKKwogICAgIEB1bml0dGVzdC5tb2NrLnBhdGNoKCdybGNvbXBsZXRlci5fcmVhZGxpbmVfYXZhaWxhYmxlJywgRmFsc2UpCiAgICAgZGVmIHRlc3RfY29tcGxldGUoc2VsZik6CiAgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCcnLCAwKSwgJ1x0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAwKSwgJ2FuZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMSksICdhcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhcycsIDIpLCAnYXNzZXJ0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FuJywgMCksICdhbmQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDApLCAnYW5kICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMSksICdhcyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXMnLCAyKSwgJ2Fzc2VydCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYW4nLCAwKSwgJ2FuZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgncGEnLCAwKSwgJ3Bhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnRmEnLCAwKSwgJ0ZhbHNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2VsJywgMCksICdlbGlmICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdlbCcsIDEpLCAnZWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCd0cicsIDApLCAndHJ5OicpCiAKICAgICBkZWYgdGVzdF9kdXBsaWNhdGVfZ2xvYmFscyhzZWxmKToKICAgICAgICAgbmFtZXNwYWNlID0gewpAQCAtOTgsOSArMTI2LDEwIEBACiAgICAgICAgIGNvbXBsZXRlciA9IHJsY29tcGxldGVyLkNvbXBsZXRlcihuYW1lc3BhY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdGYWxzZScsIDApLCAnRmFsc2UnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21wbGV0ZXIuY29tcGxldGUoJ0ZhbHNlJywgMSkpICAjIE5vIGR1cGxpY2F0ZXMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2Fzc2VydCcsIDApLCAnYXNzZXJ0JykKKyAgICAgICAgIyBTcGFjZSBvciBjb2xvbiBhZGRlZCBkdWUgdG8gYmVpbmcgYSByZXNlcnZlZCBrZXl3b3JkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAwKSwgJ2Fzc2VydCAnKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjb21wbGV0ZXIuY29tcGxldGUoJ2Fzc2VydCcsIDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMCksICd0cnknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMCksICd0cnk6JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCd0cnknLCAxKSkKICAgICAgICAgIyBObyBvcGVuaW5nIGJyYWNrZXQgIigiIGJlY2F1c2Ugd2Ugb3ZlcnJvZGUgdGhlIGJ1aWx0LWluIGNsYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdtZW1vcnl2aWV3JywgMCksICdtZW1vcnl2aWV3JykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CmluZGV4IGQwMTI2NmYuLjBmNjRiYTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQpAQCAtMSw4ICsxLDggQEAKIGltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB1cmxsaWIucm9ib3RwYXJzZXIKLWZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvciwgSFRUUEVycm9yCi1mcm9tIHVybGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIEhUVFBTZXJ2ZXIKIHRyeToKQEAgLTExLDI0NiArMTEsMjM5IEBACiAgICAgdGhyZWFkaW5nID0gTm9uZQogCiAKLWNsYXNzIFJvYm90VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmRleD1Ob25lLCBwYXJzZXI9Tm9uZSwgdXJsPU5vbmUsIGdvb2Q9Tm9uZSwgYWdlbnQ9Tm9uZSk6Ci0gICAgICAgICMgd29ya2Fyb3VuZCB0byBtYWtlIHVuaXR0ZXN0IGRpc2NvdmVyeSB3b3JrIChzZWUgIzE3MDY2KQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpbmRleCwgaW50KToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmKQotICAgICAgICBpZiBnb29kOgotICAgICAgICAgICAgc2VsZi5zdHIgPSAiUm9ib3RUZXN0KCVkLCBnb29kLCAlcykiICUgKGluZGV4LCB1cmwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnN0ciA9ICJSb2JvdFRlc3QoJWQsIGJhZCwgJXMpIiAlIChpbmRleCwgdXJsKQotICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcgotICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICBzZWxmLmdvb2QgPSBnb29kCi0gICAgICAgIHNlbGYuYWdlbnQgPSBhZ2VudAorY2xhc3MgQmFzZVJvYm90VGVzdDoKKyAgICByb2JvdHNfdHh0ID0gJycKKyAgICBhZ2VudCA9ICd0ZXN0X3JvYm90cGFyc2VyJworICAgIGdvb2QgPSBbXQorICAgIGJhZCA9IFtdCiAKLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnVybCwgdHVwbGUpOgotICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYudXJsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1cmwgPSBzZWxmLnVybAotICAgICAgICAgICAgYWdlbnQgPSBzZWxmLmFnZW50Ci0gICAgICAgIGlmIHNlbGYuZ29vZDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGxpbmVzID0gaW8uU3RyaW5nSU8oc2VsZi5yb2JvdHNfdHh0KS5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLnBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoKQorICAgICAgICBzZWxmLnBhcnNlci5wYXJzZShsaW5lcykKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zdHIKKyAgICBkZWYgZ2V0X2FnZW50X2FuZF91cmwoc2VsZiwgdXJsKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh1cmwsIHR1cGxlKToKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSB1cmwKKyAgICAgICAgICAgIHJldHVybiBhZ2VudCwgdXJsCisgICAgICAgIHJldHVybiBzZWxmLmFnZW50LCB1cmwKIAotdGVzdHMgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGRlZiB0ZXN0X2dvb2RfdXJscyhzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmdvb2Q6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dXJsLCBhZ2VudD1hZ2VudCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKIAotZGVmIFJvYm90VGVzdChpbmRleCwgcm9ib3RzX3R4dCwgZ29vZF91cmxzLCBiYWRfdXJscywKLSAgICAgICAgICAgICAgYWdlbnQ9InRlc3Rfcm9ib3RwYXJzZXIiKToKKyAgICBkZWYgdGVzdF9iYWRfdXJscyhzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmJhZDoKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLmdldF9hZ2VudF9hbmRfdXJsKHVybCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11cmwsIGFnZW50PWFnZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKIAotICAgIGxpbmVzID0gaW8uU3RyaW5nSU8ocm9ib3RzX3R4dCkucmVhZGxpbmVzKCkKLSAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKLSAgICBwYXJzZXIucGFyc2UobGluZXMpCi0gICAgZm9yIHVybCBpbiBnb29kX3VybHM6Ci0gICAgICAgIHRlc3RzLmFkZFRlc3QoUm9ib3RUZXN0Q2FzZShpbmRleCwgcGFyc2VyLCB1cmwsIDEsIGFnZW50KSkKLSAgICBmb3IgdXJsIGluIGJhZF91cmxzOgotICAgICAgICB0ZXN0cy5hZGRUZXN0KFJvYm90VGVzdENhc2UoaW5kZXgsIHBhcnNlciwgdXJsLCAwLCBhZ2VudCkpCiAKLSMgRXhhbXBsZXMgZnJvbSBodHRwOi8vd3d3LnJvYm90c3R4dC5vcmcvd2Mvbm9yb2JvdHMuaHRtbCAoZmV0Y2hlZCAyMDAyKQotCi0jIDEuCi1kb2MgPSAiIiIKK2NsYXNzIFVzZXJBZ2VudFdpbGRjYXJkVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvY3liZXJ3b3JsZC9tYXAvICMgVGhpcyBpcyBhbiBpbmZpbml0ZSB2aXJ0dWFsIFVSTCBzcGFjZQogRGlzYWxsb3c6IC90bXAvICMgdGhlc2Ugd2lsbCBzb29uIGRpc2FwcGVhcgogRGlzYWxsb3c6IC9mb28uaHRtbAotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJ10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywgJy90bXAveHh4JywgJy9mb28uaHRtbCddCiAKLWdvb2QgPSBbJy8nLCcvdGVzdC5odG1sJ10KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCcvdG1wL3h4eCcsJy9mb28uaHRtbCddCiAKLVJvYm90VGVzdCgxLCBkb2MsIGdvb2QsIGJhZCkKLQotIyAyLgotZG9jID0gIiIiCitjbGFzcyBDcmF3bERlbGF5QW5kQ3VzdG9tQWdlbnRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogIyByb2JvdHMudHh0IGZvciBodHRwOi8vd3d3LmV4YW1wbGUuY29tLwogCiBVc2VyLWFnZW50OiAqCitDcmF3bC1kZWxheTogMQorUmVxdWVzdC1yYXRlOiAzLzE1CiBEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLyAjIFRoaXMgaXMgYW4gaW5maW5pdGUgdmlydHVhbCBVUkwgc3BhY2UKIAogIyBDeWJlcm1hcHBlciBrbm93cyB3aGVyZSB0byBnby4KIFVzZXItYWdlbnQ6IGN5YmVybWFwcGVyCiBEaXNhbGxvdzoKKyAgICAiIiIKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnLCAoJ2N5YmVybWFwcGVyJywgJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJyldCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCddCiAKLSIiIgogCi1nb29kID0gWycvJywnL3Rlc3QuaHRtbCcsKCdjeWJlcm1hcHBlcicsJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJyldCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJ10KLQotUm9ib3RUZXN0KDIsIGRvYywgZ29vZCwgYmFkKQotCi0jIDMuCi1kb2MgPSAiIiIKK2NsYXNzIFJlamVjdEFsbFJvYm90c1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiAjIGdvIGF3YXkKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gW10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywgJy8nLCAnL3RtcC8nXQogCi1nb29kID0gW10KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCcvJywnL3RtcC8nXQogCi1Sb2JvdFRlc3QoMywgZG9jLCBnb29kLCBiYWQpCitjbGFzcyBCYXNlUmVxdWVzdFJhdGVUZXN0KEJhc2VSb2JvdFRlc3QpOgogCi0jIEV4YW1wbGVzIGZyb20gaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL3djL25vcm9ib3RzLXJmYy5odG1sIChmZXRjaGVkIDIwMDIpCisgICAgZGVmIHRlc3RfcmVxdWVzdF9yYXRlKHNlbGYpOgorICAgICAgICBmb3IgdXJsIGluIHNlbGYuZ29vZCArIHNlbGYuYmFkOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYuZ2V0X2FnZW50X2FuZF91cmwodXJsKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXVybCwgYWdlbnQ9YWdlbnQpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY3Jhd2xfZGVsYXk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5jcmF3bF9kZWxheShhZ2VudCksIHNlbGYuY3Jhd2xfZGVsYXkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGlmIHNlbGYucmVxdWVzdF9yYXRlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIucmVxdWVzdF9yYXRlKGFnZW50KS5yZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdF9yYXRlLnJlcXVlc3RzCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZShhZ2VudCkuc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdF9yYXRlLnNlY29uZHMKKyAgICAgICAgICAgICAgICAgICAgKQogCi0jIDQuCi1kb2MgPSAiIiIKKworY2xhc3MgQ3Jhd2xEZWxheUFuZFJlcXVlc3RSYXRlVGVzdChCYXNlUmVxdWVzdFJhdGVUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IGZpZ3RyZWUKK0NyYXdsLWRlbGF5OiAzCitSZXF1ZXN0LXJhdGU6IDkvMzAKIERpc2FsbG93OiAvdG1wCiBEaXNhbGxvdzogL2ElM2NkLmh0bWwKIERpc2FsbG93OiAvYSUyZmIuaHRtbAogRGlzYWxsb3c6IC8lN2Vqb2UvaW5kZXguaHRtbAotIiIiCisgICAgIiIiCisgICAgYWdlbnQgPSAnZmlndHJlZScKKyAgICByZXF1ZXN0X3JhdGUgPSBuYW1lZHR1cGxlKCdyZXFfcmF0ZScsICdyZXF1ZXN0cyBzZWNvbmRzJykoOSwgMzApCisgICAgY3Jhd2xfZGVsYXkgPSAzCisgICAgZ29vZCA9IFsoJ2ZpZ3RyZWUnLCAnL2Zvby5odG1sJyldCisgICAgYmFkID0gWycvdG1wJywgJy90bXAuaHRtbCcsICcvdG1wL2EuaHRtbCcsICcvYSUzY2QuaHRtbCcsICcvYSUzQ2QuaHRtbCcsCisgICAgICAgICAgICcvYSUyZmIuaHRtbCcsICcvfmpvZS9pbmRleC5odG1sJ10KIAotZ29vZCA9IFtdICMgWEZBSUwgJy9hL2IuaHRtbCcKLWJhZCA9IFsnL3RtcCcsJy90bXAuaHRtbCcsJy90bXAvYS5odG1sJywKLSAgICAgICAnL2ElM2NkLmh0bWwnLCcvYSUzQ2QuaHRtbCcsJy9hJTJmYi5odG1sJywKLSAgICAgICAnL35qb2UvaW5kZXguaHRtbCcKLSAgICAgICBdCiAKLVJvYm90VGVzdCg0LCBkb2MsIGdvb2QsIGJhZCwgJ2ZpZ3RyZWUnKQotUm9ib3RUZXN0KDUsIGRvYywgZ29vZCwgYmFkLCAnRmlnVHJlZSBSb2JvdCBsaWJ3d3ctcGVybC81LjA0JykKK2NsYXNzIERpZmZlcmVudEFnZW50VGVzdChDcmF3bERlbGF5QW5kUmVxdWVzdFJhdGVUZXN0KToKKyAgICBhZ2VudCA9ICdGaWdUcmVlIFJvYm90IGxpYnd3dy1wZXJsLzUuMDQnCisgICAgIyB0aGVzZSBhcmUgbm90IGFjdHVhbGx5IHRlc3RlZCwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gcGFyc2UgaXQKKyAgICAjIGluIG9yZGVyIHRvIGFjY29tbW9kYXRlIHRoZSBpbnB1dCBwYXJhbWV0ZXJzCisgICAgcmVxdWVzdF9yYXRlID0gTm9uZQorICAgIGNyYXdsX2RlbGF5ID0gTm9uZQogCi0jIDYuCi1kb2MgPSAiIiIKKworY2xhc3MgSW52YWxpZFJlcXVlc3RSYXRlVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvdG1wLwogRGlzYWxsb3c6IC9hJTNDZC5odG1sCiBEaXNhbGxvdzogL2EvYi5odG1sCiBEaXNhbGxvdzogLyU3ZWpvZS9pbmRleC5odG1sCi0iIiIKK0NyYXdsLWRlbGF5OiAzCitSZXF1ZXN0LXJhdGU6IDkvYmFuYW5hCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3RtcCddCisgICAgYmFkID0gWycvdG1wLycsICcvdG1wL2EuaHRtbCcsICcvYSUzY2QuaHRtbCcsICcvYSUzQ2QuaHRtbCcsICcvYS9iLmh0bWwnLAorICAgICAgICAgICAnLyU3RWpvZS9pbmRleC5odG1sJ10KKyAgICBjcmF3bF9kZWxheSA9IDMKIAotZ29vZCA9IFsnL3RtcCcsXSAjIFhGQUlMOiAnL2ElMmZiLmh0bWwnCi1iYWQgPSBbJy90bXAvJywnL3RtcC9hLmh0bWwnLAotICAgICAgICcvYSUzY2QuaHRtbCcsJy9hJTNDZC5odG1sJywiL2EvYi5odG1sIiwKLSAgICAgICAnLyU3RWpvZS9pbmRleC5odG1sJ10KIAotUm9ib3RUZXN0KDYsIGRvYywgZ29vZCwgYmFkKQotCi0jIEZyb20gYnVnIHJlcG9ydCAjNTIzMDQxCi0KLSMgNy4KLWRvYyA9ICIiIgorY2xhc3MgSW52YWxpZENyYXdsRGVsYXlUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEZyb20gYnVnIHJlcG9ydCAjNTIzMDQxCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItQWdlbnQ6ICoKIERpc2FsbG93OiAvLgotIiIiCitDcmF3bC1kZWxheTogcGVhcnMKKyAgICAiIiIKKyAgICBnb29kID0gWycvZm9vLmh0bWwnXQorICAgICMgYnVnIHJlcG9ydCBzYXlzICIvIiBzaG91bGQgYmUgZGVuaWVkLCBidXQgdGhhdCBpcyBub3QgaW4gdGhlIFJGQworICAgIGJhZCA9IFtdCiAKLWdvb2QgPSBbJy9mb28uaHRtbCddCi1iYWQgPSBbXSAjIEJ1ZyByZXBvcnQgc2F5cyAiLyIgc2hvdWxkIGJlIGRlbmllZCwgYnV0IHRoYXQgaXMgbm90IGluIHRoZSBSRkMKIAotUm9ib3RUZXN0KDcsIGRvYywgZ29vZCwgYmFkKQotCi0jIEZyb20gR29vZ2xlOiBodHRwOi8vd3d3Lmdvb2dsZS5jb20vc3VwcG9ydC93ZWJtYXN0ZXJzL2Jpbi9hbnN3ZXIucHk/aGw9ZW4mYW5zd2VyPTQwMzY0Ci0KLSMgOC4KLWRvYyA9ICIiIgorY2xhc3MgQW5vdGhlckludmFsaWRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgYWxzbyB0ZXN0IHRoYXQgQWxsb3cgYW5kIERpYXNhbGxvdyB3b3JrcyB3ZWxsIHdpdGggZWFjaCBvdGhlcgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIEFsbG93OiAvZm9sZGVyMS9teWZpbGUuaHRtbAogRGlzYWxsb3c6IC9mb2xkZXIxLwotIiIiCitSZXF1ZXN0LXJhdGU6IHdoYWxlL2JhbmFuYQorICAgICIiIgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdCcKKyAgICBnb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCisgICAgYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAotZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQotYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAotUm9ib3RUZXN0KDgsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotIyA5LiAgVGhpcyBmaWxlIGlzIGluY29ycmVjdCBiZWNhdXNlICJHb29nbGVib3QiIGlzIGEgc3Vic3RyaW5nIG9mCi0jICAgICAiR29vZ2xlYm90LU1vYmlsZSIsIHNvIHRlc3QgMTAgd29ya3MganVzdCBsaWtlIHRlc3QgOS4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50T3JkZXJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRoZSBvcmRlciBvZiBVc2VyLWFnZW50IHNob3VsZCBiZSBjb3JyZWN0LiBub3RlCisgICAgIyB0aGF0IHRoaXMgZmlsZSBpcyBpbmNvcnJlY3QgYmVjYXVzZSAiR29vZ2xlYm90IiBpcyBhCisgICAgIyBzdWJzdHJpbmcgb2YgIkdvb2dsZWJvdC1Nb2JpbGUiCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdAogRGlzYWxsb3c6IC8KIAogVXNlci1hZ2VudDogR29vZ2xlYm90LU1vYmlsZQogQWxsb3c6IC8KLSIiIgotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoOSwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QiKQotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoMTAsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90LU1vYmlsZSIpCi0KLSMgMTEuICBHZXQgdGhlIG9yZGVyIGNvcnJlY3QuCi1kb2MgPSAiIiIKLVVzZXItYWdlbnQ6IEdvb2dsZWJvdC1Nb2JpbGUKLUFsbG93OiAvCi0KLVVzZXItYWdlbnQ6IEdvb2dsZWJvdAotRGlzYWxsb3c6IC8KLSIiIgotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoMTEsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotZ29vZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotYmFkID0gW10KLQotUm9ib3RUZXN0KDEyLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdC1Nb2JpbGUiKQorICAgICIiIgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdCcKKyAgICBiYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KIAogCi0jIDEzLiAgR29vZ2xlIGFsc28gZ290IHRoZSBvcmRlciB3cm9uZyBpbiAjOC4gIFlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlCi0jICAgICAgVVJMcyBmcm9tIG1vcmUgc3BlY2lmaWMgdG8gbW9yZSBnZW5lcmFsLgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRHb29nbGVNb2JpbGVUZXN0KFVzZXJBZ2VudE9yZGVyaW5nVGVzdCk6CisgICAgYWdlbnQgPSAnR29vZ2xlYm90LU1vYmlsZScKKworCitjbGFzcyBHb29nbGVVUkxPcmRlcmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgR29vZ2xlIGFsc28gZ290IHRoZSBvcmRlciB3cm9uZy4gWW91IG5lZWQKKyAgICAjIHRvIHNwZWNpZnkgdGhlIFVSTHMgZnJvbSBtb3JlIHNwZWNpZmljIHRvIG1vcmUgZ2VuZXJhbAorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIEFsbG93OiAvZm9sZGVyMS9teWZpbGUuaHRtbAogRGlzYWxsb3c6IC9mb2xkZXIxLwotIiIiCi0KLWdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KLWJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCi0KLVJvYm90VGVzdCgxMywgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJnb29nbGVib3QiKQorICAgICIiIgorICAgIGFnZW50ID0gJ2dvb2dsZWJvdCcKKyAgICBnb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCisgICAgYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAogCi0jIDE0LiBGb3IgaXNzdWUgIzYzMjUgKHF1ZXJ5IHN0cmluZyBzdXBwb3J0KQotZG9jID0gIiIiCitjbGFzcyBEaXNhbGxvd1F1ZXJ5U3RyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBzZWUgaXNzdWUgIzYzMjUgZm9yIGRldGFpbHMKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9zb21lL3BhdGg/bmFtZT12YWx1ZQotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3NvbWUvcGF0aCddCisgICAgYmFkID0gWycvc29tZS9wYXRoP25hbWU9dmFsdWUnXQogCi1nb29kID0gWycvc29tZS9wYXRoJ10KLWJhZCA9IFsnL3NvbWUvcGF0aD9uYW1lPXZhbHVlJ10KIAotUm9ib3RUZXN0KDE0LCBkb2MsIGdvb2QsIGJhZCkKLQotIyAxNS4gRm9yIGlzc3VlICM0MTA4IChvYmV5IGZpcnN0ICogZW50cnkpCi1kb2MgPSAiIiIKK2NsYXNzIFVzZUZpcnN0VXNlckFnZW50V2lsZGNhcmRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIG9iZXkgZmlyc3QgKiBlbnRyeSAoIzQxMDgpCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvc29tZS9wYXRoCiAKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvYW5vdGhlci9wYXRoCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvYW5vdGhlci9wYXRoJ10KKyAgICBiYWQgPSBbJy9zb21lL3BhdGgnXQogCi1nb29kID0gWycvYW5vdGhlci9wYXRoJ10KLWJhZCA9IFsnL3NvbWUvcGF0aCddCiAKLVJvYm90VGVzdCgxNSwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMTYuIEVtcHR5IHF1ZXJ5IChpc3N1ZSAjMTc0MDMpLiBOb3JtYWxpemluZyB0aGUgdXJsIGZpcnN0LgotZG9jID0gIiIiCitjbGFzcyBFbXB0eVF1ZXJ5U3RyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBub3JtYWxpemUgdGhlIFVSTCBmaXJzdCAoIzE3NDAzKQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBBbGxvdzogL3NvbWUvcGF0aD8KIERpc2FsbG93OiAvYW5vdGhlci9wYXRoPwotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQorICAgIGJhZCA9IFsnL2Fub3RoZXIvcGF0aD8nXQogCi1nb29kID0gWycvc29tZS9wYXRoPyddCi1iYWQgPSBbJy9hbm90aGVyL3BhdGg/J10KIAotUm9ib3RUZXN0KDE2LCBkb2MsIGdvb2QsIGJhZCkKK2NsYXNzIERlZmF1bHRFbnRyeVRlc3QoQmFzZVJlcXVlc3RSYXRlVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCitVc2VyLWFnZW50OiAqCitDcmF3bC1kZWxheTogMQorUmVxdWVzdC1yYXRlOiAzLzE1CitEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLworICAgICIiIgorICAgIHJlcXVlc3RfcmF0ZSA9IG5hbWVkdHVwbGUoJ3JlcV9yYXRlJywgJ3JlcXVlc3RzIHNlY29uZHMnKSgzLCAxNSkKKyAgICBjcmF3bF9kZWxheSA9IDEKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQogCiAKIGNsYXNzIFJvYm90SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKQEAgLTI4Myw5ICsyNzYsNyBAQAogICAgICAgICBzZWxmLnQuam9pbigpCiAgICAgICAgIHNlbGYuc2VydmVyLnNlcnZlcl9jbG9zZSgpCiAKLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgc2VsZi50ZXN0UGFzc3dvcmRQcm90ZWN0ZWRTaXRlKCkKLQorICAgIEBzdXBwb3J0LnJlYXBfdGhyZWFkcwogICAgIGRlZiB0ZXN0UGFzc3dvcmRQcm90ZWN0ZWRTaXRlKHNlbGYpOgogICAgICAgICBhZGRyID0gc2VsZi5zZXJ2ZXIuc2VydmVyX2FkZHJlc3MKICAgICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgc3VwcG9ydC5IT1NUICsgJzonICsgc3RyKGFkZHJbMV0pCkBAIC0yOTUsMjYgKzI4Niw0NyBAQAogICAgICAgICBwYXJzZXIucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmNhbl9mZXRjaCgiKiIsIHJvYm90c191cmwpKQogCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnJXMnICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18KIAogY2xhc3MgTmV0d29ya1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIEB1bml0dGVzdC5za2lwKCdkb2VzIG5vdCBoYW5kbGUgdGhlIGd6aXAgZW5jb2RpbmcgZGVsaXZlcmVkIGJ5IHB5ZG90b3JnJykKLSAgICBkZWYgdGVzdFB5dGhvbk9yZyhzZWxmKToKLSAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoJ3d3dy5weXRob24ub3JnJyk6Ci0gICAgICAgICAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKAotICAgICAgICAgICAgICAgICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpCi0gICAgICAgICAgICBwYXJzZXIucmVhZCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoCi0gICAgICAgICAgICAgICAgcGFyc2VyLmNhbl9mZXRjaCgiKiIsICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpKQorICAgIGJhc2VfdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvJworICAgIHJvYm90c190eHQgPSAne31lbHNld2hlcmUvcm9ib3RzLnR4dCcuZm9ybWF0KGJhc2VfdXJsKQogCi1kZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHN1aXRlLCBwYXR0ZXJuKToKLSAgICBzdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShOZXR3b3JrVGVzdENhc2UpCi0gICAgc3VpdGUuYWRkVGVzdCh0ZXN0cykKLSAgICBzdWl0ZS5hZGRUZXN0KFBhc3N3b3JkUHJvdGVjdGVkU2l0ZVRlc3RDYXNlKCkpCi0gICAgcmV0dXJuIHN1aXRlCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoY2xzLmJhc2VfdXJsKToKKyAgICAgICAgICAgIGNscy5wYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKGNscy5yb2JvdHNfdHh0KQorICAgICAgICAgICAgY2xzLnBhcnNlci5yZWFkKCkKKworICAgIGRlZiB1cmwoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiAne317fXt9Jy5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLmJhc2VfdXJsLCBwYXRoLCAnLycgaWYgbm90IG9zLnBhdGguc3BsaXRleHQocGF0aClbMV0gZWxzZSAnJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5kaXNhbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2VsZi5wYXJzZXIubXRpbWUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jcmF3bF9kZWxheSgnKicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZSgnKicpKQorCisgICAgZGVmIHRlc3RfY2FuX2ZldGNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCcqJywgc2VsZi51cmwoJ2Vsc2V3aGVyZScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi5iYXNlX3VybCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYudXJsKCdicmlhbicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJ051dGNoJywgc2VsZi51cmwoJ3dlYnN0YXRzJykpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYudXJsKCd3ZWJzdGF0cycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYuYmFzZV91cmwpKQorCisgICAgZGVmIHRlc3RfcmVhZF80MDQoc2VsZik6CisgICAgICAgIHBhcnNlciA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoc2VsZi51cmwoJ2ktcm9ib3QudHh0JykpCisgICAgICAgIHBhcnNlci5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhcnNlci5hbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmRpc2FsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIubXRpbWUoKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmNyYXdsX2RlbGF5KCcqJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5yZXF1ZXN0X3JhdGUoJyonKSkKIAogaWYgX19uYW1lX189PSdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCBkYjU1ZGI3Li4wMmI0ZDYyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTU3NywxMyArNTc3LDE0IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLl9kZWxfcGtnLCBwa2dfZGlyKQogICAgICAgICBmb3IgZGVwdGggaW4gcmFuZ2UoMiwgbWF4X2RlcHRoKzEpOgogICAgICAgICAgICAgc2VsZi5fYWRkX3JlbGF0aXZlX21vZHVsZXMocGtnX2RpciwgIiIsIGRlcHRoKQotICAgICAgICBmb3IgZmluZGVyLCBtb2RfbmFtZSwgaXNwa2cgaW4gcGtndXRpbC53YWxrX3BhY2thZ2VzKFtwa2dfZGlyXSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZGVyLAorICAgICAgICBmb3IgbW9kdWxlaW5mbyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW3BrZ19kaXJdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGVpbmZvLCBwa2d1dGlsLk1vZHVsZUluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mby5tb2R1bGVfZmluZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcikKLSAgICAgICAgICAgIGlmIGlzcGtnOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgICAgIGlmIG1vZHVsZWluZm8uaXNwa2c6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMucmVtb3ZlKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcy5yZW1vdmUobW9kdWxlaW5mby5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9wYWNrYWdlcyksIDAsIGV4cGVjdGVkX3BhY2thZ2VzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9tb2R1bGVzKSwgMCwgZXhwZWN0ZWRfbW9kdWxlcykKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKaW5kZXggZmU4ZTc4NS4uZjg2ZjU5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CkBAIC0yLDcgKzIsNiBAQAogaW1wb3J0IHNjaGVkCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkgYi9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGM2NWNmMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2VjcmV0cy5weQpAQCAtMCwwICsxLDEyMyBAQAorIiIiVGVzdCB0aGUgc2VjcmV0cyBtb2R1bGUuCisKK0FzIG1vc3Qgb2YgdGhlIGZ1bmN0aW9ucyBpbiBzZWNyZXRzIGFyZSB0aGluIHdyYXBwZXJzIGFyb3VuZCBmdW5jdGlvbnMKK2RlZmluZWQgZWxzZXdoZXJlLCB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlbSBleGhhdXN0aXZlbHkuCisiIiIKKworCitpbXBvcnQgc2VjcmV0cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3RyaW5nCisKKworIyA9PT0gVW5pdCB0ZXN0cyA9PT0KKworY2xhc3MgQ29tcGFyZV9EaWdlc3RfVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3Qgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCBmdW5jdGlvbi4iIiIKKworICAgIGRlZiB0ZXN0X2VxdWFsKHNlbGYpOgorICAgICAgICAjIFRlc3QgY29tcGFyZV9kaWdlc3QgZnVuY3Rpb25hbGl0eSB3aXRoIGVxdWFsIChieXRlL3RleHQpIHN0cmluZ3MuCisgICAgICAgIGZvciBzIGluICgiYSIsICJiY2QiLCAieHl6MTIzIik6CisgICAgICAgICAgICBhID0gcyoxMDAKKyAgICAgICAgICAgIGIgPSBzKjEwMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChhLmVuY29kZSgndXRmLTgnKSwgYi5lbmNvZGUoJ3V0Zi04JykpKQorCisgICAgZGVmIHRlc3RfdW5lcXVhbChzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvbXBhcmVfZGlnZXN0IGZ1bmN0aW9uYWxpdHkgd2l0aCB1bmVxdWFsIChieXRlL3RleHQpIHN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgImFiY2QiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGIiYWJjIiwgYiJhYmNkIikpCisgICAgICAgIGZvciBzIGluICgieCIsICJtbiIsICJhMWIyYzMiKToKKyAgICAgICAgICAgIGEgPSBzKjEwMCArICJxIgorICAgICAgICAgICAgYiA9IHMqMTAwICsgImsiCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYS5lbmNvZGUoJ3V0Zi04JyksIGIuZW5jb2RlKCd1dGYtOCcpKSkKKworICAgIGRlZiB0ZXN0X2JhZF90eXBlcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgY29tcGFyZV9kaWdlc3QgcmFpc2VzIHdpdGggbWl4ZWQgdHlwZXMuCisgICAgICAgIGEgPSAnYWJjZGUnCisgICAgICAgIGIgPSBhLmVuY29kZSgndXRmLTgnKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhLCBzdHIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGIsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlY3JldHMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCwgYiwgYSkKKworICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGNvbXBhcmVfZGlnZXN0IHJldHVybnMgYSBib29sLgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgImFiYyIpLCBib29sKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdCgiYWJjIiwgInh5eiIpLCBib29sKQorCisKK2NsYXNzIFJhbmRvbV9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB3cmFwcGVycyBhcm91bmQgU3lzdGVtUmFuZG9tIG1ldGhvZHMuIiIiCisKKyAgICBkZWYgdGVzdF9yYW5kYml0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJhbmRiaXRzLgorICAgICAgICBlcnJtc2cgPSAicmFuZGJpdHMoJWQpIHJldHVybmVkICVkIgorICAgICAgICBmb3IgbnVtYml0cyBpbiAoMywgMTIsIDMwKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDYpOgorICAgICAgICAgICAgICAgIG4gPSBzZWNyZXRzLnJhbmRiaXRzKG51bWJpdHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPD0gbiA8IDIqKm51bWJpdHMsIGVycm1zZyAlIChudW1iaXRzLCBuKSkKKworICAgIGRlZiB0ZXN0X2Nob2ljZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGNob2ljZS4KKyAgICAgICAgaXRlbXMgPSBbMSwgMiwgNCwgOCwgMTYsIDMyLCA2NF0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY2hvaWNlKGl0ZW1zKSBpbiBpdGVtcykKKworICAgIGRlZiB0ZXN0X3JhbmRiZWxvdyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHJhbmRiZWxvdy4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMiwgMTApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWNyZXRzLnJhbmRiZWxvdyhpKSwgcmFuZ2UoaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlY3JldHMucmFuZGJlbG93LCAwKQorCisKK2NsYXNzIFRva2VuX1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRva2VuIGZ1bmN0aW9ucy4iIiIKKworICAgIGRlZiB0ZXN0X3Rva2VuX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0b2tlbl8qIGZ1bmN0aW9ucyBoYW5kbGUgZGVmYXVsdCBzaXplIGNvcnJlY3RseS4KKyAgICAgICAgZm9yIGZ1bmMgaW4gKHNlY3JldHMudG9rZW5fYnl0ZXMsIHNlY3JldHMudG9rZW5faGV4LAorICAgICAgICAgICAgICAgICAgICAgc2VjcmV0cy50b2tlbl91cmxzYWZlKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYyk6CisgICAgICAgICAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50IiAlIG5hbWUpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmdW5jKE5vbmUpCisgICAgICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggTm9uZSIgJSBuYW1lKQorICAgICAgICBzaXplID0gc2VjcmV0cy5ERUZBVUxUX0VOVFJPUFkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhOb25lKSksIHNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5faGV4KE5vbmUpKSwgMipzaXplKQorCisgICAgZGVmIHRlc3RfdG9rZW5fYnl0ZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9ieXRlcy4KKyAgICAgICAgZm9yIG4gaW4gKDEsIDgsIDE3LCAxMDApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VjcmV0cy50b2tlbl9ieXRlcyhuKSwgYnl0ZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VjcmV0cy50b2tlbl9ieXRlcyhuKSksIG4pCisKKyAgICBkZWYgdGVzdF90b2tlbl9oZXgoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl9oZXguCisgICAgICAgIGZvciBuIGluICgxLCAxMiwgMjUsIDkwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG49bik6CisgICAgICAgICAgICAgICAgcyA9IHNlY3JldHMudG9rZW5faGV4KG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHMsIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzKSwgMipuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBzdHJpbmcuaGV4ZGlnaXRzIGZvciBjIGluIHMpKQorCisgICAgZGVmIHRlc3RfdG9rZW5fdXJsc2FmZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRva2VuX3VybHNhZmUuCisgICAgICAgIGxlZ2FsID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJy1fJworICAgICAgICBmb3IgbiBpbiAoMSwgMTEsIDI4LCA3Nik6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHMgPSBzZWNyZXRzLnRva2VuX3VybHNhZmUobikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uocywgc3RyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbGwoYyBpbiBsZWdhbCBmb3IgYyBpbiBzKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NldC5weQppbmRleCA3NTk0MzAzLi5hZmE2ZTdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NldC5weQpAQCAtNiwxMCArNiwxMSBAQAogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgc3RyaW5nCiAKIGNsYXNzIFBhc3NUaHJ1KEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtNzI5LDYgKzczMCwyOCBAQAogICAgICAgICAgICAgYWRkaGFzaHZhbHVlKGhhc2goZnJvemVuc2V0KFtlIGZvciBlLCBtIGluIGVsZW1tYXNrcyBpZiBtJmldKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGhhc2h2YWx1ZXMpLCAyKipuKQogCisgICAgICAgIGRlZiBsZXR0ZXJfcmFuZ2Uobik6CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nLmFzY2lpX2xldHRlcnNbOm5dCisKKyAgICAgICAgZGVmIHpmX3JhbmdlKG4pOgorICAgICAgICAgICAgIyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9TZXQtdGhlb3JldGljX2RlZmluaXRpb25fb2ZfbmF0dXJhbF9udW1iZXJzCisgICAgICAgICAgICBudW1zID0gW2Zyb3plbnNldCgpXQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobi0xKToKKyAgICAgICAgICAgICAgICBudW0gPSBmcm96ZW5zZXQobnVtcykKKyAgICAgICAgICAgICAgICBudW1zLmFwcGVuZChudW0pCisgICAgICAgICAgICByZXR1cm4gbnVtc1s6bl0KKworICAgICAgICBkZWYgcG93ZXJzZXQocyk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocykrMSk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBtYXAoZnJvemVuc2V0LCBpdGVydG9vbHMuY29tYmluYXRpb25zKHMsIGkpKQorCisgICAgICAgIGZvciBuIGluIHJhbmdlKDE4KToKKyAgICAgICAgICAgIHQgPSAyICoqIG4KKyAgICAgICAgICAgIG1hc2sgPSB0IC0gMQorICAgICAgICAgICAgZm9yIG51bXMgaW4gKHJhbmdlLCBsZXR0ZXJfcmFuZ2UsIHpmX3JhbmdlKToKKyAgICAgICAgICAgICAgICB1ID0gbGVuKHtoICYgbWFzayBmb3IgaCBpbiBtYXAoaGFzaCwgcG93ZXJzZXQobnVtcyhuKSkpfSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoNCp1LCB0KQorCiBjbGFzcyBGcm96ZW5TZXRTdWJjbGFzcyhmcm96ZW5zZXQpOgogICAgIHBhc3MKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKaW5kZXggNTViNTMzZC4uMzkzNmM5NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CkBAIC0xNzMsMTYgKzE3MywxMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiAlcyAhPSAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kYXRhW2ldWzBdLCBsLCBzZWxmLmRhdGFbaV1bMTpdKSkKIAorICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRBbXBlcnNhbmRBbmRQaXBlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgJiwgfCIiIgorICAgICAgICAjIENvdWxkIHRha2UgdGhlc2UgZm9ybXM6ICYmLCAmLCB8JiwgOyYsIDs7JgorICAgICAgICAjIG9mIGNvdXJzZSwgdGhlIHNhbWUgYXBwbGllcyB0byB8IGFuZCB8fAorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIGZvciBkZWxpbWl0ZXIgaW4gKCcmJicsICcmJywgJ3wmJywgJzsmJywgJzs7JicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICd8fCcsICd8JywgJyZ8JywgJzt8JywgJzs7fCcpOgorICAgICAgICAgICAgc3JjID0gWydlY2hvIGhpICVzIGVjaG8gYnllJyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzZWNobyBieWUnICUgZGVsaW1pdGVyXQorICAgICAgICAgICAgcmVmID0gWydlY2hvJywgJ2hpJywgZGVsaW1pdGVyLCAnZWNobycsICdieWUnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRTZW1pY29sb24oc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiA7IiIiCisgICAgICAgICMgQ291bGQgdGFrZSB0aGVzZSBmb3JtczogOywgOzssIDsmLCA7OyYKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBmb3IgZGVsaW1pdGVyIGluICgnOycsICc7OycsICc7JicsICc7OyYnKToKKyAgICAgICAgICAgIHNyYyA9IFsnZWNobyBoaSAlcyBlY2hvIGJ5ZScgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklcyBlY2hvIGJ5ZScgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklc2VjaG8gYnllJyAlIGRlbGltaXRlcl0KKyAgICAgICAgICAgIHJlZiA9IFsnZWNobycsICdoaScsIGRlbGltaXRlciwgJ2VjaG8nLCAnYnllJ10KKyAgICAgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0UmVkaXJlY3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiA+IiIiCisgICAgICAgICMgb2YgY291cnNlLCB0aGUgc2FtZSBhcHBsaWVzIHRvIDwsIHwKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBmb3IgZGVsaW1pdGVyIGluICgnPCcsICd8Jyk6CisgICAgICAgICAgICBzcmMgPSBbJ2VjaG8gaGkgJXMgb3V0JyAlIGRlbGltaXRlciwKKyAgICAgICAgICAgICAgICAgICAnZWNobyBoaSVzIG91dCcgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklc291dCcgJSBkZWxpbWl0ZXJdCisgICAgICAgICAgICByZWYgPSBbJ2VjaG8nLCAnaGknLCBkZWxpbWl0ZXIsICdvdXQnXQorICAgICAgICAgICAgZm9yIHNzIGluIHNyYzoKKyAgICAgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0U3ludGF4U3BsaXRQYXJlbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mICgpIiIiCisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgc3JjID0gWycoIGVjaG8gaGkgKScsCisgICAgICAgICAgICAgICAnKGVjaG8gaGkpJ10KKyAgICAgICAgcmVmID0gWycoJywgJ2VjaG8nLCAnaGknLCAnKSddCisgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0Q3VzdG9tKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgd2l0aCBjdXN0b20gY2hhcnMiIiIKKyAgICAgICAgcmVmID0gWyd+L2EnLCAnJicsICcmJywgJ2ItYycsICctLWNvbG9yPWF1dG8nLCAnfHwnLCAnZCcsICcqLnB5PyddCisgICAgICAgIHNzID0gIn4vYSAmJiBiLWMgLS1jb2xvcj1hdXRvIHx8IGQgKi5weT8iCisgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9InwiKQorICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVmLCByZXN1bHQsICJXaGlsZSBzcGxpdHRpbmcgJyVzJyIgJSBzcykKKworICAgIGRlZiB0ZXN0VG9rZW5UeXBlcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHRva2VucyBhcmUgc3BsaXQgd2l0aCB0eXBlcyBhcyBleHBlY3RlZC4iIiIKKyAgICAgICAgZm9yIHNvdXJjZSwgZXhwZWN0ZWQgaW4gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EgJiYgYiB8fCBjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLCAnYScpLCAoJyYmJywgJ2MnKSwgKCdiJywgJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3x8JywgJ2MnKSwgKCdjJywgJ2EnKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzb3VyY2UsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCisgICAgICAgICAgICBvYnNlcnZlZCA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHQgPSBzLmdldF90b2tlbigpCisgICAgICAgICAgICAgICAgaWYgdCA9PSBzLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiB0WzBdIGluIHMucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgIHR0ID0gJ2MnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdHQgPSAnYScKKyAgICAgICAgICAgICAgICBvYnNlcnZlZC5hcHBlbmQoKHQsIHR0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzZXJ2ZWQsIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RQdW5jdHVhdGlvbkluV29yZENoYXJzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYW55IHB1bmN0dWF0aW9uIGNoYXJzIGFyZSByZW1vdmVkIGZyb20gd29yZGNoYXJzIiIiCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYV9iX19jJywgcHVuY3R1YXRpb25fY2hhcnM9J18nKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdfJywgcy53b3JkY2hhcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgWydhJywgJ18nLCAnYicsICdfXycsICdjJ10pCisKKyAgICBkZWYgdGVzdFB1bmN0dWF0aW9uV2l0aFdoaXRlc3BhY2VTcGxpdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IHdpdGggd2hpdGVzcGFjZV9zcGxpdCwgYmVoYXZpb3VyIGlzIGFzIGV4cGVjdGVkIiIiCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYSAgJiYgYiAgfHwgIGMnLCBwdW5jdHVhdGlvbl9jaGFycz0nJicpCisgICAgICAgICMgd2hpdGVzcGFjZV9zcGxpdCBpcyBGYWxzZSwgc28gc3BsaXR0aW5nIHdpbGwgYmUgYmFzZWQgb24KKyAgICAgICAgIyBwdW5jdHVhdGlvbl9jaGFycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIFsnYScsICcmJicsICdiJywgJ3wnLCAnfCcsICdjJ10pCisgICAgICAgIHMgPSBzaGxleC5zaGxleCgnYSAgJiYgYiAgfHwgIGMnLCBwdW5jdHVhdGlvbl9jaGFycz0nJicpCisgICAgICAgIHMud2hpdGVzcGFjZV9zcGxpdCA9IFRydWUKKyAgICAgICAgIyB3aGl0ZXNwYWNlX3NwbGl0IGlzIFRydWUsIHNvIHNwbGl0dGluZyB3aWxsIGJlIGJhc2VkIG9uCisgICAgICAgICMgd2hpdGUgc3BhY2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBbJ2EnLCAnJiYnLCAnYicsICd8fCcsICdjJ10pCisKICAgICBkZWYgdGVzdEVtcHR5U3RyaW5nSGFuZGxpbmcoc2VsZik6CiAgICAgICAgICIiIlRlc3QgdGhhdCBwYXJzaW5nIG9mIGVtcHR5IHN0cmluZ3MgaXMgY29ycmVjdGx5IGhhbmRsZWQuIiIiCiAgICAgICAgICMgc2VlIElzc3VlICMyMTk5OQogICAgICAgICBleHBlY3RlZCA9IFsnJywgJyknLCAnYWJjJ10KLQotICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHBvc2l4PVRydWUpCi0gICAgICAgIHNsaXN0ID0gbGlzdChzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaXN0LCBleHBlY3RlZCkKKyAgICAgICAgZm9yIHB1bmN0IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHBvc2l4PVRydWUsIHB1bmN0dWF0aW9uX2NoYXJzPXB1bmN0KQorICAgICAgICAgICAgc2xpc3QgPSBsaXN0KHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNsaXN0LCBleHBlY3RlZCkKICAgICAgICAgZXhwZWN0ZWQgPSBbIicnIiwgJyknLCAnYWJjJ10KLSAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiKQorICAgICAgICBzID0gc2hsZXguc2hsZXgoIicnKWFiYyIsIHB1bmN0dWF0aW9uX2NoYXJzPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdFF1b3RlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCAxZTY1YTJhLi5kOTNlZmI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtMTMyLDkgKzEzMiw3IEBACiAgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHZpY3RpbSwgJ3NvbWVmaWxlJyksICdmb28nKQogICAgICAgICB2aWN0aW0gPSBvcy5mc2VuY29kZSh2aWN0aW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2aWN0aW0sIGJ5dGVzKQotICAgICAgICB3aW4gPSAob3MubmFtZSA9PSAnbnQnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKSBpZiB3aW4gZWxzZSBFeGl0U3RhY2soKToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodmljdGltKQorICAgICAgICBzaHV0aWwucm10cmVlKHZpY3RpbSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9ybXRyZWVfZmFpbHNfb25fc3ltbGluayhzZWxmKToKQEAgLTEzMTksMTAgKzEzMTcsMTAgQEAKICAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKLSAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdXNlcj0nbm9uLWV4aXNpbmcgdXNlcm5hbWUnKQorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCB1c2VyPSdub24tZXhpc3RpbmcgdXNlcm5hbWUnKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IpOgotICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBncm91cD0nbm9uLWV4aXNpbmcgZ3JvdXBuYW1lJykKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9J25vbi1leGlzdGluZyBncm91cG5hbWUnKQogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgYidzcGFtJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKaW5kZXggMWI4MGZmMC4uYWI0MmVkNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkKQEAgLTIyLDI5ICsyMiw2IEBACiAgICAgX3Rlc3RjYXBpID0gTm9uZQogCiAKLWNsYXNzIEhhbmRsZXJCQ2FsbGVkKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWRlZiBleGl0X3N1YnByb2Nlc3MoKToKLSAgICAiIiJVc2Ugb3MuX2V4aXQoMCkgdG8gZXhpdCB0aGUgY3VycmVudCBzdWJwcm9jZXNzLgotCi0gICAgT3RoZXJ3aXNlLCB0aGUgdGVzdCBjYXRjaGVzIHRoZSBTeXN0ZW1FeGl0IGFuZCBjb250aW51ZXMgZXhlY3V0aW5nCi0gICAgaW4gcGFyYWxsZWwgd2l0aCB0aGUgb3JpZ2luYWwgdGVzdCwgc28geW91IHdpbmQgdXAgd2l0aCBhbgotICAgIGV4cG9uZW50aWFsIG51bWJlciBvZiB0ZXN0cyBydW5uaW5nIGNvbmN1cnJlbnRseS4KLSAgICAiIiIKLSAgICBvcy5fZXhpdCgwKQotCi0KLWRlZiBpZ25vcmluZ19laW50cihfX2Z1bmMsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gX19mdW5jKCphcmdzLCAqKmt3YXJncykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCiBjbGFzcyBHZW5lcmljVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgQHVuaXR0ZXN0LnNraXBJZih0aHJlYWRpbmcgaXMgTm9uZSwgInRlc3QgbmVlZHMgdGhyZWFkaW5nIG1vZHVsZSIpCkBAIC02MywxNDUgKzQwLDYgQEAKIAogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQotY2xhc3MgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIE1BWF9EVVJBVElPTiA9IDIwICAgIyBFbnRpcmUgdGVzdCBzaG91bGQgbGFzdCBhdCBtb3N0IDIwIHNlYy4KLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi51c2luZ19nYyA9IGdjLmlzZW5hYmxlZCgpCi0gICAgICAgIGdjLmRpc2FibGUoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnVzaW5nX2djOgotICAgICAgICAgICAgZ2MuZW5hYmxlKCkKLQotICAgIGRlZiBmb3JtYXRfZnJhbWUoc2VsZiwgZnJhbWUsIGxpbWl0PU5vbmUpOgotICAgICAgICByZXR1cm4gJycuam9pbih0cmFjZWJhY2suZm9ybWF0X3N0YWNrKGZyYW1lLCBsaW1pdD1saW1pdCkpCi0KLSAgICBkZWYgaGFuZGxlckEoc2VsZiwgc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHNlbGYuYV9jYWxsZWQgPSBUcnVlCi0KLSAgICBkZWYgaGFuZGxlckIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHNlbGYuYl9jYWxsZWQgPSBUcnVlCi0gICAgICAgIHJhaXNlIEhhbmRsZXJCQ2FsbGVkKHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUpKQotCi0gICAgZGVmIHdhaXQoc2VsZiwgY2hpbGQpOgotICAgICAgICAiIiJXYWl0IGZvciBjaGlsZCB0byBmaW5pc2gsIGlnbm9yaW5nIEVJTlRSLiIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNoaWxkLndhaXQoKQotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVJTlRSOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHJ1bl90ZXN0KHNlbGYpOgotICAgICAgICAjIEluc3RhbGwgaGFuZGxlcnMuIFRoaXMgZnVuY3Rpb24gcnVucyBpbiBhIHN1Yi1wcm9jZXNzLCBzbyB3ZQotICAgICAgICAjIGRvbid0IHdvcnJ5IGFib3V0IHJlLXNldHRpbmcgdGhlIGRlZmF1bHQgaGFuZGxlcnMuCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgc2VsZi5oYW5kbGVyQSkKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgc2VsZi5oYW5kbGVyQikKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMiwgc2lnbmFsLlNJR19JR04pCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNpZ25hbC5kZWZhdWx0X2ludF9oYW5kbGVyKQotCi0gICAgICAgICMgVmFyaWFibGVzIHRoZSBzaWduYWxzIHdpbGwgbW9kaWZ5OgotICAgICAgICBzZWxmLmFfY2FsbGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5iX2NhbGxlZCA9IEZhbHNlCi0KLSAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgotICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQotCi0gICAgICAgIGNoaWxkID0gaWdub3JpbmdfZWludHIoc3VicHJvY2Vzcy5Qb3BlbiwgWydraWxsJywgJy1IVVAnLCBzdHIocGlkKV0pCi0gICAgICAgIGlmIGNoaWxkOgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuYV9jYWxsZWQ6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKSAgIyBHaXZlIHRoZSBzaWduYWwgdGltZSB0byBiZSBkZWxpdmVyZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmFfY2FsbGVkKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYl9jYWxsZWQpCi0gICAgICAgIHNlbGYuYV9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICMgTWFrZSBzdXJlIHRoZSBzaWduYWwgaXNuJ3QgZGVsaXZlcmVkIHdoaWxlIHRoZSBwcmV2aW91cwotICAgICAgICAjIFBvcGVuIG9iamVjdCBpcyBiZWluZyBkZXN0cm95ZWQsIGJlY2F1c2UgX19kZWxfXyBzd2FsbG93cwotICAgICAgICAjIGV4Y2VwdGlvbnMuCi0gICAgICAgIGRlbCBjaGlsZAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGlsZCA9IHN1YnByb2Nlc3MuUG9wZW4oWydraWxsJywgJy1VU1IxJywgc3RyKHBpZCldKQotICAgICAgICAgICAgIyBUaGlzIHdhaXQgc2hvdWxkIGJlIGludGVycnVwdGVkIGJ5IHRoZSBzaWduYWwncyBleGNlcHRpb24uCi0gICAgICAgICAgICBzZWxmLndhaXQoY2hpbGQpCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpICAjIEdpdmUgdGhlIHNpZ25hbCB0aW1lIHRvIGJlIGRlbGl2ZXJlZC4KLSAgICAgICAgICAgIHNlbGYuZmFpbCgnSGFuZGxlckJDYWxsZWQgZXhjZXB0aW9uIG5vdCByYWlzZWQnKQotICAgICAgICBleGNlcHQgSGFuZGxlckJDYWxsZWQ6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5iX2NhbGxlZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hX2NhbGxlZCkKLQotICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctVVNSMicsIHN0cihwaWQpXSkKLSAgICAgICAgaWYgY2hpbGQ6Ci0gICAgICAgICAgICBzZWxmLndhaXQoY2hpbGQpICAjIE5vdGhpbmcgc2hvdWxkIGhhcHBlbi4KLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgICMgVGhlIHJhY2UgY29uZGl0aW9uIGluIHBhdXNlIGRvZXNuJ3QgbWF0dGVyIGluIHRoaXMgY2FzZSwKLSAgICAgICAgICAgICMgc2luY2UgYWxhcm0gaXMgZ29pbmcgdG8gcmFpc2UgYSBLZXlib2FyZEV4Y2VwdGlvbiwgd2hpY2gKLSAgICAgICAgICAgICMgd2lsbCBza2lwIHRoZSBjYWxsLgotICAgICAgICAgICAgc2lnbmFsLnBhdXNlKCkKLSAgICAgICAgICAgICMgQnV0IGlmIGFub3RoZXIgc2lnbmFsIGFycml2ZXMgYmVmb3JlIHRoZSBhbGFybSwgcGF1c2UKLSAgICAgICAgICAgICMgbWF5IHJldHVybiBlYXJseS4KLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKLSAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoIlNvbWUgb3RoZXIgZXhjZXB0aW9uIHdva2UgdXMgZnJvbSBwYXVzZTogJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCJwYXVzZSByZXR1cm5lZCBvZiBpdHMgb3duIGFjY29yZCwgYW5kIHRoZSBzaWduYWwiCi0gICAgICAgICAgICAgICAgICAgICAgIiBkaWRuJ3QgYXJyaXZlIGFmdGVyIGFub3RoZXIgc2Vjb25kLiIpCi0KLSAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm09PSdmcmVlYnNkNicsCi0gICAgICAgICdpbnRlciBwcm9jZXNzIHNpZ25hbHMgbm90IHJlbGlhYmxlIChkbyBub3QgbWl4IHdlbGwgd2l0aCB0aHJlYWRpbmcpICcKLSAgICAgICAgJ29uIGZyZWVic2Q2JykKLSAgICBkZWYgdGVzdF9tYWluKHNlbGYpOgotICAgICAgICAjIFRoaXMgZnVuY3Rpb24gc3Bhd25zIGEgY2hpbGQgcHJvY2VzcyB0byBpbnN1bGF0ZSB0aGUgbWFpbgotICAgICAgICAjIHRlc3QtcnVubmluZyBwcm9jZXNzIGZyb20gYWxsIHRoZSBzaWduYWxzLiBJdCB0aGVuCi0gICAgICAgICMgY29tbXVuaWNhdGVzIHdpdGggdGhhdCBjaGlsZCBwcm9jZXNzIG92ZXIgYSBwaXBlIGFuZAotICAgICAgICAjIHJlLXJhaXNlcyBpbmZvcm1hdGlvbiBhYm91dCBhbnkgZXhjZXB0aW9ucyB0aGUgY2hpbGQKLSAgICAgICAgIyByYWlzZXMuIFRoZSByZWFsIHdvcmsgaGFwcGVucyBpbiBzZWxmLnJ1bl90ZXN0KCkuCi0gICAgICAgIG9zX2RvbmVfciwgb3NfZG9uZV93ID0gb3MucGlwZSgpCi0gICAgICAgIHdpdGggY2xvc2luZyhvcy5mZG9wZW4ob3NfZG9uZV9yLCAncmInKSkgYXMgZG9uZV9yLCBcCi0gICAgICAgICAgICAgY2xvc2luZyhvcy5mZG9wZW4ob3NfZG9uZV93LCAnd2InKSkgYXMgZG9uZV93OgotICAgICAgICAgICAgY2hpbGQgPSBvcy5mb3JrKCkKLSAgICAgICAgICAgIGlmIGNoaWxkID09IDA6Ci0gICAgICAgICAgICAgICAgIyBJbiB0aGUgY2hpbGQgcHJvY2VzczsgcnVuIHRoZSB0ZXN0IGFuZCByZXBvcnQgcmVzdWx0cwotICAgICAgICAgICAgICAgICMgdGhyb3VnaCB0aGUgcGlwZS4KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRvbmVfci5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICMgSGF2ZSB0byBjbG9zZSBkb25lX3cgYWdhaW4gaGVyZSBiZWNhdXNlCi0gICAgICAgICAgICAgICAgICAgICMgZXhpdF9zdWJwcm9jZXNzKCkgd2lsbCBza2lwIHRoZSBlbmNsb3Npbmcgd2l0aCBibG9jay4KLSAgICAgICAgICAgICAgICAgICAgd2l0aCBjbG9zaW5nKGRvbmVfdyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ydW5fdGVzdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAodHJhY2ViYWNrLmZvcm1hdF9leGMoKSwgZG9uZV93KQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcChOb25lLCBkb25lX3cpCi0gICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBwcmludCgnVWggb2gsIHJhaXNlZCBmcm9tIHBpY2tsZS4nKQotICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBleGl0X3N1YnByb2Nlc3MoKQotCi0gICAgICAgICAgICBkb25lX3cuY2xvc2UoKQotICAgICAgICAgICAgIyBCbG9jayBmb3IgdXAgdG8gTUFYX0RVUkFUSU9OIHNlY29uZHMgZm9yIHRoZSB0ZXN0IHRvIGZpbmlzaC4KLSAgICAgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtkb25lX3JdLCBbXSwgW10sIHNlbGYuTUFYX0RVUkFUSU9OKQotICAgICAgICAgICAgaWYgZG9uZV9yIGluIHI6Ci0gICAgICAgICAgICAgICAgdGIgPSBwaWNrbGUubG9hZChkb25lX3IpCi0gICAgICAgICAgICAgICAgaWYgdGI6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCh0YikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3Mua2lsbChjaGlsZCwgc2lnbmFsLlNJR0tJTEwpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdUZXN0IGRlYWRsb2NrZWQgYWZ0ZXIgJWQgc2Vjb25kcy4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5NQVhfRFVSQVRJT04pCi0KLQotQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIFBvc2l4VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0cml2aWFsX3NpZ25hbF9oYW5kbGVyKHNlbGYsICphcmdzKToKICAgICAgICAgcGFzcwpAQCAtMjI0LDYgKzYyLDE1IEBACiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0hVUCwgaHVwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0hVUCksIGh1cCkKIAorICAgICMgSXNzdWUgMzg2NCwgdW5rbm93biBpZiB0aGlzIGFmZmVjdHMgZWFybGllciB2ZXJzaW9ucyBvZiBmcmVlYnNkIGFsc28KKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybT09J2ZyZWVic2Q2JywKKyAgICAgICAgJ2ludGVyIHByb2Nlc3Mgc2lnbmFscyBub3QgcmVsaWFibGUgKGRvIG5vdCBtaXggd2VsbCB3aXRoIHRocmVhZGluZykgJworICAgICAgICAnb24gZnJlZWJzZDYnKQorICAgIGRlZiB0ZXN0X2ludGVycHJvY2Vzc19zaWduYWwoc2VsZik6CisgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnc2lnbmFsaW50ZXJwcm9jdGVzdGVyLnB5JykKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vayhzY3JpcHQpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW5kb3dzIHNwZWNpZmljIikKIGNsYXNzIFdpbmRvd3NTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKaW5kZXggZGEyMGEzZC4uZDI0NWZkNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQpAQCAtMTQsNiArMTQsNyBAQAogaW1wb3J0IGVuY29kaW5ncwogaW1wb3J0IHVybGxpYi5yZXF1ZXN0CiBpbXBvcnQgdXJsbGliLmVycm9yCitpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5c2NvbmZpZwogZnJvbSBjb3B5IGltcG9ydCBjb3B5CkBAIC03NSw3ICs3Niw3IEBACiAgICAgZGVmIHRlc3RfaW5pdF9wYXRoaW5mbyhzZWxmKToKICAgICAgICAgZGlyX3NldCA9IHNpdGUuX2luaXRfcGF0aGluZm8oKQogICAgICAgICBmb3IgZW50cnkgaW4gW3NpdGUubWFrZXBhdGgocGF0aClbMV0gZm9yIHBhdGggaW4gc3lzLnBhdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhdGggYW5kIG9zLnBhdGguaXNkaXIocGF0aCldOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGF0aCBhbmQgb3MucGF0aC5leGlzdHMocGF0aCldOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbnRyeSwgZGlyX3NldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGZyb20gc3lzLnBhdGggbm90IGZvdW5kIGluIHNldCByZXR1cm5lZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJieSBfaW5pdF9wYXRoaW5mbygpOiAlcyIgJSAoZW50cnksIGRpcl9zZXQpKQpAQCAtMTM4LDEwICsxMzksOCBAQAogICAgICAgICAgICAgcmUuZXNjYXBlKG9zLnBhdGguam9pbihwdGhfZGlyLCBwdGhfZm4pKSkKICAgICAgICAgIyBYWFg6IGRpdHRvIHByZXZpb3VzIFhYWCBjb21tZW50LgogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ1RyYWNlYmFjaycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnSW1wb3J0RXJyb3InKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVycl9vdXQuZ2V0dmFsdWUoKSwgJ01vZHVsZU5vdEZvdW5kRXJyb3InKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbmRvd3MgZG9lcyBub3QgcmFpc2UgYW4gIgotICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBmb3IgZmlsZSBwYXRocyBjb250YWluaW5nIG51bGwgY2hhcmFjdGVycyIpCiAgICAgZGVmIHRlc3RfYWRkcGFja2FnZV9pbXBvcnRfYmFkX3B0aF9maWxlKHNlbGYpOgogICAgICAgICAjIElzc3VlIDUyNTgKICAgICAgICAgcHRoX2RpciwgcHRoX2ZuID0gc2VsZi5tYWtlX3B0aCgiYWJjXHgwMGRlZlxuIikKQEAgLTI0MywxMyArMjQyLDE0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKICAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbignL0xpYnJhcnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiUFlUSE9ORlJBTUVXT1JLIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0ZS1wYWNrYWdlcycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMV0sIHdhbnRlZCkKICAgICAgICAgZWxpZiBvcy5zZXAgPT0gJy8nOgogICAgICAgICAgICAgIyBPUyBYIG5vbi1mcmFtd2V3b3JrIGJ1aWxkcywgTGludXgsIEZyZWVCU0QsIGV0YwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDEpCi0gICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCAnbGliJywgJ3B5dGhvbicgKyBzeXMudmVyc2lvbls6M10sCisgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCAnbGliJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHl0aG9uJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzBdLCB3YW50ZWQpCiAgICAgICAgIGVsc2U6CkBAIC00NDYsMTAgKzQ0Niw5IEBACiAgICAgICAgIHBvcGVuID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctdicsICctYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHByaW50KHNldChzeXMubW9kdWxlcykpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnKQogICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKCkKLSAgICAgICAgc3Rkb3V0ID0gc3Rkb3V0LmRlY29kZSgndXRmLTgnKQotICAgICAgICBzdGRlcnIgPSBzdGRlcnIuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgIG1vZHVsZXMgPSBldmFsKHN0ZG91dCkKIAogICAgICAgICBzZWxmLmFzc2VydEluKCdzaXRlJywgbW9kdWxlcykKQEAgLTQ2OSw3ICs0NjgsMTAwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVhcHEnLCAnaXRlcnRvb2xzJywgJ2tleXdvcmQnLCAnb3BlcmF0b3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcHJsaWInLCAndHlwZXMnLCAnd2Vha3JlZicKICAgICAgICAgICAgICAgICAgICAgICAgICAgfS5kaWZmZXJlbmNlKHN5cy5idWlsdGluX21vZHVsZV9uYW1lcykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2R1bGVzLmludGVyc2VjdGlvbihjb2xsZWN0aW9uX21vZHMpLCBzdGRlcnIpCisgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI4MDk1CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnZGFyd2luJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlcy5pbnRlcnNlY3Rpb24oY29sbGVjdGlvbl9tb2RzKSwgc3RkZXJyKQorCisgICAgZGVmIHRlc3Rfc3RhcnR1cF9pbnRlcmFjdGl2ZWhvb2soc2VsZik6CisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLCAiJ19faW50ZXJhY3RpdmVob29rX18nIG5vdCBhZGRlZCBieSBzaXRlIikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rX2lzb2xhdGVkKHNlbGYpOgorICAgICAgICAjIGlzc3VlMjgxOTIgcmVhZGxpbmUgaXMgbm90IGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBpbiBpc29sYXRlZCBtb2RlCisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc3lzOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UociwgIidfX2ludGVyYWN0aXZlaG9va19fJyBhZGRlZCBpbiBpc29sYXRlZCBtb2RlIikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rX2lzb2xhdGVkX2V4cGxpY2l0KHNlbGYpOgorICAgICAgICAjIGlzc3VlMjgxOTIgcmVhZGxpbmUgY2FuIGJlIGV4cGxpY2l0bHkgZW5hYmxlZCBpbiBpc29sYXRlZCBtb2RlCisgICAgICAgIHIgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy1jJywKKyAgICAgICAgICAgICdpbXBvcnQgc2l0ZSwgc3lzOyBzaXRlLmVuYWJsZXJsY29tcGxldGVyKCk7IHN5cy5leGl0KGhhc2F0dHIoc3lzLCAiX19pbnRlcmFjdGl2ZWhvb2tfXyIpKSddKS53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIsICInX19pbnRlcmFjdGl2ZWhvb2tfXycgbm90IGFkZGVkIGJ5IGVuYWJsZXJsY29tcGxldGVyKCkiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jcmVhdGVfdW5kZXJwdGhfZXhlKHNlbGYsIGxpbmVzKToKKyAgICAgICAgZXhlX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MuZ2V0ZW52KCdURU1QJyksIG9zLnBhdGguc3BsaXQoc3lzLmV4ZWN1dGFibGUpWzFdKQorICAgICAgICBzaHV0aWwuY29weShzeXMuZXhlY3V0YWJsZSwgZXhlX2ZpbGUpCisKKyAgICAgICAgX3B0aF9maWxlID0gb3MucGF0aC5zcGxpdGV4dChleGVfZmlsZSlbMF0gKyAnLl9wdGgnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihfcHRoX2ZpbGUsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1mKQorICAgICAgICAgICAgcmV0dXJuIGV4ZV9maWxlCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIG9zLnVubGluayhfcHRoX2ZpbGUpCisgICAgICAgICAgICBvcy51bmxpbmsoZXhlX2ZpbGUpCisgICAgICAgICAgICByYWlzZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9jbGVhbnVwX3VuZGVycHRoX2V4ZShzZWxmLCBleGVfZmlsZSk6CisgICAgICAgIF9wdGhfZmlsZSA9IG9zLnBhdGguc3BsaXRleHQoZXhlX2ZpbGUpWzBdICsgJy5fcHRoJworICAgICAgICBvcy51bmxpbmsoX3B0aF9maWxlKQorICAgICAgICBvcy51bmxpbmsoZXhlX2ZpbGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgIm9ubHkgc3VwcG9ydGVkIG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X3VuZGVycHRoX25vc2l0ZV9maWxlKHNlbGYpOgorICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShlbmNvZGluZ3MuX19maWxlX18pKQorICAgICAgICBleGVfcHJlZml4ID0gb3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKQorICAgICAgICBleGVfZmlsZSA9IHNlbGYuX2NyZWF0ZV91bmRlcnB0aF9leGUoWworICAgICAgICAgICAgJ2Zha2UtcGF0aC1uYW1lJywKKyAgICAgICAgICAgICpbbGlicGF0aCBmb3IgXyBpbiByYW5nZSgyMDApXSwKKyAgICAgICAgICAgICcjIGNvbW1lbnQnLAorICAgICAgICAgICAgJ2ltcG9ydCBzaXRlJworICAgICAgICBdKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBlbnZbJ1BZVEhPTlBBVEgnXSA9ICdmcm9tLWVudicKKyAgICAgICAgICAgIGVudlsnUEFUSCddID0gJ3t9O3t9Jy5mb3JtYXQoZXhlX3ByZWZpeCwgb3MuZ2V0ZW52KCdQQVRIJykpCisgICAgICAgICAgICByYyA9IHN1YnByb2Nlc3MuY2FsbChbZXhlX2ZpbGUsICctYycsCisgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5leGl0KHN5cy5mbGFncy5ub19zaXRlIGFuZCAnCisgICAgICAgICAgICAgICAgJ2xlbihzeXMucGF0aCkgPiAyMDAgYW5kICcKKyAgICAgICAgICAgICAgICAnJXIgaW4gc3lzLnBhdGggYW5kICVyIGluIHN5cy5wYXRoIGFuZCAlciBub3QgaW4gc3lzLnBhdGgpJyAlICgKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdmYWtlLXBhdGgtbmFtZScpLAorICAgICAgICAgICAgICAgICAgICBsaWJwYXRoLAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2Zyb20tZW52JyksCisgICAgICAgICAgICAgICAgKV0sIGVudj1lbnYpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX3VuZGVycHRoX2V4ZShleGVfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLCAib25seSBzdXBwb3J0ZWQgb24gV2luZG93cyIpCisgICAgZGVmIHRlc3RfdW5kZXJwdGhfZmlsZShzZWxmKToKKyAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUoZW5jb2RpbmdzLl9fZmlsZV9fKSkKKyAgICAgICAgZXhlX3ByZWZpeCA9IG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSkKKyAgICAgICAgZXhlX2ZpbGUgPSBzZWxmLl9jcmVhdGVfdW5kZXJwdGhfZXhlKFsKKyAgICAgICAgICAgICdmYWtlLXBhdGgtbmFtZScsCisgICAgICAgICAgICAqW2xpYnBhdGggZm9yIF8gaW4gcmFuZ2UoMjAwKV0sCisgICAgICAgICAgICAnIyBjb21tZW50JywKKyAgICAgICAgICAgICdpbXBvcnQgc2l0ZScKKyAgICAgICAgXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgICAgIGVudlsnUFlUSE9OUEFUSCddID0gJ2Zyb20tZW52JworICAgICAgICAgICAgZW52WydQQVRIJ10gPSAne307e30nLmZvcm1hdChleGVfcHJlZml4LCBvcy5nZXRlbnYoJ1BBVEgnKSkKKyAgICAgICAgICAgIHJjID0gc3VicHJvY2Vzcy5jYWxsKFtleGVfZmlsZSwgJy1jJywKKyAgICAgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQobm90IHN5cy5mbGFncy5ub19zaXRlIGFuZCAnCisgICAgICAgICAgICAgICAgJyVyIGluIHN5cy5wYXRoIGFuZCAlciBpbiBzeXMucGF0aCBhbmQgJXIgbm90IGluIHN5cy5wYXRoKScgJSAoCisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAnZmFrZS1wYXRoLW5hbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgbGlicGF0aCwKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdmcm9tLWVudicpLAorICAgICAgICAgICAgICAgICldLCBlbnY9ZW52KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF91bmRlcnB0aF9leGUoZXhlX2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CmluZGV4IDg4ZGJmZGYuLjNlZWJlOTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQpAQCAtNTMsMTAgKzUzLDYgQEAKICAgICAgICAgd3JpdGVfbGluZShiJ0RBVEEnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB3cml0ZV9saW5lLCBiJ3NwYW1cclxuLlxyXG4nKQogCi0gICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfZGVmYXVsdF93YXJucyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKLQogICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2FuZF9lbmFibGVfU01UUFVURjhfcmFpc2VzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKICAgICAgICAgICAgIFZhbHVlRXJyb3IsCkBAIC0xMDgsMTAgKzEwNCw5IEBACiAgICAgICAgICAgICAgIiIiKSkKIAogICAgIGRlZiB0ZXN0X3Byb2Nlc3NfbWVzc2FnZV93aXRoX2RlY29kZV9kYXRhX2ZhbHNlKHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5EZWJ1Z2dpbmdTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCiAgICAgICAgIGNvbm4sIGFkZHIgPSBzZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkciwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIpCiAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5zZW5kX2RhdGEoY2hhbm5lbCwgYidGcm9tOiB0ZXN0XG5cbmhceGMzXHhhOWxsb1x4ZmZcbicpCiAgICAgICAgIHN0ZG91dCA9IHMuZ2V0dmFsdWUoKQpAQCAtMTc1LDEzICsxNzAsMTEgQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAiSVB2NiBub3QgZW5hYmxlZCIpCiAgICAgZGVmIHRlc3Rfc29ja2V0X3VzZXNfSVB2NihzZWxmKToKLSAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NUdjYsIDApLCAoc3VwcG9ydC5IT1NULCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NUdjYsIDApLCAoc3VwcG9ydC5IT1NULCAwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQ2KQogCiAgICAgZGVmIHRlc3Rfc29ja2V0X3VzZXNfSVB2NChzZWxmKToKLSAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKHN1cHBvcnQuSE9TVHY2LCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gc210cGQuU01UUFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKHN1cHBvcnQuSE9TVHY2LCAwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIuc29ja2V0LmZhbWlseSwgc29ja2V0LkFGX0lORVQpCiAKIApAQCAtMjA0LDE4ICsxOTcsMTggQEAKICAgICAgICAgY2hhbm5lbC5oYW5kbGVfcmVhZCgpCiAKICAgICBkZWYgdGVzdF9wYXJhbXNfcmVqZWN0ZWQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQotICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInUkNQVCB0bzogPGZvb0BleGFtcGxlLmNvbT4gZm9vPWJhcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgc2VsZi5lcnJvcl9yZXNwb25zZSkKIAogICAgIGRlZiB0ZXN0X25vdGhpbmdfYWNjZXB0ZWQoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQotICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInTUFJTCBmcm9tOiA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInUkNQVCB0bzogPGZvb0BleGFtcGxlLmNvbT4nKQpAQCAtMjU3LDkgKzI1MCw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKIAogICAgIGRlZiB0ZXN0X3dpdGhfZGVjb2RlX2RhdGFfZmFsc2Uoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSwgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQotICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGNoYW5uZWwsIGInRUhMTyBleGFtcGxlJykKICAgICAgICAgZm9yIGxpbmUgaW4gWwogICAgICAgICAgICAgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAgU01UUFVURjgnLApAQCAtNzY1LDEzICs3NTgsNiBAQAogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2FkZHIgPSAnc3BhbScKIAotICAgIGRlZiB0ZXN0X2RlY29kZV9kYXRhX2RlZmF1bHRfd2FybmluZyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCkpCi0gICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKLQogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICJJUHY2IG5vdCBlbmFibGVkIikKIGNsYXNzIFNNVFBEQ2hhbm5lbElQdjZUZXN0KFNNVFBEQ2hhbm5lbFRlc3QpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTg0NSwxMiArODMxLDkgQEAKICAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKICAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQogICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCi0gICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCi0gICAgICAgICMgU2V0IGRlY29kZV9kYXRhIHRvIEZhbHNlCi0gICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyLAotICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkcikKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKQEAgLTEwMTUsNSArOTk4LDE2IEBACiAgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUoYid0ZXN0XHJcbi4nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3RbMDozXSwgYicyNTAnKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7CisgICAgICAgICAgICAicHJvZ3JhbSIsICJEZXZudWxsIiwgIkRFQlVHU1RSRUFNIiwgIk5FV0xJTkUiLCAiQ09NTUFTUEFDRSIsCisgICAgICAgICAgICAiREFUQV9TSVpFX0RFRkFVTFQiLCAidXNhZ2UiLCAiT3B0aW9ucyIsICJwYXJzZWFyZ3MiLAorCisgICAgICAgIH0KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgc210cGQsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKaW5kZXggY2NlN2Q1Mi4uYTU2ZDhhNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKQEAgLTEzLDcgKzEzLDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGFycmF5Ci1pbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBjb250ZXh0bGliCiBmcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5CiBpbXBvcnQgc2lnbmFsCkBAIC02NiwxMCArNjUsMjIgQEAKICAgICAgICAgcy5jbG9zZSgpCiAgICAgcmV0dXJuIFRydWUKIAorZGVmIF9oYXZlX3NvY2tldF9hbGcoKToKKyAgICAiIiJDaGVjayB3aGV0aGVyIEFGX0FMRyBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQgb24gdGhpcyBob3N0LiIiIgorICAgIHRyeToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0FMRywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICBzLmNsb3NlKCkKKyAgICByZXR1cm4gVHJ1ZQorCiBIQVZFX1NPQ0tFVF9DQU4gPSBfaGF2ZV9zb2NrZXRfY2FuKCkKIAogSEFWRV9TT0NLRVRfUkRTID0gX2hhdmVfc29ja2V0X3JkcygpCiAKK0hBVkVfU09DS0VUX0FMRyA9IF9oYXZlX3NvY2tldF9hbGcoKQorCiAjIFNpemUgaW4gYnl0ZXMgb2YgdGhlIGludCB0eXBlCiBTSVpFT0ZfSU5UID0gYXJyYXkuYXJyYXkoImkiKS5pdGVtc2l6ZQogCkBAIC0xMTYxLDYgKzExNzIsMTcgQEAKICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNvY2suc2VuZCwgYiJzcGFtIikKIAorICAgIGRlZiB0ZXN0Q2xvc2VFeGNlcHRpb24oc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgc29ja2V0LnNvY2tldChmaWxlbm89c29jay5maWxlbm8oKSkuY2xvc2UoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgIyBXaW5zb2NrIGFwcGFyZW50bHkgcmFpc2VzIEVOT1RTT0NLCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVyci5lcnJubywgKGVycm5vLkVCQURGLCBlcnJuby5FTk9UU09DSykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImNsb3NlKCkgc2hvdWxkIHJhaXNlIEVCQURGL0VOT1RTT0NLIikKKwogICAgIGRlZiB0ZXN0TmV3QXR0cmlidXRlcyhzZWxmKToKICAgICAgICAgIyB0ZXN0aW5nIC5mYW1pbHksIC50eXBlIGFuZCAucHJvdG9jb2wKIApAQCAtMTIwNyw2ICsxMjI5LDIyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMuaW9jdGwsIC0xLCBOb25lKQogICAgICAgICBzLmlvY3RsKHNvY2tldC5TSU9fS0VFUEFMSVZFX1ZBTFMsICgxLCAxMDAsIDEwMCkpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsICJXaW5kb3dzIHNwZWNpZmljIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgJ1NJT19MT09QQkFDS19GQVNUX1BBVEgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTG9vcGJhY2sgZmFzdCBwYXRoIHN1cHBvcnQgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdCcpCisgICAgZGVmIHRlc3Rfc2lvX2xvb3BiYWNrX2Zhc3RfcGF0aChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcy5pb2N0bChzb2NrZXQuU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCwgVHJ1ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgV1NBRU9QTk9UU1VQUCA9IDEwMDQ1CisgICAgICAgICAgICBpZiBleGMud2luZXJyb3IgPT0gV1NBRU9QTk9UU1VQUDoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIIGlzIGRlZmluZWQgYnV0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb2Vzbid0IGltcGxlbWVudGVkIGluIHRoaXMgV2luZG93cyB2ZXJzaW9uIikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcy5pb2N0bCwgc29ja2V0LlNJT19MT09QQkFDS19GQVNUX1BBVEgsIE5vbmUpCisKICAgICBkZWYgdGVzdEdldGFkZHJpbmZvKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJ2xvY2FsaG9zdCcsIDgwKQpAQCAtMjg0Miw2ICsyODgwLDcgQEAKICAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKFttc2ddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKG1zZykpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIiwgInNlZSBpc3N1ZSAjMjQ3MjUiKQogICAgIGRlZiB0ZXN0RkRQYXNzRW1wdHkoc2VsZik6CiAgICAgICAgICMgVHJ5IHRvIHBhc3MgYW4gZW1wdHkgRkQgYXJyYXkuICBDYW4gcmVjZWl2ZSBlaXRoZXIgbm8gYXJyYXkKICAgICAgICAgIyBvciBhbiBlbXB0eSBhcnJheS4KQEAgLTQ1MTMsNiArNDU1MiwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQuZ2FpZXJyb3IsIE9TRXJyb3IpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhzb2NrZXQudGltZW91dCwgT1NFcnJvcikpCiAKKyAgICBkZWYgdGVzdF9zZXRibG9ja2luZ19pbnZhbGlkZmQoc2VsZik6CisgICAgICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpc3N1ZSAjMjg0NzEKKworICAgICAgICBzb2NrMCA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSwgMCkKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoCisgICAgICAgICAgICBzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLCAwLCBzb2NrMC5maWxlbm8oKSkKKyAgICAgICAgc29jazAuY2xvc2UoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc29jay5kZXRhY2gpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKToKKyAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoRmFsc2UpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICdsaW51eCcsICdMaW51eCBzcGVjaWZpYyB0ZXN0JykKIGNsYXNzIFRlc3RMaW51eEFic3RyYWN0TmFtZXNwYWNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTMyMCw2ICs1MzcyLDE4MyBAQAogICAgICAgICByZXR1cm4gZ2V0YXR0cihzb2NrLCAiX3NlbmRmaWxlX3VzZV9zZW5kZmlsZSIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQUxHLCAnQUZfQUxHIHJlcXVpcmVkJykKK2NsYXNzIExpbnV4S2VybmVsQ3J5cHRvQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRlc3RzIGZvciBBRl9BTEcKKyAgICBkZWYgY3JlYXRlX2FsZyhzZWxmLCB0eXAsIG5hbWUpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2suYmluZCgodHlwLCBuYW1lKSkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yIGFzIGU6CisgICAgICAgICAgICAjIHR5cGUgLyBhbGdvcml0aG0gaXMgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdChzdHIoZSksIHR5cCwgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzb2NrCisKKyAgICBkZWYgdGVzdF9zaGEyNTYoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gYnl0ZXMuZnJvbWhleCgiYmE3ODE2YmY4ZjAxY2ZlYTQxNDE0MGRlNWRhZTIyMjNiMDAzNjFhMzk2IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE3N2E5Y2I0MTBmZjYxZjIwMDE1YWQiKQorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnaGFzaCcsICdzaGEyNTYnKSBhcyBhbGdvOgorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYiJhYmMiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidhJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidiJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidjJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYicnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2htYWNfc2hhMShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBieXRlcy5mcm9taGV4KCJlZmZjZGY2YWU1ZWIyZmEyZDI3NDE2ZDVmMTg0ZGY5YzI1OWE3Yzc5IikKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ2hhc2gnLCAnaG1hYyhzaGExKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwgYiJKZWZlIikKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGIid2hhdCBkbyB5YSB3YW50IGZvciBub3RoaW5nPyIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KDUxMiksIGV4cGVjdGVkKQorCisgICAgIyBBbHRob3VnaCBpdCBzaG91bGQgd29yayB3aXRoIDMuMTkgYW5kIG5ld2VyIHRoZSB0ZXN0IGJsb2NrcyBvbgorICAgICMgVWJ1bnR1IDE1LjEwIHdpdGggS2VybmVsIDQuMi4wLTE5LgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oNCwgMykKKyAgICBkZWYgdGVzdF9hZXNfY2JjKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCcwNmE5MjE0MDM2YjhhMTViNTEyZTAzZDUzNDEyMDAwNicpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnM2RhZmJhNDI5ZDllYjQzMGI0MjJkYTgwMmM5ZmFjNDEnKQorICAgICAgICBtc2cgPSBiIlNpbmdsZSBibG9jayBtc2ciCisgICAgICAgIGNpcGhlcnRleHQgPSBieXRlcy5mcm9taGV4KCdlMzUzNzc5YzEwNzlhZWI4MjcwODk0MmRiZTc3MTgxYScpCisgICAgICAgIG1zZ2xlbiA9IGxlbihtc2cpCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdza2NpcGhlcicsICdjYmMoYWVzKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwga2V5KQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgY2lwaGVydGV4dCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW2NpcGhlcnRleHRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A9c29ja2V0LkFMR19PUF9ERUNSWVBULCBpdj1pdikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgbXNnKQorCisgICAgICAgICAgICAjIGxvbmcgbWVzc2FnZQorICAgICAgICAgICAgbXVsdGlwbGllciA9IDEwMjQKKyAgICAgICAgICAgIGxvbmdtc2cgPSBbbXNnXSAqIG11bHRpcGxpZXIKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKGxvbmdtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2KQorICAgICAgICAgICAgICAgIGVuYyA9IG9wLnJlY3YobXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVuYyksIG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW5jWzptc2dsZW5dLCBjaXBoZXJ0ZXh0KQorCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbZW5jXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wPXNvY2tldC5BTEdfT1BfREVDUllQVCwgaXY9aXYpCisgICAgICAgICAgICAgICAgZGVjID0gb3AucmVjdihtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGVjKSwgbXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjLCBtc2cgKiBtdWx0aXBsaWVyKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbig0LCAzKSAgIyBzZWUgdGVzdF9hZXNfY2JjCisgICAgZGVmIHRlc3RfYWVhZF9hZXNfZ2NtKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCdjOTM5Y2MxMzM5N2MxZDM3ZGU2YWUwZTFjYjdjNDIzYycpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnYjNkOGNjMDE3Y2JiODliMzllMGY2N2UyJykKKyAgICAgICAgcGxhaW4gPSBieXRlcy5mcm9taGV4KCdjM2IzYzQxZjExM2EzMWI3M2Q5YTVjZDQzMjEwMzA2OScpCisgICAgICAgIGFzc29jID0gYnl0ZXMuZnJvbWhleCgnMjQ4MjU2MDJiZDEyYTk4NGUwMDkyZDNlNDQ4ZWRhNWYnKQorICAgICAgICBleHBlY3RlZF9jdCA9IGJ5dGVzLmZyb21oZXgoJzkzZmU3ZDllOWJmZDEwMzQ4YTU2MDZlNWNhZmE3MzU0JykKKyAgICAgICAgZXhwZWN0ZWRfdGFnID0gYnl0ZXMuZnJvbWhleCgnMDAzMmExZGM4NWYxYzk3ODY5MjVhMmU3MWQ4MjcyZGQnKQorCisgICAgICAgIHRhZ2xlbiA9IGxlbihleHBlY3RlZF90YWcpCisgICAgICAgIGFzc29jbGVuID0gbGVuKGFzc29jKQorCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdhZWFkJywgJ2djbShhZXMpJykgYXMgYWxnbzoKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBrZXkpCisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0FFQURfQVVUSFNJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgdGFnbGVuKQorCisgICAgICAgICAgICAjIHNlbmQgYXNzb2MsIHBsYWluIGFuZCB0YWcgYnVmZmVyIGluIHNlcGFyYXRlIHN0ZXBzCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4sIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGFzc29jLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChwbGFpbiwgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYidceDAwJyAqIHRhZ2xlbikKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGFzc29jbGVuICsgbGVuKHBsYWluKSArIHRhZ2xlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2N0LCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90YWcsIHJlc1stdGFnbGVuOl0pCisKKyAgICAgICAgICAgICMgbm93IHdpdGggbXNnCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgbXNnID0gYXNzb2MgKyBwbGFpbiArIGInXHgwMCcgKiB0YWdsZW4KKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihhc3NvY2xlbiArIGxlbihwbGFpbikgKyB0YWdsZW4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBhbmMgZGF0YSBtYW51YWxseQorICAgICAgICAgICAgcGFja191aW50MzIgPSBzdHJ1Y3QuU3RydWN0KCdJJykucGFjaworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgcGxhaW4gKyBiJ1x4MDAnICogdGFnbGVuCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZygKKyAgICAgICAgICAgICAgICAgICAgW21zZ10sCisgICAgICAgICAgICAgICAgICAgIChbc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX09QLCBwYWNrX3VpbnQzMihzb2NrZXQuQUxHX09QX0VOQ1JZUFQpXSwKKyAgICAgICAgICAgICAgICAgICAgIFtzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfSVYsIHBhY2tfdWludDMyKGxlbihpdikpICsgaXZdLAorICAgICAgICAgICAgICAgICAgICAgW3NvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9BRUFEX0FTU09DTEVOLCBwYWNrX3VpbnQzMihhc3NvY2xlbildLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YobGVuKG1zZykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGRlY3J5cHQgYW5kIHZlcmlmeQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgZXhwZWN0ZWRfY3QgKyBleHBlY3RlZF90YWcKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0RFQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihsZW4obXNnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluLCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDQsIDMpICAjIHNlZSB0ZXN0X2Flc19jYmMKKyAgICBkZWYgdGVzdF9kcmJnX3ByX3NoYTI1NihzZWxmKToKKyAgICAgICAgIyBkZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQgZ2VuZXJhdG9yLCBwcmVkaWN0aW9uIHJlc2lzdGFuY2UsIHNoYTI1NgorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygncm5nJywgJ2RyYmdfcHJfc2hhMjU2JykgYXMgYWxnbzoKKyAgICAgICAgICAgIGV4dHJhX3NlZWQgPSBvcy51cmFuZG9tKDMyKQorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGV4dHJhX3NlZWQpCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgcm4gPSBvcC5yZWN2KDMyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJuKSwgMzIpCisKKyAgICBkZWYgdGVzdF9zZW5kbXNnX2FmYWxnX2FyZ3Moc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcob3A9Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygxKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgYXNzb2NsZW49Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGFzc29jbGVuPS0xKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC01MzQ2LDYgKzU1NzUsNyBAQAogICAgIHRlc3RzLmV4dGVuZChbVElQQ1Rlc3QsIFRJUENUaHJlYWRhYmxlVGVzdF0pCiAgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY0NBTlRlc3QsIENBTlRlc3RdKQogICAgIHRlc3RzLmV4dGVuZChbQmFzaWNSRFNUZXN0LCBSRFNUZXN0XSkKKyAgICB0ZXN0cy5hcHBlbmQoTGludXhLZXJuZWxDcnlwdG9BUEkpCiAgICAgdGVzdHMuZXh0ZW5kKFsKICAgICAgICAgQ21zZ01hY3JvVGVzdHMsCiAgICAgICAgIFNlbmRtc2dVRFBUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCAwZDBmODZmLi4xNDBhNmFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMywxMiArMywxMSBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHNlbGVjdAotaW1wb3J0IGVycm5vCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHNvY2tldHNlcnZlcgpAQCAtNDYsNyArNDUsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGltZWQgb3V0IG9uICVyIiAlIChzb2NrLCkpCiAKLWlmIEhBVkVfVU5JWF9TT0NLRVRTOgoraWYgSEFWRV9VTklYX1NPQ0tFVFMgYW5kIEhBVkVfRk9SS0lORzoKICAgICBjbGFzcyBGb3JraW5nVW5peFN0cmVhbVNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5Vbml4U3RyZWFtU2VydmVyKToKICAgICAgICAgcGFzcwpAQCAtNTgsNiArNTcsNyBAQAogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHNpbXBsZV9zdWJwcm9jZXNzKHRlc3RjYXNlKToKKyAgICAiIiJUZXN0cyB0aGF0IGEgY3VzdG9tIGNoaWxkIHByb2Nlc3MgaXMgbm90IHdhaXRlZCBvbiAoSXNzdWUgMTU0MDM4NikiIiIKICAgICBwaWQgPSBvcy5mb3JrKCkKICAgICBpZiBwaWQgPT0gMDoKICAgICAgICAgIyBEb24ndCByYWlzZSBhbiBleGNlcHRpb247IGl0IHdvdWxkIGJlIGNhdWdodCBieSB0aGUgdGVzdCBoYXJuZXNzLgpAQCAtMTAzLDcgKzEwMyw2IEBACiAgICAgICAgIGNsYXNzIE15U2VydmVyKHN2cmNscyk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBjbGFzcyBNeUhhbmRsZXIoaGRscmJhc2UpOgpAQCAtMjc5LDYgKzI3OCwxODIgQEAKICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgc2VydmVyLnNvY2tldC5maWxlbm8oKSkKKworCitjbGFzcyBFcnJvckhhbmRsZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIHNlcnZlcnMgcGFzcyBub3JtYWwgZXhjZXB0aW9ucyBmcm9tIHRoZSBoYW5kbGVyIHRvCisgICAgaGFuZGxlX2Vycm9yKCksIGFuZCB0aGF0IGV4aXRpbmcgZXhjZXB0aW9ucyBsaWtlIFN5c3RlbUV4aXQgYW5kCisgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgYXJlIG5vdCBwYXNzZWQuIiIiCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsodGVzdC5zdXBwb3J0LlRFU1RGTikKKworICAgIGRlZiB0ZXN0X3N5bmNfaGFuZGxlZChzZWxmKToKKyAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBkZWYgdGVzdF9zeW5jX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF90aHJlYWRpbmdfaGFuZGxlZChzZWxmKToKKyAgICAgICAgVGhyZWFkaW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfdGhyZWFkaW5nX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICBUaHJlYWRpbmdFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19oYW5kbGVkKHNlbGYpOgorICAgICAgICBGb3JraW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgZGVmIGNoZWNrX3Jlc3VsdChzZWxmLCBoYW5kbGVkKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4pIGFzIGxvZzoKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ0hhbmRsZXIgY2FsbGVkXG4nICsgJ0Vycm9yIGhhbmRsZWRcbicgKiBoYW5kbGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5yZWFkKCksIGV4cGVjdGVkKQorCisKK2NsYXNzIEJhc2VFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Y2VwdGlvbik6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gZXhjZXB0aW9uCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKEhPU1QsIDApLCBCYWRIYW5kbGVyKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihzZWxmLnNlcnZlcl9hZGRyZXNzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHNlbGYud2FpdF9kb25lKCkKKworICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0Vycm9yIGhhbmRsZWRcbicpCisKKyAgICBkZWYgd2FpdF9kb25lKHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQmFkSGFuZGxlcihzb2NrZXRzZXJ2ZXIuQmFzZVJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0hhbmRsZXIgY2FsbGVkXG4nKQorICAgICAgICByYWlzZSBzZWxmLnNlcnZlci5leGNlcHRpb24oJ1Rlc3QgZXJyb3InKQorCisKK2NsYXNzIFRocmVhZGluZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sCisgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KToKKyAgICAgICAgc2VsZi5kb25lID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqcG9zLCAqKmt3KQorCisgICAgZGVmIHNodXRkb3duX3JlcXVlc3Qoc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuc2h1dGRvd25fcmVxdWVzdCgqcG9zLCAqKmt3KQorICAgICAgICBzZWxmLmRvbmUuc2V0KCkKKworICAgIGRlZiB3YWl0X2RvbmUoc2VsZik6CisgICAgICAgIHNlbGYuZG9uZS53YWl0KCkKKworCitpZiBIQVZFX0ZPUktJTkc6CisgICAgY2xhc3MgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLCBCYXNlRXJyb3JUZXN0U2VydmVyKToKKyAgICAgICAgZGVmIHdhaXRfZG9uZShzZWxmKToKKyAgICAgICAgICAgIFtjaGlsZF0gPSBzZWxmLmFjdGl2ZV9jaGlsZHJlbgorICAgICAgICAgICAgb3Mud2FpdHBpZChjaGlsZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKKworCitjbGFzcyBTb2NrZXRXcml0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIGNsYXNzIEhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGUgPSBzZWxmLndmaWxlCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGVfZmlsZW5vID0gc2VsZi53ZmlsZS5maWxlbm8oKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlcXVlc3RfZmlsZW5vID0gc2VsZi5yZXF1ZXN0LmZpbGVubygpCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgKKyAgICAgICAgICAgIHNlcnZlci5hZGRyZXNzX2ZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNLCBzb2NrZXQuSVBQUk9UT19UQ1ApCisgICAgICAgIHdpdGggczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZXJ2ZXIud2ZpbGUsIGlvLkJ1ZmZlcmVkSU9CYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci53ZmlsZV9maWxlbm8sIHNlcnZlci5yZXF1ZXN0X2ZpbGVubykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdmaWxlLndyaXRlKCkgc2VuZHMgZGF0YSBpbW1lZGlhdGVseSwgYW5kIHRoYXQgaXQgZG9lcworICAgICAgICAjIG5vdCB0cnVuY2F0ZSBzZW5kcyB3aGVuIGludGVycnVwdGVkIGJ5IGEgVW5peCBzaWduYWwKKyAgICAgICAgcHRocmVhZF9raWxsID0gdGVzdC5zdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2lnbmFsLCAncHRocmVhZF9raWxsJykKKworICAgICAgICBjbGFzcyBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQxID0gc2VsZi53ZmlsZS53cml0ZShiJ3dyaXRlIGRhdGFcbicpCisgICAgICAgICAgICAgICAgIyBTaG91bGQgYmUgc2VudCBpbW1lZGlhdGVseSwgd2l0aG91dCByZXF1aXJpbmcgZmx1c2goKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlY2VpdmVkID0gc2VsZi5yZmlsZS5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgYmlnX2NodW5rID0gYidcMCcgKiB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQyID0gc2VsZi53ZmlsZS53cml0ZShiaWdfY2h1bmspCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBpbnRlcnJ1cHRlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHNpZ25hbF9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgaW50ZXJydXB0ZWQuc2V0KCkKKworICAgICAgICBvcmlnaW5hbCA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNpZ25hbF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR1VTUjEsIG9yaWdpbmFsKQorICAgICAgICByZXNwb25zZTEgPSBOb25lCisgICAgICAgIHJlY2VpdmVkMiA9IE5vbmUKKyAgICAgICAgbWFpbl90aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKworICAgICAgICBkZWYgcnVuX2NsaWVudCgpOgorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc2VydmVyLmFkZHJlc3NfZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0sCisgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fVENQKQorICAgICAgICAgICAgd2l0aCBzLCBzLm1ha2VmaWxlKCdyYicpIGFzIHJlYWRlcjoKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3Qoc2VydmVyLnNlcnZlcl9hZGRyZXNzKQorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJlc3BvbnNlMQorICAgICAgICAgICAgICAgIHJlc3BvbnNlMSA9IHJlYWRlci5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgcy5zZW5kYWxsKGInY2xpZW50IHJlc3BvbnNlXG4nKQorCisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQoMTAwKQorICAgICAgICAgICAgICAgICMgVGhlIG1haW4gdGhyZWFkIHNob3VsZCBub3cgYmUgYmxvY2tpbmcgaW4gYSBzZW5kKCkgc3lzY2FsbC4KKyAgICAgICAgICAgICAgICAjIEJ1dCBpbiB0aGVvcnksIGl0IGNvdWxkIGdldCBpbnRlcnJ1cHRlZCBieSBvdGhlciBzaWduYWxzLAorICAgICAgICAgICAgICAgICMgYW5kIHRoZW4gcmV0cmllZC4gU28ga2VlcCBzZW5kaW5nIHRoZSBzaWduYWwgaW4gYSBsb29wLCBpbgorICAgICAgICAgICAgICAgICMgY2FzZSBhbiBlYXJsaWVyIHNpZ25hbCBoYXBwZW5zIHRvIGJlIGRlbGl2ZXJlZCBhdCBhbgorICAgICAgICAgICAgICAgICMgaW5jb252ZW5pZW50IG1vbWVudC4KKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX2tpbGwobWFpbl90aHJlYWQsIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgICAgICAgICBpZiBpbnRlcnJ1cHRlZC53YWl0KHRpbWVvdXQ9ZmxvYXQoMSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBub25sb2NhbCByZWNlaXZlZDIKKyAgICAgICAgICAgICAgICByZWNlaXZlZDIgPSBsZW4ocmVhZGVyLnJlYWQoKSkKKworICAgICAgICBiYWNrZ3JvdW5kID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX2NsaWVudCkKKyAgICAgICAgYmFja2dyb3VuZC5zdGFydCgpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGJhY2tncm91bmQuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNlbnQxLCBsZW4ocmVzcG9uc2UxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZTEsIGInd3JpdGUgZGF0YVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVjZWl2ZWQsIGInY2xpZW50IHJlc3BvbnNlXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zZW50MiwgdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQyLCB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRSAtIDEwMCkKKwogCiBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKaW5kZXggYTVkMGViZi4uOThjY2FiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgY21wX3RvX2tleQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Nwd2QucHkgYi9MaWIvdGVzdC90ZXN0X3Nwd2QucHkKaW5kZXggYmVhN2FiMS4uZTg5M2YzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zcHdkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weQpAQCAtNTYsNSArNTYsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3B3ZC5nZXRzcG5hbSwgYnl0ZXNfbmFtZSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpIGFuZCBvcy5nZXRldWlkKCkgIT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICdub24tcm9vdCB1c2VyIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RTcHdkTm9uUm9vdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9nZXRzcG5hbV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG5hbWUgPSAnYmluJworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlcm1pc3Npb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc3B3ZC5nZXRzcG5hbShuYW1lKQorICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3B3ZCBlbnRyeSAlciBkb2Vzbid0IGV4aXN0OiAlcyIgJSAobmFtZSwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdbRXJybm8gMTNdIFBlcm1pc3Npb24gZGVuaWVkJykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCA1NTE1NTgzLi5kMjAzY2RkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtMjEsNiArMjEsMTMgQEAKIAogc3NsID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzc2wiKQogCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9oYXZlX3RocmVhZHMgPSBGYWxzZQorZWxzZToKKyAgICBfaGF2ZV90aHJlYWRzID0gVHJ1ZQorCiBQUk9UT0NPTFMgPSBzb3J0ZWQoc3NsLl9QUk9UT0NPTF9OQU1FUykKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIElTX0xJQlJFU1NMID0gc3NsLk9QRU5TU0xfVkVSU0lPTi5zdGFydHN3aXRoKCdMaWJyZVNTTCcpCkBAIC01NiwxMiArNjMsMTIgQEAKICMgVHdvIGtleXMgYW5kIGNlcnRzIHNpZ25lZCBieSB0aGUgc2FtZSBDQSAoZm9yIFNOSSB0ZXN0cykKIFNJR05FRF9DRVJURklMRSA9IGRhdGFfZmlsZSgia2V5Y2VydDMucGVtIikKIFNJR05FRF9DRVJURklMRTIgPSBkYXRhX2ZpbGUoImtleWNlcnQ0LnBlbSIpCi1TSUdOSU5HX0NBID0gZGF0YV9maWxlKCJweWNhY2VydC5wZW0iKQorIyBTYW1lIGNlcnRpZmljYXRlIGFzIHB5Y2FjZXJ0LnBlbSwgYnV0IHdpdGhvdXQgZXh0cmEgdGV4dCBpbiBmaWxlCitTSUdOSU5HX0NBID0gZGF0YV9maWxlKCJjYXBhdGgiLCAiY2VmZjE3MTAuMCIpCiAjIGNlcnQgd2l0aCBhbGwga2luZHMgb2Ygc3ViamVjdCBhbHQgbmFtZXMKIEFMTFNBTkZJTEUgPSBkYXRhX2ZpbGUoImFsbHNhbnMucGVtIikKIAogUkVNT1RFX0hPU1QgPSAic2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQiCi1SRU1PVEVfUk9PVF9DRVJUID0gZGF0YV9maWxlKCJzZWxmc2lnbmVkX3B5dGhvbnRlc3Rkb3RuZXQucGVtIikKIAogRU1QVFlDRVJUID0gZGF0YV9maWxlKCJudWxsY2VydC5wZW0iKQogQkFEQ0VSVCA9IGRhdGFfZmlsZSgiYmFkY2VydC5wZW0iKQpAQCAtNzMsNiArODAsMTIgQEAKIERIRklMRSA9IGRhdGFfZmlsZSgiZGgxMDI0LnBlbSIpCiBCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKKyMgTm90IGRlZmluZWQgaW4gYWxsIHZlcnNpb25zIG9mIE9wZW5TU0wKK09QX05PX0NPTVBSRVNTSU9OID0gZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCitPUF9TSU5HTEVfREhfVVNFID0gZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKK09QX1NJTkdMRV9FQ0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCkKK09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSA9IGdldGF0dHIoc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKKwogCiBkZWYgaGFuZGxlX2Vycm9yKHByZWZpeCk6CiAgICAgZXhjX2Zvcm1hdCA9ICcgJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSkpCkBAIC0xMzAsNiArMTQzLDIxIEBACiBuZWVkc19zbmkgPSB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfU05JLCAiU05JIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQogCiAKK2RlZiB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFMsICosCisgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2FfY2VydHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNpcGhlcnM9Tm9uZSwgY2VydGZpbGU9Tm9uZSwga2V5ZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2xfdmVyc2lvbikKKyAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBjZXJ0X3JlcXMKKyAgICBpZiBjYV9jZXJ0cyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FfY2VydHMpCisgICAgaWYgY2VydGZpbGUgaXMgbm90IE5vbmUgb3Iga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisgICAgaWYgY2lwaGVycyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQorICAgIHJldHVybiBjb250ZXh0LndyYXBfc29ja2V0KHNvY2ssICoqa3dhcmdzKQorCiBjbGFzcyBCYXNpY1NvY2tldFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnN0YW50cyhzZWxmKToKQEAgLTM1MCwxNyArMzc4LDE3IEBACiAgICAgICAgICMgSXNzdWUgIzc5NDM6IGFuIFNTTCBvYmplY3QgZG9lc24ndCBjcmVhdGUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoCiAgICAgICAgICMgaXRzZWxmLgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgc3MgPSB0ZXN0X3dyYXBfc29ja2V0KHMpCiAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoc3MpCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIFJlc291cmNlV2FybmluZykpOgogICAgICAgICAgICAgZGVsIHNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3dyYXBwZWRfdW5jb25uZWN0ZWQoc2VsZik6CiAgICAgICAgICMgTWV0aG9kcyBvbiBhbiB1bmNvbm5lY3RlZCBTU0xTb2NrZXQgcHJvcGFnYXRlIHRoZSBvcmlnaW5hbAogICAgICAgICAjIE9TRXJyb3IgcmFpc2UgYnkgdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4KICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2LCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdl9pbnRvLCBieXRlYXJyYXkoYid4JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2ZnJvbSwgMSkKQEAgLTM3NCwxMCArNDAyLDEwIEBACiAgICAgICAgIGZvciB0aW1lb3V0IGluIChOb25lLCAwLjAsIDUuMCk6CiAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKICAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lb3V0LCBzcy5nZXR0aW1lb3V0KCkpCiAKLSAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgZGVmIHRlc3RfZXJyb3JzX3NzbHdyYXAoc2VsZik6CiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNlcnRmaWxlIG11c3QgYmUgc3BlY2lmaWVkIiwKQEAgLTM4NywxMCArNDE1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0ZmlsZSBtdXN0IGJlIHNwZWNpZmllZCBmb3Igc2VydmVyLXNpZGUgb3BlcmF0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPSIiKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9IiIpCiAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2FuJ3QgY29ubmVjdCBpbiBzZXJ2ZXItc2lkZSBtb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywgY2VydGZpbGU9Tk9ORVhJU1RJTkdDRVJUKQpAQCAtNDEzLDcgKzQ0MSw3IEBACiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKIApAQCAtNjAwLDcgKzYyOCw3IEBACiAgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCiAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKICAgICAgICAgcy5jbG9zZSgpCkBAIC02MTAsMTUgKzYzOCwxNSBAQAogICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgogICAgICAgICAjIHVuY29ubmVjdGVkIHNob3VsZCByZXR1cm4gTm9uZSBmb3Iga25vd24gdHlwZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKICAgICAgICAgIyB0aGUgc2FtZSBmb3Igc2VydmVyLXNpZGUKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKIAogICAgIGRlZiB0ZXN0X2RlYWxsb2Nfd2FybihzZWxmKToKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKICAgICAgICAgciA9IHJlcHIoc3MpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSZXNvdXJjZVdhcm5pbmcpIGFzIGNtOgogICAgICAgICAgICAgc3MgPSBOb25lCkBAIC03MzcsNyArNzY1LDcgQEAKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKSBhcyBjeDoKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzLCBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkKKyAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQocywgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGN4LmV4Y2VwdGlvbiksICJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpIGFzIGN4OgpAQCAtODA5LDYgKzgzNywyMiBAQAogICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRmViICA5IDAwOjAwOjAwIDIwMDcgR01UIiwgMTE3MDk3OTIwMC4wKQogICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKSArICIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQogCisgICAgZGVmIHRlc3RfY29ubmVjdF9leF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VydmVyID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5jbG9zZSkKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlcnZlcikgICMgUmVzZXJ2ZSBwb3J0IGJ1dCBkb24ndCBsaXN0ZW4KKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKEhPU1QsIHBvcnQpKQorICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKKyAgICAgICAgIyBtYWNoaW5lcyBzb21ldGltZXMgcmV0dXJuIEVXT1VMREJMT0NLLgorICAgICAgICBlcnJvcnMgPSAoCisgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAorICAgICAgICAgICAgZXJybm8uRVdPVUxEQkxPQ0ssCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQorCiAKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTgzNCwxMyArODc4LDIyIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkIik6CiAgICAgICAgICAgICBjdHguc2V0X2NpcGhlcnMoIl4kOiw7PyonZG9yb3RoeXgiKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMSwgMCwgMiwgMCwgMCksICdPcGVuU1NMIHRvbyBvbGQnKQorICAgIGRlZiB0ZXN0X2dldF9jaXBoZXJzKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5zZXRfY2lwaGVycygnQUVTR0NNJykKKyAgICAgICAgbmFtZXMgPSBzZXQoZFsnbmFtZSddIGZvciBkIGluIGN0eC5nZXRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMyNTYtR0NNLVNIQTM4NCcsIG5hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMxMjgtR0NNLVNIQTI1NicsIG5hbWVzKQorCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9vcHRpb25zKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICMgT1BfQUxMIHwgT1BfTk9fU1NMdjIgfCBPUF9OT19TU0x2MyBpcyB0aGUgZGVmYXVsdCB2YWx1ZQogICAgICAgICBkZWZhdWx0ID0gKHNzbC5PUF9BTEwgfCBzc2wuT1BfTk9fU1NMdjIgfCBzc2wuT1BfTk9fU1NMdjMpCi0gICAgICAgIGlmIG5vdCBJU19MSUJSRVNTTCBhbmQgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgxLCAxLCAwKToKLSAgICAgICAgICAgIGRlZmF1bHQgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisgICAgICAgICMgU1NMQ29udGV4dCBhbHNvIGVuYWJsZXMgdGhlc2UgYnkgZGVmYXVsdAorICAgICAgICBkZWZhdWx0IHw9IChPUF9OT19DT01QUkVTU0lPTiB8IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSB8CisgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UgfCBPUF9TSU5HTEVfRUNESF9VU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdCwgY3R4Lm9wdGlvbnMpCiAgICAgICAgIGN0eC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQgfCBzc2wuT1BfTk9fVExTdjEsIGN0eC5vcHRpb25zKQpAQCAtMTIwNSwxNiArMTI1OCwyOSBAQAogICAgICAgICAgICAgc3RhdHNbIng1MDkiXSArPSAxCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5jZXJ0X3N0b3JlX3N0YXRzKCksIHN0YXRzKQogCisgICAgZGVmIF9hc3NlcnRfY29udGV4dF9vcHRpb25zKHNlbGYsIGN0eCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgaWYgT1BfTk9fQ09NUFJFU1NJT04gIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfTk9fQ09NUFJFU1NJT04pCisgICAgICAgIGlmIE9QX1NJTkdMRV9ESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfREhfVVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFKQorICAgICAgICBpZiBPUF9TSU5HTEVfRUNESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfRUNESF9VU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9FQ0RIX1VTRSkKKyAgICAgICAgaWYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpCisKICAgICBkZWYgdGVzdF9jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisKIAogICAgICAgICB3aXRoIG9wZW4oU0lHTklOR19DQSkgYXMgZjoKICAgICAgICAgICAgIGNhZGF0YSA9IGYucmVhZCgpCkBAIC0xMjIyLDQwICsxMjg4LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICBkZWYgdGVzdF9fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKQEAgLTEyNjMsMTIgKzEzMTMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY3R4LmNoZWNrX2hvc3RuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHB1cnBvc2U9c3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC0xMjkyLDYgKzEzNDIsMTcgQEAKICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X2NsaWVudF9zZXJ2ZXIoc2VsZik6CisgICAgICAgICMgUFJPVE9DT0xfVExTX0NMSUVOVCBoYXMgc2FuZSBkZWZhdWx0cworICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQorCisgICAgICAgICMgUFJPVE9DT0xfVExTX1NFUlZFUiBoYXMgZGlmZmVyZW50IGJ1dCBhbHNvIHNhbmUgZGVmYXVsdHMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKKwogCiBjbGFzcyBTU0xFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTM5NywxNDAgKzE0NTgsMTA1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCAxKQogCiAKLWNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwVW5sZXNzKF9oYXZlX3RocmVhZHMsICJOZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKK2NsYXNzIFNpbXBsZUJhY2tncm91bmRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyB0aGF0IGNvbm5lY3QgdG8gYSBzaW1wbGUgc2VydmVyIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkciA9IChIT1NULCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VydmVyLl9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUsIE5vbmUpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VydmVyX3NpZGUpCiAKLSAgICAgICAgICAgICMgdGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlcnZlcl9zaWRlKQogCi0gICAgICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZmFpbChzZWxmKToKKyAgICAgICAgIyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2Ugd2UgaGF2ZSBubyB2ZXJpZmljYXRpb24gY2VydHMuIENvbm5lY3Rpb24KKyAgICAgICAgIyBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbiBpbmRlcGVuZGVudAorICAgICAgICAjIHRlc3QgbWV0aG9kLgorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXgoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExMzI2OiBjaGVjayBjb25uZWN0X2V4KCkgaW1wbGVtZW50YXRpb24KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19jb25uZWN0X2V4KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTMyNjogbm9uLWJsb2NraW5nIGNvbm5lY3RfZXgoKSBzaG91bGQgYWxsb3cgaGFuZHNoYWtlCiAgICAgICAgICMgdG8gcHJvY2VlZCBhZnRlciB0aGUgc29ja2V0IGdldHMgcmVhZHkuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICByYyA9IHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAjIEVXT1VMREJMT0NLIHVuZGVyIFdpbmRvd3MsIEVJTlBST0dSRVNTIGVsc2V3aGVyZQorICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoMCwgZXJybm8uRUlOUFJPR1JFU1MsIGVycm5vLkVXT1VMREJMT0NLKSkKKyAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCisgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgICMgRVdPVUxEQkxPQ0sgdW5kZXIgV2luZG93cywgRUlOUFJPR1JFU1MgZWxzZXdoZXJlCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKDAsIGVycm5vLkVJTlBST0dSRVNTLCBlcnJuby5FV09VTERCTE9DSykpCi0gICAgICAgICAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdGltZW91dF9jb25uZWN0X2V4KHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMjA2NTogb24gYSB0aW1lb3V0LCBjb25uZWN0X2V4KCkgc2hvdWxkIHJldHVybiB0aGUgb3JpZ2luYWwKLSAgICAgICAgIyBlcnJubyAobWltaWNraW5nIHRoZSBiZWhhdmlvdXIgb2Ygbm9uLVNTTCBzb2NrZXRzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIGlmIHJjID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKGVycm5vLkVBR0FJTiwgZXJybm8uRVdPVUxEQkxPQ0spKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXhfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQ0KSkKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKLSAgICAgICAgICAgICAgICAjIG1hY2hpbmVzIHNvbWV0aW1lcyByZXR1cm4gRVdPVUxEQkxPQ0suCi0gICAgICAgICAgICAgICAgZXJyb3JzID0gKAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FV09VTERCTE9DSywKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyBTU0wgZXN0YWJsaXNoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgICMgU2FtZSBhcyB0ZXN0X2Nvbm5lY3QsIGJ1dCB3aXRoIGEgc2VwYXJhdGVseSBjcmVhdGVkIGNvbnRleHQKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBzZXJ2ZXIgaG9zdG5hbWUKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1SRU1PVEVfSE9TVCkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0Ci0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIFNhbWUgYXMgdGVzdF9jb25uZWN0LCBidXQgd2l0aCBhIHNlcGFyYXRlbHkgY3JlYXRlZCBjb250ZXh0CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICMgU2FtZSB3aXRoIGEgc2VydmVyIGhvc3RuYW1lCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0iZHVtbXkiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICMgVGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0X2ZhaWwoc2VsZik6CisgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzLiBDb25uZWN0aW9uCisgICAgICAgICMgZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4gaW5kZXBlbmRlbnQKKyAgICAgICAgIyB0ZXN0IG1ldGhvZC4KKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSBzZXJ2ZXIgY2VydGlmaWNhdGVzIHVzaW5nIHRoZSBgY2FwYXRoYCBhcmd1bWVudApAQCAtMTUzOCwxOTggKzE1NjQsMTMwIEBACiAgICAgICAgICMgT3BlblNTTCAwLjkuOG4gYW5kIDEuMC4wLCBhcyBhIHJlc3VsdCB0aGUgY2FwYXRoIGRpcmVjdG9yeSBtdXN0CiAgICAgICAgICMgY29udGFpbiBib3RoIHZlcnNpb25zIG9mIGVhY2ggY2VydGlmaWNhdGUgKHNhbWUgY29udGVudCwgZGlmZmVyZW50CiAgICAgICAgICMgZmlsZW5hbWUpIGZvciB0aGlzIHRlc3QgdG8gYmUgcG9ydGFibGUgYWNyb3NzIE9wZW5TU0wgcmVsZWFzZXMuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FkYXRhKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oUkVNT1RFX1JPT1RfQ0VSVCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKFNJR05JTkdfQ0EpIGFzIGY6CiAgICAgICAgICAgICBwZW0gPSBmLnJlYWQoKQogICAgICAgICBkZXIgPSBzc2wuUEVNX2NlcnRfdG9fREVSX2NlcnQocGVtKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9cGVtKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPXBlbSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQogCi0gICAgICAgICAgICAjIHNhbWUgd2l0aCBERVIKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9ZGVyKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgICMgc2FtZSB3aXRoIERFUgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1kZXIpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAibnQiLCAiQ2FuJ3QgdXNlIGEgc29ja2V0IGFzIGEgZmlsZSB1bmRlciBXaW5kb3dzIikKICAgICBkZWYgdGVzdF9tYWtlZmlsZV9jbG9zZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjNTIzODogY3JlYXRpbmcgYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggbWFrZWZpbGUoKSBzaG91bGRuJ3QKICAgICAgICAgIyBkZWxheSBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nICJyZWFsIHNvY2tldCIgKGhlcmUgdGVzdGVkIHdpdGggaXRzCiAgICAgICAgICMgZmlsZSBkZXNjcmlwdG9yLCBoZW5jZSBza2lwcGluZyB0aGUgdGVzdCB1bmRlciBXaW5kb3dzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgZmQgPSBzcy5maWxlbm8oKQotICAgICAgICAgICAgZiA9IHNzLm1ha2VmaWxlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBzcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgZmQgPSBzcy5maWxlbm8oKQorICAgICAgICBmID0gc3MubWFrZWZpbGUoKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBvcy5yZWFkKGZkLCAwKQorICAgICAgICAjIENsb3NpbmcgdGhlIFNTTCBzb2NrZXQgc2hvdWxkIGNsb3NlIHRoZSBmZCB0b28KKyAgICAgICAgc3MuY2xvc2UoKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgICMgQ2xvc2luZyB0aGUgU1NMIHNvY2tldCBzaG91bGQgY2xvc2UgdGhlIGZkIHRvbwotICAgICAgICAgICAgc3MuY2xvc2UoKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgY291bnQgPSAwCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk5lZWRlZCAlZCBjYWxscyB0byBkb19oYW5kc2hha2UoKSB0byBlc3RhYmxpc2ggc2Vzc2lvbi5cbiIgJSBjb3VudCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCisgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKLSAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKLSAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6Ci0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZiwgKnNlbGYuc2VydmVyX2FkZHIsIGNlcnQ9U0lHTklOR19DQSkKIAotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgICAgICNzaG91bGQgZmFpbAotICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCi0KLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Y2VydCkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3IgJXM6JXMgaXNcbiVzXG4iICUgKGhvc3QsIHBvcnQgLHBlbSkpCi0KLSAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShSRU1PVEVfSE9TVCwgNDQzLCBSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKLSAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKyAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZik6CisgICAgICAgICMgQ29ubmVjdGlvbiBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbgorICAgICAgICAjIGluZGVwZW5kZW50IHRlc3QgbWV0aG9kCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbChzZWxmLCAqc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2NpcGhlcnMoc2VsZik6Ci0gICAgICAgIHJlbW90ZSA9IChSRU1PVEVfSE9TVCwgNDQzKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHJlbW90ZVswXSk6Ci0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgIyBFcnJvciBjaGVja2luZyBjYW4gaGFwcGVuIGF0IGluc3RhbnRpYXRpb24gb3Igd2hlbiBjb25uZWN0aW5nCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgotICAgICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkgYXMgc29jazoKLSAgICAgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJeJDosOz8qJ2Rvcm90aHl4IikKLSAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLQotICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQotICAgICAgICAjIGNlcnRpZmljYXRlLgotICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAotICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKLSAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCi0gICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi0gICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKLSAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKLSAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9IkRFRkFVTFQiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICMgRXJyb3IgY2hlY2tpbmcgY2FuIGhhcHBlbiBhdCBpbnN0YW50aWF0aW9uIG9yIHdoZW4gY29ubmVjdGluZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSBhcyBzb2NrOgorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iXiQ6LDs/Kidkb3JvdGh5eCIpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9nZXRfY2FfY2VydHNfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIGNhcGF0aCBjZXJ0cyBhcmUgbG9hZGVkIG9uIHJlcXVlc3QKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUNBUEFUSCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQogCiAgICAgQG5lZWRzX3NuaQogICAgIGRlZiB0ZXN0X2NvbnRleHRfc2V0Z2V0KHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNvbnRleHQgb2YgYSBjb25uZWN0ZWQgc29ja2V0IGNhbiBiZSByZXBsYWNlZC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKLSAgICAgICAgICAgICAgICBzcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDIpCi0KLQotY2xhc3MgTmV0d29ya2VkQklPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHgyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgxKQorICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgyKQogCiAgICAgZGVmIHNzbF9pb19sb29wKHNlbGYsIHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIyBBIHNpbXBsZSBJTyBsb29wLiBDYWxsIGZ1bmMoKmFyZ3MpIGRlcGVuZGluZyBvbiB0aGUgZXJyb3Igd2UgZ2V0CkBAIC0xNzY1LDY0ICsxNzIzLDEyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb3VudCwgZnVuYy5fX25hbWVfXykpCiAgICAgICAgIHJldHVybiByZXQKIAotICAgIGRlZiB0ZXN0X2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHNvY2suY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UsIFJFTU9URV9IT1NUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQotICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKLSAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgotICAgICAgICAgICAgICAgICMgc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQgcHJvYmFibHkgc2h1dHMgZG93biB0aGUgVENQCi0gICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCBhbmQKLSAgICAgICAgICAgICAgICAjIHRoaXMgaXMgcmVwb3J0ZWQgYXMgU1NMX0VSUk9SX1NZU0NBTEwKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2RhdGEoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzb2NrLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UpCi0gICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKLSAgICAgICAgICAgIHJlcSA9IGInR0VUIC8gSFRUUC8xLjBcclxuXHJcbicKLSAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKLSAgICAgICAgICAgIGJ1ZiA9IHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoucmVhZCwgMTAyNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmWzo1XSwgYidIVFRQLycpCisgICAgZGVmIHRlc3RfYmlvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQorICAgICAgICBzb2NrLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICBjdHguY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlLCAnbG9jYWxob3N0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgorICAgICAgICAgICAgIyBJZiB0aGUgc2VydmVyIHNodXRzIGRvd24gdGhlIFRDUCBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhCisgICAgICAgICAgICAjIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCB0aGlzIGlzIHJlcG9ydGVkIGFzIFNTTF9FUlJPUl9TWVNDQUxMCisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvciwgc3Nsb2JqLndyaXRlLCBiJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9iaW9fcmVhZF93cml0ZV9kYXRhKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCisgICAgICAgIHNvY2suY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlKQorICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgcmVxID0gYidGT09cbicKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai53cml0ZSwgcmVxKQorICAgICAgICBidWYgPSBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnJlYWQsIDEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJ2Zvb1xuJykKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCiAKIAotdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBfaGF2ZV90aHJlYWRzID0gRmFsc2UKLWVsc2U6Ci0gICAgX2hhdmVfdGhyZWFkcyA9IFRydWUKK2NsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X3RpbWVvdXRfY29ubmVjdF9leChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTIwNjU6IG9uIGEgdGltZW91dCwgY29ubmVjdF9leCgpIHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsCisgICAgICAgICMgZXJybm8gKG1pbWlja2luZyB0aGUgYmVoYXZpb3VyIG9mIG5vbi1TU0wgc29ja2V0cykuCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgorICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCisgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0MykpCisgICAgICAgICAgICBpZiByYyA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ05lZWRzIElQdjYnKQorICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfaXB2NihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgnaXB2Ni5nb29nbGUuY29tJyk6CisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYsICdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZiwgJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKworICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQorICAgICAgICAjIGNlcnRpZmljYXRlLgorICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAorICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKKyAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCisgICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKKyAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKKyAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgorICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCisgICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisKK2RlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHRlc3QsIGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6CisgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQorICAgIGlmIG5vdCBwZW06CisgICAgICAgIHRlc3QuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisKKyAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPWNlcnQpCisgICAgaWYgbm90IHBlbToKKyAgICAgICAgdGVzdC5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKKyAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQorCitkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHRlc3QsIGhvc3QsIHBvcnQpOgorICAgIHRyeToKKyAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1DRVJURklMRSkKKyAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6CisgICAgICAgICNzaG91bGQgZmFpbAorICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCisgICAgZWxzZToKKyAgICAgICAgdGVzdC5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCisKKworaWYgX2hhdmVfdGhyZWFkczoKICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCiAKICAgICBjbGFzcyBUaHJlYWRlZEVjaG9TZXJ2ZXIodGhyZWFkaW5nLlRocmVhZCk6CkBAIC0xOTEwLDYgKzE5MzIsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdHJpcHBlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGVvZiwgc28gcXVpdCB0aGlzIGhhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmcgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5zc2xjb25uLnVud3JhcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWFueSB0ZXN0cyBzaHV0IHRoZSBUQ1AgY29ubmVjdGlvbiBkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aG91dCBhbiBTU0wgc2h1dGRvd24uIFRoaXMgY2F1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW53cmFwKCkgdG8gcmFpc2UgT1NFcnJvciB3aXRoIGVycm5vPTAhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNzbGNvbm4gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHN0cmlwcGVkID09IGInb3Zlcic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgpAQCAtMjAzNyw3ICsyMDY4LDcgQEAKICAgICAgICAgICAgIGNsYXNzIENvbm5lY3Rpb25IYW5kbGVyIChhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZCk6CiAKICAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgY2VydGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNzbC53cmFwX3NvY2tldChjb25uLCBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHRlc3Rfd3JhcF9zb2NrZXQoY29ubiwgc2VydmVyX3NpZGU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQogICAgICAgICAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZC5fX2luaXRfXyhzZWxmLCBzZWxmLnNvY2tldCkKQEAgLTIxNDUsNyArMjE3Niw4IEBACiAgICAgICAgICAgICBzZWxmLnNlcnZlci5jbG9zZSgpCiAKICAgICBkZWYgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgaW5kYXRhPWIiRk9PXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgTGF1bmNoIGEgc2VydmVyLCBjb25uZWN0IGEgY2xpZW50IHRvIGl0IGFuZCB0cnkgdmFyaW91cyByZWFkcwogICAgICAgICBhbmQgd3JpdGVzLgpAQCAtMjE1Niw3ICsyMTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgIHdpdGggc2VydmVyOgogICAgICAgICAgICAgd2l0aCBjbGllbnRfY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zbmlfbmFtZSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNuaV9uYW1lLCBzZXNzaW9uPXNlc3Npb24pIGFzIHM6CiAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBbaW5kYXRhLCBieXRlYXJyYXkoaW5kYXRhKSwgbWVtb3J5dmlldyhpbmRhdGEpXToKICAgICAgICAgICAgICAgICAgICAgaWYgY29ubmVjdGlvbmNoYXR0eToKQEAgLTIxODQsNiArMjIxNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICdjbGllbnRfYWxwbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpLAogICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCksCiAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogcy52ZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uX3JldXNlZCc6IHMuc2Vzc2lvbl9yZXVzZWQsCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uJzogcy5zZXNzaW9uLAogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgICBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMKQEAgLTIyNTksMTIgKzIyOTMsNTMgQEAKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCiAgICAgICAgICAgICBmb3IgcHJvdG9jb2wgaW4gUFJPVE9DT0xTOgorICAgICAgICAgICAgICAgIGlmIHByb3RvY29sIGluIHtzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc3NsLlBST1RPQ09MX1RMU19TRVJWRVJ9OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvY29sPXNzbC5fUFJPVE9DT0xfTkFNRVNbcHJvdG9jb2xdKToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHByb3RvY29sKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQogCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKQorICAgICAgICAgICAgIyBzZXJ2ZXJfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUyKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUiwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY2FsbGVkIGEgZnVuY3Rpb24geW91IHNob3VsZCBub3QgY2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZS5leGNlcHRpb24pKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjYWxsZWQgYSBmdW5jdGlvbiB5b3Ugc2hvdWxkIG5vdCBjYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlLmV4Y2VwdGlvbikpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhbGxlZCBhIGZ1bmN0aW9uIHlvdSBzaG91bGQgbm90IGNhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUuZXhjZXB0aW9uKSkKKworCiAgICAgICAgIGRlZiB0ZXN0X2dldHBlZXJjZXJ0KHNlbGYpOgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKQEAgLTIzOTgsNyArMjQ3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrLCBcCi0gICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKSBhcyBzOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTI0NDUsNyArMjUyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGMuY29ubmVjdCgoSE9TVCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyX2dvbmUud2FpdCgpCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9zb2NrID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgICAgICBzc2xfc29jayA9IHRlc3Rfd3JhcF9zb2NrZXQoYykKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjM1LDcgKzI3MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY2xpZW50OiAgcmVhZCAlciBmcm9tIHNlcnZlciwgc3RhcnRpbmcgVExTLi4uXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgY29ubiA9IHNzbC53cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uID0gdGVzdF93cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBlbGlmIGluZGF0YSA9PSBiIkVORFRMUyIgYW5kIG1zZy5zdGFydHN3aXRoKGIib2siKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRU5EVExTIG9rLCBzd2l0Y2ggYmFjayB0byBjbGVhciB0ZXh0CkBAIC0yNjk0LDcgKzI3NjksNyBAQAogICAgICAgICAgICAgaW5kYXRhID0gYiJGT09cbiIKICAgICAgICAgICAgIHNlcnZlciA9IEFzeW5jb3JlRWNob1NlcnZlcihDRVJURklMRSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKQorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkKICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKCcxMjcuMC4wLjEnLCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKApAQCAtMjcyNyw3ICsyODAyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMjc0NSwxMiArMjgyMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjb3VudCwgYWRkciA9IHMucmVjdmZyb21faW50byhiKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYls6Y291bnRdCiAKLSAgICAgICAgICAgICAgICAjIChuYW1lLCBtZXRob2QsIHdoZXRoZXIgdG8gZXhwZWN0IHN1Y2Nlc3MsICphcmdzKQorICAgICAgICAgICAgICAgICMgKG5hbWUsIG1ldGhvZCwgZXhwZWN0IHN1Y2Nlc3M/LCAqYXJncywgcmV0dXJuIHZhbHVlIGZ1bmMpCiAgICAgICAgICAgICAgICAgc2VuZF9tZXRob2RzID0gWwotICAgICAgICAgICAgICAgICAgICAoJ3NlbmQnLCBzLnNlbmQsIFRydWUsIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLAotICAgICAgICAgICAgICAgICAgICAoJ3NlbmRhbGwnLCBzLnNlbmRhbGwsIFRydWUsIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kJywgcy5zZW5kLCBUcnVlLCBbXSwgbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0sIGxlbiksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZGFsbCcsIHMuc2VuZGFsbCwgVHJ1ZSwgW10sIGxhbWJkYSB4OiBOb25lKSwKICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgIyAobmFtZSwgbWV0aG9kLCB3aGV0aGVyIHRvIGV4cGVjdCBzdWNjZXNzLCAqYXJncykKICAgICAgICAgICAgICAgICByZWN2X21ldGhvZHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICgncmVjdicsIHMucmVjdiwgVHJ1ZSwgW10pLAogICAgICAgICAgICAgICAgICAgICAoJ3JlY3Zmcm9tJywgcy5yZWN2ZnJvbSwgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLApAQCAtMjc1OSwxMCArMjgzNSwxMyBAQAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICBkYXRhX3ByZWZpeCA9ICJQUkVGSVhfIgogCi0gICAgICAgICAgICAgICAgZm9yIG1ldGhfbmFtZSwgc2VuZF9tZXRoLCBleHBlY3Rfc3VjY2VzcywgYXJncyBpbiBzZW5kX21ldGhvZHM6CisgICAgICAgICAgICAgICAgZm9yIChtZXRoX25hbWUsIHNlbmRfbWV0aCwgZXhwZWN0X3N1Y2Nlc3MsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICByZXRfdmFsX21ldGgpIGluIHNlbmRfbWV0aG9kczoKICAgICAgICAgICAgICAgICAgICAgaW5kYXRhID0gKGRhdGFfcHJlZml4ICsgbWV0aF9uYW1lKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9tZXRoKGluZGF0YSwgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzZW5kX21ldGgoaW5kYXRhLCAqYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJzZW5kaW5nIHdpdGgge30iLmZvcm1hdChtZXRoX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgcmV0X3ZhbF9tZXRoKGluZGF0YSksIG1zZz1tc2cpCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRkYXRhID0gcy5yZWFkKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dGRhdGEgIT0gaW5kYXRhLmxvd2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKApAQCAtMjg0Nyw3ICsyOTI2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUpCiAgICAgICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCisgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQogCiAgICAgICAgICAgICAjIHJlY3YvcmVhZCgwKSBzaG91bGQgcmV0dXJuIG5vIGRhdGEKQEAgLTI4NjksNyArMjk0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTI5MjMsMTIgKzMwMDIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgYy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICAgICAgIyBXaWxsIGF0dGVtcHQgaGFuZHNoYWtlIGFuZCB0aW1lIG91dAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNvY2tldC50aW1lb3V0LCAidGltZWQgb3V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldCwgYykKICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICBjLmNsb3NlKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgICAgICAgICBjID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgIGMgPSB0ZXN0X3dyYXBfc29ja2V0KGMpCiAgICAgICAgICAgICAgICAgICAgIGMuc2V0dGltZW91dCgwLjIpCiAgICAgICAgICAgICAgICAgICAgICMgV2lsbCBhdHRlbXB0IGhhbmRzaGFrZSBhbmQgdGltZSBvdXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzb2NrZXQudGltZW91dCwgInRpbWVkIG91dCIsCkBAIC0yOTUxLDYgKzMwMzAsNyBAQAogICAgICAgICAgICAgaG9zdCA9ICIxMjcuMC4wLjEiCiAgICAgICAgICAgICBwb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VydmVyKQogICAgICAgICAgICAgc2VydmVyID0gY29udGV4dC53cmFwX3NvY2tldChzZXJ2ZXIsIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLnNlcnZlcl9zaWRlKQogCiAgICAgICAgICAgICBldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICAgICAgcmVtb3RlID0gTm9uZQpAQCAtMzA1Myw3ICszMTMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMzA3OCw3ICszMTU4LDcgQEAKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAogICAgICAgICAgICAgICAgICMgbm93LCBhZ2FpbgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTMzODgsNiArMzQ2OCwxMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZGZpbGUoZmlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5yZWN2KDEwMjQpLCBURVNUX0RBVEEpCiAKKyAgICAgICAgZGVmIHRlc3Rfc2Vzc2lvbihzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisKKyAgICAgICAgICAgICMgZmlyc3QgY29ubmVjdGlvbiB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlc3Npb24gPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzZXNzaW9uLnRpbWUsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aW1lb3V0LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24uaGFzX3RpY2tldCkKKyAgICAgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+ICgxLCAwLCAxKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aWNrZXRfbGlmZXRpbWVfaGludCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDApCisKKyAgICAgICAgICAgICMgcmV1c2Ugc2Vzc2lvbgorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LCBzZXNzaW9uPXNlc3Npb24pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMiA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc2lvbjIuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb24yLCBzZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzZXNzaW9uMiwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKworICAgICAgICAgICAgIyBhbm90aGVyIG9uZSB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMyA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2Vzc2lvbjMuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlc3Npb24zLCBzZXNzaW9uKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAxKQorCisgICAgICAgICAgICAjIHJldXNlIHNlc3Npb24gYWdhaW4KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgc2Vzc2lvbj1zZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjQgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb240LmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uNCwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKyAgICAgICAgICAgIHNlc3Nfc3RhdCA9IHNlcnZlcl9jb250ZXh0LnNlc3Npb25fc3RhdHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2FjY2VwdCddLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2hpdHMnXSwgMikKKworICAgICAgICBkZWYgdGVzdF9zZXNzaW9uX2hhbmRsaW5nKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisKKyAgICAgICAgICAgIGNvbnRleHQyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQyLnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKworICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9Y29udGV4dCwgY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBzZXNzaW9uIGlzIE5vbmUgYmVmb3JlIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IHMuc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLCAnVmFsdWUgaXMgbm90IGEgU1NMU2Vzc2lvbi4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZS4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gc2V0IHNlc3Npb24gYmVmb3JlIGhhbmRzaGFrZSBhbmQgYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGNvbm5lY3Rpb24gd2FzIGVzdGFibGlzaGVkCisgICAgICAgICAgICAgICAgICAgIHMuc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBUcnVlKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0Mi53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHJlLXVzZSBzZXNzaW9uIHdpdGggYSBkaWZmZXJlbnQgU1NMQ29udGV4dAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZXNzaW9uIHJlZmVycyB0byBhIGRpZmZlcmVudCBTU0xDb250ZXh0LicpCisKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0zNDAwLDcgKzM1ODUsNyBAQAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICApCkBAIC0zNDIyLDE4ICszNjA3LDIwIEBACiAgICAgICAgICAgICBwYXNzCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gWwotICAgICAgICBDRVJURklMRSwgUkVNT1RFX1JPT1RfQ0VSVCwgQllURVNfQ0VSVEZJTEUsCisgICAgICAgIENFUlRGSUxFLCBCWVRFU19DRVJURklMRSwKICAgICAgICAgT05MWUNFUlQsIE9OTFlLRVksIEJZVEVTX09OTFlDRVJULCBCWVRFU19PTkxZS0VZLAogICAgICAgICBTSUdORURfQ0VSVEZJTEUsIFNJR05FRF9DRVJURklMRTIsIFNJR05JTkdfQ0EsCiAgICAgICAgIEJBRENFUlQsIEJBREtFWSwgRU1QVFlDRVJUXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlICVyIiAlIGZpbGVuYW1lKQogCi0gICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0c10KKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0cywKKyAgICAgICAgU2ltcGxlQmFja2dyb3VuZFRlc3RzLAorICAgIF0KIAogICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkVGVzdHMpCi0gICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRCSU9UZXN0cykKIAogICAgIGlmIF9oYXZlX3RocmVhZHM6CiAgICAgICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5CmluZGV4IDAwODlhZTguLjRiM2ZkMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXRpc3RpY3MucHkKQEAgLTIxLDYgKzIxLDEwIEBACiAKICMgPT09IEhlbHBlciBmdW5jdGlvbnMgYW5kIGNsYXNzID09PQogCitkZWYgc2lnbih4KToKKyAgICAiIiJSZXR1cm4gLTEuMCBmb3IgbmVnYXRpdmVzLCBpbmNsdWRpbmcgLTAuMCwgb3RoZXJ3aXNlICsxLjAuIiIiCisgICAgcmV0dXJuIG1hdGguY29weXNpZ24oMSwgeCkKKwogZGVmIF9uYW5fZXF1YWwoYSwgYik6CiAgICAgIiIiUmV0dXJuIFRydWUgaWYgYSBhbmQgYiBhcmUgYm90aCB0aGUgc2FtZSBraW5kIG9mIE5BTi4KIApAQCAtMjY0LDYgKzI2OCwxMyBAQAogIyA9PT0gVGVzdCB0aGUgaGVscGVycyA9PT0KICMgPT09PT09PT09PT09PT09PT09PT09PT09CiAKK2NsYXNzIFRlc3RTaWduKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIGhlbHBlciBmdW5jdGlvbiBzaWduKCkgd29ya3MgY29ycmVjdGx5LiIiIgorICAgIGRlZiB0ZXN0WmVyb2VzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzaWduZWQgemVyb2VzIHJlcG9ydCB0aGVpciBzaWduIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduKDAuMCksICsxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ24oLTAuMCksIC0xKQorCiAKICMgLS0tIFRlc3RzIGZvciBhcHByb3hfZXF1YWwgLS0tCiAKQEAgLTY1OSw3ICs2NzAsNyBAQAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PTyBhbmQgYWJvdmUiKQogICAgIGRlZiB0ZXN0X2RvY190ZXN0cyhzZWxmKToKLSAgICAgICAgZmFpbGVkLCB0cmllZCA9IGRvY3Rlc3QudGVzdG1vZChzdGF0aXN0aWNzKQorICAgICAgICBmYWlsZWQsIHRyaWVkID0gZG9jdGVzdC50ZXN0bW9kKHN0YXRpc3RpY3MsIG9wdGlvbmZsYWdzPWRvY3Rlc3QuRUxMSVBTSVMpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0cmllZCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWlsZWQsIDApCiAKQEAgLTcwMiw5ICs3MTMsOSBAQAogICAgIGRlZiB0ZXN0X2RlY2ltYWwoc2VsZik6CiAgICAgICAgIEQgPSBEZWNpbWFsCiAgICAgICAgIF9leGFjdF9yYXRpbyA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjAuMTI1IikpLCAoMTI1LCAxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXhhY3RfcmF0aW8oRCgiMTIuMzQ1IikpLCAoMTIzNDUsIDEwMDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCItMS45OCIpKSwgKC0xOTgsIDEwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjAuMTI1IikpLCAoMSwgOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjEyLjM0NSIpKSwgKDI0NjksIDIwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIi0xLjk4IikpLCAoLTk5LCA1MCkpCiAKICAgICBkZWYgdGVzdF9pbmYoc2VsZik6CiAgICAgICAgIElORiA9IGZsb2F0KCJJTkYiKQpAQCAtNzQzLDE4ICs3NTQsMTggQEAKIAogCiBjbGFzcyBEZWNpbWFsVG9SYXRpb1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVGVzdCBfZGVjaW1hbF90b19yYXRpbyBwcml2YXRlIGZ1bmN0aW9uLgorICAgICMgVGVzdCBfZXhhY3RfcmF0aW8gcHJpdmF0ZSBmdW5jdGlvbi4KIAogICAgIGRlZiB0ZXN0X2luZmluaXR5KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBJTkZzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KICAgICAgICAgaW5mID0gRGVjaW1hbCgnSU5GJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKGluZiksIChpbmYsIE5vbmUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oLWluZiksICgtaW5mLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhpbmYpLCAoaW5mLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9leGFjdF9yYXRpbygtaW5mKSwgKC1pbmYsIE5vbmUpKQogCiAgICAgZGVmIHRlc3RfbmFuKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBOQU5zIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KICAgICAgICAgZm9yIG5hbiBpbiAoRGVjaW1hbCgnTkFOJyksIERlY2ltYWwoJ3NOQU4nKSk6Ci0gICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8obmFuKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhuYW4pCiAgICAgICAgICAgICAjIEJlY2F1c2UgTkFOcyBhbHdheXMgY29tcGFyZSBub24tZXF1YWwsIHdlIGNhbm5vdCB1c2UgYXNzZXJ0RXF1YWwuCiAgICAgICAgICAgICAjIE5vciBjYW4gd2UgdXNlIGFuIGlkZW50aXR5IHRlc3QsIGFzIHdlIGRvbid0IGd1YXJhbnRlZSBhbnl0aGluZwogICAgICAgICAgICAgIyBhYm91dCB0aGUgb2JqZWN0IGlkZW50aXR5LgpAQCAtNzY3LDMwICs3NzgsMzAgQEAKICAgICAgICAgZm9yIGQgaW4gbnVtYmVyczoKICAgICAgICAgICAgICMgRmlyc3QgdGVzdCBwb3NpdGl2ZSBkZWNpbWFscy4KICAgICAgICAgICAgIGFzc2VydCBkID4gMAotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKGQpCisgICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKGQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChudW0sIDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZGVuLCAwKQogICAgICAgICAgICAgIyBUaGVuIHRlc3QgbmVnYXRpdmUgZGVjaW1hbHMuCi0gICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oLWQpCisgICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKC1kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobnVtLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbiwgMCkKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2V4cG9uZW50KHNlbGYpOgogICAgICAgICAjIFRlc3QgcmVzdWx0IHdoZW4gdGhlIGV4cG9uZW50IGlzIG5lZ2F0aXZlLgotICAgICAgICB0ID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIwLjEyMzQiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTIzNCwgMTAwMDApKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMC4xMjM0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDYxNywgNTAwMCkpCiAKICAgICBkZWYgdGVzdF9wb3NpdGl2ZV9leHBvbmVudChzZWxmKToKICAgICAgICAgIyBUZXN0IHJlc3VsdHMgd2hlbiB0aGUgZXhwb25lbnQgaXMgcG9zaXRpdmUuCi0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjEuMjM0ZTciKSkKKyAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKERlY2ltYWwoIjEuMjM0ZTciKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTIzNDAwMDAsIDEpKQogCiAgICAgZGVmIHRlc3RfcmVncmVzc2lvbl8yMDUzNihzZWxmKToKICAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDIwNTM2LgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjA1MzYKLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMWUyIikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxZTIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTAwLCAxKSkKLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMS40N2U1IikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxLjQ3ZTUiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTQ3MDAwLCAxKSkKIAogCkBAIC05NzEsNiArOTgyLDM0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoX25hbl9lcXVhbCh4LCBuYW4pKQogCiAKK2NsYXNzIEZhaWxOZWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IF9mYWlsX25lZyBwcml2YXRlIGZ1bmN0aW9uLiIiIgorCisgICAgZGVmIHRlc3RfcGFzc190aHJvdWdoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZC4KKyAgICAgICAgdmFsdWVzID0gWzEsIDIuMCwgRnJhY3Rpb24oMyksIERlY2ltYWwoNCldCisgICAgICAgIG5ldyA9IGxpc3Qoc3RhdGlzdGljcy5fZmFpbF9uZWcodmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXMsIG5ldykKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlc19yYWlzZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgbmVnYXRpdmVzIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgZm9yIHggaW4gWzEsIDIuMCwgRnJhY3Rpb24oMyksIERlY2ltYWwoNCldOgorICAgICAgICAgICAgc2VxID0gWy14XQorICAgICAgICAgICAgaXQgPSBzdGF0aXN0aWNzLl9mYWlsX25lZyhzZXEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvciwgbmV4dCwgaXQpCisKKyAgICBkZWYgdGVzdF9lcnJvcl9tc2coc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgZ2l2ZW4gZXJyb3IgbWVzc2FnZSBpcyB1c2VkLgorICAgICAgICBtc2cgPSAiYmFkbmVzcyAjJWQiICUgcmFuZG9tLnJhbmRpbnQoMTAwMDAsIDk5OTk5KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KHN0YXRpc3RpY3MuX2ZhaWxfbmVnKFstMV0sIG1zZykpCisgICAgICAgIGV4Y2VwdCBzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvciBhcyBlOgorICAgICAgICAgICAgZXJybXNnID0gZS5hcmdzWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIGV4Y2VwdGlvbiwgYnV0IGl0IGRpZG4ndCBoYXBwZW4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm1zZywgbXNnKQorCisKICMgPT09IFRlc3RzIGZvciBwdWJsaWMgZnVuY3Rpb25zID09PQogCiBjbGFzcyBVbml2YXJpYXRlQ29tbW9uTWl4aW46CkBAIC0xMDgyLDEzICsxMTIxLDEzIEBACiAgICAgTm90IGFsbCB0ZXN0cyB0byBkbyB3aXRoIHR5cGVzIG5lZWQgZ28gaW4gdGhpcyBjbGFzcy4gT25seSB0aG9zZSB0aGF0CiAgICAgcmVseSBvbiB0aGUgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBzYW1lIHR5cGUgYXMgaXRzIGlucHV0IGRhdGEuCiAgICAgIiIiCi0gICAgZGVmIHRlc3RfdHlwZXNfY29uc2VydmVkKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBmdW5jdGlvbnMga2VlcHMgdGhlIHNhbWUgdHlwZSBhcyB0aGVpciBkYXRhIHBvaW50cy4KLSAgICAgICAgIyAoRXhjbHVkZXMgbWl4ZWQgZGF0YSB0eXBlcy4pIFRoaXMgb25seSB0ZXN0cyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuCi0gICAgICAgICMgcmVzdWx0LCBub3QgdGhlIHZhbHVlLgorICAgIGRlZiBwcmVwYXJlX3R5cGVzX2Zvcl9jb25zZXJ2YXRpb25fdGVzdChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB0eXBlcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gYmUgY29uc2VydmVkLiIiIgogICAgICAgICBjbGFzcyBNeUZsb2F0KGZsb2F0KToKICAgICAgICAgICAgIGRlZiBfX3RydWVkaXZfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3RydWVkaXZfXyhvdGhlcikpCisgICAgICAgICAgICBkZWYgX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZShzZWxmKShzdXBlcigpLl9fcnRydWVkaXZfXyhvdGhlcikpCiAgICAgICAgICAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3N1Yl9fKG90aGVyKSkKICAgICAgICAgICAgIGRlZiBfX3JzdWJfXyhzZWxmLCBvdGhlcik6CkBAIC0xMDk4LDkgKzExMzcsMTQgQEAKICAgICAgICAgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZShzZWxmKShzdXBlcigpLl9fYWRkX18ob3RoZXIpKQogICAgICAgICAgICAgX19yYWRkX18gPSBfX2FkZF9fCisgICAgICAgIHJldHVybiAoZmxvYXQsIERlY2ltYWwsIEZyYWN0aW9uLCBNeUZsb2F0KQogCisgICAgZGVmIHRlc3RfdHlwZXNfY29uc2VydmVkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBmdW5jdGlvbnMga2VlcHMgdGhlIHNhbWUgdHlwZSBhcyB0aGVpciBkYXRhIHBvaW50cy4KKyAgICAgICAgIyAoRXhjbHVkZXMgbWl4ZWQgZGF0YSB0eXBlcy4pIFRoaXMgb25seSB0ZXN0cyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuCisgICAgICAgICMgcmVzdWx0LCBub3QgdGhlIHZhbHVlLgogICAgICAgICBkYXRhID0gc2VsZi5wcmVwYXJlX2RhdGEoKQotICAgICAgICBmb3Iga2luZCBpbiAoZmxvYXQsIERlY2ltYWwsIEZyYWN0aW9uLCBNeUZsb2F0KToKKyAgICAgICAgZm9yIGtpbmQgaW4gc2VsZi5wcmVwYXJlX3R5cGVzX2Zvcl9jb25zZXJ2YXRpb25fdGVzdCgpOgogICAgICAgICAgICAgZCA9IFtraW5kKHgpIGZvciB4IGluIGRhdGFdCiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmZ1bmMoZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyZXN1bHQpLCBraW5kKQpAQCAtMTI3NSwxMiArMTMxOSwxNiBAQAogICAgICAgICBmb3IgeCBpbiAoMjMsIDQyLjUsIDEuM2UxNSwgRnJhY3Rpb24oMTUsIDE5KSwgRGVjaW1hbCgnMC4yOCcpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFt4XSksIHgpCiAKKyAgICBkZWYgcHJlcGFyZV92YWx1ZXNfZm9yX3JlcGVhdGVkX3NpbmdsZV90ZXN0KHNlbGYpOgorICAgICAgICByZXR1cm4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC45NzEyJykpCisKICAgICBkZWYgdGVzdF9yZXBlYXRlZF9zaW5nbGVfdmFsdWUoc2VsZik6CiAgICAgICAgICMgVGhlIGF2ZXJhZ2Ugb2YgYSBzaW5nbGUgcmVwZWF0ZWQgdmFsdWUgaXMgdGhlIHZhbHVlIGl0c2VsZi4KLSAgICAgICAgZm9yIHggaW4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC45NzEyJykpOgorICAgICAgICBmb3IgeCBpbiBzZWxmLnByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdCgpOgogICAgICAgICAgICAgZm9yIGNvdW50IGluICgyLCA1LCAxMCwgMjApOgotICAgICAgICAgICAgICAgIGRhdGEgPSBbeF0qY291bnQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgeCkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh4PXgsIGNvdW50PWNvdW50KToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFt4XSpjb3VudAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgeCkKIAogCiBjbGFzcyBUZXN0TWVhbihOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CkBAIC0xMzA0LDcgKzEzNTIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgMjIuMDE1NjI1KQogCiAgICAgZGVmIHRlc3RfZGVjaW1hbHMoc2VsZik6Ci0gICAgICAgICMgVGVzdCBtZWFuIHdpdGggaW50cy4KKyAgICAgICAgIyBUZXN0IG1lYW4gd2l0aCBEZWNpbWFscy4KICAgICAgICAgRCA9IERlY2ltYWwKICAgICAgICAgZGF0YSA9IFtEKCIxLjYzNCIpLCBEKCIyLjUxNyIpLCBEKCIzLjkxMiIpLCBEKCI0LjA3MiIpLCBEKCI1LjgxMyIpXQogICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQpAQCAtMTM3OSw2ICsxNDI3LDk0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRpc3RpY3MubWVhbihbdGlueV0qbiksIHRpbnkpCiAKIAorY2xhc3MgVGVzdEhhcm1vbmljTWVhbihOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZ1bmMgPSBzdGF0aXN0aWNzLmhhcm1vbmljX21lYW4KKworICAgIGRlZiBwcmVwYXJlX2RhdGEoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGUgbWl4aW4gbWV0aG9kLgorICAgICAgICB2YWx1ZXMgPSBzdXBlcigpLnByZXBhcmVfZGF0YSgpCisgICAgICAgIHZhbHVlcy5yZW1vdmUoMCkKKyAgICAgICAgcmV0dXJuIHZhbHVlcworCisgICAgZGVmIHByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdChzZWxmKToKKyAgICAgICAgIyBPdmVycmlkZSBtaXhpbiBtZXRob2QuCisgICAgICAgIHJldHVybiAoMy41LCAxNywgMi41ZTE1LCBGcmFjdGlvbig2MSwgNjcpLCBEZWNpbWFsKCc0LjEyNScpKQorCisgICAgZGVmIHRlc3RfemVybyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaGFybW9uaWMgbWVhbiByZXR1cm5zIHplcm8gd2hlbiBnaXZlbiB6ZXJvLgorICAgICAgICB2YWx1ZXMgPSBbMSwgMCwgMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmModmFsdWVzKSwgMCkKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2Vycm9yKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBoYXJtb25pYyBtZWFuIHJhaXNlcyB3aGVuIGdpdmVuIGEgbmVnYXRpdmUgdmFsdWUuCisgICAgICAgIGV4YyA9IHN0YXRpc3RpY3MuU3RhdGlzdGljc0Vycm9yCisgICAgICAgIGZvciB2YWx1ZXMgaW4gKFstMV0sIFsxLCAtMiwgM10pOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodmFsdWVzPXZhbHVlcyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBzZWxmLmZ1bmMsIHZhbHVlcykKKworICAgIGRlZiB0ZXN0X2ludHMoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggaW50cy4KKyAgICAgICAgZGF0YSA9IFsyLCA0LCA0LCA4LCAxNiwgMTZdCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCA2KjQvNSkKKworICAgIGRlZiB0ZXN0X2Zsb2F0c19leGFjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBzb21lIGNhcmVmdWxseSBjaG9zZW4gZmxvYXRzLgorICAgICAgICBkYXRhID0gWzEvOCwgMS80LCAxLzQsIDEvMiwgMS8yXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgMS80KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhbMC4yNSwgMC41LCAxLjAsIDEuMF0pLCAwLjUpCisKKyAgICBkZWYgdGVzdF9zaW5nbGV0b25fbGlzdHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGhhcm1vbmljIG1lYW4oW3hdKSByZXR1cm5zIChhcHByb3hpbWF0ZWx5KSB4LgorICAgICAgICBmb3IgeCBpbiByYW5nZSgxLCAxMDEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoW3hdKSwgeCkKKworICAgIGRlZiB0ZXN0X2RlY2ltYWxzX2V4YWN0KHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFybW9uaWMgbWVhbiB3aXRoIHNvbWUgY2FyZWZ1bGx5IGNob3NlbiBEZWNpbWFscy4KKyAgICAgICAgRCA9IERlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoW0QoMTUpLCBEKDMwKSwgRCg2MCksIEQoNjApXSksIEQoMzApKQorICAgICAgICBkYXRhID0gW0QoIjAuMDUiKSwgRCgiMC4xMCIpLCBEKCIwLjIwIiksIEQoIjAuMjAiKV0KKyAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIEQoIjAuMTAiKSkKKyAgICAgICAgZGF0YSA9IFtEKCIxLjY4IiksIEQoIjAuMzIiKSwgRCgiNS45NCIpLCBEKCIyLjc1IildCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBEKDY2NTI4KS83MDcyMykKKworICAgIGRlZiB0ZXN0X2ZyYWN0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBGcmFjdGlvbnMuCisgICAgICAgIEYgPSBGcmFjdGlvbgorICAgICAgICBkYXRhID0gW0YoMSwgMiksIEYoMiwgMyksIEYoMywgNCksIEYoNCwgNSksIEYoNSwgNiksIEYoNiwgNyksIEYoNywgOCldCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBGKDcqNDIwLCA0MDI5KSkKKworICAgIGRlZiB0ZXN0X2luZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBpbmZpbml0eS4KKyAgICAgICAgdmFsdWVzID0gWzIuMCwgZmxvYXQoJ2luZicpLCAxLjBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKHZhbHVlcyksIDIuMCkKKworICAgIGRlZiB0ZXN0X25hbihzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBOQU5zLgorICAgICAgICB2YWx1ZXMgPSBbMi4wLCBmbG9hdCgnbmFuJyksIDEuMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oc2VsZi5mdW5jKHZhbHVlcykpKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbHlfZGF0YV9wb2ludHMoc2VsZik6CisgICAgICAgICMgVGVzdCBtdWx0aXBseWluZyBldmVyeSBkYXRhIHBvaW50IGJ5IGEgY29uc3RhbnQuCisgICAgICAgIGMgPSAxMTEKKyAgICAgICAgZGF0YSA9IFszLjQsIDQuNSwgNC45LCA2LjcsIDYuOCwgNy4yLCA4LjAsIDguMSwgOS40XQorICAgICAgICBleHBlY3RlZCA9IHNlbGYuZnVuYyhkYXRhKSpjCisgICAgICAgIHJlc3VsdCA9IHNlbGYuZnVuYyhbeCpjIGZvciB4IGluIGRhdGFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9kb3VibGVkX2RhdGEoc2VsZik6CisgICAgICAgICMgSGFybW9uaWMgbWVhbiBvZiBbYSxiLi4uel0gc2hvdWxkIGJlIHNhbWUgYXMgZm9yIFthLGEsYixiLi4ueix6XS4KKyAgICAgICAgZGF0YSA9IFtyYW5kb20udW5pZm9ybSgxLCA1KSBmb3IgXyBpbiByYW5nZSgxMDAwKV0KKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLmZ1bmMoZGF0YSkKKyAgICAgICAgYWN0dWFsID0gc2VsZi5mdW5jKGRhdGEqMikKKyAgICAgICAgc2VsZi5hc3NlcnRBcHByb3hFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorCisKIGNsYXNzIFRlc3RNZWRpYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4pOgogICAgICMgQ29tbW9uIHRlc3RzIGZvciBtZWRpYW4gYW5kIGFsbCBtZWRpYW4uKiBmdW5jdGlvbnMuCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTYwMCw2ICsxNzM2LDIyIEBACiAgICAgICAgIGRhdGEgPSBbMjIwLCAyMjAsIDI0MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyODAsIDI4MCwgMzAwLCAzMjAsIDM0MF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSwgMjApLCAyNjUuMCkKIAorICAgIGRlZiB0ZXN0X2RhdGFfdHlwZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IG1lZGlhbl9ncm91cGVkIHdpdGggc3RyLCBieXRlcyBkYXRhIHR5cGVzIGZvciBkYXRhIGFuZCBpbnRlcnZhbAorICAgICAgICBkYXRhID0gWyIiLCAiIiwgIiJdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhKQorICAgICAgICAjLS0tCisgICAgICAgIGRhdGEgPSBbYiIiLCBiIiIsIGIiIl0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZ1bmMsIGRhdGEpCisgICAgICAgICMtLS0KKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzXQorICAgICAgICBpbnRlcnZhbCA9ICIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhLCBpbnRlcnZhbCkKKyAgICAgICAgIy0tLQorICAgICAgICBkYXRhID0gWzEsIDIsIDNdCisgICAgICAgIGludGVydmFsID0gYiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhLCBpbnRlcnZhbCkKKwogCiBjbGFzcyBUZXN0TW9kZShOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CiAgICAgIyBUZXN0IGNhc2VzIGZvciB0aGUgZGlzY3JldGUgdmVyc2lvbiBvZiBtb2RlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKaW5kZXggNzcyY2QwNi4uNzJiMTkxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CkBAIC0yMyw5ICsyMyw5IEBACiAgICAgIiIiCiAgICAgbmV3X3RleHQgPSByZS5lc2NhcGUodGV4dCkKICAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocmUuZXNjYXBlKGFtcG0pLCBhbXBtKQotICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZSgnXCUnLCAnJScpCi0gICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKCdcOicsICc6JykKLSAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UoJ1w/JywgJz8nKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1wlJywgJyUnKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1w6JywgJzonKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1w/JywgJz8nKQogICAgIHJldHVybiBuZXdfdGV4dAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmdfbGl0ZXJhbHMucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CmluZGV4IDg3Y2ZmZTguLjM3YWNlMjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CkBAIC0xMjEsOSArMTIxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiBiJ1x4MDEnICIiIiksIGJ5dGUoMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGInXHg4MScgIiIiKSwgYnl0ZSgweDgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1x4ODEnICIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYidcdTE4ODEnICIiIiksIGInXFwnICsgYid1MTg4MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1x1MTg4MScgIiIiKSwgYidcXCcgKyBiJ3UxODgxJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1x1MTg4MScgIiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBiJ1xVMDAwMWQxMjAnICIiIiksIGInXFwnICsgYidVMDAwMWQxMjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidcVTAwMDFkMTIwJyAiIiIpLCBiJ1xcJyArIGInVTAwMDFkMTIwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1xVMDAwMWQxMjAnICIiIikKIAogICAgIGRlZiB0ZXN0X2V2YWxfYnl0ZXNfaW5jb21wbGV0ZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CmluZGV4IDg1MTI2ZTYuLjIyZWFjMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBsb2NhbGUKIGltcG9ydCByZQogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUgYXMgZGF0ZXRpbWVfZGF0ZQogCkBAIC0xMzAsNyArMTI5LDcgQEAKICAgICBkZWYgdGVzdF9wYXR0ZXJuX2VzY2FwaW5nKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBhbnkgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZyB0aGF0IG1pZ2h0IGJlIHRha2VuIGFzCiAgICAgICAgICMgcmVnZXggc3ludGF4IGlzIGVzY2FwZWQuCi0gICAgICAgIHBhdHRlcm5fc3RyaW5nID0gc2VsZi50aW1lX3JlLnBhdHRlcm4oIlxkKyIpCisgICAgICAgIHBhdHRlcm5fc3RyaW5nID0gc2VsZi50aW1lX3JlLnBhdHRlcm4ociJcZCsiKQogICAgICAgICBzZWxmLmFzc2VydEluKHIiXFxkXCsiLCBwYXR0ZXJuX3N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAiJXMgZG9lcyBub3QgaGF2ZSByZSBjaGFyYWN0ZXJzIGVzY2FwZWQgcHJvcGVybHkiICUKICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuX3N0cmluZykKQEAgLTE1Myw4ICsxNTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIHVzaW5nICclcyc7IGdyb3VwICdhJyA9ICclcycsIGdyb3VwICdiJyA9ICVzJyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChmb3VuZC5zdHJpbmcsIGZvdW5kLnJlLnBhdHRlcm4sIGZvdW5kLmdyb3VwKCdhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kLmdyb3VwKCdiJykpKQotICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnYScsJ0EnLCdiJywnQicsJ2MnLCdkJywnSCcsJ0knLCdqJywnbScsJ00nLCdwJywnUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdVJywndycsJ1cnLCd4JywnWCcsJ3knLCdZJywnWicsJyUnKToKKyAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ2EnLCdBJywnYicsJ0InLCdjJywnZCcsJ0cnLCdIJywnSScsJ2onLCdtJywnTScsJ3AnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnUycsJ3UnLCdVJywnVicsJ3cnLCdXJywneCcsJ1gnLCd5JywnWScsJ1onLCclJyk6CiAgICAgICAgICAgICBjb21waWxlZCA9IHNlbGYudGltZV9yZS5jb21waWxlKCIlIiArIGRpcmVjdGl2ZSkKICAgICAgICAgICAgIGZvdW5kID0gY29tcGlsZWQubWF0Y2godGltZS5zdHJmdGltZSgiJSIgKyBkaXJlY3RpdmUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiTWF0Y2hpbmcgZmFpbGVkIG9uICclcycgdXNpbmcgJyVzJyByZWdleCIgJQpAQCAtMTcxLDkgKzE3MCw5IEBACiAKICAgICBkZWYgdGVzdF9tYXRjaGluZ193aXRoX2VzY2FwZXMoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGEgZm9ybWF0IHRoYXQgcmVxdWlyZXMgZXNjYXBpbmcgb2YgY2hhcmFjdGVycyB3b3JrcwotICAgICAgICBjb21waWxlZF9yZSA9IHNlbGYudGltZV9yZS5jb21waWxlKCJcdysgJW0iKQotICAgICAgICBmb3VuZCA9IGNvbXBpbGVkX3JlLm1hdGNoKCJcdysgMTAiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJFc2NhcGluZyBmYWlsZWQgb2YgZm9ybWF0ICdcdysgMTAnIikKKyAgICAgICAgY29tcGlsZWRfcmUgPSBzZWxmLnRpbWVfcmUuY29tcGlsZShyIlx3KyAlbSIpCisgICAgICAgIGZvdW5kID0gY29tcGlsZWRfcmUubWF0Y2gociJcdysgMTAiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIHIiRXNjYXBpbmcgZmFpbGVkIG9mIGZvcm1hdCAnXHcrIDEwJyIpCiAKICAgICBkZWYgdGVzdF9sb2NhbGVfZGF0YV93X3JlZ2V4X21ldGFjaGFyYWN0ZXJzKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgaWYgbG9jYWxlIGRhdGEgY29udGFpbnMgcmVnZXggbWV0YWNoYXJhY3RlcnMgdGhleSBhcmUKQEAgLTIxOSw2ICsyMTgsMjYgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCInJXMnIGRpZCBub3QgcmFpc2UgVmFsdWVFcnJvciIgJSBiYWRfZm9ybWF0KQogCisgICAgICAgICMgQW1iaWd1b3VzIG9yIGluY29tcGxldGUgY2FzZXMgdXNpbmcgSVNPIHllYXIvd2Vlay93ZWVrZGF5IGRpcmVjdGl2ZXMKKyAgICAgICAgIyAxLiBJU08gd2VlayAoJVYpIGlzIHNwZWNpZmllZCwgYnV0IHRoZSB5ZWFyIGlzIHNwZWNpZmllZCB3aXRoICVZCisgICAgICAgICMgaW5zdGVhZCBvZiAlRworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSA1MCIsICIlWSAlViIpCisgICAgICAgICMgMi4gSVNPIHllYXIgKCVHKSBhbmQgSVNPIHdlZWsgKCVWKSBhcmUgc3BlY2lmaWVkLCBidXQgd2Vla2RheSBpcyBub3QKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgNTEiLCAiJUcgJVYiKQorICAgICAgICAjIDMuIElTTyB5ZWFyICglRykgYW5kIHdlZWtkYXkgYXJlIHNwZWNpZmllZCwgYnV0IElTTyB3ZWVrICglVikgaXMgbm90CisgICAgICAgIGZvciB3IGluICgnQScsICdhJywgJ3cnLCAndScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDUxIiwiJUcgJXt9Ii5mb3JtYXQodykpCisgICAgICAgICMgNC4gSVNPIHllYXIgaXMgc3BlY2lmaWVkIGFsb25lIChlLmcuIHRpbWUuc3RycHRpbWUoJzIwMTUnLCAnJUcnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjIwMTUiLCAiJUciKQorICAgICAgICAjIDUuIEp1bGlhbi9vcmRpbmFsIGRheSAoJWopIGlzIHNwZWNpZmllZCB3aXRoICVHLCBidXQgbm90ICVZCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDI1NiIsICIlRyAlaiIpCisKKwogICAgIGRlZiB0ZXN0X3N0cnB0aW1lX2V4Y2VwdGlvbl9jb250ZXh0KHNlbGYpOgogICAgICAgICAjIGNoZWNrIHRoYXQgdGhpcyBkb2Vzbid0IGNoYWluIGV4Y2VwdGlvbnMgbmVlZGxlc3NseSAoc2VlICMxNzU3MikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgpAQCAtMjkwLDcgKzMwOSw3IEBACiAKICAgICBkZWYgdGVzdF93ZWVrZGF5KHNlbGYpOgogICAgICAgICAjIFRlc3Qgd2Vla2RheSBkaXJlY3RpdmVzCi0gICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdBJywgJ2EnLCAndycpOgorICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnQScsICdhJywgJ3cnLCAndScpOgogICAgICAgICAgICAgc2VsZi5oZWxwZXIoZGlyZWN0aXZlLDYpCiAKICAgICBkZWYgdGVzdF9qdWxpYW4oc2VsZik6CkBAIC0zODQsNyArNDAzLDcgQEAKICAgICAgICAgIyB1bmJhbGFuY2VkIHBhcmVudGhlc2VzIHdoZW4gdGhlIHJlZ2V4IGlzIGNvbXBpbGVkIGlmIHRoZXkgYXJlIG5vdAogICAgICAgICAjIGVzY2FwZWQuCiAgICAgICAgICMgVGVzdCBpbnN0aWdhdGVkIGJ5IGJ1ZyAjNzk2MTQ5IC4KLSAgICAgICAgbmVlZF9lc2NhcGluZyA9ICIuXiQqKz97fVxbXXwpKCIKKyAgICAgICAgbmVlZF9lc2NhcGluZyA9IHIiLl4kKis/e31cW118KSgiCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUobmVlZF9lc2NhcGluZywgbmVlZF9lc2NhcGluZykpCiAKICAgICBkZWYgdGVzdF9mZWIyOV9vbl9sZWFwX3llYXJfd2l0aG91dF95ZWFyKHNlbGYpOgpAQCAtNDU3LDE2ICs0NzYsMjAgQEAKICAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byBpbmZlciBkYXRlIGlmIGdpdmVuIHllYXIsIHdlZWsgb2YgeWVhciAoJVUgb3IgJVcpCiAgICAgICAgICMgYW5kIGRheSBvZiB0aGUgd2VlawogICAgICAgICBkZWYgdGVzdF9oZWxwZXIoeW1kX3R1cGxlLCB0ZXN0X3JlYXNvbik6Ci0gICAgICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnVycsICdVJyk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9ICIlJVkgJSUlcyAlJXciICUgZGlyZWN0aXZlCi0gICAgICAgICAgICAgICAgZHRfZGF0ZSA9IGRhdGV0aW1lX2RhdGUoKnltZF90dXBsZSkKLSAgICAgICAgICAgICAgICBzdHJwX2lucHV0ID0gZHRfZGF0ZS5zdHJmdGltZShmb3JtYXRfc3RyaW5nKQotICAgICAgICAgICAgICAgIHN0cnBfb3V0cHV0ID0gX3N0cnB0aW1lLl9zdHJwdGltZV90aW1lKHN0cnBfaW5wdXQsIGZvcm1hdF9zdHJpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cnBfb3V0cHV0WzozXSA9PSB5bWRfdHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXMoJXMpIHRlc3QgZmFpbGVkIHcvICclcyc6ICVzICE9ICVzICglcyAhPSAlcykiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9yZWFzb24sIGRpcmVjdGl2ZSwgc3RycF9pbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbOjNdLCB5bWRfdHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnBfb3V0cHV0WzddLCBkdF9kYXRlLnRpbWV0dXBsZSgpWzddKSkKKyAgICAgICAgICAgIGZvciB5ZWFyX3dlZWtfZm9ybWF0IGluICgnJVkgJVcnLCAnJVkgJVUnLCAnJUcgJVYnKToKKyAgICAgICAgICAgICAgICBmb3Igd2Vla2RheV9mb3JtYXQgaW4gKCcldycsICcldScsICclYScsICclQScpOgorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3RyaW5nID0geWVhcl93ZWVrX2Zvcm1hdCArICcgJyArIHdlZWtkYXlfZm9ybWF0CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHRlc3RfcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPXltZF90dXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWZvcm1hdF9zdHJpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgZHRfZGF0ZSA9IGRhdGV0aW1lX2RhdGUoKnltZF90dXBsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnBfaW5wdXQgPSBkdF9kYXRlLnN0cmZ0aW1lKGZvcm1hdF9zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dCA9IF9zdHJwdGltZS5fc3RycHRpbWVfdGltZShzdHJwX2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICIlcjogJXMgIT0gJXMiICUgKHN0cnBfaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dFs3XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0X2RhdGUudGltZXR1cGxlKClbN10pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cnBfb3V0cHV0WzozXSwgeW1kX3R1cGxlLCBtc2cpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCAzKSwgIndlZWsgMCIpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCA4KSwgImNvbW1vbiBjYXNlIikKICAgICAgICAgdGVzdF9oZWxwZXIoKDE5MDEsIDEsIDEzKSwgImRheSBvbiBTdW5kYXkiKQpAQCAtNDk4LDMzICs1MjEsNDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3N0cnB0aW1lLl9zdHJwdGltZV90aW1lKHZhbHVlLCBmb3JtYXQpWzotMV0sIGV4cGVjdGVkKQogICAgICAgICBjaGVjaygnMjAxNSAwIDAnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMjgsIDAsIDAsIDAsIDYsIDM2MikKICAgICAgICAgY2hlY2soJzIwMTUgMCAwJywgJyVZICVXICV3JywgMjAxNSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKyAgICAgICAgY2hlY2soJzIwMTUgMSAxJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMScsICclWSAlVSAldycsIDIwMTQsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzYzKQogICAgICAgICBjaGVjaygnMjAxNSAwIDEnLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2MykKKyAgICAgICAgY2hlY2soJzIwMTUgMSAyJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjQpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMicsICclWSAlVSAldycsIDIwMTQsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY0KQogICAgICAgICBjaGVjaygnMjAxNSAwIDInLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NCkKKyAgICAgICAgY2hlY2soJzIwMTUgMSAzJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjUpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMycsICclWSAlVSAldycsIDIwMTQsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY1KQogICAgICAgICBjaGVjaygnMjAxNSAwIDMnLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NSkKKyAgICAgICAgY2hlY2soJzIwMTUgMSA0JywgJyVHICVWICV1JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMTUgMCA0JywgJyVZICVVICV3JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMTUgMCA0JywgJyVZICVXICV3JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKKyAgICAgICAgY2hlY2soJzIwMTUgMSA1JywgJyVHICVWICV1JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMTUgMCA1JywgJyVZICVVICV3JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMTUgMCA1JywgJyVZICVXICV3JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKKyAgICAgICAgY2hlY2soJzIwMTUgMSA2JywgJyVHICVWICV1JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMTUgMCA2JywgJyVZICVVICV3JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMTUgMCA2JywgJyVZICVXICV3JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKKyAgICAgICAgY2hlY2soJzIwMTUgMSA3JywgJyVHICVWICV1JywgMjAxNSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKIAogICAgICAgICBjaGVjaygnMjAwOSAwIDAnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMjgsIDAsIDAsIDAsIDYsIDM2MykKICAgICAgICAgY2hlY2soJzIwMDkgMCAwJywgJyVZICVXICV3JywgMjAwOSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAxJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjQpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMScsICclWSAlVSAldycsIDIwMDgsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzY0KQogICAgICAgICBjaGVjaygnMjAwOSAwIDEnLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2NCkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAyJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjUpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMicsICclWSAlVSAldycsIDIwMDgsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY1KQogICAgICAgICBjaGVjaygnMjAwOSAwIDInLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NSkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAzJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjYpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMycsICclWSAlVSAldycsIDIwMDgsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY2KQogICAgICAgICBjaGVjaygnMjAwOSAwIDMnLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NikKKyAgICAgICAgY2hlY2soJzIwMDkgMSA0JywgJyVHICVWICV1JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMDkgMCA0JywgJyVZICVVICV3JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMDkgMCA0JywgJyVZICVXICV3JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKKyAgICAgICAgY2hlY2soJzIwMDkgMSA1JywgJyVHICVWICV1JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMDkgMCA1JywgJyVZICVVICV3JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMDkgMCA1JywgJyVZICVXICV3JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKKyAgICAgICAgY2hlY2soJzIwMDkgMSA2JywgJyVHICVWICV1JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMDkgMCA2JywgJyVZICVVICV3JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMDkgMCA2JywgJyVZICVXICV3JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKKyAgICAgICAgY2hlY2soJzIwMDkgMSA3JywgJyVHICVWICV1JywgMjAwOSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKwogCiBjbGFzcyBDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoYXQgY2FjaGluZyB3b3JrcyBwcm9wZXJseS4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKaW5kZXggZWZiZGJmYy4uNGQ5ZDYwMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBhYmMKIGltcG9ydCBhcnJheQoraW1wb3J0IG1hdGgKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3RydWN0CkBAIC0xNSwyMiArMTYsMTAgQEAKIGRlZiBpdGVyX2ludGVnZXJfZm9ybWF0cyhieXRlb3JkZXJzPWJ5dGVvcmRlcnMpOgogICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6CiAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gYnl0ZW9yZGVyczoKLSAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCi0gICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBub3QgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgnbicsICdOJykpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICB5aWVsZCBjb2RlLCBieXRlb3JkZXIKIAotIyBOYXRpdmUgJ3EnIHBhY2tpbmcgaXNuJ3QgYXZhaWxhYmxlIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoZSBDCi0jIGxvbmcgbG9uZyB0eXBlLgotdHJ5OgotICAgIHN0cnVjdC5wYWNrKCdxJywgNSkKLWV4Y2VwdCBzdHJ1Y3QuZXJyb3I6Ci0gICAgSEFWRV9MT05HX0xPTkcgPSBGYWxzZQotZWxzZToKLSAgICBIQVZFX0xPTkdfTE9ORyA9IFRydWUKLQogZGVmIHN0cmluZ19yZXZlcnNlKHMpOgogICAgIHJldHVybiBzWzo6LTFdCiAKQEAgLTE1OCw5ICsxNDcsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQogCiAgICAgICAgICMgbmF0aXZlIGludGVnZXIgc2l6ZXMKLSAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJwotICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKLSAgICAgICAgICAgIG5hdGl2ZV9wYWlycyArPSAncVEnLAorICAgICAgICBuYXRpdmVfcGFpcnMgPSAnYkInLCAnaEgnLCAnaUknLCAnbEwnLCAnbk4nLCAncVEnCiAgICAgICAgIGZvciBmb3JtYXRfcGFpciBpbiBuYXRpdmVfcGFpcnM6CiAgICAgICAgICAgICBmb3IgYnl0ZW9yZGVyIGluICcnLCAnQCc6CiAgICAgICAgICAgICAgICAgc2lnbmVkX3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoYnl0ZW9yZGVyICsgZm9ybWF0X3BhaXJbMF0pCkBAIC0xNzMsOSArMTYwLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoNCwgc3RydWN0LmNhbGNzaXplKCdsJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnaCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdpJyksIHN0cnVjdC5jYWxjc2l6ZSgnbCcpKQotICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDgsIHN0cnVjdC5jYWxjc2l6ZSgncScpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCg4LCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSkKIApAQCAtMzY2LDggKzM1Miw2IEBACiAgICAgICAgICMgU0YgYnVnIDcwNTgzNi4gICI8ZiIgYW5kICI+ZiIgaGFkIGEgc2V2ZXJlIHJvdW5kaW5nIGJ1Zywgd2hlcmUgYSBjYXJyeQogICAgICAgICAjIGZyb20gdGhlIGxvdy1vcmRlciBkaXNjYXJkZWQgYml0cyBjb3VsZCBwcm9wYWdhdGUgaW50byB0aGUgZXhwb25lbnQKICAgICAgICAgIyBmaWVsZCwgY2F1c2luZyB0aGUgcmVzdWx0IHRvIGJlIHdyb25nIGJ5IGEgZmFjdG9yIG9mIDIuCi0gICAgICAgIGltcG9ydCBtYXRoCi0KICAgICAgICAgZm9yIGJhc2UgaW4gcmFuZ2UoMSwgMzMpOgogICAgICAgICAgICAgIyBzbWFsbGVyIDwtIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBmbG9hdCBsZXNzIHRoYW4gYmFzZS4KICAgICAgICAgICAgIGRlbHRhID0gMC41CkBAIC02NTksNiArNjQzLDExMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAKKyAgICBkZWYgdGVzdF9oYWxmX2Zsb2F0KHNlbGYpOgorICAgICAgICAjIExpdHRsZS1lbmRpYW4gZXhhbXBsZXMgZnJvbToKKyAgICAgICAgIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGZfcHJlY2lzaW9uX2Zsb2F0aW5nLXBvaW50X2Zvcm1hdAorICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fY2xlYW5Sb3VuZHRyaXBfbGlzdCA9IFsKKyAgICAgICAgICAgIChiJ1x4MDBceDNjJywgMS4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceGMwJywgLTIuMCksCisgICAgICAgICAgICAoYidceGZmXHg3YicsIDY1NTA0LjApLCAjICAobWF4IGhhbGYgcHJlY2lzaW9uKQorICAgICAgICAgICAgKGInXHgwMFx4MDQnLCAyKiotMTQpLCAjIH49IDYuMTAzNTIgKiAxMCoqLTUgKG1pbiBwb3Mgbm9ybWFsKQorICAgICAgICAgICAgKGInXHgwMVx4MDAnLCAyKiotMjQpLCAjIH49IDUuOTYwNDYgKiAxMCoqLTggKG1pbiBwb3Mgc3Vibm9ybWFsKQorICAgICAgICAgICAgKGInXHgwMFx4MDAnLCAwLjApLAorICAgICAgICAgICAgKGInXHgwMFx4ODAnLCAtMC4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceDdjJywgZmxvYXQoJytpbmYnKSksCisgICAgICAgICAgICAoYidceDAwXHhmYycsIGZsb2F0KCctaW5mJykpLAorICAgICAgICAgICAgKGInXHg1NVx4MzUnLCAwLjMzMzI1MTk1MzEyNSksICMgfj0gMS8zCisgICAgICAgIF0KKworICAgICAgICBmb3IgbGVfYml0cywgZiBpbiBmb3JtYXRfYml0c19mbG9hdF9fY2xlYW5Sb3VuZHRyaXBfbGlzdDoKKyAgICAgICAgICAgIGJlX2JpdHMgPSBsZV9iaXRzWzo6LTFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIHN0cnVjdC51bnBhY2soJzxlJywgbGVfYml0cylbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlX2JpdHMsIHN0cnVjdC5wYWNrKCc8ZScsIGYpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCc+ZScsIGJlX2JpdHMpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiZV9iaXRzLCBzdHJ1Y3QucGFjaygnPmUnLCBmKSkKKyAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCdlJywgbGVfYml0cylbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZV9iaXRzLCBzdHJ1Y3QucGFjaygnZScsIGYpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIHN0cnVjdC51bnBhY2soJ2UnLCBiZV9iaXRzKVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJlX2JpdHMsIHN0cnVjdC5wYWNrKCdlJywgZikpCisKKyAgICAgICAgIyBDaGVjayBmb3IgTmFOIGhhbmRsaW5nOgorICAgICAgICBmb3JtYXRfYml0c19fbmFuX2xpc3QgPSBbCisgICAgICAgICAgICAoJzxlJywgYidceDAxXHhmYycpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMFx4ZmUnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4ZmZceGZmJyksCisgICAgICAgICAgICAoJzxlJywgYidceDAxXHg3YycpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMFx4N2UnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4ZmZceDdmJyksCisgICAgICAgIF0KKworICAgICAgICBmb3IgZm9ybWF0Y29kZSwgYml0cyBpbiBmb3JtYXRfYml0c19fbmFuX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihzdHJ1Y3QudW5wYWNrKCc8ZScsIGJpdHMpWzBdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKHN0cnVjdC51bnBhY2soJz5lJywgYml0c1s6Oi0xXSlbMF0pKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBwYWNraW5nIHByb2R1Y2VzIGEgYml0IHBhdHRlcm4gcmVwcmVzZW50aW5nIGEgcXVpZXQgTmFOOgorICAgICAgICAjIGFsbCBleHBvbmVudCBiaXRzIGFuZCB0aGUgbXNiIG9mIHRoZSBmcmFjdGlvbiBzaG91bGQgYWxsIGJlIDEuCisgICAgICAgIHBhY2tlZCA9IHN0cnVjdC5wYWNrKCc8ZScsIG1hdGgubmFuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tlZFsxXSAmIDB4N2UsIDB4N2UpCisgICAgICAgIHBhY2tlZCA9IHN0cnVjdC5wYWNrKCc8ZScsIC1tYXRoLm5hbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZWRbMV0gJiAweDdlLCAweDdlKQorCisgICAgICAgICMgQ2hlY2tzIGZvciByb3VuZC10by1ldmVuIGJlaGF2aW9yCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ19saXN0ID0gWworICAgICAgICAgICAgKCc+ZScsIGInXHgwMFx4MDEnLCAyLjAqKi0yNSArIDIuMCoqLTM1KSwgIyBSb3VuZHMgdG8gbWluaW11bSBzdWJub3JtYWwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDBceDAwJywgMi4wKiotMjUpLCAjIFVuZGVyZmxvd3MgdG8gemVybyAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceDAwXHgwMCcsIDIuMCoqLTI2KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8KKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDNceGZmJywgMi4wKiotMTQgLSAyLjAqKi0yNCksICMgTGFyZ2VzdCBzdWJub3JtYWwuCisgICAgICAgICAgICAoJz5lJywgYidceDAzXHhmZicsIDIuMCoqLTE0IC0gMi4wKiotMjUgLSAyLjAqKi02NSksCisgICAgICAgICAgICAoJz5lJywgYidceDA0XHgwMCcsIDIuMCoqLTE0IC0gMi4wKiotMjUpLAorICAgICAgICAgICAgKCc+ZScsIGInXHgwNFx4MDAnLCAyLjAqKi0xNCksICMgU21hbGxlc3Qgbm9ybWFsLgorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDEnLCAxLjArMi4wKiotMTEgKyAyLjAqKi0xNiksICMgcm91bmRzIHRvIDEuMCsyKiooLTEwKQorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDAnLCAxLjArMi4wKiotMTEpLCAjIHJvdW5kcyB0byAxLjAgKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDAnLCAxLjArMi4wKiotMTIpLCAjIHJvdW5kcyB0byAxLjAKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4N2JceGZmJywgNjU1MDQpLCAjIGxhcmdlc3Qgbm9ybWFsCisgICAgICAgICAgICAoJz5lJywgYidceDdiXHhmZicsIDY1NTE5KSwgIyByb3VuZHMgdG8gNjU1MDQKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ODBceDAxJywgLTIuMCoqLTI1IC0gMi4wKiotMzUpLCAjIFJvdW5kcyB0byBtaW5pbXVtIHN1Ym5vcm1hbAorICAgICAgICAgICAgKCc+ZScsIGInXHg4MFx4MDAnLCAtMi4wKiotMjUpLCAjIFVuZGVyZmxvd3MgdG8gemVybyAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceDgwXHgwMCcsIC0yLjAqKi0yNiksICMgVW5kZXJmbG93cyB0byB6ZXJvCisgICAgICAgICAgICAoJz5lJywgYidceGJjXHgwMScsIC0xLjAtMi4wKiotMTEgLSAyLjAqKi0xNiksICMgcm91bmRzIHRvIDEuMCsyKiooLTEwKQorICAgICAgICAgICAgKCc+ZScsIGInXHhiY1x4MDAnLCAtMS4wLTIuMCoqLTExKSwgIyByb3VuZHMgdG8gMS4wIChuZWFyZXN0IGV2ZW4gbW9kZSkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4YmNceDAwJywgLTEuMC0yLjAqKi0xMiksICMgcm91bmRzIHRvIDEuMAorICAgICAgICAgICAgKCc+ZScsIGInXHhmYlx4ZmYnLCAtNjU1MTkpLCAjIHJvdW5kcyB0byA2NTUwNAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGJpdHMsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdHMsIHN0cnVjdC5wYWNrKGZvcm1hdGNvZGUsIGYpKQorCisgICAgICAgICMgVGhpcyBvdmVyZmxvd3MsIGFuZCBzbyByYWlzZXMgYW4gZXJyb3IKKyAgICAgICAgZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nRXJyb3JfbGlzdCA9IFsKKyAgICAgICAgICAgICMgVmFsdWVzIHRoYXQgcm91bmQgdG8gaW5maW5pdHkuCisgICAgICAgICAgICAoJz5lJywgNjU1MjAuMCksCisgICAgICAgICAgICAoJz5lJywgNjU1MzYuMCksCisgICAgICAgICAgICAoJz5lJywgMWUzMDApLAorICAgICAgICAgICAgKCc+ZScsIC02NTUyMC4wKSwKKyAgICAgICAgICAgICgnPmUnLCAtNjU1MzYuMCksCisgICAgICAgICAgICAoJz5lJywgLTFlMzAwKSwKKyAgICAgICAgICAgICgnPGUnLCA2NTUyMC4wKSwKKyAgICAgICAgICAgICgnPGUnLCA2NTUzNi4wKSwKKyAgICAgICAgICAgICgnPGUnLCAxZTMwMCksCisgICAgICAgICAgICAoJzxlJywgLTY1NTIwLjApLAorICAgICAgICAgICAgKCc8ZScsIC02NTUzNi4wKSwKKyAgICAgICAgICAgICgnPGUnLCAtMWUzMDApLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nRXJyb3JfbGlzdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXRjb2RlLCBmKQorCisgICAgICAgICMgRG91YmxlIHJvdW5kaW5nCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19kb3VibGVSb3VuZGluZ0Vycm9yX2xpc3QgPSBbCisgICAgICAgICAgICAoJz5lJywgYidceDY3XHhmZicsIDB4MWZmZGZmZmZmZiAqIDIqKi0yNiksICMgc2hvdWxkIGJlIDIwNDcsIGlmIGRvdWJsZS1yb3VuZGVkIDY0PjMyPjE2LCBiZWNvbWVzIDIwNDgKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBiaXRzLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19kb3VibGVSb3VuZGluZ0Vycm9yX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdHMsIHN0cnVjdC5wYWNrKGZvcm1hdGNvZGUsIGYpKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ViY2xhc3Npbml0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMTJmYjEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weQpAQCAtMCwwICsxLDI2OCBAQAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCkKKyAgICAgICAgICAgICAgICBjbHMuaW5pdGlhbGl6ZWQgPSBUcnVlCisKKyAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEEuaW5pdGlhbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShCLmluaXRpYWxpemVkKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19kaWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBBKGRpY3QpOgorICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCkKKyAgICAgICAgICAgICAgICBjbHMuaW5pdGlhbGl6ZWQgPSBUcnVlCisKKyAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEEuaW5pdGlhbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShCLmluaXRpYWxpemVkKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19rd2FyZ3Moc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgY2xzLmt3YXJncyA9IGt3YXJncworCisgICAgICAgIGNsYXNzIEIoQSwgeD0zKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIua3dhcmdzLCBkaWN0KHg9MykpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX3dyb25nKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgd2hhdGV2ZXIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Nfc2tpcHBlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZVdpdGhJbml0OgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gY2xzCisKKyAgICAgICAgY2xhc3MgQmFzZVdpdGhvdXRJbml0KEJhc2VXaXRoSW5pdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQShCYXNlV2l0aG91dEluaXQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQS5pbml0aWFsaXplZCwgQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCYXNlV2l0aG91dEluaXQuaW5pdGlhbGl6ZWQsIEJhc2VXaXRob3V0SW5pdCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3NfZGlhbW9uZChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyA9IFtdCisKKyAgICAgICAgY2xhc3MgTGVmdChCYXNlKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNaWRkbGU6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCBtaWRkbGUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyArPSBbbWlkZGxlXQorCisgICAgICAgIGNsYXNzIFJpZ2h0KEJhc2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgcmlnaHQ9InJpZ2h0IiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmNhbGxzICs9IFtyaWdodF0KKworICAgICAgICBjbGFzcyBBKExlZnQsIE1pZGRsZSwgUmlnaHQsIG1pZGRsZT0ibWlkZGxlIik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLmNhbGxzLCBbInJpZ2h0IiwgIm1pZGRsZSJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExlZnQuY2FsbHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFJpZ2h0LmNhbGxzLCBbXSkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IG93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLmQubmFtZSwgImQiKQorICAgICAgICBzZWxmLmFzc2VydElzKEEuZC5vd25lciwgQSkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX21ldGFjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICByZXQgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQuZC5uYW1lLCAiZCIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXQuZC5vd25lciwgcmV0KQorICAgICAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLCAwKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBjbGFzcyBOb3RHb2luZ1RvV29yazoKKyAgICAgICAgICAgICAgICBhdHRyID0gRGVzY3JpcHRvcigpCisKKyAgICAgICAgZXhjID0gY20uZXhjZXB0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJOb3RHb2luZ1RvV29ya1xiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYmF0dHJcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKGV4YyksIHInXGJEZXNjcmlwdG9yXGInKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY2F1c2VfXywgWmVyb0RpdmlzaW9uRXJyb3IpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV93cm9uZyhzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGNsYXNzIE5vdEdvaW5nVG9Xb3JrOgorICAgICAgICAgICAgICAgIGF0dHIgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBleGMgPSBjbS5leGNlcHRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYk5vdEdvaW5nVG9Xb3JrXGInKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHN0cihleGMpLCByJ1xiYXR0clxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChzdHIoZXhjKSwgcidcYkRlc2NyaXB0b3JcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jYXVzZV9fLCBUeXBlRXJyb3IpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9sb29rdXAoc2VsZik6CisgICAgICAgIHJlc29sdmVkID0gW10KKyAgICAgICAgY2xhc3MgTm9uRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICByZXNvbHZlZC5hcHBlbmQobmFtZSkKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZCA9IE5vbkRlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ19fc2V0X25hbWVfXycsIHJlc29sdmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICdfX3NldF9uYW1lX18gaXMgbG9va2VkIHVwIGluIGluc3RhbmNlIGRpY3QnKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfaW5pdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpOgorICAgICAgICAgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICAgICAgc2VsZi5tZXRhX293bmVyID0gc2VsZi5vd25lcgorICAgICAgICAgICAgICAgIHNlbGYubWV0YV9uYW1lID0gc2VsZi5uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgY2xzLm93bmVyID0gY2xzLmQub3duZXIKKyAgICAgICAgICAgICAgICBjbHMubmFtZSA9IGNscy5kLm5hbWUKKworICAgICAgICBjbGFzcyBCKEEsIG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydElzKEIub3duZXIsIEIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQi5uYW1lLCAnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQi5tZXRhX293bmVyLCBCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIubmFtZSwgJ2QnKQorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZXMubmV3X2NsYXNzKCJNeUNsYXNzIiwgKG9iamVjdCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSkpCisgICAgICAgIHR5cGVzLnByZXBhcmVfY2xhc3MoIk15Q2xhc3MiLCAob2JqZWN0LCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKSkKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgb3RoZXJhcmcpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5vdGhlcmFyZyA9IG90aGVyYXJnCisKKyAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE15Q2xhc3Mub3RoZXJhcmcsIDEpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfY2hhbmdlZF9wZXA0ODcoc2VsZik6CisgICAgICAgICMgVGhlc2UgdGVzdHMgZmFpbGVkIGJlZm9yZSBQeXRob24gMy42LCBQRVAgNDg3CisgICAgICAgIGNsYXNzIE15TWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWU9bmFtZSwgYmFzZXM9YmFzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0PW5hbWVzcGFjZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICBzZWxmLm90aGVyYXJnID0gb3RoZXJhcmcKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeUNsYXNzLm90aGVyYXJnLCAxKQorCisgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgdCA9IHR5cGUoJ05ld0NsYXNzJywgKG9iamVjdCwpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHQsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5fX25hbWVfXywgJ05ld0NsYXNzJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKG5hbWU9J05ld0NsYXNzJywgYmFzZXM9KG9iamVjdCwpLCBkaWN0PXt9KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggNzU4ZTA5NC4uMmQ5MjM5YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMSwyMCArMSwxNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHNpZ25hbAogaW1wb3J0IGlvCi1pbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQotaW1wb3J0IHJlCiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgc3lzY29uZmlnCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBnYwpAQCAtMjUsNiArMjEsOSBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKIAoraWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIG1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAogIwpAQCAtNDQ4LDggKzQ0Nyw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoIm9yYW5nZSIpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJvcmFuZ2UiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJvcmFuZ2UiKQogCiAgICAgZGVmIHRlc3Rfc3Rkb3V0X2ZpbGVkZXMoc2VsZik6CiAgICAgICAgICMgc3Rkb3V0IGlzIHNldCB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcgpAQCAtNDc5LDggKzQ3OCw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5zdGRlcnIud3JpdGUoInN0cmF3YmVycnkiKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChwLnN0ZGVyci5yZWFkKCksIGIic3RyYXdiZXJyeSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRlcnIucmVhZCgpLCBiInN0cmF3YmVycnkiKQogCiAgICAgZGVmIHRlc3Rfc3RkZXJyX2ZpbGVkZXMoc2VsZik6CiAgICAgICAgICMgc3RkZXJyIGlzIHNldCB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcgpAQCAtNTM1LDggKzUzNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgib3JhbmdlIiknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlb3JhbmdlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIiYXBwbGVvcmFuZ2UiKQogCiAgICAgZGVmIHRlc3Rfc3Rkb3V0X3N0ZGVycl9maWxlKHNlbGYpOgogICAgICAgICAjIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIHNhbWUgb3BlbiBmaWxlCkBAIC03OTQsMTggKzc5MywxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQotICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lMVxuIikKLSAgICAgICAgcC5zdGRpbi5mbHVzaCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZGxpbmUoKSwgImxpbmUxXG4iKQotICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lM1xuIikKLSAgICAgICAgcC5zdGRpbi5jbG9zZSgpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lM1xuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgImxpbmU0XG5saW5lNVxubGluZTZcbmxpbmU3XG5saW5lOCIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoImxpbmUxXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksICJsaW5lMVxuIikKKyAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoImxpbmUzXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCg2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUzXG4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lNFxubGluZTVcbmxpbmU2XG5saW5lN1xubGluZTgiKQogCiAgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlKHNlbGYpOgogICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyB0aHJvdWdoIGNvbW11bmljYXRlKCkKQEAgLTg5NCwzMSArODk0LDQyIEBACiAgICAgICAgICMKICAgICAgICAgIyBVVEYtMTYgYW5kIFVURi0zMi1CRSBhcmUgc3VmZmljaWVudCB0byBjaGVjayBib3RoIHdpdGggQk9NIGFuZAogICAgICAgICAjIHdpdGhvdXQsIGFuZCBVVEYtMTYgYW5kIFVURi0zMi4KLSAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBbJ3V0Zi0xNicsICd1dGYtMzItYmUnXToKLSAgICAgICAgICAgIG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nCi0gICAgICAgICAgICAjIEluZGlyZWN0bHkgdmlhIGlvLlRleHRJT1dyYXBwZXIsIFBvcGVuKCkgZGVmYXVsdHMgdG8KLSAgICAgICAgICAgICMgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBhbmQgZWFybGllciBpbiBQeXRob24gMy4yIHRvCi0gICAgICAgICAgICAjIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpLgotICAgICAgICAgICAgZGVmIGdldHByZWZlcnJlZGVuY29kaW5nKGRvX3NldGxvY2FsZT1UcnVlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmcKICAgICAgICAgICAgIGNvZGUgPSAoImltcG9ydCBzeXM7ICIKICAgICAgICAgICAgICAgICAgICAgciJzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZSgnMVxyXG4yXHIzXG40Jy5lbmNvZGUoJyVzJykpIiAlCiAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nKQogICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgY29kZV0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IGdldHByZWZlcnJlZGVuY29kaW5nCi0gICAgICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAotICAgICAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCi0gICAgICAgICAgICAgICAgIyB6ZXJvIG9yIG9uZS4KLSAgICAgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZworICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCBjb2RlIHBhdGggaXMgdXNlZCB3aGVuIHRoZSBudW1iZXIgb2YgcGlwZXMgaXMKKyAgICAgICAgICAgICMgemVybyBvciBvbmUuCisgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZykKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9JycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgJzFcbjJcbjNcbjQnKQogCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBmb3IgZXJyb3JzLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJ2lnbm9yZScsICcnKSwKKyAgICAgICAgICAgICgncmVwbGFjZScsICdcdWZmZmRcdWZmZmQnKSwKKyAgICAgICAgICAgICgnc3Vycm9nYXRlZXNjYXBlJywgJ1x1ZGM4MFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdiYWNrc2xhc2hyZXBsYWNlJywgJ1xceDgwXFx4ODAnKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIGNvZGUgPSAoImltcG9ydCBzeXM7ICIKKyAgICAgICAgICAgICAgICAgICAgciJzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiJ1tceDgwXHg4MF0nKSIpCisgICAgICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCBjb2RlXQorICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCBjb2RlIHBhdGggaXMgdXNlZCB3aGVuIHRoZSBudW1iZXIgb2YgcGlwZXMgaXMKKyAgICAgICAgICAgICMgemVybyBvciBvbmUuCisgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICdbe31dJy5mb3JtYXQoZXhwZWN0ZWQpKQorCiAgICAgZGVmIHRlc3Rfbm9fbGVha2luZyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgd2UgbGVhayBubyByZXNvdXJjZXMKICAgICAgICAgaWYgbm90IG1zd2luZG93czoKQEAgLTE0MzEsNiArMTQ0MiwyNyBAQAogICAgICAgICAgICAgcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtcC5yZXR1cm5jb2RlLCBzaWduYWwuU0lHQUJSVCkKIAorICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfc2lnbmFsKHNlbGYpOgorICAgICAgICBlcnIgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigtaW50KHNpZ25hbC5TSUdBQlJUKSwgImZha2UgY21kIikKKyAgICAgICAgZXJyb3Jfc3RyaW5nID0gc3RyKGVycikKKyAgICAgICAgIyBXZSdyZSByZWx5aW5nIG9uIHRoZSByZXByKCkgb2YgdGhlIHNpZ25hbC5TaWduYWxzIGludGVudW0gdG8gcHJvdmlkZQorICAgICAgICAjIHRoZSB3b3JkIHNpZ25hbCwgdGhlIHNpZ25hbCBuYW1lIGFuZCB0aGUgbnVtZXJpYyB2YWx1ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2lnbmFsIiwgZXJyb3Jfc3RyaW5nLmxvd2VyKCkpCisgICAgICAgICMgV2UncmUgbm90IGJlaW5nIHNwZWNpZmljIGFib3V0IHRoZSBzaWduYWwgbmFtZSBhcyBzb21lIHNpZ25hbHMgaGF2ZQorICAgICAgICAjIG11bHRpcGxlIG5hbWVzIGFuZCB3aGljaCBuYW1lIGlzIHJldmVhbGVkIGNhbiB2YXJ5LgorICAgICAgICBzZWxmLmFzc2VydEluKCJTSUciLCBlcnJvcl9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RyKHNpZ25hbC5TSUdBQlJUKSwgZXJyb3Jfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfQ2FsbGVkUHJvY2Vzc0Vycm9yX3N0cl91bmtub3duX3NpZ25hbChzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoLTk4NzY1NDMsICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInVua25vd24gc2lnbmFsIDk4NzY1NDMuIiwgZXJyb3Jfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfQ2FsbGVkUHJvY2Vzc0Vycm9yX3N0cl9ub25femVybyhzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMiwgImZha2UgY21kIikKKyAgICAgICAgZXJyb3Jfc3RyaW5nID0gc3RyKGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigibm9uLXplcm8gZXhpdCBzdGF0dXMgMi4iLCBlcnJvcl9zdHJpbmcpCisKICAgICBkZWYgdGVzdF9wcmVleGVjKHNlbGYpOgogICAgICAgICAjIERJU0NMQUlNRVI6IFNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlzICpub3QqIGEgZ29vZCB1c2UKICAgICAgICAgIyBvZiBhIHByZWV4ZWNfZm4uICBUaGlzIGlzIG1lcmVseSBhIHRlc3QuCkBAIC0xNDM5LDggKzE0NzEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQud3JpdGUob3MuZ2V0ZW52KCJGUlVJVCIpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVleGVjX2ZuPWxhbWJkYTogb3MucHV0ZW52KCJGUlVJVCIsICJhcHBsZSIpKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3RfcHJlZXhlY19leGNlcHRpb24oc2VsZik6CiAgICAgICAgIGRlZiByYWlzZV9pdCgpOgpAQCAtMTU2MSw3ICsxNTkzLDcgQEAKICAgICAgICAgZmQsIGZuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgICMgcmVvcGVuIGluIHRleHQgbW9kZQogICAgICAgICB3aXRoIG9wZW4oZmQsICJ3IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyBmb2JqOgotICAgICAgICAgICAgZm9iai53cml0ZSgiIyEvYmluL3NoXG4iKQorICAgICAgICAgICAgZm9iai53cml0ZSgiIyElc1xuIiAlIHN1cHBvcnQudW5peF9zaGVsbCkKICAgICAgICAgICAgIGZvYmoud3JpdGUoImV4ZWMgJyVzJyAtYyAnaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpJ1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlKQogICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG83MDApCkBAIC0xNTg4LDggKzE2MjAsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbImVjaG8gJEZSVUlUIl0sIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoYiIgXHRcclxuXGYiKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJ1biBjb21tYW5kIHRocm91Z2ggdGhlIHNoZWxsIChzdHJpbmcpCkBAIC0xNTk4LDE1ICsxNjMwLDE1IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKCJlY2hvICRGUlVJVCIsIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoYiIgXHRcclxuXGYiKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3RfY2FsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc3RyaW5nIGFyZ3VtZW50IG9uIFVOSVgKICAgICAgICAgZmQsIGZuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgICMgcmVvcGVuIGluIHRleHQgbW9kZQogICAgICAgICB3aXRoIG9wZW4oZmQsICJ3IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyBmb2JqOgotICAgICAgICAgICAgZm9iai53cml0ZSgiIyEvYmluL3NoXG4iKQorICAgICAgICAgICAgZm9iai53cml0ZSgiIyElc1xuIiAlIHN1cHBvcnQudW5peF9zaGVsbCkKICAgICAgICAgICAgIGZvYmoud3JpdGUoImV4ZWMgJyVzJyAtYyAnaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpJ1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlKQogICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG83MDApCkBAIC0xNjMxLDggKzE2NjMsOCBAQAogICAgICAgICBmb3Igc2ggaW4gc2hlbGxzOgogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oImVjaG8gJDAiLCBleGVjdXRhYmxlPXNoLCBzaGVsbD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKCksIGJ5dGVzKHNoLCAnYXNjaWknKSkKKyAgICAgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcCgpLCBieXRlcyhzaCwgJ2FzY2lpJykpCiAKICAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBtZXRob2QsICphcmdzKToKICAgICAgICAgIyBEbyBub3QgaW5oZXJpdCBmaWxlIGhhbmRsZXMgZnJvbSB0aGUgcGFyZW50LgpAQCAtMjI5MCw3ICsyMzIyLDkgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQogICAgICAgICBpZGVudCA9IGlkKHApCiAgICAgICAgIHBpZCA9IHAucGlkCi0gICAgICAgIGRlbCBwCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcCA9IE5vbmUKKwogICAgICAgICAjIGNoZWNrIHRoYXQgcCBpcyBpbiB0aGUgYWN0aXZlIHByb2Nlc3NlcyBsaXN0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaWRlbnQsIFtpZChvKSBmb3IgbyBpbiBzdWJwcm9jZXNzLl9hY3RpdmVdKQogCkBAIC0yMzA5LDcgKzIzNDMsOSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCiAgICAgICAgIGlkZW50ID0gaWQocCkKICAgICAgICAgcGlkID0gcC5waWQKLSAgICAgICAgZGVsIHAKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUmVzb3VyY2VXYXJuaW5nKSk6CisgICAgICAgICAgICBwID0gTm9uZQorCiAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKICAgICAgICAgIyBjaGVjayB0aGF0IHAgaXMgaW4gdGhlIGFjdGl2ZSBwcm9jZXNzZXMgbGlzdAogICAgICAgICBzZWxmLmFzc2VydEluKGlkZW50LCBbaWQobykgZm9yIG8gaW4gc3VicHJvY2Vzcy5fYWN0aXZlXSkKQEAgLTI1MDEsOCArMjUzNyw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsic2V0Il0sIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCiAKICAgICBkZWYgdGVzdF9zaGVsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgUnVuIGNvbW1hbmQgdGhyb3VnaCB0aGUgc2hlbGwgKHN0cmluZykKQEAgLTI1MTEsOCArMjU0NywyMCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbigic2V0Iiwgc2hlbGw9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSkKKworICAgIGRlZiB0ZXN0X3NoZWxsX2VuY29kaW5ncyhzZWxmKToKKyAgICAgICAgIyBSdW4gY29tbWFuZCB0aHJvdWdoIHRoZSBzaGVsbCAoc3RyaW5nKQorICAgICAgICBmb3IgZW5jIGluIFsnYW5zaScsICdvZW0nXToKKyAgICAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAicGh5c2FsaXMiCisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbigic2V0Iiwgc2hlbGw9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jKQorICAgICAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpLCBlbmMpCiAKICAgICBkZWYgdGVzdF9jYWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzdHJpbmcgYXJndW1lbnQgb24gV2luZG93cwpAQCAtMjUzMSwxNiArMjU3OSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgIyBXYWl0IGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUKLSAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCi0gICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQotICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKLSAgICAgICAgcmV0dXJuY29kZSA9IHAud2FpdCgpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICAgICAgICAgICAjIHNlbmRpbmcgYW55IHNpZ25hbC4KKyAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKKyAgICAgICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKKyAgICAgICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKKyAgICAgICAgICAgIHJldHVybmNvZGUgPSBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJldHVybmNvZGUsIDApCiAKICAgICBkZWYgX2tpbGxfZGVhZF9wcm9jZXNzKHNlbGYsIG1ldGhvZCwgKmFyZ3MpOgpAQCAtMjU1MywxOSArMjU5OSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgIyBXYWl0IGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUKLSAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCi0gICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgIyBUaGUgcHJvY2VzcyBzaG91bGQgZW5kIGFmdGVyIHRoaXMKLSAgICAgICAgdGltZS5zbGVlcCgxKQotICAgICAgICAjIFRoaXMgc2hvdWxkbid0IHJhaXNlIGV2ZW4gdGhvdWdoIHRoZSBjaGlsZCBpcyBub3cgZGVhZAotICAgICAgICBnZXRhdHRyKHAsIG1ldGhvZCkoKmFyZ3MpCi0gICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQotICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYicnKQotICAgICAgICByYyA9IHAud2FpdCgpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICAgICAgICAgICAjIHNlbmRpbmcgYW55IHNpZ25hbC4KKyAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKKyAgICAgICAgICAgICMgVGhlIHByb2Nlc3Mgc2hvdWxkIGVuZCBhZnRlciB0aGlzCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IHJhaXNlIGV2ZW4gdGhvdWdoIHRoZSBjaGlsZCBpcyBub3cgZGVhZAorICAgICAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQorICAgICAgICAgICAgXywgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYicnKQorICAgICAgICAgICAgcmMgPSBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCA0MikKIAogICAgIGRlZiB0ZXN0X3NlbmRfc2lnbmFsKHNlbGYpOgpAQCAtMjYwOCw4ICsyNjUyLDcgQEAKIAogICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKICAgICAgICAgIiIiRW5zdXJlIHRoYXQgX19hbGxfXyBpcyBwb3B1bGF0ZWQgcHJvcGVybHkuIiIiCi0gICAgICAgICMgU1RBUlRVUElORk8gYWRkZWQgdG8gX19hbGxfXyBpbiAzLjYKLSAgICAgICAgaW50ZW50aW9uYWxseV9leGNsdWRlZCA9IHsibGlzdDJjbWRsaW5lIiwgIlNUQVJUVVBJTkZPIiwgIkhhbmRsZSJ9CisgICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSB7Imxpc3QyY21kbGluZSIsICJIYW5kbGUifQogICAgICAgICBleHBvcnRlZCA9IHNldChzdWJwcm9jZXNzLl9fYWxsX18pCiAgICAgICAgIHBvc3NpYmxlX2V4cG9ydHMgPSBzZXQoKQogICAgICAgICBpbXBvcnQgdHlwZXMKQEAgLTI2NTQsMTEgKzI2OTcsMTEgQEAKICAgICBkZWYgd2l0aF9zcGFjZXMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAga3dhcmdzWydzdGRvdXQnXSA9IHN1YnByb2Nlc3MuUElQRQogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICBwLnN0ZG91dC5yZWFkICgpLmRlY29kZSgibWJjcyIpLAotICAgICAgICAgICIyIFslciwgJ2FiIGNkJ10iICUgc2VsZi5mbmFtZQotICAgICAgICApCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQgKCkuZGVjb2RlKCJtYmNzIiksCisgICAgICAgICAgICAgICIyIFslciwgJ2FiIGNkJ10iICUgc2VsZi5mbmFtZQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nX3dpdGhfc3BhY2VzKHNlbGYpOgogICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHN0cmluZyBhcmd1bWVudCB3aXRoIHNwYWNlcyBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5hdS5weQppbmRleCAwZjQxMzRlLi5iYzFmNDZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cwogZnJvbSBhdWRpb29wIGltcG9ydCBieXRlc3dhcApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKaW5kZXggYjg0ODYzZi4uYTdjZWRlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CkBAIC0xNDMsNiArMTQzLDg3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXwogICAgICAgICBzZWxmLmFzc2VydElzKFguZigpLCBYKQogCisgICAgZGVmIHRlc3RfX19jbGFzc19fX25ldyhzZWxmKToKKyAgICAgICAgdGVzdF9jbGFzcyA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X2NsYXNzCisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgdGVzdF9jbGFzcyA9IHNlbGYuZigpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jbGFzcywgQSkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19kZWxheWVkKHNlbGYpOgorICAgICAgICB0ZXN0X25hbWVzcGFjZSA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X25hbWVzcGFjZQorICAgICAgICAgICAgICAgIHRlc3RfbmFtZXNwYWNlID0gbmFtZXNwYWNlCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQSwgTm9uZSkKKworICAgICAgICBCID0gdHlwZSgiQiIsICgpLCB0ZXN0X25hbWVzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLmYoKSwgQikKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19tcm8oc2VsZik6CisgICAgICAgIHRlc3RfY2xhc3MgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBtcm8oc2VsZik6CisgICAgICAgICAgICAgICAgIyBzZWxmLmYoKSBkb2Vzbid0IHdvcmsgeWV0Li4uCisgICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1siZiJdKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5tcm8oKQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X2NsYXNzCisgICAgICAgICAgICAgICAgdGVzdF9jbGFzcyA9IF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jbGFzcywgQSkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NjZWxsX19fZGVsZXRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgZGVsIG5hbWVzcGFjZVsnX19jbGFzc2NlbGxfXyddCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIF9fY2xhc3NfXworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIEEuZigpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX3Jlc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBuYW1lc3BhY2VbJ19fY2xhc3NjZWxsX18nXSA9IDAKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgX19jbGFzc19fCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgQS5mKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLl9fY2xhc3NjZWxsX18sIDApCisKICAgICBkZWYgdGVzdF9vYnNjdXJlX3N1cGVyX2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHN1cGVyKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQppbmRleCAyYzAwNDE3Li4yNjlkOWJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CkBAIC05LDEzICs5LDExIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogVEVTVEZOID0gc3VwcG9ydC5URVNURk4KLVRFU1RESVJOID0gb3MucGF0aC5iYXNlbmFtZSh0ZW1wZmlsZS5ta2R0ZW1wKGRpcj0nLicpKQogCiAKIGNsYXNzIFRlc3RTdXBwb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKLSAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCiAgICAgdGVhckRvd24gPSBzZXRVcAogCiAgICAgZGVmIHRlc3RfaW1wb3J0X21vZHVsZShzZWxmKToKQEAgLTQ4LDYgKzQ2LDEwIEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3JtdHJlZShzZWxmKToKKyAgICAgICAgVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgVEVTVERJUk4pCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorCiAgICAgICAgIG9zLm1rZGlyKFRFU1RESVJOKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oVEVTVERJUk4sIFRFU1RESVJOKSkKICAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCkBAIC0yMjgsNyArMjMwLDggQEAKIAogICAgIGRlZiB0ZXN0X2NoZWNrX3N5bnRheF9lcnJvcihzZWxmKToKICAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBjbGFzcyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvciwgc2VsZiwgIjEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4PTEiKQogCiAgICAgZGVmIHRlc3RfQ2xlYW5JbXBvcnQoc2VsZik6CiAgICAgICAgIGltcG9ydCBpbXBvcnRsaWIKQEAgLTMxMiw2ICszMTUsMjggQEAKICAgICAgICAgICAgICAgICBzZWxmLk90aGVyQ2xhc3MsIHNlbGYuUmVmQ2xhc3MsIGlnbm9yZT1pZ25vcmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG1pc3NpbmdfaXRlbXMpCiAKKyAgICBkZWYgdGVzdF9jaGVja19fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyd0ZW1wZGlyJ30KKyAgICAgICAgYmxhY2tsaXN0ID0geyd0ZW1wbGF0ZSd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICAgICBleHRyYSA9IHsnVGV4dFRlc3RSZXN1bHQnLCAnaW5zdGFsbEhhbmRsZXInfQorICAgICAgICBibGFja2xpc3QgPSB7J2xvYWRfdGVzdHMnLCAiVGVzdFByb2dyYW0iLCAiQmFzZVRlc3RTdWl0ZSJ9CisKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidW5pdHRlc3QucmVzdWx0IiwgInVuaXR0ZXN0LmNhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0LnN1aXRlIiwgInVuaXR0ZXN0LmxvYWRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3QubWFpbiIsICJ1bml0dGVzdC5ydW5uZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0LnNpZ25hbHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHN1cHBvcnQuY2hlY2tfX2FsbF9fLCBzZWxmLCB1bml0dGVzdCkKKwogICAgICMgWFhYIC1mb2xsb3dzIGEgbGlzdCBvZiB1bnRlc3RlZCBBUEkKICAgICAjIG1ha2VfbGVnYWN5X3B5YwogICAgICMgaXNfcmVzb3VyY2VfZW5hYmxlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkgYi9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTMwNmY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkKQEAgLTAsMCArMSw1NCBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKKworCitTWU1CT0xfRklMRSAgICAgICAgICAgICAgPSBzdXBwb3J0LmZpbmRmaWxlKCdzeW1ib2wucHknKQorR1JBTU1BUl9GSUxFICAgICAgICAgICAgID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uJywgJy4uJywgJ0luY2x1ZGUnLCAnZ3JhbWluaXQuaCcpCitURVNUX1BZX0ZJTEUgICAgICAgICAgICAgPSAnc3ltYm9sX3Rlc3QucHknCisKKworY2xhc3MgVGVzdFN5bWJvbEdlbmVyYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIF9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfc3ltYm9scyhzZWxmLCBzb3VyY2VfZmlsZSwgZGVzdF9maWxlKToKKyAgICAgICAgd2l0aCBvcGVuKHNvdXJjZV9maWxlKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKGRlc3RfZmlsZSwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbOmxpbmVzLmluZGV4KCIjLS1zdGFydCBjb25zdGFudHMtLVxuIikgKyAxXSkKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbbGluZXMuaW5kZXgoIiMtLWVuZCBjb25zdGFudHMtLVxuIik6XSkKKworICAgIGRlZiBfZ2VuZXJhdGVfc3ltYm9scyhzZWxmLCBncmFtbWFyX2ZpbGUsIHRhcmdldF9zeW1ib2xfcHlfZmlsZSk6CisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZTUJPTF9GSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hcl9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3N5bWJvbF9weV9maWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpWzFdCisgICAgICAgIHJldHVybiBwcm9jLnJldHVybmNvZGUsIHN0ZGVycgorCisgICAgZGVmIGNvbXBhcmVfZmlsZXMoc2VsZiwgZmlsZTEsIGZpbGUyKToKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUxKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzMSA9IGZwLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggb3BlbihmaWxlMikgYXMgZnA6CisgICAgICAgICAgICBsaW5lczIgPSBmcC5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzMSwgbGluZXMyKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3Qgb3MucGF0aC5leGlzdHMoR1JBTU1BUl9GSUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG9ubHkgd29ya3MgZnJvbSBzb3VyY2UgYnVpbGQgZGlyZWN0b3J5JykKKyAgICBkZWYgdGVzdF9yZWFsX2dyYW1tYXJfYW5kX3N5bWJvbF9maWxlKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIG91dHB1dCkKKworICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfc3ltYm9scyhTWU1CT0xfRklMRSwgb3V0cHV0KQorCisgICAgICAgIGV4aXRjb2RlLCBzdGRlcnIgPSBzZWxmLl9nZW5lcmF0ZV9zeW1ib2xzKEdSQU1NQVJfRklMRSwgb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGV4aXRjb2RlKQorCisgICAgICAgIHNlbGYuY29tcGFyZV9maWxlcyhTWU1CT0xfRklMRSwgb3V0cHV0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQppbmRleCBjNWQ3ZmFjLi4zMDQ3MTY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKQEAgLTEzMyw2ICsxMzMsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuTWluZS5sb29rdXAoImFfbWV0aG9kIikuaXNfYXNzaWduZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmludGVybmFsLmxvb2t1cCgieCIpLmlzX2Fzc2lnbmVkKCkpCiAKKyAgICBkZWYgdGVzdF9hbm5vdGF0ZWQoc2VsZik6CisgICAgICAgIHN0MSA9IHN5bXRhYmxlLnN5bXRhYmxlKCdkZWYgZigpOlxuICAgIHg6IGludFxuJywgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIHN0MiA9IHN0MS5nZXRfY2hpbGRyZW4oKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3QyLmxvb2t1cCgneCcpLmlzX2xvY2FsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDIubG9va3VwKCd4JykuaXNfYW5ub3RhdGVkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3QyLmxvb2t1cCgneCcpLmlzX2dsb2JhbCgpKQorICAgICAgICBzdDMgPSBzeW10YWJsZS5zeW10YWJsZSgnZGVmIGYoKTpcbiAgICB4ID0gMVxuJywgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIHN0NCA9IHN0My5nZXRfY2hpbGRyZW4oKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Q0Lmxvb2t1cCgneCcpLmlzX2xvY2FsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3Q0Lmxvb2t1cCgneCcpLmlzX2Fubm90YXRlZCgpKQorCiAgICAgZGVmIHRlc3RfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnRvcC5sb29rdXAoInN5cyIpLmlzX2ltcG9ydGVkKCkpCiAKQEAgLTE1OCw5ICsxNjksMTEgQEAKICAgICAgICAgY2hlY2tmaWxlbmFtZSgiZGVmIGYoeCk6IGZvbykoIikgICMgcGFyc2UtdGltZQogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZ2xvYmFsIHgiKSAgIyBzeW10YWJsZS1idWlsZC10aW1lCiAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgYiJzcGFtIiwgImV4ZWMiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgYnl0ZWFycmF5KGIic3BhbSIpLCAiZXhlYyIpCi0gICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbWVtb3J5dmlldyhiInNwYW0iKSwgImV4ZWMiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbWVtb3J5dmlldyhiInNwYW0iKSwgImV4ZWMiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGxpc3QoYiJzcGFtIiksICJleGVjIikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQppbmRleCA4M2Y0OWY2Li44MGUzNmZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQpAQCAtMzUsMTQgKzM1LDYgQEAKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8ga2V5d29yZAogCi1JdCdzIGEgc3ludGF4IGVycm9yIHRvIGFzc2lnbiB0byB0aGUgZW1wdHkgdHVwbGUuICBXaHkgaXNuJ3QgaXQgYW4KLWVycm9yIHRvIGFzc2lnbiB0byB0aGUgZW1wdHkgbGlzdD8gIEl0IHdpbGwgYWx3YXlzIHJhaXNlIHNvbWUgZXJyb3IgYXQKLXJ1bnRpbWUuCi0KLT4+PiAoKSA9IDEKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gKCkKLQogPj4+IGYoKSA9IDEKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gZnVuY3Rpb24gY2FsbApAQCAtMzc0LDcgKzM2NiwyMyBAQAogICAgICAuLi4KICAgIFN5bnRheEVycm9yOiB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MKIAotTWlzdXNlIG9mIHRoZSBub25sb2NhbCBzdGF0ZW1lbnQgY2FuIGxlYWQgdG8gYSBmZXcgdW5pcXVlIHN5bnRheCBlcnJvcnMuCitNaXN1c2Ugb2YgdGhlIG5vbmxvY2FsIGFuZCBnbG9iYWwgc3RhdGVtZW50IGNhbiBsZWFkIHRvIGEgZmV3IHVuaXF1ZSBzeW50YXggZXJyb3JzLgorCisgICA+Pj4gZGVmIGYoKToKKyAgIC4uLiAgICAgeCA9IDEKKyAgIC4uLiAgICAgZ2xvYmFsIHgKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBTeW50YXhFcnJvcjogbmFtZSAneCcgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbgorCisgICA+Pj4gZGVmIGYoKToKKyAgIC4uLiAgICAgeCA9IDEKKyAgIC4uLiAgICAgZGVmIGcoKToKKyAgIC4uLiAgICAgICAgIHByaW50KHgpCisgICAuLi4gICAgICAgICBub25sb2NhbCB4CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgU3ludGF4RXJyb3I6IG5hbWUgJ3gnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24KIAogICAgPj4+IGRlZiBmKHgpOgogICAgLi4uICAgICBub25sb2NhbCB4CkBAIC00OTMsMTAgKzUwMSw2IEBACiAgICAuLi4KIFN5bnRheEVycm9yOiBrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkCiAKLT4+PiBkZWwgKCkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBjYW4ndCBkZWxldGUgKCkKLQogPj4+IHsxLCAyLCAzfSA9IDQyCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGxpdGVyYWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggNDQzNWQ2OS4uZGY5ZWJkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBnYwogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgbG9jYWxlCiAKICMgY291bnQgdGhlIG51bWJlciBvZiB0ZXN0IHJ1bnMsIHVzZWQgdG8gY3JlYXRlIHVuaXF1ZQogIyBzdHJpbmdzIHRvIGludGVybiBpbiB0ZXN0X2ludGVybigpCkBAIC02MjcsNiArNjI4LDggQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRlc3Quc3VwcG9ydC5GU19OT05BU0NJSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgT1Mgc3VwcG9ydCBvZiBub24tQVNDSUkgZW5jb2RpbmdzJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgPT0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgRlMgZW5jb2RpbmcgdG8gbWF0Y2ggbG9jYWxlJykKICAgICBkZWYgdGVzdF9pb2VuY29kaW5nX25vbmFzY2lpKHNlbGYpOgogICAgICAgICBlbnYgPSBkaWN0KG9zLmVudmlyb24pCiAKQEAgLTY2OSw4ICs2NzIsNiBAQAogICAgICAgICBmc19lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBleHBlY3RlZCA9ICd1dGYtOCcKLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgIGV4cGVjdGVkID0gJ21iY3MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHBlY3RlZCA9IE5vbmUKICAgICAgICAgc2VsZi5jaGVja19mc2VuY29kaW5nKGZzX2VuY29kaW5nLCBleHBlY3RlZCkKQEAgLTkxMiwxMyArOTEzLDEzIEBACiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKICAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2Nsb3N1cmVfX1swXSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGNvZGUKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQotICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc2aTEzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNmkxM1AnKSkKICAgICAgICAgZGVmIGdldF9jZWxsMih4KToKICAgICAgICAgICAgIGRlZiBpbm5lcigpOgogICAgICAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwyLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykgKyAxKQorICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzZpMTNQJykgKyAxKQogICAgICAgICAjIGNvbXBsZXgKICAgICAgICAgY2hlY2soY29tcGxleCgwLDEpLCBzaXplKCcyZCcpKQogICAgICAgICAjIG1ldGhvZF9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKQEAgLTkzNiw5ICs5MzcsOSBAQAogICAgICAgICAjIG1ldGhvZC13cmFwcGVyIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgY2hlY2soe30uX19pdGVyX18sIHNpemUoJzJQJykpCiAgICAgICAgICMgZGljdAotICAgICAgICBjaGVjayh7fSwgc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpICsgOCpjYWxjc2l6ZSgnbjJQJykpCisgICAgICAgIGNoZWNrKHt9LCBzaXplKCduUTJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKSArIDggKyAoOCoyLy8zKSpjYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgIGxvbmdkaWN0ID0gezE6MSwgMjoyLCAzOjMsIDQ6NCwgNTo1LCA2OjYsIDc6NywgODo4fQotICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpICsgMTYqY2FsY3NpemUoJ24yUCcpKQorICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnblEyUCcpICsgY2FsY3NpemUoJzJuUDJuJykgKyAxNiArICgxNioyLy8zKSpjYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS1rZXl2aWV3CiAgICAgICAgIGNoZWNrKHt9LmtleXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWV2aWV3CkBAIC0xMDk2LDEzICsxMDk3LDEzIEBACiAgICAgICAgICAgICAgICAgICAnMTBQJyAgICAgICAgICAgICAgICAgIyBQeVNlcXVlbmNlTWV0aG9kcwogICAgICAgICAgICAgICAgICAgJzJQJyAgICAgICAgICAgICAgICAgICMgUHlCdWZmZXJQcm9jcwogICAgICAgICAgICAgICAgICAgJzRQJykKLSAgICAgICAgIyBTZXBhcmF0ZSBibG9jayBmb3IgUHlEaWN0S2V5c09iamVjdCB3aXRoIDQgZW50cmllcwotICAgICAgICBzICs9IGNhbGNzaXplKCIyblBuIikgKyA0KmNhbGNzaXplKCJuMlAiKQorICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggOCBrZXlzIGFuZCA1IGVudHJpZXMKKyAgICAgICAgcyArPSBjYWxjc2l6ZSgiMm5QMm4iKSArIDggKyA1KmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCiAgICAgICAgIGNsYXNzIG5ld3N0eWxlY2xhc3Mob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzLCBzKQogICAgICAgICAjIGRpY3Qgd2l0aCBzaGFyZWQga2V5cwotICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ24yUCcgKyAnMm5QbicpKQorICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ25RMlAnICsgJzJuUDJuJykpCiAgICAgICAgICMgdW5pY29kZQogICAgICAgICAjIGVhY2ggdHVwbGUgY29udGFpbnMgYSBzdHJpbmcgYW5kIGl0cyBleHBlY3RlZCBjaGFyYWN0ZXIgc2l6ZQogICAgICAgICAjIGRvbid0IHB1dCBhbnkgc3RhdGljIHN0cmluZ3MgaGVyZSwgYXMgdGhleSBtYXkgY29udGFpbgpAQCAtMTE5MSw2ICsxMTkyLDMyIEBACiAgICAgICAgICMgc3lzLmZsYWdzCiAgICAgICAgIGNoZWNrKHN5cy5mbGFncywgdnNpemUoJycpICsgc2VsZi5QICogbGVuKHN5cy5mbGFncykpCiAKKyAgICBkZWYgdGVzdF9hc3luY2dlbl9ob29rcyhzZWxmKToKKyAgICAgICAgb2xkID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9sZC5maXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9sZC5maW5hbGl6ZXIpCisKKyAgICAgICAgZmlyc3RpdGVyID0gbGFtYmRhICphOiBOb25lCisgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoZmlyc3RpdGVyPWZpcnN0aXRlcikKKyAgICAgICAgaG9va3MgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maXJzdGl0ZXIsIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1swXSwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpbmFsaXplciwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1sxXSwgTm9uZSkKKworICAgICAgICBmaW5hbGl6ZXIgPSBsYW1iZGEgKmE6IE5vbmUKKyAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcyhmaW5hbGl6ZXI9ZmluYWxpemVyKQorICAgICAgICBob29rcyA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpcnN0aXRlciwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzBdLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmluYWxpemVyLCBmaW5hbGl6ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMV0sIGZpbmFsaXplcikKKworICAgICAgICBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzKCpvbGQpCisgICAgICAgIGN1ciA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjdXIuZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjdXIuZmluYWxpemVyKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFN5c01vZHVsZVRlc3QsIFNpemVvZlRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CmluZGV4IDUwOWJjM2UuLjI1YzU4MzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CkBAIC0zMzgsOCArMzM4LDggQEAKIAogICAgIGRlZiB0ZXN0XzE0X29ubGluZXJfaWYoc2VsZik6CiAgICAgICAgIGRlZiBvbmxpbmVycygpOgotICAgICAgICAgICAgaWYgVHJ1ZTogRmFsc2UKLSAgICAgICAgICAgIGVsc2U6IFRydWUKKyAgICAgICAgICAgIGlmIFRydWU6IHg9RmFsc2UKKyAgICAgICAgICAgIGVsc2U6IHg9VHJ1ZQogICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgc2VsZi5ydW5fYW5kX2NvbXBhcmUoCiAgICAgICAgICAgICBvbmxpbmVycywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKaW5kZXggYTIzYmYwNmEuLjA5MWU5MDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0zOTQsOCArMzk0LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbGludXgnIGluIHN1ZmZpeCwgc3VmZml4KQogICAgICAgICBpZiByZS5tYXRjaCgnKGlbMy02XTg2fHg4Nl82NCkkJywgbWFjaGluZSk6CiAgICAgICAgICAgICBpZiBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX2NoYXJfcCgpKSA9PSA0OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ2kzODYtbGludXgtZ251LnNvJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnV4MzIuc28nKSwKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCdpMzg2LWxpbnV4LWdudS5zbycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5lbmRzd2l0aCgnaTY4Ni1saW51eC1hbmRyb2lkLnNvJykgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251eDMyLnNvJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCkKICAgICAgICAgICAgIGVsc2U6ICMgOCBieXRlIHBvaW50ZXIgc2l6ZQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnUuc28nKSwgc3VmZml4KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IGFiZmIzNGQuLmQ3Nzg1Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIwNzQsNiArMjA3NCwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgdGFyZmlsZS5pdG4oMHgxMDAwMDAwMDAwMCwgNiwgdGFyZmlsZS5HTlVfRk9STUFUKQogCisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J3ZlcnNpb24nLCAnZ3JwJywgJ3B3ZCcsICdzeW1saW5rX2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAnTlVMJywgJ0JMT0NLU0laRScsICdSRUNPUkRTSVpFJywgJ0dOVV9NQUdJQycsCisgICAgICAgICAgICAgICAgICAgICAnUE9TSVhfTUFHSUMnLCAnTEVOR1RIX05BTUUnLCAnTEVOR1RIX0xJTksnLAorICAgICAgICAgICAgICAgICAgICAgJ0xFTkdUSF9QUkVGSVgnLCAnUkVHVFlQRScsICdBUkVHVFlQRScsICdMTktUWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdTWU1UWVBFJywgJ0NIUlRZUEUnLCAnQkxLVFlQRScsICdESVJUWVBFJywgJ0ZJRk9UWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdDT05UVFlQRScsICdHTlVUWVBFX0xPTkdOQU1FJywgJ0dOVVRZUEVfTE9OR0xJTksnLAorICAgICAgICAgICAgICAgICAgICAgJ0dOVVRZUEVfU1BBUlNFJywgJ1hIRFRZUEUnLCAnWEdMVFlQRScsICdTT0xBUklTX1hIRFRZUEUnLAorICAgICAgICAgICAgICAgICAgICAgJ1NVUFBPUlRFRF9UWVBFUycsICdSRUdVTEFSX1RZUEVTJywgJ0dOVV9UWVBFUycsCisgICAgICAgICAgICAgICAgICAgICAnUEFYX0ZJRUxEUycsICdQQVhfTkFNRV9GSUVMRFMnLCAnUEFYX05VTUJFUl9GSUVMRFMnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0bicsICdudHMnLCAnbnRpJywgJ2l0bicsICdjYWxjX2Noa3N1bXMnLCAnY29weWZpbGVvYmonLAorICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVtb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICdFbXB0eUhlYWRlckVycm9yJywgJ1RydW5jYXRlZEhlYWRlckVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICdFT0ZIZWFkZXJFcnJvcicsICdJbnZhbGlkSGVhZGVyRXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgJ1N1YnNlcXVlbnRIZWFkZXJFcnJvcicsICdFeEZpbGVPYmplY3QnLAorICAgICAgICAgICAgICAgICAgICAgJ21haW4nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCB0YXJmaWxlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCiAKIGNsYXNzIENvbW1hbmRMaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggOGUyMTlmNC4uNTFkODJlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgdGVsbmV0bGliCi1pbXBvcnQgdGltZQogaW1wb3J0IGNvbnRleHRsaWIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00Miw2ICs0MSwxMSBAQAogICAgICAgICB0ZWxuZXQgPSB0ZWxuZXRsaWIuVGVsbmV0KEhPU1QsIHNlbGYucG9ydCkKICAgICAgICAgdGVsbmV0LnNvY2suY2xvc2UoKQogCisgICAgZGVmIHRlc3RDb250ZXh0TWFuYWdlcihzZWxmKToKKyAgICAgICAgd2l0aCB0ZWxuZXRsaWIuVGVsbmV0KEhPU1QsIHNlbGYucG9ydCkgYXMgdG46CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh0bi5nZXRfc29ja2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRuLmdldF9zb2NrZXQoKSkKKwogICAgIGRlZiB0ZXN0VGltZW91dERlZmF1bHQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKSBpcyBOb25lKQogICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoMzApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IGI2MzA1MDkuLjg0NWU3ZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC04LDcgKzgsNiBAQAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKIGltcG9ydCByYW5kb20KLWltcG9ydCByZQogaW1wb3J0IHN5cwogX3RocmVhZCA9IGltcG9ydF9tb2R1bGUoJ190aHJlYWQnKQogdGhyZWFkaW5nID0gaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKQEAgLTE5LDYgKzE4LDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gdGVzdCBpbXBvcnQgbG9ja190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogIyBCZXR3ZWVuIGZvcmsoKSBhbmQgZXhlYygpLCBvbmx5IGFzeW5jLXNhZmUgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIChpc3N1ZXMKQEAgLTExMTcsNSArMTExNywxMiBAQAogY2xhc3MgQmFycmllclRlc3RzKGxvY2tfdGVzdHMuQmFycmllclRlc3RzKToKICAgICBiYXJyaWVydHlwZSA9IHN0YXRpY21ldGhvZCh0aHJlYWRpbmcuQmFycmllcikKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyJUaHJlYWRFcnJvciJ9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnY3VycmVudFRocmVhZCcsICdhY3RpdmVDb3VudCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHRocmVhZGluZywgKCd0aHJlYWRpbmcnLCAnX3RocmVhZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQppbmRleCA3NmI4OTRlLi5mMjI0MjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CkBAIC0xLDYgKzEsOCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IGVudW0KIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBtYXRoCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKQEAgLTIxLDE3ICsyMywyNyBAQAogVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIFRJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCiAKK1NFQ19UT19VUyA9IDEwICoqIDYKIFVTX1RPX05TID0gMTAgKiogMwogTVNfVE9fTlMgPSAxMCAqKiA2CiBTRUNfVE9fTlMgPSAxMCAqKiA5CitOU19UT19TRUMgPSAxMCAqKiA5CiAKIGNsYXNzIF9QeVRpbWUoZW51bS5JbnRFbnVtKToKICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCiAgICAgUk9VTkRfRkxPT1IgPSAwCiAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQogICAgIFJPVU5EX0NFSUxJTkcgPSAxCisgICAgIyBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgIFJPVU5EX0hBTEZfRVZFTiA9IDIKIAotQUxMX1JPVU5ESU5HX01FVEhPRFMgPSAoX1B5VGltZS5ST1VORF9GTE9PUiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKQorIyBSb3VuZGluZyBtb2RlcyBzdXBwb3J0ZWQgYnkgUHlUaW1lCitST1VORElOR19NT0RFUyA9ICgKKyAgICAjIChQeVRpbWUgcm91bmRpbmcgbWV0aG9kLCBkZWNpbWFsIHJvdW5kaW5nIG1ldGhvZCkKKyAgICAoX1B5VGltZS5ST1VORF9GTE9PUiwgZGVjaW1hbC5ST1VORF9GTE9PUiksCisgICAgKF9QeVRpbWUuUk9VTkRfQ0VJTElORywgZGVjaW1hbC5ST1VORF9DRUlMSU5HKSwKKyAgICAoX1B5VGltZS5ST1VORF9IQUxGX0VWRU4sIGRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOKSwKKykKIAogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjA3LDc5ICs2MTksNiBAQAogCiAKIGNsYXNzIFRlc3RQeXRpbWUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5pbnZhbGlkX3ZhbHVlcyA9ICgKLSAgICAgICAgICAgIC0oMiAqKiAxMDApLCAyICoqIDEwMCwKLSAgICAgICAgICAgIC0oMi4wICoqIDEwMC4wKSwgMi4wICoqIDEwMC4wLAotICAgICAgICApCi0KLSAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAotICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS45LCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS45LCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmosIHJuZCksIHRpbWVfdCkKLQotICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKLQotICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYwotICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYywgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCBpbnZhbGlkLCBybmQpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X2xvY2FsdGltZV90aW1lem9uZShzZWxmKToKIApAQCAtNzM0LDI2NiArNjczLDI5MSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX3pvbmUsIE5vbmUpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3Rlc3RjYXBpIGlzIG5vdCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGhlIF90ZXN0Y2FwaSBtb2R1bGUnKQotY2xhc3MgVGVzdFB5VGltZV90KHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIENQeVRpbWVUZXN0Q2FzZToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIHRvIHRlc3QgdGhlIEMgX1B5VGltZV90IEFQSS4KKyAgICAiIiIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgU0laRU9GX1RJTUVfVAorICAgICAgICBiaXRzID0gU0laRU9GX1RJTUVfVCAqIDggLSAxCisgICAgICAgIHNlbGYudGltZV90X21pbiA9IC0yICoqIGJpdHMKKyAgICAgICAgc2VsZi50aW1lX3RfbWF4ID0gMiAqKiBiaXRzIC0gMQorCisgICAgZGVmIHRpbWVfdF9maWx0ZXIoc2VsZiwgc2Vjb25kcyk6CisgICAgICAgIHJldHVybiAoc2VsZi50aW1lX3RfbWluIDw9IHNlY29uZHMgPD0gc2VsZi50aW1lX3RfbWF4KQorCisgICAgZGVmIF9yb3VuZGluZ192YWx1ZXMoc2VsZiwgdXNlX2Zsb2F0KToKKyAgICAgICAgIkJ1aWxkIHRpbWVzdGFtcHMgdXNlZCB0byB0ZXN0IHJvdW5kaW5nLiIKKworICAgICAgICB1bml0cyA9IFsxLCBVU19UT19OUywgTVNfVE9fTlMsIFNFQ19UT19OU10KKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBwaWNvc2Vjb25kcyBhcmUgb25seSB0ZXN0ZWQgdG8gcHl0aW1lX2NvbnZlcnRlciBhY2NlcHRpbmcgZmxvYXRzCisgICAgICAgICAgICB1bml0cy5hcHBlbmQoMWUtMykKKworICAgICAgICB2YWx1ZXMgPSAoCisgICAgICAgICAgICAjIHNtYWxsIHZhbHVlcworICAgICAgICAgICAgMSwgMiwgNSwgNywgMTIzLCA0NTYsIDEyMzQsCisgICAgICAgICAgICAjIDEwXmsgLSAxCisgICAgICAgICAgICA5LAorICAgICAgICAgICAgOTksCisgICAgICAgICAgICA5OTksCisgICAgICAgICAgICA5OTk5LAorICAgICAgICAgICAgOTk5OTksCisgICAgICAgICAgICA5OTk5OTksCisgICAgICAgICAgICAjIHRlc3QgaGFsZiBldmVuIHJvdW5kaW5nIG5lYXIgMC41LCAxLjUsIDIuNSwgMy41LCA0LjUKKyAgICAgICAgICAgIDQ5OSwgNTAwLCA1MDEsCisgICAgICAgICAgICAxNDk5LCAxNTAwLCAxNTAxLAorICAgICAgICAgICAgMjUwMCwKKyAgICAgICAgICAgIDM1MDAsCisgICAgICAgICAgICA0NTAwLAorICAgICAgICApCisKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IFswXQorICAgICAgICBmb3IgdW5pdCBpbiB1bml0czoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgbnMgPSB2YWx1ZSAqIHVuaXQKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisgICAgICAgIGZvciBwb3cyIGluICgwLCA1LCAxMCwgMTUsIDIyLCAyMywgMjQsIDMwLCAzMyk6CisgICAgICAgICAgICBucyA9ICgyICoqIHBvdzIpICogU0VDX1RPX05TCisgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgLW5zLTEsIC1ucywgLW5zKzEsCisgICAgICAgICAgICAgICAgbnMtMSwgbnMsIG5zKzEKKyAgICAgICAgICAgICkpCisgICAgICAgIGZvciBzZWNvbmRzIGluIChfdGVzdGNhcGkuSU5UX01JTiwgX3Rlc3RjYXBpLklOVF9NQVgpOgorICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5hcHBlbmQoc2Vjb25kcyAqIFNFQ19UT19OUykKKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBudW1iZXJzIHdpdGggYW4gZXhhY3QgcmVwcmVzZW50YXRpb24gaW4gSUVFRSA3NTQgKGJhc2UgMikKKyAgICAgICAgICAgIGZvciBwb3cyIGluICgzLCA3LCAxMCwgMTUpOgorICAgICAgICAgICAgICAgIG5zID0gMi4wICoqICgtcG93MikKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgIyBzZWNvbmRzIGNsb3NlIHRvIF9QeVRpbWVfdCB0eXBlIGxpbWl0CisgICAgICAgIG5zID0gKDIgKiogNjMgLy8gU0VDX1RPX05TKSAqIFNFQ19UT19OUworICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgcmV0dXJuIG5zX3RpbWVzdGFtcHMKKworICAgIGRlZiBfY2hlY2tfcm91bmRpbmcoc2VsZiwgcHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9mbG9hdCwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcj1Ob25lKToKKworICAgICAgICBkZWYgY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcyk6CisgICAgICAgICAgICBpZiB1c2VfZmxvYXQ6CisgICAgICAgICAgICAgICAgdW5pdF90b19ucyA9IFNFQ19UT19OUyAvIGZsb2F0KHVuaXRfdG9fc2VjKQorICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtucyAvIHVuaXRfdG9fbnMgZm9yIG5zIGluIG5zX3RpbWVzdGFtcHNdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHVuaXRfdG9fbnMgPSBTRUNfVE9fTlMgLy8gdW5pdF90b19zZWMKKyAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbbnMgLy8gdW5pdF90b19ucyBmb3IgbnMgaW4gbnNfdGltZXN0YW1wc10KKworICAgICAgICAgICAgaWYgdmFsdWVfZmlsdGVyOgorICAgICAgICAgICAgICAgIHZhbHVlcyA9IGZpbHRlcih2YWx1ZV9maWx0ZXIsIHZhbHVlcykKKworICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlcyBhbmQgc29ydAorICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQodmFsdWVzKSkKKworICAgICAgICAjIHRlc3Qgcm91bmRpbmcKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IHNlbGYuX3JvdW5kaW5nX3ZhbHVlcyh1c2VfZmxvYXQpCisgICAgICAgIHZhbGlkX3ZhbHVlcyA9IGNvbnZlcnRfdmFsdWVzKG5zX3RpbWVzdGFtcHMpCisgICAgICAgIGZvciB0aW1lX3JuZCwgZGVjaW1hbF9ybmQgaW4gUk9VTkRJTkdfTU9ERVMgOgorICAgICAgICAgICAgY29udGV4dCA9IGRlY2ltYWwuZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gZGVjaW1hbF9ybmQKKworICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvID0geyd2YWx1ZSc6IHZhbHVlLCAncm91bmRpbmcnOiBkZWNpbWFsX3JuZH0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkX2Z1bmModmFsdWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXJyb3Igb24gdGltZXN0YW1wIGNvbnZlcnNpb246ICVzIiAlIGRlYnVnX2luZm8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8pCisKKyAgICAgICAgIyB0ZXN0IG92ZXJmbG93CisgICAgICAgIG5zID0gc2VsZi5PVkVSRkxPV19TRUNPTkRTICogU0VDX1RPX05TCisgICAgICAgIG5zX3RpbWVzdGFtcHMgPSAoLW5zLCBucykKKyAgICAgICAgb3ZlcmZsb3dfdmFsdWVzID0gY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcykKKyAgICAgICAgZm9yIHRpbWVfcm5kLCBfIGluIFJPVU5ESU5HX01PREVTIDoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBvdmVyZmxvd192YWx1ZXM6CisgICAgICAgICAgICAgICAgZGVidWdfaW5mbyA9IHsndmFsdWUnOiB2YWx1ZSwgJ3JvdW5kaW5nJzogdGltZV9ybmR9CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtc2c9ZGVidWdfaW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorCisgICAgZGVmIGNoZWNrX2ludF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90b19zZWM9MSwgdmFsdWVfZmlsdGVyPU5vbmUpOgorICAgICAgICBzZWxmLl9jaGVja19yb3VuZGluZyhweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcikKKworICAgIGRlZiBjaGVja19mbG9hdF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3RvX3NlYz0xLCB2YWx1ZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3JvdW5kaW5nKHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUsIHVuaXRfdG9fc2VjLCB2YWx1ZV9maWx0ZXIpCisKKyAgICBkZWYgZGVjaW1hbF9yb3VuZChzZWxmLCB4KToKKyAgICAgICAgZCA9IGRlY2ltYWwuRGVjaW1hbCh4KQorICAgICAgICBkID0gZC5xdWFudGl6ZSgxKQorICAgICAgICByZXR1cm4gaW50KGQpCisKKworY2xhc3MgVGVzdENQeVRpbWUoQ1B5VGltZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgQyBfUHlUaW1lX3QgQVBJLgorICAgICIiIgorICAgICMgX1B5VGltZV90IGlzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCisgICAgT1ZFUkZMT1dfU0VDT05EUyA9IG1hdGguY2VpbCgoMioqNjMgKyAxKSAvIFNFQ19UT19OUykKKwogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzCi0gICAgICAgIGZvciBzZWNvbmRzIGluICgwLCAzLCAtNDU2LCBfdGVzdGNhcGkuSU5UX01BWCwgX3Rlc3RjYXBpLklOVF9NSU4pOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kcyhzZWNvbmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgKiBTRUNfVE9fTlMpCisKKyAgICAgICAgIyBQeVRpbWVfRnJvbVNlY29uZHMoKSBleHBlY3RzIGEgQyBpbnQsIHJlamVjdCB2YWx1ZXMgb3V0IG9mIHJhbmdlCisgICAgICAgIGRlZiBjX2ludF9maWx0ZXIoc2Vjcyk6CisgICAgICAgICAgICByZXR1cm4gKF90ZXN0Y2FwaS5JTlRfTUlOIDw9IHNlY3MgPD0gX3Rlc3RjYXBpLklOVF9NQVgpCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIHNlY3MsIHJuZDogUHlUaW1lX0Zyb21TZWNvbmRzKHNlY3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPWNfaW50X2ZpbHRlcikKIAogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CiAKLSAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCi0gICAgICAgICAgICAgICAgIyBpbnRlZ2VycwotICAgICAgICAgICAgICAgICgwLCAwKSwKLSAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoCisgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QsCisgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUykKIAotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKLSAgICAgICAgICAgICAgICAoMC4wLCAwKSwKLSAgICAgICAgICAgICAgICAoMWUtOSwgMSksCi0gICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAotICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKLQotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKLQotICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCi0gICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKLQotICAgICAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMioqMjMgKyAxZS05LCAgODM4ODYwODAwMDAwMDAwMiksCi0KLSAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmRzIGFyZSBsb3N0IGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyKioyNCAtIDFlLTksIDE2Nzc3MjE1OTk5OTk5OTk4KSwKLSAgICAgICAgICAgICAgICAoMioqMjQsICAgICAgICAxNjc3NzIxNjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI0ICsgMWUtOSwgMTY3NzcyMTYwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNSAtIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjUgICAgICAgLCAzMzU1NDQzMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI1ICsgMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAotCi0gICAgICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LjAsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNiwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNi4wLCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKLQotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qocm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNy4wLCBybmQpCi0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcuMCwgcm5kKQotCi0gICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtZXRob2QKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG9iaiwgdHMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIGNsb3NlIHRvIHplcm8KLSAgICAgICAgICAgICggMWUtMTAsICAwLCBGTE9PUiksCi0gICAgICAgICAgICAoIDFlLTEwLCAgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTFlLTEwLCAtMSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHRlc3Qgcm91bmRpbmcgb2YgdGhlIGxhc3QgbmFub3NlY29uZAotICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2Nzg5LCBGTE9PUiksCi0gICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3OTAsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2NzkwLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3ODksIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIGNsb3NlIHRvIDEgc2Vjb25kCi0gICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgICA5OTk5OTk5OTksIEZMT09SKSwKLSAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgMTAwMDAwMDAwMCwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgLTEwMDAwMDAwMDAsIEZMT09SKSwKLSAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAgLTk5OTk5OTk5OSwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZygKKyAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCwKKyAgICAgICAgICAgIGxhbWJkYSBuczogc2VsZi5kZWNpbWFsX3JvdW5kKG5zICogU0VDX1RPX05TKSkKIAogICAgIGRlZiB0ZXN0X0FzU2Vjb25kc0RvdWJsZShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1NlY29uZHNEb3VibGUKIAotICAgICAgICBmb3IgbmFub3NlY29uZHMsIHNlY29uZHMgaW4gKAotICAgICAgICAgICAgIyBuZWFyIDEgbmFub3NlY29uZAotICAgICAgICAgICAgKCAwLCAgMC4wKSwKLSAgICAgICAgICAgICggMSwgIDFlLTkpLAotICAgICAgICAgICAgKC0xLCAtMWUtOSksCisgICAgICAgIGRlZiBmbG9hdF9jb252ZXJ0ZXIobnMpOgorICAgICAgICAgICAgaWYgYWJzKG5zKSAlIFNFQ19UT19OUyA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucyAvLyBTRUNfVE9fTlMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucykgLyBTRUNfVE9fTlMKIAotICAgICAgICAgICAgIyBuZWFyIDEgc2Vjb25kCi0gICAgICAgICAgICAoU0VDX1RPX05TICsgMSwgMS4wICsgMWUtOSksCi0gICAgICAgICAgICAoU0VDX1RPX05TLCAgICAgMS4wKSwKLSAgICAgICAgICAgIChTRUNfVE9fTlMgLSAxLCAxLjAgLSAxZS05KSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIG5zLCBybmQ6IFB5VGltZV9Bc1NlY29uZHNEb3VibGUobnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgIyBhIGZldyBzZWNvbmRzCi0gICAgICAgICAgICAoMTIzICogU0VDX1RPX05TLCAxMjMuMCksCi0gICAgICAgICAgICAoLTU2NyAqIFNFQ19UT19OUywgLTU2Ny4wKSwKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKHNlbGYsIGRlbm9taW5hdG9yKToKKyAgICAgICAgZGVub20gPSBkZWNpbWFsLkRlY2ltYWwoZGVub21pbmF0b3IpCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoNDE5NDMwMzk5OTk5OTk5OSwgMioqMjIgLSAxZS05KSwKLSAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAwLCAyKioyMiksCi0gICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMSwgMioqMjIgKyAxZS05KSwKKyAgICAgICAgZGVmIGNvbnZlcnRlcih2YWx1ZSk6CisgICAgICAgICAgICBkID0gZGVjaW1hbC5EZWNpbWFsKHZhbHVlKSAvIGRlbm9tCisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNpbWFsX3JvdW5kKGQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICg4Mzg4NjA4MDAwMDAwMDAyLCAyKioyMyArIDFlLTkpLAorICAgICAgICByZXR1cm4gY29udmVydGVyCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTgsIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTksIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDAsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDEsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDIsIDIqKjI0ICsgMmUtOSksCi0KLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMCwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMiwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwNCwgMioqMjUgKyA0ZS05KSwKLQotICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAoOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgOTIyMzM3MjAzNi4wKSwKLSAgICAgICAgICAgICgtOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgLTkyMjMzNzIwMzYuMCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1uYW5vc2Vjb25kcywgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1NlY29uZHNEb3VibGUobmFub3NlY29uZHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcykKLQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgZGVmIHRlc3RfQXNUaW1ldmFsKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXZhbAotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCi0gICAgICAgICAgICAgICAgIyBtaWNyb3NlY29uZHMKLSAgICAgICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICAgICAoMTAwMCwgKDAsIDEpKSwKLSAgICAgICAgICAgICAgICAoLTEwMDAsICgtMSwgOTk5OTk5KSksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgKDIsIDApKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKyAgICAgICAgdXNfY29udmVydGVyID0gc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoVVNfVE9fTlMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCB0diwgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAoMCwgMCksIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OSksIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgKDAsIDApLCBDRUlMSU5HKSwKKyAgICAgICAgZGVmIHRpbWV2YWxfY29udmVydGVyKG5zKToKKyAgICAgICAgICAgIHVzID0gdXNfY29udmVydGVyKG5zKQorICAgICAgICAgICAgcmV0dXJuIGRpdm1vZCh1cywgU0VDX1RPX1VTKQogCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjcpLCBGTE9PUiksCi0gICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2OCksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMiksIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzMpLCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IExPTkdfTUlOLCBMT05HX01BWAorCisgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIHRpbWV2YWwudHZfc2VjIHR5cGUgaXMgYSBDIGxvbmcKKyAgICAgICAgICAgIGRlZiBzZWNvbmRzX2ZpbHRlcihzZWNzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTE9OR19NSU4gPD0gc2VjcyA8PSBMT05HX01BWAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vjb25kc19maWx0ZXIgPSBzZWxmLnRpbWVfdF9maWx0ZXIKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhQeVRpbWVfQXNUaW1ldmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1ldmFsX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2Vjb25kc19maWx0ZXIpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKF90ZXN0Y2FwaSwgJ1B5VGltZV9Bc1RpbWVzcGVjJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgX3Rlc3RjYXBpLlB5VGltZV9Bc1RpbWVzcGVjJykKLSAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKKyAgICBkZWYgdGVzdF9Bc1RpbWVzcGVjKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXNwZWMKLSAgICAgICAgZm9yIG5zLCB0cyBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSkpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OTk5OSkpLAogCi0gICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAotICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKyAgICAgICAgZGVmIHRpbWVzcGVjX2NvbnZlcnRlcihucyk6CisgICAgICAgICAgICByZXR1cm4gZGl2bW9kKG5zLCBTRUNfVE9fTlMpCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNDU2Nzg5MCwgKDEsIDIzNDU2Nzg5MCkpLAotICAgICAgICAgICAgKC0xMjM0NTY3ODkwLCAoLTIsIDc2NTQzMjExMCkpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWVzcGVjPXRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWVzcGVjKG5zKSwgdHMpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKGxhbWJkYSBucywgcm5kOiBQeVRpbWVfQXNUaW1lc3BlYyhucyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzcGVjX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQogCi0gICAgZGVmIHRlc3RfbWlsbGlzZWNvbmRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzTWlsbGlzZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWlsbGlzZWNvbmRzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKLSAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcwotICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEpLAotICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMiksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMCksCi0gICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMCksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgdHYpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKFB5VGltZV9Bc01pbGxpc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoTVNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCi0gICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKLSAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgbXMpCi0KLSAgICBkZWYgdGVzdF9taWNyb3NlY29uZHMoc2VsZik6CisgICAgZGVmIHRlc3RfQXNNaWNyb3NlY29uZHMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWNyb3NlY29uZHMKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAotICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBVU19UT19OUywgMSksCi0gICAgICAgICAgICAgICAgKC0yICogVVNfVE9fTlMsIC0yKSwKIAotICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMTAwMCksCi0gICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yMDAwKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoUHlUaW1lX0FzTWljcm9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihVU19UT19OUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwMDAwKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCB0dikKIAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgLTEsIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgMCwgQ0VJTElORyksCitjbGFzcyBUZXN0T2xkUHlUaW1lKENQeVRpbWVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdGhlIG9sZCBDIF9QeVRpbWVfdCBBUEk6IF9QeVRpbWVfT2JqZWN0VG9YWFgoKSBmdW5jdGlvbnMuCisgICAgIiIiCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAotICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNCwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCBtcykKKyAgICAjIHRpbWVfdCBpcyBhIDMyLWJpdCBvciA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gMiAqKiA2NAorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVfdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90CisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiBzZWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWNpbWFsX3JvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICBkZWYgY3JlYXRlX2NvbnZlcnRlcihzZWxmLCBzZWNfdG9fdW5pdCk6CisgICAgICAgIGRlZiBjb252ZXJ0ZXIoc2Vjcyk6CisgICAgICAgICAgICBmbG9hdHBhcnQsIGludHBhcnQgPSBtYXRoLm1vZGYoc2VjcykKKyAgICAgICAgICAgIGludHBhcnQgPSBpbnQoaW50cGFydCkKKyAgICAgICAgICAgIGZsb2F0cGFydCAqPSBzZWNfdG9fdW5pdAorICAgICAgICAgICAgZmxvYXRwYXJ0ID0gc2VsZi5kZWNpbWFsX3JvdW5kKGZsb2F0cGFydCkKKyAgICAgICAgICAgIGlmIGZsb2F0cGFydCA8IDA6CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ICs9IHNlY190b191bml0CisgICAgICAgICAgICAgICAgaW50cGFydCAtPSAxCisgICAgICAgICAgICBlbGlmIGZsb2F0cGFydCA+PSBzZWNfdG9fdW5pdDoKKyAgICAgICAgICAgICAgICBmbG9hdHBhcnQgLT0gc2VjX3RvX3VuaXQKKyAgICAgICAgICAgICAgICBpbnRwYXJ0ICs9IDEKKyAgICAgICAgICAgIHJldHVybiAoaW50cGFydCwgZmxvYXRwYXJ0KQorICAgICAgICByZXR1cm4gY29udmVydGVyCisKKyAgICBkZWYgdGVzdF9vYmplY3RfdG9fdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXZhbAorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IChzZWNzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb252ZXJ0ZXIoU0VDX1RPX1VTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYworCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiAoc2VjcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2NvbnZlcnRlcihTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKaW5kZXggMmRiM2MxYi4uMWE5NWUyOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKQEAgLTM1NCw2ICszNTQsMjggQEAKICAgICAgICAgICAgIHMgPSBzZWxmLnJ1bl9tYWluKHN3aXRjaGVzPVsnLW4xJywgJzEvMCddKQogICAgICAgICBzZWxmLmFzc2VydF9leGNfc3RyaW5nKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksICdaZXJvRGl2aXNpb25FcnJvcicpCiAKKyAgICBkZWYgYXV0b3JhbmdlKHNlbGYsIGNhbGxiYWNrPU5vbmUpOgorICAgICAgICB0aW1lciA9IEZha2VUaW1lcihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDEpCisgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zZWxmLmZha2Vfc3RtdCwgc2V0dXA9c2VsZi5mYWtlX3NldHVwLCB0aW1lcj10aW1lcikKKyAgICAgICAgcmV0dXJuIHQuYXV0b3JhbmdlKGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfYXV0b3JhbmdlKHNlbGYpOgorICAgICAgICBudW1fbG9vcHMsIHRpbWVfdGFrZW4gPSBzZWxmLmF1dG9yYW5nZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtX2xvb3BzLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVfdGFrZW4sIDEuMCkKKworICAgIGRlZiB0ZXN0X2F1dG9yYW5nZV93aXRoX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBkZWYgY2FsbGJhY2soYSwgYik6CisgICAgICAgICAgICBwcmludCgie30gezouM2Z9Ii5mb3JtYXQoYSwgYikpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIG51bV9sb29wcywgdGltZV90YWtlbiA9IHNlbGYuYXV0b3JhbmdlKGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bV9sb29wcywgMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lX3Rha2VuLCAxLjApCisgICAgICAgIGV4cGVjdGVkID0gKCcxMCAwLjAxMFxuJworICAgICAgICAgICAgICAgICAgICAnMTAwIDAuMTAwXG4nCisgICAgICAgICAgICAgICAgICAgICcxMDAwIDEuMDAwXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IDNiMTdjYTYuLjVhODFhNWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtNCw2ICs0LDggQEAKICAgICAgICAgICAgICAgICAgICAgIG9wZW4gYXMgdG9rZW5pemVfb3BlbiwgVW50b2tlbml6ZXIpCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgbW9jaworZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogaW1wb3J0IG9zCiBpbXBvcnQgdG9rZW4KIApAQCAtMjQsOCArMjYsNyBAQAogICAgICAgICAgICAgaWYgdHlwZSA9PSBFTkRNQVJLRVI6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHR5cGUgPSB0b2tfbmFtZVt0eXBlXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICUodHlwZSktMTAuMTBzICUodG9rZW4pLTEzLjEzciAlKHN0YXJ0KXMgJShlbmQpcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZiIgICAge3R5cGU6MTB9IHt0b2tlbiFyOjEzfSB7c3RhcnR9IHtlbmR9IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyIgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkiXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucnN0cmlwKCkuc3BsaXRsaW5lcygpKQpAQCAtMTMyLDE4ICsxMzMsMTggQEAKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IDB4ZmZmZmZmZmZmZmYiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQotICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZiAoMSwgNCkgKDEsIDE3KQorICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZmYnICgxLCA0KSAoMSwgMTcpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gMTIzMTQxMjQyMTUxMjUxNjE2MTEwIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKLSAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEgKDEsIDQpICgxLCAyNSkKKyAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEyNTE2MTYxMTAnICgxLCA0KSAoMSwgMjUpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gLTE1OTIxNTkwMjE1MDEyNTkxIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKICAgICBPUCAgICAgICAgICctJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQotICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MCAoMSwgNSkgKDEsIDIyKQorICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MDEyNTkxJyAoMSwgNSkgKDEsIDIyKQogICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Zsb2F0KHNlbGYpOgpAQCAtMTg2LDYgKzE4NywyMSBAQAogICAgIE5VTUJFUiAgICAgJzMuMTRlMTU5JyAgICAoMSwgNCkgKDEsIDEyKQogICAgICIiIikKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGRlZiBudW1iZXJfdG9rZW4ocyk6CisgICAgICAgICAgICBmID0gQnl0ZXNJTyhzLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIGZvciB0b2t0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSBpbiB0b2tlbml6ZShmLnJlYWRsaW5lKToKKyAgICAgICAgICAgICAgICBpZiB0b2t0eXBlID09IE5VTUJFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuCisgICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQgdG9rZW4nCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmICcoJyBpbiBsaXQ6CisgICAgICAgICAgICAgICAgIyB0aGlzIHdvbid0IHdvcmsgd2l0aCBjb21wb3VuZCBjb21wbGV4IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bWJlcl90b2tlbihsaXQpLCBsaXQpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChudW1iZXJfdG9rZW4obGl0KSwgbGl0KQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFN0cmluZyBsaXRlcmFscwogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gJyc7IHkgPSBcIlwiIiwgIiIiXApAQCAtMzA3LDYgKzMyMyw1MCBAQAogICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKICAgICBTVFJJTkcgICAgICdSQiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCiAgICAgIiIiKQorICAgICAgICAjIENoZWNrIDAsIDEsIGFuZCAyIGNoYXJhY3RlciBzdHJpbmcgcHJlZml4ZXMuCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUociciYVwKK2RlXAorZmciJywgIiIiXAorICAgIFNUUklORyAgICAgJyJhXFxcXFxcbmRlXFxcXFxcbmZnIlwnICgxLCAwKSAoMywgMykKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1ImFcCitkZSInLCAiIiJcCisgICAgU1RSSU5HICAgICAndSJhXFxcXFxcbmRlIlwnICAoMSwgMCkgKDIsIDMpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIncmIiYVwKK2QiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3JiImFcXFxcXFxuZCJcJyAgKDEsIDApICgyLCAyKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJyIiImFcCitiIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ1wiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1IiIiYVwKK2IiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAndVwiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidyYiIiImFcCitiXAorYyIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdyYiJcIiJhXFxcXFxcbmJcXFxcXFxuYyJcIiInICgxLCAwKSAoMywgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJ2YiYWJjIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnZlIiYXtifWMiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZSImF7Yn1jIicgICAoMSwgMCkgKDEsIDkpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCdmIiIiYWJjIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZcIlwiXCJhYmNcIlwiXCInICAoMSwgMCkgKDEsIDEwKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ2YiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiY1xcXFxcXG5kZWYiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInUmYiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdSZiJhYmNcXFxcXFxuZGVmIicgKDEsIDApICgyLCA0KQorICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJkZWYgZDIyKGEsIGIsIGM9MiwgZD0yLCAqayk6IHBhc3MiLCAiIiJcCkBAIC01MDUsNyArNTY1LDcgQEAKICAgICAgICAgIyBNZXRob2RzCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoIkBzdGF0aWNtZXRob2RcbmRlZiBmb28oeCx5KTogcGFzcyIsICIiIlwKICAgICBPUCAgICAgICAgICdAJyAgICAgICAgICAgKDEsIDApICgxLCAxKQotICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCAoMSwgMSkgKDEsIDEzKQorICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCcgKDEsIDEpICgxLCAxMykKICAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxMykgKDEsIDE0KQogICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMiwgMCkgKDIsIDMpCiAgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgyLCA0KSAoMiwgNykKQEAgLTE0ODgsMTAgKzE1NDgsMTAgQEAKIAogICAgICAgICAjIFRva2VuaXplIGlzIGJyb2tlbiBvbiB0ZXN0X3BlcDMxMzEucHkgYmVjYXVzZSByZWd1bGFyIGV4cHJlc3Npb25zIGFyZQogICAgICAgICAjIGJyb2tlbiBvbiB0aGUgb2JzY3VyZSB1bmljb2RlIGlkZW50aWZpZXJzIGluIGl0LiAqc2lnaCoKLSAgICAgICAgIyBXaXRoIHJvdW5kdHJpcCBleHRlbmRlZCB0byB0ZXN0IHRoZSA1LXR1cGxlIG1vZGUgb2YgIHVudG9rZW5pemUsCisgICAgICAgICMgV2l0aCByb3VuZHRyaXAgZXh0ZW5kZWQgdG8gdGVzdCB0aGUgNS10dXBsZSBtb2RlIG9mIHVudG9rZW5pemUsCiAgICAgICAgICMgNyBtb3JlIHRlc3RmaWxlcyBmYWlsLiAgUmVtb3ZlIHRoZW0gYWxzbyB1bnRpbCB0aGUgZmFpbHVyZSBpcyBkaWFnbm9zZWQuCiAKLSAgICAgICAgdGVzdGZpbGVzLnJlbW92ZShvcy5wYXRoLmpvaW4odGVtcGRpciwgInRlc3RfcGVwMzEzMS5weSIpKQorICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5IikpCiAgICAgICAgIGZvciBmIGluICgnYnVmZmVyJywgJ2J1aWx0aW4nLCAnZmlsZWlvJywgJ2luc3BlY3QnLCAnb3MnLCAncGxhdGZvcm0nLCAnc3lzJyk6CiAgICAgICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF8lcy5weSIpICUgZikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkKaW5kZXggMDRjODcyNi4uNGQwZmNhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCiBiYXNlcGF0aCA9IG9zLnBhdGguZGlybmFtZSggICAgICAgICAgICAgICAgICMgPHNyYy9pbnN0YWxsIGRpcj4KICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoICAgICAgICAgICAgICAgICMgTGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CmluZGV4IDBjMjk0ZWMuLjk0ODllZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CkBAIC0yLDEyICsyLDExIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCiAKIHNraXBfaWZfbWlzc2luZygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CmluZGV4IDEzMDUyOTUuLmZiNTY1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQpAQCAtMSwxMiArMSwxMSBAQAogIiIiVGVzdHMgZm9yIHRoZSBtZDVzdW0gc2NyaXB0IGluIHRoZSBUb29scyBkaXJlY3RvcnkuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCi1mcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZworZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkKaW5kZXggMDkxZmE2YS4uMjdjYmZlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weQpAQCAtMSwxMiArMSwxMCBAQAogIiIiVGVzdHMgZm9yIHRoZSBwZGVwcyBzY3JpcHQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCitmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CmluZGV4IDczNGJiYzIuLjY1ZGVlMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CkBAIC0xMzQsNiArMTM0LDExIEBACiBjbGFzcyBVbnBhcnNlVGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICMgVGVzdHMgZm9yIHNwZWNpZmljIGJ1Z3MgZm91bmQgaW4gZWFybGllciB2ZXJzaW9ucyBvZiB1bnBhcnNlCiAKKyAgICBkZWYgdGVzdF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgMjUxODAKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAociIiImYne2YiezB9IiozfSciIiIpCisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHIiIiJmJ3tmInt5fSIqM30nIiIiKQorCiAgICAgZGVmIHRlc3RfZGVsX3N0YXRlbWVudChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoImRlbCB4LCB5LCB6IikKIApAQCAtMjc5LDggKzI4NCwxOCBAQAogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgnVGVzdGluZyAlcycgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHJlYWRfcHlmaWxlKGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoc291cmNlKQorCisgICAgICAgICAgICAjIFNvbWUgZi1zdHJpbmdzIGFyZSBub3QgY29ycmVjdGx5IHJvdW5kLXRyaXBwZWQgYnkKKyAgICAgICAgICAgICMgIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LiAgU2VlIGlzc3VlIDI4MDAyIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgIyAgV2UgbmVlZCB0byBza2lwIGZpbGVzIHRoYXQgY29udGFpbiBzdWNoIGYtc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpIGluICgndGVzdF9mc3RyaW5nLnB5JywgKToKKyAgICAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZidTa2lwcGluZyB7ZmlsZW5hbWV9OiBzZWUgaXNzdWUgMjgwMDInKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSByZWFkX3B5ZmlsZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChzb3VyY2UpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IDAzZGZmODQuLjFkODk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtMSwxMSArMSwxMSBAQAogaW1wb3J0IG9zCi1pbXBvcnQgaW8KIGltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJtdHJlZSwgdW5saW5rLCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0cmFjZQotZnJvbSB0cmFjZSBpbXBvcnQgQ292ZXJhZ2VSZXN1bHRzLCBUcmFjZQorZnJvbSB0cmFjZSBpbXBvcnQgVHJhY2UKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIApAQCAtMzY1LDUxICszNjUsMjcgQEAKICAgICAgICAgIyBNYXRjaGVkIGJlZm9yZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlnbm9yZS5uYW1lcyhqbignYmFyJywgJ2Jhei5weScpLCAnYmF6JykpCiAKK2NsYXNzIFRlc3RDb21tYW5kTGluZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLWNsYXNzIFRlc3REZXByZWNhdGVkTWV0aG9kcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmFpbHVyZXMoc2VsZik6CisgICAgICAgIF9lcnJvcnMgPSAoCisgICAgICAgICAgICAoYidmaWxlbmFtZSBpcyBtaXNzaW5nOiByZXF1aXJlZCB3aXRoIHRoZSBtYWluIG9wdGlvbnMnLCAnLWwnLCAnLVQnKSwKKyAgICAgICAgICAgIChiJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpJywgJy1sYycpLAorICAgICAgICAgICAgKGInYXJndW1lbnQgLVIvLS1uby1yZXBvcnQ6IG5vdCBhbGxvd2VkIHdpdGggYXJndW1lbnQgLXIvLS1yZXBvcnQnLCAnLXJSJyksCisgICAgICAgICAgICAoYidtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAtLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJywgJy1nJyksCisgICAgICAgICAgICAoYictci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnLCAnLXInKSwKKyAgICAgICAgICAgIChiJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcsICctc1QnKSwKKyAgICAgICAgICAgIChiJ3VucmVjb2duaXplZCBhcmd1bWVudHM6IC15JywgJy15JykpCisgICAgICAgIGZvciBtZXNzYWdlLCAqYXJncyBpbiBfZXJyb3JzOgorICAgICAgICAgICAgKl8sIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAndHJhY2UnLCAqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWVzc2FnZSwgc3RkZXJyKQogCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF91c2FnZShzZWxmKToKLSAgICAgICAgc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLnVzYWdlKHNpbykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignVXNhZ2U6Jywgc2lvLmdldHZhbHVlKCkpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX0lnbm9yZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5JZ25vcmUoKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9tb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5tb2RuYW1lKCJzcGFtIikpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Z1bGxtb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5mdWxsbW9kbmFtZSgic3BhbSIpKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2xpbmVzX2Zyb21fY29kZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoZm9vLl9fY29kZV9fLCBbImVnZ3MiXSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9saW5lcyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lcyhmb28uX19jb2RlX18sIFsiZWdncyJdKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX3N0cmluZ3Moc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdGZ1bmNzX2ZsYWdfc3VjY2VzcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmZDoKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIFRFU1RGTikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5maW5kX3N0cmluZ3MoZmQubmFtZSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9leGVjdXRhYmxlX2xpbmVub3Moc2VsZik6Ci0gICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmQ6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UuZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmQubmFtZSkKLQorICAgICAgICAgICAgZmQud3JpdGUoImEgPSAxXG4iKQorICAgICAgICAgICAgc3RhdHVzLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ3RyYWNlJywgJy1sJywgVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2Z1bmN0aW9ucyBjYWxsZWQ6Jywgc3Rkb3V0KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA0OWNlZGRhLi43Mjc2YmM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMTI1LDEyICsxMjUsMTIgQEAKICAgICAgICAgZGVmIGRvX3Rlc3QoZmlyc3RsaW5lcywgbWVzc2FnZSwgY2hhcnNldCwgbGluZW5vKToKICAgICAgICAgICAgICMgUmFpc2UgdGhlIG1lc3NhZ2UgaW4gYSBzdWJwcm9jZXNzLCBhbmQgY2F0Y2ggdGhlIG91dHB1dAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IG9wZW4oVEVTVEZOLCAidyIsIGVuY29kaW5nPWNoYXJzZXQpCi0gICAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKCIiInswfWlmIDE6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignezF9JykKLSAgICAgICAgICAgICAgICAgICAgIiIiLmZvcm1hdChmaXJzdGxpbmVzLCBtZXNzYWdlKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3IiwgZW5jb2Rpbmc9Y2hhcnNldCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoIiIiezB9aWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3sxfScpCisgICAgICAgICAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KGZpcnN0bGluZXMsIG1lc3NhZ2UpKQorCiAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCBURVNURk5dLAogICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKQEAgLTE3MSw4ICsxNzEsOCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQogICAgICAgICAgICAgZG9fdGVzdCgiIFx0XGZcbiMgY29kaW5nOiB7MH1cbiIuZm9ybWF0KGNoYXJzZXQpLAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQotICAgICAgICAjIElzc3VlICMxODk2MDogY29kaW5nIHNwZWMgc2hvdWxkIGhhcyBubyBlZmZlY3QKLSAgICAgICAgZG9fdGVzdCgiMFxuIyBjb2Rpbmc6IEdCS1xuIiwgImhceGU5IGhvIiwgJ3V0Zi04JywgNSkKKyAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBkb190ZXN0KCJ4PTBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc190eXBlX2NvbGxlY3RpbmcKICAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKQEAgLTI5OSw2ICsyOTksMTM3IEBACiAgICAgICAgICAgICAnICAgIHRyYWNlYmFjay5wcmludF9zdGFjaygpJywKICAgICAgICAgXSkKIAorICAgICMgaXNzdWUgMjY4MjMgLSBTaHJpbmsgcmVjdXJzaXZlIHRyYWNlYmFja3MKKyAgICBkZWYgX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheShzZWxmLCByZW5kZXJfZXhjKToKKyAgICAgICAgIyBBbHdheXMgc2hvdyBmdWxsIGRpZmZzIHdoZW4gdGhpcyB0ZXN0IGZhaWxzCisgICAgICAgICMgTm90ZSB0aGF0IHJlYXJyYW5naW5nIHRoaW5ncyBtYXkgcmVxdWlyZSBhZGp1c3RpbmcKKyAgICAgICAgIyB0aGUgcmVsYXRpdmUgbGluZSBudW1iZXJzIGluIHRoZSBleHBlY3RlZCB0cmFjZWJhY2tzCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKworICAgICAgICAjIENoZWNrIGhpdHRpbmcgdGhlIHJlY3Vyc2lvbiBsaW1pdAorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgZigpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycl9mOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYoKQorICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyByZWN1cnNpb24gb2NjdXJyZWQiKQorCisgICAgICAgIGxpbmVub19mID0gZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubworICAgICAgICByZXN1bHRfZiA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzV9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZisxfSwgaW4gZlxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrMX0sIGluIGZcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzF9LCBpbiBmXG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgbGluZSBjaGFuZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB0ZXN0cworICAgICAgICAgICAgIyBhcmUgcnVuIHRocm91Z2ggdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIG9yIHdpdGggLW0KKyAgICAgICAgICAgICMgSXQgYWxzbyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSAoc3RhY2sgc2l6ZSkKKyAgICAgICAgICAgICMgRm9ydHVuYXRlbHksIHdlIGRvbid0IGNhcmUgYWJvdXQgZXhhY3RuZXNzIGhlcmUsIHNvIHdlIHVzZSByZWdleAorICAgICAgICAgICAgcicgIFxbUHJldmlvdXMgbGluZSByZXBlYXRlZCAoXGQrKSBtb3JlIHRpbWVzXF0nICdcbicKKyAgICAgICAgICAgICdSZWN1cnNpb25FcnJvcjogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWRcbicKKyAgICAgICAgKQorCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0X2Yuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9mLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0cHV0IHRleHQgbWF0Y2hlcyBleHBlY3RhdGlvbnMKKyAgICAgICAgIyAybmQgbGFzdCBsaW5lIGNvbnRhaW5zIHRoZSByZXBldGl0aW9uIGNvdW50CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsWzotMl0sIGV4cGVjdGVkWzotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoYWN0dWFsWy0yXSwgZXhwZWN0ZWRbLTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFstMV0sIGV4cGVjdGVkWy0xXSkKKworICAgICAgICAjIENoZWNrIHRoZSByZWN1cnNpb24gY291bnQgaXMgcm91Z2hseSBhcyBleHBlY3RlZAorICAgICAgICByZWNfbGltaXQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFzc2VydEluKGludChyZS5zZWFyY2gociJcZCsiLCBhY3R1YWxbLTJdKS5ncm91cCgpKSwgcmFuZ2UocmVjX2xpbWl0LTYwLCByZWNfbGltaXQpKQorCisgICAgICAgICMgQ2hlY2sgYSBrbm93biAobGltaXRlZCkgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBpbnZvY2F0aW9ucworICAgICAgICBkZWYgZyhjb3VudD0xMCk6CisgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZyhjb3VudC0xKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfZzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9fZyA9IGcuX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2cgPSAoCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICAnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCA2IG1vcmUgdGltZXNdXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzN9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJhaXNlIFZhbHVlRXJyb3JcbicKKyAgICAgICAgICAgICdWYWx1ZUVycm9yXG4nCisgICAgICAgICkKKyAgICAgICAgdGJfbGluZSA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzd9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGcoKVxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gKHRiX2xpbmUgKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9nLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgICAgICAjIENoZWNrIDIgZGlmZmVyZW50IHJlcGV0aXRpdmUgc2VjdGlvbnMKKyAgICAgICAgZGVmIGgoY291bnQ9MTApOgorICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGgoY291bnQtMSkKKyAgICAgICAgICAgIGcoKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfaDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9faCA9IGguX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2ggPSAoCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCs3fSwgaW4gX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheVxuJworICAgICAgICAgICAgJyAgICBoKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgICcgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDYgbW9yZSB0aW1lc11cbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grM30sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgZygpXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSAocmVzdWx0X2ggKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9oLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV90cmFjZWJhY2tfcHl0aG9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkodHJhY2ViYWNrLnByaW50X2V4YykKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfdHJhY2ViYWNrX2NweXRob25faW50ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBleGNlcHRpb25fcHJpbnQKKyAgICAgICAgZGVmIHJlbmRlcl9leGMoKToKKyAgICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGNlcHRpb25fcHJpbnQoZXhjX3ZhbHVlKQorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkocmVuZGVyX2V4YykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdGFjayhzZWxmKToKICAgICAgICAgZGVmIGZtdCgpOgogICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfc3RhY2soKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKaW5kZXggZGE4OWE5YS4uNzkwYWI3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CkBAIC0xMSw5ICsxMSwxNSBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKKwogCiBFTVBUWV9TVFJJTkdfU0laRSA9IHN5cy5nZXRzaXplb2YoYicnKQogCisKIGRlZiBnZXRfZnJhbWVzKG5mcmFtZSwgbGluZW5vX2RlbHRhKToKICAgICBmcmFtZXMgPSBbXQogICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQpAQCAtMzcsMjggKzQzLDMxIEBACiBkZWYgY3JlYXRlX3NuYXBzaG90cygpOgogICAgIHRyYWNlYmFja19saW1pdCA9IDIKIAorICAgICMgX3RyYWNlbWFsbG9jLl9nZXRfdHJhY2VzKCkgcmV0dXJucyBhIGxpc3Qgb2YgKGRvbWFpbiwgc2l6ZSwKKyAgICAjIHRyYWNlYmFja19mcmFtZXMpIHR1cGxlcy4gdHJhY2ViYWNrX2ZyYW1lcyBpcyBhIHR1cGxlIG9mIChmaWxlbmFtZSwKKyAgICAjIGxpbmVfbnVtYmVyKSB0dXBsZXMuCiAgICAgcmF3X3RyYWNlcyA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKIAotICAgICAgICAoNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKICAgICBdCiAgICAgc25hcHNob3QgPSB0cmFjZW1hbGxvYy5TbmFwc2hvdChyYXdfdHJhY2VzLCB0cmFjZWJhY2tfbGltaXQpCiAKICAgICByYXdfdHJhY2VzMiA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg0MDAsICgoJ2MucHknLCA1NzgpLCkpLAorICAgICAgICAoNCwgNDAwLCAoKCdjLnB5JywgNTc4KSwpKSwKICAgICBdCiAgICAgc25hcHNob3QyID0gdHJhY2VtYWxsb2MuU25hcHNob3QocmF3X3RyYWNlczIsIHRyYWNlYmFja19saW1pdCkKIApAQCAtMTI2LDcgKzEzNSw3IEBACiAKICAgICBkZWYgZmluZF90cmFjZShzZWxmLCB0cmFjZXMsIHRyYWNlYmFjayk6CiAgICAgICAgIGZvciB0cmFjZSBpbiB0cmFjZXM6Ci0gICAgICAgICAgICBpZiB0cmFjZVsxXSA9PSB0cmFjZWJhY2suX2ZyYW1lczoKKyAgICAgICAgICAgIGlmIHRyYWNlWzJdID09IHRyYWNlYmFjay5fZnJhbWVzOgogICAgICAgICAgICAgICAgIHJldHVybiB0cmFjZQogCiAgICAgICAgIHNlbGYuZmFpbCgidHJhY2Ugbm90IGZvdW5kIikKQEAgLTE0MCw3ICsxNDksNyBAQAogICAgICAgICB0cmFjZSA9IHNlbGYuZmluZF90cmFjZSh0cmFjZXMsIG9ial90cmFjZWJhY2spCiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRyYWNlLCB0dXBsZSkKLSAgICAgICAgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIG9ial9zaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlYmFjaywgb2JqX3RyYWNlYmFjay5fZnJhbWVzKQogCkBAIC0xNjcsOSArMTc2LDggQEAKIAogICAgICAgICB0cmFjZTEgPSBzZWxmLmZpbmRfdHJhY2UodHJhY2VzLCBvYmoxX3RyYWNlYmFjaykKICAgICAgICAgdHJhY2UyID0gc2VsZi5maW5kX3RyYWNlKHRyYWNlcywgb2JqMl90cmFjZWJhY2spCi0gICAgICAgIHNpemUxLCB0cmFjZWJhY2sxID0gdHJhY2UxCi0gICAgICAgIHNpemUyLCB0cmFjZWJhY2syID0gdHJhY2UyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2ViYWNrMiwgdHJhY2ViYWNrMSkKKyAgICAgICAgZG9tYWluMSwgc2l6ZTEsIHRyYWNlYmFjazEgPSB0cmFjZTEKKyAgICAgICAgZG9tYWluMiwgc2l6ZTIsIHRyYWNlYmFjazIgPSB0cmFjZTIKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0cmFjZWJhY2syLCB0cmFjZWJhY2sxKQogCiAgICAgZGVmIHRlc3RfZ2V0X3RyYWNlZF9tZW1vcnkoc2VsZik6CkBAIC0yOTIsNyArMzAwLDcgQEAKICAgICBtYXhEaWZmID0gNDAwMAogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3NuYXBzaG90KHNlbGYpOgotICAgICAgICByYXdfdHJhY2VzID0gWyg1LCAoKCdhLnB5JywgMiksKSldCisgICAgICAgIHJhd190cmFjZXMgPSBbKDAsIDUsICgoJ2EucHknLCAyKSwpKV0KIAogICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CiAgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KHBhdGNoLm9iamVjdCh0cmFjZW1hbGxvYywgJ2lzX3RyYWNpbmcnLApAQCAtMzIyLDExICszMzAsMTEgQEAKICAgICAgICAgIyBleGNsdWRlIGIucHkKICAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWwotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICg3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCiAgICAgICAgIF0pCiAKICAgICAgICAgIyBmaWx0ZXJfdHJhY2VzKCkgbXVzdCBub3QgdG91Y2ggdGhlIG9yaWdpbmFsIHNuYXBzaG90CkBAIC0zMzUsMTAgKzM0MywxMCBAQAogICAgICAgICAjIG9ubHkgaW5jbHVkZSB0d28gbGluZXMgb2YgYS5weQogICAgICAgICBzbmFwc2hvdDQgPSBzbmFwc2hvdDMuZmlsdGVyX3RyYWNlcygoZmlsdGVyMiwgZmlsdGVyMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3Q0LnRyYWNlcy5fdHJhY2VzLCBbCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKICAgICAgICAgXSkKIAogICAgICAgICAjIE5vIGZpbHRlcjoganVzdCBkdXBsaWNhdGUgdGhlIHNuYXBzaG90CkBAIC0zNDksNiArMzU3LDU0IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzLCBmaWx0ZXIxKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW4oc2VsZik6CisgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKKyAgICAgICAgZmlsdGVyMSA9IHRyYWNlbWFsbG9jLkZpbHRlcihGYWxzZSwgImEucHkiLCBkb21haW49MSkKKyAgICAgICAgZmlsdGVyMiA9IHRyYWNlbWFsbG9jLkZpbHRlcihUcnVlLCAiYS5weSIsIGRvbWFpbj0xKQorCisgICAgICAgIG9yaWdpbmFsX3RyYWNlcyA9IGxpc3Qoc25hcHNob3QudHJhY2VzLl90cmFjZXMpCisKKyAgICAgICAgIyBleGNsdWRlIGEucHkgb2YgZG9tYWluIDEKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAxCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW5fZmlsdGVyKHNlbGYpOgorICAgICAgICBzbmFwc2hvdCwgc25hcHNob3QyID0gY3JlYXRlX3NuYXBzaG90cygpCisgICAgICAgIGZpbHRlcjEgPSB0cmFjZW1hbGxvYy5Eb21haW5GaWx0ZXIoRmFsc2UsIGRvbWFpbj0zKQorICAgICAgICBmaWx0ZXIyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIGRvbWFpbj0zKQorCisgICAgICAgICMgZXhjbHVkZSBkb21haW4gMgorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAyCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjIsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgXSkKKwogICAgIGRlZiB0ZXN0X3NuYXBzaG90X2dyb3VwX2J5X2xpbmUoc2VsZik6CiAgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKICAgICAgICAgdGJfMCA9IHRyYWNlYmFja19saW5lbm8oJzx1bmtub3duPicsIDApCkBAIC04MTYsMTIgKzg3MiwxMjEgQEAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLVgnLCAndHJhY2VtYWxsb2MnLCAnLWMnLCBjb2RlKQogCiAKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCitjbGFzcyBUZXN0Q0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IDgwICogMjAKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgdHJhY2VtYWxsb2MuaXNfdHJhY2luZygpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidHJhY2VtYWxsb2MgbXVzdCBiZSBzdG9wcGVkIGJlZm9yZSB0aGUgdGVzdCIpCisKKyAgICAgICAgc2VsZi5kb21haW4gPSA1CisgICAgICAgIHNlbGYuc2l6ZSA9IDEyMworICAgICAgICBzZWxmLm9iaiA9IGFsbG9jYXRlX2J5dGVzKHNlbGYuc2l6ZSlbMF0KKworICAgICAgICAjIGZvciB0aGUgdHlwZSAib2JqZWN0IiwgaWQob2JqKSBpcyB0aGUgYWRkcmVzcyBvZiBpdHMgbWVtb3J5IGJsb2NrLgorICAgICAgICAjIFRoaXMgdHlwZSBpcyBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKKyAgICAgICAgc2VsZi5wdHIgPSBpZChzZWxmLm9iaikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICBkZWYgZ2V0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgZnJhbWVzID0gX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorICAgICAgICBpZiBmcmFtZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdHJhY2soc2VsZiwgcmVsZWFzZV9naWw9RmFsc2UsIG5mcmFtZT0xKToKKyAgICAgICAgZnJhbWVzID0gZ2V0X2ZyYW1lcyhuZnJhbWUsIDIpCisgICAgICAgIF90ZXN0Y2FwaS50cmFjZW1hbGxvY190cmFjayhzZWxmLmRvbWFpbiwgc2VsZi5wdHIsIHNlbGYuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfZ2lsKQorICAgICAgICByZXR1cm4gZnJhbWVzCisKKyAgICBkZWYgdW50cmFjayhzZWxmKToKKyAgICAgICAgX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX3VudHJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorCisgICAgZGVmIGdldF90cmFjZWRfbWVtb3J5KHNlbGYpOgorICAgICAgICAjIEdldCB0aGUgdHJhY2VkIHNpemUgaW4gdGhlIGRvbWFpbgorICAgICAgICBzbmFwc2hvdCA9IHRyYWNlbWFsbG9jLnRha2Vfc25hcHNob3QoKQorICAgICAgICBkb21haW5fZmlsdGVyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIHNlbGYuZG9tYWluKQorICAgICAgICBzbmFwc2hvdCA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoW2RvbWFpbl9maWx0ZXJdKQorICAgICAgICByZXR1cm4gc3VtKHRyYWNlLnNpemUgZm9yIHRyYWNlIGluIHNuYXBzaG90LnRyYWNlcykKKworICAgIGRlZiBjaGVja190cmFjayhzZWxmLCByZWxlYXNlX2dpbCk6CisgICAgICAgIG5mcmFtZSA9IDUKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQobmZyYW1lKQorCisgICAgICAgIHNpemUgPSB0cmFjZW1hbGxvYy5nZXRfdHJhY2VkX21lbW9yeSgpWzBdCisKKyAgICAgICAgZnJhbWVzID0gc2VsZi50cmFjayhyZWxlYXNlX2dpbCwgbmZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlYmFjaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jLlRyYWNlYmFjayhmcmFtZXMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCBzZWxmLnNpemUpCisKKyAgICBkZWYgdGVzdF90cmFjayhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190cmFjayhGYWxzZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19UcmFjaygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgICMgd29ya3MgdG9vCisgICAgICAgIHNlbGYuY2hlY2tfdHJhY2soVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX2FscmVhZHlfdHJhY2tlZChzZWxmKToKKyAgICAgICAgbmZyYW1lID0gNQorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydChuZnJhbWUpCisKKyAgICAgICAgIyB0cmFjayBhIGZpcnN0IHRpbWUKKyAgICAgICAgc2VsZi50cmFjaygpCisKKyAgICAgICAgIyBjYWxsaW5nIF9QeVRyYWNlTWFsbG9jX1RyYWNrKCkgbXVzdCByZW1vdmUgdGhlIG9sZCB0cmFjZSBhbmQgYWRkCisgICAgICAgICMgYSBuZXcgdHJhY2Ugd2l0aCB0aGUgbmV3IHRyYWNlYmFjaworICAgICAgICBmcmFtZXMgPSBzZWxmLnRyYWNrKG5mcmFtZT1uZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2ViYWNrKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykpCisKKyAgICBkZWYgdGVzdF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisKKyAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlZF9tZW1vcnkoKSwgc2VsZi5zaXplKQorCisgICAgICAgICMgdW50cmFjayBtdXN0IHJlbW92ZSB0aGUgdHJhY2UKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5nZXRfdHJhY2ViYWNrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCAwKQorCisgICAgICAgICMgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKCkgbXVsdGlwbGUgdGltZXMgbXVzdCBub3QgY3Jhc2gKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKworICAgIGRlZiB0ZXN0X3N0b3BfdHJhY2soc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorCisgICAgZGVmIHRlc3Rfc3RvcF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisgICAgICAgIHNlbGYudHJhY2soKQorCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnVudHJhY2soKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFRyYWNlbWFsbG9jRW5hYmxlZCwKICAgICAgICAgVGVzdFNuYXBzaG90LAogICAgICAgICBUZXN0RmlsdGVycywKICAgICAgICAgVGVzdENvbW1hbmRMaW5lLAorICAgICAgICBUZXN0Q0FQSSwKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQppbmRleCA0OTBlNzIzLi40NjI2NjVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKaW5kZXggNTY2ZmM5ZC4uNzU0MGE0MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgb3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAjIFNraXAgdGhpcyB0ZXN0IGlmIF90a2ludGVyIGRvZXMgbm90IGV4aXN0LgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKaW5kZXggNWU3NDExNS4uMzgyY2EwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CkBAIC00OCw2ICs0OCw3IEBACiAgICAgZGVmIHRlc3RfZmxvYXRfY29uc3RydWN0b3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICc1XDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJzVfNVwwJykKIAogICAgIGRlZiB0ZXN0X3plcm9fZGl2aXNpb24oc2VsZik6CiAgICAgICAgIHRyeTogNS4wIC8gMC4wCkBAIC0xMDAwLDYgKzEwMDEsMjQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgWCA9IHR5cGVzLm5ld19jbGFzcygiWCIsIChpbnQoKSwgQykpCiAKKyAgICBkZWYgdGVzdF9vbmVfYXJndW1lbnRfdHlwZShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICd0eXBlLl9fbmV3X18oKSB0YWtlcyBleGFjdGx5IDMgYXJndW1lbnRzICgxIGdpdmVuKScKKworICAgICAgICAjIE9ubHkgdHlwZSBpdHNlbGYgY2FuIHVzZSB0aGUgb25lLWFyZ3VtZW50IGZvcm0gKCMyNzE1NykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKDUpLCBpbnQpCisKKyAgICAgICAgY2xhc3MgTSh0eXBlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgTSg1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCBleHBlY3RlZF9tZXNzYWdlKQorCisgICAgICAgIGNsYXNzIE4odHlwZSwgbWV0YWNsYXNzPU0pOgorICAgICAgICAgICAgcGFzcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBOKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksIGV4cGVjdGVkX21lc3NhZ2UpCisKIAogY2xhc3MgU2ltcGxlTmFtZXNwYWNlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKaW5kZXggODFlNDlkNi4uZmU2Y2QyOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQpAQCAtMTAsNiArMTAsNyBAQAogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwpAQCAtOTg2LDYgKzk4NywxOSBAQAogICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpOgogICAgICAgICAgICAgICAgIHJldHVybiBpbnQuX19mb3JtYXRfXyhzZWxmICogMiwgZm9ybWF0X3NwZWMpCiAKKyAgICAgICAgY2xhc3MgTToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICBzZWxmLnggPSB4CisgICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdNKCcgKyBzZWxmLnggKyAnKScKKyAgICAgICAgICAgIF9fc3RyX18gPSBOb25lCisKKyAgICAgICAgY2xhc3MgTjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4KToKKyAgICAgICAgICAgICAgICBzZWxmLnggPSB4CisgICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdOKCcgKyBzZWxmLnggKyAnKScKKyAgICAgICAgICAgIF9fZm9ybWF0X18gPSBOb25lCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5mb3JtYXQoKSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycuZm9ybWF0KCksICdhYmMnKQpAQCAtMTIwMCw2ICsxMjE0LDE2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiMHh7OjB7OmR9WH0iLmZvcm1hdCgweDAsMTYpLCAiMHgwMDAwMDAwMDAwMDAwMDAwIikKIAorICAgICAgICAjIEJsb2NraW5nIGZhbGxiYWNrCisgICAgICAgIG0gPSBNKCdkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFyfSIuZm9ybWF0KG0pLCAnTShkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInshc30iLmZvcm1hdCwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAie30iLmZvcm1hdCwgbSkKKyAgICAgICAgbiA9IE4oJ2RhdGEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7IXJ9Ii5mb3JtYXQobiksICdOKGRhdGEpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFzfSIuZm9ybWF0KG4pLCAnTihkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInt9Ii5mb3JtYXQsIG4pCisKICAgICBkZWYgdGVzdF9mb3JtYXRfbWFwKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmZvcm1hdF9tYXAoe30pLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYScuZm9ybWF0X21hcCh7fSksICdhJykKQEAgLTE1NDEsNyArMTU2NSw3IEBACiAgICAgICAgICAgICAoJysnLCBiJystJyksCiAgICAgICAgICAgICAoJystJywgYicrLS0nKSwKICAgICAgICAgICAgICgnKz8nLCBiJystPycpLAotICAgICAgICAgICAgKCdcPycsIGInK0FGdz8nKSwKKyAgICAgICAgICAgIChyJ1w/JywgYicrQUZ3PycpLAogICAgICAgICAgICAgKCcrPycsIGInKy0/JyksCiAgICAgICAgICAgICAocidcXD8nLCBiJytBRndBWEE/JyksCiAgICAgICAgICAgICAocidcXFw/JywgYicrQUZ3QVhBQmM/JyksCkBAIC0yMzg5LDYgKzI0MTMsMTMgQEAKICAgICAgICAgc3VwcG9ydC5jaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmLCBpdGVyLCBzdHIpCiAgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgcmV2ZXJzZWQsIHN0cikKIAorICAgIGRlZiB0ZXN0X2ludmFsaWRfc2VxdWVuY2VzKHNlbGYpOgorICAgICAgICBmb3IgbGV0dGVyIGluIHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgIjg5IjogIyAwLTcgYXJlIG9jdGFsIGVzY2FwZXMKKyAgICAgICAgICAgIGlmIGxldHRlciBpbiAiYWJmbnJ0dXZ4TlUiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBldmFsKHIiJ1wlcyciICUgbGV0dGVyKQorCiAKIGNsYXNzIENBUElUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjQyMCw3ICsyNDUxLDcgQEAKICAgICAgICAgIyBub24tYXNjaWkgZm9ybWF0LCBhc2NpaSBhcmd1bWVudDogZW5zdXJlIHRoYXQgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkKICAgICAgICAgIyByYWlzZXMgYW4gZXJyb3IKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAotICAgICAgICAgICAgJ15QeVVuaWNvZGVfRnJvbUZvcm1hdFZcKFwpIGV4cGVjdHMgYW4gQVNDSUktZW5jb2RlZCBmb3JtYXQgJworICAgICAgICAgICAgcideUHlVbmljb2RlX0Zyb21Gb3JtYXRWXChcKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICcKICAgICAgICAgICAgICdzdHJpbmcsIGdvdCBhIG5vbi1BU0NJSSBieXRlOiAweGU5JCcsCiAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbUZvcm1hdCwgYid1bmljb2RlXHhlOT0lcycsICdhc2NpaScpCiAKQEAgLTI3OTIsNyArMjgyMyw2IEBACiAgICAgICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzZWNvbmQgY2FsbCByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19zX2hhc2gocyksIGNocihrKS5lbmNvZGUoKSAqIChpICsgMSkpCiAKLQogY2xhc3MgU3RyaW5nTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZm9ybWF0dGVyX3BhcnNlcihzZWxmKToKICAgICAgICAgZGVmIHBhcnNlKGZvcm1hdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlX2Z1bmN0aW9ucy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlX2Z1bmN0aW9ucy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdW5pY29kZV9pZGVudGlmaWVycy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKaW5kZXggNmVjYzkxMy4uNGZjMTFlYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CkBAIC0yMCw3ICsyMCw3IEBACiBjbGFzcyBVbmljb2RlTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyB1cGRhdGUgdGhpcywgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMKLSAgICBleHBlY3RlZGNoZWNrc3VtID0gJzU5NzE3NjA4NzJiMmY5OGJiOWM3MDFlNmMwZGIzMjczZDc1NmIzZWMnCisgICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdjMWZhOTg2NzRhNjgzYWE4YThkOGRlZTBjODQ0OTRmOGQzNjM0NmU2JwogCiAgICAgZGVmIHRlc3RfbWV0aG9kX2NoZWNrc3VtKHNlbGYpOgogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTgwLDcgKzgwLDcgQEAKIAogICAgICMgVXBkYXRlIHRoaXMgaWYgdGhlIGRhdGFiYXNlIGNoYW5nZXMuIE1ha2Ugc3VyZSB0byBkbyBhIGZ1bGwgcmVidWlsZAogICAgICMgKGUuZy4gJ21ha2UgZGlzdGNsZWFuICYmIG1ha2UnKSB0byBnZXQgdGhlIGNvcnJlY3QgY2hlY2tzdW0uCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc1ZTc0ODI3Y2QwN2Y5ZTU0NmEzMGYzNGI3YmNmNmNjMmVhYzM4YzhjJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnZjg5MWIxZTY0MzBjNzEyNTMxYjliYzkzNWEzOGUyMmQ3OGJhMWJmMycKICAgICBkZWYgdGVzdF9mdW5jdGlvbl9jaGVja3N1bShzZWxmKToKICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtMjIyLDYgKzIyMiwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVhdygnXHUyMDEwJyksICdBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlYXcoJ1xVMDAwMjAwMDAnKSwgJ1cnKQogCisgICAgZGVmIHRlc3RfZWFzdF9hc2lhbl93aWR0aF85XzBfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLnVjZF8zXzJfMC5lYXN0X2FzaWFuX3dpZHRoKCdcdTIzMWEnKSwgJ04nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZWFzdF9hc2lhbl93aWR0aCgnXHUyMzFhJyksICdXJykKKwogY2xhc3MgVW5pY29kZU1pc2NUZXN0KFVuaWNvZGVEYXRhYmFzZVRlc3QpOgogCiAgICAgZGVmIHRlc3RfZmFpbGVkX2ltcG9ydF9kdXJpbmdfY29tcGlsaW5nKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQppbmRleCBkMWNjYjM4Li4zZmNiMThmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VucGFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VucGFjay5weQpAQCAtMTE3LDYgKzExNywyNyBAQAogICAgICAgLi4uCiAgICAgdGVzdC50ZXN0X3VucGFjay5Cb3pvRXJyb3IKIAorQWxsb3cgdW5wYWNraW5nIGVtcHR5IGl0ZXJhYmxlcworCisgICAgPj4+ICgpID0gW10KKyAgICA+Pj4gW10gPSAoKQorICAgID4+PiBbXSA9IFtdCisgICAgPj4+ICgpID0gKCkKKworVW5wYWNraW5nIG5vbi1pdGVyYWJsZXMgc2hvdWxkIHJhaXNlIFR5cGVFcnJvcgorCisgICAgPj4+ICgpID0gNDIKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6ICdpbnQnIG9iamVjdCBpcyBub3QgaXRlcmFibGUKKworVW5wYWNraW5nIHRvIGFuIGVtcHR5IGl0ZXJhYmxlIHNob3VsZCByYWlzZSBWYWx1ZUVycm9yCisKKyAgICA+Pj4gKCkgPSBbNDJdCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVmFsdWVFcnJvcjogdG9vIG1hbnkgdmFsdWVzIHRvIHVucGFjayAoZXhwZWN0ZWQgMCkKKwogIiIiCiAKIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5IGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKaW5kZXggNzQzNDZiNC4uNmJlOGY1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bnBhY2tfZXgucHkKQEAgLTM1Nyw3ICszNTcsNiBAQAogX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9RmFsc2UpOgotICAgIGltcG9ydCBzeXMKICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfdW5wYWNrX2V4CiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X3VucGFja19leCwgdmVyYm9zZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKaW5kZXggMjQ3NTk4YS4uNDNlYTZiOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKQEAgLTQ2OSwxMCArNDY5LDExIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLCAic3NsIG1vZHVsZSByZXF1aXJlZCIpCiAgICAgZGVmIHRlc3RfY2FmaWxlX2FuZF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjb250ZXh0ID0gc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHQoKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbigKLSAgICAgICAgICAgICAgICAiaHR0cHM6Ly9sb2NhbGhvc3QiLCBjYWZpbGU9Ii9ub25leGlzdGVudC9wYXRoIiwgY29udGV4dD1jb250ZXh0Ci0gICAgICAgICAgICApCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxvcGVuKAorICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9sb2NhbGhvc3QiLCBjYWZpbGU9Ii9ub25leGlzdGVudC9wYXRoIiwgY29udGV4dD1jb250ZXh0CisgICAgICAgICAgICAgICAgKQogCiBjbGFzcyB1cmxvcGVuX0RhdGFUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB1cmxvcGVuKCkgb3BlbmluZyBhIGRhdGEgVVJMLiIiIgpAQCAtNzI5LDcgKzczMCw3IEBACiAKIAogY2xhc3MgUXVvdGluZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJUZXN0cyBmb3IgdXJsbGliLnF1b3RlKCkgYW5kIHVybGxpYi5xdW90ZV9wbHVzKCkKKyAgICByIiIiVGVzdHMgZm9yIHVybGxpYi5xdW90ZSgpIGFuZCB1cmxsaWIucXVvdGVfcGx1cygpCiAKICAgICBBY2NvcmRpbmcgdG8gUkZDIDIzOTYgKFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllcnMpLCB0byBlc2NhcGUgYQogICAgIGNoYXJhY3RlciB5b3Ugd3JpdGUgaXQgYXMgJyUnICsgPDIgY2hhcmFjdGVyIFVTLUFTQ0lJIGhleCB2YWx1ZT4uCkBAIC04MDQsNyArODA1LDcgQEAKICAgICAgICAgIyBNYWtlIHN1cmUgYWxsIGNoYXJhY3RlcnMgdGhhdCBzaG91bGQgYmUgcXVvdGVkIGFyZSBieSBkZWZhdWx0IHNhbnMKICAgICAgICAgIyBzcGFjZSAoc2VwYXJhdGUgdGVzdCBmb3IgdGhhdCkuCiAgICAgICAgIHNob3VsZF9xdW90ZSA9IFtjaHIobnVtKSBmb3IgbnVtIGluIHJhbmdlKDMyKV0gIyBGb3IgMHgwMCAtIDB4MUYKLSAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZCgnPD4jJSJ7fXxcXltdYCcpCisgICAgICAgIHNob3VsZF9xdW90ZS5hcHBlbmQocic8PiMlInt9fFxeW11gJykKICAgICAgICAgc2hvdWxkX3F1b3RlLmFwcGVuZChjaHIoMTI3KSkgIyBGb3IgMHg3RgogICAgICAgICBzaG91bGRfcXVvdGUgPSAnJy5qb2luKHNob3VsZF9xdW90ZSkKICAgICAgICAgZm9yIGNoYXIgaW4gc2hvdWxkX3F1b3RlOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CmluZGV4IGVkYTdjY2MuLjM0MzI5ZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKQEAgLTcsNiArNyw4IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgYXJyYXkKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MKIAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAjIFRoZSBwcm94eSBieXBhc3MgbWV0aG9kIGltcG9ydGVkIGJlbG93IGhhcyBsb2dpYyBzcGVjaWZpYyB0byB0aGUgT1NYCkBAIC0zMzUsNyArMzM3LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3R1bm5lbF9oZWFkZXJzLmNsZWFyKCkKIAotICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9Tm9uZSk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz1Ob25lLCAqLAorICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKICAgICAgICAgc2VsZi5zZWxlY3RvciA9IHVybAogICAgICAgICBpZiBoZWFkZXJzIGlzIG5vdCBOb25lOgpAQCAtMzQzLDYgKzM0Niw3IEBACiAgICAgICAgIHNlbGYucmVxX2hlYWRlcnMuc29ydCgpCiAgICAgICAgIGlmIGJvZHk6CiAgICAgICAgICAgICBzZWxmLmRhdGEgPSBib2R5CisgICAgICAgIHNlbGYuZW5jb2RlX2NodW5rZWQgPSBlbmNvZGVfY2h1bmtlZAogICAgICAgICBpZiBzZWxmLnJhaXNlX29uX2VuZGhlYWRlcnM6CiAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKIApAQCAtOTA4LDQxICs5MTIsMTEwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS51bnJlZGlyZWN0ZWRfaGRyc1siSG9zdCJdLCAiYmF6IikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLnVucmVkaXJlY3RlZF9oZHJzWyJTcGFtIl0sICJmb28iKQogCi0gICAgICAgICMgQ2hlY2sgaXRlcmFibGUgYm9keSBzdXBwb3J0Ci0gICAgICAgIGRlZiBpdGVyYWJsZV9ib2R5KCk6Ci0gICAgICAgICAgICB5aWVsZCBiIm9uZSIKLSAgICAgICAgICAgIHlpZWxkIGIidHdvIgotICAgICAgICAgICAgeWllbGQgYiJ0aHJlZSIKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZmlsZShzZWxmKToKKyAgICAgICAgIyBBIHJlZ3VsYXIgZmlsZSAtIGNodW5rZWQgZW5jb2RpbmcgaXMgdXNlZCB1bmxlc3MgQ29udGVudCBMZW5ndGggaXMKKyAgICAgICAgIyBhbHJlYWR5IHNldC4KIAotICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDExfToKLSAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBpdGVyYWJsZV9ib2R5KCksIGhlYWRlcnMpCi0gICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKLSAgICAgICAgICAgICAgICAjIEhhdmluZyBhbiBpdGVyYWJsZSBib2R5IHdpdGhvdXQgYSBDb250ZW50LUxlbmd0aCBzaG91bGQKLSAgICAgICAgICAgICAgICAjIHJhaXNlIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGguZG9fcmVxdWVzdF8sIHJlcSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCiAKLSAgICAgICAgIyBBIGZpbGUgb2JqZWN0LgotICAgICAgICAjIFRlc3Qgb25seSBDb250ZW50LUxlbmd0aCBhdHRyaWJ1dGUgb2YgcmVxdWVzdC4KKyAgICAgICAgZmlsZV9vYmogPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0ndytiJywgZGVsZXRlPUZhbHNlKQorICAgICAgICBmaWxlX3BhdGggPSBmaWxlX29iai5uYW1lCisgICAgICAgIGZpbGVfb2JqLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnVubGluaywgZmlsZV9wYXRoKQogCisgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICJyYiIpIGFzIGY6CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZiwge30pCisgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgIHRlID0gbmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGUsICJjaHVua2VkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmLCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9KQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9maWxlb2JqKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSBvYmplY3QgLSBjaHVua2VkIGVuY29kaW5nIGlzIHVzZWQKKyAgICAgICAgIyB1bmxlc3MgQ29udGVudCBMZW5ndGggaXMgYWxyZWFkeSBzZXQuCisgICAgICAgICMgKE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzdWJ0bGUgZGlmZmVyZW5jZXMgdG8gYSByZWd1bGFyCisgICAgICAgICMgZmlsZSwgdGhhdCBpcyB3aHkgd2UgYXJlIHRlc3RpbmcgYm90aCBjYXNlcy4pCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKICAgICAgICAgZmlsZV9vYmogPSBpby5CeXRlc0lPKCkKLSAgICAgICAgZmlsZV9vYmoud3JpdGUoYiJTb21ldGhpbmdcblNvbWV0aGluZ1xuU29tZXRoaW5nXG4iKQogCi0gICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9OgotICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCBoZWFkZXJzKQotICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6Ci0gICAgICAgICAgICAgICAgIyBIYXZpbmcgYW4gaXRlcmFibGUgYm9keSB3aXRob3V0IGEgQ29udGVudC1MZW5ndGggc2hvdWxkCi0gICAgICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoLmRvX3JlcXVlc3RfLCByZXEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCisgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmaWxlX29iaiwge30pCisgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpCisKKyAgICAgICAgaGVhZGVycyA9IHsiQ29udGVudC1MZW5ndGgiOiAzMH0KKyAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGZpbGVfb2JqLCBoZWFkZXJzKQorICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdyZXEuaGFzX2hlYWRlcigiVHJhbnNmZXItZW5jb2RpbmciKSkKIAogICAgICAgICBmaWxlX29iai5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfcGlwZShzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgcmVhZGluZyBmcm9tIGEgcGlwZS4KKyAgICAgICAgIyBBIHBpcGUgY2Fubm90IGJlIHNlZWsnZWQuICBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZQorICAgICAgICAjIGNvbnRlbnQgbGVuZ3RoIHVwIGZyb250LiAgVGh1cywgZG9fcmVxdWVzdF8oKSBzaG91bGQgZmFsbAorICAgICAgICAjIGJhY2sgdG8gVHJhbnNmZXItZW5jb2RpbmcgY2h1bmtlZC4KKworICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCisgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgciJwYXNzIl0KKyAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAzMH06CisgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKSBhcyBwcm9jOgorICAgICAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBwcm9jLnN0ZG91dCwgaGVhZGVycykKKyAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2h1bmtlZCcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICAjIEdlbmVyaWMgaXRlcmFibGUuICBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBjb250ZW50CisgICAgICAgICMgbGVuZ3RoIHVwIGZyb250LiAgRmFsbCBiYWNrIHRvIFRyYW5zZmVyLWVuY29kaW5nIGNodW5rZWQuCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKworICAgICAgICBkZWYgaXRlcmFibGVfYm9keSgpOgorICAgICAgICAgICAgeWllbGQgYiJvbmUiCisKKyAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAxMX06CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgaXRlcmFibGVfYm9keSgpLCBoZWFkZXJzKQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICBpZiBub3QgaGVhZGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2h1bmtlZCcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMTEpCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZW1wdHlfc2VxKHNlbGYpOgorICAgICAgICAjIFplcm8tbGVuZ3RoIGl0ZXJhYmxlIGJvZHkgc2hvdWxkIGJlIHRyZWF0ZWQgbGlrZSBhbnkgb3RoZXIgaXRlcmFibGUKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorICAgICAgICByZXEgPSBoLmRvX3JlcXVlc3RfKFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9oZWFkZXIoIlRyYW5zZmVyLWVuY29kaW5nIiksICJjaHVua2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXEuaGFzX2hlYWRlcigiQ29udGVudC1sZW5ndGgiKSkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9hcnJheShzZWxmKToKICAgICAgICAgIyBhcnJheS5hcnJheSBJdGVyYWJsZSAtIENvbnRlbnQgTGVuZ3RoIGlzIGNhbGN1bGF0ZWQKIAorICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQorCiAgICAgICAgIGl0ZXJhYmxlX2FycmF5ID0gYXJyYXkuYXJyYXkoIkkiLFsxLDIsMyw0XSkKIAogICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDE2fToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQppbmRleCA2OGM1MjNhLi43MGM0YzAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CkBAIC01NTcsMjYgKzU1NywyOCBAQAogCiAgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWZpbGUoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKLSAgICAgICAgIyBHb29kIGNlcnQKLSAgICAgICAgZGF0YSA9IHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIid2UgY2FyZSBhIGJpdCIpCi0gICAgICAgICMgQmFkIGNlcnQKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCi0gICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgR29vZCBjZXJ0CisgICAgICAgICAgICBkYXRhID0gc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiIndlIGNhcmUgYSBiaXQiKQorICAgICAgICAgICAgIyBCYWQgY2VydAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKIAogICAgIGRlZiB0ZXN0X2h0dHBzX3dpdGhfY2FkZWZhdWx0KHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9sb2NhbGhvc3QpCiAgICAgICAgICMgU2VsZi1zaWduZWQgY2VydCBzaG91bGQgZmFpbCB2ZXJpZmljYXRpb24gd2l0aCBzeXN0ZW0gY2VydGlmaWNhdGUgc3RvcmUKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FkZWZhdWx0PVRydWUpCiAKICAgICBkZWYgdGVzdF9odHRwc19zbmkoc2VsZik6CiAgICAgICAgIGlmIHNzbCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQppbmRleCBiODExOTMwLi45NDk3MTZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYm5ldC5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGVtYWlsLm1lc3NhZ2UKIGltcG9ydCB0aW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQppbmRleCA3MWFiYzE0Li45OWM1YzAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKQEAgLTYwNywyOSArNjA3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb3J0LCA4MCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmdldHVybCgpLCB1cmwpCiAKLSAgICAgICAgIyBWZXJpZnkgYW4gaWxsZWdhbCBwb3J0IGlzIHJldHVybmVkIGFzIE5vbmUKKyAgICAgICAgIyBWZXJpZnkgYW4gaWxsZWdhbCBwb3J0IHJhaXNlcyBWYWx1ZUVycm9yCiAgICAgICAgIHVybCA9IGIiSFRUUDovL1dXVy5QWVRIT04uT1JHOjY1NTM2L2RvYy8jZnJhZyIKICAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCh1cmwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5wb3J0LCBOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgIm91dCBvZiByYW5nZSIpOgorICAgICAgICAgICAgcC5wb3J0CiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX2JhZF9wb3J0KHNlbGYpOgotICAgICAgICAiIiJDaGVjayBoYW5kbGluZyBvZiBub24taW50ZWdlciBwb3J0cy4iIiIKLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdCgiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCAid3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxhbWJkYTogcC5wb3J0KQotCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UoImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICAjIE9uY2UgYWdhaW4sIHJlcGVhdCBvdXJzZWx2ZXMgdG8gdGVzdCBieXRlcwotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHNwbGl0KGIiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBiInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKGIiaHR0cDovL3d3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAubmV0bG9jLCBiInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKKyAgICAgICAgIiIiQ2hlY2sgaGFuZGxpbmcgb2YgaW52YWxpZCBwb3J0cy4iIiIKKyAgICAgICAgZm9yIGJ5dGVzIGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgICAgICBmb3IgcGFyc2UgaW4gKHVybGxpYi5wYXJzZS51cmxzcGxpdCwgdXJsbGliLnBhcnNlLnVybHBhcnNlKToKKyAgICAgICAgICAgICAgICBmb3IgcG9ydCBpbiAoImZvbyIsICIxLjUiLCAiLTEiLCAiMHgxMCIpOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChieXRlcz1ieXRlcywgcGFyc2U9cGFyc2UsIHBvcnQ9cG9ydCk6CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRsb2MgPSAid3d3LmV4YW1wbGUubmV0OiIgKyBwb3J0CisgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovLyIgKyBuZXRsb2MKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ5dGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldGxvYyA9IG5ldGxvYy5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgICAgICAgICAgICAgICAgICBwID0gcGFyc2UodXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgbmV0bG9jKQorICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnBvcnQKIAogICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfd2l0aG91dF9uZXRsb2Moc2VsZik6CiAgICAgICAgICMgVGhpcyBleGFtcGxlIGlzIHN0cmFpZ2h0IGZyb20gUkZDIDMyNjEuICBJdCBsb29rcyBsaWtlIGl0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQppbmRleCA4MzU3ZjhiLi42NjJjN2Y2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKQEAgLTEsNiArMSw2IEBACiAjIENoZWNrIGV2ZXJ5IHBhdGggdGhyb3VnaCBldmVyeSBtZXRob2Qgb2YgVXNlckRpY3QKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtYXBwaW5nX3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGNvbGxlY3Rpb25zCiAKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChvbmU9MSwgdHdvPTIpLCBkMikKICAgICAgICAgIyBpdGVtIHNlcXVlbmNlIGNvbnN0cnVjdG9yCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoWygnb25lJywxKSwgKCd0d28nLDIpXSksIGQyKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2xsZWN0aW9ucy5Vc2VyRGljdChkaWN0PVsoJ29uZScsMSksICgndHdvJywyKV0pLCBkMikKICAgICAgICAgIyBib3RoIHRvZ2V0aGVyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoWygnb25lJywxKSwgKCd0d28nLDIpXSwgdHdvPTMsIHRocmVlPTUpLCBkMykKQEAgLTE0OSw3ICsxNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2RpY3QnLCA0MildKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGVjdGlvbnMuVXNlckRpY3Qoe30sIGRpY3Q9Tm9uZSkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnZGljdCcsIE5vbmUpXSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsZWN0aW9ucy5Vc2VyRGljdChkaWN0PXsnYSc6IDQyfSkuaXRlbXMoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2EnLCA0MildKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbGxlY3Rpb25zLlVzZXJEaWN0LCA0MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CmluZGV4IGY5MmU0ZDMuLjhkZTZjMTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQpAQCAtMSw3ICsxLDcgQEAKICMgQ2hlY2sgZXZlcnkgcGF0aCB0aHJvdWdoIGV2ZXJ5IG1ldGhvZCBvZiBVc2VyTGlzdAogCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBsaXN0X3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IGxpc3RfdGVzdHMKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBVc2VyTGlzdFRlc3QobGlzdF90ZXN0cy5Db21tb25UZXN0KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQppbmRleCA5YmM4ZWRkLi43MTUyODIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CkBAIC0xLDkgKzEsOCBAQAogIyBVc2VyU3RyaW5nIGlzIGEgd3JhcHBlciBhcm91bmQgdGhlIG5hdGl2ZSBidWlsdGluIHN0cmluZyB0eXBlLgogIyBVc2VyU3RyaW5nIGluc3RhbmNlcyBzaG91bGQgYmVoYXZlIHNpbWlsYXIgdG8gYnVpbHRpbiBzdHJpbmcgb2JqZWN0cy4KIAotaW1wb3J0IHN0cmluZwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHN0cmluZ190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdHJpbmdfdGVzdHMKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlclN0cmluZwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkgYi9MaWIvdGVzdC90ZXN0X3V0Zjhzb3VyY2UucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzEyMC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF91dGY4c291cmNlLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3V1LnB5IGIvTGliL3Rlc3QvdGVzdF91dS5weQppbmRleCAyNWZmZmJmLi5hZDJmMmM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3V1LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXUucHkKQEAgLTgsNyArOCw2IEBACiAKIGltcG9ydCBzeXMsIG9zCiBpbXBvcnQgdXUKLWZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIGltcG9ydCBpbwogCiBwbGFpbnRleHQgPSBiIlRoZSBzbW9vdGgtc2NhbGVkIHB5dGhvbiBjcmVwdCBvdmVyIHRoZSBzbGVlcGluZyBkb2dcbiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdmVudi5weSBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQppbmRleCAzOTk5ZDFmLi5mNGFkN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5CkBAIC0xNSw3ICsxNSw2IEBACiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2FwdHVyZWRfc3Rkb3V0LCBjYXB0dXJlZF9zdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rLCBFbnZpcm9ubWVudFZhckd1YXJkLCBybXRyZWUpCi1pbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHZlbnYKIApAQCAtMzksMTUgKzM4LDkgQEAKIHNraXBJblZlbnYgPSB1bml0dGVzdC5za2lwSWYoc3lzLnByZWZpeCAhPSBzeXMuYmFzZV9wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0IG5vdCBhcHByb3ByaWF0ZSBpbiBhIHZlbnYnKQogCi0jIG9zLnBhdGguZXhpc3RzKCdudWwnKSBpcyBGYWxzZTogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwNTQxCi1pZiBvcy5kZXZudWxsLmxvd2VyKCkgPT0gJ251bCc6Ci0gICAgZmFpbHNPbldpbmRvd3MgPSB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKLWVsc2U6Ci0gICAgZGVmIGZhaWxzT25XaW5kb3dzKGYpOgotICAgICAgICByZXR1cm4gZgotCiBjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgdmVudiB0ZXN0cy4iIiIKKyAgICBtYXhEaWZmID0gODAgKiA1MAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLmVudl9kaXIgPSBvcy5wYXRoLnJlYWxwYXRoKHRlbXBmaWxlLm1rZHRlbXAoKSkKQEAgLTU3LDcgKzUwLDcgQEAKICAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdJbmNsdWRlJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSAnYmluJwotICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lcycgJSBzeXMudmVyc2lvbls6M10pCisgICAgICAgICAgICBzZWxmLmxpYiA9ICgnbGliJywgJ3B5dGhvbiVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICAgICAgc2VsZi5pbmNsdWRlID0gJ2luY2x1ZGUnCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCkBAIC0xMjEsNiArMTE0LDE3IEBACiAgICAgICAgICAgICBwcmludCgnICAgICVyJyAlIG9zLmxpc3RkaXIoYmQpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZm4pLCAnRmlsZSAlciBzaG91bGQgZXhpc3QuJyAlIGZuKQogCisgICAgZGVmIHRlc3RfcHJvbXB0KHNlbGYpOgorICAgICAgICBlbnZfbmFtZSA9IG9zLnBhdGguc3BsaXQoc2VsZi5lbnZfZGlyKVsxXQorCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoKQorICAgICAgICBjb250ZXh0ID0gYnVpbGRlci5lbnN1cmVfZGlyZWN0b3JpZXMoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucHJvbXB0LCAnKCVzKSAnICUgZW52X25hbWUpCisKKyAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihwcm9tcHQ9J015IHByb21wdCcpCisgICAgICAgIGNvbnRleHQgPSBidWlsZGVyLmVuc3VyZV9kaXJlY3RvcmllcyhzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5wcm9tcHQsICcoTXkgcHJvbXB0KSAnKQorCiAgICAgQHNraXBJblZlbnYKICAgICBkZWYgdGVzdF9wcmVmaXhlcyhzZWxmKToKICAgICAgICAgIiIiCkBAIC0zMTgsMTYgKzMyMiwyMSBAQAogICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2Rpciwgd2l0aF9waXA9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0X3BpcF9ub3RfaW5zdGFsbGVkKCkKIAotICAgIEBmYWlsc09uV2luZG93cwotICAgIGRlZiB0ZXN0X2Rldm51bGxfZXhpc3RzX2FuZF9pc19lbXB0eShzZWxmKToKKyAgICBkZWYgdGVzdF9kZXZudWxsKHNlbGYpOgogICAgICAgICAjIEZpeCBmb3IgaXNzdWUgIzIwMDUzIHVzZXMgb3MuZGV2bnVsbCB0byBmb3JjZSBhIGNvbmZpZyBmaWxlIHRvCiAgICAgICAgICMgYXBwZWFyIGVtcHR5LiBIb3dldmVyIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDU0MSBtZWFucwogICAgICAgICAjIHRoYXQgZG9lc24ndCBjdXJyZW50bHkgd29yayBwcm9wZXJseSBvbiBXaW5kb3dzLiBPbmNlIHRoYXQgaXMKICAgICAgICAgIyBmaXhlZCwgdGhlICJ3aW5fbG9jYXRpb24iIHBhcnQgb2YgdGVzdF93aXRoX3BpcCBzaG91bGQgYmUgcmVzdG9yZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLmRldm51bGwpKQogICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKIAorICAgICAgICAjIElzc3VlICMyMDU0MTogb3MucGF0aC5leGlzdHMoJ251bCcpIGlzIEZhbHNlIG9uIFdpbmRvd3MKKyAgICAgICAgaWYgb3MuZGV2bnVsbC5sb3dlcigpID09ICdudWwnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKKworCiAgICAgIyBSZXF1ZXN0aW5nIHBpcCBmYWlscyB3aXRob3V0IFNTTCAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE5NzQ0KQogICAgIEB1bml0dGVzdC5za2lwSWYoc3NsIGlzIE5vbmUsIGVuc3VyZXBpcC5fTUlTU0lOR19TU0xfTUVTU0FHRSkKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdzb21lIGRlcGVuZGVuY2llcyBvZiBwaXAgaW1wb3J0IHRocmVhZGluZycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CmluZGV4IDg0YTZmYjUuLmMxMWVlNDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQpAQCAtMiw3ICsyLDkgQEAKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBvcwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCByZQogaW1wb3J0IHN5cworaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCkBAIC03MjAsNiArNzIyLDE3IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3RyZWFtLmdldHZhbHVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXh0LCByZXN1bHQpCiAKKyAgICBkZWYgdGVzdF9zaG93d2Fybm1zZ19taXNzaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBfc2hvd3dhcm5tc2coKSBtaXNzaW5nIGlzIG9rYXkuCisgICAgICAgIHRleHQgPSAnZGVsIF9zaG93d2Fybm1zZyB0ZXN0JworICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CisgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisgICAgICAgICAgICBkZWwgc2VsZi5tb2R1bGUuX3Nob3d3YXJubXNnCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfb3V0cHV0KCdzdGRlcnInKSBhcyBzdHJlYW06CisgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUud2Fybih0ZXh0KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGV4dCwgcmVzdWx0KQorCiAgICAgZGVmIHRlc3Rfc2hvd3dhcm5pbmdfbm90X2NhbGxhYmxlKHNlbGYpOgogICAgICAgICB3aXRoIG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKG1vZHVsZT1zZWxmLm1vZHVsZSk6CiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCkBAIC04MjEsMTIgKzgzNCw0NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX29iamVjdCwgZXhwZWN0ZWRfZmlsZV9saW5lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgZmlsZV9vYmplY3QuZ2V0dmFsdWUoKSkKIAorCiBjbGFzcyBDV2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBjX3dhcm5pbmdzCiAKIGNsYXNzIFB5V2FybmluZ3NEaXNwbGF5VGVzdHMoV2FybmluZ3NEaXNwbGF5VGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBtb2R1bGUgPSBweV93YXJuaW5ncwogCisgICAgZGVmIHRlc3RfdHJhY2VtYWxsb2Moc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGZwOgorICAgICAgICAgICAgZnAud3JpdGUodGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKF9fZmlsZV9fKQorICAgICAgICAgICAgICAgICAgICAjIEVtaXQgUmVzb3VyY2VXYXJuaW5nCisgICAgICAgICAgICAgICAgICAgIGYgPSBOb25lCisKKyAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICIiIikpCisKKyAgICAgICAgcmVzID0gYXNzZXJ0X3B5dGhvbl9vaygnLVdkJywgJy1YJywgJ3RyYWNlbWFsbG9jPTInLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBzdGRlcnIgPSByZXMuZXJyLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCisgICAgICAgICMgbm9ybWFsaXplIG5ld2xpbmVzCisgICAgICAgIHN0ZGVyciA9ICdcbicuam9pbihzdGRlcnIuc3BsaXRsaW5lcygpKQorICAgICAgICBzdGRlcnIgPSByZS5zdWIoJzwuKj4nLCAnPC4uLj4nLCBzdGRlcnIpCisgICAgICAgIGV4cGVjdGVkID0gdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAge2ZuYW1lfTo1OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPC4uLj4KKyAgICAgICAgICAgICAgZiA9IE5vbmUKKyAgICAgICAgICAgIE9iamVjdCBhbGxvY2F0ZWQgYXQgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgICAgICAgICBGaWxlICJ7Zm5hbWV9IiwgbGluZW5vIDMKKyAgICAgICAgICAgICAgICBmID0gb3BlbihfX2ZpbGVfXykKKyAgICAgICAgICAgICAgRmlsZSAie2ZuYW1lfSIsIGxpbmVubyA3CisgICAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICcnJykKKyAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5mb3JtYXQoZm5hbWU9c3VwcG9ydC5URVNURk4pLnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIsIGV4cGVjdGVkKQorCiAKIGNsYXNzIENhdGNoV2FybmluZ1Rlc3RzKEJhc2VUZXN0KToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXZlLnB5IGIvTGliL3Rlc3QvdGVzdF93YXZlLnB5CmluZGV4IDNlZmY3NzMuLjg2NjZmNzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhdmUucHkKQEAgLTEsNiArMSw2IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGF1ZGlvb3AgaW1wb3J0IGJ5dGVzd2FwCiBpbXBvcnQgc3lzCiBpbXBvcnQgd2F2ZQpAQCAtMTAzLDUgKzEwMywxMSBAQAogICAgICAgICBmcmFtZXMgPSBieXRlc3dhcChmcmFtZXMsIDQpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnV0FWRV9GT1JNQVRfUENNJ30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgd2F2ZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CmluZGV4IDRjZmFhNTQuLmE0NzRhMDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKQEAgLTkxOSw3ICs5MTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIociwgIl9fZGljdF9fIikpCiAKICAgICBkZWYgdGVzdF9zdWJjbGFzc19yZWZzX3dpdGhfY3ljbGUoc2VsZik6Ci0gICAgICAgICMgQnVnICMzMTEwCisgICAgICAgICIiIkNvbmZpcm0gaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzMTAwIGlzIGZpeGVkLiIiIgogICAgICAgICAjIEFuIGluc3RhbmNlIG9mIGEgd2Vha3JlZiBzdWJjbGFzcyBjYW4gaGF2ZSBhdHRyaWJ1dGVzLgogICAgICAgICAjIElmIHN1Y2ggYSB3ZWFrcmVmIGhvbGRzIHRoZSBvbmx5IHN0cm9uZyByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCwKICAgICAgICAgIyBkZWxldGluZyB0aGUgd2Vha3JlZiB3aWxsIGRlbGV0ZSB0aGUgb2JqZWN0LiBJbiB0aGlzIGNhc2UsCkBAIC0xMzMzLDEzICsxMzMzLDE2IEBACiAgICAgICAgIG8gPSBPYmplY3QoMTIzNDU2KQogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBuID0gbGVuKGRpY3QpCi0gICAgICAgICAgICBkaWN0LnBvcGl0ZW0oKQorICAgICAgICAgICAgIyBTaW5jZSB1bmRlcmxheWluZyBkaWN0IGlzIG9yZGVyZWQsIGZpcnN0IGl0ZW0gaXMgcG9wcGVkCisgICAgICAgICAgICBkaWN0LnBvcChuZXh0KGRpY3Qua2V5cygpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMSkKICAgICAgICAgICAgIGRpY3Rbb10gPSBvCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbikKKyAgICAgICAgIyBsYXN0IGl0ZW0gaW4gb2JqZWN0cyBpcyByZW1vdmVkIGZyb20gZGljdCBpbiBjb250ZXh0IHNodXRkb3duCiAgICAgICAgIHdpdGggdGVzdGNvbnRleHQoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMSkKLSAgICAgICAgICAgIGRpY3QucG9wKG5leHQoZGljdC5rZXlzKCkpKQorICAgICAgICAgICAgIyBUaGVuLCAobywgbykgaXMgcG9wcGVkCisgICAgICAgICAgICBkaWN0LnBvcGl0ZW0oKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAyKQogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDMpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKaW5kZXggOWNlNjcyYi4uNjkxYjk1ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQpAQCAtMSwxMyArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHksIHJlZiwgV2Vha1NldAotaW1wb3J0IG9wZXJhdG9yCi1pbXBvcnQgY29weQorZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CiBpbXBvcnQgc3RyaW5nCi1pbXBvcnQgb3MKLWZyb20gcmFuZG9tIGltcG9ydCByYW5kcmFuZ2UsIHNodWZmbGUKLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncwotaW1wb3J0IGNvbGxlY3Rpb25zCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyU3RyaW5nIGFzIHVzdHIKIGltcG9ydCBnYwogaW1wb3J0IGNvbnRleHRsaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5jb25zb2xlaW8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhMmY3YQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5CkBAIC0wLDAgKzEsMTQ3IEBACisnJydUZXN0cyBmb3IgV2luZG93c0NvbnNvbGVJTworJycnCisKK2ltcG9ydCBpbworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCisKK2lmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IG9ubHkgcmVsZXZhbnQgb24gd2luMzIiKQorCitmcm9tIF90ZXN0Y29uc29sZSBpbXBvcnQgd3JpdGVfaW5wdXQKKworQ29uSU8gPSBpby5fV2luZG93c0NvbnNvbGVJTworCitjbGFzcyBXaW5kb3dzQ29uc29sZUlPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLlJhd0lPQmFzZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb25JTywgaW8uQnVmZmVyZWRJT0Jhc2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLlRleHRJT0Jhc2UpKQorCisgICAgZGVmIHRlc3Rfb3Blbl9mZChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDApCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjYW5ub3Qgb3BlbiBjb25zb2xlIGJlY2F1c2UgaXQncyBub3QgYSByZWFsIGNvbnNvbGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZi5maWxlbm8oKSkKKyAgICAgICAgICAgIGYuY2xvc2UoKSAgICMgbXVsdGlwbGUgY2xvc2Ugc2hvdWxkIG5vdCBjcmFzaAorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDEsICd3JykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNhbm5vdCBvcGVuIGNvbnNvbGUgYmVjYXVzZSBpdCdzIG5vdCBhIHJlYWwgY29uc29sZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBmLmZpbGVubygpKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gQ29uSU8oMiwgJ3cnKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2Fubm90IG9wZW4gY29uc29sZSBiZWNhdXNlIGl0J3Mgbm90IGEgcmVhbCBjb25zb2xlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGYuZmlsZW5vKCkpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uYW1lKHNlbGYpOgorICAgICAgICBmID0gQ29uSU8oIkNPTiIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmLmZpbGVubygpKQorICAgICAgICBmLmNsb3NlKCkgICAjIG11bHRpcGxlIGNsb3NlIHNob3VsZCBub3QgY3Jhc2gKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgZiA9IENvbklPKCdDT05JTiQnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZi5maWxlbm8oKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIGYgPSBDb25JTygnQ09OT1VUJCcsICd3JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLndyaXRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGYuZmlsZW5vKCkpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiBhc3NlcnRTdGRpblJvdW5kVHJpcChzZWxmLCB0ZXh0KToKKyAgICAgICAgc3RkaW4gPSBvcGVuKCdDT05JTiQnLCAncicpCisgICAgICAgIG9sZF9zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMuc3RkaW4gPSBzdGRpbgorICAgICAgICAgICAgd3JpdGVfaW5wdXQoCisgICAgICAgICAgICAgICAgc3RkaW4uYnVmZmVyLnJhdywKKyAgICAgICAgICAgICAgICAodGV4dCArICdcclxuJykuZW5jb2RlKCd1dGYtMTYtbGUnLCAnc3Vycm9nYXRlcGFzcycpCisgICAgICAgICAgICApCisgICAgICAgICAgICBhY3R1YWwgPSBpbnB1dCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc3RkaW4gPSBvbGRfc3RkaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbnB1dChzZWxmKToKKyAgICAgICAgIyBBU0NJSQorICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCdhYmMxMjMnKQorICAgICAgICAjIE5vbi1BU0NJSQorICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCfPvNGe0KLOu9Ck0JknKQorICAgICAgICAjIENvbWJpbmluZyBjaGFyYWN0ZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ0HNj0Ig76yWzLNBQcydJykKKyAgICAgICAgIyBOb24tQk1QCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoJ1xVMDAxMDAwMDBcVTAwMTBmZmZmXFUwMDEwZmZmZCcpCisKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCByZWFkaW5nIGxlc3MgdGhhbiAxIGZ1bGwgY2hhcmFjdGVyIHdvcmtzIHdoZW4gc3RkaW4KKyAgICAgICAgIyBjb250YWlucyBtdWx0aWJ5dGUgVVRGLTggc2VxdWVuY2VzCisgICAgICAgIHNvdXJjZSA9ICfPvNGe0KLOu9Ck0JlcclxuJy5lbmNvZGUoJ3V0Zi0xNi1sZScpCisgICAgICAgIGV4cGVjdGVkID0gJ8+80Z7Qos670KTQmVxyXG4nLmVuY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgcmVhZF9jb3VudCBpbiByYW5nZSgxLCAxNik6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgICAgICB3cml0ZV9pbnB1dChzdGRpbiwgc291cmNlKQorCisgICAgICAgICAgICAgICAgYWN0dWFsID0gYicnCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGFjdHVhbC5lbmRzd2l0aChiJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBzdGRpbi5yZWFkKHJlYWRfY291bnQpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbCArPSBiCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsICdzdGRpbi5yZWFkKHt9KScuZm9ybWF0KHJlYWRfY291bnQpKQorCisgICAgZGVmIHRlc3RfcGFydGlhbF9zdXJyb2dhdGVfcmVhZHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHJlYWRpbmcgbGVzcyB0aGFuIDEgZnVsbCBjaGFyYWN0ZXIgd29ya3Mgd2hlbiBzdGRpbgorICAgICAgICAjIGNvbnRhaW5zIHN1cnJvZ2F0ZSBwYWlycyB0aGF0IGNhbm5vdCBiZSBkZWNvZGVkIHRvIFVURi04IHdpdGhvdXQKKyAgICAgICAgIyByZWFkaW5nIGFuIGV4dHJhIGNoYXJhY3Rlci4KKyAgICAgICAgc291cmNlID0gJ1xVMDAxMDFGRkZcVTAwMTAxMDAxXHJcbicuZW5jb2RlKCd1dGYtMTYtbGUnKQorICAgICAgICBleHBlY3RlZCA9ICdcVTAwMTAxRkZGXFUwMDEwMTAwMVxyXG4nLmVuY29kZSgndXRmLTgnKQorICAgICAgICBmb3IgcmVhZF9jb3VudCBpbiByYW5nZSgxLCAxNik6CisgICAgICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgICAgICB3cml0ZV9pbnB1dChzdGRpbiwgc291cmNlKQorCisgICAgICAgICAgICAgICAgYWN0dWFsID0gYicnCisgICAgICAgICAgICAgICAgd2hpbGUgbm90IGFjdHVhbC5lbmRzd2l0aChiJ1xuJyk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBzdGRpbi5yZWFkKHJlYWRfY291bnQpCisgICAgICAgICAgICAgICAgICAgIGFjdHVhbCArPSBiCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsICdzdGRpbi5yZWFkKHt9KScuZm9ybWF0KHJlYWRfY291bnQpKQorCisgICAgZGVmIHRlc3RfY3RybF96KHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oJ0NPTklOJCcsICdyYicsIGJ1ZmZlcmluZz0wKSBhcyBzdGRpbjoKKyAgICAgICAgICAgIHNvdXJjZSA9ICdceEM0XHgxQVxyXG4nLmVuY29kZSgndXRmLTE2LWxlJykKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ1x4QzQnLmVuY29kZSgndXRmLTgnKQorICAgICAgICAgICAgd3JpdGVfaW5wdXQoc3RkaW4sIHNvdXJjZSkKKyAgICAgICAgICAgIGEsIGIgPSBzdGRpbi5yZWFkKDEpLCBzdGRpbi5yZWFkYWxsKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMDoxXSwgYSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMTpdLCBiKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkgYi9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQppbmRleCA2MDIwN2ZiLi5kNjQyYjEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpbnJlZy5weQpAQCAtMzcsNiArMzcsNyBAQAogCiB0ZXN0X2RhdGEgPSBbCiAgICAgKCJJbnQgVmFsdWUiLCAgICAgNDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUdfRFdPUkQpLAorICAgICgiUXdvcmQgVmFsdWUiLCAgIDB4MTEyMjMzNDQ1NTY2Nzc4OCwgICAgICAgICAgICAgICAgICAgICAgUkVHX1FXT1JEKSwKICAgICAoIlN0cmluZyBWYWwiLCAgICAiQSBzdHJpbmcgdmFsdWUiLCAgICAgICAgICAgICAgICAgICAgICAgIFJFR19TWiksCiAgICAgKCJTdHJpbmdFeHBhbmQiLCAgIlRoZSBwYXRoIGlzICVwYXRoJSIsICAgICAgICAgICAgICAgICAgICBSRUdfRVhQQU5EX1NaKSwKICAgICAoIk11bHRpLXN0cmluZyIsICBbIkxvdHMiLCAib2YiLCAic3RyaW5nIiwgInZhbHVlcyJdLCAgICAgIFJFR19NVUxUSV9TWiksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQppbmRleCA0YThhYjdkLi4xNzllMDY5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKQEAgLTUxLDYgKzUxLDEwIEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMCwgMjAwMCwgMTAwKToKICAgICAgICAgICAgIHNhZmVfQmVlcChpLCA3NSkKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAgc2FmZV9CZWVwKGR1cmF0aW9uPTc1LCBmcmVxdWVuY3k9MjAwMCkKKworCiBjbGFzcyBNZXNzYWdlQmVlcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtNzYsNiArODAsOSBAQAogICAgIGRlZiB0ZXN0X3F1ZXN0aW9uKHNlbGYpOgogICAgICAgICBzYWZlX01lc3NhZ2VCZWVwKHdpbnNvdW5kLk1CX0lDT05RVUVTVElPTikKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAgc2FmZV9NZXNzYWdlQmVlcCh0eXBlPXdpbnNvdW5kLk1CX09LKQorCiAKIGNsYXNzIFBsYXlTb3VuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC04Nyw2ICs5NCwyNSBAQAogICAgICAgICAgICAgd2luc291bmQuUGxheVNvdW5kLAogICAgICAgICAgICAgIm5vbmUiLCB3aW5zb3VuZC5TTkRfQVNZTkMgfCB3aW5zb3VuZC5TTkRfTUVNT1JZCiAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB3aW5zb3VuZC5QbGF5U291bmQsIGIiYmFkIiwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB3aW5zb3VuZC5QbGF5U291bmQsICJiYWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5zb3VuZC5TTkRfTUVNT1JZKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbnNvdW5kLlBsYXlTb3VuZCwgMSwgMCkKKworICAgIGRlZiB0ZXN0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAgc2FmZV9QbGF5U291bmQoZmxhZ3M9d2luc291bmQuU05EX0FMSUFTLCBzb3VuZD0iU3lzdGVtRXhpdCIpCisKKyAgICBkZWYgdGVzdF9zbmRfbWVtb3J5KHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5maW5kZmlsZSgncGx1Y2stcGNtOC53YXYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXI9J2F1ZGlvZGF0YScpLCAncmInKSBhcyBmOgorICAgICAgICAgICAgYXVkaW9fZGF0YSA9IGYucmVhZCgpCisgICAgICAgIHNhZmVfUGxheVNvdW5kKGF1ZGlvX2RhdGEsIHdpbnNvdW5kLlNORF9NRU1PUlkpCisgICAgICAgIGF1ZGlvX2RhdGEgPSBieXRlYXJyYXkoYXVkaW9fZGF0YSkKKyAgICAgICAgc2FmZV9QbGF5U291bmQoYXVkaW9fZGF0YSwgd2luc291bmQuU05EX01FTU9SWSkKKworICAgIGRlZiB0ZXN0X3NuZF9maWxlbmFtZShzZWxmKToKKyAgICAgICAgZm4gPSBzdXBwb3J0LmZpbmRmaWxlKCdwbHVjay1wY204LndhdicsIHN1YmRpcj0nYXVkaW9kYXRhJykKKyAgICAgICAgc2FmZV9QbGF5U291bmQoZm4sIHdpbnNvdW5kLlNORF9GSUxFTkFNRSB8IHdpbnNvdW5kLlNORF9OT0RFRkFVTFQpCiAKICAgICBkZWYgdGVzdF9hbGlhc2VzKHNlbGYpOgogICAgICAgICBhbGlhc2VzID0gWwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aXRoLnB5IGIvTGliL3Rlc3QvdGVzdF93aXRoLnB5CmluZGV4IGU4ZDc4OWIuLmUyNDdmZjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpdGgucHkKQEAgLTE0MCwxMSArMTQwLDYgQEAKICAgICAgICAgICAgICd3aXRoIG1vY2sgYXMgKE5vbmUpOlxuJwogICAgICAgICAgICAgJyAgcGFzcycpCiAKLSAgICBkZWYgdGVzdEFzc2lnbm1lbnRUb0VtcHR5VHVwbGVFcnJvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNTeW50YXhFcnJvcigKLSAgICAgICAgICAgICd3aXRoIG1vY2sgYXMgKCk6XG4nCi0gICAgICAgICAgICAnICBwYXNzJykKLQogICAgIGRlZiB0ZXN0QXNzaWdubWVudFRvVHVwbGVPbmx5Q29udGFpbmluZ05vbmVFcnJvcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNTeW50YXhFcnJvcignd2l0aCBtb2NrIGFzIE5vbmUsOlxuICBwYXNzJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNTeW50YXhFcnJvcigKQEAgLTQ1NCw3ICs0NDksNyBAQAogICAgICAgICAgICAgd2l0aCBjbSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oImZyb20gd2l0aCIpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZFN0b3BJdGVyYXRpb24yKHNlbGYpOgpAQCAtNDgyLDcgKzQ3Nyw3IEBACiAgICAgICAgICAgICB3aXRoIGNtKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgbmV4dChpdGVyKFtdKSkKIAotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBzaG91bGRUaHJvdykKIAogICAgIGRlZiB0ZXN0UmFpc2VkR2VuZXJhdG9yRXhpdDEoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKaW5kZXggNjFhNzUwYy4uNzcwOGUyMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQpAQCAtMjU4LDcgKzI1OCw3IEBACiAKICAgICAgICAgZGVmIGFwcChlbnZpcm9uLCBzdGFydF9yZXNwb25zZSk6CiAgICAgICAgICAgICBzdGFydF9yZXNwb25zZSgiMjAwIE9LIiwgW10pCi0gICAgICAgICAgICByZXR1cm4gW2J5dGVzKHN1cHBvcnQuU09DS19NQVhfU0laRSldCisgICAgICAgICAgICByZXR1cm4gW2InXDAnICogc3VwcG9ydC5TT0NLX01BWF9TSVpFXQogCiAgICAgICAgIGNsYXNzIFdzZ2lIYW5kbGVyKE5vTG9nUmVxdWVzdEhhbmRsZXIsIFdTR0lSZXF1ZXN0SGFuZGxlcik6CiAgICAgICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CmluZGV4IDZjNzYxNmIuLmMwMTQ0ZDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CkBAIC05MSw4ICs5MSw2IEBACiAKIAogY2xhc3MgTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIyBUT0RPOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2UgZ2V0IHJpZCBvZiB0aGUgZ2xvYmFsIG1vZHVsZSB2YXJzCi0KICAgICBkZWYgdGVzdF9zYW5pdHkoc2VsZik6CiAgICAgICAgICMgSW1wb3J0IHNhbml0eS4KIApAQCAtMTAwLDYgKzk4LDEwIEBACiAgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQogICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKIAorICAgIGRlZiB0ZXN0X2FsbChzZWxmKToKKyAgICAgICAgbmFtZXMgPSAoInhtbC5ldHJlZS5FbGVtZW50VHJlZSIsICJfZWxlbWVudHRyZWUiKQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBFVCwgbmFtZXMsIGJsYWNrbGlzdD0oIkhUTUxfRU1QVFkiLCkpCisKIAogZGVmIHNlcmlhbGl6ZShlbGVtLCB0b19zdHJpbmc9VHJ1ZSwgZW5jb2Rpbmc9J3VuaWNvZGUnLCAqKm9wdGlvbnMpOgogICAgIGlmIGVuY29kaW5nICE9ICd1bmljb2RlJzoKQEAgLTE4MiwxMCArMTg0LDEyIEBACiAKICAgICAgICAgZGVmIGNoZWNrX2VsZW1lbnQoZWxlbWVudCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRVQuaXNlbGVtZW50KGVsZW1lbnQpLCBtc2c9Im5vdCBhbiBlbGVtZW50IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJ0YWciKSwgbXNnPSJubyB0YWcgbWVtYmVyIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJhdHRyaWIiKSwgbXNnPSJubyBhdHRyaWIgbWVtYmVyIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJ0ZXh0IiksIG1zZz0ibm8gdGV4dCBtZW1iZXIiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoZWxlbWVudCwgInRhaWwiKSwgbXNnPSJubyB0YWlsIG1lbWJlciIpCisgICAgICAgICAgICBkaXJlbGVtID0gZGlyKGVsZW1lbnQpCisgICAgICAgICAgICBmb3IgYXR0ciBpbiAndGFnJywgJ2F0dHJpYicsICd0ZXh0JywgJ3RhaWwnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdubyAlcyBtZW1iZXInICUgYXR0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIGRpcmVsZW0sCisgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J25vICVzIHZpc2libGUgYnkgZGlyJyAlIGF0dHIpCiAKICAgICAgICAgICAgIGNoZWNrX3N0cmluZyhlbGVtZW50LnRhZykKICAgICAgICAgICAgIGNoZWNrX21hcHBpbmcoZWxlbWVudC5hdHRyaWIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQppbmRleCA5NmI0NDZlLi44N2YzZjI3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKQEAgLTEsNSArMSw1IEBACiAjIHhtbC5ldHJlZSB0ZXN0IGZvciBjRWxlbWVudFRyZWUKLWltcG9ydCBzeXMsIHN0cnVjdAoraW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X2ZyZXNoX21vZHVsZQogaW1wb3J0IHR5cGVzCkBAIC0xMDgsNyArMTA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LmNhbGNzaXplKCc4UCcpKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3htbF9ldHJlZSwgdGVzdF94bWxfZXRyZWVfYworICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUKIAogICAgICMgUnVuIHRoZSB0ZXN0cyBzcGVjaWZpYyB0byB0aGUgQyBpbXBsZW1lbnRhdGlvbgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkgYi9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQppbmRleCAwMmQ5ZjVjLi5kZjljNzllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwYy5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCBiYXNlNjQKIGltcG9ydCBkYXRldGltZQoraW1wb3J0IGRlY2ltYWwKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTksNyArMTAsNiBAQAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgaHR0cCwgaHR0cC5zZXJ2ZXIKIGltcG9ydCBzb2NrZXQKLWltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgaW8KIGltcG9ydCBjb250ZXh0bGliCkBAIC0yMzgsNiArMjM4LDU0IEBACiAgICAgICAgICAgICAgICAgJzwvc3RydWN0PjwvdmFsdWU+PC9wYXJhbT48L3BhcmFtcz4nKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSZXNwb25zZUVycm9yLCB4bWxycGNsaWIubG9hZHMsIGRhdGEpCiAKKyAgICBkZWYgY2hlY2tfbG9hZHMoc2VsZiwgcywgdmFsdWUsICoqa3dhcmdzKToKKyAgICAgICAgZHVtcCA9ICc8cGFyYW1zPjxwYXJhbT48dmFsdWU+JXM8L3ZhbHVlPjwvcGFyYW0+PC9wYXJhbXM+JyAlIHMKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKGR1bXAsICoqa3dhcmdzKQorICAgICAgICAobmV3dmFsdWUsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3ZhbHVlLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld3ZhbHVlKSwgdHlwZSh2YWx1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICBkZWYgdGVzdF9sb2FkX3N0YW5kYXJkX3R5cGVzKHNlbGYpOgorICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfbG9hZHMKKyAgICAgICAgY2hlY2soJ3N0cmluZycsICdzdHJpbmcnKQorICAgICAgICBjaGVjaygnPHN0cmluZz5zdHJpbmc8L3N0cmluZz4nLCAnc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxzdHJpbmc+8J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2UoiBzdHJpbmc8L3N0cmluZz4nLCAn8J2UmPCdlKvwnZSm8J2UoPCdlKzwnZSh8J2UoiBzdHJpbmcnKQorICAgICAgICBjaGVjaygnPGludD4yMDU2MTgzOTQ3PC9pbnQ+JywgMjA1NjE4Mzk0NykKKyAgICAgICAgY2hlY2soJzxpbnQ+LTIwNTYxODM5NDc8L2ludD4nLCAtMjA1NjE4Mzk0NykKKyAgICAgICAgY2hlY2soJzxpND4yMDU2MTgzOTQ3PC9pND4nLCAyMDU2MTgzOTQ3KQorICAgICAgICBjaGVjaygnPGRvdWJsZT40NjA5My43ODEyNTwvZG91YmxlPicsIDQ2MDkzLjc4MTI1KQorICAgICAgICBjaGVjaygnPGJvb2xlYW4+MDwvYm9vbGVhbj4nLCBGYWxzZSkKKyAgICAgICAgY2hlY2soJzxiYXNlNjQ+QUdKNWRHVWdjM1J5YVc1bi93PT08L2Jhc2U2ND4nLAorICAgICAgICAgICAgICB4bWxycGNsaWIuQmluYXJ5KGInXHgwMGJ5dGUgc3RyaW5nXHhmZicpKQorICAgICAgICBjaGVjaygnPGJhc2U2ND5BR0o1ZEdVZ2MzUnlhVzVuL3c9PTwvYmFzZTY0PicsCisgICAgICAgICAgICAgIGInXHgwMGJ5dGUgc3RyaW5nXHhmZicsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIGNoZWNrKCc8ZGF0ZVRpbWUuaXNvODYwMT4yMDA1MDIxMFQxMTo0MToyMzwvZGF0ZVRpbWUuaXNvODYwMT4nLAorICAgICAgICAgICAgICB4bWxycGNsaWIuRGF0ZVRpbWUoJzIwMDUwMjEwVDExOjQxOjIzJykpCisgICAgICAgIGNoZWNrKCc8ZGF0ZVRpbWUuaXNvODYwMT4yMDA1MDIxMFQxMTo0MToyMzwvZGF0ZVRpbWUuaXNvODYwMT4nLAorICAgICAgICAgICAgICBkYXRldGltZS5kYXRldGltZSgyMDA1LCAyLCAxMCwgMTEsIDQxLCAyMyksCisgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIGNoZWNrKCc8YXJyYXk+PGRhdGE+JworICAgICAgICAgICAgICAnPHZhbHVlPjxpbnQ+MTwvaW50PjwvdmFsdWU+PHZhbHVlPjxpbnQ+MjwvaW50PjwvdmFsdWU+JworICAgICAgICAgICAgICAnPC9kYXRhPjwvYXJyYXk+JywgWzEsIDJdKQorICAgICAgICBjaGVjaygnPHN0cnVjdD4nCisgICAgICAgICAgICAgICc8bWVtYmVyPjxuYW1lPmI8L25hbWU+PHZhbHVlPjxpbnQ+MjwvaW50PjwvdmFsdWU+PC9tZW1iZXI+JworICAgICAgICAgICAgICAnPG1lbWJlcj48bmFtZT5hPC9uYW1lPjx2YWx1ZT48aW50PjE8L2ludD48L3ZhbHVlPjwvbWVtYmVyPicKKyAgICAgICAgICAgICAgJzwvc3RydWN0PicsIHsnYSc6IDEsICdiJzogMn0pCisKKyAgICBkZWYgdGVzdF9sb2FkX2V4dGVuc2lvbl90eXBlcyhzZWxmKToKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX2xvYWRzCisgICAgICAgIGNoZWNrKCc8bmlsLz4nLCBOb25lKQorICAgICAgICBjaGVjaygnPGV4Om5pbC8+JywgTm9uZSkKKyAgICAgICAgY2hlY2soJzxpMT4yMDU8L2kxPicsIDIwNSkKKyAgICAgICAgY2hlY2soJzxpMj4yMDU2MTwvaTI+JywgMjA1NjEpCisgICAgICAgIGNoZWNrKCc8aTg+OTg3NjU0MzIxMDwvaTg+JywgOTg3NjU0MzIxMCkKKyAgICAgICAgY2hlY2soJzxiaWdpbnRlZ2VyPjk4NzY1NDMyMTAwMTIzNDU2Nzg5PC9iaWdpbnRlZ2VyPicsCisgICAgICAgICAgICAgIDk4NzY1NDMyMTAwMTIzNDU2Nzg5KQorICAgICAgICBjaGVjaygnPGZsb2F0PjkzLjc4MTI1PC9mbG9hdD4nLCA5My43ODEyNSkKKyAgICAgICAgY2hlY2soJzxiaWdkZWNpbWFsPjk4NzY1NDMyMTAuMDEyMzQ1Njc4OTwvYmlnZGVjaW1hbD4nLAorICAgICAgICAgICAgICBkZWNpbWFsLkRlY2ltYWwoJzk4NzY1NDMyMTAuMDEyMzQ1Njc4OScpKQorCiAgICAgZGVmIHRlc3RfZ2V0X2hvc3RfaW5mbyhzZWxmKToKICAgICAgICAgIyBzZWUgYnVnICMzNjEzLCB0aGlzIHJhaXNlZCBhIFR5cGVFcnJvcgogICAgICAgICB0cmFuc3AgPSB4bWxycGMuY2xpZW50LlRyYW5zcG9ydCgpCkBAIC0xMTQ3LDcgKzExOTUsNiBAQAogICAgICIiIkEgdmFyaWF0aW9uIG9uIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgd2hpY2ggZ2l2ZXMgYSB0ZXh0IHN0cmVhbQogICAgIGhhdmluZyBhIGBidWZmZXJgIGF0dHJpYnV0ZS4KICAgICAiIiIKLSAgICBpbXBvcnQgaW8KICAgICBvcmlnX3N0ZG91dCA9IHN5cy5zdGRvdXQKICAgICBzeXMuc3Rkb3V0ID0gaW8uVGV4dElPV3JhcHBlcihpby5CeXRlc0lPKCksIGVuY29kaW5nPWVuY29kaW5nKQogICAgIHRyeToKQEAgLTEyMjAsNyArMTI2Nyw3IEBACiAgICAgICAgIGNvbnRlbnQgPSBoYW5kbGVbaGFuZGxlLmZpbmQoIjw/eG1sIik6XQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbnQocmUuc2VhcmNoKCdDb250ZW50LUxlbmd0aDogKFxkKyknLCBoYW5kbGUpLmdyb3VwKDEpKSwKKyAgICAgICAgICAgIGludChyZS5zZWFyY2gocidDb250ZW50LUxlbmd0aDogKFxkKyknLCBoYW5kbGUpLmdyb3VwKDEpKSwKICAgICAgICAgICAgIGxlbihjb250ZW50KSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKaW5kZXggYjYwYjgyZi4uYWUwYTI4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQpAQCAtMSw3ICsxLDQgQEAKIGltcG9ydCBjb2xsZWN0aW9ucy5hYmMKLWltcG9ydCBlcnJubwotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkgYi9MaWIvdGVzdC90ZXN0X3lpZWxkX2Zyb20ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3lpZWxkX2Zyb20ucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQppbmRleCAwZGQ0YmNhLi4wYTQzYjIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CkBAIC0xLDggKzEsOCBAQAogaW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCBpbwogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKK2ltcG9ydCBwb3NpeHBhdGgKIGltcG9ydCB0aW1lCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgemlwZmlsZQpAQCAtMzksMTAgKzM5LDYgQEAKICAgICAgICAgeWllbGQgZgogICAgICAgICB0ZXN0LmFzc2VydEZhbHNlKGYuY2xvc2VkKQogCi1kZWYgb3BlblUoemlwZnAsIGZuKToKLSAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgIHJldHVybiB6aXBmcC5vcGVuKGZuLCAnclUnKQotCiBjbGFzcyBBYnN0cmFjdFRlc3RzV2l0aFNvdXJjZUZpbGU6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKQEAgLTYyLDYgKzU4LDkgQEAKICAgICAgICAgICAgIHppcGZwLndyaXRlKFRFU1RGTiwgImFub3RoZXIubmFtZSIpCiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sIFRFU1RGTikKICAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJzdHJmaWxlIiwgc2VsZi5kYXRhKQorICAgICAgICAgICAgd2l0aCB6aXBmcC5vcGVuKCd3cml0dGVuLW9wZW4tdycsIG1vZGU9J3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZV9nZW46CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUobGluZSkKIAogICAgIGRlZiB6aXBfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6CiAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCkBAIC03Nyw3ICs3Niw3IEBACiAgICAgICAgICAgICB6aXBmcC5wcmludGRpcihmaWxlPWZwKQogICAgICAgICAgICAgZGlyZWN0b3J5ID0gZnAuZ2V0dmFsdWUoKQogICAgICAgICAgICAgbGluZXMgPSBkaXJlY3Rvcnkuc3BsaXRsaW5lcygpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaW5lcyksIDQpICMgTnVtYmVyIG9mIGZpbGVzICsgaGVhZGVyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaW5lcyksIDUpICMgTnVtYmVyIG9mIGZpbGVzICsgaGVhZGVyCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0ZpbGUgTmFtZScsIGxpbmVzWzBdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignTW9kaWZpZWQnLCBsaW5lc1swXSkKQEAgLTkxLDIzICs5MCwyNSBAQAogCiAgICAgICAgICAgICAjIENoZWNrIHRoZSBuYW1lbGlzdAogICAgICAgICAgICAgbmFtZXMgPSB6aXBmcC5uYW1lbGlzdCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKFRFU1RGTiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJhbm90aGVyLm5hbWUiLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInN0cmZpbGUiLCBuYW1lcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIndyaXR0ZW4tb3Blbi13IiwgbmFtZXMpCiAKICAgICAgICAgICAgICMgQ2hlY2sgaW5mb2xpc3QKICAgICAgICAgICAgIGluZm9zID0gemlwZnAuaW5mb2xpc3QoKQogICAgICAgICAgICAgbmFtZXMgPSBbaS5maWxlbmFtZSBmb3IgaSBpbiBpbmZvc10KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5hbWVzKSwgNCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oVEVTVEZOLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImFub3RoZXIubmFtZSIsIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic3RyZmlsZSIsIG5hbWVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigid3JpdHRlbi1vcGVuLXciLCBuYW1lcykKICAgICAgICAgICAgIGZvciBpIGluIGluZm9zOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaS5maWxlX3NpemUsIGxlbihzZWxmLmRhdGEpKQogCiAgICAgICAgICAgICAjIGNoZWNrIGdldGluZm8KLSAgICAgICAgICAgIGZvciBubSBpbiAoVEVTVEZOLCAiYW5vdGhlci5uYW1lIiwgInN0cmZpbGUiKToKKyAgICAgICAgICAgIGZvciBubSBpbiAoVEVTVEZOLCAiYW5vdGhlci5uYW1lIiwgInN0cmZpbGUiLCAid3JpdHRlbi1vcGVuLXciKToKICAgICAgICAgICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbyhubSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uZmlsZW5hbWUsIG5tKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5maWxlX3NpemUsIGxlbihzZWxmLmRhdGEpKQpAQCAtMzczLDE0ICszNzQsMTggQEAKICAgICB0ZXN0X2xvd19jb21wcmVzc2lvbiA9IE5vbmUKIAogICAgIGRlZiB6aXBfdGVzdF93cml0ZXN0cl9wZXJtaXNzaW9ucyhzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgICMgTWFrZSBzdXJlIHRoYXQgd3JpdGVzdHIgY3JlYXRlcyBmaWxlcyB3aXRoIG1vZGUgMDYwMCwKLSAgICAgICAgIyB3aGVuIGl0IGlzIHBhc3NlZCBhIG5hbWUgcmF0aGVyIHRoYW4gYSBaaXBJbmZvIGluc3RhbmNlLgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGFuZCBvcGVuKC4uLiBtb2RlPSd3JykgY3JlYXRlIGZpbGVzIHdpdGgKKyAgICAgICAgIyBtb2RlIDA2MDAsIHdoZW4gdGhleSBhcmUgcGFzc2VkIGEgbmFtZSByYXRoZXIgdGhhbiBhIFppcEluZm8KKyAgICAgICAgIyBpbnN0YW5jZS4KIAogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgogICAgICAgICAgICAgemluZm8gPSB6aXBmcC5nZXRpbmZvKCdzdHJmaWxlJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemluZm8uZXh0ZXJuYWxfYXR0ciwgMG82MDAgPDwgMTYpCiAKKyAgICAgICAgICAgIHppbmZvMiA9IHppcGZwLmdldGluZm8oJ3dyaXR0ZW4tb3Blbi13JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemluZm8yLmV4dGVybmFsX2F0dHIsIDBvNjAwIDw8IDE2KQorCiAgICAgZGVmIHRlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZik6CiAgICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoZiwgemlwZmlsZS5aSVBfU1RPUkVEKQpAQCAtNDg4LDEyICs0OTMsMTYgQEAKIAogICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3JlYWRvbmx5KHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IHRyeWluZyB0byBjYWxsIHdyaXRlKCkgb24gYSByZWFkb25seSBaaXBGaWxlIG9iamVjdAotICAgICAgICByYWlzZXMgYSBSdW50aW1lRXJyb3IuIiIiCisgICAgICAgIHJhaXNlcyBhIFZhbHVlRXJyb3IuIiIiCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InciKSBhcyB6aXBmcDoKICAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJzb21lZmlsZS50eHQiLCAiYm9ndXMiKQogCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZnAud3JpdGUsIFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGZwLndyaXRlLCBURVNURk4pCisKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgbW9kZT0iciIpIGFzIHppcGZwOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICB6aXBmcC5vcGVuKFRFU1RGTiwgbW9kZT0ndycpCiAKICAgICBkZWYgdGVzdF9hZGRfZmlsZV9iZWZvcmVfMTk4MChzZWxmKToKICAgICAgICAgIyBTZXQgYXRpbWUgYW5kIG10aW1lIHRvIDE5NzAtMDEtMDEKQEAgLTEwNjYsMzIgKzEwNzUsNiBAQAogICAgICAgICAgICAgICAgIGRhdGEgKz0gemlwZnAucmVhZChpbmZvKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihkYXRhLCB7YiJmb29iYXIiLCBiImJhcmZvbyJ9KQogCi0gICAgZGVmIHRlc3RfdW5pdmVyc2FsX2RlcHJlY2F0aW9uKHNlbGYpOgotICAgICAgICBmID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJ3IikgYXMgemlwZnA6Ci0gICAgICAgICAgICB6aXBmcC53cml0ZXN0cignc3BhbS50eHQnLCBiJ2FiYWJhZ2FsYW1hZ2EnKQotCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3IgbW9kZSBpbiAnVScsICdyVSc6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHppcG9wZW4gPSB6aXBmcC5vcGVuKCdzcGFtLnR4dCcsIG1vZGUpCi0gICAgICAgICAgICAgICAgemlwb3Blbi5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF91bml2ZXJzYWxfcmVhZGFoZWFkcyhzZWxmKToKLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotCi0gICAgICAgIGRhdGEgPSBiJ2FcclxuJyAqIDE2ICogMTAyNAotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6Ci0gICAgICAgICAgICB6aXBmcC53cml0ZXN0cihURVNURk4sIGRhdGEpCi0KLSAgICAgICAgZGF0YTIgPSBiJycKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3InKSBhcyB6aXBmcCwgXAotICAgICAgICAgICAgIG9wZW5VKHppcGZwLCBURVNURk4pIGFzIHppcG9wZW46Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiB6aXBvcGVuOgotICAgICAgICAgICAgICAgIGRhdGEyICs9IGxpbmUKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGRhdGEyLnJlcGxhY2UoYidcbicsIGInXHJcbicpKQotCiAgICAgZGVmIHRlc3Rfd3JpdGVzdHJfZXh0ZW5kZWRfbG9jYWxfaGVhZGVyX2lzc3VlMTIwMihzZWxmKToKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3cnKSBhcyBvcmlnX3ppcDoKICAgICAgICAgICAgIGZvciBkYXRhIGluICdhYmNkZWZnaGlqa2xtbm9wJzoKQEAgLTEyNzEsMjcgKzEyNTQsMjcgQEAKICAgICAgICAgICAgIGZwLndyaXRlKCJzaG9ydCBmaWxlIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoemlwZmlsZS5CYWRaaXBGaWxlLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTikKIAotICAgIGRlZiB0ZXN0X2Nsb3NlZF96aXBfcmFpc2VzX1J1bnRpbWVFcnJvcihzZWxmKToKKyAgICBkZWYgdGVzdF9jbG9zZWRfemlwX3JhaXNlc19WYWx1ZUVycm9yKHNlbGYpOgogICAgICAgICAiIiJWZXJpZnkgdGhhdCB0ZXN0emlwKCkgZG9lc24ndCBzd2FsbG93IGluYXBwcm9wcmlhdGUgZXhjZXB0aW9ucy4iIiIKICAgICAgICAgZGF0YSA9IGlvLkJ5dGVzSU8oKQogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShkYXRhLCBtb2RlPSJ3IikgYXMgemlwZjoKICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoImZvby50eHQiLCAiTywgZm9yIGEgTXVzZSBvZiBGaXJlISIpCiAKICAgICAgICAgIyBUaGlzIGlzIGNvcnJlY3Q7IGNhbGxpbmcgLnJlYWQgb24gYSBjbG9zZWQgWmlwRmlsZSBzaG91bGQgcmFpc2UKLSAgICAgICAgIyBhIFJ1bnRpbWVFcnJvciwgYW5kIHNvIHNob3VsZCBjYWxsaW5nIC50ZXN0emlwLiAgQW4gZWFybGllcgorICAgICAgICAjIGEgVmFsdWVFcnJvciwgYW5kIHNvIHNob3VsZCBjYWxsaW5nIC50ZXN0emlwLiAgQW4gZWFybGllcgogICAgICAgICAjIHZlcnNpb24gb2YgLnRlc3R6aXAgd291bGQgc3dhbGxvdyB0aGlzIGV4Y2VwdGlvbiAoYW5kIGFueSBvdGhlcikKICAgICAgICAgIyBhbmQgcmVwb3J0IHRoYXQgdGhlIGZpcnN0IGZpbGUgaW4gdGhlIGFyY2hpdmUgd2FzIGNvcnJ1cHQuCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi5yZWFkLCAiZm9vLnR4dCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi50ZXN0emlwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYud3JpdGVzdHIsICJib2d1cy50eHQiLCAiYm9ndXMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLnJlYWQsICJmb28udHh0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYudGVzdHppcCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi53cml0ZXN0ciwgImJvZ3VzLnR4dCIsICJib2d1cyIpCiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ3ppcGZpbGUgdGVzdCBkYXRhJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLndyaXRlLCBURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYud3JpdGUsIFRFU1RGTikKIAogICAgIGRlZiB0ZXN0X2JhZF9jb25zdHJ1Y3Rvcl9tb2RlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGJhZCBtb2RlcyBwYXNzZWQgdG8gWmlwRmlsZSBjb25zdHJ1Y3RvciBhcmUgY2F1Z2h0LiIiIgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOLCAicSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOLCAicSIpCiAKICAgICBkZWYgdGVzdF9iYWRfb3Blbl9tb2RlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGJhZCBtb2RlcyBwYXNzZWQgdG8gWmlwRmlsZS5vcGVuIGFyZSBjYXVnaHQuIiIiCkBAIC0xMjk5LDkgKzEyODIsMTIgQEAKICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoImZvby50eHQiLCAiTywgZm9yIGEgTXVzZSBvZiBGaXJlISIpCiAKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOLCBtb2RlPSJyIikgYXMgemlwZjoKLSAgICAgICAgIyByZWFkIHRoZSBkYXRhIHRvIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB0aGVyZQorICAgICAgICAgICAgIyByZWFkIHRoZSBkYXRhIHRvIG1ha2Ugc3VyZSB0aGUgZmlsZSBpcyB0aGVyZQogICAgICAgICAgICAgemlwZi5yZWFkKCJmb28udHh0IikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJxIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAicSIpCisgICAgICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyBzdXBwb3J0IGlzIHJlbW92ZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAiVSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgInJVIikKIAogICAgIGRlZiB0ZXN0X3JlYWQwKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGNhbGxpbmcgcmVhZCgwKSBvbiBhIFppcEV4dEZpbGUgb2JqZWN0IHJldHVybnMgYW4gZW1wdHkKQEAgLTEzMjQsNyArMTMxMCw3IEBACiAgICAgZGVmIHRlc3RfYmFkX2NvbXByZXNzaW9uX21vZGUoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYmFkIGNvbXByZXNzaW9uIG1ldGhvZHMgcGFzc2VkIHRvIFppcEZpbGUub3BlbiBhcmUKICAgICAgICAgY2F1Z2h0LiIiIgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGZpbGUuWmlwRmlsZSwgVEVTVEZOLCAidyIsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKIAogICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2NvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICAjIGRhdGEgaXMgZGVjbGFyZWQgYXMgc2hydW5rLCBidXQgYWN0dWFsbHkgZGVmbGF0ZWQKQEAgLTE0NzIsNiArMTQ1OCwzNSBAQAogICAgICAgICAgICAgIyB0ZXN0emlwIHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGNvcnJ1cHQgZmlsZSwgb3IgTm9uZQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoemlwZi50ZXN0emlwKCkpCiAKKyAgICBkZWYgdGVzdF9vcGVuX2NvbmZsaWN0aW5nX2hhbmRsZXMoc2VsZik6CisgICAgICAgICMgSXQncyBvbmx5IHBvc3NpYmxlIHRvIG9wZW4gb25lIHdyaXRhYmxlIGZpbGUgaGFuZGxlIGF0IGEgdGltZQorICAgICAgICBtc2cxID0gYiJJdCdzIGZ1biB0byBjaGFydGVyIGFuIGFjY291bnRhbnQhIgorICAgICAgICBtc2cyID0gYiJBbmQgc2FpbCB0aGUgd2lkZSBhY2NvdW50YW50IHNlYSIKKyAgICAgICAgbXNnMyA9IGIiVG8gZmluZCwgZXhwbG9yZSB0aGUgZnVuZHMgb2Zmc2hvcmUiCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JywgemlwZmlsZS5aSVBfU1RPUkVEKSBhcyB6aXBmOgorICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ2ZvbycsIG1vZGU9J3cnKSBhcyB3MjoKKyAgICAgICAgICAgICAgICB3Mi53cml0ZShtc2cxKQorICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ2JhcicsIG1vZGU9J3cnKSBhcyB3MToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLm9wZW4oJ2hhbmRsZScsIG1vZGU9J3cnKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYub3BlbignZm9vJywgbW9kZT0ncicpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi53cml0ZXN0cignc3RyJywgJ2FiY2RlJykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLndyaXRlKF9fZmlsZV9fLCAnZmlsZScpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgdzEud3JpdGUobXNnMikKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdiYXonLCBtb2RlPSd3JykgYXMgdzI6CisgICAgICAgICAgICAgICAgdzIud3JpdGUobXNnMykKKworICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAncicpIGFzIHppcGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgnZm9vJyksIG1zZzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgnYmFyJyksIG1zZzIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgnYmF6JyksIG1zZzMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYubmFtZWxpc3QoKSwgWydmb28nLCAnYmFyJywgJ2JheiddKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB1bmxpbmsoVEVTVEZOKQogICAgICAgICB1bmxpbmsoVEVTVEZOMikKQEAgLTE4MDUsNiArMTgyMCwyMiBAQAogICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3BlbigndHdvcycpIGFzIHpvcGVuOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6b3Blbi5yZWFkKCksIGInMjIyJykKIAorICAgIGRlZiB0ZXN0X29wZW5fd3JpdGUoc2VsZik6CisgICAgICAgIGZvciB3cmFwcGVyIGluIChsYW1iZGEgZjogZiksIFRlbGxhYmxlLCBVbnNlZWthYmxlOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qod3JhcHBlcj13cmFwcGVyKToKKyAgICAgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICAgICAgZi53cml0ZShiJ2FiYycpCisgICAgICAgICAgICAgICAgYmYgPSBpby5CdWZmZXJlZFdyaXRlcihmKQorICAgICAgICAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKHdyYXBwZXIoYmYpLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnLCAndycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgem9wZW4ud3JpdGUoYicxMTEnKQorICAgICAgICAgICAgICAgICAgICB3aXRoIHppcGYub3BlbigndHdvcycsICd3JykgYXMgem9wZW46CisgICAgICAgICAgICAgICAgICAgICAgICB6b3Blbi53cml0ZShiJzIyMicpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldHZhbHVlKClbOjVdLCBiJ2FiY1BLJykKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmKSBhcyB6aXBmOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgnb25lcycpLCBiJzExMScpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCd0d29zJyksIGInMjIyJykKKwogCiBAcmVxdWlyZXNfemxpYgogY2xhc3MgVGVzdHNXaXRoTXVsdGlwbGVPcGVucyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xOTE1LDYgKzE5NDYsMTkgQEAKICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoZi5maWxlbm8oKSwgMTAwKQogCisgICAgZGVmIHRlc3Rfd3JpdGVfd2hpbGVfcmVhZGluZyhzZWxmKToKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3cnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ29uZXMnLCBzZWxmLmRhdGExKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAnYScsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyB6aXBmOgorICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ29uZXMnLCAncicpIGFzIHIxOgorICAgICAgICAgICAgICAgIGRhdGExID0gcjEucmVhZCg1MDApCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnLCAndycpIGFzIHcxOgorICAgICAgICAgICAgICAgICAgICB3MS53cml0ZShzZWxmLmRhdGEyKQorICAgICAgICAgICAgICAgIGRhdGExICs9IHIxLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGExLCBzZWxmLmRhdGExKQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ3R3b3MnKSwgc2VsZi5kYXRhMikKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5saW5rKFRFU1RGTjIpCiAKQEAgLTE5ODQsMTM3ICsyMDI4LDE5IEBACiAgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQogCiAKLWNsYXNzIEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5saW5lX2dlbiA9IFtieXRlcygiVGVzdCBvZiB6aXBmaWxlIGxpbmUgJWQuIiAlIGksICJhc2NpaSIpCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShGSVhFRFRFU1RfU0laRSldCi0gICAgICAgIGNscy5zZXBzID0gKGInXHInLCBiJ1xyXG4nLCBiJ1xuJykKLSAgICAgICAgY2xzLmFyY2RhdGEgPSB7fQotICAgICAgICBmb3IgbiwgcyBpbiBlbnVtZXJhdGUoY2xzLnNlcHMpOgotICAgICAgICAgICAgY2xzLmFyY2RhdGFbc10gPSBzLmpvaW4oY2xzLmxpbmVfZ2VuKSArIHMKK2NsYXNzIFppcEluZm9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZnJvbV9maWxlKHNlbGYpOgorICAgICAgICB6aSA9IHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoX19maWxlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXhwYXRoLmJhc2VuYW1lKHppLmZpbGVuYW1lKSwgJ3Rlc3RfemlwZmlsZS5weScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoemkuaXNfZGlyKCkpCiAKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuYXJjZmlsZXMgPSB7fQotICAgICAgICBmb3IgbiwgcyBpbiBlbnVtZXJhdGUoc2VsZi5zZXBzKToKLSAgICAgICAgICAgIHNlbGYuYXJjZmlsZXNbc10gPSAnJXMtJWQnICUgKFRFU1RGTiwgbikKLSAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmFyY2ZpbGVzW3NdLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5hcmNkYXRhW3NdKQotCi0gICAgZGVmIG1ha2VfdGVzdF9hcmNoaXZlKHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJ3IiwgY29tcHJlc3Npb24pIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIGZuIGluIHNlbGYuYXJjZmlsZXMudmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgemlwZnAud3JpdGUoZm4sIGZuKQotCi0gICAgZGVmIHJlYWRfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAgICAgemlwZGF0YSA9IGZwLnJlYWQoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5hcmNkYXRhW3NlcF0sIHppcGRhdGEpCi0KLSAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHJlYWRsaW5lX3JlYWRfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgICAgICAgICBkYXRhID0gYicnCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWFkID0gemlwb3Blbi5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSByZWFkCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgPSB6aXBvcGVuLnJlYWQoNSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZWFkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhICs9IHJlYWQKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBzZWxmLmFyY2RhdGFbYidcbiddKQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmVfcmVhZChzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkbGluZV9yZWFkX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZV90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKLQotICAgICAgICAjIFJlYWQgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuVSh6aXBmcCwgZm4pIGFzIHppcG9wZW46Ci0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZV9nZW46Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lZGF0YSA9IHppcG9wZW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lZGF0YSwgbGluZSArIGInXG4nKQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHJlYWRsaW5lc190ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKLQotICAgICAgICAjIFJlYWQgdGhlIFpJUCBhcmNoaXZlCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuVSh6aXBmcCwgZm4pIGFzIGZwOgotICAgICAgICAgICAgICAgICAgICB6aXBsaW5lcyA9IGZwLnJlYWRsaW5lcygpCi0gICAgICAgICAgICAgICAgZm9yIGxpbmUsIHppcGxpbmUgaW4gemlwKHNlbGYubGluZV9nZW4sIHppcGxpbmVzKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBsaW5lLCBsaW5lICsgYidcbicpCi0KLSAgICBkZWYgdGVzdF9yZWFkbGluZXMoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZGxpbmVzX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiBpdGVybGluZXNfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUsIHppcGxpbmUgaW4gemlwKHNlbGYubGluZV9nZW4sIGZwKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwbGluZSwgbGluZSArIGInXG4nKQotCi0gICAgZGVmIHRlc3RfaXRlcmxpbmVzKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgIHVubGluayhmbikKLSAgICAgICAgdW5saW5rKFRFU1RGTikKLSAgICAgICAgdW5saW5rKFRFU1RGTjIpCi0KLQotY2xhc3MgU3RvcmVkVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX1NUT1JFRAotCi1AcmVxdWlyZXNfemxpYgotY2xhc3MgRGVmbGF0ZVVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfREVGTEFURUQKLQotQHJlcXVpcmVzX2J6MgotY2xhc3MgQnppcDJVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9CWklQMgotCi1AcmVxdWlyZXNfbHptYQotY2xhc3MgTHptYVVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfTFpNQQorICAgIGRlZiB0ZXN0X2Zyb21fZGlyKHNlbGYpOgorICAgICAgICBkaXJwYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCisgICAgICAgIHppID0gemlwZmlsZS5aaXBJbmZvLmZyb21fZmlsZShkaXJwYXRoLCAnc3RkbGliX3Rlc3RzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5maWxlbmFtZSwgJ3N0ZGxpYl90ZXN0cy8nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoemkuaXNfZGlyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfU1RPUkVEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmZpbGVfc2l6ZSwgMCkKIAogCiBjbGFzcyBDb21tYW5kTGluZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjE3NSw3ICsyMTAxLDcgQEAKICAgICAgICAgICAgICAgICBmb3IgemkgaW4gemYuaW5mb2xpc3QoKToKICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihleHRkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppLmZpbGVuYW1lLnJlcGxhY2UoJy8nLCBvcy5zZXApKQotICAgICAgICAgICAgICAgICAgICBpZiB6aS5maWxlbmFtZS5lbmRzd2l0aCgnLycpOgorICAgICAgICAgICAgICAgICAgICBpZiB6aS5pc19kaXIoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKHBhdGgpKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHBhdGgpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQppbmRleCBkNWIzYjIyLi43ZGRiYzUwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weQpAQCAtMzk4LDcgKzM5OCw4IEBACiAgICAgICAgIHBhY2tkaXIyID0gcGFja2RpciArIFRFU1RQQUNLMiArIG9zLnNlcAogICAgICAgICBmaWxlcyA9IHtwYWNrZGlyICsgIl9faW5pdF9fIiArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKSwKICAgICAgICAgICAgICAgICAgcGFja2RpcjIgKyAiX19pbml0X18iICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAotICAgICAgICAgICAgICAgICBwYWNrZGlyMiArIFRFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5Yyl9CisgICAgICAgICAgICAgICAgIHBhY2tkaXIyICsgVEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKSwKKyAgICAgICAgICAgICAgICAgInNwYW0iICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpfQogCiAgICAgICAgIHogPSBaaXBGaWxlKFRFTVBfWklQLCAidyIpCiAgICAgICAgIHRyeToKQEAgLTQxMiw2ICs0MTMsMTQgQEAKICAgICAgICAgICAgIHppID0gemlwaW1wb3J0LnppcGltcG9ydGVyKFRFTVBfWklQKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5hcmNoaXZlLCBURU1QX1pJUCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShURVNUUEFDSyksIFRydWUpCisKKyAgICAgICAgICAgIGZpbmRfbW9kID0gemkuZmluZF9tb2R1bGUoJ3NwYW0nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZmluZF9tb2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZF9tb2QsIHppcGltcG9ydC56aXBpbXBvcnRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZmluZF9tb2QuaXNfcGFja2FnZSgnc3BhbScpKQorICAgICAgICAgICAgbG9hZF9tb2QgPSBmaW5kX21vZC5sb2FkX21vZHVsZSgnc3BhbScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRfbW9kLmdldF9maWxlbmFtZSgnc3BhbScpLCBsb2FkX21vZC5fX2ZpbGVfXykKKwogICAgICAgICAgICAgbW9kID0gemkubG9hZF9tb2R1bGUoVEVTVFBBQ0spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmdldF9maWxlbmFtZShURVNUUEFDSyksIG1vZC5fX2ZpbGVfXykKIApAQCAtNDcxLDYgKzQ4MCwxNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICB6aS5pc19wYWNrYWdlKFRFU1RQQUNLMiArIG9zLnNlcCArIFRFU1RNT0QpLCBGYWxzZSkKIAorICAgICAgICAgICAgcGtnX3BhdGggPSBURU1QX1pJUCArIG9zLnNlcCArIHBhY2tkaXIgKyBURVNUUEFDSzIKKyAgICAgICAgICAgIHppMiA9IHppcGltcG9ydC56aXBpbXBvcnRlcihwa2dfcGF0aCkKKyAgICAgICAgICAgIGZpbmRfbW9kX2RvdHRlZCA9IHppMi5maW5kX21vZHVsZShURVNUTU9EKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZmluZF9tb2RfZG90dGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbmRfbW9kX2RvdHRlZCwgemlwaW1wb3J0LnppcGltcG9ydGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh6aTIuaXNfcGFja2FnZShURVNUTU9EKSkKKyAgICAgICAgICAgIGxvYWRfbW9kID0gZmluZF9tb2RfZG90dGVkLmxvYWRfbW9kdWxlKFRFU1RNT0QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGZpbmRfbW9kX2RvdHRlZC5nZXRfZmlsZW5hbWUoVEVTVE1PRCksIGxvYWRfbW9kLl9fZmlsZV9fKQorCiAgICAgICAgICAgICBtb2RfcGF0aCA9IFRFU1RQQUNLMiArIG9zLnNlcCArIFRFU1RNT0QKICAgICAgICAgICAgIG1vZF9uYW1lID0gbW9kdWxlX3BhdGhfdG9fZG90dGVkX25hbWUobW9kX3BhdGgpCiAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShtb2RfbmFtZSkKQEAgLTYyMyw4ICs2NDIsMTAgQEAKIAogICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoZmlsZW5hbWUpCiAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihvcy5mc2VuY29kZShmaWxlbmFtZSkpCi0gICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihieXRlYXJyYXkob3MuZnNlbmNvZGUoZmlsZW5hbWUpKSkKLSAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKG1lbW9yeXZpZXcob3MuZnNlbmNvZGUoZmlsZW5hbWUpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoYnl0ZWFycmF5KG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKG1lbW9yeXZpZXcob3MuZnNlbmNvZGUoZmlsZW5hbWUpKSkKIAogCiBAc3VwcG9ydC5yZXF1aXJlc196bGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQppbmRleCA1OTEzNjIyLi44NGQ1MjZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKQEAgLTEyLDcgKzEyLDYgQEAKIGltcG9ydCBkb2N0ZXN0CiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IGxpbmVjYWNoZQotaW1wb3J0IHBkYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCAoc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbiwgYXNzZXJ0X3B5dGhvbl9vaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX3NjcmlwdCwgbWFrZV96aXBfc2NyaXB0KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96bGliLnB5IGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CmluZGV4IDZmZWE4OTMuLjIwMTc0ZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKQEAgLTE2NCw2ICsxNjQsMTYgQEAKICAgICAgICAgeCA9IHpsaWIuY29tcHJlc3MoSEFNTEVUX1NDRU5FKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4KSwgSEFNTEVUX1NDRU5FKQogCisgICAgZGVmIHRlc3Rfa2V5d29yZHMoc2VsZik6CisgICAgICAgIHggPSB6bGliLmNvbXByZXNzKEhBTUxFVF9TQ0VORSwgbGV2ZWw9MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmRlY29tcHJlc3MoeCksIEhBTUxFVF9TQ0VORSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgemxpYi5jb21wcmVzcyhkYXRhPUhBTUxFVF9TQ0VORSwgbGV2ZWw9MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLmRlY29tcHJlc3MoeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JpdHM9emxpYi5NQVhfV0JJVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZnNpemU9emxpYi5ERUZfQlVGX1NJWkUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIEhBTUxFVF9TQ0VORSkKKwogICAgIGRlZiB0ZXN0X3NwZWVjaDEyOChzZWxmKToKICAgICAgICAgIyBjb21wcmVzcyBtb3JlIGRhdGEKICAgICAgICAgZGF0YSA9IEhBTUxFVF9TQ0VORSAqIDEyOApAQCAtMjM0LDYgKzI0NCwyNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRjby51bmNvbnN1bWVkX3RhaWwsIGJ5dGVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRjby51bnVzZWRfZGF0YSwgYnl0ZXMpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSAyCisgICAgICAgIG1ldGhvZCA9IHpsaWIuREVGTEFURUQKKyAgICAgICAgd2JpdHMgPSAtMTIKKyAgICAgICAgbWVtTGV2ZWwgPSA5CisgICAgICAgIHN0cmF0ZWd5ID0gemxpYi5aX0ZJTFRFUkVECisgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaihsZXZlbD1sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD1tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz13Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbUxldmVsPW1lbUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ3k9c3RyYXRlZ3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ZGljdD1iIiIpCisgICAgICAgIGRvID0gemxpYi5kZWNvbXByZXNzb2JqKHdiaXRzPXdiaXRzLCB6ZGljdD1iIiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNvLmNvbXByZXNzKGRhdGE9SEFNTEVUX1NDRU5FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkby5kZWNvbXByZXNzKGRhdGE9emxpYi5jb21wcmVzcyhIQU1MRVRfU0NFTkUpKQorICAgICAgICB4ID0gY28uY29tcHJlc3MoSEFNTEVUX1NDRU5FKSArIGNvLmZsdXNoKCkKKyAgICAgICAgeSA9IGRvLmRlY29tcHJlc3MoeCwgbWF4X2xlbmd0aD1sZW4oSEFNTEVUX1NDRU5FKSkgKyBkby5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSEFNTEVUX1NDRU5FLCB5KQorCiAgICAgZGVmIHRlc3RfY29tcHJlc3NvcHRpb25zKHNlbGYpOgogICAgICAgICAjIHNwZWNpZnkgbG90cyBvZiBvcHRpb25zIHRvIGNvbXByZXNzb2JqKCkKICAgICAgICAgbGV2ZWwgPSAyCkBAIC0yNDksMTAgKzI4MCw2IEBACiAgICAgICAgIHkyID0gZGNvLmZsdXNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIQU1MRVRfU0NFTkUsIHkxICsgeTIpCiAKLSAgICAgICAgIyBrZXl3b3JkIGFyZ3VtZW50cyBzaG91bGQgYWxzbyBiZSBzdXBwb3J0ZWQKLSAgICAgICAgemxpYi5jb21wcmVzc29iaihsZXZlbD1sZXZlbCwgbWV0aG9kPW1ldGhvZCwgd2JpdHM9d2JpdHMsCi0gICAgICAgICAgICBtZW1MZXZlbD1tZW1MZXZlbCwgc3RyYXRlZ3k9c3RyYXRlZ3ksIHpkaWN0PWIiIikKLQogICAgIGRlZiB0ZXN0X2NvbXByZXNzaW5jcmVtZW50YWwoc2VsZik6CiAgICAgICAgICMgY29tcHJlc3Mgb2JqZWN0IGluIHN0ZXBzLCBkZWNvbXByZXNzIG9iamVjdCBhcyBvbmUtc2hvdAogICAgICAgICBkYXRhID0gSEFNTEVUX1NDRU5FICogMTI4CmRpZmYgLS1naXQgYS9MaWIvdGhyZWFkaW5nLnB5IGIvTGliL3RocmVhZGluZy5weQppbmRleCAwNmI3YjliLi40ODI5ZmY0IDEwMDY0NAotLS0gYS9MaWIvdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90aHJlYWRpbmcucHkKQEAgLTIyLDkgKzIyLDExIEBACiAjIHdpdGggdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUsIHdoaWNoIGRvZXNuJ3QgcHJvdmlkZSB0aGUgb2xkCiAjIEphdmEgaW5zcGlyZWQgbmFtZXMuCiAKLV9fYWxsX18gPSBbJ2FjdGl2ZV9jb3VudCcsICdDb25kaXRpb24nLCAnY3VycmVudF90aHJlYWQnLCAnZW51bWVyYXRlJywgJ0V2ZW50JywKLSAgICAgICAgICAgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnVGhyZWFkJywgJ0JhcnJpZXInLAotICAgICAgICAgICAnVGltZXInLCAnVGhyZWFkRXJyb3InLCAnc2V0cHJvZmlsZScsICdzZXR0cmFjZScsICdsb2NhbCcsICdzdGFja19zaXplJ10KK19fYWxsX18gPSBbJ2dldF9pZGVudCcsICdhY3RpdmVfY291bnQnLCAnQ29uZGl0aW9uJywgJ2N1cnJlbnRfdGhyZWFkJywKKyAgICAgICAgICAgJ2VudW1lcmF0ZScsICdtYWluX3RocmVhZCcsICdUSU1FT1VUX01BWCcsCisgICAgICAgICAgICdFdmVudCcsICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ1RocmVhZCcsCisgICAgICAgICAgICdCYXJyaWVyJywgJ0Jyb2tlbkJhcnJpZXJFcnJvcicsICdUaW1lcicsICdUaHJlYWRFcnJvcicsCisgICAgICAgICAgICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQogCiAjIFJlbmFtZSBzb21lIHN0dWZmIHNvICJmcm9tIHRocmVhZGluZyBpbXBvcnQgKiIgaXMgc2FmZQogX3N0YXJ0X25ld190aHJlYWQgPSBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQKZGlmZiAtLWdpdCBhL0xpYi90aW1laXQucHkgYi9MaWIvdGltZWl0LnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggMmRlODhmNy4uMjc3MGVmYQotLS0gYS9MaWIvdGltZWl0LnB5CisrKyBiL0xpYi90aW1laXQucHkKQEAgLTIwNyw2ICsyMDcsMjYgQEAKICAgICAgICAgICAgIHIuYXBwZW5kKHQpCiAgICAgICAgIHJldHVybiByCiAKKyAgICBkZWYgYXV0b3JhbmdlKHNlbGYsIGNhbGxiYWNrPU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBvZiBsb29wcyBzbyB0aGF0IHRvdGFsIHRpbWUgPj0gMC4yLgorCisgICAgICAgIENhbGxzIHRoZSB0aW1laXQgbWV0aG9kIHdpdGggKm51bWJlciogc2V0IHRvIHN1Y2Nlc3NpdmUgcG93ZXJzIG9mCisgICAgICAgIHRlbiAoMTAsIDEwMCwgMTAwMCwgLi4uKSB1cCB0byBhIG1heGltdW0gb2Ygb25lIGJpbGxpb24sIHVudGlsCisgICAgICAgIHRoZSB0aW1lIHRha2VuIGlzIGF0IGxlYXN0IDAuMiBzZWNvbmQsIG9yIHRoZSBtYXhpbXVtIGlzIHJlYWNoZWQuCisgICAgICAgIFJldHVybnMgYGAobnVtYmVyLCB0aW1lX3Rha2VuKWBgLgorCisgICAgICAgIElmICpjYWxsYmFjayogaXMgZ2l2ZW4gYW5kIGlzIG5vdCBOb25lLCBpdCB3aWxsIGJlIGNhbGxlZCBhZnRlcgorICAgICAgICBlYWNoIHRyaWFsIHdpdGggdHdvIGFyZ3VtZW50czogYGBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisgICAgICAgICIiIgorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCAxMCk6CisgICAgICAgICAgICBudW1iZXIgPSAxMCoqaQorICAgICAgICAgICAgdGltZV90YWtlbiA9IHNlbGYudGltZWl0KG51bWJlcikKKyAgICAgICAgICAgIGlmIGNhbGxiYWNrOgorICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbikKKyAgICAgICAgICAgIGlmIHRpbWVfdGFrZW4gPj0gMC4yOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHJldHVybiAobnVtYmVyLCB0aW1lX3Rha2VuKQorCiBkZWYgdGltZWl0KHN0bXQ9InBhc3MiLCBzZXR1cD0icGFzcyIsIHRpbWVyPWRlZmF1bHRfdGltZXIsCiAgICAgICAgICAgIG51bWJlcj1kZWZhdWx0X251bWJlciwgZ2xvYmFscz1Ob25lKToKICAgICAiIiJDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVhdGUgVGltZXIgb2JqZWN0IGFuZCBjYWxsIHRpbWVpdCBtZXRob2QuIiIiCkBAIC0yOTUsMTcgKzMxNSwxNiBAQAogICAgIHQgPSBUaW1lcihzdG10LCBzZXR1cCwgdGltZXIpCiAgICAgaWYgbnVtYmVyID09IDA6CiAgICAgICAgICMgZGV0ZXJtaW5lIG51bWJlciBzbyB0aGF0IDAuMiA8PSB0b3RhbCB0aW1lIDwgMi4wCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDEwKToKLSAgICAgICAgICAgIG51bWJlciA9IDEwKippCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgeCA9IHQudGltZWl0KG51bWJlcikKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICB0LnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIiVkIGxvb3BzIC0+ICUuKmcgc2VjcyIgJSAobnVtYmVyLCBwcmVjaXNpb24sIHgpKQotICAgICAgICAgICAgaWYgeCA+PSAwLjI6Ci0gICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgY2FsbGJhY2sgPSBOb25lCisgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICBkZWYgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKToKKyAgICAgICAgICAgICAgICBtc2cgPSAie251bX0gbG9vcHMgLT4ge3NlY3M6LntwcmVjfWd9IHNlY3MiCisgICAgICAgICAgICAgICAgcHJpbnQobXNnLmZvcm1hdChudW09bnVtYmVyLCBzZWNzPXRpbWVfdGFrZW4sIHByZWM9cHJlY2lzaW9uKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbnVtYmVyLCBfID0gdC5hdXRvcmFuZ2UoY2FsbGJhY2spCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHQucHJpbnRfZXhjKCkKKyAgICAgICAgICAgIHJldHVybiAxCiAgICAgdHJ5OgogICAgICAgICByID0gdC5yZXBlYXQocmVwZWF0LCBudW1iZXIpCiAgICAgZXhjZXB0OgpAQCAtMzE3LDIwICszMzYsMjYgQEAKICAgICBwcmludCgiJWQgbG9vcHMsIiAlIG51bWJlciwgZW5kPScgJykKICAgICB1c2VjID0gYmVzdCAqIDFlNiAvIG51bWJlcgogICAgIGlmIHRpbWVfdW5pdCBpcyBub3QgTm9uZToKLSAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgJXMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlYy91bml0c1t0aW1lX3VuaXRdLCB0aW1lX3VuaXQpKQorICAgICAgICBzY2FsZSA9IHVuaXRzW3RpbWVfdW5pdF0KICAgICBlbHNlOgotICAgICAgICBpZiB1c2VjIDwgMTAwMDoKLSAgICAgICAgICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnIHVzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwgcHJlY2lzaW9uLCB1c2VjKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZWMgPSB1c2VjIC8gMTAwMAotICAgICAgICAgICAgaWYgbXNlYyA8IDEwMDA6Ci0gICAgICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgbXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgbXNlYykpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlYyA9IG1zZWMgLyAxMDAwCi0gICAgICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24sIHNlYykpCisgICAgICAgIHNjYWxlcyA9IFsoc2NhbGUsIHVuaXQpIGZvciB1bml0LCBzY2FsZSBpbiB1bml0cy5pdGVtcygpXQorICAgICAgICBzY2FsZXMuc29ydChyZXZlcnNlPVRydWUpCisgICAgICAgIGZvciBzY2FsZSwgdGltZV91bml0IGluIHNjYWxlczoKKyAgICAgICAgICAgIGlmIHVzZWMgPj0gc2NhbGU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyAlcyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWMvc2NhbGUsIHRpbWVfdW5pdCkpCisgICAgYmVzdCA9IG1pbihyKQorICAgIHVzZWMgPSBiZXN0ICogMWU2IC8gbnVtYmVyCisgICAgd29yc3QgPSBtYXgocikKKyAgICBpZiB3b3JzdCA+PSBiZXN0ICogNDoKKyAgICAgICAgdXNlYyA9IHdvcnN0ICogMWU2IC8gbnVtYmVyCisgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICB3YXJuaW5ncy53YXJuX2V4cGxpY2l0KAorICAgICAgICAgICAgIlRoZSB0ZXN0IHJlc3VsdHMgYXJlIGxpa2VseSB1bnJlbGlhYmxlLiBUaGUgd29yc3RcbiIKKyAgICAgICAgICAgICJ0aW1lICglLipnICVzKSB3YXMgbW9yZSB0aGFuIGZvdXIgdGltZXMgc2xvd2VyIHRoYW4gdGhlIGJlc3QgdGltZS4iICUKKyAgICAgICAgICAgIChwcmVjaXNpb24sIHVzZWMvc2NhbGUsIHRpbWVfdW5pdCksCisgICAgICAgICAgICAgVXNlcldhcm5pbmcsICcnLCAwKQogICAgIHJldHVybiBOb25lCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9fX2luaXRfXy5weSBiL0xpYi90a2ludGVyL19faW5pdF9fLnB5CmluZGV4IDFlYWFiNDQuLmVlMjQxNWQgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5CisrKyBiL0xpYi90a2ludGVyL19faW5pdF9fLnB5CkBAIC0zMCw2ICszMCw3IEBACiB0ay5tYWlubG9vcCgpCiAiIiIKIAoraW1wb3J0IGVudW0KIGltcG9ydCBzeXMKIAogaW1wb3J0IF90a2ludGVyICMgSWYgdGhpcyBmYWlscyB5b3VyIFB5dGhvbiBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgZm9yIFRrCkBAIC0xMzIsNiArMTMzLDUwIEBACiAgICAgICAgIGRpY3Rba2V5XSA9IHZhbHVlCiAgICAgcmV0dXJuIGRpY3QKIAorCitjbGFzcyBFdmVudFR5cGUoc3RyLCBlbnVtLkVudW0pOgorICAgIEtleVByZXNzID0gJzInCisgICAgS2V5ID0gS2V5UHJlc3MsCisgICAgS2V5UmVsZWFzZSA9ICczJworICAgIEJ1dHRvblByZXNzID0gJzQnCisgICAgQnV0dG9uID0gQnV0dG9uUHJlc3MsCisgICAgQnV0dG9uUmVsZWFzZSA9ICc1JworICAgIE1vdGlvbiA9ICc2JworICAgIEVudGVyID0gJzcnCisgICAgTGVhdmUgPSAnOCcKKyAgICBGb2N1c0luID0gJzknCisgICAgRm9jdXNPdXQgPSAnMTAnCisgICAgS2V5bWFwID0gJzExJyAgICAgICAgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBFeHBvc2UgPSAnMTInCisgICAgR3JhcGhpY3NFeHBvc2UgPSAnMTMnICAgIyB1bmRvY3VtZW50ZWQKKyAgICBOb0V4cG9zZSA9ICcxNCcgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIFZpc2liaWxpdHkgPSAnMTUnCisgICAgQ3JlYXRlID0gJzE2JworICAgIERlc3Ryb3kgPSAnMTcnCisgICAgVW5tYXAgPSAnMTgnCisgICAgTWFwID0gJzE5JworICAgIE1hcFJlcXVlc3QgPSAnMjAnCisgICAgUmVwYXJlbnQgPSAnMjEnCisgICAgQ29uZmlndXJlID0gJzIyJworICAgIENvbmZpZ3VyZVJlcXVlc3QgPSAnMjMnCisgICAgR3Jhdml0eSA9ICcyNCcKKyAgICBSZXNpemVSZXF1ZXN0ID0gJzI1JworICAgIENpcmN1bGF0ZSA9ICcyNicKKyAgICBDaXJjdWxhdGVSZXF1ZXN0ID0gJzI3JworICAgIFByb3BlcnR5ID0gJzI4JworICAgIFNlbGVjdGlvbkNsZWFyID0gJzI5JyAgICMgdW5kb2N1bWVudGVkCisgICAgU2VsZWN0aW9uUmVxdWVzdCA9ICczMCcgIyB1bmRvY3VtZW50ZWQKKyAgICBTZWxlY3Rpb24gPSAnMzEnICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIENvbG9ybWFwID0gJzMyJworICAgIENsaWVudE1lc3NhZ2UgPSAnMzMnICAgICMgdW5kb2N1bWVudGVkCisgICAgTWFwcGluZyA9ICczNCcgICAgICAgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBWaXJ0dWFsRXZlbnQgPSAnMzUnLCAgICAjIHVuZG9jdW1lbnRlZAorICAgIEFjdGl2YXRlID0gJzM2JywKKyAgICBEZWFjdGl2YXRlID0gJzM3JywKKyAgICBNb3VzZVdoZWVsID0gJzM4JywKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYubmFtZQorCiBjbGFzcyBFdmVudDoKICAgICAiIiJDb250YWluZXIgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIGFuIGV2ZW50LgogCkBAIC0xNzQsNyArMjE5LDQzIEBACiAgICAgd2lkZ2V0IC0gd2lkZ2V0IGluIHdoaWNoIHRoZSBldmVudCBvY2N1cnJlZAogICAgIGRlbHRhIC0gZGVsdGEgb2Ygd2hlZWwgbW92ZW1lbnQgKE1vdXNlV2hlZWwpCiAgICAgIiIiCi0gICAgcGFzcworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgYXR0cnMgPSB7azogdiBmb3IgaywgdiBpbiBzZWxmLl9fZGljdF9fLml0ZW1zKCkgaWYgdiAhPSAnPz8nfQorICAgICAgICBpZiBub3Qgc2VsZi5jaGFyOgorICAgICAgICAgICAgZGVsIGF0dHJzWydjaGFyJ10KKyAgICAgICAgZWxpZiBzZWxmLmNoYXIgIT0gJz8/JzoKKyAgICAgICAgICAgIGF0dHJzWydjaGFyJ10gPSByZXByKHNlbGYuY2hhcikKKyAgICAgICAgaWYgbm90IGdldGF0dHIoc2VsZiwgJ3NlbmRfZXZlbnQnLCBUcnVlKToKKyAgICAgICAgICAgIGRlbCBhdHRyc1snc2VuZF9ldmVudCddCisgICAgICAgIGlmIHNlbGYuc3RhdGUgPT0gMDoKKyAgICAgICAgICAgIGRlbCBhdHRyc1snc3RhdGUnXQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc2VsZi5zdGF0ZSwgaW50KToKKyAgICAgICAgICAgIHN0YXRlID0gc2VsZi5zdGF0ZQorICAgICAgICAgICAgbW9kcyA9ICgnU2hpZnQnLCAnTG9jaycsICdDb250cm9sJywKKyAgICAgICAgICAgICAgICAgICAgJ01vZDEnLCAnTW9kMicsICdNb2QzJywgJ01vZDQnLCAnTW9kNScsCisgICAgICAgICAgICAgICAgICAgICdCdXR0b24xJywgJ0J1dHRvbjInLCAnQnV0dG9uMycsICdCdXR0b240JywgJ0J1dHRvbjUnKQorICAgICAgICAgICAgcyA9IFtdCisgICAgICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUobW9kcyk6CisgICAgICAgICAgICAgICAgaWYgc3RhdGUgJiAoMSA8PCBpKToKKyAgICAgICAgICAgICAgICAgICAgcy5hcHBlbmQobikKKyAgICAgICAgICAgIHN0YXRlID0gc3RhdGUgJiB+KCgxPDwgbGVuKG1vZHMpKSAtIDEpCisgICAgICAgICAgICBpZiBzdGF0ZSBvciBub3QgczoKKyAgICAgICAgICAgICAgICBzLmFwcGVuZChoZXgoc3RhdGUpKQorICAgICAgICAgICAgYXR0cnNbJ3N0YXRlJ10gPSAnfCcuam9pbihzKQorICAgICAgICBpZiBzZWxmLmRlbHRhID09IDA6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ2RlbHRhJ10KKyAgICAgICAgIyB3aWRnZXQgdXN1YWxseSBpcyBrbm93bgorICAgICAgICAjIHNlcmlhbCBhbmQgdGltZSBhcmUgbm90IHZlcnkgaW50ZXJlc3RpbmcKKyAgICAgICAgIyBrZXlzeW1fbnVtIGR1cGxpY2F0ZXMga2V5c3ltCisgICAgICAgICMgeF9yb290IGFuZCB5X3Jvb3QgbW9zdGx5IGR1cGxpY2F0ZSB4IGFuZCB5CisgICAgICAgIGtleXMgPSAoJ3NlbmRfZXZlbnQnLAorICAgICAgICAgICAgICAgICdzdGF0ZScsICdrZXlzeW0nLCAna2V5Y29kZScsICdjaGFyJywKKyAgICAgICAgICAgICAgICAnbnVtJywgJ2RlbHRhJywgJ2ZvY3VzJywKKyAgICAgICAgICAgICAgICAneCcsICd5JywgJ3dpZHRoJywgJ2hlaWdodCcpCisgICAgICAgIHJldHVybiAnPCVzIGV2ZW50JXM+JyAlICgKKyAgICAgICAgICAgIHNlbGYudHlwZSwKKyAgICAgICAgICAgICcnLmpvaW4oJyAlcz0lcycgJSAoaywgYXR0cnNba10pIGZvciBrIGluIGtleXMgaWYgayBpbiBhdHRycykKKyAgICAgICAgKQogCiBfc3VwcG9ydF9kZWZhdWx0X3Jvb3QgPSAxCiBfZGVmYXVsdF9yb290ID0gTm9uZQpAQCAtMjYyLDE1ICszNDMsOCBAQAogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB2YWx1ZSBvZiB2YXJpYWJsZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKQotICAgIGRlZiB0cmFjZV92YXJpYWJsZShzZWxmLCBtb2RlLCBjYWxsYmFjayk6Ci0gICAgICAgICIiIkRlZmluZSBhIHRyYWNlIGNhbGxiYWNrIGZvciB0aGUgdmFyaWFibGUuCiAKLSAgICAgICAgTU9ERSBpcyBvbmUgb2YgInIiLCAidyIsICJ1IiBmb3IgcmVhZCwgd3JpdGUsIHVuZGVmaW5lLgotICAgICAgICBDQUxMQkFDSyBtdXN0IGJlIGEgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIHdoZW4KLSAgICAgICAgdGhlIHZhcmlhYmxlIGlzIHJlYWQsIHdyaXR0ZW4gb3IgdW5kZWZpbmVkLgotCi0gICAgICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2suCi0gICAgICAgICIiIgorICAgIGRlZiBfcmVnaXN0ZXIoc2VsZiwgY2FsbGJhY2spOgogICAgICAgICBmID0gQ2FsbFdyYXBwZXIoY2FsbGJhY2ssIE5vbmUsIHNlbGYuX3Jvb3QpLl9fY2FsbF9fCiAgICAgICAgIGNibmFtZSA9IHJlcHIoaWQoZikpCiAgICAgICAgIHRyeToKQEAgLTI4NSwxOCArMzU5LDMzIEBACiAgICAgICAgIGlmIHNlbGYuX3RjbENvbW1hbmRzIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcyA9IFtdCiAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzLmFwcGVuZChjYm5hbWUpCi0gICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZhcmlhYmxlIiwgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQogICAgICAgICByZXR1cm4gY2JuYW1lCi0gICAgdHJhY2UgPSB0cmFjZV92YXJpYWJsZQotICAgIGRlZiB0cmFjZV92ZGVsZXRlKHNlbGYsIG1vZGUsIGNibmFtZSk6CisKKyAgICBkZWYgdHJhY2VfYWRkKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKKyAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KKworICAgICAgICBNb2RlIGlzIG9uZSBvZiAicmVhZCIsICJ3cml0ZSIsICJ1bnNldCIsIG9yIGEgbGlzdCBvciB0dXBsZSBvZgorICAgICAgICBzdWNoIHN0cmluZ3MuCisgICAgICAgIENhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbiB0aGUgdmFyaWFibGUgaXMKKyAgICAgICAgcmVhZCwgd3JpdHRlbiBvciB1bnNldC4KKworICAgICAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNhbGxiYWNrLgorICAgICAgICAiIiIKKyAgICAgICAgY2JuYW1lID0gc2VsZi5fcmVnaXN0ZXIoY2FsbGJhY2spCisgICAgICAgIHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ2FkZCcsICd2YXJpYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSwgbW9kZSwgKGNibmFtZSwpKQorICAgICAgICByZXR1cm4gY2JuYW1lCisKKyAgICBkZWYgdHJhY2VfcmVtb3ZlKHNlbGYsIG1vZGUsIGNibmFtZSk6CiAgICAgICAgICIiIkRlbGV0ZSB0aGUgdHJhY2UgY2FsbGJhY2sgZm9yIGEgdmFyaWFibGUuCiAKLSAgICAgICAgTU9ERSBpcyBvbmUgb2YgInIiLCAidyIsICJ1IiBmb3IgcmVhZCwgd3JpdGUsIHVuZGVmaW5lLgotICAgICAgICBDQk5BTUUgaXMgdGhlIG5hbWUgb2YgdGhlIGNhbGxiYWNrIHJldHVybmVkIGZyb20gdHJhY2VfdmFyaWFibGUgb3IgdHJhY2UuCisgICAgICAgIE1vZGUgaXMgb25lIG9mICJyZWFkIiwgIndyaXRlIiwgInVuc2V0IiBvciBhIGxpc3Qgb3IgdHVwbGUgb2YKKyAgICAgICAgc3VjaCBzdHJpbmdzLiAgTXVzdCBiZSBzYW1lIGFzIHdlcmUgc3BlY2lmaWVkIGluIHRyYWNlX2FkZCgpLgorICAgICAgICBjYm5hbWUgaXMgdGhlIG5hbWUgb2YgdGhlIGNhbGxiYWNrIHJldHVybmVkIGZyb20gdHJhY2VfYWRkKCkuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2ZGVsZXRlIiwgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQotICAgICAgICBjYm5hbWUgPSBzZWxmLl90ay5zcGxpdGxpc3QoY2JuYW1lKVswXQotICAgICAgICBmb3IgbSwgY2EgaW4gc2VsZi50cmFjZV92aW5mbygpOgorICAgICAgICBzZWxmLl90ay5jYWxsKCd0cmFjZScsICdyZW1vdmUnLCAndmFyaWFibGUnLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKKyAgICAgICAgZm9yIG0sIGNhIGluIHNlbGYudHJhY2VfaW5mbygpOgogICAgICAgICAgICAgaWYgc2VsZi5fdGsuc3BsaXRsaXN0KGNhKVswXSA9PSBjYm5hbWU6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgZWxzZToKQEAgLTMwNSwxMCArMzk0LDY0IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMucmVtb3ZlKGNibmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICBkZWYgdHJhY2VfdmluZm8oc2VsZik6CisKKyAgICBkZWYgdHJhY2VfaW5mbyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGFsbCB0cmFjZSBjYWxsYmFjayBpbmZvcm1hdGlvbi4iIiIKKyAgICAgICAgc3BsaXRsaXN0ID0gc2VsZi5fdGsuc3BsaXRsaXN0CisgICAgICAgIHJldHVybiBbKHNwbGl0bGlzdChrKSwgdikgZm9yIGssIHYgaW4gbWFwKHNwbGl0bGlzdCwKKyAgICAgICAgICAgIHNwbGl0bGlzdChzZWxmLl90ay5jYWxsKCd0cmFjZScsICdpbmZvJywgJ3ZhcmlhYmxlJywgc2VsZi5fbmFtZSkpKV0KKworICAgIGRlZiB0cmFjZV92YXJpYWJsZShzZWxmLCBtb2RlLCBjYWxsYmFjayk6CisgICAgICAgICIiIkRlZmluZSBhIHRyYWNlIGNhbGxiYWNrIGZvciB0aGUgdmFyaWFibGUuCisKKyAgICAgICAgTU9ERSBpcyBvbmUgb2YgInIiLCAidyIsICJ1IiBmb3IgcmVhZCwgd3JpdGUsIHVuZGVmaW5lLgorICAgICAgICBDQUxMQkFDSyBtdXN0IGJlIGEgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIHdoZW4KKyAgICAgICAgdGhlIHZhcmlhYmxlIGlzIHJlYWQsIHdyaXR0ZW4gb3IgdW5kZWZpbmVkLgorCisgICAgICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2suCisKKyAgICAgICAgVGhpcyBkZXByZWNhdGVkIG1ldGhvZCB3cmFwcyBhIGRlcHJlY2F0ZWQgVGNsIG1ldGhvZCB0aGF0IHdpbGwKKyAgICAgICAgbGlrZWx5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gIFVzZSB0cmFjZV9hZGQoKSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgIyBUT0RPOiBBZGQgZGVwcmVjYXRpb24gd2FybmluZworICAgICAgICBjYm5hbWUgPSBzZWxmLl9yZWdpc3RlcihjYWxsYmFjaykKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmFyaWFibGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCisgICAgICAgIHJldHVybiBjYm5hbWUKKworICAgIHRyYWNlID0gdHJhY2VfdmFyaWFibGUKKworICAgIGRlZiB0cmFjZV92ZGVsZXRlKHNlbGYsIG1vZGUsIGNibmFtZSk6CisgICAgICAgICIiIkRlbGV0ZSB0aGUgdHJhY2UgY2FsbGJhY2sgZm9yIGEgdmFyaWFibGUuCisKKyAgICAgICAgTU9ERSBpcyBvbmUgb2YgInIiLCAidyIsICJ1IiBmb3IgcmVhZCwgd3JpdGUsIHVuZGVmaW5lLgorICAgICAgICBDQk5BTUUgaXMgdGhlIG5hbWUgb2YgdGhlIGNhbGxiYWNrIHJldHVybmVkIGZyb20gdHJhY2VfdmFyaWFibGUgb3IgdHJhY2UuCisKKyAgICAgICAgVGhpcyBkZXByZWNhdGVkIG1ldGhvZCB3cmFwcyBhIGRlcHJlY2F0ZWQgVGNsIG1ldGhvZCB0aGF0IHdpbGwKKyAgICAgICAgbGlrZWx5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4gIFVzZSB0cmFjZV9yZW1vdmUoKSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgIyBUT0RPOiBBZGQgZGVwcmVjYXRpb24gd2FybmluZworICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2ZGVsZXRlIiwgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQorICAgICAgICBjYm5hbWUgPSBzZWxmLl90ay5zcGxpdGxpc3QoY2JuYW1lKVswXQorICAgICAgICBmb3IgbSwgY2EgaW4gc2VsZi50cmFjZV9pbmZvKCk6CisgICAgICAgICAgICBpZiBzZWxmLl90ay5zcGxpdGxpc3QoY2EpWzBdID09IGNibmFtZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fdGsuZGVsZXRlY29tbWFuZChjYm5hbWUpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMucmVtb3ZlKGNibmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0cmFjZV92aW5mbyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGFsbCB0cmFjZSBjYWxsYmFjayBpbmZvcm1hdGlvbi4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX2luZm8oKSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgIyBUT0RPOiBBZGQgZGVwcmVjYXRpb24gd2FybmluZwogICAgICAgICByZXR1cm4gW3NlbGYuX3RrLnNwbGl0bGlzdCh4KSBmb3IgeCBpbiBzZWxmLl90ay5zcGxpdGxpc3QoCiAgICAgICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2aW5mbyIsIHNlbGYuX25hbWUpKV0KKwogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICAiIiJDb21wYXJpc29uIGZvciBlcXVhbGl0eSAoPT0pLgogCkBAIC00MzAsNiArNTczLDkgQEAKIAogICAgIEJhc2UgY2xhc3Mgd2hpY2ggZGVmaW5lcyBtZXRob2RzIGNvbW1vbiBmb3IgaW50ZXJpb3Igd2lkZ2V0cy4iIiIKIAorICAgICMgdXNlZCBmb3IgZ2VuZXJhdGluZyBjaGlsZCB3aWRnZXQgbmFtZXMKKyAgICBfbGFzdF9jaGlsZF9pZHMgPSBOb25lCisKICAgICAjIFhYWCBmb250IGNvbW1hbmQ/CiAgICAgX3RjbENvbW1hbmRzID0gTm9uZQogICAgIGRlZiBkZXN0cm95KHNlbGYpOgpAQCAtNDc3LDEyICs2MjMsNiBAQAogICAgICAgICBkaXNhYmxlZEZvcmVncm91bmQsIGluc2VydEJhY2tncm91bmQsIHRyb3VnaENvbG9yLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoKCd0a19zZXRQYWxldHRlJywpCiAgICAgICAgICAgICAgICsgX2ZsYXR0ZW4oYXJncykgKyBfZmxhdHRlbihsaXN0KGt3Lml0ZW1zKCkpKSkKLSAgICBkZWYgdGtfbWVudUJhcihzZWxmLCAqYXJncyk6Ci0gICAgICAgICIiIkRvIG5vdCB1c2UuIE5lZWRlZCBpbiBUayAzLjYgYW5kIGVhcmxpZXIuIiIiCi0gICAgICAgICMgb2Jzb2xldGUgc2luY2UgVGsgNC4wCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCd0a19tZW51QmFyKCkgZG9lcyBub3RoaW5nIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy42JywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICBkZWYgd2FpdF92YXJpYWJsZShzZWxmLCBuYW1lPSdQWV9WQVInKToKICAgICAgICAgIiIiV2FpdCB1bnRpbCB0aGUgdmFyaWFibGUgaXMgbW9kaWZpZWQuCiAKQEAgLTg1NCw4ICs5OTQsNyBAQAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdoZWlnaHQnLCBzZWxmLl93KSkKICAgICBkZWYgd2luZm9faWQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBpZGVudGlmaWVyIElEIGZvciB0aGlzIHdpZGdldC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0aW50KAotICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdpZCcsIHNlbGYuX3cpKQorICAgICAgICByZXR1cm4gaW50KHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaWQnLCBzZWxmLl93KSwgMCkKICAgICBkZWYgd2luZm9faW50ZXJwcyhzZWxmLCBkaXNwbGF5b2Y9MCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiBhbGwgVGNsIGludGVycHJldGVycyBmb3IgdGhpcyBkaXNwbGF5LiIiIgogICAgICAgICBhcmdzID0gKCd3aW5mbycsICdpbnRlcnBzJykgKyBzZWxmLl9kaXNwbGF5b2YoZGlzcGxheW9mKQpAQCAtOTc1LDE4ICsxMTE0LDE2IEBACiAgICAgZGVmIHdpbmZvX3Zpc3VhbGlkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIFggaWRlbnRpZmllciBmb3IgdGhlIHZpc3VhbCBmb3IgdGhpcyB3aWRnZXQuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbGlkJywgc2VsZi5fdykKLSAgICBkZWYgd2luZm9fdmlzdWFsc2F2YWlsYWJsZShzZWxmLCBpbmNsdWRlaWRzPTApOgorICAgIGRlZiB3aW5mb192aXN1YWxzYXZhaWxhYmxlKHNlbGYsIGluY2x1ZGVpZHM9RmFsc2UpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGFsbCB2aXN1YWxzIGF2YWlsYWJsZSBmb3IgdGhlIHNjcmVlbgogICAgICAgICBvZiB0aGlzIHdpZGdldC4KIAogICAgICAgICBFYWNoIGl0ZW0gaW4gdGhlIGxpc3QgY29uc2lzdHMgb2YgYSB2aXN1YWwgbmFtZSAoc2VlIHdpbmZvX3Zpc3VhbCksIGEKLSAgICAgICAgZGVwdGggYW5kIGlmIElOQ0xVREVJRFM9MSBpcyBnaXZlbiBhbHNvIHRoZSBYIGlkZW50aWZpZXIuIiIiCi0gICAgICAgIGRhdGEgPSBzZWxmLnRrLnNwbGl0KAotICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICd2aXN1YWxzYXZhaWxhYmxlJywgc2VsZi5fdywKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVpZHMgYW5kICdpbmNsdWRlaWRzJyBvciBOb25lKSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgotICAgICAgICAgICAgZGF0YSA9IFtzZWxmLnRrLnNwbGl0KGRhdGEpXQotICAgICAgICByZXR1cm4gW3NlbGYuX193aW5mb19wYXJzZWl0ZW0oeCkgZm9yIHggaW4gIGRhdGFdCisgICAgICAgIGRlcHRoIGFuZCBpZiBpbmNsdWRlaWRzIGlzIHRydWUgaXMgZ2l2ZW4gYWxzbyB0aGUgWCBpZGVudGlmaWVyLiIiIgorICAgICAgICBkYXRhID0gc2VsZi50ay5jYWxsKCd3aW5mbycsICd2aXN1YWxzYXZhaWxhYmxlJywgc2VsZi5fdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZWlkcycgaWYgaW5jbHVkZWlkcyBlbHNlIE5vbmUpCisgICAgICAgIGRhdGEgPSBbc2VsZi50ay5zcGxpdGxpc3QoeCkgZm9yIHggaW4gc2VsZi50ay5zcGxpdGxpc3QoZGF0YSldCisgICAgICAgIHJldHVybiBbc2VsZi5fX3dpbmZvX3BhcnNlaXRlbSh4KSBmb3IgeCBpbiBkYXRhXQogICAgIGRlZiBfX3dpbmZvX3BhcnNlaXRlbShzZWxmLCB0KToKICAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24uIiIiCiAgICAgICAgIHJldHVybiB0WzoxXSArIHR1cGxlKG1hcChzZWxmLl9fd2luZm9fZ2V0aW50LCB0WzE6XSkpCkBAIC0xMjg3LDcgKzE0MjQsMTAgQEAKICAgICAgICAgZXhjZXB0IFRjbEVycm9yOiBwYXNzCiAgICAgICAgIGUua2V5c3ltID0gSwogICAgICAgICBlLmtleXN5bV9udW0gPSBnZXRpbnRfZXZlbnQoTikKLSAgICAgICAgZS50eXBlID0gVAorICAgICAgICB0cnk6CisgICAgICAgICAgICBlLnR5cGUgPSBFdmVudFR5cGUoVCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBlLnR5cGUgPSBUCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGUud2lkZ2V0ID0gc2VsZi5fbmFtZXRvd2lkZ2V0KFcpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTE4OTcsOSArMjAzNyw2IEBACiAgICAgICAgIGlmIHRjbF92ZXJzaW9uICE9IF90a2ludGVyLlRDTF9WRVJTSU9OOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ0Y2wuaCB2ZXJzaW9uICglcykgZG9lc24ndCBtYXRjaCBsaWJ0Y2wuYSB2ZXJzaW9uICglcykiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChfdGtpbnRlci5UQ0xfVkVSU0lPTiwgdGNsX3ZlcnNpb24pKQotICAgICAgICBpZiBUa1ZlcnNpb24gPCA0LjA6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRrIDQuMCBvciBoaWdoZXIgaXMgcmVxdWlyZWQ7IGZvdW5kIFRrICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgc3RyKFRrVmVyc2lvbikpCiAgICAgICAgICMgQ3JlYXRlIGFuZCByZWdpc3RlciB0aGUgdGtlcnJvciBhbmQgZXhpdCBjb21tYW5kcwogICAgICAgICAjIFdlIG5lZWQgdG8gaW5saW5lIHBhcnRzIG9mIF9yZWdpc3RlciBoZXJlLCBfIHJlZ2lzdGVyCiAgICAgICAgICMgd291bGQgcmVnaXN0ZXIgZGlmZmVyZW50bHktbmFtZWQgY29tbWFuZHMuCkBAIC0yMTIyLDcgKzIyNTksMTUgQEAKICAgICAgICAgICAgIG5hbWUgPSBjbmZbJ25hbWUnXQogICAgICAgICAgICAgZGVsIGNuZlsnbmFtZSddCiAgICAgICAgIGlmIG5vdCBuYW1lOgotICAgICAgICAgICAgbmFtZSA9IHJlcHIoaWQoc2VsZikpCisgICAgICAgICAgICBuYW1lID0gc2VsZi5fX2NsYXNzX18uX19uYW1lX18ubG93ZXIoKQorICAgICAgICAgICAgaWYgbWFzdGVyLl9sYXN0X2NoaWxkX2lkcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIG1hc3Rlci5fbGFzdF9jaGlsZF9pZHMgPSB7fQorICAgICAgICAgICAgY291bnQgPSBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzLmdldChuYW1lLCAwKSArIDEKKyAgICAgICAgICAgIG1hc3Rlci5fbGFzdF9jaGlsZF9pZHNbbmFtZV0gPSBjb3VudAorICAgICAgICAgICAgaWYgY291bnQgPT0gMToKKyAgICAgICAgICAgICAgICBuYW1lID0gJyElcycgJSAobmFtZSwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnISVzJWQnICUgKG5hbWUsIGNvdW50KQogICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQogICAgICAgICBpZiBtYXN0ZXIuX3c9PScuJzoKICAgICAgICAgICAgIHNlbGYuX3cgPSAnLicgKyBuYW1lCkBAIC0yNzE4LDEyICsyODYzLDYgQEAKICAgICBkZWYgdGtfcG9wdXAoc2VsZiwgeCwgeSwgZW50cnk9IiIpOgogICAgICAgICAiIiJQb3N0IHRoZSBtZW51IGF0IHBvc2l0aW9uIFgsWSB3aXRoIGVudHJ5IEVOVFJZLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoJ3RrX3BvcHVwJywgc2VsZi5fdywgeCwgeSwgZW50cnkpCi0gICAgZGVmIHRrX2JpbmRGb3JUcmF2ZXJzYWwoc2VsZik6Ci0gICAgICAgICMgb2Jzb2xldGUgc2luY2UgVGsgNC4wCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCd0a19iaW5kRm9yVHJhdmVyc2FsKCkgZG9lcyBub3RoaW5nIGFuZCAnCi0gICAgICAgICAgICAgICAgICAgICAgJ3dpbGwgYmUgcmVtb3ZlZCBpbiAzLjYnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIGRlZiBhY3RpdmF0ZShzZWxmLCBpbmRleCk6CiAgICAgICAgICIiIkFjdGl2YXRlIGVudHJ5IGF0IElOREVYLiIiIgogICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2FjdGl2YXRlJywgaW5kZXgpCkBAIC0zMzQ2LDkgKzM0ODUsNiBAQAogICAgICAgICBpZiBub3QgbmFtZToKICAgICAgICAgICAgIEltYWdlLl9sYXN0X2lkICs9IDEKICAgICAgICAgICAgIG5hbWUgPSAicHlpbWFnZSVyIiAlIChJbWFnZS5fbGFzdF9pZCwpICMgdGsgaXRzZWxmIHdvdWxkIHVzZSBpbWFnZTx4PgotICAgICAgICAgICAgIyBUaGUgZm9sbG93aW5nIGlzIG5lZWRlZCBmb3Igc3lzdGVtcyB3aGVyZSBpZCh4KQotICAgICAgICAgICAgIyBjYW4gcmV0dXJuIGEgbmVnYXRpdmUgbnVtYmVyLCBzdWNoIGFzIExpbnV4L202OGs6Ci0gICAgICAgICAgICBpZiBuYW1lWzBdID09ICctJzogbmFtZSA9ICdfJyArIG5hbWVbMTpdCiAgICAgICAgIGlmIGt3IGFuZCBjbmY6IGNuZiA9IF9jbmZtZXJnZSgoY25mLCBrdykpCiAgICAgICAgIGVsaWYga3c6IGNuZiA9IGt3CiAgICAgICAgIG9wdGlvbnMgPSAoKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5IGIvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5CmluZGV4IGQyNjg4ZGIuLjFlNzVjYWUgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weQorKysgYi9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkKQEAgLTE1LDExICsxNSw2IEBACiAgICAgY29tbWFuZCAgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUsICoqb3B0aW9ucyk6Ci0KLSAgICAgICAgIyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgcGxhY2VkIG9uIHRoZSBtb2R1bGUgbGV2ZWwgaW5zdGVhZD8KLSAgICAgICAgaWYgVGtWZXJzaW9uIDwgNC4yOgotICAgICAgICAgICAgcmFpc2UgVGNsRXJyb3IoInRoaXMgbW9kdWxlIHJlcXVpcmVzIFRrIDQuMiBvciBuZXdlciIpCi0KICAgICAgICAgc2VsZi5tYXN0ZXIgID0gbWFzdGVyCiAgICAgICAgIHNlbGYub3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgaWYgbm90IG1hc3RlciBhbmQgb3B0aW9ucy5nZXQoJ3BhcmVudCcpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvZGlhbG9nLnB5IGIvTGliL3RraW50ZXIvZGlhbG9nLnB5CmluZGV4IGJlMDg1YWIuLmY2MWM1ZjcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL2RpYWxvZy5weQorKysgYi9MaWIvdGtpbnRlci9kaWFsb2cucHkKQEAgLTMsMTAgKzMsNyBAQAogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBmcm9tIHRraW50ZXIgaW1wb3J0IF9jbmZtZXJnZQogCi1pZiBUa1ZlcnNpb24gPD0gMy42OgotICAgIERJQUxPR19JQ09OID0gJ3dhcm5pbmcnCi1lbHNlOgotICAgIERJQUxPR19JQ09OID0gJ3F1ZXN0aGVhZCcKK0RJQUxPR19JQ09OID0gJ3F1ZXN0aGVhZCcKIAogCiBjbGFzcyBEaWFsb2coV2lkZ2V0KToKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weSBiL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQppbmRleCBkYmU1ZTg4Li4zM2RjNTRhIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CkBAIC03LDggKzcsNiBAQAogIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdGVzdC5zdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQppbmRleCA4NWVlMmM3Li45ZGMxZTM3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CkBAIC0xMiw2ICsxMiwxNCBAQAogICAgICAgICBmID0gdGtpbnRlci5GcmFtZSh0LCBuYW1lPSdjaGlsZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJzx0a2ludGVyLkZyYW1lIG9iamVjdCAudG9wLmNoaWxkPicpCiAKKyAgICBkZWYgdGVzdF9nZW5lcmF0ZWRfbmFtZXMoc2VsZik6CisgICAgICAgIHQgPSB0a2ludGVyLlRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgZiA9IHRraW50ZXIuRnJhbWUodCkKKyAgICAgICAgZjIgPSB0a2ludGVyLkZyYW1lKHQpCisgICAgICAgIGIgPSB0a2ludGVyLkJ1dHRvbihmMikKKyAgICAgICAgZm9yIG5hbWUgaW4gc3RyKGIpLnNwbGl0KCcuJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5hbWUuaXNpZGVudGlmaWVyKCksIG1zZz1yZXByKG5hbWUpKQorCiAgICAgZGVmIHRlc3RfdGtfc2V0UGFsZXR0ZShzZWxmKToKICAgICAgICAgcm9vdCA9IHNlbGYucm9vdAogICAgICAgICByb290LnRrX3NldFBhbGV0dGUoJ2JsYWNrJykKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKaW5kZXggZDhiYTljZS4uMmViMWUxMiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkKQEAgLTg3LDcgKzg3LDggQEAKICAgICAgICAgdi5zZXQoInZhbHVlIikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHYuc2lkZV9lZmZlY3QpCiAKLSAgICBkZWYgdGVzdF90cmFjZShzZWxmKToKKyAgICBkZWYgdGVzdF90cmFjZV9vbGQoc2VsZik6CisgICAgICAgICMgT2xkIGludGVyZmFjZQogICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290KQogICAgICAgICB2bmFtZSA9IHN0cih2KQogICAgICAgICB0cmFjZSA9IFtdCkBAIC0xMzYsNiArMTM3LDU1IEBACiAgICAgICAgIGdjLmNvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCd3cml0ZScsIHZuYW1lLCAnJywgJ3UnKV0pCiAKKyAgICBkZWYgdGVzdF90cmFjZShzZWxmKToKKyAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCkKKyAgICAgICAgdm5hbWUgPSBzdHIodikKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgcmVhZF90cmFjZXIoKmFyZ3MpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCgncmVhZCcsKSArIGFyZ3MpCisgICAgICAgIGRlZiB3cml0ZV90cmFjZXIoKmFyZ3MpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCgnd3JpdGUnLCkgKyBhcmdzKQorICAgICAgICB0cjEgPSB2LnRyYWNlX2FkZCgncmVhZCcsIHJlYWRfdHJhY2VyKQorICAgICAgICB0cjIgPSB2LnRyYWNlX2FkZChbJ3dyaXRlJywgJ3Vuc2V0J10sIHdyaXRlX3RyYWNlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQodi50cmFjZV9pbmZvKCkpLCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgncmVhZCcsKSwgdHIxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCd3cml0ZScsICd1bnNldCcpLCB0cjIpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgW10pCisKKyAgICAgICAgdi5zZXQoJ3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCd3cml0ZScsIHZuYW1lLCAnJywgJ3dyaXRlJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCdyZWFkJywgdm5hbWUsICcnLCAncmVhZCcpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGluZm8gPSBzb3J0ZWQodi50cmFjZV9pbmZvKCkpCisgICAgICAgIHYudHJhY2VfcmVtb3ZlKCd3cml0ZScsIHRyMSkgICMgV3JvbmcgbW9kZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh2LnRyYWNlX2luZm8oKSksIGluZm8pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVGNsRXJyb3IpOgorICAgICAgICAgICAgdi50cmFjZV9yZW1vdmUoJ3JlYWQnLCAnc3BhbScpICAjIFdyb25nIGNvbW1hbmQgbmFtZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh2LnRyYWNlX2luZm8oKSksIGluZm8pCisgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygncmVhZCcsIHZuYW1lLCAnJywgJ3JlYWQnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICB2LnRyYWNlX3JlbW92ZSgncmVhZCcsIHRyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnRyYWNlX2luZm8oKSwgWygoJ3dyaXRlJywgJ3Vuc2V0JyksIHRyMildKQorICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFtdKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVsIHdyaXRlX3RyYWNlcgorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgdi5zZXQoJ2VnZ3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCd3cml0ZScsIHZuYW1lLCAnJywgJ3dyaXRlJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVsIHYKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAndW5zZXQnKV0pCisKIAogY2xhc3MgVGVzdFN0cmluZ1ZhcihUZXN0QmFzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQppbmRleCBjOTI0ZDU1Li44MWI1MmVhIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CkBAIC05MSw5ICs5MSwxMCBAQAogICAgICAgICB3aWRnZXQgPSBzZWxmLmNyZWF0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lkZ2V0Wyd1c2UnXSwgJycpCiAgICAgICAgIHBhcmVudCA9IHNlbGYuY3JlYXRlKGNvbnRhaW5lcj1UcnVlKQotICAgICAgICB3aWQgPSBwYXJlbnQud2luZm9faWQoKQotICAgICAgICB3aWRnZXQyID0gc2VsZi5jcmVhdGUodXNlPXdpZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQod2lkZ2V0MlsndXNlJ10pLCB3aWQpCisgICAgICAgIHdpZCA9IGhleChwYXJlbnQud2luZm9faWQoKSkKKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qod2lkPXdpZCk6CisgICAgICAgICAgICB3aWRnZXQyID0gc2VsZi5jcmVhdGUodXNlPXdpZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lkZ2V0MlsndXNlJ10sIHdpZCkKIAogCiBAYWRkX3N0YW5kYXJkX29wdGlvbnMoU3RhbmRhcmRPcHRpb25zVGVzdHMpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weQppbmRleCBjNjhhNjUwLi5hMWI3Y2RmIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkKQEAgLTEsNiArMSw1IEBACiAjIC0qLSBlbmNvZGluZzogdXRmLTggLSotCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0a2ludGVyCiBmcm9tIHRraW50ZXIgaW1wb3J0IHR0awogCiBjbGFzcyBNb2NrVGtBcHA6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3Rfd2lkZ2V0cy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5CmluZGV4IDhiZDIyZDAuLjI2NzY2YTggMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5CisrKyBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5CkBAIC0xNDg3LDYgKzE0ODcsNyBAQAogCiAKICAgICBkZWYgdGVzdF9zZWxlY3Rpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50di5zZWxlY3Rpb24sICdzcGFtJykKICAgICAgICAgIyBpdGVtICdub25lJyBkb2Vzbid0IGV4aXN0CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IsIHNlbGYudHYuc2VsZWN0aW9uX3NldCwgJ25vbmUnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0a2ludGVyLlRjbEVycm9yLCBzZWxmLnR2LnNlbGVjdGlvbl9hZGQsICdub25lJykKQEAgLTE1MDAsMjUgKzE1MDEsMzEgQEAKICAgICAgICAgYzMgPSBzZWxmLnR2Lmluc2VydChpdGVtMSwgJ2VuZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKCkpCiAKLSAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoYzEsIGl0ZW0yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoYzIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMyLCkpCiAKLSAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoYzEsIGl0ZW0yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgYzIsIGl0ZW0yKSkKICAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKGl0ZW0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGMyLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgYzIsIGl0ZW0yKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9yZW1vdmUoKGl0ZW0xLCBjMykpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZShpdGVtMSwgYzMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBjMiwgaXRlbTIpKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9yZW1vdmUoYzIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCiAKLSAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKChjMSwgYzMpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoYzEsIGMzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywgaXRlbTIpKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCkpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCkpCiAKICAgICAgICAgc2VsZi50di5pbnNlcnQoJycsICdlbmQnLCBpZD0nd2l0aCBzcGFjZXMnKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoJ3dpdGggc3BhY2VzJykKQEAgLTE1MzYsNiArMTU0Myw0MCBAQAogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoYidieXRlc1x4ZTJceDgyXHhhYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKCdieXRlc1x4ZTJceDgyXHhhYycsKSkKIAorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksICgpKQorCisgICAgICAgICMgT2xkIGludGVyZmFjZQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZCgoYzEsIGl0ZW0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZSgoaXRlbTEsIGMzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKChjMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywgaXRlbTIpKQorCisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsIDcpOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICdEZXByZWNhdGVkIEFQSSBvZiBUcmVldmlldy5zZWxlY3Rpb24oKSBzaG91bGQgYmUgcmVtb3ZlZCcpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ3NldCcsIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uKCdhZGQnLCAoYzEsIGl0ZW0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ3JlbW92ZScsIChpdGVtMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uKCd0b2dnbGUnLCAoYzEsIGMzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxlY3Rpb24gPSBzZWxmLnR2LnNlbGVjdGlvbihOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGVjdGlvbiwgKGMzLCBpdGVtMikpCiAKICAgICBkZWYgdGVzdF9zZXQoc2VsZik6CiAgICAgICAgIHNlbGYudHZbJ2NvbHVtbnMnXSA9IFsnQScsICdCJ10KZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3RpeC5weSBiL0xpYi90a2ludGVyL3RpeC5weQppbmRleCAyZWQ2YTc3Li5lN2NiMTBhIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90aXgucHkKKysrIGIvTGliL3RraW50ZXIvdGl4LnB5CkBAIC0zMSwxMCArMzEsNiBAQAogZnJvbSB0a2ludGVyIGltcG9ydCAqCiBmcm9tIHRraW50ZXIgaW1wb3J0IF9jbmZtZXJnZQogCi0jIFdBUk5JTkcgLSBUa1ZlcnNpb24gaXMgYSBsaW1pdGVkIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXIKLWlmIFRrVmVyc2lvbiA8IDMuOTk5OgotICAgIHJhaXNlIEltcG9ydEVycm9yKCJUaGlzIHZlcnNpb24gb2YgVGl4LnB5IHJlcXVpcmVzIFRrIDQuMCBvciBoaWdoZXIiKQotCiBpbXBvcnQgX3RraW50ZXIgIyBJZiB0aGlzIGZhaWxzIHlvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsKIAogIyBTb21lIG1vcmUgY29uc3RhbnRzIChmb3IgY29uc2lzdGVuY3kgd2l0aCBUa2ludGVyKQpAQCAtNDc2LDE2ICs0NzIsMTcgQEAKICAgICAiIiJEaXNwbGF5U3R5bGUgLSBoYW5kbGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHNoYXJlZCBieQogICAgIChtdWx0aXBsZSkgRGlzcGxheSBJdGVtcyIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW10eXBlLCBjbmY9e30sICoqa3cpOgotICAgICAgICBpZiAncmVmd2luZG93JyBpbiBrdzoKLSAgICAgICAgICAgIG1hc3RlciA9IGt3WydyZWZ3aW5kb3cnXQotICAgICAgICBlbGlmICdyZWZ3aW5kb3cnIGluIGNuZjoKLSAgICAgICAgICAgIG1hc3RlciA9IGNuZlsncmVmd2luZG93J10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1hc3RlciA9IHRraW50ZXIuX2RlZmF1bHRfcm9vdAotICAgICAgICAgICAgaWYgbm90IG1hc3RlcjoKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRvbyBlYXJseSB0byBjcmVhdGUgZGlzcGxheSBzdHlsZTogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gcm9vdCB3aW5kb3ciKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpdGVtdHlwZSwgY25mPXt9LCAqLCBtYXN0ZXI9Tm9uZSwgKiprdyk6CisgICAgICAgIGlmIG5vdCBtYXN0ZXI6CisgICAgICAgICAgICBpZiAncmVmd2luZG93JyBpbiBrdzoKKyAgICAgICAgICAgICAgICBtYXN0ZXIgPSBrd1sncmVmd2luZG93J10KKyAgICAgICAgICAgIGVsaWYgJ3JlZndpbmRvdycgaW4gY25mOgorICAgICAgICAgICAgICAgIG1hc3RlciA9IGNuZlsncmVmd2luZG93J10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWFzdGVyID0gdGtpbnRlci5fZGVmYXVsdF9yb290CisgICAgICAgICAgICAgICAgaWYgbm90IG1hc3RlcjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUb28gZWFybHkgdG8gY3JlYXRlIGRpc3BsYXkgc3R5bGU6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyByb290IHdpbmRvdyIpCiAgICAgICAgIHNlbGYudGsgPSBtYXN0ZXIudGsKICAgICAgICAgc2VsZi5zdHlsZW5hbWUgPSBzZWxmLnRrLmNhbGwoJ3RpeERpc3BsYXlTdHlsZScsIGl0ZW10eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLl9vcHRpb25zKGNuZixrdykgKQpAQCAtMTEyMCw3ICsxMTE3LDcgQEAKIAogICAgIGRlZiBwYWdlcyhzZWxmKToKICAgICAgICAgIyBDYW4ndCBjYWxsIHN1YndpZGdldHNfYWxsIGRpcmVjdGx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCAubmJmcmFtZQotICAgICAgICBuYW1lcyA9IHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQorICAgICAgICBuYW1lcyA9IHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGFnZXMnKSkKICAgICAgICAgcmV0ID0gW10KICAgICAgICAgZm9yIHggaW4gbmFtZXM6CiAgICAgICAgICAgICByZXQuYXBwZW5kKHNlbGYuc3Vid2lkZ2V0KHgpKQpAQCAtMTE2Niw3ICsxMTYzLDcgQEAKIAogICAgIGRlZiBwYWdlcyhzZWxmKToKICAgICAgICAgIyBDYW4ndCBjYWxsIHN1YndpZGdldHNfYWxsIGRpcmVjdGx5IGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCAubmJmcmFtZQotICAgICAgICBuYW1lcyA9IHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQorICAgICAgICBuYW1lcyA9IHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAncGFnZXMnKSkKICAgICAgICAgcmV0ID0gW10KICAgICAgICAgZm9yIHggaW4gbmFtZXM6CiAgICAgICAgICAgICByZXQuYXBwZW5kKHNlbGYuc3Vid2lkZ2V0KHgpKQpAQCAtMTU4OSw4ICsxNTg2LDcgQEAKICAgICAgICAgJycnUmV0dXJucyBhIGxpc3Qgb2YgaXRlbXMgd2hvc2Ugc3RhdHVzIG1hdGNoZXMgc3RhdHVzLiBJZiBzdGF0dXMgaXMKICAgICAgbm90IHNwZWNpZmllZCwgdGhlIGxpc3Qgb2YgaXRlbXMgaW4gdGhlICJvbiIgc3RhdHVzIHdpbGwgYmUgcmV0dXJuZWQuCiAgICAgIE1vZGUgY2FuIGJlIG9uLCBvZmYsIGRlZmF1bHQnJycKLSAgICAgICAgYyA9IHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKHNlbGYuX3csICdnZXRzZWxlY3Rpb24nLCBtb2RlKSkKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KGMpCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldHNlbGVjdGlvbicsIG1vZGUpKQogCiAgICAgZGVmIGdldHN0YXR1cyhzZWxmLCBlbnRyeXBhdGgpOgogICAgICAgICAnJydSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBlbnRyeVBhdGguJycnCkBAIC0xOTExLDcgKzE5MDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgb3IgYSByZWFsIG51bWJlciBmb2xsb3dpbmcgYnkgdGhlIHdvcmQgY2hhcnMKICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDMuNGNoYXJzKSB0aGF0IHNldHMgdGhlIHdpZHRoIG9mIHRoZSBjb2x1bW4gdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKHNlbGYuX3csICdzaXplJywgJ2NvbHVtbicsIGluZGV4LAorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdzaXplJywgJ2NvbHVtbicsIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc2VsZi5fb3B0aW9ucyh7fSwga3cpKSkKIAogICAgIGRlZiBzaXplX3JvdyhzZWxmLCBpbmRleCwgKiprdyk6CkBAIC0xOTM2LDcgKzE5MzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgb3IgYSByZWFsIG51bWJlciBmb2xsb3dpbmcgYnkgdGhlIHdvcmQgY2hhcnMKICAgICAgICAgICAgICAgICAgICAgIChlLmcuIDMuNGNoYXJzKSB0aGF0IHNldHMgdGhlIGhlaWdodCBvZiB0aGUgcm93IHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0KHNlbGYudGsuY2FsbCgKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgICAgICAgICAgc2VsZiwgJ3NpemUnLCAncm93JywgaW5kZXgsICpzZWxmLl9vcHRpb25zKHt9LCBrdykpKQogCiAgICAgZGVmIHVuc2V0KHNlbGYsIHgsIHkpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdHRrLnB5IGIvTGliL3RraW50ZXIvdHRrLnB5CmluZGV4IGY0YTZkOGMuLmM0NzRlNjAgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3R0ay5weQorKysgYi9MaWIvdGtpbnRlci90dGsucHkKQEAgLTI4LDYgKzI4LDggQEAKIGltcG9ydCB0a2ludGVyCiBmcm9tIHRraW50ZXIgaW1wb3J0IF9mbGF0dGVuLCBfam9pbiwgX3N0cmluZ2lmeSwgX3NwbGl0ZGljdAogCitfc2VudGluZWwgPSBvYmplY3QoKQorCiAjIFZlcmlmeSBpZiBUayBpcyBuZXcgZW5vdWdoIHRvIG5vdCBuZWVkIHRoZSBUaWxlIHBhY2thZ2UKIF9SRVFVSVJFX1RJTEUgPSBUcnVlIGlmIHRraW50ZXIuVGtWZXJzaW9uIDwgOC41IGVsc2UgRmFsc2UKIApAQCAtMzgxLDcgKzM4Myw5IEBACiAgICAgICAgIGEgc2VxdWVuY2UgaWRlbnRpZnlpbmcgdGhlIHZhbHVlIGZvciB0aGF0IG9wdGlvbi4iIiIKICAgICAgICAgaWYgcXVlcnlfb3B0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAga3dbcXVlcnlfb3B0XSA9IE5vbmUKLSAgICAgICAgcmV0dXJuIF92YWxfb3JfZGljdChzZWxmLnRrLCBrdywgc2VsZi5fbmFtZSwgImNvbmZpZ3VyZSIsIHN0eWxlKQorICAgICAgICByZXN1bHQgPSBfdmFsX29yX2RpY3Qoc2VsZi50aywga3csIHNlbGYuX25hbWUsICJjb25maWd1cmUiLCBzdHlsZSkKKyAgICAgICAgaWYgcmVzdWx0IG9yIHF1ZXJ5X29wdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAogCiAgICAgZGVmIG1hcChzZWxmLCBzdHlsZSwgcXVlcnlfb3B0PU5vbmUsICoqa3cpOgpAQCAtNDY2LDEyICs0NzAsMTQgQEAKIAogICAgIGRlZiBlbGVtZW50X25hbWVzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBsaXN0IG9mIGVsZW1lbnRzIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgdGhlbWUuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAibmFtZXMiKSkKKyAgICAgICAgcmV0dXJuIHR1cGxlKG4ubHN0cmlwKCctJykgZm9yIG4gaW4gc2VsZi50ay5zcGxpdGxpc3QoCisgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAibmFtZXMiKSkpCiAKIAogICAgIGRlZiBlbGVtZW50X29wdGlvbnMoc2VsZiwgZWxlbWVudG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgZWxlbWVudG5hbWUncyBvcHRpb25zLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX25hbWUsICJlbGVtZW50IiwgIm9wdGlvbnMiLCBlbGVtZW50bmFtZSkpCisgICAgICAgIHJldHVybiB0dXBsZShvLmxzdHJpcCgnLScpIGZvciBvIGluIHNlbGYudGsuc3BsaXRsaXN0KAorICAgICAgICAgICAgc2VsZi50ay5jYWxsKHNlbGYuX25hbWUsICJlbGVtZW50IiwgIm9wdGlvbnMiLCBlbGVtZW50bmFtZSkpKQogCiAKICAgICBkZWYgdGhlbWVfY3JlYXRlKHNlbGYsIHRoZW1lbmFtZSwgcGFyZW50PU5vbmUsIHNldHRpbmdzPU5vbmUpOgpAQCAtMTM5MCwzMSArMTM5Niw1MyBAQAogICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgInNlZSIsIGl0ZW0pCiAKIAotICAgIGRlZiBzZWxlY3Rpb24oc2VsZiwgc2Vsb3A9Tm9uZSwgaXRlbXM9Tm9uZSk6Ci0gICAgICAgICIiIklmIHNlbG9wIGlzIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgc2VsZWN0ZWQgaXRlbXMuIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoaXRlbXMsIChzdHIsIGJ5dGVzKSk6Ci0gICAgICAgICAgICBpdGVtcyA9IChpdGVtcywpCisgICAgZGVmIHNlbGVjdGlvbihzZWxmLCBzZWxvcD1fc2VudGluZWwsIGl0ZW1zPU5vbmUpOgorICAgICAgICAiIiJSZXR1cm5zIHRoZSB0dXBsZSBvZiBzZWxlY3RlZCBpdGVtcy4iIiIKKyAgICAgICAgaWYgc2Vsb3AgaXMgX3NlbnRpbmVsOgorICAgICAgICAgICAgc2Vsb3AgPSBOb25lCisgICAgICAgIGVsaWYgc2Vsb3AgaXMgTm9uZToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAiVGhlIHNlbG9wPU5vbmUgYXJndW1lbnQgb2Ygc2VsZWN0aW9uKCkgaXMgZGVwcmVjYXRlZCAiCisgICAgICAgICAgICAgICAgImFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNyIsCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQorICAgICAgICBlbGlmIHNlbG9wIGluICgnc2V0JywgJ2FkZCcsICdyZW1vdmUnLCAndG9nZ2xlJyk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgIlRoZSBzZWxvcCBhcmd1bWVudCBvZiBzZWxlY3Rpb24oKSBpcyBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43LCAiCisgICAgICAgICAgICAgICAgInVzZSBzZWxlY3Rpb25fJXMoKSBpbnN0ZWFkIiAlIChzZWxvcCwpLAorICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignVW5zdXBwb3J0ZWQgb3BlcmF0aW9uJykKICAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VsZWN0aW9uIiwgc2Vsb3AsIGl0ZW1zKSkKIAogCi0gICAgZGVmIHNlbGVjdGlvbl9zZXQoc2VsZiwgaXRlbXMpOgotICAgICAgICAiIiJpdGVtcyBiZWNvbWVzIHRoZSBuZXcgc2VsZWN0aW9uLiIiIgotICAgICAgICBzZWxmLnNlbGVjdGlvbigic2V0IiwgaXRlbXMpCisgICAgZGVmIF9zZWxlY3Rpb24oc2VsZiwgc2Vsb3AsIGl0ZW1zKToKKyAgICAgICAgaWYgbGVuKGl0ZW1zKSA9PSAxIGFuZCBpc2luc3RhbmNlKGl0ZW1zWzBdLCAodHVwbGUsIGxpc3QpKToKKyAgICAgICAgICAgIGl0ZW1zID0gaXRlbXNbMF0KKworICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgInNlbGVjdGlvbiIsIHNlbG9wLCBpdGVtcykKIAogCi0gICAgZGVmIHNlbGVjdGlvbl9hZGQoc2VsZiwgaXRlbXMpOgotICAgICAgICAiIiJBZGQgaXRlbXMgdG8gdGhlIHNlbGVjdGlvbi4iIiIKLSAgICAgICAgc2VsZi5zZWxlY3Rpb24oImFkZCIsIGl0ZW1zKQorICAgIGRlZiBzZWxlY3Rpb25fc2V0KHNlbGYsICppdGVtcyk6CisgICAgICAgICIiIlRoZSBzcGVjaWZpZWQgaXRlbXMgYmVjb21lcyB0aGUgbmV3IHNlbGVjdGlvbi4iIiIKKyAgICAgICAgc2VsZi5fc2VsZWN0aW9uKCJzZXQiLCBpdGVtcykKIAogCi0gICAgZGVmIHNlbGVjdGlvbl9yZW1vdmUoc2VsZiwgaXRlbXMpOgotICAgICAgICAiIiJSZW1vdmUgaXRlbXMgZnJvbSB0aGUgc2VsZWN0aW9uLiIiIgotICAgICAgICBzZWxmLnNlbGVjdGlvbigicmVtb3ZlIiwgaXRlbXMpCisgICAgZGVmIHNlbGVjdGlvbl9hZGQoc2VsZiwgKml0ZW1zKToKKyAgICAgICAgIiIiQWRkIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGl0ZW1zIHRvIHRoZSBzZWxlY3Rpb24uIiIiCisgICAgICAgIHNlbGYuX3NlbGVjdGlvbigiYWRkIiwgaXRlbXMpCiAKIAotICAgIGRlZiBzZWxlY3Rpb25fdG9nZ2xlKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIiIiVG9nZ2xlIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgZWFjaCBpdGVtIGluIGl0ZW1zLiIiIgotICAgICAgICBzZWxmLnNlbGVjdGlvbigidG9nZ2xlIiwgaXRlbXMpCisgICAgZGVmIHNlbGVjdGlvbl9yZW1vdmUoc2VsZiwgKml0ZW1zKToKKyAgICAgICAgIiIiUmVtb3ZlIGFsbCBvZiB0aGUgc3BlY2lmaWVkIGl0ZW1zIGZyb20gdGhlIHNlbGVjdGlvbi4iIiIKKyAgICAgICAgc2VsZi5fc2VsZWN0aW9uKCJyZW1vdmUiLCBpdGVtcykKKworCisgICAgZGVmIHNlbGVjdGlvbl90b2dnbGUoc2VsZiwgKml0ZW1zKToKKyAgICAgICAgIiIiVG9nZ2xlIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgZWFjaCBzcGVjaWZpZWQgaXRlbS4iIiIKKyAgICAgICAgc2VsZi5fc2VsZWN0aW9uKCJ0b2dnbGUiLCBpdGVtcykKIAogCiAgICAgZGVmIHNldChzZWxmLCBpdGVtLCBjb2x1bW49Tm9uZSwgdmFsdWU9Tm9uZSk6CmRpZmYgLS1naXQgYS9MaWIvdG9rZW5pemUucHkgYi9MaWIvdG9rZW5pemUucHkKaW5kZXggYjFkMGM4My4uODI1YWE5MCAxMDA2NDQKLS0tIGEvTGliL3Rva2VuaXplLnB5CisrKyBiL0xpYi90b2tlbml6ZS5weQpAQCAtMjksNiArMjksNyBAQAogaW1wb3J0IGNvbGxlY3Rpb25zCiBmcm9tIGlvIGltcG9ydCBUZXh0SU9XcmFwcGVyCiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4KK2ltcG9ydCBpdGVydG9vbHMgYXMgX2l0ZXJ0b29scwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBmcm9tIHRva2VuIGltcG9ydCAqCkBAIC0xMTksMTkgKzEyMCw0MSBAQAogSWdub3JlID0gV2hpdGVzcGFjZSArIGFueShyJ1xcXHI/XG4nICsgV2hpdGVzcGFjZSkgKyBtYXliZShDb21tZW50KQogTmFtZSA9IHInXHcrJwogCi1IZXhudW1iZXIgPSByJzBbeFhdWzAtOWEtZkEtRl0rJwotQmlubnVtYmVyID0gcicwW2JCXVswMV0rJwotT2N0bnVtYmVyID0gcicwW29PXVswLTddKycKLURlY251bWJlciA9IHInKD86MCt8WzEtOV1bMC05XSopJworSGV4bnVtYmVyID0gcicwW3hYXSg/Ol8/WzAtOWEtZkEtRl0pKycKK0Jpbm51bWJlciA9IHInMFtiQl0oPzpfP1swMV0pKycKK09jdG51bWJlciA9IHInMFtvT10oPzpfP1swLTddKSsnCitEZWNudW1iZXIgPSByJyg/OjAoPzpfPzApKnxbMS05XSg/Ol8/WzAtOV0pKiknCiBJbnRudW1iZXIgPSBncm91cChIZXhudW1iZXIsIEJpbm51bWJlciwgT2N0bnVtYmVyLCBEZWNudW1iZXIpCi1FeHBvbmVudCA9IHInW2VFXVstK10/WzAtOV0rJwotUG9pbnRmbG9hdCA9IGdyb3VwKHInWzAtOV0rXC5bMC05XSonLCByJ1wuWzAtOV0rJykgKyBtYXliZShFeHBvbmVudCkKLUV4cGZsb2F0ID0gcidbMC05XSsnICsgRXhwb25lbnQKK0V4cG9uZW50ID0gcidbZUVdWy0rXT9bMC05XSg/Ol8/WzAtOV0pKicKK1BvaW50ZmxvYXQgPSBncm91cChyJ1swLTldKD86Xz9bMC05XSkqXC4oPzpbMC05XSg/Ol8/WzAtOV0pKik/JywKKyAgICAgICAgICAgICAgICAgICByJ1wuWzAtOV0oPzpfP1swLTldKSonKSArIG1heWJlKEV4cG9uZW50KQorRXhwZmxvYXQgPSByJ1swLTldKD86Xz9bMC05XSkqJyArIEV4cG9uZW50CiBGbG9hdG51bWJlciA9IGdyb3VwKFBvaW50ZmxvYXQsIEV4cGZsb2F0KQotSW1hZ251bWJlciA9IGdyb3VwKHInWzAtOV0rW2pKXScsIEZsb2F0bnVtYmVyICsgcidbakpdJykKK0ltYWdudW1iZXIgPSBncm91cChyJ1swLTldKD86Xz9bMC05XSkqW2pKXScsIEZsb2F0bnVtYmVyICsgcidbakpdJykKIE51bWJlciA9IGdyb3VwKEltYWdudW1iZXIsIEZsb2F0bnVtYmVyLCBJbnRudW1iZXIpCiAKLVN0cmluZ1ByZWZpeCA9IHInKD86W2JCXVtyUl0/fFtyUl1bYkJdP3xbdVVdKT8nCisjIFJldHVybiB0aGUgZW1wdHkgc3RyaW5nLCBwbHVzIGFsbCBvZiB0aGUgdmFsaWQgc3RyaW5nIHByZWZpeGVzLgorZGVmIF9hbGxfc3RyaW5nX3ByZWZpeGVzKCk6CisgICAgIyBUaGUgdmFsaWQgc3RyaW5nIHByZWZpeGVzLiBPbmx5IGNvbnRhaW4gdGhlIGxvd2VyIGNhc2UgdmVyc2lvbnMsCisgICAgIyAgYW5kIGRvbid0IGNvbnRhaW4gYW55IHBlcm11YXRpb25zIChpbmNsdWRlICdmcicsIGJ1dCBub3QKKyAgICAjICAncmYnKS4gVGhlIHZhcmlvdXMgcGVybXV0YXRpb25zIHdpbGwgYmUgZ2VuZXJhdGVkLgorICAgIF92YWxpZF9zdHJpbmdfcHJlZml4ZXMgPSBbJ2InLCAncicsICd1JywgJ2YnLCAnYnInLCAnZnInXQorICAgICMgaWYgd2UgYWRkIGJpbmFyeSBmLXN0cmluZ3MsIGFkZDogWydmYicsICdmYnInXQorICAgIHJlc3VsdCA9IHNldChbJyddKQorICAgIGZvciBwcmVmaXggaW4gX3ZhbGlkX3N0cmluZ19wcmVmaXhlczoKKyAgICAgICAgZm9yIHQgaW4gX2l0ZXJ0b29scy5wZXJtdXRhdGlvbnMocHJlZml4KToKKyAgICAgICAgICAgICMgY3JlYXRlIGEgbGlzdCB3aXRoIHVwcGVyIGFuZCBsb3dlciB2ZXJzaW9ucyBvZiBlYWNoCisgICAgICAgICAgICAjICBjaGFyYWN0ZXIKKyAgICAgICAgICAgIGZvciB1IGluIF9pdGVydG9vbHMucHJvZHVjdCgqWyhjLCBjLnVwcGVyKCkpIGZvciBjIGluIHRdKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYWRkKCcnLmpvaW4odSkpCisgICAgcmV0dXJuIHJlc3VsdAorCitkZWYgX2NvbXBpbGUoZXhwcik6CisgICAgcmV0dXJuIHJlLmNvbXBpbGUoZXhwciwgcmUuVU5JQ09ERSkKKworIyBOb3RlIHRoYXQgc2luY2UgX2FsbF9zdHJpbmdfcHJlZml4ZXMgaW5jbHVkZXMgdGhlIGVtcHR5IHN0cmluZywKKyMgIFN0cmluZ1ByZWZpeCBjYW4gYmUgdGhlIGVtcHR5IHN0cmluZyAobWFraW5nIGl0IG9wdGlvbmFsKS4KK1N0cmluZ1ByZWZpeCA9IGdyb3VwKCpfYWxsX3N0cmluZ19wcmVmaXhlcygpKQogCiAjIFRhaWwgZW5kIG9mICcgc3RyaW5nLgogU2luZ2xlID0gciJbXidcXF0qKD86XFwuW14nXFxdKikqJyIKQEAgLTE2OSw1MCArMTkyLDI1IEBACiBQc2V1ZG9FeHRyYXMgPSBncm91cChyJ1xcXHI/XG58XFonLCBDb21tZW50LCBUcmlwbGUpCiBQc2V1ZG9Ub2tlbiA9IFdoaXRlc3BhY2UgKyBncm91cChQc2V1ZG9FeHRyYXMsIE51bWJlciwgRnVubnksIENvbnRTdHIsIE5hbWUpCiAKLWRlZiBfY29tcGlsZShleHByKToKLSAgICByZXR1cm4gcmUuY29tcGlsZShleHByLCByZS5VTklDT0RFKQorIyBGb3IgYSBnaXZlbiBzdHJpbmcgcHJlZml4IHBsdXMgcXVvdGVzLCBlbmRwYXRzIG1hcHMgaXQgdG8gYSByZWdleAorIyAgdG8gbWF0Y2ggdGhlIHJlbWFpbmRlciBvZiB0aGF0IHN0cmluZy4gX3ByZWZpeCBjYW4gYmUgZW1wdHksIGZvcgorIyAgYSBub3JtYWwgc2luZ2xlIG9yIHRyaXBsZSBxdW90ZWQgc3RyaW5nICh3aXRoIG5vIHByZWZpeCkuCitlbmRwYXRzID0ge30KK2ZvciBfcHJlZml4IGluIF9hbGxfc3RyaW5nX3ByZWZpeGVzKCk6CisgICAgZW5kcGF0c1tfcHJlZml4ICsgIiciXSA9IFNpbmdsZQorICAgIGVuZHBhdHNbX3ByZWZpeCArICciJ10gPSBEb3VibGUKKyAgICBlbmRwYXRzW19wcmVmaXggKyAiJycnIl0gPSBTaW5nbGUzCisgICAgZW5kcGF0c1tfcHJlZml4ICsgJyIiIiddID0gRG91YmxlMwogCi1lbmRwYXRzID0geyInIjogU2luZ2xlLCAnIic6IERvdWJsZSwKLSAgICAgICAgICAgIicnJyI6IFNpbmdsZTMsICciIiInOiBEb3VibGUzLAotICAgICAgICAgICAicicnJyI6IFNpbmdsZTMsICdyIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgImInJyciOiBTaW5nbGUzLCAnYiIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJSJycnIjogU2luZ2xlMywgJ1IiIiInOiBEb3VibGUzLAotICAgICAgICAgICAiQicnJyI6IFNpbmdsZTMsICdCIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgImJyJycnIjogU2luZ2xlMywgJ2JyIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgImJSJycnIjogU2luZ2xlMywgJ2JSIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIkJyJycnIjogU2luZ2xlMywgJ0JyIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIkJSJycnIjogU2luZ2xlMywgJ0JSIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgInJiJycnIjogU2luZ2xlMywgJ3JiIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlJiJycnIjogU2luZ2xlMywgJ1JiIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgInJCJycnIjogU2luZ2xlMywgJ3JCIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgIlJCJycnIjogU2luZ2xlMywgJ1JCIiIiJzogRG91YmxlMywKLSAgICAgICAgICAgInUnJyciOiBTaW5nbGUzLCAndSIiIic6IERvdWJsZTMsCi0gICAgICAgICAgICJVJycnIjogU2luZ2xlMywgJ1UiIiInOiBEb3VibGUzLAotICAgICAgICAgICAncic6IE5vbmUsICdSJzogTm9uZSwgJ2InOiBOb25lLCAnQic6IE5vbmUsCi0gICAgICAgICAgICd1JzogTm9uZSwgJ1UnOiBOb25lfQotCi10cmlwbGVfcXVvdGVkID0ge30KLWZvciB0IGluICgiJycnIiwgJyIiIicsCi0gICAgICAgICAgInInJyciLCAnciIiIicsICJSJycnIiwgJ1IiIiInLAotICAgICAgICAgICJiJycnIiwgJ2IiIiInLCAiQicnJyIsICdCIiIiJywKLSAgICAgICAgICAiYnInJyciLCAnYnIiIiInLCAiQnInJyciLCAnQnIiIiInLAotICAgICAgICAgICJiUicnJyIsICdiUiIiIicsICJCUicnJyIsICdCUiIiIicsCi0gICAgICAgICAgInJiJycnIiwgJ3JiIiIiJywgInJCJycnIiwgJ3JCIiIiJywKLSAgICAgICAgICAiUmInJyciLCAnUmIiIiInLCAiUkInJyciLCAnUkIiIiInLAotICAgICAgICAgICJ1JycnIiwgJ3UiIiInLCAiVScnJyIsICdVIiIiJywKLSAgICAgICAgICApOgotICAgIHRyaXBsZV9xdW90ZWRbdF0gPSB0Ci1zaW5nbGVfcXVvdGVkID0ge30KLWZvciB0IGluICgiJyIsICciJywKLSAgICAgICAgICAiciciLCAnciInLCAiUiciLCAnUiInLAotICAgICAgICAgICJiJyIsICdiIicsICJCJyIsICdCIicsCi0gICAgICAgICAgImJyJyIsICdiciInLCAiQnInIiwgJ0JyIicsCi0gICAgICAgICAgImJSJyIsICdiUiInLCAiQlInIiwgJ0JSIicgLAotICAgICAgICAgICJyYiciLCAncmIiJywgInJCJyIsICdyQiInLAotICAgICAgICAgICJSYiciLCAnUmIiJywgIlJCJyIsICdSQiInICwKLSAgICAgICAgICAidSciLCAndSInLCAiVSciLCAnVSInLAotICAgICAgICAgICk6Ci0gICAgc2luZ2xlX3F1b3RlZFt0XSA9IHQKKyMgQSBzZXQgb2YgYWxsIG9mIHRoZSBzaW5nbGUgYW5kIHRyaXBsZSBxdW90ZWQgc3RyaW5nIHByZWZpeGVzLAorIyAgaW5jbHVkaW5nIHRoZSBvcGVuaW5nIHF1b3Rlcy4KK3NpbmdsZV9xdW90ZWQgPSBzZXQoKQordHJpcGxlX3F1b3RlZCA9IHNldCgpCitmb3IgdCBpbiBfYWxsX3N0cmluZ19wcmVmaXhlcygpOgorICAgIGZvciB1IGluICh0ICsgJyInLCB0ICsgIiciKToKKyAgICAgICAgc2luZ2xlX3F1b3RlZC5hZGQodSkKKyAgICBmb3IgdSBpbiAodCArICciIiInLCB0ICsgIicnJyIpOgorICAgICAgICB0cmlwbGVfcXVvdGVkLmFkZCh1KQogCiB0YWJzaXplID0gOAogCkBAIC02MjYsNiArNjI0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHN0YXNoZWQKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXNoZWQgPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIFRva2VuSW5mbyhDT01NRU5ULCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKwogICAgICAgICAgICAgICAgIGVsaWYgdG9rZW4gaW4gdHJpcGxlX3F1b3RlZDoKICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbdG9rZW5dKQogICAgICAgICAgICAgICAgICAgICBlbmRtYXRjaCA9IGVuZHByb2cubWF0Y2gobGluZSwgcG9zKQpAQCAtNjM4LDE5ICs2MzcsMzcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRzdHIgPSBsaW5lW3N0YXJ0Ol0KICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBlbGlmIGluaXRpYWwgaW4gc2luZ2xlX3F1b3RlZCBvciBcCi0gICAgICAgICAgICAgICAgICAgIHRva2VuWzoyXSBpbiBzaW5nbGVfcXVvdGVkIG9yIFwKLSAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjNdIGluIHNpbmdsZV9xdW90ZWQ6CisKKyAgICAgICAgICAgICAgICAjIENoZWNrIHVwIHRvIHRoZSBmaXJzdCAzIGNoYXJzIG9mIHRoZSB0b2tlbiB0byBzZWUgaWYKKyAgICAgICAgICAgICAgICAjICB0aGV5J3JlIGluIHRoZSBzaW5nbGVfcXVvdGVkIHNldC4gSWYgc28sIHRoZXkgc3RhcnQKKyAgICAgICAgICAgICAgICAjICBhIHN0cmluZy4KKyAgICAgICAgICAgICAgICAjIFdlJ3JlIHVzaW5nIHRoZSBmaXJzdCAzLCBiZWNhdXNlIHdlJ3JlIGxvb2tpbmcgZm9yCisgICAgICAgICAgICAgICAgIyAgInJiJyIgKGZvciBleGFtcGxlKSBhdCB0aGUgc3RhcnQgb2YgdGhlIHRva2VuLiBJZgorICAgICAgICAgICAgICAgICMgIHdlIHN3aXRjaCB0byBsb25nZXIgcHJlZml4ZXMsIHRoaXMgbmVlZHMgdG8gYmUKKyAgICAgICAgICAgICAgICAjICBhZGp1c3RlZC4KKyAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdCBpbml0aWFsID09IHRva2VuWzoxXS4KKyAgICAgICAgICAgICAgICAjIEFsc28gbm90ZSB0aGF0IHNpbmdsZSBxdW90ZSBjaGVja2luZyBtdXN0IGNvbWUgYWZ0ZXIKKyAgICAgICAgICAgICAgICAjICB0cmlwbGUgcXVvdGUgY2hlY2tpbmcgKGFib3ZlKS4KKyAgICAgICAgICAgICAgICBlbGlmIChpbml0aWFsIGluIHNpbmdsZV9xdW90ZWQgb3IKKyAgICAgICAgICAgICAgICAgICAgICB0b2tlbls6Ml0gaW4gc2luZ2xlX3F1b3RlZCBvcgorICAgICAgICAgICAgICAgICAgICAgIHRva2VuWzozXSBpbiBzaW5nbGVfcXVvdGVkKToKICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW5bLTFdID09ICdcbic6ICAgICAgICAgICAgICAgICAgIyBjb250aW51ZWQgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJzdGFydCA9IChsbnVtLCBzdGFydCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzW2luaXRpYWxdIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcGF0c1t0b2tlblsxXV0gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzW3Rva2VuWzJdXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgQWdhaW4sIHVzaW5nIHRoZSBmaXJzdCAzIGNoYXJzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyAgdG9rZW4uIFRoaXMgaXMgbG9va2luZyBmb3IgdGhlIG1hdGNoaW5nIGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgIyAgcmVnZXggZm9yIHRoZSBjb3JyZWN0IHR5cGUgb2YgcXVvdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgIGNoYXJhY3Rlci4gU28gaXQncyByZWFsbHkgbG9va2luZyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICMgIGVuZHBhdHNbIiciXSBvciBlbmRwYXRzWyciJ10sIGJ5IHRyeWluZyB0bworICAgICAgICAgICAgICAgICAgICAgICAgIyAgc2tpcCBzdHJpbmcgcHJlZml4IGNoYXJhY3RlcnMsIGlmIGFueS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzLmdldChpbml0aWFsKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHMuZ2V0KHRva2VuWzFdKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHMuZ2V0KHRva2VuWzJdKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRzdHIsIG5lZWRjb250ID0gbGluZVtzdGFydDpdLCAxCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250bGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3JkaW5hcnkgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oU1RSSU5HLCB0b2tlbiwgc3BvcywgZXBvcywgbGluZSkKKwogICAgICAgICAgICAgICAgIGVsaWYgaW5pdGlhbC5pc2lkZW50aWZpZXIoKTogICAgICAgICAgICAgICAjIG9yZGluYXJ5IG5hbWUKICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4gaW4gKCdhc3luYycsICdhd2FpdCcpOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXN5bmNfZGVmOgpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlLnB5IGIvTGliL3RyYWNlLnB5CmluZGV4IGYxMDgyNjYuLmFlMTU0NjEgMTAwNzU1Ci0tLSBhL0xpYi90cmFjZS5weQorKysgYi9MaWIvdHJhY2UucHkKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgci53cml0ZV9yZXN1bHRzKHNob3dfbWlzc2luZz1UcnVlLCBjb3ZlcmRpcj0iL3RtcCIpCiAiIiIKIF9fYWxsX18gPSBbJ1RyYWNlJywgJ0NvdmVyYWdlUmVzdWx0cyddCitpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBvcwogaW1wb3J0IHJlCkBAIC01OCw3ICs1OSw2IEBACiBpbXBvcnQgZ2MKIGltcG9ydCBkaXMKIGltcG9ydCBwaWNrbGUKLWZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4gYXMgX3dhcm4KIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCiAKIHRyeToKQEAgLTc3LDUxICs3Nyw2IEBACiAgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQogICAgICAgICB0aHJlYWRpbmcuc2V0dHJhY2UoTm9uZSkKIAotZGVmIF91c2FnZShvdXRmaWxlKToKLSAgICBvdXRmaWxlLndyaXRlKCIiIlVzYWdlOiAlcyBbT1BUSU9OU10gPGZpbGU+IFtBUkdTXQotCi1NZXRhLW9wdGlvbnM6Ci0tLWhlbHAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGhlbHAgdGhlbiBleGl0LgotLS12ZXJzaW9uICAgICAgICAgICAgIE91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uIHRoZW4gZXhpdC4KLQotT3RoZXJ3aXNlLCBleGFjdGx5IG9uZSBvZiB0aGUgZm9sbG93aW5nIHRocmVlIG9wdGlvbnMgbXVzdCBiZSBnaXZlbjoKLS10LCAtLXRyYWNlICAgICAgICAgICBQcmludCBlYWNoIGxpbmUgdG8gc3lzLnN0ZG91dCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuCi0tYywgLS1jb3VudCAgICAgICAgICAgQ291bnQgdGhlIG51bWJlciBvZiB0aW1lcyBlYWNoIGxpbmUgaXMgZXhlY3V0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBhbmQgd3JpdGUgdGhlIGNvdW50cyB0byA8bW9kdWxlPi5jb3ZlciBmb3IgZWFjaAotICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSBleGVjdXRlZCwgaW4gdGhlIG1vZHVsZSdzIGRpcmVjdG9yeS4KLSAgICAgICAgICAgICAgICAgICAgICBTZWUgYWxzbyBgLS1jb3ZlcmRpcicsIGAtLWZpbGUnLCBgLS1uby1yZXBvcnQnIGJlbG93LgotLWwsIC0tbGlzdGZ1bmNzICAgICAgIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZnVuY3Rpb25zIGFyZSBleGVjdXRlZCBhdCBsZWFzdAotICAgICAgICAgICAgICAgICAgICAgIG9uY2UgYW5kIHdyaXRlIHRoZSByZXN1bHRzIHRvIHN5cy5zdGRvdXQgYWZ0ZXIgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSBleGl0cy4KLS1ULCAtLXRyYWNrY2FsbHMgICAgICBLZWVwIHRyYWNrIG9mIGNhbGxlci9jYWxsZWQgcGFpcnMgYW5kIHdyaXRlIHRoZQotICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMgdG8gc3lzLnN0ZG91dCBhZnRlciB0aGUgcHJvZ3JhbSBleGl0cy4KLS1yLCAtLXJlcG9ydCAgICAgICAgICBHZW5lcmF0ZSBhIHJlcG9ydCBmcm9tIGEgY291bnRzIGZpbGU7IGRvIG5vdCBleGVjdXRlCi0gICAgICAgICAgICAgICAgICAgICAgYW55IGNvZGUuICBgLS1maWxlJyBtdXN0IHNwZWNpZnkgdGhlIHJlc3VsdHMgZmlsZSB0bwotICAgICAgICAgICAgICAgICAgICAgIHJlYWQsIHdoaWNoIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgaW4gYSBwcmV2aW91cyBydW4KLSAgICAgICAgICAgICAgICAgICAgICB3aXRoIGAtLWNvdW50IC0tZmlsZT1GSUxFJy4KLQotTW9kaWZpZXJzOgotLWYsIC0tZmlsZT08ZmlsZT4gICAgIEZpbGUgdG8gYWNjdW11bGF0ZSBjb3VudHMgb3ZlciBzZXZlcmFsIHJ1bnMuCi0tUiwgLS1uby1yZXBvcnQgICAgICAgRG8gbm90IGdlbmVyYXRlIHRoZSBjb3ZlcmFnZSByZXBvcnQgZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgVXNlZnVsIGlmIHlvdSB3YW50IHRvIGFjY3VtdWxhdGUgb3ZlciBzZXZlcmFsIHJ1bnMuCi0tQywgLS1jb3ZlcmRpcj08ZGlyPiAgRGlyZWN0b3J5IHdoZXJlIHRoZSByZXBvcnQgZmlsZXMuICBUaGUgY292ZXJhZ2UKLSAgICAgICAgICAgICAgICAgICAgICByZXBvcnQgZm9yIDxwYWNrYWdlPi48bW9kdWxlPiBpcyB3cml0dGVuIHRvIGZpbGUKLSAgICAgICAgICAgICAgICAgICAgICA8ZGlyPi88cGFja2FnZT4vPG1vZHVsZT4uY292ZXIuCi0tbSwgLS1taXNzaW5nICAgICAgICAgQW5ub3RhdGUgZXhlY3V0YWJsZSBsaW5lcyB0aGF0IHdlcmUgbm90IGV4ZWN1dGVkCi0gICAgICAgICAgICAgICAgICAgICAgd2l0aCAnPj4+Pj4+ICcuCi0tcywgLS1zdW1tYXJ5ICAgICAgICAgV3JpdGUgYSBicmllZiBzdW1tYXJ5IG9uIHN0ZG91dCBmb3IgZWFjaCBmaWxlLgotICAgICAgICAgICAgICAgICAgICAgIChDYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydC4pCi0tZywgLS10aW1pbmcgICAgICAgICAgUHJlZml4IGVhY2ggbGluZSB3aXRoIHRoZSB0aW1lIHNpbmNlIHRoZSBwcm9ncmFtIHN0YXJ0ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgT25seSB1c2VkIHdoaWxlIHRyYWNpbmcuCi0KLUZpbHRlcnMsIG1heSBiZSByZXBlYXRlZCBtdWx0aXBsZSB0aW1lczoKLS0taWdub3JlLW1vZHVsZT08bW9kPiBJZ25vcmUgdGhlIGdpdmVuIG1vZHVsZShzKSBhbmQgaXRzIHN1Ym1vZHVsZXMKLSAgICAgICAgICAgICAgICAgICAgICAoaWYgaXQgaXMgYSBwYWNrYWdlKS4gIEFjY2VwdHMgY29tbWEgc2VwYXJhdGVkCi0gICAgICAgICAgICAgICAgICAgICAgbGlzdCBvZiBtb2R1bGUgbmFtZXMKLS0taWdub3JlLWRpcj08ZGlyPiAgICBJZ25vcmUgZmlsZXMgaW4gdGhlIGdpdmVuIGRpcmVjdG9yeSAobXVsdGlwbGUKLSAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBjYW4gYmUgam9pbmVkIGJ5IG9zLnBhdGhzZXApLgotIiIiICUgc3lzLmFyZ3ZbMF0pCi0KIFBSQUdNQV9OT0NPVkVSID0gIiNwcmFnbWEgTk8gQ09WRVIiCiAKICMgU2ltcGxlIHJ4IHRvIGZpbmQgbGluZXMgd2l0aCBubyBjb2RlLgpAQCAtMjY1LDcgKzIyMCwxMyBAQAogCiAgICAgZGVmIHdyaXRlX3Jlc3VsdHMoc2VsZiwgc2hvd19taXNzaW5nPVRydWUsIHN1bW1hcnk9RmFsc2UsIGNvdmVyZGlyPU5vbmUpOgogICAgICAgICAiIiIKLSAgICAgICAgQHBhcmFtIGNvdmVyZGlyCisgICAgICAgIFdyaXRlIHRoZSBjb3ZlcmFnZSByZXN1bHRzLgorCisgICAgICAgIDpwYXJhbSBzaG93X21pc3Npbmc6IFNob3cgbGluZXMgdGhhdCBoYWQgbm8gaGl0cy4KKyAgICAgICAgOnBhcmFtIHN1bW1hcnk6IEluY2x1ZGUgY292ZXJhZ2Ugc3VtbWFyeSBwZXIgbW9kdWxlLgorICAgICAgICA6cGFyYW0gY292ZXJkaXI6IElmIE5vbmUsIHRoZSByZXN1bHRzIG9mIGVhY2ggbW9kdWxlIGFyZSBwbGFjZWQgaW4gaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5LCBvdGhlcndpc2UgaXQgaXMgaW5jbHVkZWQgaW4gdGhlIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuY2FsbGVkZnVuY3M6CiAgICAgICAgICAgICBwcmludCgpCkBAIC02NDcsMjEwICs2MDgsMTM1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkZnVuY3M9c2VsZi5fY2FsbGVkZnVuY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVycz1zZWxmLl9jYWxsZXJzKQogCi1kZWYgX2Vycl9leGl0KG1zZyk6Ci0gICAgc3lzLnN0ZGVyci53cml0ZSgiJXM6ICVzXG4iICUgKHN5cy5hcmd2WzBdLCBtc2cpKQotICAgIHN5cy5leGl0KDEpCitkZWYgbWFpbigpOgogCi1kZWYgbWFpbihhcmd2PU5vbmUpOgotICAgIGltcG9ydCBnZXRvcHQKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0ndHJhY2UgMi4wJykKIAotICAgIGlmIGFyZ3YgaXMgTm9uZToKLSAgICAgICAgYXJndiA9IHN5cy5hcmd2CisgICAgZ3JwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnTWFpbiBvcHRpb25zJywKKyAgICAgICAgICAgICdPbmUgb2YgdGhlc2UgKG9yIC0tcmVwb3J0KSBtdXN0IGJlIGdpdmVuJykKKworICAgIGdycC5hZGRfYXJndW1lbnQoJy1jJywgJy0tY291bnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nQ291bnQgdGhlIG51bWJlciBvZiB0aW1lcyBlYWNoIGxpbmUgaXMgZXhlY3V0ZWQgYW5kIHdyaXRlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjb3VudHMgdG8gPG1vZHVsZT4uY292ZXIgZm9yIGVhY2ggbW9kdWxlIGV4ZWN1dGVkLCBpbiAnCisgICAgICAgICAgICAgICAgICd0aGUgbW9kdWxlXCdzIGRpcmVjdG9yeS4gU2VlIGFsc28gLS1jb3ZlcmRpciwgLS1maWxlLCAnCisgICAgICAgICAgICAgICAgICctLW5vLXJlcG9ydCBiZWxvdy4nKQorICAgIGdycC5hZGRfYXJndW1lbnQoJy10JywgJy0tdHJhY2UnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nUHJpbnQgZWFjaCBsaW5lIHRvIHN5cy5zdGRvdXQgYmVmb3JlIGl0IGlzIGV4ZWN1dGVkJykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctbCcsICctLWxpc3RmdW5jcycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdLZWVwIHRyYWNrIG9mIHdoaWNoIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgYXQgbGVhc3Qgb25jZSAnCisgICAgICAgICAgICAgICAgICdhbmQgd3JpdGUgdGhlIHJlc3VsdHMgdG8gc3lzLnN0ZG91dCBhZnRlciB0aGUgcHJvZ3JhbSBleGl0cy4gJworICAgICAgICAgICAgICAgICAnQ2Fubm90IGJlIHNwZWNpZmllZCBhbG9uZ3NpZGUgLS10cmFjZSBvciAtLWNvdW50LicpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLVQnLCAnLS10cmFja2NhbGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0tlZXAgdHJhY2sgb2YgY2FsbGVyL2NhbGxlZCBwYWlycyBhbmQgd3JpdGUgdGhlIHJlc3VsdHMgdG8gJworICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dCBhZnRlciB0aGUgcHJvZ3JhbSBleGl0cy4nKQorCisgICAgZ3JwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnTW9kaWZpZXJzJykKKworICAgIF9ncnAgPSBncnAuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCisgICAgX2dycC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmVwb3J0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0dlbmVyYXRlIGEgcmVwb3J0IGZyb20gYSBjb3VudHMgZmlsZTsgZG9lcyBub3QgZXhlY3V0ZSBhbnkgJworICAgICAgICAgICAgICAgICAnY29kZS4gLS1maWxlIG11c3Qgc3BlY2lmeSB0aGUgcmVzdWx0cyBmaWxlIHRvIHJlYWQsIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgJ211c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgaW4gYSBwcmV2aW91cyBydW4gd2l0aCAtLWNvdW50ICcKKyAgICAgICAgICAgICAgICAgJy0tZmlsZT1GSUxFJykKKyAgICBfZ3JwLmFkZF9hcmd1bWVudCgnLVInLCAnLS1uby1yZXBvcnQnLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscD0nRG8gbm90IGdlbmVyYXRlIHRoZSBjb3ZlcmFnZSByZXBvcnQgZmlsZXMuICcKKyAgICAgICAgICAgICAgICAgJ1VzZWZ1bCBpZiB5b3Ugd2FudCB0byBhY2N1bXVsYXRlIG92ZXIgc2V2ZXJhbCBydW5zLicpCisKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctZicsICctLWZpbGUnLAorICAgICAgICAgICAgaGVscD0nRmlsZSB0byBhY2N1bXVsYXRlIGNvdW50cyBvdmVyIHNldmVyYWwgcnVucycpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLUMnLCAnLS1jb3ZlcmRpcicsCisgICAgICAgICAgICBoZWxwPSdEaXJlY3Rvcnkgd2hlcmUgdGhlIHJlcG9ydCBmaWxlcyBnby4gVGhlIGNvdmVyYWdlIHJlcG9ydCAnCisgICAgICAgICAgICAgICAgICdmb3IgPHBhY2thZ2U+Ljxtb2R1bGU+IHdpbGwgYmUgd3JpdHRlbiB0byBmaWxlICcKKyAgICAgICAgICAgICAgICAgJzxkaXI+LzxwYWNrYWdlPi88bW9kdWxlPi5jb3ZlcicpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLW0nLCAnLS1taXNzaW5nJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J0Fubm90YXRlIGV4ZWN1dGFibGUgbGluZXMgdGhhdCB3ZXJlIG5vdCBleGVjdXRlZCB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyI+Pj4+Pj4gIicpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zdW1tYXJ5JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHA9J1dyaXRlIGEgYnJpZWYgc3VtbWFyeSBmb3IgZWFjaCBmaWxlIHRvIHN5cy5zdGRvdXQuICcKKyAgICAgICAgICAgICAgICAgJ0NhbiBvbmx5IGJlIHVzZWQgd2l0aCAtLWNvdW50IG9yIC0tcmVwb3J0JykKKyAgICBncnAuYWRkX2FyZ3VtZW50KCctZycsICctLXRpbWluZycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdQcmVmaXggZWFjaCBsaW5lIHdpdGggdGhlIHRpbWUgc2luY2UgdGhlIHByb2dyYW0gc3RhcnRlZC4gJworICAgICAgICAgICAgICAgICAnT25seSB1c2VkIHdoaWxlIHRyYWNpbmcnKQorCisgICAgZ3JwID0gcGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cCgnRmlsdGVycycsCisgICAgICAgICAgICAnQ2FuIGJlIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcycpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLS1pZ25vcmUtbW9kdWxlJywgYWN0aW9uPSdhcHBlbmQnLCBkZWZhdWx0PVtdLAorICAgICAgICAgICAgaGVscD0nSWdub3JlIHRoZSBnaXZlbiBtb2R1bGUocykgYW5kIGl0cyBzdWJtb2R1bGVzJworICAgICAgICAgICAgICAgICAnKGlmIGl0IGlzIGEgcGFja2FnZSkuIEFjY2VwdHMgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgJworICAgICAgICAgICAgICAgICAnbW9kdWxlIG5hbWVzLicpCisgICAgZ3JwLmFkZF9hcmd1bWVudCgnLS1pZ25vcmUtZGlyJywgYWN0aW9uPSdhcHBlbmQnLCBkZWZhdWx0PVtdLAorICAgICAgICAgICAgaGVscD0nSWdub3JlIGZpbGVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkgJworICAgICAgICAgICAgICAgICAnKG11bHRpcGxlIGRpcmVjdG9yaWVzIGNhbiBiZSBqb2luZWQgYnkgb3MucGF0aHNlcCkuJykKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2ZpbGVuYW1lJywgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgaGVscD0nZmlsZSB0byBydW4gYXMgbWFpbiBwcm9ncmFtJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdhcmd1bWVudHMnLCBuYXJncz1hcmdwYXJzZS5SRU1BSU5ERVIsCisgICAgICAgICAgICBoZWxwPSdhcmd1bWVudHMgdG8gdGhlIHByb2dyYW0nKQorCisgICAgb3B0cyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIG9wdHMuaWdub3JlX2RpcjoKKyAgICAgICAgcmVsX3BhdGggPSAnbGliJywgJ3B5dGhvbnswLm1ham9yfS57MC5taW5vcn0nLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKQorICAgICAgICBfcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgKnJlbF9wYXRoKQorICAgICAgICBfZXhlY19wcmVmaXggPSBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfZXhlY19wcmVmaXgsICpyZWxfcGF0aCkKKworICAgIGRlZiBwYXJzZV9pZ25vcmVfZGlyKHMpOgorICAgICAgICBzID0gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguZXhwYW5kdmFycyhzKSkKKyAgICAgICAgcyA9IHMucmVwbGFjZSgnJHByZWZpeCcsIF9wcmVmaXgpLnJlcGxhY2UoJyRleGVjX3ByZWZpeCcsIF9leGVjX3ByZWZpeCkKKyAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgocykKKworICAgIG9wdHMuaWdub3JlX21vZHVsZSA9IFttb2Quc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiBvcHRzLmlnbm9yZV9tb2R1bGUgZm9yIG1vZCBpbiBpLnNwbGl0KCcsJyldCisgICAgb3B0cy5pZ25vcmVfZGlyID0gW3BhcnNlX2lnbm9yZV9kaXIocykKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gb3B0cy5pZ25vcmVfZGlyIGZvciBzIGluIGkuc3BsaXQob3MucGF0aHNlcCldCisKKyAgICBpZiBvcHRzLnJlcG9ydDoKKyAgICAgICAgaWYgbm90IG9wdHMuZmlsZToKKyAgICAgICAgICAgIHBhcnNlci5lcnJvcignLXIvLS1yZXBvcnQgcmVxdWlyZXMgLWYvLS1maWxlJykKKyAgICAgICAgcmVzdWx0cyA9IENvdmVyYWdlUmVzdWx0cyhpbmZpbGU9b3B0cy5maWxlLCBvdXRmaWxlPW9wdHMuZmlsZSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdHMud3JpdGVfcmVzdWx0cyhvcHRzLm1pc3NpbmcsIG9wdHMuc3VtbWFyeSwgb3B0cy5jb3ZlcmRpcikKKworICAgIGlmIG5vdCBhbnkoW29wdHMudHJhY2UsIG9wdHMuY291bnQsIG9wdHMubGlzdGZ1bmNzLCBvcHRzLnRyYWNrY2FsbHNdKToKKyAgICAgICAgcGFyc2VyLmVycm9yKCdtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAnCisgICAgICAgICAgICAgICAgICAgICAnLS1saXN0ZnVuY3MsIG9yIC0tdHJhY2tjYWxscycpCisKKyAgICBpZiBvcHRzLmxpc3RmdW5jcyBhbmQgKG9wdHMuY291bnQgb3Igb3B0cy50cmFjZSk6CisgICAgICAgIHBhcnNlci5lcnJvcignY2Fubm90IHNwZWNpZnkgYm90aCAtLWxpc3RmdW5jcyBhbmQgKC0tdHJhY2Ugb3IgLS1jb3VudCknKQorCisgICAgaWYgb3B0cy5zdW1tYXJ5IGFuZCBub3Qgb3B0cy5jb3VudDoKKyAgICAgICAgcGFyc2VyLmVycm9yKCctLXN1bW1hcnkgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIC0tY291bnQgb3IgLS1yZXBvcnQnKQorCisgICAgaWYgb3B0cy5maWxlbmFtZSBpcyBOb25lOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ2ZpbGVuYW1lIGlzIG1pc3Npbmc6IHJlcXVpcmVkIHdpdGggdGhlIG1haW4gb3B0aW9ucycpCisKKyAgICBzeXMuYXJndiA9IG9wdHMuZmlsZW5hbWUsICpvcHRzLmFyZ3VtZW50cworICAgIHN5cy5wYXRoWzBdID0gb3MucGF0aC5kaXJuYW1lKG9wdHMuZmlsZW5hbWUpCisKKyAgICB0ID0gVHJhY2Uob3B0cy5jb3VudCwgb3B0cy50cmFjZSwgY291bnRmdW5jcz1vcHRzLmxpc3RmdW5jcywKKyAgICAgICAgICAgICAgY291bnRjYWxsZXJzPW9wdHMudHJhY2tjYWxscywgaWdub3JlbW9kcz1vcHRzLmlnbm9yZV9tb2R1bGUsCisgICAgICAgICAgICAgIGlnbm9yZWRpcnM9b3B0cy5pZ25vcmVfZGlyLCBpbmZpbGU9b3B0cy5maWxlLAorICAgICAgICAgICAgICBvdXRmaWxlPW9wdHMuZmlsZSwgdGltaW5nPW9wdHMudGltaW5nKQogICAgIHRyeToKLSAgICAgICAgb3B0cywgcHJvZ19hcmd2ID0gZ2V0b3B0LmdldG9wdChhcmd2WzE6XSwgInRjclJmOmQ6bXNDOmxUZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJoZWxwIiwgInZlcnNpb24iLCAidHJhY2UiLCAiY291bnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVwb3J0IiwgIm5vLXJlcG9ydCIsICJzdW1tYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU9IiwgIm1pc3NpbmciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWdub3JlLW1vZHVsZT0iLCAiaWdub3JlLWRpcj0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY292ZXJkaXI9IiwgImxpc3RmdW5jcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFja2NhbGxzIiwgInRpbWluZyJdKQorICAgICAgICB3aXRoIG9wZW4ob3B0cy5maWxlbmFtZSkgYXMgZnA6CisgICAgICAgICAgICBjb2RlID0gY29tcGlsZShmcC5yZWFkKCksIG9wdHMuZmlsZW5hbWUsICdleGVjJykKKyAgICAgICAgIyB0cnkgdG8gZW11bGF0ZSBfX21haW5fXyBuYW1lc3BhY2UgYXMgbXVjaCBhcyBwb3NzaWJsZQorICAgICAgICBnbG9icyA9IHsKKyAgICAgICAgICAgICdfX2ZpbGVfXyc6IG9wdHMuZmlsZW5hbWUsCisgICAgICAgICAgICAnX19uYW1lX18nOiAnX19tYWluX18nLAorICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogTm9uZSwKKyAgICAgICAgICAgICdfX2NhY2hlZF9fJzogTm9uZSwKKyAgICAgICAgfQorICAgICAgICB0LnJ1bmN0eChjb2RlLCBnbG9icywgZ2xvYnMpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICBzeXMuZXhpdCgiQ2Fubm90IHJ1biBmaWxlICVyIGJlY2F1c2U6ICVzIiAlIChzeXMuYXJndlswXSwgZXJyKSkKKyAgICBleGNlcHQgU3lzdGVtRXhpdDoKKyAgICAgICAgcGFzcwogCi0gICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBtc2c6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIiVzOiAlc1xuIiAlIChzeXMuYXJndlswXSwgbXNnKSkKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiVHJ5IGAlcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgJSBzeXMuYXJndlswXSkKLSAgICAgICAgc3lzLmV4aXQoMSkKKyAgICByZXN1bHRzID0gdC5yZXN1bHRzKCkKIAotICAgIHRyYWNlID0gMAotICAgIGNvdW50ID0gMAotICAgIHJlcG9ydCA9IDAKLSAgICBub19yZXBvcnQgPSAwCi0gICAgY291bnRzX2ZpbGUgPSBOb25lCi0gICAgbWlzc2luZyA9IDAKLSAgICBpZ25vcmVfbW9kdWxlcyA9IFtdCi0gICAgaWdub3JlX2RpcnMgPSBbXQotICAgIGNvdmVyZGlyID0gTm9uZQotICAgIHN1bW1hcnkgPSAwCi0gICAgbGlzdGZ1bmNzID0gRmFsc2UKLSAgICBjb3VudGNhbGxlcnMgPSBGYWxzZQotICAgIHRpbWluZyA9IEZhbHNlCi0KLSAgICBmb3Igb3B0LCB2YWwgaW4gb3B0czoKLSAgICAgICAgaWYgb3B0ID09ICItLWhlbHAiOgotICAgICAgICAgICAgX3VzYWdlKHN5cy5zdGRvdXQpCi0gICAgICAgICAgICBzeXMuZXhpdCgwKQotCi0gICAgICAgIGlmIG9wdCA9PSAiLS12ZXJzaW9uIjoKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoInRyYWNlIDIuMFxuIikKLSAgICAgICAgICAgIHN5cy5leGl0KDApCi0KLSAgICAgICAgaWYgb3B0ID09ICItVCIgb3Igb3B0ID09ICItLXRyYWNrY2FsbHMiOgotICAgICAgICAgICAgY291bnRjYWxsZXJzID0gVHJ1ZQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1sIiBvciBvcHQgPT0gIi0tbGlzdGZ1bmNzIjoKLSAgICAgICAgICAgIGxpc3RmdW5jcyA9IFRydWUKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItZyIgb3Igb3B0ID09ICItLXRpbWluZyI6Ci0gICAgICAgICAgICB0aW1pbmcgPSBUcnVlCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLXQiIG9yIG9wdCA9PSAiLS10cmFjZSI6Ci0gICAgICAgICAgICB0cmFjZSA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItYyIgb3Igb3B0ID09ICItLWNvdW50IjoKLSAgICAgICAgICAgIGNvdW50ID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1yIiBvciBvcHQgPT0gIi0tcmVwb3J0IjoKLSAgICAgICAgICAgIHJlcG9ydCA9IDEKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItUiIgb3Igb3B0ID09ICItLW5vLXJlcG9ydCI6Ci0gICAgICAgICAgICBub19yZXBvcnQgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLWYiIG9yIG9wdCA9PSAiLS1maWxlIjoKLSAgICAgICAgICAgIGNvdW50c19maWxlID0gdmFsCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLW0iIG9yIG9wdCA9PSAiLS1taXNzaW5nIjoKLSAgICAgICAgICAgIG1pc3NpbmcgPSAxCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIG9wdCA9PSAiLUMiIG9yIG9wdCA9PSAiLS1jb3ZlcmRpciI6Ci0gICAgICAgICAgICBjb3ZlcmRpciA9IHZhbAotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi1zIiBvciBvcHQgPT0gIi0tc3VtbWFyeSI6Ci0gICAgICAgICAgICBzdW1tYXJ5ID0gMQotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBvcHQgPT0gIi0taWdub3JlLW1vZHVsZSI6Ci0gICAgICAgICAgICBmb3IgbW9kIGluIHZhbC5zcGxpdCgiLCIpOgotICAgICAgICAgICAgICAgIGlnbm9yZV9tb2R1bGVzLmFwcGVuZChtb2Quc3RyaXAoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgaWYgb3B0ID09ICItLWlnbm9yZS1kaXIiOgotICAgICAgICAgICAgZm9yIHMgaW4gdmFsLnNwbGl0KG9zLnBhdGhzZXApOgotICAgICAgICAgICAgICAgIHMgPSBvcy5wYXRoLmV4cGFuZHZhcnMocykKLSAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCi0KLSAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkcHJlZml4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICJsaWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkZXhlY19wcmVmaXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCAibGliIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCi0gICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKLSAgICAgICAgICAgICAgICBpZ25vcmVfZGlycy5hcHBlbmQocykKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgYXNzZXJ0IDAsICJTaG91bGQgbmV2ZXIgZ2V0IGhlcmUiCi0KLSAgICBpZiBsaXN0ZnVuY3MgYW5kIChjb3VudCBvciB0cmFjZSk6Ci0gICAgICAgIF9lcnJfZXhpdCgiY2Fubm90IHNwZWNpZnkgYm90aCAtLWxpc3RmdW5jcyBhbmQgKC0tdHJhY2Ugb3IgLS1jb3VudCkiKQotCi0gICAgaWYgbm90IChjb3VudCBvciB0cmFjZSBvciByZXBvcnQgb3IgbGlzdGZ1bmNzIG9yIGNvdW50Y2FsbGVycyk6Ci0gICAgICAgIF9lcnJfZXhpdCgibXVzdCBzcGVjaWZ5IG9uZSBvZiAtLXRyYWNlLCAtLWNvdW50LCAtLXJlcG9ydCwgIgotICAgICAgICAgICAgICAgICAgIi0tbGlzdGZ1bmNzLCBvciAtLXRyYWNrY2FsbHMiKQotCi0gICAgaWYgcmVwb3J0IGFuZCBub19yZXBvcnQ6Ci0gICAgICAgIF9lcnJfZXhpdCgiY2Fubm90IHNwZWNpZnkgYm90aCAtLXJlcG9ydCBhbmQgLS1uby1yZXBvcnQiKQotCi0gICAgaWYgcmVwb3J0IGFuZCBub3QgY291bnRzX2ZpbGU6Ci0gICAgICAgIF9lcnJfZXhpdCgiLS1yZXBvcnQgcmVxdWlyZXMgYSAtLWZpbGUiKQotCi0gICAgaWYgbm9fcmVwb3J0IGFuZCBsZW4ocHJvZ19hcmd2KSA9PSAwOgotICAgICAgICBfZXJyX2V4aXQoIm1pc3NpbmcgbmFtZSBvZiBmaWxlIHRvIHJ1biIpCi0KLSAgICAjIGV2ZXJ5dGhpbmcgaXMgcmVhZHkKLSAgICBpZiByZXBvcnQ6Ci0gICAgICAgIHJlc3VsdHMgPSBDb3ZlcmFnZVJlc3VsdHMoaW5maWxlPWNvdW50c19maWxlLCBvdXRmaWxlPWNvdW50c19maWxlKQotICAgICAgICByZXN1bHRzLndyaXRlX3Jlc3VsdHMobWlzc2luZywgc3VtbWFyeT1zdW1tYXJ5LCBjb3ZlcmRpcj1jb3ZlcmRpcikKLSAgICBlbHNlOgotICAgICAgICBzeXMuYXJndiA9IHByb2dfYXJndgotICAgICAgICBwcm9nbmFtZSA9IHByb2dfYXJndlswXQotICAgICAgICBzeXMucGF0aFswXSA9IG9zLnBhdGguc3BsaXQocHJvZ25hbWUpWzBdCi0KLSAgICAgICAgdCA9IFRyYWNlKGNvdW50LCB0cmFjZSwgY291bnRmdW5jcz1saXN0ZnVuY3MsCi0gICAgICAgICAgICAgICAgICBjb3VudGNhbGxlcnM9Y291bnRjYWxsZXJzLCBpZ25vcmVtb2RzPWlnbm9yZV9tb2R1bGVzLAotICAgICAgICAgICAgICAgICAgaWdub3JlZGlycz1pZ25vcmVfZGlycywgaW5maWxlPWNvdW50c19maWxlLAotICAgICAgICAgICAgICAgICAgb3V0ZmlsZT1jb3VudHNfZmlsZSwgdGltaW5nPXRpbWluZykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKHByb2duYW1lKSBhcyBmcDoKLSAgICAgICAgICAgICAgICBjb2RlID0gY29tcGlsZShmcC5yZWFkKCksIHByb2duYW1lLCAnZXhlYycpCi0gICAgICAgICAgICAjIHRyeSB0byBlbXVsYXRlIF9fbWFpbl9fIG5hbWVzcGFjZSBhcyBtdWNoIGFzIHBvc3NpYmxlCi0gICAgICAgICAgICBnbG9icyA9IHsKLSAgICAgICAgICAgICAgICAnX19maWxlX18nOiBwcm9nbmFtZSwKLSAgICAgICAgICAgICAgICAnX19uYW1lX18nOiAnX19tYWluX18nLAotICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6IE5vbmUsCi0gICAgICAgICAgICAgICAgJ19fY2FjaGVkX18nOiBOb25lLAotICAgICAgICAgICAgfQotICAgICAgICAgICAgdC5ydW5jdHgoY29kZSwgZ2xvYnMsIGdsb2JzKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBfZXJyX2V4aXQoIkNhbm5vdCBydW4gZmlsZSAlciBiZWNhdXNlOiAlcyIgJSAoc3lzLmFyZ3ZbMF0sIGVycikpCi0gICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHJlc3VsdHMgPSB0LnJlc3VsdHMoKQotCi0gICAgICAgIGlmIG5vdCBub19yZXBvcnQ6Ci0gICAgICAgICAgICByZXN1bHRzLndyaXRlX3Jlc3VsdHMobWlzc2luZywgc3VtbWFyeT1zdW1tYXJ5LCBjb3ZlcmRpcj1jb3ZlcmRpcikKLQotIyAgRGVwcmVjYXRlZCBBUEkKLWRlZiB1c2FnZShvdXRmaWxlKToKLSAgICBfd2FybigiVGhlIHRyYWNlLnVzYWdlKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgX3VzYWdlKG91dGZpbGUpCi0KLWNsYXNzIElnbm9yZShfSWdub3JlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbW9kdWxlcz1Ob25lLCBkaXJzPU5vbmUpOgotICAgICAgICBfd2FybigiVGhlIGNsYXNzIHRyYWNlLklnbm9yZSBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgIF9JZ25vcmUuX19pbml0X18oc2VsZiwgbW9kdWxlcywgZGlycykKLQotZGVmIG1vZG5hbWUocGF0aCk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5tb2RuYW1lKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9tb2RuYW1lKHBhdGgpCi0KLWRlZiBmdWxsbW9kbmFtZShwYXRoKToKLSAgICBfd2FybigiVGhlIHRyYWNlLmZ1bGxtb2RuYW1lKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9mdWxsbW9kbmFtZShwYXRoKQotCi1kZWYgZmluZF9saW5lc19mcm9tX2NvZGUoY29kZSwgc3Rycyk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5maW5kX2xpbmVzX2Zyb21fY29kZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfZmluZF9saW5lc19mcm9tX2NvZGUoY29kZSwgc3RycykKLQotZGVmIGZpbmRfbGluZXMoY29kZSwgc3Rycyk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5maW5kX2xpbmVzKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX2xpbmVzKGNvZGUsIHN0cnMpCi0KLWRlZiBmaW5kX3N0cmluZ3MoZmlsZW5hbWUsIGVuY29kaW5nPU5vbmUpOgotICAgIF93YXJuKCJUaGUgdHJhY2UuZmluZF9zdHJpbmdzKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgcmV0dXJuIF9maW5kX3N0cmluZ3MoZmlsZW5hbWUsIGVuY29kaW5nPU5vbmUpCi0KLWRlZiBmaW5kX2V4ZWN1dGFibGVfbGluZW5vcyhmaWxlbmFtZSk6Ci0gICAgX3dhcm4oIlRoZSB0cmFjZS5maW5kX2V4ZWN1dGFibGVfbGluZW5vcygpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotICAgIHJldHVybiBfZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmlsZW5hbWUpCisgICAgaWYgbm90IG9wdHMubm9fcmVwb3J0OgorICAgICAgICByZXN1bHRzLndyaXRlX3Jlc3VsdHMob3B0cy5taXNzaW5nLCBvcHRzLnN1bW1hcnksIG9wdHMuY292ZXJkaXIpCiAKIGlmIF9fbmFtZV9fPT0nX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlYmFjay5weSBiL0xpYi90cmFjZWJhY2sucHkKaW5kZXggYzVmZDYxNy4uMDliZGE3MSAxMDA2NDQKLS0tIGEvTGliL3RyYWNlYmFjay5weQorKysgYi9MaWIvdHJhY2ViYWNrLnB5CkBAIC0zODUsOSArMzg1LDMwIEBACiAgICAgICAgIHJlc3VsdGluZyBsaXN0IGNvcnJlc3BvbmRzIHRvIGEgc2luZ2xlIGZyYW1lIGZyb20gdGhlIHN0YWNrLgogICAgICAgICBFYWNoIHN0cmluZyBlbmRzIGluIGEgbmV3bGluZTsgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwKICAgICAgICAgbmV3bGluZXMgYXMgd2VsbCwgZm9yIHRob3NlIGl0ZW1zIHdpdGggc291cmNlIHRleHQgbGluZXMuCisKKyAgICAgICAgRm9yIGxvbmcgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGZyYW1lIGFuZCBsaW5lLCB0aGUgZmlyc3QgZmV3CisgICAgICAgIHJlcGV0aXRpb25zIGFyZSBzaG93biwgZm9sbG93ZWQgYnkgYSBzdW1tYXJ5IGxpbmUgc3RhdGluZyB0aGUgZXhhY3QKKyAgICAgICAgbnVtYmVyIG9mIGZ1cnRoZXIgcmVwZXRpdGlvbnMuCiAgICAgICAgICIiIgogICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBsYXN0X2ZpbGUgPSBOb25lCisgICAgICAgIGxhc3RfbGluZSA9IE5vbmUKKyAgICAgICAgbGFzdF9uYW1lID0gTm9uZQorICAgICAgICBjb3VudCA9IDAKICAgICAgICAgZm9yIGZyYW1lIGluIHNlbGY6CisgICAgICAgICAgICBpZiAobGFzdF9maWxlIGlzIG5vdCBOb25lIGFuZCBsYXN0X2ZpbGUgPT0gZnJhbWUuZmlsZW5hbWUgYW5kCisgICAgICAgICAgICAgICAgbGFzdF9saW5lIGlzIG5vdCBOb25lIGFuZCBsYXN0X2xpbmUgPT0gZnJhbWUubGluZW5vIGFuZAorICAgICAgICAgICAgICAgIGxhc3RfbmFtZSBpcyBub3QgTm9uZSBhbmQgbGFzdF9uYW1lID09IGZyYW1lLm5hbWUpOgorICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgY291bnQgPiAzOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnQtM30gbW9yZSB0aW1lc11cbicpCisgICAgICAgICAgICAgICAgbGFzdF9maWxlID0gZnJhbWUuZmlsZW5hbWUKKyAgICAgICAgICAgICAgICBsYXN0X2xpbmUgPSBmcmFtZS5saW5lbm8KKyAgICAgICAgICAgICAgICBsYXN0X25hbWUgPSBmcmFtZS5uYW1lCisgICAgICAgICAgICAgICAgY291bnQgPSAwCisgICAgICAgICAgICBpZiBjb3VudCA+PSAzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICByb3cgPSBbXQogICAgICAgICAgICAgcm93LmFwcGVuZCgnICBGaWxlICJ7fSIsIGxpbmUge30sIGluIHt9XG4nLmZvcm1hdCgKICAgICAgICAgICAgICAgICBmcmFtZS5maWxlbmFtZSwgZnJhbWUubGluZW5vLCBmcmFtZS5uYW1lKSkKQEAgLTM5Nyw2ICs0MTgsOCBAQAogICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzb3J0ZWQoZnJhbWUubG9jYWxzLml0ZW1zKCkpOgogICAgICAgICAgICAgICAgICAgICByb3cuYXBwZW5kKCcgICAge25hbWV9ID0ge3ZhbHVlfVxuJy5mb3JtYXQobmFtZT1uYW1lLCB2YWx1ZT12YWx1ZSkpCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcnLmpvaW4ocm93KSkKKyAgICAgICAgaWYgY291bnQgPiAzOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmJyAgW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50LTN9IG1vcmUgdGltZXNdXG4nKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKIApAQCAtNDg3LDEwICs1MTAsOSBAQAogICAgICAgICAgICAgc2VsZi5fbG9hZF9saW5lcygpCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZnJvbV9leGNlcHRpb24oc2VsZiwgZXhjLCAqYXJncywgKiprd2FyZ3MpOgorICAgIGRlZiBmcm9tX2V4Y2VwdGlvbihjbHMsIGV4YywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiQ3JlYXRlIGEgVHJhY2ViYWNrRXhjZXB0aW9uIGZyb20gYW4gZXhjZXB0aW9uLiIiIgotICAgICAgICByZXR1cm4gVHJhY2ViYWNrRXhjZXB0aW9uKAotICAgICAgICAgICAgdHlwZShleGMpLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjbHModHlwZShleGMpLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgX2xvYWRfbGluZXMoc2VsZik6CiAgICAgICAgICIiIlByaXZhdGUgQVBJLiBmb3JjZSBhbGwgbGluZXMgaW4gdGhlIHN0YWNrIHRvIGJlIGxvYWRlZC4iIiIKZGlmZiAtLWdpdCBhL0xpYi90cmFjZW1hbGxvYy5weSBiL0xpYi90cmFjZW1hbGxvYy5weQppbmRleCA2Mjg4ZGE4Li43NWIzOTE4IDEwMDY0NAotLS0gYS9MaWIvdHJhY2VtYWxsb2MucHkKKysrIGIvTGliL3RyYWNlbWFsbG9jLnB5CkBAIC0yNDQsMTcgKzI0NCwyMSBAQAogICAgIF9fc2xvdHNfXyA9ICgiX3RyYWNlIiwpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdHJhY2UpOgotICAgICAgICAjIHRyYWNlIGlzIGEgdHVwbGU6IChzaXplLCB0cmFjZWJhY2spLCBzZWUgVHJhY2ViYWNrIGNvbnN0cnVjdG9yCi0gICAgICAgICMgZm9yIHRoZSBmb3JtYXQgb2YgdGhlIHRyYWNlYmFjayB0dXBsZQorICAgICAgICAjIHRyYWNlIGlzIGEgdHVwbGU6IChkb21haW46IGludCwgc2l6ZTogaW50LCB0cmFjZWJhY2s6IHR1cGxlKS4KKyAgICAgICAgIyBTZWUgVHJhY2ViYWNrIGNvbnN0cnVjdG9yIGZvciB0aGUgZm9ybWF0IG9mIHRoZSB0cmFjZWJhY2sgdHVwbGUuCiAgICAgICAgIHNlbGYuX3RyYWNlID0gdHJhY2UKIAogICAgIEBwcm9wZXJ0eQotICAgIGRlZiBzaXplKHNlbGYpOgorICAgIGRlZiBkb21haW4oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl90cmFjZVswXQogCiAgICAgQHByb3BlcnR5CisgICAgZGVmIHNpemUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl90cmFjZVsxXQorCisgICAgQHByb3BlcnR5CiAgICAgZGVmIHRyYWNlYmFjayhzZWxmKToKLSAgICAgICAgcmV0dXJuIFRyYWNlYmFjayhzZWxmLl90cmFjZVsxXSkKKyAgICAgICAgcmV0dXJuIFRyYWNlYmFjayhzZWxmLl90cmFjZVsyXSkKIAogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgogICAgICAgICByZXR1cm4gKHNlbGYuX3RyYWNlID09IG90aGVyLl90cmFjZSkKQEAgLTI2Niw4ICsyNzAsOCBAQAogICAgICAgICByZXR1cm4gIiVzOiAlcyIgJSAoc2VsZi50cmFjZWJhY2ssIF9mb3JtYXRfc2l6ZShzZWxmLnNpemUsIEZhbHNlKSkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICgiPFRyYWNlIHNpemU9JXMsIHRyYWNlYmFjaz0lcj4iCi0gICAgICAgICAgICAgICAgJSAoX2Zvcm1hdF9zaXplKHNlbGYuc2l6ZSwgRmFsc2UpLCBzZWxmLnRyYWNlYmFjaykpCisgICAgICAgIHJldHVybiAoIjxUcmFjZSBkb21haW49JXMgc2l6ZT0lcywgdHJhY2ViYWNrPSVyPiIKKyAgICAgICAgICAgICAgICAlIChzZWxmLmRvbWFpbiwgX2Zvcm1hdF9zaXplKHNlbGYuc2l6ZSwgRmFsc2UpLCBzZWxmLnRyYWNlYmFjaykpCiAKIAogY2xhc3MgX1RyYWNlcyhTZXF1ZW5jZSk6CkBAIC0zMDIsMTkgKzMwNiwyOSBAQAogICAgIHJldHVybiBmaWxlbmFtZQogCiAKLWNsYXNzIEZpbHRlcjoKK2NsYXNzIEJhc2VGaWx0ZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluY2x1c2l2ZSk6CisgICAgICAgIHNlbGYuaW5jbHVzaXZlID0gaW5jbHVzaXZlCisKKyAgICBkZWYgX21hdGNoKHNlbGYsIHRyYWNlKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKK2NsYXNzIEZpbHRlcihCYXNlRmlsdGVyKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgaW5jbHVzaXZlLCBmaWxlbmFtZV9wYXR0ZXJuLAotICAgICAgICAgICAgICAgICBsaW5lbm89Tm9uZSwgYWxsX2ZyYW1lcz1GYWxzZSk6CisgICAgICAgICAgICAgICAgIGxpbmVubz1Ob25lLCBhbGxfZnJhbWVzPUZhbHNlLCBkb21haW49Tm9uZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oaW5jbHVzaXZlKQogICAgICAgICBzZWxmLmluY2x1c2l2ZSA9IGluY2x1c2l2ZQogICAgICAgICBzZWxmLl9maWxlbmFtZV9wYXR0ZXJuID0gX25vcm1hbGl6ZV9maWxlbmFtZShmaWxlbmFtZV9wYXR0ZXJuKQogICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwogICAgICAgICBzZWxmLmFsbF9mcmFtZXMgPSBhbGxfZnJhbWVzCisgICAgICAgIHNlbGYuZG9tYWluID0gZG9tYWluCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgZmlsZW5hbWVfcGF0dGVybihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVuYW1lX3BhdHRlcm4KIAotICAgIGRlZiBfX21hdGNoX2ZyYW1lKHNlbGYsIGZpbGVuYW1lLCBsaW5lbm8pOgorICAgIGRlZiBfbWF0Y2hfZnJhbWVfaW1wbChzZWxmLCBmaWxlbmFtZSwgbGluZW5vKToKICAgICAgICAgZmlsZW5hbWUgPSBfbm9ybWFsaXplX2ZpbGVuYW1lKGZpbGVuYW1lKQogICAgICAgICBpZiBub3QgZm5tYXRjaC5mbm1hdGNoKGZpbGVuYW1lLCBzZWxmLl9maWxlbmFtZV9wYXR0ZXJuKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMzI0LDExICszMzgsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAobGluZW5vID09IHNlbGYubGluZW5vKQogCiAgICAgZGVmIF9tYXRjaF9mcmFtZShzZWxmLCBmaWxlbmFtZSwgbGluZW5vKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19tYXRjaF9mcmFtZShmaWxlbmFtZSwgbGluZW5vKSBeIChub3Qgc2VsZi5pbmNsdXNpdmUpCisgICAgICAgIHJldHVybiBzZWxmLl9tYXRjaF9mcmFtZV9pbXBsKGZpbGVuYW1lLCBsaW5lbm8pIF4gKG5vdCBzZWxmLmluY2x1c2l2ZSkKIAogICAgIGRlZiBfbWF0Y2hfdHJhY2ViYWNrKHNlbGYsIHRyYWNlYmFjayk6CiAgICAgICAgIGlmIHNlbGYuYWxsX2ZyYW1lczoKLSAgICAgICAgICAgIGlmIGFueShzZWxmLl9fbWF0Y2hfZnJhbWUoZmlsZW5hbWUsIGxpbmVubykKKyAgICAgICAgICAgIGlmIGFueShzZWxmLl9tYXRjaF9mcmFtZV9pbXBsKGZpbGVuYW1lLCBsaW5lbm8pCiAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lLCBsaW5lbm8gaW4gdHJhY2ViYWNrKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5pbmNsdXNpdmUKICAgICAgICAgICAgIGVsc2U6CkBAIC0zMzcsNiArMzUxLDMwIEBACiAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vID0gdHJhY2ViYWNrWzBdCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fbWF0Y2hfZnJhbWUoZmlsZW5hbWUsIGxpbmVubykKIAorICAgIGRlZiBfbWF0Y2goc2VsZiwgdHJhY2UpOgorICAgICAgICBkb21haW4sIHNpemUsIHRyYWNlYmFjayA9IHRyYWNlCisgICAgICAgIHJlcyA9IHNlbGYuX21hdGNoX3RyYWNlYmFjayh0cmFjZWJhY2spCisgICAgICAgIGlmIHNlbGYuZG9tYWluIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgc2VsZi5pbmNsdXNpdmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyBhbmQgKGRvbWFpbiA9PSBzZWxmLmRvbWFpbikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyBvciAoZG9tYWluICE9IHNlbGYuZG9tYWluKQorICAgICAgICByZXR1cm4gcmVzCisKKworY2xhc3MgRG9tYWluRmlsdGVyKEJhc2VGaWx0ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpbmNsdXNpdmUsIGRvbWFpbik6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oaW5jbHVzaXZlKQorICAgICAgICBzZWxmLl9kb21haW4gPSBkb21haW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9kb21haW4KKworICAgIGRlZiBfbWF0Y2goc2VsZiwgdHJhY2UpOgorICAgICAgICBkb21haW4sIHNpemUsIHRyYWNlYmFjayA9IHRyYWNlCisgICAgICAgIHJldHVybiAoZG9tYWluID09IHNlbGYuZG9tYWluKSBeIChub3Qgc2VsZi5pbmNsdXNpdmUpCisKIAogY2xhc3MgU25hcHNob3Q6CiAgICAgIiIiCkBAIC0zNjUsMTMgKzQwMywxMiBAQAogICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkKGZwKQogCiAgICAgZGVmIF9maWx0ZXJfdHJhY2Uoc2VsZiwgaW5jbHVkZV9maWx0ZXJzLCBleGNsdWRlX2ZpbHRlcnMsIHRyYWNlKToKLSAgICAgICAgdHJhY2ViYWNrID0gdHJhY2VbMV0KICAgICAgICAgaWYgaW5jbHVkZV9maWx0ZXJzOgotICAgICAgICAgICAgaWYgbm90IGFueSh0cmFjZV9maWx0ZXIuX21hdGNoX3RyYWNlYmFjayh0cmFjZWJhY2spCisgICAgICAgICAgICBpZiBub3QgYW55KHRyYWNlX2ZpbHRlci5fbWF0Y2godHJhY2UpCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0cmFjZV9maWx0ZXIgaW4gaW5jbHVkZV9maWx0ZXJzKToKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgZXhjbHVkZV9maWx0ZXJzOgotICAgICAgICAgICAgaWYgYW55KG5vdCB0cmFjZV9maWx0ZXIuX21hdGNoX3RyYWNlYmFjayh0cmFjZWJhY2spCisgICAgICAgICAgICBpZiBhbnkobm90IHRyYWNlX2ZpbHRlci5fbWF0Y2godHJhY2UpCiAgICAgICAgICAgICAgICAgICAgZm9yIHRyYWNlX2ZpbHRlciBpbiBleGNsdWRlX2ZpbHRlcnMpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMzc5LDggKzQxNiw4IEBACiAgICAgZGVmIGZpbHRlcl90cmFjZXMoc2VsZiwgZmlsdGVycyk6CiAgICAgICAgICIiIgogICAgICAgICBDcmVhdGUgYSBuZXcgU25hcHNob3QgaW5zdGFuY2Ugd2l0aCBhIGZpbHRlcmVkIHRyYWNlcyBzZXF1ZW5jZSwgZmlsdGVycwotICAgICAgICBpcyBhIGxpc3Qgb2YgRmlsdGVyIGluc3RhbmNlcy4gIElmIGZpbHRlcnMgaXMgYW4gZW1wdHkgbGlzdCwgcmV0dXJuIGEKLSAgICAgICAgbmV3IFNuYXBzaG90IGluc3RhbmNlIHdpdGggYSBjb3B5IG9mIHRoZSB0cmFjZXMuCisgICAgICAgIGlzIGEgbGlzdCBvZiBGaWx0ZXIgb3IgRG9tYWluRmlsdGVyIGluc3RhbmNlcy4gIElmIGZpbHRlcnMgaXMgYW4gZW1wdHkKKyAgICAgICAgbGlzdCwgcmV0dXJuIGEgbmV3IFNuYXBzaG90IGluc3RhbmNlIHdpdGggYSBjb3B5IG9mIHRoZSB0cmFjZXMuCiAgICAgICAgICIiIgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWx0ZXJzLCBJdGVyYWJsZSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbHRlcnMgbXVzdCBiZSBhIGxpc3Qgb2YgZmlsdGVycywgbm90ICVzIgpAQCAtNDEyLDcgKzQ0OSw3IEBACiAgICAgICAgIHRyYWNlYmFja3MgPSB7fQogICAgICAgICBpZiBub3QgY3VtdWxhdGl2ZToKICAgICAgICAgICAgIGZvciB0cmFjZSBpbiBzZWxmLnRyYWNlcy5fdHJhY2VzOgotICAgICAgICAgICAgICAgIHNpemUsIHRyYWNlX3RyYWNlYmFjayA9IHRyYWNlCisgICAgICAgICAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZV90cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrc1t0cmFjZV90cmFjZWJhY2tdCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNDMzLDcgKzQ3MCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGN1bXVsYXRpdmUgc3RhdGlzdGljcwogICAgICAgICAgICAgZm9yIHRyYWNlIGluIHNlbGYudHJhY2VzLl90cmFjZXM6Ci0gICAgICAgICAgICAgICAgc2l6ZSwgdHJhY2VfdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgICAgICAgICBkb21haW4sIHNpemUsIHRyYWNlX3RyYWNlYmFjayA9IHRyYWNlCiAgICAgICAgICAgICAgICAgZm9yIGZyYW1lIGluIHRyYWNlX3RyYWNlYmFjazoKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrID0gdHJhY2ViYWNrc1tmcmFtZV0KZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGVkZW1vL19fbWFpbl9fLnB5IGIvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkKaW5kZXggNzExZDBhYi4uMGE1ODMzMiAxMDA2NDQKLS0tIGEvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkKKysrIGIvTGliL3R1cnRsZWRlbW8vX19tYWluX18ucHkKQEAgLTg5LDEzICs4OSwxMiBAQAogaW1wb3J0IG9zCiAKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliLkNvbG9yRGVsZWdhdG9yIGltcG9ydCBDb2xvckRlbGVnYXRvciwgY29sb3JfY29uZmlnCi1mcm9tIGlkbGVsaWIuUGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgotZnJvbSBpZGxlbGliLnRleHRWaWV3IGltcG9ydCB2aWV3X3RleHQKK2Zyb20gaWRsZWxpYi5jb2xvcml6ZXIgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKK2Zyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCitmcm9tIGlkbGVsaWIudGV4dHZpZXcgaW1wb3J0IHZpZXdfdGV4dAogZnJvbSB0dXJ0bGVkZW1vIGltcG9ydCBfX2RvY19fIGFzIGFib3V0X3R1cnRsZWRlbW8KIAogaW1wb3J0IHR1cnRsZQotaW1wb3J0IHRpbWUKIAogZGVtb19kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKIGRhcndpbiA9IHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJwpkaWZmIC0tZ2l0IGEvTGliL3R1cnRsZWRlbW8vYnl0ZWRlc2lnbi5weSBiL0xpYi90dXJ0bGVkZW1vL2J5dGVkZXNpZ24ucHkKaW5kZXggNjRiMWQ3ZC4uYjNiMDk1YiAxMDA3NTUKLS0tIGEvTGliL3R1cnRsZWRlbW8vYnl0ZWRlc2lnbi5weQorKysgYi9MaWIvdHVydGxlZGVtby9ieXRlZGVzaWduLnB5CkBAIC0yMiw3ICsyMiw2IEBACiBtb2RlIGFzIGZhc3QgYXMgcG9zc2libGUuCiAiIiIKIAotaW1wb3J0IG1hdGgKIGZyb20gdHVydGxlIGltcG9ydCBUdXJ0bGUsIG1haW5sb29wCiBmcm9tIHRpbWUgaW1wb3J0IGNsb2NrCiAKZGlmZiAtLWdpdCBhL0xpYi90dXJ0bGVkZW1vL3BsYW5ldF9hbmRfbW9vbi5weSBiL0xpYi90dXJ0bGVkZW1vL3BsYW5ldF9hbmRfbW9vbi5weQppbmRleCAyNmFiZmRiLi4wMjFmZjk5IDEwMDc1NQotLS0gYS9MaWIvdHVydGxlZGVtby9wbGFuZXRfYW5kX21vb24ucHkKKysrIGIvTGliL3R1cnRsZWRlbW8vcGxhbmV0X2FuZF9tb29uLnB5CkBAIC0xOCw3ICsxOCw2IEBACiAKICIiIgogZnJvbSB0dXJ0bGUgaW1wb3J0IFNoYXBlLCBUdXJ0bGUsIG1haW5sb29wLCBWZWMyRCBhcyBWZWMKLWZyb20gdGltZSBpbXBvcnQgc2xlZXAKIAogRyA9IDgKIApkaWZmIC0tZ2l0IGEvTGliL3R5cGVzLnB5IGIvTGliL3R5cGVzLnB5CmluZGV4IDQ4ODkxY2QuLmQ4ZDg0NzAgMTAwNjQ0Ci0tLSBhL0xpYi90eXBlcy5weQorKysgYi9MaWIvdHlwZXMucHkKQEAgLTI0LDYgKzI0LDExIEBACiBDb3JvdXRpbmVUeXBlID0gdHlwZShfYykKIF9jLmNsb3NlKCkgICMgUHJldmVudCBSZXNvdXJjZVdhcm5pbmcKIAorYXN5bmMgZGVmIF9hZygpOgorICAgIHlpZWxkCitfYWcgPSBfYWcoKQorQXN5bmNHZW5lcmF0b3JUeXBlID0gdHlwZShfYWcpCisKIGNsYXNzIF9DOgogICAgIGRlZiBfbShzZWxmKTogcGFzcwogTWV0aG9kVHlwZSA9IHR5cGUoX0MoKS5fbSkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tb2NrLnB5IGIvTGliL3VuaXR0ZXN0L21vY2sucHkKaW5kZXggNjY5ODkwYS4uZjEzNDkxOSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L21vY2sucHkKKysrIGIvTGliL3VuaXR0ZXN0L21vY2sucHkKQEAgLTYwLDE4ICs2MCw2IEBACiAgICAgKQogCiAKLWNsYXNzIF9zbG90dGVkKG9iamVjdCk6Ci0gICAgX19zbG90c19fID0gWydhJ10KLQotCi0jIERvIG5vdCB1c2UgdGhpcyB0dXBsZS4gIEl0IHdhcyBuZXZlciBkb2N1bWVudGVkIGFzIGEgcHVibGljIEFQSS4KLSMgSXQgd2lsbCBiZSByZW1vdmVkLiAgSXQgaGFzIG5vIG9idmlvdXMgc2lnbnMgb2YgdXNlcnMgb24gZ2l0aHViLgotRGVzY3JpcHRvclR5cGVzID0gKAotICAgIHR5cGUoX3Nsb3R0ZWQuYSksCi0gICAgcHJvcGVydHksCi0pCi0KLQogZGVmIF9nZXRfc2lnbmF0dXJlX29iamVjdChmdW5jLCBhc19pbnN0YW5jZSwgZWF0X3NlbGYpOgogICAgICIiIgogICAgIEdpdmVuIGFuIGFyYml0cmFyeSwgcG9zc2libHkgY2FsbGFibGUgb2JqZWN0LCB0cnkgdG8gY3JlYXRlIGEgc3VpdGFibGUKQEAgLTIwNSw2ICsxOTMsMTIgQEAKIAogICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gbW9jay5hc3NlcnRfY2FsbGVkKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X25vdF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X25vdF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2UoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlKCphcmdzLCAqKmt3YXJncykKICAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQogICAgIGRlZiBhc3NlcnRfaGFzX2NhbGxzKCphcmdzLCAqKmt3YXJncyk6CkBAIC0yMzUsNiArMjI5LDkgQEAKICAgICBmdW5jb3B5LmFzc2VydF9oYXNfY2FsbHMgPSBhc3NlcnRfaGFzX2NhbGxzCiAgICAgZnVuY29weS5hc3NlcnRfYW55X2NhbGwgPSBhc3NlcnRfYW55X2NhbGwKICAgICBmdW5jb3B5LnJlc2V0X21vY2sgPSByZXNldF9tb2NrCisgICAgZnVuY29weS5hc3NlcnRfY2FsbGVkID0gYXNzZXJ0X2NhbGxlZAorICAgIGZ1bmNvcHkuYXNzZXJ0X25vdF9jYWxsZWQgPSBhc3NlcnRfbm90X2NhbGxlZAorICAgIGZ1bmNvcHkuYXNzZXJ0X2NhbGxlZF9vbmNlID0gYXNzZXJ0X2NhbGxlZF9vbmNlCiAKICAgICBtb2NrLl9tb2NrX2RlbGVnYXRlID0gZnVuY29weQogCkBAIC01MjUsNyArNTIyLDcgQEAKICAgICBzaWRlX2VmZmVjdCA9IHByb3BlcnR5KF9fZ2V0X3NpZGVfZWZmZWN0LCBfX3NldF9zaWRlX2VmZmVjdCkKIAogCi0gICAgZGVmIHJlc2V0X21vY2soc2VsZiwgdmlzaXRlZD1Ob25lKToKKyAgICBkZWYgcmVzZXRfbW9jayhzZWxmLCAgdmlzaXRlZD1Ob25lLCosIHJldHVybl92YWx1ZT1GYWxzZSwgc2lkZV9lZmZlY3Q9RmFsc2UpOgogICAgICAgICAiUmVzdG9yZSB0aGUgbW9jayBvYmplY3QgdG8gaXRzIGluaXRpYWwgc3RhdGUuIgogICAgICAgICBpZiB2aXNpdGVkIGlzIE5vbmU6CiAgICAgICAgICAgICB2aXNpdGVkID0gW10KQEAgLTU0MCw2ICs1MzcsMTEgQEAKICAgICAgICAgc2VsZi5jYWxsX2FyZ3NfbGlzdCA9IF9DYWxsTGlzdCgpCiAgICAgICAgIHNlbGYubWV0aG9kX2NhbGxzID0gX0NhbGxMaXN0KCkKIAorICAgICAgICBpZiByZXR1cm5fdmFsdWU6CisgICAgICAgICAgICBzZWxmLl9tb2NrX3JldHVybl92YWx1ZSA9IERFRkFVTFQKKyAgICAgICAgaWYgc2lkZV9lZmZlY3Q6CisgICAgICAgICAgICBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0ID0gTm9uZQorCiAgICAgICAgIGZvciBjaGlsZCBpbiBzZWxmLl9tb2NrX2NoaWxkcmVuLnZhbHVlcygpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjaGlsZCwgX1NwZWNTdGF0ZSk6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTc3NCw2ICs3NzYsMjQgQEAKICAgICAgICAgICAgICAgICAgICAoc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJywgc2VsZi5jYWxsX2NvdW50KSkKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKIAorICAgIGRlZiBhc3NlcnRfY2FsbGVkKF9tb2NrX3NlbGYpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIHNlbGYuY2FsbF9jb3VudCA9PSAwOgorICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCAnJXMnIHRvIGhhdmUgYmVlbiBjYWxsZWQuIiAlCisgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19uYW1lIG9yICdtb2NrJykKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2UoX21vY2tfc2VsZik6CisgICAgICAgICIiImFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgb25seSBvbmNlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgbm90IHNlbGYuY2FsbF9jb3VudCA9PSAxOgorICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCAnJXMnIHRvIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4gQ2FsbGVkICVzIHRpbWVzLiIgJQorICAgICAgICAgICAgICAgICAgIChzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snLCBzZWxmLmNhbGxfY291bnQpKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQorCiAgICAgZGVmIGFzc2VydF9jYWxsZWRfd2l0aChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBhcmd1bWVudHMuCiAKQEAgLTgyMiw3ICs4NDIsNyBAQAogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgbm90IGluIGFsbF9jYWxsczoKICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKICAgICAgICAgICAgICAgICAgICAgJ0NhbGxzIG5vdCBmb3VuZC5cbkV4cGVjdGVkOiAlclxuJwotICAgICAgICAgICAgICAgICAgICAnQWN0dWFsOiAlcicgJSAoY2FsbHMsIHNlbGYubW9ja19jYWxscykKKyAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbDogJXInICUgKF9DYWxsTGlzdChjYWxscyksIHNlbGYubW9ja19jYWxscykKICAgICAgICAgICAgICAgICApIGZyb20gY2F1c2UKICAgICAgICAgICAgIHJldHVybgogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvcnVubmVyLnB5IGIvTGliL3VuaXR0ZXN0L3J1bm5lci5weQppbmRleCAyMTEyMjYyLi4yYzVlYTRhIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvcnVubmVyLnB5CisrKyBiL0xpYi91bml0dGVzdC9ydW5uZXIucHkKQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYud2FybmluZ3MgaW4gWydkZWZhdWx0JywgJ2Fsd2F5cyddOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnbW9kdWxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nUGxlYXNlIHVzZSBhc3NlcnRcdysgaW5zdGVhZC4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9cidQbGVhc2UgdXNlIGFzc2VydFx3KyBpbnN0ZWFkLicpCiAgICAgICAgICAgICBzdGFydFRpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgc3RhcnRUZXN0UnVuID0gZ2V0YXR0cihyZXN1bHQsICdzdGFydFRlc3RSdW4nLCBOb25lKQogICAgICAgICAgICAgaWYgc3RhcnRUZXN0UnVuIGlzIG5vdCBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CmluZGV4IGU2ZTJiYzIuLjFiMGU4MzMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKQEAgLTI0MCw3ICsyNDAsNyBAQAogICAgICAgICAjIEVycm9yIG1lc3NhZ2VzIGFyZSBtdWx0aWxpbmUgc28gbm90IHRlc3Rpbmcgb24gZnVsbCBtZXNzYWdlCiAgICAgICAgICMgYXNzZXJ0VHVwbGVFcXVhbCBhbmQgYXNzZXJ0TGlzdEVxdWFsIGRlbGVnYXRlIHRvIHRoaXMgbWV0aG9kCiAgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydFNlcXVlbmNlRXF1YWwnLCAoW10sIFtOb25lXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJcKyBcW05vbmVcXSQiLCAiXm9vcHMkIiwgciJcKyBcW05vbmVcXSQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyIlwrIFxbTm9uZVxdJCIsICJeb29wcyQiLCByIlwrIFxbTm9uZVxdJCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiXCsgXFtOb25lXF0gOiBvb3BzJCJdKQogCiAgICAgZGVmIHRlc3RBc3NlcnRTZXRFcXVhbChzZWxmKToKQEAgLTI1MCwyMSArMjUwLDIxIEBACiAKICAgICBkZWYgdGVzdEFzc2VydEluKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnRJbicsIChOb25lLCBbXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeTm9uZSBub3QgZm91bmQgaW4gXFtcXSQnLCAiXm9vcHMkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Ob25lIG5vdCBmb3VuZCBpbiBcW1xdJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSBub3QgZm91bmQgaW4gXFtcXSA6IG9vcHMkJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3InXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywgIl5vb3BzJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXk5vbmUgbm90IGZvdW5kIGluIFxbXF0kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcideTm9uZSBub3QgZm91bmQgaW4gXFtcXSA6IG9vcHMkJ10pCiAKICAgICBkZWYgdGVzdEFzc2VydE5vdEluKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzKCdhc3NlcnROb3RJbicsIChOb25lLCBbTm9uZV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsICJeb29wcyQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXk5vbmUgdW5leHBlY3RlZGx5IGZvdW5kIGluIFxbTm9uZVxdJCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0gOiBvb3BzJCddKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyJ15Ob25lIHVuZXhwZWN0ZWRseSBmb3VuZCBpbiBcW05vbmVcXSQnLCAiXm9vcHMkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcideTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcideTm9uZSB1bmV4cGVjdGVkbHkgZm91bmQgaW4gXFtOb25lXF0gOiBvb3BzJCddKQogCiAgICAgZGVmIHRlc3RBc3NlcnREaWN0RXF1YWwoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXMoJ2Fzc2VydERpY3RFcXVhbCcsICh7fSwgeydrZXknOiAndmFsdWUnfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9JCIsICJeb29wcyQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXCsgXHsna2V5JzogJ3ZhbHVlJ1x9JCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcKyBceydrZXknOiAndmFsdWUnXH0gOiBvb3BzJCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlwrIFx7J2tleSc6ICd2YWx1ZSdcfSA6IG9vcHMkIl0pCiAKICAgICBkZWYgdGVzdEFzc2VydERpY3RDb250YWluc1N1YnNldChzZWxmKToKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQppbmRleCA0Yjk3ODgyLi5iMmY5Yzg4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weQpAQCAtMzkwLDcgKzM5MCw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nKQogICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBzdWl0ZSkKICAgICAgICAgZXhwZWN0ZWQgPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjICgpIC8vIgotICAgICAgICBleHBlY3RlZF9yZWdleCA9ICJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyBcKFwpIC8vIgogICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpAQCAtNTAyLDcgKzUwMiw3IEBACiAgICAgICAgIHN1aXRlID0gbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdhYmMgKCkgLy8nLCB1bml0dGVzdCkKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgc3VpdGUpCiAgICAgICAgIGV4cGVjdGVkID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyAoKSAvLyciCi0gICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKKyAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSByIm1vZHVsZSAndW5pdHRlc3QnIGhhcyBubyBhdHRyaWJ1dGUgJ2FiYyBcKFwpIC8vJyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCBlcnJvciwKICAgICAgICAgICAgICdtaXNzaW5nIGVycm9yIHN0cmluZyBpbiAlcicgJSBlcnJvcikKQEAgLTgwOSw3ICs4MDksNyBAQAogICAgICAgICBzdWl0ZSA9IGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydhYmMgKCkgLy8nXSkKICAgICAgICAgZXJyb3IsIHRlc3QgPSBzZWxmLmNoZWNrX2RlZmVycmVkX2Vycm9yKGxvYWRlciwgbGlzdChzdWl0ZSlbMF0pCiAgICAgICAgIGV4cGVjdGVkID0gIkZhaWxlZCB0byBpbXBvcnQgdGVzdCBtb2R1bGU6IGFiYyAoKSAvLyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAiRmFpbGVkIHRvIGltcG9ydCB0ZXN0IG1vZHVsZTogYWJjIFwoXCkgLy8iCisgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gciJGYWlsZWQgdG8gaW1wb3J0IHRlc3QgbW9kdWxlOiBhYmMgXChcKSAvLyIKICAgICAgICAgc2VsZi5hc3NlcnRJbigKICAgICAgICAgICAgIGV4cGVjdGVkLCAgZXJyb3IsCiAgICAgICAgICAgICAnbWlzc2luZyBlcnJvciBzdHJpbmcgaW4gJXInICUgZXJyb3IpCkBAIC05MjgsNyArOTI4LDcgQEAKICAgICAgICAgc3VpdGUgPSBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKFsnYWJjICgpIC8vJ10sIHVuaXR0ZXN0KQogICAgICAgICBlcnJvciwgdGVzdCA9IHNlbGYuY2hlY2tfZGVmZXJyZWRfZXJyb3IobG9hZGVyLCBsaXN0KHN1aXRlKVswXSkKICAgICAgICAgZXhwZWN0ZWQgPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjICgpIC8vJyIKLSAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSAibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjIFwoXCkgLy8nIgorICAgICAgICBleHBlY3RlZF9yZWdleCA9IHIibW9kdWxlICd1bml0dGVzdCcgaGFzIG5vIGF0dHJpYnV0ZSAnYWJjIFwoXCkgLy8nIgogICAgICAgICBzZWxmLmFzc2VydEluKAogICAgICAgICAgICAgZXhwZWN0ZWQsIGVycm9yLAogICAgICAgICAgICAgJ21pc3NpbmcgZXJyb3Igc3RyaW5nIGluICVyJyAlIGVycm9yKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkKaW5kZXggZjQ3Mzg3OS4uMjA1NDMxYSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svc3VwcG9ydC5weQorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CkBAIC0xLDUgKzEsMyBAQAotaW1wb3J0IHN5cwotCiBkZWYgaXNfaW5zdGFuY2Uob2JqLCBrbGFzcyk6CiAgICAgIiIiVmVyc2lvbiBvZiBpc19pbnN0YW5jZSB0aGF0IGRvZXNuJ3QgYWNjZXNzIF9fY2xhc3NfXyIiIgogICAgIHJldHVybiBpc3N1YmNsYXNzKHR5cGUob2JqKSwga2xhc3MpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weQppbmRleCBiYjliOTU2Li4yNDU2OWI1IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bWFnaWNtZXRob2RzLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKQEAgLTEsNSArMSw0IEBACiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbnNwZWN0CiBpbXBvcnQgc3lzCiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2ssIE1hZ2ljTW9jaywgX21hZ2ljcwogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CmluZGV4IDVmODJiODIuLmIwN2E3Y2MgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3Rtb2NrLnB5CkBAIC0xMjM5LDYgKzEyMzksMjcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CiAgICAgICAgICAgICBtLmhlbGxvLmFzc2VydF9ub3RfY2FsbGVkKCkKIAorICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWQoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWQoKQorICAgICAgICBtLmhlbGxvKCkKKyAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkKCkKKworICAgICAgICBtLmhlbGxvKCkKKyAgICAgICAgbS5oZWxsby5hc3NlcnRfY2FsbGVkKCkKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfb25jZShzZWxmKToKKyAgICAgICAgbSA9IE1vY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgICAgICAgbS5oZWxsbygpCisgICAgICAgIG0uaGVsbG8uYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKworICAgICAgICBtLmhlbGxvKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBtLmhlbGxvLmFzc2VydF9jYWxsZWRfb25jZSgpCisKICAgICAjSXNzdWUyMTI1NiBwcmludG91dCBvZiBrZXl3b3JkIGFyZ3Mgc2hvdWxkIGJlIGluIGRldGVybWluaXN0aWMgb3JkZXIKICAgICBkZWYgdGVzdF9zb3J0ZWRfY2FsbF9zaWduYXR1cmUoc2VsZik6CiAgICAgICAgIG0gPSBNb2NrKCkKQEAgLTEyNTYsNiArMTI3NywyNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzWzBdLCBjKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzWzFdLCBpKQogCisgICAgZGVmIHRlc3RfcmVzZXRfcmV0dXJuX3NpZGVlZmZlY3Qoc2VsZik6CisgICAgICAgIG0gPSBNb2NrKHJldHVybl92YWx1ZT0xMCwgc2lkZV9lZmZlY3Q9WzIsM10pCisgICAgICAgIG0ucmVzZXRfbW9jayhyZXR1cm5fdmFsdWU9VHJ1ZSwgc2lkZV9lZmZlY3Q9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG0ucmV0dXJuX3ZhbHVlLCBNb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2lkZV9lZmZlY3QsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yZXNldF9yZXR1cm4oc2VsZik6CisgICAgICAgIG0gPSBNb2NrKHJldHVybl92YWx1ZT0xMCwgc2lkZV9lZmZlY3Q9WzIsM10pCisgICAgICAgIG0ucmVzZXRfbW9jayhyZXR1cm5fdmFsdWU9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG0ucmV0dXJuX3ZhbHVlLCBNb2NrKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG0uc2lkZV9lZmZlY3QsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yZXNldF9zaWRlZWZmZWN0KHNlbGYpOgorICAgICAgICBtID0gTW9jayhyZXR1cm5fdmFsdWU9MTAsIHNpZGVfZWZmZWN0PVsyLDNdKQorICAgICAgICBtLnJlc2V0X21vY2soc2lkZV9lZmZlY3Q9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJldHVybl92YWx1ZSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zaWRlX2VmZmVjdCwgTm9uZSkKKwogICAgIGRlZiB0ZXN0X21vY2tfYWRkX3NwZWMoc2VsZik6CiAgICAgICAgIGNsYXNzIF9PbmUob2JqZWN0KToKICAgICAgICAgICAgIG9uZSA9IDEKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQppbmRleCBkZmNlMzY5Li5mZTRlY2VmIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0cGF0Y2gucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CkBAIC0xMCw5ICsxMCw5IEBACiBmcm9tIHVuaXR0ZXN0LnRlc3QudGVzdG1vY2suc3VwcG9ydCBpbXBvcnQgU29tZUNsYXNzLCBpc19pbnN0YW5jZQogCiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICgKLSAgICBOb25DYWxsYWJsZU1vY2ssIENhbGxhYmxlTWl4aW4sIHBhdGNoLCBzZW50aW5lbCwKKyAgICBOb25DYWxsYWJsZU1vY2ssIENhbGxhYmxlTWl4aW4sIHNlbnRpbmVsLAogICAgIE1hZ2ljTW9jaywgTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIHBhdGNoLCBfcGF0Y2gsCi0gICAgREVGQVVMVCwgY2FsbCwgX2dldF90YXJnZXQsIF9wYXRjaAorICAgIERFRkFVTFQsIGNhbGwsIF9nZXRfdGFyZ2V0CiApCiAKIApAQCAtOTY5LDggKzk2OSwxNCBAQAogICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICBAcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBhdXRvc3BlYz1UcnVlKQogICAgICAgICBkZWYgdGVzdChtb2NrKToKKyAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9ub3RfY2FsbGVkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWRfb25jZSkKICAgICAgICAgICAgIGZ1bmN0aW9uKDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgZnVuY3Rpb24uYXNzZXJ0X25vdF9jYWxsZWQpCiAgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIGZ1bmN0aW9uLmFzc2VydF9jYWxsZWQoKQorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF9vbmNlKCkKICAgICAgICAgICAgIGZ1bmN0aW9uKDIsIDMpCiAgICAgICAgICAgICBmdW5jdGlvbi5hc3NlcnRfY2FsbGVkX3dpdGgoMiwgMykKIApkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9wYXJzZS5weSBiL0xpYi91cmxsaWIvcGFyc2UucHkKaW5kZXggNTY2ZmJmNy4uOTU4NzY3YSAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9wYXJzZS5weQorKysgYi9MaWIvdXJsbGliL3BhcnNlLnB5CkBAIC0xNTcsOSArMTU3LDggQEAKICAgICAgICAgcG9ydCA9IHNlbGYuX2hvc3RpbmZvWzFdCiAgICAgICAgIGlmIHBvcnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBwb3J0ID0gaW50KHBvcnQsIDEwKQotICAgICAgICAgICAgIyBSZXR1cm4gTm9uZSBvbiBhbiBpbGxlZ2FsIHBvcnQKICAgICAgICAgICAgIGlmIG5vdCAoIDAgPD0gcG9ydCA8PSA2NTUzNSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQb3J0IG91dCBvZiByYW5nZSAwLTY1NTM1IikKICAgICAgICAgcmV0dXJuIHBvcnQKIAogCkBAIC0yMjYsOCArMjI1LDcxIEBACiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCiAKIF9EZWZyYWdSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgnRGVmcmFnUmVzdWx0JywgJ3VybCBmcmFnbWVudCcpCi1fU3BsaXRSZXN1bHRCYXNlID0gbmFtZWR0dXBsZSgnU3BsaXRSZXN1bHQnLCAnc2NoZW1lIG5ldGxvYyBwYXRoIHF1ZXJ5IGZyYWdtZW50JykKLV9QYXJzZVJlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKCdQYXJzZVJlc3VsdCcsICdzY2hlbWUgbmV0bG9jIHBhdGggcGFyYW1zIHF1ZXJ5IGZyYWdtZW50JykKK19TcGxpdFJlc3VsdEJhc2UgPSBuYW1lZHR1cGxlKAorICAgICdTcGxpdFJlc3VsdCcsICdzY2hlbWUgbmV0bG9jIHBhdGggcXVlcnkgZnJhZ21lbnQnKQorX1BhcnNlUmVzdWx0QmFzZSA9IG5hbWVkdHVwbGUoCisgICAgJ1BhcnNlUmVzdWx0JywgJ3NjaGVtZSBuZXRsb2MgcGF0aCBwYXJhbXMgcXVlcnkgZnJhZ21lbnQnKQorCitfRGVmcmFnUmVzdWx0QmFzZS5fX2RvY19fID0gIiIiCitEZWZyYWdSZXN1bHQodXJsLCBmcmFnbWVudCkKKworQSAyLXR1cGxlIHRoYXQgY29udGFpbnMgdGhlIHVybCB3aXRob3V0IGZyYWdtZW50IGlkZW50aWZpZXIgYW5kIHRoZSBmcmFnbWVudAoraWRlbnRpZmllciBhcyBhIHNlcGFyYXRlIGFyZ3VtZW50LgorIiIiCisKK19EZWZyYWdSZXN1bHRCYXNlLnVybC5fX2RvY19fID0gIiIiVGhlIFVSTCB3aXRoIG5vIGZyYWdtZW50IGlkZW50aWZpZXIuIiIiCisKK19EZWZyYWdSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18gPSAiIiIKK0ZyYWdtZW50IGlkZW50aWZpZXIgc2VwYXJhdGVkIGZyb20gVVJMLCB0aGF0IGFsbG93cyBpbmRpcmVjdCBpZGVudGlmaWNhdGlvbiBvZiBhCitzZWNvbmRhcnkgcmVzb3VyY2UgYnkgcmVmZXJlbmNlIHRvIGEgcHJpbWFyeSByZXNvdXJjZSBhbmQgYWRkaXRpb25hbCBpZGVudGlmeWluZworaW5mb3JtYXRpb24uCisiIiIKKworX1NwbGl0UmVzdWx0QmFzZS5fX2RvY19fID0gIiIiCitTcGxpdFJlc3VsdChzY2hlbWUsIG5ldGxvYywgcGF0aCwgcXVlcnksIGZyYWdtZW50KQorCitBIDUtdHVwbGUgdGhhdCBjb250YWlucyB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMgb2YgYSBVUkwuIFNpbWlsYXIgdG8KK1BhcnNlUmVzdWx0LCBidXQgZG9lcyBub3Qgc3BsaXQgcGFyYW1zLgorIiIiCisKK19TcGxpdFJlc3VsdEJhc2Uuc2NoZW1lLl9fZG9jX18gPSAiIiJTcGVjaWZpZXMgVVJMIHNjaGVtZSBmb3IgdGhlIHJlcXVlc3QuIiIiCisKK19TcGxpdFJlc3VsdEJhc2UubmV0bG9jLl9fZG9jX18gPSAiIiIKK05ldHdvcmsgbG9jYXRpb24gd2hlcmUgdGhlIHJlcXVlc3QgaXMgbWFkZSB0by4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLnBhdGguX19kb2NfXyA9ICIiIgorVGhlIGhpZXJhcmNoaWNhbCBwYXRoLCBzdWNoIGFzIHRoZSBwYXRoIHRvIGEgZmlsZSB0byBkb3dubG9hZC4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLnF1ZXJ5Ll9fZG9jX18gPSAiIiIKK1RoZSBxdWVyeSBjb21wb25lbnQsIHRoYXQgY29udGFpbnMgbm9uLWhpZXJhcmNoaWNhbCBkYXRhLCB0aGF0IGFsb25nIHdpdGggZGF0YQoraW4gcGF0aCBjb21wb25lbnQsIGlkZW50aWZpZXMgYSByZXNvdXJjZSBpbiB0aGUgc2NvcGUgb2YgVVJJJ3Mgc2NoZW1lIGFuZAorbmV0d29yayBsb2NhdGlvbi4KKyIiIgorCitfU3BsaXRSZXN1bHRCYXNlLmZyYWdtZW50Ll9fZG9jX18gPSAiIiIKK0ZyYWdtZW50IGlkZW50aWZpZXIsIHRoYXQgYWxsb3dzIGluZGlyZWN0IGlkZW50aWZpY2F0aW9uIG9mIGEgc2Vjb25kYXJ5IHJlc291cmNlCitieSByZWZlcmVuY2UgdG8gYSBwcmltYXJ5IHJlc291cmNlIGFuZCBhZGRpdGlvbmFsIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uLgorIiIiCisKK19QYXJzZVJlc3VsdEJhc2UuX19kb2NfXyA9ICIiIgorUGFyc2VSZXN1bHQoc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHBhcmFtcywgIHF1ZXJ5LCBmcmFnbWVudCkKKworQSA2LXR1cGxlIHRoYXQgY29udGFpbnMgY29tcG9uZW50cyBvZiBhIHBhcnNlZCBVUkwuCisiIiIKKworX1BhcnNlUmVzdWx0QmFzZS5zY2hlbWUuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2Uuc2NoZW1lLl9fZG9jX18KK19QYXJzZVJlc3VsdEJhc2UubmV0bG9jLl9fZG9jX18gPSBfU3BsaXRSZXN1bHRCYXNlLm5ldGxvYy5fX2RvY19fCitfUGFyc2VSZXN1bHRCYXNlLnBhdGguX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UucGF0aC5fX2RvY19fCitfUGFyc2VSZXN1bHRCYXNlLnBhcmFtcy5fX2RvY19fID0gIiIiCitQYXJhbWV0ZXJzIGZvciBsYXN0IHBhdGggZWxlbWVudCB1c2VkIHRvIGRlcmVmZXJlbmNlIHRoZSBVUkkgaW4gb3JkZXIgdG8gcHJvdmlkZQorYWNjZXNzIHRvIHBlcmZvcm0gc29tZSBvcGVyYXRpb24gb24gdGhlIHJlc291cmNlLgorIiIiCisKK19QYXJzZVJlc3VsdEJhc2UucXVlcnkuX19kb2NfXyA9IF9TcGxpdFJlc3VsdEJhc2UucXVlcnkuX19kb2NfXworX1BhcnNlUmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fID0gX1NwbGl0UmVzdWx0QmFzZS5mcmFnbWVudC5fX2RvY19fCisKIAogIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGFsaWFzIF9OZXRsb2NSZXN1bHRNaXhpblN0cgogIyBSZXN1bHRCYXNlIGlzIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBkb2N1bWVudGVkIEFQSSwgYnV0IGl0IGlzCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JlcXVlc3QucHkgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKaW5kZXggYTRiZjk3ZC4uNWYxNWI3NCAxMDA2NDQKLS0tIGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5CisrKyBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQpAQCAtMTM0LDEzICsxMzQsNzMgQEAKIF0KIAogIyB1c2VkIGluIFVzZXItQWdlbnQgaGVhZGVyIHNlbnQKLV9fdmVyc2lvbl9fID0gc3lzLnZlcnNpb25bOjNdCitfX3ZlcnNpb25fXyA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogCiBfb3BlbmVyID0gTm9uZQogZGVmIHVybG9wZW4odXJsLCBkYXRhPU5vbmUsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAogICAgICAgICAgICAgKiwgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRlZmF1bHQ9RmFsc2UsIGNvbnRleHQ9Tm9uZSk6CisgICAgJycnT3BlbiB0aGUgVVJMIHVybCwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhIFJlcXVlc3Qgb2JqZWN0LgorCisgICAgKmRhdGEqIG11c3QgYmUgYW4gb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIGJlIHNlbnQgdG8KKyAgICB0aGUgc2VydmVyLCBvciBOb25lIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICBTZWUgUmVxdWVzdCBmb3IKKyAgICBkZXRhaWxzLgorCisgICAgdXJsbGliLnJlcXVlc3QgbW9kdWxlIHVzZXMgSFRUUC8xLjEgYW5kIGluY2x1ZGVzIGEgIkNvbm5lY3Rpb246Y2xvc2UiCisgICAgaGVhZGVyIGluIGl0cyBIVFRQIHJlcXVlc3RzLgorCisgICAgVGhlIG9wdGlvbmFsICp0aW1lb3V0KiBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgdGltZW91dCBpbiBzZWNvbmRzIGZvcgorICAgIGJsb2NraW5nIG9wZXJhdGlvbnMgbGlrZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IChpZiBub3Qgc3BlY2lmaWVkLCB0aGUKKyAgICBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0IHNldHRpbmcgd2lsbCBiZSB1c2VkKS4gVGhpcyBvbmx5IHdvcmtzIGZvciBIVFRQLAorICAgIEhUVFBTIGFuZCBGVFAgY29ubmVjdGlvbnMuCisKKyAgICBJZiAqY29udGV4dCogaXMgc3BlY2lmaWVkLCBpdCBtdXN0IGJlIGEgc3NsLlNTTENvbnRleHQgaW5zdGFuY2UgZGVzY3JpYmluZworICAgIHRoZSB2YXJpb3VzIFNTTCBvcHRpb25zLiBTZWUgSFRUUFNDb25uZWN0aW9uIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBUaGUgb3B0aW9uYWwgKmNhZmlsZSogYW5kICpjYXBhdGgqIHBhcmFtZXRlcnMgc3BlY2lmeSBhIHNldCBvZiB0cnVzdGVkIENBCisgICAgY2VydGlmaWNhdGVzIGZvciBIVFRQUyByZXF1ZXN0cy4gY2FmaWxlIHNob3VsZCBwb2ludCB0byBhIHNpbmdsZSBmaWxlCisgICAgY29udGFpbmluZyBhIGJ1bmRsZSBvZiBDQSBjZXJ0aWZpY2F0ZXMsIHdoZXJlYXMgY2FwYXRoIHNob3VsZCBwb2ludCB0byBhCisgICAgZGlyZWN0b3J5IG9mIGhhc2hlZCBjZXJ0aWZpY2F0ZSBmaWxlcy4gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4KKyAgICBzc2wuU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoKS4KKworICAgIFRoZSAqY2FkZWZhdWx0KiBwYXJhbWV0ZXIgaXMgaWdub3JlZC4KKworICAgIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgYW4gb2JqZWN0IHdoaWNoIGNhbiB3b3JrIGFzIGEgY29udGV4dAorICAgIG1hbmFnZXIgYW5kIGhhcyBtZXRob2RzIHN1Y2ggYXMKKworICAgICogZ2V0dXJsKCkgLSByZXR1cm4gdGhlIFVSTCBvZiB0aGUgcmVzb3VyY2UgcmV0cmlldmVkLCBjb21tb25seSB1c2VkIHRvCisgICAgICBkZXRlcm1pbmUgaWYgYSByZWRpcmVjdCB3YXMgZm9sbG93ZWQKKworICAgICogaW5mbygpIC0gcmV0dXJuIHRoZSBtZXRhLWluZm9ybWF0aW9uIG9mIHRoZSBwYWdlLCBzdWNoIGFzIGhlYWRlcnMsIGluIHRoZQorICAgICAgZm9ybSBvZiBhbiBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCkgaW5zdGFuY2UgKHNlZSBRdWljayBSZWZlcmVuY2UgdG8KKyAgICAgIEhUVFAgSGVhZGVycykKKworICAgICogZ2V0Y29kZSgpIC0gcmV0dXJuIHRoZSBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSByZXNwb25zZS4gIFJhaXNlcyBVUkxFcnJvcgorICAgICAgb24gZXJyb3JzLgorCisgICAgRm9yIEhUVFAgYW5kIEhUVFBTIFVSTHMsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGh0dHAuY2xpZW50LkhUVFBSZXNwb25zZQorICAgIG9iamVjdCBzbGlnaHRseSBtb2RpZmllZC4gSW4gYWRkaXRpb24gdG8gdGhlIHRocmVlIG5ldyBtZXRob2RzIGFib3ZlLCB0aGUKKyAgICBtc2cgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIHRoZSByZWFzb24gYXR0cmlidXRlIC0tLQorICAgIHRoZSByZWFzb24gcGhyYXNlIHJldHVybmVkIGJ5IHRoZSBzZXJ2ZXIgLS0tIGluc3RlYWQgb2YgdGhlIHJlc3BvbnNlCisgICAgaGVhZGVycyBhcyBpdCBpcyBzcGVjaWZpZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIEhUVFBSZXNwb25zZS4KKworICAgIEZvciBGVFAsIGZpbGUsIGFuZCBkYXRhIFVSTHMgYW5kIHJlcXVlc3RzIGV4cGxpY2l0bHkgaGFuZGxlZCBieSBsZWdhY3kKKyAgICBVUkxvcGVuZXIgYW5kIEZhbmN5VVJMb3BlbmVyIGNsYXNzZXMsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhCisgICAgdXJsbGliLnJlc3BvbnNlLmFkZGluZm91cmwgb2JqZWN0LgorCisgICAgTm90ZSB0aGF0IE5vbmUgbWF5IGJlIHJldHVybmVkIGlmIG5vIGhhbmRsZXIgaGFuZGxlcyB0aGUgcmVxdWVzdCAodGhvdWdoCisgICAgdGhlIGRlZmF1bHQgaW5zdGFsbGVkIGdsb2JhbCBPcGVuZXJEaXJlY3RvciB1c2VzIFVua25vd25IYW5kbGVyIHRvIGVuc3VyZQorICAgIHRoaXMgbmV2ZXIgaGFwcGVucykuCisKKyAgICBJbiBhZGRpdGlvbiwgaWYgcHJveHkgc2V0dGluZ3MgYXJlIGRldGVjdGVkIChmb3IgZXhhbXBsZSwgd2hlbiBhICpfcHJveHkKKyAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBsaWtlIGh0dHBfcHJveHkgaXMgc2V0KSwgUHJveHlIYW5kbGVyIGlzIGRlZmF1bHQKKyAgICBpbnN0YWxsZWQgYW5kIG1ha2VzIHN1cmUgdGhlIHJlcXVlc3RzIGFyZSBoYW5kbGVkIHRocm91Z2ggdGhlIHByb3h5LgorCisgICAgJycnCiAgICAgZ2xvYmFsIF9vcGVuZXIKICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGVmYXVsdDoKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm4oImNhZmlsZSwgY3BhdGggYW5kIGNhZGVmYXVsdCBhcmUgZGVwcmVjYXRlZCwgdXNlIGEgIgorICAgICAgICAgICAgICAgICAgICAgICJjdXN0b20gY29udGV4dCBpbnN0ZWFkLiIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgIllvdSBjYW4ndCBwYXNzIGJvdGggY29udGV4dCBhbmQgYW55IG9mIGNhZmlsZSwgY2FwYXRoLCBhbmQgIgpAQCAtMTE3MCw2ICsxMjMwLDExIEBACiAgICAgZGVmIHNldF9odHRwX2RlYnVnbGV2ZWwoc2VsZiwgbGV2ZWwpOgogICAgICAgICBzZWxmLl9kZWJ1Z2xldmVsID0gbGV2ZWwKIAorICAgIGRlZiBfZ2V0X2NvbnRlbnRfbGVuZ3RoKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICByZXR1cm4gaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24uX2dldF9jb250ZW50X2xlbmd0aCgKKyAgICAgICAgICAgIHJlcXVlc3QuZGF0YSwKKyAgICAgICAgICAgIHJlcXVlc3QuZ2V0X21ldGhvZCgpKQorCiAgICAgZGVmIGRvX3JlcXVlc3RfKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICBob3N0ID0gcmVxdWVzdC5ob3N0CiAgICAgICAgIGlmIG5vdCBob3N0OgpAQCAtMTE3OCwyNCArMTI0MywyMiBAQAogICAgICAgICBpZiByZXF1ZXN0LmRhdGEgaXMgbm90IE5vbmU6ICAjIFBPU1QKICAgICAgICAgICAgIGRhdGEgPSByZXF1ZXN0LmRhdGEKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKLSAgICAgICAgICAgICAgICBtc2cgPSAiUE9TVCBkYXRhIHNob3VsZCBiZSBieXRlcyBvciBhbiBpdGVyYWJsZSBvZiBieXRlcy4gIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIkl0IGNhbm5vdCBiZSBvZiB0eXBlIHN0ci4iCisgICAgICAgICAgICAgICAgbXNnID0gIlBPU1QgZGF0YSBzaG91bGQgYmUgYnl0ZXMsIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAib3IgYSBmaWxlIG9iamVjdC4gSXQgY2Fubm90IGJlIG9mIHR5cGUgc3RyLiIKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKQogICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC10eXBlJyk6CiAgICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcigKICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtdHlwZScsCiAgICAgICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKQotICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC1sZW5ndGgnKToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhkYXRhKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgY29sbGVjdGlvbnMuSXRlcmFibGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29udGVudC1MZW5ndGggc2hvdWxkIGJlIHNwZWNpZmllZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgaXRlcmFibGUgZGF0YSBvZiB0eXBlICVyICVyIiAlICh0eXBlKGRhdGEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKSkKKyAgICAgICAgICAgIGlmIChub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpCisgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgcmVxdWVzdC5oYXNfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpKToKKyAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IHNlbGYuX2dldF9jb250ZW50X2xlbmd0aChyZXF1ZXN0KQorICAgICAgICAgICAgICAgIGlmIGNvbnRlbnRfbGVuZ3RoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFkZF91bnJlZGlyZWN0ZWRfaGVhZGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LWxlbmd0aCcsIHN0cihjb250ZW50X2xlbmd0aCkpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1sZW5ndGgnLCAnJWQnICUgKGxlbihtdikgKiBtdi5pdGVtc2l6ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RyYW5zZmVyLWVuY29kaW5nJywgJ2NodW5rZWQnKQogCiAgICAgICAgIHNlbF9ob3N0ID0gaG9zdAogICAgICAgICBpZiByZXF1ZXN0Lmhhc19wcm94eSgpOgpAQCAtMTI1MSw3ICsxMzE0LDggQEAKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaC5yZXF1ZXN0KHJlcS5nZXRfbWV0aG9kKCksIHJlcS5zZWxlY3RvciwgcmVxLmRhdGEsIGhlYWRlcnMpCisgICAgICAgICAgICAgICAgaC5yZXF1ZXN0KHJlcS5nZXRfbWV0aG9kKCksIHJlcS5zZWxlY3RvciwgcmVxLmRhdGEsIGhlYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPXJlcS5oYXNfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOiAjIHRpbWVvdXQgZXJyb3IKICAgICAgICAgICAgICAgICByYWlzZSBVUkxFcnJvcihlcnIpCiAgICAgICAgICAgICByID0gaC5nZXRyZXNwb25zZSgpCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5IGIvTGliL3VybGxpYi9yb2JvdHBhcnNlci5weQppbmRleCA4YjY5ZmQ5Li45ZGFiNGMxIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JvYm90cGFyc2VyLnB5CisrKyBiL0xpYi91cmxsaWIvcm9ib3RwYXJzZXIucHkKQEAgLTEwLDcgKzEwLDkgQEAKICAgICBodHRwOi8vd3d3LnJvYm90c3R4dC5vcmcvbm9yb2JvdHMtcmZjLnR4dAogIiIiCiAKLWltcG9ydCB1cmxsaWIucGFyc2UsIHVybGxpYi5yZXF1ZXN0CitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCB1cmxsaWIucGFyc2UKK2ltcG9ydCB1cmxsaWIucmVxdWVzdAogCiBfX2FsbF9fID0gWyJSb2JvdEZpbGVQYXJzZXIiXQogCkBAIC0xMjAsMTAgKzEyMiwyOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZSAhPSAwOgogICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkucnVsZWxpbmVzLmFwcGVuZChSdWxlTGluZShsaW5lWzFdLCBUcnVlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMgorICAgICAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAiY3Jhd2wtZGVsYXkiOgorICAgICAgICAgICAgICAgICAgICBpZiBzdGF0ZSAhPSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWZvcmUgdHJ5aW5nIHRvIGNvbnZlcnQgdG8gaW50IHdlIG5lZWQgdG8gbWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBzdXJlIHRoYXQgcm9ib3RzLnR4dCBoYXMgdmFsaWQgc3ludGF4IG90aGVyd2lzZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBpdCB3aWxsIGNyYXNoCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsaW5lWzFdLnN0cmlwKCkuaXNkaWdpdCgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LmRlbGF5ID0gaW50KGxpbmVbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IDIKKyAgICAgICAgICAgICAgICBlbGlmIGxpbmVbMF0gPT0gInJlcXVlc3QtcmF0ZSI6CisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXRlICE9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJzID0gbGluZVsxXS5zcGxpdCgnLycpCisgICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGFsbCB2YWx1ZXMgYXJlIHNhbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4obnVtYmVycykgPT0gMiBhbmQgbnVtYmVyc1swXS5zdHJpcCgpLmlzZGlnaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBudW1iZXJzWzFdLnN0cmlwKCkuaXNkaWdpdCgpKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFfcmF0ZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ3JlcV9yYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3RzIHNlY29uZHMnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJlcV9yYXRlID0gcmVxX3JhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5yZXFfcmF0ZS5yZXF1ZXN0cyA9IGludChudW1iZXJzWzBdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LnJlcV9yYXRlLnNlY29uZHMgPSBpbnQobnVtYmVyc1sxXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gMgogICAgICAgICBpZiBzdGF0ZSA9PSAyOgogICAgICAgICAgICAgc2VsZi5fYWRkX2VudHJ5KGVudHJ5KQogCi0KICAgICBkZWYgY2FuX2ZldGNoKHNlbGYsIHVzZXJhZ2VudCwgdXJsKToKICAgICAgICAgIiIidXNpbmcgdGhlIHBhcnNlZCByb2JvdHMudHh0IGRlY2lkZSBpZiB1c2VyYWdlbnQgY2FuIGZldGNoIHVybCIiIgogICAgICAgICBpZiBzZWxmLmRpc2FsbG93X2FsbDoKQEAgLTE1Myw2ICsxNzQsMjIgQEAKICAgICAgICAgIyBhZ2VudCBub3QgZm91bmQgPT0+IGFjY2VzcyBncmFudGVkCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICBkZWYgY3Jhd2xfZGVsYXkoc2VsZiwgdXNlcmFnZW50KToKKyAgICAgICAgaWYgbm90IHNlbGYubXRpbWUoKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXM6CisgICAgICAgICAgICBpZiBlbnRyeS5hcHBsaWVzX3RvKHVzZXJhZ2VudCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmRlbGF5CisgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRfZW50cnkuZGVsYXkKKworICAgIGRlZiByZXF1ZXN0X3JhdGUoc2VsZiwgdXNlcmFnZW50KToKKyAgICAgICAgaWYgbm90IHNlbGYubXRpbWUoKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXM6CisgICAgICAgICAgICBpZiBlbnRyeS5hcHBsaWVzX3RvKHVzZXJhZ2VudCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnJlcV9yYXRlCisgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRfZW50cnkucmVxX3JhdGUKKwogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gJycuam9pbihbc3RyKGVudHJ5KSArICJcbiIgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllc10pCiAKQEAgLTE4MCw2ICsyMTcsOCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi51c2VyYWdlbnRzID0gW10KICAgICAgICAgc2VsZi5ydWxlbGluZXMgPSBbXQorICAgICAgICBzZWxmLmRlbGF5ID0gTm9uZQorICAgICAgICBzZWxmLnJlcV9yYXRlID0gTm9uZQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgIHJldCA9IFtdCmRpZmYgLS1naXQgYS9MaWIvdXVpZC5weSBiL0xpYi91dWlkLnB5CmluZGV4IGU5NmU3ZTAuLjIwMGM4MDAgMTAwNjQ0Ci0tLSBhL0xpYi91dWlkLnB5CisrKyBiL0xpYi91dWlkLnB5CkBAIC00ODcsNyArNDg3LDYgQEAKICAgICAjIEFzc3VtZSB0aGF0IHRoZSB1dWlkX2dlbmVyYXRlIGZ1bmN0aW9ucyBhcmUgYnJva2VuIGZyb20gMTAuNSBvbndhcmQsCiAgICAgIyB0aGUgdGVzdCBjYW4gYmUgYWRqdXN0ZWQgd2hlbiBhIGxhdGVyIHZlcnNpb24gaXMgZml4ZWQuCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgaWYgaW50KG9zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA+PSA5OgogICAgICAgICAgICAgX3V1aWRfZ2VuZXJhdGVfdGltZSA9IE5vbmUKIApkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvX19pbml0X18ucHkgYi9MaWIvdmVudi9fX2luaXRfXy5weQppbmRleCA3NDI0NWFiLi4wYTA5NGUzIDEwMDY0NAotLS0gYS9MaWIvdmVudi9fX2luaXRfXy5weQorKysgYi9MaWIvdmVudi9fX2luaXRfXy5weQpAQCAtMywyOCArMyw2IEBACiAKIENvcHlyaWdodCAoQykgMjAxMS0yMDE0IFZpbmF5IFNhamlwLgogTGljZW5zZWQgdG8gdGhlIFBTRiB1bmRlciBhIGNvbnRyaWJ1dG9yIGFncmVlbWVudC4KLQotdXNhZ2U6IHB5dGhvbiAtbSB2ZW52IFstaF0gWy0tc3lzdGVtLXNpdGUtcGFja2FnZXNdIFstLXN5bWxpbmtzXSBbLS1jbGVhcl0KLSAgICAgICAgICAgIFstLXVwZ3JhZGVdCi0gICAgICAgICAgICBFTlZfRElSIFtFTlZfRElSIC4uLl0KLQotQ3JlYXRlcyB2aXJ0dWFsIFB5dGhvbiBlbnZpcm9ubWVudHMgaW4gb25lIG9yIG1vcmUgdGFyZ2V0IGRpcmVjdG9yaWVzLgotCi1wb3NpdGlvbmFsIGFyZ3VtZW50czoKLSAgRU5WX0RJUiAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCi0KLW9wdGlvbmFsIGFyZ3VtZW50czoKLSAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKLSAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcwotICAgICAgICAgICAgICAgICAgICAgICAgR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZS1wYWNrYWdlcyBkaXIuCi0gIC0tc3ltbGlua3MgICAgICAgICAgICBBdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weS4KLSAgLS1jbGVhciAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdAotICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KLSAgLS11cGdyYWRlICAgICAgICAgICAgIFVwZ3JhZGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSB0byB1c2UgdGhpcyB2ZXJzaW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KLSAgLS13aXRob3V0LXBpcCAgICAgICAgIFNraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgdmlydHVhbAotICAgICAgICAgICAgICAgICAgICAgICAgZW52aXJvbm1lbnQgKHBpcCBpcyBib290c3RyYXBwZWQgYnkgZGVmYXVsdCkKICIiIgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwpAQCAtNTgsMTUgKzM2LDE3IEBACiAgICAgOnBhcmFtIHVwZ3JhZGU6IElmIFRydWUsIHVwZ3JhZGUgYW4gZXhpc3RpbmcgdmlydHVhbCBlbnZpcm9ubWVudC4KICAgICA6cGFyYW0gd2l0aF9waXA6IElmIFRydWUsIGVuc3VyZSBwaXAgaXMgaW5zdGFsbGVkIGluIHRoZSB2aXJ0dWFsCiAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudAorICAgIDpwYXJhbSBwcm9tcHQ6IEFsdGVybmF0aXZlIHRlcm1pbmFsIHByZWZpeCBmb3IgdGhlIGVudmlyb25tZW50LgogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UsIHdpdGhfcGlwPUZhbHNlKToKKyAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UsIHdpdGhfcGlwPUZhbHNlLCBwcm9tcHQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuc3lzdGVtX3NpdGVfcGFja2FnZXMgPSBzeXN0ZW1fc2l0ZV9wYWNrYWdlcwogICAgICAgICBzZWxmLmNsZWFyID0gY2xlYXIKICAgICAgICAgc2VsZi5zeW1saW5rcyA9IHN5bWxpbmtzCiAgICAgICAgIHNlbGYudXBncmFkZSA9IHVwZ3JhZGUKICAgICAgICAgc2VsZi53aXRoX3BpcCA9IHdpdGhfcGlwCisgICAgICAgIHNlbGYucHJvbXB0ID0gcHJvbXB0CiAKICAgICBkZWYgY3JlYXRlKHNlbGYsIGVudl9kaXIpOgogICAgICAgICAiIiIKQEAgLTExMiw3ICs5Miw4IEBACiAgICAgICAgIGNvbnRleHQgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQogICAgICAgICBjb250ZXh0LmVudl9kaXIgPSBlbnZfZGlyCiAgICAgICAgIGNvbnRleHQuZW52X25hbWUgPSBvcy5wYXRoLnNwbGl0KGVudl9kaXIpWzFdCi0gICAgICAgIGNvbnRleHQucHJvbXB0ID0gJyglcykgJyAlIGNvbnRleHQuZW52X25hbWUKKyAgICAgICAgcHJvbXB0ID0gc2VsZi5wcm9tcHQgaWYgc2VsZi5wcm9tcHQgaXMgbm90IE5vbmUgZWxzZSBjb250ZXh0LmVudl9uYW1lCisgICAgICAgIGNvbnRleHQucHJvbXB0ID0gJyglcykgJyAlIHByb21wdAogICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKGVudl9kaXIpCiAgICAgICAgIGVudiA9IG9zLmVudmlyb24KICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gZW52OgpAQCAtMzQ4LDI2ICszMjksMTEgQEAKIAogCiBkZWYgY3JlYXRlKGVudl9kaXIsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPUZhbHNlLCBjbGVhcj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHdpdGhfcGlwPUZhbHNlKToKLSAgICAiIiIKLSAgICBDcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGluIGEgZGlyZWN0b3J5LgotCi0gICAgQnkgZGVmYXVsdCwgbWFrZXMgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzIGRpciAqdW4qYXZhaWxhYmxlIHRvCi0gICAgdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQsIGFuZCB1c2VzIGNvcHlpbmcgcmF0aGVyIHRoYW4gc3ltbGlua2luZyBmb3IgZmlsZXMKLSAgICBvYnRhaW5lZCBmcm9tIHRoZSBzb3VyY2UgUHl0aG9uIGluc3RhbGxhdGlvbi4KLQotICAgIDpwYXJhbSBlbnZfZGlyOiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgYW4gZW52aXJvbm1lbnQgaW4uCi0gICAgOnBhcmFtIHN5c3RlbV9zaXRlX3BhY2thZ2VzOiBJZiBUcnVlLCB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpciBpcyBhdmFpbGFibGUgdG8gdGhlIGVudmlyb25tZW50LgotICAgIDpwYXJhbSBjbGVhcjogSWYgVHJ1ZSwgZGVsZXRlIHRoZSBjb250ZW50cyBvZiB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmCi0gICAgICAgICAgICAgICAgICBpdCBhbHJlYWR5IGV4aXN0cywgYmVmb3JlIGVudmlyb25tZW50IGNyZWF0aW9uLgotICAgIDpwYXJhbSBzeW1saW5rczogSWYgVHJ1ZSwgYXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkgZmlsZXMgaW50bwotICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudC4KLSAgICA6cGFyYW0gd2l0aF9waXA6IElmIFRydWUsIGVuc3VyZSBwaXAgaXMgaW5zdGFsbGVkIGluIHRoZSB2aXJ0dWFsCi0gICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudAotICAgICIiIgorICAgICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgd2l0aF9waXA9RmFsc2UsIHByb21wdD1Ob25lKToKKyAgICAiIiJDcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGluIGEgZGlyZWN0b3J5LiIiIgogICAgIGJ1aWxkZXIgPSBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPXN5c3RlbV9zaXRlX3BhY2thZ2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPWNsZWFyLCBzeW1saW5rcz1zeW1saW5rcywgd2l0aF9waXA9d2l0aF9waXApCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9Y2xlYXIsIHN5bWxpbmtzPXN5bWxpbmtzLCB3aXRoX3BpcD13aXRoX3BpcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQ9cHJvbXB0KQogICAgIGJ1aWxkZXIuY3JlYXRlKGVudl9kaXIpCiAKIGRlZiBtYWluKGFyZ3M9Tm9uZSk6CkBAIC00MjcsNiArMzkzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXJ0dWFsIGVudmlyb25tZW50IChwaXAgaXMgYm9vdHN0cmFwcGVkICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdieSBkZWZhdWx0KScpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcHJvbXB0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdQcm92aWRlcyBhbiBhbHRlcm5hdGl2ZSBwcm9tcHQgcHJlZml4IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBlbnZpcm9ubWVudC4nKQogICAgICAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKICAgICAgICAgaWYgb3B0aW9ucy51cGdyYWRlIGFuZCBvcHRpb25zLmNsZWFyOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneW91IGNhbm5vdCBzdXBwbHkgLS11cGdyYWRlIGFuZCAtLWNsZWFyIHRvZ2V0aGVyLicpCkBAIC00MzQsNyArNDAzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXI9b3B0aW9ucy5jbGVhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9b3B0aW9ucy5zeW1saW5rcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBncmFkZT1vcHRpb25zLnVwZ3JhZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhfcGlwPW9wdGlvbnMud2l0aF9waXApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhfcGlwPW9wdGlvbnMud2l0aF9waXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21wdD1vcHRpb25zLnByb21wdCkKICAgICAgICAgZm9yIGQgaW4gb3B0aW9ucy5kaXJzOgogICAgICAgICAgICAgYnVpbGRlci5jcmVhdGUoZCkKIApkaWZmIC0tZ2l0IGEvTGliL3dhcm5pbmdzLnB5IGIvTGliL3dhcm5pbmdzLnB5CmluZGV4IGM2NjMxZmMuLjJiNDA3ZmYgMTAwNjQ0Ci0tLSBhL0xpYi93YXJuaW5ncy5weQorKysgYi9MaWIvd2FybmluZ3MucHkKQEAgLTIsMzkgKzIsMTEyIEBACiAKIGltcG9ydCBzeXMKIAorCiBfX2FsbF9fID0gWyJ3YXJuIiwgIndhcm5fZXhwbGljaXQiLCAic2hvd3dhcm5pbmciLAogICAgICAgICAgICAiZm9ybWF0d2FybmluZyIsICJmaWx0ZXJ3YXJuaW5ncyIsICJzaW1wbGVmaWx0ZXIiLAogICAgICAgICAgICAicmVzZXR3YXJuaW5ncyIsICJjYXRjaF93YXJuaW5ncyJdCiAKLQogZGVmIHNob3d3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CiAgICAgIiIiSG9vayB0byB3cml0ZSBhIHdhcm5pbmcgdG8gYSBmaWxlOyByZXBsYWNlIGlmIHlvdSBsaWtlLiIiIgotICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKLSAgICAgICAgaWYgZmlsZSBpcyBOb25lOgotICAgICAgICAgICAgIyBzeXMuc3RkZXJyIGlzIE5vbmUgd2hlbiBydW4gd2l0aCBweXRob253LmV4ZSAtIHdhcm5pbmdzIGdldCBsb3N0Ci0gICAgICAgICAgICByZXR1cm4KLSAgICB0cnk6Ci0gICAgICAgIGZpbGUud3JpdGUoZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZSkpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHBhc3MgIyB0aGUgZmlsZSAocHJvYmFibHkgc3RkZXJyKSBpcyBpbnZhbGlkIC0gdGhpcyB3YXJuaW5nIGdldHMgbG9zdC4KKyAgICBtc2cgPSBXYXJuaW5nTWVzc2FnZShtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgZmlsZSwgbGluZSkKKyAgICBfc2hvd3dhcm5tc2dfaW1wbChtc2cpCiAKIGRlZiBmb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lPU5vbmUpOgogICAgICIiIkZ1bmN0aW9uIHRvIGZvcm1hdCBhIHdhcm5pbmcgdGhlIHN0YW5kYXJkIHdheS4iIiIKLSAgICBzID0gICIlczolczogJXM6ICVzXG4iICUgKGZpbGVuYW1lLCBsaW5lbm8sIGNhdGVnb3J5Ll9fbmFtZV9fLCBtZXNzYWdlKQotICAgIGlmIGxpbmUgaXMgTm9uZToKKyAgICBtc2cgPSBXYXJuaW5nTWVzc2FnZShtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgTm9uZSwgbGluZSkKKyAgICByZXR1cm4gX2Zvcm1hdHdhcm5tc2dfaW1wbChtc2cpCisKK2RlZiBfc2hvd3dhcm5tc2dfaW1wbChtc2cpOgorICAgIGZpbGUgPSBtc2cuZmlsZQorICAgIGlmIGZpbGUgaXMgTm9uZToKKyAgICAgICAgZmlsZSA9IHN5cy5zdGRlcnIKKyAgICAgICAgaWYgZmlsZSBpcyBOb25lOgorICAgICAgICAgICAgIyBzeXMuc3RkZXJyIGlzIE5vbmUgd2hlbiBydW4gd2l0aCBweXRob253LmV4ZToKKyAgICAgICAgICAgICMgd2FybmluZ3MgZ2V0IGxvc3QKKyAgICAgICAgICAgIHJldHVybgorICAgIHRleHQgPSBfZm9ybWF0d2Fybm1zZyhtc2cpCisgICAgdHJ5OgorICAgICAgICBmaWxlLndyaXRlKHRleHQpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICMgdGhlIGZpbGUgKHByb2JhYmx5IHN0ZGVycikgaXMgaW52YWxpZCAtIHRoaXMgd2FybmluZyBnZXRzIGxvc3QuCisgICAgICAgIHBhc3MKKworZGVmIF9mb3JtYXR3YXJubXNnX2ltcGwobXNnKToKKyAgICBzID0gICgiJXM6JXM6ICVzOiAlc1xuIgorICAgICAgICAgICUgKG1zZy5maWxlbmFtZSwgbXNnLmxpbmVubywgbXNnLmNhdGVnb3J5Ll9fbmFtZV9fLAorICAgICAgICAgICAgIG1zZy5tZXNzYWdlKSkKKworICAgIGlmIG1zZy5saW5lIGlzIE5vbmU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBsaW5lY2FjaGUKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKQorICAgICAgICAgICAgbGluZSA9IGxpbmVjYWNoZS5nZXRsaW5lKG1zZy5maWxlbmFtZSwgbXNnLmxpbmVubykKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICMgV2hlbiBhIHdhcm5pbmcgaXMgbG9nZ2VkIGR1cmluZyBQeXRob24gc2h1dGRvd24sIGxpbmVjYWNoZQogICAgICAgICAgICAgIyBhbmQgdGhlIGltcG9ydCBtYWNoaW5lcnkgZG9uJ3Qgd29yayBhbnltb3JlCiAgICAgICAgICAgICBsaW5lID0gTm9uZQorICAgICAgICAgICAgbGluZWNhY2hlID0gTm9uZQorICAgIGVsc2U6CisgICAgICAgIGxpbmUgPSBtc2cubGluZQogICAgIGlmIGxpbmU6CiAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKICAgICAgICAgcyArPSAiICAlc1xuIiAlIGxpbmUKKworICAgIGlmIG1zZy5zb3VyY2UgaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCB0cmFjZW1hbGxvYworICAgICAgICAgICAgdGIgPSB0cmFjZW1hbGxvYy5nZXRfb2JqZWN0X3RyYWNlYmFjayhtc2cuc291cmNlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgIyBXaGVuIGEgd2FybmluZyBpcyBsb2dnZWQgZHVyaW5nIFB5dGhvbiBzaHV0ZG93biwgdHJhY2VtYWxsb2MKKyAgICAgICAgICAgICMgYW5kIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRvbid0IHdvcmsgYW55bW9yZQorICAgICAgICAgICAgdGIgPSBOb25lCisKKyAgICAgICAgaWYgdGIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzICs9ICdPYmplY3QgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbicKKyAgICAgICAgICAgIGZvciBmcmFtZSBpbiB0YjoKKyAgICAgICAgICAgICAgICBzICs9ICgnICBGaWxlICIlcyIsIGxpbmVubyAlc1xuJworICAgICAgICAgICAgICAgICAgICAgICUgKGZyYW1lLmZpbGVuYW1lLCBmcmFtZS5saW5lbm8pKQorCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lY2FjaGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZnJhbWUuZmlsZW5hbWUsIGZyYW1lLmxpbmVubykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBOb25lCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBpZiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIHMgKz0gJyAgICAlc1xuJyAlIGxpbmUKICAgICByZXR1cm4gcwogCisjIEtlZXAgYSByZWZlcmVuY2UgdG8gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIHdhcyByZXBsYWNlZAorX3Nob3d3YXJuaW5nID0gc2hvd3dhcm5pbmcKKworZGVmIF9zaG93d2Fybm1zZyhtc2cpOgorICAgICIiIkhvb2sgdG8gd3JpdGUgYSB3YXJuaW5nIHRvIGEgZmlsZTsgcmVwbGFjZSBpZiB5b3UgbGlrZS4iIiIKKyAgICBzaG93d2FybmluZyA9IGdsb2JhbHMoKS5nZXQoJ3Nob3d3YXJuaW5nJywgX3Nob3d3YXJuaW5nKQorICAgIGlmIHNob3d3YXJuaW5nIGlzIG5vdCBfc2hvd3dhcm5pbmc6CisgICAgICAgICMgd2FybmluZ3Muc2hvd3dhcm5pbmcoKSB3YXMgcmVwbGFjZWQKKyAgICAgICAgaWYgbm90IGNhbGxhYmxlKHNob3d3YXJuaW5nKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigid2FybmluZ3Muc2hvd3dhcm5pbmcoKSBtdXN0IGJlIHNldCB0byBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24gb3IgbWV0aG9kIikKKworICAgICAgICBzaG93d2FybmluZyhtc2cubWVzc2FnZSwgbXNnLmNhdGVnb3J5LCBtc2cuZmlsZW5hbWUsIG1zZy5saW5lbm8sCisgICAgICAgICAgICAgICAgICAgIG1zZy5maWxlLCBtc2cubGluZSkKKyAgICAgICAgcmV0dXJuCisgICAgX3Nob3d3YXJubXNnX2ltcGwobXNnKQorCisjIEtlZXAgYSByZWZlcmVuY2UgdG8gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIHdhcyByZXBsYWNlZAorX2Zvcm1hdHdhcm5pbmcgPSBmb3JtYXR3YXJuaW5nCisKK2RlZiBfZm9ybWF0d2Fybm1zZyhtc2cpOgorICAgICIiIkZ1bmN0aW9uIHRvIGZvcm1hdCBhIHdhcm5pbmcgdGhlIHN0YW5kYXJkIHdheS4iIiIKKyAgICBmb3JtYXR3YXJuaW5nID0gZ2xvYmFscygpLmdldCgnZm9ybWF0d2FybmluZycsIF9mb3JtYXR3YXJuaW5nKQorICAgIGlmIGZvcm1hdHdhcm5pbmcgaXMgbm90IF9mb3JtYXR3YXJuaW5nOgorICAgICAgICAjIHdhcm5pbmdzLmZvcm1hdHdhcm5pbmcoKSB3YXMgcmVwbGFjZWQKKyAgICAgICAgcmV0dXJuIGZvcm1hdHdhcm5pbmcobXNnLm1lc3NhZ2UsIG1zZy5jYXRlZ29yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLmZpbGVuYW1lLCBtc2cubGluZW5vLCBsaW5lPW1zZy5saW5lKQorICAgIHJldHVybiBfZm9ybWF0d2Fybm1zZ19pbXBsKG1zZykKKwogZGVmIGZpbHRlcndhcm5pbmdzKGFjdGlvbiwgbWVzc2FnZT0iIiwgY2F0ZWdvcnk9V2FybmluZywgbW9kdWxlPSIiLCBsaW5lbm89MCwKICAgICAgICAgICAgICAgICAgICBhcHBlbmQ9RmFsc2UpOgogICAgICIiIkluc2VydCBhbiBlbnRyeSBpbnRvIHRoZSBsaXN0IG9mIHdhcm5pbmdzIGZpbHRlcnMgKGF0IHRoZSBmcm9udCkuCkBAIC0xODUsNyArMjU4LDcgQEAKIAogCiAjIENvZGUgdHlwaWNhbGx5IHJlcGxhY2VkIGJ5IF93YXJuaW5ncwotZGVmIHdhcm4obWVzc2FnZSwgY2F0ZWdvcnk9Tm9uZSwgc3RhY2tsZXZlbD0xKToKK2RlZiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSwgc291cmNlPU5vbmUpOgogICAgICIiIklzc3VlIGEgd2FybmluZywgb3IgbWF5YmUgaWdub3JlIGl0IG9yIHJhaXNlIGFuIGV4Y2VwdGlvbi4iIiIKICAgICAjIENoZWNrIGlmIG1lc3NhZ2UgaXMgYWxyZWFkeSBhIFdhcm5pbmcgb2JqZWN0CiAgICAgaWYgaXNpbnN0YW5jZShtZXNzYWdlLCBXYXJuaW5nKToKQEAgLTIzNSwxMCArMzA4LDExIEBACiAgICAgICAgICAgICBmaWxlbmFtZSA9IG1vZHVsZQogICAgIHJlZ2lzdHJ5ID0gZ2xvYmFscy5zZXRkZWZhdWx0KCJfX3dhcm5pbmdyZWdpc3RyeV9fIiwge30pCiAgICAgd2Fybl9leHBsaWNpdChtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLCByZWdpc3RyeSwKLSAgICAgICAgICAgICAgICAgIGdsb2JhbHMpCisgICAgICAgICAgICAgICAgICBnbG9iYWxzLCBzb3VyY2UpCiAKIGRlZiB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUpOgorICAgICAgICAgICAgICAgICAgbW9kdWxlPU5vbmUsIHJlZ2lzdHJ5PU5vbmUsIG1vZHVsZV9nbG9iYWxzPU5vbmUsCisgICAgICAgICAgICAgICAgICBzb3VyY2U9Tm9uZSk6CiAgICAgbGluZW5vID0gaW50KGxpbmVubykKICAgICBpZiBtb2R1bGUgaXMgTm9uZToKICAgICAgICAgbW9kdWxlID0gZmlsZW5hbWUgb3IgIjx1bmtub3duPiIKQEAgLTMwMywyMiArMzc3LDE4IEBACiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBhY3Rpb24gKCVyKSBpbiB3YXJuaW5ncy5maWx0ZXJzOlxuICVzIiAlCiAgICAgICAgICAgICAgIChhY3Rpb24sIGl0ZW0pKQotICAgIGlmIG5vdCBjYWxsYWJsZShzaG93d2FybmluZyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigid2FybmluZ3Muc2hvd3dhcm5pbmcoKSBtdXN0IGJlIHNldCB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBvciBtZXRob2QiKQogICAgICMgUHJpbnQgbWVzc2FnZSBhbmQgY29udGV4dAotICAgIHNob3d3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vKQorICAgIG1zZyA9IFdhcm5pbmdNZXNzYWdlKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBzb3VyY2UpCisgICAgX3Nob3d3YXJubXNnKG1zZykKIAogCiBjbGFzcyBXYXJuaW5nTWVzc2FnZShvYmplY3QpOgogCi0gICAgIiIiSG9sZHMgdGhlIHJlc3VsdCBvZiBhIHNpbmdsZSBzaG93d2FybmluZygpIGNhbGwuIiIiCi0KICAgICBfV0FSTklOR19ERVRBSUxTID0gKCJtZXNzYWdlIiwgImNhdGVnb3J5IiwgImZpbGVuYW1lIiwgImxpbmVubyIsICJmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIikKKyAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lIiwgInNvdXJjZSIpCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgbGluZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgbGluZT1Ob25lLCBzb3VyY2U9Tm9uZSk6CiAgICAgICAgIGxvY2FsX3ZhbHVlcyA9IGxvY2FscygpCiAgICAgICAgIGZvciBhdHRyIGluIHNlbGYuX1dBUk5JTkdfREVUQUlMUzoKICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgYXR0ciwgbG9jYWxfdmFsdWVzW2F0dHJdKQpAQCAtMzc2LDExICs0NDYsMTIgQEAKICAgICAgICAgc2VsZi5fbW9kdWxlLmZpbHRlcnMgPSBzZWxmLl9maWx0ZXJzWzpdCiAgICAgICAgIHNlbGYuX21vZHVsZS5fZmlsdGVyc19tdXRhdGVkKCkKICAgICAgICAgc2VsZi5fc2hvd3dhcm5pbmcgPSBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcKKyAgICAgICAgc2VsZi5fc2hvd3dhcm5tc2cgPSBzZWxmLl9tb2R1bGUuX3Nob3d3YXJubXNnCiAgICAgICAgIGlmIHNlbGYuX3JlY29yZDoKICAgICAgICAgICAgIGxvZyA9IFtdCi0gICAgICAgICAgICBkZWYgc2hvd3dhcm5pbmcoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKFdhcm5pbmdNZXNzYWdlKCphcmdzLCAqKmt3YXJncykpCi0gICAgICAgICAgICBzZWxmLl9tb2R1bGUuc2hvd3dhcm5pbmcgPSBzaG93d2FybmluZworICAgICAgICAgICAgZGVmIHNob3dhcm5tc2cobXNnKToKKyAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKG1zZykKKyAgICAgICAgICAgIHNlbGYuX21vZHVsZS5fc2hvd3dhcm5tc2cgPSBzaG93YXJubXNnCiAgICAgICAgICAgICByZXR1cm4gbG9nCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAtMzkxLDYgKzQ2Miw3IEBACiAgICAgICAgIHNlbGYuX21vZHVsZS5maWx0ZXJzID0gc2VsZi5fZmlsdGVycwogICAgICAgICBzZWxmLl9tb2R1bGUuX2ZpbHRlcnNfbXV0YXRlZCgpCiAgICAgICAgIHNlbGYuX21vZHVsZS5zaG93d2FybmluZyA9IHNlbGYuX3Nob3d3YXJuaW5nCisgICAgICAgIHNlbGYuX21vZHVsZS5fc2hvd3dhcm5tc2cgPSBzZWxmLl9zaG93d2Fybm1zZwogCiAKICMgZmlsdGVycyBjb250YWlucyBhIHNlcXVlbmNlIG9mIGZpbHRlciA1LXR1cGxlcwpkaWZmIC0tZ2l0IGEvTGliL3dhdmUucHkgYi9MaWIvd2F2ZS5weQppbmRleCA4YTEwMWUzLi5mNzFmN2U1IDEwMDY0NAotLS0gYS9MaWIvd2F2ZS5weQorKysgYi9MaWIvd2F2ZS5weQpAQCAtNzMsNyArNzMsNyBAQAogCiBpbXBvcnQgYnVpbHRpbnMKIAotX19hbGxfXyA9IFsib3BlbiIsICJvcGVuZnAiLCAiRXJyb3IiXQorX19hbGxfXyA9IFsib3BlbiIsICJvcGVuZnAiLCAiRXJyb3IiLCAiV2F2ZV9yZWFkIiwgIldhdmVfd3JpdGUiXQogCiBjbGFzcyBFcnJvcihFeGNlcHRpb24pOgogICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkgYi9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CmluZGV4IDdmZGRiZTguLmY3MTU2M2EgMTAwNjQ0Ci0tLSBhL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKKysrIGIvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQpAQCAtMTEsNyArMTEsNiBAQAogIiIiCiAKIGZyb20gaHR0cC5zZXJ2ZXIgaW1wb3J0IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIEhUVFBTZXJ2ZXIKLWZyb20gaW8gaW1wb3J0IEJ1ZmZlcmVkV3JpdGVyCiBpbXBvcnQgc3lzCiBpbXBvcnQgdXJsbGliLnBhcnNlCiBmcm9tIHdzZ2lyZWYuaGFuZGxlcnMgaW1wb3J0IFNpbXBsZUhhbmRsZXIKQEAgLTEyNywxNyArMTI2LDExIEBACiAgICAgICAgIGlmIG5vdCBzZWxmLnBhcnNlX3JlcXVlc3QoKTogIyBBbiBlcnJvciBjb2RlIGhhcyBiZWVuIHNlbnQsIGp1c3QgZXhpdAogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBBdm9pZCBwYXNzaW5nIHRoZSByYXcgZmlsZSBvYmplY3Qgd2ZpbGUsIHdoaWNoIGNhbiBkbyBwYXJ0aWFsCi0gICAgICAgICMgd3JpdGVzIChJc3N1ZSAyNDI5MSkKLSAgICAgICAgc3Rkb3V0ID0gQnVmZmVyZWRXcml0ZXIoc2VsZi53ZmlsZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlciA9IFNlcnZlckhhbmRsZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5yZmlsZSwgc3Rkb3V0LCBzZWxmLmdldF9zdGRlcnIoKSwgc2VsZi5nZXRfZW52aXJvbigpCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBoYW5kbGVyLnJlcXVlc3RfaGFuZGxlciA9IHNlbGYgICAgICAjIGJhY2twb2ludGVyIGZvciBsb2dnaW5nCi0gICAgICAgICAgICBoYW5kbGVyLnJ1bihzZWxmLnNlcnZlci5nZXRfYXBwKCkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzdGRvdXQuZGV0YWNoKCkKKyAgICAgICAgaGFuZGxlciA9IFNlcnZlckhhbmRsZXIoCisgICAgICAgICAgICBzZWxmLnJmaWxlLCBzZWxmLndmaWxlLCBzZWxmLmdldF9zdGRlcnIoKSwgc2VsZi5nZXRfZW52aXJvbigpCisgICAgICAgICkKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X2hhbmRsZXIgPSBzZWxmICAgICAgIyBiYWNrcG9pbnRlciBmb3IgbG9nZ2luZworICAgICAgICBoYW5kbGVyLnJ1bihzZWxmLnNlcnZlci5nZXRfYXBwKCkpCiAKIAogCkBAIC0xNjMsMTAgKzE1Niw5IEBACiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBkZW1vX2FwcCkKLSAgICBzYSA9IGh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiIsIHNhWzBdLCAicG9ydCIsIHNhWzFdLCAiLi4uIikKLSAgICBpbXBvcnQgd2ViYnJvd3NlcgotICAgIHdlYmJyb3dzZXIub3BlbignaHR0cDovL2xvY2FsaG9zdDo4MDAwL3h5ej9hYmMnKQotICAgIGh0dHBkLmhhbmRsZV9yZXF1ZXN0KCkgICMgc2VydmUgb25lIHJlcXVlc3QsIHRoZW4gZXhpdAotICAgIGh0dHBkLnNlcnZlcl9jbG9zZSgpCisgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgZGVtb19hcHApIGFzIGh0dHBkOgorICAgICAgICBzYSA9IGh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCisgICAgICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24iLCBzYVswXSwgInBvcnQiLCBzYVsxXSwgIi4uLiIpCisgICAgICAgIGltcG9ydCB3ZWJicm93c2VyCisgICAgICAgIHdlYmJyb3dzZXIub3BlbignaHR0cDovL2xvY2FsaG9zdDo4MDAwL3h5ej9hYmMnKQorICAgICAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpICAjIHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkgYi9MaWIveG1sL2RvbS94bWxidWlsZGVyLnB5CmluZGV4IDQ0NGYwYjIuLmU5YTE1MzYgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL3htbGJ1aWxkZXIucHkKKysrIGIvTGliL3htbC9kb20veG1sYnVpbGRlci5weQpAQCAtMzUzLDE0ICszNTMsMTQgQEAKIGNsYXNzIERvY3VtZW50TFM6CiAgICAgIiIiTWl4aW4gdG8gY3JlYXRlIGRvY3VtZW50cyB0aGF0IGNvbmZvcm0gdG8gdGhlIGxvYWQvc2F2ZSBzcGVjLiIiIgogCi0gICAgYXN5bmMgPSBfQXN5bmNEZXByZWNhdGVkUHJvcGVydHkoKQogICAgIGFzeW5jXyA9IEZhbHNlCisgICAgbG9jYWxzKClbJ2FzeW5jJ10gPSBfQXN5bmNEZXByZWNhdGVkUHJvcGVydHkoKSAgIyBBdm9pZCBEZXByZWNhdGlvbldhcm5pbmcKIAogICAgIGRlZiBfZ2V0X2FzeW5jKHNlbGYpOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIGRlZiBfc2V0X2FzeW5jKHNlbGYsIGFzeW5jKToKLSAgICAgICAgaWYgYXN5bmM6CisgICAgZGVmIF9zZXRfYXN5bmMoc2VsZiwgZmxhZyk6CisgICAgICAgIGlmIGZsYWc6CiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigKICAgICAgICAgICAgICAgICAiYXN5bmNocm9ub3VzIGRvY3VtZW50IGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCIpCiAKZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRQYXRoLnB5CmluZGV4IDVkZTQyMzIuLmFiNmI3OWEgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFBhdGgucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50UGF0aC5weQpAQCAtNTksMTUgKzU5LDE1IEBACiBpbXBvcnQgcmUKIAogeHBhdGhfdG9rZW5pemVyX3JlID0gcmUuY29tcGlsZSgKLSAgICAiKCIKLSAgICAiJ1teJ10qJ3xcIlteXCJdKlwifCIKLSAgICAiOjp8IgotICAgICIvLz98IgotICAgICJcLlwufCIKLSAgICAiXChcKXwiCi0gICAgIlsvLio6XFtcXVwoXClAPV0pfCIKLSAgICAiKCg/Olx7W159XStcfSk/W14vXFtcXVwoXClAPVxzXSspfCIKLSAgICAiXHMrIgorICAgIHIiKCIKKyAgICByIidbXiddKid8XCJbXlwiXSpcInwiCisgICAgciI6OnwiCisgICAgciIvLz98IgorICAgIHIiXC5cLnwiCisgICAgciJcKFwpfCIKKyAgICByIlsvLio6XFtcXVwoXClAPV0pfCIKKyAgICByIigoPzpce1tefV0rXH0pP1teL1xbXF1cKFwpQD1cc10rKXwiCisgICAgciJccysiCiAgICAgKQogCiBkZWYgeHBhdGhfdG9rZW5pemVyKHBhdHRlcm4sIG5hbWVzcGFjZXM9Tm9uZSk6CkBAIC0xODAsNyArMTgwLDcgQEAKICAgICAgICAgICAgICAgICBpZiBlbGVtLmdldChrZXkpID09IHZhbHVlOgogICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtCiAgICAgICAgIHJldHVybiBzZWxlY3QKLSAgICBpZiBzaWduYXR1cmUgPT0gIi0iIGFuZCBub3QgcmUubWF0Y2goIlwtP1xkKyQiLCBwcmVkaWNhdGVbMF0pOgorICAgIGlmIHNpZ25hdHVyZSA9PSAiLSIgYW5kIG5vdCByZS5tYXRjaChyIlwtP1xkKyQiLCBwcmVkaWNhdGVbMF0pOgogICAgICAgICAjIFt0YWddCiAgICAgICAgIHRhZyA9IHByZWRpY2F0ZVswXQogICAgICAgICBkZWYgc2VsZWN0KGNvbnRleHQsIHJlc3VsdCk6CkBAIC0xODgsNyArMTg4LDcgQEAKICAgICAgICAgICAgICAgICBpZiBlbGVtLmZpbmQodGFnKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgZWxlbQogICAgICAgICByZXR1cm4gc2VsZWN0Ci0gICAgaWYgc2lnbmF0dXJlID09ICItPSciIGFuZCBub3QgcmUubWF0Y2goIlwtP1xkKyQiLCBwcmVkaWNhdGVbMF0pOgorICAgIGlmIHNpZ25hdHVyZSA9PSAiLT0nIiBhbmQgbm90IHJlLm1hdGNoKHIiXC0/XGQrJCIsIHByZWRpY2F0ZVswXSk6CiAgICAgICAgICMgW3RhZz0ndmFsdWUnXQogICAgICAgICB0YWcgPSBwcmVkaWNhdGVbMF0KICAgICAgICAgdmFsdWUgPSBwcmVkaWNhdGVbLTFdCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQppbmRleCA5MjgyMWM1Li43MzU0MDU2IDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKQEAgLTg1LDcgKzg1LDcgQEAKICAgICAiVHJlZUJ1aWxkZXIiLAogICAgICJWRVJTSU9OIiwKICAgICAiWE1MIiwgIlhNTElEIiwKLSAgICAiWE1MUGFyc2VyIiwKKyAgICAiWE1MUGFyc2VyIiwgIlhNTFB1bGxQYXJzZXIiLAogICAgICJyZWdpc3Rlcl9uYW1lc3BhY2UiLAogICAgIF0KIApAQCAtOTUsNiArOTUsNyBAQAogaW1wb3J0IHJlCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBpbworaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29udGV4dGxpYgogCiBmcm9tIC4gaW1wb3J0IEVsZW1lbnRQYXRoCkBAIC0xMDI5LDcgKzEwMzAsNyBAQAogICAgIFZhbHVlRXJyb3IgaXMgcmFpc2VkIGlmIHByZWZpeCBpcyByZXNlcnZlZCBvciBpcyBpbnZhbGlkLgogCiAgICAgIiIiCi0gICAgaWYgcmUubWF0Y2goIm5zXGQrJCIsIHByZWZpeCk6CisgICAgaWYgcmUubWF0Y2gociJuc1xkKyQiLCBwcmVmaXgpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQcmVmaXggZm9ybWF0IHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UiKQogICAgIGZvciBrLCB2IGluIGxpc3QoX25hbWVzcGFjZV9tYXAuaXRlbXMoKSk6CiAgICAgICAgIGlmIGsgPT0gdXJpIG9yIHYgPT0gcHJlZml4OgpAQCAtMTA4NCw3ICsxMDg1LDcgQEAKICAgICAgICAgaWYgIlwiIiBpbiB0ZXh0OgogICAgICAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgiXCIiLCAiJnF1b3Q7IikKICAgICAgICAgIyBUaGUgZm9sbG93aW5nIGJ1c2luZXNzIHdpdGggY2FycmlhZ2UgcmV0dXJucyBpcyB0byBzYXRpc2Z5Ci0gICAgICAgICMgU2VjdGlvbiAyLjExIG9mIHRoZSBYTUwgc3BlY2lmaWNhdGlvbiwgc3RhdGluZyB0aGF0IAorICAgICAgICAjIFNlY3Rpb24gMi4xMSBvZiB0aGUgWE1MIHNwZWNpZmljYXRpb24sIHN0YXRpbmcgdGhhdAogICAgICAgICAjIENSIG9yIENSIExOIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIGp1c3QgTE4KICAgICAgICAgIyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNzZWMtbGluZS1lbmRzCiAgICAgICAgIGlmICJcclxuIiBpbiB0ZXh0OgpAQCAtMTIxMSwxNiArMTIxMiwzNyBAQAogICAgIFJldHVybnMgYW4gaXRlcmF0b3IgcHJvdmlkaW5nIChldmVudCwgZWxlbSkgcGFpcnMuCiAKICAgICAiIiIKKyAgICAjIFVzZSB0aGUgaW50ZXJuYWwsIHVuZG9jdW1lbnRlZCBfcGFyc2VyIGFyZ3VtZW50IGZvciBub3c7IFdoZW4gdGhlCisgICAgIyBwYXJzZXIgYXJndW1lbnQgb2YgaXRlcnBhcnNlIGlzIHJlbW92ZWQsIHRoaXMgY2FuIGJlIGtpbGxlZC4KKyAgICBwdWxscGFyc2VyID0gWE1MUHVsbFBhcnNlcihldmVudHM9ZXZlbnRzLCBfcGFyc2VyPXBhcnNlcikKKyAgICBkZWYgaXRlcmF0b3IoKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHB1bGxwYXJzZXIucmVhZF9ldmVudHMoKQorICAgICAgICAgICAgICAgICMgbG9hZCBldmVudCBidWZmZXIKKyAgICAgICAgICAgICAgICBkYXRhID0gc291cmNlLnJlYWQoMTYgKiAxMDI0KQorICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHB1bGxwYXJzZXIuZmVlZChkYXRhKQorICAgICAgICAgICAgcm9vdCA9IHB1bGxwYXJzZXIuX2Nsb3NlX2FuZF9yZXR1cm5fcm9vdCgpCisgICAgICAgICAgICB5aWVsZCBmcm9tIHB1bGxwYXJzZXIucmVhZF9ldmVudHMoKQorICAgICAgICAgICAgaXQucm9vdCA9IHJvb3QKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIGNsb3NlX3NvdXJjZToKKyAgICAgICAgICAgICAgICBzb3VyY2UuY2xvc2UoKQorCisgICAgY2xhc3MgSXRlclBhcnNlSXRlcmF0b3IoY29sbGVjdGlvbnMuSXRlcmF0b3IpOgorICAgICAgICBfX25leHRfXyA9IGl0ZXJhdG9yKCkuX19uZXh0X18KKyAgICBpdCA9IEl0ZXJQYXJzZUl0ZXJhdG9yKCkKKyAgICBpdC5yb290ID0gTm9uZQorICAgIGRlbCBpdGVyYXRvciwgSXRlclBhcnNlSXRlcmF0b3IKKwogICAgIGNsb3NlX3NvdXJjZSA9IEZhbHNlCiAgICAgaWYgbm90IGhhc2F0dHIoc291cmNlLCAicmVhZCIpOgogICAgICAgICBzb3VyY2UgPSBvcGVuKHNvdXJjZSwgInJiIikKICAgICAgICAgY2xvc2Vfc291cmNlID0gVHJ1ZQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9JdGVyUGFyc2VJdGVyYXRvcihzb3VyY2UsIGV2ZW50cywgcGFyc2VyLCBjbG9zZV9zb3VyY2UpCi0gICAgZXhjZXB0OgotICAgICAgICBpZiBjbG9zZV9zb3VyY2U6Ci0gICAgICAgICAgICBzb3VyY2UuY2xvc2UoKQotICAgICAgICByYWlzZQorCisgICAgcmV0dXJuIGl0CiAKIAogY2xhc3MgWE1MUHVsbFBhcnNlcjoKQEAgLTEyMzAsOSArMTI1Miw3IEBACiAgICAgICAgICMgdXBvbiBpbiB1c2VyIGNvZGUuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTc3NDEgZm9yIG1vcmUgZGV0YWlscy4KIAotICAgICAgICAjIF9lbGVtZW50dHJlZS5jIGV4cGVjdHMgYSBsaXN0LCBub3QgYSBkZXF1ZQotICAgICAgICBzZWxmLl9ldmVudHNfcXVldWUgPSBbXQotICAgICAgICBzZWxmLl9pbmRleCA9IDAKKyAgICAgICAgc2VsZi5fZXZlbnRzX3F1ZXVlID0gY29sbGVjdGlvbnMuZGVxdWUoKQogICAgICAgICBzZWxmLl9wYXJzZXIgPSBfcGFyc2VyIG9yIFhNTFBhcnNlcih0YXJnZXQ9VHJlZUJ1aWxkZXIoKSkKICAgICAgICAgIyB3aXJlIHVwIHRoZSBwYXJzZXIgZm9yIGV2ZW50IHJlcG9ydGluZwogICAgICAgICBpZiBldmVudHMgaXMgTm9uZToKQEAgLTEyNzAsNjQgKzEyOTAsMTQgQEAKICAgICAgICAgcmV0cmlldmVkIGZyb20gdGhlIGl0ZXJhdG9yLgogICAgICAgICAiIiIKICAgICAgICAgZXZlbnRzID0gc2VsZi5fZXZlbnRzX3F1ZXVlCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpbmRleCA9IHNlbGYuX2luZGV4Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSBldmVudHNbc2VsZi5faW5kZXhdCi0gICAgICAgICAgICAgICAgIyBBdm9pZCByZXRhaW5pbmcgcmVmZXJlbmNlcyB0byBwYXN0IGV2ZW50cwotICAgICAgICAgICAgICAgIGV2ZW50c1tzZWxmLl9pbmRleF0gPSBOb25lCi0gICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaW5kZXggKz0gMQotICAgICAgICAgICAgIyBDb21wYWN0IHRoZSBsaXN0IGluIGEgTygxKSBhbW9ydGl6ZWQgZmFzaGlvbgotICAgICAgICAgICAgIyBBcyBub3RlZCBhYm92ZSwgX2VsZW1lbnRyZWUuYyBuZWVkcyBhIGxpc3QsIG5vdCBhIGRlcXVlCi0gICAgICAgICAgICBpZiBpbmRleCAqIDIgPj0gbGVuKGV2ZW50cyk6Ci0gICAgICAgICAgICAgICAgZXZlbnRzWzppbmRleF0gPSBbXQotICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCA9IGluZGV4CisgICAgICAgIHdoaWxlIGV2ZW50czoKKyAgICAgICAgICAgIGV2ZW50ID0gZXZlbnRzLnBvcGxlZnQoKQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgRXhjZXB0aW9uKToKICAgICAgICAgICAgICAgICByYWlzZSBldmVudAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB5aWVsZCBldmVudAogCiAKLWNsYXNzIF9JdGVyUGFyc2VJdGVyYXRvcjoKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb3VyY2UsIGV2ZW50cywgcGFyc2VyLCBjbG9zZV9zb3VyY2U9RmFsc2UpOgotICAgICAgICAjIFVzZSB0aGUgaW50ZXJuYWwsIHVuZG9jdW1lbnRlZCBfcGFyc2VyIGFyZ3VtZW50IGZvciBub3c7IFdoZW4gdGhlCi0gICAgICAgICMgcGFyc2VyIGFyZ3VtZW50IG9mIGl0ZXJwYXJzZSBpcyByZW1vdmVkLCB0aGlzIGNhbiBiZSBraWxsZWQuCi0gICAgICAgIHNlbGYuX3BhcnNlciA9IFhNTFB1bGxQYXJzZXIoZXZlbnRzPWV2ZW50cywgX3BhcnNlcj1wYXJzZXIpCi0gICAgICAgIHNlbGYuX2ZpbGUgPSBzb3VyY2UKLSAgICAgICAgc2VsZi5fY2xvc2VfZmlsZSA9IGNsb3NlX3NvdXJjZQotICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLl9yb290ID0gTm9uZQotCi0gICAgZGVmIF9fbmV4dF9fKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgIGZvciBldmVudCBpbiBzZWxmLl9wYXJzZXIucmVhZF9ldmVudHMoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV2ZW50Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fcGFyc2VyLl9wYXJzZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAjIGxvYWQgZXZlbnQgYnVmZmVyCi0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZCgxNiAqIDEwMjQpCi0gICAgICAgICAgICAgICAgaWYgZGF0YToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyLmZlZWQoZGF0YSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yb290ID0gc2VsZi5fcGFyc2VyLl9jbG9zZV9hbmRfcmV0dXJuX3Jvb3QoKQotICAgICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdAotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpZiBzZWxmLl9jbG9zZV9maWxlOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQotICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgaWYgc2VsZi5fY2xvc2VfZmlsZToKLSAgICAgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQotICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCi0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLQogZGVmIFhNTCh0ZXh0LCBwYXJzZXI9Tm9uZSk6CiAgICAgIiIiUGFyc2UgWE1MIGRvY3VtZW50IGZyb20gc3RyaW5nIGNvbnN0YW50LgogCmRpZmYgLS1naXQgYS9MaWIveG1scnBjL2NsaWVudC5weSBiL0xpYi94bWxycGMvY2xpZW50LnB5CmluZGV4IGJiZjllZTYuLmJkMzI3OGUgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvY2xpZW50LnB5CisrKyBiL0xpYi94bWxycGMvY2xpZW50LnB5CkBAIC0xMzIsNiArMTMyLDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCB1cmxsaWIucGFyc2UKIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CkBAIC0xNTEsNyArMTUyLDcgQEAKICAgICByZXR1cm4gcy5yZXBsYWNlKCI+IiwgIiZndDsiLCkKIAogIyB1c2VkIGluIFVzZXItQWdlbnQgaGVhZGVyIHNlbnQKLV9fdmVyc2lvbl9fID0gc3lzLnZlcnNpb25bOjNdCitfX3ZlcnNpb25fXyA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogCiAjIHhtbHJwYyBpbnRlZ2VyIGxpbWl0cwogTUFYSU5UID0gIDIqKjMxLTEKQEAgLTY2Nyw2ICs2NjgsOCBAQAogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cnMpOgogICAgICAgICAjIHByZXBhcmUgdG8gaGFuZGxlIHRoaXMgZWxlbWVudAorICAgICAgICBpZiAnOicgaW4gdGFnOgorICAgICAgICAgICAgdGFnID0gdGFnLnNwbGl0KCc6JylbLTFdCiAgICAgICAgIGlmIHRhZyA9PSAiYXJyYXkiIG9yIHRhZyA9PSAic3RydWN0IjoKICAgICAgICAgICAgIHNlbGYuX21hcmtzLmFwcGVuZChsZW4oc2VsZi5fc3RhY2spKQogICAgICAgICBzZWxmLl9kYXRhID0gW10KQEAgLTY4Miw5ICs2ODUsMTMgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IHNlbGYuZGlzcGF0Y2hbdGFnXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzICMgdW5rbm93biB0YWcgPwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwgIiIuam9pbihzZWxmLl9kYXRhKSkKKyAgICAgICAgICAgIGlmICc6JyBub3QgaW4gdGFnOgorICAgICAgICAgICAgICAgIHJldHVybiAjIHVua25vd24gdGFnID8KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWcuc3BsaXQoJzonKVstMV1dCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPworICAgICAgICByZXR1cm4gZihzZWxmLCAiIi5qb2luKHNlbGYuX2RhdGEpKQogCiAgICAgIwogICAgICMgYWNjZWxlcmF0b3Igc3VwcG9ydApAQCAtNjk0LDkgKzcwMSwxMyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmID0gc2VsZi5kaXNwYXRjaFt0YWddCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHBhc3MgIyB1bmtub3duIHRhZyA/Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gZihzZWxmLCBkYXRhKQorICAgICAgICAgICAgaWYgJzonIG5vdCBpbiB0YWc6CisgICAgICAgICAgICAgICAgcmV0dXJuICMgdW5rbm93biB0YWcgPworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYgPSBzZWxmLmRpc3BhdGNoW3RhZy5zcGxpdCgnOicpWy0xXV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIyB1bmtub3duIHRhZyA/CisgICAgICAgIHJldHVybiBmKHNlbGYsIGRhdGEpCiAKICAgICAjCiAgICAgIyBlbGVtZW50IGRlY29kZXJzCkBAIC03MjEsMTQgKzczMiwyMyBAQAogICAgIGRlZiBlbmRfaW50KHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLmFwcGVuZChpbnQoZGF0YSkpCiAgICAgICAgIHNlbGYuX3ZhbHVlID0gMAorICAgIGRpc3BhdGNoWyJpMSJdID0gZW5kX2ludAorICAgIGRpc3BhdGNoWyJpMiJdID0gZW5kX2ludAogICAgIGRpc3BhdGNoWyJpNCJdID0gZW5kX2ludAogICAgIGRpc3BhdGNoWyJpOCJdID0gZW5kX2ludAogICAgIGRpc3BhdGNoWyJpbnQiXSA9IGVuZF9pbnQKKyAgICBkaXNwYXRjaFsiYmlnaW50ZWdlciJdID0gZW5kX2ludAogCiAgICAgZGVmIGVuZF9kb3VibGUoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuYXBwZW5kKGZsb2F0KGRhdGEpKQogICAgICAgICBzZWxmLl92YWx1ZSA9IDAKICAgICBkaXNwYXRjaFsiZG91YmxlIl0gPSBlbmRfZG91YmxlCisgICAgZGlzcGF0Y2hbImZsb2F0Il0gPSBlbmRfZG91YmxlCisKKyAgICBkZWYgZW5kX2JpZ2RlY2ltYWwoc2VsZiwgZGF0YSk6CisgICAgICAgIHNlbGYuYXBwZW5kKERlY2ltYWwoZGF0YSkpCisgICAgICAgIHNlbGYuX3ZhbHVlID0gMAorICAgIGRpc3BhdGNoWyJiaWdkZWNpbWFsIl0gPSBlbmRfYmlnZGVjaW1hbAogCiAgICAgZGVmIGVuZF9zdHJpbmcoc2VsZiwgZGF0YSk6CiAgICAgICAgIGlmIHNlbGYuX2VuY29kaW5nOgpkaWZmIC0tZ2l0IGEvTGliL3htbHJwYy9zZXJ2ZXIucHkgYi9MaWIveG1scnBjL3NlcnZlci5weQppbmRleCA3ODE3NjkzLi44NDliZmRkIDEwMDY0NAotLS0gYS9MaWIveG1scnBjL3NlcnZlci5weQorKysgYi9MaWIveG1scnBjL3NlcnZlci5weQpAQCAtOTcxLDE2ICs5NzEsMTUgQEAKICAgICAgICAgICAgIGRlZiBnZXRDdXJyZW50VGltZSgpOgogICAgICAgICAgICAgICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZS5ub3coKQogCi0gICAgc2VydmVyID0gU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCi0gICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQotICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCi0gICAgcHJpbnQoJ0l0IGlzIGFkdmlzYWJsZSB0byBydW4gdGhpcyBleGFtcGxlIHNlcnZlciB3aXRoaW4gYSBzZWN1cmUsIGNsb3NlZCBuZXR3b3JrLicpCi0gICAgdHJ5OgotICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKLSAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCi0gICAgICAgIHN5cy5leGl0KDApCisgICAgd2l0aCBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkgYXMgc2VydmVyOgorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucygpCisgICAgICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCisgICAgICAgIHByaW50KCdJdCBpcyBhZHZpc2FibGUgdG8gcnVuIHRoaXMgZXhhbXBsZSBzZXJ2ZXIgd2l0aGluIGEgc2VjdXJlLCBjbG9zZWQgbmV0d29yay4nKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHByaW50KCJcbktleWJvYXJkIGludGVycnVwdCByZWNlaXZlZCwgZXhpdGluZy4iKQorICAgICAgICAgICAgc3lzLmV4aXQoMCkKZGlmZiAtLWdpdCBhL0xpYi96aXBmaWxlLnB5IGIvTGliL3ppcGZpbGUucHkKaW5kZXggMjQ3NjcxNy4uZTJhZTA0MiAxMDA2NDQKLS0tIGEvTGliL3ppcGZpbGUucHkKKysrIGIvTGliL3ppcGZpbGUucHkKQEAgLTM3MSw3ICszNzEsNyBAQAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnIGZpbGVtb2RlPSVyJyAlIHN0YXQuZmlsZW1vZGUoaGkpKQogICAgICAgICBpZiBsbzoKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyBleHRlcm5hbF9hdHRyPSUjeCcgJSBsbykKLSAgICAgICAgaXNkaXIgPSBzZWxmLmZpbGVuYW1lWy0xOl0gPT0gJy8nCisgICAgICAgIGlzZGlyID0gc2VsZi5pc19kaXIoKQogICAgICAgICBpZiBub3QgaXNkaXIgb3Igc2VsZi5maWxlX3NpemU6CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgZmlsZV9zaXplPSVyJyAlIHNlbGYuZmlsZV9zaXplKQogICAgICAgICBpZiAoKG5vdCBpc2RpciBvciBzZWxmLmNvbXByZXNzX3NpemUpIGFuZApAQCAtNDQ5LDcgKzQ0OSw3IEBACiAgICAgICAgICAgICAgICAgZWxpZiBsbiA9PSAwOgogICAgICAgICAgICAgICAgICAgICBjb3VudHMgPSAoKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ29ycnVwdCBleHRyYSBmaWVsZCAlcyIlKGxuLCkpCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIkNvcnJ1cHQgZXh0cmEgZmllbGQgJTA0eCAoc2l6ZT0lZCkiICUgKHRwLCBsbikpCiAKICAgICAgICAgICAgICAgICBpZHggPSAwCiAKQEAgLTQ2OSw2ICs0NjksNDIgQEAKIAogICAgICAgICAgICAgZXh0cmEgPSBleHRyYVtsbis0Ol0KIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2ZpbGUoY2xzLCBmaWxlbmFtZSwgYXJjbmFtZT1Ob25lKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGFwcHJvcHJpYXRlIFppcEluZm8gZm9yIGEgZmlsZSBvbiB0aGUgZmlsZXN5c3RlbS4KKworICAgICAgICBmaWxlbmFtZSBzaG91bGQgYmUgdGhlIHBhdGggdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBvbiB0aGUgZmlsZXN5c3RlbS4KKworICAgICAgICBhcmNuYW1lIGlzIHRoZSBuYW1lIHdoaWNoIGl0IHdpbGwgaGF2ZSB3aXRoaW4gdGhlIGFyY2hpdmUgKGJ5IGRlZmF1bHQsCisgICAgICAgIHRoaXMgd2lsbCBiZSB0aGUgc2FtZSBhcyBmaWxlbmFtZSwgYnV0IHdpdGhvdXQgYSBkcml2ZSBsZXR0ZXIgYW5kIHdpdGgKKyAgICAgICAgbGVhZGluZyBwYXRoIHNlcGFyYXRvcnMgcmVtb3ZlZCkuCisgICAgICAgICIiIgorICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIGlzZGlyID0gc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpCisgICAgICAgIG10aW1lID0gdGltZS5sb2NhbHRpbWUoc3Quc3RfbXRpbWUpCisgICAgICAgIGRhdGVfdGltZSA9IG10aW1lWzA6Nl0KKyAgICAgICAgIyBDcmVhdGUgWmlwSW5mbyBpbnN0YW5jZSB0byBzdG9yZSBmaWxlIGluZm9ybWF0aW9uCisgICAgICAgIGlmIGFyY25hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlbmFtZQorICAgICAgICBhcmNuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLnNwbGl0ZHJpdmUoYXJjbmFtZSlbMV0pCisgICAgICAgIHdoaWxlIGFyY25hbWVbMF0gaW4gKG9zLnNlcCwgb3MuYWx0c2VwKToKKyAgICAgICAgICAgIGFyY25hbWUgPSBhcmNuYW1lWzE6XQorICAgICAgICBpZiBpc2RpcjoKKyAgICAgICAgICAgIGFyY25hbWUgKz0gJy8nCisgICAgICAgIHppbmZvID0gY2xzKGFyY25hbWUsIGRhdGVfdGltZSkKKyAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9IChzdC5zdF9tb2RlICYgMHhGRkZGKSA8PCAxNiAgIyBVbml4IGF0dHJpYnV0ZXMKKyAgICAgICAgaWYgaXNkaXI6CisgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSAwCisgICAgICAgICAgICB6aW5mby5leHRlcm5hbF9hdHRyIHw9IDB4MTAgICMgTVMtRE9TIGRpcmVjdG9yeSBmbGFnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSBzdC5zdF9zaXplCisKKyAgICAgICAgcmV0dXJuIHppbmZvCisKKyAgICBkZWYgaXNfZGlyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGlzIGFyY2hpdmUgbWVtYmVyIGlzIGEgZGlyZWN0b3J5LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5maWxlbmFtZVstMV0gPT0gJy8nCisKIAogY2xhc3MgX1ppcERlY3J5cHRlcjoKICAgICAiIiJDbGFzcyB0byBoYW5kbGUgZGVjcnlwdGlvbiBvZiBmaWxlcyBzdG9yZWQgd2l0aGluIGEgWklQIGFyY2hpdmUuCkBAIC02MTgsNyArNjU0LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAiQ29tcHJlc3Npb24gcmVxdWlyZXMgdGhlIChtaXNzaW5nKSBsem1hIG1vZHVsZSIpCiAgICAgZWxzZToKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJUaGF0IGNvbXByZXNzaW9uIG1ldGhvZCBpcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCiAKIAogZGVmIF9nZXRfY29tcHJlc3Nvcihjb21wcmVzc190eXBlKToKQEAgLTY1MSwxNCArNjg3LDE5IEBACiAKIAogY2xhc3MgX1NoYXJlZEZpbGU6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIHBvcywgY2xvc2UsIGxvY2spOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBwb3MsIGNsb3NlLCBsb2NrLCB3cml0aW5nKToKICAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGUKICAgICAgICAgc2VsZi5fcG9zID0gcG9zCiAgICAgICAgIHNlbGYuX2Nsb3NlID0gY2xvc2UKICAgICAgICAgc2VsZi5fbG9jayA9IGxvY2sKKyAgICAgICAgc2VsZi5fd3JpdGluZyA9IHdyaXRpbmcKIAogICAgIGRlZiByZWFkKHNlbGYsIG49LTEpOgogICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl93cml0aW5nKCk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2FuJ3QgcmVhZCBmcm9tIHRoZSBaSVAgZmlsZSB3aGlsZSB0aGVyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiaXMgYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBvbiBpdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSB3cml0aW5nIGhhbmRsZSBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQuIikKICAgICAgICAgICAgIHNlbGYuX2ZpbGUuc2VlayhzZWxmLl9wb3MpCiAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKG4pCiAgICAgICAgICAgICBzZWxmLl9wb3MgPSBzZWxmLl9maWxlLnRlbGwoKQpAQCAtNzAyLDkgKzc0Myw2IEBACiAgICAgIyBSZWFkIGZyb20gY29tcHJlc3NlZCBmaWxlcyBpbiA0ayBibG9ja3MuCiAgICAgTUlOX1JFQURfU0laRSA9IDQwOTYKIAotICAgICMgU2VhcmNoIGZvciB1bml2ZXJzYWwgbmV3bGluZXMgb3IgbGluZSBjaHVua3MuCi0gICAgUEFUVEVSTiA9IHJlLmNvbXBpbGUoYnInXig/UDxjaHVuaz5bXlxyXG5dKyl8KD9QPG5ld2xpbmU+XG58XHJcbj8pJykKLQogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlb2JqLCBtb2RlLCB6aXBpbmZvLCBkZWNyeXB0ZXI9Tm9uZSwKICAgICAgICAgICAgICAgICAgY2xvc2VfZmlsZW9iaj1GYWxzZSk6CiAgICAgICAgIHNlbGYuX2ZpbGVvYmogPSBmaWxlb2JqCkBAIC03MjEsNyArNzU5LDYgQEAKICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IGInJwogICAgICAgICBzZWxmLl9vZmZzZXQgPSAwCiAKLSAgICAgICAgc2VsZi5fdW5pdmVyc2FsID0gJ1UnIGluIG1vZGUKICAgICAgICAgc2VsZi5uZXdsaW5lcyA9IE5vbmUKIAogICAgICAgICAjIEFkanVzdCByZWFkIHNpemUgZm9yIGVuY3J5cHRlZCBmaWxlcyBzaW5jZSB0aGUgZmlyc3QgMTIgYnl0ZXMKQEAgLTc1OCw3ICs3OTUsNyBAQAogICAgICAgICBJZiBsaW1pdCBpcyBzcGVjaWZpZWQsIGF0IG1vc3QgbGltaXQgYnl0ZXMgd2lsbCBiZSByZWFkLgogICAgICAgICAiIiIKIAotICAgICAgICBpZiBub3Qgc2VsZi5fdW5pdmVyc2FsIGFuZCBsaW1pdCA8IDA6CisgICAgICAgIGlmIGxpbWl0IDwgMDoKICAgICAgICAgICAgICMgU2hvcnRjdXQgY29tbW9uIGNhc2UgLSBuZXdsaW5lIGZvdW5kIGluIGJ1ZmZlci4KICAgICAgICAgICAgIGkgPSBzZWxmLl9yZWFkYnVmZmVyLmZpbmQoYidcbicsIHNlbGYuX29mZnNldCkgKyAxCiAgICAgICAgICAgICBpZiBpID4gMDoKQEAgLTc2Niw0MSArODAzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSBpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKIAotICAgICAgICBpZiBub3Qgc2VsZi5fdW5pdmVyc2FsOgotICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lKHNlbGYsIGxpbWl0KQotCi0gICAgICAgIGxpbmUgPSBiJycKLSAgICAgICAgd2hpbGUgbGltaXQgPCAwIG9yIGxlbihsaW5lKSA8IGxpbWl0OgotICAgICAgICAgICAgcmVhZGFoZWFkID0gc2VsZi5wZWVrKDIpCi0gICAgICAgICAgICBpZiByZWFkYWhlYWQgPT0gYicnOgotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lCi0KLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgU2VhcmNoIGZvciB1bml2ZXJzYWwgbmV3bGluZXMgb3IgbGluZSBjaHVua3MuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICAjIFRoZSBwYXR0ZXJuIHJldHVybnMgZWl0aGVyIGEgbGluZSBjaHVuayBvciBhIG5ld2xpbmUsIGJ1dCBub3QKLSAgICAgICAgICAgICMgYm90aC4gQ29tYmluZWQgd2l0aCBwZWVrKDIpLCB3ZSBhcmUgYXNzdXJlZCB0aGF0IHRoZSBzZXF1ZW5jZQotICAgICAgICAgICAgIyAnXHJcbicgaXMgYWx3YXlzIHJldHJpZXZlZCBjb21wbGV0ZWx5IGFuZCBuZXZlciBzcGxpdCBpbnRvCi0gICAgICAgICAgICAjIHNlcGFyYXRlIG5ld2xpbmVzIC0gJ1xyJywgJ1xuJyBkdWUgdG8gY29pbmNpZGVudGFsIHJlYWRhaGVhZHMuCi0gICAgICAgICAgICAjCi0gICAgICAgICAgICBtYXRjaCA9IHNlbGYuUEFUVEVSTi5zZWFyY2gocmVhZGFoZWFkKQotICAgICAgICAgICAgbmV3bGluZSA9IG1hdGNoLmdyb3VwKCduZXdsaW5lJykKLSAgICAgICAgICAgIGlmIG5ld2xpbmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5uZXdsaW5lcyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm5ld2xpbmVzID0gW10KLSAgICAgICAgICAgICAgICBpZiBuZXdsaW5lIG5vdCBpbiBzZWxmLm5ld2xpbmVzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm5ld2xpbmVzLmFwcGVuZChuZXdsaW5lKQotICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCArPSBsZW4obmV3bGluZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbGluZSArIGInXG4nCi0KLSAgICAgICAgICAgIGNodW5rID0gbWF0Y2guZ3JvdXAoJ2NodW5rJykKLSAgICAgICAgICAgIGlmIGxpbWl0ID49IDA6Ci0gICAgICAgICAgICAgICAgY2h1bmsgPSBjaHVua1s6IGxpbWl0IC0gbGVuKGxpbmUpXQotCi0gICAgICAgICAgICBzZWxmLl9vZmZzZXQgKz0gbGVuKGNodW5rKQotICAgICAgICAgICAgbGluZSArPSBjaHVuawotCi0gICAgICAgIHJldHVybiBsaW5lCisgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBsaW1pdCkKIAogICAgIGRlZiBwZWVrKHNlbGYsIG49MSk6CiAgICAgICAgICIiIlJldHVybnMgYnVmZmVyZWQgYnl0ZXMgd2l0aG91dCBhZHZhbmNpbmcgdGhlIHBvc2l0aW9uLiIiIgpAQCAtOTU4LDYgKzk2MSw3NiBAQAogICAgICAgICAgICAgc3VwZXIoKS5jbG9zZSgpCiAKIAorY2xhc3MgX1ppcFdyaXRlRmlsZShpby5CdWZmZXJlZElPQmFzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHpmLCB6aW5mbywgemlwNjQpOgorICAgICAgICBzZWxmLl96aW5mbyA9IHppbmZvCisgICAgICAgIHNlbGYuX3ppcDY0ID0gemlwNjQKKyAgICAgICAgc2VsZi5femlwZmlsZSA9IHpmCisgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBfZ2V0X2NvbXByZXNzb3IoemluZm8uY29tcHJlc3NfdHlwZSkKKyAgICAgICAgc2VsZi5fZmlsZV9zaXplID0gMAorICAgICAgICBzZWxmLl9jb21wcmVzc19zaXplID0gMAorICAgICAgICBzZWxmLl9jcmMgPSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX2ZpbGVvYmooc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl96aXBmaWxlLmZwCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgIG5ieXRlcyA9IGxlbihkYXRhKQorICAgICAgICBzZWxmLl9maWxlX3NpemUgKz0gbmJ5dGVzCisgICAgICAgIHNlbGYuX2NyYyA9IGNyYzMyKGRhdGEsIHNlbGYuX2NyYykKKyAgICAgICAgaWYgc2VsZi5fY29tcHJlc3NvcjoKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9jb21wcmVzc29yLmNvbXByZXNzKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9jb21wcmVzc19zaXplICs9IGxlbihkYXRhKQorICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKGRhdGEpCisgICAgICAgIHJldHVybiBuYnl0ZXMKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgc3VwZXIoKS5jbG9zZSgpCisgICAgICAgICMgRmx1c2ggYW55IGRhdGEgZnJvbSB0aGUgY29tcHJlc3NvciwgYW5kIHVwZGF0ZSBoZWFkZXIgaW5mbworICAgICAgICBpZiBzZWxmLl9jb21wcmVzc29yOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fY29tcHJlc3Nvci5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLl9jb21wcmVzc19zaXplICs9IGxlbihidWYpCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLndyaXRlKGJ1ZikKKyAgICAgICAgICAgIHNlbGYuX3ppbmZvLmNvbXByZXNzX3NpemUgPSBzZWxmLl9jb21wcmVzc19zaXplCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl96aW5mby5jb21wcmVzc19zaXplID0gc2VsZi5fZmlsZV9zaXplCisgICAgICAgIHNlbGYuX3ppbmZvLkNSQyA9IHNlbGYuX2NyYworICAgICAgICBzZWxmLl96aW5mby5maWxlX3NpemUgPSBzZWxmLl9maWxlX3NpemUKKworICAgICAgICAjIFdyaXRlIHVwZGF0ZWQgaGVhZGVyIGluZm8KKyAgICAgICAgaWYgc2VsZi5femluZm8uZmxhZ19iaXRzICYgMHgwODoKKyAgICAgICAgICAgICMgV3JpdGUgQ1JDIGFuZCBmaWxlIHNpemVzIGFmdGVyIHRoZSBmaWxlIGRhdGEKKyAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiBzZWxmLl96aXA2NCBlbHNlICc8TExMJworICAgICAgICAgICAgc2VsZi5fZmlsZW9iai53cml0ZShzdHJ1Y3QucGFjayhmbXQsIHNlbGYuX3ppbmZvLkNSQywKKyAgICAgICAgICAgICAgICBzZWxmLl96aW5mby5jb21wcmVzc19zaXplLCBzZWxmLl96aW5mby5maWxlX3NpemUpKQorICAgICAgICAgICAgc2VsZi5femlwZmlsZS5zdGFydF9kaXIgPSBzZWxmLl9maWxlb2JqLnRlbGwoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX3ppcDY0OgorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2ZpbGVfc2l6ZSA+IFpJUDY0X0xJTUlUOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0ZpbGUgc2l6ZSB1bmV4cGVjdGVkbHkgZXhjZWVkZWQgWklQNjQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbWl0JykKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ29tcHJlc3NlZCBzaXplIHVuZXhwZWN0ZWRseSBleGNlZWRlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWklQNjQgbGltaXQnKQorICAgICAgICAgICAgIyBTZWVrIGJhY2t3YXJkcyBhbmQgd3JpdGUgZmlsZSBoZWFkZXIgKHdoaWNoIHdpbGwgbm93IGluY2x1ZGUKKyAgICAgICAgICAgICMgY29ycmVjdCBDUkMgYW5kIGZpbGUgc2l6ZXMpCisKKyAgICAgICAgICAgICMgUHJlc2VydmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlCisgICAgICAgICAgICBzZWxmLl96aXBmaWxlLnN0YXJ0X2RpciA9IHNlbGYuX2ZpbGVvYmoudGVsbCgpCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLnNlZWsoc2VsZi5femluZm8uaGVhZGVyX29mZnNldCkKKyAgICAgICAgICAgIHNlbGYuX2ZpbGVvYmoud3JpdGUoc2VsZi5femluZm8uRmlsZUhlYWRlcihzZWxmLl96aXA2NCkpCisgICAgICAgICAgICBzZWxmLl9maWxlb2JqLnNlZWsoc2VsZi5femlwZmlsZS5zdGFydF9kaXIpCisKKyAgICAgICAgc2VsZi5femlwZmlsZS5fd3JpdGluZyA9IEZhbHNlCisKKyAgICAgICAgIyBTdWNjZXNzZnVsbHkgd3JpdHRlbjogQWRkIGZpbGUgdG8gb3VyIGNhY2hlcworICAgICAgICBzZWxmLl96aXBmaWxlLmZpbGVsaXN0LmFwcGVuZChzZWxmLl96aW5mbykKKyAgICAgICAgc2VsZi5femlwZmlsZS5OYW1lVG9JbmZvW3NlbGYuX3ppbmZvLmZpbGVuYW1lXSA9IHNlbGYuX3ppbmZvCisKIGNsYXNzIFppcEZpbGU6CiAgICAgIiIiIENsYXNzIHdpdGggbWV0aG9kcyB0byBvcGVuLCByZWFkLCB3cml0ZSwgY2xvc2UsIGxpc3QgemlwIGZpbGVzLgogCkBAIC05ODIsNyArMTA1NSw3IEBACiAgICAgICAgICIiIk9wZW4gdGhlIFpJUCBmaWxlIHdpdGggbW9kZSByZWFkICdyJywgd3JpdGUgJ3cnLCBleGNsdXNpdmUgY3JlYXRlICd4JywKICAgICAgICAgb3IgYXBwZW5kICdhJy4iIiIKICAgICAgICAgaWYgbW9kZSBub3QgaW4gKCdyJywgJ3cnLCAneCcsICdhJyk6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlppcEZpbGUgcmVxdWlyZXMgbW9kZSAncicsICd3JywgJ3gnLCBvciAnYSciKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiWmlwRmlsZSByZXF1aXJlcyBtb2RlICdyJywgJ3cnLCAneCcsIG9yICdhJyIpCiAKICAgICAgICAgX2NoZWNrX2NvbXByZXNzaW9uKGNvbXByZXNzaW9uKQogCkBAIC0xMDIwLDYgKzEwOTMsNyBAQAogICAgICAgICBzZWxmLl9maWxlUmVmQ250ID0gMQogICAgICAgICBzZWxmLl9sb2NrID0gdGhyZWFkaW5nLlJMb2NrKCkKICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBUcnVlCisgICAgICAgIHNlbGYuX3dyaXRpbmcgPSBGYWxzZQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIG1vZGUgPT0gJ3InOgpAQCAtMTA1NSw3ICsxMTI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuX3N0YXJ0X2Rpc2sgPSBzZWxmLmZwLnRlbGwoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIk1vZGUgbXVzdCBiZSAncicsICd3JywgJ3gnLCBvciAnYSciKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIk1vZGUgbXVzdCBiZSAncicsICd3JywgJ3gnLCBvciAnYSciKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBmcCA9IHNlbGYuZnAKICAgICAgICAgICAgIHNlbGYuZnAgPSBOb25lCkBAIC0xMjA0LDcgKzEyNzgsNyBAQAogICAgIGRlZiBzZXRwYXNzd29yZChzZWxmLCBwd2QpOgogICAgICAgICAiIiJTZXQgZGVmYXVsdCBwYXNzd29yZCBmb3IgZW5jcnlwdGVkIGZpbGVzLiIiIgogICAgICAgICBpZiBwd2QgYW5kIG5vdCBpc2luc3RhbmNlKHB3ZCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpLl9fbmFtZV9fKQogICAgICAgICBpZiBwd2Q6CiAgICAgICAgICAgICBzZWxmLnB3ZCA9IHB3ZAogICAgICAgICBlbHNlOgpAQCAtMTIxOCw3ICsxMjkyLDcgQEAKICAgICBAY29tbWVudC5zZXR0ZXIKICAgICBkZWYgY29tbWVudChzZWxmLCBjb21tZW50KToKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29tbWVudCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjb21tZW50OiBleHBlY3RlZCBieXRlcywgZ290ICVzIiAlIHR5cGUoY29tbWVudCkpCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNvbW1lbnQ6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShjb21tZW50KS5fX25hbWVfXykKICAgICAgICAgIyBjaGVjayBmb3IgdmFsaWQgY29tbWVudCBsZW5ndGgKICAgICAgICAgaWYgbGVuKGNvbW1lbnQpID4gWklQX01BWF9DT01NRU5UOgogICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCkBAIC0xMjMzLDMwICsxMzA3LDU1IEBACiAgICAgICAgIHdpdGggc2VsZi5vcGVuKG5hbWUsICJyIiwgcHdkKSBhcyBmcDoKICAgICAgICAgICAgIHJldHVybiBmcC5yZWFkKCkKIAotICAgIGRlZiBvcGVuKHNlbGYsIG5hbWUsIG1vZGU9InIiLCBwd2Q9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBmaWxlLWxpa2Ugb2JqZWN0IGZvciAnbmFtZScuIiIiCi0gICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJVIiwgInJVIik6Ci0gICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ29wZW4oKSByZXF1aXJlcyBtb2RlICJyIiwgIlUiLCBvciAiclUiJykKLSAgICAgICAgaWYgJ1UnIGluIG1vZGU6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgZGVmIG9wZW4oc2VsZiwgbmFtZSwgbW9kZT0iciIsIHB3ZD1Ob25lLCAqLCBmb3JjZV96aXA2ND1GYWxzZSk6CisgICAgICAgICIiIlJldHVybiBmaWxlLWxpa2Ugb2JqZWN0IGZvciAnbmFtZScuCisKKyAgICAgICAgbmFtZSBpcyBhIHN0cmluZyBmb3IgdGhlIGZpbGUgbmFtZSB3aXRoaW4gdGhlIFpJUCBmaWxlLCBvciBhIFppcEluZm8KKyAgICAgICAgb2JqZWN0LgorCisgICAgICAgIG1vZGUgc2hvdWxkIGJlICdyJyB0byByZWFkIGEgZmlsZSBhbHJlYWR5IGluIHRoZSBaSVAgZmlsZSwgb3IgJ3cnIHRvCisgICAgICAgIHdyaXRlIHRvIGEgZmlsZSBuZXdseSBhZGRlZCB0byB0aGUgYXJjaGl2ZS4KKworICAgICAgICBwd2QgaXMgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgZmlsZXMgKG9ubHkgdXNlZCBmb3IgcmVhZGluZykuCisKKyAgICAgICAgV2hlbiB3cml0aW5nLCBpZiB0aGUgZmlsZSBzaXplIGlzIG5vdCBrbm93biBpbiBhZHZhbmNlIGJ1dCBtYXkgZXhjZWVkCisgICAgICAgIDIgR2lCLCBwYXNzIGZvcmNlX3ppcDY0IHRvIHVzZSB0aGUgWklQNjQgZm9ybWF0LCB3aGljaCBjYW4gaGFuZGxlIGxhcmdlCisgICAgICAgIGZpbGVzLiAgSWYgdGhlIHNpemUgaXMga25vd24gaW4gYWR2YW5jZSwgaXQgaXMgYmVzdCB0byBwYXNzIGEgWmlwSW5mbworICAgICAgICBpbnN0YW5jZSBmb3IgbmFtZSwgd2l0aCB6aW5mby5maWxlX3NpemUgc2V0LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbW9kZSBub3QgaW4geyJyIiwgIncifToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ29wZW4oKSByZXF1aXJlcyBtb2RlICJyIiBvciAidyInKQogICAgICAgICBpZiBwd2QgYW5kIG5vdCBpc2luc3RhbmNlKHB3ZCwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJwd2Q6IGV4cGVjdGVkIGJ5dGVzLCBnb3QgJXMiICUgdHlwZShwd2QpLl9fbmFtZV9fKQorICAgICAgICBpZiBwd2QgYW5kIChtb2RlID09ICJ3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwd2QgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHJlYWRpbmcgZmlsZXMiKQogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKLSAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byByZWFkIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gdXNlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKIAogICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGluZm8gb2JqZWN0CiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgWmlwSW5mbyk6CiAgICAgICAgICAgICAjICduYW1lJyBpcyBhbHJlYWR5IGFuIGluZm8gb2JqZWN0CiAgICAgICAgICAgICB6aW5mbyA9IG5hbWUKKyAgICAgICAgZWxpZiBtb2RlID09ICd3JzoKKyAgICAgICAgICAgIHppbmZvID0gWmlwSW5mbyhuYW1lKQorICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgR2V0IGluZm8gb2JqZWN0IGZvciBuYW1lCiAgICAgICAgICAgICB6aW5mbyA9IHNlbGYuZ2V0aW5mbyhuYW1lKQogCisgICAgICAgIGlmIG1vZGUgPT0gJ3cnOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29wZW5fdG9fd3JpdGUoemluZm8sIGZvcmNlX3ppcDY0PWZvcmNlX3ppcDY0KQorCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCByZWFkIGZyb20gdGhlIFpJUCBmaWxlIHdoaWxlIHRoZXJlICIKKyAgICAgICAgICAgICAgICAgICAgImlzIGFuIG9wZW4gd3JpdGluZyBoYW5kbGUgb24gaXQuICIKKyAgICAgICAgICAgICAgICAgICAgIkNsb3NlIHRoZSB3cml0aW5nIGhhbmRsZSBiZWZvcmUgdHJ5aW5nIHRvIHJlYWQuIikKKworICAgICAgICAjIE9wZW4gZm9yIHJlYWRpbmc6CiAgICAgICAgIHNlbGYuX2ZpbGVSZWZDbnQgKz0gMQotICAgICAgICB6ZWZfZmlsZSA9IF9TaGFyZWRGaWxlKHNlbGYuZnAsIHppbmZvLmhlYWRlcl9vZmZzZXQsIHNlbGYuX2ZwY2xvc2UsIHNlbGYuX2xvY2spCisgICAgICAgIHplZl9maWxlID0gX1NoYXJlZEZpbGUoc2VsZi5mcCwgemluZm8uaGVhZGVyX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcGNsb3NlLCBzZWxmLl9sb2NrLCBsYW1iZGE6IHNlbGYuX3dyaXRpbmcpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgU2tpcCB0aGUgZmlsZSBoZWFkZXI6CiAgICAgICAgICAgICBmaGVhZGVyID0gemVmX2ZpbGUucmVhZChzaXplRmlsZUhlYWRlcikKQEAgLTEyOTYsNyArMTM5NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgbm90IHB3ZDoKICAgICAgICAgICAgICAgICAgICAgcHdkID0gc2VsZi5wd2QKICAgICAgICAgICAgICAgICBpZiBub3QgcHdkOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkZpbGUgJXMgaXMgZW5jcnlwdGVkLCBwYXNzd29yZCAiCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiRmlsZSAlciBpcyBlbmNyeXB0ZWQsIHBhc3N3b3JkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCBmb3IgZXh0cmFjdGlvbiIgJSBuYW1lKQogCiAgICAgICAgICAgICAgICAgemQgPSBfWmlwRGVjcnlwdGVyKHB3ZCkKQEAgLTEzMTQsMTMgKzE0MTMsNTYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBjb21wYXJlIGFnYWluc3QgdGhlIENSQyBvdGhlcndpc2UKICAgICAgICAgICAgICAgICAgICAgY2hlY2tfYnl0ZSA9ICh6aW5mby5DUkMgPj4gMjQpICYgMHhmZgogICAgICAgICAgICAgICAgIGlmIGhbMTFdICE9IGNoZWNrX2J5dGU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQmFkIHBhc3N3b3JkIGZvciBmaWxlIiwgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJCYWQgcGFzc3dvcmQgZm9yIGZpbGUgJXIiICUgbmFtZSkKIAogICAgICAgICAgICAgcmV0dXJuIFppcEV4dEZpbGUoemVmX2ZpbGUsIG1vZGUsIHppbmZvLCB6ZCwgVHJ1ZSkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgemVmX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgcmFpc2UKIAorICAgIGRlZiBfb3Blbl90b193cml0ZShzZWxmLCB6aW5mbywgZm9yY2VfemlwNjQ9RmFsc2UpOgorICAgICAgICBpZiBmb3JjZV96aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJmb3JjZV96aXA2NCBpcyBUcnVlLCBidXQgYWxsb3daaXA2NCB3YXMgRmFsc2Ugd2hlbiBvcGVuaW5nICIKKyAgICAgICAgICAgICAgICAidGhlIFpJUCBmaWxlLiIKKyAgICAgICAgICAgICkKKyAgICAgICAgaWYgc2VsZi5fd3JpdGluZzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHdyaXRlIHRvIHRoZSBaSVAgZmlsZSB3aGlsZSB0aGVyZSBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbm90aGVyIHdyaXRlIGhhbmRsZSBvcGVuIG9uIGl0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbG9zZSB0aGUgZmlyc3QgaGFuZGxlIGJlZm9yZSBvcGVuaW5nIGFub3RoZXIuIikKKworICAgICAgICAjIFNpemVzIGFuZCBDUkMgYXJlIG92ZXJ3cml0dGVuIHdpdGggY29ycmVjdCBkYXRhIGFmdGVyIHByb2Nlc3NpbmcgdGhlIGZpbGUKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoemluZm8sICdmaWxlX3NpemUnKToKKyAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IDAKKyAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IDAKKyAgICAgICAgemluZm8uQ1JDID0gMAorCisgICAgICAgIHppbmZvLmZsYWdfYml0cyA9IDB4MDAKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgorICAgICAgICBpZiBub3Qgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwOAorCisgICAgICAgIGlmIG5vdCB6aW5mby5leHRlcm5hbF9hdHRyOgorICAgICAgICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9IDBvNjAwIDw8IDE2ICAjIHBlcm1pc3Npb25zOiA/cnctLS0tLS0tCisKKyAgICAgICAgIyBDb21wcmVzc2VkIHNpemUgY2FuIGJlIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplCisgICAgICAgIHppcDY0ID0gc2VsZi5fYWxsb3daaXA2NCBhbmQgXAorICAgICAgICAgICAgICAgIChmb3JjZV96aXA2NCBvciB6aW5mby5maWxlX3NpemUgKiAxLjA1ID4gWklQNjRfTElNSVQpCisKKyAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6CisgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCisgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKQorCisgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCisgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKworICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQorCisgICAgICAgIHNlbGYuX3dyaXRpbmcgPSBUcnVlCisgICAgICAgIHJldHVybiBfWmlwV3JpdGVGaWxlKHNlbGYsIHppbmZvLCB6aXA2NCkKKwogICAgIGRlZiBleHRyYWN0KHNlbGYsIG1lbWJlciwgcGF0aD1Ob25lLCBwd2Q9Tm9uZSk6CiAgICAgICAgICIiIkV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwKICAgICAgICAgICAgdXNpbmcgaXRzIGZ1bGwgbmFtZS4gSXRzIGZpbGUgaW5mb3JtYXRpb24gaXMgZXh0cmFjdGVkIGFzIGFjY3VyYXRlbHkKQEAgLTEzOTAsNyArMTUzMiw3IEBACiAgICAgICAgIGlmIHVwcGVyZGlycyBhbmQgbm90IG9zLnBhdGguZXhpc3RzKHVwcGVyZGlycyk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyh1cHBlcmRpcnMpCiAKLSAgICAgICAgaWYgbWVtYmVyLmZpbGVuYW1lWy0xXSA9PSAnLyc6CisgICAgICAgIGlmIG1lbWJlci5pc19kaXIoKToKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHRhcmdldHBhdGgpOgogICAgICAgICAgICAgICAgIG9zLm1rZGlyKHRhcmdldHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0cGF0aApAQCAtMTQwNyw5ICsxNTQ5LDkgQEAKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybignRHVwbGljYXRlIG5hbWU6ICVyJyAlIHppbmZvLmZpbGVuYW1lLCBzdGFja2xldmVsPTMpCiAgICAgICAgIGlmIHNlbGYubW9kZSBub3QgaW4gKCd3JywgJ3gnLCAnYScpOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJ3cml0ZSgpIHJlcXVpcmVzIG1vZGUgJ3cnLCAneCcsIG9yICdhJyIpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3cml0ZSgpIHJlcXVpcmVzIG1vZGUgJ3cnLCAneCcsIG9yICdhJyIpCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCiAgICAgICAgIF9jaGVja19jb21wcmVzc2lvbih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICBpZiBub3Qgc2VsZi5fYWxsb3daaXA2NDoKQEAgLTE0MjgsMTA1ICsxNTcwLDQzIEBACiAgICAgICAgICIiIlB1dCB0aGUgYnl0ZXMgZnJvbSBmaWxlbmFtZSBpbnRvIHRoZSBhcmNoaXZlIHVuZGVyIHRoZSBuYW1lCiAgICAgICAgIGFyY25hbWUuIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLmZwOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byB3cml0ZSB0byBaSVAgYXJjaGl2ZSB0aGF0IHdhcyBhbHJlYWR5IGNsb3NlZCIpCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJDYW4ndCB3cml0ZSB0byBaSVAgYXJjaGl2ZSB3aGlsZSBhbiBvcGVuIHdyaXRpbmcgaGFuZGxlIGV4aXN0cyIKKyAgICAgICAgICAgICkKIAotICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZW5hbWUpCi0gICAgICAgIGlzZGlyID0gc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpCi0gICAgICAgIG10aW1lID0gdGltZS5sb2NhbHRpbWUoc3Quc3RfbXRpbWUpCi0gICAgICAgIGRhdGVfdGltZSA9IG10aW1lWzA6Nl0KLSAgICAgICAgIyBDcmVhdGUgWmlwSW5mbyBpbnN0YW5jZSB0byBzdG9yZSBmaWxlIGluZm9ybWF0aW9uCi0gICAgICAgIGlmIGFyY25hbWUgaXMgTm9uZToKLSAgICAgICAgICAgIGFyY25hbWUgPSBmaWxlbmFtZQotICAgICAgICBhcmNuYW1lID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLnNwbGl0ZHJpdmUoYXJjbmFtZSlbMV0pCi0gICAgICAgIHdoaWxlIGFyY25hbWVbMF0gaW4gKG9zLnNlcCwgb3MuYWx0c2VwKToKLSAgICAgICAgICAgIGFyY25hbWUgPSBhcmNuYW1lWzE6XQotICAgICAgICBpZiBpc2RpcjoKLSAgICAgICAgICAgIGFyY25hbWUgKz0gJy8nCi0gICAgICAgIHppbmZvID0gWmlwSW5mbyhhcmNuYW1lLCBkYXRlX3RpbWUpCi0gICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgPSAoc3RbMF0gJiAweEZGRkYpIDw8IDE2ICAgICAgIyBVbml4IGF0dHJpYnV0ZXMKLSAgICAgICAgaWYgaXNkaXI6Ci0gICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gWklQX1NUT1JFRAotICAgICAgICBlbGlmIGNvbXByZXNzX3R5cGUgaXMgTm9uZToKLSAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBzZWxmLmNvbXByZXNzaW9uCisgICAgICAgIHppbmZvID0gWmlwSW5mby5mcm9tX2ZpbGUoZmlsZW5hbWUsIGFyY25hbWUpCisKKyAgICAgICAgaWYgemluZm8uaXNfZGlyKCk6CisgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gMAorICAgICAgICAgICAgemluZm8uQ1JDID0gMAogICAgICAgICBlbHNlOgotICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IHNlbGYuY29tcHJlc3Npb24KIAotICAgICAgICB6aW5mby5maWxlX3NpemUgPSBzdC5zdF9zaXplCi0gICAgICAgIHppbmZvLmZsYWdfYml0cyA9IDB4MDAKLSAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGJ5dGVzCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgorICAgICAgICBpZiB6aW5mby5pc19kaXIoKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9zZWVrYWJsZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQorICAgICAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKKyAgICAgICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgogICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCi0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKKyAgICAgICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKIAotICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQorICAgICAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKIAotICAgICAgICAgICAgaWYgaXNkaXI6Ci0gICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgemluZm8uQ1JDID0gMAotICAgICAgICAgICAgICAgIHppbmZvLmV4dGVybmFsX2F0dHIgfD0gMHgxMCAgIyBNUy1ET1MgZGlyZWN0b3J5IGZsYWcKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKICAgICAgICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9bemluZm8uZmlsZW5hbWVdID0gemluZm8KICAgICAgICAgICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoRmFsc2UpKQogICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3NlZWthYmxlOgotICAgICAgICAgICAgICAgIHppbmZvLmZsYWdfYml0cyB8PSAweDA4Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgotICAgICAgICAgICAgICAgICMgTXVzdCBvdmVyd3JpdGUgQ1JDIGFuZCBzaXplcyB3aXRoIGNvcnJlY3QgZGF0YSBsYXRlcgotICAgICAgICAgICAgICAgIHppbmZvLkNSQyA9IENSQyA9IDAKLSAgICAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSA9IDAKLSAgICAgICAgICAgICAgICAjIENvbXByZXNzZWQgc2l6ZSBjYW4gYmUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUKLSAgICAgICAgICAgICAgICB6aXA2NCA9IHNlbGYuX2FsbG93WmlwNjQgYW5kIFwKLSAgICAgICAgICAgICAgICAgICAgemluZm8uZmlsZV9zaXplICogMS4wNSA+IFpJUDY0X0xJTUlUCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSAwCi0gICAgICAgICAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZCgxMDI0ICogOCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IGZpbGVfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgICAgIENSQyA9IGNyYzMyKGJ1ZiwgQ1JDKQotICAgICAgICAgICAgICAgICAgICBpZiBjbXByOgotICAgICAgICAgICAgICAgICAgICAgICAgYnVmID0gY21wci5jb21wcmVzcyhidWYpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoYnVmKQotICAgICAgICAgICAgaWYgY21wcjoKLSAgICAgICAgICAgICAgICBidWYgPSBjbXByLmZsdXNoKCkKLSAgICAgICAgICAgICAgICBjb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSArIGxlbihidWYpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZShidWYpCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGNvbXByZXNzX3NpemUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IGZpbGVfc2l6ZQotICAgICAgICAgICAgemluZm8uQ1JDID0gQ1JDCi0gICAgICAgICAgICB6aW5mby5maWxlX3NpemUgPSBmaWxlX3NpemUKLSAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6Ci0gICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQotICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJwotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQotICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gc2VsZi5mcC50ZWxsKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHppcDY0IGFuZCBzZWxmLl9hbGxvd1ppcDY0OgotICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignRmlsZSBzaXplIGhhcyBpbmNyZWFzZWQgZHVyaW5nIGNvbXByZXNzaW5nJykKLSAgICAgICAgICAgICAgICAgICAgaWYgY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdDb21wcmVzc2VkIHNpemUgbGFyZ2VyIHRoYW4gdW5jb21wcmVzc2VkIHNpemUnKQotICAgICAgICAgICAgICAgICMgU2VlayBiYWNrd2FyZHMgYW5kIHdyaXRlIGZpbGUgaGVhZGVyICh3aGljaCB3aWxsIG5vdyBpbmNsdWRlCi0gICAgICAgICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKLSAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpICMgUHJlc2VydmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlCi0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHppbmZvLmhlYWRlcl9vZmZzZXQpCi0gICAgICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgICAgICBzZWxmLmZwLnNlZWsoc2VsZi5zdGFydF9kaXIpCi0gICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBzcmMsIHNlbGYub3Blbih6aW5mbywgJ3cnKSBhcyBkZXN0OgorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihzcmMsIGRlc3QsIDEwMjQqOCkKIAogICAgIGRlZiB3cml0ZXN0cihzZWxmLCB6aW5mb19vcl9hcmNuYW1lLCBkYXRhLCBjb21wcmVzc190eXBlPU5vbmUpOgogICAgICAgICAiIiJXcml0ZSBhIGZpbGUgaW50byB0aGUgYXJjaGl2ZS4gIFRoZSBjb250ZW50cyBpcyAnZGF0YScsIHdoaWNoCkBAIC0xNTQ5LDQ3ICsxNjI5LDIwIEBACiAgICAgICAgICAgICB6aW5mbyA9IHppbmZvX29yX2FyY25hbWUKIAogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCiAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gd3JpdGUgdG8gWklQIGFyY2hpdmUgdGhhdCB3YXMgYWxyZWFkeSBjbG9zZWQiKQorICAgICAgICBpZiBzZWxmLl93cml0aW5nOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAiQ2FuJ3Qgd3JpdGUgdG8gWklQIGFyY2hpdmUgd2hpbGUgYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBleGlzdHMuIgorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB6aW5mby5jb21wcmVzc190eXBlID0gY29tcHJlc3NfdHlwZQogCiAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGxlbihkYXRhKSAgICAgICAgICAgICMgVW5jb21wcmVzc2VkIHNpemUKICAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgotICAgICAgICAgICAgaWYgc2VsZi5fc2Vla2FibGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5mcC5zZWVrKHNlbGYuc3RhcnRfZGlyKQotICAgICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKLSAgICAgICAgICAgIGlmIGNvbXByZXNzX3R5cGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3NfdHlwZSA9IGNvbXByZXNzX3R5cGUKLSAgICAgICAgICAgIHppbmZvLmhlYWRlcl9vZmZzZXQgPSBzZWxmLmZwLnRlbGwoKSAgICAjIFN0YXJ0IG9mIGhlYWRlciBkYXRhCi0gICAgICAgICAgICBpZiBjb21wcmVzc190eXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCi0gICAgICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9MWk1BOgotICAgICAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCi0gICAgICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKLQotICAgICAgICAgICAgc2VsZi5fd3JpdGVjaGVjayh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKLSAgICAgICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICAgICAgICMgQ1JDLTMyIGNoZWNrc3VtCi0gICAgICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQotICAgICAgICAgICAgaWYgY286Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGNvLmNvbXByZXNzKGRhdGEpICsgY28uZmx1c2goKQotICAgICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA9IHppbmZvLmZpbGVfc2l6ZQotICAgICAgICAgICAgemlwNjQgPSB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVCBvciBcCi0gICAgICAgICAgICAgICAgemluZm8uY29tcHJlc3Nfc2l6ZSA+IFpJUDY0X0xJTUlUCi0gICAgICAgICAgICBpZiB6aXA2NCBhbmQgbm90IHNlbGYuX2FsbG93WmlwNjQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTGFyZ2VaaXBGaWxlKCJGaWxlc2l6ZSB3b3VsZCByZXF1aXJlIFpJUDY0IGV4dGVuc2lvbnMiKQotICAgICAgICAgICAgc2VsZi5mcC53cml0ZSh6aW5mby5GaWxlSGVhZGVyKHppcDY0KSkKLSAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoZGF0YSkKLSAgICAgICAgICAgIGlmIHppbmZvLmZsYWdfYml0cyAmIDB4MDg6Ci0gICAgICAgICAgICAgICAgIyBXcml0ZSBDUkMgYW5kIGZpbGUgc2l6ZXMgYWZ0ZXIgdGhlIGZpbGUgZGF0YQotICAgICAgICAgICAgICAgIGZtdCA9ICc8TFFRJyBpZiB6aXA2NCBlbHNlICc8TExMJwotICAgICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoc3RydWN0LnBhY2soZm10LCB6aW5mby5DUkMsIHppbmZvLmNvbXByZXNzX3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aW5mby5maWxlX3NpemUpKQotICAgICAgICAgICAgc2VsZi5mcC5mbHVzaCgpCi0gICAgICAgICAgICBzZWxmLnN0YXJ0X2RpciA9IHNlbGYuZnAudGVsbCgpCi0gICAgICAgICAgICBzZWxmLmZpbGVsaXN0LmFwcGVuZCh6aW5mbykKLSAgICAgICAgICAgIHNlbGYuTmFtZVRvSW5mb1t6aW5mby5maWxlbmFtZV0gPSB6aW5mbworICAgICAgICAgICAgd2l0aCBzZWxmLm9wZW4oemluZm8sIG1vZGU9J3cnKSBhcyBkZXN0OgorICAgICAgICAgICAgICAgIGRlc3Qud3JpdGUoZGF0YSkKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAiIiJDYWxsIHRoZSAiY2xvc2UoKSIgbWV0aG9kIGluIGNhc2UgdGhlIHVzZXIgZm9yZ290LiIiIgpAQCAtMTYwMSw2ICsxNjU0LDExIEBACiAgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGlmIHNlbGYuX3dyaXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW4ndCBjbG9zZSB0aGUgWklQIGZpbGUgd2hpbGUgdGhlcmUgaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW4gb3BlbiB3cml0aW5nIGhhbmRsZSBvbiBpdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xvc2UgdGhlIHdyaXRpbmcgaGFuZGxlIGJlZm9yZSBjbG9zaW5nIHRoZSB6aXAuIikKKwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBzZWxmLm1vZGUgaW4gKCd3JywgJ3gnLCAnYScpIGFuZCBzZWxmLl9kaWRNb2RpZnk6ICMgd3JpdGUgZW5kaW5nIHJlY29yZHMKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CkBAIC0xNzQ1LDcgKzE4MDMsNyBAQAogICAgICAgICBpZiBmaWx0ZXJmdW5jIGFuZCBub3QgZmlsdGVyZnVuYyhwYXRobmFtZSk6CiAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgogICAgICAgICAgICAgICAgIGxhYmVsID0gJ3BhdGgnIGlmIG9zLnBhdGguaXNkaXIocGF0aG5hbWUpIGVsc2UgJ2ZpbGUnCi0gICAgICAgICAgICAgICAgcHJpbnQoJyVzICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIChsYWJlbCwgcGF0aG5hbWUpKQorICAgICAgICAgICAgICAgIHByaW50KCclcyAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgKGxhYmVsLCBwYXRobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZGlyLCBuYW1lID0gb3MucGF0aC5zcGxpdChwYXRobmFtZSkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRobmFtZSk6CkBAIC0xNzc2LDcgKzE4MzQsNyBAQAogICAgICAgICAgICAgICAgICAgICBlbGlmIGV4dCA9PSAiLnB5IjoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbHRlcmZ1bmMgYW5kIG5vdCBmaWx0ZXJmdW5jKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICIlcyIgc2tpcHBlZCBieSBmaWx0ZXJmdW5jJyAlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdmaWxlICVyIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSwgYXJjbmFtZSA9IHNlbGYuX2dldF9jb2RlbmFtZShwYXRoWzA6LTNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZW5hbWUpCkBAIC0xNzkzLDcgKzE4NTEsNyBAQAogICAgICAgICAgICAgICAgICAgICBpZiBleHQgPT0gIi5weSI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWx0ZXJmdW5jIGFuZCBub3QgZmlsdGVyZnVuYyhwYXRoKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAiJXMiIHNraXBwZWQgYnkgZmlsdGVyZnVuYycgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnZmlsZSAlciBza2lwcGVkIGJ5IGZpbHRlcmZ1bmMnICUgcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWUsIGFyY25hbWUgPSBzZWxmLl9nZXRfY29kZW5hbWUocGF0aFswOi0zXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VuYW1lKQpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weSBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKaW5kZXggZDA5ZGEyZi4uZTk4M2Y1NCAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQorKysgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CkBAIC0xMDEsNiArMTAxLDcgQEAKIAogRldfUFJFRklYID0gWyJMaWJyYXJ5IiwgIkZyYW1ld29ya3MiLCAiUHl0aG9uLmZyYW1ld29yayJdCiBGV19WRVJTSU9OX1BSRUZJWCA9ICItLXVuZGVmaW5lZC0tIiAjIGluaXRpYWxpemVkIGluIHBhcnNlT3B0aW9ucworRldfU1NMX0RJUkVDVE9SWSA9ICItLXVuZGVmaW5lZC0tIiAjIGluaXRpYWxpemVkIGluIHBhcnNlT3B0aW9ucwogCiAjIFRoZSBkaXJlY3Rvcnkgd2UnbGwgdXNlIHRvIGNyZWF0ZSB0aGUgYnVpbGQgKHdpbGwgYmUgZXJhc2VkIGFuZCByZWNyZWF0ZWQpCiBXT1JLRElSID0gIi90bXAvX3B5IgpAQCAtMjA2LDQxICsyMDcsMTEgQEAKIAogICAgIExUXzEwXzUgPSBib29sKGdldERlcHRhcmdldFR1cGxlKCkgPCAoMTAsIDUpKQogCi0gICAgaWYgbm90ICgxMCwgNSkgPCBnZXREZXB0YXJnZXRUdXBsZSgpIDwgKDEwLCAxMCk6Ci0gICAgICAgICMgVGhlIE9wZW5TU0wgbGlicyBzaGlwcGVkIHdpdGggT1MgWCAxMC41IGFuZCBlYXJsaWVyIGFyZQotICAgICAgICAjIGhvcGVsZXNzbHkgb3V0LW9mLWRhdGUgYW5kIGRvIG5vdCBpbmNsdWRlIEFwcGxlJ3MgdGllLWluIHRvCi0gICAgICAgICMgdGhlIHJvb3QgY2VydGlmaWNhdGVzIGluIHRoZSB1c2VyIGFuZCBzeXN0ZW0ga2V5Y2hhaW5zIHZpYSBURUEKLSAgICAgICAgIyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIE9TIFggMTAuNi4gIE5vdGUgdGhhdCB0aGlzIGFwcGxpZXMgdG8KLSAgICAgICAgIyBwcm9ncmFtcyBidWlsdCBhbmQgbGlua2VkIHdpdGggYSAxMC41IFNESyBldmVuIHdoZW4gcnVuIG9uCi0gICAgICAgICMgbmV3ZXIgdmVyc2lvbnMgb2YgT1MgWC4KLSAgICAgICAgIwotICAgICAgICAjIERlYWxpbmcgd2l0aCBDQXMgaXMgbWVzc3kuICBGb3Igbm93LCBqdXN0IHN1cHBseSBhCi0gICAgICAgICMgbG9jYWwgbGlic3NsIGFuZCBsaWJjcnlwdG8gZm9yIHRoZSBvbGRlciBpbnN0YWxsZXIgdmFyaWFudHMKLSAgICAgICAgIyAoZS5nLiB0aGUgcHl0aG9uLm9yZyAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIpIHRoYXQgdXNlIHRoZQotICAgICAgICAjIHNhbWUgZGVmYXVsdCBzc2wgY2VydGZpbGUgbG9jYXRpb24gYXMgdGhlIHN5c3RlbSBsaWJzIGRvOgotICAgICAgICAjICAgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wvY2VydC5wZW0KLSAgICAgICAgIyBUaGVuIGF0IGxlYXN0IFRMUyBjb25uZWN0aW9ucyBjYW4gYmUgbmVnb3RpYXRlZCB3aXRoIHNpdGVzIHRoYXQKLSAgICAgICAgIyB1c2Ugc2hhLTI1NiBjZXJ0cyBsaWtlIHB5dGhvbi5vcmcsIGFzc3VtaW5nIHRoZSBwcm9wZXIgQ0EgY2VydHMKLSAgICAgICAgIyBoYXZlIGJlZW4gc3VwcGxpZWQuICBUaGUgZGVmYXVsdCBDQSBjZXJ0IG1hbmFnZW1lbnQgaXNzdWVzIGZvcgotICAgICAgICAjIDEwLjUgYW5kIGVhcmxpZXIgYnVpbGRzIGFyZSB0aGUgc2FtZSBhcyBiZWZvcmUsIG90aGVyIHRoYW4gaXQgaXMKLSAgICAgICAgIyBub3cgbW9yZSBvYnZpb3VzIHdpdGggY2VydCBjaGVja2luZyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlCi0gICAgICAgICMgc3RhbmRhcmQgbGlicmFyeS4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBidWlsZHMgd2l0aCAxMC42IHRocm91Z2ggMTAuOSBTREtzLAotICAgICAgICAjIGNvbnRpbnVlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZCBidXQKLSAgICAgICAgIyBsZXNzIG91dC1vZi1kYXRlIEFwcGxlIDAuOS44IGxpYnMgZm9yIG5vdy4gIFdoaWxlIHRoZXkgYXJlIGxlc3MKLSAgICAgICAgIyBzZWN1cmUgdGhhbiB1c2luZyBhbiB1cC10by1kYXRlIDEuMC4xIHZlcnNpb24sIGRvaW5nIHNvCi0gICAgICAgICMgYXZvaWRzIHRoZSBiaWcgcHJvYmxlbXMgb2YgZm9yY2luZyB1c2VycyB0byBoYXZlIHRvIG1hbmFnZQotICAgICAgICAjIGRlZmF1bHQgQ0FzIHRoZW1zZWx2ZXMsIHRoYW5rcyB0byB0aGUgQXBwbGUgbGlicyB1c2luZyBwcml2YXRlIFRFQQotICAgICAgICAjIEFQSXMgZm9yIGNlcnQgdmFsaWRhdGlvbiBmcm9tIGtleWNoYWlucyBpZiB2YWxpZGF0aW9uIHVzaW5nIHRoZQotICAgICAgICAjIHN0YW5kYXJkIE9wZW5TU0wgbG9jYXRpb25zICgvU3lzdGVtL0xpYnJhcnkvT3BlblNTTCwgbm9ybWFsbHkgZW1wdHkpCi0gICAgICAgICMgZmFpbHMuCi0gICAgICAgICMKLSAgICAgICAgIyBTaW5jZSBBcHBsZSByZW1vdmVkIHRoZSBoZWFkZXIgZmlsZXMgZm9yIHRoZSBkZXByZWNhdGVkIHN5c3RlbQotICAgICAgICAjIE9wZW5TU0wgYXMgb2YgdGhlIFhjb2RlIDcgcmVsZWFzZSAoZm9yIE9TIFggMTAuMTArKSwgd2UgZG8gbm90Ci0gICAgICAgICMgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gYnVpbGQgb3VyIG93biBjb3B5IGhlcmUsIHRvby4KKyAgICAjIFNpbmNlIEFwcGxlIHJlbW92ZWQgdGhlIGhlYWRlciBmaWxlcyBmb3IgdGhlIGRlcHJlY2F0ZWQgc3lzdGVtCisgICAgIyBPcGVuU1NMIGFzIG9mIHRoZSBYY29kZSA3IHJlbGVhc2UgKGZvciBPUyBYIDEwLjEwKyksIHdlIGRvIG5vdAorICAgICMgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gYnVpbGQgb3VyIG93biBjb3B5IGhlcmUsIHRvby4KIAotICAgICAgICByZXN1bHQuZXh0ZW5kKFsKKyAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KAogICAgICAgICAgICAgICBuYW1lPSJPcGVuU1NMIDEuMC4yaCIsCiAgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtMS4wLjJoLnRhci5neiIsCkBAIC0yNTIsNyArMjIzLDcgQEAKICAgICAgICAgICAgICAgY29uZmlndXJlPU5vbmUsCiAgICAgICAgICAgICAgIGluc3RhbGw9Tm9uZSwKICAgICAgICAgICApLAotICAgICAgICBdKQorICAgIF0pCiAKICMgICBEaXNhYmxlIGZvciBub3cKICAgICBpZiBGYWxzZTogICAjIGlmIGdldERlcHRhcmdldFR1cGxlKCkgPiAoMTAsIDUpOgpAQCAtMjk5LDkgKzI3MCw5IEBACiAgICAgaWYgUFlUSE9OXzM6CiAgICAgICAgIHJlc3VsdC5leHRlbmQoWwogICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlhaIDUuMC41IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vdHVrYWFuaS5vcmcveHoveHotNS4wLjUudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzE5ZDkyNGUwNjZiNmZmZjBiYzlkMTk4MWI0ZTUzMTk2JywKKyAgICAgICAgICAgICAgbmFtZT0iWFogNS4yLjIiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjIuMi50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nN2NmNmE4NTQ0YTdkYWU4ZTgxMDZmZGY3YWRkZmEyOGMnLAogICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKICAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJywKICAgICAgICAgICAgICAgXQpAQCAtMzQ0LDEwICszMTUsMTEgQEAKICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgKSwKICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICBuYW1lPSJTUUxpdGUgMy44LjExIiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5zcWxpdGUub3JnLzIwMTUvc3FsaXRlLWF1dG9jb25mLTMwODExMDAudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09Jzc3YjQ1MTkyNTEyMTAyOGJlZmJkZGJmNDVlYTJiYzQ5JywKKyAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuMTQuMSIsCisgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cuc3FsaXRlLm9yZy8yMDE2L3NxbGl0ZS1hdXRvY29uZi0zMTQwMTAwLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSczNjM0YTkwYTNmNDk1NDE0NjJiY2FlZDM0NzRiMjY4NCcsCiAgICAgICAgICAgICAgIGV4dHJhX2NmbGFncz0oJy1PcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM1ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTM19QQVJFTlRIRVNJUyAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9SVFJFRSAnCkBAIC02NzUsNiArNjQ3LDcgQEAKICAgICBnbG9iYWwgV09SS0RJUiwgREVQU1JDLCBTREtQQVRILCBTUkNESVIsIERFUFRBUkdFVAogICAgIGdsb2JhbCBVTklWRVJTQUxPUFRTLCBVTklWRVJTQUxBUkNIUywgQVJDSExJU1QsIENDLCBDWFgKICAgICBnbG9iYWwgRldfVkVSU0lPTl9QUkVGSVgKKyAgICBnbG9iYWwgRldfU1NMX0RJUkVDVE9SWQogCiAgICAgaWYgYXJncyBpcyBOb25lOgogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCkBAIC03MzUsNiArNzA4LDcgQEAKICAgICBDQywgQ1hYID0gZ2V0VGFyZ2V0Q29tcGlsZXJzKCkKIAogICAgIEZXX1ZFUlNJT05fUFJFRklYID0gRldfUFJFRklYWzpdICsgWyJWZXJzaW9ucyIsIGdldFZlcnNpb24oKV0KKyAgICBGV19TU0xfRElSRUNUT1JZID0gRldfVkVSU0lPTl9QUkVGSVhbOl0gKyBbImV0YyIsICJvcGVuc3NsIl0KIAogICAgIHByaW50KCItLSBTZXR0aW5nczoiKQogICAgIHByaW50KCIgICAqIFNvdXJjZSBkaXJlY3Rvcnk6ICAgICVzIiAlIFNSQ0RJUikKQEAgLTg3Niw3ICs4NTAsNyBAQAogICAgICAgICAgICAgInNoYXJlZCIsCiAgICAgICAgICAgICAiLS1pbnN0YWxsX3ByZWZpeD0lcyIlc2hlbGxRdW90ZShhcmNoYmFzZSksCiAgICAgICAgICAgICAiLS1wcmVmaXg9JXMiJW9zLnBhdGguam9pbigiLyIsICpGV19WRVJTSU9OX1BSRUZJWCksCi0gICAgICAgICAgICAiLS1vcGVuc3NsZGlyPS9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMIiwKKyAgICAgICAgICAgICItLW9wZW5zc2xkaXI9JXMiJW9zLnBhdGguam9pbigiLyIsICpGV19TU0xfRElSRUNUT1JZKSwKICAgICAgICAgXQogICAgICAgICBpZiBub19hc206CiAgICAgICAgICAgICBjb25maWd1cmVfb3B0cy5hcHBlbmQoIm5vLWFzbSIpCkBAIC0xMTk0LDEyICsxMTY4LDE0IEBACiAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCBnZXRWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAgJ2xpYicpKSkpCiAKLSAgICBwYXRoX3RvX2xpYiA9IG9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLCAnbGliJywgJ3B5dGhvbiVzJyUodmVyc2lvbiwpKQorICAgIGZybURpciA9IG9zLnBhdGguam9pbihyb290RGlyLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywgJ1B5dGhvbi5mcmFtZXdvcmsnKQorICAgIGZybURpclZlcnNpb25lZCA9IG9zLnBhdGguam9pbihmcm1EaXIsICdWZXJzaW9ucycsIHZlcnNpb24pCisgICAgcGF0aF90b19saWIgPSBvcy5wYXRoLmpvaW4oZnJtRGlyVmVyc2lvbmVkLCAnbGliJywgJ3B5dGhvbiVzJyUodmVyc2lvbiwpKQorICAgICMgY3JlYXRlIGRpcmVjdG9yeSBmb3IgT3BlblNTTCBjZXJ0aWZpY2F0ZXMKKyAgICBzc2xEaXIgPSBvcy5wYXRoLmpvaW4oZnJtRGlyVmVyc2lvbmVkLCAnZXRjJywgJ29wZW5zc2wnKQorICAgIG9zLm1ha2VkaXJzKHNzbERpcikKIAogICAgIHByaW50KCJGaXggZmlsZSBtb2RlcyIpCi0gICAgZnJtRGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLCAnUHl0aG9uLmZyYW1ld29yaycpCiAgICAgZ2lkID0gZ3JwLmdldGdybmFtKCdhZG1pbicpLmdyX2dpZAogCiAgICAgc2hhcmVkX2xpYl9lcnJvciA9IEZhbHNlCkBAIC0xMjQ5LDYgKzEyMjUsOCBAQAogICAgICAgICBMRFZFUlNJT04gPSBMRFZFUlNJT04ucmVwbGFjZSgnJChWRVJTSU9OKScsIFZFUlNJT04pCiAgICAgICAgIExEVkVSU0lPTiA9IExEVkVSU0lPTi5yZXBsYWNlKCckKEFCSUZMQUdTKScsIEFCSUZMQUdTKQogICAgICAgICBjb25maWdfc3VmZml4ID0gJy0nICsgTERWRVJTSU9OCisgICAgICAgIGlmIGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDYpOgorICAgICAgICAgICAgY29uZmlnX3N1ZmZpeCA9IGNvbmZpZ19zdWZmaXggKyAnLWRhcndpbicKICAgICBlbHNlOgogICAgICAgICBjb25maWdfc3VmZml4ID0gJycgICAgICAjIFB5dGhvbiAyLngKIApAQCAtMTI3NCw3ICsxMjUyLDcgQEAKICAgICBmcC53cml0ZShkYXRhKQogICAgIGZwLmNsb3NlKCkKIAotICAgICMgZml4IF9zeXNjb25maWdkYXRhIGlmIGl0IGV4aXN0cworICAgICMgZml4IF9zeXNjb25maWdkYXRhCiAgICAgIwogICAgICMgVE9ETzogbWFrZSB0aGlzIG1vcmUgcm9idXN0ISAgdGVzdF9zeXNjb25maWdfbW9kdWxlIG9mCiAgICAgIyBkaXN0dXRpbHMudGVzdHMudGVzdF9zeXNjb25maWcuU3lzY29uZmlnVGVzdENhc2UgdGVzdHMgdGhhdApAQCAtMTI4OCwyOCArMTI2NiwzMSBAQAogICAgICMgX3N5c2NvbmZpZ2RhdGEucHkpLgogCiAgICAgaW1wb3J0IHBwcmludAotICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YS5weScpCi0gICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgIGZwID0gb3BlbihwYXRoLCAncicpCi0gICAgICAgIGRhdGEgPSBmcC5yZWFkKCkKLSAgICAgICAgZnAuY2xvc2UoKQotICAgICAgICAjIGNyZWF0ZSBidWlsZF90aW1lX3ZhcnMgZGljdAotICAgICAgICBleGVjKGRhdGEpCi0gICAgICAgIHZhcnMgPSB7fQotICAgICAgICBmb3IgaywgdiBpbiBidWlsZF90aW1lX3ZhcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIHR5cGUodikgPT0gdHlwZSgnJyk6Ci0gICAgICAgICAgICAgICAgZm9yIHAgaW4gKGluY2x1ZGVfcGF0aCwgbGliX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCcgJyArIHAsICcnKQotICAgICAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKHAgKyAnICcsICcnKQotICAgICAgICAgICAgdmFyc1trXSA9IHYKKyAgICBpZiBnZXRWZXJzaW9uTWFqb3JNaW5vcigpID49ICgzLCA2KToKKyAgICAgICAgIyBYWFggdGhpcyBpcyBleHRyYS1mcmFnaWxlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YV9tX2Rhcndpbl9kYXJ3aW4ucHknKQorICAgIGVsc2U6CisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ocGF0aF90b19saWIsICdfc3lzY29uZmlnZGF0YS5weScpCisgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKKyAgICBkYXRhID0gZnAucmVhZCgpCisgICAgZnAuY2xvc2UoKQorICAgICMgY3JlYXRlIGJ1aWxkX3RpbWVfdmFycyBkaWN0CisgICAgZXhlYyhkYXRhKQorICAgIHZhcnMgPSB7fQorICAgIGZvciBrLCB2IGluIGJ1aWxkX3RpbWVfdmFycy5pdGVtcygpOgorICAgICAgICBpZiB0eXBlKHYpID09IHR5cGUoJycpOgorICAgICAgICAgICAgZm9yIHAgaW4gKGluY2x1ZGVfcGF0aCwgbGliX3BhdGgpOgorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoJyAnICsgcCwgJycpCisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZShwICsgJyAnLCAnJykKKyAgICAgICAgdmFyc1trXSA9IHYKIAotICAgICAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgICAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQotICAgICAgICBmcC53cml0ZSgnIyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnknCi0gICAgICAgICAgICAgICAgICAgICcgdGhlIHN5c2NvbmZpZyBtb2R1bGVcbicpCi0gICAgICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQotICAgICAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mcCkKLSAgICAgICAgZnAuY2xvc2UoKQorICAgIGZwID0gb3BlbihwYXRoLCAndycpCisgICAgIyBkdXBsaWNhdGVkIGZyb20gc3lzY29uZmlnLl9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKKyAgICBmcC53cml0ZSgnIyBzeXN0ZW0gY29uZmlndXJhdGlvbiBnZW5lcmF0ZWQgYW5kIHVzZWQgYnknCisgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKKyAgICBmcC53cml0ZSgnYnVpbGRfdGltZV92YXJzID0gJykKKyAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mcCkKKyAgICBmcC5jbG9zZSgpCiAKICAgICAjIEFkZCBzeW1saW5rcyBpbiAvdXNyL2xvY2FsL2JpbiwgdXNpbmcgcmVsYXRpdmUgbGlua3MKICAgICB1c3JfbG9jYWxfYmluID0gb3MucGF0aC5qb2luKHJvb3REaXIsICd1c3InLCAnbG9jYWwnLCAnYmluJykKQEAgLTE2MzYsNiArMTYxNyw4IEBACiAgICAgcGF0Y2hGaWxlKCJyZXNvdXJjZXMvUmVhZE1lLnJ0ZiIsICBmbikKICAgICBmbiA9IG9zLnBhdGguam9pbihmb2xkZXIsICJVcGRhdGUgU2hlbGwgUHJvZmlsZS5jb21tYW5kIikKICAgICBwYXRjaFNjcmlwdCgic2NyaXB0cy9wb3N0ZmxpZ2h0LnBhdGNoLXByb2ZpbGUiLCAgZm4pCisgICAgZm4gPSBvcy5wYXRoLmpvaW4oZm9sZGVyLCAiSW5zdGFsbCBDZXJ0aWZpY2F0ZXMuY29tbWFuZCIpCisgICAgcGF0Y2hTY3JpcHQoInJlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kIiwgIGZuKQogICAgIG9zLmNobW9kKGZvbGRlciwgU1RBVF8wbzc1NSkKICAgICBzZXRJY29uKGZvbGRlciwgIi4uL0ljb25zL1B5dGhvbiBGb2xkZXIuaWNucyIpCiAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgppbmRleCA2NWUzZjE0Li41MjNmYWJiIDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCkBAIC0xLDEwNiArMSw3NiBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMzQ4XGNvY29hc3VicnRmMTcwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjE1MDRcY29jb2FzdWJydGYzOTAKIHtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTMzODBcdmlld2gxNDYwMFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKIFxmMFxmczI0IFxjZjAgVGhpcyBwYWNrYWdlIHdpbGwgaW5zdGFsbCBQeXRob24gJEZVTExfVkVSU0lPTiBmb3IgTWFjIE9TIFggJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBmb3IgdGhlIGZvbGxvd2luZyBhcmNoaXRlY3R1cmUocyk6ICRBUkNISVRFQ1RVUkVTLlwKIFwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKIFxiIFxjZjAgXHVsIFx1bGMwIFdoaWNoIGluc3RhbGxlciB2YXJpYW50IHNob3VsZCBJIHVzZT8KIFxiMCBcdWxub25lIFwKIFwKLVB5dGhvbi5vcmcgcHJvdmlkZXMgdHdvIGluc3RhbGxlciB2YXJpYW50cyBmb3IgZG93bmxvYWQ6IG9uZSB0aGF0IGluc3RhbGxzIGEgCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIgXGNmMCAqKk5FVyoqCitcYjAgIEZvciBQeXRob24gMy42LCB0aGUgcHl0aG9uLm9yZyB3ZWJzaXRlIG5vdyBwcm92aWRlcyBvbmx5IG9uZSBpbnN0YWxsZXIgdmFyaWFudCBmb3IgZG93bmxvYWQ6IG9uZSB0aGF0IGluc3RhbGxzIGEgCiBcaSA2NC1iaXQvMzItYml0IEludGVsCiBcaTAgIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCiBcaSBNYWMgT1MgWCAxMC42IChTbm93IExlb3BhcmQpCi1caTAgIG9yIGxhdGVyOyBhbmQgb25lIHRoYXQgaW5zdGFsbHMgYSAKLVxpIDMyLWJpdC1vbmx5IChJbnRlbCBhbmQgUFBDKQotXGkwICBQeXRob24gY2FwYWJsZSBvZiBydW5uaW5nIG9uIAotXGkgTWFjIE9TIFggMTAuNSAoTGVvcGFyZCkKIFxpMCAgb3IgbGF0ZXIuICBUaGlzIFJlYWRNZSB3YXMgaW5zdGFsbGVkIHdpdGggdGhlIAogXGkgJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAotXGkwICB2YXJpYW50LiAgVW5sZXNzIHlvdSBhcmUgaW5zdGFsbGluZyB0byBhbiAxMC41IHN5c3RlbSBvciB5b3UgbmVlZCB0byBidWlsZCBhcHBsaWNhdGlvbnMgdGhhdCBjYW4gcnVuIG9uIDEwLjUgc3lzdGVtcywgdXNlIHRoZSAxMC42IHZhcmlhbnQgaWYgcG9zc2libGUuICBUaGVyZSBhcmUgc29tZSBhZGRpdGlvbmFsIG9wZXJhdGluZyBzeXN0ZW0gZnVuY3Rpb25zIHRoYXQgYXJlIHN1cHBvcnRlZCBzdGFydGluZyB3aXRoIDEwLjYgYW5kIHlvdSBtYXkgc2VlIGJldHRlciBwZXJmb3JtYW5jZSB1c2luZyA2NC1iaXQgbW9kZS4gIEJ5IGRlZmF1bHQsIFB5dGhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGluIDY0LWJpdCBtb2RlIGlmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGl0LiAgQWxzbyBzZWUgCi1caSBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0wKLVxpMCAgYmVsb3cuICBUaGUgUHl0aG9ucyBpbnN0YWxsZWQgYnkgdGhlc2UgaW5zdGFsbGVycyBhcmUgYnVpbHQgd2l0aCBwcml2YXRlIGNvcGllcyBvZiBzb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBub3QgaW5jbHVkZWQgd2l0aCBvciBuZXdlciB0aGFuIHRob3NlIGluIE9TIFggaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIHZhcmllcyBieSBpbnN0YWxsZXIgdmFyaWFudCBhbmQgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KK1xpMCAgdmFyaWFudC4gIEJ5IGRlZmF1bHQsIFB5dGhvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGluIDY0LWJpdCBtb2RlIGlmIHlvdXIgc3lzdGVtIHN1cHBvcnRzIGl0LiAgVGhlIFB5dGhvbiBpbnN0YWxsZWQgYnkgdGhpcyBpbnN0YWxsZXIgaXMgYnVpbHQgd2l0aCBwcml2YXRlIGNvcGllcyBvZiBzb21lIHRoaXJkLXBhcnR5IGxpYnJhcmllcyBub3QgaW5jbHVkZWQgd2l0aCBvciBuZXdlciB0aGFuIHRob3NlIGluIE9TIFggaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIGlzIGluY2x1ZGVkIGF0IHRoZSBlbmQgb2YgdGhlIExpY2Vuc2UucnRmIGZpbGUuCiBcYiBcdWwgXAogXAotVXBkYXRlIHlvdXIgdmVyc2lvbiBvZiBUY2wvVGsgdG8gdXNlIElETEUgb3Igb3RoZXIgVGsgYXBwbGljYXRpb25zCitDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gYW5kIE9wZW5TU0xcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIwIFxjZjAgXHVsbm9uZSBcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIgXGNmMCAqKk5FVyoqCitcYjAgIFRoaXMgdmFyaWFudCBvZiBQeXRob24gMy42IG5vdyBpbmNsdWRlcyBpdHMgb3duIHByaXZhdGUgY29weSBvZiBPcGVuU1NMIDEuMC4yLiAgVW5saWtlIHByZXZpb3VzIHJlbGVhc2VzLCB0aGUgZGVwcmVjYXRlZCBBcHBsZS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcyBhcmUgbm8gbG9uZ2VyIHVzZWQuICBUaGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgdHJ1c3QgY2VydGlmaWNhdGVzIGluIHN5c3RlbSBhbmQgdXNlciBrZXljaGFpbnMgbWFuYWdlZCBieSB0aGUgCitcaSBLZXljaGFpbiBBY2Nlc3MgCitcaTAgYXBwbGljYXRpb24gYW5kIHRoZSAKK1xpIHNlY3VyaXR5CitcaTAgIGNvbW1hbmQgbGluZSB1dGlsaXR5IGFyZSBubyBsb25nZXIgdXNlZCBhcyBkZWZhdWx0cyBieSB0aGUgUHl0aG9uIAorXGYxIHNzbAorXGYwICBtb2R1bGUuICBGb3IgMy42LjBiMSwgYSBzYW1wbGUgY29tbWFuZCBzY3JpcHQgaXMgaW5jbHVkZWQgaW4gCitcZjEgL0FwcGxpY2F0aW9ucy9QeXRob24gMy42CitcZjAgIHRvIGluc3RhbGwgYSBjdXJhdGVkIGJ1bmRsZSBvZiBkZWZhdWx0IHJvb3QgY2VydGlmaWNhdGVzIGZyb20gdGhlIHRoaXJkLXBhcnR5IAorXGYxIGNlcnRpZmkKK1xmMCAgcGFja2FnZSAoe1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpIn19e1xmbGRyc2x0IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaX19KS4gIElmIHlvdSBjaG9vc2UgdG8gdXNlIAorXGYxIGNlcnRpZmkKK1xmMCAsIHlvdSBzaG91bGQgY29uc2lkZXIgc3Vic2NyaWJpbmcgdG8gdGhle1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9jZXJ0aWZpLmlvL2VuL2xhdGVzdC8ifX17XGZsZHJzbHQgIHByb2plY3QncyBlbWFpbCB1cGRhdGUgc2VydmljZX19IHRvIGJlIG5vdGlmaWVkIHdoZW4gdGhlIGNlcnRpZmljYXRlIGJ1bmRsZSBpcyB1cGRhdGVkLiAgTW9yZSBvcHRpb25zIHdpbGwgYmUgcHJvdmlkZWQgcHJpb3IgdG8gdGhlIGZpbmFsIHJlbGVhc2Ugb2YgMy42LjAuXAorXAorVGhlIGJ1bmRsZWQgCitcZjEgcGlwCitcZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjYgaW5zdGFsbGVyIGhhcyBpdHMgb3duIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUgZm9yIHZlcmlmeWluZyBkb3dubG9hZCBjb25uZWN0aW9ucy5cCitcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKKworXGIgXGNmMCBcdWwgVXBkYXRlIHlvdXIgdmVyc2lvbiBvZiBUY2wvVGsgdG8gdXNlIElETEUgb3Igb3RoZXIgVGsgYXBwbGljYXRpb25zCiBcYjAgXHVsbm9uZSBcCiBcCiBUbyB1c2UgSURMRSBvciBvdGhlciBwcm9ncmFtcyB0aGF0IHVzZSB0aGUgVGtpbnRlciBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgdG9vbGtpdCwgeW91IG5lZWQgdG8gaW5zdGFsbCBhIG5ld2VyIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YgdGhlIAogXGkgVGNsL1RrCiBcaTAgIGZyYW1ld29ya3MuICBWaXNpdCB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL21hYy90Y2x0ay8ifX17XGZsZHJzbHQgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvfX0gZm9yIGN1cnJlbnQgaW5mb3JtYXRpb24gYWJvdXQgc3VwcG9ydGVkIGFuZCByZWNvbW1lbmRlZCB2ZXJzaW9ucyBvZiAKIFxpIFRjbC9UawotXGkwICBmb3IgdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbiBhbmQgb2YgTWFjIE9TIFguXAorXGkwICBmb3IgdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbiBhbmQgb2YgTWFjIE9TIFguICBGb3IgdGhlIGluaXRpYWwgcHJldmlldyByZWxlYXNlcyBvZiBQeXRob24gMy42LCB0aGUgaW5zdGFsbGVyIGlzIHN0aWxsIGxpbmtlZCB3aXRoIFRjbC9UayA4LjU7IHRoaXMgd2lsbCBsaWtlbHkgY2hhbmdlIHByaW9yIHRvIHRoZSBmaW5hbCByZWxlYXNlIG9mIDMuNi4wLlwKIAogXGIgXHVsIFwKLUNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTFwKK090aGVyIGNoYW5nZXNcCiAKIFxiMCBcdWxub25lIFwKLVB5dGhvbiAzLjUgaW5jbHVkZXMgYSBudW1iZXIgb2YgbmV0d29yayBzZWN1cml0eSBlbmhhbmNlbWVudHMgdGhhdCB3ZXJlIHJlbGVhc2VkIGluIFB5dGhvbiAzLjQuMyBhbmQgUHl0aG9uIDIuNy4xMC4gIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzYvIn19e1xmbGRyc2x0IFBFUCA0NzZ9fSBjaGFuZ2VzIHNldmVyYWwgc3RhbmRhcmQgbGlicmFyeSBtb2R1bGVzLCBsaWtlIAotXGkgaHR0cGxpYgotXGkwICwgCi1caSB1cmxsaWIKLVxpMCAsIGFuZCAKLVxpIHhtbHJwY2xpYgotXGkwICwgdG8gYnkgZGVmYXVsdCB2ZXJpZnkgY2VydGlmaWNhdGVzIHByZXNlbnRlZCBieSBzZXJ2ZXJzIG92ZXIgc2VjdXJlIChUTFMpIGNvbm5lY3Rpb25zLiAgVGhlIHZlcmlmaWNhdGlvbiBpcyBwZXJmb3JtZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyaWVzIHRoYXQgUHl0aG9uIGlzIGxpbmtlZCB0by4gIFByaW9yIHRvIDMuNC4zLCBib3RoIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBkeW5hbWljYWxseSBsaW5rZWQgd2l0aCBBcHBsZS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcyBzaGlwcGVkIHdpdGggT1MgWC4gIE9TIFggcHJvdmlkZXMgYSBtdWx0aXBsZSBsZXZlbCBzZWN1cml0eSBmcmFtZXdvcmsgdGhhdCBzdG9yZXMgdHJ1c3QgY2VydGlmaWNhdGVzIGluIHN5c3RlbSBhbmQgdXNlciBrZXljaGFpbnMgbWFuYWdlZCBieSB0aGUgCi1caSBLZXljaGFpbiBBY2Nlc3MgCi1caTAgYXBwbGljYXRpb24gYW5kIHRoZSAKLVxpIHNlY3VyaXR5Ci1caTAgIGNvbW1hbmQgbGluZSB1dGlsaXR5LlwKLVwKLUZvciBPUyBYIDEwLjUsIEFwcGxlIHByb3ZpZGVzIAotXGkgT3BlblNTTCAwLjkuNwotXGkwICBsaWJyYXJpZXMuICBUaGlzIHZlcnNpb24gb2YgQXBwbGUncyBPcGVuU1NMIAotXGIgZG9lcyBub3QKLVxiMCAgdXNlIHRoZSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgc3lzdGVtIHNlY3VyaXR5IGZyYW1ld29yaywgZXZlbiB3aGVuIHVzZWQgb24gbmV3ZXIgdmVyc2lvbnMgb2YgT1MgWC4gIEluc3RlYWQgaXQgY29uc3VsdHMgYSB0cmFkaXRpb25hbCBPcGVuU1NMIGNvbmNhdGVuYXRlZCBjZXJ0aWZpY2F0ZSBmaWxlICgKLVxpIGNhZmlsZQotXGkwICkgb3IgY2VydGlmaWNhdGUgZGlyZWN0b3J5ICgKLVxpIGNhcGF0aAotXGkwICksIGxvY2F0ZWQgaW4gCi1cZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAuICBUaGVzZSBkaXJlY3RvcmllcyBhcmUgdHlwaWNhbGx5IGVtcHR5IGFuZCBub3QgbWFuYWdlZCBieSBPUyBYOyB5b3UgbXVzdCBtYW5hZ2UgdGhlbSB5b3Vyc2VsZiBvciBzdXBwbHkgeW91ciBvd24gU1NMIGNvbnRleHRzLiAgT3BlblNTTCAwLjkuNyBpcyBvYnNvbGV0ZSBieSBjdXJyZW50IHNlY3VyaXR5IHN0YW5kYXJkcywgbGFja2luZyBhIG51bWJlciBvZiBpbXBvcnRhbnQgZmVhdHVyZXMgZm91bmQgaW4gbGF0ZXIgdmVyc2lvbnMuICBBbW9uZyB0aGUgcHJvYmxlbXMgdGhpcyBjYXVzZXMgaXMgdGhlIGluYWJpbGl0eSB0byB2ZXJpZnkgaGlnaGVyLXNlY3VyaXR5IGNlcnRpZmljYXRlcyBub3cgdXNlZCBieSBweXRob24ub3JnIHNlcnZpY2VzLCBpbmNsdWRpbmcgCi1caSB0e1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaSJ9fXtcZmxkcnNsdCBoZSBQeXRob24gUGFja2FnZSBJbmRleCwgUHlQSX19Ci1caTAgLiAgVG8gc29sdmUgdGhpcyBwcm9ibGVtLCB0aGUgCi1caSAxMC41KyAzMi1iaXQtb25seSBweXRob24ub3JnIHZhcmlhbnQKLVxpMCAgaXMgbGlua2VkIHdpdGggYSBwcml2YXRlIGNvcHkgb2YgCi1caSBPcGVuU1NMIDEuMC4yCi1caTAgOyBpdCBjb25zdWx0cyB0aGUgc2FtZSBkZWZhdWx0IGNlcnRpZmljYXRlIGRpcmVjdG9yeSwgCi1cZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAuICAgQXMgYmVmb3JlLCBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8gbWFuYWdlIGNlcnRpZmljYXRlcyB5b3Vyc2VsZiB3aGVuIHlvdSB1c2UgdGhpcyBQeXRob24gdmFyaWFudCBhbmQsIHdpdGggY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQsIHlvdSBtYXkgbm93IG5lZWQgdG8gdGFrZSBhZGRpdGlvbmFsIHN0ZXBzIHRvIGVuc3VyZSB5b3VyIFB5dGhvbiBwcm9ncmFtcyBoYXZlIGFjY2VzcyB0byBDQSBjZXJ0aWZpY2F0ZXMgeW91IHRydXN0LiAgSWYgeW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IHRvIGJ1aWxkIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIHdpdGggdGhpcmQtcGFydHkgdG9vbHMgbGlrZSB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5MmFwcC8ifX17XGZsZHJzbHQgCi1cZjEgcHkyYXBwfX0sIHlvdSBtYXkgbm93IG5lZWQgdG8gYnVuZGxlIENBIGNlcnRpZmljYXRlcyBpbiB0aGVtIG9yIG90aGVyd2lzZSBzdXBwbHkgbm9uLWRlZmF1bHQgU1NMIGNvbnRleHRzLlwKLVwKLUZvciBPUyBYIDEwLjYrLCBBcHBsZSBhbHNvIHByb3ZpZGVzIAotXGkgT3BlblNTTAotXGkwICAKLVxpIDAuOS44IGxpYnJhcmllcwotXGkwIC4gIEFwcGxlJ3MgMC45LjggdmVyc2lvbiBpbmNsdWRlcyBhbiBpbXBvcnRhbnQgYWRkaXRpb25hbCBmZWF0dXJlOiBpZiBhIGNlcnRpZmljYXRlIGNhbm5vdCBiZSB2ZXJpZmllZCB1c2luZyB0aGUgbWFudWFsbHkgYWRtaW5pc3RlcmVkIGNlcnRpZmljYXRlcyBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwICwgdGhlIGNlcnRpZmljYXRlcyBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrIEluIHRoZSB1c2VyIGFuZCBzeXN0ZW0ga2V5Y2hhaW5zIGFyZSBhbHNvIGNvbnN1bHRlZCAodXNpbmcgQXBwbGUgcHJpdmF0ZSBBUElzKS4gIEZvciB0aGlzIHJlYXNvbiwgdGhlIAotXGkgNjQtYml0LzMyLWJpdCAxMC42KyBweXRob24ub3JnIHZhcmlhbnQKLVxpMCAgY29udGludWVzIHRvIGJlIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlJ3MgT3BlblNTTCAwLjkuOCBzaW5jZSBpdCB3YXMgZmVsdCB0aGF0IHRoZSBsb3NzIG9mIHRoZSBzeXN0ZW0tcHJvdmlkZWQgY2VydGlmaWNhdGVzIGFuZCBtYW5hZ2VtZW50IHRvb2xzIG91dHdlaWdocyB0aGUgYWRkaXRpb25hbCBzZWN1cml0eSBmZWF0dXJlcyBwcm92aWRlZCBieSBuZXdlciB2ZXJzaW9ucyBvZiBPcGVuU1NMLiAgVGhpcyB3aWxsIGxpa2VseSBjaGFuZ2UgaW4gZnV0dXJlIHJlbGVhc2VzIG9mIHRoZSBweXRob24ub3JnIGluc3RhbGxlcnMgYXMgQXBwbGUgaGFzIGRlcHJlY2F0ZWQgdXNlIG9mIHRoZSBzeXN0ZW0tc3VwcGxpZWQgT3BlblNTTCBsaWJyYXJpZXMuICBJZiB5b3UgZG8gbmVlZCBmZWF0dXJlcyBmcm9tIG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wsIHRoZXJlIGFyZSB0aGlyZC1wYXJ0eSBPcGVuU1NMIHdyYXBwZXIgcGFja2FnZXMgYXZhaWxhYmxlIHRocm91Z2ggCi1caSBQeVBJCi1caTAgLlwKLVwKLVRoZSBidW5kbGVkIAotXGYxIHBpcAotXGYwICBpbmNsdWRlZCB3aXRoIHRoZSBQeXRob24gMy41IGluc3RhbGxlcnMgaGFzIGl0cyBvd24gZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdmVyaWZ5aW5nIGRvd25sb2FkIGNvbm5lY3Rpb25zLlwKLVwKLQotXGIgXHVsIE90aGVyIGNoYW5nZXNcCi0KLVxiMCBcdWxub25lIFwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbAotXGNmMCBGb3Igb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHNlZSB0aGUgCitGb3Igb3RoZXIgY2hhbmdlcyBpbiB0aGlzIHJlbGVhc2UsIHNlZSB0aGUgCiBcaSBXaGF0J3MgbmV3CiBcaTAgIHNlY3Rpb24gaW4gdGhlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG9jLyJ9fXtcZmxkcnNsdCBEb2N1bWVudGF0aW9uIFNldH19IGZvciB0aGlzIHJlbGVhc2UgYW5kIGl0cyAKIFxpIFJlbGVhc2UgTm90ZXMKIFxpMCAgbGluayBhdCB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy8ifX17XGZsZHJzbHQgaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZHMvfX0uXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCiAKLVxiIFxjZjAgXHVsIFwKK1xiIFx1bCBcCiBQeXRob24gMyBhbmQgUHl0aG9uIDIgQ28tZXhpc3RlbmNlXAogCiBcYjAgXHVsbm9uZSBcCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgppbmRleCBkZmI3NWQ4Li4zYTlhYjA0IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKQEAgLTEsOCArMSw5IEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDNcY29jb2FzdWJydGYxNjAKK3tccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTUwNAogXGNvY29hc2NyZWVuZm9udHMxe1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO30KIHtcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KK3tcKlxleHBhbmRlZGNvbG9ydGJsO1xjc2dyYXlcYzEwMDAwMDt9CiBccGFwZXJ3MTE5MDVccGFwZXJoMTY4MzdcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzEyMjAwXHZpZXdoMTA4ODBcdmlld2tpbmQwCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKIFxmMFxmczI0IFxjZjAgVGhpcyBwYWNrYWdlIHdpbGwgaW5zdGFsbCAKIFxiIFB5dGhvbiAkRlVMTF9WRVJTSU9OCkBAIC0xNiw4ICsxNywxNCBAQAogXGIgSURMRQogXGIwIC5cCiBcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKLVxiIElNUE9SVEFOVDoKK1xiIFxjZjAgTkVXOgorXGIwICAgVGhlcmUgYXJlIGltcG9ydGFudCBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSByZWdhcmRpbmcgbmV0d29yayBzZWN1cml0eSBhbmQgdHJ1c3QgY2VydGlmaWNhdGVzLiAgUGxlYXNlIHNlZSB0aGUgUmVhZE1lIGZvciBtb3JlIGRldGFpbHMuXAorXAorXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwIElNUE9SVEFOVDoKIFxiMCAgCiBcYiBJRExFCiBcYjAgIGFuZCBvdGhlciBwcm9ncmFtcyB1c2luZyB0aGUgCmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWQyZTJkOAotLS0gL2Rldi9udWxsCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZApAQCAtMCwwICsxLDQ4IEBACisjIS9iaW4vc2gKKworL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zL0BQWVZFUkAvYmluL3B5dGhvbkBQWVZFUkAgPDwgIkVPRiIKKworIyBpbnN0YWxsX2NlcnRpZmkucHkKKyMKKyMgc2FtcGxlIHNjcmlwdCB0byBpbnN0YWxsIG9yIHVwZGF0ZSBhIHNldCBvZiBkZWZhdWx0IFJvb3QgQ2VydGlmaWNhdGVzCisjIGZvciB0aGUgc3NsIG1vZHVsZS4gIFVzZXMgdGhlIGNlcnRpZmljYXRlcyBwcm92aWRlZCBieSB0aGUgY2VydGlmaSBwYWNrYWdlOgorIyAgICAgICBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2NlcnRpZmkKKworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHNzbAoraW1wb3J0IHN0YXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK1NUQVRfMG83NzUgPSAoIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUiB8IHN0YXQuU19JWFVTUgorICAgICAgICAgICAgIHwgc3RhdC5TX0lSR1JQIHwgc3RhdC5TX0lXR1JQIHwgc3RhdC5TX0lYR1JQCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJPVEggfCAgICAgICAgICAgICAgICBzdGF0LlNfSVhPVEggKQorCitkZWYgbWFpbigpOgorICAgIG9wZW5zc2xfZGlyLCBvcGVuc3NsX2NhZmlsZSA9IG9zLnBhdGguc3BsaXQoCisgICAgICAgIHNzbC5nZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKS5vcGVuc3NsX2NhZmlsZSkKKworICAgIHByaW50KCIgLS0gcGlwIGluc3RhbGwgLS11cGdyYWRlIGNlcnRpZmkiKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICItRSIsICItcyIsICItbSIsICJwaXAiLCAiaW5zdGFsbCIsICItLXVwZ3JhZGUiLCAiY2VydGlmaSJdKQorCisgICAgaW1wb3J0IGNlcnRpZmkKKworICAgICMgY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBkZWZhdWx0IFNTTCBkaXJlY3RvcnkKKyAgICBvcy5jaGRpcihvcGVuc3NsX2RpcikKKyAgICByZWxwYXRoX3RvX2NlcnRpZmlfY2FmaWxlID0gb3MucGF0aC5yZWxwYXRoKGNlcnRpZmkud2hlcmUoKSkKKyAgICBwcmludCgiIC0tIHJlbW92aW5nIGFueSBleGlzdGluZyBmaWxlIG9yIGxpbmsiKQorICAgIHRyeToKKyAgICAgICAgb3MucmVtb3ZlKG9wZW5zc2xfY2FmaWxlKQorICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHByaW50KCIgLS0gY3JlYXRpbmcgc3ltbGluayB0byBjZXJ0aWZpIGNlcnRpZmljYXRlIGJ1bmRsZSIpCisgICAgb3Muc3ltbGluayhyZWxwYXRoX3RvX2NlcnRpZmlfY2FmaWxlLCBvcGVuc3NsX2NhZmlsZSkKKyAgICBwcmludCgiIC0tIHNldHRpbmcgcGVybWlzc2lvbnMiKQorICAgIG9zLmNobW9kKG9wZW5zc2xfY2FmaWxlLCBTVEFUXzBvNzc1KQorICAgIHByaW50KCIgLS0gdXBkYXRlIGNvbXBsZXRlIikKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKK0VPRgpkaWZmIC0tZ2l0IGEvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5IGIvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5CmluZGV4IDk4Njc2MGQuLjU5OTRjMTggMTAwNjQ0Ci0tLSBhL01hYy9JRExFL0lETEUuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9pZGxlbWFpbi5weQorKysgYi9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkKQEAgLTY4LDYgKzY4LDYgQEAKICAgICAgICAgYnJlYWsKIAogIyBOb3cgaXQgaXMgc2FmZSB0byBpbXBvcnQgaWRsZWxpYi4KLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBtYWluCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgbWFpbgogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCBiYTYzM2RhLi41MTkwNDM2IDEwMDY0NAotLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrIGIvTWFrZWZpbGUucHJlLmluCkBAIC00OSw2ICs0OSwxMCBAQAogTExWTV9QUk9GX01FUkdFUj1ATExWTV9QUk9GX01FUkdFUkAKIExMVk1fUFJPRl9GSUxFPUBMTFZNX1BST0ZfRklMRUAKIExMVk1fUFJPRl9FUlI9QExMVk1fUFJPRl9FUlJACitEVFJBQ0U9ICAgICAgICAgQERUUkFDRUAKK0RGTEFHUz0gICAgICAgICBAREZMQUdTQAorRFRSQUNFX0hFQURFUlM9IEBEVFJBQ0VfSEVBREVSU0AKK0RUUkFDRV9PQkpTPSAgICBARFRSQUNFX09CSlNACiAKIEdOVUxEPQkJQEdOVUxEQAogCkBAIC0xMTAsNiArMTE0LDcgQEAKIAogIyBNdWx0aWFyY2ggZGlyZWN0b3J5IChtYXkgYmUgZW1wdHkpCiBNVUxUSUFSQ0g9CUBNVUxUSUFSQ0hACitNVUxUSUFSQ0hfQ1BQRkxBR1MgPSBATVVMVElBUkNIX0NQUEZMQUdTQAogCiAjIEluc3RhbGwgcHJlZml4IGZvciBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZmlsZXMKIHByZWZpeD0JCUBwcmVmaXhACkBAIC0yMzUsNyArMjQwLDcgQEAKICMgVGhlIHRhc2sgdG8gcnVuIHdoaWxlIGluc3RydW1lbnRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBwcm9maWxlLW9wdCB0YXJnZXQuCiAjIFdlIGV4Y2x1ZGUgdW5pdHRlc3RzIHdpdGggLXggdGhhdCB0YWtlIGEgcmVkaWN1bGlvdXMgYW1vdW50IG9mIHRpbWUgdG8KICMgcnVuIGluIHRoZSBpbnN0cnVtZW50ZWQgdHJhaW5pbmcgYnVpbGQgb3IgZG8gbm90IHByb3ZpZGUgbXVjaCB2YWx1ZS4KLVBST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvIC14IHRlc3RfYXN5bmNvcmUgdGVzdF9nZGIgdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yayB0ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyIHRlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcgdGVzdF9tdWx0aXByb2Nlc3Npbmdfc3Bhd24gdGVzdF9zdWJwcm9jZXNzCitQUk9GSUxFX1RBU0s9LW0gdGVzdC5yZWdydGVzdCAtLXBnbwogCiAjIHJlcG9ydCBmaWxlcyBmb3IgZ2NvdiAvIGxjb3YgY292ZXJhZ2UgcmVwb3J0CiBDT1ZFUkFHRV9JTkZPPQkkKGFic19idWlsZGRpcikvY292ZXJhZ2UuaW5mbwpAQCAtMjU0LDkgKzI1OSw2IEBACiAJCU1vZHVsZXMvbWFpbi5vIFwKIAkJTW9kdWxlcy9nY21vZHVsZS5vCiAKLSMgVXNlZCBvZiBzaWduYWxtb2R1bGUubyBpcyBub3QgYXZhaWxhYmxlCi1TSUdOQUxfT0JKUz0JQFNJR05BTF9PQkpTQAotCiBJT19IPQkJTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKIAogSU9fT0JKUz0JXApAQCAtMjgxLDE4ICsyODMsNiBAQAogIyBQYXJzZXIKIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQogCi1QU1JDUz0JCVwKLQkJUGFyc2VyL2FjY2VsZXIuYyBcCi0JCVBhcnNlci9ncmFtbWFyMS5jIFwKLQkJUGFyc2VyL2xpc3Rub2RlLmMgXAotCQlQYXJzZXIvbm9kZS5jIFwKLQkJUGFyc2VyL3BhcnNlci5jIFwKLQkJUGFyc2VyL2JpdHNldC5jIFwKLQkJUGFyc2VyL21ldGFncmFtbWFyLmMgXAotCQlQYXJzZXIvZmlyc3RzZXRzLmMgXAotCQlQYXJzZXIvZ3JhbW1hci5jIFwKLQkJUGFyc2VyL3BnZW4uYwotCiBQT0JKUz0JCVwKIAkJUGFyc2VyL2FjY2VsZXIubyBcCiAJCVBhcnNlci9ncmFtbWFyMS5vIFwKQEAgLTMwNywxNiArMjk3LDYgQEAKIAogUEFSU0VSX09CSlM9CSQoUE9CSlMpIFBhcnNlci9teXJlYWRsaW5lLm8gUGFyc2VyL3BhcnNldG9rLm8gUGFyc2VyL3Rva2VuaXplci5vCiAKLVBHU1JDUz0JCVwKLQkJT2JqZWN0cy9vYm1hbGxvYy5jIFwKLQkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMuYyBcCi0JCVB5dGhvbi9teXNucHJpbnRmLmMgXAotCQlQeXRob24vcHljdHlwZS5jIFwKLQkJUGFyc2VyL3Rva2VuaXplcl9wZ2VuLmMgXAotCQlQYXJzZXIvcHJpbnRncmFtbWFyLmMgXAotCQlQYXJzZXIvcGFyc2V0b2tfcGdlbi5jIFwKLQkJUGFyc2VyL3BnZW5tYWluLmMKLQogUEdPQkpTPQkJXAogCQlPYmplY3RzL29ibWFsbG9jLm8gXAogCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5vIFwKQEAgLTMzMiw3ICszMTIsNiBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9wYXJzZXRvay5oIFwKIAkJJChzcmNkaXIpL1BhcnNlci90b2tlbml6ZXIuaAogCi1QR0VOU1JDUz0JJChQU1JDUykgJChQR1NSQ1MpCiBQR0VOT0JKUz0JJChQT0JKUykgJChQR09CSlMpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0zNDEsNyArMzIwLDcgQEAKIE9QQ09ERV9IX1NDUklQVD0gJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKIE9QQ09ERV9IPQkkKE9QQ09ERV9IX0RJUikvb3Bjb2RlLmgKIE9QQ09ERV9IX0dFTj0JJChQWVRIT05fRk9SX0dFTikgJChPUENPREVfSF9TQ1JJUFQpICQoc3JjZGlyKS9MaWIvb3Bjb2RlLnB5ICQoT1BDT0RFX0gpCi0jCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEFTVAogQVNUX0hfRElSPQlJbmNsdWRlCkBAIC00MTcsNyArMzk2LDggQEAKIAkJUHl0aG9uLyQoRFlOTE9BREZJTEUpIFwKIAkJJChMSUJPQkpTKSBcCiAJCSQoTUFDSERFUF9PQkpTKSBcCi0JCSQoVEhSRUFET0JKKQorCQkkKFRIUkVBRE9CSikgXAorCQkkKERUUkFDRV9PQkpTKQogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00NzEsMTMgKzQ1MSwyMSBAQAogCQkkKE9CSkVDVF9PQkpTKSBcCiAJCSQoUFlUSE9OX09CSlMpIFwKIAkJJChNT0RVTEVfT0JKUykgXAotCQkkKFNJR05BTF9PQkpTKSBcCiAJCSQoTU9ET0JKUykKIAogTElCUkFSWV9PQkpTPQlcCiAJCSQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSBcCiAJCVB5dGhvbi9mcm96ZW4ubwogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBEVHJhY2UKKworIyBPbiBzb21lIHN5c3RlbXMsIG9iamVjdCBmaWxlcyB0aGF0IHJlZmVyZW5jZSBEVHJhY2UgcHJvYmVzIG5lZWQgdG8gYmUgbW9kaWZpZWQKKyMgaW4tcGxhY2UgYnkgZHRyYWNlKDEpLgorRFRSQUNFX0RFUFMgPSBcCisJUHl0aG9uL2NldmFsLm8KKyMgWFhYOiBzaG91bGQgZ2Ntb2R1bGUsIGV0Yy4gYmUgaGVyZSwgdG9vPworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFJ1bGVzCiAKQEAgLTUzMywxNSArNTIxLDIzIEBACiAJICAgIC0tYmFzZS1kaXJlY3RvcnkgJChyZWFscGF0aCAkKGFic19idWlsZGRpcikpIFwKIAkgICAgLS1wYXRoICQocmVhbHBhdGggJChhYnNfc3JjZGlyKSkgXAogCSAgICAtLW91dHB1dC1maWxlICQoQ09WRVJBR0VfSU5GTykKLQk6ICMgcmVtb3ZlIDNyZCBwYXJ0eSBtb2R1bGVzIGFuZCBzeXN0ZW0gaGVhZGVycworCTogIyByZW1vdmUgM3JkIHBhcnR5IG1vZHVsZXMsIHN5c3RlbSBoZWFkZXJzIGFuZCBpbnRlcm5hbCBmaWxlcyB3aXRoCisJOiAjIGRlYnVnLCB0ZXN0IG9yIGR1bW15IGZ1bmN0aW9ucy4KIAlAbGNvdiAtLXJlbW92ZSAkKENPVkVSQUdFX0lORk8pIFwKKwkgICAgJyovTW9kdWxlcy9fYmxha2UyL2ltcGwvKicgXAogCSAgICAnKi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpKi8qJyBcCiAJICAgICcqL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvKicgXAorCSAgICAnKi9Nb2R1bGVzL19zaGEzL2tjcC8qJyBcCiAJICAgICcqL01vZHVsZXMvZXhwYXQvKicgXAogCSAgICAnKi9Nb2R1bGVzL3psaWIvKicgXAogCSAgICAnKi9JbmNsdWRlLyonIFwKKwkgICAgJyovTW9kdWxlcy94eCouYycgXAorCSAgICAnKi9QYXJzZXIvbGlzdG5vZGUuYycgXAorCSAgICAnKi9QeXRob24vcHlmcGUuYycgXAorCSAgICAnKi9QeXRob24vcHlzdHJjbXAuYycgXAogCSAgICAnL3Vzci9pbmNsdWRlLyonIFwKIAkgICAgJy91c3IvbG9jYWwvaW5jbHVkZS8qJyBcCisJICAgICcvdXNyL2xpYi9nY2MvKicgXAogCSAgICAtLW91dHB1dC1maWxlICQoQ09WRVJBR0VfSU5GTykKIAlAZ2VuaHRtbCAkKENPVkVSQUdFX0lORk8pIC0tb3V0cHV0LWRpcmVjdG9yeSAkKENPVkVSQUdFX1JFUE9SVCkgXAogCSAgICAkKENPVkVSQUdFX1JFUE9SVF9PUFRJT05TKQpAQCAtNTY0LDcgKzU2MCw3IEBACiAjIFJ1biAiQXJndW1lbnQgQ2xpbmljIiBvdmVyIGFsbCBzb3VyY2UgZmlsZXMKICMgKGRlcGVuZHMgb24gcHl0aG9uIGhhdmluZyBhbHJlYWR5IGJlZW4gYnVpbHQpCiAuUEhPTlk9Y2xpbmljCi1jbGluaWM6ICQoQlVJTERQWVRIT04pCitjbGluaWM6ICQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2Uyc19pbXBsLmMKIAkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAuL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgLS1tYWtlCiAKICMgQnVpbGQgdGhlIGludGVycHJldGVyCkBAIC01NzIsNyArNTY4LDcgQEAKIAkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIFByb2dyYW1zL3B5dGhvbi5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKIHBsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dAotCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdKScgPnBsYXRmb3JtCisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoIiVzLSVkLiVkIiAlIChnZXRfcGxhdGZvcm0oKSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKSknID5wbGF0Zm9ybQogCiAjIENyZWF0ZSBidWlsZCBkaXJlY3RvcnkgYW5kIGdlbmVyYXRlIHRoZSBzeXNjb25maWcgYnVpbGQtdGltZSBkYXRhIHRoZXJlLgogIyBweWJ1aWxkZGlyLnR4dCBjb250YWlucyB0aGUgbmFtZSBvZiB0aGUgYnVpbGQgZGlyIGFuZCBpcyB1c2VkIGZvcgpAQCAtNTk0LDYgKzU5MCwxMSBAQAogTW9kdWxlcy9fbWF0aC5vOiBNb2R1bGVzL19tYXRoLmMgTW9kdWxlcy9fbWF0aC5oCiAJJChDQykgLWMgJChDQ1NIQVJFRCkgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJDwKIAorIyBibGFrZTJzIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gYmxha2UyYgorJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJzX2ltcGwuYzogJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiX2ltcGwuYyAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYjJzLnB5CisJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkgLWYgJEAKKwogIyBCdWlsZCB0aGUgc2hhcmVkIG1vZHVsZXMKICMgVW5kZXIgR05VIG1ha2UsIE1BS0VGTEFHUyBhcmUgc29ydGVkIGFuZCBub3JtYWxpemVkOyB0aGUgJ3MnIGZvcgogIyAtcywgLS1zaWxlbnQgb3IgLS1xdWlldCBpcyBhbHdheXMgdGhlIGZpcnN0IGNoYXIuCkBAIC02MDcsNiArNjA4LDcgQEAKIAkJX1RDTFRLX0lOQ0xVREVTPSckKFRDTFRLX0lOQ0xVREVTKScgX1RDTFRLX0xJQlM9JyQoVENMVEtfTElCUyknIFwKIAkJJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2Rpcikvc2V0dXAucHkgJCRxdWlldCBidWlsZAogCisKICMgQnVpbGQgc3RhdGljIGxpYnJhcnkKICMgYXZvaWQgbG9uZyBjb21tYW5kIGxpbmVzLCBzYW1lIGFzIExJQlJBUllfT0JKUwogJChMSUJSQVJZKTogJChMSUJSQVJZX09CSlMpCkBAIC02MTUsNyArNjE3LDcgQEAKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoUEFSU0VSX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSkVDVF9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChQWVRIT05fT0JKUykgUHl0aG9uL2Zyb3plbi5vCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRFVMRV9PQkpTKSAkKFNJR05BTF9PQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RVTEVfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9ET0JKUykKIAkkKFJBTkxJQikgJEAKIApAQCAtNzE5LDExICs3MjEsMTEgQEAKIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliOiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKQogCSQoTElOS0NDKSAkKFBZX0xERkxBR1MpIC1vICRAIFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCi1QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgorUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgUHl0aG9uL21hcnNoYWwuYwogCS4vUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAogCSAgICAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAogCi1QeXRob24vaW1wb3J0bGliLmg6IEBHRU5FUkFURURfQ09NTUVOVEAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgorUHl0aG9uL2ltcG9ydGxpYi5oOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgUHl0aG9uL21hcnNoYWwuYwogCS4vUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIgXAogCSAgICAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9pbXBvcnRsaWIuaAogCkBAIC03MzUsNyArNzM3LDYgQEAKIAkJJChPQkpFQ1RfT0JKUykgXAogCQkkKFBZVEhPTl9PQkpTKSBcCiAJCSQoTU9EVUxFX09CSlMpIFwKLQkJJChTSUdOQUxfT0JKUykgXAogCQkkKE1PRE9CSlMpIFwKIAkJJChzcmNkaXIpL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKIAkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSBcCkBAIC03ODEsNiArNzgyLDcgQEAKIFB5dGhvbi9zeXNtb2R1bGUubzogJChzcmNkaXIpL1B5dGhvbi9zeXNtb2R1bGUuYyBNYWtlZmlsZQogCSQoQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIFwKIAkJLURBQklGTEFHUz0nIiQoQUJJRkxBR1MpIicgXAorCQkkKE1VTFRJQVJDSF9DUFBGTEFHUykgXAogCQktbyAkQCAkKHNyY2RpcikvUHl0aG9uL3N5c21vZHVsZS5jCiAKICQoSU9fT0JKUyk6ICQoSU9fSCkKQEAgLTg2Miw3ICs4NjQsOCBAQAogCiBPYmplY3RzL3VuaWNvZGVvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvdW5pY29kZW9iamVjdC5jICQoVU5JQ09ERV9ERVBTKQogCi1PYmplY3RzL2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKK09iamVjdHMvb2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvZGljdC1jb21tb24uaAorT2JqZWN0cy9kaWN0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oICQoc3JjZGlyKS9PYmplY3RzL2RpY3QtY29tbW9uLmgKIE9iamVjdHMvc2V0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCiAKICQoT1BDT0RFVEFSR0VUU19IKTogJChPUENPREVUQVJHRVRHRU5fRklMRVMpCkBAIC04NzIsNiArODc1LDE4IEBACiAKIFB5dGhvbi9mcm96ZW4ubzogUHl0aG9uL2ltcG9ydGxpYi5oIFB5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAogCisjIEdlbmVyYXRlIERUcmFjZSBwcm9iZSBtYWNyb3MsIHRoZW4gcmVuYW1lIHRoZW0gKFBZVEhPTl8gLT4gUHlEVHJhY2VfKSB0bworIyBmb2xsb3cgb3VyIG5hbWluZyBjb252ZW50aW9ucy4gZHRyYWNlKDEpIHVzZXMgdGhlIG91dHB1dCBmaWxlbmFtZSB0byBnZW5lcmF0ZQorIyBhbiBpbmNsdWRlIGd1YXJkLCBzbyB3ZSBjYW4ndCB1c2UgYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gaXRzIG91dHB1dC4KK0luY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmg6ICQoc3JjZGlyKS9JbmNsdWRlL3B5ZHRyYWNlLmQKKwkkKERUUkFDRSkgJChERkxBR1MpIC1vICRAIC1oIC1zICQ8CisJOiBzZWQgaW4tcGxhY2UgZWRpdCB3aXRoIFBPU0lYLW9ubHkgdG9vbHMKKwlzZWQgJ3MvUFlUSE9OXy9QeURUcmFjZV8vJyAkQCA+ICRALnRtcAorCW12ICRALnRtcCAkQAorCitQeXRob24vcHlkdHJhY2UubzogJChzcmNkaXIpL0luY2x1ZGUvcHlkdHJhY2UuZCAkKERUUkFDRV9ERVBTKQorCSQoRFRSQUNFKSAkKERGTEFHUykgLW8gJEAgLUcgLXMgJDwgJChEVFJBQ0VfREVQUykKKwogT2JqZWN0cy90eXBlb2JqZWN0Lm86IE9iamVjdHMvdHlwZXNsb3RzLmluYwogT2JqZWN0cy90eXBlc2xvdHMuaW5jOiAkKHNyY2RpcikvSW5jbHVkZS90eXBlc2xvdHMuaCAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMucHkKIAkkKFBZVEhPTl9GT1JfR0VOKSAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMucHkgPCAkKHNyY2RpcikvSW5jbHVkZS90eXBlc2xvdHMuaCBPYmplY3RzL3R5cGVzbG90cy5pbmMKQEAgLTkyOSw2ICs5NDQsNyBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9vYmppbXBsLmggXAogCQkkKE9QQ09ERV9IKSBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL29zZGVmcy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb3Ntb2R1bGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BnZW4uaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BnZW5oZWFkZXJzLmggXApAQCAtOTM3LDYgKzk1Myw3IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Y2Fwc3VsZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHljdHlwZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlkZWJ1Zy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlkdHJhY2UuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZXJyb3JzLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWZwZS5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHloYXNoLmggXApAQCAtOTY4LDcgKzk4NSw4IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3dlYWtyZWZvYmplY3QuaCBcCiAJCXB5Y29uZmlnLmggXAogCQkkKFBBUlNFUl9IRUFERVJTKSBcCi0JCSQoQVNUX0gpCisJCSQoQVNUX0gpIFwKKwkJJChEVFJBQ0VfSEVBREVSUykKIAogJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgUHJvZ3JhbXMvcHl0aG9uLm86ICQoUFlUSE9OX0hFQURFUlMpCiAKQEAgLTk3OCw3ICs5OTYsNyBAQAogVEVTVE9QVFM9CSQoRVhUUkFURVNUT1BUUykKIFRFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoVEVTVFBZVEhPTk9QVFMpCiBURVNUUlVOTkVSPQkkKFRFU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQotVEVTVFRJTUVPVVQ9CTM2MDAKK1RFU1RUSU1FT1VUPQkxMjAwCiAKICMgUnVuIGEgYmFzaWMgc2V0IG9mIHJlZ3Jlc3Npb24gdGVzdHMuCiAjIFRoaXMgZXhjbHVkZXMgc29tZSB0ZXN0cyB0aGF0IGFyZSBwYXJ0aWN1bGFybHkgcmVzb3VyY2UtaW50ZW5zaXZlLgpAQCAtMTAxNiw3ICsxMDM0LDcgQEAKIAkJLUBpZiB3aGljaCBweWJ1aWxkYm90LmlkZW50aWZ5ID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCiAJCQlweWJ1aWxkYm90LmlkZW50aWZ5ICJDQz0nJChDQyknIiAiQ1hYPSckKENYWCknIjsgXAogCQlmaQotCQkkKFRFU1RSVU5ORVIpIC1qIDEgLXUgYWxsIC1XIC0tdGltZW91dD0kKFRFU1RUSU1FT1VUKSAkKFRFU1RPUFRTKQorCQkkKFRFU1RSVU5ORVIpIC1qIDEgLXUgYWxsIC1XIC0tc2xvd2VzdCAtLXRpbWVvdXQ9JChURVNUVElNRU9VVCkgJChURVNUT1BUUykKIAogUVVJQ0tURVNUT1BUUz0JJChURVNUT1BUUykgLXggdGVzdF9zdWJwcm9jZXNzIHRlc3RfaW8gdGVzdF9saWIydG8zIFwKIAkJdGVzdF9tdWx0aWJ5dGVjb2RlYyB0ZXN0X3VybGxpYjJfbG9jYWxuZXQgdGVzdF9pdGVydG9vbHMgXApAQCAtMTE2OSwxNiArMTE4NywxNiBAQAogCShjZCAkKERFU1RESVIpJChNQU5ESVIpL21hbjE7ICQoTE4pIC1zIHB5dGhvbiQoVkVSU0lPTikuMSBweXRob24zLjEpCiAKICMgSW5zdGFsbCB0aGUgbGlicmFyeQotUExBVERJUj0JQFBMQVRESVJACi1NQUNIREVQUz0JJChQTEFURElSKQogWE1MTElCU1VCRElSUz0gIHhtbCB4bWwvZG9tIHhtbC9ldHJlZSB4bWwvcGFyc2VycyB4bWwvc2F4CiBMSUJTVUJESVJTPQl0a2ludGVyIHRraW50ZXIvdGVzdCB0a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyIFwKIAkJdGtpbnRlci90ZXN0L3Rlc3RfdHRrIHNpdGUtcGFja2FnZXMgdGVzdCBcCiAJCXRlc3QvYXVkaW9kYXRhIFwKIAkJdGVzdC9jYXBhdGggdGVzdC9kYXRhIFwKIAkJdGVzdC9jamtlbmNvZGluZ3MgdGVzdC9kZWNpbWFsdGVzdGRhdGEgdGVzdC94bWx0ZXN0ZGF0YSBcCisJCXRlc3QvZHRyYWNlZGF0YSBcCiAJCXRlc3QvZWludHJkYXRhIFwKIAkJdGVzdC9pbWdoZHJkYXRhIFwKKwkJdGVzdC9saWJyZWdydGVzdCBcCiAJCXRlc3Qvc3VicHJvY2Vzc2RhdGEgdGVzdC9zbmRoZHJkYXRhIHRlc3Qvc3VwcG9ydCBcCiAJCXRlc3QvdHJhY2VkbW9kdWxlcyB0ZXN0L2VuY29kZWRfbW9kdWxlcyBcCiAJCXRlc3QvdGVzdF9pbXBvcnQgXApAQCAtMTIyNyw4ICsxMjQ1LDggQEAKIAkJbXVsdGlwcm9jZXNzaW5nIG11bHRpcHJvY2Vzc2luZy9kdW1teSBcCiAJCXVuaXR0ZXN0IHVuaXR0ZXN0L3Rlc3QgdW5pdHRlc3QvdGVzdC90ZXN0bW9jayBcCiAJCXZlbnYgdmVudi9zY3JpcHRzIHZlbnYvc2NyaXB0cy9wb3NpeCBcCi0JCWN1cnNlcyBweWRvY19kYXRhICQoTUFDSERFUFMpCi1saWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMKKwkJY3Vyc2VzIHB5ZG9jX2RhdGEKK2xpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCiAJQGZvciBpIGluICQoU0NSSVBURElSKSAkKExJQkRFU1QpOyBcCiAJZG8gXAogCQlpZiB0ZXN0ICEgLWQgJChERVNURElSKSQkaTsgdGhlbiBcCkBAIC0xMjQ4LDcgKzEyNjYsNyBAQAogCQllbHNlCXRydWU7IFwKIAkJZmk7IFwKIAlkb25lCi0JQGZvciBpIGluICQoc3JjZGlyKS9MaWIvKi5weSBgY2F0IHB5YnVpbGRkaXIudHh0YC9fc3lzY29uZmlnZGF0YS5weTsgXAorCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHk7IFwKIAlkbyBcCiAJCWlmIHRlc3QgLXggJCRpOyB0aGVuIFwKIAkJCSQoSU5TVEFMTF9TQ1JJUFQpICQkaSAkKERFU1RESVIpJChMSUJERVNUKTsgXApAQCAtMTI4Myw2ICsxMzAxLDggQEAKIAkJCWVzYWM7IFwKIAkJZG9uZTsgXAogCWRvbmUKKwkkKElOU1RBTExfREFUQSkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUylfJChNQUNIREVQKV8kKE1VTFRJQVJDSCkucHkgXAorCQkkKERFU1RESVIpJChMSUJERVNUKTsgXAogCSQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvTElDRU5TRSAkKERFU1RESVIpJChMSUJERVNUKS9MSUNFTlNFLnR4dAogCWlmIHRlc3QgLWQgJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzOyB0aGVuIFwKIAkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9Nb2R1bGVzL3h4bW9kdWxlLmMgXApAQCAtMTMyMCwyMyArMTM0MCw2IEBACiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dAogCi0jIENyZWF0ZSB0aGUgUExBVERJUiBzb3VyY2UgZGlyZWN0b3J5LCBpZiBvbmUgd2Fzbid0IGRpc3RyaWJ1dGVkLi4KLSQoc3JjZGlyKS9MaWIvJChQTEFURElSKToKLQlta2RpciAkKHNyY2RpcikvTGliLyQoUExBVERJUikKLQljcCAkKHNyY2RpcikvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbiAkKHNyY2RpcikvTGliLyQoUExBVERJUikvcmVnZW4KLQlleHBvcnQgUEFUSDsgUEFUSD0iYHB3ZGA6JCRQQVRIIjsgXAotCWV4cG9ydCBQWVRIT05QQVRIOyBQWVRIT05QQVRIPSJgcHdkYC9MaWIiOyBcCi0JZXhwb3J0IERZTERfRlJBTUVXT1JLX1BBVEg7IERZTERfRlJBTUVXT1JLX1BBVEg9ImBwd2RgIjsgXAotCWV4cG9ydCBFWEU7IEVYRT0iJChCVUlMREVYRSkiOyBcCi0JaWYgWyAtbiAiJChNVUxUSUFSQ0gpIiBdOyB0aGVuIGV4cG9ydCBNVUxUSUFSQ0g7IE1VTFRJQVJDSD0kKE1VTFRJQVJDSCk7IGZpOyBcCi0JZXhwb3J0IFBZVEhPTl9GT1JfQlVJTEQ7IFwKLQlpZiBbICIkKEJVSUxEX0dOVV9UWVBFKSIgPSAiJChIT1NUX0dOVV9UWVBFKSIgXTsgdGhlbiBcCi0JICBQWVRIT05fRk9SX0JVSUxEPSIkKEJVSUxEUFlUSE9OKSI7IFwKLQllbHNlIFwKLQkgIFBZVEhPTl9GT1JfQlVJTEQ9IiQoUFlUSE9OX0ZPUl9CVUlMRCkiOyBcCi0JZmk7IFwKLQljZCAkKHNyY2RpcikvTGliLyQoUExBVERJUik7ICQoUlVOU0hBUkVEKSAuL3JlZ2VuCi0KIHB5dGhvbi1jb25maWc6ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gTWlzYy9weXRob24tY29uZmlnLnNoCiAJIyBTdWJzdGl0dXRpb24gaGFwcGVucyBoZXJlLCBhcyB0aGUgY29tcGxldGVseS1leHBhbmRlZCBCSU5ESVIKIAkjIGlzIG5vdCBhdmFpbGFibGUgaW4gY29uZmlndXJlCkBAIC0xNDMzLDcgKzE0MzYsNyBAQAogCQktLWluc3RhbGwtc2NyaXB0cz0kKEJJTkRJUikgXAogCQktLWluc3RhbGwtcGxhdGxpYj0kKERFU1RTSEFSRUQpIFwKIAkJLS1yb290PSQoREVTVERJUikvCi0JLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhLnB5CisJLXJtICQoREVTVERJUikkKERFU1RTSEFSRUQpL19zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpXyQoTUFDSERFUClfJChNVUxUSUFSQ0gpLnB5CiAJLXJtIC1yICQoREVTVERJUikkKERFU1RTSEFSRUQpL19fcHljYWNoZV9fCiAKICMgSGVyZSBhcmUgYSBjb3VwbGUgb2YgdGFyZ2V0cyBmb3IgTWFjT1NYIGFnYWluLCB0byBpbnN0YWxsIGEgZnVsbApAQCAtMTQ3OSwxMCArMTQ4MiwxMCBAQAogIyBJbnN0YWxsIGEgbnVtYmVyIG9mIHN5bWxpbmtzIHRvIGtlZXAgc29mdHdhcmUgdGhhdCBleHBlY3RzIGEgbm9ybWFsIHVuaXgKICMgaW5zdGFsbCAod2hpY2ggaW5jbHVkZXMgcHl0aG9uLWNvbmZpZykgaGFwcHkuCiBmcmFtZXdvcmtpbnN0YWxsbWFjbGliOgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5hIgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKFZFUlNJT04pLmEiCi0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChWRVJTSU9OKS5keWxpYiIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKExEVkVSU0lPTikuYSIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKExEVkVSU0lPTikuZHlsaWIiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChWRVJTSU9OKS5hIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoVkVSU0lPTikuZHlsaWIiCiAJJChMTikgLWZzICIuLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9saWJweXRob24kKExEVkVSU0lPTikuZHlsaWIiCiAJJChMTikgLWZzICIuLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9saWJweXRob24kKFZFUlNJT04pLmR5bGliIgogCkBAIC0xNTk3LDYgKzE2MDAsNyBAQAogCS1ybSAtZiBMaWIvbGliMnRvMy8qR3JhbW1hcioucGlja2xlCiAJLXJtIC1mIFByb2dyYW1zL190ZXN0ZW1iZWQgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKIAktZmluZCBidWlsZCAtdHlwZSBmIC1hICEgLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCisJLXJtIC1mIEluY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmgKIAogcHJvZmlsZS1yZW1vdmFsOgogCWZpbmQgLiAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKQEAgLTE2NjEsNyArMTY2NSw2IEBACiAJCS1vIC1uYW1lICcqLnRtU25pcHBldCcgXAogCQktbyAtbmFtZSAnU2V0dXAnIFwKIAkJLW8gLW5hbWUgJ1NldHVwLionIFwKLQkJLW8gLW5hbWUgcmVnZW4gXAogCQktbyAtbmFtZSBSRUFETUUgXAogCQktbyAtbmFtZSBORVdTIFwKIAkJLW8gLW5hbWUgSElTVE9SWSBcCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggMmJhOWVhMS4uNzcxMTE1MiAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtMTIwLDYgKzEyMCw3IEBACiBUaG9tYXMgQmVsbG1hbgogQWxleGFuZGVyIOKAnNCh0LDRiNCw4oCdIEJlbG9wb2xza3kKIEVsaSBCZW5kZXJza3kKK05pa2hpbCBCZW5lc2NoCiBEYXZpZCBCZW5qYW1pbgogT3NjYXIgQmVuamFtaW4KIEFuZHJldyBCZW5uZXR0cwpAQCAtMTU1LDYgKzE1Niw3IEBACiBQYXVsIEJvZGRpZQogTWF0dGhldyBCb2VkaWNrZXIKIFJvYmluIEJvZXJkaWprCitOaWtvbGF5IEJvZ295Y2hldgogRGF2aWQgQm9sZW4KIFdvdXRlciBCb2xzdGVybGVlCiBHYXdhaW4gQm9sdG9uCkBAIC0yNDEsNiArMjQzLDcgQEAKIE1pY2hhZWwgQ2V0cnVsbwogRGF2ZSBDaGFtYmVycwogUGFzY2FsIENoYW1ib24KK05pY2hvbGFzIENoYW1tYXMKIEpvaG4gQ2hhbmRsZXIKIEh5ZS1TaGlrIENoYW5nCiBKZWZmcmV5IENoYW5nCkBAIC0zMDUsMTUgKzMwOCwxOCBAQAogRGF2aWQgQ291cm5hcGVhdQogSnVsaWVuIENvdXJ0ZWF1CiBTdGV2ZSBDb3VzaW5zCitGcmFuY2lzY28gQ291em8KIEFsZXggQ292ZW50cnkKIE1hdHRoZXcgRGl4b24gQ293bGVzCiBSeWFuIENveW5lcgogQ2hyaXN0b3BoZXIgQS4gQ3JhaWcKIEplcmVteSBDcmF2ZW4KIExhdXJhIENyZWlnaHRvbgorVHlsZXIgQ3JvbXB0b24KIFNpbW9uIENyb3NzCiBGZWxpcGUgQ3J1egogRHJldyBDc2lsbGFnCitBbGVzc2FuZHJvIEN1Y2NpCiBKb2FxdWluIEN1ZW5jYSBBYmVsYQogSm9obiBDdWdpbmkKIFRvbSBDdWxsaXRvbgpAQCAtMzU3LDYgKzM2Myw3IEBACiBZdmVzIERpb25uZQogRGFuaWVsIERpdHRtYXIKIEpvc2lwIERqb2xvbmdhCitXYWx0ZXIgRMO2cndhbGQKIEphcm9taXIgRG9sZWNlawogSXNtYWlsIERvbm1legogUm9iZXJ0IERvbm9odWUKQEAgLTM4NCw3ICszOTEsNiBAQAogS2FybWVuIER5a3N0cmEKIEpvc2lwIER6b2xvbmdhCiBNYXhpbSBEenVtYW5lbmtvCi1XYWx0ZXIgRMO2cndhbGQKIEhhbnMgRWNrYXJkdAogUm9kb2xwaG8gRWNraGFyZHQKIFVscmljaCBFY2toYXJkdApAQCAtNTQyLDggKzU0OCwxMCBAQAogTGFycyBHdXN0w6RiZWwKIFRob21hcyBHw7x0dGxlcgogSm9uYXMgSC4KK0pvc2VwaCBIYWNrbWFuCiBCYXJyeSBIYWRkb3cKIFBoaWxpcHAgSGFnZW1laXN0ZXIKK0pvaG4gSGFnZW4KIFBhdWwgdGVuIEhhZ2VuCiBSYXNtdXMgSGFobgogUGV0ZXIgSGFpZ2h0CkBAIC03ODAsNiArNzg4LDcgQEAKIE1hcmtvIEtvaHRhbGEKIFZhanJhc2t5IEtvawogR3VpZG8gS29sbGVyaWUKK0phY2VrIEtvxYJvZHppZWoKIEphY2VrIEtvbmllY3pueQogQXJrYWR5IEtvcGx5YXJvdgogUGV0ZXIgQS4gS29yZW4KQEAgLTc5MSw2ICs4MDAsNyBAQAogSmVyenkgS296ZXJhCiBNYWtzaW0gS296eWFyY2h1awogU3RlZmFuIEtyYWgKK1JvbGYgS3JhaGwKIEJvYiBLcmFzCiBTZWJhc3RpYW4gS3JlZnQKIEhvbGdlciBLcmVrZWwKQEAgLTgyMyw2ICs4MzMsNyBAQAogVGlubyBMYW5nZQogR2xlbm4gTGFuZ2ZvcmQKIEFuZHJldyBMYW5nbWVhZAorV29sZmdhbmcgTGFuZ25lcgogRGV0bGVmIExhbm5lcnQKIFNvcmVuIExhcnNlbgogQW1vcyBMYXR0ZWllcgpAQCAtODg1LDI0ICs4OTYsMjcgQEAKIEdyZWdvciBMaW5nbAogRXZlcmV0dCBMaXBtYW4KIE1pcmtvIExpc3MKK0FsZXhhbmRlciBMaXUKIE5pY2sgTG9ja3dvb2QKIFN0ZXBoYW5pZSBMb2Nrd29vZAorTWFydGluIHZvbiBMw7Z3aXMKIEh1Z28gTG9wZXMgVGF2YXJlcwogR3VpbGxlcm1vIEzDs3Blei1BbmdsYWRhCiBBbm5lIExvcmQKK0FsZXggTG9yZFRob3JzZW4KIFRvbSBMb3JlZG8KIEp1c3RpbiBMb3ZlCiBOZWQgSmFja3NvbiBMb3ZlbHkKIFBldGVyIExvdmV0dAogQ2hhbG1lciBMb3dlCiBKYXNvbiBMb3dlCi1NYXJ0aW4gdm9uIEzDtndpcwogVG9ueSBMb3duZHMKIFJheSBMb3l6YWdhCiBLYW5nLUhhbyAoS2VubnkpIEx1CiBMdWthcyBMdWVnCiBMb3JlbiBMdWtlCiBGcmVkcmlrIEx1bmRoCitNaWtlIEx1bmR5CiBaaG9uZ3l1ZSBMdW8KIE1hcmsgTHV0egogVGFyYXMgTHlhcHVuCkBAIC0xMTQ0LDkgKzExNTgsMTEgQEAKIEdlb2ZmIFBoaWxicmljawogR2F2cmllIFBoaWxpcHNvbgogQWRyaWFuIFBoaWxsaXBzCitEdXN0eSBQaGlsbGlwcwogQ2hyaXN0b3BoZXIgSi4gUGhvZW5peAogSmFtZXMgUGlja2VyaW5nCiBOZWFsZSBQaWNrZXR0CitTdGV2ZSBQaWVyY3kKIEppbSBTdC4gUGllcnJlCiBEYW4gUGllcnNvbgogTWFydGlqbiBQaWV0ZXJzCkBAIC0xMTk4LDYgKzEyMTQsNyBAQAogQmF5YXJkIFJhbmRlbAogVmFycHUgUmFudGFsYQogQnJvZGllIFJhbworUsOpbWkgUmFtcGluCiBTZW5rbyBSYXNpYwogQW50dGkgUmFzaW5lbgogTmlrb2xhdXMgUmF0aApAQCAtMTI0OCw2ICsxMjY1LDcgQEAKIEtldmluIFJvZGdlcnMKIFNlYW4gUm9kbWFuCiBHaWFtcGFvbG8gUm9kb2xhCitNYXVybyBTLiBNLiBSb2RyaWd1ZXMKIEVsc29uIFJvZHJpZ3VlegogQWRpIFJvaWJhbgogTHVpcyBSb2phcwpAQCAtMTI5MCw2ICsxMzA4LDcgQEAKIENvbnN0YW50aW5hIFMuCiBQYXRyaWNrIFNhYmluCiBTw6liYXN0aWVuIFNhYmzDqQorQW1pdCBTYWhhCiBTdW1hbiBTYWhhCiBIYWppbWUgU2FpdG91CiBHZW9yZ2UgU2Fra2lzCkBAIC0xMzIzLDYgKzEzNDIsNyBAQAogUGV0ZXIgU2NobmVpZGVyLUthbXAKIEFydmluIFNjaG5lbGwKIE5vZmFyIFNjaG5pZGVyCitFZCBTY2hvdXRlbgogU2NvdHQgU2NocmFtCiBSb2JpbiBTY2hyZWliZXIKIENoYWQgSi4gU2Nocm9lZGVyCkBAIC0xMzk3LDYgKzE0MTcsNyBAQAogUm95IFNtaXRoCiBSeWFuIFNtaXRoLVJvYmVydHMKIFJhZmFsIFNtb3RyenlrCitKb3NoIFNuaWRlcgogRXJpYyBTbm93CiBEaXJrIFNvZWRlCiBOaXIgU29mZmVyCkBAIC0xNDI0LDExICsxNDQ1LDEzIEBACiBNYXJlayBTdGVwbmlvd3NraQogQmFydWNoIFN0ZXJpbgogQ2hyaXMgU3Rlcm4KK0VsaSBTdGV2ZW5zCiBBbGV4IFN0ZXdhcnQKIFZpY3RvciBTdGlubmVyCiBSaWNoYXJkIFN0b2FrbGV5CiBQZXRlciBTdG9laHIKIENhc3BlciBTdG9lbAorRGFuaWVsIFN0b2tlcwogTWljaGFlbCBTdG9uZQogU2VyaGl5IFN0b3JjaGFrYQogS2VuIFN0b3gKQEAgLTE0NTQsNiArMTQ3Nyw3IEBACiBQaW90ciBTemN6ZXBhbmlhawogQW1pciBTemVrZWx5CiBNYWNpZWogU3p1bGlrCitKb2VsIFRhZGRlaQogQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMKIEhpZGVha2kgVGFrYWhhc2hpCiBUYWthc2UgQXJpaGlybwpAQCAtMTQ2NSw4ICsxNDg5LDEwIEBACiBDaHJpc3RpYW4gVGFuemVyCiBTdGV2ZW4gVGFzY2h1awogQW15IFRheWxvcgorSnVsaWFuIFRheWxvcgogTW9udHkgVGF5bG9yCiBBbmF0b2x5IFRlY2h0b25paworTWFydGluIFRlaWNobWFubgogR3VzdGF2byBUZW1wbGUKIE1pa2hhaWwgVGVyZWtob3YKIFZpY3RvciBUZXJyw7NuCkBAIC0xNjQ4LDYgKzE2NzQsNyBAQAogQWxha3NoZW5kcmEgWWFkYXYKIEhpcm9rYXp1IFlhbWFtb3RvCiBLYS1QaW5nIFllZQorQ2hpIEhzdWFuIFllbgogSmFzb24gWWVvCiBFdW5nSnVuIFlpCiBCb2IgWW9kbG93c2tpCkBAIC0xNjc2LDQgKzE3MDMsMyBAQAogRG91ZyBab25na2VyCiBQZXRlciDDhXN0cmFuZAogZXZpbHplcm8KLUNoaSBIc3VhbiBZZW4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUwppbmRleCBmNzIyNmZkLi41NDJjMzI5IDEwMDY0NAotLS0gYS9NaXNjL05FV1MKKysrIGIvTWlzYy9ORVdTCkBAIC0yLDI2ICsyLDE0MyBAQAogUHl0aG9uIE5ld3MKICsrKysrKysrKysrCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4zIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotUmVsZWFzZSBkYXRlOiBUQkEKKypSZWxlYXNlIGRhdGU6IFhYWFgtWFgtWFgqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyODUwOTogZGljdC51cGRhdGUoKSBubyBsb25nZXIgYWxsb2NhdGUgdW5uZWNlc3NhcnkgbGFyZ2UgbWVtb3J5LgorCiAtIElzc3VlICMyODQyNjogRml4ZWQgcG90ZW50aWFsIGNyYXNoIGluIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoKSBpbiBkZWJ1ZwogICBidWlsZC4KIAorLSBJc3N1ZSAjMjg1MTc6IEZpeGVkIG9mLWJ5LW9uZSBlcnJvciBpbiB0aGUgcGVlcGhvbGUgb3B0aW1pemVyIHRoYXQgY2F1c2VkCisgIGtlZXBpbmcgdW5yZWFjaGFibGUgY29kZS4KKworLSBJc3N1ZSAjMjgyMTQ6IEltcHJvdmVkIGV4Y2VwdGlvbiByZXBvcnRpbmcgZm9yIHByb2JsZW1hdGljIF9fc2V0X25hbWVfXworICBhdHRyaWJ1dGVzLgorCiAtIElzc3VlICMyMzc4MjogRml4ZWQgcG9zc2libGUgbWVtb3J5IGxlYWsgaW4gX1B5VHJhY2ViYWNrX0FkZCgpIGFuZCBleGNlcHRpb24KICAgbG9zcyBpbiBQeVRyYWNlQmFja19IZXJlKCkuCiAKKy0gSXNzdWUgIzI4NDcxOiBGaXggIlB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIGNhbGxlZCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCIKKyAgY3Jhc2ggaW4gc29ja2V0LnNldGJsb2NraW5nLgorCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjMyNjI6IFRoZSB3ZWJicm93c2VyIG1vZHVsZSBub3cgc3VwcG9ydHMgRmlyZWZveCAzNisgYW5kIGRlcml2ZWQKKyAgYnJvd3NlcnMuICBCYXNlZCBvbiBwYXRjaCBieSBPbGVnIEJyb3l0bWFuLgorCistIElzc3VlICMyNzkzOTogRml4ZWQgYnVncyBpbiB0a2ludGVyLnR0ay5MYWJlbGVkU2NhbGUgYW5kIHRraW50ZXIuU2NhbGUgY2F1c2VkCisgIGJ5IHJlcHJlc2VudGluZyB0aGUgc2NhbGUgYXMgZmxvYXQgdmFsdWUgaW50ZXJuYWxseSBpbiBUay4gIHRraW50ZXIuSW50VmFyCisgIG5vdyB3b3JrcyBpZiBmbG9hdCB2YWx1ZSBpcyBzZXQgdG8gdW5kZXJseWluZyBUayB2YXJpYWJsZS4KKworLSBJc3N1ZSAjMTg4NDQ6IFRoZSB2YXJpb3VzIHdheXMgb2Ygc3BlY2lmaW5nIHdlaWdodHMgZm9yIHJhbmRvbS5jaG9pY2VzKCkKKyAgbm93IHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0IHNlcXVlbmNlcy4KKworLSBJc3N1ZSAjMjgyNTU6IGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLnBybW9udGgoKSBubyBsb25nZXIgcHJpbnRzIGEgc3BhY2UKKyAgYXQgdGhlIHN0YXJ0IG9mIG5ldyBsaW5lIGFmdGVyIHByaW50aW5nIGEgbW9udGgncyBjYWxlbmRhci4gIFBhdGNoIGJ5CisgIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyMDQ5MTogVGhlIHRleHR3cmFwLlRleHRXcmFwcGVyIGNsYXNzIG5vdyBob25vcnMgbm9uLWJyZWFraW5nIHNwYWNlcy4KKyAgQmFzZWQgb24gcGF0Y2ggYnkgS2FhcmxlIFJpdHZhbmVuLgorCistIElzc3VlICMyODM1Mzogb3MuZndhbGsoKSBubyBsb25nZXIgZmFpbHMgb24gYnJva2VuIGxpbmtzLgorCistIElzc3VlICMyODQzMDogRml4IGl0ZXJhdG9yIG9mIEMgaW1wbGVtZW50ZWQgYXN5bmNpby5GdXR1cmUgZG9lc24ndCBhY2NlcHQKKyAgbm9uLU5vbmUgdmFsdWUgaXMgcGFzc2VkIHRvIGl0LnNlbmQodmFsKS4KKworLSBJc3N1ZSAjMjcwMjU6IEdlbmVyYXRlZCBuYW1lcyBmb3IgVGtpbnRlciB3aWRnZXRzIG5vdyBzdGFydCBieSB0aGUgIiEiIHByZWZpeAorICBmb3IgcmVhZGFiaWxpdHkgKHdhcyAiYCIpLgorCistIElzc3VlICMyNTQ2NDogRml4ZWQgSExpc3QuaGVhZGVyX2V4aXN0cygpIGluIHRraW50ZXIudGl4IG1vZHVsZSBieSBhZGRpbgorICBhIHdvcmthcm91bmQgdG8gVGl4IGxpYnJhcnkgYnVnLgorCistIElzc3VlICMyODQ4ODogc2h1dGlsLm1ha2VfYXJjaGl2ZSgpIG5vIGxvbmdlciBhZGRzIGVudHJ5ICIuLyIgdG8gWklQIGFyY2hpdmUuCisKKy0gSXNzdWUgIzI1OTUzOiByZS5zdWIoKSBub3cgcmFpc2VzIGFuIGVycm9yIGZvciBpbnZhbGlkIG51bWVyaWNhbCBncm91cAorICByZWZlcmVuY2UgaW4gcmVwbGFjZW1lbnQgdGVtcGxhdGUgZXZlbiBpZiB0aGUgcGF0dGVybiBpcyBub3QgZm91bmQgaW4KKyAgdGhlIHN0cmluZy4gIEVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgZ3JvdXAgcmVmZXJlbmNlIG5vdyBpbmNsdWRlcyB0aGUKKyAgZ3JvdXAgaW5kZXggYW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgcmVmZXJlbmNlLgorICBCYXNlZCBvbiBwYXRjaCBieSBTaWxlbnRHaG9zdC4KKworLSBJc3N1ZSAjMTgyMTk6IE9wdGltaXplIGNzdi5EaWN0V3JpdGVyIGZvciBsYXJnZSBudW1iZXIgb2YgY29sdW1ucy4KKyAgUGF0Y2ggYnkgTWFyaWF0dGEgV2lqYXlhLgorCistIElzc3VlICMyODQ0ODogRml4IEMgaW1wbGVtZW50ZWQgYXN5bmNpby5GdXR1cmUgZGlkbid0IHdvcmsgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjg0ODA6IEZpeCBlcnJvciBidWlsZGluZyBzb2NrZXQgbW9kdWxlIHdoZW4gbXVsdGl0aHJlYWRpbmcgaXMKKyAgZGlzYWJsZWQuCisKKy0gSXNzdWUgIzI0NDUyOiBNYWtlIHdlYmJyb3dzZXIgc3VwcG9ydCBDaHJvbWUgb24gTWFjIE9TIFguCisKKy0gSXNzdWUgIzIwNzY2OiBGaXggcmVmZXJlbmNlcyBsZWFrZWQgYnkgcGRiIGluIHRoZSBoYW5kbGluZyBvZiBTSUdJTlQKKyAgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzI4NDkyOiBGaXggaG93IFN0b3BJdGVyYXRpb24gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiBfYXN5bmNpby5GdXR1cmUuCisKKy0gSXNzdWUgIzI4NTAwOiBGaXggYXN5bmNpbyB0byBoYW5kbGUgYXN5bmMgZ2VucyBHQyBmcm9tIGFub3RoZXIgdGhyZWFkLgorCistIElzc3VlICMyNjkyMzogRml4IGFzeW5jaW8uR2F0aGVyIHRvIHJlZnVzZSBiZWluZyBjYW5jZWxsZWQgb25jZSBhbGwKKyAgY2hpbGRyZW4gYXJlIGRvbmUuCisgIFBhdGNoIGJ5IEpvaGFubmVzIEVia2UuCisKKy0gSXNzdWUgIzI2Nzk2OiBEb24ndCBjb25maWd1cmUgdGhlIG51bWJlciBvZiB3b3JrZXJzIGZvciBkZWZhdWx0CisgIHRocmVhZHBvb2wgZXhlY3V0b3IuCisgIEluaXRpYWwgcGF0Y2ggYnkgSGFucyBMYXdyZW56LgorCistIElzc3VlICMyODU0NDogSW1wbGVtZW50IGFzeW5jaW8uVGFzayBpbiBDLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI4NTIyOiBGaXhlcyBtaXNoYW5kbGVkIGJ1ZmZlciByZWFsbG9jYXRpb24gaW4gZ2V0cGF0aHAuYworCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjg0NDQ6IEZpeCBtaXNzaW5nIGV4dGVuc2lvbnMgbW9kdWxlcyB3aGVuIGNyb3NzIGNvbXBpbGluZy4KKworLSBJc3N1ZSAjMjgyMDg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkIHRvIHVzZSBTUUxpdGUgMy4xNC4yLjAuCisKKy0gSXNzdWUgIzI4MjQ4OiBVcGRhdGUgV2luZG93cyBidWlsZCB0byB1c2UgT3BlblNTTCAxLjAuMmouCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNjk0NDogRml4IHRlc3RfcG9zaXggZm9yIEFuZHJvaWQgd2hlcmUgJ2lkIC1HJyBpcyBlbnRpcmVseSB3cm9uZyBvcgorICBtaXNzaW5nIHRoZSBlZmZlY3RpdmUgZ2lkLgorCistIElzc3VlICMyODQwOTogcmVncnRlc3Q6IGZpeCB0aGUgcGFyc2VyIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0xMC0xMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI4MTgzOiBPcHRpbWl6ZSBhbmQgY2xlYW51cCBkaWN0IGl0ZXJhdGlvbi4KKworLSBJc3N1ZSAjMjYwODE6IEFkZGVkIEMgaW1wbGVtZW50YXRpb24gb2YgYXN5bmNpby5GdXR1cmUuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFl1cnkgU2VsaXZhbm92LgorCiAtIElzc3VlICMyODM3OTogQWRkZWQgc2FuaXR5IGNoZWNrcyBhbmQgdGVzdHMgZm9yIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycygpLgogICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAogLSBJc3N1ZSAjMjgzNzY6IFRoZSB0eXBlIG9mIGxvbmcgcmFuZ2UgaXRlcmF0b3IgaXMgbm93IHJlZ2lzdGVyZWQgYXMgSXRlcmF0b3IuCiAgIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgogCistIElzc3VlICMyODM3NjogQ3JlYXRpbmcgaW5zdGFuY2VzIG9mIHJhbmdlX2l0ZXJhdG9yIGJ5IGNhbGxpbmcgcmFuZ2VfaXRlcmF0b3IKKyAgdHlwZSBub3cgaXMgZGVwcmVjYXRlZC4gIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgorCiAtIElzc3VlICMyODM3NjogVGhlIGNvbnN0cnVjdG9yIG9mIHJhbmdlX2l0ZXJhdG9yIG5vdyBjaGVja3MgdGhhdCBzdGVwIGlzIG5vdCAwLgogICBQYXRjaCBieSBPcmVuIE1pbG1hbi4KIApAQCAtMzQsNiArMTUxLDkgQEAKIC0gSXNzdWUgIzI0MDk4OiBGaXhlZCBwb3NzaWJsZSBjcmFzaCB3aGVuIEFTVCBpcyBjaGFuZ2VkIGluIHByb2Nlc3Mgb2YKICAgY29tcGlsaW5nIGl0LgogCistIElzc3VlICMyODIwMTogRGljdCByZWR1Y2VzIHBvc3NpYmlsaXR5IG9mIDJuZCBjb25mbGljdCBpbiBoYXNoIHRhYmxlIHdoZW4KKyAgaGFzaGVzIGhhdmUgc2FtZSBsb3dlciBiaXRzLgorCiAtIElzc3VlICMyODM1MDogU3RyaW5nIGNvbnN0YW50cyB3aXRoIG51bGwgY2hhcmFjdGVyIG5vIGxvbmdlciBpbnRlcm5lZC4KIAogLSBJc3N1ZSAjMjY2MTc6IEZpeCBjcmFzaCB3aGVuIEdDIHJ1bnMgZHVyaW5nIHdlYWtyZWYgY2FsbGJhY2tzLgpAQCAtNDMsMTE2ICsxNjMsODEgQEAKIC0gSXNzdWUgIzIxNTc4OiBGaXhlZCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBJbXBvcnRFcnJvciBjYWxsZWQgd2l0aAogICBpbnZhbGlkIGtleXdvcmQgYXJncy4KIAotLSBJc3N1ZSAjMjgyMDM6IEZpeCBpbmNvcnJlY3QgdHlwZSBpbiBlcnJvciBtZXNzYWdlIGZyb20KLSAgYGBjb21wbGV4KDEuMCwgezI6M30pYGAuIFBhdGNoIGJ5IFNvdW15YSBTaGFybWEuCistIElzc3VlICMyODIwMzogRml4IGluY29ycmVjdCB0eXBlIGluIGNvbXBsZXgoMS4wLCB7MjozfSkgZXJyb3IgbWVzc2FnZS4KKyAgUGF0Y2ggYnkgU291bXlhIFNoYXJtYS4KKworLSBJc3N1ZSAjMjgwODY6IFNpbmdsZSB2YXItcG9zaXRpb25hbCBhcmd1bWVudCBvZiB0dXBsZSBzdWJ0eXBlIHdhcyBwYXNzZWQKKyAgdW5zY2F0aGVkIHRvIHRoZSBDLWRlZmluZWQgZnVuY3Rpb24uICBOb3cgaXQgaXMgY29udmVydGVkIHRvIGV4YWN0IHR1cGxlLgorCistIElzc3VlICMyODIxNDogTm93IF9fc2V0X25hbWVfXyBpcyBsb29rZWQgdXAgb24gdGhlIGNsYXNzIGluc3RlYWQgb2YgdGhlCisgIGluc3RhbmNlLgogCiAtIElzc3VlICMyNzk1NTogRmFsbGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gZGV2aWNlIHdoZW4gdGhlIGdldHJhbmRvbSgpCiAgIHN5c2NhbGwgZmFpbHMgd2l0aCBFUEVSTSwgZm9yIGV4YW1wbGUgd2hlbiBibG9ja2VkIGJ5IFNFQ0NPTVAuCiAKKy0gSXNzdWUgIzI4MTkyOiBEb24ndCBpbXBvcnQgcmVhZGxpbmUgaW4gaXNvbGF0ZWQgbW9kZS4KKworLSBVcGdyYWRlIGludGVybmFsIHVuaWNvZGUgZGF0YWJhc2VzIHRvIFVuaWNvZGUgdmVyc2lvbiA5LjAuMC4KKwogLSBJc3N1ZSAjMjgxMzE6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gemlwaW1wb3J0J3MgY29tcGlsZV9zb3VyY2UoKS4gIHppcGltcG9ydAogICBzaG91bGQgdXNlIHRoZSBzYW1lIG9wdGltaXphdGlvbiBsZXZlbCBhcyB0aGUgaW50ZXJwcmV0ZXIuCiAKLS0gSXNzdWUgIzI1MjIxOiBGaXggY29ycnVwdGVkIHJlc3VsdCBmcm9tIFB5TG9uZ19Gcm9tTG9uZygwKSB3aGVuCi0gIFB5dGhvbiBpcyBjb21waWxlZCB3aXRoIE5TTUFMTFBPU0lOVFMgPSAwLgorLSBJc3N1ZSAjMjgxMjY6IFJlcGxhY2UgUHlfTUVNQ1BZIHdpdGggbWVtY3B5KCkuIFZpc3VhbCBTdHVkaW8gY2FuIHByb3Blcmx5CisgIG9wdGltaXplIG1lbWNweSgpLgogCi0tIElzc3VlICMyNTc1ODogUHJldmVudHMgemlwaW1wb3J0IGZyb20gdW5uZWNlc3NhcmlseSBlbmNvZGluZyBhIGZpbGVuYW1lCi0gIChwYXRjaCBieSBFcnlrIFN1bikKKy0gSXNzdWUgIzI4MTIwOiBGaXggZGljdC5wb3AoKSBmb3Igc3BsaXR0ZWQgZGljdGlvbmFyeSB3aGVuIHRyeWluZyB0byByZW1vdmUgYQorICAicGVuZGluZyBrZXkiIChOb3QgeWV0IGluc2VydGVkIGluIHNwbGl0LXRhYmxlKS4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCiAKLS0gSXNzdWUgIzI4MTg5OiBkaWN0aXRlbXNfY29udGFpbnMgbm8gbG9uZ2VyIHN3YWxsb3dzIGNvbXBhcmUgZXJyb3JzLgotICAoUGF0Y2ggYnkgWGlhbmcgWmhhbmcpCi0KLS0gSXNzdWUgIzI3ODEyOiBQcm9wZXJseSBjbGVhciBvdXQgYSBnZW5lcmF0b3IncyBmcmFtZSdzIGJhY2tyZWZlcmVuY2UgdG8gdGhlCi0gIGdlbmVyYXRvciB0byBwcmV2ZW50IGNyYXNoZXMgaW4gZnJhbWUuY2xlYXIoKS4KLQotLSBJc3N1ZSAjMjc4MTE6IEZpeCBhIGNyYXNoIHdoZW4gYSBjb3JvdXRpbmUgdGhhdCBoYXMgbm90IGJlZW4gYXdhaXRlZCBpcwotICBmaW5hbGl6ZWQgd2l0aCB3YXJuaW5ncy1hcy1lcnJvcnMgZW5hYmxlZC4KLQotLSBJc3N1ZSAjMjc1ODc6IEZpeCBhbm90aGVyIGlzc3VlIGZvdW5kIGJ5IFBWUy1TdHVkaW86IE51bGwgcG9pbnRlciBjaGVjawotICBhZnRlciB1c2Ugb2YgJ2RlZicgaW4gX1B5U3RhdGVfQWRkTW9kdWxlKCkuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KLQotLSBJc3N1ZSAjMjYwMjA6IHNldCBsaXRlcmFsIGV2YWx1YXRpb24gb3JkZXIgZGlkIG5vdCBtYXRjaCBkb2N1bWVudGVkIGJlaGF2aW91ci4KLQotLSBJc3N1ZSAjMjc3ODI6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW1wb3J0IG5vdyBjb3JyZWN0bHkgYWxsb3dzIHRoZQotICBgYG1fbWV0aG9kc2BgIGZpZWxkIHRvIGJlIHVzZWQgdG8gYWRkIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnMgdG8gaW5zdGFuY2VzCi0gIG9mIG5vbi1tb2R1bGUgdHlwZXMgcmV0dXJuZWQgZnJvbSBgYFB5X2NyZWF0ZV9tb2RgYC4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3OTM2OiBUaGUgcm91bmQoKSBmdW5jdGlvbiBhY2NlcHRlZCBhIHNlY29uZCBOb25lIGFyZ3VtZW50Ci0gIGZvciBzb21lIHR5cGVzIGJ1dCBub3QgZm9yIG90aGVycy4gIEZpeGVkIHRoZSBpbmNvbnNpc3RlbmN5IGJ5Ci0gIGFjY2VwdGluZyBOb25lIGZvciBhbGwgbnVtZXJpYyB0eXBlcy4KLQotLSBJc3N1ZSAjMjc0ODc6IFdhcm4gaWYgYSBzdWJtb2R1bGUgYXJndW1lbnQgdG8gInB5dGhvbiAtbSIgb3IKLSAgcnVucHkucnVuX21vZHVsZSgpIGlzIGZvdW5kIGluIHN5cy5tb2R1bGVzIGFmdGVyIHBhcmVudCBwYWNrYWdlcyBhcmUKLSAgaW1wb3J0ZWQsIGJ1dCBiZWZvcmUgdGhlIHN1Ym1vZHVsZSBpcyBleGVjdXRlZC4KLQotLSBJc3N1ZSAjMjc1NTg6IEZpeCBhIFN5c3RlbUVycm9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiAicmFpc2UiIHN0YXRlbWVudC4KLSAgSW4gYSBicmFuZCBuZXcgdGhyZWFkLCByYWlzZSBhIFJ1bnRpbWVFcnJvciBzaW5jZSB0aGVyZSBpcyBubyBhY3RpdmUKLSAgZXhjZXB0aW9uIHRvIHJlcmFpc2UuIFBhdGNoIHdyaXR0ZW4gYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NDE5OiBTdGFuZGFyZCBfX2ltcG9ydF9fKCkgbm8gbG9uZ2VyIGxvb2sgdXAgIl9faW1wb3J0X18iIGluIGdsb2JhbHMKLSAgb3IgYnVpbHRpbnMgZm9yIGltcG9ydGluZyBzdWJtb2R1bGVzIG9yICJmcm9tIGltcG9ydCIuICBGaXhlZCBoYW5kbGluZyBhbgotICBlcnJvciBvZiBub24tc3RyaW5nIHBhY2thZ2UgbmFtZS4KLQotLSBJc3N1ZSAjMjcwODM6IFJlc3BlY3QgdGhlIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZSB1bmRlciBXaW5kb3dzLgotCi0tIElzc3VlICMyNzUxNDogTWFrZSBoYXZpbmcgdG9vIG1hbnkgc3RhdGljYWxseSBuZXN0ZWQgYmxvY2tzIGEgU3ludGF4RXJyb3IKLSAgaW5zdGVhZCBvZiBTeXN0ZW1FcnJvci4KLQotLSBJc3N1ZSAjMjc0NzM6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gYnl0ZXMgYW5kIGJ5dGVhcnJheQotICBjb25jYXRlbmF0aW9ucy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzUwNzogQWRkIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2ggYnkKLSAgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NTgxOiBEb24ndCByZWx5IG9uIHdyYXBwaW5nIGZvciBvdmVyZmxvdyBjaGVjayBpbgotICBQeVNlcXVlbmNlX1R1cGxlKCkuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc0NDM6IF9fbGVuZ3RoX2hpbnRfXygpIG9mIGJ5dGVhcnJheSBpdGVyYXRvcnMgbm8gbG9uZ2VyIHJldHVybiBhCi0gIG5lZ2F0aXZlIGludGVnZXIgZm9yIGEgcmVzaXplZCBieXRlYXJyYXkuCistIElzc3VlICMyNjE4MjogUmFpc2UgRGVwcmVjYXRpb25XYXJuaW5nIHdoZW4gYXN5bmMgYW5kIGF3YWl0IGtleXdvcmRzIGFyZQorICB1c2VkIGFzIHZhcmlhYmxlL2F0dHJpYnV0ZS9jbGFzcy9mdW5jdGlvbiBuYW1lLgogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzIzMjYyOiBUaGUgd2ViYnJvd3NlciBtb2R1bGUgbm93IHN1cHBvcnRzIEZpcmVmb3ggMzYrIGFuZCBkZXJpdmVkCi0gIGJyb3dzZXJzLiAgQmFzZWQgb24gcGF0Y2ggYnkgT2xlZyBCcm95dG1hbi4KKy0gSXNzdWUgIzI3OTk4OiBGaXhlZCBieXRlcyBwYXRoIHN1cHBvcnQgaW4gb3Muc2NhbmRpcigpIG9uIFdpbmRvd3MuCisgIFBhdGNoIGJ5IEVyeWsgU3VuLgogCi0tIElzc3VlICMyNzkzOTogRml4ZWQgYnVncyBpbiB0a2ludGVyLnR0ay5MYWJlbGVkU2NhbGUgYW5kIHRraW50ZXIuU2NhbGUgY2F1c2VkCi0gIGJ5IHJlcHJlc2VudGluZyB0aGUgc2NhbGUgYXMgZmxvYXQgdmFsdWUgaW50ZXJuYWxseSBpbiBUay4gIHRraW50ZXIuSW50VmFyCi0gIG5vdyB3b3JrcyBpZiBmbG9hdCB2YWx1ZSBpcyBzZXQgdG8gdW5kZXJseWluZyBUayB2YXJpYWJsZS4KLQotLSBJc3N1ZSAjMjgyNTU6IGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLnBybW9udGgoKSBubyBsb25nZXIgcHJpbnRzIGEgc3BhY2UKLSAgYXQgdGhlIHN0YXJ0IG9mIG5ldyBsaW5lIGFmdGVyIHByaW50aW5nIGEgbW9udGgncyBjYWxlbmRhci4gIFBhdGNoIGJ5Ci0gIFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyMDQ5MTogVGhlIHRleHR3cmFwLlRleHRXcmFwcGVyIGNsYXNzIG5vdyBob25vcnMgbm9uLWJyZWFraW5nIHNwYWNlcy4KLSAgQmFzZWQgb24gcGF0Y2ggYnkgS2FhcmxlIFJpdHZhbmVuLgotCi0tIElzc3VlICMyODM1Mzogb3MuZndhbGsoKSBubyBsb25nZXIgZmFpbHMgb24gYnJva2VuIGxpbmtzLgotCi0tIElzc3VlICMyNTQ2NDogRml4ZWQgSExpc3QuaGVhZGVyX2V4aXN0cygpIGluIHRraW50ZXIudGl4IG1vZHVsZSBieSBhZGRpbgotICBhIHdvcmthcm91bmQgdG8gVGl4IGxpYnJhcnkgYnVnLgotCi0tIElzc3VlICMyODQ4ODogc2h1dGlsLm1ha2VfYXJjaGl2ZSgpIG5vIGxvbmdlciBhZGQgZW50cnkgIi4vIiB0byBaSVAgYXJjaGl2ZS4KLQotLSBJc3N1ZSAjMjQ0NTI6IE1ha2Ugd2ViYnJvd3NlciBzdXBwb3J0IENocm9tZSBvbiBNYWMgT1MgWC4KLQotLSBJc3N1ZSAjMjA3NjY6IEZpeCByZWZlcmVuY2VzIGxlYWtlZCBieSBwZGIgaW4gdGhlIGhhbmRsaW5nIG9mIFNJR0lOVAotICBoYW5kbGVycy4KKy0gSXNzdWUgIzI4MzE3OiBUaGUgZGlzYXNzZW1ibGVyIG5vdyBkZWNvZGVzIEZPUk1BVF9WQUxVRSBhcmd1bWVudC4KIAogLSBJc3N1ZSAjMjYyOTM6IEZpeGVkIHdyaXRpbmcgWklQIGZpbGVzIHRoYXQgc3RhcnRzIG5vdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUKICAgZmlsZS4gIE9mZnNldHMgaW4gWklQIGZpbGUgbm93IGFyZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUgaW4KICAgY29uZm9ybWluZyB0byB0aGUgc3BlY2lmaWNhdGlvbi4KIAorLSBJc3N1ZSAjMjgzODA6IHVuaXR0ZXN0Lm1vY2sgTW9jayBhdXRvc3BlYyBmdW5jdGlvbnMgbm93IHByb3Blcmx5IHN1cHBvcnQKKyAgYXNzZXJ0X2NhbGxlZCwgYXNzZXJ0X25vdF9jYWxsZWQsIGFuZCBhc3NlcnRfY2FsbGVkX29uY2UuCisKKy0gSXNzdWUgIzI3MTgxIHJlbW92ZSBzdGF0aXN0aWNzLmdlb21ldHJpY19tZWFuIGFuZCBkZWZlciB1bnRpbCAzLjcuCisKKy0gSXNzdWUgIzI4MjI5OiBsem1hIG1vZHVsZSBub3cgc3VwcG9ydHMgcGF0aGxpYi4KKwogLSBJc3N1ZSAjMjgzMjE6IEZpeGVkIHdyaXRpbmcgbm9uLUJNUCBjaGFyYWN0ZXJzIHdpdGggYmluYXJ5IGZvcm1hdCBpbiBwbGlzdGxpYi4KIAorLSBJc3N1ZSAjMjgyMjU6IGJ6MiBtb2R1bGUgbm93IHN1cHBvcnRzIHBhdGhsaWIuICBJbml0aWFsIHBhdGNoIGJ5IEV0aGFuIEZ1cm1hbi4KKworLSBJc3N1ZSAjMjgyMjc6IGd6aXAgbm93IHN1cHBvcnRzIHBhdGhsaWIuICBQYXRjaCBieSBFdGhhbiBGdXJtYW4uCisKKy0gSXNzdWUgIzI3MzU4OiBPcHRpbWl6ZWQgbWVyZ2luZyB2YXIta2V5d29yZCBhcmd1bWVudHMgYW5kIGltcHJvdmVkIGVycm9yCisgIG1lc3NhZ2Ugd2hlbiBwYXNzIGEgbm9uLW1hcHBpbmcgYXMgYSB2YXIta2V5d29yZCBhcmd1bWVudC4KKworLSBJc3N1ZSAjMjgyNTc6IEltcHJvdmVkIGVycm9yIG1lc3NhZ2Ugd2hlbiBwYXNzIGEgbm9uLWl0ZXJhYmxlIGFzCisgIGEgdmFyLXBvc2l0aW9uYWwgYXJndW1lbnQuICBBZGRlZCBvcGNvZGUgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTC4KKwogLSBJc3N1ZSAjMjgzMjI6IEZpeGVkIHBvc3NpYmxlIGNyYXNoZXMgd2hlbiB1bnBpY2tsZSBpdGVydG9vbHMgb2JqZWN0cyBmcm9tCiAgIGluY29ycmVjdCBwaWNrbGUgZGF0YS4gIEJhc2VkIG9uIHBhdGNoIGJ5IEpvaG4gTGVpdGNoLgogCi0tIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCi0gIHVzYWdlIHBhdHRlcm5zLgorLSBJc3N1ZSAjMjgyMjg6IGltZ2hkciBub3cgc3VwcG9ydHMgcGF0aGxpYi4KIAotLSBJc3N1ZSAjMTcwMzE3ODogRml4IHRoZSBhYmlsaXR5IHRvIHBhc3MgdGhlIC0tbGluay1vYmplY3RzIG9wdGlvbiB0byB0aGUKLSAgZGlzdHV0aWxzIGJ1aWxkX2V4dCBjb21tYW5kLgorLSBJc3N1ZSAjMjgyMjY6IGNvbXBpbGVhbGwgbm93IHN1cHBvcnRzIHBhdGhsaWIuCisKKy0gSXNzdWUgIzI4MzE0OiBGaXggZnVuY3Rpb24gZGVjbGFyYXRpb24gKEMgZmxhZ3MpIGZvciB0aGUgZ2V0aXRlcmF0b3IoKSBtZXRob2QKKyAgb2YgeG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnQuCisKKy0gSXNzdWUgIzI4MTQ4OiBTdG9wIHVzaW5nIGxvY2FsdGltZSgpIGFuZCBnbXRpbWUoKSBpbiB0aGUgdGltZQorICBtb2R1bGUuCisKKyAgSW50cm9kdWNlZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCBfUHlUaW1lX2xvY2FsdGltZSBBUEkgdGhhdCBpcworICBzaW1pbGFyIHRvIFBPU0lYIGxvY2FsdGltZV9yLCBidXQgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMuICBQYXRjaAorICBieSBFZCBTY2hvdXRlbi4KIAogLSBJc3N1ZSAjMjgyNTM6IEZpeGVkIGNhbGVuZGFyIGZ1bmN0aW9ucyBmb3IgZXh0cmVtZSBtb250aHM6IDAwMDEtMDEKICAgYW5kIDk5OTktMTIuCkBAIC0xNjgsMTAgKzI1MywxNSBAQAogLSBJc3N1ZSAjMjc4OTc6IEZpeGVkIHBvc3NpYmxlIGNyYXNoIGluIHNxbGl0ZTMuQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkKICAgaWYgcGFzcyBpbnZhbGlkIHN0cmluZy1saWtlIG9iamVjdCBhcyBhIG5hbWUuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAorLSBJc3N1ZSAjMTg4NDQ6IHJhbmRvbS5jaG9pY2VzKCkgbm93IGhhcyBrIGFzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50CisgIHRvIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIGNvbW1vbiBjYXNlcyBhbmQgdGhlIGNvbWUgaW50byBsaW5lCisgIHdpdGggdGhlIHNpZ25hdHVyZSB1c2VkIGluIG90aGVyIGxhbmd1YWdlcy4KKwogLSBJc3N1ZSAjMTg4OTM6IEZpeCBpbnZhbGlkIGV4Y2VwdGlvbiBoYW5kbGluZyBpbiBMaWIvY3R5cGVzL21hY2hvbGliL2R5bGQucHkuCiAgIFBhdGNoIGJ5IE1hZGlzb24gTWF5LgogCiAtIElzc3VlICMyNzYxMTogRml4ZWQgc3VwcG9ydCBvZiBkZWZhdWx0IHJvb3Qgd2luZG93IGluIHRoZSB0a2ludGVyLnRpeCBtb2R1bGUuCisgIEFkZGVkIHRoZSBtYXN0ZXIgcGFyYW1ldGVyIGluIHRoZSBEaXNwbGF5U3R5bGUgY29uc3RydWN0b3IuCiAKIC0gSXNzdWUgIzI3MzQ4OiBJbiB0aGUgdHJhY2ViYWNrIG1vZHVsZSwgcmVzdG9yZSB0aGUgZm9ybWF0dGluZyBvZiBleGNlcHRpb24KICAgbWVzc2FnZXMgbGlrZSAiRXhjZXB0aW9uOiBOb25lIi4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgaW4KQEAgLTE3OSw2ICsyNjksMTUgQEAKIAogLSBJc3N1ZSAjMjU2NTE6IEFsbG93IGZhbHN5IHZhbHVlcyB0byBiZSB1c2VkIGZvciBtc2cgcGFyYW1ldGVyIG9mIHN1YlRlc3QoKS4KIAorLSBJc3N1ZSAjMjc3Nzg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIG9zLmdldHJhbmRvbSgpIHdoZW4gdGhlIGdldHJhbmRvbSgpIGlzCisgIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCBhIHNpZ25hbCBoYW5kbGVyIHJhaXNlcyBhIFB5dGhvbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzI4MjAwOiBGaXggbWVtb3J5IGxlYWsgb24gV2luZG93cyBpbiB0aGUgb3MgbW9kdWxlIChmaXgKKyAgcGF0aF9jb252ZXJ0ZXIoKSBmdW5jdGlvbikuCisKKy0gSXNzdWUgIzI1NDAwOiBSb2JvdEZpbGVQYXJzZXIgbm93IGNvcnJlY3RseSByZXR1cm5zIGRlZmF1bHQgdmFsdWVzIGZvcgorICBjcmF3bF9kZWxheSBhbmQgcmVxdWVzdF9yYXRlLiAgSW5pdGlhbCBwYXRjaCBieSBQZXRlciBXaXJ0ei4KKwogLSBJc3N1ZSAjMjc5MzI6IFByZXZlbnQgbWVtb3J5IGxlYWsgaW4gd2luMzJfdmVyKCkuCiAKIC0gRml4IFVuYm91bmRMb2NhbEVycm9yIGluIHNvY2tldC5fc2VuZGZpbGVfdXNlX3NlbmRmaWxlLgpAQCAtMTg2LDYgKzI4NSwxMCBAQAogLSBJc3N1ZSAjMjgwNzU6IENoZWNrIGZvciBFUlJPUl9BQ0NFU1NfREVOSUVEIGluIFdpbmRvd3MgaW1wbGVtZW50YXRpb24gb2YKICAgb3Muc3RhdCgpLiAgUGF0Y2ggYnkgRXJ5ayBTdW4uCiAKKy0gSXNzdWUgIzIyNDkzOiBXYXJuaW5nIG1lc3NhZ2UgZW1pdHRlZCBieSB1c2luZyBpbmxpbmUgZmxhZ3MgaW4gdGhlIG1pZGRsZSBvZgorICByZWd1bGFyIGV4cHJlc3Npb24gbm93IGNvbnRhaW5zIGEgKHRydW5jYXRlZCkgcmVnZXggcGF0dGVybi4KKyAgUGF0Y2ggYnkgVGltIEdyYWhhbS4KKwogLSBJc3N1ZSAjMjUyNzA6IFByZXZlbnQgY29kZWNzLmVzY2FwZV9lbmNvZGUoKSBmcm9tIHJhaXNpbmcgU3lzdGVtRXJyb3Igd2hlbgogICBhbiBlbXB0eSBieXRlc3RyaW5nIGlzIHBhc3NlZC4KIApAQCAtMTk0LDIwICsyOTcsMzExIEBACiAtIElzc3VlICMyNTg5NTogRW5hYmxlIFdlYlNvY2tldCBVUkwgc2NoZW1lcyBpbiB1cmxsaWIucGFyc2UudXJsam9pbi4KICAgUGF0Y2ggYnkgR2VyZ2VseSBJbXJlaCBhbmQgTWFya3VzIEhvbHRlcm1hbm4uCiAKKy0gSXNzdWUgIzI4MTE0OiBGaXggYSBjcmFzaCBpbiBwYXJzZV9lbnZsaXN0KCkgd2hlbiBlbnYgY29udGFpbnMgYnl0ZSBzdHJpbmdzLgorICBQYXRjaCBieSBFcnlrIFN1bi4KKwogLSBJc3N1ZSAjMjc1OTk6IEZpeGVkIGJ1ZmZlciBvdmVycnVuIGluIGJpbmFzY2lpLmIyYV9xcCgpIGFuZCBiaW5hc2NpaS5hMmJfcXAoKS4KIAotLSBJc3N1ZSAjMTkwMDM6bSBlbWFpbC5nZW5lcmF0b3Igbm93IHJlcGxhY2VzIG9ubHkgXHIgYW5kL29yIFxuIGxpbmUKLSAgZW5kaW5ncywgcGVyIHRoZSBSRkMsIGluc3RlYWQgb2YgYWxsIHVuaWNvZGUgbGluZSBlbmRpbmdzLgorLSBJc3N1ZSAjMjc5MDY6IEZpeCBzb2NrZXQgYWNjZXB0IGV4aGF1c3Rpb24gZHVyaW5nIGhpZ2ggVENQIHRyYWZmaWMuCisgIFBhdGNoIGJ5IEtldmluIENvbndheS4KKworLSBJc3N1ZSAjMjgxNzQ6IEhhbmRsZSB3aGVuIFNPX1JFVVNFUE9SVCBpc24ndCBwcm9wZXJseSBzdXBwb3J0ZWQuCisgIFBhdGNoIGJ5IFNldGggTWljaGFlbCBMYXJzb24uCisKKy0gSXNzdWUgIzI2NjU0OiBJbnNwZWN0IGZ1bmN0b29scy5wYXJ0aWFsIGluIGFzeW5jaW8uSGFuZGxlLl9fcmVwcl9fLgorICBQYXRjaCBieSBpY2Vib3kuCisKKy0gSXNzdWUgIzI2OTA5OiBGaXggc2xvdyBwaXBlcyBJTyBpbiBhc3luY2lvLgorICBQYXRjaCBieSBJTkFEQSBOYW9raS4KKworLSBJc3N1ZSAjMjgxNzY6IEZpeCBjYWxsYmFja3MgcmFjZSBpbiBhc3luY2lvLlNlbGVjdG9yTG9vcC5zb2NrX2Nvbm5lY3QuCisKKy0gSXNzdWUgIzI3NzU5OiBGaXggc2VsZWN0b3JzIGluY29ycmVjdGx5IHJldGFpbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCisgIFBhdGNoIGJ5IE1hcmsgV2lsbGlhbXMuCisKKy0gSXNzdWUgIzI4MzY4OiBSZWZ1c2UgbW9uaXRvcmluZyBwcm9jZXNzZXMgaWYgdGhlIGNoaWxkIHdhdGNoZXIgaGFzIG5vCisgIGxvb3AgYXR0YWNoZWQuCisgIFBhdGNoIGJ5IFZpbmNlbnQgTWljaGVsLgorCistIElzc3VlICMyODM2OTogUmFpc2UgUnVudGltZUVycm9yIHdoZW4gdHJhbnNwb3J0J3MgRkQgaXMgdXNlZCB3aXRoCisgIGFkZF9yZWFkZXIsIGFkZF93cml0ZXIsIGV0Yy4KKworLSBJc3N1ZSAjMjgzNzA6IFNwZWVkdXAgYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZGV4YWN0bHkuCisgIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KKworLSBJc3N1ZSAjMjgzNzE6IERlcHJlY2F0ZSBwYXNzaW5nIGFzeW5jaW8uSGFuZGxlcyB0byBydW5faW5fZXhlY3V0b3IuCisKKy0gSXNzdWUgIzI4MzcyOiBGaXggYXN5bmNpbyB0byBzdXBwb3J0IGZvcm1hdHRpbmcgb2Ygbm9uLXB5dGhvbiBjb3JvdXRpbmVzLgorCistIElzc3VlICMyODM5OTogUmVtb3ZlIFVOSVggc29ja2V0IGZyb20gRlMgYmVmb3JlIGJpbmRpbmcuCisgIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KKworLSBJc3N1ZSAjMjc5NzI6IFByb2hpYml0IFRhc2tzIHRvIGF3YWl0IG9uIHRoZW1zZWx2ZXMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjg0MDI6IEFkZHMgc2lnbmVkIGNhdGFsb2cgZmlsZXMgZm9yIHN0ZGxpYiBvbiBXaW5kb3dzLgorCistIElzc3VlICMyODMzMzogRW5hYmxlcyBVbmljb2RlIGZvciBwczEvcHMyIGFuZCBpbnB1dCgpIHByb21wdHMuIChQYXRjaCBieQorICBFcnlrIFN1bikKKworLSBJc3N1ZSAjMjgyNTE6IEltcHJvdmVtZW50cyB0byBoZWxwIG1hbnVhbHMgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjgxMTA6IGxhdW5jaGVyLm1zaSBoYXMgZGlmZmVyZW50IHByb2R1Y3QgY29kZXMgYmV0d2VlbiAzMi1iaXQgYW5kCisgIDY0LWJpdAorCistIElzc3VlICMyODE2MTogT3BlbmluZyBDT04gZm9yIHdyaXRlIGFjY2VzcyBmYWlscworCistIElzc3VlICMyODE2MjogV2luZG93c0NvbnNvbGVJTyByZWFkYWxsKCkgZmFpbHMgaWYgZmlyc3QgbGluZSBzdGFydHMgd2l0aAorICBDdHJsK1oKKworLSBJc3N1ZSAjMjgxNjM6IFdpbmRvd3NDb25zb2xlSU8gZmlsZW5vKCkgcGFzc2VzIHdyb25nIGZsYWdzIHRvCisgIF9vcGVuX29zZmhhbmRsZQorCistIElzc3VlICMyODE2NDogX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZSBmYWlscyBmb3IgdmFyaW91cyBwYXRocworCistIElzc3VlICMyODEzNzogUmVuYW1lcyBXaW5kb3dzIHBhdGggZmlsZSB0byAuX3B0aAorCistIElzc3VlICMyODEzODogV2luZG93cyAuX3B0aCBmaWxlIHNob3VsZCBhbGxvdyBpbXBvcnQgc2l0ZQorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjg0MjY6IERlcHJlY2F0ZWQgdW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KCksCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoKSwgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUoKSBhbmQKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoKS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI4MjU4OiBGaXhlZCBidWlsZCB3aXRoIEVzdG9uaWFuIGxvY2FsZSAocHl0aG9uLWNvbmZpZyBhbmQgZGlzdGNsZWFuCisgIHRhcmdldHMgaW4gTWFrZWZpbGUpLiAgUGF0Y2ggYnkgQXJmcmV2ZXIgRnJlaHRlcyBUYWlmZXJzYXIgQXJhaGVzaXMuCisKKy0gSXNzdWUgIzI2NjYxOiBzZXR1cC5weSBub3cgZGV0ZWN0cyBzeXN0ZW0gbGliZmZpIHdpdGggbXVsdGlhcmNoIHdyYXBwZXIuCisKKy0gSXNzdWUgIzE1ODE5OiBSZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUgc2VhcmNoIGRpcmVjdG9yeSBvcHRpb24gZm9yIGJ1aWxkaW5nCisgIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjgyMTc6IEFkZHMgX3Rlc3Rjb25zb2xlIG1vZHVsZSB0byB0ZXN0IGNvbnNvbGUgaW5wdXQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAxCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0wOS0xMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzIzNzIyOiBUaGUgX19jbGFzc19fIGNlbGwgdXNlZCBieSB6ZXJvLWFyZ3VtZW50IHN1cGVyKCkgaXMgbm93CisgIGluaXRpYWxpemVkIGZyb20gdHlwZS5fX25ld19fIHJhdGhlciB0aGFuIF9fYnVpbGRfY2xhc3NfXywgc28gY2xhc3MgbWV0aG9kcworICByZWx5aW5nIG9uIHRoYXQgd2lsbCBub3cgd29yayBjb3JyZWN0bHkgd2hlbiBjYWxsZWQgZnJvbSBtZXRhY2xhc3MgbWV0aG9kcworICBkdXJpbmcgY2xhc3MgY3JlYXRpb24uIFBhdGNoIGJ5IE1hcnRpbiBUZWljaG1hbm4uCisKKy0gSXNzdWUgIzI1MjIxOiBGaXggY29ycnVwdGVkIHJlc3VsdCBmcm9tIFB5TG9uZ19Gcm9tTG9uZygwKSB3aGVuIFB5dGhvbgorICBpcyBjb21waWxlZCB3aXRoIE5TTUFMTFBPU0lOVFMgPSAwLgorCistIElzc3VlICMyNzA4MDogSW1wbGVtZW50IGZvcm1hdHRpbmcgc3VwcG9ydCBmb3IgUEVQIDUxNS4gIEluaXRpYWwgcGF0Y2gKKyAgYnkgQ2hyaXMgQW5nZWxpY28uCisKKy0gSXNzdWUgIzI3MTk5OiBJbiB0YXJmaWxlLCBleHBvc2UgY29weWZpbGVvYmogYnVmc2l6ZSB0byBpbXByb3ZlIHRocm91Z2hwdXQuCisgIFBhdGNoIGJ5IEphc29uIEZyaWVkLgorCistIElzc3VlICMyNzk0ODogSW4gZi1zdHJpbmdzLCBvbmx5IGFsbG93IGJhY2tzbGFzaGVzIGluc2lkZSB0aGUgYnJhY2VzCisgICh3aGVyZSB0aGUgZXhwcmVzc2lvbnMgYXJlKS4gIFRoaXMgaXMgYSBicmVha2luZyBjaGFuZ2UgZnJvbSB0aGUgMy42CisgIGFscGhhIHJlbGVhc2VzLCB3aGVyZSBiYWNrc2xhc2hlcyBhcmUgYWxsb3dlZCBhbnl3aGVyZSBpbiBhbgorICBmLXN0cmluZy4gIEFsc28sIHJlcXVpcmUgdGhhdCBleHByZXNzaW9ucyBpbnNpZGUgZi1zdHJpbmdzIGJlCisgIGVuY2xvc2VkIHdpdGhpbiBsaXRlcmFsIGJyYWNlcywgYW5kIG5vdCBlc2NhcGVzIGxpa2UKKyAgZidceDdiImhpIlx4N2QnLgorCistIElzc3VlICMyODA0NjogUmVtb3ZlIHBsYXRmb3JtLXNwZWNpZmljIGRpcmVjdG9yaWVzIGZyb20gc3lzLnBhdGguCisKKy0gSXNzdWUgIzI4MDcxOiBBZGQgZWFybHktb3V0IGZvciBkaWZmZXJlbmNpbmcgZnJvbSBhbiBlbXB0eSBzZXQuCisKKy0gSXNzdWUgIzI1NzU4OiBQcmV2ZW50cyB6aXBpbXBvcnQgZnJvbSB1bm5lY2Vzc2FyaWx5IGVuY29kaW5nIGEgZmlsZW5hbWUKKyAgKHBhdGNoIGJ5IEVyeWsgU3VuKQorCistIElzc3VlICMyNTg1NjogVGhlIF9fbW9kdWxlX18gYXR0cmlidXRlIG9mIGV4dGVuc2lvbiBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKKyAgbm93IGlzIGludGVybmVkLiBUaGlzIGxlYWRzIHRvIG1vcmUgY29tcGFjdCBwaWNrbGUgZGF0YSB3aXRoIHByb3RvY29sIDQuCisKKy0gSXNzdWUgIzI3MjEzOiBSZXdvcmsgQ0FMTF9GVU5DVElPTiogb3Bjb2RlcyB0byBwcm9kdWNlIHNob3J0ZXIgYW5kIG1vcmUKKyAgZWZmaWNpZW50IGJ5dGVjb2RlLiBQYXRjaCBieSBEZW11ciBSdW1lZCwgZGVzaWduIGJ5IFNlcmhpeSBTdG9yY2hha2EsCisgIHJldmlld2VkIGJ5IFNlcmhpeSBTdG9yY2hha2EgYW5kIFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMyNjMzMTogSW1wbGVtZW50IHRva2VuaXppbmcgc3VwcG9ydCBmb3IgUEVQIDUxNS4gUGF0Y2ggYnkgR2VvcmcgQnJhbmRsLgorCistIElzc3VlICMyNzk5OTogTWFrZSAiZ2xvYmFsIGFmdGVyIHVzZSIgYSBTeW50YXhFcnJvciwgYW5kIGRpdHRvIGZvciBub25sb2NhbC4KKyAgUGF0Y2ggYnkgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMyODAwMzogSW1wbGVtZW50IFBFUCA1MjUgLS0gQXN5bmNocm9ub3VzIEdlbmVyYXRvcnMuCisKKy0gSXNzdWUgIzI3OTg1OiBJbXBsZW1lbnQgUEVQIDUyNiAtLSBTeW50YXggZm9yIFZhcmlhYmxlIEFubm90YXRpb25zLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWkuCisKKy0gSXNzdWUgIzI2MDU4OiBBZGQgYSBuZXcgcHJpdmF0ZSB2ZXJzaW9uIHRvIHRoZSBidWlsdGluIGRpY3QgdHlwZSwgaW5jcmVtZW50ZWQKKyAgYXQgZWFjaCBkaWN0aW9uYXJ5IGNyZWF0aW9uIGFuZCBhdCBlYWNoIGRpY3Rpb25hcnkgY2hhbmdlLiBJbXBsZW1lbnRhdGlvbiBvZgorICB0aGUgUEVQIDUwOS4KKworLSBJc3N1ZSAjMjczNjQ6IEEgYmFja3NsYXNoLWNoYXJhY3RlciBwYWlyIHRoYXQgaXMgbm90IGEgdmFsaWQgZXNjYXBlIHNlcXVlbmNlCisgIG5vdyBnZW5lcmF0ZXMgYSBEZXByZWNhdGlvbldhcm5pbmcuICBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzM1MDogYGRpY3RgIGltcGxlbWVudGF0aW9uIGlzIGNoYW5nZWQgbGlrZSBQeVB5LiBJdCBpcyBtb3JlIGNvbXBhY3QKKyAgYW5kIHByZXNlcnZlcyBpbnNlcnRpb24gb3JkZXIuCisgIChDb25jZXB0IGRldmVsb3BlZCBieSBSYXltb25kIEhldHRpbmdlciBhbmQgcGF0Y2ggYnkgSW5hZGEgTmFva2kuKQorCistIElzc3VlICMyNzkxMTogUmVtb3ZlIHVubmVjZXNzYXJ5IGVycm9yIGNoZWNrcyBpbgorICBgYGV4ZWNfYnVpbHRpbl9vcl9keW5hbWljKClgYC4KKworLSBJc3N1ZSAjMjcwNzg6IEFkZGVkIEJVSUxEX1NUUklORyBvcGNvZGUuICBPcHRpbWl6ZWQgZi1zdHJpbmdzIGV2YWx1YXRpb24uCisKKy0gSXNzdWUgIzE3ODg0OiBQeXRob24gbm93IHJlcXVpcmVzIHN5c3RlbXMgd2l0aCBpbnR0eXBlcy5oIGFuZCBzdGRpbnQuaAorCistIElzc3VlICMyNzk2MTogUmVxdWlyZSBwbGF0Zm9ybXMgdG8gc3VwcG9ydCBgYGxvbmcgbG9uZ2BgLiBQeXRob24gaGFzbid0CisgIGNvbXBpbGVkIHdpdGhvdXQgYGBsb25nIGxvbmdgYCBmb3IgeWVhcnMsIHNvIHRoaXMgaXMgYmFzaWNhbGx5IGEgZm9ybWFsaXR5LgorCistIElzc3VlICMyNzM1NTogUmVtb3ZlZCBzdXBwb3J0IGZvciBXaW5kb3dzIENFLiAgSXQgd2FzIG5ldmVyIGZpbmlzaGVkLAorICBhbmQgV2luZG93cyBDRSBpcyBubyBsb25nZXIgYSByZWxldmFudCBwbGF0Zm9ybSBmb3IgUHl0aG9uLgorCistIEltcGxlbWVudCBQRVAgNTIzLgorCistIElzc3VlICMyNzg3MDogQSBsZWZ0IHNoaWZ0IG9mIHplcm8gYnkgYSBsYXJnZSBpbnRlZ2VyIG5vIGxvbmdlciBhdHRlbXB0cworICB0byBhbGxvY2F0ZSBsYXJnZSBhbW91bnRzIG9mIG1lbW9yeS4KKworLSBJc3N1ZSAjMjU0MDI6IEluIGludC10by1kZWNpbWFsLXN0cmluZyBjb252ZXJzaW9uLCBpbXByb3ZlIHRoZSBlc3RpbWF0ZQorICBvZiB0aGUgaW50ZXJtZWRpYXRlIG1lbW9yeSByZXF1aXJlZCwgYW5kIHJlbW92ZSBhbiB1bm5lY2Vzc2FyaWx5IHN0cmljdAorICBvdmVyZmxvdyBjaGVjay4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjcyMTQ6IEluIGxvbmdfaW52ZXJ0LCBiZSBtb3JlIGNhcmVmdWwgYWJvdXQgbW9kaWZ5aW5nIG9iamVjdAorICByZXR1cm5lZCBieSBsb25nX2FkZCwgYW5kIHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBjaGVjayBmb3Igc21hbGwgbG9uZ3MuCisgIFRoYW5rcyBPcmVuIE1pbG1hbiBmb3IgYW5hbHlzaXMgYW5kIHBhdGNoLgorCistIElzc3VlICMyNzUwNjogU3VwcG9ydCBwYXNzaW5nIHRoZSBieXRlcy9ieXRlYXJyYXkudHJhbnNsYXRlKCkgImRlbGV0ZSIKKyAgYXJndW1lbnQgYnkga2V5d29yZC4KKworLSBJc3N1ZSAjMjc4MTI6IFByb3Blcmx5IGNsZWFyIG91dCBhIGdlbmVyYXRvcidzIGZyYW1lJ3MgYmFja3JlZmVyZW5jZSB0byB0aGUKKyAgZ2VuZXJhdG9yIHRvIHByZXZlbnQgY3Jhc2hlcyBpbiBmcmFtZS5jbGVhcigpLgorCistIElzc3VlICMyNzgxMTogRml4IGEgY3Jhc2ggd2hlbiBhIGNvcm91dGluZSB0aGF0IGhhcyBub3QgYmVlbiBhd2FpdGVkIGlzCisgIGZpbmFsaXplZCB3aXRoIHdhcm5pbmdzLWFzLWVycm9ycyBlbmFibGVkLgorCistIElzc3VlICMyNzU4NzogRml4IGFub3RoZXIgaXNzdWUgZm91bmQgYnkgUFZTLVN0dWRpbzogTnVsbCBwb2ludGVyIGNoZWNrCisgIGFmdGVyIHVzZSBvZiAnZGVmJyBpbiBfUHlTdGF0ZV9BZGRNb2R1bGUoKS4KKyAgSW5pdGlhbCBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgorCistIElzc3VlICMyNzc5MjogVGhlIG1vZHVsbyBvcGVyYXRpb24gYXBwbGllZCB0byBgYGJvb2xgYCBhbmQgb3RoZXIKKyAgYGBpbnRgYCBzdWJjbGFzc2VzIG5vdyBhbHdheXMgcmV0dXJucyBhbiBgYGludGBgLiBQcmV2aW91c2x5CisgIHRoZSByZXR1cm4gdHlwZSBkZXBlbmRlZCBvbiB0aGUgaW5wdXQgdmFsdWVzLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjY5ODQ6IGludCgpIG5vdyBhbHdheXMgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiBleGFjdCBpbnQuCisKKy0gSXNzdWUgIzI1NjA0OiBGaXggYSBtaW5vciBidWcgaW4gaW50ZWdlciB0cnVlIGRpdmlzaW9uOyB0aGlzIGJ1ZyBjb3VsZAorICBwb3RlbnRpYWxseSBoYXZlIGNhdXNlZCBvZmYtYnktb25lLXVscCByZXN1bHRzIG9uIHBsYXRmb3JtcyB3aXRoCisgIHVucmVsaWFibGUgbGRleHAgaW1wbGVtZW50YXRpb25zLgorCistIElzc3VlICMyNDI1NDogTWFrZSBjbGFzcyBkZWZpbml0aW9uIG5hbWVzcGFjZSBvcmRlcmVkIGJ5IGRlZmF1bHQuCisKKy0gSXNzdWUgIzI3NjYyOiBGaXggYW4gb3ZlcmZsb3cgY2hlY2sgaW4gYGBMaXN0X05ld2BgOiB0aGUgb3JpZ2luYWwgY29kZSB3YXMKKyAgY2hlY2tpbmcgYWdhaW5zdCBgYFB5X1NJWkVfTUFYYGAgaW5zdGVhZCBvZiB0aGUgY29ycmVjdCB1cHBlciBib3VuZCBvZgorICBgYFB5X1NTSVpFX1RfTUFYYGAuIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzc4MjogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbXBvcnQgbm93IGNvcnJlY3RseSBhbGxvd3MgdGhlCisgIGBgbV9tZXRob2RzYGAgZmllbGQgdG8gYmUgdXNlZCB0byBhZGQgbW9kdWxlIGxldmVsIGZ1bmN0aW9ucyB0byBpbnN0YW5jZXMKKyAgb2Ygbm9uLW1vZHVsZSB0eXBlcyByZXR1cm5lZCBmcm9tIGBgUHlfY3JlYXRlX21vZGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc5MzY6IFRoZSByb3VuZCgpIGZ1bmN0aW9uIGFjY2VwdGVkIGEgc2Vjb25kIE5vbmUgYXJndW1lbnQKKyAgZm9yIHNvbWUgdHlwZXMgYnV0IG5vdCBmb3Igb3RoZXJzLiAgRml4ZWQgdGhlIGluY29uc2lzdGVuY3kgYnkKKyAgYWNjZXB0aW5nIE5vbmUgZm9yIGFsbCBudW1lcmljIHR5cGVzLgorCistIElzc3VlICMyNzQ4NzogV2FybiBpZiBhIHN1Ym1vZHVsZSBhcmd1bWVudCB0byAicHl0aG9uIC1tIiBvcgorICBydW5weS5ydW5fbW9kdWxlKCkgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMgYWZ0ZXIgcGFyZW50IHBhY2thZ2VzIGFyZQorICBpbXBvcnRlZCwgYnV0IGJlZm9yZSB0aGUgc3VibW9kdWxlIGlzIGV4ZWN1dGVkLgorCistIElzc3VlICMyNzE1NzogTWFrZSBvbmx5IHR5cGUoKSBpdHNlbGYgYWNjZXB0IHRoZSBvbmUtYXJndW1lbnQgZm9ybS4KKyAgUGF0Y2ggYnkgRXJ5ayBTdW4gYW5kIEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI3NTU4OiBGaXggYSBTeXN0ZW1FcnJvciBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgInJhaXNlIiBzdGF0ZW1lbnQuCisgIEluIGEgYnJhbmQgbmV3IHRocmVhZCwgcmFpc2UgYSBSdW50aW1lRXJyb3Igc2luY2UgdGhlcmUgaXMgbm8gYWN0aXZlCisgIGV4Y2VwdGlvbiB0byByZXJhaXNlLiBQYXRjaCB3cml0dGVuIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyODAwODogSW1wbGVtZW50IFBFUCA1MzAgLS0gYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb25zLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI4MDM3OiBVc2Ugc3FsaXRlM19nZXRfYXV0b2NvbW1pdCgpIGluc3RlYWQgb2Ygc2V0dGluZworICBDb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uIG1hbnVhbGx5LgorCistIElzc3VlICMyNTI4MzogQXR0cmlidXRlcyB0bV9nbXRvZmYgYW5kIHRtX3pvbmUgYXJlIG5vdyBhdmFpbGFibGUgb24KKyAgYWxsIHBsYXRmb3JtcyBpbiB0aGUgcmV0dXJuIHZhbHVlcyBvZiB0aW1lLmxvY2FsdGltZSgpIGFuZAorICB0aW1lLmdtdGltZSgpLgorCistIElzc3VlICMyNDQ1NDogUmVndWxhciBleHByZXNzaW9uIG1hdGNoIG9iamVjdCBncm91cHMgYXJlIG5vdworICBhY2Nlc3NpYmxlIHVzaW5nIF9fZ2V0aXRlbV9fLiAgIm1vW3hdIiBpcyBlcXVpdmFsZW50IHRvCisgICJtby5ncm91cCh4KSIuCisKKy0gSXNzdWUgIzEwNzQwOiBzcWxpdGUzIG5vIGxvbmdlciBpbXBsaWNpdGx5IGNvbW1pdCBhbiBvcGVuIHRyYW5zYWN0aW9uCisgIGJlZm9yZSBEREwgc3RhdGVtZW50cy4KKworLSBJc3N1ZSAjMTc5NDE6IEFkZCBhICptb2R1bGUqIHBhcmFtZXRlciB0byBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkuCisKKy0gSXNzdWUgIzIyNDkzOiBJbmxpbmUgZmxhZ3Mgbm93IHNob3VsZCBiZSB1c2VkIG9ubHkgYXQgdGhlIHN0YXJ0IG9mIHRoZQorICByZWd1bGFyIGV4cHJlc3Npb24uICBEZXByZWNhdGlvbiB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgdXNlcyB0aGVtIGluIHRoZQorICBtaWRkbGUgb2YgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KKworLSBJc3N1ZSAjMjY4ODU6IHhtbHJwYyBub3cgc3VwcG9ydHMgdW5tYXJzaGFsbGluZyBhZGRpdGlvbmFsIGRhdGEgdHlwZXMgdXNlZAorICBieSBBcGFjaGUgWE1MLVJQQyBpbXBsZW1lbnRhdGlvbiBmb3IgbnVtZXJpY3MgYW5kIE5vbmUuCisKKy0gSXNzdWUgIzI4MDcwOiBGaXhlZCBwYXJzaW5nIGlubGluZSB2ZXJib3NlIGZsYWcgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKworLSBJc3N1ZSAjMTk1MDA6IEFkZCBjbGllbnQtc2lkZSBTU0wgc2Vzc2lvbiByZXN1bXB0aW9uIHRvIHRoZSBzc2wgbW9kdWxlLgorCistIElzc3VlICMyODAyMjogRGVwcmVjYXRlIHNzbC1yZWxhdGVkIGFyZ3VtZW50cyBpbiBmYXZvciBvZiBTU0xDb250ZXh0LiBUaGUKKyAgZGVwcmVjYXRpb24gaW5jbHVkZSBtYW51YWwgY3JlYXRpb24gb2YgU1NMU29ja2V0IGFuZCBjZXJ0ZmlsZS9rZXlmaWxlCisgIChvciBzaW1pbGFyKSBpbiBmdHBsaWIsIGh0dHBsaWIsIGltYXBsaWIsIHNtdHBsaWIsIHBvcGxpYiBhbmQgdXJsbGliLgorCistIElzc3VlICMyODA0MzogU1NMQ29udGV4dCBoYXMgaW1wcm92ZWQgZGVmYXVsdCBzZXR0aW5nczogT1BfTk9fU1NMdjIsCisgIE9QX05PX1NTTHYzLCBPUF9OT19DT01QUkVTU0lPTiwgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLAorICBPUF9TSU5HTEVfREhfVVNFLCBPUF9TSU5HTEVfRUNESF9VU0UgYW5kIEhJR0ggY2lwaGVycyB3aXRob3V0IE1ENS4KKworLSBJc3N1ZSAjMjQ2OTM6IENoYW5nZWQgc29tZSBSdW50aW1lRXJyb3IncyBpbiB0aGUgemlwZmlsZSBtb2R1bGUgdG8gbW9yZQorICBhcHByb3ByaWF0ZSB0eXBlcy4gSW1wcm92ZWQgc29tZSBlcnJvciBtZXNzYWdlcyBhbmQgZGVidWdnaW5nIG91dHB1dC4KKworLSBJc3N1ZSAjMTc5MDk6IGBganNvbi5sb2FkYGAgYW5kIGBganNvbi5sb2Fkc2BgIG5vdyBzdXBwb3J0IGJpbmFyeSBpbnB1dAorICBlbmNvZGVkIGFzIFVURi04LCBVVEYtMTYgb3IgVVRGLTMyLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNzEzNzogdGhlIHB1cmUgUHl0aG9uIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGBgZnVuY3Rvb2xzLnBhcnRpYWxgYAorICBub3cgbWF0Y2hlcyB0aGUgYmVoYXZpb3VyIG9mIGl0cyBhY2NlbGVyYXRlZCBDIGNvdW50ZXJwYXJ0IGZvciBzdWJjbGFzc2luZywKKyAgcGlja2xpbmcgYW5kIHRleHQgcmVwcmVzZW50YXRpb24gcHVycG9zZXMuIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkgYW5kCisgIFNlcmhpeSBTdG9yY2hha2EuCisKKy0gRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3dzIGFuZCBjcmFzaGVzIGluIHRoZSBtbWFwIG1vZHVsZSB3aXRoIHVudXN1YWwKKyAgdXNhZ2UgcGF0dGVybnMuCisKKy0gSXNzdWUgIzE3MDMxNzg6IEZpeCB0aGUgYWJpbGl0eSB0byBwYXNzIHRoZSAtLWxpbmstb2JqZWN0cyBvcHRpb24gdG8gdGhlCisgIGRpc3R1dGlscyBidWlsZF9leHQgY29tbWFuZC4KIAogLSBJc3N1ZSAjMjgwMTk6IGl0ZXJ0b29scy5jb3VudCgpIG5vIGxvbmdlciByb3VuZHMgbm9uLWludGVnZXIgc3RlcCBpbiByYW5nZQogICBiZXR3ZWVuIDEuMCBhbmQgMi4wIHRvIDEuCiAKKy0gSXNzdWUgIzE4NDAxOiBQZGIgbm93IHN1cHBvcnRzIHRoZSAncmVhZHJjJyBrZXl3b3JkIGFyZ3VtZW50IHRvIGNvbnRyb2wKKyAgd2hldGhlciAucGRicmMgZmlsZXMgc2hvdWxkIGJlIHJlYWQuICBQYXRjaCBieSBNYXJ0aW4gTWF0dXNpYWsgYW5kCisgIFNhbSBLaW1icmVsLgorCiAtIElzc3VlICMyNTk2OTogVXBkYXRlIHRoZSBsaWIydG8zIGdyYW1tYXIgdG8gaGFuZGxlIHRoZSB1bnBhY2tpbmcKICAgZ2VuZXJhbGl6YXRpb25zIGFkZGVkIGluIDMuNS4KIAogLSBJc3N1ZSAjMTQ5Nzc6IG1haWxjYXAgbm93IHJlc3BlY3RzIHRoZSBvcmRlciBvZiB0aGUgbGluZXMgaW4gdGhlIG1haWxjYXAKICAgZmlsZXMgKCJmaXJzdCBtYXRjaCIpLCBhcyByZXF1aXJlZCBieSBSRkMgMTU0Mi4gIFBhdGNoIGJ5IE1pY2hhZWwgTGF6YXIuCiAKKy0gSXNzdWUgIzI4MDI1OiBDb252ZXJ0IGFsbCBzc2wgbW9kdWxlIGNvbnN0YW50cyB0byBJbnRFbnVtIGFuZCBJbnRGbGFncy4KKyAgU1NMQ29udGV4dCBwcm9wZXJ0aWVzIG5vdyByZXR1cm4gZmxhZ3MgYW5kIGVudW1zLgorCistIElzc3VlICM0MzMwMjg6IEFkZGVkIHN1cHBvcnQgb2YgbW9kaWZpZXIgc3BhbnMgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKwogLSBJc3N1ZSAjMjQ1OTQ6IFZhbGlkYXRlcyBwZXJzaXN0IHBhcmFtZXRlciB3aGVuIG9wZW5pbmcgTVNJIGRhdGFiYXNlCiAKIC0gSXNzdWUgIzE3NTgyOiB4bWwuZXRyZWUuRWxlbWVudFRyZWUgbm93cyBwcmVzZXJ2ZXMgd2hpdGVzcGFjZXMgaW4gYXR0cmlidXRlcwpAQCAtMjE2LDkgKzYxMCwxOSBAQAogLSBJc3N1ZSAjMjgwNDc6IEZpeGVkIGNhbGN1bGF0aW9uIG9mIGxpbmUgbGVuZ3RoIHVzZWQgZm9yIHRoZSBiYXNlNjQgQ1RFCiAgIGluIHRoZSBuZXcgZW1haWwgcG9saWNpZXMuCiAKKy0gSXNzdWUgIzI3NTc2OiBGaXggY2FsbCBvcmRlciBpbiBPcmRlcmVkRGljdC5fX2luaXRfXygpLgorCistIGVtYWlsLmdlbmVyYXRvci5EZWNvZGVkR2VuZXJhdG9yIG5vdyBzdXBwb3J0cyB0aGUgcG9saWN5IGtleXdvcmQuCisKKy0gSXNzdWUgIzI4MDI3OiBSZW1vdmUgdW5kb2N1bWVudGVkIG1vZHVsZXMgZnJvbSBgYExpYi9wbGF0LSpgYDogSU4sIENEUk9NLAorICBETEZDTiwgVFlQRVMsIENESU8sIGFuZCBTVFJPUFRTLgorCiAtIElzc3VlICMyNzQ0NTogRG9uJ3QgcGFzcyBzdHIoX2NoYXJzZXQpIHRvIE1JTUVUZXh0LnNldF9wYXlsb2FkKCkuCiAgIFBhdGNoIGJ5IENsYXVkZSBQYXJvei4KIAorLSBJc3N1ZSAjMjQyNzc6IFRoZSBuZXcgZW1haWwgQVBJIGlzIG5vIGxvbmdlciBwcm92aXNpb25hbCwgYW5kIHRoZSBkb2NzCisgIGhhdmUgYmVlbiByZW9yZ2FuaXplZCBhbmQgcmV3cml0dGVuIHRvIGVtcGhhc2l6ZSB0aGUgbmV3IEFQSS4KKwogLSBJc3N1ZSAjMjI0NTA6IHVybGxpYiBub3cgaW5jbHVkZXMgYW4gIkFjY2VwdDogKi8qIiBoZWFkZXIgYW1vbmcgdGhlCiAgIGRlZmF1bHQgaGVhZGVycy4gIFRoaXMgbWFrZXMgdGhlIHJlc3VsdHMgb2YgUkVTVCBBUEkgcmVxdWVzdHMgbW9yZQogICBjb25zaXN0ZW50IGFuZCBwcmVkaWN0YWJsZSBlc3BlY2lhbGx5IHdoZW4gcHJveHkgc2VydmVycyBhcmUgaW52b2x2ZWQuCkBAIC0yMjcsNiArNjMxLDEwIEBACiAgIGJldHdlZW4gcnVucyBnaXZlbiB0aGUgc2FtZSBHcmFtbWFyLnR4dCBpbnB1dCByZWdhcmRsZXNzIG9mIHRoZSBoYXNoCiAgIHJhbmRvbWl6YXRpb24gc2V0dGluZy4KIAorLSBJc3N1ZSAjMjgwMDU6IEFsbG93IEltcG9ydEVycm9ycyBpbiBlbmNvZGluZyBpbXBsZW1lbnRhdGlvbiB0byBwcm9wYWdhdGUuCisKKy0gSXNzdWUgIzI2NjY3OiBTdXBwb3J0IHBhdGgtbGlrZSBvYmplY3RzIGluIGltcG9ydGxpYi51dGlsLgorCiAtIElzc3VlICMyNzU3MDogQXZvaWQgemVyby1sZW5ndGggbWVtY3B5KCkgZXRjIGNhbGxzIHdpdGggbnVsbCBzb3VyY2UKICAgcG9pbnRlcnMgaW4gdGhlICJjdHlwZXMiIGFuZCAiYXJyYXkiIG1vZHVsZXMuCiAKQEAgLTIzNCwxOSArNjQyLDcyIEBACiAgIGNoYXJhY3RlcnMsIG5vdCBvbiBhcmJpdHJhcnkgdW5pY29kZSBsaW5lIGJyZWFrcy4gIFRoaXMgYWxzbyBmaXhlcyBhIGJ1ZyBpbgogICBIVFRQIGhlYWRlciBwYXJzaW5nLgogCistIElzc3VlIDI3MzMxOiBUaGUgZW1haWwubWltZSBjbGFzc2VzIG5vdyBhbGwgYWNjZXB0IGFuIG9wdGlvbmFsIHBvbGljeSBrZXl3b3JkLgorCiAtIElzc3VlIDI3OTg4OiBGaXggZW1haWwgaXRlcl9hdHRhY2htZW50cyBpbmNvcnJlY3QgbXV0YXRpb24gb2YgcGF5bG9hZCBsaXN0LgogCistIElzc3VlICMxNjExMzogQWRkIFNIQS0zIGFuZCBTSEFLRSBzdXBwb3J0IHRvIGhhc2hsaWIgbW9kdWxlLgorCistIEVsaW1pbmF0ZSBhIHRhdXRvbG9naWNhbC1wb2ludGVyLWNvbXBhcmUgd2FybmluZyBpbiBfc2Nwcm94eS5jLgorCistIElzc3VlICMyNzc3NjogVGhlIDpmdW5jOmBvcy51cmFuZG9tYCBmdW5jdGlvbiBkb2VzIG5vdyBibG9jayBvbiBMaW51eCAzLjE3CisgIGFuZCBuZXdlciB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkIHRvIGluY3JlYXNlCisgIHRoZSBzZWN1cml0eS4gVGhpcyBjaGFuZ2UgaXMgcGFydCBvZiB0aGUgOnBlcDpgNTI0YC4KKworLSBJc3N1ZSAjMjc3Nzg6IEV4cG9zZSB0aGUgTGludXggYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgYXMgYSBuZXcKKyAgOmZ1bmM6YG9zLmdldHJhbmRvbWAgZnVuY3Rpb24uIFRoaXMgY2hhbmdlIGlzIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGAuCisKIC0gSXNzdWUgIzI3NjkxOiBGaXggc3NsIG1vZHVsZSdzIHBhcnNpbmcgb2YgR0VOX1JJRCBzdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUKICAgZmllbGRzIGluIFguNTA5IGNlcnRzLgogCistIElzc3VlICMxODg0NDogQWRkIHJhbmRvbS5jaG9pY2VzKCkuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBlcnJvciByZXBvcnRpbmcgYWJvdXQgdHJ1bmNhdGVkIHBpY2tsZSBkYXRhIGluCisgIEMgaW1wbGVtZW50YXRpb24gb2YgdW5waWNrbGVyLiAgVW5waWNrbGluZ0Vycm9yIGlzIG5vdyByYWlzZWQgaW5zdGVhZCBvZgorICBBdHRyaWJ1dGVFcnJvciBhbmQgVmFsdWVFcnJvciBpbiBzb21lIGNhc2VzLgorCistIElzc3VlICMyNjc5ODogQWRkIEJMQUtFMiAoYmxha2UyYiBhbmQgYmxha2UycykgdG8gaGFzaGxpYi4KKworLSBJc3N1ZSAjMjYwMzI6IE9wdGltaXplZCBnbG9iYmluZyBpbiBwYXRobGliIGJ5IHVzaW5nIG9zLnNjYW5kaXIoKTsgaXQgaXMgbm93CisgIGFib3V0IDEuNS0tNCB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NTk2OiBPcHRpbWl6ZWQgZ2xvYigpIGFuZCBpZ2xvYigpIGZ1bmN0aW9ucyBpbiB0aGUKKyAgZ2xvYiBtb2R1bGU7IHRoZXkgYXJlIG5vdyBhYm91dCAzLS02IHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjc5Mjg6IEFkZCBzY3J5cHQgKHBhc3N3b3JkLWJhc2VkIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uKSB0bworICBoYXNobGliIG1vZHVsZSAocmVxdWlyZXMgT3BlblNTTCAxLjEuMCkuCisKIC0gSXNzdWUgIzI3ODUwOiBSZW1vdmUgM0RFUyBmcm9tIHNzbCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0IHRvIGNvdW50ZXIKICAgbWVhc3VyZSBzd2VldDMyIGF0dGFjayAoQ1ZFLTIwMTYtMjE4MykuCiAKIC0gSXNzdWUgIzI3NzY2OiBBZGQgQ2hhQ2hhMjAgUG9seTEzMDUgdG8gc3NsIG1vZHVsZSdzIGRlZmF1bHQgY2lwZXIgbGlzdC4KICAgKFJlcXVpcmVkIE9wZW5TU0wgMS4xLjAgb3IgTGlicmVTU0wpLgogCistIElzc3VlICMyNTM4NzogQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIHdpbnNvdW5kLk1lc3NhZ2VCZWVwLgorCistIElzc3VlICMyNzg2NjogQWRkIFNTTENvbnRleHQuZ2V0X2NpcGhlcnMoKSBtZXRob2QgdG8gZ2V0IGEgbGlzdCBvZiBhbGwKKyAgZW5hYmxlZCBjaXBoZXJzLgorCistIElzc3VlICMyNzc0NDogQWRkIEFGX0FMRyAoTGludXggS2VybmVsIGNyeXB0bykgdG8gc29ja2V0IG1vZHVsZS4KKwogLSBJc3N1ZSAjMjY0NzA6IFBvcnQgc3NsIGFuZCBoYXNobGliIG1vZHVsZSB0byBPcGVuU1NMIDEuMS4wLgogCistIElzc3VlICMxMTYyMDogRml4IHN1cHBvcnQgZm9yIFNORF9NRU1PUlkgaW4gd2luc291bmQuUGxheVNvdW5kLiAgQmFzZWQgb24gYQorICBwYXRjaCBieSBUaW0gTGVzaGVyLgorCistIElzc3VlICMxMTczNDogQWRkIHN1cHBvcnQgZm9yIElFRUUgNzU0IGhhbGYtcHJlY2lzaW9uIGZsb2F0cyB0byB0aGUKKyAgc3RydWN0IG1vZHVsZS4gQmFzZWQgb24gYSBwYXRjaCBieSBFbGkgU3RldmVucy4KKworLSBJc3N1ZSAjMjc5MTk6IERlcHJlY2F0ZWQgYGBleHRyYV9wYXRoYGAgZGlzdHJpYnV0aW9uIG9wdGlvbiBpbiBkaXN0dXRpbHMKKyAgcGFja2FnaW5nLgorCistIElzc3VlICMyMzIyOTogQWRkIG5ldyBgYGNtYXRoYGAgY29uc3RhbnRzOiBgYGNtYXRoLmluZmBgIGFuZCBgYGNtYXRoLm5hbmBgIHRvCisgIG1hdGNoIGBgbWF0aC5pbmZgYCBhbmQgYGBtYXRoLm5hbmBgLCBhbmQgYWxzbyBgYGNtYXRoLmluZmpgYCBhbmQKKyAgYGBjbWF0aC5uYW5qYGAgdG8gbWF0Y2ggdGhlIGZvcm1hdCB1c2VkIGJ5IGNvbXBsZXggcmVwci4KKworLSBJc3N1ZSAjMjc4NDI6IFRoZSBjc3YuRGljdFJlYWRlciBub3cgcmV0dXJucyByb3dzIG9mIHR5cGUgT3JkZXJlZERpY3QuCisgIChDb250cmlidXRlZCBieSBTdGV2ZSBIb2xkZW4uKQorCiAtIFJlbW92ZSBzdXBwb3J0IGZvciBwYXNzaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHRvIG9zLmFjY2Vzcy4gSXQgbmV2ZXIgd29ya2VkIGJ1dAogICBwcmV2aW91c2x5IGRpZG4ndCByYWlzZS4KIApAQCAtMjY4LDI1ICs3MjksMjc2IEBACiAtIElzc3VlICMxMDUxMzogRml4IGEgcmVncmVzc2lvbiBpbiBDb25uZWN0aW9uLmNvbW1pdCgpLiAgU3RhdGVtZW50cyBzaG91bGQKICAgbm90IGJlIHJlc2V0IGFmdGVyIGEgY29tbWl0LgogCistIElzc3VlICMxMjMxOTogQ2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBzdXBwb3J0IGFkZGVkIHRvCisgIGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uIHJlcXVlc3RzLiAgVGhlCisgIHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIgY2xhc3MgZG9lcyBub3QgZW5mb3JjZSBhIENvbnRlbnQtTGVuZ3RoCisgIGhlYWRlciBhbnkgbW9yZS4gIElmIGEgSFRUUCByZXF1ZXN0IGhhcyBhIGZpbGUgb3IgaXRlcmFibGUgYm9keSwgYnV0IG5vCisgIENvbnRlbnQtTGVuZ3RoIGhlYWRlciwgdGhlIGxpYnJhcnkgbm93IGZhbGxzIGJhY2sgdG8gdXNlIGNodW5rZWQgdHJhbnNmZXItCisgIGVuY29kaW5nLgorCiAtIEEgbmV3IHZlcnNpb24gb2YgdHlwaW5nLnB5IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi90eXBpbmc6CiAgIC0gQ29sbGVjdGlvbiAob25seSBmb3IgMy42KSAoSXNzdWUgIzI3NTk4KQogICAtIEFkZCBGcm96ZW5TZXQgdG8gX19hbGxfXyAodXBzdHJlYW0gIzI2MSkKICAgLSBmaXggY3Jhc2ggaW4gX2dldF90eXBlX3ZhcnMoKSAodXBzdHJlYW0gIzI1OSkKICAgLSBSZW1vdmUgdGhlIGRpY3QgY29uc3RyYWludCBpbiBGb3J3YXJkUmVmLl9ldmFsX3R5cGUgKHVwc3RyZWFtICMyNTIpCiAKKy0gSXNzdWUgIzI3ODMyOiBNYWtlIGBgX25vcm1hbGl6ZWBgIHBhcmFtZXRlciB0byBgYEZyYWN0aW9uYGAgY29uc3R1Y3RvcgorICBrZXl3b3JkLW9ubHksIHNvIHRoYXQgYGBGcmFjdGlvbigyLCAzLCA0KWBgIG5vdyByYWlzZXMgYGBUeXBlRXJyb3JgYC4KKwogLSBJc3N1ZSAjMjc1Mzk6IEZpeCB1bm5vcm1hbGlzZWQgYGBGcmFjdGlvbi5fX3Bvd19fYGAgcmVzdWx0IGluIHRoZSBjYXNlCiAgIG9mIG5lZ2F0aXZlIGV4cG9uZW50IGFuZCBuZWdhdGl2ZSBiYXNlLgogCiAtIElzc3VlICMyMTcxODogY3Vyc29yLmRlc2NyaXB0aW9uIGlzIG5vdyBhdmFpbGFibGUgZm9yIHF1ZXJpZXMgdXNpbmcgQ1RFcy4KIAorLSBJc3N1ZSAjMjc4MTk6IEluIGRpc3R1dGlscyBzZGlzdHMsIHNpbXBseSBwcm9kdWNlIHRoZSAiZ3p0YXIiIChnemlwcGVkIHRhcgorICBmb3JtYXQpIGRpc3RyaWJ1dGlvbnMgb24gYWxsIHBsYXRmb3JtcyB1bmxlc3MgImZvcm1hdHMiIGlzIHN1cHBsaWVkLgorCiAtIElzc3VlICMyNDY2OiBwb3NpeHBhdGguaXNtb3VudCBub3cgY29ycmVjdGx5IHJlY29nbml6ZXMgbW91bnQgcG9pbnRzIHdoaWNoCiAgIHRoZSB1c2VyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MuCiAKKy0gSXNzdWUgIzk5OTg6IE9uIExpbnV4LCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgbm93IGxvb2tzIGluIExEX0xJQlJBUllfUEFUSAorICBmb3Igc2hhcmVkIGxpYnJhcmllcy4KKworLSBJc3N1ZSAjMjc1NzM6IGV4aXQgbWVzc2FnZSBmb3IgY29kZS5pbnRlcmFjdCBpcyBub3cgY29uZmlndXJhYmxlLgorCistIElzc3VlICMyNzkzMDogSW1wcm92ZWQgYmVoYXZpb3VyIG9mIGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lci4KKyAgVGhhbmtzIHRvIFBhdWxvIEFuZHJhZGUgYW5kIFBldHIgVmlrdG9yaW4gZm9yIHRoZSBhbmFseXNpcyBhbmQgcGF0Y2guCisKKy0gSXNzdWUgIzY3NjY6IERpc3RyaWJ1dGVkIHJlZmVyZW5jZSBjb3VudGluZyBhZGRlZCB0byBtdWx0aXByb2Nlc3NpbmcKKyAgdG8gc3VwcG9ydCBuZXN0aW5nIG9mIHNoYXJlZCB2YWx1ZXMgLyBwcm94eSBvYmplY3RzLgorCistIElzc3VlICMyMTIwMTogSW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgbXVsdGlwcm9jZXNzaW5nIGVycm9yIG1lc3NhZ2UuICBUaGFua3MKKyAgdG8gV29qY2llY2ggV2FsY3phayBmb3IgcGF0Y2guCisKKy0gYXN5bmNpbzogQWRkIHNldF9wcm90b2NvbCAvIGdldF9wcm90b2NvbCB0byBUcmFuc3BvcnRzLgorCistIElzc3VlICMyNzQ1NjogYXN5bmNpbzogU2V0IFRDUF9OT0RFTEFZIGJ5IGRlZmF1bHQuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMTUzMDg6IEFkZCAnaW50ZXJydXB0IGV4ZWN1dGlvbicgKF5DKSB0byBTaGVsbCBtZW51LgorICBQYXRjaCBieSBSb2dlciBTZXJ3eSwgdXBkYXRlZCBieSBCYXlhcmQgUmFuZGVsLgorCistIElzc3VlICMyNzkyMjogU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgorCistIElzc3VlICMyNzg5MTogQ29uc2lzdGVudGx5IGdyb3VwIGFuZCBzb3J0IGltcG9ydHMgd2l0aGluIGlkbGVsaWIgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTc2NDI6IGFkZCBsYXJnZXIgZm9udCBzaXplcyBmb3IgY2xhc3Nyb29tIHByb2plY3Rpb24uCisKKy0gQWRkIHZlcnNpb24gdG8gdGl0bGUgb2YgSURMRSBoZWxwIHdpbmRvdy4KKworLSBJc3N1ZSAjMjU1NjQ6IEluIHNlY3Rpb24gb24gSURMRSAtLSBjb25zb2xlIGRpZmZlcmVuY2VzLCBtZW50aW9uIHRoYXQKKyAgdXNpbmcgZXhlYyBtZWFucyB0aGF0IF9fYnVpbHRpbnNfXyBpcyBkZWZpbmVkIGZvciBlYWNoIHN0YXRlbWVudC4KKworLSBJc3N1ZSAjMjc4MjE6IEZpeCAzLjYuMGEzIHJlZ3Jlc3Npb24gdGhhdCBwcmV2ZW50ZWQgY3VzdG9tIGtleSBzZXRzCisgIGZyb20gYmVpbmcgc2VsZWN0ZWQgd2hlbiBubyBjdXN0b20gdGhlbWUgd2FzIGRlZmluZWQuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyNjkwMDogRXhjbHVkZWQgdW5kZXJzY29yZWQgbmFtZXMgYW5kIG90aGVyIHByaXZhdGUgQVBJIGZyb20gbGltaXRlZCBBUEkuCisKKy0gSXNzdWUgIzI2MDI3OiBBZGQgc3VwcG9ydCBmb3IgcGF0aC1saWtlIG9iamVjdHMgaW4gUHlVbmljb2RlX0ZTQ29udmVydGVyKCkgJgorICBQeVVuaWNvZGVfRlNEZWNvZGVyKCkuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNzQyNzogQWRkaXRpb25hbCB0ZXN0cyBmb3IgdGhlIG1hdGggbW9kdWxlLiBQYXRjaCBieSBGcmFuY2lzY28gQ291em8uCisKKy0gSXNzdWUgIzI3OTUzOiBTa2lwIG1hdGggYW5kIGNtYXRoIHRlc3RzIHRoYXQgZmFpbCBvbiBPUyBYIDEwLjQgZHVlIHRvIGEKKyAgcG9vciBsaWJtIGltcGxlbWVudGF0aW9uIG9mIHRhbi4KKworLSBJc3N1ZSAjMjYwNDA6IEltcHJvdmUgdGVzdF9tYXRoIGFuZCB0ZXN0X2NtYXRoIGNvdmVyYWdlIGFuZCByaWdvdXIuIFBhdGNoIGJ5CisgIEplZmYgQWxsZW4uCisKKy0gSXNzdWUgIzI3Nzg3OiBDYWxsIGdjLmNvbGxlY3QoKSBiZWZvcmUgY2hlY2tpbmcgZWFjaCB0ZXN0IGZvciAiZGFuZ2xpbmcKKyAgdGhyZWFkcyIsIHNpbmNlIHRoZSBkYW5nbGluZyB0aHJlYWRzIGFyZSB3ZWFrIHJlZmVyZW5jZXMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNzU2NjogRml4IGNsZWFuIHRhcmdldCBpbiBmcmVlemUgbWFrZWZpbGUgKHBhdGNoIGJ5IExpc2EgUm9hY2gpCisKKy0gSXNzdWUgIzI3NzA1OiBVcGRhdGUgbWVzc2FnZSBpbiB2YWxpZGF0ZV91Y3J0YmFzZS5weQorCistIElzc3VlICMyNzk3NjogRGVwcmVjYXRlIGJ1aWxkaW5nIF9jdHlwZXMgd2l0aCB0aGUgYnVuZGxlZCBjb3B5IG9mIGxpYmZmaSBvbgorICBub24tT1NYIFVOSVggcGxhdGZvcm1zLgorCistIElzc3VlICMyNzk4MzogQ2F1c2UgbGFjayBvZiBsbHZtLXByb2ZkYXRhIHRvb2wgd2hlbiB1c2luZyBjbGFuZyBhcworICByZXF1aXJlZCBmb3IgUEdPIGxpbmtpbmcgdG8gYmUgYSBjb25maWd1cmUgdGltZSBlcnJvciByYXRoZXIgdGhhbgorICBtYWtlIHRpbWUgd2hlbiAtLXdpdGgtb3B0aW1pemF0aW9ucyBpcyBlbmFibGVkLiAgQWxzbyBpbXByb3ZlIG91cgorICBhYmlsaXR5IHRvIGZpbmQgdGhlIGxsdm0tcHJvZmRhdGEgdG9vbCBvbiBNYWNPUyBhbmQgc29tZSBMaW51eGVzLgorCistIElzc3VlICMyMTU5MDogU3VwcG9ydCBmb3IgRFRyYWNlIGFuZCBTeXN0ZW1UYXAgcHJvYmVzLgorCistIElzc3VlICMyNjMwNzogVGhlIHByb2ZpbGUtb3B0IGJ1aWxkIG5vdyBhcHBsaWVzIFBHTyB0byB0aGUgYnVpbHQtaW4gbW9kdWxlcy4KKworLSBJc3N1ZSAjMjY1Mzk6IEFkZCB0aGUgLS13aXRoLW9wdGltaXphdGlvbnMgZmxhZyB0byB0dXJuIG9uIExUTyBhbmQgUEdPIGJ1aWxkCisgIHN1cHBvcnQgd2hlbiBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzI3OTE3OiBTZXQgcGxhdGZvcm0gdHJpcGxldHMgZm9yIEFuZHJvaWQgYnVpbGRzLgorCistIElzc3VlICMyNTgyNTogVXBkYXRlIHJlZmVyZW5jZXMgdG8gdGhlICQoTElCUEwpIGluc3RhbGxhdGlvbiBwYXRoIG9uIEFJWC4KKyAgVGhpcyBwYXRoIHdhcyBjaGFuZ2VkIGluIDMuMmE0LgorCistIFVwZGF0ZSBPUyBYIGluc3RhbGxlciB0byB1c2UgU1FMaXRlIDMuMTQuMSBhbmQgWFogNS4yLjIuCisKKy0gSXNzdWUgIzIxMTIyOiBGaXggTFRPIGJ1aWxkcyBvbiBPUyBYLgorCistIElzc3VlICMxNzEyODogQnVpbGQgT1MgWCBpbnN0YWxsZXIgd2l0aCBhIHByaXZhdGUgY29weSBvZiBPcGVuU1NMLgorICBBbHNvIHByb3ZpZGUgYSBzYW1wbGUgSW5zdGFsbCBDZXJ0aWZpY2F0ZXMgY29tbWFuZCBzY3JpcHQgdG8gaW5zdGFsbCBhCisgIHNldCBvZiByb290IGNlcnRpZmljYXRlcyBmcm9tIHRoZSB0aGlyZC1wYXJ0eSBjZXJ0aWZpIG1vZHVsZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3OTUyOiBHZXQgVG9vbHMvc2NyaXB0cy9maXhjaWQucHkgd29ya2luZyB3aXRoIFB5dGhvbiAzIGFuZCB0aGUKKyAgY3VycmVudCAicmUiIG1vZHVsZSwgYXZvaWQgaW52YWxpZCBQeXRob24gYmFja3NsYXNoIGVzY2FwZXMsIGFuZCBmaXggYSBidWcKKyAgcGFyc2luZyBlc2NhcGVkIEMgcXVvdGUgc2lnbnMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjMjgwNjU6IFVwZGF0ZSB4eiBkZXBlbmRlbmN5IHRvIDUuMi4yIGFuZCBidWlsZCBpdCBmcm9tIHNvdXJjZS4KKworLSBJc3N1ZSAjMjUxNDQ6IEVuc3VyZXMgVGFyZ2V0RGlyIGlzIHNldCBiZWZvcmUgY29udGludWluZyB3aXRoIGN1c3RvbQorICBpbnN0YWxsLgorCistIElzc3VlICMxNjAyOiBXaW5kb3dzIGNvbnNvbGUgZG9lc24ndCBpbnB1dCBvciBwcmludCBVbmljb2RlIChQRVAgNTI4KQorCistIElzc3VlICMyNzc4MTogQ2hhbmdlIGZpbGUgc3lzdGVtIGVuY29kaW5nIG9uIFdpbmRvd3MgdG8gVVRGLTggKFBFUCA1MjkpCisKKy0gSXNzdWUgIzI3NzMxOiBPcHQtb3V0IG9mIE1BWF9QQVRIIG9uIFdpbmRvd3MgMTAKKworLSBJc3N1ZSAjNjEzNTogQWRkcyBlbmNvZGluZyBhbmQgZXJyb3JzIHBhcmFtZXRlcnMgdG8gc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMjc5NTk6IEFkZHMgb2VtIGVuY29kaW5nLCBhbGlhcyBhbnNpIHRvIG1iY3MsIG1vdmUgYWxpYXNtYmNzIHRvCisgIGNvZGVjIGxvb2t1cC4KKworLSBJc3N1ZSAjMjc5ODI6IFRoZSBmdW5jdGlvbnMgb2YgdGhlIHdpbnNvdW5kIG1vZHVsZSBub3cgYWNjZXB0IGtleXdvcmQKKyAgYXJndW1lbnRzLgorCistIElzc3VlICMyMDM2NjogQnVpbGQgZnVsbCB0ZXh0IHNlYXJjaCBzdXBwb3J0IGludG8gU1FMaXRlIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NzU2OiBBZGRzIG5ldyBpY29ucyBmb3IgUHl0aG9uIGZpbGVzIGFuZCBwcm9jZXNzZXMgb24gV2luZG93cy4KKyAgRGVzaWducyBieSBDaGVycnkgV2FuZy4KKworLSBJc3N1ZSAjMjc4ODM6IFVwZGF0ZSBzcWxpdGUgdG8gMy4xNC4xLjAgb24gV2luZG93cy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSA0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDgtMTUqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyNzcwNDogT3B0aW1pemVkIGNyZWF0aW5nIGJ5dGVzIGFuZCBieXRlYXJyYXkgZnJvbSBieXRlLWxpa2Ugb2JqZWN0cworICBhbmQgaXRlcmFibGVzLiAgU3BlZWQgdXAgdG8gMyB0aW1lcyBmb3Igc2hvcnQgb2JqZWN0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIE5hb2tpIEluYWRhLgorCistIElzc3VlICMyNjgyMzogTGFyZ2Ugc2VjdGlvbnMgb2YgcmVwZWF0ZWQgbGluZXMgaW4gdHJhY2ViYWNrcyBhcmUgbm93CisgIGFiYnJldmlhdGVkIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiBieSB0aGUgYnVpbHRpbgorICB0cmFjZWJhY2sgcmVuZGVyaW5nLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU3NDogRGVjcmVhc2VkIGFuIG92ZXJoZWFkIG9mIHBhcnNpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gZnVuY3Rpb25zCisgIGltcGxlbWVudGVkIHdpdGggdXNpbmcgQXJndW1lbnQgQ2xpbmljLgorCistIElzc3VlICMyMjU1NzogTm93IGltcG9ydGluZyBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZXMgaXMgdXAgdG8gMi41IHRpbWVzCisgIGZhc3Rlci4KKworLSBJc3N1ZSAjMTc1OTY6IEluY2x1ZGUgPHdpbmNyeXB0Lmg+IHRvIGhlbHAgd2l0aCBNaW4gR1cgYnVpbGRpbmcuCisKKy0gSXNzdWUgIzE3NTk5OiBPbiBXaW5kb3dzLCByZW5hbWUgdGhlIHByaXZhdGVseSBkZWZpbmVkIFJFUEFSU0VfREFUQV9CVUZGRVIKKyAgc3RydWN0dXJlIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggdGhlIGRlZmluaXRpb24gZnJvbSBNaW4gR1cuCisKKy0gSXNzdWUgIzI3NTA3OiBBZGQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaCBieQorICBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc1ODE6IERvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluCisgIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMxNjIxOiBBdm9pZCBzaWduZWQgaW50ZWdlciBvdmVyZmxvdyBpbiBsaXN0IGFuZCB0dXBsZSBvcGVyYXRpb25zLgorICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc0MTk6IFN0YW5kYXJkIF9faW1wb3J0X18oKSBubyBsb25nZXIgbG9vayB1cCAiX19pbXBvcnRfXyIgaW4gZ2xvYmFscworICBvciBidWlsdGlucyBmb3IgaW1wb3J0aW5nIHN1Ym1vZHVsZXMgb3IgImZyb20gaW1wb3J0Ii4gIEZpeGVkIGEgY3Jhc2ggaWYKKyAgcmFpc2UgYSB3YXJuaW5nIGFib3V0IHVuYWJsaW5nIHRvIHJlc29sdmUgcGFja2FnZSBmcm9tIF9fc3BlY19fIG9yCisgIF9fcGFja2FnZV9fLgorCistIElzc3VlICMyNzA4MzogUmVzcGVjdCB0aGUgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlIHVuZGVyIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI3NTE0OiBNYWtlIGhhdmluZyB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MgYSBTeW50YXhFcnJvcgorICBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yLgorCistIElzc3VlICMyNzM2NjogSW1wbGVtZW50ZWQgUEVQIDQ4NyAoU2ltcGxlciBjdXN0b21pemF0aW9uIG9mIGNsYXNzIGNyZWF0aW9uKS4KKyAgVXBvbiBzdWJjbGFzc2luZywgdGhlIF9faW5pdF9zdWJjbGFzc19fIGNsYXNzbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgYmFzZQorICBjbGFzcy4gRGVzY3JpcHRvcnMgYXJlIGluaXRpYWxpemVkIHdpdGggX19zZXRfbmFtZV9fIGFmdGVyIGNsYXNzIGNyZWF0aW9uLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI2MDI3LCAjMjc1MjQ6IEFkZCBQRVAgNTE5L19fZnNwYXRoX18oKSBzdXBwb3J0IHRvIHRoZSBvcyBhbmQgb3MucGF0aAorICBtb2R1bGVzLiBJbmNsdWRlcyBjb2RlIGZyb20gSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI3NTk4OiBBZGQgQ29sbGVjdGlvbnMgdG8gY29sbGVjdGlvbnMuYWJjLgorICBQYXRjaCBieSBJdmFuIExldmtpdnNreWksIGRvY3MgYnkgTmVpbCBHaXJkaGFyLgorCistIElzc3VlICMyNTk1ODogU3VwcG9ydCAiYW50aS1yZWdpc3RyYXRpb24iIG9mIHNwZWNpYWwgbWV0aG9kcyBmcm9tCisgIHZhcmlvdXMgQUJDcywgbGlrZSBfX2hhc2hfXywgX19pdGVyX18gb3IgX19sZW5fXy4gIEFsbCB0aGVzZSAoYW5kCisgIHNldmVyYWwgbW9yZSkgY2FuIGJlIHNldCB0byBOb25lIGluIGFuIGltcGxlbWVudGF0aW9uIGNsYXNzIGFuZCB0aGUKKyAgYmVoYXZpb3Igd2lsbCBiZSBhcyBpZiB0aGUgbWV0aG9kIGlzIG5vdCBkZWZpbmVkIGF0IGFsbC4KKyAgKFByZXZpb3VzbHksIHRoaXMgbWVjaGFuaXNtIGV4aXN0ZWQgb25seSBmb3IgX19oYXNoX18sIHRvIG1ha2UKKyAgbXV0YWJsZSBjbGFzc2VzIHVuaGFzaGFibGUuKSAgQ29kZSBjb250cmlidXRlZCBieSBBbmRyZXcgQmFybmVydCBhbmQKKyAgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMxNjc2NDogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmRlY29tcHJlc3MoKS4gIFBhdGNoIGJ5CisgIFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNzczNjogUHJldmVudCBzZWdmYXVsdCBhZnRlciBpbnRlcnByZXRlciByZS1pbml0aWFsaXphdGlvbiBkdWUKKyAgdG8gcmVmIGNvdW50IHByb2JsZW0gaW50cm9kdWNlZCBpbiBjb2RlIGZvciBJc3N1ZSAjMjcwMzggaW4gMy42LjBhMy4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1NjI4OiAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBmb3IKKyAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSBhcmUgbm93IGtleXdvcmQtb25seS4KKworLSBJc3N1ZSAjMTIzNDU6IEFkZCBtYXRoZW1hdGljYWwgY29uc3RhbnQgdGF1IHRvIG1hdGggYW5kIGNtYXRoLiBTZWUgYWxzbworICBQRVAgNjI4LgorCistIElzc3VlICMyNjgyMzogdHJhY2ViYWNrLlN0YWNrU3VtbWFyeS5mb3JtYXQgbm93IGFiYnJldmlhdGVzIGxhcmdlIHNlY3Rpb25zIG9mCisgIHJlcGVhdGVkIGxpbmVzIGFzICJbUHJldmlvdXMgbGluZSByZXBlYXRlZCB7Y291bnR9IG1vcmUgdGltZXNdIiAodGhpcyBjaGFuZ2UKKyAgdGhlbiBmdXJ0aGVyIGFmZmVjdHMgb3RoZXIgdHJhY2ViYWNrIGRpc3BsYXkgb3BlcmF0aW9ucyBpbiB0aGUgbW9kdWxlKS4gUGF0Y2gKKyAgYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjc2NjQ6IEFkZCB0byBjb25jdXJyZW50LmZ1dHVyZXMudGhyZWFkLlRocmVhZFBvb2xFeGVjdXRvcigpCisgIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgYSB0aHJlYWQgbmFtZSBwcmVmaXguCisKKy0gSXNzdWUgIzI3MTgxOiBBZGQgZ2VvbWV0cmljX21lYW4gYW5kIGhhcm1vbmljX21lYW4gdG8gc3RhdGlzdGljcyBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NTczOiBjb2RlLmludGVyYWN0IG5vdyBwcmludHMgYW4gbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKKy0gSXNzdWUgIzY0MjI6IEFkZCBhdXRvcmFuZ2UgbWV0aG9kIHRvIHRpbWVpdC5UaW1lciBvYmplY3RzLgorCiAtIElzc3VlICMyNzc3MzogQ29ycmVjdCBzb21lIG1lbW9yeSBtYW5hZ2VtZW50IGVycm9ycyBzZXJ2ZXJfaG9zdG5hbWUgaW4KICAgX3NzbC53cmFwX3NvY2tldCgpLgogCiAtIElzc3VlICMyNjc1MDogdW5pdHRlc3QubW9jay5jcmVhdGVfYXV0b3NwZWMoKSBub3cgd29ya3MgcHJvcGVybHkgZm9yCi0gIHN1YmNsYXNzZXMgb2YgcHJvcGVydHkoKSBhbmQgb3RoZXIgZGF0YSBkZXNjcmlwdG9ycy4KKyAgc3ViY2xhc3NlcyBvZiBwcm9wZXJ0eSgpIGFuZCBvdGhlciBkYXRhIGRlc2NyaXB0b3JzLiAgUmVtb3ZlcyB0aGUgbmV2ZXIKKyAgcHVibGljbHkgdXNlZCwgbmV2ZXIgZG9jdW1lbnRlZCB1bml0dGVzdC5tb2NrLkRlc2NyaXB0b3JUeXBlcyB0dXBsZS4KKworLSBJc3N1ZSAjMjY3NTQ6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGggaW4gY29tcGlsZSgpIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY4MDA6IFVuZG9jdW1lbnRlZCBzdXBwb3J0IG9mIGdlbmVyYWwgYnl0ZXMtbGlrZSBvYmplY3RzCisgIGFzIHBhdGhzIGluIG9zIGZ1bmN0aW9ucyBpcyBub3cgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjY5ODE6IEFkZCBfb3JkZXJfIGNvbXBhdGliaWxpdHkgc2hpbSB0byBlbnVtLkVudW0gZm9yCisgIFB5dGhvbiAyLzMgY29kZSBiYXNlcy4KKworLSBJc3N1ZSAjMjc2NjE6IEFkZGVkIHR6aW5mbyBrZXl3b3JkIGFyZ3VtZW50IHRvIGRhdGV0aW1lLmNvbWJpbmUuCiAKIC0gSW4gdGhlIGN1cnNlcyBtb2R1bGUsIHJhaXNlIGFuIGVycm9yIGlmIHdpbmRvdy5nZXRzdHIoKSBvciB3aW5kb3cuaW5zdHIoKSBpcwogICBwYXNzZWQgYSBuZWdhdGl2ZSB2YWx1ZS4KQEAgLTMwNSw2ICsxMDE3LDkgQEAKICAgSFRUUF9QUk9YWSB2YXJpYWJsZSB3aGVuIFJFUVVFU1RfTUVUSE9EIGVudmlyb25tZW50IGlzIHNldCwgd2hpY2ggaW5kaWNhdGVzCiAgIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KIAorLSBJc3N1ZSAjNzA2MzogUmVtb3ZlIGRlYWQgY29kZSBmcm9tIHRoZSAiYXJyYXkiIG1vZHVsZSdzIHNsaWNlIGhhbmRsaW5nLgorICBQYXRjaCBieSBDaHVjay4KKwogLSBJc3N1ZSAjMjc2NTY6IERvIG5vdCBhc3N1bWUgc2NoZWQuaCBkZWZpbmVzIGFueSBTQ0hFRF8qIGNvbnN0YW50cy4KIAogLSBJc3N1ZSAjMjcxMzA6IEluIHRoZSAiemxpYiIgbW9kdWxlLCBmaXggaGFuZGxpbmcgb2YgbGFyZ2UgYnVmZmVycwpAQCAtMzEyLDYgKzEwMjcsMTUgQEAKICAgd2VyZSBsaW1pdGVkIHRvIDQgR2lCLCBhbmQgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gb3BlcmF0aW9ucyBkaWQgbm90CiAgIHByb3Blcmx5IGhhbmRsZSByZXN1bHRzIG9mIDQgR2lCLgogCistIElzc3VlICMyNDc3MzogSW1wbGVtZW50ZWQgUEVQIDQ5NSAoTG9jYWwgVGltZSBEaXNhbWJpZ3VhdGlvbikuCisKKy0gRXhwb3NlIHRoZSBFUE9MTEVYQ0xVU0lWRSBjb25zdGFudCAod2hlbiBpdCBpcyBkZWZpbmVkKSBpbiB0aGUgc2VsZWN0IG1vZHVsZS4KKworLSBJc3N1ZSAjMjc1Njc6IEV4cG9zZSB0aGUgRVBPTExSREhVUCBhbmQgUE9MTFJESFVQIGNvbnN0YW50cyBpbiB0aGUgc2VsZWN0CisgIG1vZHVsZS4KKworLSBJc3N1ZSAjMTYyMTogQXZvaWQgc2lnbmVkIGludCBuZWdhdGlvbiBvdmVyZmxvdyBpbiB0aGUgImF1ZGlvb3AiIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjc1MzM6IFJlbGVhc2UgR0lMIGluIG50Ll9pc2RpcgogCiAtIElzc3VlICMxNzcxMTogRml4ZWQgdW5waWNrbGluZyBieSB0aGUgcGVyc2lzdGVudCBJRCB3aXRoIHByb3RvY29sIDAuCkBAIC0zMTksNiArMTA0MywxMTMgQEAKIAogLSBJc3N1ZSAjMjc1MjI6IEF2b2lkIGFuIHVuaW50ZW50aW9uYWwgcmVmZXJlbmNlIGN5Y2xlIGluIGVtYWlsLmZlZWRwYXJzZXIuCiAKKy0gSXNzdWUgIzI3NTEyOiBGaXggYSBzZWdmYXVsdCB3aGVuIG9zLmZzcGF0aCgpIGNhbGxlZCBhbiBfX2ZzcGF0aF9fKCkgbWV0aG9kCisgIHRoYXQgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKK0lETEUKKy0tLS0KKworLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCisgIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQorICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KKworLSBJc3N1ZSAjMjc2MjE6IFB1dCBxdWVyeSByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBxdWVyeQorICBib3ggaXRzZWxmIGluc3RlYWQgb2YgaW4gYSBzZXBhcmF0ZSBtYXNzYWdlYm94LiAgUmVkbyB0ZXN0cyB0byBtYXRjaC4KKyAgQWRkIE1hYyBPU1ggcmVmaW5lbWVudHMuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI3NjIwOiBFc2NhcGUga2V5IG5vdyBjbG9zZXMgUXVlcnkgYm94IGFzIGNhbmNlbGxlZC4KKworLSBJc3N1ZSAjMjc2MDk6IElETEU6IHRhYiBhZnRlciBpbml0aWFsIHdoaXRlc3BhY2Ugc2hvdWxkIHRhYiwgbm90CisgIGF1dG9jb21wbGV0ZS4gVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggd3JpdGluZyBkb2NzdHJpbmdzIGF0IGxlYXN0CisgIHR3aWNlIGluZGVudGVkLgorCistIElzc3VlICMyNzYwOTogRXhwbGljaXRseSByZXR1cm4gTm9uZSB3aGVuIHRoZXJlIGFyZSBhbHNvIG5vbi1Ob25lCisgIHJldHVybnMuIEluIGEgZmV3IGNhc2VzLCByZXZlcnNlIGEgY29uZGl0aW9uIGFuZCBlbGltaW5hdGUgYSByZXR1cm4uCisKKy0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgorICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCistIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTgwNTogU2tpcCBhIHRlc3QgaW4gdGVzdF9wa2d1dGlsIGFzIG5lZWRlZCB0aGF0IGRvZXNuJ3Qgd29yayB3aGVuCisgIGBgX19uYW1lX18gPT0gX19tYWluX19gYC4gUGF0Y2ggYnkgU2lsZW50R2hvc3QuCisKKy0gSXNzdWUgIzI3NDcyOiBBZGQgdGVzdC5zdXBwb3J0LnVuaXhfc2hlbGwgYXMgdGhlIHBhdGggdG8gdGhlIGRlZmF1bHQgc2hlbGwuCisKKy0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAorICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorCistIElzc3VlICMyNzU5NDogUHJldmVudCBhc3NlcnRpb24gZXJyb3Igd2hlbiBydW5uaW5nIHRlc3RfYXN0IHdpdGggY292ZXJhZ2UKKyAgZW5hYmxlZDogZW5zdXJlIGNvZGUgb2JqZWN0IGhhcyBhIHZhbGlkIGZpcnN0IGxpbmUgbnVtYmVyLgorICBQYXRjaCBzdWdnZXN0ZWQgYnkgSXZhbiBMZXZraXZza3lpLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3NjQ3OiBVcGRhdGUgYnVuZGxlZCBUY2wvVGsgdG8gOC42LjYuCisKKy0gSXNzdWUgIzI3NjEwOiBBZGRzIFBFUCA1MTQgbWV0YWRhdGEgdG8gV2luZG93cyBpbnN0YWxsZXIKKworLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAorICB3b3JrcyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzI3MzA5OiBFbmFibGVzIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKKyAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKKworLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwLCB3aGljaCBpcworICByZXF1aXJlZCBvbiBBSVguICBUaGUgcmVmZXJlbmNlcyB3ZXJlIGFjY2lkZW50YWxseSBjaGFuZ2VkIGluIDMuNS4wYTEuCisKKy0gSXNzdWUgIzI3NDUzOiBDUFAgaW52b2NhdGlvbiBpbiBjb25maWd1cmUgbXVzdCB1c2UgQ1BQRkxBR1MuIFBhdGNoIGJ5CisgIENoaSBIc3VhbiBZZW4uCisKKy0gSXNzdWUgIzI3NjQxOiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgaW5zZXJ0cyBjb21tZW50cyBpbnRvIHRoZSBtYWtlZmlsZQorICB0byBwcmV2ZW50IHRoZSBwZ2VuIGFuZCBfZnJlZXplX2ltcG9ydGxpYiBleGVjdXRhYmxlcyBmcm9tIGJlaW5nIGNyb3NzLQorICBjb21waWxlZC4KKworLSBJc3N1ZSAjMjY2NjI6IFNldCBQWVRIT05fRk9SX0dFTiBpbiBjb25maWd1cmUgYXMgdGhlIFB5dGhvbiBwcm9ncmFtIHRvIGJlCisgIHVzZWQgZm9yIGZpbGUgZ2VuZXJhdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgorCistIElzc3VlICMxMDkxMDogQXZvaWQgQysrIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNEIGFuZCBPUyBYLgorICBBbHNvIHVwZGF0ZSBGcmVlZEJTRCB2ZXJzaW9uIGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGN0eXBlIFVURi04IHdvcmthcm91bmQuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTA3LTExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjc0NzM6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gYnl0ZXMgYW5kIGJ5dGVhcnJheQorICBjb25jYXRlbmF0aW9ucy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyMzAzNDogVGhlIG91dHB1dCBvZiBhIHNwZWNpYWwgUHl0aG9uIGJ1aWxkIHdpdGggZGVmaW5lZCBDT1VOVF9BTExPQ1MsCisgIFNIT1dfQUxMT0NfQ09VTlQgb3IgU0hPV19UUkFDS19DT1VOVCBtYWNyb3MgaXMgbm93IG9mZiBieSAgZGVmYXVsdC4gIEl0IGNhbgorICBiZSByZS1lbmFibGVkIHVzaW5nIHRoZSAiLVggc2hvd2FsbG9jY291bnQiIG9wdGlvbi4gIEl0IG5vdyBvdXRwdXRzIHRvIHN0ZGVycgorICBpbnN0ZWFkIG9mIHN0ZG91dC4KKworLSBJc3N1ZSAjMjc0NDM6IF9fbGVuZ3RoX2hpbnRfXygpIG9mIGJ5dGVhcnJheSBpdGVyYXRvcnMgbm8gbG9uZ2VyIHJldHVybiBhCisgIG5lZ2F0aXZlIGludGVnZXIgZm9yIGEgcmVzaXplZCBieXRlYXJyYXkuCisKKy0gSXNzdWUgIzI3MDA3OiBUaGUgZnJvbWhleCgpIGNsYXNzIG1ldGhvZHMgb2YgYnl0ZXMgYW5kIGJ5dGVhcnJheSBzdWJjbGFzc2VzCisgIG5vdyByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgY29ycmVzcG9uZGluZyBzdWJjbGFzcy4KKworTGlicmFyeQorLS0tLS0tLQorCiAtIElzc3VlICMyNjg0NDogRml4IGVycm9yIG1lc3NhZ2UgZm9yIGltcC5maW5kX21vZHVsZSgpIHRvIHJlZmVyIHRvICdwYXRoJwogICBpbnN0ZWFkIG9mICduYW1lJy4gUGF0Y2ggYnkgTGV2IE1heGltb3YuCiAKQEAgLTMyOSwyMiArMTE2MCw1NCBAQAogICBjb25maXJtaW5nIHRoZSBuZXRzY2FwZSBjb29raWUgZm9ybWF0IGFuZCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoCiAgIGRvY3VtZW50YXRpb24uCiAKLS0gSXNzdWUgIzI2NjY0OiBGaXggYWN0aXZhdGUuZmlzaCBieSByZW1vdmluZyBtaXMtdXNlIG9mIGBgJGBgLgorLSBJc3N1ZSAjMjE3MDg6IERlcHJlY2F0ZWQgZGJtLmR1bWIgYmVoYXZpb3IgdGhhdCBkaWZmZXJzIGZyb20gY29tbW9uIGRibQorICBiZWhhdmlvcjogY3JlYXRpbmcgYSBkYXRhYmFzZSBpbiAncicgYW5kICd3JyBtb2RlcyBhbmQgbW9kaWZ5aW5nIGEgZGF0YWJhc2UKKyAgaW4gJ3InIG1vZGUuCiAKLS0gSXNzdWUgIzIyMTE1OiBGaXhlZCB0cmFjaW5nIFRraW50ZXIgdmFyaWFibGVzOiB0cmFjZV92ZGVsZXRlKCkgd2l0aCB3cm9uZwotICBtb2RlIG5vIGxvbmdlciBicmVhayB0cmFjaW5nLCB0cmFjZV92aW5mbygpIG5vdyBhbHdheXMgcmV0dXJucyBhIGxpc3Qgb2YKLSAgcGFpcnMgb2Ygc3RyaW5ncywgdHJhY2luZyBpbiB0aGUgInUiIG1vZGUgbm93IHdvcmtzLgorLSBJc3N1ZSAjMjY3MjE6IENoYW5nZSB0aGUgc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLndmaWxlIGF0dHJpYnV0ZQorICB0byBpbXBsZW1lbnQgQnVmZmVyZWRJT0Jhc2UuIEluIHBhcnRpY3VsYXIsIHRoZSB3cml0ZSgpIG1ldGhvZCBubyBsb25nZXIKKyAgZG9lcyBwYXJ0aWFsIHdyaXRlcy4KIAotLSBGaXggYSBzY29waW5nIGlzc3VlIGluIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIgd2hpY2ggdHJpZ2dlcmVkIGFuCi0gIFVuYm91bmRMb2NhbEVycm9yIHdoZW4gbGF6eS1sb2FkaW5nIGEgbW9kdWxlIHRoYXQgd2FzIGFscmVhZHkgcHV0IGludG8KLSAgc3lzLm1vZHVsZXMuCistIElzc3VlICMyMjExNTogQWRkZWQgbWV0aG9kcyB0cmFjZV9hZGQsIHRyYWNlX3JlbW92ZSBhbmQgdHJhY2VfaW5mbyBpbiB0aGUKKyAgdGtpbnRlci5WYXJpYWJsZSBjbGFzcy4gIFRoZXkgcmVwbGFjZSBvbGQgbWV0aG9kcyB0cmFjZV92YXJpYWJsZSwgdHJhY2UsCisgIHRyYWNlX3ZkZWxldGUgYW5kIHRyYWNlX3ZpbmZvIHRoYXQgdXNlIG9ic29sZXRlIFRjbCBjb21tYW5kcyBhbmQgbWlnaHQKKyAgbm90IHdvcmsgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFRjbC4gIEZpeGVkIG9sZCB0cmFjaW5nIG1ldGhvZHM6CisgIHRyYWNlX3ZkZWxldGUoKSB3aXRoIHdyb25nIG1vZGUgbm8gbG9uZ2VyIGJyZWFrIHRyYWNpbmcsIHRyYWNlX3ZpbmZvKCkgbm93CisgIGFsd2F5cyByZXR1cm5zIGEgbGlzdCBvZiBwYWlycyBvZiBzdHJpbmdzLCB0cmFjaW5nIGluIHRoZSAidSIgbW9kZSBub3cgd29ya3MuCisKKy0gSXNzdWUgIzI2MjQzOiBPbmx5IHRoZSBsZXZlbCBhcmd1bWVudCB0byB6bGliLmNvbXByZXNzKCkgaXMga2V5d29yZCBhcmd1bWVudAorICBub3cuICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgcG9zaXRpb25hbC1vbmx5LgorCistIElzc3VlICMyNzAzODogRXhwb3NlIHRoZSBEaXJFbnRyeSB0eXBlIGFzIG9zLkRpckVudHJ5LiBDb2RlIHBhdGNoIGJ5CisgIEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyNzE4NjogVXBkYXRlIG9zLmZzcGF0aCgpL1B5T1NfRlNQYXRoKCkgdG8gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSBvZgorICBfX2ZzcGF0aF9fKCkgdG8gYmUgZWl0aGVyIHN0ciBvciBieXRlcy4KKworLSBJc3N1ZSAjMTg3MjY6IEFsbCBvcHRpb25hbCBwYXJhbWV0ZXJzIG9mIHRoZSBkdW1wKCksIGR1bXBzKCksCisgIGxvYWQoKSBhbmQgbG9hZHMoKSBmdW5jdGlvbnMgYW5kIEpTT05FbmNvZGVyIGFuZCBKU09ORGVjb2RlciBjbGFzcworICBjb25zdHJ1Y3RvcnMgaW4gdGhlIGpzb24gbW9kdWxlIGFyZSBub3cga2V5d29yZC1vbmx5LgorCistIElzc3VlICMyNzMxOTogTWV0aG9kcyBzZWxlY3Rpb25fc2V0KCksIHNlbGVjdGlvbl9hZGQoKSwgc2VsZWN0aW9uX3JlbW92ZSgpCisgIGFuZCBzZWxlY3Rpb25fdG9nZ2xlKCkgb2YgdHRrLlRyZWVWaWV3IG5vdyBhbGxvdyBwYXNzaW5nIG11bHRpcGxlIGl0ZW1zIGFzCisgIG11bHRpcGxlIGFyZ3VtZW50cyBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlbSBhcyBhIHR1cGxlLiAgRGVwcmVjYXRlZAorICB1bmRvY3VtZW50ZWQgYWJpbGl0eSBvZiBjYWxsaW5nIHRoZSBzZWxlY3Rpb24oKSBtZXRob2Qgd2l0aCBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzI3MDc5OiBGaXhlZCBjdXJzZXMuYXNjaWkgZnVuY3Rpb25zIGlzYmxhbmsoKSwgaXNjbnRybCgpIGFuZCBpc3B1bmN0KCkuCiAKKy0gSXNzdWUgIzI3Mjk0OiBOdW1lcmljYWwgc3RhdGUgaW4gdGhlIHJlcHIgZm9yIFRraW50ZXIgZXZlbnQgb2JqZWN0cyBpcyBub3cKKyAgcmVwcmVzZW50ZWQgYXMgYSBjb21iaW5hdGlvbiBvZiBrbm93biBmbGFncy4KKworLSBJc3N1ZSAjMjcxNzc6IE1hdGNoIG9iamVjdHMgaW4gdGhlIHJlIG1vZHVsZSBub3cgc3VwcG9ydCBpbmRleC1saWtlIG9iamVjdHMKKyAgYXMgZ3JvdXAgaW5kaWNlcy4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgSmVyb2VuIERlbWV5ZXIgYW5kIFhpYW5nIFpoYW5nLgorCiAtIElzc3VlICMyNjc1NDogU29tZSBmdW5jdGlvbnMgKGNvbXBpbGUoKSBldGMpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQKICAgZW5jb2RlZCBhcyBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZS1saWtlIG9iamVjdHMKICAgYXJlIGFjY2VwdGVkLgogCistIElzc3VlICMyNjUzNjogc29ja2V0LmlvY3RsIG5vdyBzdXBwb3J0cyBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRILiBQYXRjaCBieQorICBEYW5pZWwgU3Rva2VzLgorCiAtIElzc3VlICMyNzA0ODogUHJldmVudHMgZGlzdHV0aWxzIGZhaWxpbmcgb24gV2luZG93cyB3aGVuIGVudmlyb25tZW50CiAgIHZhcmlhYmxlcyBjb250YWluIG5vbi1BU0NJSSBjaGFyYWN0ZXJzCiAKQEAgLTM2Myw5ICsxMjI2LDE1IEBACiAgIExpbnV4LiAgVHJ1bmNhdGUgc2l6ZSB0byBJTlRfTUFYIGFuZCBsb29wIHVudGlsIHdlIGNvbGxlY3RlZCBlbm91Z2ggcmFuZG9tCiAgIGJ5dGVzLCBpbnN0ZWFkIG9mIGNhc3RpbmcgYSBkaXJlY3RseSBQeV9zc2l6ZV90IHRvIGludC4KIAorLSBJc3N1ZSAjMTY4NjQ6IHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZCBub3cgc3VwcG9ydHMgUkVQTEFDRSBzdGF0ZW1lbnQuCisgIEluaXRpYWwgcGF0Y2ggYnkgQWxleCBMb3JkVGhvcnNlbi4KKwogLSBJc3N1ZSAjMjYzODY6IEZpeGVkIHR0ay5UcmVlVmlldyBzZWxlY3Rpb24gb3BlcmF0aW9ucyB3aXRoIGl0ZW0gaWQncwogICBjb250YWluaW5nIHNwYWNlcy4KIAorLSBJc3N1ZSAjODYzNzogSG9ub3IgYSBwYWdlciBzZXQgYnkgdGhlIGVudiB2YXIgTUFOUEFHRVIgKGluIHByZWZlcmVuY2UgdG8KKyAgb25lIHNldCBieSB0aGUgZW52IHZhciBQQUdFUikuCisKIC0gW1NlY3VyaXR5XSBJc3N1ZSAjMjI2MzY6IEF2b2lkIHNoZWxsIGluamVjdGlvbiBwcm9ibGVtcyB3aXRoCiAgIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpLgogCkBAIC0zNzMsMjIxICsxMjQyLDQwMyBAQAogICBsb2NhbGUgZW5jb2RpbmcsIGFuZCBmaXggZ2V0X2JlZ2lkeCgpIGFuZCBnZXRfZW5kaWR4KCkgdG8gcmV0dXJuIGNvZGUgcG9pbnQKICAgaW5kZXhlcy4KIAotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCi0KIC0gSXNzdWUgIzI3MzkyOiBBZGQgbG9vcC5jb25uZWN0X2FjY2VwdGVkX3NvY2tldCgpLgogICBQYXRjaCBieSBKaW0gRnVsdG9uLgogCi0tIElzc3VlICMyNzkzMDogSW1wcm92ZWQgYmVoYXZpb3VyIG9mIGxvZ2dpbmcuaGFuZGxlcnMuUXVldWVMaXN0ZW5lci4KLSAgVGhhbmtzIHRvIFBhdWxvIEFuZHJhZGUgYW5kIFBldHIgVmlrdG9yaW4gZm9yIHRoZSBhbmFseXNpcyBhbmQgcGF0Y2guCi0KLS0gSXNzdWUgIzIxMjAxOiBJbXByb3ZlcyByZWFkYWJpbGl0eSBvZiBtdWx0aXByb2Nlc3NpbmcgZXJyb3IgbWVzc2FnZS4gIFRoYW5rcwotICB0byBXb2pjaWVjaCBXYWxjemFrIGZvciBwYXRjaC4KLQotLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgotCi0tIElzc3VlICMyNzkwNjogRml4IHNvY2tldCBhY2NlcHQgZXhoYXVzdGlvbiBkdXJpbmcgaGlnaCBUQ1AgdHJhZmZpYy4KLSAgUGF0Y2ggYnkgS2V2aW4gQ29ud2F5LgotCi0tIElzc3VlICMyODE3NDogSGFuZGxlIHdoZW4gU09fUkVVU0VQT1JUIGlzbid0IHByb3Blcmx5IHN1cHBvcnRlZC4KLSAgUGF0Y2ggYnkgU2V0aCBNaWNoYWVsIExhcnNvbi4KLQotLSBJc3N1ZSAjMjY2NTQ6IEluc3BlY3QgZnVuY3Rvb2xzLnBhcnRpYWwgaW4gYXN5bmNpby5IYW5kbGUuX19yZXByX18uCi0gIFBhdGNoIGJ5IGljZWJveS4KLQotLSBJc3N1ZSAjMjY5MDk6IEZpeCBzbG93IHBpcGVzIElPIGluIGFzeW5jaW8uCi0gIFBhdGNoIGJ5IElOQURBIE5hb2tpLgotCi0tIElzc3VlICMyODE3NjogRml4IGNhbGxiYWNrcyByYWNlIGluIGFzeW5jaW8uU2VsZWN0b3JMb29wLnNvY2tfY29ubmVjdC4KLQotLSBJc3N1ZSAjMjc3NTk6IEZpeCBzZWxlY3RvcnMgaW5jb3JyZWN0bHkgcmV0YWluIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KLSAgUGF0Y2ggYnkgTWFyayBXaWxsaWFtcy4KLQotLSBJc3N1ZSAjMjgzNjg6IFJlZnVzZSBtb25pdG9yaW5nIHByb2Nlc3NlcyBpZiB0aGUgY2hpbGQgd2F0Y2hlciBoYXMKLSAgbm8gbG9vcCBhdHRhY2hlZC4KLSAgUGF0Y2ggYnkgVmluY2VudCBNaWNoZWwuCi0KLS0gSXNzdWUgIzI4MzY5OiBSYWlzZSBSdW50aW1lRXJyb3Igd2hlbiB0cmFuc3BvcnQncyBGRCBpcyB1c2VkIHdpdGgKLSAgYWRkX3JlYWRlciwgYWRkX3dyaXRlciwgZXRjLgotCi0tIElzc3VlICMyODM3MDogU3BlZWR1cCBhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseS4KLSAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgotCi0tIElzc3VlICMyODM3MTogRGVwcmVjYXRlIHBhc3NpbmcgYXN5bmNpby5IYW5kbGVzIHRvIHJ1bl9pbl9leGVjdXRvci4KLQotLSBJc3N1ZSAjMjgzNzI6IEZpeCBhc3luY2lvIHRvIHN1cHBvcnQgZm9ybWF0dGluZyBvZiBub24tcHl0aG9uIGNvcm91dGluZXMuCi0KLS0gSXNzdWUgIzI4Mzk5OiBSZW1vdmUgVU5JWCBzb2NrZXQgZnJvbSBGUyBiZWZvcmUgYmluZGluZy4KLSAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgotCi0tIElzc3VlICMyNzk3MjogUHJvaGliaXQgVGFza3MgdG8gYXdhaXQgb24gdGhlbXNlbHZlcy4KLQotLSBJc3N1ZSAjMjY5MjM6IEZpeCBhc3luY2lvLkdhdGhlciB0byByZWZ1c2UgYmVpbmcgY2FuY2VsbGVkIG9uY2UgYWxsIAotICBjaGlsZHJlbiBhcmUgZG9uZS4KLSAgUGF0Y2ggYnkgSm9oYW5uZXMgRWJrZS4KLQotLSBJc3N1ZSAjMjY3OTY6IERvbid0IGNvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgZm9yIGRlZmF1bHQgCi0gIHRocmVhZHBvb2wgZXhlY3V0b3IuCi0gIEluaXRpYWwgcGF0Y2ggYnkgSGFucyBMYXdyZW56LgotCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KLSAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KKy0gSXNzdWUgIzI3NDc3OiBJRExFIHNlYXJjaCBkaWFsb2dzIG5vdyB1c2UgdHRrIHdpZGdldHMuCiAKLS0gSXNzdWUgIzI3OTIyOiBTdG9wIElETEUgdGVzdHMgZnJvbSAnZmxhc2hpbmcnIGd1aSB3aWRnZXRzIG9uIHRoZSBzY3JlZW4uCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgogCi0tIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCi0KLS0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0Ci0gIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCi0KLS0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgotICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKLSAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCi0KLS0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgotICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgorLSBJc3N1ZSAjMjc0NTI6IG1ha2UgY29tbWFuZCBsaW5lICJpZGxlLXRlc3Q+IHB5dGhvbiB0ZXN0X2hlbHAucHkiIHdvcmsuCisgIF9fZmlsZV9fIGlzIHJlbGF0aXZlIHdoZW4gcHl0aG9uIGlzIHN0YXJ0ZWQgaW4gdGhlIGZpbGUncyBkaXJlY3RvcnkuCiAKIC0gSXNzdWUgIzI3NDUyOiBhZGQgbGluZSBjb3VudGVyIGFuZCBjcmMgdG8gSURMRSBjb25maWdIYW5kbGVyIHRlc3QgZHVtcC4KIAorLSBJc3N1ZSAjMjczODA6IElETEU6IGFkZCBxdWVyeS5weSB3aXRoIGJhc2UgUXVlcnkgZGlhbG9nIGFuZCB0dGsgd2lkZ2V0cy4KKyAgTW9kdWxlIGhhZCBzdWJjbGFzc2VzIFNlY3Rpb25OYW1lLCBNb2R1bGVOYW1lLCBhbmQgSGVscFNvdXJjZSwgd2hpY2ggYXJlCisgIHVzZWQgdG8gZ2V0IGluZm9ybWF0aW9uIGZyb20gdXNlcnMgYnkgY29uZmlnZGlhbG9nIGFuZCBmaWxlID0+TG9hZCBNb2R1bGUuCisgIEVhY2ggc3ViY2xhc3MgaGFzIGl0dyBvd24gdmFsaWRpdHkgY2hlY2tzLiAgVXNpbmcgTW9kdWxlTmFtZSBhbGxvd3MgdXNlcnMKKyAgdG8gZWRpdCBiYWQgbW9kdWxlIG5hbWVzIGluc3RlYWQgb2Ygc3RhcnRpbmcgb3Zlci4KKyAgQWRkIHRlc3RzIGFuZCBkZWxldGUgdGhlIHR3byBmaWxlcyBjb21iaW5lZCBpbnRvIHRoZSBuZXcgb25lLgorCistIElzc3VlICMyNzM3MjogVGVzdF9pZGxlIG5vIGxvbmdlciBjaGFuZ2VzIHRoZSBsb2NhbGUuCisKIC0gSXNzdWUgIzI3MzY1OiBBbGxvdyBub24tYXNjaWkgY2hhcnMgaW4gSURMRSBORVdTLnR4dCwgZm9yIGNvbnRyaWJ1dG9yIG5hbWVzLgogCiAtIElzc3VlICMyNzI0NTogSURMRTogQ2xlYW5seSBkZWxldGUgY3VzdG9tIHRoZW1lcyBhbmQga2V5IGJpbmRpbmdzLgogICBQcmV2aW91c2x5LCB3aGVuIElETEUgd2FzIHN0YXJ0ZWQgZnJvbSBhIGNvbnNvbGUgb3IgYnkgaW1wb3J0LCBhIGNhc2NhZGUKICAgb2Ygd2FybmluZ3Mgd2FzIGVtaXR0ZWQuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMyNDEzNzogUnVuIElETEUsIHRlc3RfaWRsZSwgYW5kIGh0ZXN0IHdpdGggdGtpbnRlciBkZWZhdWx0IHJvb3QKKyAgZGlzYWJsZWQuICBGaXggY29kZSBhbmQgdGVzdHMgdGhhdCBmYWlsIHdpdGggdGhpcyByZXN0cmljdGlvbi4gIEZpeCBodGVzdHMgdG8KKyAgbm90IGNyZWF0ZSBhIHNlY29uZCBhbmQgcmVkdW5kYW50IHJvb3QgYW5kIG1haW5sb29wLgorCistIElzc3VlICMyNzMxMDogRml4IElETEUuYXBwIGZhaWx1cmUgdG8gbGF1bmNoIG9uIE9TIFggZHVlIHRvIHZlc3RpZ2lhbCBpbXBvcnQuCisKIEMgQVBJCiAtLS0tLQogCiAtIElzc3VlICMyNjc1NDogUHlVbmljb2RlX0ZTRGVjb2RlcigpIGFjY2VwdGVkIGEgZmlsZW5hbWUgYXJndW1lbnQgZW5jb2RlZCBhcwotICBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZXMtbGlrZSBvYmplY3RzIGFyZSBhY2NlcHRlZC4KKyAgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGUtbGlrZSBvYmplY3RzIGFyZSBhY2NlcHRlZC4KIAotVGVzdHMKK0J1aWxkCiAtLS0tLQogCi0tIElzc3VlICMyODQwOTogcmVncnRlc3Q6IGZpeCB0aGUgcGFyc2VyIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCistIElzc3VlICMyODA2NjogRml4IHRoZSBsb2dpYyB0aGF0IHNlYXJjaGVzIGJ1aWxkIGRpcmVjdG9yaWVzIGZvciBnZW5lcmF0ZWQKKyAgaW5jbHVkZSBmaWxlcyB3aGVuIGJ1aWxkaW5nIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgogCi0tIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCi0gIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorLSBJc3N1ZSAjMjc0NDI6IEV4cG9zZSB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwgdGhhdCBweXRob24gd2FzIGJ1aWx0IGFnYWluc3QsIGluCisgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKSBhcyAnQU5EUk9JRF9BUElfTEVWRUwnLgogCi0tIElzc3VlICMyNzM2OTogSW4gdGVzdF9weWV4cGF0LCBhdm9pZCB0ZXN0aW5nIGFuIGVycm9yIG1lc3NhZ2UgZGV0YWlsIHRoYXQKLSAgY2hhbmdlZCBpbiBFeHBhdCAyLjIuMC4KKy0gSXNzdWUgIzI3NDM0OiBUaGUgaW50ZXJwcmV0ZXIgdGhhdCBydW5zIHRoZSBjcm9zcy1idWlsZCwgZm91bmQgaW4gUEFUSCwgbXVzdAorICBub3cgYmUgb2YgdGhlIHNhbWUgZmVhdHVyZSB2ZXJzaW9uIChlLmcuIDMuNikgYXMgdGhlIHNvdXJjZSBiZWluZyBidWlsdC4KKworLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCisKKy0gSXNzdWUgIzIzOTY4OiBSZW5hbWUgdGhlIHBsYXRmb3JtIGRpcmVjdG9yeSBmcm9tIHBsYXQtJChNQUNIREVQKSB0bworICBwbGF0LSQoUExBVEZPUk1fVFJJUExFVCkuCisgIFJlbmFtZSB0aGUgY29uZmlnIGRpcmVjdG9yeSAoTElCUEwpIGZyb20gY29uZmlnLSQoTERWRVJTSU9OKSB0bworICBjb25maWctJChMRFZFUlNJT04pLSQoUExBVEZPUk1fVFJJUExFVCkuCisgIEluc3RhbGwgdGhlIHBsYXRmb3JtIHNwZWNpZmMgX3N5c2NvbmZpZ2RhdGEgbW9kdWxlIGludG8gdGhlIHBsYXRmb3JtCisgIGRpcmVjdG9yeSBhbmQgcmVuYW1lIGl0IHRvIGluY2x1ZGUgdGhlIEFCSUZMQUdTLgorCistIERvbid0IHVzZSBsYXJnZWZpbGUgc3VwcG9ydCBmb3IgR05VL0h1cmQuCiAKIFRvb2xzL0RlbW9zCiAtLS0tLS0tLS0tLQogCi0tIElzc3VlICMyNzk1MjogR2V0IFRvb2xzL3NjcmlwdHMvZml4Y2lkLnB5IHdvcmtpbmcgd2l0aCBQeXRob24gMyBhbmQgdGhlCi0gIGN1cnJlbnQgInJlIiBtb2R1bGUsIGF2b2lkIGludmFsaWQgUHl0aG9uIGJhY2tzbGFzaCBlc2NhcGVzLCBhbmQgZml4IGEgYnVnCi0gIHBhcnNpbmcgZXNjYXBlZCBDIHF1b3RlIHNpZ25zLgotCiAtIElzc3VlICMyNzMzMjogRml4ZWQgdGhlIHR5cGUgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIG1vZHVsZS1sZXZlbCBmdW5jdGlvbnMKICAgZ2VuZXJhdGVkIGJ5IEFyZ3VtZW50IENsaW5pYy4gIFBhdGNoIGJ5IFBldHIgVmlrdG9yaW4uCiAKIC0gSXNzdWUgIzI3NDE4OiBGaXhlZCBUb29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weS4KIAotV2luZG93cwotLS0tLS0tLQorRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyODI1MTogSW1wcm92ZW1lbnRzIHRvIGhlbHAgbWFudWFscyBvbiBXaW5kb3dzLgorLSBJc3N1ZSAjMTk0ODk6IE1vdmVkIHRoZSBzZWFyY2ggYm94IGZyb20gdGhlIHNpZGViYXIgdG8gdGhlIGhlYWRlciBhbmQgZm9vdGVyCisgIG9mIGVhY2ggcGFnZS4gIFBhdGNoIGJ5IEFtbWFyIEFza2FyLgogCi0tIElzc3VlICMyODExMDogbGF1bmNoZXIubXNpIGhhcyBkaWZmZXJlbnQgcHJvZHVjdCBjb2RlcyBiZXR3ZWVuIDMyLWJpdCBhbmQKLSAgNjQtYml0Ci0KLS0gSXNzdWUgIzI1MTQ0OiBFbnN1cmVzIFRhcmdldERpciBpcyBzZXQgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCBjdXN0b20KLSAgaW5zdGFsbC4KLQotLSBJc3N1ZSAjMjc0Njk6IEFkZHMgYSBzaGVsbCBleHRlbnNpb24gdG8gdGhlIGxhdW5jaGVyIHNvIHRoYXQgZHJhZyBhbmQgZHJvcAotICB3b3JrcyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzI3MzA5OiBFbmFibGVkIHByb3BlciBXaW5kb3dzIHN0eWxlcyBpbiBweXRob25bd10uZXhlIG1hbmlmZXN0LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMjg0NDQ6IEZpeCBtaXNzaW5nIGV4dGVuc2lvbnMgbW9kdWxlcyB3aGVuIGNyb3NzIGNvbXBpbGluZy4KLQotLSBJc3N1ZSAjMjgyNDg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkIHRvIHVzZSBPcGVuU1NMIDEuMC4yai4KLQotLSBJc3N1ZSAjMjgyNTg6IEZpeGVkIGJ1aWxkIHdpdGggRXN0b25pYW4gbG9jYWxlIChweXRob24tY29uZmlnIGFuZCBkaXN0Y2xlYW4KLSAgdGFyZ2V0cyBpbiBNYWtlZmlsZSkuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KLQotLSBJc3N1ZSAjMjY2NjE6IHNldHVwLnB5IG5vdyBkZXRlY3RzIHN5c3RlbSBsaWJmZmkgd2l0aCBtdWx0aWFyY2ggd3JhcHBlci4KLQotLSBJc3N1ZSAjMjgwNjY6IEZpeCB0aGUgbG9naWMgdGhhdCBzZWFyY2hlcyBidWlsZCBkaXJlY3RvcmllcyBmb3IgZ2VuZXJhdGVkCi0gIGluY2x1ZGUgZmlsZXMgd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KLQotLSBJc3N1ZSAjMTU4MTk6IFJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZSBzZWFyY2ggZGlyZWN0b3J5IG9wdGlvbiBmb3IgYnVpbGRpbmcKLSAgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCi0KLS0gSXNzdWUgIzI3NTY2OiBGaXggY2xlYW4gdGFyZ2V0IGluIGZyZWV6ZSBtYWtlZmlsZSAocGF0Y2ggYnkgTGlzYSBSb2FjaCkKLQotLSBJc3N1ZSAjMjc3MDU6IFVwZGF0ZSBtZXNzYWdlIGluIHZhbGlkYXRlX3VjcnRiYXNlLnB5Ci0KLS0gSXNzdWUgIzI3OTgzOiBDYXVzZSBsYWNrIG9mIGxsdm0tcHJvZmRhdGEgdG9vbCB3aGVuIHVzaW5nIGNsYW5nIGFzCi0gIHJlcXVpcmVkIGZvciBQR08gbGlua2luZyB0byBiZSBhIGNvbmZpZ3VyZSB0aW1lIGVycm9yIHJhdGhlciB0aGFuCi0gIG1ha2UgdGltZSB3aGVuIC0td2l0aC1vcHRpbWl6YXRpb25zIGlzIGVuYWJsZWQuICBBbHNvIGltcHJvdmUgb3VyCi0gIGFiaWxpdHkgdG8gZmluZCB0aGUgbGx2bS1wcm9mZGF0YSB0b29sIG9uIE1hY09TIGFuZCBzb21lIExpbnV4ZXMuCi0KLS0gSXNzdWUgIzI2MzA3OiBUaGUgcHJvZmlsZS1vcHQgYnVpbGQgbm93IGFwcGxpZXMgUEdPIHRvIHRoZSBidWlsdC1pbiBtb2R1bGVzLgotCi0tIElzc3VlICMyNjM1OTogQWRkIHRoZSAtLXdpdGgtb3B0aW1pemF0aW9ucyBjb25maWd1cmUgZmxhZy4KLQotLSBJc3N1ZSAjMjc3MTM6IFN1cHByZXNzIHNwdXJpb3VzIGJ1aWxkIHdhcm5pbmdzIHdoZW4gdXBkYXRpbmcgaW1wb3J0bGliJ3MKLSAgYm9vdHN0cmFwIGZpbGVzLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcKLQotLSBJc3N1ZSAjMjU4MjU6IENvcnJlY3QgdGhlIHJlZmVyZW5jZXMgdG8gTW9kdWxlcy9weXRob24uZXhwIGFuZCBsZF9zb19haXgsCi0gIHdoaWNoIGFyZSByZXF1aXJlZCBvbiBBSVguICBUaGlzIHVwZGF0ZXMgcmVmZXJlbmNlcyB0byBhbiBpbnN0YWxsYXRpb24gcGF0aAotICB0aGF0IHdhcyBjaGFuZ2VkIGluIDMuMmE0LCBhbmQgdW5kb2VzIGNoYW5nZWQgcmVmZXJlbmNlcyB0byB0aGUgYnVpbGQgdHJlZQotICB0aGF0IHdlcmUgbWFkZSBpbiAzLjUuMGExLgotCi0tIElzc3VlICMyNzQ1MzogQ1BQIGludm9jYXRpb24gaW4gY29uZmlndXJlIG11c3QgdXNlIENQUEZMQUdTLiBQYXRjaCBieQotICBDaGkgSHN1YW4gWWVuLgotCi0tIElzc3VlICMyNzY0MTogVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGluc2VydHMgY29tbWVudHMgaW50byB0aGUgbWFrZWZpbGUKLSAgdG8gcHJldmVudCB0aGUgcGdlbiBhbmQgX2ZyZWV6ZV9pbXBvcnRsaWIgZXhlY3V0YWJsZXMgZnJvbSBiZWluZyBjcm9zcy0KLSAgY29tcGlsZWQuCi0KLS0gSXNzdWUgIzI2NjYyOiBTZXQgUFlUSE9OX0ZPUl9HRU4gaW4gY29uZmlndXJlIGFzIHRoZSBQeXRob24gcHJvZ3JhbSB0byBiZQotICB1c2VkIGZvciBmaWxlIGdlbmVyYXRpb24gZHVyaW5nIHRoZSBidWlsZC4KLQotLSBJc3N1ZSAjMTA5MTA6IEF2b2lkIEMrKyBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRCBhbmQgT1MgWC4KLSAgQWxzbyB1cGRhdGUgRnJlZWRCU0QgdmVyc2lvbiBjaGVja3MgZm9yIHRoZSBvcmlnaW5hbCBjdHlwZSBVVEYtOCB3b3JrYXJvdW5kLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4yPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlbGVhc2UgZGF0ZTogMjAxNi0wNi0yNgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmguCistIElzc3VlICMyNzI4NTogVXBkYXRlIGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCB0aGUgZGVwcmVjYXRpb24gb2YgYGBweXZlbnZgYAorICBhbmQgbm9ybWFsaXplIG9uIHRoZSB0ZXJtICJ2aXJ0dWFsIGVudmlyb25tZW50Ii4gUGF0Y2ggYnkgU3RldmUgUGllcmN5LgogCiBUZXN0cwogLS0tLS0KIAotLSBJc3N1ZSAjMjY4Njc6IFVidW50dSdzIG9wZW5zc2wgT1BfTk9fU1NMdjMgaXMgZm9yY2VkIG9uIGJ5IGRlZmF1bHQ7IGZpeCB0ZXN0LgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzI3MzY1OiBBbGxvdyBub24tYXNjaWkgaW4gaWRsZWxpYi9ORVdTLnR4dCAtIG1pbmltYWwgcGFydCBmb3IgMy41LjIuCistIElzc3VlICMyNzAyNzogQWRkZWQgdGVzdC5zdXBwb3J0LmlzX2FuZHJvaWQgdGhhdCBpcyBUcnVlIHdoZW4gdGhpcyBpcyBhbgorICBBbmRyb2lkIGJ1aWxkLgogCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4yIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1SZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTIKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTMqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCistIElzc3VlICMyNzA5NTogU2ltcGxpZmllZCBNQUtFX0ZVTkNUSU9OIGFuZCByZW1vdmVkIE1BS0VfQ0xPU1VSRSBvcGNvZGVzLgorICBQYXRjaCBieSBEZW11ciBSdW1lZC4KKworLSBJc3N1ZSAjMjcxOTA6IFJhaXNlIE5vdFN1cHBvcnRlZEVycm9yIGlmIHNxbGl0ZTMgaXMgb2xkZXIgdGhhbiAzLjMuMS4KKyAgUGF0Y2ggYnkgRGF2ZSBTYXd5ZXIuCisKKy0gSXNzdWUgIzI3Mjg2OiBGaXhlZCBjb21waWxpbmcgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwgb3Bjb2RlLiAgQ2FsbGluZworICBmdW5jdGlvbiB3aXRoIGdlbmVyYWxpemVkIHVucGFja2luZyAoUEVQIDQ0OCkgYW5kIGNvbmZsaWN0aW5nIGtleXdvcmQgbmFtZXMKKyAgY291bGQgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW9yLgorCistIElzc3VlICMyNzE0MDogQWRkZWQgQlVJTERfQ09OU1RfS0VZX01BUCBvcGNvZGUuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgc3VwcG9ydCBmb3Igb3MuUGF0aExpa2Ugb2JqZWN0cyB0byBvcGVuKCkgKHBhcnQgb2YgUEVQIDUxOSkuCisKIC0gSXNzdWUgIzI3MDY2OiBGaXhlZCBTeXN0ZW1FcnJvciBpZiBhIGN1c3RvbSBvcGVuZXIgKGZvciBvcGVuKCkpIHJldHVybnMgYQogICBuZWdhdGl2ZSBudW1iZXIgd2l0aG91dCBzZXR0aW5nIGFuIGV4Y2VwdGlvbi4KIAorLSBJc3N1ZSAjMjY5ODM6IGZsb2F0KCkgbm93IGFsd2F5cyByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgZXhhY3QgZmxvYXQuCisgIFRoZSBkZXByZWNhdGlvbiB3YXJuaW5nIGlzIGVtaXR0ZWQgaWYgX19mbG9hdF9fIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YKKyAgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQuICBJbiBhIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24gdGhpcyBjYW4KKyAgYmUgYW4gZXJyb3IuCisKKy0gSXNzdWUgIzI3MDk3OiBQeXRob24gaW50ZXJwcmV0ZXIgaXMgbm93IGFib3V0IDclIGZhc3RlciBkdWUgdG8gb3B0aW1pemVkCisgIGluc3RydWN0aW9uIGRlY29kaW5nLiAgQmFzZWQgb24gcGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzI2NjQ3OiBQeXRob24gaW50ZXJwcmV0ZXIgbm93IHVzZXMgMTYtYml0IHdvcmRjb2RlIGluc3RlYWQgb2YgYnl0ZWNvZGUuCisgIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICMyMzI3NTogQWxsb3cgYXNzaWduaW5nIHRvIGFuIGVtcHR5IHRhcmdldCBsaXN0IGluIHJvdW5kIGJyYWNrZXRzOgorICAoKSA9IGl0ZXJhYmxlLgorCistIElzc3VlICMyNzI0MzogVXBkYXRlIHRoZSBfX2FpdGVyX18gcHJvdG9jb2w6IGluc3RlYWQgb2YgcmV0dXJuaW5nCisgIGFuIGF3YWl0YWJsZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvciwgdGhlIGFzeW5jaHJvbm91cworICBpdGVyYXRvciBzaG91bGQgYmUgcmV0dXJuZWQgZGlyZWN0bHkuICBEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhCisgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCisKKworTGlicmFyeQorLS0tLS0tLQorCistIENvbW1lbnQgb3V0IHNvY2tldCAoU09fUkVVU0VQT1JUKSBhbmQgcG9zaXggKE9fU0hMT0NLLCBPX0VYTE9DSykgY29uc3RhbnRzCisgIGV4cG9zZWQgb24gdGhlIEFQSSB3aGljaCBhcmUgbm90IGltcGxlbWVudGVkIG9uIEdOVS9IdXJkLiBUaGV5IHdvdWxkIG5vdAorICB3b3JrIGF0IHJ1bnRpbWUgYW55d2F5LgorCistIElzc3VlICMyNzAyNTogR2VuZXJhdGVkIG5hbWVzIGZvciBUa2ludGVyIHdpZGdldHMgYXJlIG5vdyBtb3JlIG1lYW5mdWwKKyAgYW5kIHJlY29nbml6aXJhYmxlLgorCistIElzc3VlICMyNTQ1NTogRml4ZWQgY3Jhc2hlcyBpbiByZXByIG9mIHJlY3Vyc2l2ZSBFbGVtZW50VHJlZS5FbGVtZW50IGFuZAorICBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzLgorCistIElzc3VlICMyNzI5NDogSW1wcm92ZWQgcmVwciBmb3IgVGtpbnRlciBldmVudCBvYmplY3RzLgorCistIElzc3VlICMyMDUwODogSW1wcm92ZSBleGNlcHRpb24gbWVzc2FnZSBvZiBJUHZ7NCw2fU5ldHdvcmsuX19nZXRpdGVtX18uCisgIFBhdGNoIGJ5IEdhcmV0aCBSZWVzLgorCistIFtTZWN1cml0eV0gSXNzdWUgIzI2NTU2OiBVcGRhdGUgZXhwYXQgdG8gMi4xLjEsIGZpeGVzIENWRS0yMDE1LTEyODMuCisKKy0gW1NlY3VyaXR5XSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtdHBsaWIsIENWRS0yMDE2LTA3NzIuCisgIFJlcG9ydGVkIGJ5IFRlYW0gT3N0c3Ryb20uCisKKy0gSXNzdWUgIzIxMzg2OiBJbXBsZW1lbnQgbWlzc2luZyBJUHY0QWRkcmVzcy5pc19nbG9iYWwgcHJvcGVydHkuICBJdCB3YXMKKyAgZG9jdW1lbnRlZCBzaW5jZSAwN2E1NjEwYmFlOWQuICBJbml0aWFsIHBhdGNoIGJ5IFJvZ2VyIEx1ZXRoaS4KKworLSBJc3N1ZSAjMjcwMjk6IFJlbW92ZWQgZGVwcmVjYXRlZCBzdXBwb3J0IG9mIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlIGZyb20KKyAgWmlwRmlsZS5vcGVuKCkuCisKKy0gSXNzdWUgIzI3MDMwOiBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgaW4KKyAgcmVndWxhciBleHByZXNzaW9ucyBub3cgYXJlIGVycm9ycy4gIFRoZSByZS5MT0NBTEUgZmxhZyBub3cgY2FuIGJlIHVzZWQKKyAgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgorCistIElzc3VlICMyNzE4NjogQWRkIG9zLlBhdGhMaWtlIHN1cHBvcnQgdG8gRGlyRW50cnkgKHBhcnQgb2YgUEVQIDUxOSkuCisgIEluaXRpYWwgcGF0Y2ggYnkgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzIwOTAwOiBkaXN0dXRpbHMgcmVnaXN0ZXIgY29tbWFuZCBub3cgZGVjb2RlcyBIVFRQIHJlc3BvbnNlcworICBjb3JyZWN0bHkuICBJbml0aWFsIHBhdGNoIGJ5IGluZ3JpZC4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBvcy5QYXRoTGlrZSBzdXBwb3J0IHRvIHBhdGhsaWIsIHJlbW92aW5nIGl0cyBwcm92aXNpb25hbAorICBzdGF0dXMgKHBhcnQgb2YgUEVQIDUxOSkuIEluaXRpYWwgcGF0Y2ggYnkgRHVzdHkgUGhpbGxpcHMuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgc3VwcG9ydCBmb3Igb3MuUGF0aExpa2Ugb2JqZWN0cyB0byBvcy5mc2VuY29kZSgpIGFuZAorICBvcy5mc2RlY29kZSgpIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIElzc3VlICMyNzE4NjogSW50cm9kdWNlIG9zLlBhdGhMaWtlIGFuZCBvcy5mc3BhdGgoKSAocGFydCBvZiBQRVAgNTE5KS4KKworLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBwcm92aWRlcyBzZXZlcmFsIG5ldyBjbGFzc2VzIGFuZAorICBmZWF0dXJlczogQG92ZXJsb2FkIG91dHNpZGUgc3R1YnMsIFJldmVyc2libGUsIERlZmF1bHREaWN0LCBUZXh0LAorICBDb250ZXh0TWFuYWdlciwgVHlwZVtdLCBOZXdUeXBlKCksIFRZUEVfQ0hFQ0tJTkcsIGFuZCBudW1lcm91cyBidWcKKyAgZml4ZXMgKG5vdGUgdGhhdCBzb21lIG9mIHRoZSBuZXcgZmVhdHVyZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4KKyAgbXlweSBvciBvdGhlciBzdGF0aWMgYW5hbHl6ZXJzKS4gIEFsc28gY2xhc3NlcyBmb3IgUEVQIDQ5MgorICAoQXdhaXRhYmxlLCBBc3luY0l0ZXJhYmxlLCBBc3luY0l0ZXJhdG9yKSBoYXZlIGJlZW4gYWRkZWQgKGluIGZhY3QKKyAgdGhleSBtYWRlIGl0IGludG8gMy41LjEgYnV0IHdlcmUgbmV2ZXIgbWVudGlvbmVkKS4KKworLSBJc3N1ZSAjMjU3Mzg6IFN0b3AgaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5zZW5kX2Vycm9yKCkgZnJvbQorICBzZW5kaW5nIGEgbWVzc2FnZSBib2R5IGZvciAyMDUgUmVzZXQgQ29udGVudC4gIEFsc28sIGRvbid0IHNlbmQgQ29udGVudAorICBoZWFkZXIgZmllbGRzIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgUGF0Y2ggYnkgU3VzdW11CisgIEtvc2hpYmEuCisKKy0gSXNzdWUgIzIxMzEzOiBGaXggdGhlICJwbGF0Zm9ybSIgbW9kdWxlIHRvIHRvbGVyYXRlIHdoZW4gc3lzLnZlcnNpb24KKyAgY29udGFpbnMgdHJ1bmNhdGVkIGJ1aWxkIGluZm9ybWF0aW9uLgorCistIFtTZWN1cml0eV0gSXNzdWUgIzI2ODM5OiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBjYWxscworICBgYGdldHJhbmRvbSgpYGAgd2l0aCBgYEdSTkRfTk9OQkxPQ0tgYCB0byBmYWxsIGJhY2sgb24gcmVhZGluZworICBgYC9kZXYvdXJhbmRvbWBgIGlmIHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBQYXRjaAorICB3cml0dGVuIGJ5IENvbG0gQnVja2xleS4KKworLSBJc3N1ZSAjMjM4ODM6IEFkZGVkIG1pc3NpbmcgQVBJcyB0byBfX2FsbF9fIHRvIG1hdGNoIHRoZSBkb2N1bWVudGVkIEFQSXMKKyAgZm9yIHRoZSBmb2xsb3dpbmcgbW9kdWxlczogY2dpLCBtYWlsYm94LCBtaW1ldHlwZXMsIHBsaXN0bGliIGFuZCBzbXRwZC4KKyAgUGF0Y2hlcyBieSBKYWNlayBLb8WCb2R6aWVqLgorCistIElzc3VlICMyNzE2NDogSW4gdGhlIHpsaWIgbW9kdWxlLCBhbGxvdyBkZWNvbXByZXNzaW5nIHJhdyBEZWZsYXRlIHN0cmVhbXMKKyAgd2l0aCBhIHByZWRlZmluZWQgemRpY3QuICBCYXNlZCBvbiBwYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjQyOTE6IEZpeCB3c2dpcmVmLnNpbXBsZV9zZXJ2ZXIuV1NHSVJlcXVlc3RIYW5kbGVyIHRvIGNvbXBsZXRlbHkKKyAgd3JpdGUgZGF0YSB0byB0aGUgY2xpZW50LiAgUHJldmlvdXNseSBpdCBjb3VsZCBkbyBwYXJ0aWFsIHdyaXRlcyBhbmQKKyAgdHJ1bmNhdGUgZGF0YS4gIEFsc28sIHdzZ2lyZWYuaGFuZGxlci5TZXJ2ZXJIYW5kbGVyIGNhbiBub3cgaGFuZGxlIHN0ZG91dAorICBkb2luZyBwYXJ0aWFsIHdyaXRlcywgYnV0IHRoaXMgaXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMjEyNzI6IFVzZSBfc3lzY29uZmlnZGF0YS5weSB0byBpbml0aWFsaXplIGRpc3R1dGlscy5zeXNjb25maWcuCisKKy0gSXNzdWUgIzE5NjExOiA6bW9kOmBpbnNwZWN0YCBub3cgcmVwb3J0cyB0aGUgaW1wbGljaXQgYGAuMGBgIHBhcmFtZXRlcnMKKyAgZ2VuZXJhdGVkIGJ5IHRoZSBjb21waWxlciBmb3IgY29tcHJlaGVuc2lvbiBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb24gc2NvcGVzCisgIGFzIGlmIHRoZXkgd2VyZSBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyBjYWxsZWQgYGBpbXBsaWNpdDBgYC4KKyAgUGF0Y2ggYnkgSmVsbGUgWmlqbHN0cmEuCisKKy0gSXNzdWUgIzI2ODA5OiBBZGQgYGBfX2FsbF9fYGAgdG8gOm1vZDpgc3RyaW5nYC4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI2MzczOiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlIG5vdyBjb3JyZWN0bHkgaWdub3JlcworICBCcm9rZW5QaXBlRXJyb3Igd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVzIGJlZm9yZSAuY29tbXVuaWNhdGUoKQorICBpcyBjYWxsZWQgaW4gbW9yZS9hbGwgY2lyY3Vtc3RhbmNlcy4KKworLSBzaWduYWwsIHNvY2tldCwgYW5kIHNzbCBtb2R1bGUgSW50RW51bSBjb25zdGFudCBuYW1lIGxvb2t1cHMgbm93IHJldHVybiBhCisgIGNvbnNpc3RlbnQgbmFtZSBmb3IgdmFsdWVzIGhhdmluZyBtdWx0aXBsZSBuYW1lcy4gIEV4OiBzaWduYWwuU2lnbmFscyg2KQorICBub3cgcmVmZXJzIHRvIGl0c2VsZiBhcyBzaWduYWwuU0lHQUxSTSByYXRoZXIgdGhhbiBmbGlwcGluZyBiZXR3ZWVuIHRoYXQKKyAgYW5kIHNpZ25hbC5TSUdJT1QgYmFzZWQgb24gdGhlIGludGVycHJldGVyJ3MgaGFzaCByYW5kb21pemF0aW9uIHNlZWQuCisKKy0gSXNzdWUgIzI3MTY3OiBDbGFyaWZ5IHRoZSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBlcnJvciBtZXNzYWdlIHRleHQKKyAgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVkIGR1ZSB0byBhIHNpZ25hbC4KKworLSBJc3N1ZSAjMjU5MzE6IERvbid0IGRlZmluZSBzb2NrZXRzZXJ2ZXIuRm9ya2luZyogbmFtZXMgb24gcGxhdGZvcm1zIHN1Y2gKKyAgYXMgV2luZG93cyB0aGF0IGRvIG5vdCBzdXBwb3J0IG9zLmZvcmsoKS4KKworLSBJc3N1ZSAjMjE3NzY6IGRpc3R1dGlscy51cGxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIEhUVFBFcnJvci4KKyAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy0gSXNzdWUgIzI2NTI2OiBSZXBsYWNlIGN1c3RvbSBwYXJzZSB0cmVlIHZhbGlkYXRpb24gaW4gdGhlIHBhcnNlcgorICBtb2R1bGUgd2l0aCBhIHNpbXBsZSBERkEgdmFsaWRhdG9yLgorCistIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCisgIFBlcm1pc3Npb25FcnJvcgorCistIElzc3VlICMxODM4MzogQXZvaWQgY3JlYXRpbmcgZHVwbGljYXRlIGZpbHRlcnMgd2hlbiB1c2luZyBmaWx0ZXJ3YXJuaW5ncworICBhbmQgc2ltcGxlZmlsdGVyLiAgQmFzZWQgb24gcGF0Y2ggYnkgQWxleCBTaGtvcC4KKworLSBJc3N1ZSAjMjMwMjY6IHdpbnJlZy5RdWVyeVZhbHVlRXgoKSBub3cgcmV0dXJuIGFuIGludGVnZXIgZm9yIFJFR19RV09SRCB0eXBlLgorCistIElzc3VlICMyNjc0MTogc3VicHJvY2Vzcy5Qb3BlbiBkZXN0cnVjdG9yIG5vdyBlbWl0cyBhIFJlc291cmNlV2FybmluZyB3YXJuaW5nCisgIGlmIHRoZSBjaGlsZCBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisKKy0gSXNzdWUgIzI3MDU2OiBPcHRpbWl6ZSBwaWNrbGUubG9hZCgpIGFuZCBwaWNrbGUubG9hZHMoKSwgdXAgdG8gMTAlIGZhc3RlcgorICB0byBkZXNlcmlhbGl6ZSBhIGxvdCBvZiBzbWFsbCBvYmplY3RzLgorCistIElzc3VlICMyMTI3MTogTmV3IGtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGluIHJlc2V0X21vY2sgY2FsbC4KKworSURMRQorLS0tLQorCistIElzc3VlICM1MTI0OiBQYXN0ZSB3aXRoIHRleHQgc2VsZWN0ZWQgbm93IHJlcGxhY2VzIHRoZSBzZWxlY3Rpb24gb24gWDExLgorICBUaGlzIG1hdGNoZXMgaG93IHBhc3RlIHdvcmtzIG9uIFdpbmRvd3MsIE1hYywgbW9zdCBtb2Rlcm4gTGludXggYXBwcywKKyAgYW5kIHR0ayB3aWRnZXRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjQ3NTA6IFN3aXRjaCBhbGwgc2Nyb2xsYmFycyBpbiBJRExFIHRvIHR0ayB2ZXJzaW9ucy4KKyAgV2hlcmUgbmVlZGVkLCBtaW5pbWFsIHRlc3RzIGFyZSBhZGRlZCB0byBjb3ZlciBjaGFuZ2VzLgorCistIElzc3VlICMyNDc1OTogSURMRSByZXF1aXJlcyB0ayA4LjUgYW5kIGF2YWlsYWJpbGl0eSB0dGsgd2lkZ2V0cy4KKyAgRGVsZXRlIG5vdyB1bm5lZWRlZCB0ayB2ZXJzaW9uIHRlc3RzIGFuZCBjb2RlIGZvciBvbGRlciB2ZXJzaW9ucy4KKyAgQWRkIHRlc3QgZm9yIElETEUgc3ludGF4IGNvbG9yaXpvZXIuCisKKy0gSXNzdWUgIzI3MjM5OiBpZGxlbGliLm1hY29zeC5pc1h5elRrIGZ1bmN0aW9ucyBpbml0aWFsaXplIGFzIG5lZWRlZC4KKworLSBJc3N1ZSAjMjcyNjI6IG1vdmUgQXF1YSB1bmJpbmRpbmcgY29kZSwgd2hpY2ggZW5hYmxlIGNvbnRleHQgbWVudXMsIHRvIG1heG9zeC4KKworLSBJc3N1ZSAjMjQ3NTk6IE1ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5CisgIGlzIGEgcHJpdmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0LnRlc3RfaWRsZSBhbmQgdG9vbCBmb3IgbWFpbnRhaW5lcnMuCisKKy0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWQnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgorICBUaGVzZSBwZXJzaXN0ZWQgYWZ0ZXIgb3RoZXIgd2FybmluZ3Mgd2VyZSBzdXBwcmVzc2VkIGluICMyMDU2Ny4KKyAgQXBwbHkgU2VyaGl5IFN0b3JjaGFrYSdzIHVwZGF0ZV9pZGxldGFza3Mgc29sdXRpb24gdG8gZm91ciB0ZXN0IGZpbGVzLgorICBSZWNvcmQgdGhpcyBhZGRpdGlvbmFsIGFkdmljZSBpbiBpZGxlX3Rlc3QvUkVBRE1FLnR4dAorCistIElzc3VlICMyMDU2NzogUmV2aXNlIGlkbGVfdGVzdC9SRUFETUUudHh0IHdpdGggYWR2aWNlIGFib3V0IGF2b2lkaW5nCisgIHRrIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0ZXN0cy4gIEFwcGx5IGFkdmljZSB0byBzZXZlcmFsIElETEUgdGVzdHMuCisKKy0gSXNzdWUgIzI0MjI1OiBVcGRhdGUgaWRsZWxpYi9SRUFETUUudHh0IHdpdGggbmV3IGZpbGUgbmFtZXMKKyAgYW5kIGV2ZW50IGhhbmRsZXJzLgorCistIElzc3VlICMyNzE1NjogUmVtb3ZlIG9ic29sZXRlIGNvZGUgbm90IHVzZWQgYnkgSURMRS4gIFJlcGxhY2VtZW50czoKKyAgMS4gaGVscC50eHQsIHJlcGxhY2VkIGJ5IGhlbHAuaHRtbCwgaXMgb3V0LW9mLWRhdGUgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4KKyAgSXRzIGRlZGljYXRlZCB2aWV3ZXIgaGFzIGJlIHJlcGxhY2VkIGJ5IHRoZSBodG1sIHZpZXdlciBpbiBoZWxwLnB5LgorICAyLiBgYGltcG9ydCBpZGxldmVyOyBJID0gaWRsZXZlci5JRExFX1ZFUlNJT05gYCBpcyB0aGUgc2FtZSBhcworICBgYGltcG9ydCBzeXM7IEkgPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldYGAKKyAgMy4gQWZ0ZXIgYGBvYiA9IHN0YWNrdmlld2VyLlZhcmlhYmxlc1RyZWVJdGVtKCphcmdzKWBgLAorICBgYG9iLmtleXMoKSA9PSBsaXN0KG9iLm9iamVjdC5rZXlzKWBgLgorICA0LiBJbiBtYWNvc2MsIHJ1bm5pbmdBc09TWEFQUCA9PSBpc0FxdWFUazsgaWRDYXJib25BcXVhVGsgPT0gaXNDYXJib25UaworCistIElzc3VlICMyNzExNzogTWFrZSBjb2xvcml6ZXIgaHRlc3QgYW5kIHR1cnRsZWRlbW8gd29yayB3aXRoIGRhcmsgdGhlbWVzLgorICBNb3ZlIGNvZGUgZm9yIGNvbmZpZ3VyaW5nIHRleHQgd2lkZ2V0IGNvbG9ycyB0byBhIG5ldyBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMjQyMjU6IFJlbmFtZSBtYW55IGBpZGxlbGliLyoucHlgIGFuZCBgaWRsZV90ZXN0L3Rlc3RfKi5weWAgZmlsZXMuCisgIEVkaXQgZmlsZXMgdG8gcmVwbGFjZSBvbGQgbmFtZXMgd2l0aCBuZXcgbmFtZXMgd2hlbiB0aGUgb2xkIG5hbWUKKyAgcmVmZXJyZWQgdG8gdGhlIG1vZHVsZSByYXRoZXIgdGhhbiB0aGUgY2xhc3MgaXQgY29udGFpbmVkLgorICBTZWUgdGhlIGlzc3VlIGFuZCBJRExFIHNlY3Rpb24gaW4gV2hhdCdzIE5ldyBpbiAzLjYgZm9yIG1vcmUuCisKKy0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgorICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgorCistIElzc3VlICMyMTkzOTogQWRkIHRlc3QgZm9yIElETEUncyBwZXJjb2xhdG9yLgorICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzIxNjc2OiBBZGQgdGVzdCBmb3IgSURMRSdzIHJlcGxhY2UgZGlhbG9nLgorICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgorCistIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIHVuZG8gZGVsZWdhdG9yLiAgUGF0Y2ggbW9zdGx5IGJ5CisgIFNhaW1hZGhhdiBIZWJsaWthciAuCisKKy0gSXNzdWUgIzI3MDQ0OiBBZGQgQ29uZmlnRGlhbG9nLnJlbW92ZV92YXJfY2FsbGJhY2tzIHRvIHN0b3AgbWVtb3J5IGxlYWtzLgorCistIElzc3VlICMyMzk3NzogQWRkIG1vcmUgYXNzZXJ0cyB0byB0ZXN0X2RlbGVnYXRvci4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNjQ4NDogQ2hhbmdlIHRoZSBkZWZhdWx0IFBZVEhPTkRPQ1MgVVJMIHRvICJodHRwczoiLCBhbmQgZml4IHRoZQorICByZXN1bHRpbmcgbGlua3MgdG8gdXNlIGxvd2VyY2FzZS4gIFBhdGNoIGJ5IFNlYW4gUm9kbWFuLCB0ZXN0IGJ5IEthdXNoaWsKKyAgTmFkaWt1ZGl0aS4KKworLSBJc3N1ZSAjMjQxMzY6IERvY3VtZW50IHRoZSBuZXcgUEVQIDQ0OCB1bnBhY2tpbmcgc3ludGF4IG9mIDMuNS4KKworLSBJc3N1ZSAjMjI1NTg6IEFkZCByZW1haW5pbmcgZG9jIGxpbmtzIHRvIHNvdXJjZSBjb2RlIGZvciBQeXRob24tY29kZWQgbW9kdWxlcy4KKyAgUGF0Y2ggYnkgWW9uaSBMYXZpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjUyODU6IHJlZ3J0ZXN0IG5vdyB1c2VzIHN1YnByb2Nlc3NlcyB3aGVuIHRoZSAtajEgY29tbWFuZCBsaW5lIG9wdGlvbgorICBpcyB1c2VkOiBlYWNoIHRlc3QgZmlsZSBydW5zIGluIGEgZnJlc2ggY2hpbGQgcHJvY2Vzcy4gQmVmb3JlLCB0aGUgLWoxIG9wdGlvbgorICB3YXMgaWdub3JlZC4KKworLSBJc3N1ZSAjMjUyODU6IFRvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IHNjcmlwdCBub3cgdXNlcyAtajEgYnkgZGVmYXVsdCB0byBydW4KKyAgZWFjaCB0ZXN0IGZpbGUgaW4gZnJlc2ggY2hpbGQgcHJvY2Vzcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNzA2NDogVGhlIHB5LmV4ZSBsYXVuY2hlciBub3cgZGVmYXVsdHMgdG8gUHl0aG9uIDMuCisgIFRoZSBXaW5kb3dzIGxhdW5jaGVyIGBgcHkuZXhlYGAgbm8gbG9uZ2VyIHByZWZlcnMgYW4gaW5zdGFsbGVkCisgIFB5dGhvbiAyIHZlcnNpb24gb3ZlciBQeXRob24gMyBieSBkZWZhdWx0IHdoZW4gdXNlZCBpbnRlcmFjdGl2ZWx5LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjcyMjk6IEZpeCB0aGUgY3Jvc3MtY29tcGlsaW5nIHBnZW4gcnVsZSBmb3IgaW4tdHJlZSBidWlsZHMuICBQYXRjaAorICBieSBYYXZpZXIgZGUgR2F5ZS4KKworLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAorICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJoLgorCitNaXNjCistLS0tCisKKy0gSXNzdWUgIzE3NTAwLCBhbmQgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9weXRob25kb3RvcmcvaXNzdWVzLzk0NTogUmVtb3ZlCisgIHVudXNlZCBhbmQgb3V0ZGF0ZWQgaWNvbnMuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMyNzE4NjogQWRkIHRoZSBQeU9TX0ZTUGF0aCgpIGZ1bmN0aW9uIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIElzc3VlICMyNjI4MjogUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkgbm93IHN1cHBvcnRzIHBvc2l0aW9uYWwtb25seQorICBwYXJhbWV0ZXJzLgorCitUb29scy9EZW1vcworLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjYyODI6IEFyZ3VtZW50IENsaW5pYyBub3cgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IGFuZCBrZXl3b3JkCisgIHBhcmFtZXRlcnMgaW4gdGhlIHNhbWUgZnVuY3Rpb24uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1JlbGVhc2UgZGF0ZTogMjAxNi0wNS0xNgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKwogLSBJc3N1ZSAjMjAwNDE6IEZpeGVkIFR5cGVFcnJvciB3aGVuIGZyYW1lLmZfdHJhY2UgaXMgc2V0IHRvIE5vbmUuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCkBAIC01OTYsMTEgKzE2NDcsMTcgQEAKIAogLSBJc3N1ZSAjMjY5OTE6IEZpeCBwb3NzaWJsZSByZWZsZWFrIHdoZW4gY3JlYXRpbmcgYSBmdW5jdGlvbiB3aXRoIGFubm90YXRpb25zLgogCi0tIElzc3VlICMyNzAzOTogRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIFBhdGNoIGJ5Ci0gIEpvZSBKZXZuaWsuCistIElzc3VlICMyNzAzOTogRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIEJhc2VkIG9uCisgIHBhdGNoIGJ5IEpvZSBKZXZuaWsuCiAKIC0gSXNzdWUgIzIzNjQwOiBpbnQuZnJvbV9ieXRlcygpIG5vIGxvbmdlciBieXBhc3NlcyBjb25zdHJ1Y3RvcnMgZm9yIHN1YmNsYXNzZXMuCiAKKy0gSXNzdWUgIzI3MDA1OiBPcHRpbWl6ZWQgdGhlIGZsb2F0LmZyb21oZXgoKSBjbGFzcyBtZXRob2QgZm9yIGV4YWN0IGZsb2F0LgorICBJdCBpcyBub3cgMiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzE4NTMxOiBTaW5nbGUgdmFyLWtleXdvcmQgYXJndW1lbnQgb2YgZGljdCBzdWJ0eXBlIHdhcyBwYXNzZWQKKyAgdW5zY2F0aGVkIHRvIHRoZSBDLWRlZmluZWQgZnVuY3Rpb24uICBOb3cgaXQgaXMgY29udmVydGVkIHRvIGV4YWN0IGRpY3QuCisKIC0gSXNzdWUgIzI2ODExOiBnYy5nZXRfb2JqZWN0cygpIG5vIGxvbmdlciBjb250YWlucyBhIGJyb2tlbiB0dXBsZSB3aXRoIE5VTEwKICAgcG9pbnRlci4KIApAQCAtNjEwLDExICsxNjY3LDI2IEBACiAgIGludGVycG9sYXRpb24gaW4gLnB5cGlyYyBmaWxlcywgbWF0Y2hpbmcgYmVoYXZpb3IgaW4gUHl0aG9uCiAgIDIuNyBhbmQgU2V0dXB0b29scyAxOS4wLgogCistIElzc3VlICMyNjI0OTogTWVtb3J5IGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBkb21haW4KKyAgKDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gKSBub3cgdXNlIHRoZSA6cmVmOmBweW1hbGxvYyBhbGxvY2F0b3IgPHB5bWFsbG9jPmAKKyAgcmF0aGVyIHRoYW4gc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuIEFwcGxpY2F0aW9ucyBjYWxsaW5nCisgIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2Agd2l0aG91dCBob2xkaW5nIHRoZSBHSUwgY2FuIG5vdyBjcmFzaDogdXNlCisgIGBgUFlUSE9OTUFMTE9DPWRlYnVnYGAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdmFsaWRhdGUgdGhlIHVzYWdlIG9mIG1lbW9yeQorICBhbGxvY2F0b3JzIGluIHlvdXIgYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzI2ODAyOiBPcHRpbWl6ZSBmdW5jdGlvbiBjYWxscyBvbmx5IHVzaW5nIHVucGFja2luZyBsaWtlCisgIGBgZnVuYygqdHVwbGUpYGAgKG5vIG90aGVyIHBvc2l0aW9uYWwgYXJndW1lbnQsIG5vIGtleXdvcmQpOiBhdm9pZCBjb3B5aW5nCisgIHRoZSB0dXBsZS4gUGF0Y2ggd3JpdHRlbiBieSBKb2UgSmV2bmlrLgorCiAtIElzc3VlICMyNjY1OTogTWFrZSB0aGUgYnVpbHRpbiBzbGljZSB0eXBlIHN1cHBvcnQgY3ljbGUgY29sbGVjdGlvbi4KIAogLSBJc3N1ZSAjMjY3MTg6IHN1cGVyLl9faW5pdF9fIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgaWYgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgogICBOT1RFOiBBIGRpcmVjdCBjYWxsIG9mIHN1cGVyLl9faW5pdF9fIGlzIG5vdCBlbmRvcnNlZCEKIAorLSBJc3N1ZSAjMjcxMzg6IEZpeCB0aGUgZG9jIGNvbW1lbnQgZm9yIEZpbGVGaW5kZXIuZmluZF9zcGVjKCkuCisKKy0gSXNzdWUgIzI3MTQ3OiBNZW50aW9uIFBFUCA0MjAgaW4gdGhlIGltcG9ydGxpYiBkb2NzLgorCiAtIElzc3VlICMyNTMzOTogUFlUSE9OSU9FTkNPRElORyBub3cgaGFzIHByaW9yaXR5IG92ZXIgbG9jYWxlIGluIHNldHRpbmcgdGhlCiAgIGVycm9yIGhhbmRsZXIgZm9yIHN0ZGluIGFuZCBzdGRvdXQuCiAKQEAgLTYyMyw5ICsxNjk1LDQxIEBACiAgIGJ5dGVhcnJheSwgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBPcmRlcmVkRGljdCwgY29ycmVzcG9uZGluZwogICB2aWV3cyBhbmQgb3Muc2NhbmRpcigpIGl0ZXJhdG9yLgogCistIElzc3VlICMyNjU3NDogT3B0aW1pemUgYGBieXRlcy5yZXBsYWNlKGInJywgYicuJylgYCBhbmQKKyAgYGBieXRlYXJyYXkucmVwbGFjZShiJycsIGInLicpYGAuIFBhdGNoIHdyaXR0ZW4gYnkgSm9zaCBTbmlkZXIuCisKIC0gSXNzdWUgIzI2NTgxOiBJZiBjb2RpbmcgY29va2llIGlzIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcyBvbiBhIGxpbmUgaW4KICAgUHl0aG9uIHNvdXJjZSBjb2RlIGZpbGUsIG9ubHkgdGhlIGZpcnN0IG9uZSBpcyB0YWtlbiB0byBhY2NvdW50LgogCistIElzc3VlICMxOTcxMTogQWRkIHRlc3RzIGZvciByZWxvYWRpbmcgbmFtZXNwYWNlIHBhY2thZ2VzLgorCistIElzc3VlICMyMTA5OTogU3dpdGNoIGFwcGxpY2FibGUgaW1wb3J0bGliIHRlc3RzIHRvIHVzZSBQRVAgNDUxIEFQSS4KKworLSBJc3N1ZSAjMjY1NjM6IERlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgcmFpc2UgYSBmYXRhbAorICBlcnJvciBpZiBmdW5jdGlvbnMgb2YgdGhlIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AgZmFtaWx5IGFyZSBjYWxsZWQgd2l0aG91dAorICBob2xkaW5nIHRoZSBHSUwuCisKKy0gSXNzdWUgIzI2NTY0OiBPbiBlcnJvciwgdGhlIGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBub3cgdXNlCisgIHRoZSA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcworICBhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzI2NTU4OiBUaGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IKKyAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCBub3cgZGV0ZWN0IHdoZW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2l0aG91dAorICBob2xkaW5nIHRoZSBHSUwuCisKKy0gSXNzdWUgIzI2NTE2OiBBZGQgOmVudnZhcjpgUFlUSE9OTUFMTE9DYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlCisgIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rcy4KKworLSBJc3N1ZSAjMjY1MTY6IFRoZSA6YzpmdW5jOmBQeU1lbV9TZXR1cERlYnVnSG9va3NgIGZ1bmN0aW9uIGNhbiBub3cgYWxzbyBiZQorICB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuCisKKy0gSXNzdWUgIzI2NTE2OiBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBub3cKKyAgYWxzbyBiZSB1c2VkIG9uIFB5dGhvbiBjb21waWxlZCBpbiByZWxlYXNlIG1vZGUuIEl0IG5vdyBoYXMgbm8gZWZmZWN0IGlmCisgIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuCisKKy0gSXNzdWUgIzI2NTE2OiBJbiBkZWJ1ZyBtb2RlLCBkZWJ1ZyBob29rcyBhcmUgbm93IGFsc28gaW5zdGFsbGVkIG9uIFB5dGhvbgorICBtZW1vcnkgYWxsb2NhdG9ycyB3aGVuIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGhvdXQgcHltYWxsb2MuCisKIC0gSXNzdWUgIzI2NDY0OiBGaXggc3RyLnRyYW5zbGF0ZSgpIHdoZW4gc3RyaW5nIGlzIEFTQ0lJIGFuZCBmaXJzdCByZXBsYWNlbWVudHMKICAgcmVtb3ZlcyBjaGFyYWN0ZXIsIGJ1dCBuZXh0IHJlcGxhY2VtZW50IHVzZXMgYSBub24tQVNDSUkgY2hhcmFjdGVyIG9yIGEKICAgc3RyaW5nIGxvbmdlciB0aGFuIDEgY2hhcmFjdGVyLiBSZWdyZXNzaW9uIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuNS4wLgpAQCAtNjM4LDExICsxNzQyLDM3IEBACiAtIElzc3VlICMyNjMwMjogQ29ycmVjdCBiZWhhdmlvciB0byByZWplY3QgY29tbWEgYXMgYSBsZWdhbCBjaGFyYWN0ZXIgZm9yCiAgIGNvb2tpZSBuYW1lcy4KIAorLSBJc3N1ZSAjMjYxMzY6IFVwZ3JhZGUgdGhlIHdhcm5pbmcgd2hlbiBhIGdlbmVyYXRvciByYWlzZXMgU3RvcEl0ZXJhdGlvbgorICBmcm9tIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgdG8gRGVwcmVjYXRpb25XYXJuaW5nLiAgUGF0Y2ggYnkgQW5pc2gKKyAgU2hhaC4KKworLSBJc3N1ZSAjMjYyMDQ6IFRoZSBjb21waWxlciBub3cgaWdub3JlcyBhbGwgY29uc3RhbnQgc3RhdGVtZW50czogYnl0ZXMsIHN0ciwKKyAgaW50LCBmbG9hdCwgY29tcGxleCwgbmFtZSBjb25zdGFudHMgKE5vbmUsIEZhbHNlLCBUcnVlKSwgRWxsaXBzaXMKKyAgYW5kIGFzdC5Db25zdGFudDsgbm90IG9ubHkgc3RyIGFuZCBpbnQuIEZvciBleGFtcGxlLCBgYDEuMGBgIGlzIG5vdyBpZ25vcmVkCisgIGluIGBgZGVmIGYoKTogMS4wYGAuCisKIC0gSXNzdWUgIzQ4MDY6IEF2b2lkIG1hc2tpbmcgdGhlIG9yaWdpbmFsIFR5cGVFcnJvciBleGNlcHRpb24gd2hlbiB1c2luZyBzdGFyCiAgICgqKSB1bnBhY2tpbmcgaW4gZnVuY3Rpb24gY2FsbHMuICBCYXNlZCBvbiBwYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1IGFuZAogICBEYW5pZWwgVXJiYW4uCiAKLS0gSXNzdWUgIzI3MTM4OiBGaXggdGhlIGRvYyBjb21tZW50IGZvciBGaWxlRmluZGVyLmZpbmRfc3BlYygpLgorLSBJc3N1ZSAjMjYxNDY6IEFkZCBhIG5ldyBraW5kIG9mIEFTVCBub2RlOiBgYGFzdC5Db25zdGFudGBgLiBJdCBjYW4gYmUgdXNlZAorICBieSBleHRlcm5hbCBBU1Qgb3B0aW1pemVycywgYnV0IHRoZSBjb21waWxlciBkb2VzIG5vdCBlbWl0IGRpcmVjdGx5IHN1Y2gKKyAgbm9kZS4KKworLSBJc3N1ZSAjMjM2MDE6ICBTcGVkLXVwIGFsbG9jYXRpb24gb2YgZGljdCBrZXkgb2JqZWN0cyBieSB1c2luZyBQeXRob24ncworICBzbWFsbCBvYmplY3QgYWxsb2NhdG9yLiAgKENvbnRyaWJ1dGVkIGJ5IEp1bGlhbiBUYXlsb3IuKQorCistIElzc3VlICMxODAxODogSW1wb3J0IHJhaXNlcyBJbXBvcnRFcnJvciBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yIGlmIGEgcmVsYXRpdmUKKyAgaW1wb3J0IGlzIGF0dGVtcHRlZCB3aXRob3V0IGEga25vd24gcGFyZW50IHBhY2thZ2UuCisKKy0gSXNzdWUgIzI1ODQzOiBXaGVuIGNvbXBpbGluZyBjb2RlLCBkb24ndCBtZXJnZSBjb25zdGFudHMgaWYgdGhleSBhcmUgZXF1YWwKKyAgYnV0IGhhdmUgYSBkaWZmZXJlbnQgdHlwZXMuIEZvciBleGFtcGxlLCBgYGYxLCBmMiA9IGxhbWJkYTogMSwgbGFtYmRhOiAxLjBgYAorICBpcyBub3cgY29ycmVjdGx5IGNvbXBpbGVkIHRvIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25zOiBgYGYxKClgYCByZXR1cm5zIGBgMWBgCisgIChgYGludGBgKSBhbmQgYGBmMigpYGAgcmV0dXJucyBgYDEuMGBgIChgYGZsb2F0YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCisgIGFyZSBlcXVhbC4KKworLSBJc3N1ZSAjMjYxMDc6IFRoZSBmb3JtYXQgb2YgdGhlIGBgY29fbG5vdGFiYGAgYXR0cmlidXRlIG9mIGNvZGUgb2JqZWN0cworICBjaGFuZ2VzIHRvIHN1cHBvcnQgbmVnYXRpdmUgbGluZSBudW1iZXIgZGVsdGEuCiAKIC0gSXNzdWUgIzI2MTU0OiBBZGQgYSBuZXcgcHJpdmF0ZSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKSBmdW5jdGlvbiB0byBnZXQKICAgdGhlIGN1cnJlbnQgUHl0aG9uIHRocmVhZCBzdGF0ZSwgYnV0IGRvbid0IGlzc3VlIGEgZmF0YWwgZXJyb3IgaWYgaXQgaXMgTlVMTC4KQEAgLTY1MSwxNSArMTc4MSw4IEBACiAgIFB5dGhvbiAzLjUuMSB0byBoaWRlIHRoZSBleGFjdCBpbXBsZW1lbnRhdGlvbiBvZiBhdG9taWMgQyB0eXBlcywgdG8gYXZvaWQKICAgY29tcGlsZXIgaXNzdWVzLgogCi0tIElzc3VlICMyNjE5NDogIERlcXVlLmluc2VydCgpIGdhdmUgb2RkIHJlc3VsdHMgZm9yIGJvdW5kZWQgZGVxdWVzIHRoYXQgaGFkCi0gIHJlYWNoZWQgdGhlaXIgbWF4aW11bSBzaXplLiAgTm93IGFuIEluZGV4RXJyb3Igd2lsbCBiZSByYWlzZWQgd2hlbiBhdHRlbXB0aW5nCi0gIHRvIGluc2VydCBpbnRvIGEgZnVsbCBkZXF1ZS4KLQotLSBJc3N1ZSAjMjU4NDM6IFdoZW4gY29tcGlsaW5nIGNvZGUsIGRvbid0IG1lcmdlIGNvbnN0YW50cyBpZiB0aGV5IGFyZSBlcXVhbAotICBidXQgaGF2ZSBhIGRpZmZlcmVudCB0eXBlcy4gRm9yIGV4YW1wbGUsIGBgZjEsIGYyID0gbGFtYmRhOiAxLCBsYW1iZGE6IDEuMGBgCi0gIGlzIG5vdyBjb3JyZWN0bHkgY29tcGlsZWQgdG8gdHdvIGRpZmZlcmVudCBmdW5jdGlvbnM6IGBgZjEoKWBgIHJldHVybnMgYGAxYGAKLSAgKGBgaW50YGApIGFuZCBgYGYyKClgYCByZXR1cm5zIGBgMS4wYGAgKGBgaW50YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCi0gIGFyZSBlcXVhbC4KKy0gSXNzdWUgIzI1NzkxOiBJZiBfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQgb3IgaWYgbmVpdGhlciBfX3BhY2thZ2VfXyBvcgorICBfX3NwZWNfXyBhcmUgZGVmaW5lZCB0aGVuIEltcG9ydFdhcm5pbmcgaXMgcmFpc2VkLgogCiAtIElzc3VlICMyMjk5NTogW1VQREFURV0gQ29tbWVudCBvdXQgdGhlIG9uZSBvZiB0aGUgcGlja2xlYWJpbGl0eSB0ZXN0cyBpbgogICBfUHlPYmplY3RfR2V0U3RhdGUoKSBkdWUgdG8gcmVncmVzc2lvbnMgb2JzZXJ2ZWQgaW4gQ3l0aG9uLWJhc2VkIHByb2plY3RzLgpAQCAtNjg2LDcgKzE4MDksMTAgQEAKIC0gSXNzdWUgIzI1NzA5OiBGaXhlZCBwcm9ibGVtIHdpdGggaW4tcGxhY2Ugc3RyaW5nIGNvbmNhdGVuYXRpb24gYW5kIHV0Zi04CiAgIGNhY2hlLgogCi0tIElzc3VlICMyNzE0NzogTWVudGlvbiBQRVAgNDIwIGluIHRoZSBpbXBvcnRsaWIgZG9jcy4KKy0gSXNzdWUgIzUzMTk6IE5ldyBQeV9GaW5hbGl6ZUV4KCkgQVBJIGFsbG93aW5nIFB5dGhvbiB0byBzZXQgYW4gZXhpdCBzdGF0dXMKKyAgb2YgMTIwIG9uIGZhaWx1cmUgdG8gZmx1c2ggYnVmZmVyZWQgc3RyZWFtcy4KKworLSBJc3N1ZSAjMjU0ODU6IHRlbG5ldGxpYi5UZWxuZXQgaXMgbm93IGEgY29udGV4dCBtYW5hZ2VyLgogCiAtIElzc3VlICMyNDA5NzogRml4ZWQgY3Jhc2ggaW4gb2JqZWN0Ll9fcmVkdWNlX18oKSBpZiBzbG90IG5hbWUgaXMgZnJlZWQgaW5zaWRlCiAgIF9fZ2V0YXR0cl9fLgpAQCAtNjk1LDYgKzE4MjEsODggQEAKICAgX19ieXRlc19fLCBfX3RydW5jX18sIGFuZCBfX2Zsb2F0X18gcmV0dXJuaW5nIGluc3RhbmNlcyBvZiBzdWJjbGFzc2VzIG9mCiAgIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCB0byBzdWJjbGFzc2VzIG9mIGJ5dGVzLCBpbnQsIGFuZCBmbG9hdCBjb3JyZXNwb25kaW5nbHkuCiAKKy0gSXNzdWUgIzI1NjMwOiBGaXggYSBwb3NzaWJsZSBzZWdmYXVsdCBkdXJpbmcgYXJndW1lbnQgcGFyc2luZyBpbiBmdW5jdGlvbnMKKyAgdGhhdCBhY2NlcHQgZmlsZXN5c3RlbSBwYXRocy4KKworLSBJc3N1ZSAjMjM1NjQ6IEZpeGVkIGEgcGFydGlhbGx5IGJyb2tlbiBzYW5pdHkgY2hlY2sgaW4gdGhlIF9wb3NpeHN1YnByb2Nlc3MKKyAgaW50ZXJuYWxzIHJlZ2FyZGluZyBob3cgZmRzX3RvX3Bhc3Mgd2VyZSBwYXNzZWQgdG8gdGhlIGNoaWxkLiAgVGhlIGJ1ZyBoYWQKKyAgbm8gYWN0dWFsIGltcGFjdCBhcyBzdWJwcm9jZXNzLnB5IGFscmVhZHkgYXZvaWRlZCBpdC4KKworLSBJc3N1ZSAjMjUzODg6IEZpeGVkIHRva2VuaXplciBjcmFzaCB3aGVuIHByb2Nlc3NpbmcgdW5kZWNvZGFibGUgc291cmNlIGNvZGUKKyAgd2l0aCBhIG51bGwgYnl0ZS4KKworLSBJc3N1ZSAjMjU0NjI6IFRoZSBoYXNoIG9mIHRoZSBrZXkgbm93IGlzIGNhbGN1bGF0ZWQgb25seSBvbmNlIGluIG1vc3QKKyAgb3BlcmF0aW9ucyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0LgorCistIElzc3VlICMyMjk5NTogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBfX3JlZHVjZV9fIGFuZCBfX3JlZHVjZV9leF9fIG5vdworICByZWplY3RzIGJ1aWx0aW4gdHlwZXMgd2l0aCBub3QgZGVmaW5lZCBfX25ld19fLgorCistIElzc3VlICMyNDgwMjogQXZvaWQgYnVmZmVyIG92ZXJyZWFkcyB3aGVuIGludCgpLCBmbG9hdCgpLCBjb21waWxlKCksIGV4ZWMoKQorICBhbmQgZXZhbCgpIGFyZSBwYXNzZWQgYnl0ZXMtbGlrZSBvYmplY3RzLiAgVGhlc2Ugb2JqZWN0cyBhcmUgbm90CisgIG5lY2Vzc2FyaWx5IHRlcm1pbmF0ZWQgYnkgYSBudWxsIGJ5dGUsIGJ1dCB0aGUgZnVuY3Rpb25zIGFzc3VtZWQgdGhleSB3ZXJlLgorCistIElzc3VlICMyNTU1NTogRml4IHBhcnNlciBhbmQgQVNUOiBmaWxsIGxpbmVubyBhbmQgY29sX29mZnNldCBvZiAiYXJnIiBub2RlCisgIHdoZW4gY29tcGlsaW5nIEFTVCBmcm9tIFB5dGhvbiBvYmplY3RzLgorCistIElzc3VlICMyNDcyNjogRml4ZWQgYSBjcmFzaCBhbmQgbGVha2luZyBOVUxMIGluIHJlcHIoKSBvZiBPcmRlcmVkRGljdCB0aGF0CisgIHdhcyBtdXRhdGVkIGJ5IGRpcmVjdCBjYWxscyBvZiBkaWN0IG1ldGhvZHMuCisKKy0gSXNzdWUgIzI1NDQ5OiBJdGVyYXRpbmcgT3JkZXJlZERpY3Qgd2l0aCBrZXlzIHdpdGggdW5zdGFibGUgaGFzaCBub3cgcmFpc2VzCisgIEtleUVycm9yIGluIEMgaW1wbGVtZW50YXRpb25zIGFzIHdlbGwgYXMgaW4gUHl0aG9uIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMyNTM5NTogRml4ZWQgY3Jhc2ggd2hlbiBoaWdobHkgbmVzdGVkIE9yZGVyZWREaWN0IHN0cnVjdHVyZXMgd2VyZQorICBnYXJiYWdlIGNvbGxlY3RlZC4KKworLSBJc3N1ZSAjMjU0MDE6IE9wdGltaXplIGJ5dGVzLmZyb21oZXgoKSBhbmQgYnl0ZWFycmF5LmZyb21oZXgoKTogdGhleSBhcmUgbm93CisgIGJldHdlZW4gMnggYW5kIDMuNXggZmFzdGVyLgorCistIElzc3VlICMyNTM5OTogT3B0aW1pemUgYnl0ZWFycmF5ICUgYXJncyB1c2luZyB0aGUgbmV3IHByaXZhdGUgX1B5Qnl0ZXNXcml0ZXIKKyAgQVBJLiBGb3JtYXR0aW5nIGlzIG5vdyBiZXR3ZWVuIDIuNSBhbmQgNSB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1Mjc0OiBzeXMuc2V0cmVjdXJzaW9ubGltaXQoKSBub3cgcmFpc2VzIGEgUmVjdXJzaW9uRXJyb3IgaWYgdGhlIG5ldworICByZWN1cnNpb24gbGltaXQgaXMgdG9vIGxvdyBkZXBlbmRpbmcgYXQgdGhlIGN1cnJlbnQgcmVjdXJzaW9uIGRlcHRoLiBNb2RpZnkKKyAgYWxzbyB0aGUgImxvd2VyLXdhdGVyIG1hcmsiIGZvcm11bGEgdG8gbWFrZSBpdCBtb25vdG9uaWMuIFRoaXMgbWFyayBpcyB1c2VkCisgIHRvIGRlY2lkZSB3aGVuIHRoZSBvdmVyZmxvd2VkIGZsYWcgb2YgdGhlIHRocmVhZCBzdGF0ZSBpcyByZXNldC4KKworLSBJc3N1ZSAjMjQ0MDI6IEZpeCBpbnB1dCgpIHRvIHByb21wdCB0byB0aGUgcmVkaXJlY3RlZCBzdGRvdXQgd2hlbgorICBzeXMuc3Rkb3V0LmZpbGVubygpIGZhaWxzLgorCistIElzc3VlICMyNTM0OTogT3B0aW1pemUgYnl0ZXMgJSBhcmdzIHVzaW5nIHRoZSBuZXcgcHJpdmF0ZSBfUHlCeXRlc1dyaXRlciBBUEkuCisgIEZvcm1hdHRpbmcgaXMgbm93IHVwIHRvIDIgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNDgwNjogUHJldmVudCBidWlsdGluIHR5cGVzIHRoYXQgYXJlIG5vdCBhbGxvd2VkIHRvIGJlIHN1YmNsYXNzZWQgZnJvbQorICBiZWluZyBzdWJjbGFzc2VkIHRocm91Z2ggbXVsdGlwbGUgaW5oZXJpdGFuY2UuCisKKy0gSXNzdWUgIzI1MzAxOiBUaGUgVVRGLTggZGVjb2RlciBpcyBub3cgdXAgdG8gMTUgdGltZXMgYXMgZmFzdCBmb3IgZXJyb3IKKyAgaGFuZGxlcnM6IGBgaWdub3JlYGAsIGBgcmVwbGFjZWBgIGFuZCBgYHN1cnJvZ2F0ZWVzY2FwZWBgLgorCistIElzc3VlICMyNDg0ODogRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiBVVEYtNyBkZWNvZGluZyBvZiBtaXNmb3JtZWQgZGF0YS4KKworLSBJc3N1ZSAjMjUyNjc6IFRoZSBVVEYtOCBlbmNvZGVyIGlzIG5vdyB1cCB0byA3NSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvcgorICBoYW5kbGVyczogYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAsIGBgc3Vycm9nYXRlZXNjYXBlYGAsIGBgc3Vycm9nYXRlcGFzc2BgLgorICBQYXRjaCBjby13cml0dGVuIHdpdGggU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjUyODA6IEltcG9ydCB0cmFjZSBtZXNzYWdlcyBlbWl0dGVkIGluIHZlcmJvc2UgKC12KSBtb2RlIGFyZSBubworICBsb25nZXIgZm9ybWF0dGVkIHR3aWNlLgorCistIElzc3VlICMyNTIyNzogT3B0aW1pemUgQVNDSUkgYW5kIGxhdGluMSBlbmNvZGVycyB3aXRoIHRoZSBgYHN1cnJvZ2F0ZWVzY2FwZWBgCisgIGVycm9yIGhhbmRsZXI6IHRoZSBlbmNvZGVycyBhcmUgbm93IHVwIHRvIDMgdGltZXMgYXMgZmFzdC4gSW5pdGlhbCBwYXRjaAorICB3cml0dGVuIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI1MDAzOiBPbiBTb2xhcmlzIDExLjMgb3IgbmV3ZXIsIG9zLnVyYW5kb20oKSBub3cgdXNlcyB0aGUKKyAgZ2V0cmFuZG9tKCkgZnVuY3Rpb24gaW5zdGVhZCBvZiB0aGUgZ2V0ZW50cm9weSgpIGZ1bmN0aW9uLiBUaGUgZ2V0ZW50cm9weSgpCisgIGZ1bmN0aW9uIGlzIGJsb2NraW5nIHRvIGdlbmVyYXRlIHZlcnkgZ29vZCBxdWFsaXR5IGVudHJvcHksIG9zLnVyYW5kb20oKQorICBkb2Vzbid0IG5lZWQgc3VjaCBoaWdoLXF1YWxpdHkgZW50cm9weS4KKworLSBJc3N1ZSAjOTIzMjogTW9kaWZ5IFB5dGhvbidzIGdyYW1tYXIgdG8gYWxsb3cgdHJhaWxpbmcgY29tbWFzIGluIHRoZQorICBhcmd1bWVudCBsaXN0IG9mIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uICBGb3IgZXhhbXBsZSwgImRlZiBmKFwqLCBhID0KKyAgMywpOiBwYXNzIiBpcyBub3cgbGVnYWwuIFBhdGNoIGZyb20gTWFyayBEaWNraW5zb24uCisKKy0gSXNzdWUgIzI0OTY1OiBJbXBsZW1lbnQgUEVQIDQ5OCAiTGl0ZXJhbCBTdHJpbmcgSW50ZXJwb2xhdGlvbiIuIFRoaXMKKyAgYWxsb3dzIHlvdSB0byBlbWJlZCBleHByZXNzaW9ucyBpbnNpZGUgZi1zdHJpbmdzLCB3aGljaCBhcmUKKyAgY29udmVydGVkIHRvIG5vcm1hbCBzdHJpbmdzIGF0IHJ1biB0aW1lLiBHaXZlbiB4PTMsIHRoZW4KKyAgZid2YWx1ZT17eH0nID09ICd2YWx1ZT0zJy4gUGF0Y2ggYnkgRXJpYyBWLiBTbWl0aC4KKwogLSBJc3N1ZSAjMjY0Nzg6IEZpeCBzZW1hbnRpYyBidWdzIHdoZW4gdXNpbmcgYmluYXJ5IG9wZXJhdG9ycyB3aXRoIGRpY3Rpb25hcnkKICAgdmlld3MgYW5kIHR1cGxlcy4KIApAQCAtNzAzLDc5ICsxOTExLDI3IEBACiAKIC0gSXNzdWUgIzI1NjYwOiBGaXggVEFCIGtleSBiZWhhdmlvdXIgaW4gUkVQTCB3aXRoIHJlYWRsaW5lLgogCistIElzc3VlICMyNjI4ODogT3B0aW1pemUgUHlMb25nX0FzRG91YmxlLgorCistIElzc3VlcyAjMjYyODkgYW5kICMyNjMxNTogT3B0aW1pemUgZmxvb3IgYW5kIG1vZHVsbyBkaXZpc2lvbiBmb3IKKyAgc2luZ2xlLWRpZ2l0IGxvbmdzLiAgTWljcm9iZW5jaG1hcmtzIHNob3cgMi0yLjV4IGltcHJvdmVtZW50LiAgQnVpbHQtaW4KKyAgJ2Rpdm1vZCcgZnVuY3Rpb24gaXMgbm93IGFsc28gfjEwJSBmYXN0ZXIuCisKIC0gSXNzdWUgIzI1ODg3OiBSYWlzZSBhIFJ1bnRpbWVFcnJvciB3aGVuIGEgY29yb3V0aW5lIG9iamVjdCBpcyBhd2FpdGVkCiAgIG1vcmUgdGhhbiBvbmNlLgogCi0tIElzc3VlICMyNzI0MzogVXBkYXRlIHRoZSBfX2FpdGVyX18gcHJvdG9jb2w6IGluc3RlYWQgb2YgcmV0dXJuaW5nCi0gIGFuIGF3YWl0YWJsZSB0aGF0IHJlc29sdmVzIHRvIGFuIGFzeW5jaHJvbm91cyBpdGVyYXRvciwgdGhlIGFzeW5jaHJvbm91cwotICBpdGVyYXRvciBzaG91bGQgYmUgcmV0dXJuZWQgZGlyZWN0bHkuICBEb2luZyB0aGUgZm9ybWVyIHdpbGwgdHJpZ2dlciBhCi0gIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcuCi0KLQogTGlicmFyeQogLS0tLS0tLQogCi0tIFtTZWN1cml0eV0gSXNzdWUgIzI2NTU2OiBVcGRhdGUgZXhwYXQgdG8gMi4xLjEsIGZpeGVzIENWRS0yMDE1LTEyODMuCi0KLS0gW1NlY3VyaXR5XSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtdHBsaWIsIENWRS0yMDE2LTA3NzIuCi0gIFJlcG9ydGVkIGJ5IFRlYW0gT3N0c3Ryb20KLQotLSBJc3N1ZSAjMjEzODY6IEltcGxlbWVudCBtaXNzaW5nIElQdjRBZGRyZXNzLmlzX2dsb2JhbCBwcm9wZXJ0eS4gIEl0IHdhcwotICBkb2N1bWVudGVkIHNpbmNlIDA3YTU2MTBiYWU5ZC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9nZXIgTHVldGhpLgotCi0tIElzc3VlICMyMDkwMDogZGlzdHV0aWxzIHJlZ2lzdGVyIGNvbW1hbmQgbm93IGRlY29kZXMgSFRUUCByZXNwb25zZXMKLSAgY29ycmVjdGx5LiAgSW5pdGlhbCBwYXRjaCBieSBpbmdyaWQuCi0KLS0gQSBuZXcgdmVyc2lvbiBvZiB0eXBpbmcucHkgcHJvdmlkZXMgc2V2ZXJhbCBuZXcgY2xhc3NlcyBhbmQKLSAgZmVhdHVyZXM6IEBvdmVybG9hZCBvdXRzaWRlIHN0dWJzLCBSZXZlcnNpYmxlLCBEZWZhdWx0RGljdCwgVGV4dCwKLSAgQ29udGV4dE1hbmFnZXIsIFR5cGVbXSwgTmV3VHlwZSgpLCBUWVBFX0NIRUNLSU5HLCBhbmQgbnVtZXJvdXMgYnVnCi0gIGZpeGVzIChub3RlIHRoYXQgc29tZSBvZiB0aGUgbmV3IGZlYXR1cmVzIGFyZSBub3QgeWV0IGltcGxlbWVudGVkIGluCi0gIG15cHkgb3Igb3RoZXIgc3RhdGljIGFuYWx5emVycykuICBBbHNvIGNsYXNzZXMgZm9yIFBFUCA0OTIKLSAgKEF3YWl0YWJsZSwgQXN5bmNJdGVyYWJsZSwgQXN5bmNJdGVyYXRvcikgaGF2ZSBiZWVuIGFkZGVkIChpbiBmYWN0Ci0gIHRoZXkgbWFkZSBpdCBpbnRvIDMuNS4xIGJ1dCB3ZXJlIG5ldmVyIG1lbnRpb25lZCkuCi0KLS0gSXNzdWUgIzI1NzM4OiBTdG9wIGh0dHAuc2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuc2VuZF9lcnJvcigpIGZyb20KLSAgc2VuZGluZyBhIG1lc3NhZ2UgYm9keSBmb3IgMjA1IFJlc2V0IENvbnRlbnQuICBBbHNvLCBkb24ndCBzZW5kIENvbnRlbnQKLSAgaGVhZGVyIGZpZWxkcyBpbiByZXNwb25zZXMgdGhhdCBkb24ndCBoYXZlIGEgYm9keS4gIFBhdGNoIGJ5IFN1c3VtdQotICBLb3NoaWJhLgotCi0tIElzc3VlICMyMTMxMzogRml4IHRoZSAicGxhdGZvcm0iIG1vZHVsZSB0byB0b2xlcmF0ZSB3aGVuIHN5cy52ZXJzaW9uCi0gIGNvbnRhaW5zIHRydW5jYXRlZCBidWlsZCBpbmZvcm1hdGlvbi4KLQotLSBbU2VjdXJpdHldIElzc3VlICMyNjgzOTogT24gTGludXgsIDpmdW5jOmBvcy51cmFuZG9tYCBub3cgY2FsbHMKLSAgYGBnZXRyYW5kb20oKWBgIHdpdGggYGBHUk5EX05PTkJMT0NLYGAgdG8gZmFsbCBiYWNrIG9uIHJlYWRpbmcKLSAgYGAvZGV2L3VyYW5kb21gYCBpZiB0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgbm90IGluaXRpYWxpemVkIHlldC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDb2xtIEJ1Y2tsZXkuCi0KLS0gSXNzdWUgIzI3MTY0OiBJbiB0aGUgemxpYiBtb2R1bGUsIGFsbG93IGRlY29tcHJlc3NpbmcgcmF3IERlZmxhdGUgc3RyZWFtcwotICB3aXRoIGEgcHJlZGVmaW5lZCB6ZGljdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNDI5MTogRml4IHdzZ2lyZWYuc2ltcGxlX3NlcnZlci5XU0dJUmVxdWVzdEhhbmRsZXIgdG8gY29tcGxldGVseQotICB3cml0ZSBkYXRhIHRvIHRoZSBjbGllbnQuICBQcmV2aW91c2x5IGl0IGNvdWxkIGRvIHBhcnRpYWwgd3JpdGVzIGFuZAotICB0cnVuY2F0ZSBkYXRhLiAgQWxzbywgd3NnaXJlZi5oYW5kbGVyLlNlcnZlckhhbmRsZXIgY2FuIG5vdyBoYW5kbGUgc3Rkb3V0Ci0gIGRvaW5nIHBhcnRpYWwgd3JpdGVzLCBidXQgdGhpcyBpcyBkZXByZWNhdGVkLgotCi0tIElzc3VlICMyNjgwOTogQWRkIGBgX19hbGxfX2BgIHRvIDptb2Q6YHN0cmluZ2AuICBQYXRjaCBieSBFbWFudWVsIEJhcnJ5LgotCi0tIElzc3VlICMyNjM3Mzogc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZSBub3cgY29ycmVjdGx5IGlnbm9yZXMKLSAgQnJva2VuUGlwZUVycm9yIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgZGllcyBiZWZvcmUgLmNvbW11bmljYXRlKCkKLSAgaXMgY2FsbGVkIGluIG1vcmUvYWxsIGNpcmN1bXN0YW5jZXMuCi0KLS0gSXNzdWUgIzIxNzc2OiBkaXN0dXRpbHMudXBsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBIVFRQRXJyb3IuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCi0gIFBlcm1pc3Npb25FcnJvcgotCi0tIElzc3VlICMxODM4MzogQXZvaWQgY3JlYXRpbmcgZHVwbGljYXRlIGZpbHRlcnMgd2hlbiB1c2luZyBmaWx0ZXJ3YXJuaW5ncwotICBhbmQgc2ltcGxlZmlsdGVyLiAgQmFzZWQgb24gcGF0Y2ggYnkgQWxleCBTaGtvcC4KLQogLSBJc3N1ZSAjMjcwNTc6IEZpeCBvcy5zZXRfaW5oZXJpdGFibGUoKSBvbiBBbmRyb2lkLCBpb2N0bCgpIGlzIGJsb2NrZWQgYnkKICAgU0VMaW51eCBhbmQgZmFpbHMgd2l0aCBFQUNDRVNTLiBUaGUgZnVuY3Rpb24gbm93IGZhbGxzIGJhY2sgdG8gZmNudGwoKS4KICAgUGF0Y2ggd3JpdHRlbiBieSBNaWNoYcWCIEJlZG5hcnNraS4KIAogLSBJc3N1ZSAjMjcwMTQ6IEZpeCBpbmZpbml0ZSByZWN1cnNpb24gdXNpbmcgdHlwaW5nLnB5LiAgVGhhbmtzIHRvIEthbGxlIFR1dXJlIQogCistIElzc3VlICMyNzAzMTogUmVtb3ZlZCBkdW1teSBtZXRob2RzIGluIFRraW50ZXIgd2lkZ2V0IGNsYXNzZXM6IHRrX21lbnVCYXIoKQorICBhbmQgdGtfYmluZEZvclRyYXZlcnNhbCgpLgorCiAtIElzc3VlICMxNDEzMjogRml4IHVybGxpYi5yZXF1ZXN0IHJlZGlyZWN0IGhhbmRsaW5nIHdoZW4gdGhlIHRhcmdldCBvbmx5IGhhcwogICBhIHF1ZXJ5IHN0cmluZy4gIE9yaWdpbmFsIGZpeCBieSBKw6FuIEphbmVjaC4KIApAQCAtNzg1LDYgKzE5NDEsMTggQEAKICAgdG8gYmUgQVNDSUktZW5jb2RhYmxlLCBvdGhlcndpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IgaXMgcmFpc2VkLiAgQmFzZWQgb24KICAgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KIAorLSBJc3N1ZSAjMjcwMzM6IFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBkZWNvZGVfZGF0YSBwYXJhbWV0ZXIgZm9yCisgIHNtdHBkLlNNVFBDaGFubmVsIGFuZCBzbXRwZC5TTVRQU2VydmVyIGNvbnN0cnVjdG9ycyBpcyBjaGFuZ2VkIHRvIEZhbHNlLgorCistIElzc3VlICMyNzAzNDogUmVtb3ZlZCBkZXByZWNhdGVkIGNsYXNzIGFzeW5jaGF0LmZpZm8uCisKKy0gSXNzdWUgIzI2ODcwOiBBZGRlZCByZWFkbGluZS5zZXRfYXV0b19oaXN0b3J5KCksIHdoaWNoIGNhbiBzdG9wIGVudHJpZXMKKyAgYmVpbmcgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgaGlzdG9yeSBsaXN0LiAgQmFzZWQgb24gcGF0Y2ggYnkgVHlsZXIKKyAgQ3JvbXB0b24uCisKKy0gSXNzdWUgIzI2MDM5OiB6aXBmaWxlLlppcEZpbGUub3BlbigpIGNhbiBub3cgYmUgdXNlZCB0byB3cml0ZSBkYXRhIGludG8gYSBaSVAKKyAgZmlsZSwgYXMgd2VsbCBhcyBmb3IgZXh0cmFjdGluZyBkYXRhLiAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKIC0gSXNzdWUgIzI2ODkyOiBIb25vciBkZWJ1Z2xldmVsIGZsYWcgaW4gdXJsbGliLnJlcXVlc3QuSFRUUEhhbmRsZXIuIFBhdGNoCiAgIGNvbnRyaWJ1dGVkIGJ5IENoaSBIc3VhbiBZZW4uCiAKQEAgLTc5OSw2ICsxOTY3LDE0IEBACiAtIElzc3VlICMyNjk3NzogUmVtb3ZlZCB1bm5lY2Vzc2FyeSwgYW5kIGlnbm9yZWQsIGNhbGwgdG8gc3VtIG9mIHNxdWFyZXMgaGVscGVyCiAgIGluIHN0YXRpc3RpY3MucHZhcmlhbmNlLgogCistIElzc3VlICMyNjAwMjogVXNlIGJpc2VjdCBpbiBzdGF0aXN0aWNzLm1lZGlhbiBpbnN0ZWFkIG9mIGEgbGluZWFyIHNlYXJjaC4KKyAgUGF0Y2ggYnkgVXBlbmRyYSBLdW1hLgorCistIElzc3VlICMyNTk3NDogTWFrZSB1c2Ugb2YgbmV3IERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpIG1ldGhvZCBpbiBzdGF0aXN0aWNzCisgIG1vZHVsZS4gUGF0Y2ggYnkgU3RlZmFuIEtyYWguCisKKy0gSXNzdWUgIzI2OTk2OiBBZGQgc2VjcmV0cyBtb2R1bGUgYXMgZGVzY3JpYmVkIGluIFBFUCA1MDYuCisKIC0gSXNzdWUgIzI2ODgxOiBUaGUgbW9kdWxlZmluZGVyIG1vZHVsZSBub3cgc3VwcG9ydHMgZXh0ZW5kZWQgb3Bjb2RlIGFyZ3VtZW50cy4KIAogLSBJc3N1ZSAjMjM4MTU6IEZpeGVkIGNyYXNoZXMgcmVsYXRlZCB0byBkaXJlY3RseSBjcmVhdGVkIGluc3RhbmNlcyBvZiB0eXBlcyBpbgpAQCAtODEwLDYgKzE5ODYsMTEgQEAKIC0gSXNzdWUgIzI2ODczOiB4bWxycGMgbm93IHJhaXNlcyBSZXNwb25zZUVycm9yIG9uIHVuc3VwcG9ydGVkIHR5cGUgdGFncwogICBpbnN0ZWFkIG9mIHNpbGVudGx5IHJldHVybiBpbmNvcnJlY3QgcmVzdWx0LgogCistIElzc3VlICMyNjkxNTogIFRoZSBfX2NvbnRhaW5zX18gbWV0aG9kcyBpbiB0aGUgY29sbGVjdGlvbnMgQUJDcyBub3cgY2hlY2sKKyAgZm9yIGlkZW50aXR5IGJlZm9yZSBjaGVja2luZyBlcXVhbGl0eS4gIFRoaXMgYmV0dGVyIG1hdGNoZXMgdGhlIGJlaGF2aW9yCisgIG9mIHRoZSBjb25jcmV0ZSBjbGFzc2VzLCBhbGxvd3Mgc2Vuc2libGUgaGFuZGxpbmcgb2YgTmFOcywgYW5kIG1ha2VzIGl0CisgIGVhc2llciB0byByZWFzb24gYWJvdXQgY29udGFpbmVyIGludmFyaWFudHMuCisKIC0gSXNzdWUgIzI2NzExOiBGaXhlZCB0aGUgY29tcGFyaXNvbiBvZiBwbGlzdGxpYi5EYXRhIHdpdGggb3RoZXIgdHlwZXMuCiAKIC0gSXNzdWUgIzI0MTE0OiBGaXggYW4gdW5pbml0aWFsaXplZCB2YXJpYWJsZSBpbiBgY3R5cGVzLnV0aWxgLgpAQCAtODIzLDYgKzIwMDQsMTIgQEAKICAgbmFtZXMgdGhhdCBoYXBwZW4gdG8gaGF2ZSBhIGJ5cGFzc2VkIGhvc3RuYW1lIGFzIGEgc3VmZml4LiAgUGF0Y2ggYnkgWGlhbmcKICAgWmhhbmcuCiAKKy0gSXNzdWUgIzI0OTAyOiBQcmludCBzZXJ2ZXIgVVJMIG9uIGh0dHAuc2VydmVyIHN0YXJ0dXAuICBJbml0aWFsIHBhdGNoIGJ5CisgIEZlbGl4IEthaXNlci4KKworLSBJc3N1ZSAjMjU3ODg6IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoKSBub3cgc3VwcG9ydHMgYW4gImVycm9ycyIgYXJndW1lbnQKKyAgZm9yIHBhc3NpbmcgdG8gb3Blbi4gIE9yaWdpbmFsIHBhdGNoIGJ5IEpvc2VwaCBIYWNrbWFuLgorCiAtIElzc3VlICMyNjYzNDogcmVjdXJzaXZlX3JlcHIoKSBub3cgc2V0cyBfX3F1YWxuYW1lX18gb2Ygd3JhcHBlci4gIFBhdGNoIGJ5CiAgIFhpYW5nIFpoYW5nLgogCkBAIC04NTgsMjYgKzIwNDUsNTQgQEAKIC0gSXNzdWUgIzI2NzE3OiBTdG9wIGVuY29kaW5nIExhdGluLTEtaXplZCBXU0dJIHBhdGhzIHdpdGggVVRGLTguICBQYXRjaCBieQogICBBbnRob255IFNvdHRpbGUuCiAKKy0gSXNzdWUgIzI2NzgyOiBBZGQgU1RBUlRVUElORk8gdG8gc3VicHJvY2Vzcy5fX2FsbF9fIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI2NDA0OiBBZGQgY29udGV4dCBtYW5hZ2VyIHRvIHNvY2tldHNlcnZlci4gIFBhdGNoIGJ5IEF2aXYgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2NzM1OiBGaXggOmZ1bmM6YG9zLnVyYW5kb21gIG9uIFNvbGFyaXMgMTEuMyBhbmQgbmV3ZXIgd2hlbiByZWFkaW5nCiAgIG1vcmUgdGhhbiAxLDAyNCBieXRlczogY2FsbCBgYGdldHJhbmRvbSgpYGAgbXVsdGlwbGUgdGltZXMgd2l0aCBhIGxpbWl0IG9mCiAgIDEwMjQgYnl0ZXMgcGVyIGNhbGwuCiAKKy0gSXNzdWUgIzI2NTg1OiBFbGltaW5hdGUgaHR0cC5zZXJ2ZXIuX3F1b3RlX2h0bWwoKSBhbmQgdXNlCisgIGh0bWwuZXNjYXBlKHF1b3RlPUZhbHNlKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNjY4NTogUmFpc2UgT1NFcnJvciBpZiBjbG9zaW5nIGEgc29ja2V0IGZhaWxzLgorCiAtIElzc3VlICMxNjMyOTogQWRkIC53ZWJtIHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KIAogLSBJc3N1ZSAjMTM5NTI6IEFkZCAuY3N2IHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHZW9mZiBXaWxzb24uCiAKKy0gSXNzdWUgIzI2NTg3OiB0aGUgc2l0ZSBtb2R1bGUgbm93IGFsbG93cyAucHRoIGZpbGVzIHRvIHNwZWNpZnkgZmlsZXMgdG8gYmUKKyAgYWRkZWQgdG8gc3lzLnBhdGggKGUuZy4gemlwIGZpbGVzKS4KKworLSBJc3N1ZSAjMjU2MDk6IEludHJvZHVjZSBjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXIgYW5kCisgIHR5cGluZy5Db250ZXh0TWFuYWdlci4KKwogLSBJc3N1ZSAjMjY3MDk6IEZpeGVkIFkyMDM4IHByb2JsZW0gaW4gbG9hZGluZyBiaW5hcnkgUExpc3RzLgogCiAtIElzc3VlICMyMzczNTogSGFuZGxlIHRlcm1pbmFsIHJlc2l6aW5nIHdpdGggUmVhZGxpbmUgNi4zKyBieSBpbnN0YWxsaW5nIG91cgogICBvd24gU0lHV0lOQ0ggaGFuZGxlci4gIFBhdGNoIGJ5IEVyaWMgUHJpY2UuCiAKKy0gSXNzdWUgIzI1OTUxOiBDaGFuZ2UgU1NMU29ja2V0LnNlbmRhbGwoKSB0byByZXR1cm4gTm9uZSwgYXMgZXhwbGljaXRseQorICBkb2N1bWVudGVkIGZvciBwbGFpbiBzb2NrZXQgb2JqZWN0cy4gIFBhdGNoIGJ5IEF2aXYgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2NTg2OiBJbiBodHRwLnNlcnZlciwgcmVzcG9uZCB3aXRoICI0MTMgUmVxdWVzdCBoZWFkZXIgZmllbGRzIHRvbwogICBsYXJnZSIgaWYgdGhlcmUgYXJlIHRvbyBtYW55IGhlYWRlciBmaWVsZHMgdG8gcGFyc2UsIHJhdGhlciB0aGFuIGtpbGxpbmcKICAgdGhlIGNvbm5lY3Rpb24gYW5kIHJhaXNpbmcgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCistIElzc3VlICMyNjY3NjogQWRkZWQgbWlzc2luZyBYTUxQdWxsUGFyc2VyIHRvIEVsZW1lbnRUcmVlLl9fYWxsX18uCisKIC0gSXNzdWUgIzIyODU0OiBDaGFuZ2UgQnVmZmVyZWRSZWFkZXIud3JpdGFibGUoKSBhbmQKICAgQnVmZmVyZWRXcml0ZXIucmVhZGFibGUoKSB0byBhbHdheXMgcmV0dXJuIEZhbHNlLgogCistIElzc3VlICMyNjQ5MjogRXhoYXVzdGVkIGl0ZXJhdG9yIG9mIGFycmF5LmFycmF5IG5vdyBjb25mb3JtcyB3aXRoIHRoZSBiZWhhdmlvcgorICBvZiBpdGVyYXRvcnMgb2Ygb3RoZXIgbXV0YWJsZSBzZXF1ZW5jZXM6IGl0IGxlZnRzIGV4aGF1c3RlZCBldmVuIGlmIGl0ZXJhdGVkCisgIGFycmF5IGlzIGV4dGVuZGVkLgorCistIElzc3VlICMyNjY0MTogZG9jdGVzdC5Eb2NGaWxlVGVzdCBhbmQgZG9jdGVzdC50ZXN0ZmlsZSgpIG5vdyBzdXBwb3J0CisgIHBhY2thZ2VzIChtb2R1bGUgc3BsaXR0ZWQgaW50byBtdWx0aXBsZSBkaXJlY3RvcmllcykgZm9yIHRoZSBwYWNrYWdlCisgIHBhcmFtZXRlci4KKwogLSBJc3N1ZSAjMjUxOTU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gbW9jay5NYWdpY01vY2suIF9DYWxsIGlzIGEgc3ViY2xhc3Mgb2YKICAgdHVwbGUgKGNoYW5nZXNldCAzNjAzYmFlNjNjMTMgb25seSB3b3JrcyBmb3IgY2xhc3Nlcykgc28gd2UgbmVlZCB0bwogICBpbXBsZW1lbnQgX19uZV9fIG91cnNlbHZlcy4gIFBhdGNoIGJ5IEFuZHJldyBQbHVtbWVyLgpAQCAtODkwLDE2ICsyMTA1LDQ1IEBACiAKIC0gSXNzdWUgIzI2NjE2OiBGaXhlZCBhIGJ1ZyBpbiBkYXRldGltZS5hc3RpbWV6b25lKCkgbWV0aG9kLgogCi0tIElzc3VlICMyMTkyNTogOmZ1bmM6YHdhcm5pbmdzLmZvcm1hdHdhcm5pbmdgIG5vdyBjYXRjaGVzIGV4Y2VwdGlvbnMgb24KLSAgYGBsaW5lY2FjaGUuZ2V0bGluZSguLi4pYGAgdG8gYmUgYWJsZSB0byBsb2cgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBlbWl0dGVkCi0gIGxhdGUgZHVyaW5nIHRoZSBQeXRob24gc2h1dGRvd24gcHJvY2Vzcy4KKy0gSXNzdWUgIzI2NjM3OiBUaGUgOm1vZDpgaW1wb3J0bGliYCBtb2R1bGUgbm93IGVtaXRzIGFuIDpleGM6YEltcG9ydEVycm9yYAorICByYXRoZXIgdGhhbiBhIDpleGM6YFR5cGVFcnJvcmAgaWYgOmZ1bmM6YF9faW1wb3J0X19gIGlzIHRyaWVkIGR1cmluZyB0aGUKKyAgUHl0aG9uIHNodXRkb3duIHByb2Nlc3MgYnV0IDpkYXRhOmBzeXMucGF0aGAgaXMgYWxyZWFkeSBjbGVhcmVkIChzZXQgdG8KKyAgYGBOb25lYGApLgorCistIElzc3VlICMyMTkyNTogOmZ1bmM6YHdhcm5pbmdzLmZvcm1hdHdhcm5pbmdgIG5vdyBjYXRjaGVzIGV4Y2VwdGlvbnMgd2hlbgorICBjYWxsaW5nIDpmdW5jOmBsaW5lY2FjaGUuZ2V0bGluZWAgYW5kCisgIDpmdW5jOmB0cmFjZW1hbGxvYy5nZXRfb2JqZWN0X3RyYWNlYmFja2AgdG8gYmUgYWJsZSB0byBsb2cKKyAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCBlbWl0dGVkIGxhdGUgZHVyaW5nIHRoZSBQeXRob24gc2h1dGRvd24gcHJvY2Vzcy4KKworLSBJc3N1ZSAjMjM4NDg6IE9uIFdpbmRvd3MsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBub3cgYWxzbyBpbnN0YWxscyBhbgorICBleGNlcHRpb24gaGFuZGxlciB0byBkdW1wIHRoZSB0cmFjZWJhY2sgb2YgYWxsIFB5dGhvbiB0aHJlYWRzIG9uIGFueSBXaW5kb3dzCisgIGV4Y2VwdGlvbiwgbm90IG9ubHkgb24gVU5JWCBzaWduYWxzIChTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQpLgorCistIElzc3VlICMyNjUzMDogQWRkIEMgZnVuY3Rpb25zIDpjOmZ1bmM6YF9QeVRyYWNlTWFsbG9jX1RyYWNrYCBhbmQKKyAgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfVW50cmFja2AgdG8gdHJhY2sgbWVtb3J5IGJsb2NrcyB1c2luZyB0aGUKKyAgOm1vZDpgdHJhY2VtYWxsb2NgIG1vZHVsZS4gQWRkIDpjOmZ1bmM6YF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFja2AgdG8gZ2V0CisgIHRoZSB0cmFjZWJhY2sgb2YgYW4gb2JqZWN0LgorCistIElzc3VlICMyNjU4ODogVGhlIF90cmFjZW1hbGxvYyBub3cgc3VwcG9ydHMgdHJhY2luZyBtZW1vcnkgYWxsb2NhdGlvbnMgb2YKKyAgbXVsdGlwbGUgYWRkcmVzcyBzcGFjZXMgKGRvbWFpbnMpLgogCiAtIElzc3VlICMyNDI2NjogQ3RybCtDIGR1cmluZyBSZWFkbGluZSBoaXN0b3J5IHNlYXJjaCBub3cgY2FuY2VscyB0aGUgc2VhcmNoCiAgIG1vZGUgd2hlbiBjb21waWxlZCB3aXRoIFJlYWRsaW5lIDcuCiAKKy0gSXNzdWUgIzI2NTkwOiBJbXBsZW1lbnQgYSBzYWZlIGZpbmFsaXplciBmb3IgdGhlIF9zb2NrZXQuc29ja2V0IHR5cGUuIEl0IG5vdworICByZWxlYXNlcyB0aGUgR0lMIHRvIGNsb3NlIHRoZSBzb2NrZXQuCisKKy0gSXNzdWUgIzE4Nzg3OiBzcHdkLmdldHNwbmFtKCkgbm93IHJhaXNlcyBhIFBlcm1pc3Npb25FcnJvciBpZiB0aGUgdXNlcgorICBkb2Vzbid0IGhhdmUgcHJpdmlsZWdlcy4KKwogLSBJc3N1ZSAjMjY1NjA6IEF2b2lkIHBvdGVudGlhbCBWYWx1ZUVycm9yIGluIEJhc2VIYW5kbGVyLnN0YXJ0X3Jlc3BvbnNlLgogICBJbml0aWFsIHBhdGNoIGJ5IFBldGVyIEluZ2xlc2J5LgogCistIElzc3VlICMyNjU2NzogQWRkIGEgbmV3IGZ1bmN0aW9uIDpjOmZ1bmM6YFB5RXJyX1Jlc291cmNlV2FybmluZ2AgZnVuY3Rpb24gdG8KKyAgcGFzcyB0aGUgZGVzdHJveWVkIG9iamVjdC4gQWRkIGEgKnNvdXJjZSogYXR0cmlidXRlIHRvCisgIDpjbGFzczpgd2FybmluZ3MuV2FybmluZ01lc3NhZ2VgLiBBZGQgd2FybmluZ3MuX3Nob3d3YXJubXNnKCkgd2hpY2ggdXNlcworICB0cmFjZW1hbGxvYyB0byBnZXQgdGhlIHRyYWNlYmFjayB3aGVyZSBzb3VyY2Ugb2JqZWN0IHdhcyBhbGxvY2F0ZWQuCisKIC0gW1NlY3VyaXR5XSBJc3N1ZSAjMjYzMTM6IHNzbC5weSBfbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIGlmIHdpbmRvd3MKICAgY2VydCBzdG9yZSBpcyBlbXB0eS4gUGF0Y2ggYnkgQmFqaS4KIApAQCAtOTIxLDI0ICsyMTY1LDM5IEBACiAtIElzc3VlICMyMzcxODogRml4ZWQgcGFyc2luZyB0aW1lIGluIHdlZWsgMCBiZWZvcmUgSmFuIDEuICBPcmlnaW5hbCBwYXRjaCBieQogICBUYW3DoXMgQmVuY2UgR2VkYWkuCiAKKy0gSXNzdWUgIzI2MzIzOiBBZGQgTW9jay5hc3NlcnRfY2FsbGVkKCkgYW5kIE1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgbWV0aG9kcyB0byB1bml0dGVzdC5tb2NrLiBQYXRjaCB3cml0dGVuIGJ5IEFtaXQgU2FoYS4KKwogLSBJc3N1ZSAjMjA1ODk6IEludm9raW5nIFBhdGgub3duZXIoKSBhbmQgUGF0aC5ncm91cCgpIG9uIFdpbmRvd3Mgbm93IHJhaXNlCiAgIE5vdEltcGxlbWVudGVkRXJyb3IgaW5zdGVhZCBvZiBJbXBvcnRFcnJvci4KIAogLSBJc3N1ZSAjMjYxNzc6IEZpeGVkIHRoZSBrZXlzKCkgbWV0aG9kIGZvciBDYW52YXMgYW5kIFNjcm9sbGJhciB3aWRnZXRzLgogCi0tIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIHRoZSBmaWxlaW5wdXQgbW9kdWxlLgotICBUaGUgYnVmc2l6ZSBwYXJhbWV0ZXIgaXMgbm8gbG9uZ2VyIHVzZWQuCistIElzc3VlICMxNTA2ODogR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIGZpbGVpbnB1dC4KKyAgVGhlIGJ1ZnNpemUgcGFyYW1ldGVyIGlzIG5vdyBkZXByZWNhdGVkIGFuZCBpZ25vcmVkLgorCistIElzc3VlICMxOTQ3NTogQWRkZWQgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGltZXNwZWMgdG8gdGhlIGRhdGV0aW1lCisgIGlzb2Zvcm1hdCgpIG1ldGhvZCB0byBjaG9vc2UgdGhlIHByZWNpc2lvbiBvZiB0aGUgdGltZSBjb21wb25lbnQuCiAKIC0gSXNzdWUgIzIyMDI6IEZpeCBVbmJvdW5kTG9jYWxFcnJvciBpbgogICBBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyLmdldF9hbGdvcml0aG1faW1wbHMuICBJbml0aWFsIHBhdGNoIGJ5IE1hdGhpZXUKICAgRHVwdXkuCiAKKy0gSXNzdWUgIzI2MTY3OiBNaW5pbWl6ZWQgb3ZlcmhlYWQgaW4gY29weS5jb3B5KCkgYW5kIGNvcHkuZGVlcGNvcHkoKS4KKyAgT3B0aW1pemVkIGNvcHlpbmcgYW5kIGRlZXBjb3B5aW5nIGJ5dGVhcnJheXMsIE5vdEltcGxlbWVudGVkLCBzbGljZXMsCisgIHNob3J0IGxpc3RzLCB0dXBsZXMsIGRpY3RzLCBzZXRzLgorCiAtIElzc3VlICMyNTcxODogRml4ZWQgcGlja2xpbmcgYW5kIGNvcHlpbmcgdGhlIGFjY3VtdWxhdGUoKSBpdGVyYXRvciB3aXRoCiAgIHRvdGFsIGlzIE5vbmUuCiAKIC0gSXNzdWUgIzI2NDc1OiBGaXhlZCBkZWJ1Z2dpbmcgb3V0cHV0IGZvciByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdGhlICg/eCkKICAgZmxhZy4KIAorLSBJc3N1ZSAjMjY0ODI6IEFsbG93ZWQgcGlja2xpbmcgcmVjdXJzaXZlIGRlcXVldWVzLgorCistIElzc3VlICMyNjMzNTogTWFrZSBtbWFwLndyaXRlKCkgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBsaWtlCisgIG90aGVyIHdyaXRlIG1ldGhvZHMuICBQYXRjaCBieSBKYWt1YiBTdGFzaWFrLgorCiAtIElzc3VlICMyNjQ1NzogRml4ZWQgdGhlIHN1Ym5ldHMoKSBtZXRob2RzIGluIElQIG5ldHdvcmsgY2xhc3NlcyBmb3IgdGhlIGNhc2UKICAgd2hlbiByZXN1bHRpbmcgcHJlZml4IGxlbmd0aCBpcyBlcXVhbCB0byBtYXhpbWFsIHByZWZpeCBsZW5ndGguCiAgIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgpAQCAtOTU1LDcgKzIyMTQsNyBAQAogCiAtIElzc3VlICMyNjE4NjogUmVtb3ZlIGFuIGludmFsaWQgdHlwZSBjaGVjayBpbiBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyLgogCi0tIElzc3VlICMyNjM2NzogaW1wb3J0bGliLl9faW1wb3J0X18oKSByYWlzZXMgU3lzdGVtRXJyb3IgbGlrZQorLSBJc3N1ZSAjMjYzNjc6IGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgcmFpc2VzIEltcG9ydEVycm9yIGxpa2UKICAgYnVpbHRpbnMuX19pbXBvcnRfXygpIHdoZW4gYGBsZXZlbGBgIGlzIHNwZWNpZmllZCBidXQgd2l0aG91dCBhbiBhY2NvbXBhbnlpbmcKICAgcGFja2FnZSBzcGVjaWZpZWQuCiAKQEAgLTk2MywxOSArMjIyMiwzOSBAQAogICB0aGUgY29ubmVjdGVkIHNvY2tldCkgd2hlbiB2ZXJpZnlfcmVxdWVzdCgpIHJldHVybnMgZmFsc2UuICBQYXRjaCBieSBBdml2CiAgIFBhbGl2b2RhLgogCistIElzc3VlICMyMzQzMDogQ2hhbmdlIHRoZSBzb2NrZXRzZXJ2ZXIgbW9kdWxlIHRvIG9ubHkgY2F0Y2ggZXhjZXB0aW9ucworICByYWlzZWQgZnJvbSBhIHJlcXVlc3QgaGFuZGxlciB0aGF0IGFyZSBkZXJpdmVkIGZyb20gRXhjZXB0aW9uIChpbnN0ZWFkIG9mCisgIEJhc2VFeGNlcHRpb24pLiAgVGhlcmVmb3JlIFN5c3RlbUV4aXQgYW5kIEtleWJvYXJkSW50ZXJydXB0IG5vIGxvbmdlcgorICB0cmlnZ2VyIHRoZSBoYW5kbGVfZXJyb3IoKSBtZXRob2QsIGFuZCB3aWxsIG5vdyB0byBzdG9wIGEgc2luZ2xlLXRocmVhZGVkCisgIHNlcnZlci4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyNTkzOTogT24gV2luZG93cyBvcGVuIHRoZSBjZXJ0IHN0b3JlIHJlYWRvbmx5IGluCiAgIHNzbC5lbnVtX2NlcnRpZmljYXRlcy4KIAogLSBJc3N1ZSAjMjU5OTU6IG9zLndhbGsoKSBubyBsb25nZXIgdXNlcyBGRHMgcHJvcG9ydGlvbmFsIHRvIHRoZSB0cmVlIGRlcHRoLgogCistIElzc3VlICMyNTk5NDogQWRkZWQgdGhlIGNsb3NlKCkgbWV0aG9kIGFuZCB0aGUgc3VwcG9ydCBvZiB0aGUgY29udGV4dCBtYW5hZ2VyCisgIHByb3RvY29sIGZvciB0aGUgb3Muc2NhbmRpcigpIGl0ZXJhdG9yLgorCistIElzc3VlICMyMzk5MjogbXVsdGlwcm9jZXNzaW5nOiBtYWtlIE1hcFJlc3VsdCBub3QgZmFpbC1mYXN0IHVwb24gZXhjZXB0aW9uLgorCistIElzc3VlICMyNjI0MzogU3VwcG9ydCBrZXl3b3JkIGFyZ3VtZW50cyB0byB6bGliLmNvbXByZXNzKCkuICBQYXRjaCBieSBBdml2CisgIFBhbGl2b2RhLgorCiAtIElzc3VlICMyNjExNzogVGhlIG9zLnNjYW5kaXIoKSBpdGVyYXRvciBub3cgY2xvc2VzIGZpbGUgZGVzY3JpcHRvciBub3Qgb25seQogICB3aGVuIHRoZSBpdGVyYXRpb24gaXMgZmluaXNoZWQsIGJ1dCB3aGVuIGl0IHdhcyBmYWlsZWQgd2l0aCBlcnJvci4KIAorLSBJc3N1ZSAjMjU5NDk6IF9fZGljdF9fIGZvciBhbiBPcmRlcmVkRGljdCBpbnN0YW5jZSBpcyBub3cgY3JlYXRlZCBvbmx5IHdoZW4KKyAgbmVlZGVkLgorCiAtIElzc3VlICMyNTkxMTogUmVzdG9yZWQgc3VwcG9ydCBvZiBieXRlcyBwYXRocyBpbiBvcy53YWxrKCkgb24gV2luZG93cy4KIAogLSBJc3N1ZSAjMjYwNDU6IEFkZCBVVEYtOCBzdWdnZXN0aW9uIHRvIGVycm9yIG1lc3NhZ2Ugd2hlbiBwb3N0aW5nIGEKICAgbm9uLUxhdGluLTEgc3RyaW5nIHdpdGggaHR0cC5jbGllbnQuCiAKKy0gSXNzdWUgIzI2MDM5OiBBZGRlZCB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKCkgYW5kIHppcGluZm8uWmlwSW5mby5pc19kaXIoKS4KKyAgUGF0Y2ggYnkgVGhvbWFzIEtsdXl2ZXIuCisKIC0gSXNzdWUgIzEyOTIzOiBSZXNldCBGYW5jeVVSTG9wZW5lcidzIHJlZGlyZWN0IGNvdW50ZXIgZXZlbiBpZiB0aGVyZSBpcyBhbgogICBleGNlcHRpb24uICBCYXNlZCBvbiBwYXRjaGVzIGJ5IEJyaWFuIEJyYXppbCBhbmQgRGFuaWVsIFJvY2NvLgogCkBAIC05OTYsNiArMjI3NSwxMCBAQAogICBnZXRob3N0YnluYW1lX2V4KCkgZnVuY3Rpb25zIG9mIHRoZSBzb2NrZXQgbW9kdWxlIG5vdyBkZWNvZGUgdGhlIGhvc3RuYW1lCiAgIGZyb20gdGhlIEFOU0kgY29kZSBwYWdlIHJhdGhlciB0aGFuIFVURi04LgogCistIElzc3VlICMyNjA5OTogVGhlIHNpdGUgbW9kdWxlIG5vdyB3cml0ZXMgYW4gZXJyb3IgaW50byBzdGRlcnIgaWYKKyAgc2l0ZWN1c3RvbWl6ZSBtb2R1bGUgY2FuIGJlIGltcG9ydGVkIGJ1dCBleGVjdXRpbmcgdGhlIG1vZHVsZSByYWlzZSBhbgorICBJbXBvcnRFcnJvci4gU2FtZSBjaGFuZ2UgZm9yIHVzZXJjdXN0b21pemUuCisKIC0gSXNzdWUgIzI2MTQ3OiB4bWxycGMgbm93IHdvcmtzIHdpdGggc3RyaW5ncyBub3QgZW5jb2RhYmxlIHdpdGggdXNlZAogICBub24tVVRGLTggZW5jb2RpbmcuCiAKQEAgLTEwMDYsMTMgKzIyODksMjEgQEAKIC0gSXNzdWUgIzI2MDEzOiBBZGRlZCBjb21wYXRpYmlsaXR5IHdpdGggYnJva2VuIHByb3RvY29sIDIgcGlja2xlcyBjcmVhdGVkCiAgIGluIG9sZCBQeXRob24gMyB2ZXJzaW9ucyAoMy40LjMgYW5kIGxvd2VyKS4KIAorLSBJc3N1ZSAjMjYxMjk6IERlcHJlY2F0ZWQgYWNjZXB0aW5nIG5vbi1pbnRlZ2VycyBpbiBncnAuZ2V0Z3JnaWQoKS4KKwogLSBJc3N1ZSAjMjU4NTA6IFVzZSBjcm9zcy1jb21waWxhdGlvbiBieSBkZWZhdWx0IGZvciA2NC1iaXQgV2luZG93cy4KIAotLSBJc3N1ZSAjMTc2MzM6IEltcHJvdmUgemlwaW1wb3J0J3Mgc3VwcG9ydCBmb3IgbmFtZXNwYWNlIHBhY2thZ2VzLgorLSBJc3N1ZSAjMjU4MjI6IEFkZCBkb2NzdHJpbmdzIHRvIHRoZSBmaWVsZHMgb2YgdXJsbGliLnBhcnNlIHJlc3VsdHMuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFN3YXRpIEphaXN3YWwuCisKKy0gSXNzdWUgIzIyNjQyOiBDb252ZXJ0IHRyYWNlIG1vZHVsZSBvcHRpb24gcGFyc2luZyBtZWNoYW5pc20gdG8gYXJncGFyc2UuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFNpbGVudEdob3N0LgogCiAtIElzc3VlICMyNDcwNTogRml4IHN5c2NvbmZpZy5fcGFyc2VfbWFrZWZpbGUgbm90IGV4cGFuZGluZyAke30gdmFycwogICBhcHBlYXJpbmcgYmVmb3JlICQoKSB2YXJzLgogCistIElzc3VlICMyNjA2OTogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIGFwaXMgaW4gdGhlIHRyYWNlIG1vZHVsZS4KKwogLSBJc3N1ZSAjMjIxMzg6IEZpeCBtb2NrLnBhdGNoIGJlaGF2aW9yIHdoZW4gcGF0Y2hpbmcgZGVzY3JpcHRvcnMuIFJlc3RvcmUKICAgb3JpZ2luYWwgdmFsdWVzIGFmdGVyIHBhdGNoaW5nLiBQYXRjaCBjb250cmlidXRlZCBieSBTZWFuIE1jQ3VsbHkuCiAKQEAgLTEwMjUsMTMgKzIzMTYsMjggQEAKIC0gSXNzdWUgIzI0MTIwOiBJZ25vcmUgUGVybWlzc2lvbkVycm9yIHdoZW4gdHJhdmVyc2luZyBhIHRyZWUgd2l0aAogICBwYXRobGliLlBhdGguW3JdZ2xvYigpLiAgUGF0Y2ggYnkgVWxyaWNoIFBldHJpLgogCistIElzc3VlICMyMTgxNTogQWNjZXB0IF0gY2hhcmFjdGVycyBpbiB0aGUgZGF0YSBwb3J0aW9uIG9mIGltYXAgcmVzcG9uc2VzLAorICBpbiBvcmRlciB0byBoYW5kbGUgdGhlIGZsYWdzIHdpdGggc3F1YXJlIGJyYWNrZXRzIGFjY2VwdGVkIGFuZCBwcm9kdWNlZAorICBieSBzZXJ2ZXJzIHN1Y2ggYXMgZ21haWwuCisKIC0gSXNzdWUgIzI1NDQ3OiBmaWxlaW5wdXQgbm93IHVzZXMgc3lzLnN0ZGluIGFzLWlzIGlmIGl0IGRvZXMgbm90IGhhdmUgYQogICBidWZmZXIgYXR0cmlidXRlIChyZXN0b3JlcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KS4KIAorLSBJc3N1ZSAjMjU5NzE6IE9wdGltaXplZCBjcmVhdGluZyBGcmFjdGlvbnMgZnJvbSBmbG9hdHMgYnkgMiB0aW1lcyBhbmQgZnJvbQorICBEZWNpbWFscyBieSAzIHRpbWVzLgorCistIElzc3VlICMyNTgwMjogRG9jdW1lbnQgYXMgZGVwcmVjYXRlZCB0aGUgcmVtYWluaW5nIGltcGxlbWVudGF0aW9ucyBvZgorICBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZSgpLgorCistIElzc3VlICMyNTkyODogQWRkIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpLgorCiAtIElzc3VlICMyNTQ0NzogQ29weWluZyB0aGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3Qgbm93IGFsd2F5cyB3b3JrcywKLSAgaW5kZXBlbmRlZGx5IGZyb20gdGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0IChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsCisgIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgdHlwZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwKICAgb2JqZWN0IHVuY2hhbmdlZCkuCiAKKy0gSXNzdWUgIzI1NzY4OiBIYXZlIHRoZSBmdW5jdGlvbnMgaW4gY29tcGlsZWFsbCByZXR1cm4gYm9vbGVhbnMgaW5zdGVhZCBvZgorICBpbnRzIGFuZCBhZGQgcHJvcGVyIGRvY3VtZW50YXRpb24gYW5kIHRlc3RzIGZvciB0aGUgcmV0dXJuIHZhbHVlcy4KKwogLSBJc3N1ZSAjMjQxMDM6IEZpeGVkIHBvc3NpYmxlIHVzZSBhZnRlciBmcmVlIGluIEVsZW1lbnRUcmVlLlhNTFB1bGxQYXJzZXIuCiAKIC0gSXNzdWUgIzI1ODYwOiBvcy5md2FsaygpIG5vIGxvbmdlciBza2lwcyByZW1haW5pbmcgZGlyZWN0b3JpZXMgd2hlbiBlcnJvcgpAQCAtMTAzOSw4ICsyMzQ1LDIyIEBACiAKIC0gSXNzdWUgIzI1OTE0OiBGaXhlZCBhbmQgc2ltcGxpZmllZCBPcmRlcmVkRGljdC5fX3NpemVvZl9fLgogCistIElzc3VlICMyNTg2OTogT3B0aW1pemVkIGRlZXBjb3B5aW5nIEVsZW1lbnRUcmVlOyBpdCBpcyBub3cgMjAgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTg3MzogT3B0aW1pemVkIGl0ZXJhdGluZyBFbGVtZW50VHJlZS4gIEl0ZXJhdGluZyBlbGVtZW50cworICBFbGVtZW50Lml0ZXIoKSBpcyBub3cgNDAlIGZhc3RlciwgaXRlcmF0aW5nIHRleHQgRWxlbWVudC5pdGVydGV4dCgpCisgIGlzIG5vdyB1cCB0byAyLjUgdGltZXMgZmFzdGVyLgorCiAtIElzc3VlICMyNTkwMjogRml4ZWQgdmFyaW91cyByZWZjb3VudCBpc3N1ZXMgaW4gRWxlbWVudFRyZWUgaXRlcmF0aW9uLgogCistIElzc3VlICMyMjIyNzogVGhlIFRhckZpbGUgaXRlcmF0b3IgaXMgcmVpbXBsZW1lbnRlZCB1c2luZyBnZW5lcmF0b3IuCisgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltcGxlciB0aGF0IHVzaW5nIGNsYXNzLgorCistIElzc3VlICMyNTYzODogT3B0aW1pemVkIEVsZW1lbnRUcmVlLml0ZXJwYXJzZSgpOyBpdCBpcyBub3cgMnggZmFzdGVyLgorICBPcHRpbWl6ZWQgRWxlbWVudFRyZWUgcGFyc2luZzsgaXQgaXMgbm93IDEwJSBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBkZXRlY3RpbmcgZXJyb3JzIGluIGJyb2tlbiBwaWNrbGUgZGF0YS4KKwogLSBJc3N1ZSAjMjU3MTc6IFJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW91ciBvZiB0b2xlcmF0aW5nIG1vc3QgZnN0YXQoKQogICBlcnJvcnMgd2hlbiBvcGVuaW5nIGZpbGVzLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGluIDMuNWExLCBhbmQgc3RvcHBlZAogICBhbm9ueW1vdXMgdGVtcG9yYXJ5IGZpbGVzIGZyb20gd29ya2luZyBpbiBzcGVjaWFsIGNhc2VzLgpAQCAtMTA1Miw2ICsyMzcyLDkgQEAKIC0gSXNzdWUgIzI1NzY0OiBJbiB0aGUgc3VicHJvY2VzcyBtb2R1bGUsIHByZXNlcnZlIGFueSBleGNlcHRpb24gY2F1c2VkIGJ5CiAgIGZvcmsoKSBmYWlsdXJlIHdoZW4gcHJlZXhlY19mbiBpcyB1c2VkLgogCistIElzc3VlICMyNTc3MTogVHdlYWsgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGZvciBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKQorICB3aGVuICdwYWNrYWdlJyBpc24ndCBzcGVjaWZpZWQgYnV0IG5lY2Vzc2FyeS4KKwogLSBJc3N1ZSAjNjQ3ODogX3N0cnB0aW1lJ3MgcmVnZXhwIGNhY2hlIG5vdyBpcyByZXNldCBhZnRlciBjaGFuZ2luZyB0aW1lem9uZQogICB3aXRoIHRpbWUudHpzZXQoKS4KIApAQCAtMTA3Myw2ICsyMzk2LDkgQEAKIC0gSXNzdWUgIzEwMTMxOiBGaXhlZCBkZWVwIGNvcHlpbmcgb2YgbWluaWRvbSBkb2N1bWVudHMuICBCYXNlZCBvbiBwYXRjaAogICBieSBNYXJpYW4gR2FuaXNpbi4KIAorLSBJc3N1ZSAjNzk5MDogZGlyKCkgb24gRWxlbWVudFRyZWUuRWxlbWVudCBub3cgbGlzdHMgcHJvcGVydGllczogInRhZyIsCisgICJ0ZXh0IiwgInRhaWwiIGFuZCAiYXR0cmliIi4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgorCiAtIElzc3VlICMyNTcyNTogRml4ZWQgYSByZWZlcmVuY2UgbGVhayBpbiBwaWNrbGUubG9hZHMoKSB3aGVuIHVucGlja2xpbmcKICAgaW52YWxpZCBkYXRhIGluY2x1ZGluZyB0dXBsZSBpbnN0cnVjdGlvbnMuCiAKQEAgLTEwODgsNiArMjQxNCwyMDMgQEAKIC0gSXNzdWUgIzI1NjI0OiBaaXBGaWxlIG5vdyBhbHdheXMgd3JpdGVzIGEgWklQX1NUT1JFRCBoZWFkZXIgZm9yIGRpcmVjdG9yeQogICBlbnRyaWVzLiAgUGF0Y2ggYnkgRGluZ3l1YW4gV2FuZy4KIAorLSBJc3N1ZSAjMjU2MjY6IENoYW5nZSB0aHJlZSB6bGliIGZ1bmN0aW9ucyB0byBhY2NlcHQgc2l6ZXMgdGhhdCBmaXQgaW4KKyAgUHlfc3NpemVfdCwgYnV0IGludGVybmFsbHkgY2FwIHRob3NlIHNpemVzIHRvIFVJTlRfTUFYLiAgVGhpcyByZXNvbHZlcyBhCisgIHJlZ3Jlc3Npb24gaW4gMy41IHdoZXJlIEd6aXBGaWxlLnJlYWQoKSBmYWlsZWQgdG8gcmVhZCBjaHVua3MgbGFyZ2VyIHRoYW4gMgorICBvciA0IEdpQi4gIFRoZSBjaGFuZ2UgYWZmZWN0cyB0aGUgemxpYi5EZWNvbXByZXNzLmRlY29tcHJlc3MoKSBtYXhfbGVuZ3RoCisgIHBhcmFtZXRlciwgdGhlIHpsaWIuZGVjb21wcmVzcygpIGJ1ZnNpemUgcGFyYW1ldGVyLCBhbmQgdGhlCisgIHpsaWIuRGVjb21wcmVzcy5mbHVzaCgpIGxlbmd0aCBwYXJhbWV0ZXIuCisKKy0gSXNzdWUgIzI1NTgzOiBBdm9pZCBpbmNvcnJlY3QgZXJyb3JzIHJhaXNlZCBieSBvcy5tYWtlZGlycyhleGlzdF9vaz1UcnVlKQorICB3aGVuIHRoZSBPUyBnaXZlcyBwcmlvcml0eSB0byBlcnJvcnMgc3VjaCBhcyBFQUNDRVMgb3ZlciBFRVhJU1QuCisKKy0gSXNzdWUgIzI1NTkzOiBDaGFuZ2Ugc2VtYW50aWNzIG9mIEV2ZW50TG9vcC5zdG9wKCkgaW4gYXN5bmNpby4KKworLSBJc3N1ZSAjNjk3MzogV2hlbiB3ZSBrbm93IGEgc3VicHJvY2Vzcy5Qb3BlbiBwcm9jZXNzIGhhcyBkaWVkLCBkbworICBub3QgYWxsb3cgdGhlIHNlbmRfc2lnbmFsKCksIHRlcm1pbmF0ZSgpLCBvciBraWxsKCkgbWV0aG9kcyB0byBkbworICBhbnl0aGluZyBhcyB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IHNpZ25hbCBhIGRpZmZlcmVudCBwcm9jZXNzLgorCistIElzc3VlICMyMzg4MzogQWRkZWQgbWlzc2luZyBBUElzIHRvIF9fYWxsX18gdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgQVBJcworICBmb3IgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiBjYWxlbmRhciwgY3N2LCBlbnVtLCBmaWxlaW5wdXQsIGZ0cGxpYiwgbG9nZ2luZywKKyAgb3B0cGFyc2UsIHRhcmZpbGUsIHRocmVhZGluZyBhbmQgd2F2ZS4gIEFsc28gYWRkZWQgYQorICB0ZXN0LnN1cHBvcnQuY2hlY2tfX2FsbF9fKCkgaGVscGVyLiAgUGF0Y2hlcyBieSBKYWNlayBLb8WCb2R6aWVqLCBNYXVybworICBTLiBNLiBSb2RyaWd1ZXMgYW5kIEpvZWwgVGFkZGVpLgorCistIElzc3VlICMyNTU5MDogSW4gdGhlIFJlYWRsaW5lIGNvbXBsZXRlciwgb25seSBjYWxsIGdldGF0dHIoKSBvbmNlIHBlcgorICBhdHRyaWJ1dGUuICBBbHNvIGNvbXBsZXRlIG5hbWVzIG9mIGF0dHJpYnV0ZXMgc3VjaCBhcyBwcm9wZXJ0aWVzIGFuZCBzbG90cworICB3aGljaCBhcmUgbGlzdGVkIGJ5IGRpcigpIGJ1dCBub3QgeWV0IGNyZWF0ZWQgb24gYW4gaW5zdGFuY2UuCisKKy0gSXNzdWUgIzI1NDk4OiBGaXggYSBjcmFzaCB3aGVuIGdhcmJhZ2UtY29sbGVjdGluZyBjdHlwZXMgb2JqZWN0cyBjcmVhdGVkCisgIGJ5IHdyYXBwaW5nIGEgbWVtb3J5dmlldy4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBtYWRlIGluIDMuNWExLiAgQmFzZWQKKyAgb24gcGF0Y2ggYnkgRXJ5a3N1bi4KKworLSBJc3N1ZSAjMjU1ODQ6IEFkZGVkICJlc2NhcGUiIHRvIHRoZSBfX2FsbF9fIGxpc3QgaW4gdGhlIGdsb2IgbW9kdWxlLgorCistIElzc3VlICMyNTU4NDogRml4ZWQgcmVjdXJzaXZlIGdsb2IoKSB3aXRoIHBhdHRlcm5zIHN0YXJ0aW5nIHdpdGggJ1wqXConLgorCistIElzc3VlICMyNTQ0NjogRml4IHJlZ3Jlc3Npb24gaW4gc210cGxpYidzIEFVVEggTE9HSU4gc3VwcG9ydC4KKworLSBJc3N1ZSAjMTgwMTA6IEZpeCB0aGUgcHlkb2Mgd2ViIHNlcnZlcidzIG1vZHVsZSBzZWFyY2ggZnVuY3Rpb24gdG8gaGFuZGxlCisgIGV4Y2VwdGlvbnMgZnJvbSBpbXBvcnRpbmcgcGFja2FnZXMuCisKKy0gSXNzdWUgIzI1NTU0OiBHb3QgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gcmVndWxhciBleHByZXNzaW9uIHBhcnNpbmcuCisKKy0gSXNzdWUgIzE4OTczOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUgbm93IHVzZXMgYXJncGFyc2UKKyAgaW5zdGVhZCBvZiBvcHRwYXJzZS4KKworLSBJc3N1ZSAjMjU1MTA6IGZpbGVpbnB1dC5GaWxlSW5wdXQucmVhZGxpbmUoKSBub3cgcmV0dXJucyBiJycgaW5zdGVhZCBvZiAnJworICBhdCB0aGUgZW5kIGlmIHRoZSBGaWxlSW5wdXQgd2FzIG9wZW5lZCB3aXRoIGJpbmFyeSBtb2RlLgorICBQYXRjaCBieSBSeW9zdWtlIEl0by4KKworLSBJc3N1ZSAjMjU1MDM6IEZpeGVkIGluc3BlY3QuZ2V0ZG9jKCkgZm9yIGluaGVyaXRlZCBkb2NzdHJpbmdzIG9mIHByb3BlcnRpZXMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEpvaG4gTWFyayBWYW5kZW5iZXJnLgorCistIElzc3VlICMyNTUxNTogQWx3YXlzIHVzZSBvcy51cmFuZG9tIGFzIGEgc291cmNlIG9mIHJhbmRvbW5lc3MgaW4gdXVpZC51dWlkNC4KKworLSBJc3N1ZSAjMjE4Mjc6IEZpeGVkIHRleHR3cmFwLmRlZGVudCgpIGZvciB0aGUgY2FzZSB3aGVuIGxhcmdlc3QgY29tbW9uCisgIHdoaXRlc3BhY2UgaXMgYSBzdWJzdHJpbmcgb2Ygc21hbGxlc3QgbGVhZGluZyB3aGl0ZXNwYWNlLgorICBCYXNlZCBvbiBwYXRjaCBieSBSb2JlcnQgTGkuCisKKy0gSXNzdWUgIzI1NDQ3OiBUaGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3RzIG5vdyBjYW4gYmUgY29waWVkIGFuZCBwaWNrbGVkCisgIChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIG9iamVjdCB1bmNoYW5nZWQpLgorCistIElzc3VlICMyNTM5MDogdHlwaW5nOiBEb24ndCBjcmFzaCBvbiBVbmlvbltzdHIsIFBhdHRlcm5dLgorCistIElzc3VlICMyNTQ0MTogYXN5bmNpbzogUmFpc2UgZXJyb3IgZnJvbSBkcmFpbigpIHdoZW4gc29ja2V0IGlzIGNsb3NlZC4KKworLSBJc3N1ZSAjMjU0MTA6IENsZWFuZWQgdXAgYW5kIGZpeGVkIG1pbm9yIGJ1Z3MgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZgorICBPcmRlcmVkRGljdC4KKworLSBJc3N1ZSAjMjU0MTE6IEltcHJvdmVkIFVuaWNvZGUgc3VwcG9ydCBpbiBTTVRQSGFuZGxlciB0aHJvdWdoIGJldHRlciB1c2Ugb2YKKyAgdGhlIGVtYWlsIHBhY2thZ2UuIFRoYW5rcyB0byB1c2VyIHNpbW9uMDQgZm9yIHRoZSBwYXRjaC4KKworLSBNb3ZlIHRoZSBpbXAgbW9kdWxlIGZyb20gYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIHRvIERlcHJlY2F0aW9uV2FybmluZy4KKworLSBJc3N1ZSAjMjU0MDc6IFJlbW92ZSBtZW50aW9ucyBvZiB0aGUgZm9ybWF0dGVyIG1vZHVsZSBiZWluZyByZW1vdmVkIGluCisgIFB5dGhvbiAzLjYuCisKKy0gSXNzdWUgIzI1NDA2OiBGaXhlZCBhIGJ1ZyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0Lm1vdmVfdG9fZW5kKCkKKyAgdGhhdCBjYXVzZWQgc2VnbWVudGF0aW9uIGZhdWx0IG9yIGhhbmcgaW4gaXRlcmF0aW5nIGFmdGVyIG1vdmluZyBzZXZlcmFsCisgIGl0ZW1zIHRvIHRoZSBzdGFydCBvZiBvcmRlcmVkIGRpY3QuCisKKy0gSXNzdWUgIzI1MzgyOiBwaWNrbGV0b29scy5kaXMoKSBub3cgb3V0cHV0cyBpbXBsaWNpdCBtZW1vIGluZGV4IGZvciB0aGUKKyAgTUVNT0laRSBvcGNvZGUuCisKKy0gSXNzdWUgIzI1MzU3OiBBZGQgYW4gb3B0aW9uYWwgbmV3bGluZSBwYXJhbWVyIHRvIGJpbmFzY2lpLmIyYV9iYXNlNjQoKS4KKyAgYmFzZTY0LmI2NGVuY29kZSgpIHVzZXMgaXQgdG8gYXZvaWQgYSBtZW1vcnkgY29weS4KKworLSBJc3N1ZSAjMjQxNjQ6IE9iamVjdHMgdGhhdCBuZWVkIGNhbGxpbmcgYGBfX25ld19fYGAgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cywKKyAgY2FuIG5vdyBiZSBwaWNrbGVkIHVzaW5nIHBpY2tsZSBwcm90b2NvbHMgb2xkZXIgdGhhbiBwcm90b2NvbCB2ZXJzaW9uIDQuCisKKy0gSXNzdWUgIzI1MzY0OiB6aXBmaWxlIG5vdyB3b3JrcyBpbiB0aHJlYWRzIGRpc2FibGVkIGJ1aWxkcy4KKworLSBJc3N1ZSAjMjUzMjg6IHNtdHBkJ3MgU01UUENoYW5uZWwgbm93IGNvcnJlY3RseSByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGJvdGgKKyAgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBhcmUgc2V0IHRvIHRydWUuCisKKy0gSXNzdWUgIzE2MDk5OiBSb2JvdEZpbGVQYXJzZXIgbm93IHN1cHBvcnRzIENyYXdsLWRlbGF5IGFuZCBSZXF1ZXN0LXJhdGUKKyAgZXh0ZW5zaW9ucy4gIFBhdGNoIGJ5IE5pa29sYXkgQm9nb3ljaGV2LgorCistIElzc3VlICMyNTMxNjogZGlzdHV0aWxzIHJhaXNlcyBPU0Vycm9yIGluc3RlYWQgb2YgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgorICB3aGVuIE1TVkMgaXMgbm90IGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMjUzODA6IEZpeGVkIHByb3RvY29sIGZvciB0aGUgU1RBQ0tfR0xPQkFMIG9wY29kZSBpbgorICBwaWNrbGV0b29scy5vcGNvZGVzLgorCistIElzc3VlICMyMzk3MjogVXBkYXRlcyBhc3luY2lvIGRhdGFncmFtIGNyZWF0ZSBtZXRob2QgYWxsb3dpbmcgcmV1c2Vwb3J0CisgIGFuZCByZXVzZWFkZHIgc29ja2V0IG9wdGlvbnMgdG8gYmUgc2V0IHByaW9yIHRvIGJpbmRpbmcgdGhlIHNvY2tldC4KKyAgTWlycm9yaW5nIHRoZSBleGlzdGluZyBhc3luY2lvIGNyZWF0ZV9zZXJ2ZXIgbWV0aG9kIHRoZSByZXVzZWFkZHIgb3B0aW9uCisgIGZvciBkYXRhZ3JhbSBzb2NrZXRzIGRlZmF1bHRzIHRvIFRydWUgaWYgdGhlIE8vUyBpcyAncG9zaXgnIChleGNlcHQgaWYgdGhlCisgIHBsYXRmb3JtIGlzIEN5Z3dpbikuIFBhdGNoIGJ5IENocmlzIExhd3MuCisKKy0gSXNzdWUgIzI1MzA0OiBBZGQgYXN5bmNpby5ydW5fY29yb3V0aW5lX3RocmVhZHNhZmUoKS4gIFRoaXMgbGV0cyB5b3UKKyAgc3VibWl0IGEgY29yb3V0aW5lIHRvIGEgbG9vcCBmcm9tIGFub3RoZXIgdGhyZWFkLCByZXR1cm5pbmcgYQorICBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLiAgQnkgVmluY2VudCBNaWNoZWwuCisKKy0gSXNzdWUgIzI1MjMyOiBGaXggQ0dJUmVxdWVzdEhhbmRsZXIgdG8gc3BsaXQgdGhlIHF1ZXJ5IGZyb20gdGhlIFVSTCBhdCB0aGUKKyAgZmlyc3QgcXVlc3Rpb24gbWFyayAoPykgcmF0aGVyIHRoYW4gdGhlIGxhc3QuIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI0NjU3OiBQcmV2ZW50IENHSVJlcXVlc3RIYW5kbGVyIGZyb20gY29sbGFwc2luZyBzbGFzaGVzIGluIHRoZQorICBxdWVyeSBwYXJ0IG9mIHRoZSBVUkwgYXMgaWYgaXQgd2VyZSBhIHBhdGguIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1Mjg3OiBEb24ndCBhZGQgY3J5cHQuTUVUSE9EX0NSWVBUIHRvIGNyeXB0Lm1ldGhvZHMgaWYgaXQncyBub3QKKyAgc3VwcG9ydGVkLiBDaGVjayBpZiBpdCBpcyBzdXBwb3J0ZWQsIGl0IG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIE9wZW5CU0QgZm9yCisgIGV4YW1wbGUuCisKKy0gSXNzdWUgIzIzNjAwOiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHR6aW5mby5mcm9tdXRjKCkgd2FzIHJldHVybmluZworICB3cm9uZyByZXN1bHRzIGluIHNvbWUgY2FzZXMuCisKKy0gSXNzdWUgIzI1MjAzOiBGYWlsZWQgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcl9kZWxpbXMoKSBubyBsb25nZXIgbGVmdCB0aGUKKyAgbW9kdWxlIGluIGluY29uc2lzdGVudCBzdGF0ZS4KKworLSBJc3N1ZSAjMjUwMTE6IHJsY29tcGxldGVyIG5vdyBvbWl0cyBwcml2YXRlIGFuZCBzcGVjaWFsIGF0dHJpYnV0ZSBuYW1lcyB1bmxlc3MKKyAgdGhlIHByZWZpeCBzdGFydHMgd2l0aCB1bmRlcnNjb3Jlcy4KKworLSBJc3N1ZSAjMjUyMDk6IHJsY29tcGxldGVyIG5vdyBjYW4gYWRkIGEgc3BhY2Ugb3IgYSBjb2xvbiBhZnRlciBjb21wbGV0ZWQKKyAga2V5d29yZC4KKworLSBJc3N1ZSAjMjIyNDE6IHRpbWV6b25lLnV0YyBuYW1lIGlzIG5vdyBwbGFpbiAnVVRDJywgbm90ICdVVEMtMDA6MDAnLgorCistIElzc3VlICMyMzUxNzogZnJvbXRpbWVzdGFtcCgpIGFuZCB1dGNmcm9tdGltZXN0YW1wKCkgbWV0aG9kcyBvZgorICBkYXRldGltZS5kYXRldGltZSBub3cgcm91bmQgbWljcm9zZWNvbmRzIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvCisgIG5lYXJlc3QgZXZlbiBpbnRlZ2VyIChST1VORF9IQUxGX0VWRU4pLCBhcyByb3VuZChmbG9hdCksIGluc3RlYWQgb2Ygcm91bmRpbmcKKyAgdG93YXJkcyAtSW5maW5pdHkgKFJPVU5EX0ZMT09SKS4KKworLSBJc3N1ZSAjMjM1NTI6IFRpbWVpdCBub3cgd2FybnMgd2hlbiB0aGVyZSBpcyBzdWJzdGFudGlhbCAoNHgpIHZhcmlhbmNlCisgIGJldHdlZW4gYmVzdCBhbmQgd29yc3QgdGltZXMuIFBhdGNoIGZyb20gU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjQ2MzM6IHNpdGUtcGFja2FnZXMvUkVBRE1FIC0+IFJFQURNRS50eHQuCisKKy0gSXNzdWUgIzI0ODc5OiBoZWxwKCkgYW5kIHB5ZG9jIGNhbiBub3cgbGlzdCBuYW1lZCB0dXBsZSBmaWVsZHMgaW4gdGhlCisgIG9yZGVyIHRoZXkgd2VyZSBkZWZpbmVkIHJhdGhlciB0aGFuIGFscGhhYmV0aWNhbGx5LiAgVGhlIG9yZGVyaW5nIGlzCisgIGRldGVybWluZWQgYnkgdGhlIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisKKy0gSXNzdWUgIzI0ODc0OiBJbXByb3ZlIHNwZWVkIG9mIGl0ZXJ0b29scy5jeWNsZSgpIGFuZCBtYWtlIGl0cworICBwaWNrbGUgbW9yZSBjb21wYWN0LgorCistIEZpeCBjcmFzaCBpbiBpdGVydG9vbHMuY3ljbGUuX19zZXRzdGF0ZV9fKCkgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgd2Fzbid0CisgIGEgbGlzdC4KKworLSBJc3N1ZSAjMjAwNTk6IHVybGxpYi5wYXJzZSByYWlzZXMgVmFsdWVFcnJvciBvbiBhbGwgaW52YWxpZCBwb3J0cy4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjQzNjA6IEltcHJvdmUgX19yZXByX18gb2YgYXJncGFyc2UuTmFtZXNwYWNlKCkgZm9yIGludmFsaWQKKyAgaWRlbnRpZmllcnMuICBQYXRjaCBieSBNYXR0aGlhcyBCdXNzb25uaWVyLgorCistIElzc3VlICMyMzQyNjogcnVuX3NldHVwIHdhcyBicm9rZW4gaW4gZGlzdHV0aWxzLgorICBQYXRjaCBmcm9tIEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCistIElzc3VlICMxMzkzODogMnRvMyBjb252ZXJ0cyBTdHJpbmdUeXBlcyB0byBhIHR1cGxlLiBQYXRjaCBmcm9tIE1hcmsgSGFtbW9uZC4KKworLSBJc3N1ZSAjMjA5MTogb3BlbigpIGFjY2VwdGVkIGEgJ1UnIG1vZGUgc3RyaW5nIGNvbnRhaW5pbmcgJysnLCBidXQgJ1UnIGNhbgorICBvbmx5IGJlIHVzZWQgd2l0aCAncicuIFBhdGNoIGZyb20gSmVmZiBCYWxvZ2ggYW5kIEpvaG4gTydDb25ub3IuCisKKy0gSXNzdWUgIzg1ODU6IGltcHJvdmVkIHRlc3RzIGZvciB6aXBpbXBvcnRlcjIuIFBhdGNoIGZyb20gTWFyayBMYXdyZW5jZS4KKworLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCisgIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCisKKy0gSXNzdWUgIzI0NDI2OiBGYXN0IHNlYXJjaGluZyBvcHRpbWl6YXRpb24gaW4gcmVndWxhciBleHByZXNzaW9ucyBub3cgd29ya3MKKyAgZm9yIHBhdHRlcm5zIHRoYXQgc3RhcnRzIHdpdGggY2FwdHVyaW5nIGdyb3Vwcy4gIEZhc3Qgc2VhcmNoaW5nIG9wdGltaXphdGlvbgorICBub3cgY2FuJ3QgYmUgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLgorCistIElzc3VlICMyMzY2MTogdW5pdHRlc3QubW9jayBzaWRlX2VmZmVjdHMgY2FuIG5vdyBiZSBleGNlcHRpb25zIGFnYWluLiBUaGlzCisgIHdhcyBhIHJlZ3Jlc3Npb24gdnMgUHl0aG9uIDMuNC4gUGF0Y2ggZnJvbSBJZ25hY2lvIFJvc3NpCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgZGVwcmVjYXRlZCBpbnNwZWN0LmdldG1vZHVsZWluZm8gZnVuY3Rpb24uCisKKy0gSXNzdWUgIzI1NTc4OiBGaXggKGFub3RoZXIpIG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VyKCkuCisKKy0gSXNzdWUgIzI1NTMwOiBEaXNhYmxlIHRoZSB2dWxuZXJhYmxlIFNTTHYzIHByb3RvY29sIGJ5IGRlZmF1bHQgd2hlbiBjcmVhdGluZworICBzc2wuU1NMQ29udGV4dC4KKworLSBJc3N1ZSAjMjU1Njk6IEZpeCBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KKworLSBJc3N1ZSAjMjU0NzE6IFNvY2tldHMgcmV0dXJuZWQgZnJvbSBhY2NlcHQoKSBzaG91bGRuJ3QgYXBwZWFyIHRvIGJlCisgIG5vbmJsb2NraW5nLgorCistIElzc3VlICMyNTMxOTogV2hlbiB0aHJlYWRpbmcuRXZlbnQgaXMgcmVpbml0aWFsaXplZCwgdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uCisgIHNob3VsZCB1c2UgYSByZWd1bGFyIGxvY2sgcmF0aGVyIHRoYW4gYSByZWN1cnNpdmUgbG9jay4KKwogLSBTa2lwIGdldGFkZHJpbmZvIGlmIGhvc3QgaXMgYWxyZWFkeSByZXNvbHZlZC4KICAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCiAKQEAgLTExMDcsNTMgKzI2MzAsOSBAQAogCiAtIElzc3VlICMyNzA0MTogYXN5bmNpbzogQWRkIGxvb3AuY3JlYXRlX2Z1dHVyZSBtZXRob2QKIAotLSBJc3N1ZSAjMjcyMjM6IGFzeW5jaW86IEZpeCBfcmVhZF9yZWFkeSBhbmQgX3dyaXRlX3JlYWR5IHRvIHJlc3BlY3QKLSAgX2Nvbm5fbG9zdC4KLSAgUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KLQotLSBJc3N1ZSAjMjI5NzA6IGFzeW5jaW86IEZpeCBpbmNvbnNpc3RlbmN5IGNhbmNlbGxpbmcgQ29uZGl0aW9uLndhaXQuCi0gIFBhdGNoIGJ5IERhdmlkIENvbGVzLgotCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCi0gIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAotICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKLSAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KLQotLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCi0gIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgotICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCi0gIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0Ci0KLS0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKLSAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KLQotLSBJc3N1ZSAjMjcxMTc6IE1ha2UgY29sb3JpemVyIGh0ZXN0IGFuZCB0dXJ0bGVkZW1vIHdvcmsgd2l0aCBkYXJrIHRoZW1lcy4KLSAgTW92ZSBjb2RlIGZvciBjb25maWd1cmluZyB0ZXh0IHdpZGdldCBjb2xvcnMgdG8gYSBuZXcgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgotICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgotCi0tIElzc3VlICMyMTkzOTogQWRkIHRlc3QgZm9yIElETEUncyBwZXJjb2xhdG9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzIxNjc2OiBBZGQgdGVzdCBmb3IgSURMRSdzIHJlcGxhY2UgZGlhbG9nLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgotCi0tIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIElETEUncyB1bmRvIGRlbGVnYXRvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyIC4KLQotLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCi0KLS0gSXNzdWUgIzIzOTc3OiBBZGQgbW9yZSBhc3NlcnRzIHRvIHRlc3RfZGVsZWdhdG9yLgotCiAtIElzc3VlICMyMDY0MDogQWRkIHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ0hlbHBTb3VyY2VFZGl0LgogICBQYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCiAKQEAgLTExNjcsMTQgKzI2NDYsMTAzIEBACiAgIE1BUksgaW4gUkVBRE1FLnR4dCBhbmQgb3BlbiB0aGlzIGFuZCBORVdTLnR4dCB3aXRoICdhc2NpaScuCiAgIFJlLWVuY29kZSBDUkVESVRTLnR4dCB0byB1dGYtOCBhbmQgb3BlbiBpdCB3aXRoICd1dGYtOCcuCiAKKy0gSXNzdWUgIzE1MzQ4OiBTdG9wIHRoZSBkZWJ1Z2dlciBlbmdpbmUgKG5vcm1hbGx5IGluIGEgdXNlciBwcm9jZXNzKQorICBiZWZvcmUgY2xvc2luZyB0aGUgZGVidWdnZXIgd2luZG93IChydW5uaW5nIGluIHRoZSBJRExFIHByb2Nlc3MpLgorICBUaGlzIHByZXZlbnRzIHRoZSBSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCisKKy0gSXNzdWUgIzI0NDU1OiBQcmV2ZW50IElETEUgZnJvbSBoYW5naW5nIHdoZW4gYSkgY2xvc2luZyB0aGUgc2hlbGwgd2hpbGUgdGhlCisgIGRlYnVnZ2VyIGlzIGFjdGl2ZSAoMTUzNDcpOyBiKSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aXRoIHRoZSBbWF0gYnV0dG9uCisgICgxNTM0OCk7IGFuZCBjKSBhY3RpdmF0aW5nIHRoZSBkZWJ1Z2dlciB3aGVuIGFscmVhZHkgYWN0aXZlICgyNDQ1NSkuCisgIFRoZSBwYXRjaCBieSBNYXJrIFJvc2VtYW4gZG9lcyB0aGlzIGJ5IG1ha2luZyB0d28gY2hhbmdlcy4KKyAgMS4gU3VzcGVuZCBhbmQgcmVzdW1lIHRoZSBndWkuaW50ZXJhY3Rpb24gbWV0aG9kIHdpdGggdGhlIHRjbCB2d2FpdAorICBtZWNoYW5pc20gaW50ZW5kZWQgZm9yIHRoaXMgcHVycG9zZSAoaW5zdGVhZCBvZiByb290Lm1haW5sb29wICYgLnF1aXQpLgorICAyLiBJbiBndWkucnVuLCBhbGxvdyBhbnkgZXhpc3RpbmcgaW50ZXJhY3Rpb24gdG8gdGVybWluYXRlIGZpcnN0LgorCistIENoYW5nZSAnVGhlIHByb2dyYW0nIHRvICdZb3VyIHByb2dyYW0nIGluIGFuIElETEUgJ2tpbGwgcHJvZ3JhbT8nIG1lc3NhZ2UKKyAgdG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQgdGhlIHByb2dyYW0gcmVmZXJyZWQgdG8gaXMgdGhlIGN1cnJlbnRseSBydW5uaW5nCisgIHVzZXIgcHJvZ3JhbSwgbm90IElETEUgaXRzZWxmLgorCistIElzc3VlICMyNDc1MDogSW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgSURMRSBlZGl0b3Igd2luZG93IHN0YXR1cyBiYXIuCisgIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjUzMTM6IENoYW5nZSB0aGUgaGFuZGxpbmcgb2YgbmV3IGJ1aWx0LWluIHRleHQgY29sb3IgdGhlbWVzIHRvIGJldHRlcgorICBhZGRyZXNzIHRoZSBjb21wYXRpYmlsaXR5IHByb2JsZW0gaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb24gb2YgSURMRSBEYXJrLgorICBDb25zaXN0ZW50bHkgdXNlIHRoZSByZXZpc2VkIGlkbGVDb25mLkN1cnJlbnRUaGVtZSBldmVyeXdoZXJlIGluIGlkbGVsaWIuCisKKy0gSXNzdWUgIzI0NzgyOiBFeHRlbnNpb24gY29uZmlndXJhdGlvbiBpcyBub3cgYSB0YWIgaW4gdGhlIElETEUgUHJlZmVyZW5jZXMKKyAgZGlhbG9nIHJhdGhlciB0aGFuIGEgc2VwYXJhdGUgZGlhbG9nLiAgVGhlIGZvcm1lciB0YWJzIGFyZSBub3cgYSBzb3J0ZWQKKyAgbGlzdC4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjI3MjY6IFJlLWFjdGl2YXRlIHRoZSBjb25maWcgZGlhbG9nIGhlbHAgYnV0dG9uIHdpdGggc29tZSBjb250ZW50CisgIGFib3V0IHRoZSBvdGhlciBidXR0b25zIGFuZCB0aGUgbmV3IElETEUgRGFyayB0aGVtZS4KKworLSBJc3N1ZSAjMjQ4MjA6IElETEUgbm93IGhhcyBhbiAnSURMRSBEYXJrJyBidWlsdC1pbiB0ZXh0IGNvbG9yIHRoZW1lLgorICBJdCBpcyBtb3JlIG9yIGxlc3MgSURMRSBDbGFzc2ljIGludmVydGVkLCB3aXRoIGEgY29iYWx0IGJsdWUgYmFja2dyb3VuZC4KKyAgU3RyaW5ncywgY29tbWVudHMsIGtleXdvcmRzLCAuLi4gYXJlIHN0aWxsIGdyZWVuLCByZWQsIG9yYW5nZSwgLi4uIC4KKyAgVG8gdXNlIGl0IHdpdGggSURMRXMgcmVsZWFzZWQgYmVmb3JlIE5vdmVtYmVyIDIwMTUsIGhpdCB0aGUKKyAgJ1NhdmUgYXMgTmV3IEN1c3RvbSBUaGVtZScgYnV0dG9uIGFuZCBlbnRlciBhIG5ldyBuYW1lLAorICBzdWNoIGFzICdDdXN0b20gRGFyaycuICBUaGUgY3VzdG9tIHRoZW1lIHdpbGwgd29yayB3aXRoIGFueSBJRExFCisgIHJlbGVhc2UsIGFuZCBjYW4gYmUgbW9kaWZpZWQuCisKKy0gSXNzdWUgIzI1MjI0OiBSRUFETUUudHh0IGlzIG5vdyBhbiBpZGxlbGliIGluZGV4IGZvciBJRExFIGRldmVsb3BlcnMgYW5kCisgIGN1cmlvdXMgdXNlcnMuICBUaGUgcHJldmlvdXMgdXNlciBjb250ZW50IGlzIG5vdyBpbiB0aGUgSURMRSBkb2MgY2hhcHRlci4KKyAgJ0lETEUnIG5vdyBtZWFucyAnSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBhbmQgTGVhcm5pbmcgRW52aXJvbm1lbnQnLgorCistIElzc3VlICMyNDgyMDogVXNlcnMgY2FuIG5vdyBzZXQgYnJlYWtwb2ludCBjb2xvcnMgaW4KKyAgU2V0dGluZ3MgLT4gQ3VzdG9tIEhpZ2hsaWdodGluZy4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ5NzI6IEluYWN0aXZlIHNlbGVjdGlvbiBiYWNrZ3JvdW5kIG5vdyBtYXRjaGVzIGFjdGl2ZSBzZWxlY3Rpb24KKyAgYmFja2dyb3VuZCwgYXMgY29uZmlndXJlZCBieSB1c2Vycywgb24gYWxsIHN5c3RlbXMuICBGb3VuZCBpdGVtcyBhcmUgbm93CisgIGFsd2F5cyBoaWdobGlnaHRlZCBvbiBXaW5kb3dzLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0NTcwOiBJZGxlOiBtYWtlIGNhbGx0aXAgYW5kIGNvbXBsZXRpb24gYm94ZXMgYXBwZWFyIG9uIE1hY3MKKyAgYWZmZWN0ZWQgYnkgYSB0ayByZWdyZXNzaW9uLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0OTg4OiBJZGxlIFNjcm9sbGVkTGlzdCBjb250ZXh0IG1lbnVzICh1c2VkIGluIGRlYnVnZ2VyKQorICBub3cgd29yayBvbiBNYWMgQXF1YS4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ4MDE6IE1ha2UgcmlnaHQtY2xpY2sgZm9yIGNvbnRleHQgbWVudSB3b3JrIG9uIE1hYyBBcXVhLgorICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MTczOiBBc3NvY2lhdGUgdGtpbnRlciBtZXNzYWdlYm94ZXMgd2l0aCBhIHNwZWNpZmljIHdpZGdldC4KKyAgRm9yIE1hYyBPU1gsIG1ha2UgdGhlbSBhICdzaGVldCcuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MTk4OiBFbmhhbmNlIHRoZSBpbml0aWFsIGh0bWwgdmlld2VyIG5vdyB1c2VkIGZvciBJZGxlIEhlbHAuCisgICogUHJvcGVybHkgaW5kZW50IGZpeGVkLXBpdGNoIHRleHQgKHBhdGNoIGJ5IE1hcmsgUm9zZW1hbikuCisgICogR2l2ZSBjb2RlIHNuaXBwZXQgYSB2ZXJ5IFNwaGlueC1saWtlIGxpZ2h0IGJsdWVpc2gtZ3JheSBiYWNrZ3JvdW5kLgorICAqIFJlLXVzZSBpbml0aWFsIHdpZHRoIGFuZCBoZWlnaHQgc2V0IGJ5IHVzZXJzIGZvciBzaGVsbCBhbmQgZWRpdG9yLgorICAqIFdoZW4gdGhlIFRhYmxlIG9mIENvbnRlbnRzIChUT0MpIG1lbnUgaXMgdXNlZCwgcHV0IHRoZSBzZWN0aW9uIGhlYWRlcgorICBhdCB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uCisKKy0gSXNzdWUgIzI1MjI1OiBDb25kZW5zZSBhbmQgcmV3cml0ZSBJZGxlIGRvYyBzZWN0aW9uIG9uIHRleHQgY29sb3JzLgorCistIElzc3VlICMyMTk5NTogRXhwbGFpbiBzb21lIGRpZmZlcmVuY2VzIGJldHdlZW4gSURMRSBhbmQgY29uc29sZSBQeXRob24uCisKKy0gSXNzdWUgIzIyODIwOiBFeHBsYWluIG5lZWQgZm9yICpwcmludCogd2hlbiBydW5uaW5nIGZpbGUgZnJvbSBJZGxlIGVkaXRvci4KKworLSBJc3N1ZSAjMjUyMjQ6IERvYzogYXVnbWVudCBJZGxlIGZlYXR1cmUgbGlzdCBhbmQgbm8tc3VicHJvY2VzcyBzZWN0aW9uLgorCistIElzc3VlICMyNTIxOTogVXBkYXRlIGRvYyBmb3IgSWRsZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4KKyAgU29tZSB3ZXJlIG1pc3NpbmcgYW5kIG5vdGVzIHdlcmUgbm90IGNvcnJlY3QuCisKKy0gSXNzdWUgIzI0ODYxOiBNb3N0IG9mIGlkbGVsaWIgaXMgcHJpdmF0ZSBhbmQgc3ViamVjdCB0byBjaGFuZ2UuCisgIFVzZSBpZGxlaWIuaWRsZS4qIHRvIHN0YXJ0IElkbGUuIFNlZSBpZGxlbGliLl9faW5pdF9fLl9fZG9jX18uCisKKy0gSXNzdWUgIzI1MTk5OiBJZGxlOiBhZGQgc3luY2hyb25pemF0aW9uIGNvbW1lbnRzIGZvciBmdXR1cmUgbWFpbnRhaW5lcnMuCisKKy0gSXNzdWUgIzE2ODkzOiBSZXBsYWNlIGhlbHAudHh0IHdpdGggaGVscC5odG1sIGZvciBJZGxlIGRvYyBkaXNwbGF5LgorICBUaGUgbmV3IGlkbGVsaWIvaGVscC5odG1sIGlzIHJzdHJpcHBlZCBEb2MvYnVpbGQvaHRtbC9saWJyYXJ5L2lkbGUuaHRtbC4KKyAgSXQgbG9va3MgYmV0dGVyIHRoYW4gaGVscC50eHQgYW5kIHdpbGwgYmV0dGVyIGRvY3VtZW50IElkbGUgYXMgcmVsZWFzZWQuCisgIFRoZSB0a2ludGVyIGh0bWwgdmlld2VyIHRoYXQgd29ya3MgZm9yIHRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBSb3NlIFJvc2VtYW4uCisgIFRoZSBub3cgdW51c2VkIEVkaXRvcldpbmRvdy5IZWxwRGlhbG9nIGNsYXNzIGFuZCBoZWx0LnR4dCBmaWxlIGFyZSBkZXByZWNhdGVkLgorCistIElzc3VlICMyNDE5OTogRGVwcmVjYXRlIHVudXNlZCBpZGxlbGliLmlkbGV2ZXIgd2l0aCBwb3NzaWJsZSByZW1vdmFsIGluIDMuNi4KKworLSBJc3N1ZSAjMjQ3OTA6IFJlbW92ZSBleHRyYW5lb3VzIGNvZGUgKHdoaWNoIGFsc28gY3JlYXRlIDIgJiAzIGNvbmZsaWN0cykuCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTk0ODk6IE1vdmVkIHRoZSBzZWFyY2ggYm94IGZyb20gdGhlIHNpZGViYXIgdG8gdGhlIGhlYWRlciBhbmQgZm9vdGVyCi0gIG9mIGVhY2ggcGFnZS4gIFBhdGNoIGJ5IEFtbWFyIEFza2FyLgotCi0tIElzc3VlICMyNDEzNjogRG9jdW1lbnQgdGhlIG5ldyBQRVAgNDQ4IHVucGFja2luZyBzeW50YXggb2YgMy41LgotCiAtIElzc3VlICMyNjczNjogVXNlZCBIVFRQUyBmb3IgZXh0ZXJuYWwgbGlua3MgaW4gdGhlIGRvY3VtZW50YXRpb24gaWYgcG9zc2libGUuCiAKIC0gSXNzdWUgIzY5NTM6IFJld29yayB0aGUgUmVhZGxpbmUgbW9kdWxlIGRvY3VtZW50YXRpb24gdG8gZ3JvdXAgcmVsYXRlZApAQCAtMTE4Myw4ICsyNzUxLDggQEAKIAogLSBJc3N1ZSAjMjM2MDY6IEFkZHMgbm90ZSB0byBjdHlwZXMgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgY2RsbC5tc3ZjcnQuCiAKLS0gSXNzdWUgIzI1NTAwOiBGaXggZG9jdW1lbnRhdGlvbiB0byBub3QgY2xhaW0gdGhhdCBfX2ltcG9ydF9fIGlzIHNlYXJjaGVkIGZvcgotICBpbiB0aGUgZ2xvYmFsIHNjb3BlLgorLSBJc3N1ZSAjMjQ5NTI6IENsYXJpZnkgdGhlIGRlZmF1bHQgc2l6ZSBhcmd1bWVudCBvZiBzdGFja19zaXplKCkgaW4KKyAgdGhlICJ0aHJlYWRpbmciIGFuZCAiX3RocmVhZCIgbW9kdWxlcy4gUGF0Y2ggZnJvbSBNYXR0aXAuCiAKIC0gSXNzdWUgIzI2MDE0OiBVcGRhdGUgMy54IHBhY2thZ2luZyBkb2N1bWVudGF0aW9uOgogICAqICJTZWUgYWxzbyIgbGlua3MgdG8gdGhlIG5ldyBkb2NzIGFyZSBub3cgcHJvdmlkZWQgaW4gdGhlIGxlZ2FjeSBwYWdlcwpAQCAtMTE5Niw2ICsyNzY0LDkgQEAKIC0gSXNzdWUgIzIxOTE2OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHR1cnRsZSBtb2R1bGUuICBQYXRjaCBieSBpbmdyaWQsCiAgIEdyZWdvcnkgTG95c2UgYW5kIEplbGxlIFppamxzdHJhLgogCistIElzc3VlICMyNjI5NTogV2hlbiB1c2luZyAicHl0aG9uMyAtbSB0ZXN0IC0tdGVzdGRpcj1URVNURElSIiwgcmVncnRlc3QKKyAgZG9lc24ndCBhZGQgInRlc3QuIiBwcmVmaXggdG8gdGVzdCBtb2R1bGUgbmFtZXMuCisKIC0gSXNzdWUgIzI2NTIzOiBUaGUgbXVsdGlwcm9jZXNzaW5nIHRocmVhZCBwb29sIChtdWx0aXByb2Nlc3NpbmcuZHVtbXkuUG9vbCkKICAgd2FzIHVudGVzdGVkLgogCkBAIC0xMjA0LDMxICsyNzc1LDUwIEBACiAtIElzc3VlICMyNjMyNTogQWRkZWQgdGVzdC5zdXBwb3J0LmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKSB0byBjaGVjayB0aGF0CiAgIG5vIFJlc291cmNlV2FybmluZyBpcyBlbWl0dGVkLgogCi0tIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2Ugc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQuICBUaGlzCistIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2UgaXRzIGludGVybmFsIGxvY2FsIHNlcnZlciBtb3JlLiAgVGhpcwogICBhdm9pZHMgcmVseWluZyBvbiBzdm4ucHl0aG9uLm9yZywgd2hpY2ggcmVjZW50bHkgY2hhbmdlZCByb290IGNlcnRpZmljYXRlLgogCiAtIElzc3VlICMyNTYxNjogVGVzdHMgZm9yIE9yZGVyZWREaWN0IGFyZSBleHRyYWN0ZWQgZnJvbSB0ZXN0X2NvbGxlY3Rpb25zCiAgIGludG8gc2VwYXJhdGUgZmlsZSB0ZXN0X29yZGVyZWRfZGljdC4KIAorLSBJc3N1ZSAjMjU0NDk6IEFkZGVkIHRlc3RzIGZvciBPcmRlcmVkRGljdCBzdWJjbGFzc2VzLgorCistIElzc3VlICMyNTE4ODogQWRkIC1QLy0tcGdvIHRvIHRlc3QucmVncnRlc3QgdG8gc3VwcHJlc3MgZXJyb3Igb3V0cHV0IHdoZW4KKyAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHB1cnBvc2VzIG9mIGEgUEdPIGJ1aWxkLiBJbml0aWFsIHBhdGNoIGJ5CisgIEFsZWNzYW5kcnUgUGF0cmFzY3UuCisKKy0gSXNzdWUgIzIyODA2OiBBZGQgYGBweXRob24gLW0gdGVzdCAtLWxpc3QtdGVzdHNgYCBjb21tYW5kIHRvIGxpc3QgdGVzdHMuCisKKy0gSXNzdWUgIzE4MTc0OiBgYHB5dGhvbiAtbSB0ZXN0IC0taHVudHJsZWFrcyAuLi5gYCBub3cgYWxzbyBjaGVja3MgZm9yIGxlYWsgb2YKKyAgZmlsZSBkZXNjcmlwdG9ycy4gUGF0Y2ggd3JpdHRlbiBieSBSaWNoYXJkIE91ZGtlcmsuCisKKy0gSXNzdWUgIzI1MjYwOiBGaXggYGBweXRob24gLW0gdGVzdCAtLWNvdmVyYWdlYGAgb24gV2luZG93cy4gUmVtb3ZlIHRoZQorICBsaXN0IG9mIGlnbm9yZWQgZGlyZWN0b3JpZXMuCisKKy0gYGBQQ2J1aWxkXHJ0LmJhdGBgIG5vdyBhY2NlcHRzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHBhc3MgYWxvbmcKKyAgdG8gcmVncnRlc3QucHkuICBQcmV2aW91c2x5IHRoZXJlIHdhcyBhIGxpbWl0IG9mIDkuCisKIC0gSXNzdWUgIzI2NTgzOiBTa2lwIHRlc3RfdGltZXN0YW1wX292ZXJmbG93IGluIHRlc3RfaW1wb3J0IGlmIGJ5dGVjb2RlCiAgIGZpbGVzIGNhbm5vdCBiZSB3cml0dGVuLgogCiBCdWlsZAogLS0tLS0KIAorLSBJc3N1ZSAjMjEyNzc6IERvbid0IHRyeSB0byBsaW5rIF9jdHlwZXMgd2l0aCBhIGZmaV9jb252ZW5pZW5jZSBsaWJyYXJ5LgorCiAtIElzc3VlICMyNjg4NDogRml4IGxpbmtpbmcgZXh0ZW5zaW9uIG1vZHVsZXMgZm9yIGNyb3NzIGJ1aWxkcy4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKKy0gSXNzdWUgIzI2OTMyOiBGaXhlZCBzdXBwb3J0IG9mIFJUTERfKiBjb25zdGFudHMgZGVmaW5lZCBhcyBlbnVtIHZhbHVlcywKKyAgbm90IHZpYSBtYWNyb3MgKGluIHBhcnRpY3VsYXIgb24gQW5kcm9pZCkuICBQYXRjaCBieSBDaGkgSHN1YW4gWWVuLgorCiAtIElzc3VlICMyMjM1OTogRGlzYWJsZSB0aGUgcnVsZXMgZm9yIHJ1bm5pbmcgX2ZyZWV6ZV9pbXBvcnRsaWIgYW5kIHBnZW4gd2hlbgogICBjcm9zcy1jb21waWxpbmcuICBUaGUgb3V0cHV0IG9mIHRoZXNlIHByb2dyYW1zIGlzIG5vcm1hbGx5IHNhdmVkIHdpdGggdGhlCiAgIHNvdXJjZSBjb2RlIGFueXdheSwgYW5kIGlzIHN0aWxsIHJlZ2VuZXJhdGVkIHdoZW4gZG9pbmcgYSBuYXRpdmUgYnVpbGQuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCi0tIElzc3VlICMyNzIyOTogRml4IHRoZSBjcm9zcy1jb21waWxpbmcgcGdlbiBydWxlIGZvciBpbi10cmVlIGJ1aWxkcy4gIFBhdGNoCi0gIGJ5IFhhdmllciBkZSBHYXllLgotCiAtIElzc3VlICMyMTY2ODogTGluayBhdWRpb29wLCBfZGF0ZXRpbWUsIF9jdHlwZXNfdGVzdCBtb2R1bGVzIHRvIGxpYm0sCi0gIGV4Y2VwdCBvbiBNYWMgT1MgWC4gUGF0Y2ggd3JpdHRlbiBieSBYYXZpZXIgZGUgR2F5ZS4KKyAgZXhjZXB0IG9uIE1hYyBPUyBYLiBQYXRjaCB3cml0dGVuIGJ5IENoaSBIc3VhbiBZZW4uCiAKIC0gSXNzdWUgIzI1NzAyOiBBIC0td2l0aC1sdG8gY29uZmlndXJlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0aGF0IHdpbGwKICAgZW5hYmxlIGxpbmsgdGltZSBvcHRpbWl6YXRpb25zIGF0IGJ1aWxkIHRpbWUgZHVyaW5nIGEgbWFrZSBwcm9maWxlLW9wdC4KQEAgLTEyNDcsMjIgKzI4MzcsMjQgQEAKIAogLSBJc3N1ZSAjMjY0NjU6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmcuCiAKLS0gSXNzdWUgIzI0NDIxOiBDb21waWxlIE1vZHVsZXMvX21hdGguYyBvbmNlLCBiZWZvcmUgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KLSAgUHJldmlvdXNseSBpdCBjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcwotICB3ZXJlIGNvbmN1cnJlbnQuCi0KIC0gSXNzdWUgIzI1MzQ4OiBBZGRlZCBgYC0tcGdvYGAgYW5kIGBgLS1wZ28tam9iYGAgYXJndW1lbnRzIHRvCiAgIGBgUENidWlsZFxidWlsZC5iYXRgYCBmb3IgYnVpbGRpbmcgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGUKLSAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIG5vdyBkZXByZWNhdGVkLCBhbmQgc2ltcGx5IGNhbGxzCi0gIGBgUENidWlsZFxidWlsZC5iYXQgLS1wZ28gJSpgYC4KKyAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIHJlbW92ZWQuCiAKIC0gSXNzdWUgIzI1ODI3OiBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBJQ0MgdG8gYGBjb25maWd1cmVgYCwgaW5jbHVkaW5nCiAgIGEgbmV3IGBgLS13aXRoLWljY2BgIGZsYWcuCiAKIC0gSXNzdWUgIzI1Njk2OiBGaXggaW5zdGFsbGF0aW9uIG9mIFB5dGhvbiBvbiBVTklYIHdpdGggbWFrZSAtajkuCiAKLS0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKLSAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yaC4KKy0gSXNzdWUgIzI0OTg2OiBJdCBpcyBub3cgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIG9uIFdpbmRvd3Mgd2l0aG91dCBlcnJvcnMKKyAgd2hlbiBleHRlcm5hbCBsaWJyYXJpZXMgYXJlIG5vdCBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzI0NDIxOiBDb21waWxlIE1vZHVsZXMvX21hdGguYyBvbmNlLCBiZWZvcmUgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KKyAgUHJldmlvdXNseSBpdCBjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcworICB3ZXJlIGNvbmN1cnJlbnQuCisKKy0gSXNzdWUgIzI2NDY1OiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKKyAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yZy4KIAogLSBJc3N1ZSAjMjYyNjg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmYuCiAKQEAgLTEyODksNiArMjg4MSw4IEBACiAtIElzc3VlICMyNjA2NTogRXhjbHVkZXMgdmVudiBmcm9tIGxpYnJhcnkgd2hlbiBnZW5lcmF0aW5nIGVtYmVkZGFibGUKICAgZGlzdHJvLgogCistIElzc3VlICMyNTAyMjogUmVtb3ZlZCB2ZXJ5IG91dGRhdGVkIFBDL2V4YW1wbGVfbnQvIGRpcmVjdG9yeS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKQEAgLTEzMDUsMTEgKzI4OTksMjEgQEAKIAogLSBJc3N1ZSAjMjYzMTY6IEZpeCB2YXJpYWJsZSBuYW1lIHR5cG8gaW4gQXJndW1lbnQgQ2xpbmljLgogCi1NaXNjCi0tLS0tCistIElzc3VlICMyNTQ0MDogRml4IG91dHB1dCBvZiBweXRob24tY29uZmlnIC0tZXh0ZW5zaW9uLXN1ZmZpeC4KIAotLSBJc3N1ZSAjMTc1MDAsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1OiBSZW1vdmUKLSAgdW51c2VkIGFuZCBvdXRkYXRlZCBpY29ucy4KKy0gSXNzdWUgIzI1MTU0OiBUaGUgcHl2ZW52IHNjcmlwdCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZgorICBgcHl0aG9uMyAtbSB2ZW52YC4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI2MzEyOiBTeXN0ZW1FcnJvciBpcyBub3cgcmFpc2VkIGluIGFsbCBwcm9ncmFtbWluZyBidWdzIHdpdGggdXNpbmcKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkuICBSdW50aW1lRXJyb3IgZGlkIHJhaXNlZCBiZWZvcmUgaW4gc29tZQorICBwcm9ncmFtbWluZyBidWdzLgorCistIElzc3VlICMyNjE5ODogVmFsdWVFcnJvciBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YgVHlwZUVycm9yIG9uIGJ1ZmZlcgorICBvdmVyZmxvdyBpbiBwYXJzaW5nICJlcyMiIGFuZCAiZXQjIiBmb3JtYXQgdW5pdHMuICBTeXN0ZW1FcnJvciBpcyBub3cgcmFpc2VkCisgIGluc3RlYWQgb2YgVHlwZUVycm9yIG9uIHByb2dyYW1taWNhbCBlcnJvciBpbiBwYXJzaW5nIGZvcm1hdCBzdHJpbmcuCiAKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjEgZmluYWw/CkBAIC0xNjIxLDcgKzMyMjUsNyBAQAogLSBJc3N1ZSAjMjQ3NzQ6IEZpeCBkb2NzdHJpbmcgaW4gaHR0cC5zZXJ2ZXIudGVzdC4gUGF0Y2ggZnJvbSBDaGl1LUhzaWFuZyBIc3UuCiAKIC0gSXNzdWUgIzIxMTU5OiBJbXByb3ZlIG1lc3NhZ2UgaW4gY29uZmlncGFyc2VyLkludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IuCi0gIFBhdGNoIGZyb20gxYF1a2FzeiBMYW5nYS4KKyAgUGF0Y2ggZnJvbSDvv70/dWthc3ogTGFuZ2EuCiAKIC0gSXNzdWUgIzIwMzYyOiBIb25vdXIgVGVzdENhc2UubG9uZ01lc3NhZ2UgY29ycmVjdGx5IGluIGFzc2VydFJlZ2V4LgogICBQYXRjaCBmcm9tIElsaWEgS3VyZW5rb3YuCkBAIC0xNzMxLDkgKzMzMzUsNiBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyMjU1ODogQWRkIHJlbWFpbmluZyBkb2MgbGlua3MgdG8gc291cmNlIGNvZGUgZm9yIFB5dGhvbi1jb2RlZCBtb2R1bGVzLgotICBQYXRjaCBieSBZb25pIExhdmkuCi0KIC0gSXNzdWUgIzEyMDY3OiBSZXdyaXRlIENvbXBhcmlzb25zIHNlY3Rpb24gaW4gdGhlIEV4cHJlc3Npb25zIGNoYXB0ZXIgb2YgdGhlCiAgIGxhbmd1YWdlIHJlZmVyZW5jZS4gU29tZSBvZiB0aGUgZGV0YWlscyBvZiBjb21wYXJpbmcgbWl4ZWQgdHlwZXMgd2VyZQogICBpbmNvcnJlY3Qgb3IgYW1iaWd1b3VzLiBOb3RJbXBsZW1lbnRlZCBpcyBvbmx5IHJlbGV2YW50IGF0IGEgbG93ZXIgbGV2ZWwKQEAgLTIwNjMsMTIgKzM2NjQsNiBAQAogCiAtIElzc3VlICMyNDYzMTogRml4ZWQgcmVncmVzc2lvbiBpbiB0aGUgdGltZWl0IG1vZHVsZSB3aXRoIG11bHRpbGluZSBzZXR1cC4KIAotLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCi0gIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCi0KLS0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKLSAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKLQogLSBJc3N1ZSAjMjQ2MDg6IGNodW5rLkNodW5rLnJlYWQoKSBub3cgYWx3YXlzIHJldHVybnMgYnl0ZXMsIG5vdCBzdHIuCiAKIC0gSXNzdWUgIzE4Njg0OiBGaXhlZCByZWFkaW5nIG91dCBvZiB0aGUgYnVmZmVyIGluIHRoZSByZSBtb2R1bGUuCkBAIC0yMDc5LDYgKzM2NzQsOSBAQAogLSBJc3N1ZSAjMTUwMTQ6IFNNVFAuYXV0aCgpIGFuZCBTTVRQLmxvZ2luKCkgbm93IHN1cHBvcnQgUkZDIDQ5NTQncyBvcHRpb25hbAogICBpbml0aWFsLXJlc3BvbnNlIGFyZ3VtZW50IHRvIHRoZSBTTVRQIEFVVEggY29tbWFuZC4KIAorLSBJc3N1ZSAjNjU0OTogUmVtb3ZlIGh5cGhlbiBmcm9tIHR0ay5TdHlsZSgpLmVsZW1lbnQgb3B0aW9ucy4gIE9ubHkgcmV0dXJuIHJlc3VsdAorICBmcm9tIHR0ay5TdHlsZSgpLmNvbmZpZ3VyZSBpZiBhIHJlc3VsdCB3YXMgZ2VuZXJhdGVkIG9yIGEgcXVlcnkgc3VibWl0dGVkLgorCiAtIElzc3VlICMyNDY2OTogRml4IGluc3BlY3QuZ2V0c291cmNlKCkgZm9yICdhc3luYyBkZWYnIGZ1bmN0aW9ucy4KICAgUGF0Y2ggYnkgS2FpIEdyb25lci4KIApAQCAtMjA5MCw3ICszNjg4LDYgQEAKIC0gSXNzdWUgIzI0NjAzOiBVcGRhdGUgV2luZG93cyBidWlsZHMgYW5kIE9TIFggMTAuNSBpbnN0YWxsZXIgdG8gdXNlIE9wZW5TU0wKICAgMS4wLjJkLgogCi0KIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGJldGEgMz8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMjI1MSw2ICszODQ4LDkgQEAKIC0gSXNzdWUgIzI0MjY4OiBQRVAgNDg5OiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgogICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgogCistIElzc3VlICMyMzM1OTogT3B0aW1pemUgc2V0IG9iamVjdCBpbnRlcm5hbHMgYnkgc3BlY2lhbGl6aW5nIHRoZQorICBoYXNoIHRhYmxlIHNlYXJjaCBpbnRvIGEgbG9va3VwIGZ1bmN0aW9uIGFuZCBhbiBpbnNlcnQgZnVuY3Rpb24uCisKIC0gSXNzdWUgIzIzOTU1OiBBZGQgcHl2ZW52LmNmZyBvcHRpb24gdG8gc3VwcHJlc3MgcmVnaXN0cnkvZW52aXJvbm1lbnQKICAgbG9va3VwIGZvciBnZW5lcmF0aW5nIHN5cy5wYXRoIG9uIFdpbmRvd3MuCiAKQEAgLTIzNzEsOCArMzk3MSw4IEBACiAtIElzc3VlICMxMzIyOiBwbGF0Zm9ybS5kaXN0KCkgYW5kIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUKICAgbm93IGRlcHJlY2F0ZWQuICBJbml0aWFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KIAotLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbgotICBub3cgaXMgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgorLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbiBub3cgaXMKKyAgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgogCiAtIElzc3VlICMyNDA2NDogUHJvcGVydHkoKSBkb2NzdHJpbmdzIGFyZSBub3cgd3JpdGVhYmxlLgogICAoUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4pCkBAIC0yNzkzLDggKzQzOTMsOCBAQAogICB3cml0ZXIgZmFpbGVkIGluIEJ1ZmZlcmVkUldQYWlyLmNsb3NlKCkuCiAKIC0gSXNzdWUgIzIzNjIyOiBVbmtub3duIGVzY2FwZXMgaW4gcmVndWxhciBleHByZXNzaW9ucyB0aGF0IGNvbnNpc3Qgb2YgYGAnXCdgYAotICBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluCi0gIFB5dGhvbiAzLjYuCisgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4KKyAgaW4gUHl0aG9uIDMuNi4KIAogLSBJc3N1ZSAjMjM2NzE6IHN0cmluZy5UZW1wbGF0ZSBub3cgYWxsb3dzIHNwZWNpZnlpbmcgdGhlICJzZWxmIiBwYXJhbWV0ZXIgYXMKICAgYSBrZXl3b3JkIGFyZ3VtZW50LiAgc3RyaW5nLkZvcm1hdHRlciBub3cgYWxsb3dzIHNwZWNpZnlpbmcgdGhlICJzZWxmIiBhbmQKQEAgLTM1NTMsNyArNTE1Myw3IEBACiAgIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCiAKIC0gSXNzdWUgIzE3MjkzOiB1dWlkLmdldG5vZGUoKSBub3cgZGV0ZXJtaW5lcyBNQUMgYWRkcmVzcyBvbiBBSVggdXNpbmcgbmV0c3RhdC4KLSAgQmFzZWQgb24gcGF0Y2ggYnkgQWl2YXJzIEthbHbEgW5zLgorICBCYXNlZCBvbiBwYXRjaCBieSBBaXZhcnMgS2Fsdu+/vT9ucy4KIAogLSBJc3N1ZSAjMjI3Njk6IEZpeGVkIHR0ay5UcmVldmlldy50YWdfaGFzKCkgd2hlbiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCiAKQEAgLTU5NTksNiArNzU1OSw5IEBACiAKIC0gSXNzdWUgIzE5MzY5OiBPcHRpbWl6ZWQgdGhlIHVzYWdlIG9mIF9fbGVuZ3RoX2hpbnRfXygpLgogCistIElzc3VlICMyODAyNjogUmFpc2UgSW1wb3J0RXJyb3Igd2hlbiBleGVjX21vZHVsZSgpIGV4aXN0cyBidXQKKyAgY3JlYXRlX21vZHVsZSgpIGlzIG1pc3NpbmcuCisKIC0gSXNzdWUgIzE4NjAzOiBFbnN1cmUgdGhhdCBQeU9TX215c3RyaWNtcCBhbmQgUHlPU19teXN0cm5pY21wIGFyZSBpbiB0aGUKICAgUHl0aG9uIGV4ZWN1dGFibGUgYW5kIG5vdCByZW1vdmVkIGJ5IHRoZSBsaW5rZXIncyBvcHRpbWl6ZXIuCiAKQEAgLTY4NDYsNiArODQ0OSw5IEBACiAtIElzc3VlICMxNjgwOTogVGtpbnRlcidzIHNwbGl0bGlzdCgpIGFuZCBzcGxpdCgpIG1ldGhvZHMgbm93IGFjY2VwdCBUY2xfT2JqCiAgIGFyZ3VtZW50LgogCistIElzc3VlICMxNzIxMTogWWllbGQgYSBuYW1lZHR1cGxlIGluIHBrZ3V0aWwuCisgIFBhdGNoIGJ5IFJhbWNoYW5kcmEgQXB0ZS4KKwogLSBJc3N1ZSAjMTgzMjQ6IHNldF9wYXlsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBiaW5hcnkgaW5wdXQuICBUaGlzIGFsc28KICAgc3VwZXJzZWRlcyB0aGUgcHJldmlvdXMgZml4ZXMgZm9yICMxNDM2MCwgIzE3MTcsIGFuZCAjMTY1NjQuCiAKQEAgLTY4NTUsNiArODQ2MSw4IEBACiAtIElzc3VlICMxNzExOTogRml4ZWQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBwcm9jZXNzaW5nIGxhcmdlIHN0cmluZ3MgYW5kIHR1cGxlcwogICBpbiB0aGUgdGtpbnRlciBtb2R1bGUuCiAKKy0gSXNzdWUgIzE1MzUyOiBSZWJ1aWxkIGZyb3plbiBtb2R1bGVzIHdoZW4gbWFyc2hhbC5jIGlzIGNoYW5nZWQuCisKIC0gSXNzdWUgIzE4NzQ3OiBSZS1zZWVkIE9wZW5TU0wncyBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgYWZ0ZXIgZm9yay4KICAgQSBwdGhyZWFkX2F0Zm9yaygpIHBhcmVudCBoYW5kbGVyIGlzIHVzZWQgdG8gc2VlZCB0aGUgUFJORyB3aXRoIHBpZCwgdGltZQogICBhbmQgc29tZSBzdGFjayBkYXRhLgpAQCAtNzA2Miw2ICs4NjcwLDkgQEAKIC0gSXNzdWUgIzE4MTM3OiBEZXRlY3QgaW50ZWdlciBvdmVyZmxvdyBvbiBwcmVjaXNpb24gaW4gZmxvYXQuX19mb3JtYXRfXygpCiAgIGFuZCBjb21wbGV4Ll9fZm9ybWF0X18oKS4KIAorLSBJc3N1ZSAjMTU3Njc6IEludHJvZHVjZSBNb2R1bGVOb3RGb3VuZEVycm9yIHdoaWNoIGlzIHJhaXNlZCB3aGVuIGEgbW9kdWxlCisgIGNvdWxkIG5vdCBiZSBmb3VuZC4KKwogLSBJc3N1ZSAjMTgxODM6IEZpeCB2YXJpb3VzIHVuaWNvZGUgb3BlcmF0aW9ucyBvbiBzdHJpbmdzIHdpdGggbGFyZ2UgdW5pY29kZQogICBjb2RlcG9pbnRzLgogCkBAIC04OTgyLDYgKzEwNTkzLDEwIEBACiAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIChhbmQgdGh1cyBieSBleHRlbnNpb24KICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUoKSBhbmQgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeCgpKS4KIAorLSBJc3N1ZSAjMTU3Njc6IEFkZGVkIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoKS4KKworLSBQeUVycl9TZXRJbXBvcnRFcnJvcigpIG5vdyBzZXRzIFR5cGVFcnJvciB3aGVuIGl0cyBtc2cgYXJndW1lbnQgaXMgc2V0LgorCiAtIElzc3VlICM5MzY5OiBUaGUgdHlwZXMgb2YgYGNoYXIqYCBhcmd1bWVudHMgb2YgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKCkgYW5kCiAgIFB5T2JqZWN0X0NhbGxNZXRob2QoKSBub3cgY2hhbmdlZCB0byBgY29uc3QgY2hhcipgLiAgQmFzZWQgb24gcGF0Y2hlcyBieQogICBKw7ZyZyBNw7xsbGVyIGFuZCBMYXJzIEJ1aXRpbmNrLgpkaWZmIC0tZ2l0IGEvTWlzYy9SRUFETUUudmFsZ3JpbmQgYi9NaXNjL1JFQURNRS52YWxncmluZAppbmRleCBiNWE5YTMyLi45MDhmMTM3IDEwMDY0NAotLS0gYS9NaXNjL1JFQURNRS52YWxncmluZAorKysgYi9NaXNjL1JFQURNRS52YWxncmluZApAQCAtMiw2ICsyLDkgQEAKIFB5dGhvbi4gIFZhbGdyaW5kIGlzIHVzZWQgcGVyaW9kaWNhbGx5IGJ5IFB5dGhvbiBkZXZlbG9wZXJzIHRvIHRyeQogdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBtZW1vcnkgbGVha3Mgb3IgaW52YWxpZCBtZW1vcnkgcmVhZHMvd3JpdGVzLgogCitVUERBVEU6IFB5dGhvbiAzLjYgbm93IHN1cHBvcnRzIFBZVEhPTk1BTExPQz1tYWxsb2MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hpY2gKK2NhbiBiZSB1c2VkIHRvIGZvcmNlIHRoZSB1c2FnZSBvZiB0aGUgbWFsbG9jKCkgYWxsb2NhdG9yIG9mIHRoZSBDIGxpYnJhcnkuCisKIElmIHlvdSBkb24ndCB3YW50IHRvIHJlYWQgYWJvdXQgdGhlIGRldGFpbHMgb2YgdXNpbmcgVmFsZ3JpbmQsIHRoZXJlCiBhcmUgc3RpbGwgdHdvIHRoaW5ncyB5b3UgbXVzdCBkbyB0byBzdXBwcmVzcyB0aGUgd2FybmluZ3MuICBGaXJzdCwKIHlvdSBtdXN0IHVzZSBhIHN1cHByZXNzaW9ucyBmaWxlLiAgT25lIGlzIHN1cHBsaWVkIGluCmRpZmYgLS1naXQgYS9NaXNjL1NwZWNpYWxCdWlsZHMudHh0IGIvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dAppbmRleCAzMDA0MTc0Li44MmZhMjNlIDEwMDY0NAotLS0gYS9NaXNjL1NwZWNpYWxCdWlsZHMudHh0CisrKyBiL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQKQEAgLTY1LDkgKzY1LDkgQEAKICAgICBzaW1wbHkgYnkgdmlydHVlIG9mIGJlaW5nIGluIHRoZSBsaXN0LgogCiBlbnZ2YXIgUFlUSE9ORFVNUFJFRlMKLSAgICBJZiB0aGlzIGVudnZhciBleGlzdHMsIFB5X0ZpbmFsaXplKCkgYXJyYW5nZXMgdG8gcHJpbnQgYSBsaXN0IG9mIGFsbAorICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgUHlfRmluYWxpemVFeCgpIGFycmFuZ2VzIHRvIHByaW50IGEgbGlzdCBvZiBhbGwKICAgICBzdGlsbC1saXZlIGhlYXAgb2JqZWN0cy4gIFRoaXMgaXMgcHJpbnRlZCB0d2ljZSwgaW4gZGlmZmVyZW50IGZvcm1hdHMsCi0gICAgYmVmb3JlIGFuZCBhZnRlciBQeV9GaW5hbGl6ZSBoYXMgY2xlYW5lZCB1cCBldmVyeXRoaW5nIGl0IGNhbiBjbGVhbiB1cC4gIFRoZQorICAgIGJlZm9yZSBhbmQgYWZ0ZXIgUHlfRmluYWxpemVFeCBoYXMgY2xlYW5lZCB1cCBldmVyeXRoaW5nIGl0IGNhbiBjbGVhbiB1cC4gIFRoZQogICAgIGZpcnN0IG91dHB1dCBibG9jayBwcm9kdWNlcyB0aGUgcmVwcigpIG9mIGVhY2ggb2JqZWN0IHNvIGlzIG1vcmUKICAgICBpbmZvcm1hdGl2ZTsgaG93ZXZlciwgYSBsb3Qgb2Ygc3R1ZmYgZGVzdGluZWQgdG8gZGllIGlzIHN0aWxsIGFsaXZlIHRoZW4uCiAgICAgVGhlIHNlY29uZCBvdXRwdXQgYmxvY2sgaXMgbXVjaCBoYXJkZXIgdG8gd29yayB3aXRoIChyZXByKCkgY2FuJ3QgYmUgaW52b2tlZApAQCAtMTQ0LDcgKzE0NCw3IEBACiAKIGVudnZhciBQWVRIT05NQUxMT0NTVEFUUwogICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgYSByZXBvcnQgb2YgcHltYWxsb2Mgc3VtbWFyeSBzdGF0aXN0aWNzIGlzIHByaW50ZWQgdG8KLSAgICBzdGRlcnIgd2hlbmV2ZXIgYSBuZXcgYXJlbmEgaXMgYWxsb2NhdGVkLCBhbmQgYWxzbyBieSBQeV9GaW5hbGl6ZSgpLgorICAgIHN0ZGVyciB3aGVuZXZlciBhIG5ldyBhcmVuYSBpcyBhbGxvY2F0ZWQsIGFuZCBhbHNvIGJ5IFB5X0ZpbmFsaXplRXgoKS4KIAogQ2hhbmdlZCBpbiAyLjU6ICBUaGUgbnVtYmVyIG9mIGV4dHJhIGJ5dGVzIGFsbG9jYXRlZCBpcyA0KnNpemVvZihzaXplX3QpLgogQmVmb3JlIGl0IHdhcyAxNiBvbiBhbGwgYm94ZXMsIHJlZmxlY3RpbmcgdGhhdCBQeXRob24gY291bGRuJ3QgbWFrZSB1c2Ugb2YKQEAgLTE3OSw3ICsxNzksNyBAQAogICAgICAqLwogICAgIGludCB0cF9tYXhhbGxvYzsKIAotQWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGNvZGUga2VlcHMgdGhlc2UgY291bnRzIHVwIHRvIGRhdGUuICBQeV9GaW5hbGl6ZSgpCitBbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gY29kZSBrZWVwcyB0aGVzZSBjb3VudHMgdXAgdG8gZGF0ZS4gIFB5X0ZpbmFsaXplRXgoKQogZGlzcGxheXMgYSBzdW1tYXJ5IG9mIHRoZSBpbmZvIHJldHVybmVkIGJ5IHN5cy5nZXRjb3VudHMoKSAoc2VlIGJlbG93KSwgYWxvbmcKIHdpdGggYXNzb3J0ZWQgb3RoZXIgc3BlY2lhbCBhbGxvY2F0aW9uIGNvdW50cyAobGlrZSB0aGUgbnVtYmVyIG9mIHR1cGxlCiBhbGxvY2F0aW9ucyBzYXRpc2ZpZWQgYnkgYSB0dXBsZSBmcmVlLWxpc3QsIHRoZSBudW1iZXIgb2YgMS1jaGFyYWN0ZXIgc3RyaW5ncwpAQCAtMjM0LDI5ICsyMzQsMyBAQAogbnVtYmVyIG9mIGZ1bmN0aW9uIGNhbGxzIG1hZGUuICBJdCBrZWVwcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGFib3V0IHdoYXQga2luZCBvZgogb2JqZWN0IHdhcyBjYWxsZWQgYW5kIHdoZXRoZXIgdGhlIGNhbGwgaGl0IGFueSBvZiB0aGUgc3BlY2lhbCBmYXN0IHBhdGhzIGluIHRoZQogY29kZS4KLQotCi1XSVRIX1RTQwotLS0tLS0tLS0KLQotU3VwZXItbG93bGV2ZWwgcHJvZmlsaW5nIG9mIHRoZSBpbnRlcnByZXRlci4gIFdoZW4gZW5hYmxlZCwgdGhlIHN5cyBtb2R1bGUgZ3Jvd3MKLWEgbmV3IGZ1bmN0aW9uOgotCi1zZXR0c2NkdW1wKGJvb2wpCi0gICAgSWYgdHJ1ZSwgdGVsbCB0aGUgUHl0aG9uIGludGVycHJldGVyIHRvIGR1bXAgVk0gbWVhc3VyZW1lbnRzIHRvIHN0ZGVyci4gIElmCi0gICAgZmFsc2UsIHR1cm4gb2ZmIGR1bXAuICBUaGUgbWVhc3VyZW1lbnRzIGFyZSBiYXNlZCBvbiB0aGUgcHJvY2Vzc29yJ3MKLSAgICB0aW1lLXN0YW1wIGNvdW50ZXIuCi0KLVRoaXMgYnVpbGQgb3B0aW9uIHJlcXVpcmVzIGEgc21hbGwgYW1vdW50IG9mIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuICBDdXJyZW50bHkKLXRoaXMgY29kZSBpcyBwcmVzZW50IGZvciBsaW51eC94ODYgYW5kIGFueSBQb3dlclBDIHBsYXRmb3JtIHRoYXQgdXNlcyBHQ0MKLShpLmUuIE9TIFggYW5kIGxpbnV4L3BwYykuCi0KLU9uIHRoZSBQb3dlclBDIHRoZSByYXRlIGF0IHdoaWNoIHRoZSB0aW1lIGJhc2UgcmVnaXN0ZXIgaXMgaW5jcmVtZW50ZWQgaXMgbm90Ci1kZWZpbmVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhdGlvbiwgc28geW91J2xsIG5lZWQgdG8gZmluZCB0aGUgbWFudWFsIGZvcgoteW91ciBzcGVjaWZpYyBwcm9jZXNzb3IuICBGb3IgdGhlIDc1MENYLCA3NTBDWGUgYW5kIDc1MEZYIChhbGwgc29sZCBhcyB0aGUgRzMpCi13ZSBmaW5kOgotCi0gICAgVGhlIHRpbWUgYmFzZSBjb3VudGVyIGlzIGNsb2NrZWQgYXQgYSBmcmVxdWVuY3kgdGhhdCBpcyBvbmUtZm91cnRoIHRoYXQgb2YKLSAgICB0aGUgYnVzIGNsb2NrLgotCi1UaGlzIGJ1aWxkIGlzIGVuYWJsZWQgYnkgdGhlIC0td2l0aC10c2MgZmxhZyB0byBjb25maWd1cmUuCmRpZmYgLS1naXQgYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMgYi9NaXNjL2NvdmVyaXR5X21vZGVsLmMKaW5kZXggNzQ5ZjJmMC4uMWFlNjE3OSAxMDA2NDQKLS0tIGEvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCisrKyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwpAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBhc3NlcnQob3ApIC8qIGVtcHR5ICovCiB0eXBlZGVmIGludCBzZGlnaXQ7CiB0eXBlZGVmIGxvbmcgUHlfc3NpemVfdDsKLXR5cGVkZWYgbG9uZyBsb25nIFBZX0xPTkdfTE9ORzsKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgd2NoYXJfdDsKIHR5cGVkZWYgc3RydWN0IHt9IFB5T2JqZWN0OwogdHlwZWRlZiBzdHJ1Y3Qge30gZ3JhbW1hcjsKQEAgLTYzLDcgKzYyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyBpdmFsKQorUHlPYmplY3QgKlB5TG9uZ19Gcm9tTG9uZ0xvbmcobG9uZyBsb25nIGl2YWwpCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylpdmFsKTsKIH0KQEAgLTk0LDcgKzkzLDcgQEAKIH0KIAogLyogUGFyc2VyL3BnZW5tYWluLmMgKi8KLWdyYW1tYXIgKmdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpCitncmFtbWFyICpnZXRncmFtbWFyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogICAgIGdyYW1tYXIgKmc7CiAgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2lua19fKGZpbGVuYW1lKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuY29uZmlnLmluIGIvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KaW5kZXggYWRhYzAzMC4uNjQ1MDUyOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KKysrIGIvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KQEAgLTYsOCArNiw1IEBACiAjIFRocmVhZGluZwogQFVTRV9USFJFQURfTU9EVUxFQF90aHJlYWQgX3RocmVhZG1vZHVsZS5jCiAKLSMgVGhlIHNpZ25hbCBtb2R1bGUKLUBVU0VfU0lHTkFMX01PRFVMRUBfc2lnbmFsIHNpZ25hbG1vZHVsZS5jCi0KICMgVGhlIHJlc3Qgb2YgdGhlIG1vZHVsZXMgcHJldmlvdXNseSBsaXN0ZWQgaW4gdGhpcyBmaWxlIGFyZSBidWlsdAogIyBieSB0aGUgc2V0dXAucHkgc2NyaXB0IGluIFB5dGhvbiAyLjEgYW5kIGxhdGVyLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5kaXN0IGIvTW9kdWxlcy9TZXR1cC5kaXN0CmluZGV4IDA2YmE2YWQuLjhiODdmYzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuZGlzdAorKysgYi9Nb2R1bGVzL1NldHVwLmRpc3QKQEAgLTExNyw2ICsxMTcsNyBAQAogX2NvbGxlY3Rpb25zIF9jb2xsZWN0aW9uc21vZHVsZS5jICMgQ29udGFpbmVyIHR5cGVzCiBpdGVydG9vbHMgaXRlcnRvb2xzbW9kdWxlLmMgICAgIyBGdW5jdGlvbnMgY3JlYXRpbmcgaXRlcmF0b3JzIGZvciBlZmZpY2llbnQgbG9vcGluZwogYXRleGl0IGF0ZXhpdG1vZHVsZS5jICAgICAgIyBSZWdpc3RlciBmdW5jdGlvbnMgdG8gYmUgcnVuIGF0IGludGVycHJldGVyLXNodXRkb3duCitfc2lnbmFsIHNpZ25hbG1vZHVsZS5jCiBfc3RhdCBfc3RhdC5jCQkJIyBzdGF0LmggaW50ZXJmYWNlCiB0aW1lIHRpbWVtb2R1bGUuYwkjIC1sbSAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCiAKQEAgLTE4MCw2ICsxODEsNyBAQAogI19kYXRldGltZSBfZGF0ZXRpbWVtb2R1bGUuYwkjIGRhdGV0aW1lIGFjY2VsZXJhdG9yCiAjX2Jpc2VjdCBfYmlzZWN0bW9kdWxlLmMJIyBCaXNlY3Rpb24gYWxnb3JpdGhtcwogI19oZWFwcSBfaGVhcHFtb2R1bGUuYwkjIEhlYXAgcXVldWUgYWxnb3JpdGhtCisjX2FzeW5jaW8gX2FzeW5jaW9tb2R1bGUuYyAgIyBGYXN0IGFzeW5jaW8gRnV0dXJlCiAKICN1bmljb2RlZGF0YSB1bmljb2RlZGF0YS5jICAgICMgc3RhdGljIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlCiAKQEAgLTI0OSw2ICsyNTEsOCBAQAogI19zaGEyNTYgc2hhMjU2bW9kdWxlLmMKICNfc2hhNTEyIHNoYTUxMm1vZHVsZS5jCiAKKyMgX2JsYWtlIG1vZHVsZQorI19ibGFrZTIgX2JsYWtlMi9ibGFrZTJtb2R1bGUuYyBfYmxha2UyL2JsYWtlMmJfaW1wbC5jIF9ibGFrZTIvYmxha2Uyc19pbXBsLmMKIAogIyBUaGUgX3RraW50ZXIgbW9kdWxlLgogIwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYXN5bmNpb21vZHVsZS5jIGIvTW9kdWxlcy9fYXN5bmNpb21vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZGQzN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19hc3luY2lvbW9kdWxlLmMKQEAgLTAsMCArMSwyNDYwIEBACisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisKKworLypbY2xpbmljIGlucHV0XQorbW9kdWxlIF9hc3luY2lvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04ZmQxNzg2MmFhOTg5YzY5XSovCisKKworLyogaWRlbnRpZmllcnMgdXNlZCBmcm9tIHNvbWUgZnVuY3Rpb25zICovCitfUHlfSURFTlRJRklFUihhZGRfZG9uZV9jYWxsYmFjayk7CitfUHlfSURFTlRJRklFUihjYWxsX3Nvb24pOworX1B5X0lERU5USUZJRVIoY2FuY2VsKTsKK19QeV9JREVOVElGSUVSKHNlbmQpOworX1B5X0lERU5USUZJRVIodGhyb3cpOworX1B5X0lERU5USUZJRVIoX3N0ZXApOworX1B5X0lERU5USUZJRVIoX3NjaGVkdWxlX2NhbGxiYWNrcyk7CitfUHlfSURFTlRJRklFUihfd2FrZXVwKTsKKworCisvKiBTdGF0ZSBvZiB0aGUgX2FzeW5jaW8gbW9kdWxlICovCitzdGF0aWMgUHlPYmplY3QgKmFsbF90YXNrczsKK3N0YXRpYyBQeU9iamVjdCAqY3VycmVudF90YXNrczsKK3N0YXRpYyBQeU9iamVjdCAqdHJhY2ViYWNrX2V4dHJhY3Rfc3RhY2s7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jaW9fZ2V0X2V2ZW50X2xvb3A7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jaW9fZnV0dXJlX3JlcHJfaW5mb19mdW5jOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX3Rhc2tfcmVwcl9pbmZvX2Z1bmM7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jaW9fdGFza19nZXRfc3RhY2tfZnVuYzsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNpb190YXNrX3ByaW50X3N0YWNrX2Z1bmM7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3I7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jaW9fQ2FuY2VsbGVkRXJyb3I7CitzdGF0aWMgUHlPYmplY3QgKmluc3BlY3RfaXNnZW5lcmF0b3I7CisKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTVEFURV9QRU5ESU5HLAorICAgIFNUQVRFX0NBTkNFTExFRCwKKyAgICBTVEFURV9GSU5JU0hFRAorfSBmdXRfc3RhdGU7CisKKyNkZWZpbmUgRnV0dXJlT2JqX0hFQUQocHJlZml4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3RfSEVBRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19sb29wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfY2FsbGJhY2tzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnByZWZpeCMjX2V4Y2VwdGlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI19yZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcHJlZml4IyNfc291cmNlX3RiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZnV0X3N0YXRlIHByZWZpeCMjX3N0YXRlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGludCBwcmVmaXgjI19sb2dfdGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpbnQgcHJlZml4IyNfYmxvY2tpbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmRpY3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpwcmVmaXgjI193ZWFrcmVmbGlzdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEZ1dHVyZU9ial9IRUFEKGZ1dCkKK30gRnV0dXJlT2JqOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgRnV0dXJlT2JqX0hFQUQodGFzaykKKyAgICBQeU9iamVjdCAqdGFza19mdXRfd2FpdGVyOworICAgIFB5T2JqZWN0ICp0YXNrX2Nvcm87CisgICAgaW50IHRhc2tfbXVzdF9jYW5jZWw7CisgICAgaW50IHRhc2tfbG9nX2Rlc3Ryb3lfcGVuZGluZzsKK30gVGFza09iajsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBUYXNrT2JqICpzd190YXNrOworICAgIFB5T2JqZWN0ICpzd19hcmc7Cit9IFRhc2tTZW5kTWV0aFdyYXBwZXI7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgVGFza09iaiAqd3dfdGFzazsKK30gVGFza1dha2V1cE1ldGhXcmFwcGVyOworCisKKyNpbmNsdWRlICJjbGluaWMvX2FzeW5jaW9tb2R1bGUuYy5oIgorCisKKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIF9hc3luY2lvLkZ1dHVyZSAiRnV0dXJlT2JqICoiICImRnV0dXJlX1R5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0wMGQzZTRhYmNhNzExZTBmXSovCisKKy8qIEdldCBGdXR1cmVJdGVyIGZyb20gRnV0dXJlICovCitzdGF0aWMgUHlPYmplY3QqIGZ1dHVyZV9uZXdfaXRlcihQeU9iamVjdCAqKTsKK3N0YXRpYyBpbmxpbmUgaW50IGZ1dHVyZV9jYWxsX3NjaGVkdWxlX2NhbGxiYWNrcyhGdXR1cmVPYmogKik7CisKK3N0YXRpYyBpbnQKK2Z1dHVyZV9zY2hlZHVsZV9jYWxsYmFja3MoRnV0dXJlT2JqICpmdXQpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QqIGl0ZXJzOworICAgIGludCBpOworCisgICAgaWYgKGZ1dC0+ZnV0X2NhbGxiYWNrcyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJOVUxMIGNhbGxiYWNrcyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGl0ZXJzID0gUHlMaXN0X0dldFNsaWNlKGZ1dC0+ZnV0X2NhbGxiYWNrcywgMCwgbGVuKTsKKyAgICBpZiAoaXRlcnMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeUxpc3RfU2V0U2xpY2UoZnV0LT5mdXRfY2FsbGJhY2tzLCAwLCBsZW4sIE5VTEwpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoaXRlcnMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpoYW5kbGUgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqY2IgPSBQeUxpc3RfR0VUX0lURU0oaXRlcnMsIGkpOworCisgICAgICAgIGhhbmRsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBmdXQtPmZ1dF9sb29wLCAmUHlJZF9jYWxsX3Nvb24sICJPTyIsIGNiLCBmdXQsIE5VTEwpOworCisgICAgICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXJzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihoYW5kbGUpOworICAgICAgICB9CisgICAgfQorCisgICAgUHlfREVDUkVGKGl0ZXJzKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZnV0dXJlX2luaXQoRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICpsb29wKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKGdldF9kZWJ1Zyk7CisKKyAgICBpZiAobG9vcCA9PSBOVUxMIHx8IGxvb3AgPT0gUHlfTm9uZSkgeworICAgICAgICBsb29wID0gUHlPYmplY3RfQ2FsbE9iamVjdChhc3luY2lvX2dldF9ldmVudF9sb29wLCBOVUxMKTsKKyAgICAgICAgaWYgKGxvb3AgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYobG9vcCk7CisgICAgfQorICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2xvb3ApOworICAgIGZ1dC0+ZnV0X2xvb3AgPSBsb29wOworCisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmdXQtPmZ1dF9sb29wLCAmUHlJZF9nZXRfZGVidWcsIE5VTEwpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeU9iamVjdF9Jc1RydWUocmVzKSkgeworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgICAgICBmdXQtPmZ1dF9zb3VyY2VfdGIgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHRyYWNlYmFja19leHRyYWN0X3N0YWNrLCBOVUxMKTsKKyAgICAgICAgaWYgKGZ1dC0+ZnV0X3NvdXJjZV90YiA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgfQorCisgICAgZnV0LT5mdXRfY2FsbGJhY2tzID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoZnV0LT5mdXRfY2FsbGJhY2tzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZnV0dXJlX3NldF9yZXN1bHQoRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICpyZXMpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlICE9IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsICJpbnZhbGlkIHN0YXRlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRihyZXMpOworICAgIGZ1dC0+ZnV0X3Jlc3VsdCA9IHJlczsKKyAgICBmdXQtPmZ1dF9zdGF0ZSA9IFNUQVRFX0ZJTklTSEVEOworCisgICAgaWYgKGZ1dHVyZV9jYWxsX3NjaGVkdWxlX2NhbGxiYWNrcyhmdXQpID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1dHVyZV9zZXRfZXhjZXB0aW9uKEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqZXhjKQoreworICAgIFB5T2JqZWN0ICpleGNfdmFsID0gTlVMTDsKKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yLCAiaW52YWxpZCBzdGF0ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlFeGNlcHRpb25DbGFzc19DaGVjayhleGMpKSB7CisgICAgICAgIGV4Y192YWwgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGV4YywgTlVMTCk7CisgICAgICAgIGlmIChleGNfdmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBleGNfdmFsID0gZXhjOworICAgICAgICBQeV9JTkNSRUYoZXhjX3ZhbCk7CisgICAgfQorICAgIGlmICghUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayhleGNfdmFsKSkgeworICAgICAgICBQeV9ERUNSRUYoZXhjX3ZhbCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGV4Y2VwdGlvbiBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICgoUHlPYmplY3QqKVB5X1RZUEUoZXhjX3ZhbCkgPT0gUHlFeGNfU3RvcEl0ZXJhdGlvbikgeworICAgICAgICBQeV9ERUNSRUYoZXhjX3ZhbCk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbiBpbnRlcmFjdHMgYmFkbHkgd2l0aCBnZW5lcmF0b3JzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgY2Fubm90IGJlIHJhaXNlZCBpbnRvIGEgRnV0dXJlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZ1dC0+ZnV0X2V4Y2VwdGlvbiA9IGV4Y192YWw7CisgICAgZnV0LT5mdXRfc3RhdGUgPSBTVEFURV9GSU5JU0hFRDsKKworICAgIGlmIChmdXR1cmVfY2FsbF9zY2hlZHVsZV9jYWxsYmFja3MoZnV0KSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9sb2dfdGIgPSAxOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgaW50CitmdXR1cmVfZ2V0X3Jlc3VsdChGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKipyZXN1bHQpCit7CisgICAgUHlPYmplY3QgKmV4YzsKKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSA9PSBTVEFURV9DQU5DRUxMRUQpIHsKKyAgICAgICAgZXhjID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhhc3luY2lvX0NhbmNlbGxlZEVycm9yKTsKKyAgICAgICAgaWYgKGV4YyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgKnJlc3VsdCA9IGV4YzsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlICE9IFNUQVRFX0ZJTklTSEVEKSB7CisgICAgICAgIFB5T2JqZWN0ICptc2cgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiUmVzdWx0IGlzIG5vdCByZWFkeS4iKTsKKyAgICAgICAgaWYgKG1zZyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBleGMgPSBfUHlPYmplY3RfQ2FsbEFyZzEoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgbXNnKTsKKyAgICAgICAgUHlfREVDUkVGKG1zZyk7CisgICAgICAgIGlmIChleGMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgKnJlc3VsdCA9IGV4YzsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgZnV0LT5mdXRfbG9nX3RiID0gMDsKKyAgICBpZiAoZnV0LT5mdXRfZXhjZXB0aW9uICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgICAgICpyZXN1bHQgPSBmdXQtPmZ1dF9leGNlcHRpb247CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9yZXN1bHQpOworICAgICpyZXN1bHQgPSBmdXQtPmZ1dF9yZXN1bHQ7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmdXR1cmVfYWRkX2RvbmVfY2FsbGJhY2soRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlICE9IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlPYmplY3QgKmhhbmRsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBmdXQtPmZ1dF9sb29wLCAmUHlJZF9jYWxsX3Nvb24sICJPTyIsIGFyZywgZnV0LCBOVUxMKTsKKworICAgICAgICBpZiAoaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKGhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGludCBlcnIgPSBQeUxpc3RfQXBwZW5kKGZ1dC0+ZnV0X2NhbGxiYWNrcywgYXJnKTsKKyAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1dHVyZV9jYW5jZWwoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlICE9IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKyAgICBmdXQtPmZ1dF9zdGF0ZSA9IFNUQVRFX0NBTkNFTExFRDsKKworICAgIGlmIChmdXR1cmVfY2FsbF9zY2hlZHVsZV9jYWxsYmFja3MoZnV0KSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fVFJVRTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLl9faW5pdF9fCisKKyAgICAqCisgICAgbG9vcDogJ08nID0gTlVMTAorCitUaGlzIGNsYXNzIGlzICphbG1vc3QqIGNvbXBhdGlibGUgd2l0aCBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLgorCisgICAgRGlmZmVyZW5jZXM6CisKKyAgICAtIHJlc3VsdCgpIGFuZCBleGNlcHRpb24oKSBkbyBub3QgdGFrZSBhIHRpbWVvdXQgYXJndW1lbnQgYW5kCisgICAgICByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgZnV0dXJlIGlzbid0IGRvbmUgeWV0LgorCisgICAgLSBDYWxsYmFja3MgcmVnaXN0ZXJlZCB3aXRoIGFkZF9kb25lX2NhbGxiYWNrKCkgYXJlIGFsd2F5cyBjYWxsZWQKKyAgICAgIHZpYSB0aGUgZXZlbnQgbG9vcCdzIGNhbGxfc29vbl90aHJlYWRzYWZlKCkuCisKKyAgICAtIFRoaXMgY2xhc3MgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgd2FpdCgpIGFuZCBhc19jb21wbGV0ZWQoKQorICAgICAgbWV0aG9kcyBpbiB0aGUgY29uY3VycmVudC5mdXR1cmVzIHBhY2thZ2UuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19hc3luY2lvX0Z1dHVyZV9fX2luaXRfX19pbXBsKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKmxvb3ApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWVkNzU3OTllYWNjYjVkNiBpbnB1dD04ZTE2ODFmMjM2MDViZTJkXSovCisKK3sKKyAgICByZXR1cm4gZnV0dXJlX2luaXQoc2VsZiwgbG9vcCk7Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZU9ial9jbGVhcihGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9sb29wKTsKKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X3Jlc3VsdCk7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfZXhjZXB0aW9uKTsKKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9zb3VyY2VfdGIpOworICAgIFB5X0NMRUFSKGZ1dC0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZU9ial90cmF2ZXJzZShGdXR1cmVPYmogKmZ1dCwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoZnV0LT5mdXRfbG9vcCk7CisgICAgUHlfVklTSVQoZnV0LT5mdXRfY2FsbGJhY2tzKTsKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9yZXN1bHQpOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgUHlfVklTSVQoZnV0LT5mdXRfc291cmNlX3RiKTsKKyAgICBQeV9WSVNJVChmdXQtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUucmVzdWx0CisKK1JldHVybiB0aGUgcmVzdWx0IHRoaXMgZnV0dXJlIHJlcHJlc2VudHMuCisKK0lmIHRoZSBmdXR1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCByYWlzZXMgQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGUKK2Z1dHVyZSdzIHJlc3VsdCBpc24ndCB5ZXQgYXZhaWxhYmxlLCByYWlzZXMgSW52YWxpZFN0YXRlRXJyb3IuICBJZgordGhlIGZ1dHVyZSBpcyBkb25lIGFuZCBoYXMgYW4gZXhjZXB0aW9uIHNldCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX3Jlc3VsdF9pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzVmOTQwOTM2YTRiMWU1IGlucHV0PTQ5ZWNmOWNmNWVjNTBkYzVdKi8KK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGludCByZXMgPSBmdXR1cmVfZ2V0X3Jlc3VsdChzZWxmLCAmcmVzdWx0KTsKKworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgYXNzZXJ0KHJlcyA9PSAxKTsKKworICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKHJlc3VsdCksIHJlc3VsdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5leGNlcHRpb24KKworUmV0dXJuIHRoZSBleGNlcHRpb24gdGhhdCB3YXMgc2V0IG9uIHRoaXMgZnV0dXJlLgorCitUaGUgZXhjZXB0aW9uIChvciBOb25lIGlmIG5vIGV4Y2VwdGlvbiB3YXMgc2V0KSBpcyByZXR1cm5lZCBvbmx5IGlmCit0aGUgZnV0dXJlIGlzIGRvbmUuICBJZiB0aGUgZnV0dXJlIGhhcyBiZWVuIGNhbmNlbGxlZCwgcmFpc2VzCitDYW5jZWxsZWRFcnJvci4gIElmIHRoZSBmdXR1cmUgaXNuJ3QgZG9uZSB5ZXQsIHJhaXNlcworSW52YWxpZFN0YXRlRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfZXhjZXB0aW9uX2ltcGwoRnV0dXJlT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg4YjIwZDRmODU1ZTA3MTAgaW5wdXQ9NzMzNTQ3YTcwYzg0MWM2OF0qLworeworICAgIGlmIChzZWxmLT5mdXRfc3RhdGUgPT0gU1RBVEVfQ0FOQ0VMTEVEKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0NhbmNlbGxlZEVycm9yLCAiIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChzZWxmLT5mdXRfc3RhdGUgIT0gU1RBVEVfRklOSVNIRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsICJSZXN1bHQgaXMgbm90IHJlYWR5LiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2VsZi0+ZnV0X2V4Y2VwdGlvbiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmZ1dF9sb2dfdGIgPSAwOworICAgICAgICBQeV9JTkNSRUYoc2VsZi0+ZnV0X2V4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBzZWxmLT5mdXRfZXhjZXB0aW9uOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuc2V0X3Jlc3VsdAorCisgICAgcmVzOiAnTycKKyAgICAvCisKK01hcmsgdGhlIGZ1dHVyZSBkb25lIGFuZCBzZXQgaXRzIHJlc3VsdC4KKworSWYgdGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsIHJhaXNlcworSW52YWxpZFN0YXRlRXJyb3IuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfc2V0X3Jlc3VsdChGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpyZXMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTYyMGFiZmMyNzk2YmZiNiBpbnB1dD04NjE5NTY1ZTA1MDMzNTdlXSovCit7CisgICAgcmV0dXJuIGZ1dHVyZV9zZXRfcmVzdWx0KHNlbGYsIHJlcyk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5zZXRfZXhjZXB0aW9uCisKKyAgICBleGNlcHRpb246ICdPJworICAgIC8KKworTWFyayB0aGUgZnV0dXJlIGRvbmUgYW5kIHNldCBhbiBleGNlcHRpb24uCisKK0lmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCByYWlzZXMKK0ludmFsaWRTdGF0ZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX3NldF9leGNlcHRpb24oRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqZXhjZXB0aW9uKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxYzFiMGNkMzIxYmUzNjAgaW5wdXQ9MTM3N2RiZTE1ZTZlYTE4Nl0qLworeworICAgIHJldHVybiBmdXR1cmVfc2V0X2V4Y2VwdGlvbihzZWxmLCBleGNlcHRpb24pOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUuYWRkX2RvbmVfY2FsbGJhY2sKKworICAgIGZuOiAnTycKKyAgICAvCisKK0FkZCBhIGNhbGxiYWNrIHRvIGJlIHJ1biB3aGVuIHRoZSBmdXR1cmUgYmVjb21lcyBkb25lLgorCitUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgLSB0aGUgZnV0dXJlIG9iamVjdC4gSWYKK3RoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBpcyBjYWxsZWQsIHRoZSBjYWxsYmFjayBpcworc2NoZWR1bGVkIHdpdGggY2FsbF9zb29uLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKmZuKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgxOWUwOTYyOWIyZWMyYjUgaW5wdXQ9OGNjZTE4N2UzMmNlYzZhOF0qLworeworICAgIHJldHVybiBmdXR1cmVfYWRkX2RvbmVfY2FsbGJhY2soc2VsZiwgZm4pOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5GdXR1cmUucmVtb3ZlX2RvbmVfY2FsbGJhY2sKKworICAgIGZuOiAnTycKKyAgICAvCisKK1JlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGEgY2FsbGJhY2sgZnJvbSB0aGUgImNhbGwgd2hlbiBkb25lIiBsaXN0LgorCitSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2FsbGJhY2tzIHJlbW92ZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfcmVtb3ZlX2RvbmVfY2FsbGJhY2soRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqZm4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWFiMWZiNTJiMjRlZjMxZiBpbnB1dD0zZmVkYjczZTE0MDljMzFjXSovCit7CisgICAgUHlPYmplY3QgKm5ld2xpc3Q7CisgICAgUHlfc3NpemVfdCBsZW4sIGksIGo9MDsKKworICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRShzZWxmLT5mdXRfY2FsbGJhY2tzKTsKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdCgwKTsKKyAgICB9CisKKyAgICBuZXdsaXN0ID0gUHlMaXN0X05ldyhsZW4pOworICAgIGlmIChuZXdsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGludCByZXQ7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlMaXN0X0dFVF9JVEVNKHNlbGYtPmZ1dF9jYWxsYmFja3MsIGkpOworCisgICAgICAgIGlmICgocmV0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGZuLCBpdGVtLCBQeV9FUSkpIDwgMCkgeworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKG5ld2xpc3QsIGosIGl0ZW0pOworICAgICAgICAgICAgaisrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFB5TGlzdF9TZXRTbGljZShuZXdsaXN0LCBqLCBsZW4sIE5VTEwpIDwgMCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGlmIChQeUxpc3RfU2V0U2xpY2Uoc2VsZi0+ZnV0X2NhbGxiYWNrcywgMCwgbGVuLCBuZXdsaXN0KSA8IDApIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBQeV9ERUNSRUYobmV3bGlzdCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4gLSBqKTsKKworZmFpbDoKKyAgICBQeV9ERUNSRUYobmV3bGlzdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5jYW5jZWwKKworQ2FuY2VsIHRoZSBmdXR1cmUgYW5kIHNjaGVkdWxlIGNhbGxiYWNrcy4KKworSWYgdGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgb3IgY2FuY2VsbGVkLCByZXR1cm4gRmFsc2UuICBPdGhlcndpc2UsCitjaGFuZ2UgdGhlIGZ1dHVyZSdzIHN0YXRlIHRvIGNhbmNlbGxlZCwgc2NoZWR1bGUgdGhlIGNhbGxiYWNrcyBhbmQKK3JldHVybiBUcnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2NhbmNlbF9pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lNDViOTMyYmE4YmQ2OGExIGlucHV0PTUxNTcwOWExMjc5OTUxMDldKi8KK3sKKyAgICByZXR1cm4gZnV0dXJlX2NhbmNlbChzZWxmKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLmNhbmNlbGxlZAorCitSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIHdhcyBjYW5jZWxsZWQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfY2FuY2VsbGVkX2ltcGwoRnV0dXJlT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE0NTE5N2NlZDU4NjM1N2QgaW5wdXQ9OTQzYWI4YjdiN2IxN2U0NV0qLworeworICAgIGlmIChzZWxmLT5mdXRfc3RhdGUgPT0gU1RBVEVfQ0FOQ0VMTEVEKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLmRvbmUKKworUmV0dXJuIFRydWUgaWYgdGhlIGZ1dHVyZSBpcyBkb25lLgorCitEb25lIG1lYW5zIGVpdGhlciB0aGF0IGEgcmVzdWx0IC8gZXhjZXB0aW9uIGFyZSBhdmFpbGFibGUsIG9yIHRoYXQgdGhlCitmdXR1cmUgd2FzIGNhbmNlbGxlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9kb25lX2ltcGwoRnV0dXJlT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI0NGM1YWMzNTExNDUwOTYgaW5wdXQ9MjhkN2IyM2ZkYjY1ZDJhY10qLworeworICAgIGlmIChzZWxmLT5mdXRfc3RhdGUgPT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2Jsb2NraW5nKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9ibG9ja2luZykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZU9ial9zZXRfYmxvY2tpbmcoRnV0dXJlT2JqICpmdXQsIFB5T2JqZWN0ICp2YWwpCit7CisgICAgaW50IGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUodmFsKTsKKyAgICBpZiAoaXNfdHJ1ZSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBmdXQtPmZ1dF9ibG9ja2luZyA9IGlzX3RydWU7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2xvZ190cmFjZWJhY2soRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2xvZ190YikgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2xvb3AoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2xvb3AgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X2xvb3ApOworICAgIHJldHVybiBmdXQtPmZ1dF9sb29wOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9jYWxsYmFja3MoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2NhbGxiYWNrcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfY2FsbGJhY2tzKTsKKyAgICByZXR1cm4gZnV0LT5mdXRfY2FsbGJhY2tzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9yZXN1bHQoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3Jlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICByZXR1cm4gZnV0LT5mdXRfcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9leGNlcHRpb24oRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2V4Y2VwdGlvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gZnV0LT5mdXRfZXhjZXB0aW9uOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9zb3VyY2VfdHJhY2ViYWNrKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIGlmIChmdXQtPmZ1dF9zb3VyY2VfdGIgPT0gTlVMTCkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgUHlfSU5DUkVGKGZ1dC0+ZnV0X3NvdXJjZV90Yik7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X3NvdXJjZV90YjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfc3RhdGUoRnV0dXJlT2JqICpmdXQpCit7CisgICAgX1B5X0lERU5USUZJRVIoUEVORElORyk7CisgICAgX1B5X0lERU5USUZJRVIoQ0FOQ0VMTEVEKTsKKyAgICBfUHlfSURFTlRJRklFUihGSU5JU0hFRCk7CisgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CisKKyAgICBzd2l0Y2ggKGZ1dC0+ZnV0X3N0YXRlKSB7CisgICAgY2FzZSBTVEFURV9QRU5ESU5HOgorICAgICAgICByZXQgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9QRU5ESU5HKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVEFURV9DQU5DRUxMRUQ6CisgICAgICAgIHJldCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX0NBTkNFTExFRCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVEVfRklOSVNIRUQ6CisgICAgICAgIHJldCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX0ZJTklTSEVEKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0ICgwKTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHJldCk7CisgICAgcmV0dXJuIHJldDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uRnV0dXJlLl9yZXByX2luZm8KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9fcmVwcl9pbmZvX2ltcGwoRnV0dXJlT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZhNjllOTAxYmQxNzZjZmIgaW5wdXQ9ZjIxNTA0ZDhlMmFlMWNhMl0qLworeworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAorICAgICAgICBhc3luY2lvX2Z1dHVyZV9yZXByX2luZm9fZnVuYywgc2VsZiwgTlVMTCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLkZ1dHVyZS5fc2NoZWR1bGVfY2FsbGJhY2tzCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfX3NjaGVkdWxlX2NhbGxiYWNrc19pbXBsKEZ1dHVyZU9iaiAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01ZTg5NThkODllYTFjNWRjIGlucHV0PTRmNWYyOTVmMjYzZjRhODhdKi8KK3sKKyAgICBpbnQgcmV0ID0gZnV0dXJlX3NjaGVkdWxlX2NhbGxiYWNrcyhzZWxmKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9yZXByKEZ1dHVyZU9iaiAqZnV0KQoreworICAgIF9QeV9JREVOVElGSUVSKF9yZXByX2luZm8pOworCisgICAgUHlPYmplY3QgKl9yZXByX2luZm8gPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fcmVwcl9pbmZvKTsgIC8vIGJvcnJvd2VkCisgICAgaWYgKF9yZXByX2luZm8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqcmluZm8gPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncygoUHlPYmplY3QqKWZ1dCwgX3JlcHJfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAocmluZm8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqc3AgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiICIpOworICAgIGlmIChzcCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihyaW5mbyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICpyaW5mb19zID0gUHlVbmljb2RlX0pvaW4oc3AsIHJpbmZvKTsKKyAgICBQeV9ERUNSRUYoc3ApOworICAgIFB5X0RFQ1JFRihyaW5mbyk7CisgICAgaWYgKHJpbmZvX3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeU9iamVjdCAqcnN0ciA9IE5VTEw7CisgICAgUHlPYmplY3QgKnR5cGVfbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0KilQeV9UWVBFKGZ1dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIik7CisgICAgaWYgKHR5cGVfbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIHJzdHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVTICVTPiIsIHR5cGVfbmFtZSwgcmluZm9fcyk7CisgICAgICAgIFB5X0RFQ1JFRih0eXBlX25hbWUpOworICAgIH0KKyAgICBQeV9ERUNSRUYocmluZm9fcyk7CisgICAgcmV0dXJuIHJzdHI7Cit9CisKK3N0YXRpYyB2b2lkCitGdXR1cmVPYmpfZmluYWxpemUoRnV0dXJlT2JqICpmdXQpCit7CisgICAgX1B5X0lERU5USUZJRVIoY2FsbF9leGNlcHRpb25faGFuZGxlcik7CisgICAgX1B5X0lERU5USUZJRVIobWVzc2FnZSk7CisgICAgX1B5X0lERU5USUZJRVIoZXhjZXB0aW9uKTsKKyAgICBfUHlfSURFTlRJRklFUihmdXR1cmUpOworICAgIF9QeV9JREVOVElGSUVSKHNvdXJjZV90cmFjZWJhY2spOworCisgICAgaWYgKCFmdXQtPmZ1dF9sb2dfdGIpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQoZnV0LT5mdXRfZXhjZXB0aW9uICE9IE5VTEwpOworICAgIGZ1dC0+ZnV0X2xvZ190YiA9IDA7OworCisgICAgUHlPYmplY3QgKmVycm9yX3R5cGUsICplcnJvcl92YWx1ZSwgKmVycm9yX3RyYWNlYmFjazsKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0eXBlX25hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICptZXNzYWdlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisKKyAgICBjb250ZXh0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIHR5cGVfbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0KilQeV9UWVBFKGZ1dCksICJfX25hbWVfXyIpOworICAgIGlmICh0eXBlX25hbWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiJVMgZXhjZXB0aW9uIHdhcyBuZXZlciByZXRyaWV2ZWQiLCB0eXBlX25hbWUpOworICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9tZXNzYWdlLCBtZXNzYWdlKSA8IDAgfHwKKyAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfZXhjZXB0aW9uLCBmdXQtPmZ1dF9leGNlcHRpb24pIDwgMCB8fAorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9mdXR1cmUsIChQeU9iamVjdCopZnV0KSA8IDApIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBpZiAoZnV0LT5mdXRfc291cmNlX3RiICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX3NvdXJjZV90cmFjZWJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdXQtPmZ1dF9zb3VyY2VfdGIpIDwgMCkgeworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZnV0LT5mdXRfbG9vcCwgJlB5SWRfY2FsbF9leGNlcHRpb25faGFuZGxlcik7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgY29udGV4dCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGZ1bmMpOworICAgICAgICB9CisgICAgfQorCitmaW5hbGx5OgorICAgIFB5X0NMRUFSKGNvbnRleHQpOworICAgIFB5X0NMRUFSKHR5cGVfbmFtZSk7CisgICAgUHlfQ0xFQVIobWVzc2FnZSk7CisgICAgUHlfQ0xFQVIoZnVuYyk7CisgICAgUHlfQ0xFQVIocmVzKTsKKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCisKK3N0YXRpYyBQeUFzeW5jTWV0aG9kcyBGdXR1cmVUeXBlX2FzX2FzeW5jID0geworICAgICh1bmFyeWZ1bmMpZnV0dXJlX25ld19pdGVyLCAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIEZ1dHVyZVR5cGVfbWV0aG9kc1tdID0geworICAgIF9BU1lOQ0lPX0ZVVFVSRV9SRVNVTFRfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0VYQ0VQVElPTl9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfU0VUX1JFU1VMVF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfU0VUX0VYQ0VQVElPTl9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfQUREX0RPTkVfQ0FMTEJBQ0tfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX1JFTU9WRV9ET05FX0NBTExCQUNLX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9DQU5DRUxfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0NBTkNFTExFRF9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfRE9ORV9NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfX1JFUFJfSU5GT19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfX1NDSEVEVUxFX0NBTExCQUNLU19NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCisjZGVmaW5lIEZVVFVSRV9DT01NT05fR0VUU0VUTElTVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyJfc3RhdGUiLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfc3RhdGUsIE5VTEwsIE5VTEx9LCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyJfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmciLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfYmxvY2tpbmcsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0dGVyKUZ1dHVyZU9ial9zZXRfYmxvY2tpbmcsIE5VTEx9LCAgICAgICBcCisgICAgeyJfbG9vcCIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9sb29wLCBOVUxMLCBOVUxMfSwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyJfY2FsbGJhY2tzIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2NhbGxiYWNrcywgTlVMTCwgTlVMTH0sICAgICAgICAgICAgICBcCisgICAgeyJfcmVzdWx0IiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X3Jlc3VsdCwgTlVMTCwgTlVMTH0sICAgICAgICAgICAgICAgICAgICBcCisgICAgeyJfZXhjZXB0aW9uIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2V4Y2VwdGlvbiwgTlVMTCwgTlVMTH0sICAgICAgICAgICAgICBcCisgICAgeyJfbG9nX3RyYWNlYmFjayIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9sb2dfdHJhY2ViYWNrLCBOVUxMLCBOVUxMfSwgICAgICBcCisgICAgeyJfc291cmNlX3RyYWNlYmFjayIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9zb3VyY2VfdHJhY2ViYWNrLCBOVUxMLCBOVUxMfSwKKworc3RhdGljIFB5R2V0U2V0RGVmIEZ1dHVyZVR5cGVfZ2V0c2V0bGlzdFtdID0geworICAgIEZVVFVSRV9DT01NT05fR0VUU0VUTElTVAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIHZvaWQgRnV0dXJlT2JqX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEZ1dHVyZVR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9hc3luY2lvLkZ1dHVyZSIsCisgICAgc2l6ZW9mKEZ1dHVyZU9iaiksICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAudHBfZGVhbGxvYyA9IEZ1dHVyZU9ial9kZWFsbG9jLAorICAgIC50cF9hc19hc3luYyA9ICZGdXR1cmVUeXBlX2FzX2FzeW5jLAorICAgIC50cF9yZXByID0gKHJlcHJmdW5jKUZ1dHVyZU9ial9yZXByLAorICAgIC50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsCisgICAgLnRwX2RvYyA9IF9hc3luY2lvX0Z1dHVyZV9fX2luaXRfX19fZG9jX18sCisgICAgLnRwX3RyYXZlcnNlID0gKHRyYXZlcnNlcHJvYylGdXR1cmVPYmpfdHJhdmVyc2UsCisgICAgLnRwX2NsZWFyID0gKGlucXVpcnkpRnV0dXJlT2JqX2NsZWFyLAorICAgIC50cF93ZWFrbGlzdG9mZnNldCA9IG9mZnNldG9mKEZ1dHVyZU9iaiwgZnV0X3dlYWtyZWZsaXN0KSwKKyAgICAudHBfaXRlciA9IChnZXRpdGVyZnVuYylmdXR1cmVfbmV3X2l0ZXIsCisgICAgLnRwX21ldGhvZHMgPSBGdXR1cmVUeXBlX21ldGhvZHMsCisgICAgLnRwX2dldHNldCA9IEZ1dHVyZVR5cGVfZ2V0c2V0bGlzdCwKKyAgICAudHBfZGljdG9mZnNldCA9IG9mZnNldG9mKEZ1dHVyZU9iaiwgZGljdCksCisgICAgLnRwX2luaXQgPSAoaW5pdHByb2MpX2FzeW5jaW9fRnV0dXJlX19faW5pdF9fLAorICAgIC50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldywKKyAgICAudHBfZmluYWxpemUgPSAoZGVzdHJ1Y3RvcilGdXR1cmVPYmpfZmluYWxpemUsCit9OworCisjZGVmaW5lIEZ1dHVyZV9DaGVja0V4YWN0KG9iaikgKFB5X1RZUEUob2JqKSA9PSAmRnV0dXJlVHlwZSkKKworc3RhdGljIGlubGluZSBpbnQKK2Z1dHVyZV9jYWxsX3NjaGVkdWxlX2NhbGxiYWNrcyhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoRnV0dXJlX0NoZWNrRXhhY3QoZnV0KSkgeworICAgICAgICByZXR1cm4gZnV0dXJlX3NjaGVkdWxlX2NhbGxiYWNrcyhmdXQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogYGZ1dGAgaXMgYSBzdWJjbGFzcyBvZiBGdXR1cmUgKi8KKyAgICAgICAgUHlPYmplY3QgKnJldCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICAoUHlPYmplY3QqKWZ1dCwgJlB5SWRfX3NjaGVkdWxlX2NhbGxiYWNrcywgTlVMTCk7CisgICAgICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKHJldCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK0Z1dHVyZU9ial9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKQoreworICAgIEZ1dHVyZU9iaiAqZnV0ID0gKEZ1dHVyZU9iaiAqKXNlbGY7CisKKyAgICBpZiAoRnV0dXJlX0NoZWNrRXhhY3QoZnV0KSkgeworICAgICAgICAvKiBXaGVuIGZ1dCBpcyBzdWJjbGFzcyBvZiBGdXR1cmUsIGZpbmFsaXplciBpcyBjYWxsZWQgZnJvbQorICAgICAgICAgKiBzdWJ0eXBlX2RlYWxsb2MuCisgICAgICAgICAqLworICAgICAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKHNlbGYpIDwgMCkgeworICAgICAgICAgICAgLy8gcmVzdXJyZWN0ZWQuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfd2Vha3JlZmxpc3QgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKHNlbGYpOworICAgIH0KKworICAgICh2b2lkKUZ1dHVyZU9ial9jbGVhcihmdXQpOworICAgIFB5X1RZUEUoZnV0KS0+dHBfZnJlZShmdXQpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKiBGdXR1cmUgSXRlcmF0b3IgKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgRnV0dXJlT2JqICpmdXR1cmU7Cit9IGZ1dHVyZWl0ZXJvYmplY3Q7CisKK3N0YXRpYyB2b2lkCitGdXR1cmVJdGVyX2RlYWxsb2MoZnV0dXJlaXRlcm9iamVjdCAqaXQpCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhpdCk7CisgICAgUHlfWERFQ1JFRihpdC0+ZnV0dXJlKTsKKyAgICBQeU9iamVjdF9HQ19EZWwoaXQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlSXRlcl9pdGVybmV4dChmdXR1cmVpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIEZ1dHVyZU9iaiAqZnV0ID0gaXQtPmZ1dHVyZTsKKworICAgIGlmIChmdXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgPT0gU1RBVEVfUEVORElORykgeworICAgICAgICBpZiAoIWZ1dC0+ZnV0X2Jsb2NraW5nKSB7CisgICAgICAgICAgICBmdXQtPmZ1dF9ibG9ja2luZyA9IDE7CisgICAgICAgICAgICBQeV9JTkNSRUYoZnV0KTsKKyAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilmdXQ7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0Fzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInlpZWxkIGZyb20gd2Fzbid0IHVzZWQgd2l0aCBmdXR1cmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzID0gX2FzeW5jaW9fRnV0dXJlX3Jlc3VsdF9pbXBsKGZ1dCk7CisgICAgaWYgKHJlcyAhPSBOVUxMKSB7CisgICAgICAgIC8qIFRoZSByZXN1bHQgb2YgdGhlIEZ1dHVyZSBpcyBub3QgYW4gZXhjZXB0aW9uLgorCisgICAgICAgICAgIFdlIGNvbnN0cnVjdCBhbiBleGNlcHRpb24gaW5zdGFuY2UgbWFudWFsbHkgd2l0aAorICAgICAgICAgICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzIGFuZCBwYXNzIGl0IHRvIFB5RXJyX1NldE9iamVjdAorICAgICAgICAgICAoc2ltaWxhcmx5IHRvIHdoYXQgZ2Vub2JqZWN0LmMgZG9lcykuCisKKyAgICAgICAgICAgV2UgZG8gdGhpcyB0byBoYW5kbGUgYSBzaXR1YXRpb24gd2hlbiAicmVzIiBpcyBhIHR1cGxlLCBpbiB3aGljaAorICAgICAgICAgICBjYXNlIFB5RXJyX1NldE9iamVjdCB3b3VsZCBzZXQgdGhlIHZhbHVlIG9mIFN0b3BJdGVyYXRpb24gdG8KKyAgICAgICAgICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR1cGxlLgorCisgICAgICAgICAgIChTZWUgUHlFcnJfU2V0T2JqZWN0L19QeUVycl9DcmVhdGVFeGNlcHRpb24gY29kZSBmb3IgZGV0YWlscy4pCisgICAgICAgICovCisgICAgICAgIFB5T2JqZWN0ICplID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgICAgIFB5RXhjX1N0b3BJdGVyYXRpb24sIHJlcywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBpZiAoZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgZSk7CisgICAgICAgIFB5X0RFQ1JFRihlKTsKKyAgICB9CisKKyAgICBpdC0+ZnV0dXJlID0gTlVMTDsKKyAgICBQeV9ERUNSRUYoZnV0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZUl0ZXJfc2VuZChmdXR1cmVpdGVyb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQoreworICAgIC8qIEZ1dHVyZS5fX2l0ZXJfXyBkb2Vzbid0IGNhcmUgYWJvdXQgdmFsdWVzIHRoYXQgYXJlIHB1c2hlZCB0byB0aGUKKyAgICAgKiBnZW5lcmF0b3IsIGl0IGp1c3QgcmV0dXJucyAic2VsZi5yZXN1bHQoKS4KKyAgICAgKi8KKyAgICByZXR1cm4gRnV0dXJlSXRlcl9pdGVybmV4dChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZUl0ZXJfdGhyb3coZnV0dXJlaXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnR5cGU9TlVMTCwgKnZhbD1OVUxMLCAqdGI9TlVMTDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T08iLCAmdHlwZSwgJnZhbCwgJnRiKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodmFsID09IFB5X05vbmUpIHsKKyAgICAgICAgdmFsID0gTlVMTDsKKyAgICB9CisgICAgaWYgKHRiID09IFB5X05vbmUpIHsKKyAgICAgICAgdGIgPSBOVUxMOworICAgIH0KKworICAgIFB5X0NMRUFSKHNlbGYtPmZ1dHVyZSk7CisKKyAgICBpZiAodGIgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9SZXN0b3JlKHR5cGUsIHZhbCwgdGIpOworICAgIH0KKyAgICBlbHNlIGlmICh2YWwgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRPYmplY3QodHlwZSwgdmFsKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeUV4Y2VwdGlvbkNsYXNzX0NoZWNrKHR5cGUpKSB7CisgICAgICAgICAgICB2YWwgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHR5cGUsIE5VTEwpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFsID0gdHlwZTsKKyAgICAgICAgICAgIGFzc2VydCAoUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayh2YWwpKTsKKyAgICAgICAgICAgIHR5cGUgPSAoUHlPYmplY3QqKVB5X1RZUEUodmFsKTsKKyAgICAgICAgICAgIGFzc2VydCAoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSk7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KHR5cGUsIHZhbCk7CisgICAgfQorICAgIHJldHVybiBGdXR1cmVJdGVyX2l0ZXJuZXh0KHNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlSXRlcl9jbG9zZShmdXR1cmVpdGVyb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmZ1dHVyZSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK0Z1dHVyZUl0ZXJfdHJhdmVyc2UoZnV0dXJlaXRlcm9iamVjdCAqaXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGl0LT5mdXR1cmUpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgRnV0dXJlSXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJzZW5kIiwgIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX3NlbmQsIE1FVEhfTywgTlVMTH0sCisgICAgeyJ0aHJvdyIsIChQeUNGdW5jdGlvbilGdXR1cmVJdGVyX3Rocm93LCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pRnV0dXJlSXRlcl9jbG9zZSwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRnV0dXJlSXRlclR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9hc3luY2lvLkZ1dHVyZUl0ZXIiLAorICAgIC50cF9iYXNpY3NpemUgPSBzaXplb2YoZnV0dXJlaXRlcm9iamVjdCksCisgICAgLnRwX2l0ZW1zaXplID0gMCwKKyAgICAudHBfZGVhbGxvYyA9IChkZXN0cnVjdG9yKUZ1dHVyZUl0ZXJfZGVhbGxvYywKKyAgICAudHBfZ2V0YXR0cm8gPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgLnRwX3RyYXZlcnNlID0gKHRyYXZlcnNlcHJvYylGdXR1cmVJdGVyX3RyYXZlcnNlLAorICAgIC50cF9pdGVyID0gUHlPYmplY3RfU2VsZkl0ZXIsCisgICAgLnRwX2l0ZXJuZXh0ID0gKGl0ZXJuZXh0ZnVuYylGdXR1cmVJdGVyX2l0ZXJuZXh0LAorICAgIC50cF9tZXRob2RzID0gRnV0dXJlSXRlcl9tZXRob2RzLAorfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2Z1dHVyZV9uZXdfaXRlcihQeU9iamVjdCAqZnV0KQoreworICAgIGZ1dHVyZWl0ZXJvYmplY3QgKml0OworCisgICAgaWYgKCFQeU9iamVjdF9UeXBlQ2hlY2soZnV0LCAmRnV0dXJlVHlwZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyhmdXR1cmVpdGVyb2JqZWN0LCAmRnV0dXJlSXRlclR5cGUpOworICAgIGlmIChpdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0KTsKKyAgICBpdC0+ZnV0dXJlID0gKEZ1dHVyZU9iaiopZnV0OworICAgIFB5T2JqZWN0X0dDX1RyYWNrKGl0KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilpdDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKiogVGFzayAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKltjbGluaWMgaW5wdXRdCitjbGFzcyBfYXN5bmNpby5UYXNrICJUYXNrT2JqICoiICImVGFza19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NzE5ZGNlZjBmY2MwM2IzN10qLworCitzdGF0aWMgaW50IHRhc2tfY2FsbF9zdGVwX3Nvb24oVGFza09iaiAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKiB0YXNrX2NhbGxfd2FrZXVwKFRhc2tPYmogKiwgUHlPYmplY3QgKik7CitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICogdGFza19jYWxsX3N0ZXAoVGFza09iaiAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqIHRhc2tfd2FrZXVwKFRhc2tPYmogKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiB0YXNrX3N0ZXAoVGFza09iaiAqLCBQeU9iamVjdCAqKTsKKworLyogLS0tLS0gVGFzay5fc3RlcCB3cmFwcGVyICovCisKK3N0YXRpYyBpbnQKK1Rhc2tTZW5kTWV0aFdyYXBwZXJfY2xlYXIoVGFza1NlbmRNZXRoV3JhcHBlciAqbykKK3sKKyAgICBQeV9DTEVBUihvLT5zd190YXNrKTsKKyAgICBQeV9DTEVBUihvLT5zd19hcmcpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorVGFza1NlbmRNZXRoV3JhcHBlcl9kZWFsbG9jKFRhc2tTZW5kTWV0aFdyYXBwZXIgKm8pCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhvKTsKKyAgICAodm9pZClUYXNrU2VuZE1ldGhXcmFwcGVyX2NsZWFyKG8pOworICAgIFB5X1RZUEUobyktPnRwX2ZyZWUobyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrU2VuZE1ldGhXcmFwcGVyX2NhbGwoVGFza1NlbmRNZXRoV3JhcHBlciAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgcmV0dXJuIHRhc2tfY2FsbF9zdGVwKG8tPnN3X3Rhc2ssIG8tPnN3X2FyZyk7Cit9CisKK3N0YXRpYyBpbnQKK1Rhc2tTZW5kTWV0aFdyYXBwZXJfdHJhdmVyc2UoVGFza1NlbmRNZXRoV3JhcHBlciAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoby0+c3dfdGFzayk7CisgICAgUHlfVklTSVQoby0+c3dfYXJnKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1Rhc2tTZW5kTWV0aFdyYXBwZXJfZ2V0X19fc2VsZl9fKFRhc2tTZW5kTWV0aFdyYXBwZXIgKm8pCit7CisgICAgaWYgKG8tPnN3X3Rhc2spIHsKKyAgICAgICAgUHlfSU5DUkVGKG8tPnN3X3Rhc2spOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilvLT5zd190YXNrOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIFRhc2tTZW5kTWV0aFdyYXBwZXJfZ2V0c2V0bGlzdFtdID0geworICAgIHsiX19zZWxmX18iLCAoZ2V0dGVyKVRhc2tTZW5kTWV0aFdyYXBwZXJfZ2V0X19fc2VsZl9fLCBOVUxMLCBOVUxMfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKK1B5VHlwZU9iamVjdCBUYXNrU2VuZE1ldGhXcmFwcGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIlRhc2tTZW5kTWV0aFdyYXBwZXIiLAorICAgIC50cF9iYXNpY3NpemUgPSBzaXplb2YoVGFza1NlbmRNZXRoV3JhcHBlciksCisgICAgLnRwX2l0ZW1zaXplID0gMCwKKyAgICAudHBfZ2V0c2V0ID0gVGFza1NlbmRNZXRoV3JhcHBlcl9nZXRzZXRsaXN0LAorICAgIC50cF9kZWFsbG9jID0gKGRlc3RydWN0b3IpVGFza1NlbmRNZXRoV3JhcHBlcl9kZWFsbG9jLAorICAgIC50cF9jYWxsID0gKHRlcm5hcnlmdW5jKVRhc2tTZW5kTWV0aFdyYXBwZXJfY2FsbCwKKyAgICAudHBfZ2V0YXR0cm8gPSBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCisgICAgLnRwX3RyYXZlcnNlID0gKHRyYXZlcnNlcHJvYylUYXNrU2VuZE1ldGhXcmFwcGVyX3RyYXZlcnNlLAorICAgIC50cF9jbGVhciA9IChpbnF1aXJ5KVRhc2tTZW5kTWV0aFdyYXBwZXJfY2xlYXIsCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorVGFza1NlbmRNZXRoV3JhcHBlcl9uZXcoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBUYXNrU2VuZE1ldGhXcmFwcGVyICpvOworICAgIG8gPSBQeU9iamVjdF9HQ19OZXcoVGFza1NlbmRNZXRoV3JhcHBlciwgJlRhc2tTZW5kTWV0aFdyYXBwZXJfVHlwZSk7CisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYodGFzayk7CisgICAgby0+c3dfdGFzayA9IHRhc2s7CisKKyAgICBQeV9YSU5DUkVGKGFyZyk7CisgICAgby0+c3dfYXJnID0gYXJnOworCisgICAgUHlPYmplY3RfR0NfVHJhY2sobyk7CisgICAgcmV0dXJuIChQeU9iamVjdCopIG87Cit9CisKKy8qIC0tLS0tIFRhc2suX3dha2V1cCB3cmFwcGVyICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrV2FrZXVwTWV0aFdyYXBwZXJfY2FsbChUYXNrV2FrZXVwTWV0aFdyYXBwZXIgKm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKmZ1dDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3wiLCAmZnV0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gdGFza19jYWxsX3dha2V1cChvLT53d190YXNrLCBmdXQpOworfQorCitzdGF0aWMgaW50CitUYXNrV2FrZXVwTWV0aFdyYXBwZXJfY2xlYXIoVGFza1dha2V1cE1ldGhXcmFwcGVyICpvKQoreworICAgIFB5X0NMRUFSKG8tPnd3X3Rhc2spOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitUYXNrV2FrZXVwTWV0aFdyYXBwZXJfdHJhdmVyc2UoVGFza1dha2V1cE1ldGhXcmFwcGVyICpvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKG8tPnd3X3Rhc2spOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorVGFza1dha2V1cE1ldGhXcmFwcGVyX2RlYWxsb2MoVGFza1dha2V1cE1ldGhXcmFwcGVyICpvKQoreworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobyk7CisgICAgKHZvaWQpVGFza1dha2V1cE1ldGhXcmFwcGVyX2NsZWFyKG8pOworICAgIFB5X1RZUEUobyktPnRwX2ZyZWUobyk7Cit9CisKK1B5VHlwZU9iamVjdCBUYXNrV2FrZXVwTWV0aFdyYXBwZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiVGFza1dha2V1cE1ldGhXcmFwcGVyIiwKKyAgICAudHBfYmFzaWNzaXplID0gc2l6ZW9mKFRhc2tXYWtldXBNZXRoV3JhcHBlciksCisgICAgLnRwX2l0ZW1zaXplID0gMCwKKyAgICAudHBfZGVhbGxvYyA9IChkZXN0cnVjdG9yKVRhc2tXYWtldXBNZXRoV3JhcHBlcl9kZWFsbG9jLAorICAgIC50cF9jYWxsID0gKHRlcm5hcnlmdW5jKVRhc2tXYWtldXBNZXRoV3JhcHBlcl9jYWxsLAorICAgIC50cF9nZXRhdHRybyA9IFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLAorICAgIC50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAudHBfdHJhdmVyc2UgPSAodHJhdmVyc2Vwcm9jKVRhc2tXYWtldXBNZXRoV3JhcHBlcl90cmF2ZXJzZSwKKyAgICAudHBfY2xlYXIgPSAoaW5xdWlyeSlUYXNrV2FrZXVwTWV0aFdyYXBwZXJfY2xlYXIsCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorVGFza1dha2V1cE1ldGhXcmFwcGVyX25ldyhUYXNrT2JqICp0YXNrKQoreworICAgIFRhc2tXYWtldXBNZXRoV3JhcHBlciAqbzsKKyAgICBvID0gUHlPYmplY3RfR0NfTmV3KFRhc2tXYWtldXBNZXRoV3JhcHBlciwgJlRhc2tXYWtldXBNZXRoV3JhcHBlcl9UeXBlKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRih0YXNrKTsKKyAgICBvLT53d190YXNrID0gdGFzazsKKworICAgIFB5T2JqZWN0X0dDX1RyYWNrKG8pOworICAgIHJldHVybiAoUHlPYmplY3QqKSBvOworfQorCisvKiAtLS0tLSBUYXNrICovCisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLlRhc2suX19pbml0X18KKworICAgIGNvcm86ICdPJworICAgICoKKyAgICBsb29wOiAnTycgPSBOVUxMCisKK0EgY29yb3V0aW5lIHdyYXBwZWQgaW4gYSBGdXR1cmUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBpbnQKK19hc3luY2lvX1Rhc2tfX19pbml0X19faW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqY29ybywgUHlPYmplY3QgKmxvb3ApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWYyNDc3NGMyMjg3ZmMyZiBpbnB1dD03MWQ4ZDI4YzIwMWExOGNkXSovCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihhZGQpOworCisgICAgaWYgKGZ1dHVyZV9pbml0KChGdXR1cmVPYmoqKXNlbGYsIGxvb3ApKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzZWxmLT50YXNrX2Z1dF93YWl0ZXIgPSBOVUxMOworICAgIHNlbGYtPnRhc2tfbXVzdF9jYW5jZWwgPSAwOworICAgIHNlbGYtPnRhc2tfbG9nX2Rlc3Ryb3lfcGVuZGluZyA9IDE7CisKKyAgICBQeV9JTkNSRUYoY29ybyk7CisgICAgc2VsZi0+dGFza19jb3JvID0gY29ybzsKKworICAgIGlmICh0YXNrX2NhbGxfc3RlcF9zb29uKHNlbGYsIE5VTEwpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGFsbF90YXNrcywgJlB5SWRfYWRkLCAiTyIsIHNlbGYsIE5VTEwpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXMpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK1Rhc2tPYmpfY2xlYXIoVGFza09iaiAqdGFzaykKK3sKKyAgICAodm9pZClGdXR1cmVPYmpfY2xlYXIoKEZ1dHVyZU9iaiopIHRhc2spOworICAgIFB5X0NMRUFSKHRhc2stPnRhc2tfY29ybyk7CisgICAgUHlfQ0xFQVIodGFzay0+dGFza19mdXRfd2FpdGVyKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorVGFza09ial90cmF2ZXJzZShUYXNrT2JqICp0YXNrLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVCh0YXNrLT50YXNrX2Nvcm8pOworICAgIFB5X1ZJU0lUKHRhc2stPnRhc2tfZnV0X3dhaXRlcik7CisgICAgKHZvaWQpRnV0dXJlT2JqX3RyYXZlcnNlKChGdXR1cmVPYmoqKSB0YXNrLCB2aXNpdCwgYXJnKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1Rhc2tPYmpfZ2V0X2xvZ19kZXN0cm95X3BlbmRpbmcoVGFza09iaiAqdGFzaykKK3sKKyAgICBpZiAodGFzay0+dGFza19sb2dfZGVzdHJveV9wZW5kaW5nKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworc3RhdGljIGludAorVGFza09ial9zZXRfbG9nX2Rlc3Ryb3lfcGVuZGluZyhUYXNrT2JqICp0YXNrLCBQeU9iamVjdCAqdmFsKQoreworICAgIGludCBpc190cnVlID0gUHlPYmplY3RfSXNUcnVlKHZhbCk7CisgICAgaWYgKGlzX3RydWUgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgdGFzay0+dGFza19sb2dfZGVzdHJveV9wZW5kaW5nID0gaXNfdHJ1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1Rhc2tPYmpfZ2V0X211c3RfY2FuY2VsKFRhc2tPYmogKnRhc2spCit7CisgICAgaWYgKHRhc2stPnRhc2tfbXVzdF9jYW5jZWwpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorVGFza09ial9nZXRfY29ybyhUYXNrT2JqICp0YXNrKQoreworICAgIGlmICh0YXNrLT50YXNrX2Nvcm8pIHsKKyAgICAgICAgUHlfSU5DUkVGKHRhc2stPnRhc2tfY29ybyk7CisgICAgICAgIHJldHVybiB0YXNrLT50YXNrX2Nvcm87CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitUYXNrT2JqX2dldF9mdXRfd2FpdGVyKFRhc2tPYmogKnRhc2spCit7CisgICAgaWYgKHRhc2stPnRhc2tfZnV0X3dhaXRlcikgeworICAgICAgICBQeV9JTkNSRUYodGFzay0+dGFza19mdXRfd2FpdGVyKTsKKyAgICAgICAgcmV0dXJuIHRhc2stPnRhc2tfZnV0X3dhaXRlcjsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfYXN5bmNpby5UYXNrLmN1cnJlbnRfdGFzaworCisgICAgbG9vcDogJ08nID0gTlVMTAorCitSZXR1cm4gdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2sgaW4gYW4gZXZlbnQgbG9vcCBvciBOb25lLgorCitCeSBkZWZhdWx0IHRoZSBjdXJyZW50IHRhc2sgZm9yIHRoZSBjdXJyZW50IGV2ZW50IGxvb3AgaXMgcmV0dXJuZWQuCisKK05vbmUgaXMgcmV0dXJuZWQgd2hlbiBjYWxsZWQgbm90IGluIHRoZSBjb250ZXh0IG9mIGEgVGFzay4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfY3VycmVudF90YXNrX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqbG9vcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OWZiZTczMzJjNTE2ZTAzIGlucHV0PWNkNzg0NTM3ZjAyY2Y4MzNdKi8KK3sKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKGxvb3AgPT0gTlVMTCkgeworICAgICAgICBsb29wID0gUHlPYmplY3RfQ2FsbE9iamVjdChhc3luY2lvX2dldF9ldmVudF9sb29wLCBOVUxMKTsKKyAgICAgICAgaWYgKGxvb3AgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXMgPSBQeURpY3RfR2V0SXRlbShjdXJyZW50X3Rhc2tzLCBsb29wKTsKKyAgICAgICAgUHlfREVDUkVGKGxvb3ApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gUHlEaWN0X0dldEl0ZW0oY3VycmVudF90YXNrcywgbG9vcCk7CisgICAgfQorCisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgordGFza19hbGxfdGFza3MoUHlPYmplY3QgKmxvb3ApCit7CisgICAgUHlPYmplY3QgKnRhc2s7CisgICAgUHlPYmplY3QgKnRhc2tfbG9vcDsKKyAgICBQeU9iamVjdCAqc2V0OworICAgIFB5T2JqZWN0ICppdGVyOworCisgICAgYXNzZXJ0KGxvb3AgIT0gTlVMTCk7CisKKyAgICBzZXQgPSBQeVNldF9OZXcoTlVMTCk7CisgICAgaWYgKHNldCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGFsbF90YXNrcyk7CisgICAgaWYgKGl0ZXIgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgd2hpbGUgKCh0YXNrID0gUHlJdGVyX05leHQoaXRlcikpKSB7CisgICAgICAgIHRhc2tfbG9vcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFzaywgIl9sb29wIik7CisgICAgICAgIGlmICh0YXNrX2xvb3AgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRhc2spOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIGlmICh0YXNrX2xvb3AgPT0gbG9vcCkgeworICAgICAgICAgICAgaWYgKFB5U2V0X0FkZChzZXQsIHRhc2spID09IC0xKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhc2tfbG9vcCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRhc2spOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodGFza19sb29wKTsKKyAgICAgICAgUHlfREVDUkVGKHRhc2spOworICAgIH0KKworICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICByZXR1cm4gc2V0OworCitmYWlsOgorICAgIFB5X1hERUNSRUYoc2V0KTsKKyAgICBQeV9YREVDUkVGKGl0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitAY2xhc3NtZXRob2QKK19hc3luY2lvLlRhc2suYWxsX3Rhc2tzCisKKyAgICBsb29wOiAnTycgPSBOVUxMCisKK1JldHVybiBhIHNldCBvZiBhbGwgdGFza3MgZm9yIGFuIGV2ZW50IGxvb3AuCisKK0J5IGRlZmF1bHQgYWxsIHRhc2tzIGZvciB0aGUgY3VycmVudCBldmVudCBsb29wIGFyZSByZXR1cm5lZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfYWxsX3Rhc2tzX2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqbG9vcCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xMWY5YjIwNzQ5Y2NjYTVkIGlucHV0PWNkNjRhYTVmODhiZDVjNDldKi8KK3sKKyAgICBQeU9iamVjdCAqcmVzOworCisgICAgaWYgKGxvb3AgPT0gTlVMTCkgeworICAgICAgICBsb29wID0gUHlPYmplY3RfQ2FsbE9iamVjdChhc3luY2lvX2dldF9ldmVudF9sb29wLCBOVUxMKTsKKyAgICAgICAgaWYgKGxvb3AgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXMgPSB0YXNrX2FsbF90YXNrcyhsb29wKTsKKyAgICAgICAgUHlfREVDUkVGKGxvb3ApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gdGFza19hbGxfdGFza3MobG9vcCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlczsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uVGFzay5fcmVwcl9pbmZvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX19yZXByX2luZm9faW1wbChUYXNrT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZhNDkwZWI2NmQ1YmEzNGIgaW5wdXQ9M2M2ZDA1MWVkM2RkZWM4Yl0qLworeworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAorICAgICAgICBhc3luY2lvX3Rhc2tfcmVwcl9pbmZvX2Z1bmMsIHNlbGYsIE5VTEwpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYXN5bmNpby5UYXNrLmNhbmNlbAorCitSZXF1ZXN0IHRoYXQgdGhpcyB0YXNrIGNhbmNlbCBpdHNlbGYuCisKK1RoaXMgYXJyYW5nZXMgZm9yIGEgQ2FuY2VsbGVkRXJyb3IgdG8gYmUgdGhyb3duIGludG8gdGhlCit3cmFwcGVkIGNvcm91dGluZSBvbiB0aGUgbmV4dCBjeWNsZSB0aHJvdWdoIHRoZSBldmVudCBsb29wLgorVGhlIGNvcm91dGluZSB0aGVuIGhhcyBhIGNoYW5jZSB0byBjbGVhbiB1cCBvciBldmVuIGRlbnkKK3RoZSByZXF1ZXN0IHVzaW5nIHRyeS9leGNlcHQvZmluYWxseS4KKworVW5saWtlIEZ1dHVyZS5jYW5jZWwsIHRoaXMgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlCit0YXNrIHdpbGwgYmUgY2FuY2VsbGVkOiB0aGUgZXhjZXB0aW9uIG1pZ2h0IGJlIGNhdWdodCBhbmQKK2FjdGVkIHVwb24sIGRlbGF5aW5nIGNhbmNlbGxhdGlvbiBvZiB0aGUgdGFzayBvciBwcmV2ZW50aW5nCitjYW5jZWxsYXRpb24gY29tcGxldGVseS4gIFRoZSB0YXNrIG1heSBhbHNvIHJldHVybiBhIHZhbHVlIG9yCityYWlzZSBhIGRpZmZlcmVudCBleGNlcHRpb24uCisKK0ltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgVGFzay5jYW5jZWxsZWQoKSB3aWxsCitub3QgcmV0dXJuIFRydWUgKHVubGVzcyB0aGUgdGFzayB3YXMgYWxyZWFkeSBjYW5jZWxsZWQpLiAgQQordGFzayB3aWxsIGJlIG1hcmtlZCBhcyBjYW5jZWxsZWQgd2hlbiB0aGUgd3JhcHBlZCBjb3JvdXRpbmUKK3Rlcm1pbmF0ZXMgd2l0aCBhIENhbmNlbGxlZEVycm9yIGV4Y2VwdGlvbiAoZXZlbiBpZiBjYW5jZWwoKQord2FzIG5vdCBjYWxsZWQpLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19jYW5jZWxfaW1wbChUYXNrT2JqICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZiZmMwNDc5ZGE5ZDU3NTcgaW5wdXQ9MTNmOWJmNDk2Njk1Y2I1Ml0qLworeworICAgIGlmIChzZWxmLT50YXNrX3N0YXRlICE9IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KKworICAgIGlmIChzZWxmLT50YXNrX2Z1dF93YWl0ZXIpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgaW50IGlzX3RydWU7CisKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIHNlbGYtPnRhc2tfZnV0X3dhaXRlciwgJlB5SWRfY2FuY2VsLCBOVUxMKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlzX3RydWUgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIGlmIChpc190cnVlIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNfdHJ1ZSkgeworICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZWxmLT50YXNrX211c3RfY2FuY2VsID0gMTsKKyAgICBQeV9SRVRVUk5fVFJVRTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uVGFzay5nZXRfc3RhY2sKKworICAgICoKKyAgICBsaW1pdDogJ08nID0gTm9uZQorCitSZXR1cm4gdGhlIGxpc3Qgb2Ygc3RhY2sgZnJhbWVzIGZvciB0aGlzIHRhc2sncyBjb3JvdXRpbmUuCisKK0lmIHRoZSBjb3JvdXRpbmUgaXMgbm90IGRvbmUsIHRoaXMgcmV0dXJucyB0aGUgc3RhY2sgd2hlcmUgaXQgaXMKK3N1c3BlbmRlZC4gIElmIHRoZSBjb3JvdXRpbmUgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3Igd2FzCitjYW5jZWxsZWQsIHRoaXMgcmV0dXJucyBhbiBlbXB0eSBsaXN0LiAgSWYgdGhlIGNvcm91dGluZSB3YXMKK3Rlcm1pbmF0ZWQgYnkgYW4gZXhjZXB0aW9uLCB0aGlzIHJldHVybnMgdGhlIGxpc3Qgb2YgdHJhY2ViYWNrCitmcmFtZXMuCisKK1RoZSBmcmFtZXMgYXJlIGFsd2F5cyBvcmRlcmVkIGZyb20gb2xkZXN0IHRvIG5ld2VzdC4KKworVGhlIG9wdGlvbmFsIGxpbWl0IGdpdmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFtZXMgdG8KK3JldHVybjsgYnkgZGVmYXVsdCBhbGwgYXZhaWxhYmxlIGZyYW1lcyBhcmUgcmV0dXJuZWQuICBJdHMKK21lYW5pbmcgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciBhIHN0YWNrIG9yIGEgdHJhY2ViYWNrIGlzCityZXR1cm5lZDogdGhlIG5ld2VzdCBmcmFtZXMgb2YgYSBzdGFjayBhcmUgcmV0dXJuZWQsIGJ1dCB0aGUKK29sZGVzdCBmcmFtZXMgb2YgYSB0cmFjZWJhY2sgYXJlIHJldHVybmVkLiAgKFRoaXMgbWF0Y2hlcyB0aGUKK2JlaGF2aW9yIG9mIHRoZSB0cmFjZWJhY2sgbW9kdWxlLikKKworRm9yIHJlYXNvbnMgYmV5b25kIG91ciBjb250cm9sLCBvbmx5IG9uZSBzdGFjayBmcmFtZSBpcworcmV0dXJuZWQgZm9yIGEgc3VzcGVuZGVkIGNvcm91dGluZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfZ2V0X3N0YWNrX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmxpbWl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM5YWVlZWViZDFlMTgxMTggaW5wdXQ9YjE5MjAyMzBhNzY2ZDE3YV0qLworeworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAorICAgICAgICBhc3luY2lvX3Rhc2tfZ2V0X3N0YWNrX2Z1bmMsIHNlbGYsIGxpbWl0LCBOVUxMKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uVGFzay5wcmludF9zdGFjaworCisgICAgKgorICAgIGxpbWl0OiAnTycgPSBOb25lCisgICAgZmlsZTogJ08nID0gTm9uZQorCitQcmludCB0aGUgc3RhY2sgb3IgdHJhY2ViYWNrIGZvciB0aGlzIHRhc2sncyBjb3JvdXRpbmUuCisKK1RoaXMgcHJvZHVjZXMgb3V0cHV0IHNpbWlsYXIgdG8gdGhhdCBvZiB0aGUgdHJhY2ViYWNrIG1vZHVsZSwKK2ZvciB0aGUgZnJhbWVzIHJldHJpZXZlZCBieSBnZXRfc3RhY2soKS4gIFRoZSBsaW1pdCBhcmd1bWVudAoraXMgcGFzc2VkIHRvIGdldF9zdGFjaygpLiAgVGhlIGZpbGUgYXJndW1lbnQgaXMgYW4gSS9PIHN0cmVhbQordG8gd2hpY2ggdGhlIG91dHB1dCBpcyB3cml0dGVuOyBieSBkZWZhdWx0IG91dHB1dCBpcyB3cml0dGVuCit0byBzeXMuc3RkZXJyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19wcmludF9zdGFja19pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZSkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzM5ZTEwMzE0Y2QzZjRkIGlucHV0PTE5ZjFlOTlhYjU0MDBiYzNdKi8KK3sKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKKyAgICAgICAgYXN5bmNpb190YXNrX3ByaW50X3N0YWNrX2Z1bmMsIHNlbGYsIGxpbWl0LCBmaWxlLCBOVUxMKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2FzeW5jaW8uVGFzay5fc3RlcAorCisgICAgZXhjOiAnTycgPSBOVUxMCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX19zdGVwX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmV4YykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZWQyM2YwY2VmZDVhZTQyIGlucHV0PWFkYTRiMjMyNGU1MzcwYWZdKi8KK3sKKyAgICByZXR1cm4gdGFza19zdGVwKHNlbGYsIGV4YyA9PSBQeV9Ob25lID8gTlVMTCA6IGV4Yyk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19hc3luY2lvLlRhc2suX3dha2V1cAorCisgICAgZnV0OiAnTycKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3dha2V1cF9pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpmdXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzVjYjM0MWM3NjBmZDA3MSBpbnB1dD0xMWVlNDkxOGE1YmRiZjIxXSovCit7CisgICAgcmV0dXJuIHRhc2tfd2FrZXVwKHNlbGYsIGZ1dCk7Cit9CisKK3N0YXRpYyB2b2lkCitUYXNrT2JqX2ZpbmFsaXplKFRhc2tPYmogKnRhc2spCit7CisgICAgX1B5X0lERU5USUZJRVIoY2FsbF9leGNlcHRpb25faGFuZGxlcik7CisgICAgX1B5X0lERU5USUZJRVIodGFzayk7CisgICAgX1B5X0lERU5USUZJRVIobWVzc2FnZSk7CisgICAgX1B5X0lERU5USUZJRVIoc291cmNlX3RyYWNlYmFjayk7CisKKyAgICBQeU9iamVjdCAqbWVzc2FnZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmNvbnRleHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICBpZiAodGFzay0+dGFza19zdGF0ZSAhPSBTVEFURV9QRU5ESU5HIHx8ICF0YXNrLT50YXNrX2xvZ19kZXN0cm95X3BlbmRpbmcpIHsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICBjb250ZXh0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiVGFzayB3YXMgZGVzdHJveWVkIGJ1dCBpdCBpcyBwZW5kaW5nISIpOworICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9tZXNzYWdlLCBtZXNzYWdlKSA8IDAgfHwKKyAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfdGFzaywgKFB5T2JqZWN0Kil0YXNrKSA8IDApCisgICAgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgaWYgKHRhc2stPnRhc2tfc291cmNlX3RiICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX3NvdXJjZV90cmFjZWJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLT50YXNrX3NvdXJjZV90YikgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0YXNrLT50YXNrX2xvb3AsICZQeUlkX2NhbGxfZXhjZXB0aW9uX2hhbmRsZXIpOworICAgIGlmIChmdW5jICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIGNvbnRleHQpOworICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmdW5jKTsKKyAgICAgICAgfQorICAgIH0KKworZmluYWxseToKKyAgICBQeV9DTEVBUihjb250ZXh0KTsKKyAgICBQeV9DTEVBUihtZXNzYWdlKTsKKyAgICBQeV9DTEVBUihmdW5jKTsKKyAgICBQeV9DTEVBUihyZXMpOworCisgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7CisKK2RvbmU6CisgICAgRnV0dXJlT2JqX2ZpbmFsaXplKChGdXR1cmVPYmoqKXRhc2spOworfQorCitzdGF0aWMgdm9pZCBUYXNrT2JqX2RlYWxsb2MoUHlPYmplY3QgKik7ICAvKiBOZWVkcyBUYXNrX0NoZWNrRXhhY3QgKi8KKworc3RhdGljIFB5TWV0aG9kRGVmIFRhc2tUeXBlX21ldGhvZHNbXSA9IHsKKyAgICBfQVNZTkNJT19GVVRVUkVfUkVTVUxUX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9FWENFUFRJT05fTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX1NFVF9SRVNVTFRfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX1NFVF9FWENFUFRJT05fTUVUSE9EREVGCisgICAgX0FTWU5DSU9fRlVUVVJFX0FERF9ET05FX0NBTExCQUNLX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9SRU1PVkVfRE9ORV9DQUxMQkFDS19NRVRIT0RERUYKKyAgICBfQVNZTkNJT19GVVRVUkVfQ0FOQ0VMTEVEX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX0ZVVFVSRV9ET05FX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX1RBU0tfQ1VSUkVOVF9UQVNLX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX1RBU0tfQUxMX1RBU0tTX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX1RBU0tfQ0FOQ0VMX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX1RBU0tfR0VUX1NUQUNLX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX1RBU0tfUFJJTlRfU1RBQ0tfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fVEFTS19fV0FLRVVQX01FVEhPRERFRgorICAgIF9BU1lOQ0lPX1RBU0tfX1NURVBfTUVUSE9EREVGCisgICAgX0FTWU5DSU9fVEFTS19fUkVQUl9JTkZPX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBUYXNrVHlwZV9nZXRzZXRsaXN0W10gPSB7CisgICAgRlVUVVJFX0NPTU1PTl9HRVRTRVRMSVNUCisgICAgeyJfbG9nX2Rlc3Ryb3lfcGVuZGluZyIsIChnZXR0ZXIpVGFza09ial9nZXRfbG9nX2Rlc3Ryb3lfcGVuZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHRlcilUYXNrT2JqX3NldF9sb2dfZGVzdHJveV9wZW5kaW5nLCBOVUxMfSwKKyAgICB7Il9tdXN0X2NhbmNlbCIsIChnZXR0ZXIpVGFza09ial9nZXRfbXVzdF9jYW5jZWwsIE5VTEwsIE5VTEx9LAorICAgIHsiX2Nvcm8iLCAoZ2V0dGVyKVRhc2tPYmpfZ2V0X2Nvcm8sIE5VTEwsIE5VTEx9LAorICAgIHsiX2Z1dF93YWl0ZXIiLCAoZ2V0dGVyKVRhc2tPYmpfZ2V0X2Z1dF93YWl0ZXIsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBUYXNrVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2FzeW5jaW8uVGFzayIsCisgICAgc2l6ZW9mKFRhc2tPYmopLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgLnRwX2Jhc2UgPSAmRnV0dXJlVHlwZSwKKyAgICAudHBfZGVhbGxvYyA9IFRhc2tPYmpfZGVhbGxvYywKKyAgICAudHBfYXNfYXN5bmMgPSAmRnV0dXJlVHlwZV9hc19hc3luYywKKyAgICAudHBfcmVwciA9IChyZXByZnVuYylGdXR1cmVPYmpfcmVwciwKKyAgICAudHBfZmxhZ3MgPSBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfCBQeV9UUEZMQUdTX0JBU0VUWVBFCisgICAgICAgIHwgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLAorICAgIC50cF9kb2MgPSBfYXN5bmNpb19UYXNrX19faW5pdF9fX19kb2NfXywKKyAgICAudHBfdHJhdmVyc2UgPSAodHJhdmVyc2Vwcm9jKVRhc2tPYmpfdHJhdmVyc2UsCisgICAgLnRwX2NsZWFyID0gKGlucXVpcnkpVGFza09ial9jbGVhciwKKyAgICAudHBfd2Vha2xpc3RvZmZzZXQgPSBvZmZzZXRvZihUYXNrT2JqLCB0YXNrX3dlYWtyZWZsaXN0KSwKKyAgICAudHBfaXRlciA9IChnZXRpdGVyZnVuYylmdXR1cmVfbmV3X2l0ZXIsCisgICAgLnRwX21ldGhvZHMgPSBUYXNrVHlwZV9tZXRob2RzLAorICAgIC50cF9nZXRzZXQgPSBUYXNrVHlwZV9nZXRzZXRsaXN0LAorICAgIC50cF9kaWN0b2Zmc2V0ID0gb2Zmc2V0b2YoVGFza09iaiwgZGljdCksCisgICAgLnRwX2luaXQgPSAoaW5pdHByb2MpX2FzeW5jaW9fVGFza19fX2luaXRfXywKKyAgICAudHBfbmV3ID0gUHlUeXBlX0dlbmVyaWNOZXcsCisgICAgLnRwX2ZpbmFsaXplID0gKGRlc3RydWN0b3IpVGFza09ial9maW5hbGl6ZSwKK307CisKKyNkZWZpbmUgVGFza19DaGVja0V4YWN0KG9iaikgKFB5X1RZUEUob2JqKSA9PSAmVGFza1R5cGUpCisKK3N0YXRpYyB2b2lkCitUYXNrT2JqX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCit7CisgICAgVGFza09iaiAqdGFzayA9IChUYXNrT2JqICopc2VsZjsKKworICAgIGlmIChUYXNrX0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgLyogV2hlbiBmdXQgaXMgc3ViY2xhc3Mgb2YgVGFzaywgZmluYWxpemVyIGlzIGNhbGxlZCBmcm9tCisgICAgICAgICAqIHN1YnR5cGVfZGVhbGxvYy4KKyAgICAgICAgICovCisgICAgICAgIGlmIChQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2Moc2VsZikgPCAwKSB7CisgICAgICAgICAgICAvLyByZXN1cnJlY3RlZC4KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0YXNrLT50YXNrX3dlYWtyZWZsaXN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcyhzZWxmKTsKKyAgICB9CisKKyAgICAodm9pZClUYXNrT2JqX2NsZWFyKHRhc2spOworICAgIFB5X1RZUEUodGFzayktPnRwX2ZyZWUodGFzayk7Cit9CisKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgordGFza19jYWxsX3dha2V1cChUYXNrT2JqICp0YXNrLCBQeU9iamVjdCAqZnV0KQoreworICAgIGlmIChUYXNrX0NoZWNrRXhhY3QodGFzaykpIHsKKyAgICAgICAgcmV0dXJuIHRhc2tfd2FrZXVwKHRhc2ssIGZ1dCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBgdGFza2AgaXMgYSBzdWJjbGFzcyBvZiBUYXNrICovCisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgKFB5T2JqZWN0Kil0YXNrLCAmUHlJZF9fd2FrZXVwLCAiTyIsIGZ1dCwgTlVMTCk7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKK3Rhc2tfY2FsbF9zdGVwKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKFRhc2tfQ2hlY2tFeGFjdCh0YXNrKSkgeworICAgICAgICByZXR1cm4gdGFza19zdGVwKHRhc2ssIGFyZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBgdGFza2AgaXMgYSBzdWJjbGFzcyBvZiBUYXNrICovCisgICAgICAgIGlmIChhcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgYXJnID0gUHlfTm9uZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIChQeU9iamVjdCopdGFzaywgJlB5SWRfX3N0ZXAsICJPIiwgYXJnLCBOVUxMKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3Rhc2tfY2FsbF9zdGVwX3Nvb24oVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqaGFuZGxlOworCisgICAgUHlPYmplY3QgKmNiID0gVGFza1NlbmRNZXRoV3JhcHBlcl9uZXcodGFzaywgYXJnKTsKKyAgICBpZiAoY2IgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaGFuZGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgdGFzay0+dGFza19sb29wLCAmUHlJZF9jYWxsX3Nvb24sICJPIiwgY2IsIE5VTEwpOworICAgIFB5X0RFQ1JFRihjYik7CisgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoaGFuZGxlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rhc2tfc2V0X2Vycm9yX3Nvb24oVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmV0LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICBQeU9iamVjdCogbXNnOworCisgICAgdmFfbGlzdCB2YXJnczsKKyNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCisgICAgdmFfc3RhcnQodmFyZ3MsIGZvcm1hdCk7CisjZWxzZQorICAgIHZhX3N0YXJ0KHZhcmdzKTsKKyNlbmRpZgorICAgIG1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworCisgICAgaWYgKG1zZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICplID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhldCwgbXNnLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYobXNnKTsKKyAgICBpZiAoZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICh0YXNrX2NhbGxfc3RlcF9zb29uKHRhc2ssIGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfREVDUkVGKGUpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGFza19zdGVwX2ltcGwoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmV4YykKK3sKKyAgICBpbnQgcmVzOworICAgIGludCBjbGVhcl9leGMgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjb3JvID0gdGFzay0+dGFza19jb3JvOworICAgIFB5T2JqZWN0ICpvOworCisgICAgaWYgKHRhc2stPnRhc2tfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX3N0ZXAoKTogYWxyZWFkeSBkb25lOiAlUiAlUiIsCisgICAgICAgICAgICAgICAgICAgICB0YXNrLAorICAgICAgICAgICAgICAgICAgICAgZXhjID8gZXhjIDogUHlfTm9uZSk7CisgICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBpZiAodGFzay0+dGFza19tdXN0X2NhbmNlbCkgeworICAgICAgICBhc3NlcnQoZXhjICE9IFB5X05vbmUpOworCisgICAgICAgIGlmIChleGMpIHsKKyAgICAgICAgICAgIC8qIENoZWNrIGlmIGV4YyBpcyBhIENhbmNlbGxlZEVycm9yICovCisgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9Jc0luc3RhbmNlKGV4YywgYXN5bmNpb19DYW5jZWxsZWRFcnJvcik7CisgICAgICAgICAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgICAgICAgICAgLyogQW4gZXJyb3Igb2NjdXJyZWQsIGFib3J0ICovCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZXhjIGlzIG5vdCBDYW5jZWxsZWRFcnJvcjsgcmVzZXQgaXQgdG8gTlVMTCAqLworICAgICAgICAgICAgICAgIGV4YyA9IE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWV4YykgeworICAgICAgICAgICAgLyogZXhjIHdhcyBub3QgYSBDYW5jZWxsZWRFcnJvciAqLworICAgICAgICAgICAgZXhjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhhc3luY2lvX0NhbmNlbGxlZEVycm9yLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICghZXhjKSB7CisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2xlYXJfZXhjID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHRhc2stPnRhc2tfbXVzdF9jYW5jZWwgPSAwOworICAgIH0KKworICAgIFB5X0NMRUFSKHRhc2stPnRhc2tfZnV0X3dhaXRlcik7CisKKyAgICBpZiAoZXhjID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoY29ybykgfHwgUHlDb3JvX0NoZWNrRXhhY3QoY29ybykpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCopY29ybywgUHlfTm9uZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncygKKyAgICAgICAgICAgICAgICBjb3JvLCAmUHlJZF9zZW5kLCBQeV9Ob25lLCBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoCisgICAgICAgICAgICBjb3JvLCAmUHlJZF90aHJvdywgZXhjLCBOVUxMKTsKKyAgICAgICAgaWYgKGNsZWFyX2V4YykgeworICAgICAgICAgICAgLyogV2UgY3JlYXRlZCAnZXhjJyBkdXJpbmcgdGhpcyBjYWxsICovCisgICAgICAgICAgICBQeV9DTEVBUihleGMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpldCwgKmV2LCAqdGI7CisKKyAgICAgICAgaWYgKF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmbykgPT0gMCkgeworICAgICAgICAgICAgLyogVGhlIGVycm9yIGlzIFN0b3BJdGVyYXRpb24gYW5kIHRoYXQgbWVhbnMgdGhhdAorICAgICAgICAgICAgICAgdGhlIHVuZGVybHlpbmcgY29yb3V0aW5lIGhhcyByZXNvbHZlZCAqLworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IGZ1dHVyZV9zZXRfcmVzdWx0KChGdXR1cmVPYmoqKXRhc2ssIG8pOworICAgICAgICAgICAgUHlfREVDUkVGKG8pOworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoYXN5bmNpb19DYW5jZWxsZWRFcnJvcikpIHsKKyAgICAgICAgICAgIC8qIENhbmNlbGxlZEVycm9yICovCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGZ1dHVyZV9jYW5jZWwoKEZ1dHVyZU9iaiopdGFzayk7CisgICAgICAgIH0KKworICAgICAgICAvKiBTb21lIG90aGVyIGV4Y2VwdGlvbjsgcG9wIGl0IGFuZCBjYWxsIFRhc2suc2V0X2V4Y2VwdGlvbigpICovCisgICAgICAgIFB5RXJyX0ZldGNoKCZldCwgJmV2LCAmdGIpOworICAgICAgICBhc3NlcnQoZXQpOworICAgICAgICBpZiAoIWV2IHx8ICFQeU9iamVjdF9UeXBlQ2hlY2soZXYsIChQeVR5cGVPYmplY3QgKikgZXQpKSB7CisgICAgICAgICAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV0LCAmZXYsICZ0Yik7CisgICAgICAgIH0KKyAgICAgICAgbyA9IGZ1dHVyZV9zZXRfZXhjZXB0aW9uKChGdXR1cmVPYmoqKXRhc2ssIGV2KTsKKyAgICAgICAgaWYgKCFvKSB7CisgICAgICAgICAgICAvKiBBbiBleGNlcHRpb24gaW4gVGFzay5zZXRfZXhjZXB0aW9uKCkgKi8KKyAgICAgICAgICAgIFB5X1hERUNSRUYoZXQpOworICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7CisgICAgICAgICAgICBQeV9YREVDUkVGKGV2KTsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQobyA9PSBQeV9Ob25lKTsKKyAgICAgICAgUHlfQ0xFQVIobyk7CisKKyAgICAgICAgaWYgKCFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoZXQsIFB5RXhjX0V4Y2VwdGlvbikpIHsKKyAgICAgICAgICAgIC8qIFdlJ3ZlIGdvdCBhIEJhc2VFeGNlcHRpb247IHJlLXJhaXNlIGl0ICovCisgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGV0LCBldiwgdGIpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisKKyAgICAgICAgUHlfWERFQ1JFRihldCk7CisgICAgICAgIFB5X1hERUNSRUYodGIpOworICAgICAgICBQeV9YREVDUkVGKGV2KTsKKworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0ID09IChQeU9iamVjdCopdGFzaykgeworICAgICAgICAvKiBXZSBoYXZlIGEgdGFzayB0aGF0IHdhbnRzIHRvIGF3YWl0IG9uIGl0c2VsZiAqLworICAgICAgICBnb3RvIHNlbGZfYXdhaXQ7CisgICAgfQorCisgICAgLyogQ2hlY2sgaWYgYHJlc3VsdGAgaXMgRnV0dXJlT2JqIG9yIFRhc2tPYmogKGFuZCBub3QgYSBzdWJjbGFzcykgKi8KKyAgICBpZiAoRnV0dXJlX0NoZWNrRXhhY3QocmVzdWx0KSB8fCBUYXNrX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICBQeU9iamVjdCAqd3JhcHBlcjsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgRnV0dXJlT2JqICpmdXQgPSAoRnV0dXJlT2JqKilyZXN1bHQ7CisKKyAgICAgICAgLyogQ2hlY2sgaWYgYHJlc3VsdGAgZnV0dXJlIGlzIGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IGxvb3AgKi8KKyAgICAgICAgaWYgKGZ1dC0+ZnV0X2xvb3AgIT0gdGFzay0+dGFza19sb29wKSB7CisgICAgICAgICAgICBnb3RvIGRpZmZlcmVudF9sb29wOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZ1dC0+ZnV0X2Jsb2NraW5nKSB7CisgICAgICAgICAgICBmdXQtPmZ1dF9ibG9ja2luZyA9IDA7CisKKyAgICAgICAgICAgIC8qIHJlc3VsdC5hZGRfZG9uZV9jYWxsYmFjayh0YXNrLl93YWtldXApICovCisgICAgICAgICAgICB3cmFwcGVyID0gVGFza1dha2V1cE1ldGhXcmFwcGVyX25ldyh0YXNrKTsKKyAgICAgICAgICAgIGlmICh3cmFwcGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBmdXR1cmVfYWRkX2RvbmVfY2FsbGJhY2soKEZ1dHVyZU9iaiopcmVzdWx0LCB3cmFwcGVyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworCisgICAgICAgICAgICAvKiB0YXNrLl9mdXRfd2FpdGVyID0gcmVzdWx0ICovCisgICAgICAgICAgICB0YXNrLT50YXNrX2Z1dF93YWl0ZXIgPSByZXN1bHQ7ICAvKiBubyBpbmNyZWYgaXMgbmVjZXNzYXJ5ICovCisKKyAgICAgICAgICAgIGlmICh0YXNrLT50YXNrX211c3RfY2FuY2VsKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnI7CisgICAgICAgICAgICAgICAgciA9IGZ1dHVyZV9jYW5jZWwoZnV0KTsKKyAgICAgICAgICAgICAgICBpZiAociA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAociA9PSBQeV9UcnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHRhc2stPnRhc2tfbXVzdF9jYW5jZWwgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZ290byB5aWVsZF9pbnN0ZWFkb2ZfeWY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDaGVjayBpZiBgcmVzdWx0YCBpcyBhIEZ1dHVyZS1jb21wYXRpYmxlIG9iamVjdCAqLworICAgIG8gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHJlc3VsdCwgIl9hc3luY2lvX2Z1dHVyZV9ibG9ja2luZyIpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobyA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9DTEVBUihvKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGByZXN1bHRgIGlzIGEgRnV0dXJlLWNvbXBhdGlibGUgb2JqZWN0ICovCisgICAgICAgICAgICBQeU9iamVjdCAqd3JhcHBlcjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7CisKKyAgICAgICAgICAgIGludCBibG9ja2luZyA9IFB5T2JqZWN0X0lzVHJ1ZShvKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKG8pOworICAgICAgICAgICAgaWYgKGJsb2NraW5nIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogQ2hlY2sgaWYgYHJlc3VsdGAgZnV0dXJlIGlzIGF0dGFjaGVkIHRvIGEgZGlmZmVyZW50IGxvb3AgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpvbG9vcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcocmVzdWx0LCAiX2xvb3AiKTsKKyAgICAgICAgICAgIGlmIChvbG9vcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9sb29wICE9IHRhc2stPnRhc2tfbG9vcCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvbG9vcCk7CisgICAgICAgICAgICAgICAgZ290byBkaWZmZXJlbnRfbG9vcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvbG9vcCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChibG9ja2luZykgeworICAgICAgICAgICAgICAgIC8qIHJlc3VsdC5fYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcgPSBGYWxzZSAqLworICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCAiX2FzeW5jaW9fZnV0dXJlX2Jsb2NraW5nIiwgUHlfRmFsc2UpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiByZXN1bHQuYWRkX2RvbmVfY2FsbGJhY2sodGFzay5fd2FrZXVwKSAqLworICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBUYXNrV2FrZXVwTWV0aFdyYXBwZXJfbmV3KHRhc2spOworICAgICAgICAgICAgICAgIGlmICh3cmFwcGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgICAgICAgICByZXN1bHQsICZQeUlkX2FkZF9kb25lX2NhbGxiYWNrLCAiTyIsIHdyYXBwZXIsIE5VTEwpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih3cmFwcGVyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKworICAgICAgICAgICAgICAgIC8qIHRhc2suX2Z1dF93YWl0ZXIgPSByZXN1bHQgKi8KKyAgICAgICAgICAgICAgICB0YXNrLT50YXNrX2Z1dF93YWl0ZXIgPSByZXN1bHQ7ICAvKiBubyBpbmNyZWYgaXMgbmVjZXNzYXJ5ICovCisKKyAgICAgICAgICAgICAgICBpZiAodGFzay0+dGFza19tdXN0X2NhbmNlbCkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcjsKKyAgICAgICAgICAgICAgICAgICAgaW50IGlzX3RydWU7CisgICAgICAgICAgICAgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfY2FuY2VsLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaXNfdHJ1ZSA9IFB5T2JqZWN0X0lzVHJ1ZShyKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHIpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNfdHJ1ZSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzX3RydWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2stPnRhc2tfbXVzdF9jYW5jZWwgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBnb3RvIHlpZWxkX2luc3RlYWRvZl95ZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENoZWNrIGlmIGByZXN1bHRgIGlzIE5vbmUgKi8KKyAgICBpZiAocmVzdWx0ID09IFB5X05vbmUpIHsKKyAgICAgICAgLyogQmFyZSB5aWVsZCByZWxpbnF1aXNoZXMgY29udHJvbCBmb3Igb25lIGV2ZW50IGxvb3AgaXRlcmF0aW9uLiAqLworICAgICAgICBpZiAodGFza19jYWxsX3N0ZXBfc29vbih0YXNrLCBOVUxMKSkgeworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyogQ2hlY2sgaWYgYHJlc3VsdGAgaXMgYSBnZW5lcmF0b3IgKi8KKyAgICBvID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhpbnNwZWN0X2lzZ2VuZXJhdG9yLCByZXN1bHQsIE5VTEwpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgLyogQW4gZXhjZXB0aW9uIGluIGluc3BlY3QuaXNnZW5lcmF0b3IgKi8KKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICByZXMgPSBQeU9iamVjdF9Jc1RydWUobyk7CisgICAgUHlfQ0xFQVIobyk7CisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICAvKiBBbiBleGNlcHRpb24gd2hpbGUgY2hlY2tpbmcgaWYgJ3ZhbCcgaXMgVHJ1ZSAqLworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGlmIChyZXMgPT0gMSkgeworICAgICAgICAvKiBgcmVzdWx0YCBpcyBhIGdlbmVyYXRvciAqLworICAgICAgICBQeU9iamVjdCAqcmV0OworICAgICAgICByZXQgPSB0YXNrX3NldF9lcnJvcl9zb29uKAorICAgICAgICAgICAgdGFzaywgUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgInlpZWxkIHdhcyB1c2VkIGluc3RlYWQgb2YgeWllbGQgZnJvbSBmb3IgIgorICAgICAgICAgICAgImdlbmVyYXRvciBpbiB0YXNrICVSIHdpdGggJVMiLCB0YXNrLCByZXN1bHQpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICAvKiBUaGUgYHJlc3VsdGAgaXMgbm9uZSBvZiB0aGUgYWJvdmUgKi8KKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gdGFza19zZXRfZXJyb3Jfc29vbigKKyAgICAgICAgdGFzaywgUHlFeGNfUnVudGltZUVycm9yLCAiVGFzayBnb3QgYmFkIHlpZWxkOiAlUiIsIHJlc3VsdCk7CisKK3NlbGZfYXdhaXQ6CisgICAgbyA9IHRhc2tfc2V0X2Vycm9yX3Nvb24oCisgICAgICAgIHRhc2ssIFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgIlRhc2sgY2Fubm90IGF3YWl0IG9uIGl0c2VsZjogJVIiLCB0YXNrKTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gbzsKKworeWllbGRfaW5zdGVhZG9mX3lmOgorICAgIG8gPSB0YXNrX3NldF9lcnJvcl9zb29uKAorICAgICAgICB0YXNrLCBQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICJ5aWVsZCB3YXMgdXNlZCBpbnN0ZWFkIG9mIHlpZWxkIGZyb20gIgorICAgICAgICAiaW4gdGFzayAlUiB3aXRoICVSIiwKKyAgICAgICAgdGFzaywgcmVzdWx0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gbzsKKworZGlmZmVyZW50X2xvb3A6CisgICAgbyA9IHRhc2tfc2V0X2Vycm9yX3Nvb24oCisgICAgICAgIHRhc2ssIFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgIlRhc2sgJVIgZ290IEZ1dHVyZSAlUiBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBsb29wIiwKKyAgICAgICAgdGFzaywgcmVzdWx0KTsKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gbzsKKworZmFpbDoKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0YXNrX3N0ZXAoVGFza09iaiAqdGFzaywgUHlPYmplY3QgKmV4YykKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpvdDsKKworICAgIGlmIChQeURpY3RfU2V0SXRlbShjdXJyZW50X3Rhc2tzLAorICAgICAgICAgICAgICAgICAgICAgICB0YXNrLT50YXNrX2xvb3AsIChQeU9iamVjdCopdGFzaykgPT0gLTEpCisgICAgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSB0YXNrX3N0ZXBfaW1wbCh0YXNrLCBleGMpOworCisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpldCwgKmV2LCAqdGI7CisgICAgICAgIFB5RXJyX0ZldGNoKCZldCwgJmV2LCAmdGIpOworICAgICAgICBvdCA9IF9QeURpY3RfUG9wKGN1cnJlbnRfdGFza3MsIHRhc2stPnRhc2tfbG9vcCwgTlVMTCk7CisgICAgICAgIGlmIChvdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGV0KTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYodGIpOworICAgICAgICAgICAgUHlfWERFQ1JFRihldik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYob3QpOworICAgICAgICBQeUVycl9SZXN0b3JlKGV0LCBldiwgdGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG90ID0gX1B5RGljdF9Qb3AoY3VycmVudF90YXNrcywgdGFzay0+dGFza19sb29wLCBOVUxMKTsKKyAgICAgICAgaWYgKG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYob3QpOworICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rhc2tfd2FrZXVwKFRhc2tPYmogKnRhc2ssIFB5T2JqZWN0ICpvKQoreworICAgIGFzc2VydChvKTsKKworICAgIGlmIChGdXR1cmVfQ2hlY2tFeGFjdChvKSB8fCBUYXNrX0NoZWNrRXhhY3QobykpIHsKKyAgICAgICAgUHlPYmplY3QgKmZ1dF9yZXN1bHQgPSBOVUxMOworICAgICAgICBpbnQgcmVzID0gZnV0dXJlX2dldF9yZXN1bHQoKEZ1dHVyZU9iaiopbywgJmZ1dF9yZXN1bHQpOworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgICAgIHN3aXRjaChyZXMpIHsKKyAgICAgICAgY2FzZSAtMToKKyAgICAgICAgICAgIGFzc2VydChmdXRfcmVzdWx0ID09IE5VTEwpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdXRfcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiB0YXNrX2NhbGxfc3RlcCh0YXNrLCBOVUxMKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydChyZXMgPT0gMSk7CisgICAgICAgICAgICByZXN1bHQgPSB0YXNrX2NhbGxfc3RlcCh0YXNrLCBmdXRfcmVzdWx0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdXRfcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeU9iamVjdCAqZnV0X3Jlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgInJlc3VsdCIsIE5VTEwpOworICAgIGlmIChmdXRfcmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKmV0LCAqZXYsICp0YjsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKworICAgICAgICBQeUVycl9GZXRjaCgmZXQsICZldiwgJnRiKTsKKyAgICAgICAgaWYgKCFldiB8fCAhUHlPYmplY3RfVHlwZUNoZWNrKGV2LCAoUHlUeXBlT2JqZWN0ICopIGV0KSkgeworICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZldCwgJmV2LCAmdGIpOworICAgICAgICB9CisKKyAgICAgICAgcmVzID0gdGFza19jYWxsX3N0ZXAodGFzaywgZXYpOworCisgICAgICAgIFB5X1hERUNSRUYoZXQpOworICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgUHlfWERFQ1JFRihldik7CisKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihmdXRfcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHRhc2tfY2FsbF9zdGVwKHRhc2ssIE5VTEwpOworICAgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKiogTW9kdWxlICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCisKK3N0YXRpYyB2b2lkCittb2R1bGVfZnJlZSh2b2lkICptKQoreworICAgIFB5X0NMRUFSKGN1cnJlbnRfdGFza3MpOworICAgIFB5X0NMRUFSKGFsbF90YXNrcyk7CisgICAgUHlfQ0xFQVIodHJhY2ViYWNrX2V4dHJhY3Rfc3RhY2spOworICAgIFB5X0NMRUFSKGFzeW5jaW9fZ2V0X2V2ZW50X2xvb3ApOworICAgIFB5X0NMRUFSKGFzeW5jaW9fZnV0dXJlX3JlcHJfaW5mb19mdW5jKTsKKyAgICBQeV9DTEVBUihhc3luY2lvX3Rhc2tfcmVwcl9pbmZvX2Z1bmMpOworICAgIFB5X0NMRUFSKGFzeW5jaW9fdGFza19nZXRfc3RhY2tfZnVuYyk7CisgICAgUHlfQ0xFQVIoYXN5bmNpb190YXNrX3ByaW50X3N0YWNrX2Z1bmMpOworICAgIFB5X0NMRUFSKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IpOworICAgIFB5X0NMRUFSKGFzeW5jaW9fQ2FuY2VsbGVkRXJyb3IpOworICAgIFB5X0NMRUFSKGluc3BlY3RfaXNnZW5lcmF0b3IpOworfQorCitzdGF0aWMgaW50Cittb2R1bGVfaW5pdCh2b2lkKQoreworICAgIFB5T2JqZWN0ICptb2R1bGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpjbHM7CisKKyNkZWZpbmUgV0lUSF9NT0QoTkFNRSkgXAorICAgIFB5X0NMRUFSKG1vZHVsZSk7IFwKKyAgICBtb2R1bGUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoTkFNRSk7IFwKKyAgICBpZiAobW9kdWxlID09IE5VTEwpIHsgXAorICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9CisKKyNkZWZpbmUgR0VUX01PRF9BVFRSKFZBUiwgTkFNRSkgXAorICAgIFZBUiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kdWxlLCBOQU1FKTsgXAorICAgIGlmIChWQVIgPT0gTlVMTCkgeyBcCisgICAgICAgIGdvdG8gZmFpbDsgXAorICAgIH0KKworICAgIFdJVEhfTU9EKCJhc3luY2lvLmV2ZW50cyIpCisgICAgR0VUX01PRF9BVFRSKGFzeW5jaW9fZ2V0X2V2ZW50X2xvb3AsICJnZXRfZXZlbnRfbG9vcCIpCisKKyAgICBXSVRIX01PRCgiYXN5bmNpby5iYXNlX2Z1dHVyZXMiKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX2Z1dHVyZV9yZXByX2luZm9fZnVuYywgIl9mdXR1cmVfcmVwcl9pbmZvIikKKyAgICBHRVRfTU9EX0FUVFIoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgIkludmFsaWRTdGF0ZUVycm9yIikKKyAgICBHRVRfTU9EX0FUVFIoYXN5bmNpb19DYW5jZWxsZWRFcnJvciwgIkNhbmNlbGxlZEVycm9yIikKKworICAgIFdJVEhfTU9EKCJhc3luY2lvLmJhc2VfdGFza3MiKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX3Rhc2tfcmVwcl9pbmZvX2Z1bmMsICJfdGFza19yZXByX2luZm8iKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX3Rhc2tfZ2V0X3N0YWNrX2Z1bmMsICJfdGFza19nZXRfc3RhY2siKQorICAgIEdFVF9NT0RfQVRUUihhc3luY2lvX3Rhc2tfcHJpbnRfc3RhY2tfZnVuYywgIl90YXNrX3ByaW50X3N0YWNrIikKKworICAgIFdJVEhfTU9EKCJpbnNwZWN0IikKKyAgICBHRVRfTU9EX0FUVFIoaW5zcGVjdF9pc2dlbmVyYXRvciwgImlzZ2VuZXJhdG9yIikKKworICAgIFdJVEhfTU9EKCJ0cmFjZWJhY2siKQorICAgIEdFVF9NT0RfQVRUUih0cmFjZWJhY2tfZXh0cmFjdF9zdGFjaywgImV4dHJhY3Rfc3RhY2siKQorCisgICAgV0lUSF9NT0QoIndlYWtyZWYiKQorICAgIEdFVF9NT0RfQVRUUihjbHMsICJXZWFrU2V0IikKKyAgICBhbGxfdGFza3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGNscywgTlVMTCk7CisgICAgUHlfQ0xFQVIoY2xzKTsKKyAgICBpZiAoYWxsX3Rhc2tzID09IE5VTEwpIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIGN1cnJlbnRfdGFza3MgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGN1cnJlbnRfdGFza3MgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorCisgICAgUHlfQ0xFQVIobW9kdWxlKTsKKyAgICByZXR1cm4gMDsKKworZmFpbDoKKyAgICBQeV9DTEVBUihtb2R1bGUpOworICAgIG1vZHVsZV9mcmVlKE5VTEwpOworICAgIHJldHVybiAtMTsKKworI3VuZGVmIFdJVEhfTU9ECisjdW5kZWYgR0VUX01PRF9BVFRSCit9CisKK1B5RG9jX1NUUlZBUihtb2R1bGVfZG9jLCAiQWNjZWxlcmF0b3IgbW9kdWxlIGZvciBhc3luY2lvIik7CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2FzeW5jaW9tb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULCAgICAgIC8qIG1fYmFzZSAqLworICAgICJfYXN5bmNpbyIsICAgICAgICAgICAgICAgICAvKiBtX25hbWUgKi8KKyAgICBtb2R1bGVfZG9jLCAgICAgICAgICAgICAgICAgLyogbV9kb2MgKi8KKyAgICAtMSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fbWV0aG9kcyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3Nsb3RzICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogbV9jbGVhciAqLworICAgIChmcmVlZnVuYyltb2R1bGVfZnJlZSAgICAgICAvKiBtX2ZyZWUgKi8KK307CisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fYXN5bmNpbyh2b2lkKQoreworICAgIGlmIChtb2R1bGVfaW5pdCgpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmRnV0dXJlVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZGdXR1cmVJdGVyVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZUYXNrU2VuZE1ldGhXcmFwcGVyX1R5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYoUHlUeXBlX1JlYWR5KCZUYXNrV2FrZXVwTWV0aFdyYXBwZXJfVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZUYXNrVHlwZSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICptID0gUHlNb2R1bGVfQ3JlYXRlKCZfYXN5bmNpb21vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoJkZ1dHVyZVR5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkZ1dHVyZSIsIChQeU9iamVjdCAqKSZGdXR1cmVUeXBlKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKCZGdXR1cmVUeXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKCZUYXNrVHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVGFzayIsIChQeU9iamVjdCAqKSZUYXNrVHlwZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRigmVGFza1R5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKaW5kZXggMDJiNTVkMS4uMjJkZGJmMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKQEAgLTEyLDcgKzEyLDggQEAKIGludGVybmFsX2Jpc2VjdF9yaWdodChQeU9iamVjdCAqbGlzdCwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbG8sIFB5X3NzaXplX3QgaGkpCiB7CiAgICAgUHlPYmplY3QgKmxpdGVtOwotICAgIFB5X3NzaXplX3QgbWlkLCByZXM7CisgICAgUHlfc3NpemVfdCBtaWQ7CisgICAgaW50IHJlczsKIAogICAgIGlmIChsbyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwpAQCAtMTE1LDcgKzExNiw4IEBACiBpbnRlcm5hbF9iaXNlY3RfbGVmdChQeU9iamVjdCAqbGlzdCwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbG8sIFB5X3NzaXplX3QgaGkpCiB7CiAgICAgUHlPYmplY3QgKmxpdGVtOwotICAgIFB5X3NzaXplX3QgbWlkLCByZXM7CisgICAgUHlfc3NpemVfdCBtaWQ7CisgICAgaW50IHJlczsKIAogICAgIGlmIChsbyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weSBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDFjZjI2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKQEAgLTAsMCArMSw0OSBAQAorIyEvdXNyL2Jpbi9weXRob24zCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK0hFUkUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK0JMQUtFMiA9IG9zLnBhdGguam9pbihIRVJFLCAnaW1wbCcpCisKK1BVQkxJQ19TRUFSQ0ggPSByZS5jb21waWxlKHInXCBpbnQgKGJsYWtlMltic11wP1thLXpfXSopXCgnKQorCisKK2RlZiBnZXRmaWxlcygpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoQkxBS0UyKToKKyAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihCTEFLRTIsIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAgeWllbGQgbmFtZQorCisKK2RlZiBmaW5kX3B1YmxpYygpOgorICAgIHB1YmxpY19mdW5jcyA9IHNldCgpCisgICAgZm9yIG5hbWUgaW4gZ2V0ZmlsZXMoKToKKyAgICAgICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgICMgZmluZCBwdWJsaWMgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgbW8gPSBQVUJMSUNfU0VBUkNILnNlYXJjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIG1vOgorICAgICAgICAgICAgICAgICAgICBwdWJsaWNfZnVuY3MuYWRkKG1vLmdyb3VwKDEpKQorCisgICAgZm9yIGYgaW4gc29ydGVkKHB1YmxpY19mdW5jcyk6CisgICAgICAgIHByaW50KCcjZGVmaW5lIHswOjwxOH0gUHlCbGFrZTJfezB9Jy5mb3JtYXQoZikpCisKKyAgICByZXR1cm4gcHVibGljX2Z1bmNzCisKKworZGVmIG1haW4oKToKKyAgICBsaW5lcyA9IFtdCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihIRVJFLCAnYmxha2UyYl9pbXBsLmMnKSkgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ2JsYWtlMmInLCAnYmxha2UycycpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdCTEFLRTJiJywgJ0JMQUtFMnMnKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnQkxBS0UyQicsICdCTEFLRTJTJykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oSEVSRSwgJ2JsYWtlMnNfaW1wbC5jJyksICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAjIGZpbmRfcHVibGljKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YjUwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYl9pbXBsLmMKQEAgLTAsMCArMSw0NjAgQEAKKy8qCisgKiBXcml0dGVuIGluIDIwMTMgYnkgRG1pdHJ5IENoZXN0bnlraCA8ZG1pdHJ5QGNvZGluZ3JvYm90cy5jb20+CisgKiBNb2RpZmllZCBmb3IgQ1B5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKyAqCisgKiBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvciBoYXZlIGRlZGljYXRlZCBhbGwKKyAqIGNvcHlyaWdodCBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8KKyAqIHRoZSBwdWJsaWMgZG9tYWluIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0CisgKiBhbnkgd2FycmFudHkuIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyAqLworCisvKiBXQVJOSU5HOiBhdXRvZ2VuZXJhdGVkIGZpbGUhCisgKgorICogVGhlIGJsYWtlMnNfaW1wbC5jIGlzIGF1dG9nZW5lcmF0ZWQgZnJvbSBibGFrZTJiX2ltcGwuYy4KKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIi4uL2hhc2hsaWIuaCIKKyNpbmNsdWRlICJibGFrZTJucy5oIgorCisjZGVmaW5lIEhBVkVfQkxBS0UyQiAxCisjZGVmaW5lIEJMQUtFMl9MT0NBTF9JTkxJTkUodHlwZSkgUHlfTE9DQUxfSU5MSU5FKHR5cGUpCisKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi5oIgorI2luY2x1ZGUgImltcGwvYmxha2UyLWltcGwuaCIgLyogZm9yIHNlY3VyZV96ZXJvX21lbW9yeSgpIGFuZCBzdG9yZTQ4KCkgKi8KKworI2lmZGVmIEJMQUtFMl9VU0VfU1NFCisjaW5jbHVkZSAiaW1wbC9ibGFrZTJiLmMiCisjZWxzZQorI2luY2x1ZGUgImltcGwvYmxha2UyYi1yZWYuYyIKKyNlbmRpZgorCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0UyYlR5cGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgYmxha2UyYl9wYXJhbSAgICBwYXJhbTsKKyAgICBibGFrZTJiX3N0YXRlICAgIHN0YXRlOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQkxBS0UyYk9iamVjdDsKKworI2luY2x1ZGUgImNsaW5pYy9ibGFrZTJiX2ltcGwuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2JsYWtlMmIKK2NsYXNzIF9ibGFrZTJiLmJsYWtlMmIgIkJMQUtFMmJPYmplY3QgKiIgIiZQeUJsYWtlMl9CTEFLRTJiVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTY4OTMzNThjNjYyMmFlY2ZdKi8KKworCitzdGF0aWMgQkxBS0UyYk9iamVjdCAqCituZXdfQkxBS0UyYk9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgQkxBS0UyYk9iamVjdCAqc2VsZjsKKyAgICBzZWxmID0gKEJMQUtFMmJPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX2JsYWtlMmIuYmxha2UyYi5fX25ld19fIGFzIHB5X2JsYWtlMmJfbmV3CisgICAgc3RyaW5nIGFzIGRhdGE6IG9iamVjdCA9IE5VTEwKKyAgICAqCisgICAgZGlnZXN0X3NpemU6IGludChjX2RlZmF1bHQ9IkJMQUtFMkJfT1VUQllURVMiKSA9IF9ibGFrZTJiLmJsYWtlMmIuTUFYX0RJR0VTVF9TSVpFCisgICAga2V5OiBQeV9idWZmZXIgPSBOb25lCisgICAgc2FsdDogUHlfYnVmZmVyID0gTm9uZQorICAgIHBlcnNvbjogUHlfYnVmZmVyID0gTm9uZQorICAgIGZhbm91dDogaW50ID0gMQorICAgIGRlcHRoOiBpbnQgPSAxCisgICAgbGVhZl9zaXplIGFzIGxlYWZfc2l6ZV9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICBub2RlX29mZnNldCBhcyBub2RlX29mZnNldF9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICBub2RlX2RlcHRoOiBpbnQgPSAwCisgICAgaW5uZXJfc2l6ZTogaW50ID0gMAorICAgIGxhc3Rfbm9kZTogYm9vbCA9IEZhbHNlCisKK1JldHVybiBhIG5ldyBCTEFLRTJiIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZGlnZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqa2V5LCBQeV9idWZmZXIgKnNhbHQsIFB5X2J1ZmZlciAqcGVyc29uLAorICAgICAgICAgICAgICAgICAgICBpbnQgZmFub3V0LCBpbnQgZGVwdGgsIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqLCBpbnQgbm9kZV9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyX3NpemUsIGludCBsYXN0X25vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzUwNmQ4ZDg5MGU1ZjEzYiBpbnB1dD1lNDE1NDhkZmEwODY2MDMxXSovCit7CisgICAgQkxBS0UyYk9iamVjdCAqc2VsZiA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKworICAgIHVuc2lnbmVkIGxvbmcgbGVhZl9zaXplID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbm9kZV9vZmZzZXQgPSAwOworCisgICAgc2VsZiA9IG5ld19CTEFLRTJiT2JqZWN0KHR5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBaZXJvIHBhcmFtZXRlciBibG9jay4gKi8KKyAgICBtZW1zZXQoJnNlbGYtPnBhcmFtLCAwLCBzaXplb2Yoc2VsZi0+cGFyYW0pKTsKKworICAgIC8qIFNldCBkaWdlc3Qgc2l6ZS4gKi8KKyAgICBpZiAoZGlnZXN0X3NpemUgPD0gMCB8fCBkaWdlc3Rfc2l6ZSA+IEJMQUtFMkJfT1VUQllURVMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImRpZ2VzdF9zaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9PVVRCWVRFUyk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGggPSBkaWdlc3Rfc2l6ZTsKKworICAgIC8qIFNldCBzYWx0IHBhcmFtZXRlci4gKi8KKyAgICBpZiAoKHNhbHQtPm9iaiAhPSBOVUxMKSAmJiBzYWx0LT5sZW4pIHsKKyAgICAgICAgaWYgKHNhbHQtPmxlbiA+IEJMQUtFMkJfU0FMVEJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBzYWx0IGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9TQUxUQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2VsZi0+cGFyYW0uc2FsdCwgc2FsdC0+YnVmLCBzYWx0LT5sZW4pOworICAgIH0KKworICAgIC8qIFNldCBwZXJzb25hbGl6YXRpb24gcGFyYW1ldGVyLiAqLworICAgIGlmICgocGVyc29uLT5vYmogIT0gTlVMTCkgJiYgcGVyc29uLT5sZW4pIHsKKyAgICAgICAgaWYgKHBlcnNvbi0+bGVuID4gQkxBS0UyQl9QRVJTT05BTEJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBwZXJzb24gbGVuZ3RoIGlzICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJCX1BFUlNPTkFMQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2VsZi0+cGFyYW0ucGVyc29uYWwsIHBlcnNvbi0+YnVmLCBwZXJzb24tPmxlbik7CisgICAgfQorCisgICAgLyogU2V0IHRyZWUgcGFyYW1ldGVycy4gKi8KKyAgICBpZiAoZmFub3V0IDwgMCB8fCBmYW5vdXQgPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImZhbm91dCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmZhbm91dCA9ICh1aW50OF90KWZhbm91dDsKKworICAgIGlmIChkZXB0aCA8PSAwIHx8IGRlcHRoID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJkZXB0aCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmRlcHRoID0gKHVpbnQ4X3QpZGVwdGg7CisKKyAgICBpZiAobGVhZl9zaXplX29iaiAhPSBOVUxMKSB7CisgICAgICAgIGxlYWZfc2l6ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhsZWFmX3NpemVfb2JqKTsKKyAgICAgICAgaWYgKGxlYWZfc2l6ZSA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAobGVhZl9zaXplID4gMHhGRkZGRkZGRlUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibGVhZl9zaXplIGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZWxmLT5wYXJhbS5sZWFmX2xlbmd0aCA9ICh1bnNpZ25lZCBpbnQpbGVhZl9zaXplOworCisgICAgaWYgKG5vZGVfb2Zmc2V0X29iaiAhPSBOVUxMKSB7CisgICAgICAgIG5vZGVfb2Zmc2V0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhub2RlX29mZnNldF9vYmopOworICAgICAgICBpZiAobm9kZV9vZmZzZXQgPT0gKHVuc2lnbmVkIGxvbmcgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyNpZmRlZiBIQVZFX0JMQUtFMlMKKyAgICBpZiAobm9kZV9vZmZzZXQgPiAweEZGRkZGRkZGRkZGRlVMTCkgeworICAgICAgICAvKiBtYXhpbXVtIDIqKjQ4IC0gMSAqLworICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJub2RlX29mZnNldCBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKyAgICBzdG9yZTQ4KCYoc2VsZi0+cGFyYW0ubm9kZV9vZmZzZXQpLCBub2RlX29mZnNldCk7CisjZWxzZQorICAgIHNlbGYtPnBhcmFtLm5vZGVfb2Zmc2V0ID0gbm9kZV9vZmZzZXQ7CisjZW5kaWYKKworICAgIGlmIChub2RlX2RlcHRoIDwgMCB8fCBub2RlX2RlcHRoID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJub2RlX2RlcHRoIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0ubm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisKKyAgICBpZiAoaW5uZXJfc2l6ZSA8IDAgfHwgaW5uZXJfc2l6ZSA+IEJMQUtFMkJfT1VUQllURVMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImlubmVyX3NpemUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIGlzICVkIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJCX09VVEJZVEVTKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uaW5uZXJfbGVuZ3RoID0gaW5uZXJfc2l6ZTsKKworICAgIC8qIFNldCBrZXkgbGVuZ3RoLiAqLworICAgIGlmICgoa2V5LT5vYmogIT0gTlVMTCkgJiYga2V5LT5sZW4pIHsKKyAgICAgICAgaWYgKGtleS0+bGVuID4gQkxBS0UyQl9LRVlCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0ga2V5IGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyQl9LRVlCWVRFUyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHNlbGYtPnBhcmFtLmtleV9sZW5ndGggPSAodWludDhfdClrZXktPmxlbjsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGhhc2ggc3RhdGUuICovCisgICAgaWYgKGJsYWtlMmJfaW5pdF9wYXJhbSgmc2VsZi0+c3RhdGUsICZzZWxmLT5wYXJhbSkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImVycm9yIGluaXRpYWxpemluZyBoYXNoIHN0YXRlIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogU2V0IGxhc3Qgbm9kZSBmbGFnIChtdXN0IGNvbWUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24pLiAqLworICAgIHNlbGYtPnN0YXRlLmxhc3Rfbm9kZSA9IGxhc3Rfbm9kZTsKKworICAgIC8qIFByb2Nlc3Mga2V5IGJsb2NrIGlmIGFueS4gKi8KKyAgICBpZiAoc2VsZi0+cGFyYW0ua2V5X2xlbmd0aCkgeworICAgICAgICB1aW50OF90IGJsb2NrW0JMQUtFMkJfQkxPQ0tCWVRFU107CisgICAgICAgIG1lbXNldChibG9jaywgMCwgc2l6ZW9mKGJsb2NrKSk7CisgICAgICAgIG1lbWNweShibG9jaywga2V5LT5idWYsIGtleS0+bGVuKTsKKyAgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBibG9jaywgc2l6ZW9mKGJsb2NrKSk7CisgICAgICAgIHNlY3VyZV96ZXJvX21lbW9yeShibG9jaywgc2l6ZW9mKGJsb2NrKSk7CisgICAgfQorCisgICAgLyogUHJvY2VzcyBpbml0aWFsIGRhdGEgaWYgYW55LiAqLworICAgIGlmIChkYXRhICE9IE5VTEwpIHsKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKGRhdGEsICZidWYsIGdvdG8gZXJyb3IpOworCisgICAgICAgIGlmIChidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGJsYWtlMmJfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICAgfQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworCisgIGVycm9yOgorICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMmIuYmxha2UyYi5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9jb3B5X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODljZDMzNTUwYWIxNTQzIGlucHV0PTRjOWMzMTlmMThmMTA3NDddKi8KK3sKKyAgICBCTEFLRTJiT2JqZWN0ICpjcHk7CisKKyAgICBpZiAoKGNweSA9IG5ld19CTEFLRTJiT2JqZWN0KFB5X1RZUEUoc2VsZikpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgY3B5LT5wYXJhbSA9IHNlbGYtPnBhcmFtOworICAgIGNweS0+c3RhdGUgPSBzZWxmLT5zdGF0ZTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiAoUHlPYmplY3QgKiljcHk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJiLmJsYWtlMmIudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX3VwZGF0ZShCTEFLRTJiT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE4ODhmMDdjNGNkZGJlOTQgaW5wdXQ9M2VjYjhjMTNlZTQyNjBmMl0qLworeworICAgIFB5X2J1ZmZlciBidWY7CisKKyAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwgJiYgYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKQorICAgICAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworCisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkgeworICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9jaywgMSk7CisgICAgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9jayk7CisgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IGVsc2UgeworICAgICAgICBibGFrZTJiX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgIH0KKyNlbHNlCisgICAgYmxha2UyYl91cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyNlbmRpZiAvKiAhV0lUSF9USFJFQUQgKi8KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybiBQeV9Ob25lOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2UyYi5ibGFrZTJiLmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMTNhNzkzNjBkOTg0NzQwIGlucHV0PWFjMmZhNDYyZWJiMWI5YzddKi8KK3sKKyAgICB1aW50OF90IGRpZ2VzdFtCTEFLRTJCX09VVEJZVEVTXTsKKyAgICBibGFrZTJiX3N0YXRlIHN0YXRlX2NweTsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgc3RhdGVfY3B5ID0gc2VsZi0+c3RhdGU7CisgICAgYmxha2UyYl9maW5hbCgmc3RhdGVfY3B5LCBkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMmIuYmxha2UyYi5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZhNTAzNjExNzE1YjI0YmQgaW5wdXQ9ZDU4ZjBiMmYzNzgxMmUzM10qLworeworICAgIHVpbnQ4X3QgZGlnZXN0W0JMQUtFMkJfT1VUQllURVNdOworICAgIGJsYWtlMmJfc3RhdGUgc3RhdGVfY3B5OworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBzdGF0ZV9jcHkgPSBzZWxmLT5zdGF0ZTsKKyAgICBibGFrZTJiX2ZpbmFsKCZzdGF0ZV9jcHksIGRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHB5X2JsYWtlMmJfbWV0aG9kc1tdID0geworICAgIF9CTEFLRTJCX0JMQUtFMkJfQ09QWV9NRVRIT0RERUYKKyAgICBfQkxBS0UyQl9CTEFLRTJCX0RJR0VTVF9NRVRIT0RERUYKKyAgICBfQkxBS0UyQl9CTEFLRTJCX0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBfQkxBS0UyQl9CTEFLRTJCX1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9nZXRfbmFtZShCTEFLRTJiT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiYmxha2UyYiIpOworfQorCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMmJfZ2V0X2Jsb2NrX3NpemUoQkxBS0UyYk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKEJMQUtFMkJfQkxPQ0tCWVRFUyk7Cit9CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9nZXRfZGlnZXN0X3NpemUoQkxBS0UyYk9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBweV9ibGFrZTJiX2dldHNldHRlcnNbXSA9IHsKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKXB5X2JsYWtlMmJfZ2V0X25hbWUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiYmxvY2tfc2l6ZSIsIChnZXR0ZXIpcHlfYmxha2UyYl9nZXRfYmxvY2tfc2l6ZSwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJkaWdlc3Rfc2l6ZSIsIChnZXR0ZXIpcHlfYmxha2UyYl9nZXRfZGlnZXN0X3NpemUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitzdGF0aWMgdm9pZAorcHlfYmxha2UyYl9kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKQoreworICAgIEJMQUtFMmJPYmplY3QgKm9iaiA9IChCTEFLRTJiT2JqZWN0ICopc2VsZjsKKworICAgIC8qIFRyeSBub3QgdG8gbGVhdmUgc3RhdGUgaW4gbWVtb3J5LiAqLworICAgIHNlY3VyZV96ZXJvX21lbW9yeSgmb2JqLT5wYXJhbSwgc2l6ZW9mKG9iai0+cGFyYW0pKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoJm9iai0+c3RhdGUsIHNpemVvZihvYmotPnN0YXRlKSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAob2JqLT5sb2NrKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhvYmotPmxvY2spOworICAgICAgICBvYmotPmxvY2sgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworCitQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0UyYlR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9ibGFrZTIuYmxha2UyYiIsICAgICAgICAvKiB0cF9uYW1lICAgICAgICAgICAgKi8KKyAgICBzaXplb2YoQkxBS0UyYk9iamVjdCksICAgIC8qIHRwX3NpemUgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgICAgICAgICovCisgICAgcHlfYmxha2UyYl9kZWFsbG9jLCAgICAgICAvKiB0cF9kZWFsbG9jICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICAgICAgICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAvKiB0cF9mbGFncyAgICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJiX25ld19fZG9jX18sICAgIC8qIHRwX2RvYyAgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICAgICAgICAqLworICAgIHB5X2JsYWtlMmJfbWV0aG9kcywgICAgICAgLyogdHBfbWV0aG9kcyAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJiX2dldHNldHRlcnMsICAgIC8qIHRwX2dldHNldCAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgICAgICAgICAgICovCisgICAgcHlfYmxha2UyYl9uZXcsICAgICAgICAgICAvKiB0cF9uZXcgICAgICAgICAgICAgKi8KK307CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvYmxha2UybW9kdWxlLmMgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhM2Q0MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJtb2R1bGUuYwpAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIFdyaXR0ZW4gaW4gMjAxMyBieSBEbWl0cnkgQ2hlc3RueWtoIDxkbWl0cnlAY29kaW5ncm9ib3RzLmNvbT4KKyAqIE1vZGlmaWVkIGZvciBDUHl0aG9uIGJ5IENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgorICoKKyAqIFRvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgYXV0aG9yIGhhdmUgZGVkaWNhdGVkIGFsbAorICogY29weXJpZ2h0IGFuZCByZWxhdGVkIGFuZCBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhpcyBzb2Z0d2FyZSB0bworICogdGhlIHB1YmxpYyBkb21haW4gd29ybGR3aWRlLiBUaGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIHdpdGhvdXQKKyAqIGFueSB3YXJyYW50eS4gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2luY2x1ZGUgImltcGwvYmxha2UyLmgiCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0UyYlR5cGU7CitleHRlcm4gUHlUeXBlT2JqZWN0IFB5Qmxha2UyX0JMQUtFMnNUeXBlOworCisKK1B5RG9jX1NUUlZBUihibGFrZTJtb2RfX2RvY19fLAorIl9ibGFrZTJiIHByb3ZpZGVzIEJMQUtFMmIgZm9yIGhhc2hsaWJcbiIKKyk7CisKKworc3RhdGljIHN0cnVjdCBQeU1ldGhvZERlZiBibGFrZTJtb2RfZnVuY3Rpb25zW10gPSB7CisgICAge05VTEwsIE5VTEx9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGJsYWtlMl9tb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfYmxha2UyIiwKKyAgICBibGFrZTJtb2RfX2RvY19fLAorICAgIC0xLAorICAgIGJsYWtlMm1vZF9mdW5jdGlvbnMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworI2RlZmluZSBBRERfSU5UKGQsIG5hbWUsIHZhbHVlKSBkbyB7IFwKKyAgICBQeU9iamVjdCAqeCA9IFB5TG9uZ19Gcm9tTG9uZyh2YWx1ZSk7IFwKKyAgICBpZiAoIXgpIHsgXAorICAgICAgICBQeV9ERUNSRUYobSk7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICB9IFwKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgbmFtZSwgeCkgPCAwKSB7IFwKKyAgICAgICAgUHlfREVDUkVGKG0pOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgUHlfREVDUkVGKHgpOyBcCit9IHdoaWxlKDApCisKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fYmxha2UyKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisgICAgUHlPYmplY3QgKmQ7CisKKyAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZibGFrZTJfbW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIEJMQUtFMmIgKi8KKyAgICBQeV9UWVBFKCZQeUJsYWtlMl9CTEFLRTJiVHlwZSkgPSAmUHlUeXBlX1R5cGU7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlCbGFrZTJfQkxBS0UyYlR5cGUpIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoJlB5Qmxha2UyX0JMQUtFMmJUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImJsYWtlMmIiLCAoUHlPYmplY3QgKikmUHlCbGFrZTJfQkxBS0UyYlR5cGUpOworCisgICAgZCA9IFB5Qmxha2UyX0JMQUtFMmJUeXBlLnRwX2RpY3Q7CisgICAgQUREX0lOVChkLCAiU0FMVF9TSVpFIiwgQkxBS0UyQl9TQUxUQllURVMpOworICAgIEFERF9JTlQoZCwgIlBFUlNPTl9TSVpFIiwgQkxBS0UyQl9QRVJTT05BTEJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJNQVhfS0VZX1NJWkUiLCBCTEFLRTJCX0tFWUJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJNQVhfRElHRVNUX1NJWkUiLCBCTEFLRTJCX09VVEJZVEVTKTsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJCX1NBTFRfU0laRSIsIEJMQUtFMkJfU0FMVEJZVEVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyQl9QRVJTT05fU0laRSIsIEJMQUtFMkJfUEVSU09OQUxCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMkJfTUFYX0tFWV9TSVpFIiwgQkxBS0UyQl9LRVlCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMkJfTUFYX0RJR0VTVF9TSVpFIiwgQkxBS0UyQl9PVVRCWVRFUyk7CisKKyAgICAvKiBCTEFLRTJzICovCisgICAgUHlfVFlQRSgmUHlCbGFrZTJfQkxBS0Uyc1R5cGUpID0gJlB5VHlwZV9UeXBlOworICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5Qmxha2UyX0JMQUtFMnNUeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfSU5DUkVGKCZQeUJsYWtlMl9CTEFLRTJzVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJibGFrZTJzIiwgKFB5T2JqZWN0ICopJlB5Qmxha2UyX0JMQUtFMnNUeXBlKTsKKworICAgIGQgPSBQeUJsYWtlMl9CTEFLRTJzVHlwZS50cF9kaWN0OworICAgIEFERF9JTlQoZCwgIlNBTFRfU0laRSIsIEJMQUtFMlNfU0FMVEJZVEVTKTsKKyAgICBBRERfSU5UKGQsICJQRVJTT05fU0laRSIsIEJMQUtFMlNfUEVSU09OQUxCWVRFUyk7CisgICAgQUREX0lOVChkLCAiTUFYX0tFWV9TSVpFIiwgQkxBS0UyU19LRVlCWVRFUyk7CisgICAgQUREX0lOVChkLCAiTUFYX0RJR0VTVF9TSVpFIiwgQkxBS0UyU19PVVRCWVRFUyk7CisKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQkxBS0UyU19TQUxUX1NJWkUiLCBCTEFLRTJTX1NBTFRCWVRFUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkJMQUtFMlNfUEVSU09OX1NJWkUiLCBCTEFLRTJTX1BFUlNPTkFMQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJTX01BWF9LRVlfU0laRSIsIEJMQUtFMlNfS0VZQllURVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJCTEFLRTJTX01BWF9ESUdFU1RfU0laRSIsIEJMQUtFMlNfT1VUQllURVMpOworCisgICAgcmV0dXJuIG07Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvYmxha2UybnMuaCBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzYmNlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UybnMuaApAQCAtMCwwICsxLDMyIEBACisvKiBQcmVmaXggYWxsIHB1YmxpYyBibGFrZTIgc3ltYm9scyB3aXRoIFB5Qmxha2UyXworICovCisKKyNpZm5kZWYgUHlfQkxBS0UyX05TCisjZGVmaW5lIFB5X0JMQUtFMl9OUworCisjZGVmaW5lIGJsYWtlMmIgICAgICAgICAgICBQeUJsYWtlMl9ibGFrZTJiCisjZGVmaW5lIGJsYWtlMmJfY29tcHJlc3MgICBQeUJsYWtlMl9ibGFrZTJiX2NvbXByZXNzCisjZGVmaW5lIGJsYWtlMmJfZmluYWwgICAgICBQeUJsYWtlMl9ibGFrZTJiX2ZpbmFsCisjZGVmaW5lIGJsYWtlMmJfaW5pdCAgICAgICBQeUJsYWtlMl9ibGFrZTJiX2luaXQKKyNkZWZpbmUgYmxha2UyYl9pbml0X2tleSAgIFB5Qmxha2UyX2JsYWtlMmJfaW5pdF9rZXkKKyNkZWZpbmUgYmxha2UyYl9pbml0X3BhcmFtIFB5Qmxha2UyX2JsYWtlMmJfaW5pdF9wYXJhbQorI2RlZmluZSBibGFrZTJiX3VwZGF0ZSAgICAgUHlCbGFrZTJfYmxha2UyYl91cGRhdGUKKyNkZWZpbmUgYmxha2UyYnAgICAgICAgICAgIFB5Qmxha2UyX2JsYWtlMmJwCisjZGVmaW5lIGJsYWtlMmJwX2ZpbmFsICAgICBQeUJsYWtlMl9ibGFrZTJicF9maW5hbAorI2RlZmluZSBibGFrZTJicF9pbml0ICAgICAgUHlCbGFrZTJfYmxha2UyYnBfaW5pdAorI2RlZmluZSBibGFrZTJicF9pbml0X2tleSAgUHlCbGFrZTJfYmxha2UyYnBfaW5pdF9rZXkKKyNkZWZpbmUgYmxha2UyYnBfdXBkYXRlICAgIFB5Qmxha2UyX2JsYWtlMmJwX3VwZGF0ZQorI2RlZmluZSBibGFrZTJzICAgICAgICAgICAgUHlCbGFrZTJfYmxha2UycworI2RlZmluZSBibGFrZTJzX2NvbXByZXNzICAgUHlCbGFrZTJfYmxha2Uyc19jb21wcmVzcworI2RlZmluZSBibGFrZTJzX2ZpbmFsICAgICAgUHlCbGFrZTJfYmxha2Uyc19maW5hbAorI2RlZmluZSBibGFrZTJzX2luaXQgICAgICAgUHlCbGFrZTJfYmxha2Uyc19pbml0CisjZGVmaW5lIGJsYWtlMnNfaW5pdF9rZXkgICBQeUJsYWtlMl9ibGFrZTJzX2luaXRfa2V5CisjZGVmaW5lIGJsYWtlMnNfaW5pdF9wYXJhbSBQeUJsYWtlMl9ibGFrZTJzX2luaXRfcGFyYW0KKyNkZWZpbmUgYmxha2Uyc191cGRhdGUgICAgIFB5Qmxha2UyX2JsYWtlMnNfdXBkYXRlCisjZGVmaW5lIGJsYWtlMnNwICAgICAgICAgICBQeUJsYWtlMl9ibGFrZTJzcAorI2RlZmluZSBibGFrZTJzcF9maW5hbCAgICAgUHlCbGFrZTJfYmxha2Uyc3BfZmluYWwKKyNkZWZpbmUgYmxha2Uyc3BfaW5pdCAgICAgIFB5Qmxha2UyX2JsYWtlMnNwX2luaXQKKyNkZWZpbmUgYmxha2Uyc3BfaW5pdF9rZXkgIFB5Qmxha2UyX2JsYWtlMnNwX2luaXRfa2V5CisjZGVmaW5lIGJsYWtlMnNwX3VwZGF0ZSAgICBQeUJsYWtlMl9ibGFrZTJzcF91cGRhdGUKKworI2VuZGlmIC8qIFB5X0JMQUtFMl9OUyAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZDJlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2Uyc19pbXBsLmMKQEAgLTAsMCArMSw0NjAgQEAKKy8qCisgKiBXcml0dGVuIGluIDIwMTMgYnkgRG1pdHJ5IENoZXN0bnlraCA8ZG1pdHJ5QGNvZGluZ3JvYm90cy5jb20+CisgKiBNb2RpZmllZCBmb3IgQ1B5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKyAqCisgKiBUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGF1dGhvciBoYXZlIGRlZGljYXRlZCBhbGwKKyAqIGNvcHlyaWdodCBhbmQgcmVsYXRlZCBhbmQgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoaXMgc29mdHdhcmUgdG8KKyAqIHRoZSBwdWJsaWMgZG9tYWluIHdvcmxkd2lkZS4gVGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB3aXRob3V0CisgKiBhbnkgd2FycmFudHkuIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyAqLworCisvKiBXQVJOSU5HOiBhdXRvZ2VuZXJhdGVkIGZpbGUhCisgKgorICogVGhlIGJsYWtlMnNfaW1wbC5jIGlzIGF1dG9nZW5lcmF0ZWQgZnJvbSBibGFrZTJzX2ltcGwuYy4KKyAqLworCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAicHlzdHJoZXguaCIKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIi4uL2hhc2hsaWIuaCIKKyNpbmNsdWRlICJibGFrZTJucy5oIgorCisjZGVmaW5lIEhBVkVfQkxBS0UyUyAxCisjZGVmaW5lIEJMQUtFMl9MT0NBTF9JTkxJTkUodHlwZSkgUHlfTE9DQUxfSU5MSU5FKHR5cGUpCisKKyNpbmNsdWRlICJpbXBsL2JsYWtlMi5oIgorI2luY2x1ZGUgImltcGwvYmxha2UyLWltcGwuaCIgLyogZm9yIHNlY3VyZV96ZXJvX21lbW9yeSgpIGFuZCBzdG9yZTQ4KCkgKi8KKworI2lmZGVmIEJMQUtFMl9VU0VfU1NFCisjaW5jbHVkZSAiaW1wbC9ibGFrZTJzLmMiCisjZWxzZQorI2luY2x1ZGUgImltcGwvYmxha2Uycy1yZWYuYyIKKyNlbmRpZgorCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0Uyc1R5cGU7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgYmxha2Uyc19wYXJhbSAgICBwYXJhbTsKKyAgICBibGFrZTJzX3N0YXRlICAgIHN0YXRlOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQkxBS0Uyc09iamVjdDsKKworI2luY2x1ZGUgImNsaW5pYy9ibGFrZTJzX2ltcGwuYy5oIgorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2JsYWtlMnMKK2NsYXNzIF9ibGFrZTJzLmJsYWtlMnMgIkJMQUtFMnNPYmplY3QgKiIgIiZQeUJsYWtlMl9CTEFLRTJzVHlwZSIKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWVkYmZjZjc1NTdhNjg1YTddKi8KKworCitzdGF0aWMgQkxBS0Uyc09iamVjdCAqCituZXdfQkxBS0Uyc09iamVjdChQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgQkxBS0Uyc09iamVjdCAqc2VsZjsKKyAgICBzZWxmID0gKEJMQUtFMnNPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+bG9jayA9IE5VTEw7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorX2JsYWtlMnMuYmxha2Uycy5fX25ld19fIGFzIHB5X2JsYWtlMnNfbmV3CisgICAgc3RyaW5nIGFzIGRhdGE6IG9iamVjdCA9IE5VTEwKKyAgICAqCisgICAgZGlnZXN0X3NpemU6IGludChjX2RlZmF1bHQ9IkJMQUtFMlNfT1VUQllURVMiKSA9IF9ibGFrZTJzLmJsYWtlMnMuTUFYX0RJR0VTVF9TSVpFCisgICAga2V5OiBQeV9idWZmZXIgPSBOb25lCisgICAgc2FsdDogUHlfYnVmZmVyID0gTm9uZQorICAgIHBlcnNvbjogUHlfYnVmZmVyID0gTm9uZQorICAgIGZhbm91dDogaW50ID0gMQorICAgIGRlcHRoOiBpbnQgPSAxCisgICAgbGVhZl9zaXplIGFzIGxlYWZfc2l6ZV9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICBub2RlX29mZnNldCBhcyBub2RlX29mZnNldF9vYmo6IG9iamVjdCA9IE5VTEwKKyAgICBub2RlX2RlcHRoOiBpbnQgPSAwCisgICAgaW5uZXJfc2l6ZTogaW50ID0gMAorICAgIGxhc3Rfbm9kZTogYm9vbCA9IEZhbHNlCisKK1JldHVybiBhIG5ldyBCTEFLRTJzIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZGlnZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqa2V5LCBQeV9idWZmZXIgKnNhbHQsIFB5X2J1ZmZlciAqcGVyc29uLAorICAgICAgICAgICAgICAgICAgICBpbnQgZmFub3V0LCBpbnQgZGVwdGgsIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqLCBpbnQgbm9kZV9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyX3NpemUsIGludCBsYXN0X25vZGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmUwNjBiMjU4YThjYmZjNiBpbnB1dD00NThjZmRjYjNkMGQ0N2ZmXSovCit7CisgICAgQkxBS0Uyc09iamVjdCAqc2VsZiA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKworICAgIHVuc2lnbmVkIGxvbmcgbGVhZl9zaXplID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbm9kZV9vZmZzZXQgPSAwOworCisgICAgc2VsZiA9IG5ld19CTEFLRTJzT2JqZWN0KHR5cGUpOworICAgIGlmIChzZWxmID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBaZXJvIHBhcmFtZXRlciBibG9jay4gKi8KKyAgICBtZW1zZXQoJnNlbGYtPnBhcmFtLCAwLCBzaXplb2Yoc2VsZi0+cGFyYW0pKTsKKworICAgIC8qIFNldCBkaWdlc3Qgc2l6ZS4gKi8KKyAgICBpZiAoZGlnZXN0X3NpemUgPD0gMCB8fCBkaWdlc3Rfc2l6ZSA+IEJMQUtFMlNfT1VUQllURVMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImRpZ2VzdF9zaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19PVVRCWVRFUyk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGggPSBkaWdlc3Rfc2l6ZTsKKworICAgIC8qIFNldCBzYWx0IHBhcmFtZXRlci4gKi8KKyAgICBpZiAoKHNhbHQtPm9iaiAhPSBOVUxMKSAmJiBzYWx0LT5sZW4pIHsKKyAgICAgICAgaWYgKHNhbHQtPmxlbiA+IEJMQUtFMlNfU0FMVEJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBzYWx0IGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19TQUxUQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2VsZi0+cGFyYW0uc2FsdCwgc2FsdC0+YnVmLCBzYWx0LT5sZW4pOworICAgIH0KKworICAgIC8qIFNldCBwZXJzb25hbGl6YXRpb24gcGFyYW1ldGVyLiAqLworICAgIGlmICgocGVyc29uLT5vYmogIT0gTlVMTCkgJiYgcGVyc29uLT5sZW4pIHsKKyAgICAgICAgaWYgKHBlcnNvbi0+bGVuID4gQkxBS0UyU19QRVJTT05BTEJZVEVTKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWF4aW11bSBwZXJzb24gbGVuZ3RoIGlzICVkIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJTX1BFUlNPTkFMQllURVMpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoc2VsZi0+cGFyYW0ucGVyc29uYWwsIHBlcnNvbi0+YnVmLCBwZXJzb24tPmxlbik7CisgICAgfQorCisgICAgLyogU2V0IHRyZWUgcGFyYW1ldGVycy4gKi8KKyAgICBpZiAoZmFub3V0IDwgMCB8fCBmYW5vdXQgPiAyNTUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImZhbm91dCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmZhbm91dCA9ICh1aW50OF90KWZhbm91dDsKKworICAgIGlmIChkZXB0aCA8PSAwIHx8IGRlcHRoID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJkZXB0aCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjU1Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHNlbGYtPnBhcmFtLmRlcHRoID0gKHVpbnQ4X3QpZGVwdGg7CisKKyAgICBpZiAobGVhZl9zaXplX29iaiAhPSBOVUxMKSB7CisgICAgICAgIGxlYWZfc2l6ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhsZWFmX3NpemVfb2JqKTsKKyAgICAgICAgaWYgKGxlYWZfc2l6ZSA9PSAodW5zaWduZWQgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAobGVhZl9zaXplID4gMHhGRkZGRkZGRlUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAibGVhZl9zaXplIGlzIHRvbyBsYXJnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZWxmLT5wYXJhbS5sZWFmX2xlbmd0aCA9ICh1bnNpZ25lZCBpbnQpbGVhZl9zaXplOworCisgICAgaWYgKG5vZGVfb2Zmc2V0X29iaiAhPSBOVUxMKSB7CisgICAgICAgIG5vZGVfb2Zmc2V0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhub2RlX29mZnNldF9vYmopOworICAgICAgICBpZiAobm9kZV9vZmZzZXQgPT0gKHVuc2lnbmVkIGxvbmcgbG9uZykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyNpZmRlZiBIQVZFX0JMQUtFMlMKKyAgICBpZiAobm9kZV9vZmZzZXQgPiAweEZGRkZGRkZGRkZGRlVMTCkgeworICAgICAgICAvKiBtYXhpbXVtIDIqKjQ4IC0gMSAqLworICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJub2RlX29mZnNldCBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgIH0KKyAgICBzdG9yZTQ4KCYoc2VsZi0+cGFyYW0ubm9kZV9vZmZzZXQpLCBub2RlX29mZnNldCk7CisjZWxzZQorICAgIHNlbGYtPnBhcmFtLm5vZGVfb2Zmc2V0ID0gbm9kZV9vZmZzZXQ7CisjZW5kaWYKKworICAgIGlmIChub2RlX2RlcHRoIDwgMCB8fCBub2RlX2RlcHRoID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJub2RlX2RlcHRoIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyNTUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0ubm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisKKyAgICBpZiAoaW5uZXJfc2l6ZSA8IDAgfHwgaW5uZXJfc2l6ZSA+IEJMQUtFMlNfT1VUQllURVMpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImlubmVyX3NpemUgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIGlzICVkIiwKKyAgICAgICAgICAgICAgICBCTEFLRTJTX09VVEJZVEVTKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2VsZi0+cGFyYW0uaW5uZXJfbGVuZ3RoID0gaW5uZXJfc2l6ZTsKKworICAgIC8qIFNldCBrZXkgbGVuZ3RoLiAqLworICAgIGlmICgoa2V5LT5vYmogIT0gTlVMTCkgJiYga2V5LT5sZW4pIHsKKyAgICAgICAgaWYgKGtleS0+bGVuID4gQkxBS0UyU19LRVlCWVRFUykgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgIm1heGltdW0ga2V5IGxlbmd0aCBpcyAlZCBieXRlcyIsCisgICAgICAgICAgICAgICAgQkxBS0UyU19LRVlCWVRFUyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHNlbGYtPnBhcmFtLmtleV9sZW5ndGggPSAodWludDhfdClrZXktPmxlbjsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGhhc2ggc3RhdGUuICovCisgICAgaWYgKGJsYWtlMnNfaW5pdF9wYXJhbSgmc2VsZi0+c3RhdGUsICZzZWxmLT5wYXJhbSkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImVycm9yIGluaXRpYWxpemluZyBoYXNoIHN0YXRlIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgLyogU2V0IGxhc3Qgbm9kZSBmbGFnIChtdXN0IGNvbWUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24pLiAqLworICAgIHNlbGYtPnN0YXRlLmxhc3Rfbm9kZSA9IGxhc3Rfbm9kZTsKKworICAgIC8qIFByb2Nlc3Mga2V5IGJsb2NrIGlmIGFueS4gKi8KKyAgICBpZiAoc2VsZi0+cGFyYW0ua2V5X2xlbmd0aCkgeworICAgICAgICB1aW50OF90IGJsb2NrW0JMQUtFMlNfQkxPQ0tCWVRFU107CisgICAgICAgIG1lbXNldChibG9jaywgMCwgc2l6ZW9mKGJsb2NrKSk7CisgICAgICAgIG1lbWNweShibG9jaywga2V5LT5idWYsIGtleS0+bGVuKTsKKyAgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBibG9jaywgc2l6ZW9mKGJsb2NrKSk7CisgICAgICAgIHNlY3VyZV96ZXJvX21lbW9yeShibG9jaywgc2l6ZW9mKGJsb2NrKSk7CisgICAgfQorCisgICAgLyogUHJvY2VzcyBpbml0aWFsIGRhdGEgaWYgYW55LiAqLworICAgIGlmIChkYXRhICE9IE5VTEwpIHsKKyAgICAgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKGRhdGEsICZidWYsIGdvdG8gZXJyb3IpOworCisgICAgICAgIGlmIChidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGJsYWtlMnNfdXBkYXRlKCZzZWxmLT5zdGF0ZSwgYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICAgfQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworCisgIGVycm9yOgorICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMnMuYmxha2Uycy5jb3B5CisKK1JldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19jb3B5X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YzViYWRhNDA0YjdhZWQ3IGlucHV0PWM4ODU4ZTg4N2FlNGEwN2FdKi8KK3sKKyAgICBCTEFLRTJzT2JqZWN0ICpjcHk7CisKKyAgICBpZiAoKGNweSA9IG5ld19CTEFLRTJzT2JqZWN0KFB5X1RZUEUoc2VsZikpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgY3B5LT5wYXJhbSA9IHNlbGYtPnBhcmFtOworICAgIGNweS0+c3RhdGUgPSBzZWxmLT5zdGF0ZTsKKyAgICBMRUFWRV9IQVNITElCKHNlbGYpOworICAgIHJldHVybiAoUHlPYmplY3QgKiljcHk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19ibGFrZTJzLmJsYWtlMnMudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX3VwZGF0ZShCTEFLRTJzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlODQzOGExZDNjZWRlODcgaW5wdXQ9NDdhNDA4YjlhM2NjMDVjNV0qLworeworICAgIFB5X2J1ZmZlciBidWY7CisKKyAgICBHRVRfQlVGRkVSX1ZJRVdfT1JfRVJST1VUKG9iaiwgJmJ1Zik7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwgJiYgYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKQorICAgICAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworCisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkgeworICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soc2VsZi0+bG9jaywgMSk7CisgICAgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9jayk7CisgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9IGVsc2UgeworICAgICAgICBibGFrZTJzX3VwZGF0ZSgmc2VsZi0+c3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4pOworICAgIH0KKyNlbHNlCisgICAgYmxha2Uyc191cGRhdGUoJnNlbGYtPnN0YXRlLCBidWYuYnVmLCBidWYubGVuKTsKKyNlbmRpZiAvKiAhV0lUSF9USFJFQUQgKi8KKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybiBQeV9Ob25lOworfQorCisvKltjbGluaWMgaW5wdXRdCitfYmxha2Uycy5ibGFrZTJzLmRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04MGU4MWE0OGM2Zjc5Y2Y5IGlucHV0PWZlYjlhMjIwMTM1YmRlYmFdKi8KK3sKKyAgICB1aW50OF90IGRpZ2VzdFtCTEFLRTJTX09VVEJZVEVTXTsKKyAgICBibGFrZTJzX3N0YXRlIHN0YXRlX2NweTsKKworICAgIEVOVEVSX0hBU0hMSUIoc2VsZik7CisgICAgc3RhdGVfY3B5ID0gc2VsZi0+c3RhdGU7CisgICAgYmxha2Uyc19maW5hbCgmc3RhdGVfY3B5LCBkaWdlc3QsIHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICBzZWxmLT5wYXJhbS5kaWdlc3RfbGVuZ3RoKTsKK30KKworLypbY2xpbmljIGlucHV0XQorX2JsYWtlMnMuYmxha2Uycy5oZXhkaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRiNmM1MDI4YzBhM2MyZTUgaW5wdXQ9NGU0ODc3YjhiZDdhZWE5MV0qLworeworICAgIHVpbnQ4X3QgZGlnZXN0W0JMQUtFMlNfT1VUQllURVNdOworICAgIGJsYWtlMnNfc3RhdGUgc3RhdGVfY3B5OworCisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBzdGF0ZV9jcHkgPSBzZWxmLT5zdGF0ZTsKKyAgICBibGFrZTJzX2ZpbmFsKCZzdGF0ZV9jcHksIGRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7CisgICAgTEVBVkVfSEFTSExJQihzZWxmKTsKKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwgc2VsZi0+cGFyYW0uZGlnZXN0X2xlbmd0aCk7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIHB5X2JsYWtlMnNfbWV0aG9kc1tdID0geworICAgIF9CTEFLRTJTX0JMQUtFMlNfQ09QWV9NRVRIT0RERUYKKyAgICBfQkxBS0UyU19CTEFLRTJTX0RJR0VTVF9NRVRIT0RERUYKKyAgICBfQkxBS0UyU19CTEFLRTJTX0hFWERJR0VTVF9NRVRIT0RERUYKKyAgICBfQkxBS0UyU19CTEFLRTJTX1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgTlVMTH0KK307CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19nZXRfbmFtZShCTEFLRTJzT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygiYmxha2UycyIpOworfQorCisKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X2JsYWtlMnNfZ2V0X2Jsb2NrX3NpemUoQkxBS0Uyc09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKEJMQUtFMlNfQkxPQ0tCWVRFUyk7Cit9CisKKworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19nZXRfZGlnZXN0X3NpemUoQkxBS0Uyc09iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPnBhcmFtLmRpZ2VzdF9sZW5ndGgpOworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBweV9ibGFrZTJzX2dldHNldHRlcnNbXSA9IHsKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKXB5X2JsYWtlMnNfZ2V0X25hbWUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiYmxvY2tfc2l6ZSIsIChnZXR0ZXIpcHlfYmxha2Uyc19nZXRfYmxvY2tfc2l6ZSwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJkaWdlc3Rfc2l6ZSIsIChnZXR0ZXIpcHlfYmxha2Uyc19nZXRfZGlnZXN0X3NpemUsCisgICAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitzdGF0aWMgdm9pZAorcHlfYmxha2Uyc19kZWFsbG9jKFB5T2JqZWN0ICpzZWxmKQoreworICAgIEJMQUtFMnNPYmplY3QgKm9iaiA9IChCTEFLRTJzT2JqZWN0ICopc2VsZjsKKworICAgIC8qIFRyeSBub3QgdG8gbGVhdmUgc3RhdGUgaW4gbWVtb3J5LiAqLworICAgIHNlY3VyZV96ZXJvX21lbW9yeSgmb2JqLT5wYXJhbSwgc2l6ZW9mKG9iai0+cGFyYW0pKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoJm9iai0+c3RhdGUsIHNpemVvZihvYmotPnN0YXRlKSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAob2JqLT5sb2NrKSB7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhvYmotPmxvY2spOworICAgICAgICBvYmotPmxvY2sgPSBOVUxMOworICAgIH0KKyNlbmRpZgorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworCitQeVR5cGVPYmplY3QgUHlCbGFrZTJfQkxBS0Uyc1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9ibGFrZTIuYmxha2UycyIsICAgICAgICAvKiB0cF9uYW1lICAgICAgICAgICAgKi8KKyAgICBzaXplb2YoQkxBS0Uyc09iamVjdCksICAgIC8qIHRwX3NpemUgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgICAgICAgICovCisgICAgcHlfYmxha2Uyc19kZWFsbG9jLCAgICAgICAvKiB0cF9kZWFsbG9jICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICAgICAgICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAvKiB0cF9mbGFncyAgICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJzX25ld19fZG9jX18sICAgIC8qIHRwX2RvYyAgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICAgICAgICAqLworICAgIHB5X2JsYWtlMnNfbWV0aG9kcywgICAgICAgLyogdHBfbWV0aG9kcyAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICAgICAgICAgKi8KKyAgICBweV9ibGFrZTJzX2dldHNldHRlcnMsICAgIC8qIHRwX2dldHNldCAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAgICAgICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICAgICAgICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICAgICAgICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICAgICAgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgICAgICAgICAgICAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgICAgICAgICAgICovCisgICAgcHlfYmxha2Uyc19uZXcsICAgICAgICAgICAvKiB0cF9uZXcgICAgICAgICAgICAgKi8KK307CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMmJfaW1wbC5jLmggYi9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMmJfaW1wbC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFjMDczYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9jbGluaWMvYmxha2UyYl9pbXBsLmMuaApAQCAtMCwwICsxLDEyNSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5X2JsYWtlMmJfbmV3X19kb2NfXywKKyJibGFrZTJiKHN0cmluZz1Ob25lLCAqLCBkaWdlc3Rfc2l6ZT1fYmxha2UyYi5ibGFrZTJiLk1BWF9ESUdFU1RfU0laRSxcbiIKKyIgICAgICAgIGtleT1Ob25lLCBzYWx0PU5vbmUsIHBlcnNvbj1Ob25lLCBmYW5vdXQ9MSwgZGVwdGg9MSxcbiIKKyIgICAgICAgIGxlYWZfc2l6ZT1Ob25lLCBub2RlX29mZnNldD1Ob25lLCBub2RlX2RlcHRoPTAsIGlubmVyX3NpemU9MCxcbiIKKyIgICAgICAgIGxhc3Rfbm9kZT1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBCTEFLRTJiIGhhc2ggb2JqZWN0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZGlnZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqa2V5LCBQeV9idWZmZXIgKnNhbHQsIFB5X2J1ZmZlciAqcGVyc29uLAorICAgICAgICAgICAgICAgICAgICBpbnQgZmFub3V0LCBpbnQgZGVwdGgsIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqLCBpbnQgbm9kZV9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyX3NpemUsIGludCBsYXN0X25vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2UyYl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAiZGlnZXN0X3NpemUiLCAia2V5IiwgInNhbHQiLCAicGVyc29uIiwgImZhbm91dCIsICJkZXB0aCIsICJsZWFmX3NpemUiLCAibm9kZV9vZmZzZXQiLCAibm9kZV9kZXB0aCIsICJpbm5lcl9zaXplIiwgImxhc3Rfbm9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPJGl5KnkqeSppaU9PaWlwOmJsYWtlMmIiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpkYXRhID0gTlVMTDsKKyAgICBpbnQgZGlnZXN0X3NpemUgPSBCTEFLRTJCX09VVEJZVEVTOworICAgIFB5X2J1ZmZlciBrZXkgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHNhbHQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHBlcnNvbiA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgZmFub3V0ID0gMTsKKyAgICBpbnQgZGVwdGggPSAxOworICAgIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqID0gTlVMTDsKKyAgICBpbnQgbm9kZV9kZXB0aCA9IDA7CisgICAgaW50IGlubmVyX3NpemUgPSAwOworICAgIGludCBsYXN0X25vZGUgPSAwOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJmRpZ2VzdF9zaXplLCAma2V5LCAmc2FsdCwgJnBlcnNvbiwgJmZhbm91dCwgJmRlcHRoLCAmbGVhZl9zaXplX29iaiwgJm5vZGVfb2Zmc2V0X29iaiwgJm5vZGVfZGVwdGgsICZpbm5lcl9zaXplLCAmbGFzdF9ub2RlKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHB5X2JsYWtlMmJfbmV3X2ltcGwodHlwZSwgZGF0YSwgZGlnZXN0X3NpemUsICZrZXksICZzYWx0LCAmcGVyc29uLCBmYW5vdXQsIGRlcHRoLCBsZWFmX3NpemVfb2JqLCBub2RlX29mZnNldF9vYmosIG5vZGVfZGVwdGgsIGlubmVyX3NpemUsIGxhc3Rfbm9kZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Iga2V5ICovCisgICAgaWYgKGtleS5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZrZXkpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBzYWx0ICovCisgICAgaWYgKHNhbHQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2FsdCk7CisgICAgfQorICAgIC8qIENsZWFudXAgZm9yIHBlcnNvbiAqLworICAgIGlmIChwZXJzb24ub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGVyc29uKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMmJfYmxha2UyYl9jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgX0JMQUtFMkJfQkxBS0UyQl9DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJiX2JsYWtlMmJfY29weSwgTUVUSF9OT0FSR1MsIF9ibGFrZTJiX2JsYWtlMmJfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9jb3B5X2ltcGwoQkxBS0UyYk9iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2UyYl9ibGFrZTJiX2NvcHkoQkxBS0UyYk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2JsYWtlMmJfYmxha2UyYl9jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2UyYl9ibGFrZTJiX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgX0JMQUtFMkJfQkxBS0UyQl9VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilfYmxha2UyYl9ibGFrZTJiX3VwZGF0ZSwgTUVUSF9PLCBfYmxha2UyYl9ibGFrZTJiX3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2JsYWtlMmJfYmxha2UyYl9kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIF9CTEFLRTJCX0JMQUtFMkJfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMmJfYmxha2UyYl9kaWdlc3QsIE1FVEhfTk9BUkdTLCBfYmxha2UyYl9ibGFrZTJiX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9kaWdlc3RfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfZGlnZXN0KEJMQUtFMmJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJiX2JsYWtlMmJfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9CTEFLRTJCX0JMQUtFMkJfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBfYmxha2UyYl9ibGFrZTJiX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMmJfYmxha2UyYl9oZXhkaWdlc3RfaW1wbChCTEFLRTJiT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0KEJMQUtFMmJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJiX2JsYWtlMmJfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTM1YTU0ODUyYzk4ZTUxYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMnNfaW1wbC5jLmggYi9Nb2R1bGVzL19ibGFrZTIvY2xpbmljL2JsYWtlMnNfaW1wbC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E5MDhkMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9jbGluaWMvYmxha2Uyc19pbXBsLmMuaApAQCAtMCwwICsxLDEyNSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworUHlEb2NfU1RSVkFSKHB5X2JsYWtlMnNfbmV3X19kb2NfXywKKyJibGFrZTJzKHN0cmluZz1Ob25lLCAqLCBkaWdlc3Rfc2l6ZT1fYmxha2Uycy5ibGFrZTJzLk1BWF9ESUdFU1RfU0laRSxcbiIKKyIgICAgICAgIGtleT1Ob25lLCBzYWx0PU5vbmUsIHBlcnNvbj1Ob25lLCBmYW5vdXQ9MSwgZGVwdGg9MSxcbiIKKyIgICAgICAgIGxlYWZfc2l6ZT1Ob25lLCBub2RlX29mZnNldD1Ob25lLCBub2RlX2RlcHRoPTAsIGlubmVyX3NpemU9MCxcbiIKKyIgICAgICAgIGxhc3Rfbm9kZT1GYWxzZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIG5ldyBCTEFLRTJzIGhhc2ggb2JqZWN0LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhLCBpbnQgZGlnZXN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgIFB5X2J1ZmZlciAqa2V5LCBQeV9idWZmZXIgKnNhbHQsIFB5X2J1ZmZlciAqcGVyc29uLAorICAgICAgICAgICAgICAgICAgICBpbnQgZmFub3V0LCBpbnQgZGVwdGgsIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqLCBpbnQgbm9kZV9kZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IGlubmVyX3NpemUsIGludCBsYXN0X25vZGUpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYmxha2Uyc19uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAiZGlnZXN0X3NpemUiLCAia2V5IiwgInNhbHQiLCAicGVyc29uIiwgImZhbm91dCIsICJkZXB0aCIsICJsZWFmX3NpemUiLCAibm9kZV9vZmZzZXQiLCAibm9kZV9kZXB0aCIsICJpbm5lcl9zaXplIiwgImxhc3Rfbm9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPJGl5KnkqeSppaU9PaWlwOmJsYWtlMnMiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpkYXRhID0gTlVMTDsKKyAgICBpbnQgZGlnZXN0X3NpemUgPSBCTEFLRTJTX09VVEJZVEVTOworICAgIFB5X2J1ZmZlciBrZXkgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHNhbHQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHBlcnNvbiA9IHtOVUxMLCBOVUxMfTsKKyAgICBpbnQgZmFub3V0ID0gMTsKKyAgICBpbnQgZGVwdGggPSAxOworICAgIFB5T2JqZWN0ICpsZWFmX3NpemVfb2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbm9kZV9vZmZzZXRfb2JqID0gTlVMTDsKKyAgICBpbnQgbm9kZV9kZXB0aCA9IDA7CisgICAgaW50IGlubmVyX3NpemUgPSAwOworICAgIGludCBsYXN0X25vZGUgPSAwOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJmRpZ2VzdF9zaXplLCAma2V5LCAmc2FsdCwgJnBlcnNvbiwgJmZhbm91dCwgJmRlcHRoLCAmbGVhZl9zaXplX29iaiwgJm5vZGVfb2Zmc2V0X29iaiwgJm5vZGVfZGVwdGgsICZpbm5lcl9zaXplLCAmbGFzdF9ub2RlKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IHB5X2JsYWtlMnNfbmV3X2ltcGwodHlwZSwgZGF0YSwgZGlnZXN0X3NpemUsICZrZXksICZzYWx0LCAmcGVyc29uLCBmYW5vdXQsIGRlcHRoLCBsZWFmX3NpemVfb2JqLCBub2RlX29mZnNldF9vYmosIG5vZGVfZGVwdGgsIGlubmVyX3NpemUsIGxhc3Rfbm9kZSk7CisKK2V4aXQ6CisgICAgLyogQ2xlYW51cCBmb3Iga2V5ICovCisgICAgaWYgKGtleS5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZrZXkpOworICAgIH0KKyAgICAvKiBDbGVhbnVwIGZvciBzYWx0ICovCisgICAgaWYgKHNhbHQub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2FsdCk7CisgICAgfQorICAgIC8qIENsZWFudXAgZm9yIHBlcnNvbiAqLworICAgIGlmIChwZXJzb24ub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGVyc29uKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2JsYWtlMnNfYmxha2Uyc19jb3B5X19kb2NfXywKKyJjb3B5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgY29weSBvZiB0aGUgaGFzaCBvYmplY3QuIik7CisKKyNkZWZpbmUgX0JMQUtFMlNfQkxBS0UyU19DT1BZX01FVEhPRERFRiAgICBcCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKV9ibGFrZTJzX2JsYWtlMnNfY29weSwgTUVUSF9OT0FSR1MsIF9ibGFrZTJzX2JsYWtlMnNfY29weV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19jb3B5X2ltcGwoQkxBS0Uyc09iamVjdCAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYmxha2Uyc19ibGFrZTJzX2NvcHkoQkxBS0Uyc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2JsYWtlMnNfYmxha2Uyc19jb3B5X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2Uyc19ibGFrZTJzX3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgX0JMQUtFMlNfQkxBS0UyU19VUERBVEVfTUVUSE9EREVGICAgIFwKKyAgICB7InVwZGF0ZSIsIChQeUNGdW5jdGlvbilfYmxha2Uyc19ibGFrZTJzX3VwZGF0ZSwgTUVUSF9PLCBfYmxha2Uyc19ibGFrZTJzX3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX2JsYWtlMnNfYmxha2Uyc19kaWdlc3RfX2RvY19fLAorImRpZ2VzdCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLiIpOworCisjZGVmaW5lIF9CTEFLRTJTX0JMQUtFMlNfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMnNfYmxha2Uyc19kaWdlc3QsIE1FVEhfTk9BUkdTLCBfYmxha2Uyc19ibGFrZTJzX2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19kaWdlc3RfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfZGlnZXN0KEJMQUtFMnNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJzX2JsYWtlMnNfZGlnZXN0X2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgZGlnaXRzLiIpOworCisjZGVmaW5lIF9CTEFLRTJTX0JMQUtFMlNfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3QsIE1FVEhfTk9BUkdTLCBfYmxha2Uyc19ibGFrZTJzX2hleGRpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2JsYWtlMnNfYmxha2Uyc19oZXhkaWdlc3RfaW1wbChCTEFLRTJzT2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0KEJMQUtFMnNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9ibGFrZTJzX2JsYWtlMnNfaGV4ZGlnZXN0X2ltcGwoc2VsZik7Cit9CisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTM1ZWE3OTAzZjljY2Y3NiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItY29uZmlnLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItY29uZmlnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA0NTViMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi1jb25maWcuaApAQCAtMCwwICsxLDc0IEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJfQ09ORklHX0hfXworI2RlZmluZSBfX0JMQUtFMl9DT05GSUdfSF9fCisKKy8qIFRoZXNlIGRvbid0IHdvcmsgZXZlcnl3aGVyZSAqLworI2lmIGRlZmluZWQoX19TU0UyX18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FtZDY0X18pCisjZGVmaW5lIEhBVkVfU1NFMgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fU1NTRTNfXykKKyNkZWZpbmUgSEFWRV9TU1NFMworI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fU1NFNF8xX18pCisjZGVmaW5lIEhBVkVfU1NFNDEKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FWWF9fKQorI2RlZmluZSBIQVZFX0FWWAorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fWE9QX18pCisjZGVmaW5lIEhBVkVfWE9QCisjZW5kaWYKKworCisjaWZkZWYgSEFWRV9BVlgyCisjaWZuZGVmIEhBVkVfQVZYCisjZGVmaW5lIEhBVkVfQVZYCisjZW5kaWYKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9YT1AKKyNpZm5kZWYgSEFWRV9BVlgKKyNkZWZpbmUgSEFWRV9BVlgKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0FWWAorI2lmbmRlZiBIQVZFX1NTRTQxCisjZGVmaW5lIEhBVkVfU1NFNDEKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NTRTQxCisjaWZuZGVmIEhBVkVfU1NTRTMKKyNkZWZpbmUgSEFWRV9TU1NFMworI2VuZGlmCisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1NTRTMKKyNkZWZpbmUgSEFWRV9TU0UyCisjZW5kaWYKKworI2lmICFkZWZpbmVkKEhBVkVfU1NFMikKKyNlcnJvciAiVGhpcyBjb2RlIHJlcXVpcmVzIGF0IGxlYXN0IFNTRTIuIgorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTItaW1wbC5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmUzYzBmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLWltcGwuaApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyX0lNUExfSF9fCisjZGVmaW5lIF9fQkxBS0UyX0lNUExfSF9fCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50MzJfdCkgbG9hZDMyKCBjb25zdCB2b2lkICpzcmMgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIHVpbnQzMl90IHc7CisgIG1lbWNweSgmdywgc3JjLCBzaXplb2Ygdyk7CisgIHJldHVybiB3OworI2Vsc2UKKyAgY29uc3QgdWludDhfdCAqcCA9ICggY29uc3QgdWludDhfdCAqIClzcmM7CisgIHVpbnQzMl90IHcgPSAqcCsrOworICB3IHw9ICggdWludDMyX3QgKSggKnArKyApIDw8ICA4OworICB3IHw9ICggdWludDMyX3QgKSggKnArKyApIDw8IDE2OworICB3IHw9ICggdWludDMyX3QgKSggKnArKyApIDw8IDI0OworICByZXR1cm4gdzsKKyNlbmRpZgorfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQ2NF90KSBsb2FkNjQoIGNvbnN0IHZvaWQgKnNyYyApCit7CisjaWYgZGVmaW5lZChOQVRJVkVfTElUVExFX0VORElBTikKKyAgdWludDY0X3QgdzsKKyAgbWVtY3B5KCZ3LCBzcmMsIHNpemVvZiB3KTsKKyAgcmV0dXJuIHc7CisjZWxzZQorICBjb25zdCB1aW50OF90ICpwID0gKCBjb25zdCB1aW50OF90ICogKXNyYzsKKyAgdWludDY0X3QgdyA9ICpwKys7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgIDg7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMTY7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMjQ7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgMzI7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgNDA7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgNDg7CisgIHcgfD0gKCB1aW50NjRfdCApKCAqcCsrICkgPDwgNTY7CisgIHJldHVybiB3OworI2VuZGlmCit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodm9pZCkgc3RvcmUzMiggdm9pZCAqZHN0LCB1aW50MzJfdCB3ICkKK3sKKyNpZiBkZWZpbmVkKE5BVElWRV9MSVRUTEVfRU5ESUFOKQorICBtZW1jcHkoZHN0LCAmdywgc2l6ZW9mIHcpOworI2Vsc2UKKyAgdWludDhfdCAqcCA9ICggdWludDhfdCAqIClkc3Q7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7CisjZW5kaWYKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh2b2lkKSBzdG9yZTY0KCB2b2lkICpkc3QsIHVpbnQ2NF90IHcgKQoreworI2lmIGRlZmluZWQoTkFUSVZFX0xJVFRMRV9FTkRJQU4pCisgIG1lbWNweShkc3QsICZ3LCBzaXplb2Ygdyk7CisjZWxzZQorICB1aW50OF90ICpwID0gKCB1aW50OF90ICogKWRzdDsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsgdyA+Pj0gODsKKyAgKnArKyA9ICggdWludDhfdCApdzsKKyNlbmRpZgorfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQ2NF90KSBsb2FkNDgoIGNvbnN0IHZvaWQgKnNyYyApCit7CisgIGNvbnN0IHVpbnQ4X3QgKnAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApc3JjOworICB1aW50NjRfdCB3ID0gKnArKzsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAgODsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAxNjsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAyNDsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCAzMjsKKyAgdyB8PSAoIHVpbnQ2NF90ICkoICpwKysgKSA8PCA0MDsKKyAgcmV0dXJuIHc7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodm9pZCkgc3RvcmU0OCggdm9pZCAqZHN0LCB1aW50NjRfdCB3ICkKK3sKKyAgdWludDhfdCAqcCA9ICggdWludDhfdCAqIClkc3Q7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7IHcgPj49IDg7CisgICpwKysgPSAoIHVpbnQ4X3QgKXc7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDMyX3QpIHJvdGwzMiggY29uc3QgdWludDMyX3QgdywgY29uc3QgdW5zaWduZWQgYyApCit7CisgIHJldHVybiAoIHcgPDwgYyApIHwgKCB3ID4+ICggMzIgLSBjICkgKTsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORSh1aW50NjRfdCkgcm90bDY0KCBjb25zdCB1aW50NjRfdCB3LCBjb25zdCB1bnNpZ25lZCBjICkKK3sKKyAgcmV0dXJuICggdyA8PCBjICkgfCAoIHcgPj4gKCA2NCAtIGMgKSApOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKHVpbnQzMl90KSByb3RyMzIoIGNvbnN0IHVpbnQzMl90IHcsIGNvbnN0IHVuc2lnbmVkIGMgKQoreworICByZXR1cm4gKCB3ID4+IGMgKSB8ICggdyA8PCAoIDMyIC0gYyApICk7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUodWludDY0X3QpIHJvdHI2NCggY29uc3QgdWludDY0X3QgdywgY29uc3QgdW5zaWduZWQgYyApCit7CisgIHJldHVybiAoIHcgPj4gYyApIHwgKCB3IDw8ICggNjQgLSBjICkgKTsKK30KKworLyogcHJldmVudHMgY29tcGlsZXIgb3B0aW1pemluZyBvdXQgbWVtc2V0KCkgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUodm9pZCkgc2VjdXJlX3plcm9fbWVtb3J5KHZvaWQgKnYsIHNpemVfdCBuKQoreworICBzdGF0aWMgdm9pZCAqKCpjb25zdCB2b2xhdGlsZSBtZW1zZXRfdikodm9pZCAqLCBpbnQsIHNpemVfdCkgPSAmbWVtc2V0OworICBtZW1zZXRfdih2LCAwLCBuKTsKK30KKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5ZmRmNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMi5oCkBAIC0wLDAgKzEsMTYxIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gcmVmZXJlbmNlIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJfSF9fCisjZGVmaW5lIF9fQkxBS0UyX0hfXworCisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpZmRlZiBCTEFLRTJfTk9fSU5MSU5FCisjZGVmaW5lIEJMQUtFMl9MT0NBTF9JTkxJTkUodHlwZSkgc3RhdGljIHR5cGUKKyNlbmRpZgorCisjaWZuZGVmIEJMQUtFMl9MT0NBTF9JTkxJTkUKKyNkZWZpbmUgQkxBS0UyX0xPQ0FMX0lOTElORSh0eXBlKSBzdGF0aWMgaW5saW5lIHR5cGUKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyAgZW51bSBibGFrZTJzX2NvbnN0YW50CisgIHsKKyAgICBCTEFLRTJTX0JMT0NLQllURVMgPSA2NCwKKyAgICBCTEFLRTJTX09VVEJZVEVTICAgPSAzMiwKKyAgICBCTEFLRTJTX0tFWUJZVEVTICAgPSAzMiwKKyAgICBCTEFLRTJTX1NBTFRCWVRFUyAgPSA4LAorICAgIEJMQUtFMlNfUEVSU09OQUxCWVRFUyA9IDgKKyAgfTsKKworICBlbnVtIGJsYWtlMmJfY29uc3RhbnQKKyAgeworICAgIEJMQUtFMkJfQkxPQ0tCWVRFUyA9IDEyOCwKKyAgICBCTEFLRTJCX09VVEJZVEVTICAgPSA2NCwKKyAgICBCTEFLRTJCX0tFWUJZVEVTICAgPSA2NCwKKyAgICBCTEFLRTJCX1NBTFRCWVRFUyAgPSAxNiwKKyAgICBCTEFLRTJCX1BFUlNPTkFMQllURVMgPSAxNgorICB9OworCisgIHR5cGVkZWYgc3RydWN0IF9fYmxha2Uyc19zdGF0ZQorICB7CisgICAgdWludDMyX3QgaFs4XTsKKyAgICB1aW50MzJfdCB0WzJdOworICAgIHVpbnQzMl90IGZbMl07CisgICAgdWludDhfdCAgYnVmWzIgKiBCTEFLRTJTX0JMT0NLQllURVNdOworICAgIHNpemVfdCAgIGJ1ZmxlbjsKKyAgICB1aW50OF90ICBsYXN0X25vZGU7CisgIH0gYmxha2Uyc19zdGF0ZTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMmJfc3RhdGUKKyAgeworICAgIHVpbnQ2NF90IGhbOF07CisgICAgdWludDY0X3QgdFsyXTsKKyAgICB1aW50NjRfdCBmWzJdOworICAgIHVpbnQ4X3QgIGJ1ZlsyICogQkxBS0UyQl9CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgICBidWZsZW47CisgICAgdWludDhfdCAgbGFzdF9ub2RlOworICB9IGJsYWtlMmJfc3RhdGU7CisKKyAgdHlwZWRlZiBzdHJ1Y3QgX19ibGFrZTJzcF9zdGF0ZQorICB7CisgICAgYmxha2Uyc19zdGF0ZSBTWzhdWzFdOworICAgIGJsYWtlMnNfc3RhdGUgUlsxXTsKKyAgICB1aW50OF90IGJ1Zls4ICogQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBzaXplX3QgIGJ1ZmxlbjsKKyAgfSBibGFrZTJzcF9zdGF0ZTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMmJwX3N0YXRlCisgIHsKKyAgICBibGFrZTJiX3N0YXRlIFNbNF1bMV07CisgICAgYmxha2UyYl9zdGF0ZSBSWzFdOworICAgIHVpbnQ4X3QgYnVmWzQgKiBCTEFLRTJCX0JMT0NLQllURVNdOworICAgIHNpemVfdCAgYnVmbGVuOworICB9IGJsYWtlMmJwX3N0YXRlOworCisKKyNwcmFnbWEgcGFjayhwdXNoLCAxKQorICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMnNfcGFyYW0KKyAgeworICAgIHVpbnQ4X3QgIGRpZ2VzdF9sZW5ndGg7IC8qIDEgKi8KKyAgICB1aW50OF90ICBrZXlfbGVuZ3RoOyAgICAvKiAyICovCisgICAgdWludDhfdCAgZmFub3V0OyAgICAgICAgLyogMyAqLworICAgIHVpbnQ4X3QgIGRlcHRoOyAgICAgICAgIC8qIDQgKi8KKyAgICB1aW50MzJfdCBsZWFmX2xlbmd0aDsgICAvKiA4ICovCisgICAgdWludDhfdCAgbm9kZV9vZmZzZXRbNl07Ly8gMTQKKyAgICB1aW50OF90ICBub2RlX2RlcHRoOyAgICAvKiAxNSAqLworICAgIHVpbnQ4X3QgIGlubmVyX2xlbmd0aDsgIC8qIDE2ICovCisgICAgLyogdWludDhfdCAgcmVzZXJ2ZWRbMF07ICovCisgICAgdWludDhfdCAgc2FsdFtCTEFLRTJTX1NBTFRCWVRFU107IC8qIDI0ICovCisgICAgdWludDhfdCAgcGVyc29uYWxbQkxBS0UyU19QRVJTT05BTEJZVEVTXTsgIC8qIDMyICovCisgIH0gYmxha2Uyc19wYXJhbTsKKworICB0eXBlZGVmIHN0cnVjdCBfX2JsYWtlMmJfcGFyYW0KKyAgeworICAgIHVpbnQ4X3QgIGRpZ2VzdF9sZW5ndGg7IC8qIDEgKi8KKyAgICB1aW50OF90ICBrZXlfbGVuZ3RoOyAgICAvKiAyICovCisgICAgdWludDhfdCAgZmFub3V0OyAgICAgICAgLyogMyAqLworICAgIHVpbnQ4X3QgIGRlcHRoOyAgICAgICAgIC8qIDQgKi8KKyAgICB1aW50MzJfdCBsZWFmX2xlbmd0aDsgICAvKiA4ICovCisgICAgdWludDY0X3Qgbm9kZV9vZmZzZXQ7ICAgLyogMTYgKi8KKyAgICB1aW50OF90ICBub2RlX2RlcHRoOyAgICAvKiAxNyAqLworICAgIHVpbnQ4X3QgIGlubmVyX2xlbmd0aDsgIC8qIDE4ICovCisgICAgdWludDhfdCAgcmVzZXJ2ZWRbMTRdOyAgLyogMzIgKi8KKyAgICB1aW50OF90ICBzYWx0W0JMQUtFMkJfU0FMVEJZVEVTXTsgLyogNDggKi8KKyAgICB1aW50OF90ICBwZXJzb25hbFtCTEFLRTJCX1BFUlNPTkFMQllURVNdOyAgLyogNjQgKi8KKyAgfSBibGFrZTJiX3BhcmFtOworI3ByYWdtYSBwYWNrKHBvcCkKKworICAvKiBTdHJlYW1pbmcgQVBJICovCisgIGludCBibGFrZTJzX2luaXQoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJzX2luaXRfa2V5KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2Uyc19pbml0X3BhcmFtKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCBibGFrZTJzX3BhcmFtICpQICk7CisgIGludCBibGFrZTJzX3VwZGF0ZSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICk7CisgIGludCBibGFrZTJzX2ZpbmFsKCBibGFrZTJzX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICk7CisKKyAgaW50IGJsYWtlMmJfaW5pdCggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKTsKKyAgaW50IGJsYWtlMmJfaW5pdF9rZXkoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJiX2luaXRfcGFyYW0oIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMmJfcGFyYW0gKlAgKTsKKyAgaW50IGJsYWtlMmJfdXBkYXRlKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMmJfZmluYWwoIGJsYWtlMmJfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKTsKKworICBpbnQgYmxha2Uyc3BfaW5pdCggYmxha2Uyc3Bfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICk7CisgIGludCBibGFrZTJzcF9pbml0X2tleSggYmxha2Uyc3Bfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJzcF91cGRhdGUoIGJsYWtlMnNwX3N0YXRlICpTLCBjb25zdCB1aW50OF90ICppbiwgdWludDY0X3QgaW5sZW4gKTsKKyAgaW50IGJsYWtlMnNwX2ZpbmFsKCBibGFrZTJzcF9zdGF0ZSAqUywgdWludDhfdCAqb3V0LCB1aW50OF90IG91dGxlbiApOworCisgIGludCBibGFrZTJicF9pbml0KCBibGFrZTJicF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKTsKKyAgaW50IGJsYWtlMmJwX2luaXRfa2V5KCBibGFrZTJicF9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBrZXlsZW4gKTsKKyAgaW50IGJsYWtlMmJwX3VwZGF0ZSggYmxha2UyYnBfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApOworICBpbnQgYmxha2UyYnBfZmluYWwoIGJsYWtlMmJwX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICk7CisKKyAgLyogU2ltcGxlIEFQSSAqLworICBpbnQgYmxha2UycyggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICk7CisgIGludCBibGFrZTJiKCB1aW50OF90ICpvdXQsIGNvbnN0IHZvaWQgKmluLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB1aW50NjRfdCBpbmxlbiwgdWludDhfdCBrZXlsZW4gKTsKKworICBpbnQgYmxha2Uyc3AoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApOworICBpbnQgYmxha2UyYnAoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApOworCisgIHN0YXRpYyBpbmxpbmUgaW50IGJsYWtlMiggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKKyAgeworICAgIHJldHVybiBibGFrZTJiKCBvdXQsIGluLCBrZXksIG91dGxlbiwgaW5sZW4sIGtleWxlbiApOworICB9CisKKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorfQorI2VuZGlmCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLWxvYWQtc3NlMi5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDA0YTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJCX0xPQURfU1NFMl9IX18KKyNkZWZpbmUgX19CTEFLRTJCX0xPQURfU1NFMl9IX18KKworI2RlZmluZSBMT0FEX01TR18wXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0yLCBtMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTYsIG00KQorI2RlZmluZSBMT0FEX01TR18wXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtMSk7IGIxID0gX21tX3NldF9lcGk2NHgobTcsIG01KQorI2RlZmluZSBMT0FEX01TR18wXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTgpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTEyKQorI2RlZmluZSBMT0FEX01TR18wXzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMSwgbTkpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTEzKQorI2RlZmluZSBMT0FEX01TR18xXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTkpCisjZGVmaW5lIExPQURfTVNHXzFfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTgsIG0xMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTYsIG0xNSkKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG01LCBtMTEpCisjZGVmaW5lIExPQURfTVNHXzFfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTIsIG0xMik7IGIxID0gX21tX3NldF9lcGk2NHgobTMsIG03KQorI2RlZmluZSBMT0FEX01TR18yXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMiwgbTExKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG01KQorI2RlZmluZSBMT0FEX01TR18yXzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0wLCBtOCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtMikKKyNkZWZpbmUgTE9BRF9NU0dfMl8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMywgbTEwKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTcpCisjZGVmaW5lIExPQURfTVNHXzJfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTYsIG0xNCk7IGIxID0gX21tX3NldF9lcGk2NHgobTQsIG0xKQorI2RlZmluZSBMT0FEX01TR18zXzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNyk7IGIxID0gX21tX3NldF9lcGk2NHgobTExLCBtMTMpCisjZGVmaW5lIExPQURfTVNHXzNfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEsIG05KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTQsIG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfM18zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTQpCisjZGVmaW5lIExPQURfTVNHXzNfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTEwLCBtNik7IGIxID0gX21tX3NldF9lcGk2NHgobTgsIG0wKQorI2RlZmluZSBMT0FEX01TR180XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG01LCBtOSk7IGIxID0gX21tX3NldF9lcGk2NHgobTEwLCBtMikKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNywgbTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNSwgbTQpCisjZGVmaW5lIExPQURfTVNHXzRfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTExLCBtMTQpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtNikKKyNkZWZpbmUgTE9BRF9NU0dfNF80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTIsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG04KQorI2RlZmluZSBMT0FEX01TR181XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG02LCBtMik7IGIxID0gX21tX3NldF9lcGk2NHgobTgsIG0wKQorI2RlZmluZSBMT0FEX01TR181XzIoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTExKQorI2RlZmluZSBMT0FEX01TR181XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG03LCBtNCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEsIG0xNSkKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTEzKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTE0KQorI2RlZmluZSBMT0FEX01TR182XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xLCBtMTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG00LCBtMTQpCisjZGVmaW5lIExPQURfTVNHXzZfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTE1LCBtNSk7IGIxID0gX21tX3NldF9lcGk2NHgobTEwLCBtMTMpCisjZGVmaW5lIExPQURfTVNHXzZfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTYsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtOCwgbTkpCisjZGVmaW5lIExPQURfTVNHXzZfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTMsIG03KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTEsIG0yKQorI2RlZmluZSBMT0FEX01TR183XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG03LCBtMTMpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0zLCBtMTIpCisjZGVmaW5lIExPQURfTVNHXzdfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTE0LCBtMTEpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG05LCBtMSkKKyNkZWZpbmUgTE9BRF9NU0dfN18zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG01KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTgpCisjZGVmaW5lIExPQURfTVNHXzdfNChiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTQsIG0wKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG02KQorI2RlZmluZSBMT0FEX01TR184XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTYpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0wLCBtMTEpCisjZGVmaW5lIExPQURfTVNHXzhfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTksIG0xNSk7IGIxID0gX21tX3NldF9lcGk2NHgobTgsIG0zKQorI2RlZmluZSBMT0FEX01TR184XzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMywgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTAsIG0xKQorI2RlZmluZSBMT0FEX01TR184XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG03LCBtMik7IGIxID0gX21tX3NldF9lcGk2NHgobTUsIG00KQorI2RlZmluZSBMT0FEX01TR185XzEoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG04LCBtMTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xLCBtNykKKyNkZWZpbmUgTE9BRF9NU0dfOV8yKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtNCwgbTIpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG01LCBtNikKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtOSwgbTE1KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTMsIG0zKQorI2RlZmluZSBMT0FEX01TR185XzQoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTExKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMCwgbTEyKQorI2RlZmluZSBMT0FEX01TR18xMF8xKGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTApOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG02LCBtNCkKKyNkZWZpbmUgTE9BRF9NU0dfMTBfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTMsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNywgbTUpCisjZGVmaW5lIExPQURfTVNHXzEwXzMoYjAsIGIxKSBiMCA9IF9tbV9zZXRfZXBpNjR4KG0xMCwgbTgpOyBiMSA9IF9tbV9zZXRfZXBpNjR4KG0xNCwgbTEyKQorI2RlZmluZSBMT0FEX01TR18xMF80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMTEsIG05KTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMTUsIG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMShiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTQsIG0xNCk7IGIxID0gX21tX3NldF9lcGk2NHgobTEzLCBtOSkKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMihiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTgsIG0xMCk7IGIxID0gX21tX3NldF9lcGk2NHgobTYsIG0xNSkKKyNkZWZpbmUgTE9BRF9NU0dfMTFfMyhiMCwgYjEpIGIwID0gX21tX3NldF9lcGk2NHgobTAsIG0xKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtNSwgbTExKQorI2RlZmluZSBMT0FEX01TR18xMV80KGIwLCBiMSkgYjAgPSBfbW1fc2V0X2VwaTY0eChtMiwgbTEyKTsgYjEgPSBfbW1fc2V0X2VwaTY0eChtMywgbTcpCisKKworI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2U0MS5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1sb2FkLXNzZTQxLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJhMTM0OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItbG9hZC1zc2U0MS5oCkBAIC0wLDAgKzEsNDA0IEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJCX0xPQURfU1NFNDFfSF9fCisjZGVmaW5lIF9fQkxBS0UyQl9MT0FEX1NTRTQxX0hfXworCisjZGVmaW5lIExPQURfTVNHXzBfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTIsIG0zKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMF8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMCwgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMiwgbTMpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18wXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG00LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzBfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTQsIG01KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG03KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMV8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNywgbTIpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNCwgbTYpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG01LCBtNCk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG0zLCBtNywgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzFfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fc2h1ZmZsZV9lcGkzMihtMCwgX01NX1NIVUZGTEUoMSwwLDMsMikpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNSwgbTIpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18xXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtMSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzJfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYWxpZ25yX2VwaTgobTYsIG01LCA4KTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTIsIG03KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMl8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNCwgbTApOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTYsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18yXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG01LCBtMSwgMHhGMCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtNCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzJfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTcsIG0zKTsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTIsIG0wLCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtMywgbTEpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNiwgbTUpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR18zXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtMCk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzNfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTEsIG0yLCAweEYwKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTIsIG03LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfM180KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMywgbTUpOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtMCwgbTQpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR180XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtMik7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0xLCBtNSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzRfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fYmxlbmRfZXBpMTYobTAsIG0zLCAweEYwKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTIsIG03LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNF8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtNywgbTUsIDB4RjApOyBcCitiMSA9IF9tbV9ibGVuZF9lcGkxNihtMywgbTEsIDB4RjApOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR180XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2FsaWducl9lcGk4KG02LCBtMCwgOCk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG00LCBtNiwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzVfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsIG0zKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG00KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtNiwgbTUpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtNSwgbTEpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR181XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2JsZW5kX2VwaTE2KG0yLCBtMywgMHhGMCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG03LCBtMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzVfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG0yKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTcsIG00LCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtNiwgbTAsIDB4RjApOyBcCitiMSA9IF9tbV91bnBhY2tsb19lcGk2NChtNywgbTIpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR182XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtNyk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG01LCBtNiwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzZfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG0zKTsgXAorYjEgPSBfbW1fc2h1ZmZsZV9lcGkzMihtNCwgX01NX1NIVUZGTEUoMSwwLDMsMikpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR182XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMSk7IFwKK2IxID0gX21tX2JsZW5kX2VwaTE2KG0xLCBtNSwgMHhGMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzdfMShiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTYsIG0zKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTYsIG0xLCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfN18yKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9hbGlnbnJfZXBpOChtNywgbTUsIDgpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMCwgbTQpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR183XzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtNyk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG00LCBtMSk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzdfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsIG0yKTsgXAorYjEgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTMsIG01KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOF8xKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2tsb19lcGk2NChtMywgbTcpOyBcCitiMSA9IF9tbV9hbGlnbnJfZXBpOChtMCwgbTUsIDgpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR184XzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG03LCBtNCk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG00LCBtMSwgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzhfMyhiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBtNjsgXAorYjEgPSBfbW1fYWxpZ25yX2VwaTgobTUsIG0wLCA4KTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOF80KGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTMsIDB4RjApOyBcCitiMSA9IG0yOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR185XzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG01LCBtNCk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0zLCBtMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzlfMihiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTEsIG0yKTsgXAorYjEgPSBfbW1fYmxlbmRfZXBpMTYobTMsIG0yLCAweEYwKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGIwLCBiMSkgXAorZG8gXAoreyBcCitiMCA9IF9tbV91bnBhY2toaV9lcGk2NChtNywgbTQpOyBcCitiMSA9IF9tbV91bnBhY2toaV9lcGk2NChtMSwgbTYpOyBcCit9IHdoaWxlKDApCisKKworI2RlZmluZSBMT0FEX01TR185XzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX2FsaWducl9lcGk4KG03LCBtNSwgOCk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtMCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzEwXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG0wLCBtMSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG0yLCBtMyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzEwXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG0wLCBtMSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG0yLCBtMyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzEwXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG00LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2xvX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzEwXzQoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtNSk7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG02LCBtNyk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzExXzEoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG03LCBtMik7IFwKK2IxID0gX21tX3VucGFja2hpX2VwaTY0KG00LCBtNik7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzExXzIoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3VucGFja2xvX2VwaTY0KG01LCBtNCk7IFwKK2IxID0gX21tX2FsaWducl9lcGk4KG0zLCBtNywgOCk7IFwKK30gd2hpbGUoMCkKKworCisjZGVmaW5lIExPQURfTVNHXzExXzMoYjAsIGIxKSBcCitkbyBcCit7IFwKK2IwID0gX21tX3NodWZmbGVfZXBpMzIobTAsIF9NTV9TSFVGRkxFKDEsMCwzLDIpKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTUsIG0yKTsgXAorfSB3aGlsZSgwKQorCisKKyNkZWZpbmUgTE9BRF9NU0dfMTFfNChiMCwgYjEpIFwKK2RvIFwKK3sgXAorYjAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTYsIG0xKTsgXAorYjEgPSBfbW1fdW5wYWNraGlfZXBpNjQobTMsIG0xKTsgXAorfSB3aGlsZSgwKQorCisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLXJlZi5jIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yZWYuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjM3NWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yZWYuYwpAQCAtMCwwICsxLDQyMCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIHJlZmVyZW5jZSBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImJsYWtlMi5oIgorI2luY2x1ZGUgImJsYWtlMi1pbXBsLmgiCisKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBibGFrZTJiX0lWWzhdID0KK3sKKyAgMHg2YTA5ZTY2N2YzYmNjOTA4VUxMLCAweGJiNjdhZTg1ODRjYWE3M2JVTEwsCisgIDB4M2M2ZWYzNzJmZTk0ZjgyYlVMTCwgMHhhNTRmZjUzYTVmMWQzNmYxVUxMLAorICAweDUxMGU1MjdmYWRlNjgyZDFVTEwsIDB4OWIwNTY4OGMyYjNlNmMxZlVMTCwKKyAgMHgxZjgzZDlhYmZiNDFiZDZiVUxMLCAweDViZTBjZDE5MTM3ZTIxNzlVTEwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGJsYWtlMmJfc2lnbWFbMTJdWzE2XSA9Cit7CisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfSAsCisgIHsgMTEsICA4LCAxMiwgIDAsICA1LCAgMiwgMTUsIDEzLCAxMCwgMTQsICAzLCAgNiwgIDcsICAxLCAgOSwgIDQgfSAsCisgIHsgIDcsICA5LCAgMywgIDEsIDEzLCAxMiwgMTEsIDE0LCAgMiwgIDYsICA1LCAxMCwgIDQsICAwLCAxNSwgIDggfSAsCisgIHsgIDksICAwLCAgNSwgIDcsICAyLCAgNCwgMTAsIDE1LCAxNCwgIDEsIDExLCAxMiwgIDYsICA4LCAgMywgMTMgfSAsCisgIHsgIDIsIDEyLCAgNiwgMTAsICAwLCAxMSwgIDgsICAzLCAgNCwgMTMsICA3LCAgNSwgMTUsIDE0LCAgMSwgIDkgfSAsCisgIHsgMTIsICA1LCAgMSwgMTUsIDE0LCAxMywgIDQsIDEwLCAgMCwgIDcsICA2LCAgMywgIDksICAyLCAgOCwgMTEgfSAsCisgIHsgMTMsIDExLCAgNywgMTQsIDEyLCAgMSwgIDMsICA5LCAgNSwgIDAsIDE1LCAgNCwgIDgsICA2LCAgMiwgMTAgfSAsCisgIHsgIDYsIDE1LCAxNCwgIDksIDExLCAgMywgIDAsICA4LCAxMiwgIDIsIDEzLCAgNywgIDEsICA0LCAxMCwgIDUgfSAsCisgIHsgMTAsICAyLCAgOCwgIDQsICA3LCAgNiwgIDEsICA1LCAxNSwgMTEsICA5LCAxNCwgIDMsIDEyLCAxMyAsIDAgfSAsCisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfQorfTsKKworCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9zZXRfbGFzdG5vZGUoIGJsYWtlMmJfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9jbGVhcl9sYXN0bm9kZSggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAwOworICByZXR1cm4gMDsKK30KKworLyogU29tZSBoZWxwZXIgZnVuY3Rpb25zLCBub3QgbmVjZXNzYXJpbHkgdXNlZnVsICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pc19sYXN0YmxvY2soIGNvbnN0IGJsYWtlMmJfc3RhdGUgKlMgKQoreworICByZXR1cm4gUy0+ZlswXSAhPSAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9zZXRfbGFzdGJsb2NrKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMmJfc2V0X2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY2xlYXJfbGFzdGJsb2NrKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMmJfY2xlYXJfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50NjRfdCBpbmMgKQoreworICBTLT50WzBdICs9IGluYzsKKyAgUy0+dFsxXSArPSAoIFMtPnRbMF0gPCBpbmMgKTsKKyAgcmV0dXJuIDA7Cit9CisKKworCisvKiBQYXJhbWV0ZXItcmVsYXRlZCBmdW5jdGlvbnMgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9kaWdlc3RfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRpZ2VzdF9sZW5ndGggKQoreworICBQLT5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9mYW5vdXQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZmFub3V0ICkKK3sKKyAgUC0+ZmFub3V0ID0gZmFub3V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X21heF9kZXB0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkZXB0aCApCit7CisgIFAtPmRlcHRoID0gZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbGVhZl9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQzMl90IGxlYWZfbGVuZ3RoICkKK3sKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCBsZWFmX2xlbmd0aCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X25vZGVfb2Zmc2V0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50NjRfdCBub2RlX29mZnNldCApCit7CisgIHN0b3JlNjQoICZQLT5ub2RlX29mZnNldCwgbm9kZV9vZmZzZXQgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9ub2RlX2RlcHRoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IG5vZGVfZGVwdGggKQoreworICBQLT5ub2RlX2RlcHRoID0gbm9kZV9kZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9pbm5lcl9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgaW5uZXJfbGVuZ3RoICkKK3sKKyAgUC0+aW5uZXJfbGVuZ3RoID0gaW5uZXJfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X3NhbHQoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgc2FsdFtCTEFLRTJCX1NBTFRCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnNhbHQsIHNhbHQsIEJMQUtFMkJfU0FMVEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfcGVyc29uYWwoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgcGVyc29uYWxbQkxBS0UyQl9QRVJTT05BTEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+cGVyc29uYWwsIHBlcnNvbmFsLCBCTEFLRTJCX1BFUlNPTkFMQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2luaXQwKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaW50IGk7CisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJiX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkgUy0+aFtpXSA9IGJsYWtlMmJfSVZbaV07CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIGluaXQgeG9ycyBJViB3aXRoIGlucHV0IHBhcmFtZXRlciBibG9jayAqLworaW50IGJsYWtlMmJfaW5pdF9wYXJhbSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgYmxha2UyYl9wYXJhbSAqUCApCit7CisgIGNvbnN0IHVpbnQ4X3QgKnAgPSAoIGNvbnN0IHVpbnQ4X3QgKiApKCBQICk7CisgIHNpemVfdCBpOworCisgIGJsYWtlMmJfaW5pdDAoIFMgKTsKKworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICBTLT5oW2ldIF49IGxvYWQ2NCggcCArIHNpemVvZiggUy0+aFtpXSApICogaSApOworCisgIHJldHVybiAwOworfQorCisKKworaW50IGJsYWtlMmJfaW5pdCggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKQoreworICBibGFrZTJiX3BhcmFtIFBbMV07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBQLT5kaWdlc3RfbGVuZ3RoID0gb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoICAgID0gMDsKKyAgUC0+ZmFub3V0ICAgICAgICA9IDE7CisgIFAtPmRlcHRoICAgICAgICAgPSAxOworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIDAgKTsKKyAgc3RvcmU2NCggJlAtPm5vZGVfb2Zmc2V0LCAwICk7CisgIFAtPm5vZGVfZGVwdGggICAgPSAwOworICBQLT5pbm5lcl9sZW5ndGggID0gMDsKKyAgbWVtc2V0KCBQLT5yZXNlcnZlZCwgMCwgc2l6ZW9mKCBQLT5yZXNlcnZlZCApICk7CisgIG1lbXNldCggUC0+c2FsdCwgICAgIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworICByZXR1cm4gYmxha2UyYl9pbml0X3BhcmFtKCBTLCBQICk7Cit9CisKKworaW50IGJsYWtlMmJfaW5pdF9rZXkoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuLCBjb25zdCB2b2lkICprZXksIGNvbnN0IHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2UyYl9wYXJhbSBQWzFdOworCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgaWYgKCAha2V5IHx8ICFrZXlsZW4gfHwga2V5bGVuID4gQkxBS0UyQl9LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBQLT5kaWdlc3RfbGVuZ3RoID0gb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoICAgID0ga2V5bGVuOworICBQLT5mYW5vdXQgICAgICAgID0gMTsKKyAgUC0+ZGVwdGggICAgICAgICA9IDE7CisgIHN0b3JlMzIoICZQLT5sZWFmX2xlbmd0aCwgMCApOworICBzdG9yZTY0KCAmUC0+bm9kZV9vZmZzZXQsIDAgKTsKKyAgUC0+bm9kZV9kZXB0aCAgICA9IDA7CisgIFAtPmlubmVyX2xlbmd0aCAgPSAwOworICBtZW1zZXQoIFAtPnJlc2VydmVkLCAwLCBzaXplb2YoIFAtPnJlc2VydmVkICkgKTsKKyAgbWVtc2V0KCBQLT5zYWx0LCAgICAgMCwgc2l6ZW9mKCBQLT5zYWx0ICkgKTsKKyAgbWVtc2V0KCBQLT5wZXJzb25hbCwgMCwgc2l6ZW9mKCBQLT5wZXJzb25hbCApICk7CisKKyAgaWYoIGJsYWtlMmJfaW5pdF9wYXJhbSggUywgUCApIDwgMCApIHJldHVybiAtMTsKKworICB7CisgICAgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdOworICAgIG1lbXNldCggYmxvY2ssIDAsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIG1lbWNweSggYmxvY2ssIGtleSwga2V5bGVuICk7CisgICAgYmxha2UyYl91cGRhdGUoIFMsIGJsb2NrLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBzZWN1cmVfemVyb19tZW1vcnkoIGJsb2NrLCBCTEFLRTJCX0JMT0NLQllURVMgKTsgLyogQnVybiB0aGUga2V5IGZyb20gc3RhY2sgKi8KKyAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBibGFrZTJiX2NvbXByZXNzKCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IGJsb2NrW0JMQUtFMkJfQkxPQ0tCWVRFU10gKQoreworICB1aW50NjRfdCBtWzE2XTsKKyAgdWludDY0X3QgdlsxNl07CisgIGludCBpOworCisgIGZvciggaSA9IDA7IGkgPCAxNjsgKytpICkKKyAgICBtW2ldID0gbG9hZDY0KCBibG9jayArIGkgKiBzaXplb2YoIG1baV0gKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIHZbaV0gPSBTLT5oW2ldOworCisgIHZbIDhdID0gYmxha2UyYl9JVlswXTsKKyAgdlsgOV0gPSBibGFrZTJiX0lWWzFdOworICB2WzEwXSA9IGJsYWtlMmJfSVZbMl07CisgIHZbMTFdID0gYmxha2UyYl9JVlszXTsKKyAgdlsxMl0gPSBTLT50WzBdIF4gYmxha2UyYl9JVls0XTsKKyAgdlsxM10gPSBTLT50WzFdIF4gYmxha2UyYl9JVls1XTsKKyAgdlsxNF0gPSBTLT5mWzBdIF4gYmxha2UyYl9JVls2XTsKKyAgdlsxNV0gPSBTLT5mWzFdIF4gYmxha2UyYl9JVls3XTsKKyNkZWZpbmUgRyhyLGksYSxiLGMsZCkgXAorICBkbyB7IFwKKyAgICBhID0gYSArIGIgKyBtW2JsYWtlMmJfc2lnbWFbcl1bMippKzBdXTsgXAorICAgIGQgPSByb3RyNjQoZCBeIGEsIDMyKTsgXAorICAgIGMgPSBjICsgZDsgXAorICAgIGIgPSByb3RyNjQoYiBeIGMsIDI0KTsgXAorICAgIGEgPSBhICsgYiArIG1bYmxha2UyYl9zaWdtYVtyXVsyKmkrMV1dOyBcCisgICAgZCA9IHJvdHI2NChkIF4gYSwgMTYpOyBcCisgICAgYyA9IGMgKyBkOyBcCisgICAgYiA9IHJvdHI2NChiIF4gYywgNjMpOyBcCisgIH0gd2hpbGUoMCkKKyNkZWZpbmUgUk9VTkQocikgIFwKKyAgZG8geyBcCisgICAgRyhyLDAsdlsgMF0sdlsgNF0sdlsgOF0sdlsxMl0pOyBcCisgICAgRyhyLDEsdlsgMV0sdlsgNV0sdlsgOV0sdlsxM10pOyBcCisgICAgRyhyLDIsdlsgMl0sdlsgNl0sdlsxMF0sdlsxNF0pOyBcCisgICAgRyhyLDMsdlsgM10sdlsgN10sdlsxMV0sdlsxNV0pOyBcCisgICAgRyhyLDQsdlsgMF0sdlsgNV0sdlsxMF0sdlsxNV0pOyBcCisgICAgRyhyLDUsdlsgMV0sdlsgNl0sdlsxMV0sdlsxMl0pOyBcCisgICAgRyhyLDYsdlsgMl0sdlsgN10sdlsgOF0sdlsxM10pOyBcCisgICAgRyhyLDcsdlsgM10sdlsgNF0sdlsgOV0sdlsxNF0pOyBcCisgIH0gd2hpbGUoMCkKKyAgUk9VTkQoIDAgKTsKKyAgUk9VTkQoIDEgKTsKKyAgUk9VTkQoIDIgKTsKKyAgUk9VTkQoIDMgKTsKKyAgUk9VTkQoIDQgKTsKKyAgUk9VTkQoIDUgKTsKKyAgUk9VTkQoIDYgKTsKKyAgUk9VTkQoIDcgKTsKKyAgUk9VTkQoIDggKTsKKyAgUk9VTkQoIDkgKTsKKyAgUk9VTkQoIDEwICk7CisgIFJPVU5EKCAxMSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIFMtPmhbaV0gPSBTLT5oW2ldIF4gdltpXSBeIHZbaSArIDhdOworCisjdW5kZWYgRworI3VuZGVmIFJPVU5ECisgIHJldHVybiAwOworfQorCisvKiBpbmxlbiBub3cgaW4gYnl0ZXMgKi8KK2ludCBibGFrZTJiX3VwZGF0ZSggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICkKK3sKKyAgd2hpbGUoIGlubGVuID4gMCApCisgIHsKKyAgICBzaXplX3QgbGVmdCA9IFMtPmJ1ZmxlbjsKKyAgICBzaXplX3QgZmlsbCA9IDIgKiBCTEFLRTJCX0JMT0NLQllURVMgLSBsZWZ0OworCisgICAgaWYoIGlubGVuID4gZmlsbCApCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgZmlsbCApOyAvKiBGaWxsIGJ1ZmZlciAqLworICAgICAgUy0+YnVmbGVuICs9IGZpbGw7CisgICAgICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICAgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOyAvKiBDb21wcmVzcyAqLworICAgICAgbWVtY3B5KCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMkJfQkxPQ0tCWVRFUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7IC8qIFNoaWZ0IGJ1ZmZlciBsZWZ0ICovCisgICAgICBTLT5idWZsZW4gLT0gQkxBS0UyQl9CTE9DS0JZVEVTOworICAgICAgaW4gKz0gZmlsbDsKKyAgICAgIGlubGVuIC09IGZpbGw7CisgICAgfQorICAgIGVsc2UgLyogaW5sZW4gPD0gZmlsbCAqLworICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIChzaXplX3QpaW5sZW4gKTsKKyAgICAgIFMtPmJ1ZmxlbiArPSAoc2l6ZV90KWlubGVuOyAvKiBCZSBsYXp5LCBkbyBub3QgY29tcHJlc3MgKi8KKyAgICAgIGluICs9IGlubGVuOworICAgICAgaW5sZW4gLT0gaW5sZW47CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIElzIHRoaXMgY29ycmVjdD8gKi8KK2ludCBibGFrZTJiX2ZpbmFsKCBibGFrZTJiX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgdWludDhfdCBidWZmZXJbQkxBS0UyQl9PVVRCWVRFU10gPSB7MH07CisgIGludCBpOworCisgIGlmKCBvdXQgPT0gTlVMTCB8fCBvdXRsZW4gPT0gMCB8fCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMmJfaXNfbGFzdGJsb2NrKCBTICkgKQorICAgIHJldHVybiAtMTsKKworICBpZiggUy0+YnVmbGVuID4gQkxBS0UyQl9CTE9DS0JZVEVTICkKKyAgeworICAgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJCX0JMT0NLQllURVM7CisgICAgbWVtbW92ZSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJCX0JMT0NLQllURVMsIFMtPmJ1ZmxlbiApOworICB9CisKKyAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgUy0+YnVmbGVuICk7CisgIGJsYWtlMmJfc2V0X2xhc3RibG9jayggUyApOworICBtZW1zZXQoIFMtPmJ1ZiArIFMtPmJ1ZmxlbiwgMCwgMiAqIEJMQUtFMkJfQkxPQ0tCWVRFUyAtIFMtPmJ1ZmxlbiApOyAvKiBQYWRkaW5nICovCisgIGJsYWtlMmJfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSAvKiBPdXRwdXQgZnVsbCBoYXNoIHRvIHRlbXAgYnVmZmVyICovCisgICAgc3RvcmU2NCggYnVmZmVyICsgc2l6ZW9mKCBTLT5oW2ldICkgKiBpLCBTLT5oW2ldICk7CisKKyAgbWVtY3B5KCBvdXQsIGJ1ZmZlciwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisvKiBpbmxlbiwgYXQgbGVhc3QsIHNob3VsZCBiZSB1aW50NjRfdC4gT3RoZXJzIGNhbiBiZSBzaXplX3QuICovCitpbnQgYmxha2UyYiggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2UyYl9zdGF0ZSBTWzFdOworCisgIC8qIFZlcmlmeSBwYXJhbWV0ZXJzICovCisgIGlmICggTlVMTCA9PSBpbiAmJiBpbmxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IG91dCApIHJldHVybiAtMTsKKworICBpZiggTlVMTCA9PSBrZXkgJiYga2V5bGVuID4gMCApIHJldHVybiAtMTsKKworICBpZiggIW91dGxlbiB8fCBvdXRsZW4gPiBCTEFLRTJCX09VVEJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiBCTEFLRTJCX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiAwICkKKyAgeworICAgIGlmKCBibGFrZTJiX2luaXRfa2V5KCBTLCBvdXRsZW4sIGtleSwga2V5bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKCBibGFrZTJiX2luaXQoIFMsIG91dGxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorCisgIGJsYWtlMmJfdXBkYXRlKCBTLCAoIGNvbnN0IHVpbnQ4X3QgKiApaW4sIGlubGVuICk7CisgIGJsYWtlMmJfZmluYWwoIFMsIG91dCwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChTVVBFUkNPUCkKK2ludCBjcnlwdG9faGFzaCggdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBsb25nIGlubGVuICkKK3sKKyAgcmV0dXJuIGJsYWtlMmIoIG91dCwgaW4sIE5VTEwsIEJMQUtFMkJfT1VUQllURVMsIGlubGVuLCAwICk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoQkxBS0UyQl9TRUxGVEVTVCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJibGFrZTIta2F0LmgiCitpbnQgbWFpbiggaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK3sKKyAgdWludDhfdCBrZXlbQkxBS0UyQl9LRVlCWVRFU107CisgIHVpbnQ4X3QgYnVmW0tBVF9MRU5HVEhdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyQl9LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgICAgYnVmW2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMkJfT1VUQllURVNdOworICAgIGJsYWtlMmIoIGhhc2gsIGJ1Ziwga2V5LCBCTEFLRTJCX09VVEJZVEVTLCBpLCBCTEFLRTJCX0tFWUJZVEVTICk7CisKKyAgICBpZiggMCAhPSBtZW1jbXAoIGhhc2gsIGJsYWtlMmJfa2V5ZWRfa2F0W2ldLCBCTEFLRTJCX09VVEJZVEVTICkgKQorICAgIHsKKyAgICAgIHB1dHMoICJlcnJvciIgKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBwdXRzKCAib2siICk7CisgIHJldHVybiAwOworfQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcm91bmQuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmItcm91bmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2UyMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2UyYi1yb3VuZC5oCkBAIC0wLDAgKzEsMTU5IEBACisvKgorICAgQkxBS0UyIHJlZmVyZW5jZSBzb3VyY2UgY29kZSBwYWNrYWdlIC0gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb25zCisgIAorICAgQ29weXJpZ2h0IDIwMTIsIFNhbXVlbCBOZXZlcyA8c25ldmVzQGRlaS51Yy5wdD4uICBZb3UgbWF5IHVzZSB0aGlzIHVuZGVyIHRoZQorICAgdGVybXMgb2YgdGhlIENDMCwgdGhlIE9wZW5TU0wgTGljZW5jZSwgb3IgdGhlIEFwYWNoZSBQdWJsaWMgTGljZW5zZSAyLjAsIGF0CisgICB5b3VyIG9wdGlvbi4gIFRoZSB0ZXJtcyBvZiB0aGVzZSBsaWNlbnNlcyBjYW4gYmUgZm91bmQgYXQ6CisgIAorICAgLSBDQzAgMS4wIFVuaXZlcnNhbCA6IGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMAorICAgLSBPcGVuU1NMIGxpY2Vuc2UgICA6IGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9saWNlbnNlLmh0bWwKKyAgIC0gQXBhY2hlIDIuMCAgICAgICAgOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICBNb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBCTEFLRTIgaGFzaCBmdW5jdGlvbiBjYW4gYmUgZm91bmQgYXQKKyAgIGh0dHBzOi8vYmxha2UyLm5ldC4KKyovCisjcHJhZ21hIG9uY2UKKyNpZm5kZWYgX19CTEFLRTJCX1JPVU5EX0hfXworI2RlZmluZSBfX0JMQUtFMkJfUk9VTkRfSF9fCisKKyNkZWZpbmUgTE9BRFUocCkgIF9tbV9sb2FkdV9zaTEyOCggKGNvbnN0IF9fbTEyOGkgKikocCkgKQorI2RlZmluZSBTVE9SRVUocCxyKSBfbW1fc3RvcmV1X3NpMTI4KChfX20xMjhpICopKHApLCByKQorCisjZGVmaW5lIFRPRihyZWcpIF9tbV9jYXN0c2kxMjhfcHMoKHJlZykpCisjZGVmaW5lIFRPSShyZWcpIF9tbV9jYXN0cHNfc2kxMjgoKHJlZykpCisKKyNkZWZpbmUgTElLRUxZKHgpIF9fYnVpbHRpbl9leHBlY3QoKHgpLDEpCisKKworLyogTWljcm9hcmNoaXRlY3R1cmUtc3BlY2lmaWMgbWFjcm9zICovCisjaWZuZGVmIEhBVkVfWE9QCisjaWZkZWYgSEFWRV9TU1NFMworI2RlZmluZSBfbW1fcm90aV9lcGk2NCh4LCBjKSBcCisgICAgKC0oYykgPT0gMzIpID8gX21tX3NodWZmbGVfZXBpMzIoKHgpLCBfTU1fU0hVRkZMRSgyLDMsMCwxKSkgIFwKKyAgICA6ICgtKGMpID09IDI0KSA/IF9tbV9zaHVmZmxlX2VwaTgoKHgpLCByMjQpIFwKKyAgICA6ICgtKGMpID09IDE2KSA/IF9tbV9zaHVmZmxlX2VwaTgoKHgpLCByMTYpIFwKKyAgICA6ICgtKGMpID09IDYzKSA/IF9tbV94b3Jfc2kxMjgoX21tX3NybGlfZXBpNjQoKHgpLCAtKGMpKSwgX21tX2FkZF9lcGk2NCgoeCksICh4KSkpICBcCisgICAgOiBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTY0KCh4KSwgLShjKSksIF9tbV9zbGxpX2VwaTY0KCh4KSwgNjQtKC0oYykpKSkKKyNlbHNlCisjZGVmaW5lIF9tbV9yb3RpX2VwaTY0KHIsIGMpIF9tbV94b3Jfc2kxMjgoX21tX3NybGlfZXBpNjQoIChyKSwgLShjKSApLF9tbV9zbGxpX2VwaTY0KCAociksIDY0LSgtKGMpKSApKQorI2VuZGlmCisjZWxzZQorLyogLi4uICovCisjZW5kaWYKKworCisKKyNkZWZpbmUgRzEocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgsYjAsYjEpIFwKKyAgcm93MWwgPSBfbW1fYWRkX2VwaTY0KF9tbV9hZGRfZXBpNjQocm93MWwsIGIwKSwgcm93MmwpOyBcCisgIHJvdzFoID0gX21tX2FkZF9lcGk2NChfbW1fYWRkX2VwaTY0KHJvdzFoLCBiMSksIHJvdzJoKTsgXAorICBcCisgIHJvdzRsID0gX21tX3hvcl9zaTEyOChyb3c0bCwgcm93MWwpOyBcCisgIHJvdzRoID0gX21tX3hvcl9zaTEyOChyb3c0aCwgcm93MWgpOyBcCisgIFwKKyAgcm93NGwgPSBfbW1fcm90aV9lcGk2NChyb3c0bCwgLTMyKTsgXAorICByb3c0aCA9IF9tbV9yb3RpX2VwaTY0KHJvdzRoLCAtMzIpOyBcCisgIFwKKyAgcm93M2wgPSBfbW1fYWRkX2VwaTY0KHJvdzNsLCByb3c0bCk7IFwKKyAgcm93M2ggPSBfbW1fYWRkX2VwaTY0KHJvdzNoLCByb3c0aCk7IFwKKyAgXAorICByb3cybCA9IF9tbV94b3Jfc2kxMjgocm93MmwsIHJvdzNsKTsgXAorICByb3cyaCA9IF9tbV94b3Jfc2kxMjgocm93MmgsIHJvdzNoKTsgXAorICBcCisgIHJvdzJsID0gX21tX3JvdGlfZXBpNjQocm93MmwsIC0yNCk7IFwKKyAgcm93MmggPSBfbW1fcm90aV9lcGk2NChyb3cyaCwgLTI0KTsgXAorIAorI2RlZmluZSBHMihyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSkgXAorICByb3cxbCA9IF9tbV9hZGRfZXBpNjQoX21tX2FkZF9lcGk2NChyb3cxbCwgYjApLCByb3cybCk7IFwKKyAgcm93MWggPSBfbW1fYWRkX2VwaTY0KF9tbV9hZGRfZXBpNjQocm93MWgsIGIxKSwgcm93MmgpOyBcCisgIFwKKyAgcm93NGwgPSBfbW1feG9yX3NpMTI4KHJvdzRsLCByb3cxbCk7IFwKKyAgcm93NGggPSBfbW1feG9yX3NpMTI4KHJvdzRoLCByb3cxaCk7IFwKKyAgXAorICByb3c0bCA9IF9tbV9yb3RpX2VwaTY0KHJvdzRsLCAtMTYpOyBcCisgIHJvdzRoID0gX21tX3JvdGlfZXBpNjQocm93NGgsIC0xNik7IFwKKyAgXAorICByb3czbCA9IF9tbV9hZGRfZXBpNjQocm93M2wsIHJvdzRsKTsgXAorICByb3czaCA9IF9tbV9hZGRfZXBpNjQocm93M2gsIHJvdzRoKTsgXAorICBcCisgIHJvdzJsID0gX21tX3hvcl9zaTEyOChyb3cybCwgcm93M2wpOyBcCisgIHJvdzJoID0gX21tX3hvcl9zaTEyOChyb3cyaCwgcm93M2gpOyBcCisgIFwKKyAgcm93MmwgPSBfbW1fcm90aV9lcGk2NChyb3cybCwgLTYzKTsgXAorICByb3cyaCA9IF9tbV9yb3RpX2VwaTY0KHJvdzJoLCAtNjMpOyBcCisgCisjaWYgZGVmaW5lZChIQVZFX1NTU0UzKQorI2RlZmluZSBESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCkgXAorICB0MCA9IF9tbV9hbGlnbnJfZXBpOChyb3cyaCwgcm93MmwsIDgpOyBcCisgIHQxID0gX21tX2FsaWducl9lcGk4KHJvdzJsLCByb3cyaCwgOCk7IFwKKyAgcm93MmwgPSB0MDsgXAorICByb3cyaCA9IHQxOyBcCisgIFwKKyAgdDAgPSByb3czbDsgXAorICByb3czbCA9IHJvdzNoOyBcCisgIHJvdzNoID0gdDA7ICAgIFwKKyAgXAorICB0MCA9IF9tbV9hbGlnbnJfZXBpOChyb3c0aCwgcm93NGwsIDgpOyBcCisgIHQxID0gX21tX2FsaWducl9lcGk4KHJvdzRsLCByb3c0aCwgOCk7IFwKKyAgcm93NGwgPSB0MTsgXAorICByb3c0aCA9IHQwOworCisjZGVmaW5lIFVORElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpIFwKKyAgdDAgPSBfbW1fYWxpZ25yX2VwaTgocm93MmwsIHJvdzJoLCA4KTsgXAorICB0MSA9IF9tbV9hbGlnbnJfZXBpOChyb3cyaCwgcm93MmwsIDgpOyBcCisgIHJvdzJsID0gdDA7IFwKKyAgcm93MmggPSB0MTsgXAorICBcCisgIHQwID0gcm93M2w7IFwKKyAgcm93M2wgPSByb3czaDsgXAorICByb3czaCA9IHQwOyBcCisgIFwKKyAgdDAgPSBfbW1fYWxpZ25yX2VwaTgocm93NGwsIHJvdzRoLCA4KTsgXAorICB0MSA9IF9tbV9hbGlnbnJfZXBpOChyb3c0aCwgcm93NGwsIDgpOyBcCisgIHJvdzRsID0gdDE7IFwKKyAgcm93NGggPSB0MDsKKyNlbHNlCisKKyNkZWZpbmUgRElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpIFwKKyAgdDAgPSByb3c0bDtcCisgIHQxID0gcm93Mmw7XAorICByb3c0bCA9IHJvdzNsO1wKKyAgcm93M2wgPSByb3czaDtcCisgIHJvdzNoID0gcm93NGw7XAorICByb3c0bCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3c0aCwgX21tX3VucGFja2xvX2VwaTY0KHQwLCB0MCkpOyBcCisgIHJvdzRoID0gX21tX3VucGFja2hpX2VwaTY0KHQwLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93NGgsIHJvdzRoKSk7IFwKKyAgcm93MmwgPSBfbW1fdW5wYWNraGlfZXBpNjQocm93MmwsIF9tbV91bnBhY2tsb19lcGk2NChyb3cyaCwgcm93MmgpKTsgXAorICByb3cyaCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3cyaCwgX21tX3VucGFja2xvX2VwaTY0KHQxLCB0MSkpCisKKyNkZWZpbmUgVU5ESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCkgXAorICB0MCA9IHJvdzNsO1wKKyAgcm93M2wgPSByb3czaDtcCisgIHJvdzNoID0gdDA7XAorICB0MCA9IHJvdzJsO1wKKyAgdDEgPSByb3c0bDtcCisgIHJvdzJsID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzJoLCBfbW1fdW5wYWNrbG9fZXBpNjQocm93MmwsIHJvdzJsKSk7IFwKKyAgcm93MmggPSBfbW1fdW5wYWNraGlfZXBpNjQodDAsIF9tbV91bnBhY2tsb19lcGk2NChyb3cyaCwgcm93MmgpKTsgXAorICByb3c0bCA9IF9tbV91bnBhY2toaV9lcGk2NChyb3c0bCwgX21tX3VucGFja2xvX2VwaTY0KHJvdzRoLCByb3c0aCkpOyBcCisgIHJvdzRoID0gX21tX3VucGFja2hpX2VwaTY0KHJvdzRoLCBfbW1fdW5wYWNrbG9fZXBpNjQodDEsIHQxKSkKKworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisjaW5jbHVkZSAiYmxha2UyYi1sb2FkLXNzZTQxLmgiCisjZWxzZQorI2luY2x1ZGUgImJsYWtlMmItbG9hZC1zc2UyLmgiCisjZW5kaWYKKworI2RlZmluZSBST1VORChyKSBcCisgIExPQURfTVNHXyAjI3IgIyNfMShiMCwgYjEpOyBcCisgIEcxKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKTsgXAorICBMT0FEX01TR18gIyNyICMjXzIoYjAsIGIxKTsgXAorICBHMihyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSk7IFwKKyAgRElBR09OQUxJWkUocm93MWwscm93Mmwscm93M2wscm93NGwscm93MWgscm93Mmgscm93M2gscm93NGgpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfMyhiMCwgYjEpOyBcCisgIEcxKHJvdzFsLHJvdzJsLHJvdzNsLHJvdzRsLHJvdzFoLHJvdzJoLHJvdzNoLHJvdzRoLGIwLGIxKTsgXAorICBMT0FEX01TR18gIyNyICMjXzQoYjAsIGIxKTsgXAorICBHMihyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCxiMCxiMSk7IFwKKyAgVU5ESUFHT05BTElaRShyb3cxbCxyb3cybCxyb3czbCxyb3c0bCxyb3cxaCxyb3cyaCxyb3czaCxyb3c0aCk7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLmMgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiNjViYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMmIuYwpAQCAtMCwwICsxLDQ1MyBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImJsYWtlMi5oIgorI2luY2x1ZGUgImJsYWtlMi1pbXBsLmgiCisKKyNpbmNsdWRlICJibGFrZTItY29uZmlnLmgiCisKKyNpZmRlZiBfTVNDX1ZFUgorI2luY2x1ZGUgPGludHJpbi5oPiAvKiBmb3IgX21tX3NldF9lcGk2NHggKi8KKyNlbmRpZgorI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2lmIGRlZmluZWQoSEFWRV9TU1NFMykKKyNpbmNsdWRlIDx0bW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9BVlgpCisjaW5jbHVkZSA8aW1taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfWE9QKQorI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJibGFrZTJiLXJvdW5kLmgiCisKK3N0YXRpYyBjb25zdCB1aW50NjRfdCBibGFrZTJiX0lWWzhdID0KK3sKKyAgMHg2YTA5ZTY2N2YzYmNjOTA4VUxMLCAweGJiNjdhZTg1ODRjYWE3M2JVTEwsCisgIDB4M2M2ZWYzNzJmZTk0ZjgyYlVMTCwgMHhhNTRmZjUzYTVmMWQzNmYxVUxMLAorICAweDUxMGU1MjdmYWRlNjgyZDFVTEwsIDB4OWIwNTY4OGMyYjNlNmMxZlVMTCwKKyAgMHgxZjgzZDlhYmZiNDFiZDZiVUxMLCAweDViZTBjZDE5MTM3ZTIxNzlVTEwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGJsYWtlMmJfc2lnbWFbMTJdWzE2XSA9Cit7CisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfSAsCisgIHsgMTEsICA4LCAxMiwgIDAsICA1LCAgMiwgMTUsIDEzLCAxMCwgMTQsICAzLCAgNiwgIDcsICAxLCAgOSwgIDQgfSAsCisgIHsgIDcsICA5LCAgMywgIDEsIDEzLCAxMiwgMTEsIDE0LCAgMiwgIDYsICA1LCAxMCwgIDQsICAwLCAxNSwgIDggfSAsCisgIHsgIDksICAwLCAgNSwgIDcsICAyLCAgNCwgMTAsIDE1LCAxNCwgIDEsIDExLCAxMiwgIDYsICA4LCAgMywgMTMgfSAsCisgIHsgIDIsIDEyLCAgNiwgMTAsICAwLCAxMSwgIDgsICAzLCAgNCwgMTMsICA3LCAgNSwgMTUsIDE0LCAgMSwgIDkgfSAsCisgIHsgMTIsICA1LCAgMSwgMTUsIDE0LCAxMywgIDQsIDEwLCAgMCwgIDcsICA2LCAgMywgIDksICAyLCAgOCwgMTEgfSAsCisgIHsgMTMsIDExLCAgNywgMTQsIDEyLCAgMSwgIDMsICA5LCAgNSwgIDAsIDE1LCAgNCwgIDgsICA2LCAgMiwgMTAgfSAsCisgIHsgIDYsIDE1LCAxNCwgIDksIDExLCAgMywgIDAsICA4LCAxMiwgIDIsIDEzLCAgNywgIDEsICA0LCAxMCwgIDUgfSAsCisgIHsgMTAsICAyLCAgOCwgIDQsICA3LCAgNiwgIDEsICA1LCAxNSwgMTEsICA5LCAxNCwgIDMsIDEyLCAxMyAsIDAgfSAsCisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfQorfTsKKworCisvKiBTb21lIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBuZWNlc3NhcmlseSB1c2VmdWwgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3NldF9sYXN0bm9kZSggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIFMtPmZbMV0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX2NsZWFyX2xhc3Rub2RlKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pc19sYXN0YmxvY2soIGNvbnN0IGJsYWtlMmJfc3RhdGUgKlMgKQoreworICByZXR1cm4gUy0+ZlswXSAhPSAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9zZXRfbGFzdGJsb2NrKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMmJfc2V0X2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfY2xlYXJfbGFzdGJsb2NrKCBibGFrZTJiX3N0YXRlICpTICkKK3sKKyAgaWYoIFMtPmxhc3Rfbm9kZSApIGJsYWtlMmJfY2xlYXJfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ2NF90IGluYyApCit7CisjaWYgX194ODZfNjRfXworICAvKiBBREQvQURDIGNoYWluICovCisgIF9fdWludDEyOF90IHQgPSAoICggX191aW50MTI4X3QgKVMtPnRbMV0gPDwgNjQgKSB8IFMtPnRbMF07CisgIHQgKz0gaW5jOworICBTLT50WzBdID0gKCB1aW50NjRfdCApKCB0ID4+ICAwICk7CisgIFMtPnRbMV0gPSAoIHVpbnQ2NF90ICkoIHQgPj4gNjQgKTsKKyNlbHNlCisgIFMtPnRbMF0gKz0gaW5jOworICBTLT50WzFdICs9ICggUy0+dFswXSA8IGluYyApOworI2VuZGlmCisgIHJldHVybiAwOworfQorCisKKy8qIFBhcmFtZXRlci1yZWxhdGVkIGZ1bmN0aW9ucyAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2RpZ2VzdF9sZW5ndGgoIGJsYWtlMmJfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGlnZXN0X2xlbmd0aCApCit7CisgIFAtPmRpZ2VzdF9sZW5ndGggPSBkaWdlc3RfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X2Zhbm91dCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBmYW5vdXQgKQoreworICBQLT5mYW5vdXQgPSBmYW5vdXQ7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbWF4X2RlcHRoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRlcHRoICkKK3sKKyAgUC0+ZGVwdGggPSBkZXB0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9sZWFmX2xlbmd0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDMyX3QgbGVhZl9sZW5ndGggKQoreworICBQLT5sZWFmX2xlbmd0aCA9IGxlYWZfbGVuZ3RoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X25vZGVfb2Zmc2V0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50NjRfdCBub2RlX29mZnNldCApCit7CisgIFAtPm5vZGVfb2Zmc2V0ID0gbm9kZV9vZmZzZXQ7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfbm9kZV9kZXB0aCggYmxha2UyYl9wYXJhbSAqUCwgY29uc3QgdWludDhfdCBub2RlX2RlcHRoICkKK3sKKyAgUC0+bm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9wYXJhbV9zZXRfaW5uZXJfbGVuZ3RoKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGlubmVyX2xlbmd0aCApCit7CisgIFAtPmlubmVyX2xlbmd0aCA9IGlubmVyX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJiX3BhcmFtX3NldF9zYWx0KCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHNhbHRbQkxBS0UyQl9TQUxUQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5zYWx0LCBzYWx0LCBCTEFLRTJCX1NBTFRCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMmJfcGFyYW1fc2V0X3BlcnNvbmFsKCBibGFrZTJiX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHBlcnNvbmFsW0JMQUtFMkJfUEVSU09OQUxCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnBlcnNvbmFsLCBwZXJzb25hbCwgQkxBS0UyQl9QRVJTT05BTEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9pbml0MCggYmxha2UyYl9zdGF0ZSAqUyApCit7CisgIGludCBpOworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2UyYl9zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIFMtPmhbaV0gPSBibGFrZTJiX0lWW2ldOworCisgIHJldHVybiAwOworfQorCisvKiBpbml0IHhvcnMgSVYgd2l0aCBpbnB1dCBwYXJhbWV0ZXIgYmxvY2sgKi8KK2ludCBibGFrZTJiX2luaXRfcGFyYW0oIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IGJsYWtlMmJfcGFyYW0gKlAgKQoreworICAvKmJsYWtlMmJfaW5pdDAoIFMgKTsgKi8KKyAgY29uc3QgdWludDhfdCAqIHYgPSAoIGNvbnN0IHVpbnQ4X3QgKiApKCBibGFrZTJiX0lWICk7CisgIGNvbnN0IHVpbnQ4X3QgKiBwID0gKCBjb25zdCB1aW50OF90ICogKSggUCApOworICB1aW50OF90ICogaCA9ICggdWludDhfdCAqICkoIFMtPmggKTsKKyAgaW50IGk7CisgIC8qIElWIFhPUiBQYXJhbUJsb2NrICovCisgIG1lbXNldCggUywgMCwgc2l6ZW9mKCBibGFrZTJiX3N0YXRlICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyQl9PVVRCWVRFUzsgKytpICkgaFtpXSA9IHZbaV0gXiBwW2ldOworCisgIHJldHVybiAwOworfQorCisKKy8qIFNvbWUgc29ydCBvZiBkZWZhdWx0IHBhcmFtZXRlciBibG9jayBpbml0aWFsaXphdGlvbiwgZm9yIHNlcXVlbnRpYWwgYmxha2UyYiAqLworaW50IGJsYWtlMmJfaW5pdCggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKQoreworICBjb25zdCBibGFrZTJiX3BhcmFtIFAgPQorICB7CisgICAgb3V0bGVuLAorICAgIDAsCisgICAgMSwKKyAgICAxLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIDAsCisgICAgezB9LAorICAgIHswfSwKKyAgICB7MH0KKyAgfTsKKworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIHJldHVybiBibGFrZTJiX2luaXRfcGFyYW0oIFMsICZQICk7Cit9CisKK2ludCBibGFrZTJiX2luaXRfa2V5KCBibGFrZTJiX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApCit7CisgIGNvbnN0IGJsYWtlMmJfcGFyYW0gUCA9CisgIHsKKyAgICBvdXRsZW4sCisgICAga2V5bGVuLAorICAgIDEsCisgICAgMSwKKyAgICAwLAorICAgIDAsCisgICAgMCwKKyAgICAwLAorICAgIHswfSwKKyAgICB7MH0sCisgICAgezB9CisgIH07CisKKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMkJfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBpZiAoICggIWtleWxlbiApIHx8IGtleWxlbiA+IEJMQUtFMkJfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMmJfaW5pdF9wYXJhbSggUywgJlAgKSA8IDAgKQorICAgIHJldHVybiAwOworCisgIHsKKyAgICB1aW50OF90IGJsb2NrW0JMQUtFMkJfQkxPQ0tCWVRFU107CisgICAgbWVtc2V0KCBibG9jaywgMCwgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgbWVtY3B5KCBibG9jaywga2V5LCBrZXlsZW4gKTsKKyAgICBibGFrZTJiX3VwZGF0ZSggUywgYmxvY2ssIEJMQUtFMkJfQkxPQ0tCWVRFUyApOworICAgIHNlY3VyZV96ZXJvX21lbW9yeSggYmxvY2ssIEJMQUtFMkJfQkxPQ0tCWVRFUyApOyAvKiBCdXJuIHRoZSBrZXkgZnJvbSBzdGFjayAqLworICB9CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2UyYl9jb21wcmVzcyggYmxha2UyYl9zdGF0ZSAqUywgY29uc3QgdWludDhfdCBibG9ja1tCTEFLRTJCX0JMT0NLQllURVNdICkKK3sKKyAgX19tMTI4aSByb3cxbCwgcm93MWg7CisgIF9fbTEyOGkgcm93MmwsIHJvdzJoOworICBfX20xMjhpIHJvdzNsLCByb3czaDsKKyAgX19tMTI4aSByb3c0bCwgcm93NGg7CisgIF9fbTEyOGkgYjAsIGIxOworICBfX20xMjhpIHQwLCB0MTsKKyNpZiBkZWZpbmVkKEhBVkVfU1NTRTMpICYmICFkZWZpbmVkKEhBVkVfWE9QKQorICBjb25zdCBfX20xMjhpIHIxNiA9IF9tbV9zZXRyX2VwaTgoIDIsIDMsIDQsIDUsIDYsIDcsIDAsIDEsIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDgsIDkgKTsKKyAgY29uc3QgX19tMTI4aSByMjQgPSBfbW1fc2V0cl9lcGk4KCAzLCA0LCA1LCA2LCA3LCAwLCAxLCAyLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDgsIDksIDEwICk7CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfU1NFNDEpCisgIGNvbnN0IF9fbTEyOGkgbTAgPSBMT0FEVSggYmxvY2sgKyAwMCApOworICBjb25zdCBfX20xMjhpIG0xID0gTE9BRFUoIGJsb2NrICsgMTYgKTsKKyAgY29uc3QgX19tMTI4aSBtMiA9IExPQURVKCBibG9jayArIDMyICk7CisgIGNvbnN0IF9fbTEyOGkgbTMgPSBMT0FEVSggYmxvY2sgKyA0OCApOworICBjb25zdCBfX20xMjhpIG00ID0gTE9BRFUoIGJsb2NrICsgNjQgKTsKKyAgY29uc3QgX19tMTI4aSBtNSA9IExPQURVKCBibG9jayArIDgwICk7CisgIGNvbnN0IF9fbTEyOGkgbTYgPSBMT0FEVSggYmxvY2sgKyA5NiApOworICBjb25zdCBfX20xMjhpIG03ID0gTE9BRFUoIGJsb2NrICsgMTEyICk7CisjZWxzZQorICBjb25zdCB1aW50NjRfdCAgbTAgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgMF07CisgIGNvbnN0IHVpbnQ2NF90ICBtMSA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyAxXTsKKyAgY29uc3QgdWludDY0X3QgIG0yID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDJdOworICBjb25zdCB1aW50NjRfdCAgbTMgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgM107CisgIGNvbnN0IHVpbnQ2NF90ICBtNCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA0XTsKKyAgY29uc3QgdWludDY0X3QgIG01ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDVdOworICBjb25zdCB1aW50NjRfdCAgbTYgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgNl07CisgIGNvbnN0IHVpbnQ2NF90ICBtNyA9ICggKCB1aW50NjRfdCAqIClibG9jayApWyA3XTsKKyAgY29uc3QgdWludDY0X3QgIG04ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbIDhdOworICBjb25zdCB1aW50NjRfdCAgbTkgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsgOV07CisgIGNvbnN0IHVpbnQ2NF90IG0xMCA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzEwXTsKKyAgY29uc3QgdWludDY0X3QgbTExID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTFdOworICBjb25zdCB1aW50NjRfdCBtMTIgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxMl07CisgIGNvbnN0IHVpbnQ2NF90IG0xMyA9ICggKCB1aW50NjRfdCAqIClibG9jayApWzEzXTsKKyAgY29uc3QgdWludDY0X3QgbTE0ID0gKCAoIHVpbnQ2NF90ICogKWJsb2NrIClbMTRdOworICBjb25zdCB1aW50NjRfdCBtMTUgPSAoICggdWludDY0X3QgKiApYmxvY2sgKVsxNV07CisjZW5kaWYKKyAgcm93MWwgPSBMT0FEVSggJlMtPmhbMF0gKTsKKyAgcm93MWggPSBMT0FEVSggJlMtPmhbMl0gKTsKKyAgcm93MmwgPSBMT0FEVSggJlMtPmhbNF0gKTsKKyAgcm93MmggPSBMT0FEVSggJlMtPmhbNl0gKTsKKyAgcm93M2wgPSBMT0FEVSggJmJsYWtlMmJfSVZbMF0gKTsKKyAgcm93M2ggPSBMT0FEVSggJmJsYWtlMmJfSVZbMl0gKTsKKyAgcm93NGwgPSBfbW1feG9yX3NpMTI4KCBMT0FEVSggJmJsYWtlMmJfSVZbNF0gKSwgTE9BRFUoICZTLT50WzBdICkgKTsKKyAgcm93NGggPSBfbW1feG9yX3NpMTI4KCBMT0FEVSggJmJsYWtlMmJfSVZbNl0gKSwgTE9BRFUoICZTLT5mWzBdICkgKTsKKyAgUk9VTkQoIDAgKTsKKyAgUk9VTkQoIDEgKTsKKyAgUk9VTkQoIDIgKTsKKyAgUk9VTkQoIDMgKTsKKyAgUk9VTkQoIDQgKTsKKyAgUk9VTkQoIDUgKTsKKyAgUk9VTkQoIDYgKTsKKyAgUk9VTkQoIDcgKTsKKyAgUk9VTkQoIDggKTsKKyAgUk9VTkQoIDkgKTsKKyAgUk9VTkQoIDEwICk7CisgIFJPVU5EKCAxMSApOworICByb3cxbCA9IF9tbV94b3Jfc2kxMjgoIHJvdzNsLCByb3cxbCApOworICByb3cxaCA9IF9tbV94b3Jfc2kxMjgoIHJvdzNoLCByb3cxaCApOworICBTVE9SRVUoICZTLT5oWzBdLCBfbW1feG9yX3NpMTI4KCBMT0FEVSggJlMtPmhbMF0gKSwgcm93MWwgKSApOworICBTVE9SRVUoICZTLT5oWzJdLCBfbW1feG9yX3NpMTI4KCBMT0FEVSggJlMtPmhbMl0gKSwgcm93MWggKSApOworICByb3cybCA9IF9tbV94b3Jfc2kxMjgoIHJvdzRsLCByb3cybCApOworICByb3cyaCA9IF9tbV94b3Jfc2kxMjgoIHJvdzRoLCByb3cyaCApOworICBTVE9SRVUoICZTLT5oWzRdLCBfbW1feG9yX3NpMTI4KCBMT0FEVSggJlMtPmhbNF0gKSwgcm93MmwgKSApOworICBTVE9SRVUoICZTLT5oWzZdLCBfbW1feG9yX3NpMTI4KCBMT0FEVSggJlMtPmhbNl0gKSwgcm93MmggKSApOworICByZXR1cm4gMDsKK30KKworCitpbnQgYmxha2UyYl91cGRhdGUoIGJsYWtlMmJfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApCit7CisgIHdoaWxlKCBpbmxlbiA+IDAgKQorICB7CisgICAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgICAgc2l6ZV90IGZpbGwgPSAyICogQkxBS0UyQl9CTE9DS0JZVEVTIC0gbGVmdDsKKworICAgIGlmKCBpbmxlbiA+IGZpbGwgKQorICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGZpbGwgKTsgLyogRmlsbCBidWZmZXIgKi8KKyAgICAgIFMtPmJ1ZmxlbiArPSBmaWxsOworICAgICAgYmxha2UyYl9pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyQl9CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIG1lbWNweSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJCX0JMT0NLQllURVMsIEJMQUtFMkJfQkxPQ0tCWVRFUyApOyAvKiBTaGlmdCBidWZmZXIgbGVmdCAqLworICAgICAgUy0+YnVmbGVuIC09IEJMQUtFMkJfQkxPQ0tCWVRFUzsKKyAgICAgIGluICs9IGZpbGw7CisgICAgICBpbmxlbiAtPSBmaWxsOworICAgIH0KKyAgICBlbHNlIC8qIGlubGVuIDw9IGZpbGwgKi8KKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBpbmxlbiApOworICAgICAgUy0+YnVmbGVuICs9IGlubGVuOyAvKiBCZSBsYXp5LCBkbyBub3QgY29tcHJlc3MgKi8KKyAgICAgIGluICs9IGlubGVuOworICAgICAgaW5sZW4gLT0gaW5sZW47CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKworaW50IGJsYWtlMmJfZmluYWwoIGJsYWtlMmJfc3RhdGUgKlMsIHVpbnQ4X3QgKm91dCwgdWludDhfdCBvdXRsZW4gKQoreworICBpZiggb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApCisgICAgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJiX2lzX2xhc3RibG9jayggUyApICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIFMtPmJ1ZmxlbiA+IEJMQUtFMkJfQkxPQ0tCWVRFUyApCisgIHsKKyAgICBibGFrZTJiX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJCX0JMT0NLQllURVMgKTsKKyAgICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgICBTLT5idWZsZW4gLT0gQkxBS0UyQl9CTE9DS0JZVEVTOworICAgIG1lbW1vdmUoIFMtPmJ1ZiwgUy0+YnVmICsgQkxBS0UyQl9CTE9DS0JZVEVTLCBTLT5idWZsZW4gKTsKKyAgfQorCisgIGJsYWtlMmJfaW5jcmVtZW50X2NvdW50ZXIoIFMsIFMtPmJ1ZmxlbiApOworICBibGFrZTJiX3NldF9sYXN0YmxvY2soIFMgKTsKKyAgbWVtc2V0KCBTLT5idWYgKyBTLT5idWZsZW4sIDAsIDIgKiBCTEFLRTJCX0JMT0NLQllURVMgLSBTLT5idWZsZW4gKTsgLyogUGFkZGluZyAqLworICBibGFrZTJiX2NvbXByZXNzKCBTLCBTLT5idWYgKTsKKyAgbWVtY3B5KCBvdXQsICZTLT5oWzBdLCBvdXRsZW4gKTsKKyAgcmV0dXJuIDA7Cit9CisKKworaW50IGJsYWtlMmIoIHVpbnQ4X3QgKm91dCwgY29uc3Qgdm9pZCAqaW4sIGNvbnN0IHZvaWQgKmtleSwgY29uc3QgdWludDhfdCBvdXRsZW4sIGNvbnN0IHVpbnQ2NF90IGlubGVuLCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMmJfc3RhdGUgU1sxXTsKKworICAvKiBWZXJpZnkgcGFyYW1ldGVycyAqLworICBpZiAoIE5VTEwgPT0gaW4gJiYgaW5sZW4gPiAwICkgcmV0dXJuIC0xOworCisgIGlmICggTlVMTCA9PSBvdXQgKSByZXR1cm4gLTE7CisKKyAgaWYoIE5VTEwgPT0ga2V5ICYmIGtleWxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYoICFvdXRsZW4gfHwgb3V0bGVuID4gQkxBS0UyQl9PVVRCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuID4gQkxBS0UyQl9LRVlCWVRFUyApIHJldHVybiAtMTsKKworICBpZigga2V5bGVuICkKKyAgeworICAgIGlmKCBibGFrZTJiX2luaXRfa2V5KCBTLCBvdXRsZW4sIGtleSwga2V5bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKCBibGFrZTJiX2luaXQoIFMsIG91dGxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorCisgIGJsYWtlMmJfdXBkYXRlKCBTLCAoIGNvbnN0IHVpbnQ4X3QgKiApaW4sIGlubGVuICk7CisgIGJsYWtlMmJfZmluYWwoIFMsIG91dCwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChTVVBFUkNPUCkKK2ludCBjcnlwdG9faGFzaCggdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBsb25nIGlubGVuICkKK3sKKyAgcmV0dXJuIGJsYWtlMmIoIG91dCwgaW4sIE5VTEwsIEJMQUtFMkJfT1VUQllURVMsIGlubGVuLCAwICk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoQkxBS0UyQl9TRUxGVEVTVCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJibGFrZTIta2F0LmgiCitpbnQgbWFpbiggaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK3sKKyAgdWludDhfdCBrZXlbQkxBS0UyQl9LRVlCWVRFU107CisgIHVpbnQ4X3QgYnVmW0tBVF9MRU5HVEhdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyQl9LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgICAgYnVmW2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMkJfT1VUQllURVNdOworICAgIGJsYWtlMmIoIGhhc2gsIGJ1Ziwga2V5LCBCTEFLRTJCX09VVEJZVEVTLCBpLCBCTEFLRTJCX0tFWUJZVEVTICk7CisKKyAgICBpZiggMCAhPSBtZW1jbXAoIGhhc2gsIGJsYWtlMmJfa2V5ZWRfa2F0W2ldLCBCTEFLRTJCX09VVEJZVEVTICkgKQorICAgIHsKKyAgICAgIHB1dHMoICJlcnJvciIgKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBwdXRzKCAib2siICk7CisgIHJldHVybiAwOworfQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2UyLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZGVmYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlMi5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKyNwcmFnbWEgb25jZQorI2lmbmRlZiBfX0JMQUtFMlNfTE9BRF9TU0UyX0hfXworI2RlZmluZSBfX0JMQUtFMlNfTE9BRF9TU0UyX0hfXworCisjZGVmaW5lIExPQURfTVNHXzBfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTYsbTQsbTIsbTApCisjZGVmaW5lIExPQURfTVNHXzBfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTcsbTUsbTMsbTEpCisjZGVmaW5lIExPQURfTVNHXzBfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE0LG0xMixtMTAsbTgpCisjZGVmaW5lIExPQURfTVNHXzBfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE1LG0xMyxtMTEsbTkpCisjZGVmaW5lIExPQURfTVNHXzFfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEzLG05LG00LG0xNCkKKyNkZWZpbmUgTE9BRF9NU0dfMV8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNixtMTUsbTgsbTEwKQorI2RlZmluZSBMT0FEX01TR18xXzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG01LG0xMSxtMCxtMSkKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMyxtNyxtMixtMTIpCisjZGVmaW5lIExPQURfTVNHXzJfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTE1LG01LG0xMixtMTEpCisjZGVmaW5lIExPQURfTVNHXzJfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEzLG0yLG0wLG04KQorI2RlZmluZSBMT0FEX01TR18yXzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG05LG03LG0zLG0xMCkKKyNkZWZpbmUgTE9BRF9NU0dfMl80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtNCxtMSxtNixtMTQpCisjZGVmaW5lIExPQURfTVNHXzNfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTExLG0xMyxtMyxtNykKKyNkZWZpbmUgTE9BRF9NU0dfM18yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTQsbTEyLG0xLG05KQorI2RlZmluZSBMT0FEX01TR18zXzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNSxtNCxtNSxtMikKKyNkZWZpbmUgTE9BRF9NU0dfM180KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOCxtMCxtMTAsbTYpCisjZGVmaW5lIExPQURfTVNHXzRfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEwLG0yLG01LG05KQorI2RlZmluZSBMT0FEX01TR180XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xNSxtNCxtNyxtMCkKKyNkZWZpbmUgTE9BRF9NU0dfNF8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMyxtNixtMTEsbTE0KQorI2RlZmluZSBMT0FEX01TR180XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMyxtOCxtMTIsbTEpCisjZGVmaW5lIExPQURfTVNHXzVfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTgsbTAsbTYsbTIpCisjZGVmaW5lIExPQURfTVNHXzVfMihidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTMsbTExLG0xMCxtMTIpCisjZGVmaW5lIExPQURfTVNHXzVfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEsbTE1LG03LG00KQorI2RlZmluZSBMT0FEX01TR181XzQoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG05LG0xNCxtNSxtMTMpCisjZGVmaW5lIExPQURfTVNHXzZfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTQsbTE0LG0xLG0xMikKKyNkZWZpbmUgTE9BRF9NU0dfNl8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTAsbTEzLG0xNSxtNSkKKyNkZWZpbmUgTE9BRF9NU0dfNl8zKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOCxtOSxtNixtMCkKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTEsbTIsbTMsbTcpCisjZGVmaW5lIExPQURfTVNHXzdfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTMsbTEyLG03LG0xMykKKyNkZWZpbmUgTE9BRF9NU0dfN18yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOSxtMSxtMTQsbTExKQorI2RlZmluZSBMT0FEX01TR183XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0yLG04LG0xNSxtNSkKKyNkZWZpbmUgTE9BRF9NU0dfN180KGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtMTAsbTYsbTQsbTApCisjZGVmaW5lIExPQURfTVNHXzhfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTAsbTExLG0xNCxtNikKKyNkZWZpbmUgTE9BRF9NU0dfOF8yKGJ1ZikgYnVmID0gX21tX3NldF9lcGkzMihtOCxtMyxtOSxtMTUpCisjZGVmaW5lIExPQURfTVNHXzhfMyhidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEwLG0xLG0xMyxtMTIpCisjZGVmaW5lIExPQURfTVNHXzhfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTUsbTQsbTcsbTIpCisjZGVmaW5lIExPQURfTVNHXzlfMShidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTEsbTcsbTgsbTEwKQorI2RlZmluZSBMT0FEX01TR185XzIoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG01LG02LG00LG0yKQorI2RlZmluZSBMT0FEX01TR185XzMoYnVmKSBidWYgPSBfbW1fc2V0X2VwaTMyKG0xMyxtMyxtOSxtMTUpCisjZGVmaW5lIExPQURfTVNHXzlfNChidWYpIGJ1ZiA9IF9tbV9zZXRfZXBpMzIobTAsbTEyLG0xNCxtMTEpCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlNDEuaCBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC1zc2U0MS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0YmYwY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQtc3NlNDEuaApAQCAtMCwwICsxLDIzMSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyU19MT0FEX1NTRTQxX0hfXworI2RlZmluZSBfX0JMQUtFMlNfTE9BRF9TU0U0MV9IX18KKworI2RlZmluZSBMT0FEX01TR18wXzEoYnVmKSBcCitidWYgPSBUT0koX21tX3NodWZmbGVfcHMoVE9GKG0wKSwgVE9GKG0xKSwgX01NX1NIVUZGTEUoMiwwLDIsMCkpKTsKKworI2RlZmluZSBMT0FEX01TR18wXzIoYnVmKSBcCitidWYgPSBUT0koX21tX3NodWZmbGVfcHMoVE9GKG0wKSwgVE9GKG0xKSwgX01NX1NIVUZGTEUoMywxLDMsMSkpKTsKKworI2RlZmluZSBMT0FEX01TR18wXzMoYnVmKSBcCitidWYgPSBUT0koX21tX3NodWZmbGVfcHMoVE9GKG0yKSwgVE9GKG0zKSwgX01NX1NIVUZGTEUoMiwwLDIsMCkpKTsKKworI2RlZmluZSBMT0FEX01TR18wXzQoYnVmKSBcCitidWYgPSBUT0koX21tX3NodWZmbGVfcHMoVE9GKG0yKSwgVE9GKG0zKSwgX01NX1NIVUZGTEUoMywxLDMsMSkpKTsKKworI2RlZmluZSBMT0FEX01TR18xXzEoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMSwgbTIsIDB4MEMpOyBcCit0MSA9IF9tbV9zbGxpX3NpMTI4KG0zLCA0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsIHQxLCAweEYwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMSwwLDMpKTsKKworI2RlZmluZSBMT0FEX01TR18xXzIoYnVmKSBcCit0MCA9IF9tbV9zaHVmZmxlX2VwaTMyKG0yLF9NTV9TSFVGRkxFKDAsMCwyLDApKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTEsbTMsMHhDMCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLCB0MSwgMHhGMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDMsMCwxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGJ1ZikgXAordDAgPSBfbW1fc2xsaV9zaTEyOChtMSwgNCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0yLCB0MCwgMHgzMCk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KG0wLCB0MSwgMHhGMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDMsMCwxKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV80KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV9zbGxpX3NpMTI4KG0zLCA0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsIHQxLCAweDBDKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMywwLDEpKTsKKworI2RlZmluZSBMT0FEX01TR18yXzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMixtMyk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0zLG0xLDB4MEMpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCwgdDEsIDB4MEYpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMywxLDAsMikpOworCisjZGVmaW5lIExPQURfTVNHXzJfMihidWYpIFwKK3QwID0gX21tX3VucGFja2xvX2VwaTMyKG0yLG0wKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYodDAsIG0wLCAweEYwKTsgXAordDIgPSBfbW1fc2xsaV9zaTEyOChtMywgOCk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MSwgdDIsIDB4QzApOworCisjZGVmaW5lIExPQURfTVNHXzJfMyhidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0wLCBtMiwgMHgzQyk7IFwKK3QxID0gX21tX3NybGlfc2kxMjgobTEsIDEyKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgwMyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgxLDAsMywyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl80KGJ1ZikgXAordDAgPSBfbW1fc2xsaV9zaTEyOChtMywgNCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0wLCBtMSwgMHgzMyk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQxLCB0MCwgMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgwLDEsMiwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGkzMih0MCwgbTIpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSwgbTMsIDB4MEMpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MiwgX01NX1NIVUZGTEUoMywxLDAsMikpOworCisjZGVmaW5lIExPQURfTVNHXzNfMihidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTIsIDgpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMyxtMCwweDBDKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsIHQwLCAweEMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDIsMCwxLDMpKTsKKworI2RlZmluZSBMT0FEX01TR18zXzMoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMSwweDBGKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYodDAsIG0zLCAweEMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDEsIF9NTV9TSFVGRkxFKDMsMCwxLDIpKTsKKworI2RlZmluZSBMT0FEX01TR18zXzQoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGkzMihtMCxtMik7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTMyKG0xLG0yKTsgXAorYnVmID0gX21tX3VucGFja2xvX2VwaTY0KHQxLHQwKTsKKworI2RlZmluZSBMT0FEX01TR180XzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGk2NChtMSxtMik7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTY0KG0wLG0yKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzMyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDAsMSwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8yKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpNjQobTEsbTMpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGk2NChtMCxtMSk7IFwKK2J1ZiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDMzKTsKKworI2RlZmluZSBMT0FEX01TR180XzMoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGk2NChtMyxtMSk7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTY0KG0yLG0wKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLHQwLDB4MzMpOworCisjZGVmaW5lIExPQURfTVNHXzRfNChidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0wLG0yLDB4MDMpOyBcCit0MSA9IF9tbV9zbGxpX3NpMTI4KHQwLCA4KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsbTMsMHgwRik7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgxLDIsMCwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGkzMihtMCxtMik7IFwKK2J1ZiA9IF9tbV91bnBhY2tsb19lcGk2NCh0MCx0MSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8yKGJ1ZikgXAordDAgPSBfbW1fc3JsaV9zaTEyOChtMiwgNCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0wLG0zLDB4MDMpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDEsdDAsMHgzQyk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8zKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTEsbTAsMHgwQyk7IFwKK3QxID0gX21tX3NybGlfc2kxMjgobTMsIDQpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDMwKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDEsMiwzLDApKTsKKworI2RlZmluZSBMT0FEX01TR181XzQoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGk2NChtMSxtMik7IFwKK3QxPSBfbW1fc2h1ZmZsZV9lcGkzMihtMywgX01NX1NIVUZGTEUoMCwyLDAsMSkpOyBcCitidWYgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzMyk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8xKGJ1ZikgXAordDAgPSBfbW1fc2xsaV9zaTEyOChtMSwgMTIpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNihtMCxtMywweDMzKTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLHQwLDB4QzApOworCisjZGVmaW5lIExPQURfTVNHXzZfMihidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0zLG0yLDB4MzApOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0xLCA0KTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgwMyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLCBfTU1fU0hVRkZMRSgyLDEsMywwKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8zKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNrbG9fZXBpNjQobTAsbTIpOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0xLCA0KTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIoX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MEMpLCBfTU1fU0hVRkZMRSgyLDMsMSwwKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl80KGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTEsbTIpOyBcCit0MSA9IF9tbV91bnBhY2toaV9lcGk2NChtMCx0MCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLCBfTU1fU0hVRkZMRSgzLDAsMSwyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18xKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTEpOyBcCit0MSA9IF9tbV9ibGVuZF9lcGkxNih0MCxtMywweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDEsX01NX1NIVUZGTEUoMiwwLDMsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzdfMihidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0yLG0zLDB4MzApOyBcCit0MSA9IF9tbV9zcmxpX3NpMTI4KG0wLDQpOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MCx0MSwweDAzKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsIF9NTV9TSFVGRkxFKDEsMCwyLDMpKTsKKworI2RlZmluZSBMT0FEX01TR183XzMoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGk2NChtMCxtMyk7IFwKK3QxID0gX21tX3VucGFja2xvX2VwaTY0KG0xLG0yKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDAsdDEsMHgzQyk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQyLF9NTV9TSFVGRkxFKDAsMiwzLDEpKTsKKworI2RlZmluZSBMT0FEX01TR183XzQoYnVmKSBcCit0MCA9IF9tbV91bnBhY2tsb19lcGkzMihtMCxtMSk7IFwKK3QxID0gX21tX3VucGFja2hpX2VwaTMyKG0xLG0yKTsgXAorYnVmID0gX21tX3VucGFja2xvX2VwaTY0KHQwLHQxKTsKKworI2RlZmluZSBMT0FEX01TR184XzEoYnVmKSBcCit0MCA9IF9tbV91bnBhY2toaV9lcGkzMihtMSxtMyk7IFwKK3QxID0gX21tX3VucGFja2xvX2VwaTY0KHQwLG0wKTsgXAordDIgPSBfbW1fYmxlbmRfZXBpMTYodDEsbTIsMHhDMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlaGlfZXBpMTYodDIsX01NX1NIVUZGTEUoMSwwLDMsMikpOworCisjZGVmaW5lIExPQURfTVNHXzhfMihidWYpIFwKK3QwID0gX21tX3VucGFja2hpX2VwaTMyKG0wLG0zKTsgXAordDEgPSBfbW1fYmxlbmRfZXBpMTYobTIsdDAsMHhGMCk7IFwKK2J1ZiA9IF9tbV9zaHVmZmxlX2VwaTMyKHQxLF9NTV9TSFVGRkxFKDAsMiwxLDMpKTsKKworI2RlZmluZSBMT0FEX01TR184XzMoYnVmKSBcCit0MCA9IF9tbV9ibGVuZF9lcGkxNihtMixtMCwweDBDKTsgXAordDEgPSBfbW1fc2xsaV9zaTEyOCh0MCw0KTsgXAorYnVmID0gX21tX2JsZW5kX2VwaTE2KHQxLG0zLDB4MEYpOworCisjZGVmaW5lIExPQURfTVNHXzhfNChidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0xLG0wLDB4MzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MCxfTU1fU0hVRkZMRSgxLDAsMywyKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGJ1ZikgXAordDAgPSBfbW1fYmxlbmRfZXBpMTYobTAsbTIsMHgwMyk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0xLG0yLDB4MzApOyBcCit0MiA9IF9tbV9ibGVuZF9lcGkxNih0MSx0MCwweDBGKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsX01NX1NIVUZGTEUoMSwzLDAsMikpOworCisjZGVmaW5lIExPQURfTVNHXzlfMihidWYpIFwKK3QwID0gX21tX3NsbGlfc2kxMjgobTAsNCk7IFwKK3QxID0gX21tX2JsZW5kX2VwaTE2KG0xLHQwLDB4QzApOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MSxfTU1fU0hVRkZMRSgxLDIsMCwzKSk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGJ1ZikgXAordDAgPSBfbW1fdW5wYWNraGlfZXBpMzIobTAsbTMpOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGkzMihtMixtMyk7IFwKK3QyID0gX21tX3VucGFja2hpX2VwaTY0KHQwLHQxKTsgXAorYnVmID0gX21tX3NodWZmbGVfZXBpMzIodDIsX01NX1NIVUZGTEUoMywwLDIsMSkpOworCisjZGVmaW5lIExPQURfTVNHXzlfNChidWYpIFwKK3QwID0gX21tX2JsZW5kX2VwaTE2KG0zLG0yLDB4QzApOyBcCit0MSA9IF9tbV91bnBhY2tsb19lcGkzMihtMCxtMyk7IFwKK3QyID0gX21tX2JsZW5kX2VwaTE2KHQwLHQxLDB4MEYpOyBcCitidWYgPSBfbW1fc2h1ZmZsZV9lcGkzMih0MixfTU1fU0hVRkZMRSgwLDEsMiwzKSk7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQteG9wLmggYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLWxvYWQteG9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNiNWQ2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtbG9hZC14b3AuaApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyU19MT0FEX1hPUF9IX18KKyNkZWZpbmUgX19CTEFLRTJTX0xPQURfWE9QX0hfXworCisjZGVmaW5lIFRPQih4KSAoKHgpKjQqMHgwMTAxMDEwMSArIDB4MDMwMjAxMDApIC8qIC4ub3Igbm90IFRPQiAqLworCisvKiBCYXNpYyBWUFBFUk0gZW11bGF0aW9uLCBmb3IgdGVzdGluZyBwdXJwb3NlcyAqLworLypzdGF0aWMgX19tMTI4aSBfbW1fcGVybV9lcGk4KGNvbnN0IF9fbTEyOGkgc3JjMSwgY29uc3QgX19tMTI4aSBzcmMyLCBjb25zdCBfX20xMjhpIHNlbCkKK3sKKyAgIGNvbnN0IF9fbTEyOGkgc2l4dGVlbiA9IF9tbV9zZXQxX2VwaTgoMTYpOworICAgY29uc3QgX19tMTI4aSB0MCA9IF9tbV9zaHVmZmxlX2VwaTgoc3JjMSwgc2VsKTsKKyAgIGNvbnN0IF9fbTEyOGkgczEgPSBfbW1fc2h1ZmZsZV9lcGk4KHNyYzIsIF9tbV9zdWJfZXBpOChzZWwsIHNpeHRlZW4pKTsKKyAgIGNvbnN0IF9fbTEyOGkgbWFzayA9IF9tbV9vcl9zaTEyOChfbW1fY21wZXFfZXBpOChzZWwsIHNpeHRlZW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tbV9jbXBndF9lcGk4KHNlbCwgc2l4dGVlbikpOyAvKiAoPj0xNikgPSAweGZmIDogMDAgKi8KKyAgIHJldHVybiBfbW1fYmxlbmR2X2VwaTgodDAsIHMxLCBtYXNrKTsKK30qLworCisjZGVmaW5lIExPQURfTVNHXzBfMShidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoNCksVE9CKDIpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18wXzIoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDUpLFRPQigzKSxUT0IoMSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMF8zKGJ1ZikgXAorYnVmID0gX21tX3Blcm1fZXBpOChtMiwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQig0KSxUT0IoMiksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzBfNChidWYpIFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgobTIsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig3KSxUT0IoNSksVE9CKDMpLFRPQigxKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18xXzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTEsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNSksVE9CKDApLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigyKSxUT0IoMSksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzFfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDIpLFRPQigwKSxUT0IoNCksVE9CKDYpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMV8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDApLFRPQigwKSxUT0IoMSkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18xXzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDIpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDQpKSApOworCisjZGVmaW5lIExPQURfTVNHXzJfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigxKSxUT0IoMCksVE9CKDcpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoNyksVE9CKDIpLFRPQig0KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfMl8yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDIpLFRPQigwKSxUT0IoNCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18yXzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNyksVE9CKDMpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDUpLFRPQigyKSxUT0IoMSksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzJfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQigxKSxUT0IoNiksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQigxKSxUT0IoNikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQigzKSxUT0IoNykpICk7IFwKK3QwID0gX21tX3Blcm1fZXBpOCh0MCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDUpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfM18yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQigxKSxUT0IoNSkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoNCksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR18zXzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNCksVE9CKDUpLFRPQigyKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzNfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMCksVE9CKDYpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNCksVE9CKDIpLFRPQig2KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNF8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDIpLFRPQig1KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig2KSxUT0IoMiksVE9CKDEpLFRPQig1KSkgKTsKKworI2RlZmluZSBMT0FEX01TR180XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNCksVE9CKDcpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzRfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig2KSxUT0IoMCksVE9CKDApKSApOyBcCit0MCA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDcpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDYpKSApOworCisjZGVmaW5lIExPQURfTVNHXzRfNChidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQig0KSxUT0IoMCksVE9CKDEpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDIpLFRPQig0KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQig2KSxUT0IoMikpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMiksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR181XzIoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDYpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoMSksVE9CKDQpKSApOworCisjZGVmaW5lIExPQURfTVNHXzVfMyhidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDEpLFRPQigwKSxUT0IoNyksVE9CKDQpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDcpLFRPQigxKSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNV80KGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0xLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDApLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNiksVE9CKDEpLFRPQig1KSkgKTsKKworI2RlZmluZSBMT0FEX01TR182XzEoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoMCksVE9CKDEpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig2KSxUT0IoMSksVE9CKDQpKSApOworCisjZGVmaW5lIExPQURfTVNHXzZfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQigwKSxUT0IoMCksVE9CKDEpKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDUpLFRPQig3KSxUT0IoMCkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfNl8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDApLFRPQig2KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQig0KSxUT0IoNSksVE9CKDEpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR182XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMiksVE9CKDMpLFRPQig3KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDcpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzdfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigwKSxUT0IoNyksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQwLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDQpLFRPQigxKSxUT0IoNSkpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfN18yKGJ1ZikgXAordDEgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDEpLFRPQigwKSxUT0IoNykpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDEsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDYpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR183XzMoYnVmKSBcCit0MCA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigyKSxUT0IoMCksVE9CKDApLFRPQig1KSkgKTsgXAordDAgPSBfbW1fcGVybV9lcGk4KHQwLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDQpLFRPQigxKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDcpLFRPQigwKSkgKTsKKworI2RlZmluZSBMT0FEX01TR183XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0xLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoNiksVE9CKDQpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDYpLFRPQigyKSxUT0IoMSksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzhfMShidWYpIFwKK3QwID0gX21tX3Blcm1fZXBpOChtMCwgbTEsIF9tbV9zZXRfZXBpMzIoVE9CKDApLFRPQigwKSxUT0IoMCksVE9CKDYpKSApOyBcCit0MCA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoNyksVE9CKDEpLFRPQigwKSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MCwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQigyKSxUT0IoNiksVE9CKDApKSApOworCisjZGVmaW5lIExPQURfTVNHXzhfMihidWYpIFwKK3QxID0gX21tX3Blcm1fZXBpOChtMCwgbTIsIF9tbV9zZXRfZXBpMzIoVE9CKDQpLFRPQigzKSxUT0IoNSksVE9CKDApKSApOyBcCitidWYgPSBfbW1fcGVybV9lcGk4KHQxLCBtMywgX21tX3NldF9lcGkzMihUT0IoMyksVE9CKDIpLFRPQigxKSxUT0IoNykpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOF8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoNiksVE9CKDEpLFRPQigwKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDUpLFRPQig0KSkgKTsgXAorIAorI2RlZmluZSBMT0FEX01TR184XzQoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDQpLFRPQig3KSxUT0IoMikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8xKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoMSksVE9CKDcpLFRPQigwKSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigzKSxUT0IoMiksVE9CKDQpLFRPQig2KSkgKTsKKworI2RlZmluZSBMT0FEX01TR185XzIoYnVmKSBcCitidWYgPSBfbW1fcGVybV9lcGk4KG0wLCBtMSwgX21tX3NldF9lcGkzMihUT0IoNSksVE9CKDYpLFRPQig0KSxUT0IoMikpICk7CisKKyNkZWZpbmUgTE9BRF9NU0dfOV8zKGJ1ZikgXAordDAgPSBfbW1fcGVybV9lcGk4KG0wLCBtMiwgX21tX3NldF9lcGkzMihUT0IoMCksVE9CKDMpLFRPQig1KSxUT0IoMCkpICk7IFwKK2J1ZiA9IF9tbV9wZXJtX2VwaTgodDAsIG0zLCBfbW1fc2V0X2VwaTMyKFRPQig1KSxUT0IoMiksVE9CKDEpLFRPQig3KSkgKTsKKworI2RlZmluZSBMT0FEX01TR185XzQoYnVmKSBcCit0MSA9IF9tbV9wZXJtX2VwaTgobTAsIG0yLCBfbW1fc2V0X2VwaTMyKFRPQigwKSxUT0IoMCksVE9CKDApLFRPQig3KSkgKTsgXAorYnVmID0gX21tX3Blcm1fZXBpOCh0MSwgbTMsIF9tbV9zZXRfZXBpMzIoVE9CKDMpLFRPQig0KSxUT0IoNiksVE9CKDApKSApOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yZWYuYyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcmVmLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYzNjc1MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMtcmVmLmMKQEAgLTAsMCArMSw0MTEgQEAKKy8qCisgICBCTEFLRTIgcmVmZXJlbmNlIHNvdXJjZSBjb2RlIHBhY2thZ2UgLSByZWZlcmVuY2UgQyBpbXBsZW1lbnRhdGlvbnMKKyAgCisgICBDb3B5cmlnaHQgMjAxMiwgU2FtdWVsIE5ldmVzIDxzbmV2ZXNAZGVpLnVjLnB0Pi4gIFlvdSBtYXkgdXNlIHRoaXMgdW5kZXIgdGhlCisgICB0ZXJtcyBvZiB0aGUgQ0MwLCB0aGUgT3BlblNTTCBMaWNlbmNlLCBvciB0aGUgQXBhY2hlIFB1YmxpYyBMaWNlbnNlIDIuMCwgYXQKKyAgIHlvdXIgb3B0aW9uLiAgVGhlIHRlcm1zIG9mIHRoZXNlIGxpY2Vuc2VzIGNhbiBiZSBmb3VuZCBhdDoKKyAgCisgICAtIENDMCAxLjAgVW5pdmVyc2FsIDogaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wCisgICAtIE9wZW5TU0wgbGljZW5zZSAgIDogaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL2xpY2Vuc2UuaHRtbAorICAgLSBBcGFjaGUgMi4wICAgICAgICA6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgIE1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEJMQUtFMiBoYXNoIGZ1bmN0aW9uIGNhbiBiZSBmb3VuZCBhdAorICAgaHR0cHM6Ly9ibGFrZTIubmV0LgorKi8KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJibGFrZTIuaCIKKyNpbmNsdWRlICJibGFrZTItaW1wbC5oIgorCitzdGF0aWMgY29uc3QgdWludDMyX3QgYmxha2Uyc19JVls4XSA9Cit7CisgIDB4NkEwOUU2NjdVTCwgMHhCQjY3QUU4NVVMLCAweDNDNkVGMzcyVUwsIDB4QTU0RkY1M0FVTCwKKyAgMHg1MTBFNTI3RlVMLCAweDlCMDU2ODhDVUwsIDB4MUY4M0Q5QUJVTCwgMHg1QkUwQ0QxOVVMCit9OworCitzdGF0aWMgY29uc3QgdWludDhfdCBibGFrZTJzX3NpZ21hWzEwXVsxNl0gPQoreworICB7ICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1IH0gLAorICB7IDE0LCAxMCwgIDQsICA4LCAgOSwgMTUsIDEzLCAgNiwgIDEsIDEyLCAgMCwgIDIsIDExLCAgNywgIDUsICAzIH0gLAorICB7IDExLCAgOCwgMTIsICAwLCAgNSwgIDIsIDE1LCAxMywgMTAsIDE0LCAgMywgIDYsICA3LCAgMSwgIDksICA0IH0gLAorICB7ICA3LCAgOSwgIDMsICAxLCAxMywgMTIsIDExLCAxNCwgIDIsICA2LCAgNSwgMTAsICA0LCAgMCwgMTUsICA4IH0gLAorICB7ICA5LCAgMCwgIDUsICA3LCAgMiwgIDQsIDEwLCAxNSwgMTQsICAxLCAxMSwgMTIsICA2LCAgOCwgIDMsIDEzIH0gLAorICB7ICAyLCAxMiwgIDYsIDEwLCAgMCwgMTEsICA4LCAgMywgIDQsIDEzLCAgNywgIDUsIDE1LCAxNCwgIDEsICA5IH0gLAorICB7IDEyLCAgNSwgIDEsIDE1LCAxNCwgMTMsICA0LCAxMCwgIDAsICA3LCAgNiwgIDMsICA5LCAgMiwgIDgsIDExIH0gLAorICB7IDEzLCAxMSwgIDcsIDE0LCAxMiwgIDEsICAzLCAgOSwgIDUsICAwLCAxNSwgIDQsICA4LCAgNiwgIDIsIDEwIH0gLAorICB7ICA2LCAxNSwgMTQsICA5LCAxMSwgIDMsICAwLCAgOCwgMTIsICAyLCAxMywgIDcsICAxLCAgNCwgMTAsICA1IH0gLAorICB7IDEwLCAgMiwgIDgsICA0LCAgNywgIDYsICAxLCAgNSwgMTUsIDExLCAgOSwgMTQsICAzLCAxMiwgMTMgLCAwIH0gLAorfTsKKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY2xlYXJfbGFzdG5vZGUoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKKy8qIFNvbWUgaGVscGVyIGZ1bmN0aW9ucywgbm90IG5lY2Vzc2FyaWx5IHVzZWZ1bCAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaXNfbGFzdGJsb2NrKCBjb25zdCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgcmV0dXJuIFMtPmZbMF0gIT0gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfc2V0X2xhc3RibG9jayggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJzX3NldF9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAtMTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2NsZWFyX2xhc3RibG9jayggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGlmKCBTLT5sYXN0X25vZGUgKSBibGFrZTJzX2NsZWFyX2xhc3Rub2RlKCBTICk7CisKKyAgUy0+ZlswXSA9IDA7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDMyX3QgaW5jICkKK3sKKyAgUy0+dFswXSArPSBpbmM7CisgIFMtPnRbMV0gKz0gKCBTLT50WzBdIDwgaW5jICk7CisgIHJldHVybiAwOworfQorCisvKiBQYXJhbWV0ZXItcmVsYXRlZCBmdW5jdGlvbnMgKi8KK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9kaWdlc3RfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGRpZ2VzdF9sZW5ndGggKQoreworICBQLT5kaWdlc3RfbGVuZ3RoID0gZGlnZXN0X2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9mYW5vdXQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZmFub3V0ICkKK3sKKyAgUC0+ZmFub3V0ID0gZmFub3V0OworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X21heF9kZXB0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkZXB0aCApCit7CisgIFAtPmRlcHRoID0gZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbGVhZl9sZW5ndGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQzMl90IGxlYWZfbGVuZ3RoICkKK3sKKyAgc3RvcmUzMiggJlAtPmxlYWZfbGVuZ3RoLCBsZWFmX2xlbmd0aCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X25vZGVfb2Zmc2V0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50NjRfdCBub2RlX29mZnNldCApCit7CisgIHN0b3JlNDgoIFAtPm5vZGVfb2Zmc2V0LCBub2RlX29mZnNldCApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X25vZGVfZGVwdGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3Qgbm9kZV9kZXB0aCApCit7CisgIFAtPm5vZGVfZGVwdGggPSBub2RlX2RlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2lubmVyX2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBpbm5lcl9sZW5ndGggKQoreworICBQLT5pbm5lcl9sZW5ndGggPSBpbm5lcl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfc2FsdCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBzYWx0W0JMQUtFMlNfU0FMVEJZVEVTXSApCit7CisgIG1lbWNweSggUC0+c2FsdCwgc2FsdCwgQkxBS0UyU19TQUxUQllURVMgKTsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9wZXJzb25hbCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBwZXJzb25hbFtCTEFLRTJTX1BFUlNPTkFMQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5wZXJzb25hbCwgcGVyc29uYWwsIEJMQUtFMlNfUEVSU09OQUxCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaW5pdDAoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpbnQgaTsKKyAgbWVtc2V0KCBTLCAwLCBzaXplb2YoIGJsYWtlMnNfc3RhdGUgKSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSBTLT5oW2ldID0gYmxha2Uyc19JVltpXTsKKworICByZXR1cm4gMDsKK30KKworLyogaW5pdDIgeG9ycyBJViB3aXRoIGlucHV0IHBhcmFtZXRlciBibG9jayAqLworaW50IGJsYWtlMnNfaW5pdF9wYXJhbSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgYmxha2Uyc19wYXJhbSAqUCApCit7CisgIGNvbnN0IHVpbnQzMl90ICpwID0gKCBjb25zdCB1aW50MzJfdCAqICkoIFAgKTsKKyAgc2l6ZV90IGk7CisKKyAgYmxha2Uyc19pbml0MCggUyApOworCisgIC8qIElWIFhPUiBQYXJhbUJsb2NrICovCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIFMtPmhbaV0gXj0gbG9hZDMyKCAmcFtpXSApOworCisgIHJldHVybiAwOworfQorCisKKy8qIFNlcXVlbnRpYWwgYmxha2UycyBpbml0aWFsaXphdGlvbiAqLworaW50IGJsYWtlMnNfaW5pdCggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBvdXRsZW4gKQoreworICBibGFrZTJzX3BhcmFtIFBbMV07CisKKyAgLyogTW92ZSBpbnRlcnZhbCB2ZXJpZmljYXRpb24gaGVyZT8gKi8KKyAgaWYgKCAoICFvdXRsZW4gKSB8fCAoIG91dGxlbiA+IEJMQUtFMlNfT1VUQllURVMgKSApIHJldHVybiAtMTsKKworICBQLT5kaWdlc3RfbGVuZ3RoID0gb3V0bGVuOworICBQLT5rZXlfbGVuZ3RoICAgID0gMDsKKyAgUC0+ZmFub3V0ICAgICAgICA9IDE7CisgIFAtPmRlcHRoICAgICAgICAgPSAxOworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIDAgKTsKKyAgc3RvcmU0OCggJlAtPm5vZGVfb2Zmc2V0LCAwICk7CisgIFAtPm5vZGVfZGVwdGggICAgPSAwOworICBQLT5pbm5lcl9sZW5ndGggID0gMDsKKyAgLyogbWVtc2V0KFAtPnJlc2VydmVkLCAwLCBzaXplb2YoUC0+cmVzZXJ2ZWQpICk7ICovCisgIG1lbXNldCggUC0+c2FsdCwgICAgIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworICByZXR1cm4gYmxha2Uyc19pbml0X3BhcmFtKCBTLCBQICk7Cit9CisKK2ludCBibGFrZTJzX2luaXRfa2V5KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApCit7CisgIGJsYWtlMnNfcGFyYW0gUFsxXTsKKworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApICkgcmV0dXJuIC0xOworCisgIGlmICggIWtleSB8fCAha2V5bGVuIHx8IGtleWxlbiA+IEJMQUtFMlNfS0VZQllURVMgKSByZXR1cm4gLTE7CisKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IG91dGxlbjsKKyAgUC0+a2V5X2xlbmd0aCAgICA9IGtleWxlbjsKKyAgUC0+ZmFub3V0ICAgICAgICA9IDE7CisgIFAtPmRlcHRoICAgICAgICAgPSAxOworICBzdG9yZTMyKCAmUC0+bGVhZl9sZW5ndGgsIDAgKTsKKyAgc3RvcmU0OCggJlAtPm5vZGVfb2Zmc2V0LCAwICk7CisgIFAtPm5vZGVfZGVwdGggICAgPSAwOworICBQLT5pbm5lcl9sZW5ndGggID0gMDsKKyAgLyogbWVtc2V0KFAtPnJlc2VydmVkLCAwLCBzaXplb2YoUC0+cmVzZXJ2ZWQpICk7ICovCisgIG1lbXNldCggUC0+c2FsdCwgICAgIDAsIHNpemVvZiggUC0+c2FsdCApICk7CisgIG1lbXNldCggUC0+cGVyc29uYWwsIDAsIHNpemVvZiggUC0+cGVyc29uYWwgKSApOworCisgIGlmKCBibGFrZTJzX2luaXRfcGFyYW0oIFMsIFAgKSA8IDAgKSByZXR1cm4gLTE7CisKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworICAgIGJsYWtlMnNfdXBkYXRlKCBTLCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7IC8qIEJ1cm4gdGhlIGtleSBmcm9tIHN0YWNrICovCisgIH0KKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYmxha2Uyc19jb21wcmVzcyggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCBibG9ja1tCTEFLRTJTX0JMT0NLQllURVNdICkKK3sKKyAgdWludDMyX3QgbVsxNl07CisgIHVpbnQzMl90IHZbMTZdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgMTY7ICsraSApCisgICAgbVtpXSA9IGxvYWQzMiggYmxvY2sgKyBpICogc2l6ZW9mKCBtW2ldICkgKTsKKworICBmb3IoIGkgPSAwOyBpIDwgODsgKytpICkKKyAgICB2W2ldID0gUy0+aFtpXTsKKworICB2WyA4XSA9IGJsYWtlMnNfSVZbMF07CisgIHZbIDldID0gYmxha2Uyc19JVlsxXTsKKyAgdlsxMF0gPSBibGFrZTJzX0lWWzJdOworICB2WzExXSA9IGJsYWtlMnNfSVZbM107CisgIHZbMTJdID0gUy0+dFswXSBeIGJsYWtlMnNfSVZbNF07CisgIHZbMTNdID0gUy0+dFsxXSBeIGJsYWtlMnNfSVZbNV07CisgIHZbMTRdID0gUy0+ZlswXSBeIGJsYWtlMnNfSVZbNl07CisgIHZbMTVdID0gUy0+ZlsxXSBeIGJsYWtlMnNfSVZbN107CisjZGVmaW5lIEcocixpLGEsYixjLGQpIFwKKyAgZG8geyBcCisgICAgYSA9IGEgKyBiICsgbVtibGFrZTJzX3NpZ21hW3JdWzIqaSswXV07IFwKKyAgICBkID0gcm90cjMyKGQgXiBhLCAxNik7IFwKKyAgICBjID0gYyArIGQ7IFwKKyAgICBiID0gcm90cjMyKGIgXiBjLCAxMik7IFwKKyAgICBhID0gYSArIGIgKyBtW2JsYWtlMnNfc2lnbWFbcl1bMippKzFdXTsgXAorICAgIGQgPSByb3RyMzIoZCBeIGEsIDgpOyBcCisgICAgYyA9IGMgKyBkOyBcCisgICAgYiA9IHJvdHIzMihiIF4gYywgNyk7IFwKKyAgfSB3aGlsZSgwKQorI2RlZmluZSBST1VORChyKSAgXAorICBkbyB7IFwKKyAgICBHKHIsMCx2WyAwXSx2WyA0XSx2WyA4XSx2WzEyXSk7IFwKKyAgICBHKHIsMSx2WyAxXSx2WyA1XSx2WyA5XSx2WzEzXSk7IFwKKyAgICBHKHIsMix2WyAyXSx2WyA2XSx2WzEwXSx2WzE0XSk7IFwKKyAgICBHKHIsMyx2WyAzXSx2WyA3XSx2WzExXSx2WzE1XSk7IFwKKyAgICBHKHIsNCx2WyAwXSx2WyA1XSx2WzEwXSx2WzE1XSk7IFwKKyAgICBHKHIsNSx2WyAxXSx2WyA2XSx2WzExXSx2WzEyXSk7IFwKKyAgICBHKHIsNix2WyAyXSx2WyA3XSx2WyA4XSx2WzEzXSk7IFwKKyAgICBHKHIsNyx2WyAzXSx2WyA0XSx2WyA5XSx2WzE0XSk7IFwKKyAgfSB3aGlsZSgwKQorICBST1VORCggMCApOworICBST1VORCggMSApOworICBST1VORCggMiApOworICBST1VORCggMyApOworICBST1VORCggNCApOworICBST1VORCggNSApOworICBST1VORCggNiApOworICBST1VORCggNyApOworICBST1VORCggOCApOworICBST1VORCggOSApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKQorICAgIFMtPmhbaV0gPSBTLT5oW2ldIF4gdltpXSBeIHZbaSArIDhdOworCisjdW5kZWYgRworI3VuZGVmIFJPVU5ECisgIHJldHVybiAwOworfQorCisKK2ludCBibGFrZTJzX3VwZGF0ZSggYmxha2Uyc19zdGF0ZSAqUywgY29uc3QgdWludDhfdCAqaW4sIHVpbnQ2NF90IGlubGVuICkKK3sKKyAgd2hpbGUoIGlubGVuID4gMCApCisgIHsKKyAgICBzaXplX3QgbGVmdCA9IFMtPmJ1ZmxlbjsKKyAgICBzaXplX3QgZmlsbCA9IDIgKiBCTEFLRTJTX0JMT0NLQllURVMgLSBsZWZ0OworCisgICAgaWYoIGlubGVuID4gZmlsbCApCisgICAgeworICAgICAgbWVtY3B5KCBTLT5idWYgKyBsZWZ0LCBpbiwgZmlsbCApOyAvKiBGaWxsIGJ1ZmZlciAqLworICAgICAgUy0+YnVmbGVuICs9IGZpbGw7CisgICAgICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICAgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOyAvKiBDb21wcmVzcyAqLworICAgICAgbWVtY3B5KCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMlNfQkxPQ0tCWVRFUywgQkxBS0UyU19CTE9DS0JZVEVTICk7IC8qIFNoaWZ0IGJ1ZmZlciBsZWZ0ICovCisgICAgICBTLT5idWZsZW4gLT0gQkxBS0UyU19CTE9DS0JZVEVTOworICAgICAgaW4gKz0gZmlsbDsKKyAgICAgIGlubGVuIC09IGZpbGw7CisgICAgfQorICAgIGVsc2UgLyogaW5sZW4gPD0gZmlsbCAqLworICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIChzaXplX3QpaW5sZW4gKTsKKyAgICAgIFMtPmJ1ZmxlbiArPSAoc2l6ZV90KWlubGVuOyAvKiBCZSBsYXp5LCBkbyBub3QgY29tcHJlc3MgKi8KKyAgICAgIGluICs9IGlubGVuOworICAgICAgaW5sZW4gLT0gaW5sZW47CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKK2ludCBibGFrZTJzX2ZpbmFsKCBibGFrZTJzX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgdWludDhfdCBidWZmZXJbQkxBS0UyU19PVVRCWVRFU10gPSB7MH07CisgIGludCBpOworCisgIGlmKCBvdXQgPT0gTlVMTCB8fCBvdXRsZW4gPT0gMCB8fCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMnNfaXNfbGFzdGJsb2NrKCBTICkgKQorICAgIHJldHVybiAtMTsKKworCisgIGlmKCBTLT5idWZsZW4gPiBCTEFLRTJTX0JMT0NLQllURVMgKQorICB7CisgICAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7CisgICAgUy0+YnVmbGVuIC09IEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICBtZW1tb3ZlKCBTLT5idWYsIFMtPmJ1ZiArIEJMQUtFMlNfQkxPQ0tCWVRFUywgUy0+YnVmbGVuICk7CisgIH0KKworICBibGFrZTJzX2luY3JlbWVudF9jb3VudGVyKCBTLCAoIHVpbnQzMl90IClTLT5idWZsZW4gKTsKKyAgYmxha2Uyc19zZXRfbGFzdGJsb2NrKCBTICk7CisgIG1lbXNldCggUy0+YnVmICsgUy0+YnVmbGVuLCAwLCAyICogQkxBS0UyU19CTE9DS0JZVEVTIC0gUy0+YnVmbGVuICk7IC8qIFBhZGRpbmcgKi8KKyAgYmxha2Uyc19jb21wcmVzcyggUywgUy0+YnVmICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIC8qIE91dHB1dCBmdWxsIGhhc2ggdG8gdGVtcCBidWZmZXIgKi8KKyAgICBzdG9yZTMyKCBidWZmZXIgKyBzaXplb2YoIFMtPmhbaV0gKSAqIGksIFMtPmhbaV0gKTsKKyAgICAKKyAgbWVtY3B5KCBvdXQsIGJ1ZmZlciwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCitpbnQgYmxha2UycyggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2Uyc19zdGF0ZSBTWzFdOworCisgIC8qIFZlcmlmeSBwYXJhbWV0ZXJzICovCisgIGlmICggTlVMTCA9PSBpbiAmJiBpbmxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IG91dCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0ga2V5ICYmIGtleWxlbiA+IDApIHJldHVybiAtMTsKKworICBpZiggIW91dGxlbiB8fCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiBCTEFLRTJTX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiAwICkKKyAgeworICAgIGlmKCBibGFrZTJzX2luaXRfa2V5KCBTLCBvdXRsZW4sIGtleSwga2V5bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKCBibGFrZTJzX2luaXQoIFMsIG91dGxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorCisgIGJsYWtlMnNfdXBkYXRlKCBTLCAoIGNvbnN0IHVpbnQ4X3QgKiApaW4sIGlubGVuICk7CisgIGJsYWtlMnNfZmluYWwoIFMsIG91dCwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChTVVBFUkNPUCkKK2ludCBjcnlwdG9faGFzaCggdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBsb25nIGlubGVuICkKK3sKKyAgcmV0dXJuIGJsYWtlMnMoIG91dCwgaW4sIE5VTEwsIEJMQUtFMlNfT1VUQllURVMsIGlubGVuLCAwICk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoQkxBS0UyU19TRUxGVEVTVCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJibGFrZTIta2F0LmgiCitpbnQgbWFpbiggaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK3sKKyAgdWludDhfdCBrZXlbQkxBS0UyU19LRVlCWVRFU107CisgIHVpbnQ4X3QgYnVmW0tBVF9MRU5HVEhdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyU19LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgICAgYnVmW2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMlNfT1VUQllURVNdOworICAgIGJsYWtlMnMoIGhhc2gsIGJ1Ziwga2V5LCBCTEFLRTJTX09VVEJZVEVTLCBpLCBCTEFLRTJTX0tFWUJZVEVTICk7CisKKyAgICBpZiggMCAhPSBtZW1jbXAoIGhhc2gsIGJsYWtlMnNfa2V5ZWRfa2F0W2ldLCBCTEFLRTJTX09VVEJZVEVTICkgKQorICAgIHsKKyAgICAgIHB1dHMoICJlcnJvciIgKTsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgIH0KKworICBwdXRzKCAib2siICk7CisgIHJldHVybiAwOworfQorI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yb3VuZC5oIGIvTW9kdWxlcy9fYmxha2UyL2ltcGwvYmxha2Uycy1yb3VuZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0NzBkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLXJvdW5kLmgKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworI3ByYWdtYSBvbmNlCisjaWZuZGVmIF9fQkxBS0UyU19ST1VORF9IX18KKyNkZWZpbmUgX19CTEFLRTJTX1JPVU5EX0hfXworCisjZGVmaW5lIExPQURVKHApICBfbW1fbG9hZHVfc2kxMjgoIChjb25zdCBfX20xMjhpICopKHApICkKKyNkZWZpbmUgU1RPUkVVKHAscikgX21tX3N0b3JldV9zaTEyOCgoX19tMTI4aSAqKShwKSwgcikKKworI2RlZmluZSBUT0YocmVnKSBfbW1fY2FzdHNpMTI4X3BzKChyZWcpKQorI2RlZmluZSBUT0kocmVnKSBfbW1fY2FzdHBzX3NpMTI4KChyZWcpKQorCisjZGVmaW5lIExJS0VMWSh4KSBfX2J1aWx0aW5fZXhwZWN0KCh4KSwxKQorCisKKy8qIE1pY3JvYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG1hY3JvcyAqLworI2lmbmRlZiBIQVZFX1hPUAorI2lmZGVmIEhBVkVfU1NTRTMKKyNkZWZpbmUgX21tX3JvdGlfZXBpMzIociwgYykgKCBcCisgICAgICAgICAgICAgICAgKDg9PS0oYykpID8gX21tX3NodWZmbGVfZXBpOChyLHI4KSBcCisgICAgICAgICAgICAgIDogKDE2PT0tKGMpKSA/IF9tbV9zaHVmZmxlX2VwaTgocixyMTYpIFwKKyAgICAgICAgICAgICAgOiBfbW1feG9yX3NpMTI4KF9tbV9zcmxpX2VwaTMyKCAociksIC0oYykgKSxfbW1fc2xsaV9lcGkzMiggKHIpLCAzMi0oLShjKSkgKSkgKQorI2Vsc2UKKyNkZWZpbmUgX21tX3JvdGlfZXBpMzIociwgYykgX21tX3hvcl9zaTEyOChfbW1fc3JsaV9lcGkzMiggKHIpLCAtKGMpICksX21tX3NsbGlfZXBpMzIoIChyKSwgMzItKC0oYykpICkpCisjZW5kaWYKKyNlbHNlCisvKiAuLi4gKi8KKyNlbmRpZgorCisKKyNkZWZpbmUgRzEocm93MSxyb3cyLHJvdzMscm93NCxidWYpIFwKKyAgcm93MSA9IF9tbV9hZGRfZXBpMzIoIF9tbV9hZGRfZXBpMzIoIHJvdzEsIGJ1ZiksIHJvdzIgKTsgXAorICByb3c0ID0gX21tX3hvcl9zaTEyOCggcm93NCwgcm93MSApOyBcCisgIHJvdzQgPSBfbW1fcm90aV9lcGkzMihyb3c0LCAtMTYpOyBcCisgIHJvdzMgPSBfbW1fYWRkX2VwaTMyKCByb3czLCByb3c0ICk7ICAgXAorICByb3cyID0gX21tX3hvcl9zaTEyOCggcm93Miwgcm93MyApOyBcCisgIHJvdzIgPSBfbW1fcm90aV9lcGkzMihyb3cyLCAtMTIpOworCisjZGVmaW5lIEcyKHJvdzEscm93Mixyb3czLHJvdzQsYnVmKSBcCisgIHJvdzEgPSBfbW1fYWRkX2VwaTMyKCBfbW1fYWRkX2VwaTMyKCByb3cxLCBidWYpLCByb3cyICk7IFwKKyAgcm93NCA9IF9tbV94b3Jfc2kxMjgoIHJvdzQsIHJvdzEgKTsgXAorICByb3c0ID0gX21tX3JvdGlfZXBpMzIocm93NCwgLTgpOyBcCisgIHJvdzMgPSBfbW1fYWRkX2VwaTMyKCByb3czLCByb3c0ICk7ICAgXAorICByb3cyID0gX21tX3hvcl9zaTEyOCggcm93Miwgcm93MyApOyBcCisgIHJvdzIgPSBfbW1fcm90aV9lcGkzMihyb3cyLCAtNyk7CisKKyNkZWZpbmUgRElBR09OQUxJWkUocm93MSxyb3cyLHJvdzMscm93NCkgXAorICByb3c0ID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzQsIF9NTV9TSFVGRkxFKDIsMSwwLDMpICk7IFwKKyAgcm93MyA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3czLCBfTU1fU0hVRkZMRSgxLDAsMywyKSApOyBcCisgIHJvdzIgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93MiwgX01NX1NIVUZGTEUoMCwzLDIsMSkgKTsKKworI2RlZmluZSBVTkRJQUdPTkFMSVpFKHJvdzEscm93Mixyb3czLHJvdzQpIFwKKyAgcm93NCA9IF9tbV9zaHVmZmxlX2VwaTMyKCByb3c0LCBfTU1fU0hVRkZMRSgwLDMsMiwxKSApOyBcCisgIHJvdzMgPSBfbW1fc2h1ZmZsZV9lcGkzMiggcm93MywgX01NX1NIVUZGTEUoMSwwLDMsMikgKTsgXAorICByb3cyID0gX21tX3NodWZmbGVfZXBpMzIoIHJvdzIsIF9NTV9TSFVGRkxFKDIsMSwwLDMpICk7CisKKyNpZiBkZWZpbmVkKEhBVkVfWE9QKQorI2luY2x1ZGUgImJsYWtlMnMtbG9hZC14b3AuaCIKKyNlbGlmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyNpbmNsdWRlICJibGFrZTJzLWxvYWQtc3NlNDEuaCIKKyNlbHNlCisjaW5jbHVkZSAiYmxha2Uycy1sb2FkLXNzZTIuaCIKKyNlbmRpZgorCisjZGVmaW5lIFJPVU5EKHIpICBcCisgIExPQURfTVNHXyAjI3IgIyNfMShidWYxKTsgXAorICBHMShyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZjEpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfMihidWYyKTsgXAorICBHMihyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZjIpOyBcCisgIERJQUdPTkFMSVpFKHJvdzEscm93Mixyb3czLHJvdzQpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfMyhidWYzKTsgXAorICBHMShyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZjMpOyBcCisgIExPQURfTVNHXyAjI3IgIyNfNChidWY0KTsgXAorICBHMihyb3cxLHJvdzIscm93Myxyb3c0LGJ1ZjQpOyBcCisgIFVORElBR09OQUxJWkUocm93MSxyb3cyLHJvdzMscm93NCk7IFwKKyAKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLmMgYi9Nb2R1bGVzL19ibGFrZTIvaW1wbC9ibGFrZTJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzODVkYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9pbXBsL2JsYWtlMnMuYwpAQCAtMCwwICsxLDQzNSBAQAorLyoKKyAgIEJMQUtFMiByZWZlcmVuY2Ugc291cmNlIGNvZGUgcGFja2FnZSAtIG9wdGltaXplZCBDIGltcGxlbWVudGF0aW9ucworICAKKyAgIENvcHlyaWdodCAyMDEyLCBTYW11ZWwgTmV2ZXMgPHNuZXZlc0BkZWkudWMucHQ+LiAgWW91IG1heSB1c2UgdGhpcyB1bmRlciB0aGUKKyAgIHRlcm1zIG9mIHRoZSBDQzAsIHRoZSBPcGVuU1NMIExpY2VuY2UsIG9yIHRoZSBBcGFjaGUgUHVibGljIExpY2Vuc2UgMi4wLCBhdAorICAgeW91ciBvcHRpb24uICBUaGUgdGVybXMgb2YgdGhlc2UgbGljZW5zZXMgY2FuIGJlIGZvdW5kIGF0OgorICAKKyAgIC0gQ0MwIDEuMCBVbml2ZXJzYWwgOiBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAKKyAgIC0gT3BlblNTTCBsaWNlbnNlICAgOiBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisgICAtIEFwYWNoZSAyLjAgICAgICAgIDogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQkxBS0UyIGhhc2ggZnVuY3Rpb24gY2FuIGJlIGZvdW5kIGF0CisgICBodHRwczovL2JsYWtlMi5uZXQuCisqLworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworI2luY2x1ZGUgImJsYWtlMi5oIgorI2luY2x1ZGUgImJsYWtlMi1pbXBsLmgiCisKKyNpbmNsdWRlICJibGFrZTItY29uZmlnLmgiCisKKworI2luY2x1ZGUgPGVtbWludHJpbi5oPgorI2lmIGRlZmluZWQoSEFWRV9TU1NFMykKKyNpbmNsdWRlIDx0bW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyNpbmNsdWRlIDxzbW1pbnRyaW4uaD4KKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9BVlgpCisjaW5jbHVkZSA8aW1taW50cmluLmg+CisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfWE9QKQorI2luY2x1ZGUgPHg4NmludHJpbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlICJibGFrZTJzLXJvdW5kLmgiCisKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBibGFrZTJzX0lWWzhdID0KK3sKKyAgMHg2QTA5RTY2N1VMLCAweEJCNjdBRTg1VUwsIDB4M0M2RUYzNzJVTCwgMHhBNTRGRjUzQVVMLAorICAweDUxMEU1MjdGVUwsIDB4OUIwNTY4OENVTCwgMHgxRjgzRDlBQlVMLCAweDVCRTBDRDE5VUwKK307CisKK3N0YXRpYyBjb25zdCB1aW50OF90IGJsYWtlMnNfc2lnbWFbMTBdWzE2XSA9Cit7CisgIHsgIDAsICAxLCAgMiwgIDMsICA0LCAgNSwgIDYsICA3LCAgOCwgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUgfSAsCisgIHsgMTQsIDEwLCAgNCwgIDgsICA5LCAxNSwgMTMsICA2LCAgMSwgMTIsICAwLCAgMiwgMTEsICA3LCAgNSwgIDMgfSAsCisgIHsgMTEsICA4LCAxMiwgIDAsICA1LCAgMiwgMTUsIDEzLCAxMCwgMTQsICAzLCAgNiwgIDcsICAxLCAgOSwgIDQgfSAsCisgIHsgIDcsICA5LCAgMywgIDEsIDEzLCAxMiwgMTEsIDE0LCAgMiwgIDYsICA1LCAxMCwgIDQsICAwLCAxNSwgIDggfSAsCisgIHsgIDksICAwLCAgNSwgIDcsICAyLCAgNCwgMTAsIDE1LCAxNCwgIDEsIDExLCAxMiwgIDYsICA4LCAgMywgMTMgfSAsCisgIHsgIDIsIDEyLCAgNiwgMTAsICAwLCAxMSwgIDgsICAzLCAgNCwgMTMsICA3LCAgNSwgMTUsIDE0LCAgMSwgIDkgfSAsCisgIHsgMTIsICA1LCAgMSwgMTUsIDE0LCAxMywgIDQsIDEwLCAgMCwgIDcsICA2LCAgMywgIDksICAyLCAgOCwgMTEgfSAsCisgIHsgMTMsIDExLCAgNywgMTQsIDEyLCAgMSwgIDMsICA5LCAgNSwgIDAsIDE1LCAgNCwgIDgsICA2LCAgMiwgMTAgfSAsCisgIHsgIDYsIDE1LCAxNCwgIDksIDExLCAgMywgIDAsICA4LCAxMiwgIDIsIDEzLCAgNywgIDEsICA0LCAxMCwgIDUgfSAsCisgIHsgMTAsICAyLCAgOCwgIDQsICA3LCAgNiwgIDEsICA1LCAxNSwgMTEsICA5LCAxNCwgIDMsIDEyLCAxMyAsIDAgfSAsCit9OworCisKKy8qIFNvbWUgaGVscGVyIGZ1bmN0aW9ucywgbm90IG5lY2Vzc2FyaWx5IHVzZWZ1bCAqLworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfc2V0X2xhc3Rub2RlKCBibGFrZTJzX3N0YXRlICpTICkKK3sKKyAgUy0+ZlsxXSA9IC0xOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY2xlYXJfbGFzdG5vZGUoIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBTLT5mWzFdID0gMDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX2lzX2xhc3RibG9jayggY29uc3QgYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIHJldHVybiBTLT5mWzBdICE9IDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3NldF9sYXN0YmxvY2soIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2Uyc19zZXRfbGFzdG5vZGUoIFMgKTsKKworICBTLT5mWzBdID0gLTE7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19jbGVhcl9sYXN0YmxvY2soIGJsYWtlMnNfc3RhdGUgKlMgKQoreworICBpZiggUy0+bGFzdF9ub2RlICkgYmxha2Uyc19jbGVhcl9sYXN0bm9kZSggUyApOworCisgIFMtPmZbMF0gPSAwOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQzMl90IGluYyApCit7CisgIHVpbnQ2NF90IHQgPSAoICggdWludDY0X3QgKVMtPnRbMV0gPDwgMzIgKSB8IFMtPnRbMF07CisgIHQgKz0gaW5jOworICBTLT50WzBdID0gKCB1aW50MzJfdCApKCB0ID4+ICAwICk7CisgIFMtPnRbMV0gPSAoIHVpbnQzMl90ICkoIHQgPj4gMzIgKTsKKyAgcmV0dXJuIDA7Cit9CisKKworLyogUGFyYW1ldGVyLXJlbGF0ZWQgZnVuY3Rpb25zICovCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfZGlnZXN0X2xlbmd0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBkaWdlc3RfbGVuZ3RoICkKK3sKKyAgUC0+ZGlnZXN0X2xlbmd0aCA9IGRpZ2VzdF9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfZmFub3V0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGZhbm91dCApCit7CisgIFAtPmZhbm91dCA9IGZhbm91dDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9tYXhfZGVwdGgoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ4X3QgZGVwdGggKQoreworICBQLT5kZXB0aCA9IGRlcHRoOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X2xlYWZfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50MzJfdCBsZWFmX2xlbmd0aCApCit7CisgIFAtPmxlYWZfbGVuZ3RoID0gbGVhZl9sZW5ndGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbm9kZV9vZmZzZXQoIGJsYWtlMnNfcGFyYW0gKlAsIGNvbnN0IHVpbnQ2NF90IG5vZGVfb2Zmc2V0ICkKK3sKKyAgc3RvcmU0OCggUC0+bm9kZV9vZmZzZXQsIG5vZGVfb2Zmc2V0ICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfbm9kZV9kZXB0aCggYmxha2Uyc19wYXJhbSAqUCwgY29uc3QgdWludDhfdCBub2RlX2RlcHRoICkKK3sKKyAgUC0+bm9kZV9kZXB0aCA9IG5vZGVfZGVwdGg7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19wYXJhbV9zZXRfaW5uZXJfbGVuZ3RoKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IGlubmVyX2xlbmd0aCApCit7CisgIFAtPmlubmVyX2xlbmd0aCA9IGlubmVyX2xlbmd0aDsKKyAgcmV0dXJuIDA7Cit9CisKK0JMQUtFMl9MT0NBTF9JTkxJTkUoaW50KSBibGFrZTJzX3BhcmFtX3NldF9zYWx0KCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHNhbHRbQkxBS0UyU19TQUxUQllURVNdICkKK3sKKyAgbWVtY3B5KCBQLT5zYWx0LCBzYWx0LCBCTEFLRTJTX1NBTFRCWVRFUyApOworICByZXR1cm4gMDsKK30KKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfcGFyYW1fc2V0X3BlcnNvbmFsKCBibGFrZTJzX3BhcmFtICpQLCBjb25zdCB1aW50OF90IHBlcnNvbmFsW0JMQUtFMlNfUEVSU09OQUxCWVRFU10gKQoreworICBtZW1jcHkoIFAtPnBlcnNvbmFsLCBwZXJzb25hbCwgQkxBS0UyU19QRVJTT05BTEJZVEVTICk7CisgIHJldHVybiAwOworfQorCitCTEFLRTJfTE9DQUxfSU5MSU5FKGludCkgYmxha2Uyc19pbml0MCggYmxha2Uyc19zdGF0ZSAqUyApCit7CisgIGludCBpOworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2Uyc19zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IDg7ICsraSApIFMtPmhbaV0gPSBibGFrZTJzX0lWW2ldOworCisgIHJldHVybiAwOworfQorCisvKiBpbml0MiB4b3JzIElWIHdpdGggaW5wdXQgcGFyYW1ldGVyIGJsb2NrICovCitpbnQgYmxha2Uyc19pbml0X3BhcmFtKCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCBibGFrZTJzX3BhcmFtICpQICkKK3sKKyAgLypibGFrZTJzX2luaXQwKCBTICk7ICovCisgIGNvbnN0IHVpbnQ4X3QgKiB2ID0gKCBjb25zdCB1aW50OF90ICogKSggYmxha2Uyc19JViApOworICBjb25zdCB1aW50OF90ICogcCA9ICggY29uc3QgdWludDhfdCAqICkoIFAgKTsKKyAgdWludDhfdCAqIGggPSAoIHVpbnQ4X3QgKiApKCBTLT5oICk7CisgIGludCBpOworICAvKiBJViBYT1IgUGFyYW1CbG9jayAqLworICBtZW1zZXQoIFMsIDAsIHNpemVvZiggYmxha2Uyc19zdGF0ZSApICk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEJMQUtFMlNfT1VUQllURVM7ICsraSApIGhbaV0gPSB2W2ldIF4gcFtpXTsKKworICByZXR1cm4gMDsKK30KKworCisvKiBTb21lIHNvcnQgb2YgZGVmYXVsdCBwYXJhbWV0ZXIgYmxvY2sgaW5pdGlhbGl6YXRpb24sIGZvciBzZXF1ZW50aWFsIGJsYWtlMnMgKi8KK2ludCBibGFrZTJzX2luaXQoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgY29uc3QgYmxha2Uyc19wYXJhbSBQID0KKyAgeworICAgIG91dGxlbiwKKyAgICAwLAorICAgIDEsCisgICAgMSwKKyAgICAwLAorICAgIHswfSwKKyAgICAwLAorICAgIDAsCisgICAgezB9LAorICAgIHswfQorICB9OworICAvKiBNb3ZlIGludGVydmFsIHZlcmlmaWNhdGlvbiBoZXJlPyAqLworICBpZiAoICggIW91dGxlbiApIHx8ICggb3V0bGVuID4gQkxBS0UyU19PVVRCWVRFUyApICkgcmV0dXJuIC0xOworICByZXR1cm4gYmxha2Uyc19pbml0X3BhcmFtKCBTLCAmUCApOworfQorCisKK2ludCBibGFrZTJzX2luaXRfa2V5KCBibGFrZTJzX3N0YXRlICpTLCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IGtleWxlbiApCit7CisgIGNvbnN0IGJsYWtlMnNfcGFyYW0gUCA9CisgIHsKKyAgICBvdXRsZW4sCisgICAga2V5bGVuLAorICAgIDEsCisgICAgMSwKKyAgICAwLAorICAgIHswfSwKKyAgICAwLAorICAgIDAsCisgICAgezB9LAorICAgIHswfQorICB9OworCisgIC8qIE1vdmUgaW50ZXJ2YWwgdmVyaWZpY2F0aW9uIGhlcmU/ICovCisgIGlmICggKCAhb3V0bGVuICkgfHwgKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgKSByZXR1cm4gLTE7CisKKyAgaWYgKCAoICFrZXkgKSB8fCAoICFrZXlsZW4gKSB8fCBrZXlsZW4gPiBCTEFLRTJTX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBibGFrZTJzX2luaXRfcGFyYW0oIFMsICZQICkgPCAwICkKKyAgICByZXR1cm4gLTE7CisKKyAgeworICAgIHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXTsKKyAgICBtZW1zZXQoIGJsb2NrLCAwLCBCTEFLRTJTX0JMT0NLQllURVMgKTsKKyAgICBtZW1jcHkoIGJsb2NrLCBrZXksIGtleWxlbiApOworICAgIGJsYWtlMnNfdXBkYXRlKCBTLCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgc2VjdXJlX3plcm9fbWVtb3J5KCBibG9jaywgQkxBS0UyU19CTE9DS0JZVEVTICk7IC8qIEJ1cm4gdGhlIGtleSBmcm9tIHN0YWNrICovCisgIH0KKyAgcmV0dXJuIDA7Cit9CisKKworQkxBS0UyX0xPQ0FMX0lOTElORShpbnQpIGJsYWtlMnNfY29tcHJlc3MoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgYmxvY2tbQkxBS0UyU19CTE9DS0JZVEVTXSApCit7CisgIF9fbTEyOGkgcm93MSwgcm93Miwgcm93Mywgcm93NDsKKyAgX19tMTI4aSBidWYxLCBidWYyLCBidWYzLCBidWY0OworI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyAgX19tMTI4aSB0MCwgdDE7CisjaWYgIWRlZmluZWQoSEFWRV9YT1ApCisgIF9fbTEyOGkgdDI7CisjZW5kaWYKKyNlbmRpZgorICBfX20xMjhpIGZmMCwgZmYxOworI2lmIGRlZmluZWQoSEFWRV9TU1NFMykgJiYgIWRlZmluZWQoSEFWRV9YT1ApCisgIGNvbnN0IF9fbTEyOGkgcjggPSBfbW1fc2V0X2VwaTgoIDEyLCAxNSwgMTQsIDEzLCA4LCAxMSwgMTAsIDksIDQsIDcsIDYsIDUsIDAsIDMsIDIsIDEgKTsKKyAgY29uc3QgX19tMTI4aSByMTYgPSBfbW1fc2V0X2VwaTgoIDEzLCAxMiwgMTUsIDE0LCA5LCA4LCAxMSwgMTAsIDUsIDQsIDcsIDYsIDEsIDAsIDMsIDIgKTsKKyNlbmRpZgorI2lmIGRlZmluZWQoSEFWRV9TU0U0MSkKKyAgY29uc3QgX19tMTI4aSBtMCA9IExPQURVKCBibG9jayArICAwMCApOworICBjb25zdCBfX20xMjhpIG0xID0gTE9BRFUoIGJsb2NrICsgIDE2ICk7CisgIGNvbnN0IF9fbTEyOGkgbTIgPSBMT0FEVSggYmxvY2sgKyAgMzIgKTsKKyAgY29uc3QgX19tMTI4aSBtMyA9IExPQURVKCBibG9jayArICA0OCApOworI2Vsc2UKKyAgY29uc3QgdWludDMyX3QgIG0wID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDBdOworICBjb25zdCB1aW50MzJfdCAgbTEgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgMV07CisgIGNvbnN0IHVpbnQzMl90ICBtMiA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyAyXTsKKyAgY29uc3QgdWludDMyX3QgIG0zID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDNdOworICBjb25zdCB1aW50MzJfdCAgbTQgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgNF07CisgIGNvbnN0IHVpbnQzMl90ICBtNSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA1XTsKKyAgY29uc3QgdWludDMyX3QgIG02ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDZdOworICBjb25zdCB1aW50MzJfdCAgbTcgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsgN107CisgIGNvbnN0IHVpbnQzMl90ICBtOCA9ICggKCB1aW50MzJfdCAqIClibG9jayApWyA4XTsKKyAgY29uc3QgdWludDMyX3QgIG05ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbIDldOworICBjb25zdCB1aW50MzJfdCBtMTAgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxMF07CisgIGNvbnN0IHVpbnQzMl90IG0xMSA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzExXTsKKyAgY29uc3QgdWludDMyX3QgbTEyID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTJdOworICBjb25zdCB1aW50MzJfdCBtMTMgPSAoICggdWludDMyX3QgKiApYmxvY2sgKVsxM107CisgIGNvbnN0IHVpbnQzMl90IG0xNCA9ICggKCB1aW50MzJfdCAqIClibG9jayApWzE0XTsKKyAgY29uc3QgdWludDMyX3QgbTE1ID0gKCAoIHVpbnQzMl90ICogKWJsb2NrIClbMTVdOworI2VuZGlmCisgIHJvdzEgPSBmZjAgPSBMT0FEVSggJlMtPmhbMF0gKTsKKyAgcm93MiA9IGZmMSA9IExPQURVKCAmUy0+aFs0XSApOworICByb3czID0gX21tX3NldHJfZXBpMzIoIDB4NkEwOUU2NjcsIDB4QkI2N0FFODUsIDB4M0M2RUYzNzIsIDB4QTU0RkY1M0EgKTsKKyAgcm93NCA9IF9tbV94b3Jfc2kxMjgoIF9tbV9zZXRyX2VwaTMyKCAweDUxMEU1MjdGLCAweDlCMDU2ODhDLCAweDFGODNEOUFCLCAweDVCRTBDRDE5ICksIExPQURVKCAmUy0+dFswXSApICk7CisgIFJPVU5EKCAwICk7CisgIFJPVU5EKCAxICk7CisgIFJPVU5EKCAyICk7CisgIFJPVU5EKCAzICk7CisgIFJPVU5EKCA0ICk7CisgIFJPVU5EKCA1ICk7CisgIFJPVU5EKCA2ICk7CisgIFJPVU5EKCA3ICk7CisgIFJPVU5EKCA4ICk7CisgIFJPVU5EKCA5ICk7CisgIFNUT1JFVSggJlMtPmhbMF0sIF9tbV94b3Jfc2kxMjgoIGZmMCwgX21tX3hvcl9zaTEyOCggcm93MSwgcm93MyApICkgKTsKKyAgU1RPUkVVKCAmUy0+aFs0XSwgX21tX3hvcl9zaTEyOCggZmYxLCBfbW1feG9yX3NpMTI4KCByb3cyLCByb3c0ICkgKSApOworICByZXR1cm4gMDsKK30KKworLyogaW5sZW4gbm93IGluIGJ5dGVzICovCitpbnQgYmxha2Uyc191cGRhdGUoIGJsYWtlMnNfc3RhdGUgKlMsIGNvbnN0IHVpbnQ4X3QgKmluLCB1aW50NjRfdCBpbmxlbiApCit7CisgIHdoaWxlKCBpbmxlbiA+IDAgKQorICB7CisgICAgc2l6ZV90IGxlZnQgPSBTLT5idWZsZW47CisgICAgc2l6ZV90IGZpbGwgPSAyICogQkxBS0UyU19CTE9DS0JZVEVTIC0gbGVmdDsKKworICAgIGlmKCBpbmxlbiA+IGZpbGwgKQorICAgIHsKKyAgICAgIG1lbWNweSggUy0+YnVmICsgbGVmdCwgaW4sIGZpbGwgKTsgLyogRmlsbCBidWZmZXIgKi8KKyAgICAgIFMtPmJ1ZmxlbiArPSBmaWxsOworICAgICAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgQkxBS0UyU19CTE9DS0JZVEVTICk7CisgICAgICBibGFrZTJzX2NvbXByZXNzKCBTLCBTLT5idWYgKTsgLyogQ29tcHJlc3MgKi8KKyAgICAgIG1lbWNweSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJTX0JMT0NLQllURVMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOyAvKiBTaGlmdCBidWZmZXIgbGVmdCAqLworICAgICAgUy0+YnVmbGVuIC09IEJMQUtFMlNfQkxPQ0tCWVRFUzsKKyAgICAgIGluICs9IGZpbGw7CisgICAgICBpbmxlbiAtPSBmaWxsOworICAgIH0KKyAgICBlbHNlIC8qIGlubGVuIDw9IGZpbGwgKi8KKyAgICB7CisgICAgICBtZW1jcHkoIFMtPmJ1ZiArIGxlZnQsIGluLCBpbmxlbiApOworICAgICAgUy0+YnVmbGVuICs9IGlubGVuOyAvKiBCZSBsYXp5LCBkbyBub3QgY29tcHJlc3MgKi8KKyAgICAgIGluICs9IGlubGVuOworICAgICAgaW5sZW4gLT0gaW5sZW47CisgICAgfQorICB9CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIElzIHRoaXMgY29ycmVjdD8gKi8KK2ludCBibGFrZTJzX2ZpbmFsKCBibGFrZTJzX3N0YXRlICpTLCB1aW50OF90ICpvdXQsIHVpbnQ4X3Qgb3V0bGVuICkKK3sKKyAgdWludDhfdCBidWZmZXJbQkxBS0UyU19PVVRCWVRFU10gPSB7MH07CisgIGludCBpOworCisgIGlmKCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkKKyAgICByZXR1cm4gLTE7CisKKyAgaWYoIGJsYWtlMnNfaXNfbGFzdGJsb2NrKCBTICkgKQorICAgIHJldHVybiAtMTsKKworICBpZiggUy0+YnVmbGVuID4gQkxBS0UyU19CTE9DS0JZVEVTICkKKyAgeworICAgIGJsYWtlMnNfaW5jcmVtZW50X2NvdW50ZXIoIFMsIEJMQUtFMlNfQkxPQ0tCWVRFUyApOworICAgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworICAgIFMtPmJ1ZmxlbiAtPSBCTEFLRTJTX0JMT0NLQllURVM7CisgICAgbWVtbW92ZSggUy0+YnVmLCBTLT5idWYgKyBCTEFLRTJTX0JMT0NLQllURVMsIFMtPmJ1ZmxlbiApOworICB9CisKKyAgYmxha2Uyc19pbmNyZW1lbnRfY291bnRlciggUywgKCB1aW50MzJfdCApUy0+YnVmbGVuICk7CisgIGJsYWtlMnNfc2V0X2xhc3RibG9jayggUyApOworICBtZW1zZXQoIFMtPmJ1ZiArIFMtPmJ1ZmxlbiwgMCwgMiAqIEJMQUtFMlNfQkxPQ0tCWVRFUyAtIFMtPmJ1ZmxlbiApOyAvKiBQYWRkaW5nICovCisgIGJsYWtlMnNfY29tcHJlc3MoIFMsIFMtPmJ1ZiApOworCisgIGZvciggaSA9IDA7IGkgPCA4OyArK2kgKSAvKiBPdXRwdXQgZnVsbCBoYXNoIHRvIHRlbXAgYnVmZmVyICovCisgICAgc3RvcmUzMiggYnVmZmVyICsgc2l6ZW9mKCBTLT5oW2ldICkgKiBpLCBTLT5oW2ldICk7CisKKyAgbWVtY3B5KCBvdXQsIGJ1ZmZlciwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisvKiBpbmxlbiwgYXQgbGVhc3QsIHNob3VsZCBiZSB1aW50NjRfdC4gT3RoZXJzIGNhbiBiZSBzaXplX3QuICovCitpbnQgYmxha2UycyggdWludDhfdCAqb3V0LCBjb25zdCB2b2lkICppbiwgY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB1aW50OF90IG91dGxlbiwgY29uc3QgdWludDY0X3QgaW5sZW4sIHVpbnQ4X3Qga2V5bGVuICkKK3sKKyAgYmxha2Uyc19zdGF0ZSBTWzFdOworCisgIC8qIFZlcmlmeSBwYXJhbWV0ZXJzICovCisgIGlmICggTlVMTCA9PSBpbiAmJiBpbmxlbiA+IDAgKSByZXR1cm4gLTE7CisKKyAgaWYgKCBOVUxMID09IG91dCApIHJldHVybiAtMTsKKworICBpZiAoIE5VTEwgPT0ga2V5ICYmIGtleWxlbiA+IDApIHJldHVybiAtMTsKKworICBpZiggIW91dGxlbiB8fCBvdXRsZW4gPiBCTEFLRTJTX09VVEJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiBCTEFLRTJTX0tFWUJZVEVTICkgcmV0dXJuIC0xOworCisgIGlmKCBrZXlsZW4gPiAwICkKKyAgeworICAgIGlmKCBibGFrZTJzX2luaXRfa2V5KCBTLCBvdXRsZW4sIGtleSwga2V5bGVuICkgPCAwICkgcmV0dXJuIC0xOworICB9CisgIGVsc2UKKyAgeworICAgIGlmKCBibGFrZTJzX2luaXQoIFMsIG91dGxlbiApIDwgMCApIHJldHVybiAtMTsKKyAgfQorCisgIGJsYWtlMnNfdXBkYXRlKCBTLCAoIGNvbnN0IHVpbnQ4X3QgKiApaW4sIGlubGVuICk7CisgIGJsYWtlMnNfZmluYWwoIFMsIG91dCwgb3V0bGVuICk7CisgIHJldHVybiAwOworfQorCisjaWYgZGVmaW5lZChTVVBFUkNPUCkKK2ludCBjcnlwdG9faGFzaCggdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBjaGFyICppbiwgdW5zaWduZWQgbG9uZyBsb25nIGlubGVuICkKK3sKKyAgcmV0dXJuIGJsYWtlMnMoIG91dCwgaW4sIE5VTEwsIEJMQUtFMlNfT1VUQllURVMsIGlubGVuLCAwICk7Cit9CisjZW5kaWYKKworI2lmIGRlZmluZWQoQkxBS0UyU19TRUxGVEVTVCkKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJibGFrZTIta2F0LmgiCitpbnQgbWFpbiggaW50IGFyZ2MsIGNoYXIgKiphcmd2ICkKK3sKKyAgdWludDhfdCBrZXlbQkxBS0UyU19LRVlCWVRFU107CisgIHVpbnQ4X3QgYnVmW0tBVF9MRU5HVEhdOworICBzaXplX3QgaTsKKworICBmb3IoIGkgPSAwOyBpIDwgQkxBS0UyU19LRVlCWVRFUzsgKytpICkKKyAgICBrZXlbaV0gPSAoIHVpbnQ4X3QgKWk7CisKKyAgZm9yKCBpID0gMDsgaSA8IEtBVF9MRU5HVEg7ICsraSApCisgICAgYnVmW2ldID0gKCB1aW50OF90IClpOworCisgIGZvciggaSA9IDA7IGkgPCBLQVRfTEVOR1RIOyArK2kgKQorICB7CisgICAgdWludDhfdCBoYXNoW0JMQUtFMlNfT1VUQllURVNdOworCisgICAgaWYoIGJsYWtlMnMoIGhhc2gsIGJ1Ziwga2V5LCBCTEFLRTJTX09VVEJZVEVTLCBpLCBCTEFLRTJTX0tFWUJZVEVTICkgPCAwIHx8CisgICAgICAgIDAgIT0gbWVtY21wKCBoYXNoLCBibGFrZTJzX2tleWVkX2thdFtpXSwgQkxBS0UyU19PVVRCWVRFUyApICkKKyAgICB7CisgICAgICBwdXRzKCAiZXJyb3IiICk7CisgICAgICByZXR1cm4gLTE7CisgICAgfQorICB9CisKKyAgcHV0cyggIm9rIiApOworICByZXR1cm4gMDsKK30KKyNlbmRpZgorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKaW5kZXggNjdlMWI2NS4uNWNlYTQyYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYnoybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKQEAgLTU5NCw3ICs1OTQsNiBAQAogLypbY2xpbmljIGlucHV0XQogX2J6Mi5CWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcwogCi0gICAgc2VsZjogc2VsZih0eXBlPSJCWjJEZWNvbXByZXNzb3IgKiIpCiAgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgbWF4X2xlbmd0aDogUHlfc3NpemVfdD0tMQogCkBAIC02MTcsNyArNjE2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzZTQxMDQ1ZGViMjQwYTMgaW5wdXQ9OTU1OGI0MjRjOGIwMDUxNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzZTQxMDQ1ZGViMjQwYTMgaW5wdXQ9NTJlMWZmYzY2YThlYTYyNF0qLwogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCmluZGV4IDliMTE5NGUuLjU4NmI3M2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvZGVjc21vZHVsZS5jCkBAIC0yMCwxMCArMjAsNiBAQAogICAgICA8ZW5jb2Rpbmc+X2RlY29kZShjaGFyX2J1ZmZlcl9vYmpbLGVycm9ycz0nc3RyaWN0J10pIC0+CiAgICAgICAgIChVbmljb2RlIG9iamVjdCwgYnl0ZXMgY29uc3VtZWQpCiAKLSAgIDxlbmNvZGluZz5fZW5jb2RlKCkgaW50ZXJmYWNlcyBhbHNvIGFjY2VwdCBub24tVW5pY29kZSBvYmplY3QgYXMKLSAgIGlucHV0LiBUaGUgb2JqZWN0cyBhcmUgdGhlbiBjb252ZXJ0ZWQgdG8gVW5pY29kZSB1c2luZwotICAgUHlVbmljb2RlX0Zyb21PYmplY3QoKSBwcmlvciB0byBhcHBseWluZyB0aGUgY29udmVyc2lvbi4KLQogICAgVGhlc2UgPGVuY29kaW5nPnMgYXJlIGF2YWlsYWJsZTogdXRmXzgsIHVuaWNvZGVfZXNjYXBlLAogICAgcmF3X3VuaWNvZGVfZXNjYXBlLCB1bmljb2RlX2ludGVybmFsLCBsYXRpbl8xLCBhc2NpaSAoNy1iaXQpLAogICAgbWJjcyAob24gd2luMzIpLgpAQCAtNjA4LDcgKzYwNCw3IEBACiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGRhdGEtPmxlbik7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubWJjc19kZWNvZGUKQEAgLTYzMCw2ICs2MjYsMjUgQEAKIH0KIAogLypbY2xpbmljIGlucHV0XQorX2NvZGVjcy5vZW1fZGVjb2RlCisgICAgZGF0YTogUHlfYnVmZmVyCisgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCisgICAgZmluYWw6IGludChjX2RlZmF1bHQ9IjAiKSA9IEZhbHNlCisgICAgLworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZGVjb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgZmluYWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGExNjE3NjEyZjNmY2FkOCBpbnB1dD05NWI4YTkyYzQ0NmIwM2NkXSovCit7CisgICAgUHlfc3NpemVfdCBjb25zdW1lZCA9IGRhdGEtPmxlbjsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVDb2RlUGFnZVN0YXRlZnVsKENQX09FTUNQLAorICAgICAgICBkYXRhLT5idWYsIGRhdGEtPmxlbiwgZXJyb3JzLCBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY29kZV9wYWdlX2RlY29kZQogICAgIGNvZGVwYWdlOiBpbnQKICAgICBkYXRhOiBQeV9idWZmZXIKQEAgLTY1MSw3ICs2NjYsNyBAQAogICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC03MTgsNyArNzMzLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfN19lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTcyNiwyNCArNzQxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfN19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZlZGEyMWZmYzkyMWJjOCBpbnB1dD1mZDkxYTc4ZjEwM2IwNDIxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGZlZGEyMWZmYzkyMWJjOCBpbnB1dD1kMWE0NzU3OWU3OWNiZTE1XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGNyhzdHIsIDAsIDAsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjcoc3RyLCAwLCAwLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfOF9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTc1MSwxOSArNzU3LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfOF9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDJiZjQ3MzMyYjljNzk2YyBpbnB1dD0yYzIyZDQwNTMyZjA3MWYzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDJiZjQ3MzMyYjljNzk2YyBpbnB1dD00MmUzYmE3M2M0MzkyZWVmXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoc3RyLCAidXRmLTgiLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLyogVGhpcyB2ZXJzaW9uIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgYnl0ZW9yZGVyIHBhcmFtZXRlciBvZiB0aGUKQEAgLTc3NSw3ICs3NzIsNyBAQAogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIGJ5dGVvcmRlcjogaW50ID0gMAogICAgIC8KQEAgLTc4NCwyNCArNzgxLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjU0ZTEzZWZhMmU2NGU0IGlucHV0PTM5MzVhNDg5YjJkNTM4NWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjU0ZTEzZWZhMmU2NGU0IGlucHV0PWZmNDY0MTZiMDRlZGI5NDRdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgYnl0ZW9yZGVyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnV0Zl8xNl9sZV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTgwOSwyNCArNzk3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc191dGZfMTZfbGVfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzFiMDFlNTVmMmQ0OTk1IGlucHV0PWJjMjdkZjA1ZDFkMjBkZmVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MzFiMDFlNTVmMmQ0OTk1IGlucHV0PWNiMzg1NDU1ZWE4ZjJmZTBdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYxNihzdHIsIGVycm9ycywgLTEpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMTZfYmVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04MzQsMTkgKzgxMywxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzE2X2JlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY4ODZhNmZkNTRkY2FlMyBpbnB1dD01YTY5ZDQxMTI3NjM0NjJiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTY4ODZhNmZkNTRkY2FlMyBpbnB1dD05MTE5OTk3MDY2YmRhZWZkXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qIFRoaXMgdmVyc2lvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGJ5dGVvcmRlciBwYXJhbWV0ZXIgb2YgdGhlCkBAIC04NTgsNyArODI4LDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICBieXRlb3JkZXI6IGludCA9IDAKICAgICAvCkBAIC04NjcsMjQgKzgzNywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBieXRlb3JkZXIpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM3NjBkYTBjMDlhOGI4MyBpbnB1dD00MzRhMWVmYTQ5MmI4ZDU4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWM3NjBkYTBjMDlhOGI4MyBpbnB1dD1jNWU3N2RhODJmYmU1YzJhXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy51dGZfMzJfbGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC04OTIsMjQgKzg1MywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfdXRmXzMyX2xlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjY1Y2QxNzZkZThlMzZkNiBpbnB1dD1kZmEyZDdkYzc4Yjk5NDIyXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YjY1Y2QxNzZkZThlMzZkNiBpbnB1dD05OTkzYjI1ZmUwODc3ODQ4XSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MudXRmXzMyX2JlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTE3LDI0ICs4NjksMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOWU3MWE5MzU4NzA5ZTkgaW5wdXQ9NDU5NTYxN2IxODE2OTAwMl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTFkOWU3MWE5MzU4NzA5ZTkgaW5wdXQ9ZDNlMGNjYWEwMjkyMDQzMV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjMyKHN0ciwgZXJyb3JzLCArMSksCisgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCiBfY29kZWNzLnVuaWNvZGVfZXNjYXBlX2VuY29kZQotICAgIHN0cjogb2JqZWN0CisgICAgc3RyOiB1bmljb2RlCiAgICAgZXJyb3JzOiBzdHIoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkgPSBOVUxMCiAgICAgLwogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtOTQyLDI0ICs4ODUsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NjI3MWIzMGJjNGY3YTNjIGlucHV0PTgyNzM1MDZmMTQwNzY5MTJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02NjI3MWIzMGJjNGY3YTNjIGlucHV0PTY1ZDllZWZjYTY1YjQ1NWFdKi8KIHsKLSAgICBQeU9iamVjdCAqdjsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyhzdHIpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlCi0gICAgc3RyOiBvYmplY3QKKyAgICBzdHI6IHVuaWNvZGUKICAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKICAgICAvCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC05NjcsMjQgKzkwMSwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfcmF3X3VuaWNvZGVfZXNjYXBlX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY2YTgwNmVkMDFjODMwYSBpbnB1dD0xODE3NTVkNWRmYWNlZjNjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY2YTgwNmVkMDFjODMwYSBpbnB1dD01YWEzM2U0YTEzMzM5MWFiXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubGF0aW5fMV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTk5MiwyNCArOTE3LDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19sYXRpbl8xX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjMjhjODNhMjc4ODRlMDggaW5wdXQ9ZjAzZjZkY2YxZDg0YmVlNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJjMjhjODNhMjc4ODRlMDggaW5wdXQ9MzBiMTFjOWU0OWE2NTE1MF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5hc2NpaV9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTEwMTcsMjQgKzkzMywxNSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfYXNjaWlfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1ZTAzNTE4MmQzM2JlZmMgaW5wdXQ9ZDg3ZTI1YTEwYTU5M2ZlZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI1ZTAzNTE4MmQzM2JlZmMgaW5wdXQ9ODQzYTFkMjY4ZTZkZmE4ZV0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoc3RyLCBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MuY2hhcm1hcF9lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIG1hcHBpbmc6IG9iamVjdCA9IE5VTEwKICAgICAvCkBAIC0xMDQzLDIyICs5NTAsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2NoYXJtYXBfZW5jb2RlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICptYXBwaW5nKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NzQ3NmY0ODQ5NWE5ZTkgaW5wdXQ9ODVmNDE3MjY2MWU4ZGFkOV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA0NzQ3NmY0ODQ5NWE5ZTkgaW5wdXQ9MDc1MmNkZTA3YTZkNmQwMF0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCiAgICAgaWYgKG1hcHBpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgbWFwcGluZyA9IE5VTEw7CiAKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMTA3NCwzNiArOTcyLDQyIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKG1hcCk7CiB9CiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qW2NsaW5pYyBpbnB1dF0KIF9jb2RlY3MubWJjc19lbmNvZGUKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZlMmUxNzBjOTY2YzA4MCBpbnB1dD02NWMwOWVlMWU0MjAzMjYzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZlMmUxNzBjOTY2YzA4MCBpbnB1dD1kZTQ3MWUwODE1OTQ3NTUzXSovCiB7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Cit9CiAKLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHN0ciwgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisvKltjbGluaWMgaW5wdXRdCitfY29kZWNzLm9lbV9lbmNvZGUKKyAgICBzdHI6IHVuaWNvZGUKKyAgICBlcnJvcnM6IHN0cihhY2NlcHQ9e3N0ciwgTm9uZVR5cGV9KSA9IE5VTEwKKyAgICAvCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjVkNTk4MmM3MzdkZTY0OSBpbnB1dD0zZmM1ZjAwMjhhYWQzY2RhXSovCit7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9PRU1DUCwgc3RyLCBlcnJvcnMpLAorICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogX2NvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlCiAgICAgY29kZV9wYWdlOiBpbnQKLSAgICBzdHI6IG9iamVjdAorICAgIHN0cjogdW5pY29kZQogICAgIGVycm9yczogc3RyKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pID0gTlVMTAogICAgIC8KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KQEAgLTExMTEsMjQgKzEwMTUsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgY29kZV9wYWdlLCBQeU9iamVjdCAqc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NjczZjYwODU2NTdhOWUgaW5wdXQ9Yzg1NjJlYzQ2MGMyZTMwOV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1NjczZjYwODU2NTdhOWUgaW5wdXQ9Nzg2NDIxYWU2MTdkNjgwYl0qLwogewotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoY29kZV9wYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7Ci0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgcmV0dXJuIHY7CisgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShjb2RlX3BhZ2UsIHN0ciwgZXJyb3JzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIC8qIC0tLSBFcnJvciBoYW5kbGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMjE2LDYgKzExMDksOCBAQAogICAgIF9DT0RFQ1NfUkVBREJVRkZFUl9FTkNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19NQkNTX0VOQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgorICAgIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYKKyAgICBfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGCiAgICAgX0NPREVDU19DT0RFX1BBR0VfRU5DT0RFX01FVEhPRERFRgogICAgIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKICAgICBfQ09ERUNTX1JFR0lTVEVSX0VSUk9SX01FVEhPRERFRgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKaW5kZXggMTBmYmNmZS4uOWVkNmYxNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCkBAIC04MSw3ICs4MSw3IEBACiAgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7ICAgICAgIC8qIDAgPD0gbGVmdGluZGV4IDwgQkxPQ0tMRU4gKi8KICAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXg7ICAgICAgLyogMCA8PSByaWdodGluZGV4IDwgQkxPQ0tMRU4gKi8KICAgICBzaXplX3Qgc3RhdGU7ICAgICAgICAgICAgICAgLyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGluZGljZXMgbW92ZSAqLwotICAgIFB5X3NzaXplX3QgbWF4bGVuOworICAgIFB5X3NzaXplX3QgbWF4bGVuOyAgICAgICAgICAvKiBtYXhsZW4gaXMgLTEgZm9yIHVuYm91bmRlZCBkZXF1ZXMgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IGRlcXVlb2JqZWN0OwogCkBAIC0xMDgsMjkgKzEwOCwxOCBAQAogI2RlZmluZSBDSEVDS19OT1RfRU5EKGxpbmspCiAjZW5kaWYKIAotLyogVG8gcHJldmVudCBsZW4gZnJvbSBvdmVyZmxvd2luZyBQWV9TU0laRV9UX01BWCwgd2UgcmVmdXNlIHRvCi0gICBhbGxvY2F0ZSBuZXcgYmxvY2tzIGlmIHRoZSBjdXJyZW50IGxlbiBpcyBuZWFyaW5nIG92ZXJmbG93LgotKi8KLQotI2RlZmluZSBNQVhfREVRVUVfTEVOIChQWV9TU0laRV9UX01BWCAtIDMqQkxPQ0tMRU4pCi0KIC8qIEEgc2ltcGxlIGZyZWVsaXN0aW5nIHNjaGVtZSBpcyB1c2VkIHRvIG1pbmltaXplIGNhbGxzIHRvIHRoZSBtZW1vcnkKICAgIGFsbG9jYXRvci4gIEl0IGFjY29tbW9kYXRlcyBjb21tb24gdXNlIGNhc2VzIHdoZXJlIG5ldyBibG9ja3MgYXJlIGJlaW5nCiAgICBhZGRlZCBhdCBhYm91dCB0aGUgc2FtZSByYXRlIGFzIG9sZCBibG9ja3MgYXJlIGJlaW5nIGZyZWVkLgogICovCiAKLSNkZWZpbmUgTUFYRlJFRUJMT0NLUyAxMAorI2RlZmluZSBNQVhGUkVFQkxPQ0tTIDE2CiBzdGF0aWMgUHlfc3NpemVfdCBudW1mcmVlYmxvY2tzID0gMDsKIHN0YXRpYyBibG9jayAqZnJlZWJsb2Nrc1tNQVhGUkVFQkxPQ0tTXTsKIAogc3RhdGljIGJsb2NrICoKLW5ld2Jsb2NrKFB5X3NzaXplX3QgbGVuKSB7CituZXdibG9jayh2b2lkKSB7CiAgICAgYmxvY2sgKmI7Ci0gICAgaWYgKGxlbiA+PSBNQVhfREVRVUVfTEVOKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBhZGQgbW9yZSBibG9ja3MgdG8gdGhlIGRlcXVlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBpZiAobnVtZnJlZWJsb2NrcykgewogICAgICAgICBudW1mcmVlYmxvY2tzLS07CiAgICAgICAgIHJldHVybiBmcmVlYmxvY2tzW251bWZyZWVibG9ja3NdOwpAQCAtMTU0LDEyICsxNDMsNiBAQAogICAgIH0KIH0KIAotLyogWFhYIFRvZG86Ci0gICBJZiBhbGlnbmVkIG1lbW9yeSBhbGxvY2F0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLCBtYWtlIHRoZQotICAgZGVxdWUgb2JqZWN0IDY0IGJ5dGUgYWxpZ25lZCBzbyB0aGF0IGFsbCBvZiB0aGUgZmllbGRzCi0gICBjYW4gYmUgcmV0cmlldmVkIG9yIHVwZGF0ZWQgaW4gYSBzaW5nbGUgY2FjaGUgbGluZS4KLSovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CkBAIC0xNzEsNyArMTU0LDcgQEAKICAgICBpZiAoZGVxdWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBiID0gbmV3YmxvY2soMCk7CisgICAgYiA9IG5ld2Jsb2NrKCk7CiAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoZGVxdWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIwNyw3ICsxOTAsNyBAQAogICAgIFB5X1NJWkUoZGVxdWUpLS07CiAgICAgZGVxdWUtPnN0YXRlKys7CiAKLSAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPT0gLTEpIHsKKyAgICBpZiAoZGVxdWUtPnJpZ2h0aW5kZXggPCAwKSB7CiAgICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSkgewogICAgICAgICAgICAgcHJldmJsb2NrID0gZGVxdWUtPnJpZ2h0YmxvY2stPmxlZnRsaW5rOwogICAgICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgIT0gZGVxdWUtPnJpZ2h0YmxvY2spOwpAQCAtMjcwLDQyICsyNTMsMjQgQEAKIC8qIFRoZSBkZXF1ZSdzIHNpemUgbGltaXQgaXMgZC5tYXhsZW4uICBUaGUgbGltaXQgY2FuIGJlIHplcm8gb3IgcG9zaXRpdmUuCiAgKiBJZiB0aGVyZSBpcyBubyBsaW1pdCwgdGhlbiBkLm1heGxlbiA9PSAtMS4KICAqCi0gKiBBZnRlciBhbiBpdGVtIGlzIGFkZGVkIHRvIGEgZGVxdWUsIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgc2l6ZSBoYXMgZ3Jvd24gcGFzdAotICogdGhlIGxpbWl0LiBJZiBpdCBoYXMsIHdlIGdldCB0aGUgc2l6ZSBiYWNrIGRvd24gdG8gdGhlIGxpbWl0IGJ5IHBvcHBpbmcgYW4KLSAqIGl0ZW0gb2ZmIG9mIHRoZSBvcHBvc2l0ZSBlbmQuICBUaGUgbWV0aG9kcyB0aGF0IGNhbiB0cmlnZ2VyIHRoaXMgYXJlIGFwcGVuZCgpLAotICogYXBwZW5kbGVmdCgpLCBleHRlbmQoKSwgYW5kIGV4dGVuZGxlZnQoKS4KKyAqIEFmdGVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gYSBkZXF1ZSwgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBzaXplIGhhcworICogZ3Jvd24gcGFzdCB0aGUgbGltaXQuIElmIGl0IGhhcywgd2UgZ2V0IHRoZSBzaXplIGJhY2sgZG93biB0byB0aGUgbGltaXQKKyAqIGJ5IHBvcHBpbmcgYW4gaXRlbSBvZmYgb2YgdGhlIG9wcG9zaXRlIGVuZC4gIFRoZSBtZXRob2RzIHRoYXQgY2FuCisgKiB0cmlnZ2VyIHRoaXMgYXJlIGFwcGVuZCgpLCBhcHBlbmRsZWZ0KCksIGV4dGVuZCgpLCBhbmQgZXh0ZW5kbGVmdCgpLgorICoKKyAqIFRoZSBtYWNybyB0byBjaGVjayB3aGV0aGVyIGEgZGVxdWUgbmVlZHMgdG8gYmUgdHJpbW1lZCB1c2VzIGEgc2luZ2xlCisgKiB1bnNpZ25lZCB0ZXN0IHRoYXQgcmV0dXJucyB0cnVlIHdoZW5ldmVyIDAgPD0gbWF4bGVuIDwgUHlfU0laRShkZXF1ZSkuCiAgKi8KIAotc3RhdGljIHZvaWQKLWRlcXVlX3RyaW1fcmlnaHQoZGVxdWVvYmplY3QgKmRlcXVlKQotewotICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZGVxdWUpID4gZGVxdWUtPm1heGxlbikgewotICAgICAgICBQeU9iamVjdCAqcnYgPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOwotICAgICAgICBhc3NlcnQocnYgIT0gTlVMTCk7Ci0gICAgICAgIGFzc2VydChQeV9TSVpFKGRlcXVlKSA8PSBkZXF1ZS0+bWF4bGVuKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICB9Ci19CisjZGVmaW5lIE5FRURTX1RSSU0oZGVxdWUsIG1heGxlbikgKChzaXplX3QpKG1heGxlbikgPCAoc2l6ZV90KShQeV9TSVpFKGRlcXVlKSkpCiAKLXN0YXRpYyB2b2lkCi1kZXF1ZV90cmltX2xlZnQoZGVxdWVvYmplY3QgKmRlcXVlKQorc3RhdGljIGludAorZGVxdWVfYXBwZW5kX2ludGVybmFsKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbWF4bGVuKQogewotICAgIGlmIChkZXF1ZS0+bWF4bGVuICE9IC0xICYmIFB5X1NJWkUoZGVxdWUpID4gZGVxdWUtPm1heGxlbikgewotICAgICAgICBQeU9iamVjdCAqcnYgPSBkZXF1ZV9wb3BsZWZ0KGRlcXVlLCBOVUxMKTsKLSAgICAgICAgYXNzZXJ0KHJ2ICE9IE5VTEwpOwotICAgICAgICBhc3NlcnQoUHlfU0laRShkZXF1ZSkgPD0gZGVxdWUtPm1heGxlbik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7Ci0gICAgfQotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfYXBwZW5kKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0pCi17Ci0gICAgZGVxdWUtPnN0YXRlKys7CiAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewotICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKFB5X1NJWkUoZGVxdWUpKTsKKyAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOwogICAgICAgICBpZiAoYiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGItPmxlZnRsaW5rID0gZGVxdWUtPnJpZ2h0YmxvY2s7CiAgICAgICAgIENIRUNLX0VORChkZXF1ZS0+cmlnaHRibG9jay0+cmlnaHRsaW5rKTsKICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayA9IGI7CkBAIC0zMTMsMjQgKzI3OCwzNiBAQAogICAgICAgICBNQVJLX0VORChiLT5yaWdodGxpbmspOwogICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IC0xOwogICAgIH0KLSAgICBQeV9JTkNSRUYoaXRlbSk7CiAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICBkZXF1ZS0+cmlnaHRpbmRleCsrOwogICAgIGRlcXVlLT5yaWdodGJsb2NrLT5kYXRhW2RlcXVlLT5yaWdodGluZGV4XSA9IGl0ZW07Ci0gICAgZGVxdWVfdHJpbV9sZWZ0KGRlcXVlKTsKKyAgICBpZiAoTkVFRFNfVFJJTShkZXF1ZSwgbWF4bGVuKSkgeworICAgICAgICBQeU9iamVjdCAqb2xkaXRlbSA9IGRlcXVlX3BvcGxlZnQoZGVxdWUsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYob2xkaXRlbSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfYXBwZW5kKGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZW0pCit7CisgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgIGlmIChkZXF1ZV9hcHBlbmRfaW50ZXJuYWwoZGVxdWUsIGl0ZW0sIGRlcXVlLT5tYXhsZW4pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihhcHBlbmRfZG9jLCAiQWRkIGFuIGVsZW1lbnQgdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLiIpOwogCi1zdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfYXBwZW5kbGVmdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQorc3RhdGljIGludAorZGVxdWVfYXBwZW5kbGVmdF9pbnRlcm5hbChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtLCBQeV9zc2l6ZV90IG1heGxlbikKIHsKLSAgICBkZXF1ZS0+c3RhdGUrKzsKICAgICBpZiAoZGVxdWUtPmxlZnRpbmRleCA9PSAwKSB7Ci0gICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOworICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgIGlmIChiID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgYi0+cmlnaHRsaW5rID0gZGVxdWUtPmxlZnRibG9jazsKICAgICAgICAgQ0hFQ0tfRU5EKGRlcXVlLT5sZWZ0YmxvY2stPmxlZnRsaW5rKTsKICAgICAgICAgZGVxdWUtPmxlZnRibG9jay0+bGVmdGxpbmsgPSBiOwpAQCAtMzM4LDM3ICszMTUsNjUgQEAKICAgICAgICAgTUFSS19FTkQoYi0+bGVmdGxpbmspOwogICAgICAgICBkZXF1ZS0+bGVmdGluZGV4ID0gQkxPQ0tMRU47CiAgICAgfQotICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgIGRlcXVlLT5sZWZ0aW5kZXgtLTsKICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdID0gaXRlbTsKLSAgICBkZXF1ZV90cmltX3JpZ2h0KGRlcXVlKTsKKyAgICBpZiAoTkVFRFNfVFJJTShkZXF1ZSwgZGVxdWUtPm1heGxlbikpIHsKKyAgICAgICAgUHlPYmplY3QgKm9sZGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYob2xkaXRlbSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVxdWUtPnN0YXRlKys7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfYXBwZW5kbGVmdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICBpZiAoZGVxdWVfYXBwZW5kbGVmdF9pbnRlcm5hbChkZXF1ZSwgaXRlbSwgZGVxdWUtPm1heGxlbikgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogUHlEb2NfU1RSVkFSKGFwcGVuZGxlZnRfZG9jLCAiQWRkIGFuIGVsZW1lbnQgdG8gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIik7CiAKK3N0YXRpYyBQeU9iamVjdCoKK2ZpbmFsaXplX2l0ZXJhdG9yKFB5T2JqZWN0ICppdCkKK3sKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIFB5X0RFQ1JFRihpdCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CiAKIC8qIFJ1biBhbiBpdGVyYXRvciB0byBleGhhdXN0aW9uLiAgU2hvcnRjdXQgZm9yCiAgICB0aGUgZXh0ZW5kL2V4dGVuZGxlZnQgbWV0aG9kcyB3aGVuIG1heGxlbiA9PSAwLiAqLwogc3RhdGljIFB5T2JqZWN0KgogY29uc3VtZV9pdGVyYXRvcihQeU9iamVjdCAqaXQpCiB7CisgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOwogICAgIFB5T2JqZWN0ICppdGVtOwogCi0gICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7CisgICAgaXRlcm5leHQgPSAqUHlfVFlQRShpdCktPnRwX2l0ZXJuZXh0OworICAgIHdoaWxlICgoaXRlbSA9IGl0ZXJuZXh0KGl0KSkgIT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgfQotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBmaW5hbGl6ZV9pdGVyYXRvcihpdCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9leHRlbmQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqaXRlcmFibGUpCiB7CiAgICAgUHlPYmplY3QgKml0LCAqaXRlbTsKKyAgICBQeU9iamVjdCAqKCppdGVybmV4dCkoUHlPYmplY3QgKik7CisgICAgUHlfc3NpemVfdCBtYXhsZW4gPSBkZXF1ZS0+bWF4bGVuOwogCiAgICAgLyogSGFuZGxlIGNhc2Ugd2hlcmUgaWQoZGVxdWUpID09IGlkKGl0ZXJhYmxlKSAqLwogICAgIGlmICgoUHlPYmplY3QgKilkZXF1ZSA9PSBpdGVyYWJsZSkgewpAQCAtMzgxLDYgKzM4NiwxMyBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKG1heGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gY29uc3VtZV9pdGVyYXRvcihpdCk7CisKICAgICAvKiBTcGFjZSBzYXZpbmcgaGV1cmlzdGljLiAgU3RhcnQgZmlsbGluZyBmcm9tIHRoZSBsZWZ0ICovCiAgICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApIHsKICAgICAgICAgYXNzZXJ0KGRlcXVlLT5sZWZ0YmxvY2sgPT0gZGVxdWUtPnJpZ2h0YmxvY2spOwpAQCAtMzg5LDE3ICs0MDEsMTAgQEAKICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSAwOwogICAgIH0KIAotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7Ci0gICAgaWYgKGl0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVfaXRlcmF0b3IoaXQpOwotCi0gICAgd2hpbGUgKChpdGVtID0gUHlJdGVyX05leHQoaXQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgIGl0ZXJuZXh0ID0gKlB5X1RZUEUoaXQpLT50cF9pdGVybmV4dDsKKyAgICB3aGlsZSAoKGl0ZW0gPSBpdGVybmV4dChpdCkpICE9IE5VTEwpIHsKICAgICAgICAgaWYgKGRlcXVlLT5yaWdodGluZGV4ID09IEJMT0NLTEVOIC0gMSkgewotICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jayhQeV9TSVpFKGRlcXVlKSk7CisgICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CkBAIC00MTUsMTQgKzQyMCwxNCBAQAogICAgICAgICBQeV9TSVpFKGRlcXVlKSsrOwogICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCsrOwogICAgICAgICBkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleF0gPSBpdGVtOwotICAgICAgICBkZXF1ZV90cmltX2xlZnQoZGVxdWUpOworICAgICAgICBpZiAoTkVFRFNfVFJJTShkZXF1ZSwgbWF4bGVuKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKm9sZGl0ZW0gPSBkZXF1ZV9wb3BsZWZ0KGRlcXVlLCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvbGRpdGVtKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlcXVlLT5zdGF0ZSsrOworICAgICAgICB9CiAgICAgfQotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIFB5X1JFVFVSTl9OT05FOworICAgIHJldHVybiBmaW5hbGl6ZV9pdGVyYXRvcihpdCk7CiB9CiAKIFB5RG9jX1NUUlZBUihleHRlbmRfZG9jLApAQCAtNDMyLDYgKzQzNyw4IEBACiBkZXF1ZV9leHRlbmRsZWZ0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlPYmplY3QgKml0ZXJhYmxlKQogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW07CisgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOworICAgIFB5X3NzaXplX3QgbWF4bGVuID0gZGVxdWUtPm1heGxlbjsKIAogICAgIC8qIEhhbmRsZSBjYXNlIHdoZXJlIGlkKGRlcXVlKSA9PSBpZChpdGVyYWJsZSkgKi8KICAgICBpZiAoKFB5T2JqZWN0ICopZGVxdWUgPT0gaXRlcmFibGUpIHsKQEAgLTQ0NCw2ICs0NTEsMTMgQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOworICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChtYXhsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVfaXRlcmF0b3IoaXQpOworCiAgICAgLyogU3BhY2Ugc2F2aW5nIGhldXJpc3RpYy4gIFN0YXJ0IGZpbGxpbmcgZnJvbSB0aGUgcmlnaHQgKi8KICAgICBpZiAoUHlfU0laRShkZXF1ZSkgPT0gMCkgewogICAgICAgICBhc3NlcnQoZGVxdWUtPmxlZnRibG9jayA9PSBkZXF1ZS0+cmlnaHRibG9jayk7CkBAIC00NTIsMTcgKzQ2NiwxMCBAQAogICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCA9IEJMT0NLTEVOIC0gMjsKICAgICB9CiAKLSAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGlmIChkZXF1ZS0+bWF4bGVuID09IDApCi0gICAgICAgIHJldHVybiBjb25zdW1lX2l0ZXJhdG9yKGl0KTsKLQotICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CisgICAgd2hpbGUgKChpdGVtID0gaXRlcm5leHQoaXQpKSAhPSBOVUxMKSB7CiAgICAgICAgIGlmIChkZXF1ZS0+bGVmdGluZGV4ID09IDApIHsKLSAgICAgICAgICAgIGJsb2NrICpiID0gbmV3YmxvY2soUHlfU0laRShkZXF1ZSkpOworICAgICAgICAgICAgYmxvY2sgKmIgPSBuZXdibG9jaygpOwogICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwpAQCAtNDc4LDE0ICs0ODUsMTQgQEAKICAgICAgICAgUHlfU0laRShkZXF1ZSkrKzsKICAgICAgICAgZGVxdWUtPmxlZnRpbmRleC0tOwogICAgICAgICBkZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW2RlcXVlLT5sZWZ0aW5kZXhdID0gaXRlbTsKLSAgICAgICAgZGVxdWVfdHJpbV9yaWdodChkZXF1ZSk7CisgICAgICAgIGlmIChORUVEU19UUklNKGRlcXVlLCBtYXhsZW4pKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqb2xkaXRlbSA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYob2xkaXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKGl0KTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gZmluYWxpemVfaXRlcmF0b3IoaXQpOwogfQogCiBQeURvY19TVFJWQVIoZXh0ZW5kbGVmdF9kb2MsCkBAIC01MDQsNyArNTExLDQwIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKmRlcXVlX2NvcHkoUHlPYmplY3QgKmRlcXVlKTsKK3N0YXRpYyBQeU9iamVjdCAqCitkZXF1ZV9jb3B5KFB5T2JqZWN0ICpkZXF1ZSkKK3sKKyAgICBkZXF1ZW9iamVjdCAqb2xkX2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWU7CisgICAgaWYgKFB5X1RZUEUoZGVxdWUpID09ICZkZXF1ZV90eXBlKSB7CisgICAgICAgIGRlcXVlb2JqZWN0ICpuZXdfZGVxdWU7CisgICAgICAgIFB5T2JqZWN0ICpydjsKKworICAgICAgICBuZXdfZGVxdWUgPSAoZGVxdWVvYmplY3QgKilkZXF1ZV9uZXcoJmRlcXVlX3R5cGUsIChQeU9iamVjdCAqKU5VTEwsIChQeU9iamVjdCAqKU5VTEwpOworICAgICAgICBpZiAobmV3X2RlcXVlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbmV3X2RlcXVlLT5tYXhsZW4gPSBvbGRfZGVxdWUtPm1heGxlbjsKKyAgICAgICAgLyogRmFzdCBwYXRoIGZvciB0aGUgZGVxdWVfcmVwZWF0KCkgY29tbW9uIGNhc2Ugd2hlcmUgbGVuKGRlcXVlKSA9PSAxICovCisgICAgICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAxKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IG9sZF9kZXF1ZS0+bGVmdGJsb2NrLT5kYXRhW29sZF9kZXF1ZS0+bGVmdGluZGV4XTsKKyAgICAgICAgICAgIHJ2ID0gZGVxdWVfYXBwZW5kKG5ld19kZXF1ZSwgaXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBydiA9IGRlcXVlX2V4dGVuZChuZXdfZGVxdWUsIGRlcXVlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocnYgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdfZGVxdWU7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKG5ld19kZXF1ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAob2xkX2RlcXVlLT5tYXhsZW4gPCAwKQorICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKShQeV9UWVBFKGRlcXVlKSksICJPIiwgZGVxdWUsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiT2kiLAorICAgICAgICAgICAgZGVxdWUsIG9sZF9kZXF1ZS0+bWF4bGVuLCBOVUxMKTsKK30KKworUHlEb2NfU1RSVkFSKGNvcHlfZG9jLCAiUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIGEgZGVxdWUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9jb25jYXQoZGVxdWVvYmplY3QgKmRlcXVlLCBQeU9iamVjdCAqb3RoZXIpCkBAIC01MzQsMzggKzU3NCwxMDIgQEAKICAgICByZXR1cm4gbmV3X2RlcXVlOwogfQogCi1zdGF0aWMgdm9pZCBkZXF1ZV9jbGVhcihkZXF1ZW9iamVjdCAqZGVxdWUpOworc3RhdGljIHZvaWQKK2RlcXVlX2NsZWFyKGRlcXVlb2JqZWN0ICpkZXF1ZSkKK3sKKyAgICBibG9jayAqYjsKKyAgICBibG9jayAqcHJldmJsb2NrOworICAgIGJsb2NrICpsZWZ0YmxvY2s7CisgICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7CisgICAgUHlfc3NpemVfdCBuLCBtOworICAgIFB5T2JqZWN0ICppdGVtOworICAgIFB5T2JqZWN0ICoqaXRlbXB0ciwgKipsaW1pdDsKKworICAgIGlmIChQeV9TSVpFKGRlcXVlKSA9PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBEdXJpbmcgdGhlIHByb2Nlc3Mgb2YgY2xlYXJpbmcgYSBkZXF1ZSwgZGVjcmVmcyBjYW4gY2F1c2UgdGhlCisgICAgICAgZGVxdWUgdG8gbXV0YXRlLiAgVG8gYXZvaWQgZmF0YWwgY29uZnVzaW9uLCB3ZSBoYXZlIHRvIG1ha2UgdGhlCisgICAgICAgZGVxdWUgZW1wdHkgYmVmb3JlIGNsZWFyaW5nIHRoZSBibG9ja3MgYW5kIG5ldmVyIHJlZmVyIHRvCisgICAgICAgYW55dGhpbmcgdmlhIGRlcXVlLT5yZWYgd2hpbGUgY2xlYXJpbmcuICAoVGhpcyBpcyB0aGUgc2FtZQorICAgICAgIHRlY2huaXF1ZSB1c2VkIGZvciBjbGVhcmluZyBsaXN0cywgc2V0cywgYW5kIGRpY3RzLikKKworICAgICAgIE1ha2luZyB0aGUgZGVxdWUgZW1wdHkgcmVxdWlyZXMgYWxsb2NhdGluZyBhIG5ldyBlbXB0eSBibG9jay4gIEluCisgICAgICAgdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgbWVtb3J5IGlzIGZ1bGwsIHdlIGZhbGwgYmFjayB0byBhbgorICAgICAgIGFsdGVybmF0ZSBtZXRob2QgdGhhdCBkb2Vzbid0IHJlcXVpcmUgYSBuZXcgYmxvY2suICBSZXBlYXRpbmcKKyAgICAgICBwb3BzIGluIGEgd2hpbGUtbG9vcCBpcyBzbG93ZXIsIHBvc3NpYmx5IHJlLWVudHJhbnQgKGFuZCBhIGNsZXZlcgorICAgICAgIGFkdmVyc2FyeSBjb3VsZCBjYXVzZSBpdCB0byBuZXZlciB0ZXJtaW5hdGUpLgorICAgICovCisKKyAgICBiID0gbmV3YmxvY2soKTsKKyAgICBpZiAoYiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGdvdG8gYWx0ZXJuYXRlX21ldGhvZDsKKyAgICB9CisKKyAgICAvKiBSZW1lbWJlciB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCAqLworICAgIG4gPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBsZWZ0YmxvY2sgPSBkZXF1ZS0+bGVmdGJsb2NrOworICAgIGxlZnRpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CisKKyAgICAvKiBTZXQgdGhlIGRlcXVlIHRvIGJlIGVtcHR5IHVzaW5nIHRoZSBuZXdseSBhbGxvY2F0ZWQgYmxvY2sgKi8KKyAgICBNQVJLX0VORChiLT5sZWZ0bGluayk7CisgICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKKyAgICBQeV9TSVpFKGRlcXVlKSA9IDA7CisgICAgZGVxdWUtPmxlZnRibG9jayA9IGI7CisgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOworICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOworICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOworICAgIGRlcXVlLT5zdGF0ZSsrOworCisgICAgLyogTm93IHRoZSBvbGQgc2l6ZSwgbGVmdGJsb2NrLCBhbmQgbGVmdGluZGV4IGFyZSBkaXNjb25uZWN0ZWQgZnJvbQorICAgICAgIHRoZSBlbXB0eSBkZXF1ZSBhbmQgd2UgY2FuIHVzZSB0aGVtIHRvIGRlY3JlZiB0aGUgcG9pbnRlcnMuCisgICAgKi8KKyAgICBtID0gKEJMT0NLTEVOIC0gbGVmdGluZGV4ID4gbikgPyBuIDogQkxPQ0tMRU4gLSBsZWZ0aW5kZXg7CisgICAgaXRlbXB0ciA9ICZsZWZ0YmxvY2stPmRhdGFbbGVmdGluZGV4XTsKKyAgICBsaW1pdCA9IGl0ZW1wdHIgKyBtOworICAgIG4gLT0gbTsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoaXRlbXB0ciA9PSBsaW1pdCkgeworICAgICAgICAgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIENIRUNLX05PVF9FTkQobGVmdGJsb2NrLT5yaWdodGxpbmspOworICAgICAgICAgICAgcHJldmJsb2NrID0gbGVmdGJsb2NrOworICAgICAgICAgICAgbGVmdGJsb2NrID0gbGVmdGJsb2NrLT5yaWdodGxpbms7CisgICAgICAgICAgICBtID0gKG4gPiBCTE9DS0xFTikgPyBCTE9DS0xFTiA6IG47CisgICAgICAgICAgICBpdGVtcHRyID0gbGVmdGJsb2NrLT5kYXRhOworICAgICAgICAgICAgbGltaXQgPSBpdGVtcHRyICsgbTsKKyAgICAgICAgICAgIG4gLT0gbTsKKyAgICAgICAgICAgIGZyZWVibG9jayhwcmV2YmxvY2spOworICAgICAgICB9CisgICAgICAgIGl0ZW0gPSAqKGl0ZW1wdHIrKyk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICB9CisgICAgQ0hFQ0tfRU5EKGxlZnRibG9jay0+cmlnaHRsaW5rKTsKKyAgICBmcmVlYmxvY2sobGVmdGJsb2NrKTsKKyAgICByZXR1cm47CisKKyAgYWx0ZXJuYXRlX21ldGhvZDoKKyAgICB3aGlsZSAoUHlfU0laRShkZXF1ZSkpIHsKKyAgICAgICAgaXRlbSA9IGRlcXVlX3BvcChkZXF1ZSwgTlVMTCk7CisgICAgICAgIGFzc2VydCAoaXRlbSAhPSBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlcXVlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKK2RlcXVlX2NsZWFybWV0aG9kKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKLSAgICBkZXF1ZW9iamVjdCAqbmV3X2RlcXVlOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBYWFggYWRkIGEgc3BlY2lhbCBjYXNlIGZvciB3aGVuIG1heGxlbiBpcyBkZWZpbmVkICovCi0gICAgaWYgKG4gPCAwKQotICAgICAgICBuID0gMDsKLSAgICBlbHNlIGlmIChuID4gMCAmJiBQeV9TSVpFKGRlcXVlKSA+IE1BWF9ERVFVRV9MRU4gLyBuKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgIG5ld19kZXF1ZSA9IChkZXF1ZW9iamVjdCAqKWRlcXVlX25ldygmZGVxdWVfdHlwZSwgKFB5T2JqZWN0ICopTlVMTCwgKFB5T2JqZWN0ICopTlVMTCk7Ci0gICAgbmV3X2RlcXVlLT5tYXhsZW4gPSBkZXF1ZS0+bWF4bGVuOwotCi0gICAgZm9yICggOyBuIDsgbi0tKSB7Ci0gICAgICAgIHJlc3VsdCA9IGRlcXVlX2V4dGVuZChuZXdfZGVxdWUsIChQeU9iamVjdCAqKWRlcXVlKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobmV3X2RlcXVlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3X2RlcXVlOworICAgIGRlcXVlX2NsZWFyKGRlcXVlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorUHlEb2NfU1RSVkFSKGNsZWFyX2RvYywgIlJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUuIik7CisKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9pbnBsYWNlX3JlcGVhdChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5X3NzaXplX3QgbikKIHsKLSAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBtLCBzaXplOwogICAgIFB5T2JqZWN0ICpzZXE7CiAgICAgUHlPYmplY3QgKnJ2OwogCkBAIC01ODEsMjcgKzY4NSw0NyBAQAogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVxdWU7CiAgICAgfQogCi0gICAgaWYgKHNpemUgPiBNQVhfREVRVUVfTEVOIC8gbikgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0KICAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgIC8qIGNvbW1vbiBjYXNlLCByZXBlYXRpbmcgYSBzaW5nbGUgZWxlbWVudCAqLwogICAgICAgICBQeU9iamVjdCAqaXRlbSA9IGRlcXVlLT5sZWZ0YmxvY2stPmRhdGFbZGVxdWUtPmxlZnRpbmRleF07CiAKLSAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gIT0gLTEgJiYgbiA+IGRlcXVlLT5tYXhsZW4pCisgICAgICAgIGlmIChkZXF1ZS0+bWF4bGVuID49IDAgJiYgbiA+IGRlcXVlLT5tYXhsZW4pCiAgICAgICAgICAgICBuID0gZGVxdWUtPm1heGxlbjsKIAotICAgICAgICBmb3IgKGkgPSAwIDsgaSA8IG4tMSA7IGkrKykgewotICAgICAgICAgICAgcnYgPSBkZXF1ZV9hcHBlbmQoZGVxdWUsIGl0ZW0pOwotICAgICAgICAgICAgaWYgKHJ2ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocnYpOworICAgICAgICBkZXF1ZS0+c3RhdGUrKzsKKyAgICAgICAgZm9yIChpID0gMCA7IGkgPCBuLTEgOyApIHsKKyAgICAgICAgICAgIGlmIChkZXF1ZS0+cmlnaHRpbmRleCA9PSBCTE9DS0xFTiAtIDEpIHsKKyAgICAgICAgICAgICAgICBibG9jayAqYiA9IG5ld2Jsb2NrKCk7CisgICAgICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKGRlcXVlKSArPSBpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYi0+bGVmdGxpbmsgPSBkZXF1ZS0+cmlnaHRibG9jazsKKyAgICAgICAgICAgICAgICBDSEVDS19FTkQoZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayk7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2stPnJpZ2h0bGluayA9IGI7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOworICAgICAgICAgICAgICAgIE1BUktfRU5EKGItPnJpZ2h0bGluayk7CisgICAgICAgICAgICAgICAgZGVxdWUtPnJpZ2h0aW5kZXggPSAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG0gPSBuIC0gMSAtIGk7CisgICAgICAgICAgICBpZiAobSA+IEJMT0NLTEVOIC0gMSAtIGRlcXVlLT5yaWdodGluZGV4KQorICAgICAgICAgICAgICAgIG0gPSBCTE9DS0xFTiAtIDEgLSBkZXF1ZS0+cmlnaHRpbmRleDsKKyAgICAgICAgICAgIGkgKz0gbTsKKyAgICAgICAgICAgIHdoaWxlIChtLS0pIHsKKyAgICAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRpbmRleCsrOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgICAgICBkZXF1ZS0+cmlnaHRibG9jay0+ZGF0YVtkZXF1ZS0+cmlnaHRpbmRleF0gPSBpdGVtOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5X1NJWkUoZGVxdWUpICs9IGk7CiAgICAgICAgIFB5X0lOQ1JFRihkZXF1ZSk7CiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilkZXF1ZTsKICAgICB9CiAKKyAgICBpZiAoKHNpemVfdClzaXplID4gUFlfU1NJWkVfVF9NQVggLyAoc2l6ZV90KW4pIHsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorCiAgICAgc2VxID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWRlcXVlKTsKICAgICBpZiAoc2VxID09IE5VTEwpCiAgICAgICAgIHJldHVybiBzZXE7CkBAIC02MTksNiArNzQzLDIwIEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWRlcXVlOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZGVxdWVfcmVwZWF0KGRlcXVlb2JqZWN0ICpkZXF1ZSwgUHlfc3NpemVfdCBuKQoreworICAgIGRlcXVlb2JqZWN0ICpuZXdfZGVxdWU7CisgICAgUHlPYmplY3QgKnJ2OworCisgICAgbmV3X2RlcXVlID0gKGRlcXVlb2JqZWN0ICopZGVxdWVfY29weSgoUHlPYmplY3QgKikgZGVxdWUpOworICAgIGlmIChuZXdfZGVxdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcnYgPSBkZXF1ZV9pbnBsYWNlX3JlcGVhdChuZXdfZGVxdWUsIG4pOworICAgIFB5X0RFQ1JFRihuZXdfZGVxdWUpOworICAgIHJldHVybiBydjsKK30KKwogLyogVGhlIHJvdGF0ZSgpIG1ldGhvZCBpcyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJIGFuZCBpcyB1c2VkIGludGVybmFsbHkKIGFzIGEgcHJpbWl0aXZlIGZvciBvdGhlciBtZXRob2RzLgogCkBAIC02NzEsNyArODA5LDcgQEAKICAgICB3aGlsZSAobiA+IDApIHsKICAgICAgICAgaWYgKGxlZnRpbmRleCA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgYiA9IG5ld2Jsb2NrKGxlbik7CisgICAgICAgICAgICAgICAgYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgfQpAQCAtNzAyLDcgKzg0MCw3IEBACiAgICAgICAgICAgICAgICAgKihkZXN0KyspID0gKihzcmMrKyk7CiAgICAgICAgICAgICB9IHdoaWxlICgtLW0pOwogICAgICAgICB9Ci0gICAgICAgIGlmIChyaWdodGluZGV4ID09IC0xKSB7CisgICAgICAgIGlmIChyaWdodGluZGV4IDwgMCkgewogICAgICAgICAgICAgYXNzZXJ0KGxlZnRibG9jayAhPSByaWdodGJsb2NrKTsKICAgICAgICAgICAgIGFzc2VydChiID09IE5VTEwpOwogICAgICAgICAgICAgYiA9IHJpZ2h0YmxvY2s7CkBAIC03MTUsNyArODUzLDcgQEAKICAgICB3aGlsZSAobiA8IDApIHsKICAgICAgICAgaWYgKHJpZ2h0aW5kZXggPT0gQkxPQ0tMRU4gLSAxKSB7CiAgICAgICAgICAgICBpZiAoYiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgYiA9IG5ld2Jsb2NrKGxlbik7CisgICAgICAgICAgICAgICAgYiA9IG5ld2Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgaWYgKGIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgfQpAQCAtNzkwLDExICs5MjgsMTEgQEAKICAgICBibG9jayAqcmlnaHRibG9jayA9IGRlcXVlLT5yaWdodGJsb2NrOwogICAgIFB5X3NzaXplX3QgbGVmdGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKICAgICBQeV9zc2l6ZV90IHJpZ2h0aW5kZXggPSBkZXF1ZS0+cmlnaHRpbmRleDsKLSAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKGRlcXVlKSAvIDI7Ci0gICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoZGVxdWUpID4+IDE7CiAgICAgUHlPYmplY3QgKnRtcDsKIAotICAgIGZvciAoaT0wIDsgaTxuIDsgaSsrKSB7CisgICAgbisrOworICAgIHdoaWxlICgtLW4pIHsKICAgICAgICAgLyogVmFsaWRhdGUgdGhhdCBwb2ludGVycyBoYXZlbid0IG1ldCBpbiB0aGUgbWlkZGxlICovCiAgICAgICAgIGFzc2VydChsZWZ0YmxvY2sgIT0gcmlnaHRibG9jayB8fCBsZWZ0aW5kZXggPCByaWdodGluZGV4KTsKICAgICAgICAgQ0hFQ0tfTk9UX0VORChsZWZ0YmxvY2spOwpAQCAtODE0LDcgKzk1Miw3IEBACiAKICAgICAgICAgLyogU3RlcCBiYWNrd2FyZHMgd2l0aCB0aGUgcmlnaHQgYmxvY2svaW5kZXggcGFpciAqLwogICAgICAgICByaWdodGluZGV4LS07Ci0gICAgICAgIGlmIChyaWdodGluZGV4ID09IC0xKSB7CisgICAgICAgIGlmIChyaWdodGluZGV4IDwgMCkgewogICAgICAgICAgICAgcmlnaHRibG9jayA9IHJpZ2h0YmxvY2stPmxlZnRsaW5rOwogICAgICAgICAgICAgcmlnaHRpbmRleCA9IEJMT0NLTEVOIC0gMTsKICAgICAgICAgfQpAQCAtODMxLDIwICs5NjksMTkgQEAKICAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSk7Ci0gICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwogICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKICAgICBQeU9iamVjdCAqaXRlbTsKICAgICBpbnQgY21wOwogCi0gICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKKyAgICBuKys7CisgICAgd2hpbGUgKC0tbikgewogICAgICAgICBDSEVDS19OT1RfRU5EKGIpOwogICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7Ci0gICAgICAgIGlmIChjbXAgPiAwKQotICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKKyAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY291bnQgKz0gY21wOwogCiAgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC04NzEsMTIgKzEwMDgsMTIgQEAKICAgICBibG9jayAqYiA9IGRlcXVlLT5sZWZ0YmxvY2s7CiAgICAgUHlfc3NpemVfdCBpbmRleCA9IGRlcXVlLT5sZWZ0aW5kZXg7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShkZXF1ZSk7Ci0gICAgUHlfc3NpemVfdCBpOwogICAgIHNpemVfdCBzdGFydF9zdGF0ZSA9IGRlcXVlLT5zdGF0ZTsKICAgICBQeU9iamVjdCAqaXRlbTsKICAgICBpbnQgY21wOwogCi0gICAgZm9yIChpPTAgOyBpPG4gOyBpKyspIHsKKyAgICBuKys7CisgICAgd2hpbGUgKC0tbikgewogICAgICAgICBDSEVDS19OT1RfRU5EKGIpOwogICAgICAgICBpdGVtID0gYi0+ZGF0YVtpbmRleF07CiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7CkBAIC05MDYsMTEgKzEwNDMsMTIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9pbmRleChkZXF1ZW9iamVjdCAqZGVxdWUsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgaSwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKGRlcXVlKTsKKyAgICBQeV9zc2l6ZV90IGksIG4sIHN0YXJ0PTAsIHN0b3A9UHlfU0laRShkZXF1ZSk7CiAgICAgUHlPYmplY3QgKnYsICppdGVtOwogICAgIGJsb2NrICpiID0gZGVxdWUtPmxlZnRibG9jazsKICAgICBQeV9zc2l6ZV90IGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKICAgICBzaXplX3Qgc3RhcnRfc3RhdGUgPSBkZXF1ZS0+c3RhdGU7CisgICAgaW50IGNtcDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPJk8mOmluZGV4IiwgJnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleCwgJnN0YXJ0LApAQCAtOTI4LDIyICsxMDY2LDMyIEBACiAgICAgfQogICAgIGlmIChzdG9wID4gUHlfU0laRShkZXF1ZSkpCiAgICAgICAgIHN0b3AgPSBQeV9TSVpFKGRlcXVlKTsKKyAgICBpZiAoc3RhcnQgPiBzdG9wKQorICAgICAgICBzdGFydCA9IHN0b3A7CisgICAgYXNzZXJ0KDAgPD0gc3RhcnQgJiYgc3RhcnQgPD0gc3RvcCAmJiBzdG9wIDw9IFB5X1NJWkUoZGVxdWUpKTsKIAotICAgIGZvciAoaT0wIDsgaTxzdG9wIDsgaSsrKSB7Ci0gICAgICAgIGlmIChpID49IHN0YXJ0KSB7Ci0gICAgICAgICAgICBpbnQgY21wOwotICAgICAgICAgICAgQ0hFQ0tfTk9UX0VORChiKTsKLSAgICAgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKLSAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdGVtLCB2LCBQeV9FUSk7Ci0gICAgICAgICAgICBpZiAoY21wID4gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGkpOwotICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChzdGFydF9zdGF0ZSAhPSBkZXF1ZS0+c3RhdGUpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgLyogWFhYIFJlcGxhY2UgdGhpcyBsb29wIHdpdGggZmFzdGVyIGNvZGUgZnJvbSBkZXF1ZV9pdGVtKCkgKi8KKyAgICBmb3IgKGk9MCA7IGk8c3RhcnQgOyBpKyspIHsKKyAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgaWYgKGluZGV4ID09IEJMT0NLTEVOKSB7CisgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgbiA9IHN0b3AgLSBpICsgMTsKKyAgICB3aGlsZSAoLS1uKSB7CisgICAgICAgIENIRUNLX05PVF9FTkQoYik7CisgICAgICAgIGl0ZW0gPSBiLT5kYXRhW2luZGV4XTsKKyAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGl0ZW0sIHYsIFB5X0VRKTsKKyAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHN0b3AgLSBuKTsKKyAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKHN0YXJ0X3N0YXRlICE9IGRlcXVlLT5zdGF0ZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVxdWUgbXV0YXRlZCBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpbmRleCsrOwogICAgICAgICBpZiAoaW5kZXggPT0gQkxPQ0tMRU4pIHsKQEAgLTEwMzcsODQgKzExODUsMTAgQEAKIFB5RG9jX1NUUlZBUihyZW1vdmVfZG9jLAogIkQucmVtb3ZlKHZhbHVlKSAtLSByZW1vdmUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB2YWx1ZS4iKTsKIAotc3RhdGljIHZvaWQKLWRlcXVlX2NsZWFyKGRlcXVlb2JqZWN0ICpkZXF1ZSkKLXsKLSAgICBibG9jayAqYjsKLSAgICBibG9jayAqcHJldmJsb2NrOwotICAgIGJsb2NrICpsZWZ0YmxvY2s7Ci0gICAgUHlfc3NpemVfdCBsZWZ0aW5kZXg7Ci0gICAgUHlfc3NpemVfdCBuOwotICAgIFB5T2JqZWN0ICppdGVtOwotCi0gICAgaWYgKFB5X1NJWkUoZGVxdWUpID09IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIC8qIER1cmluZyB0aGUgcHJvY2VzcyBvZiBjbGVhcmluZyBhIGRlcXVlLCBkZWNyZWZzIGNhbiBjYXVzZSB0aGUKLSAgICAgICBkZXF1ZSB0byBtdXRhdGUuICBUbyBhdm9pZCBmYXRhbCBjb25mdXNpb24sIHdlIGhhdmUgdG8gbWFrZSB0aGUKLSAgICAgICBkZXF1ZSBlbXB0eSBiZWZvcmUgY2xlYXJpbmcgdGhlIGJsb2NrcyBhbmQgbmV2ZXIgcmVmZXIgdG8KLSAgICAgICBhbnl0aGluZyB2aWEgZGVxdWUtPnJlZiB3aGlsZSBjbGVhcmluZy4gIChUaGlzIGlzIHRoZSBzYW1lCi0gICAgICAgdGVjaG5pcXVlIHVzZWQgZm9yIGNsZWFyaW5nIGxpc3RzLCBzZXRzLCBhbmQgZGljdHMuKQotCi0gICAgICAgTWFraW5nIHRoZSBkZXF1ZSBlbXB0eSByZXF1aXJlcyBhbGxvY2F0aW5nIGEgbmV3IGVtcHR5IGJsb2NrLiAgSW4KLSAgICAgICB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCBtZW1vcnkgaXMgZnVsbCwgd2UgZmFsbCBiYWNrIHRvIGFuCi0gICAgICAgYWx0ZXJuYXRlIG1ldGhvZCB0aGF0IGRvZXNuJ3QgcmVxdWlyZSBhIG5ldyBibG9jay4gIFJlcGVhdGluZwotICAgICAgIHBvcHMgaW4gYSB3aGlsZS1sb29wIGlzIHNsb3dlciwgcG9zc2libHkgcmUtZW50cmFudCAoYW5kIGEgY2xldmVyCi0gICAgICAgYWR2ZXJzYXJ5IGNvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHRlcm1pbmF0ZSkuCi0gICAgKi8KLQotICAgIGIgPSBuZXdibG9jaygwKTsKLSAgICBpZiAoYiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gYWx0ZXJuYXRlX21ldGhvZDsKLSAgICB9Ci0KLSAgICAvKiBSZW1lbWJlciB0aGUgb2xkIHNpemUsIGxlZnRibG9jaywgYW5kIGxlZnRpbmRleCAqLwotICAgIGxlZnRibG9jayA9IGRlcXVlLT5sZWZ0YmxvY2s7Ci0gICAgbGVmdGluZGV4ID0gZGVxdWUtPmxlZnRpbmRleDsKLSAgICBuID0gUHlfU0laRShkZXF1ZSk7Ci0KLSAgICAvKiBTZXQgdGhlIGRlcXVlIHRvIGJlIGVtcHR5IHVzaW5nIHRoZSBuZXdseSBhbGxvY2F0ZWQgYmxvY2sgKi8KLSAgICBNQVJLX0VORChiLT5sZWZ0bGluayk7Ci0gICAgTUFSS19FTkQoYi0+cmlnaHRsaW5rKTsKLSAgICBQeV9TSVpFKGRlcXVlKSA9IDA7Ci0gICAgZGVxdWUtPmxlZnRibG9jayA9IGI7Ci0gICAgZGVxdWUtPnJpZ2h0YmxvY2sgPSBiOwotICAgIGRlcXVlLT5sZWZ0aW5kZXggPSBDRU5URVIgKyAxOwotICAgIGRlcXVlLT5yaWdodGluZGV4ID0gQ0VOVEVSOwotICAgIGRlcXVlLT5zdGF0ZSsrOwotCi0gICAgLyogTm93IHRoZSBvbGQgc2l6ZSwgbGVmdGJsb2NrLCBhbmQgbGVmdGluZGV4IGFyZSBkaXNjb25uZWN0ZWQgZnJvbQotICAgICAgIHRoZSBlbXB0eSBkZXF1ZSBhbmQgd2UgY2FuIHVzZSB0aGVtIHRvIGRlY3JlZiB0aGUgcG9pbnRlcnMuCi0gICAgKi8KLSAgICB3aGlsZSAobi0tKSB7Ci0gICAgICAgIGl0ZW0gPSBsZWZ0YmxvY2stPmRhdGFbbGVmdGluZGV4XTsKLSAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICBsZWZ0aW5kZXgrKzsKLSAgICAgICAgaWYgKGxlZnRpbmRleCA9PSBCTE9DS0xFTiAmJiBuKSB7Ci0gICAgICAgICAgICBDSEVDS19OT1RfRU5EKGxlZnRibG9jay0+cmlnaHRsaW5rKTsKLSAgICAgICAgICAgIHByZXZibG9jayA9IGxlZnRibG9jazsKLSAgICAgICAgICAgIGxlZnRibG9jayA9IGxlZnRibG9jay0+cmlnaHRsaW5rOwotICAgICAgICAgICAgbGVmdGluZGV4ID0gMDsKLSAgICAgICAgICAgIGZyZWVibG9jayhwcmV2YmxvY2spOwotICAgICAgICB9Ci0gICAgfQotICAgIENIRUNLX0VORChsZWZ0YmxvY2stPnJpZ2h0bGluayk7Ci0gICAgZnJlZWJsb2NrKGxlZnRibG9jayk7Ci0gICAgcmV0dXJuOwotCi0gIGFsdGVybmF0ZV9tZXRob2Q6Ci0gICAgd2hpbGUgKFB5X1NJWkUoZGVxdWUpKSB7Ci0gICAgICAgIGl0ZW0gPSBkZXF1ZV9wb3AoZGVxdWUsIE5VTEwpOwotICAgICAgICBhc3NlcnQgKGl0ZW0gIT0gTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBpbnQKIHZhbGlkX2luZGV4KFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBsaW1pdCkKIHsKLSAgICAvKiBUaGUgY2FzdCB0byBzaXplX3QgbGV0IHVzIHVzZSBqdXN0IGEgc2luZ2xlIGNvbXBhcmlzb24KKyAgICAvKiBUaGUgY2FzdCB0byBzaXplX3QgbGV0cyB1cyB1c2UganVzdCBhIHNpbmdsZSBjb21wYXJpc29uCiAgICAgICAgdG8gY2hlY2sgd2hldGhlciBpIGlzIGluIHRoZSByYW5nZTogMCA8PSBpIDwgbGltaXQgKi8KICAgICByZXR1cm4gKHNpemVfdCkgaSA8IChzaXplX3QpIGxpbWl0OwogfQpAQCAtMTE0MywxNCArMTIxNywxNiBAQAogICAgICAgICBpID0gKFB5X3NzaXplX3QpKChzaXplX3QpIGkgJSBCTE9DS0xFTik7CiAgICAgICAgIGlmIChpbmRleCA8IChQeV9TSVpFKGRlcXVlKSA+PiAxKSkgewogICAgICAgICAgICAgYiA9IGRlcXVlLT5sZWZ0YmxvY2s7Ci0gICAgICAgICAgICB3aGlsZSAobi0tKQorICAgICAgICAgICAgbisrOworICAgICAgICAgICAgd2hpbGUgKC0tbikKICAgICAgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbiA9IChQeV9zc2l6ZV90KSgKICAgICAgICAgICAgICAgICAgICAgKChzaXplX3QpKGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSAtIDEpKQogICAgICAgICAgICAgICAgICAgICAvIEJMT0NLTEVOIC0gbik7CiAgICAgICAgICAgICBiID0gZGVxdWUtPnJpZ2h0YmxvY2s7Ci0gICAgICAgICAgICB3aGlsZSAobi0tKQorICAgICAgICAgICAgbisrOworICAgICAgICAgICAgd2hpbGUgKC0tbikKICAgICAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTk0LDE0ICsxMjcwLDE2IEBACiAgICAgaSA9IChQeV9zc2l6ZV90KSgoc2l6ZV90KSBpICUgQkxPQ0tMRU4pOwogICAgIGlmIChpbmRleCA8PSBoYWxmbGVuKSB7CiAgICAgICAgIGIgPSBkZXF1ZS0+bGVmdGJsb2NrOwotICAgICAgICB3aGlsZSAobi0tKQorICAgICAgICBuKys7CisgICAgICAgIHdoaWxlICgtLW4pCiAgICAgICAgICAgICBiID0gYi0+cmlnaHRsaW5rOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG4gPSAoUHlfc3NpemVfdCkoCiAgICAgICAgICAgICAgICAgKChzaXplX3QpKGRlcXVlLT5sZWZ0aW5kZXggKyBQeV9TSVpFKGRlcXVlKSAtIDEpKQogICAgICAgICAgICAgICAgIC8gQkxPQ0tMRU4gLSBuKTsKICAgICAgICAgYiA9IGRlcXVlLT5yaWdodGJsb2NrOwotICAgICAgICB3aGlsZSAobi0tKQorICAgICAgICBuKys7CisgICAgICAgIHdoaWxlICgtLW4pCiAgICAgICAgICAgICBiID0gYi0+bGVmdGxpbms7CiAgICAgfQogICAgIFB5X0lOQ1JFRih2KTsKQEAgLTEyMTEsMTUgKzEyODksNiBAQAogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotZGVxdWVfY2xlYXJtZXRob2QoZGVxdWVvYmplY3QgKmRlcXVlKQotewotICAgIGRlcXVlX2NsZWFyKGRlcXVlKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotUHlEb2NfU1RSVkFSKGNsZWFyX2RvYywgIlJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUuIik7Ci0KIHN0YXRpYyB2b2lkCiBkZXF1ZV9kZWFsbG9jKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKQEAgLTEyNDMsNiArMTMxMiw3IEBACiAgICAgUHlPYmplY3QgKml0ZW07CiAgICAgUHlfc3NpemVfdCBpbmRleDsKICAgICBQeV9zc2l6ZV90IGluZGV4bG8gPSBkZXF1ZS0+bGVmdGluZGV4OworICAgIFB5X3NzaXplX3QgaW5kZXhoaWdoOwogCiAgICAgZm9yIChiID0gZGVxdWUtPmxlZnRibG9jazsgYiAhPSBkZXF1ZS0+cmlnaHRibG9jazsgYiA9IGItPnJpZ2h0bGluaykgewogICAgICAgICBmb3IgKGluZGV4ID0gaW5kZXhsbzsgaW5kZXggPCBCTE9DS0xFTiA7IGluZGV4KyspIHsKQEAgLTEyNTEsNyArMTMyMSw4IEBACiAgICAgICAgIH0KICAgICAgICAgaW5kZXhsbyA9IDA7CiAgICAgfQotICAgIGZvciAoaW5kZXggPSBpbmRleGxvOyBpbmRleCA8PSBkZXF1ZS0+cmlnaHRpbmRleDsgaW5kZXgrKykgeworICAgIGluZGV4aGlnaCA9IGRlcXVlLT5yaWdodGluZGV4OworICAgIGZvciAoaW5kZXggPSBpbmRleGxvOyBpbmRleCA8PSBpbmRleGhpZ2g7IGluZGV4KyspIHsKICAgICAgICAgaXRlbSA9IGItPmRhdGFbaW5kZXhdOwogICAgICAgICBQeV9WSVNJVChpdGVtKTsKICAgICB9CkBAIC0xMjU5LDQ1ICsxMzMwLDMzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXF1ZV9jb3B5KFB5T2JqZWN0ICpkZXF1ZSkKLXsKLSAgICBpZiAoKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuID09IC0xKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKShQeV9UWVBFKGRlcXVlKSksICJPIiwgZGVxdWUsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiT2kiLAotICAgICAgICAgICAgZGVxdWUsICgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbiwgTlVMTCk7Ci19Ci0KLVB5RG9jX1NUUlZBUihjb3B5X2RvYywgIlJldHVybiBhIHNoYWxsb3cgY29weSBvZiBhIGRlcXVlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfcmVkdWNlKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKnJlc3VsdCwgKmFzbGlzdDsKKyAgICBQeU9iamVjdCAqZGljdCwgKml0OwogICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAogICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKWRlcXVlLCAmUHlJZF9fX2RpY3RfXyk7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgYXNsaXN0ID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWRlcXVlKTsKLSAgICBpZiAoYXNsaXN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICAgICAgZGljdCA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihkaWN0KTsKKyAgICB9CisKKyAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoKFB5T2JqZWN0ICopZGVxdWUpOworICAgIGlmIChpdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChkaWN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gLTEpCi0gICAgICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPKE8pIiwgUHlfVFlQRShkZXF1ZSksIGFzbGlzdCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk8oT24pIiwgUHlfVFlQRShkZXF1ZSksIGFzbGlzdCwgZGVxdWUtPm1heGxlbik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGRlcXVlLT5tYXhsZW4gPT0gLTEpCi0gICAgICAgICAgICByZXN1bHQgPSBQeV9CdWlsZFZhbHVlKCJPKE9PKU8iLCBQeV9UWVBFKGRlcXVlKSwgYXNsaXN0LCBQeV9Ob25lLCBkaWN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPbilPIiwgUHlfVFlQRShkZXF1ZSksIGFzbGlzdCwgZGVxdWUtPm1heGxlbiwgZGljdCk7CisKKyAgICBpZiAoZGVxdWUtPm1heGxlbiA8IDApIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKU5OIiwgUHlfVFlQRShkZXF1ZSksIGRpY3QsIGl0KTsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICBQeV9ERUNSRUYoYXNsaXN0KTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKW4pTk4iLCBQeV9UWVBFKGRlcXVlKSwgZGVxdWUtPm1heGxlbiwgZGljdCwgaXQpOworICAgIH0KIH0KIAogUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOwpAQCAtMTMyMCw3ICsxMzc5LDcgQEAKICAgICAgICAgUHlfUmVwckxlYXZlKGRlcXVlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICgoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4gIT0gLTEpCisgICAgaWYgKCgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbiA+PSAwKQogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZGVxdWUoJVIsIG1heGxlbj0lemQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNsaXN0LCAoKGRlcXVlb2JqZWN0ICopZGVxdWUpLT5tYXhsZW4pOwogICAgIGVsc2UKQEAgLTEzODEsNyArMTQ0MCw3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHgpOwogICAgICAgICBQeV9ERUNSRUYoeSk7Ci0gICAgICAgIGlmIChiID09IC0xKQorICAgICAgICBpZiAoYiA8IDApCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogICAgIC8qIFdlIHJlYWNoZWQgdGhlIGVuZCBvZiBvbmUgZGVxdWUgb3IgYm90aCAqLwpAQCAtMTQxNiw4ICsxNDc1LDE0IEBACiAgICAgUHlfc3NpemVfdCBtYXhsZW4gPSAtMTsKICAgICBjaGFyICprd2xpc3RbXSA9IHsiaXRlcmFibGUiLCAibWF4bGVuIiwgMH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RhcmdzLCAifE9POmRlcXVlIiwga3dsaXN0LCAmaXRlcmFibGUsICZtYXhsZW5vYmopKQotICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGt3ZGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZXF1ZSgpIiwgMCwgMiwgJml0ZXJhYmxlLCAmbWF4bGVub2JqKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RhcmdzLCAifE9POmRlcXVlIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlcmFibGUsICZtYXhsZW5vYmopKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAobWF4bGVub2JqICE9IE5VTEwgJiYgbWF4bGVub2JqICE9IFB5X05vbmUpIHsKICAgICAgICAgbWF4bGVuID0gUHlMb25nX0FzU3NpemVfdChtYXhsZW5vYmopOwogICAgICAgICBpZiAobWF4bGVuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC0xNDQ2LDcgKzE1MTEsNyBAQAogICAgIFB5X3NzaXplX3QgYmxvY2tzOwogCiAgICAgcmVzID0gX1B5T2JqZWN0X1NJWkUoUHlfVFlQRShkZXF1ZSkpOwotICAgIGJsb2NrcyA9IChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgKyBCTE9DS0xFTiAtIDEpIC8gQkxPQ0tMRU47CisgICAgYmxvY2tzID0gKHNpemVfdCkoZGVxdWUtPmxlZnRpbmRleCArIFB5X1NJWkUoZGVxdWUpICsgQkxPQ0tMRU4gLSAxKSAvIEJMT0NLTEVOOwogICAgIGFzc2VydChkZXF1ZS0+bGVmdGluZGV4ICsgUHlfU0laRShkZXF1ZSkgLSAxID09CiAgICAgICAgICAgIChibG9ja3MgLSAxKSAqIEJMT0NLTEVOICsgZGVxdWUtPnJpZ2h0aW5kZXgpOwogICAgIHJlcyArPSBibG9ja3MgKiBzaXplb2YoYmxvY2spOwpAQCAtMTQ2NSw3ICsxNTMwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZV9nZXRfbWF4bGVuKGRlcXVlb2JqZWN0ICpkZXF1ZSkKIHsKLSAgICBpZiAoZGVxdWUtPm1heGxlbiA9PSAtMSkKKyAgICBpZiAoZGVxdWUtPm1heGxlbiA8IDApCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoZGVxdWUtPm1heGxlbik7CiB9CkBAIC0xODA2LDcgKzE4NzEsNyBAQAogICAgIGl0ZW0gPSBpdC0+Yi0+ZGF0YVtpdC0+aW5kZXhdOwogICAgIGl0LT5pbmRleC0tOwogICAgIGl0LT5jb3VudGVyLS07Ci0gICAgaWYgKGl0LT5pbmRleCA9PSAtMSAmJiBpdC0+Y291bnRlciA+IDApIHsKKyAgICBpZiAoaXQtPmluZGV4IDwgMCAmJiBpdC0+Y291bnRlciA+IDApIHsKICAgICAgICAgQ0hFQ0tfTk9UX0VORChpdC0+Yi0+bGVmdGxpbmspOwogICAgICAgICBpdC0+YiA9IGl0LT5iLT5sZWZ0bGluazsKICAgICAgICAgaXQtPmluZGV4ID0gQkxPQ0tMRU4gLSAxOwpAQCAtMTk4MCw3ICsyMDQ1LDcgQEAKICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBkZC0+ZGVmYXVsdF9mYWN0b3J5KTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCAiKCkiKTsKKyAgICBpdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopZGQsICZQeUlkX2l0ZW1zLCBOVUxMKTsKICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjIzNSwxMyArMjMwMCwxMyBAQAogCiAgICAgICAgICAgICBvbGR2YWwgPSBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgaGFzaCk7CiAgICAgICAgICAgICBpZiAob2xkdmFsID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG9uZSwgaGFzaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbV9Lbm93bkhhc2gobWFwcGluZywga2V5LCBvbmUsIGhhc2gpIDwgMCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBuZXd2YWwgPSBQeU51bWJlcl9BZGQob2xkdmFsLCBvbmUpOwogICAgICAgICAgICAgICAgIGlmIChuZXd2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1fS25vd25IYXNoKG1hcHBpbmcsIGtleSwgbmV3dmFsLCBoYXNoKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtX0tub3duSGFzaChtYXBwaW5nLCBrZXksIG5ld3ZhbCwgaGFzaCkgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgICAgICAgICAgUHlfQ0xFQVIobmV3dmFsKTsKICAgICAgICAgICAgIH0KQEAgLTIyNjcsNyArMjMzMiw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYob2xkdmFsKTsKICAgICAgICAgICAgIGlmIChuZXd2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgbmV3dmFsKSA9PSAtMSkKKyAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRJdGVtKG1hcHBpbmcsIGtleSwgbmV3dmFsKSA8IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBQeV9DTEVBUihuZXd2YWwpOwogICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jc3YuYyBiL01vZHVsZXMvX2Nzdi5jCmluZGV4IGI0MjgyNzkuLjdhNzg1NDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Nzdi5jCisrKyBiL01vZHVsZXMvX2Nzdi5jCkBAIC02MCwxMCArNjAsMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFF1b3RlU3R5bGUgc3R5bGU7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogfSBTdHlsZURlc2M7CiAKLXN0YXRpYyBTdHlsZURlc2MgcXVvdGVfc3R5bGVzW10gPSB7CitzdGF0aWMgY29uc3QgU3R5bGVEZXNjIHF1b3RlX3N0eWxlc1tdID0gewogICAgIHsgUVVPVEVfTUlOSU1BTCwgICAgIlFVT1RFX01JTklNQUwiIH0sCiAgICAgeyBRVU9URV9BTEwsICAgICAgICAiUVVPVEVfQUxMIiB9LAogICAgIHsgUVVPVEVfTk9OTlVNRVJJQywgIlFVT1RFX05PTk5VTUVSSUMiIH0sCkBAIC0yODYsNyArMjg2LDcgQEAKIHN0YXRpYyBpbnQKIGRpYWxlY3RfY2hlY2tfcXVvdGluZyhpbnQgcXVvdGluZykKIHsKLSAgICBTdHlsZURlc2MgKnFzOworICAgIGNvbnN0IFN0eWxlRGVzYyAqcXM7CiAKICAgICBmb3IgKHFzID0gcXVvdGVfc3R5bGVzOyBxcy0+bmFtZTsgcXMrKykgewogICAgICAgICBpZiAoKGludClxcy0+c3R5bGUgPT0gcXVvdGluZykKQEAgLTUxOCwxNSArNTE4LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogX2NhbGxfZGlhbGVjdChQeU9iamVjdCAqZGlhbGVjdF9pbnN0LCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpjdG9yX2FyZ3M7Ci0gICAgUHlPYmplY3QgKmRpYWxlY3Q7Ci0KLSAgICBjdG9yX2FyZ3MgPSBQeV9CdWlsZFZhbHVlKGRpYWxlY3RfaW5zdCA/ICIoTykiIDogIigpIiwgZGlhbGVjdF9pbnN0KTsKLSAgICBpZiAoY3Rvcl9hcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGRpYWxlY3QgPSBQeU9iamVjdF9DYWxsKChQeU9iamVjdCAqKSZEaWFsZWN0X1R5cGUsIGN0b3JfYXJncywga3dhcmdzKTsKLSAgICBQeV9ERUNSRUYoY3Rvcl9hcmdzKTsKLSAgICByZXR1cm4gZGlhbGVjdDsKKyAgICBQeU9iamVjdCAqdHlwZSA9IChQeU9iamVjdCAqKSZEaWFsZWN0X1R5cGU7CisgICAgaWYgKGRpYWxlY3RfaW5zdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCh0eXBlLCAmZGlhbGVjdF9pbnN0LCAxLCBrd2FyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QodHlwZSwgTlVMTCwgMCwga3dhcmdzKTsKKyAgICB9CiB9CiAKIC8qCkBAIC0xNjQ4LDcgKzE2NDYsNyBAQAogUHlJbml0X19jc3Yodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlOwotICAgIFN0eWxlRGVzYyAqc3R5bGU7CisgICAgY29uc3QgU3R5bGVEZXNjICpzdHlsZTsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJkRpYWxlY3RfVHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCmluZGV4IDI5MzUyOTIuLmIzYTk1ODEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwpAQCAtMTExLDEyICsxMTEsNiBAQAogI2lmbmRlZiBJU19JTlRSRVNPVVJDRQogI2RlZmluZSBJU19JTlRSRVNPVVJDRSh4KSAoKChzaXplX3QpKHgpID4+IDE2KSA9PSAwKQogI2VuZGlmCi0jIGlmZGVmIF9XSU4zMl9XQ0UKLS8qIFVubGlrZSBkZXNrdG9wIFdpbmRvd3MsIFdpbkNFIGhhcyBib3RoIFcgYW5kIEEgdmFyaWFudHMgb2YKLSAgIEdldFByb2NBZGRyZXNzLCBidXQgdGhlIGRlZmF1bHQgVyB2ZXJzaW9uIGlzIG5vdCB3aGF0IHdlIHdhbnQgKi8KLSMgIHVuZGVmIEdldFByb2NBZGRyZXNzCi0jICBkZWZpbmUgR2V0UHJvY0FkZHJlc3MgR2V0UHJvY0FkZHJlc3NBCi0jIGVuZGlmCiAjZWxzZQogI2luY2x1ZGUgImN0eXBlc19kbGZjbi5oIgogI2VuZGlmCkBAIC00MzUsNyArNDI5LDcgQEAKICAgICByZXR1cm4gU3RydWN0VW5pb25UeXBlX25ldyh0eXBlLCBhcmdzLCBrd2RzLCAwKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9hZGRyZXNzX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYWRkcmVzc19kb2NbXSA9CiAiQy5mcm9tX2FkZHJlc3MoaW50ZWdlcikgLT4gQyBpbnN0YW5jZVxuYWNjZXNzIGEgQyBpbnN0YW5jZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDUzLDcgKzQ0Nyw3IEBACiAgICAgcmV0dXJuIFB5Q0RhdGFfQXRBZGRyZXNzKHR5cGUsIGJ1Zik7CiB9CiAKLXN0YXRpYyBjaGFyIGZyb21fYnVmZmVyX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYnVmZmVyX2RvY1tdID0KICJDLmZyb21fYnVmZmVyKG9iamVjdCwgb2Zmc2V0PTApIC0+IEMgaW5zdGFuY2VcbmNyZWF0ZSBhIEMgaW5zdGFuY2UgZnJvbSBhIHdyaXRlYWJsZSBidWZmZXIiOwogCiBzdGF0aWMgaW50CkBAIC01MjQsNyArNTE4LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY2hhciBmcm9tX2J1ZmZlcl9jb3B5X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyb21fYnVmZmVyX2NvcHlfZG9jW10gPQogIkMuZnJvbV9idWZmZXJfY29weShvYmplY3QsIG9mZnNldD0wKSAtPiBDIGluc3RhbmNlXG5jcmVhdGUgYSBDIGluc3RhbmNlIGZyb20gYSByZWFkYWJsZSBidWZmZXIiOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTY2LDcgKzU2MCw3IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIgaW5fZGxsX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGluX2RsbF9kb2NbXSA9CiAiQy5pbl9kbGwoZGxsLCBuYW1lKSAtPiBDIGluc3RhbmNlXG5hY2Nlc3MgYSBDIGluc3RhbmNlIGluIGEgZGxsIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTYyMyw3ICs2MTcsNyBAQAogICAgIHJldHVybiBQeUNEYXRhX0F0QWRkcmVzcyh0eXBlLCBhZGRyZXNzKTsKIH0KIAotc3RhdGljIGNoYXIgZnJvbV9wYXJhbV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmcm9tX3BhcmFtX2RvY1tdID0KICJDb252ZXJ0IGEgUHl0aG9uIG9iamVjdCBpbnRvIGEgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXIuIjsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0ODksNyArMTQ4Myw3IEBACiAKICovCiAKLXN0YXRpYyBjaGFyICpTSU1QTEVfVFlQRV9DSEFSUyA9ICJjYkJoSGlJbExkZnV6WnFRUFhPdj9nIjsKK3N0YXRpYyBjb25zdCBjaGFyIFNJTVBMRV9UWVBFX0NIQVJTW10gPSAiY2JCaEhpSWxMZGZ1elpxUVBYT3Y/ZyI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjX3djaGFyX3BfZnJvbV9wYXJhbShQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlKQpAQCAtMjQxNCw3ICsyNDA4LDcgQEAKICAgICBjaGFyICpjcCA9IHN0cmluZzsKICAgICBzaXplX3QgYnl0ZXNfbGVmdDsKIAotICAgIGFzc2VydChzaXplb2Yoc3RyaW5nKSAtIDEgPiBzaXplb2YoUHlfc3NpemVfdCkgKiAyKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHN0cmluZykgLSAxID4gc2l6ZW9mKFB5X3NzaXplX3QpICogMik7CiAgICAgY3AgKz0gc3ByaW50ZihjcCwgIiV4IiwgUHlfU0FGRV9ET1dOQ0FTVChpbmRleCwgUHlfc3NpemVfdCwgaW50KSk7CiAgICAgd2hpbGUgKHRhcmdldC0+Yl9iYXNlKSB7CiAgICAgICAgIGJ5dGVzX2xlZnQgPSBzaXplb2Yoc3RyaW5nKSAtIChjcCAtIHN0cmluZykgLSAxOwpAQCAtMzA3NSw3ICszMDY5LDcgQEAKIH07CiAKICNpZmRlZiBNU19XSU4zMgotc3RhdGljIFBQUk9DIEZpbmRBZGRyZXNzKHZvaWQgKmhhbmRsZSwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR5cGUpCitzdGF0aWMgUFBST0MgRmluZEFkZHJlc3Modm9pZCAqaGFuZGxlLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHlwZSkKIHsKICNpZmRlZiBNU19XSU42NAogICAgIC8qIHdpbjY0IGhhcyBubyBzdGRjYWxsIGNhbGxpbmcgY29udiwgc28gaXQgc2hvdWxkCkBAIC0zMjA5LDcgKzMyMDMsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1fZ2V0X25hbWUoUHlPYmplY3QgKm9iaiwgY2hhciAqKnBuYW1lKQorX2dldF9uYW1lKFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKipwbmFtZSkKIHsKICNpZmRlZiBNU19XSU4zMgogICAgIGlmIChQeUxvbmdfQ2hlY2sob2JqKSkgewpAQCAtMzIzNyw3ICszMjMxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUNGdW5jUHRyX0Zyb21EbGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIGludCAoKiBhZGRyZXNzKSh2b2lkKTsKICAgICBQeU9iamVjdCAqZnR1cGxlOwogICAgIFB5T2JqZWN0ICpkbGw7CkBAIC01MTI3LDEzICs1MTIxLDEyIEBACiAKICNpZmRlZiBNU19XSU4zMgogCi1zdGF0aWMgY2hhciBjb21lcnJvcl9kb2NbXSA9ICJSYWlzZWQgd2hlbiBhIENPTSBtZXRob2QgY2FsbCBmYWlsZWQuIjsKK3N0YXRpYyBjb25zdCBjaGFyIGNvbWVycm9yX2RvY1tdID0gIlJhaXNlZCB3aGVuIGEgQ09NIG1ldGhvZCBjYWxsIGZhaWxlZC4iOwogCiBpbnQKIGNvbWVycm9yX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqaHJlc3VsdCwgKnRleHQsICpkZXRhaWxzOwotICAgIFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqYnNlbGY7CiAgICAgUHlPYmplY3QgKmE7CiAgICAgaW50IHN0YXR1czsKIApAQCAtNTE2MCw5ICs1MTUzLDggQEAKICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhzZWxmLCAiZGV0YWlscyIsIGRldGFpbHMpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgYnNlbGYgPSAoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZjsKICAgICBQeV9JTkNSRUYoYXJncyk7Ci0gICAgUHlfU0VUUkVGKGJzZWxmLT5hcmdzLCBhcmdzKTsKKyAgICBQeV9TRVRSRUYoKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+YXJncywgYXJncyk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTU0OTIsMTQgKzU0ODQsMTQgQEAKICNlbmRpZgogCiAvKiBJZiBSVExEX0xPQ0FMIGlzIG5vdCBkZWZpbmVkIChXaW5kb3dzISksIHNldCBpdCB0byB6ZXJvLiAqLwotI2lmbmRlZiBSVExEX0xPQ0FMCisjaWYgIUhBVkVfREVDTF9SVExEX0xPQ0FMCiAjZGVmaW5lIFJUTERfTE9DQUwgMAogI2VuZGlmCiAKIC8qIElmIFJUTERfR0xPQkFMIGlzIG5vdCBkZWZpbmVkIChjeWd3aW4pLCBzZXQgaXQgdG8gdGhlIHNhbWUgdmFsdWUgYXMKICAgIFJUTERfTE9DQUwuCiAqLwotI2lmbmRlZiBSVExEX0dMT0JBTAorI2lmICFIQVZFX0RFQ0xfUlRMRF9HTE9CQUwKICNkZWZpbmUgUlRMRF9HTE9CQUwgUlRMRF9MT0NBTAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYwppbmRleCAzYzdmODkyLi42MjlkZGY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCkBAIC0yMzMsMTYgKzIzMywxNSBAQAogICAgIHJldHVybiAoKmZ1bmMpKHRhYmxlKTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi1FWFBPUlQoUFlfTE9OR19MT05HKSBfdGVzdGZ1bmNfcV9iaGlsZmRxKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGQsIFBZX0xPTkdfTE9ORyBxKQorRVhQT1JUKGxvbmcgbG9uZykgX3Rlc3RmdW5jX3FfYmhpbGZkcShzaWduZWQgY2hhciBiLCBzaG9ydCBoLCBpbnQgaSwgbG9uZyBsLCBmbG9hdCBmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZCwgbG9uZyBsb25nIHEpCiB7Ci0gICAgcmV0dXJuIChQWV9MT05HX0xPTkcpKGIgKyBoICsgaSArIGwgKyBmICsgZCArIHEpOworICAgIHJldHVybiAobG9uZyBsb25nKShiICsgaCArIGkgKyBsICsgZiArIGQgKyBxKTsKIH0KIAotRVhQT1JUKFBZX0xPTkdfTE9ORykgX3Rlc3RmdW5jX3FfYmhpbGZkKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsIGRvdWJsZSBkKQorRVhQT1JUKGxvbmcgbG9uZykgX3Rlc3RmdW5jX3FfYmhpbGZkKHNpZ25lZCBjaGFyIGIsIHNob3J0IGgsIGludCBpLCBsb25nIGwsIGZsb2F0IGYsIGRvdWJsZSBkKQogewotICAgIHJldHVybiAoUFlfTE9OR19MT05HKShiICsgaCArIGkgKyBsICsgZiArIGQpOworICAgIHJldHVybiAobG9uZyBsb25nKShiICsgaCArIGkgKyBsICsgZiArIGQpOwogfQogCiBFWFBPUlQoaW50KSBfdGVzdGZ1bmNfY2FsbGJhY2tfaV9pZihpbnQgdmFsdWUsIGludCAoKmZ1bmMpKGludCkpCkBAIC0yNTUsMTAgKzI1NCwxMCBAQAogICAgIHJldHVybiBzdW07CiB9CiAKLUVYUE9SVChQWV9MT05HX0xPTkcpIF90ZXN0ZnVuY19jYWxsYmFja19xX3FmKFBZX0xPTkdfTE9ORyB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xPTkdfTE9ORyAoKmZ1bmMpKFBZX0xPTkdfTE9ORykpCitFWFBPUlQobG9uZyBsb25nKSBfdGVzdGZ1bmNfY2FsbGJhY2tfcV9xZihsb25nIGxvbmcgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgKCpmdW5jKShsb25nIGxvbmcpKQogewotICAgIFBZX0xPTkdfTE9ORyBzdW0gPSAwOworICAgIGxvbmcgbG9uZyBzdW0gPSAwOwogCiAgICAgd2hpbGUgKHZhbHVlICE9IDApIHsKICAgICAgICAgc3VtICs9IGZ1bmModmFsdWUpOwpAQCAtMjY3LDggKzI2Niw2IEBACiAgICAgcmV0dXJuIHN1bTsKIH0KIAotI2VuZGlmCi0KIHR5cGVkZWYgc3RydWN0IHsKICAgICBjaGFyICpuYW1lOwogICAgIGNoYXIgKnZhbHVlOwpAQCAtMzg0LDggKzM4MSw4IEBACiB7CiB9CiAKLUVYUE9SVChQWV9MT05HX0xPTkcpIGxhc3RfdGZfYXJnX3M7Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSBsYXN0X3RmX2FyZ191OworRVhQT1JUKGxvbmcgbG9uZykgbGFzdF90Zl9hcmdfczsKK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIGxhc3RfdGZfYXJnX3U7CiAKIHN0cnVjdCBCSVRTIHsKICAgICBpbnQgQTogMSwgQjoyLCBDOjMsIEQ6NCwgRTogNSwgRjogNiwgRzogNywgSDogOCwgSTogOTsKQEAgLTQ0OCw4ICs0NDUsOCBAQAogICAgIHsgTlVMTCwgTlVMTCwgMCwgTlVMTH0sCiB9OwogCi0jZGVmaW5lIFMgbGFzdF90Zl9hcmdfcyA9IChQWV9MT05HX0xPTkcpYwotI2RlZmluZSBVIGxhc3RfdGZfYXJnX3UgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKWMKKyNkZWZpbmUgUyBsYXN0X3RmX2FyZ19zID0gKGxvbmcgbG9uZyljCisjZGVmaW5lIFUgbGFzdF90Zl9hcmdfdSA9ICh1bnNpZ25lZCBsb25nIGxvbmcpYwogCiBFWFBPUlQoc2lnbmVkIGNoYXIpIHRmX2Ioc2lnbmVkIGNoYXIgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgY2hhcikgdGZfQih1bnNpZ25lZCBjaGFyIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQpAQCAtNDU5LDggKzQ1Niw4IEBACiBFWFBPUlQodW5zaWduZWQgaW50KSB0Zl9JKHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSB0Zl9sKGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgdGZfTCh1bnNpZ25lZCBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKFBZX0xPTkdfTE9ORykgdGZfcShQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSB0Zl9RKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIHRmX3EobG9uZyBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQorRVhQT1JUKHVuc2lnbmVkIGxvbmcgbG9uZykgdGZfUSh1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIHRmX2YoZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSB0Zl9kKGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nIGRvdWJsZSkgdGZfRChsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KQEAgLTQ3NCw4ICs0NzEsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgX19zdGRjYWxsIHNfdGZfSSh1bnNpZ25lZCBpbnQgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZykgX19zdGRjYWxsIHNfdGZfbChsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGxvbmcpIF9fc3RkY2FsbCBzX3RmX0wodW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIF9fc3RkY2FsbCBzX3RmX3EoUFlfTE9OR19MT05HIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQotRVhQT1JUKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgX19zdGRjYWxsIHNfdGZfUSh1bnNpZ25lZCBQWV9MT05HX0xPTkcgYykgeyBVOyByZXR1cm4gYy8zOyB9CitFWFBPUlQobG9uZyBsb25nKSBfX3N0ZGNhbGwgc190Zl9xKGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX1EodW5zaWduZWQgbG9uZyBsb25nIGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGZsb2F0KSBfX3N0ZGNhbGwgc190Zl9mKGZsb2F0IGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGRvdWJsZSkgX19zdGRjYWxsIHNfdGZfZChkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIF9fc3RkY2FsbCBzX3RmX0QobG9uZyBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CkBAIC00OTAsOCArNDg3LDggQEAKIEVYUE9SVCh1bnNpZ25lZCBpbnQpIHRmX2JJKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGludCBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChsb25nKSB0Zl9ibChzaWduZWQgY2hhciB4LCBsb25nIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKHVuc2lnbmVkIGxvbmcpIHRmX2JMKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQoUFlfTE9OR19MT05HKSB0Zl9icShzaWduZWQgY2hhciB4LCBQWV9MT05HX0xPTkcgYykgeyBTOyByZXR1cm4gYy8zOyB9Ci1FWFBPUlQodW5zaWduZWQgUFlfTE9OR19MT05HKSB0Zl9iUShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYykgeyBVOyByZXR1cm4gYy8zOyB9CitFWFBPUlQobG9uZyBsb25nKSB0Zl9icShzaWduZWQgY2hhciB4LCBsb25nIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CitFWFBPUlQodW5zaWduZWQgbG9uZyBsb25nKSB0Zl9iUShzaWduZWQgY2hhciB4LCB1bnNpZ25lZCBsb25nIGxvbmcgYykgeyBVOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZmxvYXQpIHRmX2JmKHNpZ25lZCBjaGFyIHgsIGZsb2F0IGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGRvdWJsZSkgdGZfYmQoc2lnbmVkIGNoYXIgeCwgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcgZG91YmxlKSB0Zl9iRChzaWduZWQgY2hhciB4LCBsb25nIGRvdWJsZSBjKSB7IFM7IHJldHVybiBjLzM7IH0KQEAgLTUwNiw4ICs1MDMsOCBAQAogRVhQT1JUKHVuc2lnbmVkIGludCkgX19zdGRjYWxsIHNfdGZfYkkoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgaW50IGMpIHsgVTsgcmV0dXJuIGMvMzsgfQogRVhQT1JUKGxvbmcpIF9fc3RkY2FsbCBzX3RmX2JsKHNpZ25lZCBjaGFyIHgsIGxvbmcgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQodW5zaWduZWQgbG9uZykgX19zdGRjYWxsIHNfdGZfYkwoc2lnbmVkIGNoYXIgeCwgdW5zaWduZWQgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KLUVYUE9SVChQWV9MT05HX0xPTkcpIF9fc3RkY2FsbCBzX3RmX2JxKHNpZ25lZCBjaGFyIHgsIFBZX0xPTkdfTE9ORyBjKSB7IFM7IHJldHVybiBjLzM7IH0KLUVYUE9SVCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIF9fc3RkY2FsbCBzX3RmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBjKSB7IFU7IHJldHVybiBjLzM7IH0KK0VYUE9SVChsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX2JxKHNpZ25lZCBjaGFyIHgsIGxvbmcgbG9uZyBjKSB7IFM7IHJldHVybiBjLzM7IH0KK0VYUE9SVCh1bnNpZ25lZCBsb25nIGxvbmcpIF9fc3RkY2FsbCBzX3RmX2JRKHNpZ25lZCBjaGFyIHgsIHVuc2lnbmVkIGxvbmcgbG9uZyBjKSB7IFU7IHJldHVybiBjLzM7IH0KIEVYUE9SVChmbG9hdCkgX19zdGRjYWxsIHNfdGZfYmYoc2lnbmVkIGNoYXIgeCwgZmxvYXQgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQoZG91YmxlKSBfX3N0ZGNhbGwgc190Zl9iZChzaWduZWQgY2hhciB4LCBkb3VibGUgYykgeyBTOyByZXR1cm4gYy8zOyB9CiBFWFBPUlQobG9uZyBkb3VibGUpIF9fc3RkY2FsbCBzX3RmX2JEKHNpZ25lZCBjaGFyIHgsIGxvbmcgZG91YmxlIGMpIHsgUzsgcmV0dXJuIGMvMzsgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxiYWNrcy5jCmluZGV4IDkxNDEzZDcuLmI5NThmMzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9jYWxsYmFja3MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbGJhY2tzLmMKQEAgLTc3LDcgKzc3LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogc3RhdGljIHZvaWQKLVByaW50RXJyb3IoY2hhciAqbXNnLCAuLi4pCitQcmludEVycm9yKGNvbnN0IGNoYXIgKm1zZywgLi4uKQogewogICAgIGNoYXIgYnVmWzUxMl07CiAgICAgUHlPYmplY3QgKmYgPSBQeVN5c19HZXRPYmplY3QoInN0ZGVyciIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwppbmRleCAzMGUzYTk2Li5kMzA0NGYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwpAQCAtMzgyLDcgKzM4Miw3IEBACiAgICAgICAgICAgIHdob3NlIG9wZXJhdGlvbiBpcyBub3QgYWxsb3dlZCBpbiB0aGUgY3VycmVudAogICAgICAgICAgICBtYWNoaW5lIG1vZGUuICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbjogcHJpdmlsZWRnZWQgaW5zdHJ1Y3Rpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGNlcHRpb246IHByaXZpbGVnZWQgaW5zdHJ1Y3Rpb24iKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRV9FWENFUFRJT046CkBAIC00NzQsNyArNDc0LDYgQEAKICAgICAgICAgICAgIHNlbGYtPnRhZywgc2VsZi0+dmFsdWUubCk7CiAgICAgICAgIGJyZWFrOwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzoKICAgICBjYXNlICdRJzoKICAgICAgICAgc3ByaW50ZihidWZmZXIsCkBAIC00ODUsNyArNDg0LDYgQEAKICNlbmRpZgogICAgICAgICAgICAgc2VsZi0+dGFnLCBzZWxmLT52YWx1ZS5xKTsKICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlICdkJzoKICAgICAgICAgc3ByaW50ZihidWZmZXIsICI8Y3BhcmFtICclYycgKCVmKT4iLAogICAgICAgICAgICAgc2VsZi0+dGFnLCBzZWxmLT52YWx1ZS5kKTsKQEAgLTU5Myw5ICs1OTEsNyBAQAogICAgIHNob3J0IGg7CiAgICAgaW50IGk7CiAgICAgbG9uZyBsOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHE7Ci0jZW5kaWYKKyAgICBsb25nIGxvbmcgcTsKICAgICBsb25nIGRvdWJsZSBEOwogICAgIGRvdWJsZSBkOwogICAgIGZsb2F0IGY7CkBAIC05MzAsNyArOTI2LDcgQEAKICAqIFJhaXNlIGEgbmV3IGV4Y2VwdGlvbiAnZXhjX2NsYXNzJywgYWRkaW5nIGFkZGl0aW9uYWwgdGV4dCB0byB0aGUgb3JpZ2luYWwKICAqIGV4Y2VwdGlvbiBzdHJpbmcuCiAgKi8KLXZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY2hhciAqZm10LCAuLi4pCit2b2lkIF9jdHlwZXNfZXh0ZW5kX2Vycm9yKFB5T2JqZWN0ICpleGNfY2xhc3MsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmFyZ3M7CiAgICAgUHlPYmplY3QgKnRwLCAqdiwgKnRiLCAqcywgKmNsc19zdHIsICptc2dfc3RyOwpAQCAtMTIwMyw3ICsxMTk5LDcgQEAKIAogI2lmZGVmIE1TX1dJTjMyCiAKLXN0YXRpYyBjaGFyIGZvcm1hdF9lcnJvcl9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBmb3JtYXRfZXJyb3JfZG9jW10gPQogIkZvcm1hdEVycm9yKFtpbnRlZ2VyXSkgLT4gc3RyaW5nXG5cCiBcblwKIENvbnZlcnQgYSB3aW4zMiBlcnJvciBjb2RlIGludG8gYSBzdHJpbmcuIElmIHRoZSBlcnJvciBjb2RlIGlzIG5vdFxuXApAQCAtMTIyNyw3ICsxMjIzLDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgY2hhciBsb2FkX2xpYnJhcnlfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgbG9hZF9saWJyYXJ5X2RvY1tdID0KICJMb2FkTGlicmFyeShuYW1lKSAtPiBoYW5kbGVcblwKIFxuXAogTG9hZCBhbiBleGVjdXRhYmxlICh1c3VhbGx5IGEgRExMKSwgYW5kIHJldHVybiBhIGhhbmRsZSB0byBpdC5cblwKQEAgLTEyNTYsNyArMTI1Miw3IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIGNoYXIgZnJlZV9saWJyYXJ5X2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGZyZWVfbGlicmFyeV9kb2NbXSA9CiAiRnJlZUxpYnJhcnkoaGFuZGxlKSAtPiB2b2lkXG5cCiBcblwKIEZyZWUgdGhlIGhhbmRsZSBvZiBhbiBleGVjdXRhYmxlIHByZXZpb3VzbHkgbG9hZGVkIGJ5IExvYWRMaWJyYXJ5LlxuIjsKQEAgLTEyNzEsNyArMTI2Nyw3IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKLXN0YXRpYyBjaGFyIGNvcHlfY29tX3BvaW50ZXJfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgY29weV9jb21fcG9pbnRlcl9kb2NbXSA9CiAiQ29weUNvbVBvaW50ZXIoc3JjLCBkc3QpIC0+IEhSRVNVTFQgdmFsdWVcbiI7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzA5LDcgKzEzMDUsNyBAQAogICAgIFB5T2JqZWN0ICpuYW1lLCAqbmFtZTI7CiAgICAgY2hhciAqbmFtZV9zdHI7CiAgICAgdm9pZCAqIGhhbmRsZTsKLSNpZmRlZiBSVExEX0xPQ0FMCisjaWYgSEFWRV9ERUNMX1JUTERfTE9DQUwKICAgICBpbnQgbW9kZSA9IFJUTERfTk9XIHwgUlRMRF9MT0NBTDsKICNlbHNlCiAgICAgLyogY3lnd2luIGRvZXNuJ3QgZGVmaW5lIFJUTERfTE9DQUwgKi8KQEAgLTE0NDEsNyArMTQzNyw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIGZ1bmN0aW9ucwogICovCi1zdGF0aWMgY2hhciBzaXplb2ZfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgc2l6ZW9mX2RvY1tdID0KICJzaXplb2YoQyB0eXBlKSAtPiBpbnRlZ2VyXG4iCiAic2l6ZW9mKEMgaW5zdGFuY2UpIC0+IGludGVnZXJcbiIKICJSZXR1cm4gdGhlIHNpemUgaW4gYnl0ZXMgb2YgYSBDIGluc3RhbmNlIjsKQEAgLTE0NjIsNyArMTQ1OCw3IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyIGFsaWdubWVudF9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBhbGlnbm1lbnRfZG9jW10gPQogImFsaWdubWVudChDIHR5cGUpIC0+IGludGVnZXJcbiIKICJhbGlnbm1lbnQoQyBpbnN0YW5jZSkgLT4gaW50ZWdlclxuIgogIlJldHVybiB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBvZiBhIEMgaW5zdGFuY2UiOwpAQCAtMTQ4NSw3ICsxNDgxLDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIGNoYXIgYnlyZWZfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgYnlyZWZfZG9jW10gPQogImJ5cmVmKEMgaW5zdGFuY2VbLCBvZmZzZXQ9MF0pIC0+IGJ5cmVmLW9iamVjdFxuIgogIlJldHVybiBhIHBvaW50ZXIgbG9va2FsaWtlIHRvIGEgQyBpbnN0YW5jZSwgb25seSB1c2FibGVcbiIKICJhcyBmdW5jdGlvbiBhcmd1bWVudCI7CkBAIC0xNTI5LDcgKzE1MjUsNyBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilwYXJnOwogfQogCi1zdGF0aWMgY2hhciBhZGRyZXNzb2ZfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgYWRkcmVzc29mX2RvY1tdID0KICJhZGRyZXNzb2YoQyBpbnN0YW5jZSkgLT4gaW50ZWdlclxuIgogIlJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgQyBpbnN0YW5jZSBpbnRlcm5hbCBidWZmZXIiOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKaW5kZXggZDY2NmJlNS4uYTQzNTg1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwpAQCAtMzc5LDE0ICszNzksMTIgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIFBZX0xPTkdfTE9ORyAqcCkKK2dldF9sb25nbG9uZyhQeU9iamVjdCAqdiwgbG9uZyBsb25nICpwKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmIChQeUZsb2F0X0NoZWNrKHYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGV4cGVjdGVkIGluc3RlYWQgb2YgZmxvYXQiKTsKQEAgLTQwMiwyMyArNDAwLDIxIEBACiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIHVuc2lnbmVkIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X3Vsb25nbG9uZyhQeU9iamVjdCAqdiwgdW5zaWduZWQgUFlfTE9OR19MT05HICpwKQorZ2V0X3Vsb25nbG9uZyhQeU9iamVjdCAqdiwgdW5zaWduZWQgbG9uZyBsb25nICpwKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChQeUZsb2F0X0NoZWNrKHYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGV4cGVjdGVkIGluc3RlYWQgb2YgZmxvYXQiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICB4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sodik7Ci0gICAgaWYgKHggPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgICpwID0geDsKICAgICByZXR1cm4gMDsKIH0KIAotI2VuZGlmCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogSW50ZWdlciBmaWVsZHMsIHdpdGggYml0ZmllbGQgc3VwcG9ydAogICovCkBAIC03MTUsMTQgKzcxMSw2IEBACiB9CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfQzk5X0JPT0wKLSNkZWZpbmUgQk9PTF9UWVBFIF9Cb29sCi0jZWxzZQotI2RlZmluZSBCT09MX1RZUEUgY2hhcgotI3VuZGVmIFNJWkVPRl9fQk9PTAotI2RlZmluZSBTSVpFT0ZfX0JPT0wgMQotI2VuZGlmCi0KIHN0YXRpYyBQeU9iamVjdCAqCiBib29sX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewpAQCAtNzMwLDEwICs3MTgsMTAgQEAKICAgICBjYXNlIC0xOgogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBjYXNlIDA6Ci0gICAgICAgICooQk9PTF9UWVBFICopcHRyID0gMDsKKyAgICAgICAgKihfQm9vbCAqKXB0ciA9IDA7CiAgICAgICAgIF9SRVQodmFsdWUpOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgICooQk9PTF9UWVBFICopcHRyID0gMTsKKyAgICAgICAgKihfQm9vbCAqKXB0ciA9IDE7CiAgICAgICAgIF9SRVQodmFsdWUpOwogICAgIH0KIH0KQEAgLTc0MSw3ICs3MjksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJvb2xfZ2V0KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKihCT09MX1RZUEUgKilwdHIpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKihfQm9vbCAqKXB0cik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04ODgsMTYgKzg3NiwxNSBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyh2YWwpOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKIHN0YXRpYyBQeU9iamVjdCAqCiBxX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgUFlfTE9OR19MT05HIHg7CisgICAgbG9uZyBsb25nIHZhbDsKKyAgICBsb25nIGxvbmcgeDsKICAgICBpZiAoZ2V0X2xvbmdsb25nKHZhbHVlLCAmdmFsKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG1lbWNweSgmeCwgcHRyLCBzaXplb2YoeCkpOwotICAgIHggPSBTRVQoUFlfTE9OR19MT05HLCB4LCB2YWwsIHNpemUpOworICAgIHggPSBTRVQobG9uZyBsb25nLCB4LCB2YWwsIHNpemUpOwogICAgIG1lbWNweShwdHIsICZ4LCBzaXplb2YoeCkpOwogICAgIF9SRVQodmFsdWUpOwogfQpAQCAtOTA1LDEzICs4OTIsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBxX3NldF9zdyh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFBZX0xPTkdfTE9ORyB2YWw7Ci0gICAgUFlfTE9OR19MT05HIGZpZWxkOworICAgIGxvbmcgbG9uZyB2YWw7CisgICAgbG9uZyBsb25nIGZpZWxkOwogICAgIGlmIChnZXRfbG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZmaWVsZCwgcHRyLCBzaXplb2YoZmllbGQpKTsKICAgICBmaWVsZCA9IFNXQVBfOChmaWVsZCk7Ci0gICAgZmllbGQgPSBTRVQoUFlfTE9OR19MT05HLCBmaWVsZCwgdmFsLCBzaXplKTsKKyAgICBmaWVsZCA9IFNFVChsb25nIGxvbmcsIGZpZWxkLCB2YWwsIHNpemUpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKICAgICBtZW1jcHkocHRyLCAmZmllbGQsIHNpemVvZihmaWVsZCkpOwogICAgIF9SRVQodmFsdWUpOwpAQCAtOTIwLDcgKzkwNyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcV9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKKyAgICBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh2YWwpOwpAQCAtOTI5LDcgKzkxNiw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcV9nZXRfc3codm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUFlfTE9OR19MT05HIHZhbDsKKyAgICBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICB2YWwgPSBTV0FQXzgodmFsKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKQEAgLTkzOSwxMiArOTI2LDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKGdldF91bG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZ4LCBwdHIsIHNpemVvZih4KSk7Ci0gICAgeCA9IFNFVChQWV9MT05HX0xPTkcsIHgsIHZhbCwgc2l6ZSk7CisgICAgeCA9IFNFVChsb25nIGxvbmcsIHgsIHZhbCwgc2l6ZSk7CiAgICAgbWVtY3B5KHB0ciwgJngsIHNpemVvZih4KSk7CiAgICAgX1JFVCh2YWx1ZSk7CiB9CkBAIC05NTIsMTMgKzkzOSwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFFfc2V0X3N3KHZvaWQgKnB0ciwgUHlPYmplY3QgKnZhbHVlLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmllbGQ7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmllbGQ7CiAgICAgaWYgKGdldF91bG9uZ2xvbmcodmFsdWUsICZ2YWwpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtY3B5KCZmaWVsZCwgcHRyLCBzaXplb2YoZmllbGQpKTsKICAgICBmaWVsZCA9IFNXQVBfOChmaWVsZCk7Ci0gICAgZmllbGQgPSBTRVQodW5zaWduZWQgUFlfTE9OR19MT05HLCBmaWVsZCwgdmFsLCBzaXplKTsKKyAgICBmaWVsZCA9IFNFVCh1bnNpZ25lZCBsb25nIGxvbmcsIGZpZWxkLCB2YWwsIHNpemUpOwogICAgIGZpZWxkID0gU1dBUF84KGZpZWxkKTsKICAgICBtZW1jcHkocHRyLCAmZmllbGQsIHNpemVvZihmaWVsZCkpOwogICAgIF9SRVQodmFsdWUpOwpAQCAtOTY3LDcgKzk1NCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUV9nZXQodm9pZCAqcHRyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogICAgIG1lbWNweSgmdmFsLCBwdHIsIHNpemVvZih2YWwpKTsKICAgICBHRVRfQklURklFTEQodmFsLCBzaXplKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHZhbCk7CkBAIC05NzYsMTMgKzk2MywxMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFFfZ2V0X3N3KHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsKICAgICBtZW1jcHkoJnZhbCwgcHRyLCBzaXplb2YodmFsKSk7CiAgICAgdmFsID0gU1dBUF84KHZhbCk7CiAgICAgR0VUX0JJVEZJRUxEKHZhbCwgc2l6ZSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWwpOwogfQotI2VuZGlmCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogbm9uLWludGVnZXIgYWNjZXNzb3IgbWV0aG9kcywgbm90IHN1cHBvcnRpbmcgYml0IGZpZWxkcwpAQCAtMTQ5MCwxMCArMTQ3Niw4IEBACiAjaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwogICAgIHYgPSAodm9pZCAqKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sodmFsdWUpOwogI2Vsc2UKLSNpZm5kZWYgSEFWRV9MT05HX0xPTkcKLSMgICBlcnJvciAiUHlMb25nX0FzVm9pZFB0cjogc2l6ZW9mKHZvaWQqKSA+IHNpemVvZihsb25nKSwgYnV0IG5vIGxvbmcgbG9uZyIKLSNlbGlmIFNJWkVPRl9MT05HX0xPTkcgPCBTSVpFT0ZfVk9JRF9QCi0jICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihQWV9MT05HX0xPTkcpIDwgc2l6ZW9mKHZvaWQqKSIKKyNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAorIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YobG9uZyBsb25nKSA8IHNpemVvZih2b2lkKikiCiAjZW5kaWYKICAgICB2ID0gKHZvaWQgKilQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayh2YWx1ZSk7CiAjZW5kaWYKQEAgLTE1MzgsMTQgKzE1MjIsMTIgQEAKICNlbHNlCiAjIGVycm9yCiAjZW5kaWYKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogI2lmIFNJWkVPRl9MT05HX0xPTkcgPT0gOAogICAgIHsgJ3EnLCBxX3NldCwgcV9nZXQsICZmZmlfdHlwZV9zaW50NjQsIHFfc2V0X3N3LCBxX2dldF9zd30sCiAgICAgeyAnUScsIFFfc2V0LCBRX2dldCwgJmZmaV90eXBlX3VpbnQ2NCwgUV9zZXRfc3csIFFfZ2V0X3N3fSwKICNlbHNlCiAjIGVycm9yCiAjZW5kaWYKLSNlbmRpZgogICAgIHsgJ1AnLCBQX3NldCwgUF9nZXQsICZmZmlfdHlwZV9wb2ludGVyfSwKICAgICB7ICd6Jywgel9zZXQsIHpfZ2V0LCAmZmZpX3R5cGVfcG9pbnRlcn0sCiAjaWZkZWYgQ1RZUEVTX1VOSUNPREUKQEAgLTE2MzUsMTAgKzE2MTcsOCBAQAogI2VuZGlmCiAqLwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBQWV9MT05HX0xPTkcgeDsgfSBzX2xvbmdfbG9uZzsKLSNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZW5kaWYKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBsb25nIGxvbmcgeDsgfSBzX2xvbmdfbG9uZzsKKyNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKGxvbmcgbG9uZykpCiAKIC8qIGZyb20gZmZpLmg6CiB0eXBlZGVmIHN0cnVjdCBfZmZpX3R5cGUKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaCBiL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaAppbmRleCBmMmRmNWMwLi41ZDNiOTY2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oCkBAIC0zMSw5ICszMSw3IEBACiAgICAgICAgICAgICAgICAgbG9uZyBsOwogICAgICAgICAgICAgICAgIGZsb2F0IGY7CiAgICAgICAgICAgICAgICAgZG91YmxlIGQ7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBQWV9MT05HX0xPTkcgbGw7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBsb25nIGxvbmcgbGw7CiAgICAgICAgICAgICAgICAgbG9uZyBkb3VibGUgRDsKIH07CiAKQEAgLTMwMyw5ICszMDEsNyBAQAogICAgICAgICBzaG9ydCBoOwogICAgICAgICBpbnQgaTsKICAgICAgICAgbG9uZyBsOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgIFBZX0xPTkdfTE9ORyBxOwotI2VuZGlmCisgICAgICAgIGxvbmcgbG9uZyBxOwogICAgICAgICBsb25nIGRvdWJsZSBEOwogICAgICAgICBkb3VibGUgZDsKICAgICAgICAgZmxvYXQgZjsKQEAgLTMyNyw3ICszMjMsNyBAQAogUHlDRGF0YV9zZXQoUHlPYmplY3QgKmRzdCwgUHlPYmplY3QgKnR5cGUsIFNFVEZVTkMgc2V0ZnVuYywgUHlPYmplY3QgKnZhbHVlLAogICAgICAgICAgIFB5X3NzaXplX3QgaW5kZXgsIFB5X3NzaXplX3Qgc2l6ZSwgY2hhciAqcHRyKTsKIAotZXh0ZXJuIHZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY2hhciAqZm10LCAuLi4pOworZXh0ZXJuIHZvaWQgX2N0eXBlc19leHRlbmRfZXJyb3IoUHlPYmplY3QgKmV4Y19jbGFzcywgY29uc3QgY2hhciAqZm10LCAuLi4pOwogCiBzdHJ1Y3QgYmFzZXNwZWMgewogICAgIENEYXRhT2JqZWN0ICpiYXNlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKaW5kZXggNmU0NzRiNy4uNTVjMmQ3NiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCkBAIC01MjUsNyArNTI1LDcgQEAKICNkZWZpbmUgTU1BUF9DTEVBUlMgMQogI2VuZGlmICAvKiBNTUFQX0NMRUFSUyAqLwogI2lmbmRlZiBIQVZFX01SRU1BUAotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAjZGVmaW5lIEhBVkVfTVJFTUFQIDEKICNlbHNlICAgLyogbGludXggKi8KICNkZWZpbmUgSEFWRV9NUkVNQVAgMApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZGVidWcuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2RlYnVnLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4ZjFmOWYuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZGVidWcuYworKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBkZWJ1Zy5jIC0gQ29weXJpZ2h0IChjKSAxOTk2IFJlZCBIYXQsIEluYy4KLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaS5oPgotI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0vKiBHZW5lcmFsIGRlYnVnZ2luZyByb3V0aW5lcyAqLwotCi12b2lkIGZmaV9zdG9wX2hlcmUodm9pZCkKLXsKLSAgLyogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgotICAgICBQbGFjZSBhIGJyZWFrcG9pbnQgb24gZmZpX3N0b3BfaGVyZSB0byBiZSBub3RpZmllZCBvZiAKLSAgICAgc2lnbmlmaWNhbnQgZXZlbnRzLiAqLwotfQotCi0vKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIEZGSV9BU1NFUlQoKSBtYWNybyAqLwotCi12b2lkIGZmaV9hc3NlcnQoY2hhciAqZXhwciwgY2hhciAqZmlsZSwgaW50IGxpbmUpCi17Ci0gIGZwcmludGYoc3RkZXJyLCAiQVNTRVJUSU9OIEZBSUxVUkU6ICVzIGF0ICVzOiVkXG4iLCBleHByLCBmaWxlLCBsaW5lKTsKLSAgZmZpX3N0b3BfaGVyZSgpOwotICBhYm9ydCgpOwotfQotCi0vKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIGFuIGZmaV90eXBlIHN0cnVjdHVyZSAqLwotCi12b2lkIGZmaV90eXBlX3Rlc3QoZmZpX3R5cGUgKmEsIGNoYXIgKmZpbGUsIGludCBsaW5lKQotewotICBGRklfQVNTRVJUX0FUKGEgIT0gTlVMTCwgZmlsZSwgbGluZSk7Ci0KLSAgLypALXVzZWRlZkAqLwotICBGRklfQVNTRVJUX0FUKGEtPnR5cGUgPD0gRkZJX1RZUEVfTEFTVCwgZmlsZSwgbGluZSk7Ci0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSA9PSBGRklfVFlQRV9WT0lEIHx8IGEtPnNpemUgPiAwLCBmaWxlLCBsaW5lKTsKLSAgRkZJX0FTU0VSVF9BVChhLT50eXBlID09IEZGSV9UWVBFX1ZPSUQgfHwgYS0+YWxpZ25tZW50ID4gMCwgZmlsZSwgbGluZSk7Ci0gIEZGSV9BU1NFUlRfQVQoYS0+dHlwZSAhPSBGRklfVFlQRV9TVFJVQ1QgfHwgYS0+ZWxlbWVudHMgIT0gTlVMTCwgZmlsZSwgbGluZSk7Ci0gIC8qQD11c2VkZWZAKi8KLX0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExOTNhYWEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMTAgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4ICBSZWQgSGF0LCBJbmMuCi0gICAKLSAgIEFSTSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKLQotICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi0gICBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSAgIGBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotICAgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0gICBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSAgIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLQotICAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLSAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotCi0gICBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi0gICBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0gICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0gICBJTiBOTyBFVkVOVCBTSEFMTCBDWUdOVVMgU09MVVRJT05TIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAgIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgotICAgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2luY2x1ZGUgPGZmaS5oPgotI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KLQotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0jaWZkZWYgX1dJTjMyX1dDRQotI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDE0MikgICAgLyogYmVuaWduIHJlZGVmaW5pdGlvbiBvZiB0eXBlICovCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlmCi0KLS8qIGZmaV9wcmVwX2FyZ3MgaXMgY2FsbGVkIGJ5IHRoZSBhc3NlbWJseSByb3V0aW5lIG9uY2Ugc3RhY2sgc3BhY2UKLSAgIGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnRzICovCi0KLS8qQC1leHBvcnRoZWFkZXJAKi8KLXZvaWQgZmZpX3ByZXBfYXJncyhjaGFyICpzdGFjaywgZXh0ZW5kZWRfY2lmICplY2lmKQotLypAPWV4cG9ydGhlYWRlckAqLwotewotICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsKLSAgcmVnaXN0ZXIgdm9pZCAqKnBfYXJndjsKLSAgcmVnaXN0ZXIgY2hhciAqYXJncDsKLSAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKLQotICBhcmdwID0gc3RhY2s7Ci0KLSAgaWYgKCBlY2lmLT5jaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCApIHsKLSAgICAqKHZvaWQgKiopIGFyZ3AgPSBlY2lmLT5ydmFsdWU7Ci0gICAgYXJncCArPSA0OwotICB9Ci0KLSAgcF9hcmd2ID0gZWNpZi0+YXZhbHVlOwotCi0gIGZvciAoaSA9IGVjaWYtPmNpZi0+bmFyZ3MsIHBfYXJnID0gZWNpZi0+Y2lmLT5hcmdfdHlwZXM7Ci0gICAgICAgKGkgIT0gMCk7Ci0gICAgICAgaS0tLCBwX2FyZysrKQotICAgIHsKLSAgICAgIHNpemVfdCB6OwotICAgICAgc2l6ZV90IGFyZ2FsaWduID0gKCpwX2FyZyktPmFsaWdubWVudDsKLQotI2lmZGVmIF9XSU4zMl9XQ0UKLSAgICAgIGlmIChhcmdhbGlnbiA+IDQpCi0gICAgICAgIGFyZ2FsaWduID0gNDsKLSNlbmRpZgotICAgICAgLyogQWxpZ24gaWYgbmVjZXNzYXJ5ICovCi0gICAgICBpZiAoKGFyZ2FsaWduIC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKLQlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgYXJnYWxpZ24pOwotICAgICAgfQotCi0JICB6ID0gKCpwX2FyZyktPnNpemU7Ci0JICBpZiAoeiA8IHNpemVvZihpbnQpKQotCSAgICB7Ci0JICAgICAgeiA9IHNpemVvZihpbnQpOwotCSAgICAgIHN3aXRjaCAoKCpwX2FyZyktPnR5cGUpCi0JCXsKLQkJY2FzZSBGRklfVFlQRV9TSU5UODoKLQkJICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDggKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1VJTlQ4OgotCQkgICoodW5zaWduZWQgaW50ICopIGFyZ3AgPSAodW5zaWduZWQgaW50KSooVUlOVDggKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1NJTlQxNjoKLQkJICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSooU0lOVDE2ICopKCogcF9hcmd2KTsKLQkJICBicmVhazsKLQkJICAKLQkJY2FzZSBGRklfVFlQRV9VSU5UMTY6Ci0JCSAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMTYgKikoKiBwX2FyZ3YpOwotCQkgIGJyZWFrOwotCQkgIAotCQljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSAgICAgICAgICAgICAgICAgIC8qICpwX2FyZ3YgbWF5IG5vdCBiZSBhbGlnbmVkIGZvciBhIFVJTlQzMiAqLwotICAgICAgICAgICAgICAgICAgbWVtY3B5KGFyZ3AsICpwX2FyZ3YsIHopOwotCQkgIGJyZWFrOwotCi0JCWRlZmF1bHQ6Ci0JCSAgRkZJX0FTU0VSVCgwKTsKLQkJfQotCSAgICB9Ci0JICBlbHNlIGlmICh6ID09IHNpemVvZihpbnQpKQotCSAgICB7Ci0JICAgICAgKih1bnNpZ25lZCBpbnQgKikgYXJncCA9ICh1bnNpZ25lZCBpbnQpKihVSU5UMzIgKikoKiBwX2FyZ3YpOwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKLQkgICAgICBtZW1jcHkoYXJncCwgKnBfYXJndiwgeik7Ci0JICAgIH0KLQkgIHBfYXJndisrOwotCSAgYXJncCArPSB6OwotICAgIH0KLSAgCi0gIHJldHVybjsKLX0KLQotLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLwotZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcChmZmlfY2lmICpjaWYpCi17Ci0gIC8qIFNldCB0aGUgcmV0dXJuIHR5cGUgZmxhZyAqLwotICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnR5cGUpCi0gICAgewotICAgIGNhc2UgRkZJX1RZUEVfVk9JRDoKLSAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSAgICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgotICAgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgotICAgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgotICAgICAgY2lmLT5mbGFncyA9ICh1bnNpZ25lZCkgY2lmLT5ydHlwZS0+dHlwZTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6Ci0gICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfU0lOVDY0OwotICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX0lOVDsKLSAgICAgIGJyZWFrOwotICAgIH0KLQotICByZXR1cm4gRkZJX09LOwotfQotCi0vKkAtZGVjbHVuZGVmQCovCi0vKkAtZXhwb3J0aGVhZGVyQCovCi1leHRlcm4gdm9pZCBmZmlfY2FsbF9TWVNWKHZvaWQgKCopKGNoYXIgKiwgZXh0ZW5kZWRfY2lmICopLCAKLQkJCSAgLypAb3V0QCovIGV4dGVuZGVkX2NpZiAqLCAKLQkJCSAgdW5zaWduZWQsIHVuc2lnbmVkLCAKLQkJCSAgLypAb3V0QCovIHVuc2lnbmVkICosIAotCQkJICB2b2lkICgqZm4pKCkpOwotLypAPWRlY2x1bmRlZkAqLwotLypAPWV4cG9ydGhlYWRlckAqLwotCi0vKiBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gdm9pZCBmb3IgY3R5cGVzICovCi1pbnQgZmZpX2NhbGwoLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZiwgCi0JICAgICAgdm9pZCAoKmZuKSgpLCAKLQkgICAgICAvKkBvdXRAKi8gdm9pZCAqcnZhbHVlLCAKLQkgICAgICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqKmF2YWx1ZSkKLXsKLSAgZXh0ZW5kZWRfY2lmIGVjaWY7Ci0KLSAgZWNpZi5jaWYgPSBjaWY7Ci0gIGVjaWYuYXZhbHVlID0gYXZhbHVlOwotICAKLSAgLyogSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdCBhbmQgd2UgZG9uJ3QgaGF2ZSBhIHJldHVybgkqLwotICAvKiB2YWx1ZSBhZGRyZXNzIHRoZW4gd2UgbmVlZCB0byBtYWtlIG9uZQkJICAgICAgICAqLwotCi0gIGlmICgocnZhbHVlID09IE5VTEwpICYmIAotICAgICAgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKSkKLSAgICB7Ci0gICAgICAvKkAtc3lzdW5yZWNvZ0AqLwotICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoY2lmLT5ydHlwZS0+c2l6ZSk7Ci0gICAgICAvKkA9c3lzdW5yZWNvZ0AqLwotICAgIH0KLSAgZWxzZQotICAgIGVjaWYucnZhbHVlID0gcnZhbHVlOwotICAgIAotICAKLSAgc3dpdGNoIChjaWYtPmFiaSkgCi0gICAgewotICAgIGNhc2UgRkZJX1NZU1Y6Ci0gICAgICAvKkAtdXNlZGVmQCovCi0gICAgICBmZmlfY2FsbF9TWVNWKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLCAKLQkJICAgIGNpZi0+ZmxhZ3MsIGVjaWYucnZhbHVlLCBmbik7Ci0gICAgICAvKkA9dXNlZGVmQCovCi0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgRkZJX0FTU0VSVCgwKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgLyogSSB0aGluayBjYWxjdWxhdGluZyB0aGUgcmVhbCBzdGFjayBwb2ludGVyIGRlbHRhIGlzIG5vdCB1c2VmdWwKLSAgICAgYmVjYXVzZSBzdGRjYWxsIGlzIG5vdCBzdXBwb3J0ZWQgKi8KLSAgcmV0dXJuIDA7Ci19Ci0KLS8qKiBwcml2YXRlIG1lbWJlcnMgKiovCi0KLXN0YXRpYyB2b2lkIGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTViAoY2hhciAqc3RhY2ssIHZvaWQgKipyZXQsCi0JCQkJCSB2b2lkKiogYXJncywgZmZpX2NpZiogY2lmKTsKLQotLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZmZpX2Nsb3N1cmVfU1lTViBpbiBzeXN2LmFzbSAqLwotCi11bnNpZ25lZCBpbnQKLWZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGZmaV9jbG9zdXJlICpjbG9zdXJlLCBjaGFyICppbl9hcmdzLCB2b2lkICpydmFsdWUpCi17Ci0gIGZmaV9jaWYgKmNpZiA9IGNsb3N1cmUtPmNpZjsKLSAgdm9pZCAqKm91dF9hcmdzOwotCi0gIG91dF9hcmdzID0gKHZvaWQgKiopIGFsbG9jYShjaWYtPm5hcmdzICogc2l6ZW9mICh2b2lkICopKTsgIAotCi0gIC8qIHRoaXMgY2FsbCB3aWxsIGluaXRpYWxpemUgb3V0X2FyZ3MsIHN1Y2ggdGhhdCBlYWNoCi0gICAqIGVsZW1lbnQgaW4gdGhhdCBhcnJheSBwb2ludHMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgCi0gICAqIHZhbHVlIG9uIHRoZSBzdGFjazsgYW5kIGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zCi0gICAqIGEgc3RydWN0dXJlLCBpdCB3aWxsIHJlLXNldCBydmFsdWUgdG8gcG9pbnQgdG8gdGhlCi0gICAqIHN0cnVjdHVyZSByZXR1cm4gYWRkcmVzcy4gICovCi0KLSAgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGluX2FyZ3MsICZydmFsdWUsIG91dF9hcmdzLCBjaWYpOwotICAKLSAgKGNsb3N1cmUtPmZ1bikoY2lmLCBydmFsdWUsIG91dF9hcmdzLCBjbG9zdXJlLT51c2VyX2RhdGEpOwotCi0gIC8qIFRlbGwgZmZpX2Nsb3N1cmVfU1lTViB3aGF0IHRoZSByZXR1cm50eXBlIGlzICovCi0gIHJldHVybiBjaWYtPmZsYWdzOwotfQotCi0vKkAtZXhwb3J0aGVhZGVyQCovCi1zdGF0aWMgdm9pZCAKLWZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVihjaGFyICpzdGFjaywgdm9pZCAqKnJ2YWx1ZSwKLQkJCSAgICB2b2lkICoqYXZhbHVlLCBmZmlfY2lmICpjaWYpCi0vKkA9ZXhwb3J0aGVhZGVyQCovCi17Ci0gIHVuc2lnbmVkIGludCBpOwotICB2b2lkICoqcF9hcmd2OwotICBjaGFyICphcmdwOwotICBmZmlfdHlwZSAqKnBfYXJnOwotCi0gIGFyZ3AgPSBzdGFjazsKLQotICBpZiAoIGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICkgewotICAgICpydmFsdWUgPSAqKHZvaWQgKiopIGFyZ3A7Ci0gICAgYXJncCArPSA0OwotICB9Ci0KLSAgcF9hcmd2ID0gYXZhbHVlOwotCi0gIGZvciAoaSA9IGNpZi0+bmFyZ3MsIHBfYXJnID0gY2lmLT5hcmdfdHlwZXM7IChpICE9IDApOyBpLS0sIHBfYXJnKyspCi0gICAgewotICAgICAgc2l6ZV90IHo7Ci0gICAgICBzaXplX3QgYXJnYWxpZ24gPSAoKnBfYXJnKS0+YWxpZ25tZW50OwotCi0jaWZkZWYgX1dJTjMyX1dDRQotICAgICAgaWYgKGFyZ2FsaWduID4gNCkKLSAgICAgICAgYXJnYWxpZ24gPSA0OwotI2VuZGlmCi0gICAgICAvKiBBbGlnbiBpZiBuZWNlc3NhcnkgKi8KLSAgICAgIGlmICgoYXJnYWxpZ24gLSAxKSAmICh1bnNpZ25lZCkgYXJncCkgewotCWFyZ3AgPSAoY2hhciAqKSBBTElHTihhcmdwLCBhcmdhbGlnbik7Ci0gICAgICB9Ci0KLSAgICAgIHogPSAoKnBfYXJnKS0+c2l6ZTsKLSAgICAgIGlmICh6IDwgc2l6ZW9mKGludCkpCi0gICAgICAgIHogPSBzaXplb2YoaW50KTsKLQotICAgICAgKnBfYXJndiA9ICh2b2lkKikgYXJncDsKLQotICAgICAgcF9hcmd2Kys7Ci0gICAgICBhcmdwICs9IHo7Ci0gICAgfQotfQotCi0vKgotICAgIGFkZCAgIGlwLCBwYywgIy04ICAgICA7IGlwID0gYWRkcmVzcyBvZiB0aGlzIHRyYW1wb2xpbmUgPT0gYWRkcmVzcyBvZiBmZmlfY2xvc3VyZQotICAgIGxkciAgIHBjLCBbcGMsICMtNF0gICA7IGp1bXAgdG8gX19mdW4KLSAgICBEQ0QgX19mdW4KLSovCi0jZGVmaW5lIEZGSV9JTklUX1RSQU1QT0xJTkUoVFJBTVAsRlVOKSBcCi17IFwKLSAgICB1bnNpZ25lZCBpbnQgKl9fdHJhbXAgPSAodW5zaWduZWQgaW50ICopKFRSQU1QKTsgXAotICAgIF9fdHJhbXBbMF0gPSAweGUyNGZjMDA4OyAgICAgICAgICAgIC8qIGFkZCAgIGlwLCBwYywgIy04ICAgICovIFwKLSAgICBfX3RyYW1wWzFdID0gMHhlNTFmZjAwNDsgICAgICAgICAgICAvKiBsZHIgICBwYywgW3BjLCAjLTRdICAqLyBcCi0gICAgX190cmFtcFsyXSA9ICh1bnNpZ25lZCBpbnQpKEZVTik7IFwKLSAgfQotCi0vKiB0aGUgY2lmIG11c3QgYWxyZWFkeSBiZSBwcmVwJ2VkICovCi0KLS8qIGRlZmluZWQgaW4gc3lzdi5hc20gKi8KLXZvaWQgZmZpX2Nsb3N1cmVfU1lTVih2b2lkKTsKLQotZmZpX3N0YXR1cwotZmZpX3ByZXBfY2xvc3VyZSAoZmZpX2Nsb3N1cmUqIGNsb3N1cmUsCi0JCSAgZmZpX2NpZiogY2lmLAotCQkgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKiksCi0JCSAgdm9pZCAqdXNlcl9kYXRhKQotewotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfU1lTVik7Ci0gIAotICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sICZmZmlfY2xvc3VyZV9TWVNWKTsKLQotICBjbG9zdXJlLT5jaWYgID0gY2lmOwotICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7Ci0gIGNsb3N1cmUtPmZ1biAgPSBmdW47Ci0KLSNpZmRlZiBfV0lOMzJfV0NFCi0gIC8qIFRoaXMgaXMgaW1wb3J0YW50IHRvIGFsbG93IGNhbGxpbmcgdGhlIHRyYW1wb2xpbmUgc2FmZWx5ICovCi0gIEZsdXNoSW5zdHJ1Y3Rpb25DYWNoZShHZXRDdXJyZW50UHJvY2VzcygpLCAwLCAwKTsKLSNlbmRpZgotCi0gIHJldHVybiBGRklfT0s7Ci19Ci0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaS5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3OTc1YjYuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMTcgKzAsMCBAQAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGxpYmZmaSAyLjAwLWJldGEtd2luY2UgLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgotCi0gICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLSAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotICAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi0gICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0gICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLSAgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotICAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLSAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLSAgIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4KLSAgIElOIE5PIEVWRU5UIFNIQUxMIENZR05VUyBTT0xVVElPTlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKLSAgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAotICAgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCi0gICBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCi0KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIFRoZSBiYXNpYyBBUEkgaXMgZGVzY3JpYmVkIGluIHRoZSBSRUFETUUgZmlsZS4KLQotICAgVGhlIHJhdyBBUEkgaXMgZGVzaWduZWQgdG8gYnlwYXNzIHNvbWUgb2YgdGhlIGFyZ3VtZW50IHBhY2tpbmcKLSAgIGFuZCB1bnBhY2tpbmcgb24gYXJjaGl0ZWN0dXJlcyBmb3Igd2hpY2ggaXQgY2FuIGJlIGF2b2lkZWQuCi0KLSAgIFRoZSBjbG9zdXJlIEFQSSBhbGxvd3MgaW50ZXJwcmV0ZWQgZnVuY3Rpb25zIHRvIGJlIHBhY2thZ2VkIHVwCi0gICBpbnNpZGUgYSBDIGZ1bmN0aW9uIHBvaW50ZXIsIHNvIHRoYXQgdGhleSBjYW4gYmUgY2FsbGVkIGFzIEMgZnVuY3Rpb25zLAotICAgd2l0aCBubyB1bmRlcnN0YW5kaW5nIG9uIHRoZSBjbGllbnQgc2lkZSB0aGF0IHRoZXkgYXJlIGludGVycHJldGVkLgotICAgSXQgY2FuIGFsc28gYmUgdXNlZCBpbiBvdGhlciBjYXNlcyBpbiB3aGljaCBpdCBpcyBuZWNlc3NhcnkgdG8gcGFja2FnZQotICAgdXAgYSB1c2VyIHNwZWNpZmllZCBwYXJhbWV0ZXIgYW5kIGEgZnVuY3Rpb24gcG9pbnRlciBhcyBhIHNpbmdsZQotICAgZnVuY3Rpb24gcG9pbnRlci4KLQotICAgVGhlIGNsb3N1cmUgQVBJIG11c3QgYmUgaW1wbGVtZW50ZWQgaW4gb3JkZXIgdG8gZ2V0IGl0cyBmdW5jdGlvbmFsaXR5LAotICAgZS5nLiBmb3IgdXNlIGJ5IGdpai4gIFJvdXRpbmVzIGFyZSBwcm92aWRlZCB0byBlbXVsYXRlIHRoZSByYXcgQVBJCi0gICBpZiB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSBkb2Vzbid0IGFsbG93IGZhc3RlciBpbXBsZW1lbnRhdGlvbi4KLQotICAgTW9yZSBkZXRhaWxzIG9uIHRoZSByYXcgYW5kIGNsb3VyZSBBUEkgY2FuIGJlIGZvdW5kIGluOgotCi0gICBodHRwOi8vZ2NjLmdudS5vcmcvbWwvamF2YS8xOTk5LXEzL21zZzAwMTM4Lmh0bWwKLQotICAgYW5kCi0KLSAgIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9qYXZhLzE5OTktcTMvbXNnMDAxNzQuaHRtbAotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBMSUJGRklfSAotI2RlZmluZSBMSUJGRklfSAotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qIFNwZWNpZnkgd2hpY2ggYXJjaGl0ZWN0dXJlIGxpYmZmaSBpcyBjb25maWd1cmVkIGZvci4gKi8KLS8qI2RlZmluZSBAVEFSR0VUQCovCi0KLS8qIC0tLS0gU3lzdGVtIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpbmNsdWRlIDxmZml0YXJnZXQuaD4KLQotI2lmbmRlZiBMSUJGRklfQVNNCi0KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLQotLyogTE9OR19MT05HX01BWCBpcyBub3QgYWx3YXlzIGRlZmluZWQgKG5vdCBpZiBTVFJJQ1RfQU5TSSwgZm9yIGV4YW1wbGUpLgotICAgQnV0IHdlIGNhbiBmaW5kIGl0IGVpdGhlciB1bmRlciB0aGUgY29ycmVjdCBBTlNJIG5hbWUsIG9yIHVuZGVyIEdOVQotICAgQydzIGludGVybmFsIG5hbWUuICAqLwotI2lmZGVmIExPTkdfTE9OR19NQVgKLSMgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExPTkdfTE9OR19NQVgKLSNlbHNlCi0jIGlmZGVmIExMT05HX01BWAotIyAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIExMT05HX01BWAotIyBlbHNlCi0jICBpZmRlZiBfX0dOVUNfXwotIyAgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBfX0xPTkdfTE9OR19NQVhfXwotIyAgZW5kaWYKLSMgIGlmZGVmIF9NU0NfVkVSCi0jICAgZGVmaW5lIEZGSV9MT05HX0xPTkdfTUFYIF9JNjRfTUFYCi0jICBlbmRpZgotIyBlbmRpZgotI2VuZGlmCi0KLSNpZiBTQ0hBUl9NQVggPT0gMTI3Ci0jIGRlZmluZSBmZmlfdHlwZV91Y2hhciAgICAgICAgICAgICAgICBmZmlfdHlwZV91aW50OAotIyBkZWZpbmUgZmZpX3R5cGVfc2NoYXIgICAgICAgICAgICAgICAgZmZpX3R5cGVfc2ludDgKLSNlbHNlCi0gI2Vycm9yICJjaGFyIHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0jaWYgU0hSVF9NQVggPT0gMzI3NjcKLSMgZGVmaW5lIGZmaV90eXBlX3VzaG9ydCAgICAgICBmZmlfdHlwZV91aW50MTYKLSMgZGVmaW5lIGZmaV90eXBlX3NzaG9ydCAgICAgICBmZmlfdHlwZV9zaW50MTYKLSNlbGlmIFNIUlRfTUFYID09IDIxNDc0ODM2NDcKLSMgZGVmaW5lIGZmaV90eXBlX3VzaG9ydCAgICAgICBmZmlfdHlwZV91aW50MzIKLSMgZGVmaW5lIGZmaV90eXBlX3NzaG9ydCAgICAgICBmZmlfdHlwZV9zaW50MzIKLSNlbHNlCi0gI2Vycm9yICJzaG9ydCBzaXplIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotI2lmIElOVF9NQVggPT0gMzI3NjcKLSMgZGVmaW5lIGZmaV90eXBlX3VpbnQgICAgICAgICBmZmlfdHlwZV91aW50MTYKLSMgZGVmaW5lIGZmaV90eXBlX3NpbnQgICAgICAgICBmZmlfdHlwZV9zaW50MTYKLSNlbGlmIElOVF9NQVggPT0gMjE0NzQ4MzY0NwotIyBkZWZpbmUgZmZpX3R5cGVfdWludCAgICAgICAgIGZmaV90eXBlX3VpbnQzMgotIyBkZWZpbmUgZmZpX3R5cGVfc2ludCAgICAgICAgIGZmaV90eXBlX3NpbnQzMgotI2VsaWYgSU5UX01BWCA9PSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0jIGRlZmluZSBmZmlfdHlwZV91aW50ICAgICAgICAgZmZpX3R5cGVfdWludDY0Ci0jIGRlZmluZSBmZmlfdHlwZV9zaW50ICAgICAgICAgZmZpX3R5cGVfc2ludDY0Ci0jZWxzZQotICNlcnJvciAiaW50IHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0jZGVmaW5lIGZmaV90eXBlX3Vsb25nICAgICAgICAgZmZpX3R5cGVfdWludDY0Ci0jZGVmaW5lIGZmaV90eXBlX3Nsb25nICAgICAgICAgZmZpX3R5cGVfc2ludDY0Ci0jaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwotIyBpZiBGRklfTE9OR19MT05HX01BWCAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0gICNlcnJvciAibm8gNjQtYml0IGRhdGEgdHlwZSBzdXBwb3J0ZWQiCi0jIGVuZGlmCi0jZWxpZiBMT05HX01BWCAhPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci0gI2Vycm9yICJsb25nIHNpemUgbm90IHN1cHBvcnRlZCIKLSNlbmRpZgotCi0vKiBUaGUgY2xvc3VyZSBjb2RlIGFzc3VtZXMgdGhhdCB0aGlzIHdvcmtzIG9uIHBvaW50ZXJzLCBpLmUuIGEgc2l6ZV90CSovCi0vKiBjYW4gaG9sZCBhIHBvaW50ZXIuCQkJCQkJCSovCi0KLXR5cGVkZWYgc3RydWN0IF9mZmlfdHlwZQotewotICBzaXplX3Qgc2l6ZTsKLSAgdW5zaWduZWQgc2hvcnQgYWxpZ25tZW50OwotICB1bnNpZ25lZCBzaG9ydCB0eXBlOwotICAvKkBudWxsQCovIHN0cnVjdCBfZmZpX3R5cGUgKiplbGVtZW50czsKLX0gZmZpX3R5cGU7Ci0KLS8qIFRoZXNlIGFyZSBkZWZpbmVkIGluIHR5cGVzLmMgKi8KLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV92b2lkOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ4OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ4OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQxNjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MTY7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDMyOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQzMjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50NjQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDY0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2Zsb2F0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2RvdWJsZTsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9sb25nZG91YmxlOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3BvaW50ZXI7Ci0KLQotdHlwZWRlZiBlbnVtIHsKLSAgRkZJX09LID0gMCwKLSAgRkZJX0JBRF9UWVBFREVGLAotICBGRklfQkFEX0FCSSAKLX0gZmZpX3N0YXR1czsKLQotdHlwZWRlZiB1bnNpZ25lZCBGRklfVFlQRTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBmZmlfYWJpIGFiaTsKLSAgdW5zaWduZWQgbmFyZ3M7Ci0gIC8qQGRlcGVuZGVudEAqLyBmZmlfdHlwZSAqKmFyZ190eXBlczsKLSAgLypAZGVwZW5kZW50QCovIGZmaV90eXBlICpydHlwZTsKLSAgdW5zaWduZWQgYnl0ZXM7Ci0gIHVuc2lnbmVkIGZsYWdzOwotI2lmZGVmIEZGSV9FWFRSQV9DSUZfRklFTERTCi0gIEZGSV9FWFRSQV9DSUZfRklFTERTOwotI2VuZGlmCi19IGZmaV9jaWY7Ci0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIHRoZSByYXcgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgRkZJX1NJWkVPRl9BUkcKLSMgaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0NwotIyAgZGVmaW5lIEZGSV9TSVpFT0ZfQVJHICAgICAgICA0Ci0jIGVsaWYgTE9OR19NQVggPT0gOTIyMzM3MjAzNjg1NDc3NTgwNwotIyAgZGVmaW5lIEZGSV9TSVpFT0ZfQVJHICAgICAgICA4Ci0jIGVuZGlmCi0jZW5kaWYKLQotdHlwZWRlZiB1bmlvbiB7Ci0gIGZmaV9zYXJnICBzaW50OwotICBmZmlfYXJnICAgdWludDsKLSAgZmxvYXQJICAgIGZsdDsKLSAgY2hhciAgICAgIGRhdGFbRkZJX1NJWkVPRl9BUkddOwotICB2b2lkKiAgICAgcHRyOwotfSBmZmlfcmF3OwotCi12b2lkIGZmaV9yYXdfY2FsbCAoLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZiwgCi0JCSAgIHZvaWQgKCpmbikoKSwgCi0JCSAgIC8qQG91dEAqLyB2b2lkICpydmFsdWUsIAotCQkgICAvKkBkZXBlbmRlbnRAKi8gZmZpX3JhdyAqYXZhbHVlKTsKLQotdm9pZCBmZmlfcHRyYXJyYXlfdG9fcmF3IChmZmlfY2lmICpjaWYsIHZvaWQgKiphcmdzLCBmZmlfcmF3ICpyYXcpOwotdm9pZCBmZmlfcmF3X3RvX3B0cmFycmF5IChmZmlfY2lmICpjaWYsIGZmaV9yYXcgKnJhdywgdm9pZCAqKmFyZ3MpOwotc2l6ZV90IGZmaV9yYXdfc2l6ZSAoZmZpX2NpZiAqY2lmKTsKLQotLyogVGhpcyBpcyBhbmFsb2dvdXMgdG8gdGhlIHJhdyBBUEksIGV4Y2VwdCBpdCB1c2VzIEphdmEgcGFyYW1ldGVyCSovCi0vKiBwYWNraW5nLCBldmVuIG9uIDY0LWJpdCBtYWNoaW5lcy4gIEkuZS4gb24gNjQtYml0IG1hY2hpbmVzCQkqLwotLyogbG9uZ3MgYW5kIGRvdWJsZXMgYXJlIGZvbGxvd2VkIGJ5IGFuIGVtcHR5IDY0LWJpdCB3b3JkLgkJKi8KLQotdm9pZCBmZmlfamF2YV9yYXdfY2FsbCAoLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZiwgCi0JCSAgICAgICAgdm9pZCAoKmZuKSgpLCAKLQkJICAgICAgICAvKkBvdXRAKi8gdm9pZCAqcnZhbHVlLCAKLQkJICAgICAgICAvKkBkZXBlbmRlbnRAKi8gZmZpX3JhdyAqYXZhbHVlKTsKLQotdm9pZCBmZmlfamF2YV9wdHJhcnJheV90b19yYXcgKGZmaV9jaWYgKmNpZiwgdm9pZCAqKmFyZ3MsIGZmaV9yYXcgKnJhdyk7Ci12b2lkIGZmaV9qYXZhX3Jhd190b19wdHJhcnJheSAoZmZpX2NpZiAqY2lmLCBmZmlfcmF3ICpyYXcsIHZvaWQgKiphcmdzKTsKLXNpemVfdCBmZmlfamF2YV9yYXdfc2l6ZSAoZmZpX2NpZiAqY2lmKTsKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmIEZGSV9DTE9TVVJFUwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07Ci0gIGZmaV9jaWYgICAqY2lmOwotICB2b2lkICAgICAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKTsKLSAgdm9pZCAgICAgICp1c2VyX2RhdGE7Ci19IGZmaV9jbG9zdXJlOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9jbG9zdXJlIChmZmlfY2xvc3VyZSosCi0JCSAgZmZpX2NpZiAqLAotCQkgIHZvaWQgKCpmdW4pKGZmaV9jaWYqLHZvaWQqLHZvaWQqKix2b2lkKiksCi0JCSAgdm9pZCAqdXNlcl9kYXRhKTsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICBjaGFyIHRyYW1wW0ZGSV9UUkFNUE9MSU5FX1NJWkVdOwotCi0gIGZmaV9jaWYgICAqY2lmOwotCi0jaWYgIUZGSV9OQVRJVkVfUkFXX0FQSQotCi0gIC8qIGlmIHRoaXMgaXMgZW5hYmxlZCwgdGhlbiBhIHJhdyBjbG9zdXJlIGhhcyB0aGUgc2FtZSBsYXlvdXQgCi0gICAgIGFzIGEgcmVndWxhciBjbG9zdXJlLiAgV2UgdXNlIHRoaXMgdG8gaW5zdGFsbCBhbiBpbnRlcm1lZGlhdGUgCi0gICAgIGhhbmRsZXIgdG8gZG8gdGhlIHRyYW5zYWx0aW9uLCB2b2lkKiogLT4gZmZpX3JhdyouICovCi0KLSAgdm9pZCAgICAgKCp0cmFuc2xhdGVfYXJncykoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKTsKLSAgdm9pZCAgICAgICp0aGlzX2Nsb3N1cmU7Ci0KLSNlbmRpZgotCi0gIHZvaWQgICAgICgqZnVuKShmZmlfY2lmKix2b2lkKixmZmlfcmF3Kix2b2lkKik7Ci0gIHZvaWQgICAgICAqdXNlcl9kYXRhOwotCi19IGZmaV9yYXdfY2xvc3VyZTsKLQotZmZpX3N0YXR1cwotZmZpX3ByZXBfcmF3X2Nsb3N1cmUgKGZmaV9yYXdfY2xvc3VyZSosCi0JCSAgICAgIGZmaV9jaWYgKmNpZiwKLQkJICAgICAgdm9pZCAoKmZ1bikoZmZpX2NpZiosdm9pZCosZmZpX3Jhdyosdm9pZCopLAotCQkgICAgICB2b2lkICp1c2VyX2RhdGEpOwotCi1mZmlfc3RhdHVzCi1mZmlfcHJlcF9qYXZhX3Jhd19jbG9zdXJlIChmZmlfcmF3X2Nsb3N1cmUqLAotCQkgICAgICAgICAgIGZmaV9jaWYgKmNpZiwKLQkJICAgICAgICAgICB2b2lkICgqZnVuKShmZmlfY2lmKix2b2lkKixmZmlfcmF3Kix2b2lkKiksCi0JCSAgICAgICAgICAgdm9pZCAqdXNlcl9kYXRhKTsKLQotI2VuZGlmIC8qIEZGSV9DTE9TVVJFUyAqLwotCi0vKiAtLS0tIFB1YmxpYyBpbnRlcmZhY2UgZGVmaW5pdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi1mZmlfc3RhdHVzIGZmaV9wcmVwX2NpZigvKkBvdXRAKi8gLypAcGFydGlhbEAqLyBmZmlfY2lmICpjaWYsIAotCQkJZmZpX2FiaSBhYmksCi0JCQl1bnNpZ25lZCBpbnQgbmFyZ3MsIAotCQkJLypAZGVwZW5kZW50QCovIC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV90eXBlICpydHlwZSwgCi0JCQkvKkBkZXBlbmRlbnRAKi8gZmZpX3R5cGUgKiphdHlwZXMpOwotCi0vKiBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gdm9pZCBmb3IgY3R5cGVzICovCi1pbnQgZmZpX2NhbGwoLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZiwgCi0JICAgICAgdm9pZCAoKmZuKSgpLCAKLQkgICAgICAvKkBvdXRAKi8gdm9pZCAqcnZhbHVlLCAKLQkgICAgICAvKkBkZXBlbmRlbnRAKi8gdm9pZCAqKmF2YWx1ZSk7Ci0KLS8qIFVzZWZ1bCBmb3IgZWxpbWluYXRpbmcgY29tcGlsZXIgd2FybmluZ3MgKi8KLSNkZWZpbmUgRkZJX0ZOKGYpICgodm9pZCAoKikoKSlmKQotCi0vKiAtLS0tIERlZmluaXRpb25zIHNoYXJlZCB3aXRoIGFzc2VtYmx5IGNvZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCi0jZW5kaWYKLQotLyogSWYgdGhlc2UgY2hhbmdlLCB1cGRhdGUgc3JjL21pcHMvZmZpdGFyZ2V0LmguICovCi0jZGVmaW5lIEZGSV9UWVBFX1ZPSUQgICAgICAgMCAgICAKLSNkZWZpbmUgRkZJX1RZUEVfSU5UICAgICAgICAxCi0jZGVmaW5lIEZGSV9UWVBFX0ZMT0FUICAgICAgMiAgICAKLSNkZWZpbmUgRkZJX1RZUEVfRE9VQkxFICAgICAzCi0jaWYgMCAvKkBIQVZFX0xPTkdfRE9VQkxFQCovCi0jZGVmaW5lIEZGSV9UWVBFX0xPTkdET1VCTEUgNAotI2Vsc2UKLSNkZWZpbmUgRkZJX1RZUEVfTE9OR0RPVUJMRSBGRklfVFlQRV9ET1VCTEUKLSNlbmRpZgotI2RlZmluZSBGRklfVFlQRV9VSU5UOCAgICAgIDUgICAKLSNkZWZpbmUgRkZJX1RZUEVfU0lOVDggICAgICA2Ci0jZGVmaW5lIEZGSV9UWVBFX1VJTlQxNiAgICAgNyAKLSNkZWZpbmUgRkZJX1RZUEVfU0lOVDE2ICAgICA4Ci0jZGVmaW5lIEZGSV9UWVBFX1VJTlQzMiAgICAgOQotI2RlZmluZSBGRklfVFlQRV9TSU5UMzIgICAgIDEwCi0jZGVmaW5lIEZGSV9UWVBFX1VJTlQ2NCAgICAgMTEKLSNkZWZpbmUgRkZJX1RZUEVfU0lOVDY0ICAgICAxMgotI2RlZmluZSBGRklfVFlQRV9TVFJVQ1QgICAgIDEzCi0jZGVmaW5lIEZGSV9UWVBFX1BPSU5URVIgICAgMTQKLQotLyogVGhpcyBzaG91bGQgYWx3YXlzIHJlZmVyIHRvIHRoZSBsYXN0IHR5cGUgY29kZSAoZm9yIHNhbml0eSBjaGVja3MpICovCi0jZGVmaW5lIEZGSV9UWVBFX0xBU1QgICAgICAgRkZJX1RZUEVfUE9JTlRFUgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpX2NvbW1vbi5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpX2NvbW1vbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjg3OWQxLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaV9jb21tb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpX2NvbW1vbi5oIC0gQ29weXJpZ2h0IChjKSAxOTk2ICBSZWQgSGF0LCBJbmMuCi0KLSAgIENvbW1vbiBpbnRlcm5hbCBkZWZpbml0aW9ucyBhbmQgbWFjcm9zLiBPbmx5IG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcKLSAgIGxpYmZmaS4KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgRkZJX0NPTU1PTl9ICi0jZGVmaW5lIEZGSV9DT01NT05fSAotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLSNpbmNsdWRlIDxmZmljb25maWcuaD4KLQotLyogRG8gbm90IG1vdmUgdGhpcy4gU29tZSB2ZXJzaW9ucyBvZiBBSVggYXJlIHZlcnkgcGlja3kgYWJvdXQgd2hlcmUKLSAgIHRoaXMgaXMgcG9zaXRpb25lZC4gKi8KLSNpZmRlZiBfX0dOVUNfXwotIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLSNlbHNlCi0jIGlmIEhBVkVfQUxMT0NBX0gKLSMgIGluY2x1ZGUgPGFsbG9jYS5oPgotIyBlbHNlCi0jICBpZmRlZiBfQUlYCi0gI3ByYWdtYSBhbGxvY2EKLSMgIGVsc2UKLSMgICBpZm5kZWYgYWxsb2NhIC8qIHByZWRlZmluZWQgYnkgSFAgY2MgK09saWJjYWxscyAqLwotY2hhciAqYWxsb2NhICgpOwotIyAgIGVuZGlmCi0jICBlbmRpZgotIyBlbmRpZgotI2VuZGlmCi0KLS8qIENoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIG1lbWNweS4gKi8KLSNpZiBTVERDX0hFQURFUlMKLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZWxzZQotIyBpZm5kZWYgSEFWRV9NRU1DUFkKLSMgIGRlZmluZSBtZW1jcHkoZCwgcywgbikgYmNvcHkgKChzKSwgKGQpLCAobikpCi0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoRkZJX0RFQlVHKSAKLSNpbmNsdWRlIDxzdGRpby5oPgotI2VuZGlmCi0KLSNpZmRlZiBGRklfREVCVUcKLS8qQGV4aXRzQCovIHZvaWQgZmZpX2Fzc2VydCgvKkB0ZW1wQCovIGNoYXIgKmV4cHIsIC8qQHRlbXBAKi8gY2hhciAqZmlsZSwgaW50IGxpbmUpOwotdm9pZCBmZmlfc3RvcF9oZXJlKHZvaWQpOwotdm9pZCBmZmlfdHlwZV90ZXN0KC8qQHRlbXBAKi8gLypAb3V0QCovIGZmaV90eXBlICphLCAvKkB0ZW1wQCovIGNoYXIgKmZpbGUsIGludCBsaW5lKTsKLQotI2RlZmluZSBGRklfQVNTRVJUKHgpICgoeCkgPyAodm9pZCkwIDogZmZpX2Fzc2VydCgjeCwgX19GSUxFX18sX19MSU5FX18pKQotI2RlZmluZSBGRklfQVNTRVJUX0FUKHgsIGYsIGwpICgoeCkgPyAwIDogZmZpX2Fzc2VydCgjeCwgKGYpLCAobCkpKQotI2RlZmluZSBGRklfQVNTRVJUX1ZBTElEX1RZUEUoeCkgZmZpX3R5cGVfdGVzdCAoeCwgX19GSUxFX18sIF9fTElORV9fKQotI2Vsc2UKLSNkZWZpbmUgRkZJX0FTU0VSVCh4KSAKLSNkZWZpbmUgRkZJX0FTU0VSVF9BVCh4LCBmLCBsKQotI2RlZmluZSBGRklfQVNTRVJUX1ZBTElEX1RZUEUoeCkKLSNlbmRpZgotCi0jZGVmaW5lIEFMSUdOKHYsIGEpICAoKCgoKHNpemVfdCkgKHYpKS0xKSB8ICgoYSktMSkpKzEpCi0KLS8qIFBlcmZvcm0gbWFjaGluZSBkZXBlbmRlbnQgY2lmIHByb2Nlc3NpbmcgKi8KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX21hY2hkZXAoZmZpX2NpZiAqY2lmKTsKLQotLyogRXh0ZW5kZWQgY2lmLCB1c2VkIGluIGNhbGxiYWNrIGZyb20gYXNzZW1ibHkgcm91dGluZSAqLwotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgLypAZGVwZW5kZW50QCovIGZmaV9jaWYgKmNpZjsKLSAgLypAZGVwZW5kZW50QCovIHZvaWQgKnJ2YWx1ZTsKLSAgLypAZGVwZW5kZW50QCovIHZvaWQgKiphdmFsdWU7Ci19IGV4dGVuZGVkX2NpZjsKLQotLyogVGVyc2Ugc2l6ZWQgdHlwZSBkZWZpbml0aW9ucy4gICovCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDggIF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fUUlfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQ4ICBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1FJX18pKSk7Ci10eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UMTYgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19ISV9fKSkpOwotdHlwZWRlZiBzaWduZWQgaW50ICAgU0lOVDE2IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fSElfXykpKTsKLXR5cGVkZWYgdW5zaWduZWQgaW50IFVJTlQzMiBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX1NJX18pKSk7Ci10eXBlZGVmIHNpZ25lZCBpbnQgICBTSU5UMzIgX19hdHRyaWJ1dGVfXygoX19tb2RlX18oX19TSV9fKSkpOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgVUlOVDY0IF9fYXR0cmlidXRlX18oKF9fbW9kZV9fKF9fRElfXykpKTsKLXR5cGVkZWYgc2lnbmVkIGludCAgIFNJTlQ2NCBfX2F0dHJpYnV0ZV9fKChfX21vZGVfXyhfX0RJX18pKSk7Ci0KLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0KLXR5cGVkZWYgdW5zaWduZWQgX19pbnQ4ICBVSU5UODsKLXR5cGVkZWYgc2lnbmVkIF9faW50OCAgICBTSU5UODsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQxNiBVSU5UMTY7Ci10eXBlZGVmIHNpZ25lZCBfX2ludDE2ICAgU0lOVDE2OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyIFVJTlQzMjsKLXR5cGVkZWYgc2lnbmVkIF9faW50MzIgICBTSU5UMzI7Ci10eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgVUlOVDY0OwotdHlwZWRlZiBzaWduZWQgX19pbnQ2NCAgIFNJTlQ2NDsKLQotI2Vsc2UKLSNlcnJvciAiTmVlZCB0eXBlZGVmcyBoZXJlIgotI2VuZGlmCi0KLXR5cGVkZWYgZmxvYXQgRkxPQVQzMjsKLQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9mZmljb25maWcuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaWNvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzc5NjRjLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaWNvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qIGZmaWNvbmZpZy5oIGNyZWF0ZWQgbWFudWFsbHkgZm9yIFdpbmRvd3MgQ0Ugb24gQVJNICovCi0vKiBmZmljb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KLQotLyogMTIzNCA9IExJTF9FTkRJQU4sIDQzMjEgPSBCSUdFTkRJQU4gKi8KLSNkZWZpbmUgQllURU9SREVSIDEyMzQKLQotLyogRGVmaW5lIHRvIG9uZSBvZiBgX2dldGI2NycsIGBHRVRCNjcnLCBgZ2V0YjY3JyBmb3IgQ3JheS0yIGFuZCBDcmF5LVlNUAotICAgc3lzdGVtcy4gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJlZCBmb3IgYGFsbG9jYS5jJyBzdXBwb3J0IG9uIHRob3NlIHN5c3RlbXMuCi0gICAqLwotLyogI3VuZGVmIENSQVlfU1RBQ0tTRUdfRU5EICovCi0KLS8qIERlZmluZSB0byAxIGlmIHVzaW5nIGBhbGxvY2EuYycuICovCi0vKiAjdW5kZWYgQ19BTExPQ0EgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLiAqLwotLyogI3VuZGVmIEVIX0ZSQU1FX0ZMQUdTICovCi0KLS8qIERlZmluZSB0aGlzIGlmIHlvdSB3YW50IGV4dHJhIGRlYnVnZ2luZy4gKi8KLSNpZmRlZiBERUJVRyAgLyogRGVmaW5lZCBieSB0aGUgcHJvamVjdCBzZXR0aW5ncyBmb3IgRGVidWcgYnVpbGRzICovCi0jZGVmaW5lIEZGSV9ERUJVRwotI2Vsc2UKLSN1bmRlZiBGRklfREVCVUcKLSNlbmRpZgotCi0vKiBEZWZpbmUgdGhpcyBpcyB5b3UgZG8gbm90IHdhbnQgc3VwcG9ydCBmb3IgdGhlIHJhdyBBUEkuICovCi0vKiAjdW5kZWYgRkZJX05PX1JBV19BUEkgKi8KLQotLyogRGVmaW5lIHRoaXMgaXMgeW91IGRvIG5vdCB3YW50IHN1cHBvcnQgZm9yIGFnZ3JlZ2F0ZSB0eXBlcy4gKi8KLS8qICN1bmRlZiBGRklfTk9fU1RSVUNUUyAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBgYWxsb2NhJywgYXMgYSBmdW5jdGlvbiBvciBtYWNyby4gKi8KLSNkZWZpbmUgSEFWRV9BTExPQ0EgMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSA8YWxsb2NhLmg+IGFuZCBpdCBzaG91bGQgYmUgdXNlZCAobm90IG9uIFVsdHJpeCkuCi0gICAqLwotLyogI3VuZGVmIEhBVkVfQUxMT0NBX0ggKi8KLQotLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5yZWdpc3Rlci4gKi8KLS8qICN1bmRlZiBIQVZFX0FTX1JFR0lTVEVSX1BTRVVET19PUCAqLwotCi0vKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgYW5kIGxpbmtlciBzdXBwb3J0IHVuYWxpZ25lZCBQQyByZWxhdGl2ZSByZWxvY3MuCi0gICAqLwotLyogI3VuZGVmIEhBVkVfQVNfU1BBUkNfVUFfUENSRUwgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX0lOVFRZUEVTX0ggKi8KLQotLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsb25nIGRvdWJsZSB0eXBlIGFuZCBpdCBpcyBiaWdnZXIgdGhhbiBhIGRvdWJsZSAqLwotLyogVGhpcyBkaWZmZXJzIGZyb20gdGhlIE1TVkMgYnVpbGQsIGJ1dCBldmVuIHRoZXJlIGl0IHNob3VsZCBub3QgYmUgZGVmaW5lZCAqLwotLyogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUgKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1jcHknIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX01FTUNQWSAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogV2luQ0UgaGFzIHRoaXMgYnV0IEkgZG9uJ3QgdGhpbmsgd2UgbmVlZCB0byB1c2UgaXQgKi8KLS8qICN1bmRlZiBIQVZFX01FTU9SWV9IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbW1hcCcgZnVuY3Rpb24uICovCi0vKiAjdW5kZWYgSEFWRV9NTUFQICovCi0KLS8qIERlZmluZSBpZiBtbWFwIHdpdGggTUFQX0FOT04oWU1PVVMpIHdvcmtzLiAqLwotLyogI3VuZGVmIEhBVkVfTU1BUF9BTk9OICovCi0KLS8qIERlZmluZSBpZiBtbWFwIG9mIC9kZXYvemVybyB3b3Jrcy4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVBfREVWX1pFUk8gKi8KLQotLyogRGVmaW5lIGlmIHJlYWQtb25seSBtbWFwIG9mIGEgcGxhaW4gZmlsZSB3b3Jrcy4gKi8KLS8qICN1bmRlZiBIQVZFX01NQVBfRklMRSAqLwotCi0vKiBEZWZpbmUgaWYgLmVoX2ZyYW1lIHNlY3Rpb25zIHNob3VsZCBiZSByZWFkLW9ubHkuICovCi0vKiAjdW5kZWYgSEFWRV9ST19FSF9GUkFNRSAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NURElOVF9IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NURExJQl9IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfU1RSSU5HU19IICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NUUklOR19IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbW1hbi5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NZU19NTUFOX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1NZU19TVEFUX0ggKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSCAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KLS8qICN1bmRlZiBIQVZFX1VOSVNURF9IICovCi0KLS8qIERlZmluZSBpZiB0aGUgaG9zdCBtYWNoaW5lIHN0b3JlcyB3b3JkcyBvZiBtdWx0aS13b3JkIGludGVnZXJzIGluCi0gICBiaWctZW5kaWFuIG9yZGVyLiAqLwotLyogI3VuZGVmIEhPU1RfV09SRFNfQklHX0VORElBTiAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3VyIEMgY29tcGlsZXIgZG9lc24ndCBhY2NlcHQgLWMgYW5kIC1vIHRvZ2V0aGVyLiAqLwotLyogI3VuZGVmIE5PX01JTlVTX0NfTUlOVVNfTyAqLwotCi0vKiBOYW1lIG9mIHBhY2thZ2UgKi8KLS8qICN1bmRlZiBQQUNLQUdFICovCi0KLS8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUICovCi0KLS8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX05BTUUgKi8KLQotLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotLyogI3VuZGVmIFBBQ0tBR0VfU1RSSU5HICovCi0KLS8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUgKi8KLQotLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLS8qICN1bmRlZiBQQUNLQUdFX1ZFUlNJT04gKi8KLQotLyogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0eXBlIGRvdWJsZSAqLwotI2RlZmluZSBTSVpFT0ZfRE9VQkxFIDgKLQotLyogVGhlIG51bWJlciBvZiBieXRlcyBpbiB0eXBlIGxvbmcgZG91YmxlICovCi0jZGVmaW5lIFNJWkVPRl9MT05HX0RPVUJMRSA4Ci0KLS8qIElmIHVzaW5nIHRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGFsbG9jYSwgZGVmaW5lIGlmIHlvdSBrbm93IHRoZQotICAgZGlyZWN0aW9uIG9mIHN0YWNrIGdyb3d0aCBmb3IgeW91ciBzeXN0ZW07IG90aGVyd2lzZSBpdCB3aWxsIGJlCi0gICBhdXRvbWF0aWNhbGx5IGRlZHVjZWQgYXQgcnVuLXRpbWUuCi0JU1RBQ0tfRElSRUNUSU9OID4gMCA9PiBncm93cyB0b3dhcmQgaGlnaGVyIGFkZHJlc3NlcwotCVNUQUNLX0RJUkVDVElPTiA8IDAgPT4gZ3Jvd3MgdG93YXJkIGxvd2VyIGFkZHJlc3NlcwotCVNUQUNLX0RJUkVDVElPTiA9IDAgPT4gZGlyZWN0aW9uIG9mIGdyb3d0aCB1bmtub3duICovCi0vKiAjdW5kZWYgU1RBQ0tfRElSRUNUSU9OICovCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLwotI2RlZmluZSBTVERDX0hFQURFUlMgMQotCi0vKiBEZWZpbmUgdGhpcyBpZiB5b3UgYXJlIHVzaW5nIFB1cmlmeSBhbmQgd2FudCB0byBzdXBwcmVzcyBzcHVyaW91cyBtZXNzYWdlcy4KLSAgICovCi0vKiAjdW5kZWYgVVNJTkdfUFVSSUZZICovCi0KLS8qIFZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2UgKi8KLS8qICN1bmRlZiBWRVJTSU9OICovCi0KLS8qIHdoZXRoZXIgYnl0ZW9yZGVyIGlzIGJpZ2VuZGlhbiAqLwotLyogI3VuZGVmIFdPUkRTX0JJR0VORElBTiAqLwotCi0jZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0KLSNkZWZpbmUgYWJvcnQoKSBleGl0KDk5OSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfYXJtX3dpbmNlL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpdGFyZ2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MjdiMjUuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvZmZpdGFyZ2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgotICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBBUk0uCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLQotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKLSNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICi0KLSNpZm5kZWYgTElCRkZJX0FTTQotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7Ci10eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7Ci0KLXR5cGVkZWYgZW51bSBmZmlfYWJpIHsKLSAgRkZJX0ZJUlNUX0FCSSA9IDAsCi0gIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQotfSBmZmlfYWJpOwotI2VuZGlmCi0KLS8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIGNsb3N1cmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNkZWZpbmUgRkZJX0NMT1NVUkVTIDEKLSNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAxMgotCi0jZGVmaW5lIEZGSV9OQVRJVkVfUkFXX0FQSSAwCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9wcmVwX2NpZi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2UvcHJlcF9jaWYuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVkY2UyZi4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9wcmVwX2NpZi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBwcmVwX2NpZi5jIC0gQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk4ICBSZWQgSGF0LCBJbmMuCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotICAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotICAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotICAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi0gICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLSAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpbmNsdWRlIDxmZmkuaD4KLSNpbmNsdWRlIDxmZmlfY29tbW9uLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLQotLyogUm91bmQgdXAgdG8gRkZJX1NJWkVPRl9BUkcuICovCi0KLSNkZWZpbmUgU1RBQ0tfQVJHX1NJWkUoeCkgQUxJR04oeCwgRkZJX1NJWkVPRl9BUkcpCi0KLS8qIFBlcmZvcm0gbWFjaGluZSBpbmRlcGVuZGVudCBpbml0aWFsaXphdGlvbiBvZiBhZ2dyZWdhdGUgdHlwZQotICAgc3BlY2lmaWNhdGlvbnMuICovCi0KLXN0YXRpYyBmZmlfc3RhdHVzIGluaXRpYWxpemVfYWdncmVnYXRlKC8qQG91dEAqLyBmZmlfdHlwZSAqYXJnKQotewotICBmZmlfdHlwZSAqKnB0cjsgCi0KLSAgRkZJX0FTU0VSVChhcmcgIT0gTlVMTCk7Ci0KLSAgLypALXVzZWRlZkAqLwotCi0gIEZGSV9BU1NFUlQoYXJnLT5lbGVtZW50cyAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVChhcmctPnNpemUgPT0gMCk7Ci0gIEZGSV9BU1NFUlQoYXJnLT5hbGlnbm1lbnQgPT0gMCk7Ci0KLSAgcHRyID0gJihhcmctPmVsZW1lbnRzWzBdKTsKLQotICB3aGlsZSAoKCpwdHIpICE9IE5VTEwpCi0gICAgewotICAgICAgaWYgKCgoKnB0ciktPnNpemUgPT0gMCkgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKCgqcHRyKSkgIT0gRkZJX09LKSkKLQlyZXR1cm4gRkZJX0JBRF9UWVBFREVGOwotICAgICAgCi0gICAgICAvKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBhcmd1bWVudCB0eXBlICovCi0gICAgICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoKnB0cik7Ci0KLSAgICAgIGFyZy0+c2l6ZSA9IEFMSUdOKGFyZy0+c2l6ZSwgKCpwdHIpLT5hbGlnbm1lbnQpOwotICAgICAgYXJnLT5zaXplICs9ICgqcHRyKS0+c2l6ZTsKLQotICAgICAgYXJnLT5hbGlnbm1lbnQgPSAoYXJnLT5hbGlnbm1lbnQgPiAoKnB0ciktPmFsaWdubWVudCkgPyAKLQlhcmctPmFsaWdubWVudCA6ICgqcHRyKS0+YWxpZ25tZW50OwotCi0gICAgICBwdHIrKzsKLSAgICB9Ci0KLSAgLyogU3RydWN0dXJlIHNpemUgaW5jbHVkZXMgdGFpbCBwYWRkaW5nLiAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yCi0gICAgIHN0cnVjdHVyZXMgdGhhdCBmaXQgaW4gb25lIHJlZ2lzdGVyIG9uIEFCSXMgbGlrZSB0aGUgUG93ZXJQQzY0Ci0gICAgIExpbnV4IEFCSSB0aGF0IHJpZ2h0IGp1c3RpZnkgc21hbGwgc3RydWN0cyBpbiBhIHJlZ2lzdGVyLgotICAgICBJdCdzIGFsc28gbmVlZGVkIGZvciBuZXN0ZWQgc3RydWN0dXJlIGxheW91dCwgZm9yIGV4YW1wbGUKLSAgICAgc3RydWN0IEEgeyBsb25nIGE7IGNoYXIgYjsgfTsgc3RydWN0IEIgeyBzdHJ1Y3QgQSB4OyBjaGFyIHk7IH07Ci0gICAgIHNob3VsZCBmaW5kIHkgYXQgYW4gb2Zmc2V0IG9mIDIqc2l6ZW9mKGxvbmcpIGFuZCByZXN1bHQgaW4gYQotICAgICB0b3RhbCBzaXplIG9mIDMqc2l6ZW9mKGxvbmcpLiAgKi8KLSAgYXJnLT5zaXplID0gQUxJR04gKGFyZy0+c2l6ZSwgYXJnLT5hbGlnbm1lbnQpOwotCi0gIGlmIChhcmctPnNpemUgPT0gMCkKLSAgICByZXR1cm4gRkZJX0JBRF9UWVBFREVGOwotICBlbHNlCi0gICAgcmV0dXJuIEZGSV9PSzsKLQotICAvKkA9dXNlZGVmQCovCi19Ci0KLS8qIFBlcmZvcm0gbWFjaGluZSBpbmRlcGVuZGVudCBmZmlfY2lmIHByZXBhcmF0aW9uLCB0aGVuIGNhbGwKLSAgIG1hY2hpbmUgZGVwZW5kZW50IHJvdXRpbmUuICovCi0KLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmKC8qQG91dEAqLyAvKkBwYXJ0aWFsQCovIGZmaV9jaWYgKmNpZiwgCi0JCQlmZmlfYWJpIGFiaSwgdW5zaWduZWQgaW50IG5hcmdzLCAKLQkJCS8qQGRlcGVuZGVudEAqLyAvKkBvdXRAKi8gLypAcGFydGlhbEAqLyBmZmlfdHlwZSAqcnR5cGUsIAotCQkJLypAZGVwZW5kZW50QCovIGZmaV90eXBlICoqYXR5cGVzKQotewotICB1bnNpZ25lZCBieXRlcyA9IDA7Ci0gIHVuc2lnbmVkIGludCBpOwotICBmZmlfdHlwZSAqKnB0cjsKLQotICBGRklfQVNTRVJUKGNpZiAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVCgoYWJpID4gRkZJX0ZJUlNUX0FCSSkgJiYgKGFiaSA8PSBGRklfREVGQVVMVF9BQkkpKTsKLQotICBjaWYtPmFiaSA9IGFiaTsKLSAgY2lmLT5hcmdfdHlwZXMgPSBhdHlwZXM7Ci0gIGNpZi0+bmFyZ3MgPSBuYXJnczsKLSAgY2lmLT5ydHlwZSA9IHJ0eXBlOwotCi0gIGNpZi0+ZmxhZ3MgPSAwOwotCi0gIC8qIEluaXRpYWxpemUgdGhlIHJldHVybiB0eXBlIGlmIG5lY2Vzc2FyeSAqLwotICAvKkAtdXNlZGVmQCovCi0gIGlmICgoY2lmLT5ydHlwZS0+c2l6ZSA9PSAwKSAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoY2lmLT5ydHlwZSkgIT0gRkZJX09LKSkKLSAgICByZXR1cm4gRkZJX0JBRF9UWVBFREVGOwotICAvKkA9dXNlZGVmQCovCi0KLSAgLyogUGVyZm9ybSBhIHNhbml0eSBjaGVjayBvbiB0aGUgcmV0dXJuIHR5cGUgKi8KLSAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKGNpZi0+cnR5cGUpOwotCi0gIC8qIHg4Ni02NCBhbmQgczM5MCBzdGFjayBzcGFjZSBhbGxvY2F0aW9uIGlzIGhhbmRsZWQgaW4gcHJlcF9tYWNoZGVwLiAgKi8KLSNpZiAhZGVmaW5lZCBNNjhLICYmICFkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgUzM5MAotICAvKiBNYWtlIHNwYWNlIGZvciB0aGUgcmV0dXJuIHN0cnVjdHVyZSBwb2ludGVyICovCi0gIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgLyogTVNWQyByZXR1cm5zIHNtYWxsIHN0cnVjdHVyZXMgaW4gcmVnaXN0ZXJzLiAgQnV0IHdlIGhhdmUgYSBkaWZmZXJlbnQKLSAgICAgIHdvcmthcm91bmQ6IHByZXRlbmQgaW50MzIgb3IgaW50NjQgcmV0dXJuIHR5cGUsIGFuZCBjb252ZXJ0aW5nIHRvCi0gICAgICBzdHJ1Y3R1cmUgYWZ0ZXJ3YXJkcy4gKi8KLSNpZmRlZiBTUEFSQwotICAgICAgJiYgKGNpZi0+YWJpICE9IEZGSV9WOSB8fCBjaWYtPnJ0eXBlLT5zaXplID4gMzIpCi0jZW5kaWYKLSAgICAgICkKLSAgICBieXRlcyA9IFNUQUNLX0FSR19TSVpFKHNpemVvZih2b2lkKikpOwotI2VuZGlmCi0KLSAgZm9yIChwdHIgPSBjaWYtPmFyZ190eXBlcywgaSA9IGNpZi0+bmFyZ3M7IGkgPiAwOyBpLS0sIHB0cisrKQotICAgIHsKLQotICAgICAgLyogSW5pdGlhbGl6ZSBhbnkgdW5pbml0aWFsaXplZCBhZ2dyZWdhdGUgdHlwZSBkZWZpbml0aW9ucyAqLwotICAgICAgaWYgKCgoKnB0ciktPnNpemUgPT0gMCkgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKCgqcHRyKSkgIT0gRkZJX09LKSkKLQlyZXR1cm4gRkZJX0JBRF9UWVBFREVGOwotCi0gICAgICAvKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBhcmd1bWVudCB0eXBlLCBkbyB0aGlzIAotCSBjaGVjayBhZnRlciB0aGUgaW5pdGlhbGl6YXRpb24uICAqLwotICAgICAgRkZJX0FTU0VSVF9WQUxJRF9UWVBFKCpwdHIpOwotCi0jaWYgIWRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBTMzkwCi0jaWZkZWYgU1BBUkMKLSAgICAgIGlmICgoKCpwdHIpLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotCSAgICYmICgoKnB0ciktPnNpemUgPiAxNiB8fCBjaWYtPmFiaSAhPSBGRklfVjkpKQotCSAgfHwgKCgqcHRyKS0+dHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFCi0JICAgICAgJiYgY2lmLT5hYmkgIT0gRkZJX1Y5KSkKLQlieXRlcyArPSBzaXplb2Yodm9pZCopOwotICAgICAgZWxzZQotI2VuZGlmCi0JewotI2lmbmRlZiBfTVNDX1ZFUgotCQkvKiBEb24ndCBrbm93IGlmIHRoaXMgaXMgYSBsaWJmZmkgYnVnIG9yIG5vdC4gIEF0IGxlYXN0IG9uCi0JCSAgIFdpbmRvd3Mgd2l0aCBNU1ZDLCBmdW5jdGlvbiBjYWxsIHBhcmFtZXRlcnMgYXJlICpub3QqCi0JCSAgIGFsaWduZWQgaW4gdGhlIHNhbWUgd2F5IGFzIHN0cnVjdHVyZSBmaWVsZHMgYXJlLCB0aGV5IGFyZQotCQkgICBvbmx5IGFsaWduZWQgaW4gaW50ZWdlciBib3VuZGFyaWVzLgotCi0JCSAgIFRoaXMgZG9lc24ndCBkbyBhbnkgaGFybSBmb3IgY2RlY2wgZnVuY3Rpb25zIGFuZCBjbG9zdXJlcywKLQkJICAgc2luY2UgdGhlIGNhbGxlciBjbGVhbnMgdXAgdGhlIHN0YWNrLCBidXQgaXQgaXMgd3JvbmcgZm9yCi0JCSAgIHN0ZGNhbGwgZnVuY3Rpb25zIHdoZXJlIHRoZSBjYWxsZWUgY2xlYW5zLgotCQkqLwotCi0JICAvKiBBZGQgYW55IHBhZGRpbmcgaWYgbmVjZXNzYXJ5ICovCi0JICBpZiAoKCgqcHRyKS0+YWxpZ25tZW50IC0gMSkgJiBieXRlcykKLQkgICAgYnl0ZXMgPSBBTElHTihieXRlcywgKCpwdHIpLT5hbGlnbm1lbnQpOwotCSAgCi0jZW5kaWYKLQkgIGJ5dGVzICs9IFNUQUNLX0FSR19TSVpFKCgqcHRyKS0+c2l6ZSk7Ci0JfQotI2VuZGlmCi0gICAgfQotCi0gIGNpZi0+Ynl0ZXMgPSBieXRlczsKLQotICAvKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCi0gIHJldHVybiBmZmlfcHJlcF9jaWZfbWFjaGRlcChjaWYpOwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9hcm1fd2luY2Uvc3lzdi5hc20gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9zeXN2LmFzbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3OGI5MC4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX2FybV93aW5jZS9zeXN2LmFzbQorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi07IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi07ICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTggUmVkIEhhdCwgSW5jLgotOyAgCi07ICBBUk0gRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCi07Ci07ICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKLTsgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotOyAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi07ICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi07ICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KLTsgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bwotOyAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotOwotOyAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLTsgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotOwotOyAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwotOyAgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotOyAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULgotOyAgSU4gTk8gRVZFTlQgU0hBTEwgQ1lHTlVTIFNPTFVUSU9OUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgotOyAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCi07ICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKLTsgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLTsgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLTsjZGVmaW5lIExJQkZGSV9BU00gICAgIAotOyNpbmNsdWRlIDxmZmljb25maWcuaD4KLTsjaW5jbHVkZSA8ZmZpLmg+Ci07I2lmZGVmIEhBVkVfTUFDSElORV9BU01fSAotOyNpbmNsdWRlIDxtYWNoaW5lL2FzbS5oPgotOyNlbHNlCi07I2lmZGVmIF9fVVNFUl9MQUJFTF9QUkVGSVhfXwotOyNkZWZpbmUgQ09OQ0FUMShhLCBiKSBDT05DQVQyKGEsIGIpCi07I2RlZmluZSBDT05DQVQyKGEsIGIpIGEgIyMgYgotCi07LyogVXNlIHRoZSByaWdodCBwcmVmaXggZm9yIGdsb2JhbCBsYWJlbHMuICAqLwotOyNkZWZpbmUgQ05BTUUoeCkgQ09OQ0FUMSAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCB4KQotOyNlbHNlCi07I2RlZmluZSBDTkFNRSh4KSB4Ci07I2VuZGlmCi07I2RlZmluZSBFTlRSWSh4KSAuZ2xvYmwgQ05BTUUoeCk7IC50eXBlIENOQU1FKHgpLCVmdW5jdGlvbjsgQ05BTUUoeCk6Ci07I2VuZGlmCi0KLQotRkZJX1RZUEVfVk9JRCAgICAgICBFUVUgMAotRkZJX1RZUEVfSU5UICAgICAgICBFUVUgMQotRkZJX1RZUEVfRkxPQVQgICAgICBFUVUgMgotRkZJX1RZUEVfRE9VQkxFICAgICBFUVUgMwotO0ZGSV9UWVBFX0xPTkdET1VCTEUgRVFVIDQKLUZGSV9UWVBFX1VJTlQ4ICAgICAgRVFVIDUKLUZGSV9UWVBFX1NJTlQ4ICAgICAgRVFVIDYKLUZGSV9UWVBFX1VJTlQxNiAgICAgRVFVIDcKLUZGSV9UWVBFX1NJTlQxNiAgICAgRVFVIDgKLUZGSV9UWVBFX1VJTlQzMiAgICAgRVFVIDkKLUZGSV9UWVBFX1NJTlQzMiAgICAgRVFVIDEwCi1GRklfVFlQRV9VSU5UNjQgICAgIEVRVSAxMQotRkZJX1RZUEVfU0lOVDY0ICAgICBFUVUgMTIKLUZGSV9UWVBFX1NUUlVDVCAgICAgRVFVIDEzCi1GRklfVFlQRV9QT0lOVEVSICAgIEVRVSAxNAotCi07IFdpbkNFIGFsd2F5cyB1c2VzIHNvZnR3YXJlIGZsb2F0aW5nIHBvaW50IChJIHRoaW5rKQotX19TT0ZURlBfXyBFUVUge1RSVUV9Ci0KLQotICAgIEFSRUEgfC50ZXh0fCwgQ09ERSwgQVJNICAgICA7IC50ZXh0Ci0KLQotICAgIDsgYTE6ICAgZmZpX3ByZXBfYXJncwotICAgIDsgYTI6ICAgJmVjaWYKLSAgICA7IGEzOiAgIGNpZi0+Ynl0ZXMKLSAgICA7IGE0OiAgIGZpZy0+ZmxhZ3MKLSAgICA7IHNwKzA6IGVjaWYucnZhbHVlCi0gICAgOyBzcCs0OiBmbgotCi0gICAgOyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KLTtFTlRSWShmZmlfY2FsbF9TWVNWKQotCi0gICAgRVhQT1JUIHxmZmlfY2FsbF9TWVNWfAotCi18ZmZpX2NhbGxfU1lTVnwgUFJPQwotCi0gICAgOyBTYXZlIHJlZ2lzdGVycwotICAgIHN0bWZkIHNwISwge2ExLWE0LCBmcCwgbHJ9Ci0gICAgbW92ICAgZnAsIHNwCi0KLSAgICA7IE1ha2Ugcm9vbSBmb3IgYWxsIG9mIHRoZSBuZXcgYXJncy4KLSAgICBzdWIgICBzcCwgZnAsIGEzCi0KLSAgICA7IFBsYWNlIGFsbCBvZiB0aGUgZmZpX3ByZXBfYXJncyBpbiBwb3NpdGlvbgotICAgIG1vdiAgIGlwLCBhMQotICAgIG1vdiAgIGExLCBzcAotICAgIDsgICAgIGEyIGFscmVhZHkgc2V0Ci0KLSAgICA7IEFuZCBjYWxsCi0gICAgbW92ICAgbHIsIHBjCi0gICAgbW92ICAgcGMsIGlwCi0KLSAgICA7IG1vdmUgZmlyc3QgNCBwYXJhbWV0ZXJzIGluIHJlZ2lzdGVycwotICAgIGxkciAgIGExLCBbc3AsICMwXQotICAgIGxkciAgIGEyLCBbc3AsICM0XQotICAgIGxkciAgIGEzLCBbc3AsICM4XQotICAgIGxkciAgIGE0LCBbc3AsICMxMl0KLQotICAgIDsgYW5kIGFkanVzdCBzdGFjawotICAgIGxkciAgIGlwLCBbZnAsICM4XQotICAgIGNtcCAgIGlwLCAjMTYKLSAgICBtb3ZnZSBpcCwgIzE2Ci0gICAgYWRkICAgc3AsIHNwLCBpcAotCi0gICAgOyBjYWxsIGZ1bmN0aW9uCi0gICAgbW92ICAgbHIsIHBjCi0gICAgbGRyICAgcGMsIFtmcCwgIzI4XQotCi0gICAgOyBSZW1vdmUgdGhlIHNwYWNlIHdlIHB1c2hlZCBmb3IgdGhlIGFyZ3MKLSAgICBtb3YgICBzcCwgZnAKLQotICAgIDsgTG9hZCBhMyB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICBsZHIgICBhMywgW3NwLCAjMjRdCi0KLSAgICA7IExvYWQgYTQgd2l0aCB0aGUgcmV0dXJuIHR5cGUgY29kZSAKLSAgICBsZHIgICBhNCwgW3NwLCAjMTJdCi0KLSAgICA7IElmIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRlciBpcyBOVUxMLCBhc3N1bWUgbm8gcmV0dXJuIHZhbHVlLgotICAgIGNtcCAgIGEzLCAjMAotICAgIGJlcSAgIGNhbGxfZXBpbG9ndWUKLQotOyByZXR1cm4gSU5UCi0gICAgY21wICAgYTQsICNGRklfVFlQRV9JTlQKLSAgICBzdHJlcSBhMSwgW2EzXQotICAgIGJlcSAgIGNhbGxfZXBpbG9ndWUKLQotOyByZXR1cm4gRkxPQVQKLSAgICBjbXAgICAgIGE0LCAjRkZJX1RZUEVfRkxPQVQKLSAgICBbIF9fU09GVEZQX18gICAgICAgICAgICAgICAgICAgIDtpZmRlZiBfX1NPRlRGUF9fCi0gICAgc3RyZXEgICBhMSwgW2EzXQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcXMgIGYwLCBbYTNdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNhbGxfZXBpbG9ndWUKLQotOyByZXR1cm4gRE9VQkxFIG9yIExPTkdET1VCTEUKLSAgICBjbXAgICAgIGE0LCAjRkZJX1RZUEVfRE9VQkxFCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIHN0bWVxaWEgYTMsIHthMSwgYTJ9Ci0gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZWxzZQotICAgIHN0ZmVxZCAgZjAsIFthM10KLSAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbmRpZgotICAgIGJlcSAgICAgY2FsbF9lcGlsb2d1ZQotCi07IHJldHVybiBTSU5UNjQgb3IgVUlOVDY0Ci0gICAgY21wICAgICBhNCwgI0ZGSV9UWVBFX1NJTlQ2NAotICAgIHN0bWVxaWEgYTMsIHthMSwgYTJ9Ci0KLWNhbGxfZXBpbG9ndWUKLSAgICBsZG1mZCAgIHNwISwge2ExLWE0LCBmcCwgcGN9Ci0KLTsuZmZpX2NhbGxfU1lTVl9lbmQ6Ci0gICAgOy5zaXplICAgIENOQU1FKGZmaV9jYWxsX1NZU1YpLC5mZmlfY2FsbF9TWVNWX2VuZC1DTkFNRShmZmlfY2FsbF9TWVNWKQotICAgIEVORFAKLQotCi1SRVNFUlZFX1JFVFVSTiBFUVUgMTYKLQotICAgIDsgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIHRyYW1wb2xpbmUKLSAgICA7IEl0IGlzIE5PVCBjYWxsYWJsZSBmcm9tIEMKLSAgICA7IGlwID0gcG9pbnRlciB0byBzdHJ1Y3QgZmZpX2Nsb3N1cmUKLQotICAgIElNUE9SVCB8ZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcnwKLQotICAgIEVYUE9SVCB8ZmZpX2Nsb3N1cmVfU1lTVnwKLXxmZmlfY2xvc3VyZV9TWVNWfCBQUk9DCi0KLSAgICA7IFN0b3JlIHRoZSBhcmd1bWVudCByZWdpc3RlcnMgb24gdGhlIHN0YWNrCi0gICAgc3RtZmQgICBzcCEsIHthMS1hNH0KLSAgICA7IFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9udG8gdGhlIHN0YWNrCi0gICAgc3RtZmQgICBzcCEsIHtscn0KLQotICAgIG1vdiAgICAgYTEsIGlwICAgICAgICAgICAgOyBmaXJzdCBhcmcgPSBhZGRyZXNzIG9mIGZmaV9jbG9zdXJlCi0gICAgYWRkICAgICBhMiwgc3AsICM0ICAgICAgICA7IHNlY29uZCBhcmcgPSBzcCs0IChwb2ludHMgdG8gc2F2ZWQgYTEpCi0KLSAgICA7IEFsbG9jYXRlIHNwYWNlIGZvciBhIG5vbi1zdHJ1Y3QgcmV0dXJuIHZhbHVlCi0gICAgc3ViICAgICBzcCwgc3AsICNSRVNFUlZFX1JFVFVSTgotICAgIG1vdiAgICAgYTMsIHNwICAgICAgICAgICAgOyB0aGlyZCBhcmcgPSByZXR1cm4gdmFsdWUgYWRkcmVzcwotCi0gICAgOyBzdGF0aWMgdW5zaWduZWQgaW50Ci0gICAgOyBmZmlfY2xvc3VyZV9TWVNWX2lubmVyIChmZmlfY2xvc3VyZSAqY2xvc3VyZSwgY2hhciAqaW5fYXJncywgdm9pZCAqcnZhbHVlKQotICAgIGJsICAgICAgZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcgotICAgIDsgYTEgbm93IGNvbnRhaW5zIHRoZSByZXR1cm4gdHlwZSBjb2RlIAotCi0gICAgOyBBdCB0aGlzIHBvaW50IHRoZSByZXR1cm4gdmFsdWUgaXMgb24gdGhlIHN0YWNrCi0gICAgOyBUcmFuc2ZlciBpdCB0byB0aGUgY29ycmVjdCByZWdpc3RlcnMgaWYgbmVjZXNzYXJ5Ci0KLTsgcmV0dXJuIElOVAotICAgIGNtcCAgICAgYTEsICNGRklfVFlQRV9JTlQKLSAgICBsZHJlcSAgIGExLCBbc3BdCi0gICAgYmVxICAgICBjbG9zdXJlX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIEZMT0FUCi0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX0ZMT0FUCi0gICAgWyBfX1NPRlRGUF9fICAgICAgICAgICAgICAgICAgICA7aWZkZWYgX19TT0ZURlBfXwotICAgIGxkcmVxICAgYTEsIFtzcF0KLSAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDtlbHNlCi0gICAgc3RmZXFzICBmMCwgW3NwXQotICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2VuZGlmCi0gICAgYmVxICAgICBjbG9zdXJlX2VwaWxvZ3VlCi0KLTsgcmV0dXJuIERPVUJMRSBvciBMT05HRE9VQkxFCi0gICAgY21wICAgICBhMSwgI0ZGSV9UWVBFX0RPVUJMRQotICAgIFsgX19TT0ZURlBfXyAgICAgICAgICAgICAgICAgICAgO2lmZGVmIF9fU09GVEZQX18KLSAgICBsZG1lcWlhIHNwLCB7YTEsIGEyfQotICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgO2Vsc2UKLSAgICBzdGZlcWQgIGYwLCBbc3BdCi0gICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7ZW5kaWYKLSAgICBiZXEgICAgIGNsb3N1cmVfZXBpbG9ndWUKLQotOyByZXR1cm4gU0lOVDY0IG9yIFVJTlQ2NAotICAgIGNtcCAgICAgYTEsICNGRklfVFlQRV9TSU5UNjQKLSAgICBsZG1lcWlhIHNwLCB7YTEsIGEyfQotCi1jbG9zdXJlX2VwaWxvZ3VlCi0gICAgYWRkICAgICBzcCwgc3AsICNSRVNFUlZFX1JFVFVSTiAgIDsgcmVtb3ZlIHJldHVybiB2YWx1ZSBidWZmZXIKLSAgICBsZG1mZCAgIHNwISwge2lwfSAgICAgICAgIDsgaXAgPSBwb3AgcmV0dXJuIGFkZHJlc3MKLSAgICBhZGQgICAgIHNwLCBzcCwgIzE2ICAgICAgIDsgcmVtb3ZlIHNhdmVkIGFyZ3VtZW50IHJlZ2lzdGVycyB7YTEtYTR9IGZyb20gdGhlIHN0YWNrCi0gICAgbW92ICAgICBwYywgaXAgICAgICAgICAgICA7IHJldHVybgotCi0gICAgRU5EUCAgICA7IGZmaV9jbG9zdXJlX1NZU1YKLQotICAgIEVORApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwppbmRleCAyMjhmNDk3Li4xOGVmMzM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYworKysgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwpAQCAtNiw3ICs2LDcgQEAKIAogLyogUmVsZWFzZSBOdW1iZXIgKi8KIAotc3RhdGljIGNoYXIgKlB5Q3Vyc2VzVmVyc2lvbiA9ICIyLjEiOworc3RhdGljIGNvbnN0IGNoYXIgUHlDdXJzZXNWZXJzaW9uW10gPSAiMi4xIjsKIAogLyogSW5jbHVkZXMgKi8KIApAQCAtNTYsNyArNTYsNyBAQAogICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjaGFyICpmbmFtZSkKK1B5Q3Vyc2VzQ2hlY2tFUlIoaW50IGNvZGUsIGNvbnN0IGNoYXIgKmZuYW1lKQogewogICAgIGlmIChjb2RlICE9IEVSUikgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IDFjNzE4YTcuLmU2M2MxNmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0yMzA2LDcgKzIzMDYsNyBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgIiIpOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHN0cmVhbSwgJlB5SWRfcmVhZCwgTlVMTCk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soZGF0YSkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCmluZGV4IGY0MTljYjIuLjVkZGY2NTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwpAQCAtNTYsNiArNTYsNyBAQAogI2RlZmluZSBEQVRFX0dFVF9NSU5VVEUgICAgICAgICBQeURhdGVUaW1lX0RBVEVfR0VUX01JTlVURQogI2RlZmluZSBEQVRFX0dFVF9TRUNPTkQgICAgICAgICBQeURhdGVUaW1lX0RBVEVfR0VUX1NFQ09ORAogI2RlZmluZSBEQVRFX0dFVF9NSUNST1NFQ09ORCAgICBQeURhdGVUaW1lX0RBVEVfR0VUX01JQ1JPU0VDT05ECisjZGVmaW5lIERBVEVfR0VUX0ZPTEQgICAgICAgICAgIFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRAogCiAvKiBEYXRlIGFjY2Vzc29ycyBmb3IgZGF0ZSBhbmQgZGF0ZXRpbWUuICovCiAjZGVmaW5lIFNFVF9ZRUFSKG8sIHYpICAgICAgICAgICgoKG8pLT5kYXRhWzBdID0gKCh2KSAmIDB4ZmYwMCkgPj4gOCksIFwKQEAgLTcxLDEyICs3MiwxNCBAQAogICAgICgoKG8pLT5kYXRhWzddID0gKCh2KSAmIDB4ZmYwMDAwKSA+PiAxNiksIFwKICAgICAgKChvKS0+ZGF0YVs4XSA9ICgodikgJiAweDAwZmYwMCkgPj4gOCksIFwKICAgICAgKChvKS0+ZGF0YVs5XSA9ICgodikgJiAweDAwMDBmZikpKQorI2RlZmluZSBEQVRFX1NFVF9GT0xEKG8sIHYpICAgKFB5RGF0ZVRpbWVfREFURV9HRVRfRk9MRChvKSA9ICh2KSkKIAogLyogVGltZSBhY2Nlc3NvcnMgZm9yIHRpbWUuICovCiAjZGVmaW5lIFRJTUVfR0VUX0hPVVIgICAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfSE9VUgogI2RlZmluZSBUSU1FX0dFVF9NSU5VVEUgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX01JTlVURQogI2RlZmluZSBUSU1FX0dFVF9TRUNPTkQgICAgICAgICBQeURhdGVUaW1lX1RJTUVfR0VUX1NFQ09ORAogI2RlZmluZSBUSU1FX0dFVF9NSUNST1NFQ09ORCAgICBQeURhdGVUaW1lX1RJTUVfR0VUX01JQ1JPU0VDT05ECisjZGVmaW5lIFRJTUVfR0VUX0ZPTEQgICAgICAgICAgIFB5RGF0ZVRpbWVfVElNRV9HRVRfRk9MRAogI2RlZmluZSBUSU1FX1NFVF9IT1VSKG8sIHYpICAgICAoUHlEYXRlVGltZV9USU1FX0dFVF9IT1VSKG8pID0gKHYpKQogI2RlZmluZSBUSU1FX1NFVF9NSU5VVEUobywgdikgICAoUHlEYXRlVGltZV9USU1FX0dFVF9NSU5VVEUobykgPSAodikpCiAjZGVmaW5lIFRJTUVfU0VUX1NFQ09ORChvLCB2KSAgIChQeURhdGVUaW1lX1RJTUVfR0VUX1NFQ09ORChvKSA9ICh2KSkKQEAgLTg0LDYgKzg3LDcgQEAKICAgICAoKChvKS0+ZGF0YVszXSA9ICgodikgJiAweGZmMDAwMCkgPj4gMTYpLCBcCiAgICAgICgobyktPmRhdGFbNF0gPSAoKHYpICYgMHgwMGZmMDApID4+IDgpLCBcCiAgICAgICgobyktPmRhdGFbNV0gPSAoKHYpICYgMHgwMDAwZmYpKSkKKyNkZWZpbmUgVElNRV9TRVRfRk9MRChvLCB2KSAgIChQeURhdGVUaW1lX1RJTUVfR0VUX0ZPTEQobykgPSAodikpCiAKIC8qIERlbHRhIGFjY2Vzc29ycyBmb3IgdGltZWRlbHRhLiAqLwogI2RlZmluZSBHRVRfVERfREFZUyhvKSAgICAgICAgICAoKChQeURhdGVUaW1lX0RlbHRhICopKG8pKS0+ZGF5cykKQEAgLTE4NCwxMiArMTg4LDEyIEBACiAgKiBhbmQgdGhlIG51bWJlciBvZiBkYXlzIGJlZm9yZSB0aGF0IG1vbnRoIGluIHRoZSBzYW1lIHllYXIuICBUaGVzZQogICogYXJlIGNvcnJlY3QgZm9yIG5vbi1sZWFwIHllYXJzIG9ubHkuCiAgKi8KLXN0YXRpYyBpbnQgX2RheXNfaW5fbW9udGhbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgX2RheXNfaW5fbW9udGhbXSA9IHsKICAgICAwLCAvKiB1bnVzZWQ7IHRoaXMgdmVjdG9yIHVzZXMgMS1iYXNlZCBpbmRleGluZyAqLwogICAgIDMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzEKIH07CiAKLXN0YXRpYyBpbnQgX2RheXNfYmVmb3JlX21vbnRoW10gPSB7CitzdGF0aWMgY29uc3QgaW50IF9kYXlzX2JlZm9yZV9tb250aFtdID0gewogICAgIDAsIC8qIHVudXNlZDsgdGhpcyB2ZWN0b3IgdXNlcyAxLWJhc2VkIGluZGV4aW5nICovCiAgICAgMCwgMzEsIDU5LCA5MCwgMTIwLCAxNTEsIDE4MSwgMjEyLCAyNDMsIDI3MywgMzA0LCAzMzQKIH07CkBAIC00MTcsNyArNDIxLDcgQEAKICAqIGFyZW4ndCwgcmFpc2UgVmFsdWVFcnJvciBhbmQgcmV0dXJuIC0xLgogICovCiBzdGF0aWMgaW50Ci1jaGVja190aW1lX2FyZ3MoaW50IGgsIGludCBtLCBpbnQgcywgaW50IHVzKQorY2hlY2tfdGltZV9hcmdzKGludCBoLCBpbnQgbSwgaW50IHMsIGludCB1cywgaW50IGZvbGQpCiB7CiAgICAgaWYgKGggPCAwIHx8IGggPiAyMykgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKQEAgLTQzOSw2ICs0NDMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb3NlY29uZCBtdXN0IGJlIGluIDAuLjk5OTk5OSIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIGlmIChmb2xkICE9IDAgJiYgZm9sZCAhPSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvbGQgbXVzdCBiZSBlaXRoZXIgMCBvciAxIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY3NCw4ICs2ODMsOCBAQAogCiAvKiBDcmVhdGUgYSBkYXRldGltZSBpbnN0YW5jZSB3aXRoIG5vIHJhbmdlIGNoZWNraW5nLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLW5ld19kYXRldGltZV9leChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKLSAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQorbmV3X2RhdGV0aW1lX2V4MihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKKyAgICAgICAgICAgICAgICAgaW50IHNlY29uZCwgaW50IHVzZWNvbmQsIFB5T2JqZWN0ICp0emluZm8sIGludCBmb2xkLCBQeVR5cGVPYmplY3QgKnR5cGUpCiB7CiAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZjsKICAgICBjaGFyIGF3YXJlID0gdHppbmZvICE9IFB5X05vbmU7CkBAIC02OTIsMTggKzcwMSwyNyBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICBzZWxmLT50emluZm8gPSB0emluZm87CiAgICAgICAgIH0KKyAgICAgICAgREFURV9TRVRfRk9MRChzZWxmLCBmb2xkKTsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKLSNkZWZpbmUgbmV3X2RhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8pICAgICAgICAgICBcCi0gICAgbmV3X2RhdGV0aW1lX2V4KHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sICAgICAgICAgICAgXAorc3RhdGljIFB5T2JqZWN0ICoKK25ld19kYXRldGltZV9leChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgaG91ciwgaW50IG1pbnV0ZSwKKyAgICAgICAgICAgICAgICBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbywgMCwgdHlwZSk7Cit9CisKKyNkZWZpbmUgbmV3X2RhdGV0aW1lKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQpIFwKKyAgICBuZXdfZGF0ZXRpbWVfZXgyKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQsIFwKICAgICAgICAgICAgICAgICAgICAgJlB5RGF0ZVRpbWVfRGF0ZVRpbWVUeXBlKQogCiAvKiBDcmVhdGUgYSB0aW1lIGluc3RhbmNlIHdpdGggbm8gcmFuZ2UgY2hlY2tpbmcuICovCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3X3RpbWVfZXgoaW50IGhvdXIsIGludCBtaW51dGUsIGludCBzZWNvbmQsIGludCB1c2Vjb25kLAotICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbywgUHlUeXBlT2JqZWN0ICp0eXBlKQorbmV3X3RpbWVfZXgyKGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwKKyAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvLCBpbnQgZm9sZCwgUHlUeXBlT2JqZWN0ICp0eXBlKQogewogICAgIFB5RGF0ZVRpbWVfVGltZSAqc2VsZjsKICAgICBjaGFyIGF3YXJlID0gdHppbmZvICE9IFB5X05vbmU7CkBAIC03MjAsMTIgKzczOCwyMCBAQAogICAgICAgICAgICAgUHlfSU5DUkVGKHR6aW5mbyk7CiAgICAgICAgICAgICBzZWxmLT50emluZm8gPSB0emluZm87CiAgICAgICAgIH0KKyAgICAgICAgVElNRV9TRVRfRk9MRChzZWxmLCBmb2xkKTsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CiB9CiAKLSNkZWZpbmUgbmV3X3RpbWUoaGgsIG1tLCBzcywgdXMsIHR6aW5mbykgICAgICAgICAgICAgICAgXAotICAgIG5ld190aW1lX2V4KGhoLCBtbSwgc3MsIHVzLCB0emluZm8sICZQeURhdGVUaW1lX1RpbWVUeXBlKQorc3RhdGljIFB5T2JqZWN0ICoKK25ld190aW1lX2V4KGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgdXNlY29uZCwKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8sIFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICByZXR1cm4gbmV3X3RpbWVfZXgyKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCB0emluZm8sIDAsIHR5cGUpOworfQorCisjZGVmaW5lIG5ld190aW1lKGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgbmV3X3RpbWVfZXgyKGhoLCBtbSwgc3MsIHVzLCB0emluZm8sIGZvbGQsICZQeURhdGVUaW1lX1RpbWVUeXBlKQogCiAvKiBDcmVhdGUgYSB0aW1lZGVsdGEgaW5zdGFuY2UuICBOb3JtYWxpemUgdGhlIG1lbWJlcnMgaWZmIG5vcm1hbGl6ZSBpcwogICogdHJ1ZS4gIFBhc3NpbmcgZmFsc2UgaXMgYSBzcGVlZCBvcHRpbWl6YXRpb24sIGlmIHlvdSBrbm93IGZvciBzdXJlCkBAIC04NzMsNyArODk5LDcgQEAKICAqIHRoaXMgcmV0dXJucyBOVUxMLiAgRWxzZSByZXN1bHQgaXMgcmV0dXJuZWQuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX3R6aW5mb19tZXRob2QoUHlPYmplY3QgKnR6aW5mbywgY2hhciAqbmFtZSwgUHlPYmplY3QgKnR6aW5mb2FyZykKK2NhbGxfdHppbmZvX21ldGhvZChQeU9iamVjdCAqdHppbmZvLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdHppbmZvYXJnKQogewogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAKQEAgLTg4NywxMCArOTEzLDEwIEBACiAgICAgaWYgKG9mZnNldCA9PSBQeV9Ob25lIHx8IG9mZnNldCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gb2Zmc2V0OwogICAgIGlmIChQeURlbHRhX0NoZWNrKG9mZnNldCkpIHsKLSAgICAgICAgaWYgKEdFVF9URF9NSUNST1NFQ09ORFMob2Zmc2V0KSAhPSAwIHx8IEdFVF9URF9TRUNPTkRTKG9mZnNldCkgJSA2MCAhPSAwKSB7CisgICAgICAgIGlmIChHRVRfVERfTUlDUk9TRUNPTkRTKG9mZnNldCkgIT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9mZnNldCk7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCBtdXN0IGJlIGEgdGltZWRlbHRhIgotICAgICAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIHJlcHJlc2VudGluZyBhIHdob2xlIG51bWJlciBvZiBzZWNvbmRzIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoKEdFVF9URF9EQVlTKG9mZnNldCkgPT0gLTEgJiYgR0VUX1REX1NFQ09ORFMob2Zmc2V0KSA9PSAwKSB8fApAQCAtMTAwMiw2ICsxMDI4LDMwIEBACiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKKy8qIHJlcHIgaXMgbGlrZSAic29tZWNsYXNzKGFyZzEsIGFyZzIpIi4gIElmIGZvbGQgaXNuJ3QgMCwKKyAqIHN0dWZmCisgKiAgICAgIiwgZm9sZD0iICsgcmVwcih0emluZm8pCisgKiBiZWZvcmUgdGhlIGNsb3NpbmcgIikiLgorICovCitzdGF0aWMgUHlPYmplY3QgKgorYXBwZW5kX2tleXdvcmRfZm9sZChQeU9iamVjdCAqcmVwciwgaW50IGZvbGQpCit7CisgICAgUHlPYmplY3QgKnRlbXA7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHJlcHIpKTsKKyAgICBpZiAoZm9sZCA9PSAwKQorICAgICAgICByZXR1cm4gcmVwcjsKKyAgICAvKiBHZXQgcmlkIG9mIHRoZSB0cmFpbGluZyAnKScuICovCisgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEX0NIQVIocmVwciwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwciktMSkgPT0gJyknKTsKKyAgICB0ZW1wID0gUHlVbmljb2RlX1N1YnN0cmluZyhyZXByLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXByKSAtIDEpOworICAgIFB5X0RFQ1JFRihyZXByKTsKKyAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLCBmb2xkPSVkKSIsIHRlbXAsIGZvbGQpOworICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICByZXR1cm4gcmVwcjsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTdHJpbmcgZm9ybWF0IGhlbHBlcnMuCiAgKi8KQEAgLTEwMDksMTAgKzEwNTksMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmb3JtYXRfY3RpbWUoUHlEYXRlVGltZV9EYXRlICpkYXRlLCBpbnQgaG91cnMsIGludCBtaW51dGVzLCBpbnQgc2Vjb25kcykKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqRGF5TmFtZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IERheU5hbWVzW10gPSB7CiAgICAgICAgICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIsICJTdW4iCiAgICAgfTsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqTW9udGhOYW1lc1tdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgTW9udGhOYW1lc1tdID0gewogICAgICAgICAiSmFuIiwgIkZlYiIsICJNYXIiLCAiQXByIiwgIk1heSIsICJKdW4iLAogICAgICAgICAiSnVsIiwgIkF1ZyIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJEZWMiCiAgICAgfTsKQEAgLTEwNTcsMTAgKzExMDcsOCBAQAogICAgIH0KICAgICAvKiBPZmZzZXQgaXMgbm9ybWFsaXplZCwgc28gaXQgaXMgbmVnYXRpdmUgaWYgZGF5cyA8IDAgKi8KICAgICBpZiAoR0VUX1REX0RBWVMob2Zmc2V0KSA8IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBvZmZzZXQ7CiAgICAgICAgIHNpZ24gPSAnLSc7Ci0gICAgICAgIG9mZnNldCA9IGRlbHRhX25lZ2F0aXZlKChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0KTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBQeV9TRVRSRUYob2Zmc2V0LCBkZWx0YV9uZWdhdGl2ZSgoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCkpOwogICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMTA3MiwxMCArMTEyMCwxMSBAQAogICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgIG1pbnV0ZXMgPSBkaXZtb2Qoc2Vjb25kcywgNjAsICZzZWNvbmRzKTsKICAgICBob3VycyA9IGRpdm1vZChtaW51dGVzLCA2MCwgJm1pbnV0ZXMpOwotICAgIGFzc2VydChzZWNvbmRzID09IDApOwotICAgIC8qIFhYWCBpZ25vcmUgc3ViLW1pbnV0ZSBkYXRhLCBjdXJyZW50bHkgbm90IGFsbG93ZWQuICovCi0gICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLCBzZXAsIG1pbnV0ZXMpOwotCisgICAgaWYgKHNlY29uZHMgPT0gMCkKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLCBzZXAsIG1pbnV0ZXMpOworICAgIGVsc2UKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIGJ1ZmxlbiwgIiVjJTAyZCVzJTAyZCVzJTAyZCIsIHNpZ24sIGhvdXJzLAorICAgICAgICAgICAgICAgICAgICAgIHNlcCwgbWludXRlcywgc2VwLCBzZWNvbmRzKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTMyMyw3ICsxMzcyLDcgQEAKICAgICBpZiAodGltZSAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKHRpbWUpOwogCi0gICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfdGltZSwgIigpIik7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfdGltZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzMDcsNyArMjM1Niw3IEBACiAgICAge05VTEwsICAgICAgTlVMTH0sCiB9OwogCi1zdGF0aWMgY2hhciBkZWx0YV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciBkZWx0YV9kb2NbXSA9CiBQeURvY19TVFIoIkRpZmZlcmVuY2UgYmV0d2VlbiB0d28gZGF0ZXRpbWUgdmFsdWVzLiIpOwogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGRlbHRhX2FzX251bWJlciA9IHsKQEAgLTI0NjIsMjcgKzI1MTEsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgc3RydWN0IHRtICp0bTsKKyAgICBzdHJ1Y3QgdG0gdG07CiAgICAgdGltZV90IHQ7CiAKICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVfdChvYmosICZ0LCBfUHlUaW1lX1JPVU5EX0ZMT09SKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bSA9IGxvY2FsdGltZSgmdCk7Ci0gICAgaWYgKHRtID09IE5VTEwpIHsKLSAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCi0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0LCAmdG0pICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV95ZWFyICsgMTkwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21kYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0udG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0udG1fbWRheSk7CiB9CiAKIC8qIFJldHVybiBuZXcgZGF0ZSBmcm9tIGN1cnJlbnQgdGltZS4KQEAgLTI2NDgsNyArMjY4OSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9zdHIoUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCBOVUxMKTsKIH0KIAogCkBAIC0yNjc0LDcgKzI3MTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCAiKCkiKTsKKyAgICB0dXBsZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGltZXR1cGxlLCBOVUxMKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmVzdWx0ID0gd3JhcF9zdHJmdGltZSgoUHlPYmplY3QgKilzZWxmLCBmb3JtYXQsIHR1cGxlLApAQCAtMjc4Niw5ICsyODI3LDEwIEBACiBzdGF0aWMgUHlfaGFzaF90CiBkYXRlX2hhc2goUHlEYXRlVGltZV9EYXRlICpzZWxmKQogewotICAgIGlmIChzZWxmLT5oYXNoY29kZSA9PSAtMSkKKyAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpIHsKICAgICAgICAgc2VsZi0+aGFzaGNvZGUgPSBnZW5lcmljX2hhc2goCiAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKXNlbGYtPmRhdGEsIF9QeURhdGVUaW1lX0RBVEVfREFUQVNJWkUpOworICAgIH0KIAogICAgIHJldHVybiBzZWxmLT5oYXNoY29kZTsKIH0KQEAgLTI4ODYsNyArMjkyOCw3IEBACiAgICAge05VTEwsICAgICAgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIGRhdGVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZGF0ZV9kb2NbXSA9CiBQeURvY19TVFIoImRhdGUoeWVhciwgbW9udGgsIGRheSkgLS0+IGRhdGUgb2JqZWN0Iik7CiAKIHN0YXRpYyBQeU51bWJlck1ldGhvZHMgZGF0ZV9hc19udW1iZXIgPSB7CkBAIC0zMDQ3LDEwICszMDg5LDggQEAKICAgICBpZiAoZHN0ID09IFB5X05vbmUpCiAgICAgICAgIGdvdG8gSW5jb25zaXN0ZW50OwogICAgIGlmIChkZWx0YV9ib29sKChQeURhdGVUaW1lX0RlbHRhICopZHN0KSAhPSAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gcmVzdWx0OwotICAgICAgICByZXN1bHQgPSBhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopZHN0LCAxKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopZHN0LCAxKSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRmFpbDsKICAgICB9CkBAIC0zMDgwLDM3ICszMTIwLDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHppbmZvX3JlZHVjZShQeU9iamVjdCAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKnN0YXRlLCAqdG1wOworICAgIFB5T2JqZWN0ICphcmdzLCAqc3RhdGU7CiAgICAgUHlPYmplY3QgKmdldGluaXRhcmdzLCAqZ2V0c3RhdGU7CiAgICAgX1B5X0lERU5USUZJRVIoX19nZXRpbml0YXJnc19fKTsKICAgICBfUHlfSURFTlRJRklFUihfX2dldHN0YXRlX18pOwogCi0gICAgdG1wID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGdldGluaXRhcmdzID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2dldGluaXRhcmdzX18pOwogICAgIGlmIChnZXRpbml0YXJncyAhPSBOVUxMKSB7Ci0gICAgICAgIGFyZ3MgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldGluaXRhcmdzLCB0bXApOworICAgICAgICBhcmdzID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhnZXRpbml0YXJncyk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRpbml0YXJncyk7CiAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGFyZ3MgPSB0bXA7Ci0gICAgICAgIFB5X0lOQ1JFRihhcmdzKTsKKworICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogCiAgICAgZ2V0c3RhdGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZ2V0c3RhdGVfXyk7CiAgICAgaWYgKGdldHN0YXRlICE9IE5VTEwpIHsKLSAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGdldHN0YXRlLCB0bXApOworICAgICAgICBzdGF0ZSA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZ2V0c3RhdGUpOwogICAgICAgICBQeV9ERUNSRUYoZ2V0c3RhdGUpOwogICAgICAgICBpZiAoc3RhdGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTMxMTksMTMgKzMxNTYsMTIgQEAKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgc3RhdGUgPSBQeV9Ob25lOwogICAgICAgICBkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIoc2VsZik7Ci0gICAgICAgIGlmIChkaWN0cHRyICYmICpkaWN0cHRyICYmIFB5RGljdF9TaXplKCpkaWN0cHRyKSkKKyAgICAgICAgaWYgKGRpY3RwdHIgJiYgKmRpY3RwdHIgJiYgUHlEaWN0X1NpemUoKmRpY3RwdHIpKSB7CiAgICAgICAgICAgICBzdGF0ZSA9ICpkaWN0cHRyOworICAgICAgICB9CiAgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHRtcCk7Ci0KICAgICBpZiAoc3RhdGUgPT0gUHlfTm9uZSkgewogICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGFyZ3MpOwpAQCAtMzE1NSw3ICszMTkxLDcgQEAKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIHR6aW5mb19kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0emluZm9fZG9jW10gPQogUHlEb2NfU1RSKCJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB0aW1lIHpvbmUgaW5mbyBvYmplY3RzLiIpOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVFpJbmZvVHlwZSA9IHsKQEAgLTMyODcsNiArMzMyMywxMSBAQAogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+bmFtZSk7CiAgICAgICAgIHJldHVybiBzZWxmLT5uYW1lOwogICAgIH0KKyAgICBpZiAoKFB5T2JqZWN0ICopc2VsZiA9PSBQeURhdGVUaW1lX1RpbWVab25lX1VUQyB8fAorICAgICAgICAgICAoR0VUX1REX0RBWVMoc2VsZi0+b2Zmc2V0KSA9PSAwICYmCisgICAgICAgICAgICBHRVRfVERfU0VDT05EUyhzZWxmLT5vZmZzZXQpID09IDAgJiYKKyAgICAgICAgICAgIEdFVF9URF9NSUNST1NFQ09ORFMoc2VsZi0+b2Zmc2V0KSA9PSAwKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJVVEMiKTsKICAgICAvKiBPZmZzZXQgaXMgbm9ybWFsaXplZCwgc28gaXQgaXMgbmVnYXRpdmUgaWYgZGF5cyA8IDAgKi8KICAgICBpZiAoR0VUX1REX0RBWVMoc2VsZi0+b2Zmc2V0KSA8IDApIHsKICAgICAgICAgc2lnbiA9ICctJzsKQEAgLTMzODIsNyArMzQyMyw3IEBACiAgICAge05VTEwsIE5VTEx9CiB9OwogCi1zdGF0aWMgY2hhciB0aW1lem9uZV9kb2NbXSA9CitzdGF0aWMgY29uc3QgY2hhciB0aW1lem9uZV9kb2NbXSA9CiBQeURvY19TVFIoIkZpeGVkIG9mZnNldCBmcm9tIFVUQyBpbXBsZW1lbnRhdGlvbiBvZiB0emluZm8uIik7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlEYXRlVGltZV9UaW1lWm9uZVR5cGUgPSB7CkBAIC0zNDY2LDEyICszNTA3LDE5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfZm9sZChQeURhdGVUaW1lX1RpbWUgKnNlbGYsIHZvaWQgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFRJTUVfR0VUX0ZPTEQoc2VsZikpOworfQorCiBzdGF0aWMgUHlHZXRTZXREZWYgdGltZV9nZXRzZXRbXSA9IHsKICAgICB7ImhvdXIiLCAgICAgICAgKGdldHRlcil0aW1lX2hvdXJ9LAogICAgIHsibWludXRlIiwgICAgICAoZ2V0dGVyKXRpbWVfbWludXRlfSwKICAgICB7InNlY29uZCIsICAgICAgKGdldHRlcilweV90aW1lX3NlY29uZH0sCiAgICAgeyJtaWNyb3NlY29uZCIsIChnZXR0ZXIpdGltZV9taWNyb3NlY29uZH0sCi0gICAgeyJ0emluZm8iLCAgICAgICAgICAoZ2V0dGVyKXRpbWVfdHppbmZvfSwKKyAgICB7InR6aW5mbyIsICAgICAgKGdldHRlcil0aW1lX3R6aW5mb30sCisgICAgeyJmb2xkIiwgICAgICAgIChnZXR0ZXIpdGltZV9mb2xkfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTM0ODAsNyArMzUyOCw3IEBACiAgKi8KIAogc3RhdGljIGNoYXIgKnRpbWVfa3dzW10gPSB7ImhvdXIiLCAibWludXRlIiwgInNlY29uZCIsICJtaWNyb3NlY29uZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAidHppbmZvIiwgTlVMTH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAidHppbmZvIiwgImZvbGQiLCBOVUxMfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKQEAgLTM0OTIsMTMgKzM1NDAsMTQgQEAKICAgICBpbnQgc2Vjb25kID0gMDsKICAgICBpbnQgdXNlY29uZCA9IDA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSAwOwogCiAgICAgLyogQ2hlY2sgZm9yIGludm9jYXRpb24gZnJvbSBwaWNrbGUgd2l0aCBfX2dldHN0YXRlX18gc3RhdGUgKi8KICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA+PSAxICYmCiAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPD0gMiAmJgogICAgICAgICBQeUJ5dGVzX0NoZWNrKHN0YXRlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSkgJiYKICAgICAgICAgUHlCeXRlc19HRVRfU0laRShzdGF0ZSkgPT0gX1B5RGF0ZVRpbWVfVElNRV9EQVRBU0laRSAmJgotICAgICAgICAoKHVuc2lnbmVkIGNoYXIpIChQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMF0pKSA8IDI0KQorICAgICAgICAoMHg3RiAmICgodW5zaWduZWQgY2hhcikgKFB5Qnl0ZXNfQVNfU1RSSU5HKHN0YXRlKVswXSkpKSA8IDI0KQogICAgIHsKICAgICAgICAgUHlEYXRlVGltZV9UaW1lICptZTsKICAgICAgICAgY2hhciBhd2FyZTsKQEAgLTM1MjMsMTkgKzM1NzIsMjYgQEAKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodHppbmZvKTsKICAgICAgICAgICAgICAgICBtZS0+dHppbmZvID0gdHppbmZvOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBkYXRhWzBdICYgKDEgPDwgNykpIHsKKyAgICAgICAgICAgICAgICBtZS0+ZGF0YVswXSAtPSAxMjg7CisgICAgICAgICAgICAgICAgbWUtPmZvbGQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWUtPmZvbGQgPSAwOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiltZTsKICAgICB9CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPIiwgdGltZV9rd3MsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTyRpIiwgdGltZV9rd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaG91ciwgJm1pbnV0ZSwgJnNlY29uZCwgJnVzZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvKSkgewotICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvLCAmZm9sZCkpIHsKKyAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgZm9sZCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZiA9IG5ld190aW1lX2V4KGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCB0emluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsKKyAgICAgICAgc2VsZiA9IG5ld190aW1lX2V4Mihob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCwgdHppbmZvLCBmb2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTM1ODUsNiArMzY0MSw3IEBACiAgICAgaW50IG0gPSBUSU1FX0dFVF9NSU5VVEUoc2VsZik7CiAgICAgaW50IHMgPSBUSU1FX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CisgICAgaW50IGZvbGQgPSBUSU1FX0dFVF9GT0xEKHNlbGYpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCiAgICAgaWYgKHVzKQpAQCAtMzU5NywzMyArMzY1NCw2OCBAQAogICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJWQsICVkKSIsIHR5cGVfbmFtZSwgaCwgbSk7CiAgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmIEhBU1RaSU5GTyhzZWxmKSkKICAgICAgICAgcmVzdWx0ID0gYXBwZW5kX2tleXdvcmRfdHppbmZvKHJlc3VsdCwgc2VsZi0+dHppbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgZm9sZCkKKyAgICAgICAgcmVzdWx0ID0gYXBwZW5kX2tleXdvcmRfZm9sZChyZXN1bHQsIGZvbGQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3N0cihQeURhdGVUaW1lX1RpbWUgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfaXNvZm9ybWF0LCAiKCkiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9pc29mb3JtYXQsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQordGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIGNoYXIgYnVmWzEwMF07CisgICAgY2hhciAqdGltZXNwZWMgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0aW1lc3BlYyIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CisgICAgc3RhdGljIGNoYXIgKnNwZWNzW11bMl0gPSB7CisgICAgICAgIHsiaG91cnMiLCAiJTAyZCJ9LAorICAgICAgICB7Im1pbnV0ZXMiLCAiJTAyZDolMDJkIn0sCisgICAgICAgIHsic2Vjb25kcyIsICIlMDJkOiUwMmQ6JTAyZCJ9LAorICAgICAgICB7Im1pbGxpc2Vjb25kcyIsICIlMDJkOiUwMmQ6JTAyZC4lMDNkIn0sCisgICAgICAgIHsibWljcm9zZWNvbmRzIiwgIiUwMmQ6JTAyZDolMDJkLiUwNmQifSwKKyAgICB9OworICAgIHNpemVfdCBnaXZlbl9zcGVjOwogCi0gICAgaWYgKHVzKQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTAyZDolMDJkOiUwMmQuJTA2ZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JTlVURShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTAyZDolMDJkOiUwMmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9IT1VSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSU5VVEUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORChzZWxmKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8czppc29mb3JtYXQiLCBrZXl3b3JkcywgJnRpbWVzcGVjKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodGltZXNwZWMgPT0gTlVMTCB8fCBzdHJjbXAodGltZXNwZWMsICJhdXRvIikgPT0gMCkgeworICAgICAgICBpZiAodXMgPT0gMCkgeworICAgICAgICAgICAgLyogc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBtaWNyb3NlY29uZHMgKi8KKyAgICAgICAgICAgIGdpdmVuX3NwZWMgPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGdpdmVuX3NwZWMgPSAwOyBnaXZlbl9zcGVjIDwgUHlfQVJSQVlfTEVOR1RIKHNwZWNzKTsgZ2l2ZW5fc3BlYysrKSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKHRpbWVzcGVjLCBzcGVjc1tnaXZlbl9zcGVjXVswXSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChnaXZlbl9zcGVjID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogbWlsbGlzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgIHVzID0gdXMgLyAxMDAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChnaXZlbl9zcGVjID09IFB5X0FSUkFZX0xFTkdUSChzcGVjcykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJVbmtub3duIHRpbWVzcGVjIHZhbHVlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoc3BlY3NbZ2l2ZW5fc3BlY11bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIoc2VsZiksIFRJTUVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfU0VDT05EKHNlbGYpLCB1cyk7CisgICAgfQogCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8ICFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zNzUwLDkgKzM4NDIsMjMgQEAKIHRpbWVfaGFzaChQeURhdGVUaW1lX1RpbWUgKnNlbGYpCiB7CiAgICAgaWYgKHNlbGYtPmhhc2hjb2RlID09IC0xKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpvZmZzZXQ7Ci0KLSAgICAgICAgb2Zmc2V0ID0gdGltZV91dGNvZmZzZXQoKFB5T2JqZWN0ICopc2VsZiwgTlVMTCk7CisgICAgICAgIFB5T2JqZWN0ICpvZmZzZXQsICpzZWxmMDsKKyAgICAgICAgaWYgKERBVEVfR0VUX0ZPTEQoc2VsZikpIHsKKyAgICAgICAgICAgIHNlbGYwID0gbmV3X3RpbWVfZXgyKERBVEVfR0VUX0hPVVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeV9UWVBFKHNlbGYpKTsKKyAgICAgICAgICAgIGlmIChzZWxmMCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYwID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmMCk7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID0gdGltZV91dGNvZmZzZXQoc2VsZjAsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoc2VsZjApOwogCiAgICAgICAgIGlmIChvZmZzZXQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTM3OTgsMTUgKzM5MDQsMjQgQEAKICAgICBpbnQgc3MgPSBUSU1FX0dFVF9TRUNPTkQoc2VsZik7CiAgICAgaW50IHVzID0gVElNRV9HRVRfTUlDUk9TRUNPTkQoc2VsZik7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IEhBU1RaSU5GTyhzZWxmKSA/IHNlbGYtPnR6aW5mbyA6IFB5X05vbmU7CisgICAgaW50IGZvbGQgPSBUSU1FX0dFVF9GT0xEKHNlbGYpOwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifGlpaWlPOnJlcGxhY2UiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpTyRpOnJlcGxhY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lX2t3cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhoLCAmbW0sICZzcywgJnVzLCAmdHppbmZvKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhoLCAmbW0sICZzcywgJnVzLCAmdHppbmZvLCAmZm9sZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiaWlpaU8iLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2xvbmUgPSB0aW1lX25ldyhQeV9UWVBFKHNlbGYpLCB0dXBsZSwgTlVMTCk7CisgICAgaWYgKGNsb25lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGZvbGQgIT0gMCAmJiBmb2xkICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgVElNRV9TRVRfRk9MRChjbG9uZSwgZm9sZCk7CisgICAgfQogICAgIFB5X0RFQ1JFRih0dXBsZSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQpAQCAtMzgxOSw3ICszOTM0LDcgQEAKICAqIF9fZ2V0c3RhdGVfXyBpc24ndCBleHBvc2VkLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9nZXRzdGF0ZShQeURhdGVUaW1lX1RpbWUgKnNlbGYpCit0aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfVGltZSAqc2VsZiwgaW50IHByb3RvKQogewogICAgIFB5T2JqZWN0ICpiYXNlc3RhdGU7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CkBAIC0zODI3LDYgKzM5NDIsOSBAQAogICAgIGJhc2VzdGF0ZSA9ICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopc2VsZi0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RGF0ZVRpbWVfVElNRV9EQVRBU0laRSk7CiAgICAgaWYgKGJhc2VzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChwcm90byA+IDMgJiYgVElNRV9HRVRfRk9MRChzZWxmKSkKKyAgICAgICAgICAgIC8qIFNldCB0aGUgZmlyc3QgYml0IG9mIHRoZSBmaXJzdCBieXRlICovCisgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhiYXNlc3RhdGUpWzBdIHw9ICgxIDw8IDcpOwogICAgICAgICBpZiAoISBIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMSwgYmFzZXN0YXRlKTsKICAgICAgICAgZWxzZQpAQCAtMzgzNywxNiArMzk1NSwyMSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdGltZV9yZWR1Y2UoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJnKQordGltZV9yZWR1Y2UoUHlEYXRlVGltZV9UaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIHRpbWVfZ2V0c3RhdGUoc2VsZikpOworICAgIGludCBwcm90byA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIHRpbWVfZ2V0c3RhdGUoc2VsZiwgcHJvdG8pKTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIHRpbWVfbWV0aG9kc1tdID0gewogCi0gICAgeyJpc29mb3JtYXQiLCAgIChQeUNGdW5jdGlvbil0aW1lX2lzb2Zvcm1hdCwgICAgICAgIE1FVEhfTk9BUkdTLAotICAgICBQeURvY19TVFIoIlJldHVybiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCBISDpNTTpTU1subW1tbW1tXSIKLSAgICAgICAgICAgICAgICJbK0hIOk1NXS4iKX0sCisgICAgeyJpc29mb3JtYXQiLCAgIChQeUNGdW5jdGlvbil0aW1lX2lzb2Zvcm1hdCwgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigiUmV0dXJuIHN0cmluZyBpbiBJU08gODYwMSBmb3JtYXQsIFtISFs6TU1bOlNTWy5tbW1bdXV1XV1dXV0iCisgICAgICAgICAgICAgICAiWytISDpNTV0uXG5cbiIKKyAgICAgICAgICAgICAgICJ0aW1lc3BlYyBzcGVjaWZpZXMgd2hhdCBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUuXG4iKX0sCiAKICAgICB7InN0cmZ0aW1lIiwgICAgICAgIChQeUNGdW5jdGlvbil0aW1lX3N0cmZ0aW1lLCAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJmb3JtYXQgLT4gc3RyZnRpbWUoKSBzdHlsZSBzdHJpbmcuIil9LApAQCAtMzg2NiwxMyArMzk4OSwxMyBAQAogICAgIHsicmVwbGFjZSIsICAgICAoUHlDRnVuY3Rpb24pdGltZV9yZXBsYWNlLCAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAogICAgICBQeURvY19TVFIoIlJldHVybiB0aW1lIHdpdGggbmV3IHNwZWNpZmllZCBmaWVsZHMuIil9LAogCi0gICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXRpbWVfcmVkdWNlLCAgICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfXygpIC0+IChjbHMsIHN0YXRlKSIpfSwKKyAgICB7Il9fcmVkdWNlX2V4X18iLCAoUHlDRnVuY3Rpb24pdGltZV9yZWR1Y2UsICAgICAgICBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX19yZWR1Y2VfZXhfXyhwcm90bykgLT4gKGNscywgc3RhdGUpIil9LAogCiAgICAge05VTEwsICAgICAgTlVMTH0KIH07CiAKLXN0YXRpYyBjaGFyIHRpbWVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgdGltZV9kb2NbXSA9CiBQeURvY19TVFIoInRpbWUoW2hvdXJbLCBtaW51dGVbLCBzZWNvbmRbLCBtaWNyb3NlY29uZFssIHR6aW5mb11dXV1dKSAtLT4gYSB0aW1lIG9iamVjdFxuXAogXG5cCiBBbGwgYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhbiBpbnN0YW5jZSBvZlxuXApAQCAtMzk2MCwxMiArNDA4MywxOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV9mb2xkKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIHZvaWQgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKERBVEVfR0VUX0ZPTEQoc2VsZikpOworfQorCiBzdGF0aWMgUHlHZXRTZXREZWYgZGF0ZXRpbWVfZ2V0c2V0W10gPSB7CiAgICAgeyJob3VyIiwgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfaG91cn0sCiAgICAgeyJtaW51dGUiLCAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfbWludXRlfSwKICAgICB7InNlY29uZCIsICAgICAgKGdldHRlcilkYXRldGltZV9zZWNvbmR9LAogICAgIHsibWljcm9zZWNvbmQiLCAoZ2V0dGVyKWRhdGV0aW1lX21pY3Jvc2Vjb25kfSwKLSAgICB7InR6aW5mbyIsICAgICAgICAgIChnZXR0ZXIpZGF0ZXRpbWVfdHppbmZvfSwKKyAgICB7InR6aW5mbyIsICAgICAgKGdldHRlcilkYXRldGltZV90emluZm99LAorICAgIHsiZm9sZCIsICAgICAgICAoZ2V0dGVyKWRhdGV0aW1lX2ZvbGR9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzk3NSw3ICs0MTA1LDcgQEAKIAogc3RhdGljIGNoYXIgKmRhdGV0aW1lX2t3c1tdID0gewogICAgICJ5ZWFyIiwgIm1vbnRoIiwgImRheSIsICJob3VyIiwgIm1pbnV0ZSIsICJzZWNvbmQiLAotICAgICJtaWNyb3NlY29uZCIsICJ0emluZm8iLCBOVUxMCisgICAgIm1pY3Jvc2Vjb25kIiwgInR6aW5mbyIsICJmb2xkIiwgTlVMTAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTM5OTAsNiArNDEyMCw3IEBACiAgICAgaW50IG1pbnV0ZSA9IDA7CiAgICAgaW50IHNlY29uZCA9IDA7CiAgICAgaW50IHVzZWNvbmQgPSAwOworICAgIGludCBmb2xkID0gMDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKIAogICAgIC8qIENoZWNrIGZvciBpbnZvY2F0aW9uIGZyb20gcGlja2xlIHdpdGggX19nZXRzdGF0ZV9fIHN0YXRlICovCkBAIC0zOTk3LDcgKzQxMjgsNyBAQAogICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIDw9IDIgJiYKICAgICAgICAgUHlCeXRlc19DaGVjayhzdGF0ZSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCkpICYmCiAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc3RhdGUpID09IF9QeURhdGVUaW1lX0RBVEVUSU1FX0RBVEFTSVpFICYmCi0gICAgICAgIE1PTlRIX0lTX1NBTkUoUHlCeXRlc19BU19TVFJJTkcoc3RhdGUpWzJdKSkKKyAgICAgICAgTU9OVEhfSVNfU0FORShQeUJ5dGVzX0FTX1NUUklORyhzdGF0ZSlbMl0gJiAweDdGKSkKICAgICB7CiAgICAgICAgIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKm1lOwogICAgICAgICBjaGFyIGF3YXJlOwpAQCAtNDAyMiwyOCArNDE1Myw3MyBAQAogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0emluZm8pOwogICAgICAgICAgICAgICAgIG1lLT50emluZm8gPSB0emluZm87CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocGRhdGFbMl0gJiAoMSA8PCA3KSkgeworICAgICAgICAgICAgICAgIG1lLT5kYXRhWzJdIC09IDEyODsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtZS0+Zm9sZCA9IDA7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1lOwogICAgIH0KIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJpaWl8aWlpaU8iLCBkYXRldGltZV9rd3MsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgImlpaXxpaWlpTyRpIiwgZGF0ZXRpbWVfa3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnllYXIsICZtb250aCwgJmRheSwgJmhvdXIsICZtaW51dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2Vjb25kLCAmdXNlY29uZCwgJnR6aW5mbykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWNvbmQsICZ1c2Vjb25kLCAmdHppbmZvLCAmZm9sZCkpIHsKICAgICAgICAgaWYgKGNoZWNrX2RhdGVfYXJncyh5ZWFyLCBtb250aCwgZGF5KSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKGNoZWNrX3RpbWVfYXJncyhob3VyLCBtaW51dGUsIHNlY29uZCwgdXNlY29uZCkgPCAwKQorICAgICAgICBpZiAoY2hlY2tfdGltZV9hcmdzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLCBmb2xkKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzZWxmID0gbmV3X2RhdGV0aW1lX2V4KHllYXIsIG1vbnRoLCBkYXksCisgICAgICAgIHNlbGYgPSBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCB1c2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8sIHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8sIGZvbGQsIHR5cGUpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KIAotLyogVE1fRlVOQyBpcyB0aGUgc2hhcmVkIHR5cGUgb2YgbG9jYWx0aW1lKCkgYW5kIGdtdGltZSgpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgdG0gKigqVE1fRlVOQykoY29uc3QgdGltZV90ICp0aW1lcik7CisvKiBUTV9GVU5DIGlzIHRoZSBzaGFyZWQgdHlwZSBvZiBfUHlUaW1lX2xvY2FsdGltZSgpIGFuZAorICogX1B5VGltZV9nbXRpbWUoKS4gKi8KK3R5cGVkZWYgaW50ICgqVE1fRlVOQykodGltZV90IHRpbWVyLCBzdHJ1Y3QgdG0qKTsKKworLyogQXMgb2YgdmVyc2lvbiAyMDE1ZiBtYXggZm9sZCBpbiBJQU5BIGRhdGFiYXNlIGlzCisgKiAyMyBob3VycyBhdCAxOTY5LTA5LTMwIDEzOjAwOjAwIGluIEt3YWphbGVpbi4gKi8KK3N0YXRpYyBsb25nIGxvbmcgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMDsKKy8qIE5COiBkYXRlKDE5NzAsMSwxKS50b29yZGluYWwoKSA9PSA3MTkxNjMgKi8KK3N0YXRpYyBsb25nIGxvbmcgZXBvY2ggPSA3MTkxNjNMTCAqIDI0ICogNjAgKiA2MDsKKworc3RhdGljIGxvbmcgbG9uZwordXRjX3RvX3NlY29uZHMoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kKQoreworICAgIGxvbmcgbG9uZyBvcmRpbmFsID0geW1kX3RvX29yZCh5ZWFyLCBtb250aCwgZGF5KTsKKyAgICByZXR1cm4gKChvcmRpbmFsICogMjQgKyBob3VyKSAqIDYwICsgbWludXRlKSAqIDYwICsgc2Vjb25kOworfQorCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbChsb25nIGxvbmcgdSkKK3sKKyAgICBzdHJ1Y3QgdG0gbG9jYWxfdGltZTsKKyAgICB0aW1lX3QgdDsKKyAgICB1IC09IGVwb2NoOworICAgIHQgPSB1OworICAgIGlmICh0ICE9IHUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiBYWFg6IGFkZCBib3VuZHMgY2hlY2tpbmcgKi8KKyAgICBpZiAoX1B5VGltZV9sb2NhbHRpbWUodCwgJmxvY2FsX3RpbWUpICE9IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gdXRjX3RvX3NlY29uZHMobG9jYWxfdGltZS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9tb24gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lLnRtX21kYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZS50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWUudG1fc2VjKTsKK30KIAogLyogSW50ZXJuYWwgaGVscGVyLgogICogQnVpbGQgZGF0ZXRpbWUgZnJvbSBhIHRpbWVfdCBhbmQgYSBkaXN0aW5jdCBjb3VudCBvZiBtaWNyb3NlY29uZHMuCkBAIC00MDUzLDcyICs0MjI5LDQ2IEBACiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIHRpbWVfdCB0aW1ldCwgaW50IHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnR6aW5mbykKIHsKLSAgICBzdHJ1Y3QgdG0gKnRtOworICAgIHN0cnVjdCB0bSB0bTsKKyAgICBpbnQgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIGZvbGQgPSAwOwogCi0gICAgdG0gPSBmKCZ0aW1ldCk7Ci0gICAgaWYgKHRtID09IE5VTEwpIHsKLSNpZmRlZiBFSU5WQUwKLSAgICAgICAgaWYgKGVycm5vID09IDApCi0gICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKLSNlbmRpZgotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgIH0KKyAgICBpZiAoZih0aW1ldCwgJnRtKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIHllYXIgPSB0bS50bV95ZWFyICsgMTkwMDsKKyAgICBtb250aCA9IHRtLnRtX21vbiArIDE7CisgICAgZGF5ID0gdG0udG1fbWRheTsKKyAgICBob3VyID0gdG0udG1faG91cjsKKyAgICBtaW51dGUgPSB0bS50bV9taW47CiAgICAgLyogVGhlIHBsYXRmb3JtIGxvY2FsdGltZS9nbXRpbWUgbWF5IGluc2VydCBsZWFwIHNlY29uZHMsCi0gICAgICogaW5kaWNhdGVkIGJ5IHRtLT50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKKyAgICAgKiBpbmRpY2F0ZWQgYnkgdG0udG1fc2VjID4gNTkuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZW0sCiAgICAgICogZXhjZXB0IHRvIHRoZSBleHRlbnQgdGhhdCBwYXNzaW5nIHRoZW0gb24gdG8gdGhlIGRhdGV0aW1lCiAgICAgICogY29uc3RydWN0b3Igd291bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgYSByZWFzb24gdGhhdAogICAgICAqIG1hZGUgbm8gc2Vuc2UgdG8gdGhlIHVzZXIuCiAgICAgICovCi0gICAgaWYgKHRtLT50bV9zZWMgPiA1OSkKLSAgICAgICAgdG0tPnRtX3NlYyA9IDU5OwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9ob3VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9zZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7Ci19CisgICAgc2Vjb25kID0gUHlfTUlOKDU5LCB0bS50bV9zZWMpOwogCi1zdGF0aWMgdGltZV90Ci1fUHlUaW1lX0RvdWJsZVRvVGltZXQoZG91YmxlIHgpCi17Ci0gICAgdGltZV90IHJlc3VsdDsKLSAgICBkb3VibGUgZGlmZjsKKyAgICBpZiAodHppbmZvID09IFB5X05vbmUgJiYgZiA9PSBfUHlUaW1lX2xvY2FsdGltZSkgeworICAgICAgICBsb25nIGxvbmcgcHJvYmVfc2Vjb25kcywgcmVzdWx0X3NlY29uZHMsIHRyYW5zaXRpb247CiAKLSAgICByZXN1bHQgPSAodGltZV90KXg7Ci0gICAgLyogSG93IG11Y2ggaW5mbyBkaWQgd2UgbG9zZT8gIHRpbWVfdCBtYXkgYmUgYW4gaW50ZWdyYWwgb3IKLSAgICAgKiBmbG9hdGluZyB0eXBlLCBhbmQgd2UgZG9uJ3Qga25vdyB3aGljaC4gIElmIGl0J3MgaW50ZWdyYWwsCi0gICAgICogd2UgZG9uJ3Qga25vdyB3aGV0aGVyIEMgdHJ1bmNhdGVzLCByb3VuZHMsIHJldHVybnMgdGhlIGZsb29yLAotICAgICAqIGV0Yy4gIElmIHdlIGxvc3QgYSBzZWNvbmQgb3IgbW9yZSwgdGhlIEMgcm91bmRpbmcgaXMKLSAgICAgKiB1bnJlYXNvbmFibGUsIG9yIHRoZSBpbnB1dCBqdXN0IGRvZXNuJ3QgZml0IGluIGEgdGltZV90OwotICAgICAqIGNhbGwgaXQgYW4gZXJyb3IgcmVnYXJkbGVzcy4gIE5vdGUgdGhhdCB0aGUgb3JpZ2luYWwgY2FzdCB0bwotICAgICAqIHRpbWVfdCBjYW4gY2F1c2UgYSBDIGVycm9yIHRvbywgYnV0IG5vdGhpbmcgd2UgY2FuIGRvIHRvCi0gICAgICogd29ybSBhcm91bmQgdGhhdC4KLSAgICAgKi8KLSAgICBkaWZmID0geCAtIChkb3VibGUpcmVzdWx0OwotICAgIGlmIChkaWZmIDw9IC0xLjAgfHwgZGlmZiA+PSAxLjApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgcGxhdGZvcm0gdGltZV90Iik7Ci0gICAgICAgIHJlc3VsdCA9ICh0aW1lX3QpLTE7CisgICAgICAgIHJlc3VsdF9zZWNvbmRzID0gdXRjX3RvX3NlY29uZHMoeWVhciwgbW9udGgsIGRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAgICAgIC8qIFByb2JlIG1heF9mb2xkX3NlY29uZHMgdG8gZGV0ZWN0IGEgZm9sZC4gKi8KKyAgICAgICAgcHJvYmVfc2Vjb25kcyA9IGxvY2FsKGVwb2NoICsgdGltZXQgLSBtYXhfZm9sZF9zZWNvbmRzKTsKKyAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgdHJhbnNpdGlvbiA9IHJlc3VsdF9zZWNvbmRzIC0gcHJvYmVfc2Vjb25kcyAtIG1heF9mb2xkX3NlY29uZHM7CisgICAgICAgIGlmICh0cmFuc2l0aW9uIDwgMCkgeworICAgICAgICAgICAgcHJvYmVfc2Vjb25kcyA9IGxvY2FsKGVwb2NoICsgdGltZXQgKyB0cmFuc2l0aW9uKTsKKyAgICAgICAgICAgIGlmIChwcm9iZV9zZWNvbmRzID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgaWYgKHByb2JlX3NlY29uZHMgPT0gcmVzdWx0X3NlY29uZHMpCisgICAgICAgICAgICAgICAgZm9sZCA9IDE7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogUm91bmQgYSBkb3VibGUgdG8gdGhlIG5lYXJlc3QgbG9uZy4gIHx4fCBtdXN0IGJlIHNtYWxsIGVub3VnaCB0byBmaXQKLSAqIGluIGEgQyBsb25nOyB0aGlzIGlzIG5vdCBjaGVja2VkLgotICovCi1zdGF0aWMgZG91YmxlCi1fUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZG91YmxlIHgpCi17Ci0gICAgZG91YmxlIHJvdW5kZWQgPSByb3VuZCh4KTsKLSAgICBpZiAoZmFicyh4LXJvdW5kZWQpID09IDAuNSkKLSAgICAgICAgLyogaGFsZndheSBjYXNlOiByb3VuZCB0byBldmVuICovCi0gICAgICAgIHJvdW5kZWQgPSAyLjAqcm91bmQoeC8yLjApOwotICAgIHJldHVybiByb3VuZGVkOworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlLCBzZWNvbmQsIHVzLCB0emluZm8sIGZvbGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKWNscyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQxMjksMzIgKzQyNzksMTcgQEAKICAqIHRvIGdldCB0aGF0IG11Y2ggcHJlY2lzaW9uIChlLmcuLCBDIHRpbWUoKSBpc24ndCBnb29kIGVub3VnaCkuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIGRvdWJsZSB0aW1lc3RhbXAsCitkYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIFB5T2JqZWN0ICp0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewogICAgIHRpbWVfdCB0aW1ldDsKLSAgICBkb3VibGUgZnJhY3Rpb247Ci0gICAgaW50IHVzOworICAgIGxvbmcgdXM7CiAKLSAgICB0aW1ldCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh0aW1lc3RhbXApOwotICAgIGlmICh0aW1ldCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpbWV0LCAmdXMsIF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZnJhY3Rpb24gPSB0aW1lc3RhbXAgLSAoZG91YmxlKXRpbWV0OwotICAgIHVzID0gKGludClfUHlUaW1lX1JvdW5kSGFsZkV2ZW4oZnJhY3Rpb24gKiAxZTYpOwotICAgIGlmICh1cyA8IDApIHsKLSAgICAgICAgLyogVHJ1bmNhdGlvbiB0b3dhcmRzIHplcm8gaXMgbm90IHdoYXQgd2Ugd2FudGVkCi0gICAgICAgICAgIGZvciBuZWdhdGl2ZSBudW1iZXJzIChQeXRob24ncyBtb2Qgc2VtYW50aWNzKSAqLwotICAgICAgICB0aW1ldCAtPSAxOwotICAgICAgICB1cyArPSAxMDAwMDAwOwotICAgIH0KLSAgICAvKiBJZiB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIG9uZSBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYQotICAgICAqIGZ1bGwgc2Vjb25kLCByb3VuZCB1cC4gT3RoZXJ3aXNlLCBWYWx1ZUVycm9ycyBhcmUgcmFpc2VkCi0gICAgICogZm9yIHNvbWUgZmxvYXRzLiAqLwotICAgIGlmICh1cyA9PSAxMDAwMDAwKSB7Ci0gICAgICAgIHRpbWV0ICs9IDE7Ci0gICAgICAgIHVzID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIHVzLCB0emluZm8pOworCisgICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIChpbnQpdXMsIHR6aW5mbyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQyMDEsMTQgKzQzMzYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzZWxmID0gZGF0ZXRpbWVfYmVzdF9wb3NzaWJsZSgoUHlPYmplY3QgKil0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6ID09IFB5X05vbmUgPyBsb2NhbHRpbWUgOiBnbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHogPT0gUHlfTm9uZSA/IF9QeVRpbWVfbG9jYWx0aW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX2dtdGltZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eik7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCAmJiB0eiAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCi0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLQotICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0eiwgJlB5SWRfZnJvbXV0YywgIk8iLCBzZWxmKTsKLSAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0eiwgJlB5SWRfZnJvbXV0YywgIk4iLCBzZWxmKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC00MjE5LDcgKzQzNTIsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y25vdyhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqZHVtbXkpCiB7Ci0gICAgcmV0dXJuIGRhdGV0aW1lX2Jlc3RfcG9zc2libGUoY2xzLCBnbXRpbWUsIFB5X05vbmUpOworICAgIHJldHVybiBkYXRldGltZV9iZXN0X3Bvc3NpYmxlKGNscywgX1B5VGltZV9nbXRpbWUsIFB5X05vbmUpOwogfQogCiAvKiBSZXR1cm4gbmV3IGxvY2FsIGRhdGV0aW1lIGZyb20gdGltZXN0YW1wIChQeXRob24gdGltZXN0YW1wIC0tIGEgZG91YmxlKS4gKi8KQEAgLTQyMjcsMjYgKzQzNjAsMjQgQEAKIGRhdGV0aW1lX2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBQeU9iamVjdCAqc2VsZjsKLSAgICBkb3VibGUgdGltZXN0YW1wOworICAgIFB5T2JqZWN0ICp0aW1lc3RhbXA7CiAgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InRpbWVzdGFtcCIsICJ0eiIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiZHxPOmZyb210aW1lc3RhbXAiLAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk98Tzpmcm9tdGltZXN0YW1wIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMsICZ0aW1lc3RhbXAsICZ0emluZm8pKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNlbGYgPSBkYXRldGltZV9mcm9tX3RpbWVzdGFtcChjbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyA9PSBQeV9Ob25lID8gbG9jYWx0aW1lIDogZ210aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8gPT0gUHlfTm9uZSA/IF9QeVRpbWVfbG9jYWx0aW1lIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9nbXRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMICYmIHR6aW5mbyAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIENvbnZlcnQgVVRDIHRvIHR6aW5mbydzIHpvbmUuICovCi0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gc2VsZjsKLQotICAgICAgICBzZWxmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX2Zyb211dGMsICJPIiwgc2VsZik7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgc2VsZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTiIsIHNlbGYpOwogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTQyNTUsMTEgKzQzODYsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV91dGNmcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKLSAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBnbXRpbWUsIHRpbWVzdGFtcCwKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp1dGNmcm9tdGltZXN0YW1wIiwgJnRpbWVzdGFtcCkpCisgICAgICAgIHJlc3VsdCA9IGRhdGV0aW1lX2Zyb21fdGltZXN0YW1wKGNscywgX1B5VGltZV9nbXRpbWUsIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQyODgsMjcgKzQ0MTksMzIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9jb21iaW5lKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImRhdGUiLCAidGltZSIsIE5VTEx9OworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJkYXRlIiwgInRpbWUiLCAidHppbmZvIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKmRhdGU7CiAgICAgUHlPYmplY3QgKnRpbWU7CisgICAgUHlPYmplY3QgKnR6aW5mbyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyFPITpjb21iaW5lIiwga2V5d29yZHMsCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hTyF8Tzpjb21iaW5lIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9EYXRlVHlwZSwgJmRhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9UaW1lVHlwZSwgJnRpbWUpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwotCi0gICAgICAgIGlmIChIQVNUWklORk8odGltZSkpCi0gICAgICAgICAgICB0emluZm8gPSAoKFB5RGF0ZVRpbWVfVGltZSAqKXRpbWUpLT50emluZm87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEYXRlVGltZV9UaW1lVHlwZSwgJnRpbWUsICZ0emluZm8pKSB7CisgICAgICAgIGlmICh0emluZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKEhBU1RaSU5GTyh0aW1lKSkKKyAgICAgICAgICAgICAgICB0emluZm8gPSAoKFB5RGF0ZVRpbWVfVGltZSAqKXRpbWUpLT50emluZm87CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdHppbmZvID0gUHlfTm9uZTsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9ZRUFSKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChkYXRlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGRhdGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX0hPVVIodGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfTUlOVVRFKHRpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORCh0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSU1FX0dFVF9NSUNST1NFQ09ORCh0aW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0emluZm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoZGF0ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfREFZKGRhdGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElNRV9HRVRfSE9VUih0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JTlVURSh0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX1NFQ09ORCh0aW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKHRpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIERBVEVfU0VUX0ZPTEQocmVzdWx0LCBUSU1FX0dFVF9GT0xEKHRpbWUpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQzNzYsNyArNDUxMiw3IEBACiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbmV3X2RhdGV0aW1lKHllYXIsIG1vbnRoLCBkYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhkYXRlKSA/IGRhdGUtPnR6aW5mbyA6IFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU1RaSU5GTyhkYXRlKSA/IGRhdGUtPnR6aW5mbyA6IFB5X05vbmUsIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDQ2OSw5ICs0NjA1LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICAgICAgaWYgKG9mZmRpZmYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gcmVzdWx0OwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlbHRhX3N1YnRyYWN0KHJlc3VsdCwgb2ZmZGlmZik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIGRlbHRhX3N1YnRyYWN0KHJlc3VsdCwgb2ZmZGlmZikpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvZmZkaWZmKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDUyMSw2ICs0NjU1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICBHRVRfWUVBUihzZWxmKSwgR0VUX01PTlRIKHNlbGYpLCBHRVRfREFZKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSk7CiAgICAgfQorICAgIGlmIChiYXNlcmVwciAhPSBOVUxMICYmIERBVEVfR0VUX0ZPTEQoc2VsZikgIT0gMCkKKyAgICAgICAgYmFzZXJlcHIgPSBhcHBlbmRfa2V5d29yZF9mb2xkKGJhc2VyZXByLCBEQVRFX0dFVF9GT0xEKHNlbGYpKTsKICAgICBpZiAoYmFzZXJlcHIgPT0gTlVMTCB8fCAhIEhBU1RaSU5GTyhzZWxmKSkKICAgICAgICAgcmV0dXJuIGJhc2VyZXByOwogICAgIHJldHVybiBhcHBlbmRfa2V5d29yZF90emluZm8oYmFzZXJlcHIsIHNlbGYtPnR6aW5mbyk7CkBAIC00NTM2LDI1ICs0NjcyLDU1IEBACiBkYXRldGltZV9pc29mb3JtYXQoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKICAgICBpbnQgc2VwID0gJ1QnOwotICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJzZXAiLCBOVUxMfTsKKyAgICBjaGFyICp0aW1lc3BlYyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNlcCIsICJ0aW1lc3BlYyIsIE5VTEx9OwogICAgIGNoYXIgYnVmZmVyWzEwMF07Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgdXMgPSBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKTsKKyAgICBzdGF0aWMgY2hhciAqc3BlY3NbXVsyXSA9IHsKKyAgICAgICAgeyJob3VycyIsICIlMDRkLSUwMmQtJTAyZCVjJTAyZCJ9LAorICAgICAgICB7Im1pbnV0ZXMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZCJ9LAorICAgICAgICB7InNlY29uZHMiLCAiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkIn0sCisgICAgICAgIHsibWlsbGlzZWNvbmRzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDNkIn0sCisgICAgICAgIHsibWljcm9zZWNvbmRzIiwgIiUwNGQtJTAyZC0lMDJkJWMlMDJkOiUwMmQ6JTAyZC4lMDZkIn0sCisgICAgfTsKKyAgICBzaXplX3QgZ2l2ZW5fc3BlYzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifEM6aXNvZm9ybWF0Iiwga2V5d29yZHMsICZzZXApKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifENzOmlzb2Zvcm1hdCIsIGtleXdvcmRzLCAmc2VwLCAmdGltZXNwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAodXMpCi0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlMDRkLSUwMmQtJTAyZCVjJTAyZDolMDJkOiUwMmQuJTA2ZCIsCisKKyAgICBpZiAodGltZXNwZWMgPT0gTlVMTCB8fCBzdHJjbXAodGltZXNwZWMsICJhdXRvIikgPT0gMCkgeworICAgICAgICBpZiAodXMgPT0gMCkgeworICAgICAgICAgICAgLyogc2Vjb25kcyAqLworICAgICAgICAgICAgZ2l2ZW5fc3BlYyA9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBtaWNyb3NlY29uZHMgKi8KKyAgICAgICAgICAgIGdpdmVuX3NwZWMgPSA0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3IgKGdpdmVuX3NwZWMgPSAwOyBnaXZlbl9zcGVjIDwgUHlfQVJSQVlfTEVOR1RIKHNwZWNzKTsgZ2l2ZW5fc3BlYysrKSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKHRpbWVzcGVjLCBzcGVjc1tnaXZlbl9zcGVjXVswXSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChnaXZlbl9zcGVjID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgdXMgPSB1cyAvIDEwMDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGdpdmVuX3NwZWMgPT0gUHlfQVJSQVlfTEVOR1RIKHNwZWNzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIlVua25vd24gdGltZXNwZWMgdmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChzcGVjc1tnaXZlbl9zcGVjXVsxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoc2VsZiksIEdFVF9NT05USChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwgKGludClzZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLCB1cyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJTA0ZC0lMDJkLSUwMmQlYyUwMmQ6JTAyZDolMDJkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX1lFQVIoc2VsZiksIEdFVF9NT05USChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwgKGludClzZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoc2VsZiksIERBVEVfR0VUX01JTlVURShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpKTsKKyAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCAhSEFTVFpJTkZPKHNlbGYpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDU4MSw2ICs0NzQ3LDcwIEBACiAvKiBNaXNjZWxsYW5lb3VzIG1ldGhvZHMuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCitmbGlwX2ZvbGQoUHlPYmplY3QgKmR0KQoreworICAgIHJldHVybiBuZXdfZGF0ZXRpbWVfZXgyKEdFVF9ZRUFSKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9EQVkoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0hPVVIoZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKGR0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKGR0KSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKWR0KS0+dHppbmZvIDogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAhREFURV9HRVRfRk9MRChkdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShkdCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2ZsaXBfZm9sZF9vZmZzZXQoUHlPYmplY3QgKmR0KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICpmbGlwX2R0OworCisgICAgZmxpcF9kdCA9IGZsaXBfZm9sZChkdCk7CisgICAgaWYgKGZsaXBfZHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KGZsaXBfZHQsIE5VTEwpOworICAgIFB5X0RFQ1JFRihmbGlwX2R0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBQRVAgNDk1IGV4Y2VwdGlvbjogV2hlbmV2ZXIgb25lIG9yIGJvdGggb2YgdGhlIG9wZXJhbmRzIGluCisgKiBpbnRlci16b25lIGNvbXBhcmlzb24gaXMgc3VjaCB0aGF0IGl0cyB1dGNvZmZzZXQoKSBkZXBlbmRzCisgKiBvbiB0aGUgdmFsdWUgb2YgaXRzIGZvbGQgZm9sZCBhdHRyaWJ1dGUsIHRoZSByZXN1bHQgaXMgRmFsc2UuCisgKgorICogUmV0dXJuIDEgaWYgZXhjZXB0aW9uIGFwcGxpZXMsIDAgaWYgbm90LCAgYW5kIC0xIG9uIGVycm9yLgorICovCitzdGF0aWMgaW50CitwZXA0OTVfZXFfZXhjZXB0aW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvZmZzZXRfc2VsZiwgUHlPYmplY3QgKm9mZnNldF9vdGhlcikKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBQeU9iamVjdCAqZmxpcF9vZmZzZXQ7CisKKyAgICBmbGlwX29mZnNldCA9IGdldF9mbGlwX2ZvbGRfb2Zmc2V0KHNlbGYpOworICAgIGlmIChmbGlwX29mZnNldCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGZsaXBfb2Zmc2V0ICE9IG9mZnNldF9zZWxmICYmCisgICAgICAgIGRlbHRhX2NtcChmbGlwX29mZnNldCwgb2Zmc2V0X3NlbGYpKQorICAgIHsKKyAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKyAgICBQeV9ERUNSRUYoZmxpcF9vZmZzZXQpOworCisgICAgZmxpcF9vZmZzZXQgPSBnZXRfZmxpcF9mb2xkX29mZnNldChvdGhlcik7CisgICAgaWYgKGZsaXBfb2Zmc2V0ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZmxpcF9vZmZzZXQgIT0gb2Zmc2V0X290aGVyICYmCisgICAgICAgIGRlbHRhX2NtcChmbGlwX29mZnNldCwgb2Zmc2V0X290aGVyKSkKKyAgICAgICAgcmVzdWx0ID0gMTsKKyBkb25lOgorICAgIFB5X0RFQ1JFRihmbGlwX29mZnNldCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKQEAgLTQ2MjcsNiArNDg1NywxMyBAQAogICAgICAgICBkaWZmID0gbWVtY21wKCgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXNlbGYpLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKW90aGVyKS0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9EQVRFVElNRV9EQVRBU0laRSk7CisgICAgICAgIGlmICgob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpICYmIGRpZmYgPT0gMCkgeworICAgICAgICAgICAgaW50IGV4ID0gcGVwNDk1X2VxX2V4Y2VwdGlvbihzZWxmLCBvdGhlciwgb2Zmc2V0MSwgb2Zmc2V0Mik7CisgICAgICAgICAgICBpZiAoZXggPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgaWYgKGV4KQorICAgICAgICAgICAgICAgIGRpZmYgPSAxOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQogICAgIGVsc2UgaWYgKG9mZnNldDEgIT0gUHlfTm9uZSAmJiBvZmZzZXQyICE9IFB5X05vbmUpIHsKQEAgLTQ2NDIsNiArNDg3OSwxMyBAQAogICAgICAgICAgICAgZGlmZiA9IEdFVF9URF9TRUNPTkRTKGRlbHRhKSB8CiAgICAgICAgICAgICAgICAgICAgR0VUX1REX01JQ1JPU0VDT05EUyhkZWx0YSk7CiAgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgICAgIGlmICgob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpICYmIGRpZmYgPT0gMCkgeworICAgICAgICAgICAgaW50IGV4ID0gcGVwNDk1X2VxX2V4Y2VwdGlvbihzZWxmLCBvdGhlciwgb2Zmc2V0MSwgb2Zmc2V0Mik7CisgICAgICAgICAgICBpZiAoZXggPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgaWYgKGV4KQorICAgICAgICAgICAgICAgIGRpZmYgPSAxOworICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQogICAgIGVsc2UgaWYgKG9wID09IFB5X0VRKSB7CkBAIC00NjY3LDkgKzQ5MTEsMjYgQEAKIGRhdGV0aW1lX2hhc2goUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+aGFzaGNvZGUgPT0gLTEpIHsKLSAgICAgICAgUHlPYmplY3QgKm9mZnNldDsKLQotICAgICAgICBvZmZzZXQgPSBkYXRldGltZV91dGNvZmZzZXQoKFB5T2JqZWN0ICopc2VsZiwgTlVMTCk7CisgICAgICAgIFB5T2JqZWN0ICpvZmZzZXQsICpzZWxmMDsKKyAgICAgICAgaWYgKERBVEVfR0VUX0ZPTEQoc2VsZikpIHsKKyAgICAgICAgICAgIHNlbGYwID0gbmV3X2RhdGV0aW1lX2V4MihHRVRfWUVBUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRfTU9OVEgoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9IT1VSKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFTVFpJTkZPKHNlbGYpID8gc2VsZi0+dHppbmZvIDogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBQeV9UWVBFKHNlbGYpKTsKKyAgICAgICAgICAgIGlmIChzZWxmMCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHNlbGYwID0gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmMCk7CisgICAgICAgIH0KKyAgICAgICAgb2Zmc2V0ID0gZGF0ZXRpbWVfdXRjb2Zmc2V0KHNlbGYwLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYwKTsKIAogICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00NzIzLDc2ICs0OTg0LDgwIEBACiAgICAgaW50IHNzID0gREFURV9HRVRfU0VDT05EKHNlbGYpOwogICAgIGludCB1cyA9IERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBIQVNUWklORk8oc2VsZikgPyBzZWxmLT50emluZm8gOiBQeV9Ob25lOworICAgIGludCBmb2xkID0gREFURV9HRVRfRk9MRChzZWxmKTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxpaWlpaWlpTzpyZXBsYWNlIiwKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8aWlpaWlpaU8kaTpyZXBsYWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZXRpbWVfa3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeSwgJm0sICZkLCAmaGgsICZtbSwgJnNzLCAmdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0emluZm8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHppbmZvLCAmZm9sZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHR1cGxlID0gUHlfQnVpbGRWYWx1ZSgiaWlpaWlpaU8iLCB5LCBtLCBkLCBoaCwgbW0sIHNzLCB1cywgdHppbmZvKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY2xvbmUgPSBkYXRldGltZV9uZXcoUHlfVFlQRShzZWxmKSwgdHVwbGUsIE5VTEwpOworCisgICAgaWYgKGNsb25lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGZvbGQgIT0gMCAmJiBmb2xkICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkIG11c3QgYmUgZWl0aGVyIDAgb3IgMSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgREFURV9TRVRfRk9MRChjbG9uZSwgZm9sZCk7CisgICAgfQogICAgIFB5X0RFQ1JFRih0dXBsZSk7CiAgICAgcmV0dXJuIGNsb25lOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbG9jYWxfdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqdXRjX3RpbWUpCitsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lX3QgdGltZXN0YW1wKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIHN0cnVjdCB0bSAqdGltZXA7Ci0gICAgdGltZV90IHRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqZGVsdGE7Ci0gICAgUHlPYmplY3QgKm9uZV9zZWNvbmQ7Ci0gICAgUHlPYmplY3QgKnNlY29uZHM7CisgICAgc3RydWN0IHRtIGxvY2FsX3RpbWVfdG07CiAgICAgUHlPYmplY3QgKm5hbWVvID0gTlVMTDsKICAgICBjb25zdCBjaGFyICp6b25lID0gTlVMTDsKIAotICAgIGRlbHRhID0gbmV3X2RlbHRhKHltZF90b19vcmQoR0VUX1lFQVIodXRjX3RpbWUpLCBHRVRfTU9OVEgodXRjX3RpbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWSh1dGNfdGltZSkpIC0gNzE5MTYzLAotICAgICAgICAgICAgICAgICAgICAgIDYwICogKDYwICogREFURV9HRVRfSE9VUih1dGNfdGltZSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURSh1dGNfdGltZSkpICsKLSAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQodXRjX3RpbWUpLAotICAgICAgICAgICAgICAgICAgICAgIDAsIDApOwotICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0aW1lc3RhbXAsICZsb2NhbF90aW1lX3RtKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvbmVfc2Vjb25kID0gbmV3X2RlbHRhKDAsIDEsIDAsIDApOwotICAgIGlmIChvbmVfc2Vjb25kID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgc2Vjb25kcyA9IGRpdmlkZV90aW1lZGVsdGFfdGltZWRlbHRhKChQeURhdGVUaW1lX0RlbHRhICopZGVsdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb25lX3NlY29uZCk7Ci0gICAgUHlfREVDUkVGKG9uZV9zZWNvbmQpOwotICAgIGlmIChzZWNvbmRzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgUHlfREVDUkVGKGRlbHRhKTsKLSAgICB0aW1lc3RhbXAgPSBQeUxvbmdfQXNMb25nKHNlY29uZHMpOwotICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKLSAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHRpbWVwID0gbG9jYWx0aW1lKCZ0aW1lc3RhbXApOwogI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKLSAgICB6b25lID0gdGltZXAtPnRtX3pvbmU7Ci0gICAgZGVsdGEgPSBuZXdfZGVsdGEoMCwgdGltZXAtPnRtX2dtdG9mZiwgMCwgMSk7CisgICAgem9uZSA9IGxvY2FsX3RpbWVfdG0udG1fem9uZTsKKyAgICBkZWx0YSA9IG5ld19kZWx0YSgwLCBsb2NhbF90aW1lX3RtLnRtX2dtdG9mZiwgMCwgMSk7CiAjZWxzZSAvKiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FICovCiAgICAgewotICAgICAgICBQeU9iamVjdCAqbG9jYWxfdGltZTsKLSAgICAgICAgbG9jYWxfdGltZSA9IG5ld19kYXRldGltZSh0aW1lcC0+dG1feWVhciArIDE5MDAsIHRpbWVwLT50bV9tb24gKyAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVwLT50bV9tZGF5LCB0aW1lcC0+dG1faG91ciwgdGltZXAtPnRtX21pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcC0+dG1fc2VjLCBEQVRFX0dFVF9NSUNST1NFQ09ORCh1dGNfdGltZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWUtPnR6aW5mbyk7Ci0gICAgICAgIGlmIChsb2NhbF90aW1lID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KGxvY2FsX3RpbWUsIChQeU9iamVjdCopdXRjX3RpbWUpOwotICAgICAgICAvKiBYWFg6IGJlZm9yZSByZWx5aW5nIG9uIHR6bmFtZSwgd2Ugc2hvdWxkIGNvbXBhcmUgZGVsdGEKLSAgICAgICAgICAgdG8gdGhlIG9mZnNldCBpbXBsaWVkIGJ5IHRpbWV6b25lL2FsdHpvbmUgKi8KLSAgICAgICAgaWYgKGRheWxpZ2h0ICYmIHRpbWVwLT50bV9pc2RzdCA+PSAwKQotICAgICAgICAgICAgem9uZSA9IHR6bmFtZVt0aW1lcC0+dG1faXNkc3QgJSAyXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgem9uZSA9IHR6bmFtZVswXTsKKyAgICAgICAgUHlPYmplY3QgKmxvY2FsX3RpbWUsICp1dGNfdGltZTsKKyAgICAgICAgc3RydWN0IHRtIHV0Y190aW1lX3RtOworICAgICAgICBjaGFyIGJ1ZlsxMDBdOworICAgICAgICBzdHJmdGltZShidWYsIHNpemVvZihidWYpLCAiJVoiLCAmbG9jYWxfdGltZV90bSk7CisgICAgICAgIHpvbmUgPSBidWY7CisgICAgICAgIGxvY2FsX3RpbWUgPSBuZXdfZGF0ZXRpbWUobG9jYWxfdGltZV90bS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfdGltZV90bS50bV9tZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsX3RpbWVfdG0udG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF90aW1lX3RtLnRtX3NlYywgMCwgUHlfTm9uZSwgMCk7CisgICAgICAgIGlmIChsb2NhbF90aW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlUaW1lX2dtdGltZSh0aW1lc3RhbXAsICZ1dGNfdGltZV90bSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB1dGNfdGltZSA9IG5ld19kYXRldGltZSh1dGNfdGltZV90bS50bV95ZWFyICsgMTkwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1faG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRjX3RpbWVfdG0udG1fbWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGNfdGltZV90bS50bV9zZWMsIDAsIFB5X05vbmUsIDApOworICAgICAgICBpZiAodXRjX3RpbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGxvY2FsX3RpbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdChsb2NhbF90aW1lLCB1dGNfdGltZSk7CiAgICAgICAgIFB5X0RFQ1JFRihsb2NhbF90aW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHV0Y190aW1lKTsKICAgICB9CiAjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLworICAgIGlmIChkZWx0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHpvbmUgIT0gTlVMTCkgewogICAgICAgICBuYW1lbyA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoem9uZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgICAgICBpZiAobmFtZW8gPT0gTlVMTCkKQEAgLTQ4MDUsMTIgKzUwNzAsNjUgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbG9jYWxfdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqdXRjX3RpbWUpCit7CisgICAgdGltZV90IHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqZGVsdGE7CisgICAgUHlPYmplY3QgKm9uZV9zZWNvbmQ7CisgICAgUHlPYmplY3QgKnNlY29uZHM7CisKKyAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KChQeU9iamVjdCAqKXV0Y190aW1lLCBQeURhdGVUaW1lX0Vwb2NoKTsKKyAgICBpZiAoZGVsdGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgb25lX3NlY29uZCA9IG5ld19kZWx0YSgwLCAxLCAwLCAwKTsKKyAgICBpZiAob25lX3NlY29uZCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzZWNvbmRzID0gZGl2aWRlX3RpbWVkZWx0YV90aW1lZGVsdGEoKFB5RGF0ZVRpbWVfRGVsdGEgKilkZWx0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvbmVfc2Vjb25kKTsKKyAgICBQeV9ERUNSRUYob25lX3NlY29uZCk7CisgICAgUHlfREVDUkVGKGRlbHRhKTsKKyAgICBpZiAoc2Vjb25kcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0aW1lc3RhbXAgPSBfUHlMb25nX0FzVGltZV90KHNlY29uZHMpOworICAgIFB5X0RFQ1JFRihzZWNvbmRzKTsKKyAgICBpZiAodGltZXN0YW1wID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lc3RhbXApOworfQorCitzdGF0aWMgbG9uZyBsb25nCitsb2NhbF90b19zZWNvbmRzKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisgICAgICAgICAgICAgICAgIGludCBob3VyLCBpbnQgbWludXRlLCBpbnQgc2Vjb25kLCBpbnQgZm9sZCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitsb2NhbF90aW1lem9uZV9mcm9tX2xvY2FsKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKmxvY2FsX2R0KQoreworICAgIGxvbmcgbG9uZyBzZWNvbmRzOworICAgIHRpbWVfdCB0aW1lc3RhbXA7CisgICAgc2Vjb25kcyA9IGxvY2FsX3RvX3NlY29uZHMoR0VUX1lFQVIobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihsb2NhbF9kdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKGxvY2FsX2R0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQobG9jYWxfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQobG9jYWxfZHQpKTsKKyAgICBpZiAoc2Vjb25kcyA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogWFhYOiBhZGQgYm91bmRzIGNoZWNrICovCisgICAgdGltZXN0YW1wID0gc2Vjb25kcyAtIGVwb2NoOworICAgIHJldHVybiBsb2NhbF90aW1lem9uZV9mcm9tX3RpbWVzdGFtcCh0aW1lc3RhbXApOworfQorCiBzdGF0aWMgUHlEYXRlVGltZV9EYXRlVGltZSAqCiBkYXRldGltZV9hc3RpbWV6b25lKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CiAgICAgUHlEYXRlVGltZV9EYXRlVGltZSAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpvZmZzZXQ7CiAgICAgUHlPYmplY3QgKnRlbXA7CisgICAgUHlPYmplY3QgKnNlbGZfdHppbmZvOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBQeV9Ob25lOwogICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJ0eiIsIE5VTEx9OwogCkBAIC00ODIxLDI3ICs1MTM5LDI3IEBACiAgICAgaWYgKGNoZWNrX3R6aW5mb19zdWJjbGFzcyh0emluZm8pID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghSEFTVFpJTkZPKHNlbGYpIHx8IHNlbGYtPnR6aW5mbyA9PSBQeV9Ob25lKQotICAgICAgICBnb3RvIE5lZWRBd2FyZTsKKyAgICBpZiAoIUhBU1RaSU5GTyhzZWxmKSB8fCBzZWxmLT50emluZm8gPT0gUHlfTm9uZSkgeworICAgICAgICBzZWxmX3R6aW5mbyA9IGxvY2FsX3RpbWV6b25lX2Zyb21fbG9jYWwoc2VsZik7CisgICAgICAgIGlmIChzZWxmX3R6aW5mbyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZl90emluZm8gPSBzZWxmLT50emluZm87CisgICAgICAgIFB5X0lOQ1JFRihzZWxmX3R6aW5mbyk7CisgICAgfQogCiAgICAgLyogQ29udmVyc2lvbiB0byBzZWxmJ3Mgb3duIHRpbWUgem9uZSBpcyBhIE5PUC4gKi8KLSAgICBpZiAoc2VsZi0+dHppbmZvID09IHR6aW5mbykgeworICAgIGlmIChzZWxmX3R6aW5mbyA9PSB0emluZm8pIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGZfdHppbmZvKTsKICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gc2VsZjsKICAgICB9CiAKICAgICAvKiBDb252ZXJ0IHNlbGYgdG8gVVRDLiAqLwotICAgIG9mZnNldCA9IGRhdGV0aW1lX3V0Y29mZnNldCgoUHlPYmplY3QgKilzZWxmLCBOVUxMKTsKKyAgICBvZmZzZXQgPSBjYWxsX3V0Y29mZnNldChzZWxmX3R6aW5mbywgKFB5T2JqZWN0ICopc2VsZik7CisgICAgUHlfREVDUkVGKHNlbGZfdHppbmZvKTsKICAgICBpZiAob2Zmc2V0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvZmZzZXQgPT0gUHlfTm9uZSkgewotICAgICAgICBQeV9ERUNSRUYob2Zmc2V0KTsKLSAgICAgIE5lZWRBd2FyZToKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJhc3RpbWV6b25lKCkgY2Fubm90IGJlIGFwcGxpZWQgdG8gIgotICAgICAgICAgICAgICAgICAgICAgICAgImEgbmFpdmUgZGF0ZXRpbWUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCiAgICAgLyogcmVzdWx0ID0gc2VsZiAtIG9mZnNldCAqLwogICAgIHJlc3VsdCA9IChQeURhdGVUaW1lX0RhdGVUaW1lICopYWRkX2RhdGV0aW1lX3RpbWVkZWx0YShzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilvZmZzZXQsIC0xKTsKQEAgLTQ4NDksNiArNTE2NywzMiBAQAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICAvKiBNYWtlIHN1cmUgcmVzdWx0IGlzIGF3YXJlIGFuZCBVVEMuICovCisgICAgaWYgKCFIQVNUWklORk8ocmVzdWx0KSkgeworICAgICAgICB0ZW1wID0gKFB5T2JqZWN0ICopcmVzdWx0OworICAgICAgICByZXN1bHQgPSAoUHlEYXRlVGltZV9EYXRlVGltZSAqKQorICAgICAgICAgICAgICAgICAgIG5ld19kYXRldGltZV9leDIoR0VUX1lFQVIocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihyZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JQ1JPU0VDT05EKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQocmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocmVzdWx0KSk7CisgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBSZXN1bHQgaXMgYWxyZWFkeSBhd2FyZSAtIGp1c3QgcmVwbGFjZSB0emluZm8uICovCisgICAgICAgIHRlbXAgPSByZXN1bHQtPnR6aW5mbzsKKyAgICAgICAgcmVzdWx0LT50emluZm8gPSBQeURhdGVUaW1lX1RpbWVab25lX1VUQzsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdC0+dHppbmZvKTsKKyAgICAgICAgUHlfREVDUkVGKHRlbXApOworICAgIH0KKwogICAgIC8qIEF0dGFjaCBuZXcgdHppbmZvIGFuZCBsZXQgZnJvbXV0YygpIGRvIHRoZSByZXN0LiAqLwogICAgIHRlbXAgPSByZXN1bHQtPnR6aW5mbzsKICAgICBpZiAodHppbmZvID09IFB5X05vbmUpIHsKQEAgLTQ4OTYsNiArNTI0MCw1NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RmbGFnKTsKIH0KIAorc3RhdGljIGxvbmcgbG9uZworbG9jYWxfdG9fc2Vjb25kcyhpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgICBpbnQgaG91ciwgaW50IG1pbnV0ZSwgaW50IHNlY29uZCwgaW50IGZvbGQpCit7CisgICAgbG9uZyBsb25nIHQsIGEsIGIsIHUxLCB1MiwgdDEsIHQyLCBsdDsKKyAgICB0ID0gdXRjX3RvX3NlY29uZHMoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpOworICAgIC8qIE91ciBnb2FsIGlzIHRvIHNvbHZlIHQgPSBsb2NhbCh1KSBmb3IgdS4gKi8KKyAgICBsdCA9IGxvY2FsKHQpOworICAgIGlmIChsdCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGEgPSBsdCAtIHQ7CisgICAgdTEgPSB0IC0gYTsKKyAgICB0MSA9IGxvY2FsKHUxKTsKKyAgICBpZiAodDEgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDEgPT0gdCkgeworICAgICAgICAvKiBXZSBmb3VuZCBvbmUgc29sdXRpb24sIGJ1dCBpdCBtYXkgbm90IGJlIHRoZSBvbmUgd2UgbmVlZC4KKyAgICAgICAgICogTG9vayBmb3IgYW4gZWFybGllciBzb2x1dGlvbiAoaWYgYGZvbGRgIGlzIDApLCBvciBhCisgICAgICAgICAqIGxhdGVyIG9uZSAoaWYgYGZvbGRgIGlzIDEpLiAqLworICAgICAgICBpZiAoZm9sZCkKKyAgICAgICAgICAgIHUyID0gdTEgKyBtYXhfZm9sZF9zZWNvbmRzOworICAgICAgICBlbHNlCisgICAgICAgICAgICB1MiA9IHUxIC0gbWF4X2ZvbGRfc2Vjb25kczsKKyAgICAgICAgbHQgPSBsb2NhbCh1Mik7CisgICAgICAgIGlmIChsdCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgYiA9IGx0IC0gdTI7CisgICAgICAgIGlmIChhID09IGIpCisgICAgICAgICAgICByZXR1cm4gdTE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBiID0gdDEgLSB1MTsKKyAgICAgICAgYXNzZXJ0KGEgIT0gYik7CisgICAgfQorICAgIHUyID0gdCAtIGI7CisgICAgdDIgPSBsb2NhbCh1Mik7CisgICAgaWYgKHQyID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQyID09IHQpCisgICAgICAgIHJldHVybiB1MjsKKyAgICBpZiAodDEgPT0gdCkKKyAgICAgICAgcmV0dXJuIHUxOworICAgIC8qIFdlIGhhdmUgZm91bmQgYm90aCBvZmZzZXRzIGEgYW5kIGIsIGJ1dCBuZWl0aGVyIHQgLSBhIG5vciB0IC0gYiBpcworICAgICAqIGEgc29sdXRpb24uICBUaGlzIG1lYW5zIHQgaXMgaW4gdGhlIGdhcC4gKi8KKyAgICByZXR1cm4gZm9sZD9QeV9NSU4odTEsIHUyKTpQeV9NQVgodTEsIHUyKTsKK30KKworLyogZGF0ZSgxOTcwLDEsMSkudG9vcmRpbmFsKCkgPT0gNzE5MTYzICovCisjZGVmaW5lIEVQT0NIX1NFQ09ORFMgKDcxOTE2M0xMICogMjQgKiA2MCAqIDYwKQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZXRpbWVfdGltZXN0YW1wKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYpCiB7CkBAIC00OTEwLDMzICs1MzA0LDE4IEBACiAgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBzdHJ1Y3QgdG0gdGltZTsKLSAgICAgICAgdGltZV90IHRpbWVzdGFtcDsKLSAgICAgICAgbWVtc2V0KCh2b2lkICopICZ0aW1lLCAnXDAnLCBzaXplb2Yoc3RydWN0IHRtKSk7Ci0gICAgICAgIHRpbWUudG1feWVhciA9IEdFVF9ZRUFSKHNlbGYpIC0gMTkwMDsKLSAgICAgICAgdGltZS50bV9tb24gPSBHRVRfTU9OVEgoc2VsZikgLSAxOwotICAgICAgICB0aW1lLnRtX21kYXkgPSBHRVRfREFZKHNlbGYpOwotICAgICAgICB0aW1lLnRtX2hvdXIgPSBEQVRFX0dFVF9IT1VSKHNlbGYpOwotICAgICAgICB0aW1lLnRtX21pbiA9IERBVEVfR0VUX01JTlVURShzZWxmKTsKLSAgICAgICAgdGltZS50bV9zZWMgPSBEQVRFX0dFVF9TRUNPTkQoc2VsZik7Ci0gICAgICAgIHRpbWUudG1fd2RheSA9IC0xOwotICAgICAgICB0aW1lLnRtX2lzZHN0ID0gLTE7Ci0gICAgICAgIHRpbWVzdGFtcCA9IG1rdGltZSgmdGltZSk7Ci0gICAgICAgIGlmICh0aW1lc3RhbXAgPT0gKHRpbWVfdCkoLTEpCi0jaWZuZGVmIF9BSVgKLSAgICAgICAgICAgIC8qIFJldHVybiB2YWx1ZSBvZiAtMSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGFuIGVycm9yLAotICAgICAgICAgICAgICogYnV0IHRtX3dkYXkgY2Fubm90IHJlbWFpbiBzZXQgdG8gLTEgaWYgbWt0aW1lIHN1Y2NlZWRlZC4gKi8KLSAgICAgICAgICAgICYmIHRpbWUudG1fd2RheSA9PSAtMQotI2Vsc2UKLSAgICAgICAgICAgIC8qIG9uIEFJWCwgdG1fd2RheSBpcyBhbHdheXMgc2V0cywgZXZlbiBvbiBlcnJvciAqLwotI2VuZGlmCi0gICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSIpOworICAgICAgICBsb25nIGxvbmcgc2Vjb25kczsKKyAgICAgICAgc2Vjb25kcyA9IGxvY2FsX3RvX3NlY29uZHMoR0VUX1lFQVIoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFVF9NT05USChzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0VUX0RBWShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfSE9VUihzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlOVVRFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9TRUNPTkQoc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOworICAgICAgICBpZiAoc2Vjb25kcyA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZSh0aW1lc3RhbXAgKyBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSAvIDFlNik7CisgICAgICAgIHJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShzZWNvbmRzIC0gRVBPQ0hfU0VDT05EUyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSAvIDFlNik7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00OTU2LDcgKzUzMzUsOCBAQAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSU5VVEUoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX1NFQ09ORChzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfTUlDUk9TRUNPTkQoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgIFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9GT0xEKHNlbGYpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ5NjYsNyArNTM0Niw4IEBACiAgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX01JTlVURShzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgREFURV9HRVRfU0VDT05EKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICBEQVRFX0dFVF9NSUNST1NFQ09ORChzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgR0VUX0RUX1RaSU5GTyhzZWxmKSk7CisgICAgICAgICAgICAgICAgICAgIEdFVF9EVF9UWklORk8oc2VsZiksCisgICAgICAgICAgICAgICAgICAgIERBVEVfR0VUX0ZPTEQoc2VsZikpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTAxOCw3ICs1Mzk5LDcgQEAKICAqIF9fZ2V0c3RhdGVfXyBpc24ndCBleHBvc2VkLgogICovCiBzdGF0aWMgUHlPYmplY3QgKgotZGF0ZXRpbWVfZ2V0c3RhdGUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKK2RhdGV0aW1lX2dldHN0YXRlKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnNlbGYsIGludCBwcm90bykKIHsKICAgICBQeU9iamVjdCAqYmFzZXN0YXRlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwpAQCAtNTAyNiw2ICs1NDA3LDkgQEAKICAgICBiYXNlc3RhdGUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopc2VsZi0+ZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9EQVRFVElNRV9EQVRBU0laRSk7CiAgICAgaWYgKGJhc2VzdGF0ZSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChwcm90byA+IDMgJiYgREFURV9HRVRfRk9MRChzZWxmKSkKKyAgICAgICAgICAgIC8qIFNldCB0aGUgZmlyc3QgYml0IG9mIHRoZSB0aGlyZCBieXRlICovCisgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhiYXNlc3RhdGUpWzJdIHw9ICgxIDw8IDcpOwogICAgICAgICBpZiAoISBIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCiAgICAgICAgICAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMSwgYmFzZXN0YXRlKTsKICAgICAgICAgZWxzZQpAQCAtNTAzNiw5ICs1NDIwLDEzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9yZWR1Y2UoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZykKK2RhdGV0aW1lX3JlZHVjZShQeURhdGVUaW1lX0RhdGVUaW1lICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE9OKSIsIFB5X1RZUEUoc2VsZiksIGRhdGV0aW1lX2dldHN0YXRlKHNlbGYpKTsKKyAgICBpbnQgcHJvdG8gPSAwOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsICZwcm90bykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihPTikiLCBQeV9UWVBFKHNlbGYpLCBkYXRldGltZV9nZXRzdGF0ZShzZWxmLCBwcm90bykpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgZGF0ZXRpbWVfbWV0aG9kc1tdID0gewpAQCAtNTA5Myw5ICs1NDgxLDEyIEBACiAKICAgICB7Imlzb2Zvcm1hdCIsICAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2lzb2Zvcm1hdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgUHlEb2NfU1RSKCJbc2VwXSAtPiBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LCAiCi0gICAgICAgICAgICAgICAiWVlZWS1NTS1ERFRISDpNTTpTU1subW1tbW1tXVsrSEg6TU1dLlxuXG4iCisgICAgICAgICAgICAgICAiWVlZWS1NTS1ERFRbSEhbOk1NWzpTU1subW1tW3V1dV1dXV1dWytISDpNTV0uXG4iCiAgICAgICAgICAgICAgICAic2VwIGlzIHVzZWQgdG8gc2VwYXJhdGUgdGhlIHllYXIgZnJvbSB0aGUgdGltZSwgYW5kICIKLSAgICAgICAgICAgICAgICJkZWZhdWx0cyB0byAnVCcuIil9LAorICAgICAgICAgICAgICAgImRlZmF1bHRzIHRvICdUJy5cbiIKKyAgICAgICAgICAgICAgICJ0aW1lc3BlYyBzcGVjaWZpZXMgd2hhdCBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUiCisgICAgICAgICAgICAgICAiIChhbGxvd2VkIHZhbHVlcyBhcmUgJ2F1dG8nLCAnaG91cnMnLCAnbWludXRlcycsICdzZWNvbmRzJywiCisgICAgICAgICAgICAgICAiICdtaWxsaXNlY29uZHMnLCBhbmQgJ21pY3Jvc2Vjb25kcycpLlxuIil9LAogCiAgICAgeyJ1dGNvZmZzZXQiLCAgICAgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdXRjb2Zmc2V0LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gc2VsZi50emluZm8udXRjb2Zmc2V0KHNlbGYpLiIpfSwKQEAgLTUxMTIsMTMgKzU1MDMsMTMgQEAKICAgICB7ImFzdGltZXpvbmUiLCAgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2FzdGltZXpvbmUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigidHogLT4gY29udmVydCB0byBsb2NhbCB0aW1lIGluIG5ldyB0aW1lem9uZSB0elxuIil9LAogCi0gICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3JlZHVjZSwgICAgIE1FVEhfTk9BUkdTLAotICAgICBQeURvY19TVFIoIl9fcmVkdWNlX18oKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCisgICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX3JlZHVjZSwgICAgIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX3JlZHVjZV9leF9fKHByb3RvKSAtPiAoY2xzLCBzdGF0ZSkiKX0sCiAKICAgICB7TlVMTCwgICAgICBOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgZGF0ZXRpbWVfZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgZGF0ZXRpbWVfZG9jW10gPQogUHlEb2NfU1RSKCJkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5WywgaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWyx0emluZm9dXV1dXSlcblwKIFxuXAogVGhlIHllYXIsIG1vbnRoIGFuZCBkYXkgYXJndW1lbnRzIGFyZSByZXF1aXJlZC4gdHppbmZvIG1heSBiZSBOb25lLCBvciBhblxuXApAQCAtNTIwMSw3ICs1NTkyLDkgQEAKICAgICBuZXdfdGltZV9leCwKICAgICBuZXdfZGVsdGFfZXgsCiAgICAgZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcCwKLSAgICBkYXRlX2Zyb210aW1lc3RhbXAKKyAgICBkYXRlX2Zyb210aW1lc3RhbXAsCisgICAgbmV3X2RhdGV0aW1lX2V4MiwKKyAgICBuZXdfdGltZV9leDIKIH07CiAKIApAQCAtNTI4MiwxMiArNTY3NSwxMiBAQAogICAgIC8qIHRpbWUgdmFsdWVzICovCiAgICAgZCA9IFB5RGF0ZVRpbWVfVGltZVR5cGUudHBfZGljdDsKIAotICAgIHggPSBuZXdfdGltZSgwLCAwLCAwLCAwLCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X3RpbWUoMCwgMCwgMCwgMCwgUHlfTm9uZSwgMCk7CiAgICAgaWYgKHggPT0gTlVMTCB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAibWluIiwgeCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9ERUNSRUYoeCk7CiAKLSAgICB4ID0gbmV3X3RpbWUoMjMsIDU5LCA1OSwgOTk5OTk5LCBQeV9Ob25lKTsKKyAgICB4ID0gbmV3X3RpbWUoMjMsIDU5LCA1OSwgOTk5OTk5LCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtYXgiLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKQEAgLTUzMDAsMTIgKzU2OTMsMTIgQEAKICAgICAvKiBkYXRldGltZSB2YWx1ZXMgKi8KICAgICBkID0gUHlEYXRlVGltZV9EYXRlVGltZVR5cGUudHBfZGljdDsKIAotICAgIHggPSBuZXdfZGF0ZXRpbWUoMSwgMSwgMSwgMCwgMCwgMCwgMCwgUHlfTm9uZSk7CisgICAgeCA9IG5ld19kYXRldGltZSgxLCAxLCAxLCAwLCAwLCAwLCAwLCBQeV9Ob25lLCAwKTsKICAgICBpZiAoeCA9PSBOVUxMIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJtaW4iLCB4KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRih4KTsKIAotICAgIHggPSBuZXdfZGF0ZXRpbWUoTUFYWUVBUiwgMTIsIDMxLCAyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUpOworICAgIHggPSBuZXdfZGF0ZXRpbWUoTUFYWUVBUiwgMTIsIDMxLCAyMywgNTksIDU5LCA5OTk5OTksIFB5X05vbmUsIDApOwogICAgIGlmICh4ID09IE5VTEwgfHwgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1heCIsIHgpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwpAQCAtNTM0Nyw3ICs1NzQwLDcgQEAKIAogICAgIC8qIEVwb2NoICovCiAgICAgUHlEYXRlVGltZV9FcG9jaCA9IG5ld19kYXRldGltZSgxOTcwLCAxLCAxLCAwLCAwLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlEYXRlVGltZV9UaW1lWm9uZV9VVEMsIDApOwogICAgIGlmIChQeURhdGVUaW1lX0Vwb2NoID09IE5VTEwpCiAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtNTM4MiwxOSArNTc3NSwxOSBAQAogICAgIC8qIEEgNC15ZWFyIGN5Y2xlIGhhcyBhbiBleHRyYSBsZWFwIGRheSBvdmVyIHdoYXQgd2UnZCBnZXQgZnJvbQogICAgICAqIHBhc3RpbmcgdG9nZXRoZXIgNCBzaW5nbGUgeWVhcnMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJNFkgPT0gNCAqIDM2NSArIDEpOworICAgIFB5X0JVSUxEX0FTU0VSVChESTRZID09IDQgKiAzNjUgKyAxKTsKICAgICBhc3NlcnQoREk0WSA9PSBkYXlzX2JlZm9yZV95ZWFyKDQrMSkpOwogCiAgICAgLyogU2ltaWxhcmx5LCBhIDQwMC15ZWFyIGN5Y2xlIGhhcyBhbiBleHRyYSBsZWFwIGRheSBvdmVyIHdoYXQgd2UnZAogICAgICAqIGdldCBmcm9tIHBhc3RpbmcgdG9nZXRoZXIgNCAxMDAteWVhciBjeWNsZXMuCiAgICAgICovCi0gICAgYXNzZXJ0KERJNDAwWSA9PSA0ICogREkxMDBZICsgMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJNDAwWSA9PSA0ICogREkxMDBZICsgMSk7CiAgICAgYXNzZXJ0KERJNDAwWSA9PSBkYXlzX2JlZm9yZV95ZWFyKDQwMCsxKSk7CiAKICAgICAvKiBPVE9ILCBhIDEwMC15ZWFyIGN5Y2xlIGhhcyBvbmUgZmV3ZXIgbGVhcCBkYXkgdGhhbiB3ZSdkIGdldCBmcm9tCiAgICAgICogcGFzdGluZyB0b2dldGhlciAyNSA0LXllYXIgY3ljbGVzLgogICAgICAqLwotICAgIGFzc2VydChESTEwMFkgPT0gMjUgKiBESTRZIC0gMSk7CisgICAgUHlfQlVJTERfQVNTRVJUKERJMTAwWSA9PSAyNSAqIERJNFkgLSAxKTsKICAgICBhc3NlcnQoREkxMDBZID09IGRheXNfYmVmb3JlX3llYXIoMTAwKzEpKTsKIAogICAgIG9uZSA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RibW1vZHVsZS5jIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKaW5kZXggZWE4NzkwYi4uODA0OTc4YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGJtbW9kdWxlLmMKQEAgLTE0LDE2ICsxNCwxNiBAQAogICovCiAjaWYgZGVmaW5lZChIQVZFX05EQk1fSCkKICNpbmNsdWRlIDxuZGJtLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkdOVSBnZGJtIjsgIC8qIEVNWCBwb3J0IG9mIEdEQk0gKi8KK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkdOVSBnZGJtIjsgIC8qIEVNWCBwb3J0IG9mIEdEQk0gKi8KICNlbGlmIGRlZmluZWQoSEFWRV9HREJNX05EQk1fSCkKICNpbmNsdWRlIDxnZGJtL25kYm0uaD4KLXN0YXRpYyBjaGFyICp3aGljaF9kYm0gPSAiR05VIGdkYm0iOworc3RhdGljIGNvbnN0IGNoYXIgd2hpY2hfZGJtW10gPSAiR05VIGdkYm0iOwogI2VsaWYgZGVmaW5lZChIQVZFX0dEQk1fREFTSF9OREJNX0gpCiAjaW5jbHVkZSA8Z2RibS1uZGJtLmg+Ci1zdGF0aWMgY2hhciAqd2hpY2hfZGJtID0gIkdOVSBnZGJtIjsKK3N0YXRpYyBjb25zdCBjaGFyIHdoaWNoX2RibVtdID0gIkdOVSBnZGJtIjsKICNlbGlmIGRlZmluZWQoSEFWRV9CRVJLREJfSCkKICNpbmNsdWRlIDxkYi5oPgotc3RhdGljIGNoYXIgKndoaWNoX2RibSA9ICJCZXJrZWxleSBEQiI7CitzdGF0aWMgY29uc3QgY2hhciB3aGljaF9kYm1bXSA9ICJCZXJrZWxleSBEQiI7CiAjZWxzZQogI2Vycm9yICJObyBuZGJtLmggYXZhaWxhYmxlISIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9fZGVjaW1hbC5jCmluZGV4IGUxNTk0MWEuLmZjYzFmMTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlIDxzdGRsaWIuaD4KIAogI2luY2x1ZGUgImRvY3N0cmluZ3MuaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKIAogCiAjaWYgIWRlZmluZWQoTVBEX1ZFUlNJT05fSEVYKSB8fCBNUERfVkVSU0lPTl9IRVggPCAweDAyMDQwMTAwCkBAIC0xODkwLDEyICsxODg5LDEzIEBACiAvKiBSZXR1cm4gdGhlIEFTQ0lJIHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtZXJpYyBVbmljb2RlIHN0cmluZy4gVGhlIG51bWVyaWMKICAgIHN0cmluZyBtYXkgY29udGFpbiBhc2NpaSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbMSwgMTI3XSwgYW55IFVuaWNvZGUKICAgIHNwYWNlIGFuZCBhbnkgdW5pY29kZSBkaWdpdC4gSWYgc3RyaXBfd3MgaXMgdHJ1ZSwgbGVhZGluZyBhbmQgdHJhaWxpbmcKLSAgIHdoaXRlc3BhY2UgaXMgc3RyaXBwZWQuCisgICB3aGl0ZXNwYWNlIGlzIHN0cmlwcGVkLiBJZiBpZ25vcmVfdW5kZXJzY29yZXMgaXMgdHJ1ZSwgdW5kZXJzY29yZXMgYXJlCisgICBpZ25vcmVkLgogCiAgICBSZXR1cm4gTlVMTCBpZiBtYWxsb2MgZmFpbHMgYW5kIGFuIGVtcHR5IHN0cmluZyBpZiBpbnZhbGlkIGNoYXJhY3RlcnMKICAgIGFyZSBmb3VuZC4gKi8KIHN0YXRpYyBjaGFyICoKLW51bWVyaWNfYXNfYXNjaWkoY29uc3QgUHlPYmplY3QgKnUsIGludCBzdHJpcF93cykKK251bWVyaWNfYXNfYXNjaWkoY29uc3QgUHlPYmplY3QgKnUsIGludCBzdHJpcF93cywgaW50IGlnbm9yZV91bmRlcnNjb3JlcykKIHsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTE5MzAsNiArMTkzMCw5IEBACiAKICAgICBmb3IgKDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgIGlmIChpZ25vcmVfdW5kZXJzY29yZXMgJiYgY2ggPT0gJ18nKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogICAgICAgICBpZiAoMCA8IGNoICYmIGNoIDw9IDEyNykgewogICAgICAgICAgICAgKmNwKysgPSBjaDsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjAxMiw3ICsyMDE1LDcgQEAKICAgICBQeU9iamVjdCAqZGVjOwogICAgIGNoYXIgKnM7CiAKLSAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAwKTsKKyAgICBzID0gbnVtZXJpY19hc19hc2NpaSh1LCAwLCAwKTsKICAgICBpZiAocyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTIwMzIsNyArMjAzNSw3IEBACiAgICAgUHlPYmplY3QgKmRlYzsKICAgICBjaGFyICpzOwogCi0gICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMSk7CisgICAgcyA9IG51bWVyaWNfYXNfYXNjaWkodSwgMSwgMSk7CiAgICAgaWYgKHMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zMzk0LDYgKzMzOTcsMTA1IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBweWxvbmc7CiB9CiAKKy8qIENvbnZlcnQgYSBEZWNpbWFsIHRvIGl0cyBleGFjdCBpbnRlZ2VyIHJhdGlvIHJlcHJlc2VudGF0aW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19hc19pbnRlZ2VyX3JhdGlvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKm51bWVyYXRvciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRlbm9taW5hdG9yID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhwb25lbnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgbXBkX3NzaXplX3QgZXhwOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChNUEQoc2VsZikpKSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4oTVBEKHNlbGYpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKworICAgIHRtcCA9IGRlY19hbGxvYygpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9xY29weShNUEQodG1wKSwgTVBEKHNlbGYpLCAmc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZXhwID0gbXBkX2lzemVybyhNUEQodG1wKSkgPyAwIDogTVBEKHRtcCktPmV4cDsKKyAgICBNUEQodG1wKS0+ZXhwID0gMDsKKworICAgIC8qIGNvbnRleHQgYW5kIHJvdW5kaW5nIGFyZSB1bnVzZWQgaGVyZTogdGhlIGNvbnZlcnNpb24gaXMgZXhhY3QgKi8KKyAgICBudW1lcmF0b3IgPSBkZWNfYXNfbG9uZyh0bXAsIGNvbnRleHQsIE1QRF9ST1VORF9GTE9PUik7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZXhwb25lbnQgPSBQeUxvbmdfRnJvbVNzaXplX3QoZXhwIDwgMCA/IC1leHAgOiBleHApOworICAgIGlmIChleHBvbmVudCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgdG1wID0gUHlMb25nX0Zyb21Mb25nKDEwKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBQeV9TRVRSRUYoZXhwb25lbnQsIF9weV9sb25nX3Bvd2VyKHRtcCwgZXhwb25lbnQsIFB5X05vbmUpKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAoZXhwb25lbnQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChleHAgPj0gMCkgeworICAgICAgICBQeV9TRVRSRUYobnVtZXJhdG9yLCBfcHlfbG9uZ19tdWx0aXBseShudW1lcmF0b3IsIGV4cG9uZW50KSk7CisgICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBkZW5vbWluYXRvciA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICAgICAgaWYgKGRlbm9taW5hdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRlbm9taW5hdG9yID0gZXhwb25lbnQ7CisgICAgICAgIGV4cG9uZW50ID0gTlVMTDsKKyAgICAgICAgdG1wID0gX1B5TG9uZ19HQ0QobnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9TRVRSRUYobnVtZXJhdG9yLCBfcHlfbG9uZ19mbG9vcl9kaXZpZGUobnVtZXJhdG9yLCB0bXApKTsKKyAgICAgICAgUHlfU0VUUkVGKGRlbm9taW5hdG9yLCBfcHlfbG9uZ19mbG9vcl9kaXZpZGUoZGVub21pbmF0b3IsIHRtcCkpOworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMIHx8IGRlbm9taW5hdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBQeVR1cGxlX1BhY2soMiwgbnVtZXJhdG9yLCBkZW5vbWluYXRvcik7CisKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihleHBvbmVudCk7CisgICAgUHlfWERFQ1JFRihkZW5vbWluYXRvcik7CisgICAgUHlfWERFQ1JFRihudW1lcmF0b3IpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeURlY19Ub0ludGVncmFsVmFsdWUoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtNDcwMiw2ICs0ODA0LDcgQEAKICAgLyogTWlzY2VsbGFuZW91cyAqLwogICB7ICJmcm9tX2Zsb2F0IiwgZGVjX2Zyb21fZmxvYXQsIE1FVEhfT3xNRVRIX0NMQVNTLCBkb2NfZnJvbV9mbG9hdCB9LAogICB7ICJhc190dXBsZSIsIFB5RGVjX0FzVHVwbGUsIE1FVEhfTk9BUkdTLCBkb2NfYXNfdHVwbGUgfSwKKyAgeyAiYXNfaW50ZWdlcl9yYXRpbyIsIGRlY19hc19pbnRlZ2VyX3JhdGlvLCBNRVRIX05PQVJHUywgZG9jX2FzX2ludGVnZXJfcmF0aW8gfSwKIAogICAvKiBTcGVjaWFsIG1ldGhvZHMgKi8KICAgeyAiX19jb3B5X18iLCBkZWNfY29weSwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKaW5kZXggNzEwMjlhOS4uZjdmZDZlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKQEAgLTcwLDYgKzcwLDE1IEBACiBSZXR1cm4gYSB0dXBsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyLlxuXAogXG4iKTsKIAorUHlEb2NfU1RSVkFSKGRvY19hc19pbnRlZ2VyX3JhdGlvLAorImFzX2ludGVnZXJfcmF0aW8oJHNlbGYsIC8pXG4tLVxuXG5cCitEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8oKSAtPiAoaW50LCBpbnQpXG5cCitcblwKK1JldHVybiBhIHBhaXIgb2YgaW50ZWdlcnMsIHdob3NlIHJhdGlvIGlzIGV4YWN0bHkgZXF1YWwgdG8gdGhlIG9yaWdpbmFsXG5cCitEZWNpbWFsIGFuZCB3aXRoIGEgcG9zaXRpdmUgZGVub21pbmF0b3IuIFRoZSByYXRpbyBpcyBpbiBsb3dlc3QgdGVybXMuXG5cCitSYWlzZSBPdmVyZmxvd0Vycm9yIG9uIGluZmluaXRpZXMgYW5kIGEgVmFsdWVFcnJvciBvbiBOYU5zLlxuXAorXG4iKTsKKwogUHlEb2NfU1RSVkFSKGRvY19jYW5vbmljYWwsCiAiY2Fub25pY2FsKCRzZWxmLCAvKVxuLS1cblxuXAogUmV0dXJuIHRoZSBjYW5vbmljYWwgZW5jb2Rpbmcgb2YgdGhlIGFyZ3VtZW50LiAgQ3VycmVudGx5LCB0aGUgZW5jb2RpbmdcblwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCmluZGV4IDM1ZGU2YjguLmRmZTE1MjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguYwpAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGFzc2VydC5oPgogI2luY2x1ZGUgImNvbnN0YW50cy5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgInR5cGVhcml0aC5oIgogI2luY2x1ZGUgImJhc2Vhcml0aC5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKaW5kZXggYTQ1YTQyOS4uM2FhZGZiMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvaW8uYwpAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgImJpdHMuaCIKICNpbmNsdWRlICJjb25zdGFudHMuaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKICNpbmNsdWRlICJpby5oIgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYwppbmRleCAwZjQxZmU1Li5hODU0ZTA5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMKQEAgLTMwLDcgKzMwLDEyIEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKLSNpbmNsdWRlICJtZW1vcnkuaCIKKyNpbmNsdWRlICJtcGFsbG9jLmgiCisKKworI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDIzMikKKyNlbmRpZgogCiAKIC8qIEd1YXJhbnRlZWQgbWluaW11bSBhbGxvY2F0aW9uIGZvciBhIGNvZWZmaWNpZW50LiBNYXkgYmUgY2hhbmdlZCBvbmNlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGFsbG9jLmgKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaApyZW5hbWUgdG8gTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGFsbG9jLmgKaW5kZXggOWM5OGQxYS4uZWZkNzExOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaApAQCAtMjYsOCArMjYsOCBAQAogICovCiAKIAotI2lmbmRlZiBNRU1PUllfSAotI2RlZmluZSBNRU1PUllfSAorI2lmbmRlZiBNUEFMTE9DX0gKKyNkZWZpbmUgTVBBTExPQ19ICiAKIAogI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMKaW5kZXggNTkzZjlmNS4uMzI4YWI5MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYworKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAiYml0cy5oIgogI2luY2x1ZGUgImNvbnZvbHV0ZS5oIgogI2luY2x1ZGUgImNydC5oIgotI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgIm1wYWxsb2MuaCIKICNpbmNsdWRlICJ0eXBlYXJpdGguaCIKICNpbmNsdWRlICJ1bW9kYXJpdGguaCIKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKaW5kZXggNWNhNzQxMy4uZGFmMmI5ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5oCkBAIC00OCw2ICs0OCw4IEBACiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8aW50dHlwZXMuaD4KIAogI2lmZGVmIF9NU0NfVkVSCiAgICNpbmNsdWRlICJ2Y2NvbXBhdC5oIgpAQCAtNTksMTIgKzYxLDYgQEAKICAgI2RlZmluZSBNUERfSElERV9TWU1CT0xTX0VORAogICAjZGVmaW5lIEVYVElOTElORSBleHRlcm4gaW5saW5lCiAjZWxzZQotICAjaWZkZWYgSEFWRV9TVERJTlRfSAotICAgICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAgI2VuZGlmCi0gICNpZmRlZiBIQVZFX0lOVFRZUEVTX0gKLSAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgI2VuZGlmCiAgICNpZm5kZWYgX19HTlVDX1NURENfSU5MSU5FX18KICAgICAjZGVmaW5lIF9fR05VQ19TVERDX0lOTElORV9fIDEKICAgI2VuZGlmCkBAIC0xMDgsOSArMTA0LDkgQEAKIAogI2RlZmluZSBNUERfTUFKT1JfVkVSU0lPTiAyCiAjZGVmaW5lIE1QRF9NSU5PUl9WRVJTSU9OIDQKLSNkZWZpbmUgTVBEX01JQ1JPX1ZFUlNJT04gMQorI2RlZmluZSBNUERfTUlDUk9fVkVSU0lPTiAyCiAKLSNkZWZpbmUgTVBEX1ZFUlNJT04gIjIuNC4xIgorI2RlZmluZSBNUERfVkVSU0lPTiAiMi40LjIiCiAKICNkZWZpbmUgTVBEX1ZFUlNJT05fSEVYICgoTVBEX01BSk9SX1ZFUlNJT04gPDwgMjQpIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAgIChNUERfTUlOT1JfVkVSU0lPTiA8PCAxNikgfCBcCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKaW5kZXggZjU4ZTAyMy4uZGQxMzFkOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y2NvbXBhdC5oCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaApAQCAtMzIsNyArMzIsNiBAQAogCiAvKiBWaXN1YWwgQyBmaXhlczogbm8gc3RkaW50LmgsIG5vIHNucHJpbnRmIC4uLiAqLwogI2lmZGVmIF9NU0NfVkVSCi0gICNpbmNsdWRlICJ2Y3N0ZGludC5oIgogICAjdW5kZWYgaW5saW5lCiAgICNkZWZpbmUgaW5saW5lIF9faW5saW5lCiAgICN1bmRlZiByYW5kb20KQEAgLTQ5LDEwICs0OCw2IEBACiAgICN1bmRlZiBzdHJ0b2xsCiAgICNkZWZpbmUgc3RydG9sbCBfc3RydG9pNjQKICAgI2RlZmluZSBzdHJkdXAgX3N0cmR1cAotICAjZGVmaW5lIFBSSWk2NCAiSTY0aSIKLSAgI2RlZmluZSBQUkl1NjQgIkk2NHUiCi0gICNkZWZpbmUgUFJJaTMyICJJMzJpIgotICAjZGVmaW5lIFBSSXUzMiAiSTMydSIKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CmluZGV4IGFiN2Q1YmQuLmY5MDc1MzEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9kZWNjaGVjay5weQpAQCAtNTAsOCArNTAsOCBAQAogICAgICAgICAnX19hYnNfXycsICdfX2Jvb2xfXycsICdfX2NlaWxfXycsICdfX2NvbXBsZXhfXycsICdfX2NvcHlfXycsCiAgICAgICAgICdfX2Zsb29yX18nLCAnX19mbG9hdF9fJywgJ19faGFzaF9fJywgJ19faW50X18nLCAnX19uZWdfXycsCiAgICAgICAgICdfX3Bvc19fJywgJ19fcmVkdWNlX18nLCAnX19yZXByX18nLCAnX19zdHJfXycsICdfX3RydW5jX18nLAotICAgICAgICAnYWRqdXN0ZWQnLCAnYXNfdHVwbGUnLCAnY2Fub25pY2FsJywgJ2Nvbmp1Z2F0ZScsICdjb3B5X2FicycsCi0gICAgICAgICdjb3B5X25lZ2F0ZScsICdpc19jYW5vbmljYWwnLCAnaXNfZmluaXRlJywgJ2lzX2luZmluaXRlJywKKyAgICAgICAgJ2FkanVzdGVkJywgJ2FzX2ludGVnZXJfcmF0aW8nLCAnYXNfdHVwbGUnLCAnY2Fub25pY2FsJywgJ2Nvbmp1Z2F0ZScsCisgICAgICAgICdjb3B5X2FicycsICdjb3B5X25lZ2F0ZScsICdpc19jYW5vbmljYWwnLCAnaXNfZmluaXRlJywgJ2lzX2luZmluaXRlJywKICAgICAgICAgJ2lzX25hbicsICdpc19xbmFuJywgJ2lzX3NpZ25lZCcsICdpc19zbmFuJywgJ2lzX3plcm8nLCAncmFkaXgnCiAgICAgKSwKICAgICAjIFVuYXJ5IHdpdGggb3B0aW9uYWwgY29udGV4dDoKQEAgLTEyOCw3ICsxMjgsNyBAQAogIyBGdW5jdGlvbnMgdGhhdCByZXF1aXJlIGEgcmVzdHJpY3RlZCBleHBvbmVudCByYW5nZSBmb3IgcmVhc29uYWJsZSBydW50aW1lcy4KIFVuYXJ5UmVzdHJpY3RlZCA9IFsKICAgJ19fY2VpbF9fJywgJ19fZmxvb3JfXycsICdfX2ludF9fJywgJ19fdHJ1bmNfXycsCi0gICd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF92YWx1ZScKKyAgJ2FzX2ludGVnZXJfcmF0aW8nLCAndG9faW50ZWdyYWwnLCAndG9faW50ZWdyYWxfdmFsdWUnCiBdCiAKIEJpbmFyeVJlc3RyaWN0ZWQgPSBbJ19fcm91bmRfXyddCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwppbmRleCA4NWZmY2EyLi4zMzYyMTk1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCisrKyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKQEAgLTU3LDkgKzU3LDkgQEAKICAgIHRoYXQgYWxsIHVzZSBvZiB0ZXh0IGFuZCB0YWlsIGFzIG9iamVjdCBwb2ludGVycyBtdXN0IGJlIHdyYXBwZWQgaW4KICAgIEpPSU5fT0JKLiAgc2VlIGNvbW1lbnRzIGluIHRoZSBFbGVtZW50T2JqZWN0IGRlZmluaXRpb24gZm9yIG1vcmUKICAgIGluZm8uICovCi0jZGVmaW5lIEpPSU5fR0VUKHApICgoUHlfdWludHB0cl90KSAocCkgJiAxKQotI2RlZmluZSBKT0lOX1NFVChwLCBmbGFnKSAoKHZvaWQqKSAoKFB5X3VpbnRwdHJfdCkgKEpPSU5fT0JKKHApKSB8IChmbGFnKSkpCi0jZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgfihQeV91aW50cHRyX3QpMSkpCisjZGVmaW5lIEpPSU5fR0VUKHApICgodWludHB0cl90KSAocCkgJiAxKQorI2RlZmluZSBKT0lOX1NFVChwLCBmbGFnKSAoKHZvaWQqKSAoKHVpbnRwdHJfdCkgKEpPSU5fT0JKKHApKSB8IChmbGFnKSkpCisjZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKHVpbnRwdHJfdCkgKHApICYgfih1aW50cHRyX3QpMSkpCiAKIC8qIFB5X0NMRUFSIGZvciBhIFB5T2JqZWN0KiB0aGF0IHVzZXMgYSBqb2luIGZsYWcuIFBhc3MgdGhlIHBvaW50ZXIgYnkKICAqIHJlZmVyZW5jZSBzaW5jZSB0aGlzIGZ1bmN0aW9uIHNldHMgaXQgdG8gTlVMTC4KQEAgLTEyOSwzMCArMTI5LDYgQEAKIC8qIGhlbHBlcnMgKi8KIAogTE9DQUwoUHlPYmplY3QqKQotZGVlcGNvcHkoUHlPYmplY3QqIG9iamVjdCwgUHlPYmplY3QqIG1lbW8pCi17Ci0gICAgLyogZG8gYSBkZWVwIGNvcHkgb2YgdGhlIGdpdmVuIG9iamVjdCAqLwotICAgIFB5T2JqZWN0KiBhcmdzOwotICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgZWxlbWVudHRyZWVzdGF0ZSAqc3QgPSBFVF9TVEFURV9HTE9CQUw7Ci0KLSAgICBpZiAoIXN0LT5kZWVwY29weV9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgImRlZXBjb3B5IGhlbHBlciBub3QgZm91bmQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG9iamVjdCwgbWVtbyk7Ci0gICAgaWYgKCFhcmdzKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHN0LT5kZWVwY29weV9vYmosIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1MT0NBTChQeU9iamVjdCopCiBsaXN0X2pvaW4oUHlPYmplY3QqIGxpc3QpCiB7CiAgICAgLyogam9pbiBsaXN0IGVsZW1lbnRzIChkZXN0cm95aW5nIHRoZSBsaXN0IGluIHRoZSBwcm9jZXNzKSAqLwpAQCAtNDIwLDEwICszOTYsOCBAQAogICAgIFB5X1hERUNSRUYoYXR0cmliKTsKIAogICAgIC8qIFJlcGxhY2UgdGhlIG9iamVjdHMgYWxyZWFkeSBwb2ludGVkIHRvIGJ5IHRhZywgdGV4dCBhbmQgdGFpbC4gKi8KLSAgICB0bXAgPSBzZWxmX2VsZW0tPnRhZzsKICAgICBQeV9JTkNSRUYodGFnKTsKLSAgICBzZWxmX2VsZW0tPnRhZyA9IHRhZzsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKHNlbGZfZWxlbS0+dGFnLCB0YWcpOwogCiAgICAgdG1wID0gc2VsZl9lbGVtLT50ZXh0OwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTc0OCw2ICs3MjIsOSBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKSBlbGVtZW50OwogfQogCisvKiBIZWxwZXIgZm9yIGEgZGVlcCBjb3B5LiAqLworTE9DQUwoUHlPYmplY3QgKikgZGVlcGNvcHkoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisKIC8qW2NsaW5pYyBpbnB1dF0KIF9lbGVtZW50dHJlZS5FbGVtZW50Ll9fZGVlcGNvcHlfXwogCkBAIC04MjAsNyArNzk3LDcgQEAKICAgICB9CiAKICAgICAvKiBhZGQgb2JqZWN0IHRvIG1lbW8gZGljdGlvbmFyeSAoc28gZGVlcGNvcHkgd29uJ3QgdmlzaXQgaXQgYWdhaW4pICovCi0gICAgaWQgPSBQeUxvbmdfRnJvbVNzaXplX3QoKFB5X3VpbnRwdHJfdCkgc2VsZik7CisgICAgaWQgPSBQeUxvbmdfRnJvbVNzaXplX3QoKHVpbnRwdHJfdCkgc2VsZik7CiAgICAgaWYgKCFpZCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtODM4LDYgKzgxNSw1MyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCitMT0NBTChQeU9iamVjdCAqKQorZGVlcGNvcHkoUHlPYmplY3QgKm9iamVjdCwgUHlPYmplY3QgKm1lbW8pCit7CisgICAgLyogZG8gYSBkZWVwIGNvcHkgb2YgdGhlIGdpdmVuIG9iamVjdCAqLworICAgIGVsZW1lbnR0cmVlc3RhdGUgKnN0OworICAgIFB5T2JqZWN0ICpzdGFja1syXTsKKworICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICBpZiAob2JqZWN0ID09IFB5X05vbmUgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICBQeV9JTkNSRUYob2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIG9iamVjdDsKKyAgICB9CisKKyAgICBpZiAoUHlfUkVGQ05UKG9iamVjdCkgPT0gMSkgeworICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOworICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MgPSAwOworICAgICAgICAgICAgaW50IHNpbXBsZSA9IDE7CisgICAgICAgICAgICB3aGlsZSAoUHlEaWN0X05leHQob2JqZWN0LCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8ICFQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2ltcGxlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNpbXBsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlEaWN0X0NvcHkob2JqZWN0KTsKKyAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCB0byBnZW5lcmFsIGNhc2UgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChFbGVtZW50X0NoZWNrRXhhY3Qob2JqZWN0KSkgeworICAgICAgICAgICAgcmV0dXJuIF9lbGVtZW50dHJlZV9FbGVtZW50X19fZGVlcGNvcHlfXygoRWxlbWVudE9iamVjdCAqKW9iamVjdCwgbWVtbyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBHZW5lcmFsIGNhc2UgKi8KKyAgICBzdCA9IEVUX1NUQVRFX0dMT0JBTDsKKyAgICBpZiAoIXN0LT5kZWVwY29weV9vYmopIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkZWVwY29weSBoZWxwZXIgbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0YWNrWzBdID0gb2JqZWN0OworICAgIHN0YWNrWzFdID0gbWVtbzsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsKHN0LT5kZWVwY29weV9vYmosIHN0YWNrLCAyKTsKK30KKworCiAvKltjbGluaWMgaW5wdXRdCiBfZWxlbWVudHRyZWUuRWxlbWVudC5fX3NpemVvZl9fIC0+IFB5X3NzaXplX3QKIApAQCAtMTc2Myw3ICsxNzg3LDcgQEAKICAgICAgICAgICAgICAgICBzdGVwID0gLXN0ZXA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuIDw9IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgICAgIGFzc2VydCgoc2l6ZV90KXNsaWNlbGVuIDw9IFNJWkVfTUFYIC8gc2l6ZW9mKFB5T2JqZWN0ICopKTsKIAogICAgICAgICAgICAgLyogcmVjeWNsZSBpcyBhIGxpc3QgdGhhdCB3aWxsIGNvbnRhaW4gYWxsIHRoZSBjaGlsZHJlbgogICAgICAgICAgICAgICogc2NoZWR1bGVkIGZvciByZW1vdmFsLgpAQCAtMTg5Miw5MiArMTkxNiw5MCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2dldGF0dHJvKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqKQorZWxlbWVudF90YWdfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgUHlPYmplY3QqIHJlczsKLSAgICBjaGFyICpuYW1lID0gIiI7Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWVvYmopKQotICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKLQotICAgIGlmIChuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogaGFuZGxlIGNvbW1vbiBhdHRyaWJ1dGVzIGZpcnN0ICovCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFnIikgPT0gMCkgewotICAgICAgICByZXMgPSBzZWxmLT50YWc7Ci0gICAgICAgIFB5X0lOQ1JFRihyZXMpOwotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkgewotICAgICAgICByZXMgPSBlbGVtZW50X2dldF90ZXh0KHNlbGYpOwotICAgICAgICBQeV9YSU5DUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0gICAgLyogbWV0aG9kcyAqLwotICAgIHJlcyA9IFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyKChQeU9iamVjdCopIHNlbGYsIG5hbWVvYmopOwotICAgIGlmIChyZXMpCi0gICAgICAgIHJldHVybiByZXM7Ci0KLSAgICAvKiBsZXNzIGNvbW1vbiBhdHRyaWJ1dGVzICovCi0gICAgaWYgKHN0cmNtcChuYW1lLCAidGFpbCIpID09IDApIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgcmVzID0gZWxlbWVudF9nZXRfdGFpbChzZWxmKTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKSB7Ci0gICAgICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXMgPSBlbGVtZW50X2dldF9hdHRyaWIoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgUHlPYmplY3QgKnJlcyA9IHNlbGYtPnRhZzsKICAgICBQeV9JTkNSRUYocmVzKTsKICAgICByZXR1cm4gcmVzOwogfQogCi1zdGF0aWMgaW50Ci1lbGVtZW50X3NldGF0dHJvKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBuYW1lb2JqLCBQeU9iamVjdCogdmFsdWUpCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X3RleHRfZ2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gICAgY2hhciAqbmFtZSA9ICIiOworICAgIFB5T2JqZWN0ICpyZXMgPSBlbGVtZW50X2dldF90ZXh0KHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQogCi0gICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgImNhbid0IGRlbGV0ZSBhdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuIC0xOworc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF90YWlsX2dldHRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5T2JqZWN0ICpyZXMgPSBlbGVtZW50X2dldF90YWlsKHNlbGYpOworICAgIFB5X1hJTkNSRUYocmVzKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X2F0dHJpYl9nZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIGlmICghc2VsZi0+ZXh0cmEpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKLSAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIHJlcyA9IGVsZW1lbnRfZ2V0X2F0dHJpYihzZWxmKTsKKyAgICBQeV9YSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KIAotICAgIGlmIChzdHJjbXAobmFtZSwgInRhZyIpID09IDApIHsKLSAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgUHlfU0VUUkVGKHNlbGYtPnRhZywgdmFsdWUpOwotICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkgewotICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGV4dCkpOwotICAgICAgICBzZWxmLT50ZXh0ID0gdmFsdWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT50ZXh0KTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAidGFpbCIpID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKLSAgICAgICAgc2VsZi0+dGFpbCA9IHZhbHVlOwotICAgICAgICBQeV9JTkNSRUYoc2VsZi0+dGFpbCk7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKLSAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkgewotICAgICAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBOVUxMKSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgIFB5X1NFVFJFRihzZWxmLT5leHRyYS0+YXR0cmliLCB2YWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgIkNhbid0IHNldCBhcmJpdHJhcnkgYXR0cmlidXRlcyBvbiBFbGVtZW50Iik7Ci0gICAgICAgIHJldHVybiAtMTsKKy8qIG1hY3JvIGZvciBzZXR0ZXIgdmFsaWRhdGlvbiAqLworI2RlZmluZSBfVkFMSURBVEVfQVRUUl9WQUxVRShWKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKFYpID09IE5VTEwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyggICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgUHlFeGNfQXR0cmlidXRlRXJyb3IsICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJjYW4ndCBkZWxldGUgZWxlbWVudCBhdHRyaWJ1dGUiKTsgICAgICBcCisgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAorc3RhdGljIGludAorZWxlbWVudF90YWdfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+dGFnLCB2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfdGV4dF9zZXR0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQoreworICAgIF9WQUxJREFURV9BVFRSX1ZBTFVFKHZhbHVlKTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7CisgICAgc2VsZi0+dGV4dCA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X3RhaWxfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworICAgIHNlbGYtPnRhaWwgPSB2YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZWxlbWVudF9hdHRyaWJfc2V0dGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBfVkFMSURBVEVfQVRUUl9WQUxVRSh2YWx1ZSk7CisgICAgaWYgKCFzZWxmLT5leHRyYSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYiwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xOTk3LDIyICsyMDE5LDIyIEBACiAgKiBwcmUtb3JkZXIgdHJhdmVyc2FsLiBUbyBrZWVwIHRyYWNrIG9mIHdoaWNoIHN1Yi1lbGVtZW50IHNob3VsZCBiZSByZXR1cm5lZAogICogbmV4dCwgYSBzdGFjayBvZiBwYXJlbnRzIGlzIG1haW50YWluZWQuIFRoaXMgaXMgYSBzdGFuZGFyZCBzdGFjay1iYXNlZAogICogaXRlcmF0aXZlIHByZS1vcmRlciB0cmF2ZXJzYWwgb2YgYSB0cmVlLgotICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBzaW5nbGUtbGlua2VkIGxpc3Qgc3RhcnRpbmcgYXQgcGFyZW50X3N0YWNrLgotICogRWFjaCBzdGFjayBub2RlIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgorICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBjb250aW51b3VzIGFycmF5LgorICogRWFjaCBzdGFjayBpdGVtIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgogICogdGhlIGN1cnJlbnQgb25lIGlzIGV4aGF1c3RlZCwgYW5kIHRoZSBuZXh0IGNoaWxkIHRvIGV4YW1pbmUgaW4gdGhhdCBwYXJlbnQuCiAgKi8KIHR5cGVkZWYgc3RydWN0IFBhcmVudExvY2F0b3JfdCB7CiAgICAgRWxlbWVudE9iamVjdCAqcGFyZW50OwogICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXg7Ci0gICAgc3RydWN0IFBhcmVudExvY2F0b3JfdCAqbmV4dDsKIH0gUGFyZW50TG9jYXRvcjsKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQYXJlbnRMb2NhdG9yICpwYXJlbnRfc3RhY2s7CisgICAgUHlfc3NpemVfdCBwYXJlbnRfc3RhY2tfdXNlZDsKKyAgICBQeV9zc2l6ZV90IHBhcmVudF9zdGFja19zaXplOwogICAgIEVsZW1lbnRPYmplY3QgKnJvb3RfZWxlbWVudDsKICAgICBQeU9iamVjdCAqc291Z2h0X3RhZzsKLSAgICBpbnQgcm9vdF9kb25lOwogICAgIGludCBnZXR0ZXh0OwogfSBFbGVtZW50SXRlck9iamVjdDsKIApAQCAtMjAyMCwxMyArMjA0MiwxMSBAQAogc3RhdGljIHZvaWQKIGVsZW1lbnRpdGVyX2RlYWxsb2MoRWxlbWVudEl0ZXJPYmplY3QgKml0KQogewotICAgIFBhcmVudExvY2F0b3IgKnAgPSBpdC0+cGFyZW50X3N0YWNrOwotICAgIHdoaWxlIChwKSB7Ci0gICAgICAgIFBhcmVudExvY2F0b3IgKnRlbXAgPSBwOwotICAgICAgICBQeV9YREVDUkVGKHAtPnBhcmVudCk7Ci0gICAgICAgIHAgPSBwLT5uZXh0OwotICAgICAgICBQeU9iamVjdF9GcmVlKHRlbXApOwotICAgIH0KKyAgICBQeV9zc2l6ZV90IGkgPSBpdC0+cGFyZW50X3N0YWNrX3VzZWQ7CisgICAgaXQtPnBhcmVudF9zdGFja191c2VkID0gMDsKKyAgICB3aGlsZSAoaS0tKQorICAgICAgICBQeV9YREVDUkVGKGl0LT5wYXJlbnRfc3RhY2tbaV0ucGFyZW50KTsKKyAgICBQeU1lbV9GcmVlKGl0LT5wYXJlbnRfc3RhY2spOwogCiAgICAgUHlfWERFQ1JFRihpdC0+c291Z2h0X3RhZyk7CiAgICAgUHlfWERFQ1JFRihpdC0+cm9vdF9lbGVtZW50KTsKQEAgLTIwMzgsMTEgKzIwNTgsOSBAQAogc3RhdGljIGludAogZWxlbWVudGl0ZXJfdHJhdmVyc2UoRWxlbWVudEl0ZXJPYmplY3QgKml0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKLSAgICB3aGlsZSAocCkgewotICAgICAgICBQeV9WSVNJVChwLT5wYXJlbnQpOwotICAgICAgICBwID0gcC0+bmV4dDsKLSAgICB9CisgICAgUHlfc3NpemVfdCBpID0gaXQtPnBhcmVudF9zdGFja191c2VkOworICAgIHdoaWxlIChpLS0pCisgICAgICAgIFB5X1ZJU0lUKGl0LT5wYXJlbnRfc3RhY2tbaV0ucGFyZW50KTsKIAogICAgIFB5X1ZJU0lUKGl0LT5yb290X2VsZW1lbnQpOwogICAgIFB5X1ZJU0lUKGl0LT5zb3VnaHRfdGFnKTsKQEAgLTIwNTEsMTcgKzIwNjksMjUgQEAKIAogLyogSGVscGVyIGZ1bmN0aW9uIGZvciBlbGVtZW50aXRlcl9uZXh0LiBBZGQgYSBuZXcgcGFyZW50IHRvIHRoZSBwYXJlbnQgc3RhY2suCiAgKi8KLXN0YXRpYyBQYXJlbnRMb2NhdG9yICoKLXBhcmVudF9zdGFja19wdXNoX25ldyhQYXJlbnRMb2NhdG9yICpzdGFjaywgRWxlbWVudE9iamVjdCAqcGFyZW50KQorc3RhdGljIGludAorcGFyZW50X3N0YWNrX3B1c2hfbmV3KEVsZW1lbnRJdGVyT2JqZWN0ICppdCwgRWxlbWVudE9iamVjdCAqcGFyZW50KQogewotICAgIFBhcmVudExvY2F0b3IgKm5ld19ub2RlID0gUHlPYmplY3RfTWFsbG9jKHNpemVvZihQYXJlbnRMb2NhdG9yKSk7Ci0gICAgaWYgKG5ld19ub2RlKSB7Ci0gICAgICAgIG5ld19ub2RlLT5wYXJlbnQgPSBwYXJlbnQ7Ci0gICAgICAgIFB5X0lOQ1JFRihwYXJlbnQpOwotICAgICAgICBuZXdfbm9kZS0+Y2hpbGRfaW5kZXggPSAwOwotICAgICAgICBuZXdfbm9kZS0+bmV4dCA9IHN0YWNrOworICAgIFBhcmVudExvY2F0b3IgKml0ZW07CisKKyAgICBpZiAoaXQtPnBhcmVudF9zdGFja191c2VkID49IGl0LT5wYXJlbnRfc3RhY2tfc2l6ZSkgeworICAgICAgICBQeV9zc2l6ZV90IG5ld19zaXplID0gaXQtPnBhcmVudF9zdGFja19zaXplICogMjsgIC8qIG5ldmVyIG92ZXJmbG93ICovCisgICAgICAgIFBhcmVudExvY2F0b3IgKnBhcmVudF9zdGFjayA9IGl0LT5wYXJlbnRfc3RhY2s7CisgICAgICAgIFB5TWVtX1Jlc2l6ZShwYXJlbnRfc3RhY2ssIFBhcmVudExvY2F0b3IsIG5ld19zaXplKTsKKyAgICAgICAgaWYgKHBhcmVudF9zdGFjayA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrOworICAgICAgICBpdC0+cGFyZW50X3N0YWNrX3NpemUgPSBuZXdfc2l6ZTsKICAgICB9Ci0gICAgcmV0dXJuIG5ld19ub2RlOworICAgIGl0ZW0gPSBpdC0+cGFyZW50X3N0YWNrICsgaXQtPnBhcmVudF9zdGFja191c2VkKys7CisgICAgUHlfSU5DUkVGKHBhcmVudCk7CisgICAgaXRlbS0+cGFyZW50ID0gcGFyZW50OworICAgIGl0ZW0tPmNoaWxkX2luZGV4ID0gMDsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIwNzgsMTUxICsyMTA0LDkxIEBACiAgICAgICogICAtIGl0ZXJ0ZXh0KCkgYWxzbyBoYXMgdG8gaGFuZGxlIHRhaWwsIGFmdGVyIGZpbmlzaGluZyB3aXRoIGFsbCB0aGUKICAgICAgKiAgICAgY2hpbGRyZW4gb2YgYSBub2RlLgogICAgICAqLwotICAgIEVsZW1lbnRPYmplY3QgKmN1cl9wYXJlbnQ7Ci0gICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKICAgICBpbnQgcmM7CiAgICAgRWxlbWVudE9iamVjdCAqZWxlbTsKKyAgICBQeU9iamVjdCAqdGV4dDsKIAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSByZWFjaGVkIGluIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVyYXRpb24sIHdoZXJlCi0gICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIFRoZSByb290X2RvbmUgZmxhZyBnaXZlcyB1cyBpbmRpY2F0aW9uCi0gICAgICAgICAqIHdoZXRoZXIgd2UndmUganVzdCBzdGFydGVkIGl0ZXJhdGluZyAoc28gcm9vdF9kb25lIGlzIDApLCBpbiB3aGljaAotICAgICAgICAgKiBjYXNlIHRoZSByb290IGlzIHJldHVybmVkLiBJZiByb290X2RvbmUgaXMgMSBhbmQgd2UncmUgaGVyZSwgdGhlCisgICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIElmIHJvb3RfZWxlbWVudCBpcyBOVUxMIGFuZCB3ZSdyZSBoZXJlLCB0aGUKICAgICAgICAgICogaXRlcmF0b3IgaXMgZXhoYXVzdGVkLgogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCFpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKLSAgICAgICAgICAgIGlmIChpdC0+cm9vdF9kb25lKSB7CisgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFja191c2VkKSB7CisgICAgICAgICAgICBpZiAoIWl0LT5yb290X2VsZW1lbnQpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbGVtID0gaXQtPnJvb3RfZWxlbWVudDsKLSAgICAgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gcGFyZW50X3N0YWNrX3B1c2hfbmV3KGl0LT5wYXJlbnRfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2spIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIGl0LT5yb290X2RvbmUgPSAxOwotICAgICAgICAgICAgICAgIHJjID0gKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpOwotICAgICAgICAgICAgICAgIGlmICghcmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCA9IGVsZW1lbnRfZ2V0X3RleHQoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTZWUgaWYgdGhlcmUgYXJlIGNoaWxkcmVuIGxlZnQgdG8gdHJhdmVyc2UgaW4gdGhlIGN1cnJlbnQgcGFyZW50LiBJZgotICAgICAgICAgKiB5ZXMsIHZpc2l0IHRoZSBuZXh0IGNoaWxkLiBJZiBub3QsIHBvcCB0aGUgc3RhY2sgYW5kIHRyeSBhZ2Fpbi4KLSAgICAgICAgICovCi0gICAgICAgIGN1cl9wYXJlbnQgPSBpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQ7Ci0gICAgICAgIGNoaWxkX2luZGV4ID0gaXQtPnBhcmVudF9zdGFjay0+Y2hpbGRfaW5kZXg7Ci0gICAgICAgIGlmIChjdXJfcGFyZW50LT5leHRyYSAmJiBjaGlsZF9pbmRleCA8IGN1cl9wYXJlbnQtPmV4dHJhLT5sZW5ndGgpIHsKLSAgICAgICAgICAgIGVsZW0gPSAoRWxlbWVudE9iamVjdCAqKWN1cl9wYXJlbnQtPmV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCsrOwotICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtKTsKLSAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgewotICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIFB5X0lOQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKLSAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRleHQpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJjID0gKGl0LT5zb3VnaHRfdGFnID09IFB5X05vbmUpOwotICAgICAgICAgICAgICAgIGlmICghcmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c291Z2h0X3RhZywgUHlfRVEpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmMpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsZW0gPSBpdC0+cm9vdF9lbGVtZW50OyAgLyogc3RlYWxzIGEgcmVmZXJlbmNlICovCisgICAgICAgICAgICBpdC0+cm9vdF9lbGVtZW50ID0gTlVMTDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0YWlsOwotICAgICAgICAgICAgUGFyZW50TG9jYXRvciAqbmV4dDsKLSAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihjdXJfcGFyZW50KTsKLSAgICAgICAgICAgICAgICB0YWlsID0gZWxlbWVudF9nZXRfdGFpbChjdXJfcGFyZW50KTsKLSAgICAgICAgICAgICAgICBpZiAoIXRhaWwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGN1cl9wYXJlbnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRhaWwpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdXJfcGFyZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHRhaWwgPSBQeV9Ob25lOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0YWlsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5leHQgPSBpdC0+cGFyZW50X3N0YWNrLT5uZXh0OwotICAgICAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKLSAgICAgICAgICAgIFB5T2JqZWN0X0ZyZWUoaXQtPnBhcmVudF9zdGFjayk7Ci0gICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrID0gbmV4dDsKLSAgICAgICAgICAgIFB5X1hERUNSRUYoY3VyX3BhcmVudCk7Ci0KLSAgICAgICAgICAgIC8qIE5vdGUgdGhhdCBleHRyYSBjb25kaXRpb24gb24gaXQtPnBhcmVudF9zdGFjay0+cGFyZW50IGhlcmU7Ci0gICAgICAgICAgICAgKiB0aGlzIGlzIGJlY2F1c2UgaXRlcnRleHQoKSBpcyBzdXBwb3NlZCB0byBvbmx5IHJldHVybiAqaW5uZXIqCi0gICAgICAgICAgICAgKiB0ZXh0LCBub3QgdGV4dCBmb2xsb3dpbmcgdGhlIGVsZW1lbnQgaXQgYmVnYW4gaXRlcmF0aW9uIHdpdGguCisgICAgICAgICAgICAvKiBTZWUgaWYgdGhlcmUgYXJlIGNoaWxkcmVuIGxlZnQgdG8gdHJhdmVyc2UgaW4gdGhlIGN1cnJlbnQgcGFyZW50LiBJZgorICAgICAgICAgICAgICogeWVzLCB2aXNpdCB0aGUgbmV4dCBjaGlsZC4gSWYgbm90LCBwb3AgdGhlIHN0YWNrIGFuZCB0cnkgYWdhaW4uCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpIHsKLSAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzVHJ1ZSh0YWlsKTsKLSAgICAgICAgICAgICAgICBpZiAocmMgPiAwKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFpbDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJjIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQYXJlbnRMb2NhdG9yICppdGVtID0gJml0LT5wYXJlbnRfc3RhY2tbaXQtPnBhcmVudF9zdGFja191c2VkIC0gMV07CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNoaWxkX2luZGV4ID0gaXRlbS0+Y2hpbGRfaW5kZXg7CisgICAgICAgICAgICBFbGVtZW50T2JqZWN0RXh0cmEgKmV4dHJhOworICAgICAgICAgICAgZWxlbSA9IGl0ZW0tPnBhcmVudDsKKyAgICAgICAgICAgIGV4dHJhID0gZWxlbS0+ZXh0cmE7CisgICAgICAgICAgICBpZiAoIWV4dHJhIHx8IGNoaWxkX2luZGV4ID49IGV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrX3VzZWQtLTsKKyAgICAgICAgICAgICAgICAvKiBOb3RlIHRoYXQgZXh0cmEgY29uZGl0aW9uIG9uIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCBoZXJlOworICAgICAgICAgICAgICAgICAqIHRoaXMgaXMgYmVjYXVzZSBpdGVydGV4dCgpIGlzIHN1cHBvc2VkIHRvIG9ubHkgcmV0dXJuICppbm5lcioKKyAgICAgICAgICAgICAgICAgKiB0ZXh0LCBub3QgdGV4dCBmb2xsb3dpbmcgdGhlIGVsZW1lbnQgaXQgYmVnYW4gaXRlcmF0aW9uIHdpdGguCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKGl0LT5nZXR0ZXh0ICYmIGl0LT5wYXJlbnRfc3RhY2tfdXNlZCkgeworICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF9nZXRfdGFpbChlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBnZXR0ZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVsZW0gPSAoRWxlbWVudE9iamVjdCAqKWV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07CisgICAgICAgICAgICBpdGVtLT5jaGlsZF9pbmRleCsrOworICAgICAgICAgICAgUHlfSU5DUkVGKGVsZW0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBhcmVudF9zdGFja19wdXNoX25ldyhpdCwgZWxlbSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbSk7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGl0LT5nZXR0ZXh0KSB7CisgICAgICAgICAgICB0ZXh0ID0gZWxlbWVudF9nZXRfdGV4dChlbGVtKTsKKyAgICAgICAgICAgIGdvdG8gZ2V0dGV4dDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lKQorICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07CisKKyAgICAgICAgcmMgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZWxlbS0+dGFnLCBpdC0+c291Z2h0X3RhZywgUHlfRVEpOworICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWVsZW07CisKKyAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICBpZiAocmMgPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGNvbnRpbnVlOworCitnZXR0ZXh0OgorICAgICAgICBpZiAoIXRleHQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmICh0ZXh0ID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNUcnVlKHRleHQpOworICAgICAgICAgICAgaWYgKHJjID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIyNzQsNiArMjI0MCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KIH07CiAKKyNkZWZpbmUgSU5JVF9QQVJFTlRfU1RBQ0tfU0laRSA4CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBjcmVhdGVfZWxlbWVudGl0ZXIoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZywgaW50IGdldHRleHQpCkBAIC0yMjg2LDIyICsyMjUzLDIwIEBACiAKICAgICBQeV9JTkNSRUYodGFnKTsKICAgICBpdC0+c291Z2h0X3RhZyA9IHRhZzsKLSAgICBpdC0+cm9vdF9kb25lID0gMDsKICAgICBpdC0+Z2V0dGV4dCA9IGdldHRleHQ7CiAgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgIGl0LT5yb290X2VsZW1lbnQgPSBzZWxmOwogCiAgICAgUHlPYmplY3RfR0NfVHJhY2soaXQpOwogCi0gICAgaXQtPnBhcmVudF9zdGFjayA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpOworICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBQeU1lbV9OZXcoUGFyZW50TG9jYXRvciwgSU5JVF9QQVJFTlRfU1RBQ0tfU0laRSk7CiAgICAgaWYgKGl0LT5wYXJlbnRfc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaXQtPnBhcmVudF9zdGFjay0+cGFyZW50ID0gTlVMTDsKLSAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCA9IDA7Ci0gICAgaXQtPnBhcmVudF9zdGFjay0+bmV4dCA9IE5VTEw7CisgICAgaXQtPnBhcmVudF9zdGFja191c2VkID0gMDsKKyAgICBpdC0+cGFyZW50X3N0YWNrX3NpemUgPSBJTklUX1BBUkVOVF9TVEFDS19TSVpFOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OwogfQpAQCAtMjMyNiw3ICsyMjkxLDcgQEAKICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5OwogCiAgICAgLyogZWxlbWVudCB0cmFjaW5nICovCi0gICAgUHlPYmplY3QgKmV2ZW50czsgLyogbGlzdCBvZiBldmVudHMsIG9yIE5VTEwgaWYgbm90IGNvbGxlY3RpbmcgKi8KKyAgICBQeU9iamVjdCAqZXZlbnRzX2FwcGVuZDsgLyogdGhlIGFwcGVuZCBtZXRob2Qgb2YgdGhlIGxpc3Qgb2YgZXZlbnRzLCBvciBOVUxMICovCiAgICAgUHlPYmplY3QgKnN0YXJ0X2V2ZW50X29iajsgLyogZXZlbnQgb2JqZWN0cyAoTlVMTCB0byBpZ25vcmUpICovCiAgICAgUHlPYmplY3QgKmVuZF9ldmVudF9vYmo7CiAgICAgUHlPYmplY3QgKnN0YXJ0X25zX2V2ZW50X29iajsKQEAgLTIzNjEsNyArMjMyNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgdC0+aW5kZXggPSAwOwogCi0gICAgICAgIHQtPmV2ZW50cyA9IE5VTEw7CisgICAgICAgIHQtPmV2ZW50c19hcHBlbmQgPSBOVUxMOwogICAgICAgICB0LT5zdGFydF9ldmVudF9vYmogPSB0LT5lbmRfZXZlbnRfb2JqID0gTlVMTDsKICAgICAgICAgdC0+c3RhcnRfbnNfZXZlbnRfb2JqID0gdC0+ZW5kX25zX2V2ZW50X29iaiA9IE5VTEw7CiAgICAgfQpAQCAtMjM4MCwxMyArMjM0NSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZWxlbWVudF9mYWN0b3J5KQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkxY2ZhNzU1ODk3MGVlOTYgaW5wdXQ9MWI0MjRlZWVmYzM1MjQ5Y10qLwogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAoZWxlbWVudF9mYWN0b3J5KSB7CiAgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50X2ZhY3RvcnkpOwotICAgICAgICB0bXAgPSBzZWxmLT5lbGVtZW50X2ZhY3Rvcnk7Ci0gICAgICAgIHNlbGYtPmVsZW1lbnRfZmFjdG9yeSA9IGVsZW1lbnRfZmFjdG9yeTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICBQeV9YU0VUUkVGKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgZWxlbWVudF9mYWN0b3J5KTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTI0MTEsNyArMjM3Miw3IEBACiAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhcnRfbnNfZXZlbnRfb2JqKTsKICAgICBQeV9DTEVBUihzZWxmLT5lbmRfZXZlbnRfb2JqKTsKICAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9ldmVudF9vYmopOwotICAgIFB5X0NMRUFSKHNlbGYtPmV2ZW50cyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZXZlbnRzX2FwcGVuZCk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+c3RhY2spOwogICAgIFB5X0NMRUFSKHNlbGYtPmRhdGEpOwogICAgIFB5X0NMRUFSKHNlbGYtPmxhc3QpOwpAQCAtMjQ5MiwxMyArMjQ1MywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpub2RlKQogewogICAgIGlmIChhY3Rpb24gIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIFB5T2JqZWN0ICpldmVudCA9IFB5VHVwbGVfUGFjaygyLCBhY3Rpb24sIG5vZGUpOworICAgICAgICBpZiAoZXZlbnQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzZWxmLT5ldmVudHNfYXBwZW5kLCBldmVudCwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihldmVudCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc2VsZi0+ZXZlbnRzLCByZXMpIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtMjUyNywxMCArMjQ4OSwxNyBAQAogICAgICAgICBzZWxmLT5kYXRhID0gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+ZWxlbWVudF9mYWN0b3J5ICYmIHNlbGYtPmVsZW1lbnRfZmFjdG9yeSAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoIXNlbGYtPmVsZW1lbnRfZmFjdG9yeSB8fCBzZWxmLT5lbGVtZW50X2ZhY3RvcnkgPT0gUHlfTm9uZSkgewogICAgICAgICBub2RlID0gY3JlYXRlX25ld19lbGVtZW50KHRhZywgYXR0cmliKTsKKyAgICB9IGVsc2UgaWYgKGF0dHJpYiA9PSBQeV9Ob25lKSB7CisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbm9kZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5lbGVtZW50X2ZhY3RvcnksICJPTyIsIHRhZywgYXR0cmliKTsKKyAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBub2RlID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHNlbGYtPmVsZW1lbnRfZmFjdG9yeSwgIk9PIiwgdGFnLCBhdHRyaWIpOwogICAgIH0KICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yOTg5LDEyICsyOTU4LDggQEAKICAgICAgICAgICAgIGF0dHJpYl9pbiArPSAyOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLyogUGFzcyBhbiBlbXB0eSBkaWN0aW9uYXJ5IG9uICovCi0gICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKCFhdHRyaWIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih0YWcpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKICAgICB9CiAKICAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CkBAIC0zMDAzLDYgKzI5NjgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZywgYXR0cmliKTsKICAgICB9CiAgICAgZWxzZSBpZiAoc2VsZi0+aGFuZGxlX3N0YXJ0KSB7CisgICAgICAgIGlmIChhdHRyaWIgPT0gUHlfTm9uZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYik7CisgICAgICAgICAgICBhdHRyaWIgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAoIWF0dHJpYikgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0YWcpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+aGFuZGxlX3N0YXJ0LCAiT08iLCB0YWcsIGF0dHJpYik7CiAgICAgfSBlbHNlCiAgICAgICAgIHJlcyA9IE5VTEw7CkBAIC0zMDc2LDcgKzMwNDksNyBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXRhcmdldC0+ZXZlbnRzIHx8ICF0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaikKKyAgICBpZiAoIXRhcmdldC0+ZXZlbnRzX2FwcGVuZCB8fCAhdGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmopCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghdXJpKQpAQCAtMzA5OSw3ICszMDcyLDcgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0YXJnZXQtPmV2ZW50cykKKyAgICBpZiAoIXRhcmdldC0+ZXZlbnRzX2FwcGVuZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdHJlZWJ1aWxkZXJfYXBwZW5kX2V2ZW50KHRhcmdldCwgdGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqLCBQeV9Ob25lKTsKQEAgLTM0MjYsNyArMzM5OSw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKHNlbGYtPmhhbmRsZV9jbG9zZSkgewogICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfY2xvc2UsICIiKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9Bcmcoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHJldHVybiByZXM7CkBAIC0zNTg4LDcgKzM1NjEsNyBAQAogLypbY2xpbmljIGlucHV0XQogX2VsZW1lbnR0cmVlLlhNTFBhcnNlci5fc2V0ZXZlbnRzCiAKLSAgICBldmVudHNfcXVldWU6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TGlzdF9UeXBlJykKKyAgICBldmVudHNfcXVldWU6IG9iamVjdAogICAgIGV2ZW50c190b19yZXBvcnQ6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTM1OTgsMTIgKzM1NzEsMTIgQEAKIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKFhNTFBhcnNlck9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpldmVudHNfcXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXZlbnRzX3RvX3JlcG9ydCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDQwMDkyOTIyYjEzZWQxIGlucHV0PTU5ZGI5NzQyOTEwYzYxNzRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDQwMDkyOTIyYjEzZWQxIGlucHV0PWFiZjkwODMwYTFjM2IwZmNdKi8KIHsKICAgICAvKiBhY3RpdmF0ZSBlbGVtZW50IGV2ZW50IHJlcG9ydGluZyAqLwogICAgIFB5X3NzaXplX3QgaTsKICAgICBUcmVlQnVpbGRlck9iamVjdCAqdGFyZ2V0OwotICAgIFB5T2JqZWN0ICpldmVudHNfc2VxOworICAgIFB5T2JqZWN0ICpldmVudHNfYXBwZW5kLCAqZXZlbnRzX3NlcTsKIAogICAgIGlmICghVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKQEAgLTM2MTYsOCArMzU4OSwxMCBAQAogCiAgICAgdGFyZ2V0ID0gKFRyZWVCdWlsZGVyT2JqZWN0Kikgc2VsZi0+dGFyZ2V0OwogCi0gICAgUHlfSU5DUkVGKGV2ZW50c19xdWV1ZSk7Ci0gICAgUHlfWFNFVFJFRih0YXJnZXQtPmV2ZW50cywgZXZlbnRzX3F1ZXVlKTsKKyAgICBldmVudHNfYXBwZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhldmVudHNfcXVldWUsICJhcHBlbmQiKTsKKyAgICBpZiAoZXZlbnRzX2FwcGVuZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9YU0VUUkVGKHRhcmdldC0+ZXZlbnRzX2FwcGVuZCwgZXZlbnRzX2FwcGVuZCk7CiAKICAgICAvKiBjbGVhciBvdXQgZXhpc3RpbmcgZXZlbnRzICovCiAgICAgUHlfQ0xFQVIodGFyZ2V0LT5zdGFydF9ldmVudF9vYmopOwpAQCAtMzcyNyw3ICszNzAyLDcgQEAKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSVEVYVF9NRVRIT0RERUYKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9JVEVSRklORF9NRVRIT0RERUYKIAotICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKKyAgICB7ImdldGl0ZXJhdG9yIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXIsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJfX2RvY19ffSwKICAgICBfRUxFTUVOVFRSRUVfRUxFTUVOVF9HRVRDSElMRFJFTl9NRVRIT0RERUYKIAogICAgIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0lURU1TX01FVEhPRERFRgpAQCAtMzc1MCw2ICszNzI1LDI2IEBACiAgICAgKG9iam9iamFyZ3Byb2MpIGVsZW1lbnRfYXNzX3N1YnNjciwKIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBlbGVtZW50X2dldHNldGxpc3RbXSA9IHsKKyAgICB7InRhZyIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF90YWdfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfdGFnX3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoYXQga2luZCBvZiBkYXRhIHRoaXMgZWxlbWVudCByZXByZXNlbnRzIn0sCisgICAgeyJ0ZXh0IiwKKyAgICAgICAgKGdldHRlcillbGVtZW50X3RleHRfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfdGV4dF9zZXR0ZXIsCisgICAgICAgICJBIHN0cmluZyBvZiB0ZXh0IGRpcmVjdGx5IGFmdGVyIHRoZSBzdGFydCB0YWcsIG9yIE5vbmUifSwKKyAgICB7InRhaWwiLAorICAgICAgICAoZ2V0dGVyKWVsZW1lbnRfdGFpbF9nZXR0ZXIsCisgICAgICAgIChzZXR0ZXIpZWxlbWVudF90YWlsX3NldHRlciwKKyAgICAgICAgIkEgc3RyaW5nIG9mIHRleHQgZGlyZWN0bHkgYWZ0ZXIgdGhlIGVuZCB0YWcsIG9yIE5vbmUifSwKKyAgICB7ImF0dHJpYiIsCisgICAgICAgIChnZXR0ZXIpZWxlbWVudF9hdHRyaWJfZ2V0dGVyLAorICAgICAgICAoc2V0dGVyKWVsZW1lbnRfYXR0cmliX3NldHRlciwKKyAgICAgICAgIkEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcyJ9LAorICAgIHtOVUxMfSwKK307CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudF9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudCIsIHNpemVvZihFbGVtZW50T2JqZWN0KSwgMCwKQEAgLTM3NjYsOCArMzc2MSw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KLSAgICAoZ2V0YXR0cm9mdW5jKWVsZW1lbnRfZ2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIChzZXRhdHRyb2Z1bmMpZWxlbWVudF9zZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KQEAgLTM3ODAsNyArMzc3NSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBlbGVtZW50X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGVsZW1lbnRfZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCmluZGV4IGQ3ODVjNDkuLmZhNWZhZDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCkBAIC0xMjgsNDQgKzEyOCw2MCBAQAogewogICAgIFB5T2JqZWN0ICpyZXQ7CiAgICAgUHlPYmplY3QgKmFyZ2FwcGwsICprd2FwcGw7CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOwogCiAgICAgYXNzZXJ0IChQeUNhbGxhYmxlX0NoZWNrKHB0by0+Zm4pKTsKICAgICBhc3NlcnQgKFB5VHVwbGVfQ2hlY2socHRvLT5hcmdzKSk7CiAgICAgYXNzZXJ0IChQeURpY3RfQ2hlY2socHRvLT5rdykpOwogCiAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUocHRvLT5hcmdzKSA9PSAwKSB7Ci0gICAgICAgIGFyZ2FwcGwgPSBhcmdzOwotICAgICAgICBQeV9JTkNSRUYoYXJncyk7Ci0gICAgfSBlbHNlIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDApIHsKLSAgICAgICAgYXJnYXBwbCA9IHB0by0+YXJnczsKLSAgICAgICAgUHlfSU5DUkVGKHB0by0+YXJncyk7Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgICAgICBhcmdhcHBsID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKSB7CisgICAgICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0ocHRvLT5hcmdzLCAwKTsKKyAgICAgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKHB0by0+YXJncyk7CisgICAgICAgIGFyZ2FwcGwgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSBOVUxMOwogICAgICAgICBhcmdhcHBsID0gUHlTZXF1ZW5jZV9Db25jYXQocHRvLT5hcmdzLCBhcmdzKTsKLSAgICAgICAgaWYgKGFyZ2FwcGwgPT0gTlVMTCkKKyAgICAgICAgaWYgKGFyZ2FwcGwgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKwogICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdhcHBsKSk7CiAgICAgfQogCiAgICAgaWYgKFB5RGljdF9TaXplKHB0by0+a3cpID09IDApIHsKICAgICAgICAga3dhcHBsID0ga3c7CiAgICAgICAgIFB5X1hJTkNSRUYoa3dhcHBsKTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAga3dhcHBsID0gUHlEaWN0X0NvcHkocHRvLT5rdyk7CiAgICAgICAgIGlmIChrd2FwcGwgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ2FwcGwpOworICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdhcHBsKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisKICAgICAgICAgaWYgKGt3ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeURpY3RfTWVyZ2Uoa3dhcHBsLCBrdywgMSkgIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ2FwcGwpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FwcGwpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0ID0gUHlPYmplY3RfQ2FsbChwdG8tPmZuLCBhcmdhcHBsLCBrd2FwcGwpOwotICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICBpZiAoc3RhY2spIHsKKyAgICAgICAgcmV0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChwdG8tPmZuLCBzdGFjaywgbmFyZ3MsIGt3YXBwbCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsKHB0by0+Zm4sIGFyZ2FwcGwsIGt3YXBwbCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdhcHBsKTsKKyAgICB9CiAgICAgUHlfWERFQ1JFRihrd2FwcGwpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC0yMTMsNyArMjI5LDcgQEAKICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgaWYgKHN0YXR1cyA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyguLi4pIiwgUHlfVFlQRShwdG8pLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIuLi4iKTsKICAgICB9CiAKICAgICBhcmdsaXN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwpAQCAtNDYxLDEyICs0NzcsMTIgQEAKIGtleW9iamVjdF9yaWNoY29tcGFyZShQeU9iamVjdCAqa28sIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgUHlPYmplY3QgKng7CiAgICAgUHlPYmplY3QgKnk7CiAgICAgUHlPYmplY3QgKmNvbXBhcmU7CiAgICAgUHlPYmplY3QgKmFuc3dlcjsKICAgICBzdGF0aWMgUHlPYmplY3QgKnplcm87CisgICAgUHlPYmplY3QqIHN0YWNrWzJdOwogCiAgICAgaWYgKHplcm8gPT0gTlVMTCkgewogICAgICAgICB6ZXJvID0gUHlMb25nX0Zyb21Mb25nKDApOwpAQCAtNDkwLDE3ICs1MDYsMTMgQEAKICAgICAvKiBDYWxsIHRoZSB1c2VyJ3MgY29tcGFyaXNvbiBmdW5jdGlvbiBhbmQgdHJhbnNsYXRlIHRoZSAzLXdheQogICAgICAqIHJlc3VsdCBpbnRvIHRydWUgb3IgZmFsc2UgKG9yIGVycm9yKS4KICAgICAgKi8KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBzdGFja1swXSA9IHg7CisgICAgc3RhY2tbMV0gPSB5OworICAgIHJlcyA9IF9QeU9iamVjdF9GYXN0Q2FsbChjb21wYXJlLCBzdGFjaywgMik7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRih4KTsKLSAgICBQeV9JTkNSRUYoeSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCB4KTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHkpOwotICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoY29tcGFyZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgYW5zd2VyID0gUHlPYmplY3RfUmljaENvbXBhcmUocmVzLCB6ZXJvLCBvcCk7CiAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIGFuc3dlcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2dkYm1tb2R1bGUuYyBiL01vZHVsZXMvX2dkYm1tb2R1bGUuYwppbmRleCBiODQwYmY1Li5kYWFlNzFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19nZGJtbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZ2RibW1vZHVsZS5jCkBAIC02MTQsNyArNjE0LDcgQEAKICAgICByZXR1cm4gbmV3ZGJtb2JqZWN0KG5hbWUsIGlmbGFncywgbW9kZSk7CiB9CiAKLXN0YXRpYyBjaGFyIGRibW1vZHVsZV9vcGVuX2ZsYWdzW10gPSAicndjbiIKK3N0YXRpYyBjb25zdCBjaGFyIGRibW1vZHVsZV9vcGVuX2ZsYWdzW10gPSAicndjbiIKICNpZmRlZiBHREJNX0ZBU1QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZiIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKaW5kZXggZmY1NzYxNC4uZGFhNGYzZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYworKysgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCkBAIC0yNSw2ICsyNSwxMiBAQAogI2luY2x1ZGUgPG9wZW5zc2wvb2JqZWN0cy5oPgogI2luY2x1ZGUgIm9wZW5zc2wvZXJyLmgiCiAKKyNpbmNsdWRlICJjbGluaWMvX2hhc2hvcGVuc3NsLmMuaCIKKy8qW2NsaW5pYyBpbnB1dF0KK21vZHVsZSBfaGFzaGxpYgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YzJiNGZmMDgxYmFjNGJlMV0qLworCiAjZGVmaW5lIE1VTkNIX1NJWkUgSU5UX01BWAogCiAjaWZuZGVmIEhBU0hfT0JKX0NPTlNUUlVDVE9SCkBAIC03MTMsNiArNzE5LDEyOCBAQAogCiAjZW5kaWYKIAorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPiAweDEwMTAwMDAwTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NDUllQVCkgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCisjZGVmaW5lIFBZX1NDUllQVCAxCisKKy8qW2NsaW5pYyBpbnB1dF0KK19oYXNobGliLnNjcnlwdAorCisgICAgcGFzc3dvcmQ6IFB5X2J1ZmZlcgorICAgICoKKyAgICBzYWx0OiBQeV9idWZmZXIgPSBOb25lCisgICAgbiBhcyBuX29iajogb2JqZWN0KHN1YmNsYXNzX29mPScmUHlMb25nX1R5cGUnKSA9IE5vbmUKKyAgICByIGFzIHJfb2JqOiBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeUxvbmdfVHlwZScpID0gTm9uZQorICAgIHAgYXMgcF9vYmo6IG9iamVjdChzdWJjbGFzc19vZj0nJlB5TG9uZ19UeXBlJykgPSBOb25lCisgICAgbWF4bWVtOiBsb25nID0gMAorICAgIGRrbGVuOiBsb25nID0gNjQKKworCitzY3J5cHQgcGFzc3dvcmQtYmFzZWQga2V5IGRlcml2YXRpb24gZnVuY3Rpb24uCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaGFzaGxpYl9zY3J5cHRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKnBhc3N3b3JkLCBQeV9idWZmZXIgKnNhbHQsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbl9vYmosIFB5T2JqZWN0ICpyX29iaiwgUHlPYmplY3QgKnBfb2JqLAorICAgICAgICAgICAgICAgICAgICAgbG9uZyBtYXhtZW0sIGxvbmcgZGtsZW4pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTQ4NDllMmFhMmI3YjQ2YyBpbnB1dD00OGE3ZDYzYmYzZjc1YzQyXSovCit7CisgICAgUHlPYmplY3QgKmtleV9vYmogPSBOVUxMOworICAgIGNoYXIgKmtleTsKKyAgICBpbnQgcmV0dmFsOworICAgIHVuc2lnbmVkIGxvbmcgbiwgciwgcDsKKworICAgIGlmIChwYXNzd29yZC0+bGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBpcyB0b28gbG9uZy4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHNhbHQtPmJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2FsdCBpcyByZXF1aXJlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNhbHQtPmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2FsdCBpcyB0b28gbG9uZy4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbiA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhuX29iaik7CisgICAgaWYgKG4gPT0gKHVuc2lnbmVkIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJuIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGFuIHVuc2lnbmVkIGludCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG4gPCAyIHx8IG4gJiAobiAtIDEpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIm4gbXVzdCBiZSBhIHBvd2VyIG9mIDIuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHIgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcocl9vYmopOworICAgIGlmIChyID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gdW5zaWduZWQgaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHAgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcocF9vYmopOworICAgIGlmIChwID09ICh1bnNpZ25lZCBsb25nKSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInAgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYW4gdW5zaWduZWQgaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChtYXhtZW0gPCAwIHx8IG1heG1lbSA+IElOVF9NQVgpIHsKKyAgICAgICAgLyogT3BlblNTTCAxLjEuMCByZXN0cmljdHMgbWF4bWVtIHRvIDMyTUIuIEl0IG1heSBjaGFuZ2UgaW4gdGhlCisgICAgICAgICAgIGZ1dHVyZS4gVGhlIG1heG1lbSBjb25zdGFudCBpcyBwcml2YXRlIHRvIE9wZW5TU0wuICovCisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm1heG1lbSBtdXN0IGJlIHBvc2l0aXZlIGFuZCBzbWFsbGVyIHRoYW4gJWQiLAorICAgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZGtsZW4gPCAxIHx8IGRrbGVuID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgImRrbGVuIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAgYW5kIHNtYWxsZXIgdGhhbiAlZCIsCisgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBsZXQgT3BlblNTTCB2YWxpZGF0ZSB0aGUgcmVzdCAqLworICAgIHJldHZhbCA9IEVWUF9QQkVfc2NyeXB0KE5VTEwsIDAsIE5VTEwsIDAsIG4sIHIsIHAsIG1heG1lbSwgTlVMTCwgMCk7CisgICAgaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgLyogc29ycnksIGNhbid0IGRvIG11Y2ggYmV0dGVyICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgcGFyYW1lbXRlciBjb21iaW5hdGlvbiBmb3IgbiwgciwgcCwgbWF4bWVtLiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgIH0KKworICAgIGtleV9vYmogPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGRrbGVuKTsKKyAgICBpZiAoa2V5X29iaiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrZXkgPSBQeUJ5dGVzX0FTX1NUUklORyhrZXlfb2JqKTsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXR2YWwgPSBFVlBfUEJFX3NjcnlwdCgKKyAgICAgICAgKGNvbnN0IGNoYXIqKXBhc3N3b3JkLT5idWYsIChzaXplX3QpcGFzc3dvcmQtPmxlbiwKKyAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzYWx0LT5idWYsIChzaXplX3Qpc2FsdC0+bGVuLAorICAgICAgICBuLCByLCBwLCBtYXhtZW0sCisgICAgICAgICh1bnNpZ25lZCBjaGFyICopa2V5LCAoc2l6ZV90KWRrbGVuCisgICAgKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXR2YWwpIHsKKyAgICAgICAgUHlfQ0xFQVIoa2V5X29iaik7CisgICAgICAgIF9zZXRFeGNlcHRpb24oUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4ga2V5X29iajsKK30KKyNlbmRpZgorCiAvKiBTdGF0ZSBmb3Igb3VyIGNhbGxiYWNrIGZ1bmN0aW9uIHNvIHRoYXQgaXQgY2FuIGFjY3VtdWxhdGUgYSByZXN1bHQuICovCiB0eXBlZGVmIHN0cnVjdCBfaW50ZXJuYWxfbmFtZV9tYXBwZXJfc3RhdGUgewogICAgIFB5T2JqZWN0ICpzZXQ7CkBAIC04MzYsNiArOTY0LDcgQEAKICAgICB7InBia2RmMl9obWFjIiwgKFB5Q0Z1bmN0aW9uKXBia2RmMl9obWFjLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgcGJrZGYyX2htYWNfX2RvY19ffSwKICNlbmRpZgorICAgIF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYKICAgICBDT05TVFJVQ1RPUl9NRVRIX0RFRihtZDUpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTEpLAogICAgIENPTlNUUlVDVE9SX01FVEhfREVGKHNoYTIyNCksCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jIGIvTW9kdWxlcy9faGVhcHFtb2R1bGUuYwppbmRleCAxMzZhYmY1Li5iNDk5ZTFmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19oZWFwcW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2hlYXBxbW9kdWxlLmMKQEAgLTY2LDcgKzY2LDcgQEAKIAogICAgIC8qIEJ1YmJsZSB1cCB0aGUgc21hbGxlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4gKi8KICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwotICAgIGxpbWl0ID0gZW5kcG9zIC8gMjsgICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCisgICAgbGltaXQgPSBlbmRwb3MgPj4gMTsgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwpAQCAtNzgsNiArNzgsNyBAQAogICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgY2hpbGRwb3MgKz0gKCh1bnNpZ25lZCljbXAgXiAxKTsgICAvKiBpbmNyZW1lbnQgd2hlbiBjbXA9PTAgKi8KKyAgICAgICAgICAgIGFyciA9IF9QeUxpc3RfSVRFTVMoaGVhcCk7ICAgICAgICAgLyogYXJyIG1heSBoYXZlIGNoYW5nZWQgKi8KICAgICAgICAgICAgIGlmIChlbmRwb3MgIT0gUHlMaXN0X0dFVF9TSVpFKGhlYXApKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpc3QgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKQEAgLTg1LDcgKzg2LDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvKiBNb3ZlIHRoZSBzbWFsbGVyIGNoaWxkIHVwLiAqLwotICAgICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwogICAgICAgICB0bXAxID0gYXJyW2NoaWxkcG9zXTsKICAgICAgICAgdG1wMiA9IGFycltwb3NdOwogICAgICAgICBhcnJbY2hpbGRwb3NdID0gdG1wMjsKQEAgLTM0Nyw3ICszNDcsNyBAQAogICAgICAgIG4gaXMgb2RkID0gMipqKzEsIHRoaXMgaXMgKDIqaisxLTEpLzIgPSBqIHNvIGotMSBpcyB0aGUgbGFyZ2VzdCwKICAgICAgICBhbmQgdGhhdCdzIGFnYWluIG4vLzItMS4KICAgICAqLwotICAgIGZvciAoaSA9IG4vMiAtIDEgOyBpID49IDAgOyBpLS0pCisgICAgZm9yIChpID0gKG4gPj4gMSkgLSAxIDsgaSA+PSAwIDsgaS0tKQogICAgICAgICBpZiAoc2lmdHVwX2Z1bmMoKFB5TGlzdE9iamVjdCAqKWhlYXAsIGkpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC00MjAsNyArNDIwLDcgQEAKIAogICAgIC8qIEJ1YmJsZSB1cCB0aGUgc21hbGxlciBjaGlsZCB1bnRpbCBoaXR0aW5nIGEgbGVhZi4gKi8KICAgICBhcnIgPSBfUHlMaXN0X0lURU1TKGhlYXApOwotICAgIGxpbWl0ID0gZW5kcG9zIC8gMjsgICAgICAgICAgLyogc21hbGxlc3QgcG9zIHRoYXQgaGFzIG5vIGNoaWxkICovCisgICAgbGltaXQgPSBlbmRwb3MgPj4gMTsgICAgICAgICAvKiBzbWFsbGVzdCBwb3MgdGhhdCBoYXMgbm8gY2hpbGQgKi8KICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKICAgICAgICAgLyogU2V0IGNoaWxkcG9zIHRvIGluZGV4IG9mIHNtYWxsZXIgY2hpbGQuICAgKi8KICAgICAgICAgY2hpbGRwb3MgPSAyKnBvcyArIDE7ICAgIC8qIGxlZnRtb3N0IGNoaWxkIHBvc2l0aW9uICAqLwpAQCAtNDMyLDYgKzQzMiw3IEBACiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBjaGlsZHBvcyArPSAoKHVuc2lnbmVkKWNtcCBeIDEpOyAgIC8qIGluY3JlbWVudCB3aGVuIGNtcD09MCAqLworICAgICAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsgICAgICAgICAvKiBhcnIgbWF5IGhhdmUgY2hhbmdlZCAqLwogICAgICAgICAgICAgaWYgKGVuZHBvcyAhPSBQeUxpc3RfR0VUX1NJWkUoaGVhcCkpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGlzdCBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwpAQCAtNDM5LDcgKzQ0MCw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgLyogTW92ZSB0aGUgc21hbGxlciBjaGlsZCB1cC4gKi8KLSAgICAgICAgYXJyID0gX1B5TGlzdF9JVEVNUyhoZWFwKTsKICAgICAgICAgdG1wMSA9IGFycltjaGlsZHBvc107CiAgICAgICAgIHRtcDIgPSBhcnJbcG9zXTsKICAgICAgICAgYXJyW2NoaWxkcG9zXSA9IHRtcDI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCmluZGV4IDY1Yzk1NWEuLjYwZjhiNTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCkBAIC0yMCw2ICsyMCw5IEBACiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZiAvKiBIQVZFX1NZU19TVEFUX0ggKi8KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDxjb25zb2xlYXBpLmg+CisjZW5kaWYKIAogLyogVmFyaW91cyBpbnRlcm5lZCBzdHJpbmdzICovCiAKQEAgLTUyLDcgKzU1LDYgQEAKIFB5T2JqZWN0ICpfUHlJT19lbXB0eV9ieXRlczsKIFB5T2JqZWN0ICpfUHlJT196ZXJvOwogCi0MCiBQeURvY19TVFJWQVIobW9kdWxlX2RvYywKICJUaGUgaW8gbW9kdWxlIHByb3ZpZGVzIHRoZSBQeXRob24gaW50ZXJmYWNlcyB0byBzdHJlYW0gaGFuZGxpbmcuIFRoZVxuIgogImJ1aWx0aW4gb3BlbiBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlLlxuIgpAQCAtMjM4LDIwICsyNDAsMzMgQEAKICAgICBpbnQgdGV4dCA9IDAsIGJpbmFyeSA9IDAsIHVuaXZlcnNhbCA9IDA7CiAKICAgICBjaGFyIHJhd21vZGVbNl0sICptOwotICAgIGludCBsaW5lX2J1ZmZlcmluZywgaXNhdHR5OworICAgIGludCBsaW5lX2J1ZmZlcmluZywgaXNfbnVtYmVyOworICAgIGxvbmcgaXNhdHR5OwogCi0gICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyLCAqd3JhcHBlciwgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJhdywgKm1vZGVvYmogPSBOVUxMLCAqYnVmZmVyLCAqd3JhcHBlciwgKnJlc3VsdCA9IE5VTEwsICpwYXRoX29yX2ZkID0gTlVMTDsKIAogICAgIF9QeV9JREVOVElGSUVSKF9ibGtzaXplKTsKICAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOwogICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOwogICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIAotICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGZpbGUpICYmCi0JIVB5Qnl0ZXNfQ2hlY2soZmlsZSkgJiYKLQkhUHlOdW1iZXJfQ2hlY2soZmlsZSkpIHsKKyAgICBpc19udW1iZXIgPSBQeU51bWJlcl9DaGVjayhmaWxlKTsKKworICAgIGlmIChpc19udW1iZXIpIHsKKyAgICAgICAgcGF0aF9vcl9mZCA9IGZpbGU7CisgICAgICAgIFB5X0lOQ1JFRihwYXRoX29yX2ZkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwYXRoX29yX2ZkID0gUHlPU19GU1BhdGgoZmlsZSk7CisgICAgICAgIGlmIChwYXRoX29yX2ZkID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFpc19udW1iZXIgJiYKKyAgICAgICAgIVB5VW5pY29kZV9DaGVjayhwYXRoX29yX2ZkKSAmJgorICAgICAgICAhUHlCeXRlc19DaGVjayhwYXRoX29yX2ZkKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBmaWxlOiAlUiIsIGZpbGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICAvKiBEZWNvZGUgbW9kZSAqLwpAQCAtMjkyLDcgKzMwNyw3IEBACiAgICAgICAgIGlmIChzdHJjaHIobW9kZStpKzEsIGMpKSB7CiAgICAgICAgICAgaW52YWxpZF9tb2RlOgogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIG1vZGU6ICclcyciLCBtb2RlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogCiAgICAgfQpAQCAtMzA3LDU0ICszMjIsNjcgQEAKIAogICAgIC8qIFBhcmFtZXRlcnMgdmFsaWRhdGlvbiAqLwogICAgIGlmICh1bml2ZXJzYWwpIHsKLSAgICAgICAgaWYgKHdyaXRpbmcgfHwgYXBwZW5kaW5nKSB7CisgICAgICAgIGlmIChjcmVhdGluZyB8fCB3cml0aW5nIHx8IGFwcGVuZGluZyB8fCB1cGRhdGluZykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBVIGFuZCB3cml0aW5nIG1vZGUgYXQgb25jZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZGUgVSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB4JywgJ3cnLCAnYScsIG9yICcrJyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAiJ1UnIG1vZGUgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgcmVhZGluZyA9IDE7CiAgICAgfQogCiAgICAgaWYgKHRleHQgJiYgYmluYXJ5KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGhhdmUgdGV4dCBhbmQgYmluYXJ5IG1vZGUgYXQgb25jZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICBpZiAoY3JlYXRpbmcgKyByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCBtb2RlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChiaW5hcnkgJiYgZW5jb2RpbmcgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZW5jb2RpbmcgYXJndW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgaWYgKGJpbmFyeSAmJiBlcnJvcnMgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5hcnkgbW9kZSBkb2Vzbid0IHRha2UgYW4gZXJyb3JzIGFyZ3VtZW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIGlmIChiaW5hcnkgJiYgbmV3bGluZSAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhIG5ld2xpbmUgYXJndW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCiAgICAgLyogQ3JlYXRlIHRoZSBSYXcgZmlsZSBzdHJlYW0gKi8KLSAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5RmlsZUlPX1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc2lPIiwgZmlsZSwgcmF3bW9kZSwgY2xvc2VmZCwgb3BlbmVyKTsKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICpSYXdJT19jbGFzcyA9IChQeU9iamVjdCAqKSZQeUZpbGVJT19UeXBlOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKCFQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnICYmIF9QeUlPX2dldF9jb25zb2xlX3R5cGUocGF0aF9vcl9mZCkgIT0gJ1wwJykgeworICAgICAgICAgICAgUmF3SU9fY2xhc3MgPSAoUHlPYmplY3QgKikmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCI7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByYXcgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUmF3SU9fY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3NpTyIsIHBhdGhfb3JfZmQsIHJhd21vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisgICAgfQorCiAgICAgaWYgKHJhdyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICByZXN1bHQgPSByYXc7CiAKKyAgICBQeV9ERUNSRUYocGF0aF9vcl9mZCk7CisgICAgcGF0aF9vcl9mZCA9IE5VTEw7CisKICAgICBtb2Rlb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobW9kZSk7CiAgICAgaWYgKG1vZGVvYmogPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQzNywxMCArNDY1LDEwIEBACiAKICAgICAvKiB3cmFwcyBpbnRvIGEgVGV4dElPV3JhcHBlciAqLwogICAgIHdyYXBwZXIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJlB5VGV4dElPV3JhcHBlcl9UeXBlLAotCQkJCSAgICAiT3Nzc2kiLAotCQkJCSAgICBidWZmZXIsCi0JCQkJICAgIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsCi0JCQkJICAgIGxpbmVfYnVmZmVyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPc3NzaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9idWZmZXJpbmcpOwogICAgIGlmICh3cmFwcGVyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgcmVzdWx0ID0gd3JhcHBlcjsKQEAgLTQ2MCw2ICs0ODgsNyBAQAogICAgICAgICBQeV9YREVDUkVGKGNsb3NlX3Jlc3VsdCk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgIH0KKyAgICBQeV9YREVDUkVGKHBhdGhfb3JfZmQpOwogICAgIFB5X1hERUNSRUYobW9kZW9iaik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC02OTEsNiArNzIwLDEyIEBACiAgICAgUHlTdHJpbmdJT19UeXBlLnRwX2Jhc2UgPSAmUHlUZXh0SU9CYXNlX1R5cGU7CiAgICAgQUREX1RZUEUoJlB5U3RyaW5nSU9fVHlwZSwgIlN0cmluZ0lPIik7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogV2luZG93c0NvbnNvbGVJTyAqLworICAgIFB5V2luZG93c0NvbnNvbGVJT19UeXBlLnRwX2Jhc2UgPSAmUHlSYXdJT0Jhc2VfVHlwZTsKKyAgICBBRERfVFlQRSgmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUsICJfV2luZG93c0NvbnNvbGVJTyIpOworI2VuZGlmCisKICAgICAvKiBCdWZmZXJlZFJlYWRlciAqLwogICAgIFB5QnVmZmVyZWRSZWFkZXJfVHlwZS50cF9iYXNlID0gJlB5QnVmZmVyZWRJT0Jhc2VfVHlwZTsKICAgICBBRERfVFlQRSgmUHlCdWZmZXJlZFJlYWRlcl9UeXBlLCAiQnVmZmVyZWRSZWFkZXIiKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKaW5kZXggMGM2ZWFlMi4uZGFhZWJkMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKQEAgLTE5LDYgKzE5LDEzIEBACiBleHRlcm4gUHlUeXBlT2JqZWN0IFB5VGV4dElPV3JhcHBlcl9UeXBlOwogZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorI2lmZGVmIE1TX1dJTkRPV1MKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKyNkZWZpbmUgUHlXaW5kb3dzQ29uc29sZUlPX0NoZWNrKG9wKSAoUHlPYmplY3RfVHlwZUNoZWNrKChvcCksIChQeVR5cGVPYmplY3QqKV9QeVdpbmRvd3NDb25zb2xlSU9fVHlwZSkpCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIGV4dGVybiBpbnQgX1B5SU9fQ29udmVydFNzaXplX3QoUHlPYmplY3QgKiwgdm9pZCAqKTsKIApAQCAtNjAsNyArNjcsNyBAQAogICAgKiBPdGhlcndpc2UsIHRoZSBsaW5lIGVuZGluZyBpcyBzcGVjaWZpZWQgYnkgcmVhZG5sLCBhIHN0ciBvYmplY3QgKi8KIGV4dGVybiBQeV9zc2l6ZV90IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgaW50IHRyYW5zbGF0ZWQsIGludCB1bml2ZXJzYWwsIFB5T2JqZWN0ICpyZWFkbmwsCi0gICAgaW50IGtpbmQsIGNoYXIgKnN0YXJ0LCBjaGFyICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKTsKKyAgICBpbnQga2luZCwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOwogCiAvKiBSZXR1cm4gMSBpZiBhbiBFbnZpcm9ubWVudEVycm9yIHdpdGggZXJybm8gPT0gRUlOVFIgaXMgc2V0IChhbmQgdGhlbgogICAgY2xlYXJzIHRoZSBlcnJvciBpbmRpY2F0b3IpLCAwIG90aGVyd2lzZS4KQEAgLTg1LDEyICs5MiwxMiBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogLyogV2luZG93cyB1c2VzIGxvbmcgbG9uZyBmb3Igb2Zmc2V0cyAqLwotdHlwZWRlZiBQWV9MT05HX0xPTkcgUHlfb2ZmX3Q7Cit0eXBlZGVmIGxvbmcgbG9uZyBQeV9vZmZfdDsKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nTG9uZwogIyBkZWZpbmUgUHlMb25nX0Zyb21PZmZfdCAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBQWV9MTE9OR19NQVgKLSMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBQWV9MTE9OR19NSU4KLSMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQWV9MT05HX0xPTkcgLyogdHlwZSBjb21wYXRpYmxlIHdpdGggb2ZmX3QgKi8KKyMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBMTE9OR19NQVgKKyMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBMTE9OR19NSU4KKyMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBsb25nIGxvbmcgICAgLyogdHlwZSBjb21wYXRpYmxlIHdpdGggb2ZmX3QgKi8KICMgZGVmaW5lIFBZX1BSSWRPRkYgICAgICAgICAibGxkIiAgICAgICAgLyogZm9ybWF0IHRvIHVzZSBmb3IgdGhhdCB0eXBlICovCiAKICNlbHNlCkBAIC0xMDQsMTIgKzExMSwxMiBAQAogIyBkZWZpbmUgUFlfT0ZGX1RfTUlOICAgICAgIFBZX1NTSVpFX1RfTUlOCiAjIGRlZmluZSBQWV9PRkZfVF9DT01QQVQgICAgUHlfc3NpemVfdAogIyBkZWZpbmUgUFlfUFJJZE9GRiAgICAgICAgICJ6ZCIKLSNlbGlmIChIQVZFX0xPTkdfTE9ORyAmJiBTSVpFT0ZfT0ZGX1QgPT0gU0laRU9GX0xPTkdfTE9ORykKKyNlbGlmIChTSVpFT0ZfT0ZGX1QgPT0gU0laRU9GX0xPTkdfTE9ORykKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nTG9uZwogIyBkZWZpbmUgUHlMb25nX0Zyb21PZmZfdCAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBQWV9MTE9OR19NQVgKLSMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBQWV9MTE9OR19NSU4KLSMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBQWV9MT05HX0xPTkcKKyMgZGVmaW5lIFBZX09GRl9UX01BWCAgICAgICBMTE9OR19NQVgKKyMgZGVmaW5lIFBZX09GRl9UX01JTiAgICAgICBMTE9OR19NSU4KKyMgZGVmaW5lIFBZX09GRl9UX0NPTVBBVCAgICBsb25nIGxvbmcKICMgZGVmaW5lIFBZX1BSSWRPRkYgICAgICAgICAibGxkIgogI2VsaWYgKFNJWkVPRl9PRkZfVCA9PSBTSVpFT0ZfTE9ORykKICMgZGVmaW5lIFB5TG9uZ19Bc09mZl90ICAgICBQeUxvbmdfQXNMb25nCkBAIC0xNDUsNiArMTUyLDEwIEBACiBleHRlcm4gX1B5SU9fU3RhdGUgKl9QeUlPX2dldF9tb2R1bGVfc3RhdGUodm9pZCk7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX2dldF9sb2NhbGVfbW9kdWxlKF9QeUlPX1N0YXRlICopOwogCisjaWZkZWYgTVNfV0lORE9XUworZXh0ZXJuIGNoYXIgX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShQeU9iamVjdCAqKTsKKyNlbmRpZgorCiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9jbG9zZTsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2Nsb3NlZDsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX2RlY29kZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwppbmRleCA2ZDY3NzUxLi5jYmU3NDI1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKKysrIGIvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCkBAIC02NTksNyArNjU5LDcgQEAKIAogLyogU2V0cyB0aGUgY3VycmVudCBlcnJvciB0byBCbG9ja2luZ0lPRXJyb3IgKi8KIHN0YXRpYyB2b2lkCi1fc2V0X0Jsb2NraW5nSU9FcnJvcihjaGFyICptc2csIFB5X3NzaXplX3Qgd3JpdHRlbikKK19zZXRfQmxvY2tpbmdJT0Vycm9yKGNvbnN0IGNoYXIgKm1zZywgUHlfc3NpemVfdCB3cml0dGVuKQogewogICAgIFB5T2JqZWN0ICplcnI7CiAgICAgUHlFcnJfQ2xlYXIoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwppbmRleCA5ZTVkNzhiLi5hMWJhMTIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMKKysrIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCkBAIC04Nyw3ICs4Nyw3IEBACiBzdGF0aWMgaW50CiB1bnNoYXJlX2J1ZmZlcihieXRlc2lvICpzZWxmLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqbmV3X2J1ZiwgKm9sZF9idWY7CisgICAgUHlPYmplY3QgKm5ld19idWY7CiAgICAgYXNzZXJ0KFNIQVJFRF9CVUYoc2VsZikpOwogICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOwogICAgIGFzc2VydChzaXplID49IChzaXplX3Qpc2VsZi0+c3RyaW5nX3NpemUpOwpAQCAtOTYsOSArOTYsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19idWYpLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5idWYpLAogICAgICAgICAgICBzZWxmLT5zdHJpbmdfc2l6ZSk7Ci0gICAgb2xkX2J1ZiA9IHNlbGYtPmJ1ZjsKLSAgICBzZWxmLT5idWYgPSBuZXdfYnVmOwotICAgIFB5X0RFQ1JFRihvbGRfYnVmKTsKKyAgICBQeV9TRVRSRUYoc2VsZi0+YnVmLCBuZXdfYnVmKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL19pb21vZHVsZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaAppbmRleCA2Yzg4ZTMyLi5mMmU5MWE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvX2lvbW9kdWxlLmMuaApAQCAtMTI3LDcgKzEyNyw3IEBACiAib3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuIik7CiAKICNkZWZpbmUgX0lPX09QRU5fTUVUSE9EREVGICAgIFwKLSAgICB7Im9wZW4iLCAoUHlDRnVuY3Rpb24pX2lvX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfaW9fb3Blbl9fZG9jX199LAorICAgIHsib3BlbiIsIChQeUNGdW5jdGlvbilfaW9fb3BlbiwgTUVUSF9GQVNUQ0FMTCwgX2lvX29wZW5fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9pb19vcGVuX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGNvbnN0IGNoYXIgKm1vZGUsCkBAIC0xMzUsMTAgKzEzNSwxMSBAQAogICAgICAgICAgICAgICBjb25zdCBjaGFyICpuZXdsaW5lLCBpbnQgY2xvc2VmZCwgUHlPYmplY3QgKm9wZW5lcik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1faW9fb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19pb19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwgImVuY29kaW5nIiwgImVycm9ycyIsICJuZXdsaW5lIiwgImNsb3NlZmQiLCAib3BlbmVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJtb2RlIiwgImJ1ZmZlcmluZyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2l6enppTzpvcGVuIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBjb25zdCBjaGFyICptb2RlID0gInIiOwogICAgIGludCBidWZmZXJpbmcgPSAtMTsKQEAgLTE0OCwxMiArMTQ5LDEzIEBACiAgICAgaW50IGNsb3NlZmQgPSAxOwogICAgIFB5T2JqZWN0ICpvcGVuZXIgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xzaXp6emlPOm9wZW4iLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmbW9kZSwgJmJ1ZmZlcmluZywgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJm1vZGUsICZidWZmZXJpbmcsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZjbG9zZWZkLCAmb3BlbmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19vcGVuX2ltcGwobW9kdWxlLCBmaWxlLCBtb2RlLCBidWZmZXJpbmcsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUsIGNsb3NlZmQsIG9wZW5lcik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYzJjMDAzY2I3ZGFlYWZlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNWI4ZmM4YjgzMTAyYmJmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9idWZmZXJlZGlvLmMuaAppbmRleCA0MzdlMjc1Li41ODE0NGE0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvYnVmZmVyZWRpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J1ZmZlcmVkaW8uYy5oCkBAIC0xOSwxNCArMTksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRJT0Jhc2VfcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQ4LDE0ICs1MCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8xIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkSU9CYXNlX3JlYWRpbnRvMV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtOTksOCArMTAzLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpemUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwZWVrIiwKLSAgICAgICAgJnNpemUpKQorICAgICAgICAmc2l6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3BlZWtfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTEyNSw4ICsxMzAsOSBAQAogICAgIFB5X3NzaXplX3QgbiA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCi0gICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTE1MCw4ICsxNTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjpyZWFkMSIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIm46cmVhZDEiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0J1ZmZlcmVkX3JlYWQxX2ltcGwoc2VsZiwgbik7CiAKIGV4aXQ6CkBAIC0xNzUsMTQgKzE4MiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjA0LDE0ICsyMTMsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50bzEiLCAmYnVmZmVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvMSIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkaW50bzFfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTIzNCw4ICsyNDUsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKQorICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9yZWFkbGluZV9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjYxLDggKzI3Myw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJnRhcmdldG9iaiwgJndoZW5jZSkpCisgICAgICAgICZ0YXJnZXRvYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19CdWZmZXJlZF9zZWVrX2ltcGwoc2VsZiwgdGFyZ2V0b2JqLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMjg4LDggKzMwMSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3MpKQorICAgICAgICAmcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fQnVmZmVyZWRfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOwogCiBleGl0OgpAQCAtMzEwLDEzICszMjQsMTUgQEAKIF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkUmVhZGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFJlYWRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtMzQxLDEzICszNTcsMTUgQEAKIF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmF3OwogICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xuOkJ1ZmZlcmVkV3JpdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl9fX2luaXRfX19pbXBsKChidWZmZXJlZCAqKXNlbGYsIHJhdywgYnVmZmVyX3NpemUpOwogCiBleGl0OgpAQCAtMzcxLDE0ICszODksMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYnVmZmVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CdWZmZXJlZFdyaXRlcl93cml0ZV9pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDEwLDExICs0MzAsMTMgQEAKICAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplID0gREVGQVVMVF9CVUZGRVJfU0laRTsKIAogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmUHlCdWZmZXJlZFJXUGFpcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIkJ1ZmZlcmVkUldQYWlyIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCdWZmZXJlZFJXUGFpciIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLAotICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKQorICAgICAgICAmcmVhZGVyLCAmd3JpdGVyLCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUldQYWlyX19faW5pdF9fX2ltcGwoKHJ3cGFpciAqKXNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CkBAIC00MzksMTYgKzQ2MSwxOCBAQAogX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyYXciLCAiYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpyYXc7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfG46QnVmZmVyZWRSYW5kb20iLCBfa2V5d29yZHMsCi0gICAgICAgICZyYXcsICZidWZmZXJfc2l6ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmcmF3LCAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J1ZmZlcmVkUmFuZG9tX19faW5pdF9fX2ltcGwoKGJ1ZmZlcmVkICopc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yYmJiNWUyMzliNGZmZTZmIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hOTU2ZjM5NGVjZGU0Y2Y5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9ieXRlc2lvLmMuaAppbmRleCA1ZjJhYmIwLi5jNjRjZTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvYnl0ZXNpby5jLmgKKysrIGIvTW9kdWxlcy9faW8vY2xpbmljL2J5dGVzaW8uYy5oCkBAIC0xNzEsOCArMTcxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTIxNSw4ICsyMTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZGxpbmUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yNDcsOCArMjQ5LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX3JlYWRsaW5lc19pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0yNzYsMTQgKzI3OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0J5dGVzSU9fcmVhZGludG9faW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTMxMSw4ICszMTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidHJ1bmNhdGUiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT190cnVuY2F0ZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0zNDUsOCArMzUxLDkgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxpOnNlZWsiLAotICAgICAgICAmcG9zLCAmd2hlbmNlKSkKKyAgICAgICAgJnBvcywgJndoZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fQnl0ZXNJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtNDA4LDE1ICs0MTUsMTcgQEAKIF9pb19CeXRlc0lPX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbml0aWFsX2J5dGVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF9ieXRlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOkJ5dGVzSU8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICppbml0dmFsdWUgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Qnl0ZXNJTyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmluaXR2YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmaW5pdHZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19CeXRlc0lPX19faW5pdF9fX2ltcGwoKGJ5dGVzaW8gKilzZWxmLCBpbml0dmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjBjZTJjNjI3MjcxODQzMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM4MmU4ZWI1NzhlZWE2NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvZmlsZWlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCmluZGV4IDEwNDIwMDguLjkwOGZlMGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9maWxlaW8uYy5oCkBAIC00OSwxNSArNDksMTcgQEAKIF9pb19GaWxlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98c2lPOkZpbGVJTyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm5hbWVvYmo7CiAgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKICAgICBpbnQgY2xvc2VmZCA9IDE7CiAgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNpTzpGaWxlSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwgJm9wZW5lcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fRmlsZUlPX19faW5pdF9fX2ltcGwoKGZpbGVpbyAqKXNlbGYsIG5hbWVvYmosIG1vZGUsIGNsb3NlZmQsIG9wZW5lcik7CiAKIGV4aXQ6CkBAIC0xNTQsMTQgKzE1NiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIncqOnJlYWRpbnRvIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ3KjpyZWFkaW50byIsICZidWZmZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjEwLDggKzIxNCw5IEBACiAgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZzaXplKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOwogCiBleGl0OgpAQCAtMjQwLDE0ICsyNDUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fd3JpdGVfaW1wbChzZWxmLCAmYik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYiAqLwotICAgIGlmIChiLm9iaikKKyAgICBpZiAoYi5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjgwLDggKzI4Nyw5IEBACiAgICAgaW50IHdoZW5jZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwKLSAgICAgICAgJnBvcywgJndoZW5jZSkpCisgICAgICAgICZwb3MsICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX0ZpbGVJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMzMzLDggKzM0MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0cnVuY2F0ZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZwb3NvYmopKQorICAgICAgICAmcG9zb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19GaWxlSU9fdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3NvYmopOwogCiBleGl0OgpAQCAtMzY0LDQgKzM3Myw0IEBACiAjaWZuZGVmIF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfSU9fRklMRUlPX1RSVU5DQVRFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9JT19GSUxFSU9fVFJVTkNBVEVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRjYmMzOWI0NjY1OTg0OTIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxOTI0YmMwZWUxMWQ1OGUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vY2xpbmljL2lvYmFzZS5jLmggYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaAppbmRleCA5NzYyZjExLi5lZGJmNzNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvaW9iYXNlLmMuaApAQCAtMTg2LDggKzE4Niw5IEBACiAgICAgUHlfc3NpemVfdCBsaW1pdCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmUiLAotICAgICAgICBfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZsaW1pdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fX0lPQmFzZV9yZWFkbGluZV9pbXBsKHNlbGYsIGxpbWl0KTsKIAogZXhpdDoKQEAgLTIxNyw4ICsyMTgsOSBAQAogICAgIFB5X3NzaXplX3QgaGludCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZGxpbmVzIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZoaW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fSU9CYXNlX3JlYWRsaW5lc19pbXBsKHNlbGYsIGhpbnQpOwogCiBleGl0OgpAQCAtMjUxLDggKzI1Myw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnJlYWQiLAotICAgICAgICAmbikpCisgICAgICAgICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19fUmF3SU9CYXNlX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTI3Niw0ICsyNzksNCBAQAogewogICAgIHJldHVybiBfaW9fX1Jhd0lPQmFzZV9yZWFkYWxsX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yjg3NDk1MmY1Y2MyNDhhNCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGY1M2ZlZDkyOGQ4ZTAyZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oIGIvTW9kdWxlcy9faW8vY2xpbmljL3N0cmluZ2lvLmMuaAppbmRleCBhOGUzMmEzLi5kMmMwNWQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9jbGluaWMvc3RyaW5naW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy9zdHJpbmdpby5jLmgKQEAgLTYxLDggKzYxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYXJnKSkKKyAgICAgICAgJmFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fU3RyaW5nSU9fcmVhZF9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC05MSw4ICs5Miw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyZWFkbGluZSIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZhcmcpKQorICAgICAgICAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19yZWFkbGluZV9pbXBsKHNlbGYsIGFyZyk7CiAKIGV4aXQ6CkBAIC0xMjMsOCArMTI1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmFyZykpCisgICAgICAgICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1N0cmluZ0lPX3RydW5jYXRlX2ltcGwoc2VsZiwgYXJnKTsKIAogZXhpdDoKQEAgLTE1Nyw4ICsxNjAsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGk6c2VlayIsCi0gICAgICAgICZwb3MsICZ3aGVuY2UpKQorICAgICAgICAmcG9zLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19zZWVrX2ltcGwoc2VsZiwgcG9zLCB3aGVuY2UpOwogCiBleGl0OgpAQCAtMjE3LDEzICsyMjEsMTUgQEAKIF9pb19TdHJpbmdJT19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5pdGlhbF92YWx1ZSIsICJuZXdsaW5lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9POlN0cmluZ0lPIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXdsaW5lX29iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T086U3RyaW5nSU8iLCBfa2V5d29yZHMsCi0gICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZ2YWx1ZSwgJm5ld2xpbmVfb2JqKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19TdHJpbmdJT19fX2luaXRfX19pbXBsKChzdHJpbmdpbyAqKXNlbGYsIHZhbHVlLCBuZXdsaW5lX29iaik7CiAKIGV4aXQ6CkBAIC0yODMsNCArMjg5LDQgQEAKIHsKICAgICByZXR1cm4gX2lvX1N0cmluZ0lPX3NlZWthYmxlX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjA2MWNmM2EyMGNkMTRlZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWRkNWMyYTIxM2U3NTQwNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvdGV4dGlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCmluZGV4IGRjN2U4YzcuLmYzOWMzNTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCisrKyBiL01vZHVsZXMvX2lvL2NsaW5pYy90ZXh0aW8uYy5oCkBAIC0yNCwxNCArMjQsMTYgQEAKIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkZWNvZGVyIiwgInRyYW5zbGF0ZSIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWNvZGVyOwogICAgIGludCB0cmFuc2xhdGU7CiAgICAgUHlPYmplY3QgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPaXxPOkluY3JlbWVudGFsTmV3bGluZURlY29kZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZkZWNvZGVyLCAmdHJhbnNsYXRlLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX19faW5pdF9fX2ltcGwoKG5sZGVjb2Rlcl9vYmplY3QgKilzZWxmLCBkZWNvZGVyLCB0cmFuc2xhdGUsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00NCwyMyArNDYsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9JT19JTkNSRU1FTlRBTE5FV0xJTkVERUNPREVSX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfaW9fSW5jcmVtZW50YWxOZXdsaW5lRGVjb2Rlcl9kZWNvZGVfaW1wbChubGRlY29kZXJfb2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlucHV0LCBpbnQgZmluYWwpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2lvX0luY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKG5sZGVjb2Rlcl9vYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xpOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZV9pbXBsKHNlbGYsIGlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CkBAIC0xNTMsNyArMTU3LDggQEAKIF9pb19UZXh0SU9XcmFwcGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJidWZmZXIiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgIm5ld2xpbmUiLCAibGluZV9idWZmZXJpbmciLCAid3JpdGVfdGhyb3VnaCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImJ1ZmZlciIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsICJsaW5lX2J1ZmZlcmluZyIsICJ3cml0ZV90aHJvdWdoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwpAQCAtMTYxLDkgKzE2NiwxMCBAQAogICAgIGludCBsaW5lX2J1ZmZlcmluZyA9IDA7CiAgICAgaW50IHdyaXRlX3Rocm91Z2ggPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3x6enppaTpUZXh0SU9XcmFwcGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmYnVmZmVyLCAmZW5jb2RpbmcsICZlcnJvcnMsICZuZXdsaW5lLCAmbGluZV9idWZmZXJpbmcsICZ3cml0ZV90aHJvdWdoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZidWZmZXIsICZlbmNvZGluZywgJmVycm9ycywgJm5ld2xpbmUsICZsaW5lX2J1ZmZlcmluZywgJndyaXRlX3Rocm91Z2gpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfX19pbml0X19faW1wbCgodGV4dGlvICopc2VsZiwgYnVmZmVyLCBlbmNvZGluZywgZXJyb3JzLCBuZXdsaW5lLCBsaW5lX2J1ZmZlcmluZywgd3JpdGVfdGhyb3VnaCk7CiAKIGV4aXQ6CkBAIC0yMDQsOCArMjEwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqdGV4dDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTp3cml0ZSIsICZ0ZXh0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6d3JpdGUiLCAmdGV4dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW9fVGV4dElPV3JhcHBlcl93cml0ZV9pbXBsKHNlbGYsIHRleHQpOwogCiBleGl0OgpAQCAtMjMwLDggKzIzNyw5IEBACiAgICAgUHlfc3NpemVfdCBuID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkIiwKLSAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkKKyAgICAgICAgX1B5SU9fQ29udmVydFNzaXplX3QsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3JlYWRfaW1wbChzZWxmLCBuKTsKIAogZXhpdDoKQEAgLTI1Niw4ICsyNjQsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpyZWFkbGluZSIsCi0gICAgICAgICZzaXplKSkKKyAgICAgICAgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfcmVhZGxpbmVfaW1wbChzZWxmLCBzaXplKTsKIAogZXhpdDoKQEAgLTI4Myw4ICsyOTIsOSBAQAogICAgIGludCB3aGVuY2UgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6c2VlayIsCi0gICAgICAgICZjb29raWVPYmosICZ3aGVuY2UpKQorICAgICAgICAmY29va2llT2JqLCAmd2hlbmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pb19UZXh0SU9XcmFwcGVyX3NlZWtfaW1wbChzZWxmLCBjb29raWVPYmosIHdoZW5jZSk7CiAKIGV4aXQ6CkBAIC0zMjcsOCArMzM3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRydW5jYXRlIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnBvcykpCisgICAgICAgICZwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2lvX1RleHRJT1dyYXBwZXJfdHJ1bmNhdGVfaW1wbChzZWxmLCBwb3MpOwogCiBleGl0OgpAQCAtNDUzLDQgKzQ2NCw0IEBACiB7CiAgICAgcmV0dXJuIF9pb19UZXh0SU9XcmFwcGVyX2Nsb3NlX2ltcGwoc2VsZik7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjkwNjA4Zjg1YWFiOGJhNSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzhhZDE0ZWJhMTY2NzI1NCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaCBiL01vZHVsZXMvX2lvL2NsaW5pYy93aW5jb25zb2xlaW8uYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0NGZjYmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby9jbGluaWMvd2luY29uc29sZWlvLmMuaApAQCAtMCwwICsxLDMzMSBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9fZG9jX18sCisiY2xvc2UoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJDbG9zZSB0aGUgaGFuZGxlLlxuIgorIlxuIgorIkEgY2xvc2VkIGhhbmRsZSBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gIGNsb3NlKCkgbWF5IGJlXG4iCisiY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRiAgICBcCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2UsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2Uod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fY2xvc2VfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19fZG9jX18sCisiX1dpbmRvd3NDb25zb2xlSU8oZmlsZSwgbW9kZT1cJ3JcJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIk9wZW4gYSBjb25zb2xlIGJ1ZmZlciBieSBmaWxlIGRlc2NyaXB0b3IuXG4iCisiXG4iCisiVGhlIG1vZGUgY2FuIGJlIFwncmJcJyAoZGVmYXVsdCksIG9yIFwnd2JcJyBmb3IgcmVhZGluZyBvciB3cml0aW5nIGJ5dGVzLiBBbGxcbiIKKyJvdGhlciBtb2RlIGNoYXJhY3RlcnMgd2lsbCBiZSBpZ25vcmVkLiBNb2RlIFwnYlwnIHdpbGwgYmUgYXNzdW1lZCBpZiBpdCBpc1xuIgorIm9taXR0ZWQuIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgaXMgYWx3YXlzIGlnbm9yZWQuIik7CisKK3N0YXRpYyBpbnQKK19pb19fV2luZG93c0NvbnNvbGVJT19fX2luaXRfX19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKm5hbWVvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptb2RlLCBpbnQgY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvcGVuZXIpOworCitzdGF0aWMgaW50CitfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgIm1vZGUiLCAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNpTzpfV2luZG93c0NvbnNvbGVJTyIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgY29uc3QgY2hhciAqbW9kZSA9ICJyIjsKKyAgICBpbnQgY2xvc2VmZCA9IDE7CisgICAgUHlPYmplY3QgKm9wZW5lciA9IFB5X05vbmU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQsICZvcGVuZXIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX2ltcGwoKHdpbmNvbnNvbGVpbyAqKXNlbGYsIG5hbWVvYmosIG1vZGUsIGNsb3NlZmQsIG9wZW5lcik7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9fX2RvY19fLAorImZpbGVubygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLlxuIgorIlxuIgorImZpbGVubyBpcyBvbmx5IHNldCB3aGVuIGEgZmlsZSBkZXNjcmlwdG9yIGlzIHVzZWQgdG8gb3BlblxuIgorIm9uZSBvZiB0aGUgc3RhbmRhcmQgc3RyZWFtcy4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRiAgICBcCisgICAgeyJmaWxlbm8iLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVubywgTUVUSF9OT0FSR1MsIF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVubyh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9pb19fV2luZG93c0NvbnNvbGVJT19maWxlbm9faW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWJsZV9fZG9jX18sCisicmVhZGFibGUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJUcnVlIGlmIGNvbnNvbGUgaXMgYW4gaW5wdXQgYnVmZmVyLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZGFibGUiLCAoUHlDRnVuY3Rpb24pX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfX2RvY19fLAorIndyaXRhYmxlKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIG91dHB1dCBidWZmZXIuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0YWJsZSIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGUsIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0YWJsZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGUod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19fZG9jX18sCisicmVhZGludG8oJHNlbGYsIGJ1ZmZlciwgLylcbiIKKyItLVxuIgorIlxuIgorIlNhbWUgYXMgUmF3SU9CYXNlLnJlYWRpbnRvKCkuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkaW50byIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG8sIE1FVEhfTywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRpbnRvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZGludG9faW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X2J1ZmZlciAqYnVmZmVyKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50byh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGJ1ZmZlciA9IHtOVUxMLCBOVUxMfTsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidyo6cmVhZGludG8iLCAmYnVmZmVyKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHNlbGYsICZidWZmZXIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLworICAgIGlmIChidWZmZXIub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfX2RvY19fLAorInJlYWRhbGwoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGNvbnNvbGUsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIlJldHVybiBhbiBlbXB0eSBieXRlcyBvYmplY3QgYXQgRU9GLiIpOworCisjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUxMX01FVEhPRERFRiAgICBcCisgICAgeyJyZWFkYWxsIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsLCBNRVRIX05PQVJHUywgX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbChzZWxmKTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9pb19fV2luZG93c0NvbnNvbGVJT19yZWFkX19kb2NfXywKKyJyZWFkKCRzZWxmLCBzaXplPS0xLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmVhZCBhdCBtb3N0IHNpemUgYnl0ZXMsIHJldHVybmVkIGFzIGJ5dGVzLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsIHdoZW4gc2l6ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsXG4iCisic28gbGVzcyBkYXRhIG1heSBiZSByZXR1cm5lZCB0aGFuIHJlcXVlc3RlZC5cbiIKKyJSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZCIsIChQeUNGdW5jdGlvbilfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZCwgTUVUSF9WQVJBUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5X3NzaXplX3Qgc2l6ZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZCh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyY6cmVhZCIsCisgICAgICAgIF9QeUlPX0NvbnZlcnRTc2l6ZV90LCAmc2l6ZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHNlbGYsIHNpemUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfX2RvY19fLAorIndyaXRlKCRzZWxmLCBiLCAvKVxuIgorIi0tXG4iCisiXG4iCisiV3JpdGUgYnVmZmVyIGIgdG8gZmlsZSwgcmV0dXJuIG51bWJlciBvZiBieXRlcyB3cml0dGVuLlxuIgorIlxuIgorIk9ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLlxuIgorIlRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiBpcyByZXR1cm5lZC4iKTsKKworI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fV1JJVEVfTUVUSE9EREVGICAgIFwKKyAgICB7IndyaXRlIiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT193cml0ZSwgTUVUSF9PLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT193cml0ZSh3aW5jb25zb2xlaW8gKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGIgPSB7TlVMTCwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGIgKi8KKyAgICBpZiAoYi5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZiKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9fZG9jX18sCisiaXNhdHR5KCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWx3YXlzIFRydWUuIik7CisKKyNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYgICAgXAorICAgIHsiaXNhdHR5IiwgKFB5Q0Z1bmN0aW9uKV9pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHksIE1FVEhfTk9BUkdTLCBfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwod2luY29uc29sZWlvICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19pc2F0dHkod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfaW9fX1dpbmRvd3NDb25zb2xlSU9faXNhdHR5X2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX0NMT1NFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19DTE9TRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19GSUxFTk9fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0ZJTEVOT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFEQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRBQkxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19SRUFESU5UT19NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBREFMTF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGCisgICAgI2RlZmluZSBfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSU9fX1dJTkRPV1NDT05TT0xFSU9fUkVBRF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorICAgICNkZWZpbmUgX0lPX19XSU5ET1dTQ09OU09MRUlPX1dSSVRFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX0lPX19XSU5ET1dTQ09OU09MRUlPX0lTQVRUWV9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWViYTkxNmY4NTM3ZmZmNyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDkxOWNmNTAuLjU0Y2ZiN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC05Miw4ICs5Miw3IEBACiAgICAgaWYgKHNlbGYtPmZkID49IDAgJiYgc2VsZi0+Y2xvc2VmZCkgewogICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1Jlc291cmNlV2FybmluZywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkIGZpbGUgJVIiLCBzb3VyY2UpKSB7CisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoc291cmNlLCAxLCAidW5jbG9zZWQgZmlsZSAlUiIsIHNvdXJjZSkpIHsKICAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIHNlbGYpOwpAQCAtMTE4LDE4ICsxMTcsMTMgQEAKICAgICAgICAgaW50IGZkID0gc2VsZi0+ZmQ7CiAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgICAgIC8qIGZkIGlzIGFjY2Vzc2libGUgYW5kIHNvbWVvbmUgZWxzZSBtYXkgaGF2ZSBjbG9zZWQgaXQgKi8KLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgICAgIGVyciA9IGNsb3NlKGZkKTsKLSAgICAgICAgICAgIGlmIChlcnIgPCAwKQotICAgICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICB9IGVsc2UgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgZXJyID0gY2xvc2UoZmQpOworICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICB9CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQogICAgIGlmIChlcnIgPCAwKSB7CiAgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKQEAgLTU0Niw3ICs1NDAsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZXJyX21vZGUoY2hhciAqYWN0aW9uKQorZXJyX21vZGUoY29uc3QgY2hhciAqYWN0aW9uKQogewogICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX1NUQVRFKCk7CiAgICAgaWYgKHN0YXRlICE9IE5VTEwpCkBAIC03MDEsOCArNjk1LDYgQEAKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoc2VsZi0+ZmQpKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTkxNSwxOCArOTA3LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgcmVzID0gX2xzZWVraTY0KGZkLCBwb3MsIHdoZW5jZSk7CisgICAgcmVzID0gX2xzZWVraTY0KGZkLCBwb3MsIHdoZW5jZSk7CiAjZWxzZQotICAgICAgICByZXMgPSBsc2VlayhmZCwgcG9zLCB3aGVuY2UpOworICAgIHJlcyA9IGxzZWVrKGZkLCBwb3MsIHdoZW5jZSk7CiAjZW5kaWYKLSAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB9IGVsc2UKLSAgICAgICAgcmVzID0gLTE7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogCkBAIC0xMDQ5LDcgKzEwMzgsNyBAQAogfQogI2VuZGlmIC8qIEhBVkVfRlRSVU5DQVRFICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIG1vZGVfc3RyaW5nKGZpbGVpbyAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+Y3JlYXRlZCkgewpAQCAtMTExNywxMCArMTEwNiw3IEBACiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICBpZiAoX1B5VmVyaWZ5X2ZkKHNlbGYtPmZkKSkKLSAgICAgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKLSAgICBlbHNlCi0gICAgICAgIHJlcyA9IDA7CisgICAgcmVzID0gaXNhdHR5KHNlbGYtPmZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vaW9iYXNlLmMgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwppbmRleCA1NzU0MWE4Li40NzJlZjNiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9pb2Jhc2UuYworKysgYi9Nb2R1bGVzL19pby9pb2Jhc2UuYwpAQCAtODI4LDcgKzgyOCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLwotICAgIChkZXN0cnVjdG9yKWlvYmFzZV9maW5hbGl6ZSwgLyogdHBfZmluYWxpemUgKi8KKyAgICBpb2Jhc2VfZmluYWxpemUsICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KIH07CiAKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKaW5kZXggMDZiNDE0NC4uZWNmNmRjMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYworKysgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCkBAIC00MzgsNyArNDM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfcmVhZGxpbmUsIE5VTEwpOwogICAgICAgICBpZiAobGluZSAmJiAhUHlVbmljb2RlX0NoZWNrKGxpbmUpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhbiBzdHIgb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBzdHIgb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIFB5X1RZUEUobGluZSktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby90ZXh0aW8uYyBiL01vZHVsZXMvX2lvL3RleHRpby5jCmluZGV4IDA2M2NhYTYuLjUwOGU0NmUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL3RleHRpby5jCisrKyBiL01vZHVsZXMvX2lvL3RleHRpby5jCkBAIC01MzEsNyArNTMxLDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMGQyYzljMTM2ZjRlMGQwIGlucHV0PWY4ZmYxMDE4MjVlMzJlN2ZdKi8KIHsKICAgICBQeU9iamVjdCAqYnVmZmVyOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBmbGFnOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmbGFnOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgIT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqc3RhdGUgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLApAQCAtNTY3LDcgKzU2Nyw3IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzEwYzYyMjUwOGI1NzZjYiBpbnB1dD1jNTNmYjUwNWE3NmRiYmUyXSovCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgZmxhZzsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmxhZzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9LIiwgJmJ1ZmZlciwgJmZsYWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3Miw3ICs3NzIsNyBAQAogICAgIGVuY29kZWZ1bmNfdCBlbmNvZGVmdW5jOwogfSBlbmNvZGVmdW5jZW50cnk7CiAKLXN0YXRpYyBlbmNvZGVmdW5jZW50cnkgZW5jb2RlZnVuY3NbXSA9IHsKK3N0YXRpYyBjb25zdCBlbmNvZGVmdW5jZW50cnkgZW5jb2RlZnVuY3NbXSA9IHsKICAgICB7ImFzY2lpIiwgICAgICAgKGVuY29kZWZ1bmNfdCkgYXNjaWlfZW5jb2RlfSwKICAgICB7Imlzbzg4NTktMSIsICAgKGVuY29kZWZ1bmNfdCkgbGF0aW4xX2VuY29kZX0sCiAgICAgeyJ1dGYtOCIsICAgICAgIChlbmNvZGVmdW5jX3QpIHV0ZjhfZW5jb2RlfSwKQEAgLTEwMjEsNyArMTAyMSw3IEBACiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2socmVzKSkgewotICAgICAgICAgICAgZW5jb2RlZnVuY2VudHJ5ICplID0gZW5jb2RlZnVuY3M7CisgICAgICAgICAgICBjb25zdCBlbmNvZGVmdW5jZW50cnkgKmUgPSBlbmNvZGVmdW5jczsKICAgICAgICAgICAgIHdoaWxlIChlLT5uYW1lICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHJlcywgZS0+bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZW5jb2RlZnVuYyA9IGUtPmVuY29kZWZ1bmM7CkBAIC0xNjQ0LDggKzE2NDQsOCBAQAogLyogTk9URTogYGVuZGAgbXVzdCBwb2ludCB0byB0aGUgcmVhbCBlbmQgb2YgdGhlIFB5X1VDUzQgc3RvcmFnZSwKICAgIHRoYXQgaXMgdG8gdGhlIE5VTCBjaGFyYWN0ZXIuIE90aGVyd2lzZSB0aGUgZnVuY3Rpb24gd2lsbCBwcm9kdWNlCiAgICBpbmNvcnJlY3QgcmVzdWx0cy4gKi8KLXN0YXRpYyBjaGFyICoKLWZpbmRfY29udHJvbF9jaGFyKGludCBraW5kLCBjaGFyICpzLCBjaGFyICplbmQsIFB5X1VDUzQgY2gpCitzdGF0aWMgY29uc3QgY2hhciAqCitmaW5kX2NvbnRyb2xfY2hhcihpbnQga2luZCwgY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZW5kLCBQeV9VQ1M0IGNoKQogewogICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgIGFzc2VydChjaCA8IDI1Nik7CkBAIC0xNjY1LDEzICsxNjY1LDEzIEBACiBQeV9zc2l6ZV90CiBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgIGludCB0cmFuc2xhdGVkLCBpbnQgdW5pdmVyc2FsLCBQeU9iamVjdCAqcmVhZG5sLAotICAgIGludCBraW5kLCBjaGFyICpzdGFydCwgY2hhciAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKyAgICBpbnQga2luZCwgY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSAoKGNoYXIqKWVuZCAtIChjaGFyKilzdGFydCkva2luZDsKIAogICAgIGlmICh0cmFuc2xhdGVkKSB7CiAgICAgICAgIC8qIE5ld2xpbmVzIGFyZSBhbHJlYWR5IHRyYW5zbGF0ZWQsIG9ubHkgc2VhcmNoIGZvciBcbiAqLwotICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCAnXG4nKTsKKyAgICAgICAgY29uc3QgY2hhciAqcG9zID0gZmluZF9jb250cm9sX2NoYXIoa2luZCwgc3RhcnQsIGVuZCwgJ1xuJyk7CiAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICBlbHNlIHsKQEAgLTE2ODMsNyArMTY4Myw3IEBACiAgICAgICAgIC8qIFVuaXZlcnNhbCBuZXdsaW5lIHNlYXJjaC4gRmluZCBhbnkgb2YgXHIsIFxyXG4sIFxuCiAgICAgICAgICAqIFRoZSBkZWNvZGVyIGVuc3VyZXMgdGhhdCBcclxuIGFyZSBub3Qgc3BsaXQgaW4gdHdvIHBpZWNlcwogICAgICAgICAgKi8KLSAgICAgICAgY2hhciAqcyA9IHN0YXJ0OworICAgICAgICBjb25zdCBjaGFyICpzID0gc3RhcnQ7CiAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIG5vbi1jb250cm9sIGNoYXJzLiBUaGUgbG9vcCBhbHdheXMgZW5kcwpAQCAtMTcxMywyMSArMTcxMywyMSBAQAogICAgICAgICAvKiBBc3N1bWUgdGhhdCByZWFkbmwgaXMgYW4gQVNDSUkgY2hhcmFjdGVyLiAqLwogICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVhZG5sKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CiAgICAgICAgIGlmIChyZWFkbmxfbGVuID09IDEpIHsKLSAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gKHBvcyAtIHN0YXJ0KS9raW5kICsgMTsKICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNoYXIgKnMgPSBzdGFydDsKLSAgICAgICAgICAgIGNoYXIgKmUgPSBlbmQgLSAocmVhZG5sX2xlbiAtIDEpKmtpbmQ7Ci0gICAgICAgICAgICBjaGFyICpwb3M7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gc3RhcnQ7CisgICAgICAgICAgICBjb25zdCBjaGFyICplID0gZW5kIC0gKHJlYWRubF9sZW4gLSAxKSpraW5kOworICAgICAgICAgICAgY29uc3QgY2hhciAqcG9zOwogICAgICAgICAgICAgaWYgKGUgPCBzKQogICAgICAgICAgICAgICAgIGUgPSBzOwogICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHMsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gTlVMTCB8fCBwb3MgPj0gZSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMTsgaSA8IHJlYWRubF9sZW47IGkrKykgewpAQCAtMjY4OSw3ICsyNjg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlJT19zdHJfcmVhZGxpbmUsIE5VTEwpOwogICAgICAgICBpZiAobGluZSAmJiAhUHlVbmljb2RlX0NoZWNrKGxpbmUpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZGxpbmUoKSBzaG91bGQgaGF2ZSByZXR1cm5lZCBhbiBzdHIgb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWRsaW5lKCkgc2hvdWxkIGhhdmUgcmV0dXJuZWQgYSBzdHIgb2JqZWN0LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAnJS4yMDBzJyIsIFB5X1RZUEUobGluZSktPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby93aW5jb25zb2xlaW8uYyBiL01vZHVsZXMvX2lvL3dpbmNvbnNvbGVpby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NjZhMzgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19pby93aW5jb25zb2xlaW8uYwpAQCAtMCwwICsxLDExNTQgQEAKKy8qCisgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgV2luZG93cyBjb25zb2xlIEkvTworCisgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IF9XaW5kb3dzQ29uc29sZUlPCisKKyAgICBXcml0dGVuIGJ5IFN0ZXZlIERvd2VyCisqLworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyNpbmNsdWRlICJQeXRob24uaCIKKworI2lmZGVmIE1TX1dJTkRPV1MKKworI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzdGRkZWYuaD4gLyogRm9yIG9mZnNldG9mICovCisKKyNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNpbmNsdWRlIDxmY250bC5oPgorCisjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCisKKy8qIEJVRlNJWiBkZXRlcm1pbmVzIGhvdyBtYW55IGNoYXJhY3RlcnMgY2FuIGJlIHR5cGVkIGF0IHRoZSBjb25zb2xlCisgICBiZWZvcmUgaXQgc3RhcnRzIGJsb2NraW5nLiAqLworI2lmIEJVRlNJWiA8ICgxNioxMDI0KQorI2RlZmluZSBTTUFMTENIVU5LICgyKjEwMjQpCisjZWxpZiAoQlVGU0laID49ICgyIDw8IDI1KSkKKyNlcnJvciAidW5yZWFzb25hYmxlIEJVRlNJWiA+IDY0TUIgZGVmaW5lZCIKKyNlbHNlCisjZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCisjZW5kaWYKKworLyogQlVGTUFYIGRldGVybWluZXMgaG93IG1hbnkgYnl0ZXMgY2FuIGJlIHJlYWQgaW4gb25lIGdvLiAqLworI2RlZmluZSBCVUZNQVggKDMyKjEwMjQqMTAyNCkKKworLyogU01BTExCVUYgZGV0ZXJtaW5lcyBob3cgbWFueSB1dGYtOCBjaGFyYWN0ZXJzIHdpbGwgYmUKKyAgIGJ1ZmZlcmVkIHdpdGhpbiB0aGUgc3RyZWFtLCBpbiBvcmRlciB0byBzdXBwb3J0IHJlYWRzCisgICBvZiBsZXNzIHRoYW4gb25lIGNoYXJhY3RlciAqLworI2RlZmluZSBTTUFMTEJVRiA0CisKK2NoYXIgX2dldF9jb25zb2xlX3R5cGUoSEFORExFIGhhbmRsZSkgeworICAgIERXT1JEIG1vZGUsIHBlZWtfY291bnQ7CisKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gJ1wwJzsKKworICAgIGlmICghR2V0Q29uc29sZU1vZGUoaGFuZGxlLCAmbW9kZSkpCisgICAgICAgIHJldHVybiAnXDAnOworCisgICAgLyogUGVlayBhdCB0aGUgaGFuZGxlIHRvIHNlZSB3aGV0aGVyIGl0IGlzIGFuIGlucHV0IG9yIG91dHB1dCBoYW5kbGUgKi8KKyAgICBpZiAoR2V0TnVtYmVyT2ZDb25zb2xlSW5wdXRFdmVudHMoaGFuZGxlLCAmcGVla19jb3VudCkpCisgICAgICAgIHJldHVybiAncic7CisgICAgcmV0dXJuICd3JzsKK30KKworY2hhciBfUHlJT19nZXRfY29uc29sZV90eXBlKFB5T2JqZWN0ICpwYXRoX29yX2ZkKSB7CisgICAgaW50IGZkOworCisgICAgZmQgPSBQeUxvbmdfQXNMb25nKHBhdGhfb3JfZmQpOworICAgIFB5RXJyX0NsZWFyKCk7CisgICAgaWYgKGZkID49IDApIHsKKyAgICAgICAgSEFORExFIGhhbmRsZTsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgaWYgKCFoYW5kbGUpCisgICAgICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICAgICAgcmV0dXJuIF9nZXRfY29uc29sZV90eXBlKGhhbmRsZSk7CisgICAgfQorCisgICAgUHlPYmplY3QgKmRlY29kZWQsICpkZWNvZGVkX3VwcGVyOworCisgICAgaW50IGQgPSBQeVVuaWNvZGVfRlNEZWNvZGVyKHBhdGhfb3JfZmQsICZkZWNvZGVkKTsKKyAgICBpZiAoIWQpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuICdcMCc7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGRlY29kZWQpKSB7CisgICAgICAgIFB5X0NMRUFSKGRlY29kZWQpOworICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICB9CisgICAgZGVjb2RlZF91cHBlciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZGVjb2RlZCwgInVwcGVyIiwgIiIpOworICAgIFB5X0NMRUFSKGRlY29kZWQpOworICAgIGlmICghZGVjb2RlZF91cHBlcikgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICB9CisKKyAgICBjaGFyIG0gPSAnXDAnOworICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OSU4kIikgPT0gMCkgeworICAgICAgICBtID0gJ3InOworICAgIH0gZWxzZSBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoZGVjb2RlZF91cHBlciwgIkNPTk9VVCQiKSA9PSAwKSB7CisgICAgICAgIG0gPSAndyc7CisgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhkZWNvZGVkX3VwcGVyLCAiQ09OIikgPT0gMCkgeworICAgICAgICBtID0gJ3gnOworICAgIH0KKworICAgIFB5X0NMRUFSKGRlY29kZWRfdXBwZXIpOworICAgIHJldHVybiBtOworfQorCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX2lvCitjbGFzcyBfaW8uX1dpbmRvd3NDb25zb2xlSU8gIndpbmNvbnNvbGVpbyAqIiAiJlB5V2luZG93c0NvbnNvbGVJT19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZTg5N2ZkYzFmYmE0ZTEzMV0qLworCisvKltweXRob24gaW5wdXRdCitjbGFzcyBpb19zc2l6ZV90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ1B5X3NzaXplX3QnCisgICAgY29udmVydGVyID0gJ19QeUlPX0NvbnZlcnRTc2l6ZV90JworW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9ZDBhODExZDNjYmZkMWIzM10qLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IGZkOworICAgIHVuc2lnbmVkIGludCBjcmVhdGVkIDogMTsKKyAgICB1bnNpZ25lZCBpbnQgcmVhZGFibGUgOiAxOworICAgIHVuc2lnbmVkIGludCB3cml0YWJsZSA6IDE7CisgICAgdW5zaWduZWQgaW50IGNsb3NlaGFuZGxlIDogMTsKKyAgICBjaGFyIGZpbmFsaXppbmc7CisgICAgdW5zaWduZWQgaW50IGJsa3NpemU7CisgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIGNoYXIgYnVmW1NNQUxMQlVGXTsKKyAgICB3Y2hhcl90IHdidWY7Cit9IHdpbmNvbnNvbGVpbzsKKworUHlUeXBlT2JqZWN0IFB5V2luZG93c0NvbnNvbGVJT19UeXBlOworCitfUHlfSURFTlRJRklFUihuYW1lKTsKKworaW50CitfUHlXaW5kb3dzQ29uc29sZUlPX2Nsb3NlZChQeU9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gKCh3aW5jb25zb2xlaW8gKilzZWxmKS0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFOworfQorCisKKy8qIFJldHVybnMgMCBvbiBzdWNjZXNzLCAtMSB3aXRoIGV4Y2VwdGlvbiBzZXQgb24gZmFpbHVyZS4gKi8KK3N0YXRpYyBpbnQKK2ludGVybmFsX2Nsb3NlKHdpbmNvbnNvbGVpbyAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIGlmIChzZWxmLT5jbG9zZWhhbmRsZSkgeworICAgICAgICAgICAgaWYgKHNlbGYtPmZkID49IDApIHsKKyAgICAgICAgICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgICAgICAgICAgY2xvc2Uoc2VsZi0+ZmQpOworICAgICAgICAgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgICAgICAgICB9CisgICAgICAgICAgICBDbG9zZUhhbmRsZShzZWxmLT5oYW5kbGUpOworICAgICAgICB9CisgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgICAgICBzZWxmLT5mZCA9IC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLmNsb3NlCisKK0Nsb3NlIHRoZSBoYW5kbGUuCisKK0EgY2xvc2VkIGhhbmRsZSBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gIGNsb3NlKCkgbWF5IGJlCitjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19jbG9zZV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yN2VmOTViNjZjMjkwNTdiIGlucHV0PTE4NTYxN2UzNDlhZTRjN2JdKi8KK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKyAgICBpbnQgcmM7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KikmUHlSYXdJT0Jhc2VfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2Nsb3NlLCAiTyIsIHNlbGYpOworICAgIGlmICghc2VsZi0+Y2xvc2VoYW5kbGUpIHsKKyAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICByYyA9IGludGVybmFsX2Nsb3NlKHNlbGYpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgX1B5RXJyX0NoYWluRXhjZXB0aW9ucyhleGMsIHZhbCwgdGIpOworICAgIGlmIChyYyA8IDApCisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmNvbnNvbGVpb19uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgd2luY29uc29sZWlvICpzZWxmOworCisgICAgYXNzZXJ0KHR5cGUgIT0gTlVMTCAmJiB0eXBlLT50cF9hbGxvYyAhPSBOVUxMKTsKKworICAgIHNlbGYgPSAod2luY29uc29sZWlvICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7CisgICAgICAgIHNlbGYtPmZkID0gLTE7CisgICAgICAgIHNlbGYtPmNyZWF0ZWQgPSAwOworICAgICAgICBzZWxmLT5yZWFkYWJsZSA9IDA7CisgICAgICAgIHNlbGYtPndyaXRhYmxlID0gMDsKKyAgICAgICAgc2VsZi0+Y2xvc2VoYW5kbGUgPSAwOworICAgICAgICBzZWxmLT5ibGtzaXplID0gMDsKKyAgICAgICAgc2VsZi0+d2Vha3JlZmxpc3QgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLl9faW5pdF9fCisgICAgZmlsZSBhcyBuYW1lb2JqOiBvYmplY3QKKyAgICBtb2RlOiBzdHIgPSAiciIKKyAgICBjbG9zZWZkOiBpbnQoY19kZWZhdWx0PSIxIikgPSBUcnVlCisgICAgb3BlbmVyOiBvYmplY3QgPSBOb25lCisKK09wZW4gYSBjb25zb2xlIGJ1ZmZlciBieSBmaWxlIGRlc2NyaXB0b3IuCisKK1RoZSBtb2RlIGNhbiBiZSAncmInIChkZWZhdWx0KSwgb3IgJ3diJyBmb3IgcmVhZGluZyBvciB3cml0aW5nIGJ5dGVzLiBBbGwKK290aGVyIG1vZGUgY2hhcmFjdGVycyB3aWxsIGJlIGlnbm9yZWQuIE1vZGUgJ2InIHdpbGwgYmUgYXNzdW1lZCBpZiBpdCBpcworb21pdHRlZC4gVGhlICpvcGVuZXIqIHBhcmFtZXRlciBpcyBhbHdheXMgaWdub3JlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIGludAorX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeU9iamVjdCAqbmFtZW9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm1vZGUsIGludCBjbG9zZWZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9wZW5lcikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zZmQ5Y2JjZGQ4ZDk1NDI5IGlucHV0PTYxYmUzOTYzM2E4NmY1ZDddKi8KK3sKKyAgICBjb25zdCBjaGFyICpzOworICAgIHdjaGFyX3QgKm5hbWUgPSBOVUxMOworICAgIGNoYXIgY29uc29sZV90eXBlID0gJ1wwJzsKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBpbnQgcndhID0gMDsKKyAgICBpbnQgZmQgPSAtMTsKKyAgICBpbnQgZmRfaXNfb3duID0gMDsKKworICAgIGFzc2VydChQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2soc2VsZikpOworICAgIGlmIChzZWxmLT5oYW5kbGUgPj0gMCkgeworICAgICAgICBpZiAoc2VsZi0+Y2xvc2VoYW5kbGUpIHsKKyAgICAgICAgICAgIC8qIEhhdmUgdG8gY2xvc2UgdGhlIGV4aXN0aW5nIGZpbGUgZmlyc3QuICovCisgICAgICAgICAgICBpZiAoaW50ZXJuYWxfY2xvc2Uoc2VsZikgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKKyAgICB9CisKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhuYW1lb2JqKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQsIGdvdCBmbG9hdCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZmQgPSBfUHlMb25nX0FzSW50KG5hbWVvYmopOworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgZmlsZSBkZXNjcmlwdG9yIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisgICAgc2VsZi0+ZmQgPSBmZDsKKworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgUHlPYmplY3QgKmRlY29kZWRuYW1lID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKGRlY29kZWRuYW1lKTsKKworICAgICAgICBpbnQgZCA9IFB5VW5pY29kZV9GU0RlY29kZXIobmFtZW9iaiwgKHZvaWQqKSZkZWNvZGVkbmFtZSk7CisgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgbmFtZSA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKGRlY29kZWRuYW1lLCAmbGVuZ3RoKTsKKyAgICAgICAgY29uc29sZV90eXBlID0gX1B5SU9fZ2V0X2NvbnNvbGVfdHlwZShkZWNvZGVkbmFtZSk7CisgICAgICAgIFB5X0NMRUFSKGRlY29kZWRuYW1lKTsKKyAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICBpZiAod2NzbGVuKG5hbWUpICE9IGxlbmd0aCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShuYW1lKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHMgPSBtb2RlOworICAgIHdoaWxlICgqcykgeworICAgICAgICBzd2l0Y2ggKCpzKyspIHsKKyAgICAgICAgY2FzZSAnKyc6CisgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncic6CisgICAgICAgICAgICBpZiAocndhKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX21vZGU7CisgICAgICAgICAgICByd2EgPSAxOworICAgICAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAxOworICAgICAgICAgICAgaWYgKGNvbnNvbGVfdHlwZSA9PSAneCcpCisgICAgICAgICAgICAgICAgY29uc29sZV90eXBlID0gJ3InOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3cnOgorICAgICAgICAgICAgaWYgKHJ3YSkKKyAgICAgICAgICAgICAgICBnb3RvIGJhZF9tb2RlOworICAgICAgICAgICAgcndhID0gMTsKKyAgICAgICAgICAgIHNlbGYtPndyaXRhYmxlID0gMTsKKyAgICAgICAgICAgIGlmIChjb25zb2xlX3R5cGUgPT0gJ3gnKQorICAgICAgICAgICAgICAgIGNvbnNvbGVfdHlwZSA9ICd3JzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbW9kZTogJS4yMDBzIiwgbW9kZSk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFyd2EpCisgICAgICAgIGdvdG8gYmFkX21vZGU7CisKKyAgICBpZiAoZmQgPj0gMCkgeworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIHNlbGYtPmhhbmRsZSA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmQpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgRFdPUkQgYWNjZXNzID0gR0VORVJJQ19SRUFEOworCisgICAgICAgIHNlbGYtPmNsb3NlaGFuZGxlID0gMTsKKyAgICAgICAgaWYgKCFjbG9zZWZkKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiQ2Fubm90IHVzZSBjbG9zZWZkPUZhbHNlIHdpdGggZmlsZSBuYW1lIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlbGYtPndyaXRhYmxlKQorICAgICAgICAgICAgYWNjZXNzID0gR0VORVJJQ19XUklURTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIC8qIEF0dGVtcHQgdG8gb3BlbiBmb3IgcmVhZC93cml0ZSBpbml0aWFsbHksIHRoZW4gZmFsbCBiYWNrCisgICAgICAgICAgIG9uIHRoZSBzcGVjaWZpYyBhY2Nlc3MuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIG1vZGVybiBuYW1lcworICAgICAgICAgICBDT05JTiQgYW5kIENPTk9VVCQsIHdoaWNoIGFsbG93IHJlYWRpbmcvd3JpdGluZyBzdGF0ZSBhcworICAgICAgICAgICB3ZWxsIGFzIHJlYWRpbmcvd3JpdGluZyBjb250ZW50LiAqLworICAgICAgICBzZWxmLT5oYW5kbGUgPSBDcmVhdGVGaWxlVyhuYW1lLCBHRU5FUklDX1JFQUQgfCBHRU5FUklDX1dSSVRFLAorICAgICAgICAgICAgRklMRV9TSEFSRV9SRUFEIHwgRklMRV9TSEFSRV9XUklURSwgTlVMTCwgT1BFTl9FWElTVElORywgMCwgTlVMTCk7CisgICAgICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgICAgICBzZWxmLT5oYW5kbGUgPSBDcmVhdGVGaWxlVyhuYW1lLCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgRklMRV9TSEFSRV9SRUFEIHwgRklMRV9TSEFSRV9XUklURSwgTlVMTCwgT1BFTl9FWElTVElORywgMCwgTlVMTCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgR2V0TGFzdEVycm9yKCksIG5hbWVvYmopOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb25zb2xlX3R5cGUgPT0gJ1wwJykKKyAgICAgICAgY29uc29sZV90eXBlID0gX2dldF9jb25zb2xlX3R5cGUoc2VsZi0+aGFuZGxlKTsKKworICAgIGlmIChzZWxmLT53cml0YWJsZSAmJiBjb25zb2xlX3R5cGUgIT0gJ3cnKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIkNhbm5vdCBvcGVuIGNvbnNvbGUgaW5wdXQgYnVmZmVyIGZvciB3cml0aW5nIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChzZWxmLT5yZWFkYWJsZSAmJiBjb25zb2xlX3R5cGUgIT0gJ3InKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIkNhbm5vdCBvcGVuIGNvbnNvbGUgb3V0cHV0IGJ1ZmZlciBmb3IgcmVhZGluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHNlbGYtPmJsa3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOworICAgIG1lbXNldChzZWxmLT5idWYsIDAsIDQpOworCisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfbmFtZSwgbmFtZW9iaikgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZ290byBkb25lOworCitiYWRfbW9kZToKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIk11c3QgaGF2ZSBleGFjdGx5IG9uZSBvZiByZWFkIG9yIHdyaXRlIG1vZGUiKTsKK2Vycm9yOgorICAgIHJldCA9IC0xOworICAgIGludGVybmFsX2Nsb3NlKHNlbGYpOworCitkb25lOgorICAgIGlmIChuYW1lKQorICAgICAgICBQeU1lbV9GcmVlKG5hbWUpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK3dpbmNvbnNvbGVpb190cmF2ZXJzZSh3aW5jb25zb2xlaW8gKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit3aW5jb25zb2xlaW9fY2xlYXIod2luY29uc29sZWlvICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAord2luY29uc29sZWlvX2RlYWxsb2Mod2luY29uc29sZWlvICpzZWxmKQoreworICAgIHNlbGYtPmZpbmFsaXppbmcgPSAxOworICAgIGlmIChfUHlJT0Jhc2VfZmluYWxpemUoKFB5T2JqZWN0ICopIHNlbGYpIDwgMCkKKyAgICAgICAgcmV0dXJuOworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIGlmIChzZWxmLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQorICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZXJyX2Nsb3NlZCh2b2lkKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZXJyX21vZGUoY29uc3QgY2hhciAqYWN0aW9uKQoreworICAgIF9QeUlPX1N0YXRlICpzdGF0ZSA9IElPX1NUQVRFKCk7CisgICAgaWYgKHN0YXRlICE9IE5VTEwpCisgICAgICAgIFB5RXJyX0Zvcm1hdChzdGF0ZS0+dW5zdXBwb3J0ZWRfb3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIkNvbnNvbGUgYnVmZmVyIGRvZXMgbm90IHN1cHBvcnQgJXMiLCBhY3Rpb24pOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uZmlsZW5vCisKK1JldHVybiB0aGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgKGFuIGludGVnZXIpLgorCitmaWxlbm8gaXMgb25seSBzZXQgd2hlbiBhIGZpbGUgZGVzY3JpcHRvciBpcyB1c2VkIHRvIG9wZW4KK29uZSBvZiB0aGUgc3RhbmRhcmQgc3RyZWFtcy4KKworW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2ZpbGVub19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMDZmYTc0Y2UzYjVjZmJmIGlucHV0PTA3OWFkYzMzMGRkYWFiZTZdKi8KK3sKKyAgICBpZiAoc2VsZi0+ZmQgPCAwICYmIHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICisgICAgICAgIGlmIChzZWxmLT53cml0YWJsZSkKKyAgICAgICAgICAgIHNlbGYtPmZkID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClzZWxmLT5oYW5kbGUsIF9PX1dST05MWSB8IF9PX0JJTkFSWSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYtPmZkID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClzZWxmLT5oYW5kbGUsIF9PX1JET05MWSB8IF9PX0JJTkFSWSk7CisgICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICisgICAgfQorICAgIGlmIChzZWxmLT5mZCA8IDApCisgICAgICAgIHJldHVybiBlcnJfbW9kZSgiZmlsZW5vIik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZCk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkYWJsZQorCitUcnVlIGlmIGNvbnNvbGUgaXMgYW4gaW5wdXQgYnVmZmVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhYmxlX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhZjljZWYyNzQzYmVjZjAgaW5wdXQ9NmJlOWRlZmI1MzAyZGFhZV0qLworeworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykgc2VsZi0+cmVhZGFibGUpOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ud3JpdGFibGUKKworVHJ1ZSBpZiBjb25zb2xlIGlzIGFuIG91dHB1dCBidWZmZXIuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fd3JpdGFibGVfaW1wbCh3aW5jb25zb2xlaW8gKnNlbGYpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTBhMmFkN2VhZTVhYmY2NyBpbnB1dD1jZWZiZDhhYmMyNGRmNmEwXSovCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIGVycl9jbG9zZWQoKTsKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKChsb25nKSBzZWxmLT53cml0YWJsZSk7Cit9CisKK3N0YXRpYyBEV09SRAorX2J1Zmxlbih3aW5jb25zb2xlaW8gKnNlbGYpCit7CisgICAgZm9yIChEV09SRCBpID0gMDsgaSA8IFNNQUxMQlVGOyArK2kpIHsKKyAgICAgICAgaWYgKCFzZWxmLT5idWZbaV0pCisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICB9CisgICAgcmV0dXJuIFNNQUxMQlVGOworfQorCitzdGF0aWMgRFdPUkQKK19jb3B5ZnJvbWJ1Zih3aW5jb25zb2xlaW8gKnNlbGYsIGNoYXIgKmJ1ZiwgRFdPUkQgbGVuKQoreworICAgIERXT1JEIG4gPSAwOworCisgICAgd2hpbGUgKHNlbGYtPmJ1ZlswXSAmJiBsZW4tLSkgeworICAgICAgICBidWZbbisrXSA9IHNlbGYtPmJ1ZlswXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBTTUFMTEJVRjsgKytpKQorICAgICAgICAgICAgc2VsZi0+YnVmW2kgLSAxXSA9IHNlbGYtPmJ1ZltpXTsKKyAgICAgICAgc2VsZi0+YnVmW1NNQUxMQlVGIC0gMV0gPSAwOworICAgIH0KKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgd2NoYXJfdCAqCityZWFkX2NvbnNvbGVfdyhIQU5ETEUgaGFuZGxlLCBEV09SRCBtYXhsZW4sIERXT1JEICpyZWFkbGVuKSB7CisgICAgaW50IGVyciA9IDAsIHNpZyA9IDA7CisKKyAgICB3Y2hhcl90ICpidWYgPSAod2NoYXJfdCopUHlNZW1fTWFsbG9jKG1heGxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgaWYgKCFidWYpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAqcmVhZGxlbiA9IDA7CisKKyAgICAvL0RlYnVnQnJlYWsoKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgRFdPUkQgb2ZmID0gMDsKKyAgICB3aGlsZSAob2ZmIDwgbWF4bGVuKSB7CisgICAgICAgIERXT1JEIG4sIGxlbiA9IG1pbihtYXhsZW4gLSBvZmYsIEJVRlNJWik7CisgICAgICAgIFNldExhc3RFcnJvcigwKTsKKyAgICAgICAgQk9PTCByZXMgPSBSZWFkQ29uc29sZVcoaGFuZGxlLCAmYnVmW29mZl0sIGxlbiwgJm4sIE5VTEwpOworCisgICAgICAgIGlmICghcmVzKSB7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgaWYgKGVyciAhPSBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVyciA9IDA7CisgICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCAxMDAsIEZBTFNFKQorICAgICAgICAgICAgICAgICAgICA9PSBXQUlUX09CSkVDVF8wKSB7CisgICAgICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworICAgICAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKKyAgICAgICAgICAgICAgICBzaWcgPSBQeUVycl9DaGVja1NpZ25hbHMoKTsKKyAgICAgICAgICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKKyAgICAgICAgICAgICAgICBpZiAoc2lnIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgKnJlYWRsZW4gKz0gbjsKKworICAgICAgICAvKiBJZiB3ZSBkaWRuJ3QgcmVhZCBhIGZ1bGwgYnVmZmVyIHRoYXQgdGltZSwgZG9uJ3QgdHJ5CisgICAgICAgICAgIGFnYWluIG9yIHdlIHdpbGwgYmxvY2sgYSBzZWNvbmQgdGltZS4gKi8KKyAgICAgICAgaWYgKG4gPCBsZW4pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLyogSWYgdGhlIGJ1ZmZlciBlbmRlZCB3aXRoIGEgbmV3bGluZSwgYnJlYWsgb3V0ICovCisgICAgICAgIGlmIChidWZbKnJlYWRsZW4gLSAxXSA9PSAnXG4nKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qIElmIHRoZSBidWZmZXIgZW5kcyB3aXRoIGEgaGlnaCBzdXJyb2dhdGUsIGV4cGFuZCB0aGUKKyAgICAgICAgICAgYnVmZmVyIGFuZCByZWFkIGFuIGV4dHJhIGNoYXJhY3Rlci4gKi8KKyAgICAgICAgV09SRCBjaGFyX3R5cGU7CisgICAgICAgIGlmIChvZmYgKyBCVUZTSVogPj0gbWF4bGVuICYmCisgICAgICAgICAgICBHZXRTdHJpbmdUeXBlVyhDVF9DVFlQRTMsICZidWZbKnJlYWRsZW4gLSAxXSwgMSwgJmNoYXJfdHlwZSkgJiYKKyAgICAgICAgICAgIGNoYXJfdHlwZSA9PSBDM19ISUdIU1VSUk9HQVRFKSB7CisgICAgICAgICAgICB3Y2hhcl90ICpuZXdidWY7CisgICAgICAgICAgICBtYXhsZW4gKz0gMTsKKyAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKKyAgICAgICAgICAgIG5ld2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9SZWFsbG9jKGJ1ZiwgbWF4bGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIFB5X1VOQkxPQ0tfVEhSRUFEUworICAgICAgICAgICAgaWYgKCFuZXdidWYpIHsKKyAgICAgICAgICAgICAgICBzaWcgPSAtMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZiA9IG5ld2J1ZjsKKyAgICAgICAgICAgIC8qIE9ubHkgYWR2YW5jZSBieSBuIGFuZCBub3QgQlVGU0laIGluIHRoaXMgY2FzZSAqLworICAgICAgICAgICAgb2ZmICs9IG47CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIG9mZiArPSBCVUZTSVo7CisgICAgfQorCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChzaWcpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKGVycikgeworICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmICgqcmVhZGxlbiA+IDAgJiYgYnVmWzBdID09IEwnXHgxYScpIHsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBidWYgPSAod2NoYXJfdCAqKVB5TWVtX01hbGxvYyhzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBpZiAoIWJ1ZikKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGJ1ZlswXSA9IEwnXDAnOworICAgICAgICAqcmVhZGxlbiA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIGJ1ZjsKKworZXJyb3I6CisgICAgaWYgKGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBQeV9zc2l6ZV90CityZWFkaW50byh3aW5jb25zb2xlaW8gKnNlbGYsIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBlcnJfY2xvc2VkKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFzZWxmLT5yZWFkYWJsZSkgeworICAgICAgICBlcnJfbW9kZSgicmVhZGluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChsZW4gPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxlbiA+IEJVRk1BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImNhbm5vdCByZWFkIG1vcmUgdGhhbiAlZCBieXRlcyIsIEJVRk1BWCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBFYWNoIGNoYXJhY3RlciBtYXkgdGFrZSB1cCB0byA0IGJ5dGVzIGluIHRoZSBmaW5hbCBidWZmZXIuCisgICAgICAgVGhpcyBpcyBoaWdobHkgY29uc2VydmF0aXZlLCBidXQgbmVjZXNzYXJ5IHRvIGF2b2lkCisgICAgICAgZmFpbHVyZSBmb3IgYW55IGdpdmVuIFVuaWNvZGUgaW5wdXQgKGUuZy4gXFUwMDEwZmZmZikuCisgICAgICAgSWYgdGhlIGNhbGxlciByZXF1ZXN0cyBmZXdlciB0aGFuIDQgYnl0ZXMsIHdlIGJ1ZmZlciBvbmUKKyAgICAgICBjaGFyYWN0ZXIuCisgICAgKi8KKyAgICBEV09SRCB3bGVuID0gKERXT1JEKShsZW4gLyA0KTsKKyAgICBpZiAod2xlbiA9PSAwKSB7CisgICAgICAgIHdsZW4gPSAxOworICAgIH0KKworICAgIERXT1JEIHJlYWRfbGVuID0gX2NvcHlmcm9tYnVmKHNlbGYsIGJ1ZiwgKERXT1JEKWxlbik7CisgICAgaWYgKHJlYWRfbGVuKSB7CisgICAgICAgIGJ1ZiA9ICZidWZbcmVhZF9sZW5dOworICAgICAgICBsZW4gLT0gcmVhZF9sZW47CisgICAgICAgIHdsZW4gLT0gMTsKKyAgICB9CisgICAgaWYgKGxlbiA9PSByZWFkX2xlbiB8fCB3bGVuID09IDApCisgICAgICAgIHJldHVybiByZWFkX2xlbjsKKworICAgIERXT1JEIG47CisgICAgd2NoYXJfdCAqd2J1ZiA9IHJlYWRfY29uc29sZV93KHNlbGYtPmhhbmRsZSwgd2xlbiwgJm4pOworICAgIGlmICh3YnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobiA9PSAwKSB7CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgICAgIHJldHVybiByZWFkX2xlbjsKKyAgICB9CisKKyAgICBpbnQgZXJyID0gMDsKKyAgICBEV09SRCB1OG4gPSAwOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChsZW4gPCA0KSB7CisgICAgICAgIGlmIChXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICAgICAgc2VsZi0+YnVmLCBzaXplb2Yoc2VsZi0+YnVmKSAvIHNpemVvZihzZWxmLT5idWZbMF0pLAorICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpKQorICAgICAgICAgICAgdThuID0gX2NvcHlmcm9tYnVmKHNlbGYsIGJ1ZiwgKERXT1JEKWxlbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdThuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCBuLAorICAgICAgICAgICAgYnVmLCAoRFdPUkQpbGVuLCBOVUxMLCBOVUxMKTsKKyAgICB9CisKKyAgICBpZiAodThuKSB7CisgICAgICAgIHJlYWRfbGVuICs9IHU4bjsKKyAgICAgICAgdThuID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKSB7CisgICAgICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIG5lZWRlZCBidWZmZXIgZm9yIGEgbW9yZSB1c2VmdWwgZXJyb3IsIGFzIHRoaXMKKyAgICAgICAgICAgICAgICBtZWFucyBvdXIgIi8gNCIgbG9naWMgYWJvdmUgaXMgaW5zdWZmaWNpZW50IGZvciBzb21lIGlucHV0LgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHU4biA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgbiwKKyAgICAgICAgICAgICAgICBOVUxMLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlNZW1fRnJlZSh3YnVmKTsKKworICAgIGlmICh1OG4pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgIkJ1ZmZlciBoYWQgcm9vbSBmb3IgJWQgYnl0ZXMgYnV0ICVkIGJ5dGVzIHJlcXVpcmVkIiwKKyAgICAgICAgICAgIGxlbiwgdThuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoZXJyKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVhZF9sZW47Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkaW50bworICAgIGJ1ZmZlcjogUHlfYnVmZmVyKGFjY2VwdD17cndidWZmZXJ9KQorICAgIC8KKworU2FtZSBhcyBSYXdJT0Jhc2UucmVhZGludG8oKS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkaW50b19pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfYnVmZmVyICpidWZmZXIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjZkMWJkZmEzZjIwYWYzOSBpbnB1dD00ZWQ2OGRhNDhhNmJhZmZlXSovCit7CisgICAgUHlfc3NpemVfdCBsZW4gPSByZWFkaW50byhzZWxmLCBidWZmZXItPmJ1ZiwgYnVmZmVyLT5sZW4pOworICAgIGlmIChsZW4gPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKK30KKworc3RhdGljIERXT1JECituZXdfYnVmZmVyc2l6ZSh3aW5jb25zb2xlaW8gKnNlbGYsIERXT1JEIGN1cnJlbnRzaXplKQoreworICAgIERXT1JEIGFkZGVuZDsKKworICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKKyAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiAgRm9yIGJpZ2dlciBzaXplcywgdXNlIGEKKyAgICAgICBsZXNzLXRoYW4tZG91YmxlIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCisgICAgaWYgKGN1cnJlbnRzaXplID4gNjU1MzYpCisgICAgICAgIGFkZGVuZCA9IGN1cnJlbnRzaXplID4+IDM7CisgICAgZWxzZQorICAgICAgICBhZGRlbmQgPSAyNTYgKyBjdXJyZW50c2l6ZTsKKyAgICBpZiAoYWRkZW5kIDwgU01BTExDSFVOSykKKyAgICAgICAgLyogQXZvaWQgdGlueSByZWFkKCkgY2FsbHMuICovCisgICAgICAgIGFkZGVuZCA9IFNNQUxMQ0hVTks7CisgICAgcmV0dXJuIGFkZGVuZCArIGN1cnJlbnRzaXplOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8ucmVhZGFsbAorCitSZWFkIGFsbCBkYXRhIGZyb20gdGhlIGNvbnNvbGUsIHJldHVybmVkIGFzIGJ5dGVzLgorCitSZXR1cm4gYW4gZW1wdHkgYnl0ZXMgb2JqZWN0IGF0IEVPRi4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19pb19fV2luZG93c0NvbnNvbGVJT19yZWFkYWxsX2ltcGwod2luY29uc29sZWlvICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU2ZDMxMmM2ODRmNmUyM2IgaW5wdXQ9NDAyNGQ2NDlhMTAwNmU2OV0qLworeworICAgIHdjaGFyX3QgKmJ1ZjsKKyAgICBEV09SRCBidWZzaXplLCBuLCBsZW4gPSAwOworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBEV09SRCBieXRlc19zaXplLCBybjsKKworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisKKyAgICBidWZzaXplID0gQlVGU0laOworCisgICAgYnVmID0gKHdjaGFyX3QqKVB5TWVtX01hbGxvYygoYnVmc2l6ZSArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgd2NoYXJfdCAqc3ViYnVmOworCisgICAgICAgIGlmIChsZW4gPj0gKFB5X3NzaXplX3QpYnVmc2l6ZSkgeworICAgICAgICAgICAgRFdPUkQgbmV3c2l6ZSA9IG5ld19idWZmZXJzaXplKHNlbGYsIGxlbik7CisgICAgICAgICAgICBpZiAobmV3c2l6ZSA+IEJVRk1BWCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChuZXdzaXplIDwgYnVmc2l6ZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5ib3VuZGVkIHJlYWQgcmV0dXJuZWQgbW9yZSBieXRlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGFuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBjYW4gaG9sZCIpOworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1ZnNpemUgPSBuZXdzaXplOworCisgICAgICAgICAgICBidWYgPSBQeU1lbV9SZWFsbG9jKGJ1ZiwgKGJ1ZnNpemUgKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBpZiAoIWJ1ZikgeworICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN1YmJ1ZiA9IHJlYWRfY29uc29sZV93KHNlbGYtPmhhbmRsZSwgYnVmc2l6ZSAtIGxlbiwgJm4pOworCisgICAgICAgIGlmIChzdWJidWYgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAobiA+IDApCisgICAgICAgICAgICB3Y3NuY3B5X3MoJmJ1ZltsZW5dLCBidWZzaXplIC0gbGVuICsgMSwgc3ViYnVmLCBuKTsKKworICAgICAgICBQeU1lbV9GcmVlKHN1YmJ1Zik7CisKKyAgICAgICAgLyogd2hlbiB0aGUgcmVhZCBpcyBlbXB0eSB3ZSBicmVhayAqLworICAgICAgICBpZiAobiA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgbGVuICs9IG47CisgICAgfQorCisgICAgaWYgKGxlbiA9PSAwICYmIF9idWZsZW4oc2VsZikgPT0gMCkgeworICAgICAgICAvKiB3aGVuIHRoZSByZXN1bHQgc3RhcnRzIHdpdGggXlogd2UgcmV0dXJuIGFuIGVtcHR5IGJ1ZmZlciAqLworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KKworICAgIGlmIChsZW4pIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBieXRlc19zaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBidWYsIGxlbiwKKyAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmICghYnl0ZXNfc2l6ZSkgeworICAgICAgICAgICAgRFdPUkQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGJ5dGVzX3NpemUgPSAwOworICAgIH0KKworICAgIGJ5dGVzX3NpemUgKz0gX2J1ZmxlbihzZWxmKTsKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNfc2l6ZSk7CisgICAgcm4gPSBfY29weWZyb21idWYoc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBieXRlc19zaXplKTsKKworICAgIGlmIChsZW4pIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBieXRlc19zaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCBidWYsIGxlbiwKKyAgICAgICAgICAgICZQeUJ5dGVzX0FTX1NUUklORyhieXRlcylbcm5dLCBieXRlc19zaXplIC0gcm4sIE5VTEwsIE5VTEwpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgICAgIGlmICghYnl0ZXNfc2l6ZSkgeworICAgICAgICAgICAgRFdPUkQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGFkZCBiYWNrIHRoZSBudW1iZXIgb2YgcHJlc2VydmVkIGJ5dGVzICovCisgICAgICAgIGJ5dGVzX3NpemUgKz0gcm47CisgICAgfQorCisgICAgUHlNZW1fRnJlZShidWYpOworICAgIGlmIChieXRlc19zaXplIDwgKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSkgeworICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgbiAqIHNpemVvZih3Y2hhcl90KSkgPCAwKSB7CisgICAgICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK19pby5fV2luZG93c0NvbnNvbGVJTy5yZWFkCisgICAgc2l6ZTogaW9fc3NpemVfdCA9IC0xCisgICAgLworCitSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcywgcmV0dXJuZWQgYXMgYnl0ZXMuCisKK09ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsIHdoZW4gc2l6ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsCitzbyBsZXNzIGRhdGEgbWF5IGJlIHJldHVybmVkIHRoYW4gcmVxdWVzdGVkLgorUmV0dXJuIGFuIGVtcHR5IGJ5dGVzIG9iamVjdCBhdCBFT0YuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfaW9fX1dpbmRvd3NDb25zb2xlSU9fcmVhZF9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU3ZGY2OGFmOWY0YjIyZDAgaW5wdXQ9NmM1NmZjZWVjNDYwZjFkZF0qLworeworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBQeV9zc2l6ZV90IGJ5dGVzX3NpemU7CisKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworICAgIGlmICghc2VsZi0+cmVhZGFibGUpCisgICAgICAgIHJldHVybiBlcnJfbW9kZSgicmVhZGluZyIpOworCisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gX2lvX19XaW5kb3dzQ29uc29sZUlPX3JlYWRhbGxfaW1wbChzZWxmKTsKKyAgICBpZiAoc2l6ZSA+IEJVRk1BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImNhbm5vdCByZWFkIG1vcmUgdGhhbiAlZCBieXRlcyIsIEJVRk1BWCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBieXRlc19zaXplID0gcmVhZGludG8oc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CisgICAgaWYgKGJ5dGVzX3NpemUgPCAwKSB7CisgICAgICAgIFB5X0NMRUFSKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGJ5dGVzX3NpemUgPCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSkgeworICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgYnl0ZXNfc2l6ZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9DTEVBUihieXRlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBieXRlczsKK30KKworLypbY2xpbmljIGlucHV0XQorX2lvLl9XaW5kb3dzQ29uc29sZUlPLndyaXRlCisgICAgYjogUHlfYnVmZmVyCisgICAgLworCitXcml0ZSBidWZmZXIgYiB0byBmaWxlLCByZXR1cm4gbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisKK09ubHkgbWFrZXMgb25lIHN5c3RlbSBjYWxsLCBzbyBub3QgYWxsIG9mIHRoZSBkYXRhIG1heSBiZSB3cml0dGVuLgorVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuIGlzIHJldHVybmVkLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX3dyaXRlX2ltcGwod2luY29uc29sZWlvICpzZWxmLCBQeV9idWZmZXIgKmIpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Nzc1YmRiMTZmYmY5MTM3YiBpbnB1dD1iZTM1ZmI2MjRmOTdjOTQxXSovCit7CisgICAgQk9PTCByZXMgPSBUUlVFOworICAgIHdjaGFyX3QgKndidWY7CisgICAgRFdPUkQgbGVuLCB3bGVuLCBuID0gMDsKKworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CisgICAgaWYgKCFzZWxmLT53cml0YWJsZSkKKyAgICAgICAgcmV0dXJuIGVycl9tb2RlKCJ3cml0aW5nIik7CisKKyAgICBpZiAoYi0+bGVuID4gQlVGTUFYKQorICAgICAgICBsZW4gPSBCVUZNQVg7CisgICAgZWxzZQorICAgICAgICBsZW4gPSAoRFdPUkQpYi0+bGVuOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIGItPmJ1ZiwgbGVuLCBOVUxMLCAwKTsKKworICAgIC8qIGlzc3VlMTEzOTUgdGhlcmUgaXMgYW4gdW5zcGVjaWZpZWQgdXBwZXIgYm91bmQgb24gaG93IG1hbnkgYnl0ZXMKKyAgICAgICBjYW4gYmUgd3JpdHRlbiBhdCBvbmNlLiBXZSBjYXAgYXQgMzJrIC0gdGhlIGNhbGxlciB3aWxsIGhhdmUgdG8KKyAgICAgICBoYW5kbGUgcGFydGlhbCB3cml0ZXMuCisgICAgICAgU2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgbWFueSBpbnB1dCBieXRlcyBhcmUgYmVpbmcgaWdub3JlZCwgd2UKKyAgICAgICBoYXZlIHRvIHJlZHVjZSBhbmQgcmVjYWxjdWxhdGUuICovCisgICAgd2hpbGUgKHdsZW4gPiAzMjc2NiAvIHNpemVvZih3Y2hhcl90KSkgeworICAgICAgICBsZW4gLz0gMjsKKyAgICAgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYi0+YnVmLCBsZW4sIE5VTEwsIDApOworICAgIH0KKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCF3bGVuKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICB3YnVmID0gKHdjaGFyX3QqKVB5TWVtX01hbGxvYyh3bGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBiLT5idWYsIGxlbiwgd2J1Ziwgd2xlbik7CisgICAgaWYgKHdsZW4pIHsKKyAgICAgICAgcmVzID0gV3JpdGVDb25zb2xlVyhzZWxmLT5oYW5kbGUsIHdidWYsIHdsZW4sICZuLCBOVUxMKTsKKyAgICAgICAgaWYgKG4gPCB3bGVuKSB7CisgICAgICAgICAgICAvKiBXcm90ZSBmZXdlciBjaGFyYWN0ZXJzIHRoYW4gZXhwZWN0ZWQsIHdoaWNoIG1lYW5zIG91cgorICAgICAgICAgICAgICogbGVuIHZhbHVlIG1heSBiZSB3cm9uZy4gU28gcmVjYWxjdWxhdGUgaXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAqIGNoYXJhY3RlcnMgdGhhdCB3ZXJlIHdyaXR0ZW4uIEFzIHRoaXMgY291bGQgcG90ZW50aWFsbHkKKyAgICAgICAgICAgICAqIHJlc3VsdCBpbiBhIGRpZmZlcmVudCB2YWx1ZSwgd2UgYWxzbyB2YWxpZGF0ZSB0aGF0IHZhbHVlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIG4sCisgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICBpZiAobGVuKSB7CisgICAgICAgICAgICAgICAgd2xlbiA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgYi0+YnVmLCBsZW4sCisgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGFzc2VydCh3bGVuID09IGxlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgcmVzID0gMDsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFyZXMpIHsKKyAgICAgICAgRFdPUkQgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUod2J1Zik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luY29uc29sZWlvX3JlcHIod2luY29uc29sZWlvICpzZWxmKQoreworICAgIGlmIChzZWxmLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5fV2luZG93c0NvbnNvbGVJTyBbY2xvc2VkXT4iKTsKKworICAgIGlmIChzZWxmLT5yZWFkYWJsZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLl9XaW5kb3dzQ29uc29sZUlPIG1vZGU9J3JiJyBjbG9zZWZkPSVzPiIsCisgICAgICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA/ICJUcnVlIiA6ICJGYWxzZSIpOworICAgIGlmIChzZWxmLT53cml0YWJsZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8X2lvLl9XaW5kb3dzQ29uc29sZUlPIG1vZGU9J3diJyBjbG9zZWZkPSVzPiIsCisgICAgICAgICAgICBzZWxmLT5jbG9zZWhhbmRsZSA/ICJUcnVlIiA6ICJGYWxzZSIpOworCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiX1dpbmRvd3NDb25zb2xlSU8gaGFzIGludmFsaWQgbW9kZSIpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfaW8uX1dpbmRvd3NDb25zb2xlSU8uaXNhdHR5CisKK0Fsd2F5cyBUcnVlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX2lvX19XaW5kb3dzQ29uc29sZUlPX2lzYXR0eV9pbXBsKHdpbmNvbnNvbGVpbyAqc2VsZikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZWFjMDlkMjg3YzExYmQ3IGlucHV0PTliOTE1OTFkYmUzNTZmODZdKi8KK3sKKyAgICBpZiAoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOworCisgICAgUHlfUkVUVVJOX1RSVUU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5jb25zb2xlaW9fZ2V0c3RhdGUod2luY29uc29sZWlvICpzZWxmKQoreworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2VyaWFsaXplICclcycgb2JqZWN0IiwgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNpbmNsdWRlICJjbGluaWMvd2luY29uc29sZWlvLmMuaCIKKworc3RhdGljIFB5TWV0aG9kRGVmIHdpbmNvbnNvbGVpb19tZXRob2RzW10gPSB7CisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBTExfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURJTlRPX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklURV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fQ0xPU0VfTUVUSE9EREVGCisgICAgX0lPX19XSU5ET1dTQ09OU09MRUlPX1JFQURBQkxFX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19XUklUQUJMRV9NRVRIT0RERUYKKyAgICBfSU9fX1dJTkRPV1NDT05TT0xFSU9fRklMRU5PX01FVEhPRERFRgorICAgIF9JT19fV0lORE9XU0NPTlNPTEVJT19JU0FUVFlfTUVUSE9EREVGCisgICAgeyJfX2dldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pd2luY29uc29sZWlvX2dldHN0YXRlLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEwsICAgICAgICAgICBOVUxMfSAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworLyogJ2Nsb3NlZCcgYW5kICdtb2RlJyBhcmUgYXR0cmlidXRlcyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEZpbGVJTy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jbG9zZWQod2luY29uc29sZWlvICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2Nsb3NlZmQod2luY29uc29sZWlvICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmNsb3NlaGFuZGxlKSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfbW9kZSh3aW5jb25zb2xlaW8gKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNlbGYtPnJlYWRhYmxlID8gInJiIiA6ICJ3YiIpOworfQorCitzdGF0aWMgUHlHZXRTZXREZWYgd2luY29uc29sZWlvX2dldHNldGxpc3RbXSA9IHsKKyAgICB7ImNsb3NlZCIsIChnZXR0ZXIpZ2V0X2Nsb3NlZCwgTlVMTCwgIlRydWUgaWYgdGhlIGZpbGUgaXMgY2xvc2VkIn0sCisgICAgeyJjbG9zZWZkIiwgKGdldHRlcilnZXRfY2xvc2VmZCwgTlVMTCwKKyAgICAgICAgIlRydWUgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciB3aWxsIGJlIGNsb3NlZCBieSBjbG9zZSgpLiJ9LAorICAgIHsibW9kZSIsIChnZXR0ZXIpZ2V0X21vZGUsIE5VTEwsICJTdHJpbmcgZ2l2aW5nIHRoZSBmaWxlIG1vZGUifSwKKyAgICB7TlVMTH0sCit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgd2luY29uc29sZWlvX21lbWJlcnNbXSA9IHsKKyAgICB7Il9ibGtzaXplIiwgVF9VSU5ULCBvZmZzZXRvZih3aW5jb25zb2xlaW8sIGJsa3NpemUpLCAwfSwKKyAgICB7Il9maW5hbGl6aW5nIiwgVF9CT09MLCBvZmZzZXRvZih3aW5jb25zb2xlaW8sIGZpbmFsaXppbmcpLCAwfSwKKyAgICB7TlVMTH0KK307CisKK1B5VHlwZU9iamVjdCBQeVdpbmRvd3NDb25zb2xlSU9fVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2lvLl9XaW5kb3dzQ29uc29sZUlPIiwKKyAgICBzaXplb2Yod2luY29uc29sZWlvKSwKKyAgICAwLAorICAgIChkZXN0cnVjdG9yKXdpbmNvbnNvbGVpb19kZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKXdpbmNvbnNvbGVpb19yZXByLCAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRQorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBfaW9fX1dpbmRvd3NDb25zb2xlSU9fX19pbml0X19fX2RvY19fLCAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2Mpd2luY29uc29sZWlvX3RyYXZlcnNlLCAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSl3aW5jb25zb2xlaW9fY2xlYXIsICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKHdpbmNvbnNvbGVpbywgd2Vha3JlZmxpc3QpLCAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgd2luY29uc29sZWlvX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgd2luY29uc29sZWlvX21lbWJlcnMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgd2luY29uc29sZWlvX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgb2Zmc2V0b2Yod2luY29uc29sZWlvLCBkaWN0KSwgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgX2lvX19XaW5kb3dzQ29uc29sZUlPX19faW5pdF9fLCAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHdpbmNvbnNvbGVpb19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLworfTsKKworUHlBUElfREFUQShQeU9iamVjdCAqKSBfUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUgPSAoUHlPYmplY3QqKSZQeVdpbmRvd3NDb25zb2xlSU9fVHlwZTsKKworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2pzb24uYyBiL01vZHVsZXMvX2pzb24uYwppbmRleCBmODJhZjM0Li5kM2RiZjk4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19qc29uLmMKKysrIGIvTW9kdWxlcy9fanNvbi5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZW5jb2RlZF9jb25zdChQeU9iamVjdCAqb2JqKTsKIHN0YXRpYyB2b2lkCi1yYWlzZV9lcnJtc2coY2hhciAqbXNnLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBlbmQpOworcmFpc2VfZXJybXNnKGNvbnN0IGNoYXIgKm1zZywgUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgZW5kKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBlbmNvZGVyX2VuY29kZV9zdHJpbmcoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqb2JqKTsKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMjEsNyArMzIxLDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLXJhaXNlX2Vycm1zZyhjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCkKK3JhaXNlX2Vycm1zZyhjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpzLCBQeV9zc2l6ZV90IGVuZCkKIHsKICAgICAvKiBVc2UgSlNPTkRlY29kZUVycm9yIGV4Y2VwdGlvbiB0byByYWlzZSBhIG5pY2UgbG9va2luZyBWYWx1ZUVycm9yIHN1YmNsYXNzICovCiAgICAgc3RhdGljIFB5T2JqZWN0ICpKU09ORGVjb2RlRXJyb3IgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwppbmRleCBiMTMwN2VmLi5mZWIzODAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYworKysgYi9Nb2R1bGVzL19sb2NhbGVtb2R1bGUuYwpAQCAtNDksNyArNDksNyBAQAogCiAvKiB0aGUgZ3JvdXBpbmcgaXMgdGVybWluYXRlZCBieSBlaXRoZXIgMCBvciBDSEFSX01BWCAqLwogc3RhdGljIFB5T2JqZWN0KgotY29weV9ncm91cGluZyhjaGFyKiBzKQorY29weV9ncm91cGluZyhjb25zdCBjaGFyKiBzKQogewogICAgIGludCBpOwogICAgIFB5T2JqZWN0ICpyZXN1bHQsICp2YWwgPSBOVUxMOwpAQCAtNjIyLDUzICs2MjIsMzQgQEAKIFB5TU9ESU5JVF9GVU5DCiBQeUluaXRfX2xvY2FsZSh2b2lkKQogewotICAgIFB5T2JqZWN0ICptLCAqZCwgKng7CisgICAgUHlPYmplY3QgKm07CiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICiAgICAgaW50IGk7CiAjZW5kaWYKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9sb2NhbGVtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCi0gICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX0NUWVBFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfQ1RZUEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19USU1FKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTENfVElNRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7Ci0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKExDX0NPTExBVEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19DT0xMQVRFIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKLQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfTU9ORVRBUlkpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19NT05FVEFSWSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTENfQ1RZUEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX1RJTUUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX0NPTExBVEUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIExDX01PTkVUQVJZKTsKIAogI2lmZGVmIExDX01FU1NBR0VTCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19NRVNTQUdFUyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX01FU1NBR0VTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19NRVNTQUdFUyk7CiAjZW5kaWYgLyogTENfTUVTU0FHRVMgKi8KIAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoTENfTlVNRVJJQyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkxDX05VTUVSSUMiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhMQ19BTEwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJMQ19BTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOwotCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhDSEFSX01BWCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNIQVJfTUFYIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19OVU1FUklDKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBMQ19BTEwpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENIQVJfTUFYKTsKIAogICAgIEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJsb2NhbGUuRXJyb3IiLCBOVUxMLCBOVUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRXJyb3IiLCBFcnJvcik7CisgICAgaWYgKEVycm9yID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJFcnJvciIsIEVycm9yKTsKIAogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAogICAgIGZvciAoaSA9IDA7IGxhbmdpbmZvX2NvbnN0YW50c1tpXS5uYW1lOyBpKyspIHsKQEAgLTY3Niw2ICs2NTcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ2luZm9fY29uc3RhbnRzW2ldLnZhbHVlKTsKICAgICB9CiAjZW5kaWYKKworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiBtOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sc3Byb2YuYyBiL01vZHVsZXMvX2xzcHJvZi5jCmluZGV4IDY2ZTUzNGYuLmRjM2Y4YWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2xzcHJvZi5jCisrKyBiL01vZHVsZXMvX2xzcHJvZi5jCkBAIC0yLDE3ICsyLDEzIEBACiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJyb3RhdGluZ3RyZWUuaCIKIAotI2lmICFkZWZpbmVkKEhBVkVfTE9OR19MT05HKQotI2Vycm9yICJUaGlzIG1vZHVsZSByZXF1aXJlcyBsb25nIGxvbmdzISIKLSNlbmRpZgotCiAvKioqIFNlbGVjdGlvbiBvZiBhIGhpZ2gtcHJlY2lzaW9uIHRpbWVyICoqKi8KIAogI2lmZGVmIE1TX1dJTkRPV1MKIAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KIAotc3RhdGljIFBZX0xPTkdfTE9ORworc3RhdGljIGxvbmcgbG9uZwogaHBUaW1lcih2b2lkKQogewogICAgIExBUkdFX0lOVEVHRVIgbGk7CkBAIC0zOSwxMSArMzUsMTEgQEAKICNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KICNpbmNsdWRlIDxzeXMvdGltZXMuaD4KIAotc3RhdGljIFBZX0xPTkdfTE9ORworc3RhdGljIGxvbmcgbG9uZwogaHBUaW1lcih2b2lkKQogewogICAgIHN0cnVjdCB0aW1ldmFsIHR2OwotICAgIFBZX0xPTkdfTE9ORyByZXQ7CisgICAgbG9uZyBsb25nIHJldDsKICNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKICAgICBnZXR0aW1lb2ZkYXkoJnR2KTsKICNlbHNlCkBAIC03MCw4ICs2Niw4IEBACiAvKiByZXByZXNlbnRzIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gYW5vdGhlciBmdW5jdGlvbiAqLwogdHlwZWRlZiBzdHJ1Y3QgX1Byb2ZpbGVyU3ViRW50cnkgewogICAgIHJvdGF0aW5nX25vZGVfdCBoZWFkZXI7Ci0gICAgUFlfTE9OR19MT05HIHR0OwotICAgIFBZX0xPTkdfTE9ORyBpdDsKKyAgICBsb25nIGxvbmcgdHQ7CisgICAgbG9uZyBsb25nIGl0OwogICAgIGxvbmcgY2FsbGNvdW50OwogICAgIGxvbmcgcmVjdXJzaXZlY2FsbGNvdW50OwogICAgIGxvbmcgcmVjdXJzaW9uTGV2ZWw7CkBAIC04MSw4ICs3Nyw4IEBACiB0eXBlZGVmIHN0cnVjdCBfUHJvZmlsZXJFbnRyeSB7CiAgICAgcm90YXRpbmdfbm9kZV90IGhlYWRlcjsKICAgICBQeU9iamVjdCAqdXNlck9iajsgLyogUHlDb2RlT2JqZWN0LCBvciBhIGRlc2NyaXB0aXZlIHN0ciBmb3IgYnVpbHRpbnMgKi8KLSAgICBQWV9MT05HX0xPTkcgdHQ7IC8qIHRvdGFsIHRpbWUgaW4gdGhpcyBlbnRyeSAqLwotICAgIFBZX0xPTkdfTE9ORyBpdDsgLyogaW5saW5lIHRpbWUgaW4gdGhpcyBlbnRyeSAobm90IGluIHN1YmNhbGxzKSAqLworICAgIGxvbmcgbG9uZyB0dDsgLyogdG90YWwgdGltZSBpbiB0aGlzIGVudHJ5ICovCisgICAgbG9uZyBsb25nIGl0OyAvKiBpbmxpbmUgdGltZSBpbiB0aGlzIGVudHJ5IChub3QgaW4gc3ViY2FsbHMpICovCiAgICAgbG9uZyBjYWxsY291bnQ7IC8qIGhvdyBtYW55IHRpbWVzIHRoaXMgd2FzIGNhbGxlZCAqLwogICAgIGxvbmcgcmVjdXJzaXZlY2FsbGNvdW50OyAvKiBob3cgbWFueSB0aW1lcyBjYWxsZWQgcmVjdXJzaXZlbHkgKi8KICAgICBsb25nIHJlY3Vyc2lvbkxldmVsOwpAQCAtOTAsOCArODYsOCBAQAogfSBQcm9maWxlckVudHJ5OwogCiB0eXBlZGVmIHN0cnVjdCBfUHJvZmlsZXJDb250ZXh0IHsKLSAgICBQWV9MT05HX0xPTkcgdDA7Ci0gICAgUFlfTE9OR19MT05HIHN1YnQ7CisgICAgbG9uZyBsb25nIHQwOworICAgIGxvbmcgbG9uZyBzdWJ0OwogICAgIHN0cnVjdCBfUHJvZmlsZXJDb250ZXh0ICpwcmV2aW91czsKICAgICBQcm9maWxlckVudHJ5ICpjdHhFbnRyeTsKIH0gUHJvZmlsZXJDb250ZXh0OwpAQCAtMTIxLDkgKzExNyw5IEBACiAjZGVmaW5lIERPVUJMRV9USU1FUl9QUkVDSVNJT04gICA0Mjk0OTY3Mjk2LjAKIHN0YXRpYyBQeU9iamVjdCAqZW1wdHlfdHVwbGU7CiAKLXN0YXRpYyBQWV9MT05HX0xPTkcgQ2FsbEV4dGVybmFsVGltZXIoUHJvZmlsZXJPYmplY3QgKnBPYmopCitzdGF0aWMgbG9uZyBsb25nIENhbGxFeHRlcm5hbFRpbWVyKFByb2ZpbGVyT2JqZWN0ICpwT2JqKQogewotICAgIFBZX0xPTkdfTE9ORyByZXN1bHQ7CisgICAgbG9uZyBsb25nIHJlc3VsdDsKICAgICBQeU9iamVjdCAqbyA9IFB5T2JqZWN0X0NhbGwocE9iai0+ZXh0ZXJuYWxUaW1lciwgZW1wdHlfdHVwbGUsIE5VTEwpOwogICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHBPYmotPmV4dGVybmFsVGltZXIpOwpAQCAtMTM2LDExICsxMzIsMTEgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIGludGVycHJldCB0aGUgcmVzdWx0IGFzIGEgZG91YmxlIG1lYXN1cmVkIGluIHNlY29uZHMuCi0gICAgICAgICAgIEFzIHRoZSBwcm9maWxlciB3b3JrcyB3aXRoIFBZX0xPTkdfTE9ORyBpbnRlcm5hbGx5CisgICAgICAgICAgIEFzIHRoZSBwcm9maWxlciB3b3JrcyB3aXRoIGxvbmcgbG9uZyBpbnRlcm5hbGx5CiAgICAgICAgICAgIHdlIGNvbnZlcnQgaXQgdG8gYSBsYXJnZSBpbnRlZ2VyICovCiAgICAgICAgIGRvdWJsZSB2YWwgPSBQeUZsb2F0X0FzRG91YmxlKG8pOwogICAgICAgICAvKiBlcnJvciBoYW5kbGluZyBkZWxheWVkIHRvIHRoZSBjb2RlIGJlbG93ICovCi0gICAgICAgIHJlc3VsdCA9IChQWV9MT05HX0xPTkcpICh2YWwgKiBET1VCTEVfVElNRVJfUFJFQ0lTSU9OKTsKKyAgICAgICAgcmVzdWx0ID0gKGxvbmcgbG9uZykgKHZhbCAqIERPVUJMRV9USU1FUl9QUkVDSVNJT04pOwogICAgIH0KICAgICBQeV9ERUNSRUYobyk7CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTM0Miw4ICszMzgsOCBAQAogc3RhdGljIHZvaWQKIFN0b3AoUHJvZmlsZXJPYmplY3QgKnBPYmosIFByb2ZpbGVyQ29udGV4dCAqc2VsZiwgUHJvZmlsZXJFbnRyeSAqZW50cnkpCiB7Ci0gICAgUFlfTE9OR19MT05HIHR0ID0gQ0FMTF9USU1FUihwT2JqKSAtIHNlbGYtPnQwOwotICAgIFBZX0xPTkdfTE9ORyBpdCA9IHR0IC0gc2VsZi0+c3VidDsKKyAgICBsb25nIGxvbmcgdHQgPSBDQUxMX1RJTUVSKHBPYmopIC0gc2VsZi0+dDA7CisgICAgbG9uZyBsb25nIGl0ID0gdHQgLSBzZWxmLT5zdWJ0OwogICAgIGlmIChzZWxmLT5wcmV2aW91cykKICAgICAgICAgc2VsZi0+cHJldmlvdXMtPnN1YnQgKz0gdHQ7CiAgICAgcE9iai0+Y3VycmVudFByb2ZpbGVyQ29udGV4dCA9IHNlbGYtPnByZXZpb3VzOwpAQCAtNzYyLDcgKzc1OCw2IEBACiBzdGF0aWMgaW50CiBwcm9maWxlcl9pbml0KFByb2ZpbGVyT2JqZWN0ICpwT2JqLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewotICAgIFB5T2JqZWN0ICpvOwogICAgIFB5T2JqZWN0ICp0aW1lciA9IE5VTEw7CiAgICAgZG91YmxlIHRpbWV1bml0ID0gMC4wOwogICAgIGludCBzdWJjYWxscyA9IDE7CkBAIC03NzcsMTEgKzc3Miw5IEBACiAKICAgICBpZiAoc2V0U3ViY2FsbHMocE9iaiwgc3ViY2FsbHMpIDwgMCB8fCBzZXRCdWlsdGlucyhwT2JqLCBidWlsdGlucykgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgbyA9IHBPYmotPmV4dGVybmFsVGltZXI7Ci0gICAgcE9iai0+ZXh0ZXJuYWxUaW1lciA9IHRpbWVyOwotICAgIFB5X1hJTkNSRUYodGltZXIpOwotICAgIFB5X1hERUNSRUYobyk7CiAgICAgcE9iai0+ZXh0ZXJuYWxUaW1lclVuaXQgPSB0aW1ldW5pdDsKKyAgICBQeV9YSU5DUkVGKHRpbWVyKTsKKyAgICBQeV9YU0VUUkVGKHBPYmotPmV4dGVybmFsVGltZXIsIHRpbWVyKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHptYW1vZHVsZS5jIGIvTW9kdWxlcy9fbHptYW1vZHVsZS5jCmluZGV4IDc0YzMwMWQuLmY1ZGNlYTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2x6bWFtb2R1bGUuYworKysgYi9Nb2R1bGVzL19sem1hbW9kdWxlLmMKQEAgLTE4LDEyICsxOCw2IEBACiAKICNpbmNsdWRlIDxsem1hLmg+CiAKLQotI2lmbmRlZiBQWV9MT05HX0xPTkcKLSNlcnJvciAiVGhpcyBtb2R1bGUgcmVxdWlyZXMgUFlfTE9OR19MT05HIHRvIGJlIGRlZmluZWQiCi0jZW5kaWYKLQotCiAjaWZkZWYgV0lUSF9USFJFQUQKICNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCiAgICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDApKSB7IFwKQEAgLTE2Myw3ICsxNTcsNyBAQAogICAgICAgdWludDMyX3QgLSB0aGUgIkkiICh1bnNpZ25lZCBpbnQpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQgc2l6ZSwgYnV0CiAgICAgICBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93cyBvbiBjb252ZXJzaW9uLgogCi0gICAgICBsem1hX3ZsaSAtIHRoZSAiSyIgKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgc3BlY2lmaWVyIGlzIHRoZSByaWdodAorICAgICAgbHptYV92bGkgLSB0aGUgIksiICh1bnNpZ25lZCBsb25nIGxvbmcpIHNwZWNpZmllciBpcyB0aGUgcmlnaHQKICAgICAgIHNpemUsIGJ1dCBsaWtlICJJIiBpdCBzaWxlbnRseSBpZ25vcmVzIG92ZXJmbG93cyBvbiBjb252ZXJzaW9uLgogCiAgICAgICBsem1hX21vZGUgYW5kIGx6bWFfbWF0Y2hfZmluZGVyIC0gdGhlc2UgYXJlIGVudW1lcmF0aW9uIHR5cGVzLCBhbmQKQEAgLTE3NiwxMiArMTcwLDEyIEBACiAgICAgc3RhdGljIGludCBcCiAgICAgRlVOQ05BTUUoUHlPYmplY3QgKm9iaiwgdm9pZCAqcHRyKSBcCiAgICAgeyBcCi0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWw7IFwKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHZhbDsgXAogICAgICAgICBcCiAgICAgICAgIHZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcob2JqKTsgXAogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgXAogICAgICAgICAgICAgcmV0dXJuIDA7IFwKLSAgICAgICAgaWYgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKFRZUEUpdmFsICE9IHZhbCkgeyBcCisgICAgICAgIGlmICgodW5zaWduZWQgbG9uZyBsb25nKShUWVBFKXZhbCAhPSB2YWwpIHsgXAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUgdG9vIGxhcmdlIGZvciAiICNUWVBFICIgdHlwZSIpOyBcCiAgICAgICAgICAgICByZXR1cm4gMDsgXApAQCAtMzk4LDcgKzM5Miw3IEBACiAgICBQeXRob24tbGV2ZWwgZmlsdGVyIHNwZWNpZmllcnMgKHJlcHJlc2VudGVkIGFzIGRpY3RzKS4gKi8KIAogc3RhdGljIGludAotc3BlY19hZGRfZmllbGQoUHlPYmplY3QgKnNwZWMsIF9QeV9JZGVudGlmaWVyICprZXksIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZSkKK3NwZWNfYWRkX2ZpZWxkKFB5T2JqZWN0ICpzcGVjLCBfUHlfSWRlbnRpZmllciAqa2V5LCB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWUpCiB7CiAgICAgaW50IHN0YXR1czsKICAgICBQeU9iamVjdCAqdmFsdWVfb2JqZWN0OwpAQCAtNTUzLDcgKzU0Nyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BQ29tcHJlc3Nvci5jb21wcmVzcwogCi0gICAgc2VsZjogc2VsZih0eXBlPSJDb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtNTY3LDcgKzU2MCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BQ29tcHJlc3Nvcl9jb21wcmVzc19pbXBsKENvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMWY2MTUxMzY5NjNlMDBmIGlucHV0PThiNjBjYjEzZTBjZTY0MjBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMWY2MTUxMzY5NjNlMDBmIGlucHV0PTY0MDE5ZWFjN2YyY2M4ZDBdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtNTgzLDggKzU3Niw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BQ29tcHJlc3Nvci5mbHVzaAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJDb21wcmVzc29yICoiKQotCiBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuCiAKIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0IGluIGludGVybmFsIGJ1ZmZlcnMuCkBAIC01OTQsNyArNTg1LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9sem1hX0xaTUFDb21wcmVzc29yX2ZsdXNoX2ltcGwoQ29tcHJlc3NvciAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWMyMWYzZTIyNTA0ZjUwIGlucHV0PTMwNjBmYjI2ZjliNDA0MmNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWMyMWYzZTIyNTA0ZjUwIGlucHV0PTZiMzY5MzAzZjY3YWQwYThdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtNjk4LDcgKzY4OSw2IEBACiAvKlstY2xpbmljIGlucHV0XQogX2x6bWEuTFpNQUNvbXByZXNzb3IuX19pbml0X18KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iQ29tcHJlc3NvciAqIikKICAgICBmb3JtYXQ6IGludChjX2RlZmF1bHQ9IkZPUk1BVF9YWiIpID0gRk9STUFUX1haCiAgICAgICAgIFRoZSBjb250YWluZXIgZm9ybWF0IHRvIHVzZSBmb3IgdGhlIG91dHB1dC4gIFRoaXMgY2FuCiAgICAgICAgIGJlIEZPUk1BVF9YWiAoZGVmYXVsdCksIEZPUk1BVF9BTE9ORSwgb3IgRk9STUFUX1JBVy4KQEAgLTEwNjUsNyArMTA1NSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfbHptYS5MWk1BRGVjb21wcmVzc29yLmRlY29tcHJlc3MKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iRGVjb21wcmVzc29yICoiKQogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgIG1heF9sZW5ndGg6IFB5X3NzaXplX3Q9LTEKIApAQCAtMTA4OCw3ICsxMDc3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZjRlMjBlYzcxMjIyNDFkIGlucHV0PWYyYmI5MDJjYzFjYWYyMDNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lZjRlMjBlYzcxMjIyNDFkIGlucHV0PTYwYzFmMTM1ODIwZTMwOWRdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIApAQCAtMTEyOCw3ICsxMTE3LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIF9sem1hLkxaTUFEZWNvbXByZXNzb3IuX19pbml0X18KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iRGVjb21wcmVzc29yICoiKQogICAgIGZvcm1hdDogaW50KGNfZGVmYXVsdD0iRk9STUFUX0FVVE8iKSA9IEZPUk1BVF9BVVRPCiAgICAgICAgIFNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCBvZiB0aGUgaW5wdXQgc3RyZWFtLiAgSWYgdGhpcyBpcwogICAgICAgICBGT1JNQVRfQVVUTyAodGhlIGRlZmF1bHQpLCB0aGUgZGVjb21wcmVzc29yIHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3QKQEAgLTExNTQsNyArMTE0Miw3IEBACiBzdGF0aWMgaW50CiBfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoRGVjb21wcmVzc29yICpzZWxmLCBpbnQgZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptZW1saW1pdCwgUHlPYmplY3QgKmZpbHRlcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2UxODIxZjhhYTM2NTY0YyBpbnB1dD00NThjYTYxMzJlZjI5ODAxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2UxODIxZjhhYTM2NTY0YyBpbnB1dD04MWZlNjg0YTZjMmY4YTI3XSovCiB7CiAgICAgY29uc3QgdWludDMyX3QgZGVjb2Rlcl9mbGFncyA9IExaTUFfVEVMTF9BTllfQ0hFQ0sgfCBMWk1BX1RFTExfTk9fQ0hFQ0s7CiAgICAgdWludDY0X3QgbWVtbGltaXRfID0gVUlOVDY0X01BWDsKQEAgLTE0NDksNyArMTQzNyw3IEBACiAvKiBTb21lIG9mIG91ciBjb25zdGFudHMgYXJlIG1vcmUgdGhhbiAzMiBiaXRzIHdpZGUsIHNvIFB5TW9kdWxlX0FkZEludENvbnN0YW50CiAgICB3b3VsZCBub3Qgd29yayBjb3JyZWN0bHkgb24gcGxhdGZvcm1zIHdpdGggMzItYml0IGxvbmdzLiAqLwogc3RhdGljIGludAotbW9kdWxlX2FkZF9pbnRfY29uc3RhbnQoUHlPYmplY3QgKm0sIGNvbnN0IGNoYXIgKm5hbWUsIFBZX0xPTkdfTE9ORyB2YWx1ZSkKK21vZHVsZV9hZGRfaW50X2NvbnN0YW50KFB5T2JqZWN0ICptLCBjb25zdCBjaGFyICpuYW1lLCBsb25nIGxvbmcgdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKm8gPSBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbHVlKTsKICAgICBpZiAobyA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCmluZGV4IDRhZTYzOGUuLmQ5MmE4YmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYworKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIHsicmVjdiIsIG11bHRpcHJvY2Vzc2luZ19yZWN2LCBNRVRIX1ZBUkFSR1MsICIifSwKICAgICB7InNlbmQiLCBtdWx0aXByb2Nlc3Npbmdfc2VuZCwgTUVUSF9WQVJBUkdTLCAiIn0sCiAjZW5kaWYKLSNpZm5kZWYgUE9TSVhfU0VNQVBIT1JFU19OT1RfRU5BQkxFRAorI2lmICFkZWZpbmVkKFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQpICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAgIHsic2VtX3VubGluayIsIF9QeU1wX3NlbV91bmxpbmssIE1FVEhfVkFSQVJHUywgIiJ9LAogI2VuZGlmCiAgICAge05VTEx9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmggYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKaW5kZXggOWFlZWE4ZC4uNTEyYmMxNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCisrKyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaApAQCAtNjAsNyArNjAsNyBAQAogI2lmIFNJWkVPRl9WT0lEX1AgPT0gU0laRU9GX0xPTkcKICMgIGRlZmluZSBGX1BPSU5URVIgImsiCiAjICBkZWZpbmUgVF9QT0lOVEVSIFRfVUxPTkcKLSNlbGlmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIChTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HX0xPTkcpCisjZWxpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HX0xPTkcKICMgIGRlZmluZSBGX1BPSU5URVIgIksiCiAjICBkZWZpbmUgVF9QT0lOVEVSIFRfVUxPTkdMT05HCiAjZWxzZQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fb3BlcmF0b3IuYyBiL01vZHVsZXMvX29wZXJhdG9yLmMKaW5kZXggZGZmZjFkMi4uZmI4ZWFmYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fb3BlcmF0b3IuYworKysgYi9Nb2R1bGVzL19vcGVyYXRvci5jCkBAIC0xMTExLDYgKzExMTEsOCBAQAogICAgICAgICBQeU9iamVjdCAqZnVuY3Rvb2xzOwogICAgICAgICBQeU9iamVjdCAqcGFydGlhbDsKICAgICAgICAgUHlPYmplY3QgKmNvbnN0cnVjdG9yOworICAgICAgICBQeU9iamVjdCAqbmV3YXJnc1syXTsKKwogICAgICAgICBfUHlfSURFTlRJRklFUihwYXJ0aWFsKTsKICAgICAgICAgZnVuY3Rvb2xzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJmdW5jdG9vbHMiKTsKICAgICAgICAgaWYgKCFmdW5jdG9vbHMpCkBAIC0xMTE5LDE3ICsxMTIxLDExIEBACiAgICAgICAgIFB5X0RFQ1JFRihmdW5jdG9vbHMpOwogICAgICAgICBpZiAoIXBhcnRpYWwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbmV3YXJncyA9IFB5VHVwbGVfTmV3KDIpOwotICAgICAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGFydGlhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYoUHlfVFlQRShtYykpOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIChQeU9iamVjdCAqKVB5X1RZUEUobWMpKTsKLSAgICAgICAgUHlfSU5DUkVGKG1jLT5uYW1lKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAxLCBtYy0+bmFtZSk7Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gUHlPYmplY3RfQ2FsbChwYXJ0aWFsLCBuZXdhcmdzLCBtYy0+a3dkcyk7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKworICAgICAgICBuZXdhcmdzWzBdID0gKFB5T2JqZWN0ICopUHlfVFlQRShtYyk7CisgICAgICAgIG5ld2FyZ3NbMV0gPSBtYy0+bmFtZTsKKyAgICAgICAgY29uc3RydWN0b3IgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHBhcnRpYWwsIG5ld2FyZ3MsIDIsIG1jLT5rd2RzKTsKKwogICAgICAgICBQeV9ERUNSRUYocGFydGlhbCk7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOTyIsIGNvbnN0cnVjdG9yLCBtYy0+YXJncyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcGlja2xlLmMgYi9Nb2R1bGVzL19waWNrbGUuYwppbmRleCAzYzIxYjZhLi5mYzE2YzYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19waWNrbGUuYworKysgYi9Nb2R1bGVzL19waWNrbGUuYwpAQCAtMTUzLDYgKzE1Myw5IEBACiAgICAgUHlPYmplY3QgKmNvZGVjc19lbmNvZGU7CiAgICAgLyogYnVpbHRpbnMuZ2V0YXR0ciwgdXNlZCBmb3Igc2F2aW5nIG5lc3RlZCBuYW1lcyB3aXRoIHByb3RvY29sIDwgNCAqLwogICAgIFB5T2JqZWN0ICpnZXRhdHRyOworICAgIC8qIGZ1bmN0b29scy5wYXJ0aWFsLCB1c2VkIGZvciBpbXBsZW1lbnRpbmcgX19uZXdvYmpfZXhfXyB3aXRoIHByb3RvY29scworICAgICAgIDIgYW5kIDMgKi8KKyAgICBQeU9iamVjdCAqcGFydGlhbDsKIH0gUGlja2xlU3RhdGU7CiAKIC8qIEZvcndhcmQgZGVjbGFyYXRpb24gb2YgdGhlIF9waWNrbGUgbW9kdWxlIGRlZmluaXRpb24uICovCkBAIC0xOTAsNiArMTkzLDcgQEAKICAgICBQeV9DTEVBUihzdC0+aW1wb3J0X21hcHBpbmdfM3RvMik7CiAgICAgUHlfQ0xFQVIoc3QtPmNvZGVjc19lbmNvZGUpOwogICAgIFB5X0NMRUFSKHN0LT5nZXRhdHRyKTsKKyAgICBQeV9DTEVBUihzdC0+cGFydGlhbCk7CiB9CiAKIC8qIEluaXRpYWxpemUgdGhlIGdpdmVuIHBpY2tsZSBtb2R1bGUgc3RhdGUuICovCkBAIC0yMDAsNiArMjA0LDcgQEAKICAgICBQeU9iamVjdCAqY29weXJlZyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvbXBhdF9waWNrbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb2RlY3MgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jdG9vbHMgPSBOVUxMOwogCiAgICAgYnVpbHRpbnMgPSBQeUV2YWxfR2V0QnVpbHRpbnMoKTsKICAgICBpZiAoYnVpbHRpbnMgPT0gTlVMTCkKQEAgLTMxNCwxMiArMzE5LDIxIEBACiAgICAgfQogICAgIFB5X0NMRUFSKGNvZGVjcyk7CiAKKyAgICBmdW5jdG9vbHMgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImZ1bmN0b29scyIpOworICAgIGlmICghZnVuY3Rvb2xzKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHN0LT5wYXJ0aWFsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmdW5jdG9vbHMsICJwYXJ0aWFsIik7CisgICAgaWYgKCFzdC0+cGFydGlhbCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihmdW5jdG9vbHMpOworCiAgICAgcmV0dXJuIDA7CiAKICAgZXJyb3I6CiAgICAgUHlfQ0xFQVIoY29weXJlZyk7CiAgICAgUHlfQ0xFQVIoY29tcGF0X3BpY2tsZSk7CiAgICAgUHlfQ0xFQVIoY29kZWNzKTsKKyAgICBQeV9DTEVBUihmdW5jdG9vbHMpOwogICAgIF9QaWNrbGVfQ2xlYXJTdGF0ZShzdCk7CiAgICAgcmV0dXJuIC0xOwogfQpAQCAtMzMxLDQzICszNDUsMjAgQEAKIF9QaWNrbGVfRmFzdENhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeU9iamVjdCAqYXJnX3R1cGxlID0gUHlUdXBsZV9OZXcoMSk7CiAKLSAgICAvKiBOb3RlOiB0aGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmV1c2UgdGhlIGFyZ3VtZW50IHR1cGxlLiBUaGlzIHVzZWQgdG8gZ2l2ZQotICAgICAgIGEgc2xpZ2h0IHBlcmZvcm1hbmNlIGJvb3N0IHdpdGggb2xkZXIgcGlja2xlIGltcGxlbWVudGF0aW9ucyB3aGVyZSBtYW55Ci0gICAgICAgdW5idWZmZXJlZCByZWFkcyBvY2N1cnJlZCAodGh1cyBuZWVkaW5nIG1hbnkgZnVuY3Rpb24gY2FsbHMpLgotCi0gICAgICAgSG93ZXZlciwgdGhpcyBvcHRpbWl6YXRpb24gd2FzIHJlbW92ZWQgYmVjYXVzZSBpdCB3YXMgdG9vIGNvbXBsaWNhdGVkCi0gICAgICAgdG8gZ2V0IHJpZ2h0LiBJdCBhYnVzZWQgdGhlIEMgQVBJIGZvciB0dXBsZXMgdG8gbXV0YXRlIHRoZW0gd2hpY2ggbGVkCi0gICAgICAgdG8gc3VidGxlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgY29uY3VycmVuY3kgYnVncy4gRnVydGhlcm1vcmUsIHRoZQotICAgICAgIGludHJvZHVjdGlvbiBvZiBwcm90b2NvbCA0IGFuZCB0aGUgcHJlZmV0Y2hpbmcgb3B0aW1pemF0aW9uIHZpYSBwZWVrKCkKLSAgICAgICBzaWduaWZpY2FudGx5IHJlZHVjZWQgdGhlIG51bWJlciBvZiBmdW5jdGlvbiBjYWxscyB3ZSBkby4gVGh1cywgdGhlCi0gICAgICAgYmVuZWZpdHMgYmVjYW1lIG1hcmdpbmFsIGF0IGJlc3QuICovCi0KLSAgICBpZiAoYXJnX3R1cGxlID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ190dXBsZSwgMCwgb2JqKTsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ190dXBsZSwgTlVMTCk7Ci0gICAgUHlfQ0xFQVIoYXJnX3R1cGxlKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgb2JqKTsKKyAgICBQeV9ERUNSRUYob2JqKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIGludAotc3RhY2tfdW5kZXJmbG93KHZvaWQpCi17Ci0gICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAidW5waWNrbGluZyBzdGFjayB1bmRlcmZsb3ciKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qIEludGVybmFsIGRhdGEgdHlwZSB1c2VkIGFzIHRoZSB1bnBpY2tsaW5nIHN0YWNrLiAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X1ZBUl9IRUFECiAgICAgUHlPYmplY3QgKipkYXRhOworICAgIGludCBtYXJrX3NldDsgICAgICAgICAgLyogaXMgTUFSSyBzZXQ/ICovCisgICAgUHlfc3NpemVfdCBmZW5jZTsgICAgICAvKiBwb3NpdGlvbiBvZiB0b3AgTUFSSyBvciAwICovCiAgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQ7ICAvKiBudW1iZXIgb2Ygc2xvdHMgaW4gZGF0YSBhbGxvY2F0ZWQgKi8KIH0gUGRhdGE7CiAKQEAgLTM5OCw2ICszODksOCBAQAogICAgIGlmICghKHNlbGYgPSBQeU9iamVjdF9OZXcoUGRhdGEsICZQZGF0YV9UeXBlKSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X1NJWkUoc2VsZikgPSAwOworICAgIHNlbGYtPm1hcmtfc2V0ID0gMDsKKyAgICBzZWxmLT5mZW5jZSA9IDA7CiAgICAgc2VsZi0+YWxsb2NhdGVkID0gODsKICAgICBzZWxmLT5kYXRhID0gUHlNZW1fTUFMTE9DKHNlbGYtPmFsbG9jYXRlZCAqIHNpemVvZihQeU9iamVjdCAqKSk7CiAgICAgaWYgKHNlbGYtPmRhdGEpCkBAIC00MTUsOCArNDA4LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IGkgPSBQeV9TSVpFKHNlbGYpOwogCi0gICAgaWYgKGNsZWFydG8gPCAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgYXNzZXJ0KGNsZWFydG8gPj0gc2VsZi0+ZmVuY2UpOwogICAgIGlmIChjbGVhcnRvID49IGkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC00NTIsNiArNDQ0LDE3IEBACiAgICAgcmV0dXJuIC0xOwogfQogCitzdGF0aWMgaW50CitQZGF0YV9zdGFja191bmRlcmZsb3coUGRhdGEgKnNlbGYpCit7CisgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5tYXJrX3NldCA/CisgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE1BUksgZm91bmQiIDoKKyAgICAgICAgICAgICAgICAgICAgInVucGlja2xpbmcgc3RhY2sgdW5kZXJmbG93Iik7CisgICAgcmV0dXJuIC0xOworfQorCiAvKiBEIGlzIGEgUGRhdGEqLiAgUG9wIHRoZSB0b3Btb3N0IGVsZW1lbnQgYW5kIHN0b3JlIGl0IGludG8gViwgd2hpY2gKICAqIG11c3QgYmUgYW4gbHZhbHVlIGhvbGRpbmcgUHlPYmplY3QqLiAgT24gc3RhY2sgdW5kZXJmbG93LCBVbnBpY2tsaW5nRXJyb3IKICAqIGlzIHJhaXNlZCBhbmQgViBpcyBzZXQgdG8gTlVMTC4KQEAgLTQ1OSw5ICs0NjIsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFBkYXRhX3BvcChQZGF0YSAqc2VsZikKIHsKLSAgICBpZiAoUHlfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJiYWQgcGlja2xlIGRhdGEiKTsKKyAgICBpZiAoUHlfU0laRShzZWxmKSA8PSBzZWxmLT5mZW5jZSkgeworICAgICAgICBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gc2VsZi0+ZGF0YVstLVB5X1NJWkUoc2VsZildOwpAQCAtNDkzLDYgKzQ5NSwxMCBAQAogICAgIFB5T2JqZWN0ICp0dXBsZTsKICAgICBQeV9zc2l6ZV90IGxlbiwgaSwgajsKIAorICAgIGlmIChzdGFydCA8IHNlbGYtPmZlbmNlKSB7CisgICAgICAgIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGxlbiA9IFB5X1NJWkUoc2VsZikgLSBzdGFydDsKICAgICB0dXBsZSA9IFB5VHVwbGVfTmV3KGxlbik7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCkBAIC04NjAsNyArODY2LDcgQEAKIHsKICAgICBzaXplX3QgaTsKIAotICAgIGFzc2VydChzaXplb2Yoc2l6ZV90KSA8PSA4KTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHNpemVfdCkgPD0gOCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHNpemVfdCk7IGkrKykgewogICAgICAgICBvdXRbaV0gPSAodW5zaWduZWQgY2hhcikoKHZhbHVlID4+ICg4ICogaSkpICYgMHhmZik7CkBAIC0xMDg2LDYgKzEwOTIsMTQgQEAKIH0KIAogc3RhdGljIGludAorYmFkX3JlYWRsaW5lKHZvaWQpCit7CisgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLCAicGlja2xlIGRhdGEgd2FzIHRydW5jYXRlZCIpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGludAogX1VucGlja2xlcl9Ta2lwQ29uc3VtZWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmKQogewogICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7CkBAIC0xMTM0LDkgKzExNDgsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAobiA9PSBSRUFEX1dIT0xFX0xJTkUpIHsKLSAgICAgICAgUHlPYmplY3QgKmVtcHR5X3R1cGxlID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGRhdGEgPSBQeU9iamVjdF9DYWxsKHNlbGYtPnJlYWRsaW5lLCBlbXB0eV90dXBsZSwgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihlbXB0eV90dXBsZSk7CisgICAgICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKHNlbGYtPnJlYWRsaW5lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0ICpsZW47CkBAIC0xMTc0LDYgKzExODYsMzYgQEAKICAgICByZXR1cm4gcmVhZF9zaXplOwogfQogCisvKiBEb24ndCBjYWxsIGl0IGRpcmVjdGx5OiB1c2UgX1VucGlja2xlcl9SZWFkKCkgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitfVW5waWNrbGVyX1JlYWRJbXBsKFVucGlja2xlck9iamVjdCAqc2VsZiwgY2hhciAqKnMsIFB5X3NzaXplX3QgbikKK3sKKyAgICBQeV9zc2l6ZV90IG51bV9yZWFkOworCisgICAgKnMgPSBOVUxMOworICAgIGlmIChzZWxmLT5uZXh0X3JlYWRfaWR4ID4gUFlfU1NJWkVfVF9NQVggLSBuKSB7CisgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVhZCB3b3VsZCBvdmVyZmxvdyAoaW52YWxpZCBieXRlY29kZSkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIFRoaXMgY2FzZSBpcyBoYW5kbGVkIGJ5IHRoZSBfVW5waWNrbGVyX1JlYWQoKSBtYWNybyBmb3IgZWZmaWNpZW5jeSAqLworICAgIGFzc2VydChzZWxmLT5uZXh0X3JlYWRfaWR4ICsgbiA+IHNlbGYtPmlucHV0X2xlbik7CisKKyAgICBpZiAoIXNlbGYtPnJlYWQpCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKKworICAgIG51bV9yZWFkID0gX1VucGlja2xlcl9SZWFkRnJvbUZpbGUoc2VsZiwgbik7CisgICAgaWYgKG51bV9yZWFkIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChudW1fcmVhZCA8IG4pCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKKyAgICAqcyA9IHNlbGYtPmlucHV0X2J1ZmZlcjsKKyAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbjsKKyAgICByZXR1cm4gbjsKK30KKwogLyogUmVhZCBgbmAgYnl0ZXMgZnJvbSB0aGUgdW5waWNrbGVyJ3MgZGF0YSBzb3VyY2UsIHN0b3JpbmcgdGhlIHJlc3VsdCBpbiBgKnNgLgogCiAgICBUaGlzIHNob3VsZCBiZSB1c2VkIGZvciBhbGwgZGF0YSByZWFkcywgcmF0aGVyIHRoYW4gYWNjZXNzaW5nIHRoZSB1bnBpY2tsZXIncwpAQCAtMTE4NywzOCArMTIyOSwxMiBAQAogCiAgICBSZXR1cm5zIC0xICh3aXRoIGFuIGV4Y2VwdGlvbiBzZXQpIG9uIGZhaWx1cmUuIE9uIHN1Y2Nlc3MsIHJldHVybiB0aGUKICAgIG51bWJlciBvZiBjaGFycyByZWFkLiAqLwotc3RhdGljIFB5X3NzaXplX3QKLV9VbnBpY2tsZXJfUmVhZChVbnBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKipzLCBQeV9zc2l6ZV90IG4pCi17Ci0gICAgUHlfc3NpemVfdCBudW1fcmVhZDsKLQotICAgICpzID0gTlVMTDsKLSAgICBpZiAoc2VsZi0+bmV4dF9yZWFkX2lkeCA+IFBZX1NTSVpFX1RfTUFYIC0gbikgewotICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzdC0+VW5waWNrbGluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQgd291bGQgb3ZlcmZsb3cgKGludmFsaWQgYnl0ZWNvZGUpIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHNlbGYtPm5leHRfcmVhZF9pZHggKyBuIDw9IHNlbGYtPmlucHV0X2xlbikgewotICAgICAgICAqcyA9IHNlbGYtPmlucHV0X2J1ZmZlciArIHNlbGYtPm5leHRfcmVhZF9pZHg7Ci0gICAgICAgIHNlbGYtPm5leHRfcmVhZF9pZHggKz0gbjsKLSAgICAgICAgcmV0dXJuIG47Ci0gICAgfQotICAgIGlmICghc2VsZi0+cmVhZCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfRU9GRXJyb3IsICJSYW4gb3V0IG9mIGlucHV0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBuKTsKLSAgICBpZiAobnVtX3JlYWQgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKG51bV9yZWFkIDwgbikgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfRU9GRXJyb3IsICJSYW4gb3V0IG9mIGlucHV0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgKnMgPSBzZWxmLT5pbnB1dF9idWZmZXI7Ci0gICAgc2VsZi0+bmV4dF9yZWFkX2lkeCA9IG47Ci0gICAgcmV0dXJuIG47Ci19CisjZGVmaW5lIF9VbnBpY2tsZXJfUmVhZChzZWxmLCBzLCBuKSBcCisgICAgKCgobikgPD0gKHNlbGYpLT5pbnB1dF9sZW4gLSAoc2VsZiktPm5leHRfcmVhZF9pZHgpICAgICAgXAorICAgICA/ICgqKHMpID0gKHNlbGYpLT5pbnB1dF9idWZmZXIgKyAoc2VsZiktPm5leHRfcmVhZF9pZHgsIFwKKyAgICAgICAgKHNlbGYpLT5uZXh0X3JlYWRfaWR4ICs9IChuKSwgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChuKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA6IF9VbnBpY2tsZXJfUmVhZEltcGwoc2VsZiwgKHMpLCAobikpKQogCiBzdGF0aWMgUHlfc3NpemVfdAogX1VucGlja2xlcl9Db3B5TGluZShVbnBpY2tsZXJPYmplY3QgKnNlbGYsIGNoYXIgKmxpbmUsIFB5X3NzaXplX3QgbGVuLApAQCAtMTIzOCw3ICsxMjU0LDcgQEAKIH0KIAogLyogUmVhZCBhIGxpbmUgZnJvbSB0aGUgaW5wdXQgc3RyZWFtL2J1ZmZlci4gSWYgd2UgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSBpbnB1dAotICAgYmVmb3JlIGhpdHRpbmcgXG4sIHJldHVybiB0aGUgZGF0YSB3ZSBmb3VuZC4KKyAgIGJlZm9yZSBoaXR0aW5nIFxuLCByYWlzZSBhbiBlcnJvci4KIAogICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJzIHJlYWQsIG9yIC0xIG9uIGZhaWx1cmUuICovCiBzdGF0aWMgUHlfc3NpemVfdApAQCAtMTI1NCwyMCArMTI3MCwxNiBAQAogICAgICAgICAgICAgcmV0dXJuIF9VbnBpY2tsZXJfQ29weUxpbmUoc2VsZiwgbGluZV9zdGFydCwgbnVtX3JlYWQsIHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHNlbGYtPnJlYWQpIHsKLSAgICAgICAgbnVtX3JlYWQgPSBfVW5waWNrbGVyX1JlYWRGcm9tRmlsZShzZWxmLCBSRUFEX1dIT0xFX0xJTkUpOwotICAgICAgICBpZiAobnVtX3JlYWQgPCAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbnVtX3JlYWQ7Ci0gICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7Ci0gICAgfQorICAgIGlmICghc2VsZi0+cmVhZCkKKyAgICAgICAgcmV0dXJuIGJhZF9yZWFkbGluZSgpOwogCi0gICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlJ3ZlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyaW5nLiBSZXR1cm4gdGhlCi0gICAgICAgcmVtYWluaW5nIHN0cmluZyBhbmQgbGV0IHRoZSBjYWxsZXIgZmlndXJlIGl0IG91dC4gKi8KLSAgICAqcmVzdWx0ID0gc2VsZi0+aW5wdXRfYnVmZmVyICsgc2VsZi0+bmV4dF9yZWFkX2lkeDsKLSAgICBudW1fcmVhZCA9IGkgLSBzZWxmLT5uZXh0X3JlYWRfaWR4OwotICAgIHNlbGYtPm5leHRfcmVhZF9pZHggPSBpOwotICAgIHJldHVybiBudW1fcmVhZDsKKyAgICBudW1fcmVhZCA9IF9VbnBpY2tsZXJfUmVhZEZyb21GaWxlKHNlbGYsIFJFQURfV0hPTEVfTElORSk7CisgICAgaWYgKG51bV9yZWFkIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChudW1fcmVhZCA9PSAwIHx8IHNlbGYtPmlucHV0X2J1ZmZlcltudW1fcmVhZCAtIDFdICE9ICdcbicpCisgICAgICAgIHJldHVybiBiYWRfcmVhZGxpbmUoKTsKKyAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbnVtX3JlYWQ7CisgICAgcmV0dXJuIF9VbnBpY2tsZXJfQ29weUxpbmUoc2VsZiwgc2VsZi0+aW5wdXRfYnVmZmVyLCBudW1fcmVhZCwgcmVzdWx0KTsKIH0KIAogLyogUmV0dXJucyAtMSAod2l0aCBhbiBleGNlcHRpb24gc2V0KSBvbiBmYWlsdXJlLCAwIG9uIHN1Y2Nlc3MuIFRoZSBtZW1vIGFycmF5CkBAIC0yMDk2LDM4ICsyMTA4LDM1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogcmF3X3VuaWNvZGVfZXNjYXBlKFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7Ci0gICAgc2l6ZV90IGV4cGFuZHNpemU7CiAgICAgdm9pZCAqZGF0YTsKICAgICB1bnNpZ25lZCBpbnQga2luZDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKwogICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvYmopOwogICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvYmopOwotICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQotICAgICAgICBleHBhbmRzaXplID0gMTA7Ci0gICAgZWxzZQotICAgICAgICBleHBhbmRzaXplID0gNjsKIAotICAgIGlmICgoc2l6ZV90KXNpemUgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOwotICAgIGlmIChyZXByID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiByZXByOwotICAgIGFzc2VydChQeV9SRUZDTlQocmVwcikgPT0gMSk7CisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKLSAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CisgICAgICAgICAgICAvKiAtMTogc3VidHJhY3QgMSBwcmVhbGxvY2F0ZWQgYnl0ZSAqLworICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcCwgMTAtMSk7CisgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CkBAIC0yMTM5LDggKzIxNDgsMTMgQEAKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KLSAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCisgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycywgJ1xcJyBhbmQgJ1xuJyB0byAnXHV4eHh4JyAqLwogICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYgfHwgY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXG4nKSB7CisgICAgICAgICAgICAvKiAtMTogc3VidHJhY3QgMSBwcmVhbGxvY2F0ZWQgYnl0ZSAqLworICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcCwgNi0xKTsKKyAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKwogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3UnOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKQEAgLTIxNTIsMTQgKzIxNjYsMTYgQEAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9Ci0gICAgc2l6ZSA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXByKTsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXByLCBzaXplKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiByZXByOworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKKworZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGludAotd3JpdGVfdXRmOChQaWNrbGVyT2JqZWN0ICpzZWxmLCBjaGFyICpkYXRhLCBQeV9zc2l6ZV90IHNpemUpCit3cml0ZV91dGY4KFBpY2tsZXJPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmRhdGEsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBjaGFyIGhlYWRlcls5XTsKICAgICBQeV9zc2l6ZV90IGxlbjsKQEAgLTI4NTgsNyArMjg3NCw3IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CiAKLSAgICAgICAgICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX2l0ZW1zLCAiKCkiKTsKKyAgICAgICAgICAgIGl0ZW1zID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX2l0ZW1zLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChpdGVtcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihpdGVtcyk7CkBAIC0zNTM1LDExICszNTUxLDkgQEAKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7Ci0gICAgICAgICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gNCkgewotICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwotICAgICAgICAgICAgICAgIHVzZV9uZXdvYmpfZXggPSBQeVVuaWNvZGVfQ29tcGFyZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7CisgICAgICAgICAgICB1c2VfbmV3b2JqX2V4ID0gUHlVbmljb2RlX0NvbXBhcmUoCisgICAgICAgICAgICAgICAgICAgIG5hbWUsIF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fbmV3b2JqX2V4X18pKSA9PSAwOwogICAgICAgICAgICAgaWYgKCF1c2VfbmV3b2JqX2V4KSB7CiAgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CiAgICAgICAgICAgICAgICAgdXNlX25ld29iaiA9IFB5VW5pY29kZV9Db21wYXJlKApAQCAtMzU4MywxMSArMzU5Nyw1OCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNhdmUoc2VsZiwgY2xzLCAwKSA8IDAgfHwKLSAgICAgICAgICAgIHNhdmUoc2VsZiwgYXJncywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBzYXZlKHNlbGYsIGt3YXJncywgMCkgPCAwIHx8Ci0gICAgICAgICAgICBfUGlja2xlcl9Xcml0ZShzZWxmLCAmbmV3b2JqX2V4X29wLCAxKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKHNlbGYtPnByb3RvID49IDQpIHsKKyAgICAgICAgICAgIGlmIChzYXZlKHNlbGYsIGNscywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgc2F2ZShzZWxmLCBhcmdzLCAwKSA8IDAgfHwKKyAgICAgICAgICAgICAgICBzYXZlKHNlbGYsIGt3YXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJm5ld29ial9leF9vcCwgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKm5ld2FyZ3M7CisgICAgICAgICAgICBQeU9iamVjdCAqY2xzX25ldzsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworCisgICAgICAgICAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcoUHlfU0laRShhcmdzKSArIDIpOworICAgICAgICAgICAgaWYgKG5ld2FyZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgIGNsc19uZXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNscywgJlB5SWRfX19uZXdfXyk7CisgICAgICAgICAgICBpZiAoY2xzX25ldyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMCwgY2xzX25ldyk7CisgICAgICAgICAgICBQeV9JTkNSRUYoY2xzKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgMSwgY2xzKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKGFyZ3MpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSArIDIsIGl0ZW0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYWJsZSA9IFB5T2JqZWN0X0NhbGwoc3QtPnBhcnRpYWwsIG5ld2FyZ3MsIGt3YXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV3YXJncyk7CisgICAgICAgICAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNhdmUoc2VsZiwgY2FsbGFibGUsIDApIDwgMCB8fAorICAgICAgICAgICAgICAgIHNhdmUoc2VsZiwgbmV3YXJncywgMCkgPCAwIHx8CisgICAgICAgICAgICAgICAgX1BpY2tsZXJfV3JpdGUoc2VsZiwgJnJlZHVjZV9vcCwgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmICh1c2VfbmV3b2JqKSB7CkBAIC0zODc3LDEwICszOTM4LDcgQEAKICAgICAgICAgICAgIC8qIENoZWNrIGZvciBhIF9fcmVkdWNlX18gbWV0aG9kLiAqLwogICAgICAgICAgICAgcmVkdWNlX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfX19yZWR1Y2VfXyk7CiAgICAgICAgICAgICBpZiAocmVkdWNlX2Z1bmMgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbXB0eV90dXBsZSA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICAgICAgICAgIHJlZHVjZV92YWx1ZSA9IFB5T2JqZWN0X0NhbGwocmVkdWNlX2Z1bmMsIGVtcHR5X3R1cGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGVtcHR5X3R1cGxlKTsKKyAgICAgICAgICAgICAgICByZWR1Y2VfdmFsdWUgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKHJlZHVjZV9mdW5jKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+UGlja2xpbmdFcnJvciwKQEAgLTQzOTcsNyArNDQ1NSw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIidtZW1vJyBhdHRyaWJ1dGUgbXVzdCBiZSBhbiBQaWNrbGVyTWVtb1Byb3h5IG9iamVjdCIKKyAgICAgICAgICAgICAgICAgICAgICInbWVtbycgYXR0cmlidXRlIG11c3QgYmUgYSBQaWNrbGVyTWVtb1Byb3h5IG9iamVjdCIKICAgICAgICAgICAgICAgICAgICAgICJvciBkaWN0LCBub3QgJS4yMDBzIiwgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTQ0MjYsOCArNDQ4NCw2IEBACiBzdGF0aWMgaW50CiBQaWNrbGVyX3NldF9wZXJzaWQoUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYnV0ZSBkZWxldGlvbiBpcyBub3Qgc3VwcG9ydGVkIik7CkBAIC00NDM5LDEwICs0NDk1LDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHRtcCA9IHNlbGYtPnBlcnNfZnVuYzsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHNlbGYtPnBlcnNfZnVuYyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsgICAgICAvKiBzZWxmLT5wZXJzX2Z1bmMgY2FuIGJlIE5VTEwsIHNvIGJlIGNhcmVmdWwuICovCisgICAgUHlfWFNFVFJFRihzZWxmLT5wZXJzX2Z1bmMsIHZhbHVlKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNDUyNCwxMyArNDU3OCwxOSBAQAogc3RhdGljIFB5X3NzaXplX3QKIG1hcmtlcihVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgIFB5X3NzaXplX3QgbWFyazsKKwogICAgIGlmIChzZWxmLT5udW1fbWFya3MgPCAxKSB7CisgICAgICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHN0LT5VbnBpY2tsaW5nRXJyb3IsICJjb3VsZCBub3QgZmluZCBNQVJLIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXR1cm4gc2VsZi0+bWFya3NbLS1zZWxmLT5udW1fbWFya3NdOworICAgIG1hcmsgPSBzZWxmLT5tYXJrc1stLXNlbGYtPm51bV9tYXJrc107CisgICAgc2VsZi0+c3RhY2stPm1hcmtfc2V0ID0gc2VsZi0+bnVtX21hcmtzICE9IDA7CisgICAgc2VsZi0+c3RhY2stPmZlbmNlID0gc2VsZi0+bnVtX21hcmtzID8KKyAgICAgICAgICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdIDogMDsKKyAgICByZXR1cm4gbWFyazsKIH0KIAogc3RhdGljIGludApAQCAtNDU0MSwxNCArNDYwMSw2IEBACiB9CiAKIHN0YXRpYyBpbnQKLWJhZF9yZWFkbGluZSh2b2lkKQotewotICAgIFBpY2tsZVN0YXRlICpzdCA9IF9QaWNrbGVfR2V0R2xvYmFsU3RhdGUoKTsKLSAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgInBpY2tsZSBkYXRhIHdhcyB0cnVuY2F0ZWQiKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBpbnQKIGxvYWRfaW50KFVucGlja2xlck9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqdmFsdWU7CkBAIC00OTkxLDcgKzUwNDMsNyBAQAogICAgIFB5T2JqZWN0ICp0dXBsZTsKIAogICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8IGxlbikKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKIAogICAgIHR1cGxlID0gUGRhdGFfcG9wdHVwbGUoc2VsZi0+c3RhY2ssIFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gbGVuKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKQEAgLTUwNzMsNiArNTEyNSwxMyBAQAogICAgIGlmICgoZGljdCA9IFB5RGljdF9OZXcoKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogCisgICAgaWYgKChqIC0gaSkgJSAyICE9IDApIHsKKyAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoc3QtPlVucGlja2xpbmdFcnJvciwgIm9kZCBudW1iZXIgb2YgaXRlbXMgZm9yIERJQ1QiKTsKKyAgICAgICAgUHlfREVDUkVGKGRpY3QpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgZm9yIChrID0gaSArIDE7IGsgPCBqOyBrICs9IDIpIHsKICAgICAgICAga2V5ID0gc2VsZi0+c3RhY2stPmRhdGFbayAtIDFdOwogICAgICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW2tdOwpAQCAtNTE0MCw3ICs1MTk5LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gaSA8IDEpCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAKICAgICBhcmdzID0gUGRhdGFfcG9wdHVwbGUoc2VsZi0+c3RhY2ssIGkgKyAxKTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQpAQCAtNTQ2MywxMiArNTUyMiwxNSBAQAogICAgICAqLwogICAgIGlmIChzZWxmLT5udW1fbWFya3MgPiAwICYmIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcyAtIDFdID09IGxlbikgewogICAgICAgICBzZWxmLT5udW1fbWFya3MtLTsKLSAgICB9IGVsc2UgaWYgKGxlbiA+IDApIHsKKyAgICAgICAgc2VsZi0+c3RhY2stPm1hcmtfc2V0ID0gc2VsZi0+bnVtX21hcmtzICE9IDA7CisgICAgICAgIHNlbGYtPnN0YWNrLT5mZW5jZSA9IHNlbGYtPm51bV9tYXJrcyA/CisgICAgICAgICAgICAgICAgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzIC0gMV0gOiAwOworICAgIH0gZWxzZSBpZiAobGVuIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CisgICAgZWxzZSB7CiAgICAgICAgIGxlbi0tOwogICAgICAgICBQeV9ERUNSRUYoc2VsZi0+c3RhY2stPmRhdGFbbGVuXSk7CiAgICAgICAgIFB5X1NJWkUoc2VsZi0+c3RhY2spID0gbGVuOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC01NDkwLDEwICs1NTUyLDEwIEBACiBsb2FkX2R1cChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmxhc3Q7Ci0gICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9TSVpFKHNlbGYtPnN0YWNrKTsKIAotICAgIGlmICgobGVuID0gUHlfU0laRShzZWxmLT5zdGFjaykpIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAobGVuIDw9IHNlbGYtPnN0YWNrLT5mZW5jZSkKKyAgICAgICAgcmV0dXJuIFBkYXRhX3N0YWNrX3VuZGVyZmxvdyhzZWxmLT5zdGFjayk7CiAgICAgbGFzdCA9IHNlbGYtPnN0YWNrLT5kYXRhW2xlbiAtIDFdOwogICAgIFBEQVRBX0FQUEVORChzZWxmLT5zdGFjaywgbGFzdCwgLTEpOwogICAgIHJldHVybiAwOwpAQCAtNTY3Niw4ICs1NzM4LDggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChsZW4gPCAyKQogICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBrZXkgPSBQeUxvbmdfRnJvbVN0cmluZyhzLCBOVUxMLCAxMCk7CkBAIC01NzA1LDggKzU3NjcsOCBAQAogICAgIGlmIChfVW5waWNrbGVyX1JlYWQoc2VsZiwgJnMsIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICBpZHggPSBQeV9DSEFSTUFTSyhzWzBdKTsKQEAgLTU3MjQsOCArNTc4Niw4IEBACiAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgNCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHZhbHVlID0gc2VsZi0+c3RhY2stPmRhdGFbUHlfU0laRShzZWxmLT5zdGFjaykgLSAxXTsKIAogICAgIGlkeCA9IGNhbGNfYmluc2l6ZShzLCA0KTsKQEAgLTU3NDMsOCArNTgwNSw4IEBACiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwogCi0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIDw9IDApCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICB2YWx1ZSA9IHNlbGYtPnN0YWNrLT5kYXRhW1B5X1NJWkUoc2VsZi0+c3RhY2spIC0gMV07CiAKICAgICByZXR1cm4gX1VucGlja2xlcl9NZW1vUHV0KHNlbGYsIHNlbGYtPm1lbW9fbGVuLCB2YWx1ZSk7CkBAIC01NzU4LDggKzU4MjAsOCBAQAogICAgIFB5X3NzaXplX3QgbGVuLCBpOwogCiAgICAgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7Ci0gICAgaWYgKHggPiBsZW4gfHwgeCA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKHggPiBsZW4gfHwgeCA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGlmIChsZW4gPT0geCkgIC8qIG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU4MDgsOCArNTg3MCw4IEBACiBzdGF0aWMgaW50CiBsb2FkX2FwcGVuZChVbnBpY2tsZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spIC0gMSA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIHJldHVybiBkb19hcHBlbmQoc2VsZiwgUHlfU0laRShzZWxmLT5zdGFjaykgLSAxKTsKIH0KIApAQCAtNTgzMSw4ICs1ODkzLDggQEAKICAgICBpbnQgc3RhdHVzID0gMDsKIAogICAgIGxlbiA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOwotICAgIGlmICh4ID4gbGVuIHx8IHggPD0gMCkKLSAgICAgICAgcmV0dXJuIHN0YWNrX3VuZGVyZmxvdygpOworICAgIGlmICh4ID4gbGVuIHx8IHggPD0gc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKICAgICBpZiAobGVuID09IHgpICAvKiBub3RoaW5nIHRvIGRvICovCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICgobGVuIC0geCkgJSAyICE9IDApIHsKQEAgLTU4ODUsOCArNTk0Nyw4IEBACiAgICAgaWYgKG1hcmsgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgbGVuID0gUHlfU0laRShzZWxmLT5zdGFjayk7Ci0gICAgaWYgKG1hcmsgPiBsZW4gfHwgbWFyayA8PSAwKQotICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CisgICAgaWYgKG1hcmsgPiBsZW4gfHwgbWFyayA8PSBzZWxmLT5zdGFjay0+ZmVuY2UpCisgICAgICAgIHJldHVybiBQZGF0YV9zdGFja191bmRlcmZsb3coc2VsZi0+c3RhY2spOwogICAgIGlmIChsZW4gPT0gbWFyaykgIC8qIG5vdGhpbmcgdG8gZG8gKi8KICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTU5NDEsOCArNjAwMyw4IEBACiAgICAgLyogU3RhY2sgaXMgLi4uIGluc3RhbmNlLCBzdGF0ZS4gIFdlIHdhbnQgdG8gbGVhdmUgaW5zdGFuY2UgYXQKICAgICAgKiB0aGUgc3RhY2sgdG9wLCBwb3NzaWJseSBtdXRhdGVkIHZpYSBpbnN0YW5jZS5fX3NldHN0YXRlX18oc3RhdGUpLgogICAgICAqLwotICAgIGlmIChQeV9TSVpFKHNlbGYtPnN0YWNrKSA8IDIpCi0gICAgICAgIHJldHVybiBzdGFja191bmRlcmZsb3coKTsKKyAgICBpZiAoUHlfU0laRShzZWxmLT5zdGFjaykgLSAyIDwgc2VsZi0+c3RhY2stPmZlbmNlKQorICAgICAgICByZXR1cm4gUGRhdGFfc3RhY2tfdW5kZXJmbG93KHNlbGYtPnN0YWNrKTsKIAogICAgIFBEQVRBX1BPUChzZWxmLT5zdGFjaywgc3RhdGUpOwogICAgIGlmIChzdGF0ZSA9PSBOVUxMKQpAQCAtNjA3OCw3ICs2MTQwLDggQEAKICAgICAgICAgc2VsZi0+bWFya3Nfc2l6ZSA9IChQeV9zc2l6ZV90KWFsbG9jOwogICAgIH0KIAotICAgIHNlbGYtPm1hcmtzW3NlbGYtPm51bV9tYXJrcysrXSA9IFB5X1NJWkUoc2VsZi0+c3RhY2spOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IDE7CisgICAgc2VsZi0+bWFya3Nbc2VsZi0+bnVtX21hcmtzKytdID0gc2VsZi0+c3RhY2stPmZlbmNlID0gUHlfU0laRShzZWxmLT5zdGFjayk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTYxNjEsNiArNjIyNCw4IEBACiAgICAgY2hhciAqcyA9IE5VTEw7CiAKICAgICBzZWxmLT5udW1fbWFya3MgPSAwOworICAgIHNlbGYtPnN0YWNrLT5tYXJrX3NldCA9IDA7CisgICAgc2VsZi0+c3RhY2stPmZlbmNlID0gMDsKICAgICBzZWxmLT5wcm90byA9IDA7CiAgICAgaWYgKFB5X1NJWkUoc2VsZi0+c3RhY2spKQogICAgICAgICBQZGF0YV9jbGVhcihzZWxmLT5zdGFjaywgMCk7CkBAIC02MTczLDggKzYyMzgsMTMgQEAKICAgICBjYXNlIG9wY29kZTogaWYgKGxvYWRfZnVuYyhzZWxmLCAoYXJnKSkgPCAwKSBicmVhazsgY29udGludWU7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBpZiAoX1VucGlja2xlcl9SZWFkKHNlbGYsICZzLCAxKSA8IDApCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKF9VbnBpY2tsZXJfUmVhZChzZWxmLCAmcywgMSkgPCAwKSB7CisgICAgICAgICAgICBQaWNrbGVTdGF0ZSAqc3QgPSBfUGlja2xlX0dldEdsb2JhbFN0YXRlKCk7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhzdC0+VW5waWNrbGluZ0Vycm9yKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19FT0ZFcnJvciwgIlJhbiBvdXQgb2YgaW5wdXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoICgoZW51bSBvcGNvZGUpc1swXSkgewogICAgICAgICBPUChOT05FLCBsb2FkX25vbmUpCkBAIC02MjQ2LDE1ICs2MzE2LDE5IEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKHNbMF0gPT0gJ1wwJykgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfRU9GRXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgUGlja2xlU3RhdGUgKnN0ID0gX1BpY2tsZV9HZXRHbG9iYWxTdGF0ZSgpOwotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChzdC0+VW5waWNrbGluZ0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJyVjJy4iLCBzWzBdKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgKnM7CisgICAgICAgICAgICAgICAgaWYgKDB4MjAgPD0gYyAmJiBjIDw9IDB4N2UgJiYgYyAhPSAnXCcnICYmIGMgIT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoc3QtPlVucGlja2xpbmdFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGxvYWQga2V5LCAnJWMnLiIsIGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHN0LT5VbnBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsb2FkIGtleSwgJ1xceCUwMngnLiIsIGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgLyogYW5kIHdlIGFyZSBkb25lISAqLwpAQCAtNjg2NSw4ICs2OTM5LDYgQEAKIHN0YXRpYyBpbnQKIFVucGlja2xlcl9zZXRfcGVyc2xvYWQoVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIGRlbGV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKTsKQEAgLTY4NzksMTAgKzY5NTEsOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgdG1wID0gc2VsZi0+cGVyc19mdW5jOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgc2VsZi0+cGVyc19mdW5jID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOyAgICAgIC8qIHNlbGYtPnBlcnNfZnVuYyBjYW4gYmUgTlVMTCwgc28gYmUgY2FyZWZ1bC4gKi8KKyAgICBQeV9YU0VUUkVGKHNlbGYtPnBlcnNfZnVuYywgdmFsdWUpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19wb3NpeHN1YnByb2Nlc3MuYyBiL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCmluZGV4IGMwMjQwZTIuLjUwMDdhMzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCisrKyBiL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jCkBAIC0yMSw4ICsyMSw3IEBACiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjZW5kaWYKIAotI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmICFkZWZpbmVkKFNZU19nZXRkZW50czY0KQotLyogQW5kcm9pZCBkb2Vzbid0IGV4cG9zZSBzeXNjYWxscywgYWRkIHRoZSBkZWZpbml0aW9uIG1hbnVhbGx5LiAqLworI2lmIGRlZmluZWQoX19BTkRST0lEX18pICYmIF9fQU5EUk9JRF9BUElfXyA8IDIxICYmICFkZWZpbmVkKFNZU19nZXRkZW50czY0KQogIyBpbmNsdWRlIDxzeXMvbGludXgtc3lzY2FsbHMuaD4KICMgZGVmaW5lIFNZU19nZXRkZW50czY0ICBfX05SX2dldGRlbnRzNjQKICNlbmRpZgpAQCAtNzIsNyArNzEsNyBAQAogCiAvKiBDb252ZXJ0IEFTQ0lJIHRvIGEgcG9zaXRpdmUgaW50LCBubyBsaWJjIGNhbGwuIG5vIG92ZXJmbG93LiAtMSBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLV9wb3NfaW50X2Zyb21fYXNjaWkoY2hhciAqbmFtZSkKK19wb3NfaW50X2Zyb21fYXNjaWkoY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICBpbnQgbnVtID0gMDsKICAgICB3aGlsZSAoKm5hbWUgPj0gJzAnICYmICpuYW1lIDw9ICc5JykgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwppbmRleCA5NWFkNGE0Li42Mzc1OWQ1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYworKysgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwpAQCAtNjgsOSArNjgsOCBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8dGltZS5oPiAgICAgICAgICAgICAgIC8qIGZvciBzZWVkaW5nIHRvIGN1cnJlbnQgdGltZSAqLwotCi0jaWZuZGVmIFBZX1VJTlQzMl9UCi0jICBlcnJvciAiRmFpbGVkIHRvIGZpbmQgYW4gZXhhY3Qtd2lkdGggMzItYml0IGludGVnZXIgdHlwZSIKKyNpZmRlZiBIQVZFX1BST0NFU1NfSAorIyAgaW5jbHVkZSA8cHJvY2Vzcy5oPiAgICAgICAgICAvKiBuZWVkZWQgZm9yIGdldHBpZCgpICovCiAjZW5kaWYKIAogLyogUGVyaW9kIHBhcmFtZXRlcnMgLS0gVGhlc2UgYXJlIGFsbCBtYWdpYy4gIERvbid0IGNoYW5nZS4gKi8KQEAgLTgzLDcgKzgyLDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgaW50IGluZGV4OwotICAgIFBZX1VJTlQzMl9UIHN0YXRlW05dOworICAgIHVpbnQzMl90IHN0YXRlW05dOwogfSBSYW5kb21PYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUmFuZG9tX1R5cGU7CkBAIC05NSwxMyArOTQsMTMgQEAKIAogCiAvKiBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIG9uIFswLDB4ZmZmZmZmZmZdLWludGVydmFsICovCi1zdGF0aWMgUFlfVUlOVDMyX1QKK3N0YXRpYyB1aW50MzJfdAogZ2VucmFuZF9pbnQzMihSYW5kb21PYmplY3QgKnNlbGYpCiB7Ci0gICAgUFlfVUlOVDMyX1QgeTsKLSAgICBzdGF0aWMgUFlfVUlOVDMyX1QgbWFnMDFbMl09ezB4MFUsIE1BVFJJWF9BfTsKKyAgICB1aW50MzJfdCB5OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBtYWcwMVsyXSA9IHsweDBVLCBNQVRSSVhfQX07CiAgICAgLyogbWFnMDFbeF0gPSB4ICogTUFUUklYX0EgIGZvciB4PTAsMSAqLwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIGlmIChzZWxmLT5pbmRleCA+PSBOKSB7IC8qIGdlbmVyYXRlIE4gd29yZHMgYXQgb25lIHRpbWUgKi8KQEAgLTEzNiwyMSArMTM1LDIxIEBACiAgKiBvcHRpbWl6ZSB0aGUgZGl2aXNpb24gYXdheSBhdCBjb21waWxlLXRpbWUuICA2NzEwODg2NCBpcyAyKioyNi4gIEluCiAgKiBlZmZlY3QsIGEgY29udGFpbnMgMjcgcmFuZG9tIGJpdHMgc2hpZnRlZCBsZWZ0IDI2LCBhbmQgYiBmaWxscyBpbiB0aGUKICAqIGxvd2VyIDI2IGJpdHMgb2YgdGhlIDUzLWJpdCBudW1lcmF0b3IuCi0gKiBUaGUgb3JnaW5hbCBjb2RlIGNyZWRpdGVkIElzYWt1IFdhZGEgZm9yIHRoaXMgYWxnb3JpdGhtLCAyMDAyLzAxLzA5LgorICogVGhlIG9yaWdpbmFsIGNvZGUgY3JlZGl0ZWQgSXNha3UgV2FkYSBmb3IgdGhpcyBhbGdvcml0aG0sIDIwMDIvMDEvMDkuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCiByYW5kb21fcmFuZG9tKFJhbmRvbU9iamVjdCAqc2VsZikKIHsKLSAgICBQWV9VSU5UMzJfVCBhPWdlbnJhbmRfaW50MzIoc2VsZik+PjUsIGI9Z2VucmFuZF9pbnQzMihzZWxmKT4+NjsKKyAgICB1aW50MzJfdCBhPWdlbnJhbmRfaW50MzIoc2VsZik+PjUsIGI9Z2VucmFuZF9pbnQzMihzZWxmKT4+NjsKICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChhKjY3MTA4ODY0LjArYikqKDEuMC85MDA3MTk5MjU0NzQwOTkyLjApKTsKIH0KIAogLyogaW5pdGlhbGl6ZXMgbXRbTl0gd2l0aCBhIHNlZWQgKi8KIHN0YXRpYyB2b2lkCi1pbml0X2dlbnJhbmQoUmFuZG9tT2JqZWN0ICpzZWxmLCBQWV9VSU5UMzJfVCBzKQoraW5pdF9nZW5yYW5kKFJhbmRvbU9iamVjdCAqc2VsZiwgdWludDMyX3QgcykKIHsKICAgICBpbnQgbXRpOwotICAgIFBZX1VJTlQzMl9UICptdDsKKyAgICB1aW50MzJfdCAqbXQ7CiAKICAgICBtdCA9IHNlbGYtPnN0YXRlOwogICAgIG10WzBdPSBzOwpAQCAtMTY5LDExICsxNjgsMTEgQEAKIC8qIGluaXRpYWxpemUgYnkgYW4gYXJyYXkgd2l0aCBhcnJheS1sZW5ndGggKi8KIC8qIGluaXRfa2V5IGlzIHRoZSBhcnJheSBmb3IgaW5pdGlhbGl6aW5nIGtleXMgKi8KIC8qIGtleV9sZW5ndGggaXMgaXRzIGxlbmd0aCAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWluaXRfYnlfYXJyYXkoUmFuZG9tT2JqZWN0ICpzZWxmLCBQWV9VSU5UMzJfVCBpbml0X2tleVtdLCBzaXplX3Qga2V5X2xlbmd0aCkKK3N0YXRpYyB2b2lkCitpbml0X2J5X2FycmF5KFJhbmRvbU9iamVjdCAqc2VsZiwgdWludDMyX3QgaW5pdF9rZXlbXSwgc2l6ZV90IGtleV9sZW5ndGgpCiB7CiAgICAgc2l6ZV90IGksIGosIGs7ICAgICAgIC8qIHdhcyBzaWduZWQgaW4gdGhlIG9yaWdpbmFsIGNvZGUuIFJESCAxMi8xNi8yMDAyICovCi0gICAgUFlfVUlOVDMyX1QgKm10OworICAgIHVpbnQzMl90ICptdDsKIAogICAgIG10ID0gc2VsZi0+c3RhdGU7CiAgICAgaW5pdF9nZW5yYW5kKHNlbGYsIDE5NjUwMjE4VSk7CkBAIC0xODEsMjEgKzE4MCwxOSBAQAogICAgIGsgPSAoTj5rZXlfbGVuZ3RoID8gTiA6IGtleV9sZW5ndGgpOwogICAgIGZvciAoOyBrOyBrLS0pIHsKICAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTY2NDUyNVUpKQotICAgICAgICAgICAgICAgICArIGluaXRfa2V5W2pdICsgKFBZX1VJTlQzMl9UKWo7IC8qIG5vbiBsaW5lYXIgKi8KKyAgICAgICAgICAgICAgICAgKyBpbml0X2tleVtqXSArICh1aW50MzJfdClqOyAvKiBub24gbGluZWFyICovCiAgICAgICAgIGkrKzsgaisrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgICAgICBpZiAoaj49a2V5X2xlbmd0aCkgaj0wOwogICAgIH0KICAgICBmb3IgKGs9Ti0xOyBrOyBrLS0pIHsKICAgICAgICAgbXRbaV0gPSAobXRbaV0gXiAoKG10W2ktMV0gXiAobXRbaS0xXSA+PiAzMCkpICogMTU2NjA4Mzk0MVUpKQotICAgICAgICAgICAgICAgICAtIChQWV9VSU5UMzJfVClpOyAvKiBub24gbGluZWFyICovCisgICAgICAgICAgICAgICAgIC0gKHVpbnQzMl90KWk7IC8qIG5vbiBsaW5lYXIgKi8KICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaT49TikgeyBtdFswXSA9IG10W04tMV07IGk9MTsgfQogICAgIH0KIAogICAgIG10WzBdID0gMHg4MDAwMDAwMFU7IC8qIE1TQiBpcyAxOyBhc3N1cmluZyBub24temVybyBpbml0aWFsIGFycmF5ICovCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwogfQogCiAvKgpAQCAtMjAzLDEyICsyMDAsNDMgQEAKICAqIFR3aXN0ZXIgZG93bmxvYWQuCiAgKi8KIAorc3RhdGljIGludAorcmFuZG9tX3NlZWRfdXJhbmRvbShSYW5kb21PYmplY3QgKnNlbGYpCit7CisgICAgUFlfVUlOVDMyX1Qga2V5W05dOworCisgICAgaWYgKF9QeU9TX1VSYW5kb21Ob25ibG9jayhrZXksIHNpemVvZihrZXkpKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwgUHlfQVJSQVlfTEVOR1RIKGtleSkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorcmFuZG9tX3NlZWRfdGltZV9waWQoUmFuZG9tT2JqZWN0ICpzZWxmKQoreworICAgIF9QeVRpbWVfdCBub3c7CisgICAgdWludDMyX3Qga2V5WzVdOworCisgICAgbm93ID0gX1B5VGltZV9HZXRTeXN0ZW1DbG9jaygpOworICAgIGtleVswXSA9IChQWV9VSU5UMzJfVCkobm93ICYgMHhmZmZmZmZmZlUpOworICAgIGtleVsxXSA9IChQWV9VSU5UMzJfVCkobm93ID4+IDMyKTsKKworICAgIGtleVsyXSA9IChQWV9VSU5UMzJfVClnZXRwaWQoKTsKKworICAgIG5vdyA9IF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2soKTsKKyAgICBrZXlbM10gPSAoUFlfVUlOVDMyX1QpKG5vdyAmIDB4ZmZmZmZmZmZVKTsKKyAgICBrZXlbNF0gPSAoUFlfVUlOVDMyX1QpKG5vdyA+PiAzMik7CisKKyAgICBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwgUHlfQVJSQVlfTEVOR1RIKGtleSkpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogcmFuZG9tX3NlZWQoUmFuZG9tT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsgICAgICAgICAgICAvKiBndWlsdHkgdW50aWwgcHJvdmVkIGlubm9jZW50ICovCiAgICAgUHlPYmplY3QgKm4gPSBOVUxMOwotICAgIFBZX1VJTlQzMl9UICprZXkgPSBOVUxMOworICAgIHVpbnQzMl90ICprZXkgPSBOVUxMOwogICAgIHNpemVfdCBiaXRzLCBrZXl1c2VkOwogICAgIGludCByZXM7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CkBAIC0yMTYsMTQgKzI0NCwxNyBAQAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNlZWQiLCAwLCAxLCAmYXJnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoYXJnID09IE5VTEwgfHwgYXJnID09IFB5X05vbmUpIHsKLSAgICAgICAgdGltZV90IG5vdzsKKyAgICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChyYW5kb21fc2VlZF91cmFuZG9tKHNlbGYpID49IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgdGltZSgmbm93KTsKLSAgICAgICAgaW5pdF9nZW5yYW5kKHNlbGYsIChQWV9VSU5UMzJfVClub3cpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICAgICAgLyogUmVhZGluZyBzeXN0ZW0gZW50cm9weSBmYWlsZWQsIGZhbGwgYmFjayBvbiB0aGUgd29yc3QgZW50cm9weToKKyAgICAgICAgICAgICAgIHVzZSB0aGUgY3VycmVudCB0aW1lIGFuZCBwcm9jZXNzIGlkZW50aWZpZXIuICovCisgICAgICAgICAgICByYW5kb21fc2VlZF90aW1lX3BpZChzZWxmKTsKKyAgICAgICAgfQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CisKICAgICAvKiBUaGlzIGFsZ29yaXRobSByZWxpZXMgb24gdGhlIG51bWJlciBiZWluZyB1bnNpZ25lZC4KICAgICAgKiBTbzogaWYgdGhlIGFyZyBpcyBhIFB5TG9uZywgdXNlIGl0cyBhYnNvbHV0ZSB2YWx1ZS4KICAgICAgKiBPdGhlcndpc2UgdXNlIGl0cyBoYXNoIHZhbHVlLCBjYXN0IHRvIHVuc2lnbmVkLgpAQCAtMjQ4LDcgKzI3OSw3IEBACiAgICAga2V5dXNlZCA9IGJpdHMgPT0gMCA/IDEgOiAoYml0cyAtIDEpIC8gMzIgKyAxOwogCiAgICAgLyogQ29udmVydCBzZWVkIHRvIGJ5dGUgc2VxdWVuY2UuICovCi0gICAga2V5ID0gKFBZX1VJTlQzMl9UICopUHlNZW1fTWFsbG9jKChzaXplX3QpNCAqIGtleXVzZWQpOworICAgIGtleSA9ICh1aW50MzJfdCAqKVB5TWVtX01hbGxvYygoc2l6ZV90KTQgKiBrZXl1c2VkKTsKICAgICBpZiAoa2V5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBEb25lOwpAQCAtMjY3LDEzICsyOTgsMTcgQEAKICAgICAgICAgc2l6ZV90IGksIGo7CiAgICAgICAgIC8qIFJldmVyc2UgYW4gYXJyYXkuICovCiAgICAgICAgIGZvciAoaSA9IDAsIGogPSBrZXl1c2VkIC0gMTsgaSA8IGo7IGkrKywgai0tKSB7Ci0gICAgICAgICAgICBQWV9VSU5UMzJfVCB0bXAgPSBrZXlbaV07CisgICAgICAgICAgICB1aW50MzJfdCB0bXAgPSBrZXlbaV07CiAgICAgICAgICAgICBrZXlbaV0gPSBrZXlbal07CiAgICAgICAgICAgICBrZXlbal0gPSB0bXA7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKLSAgICByZXN1bHQgPSBpbml0X2J5X2FycmF5KHNlbGYsIGtleSwga2V5dXNlZCk7CisgICAgaW5pdF9ieV9hcnJheShzZWxmLCBrZXksIGtleXVzZWQpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJlc3VsdCA9IFB5X05vbmU7CisKIERvbmU6CiAgICAgUHlfWERFQ1JFRihuKTsKICAgICBQeU1lbV9GcmVlKGtleSk7CkBAIC0zMjksNyArMzY0LDcgQEAKICAgICAgICAgZWxlbWVudCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKSk7CiAgICAgICAgIGlmIChlbGVtZW50ID09ICh1bnNpZ25lZCBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAoUFlfVUlOVDMyX1QpZWxlbWVudDsKKyAgICAgICAgc2VsZi0+c3RhdGVbaV0gPSAodWludDMyX3QpZWxlbWVudDsKICAgICB9CiAKICAgICBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwpAQCAtMzQ5LDggKzM4NCw4IEBACiByYW5kb21fZ2V0cmFuZGJpdHMoUmFuZG9tT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgaywgaSwgd29yZHM7Ci0gICAgUFlfVUlOVDMyX1QgcjsKLSAgICBQWV9VSU5UMzJfVCAqd29yZGFycmF5OworICAgIHVpbnQzMl90IHI7CisgICAgdWludDMyX3QgKndvcmRhcnJheTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldHJhbmRiaXRzIiwgJmspKQpAQCAtMzY2LDcgKzQwMSw3IEBACiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhnZW5yYW5kX2ludDMyKHNlbGYpID4+ICgzMiAtIGspKTsKIAogICAgIHdvcmRzID0gKGsgLSAxKSAvIDMyICsgMTsKLSAgICB3b3JkYXJyYXkgPSAoUFlfVUlOVDMyX1QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKKyAgICB3b3JkYXJyYXkgPSAodWludDMyX3QgKilQeU1lbV9NYWxsb2Mod29yZHMgKiA0KTsKICAgICBpZiAod29yZGFycmF5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zY3Byb3h5LmMgYi9Nb2R1bGVzL19zY3Byb3h5LmMKaW5kZXggNjZiNmUzNC4uMWNlNGI3NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc2Nwcm94eS5jCisrKyBiL01vZHVsZXMvX3NjcHJveHkuYwpAQCAtNzEsMTYgKzcxLDEyIEBACiAgICAgcmVzdWx0ID0gUHlEaWN0X05ldygpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgZ290byBlcnJvcjsKIAotICAgIGlmICgma1NDUHJvcE5ldFByb3hpZXNFeGNsdWRlU2ltcGxlSG9zdG5hbWVzICE9IE5VTEwpIHsKLSAgICAgICAgYU51bSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5RGljdCwKLSAgICAgICAgICAgIGtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyk7Ci0gICAgICAgIGlmIChhTnVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIHYgPSBQeUJvb2xfRnJvbUxvbmcoMCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKGNmbnVtX3RvX2ludDMyKGFOdW0pKTsKLSAgICAgICAgfQotICAgIH0gIGVsc2UgeworICAgIGFOdW0gPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3QsCisgICAgICAgIGtTQ1Byb3BOZXRQcm94aWVzRXhjbHVkZVNpbXBsZUhvc3RuYW1lcyk7CisgICAgaWYgKGFOdW0gPT0gTlVMTCkgewogICAgICAgICB2ID0gUHlCb29sX0Zyb21Mb25nKDApOworICAgIH0gZWxzZSB7CisgICAgICAgIHYgPSBQeUJvb2xfRnJvbUxvbmcoY2ZudW1fdG9faW50MzIoYU51bSkpOwogICAgIH0KIAogICAgIGlmICh2ID09IE5VTEwpIGdvdG8gZXJyb3I7CkBAIC0xMzAsNyArMTI2LDcgQEAKIH0KIAogc3RhdGljIGludAotc2V0X3Byb3h5KFB5T2JqZWN0KiBwcm94aWVzLCBjaGFyKiBwcm90bywgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5RGljdCwKK3NldF9wcm94eShQeU9iamVjdCogcHJveGllcywgY29uc3QgY2hhciogcHJvdG8sIENGRGljdGlvbmFyeVJlZiBwcm94eURpY3QsCiAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZW5hYmxlZEtleSwKICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiBob3N0S2V5LCBDRlN0cmluZ1JlZiBwb3J0S2V5KQogewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0IGIvTW9kdWxlcy9fc2hhMy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzNGIxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL1JFQURNRS50eHQKQEAgLTAsMCArMSwxMSBAQAorS2VjY2FrIENvZGUgUGFja2FnZQorPT09PT09PT09PT09PT09PT09PQorCitUaGUgZmlsZXMgaW4ga2NwIGFyZSB0YWtlbiBmcm9tIHRoZSBLZWNjYWsgQ29kZSBQYWNrYWdlLiBUaGV5IGhhdmUgYmVlbgorc2xpZ2h0bHkgdG8gYmUgQzg5IGNvbXBhdGlibGUuIFRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaGVhZGVyIGZpbGUKK0tlY2Nha1AtMTYwMC1TblAuaCBoYSBiZWVuIHJlbmFtZWQgdG8gS2VjY2FrUC0xNjAwLVNuUC1vcHQzMi5oIG9yCitLZWNjYWtQLTE2MDAtU25QLW9wdDY0LmguCisKK1RoZSA2NGJpdCBmaWxlcyB3ZXJlIGdlbmVyYXRlZCB3aXRoIGdlbmVyaWM2NGxjL2xpYmtlY2Nhay5hLnBhY2sgdGFyZ2V0LCB0aGUKKzMyYml0IGZpbGVzIHdpdGggZ2VuZXJpYzMybGMvbGlia2VjY2FrLmEucGFjay4KKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5IGIvTW9kdWxlcy9fc2hhMy9jbGVhbnVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE3YzU2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2NsZWFudXAucHkKQEAgLTAsMCArMSw1MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoQykgMjAxMiAgIENocmlzdGlhbiBIZWltZXMgKGNocmlzdGlhbkBweXRob24ub3JnKQorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisjCisjIGNsZWFudXAgS2VjY2FrIHNvdXJjZXMKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKKworQ1BQMSA9IHJlLmNvbXBpbGUoIl4vLyguKikiKQorQ1BQMiA9IHJlLmNvbXBpbGUoIlwgLy8oLiopIikKKworU1RBVElDUyA9ICgidm9pZCAiLCAiaW50ICIsICJIYXNoUmV0dXJuICIsCisgICAgICAgICAgICJjb25zdCBVSU5UNjQgIiwgIlVJTlQxNiAiLCAiICAgIGludCBwcmVmaXgjIyIpCisKK0hFUkUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK0tFQ0NBSyA9IG9zLnBhdGguam9pbihIRVJFLCAia2NwIikKKworZGVmIGdldGZpbGVzKCk6CisgICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihLRUNDQUspOgorICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKEtFQ0NBSywgbmFtZSkKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUobmFtZSk6CisgICAgICAgICAgICB5aWVsZCBuYW1lCisKK2RlZiBjbGVhbnVwKGYpOgorICAgIGJ1ZiA9IFtdCisgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgIyBtYXJrIGFsbCBmdW5jdGlvbnMgYW5kIGdsb2JhbCBkYXRhIGFzIHN0YXRpYworICAgICAgICAjaWYgbGluZS5zdGFydHN3aXRoKFNUQVRJQ1MpOgorICAgICAgICAjICAgIGJ1Zi5hcHBlbmQoInN0YXRpYyAiICsgbGluZSkKKyAgICAgICAgIyAgICBjb250aW51ZQorICAgICAgICAjIHJlbW92ZSBVSU5UNjQgdHlwZWRlZiwgd2UgaGF2ZSBvdXIgb3duCisgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgidHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgaW50Iik6CisgICAgICAgICAgICBidWYuYXBwZW5kKCIvKiAlcyAqL1xuIiAlIGxpbmUuc3RyaXAoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICMjIHJlbW92ZSAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIgorICAgICAgICBpZiAiYnJnX2VuZGlhbi5oIiBpbiBsaW5lOgorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLyogJXMgKi9cbiIgJSBsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIHRyYW5zZm9ybSBDKysgY29tbWVudHMgaW50byBBTlNJIEMgY29tbWVudHMKKyAgICAgICAgbGluZSA9IENQUDEuc3ViKHIiLypcMSAqL1xuIiwgbGluZSkKKyAgICAgICAgbGluZSA9IENQUDIuc3ViKHIiIC8qXDEgKi9cbiIsIGxpbmUpCisgICAgICAgIGJ1Zi5hcHBlbmQobGluZSkKKyAgICByZXR1cm4gIiIuam9pbihidWYpCisKK2ZvciBuYW1lIGluIGdldGZpbGVzKCk6CisgICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6CisgICAgICAgIHJlcyA9IGNsZWFudXAoZikKKyAgICB3aXRoIG9wZW4obmFtZSwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKHJlcykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oIGIvTW9kdWxlcy9fc2hhMy9jbGluaWMvc2hhM21vZHVsZS5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY4OGU3ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMvY2xpbmljL3NoYTNtb2R1bGUuYy5oCkBAIC0wLDAgKzEsMTU0IEBACisvKltjbGluaWMgaW5wdXRdCitwcmVzZXJ2ZQorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitQeURvY19TVFJWQVIocHlfc2hhM19uZXdfX2RvY19fLAorInNoYTNfMjI0KHN0cmluZz1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfc2hhM19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3B5X3NoYTNfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhM18yMjQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpkYXRhID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gcHlfc2hhM19uZXdfaW1wbCh0eXBlLCBkYXRhKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfY29weV9fZG9jX18sCisiY29weSgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggb2JqZWN0LiIpOworCisjZGVmaW5lIF9TSEEzX1NIQTNfMjI0X0NPUFlfTUVUSE9EREVGICAgIFwKKyAgICB7ImNvcHkiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfY29weSwgTUVUSF9OT0FSR1MsIF9zaGEzX3NoYTNfMjI0X2NvcHlfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHkoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX3NoYTNfc2hhM18yMjRfY29weV9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfZGlnZXN0X19kb2NfXywKKyJkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfU0hBM19TSEEzXzIyNF9ESUdFU1RfTUVUSE9EREVGICAgIFwKKyAgICB7ImRpZ2VzdCIsIChQeUNGdW5jdGlvbilfc2hhM19zaGEzXzIyNF9kaWdlc3QsIE1FVEhfTk9BUkdTLCBfc2hhM19zaGEzXzIyNF9kaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hhM18yMjRfZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9zaGEzX3NoYTNfMjI0X2RpZ2VzdF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X19kb2NfXywKKyJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfSEVYRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJoZXhkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0LCBNRVRIX05PQVJHUywgX3NoYTNfc2hhM18yMjRfaGV4ZGlnZXN0X19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2hleGRpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9zaGEzX3NoYTNfMjI0X3VwZGF0ZV9fZG9jX18sCisidXBkYXRlKCRzZWxmLCBvYmosIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJVcGRhdGUgdGhpcyBoYXNoIG9iamVjdFwncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBM18yMjRfVVBEQVRFX01FVEhPRERFRiAgICBcCisgICAgeyJ1cGRhdGUiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hhM18yMjRfdXBkYXRlLCBNRVRIX08sIF9zaGEzX3NoYTNfMjI0X3VwZGF0ZV9fZG9jX199LAorCitQeURvY19TVFJWQVIoX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9fZG9jX18sCisiZGlnZXN0KCRzZWxmLCAvLCBsZW5ndGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBiaW5hcnkgZGF0YS4iKTsKKworI2RlZmluZSBfU0hBM19TSEFLRV8xMjhfRElHRVNUX01FVEhPRERFRiAgICBcCisgICAgeyJkaWdlc3QiLCAoUHlDRnVuY3Rpb24pX3NoYTNfc2hha2VfMTI4X2RpZ2VzdCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9kaWdlc3QoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJrOmRpZ2VzdCIsIF9rZXl3b3JkcywgMH07CisgICAgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxlbmd0aCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfc2hhM19zaGFrZV8xMjhfZGlnZXN0X2ltcGwoc2VsZiwgbGVuZ3RoKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdF9fZG9jX18sCisiaGV4ZGlnZXN0KCRzZWxmLCAvLCBsZW5ndGgpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuIik7CisKKyNkZWZpbmUgX1NIQTNfU0hBS0VfMTI4X0hFWERJR0VTVF9NRVRIT0RERUYgICAgXAorICAgIHsiaGV4ZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3QsIE1FVEhfRkFTVENBTEwsIF9zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGFrZV8xMjhfaGV4ZGlnZXN0KFNIQTNvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiazpoZXhkaWdlc3QiLCBfa2V5d29yZHMsIDB9OworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsZW5ndGgpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTNfc2hha2VfMTI4X2hleGRpZ2VzdF9pbXBsKHNlbGYsIGxlbmd0aCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODg4YmVhYjQ1MTM2YTU2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDlmYjQzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrSGFzaC5jCkBAIC0wLDAgKzEsODIgQEAKKy8qCitJbXBsZW1lbnRhdGlvbiBieSB0aGUgS2VjY2FrLCBLZXlhayBhbmQgS2V0amUgVGVhbXMsIG5hbWVseSwgR3VpZG8gQmVydG9uaSwKK0pvYW4gRGFlbWVuLCBNaWNoYcOrbCBQZWV0ZXJzLCBHaWxsZXMgVmFuIEFzc2NoZSBhbmQgUm9ubnkgVmFuIEtlZXIsIGhlcmVieQorZGVub3RlZCBhcyAidGhlIGltcGxlbWVudGVyIi4KKworRm9yIG1vcmUgaW5mb3JtYXRpb24sIGZlZWRiYWNrIG9yIHF1ZXN0aW9ucywgcGxlYXNlIHJlZmVyIHRvIG91ciB3ZWJzaXRlczoKK2h0dHA6Ly9rZWNjYWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V5YWsubm9la2Vvbi5vcmcvCitodHRwOi8va2V0amUubm9la2Vvbi5vcmcvCisKK1RvIHRoZSBleHRlbnQgcG9zc2libGUgdW5kZXIgbGF3LCB0aGUgaW1wbGVtZW50ZXIgaGFzIHdhaXZlZCBhbGwgY29weXJpZ2h0CithbmQgcmVsYXRlZCBvciBuZWlnaGJvcmluZyByaWdodHMgdG8gdGhlIHNvdXJjZSBjb2RlIGluIHRoaXMgZmlsZS4KK2h0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL3B1YmxpY2RvbWFpbi96ZXJvLzEuMC8KKyovCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJLZWNjYWtIYXNoLmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworSGFzaFJldHVybiBLZWNjYWtfSGFzaEluaXRpYWxpemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIHVuc2lnbmVkIGludCBoYXNoYml0bGVuLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZFN1ZmZpeCkKK3sKKyAgICBIYXNoUmV0dXJuIHJlc3VsdDsKKworICAgIGlmIChkZWxpbWl0ZWRTdWZmaXggPT0gMCkKKyAgICAgICAgcmV0dXJuIEZBSUw7CisgICAgcmVzdWx0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUoJmluc3RhbmNlLT5zcG9uZ2UsIHJhdGUsIGNhcGFjaXR5KTsKKyAgICBpZiAocmVzdWx0ICE9IFNVQ0NFU1MpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgaW5zdGFuY2UtPmZpeGVkT3V0cHV0TGVuZ3RoID0gaGFzaGJpdGxlbjsKKyAgICBpbnN0YW5jZS0+ZGVsaW1pdGVkU3VmZml4ID0gZGVsaW1pdGVkU3VmZml4OworICAgIHJldHVybiBTVUNDRVNTOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hVcGRhdGUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaW5zdGFuY2UsIGNvbnN0IEJpdFNlcXVlbmNlICpkYXRhLCBEYXRhTGVuZ3RoIGRhdGFiaXRsZW4pCit7CisgICAgaWYgKChkYXRhYml0bGVuICUgOCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIoJmluc3RhbmNlLT5zcG9uZ2UsIGRhdGEsIGRhdGFiaXRsZW4vOCk7CisgICAgZWxzZSB7CisgICAgICAgIEhhc2hSZXR1cm4gcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigmaW5zdGFuY2UtPnNwb25nZSwgZGF0YSwgZGF0YWJpdGxlbi84KTsKKyAgICAgICAgaWYgKHJldCA9PSBTVUNDRVNTKSB7CisgICAgICAgICAgICAvKiBUaGUgbGFzdCBwYXJ0aWFsIGJ5dGUgaXMgYXNzdW1lZCB0byBiZSBhbGlnbmVkIG9uIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzICovCisKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbGFzdEJ5dGUgPSBkYXRhW2RhdGFiaXRsZW4vOF07CisgICAgICAgICAgICAvKiBDb25jYXRlbmF0ZSB0aGUgbGFzdCBmZXcgYml0cyBwcm92aWRlZCBoZXJlIHdpdGggdGhvc2Ugb2YgdGhlIHN1ZmZpeCAqLworCisgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBkZWxpbWl0ZWRMYXN0Qnl0ZXMgPSAodW5zaWduZWQgc2hvcnQpKCh1bnNpZ25lZCBzaG9ydClsYXN0Qnl0ZSB8ICgodW5zaWduZWQgc2hvcnQpaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA8PCAoZGF0YWJpdGxlbiAlIDgpKSk7CisgICAgICAgICAgICBpZiAoKGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkYwMCkgPT0gMHgwMDAwKSB7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG9uZUJ5dGVbMV07CisgICAgICAgICAgICAgICAgb25lQnl0ZVswXSA9IGRlbGltaXRlZExhc3RCeXRlcyAmIDB4RkY7CisgICAgICAgICAgICAgICAgcmV0ID0gKEhhc2hSZXR1cm4pS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigmaW5zdGFuY2UtPnNwb25nZSwgb25lQnl0ZSwgMSk7CisgICAgICAgICAgICAgICAgaW5zdGFuY2UtPmRlbGltaXRlZFN1ZmZpeCA9IChkZWxpbWl0ZWRMYXN0Qnl0ZXMgPj4gOCkgJiAweEZGOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hGaW5hbChLZWNjYWtfSGFzaEluc3RhbmNlICppbnN0YW5jZSwgQml0U2VxdWVuY2UgKmhhc2h2YWwpCit7CisgICAgSGFzaFJldHVybiByZXQgPSAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoJmluc3RhbmNlLT5zcG9uZ2UsIGluc3RhbmNlLT5kZWxpbWl0ZWRTdWZmaXgpOworICAgIGlmIChyZXQgPT0gU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuIChIYXNoUmV0dXJuKUtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplKCZpbnN0YW5jZS0+c3BvbmdlLCBoYXNodmFsLCBpbnN0YW5jZS0+Zml4ZWRPdXRwdXRMZW5ndGgvOCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcmV0OworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK0hhc2hSZXR1cm4gS2VjY2FrX0hhc2hTcXVlZXplKEtlY2Nha19IYXNoSW5zdGFuY2UgKmluc3RhbmNlLCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKQoreworICAgIGlmICgoZGF0YWJpdGxlbiAlIDgpICE9IDApCisgICAgICAgIHJldHVybiBGQUlMOworICAgIHJldHVybiAoSGFzaFJldHVybilLZWNjYWtXaWR0aDE2MDBfU3BvbmdlU3F1ZWV6ZSgmaW5zdGFuY2UtPnNwb25nZSwgZGF0YSwgZGF0YWJpdGxlbi84KTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha0hhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmQzZGM2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrSGFzaC5oCkBAIC0wLDAgKzEsMTE0IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtIYXNoSW50ZXJmYWNlX2hfCisjZGVmaW5lIF9LZWNjYWtIYXNoSW50ZXJmYWNlX2hfCisKKyNpZm5kZWYgS2VjY2FrUDE2MDBfZXhjbHVkZWQKKworI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5oIgorI2luY2x1ZGUgPHN0cmluZy5oPgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgQml0U2VxdWVuY2U7Cit0eXBlZGVmIHNpemVfdCBEYXRhTGVuZ3RoOwordHlwZWRlZiBlbnVtIHsgU1VDQ0VTUyA9IDAsIEZBSUwgPSAxLCBCQURfSEFTSExFTiA9IDIgfSBIYXNoUmV0dXJuOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluc3RhbmNlIHNwb25nZTsKKyAgICB1bnNpZ25lZCBpbnQgZml4ZWRPdXRwdXRMZW5ndGg7CisgICAgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWRTdWZmaXg7Cit9IEtlY2Nha19IYXNoSW5zdGFuY2U7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGluaXRpYWxpemUgdGhlIEtlY2Nha1tyLCBjXSBzcG9uZ2UgZnVuY3Rpb24gaW5zdGFuY2UgdXNlZCBpbiBzZXF1ZW50aWFsIGhhc2hpbmcgbW9kZS4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIHRvIGJlIGluaXRpYWxpemVkLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHBhcmFtICBoYXNoYml0bGVuICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJpdHMsCisgICogICAgICAgICAgICAgICAgICAgICBvciAwIGZvciBhbiBhcmJpdHJhcmlseS1sb25nIG91dHB1dC4KKyAgKiBAcGFyYW0gIGRlbGltaXRlZFN1ZmZpeCBCaXRzIHRoYXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFwcGVuZGVkIHRvIHRoZSBlbmQKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgaW5wdXQgbWVzc2FnZSwgYXMgaW4gZG9tYWluIHNlcGFyYXRpb24uCisgICogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIGJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkIGxpa2UgdGhlIEBhIGRlbGltaXRlZERhdGEgcGFyYW1ldGVyIG9mCisgICogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIEtlY2Nha19TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpIGZ1bmN0aW9uLgorICAqIEBwcmUgICAgT25lIG11c3QgaGF2ZSByK2M9MTYwMCBhbmQgdGhlIHJhdGUgYSBtdWx0aXBsZSBvZiA4IGJpdHMgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcmV0dXJuIFNVQ0NFU1MgaWYgc3VjY2Vzc2Z1bCwgRkFJTCBvdGhlcndpc2UuCisgICovCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShLZWNjYWtfSGFzaEluc3RhbmNlICpoYXNoSW5zdGFuY2UsIHVuc2lnbmVkIGludCByYXRlLCB1bnNpZ25lZCBpbnQgY2FwYWNpdHksIHVuc2lnbmVkIGludCBoYXNoYml0bGVuLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZFN1ZmZpeCk7CisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBS0UxMjggaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMTI4KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEzNDQsICAyNTYsICAgMCwgMHgxRikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEFLRTI1NiBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBS0UyNTYoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgMTA4OCwgIDUxMiwgICAwLCAweDFGKQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtMjI0IGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzIyNChoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAxMTUyLCAgNDQ4LCAyMjQsIDB4MDYpCisKKy8qKiBNYWNybyB0byBpbml0aWFsaXplIGEgU0hBMy0yNTYgaW5zdGFuY2UgYXMgc3BlY2lmaWVkIGluIHRoZSBGSVBTIDIwMiBzdGFuZGFyZC4KKyAgKi8KKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMjU2KGhhc2hJbnN0YW5jZSkgICAgICAgIEtlY2Nha19IYXNoSW5pdGlhbGl6ZShoYXNoSW5zdGFuY2UsIDEwODgsICA1MTIsIDI1NiwgMHgwNikKKworLyoqIE1hY3JvIHRvIGluaXRpYWxpemUgYSBTSEEzLTM4NCBpbnN0YW5jZSBhcyBzcGVjaWZpZWQgaW4gdGhlIEZJUFMgMjAyIHN0YW5kYXJkLgorICAqLworI2RlZmluZSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18zODQoaGFzaEluc3RhbmNlKSAgICAgICAgS2VjY2FrX0hhc2hJbml0aWFsaXplKGhhc2hJbnN0YW5jZSwgIDgzMiwgIDc2OCwgMzg0LCAweDA2KQorCisvKiogTWFjcm8gdG8gaW5pdGlhbGl6ZSBhIFNIQTMtNTEyIGluc3RhbmNlIGFzIHNwZWNpZmllZCBpbiB0aGUgRklQUyAyMDIgc3RhbmRhcmQuCisgICovCisjZGVmaW5lIEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzUxMihoYXNoSW5zdGFuY2UpICAgICAgICBLZWNjYWtfSGFzaEluaXRpYWxpemUoaGFzaEluc3RhbmNlLCAgNTc2LCAxMDI0LCA1MTIsIDB4MDYpCisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSB0byBiZSBhYnNvcmJlZC4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgZGF0YS4KKyAgKiAgICAgICAgICAgICAgICAgICAgIFdoZW4gQGEgZGF0YWJpdExlbiBpcyBub3QgYSBtdWx0aXBsZSBvZiA4LCB0aGUgbGFzdCBiaXRzIG9mIGRhdGEgbXVzdCBiZQorICAqICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMgb2YgdGhlIGxhc3QgYnl0ZSAobGl0dGxlLWVuZGlhbiBjb252ZW50aW9uKS4KKyAgKiBAcGFyYW0gIGRhdGFiaXRMZW4gIFRoZSBudW1iZXIgb2YgaW5wdXQgYml0cyBwcm92aWRlZCBpbiB0aGUgaW5wdXQgZGF0YS4KKyAgKiBAcHJlICAgIEluIHRoZSBwcmV2aW91cyBjYWxsIHRvIEtlY2Nha19IYXNoVXBkYXRlKCksIGRhdGFiaXRsZW4gd2FzIGEgbXVsdGlwbGUgb2YgOC4KKyAgKiBAcmV0dXJuIFNVQ0NFU1MgaWYgc3VjY2Vzc2Z1bCwgRkFJTCBvdGhlcndpc2UuCisgICovCitIYXNoUmV0dXJuIEtlY2Nha19IYXNoVXBkYXRlKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgY29uc3QgQml0U2VxdWVuY2UgKmRhdGEsIERhdGFMZW5ndGggZGF0YWJpdGxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGNhbGwgYWZ0ZXIgYWxsIGlucHV0IGJsb2NrcyBoYXZlIGJlZW4gaW5wdXQgYW5kIHRvIGdldAorICAqIG91dHB1dCBiaXRzIGlmIHRoZSBsZW5ndGggd2FzIHNwZWNpZmllZCB3aGVuIGNhbGxpbmcgS2VjY2FrX0hhc2hJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBoYXNoSW5zdGFuY2UgICAgUG9pbnRlciB0byB0aGUgaGFzaCBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBLZWNjYWtfSGFzaEluaXRpYWxpemUoKS4KKyAgKiBJZiBAYSBoYXNoYml0bGVuIHdhcyBub3QgMCBpbiB0aGUgY2FsbCB0byBLZWNjYWtfSGFzaEluaXRpYWxpemUoKSwgdGhlIG51bWJlciBvZgorICAqICAgICBvdXRwdXQgYml0cyBpcyBlcXVhbCB0byBAYSBoYXNoYml0bGVuLgorICAqIElmIEBhIGhhc2hiaXRsZW4gd2FzIDAgaW4gdGhlIGNhbGwgdG8gS2VjY2FrX0hhc2hJbml0aWFsaXplKCksIHRoZSBvdXRwdXQgYml0cworICAqICAgICBtdXN0IGJlIGV4dHJhY3RlZCB1c2luZyB0aGUgS2VjY2FrX0hhc2hTcXVlZXplKCkgZnVuY3Rpb24uCisgICogQHBhcmFtICBzdGF0ZSAgICAgICBQb2ludGVyIHRvIHRoZSBzdGF0ZSBvZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIGluaXRpYWxpemVkIGJ5IEluaXQoKS4KKyAgKiBAcGFyYW0gIGhhc2h2YWwgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaEZpbmFsKEtlY2Nha19IYXNoSW5zdGFuY2UgKmhhc2hJbnN0YW5jZSwgQml0U2VxdWVuY2UgKmhhc2h2YWwpOworCisgLyoqCisgICogRnVuY3Rpb24gdG8gc3F1ZWV6ZSBvdXRwdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGhhc2hJbnN0YW5jZSAgICBQb2ludGVyIHRvIHRoZSBoYXNoIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGF0YSAgICAgICAgUG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJlIHRvIHN0b3JlIHRoZSBvdXRwdXQgZGF0YS4KKyAgKiBAcGFyYW0gIGRhdGFiaXRsZW4gIFRoZSBudW1iZXIgb2Ygb3V0cHV0IGJpdHMgZGVzaXJlZCAobXVzdCBiZSBhIG11bHRpcGxlIG9mIDgpLgorICAqIEBwcmUgICAgS2VjY2FrX0hhc2hGaW5hbCgpIG11c3QgaGF2ZSBiZWVuIGFscmVhZHkgY2FsbGVkLgorICAqIEBwcmUgICAgQGEgZGF0YWJpdGxlbiBpcyBhIG11bHRpcGxlIG9mIDguCisgICogQHJldHVybiBTVUNDRVNTIGlmIHN1Y2Nlc3NmdWwsIEZBSUwgb3RoZXJ3aXNlLgorICAqLworSGFzaFJldHVybiBLZWNjYWtfSGFzaFNxdWVlemUoS2VjY2FrX0hhc2hJbnN0YW5jZSAqaGFzaEluc3RhbmNlLCBCaXRTZXF1ZW5jZSAqZGF0YSwgRGF0YUxlbmd0aCBkYXRhYml0bGVuKTsKKworI2VuZGlmCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLTY0Lm1hY3JvcyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYxMWZlMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC02NC5tYWNyb3MKQEAgLTAsMCArMSwyMjA4IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjZGVmaW5lIGRlY2xhcmVBQkNERSBcCisgICAgVUlOVDY0IEFiYSwgQWJlLCBBYmksIEFibywgQWJ1OyBcCisgICAgVUlOVDY0IEFnYSwgQWdlLCBBZ2ksIEFnbywgQWd1OyBcCisgICAgVUlOVDY0IEFrYSwgQWtlLCBBa2ksIEFrbywgQWt1OyBcCisgICAgVUlOVDY0IEFtYSwgQW1lLCBBbWksIEFtbywgQW11OyBcCisgICAgVUlOVDY0IEFzYSwgQXNlLCBBc2ksIEFzbywgQXN1OyBcCisgICAgVUlOVDY0IEJiYSwgQmJlLCBCYmksIEJibywgQmJ1OyBcCisgICAgVUlOVDY0IEJnYSwgQmdlLCBCZ2ksIEJnbywgQmd1OyBcCisgICAgVUlOVDY0IEJrYSwgQmtlLCBCa2ksIEJrbywgQmt1OyBcCisgICAgVUlOVDY0IEJtYSwgQm1lLCBCbWksIEJtbywgQm11OyBcCisgICAgVUlOVDY0IEJzYSwgQnNlLCBCc2ksIEJzbywgQnN1OyBcCisgICAgVUlOVDY0IENhLCBDZSwgQ2ksIENvLCBDdTsgXAorICAgIFVJTlQ2NCBEYSwgRGUsIERpLCBEbywgRHU7IFwKKyAgICBVSU5UNjQgRWJhLCBFYmUsIEViaSwgRWJvLCBFYnU7IFwKKyAgICBVSU5UNjQgRWdhLCBFZ2UsIEVnaSwgRWdvLCBFZ3U7IFwKKyAgICBVSU5UNjQgRWthLCBFa2UsIEVraSwgRWtvLCBFa3U7IFwKKyAgICBVSU5UNjQgRW1hLCBFbWUsIEVtaSwgRW1vLCBFbXU7IFwKKyAgICBVSU5UNjQgRXNhLCBFc2UsIEVzaSwgRXNvLCBFc3U7IFwKKworI2RlZmluZSBwcmVwYXJlVGhldGEgXAorICAgIENhID0gQWJhXkFnYV5Ba2FeQW1hXkFzYTsgXAorICAgIENlID0gQWJlXkFnZV5Ba2VeQW1lXkFzZTsgXAorICAgIENpID0gQWJpXkFnaV5Ba2leQW1pXkFzaTsgXAorICAgIENvID0gQWJvXkFnb15Ba29eQW1vXkFzbzsgXAorICAgIEN1ID0gQWJ1XkFndV5Ba3VeQW11XkFzdTsgXAorCisjaWZkZWYgVXNlQmViaWdva2ltaXNhCisvKiAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAobGFuZSBjb21wbGVtZW50aW5nIHBhdHRlcm4gJ2JlYmlnb2tpbWlzYScpICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXiggIEJiZSB8ICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBDYSA9IEUjI2JhOyBcCisgICAgRSMjYmUgPSAgIEJiZSBeKCh+QmJpKXwgIEJibyApOyBcCisgICAgQ2UgPSBFIyNiZTsgXAorICAgIEUjI2JpID0gICBCYmkgXiggIEJibyAmICBCYnUgKTsgXAorICAgIENpID0gRSMjYmk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oICBCYnUgfCAgQmJhICk7IFwKKyAgICBDbyA9IEUjI2JvOyBcCisgICAgRSMjYnUgPSAgIEJidSBeKCAgQmJhICYgIEJiZSApOyBcCisgICAgQ3UgPSBFIyNidTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCAgQmdlIHwgIEJnaSApOyBcCisgICAgQ2EgXj0gRSMjZ2E7IFwKKyAgICBFIyNnZSA9ICAgQmdlIF4oICBCZ2kgJiAgQmdvICk7IFwKKyAgICBDZSBePSBFIyNnZTsgXAorICAgIEUjI2dpID0gICBCZ2kgXiggIEJnbyB8KH5CZ3UpKTsgXAorICAgIENpIF49IEUjI2dpOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCAgQmd1IHwgIEJnYSApOyBcCisgICAgQ28gXj0gRSMjZ287IFwKKyAgICBFIyNndSA9ICAgQmd1IF4oICBCZ2EgJiAgQmdlICk7IFwKKyAgICBDdSBePSBFIyNndTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXiggIEJrZSB8ICBCa2kgKTsgXAorICAgIENhIF49IEUjI2thOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCAgQmtpICYgIEJrbyApOyBcCisgICAgQ2UgXj0gRSMja2U7IFwKKyAgICBFIyNraSA9ICAgQmtpIF4oKH5Ca28pJiAgQmt1ICk7IFwKKyAgICBDaSBePSBFIyNraTsgXAorICAgIEUjI2tvID0gKH5Ca28pXiggIEJrdSB8ICBCa2EgKTsgXAorICAgIENvIF49IEUjI2tvOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCAgQmthICYgIEJrZSApOyBcCisgICAgQ3UgXj0gRSMja3U7IFwKK1wKKyAgICBBIyNidSBePSBEdTsgXAorICAgIEJtYSA9IFJPTDY0KEEjI2J1LCAyNyk7IFwKKyAgICBBIyNnYSBePSBEYTsgXAorICAgIEJtZSA9IFJPTDY0KEEjI2dhLCAzNik7IFwKKyAgICBBIyNrZSBePSBEZTsgXAorICAgIEJtaSA9IFJPTDY0KEEjI2tlLCAxMCk7IFwKKyAgICBBIyNtaSBePSBEaTsgXAorICAgIEJtbyA9IFJPTDY0KEEjI21pLCAxNSk7IFwKKyAgICBBIyNzbyBePSBEbzsgXAorICAgIEJtdSA9IFJPTDY0KEEjI3NvLCA1Nik7IFwKKyAgICBFIyNtYSA9ICAgQm1hIF4oICBCbWUgJiAgQm1pICk7IFwKKyAgICBDYSBePSBFIyNtYTsgXAorICAgIEUjI21lID0gICBCbWUgXiggIEJtaSB8ICBCbW8gKTsgXAorICAgIENlIF49IEUjI21lOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKXwgIEJtdSApOyBcCisgICAgQ2kgXj0gRSMjbWk7IFwKKyAgICBFIyNtbyA9ICh+Qm1vKV4oICBCbXUgJiAgQm1hICk7IFwKKyAgICBDbyBePSBFIyNtbzsgXAorICAgIEUjI211ID0gICBCbXUgXiggIEJtYSB8ICBCbWUgKTsgXAorICAgIEN1IF49IEUjI211OyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBDYSBePSBFIyNzYTsgXAorICAgIEUjI3NlID0gKH5Cc2UpXiggIEJzaSB8ICBCc28gKTsgXAorICAgIENlIF49IEUjI3NlOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCAgQnNvICYgIEJzdSApOyBcCisgICAgQ2kgXj0gRSMjc2k7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oICBCc3UgfCAgQnNhICk7IFwKKyAgICBDbyBePSBFIyNzbzsgXAorICAgIEUjI3N1ID0gICBCc3UgXiggIEJzYSAmICBCc2UgKTsgXAorICAgIEN1IF49IEUjI3N1OyBcCitcCisKKy8qIC0tLSBDb2RlIGZvciByb3VuZCAobGFuZSBjb21wbGVtZW50aW5nIHBhdHRlcm4gJ2JlYmlnb2tpbWlzYScpICovCisKKy8qIC0tLSA2NC1iaXQgbGFuZXMgbWFwcGVkIHRvIDY0LWJpdCB3b3JkcyAqLworCisjZGVmaW5lIHRoZXRhUmhvUGlDaGlJb3RhKGksIEEsIEUpIFwKKyAgICBEYSA9IEN1XlJPTDY0KENlLCAxKTsgXAorICAgIERlID0gQ2FeUk9MNjQoQ2ksIDEpOyBcCisgICAgRGkgPSBDZV5ST0w2NChDbywgMSk7IFwKKyAgICBEbyA9IENpXlJPTDY0KEN1LCAxKTsgXAorICAgIER1ID0gQ29eUk9MNjQoQ2EsIDEpOyBcCitcCisgICAgQSMjYmEgXj0gRGE7IFwKKyAgICBCYmEgPSBBIyNiYTsgXAorICAgIEEjI2dlIF49IERlOyBcCisgICAgQmJlID0gUk9MNjQoQSMjZ2UsIDQ0KTsgXAorICAgIEEjI2tpIF49IERpOyBcCisgICAgQmJpID0gUk9MNjQoQSMja2ksIDQzKTsgXAorICAgIEEjI21vIF49IERvOyBcCisgICAgQmJvID0gUk9MNjQoQSMjbW8sIDIxKTsgXAorICAgIEEjI3N1IF49IER1OyBcCisgICAgQmJ1ID0gUk9MNjQoQSMjc3UsIDE0KTsgXAorICAgIEUjI2JhID0gICBCYmEgXiggIEJiZSB8ICBCYmkgKTsgXAorICAgIEUjI2JhIF49IEtlY2Nha0YxNjAwUm91bmRDb25zdGFudHNbaV07IFwKKyAgICBFIyNiZSA9ICAgQmJlIF4oKH5CYmkpfCAgQmJvICk7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oICBCYm8gJiAgQmJ1ICk7IFwKKyAgICBFIyNibyA9ICAgQmJvIF4oICBCYnUgfCAgQmJhICk7IFwKKyAgICBFIyNidSA9ICAgQmJ1IF4oICBCYmEgJiAgQmJlICk7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXiggIEJnZSB8ICBCZ2kgKTsgXAorICAgIEUjI2dlID0gICBCZ2UgXiggIEJnaSAmICBCZ28gKTsgXAorICAgIEUjI2dpID0gICBCZ2kgXiggIEJnbyB8KH5CZ3UpKTsgXAorICAgIEUjI2dvID0gICBCZ28gXiggIEJndSB8ICBCZ2EgKTsgXAorICAgIEUjI2d1ID0gICBCZ3UgXiggIEJnYSAmICBCZ2UgKTsgXAorXAorICAgIEEjI2JlIF49IERlOyBcCisgICAgQmthID0gUk9MNjQoQSMjYmUsIDEpOyBcCisgICAgQSMjZ2kgXj0gRGk7IFwKKyAgICBCa2UgPSBST0w2NChBIyNnaSwgNik7IFwKKyAgICBBIyNrbyBePSBEbzsgXAorICAgIEJraSA9IFJPTDY0KEEjI2tvLCAyNSk7IFwKKyAgICBBIyNtdSBePSBEdTsgXAorICAgIEJrbyA9IFJPTDY0KEEjI211LCA4KTsgXAorICAgIEEjI3NhIF49IERhOyBcCisgICAgQmt1ID0gUk9MNjQoQSMjc2EsIDE4KTsgXAorICAgIEUjI2thID0gICBCa2EgXiggIEJrZSB8ICBCa2kgKTsgXAorICAgIEUjI2tlID0gICBCa2UgXiggIEJraSAmICBCa28gKTsgXAorICAgIEUjI2tpID0gICBCa2kgXigofkJrbykmICBCa3UgKTsgXAorICAgIEUjI2tvID0gKH5Ca28pXiggIEJrdSB8ICBCa2EgKTsgXAorICAgIEUjI2t1ID0gICBCa3UgXiggIEJrYSAmICBCa2UgKTsgXAorXAorICAgIEEjI2J1IF49IER1OyBcCisgICAgQm1hID0gUk9MNjQoQSMjYnUsIDI3KTsgXAorICAgIEEjI2dhIF49IERhOyBcCisgICAgQm1lID0gUk9MNjQoQSMjZ2EsIDM2KTsgXAorICAgIEEjI2tlIF49IERlOyBcCisgICAgQm1pID0gUk9MNjQoQSMja2UsIDEwKTsgXAorICAgIEEjI21pIF49IERpOyBcCisgICAgQm1vID0gUk9MNjQoQSMjbWksIDE1KTsgXAorICAgIEEjI3NvIF49IERvOyBcCisgICAgQm11ID0gUk9MNjQoQSMjc28sIDU2KTsgXAorICAgIEUjI21hID0gICBCbWEgXiggIEJtZSAmICBCbWkgKTsgXAorICAgIEUjI21lID0gICBCbWUgXiggIEJtaSB8ICBCbW8gKTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbyl8ICBCbXUgKTsgXAorICAgIEUjI21vID0gKH5CbW8pXiggIEJtdSAmICBCbWEgKTsgXAorICAgIEUjI211ID0gICBCbXUgXiggIEJtYSB8ICBCbWUgKTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgRSMjc2UgPSAofkJzZSleKCAgQnNpIHwgIEJzbyApOyBcCisgICAgRSMjc2kgPSAgIEJzaSBeKCAgQnNvICYgIEJzdSApOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCAgQnN1IHwgIEJzYSApOyBcCisgICAgRSMjc3UgPSAgIEJzdSBeKCAgQnNhICYgIEJzZSApOyBcCitcCisKKyNlbHNlIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisvKiAtLS0gQ29kZSBmb3Igcm91bmQsIHdpdGggcHJlcGFyZS10aGV0YSAqLworCisvKiAtLS0gNjQtYml0IGxhbmVzIG1hcHBlZCB0byA2NC1iaXQgd29yZHMgKi8KKworI2RlZmluZSB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpLCBBLCBFKSBcCisgICAgRGEgPSBDdV5ST0w2NChDZSwgMSk7IFwKKyAgICBEZSA9IENhXlJPTDY0KENpLCAxKTsgXAorICAgIERpID0gQ2VeUk9MNjQoQ28sIDEpOyBcCisgICAgRG8gPSBDaV5ST0w2NChDdSwgMSk7IFwKKyAgICBEdSA9IENvXlJPTDY0KENhLCAxKTsgXAorXAorICAgIEEjI2JhIF49IERhOyBcCisgICAgQmJhID0gQSMjYmE7IFwKKyAgICBBIyNnZSBePSBEZTsgXAorICAgIEJiZSA9IFJPTDY0KEEjI2dlLCA0NCk7IFwKKyAgICBBIyNraSBePSBEaTsgXAorICAgIEJiaSA9IFJPTDY0KEEjI2tpLCA0Myk7IFwKKyAgICBBIyNtbyBePSBEbzsgXAorICAgIEJibyA9IFJPTDY0KEEjI21vLCAyMSk7IFwKKyAgICBBIyNzdSBePSBEdTsgXAorICAgIEJidSA9IFJPTDY0KEEjI3N1LCAxNCk7IFwKKyAgICBFIyNiYSA9ICAgQmJhIF4oKH5CYmUpJiAgQmJpICk7IFwKKyAgICBFIyNiYSBePSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzW2ldOyBcCisgICAgQ2EgPSBFIyNiYTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSkmICBCYm8gKTsgXAorICAgIENlID0gRSMjYmU7IFwKKyAgICBFIyNiaSA9ICAgQmJpIF4oKH5CYm8pJiAgQmJ1ICk7IFwKKyAgICBDaSA9IEUjI2JpOyBcCisgICAgRSMjYm8gPSAgIEJibyBeKCh+QmJ1KSYgIEJiYSApOyBcCisgICAgQ28gPSBFIyNibzsgXAorICAgIEUjI2J1ID0gICBCYnUgXigofkJiYSkmICBCYmUgKTsgXAorICAgIEN1ID0gRSMjYnU7IFwKK1wKKyAgICBBIyNibyBePSBEbzsgXAorICAgIEJnYSA9IFJPTDY0KEEjI2JvLCAyOCk7IFwKKyAgICBBIyNndSBePSBEdTsgXAorICAgIEJnZSA9IFJPTDY0KEEjI2d1LCAyMCk7IFwKKyAgICBBIyNrYSBePSBEYTsgXAorICAgIEJnaSA9IFJPTDY0KEEjI2thLCAzKTsgXAorICAgIEEjI21lIF49IERlOyBcCisgICAgQmdvID0gUk9MNjQoQSMjbWUsIDQ1KTsgXAorICAgIEEjI3NpIF49IERpOyBcCisgICAgQmd1ID0gUk9MNjQoQSMjc2ksIDYxKTsgXAorICAgIEUjI2dhID0gICBCZ2EgXigofkJnZSkmICBCZ2kgKTsgXAorICAgIENhIF49IEUjI2dhOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCh+QmdpKSYgIEJnbyApOyBcCisgICAgQ2UgXj0gRSMjZ2U7IFwKKyAgICBFIyNnaSA9ICAgQmdpIF4oKH5CZ28pJiAgQmd1ICk7IFwKKyAgICBDaSBePSBFIyNnaTsgXAorICAgIEUjI2dvID0gICBCZ28gXigofkJndSkmICBCZ2EgKTsgXAorICAgIENvIF49IEUjI2dvOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCh+QmdhKSYgIEJnZSApOyBcCisgICAgQ3UgXj0gRSMjZ3U7IFwKK1wKKyAgICBBIyNiZSBePSBEZTsgXAorICAgIEJrYSA9IFJPTDY0KEEjI2JlLCAxKTsgXAorICAgIEEjI2dpIF49IERpOyBcCisgICAgQmtlID0gUk9MNjQoQSMjZ2ksIDYpOyBcCisgICAgQSMja28gXj0gRG87IFwKKyAgICBCa2kgPSBST0w2NChBIyNrbywgMjUpOyBcCisgICAgQSMjbXUgXj0gRHU7IFwKKyAgICBCa28gPSBST0w2NChBIyNtdSwgOCk7IFwKKyAgICBBIyNzYSBePSBEYTsgXAorICAgIEJrdSA9IFJPTDY0KEEjI3NhLCAxOCk7IFwKKyAgICBFIyNrYSA9ICAgQmthIF4oKH5Ca2UpJiAgQmtpICk7IFwKKyAgICBDYSBePSBFIyNrYTsgXAorICAgIEUjI2tlID0gICBCa2UgXigofkJraSkmICBCa28gKTsgXAorICAgIENlIF49IEUjI2tlOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgQ2kgXj0gRSMja2k7IFwKKyAgICBFIyNrbyA9ICAgQmtvIF4oKH5Ca3UpJiAgQmthICk7IFwKKyAgICBDbyBePSBFIyNrbzsgXAorICAgIEUjI2t1ID0gICBCa3UgXigofkJrYSkmICBCa2UgKTsgXAorICAgIEN1IF49IEUjI2t1OyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCh+Qm1lKSYgIEJtaSApOyBcCisgICAgQ2EgXj0gRSMjbWE7IFwKKyAgICBFIyNtZSA9ICAgQm1lIF4oKH5CbWkpJiAgQm1vICk7IFwKKyAgICBDZSBePSBFIyNtZTsgXAorICAgIEUjI21pID0gICBCbWkgXigofkJtbykmICBCbXUgKTsgXAorICAgIENpIF49IEUjI21pOyBcCisgICAgRSMjbW8gPSAgIEJtbyBeKCh+Qm11KSYgIEJtYSApOyBcCisgICAgQ28gXj0gRSMjbW87IFwKKyAgICBFIyNtdSA9ICAgQm11IF4oKH5CbWEpJiAgQm1lICk7IFwKKyAgICBDdSBePSBFIyNtdTsgXAorXAorICAgIEEjI2JpIF49IERpOyBcCisgICAgQnNhID0gUk9MNjQoQSMjYmksIDYyKTsgXAorICAgIEEjI2dvIF49IERvOyBcCisgICAgQnNlID0gUk9MNjQoQSMjZ28sIDU1KTsgXAorICAgIEEjI2t1IF49IER1OyBcCisgICAgQnNpID0gUk9MNjQoQSMja3UsIDM5KTsgXAorICAgIEEjI21hIF49IERhOyBcCisgICAgQnNvID0gUk9MNjQoQSMjbWEsIDQxKTsgXAorICAgIEEjI3NlIF49IERlOyBcCisgICAgQnN1ID0gUk9MNjQoQSMjc2UsIDIpOyBcCisgICAgRSMjc2EgPSAgIEJzYSBeKCh+QnNlKSYgIEJzaSApOyBcCisgICAgQ2EgXj0gRSMjc2E7IFwKKyAgICBFIyNzZSA9ICAgQnNlIF4oKH5Cc2kpJiAgQnNvICk7IFwKKyAgICBDZSBePSBFIyNzZTsgXAorICAgIEUjI3NpID0gICBCc2kgXigofkJzbykmICBCc3UgKTsgXAorICAgIENpIF49IEUjI3NpOyBcCisgICAgRSMjc28gPSAgIEJzbyBeKCh+QnN1KSYgIEJzYSApOyBcCisgICAgQ28gXj0gRSMjc287IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oKH5Cc2EpJiAgQnNlICk7IFwKKyAgICBDdSBePSBFIyNzdTsgXAorXAorCisvKiAtLS0gQ29kZSBmb3Igcm91bmQgKi8KKworLyogLS0tIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gNjQtYml0IHdvcmRzICovCisKKyNkZWZpbmUgdGhldGFSaG9QaUNoaUlvdGEoaSwgQSwgRSkgXAorICAgIERhID0gQ3VeUk9MNjQoQ2UsIDEpOyBcCisgICAgRGUgPSBDYV5ST0w2NChDaSwgMSk7IFwKKyAgICBEaSA9IENlXlJPTDY0KENvLCAxKTsgXAorICAgIERvID0gQ2leUk9MNjQoQ3UsIDEpOyBcCisgICAgRHUgPSBDb15ST0w2NChDYSwgMSk7IFwKK1wKKyAgICBBIyNiYSBePSBEYTsgXAorICAgIEJiYSA9IEEjI2JhOyBcCisgICAgQSMjZ2UgXj0gRGU7IFwKKyAgICBCYmUgPSBST0w2NChBIyNnZSwgNDQpOyBcCisgICAgQSMja2kgXj0gRGk7IFwKKyAgICBCYmkgPSBST0w2NChBIyNraSwgNDMpOyBcCisgICAgQSMjbW8gXj0gRG87IFwKKyAgICBCYm8gPSBST0w2NChBIyNtbywgMjEpOyBcCisgICAgQSMjc3UgXj0gRHU7IFwKKyAgICBCYnUgPSBST0w2NChBIyNzdSwgMTQpOyBcCisgICAgRSMjYmEgPSAgIEJiYSBeKCh+QmJlKSYgIEJiaSApOyBcCisgICAgRSMjYmEgXj0gS2VjY2FrRjE2MDBSb3VuZENvbnN0YW50c1tpXTsgXAorICAgIEUjI2JlID0gICBCYmUgXigofkJiaSkmICBCYm8gKTsgXAorICAgIEUjI2JpID0gICBCYmkgXigofkJibykmICBCYnUgKTsgXAorICAgIEUjI2JvID0gICBCYm8gXigofkJidSkmICBCYmEgKTsgXAorICAgIEUjI2J1ID0gICBCYnUgXigofkJiYSkmICBCYmUgKTsgXAorXAorICAgIEEjI2JvIF49IERvOyBcCisgICAgQmdhID0gUk9MNjQoQSMjYm8sIDI4KTsgXAorICAgIEEjI2d1IF49IER1OyBcCisgICAgQmdlID0gUk9MNjQoQSMjZ3UsIDIwKTsgXAorICAgIEEjI2thIF49IERhOyBcCisgICAgQmdpID0gUk9MNjQoQSMja2EsIDMpOyBcCisgICAgQSMjbWUgXj0gRGU7IFwKKyAgICBCZ28gPSBST0w2NChBIyNtZSwgNDUpOyBcCisgICAgQSMjc2kgXj0gRGk7IFwKKyAgICBCZ3UgPSBST0w2NChBIyNzaSwgNjEpOyBcCisgICAgRSMjZ2EgPSAgIEJnYSBeKCh+QmdlKSYgIEJnaSApOyBcCisgICAgRSMjZ2UgPSAgIEJnZSBeKCh+QmdpKSYgIEJnbyApOyBcCisgICAgRSMjZ2kgPSAgIEJnaSBeKCh+QmdvKSYgIEJndSApOyBcCisgICAgRSMjZ28gPSAgIEJnbyBeKCh+Qmd1KSYgIEJnYSApOyBcCisgICAgRSMjZ3UgPSAgIEJndSBeKCh+QmdhKSYgIEJnZSApOyBcCitcCisgICAgQSMjYmUgXj0gRGU7IFwKKyAgICBCa2EgPSBST0w2NChBIyNiZSwgMSk7IFwKKyAgICBBIyNnaSBePSBEaTsgXAorICAgIEJrZSA9IFJPTDY0KEEjI2dpLCA2KTsgXAorICAgIEEjI2tvIF49IERvOyBcCisgICAgQmtpID0gUk9MNjQoQSMja28sIDI1KTsgXAorICAgIEEjI211IF49IER1OyBcCisgICAgQmtvID0gUk9MNjQoQSMjbXUsIDgpOyBcCisgICAgQSMjc2EgXj0gRGE7IFwKKyAgICBCa3UgPSBST0w2NChBIyNzYSwgMTgpOyBcCisgICAgRSMja2EgPSAgIEJrYSBeKCh+QmtlKSYgIEJraSApOyBcCisgICAgRSMja2UgPSAgIEJrZSBeKCh+QmtpKSYgIEJrbyApOyBcCisgICAgRSMja2kgPSAgIEJraSBeKCh+QmtvKSYgIEJrdSApOyBcCisgICAgRSMja28gPSAgIEJrbyBeKCh+Qmt1KSYgIEJrYSApOyBcCisgICAgRSMja3UgPSAgIEJrdSBeKCh+QmthKSYgIEJrZSApOyBcCitcCisgICAgQSMjYnUgXj0gRHU7IFwKKyAgICBCbWEgPSBST0w2NChBIyNidSwgMjcpOyBcCisgICAgQSMjZ2EgXj0gRGE7IFwKKyAgICBCbWUgPSBST0w2NChBIyNnYSwgMzYpOyBcCisgICAgQSMja2UgXj0gRGU7IFwKKyAgICBCbWkgPSBST0w2NChBIyNrZSwgMTApOyBcCisgICAgQSMjbWkgXj0gRGk7IFwKKyAgICBCbW8gPSBST0w2NChBIyNtaSwgMTUpOyBcCisgICAgQSMjc28gXj0gRG87IFwKKyAgICBCbXUgPSBST0w2NChBIyNzbywgNTYpOyBcCisgICAgRSMjbWEgPSAgIEJtYSBeKCh+Qm1lKSYgIEJtaSApOyBcCisgICAgRSMjbWUgPSAgIEJtZSBeKCh+Qm1pKSYgIEJtbyApOyBcCisgICAgRSMjbWkgPSAgIEJtaSBeKCh+Qm1vKSYgIEJtdSApOyBcCisgICAgRSMjbW8gPSAgIEJtbyBeKCh+Qm11KSYgIEJtYSApOyBcCisgICAgRSMjbXUgPSAgIEJtdSBeKCh+Qm1hKSYgIEJtZSApOyBcCitcCisgICAgQSMjYmkgXj0gRGk7IFwKKyAgICBCc2EgPSBST0w2NChBIyNiaSwgNjIpOyBcCisgICAgQSMjZ28gXj0gRG87IFwKKyAgICBCc2UgPSBST0w2NChBIyNnbywgNTUpOyBcCisgICAgQSMja3UgXj0gRHU7IFwKKyAgICBCc2kgPSBST0w2NChBIyNrdSwgMzkpOyBcCisgICAgQSMjbWEgXj0gRGE7IFwKKyAgICBCc28gPSBST0w2NChBIyNtYSwgNDEpOyBcCisgICAgQSMjc2UgXj0gRGU7IFwKKyAgICBCc3UgPSBST0w2NChBIyNzZSwgMik7IFwKKyAgICBFIyNzYSA9ICAgQnNhIF4oKH5Cc2UpJiAgQnNpICk7IFwKKyAgICBFIyNzZSA9ICAgQnNlIF4oKH5Cc2kpJiAgQnNvICk7IFwKKyAgICBFIyNzaSA9ICAgQnNpIF4oKH5Cc28pJiAgQnN1ICk7IFwKKyAgICBFIyNzbyA9ICAgQnNvIF4oKH5Cc3UpJiAgQnNhICk7IFwKKyAgICBFIyNzdSA9ICAgQnN1IF4oKH5Cc2EpJiAgQnNlICk7IFwKK1wKKworI2VuZGlmIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisKKyNkZWZpbmUgY29weUZyb21TdGF0ZShYLCBzdGF0ZSkgXAorICAgIFgjI2JhID0gc3RhdGVbIDBdOyBcCisgICAgWCMjYmUgPSBzdGF0ZVsgMV07IFwKKyAgICBYIyNiaSA9IHN0YXRlWyAyXTsgXAorICAgIFgjI2JvID0gc3RhdGVbIDNdOyBcCisgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICBYIyNnYSA9IHN0YXRlWyA1XTsgXAorICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgWCMjZ2kgPSBzdGF0ZVsgN107IFwKKyAgICBYIyNnbyA9IHN0YXRlWyA4XTsgXAorICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICBYIyNrZSA9IHN0YXRlWzExXTsgXAorICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgIFgjI21hID0gc3RhdGVbMTVdOyBcCisgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICBYIyNzYSA9IHN0YXRlWzIwXTsgXAorICAgIFgjI3NlID0gc3RhdGVbMjFdOyBcCisgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgIFgjI3N1ID0gc3RhdGVbMjRdOyBcCisKKyNkZWZpbmUgY29weVRvU3RhdGUoc3RhdGUsIFgpIFwKKyAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorCisjZGVmaW5lIGNvcHlTdGF0ZVZhcmlhYmxlcyhYLCBZKSBcCisgICAgWCMjYmEgPSBZIyNiYTsgXAorICAgIFgjI2JlID0gWSMjYmU7IFwKKyAgICBYIyNiaSA9IFkjI2JpOyBcCisgICAgWCMjYm8gPSBZIyNibzsgXAorICAgIFgjI2J1ID0gWSMjYnU7IFwKKyAgICBYIyNnYSA9IFkjI2dhOyBcCisgICAgWCMjZ2UgPSBZIyNnZTsgXAorICAgIFgjI2dpID0gWSMjZ2k7IFwKKyAgICBYIyNnbyA9IFkjI2dvOyBcCisgICAgWCMjZ3UgPSBZIyNndTsgXAorICAgIFgjI2thID0gWSMja2E7IFwKKyAgICBYIyNrZSA9IFkjI2tlOyBcCisgICAgWCMja2kgPSBZIyNraTsgXAorICAgIFgjI2tvID0gWSMja287IFwKKyAgICBYIyNrdSA9IFkjI2t1OyBcCisgICAgWCMjbWEgPSBZIyNtYTsgXAorICAgIFgjI21lID0gWSMjbWU7IFwKKyAgICBYIyNtaSA9IFkjI21pOyBcCisgICAgWCMjbW8gPSBZIyNtbzsgXAorICAgIFgjI211ID0gWSMjbXU7IFwKKyAgICBYIyNzYSA9IFkjI3NhOyBcCisgICAgWCMjc2UgPSBZIyNzZTsgXAorICAgIFgjI3NpID0gWSMjc2k7IFwKKyAgICBYIyNzbyA9IFkjI3NvOyBcCisgICAgWCMjc3UgPSBZIyNzdTsgXAorCisjZGVmaW5lIGNvcHlGcm9tU3RhdGVBbmRBZGQoWCwgc3RhdGUsIGlucHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhID0gc3RhdGVbIDBdXmlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIFgjI2JvID0gc3RhdGVbIDNdOyBcCisgICAgICAgICAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF07IFwKKyAgICAgICAgICAgICAgICBYIyNnYSA9IHN0YXRlWyA1XTsgXAorICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjYmEgPSBzdGF0ZVsgMF1eaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICAgICAgWCMjYm8gPSBzdGF0ZVsgM11eaW5wdXRbIDNdOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNidSA9IHN0YXRlWyA0XV5pbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV1eaW5wdXRbIDVdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dlID0gc3RhdGVbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgPSBzdGF0ZVsgNl1eaW5wdXRbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBYIyNnaSA9IHN0YXRlWyA3XTsgXAorICAgICAgICAgICAgWCMjZ28gPSBzdGF0ZVsgOF07IFwKKyAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldOyBcCisgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXTsgXAorICAgICAgICAgICAgWCMja2UgPSBzdGF0ZVsxMV07IFwKKyAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgICAgICAgICBYIyNrbyA9IHN0YXRlWzEzXTsgXAorICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgICAgIFgjI2JlID0gc3RhdGVbIDFdXmlucHV0WyAxXTsgXAorICAgICAgICAgICAgWCMjYmkgPSBzdGF0ZVsgMl1eaW5wdXRbIDJdOyBcCisgICAgICAgICAgICBYIyNibyA9IHN0YXRlWyAzXV5pbnB1dFsgM107IFwKKyAgICAgICAgICAgIFgjI2J1ID0gc3RhdGVbIDRdXmlucHV0WyA0XTsgXAorICAgICAgICAgICAgWCMjZ2EgPSBzdGF0ZVsgNV1eaW5wdXRbIDVdOyBcCisgICAgICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XV5pbnB1dFsgNl07IFwKKyAgICAgICAgICAgIFgjI2dpID0gc3RhdGVbIDddXmlucHV0WyA3XTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnbyA9IHN0YXRlWyA4XV5pbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgPSBzdGF0ZVsgOV1eaW5wdXRbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSA9IHN0YXRlWzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBYIyNrZSA9IHN0YXRlWzExXTsgXAorICAgICAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdOyBcCisgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgIFgjI2d1ID0gc3RhdGVbIDldXmlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgIFgjI2thID0gc3RhdGVbMTBdXmlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tpID0gc3RhdGVbMTJdXmlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM107IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja3UgPSBzdGF0ZVsxNF07IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMja28gPSBzdGF0ZVsxM11eaW5wdXRbMTNdOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSA9IHN0YXRlWzE0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgWCMjbWEgPSBzdGF0ZVsxNV07IFwKKyAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl07IFwKKyAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN107IFwKKyAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF07IFwKKyAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV07IFwKKyAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV07IFwKKyAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl07IFwKKyAgICAgICAgWCMjc28gPSBzdGF0ZVsyM107IFwKKyAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBYIyNiYSA9IHN0YXRlWyAwXV5pbnB1dFsgMF07IFwKKyAgICAgICAgWCMjYmUgPSBzdGF0ZVsgMV1eaW5wdXRbIDFdOyBcCisgICAgICAgIFgjI2JpID0gc3RhdGVbIDJdXmlucHV0WyAyXTsgXAorICAgICAgICBYIyNibyA9IHN0YXRlWyAzXV5pbnB1dFsgM107IFwKKyAgICAgICAgWCMjYnUgPSBzdGF0ZVsgNF1eaW5wdXRbIDRdOyBcCisgICAgICAgIFgjI2dhID0gc3RhdGVbIDVdXmlucHV0WyA1XTsgXAorICAgICAgICBYIyNnZSA9IHN0YXRlWyA2XV5pbnB1dFsgNl07IFwKKyAgICAgICAgWCMjZ2kgPSBzdGF0ZVsgN11eaW5wdXRbIDddOyBcCisgICAgICAgIFgjI2dvID0gc3RhdGVbIDhdXmlucHV0WyA4XTsgXAorICAgICAgICBYIyNndSA9IHN0YXRlWyA5XV5pbnB1dFsgOV07IFwKKyAgICAgICAgWCMja2EgPSBzdGF0ZVsxMF1eaW5wdXRbMTBdOyBcCisgICAgICAgIFgjI2tlID0gc3RhdGVbMTFdXmlucHV0WzExXTsgXAorICAgICAgICBYIyNraSA9IHN0YXRlWzEyXV5pbnB1dFsxMl07IFwKKyAgICAgICAgWCMja28gPSBzdGF0ZVsxM11eaW5wdXRbMTNdOyBcCisgICAgICAgIFgjI2t1ID0gc3RhdGVbMTRdXmlucHV0WzE0XTsgXAorICAgICAgICBYIyNtYSA9IHN0YXRlWzE1XV5pbnB1dFsxNV07IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtbyA9IHN0YXRlWzE4XTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI21lID0gc3RhdGVbMTZdXmlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSA9IHN0YXRlWzE3XV5pbnB1dFsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vID0gc3RhdGVbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIFgjI211ID0gc3RhdGVbMTldOyBcCisgICAgICAgICAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF07IFwKKyAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjbWUgPSBzdGF0ZVsxNl1eaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgWCMjbWkgPSBzdGF0ZVsxN11eaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgWCMjbXUgPSBzdGF0ZVsxOV1eaW5wdXRbMTldOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgPSBzdGF0ZVsyMF1eaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNzZSA9IHN0YXRlWzIxXV5pbnB1dFsyMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpID0gc3RhdGVbMjJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgPSBzdGF0ZVsyMl1eaW5wdXRbMjJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBYIyNzbyA9IHN0YXRlWzIzXTsgXAorICAgICAgICAgICAgWCMjc3UgPSBzdGF0ZVsyNF07IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBYIyNtZSA9IHN0YXRlWzE2XV5pbnB1dFsxNl07IFwKKyAgICAgICAgICAgIFgjI21pID0gc3RhdGVbMTddXmlucHV0WzE3XTsgXAorICAgICAgICAgICAgWCMjbW8gPSBzdGF0ZVsxOF1eaW5wdXRbMThdOyBcCisgICAgICAgICAgICBYIyNtdSA9IHN0YXRlWzE5XV5pbnB1dFsxOV07IFwKKyAgICAgICAgICAgIFgjI3NhID0gc3RhdGVbMjBdXmlucHV0WzIwXTsgXAorICAgICAgICAgICAgWCMjc2UgPSBzdGF0ZVsyMV1eaW5wdXRbMjFdOyBcCisgICAgICAgICAgICBYIyNzaSA9IHN0YXRlWzIyXV5pbnB1dFsyMl07IFwKKyAgICAgICAgICAgIFgjI3NvID0gc3RhdGVbMjNdXmlucHV0WzIzXTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSA9IHN0YXRlWzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1ID0gc3RhdGVbMjRdXmlucHV0WzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBhZGRJbnB1dChYLCBpbnB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA9PSAyMSkgeyBcCisgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgWCMjYmkgXj0gaW5wdXRbIDJdOyBcCisgICAgICAgIFgjI2JvIF49IGlucHV0WyAzXTsgXAorICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgWCMjZ2EgXj0gaW5wdXRbIDVdOyBcCisgICAgICAgIFgjI2dlIF49IGlucHV0WyA2XTsgXAorICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgWCMjZ28gXj0gaW5wdXRbIDhdOyBcCisgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICBYIyNrYSBePSBpbnB1dFsxMF07IFwKKyAgICAgICAgWCMja2UgXj0gaW5wdXRbMTFdOyBcCisgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgWCMja3UgXj0gaW5wdXRbMTRdOyBcCisgICAgICAgIFgjI21hIF49IGlucHV0WzE1XTsgXAorICAgICAgICBYIyNtZSBePSBpbnB1dFsxNl07IFwKKyAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgIFgjI21vIF49IGlucHV0WzE4XTsgXAorICAgICAgICBYIyNtdSBePSBpbnB1dFsxOV07IFwKKyAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgfSBcCisgICAgZWxzZSBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IGlucHV0WyAwXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBYIyNiYSBePSBpbnB1dFsgMF07IFwKKyAgICAgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgICAgICAgICBYIyNibyBePSBpbnB1dFsgM107IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gaW5wdXRbIDRdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgICAgICBYIyNiZSBePSBpbnB1dFsgMV07IFwKKyAgICAgICAgICAgIFgjI2JpIF49IGlucHV0WyAyXTsgXAorICAgICAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgICAgICBYIyNidSBePSBpbnB1dFsgNF07IFwKKyAgICAgICAgICAgIFgjI2dhIF49IGlucHV0WyA1XTsgXAorICAgICAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgICAgICBYIyNnaSBePSBpbnB1dFsgN107IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gaW5wdXRbIDldOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2EgXj0gaW5wdXRbMTBdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI2dvIF49IGlucHV0WyA4XTsgXAorICAgICAgICAgICAgICAgIFgjI2d1IF49IGlucHV0WyA5XTsgXAorICAgICAgICAgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICAgICAgICAgIFgjI2tlIF49IGlucHV0WzExXTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2kgXj0gaW5wdXRbMTJdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI2tpIF49IGlucHV0WzEyXTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNrbyBePSBpbnB1dFsxM107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSBpbnB1dFsxNF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgWCMjYmEgXj0gaW5wdXRbIDBdOyBcCisgICAgICAgIFgjI2JlIF49IGlucHV0WyAxXTsgXAorICAgICAgICBYIyNiaSBePSBpbnB1dFsgMl07IFwKKyAgICAgICAgWCMjYm8gXj0gaW5wdXRbIDNdOyBcCisgICAgICAgIFgjI2J1IF49IGlucHV0WyA0XTsgXAorICAgICAgICBYIyNnYSBePSBpbnB1dFsgNV07IFwKKyAgICAgICAgWCMjZ2UgXj0gaW5wdXRbIDZdOyBcCisgICAgICAgIFgjI2dpIF49IGlucHV0WyA3XTsgXAorICAgICAgICBYIyNnbyBePSBpbnB1dFsgOF07IFwKKyAgICAgICAgWCMjZ3UgXj0gaW5wdXRbIDldOyBcCisgICAgICAgIFgjI2thIF49IGlucHV0WzEwXTsgXAorICAgICAgICBYIyNrZSBePSBpbnB1dFsxMV07IFwKKyAgICAgICAgWCMja2kgXj0gaW5wdXRbMTJdOyBcCisgICAgICAgIFgjI2tvIF49IGlucHV0WzEzXTsgXAorICAgICAgICBYIyNrdSBePSBpbnB1dFsxNF07IFwKKyAgICAgICAgWCMjbWEgXj0gaW5wdXRbMTVdOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSBpbnB1dFsxN107IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgWCMjbWUgXj0gaW5wdXRbMTZdOyBcCisgICAgICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICAgICAgWCMjbW8gXj0gaW5wdXRbMThdOyBcCisgICAgICAgICAgICAgICAgWCMjbXUgXj0gaW5wdXRbMTldOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSBePSBpbnB1dFsyMF07IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICAgICAgICAgIFgjI3NlIF49IGlucHV0WzIxXTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NpIF49IGlucHV0WzIyXTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIFgjI21lIF49IGlucHV0WzE2XTsgXAorICAgICAgICAgICAgWCMjbWkgXj0gaW5wdXRbMTddOyBcCisgICAgICAgICAgICBYIyNtbyBePSBpbnB1dFsxOF07IFwKKyAgICAgICAgICAgIFgjI211IF49IGlucHV0WzE5XTsgXAorICAgICAgICAgICAgWCMjc2EgXj0gaW5wdXRbMjBdOyBcCisgICAgICAgICAgICBYIyNzZSBePSBpbnB1dFsyMV07IFwKKyAgICAgICAgICAgIFgjI3NpIF49IGlucHV0WzIyXTsgXAorICAgICAgICAgICAgWCMjc28gXj0gaW5wdXRbMjNdOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjUpIHsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1IF49IGlucHV0WzI0XTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2lmZGVmIFVzZUJlYmlnb2tpbWlzYQorCisjZGVmaW5lIGNvcHlUb1N0YXRlQW5kT3V0cHV0KFgsIHN0YXRlLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBzdGF0ZVsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICBzdGF0ZVsgMV0gPSBYIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSB+WCMjYmk7IFwKKyAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICBzdGF0ZVsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDhdID0gflgjI2dvOyBcCisgICAgICAgIHN0YXRlWyA5XSA9IFgjI2d1OyBcCisgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICBzdGF0ZVsxMF0gPSBYIyNrYTsgXAorICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxMl0gPSB+WCMja2k7IFwKKyAgICAgICAgc3RhdGVbMTNdID0gWCMja287IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBzdGF0ZVsxNV0gPSBYIyNtYTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IH5YIyNtaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIHN0YXRlWzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIG91dHB1dFsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBvdXRwdXQoWCwgb3V0cHV0LCBsYW5lQ291bnQpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDFdID0gflgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSB+WCMjYmU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDYpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IH5YIyNiaTsgXAorICAgICAgICAgICAgb3V0cHV0WyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICAgICAgb3V0cHV0WyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSB+WCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMF0gPSBYIyNrYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IH5YIyNraTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IH5YIyNiZTsgXAorICAgICAgICBvdXRwdXRbIDJdID0gflgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgIG91dHB1dFsgNl0gPSBYIyNnZTsgXAorICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgb3V0cHV0WyA4XSA9IH5YIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gflgjI2tpOyBcCisgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE1XSA9IFgjI21hOyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gflgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSB+WCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIwXSA9IH5YIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgIG91dHB1dFsxN10gPSB+WCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBvdXRwdXRbMjBdID0gflgjI3NhOyBcCisgICAgICAgICAgICBvdXRwdXRbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CisKKyNkZWZpbmUgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IFgjI25hbWU7CisKKyNkZWZpbmUgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIFgjI25hbWUgXj0gaW5wdXRbaW5kZXhdOyBcCisgICAgb3V0cHV0W2luZGV4XSA9IH5YIyNuYW1lOworCisjZGVmaW5lIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIG91dHB1dFtpbmRleF0gPSBpbnB1dFtpbmRleF0gXiBYIyNuYW1lOyBcCisgICAgWCMjbmFtZSBePSBvdXRwdXRbaW5kZXhdOworCisjZGVmaW5lIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCBpbmRleCwgbmFtZSkgXAorICAgIG91dHB1dFtpbmRleF0gPSB+KGlucHV0W2luZGV4XSBeIFgjI25hbWUpOyBcCisgICAgWCMjbmFtZSBePSBvdXRwdXRbaW5kZXhdOyBcCisKKyNlbHNlIC8qIFVzZUJlYmlnb2tpbWlzYSAqLworCisKKyNkZWZpbmUgY29weVRvU3RhdGVBbmRPdXRwdXQoWCwgc3RhdGUsIG91dHB1dCwgbGFuZUNvdW50KSBcCisgICAgaWYgKGxhbmVDb3VudCA8IDE2KSB7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDgpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDQpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICBzdGF0ZVsxMV0gPSBYIyNrZTsgXAorICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHN0YXRlWyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIHN0YXRlWyAxXSA9IFgjI2JlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDJdID0gWCMjYmk7IFwKKyAgICAgICAgICAgIHN0YXRlWyAzXSA9IFgjI2JvOyBcCisgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIHN0YXRlWyA0XSA9IFgjI2J1OyBcCisgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDVdID0gWCMjZ2E7IFwKKyAgICAgICAgICAgIHN0YXRlWyA2XSA9IFgjI2dlOyBcCisgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIHN0YXRlWyA3XSA9IFgjI2dpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMikgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEwKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE0XSA9IFgjI2t1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbIDhdID0gWCMjZ287IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgOV0gPSBYIyNndTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTFdID0gWCMja2U7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTQpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDEzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl09IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxMl09IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzEzXSA9IFgjI2tvOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgc3RhdGVbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgc3RhdGVbMjNdID0gWCMjc287IFwKKyAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBzdGF0ZVsgMF0gPSBYIyNiYTsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgc3RhdGVbIDFdID0gWCMjYmU7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgIHN0YXRlWyAyXSA9IFgjI2JpOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICBzdGF0ZVsgM10gPSBYIyNibzsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgc3RhdGVbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIHN0YXRlWyA1XSA9IFgjI2dhOyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBzdGF0ZVsgNl0gPSBYIyNnZTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgc3RhdGVbIDddID0gWCMjZ2k7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIHN0YXRlWyA4XSA9IFgjI2dvOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICBzdGF0ZVsgOV0gPSBYIyNndTsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgc3RhdGVbMTBdID0gWCMja2E7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIHN0YXRlWzExXSA9IFgjI2tlOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBzdGF0ZVsxMl0gPSBYIyNraTsgXAorICAgICAgICBvdXRwdXRbMTJdPSBYIyNraTsgXAorICAgICAgICBzdGF0ZVsxM10gPSBYIyNrbzsgXAorICAgICAgICBvdXRwdXRbMTNdID0gWCMja287IFwKKyAgICAgICAgc3RhdGVbMTRdID0gWCMja3U7IFwKKyAgICAgICAgb3V0cHV0WzE0XSA9IFgjI2t1OyBcCisgICAgICAgIHN0YXRlWzE1XSA9IFgjI21hOyBcCisgICAgICAgIG91dHB1dFsxNV0gPSBYIyNtYTsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgMjQpIHsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIwKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTgpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMTkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIHN0YXRlWzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgIHN0YXRlWzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICAgICAgc3RhdGVbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjJdID0gWCMjc2k7IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbMjFdID0gWCMjc2U7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIHN0YXRlWzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgc3RhdGVbMjRdID0gWCMjc3U7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBzdGF0ZVsxNl0gPSBYIyNtZTsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBzdGF0ZVsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgb3V0cHV0WzE3XSA9IFgjI21pOyBcCisgICAgICAgICAgICBzdGF0ZVsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE4XSA9IFgjI21vOyBcCisgICAgICAgICAgICBzdGF0ZVsxOV0gPSBYIyNtdTsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBzdGF0ZVsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgb3V0cHV0WzIwXSA9IFgjI3NhOyBcCisgICAgICAgICAgICBzdGF0ZVsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICBzdGF0ZVsyMl0gPSBYIyNzaTsgXAorICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBzdGF0ZVsyM10gPSBYIyNzbzsgXAorICAgICAgICAgICAgb3V0cHV0WzIzXSA9IFgjI3NvOyBcCisgICAgICAgICAgICBzdGF0ZVsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAyNSkgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzI0XSA9IFgjI3N1OyBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfQorCisjZGVmaW5lIG91dHB1dChYLCBvdXRwdXQsIGxhbmVDb3VudCkgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAwXSA9IFgjI2JhOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMF0gPSBYIyNiYTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsgM10gPSBYIyNibzsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDRdID0gWCMjYnU7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgICAgIG91dHB1dFsgMV0gPSBYIyNiZTsgXAorICAgICAgICAgICAgb3V0cHV0WyAyXSA9IFgjI2JpOyBcCisgICAgICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgICAgIG91dHB1dFsgNF0gPSBYIyNidTsgXAorICAgICAgICAgICAgb3V0cHV0WyA1XSA9IFgjI2dhOyBcCisgICAgICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgICAgIG91dHB1dFsgN10gPSBYIyNnaTsgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDkpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTBdID0gWCMja2E7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA4XSA9IFgjI2dvOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WyA5XSA9IFgjI2d1OyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgICAgICAgICAgb3V0cHV0WzExXSA9IFgjI2tlOyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE0KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTJdID0gWCMja2k7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzEyXSA9IFgjI2tpOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxM10gPSBYIyNrbzsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IFwKKyAgICBlbHNlIHsgXAorICAgICAgICBvdXRwdXRbIDBdID0gWCMjYmE7IFwKKyAgICAgICAgb3V0cHV0WyAxXSA9IFgjI2JlOyBcCisgICAgICAgIG91dHB1dFsgMl0gPSBYIyNiaTsgXAorICAgICAgICBvdXRwdXRbIDNdID0gWCMjYm87IFwKKyAgICAgICAgb3V0cHV0WyA0XSA9IFgjI2J1OyBcCisgICAgICAgIG91dHB1dFsgNV0gPSBYIyNnYTsgXAorICAgICAgICBvdXRwdXRbIDZdID0gWCMjZ2U7IFwKKyAgICAgICAgb3V0cHV0WyA3XSA9IFgjI2dpOyBcCisgICAgICAgIG91dHB1dFsgOF0gPSBYIyNnbzsgXAorICAgICAgICBvdXRwdXRbIDldID0gWCMjZ3U7IFwKKyAgICAgICAgb3V0cHV0WzEwXSA9IFgjI2thOyBcCisgICAgICAgIG91dHB1dFsxMV0gPSBYIyNrZTsgXAorICAgICAgICBvdXRwdXRbMTJdID0gWCMja2k7IFwKKyAgICAgICAgb3V0cHV0WzEzXSA9IFgjI2tvOyBcCisgICAgICAgIG91dHB1dFsxNF0gPSBYIyNrdTsgXAorICAgICAgICBvdXRwdXRbMTVdID0gWCMjbWE7IFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+PSAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxN10gPSBYIyNtaTsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTZdID0gWCMjbWU7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMThdID0gWCMjbW87IFwKKyAgICAgICAgICAgICAgICBvdXRwdXRbMTldID0gWCMjbXU7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID49IDIxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFsyMF0gPSBYIyNzYTsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIxXSA9IFgjI3NlOyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgb3V0cHV0WzE2XSA9IFgjI21lOyBcCisgICAgICAgICAgICBvdXRwdXRbMTddID0gWCMjbWk7IFwKKyAgICAgICAgICAgIG91dHB1dFsxOF0gPSBYIyNtbzsgXAorICAgICAgICAgICAgb3V0cHV0WzE5XSA9IFgjI211OyBcCisgICAgICAgICAgICBvdXRwdXRbMjBdID0gWCMjc2E7IFwKKyAgICAgICAgICAgIG91dHB1dFsyMV0gPSBYIyNzZTsgXAorICAgICAgICAgICAgb3V0cHV0WzIyXSA9IFgjI3NpOyBcCisgICAgICAgICAgICBvdXRwdXRbMjNdID0gWCMjc287IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPj0gMjUpIHsgXAorICAgICAgICAgICAgICAgIG91dHB1dFsyNF0gPSBYIyNzdTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgWCMjbmFtZSBePSBpbnB1dFtpbmRleF07IFwKKyAgICBvdXRwdXRbaW5kZXhdID0gWCMjbmFtZTsKKworI2RlZmluZSB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIGluZGV4LCBuYW1lKSBcCisgICAgWCMjbmFtZSBePSBpbnB1dFtpbmRleF07IFwKKyAgICBvdXRwdXRbaW5kZXhdID0gWCMjbmFtZTsKKworI2RlZmluZSB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2RlZmluZSB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgaW5kZXgsIG5hbWUpIFwKKyAgICBvdXRwdXRbaW5kZXhdID0gaW5wdXRbaW5kZXhdIF4gWCMjbmFtZTsgXAorICAgIFgjI25hbWUgXj0gb3V0cHV0W2luZGV4XTsKKworI2VuZGlmCisKKyNkZWZpbmUgd3JhcChYLCBpbnB1dCwgb3V0cHV0LCBsYW5lQ291bnQsIHRyYWlsaW5nQml0cykgXAorICAgIGlmIChsYW5lQ291bnQgPCAxNikgeyBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCA4KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA0KSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMSwgYmUpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYmkgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYm8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA1KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2J1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNCwgYnUpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dhIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDcpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDEyKSB7IFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTApIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNndSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDEwLCBrYSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja2UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMja28gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjbWEgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGVsc2UgeyBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIsIGJpKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMywgYm8pIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDUsIGdhKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDgsIGdvKSBcCisgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMSwga2UpIFwKKyAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxMiwga2kpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMywga28pIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNCwga3UpIFwKKyAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNSwgbWEpIFwKKyAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI0KSB7IFwKKyAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE4KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE3KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21lIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDE5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI21vIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxNiwgbWUpIFwKKyAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOSwgbXUpIFwKKyAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjEpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2EgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyMCwgc2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIxLCBzZSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjMpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjc2kgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMiwgc2kpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI3NvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDE3LCBtaSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxOCwgbW8pIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICB3cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgd3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyMSwgc2UpIFwKKyAgICAgICAgICAgIHdyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDIzLCBzbykgXAorICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDI1KSB7IFwKKyAgICAgICAgICAgICAgICBYIyNzdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB3cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDI0LCBzdSkgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSB1bndyYXAoWCwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCB0cmFpbGluZ0JpdHMpIFwKKyAgICBpZiAobGFuZUNvdW50IDwgMTYpIHsgXAorICAgICAgICBpZiAobGFuZUNvdW50IDwgOCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNCkgeyBcCisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDIpIHsgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNiYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMCwgYmEpIFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAzKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2JpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYm8gXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAyLCBiaSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA2KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDUpIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjYnUgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA1LCBnYSkgXAorICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNnZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNiwgZ2UpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dpIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAwLCBiYSkgXAorICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEsIGJlKSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAzLCBibykgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDQsIGJ1KSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA2LCBnZSkgXAorICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDcsIGdpKSBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMTIpIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCA5KSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2dvIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICAgICAgWCMjZ3UgXj0gdHJhaWxpbmdCaXRzOyBcCisgICAgICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCA4LCBnbykgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA8IDExKSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2thIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIFgjI2tlIF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgOSwgZ3UpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTAsIGthKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNraSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDEyLCBraSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTMsIGtvKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNrdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTQsIGt1KSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgfSBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDAsIGJhKSBcCisgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxLCBiZSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMiwgYmkpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDMsIGJvKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA0LCBidSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgNSwgZ2EpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDYsIGdlKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCA3LCBnaSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgOCwgZ28pIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDksIGd1KSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMCwga2EpIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDExLCBrZSkgXAorICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTIsIGtpKSBcCisgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAxMywga28pIFwKKyAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE0LCBrdSkgXAorICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTUsIG1hKSBcCisgICAgICAgIGlmIChsYW5lQ291bnQgPCAyNCkgeyBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjApIHsgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOCkgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxNykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAxOSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNtdSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE2LCBtZSkgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZUludmVydChYLCBpbnB1dCwgb3V0cHV0LCAxNywgbWkpIFwKKyAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICAgICAgdW53cmFwT25lKFgsIGlucHV0LCBvdXRwdXQsIDE5LCBtdSkgXAorICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMikgeyBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMSkgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzYSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzZSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgZWxzZSB7IFwKKyAgICAgICAgICAgICAgICAgICAgdW53cmFwT25lSW52ZXJ0KFgsIGlucHV0LCBvdXRwdXQsIDIwLCBzYSkgXAorICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPCAyMykgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzaSBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICAgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICAgICAgICAgICAgICBYIyNzbyBePSB0cmFpbGluZ0JpdHM7IFwKKyAgICAgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICAgICAgfSBcCisgICAgICAgICAgICB9IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTYsIG1lKSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMTcsIG1pKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTgsIG1vKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMTksIG11KSBcCisgICAgICAgICAgICB1bndyYXBPbmVJbnZlcnQoWCwgaW5wdXQsIG91dHB1dCwgMjAsIHNhKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjEsIHNlKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjIsIHNpKSBcCisgICAgICAgICAgICB1bndyYXBPbmUoWCwgaW5wdXQsIG91dHB1dCwgMjMsIHNvKSBcCisgICAgICAgICAgICBpZiAobGFuZUNvdW50IDwgMjUpIHsgXAorICAgICAgICAgICAgICAgIFgjI3N1IF49IHRyYWlsaW5nQml0czsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgICAgIHVud3JhcE9uZShYLCBpbnB1dCwgb3V0cHV0LCAyNCwgc3UpIFwKKyAgICAgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNmNzY1ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAtb3B0MzIuaApAQCAtMCwwICsxLDM3IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtQXzE2MDBfU25QX2hfCisjZGVmaW5lIF9LZWNjYWtQXzE2MDBfU25QX2hfCisKKy8qKiBGb3IgdGhlIGRvY3VtZW50YXRpb24sIHNlZSBTblAtZG9jdW1lbnRhdGlvbi5oLgorICovCisKKyNkZWZpbmUgS2VjY2FrUDE2MDBfaW1wbGVtZW50YXRpb24gICAgICAiaW4tcGxhY2UgMzItYml0IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfc3RhdGVTaXplSW5CeXRlcyAgICAyMDAKKyNkZWZpbmUgS2VjY2FrUDE2MDBfc3RhdGVBbGlnbm1lbnQgICAgICA4CisKKyNkZWZpbmUgS2VjY2FrUDE2MDBfU3RhdGljSW5pdGlhbGl6ZSgpCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyIGRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQpOwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCk7Cit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHModm9pZCAqc3RhdGUpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmggYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtU25QLW9wdDY0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODg5YTMxYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAtb3B0NjQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9LZWNjYWtQXzE2MDBfU25QX2hfCisjZGVmaW5lIF9LZWNjYWtQXzE2MDBfU25QX2hfCisKKy8qKiBGb3IgdGhlIGRvY3VtZW50YXRpb24sIHNlZSBTblAtZG9jdW1lbnRhdGlvbi5oLgorICovCisKKy8qICNpbmNsdWRlICJicmdfZW5kaWFuLmgiICovCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIgorCisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uICAgICAgImdlbmVyaWMgNjQtYml0IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiAoIiBLZWNjYWtQMTYwMF9pbXBsZW1lbnRhdGlvbl9jb25maWcgIikiCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlU2l6ZUluQnl0ZXMgICAgMjAwCisjZGVmaW5lIEtlY2Nha1AxNjAwX3N0YXRlQWxpZ25tZW50ICAgICAgOAorI2RlZmluZSBLZWNjYWtGMTYwMF9GYXN0TG9vcF9zdXBwb3J0ZWQKKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorCisjZGVmaW5lIEtlY2Nha1AxNjAwX1N0YXRpY0luaXRpYWxpemUoKQordm9pZCBLZWNjYWtQMTYwMF9Jbml0aWFsaXplKHZvaWQgKnN0YXRlKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRCeXRlKHN0YXRlLCBieXRlLCBvZmZzZXQpIFwKKyAgICAoKHVuc2lnbmVkIGNoYXIqKShzdGF0ZSkpWyhvZmZzZXQpXSBePSAoYnl0ZSkKKyNlbHNlCit2b2lkIEtlY2Nha1AxNjAwX0FkZEJ5dGUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGNoYXIgZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCk7CisjZW5kaWYKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpOwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXModm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBieXRlQ291bnQpOwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKTsKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcyh2b2lkICpzdGF0ZSk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7Cit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCk7CitzaXplX3QgS2VjY2FrRjE2MDBfRmFzdExvb3BfQWJzb3JiKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1TblAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjIzZjA5Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLVNuUC5oCkBAIC0wLDAgKzEsNyBAQAorI2lmIEtlY2Nha09wdCA9PSA2NAorICAjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLVNuUC1vcHQ2NC5oIgorI2VsaWYgS2VjY2FrT3B0ID09IDMyCisgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLW9wdDMyLmgiCisjZWxzZQorICAjZXJyb3IgIk5vIEtlY2Nha09wdCIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtaW5wbGFjZTMyQkkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmY5ZmZlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMKQEAgLTAsMCArMSwxMTYyIEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaW5jbHVkZSAgICA8c3RyaW5nLmg+CisvKiAjaW5jbHVkZSAiYnJnX2VuZGlhbi5oIiAqLworI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAuaCIKKyNpbmNsdWRlICJTblAtUmVsYW5lZC5oIgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBVSU5UMzI7CisvKiBXQVJOSU5HOiBvbiA4LWJpdCBhbmQgMTYtYml0IHBsYXRmb3JtcywgdGhpcyBzaG91bGQgYmUgcmVwbGFjZWQgYnk6ICovCisKKy8qdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgIFVJTlQzMjsgKi8KKworCisjZGVmaW5lIFJPTDMyKGEsIG9mZnNldCkgKCgoKFVJTlQzMilhKSA8PCAob2Zmc2V0KSkgXiAoKChVSU5UMzIpYSkgPj4gKDMyLShvZmZzZXQpKSkpCisKKy8qIENyZWRpdCB0byBIZW5yeSBTLiBXYXJyZW4sIEhhY2tlcidzIERlbGlnaHQsIEFkZGlzb24tV2VzbGV5LCAyMDAyICovCisKKyNkZWZpbmUgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHRlbXAwID0gKGxvdyk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcDEgPSAoaGlnaCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgOCk7CisKKyNkZWZpbmUgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBldmVuLCBvZGQsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBwcmVwYXJlVG9CaXRJbnRlcmxlYXZpbmcobG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgZXZlbiBePSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkIF49ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsKKworI2RlZmluZSB0b0JpdEludGVybGVhdmluZ0FuZEFORChsb3csIGhpZ2gsIGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVUb0JpdEludGVybGVhdmluZyhsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSkgXAorICAgICAgICBldmVuICY9ICh0ZW1wMCAmIDB4MDAwMEZGRkYpIHwgKHRlbXAxIDw8IDE2KTsgXAorICAgICAgICBvZGQgJj0gKHRlbXAwID4+IDE2KSB8ICh0ZW1wMSAmIDB4RkZGRjAwMDApOworCisjZGVmaW5lIHRvQml0SW50ZXJsZWF2aW5nQW5kU2V0KGxvdywgaGlnaCwgZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZVRvQml0SW50ZXJsZWF2aW5nKGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGV2ZW4gPSAodGVtcDAgJiAweDAwMDBGRkZGKSB8ICh0ZW1wMSA8PCAxNik7IFwKKyAgICAgICAgb2RkID0gKHRlbXAwID4+IDE2KSB8ICh0ZW1wMSAmIDB4RkZGRjAwMDApOworCisvKiBDcmVkaXQgdG8gSGVucnkgUy4gV2FycmVuLCBIYWNrZXIncyBEZWxpZ2h0LCBBZGRpc29uLVdlc2xleSwgMjAwMiAqLworCisjZGVmaW5lIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHRlbXAwID0gKGV2ZW4pOyBcCisgICAgICAgIHRlbXAxID0gKG9kZCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCAmIDB4MDAwMEZGRkYpIHwgKHRlbXAxIDw8IDE2KTsgXAorICAgICAgICB0ZW1wMSA9ICh0ZW1wMCA+PiAxNikgfCAodGVtcDEgJiAweEZGRkYwMDAwKTsgXAorICAgICAgICB0ZW1wMCA9IHRlbXA7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMCBeICh0ZW1wMCA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDAgPSB0ZW1wMCBeIHRlbXAgXiAodGVtcCA8PCAgMSk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgOCkpICYgMHgwMDAwRkYwMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgOCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgNCkpICYgMHgwMEYwMDBGMFVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgNCk7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMikpICYgMHgwQzBDMEMwQ1VMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMik7IFwKKyAgICAgICAgdGVtcCA9ICh0ZW1wMSBeICh0ZW1wMSA+PiAgMSkpICYgMHgyMjIyMjIyMlVMOyAgdGVtcDEgPSB0ZW1wMSBeIHRlbXAgXiAodGVtcCA8PCAgMSk7CisKKyNkZWZpbmUgZnJvbUJpdEludGVybGVhdmluZyhldmVuLCBvZGQsIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIHByZXBhcmVGcm9tQml0SW50ZXJsZWF2aW5nKGV2ZW4sIG9kZCwgdGVtcCwgdGVtcDAsIHRlbXAxKSBcCisgICAgICAgIGxvdyA9IHRlbXAwOyBcCisgICAgICAgIGhpZ2ggPSB0ZW1wMTsKKworI2RlZmluZSBmcm9tQml0SW50ZXJsZWF2aW5nQW5kWE9SKGV2ZW4sIG9kZCwgbG93SW4sIGhpZ2hJbiwgbG93T3V0LCBoaWdoT3V0LCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgcHJlcGFyZUZyb21CaXRJbnRlcmxlYXZpbmcoZXZlbiwgb2RkLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpIFwKKyAgICAgICAgbG93T3V0ID0gbG93SW4gXiB0ZW1wMDsgXAorICAgICAgICBoaWdoT3V0ID0gaGlnaEluIF4gdGVtcDE7CisKK3ZvaWQgS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8odm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgbWVtc2V0KGxhbmVBc0J5dGVzLCAweEZGLCBvZmZzZXQpOworICAgIG1lbXNldChsYW5lQXNCeXRlcytvZmZzZXQsIDB4MDAsIGxlbmd0aCk7CisgICAgbWVtc2V0KGxhbmVBc0J5dGVzK29mZnNldCtsZW5ndGgsIDB4RkYsIDgtb2Zmc2V0LWxlbmd0aCk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBsb3cgPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcyswKSk7CisgICAgaGlnaCA9ICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzQpKTsKKyNlbHNlCisgICAgbG93ID0gbGFuZUFzQnl0ZXNbMF0KKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzJdKSA8PCAxNikKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbM10pIDw8IDI0KTsKKyAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNV0pIDw8IDgpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzZdKSA8PCAxNikKKyAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyNlbmRpZgorICAgIHRvQml0SW50ZXJsZWF2aW5nQW5kQU5EKGxvdywgaGlnaCwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMiswXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0luaXRpYWxpemUodm9pZCAqc3RhdGUpCit7CisgICAgbWVtc2V0KHN0YXRlLCAwLCAyMDApOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24gPSBvZmZzZXQvODsKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0SW5MYW5lID0gb2Zmc2V0JTg7CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgaWYgKG9mZnNldEluTGFuZSA8IDQpIHsKKyAgICAgICAgbG93ID0gKFVJTlQzMilieXRlIDw8IChvZmZzZXRJbkxhbmUqOCk7CisgICAgICAgIGhpZ2ggPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbG93ID0gMDsKKyAgICAgICAgaGlnaCA9IChVSU5UMzIpYnl0ZSA8PCAoKG9mZnNldEluTGFuZS00KSo4KTsKKyAgICB9CisgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzBdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgVUlOVDMyIGxvdywgaGlnaDsKKyAgICBVSU5UMzIgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworCisgICAgbWVtc2V0KGxhbmVBc0J5dGVzLCAwLCA4KTsKKyAgICBtZW1jcHkobGFuZUFzQnl0ZXMrb2Zmc2V0LCBkYXRhLCBsZW5ndGgpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgbG93ID0gKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpOworICAgIGhpZ2ggPSAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisjZWxzZQorICAgIGxvdyA9IGxhbmVBc0J5dGVzWzBdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzFdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzNdKSA8PCAyNCk7CisgICAgaGlnaCA9IGxhbmVBc0J5dGVzWzRdCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1s2XSkgPDwgMTYpCisgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzddKSA8PCAyNCk7CisjZW5kaWYKKyAgICB0b0JpdEludGVybGVhdmluZ0FuZFhPUihsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIGNvbnN0IFVJTlQzMiAqIHBJID0gKGNvbnN0IFVJTlQzMiAqKWRhdGE7CisgICAgVUlOVDMyICogcFMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIG1lbWNweSgmbG93LCBwSSsrLCA0KTsKKyAgICAgICAgbWVtY3B5KCZoaWdoLCBwSSsrLCA0KTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IobG93LCBoaWdoLCAqKHBTKyspLCAqKHBTKyspLCB0LCB4MCwgeDEpOworI2Vsc2UKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRYT1IoKihwSSsrKSwgKihwSSsrKSwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzOworICAgICAgICBtZW1jcHkobGFuZUFzQnl0ZXMsIGRhdGErbGFuZVBvc2l0aW9uKjgsIDgpOworICAgICAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgICAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICB0b0JpdEludGVybGVhdmluZ0FuZFhPUihsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9BZGRCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfQWRkQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9BZGRMYW5lcywgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8oc3RhdGUsIGxhbmVQb3NpdGlvbiwgb2Zmc2V0LCBsZW5ndGgpOworICAgIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBsYW5lUG9zaXRpb24sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUxhbmVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgY29uc3QgVUlOVDMyICogcEkgPSAoY29uc3QgVUlOVDMyICopZGF0YTsKKyAgICBVSU5UMzIgKiBwUyA9IChVSU5UMzIgKilzdGF0ZTsKKyAgICBVSU5UMzIgdCwgeDAsIHgxOworICAgIGludCBpOworICAgIGZvciAoaSA9IGxhbmVDb3VudC0xOyBpID49IDA7IC0taSkgeworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAgICAgVUlOVDMyIGxvdzsKKyAgICAgICAgVUlOVDMyIGhpZ2g7CisgICAgICAgIG1lbWNweSgmbG93LCBwSSsrLCA0KTsKKyAgICAgICAgbWVtY3B5KCZoaWdoLCBwSSsrLCA0KTsKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQobG93LCBoaWdoLCAqKHBTKyspLCAqKHBTKyspLCB0LCB4MCwgeDEpOworI2Vsc2UKKyAgICAgICAgdG9CaXRJbnRlcmxlYXZpbmdBbmRTZXQoKihwSSsrKSwgKihwSSsrKSwgKihwUysrKSwgKihwUysrKSwgdCwgeDAsIHgxKQorI2VuZGlmCisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uOworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspIHsKKyAgICAgICAgVUlOVDggbGFuZUFzQnl0ZXNbOF07CisgICAgICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICAgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzOworICAgICAgICBtZW1jcHkobGFuZUFzQnl0ZXMsIGRhdGErbGFuZVBvc2l0aW9uKjgsIDgpOworICAgICAgICBsb3cgPSBsYW5lQXNCeXRlc1swXQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbMV0pIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1syXSkgPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDMyKShsYW5lQXNCeXRlc1szXSkgPDwgMjQpOworICAgICAgICBoaWdoID0gbGFuZUFzQnl0ZXNbNF0KKyAgICAgICAgICAgIHwgKChVSU5UMzIpKGxhbmVBc0J5dGVzWzVdKSA8PCA4KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbNl0pIDw8IDE2KQorICAgICAgICAgICAgfCAoKFVJTlQzMikobGFuZUFzQnl0ZXNbN10pIDw8IDI0KTsKKyAgICAgICAgc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICB0b0JpdEludGVybGVhdmluZ0FuZFNldChsb3csIGhpZ2gsIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMF0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcywgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCkKK3sKKyAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8Ynl0ZUNvdW50Lzg7IGkrKykgeworICAgICAgICBzdGF0ZUFzSGFsZkxhbmVzW2kqMiswXSA9IDA7CisgICAgICAgIHN0YXRlQXNIYWxmTGFuZXNbaSoyKzFdID0gMDsKKyAgICB9CisgICAgaWYgKGJ5dGVDb3VudCU4ICE9IDApCisgICAgICAgIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvKHN0YXRlLCBieXRlQ291bnQvOCwgMCwgYnl0ZUNvdW50JTgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgIFVJTlQzMiBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMTsKKyAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKworICAgIGZyb21CaXRJbnRlcmxlYXZpbmcoc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMl0sIHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjIrMV0sIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxKTsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzApKSA9IGxvdzsKKyAgICAqKChVSU5UMzIqKShsYW5lQXNCeXRlcys0KSkgPSBoaWdoOworI2Vsc2UKKyAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1syXSA9IChsb3cgPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzVdID0gKGhpZ2ggPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisjZW5kaWYKKyAgICBtZW1jcHkoZGF0YSwgbGFuZUFzQnl0ZXMrb2Zmc2V0LCBsZW5ndGgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgVUlOVDMyICogcEkgPSAoVUlOVDMyICopZGF0YTsKKyAgICBjb25zdCBVSU5UMzIgKiBwUyA9ICggY29uc3QgVUlOVDMyICopc3RhdGU7CisgICAgVUlOVDMyIHQsIHgwLCB4MTsKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSBsYW5lQ291bnQtMTsgaSA+PSAwOyAtLWkpIHsKKyNpZmRlZiBOT19NSVNBTElHTkVEX0FDQ0VTU0VTCisgICAgICAgIFVJTlQzMiBsb3c7CisgICAgICAgIFVJTlQzMiBoaWdoOworICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nKCoocFMrKyksICoocFMrKyksIGxvdywgaGlnaCwgdCwgeDAsIHgxKTsKKyAgICAgICAgbWVtY3B5KHBJKyssICZsb3csIDQpOworICAgICAgICBtZW1jcHkocEkrKywgJmhpZ2gsIDQpOworI2Vsc2UKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCAqKHBJKyspLCAqKHBJKyspLCB0LCB4MCwgeDEpCisjZW5kaWYKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb247CisgICAgZm9yKGxhbmVQb3NpdGlvbj0wOyBsYW5lUG9zaXRpb248bGFuZUNvdW50OyBsYW5lUG9zaXRpb24rKykgeworICAgICAgICBVSU5UMzIgKnN0YXRlQXNIYWxmTGFuZXMgPSAoVUlOVDMyKilzdGF0ZTsKKyAgICAgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgICAgICBVSU5UOCBsYW5lQXNCeXRlc1s4XTsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworICAgICAgICBsYW5lQXNCeXRlc1swXSA9IGxvdyAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzFdID0gKGxvdyA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1szXSA9IChsb3cgPj4gMjQpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNF0gPSBoaWdoICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzZdID0gKGhpZ2ggPj4gMTYpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbN10gPSAoaGlnaCA+PiAyNCkgJiAweEZGOworICAgICAgICBtZW1jcHkoZGF0YStsYW5lUG9zaXRpb24qOCwgbGFuZUFzQnl0ZXMsIDgpOworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9FeHRyYWN0TGFuZXMsIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoY29uc3Qgdm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgVUlOVDMyICpzdGF0ZUFzSGFsZkxhbmVzID0gKFVJTlQzMiopc3RhdGU7CisgICAgVUlOVDMyIGxvdywgaGlnaCwgdGVtcCwgdGVtcDAsIHRlbXAxOworICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZnJvbUJpdEludGVybGVhdmluZyhzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyXSwgc3RhdGVBc0hhbGZMYW5lc1tsYW5lUG9zaXRpb24qMisxXSwgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDEpOworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgKigoVUlOVDMyKikobGFuZUFzQnl0ZXMrMCkpID0gbG93OworICAgICooKFVJTlQzMiopKGxhbmVBc0J5dGVzKzQpKSA9IGhpZ2g7CisjZWxzZQorICAgIGxhbmVBc0J5dGVzWzBdID0gbG93ICYgMHhGRjsKKyAgICBsYW5lQXNCeXRlc1sxXSA9IChsb3cgPj4gOCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzJdID0gKGxvdyA+PiAxNikgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzNdID0gKGxvdyA+PiAyNCkgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzRdID0gaGlnaCAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNV0gPSAoaGlnaCA+PiA4KSAmIDB4RkY7CisgICAgbGFuZUFzQnl0ZXNbNl0gPSAoaGlnaCA+PiAxNikgJiAweEZGOworICAgIGxhbmVBc0J5dGVzWzddID0gKGhpZ2ggPj4gMjQpICYgMHhGRjsKKyNlbmRpZgorICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgIG91dHB1dFtpXSA9IGlucHV0W2ldIF4gbGFuZUFzQnl0ZXNbb2Zmc2V0K2ldOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgY29uc3QgVUlOVDMyICogcEkgPSAoY29uc3QgVUlOVDMyICopaW5wdXQ7CisgICAgVUlOVDMyICogcE8gPSAoVUlOVDMyICopb3V0cHV0OworICAgIGNvbnN0IFVJTlQzMiAqIHBTID0gKGNvbnN0IFVJTlQzMiAqKXN0YXRlOworICAgIFVJTlQzMiB0LCB4MCwgeDE7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gbGFuZUNvdW50LTE7IGkgPj0gMDsgLS1pKSB7CisjaWZkZWYgTk9fTUlTQUxJR05FRF9BQ0NFU1NFUworICAgICAgICBVSU5UMzIgbG93OworICAgICAgICBVSU5UMzIgaGlnaDsKKyAgICAgICAgZnJvbUJpdEludGVybGVhdmluZygqKHBTKyspLCAqKHBTKyspLCBsb3csIGhpZ2gsIHQsIHgwLCB4MSk7CisgICAgICAgICoocE8rKykgPSAqKHBJKyspIF4gbG93OworICAgICAgICAqKHBPKyspID0gKihwSSsrKSBeIGhpZ2g7CisjZWxzZQorICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nQW5kWE9SKCoocFMrKyksICoocFMrKyksICoocEkrKyksICoocEkrKyksICoocE8rKyksICoocE8rKyksIHQsIHgwLCB4MSkKKyNlbmRpZgorICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKyAgICBmb3IobGFuZVBvc2l0aW9uPTA7IGxhbmVQb3NpdGlvbjxsYW5lQ291bnQ7IGxhbmVQb3NpdGlvbisrKSB7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICBVSU5UMzIgbG93LCBoaWdoLCB0ZW1wLCB0ZW1wMCwgdGVtcDE7CisgICAgICAgIFVJTlQ4IGxhbmVBc0J5dGVzWzhdOworICAgICAgICBmcm9tQml0SW50ZXJsZWF2aW5nKHN0YXRlQXNIYWxmTGFuZXNbbGFuZVBvc2l0aW9uKjJdLCBzdGF0ZUFzSGFsZkxhbmVzW2xhbmVQb3NpdGlvbioyKzFdLCBsb3csIGhpZ2gsIHRlbXAsIHRlbXAwLCB0ZW1wMSk7CisgICAgICAgIGxhbmVBc0J5dGVzWzBdID0gbG93ICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMV0gPSAobG93ID4+IDgpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbMl0gPSAobG93ID4+IDE2KSAmIDB4RkY7CisgICAgICAgIGxhbmVBc0J5dGVzWzNdID0gKGxvdyA+PiAyNCkgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s0XSA9IGhpZ2ggJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s1XSA9IChoaWdoID4+IDgpICYgMHhGRjsKKyAgICAgICAgbGFuZUFzQnl0ZXNbNl0gPSAoaGlnaCA+PiAxNikgJiAweEZGOworICAgICAgICBsYW5lQXNCeXRlc1s3XSA9IChoaWdoID4+IDI0KSAmIDB4RkY7CisgICAgICAgICgoVUlOVDMyKikob3V0cHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gPSAoKFVJTlQzMiopKGlucHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gXiAoKihjb25zdCBVSU5UMzIqKShsYW5lQXNCeXRlcyswKSk7CisgICAgICAgICgoVUlOVDMyKikob3V0cHV0K2xhbmVQb3NpdGlvbio4KSlbMV0gPSAoKFVJTlQzMiopKGlucHV0K2xhbmVQb3NpdGlvbio4KSlbMF0gXiAoKihjb25zdCBVSU5UMzIqKShsYW5lQXNCeXRlcys0KSk7CisgICAgfQorI2VuZGlmCit9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzKGNvbnN0IHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGUsIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZSwgOCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworc3RhdGljIGNvbnN0IFVJTlQzMiBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDJbMioyNCsxXSA9Cit7CisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDAwMDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDg5VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDhiVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDgwVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDAwMDhiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDAwVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDA4MDg4VUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDgyVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDBiVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDBhVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDgyVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDA4MDAzVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDhiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDBiVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDhhVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDAwMDgxVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDgxVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDA4VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDAwMDAwMDgzVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDAzVUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDgwMDA4MDg4VUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDAwMDg4VUwsCisgICAgMHgwMDAwMDAwMVVMLCAgICAweDAwMDA4MDAwVUwsCisgICAgMHgwMDAwMDAwMFVMLCAgICAweDgwMDA4MDgyVUwsCisgICAgMHgwMDAwMDBGRlVMCit9OworCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQwKCkgXAorICAgICAgICBDeCA9IEFidTBeQWd1MF5Ba3UwXkFtdTBeQXN1MDsgXAorICAgICAgICBEdTEgPSBBYmUxXkFnZTFeQWtlMV5BbWUxXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFidTFeQWd1MV5Ba3UxXkFtdTFeQXN1MTsgXAorICAgICAgICBEdTAgPSBBYmUwXkFnZTBeQWtlMF5BbWUwXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQWJpMF5BZ2kwXkFraTBeQW1pMF5Bc2kwOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFiaTFeQWdpMV5Ba2kxXkFtaTFeQXNpMTsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQWdhMF5Ba2EwXkFtYTBeQXNhMDsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFnYTFeQWthMV5BbWExXkFzYTE7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBYm8xXkFnbzFeQWtvMV5BbW8xXkFzbzE7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFibzBeQWdvMF5Ba28wXkFtbzBeQXNvMDsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKKyNkZWZpbmUgS2VjY2FrQXRvRF9yb3VuZDEoKSBcCisgICAgICAgIEN4ID0gQXN1MF5BZ3UwXkFtdTBeQWJ1MV5Ba3UxOyBcCisgICAgICAgIER1MSA9IEFnZTFeQW1lMF5BYmUwXkFrZTFeQXNlMTsgXAorICAgICAgICBEYTAgPSBDeF5ST0wzMihEdTEsIDEpOyBcCisgICAgICAgIEN6ID0gQXN1MV5BZ3UxXkFtdTFeQWJ1MF5Ba3UwOyBcCisgICAgICAgIER1MCA9IEFnZTBeQW1lMV5BYmUxXkFrZTBeQXNlMDsgXAorICAgICAgICBEYTEgPSBDel5EdTA7IFwKK1wKKyAgICAgICAgQ3cgPSBBa2kxXkFzaTFeQWdpMF5BbWkxXkFiaTA7IFwKKyAgICAgICAgRG8wID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIEN5ID0gQWtpMF5Bc2kwXkFnaTFeQW1pMF5BYmkxOyBcCisgICAgICAgIERvMSA9IEN5XkN4OyBcCitcCisgICAgICAgIEN4ID0gQWJhMF5Ba2ExXkFzYTBeQWdhMF5BbWExOyBcCisgICAgICAgIERlMCA9IEN4XlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDeiA9IEFiYTFeQWthMF5Bc2ExXkFnYTFeQW1hMDsgXAorICAgICAgICBEZTEgPSBDel5DdzsgXAorXAorICAgICAgICBDeSA9IEFtbzBeQWJvMV5Ba28wXkFzbzFeQWdvMDsgXAorICAgICAgICBEaTAgPSBEdTBeUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN3ID0gQW1vMV5BYm8wXkFrbzFeQXNvMF5BZ28xOyBcCisgICAgICAgIERpMSA9IER1MV5DdzsgXAorXAorICAgICAgICBEdTAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgRHUxID0gQ3leQ3g7IFwKKworI2RlZmluZSBLZWNjYWtBdG9EX3JvdW5kMigpIFwKKyAgICAgICAgQ3ggPSBBa3UxXkFndTBeQWJ1MV5Bc3UxXkFtdTE7IFwKKyAgICAgICAgRHUxID0gQW1lMF5Ba2UwXkFnZTBeQWJlMF5Bc2UxOyBcCisgICAgICAgIERhMCA9IEN4XlJPTDMyKER1MSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBa3UwXkFndTFeQWJ1MF5Bc3UwXkFtdTA7IFwKKyAgICAgICAgRHUwID0gQW1lMV5Ba2UxXkFnZTFeQWJlMV5Bc2UwOyBcCisgICAgICAgIERhMSA9IEN6XkR1MDsgXAorXAorICAgICAgICBDdyA9IEFnaTFeQWJpMV5Bc2kxXkFtaTBeQWtpMTsgXAorICAgICAgICBEbzAgPSBDd15ST0wzMihDeiwgMSk7IFwKKyAgICAgICAgQ3kgPSBBZ2kwXkFiaTBeQXNpMF5BbWkxXkFraTA7IFwKKyAgICAgICAgRG8xID0gQ3leQ3g7IFwKK1wKKyAgICAgICAgQ3ggPSBBYmEwXkFzYTFeQW1hMV5Ba2ExXkFnYTE7IFwKKyAgICAgICAgRGUwID0gQ3heUk9MMzIoQ3ksIDEpOyBcCisgICAgICAgIEN6ID0gQWJhMV5Bc2EwXkFtYTBeQWthMF5BZ2EwOyBcCisgICAgICAgIERlMSA9IEN6XkN3OyBcCitcCisgICAgICAgIEN5ID0gQXNvMF5BbW8wXkFrbzFeQWdvMF5BYm8wOyBcCisgICAgICAgIERpMCA9IER1MF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3cgPSBBc28xXkFtbzFeQWtvMF5BZ28xXkFibzE7IFwKKyAgICAgICAgRGkxID0gRHUxXkN3OyBcCitcCisgICAgICAgIER1MCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBEdTEgPSBDeV5DeDsgXAorCisjZGVmaW5lIEtlY2Nha0F0b0Rfcm91bmQzKCkgXAorICAgICAgICBDeCA9IEFtdTFeQWd1MF5Bc3UxXkFrdTBeQWJ1MDsgXAorICAgICAgICBEdTEgPSBBa2UwXkFiZTFeQW1lMV5BZ2UwXkFzZTE7IFwKKyAgICAgICAgRGEwID0gQ3heUk9MMzIoRHUxLCAxKTsgXAorICAgICAgICBDeiA9IEFtdTBeQWd1MV5Bc3UwXkFrdTFeQWJ1MTsgXAorICAgICAgICBEdTAgPSBBa2UxXkFiZTBeQW1lMF5BZ2UxXkFzZTA7IFwKKyAgICAgICAgRGExID0gQ3peRHUwOyBcCitcCisgICAgICAgIEN3ID0gQXNpMF5Ba2kwXkFiaTFeQW1pMV5BZ2kxOyBcCisgICAgICAgIERvMCA9IEN3XlJPTDMyKEN6LCAxKTsgXAorICAgICAgICBDeSA9IEFzaTFeQWtpMV5BYmkwXkFtaTBeQWdpMDsgXAorICAgICAgICBEbzEgPSBDeV5DeDsgXAorXAorICAgICAgICBDeCA9IEFiYTBeQW1hMF5BZ2ExXkFzYTFeQWthMDsgXAorICAgICAgICBEZTAgPSBDeF5ST0wzMihDeSwgMSk7IFwKKyAgICAgICAgQ3ogPSBBYmExXkFtYTFeQWdhMF5Bc2EwXkFrYTE7IFwKKyAgICAgICAgRGUxID0gQ3peQ3c7IFwKK1wKKyAgICAgICAgQ3kgPSBBZ28xXkFzbzBeQWtvMF5BYm8wXkFtbzE7IFwKKyAgICAgICAgRGkwID0gRHUwXlJPTDMyKEN5LCAxKTsgXAorICAgICAgICBDdyA9IEFnbzBeQXNvMV5Ba28xXkFibzFeQW1vMDsgXAorICAgICAgICBEaTEgPSBEdTFeQ3c7IFwKK1wKKyAgICAgICAgRHUwID0gQ3deUk9MMzIoQ3osIDEpOyBcCisgICAgICAgIER1MSA9IEN5XkN4OyBcCisKK3ZvaWQgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgblJvdW5kcykKK3sKKyAgICB7CisgICAgICAgIFVJTlQzMiBEYTAsIERlMCwgRGkwLCBEbzAsIER1MDsKKyAgICAgICAgVUlOVDMyIERhMSwgRGUxLCBEaTEsIERvMSwgRHUxOworICAgICAgICBVSU5UMzIgQ2EwLCBDZTAsIENpMCwgQ28wLCBDdTA7CisgICAgICAgIFVJTlQzMiBDeCwgQ3ksIEN6LCBDdzsKKyAgICAgICAgI2RlZmluZSBCYSBDYTAKKyAgICAgICAgI2RlZmluZSBCZSBDZTAKKyAgICAgICAgI2RlZmluZSBCaSBDaTAKKyAgICAgICAgI2RlZmluZSBCbyBDbzAKKyAgICAgICAgI2RlZmluZSBCdSBDdTAKKyAgICAgICAgY29uc3QgVUlOVDMyICpwUm91bmRDb25zdGFudHMgPSBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzX2ludDIrKDI0LW5Sb3VuZHMpKjI7CisgICAgICAgIFVJTlQzMiAqc3RhdGVBc0hhbGZMYW5lcyA9IChVSU5UMzIqKXN0YXRlOworICAgICAgICAjZGVmaW5lIEFiYTAgc3RhdGVBc0hhbGZMYW5lc1sgMF0KKyAgICAgICAgI2RlZmluZSBBYmExIHN0YXRlQXNIYWxmTGFuZXNbIDFdCisgICAgICAgICNkZWZpbmUgQWJlMCBzdGF0ZUFzSGFsZkxhbmVzWyAyXQorICAgICAgICAjZGVmaW5lIEFiZTEgc3RhdGVBc0hhbGZMYW5lc1sgM10KKyAgICAgICAgI2RlZmluZSBBYmkwIHN0YXRlQXNIYWxmTGFuZXNbIDRdCisgICAgICAgICNkZWZpbmUgQWJpMSBzdGF0ZUFzSGFsZkxhbmVzWyA1XQorICAgICAgICAjZGVmaW5lIEFibzAgc3RhdGVBc0hhbGZMYW5lc1sgNl0KKyAgICAgICAgI2RlZmluZSBBYm8xIHN0YXRlQXNIYWxmTGFuZXNbIDddCisgICAgICAgICNkZWZpbmUgQWJ1MCBzdGF0ZUFzSGFsZkxhbmVzWyA4XQorICAgICAgICAjZGVmaW5lIEFidTEgc3RhdGVBc0hhbGZMYW5lc1sgOV0KKyAgICAgICAgI2RlZmluZSBBZ2EwIHN0YXRlQXNIYWxmTGFuZXNbMTBdCisgICAgICAgICNkZWZpbmUgQWdhMSBzdGF0ZUFzSGFsZkxhbmVzWzExXQorICAgICAgICAjZGVmaW5lIEFnZTAgc3RhdGVBc0hhbGZMYW5lc1sxMl0KKyAgICAgICAgI2RlZmluZSBBZ2UxIHN0YXRlQXNIYWxmTGFuZXNbMTNdCisgICAgICAgICNkZWZpbmUgQWdpMCBzdGF0ZUFzSGFsZkxhbmVzWzE0XQorICAgICAgICAjZGVmaW5lIEFnaTEgc3RhdGVBc0hhbGZMYW5lc1sxNV0KKyAgICAgICAgI2RlZmluZSBBZ28wIHN0YXRlQXNIYWxmTGFuZXNbMTZdCisgICAgICAgICNkZWZpbmUgQWdvMSBzdGF0ZUFzSGFsZkxhbmVzWzE3XQorICAgICAgICAjZGVmaW5lIEFndTAgc3RhdGVBc0hhbGZMYW5lc1sxOF0KKyAgICAgICAgI2RlZmluZSBBZ3UxIHN0YXRlQXNIYWxmTGFuZXNbMTldCisgICAgICAgICNkZWZpbmUgQWthMCBzdGF0ZUFzSGFsZkxhbmVzWzIwXQorICAgICAgICAjZGVmaW5lIEFrYTEgc3RhdGVBc0hhbGZMYW5lc1syMV0KKyAgICAgICAgI2RlZmluZSBBa2UwIHN0YXRlQXNIYWxmTGFuZXNbMjJdCisgICAgICAgICNkZWZpbmUgQWtlMSBzdGF0ZUFzSGFsZkxhbmVzWzIzXQorICAgICAgICAjZGVmaW5lIEFraTAgc3RhdGVBc0hhbGZMYW5lc1syNF0KKyAgICAgICAgI2RlZmluZSBBa2kxIHN0YXRlQXNIYWxmTGFuZXNbMjVdCisgICAgICAgICNkZWZpbmUgQWtvMCBzdGF0ZUFzSGFsZkxhbmVzWzI2XQorICAgICAgICAjZGVmaW5lIEFrbzEgc3RhdGVBc0hhbGZMYW5lc1syN10KKyAgICAgICAgI2RlZmluZSBBa3UwIHN0YXRlQXNIYWxmTGFuZXNbMjhdCisgICAgICAgICNkZWZpbmUgQWt1MSBzdGF0ZUFzSGFsZkxhbmVzWzI5XQorICAgICAgICAjZGVmaW5lIEFtYTAgc3RhdGVBc0hhbGZMYW5lc1szMF0KKyAgICAgICAgI2RlZmluZSBBbWExIHN0YXRlQXNIYWxmTGFuZXNbMzFdCisgICAgICAgICNkZWZpbmUgQW1lMCBzdGF0ZUFzSGFsZkxhbmVzWzMyXQorICAgICAgICAjZGVmaW5lIEFtZTEgc3RhdGVBc0hhbGZMYW5lc1szM10KKyAgICAgICAgI2RlZmluZSBBbWkwIHN0YXRlQXNIYWxmTGFuZXNbMzRdCisgICAgICAgICNkZWZpbmUgQW1pMSBzdGF0ZUFzSGFsZkxhbmVzWzM1XQorICAgICAgICAjZGVmaW5lIEFtbzAgc3RhdGVBc0hhbGZMYW5lc1szNl0KKyAgICAgICAgI2RlZmluZSBBbW8xIHN0YXRlQXNIYWxmTGFuZXNbMzddCisgICAgICAgICNkZWZpbmUgQW11MCBzdGF0ZUFzSGFsZkxhbmVzWzM4XQorICAgICAgICAjZGVmaW5lIEFtdTEgc3RhdGVBc0hhbGZMYW5lc1szOV0KKyAgICAgICAgI2RlZmluZSBBc2EwIHN0YXRlQXNIYWxmTGFuZXNbNDBdCisgICAgICAgICNkZWZpbmUgQXNhMSBzdGF0ZUFzSGFsZkxhbmVzWzQxXQorICAgICAgICAjZGVmaW5lIEFzZTAgc3RhdGVBc0hhbGZMYW5lc1s0Ml0KKyAgICAgICAgI2RlZmluZSBBc2UxIHN0YXRlQXNIYWxmTGFuZXNbNDNdCisgICAgICAgICNkZWZpbmUgQXNpMCBzdGF0ZUFzSGFsZkxhbmVzWzQ0XQorICAgICAgICAjZGVmaW5lIEFzaTEgc3RhdGVBc0hhbGZMYW5lc1s0NV0KKyAgICAgICAgI2RlZmluZSBBc28wIHN0YXRlQXNIYWxmTGFuZXNbNDZdCisgICAgICAgICNkZWZpbmUgQXNvMSBzdGF0ZUFzSGFsZkxhbmVzWzQ3XQorICAgICAgICAjZGVmaW5lIEFzdTAgc3RhdGVBc0hhbGZMYW5lc1s0OF0KKyAgICAgICAgI2RlZmluZSBBc3UxIHN0YXRlQXNIYWxmTGFuZXNbNDldCisKKyAgICAgICAgZG8KKyAgICAgICAgeworICAgICAgICAgICAgLyogLS0tIENvZGUgZm9yIDQgcm91bmRzICovCisKKyAgICAgICAgICAgIC8qIC0tLSB1c2luZyBmYWN0b3IgMiBpbnRlcmxlYXZpbmcsIDY0LWJpdCBsYW5lcyBtYXBwZWQgdG8gMzItYml0IHdvcmRzICovCisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQwKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtpMV5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbW8xXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzdTBeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBZ2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdlMV5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2kwXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtbzBeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXN1MV5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2ExXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1lMV5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2kxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFibzBeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBa2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2EwXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1lMF5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2kwXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFibzFeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2EwXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnaTBeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtdTBeRHUwKSwgNCk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2ExXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQWJlMF5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdpMV5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzBeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW11MV5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFzYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnYTBeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtlMF5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc28wXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFidTFeRHUxKSwgMTQpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQWdhMV5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa2UxXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMF5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWJ1MF5EdTApLCAxMyk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWExXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYmkwXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWt1MV5EdTEpLCAyMCk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWEwXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBYmkxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFnbzBeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWt1MF5EdTApLCAxOSk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBLZWNjYWtBdG9EX3JvdW5kMSgpOworCisgICAgICAgICAgICBCYSA9IChBYmEwXkRhMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBbWUxXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnaTFeRGkxKSwgMjIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXNvMV5EbzEpLCAxMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa3UxXkR1MCksIDcpOworICAgICAgICAgICAgQWJhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmEwIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQW1lMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTFeRGExKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtZTBeRGUxKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWdpMF5EaTApLCAyMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc28wXkRvMCksIDEwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFrdTBeRHUxKSwgNyk7CisgICAgICAgICAgICBBYmExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTEgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFnaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQXNvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBa3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNhMV5EYTEpLCAyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrZTFeRGUxKSwgMjMpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJpMV5EaTEpLCAzMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbW8xXkRvMCksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTBeRHUwKSwgMTApOworICAgICAgICAgICAgQXNhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmkgPSBST0wzMigoQXNhMF5EYTApLCAxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJpMF5EaTApLCAzMCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbW8wXkRvMSksIDE0KTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFndTFeRHUxKSwgMTApOworICAgICAgICAgICAgQXNhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBa2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBZ3UxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1hMV5EYTApLCA5KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2kxXkRpMCksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzEpLCAxMyk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYnUxXkR1MCksIDQpOworICAgICAgICAgICAgQW1hMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBZ2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFzaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQnUgPSBST0wzMigoQW1hMF5EYTEpLCA5KTsKKyAgICAgICAgICAgIEJhID0gKEFnZTBeRGUwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzaTBeRGkxKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28xXkRvMCksIDEyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFidTBeRHUxKSwgNCk7CisgICAgICAgICAgICBBbWEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2ExXkRhMCksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFiZTFeRGUwKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMSksIDgpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWdvMV5EbzApLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc3UxXkR1MSksIDE0KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFrYTBeRGExKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJlMF5EZTEpLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTFeRGkwKSwgNyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ28wXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFzdTBeRHUwKSwgMTMpOworICAgICAgICAgICAgQWthMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWdvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdhMV5EYTEpLCAyMSk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UwXkRlMCksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtpMV5EaTApLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYm8xXkRvMSksIDI4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtdTFeRHUxKSwgMjApOworICAgICAgICAgICAgQWdhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTEgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMSA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUxID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdhMF5EYTApLCAyMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBc2UxXkRlMSksIDEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtpMF5EaTEpLCAzMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYm8wXkRvMCksIDI3KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtdTBeRHUwKSwgMTkpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBc2UxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFraTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgS2VjY2FrQXRvRF9yb3VuZDIoKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMF5EYTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBc2kwXkRpMSksIDIyKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFnbzBeRG8xKSwgMTEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQW11MV5EdTApLCA3KTsKKyAgICAgICAgICAgIEFiYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMCBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFrZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCYSA9IChBYmExXkRhMSk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBa2UwXkRlMSksIDIyKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFzaTFeRGkwKSwgMjEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdvMV5EbzApLCAxMCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbXUwXkR1MSksIDcpOworICAgICAgICAgICAgQWJhMSA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBYmExIF49ICoocFJvdW5kQ29uc3RhbnRzKyspOworICAgICAgICAgICAgQWtlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBc2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFnbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQW11MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtYTBeRGExKSwgMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYmUwXkRlMSksIDIzKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFraTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNvMV5EbzApLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UwXkR1MCksIDEwKTsKKyAgICAgICAgICAgIEFtYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFtYTFeRGEwKSwgMSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYmUxXkRlMCksIDIyKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFraTFeRGkwKSwgMzApOworICAgICAgICAgICAgQmEgPSBST0wzMigoQXNvMF5EbzEpLCAxNCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBZ3UxXkR1MSksIDEwKTsKKyAgICAgICAgICAgIEFtYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFzbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWd1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnYTFeRGEwKSwgOSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBbWUwXkRlMSksIDEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJpMV5EaTApLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzFeRG8xKSwgMTMpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQXN1MV5EdTApLCA0KTsKKyAgICAgICAgICAgIEFnYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQW1lMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBYmkxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQXN1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFnYTBeRGExKSwgOSk7CisgICAgICAgICAgICBCYSA9IChBbWUxXkRlMCk7CisgICAgICAgICAgICBCZSA9IFJPTDMyKChBYmkwXkRpMSksIDMpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWtvMF5EbzApLCAxMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc3UwXkR1MSksIDQpOworICAgICAgICAgICAgQWdhMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUxID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWtvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBc3UwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQXNhMV5EYTApLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2UxXkRlMCksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMV5EaTEpLCA4KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFibzFeRG8wKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWt1MF5EdTEpLCAxNCk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCZSA9IFJPTDMyKChBc2EwXkRhMSksIDE4KTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFnZTBeRGUxKSwgNSk7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBbWkwXkRpMCksIDcpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJvMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBa3UxXkR1MCksIDEzKTsKKyAgICAgICAgICAgIEFzYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWdlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBbWkwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFibzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrYTBeRGExKSwgMjEpOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMF5EZTApLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnaTFeRGkwKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1vMF5EbzEpLCAyOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYnUwXkR1MSksIDIwKTsKKyAgICAgICAgICAgIEFrYTAgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMCA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzAgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MCA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrYTFeRGEwKSwgMjApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQXNlMV5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnaTBeRGkxKSwgMzEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1vMV5EbzApLCAyNyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYnUxXkR1MCksIDE5KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQXNlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBZ2kwID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFtbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWJ1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEtlY2Nha0F0b0Rfcm91bmQzKCk7CisKKyAgICAgICAgICAgIEJhID0gKEFiYTBeRGEwKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFiZTBeRGUwKSwgMjIpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQWJpMF5EaTEpLCAyMik7CisgICAgICAgICAgICBCbyA9IFJPTDMyKChBYm8wXkRvMSksIDExKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFidTBeRHUwKSwgNyk7CisgICAgICAgICAgICBBYmEwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFiYTAgXj0gKihwUm91bmRDb25zdGFudHMrKyk7CisgICAgICAgICAgICBBYmUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFiaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQWJvMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBYnUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmEgPSAoQWJhMV5EYTEpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWJlMV5EZTEpLCAyMik7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBYmkxXkRpMCksIDIxKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFibzFeRG8wKSwgMTApOworICAgICAgICAgICAgQnUgPSBST0wzMigoQWJ1MV5EdTEpLCA3KTsKKyAgICAgICAgICAgIEFiYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWJhMSBePSAqKHBSb3VuZENvbnN0YW50cysrKTsKKyAgICAgICAgICAgIEFiZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWJpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBYm8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFidTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2EwXkRhMSksIDIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdlMF5EZTEpLCAyMyk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2kwXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnbzBeRG8wKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MF5EdTApLCAxMCk7CisgICAgICAgICAgICBBZ2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCaSA9IFJPTDMyKChBZ2ExXkRhMCksIDEpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWdlMV5EZTApLCAyMik7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBZ2kxXkRpMCksIDMwKTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFnbzFeRG8xKSwgMTQpOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWd1MV5EdTEpLCAxMCk7CisgICAgICAgICAgICBBZ2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFnZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWdpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBZ28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFndTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2EwXkRhMCksIDkpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQWtlMF5EZTEpLCAxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFraTBeRGkwKSwgMyk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBa28wXkRvMSksIDEzKTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFrdTBeRHUwKSwgNCk7CisgICAgICAgICAgICBBa2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFrZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQWtpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBa28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFrdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCdSA9IFJPTDMyKChBa2ExXkRhMSksIDkpOworICAgICAgICAgICAgQmEgPSAoQWtlMV5EZTApOworICAgICAgICAgICAgQmUgPSBST0wzMigoQWtpMV5EaTEpLCAzKTsKKyAgICAgICAgICAgIEJpID0gUk9MMzIoKEFrbzFeRG8wKSwgMTIpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQWt1MV5EdTEpLCA0KTsKKyAgICAgICAgICAgIEFrYTEgPSAgIEJhIF4oKH5CZSkmICBCaSApOworICAgICAgICAgICAgQWtlMSA9ICAgQmUgXigofkJpKSYgIEJvICk7CisgICAgICAgICAgICBBa2kxID0gICBCaSBeKCh+Qm8pJiAgQnUgKTsKKyAgICAgICAgICAgIEFrbzEgPSAgIEJvIF4oKH5CdSkmICBCYSApOworICAgICAgICAgICAgQWt1MSA9ICAgQnUgXigofkJhKSYgIEJlICk7CisKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFtYTBeRGEwKSwgMTgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQW1lMF5EZTApLCA1KTsKKyAgICAgICAgICAgIEJvID0gUk9MMzIoKEFtaTBeRGkxKSwgOCk7CisgICAgICAgICAgICBCdSA9IFJPTDMyKChBbW8wXkRvMCksIDI4KTsKKyAgICAgICAgICAgIEJhID0gUk9MMzIoKEFtdTBeRHUxKSwgMTQpOworICAgICAgICAgICAgQW1hMCA9ICAgQmEgXigofkJlKSYgIEJpICk7CisgICAgICAgICAgICBBbWUwID0gICBCZSBeKCh+QmkpJiAgQm8gKTsKKyAgICAgICAgICAgIEFtaTAgPSAgIEJpIF4oKH5CbykmICBCdSApOworICAgICAgICAgICAgQW1vMCA9ICAgQm8gXigofkJ1KSYgIEJhICk7CisgICAgICAgICAgICBBbXUwID0gICBCdSBeKCh+QmEpJiAgQmUgKTsKKworICAgICAgICAgICAgQmUgPSBST0wzMigoQW1hMV5EYTEpLCAxOCk7CisgICAgICAgICAgICBCaSA9IFJPTDMyKChBbWUxXkRlMSksIDUpOworICAgICAgICAgICAgQm8gPSBST0wzMigoQW1pMV5EaTApLCA3KTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFtbzFeRG8xKSwgMjgpOworICAgICAgICAgICAgQmEgPSBST0wzMigoQW11MV5EdTApLCAxMyk7CisgICAgICAgICAgICBBbWExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFtZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQW1pMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBbW8xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFtdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc2EwXkRhMSksIDIxKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTBeRGUwKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc2kwXkRpMCksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzbzBeRG8xKSwgMjgpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXN1MF5EdTEpLCAyMCk7CisgICAgICAgICAgICBBc2EwID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTAgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMCA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28wID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTAgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworCisgICAgICAgICAgICBCbyA9IFJPTDMyKChBc2ExXkRhMCksIDIwKTsKKyAgICAgICAgICAgIEJ1ID0gUk9MMzIoKEFzZTFeRGUxKSwgMSk7CisgICAgICAgICAgICBCYSA9IFJPTDMyKChBc2kxXkRpMSksIDMxKTsKKyAgICAgICAgICAgIEJlID0gUk9MMzIoKEFzbzFeRG8wKSwgMjcpOworICAgICAgICAgICAgQmkgPSBST0wzMigoQXN1MV5EdTApLCAxOSk7CisgICAgICAgICAgICBBc2ExID0gICBCYSBeKCh+QmUpJiAgQmkgKTsKKyAgICAgICAgICAgIEFzZTEgPSAgIEJlIF4oKH5CaSkmICBCbyApOworICAgICAgICAgICAgQXNpMSA9ICAgQmkgXigofkJvKSYgIEJ1ICk7CisgICAgICAgICAgICBBc28xID0gICBCbyBeKCh+QnUpJiAgQmEgKTsKKyAgICAgICAgICAgIEFzdTEgPSAgIEJ1IF4oKH5CYSkmICBCZSApOworICAgICAgICB9CisgICAgICAgIHdoaWxlICggKnBSb3VuZENvbnN0YW50cyAhPSAweEZGICk7CisKKyAgICAgICAgI3VuZGVmIEFiYTAKKyAgICAgICAgI3VuZGVmIEFiYTEKKyAgICAgICAgI3VuZGVmIEFiZTAKKyAgICAgICAgI3VuZGVmIEFiZTEKKyAgICAgICAgI3VuZGVmIEFiaTAKKyAgICAgICAgI3VuZGVmIEFiaTEKKyAgICAgICAgI3VuZGVmIEFibzAKKyAgICAgICAgI3VuZGVmIEFibzEKKyAgICAgICAgI3VuZGVmIEFidTAKKyAgICAgICAgI3VuZGVmIEFidTEKKyAgICAgICAgI3VuZGVmIEFnYTAKKyAgICAgICAgI3VuZGVmIEFnYTEKKyAgICAgICAgI3VuZGVmIEFnZTAKKyAgICAgICAgI3VuZGVmIEFnZTEKKyAgICAgICAgI3VuZGVmIEFnaTAKKyAgICAgICAgI3VuZGVmIEFnaTEKKyAgICAgICAgI3VuZGVmIEFnbzAKKyAgICAgICAgI3VuZGVmIEFnbzEKKyAgICAgICAgI3VuZGVmIEFndTAKKyAgICAgICAgI3VuZGVmIEFndTEKKyAgICAgICAgI3VuZGVmIEFrYTAKKyAgICAgICAgI3VuZGVmIEFrYTEKKyAgICAgICAgI3VuZGVmIEFrZTAKKyAgICAgICAgI3VuZGVmIEFrZTEKKyAgICAgICAgI3VuZGVmIEFraTAKKyAgICAgICAgI3VuZGVmIEFraTEKKyAgICAgICAgI3VuZGVmIEFrbzAKKyAgICAgICAgI3VuZGVmIEFrbzEKKyAgICAgICAgI3VuZGVmIEFrdTAKKyAgICAgICAgI3VuZGVmIEFrdTEKKyAgICAgICAgI3VuZGVmIEFtYTAKKyAgICAgICAgI3VuZGVmIEFtYTEKKyAgICAgICAgI3VuZGVmIEFtZTAKKyAgICAgICAgI3VuZGVmIEFtZTEKKyAgICAgICAgI3VuZGVmIEFtaTAKKyAgICAgICAgI3VuZGVmIEFtaTEKKyAgICAgICAgI3VuZGVmIEFtbzAKKyAgICAgICAgI3VuZGVmIEFtbzEKKyAgICAgICAgI3VuZGVmIEFtdTAKKyAgICAgICAgI3VuZGVmIEFtdTEKKyAgICAgICAgI3VuZGVmIEFzYTAKKyAgICAgICAgI3VuZGVmIEFzYTEKKyAgICAgICAgI3VuZGVmIEFzZTAKKyAgICAgICAgI3VuZGVmIEFzZTEKKyAgICAgICAgI3VuZGVmIEFzaTAKKyAgICAgICAgI3VuZGVmIEFzaTEKKyAgICAgICAgI3VuZGVmIEFzbzAKKyAgICAgICAgI3VuZGVmIEFzbzEKKyAgICAgICAgI3VuZGVmIEFzdTAKKyAgICAgICAgI3VuZGVmIEFzdTEKKyAgICB9Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgICBLZWNjYWtQMTYwMF9QZXJtdXRlX05yb3VuZHMoc3RhdGUsIDEyKTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHModm9pZCAqc3RhdGUpCit7CisgICAgIEtlY2Nha1AxNjAwX1Blcm11dGVfTnJvdW5kcyhzdGF0ZSwgMjQpOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLW9wdDY0LWNvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MDFjNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQtY29uZmlnLmgKQEAgLTAsMCArMSwzIEBACisjZGVmaW5lIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uX2NvbmZpZyAibGFuZSBjb21wbGVtZW50aW5nLCBhbGwgcm91bmRzIHVucm9sbGVkIgorI2RlZmluZSBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisjZGVmaW5lIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MDAxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtQLTE2MDAtb3B0NjQuYwpAQCAtMCwwICsxLDQ3NCBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorLyogI2luY2x1ZGUgImJyZ19lbmRpYW4uaCIgKi8KKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtb3B0NjQtY29uZmlnLmgiCisKKyNpZiBOT1RfUFlUSE9OCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVUlOVDg7CisvKiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgVUlOVDY0OyAqLworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nKQorI2RlZmluZSBVc2VCZWJpZ29raW1pc2EKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNkZWZpbmUgUk9MNjQoYSwgb2Zmc2V0KSBfcm90bDY0KGEsIG9mZnNldCkKKyNlbGlmIGRlZmluZWQoS2VjY2FrUDE2MDBfdXNlU0hMRCkKKyAgICAjZGVmaW5lIFJPTDY0KHgsTikgKHsgXAorICAgIHJlZ2lzdGVyIFVJTlQ2NCBfX291dDsgXAorICAgIHJlZ2lzdGVyIFVJTlQ2NCBfX2luID0geDsgXAorICAgIF9fYXNtX18gKCJzaGxkICUyLCUwLCUwIiA6ICI9ciIoX19vdXQpIDogIjAiKF9faW4pLCAiaSIoTikpOyBcCisgICAgX19vdXQ7IFwKKyAgICB9KQorI2Vsc2UKKyNkZWZpbmUgUk9MNjQoYSwgb2Zmc2V0KSAoKCgoVUlOVDY0KWEpIDw8IG9mZnNldCkgXiAoKChVSU5UNjQpYSkgPj4gKDY0LW9mZnNldCkpKQorI2VuZGlmCisKKyNpbmNsdWRlICJLZWNjYWtQLTE2MDAtNjQubWFjcm9zIgorI2lmZGVmIEtlY2Nha1AxNjAwX2Z1bGxVbnJvbGxpbmcKKyNkZWZpbmUgRnVsbFVucm9sbGluZworI2Vsc2UKKyNkZWZpbmUgVW5yb2xsaW5nIEtlY2Nha1AxNjAwX3Vucm9sbGluZworI2VuZGlmCisjaW5jbHVkZSAiS2VjY2FrUC0xNjAwLXVucm9sbGluZy5tYWNyb3MiCisjaW5jbHVkZSAiU25QLVJlbGFuZWQuaCIKKworc3RhdGljIGNvbnN0IFVJTlQ2NCBLZWNjYWtGMTYwMFJvdW5kQ29uc3RhbnRzWzI0XSA9IHsKKyAgICAweDAwMDAwMDAwMDAwMDAwMDFVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDgyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4YVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwMDBVTEwsCisgICAgMHgwMDAwMDAwMDAwMDA4MDhiVUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwMVVMTCwKKyAgICAweDgwMDAwMDAwODAwMDgwODFVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDAwMDAwMDA4YVVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDAwODhVTEwsCisgICAgMHgwMDAwMDAwMDgwMDA4MDA5VUxMLAorICAgIDB4MDAwMDAwMDA4MDAwMDAwYVVMTCwKKyAgICAweDAwMDAwMDAwODAwMDgwOGJVTEwsCisgICAgMHg4MDAwMDAwMDAwMDAwMDhiVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwODA4OVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwMDNVTEwsCisgICAgMHg4MDAwMDAwMDAwMDA4MDAyVUxMLAorICAgIDB4ODAwMDAwMDAwMDAwMDA4MFVMTCwKKyAgICAweDAwMDAwMDAwMDAwMDgwMGFVTEwsCisgICAgMHg4MDAwMDAwMDgwMDAwMDBhVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODA4MVVMTCwKKyAgICAweDgwMDAwMDAwMDAwMDgwODBVTEwsCisgICAgMHgwMDAwMDAwMDgwMDAwMDAxVUxMLAorICAgIDB4ODAwMDAwMDA4MDAwODAwOFVMTCB9OworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfSW5pdGlhbGl6ZSh2b2lkICpzdGF0ZSkKK3sKKyAgICBtZW1zZXQoc3RhdGUsIDAsIDIwMCk7CisjaWZkZWYgS2VjY2FrUDE2MDBfdXNlTGFuZUNvbXBsZW1lbnRpbmcKKyAgICAoKFVJTlQ2NCopc3RhdGUpWyAxXSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsgMl0gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbIDhdID0gfihVSU5UNjQpMDsKKyAgICAoKFVJTlQ2NCopc3RhdGUpWzEyXSA9IH4oVUlOVDY0KTA7CisgICAgKChVSU5UNjQqKXN0YXRlKVsxN10gPSB+KFVJTlQ2NCkwOworICAgICgoVUlOVDY0KilzdGF0ZSlbMjBdID0gfihVSU5UNjQpMDsKKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lUG9zaXRpb24sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgPT0gSVNfTElUVExFX0VORElBTikKKyAgICBVSU5UNjQgbGFuZTsKKyAgICBpZiAobGVuZ3RoID09IDApCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIGxhbmUgPSBkYXRhWzBdOworICAgIGVsc2UgeworICAgICAgICBsYW5lID0gMDsKKyAgICAgICAgbWVtY3B5KCZsYW5lLCBkYXRhLCBsZW5ndGgpOworICAgIH0KKyAgICBsYW5lIDw8PSBvZmZzZXQqODsKKyNlbHNlCisgICAgVUlOVDY0IGxhbmUgPSAwOworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgIGxhbmUgfD0gKChVSU5UNjQpZGF0YVtpXSkgPDwgKChpK29mZnNldCkqOCk7CisjZW5kaWYKKyAgICAoKFVJTlQ2NCopc3RhdGUpW2xhbmVQb3NpdGlvbl0gXj0gbGFuZTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0FkZExhbmVzKHZvaWQgKnN0YXRlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50KQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisgICAgdW5zaWduZWQgaW50IGkgPSAwOworI2lmZGVmIE5PX01JU0FMSUdORURfQUNDRVNTRVMKKyAgICAvKiBJZiBlaXRoZXIgcG9pbnRlciBpcyBtaXNhbGlnbmVkLCBmYWxsIGJhY2sgdG8gYnl0ZS13aXNlIHhvci4gKi8KKworICAgIGlmICgoKCgodWludHB0cl90KXN0YXRlKSAmIDcpICE9IDApIHx8ICgoKCh1aW50cHRyX3QpZGF0YSkgJiA3KSAhPSAwKSkgeworICAgICAgZm9yIChpID0gMDsgaSA8IGxhbmVDb3VudCAqIDg7IGkrKykgeworICAgICAgICAoKHVuc2lnbmVkIGNoYXIqKXN0YXRlKVtpXSBePSBkYXRhW2ldOworICAgICAgfQorICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICAvKiBPdGhlcndpc2UuLi4gKi8KKworICAgICAgZm9yKCA7IChpKzgpPD1sYW5lQ291bnQ7IGkrPTgpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsyXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsyXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krM10gXj0gKChVSU5UNjQqKWRhdGEpW2krM107CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzRdIF49ICgoVUlOVDY0KilkYXRhKVtpKzRdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSs1XSBePSAoKFVJTlQ2NCopZGF0YSlbaSs1XTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krNl0gXj0gKChVSU5UNjQqKWRhdGEpW2krNl07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzddIF49ICgoVUlOVDY0KilkYXRhKVtpKzddOworICAgICAgfQorICAgICAgZm9yKCA7IChpKzQpPD1sYW5lQ291bnQ7IGkrPTQpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtpKzFdIF49ICgoVUlOVDY0KilkYXRhKVtpKzFdOworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSsyXSBePSAoKFVJTlQ2NCopZGF0YSlbaSsyXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krM10gXj0gKChVSU5UNjQqKWRhdGEpW2krM107CisgICAgICB9CisgICAgICBmb3IoIDsgKGkrMik8PWxhbmVDb3VudDsgaSs9MikgeworICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaSswXSBePSAoKFVJTlQ2NCopZGF0YSlbaSswXTsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMV0gXj0gKChVSU5UNjQqKWRhdGEpW2krMV07CisgICAgICB9CisgICAgICBpZiAoaTxsYW5lQ291bnQpIHsKKyAgICAgICAgICAoKFVJTlQ2NCopc3RhdGUpW2krMF0gXj0gKChVSU5UNjQqKWRhdGEpW2krMF07CisgICAgICB9CisgICAgfQorI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBVSU5UOCAqY3VyRGF0YSA9IGRhdGE7CisgICAgZm9yKGk9MDsgaTxsYW5lQ291bnQ7IGkrKywgY3VyRGF0YSs9OCkgeworICAgICAgICBVSU5UNjQgbGFuZSA9IChVSU5UNjQpY3VyRGF0YVswXQorICAgICAgICAgICAgfCAoKFVJTlQ2NCljdXJEYXRhWzFdIDw8IDgpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbMl0gPDwgMTYpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbM10gPDwgMjQpCisgICAgICAgICAgICB8ICgoVUlOVDY0KWN1ckRhdGFbNF0gPDwzMikKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs1XSA8PCA0MCkKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs2XSA8PCA0OCkKKyAgICAgICAgICAgIHwgKChVSU5UNjQpY3VyRGF0YVs3XSA8PCA1Nik7CisgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbaV0gXj0gbGFuZTsKKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZSh2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgIFVJTlQ2NCBsYW5lID0gYnl0ZTsKKyAgICBsYW5lIDw8PSAob2Zmc2V0JTgpKjg7CisgICAgKChVSU5UNjQqKXN0YXRlKVtvZmZzZXQvOF0gXj0gbGFuZTsKK30KKyNlbmRpZgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfQWRkQnl0ZXModm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgU25QX0FkZEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfQWRkTGFuZXMsIEtlY2Nha1AxNjAwX0FkZEJ5dGVzSW5MYW5lLCA4KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworI2lmIChQTEFURk9STV9CWVRFX09SREVSID09IElTX0xJVFRMRV9FTkRJQU4pCisjaWZkZWYgS2VjY2FrUDE2MDBfdXNlTGFuZUNvbXBsZW1lbnRpbmcKKyAgICBpZiAoKGxhbmVQb3NpdGlvbiA9PSAxKSB8fCAobGFuZVBvc2l0aW9uID09IDIpIHx8IChsYW5lUG9zaXRpb24gPT0gOCkgfHwgKGxhbmVQb3NpdGlvbiA9PSAxMikgfHwgKGxhbmVQb3NpdGlvbiA9PSAxNykgfHwgKGxhbmVQb3NpdGlvbiA9PSAyMCkpIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspCisgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIqKXN0YXRlKVtsYW5lUG9zaXRpb24qOCtvZmZzZXQraV0gPSB+ZGF0YVtpXTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBtZW1jcHkoKHVuc2lnbmVkIGNoYXIqKXN0YXRlK2xhbmVQb3NpdGlvbio4K29mZnNldCwgZGF0YSwgbGVuZ3RoKTsKKyAgICB9CisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGxhbmVDb3VudDsgbGFuZVBvc2l0aW9uKyspCisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IH4oKGNvbnN0IFVJTlQ2NCopZGF0YSlbbGFuZVBvc2l0aW9uXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dID0gKChjb25zdCBVSU5UNjQqKWRhdGEpW2xhbmVQb3NpdGlvbl07CisjZWxzZQorICAgIG1lbWNweShzdGF0ZSwgZGF0YSwgbGFuZUNvdW50KjgpOworI2VuZGlmCisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlcyh2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcywgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfT3ZlcndyaXRlV2l0aFplcm9lcyh2b2lkICpzdGF0ZSwgdW5zaWduZWQgaW50IGJ5dGVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgdW5zaWduZWQgaW50IGxhbmVQb3NpdGlvbjsKKworICAgIGZvcihsYW5lUG9zaXRpb249MDsgbGFuZVBvc2l0aW9uPGJ5dGVDb3VudC84OyBsYW5lUG9zaXRpb24rKykKKyAgICAgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICAgICAgKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dID0gfjA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICgoVUlOVDY0KilzdGF0ZSlbbGFuZVBvc2l0aW9uXSA9IDA7CisgICAgaWYgKGJ5dGVDb3VudCU4ICE9IDApIHsKKyAgICAgICAgbGFuZVBvc2l0aW9uID0gYnl0ZUNvdW50Lzg7CisgICAgICAgIGlmICgobGFuZVBvc2l0aW9uID09IDEpIHx8IChsYW5lUG9zaXRpb24gPT0gMikgfHwgKGxhbmVQb3NpdGlvbiA9PSA4KSB8fCAobGFuZVBvc2l0aW9uID09IDEyKSB8fCAobGFuZVBvc2l0aW9uID09IDE3KSB8fCAobGFuZVBvc2l0aW9uID09IDIwKSkKKyAgICAgICAgICAgIG1lbXNldCgodW5zaWduZWQgY2hhciopc3RhdGUrbGFuZVBvc2l0aW9uKjgsIDB4RkYsIGJ5dGVDb3VudCU4KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVtc2V0KCh1bnNpZ25lZCBjaGFyKilzdGF0ZStsYW5lUG9zaXRpb24qOCwgMCwgYnl0ZUNvdW50JTgpOworICAgIH0KKyNlbHNlCisgICAgbWVtc2V0KHN0YXRlLCAwLCBieXRlQ291bnQpOworI2VuZGlmCisjZWxzZQorI2Vycm9yICJOb3QgeWV0IGltcGxlbWVudGVkIgorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzKHZvaWQgKnN0YXRlKQoreworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisKKyAgICBjb3B5RnJvbVN0YXRlKEEsIHN0YXRlQXNMYW5lcykKKyAgICByb3VuZHMyNAorICAgIGNvcHlUb1N0YXRlKHN0YXRlQXNMYW5lcywgQSkKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHModm9pZCAqc3RhdGUpCit7CisgICAgZGVjbGFyZUFCQ0RFCisgICAgI2lmbmRlZiBLZWNjYWtQMTYwMF9mdWxsVW5yb2xsaW5nCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgI2VuZGlmCisgICAgVUlOVDY0ICpzdGF0ZUFzTGFuZXMgPSAoVUlOVDY0KilzdGF0ZTsKKworICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGVBc0xhbmVzKQorICAgIHJvdW5kczEyCisgICAgY29weVRvU3RhdGUoc3RhdGVBc0xhbmVzLCBBKQorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCB1bnNpZ25lZCBjaGFyICpkYXRhLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ2NCBsYW5lID0gKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICBsYW5lID0gfmxhbmU7CisjZW5kaWYKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHsKKyAgICAgICAgVUlOVDY0IGxhbmUxWzFdOworICAgICAgICBsYW5lMVswXSA9IGxhbmU7CisgICAgICAgIG1lbWNweShkYXRhLCAoVUlOVDgqKWxhbmUxK29mZnNldCwgbGVuZ3RoKTsKKyAgICB9CisjZWxzZQorICAgIHVuc2lnbmVkIGludCBpOworICAgIGxhbmUgPj49IG9mZnNldCo4OworICAgIGZvcihpPTA7IGk8bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgZGF0YVtpXSA9IGxhbmUgJiAweEZGOworICAgICAgICBsYW5lID4+PSA4OworICAgIH0KKyNlbmRpZgorfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiAhPSBJU19MSVRUTEVfRU5ESUFOKQordm9pZCBmcm9tV29yZFRvQnl0ZXMoVUlOVDggKmJ5dGVzLCBjb25zdCBVSU5UNjQgd29yZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8KDY0LzgpOyBpKyspCisgICAgICAgIGJ5dGVzW2ldID0gKHdvcmQgPj4gKDgqaSkpICYgMHhGRjsKK30KKyNlbmRpZgorCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RMYW5lcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCkKK3sKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIG1lbWNweShkYXRhLCBzdGF0ZSwgbGFuZUNvdW50KjgpOworI2Vsc2UKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyspCisgICAgICAgIGZyb21Xb3JkVG9CeXRlcyhkYXRhKyhpKjgpLCAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldKTsKKyNlbmRpZgorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKGxhbmVDb3VudCA+IDEpIHsKKyAgICAgICAgKChVSU5UNjQqKWRhdGEpWyAxXSA9IH4oKFVJTlQ2NCopZGF0YSlbIDFdOworICAgICAgICBpZiAobGFuZUNvdW50ID4gMikgeworICAgICAgICAgICAgKChVSU5UNjQqKWRhdGEpWyAyXSA9IH4oKFVJTlQ2NCopZGF0YSlbIDJdOworICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDgpIHsKKyAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbIDhdID0gfigoVUlOVDY0KilkYXRhKVsgOF07CisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDEyKSB7CisgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilkYXRhKVsxMl0gPSB+KChVSU5UNjQqKWRhdGEpWzEyXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDE3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMTddID0gfigoVUlOVDY0KilkYXRhKVsxN107CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFVJTlQ2NCopZGF0YSlbMjBdID0gfigoVUlOVDY0KilkYXRhKVsyMF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3ZvaWQgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZEJ5dGVzSW5MYW5lKGNvbnN0IHZvaWQgKnN0YXRlLCB1bnNpZ25lZCBpbnQgbGFuZVBvc2l0aW9uLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgIFVJTlQ2NCBsYW5lID0gKChVSU5UNjQqKXN0YXRlKVtsYW5lUG9zaXRpb25dOworI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKChsYW5lUG9zaXRpb24gPT0gMSkgfHwgKGxhbmVQb3NpdGlvbiA9PSAyKSB8fCAobGFuZVBvc2l0aW9uID09IDgpIHx8IChsYW5lUG9zaXRpb24gPT0gMTIpIHx8IChsYW5lUG9zaXRpb24gPT0gMTcpIHx8IChsYW5lUG9zaXRpb24gPT0gMjApKQorICAgICAgICBsYW5lID0gfmxhbmU7CisjZW5kaWYKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICAgIFVJTlQ2NCBsYW5lMVsxXTsKKyAgICAgICAgbGFuZTFbMF0gPSBsYW5lOworICAgICAgICBmb3IoaT0wOyBpPGxlbmd0aDsgaSsrKQorICAgICAgICAgICAgb3V0cHV0W2ldID0gaW5wdXRbaV0gXiAoKFVJTlQ4KilsYW5lMSlbb2Zmc2V0K2ldOworICAgIH0KKyNlbHNlCisgICAgdW5zaWduZWQgaW50IGk7CisgICAgbGFuZSA+Pj0gb2Zmc2V0Kjg7CisgICAgZm9yKGk9MDsgaTxsZW5ndGg7IGkrKykgeworICAgICAgICBvdXRwdXRbaV0gPSBpbnB1dFtpXSBeIChsYW5lICYgMHhGRik7CisgICAgICAgIGxhbmUgPj49IDg7CisgICAgfQorI2VuZGlmCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKwordm9pZCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkTGFuZXMoY29uc3Qgdm9pZCAqc3RhdGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCBsYW5lQ291bnQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisjaWYgKFBMQVRGT1JNX0JZVEVfT1JERVIgIT0gSVNfTElUVExFX0VORElBTikKKyAgICB1bnNpZ25lZCBjaGFyIHRlbXBbOF07CisgICAgdW5zaWduZWQgaW50IGo7CisjZW5kaWYKKworICAgIGZvcihpPTA7IGk8bGFuZUNvdW50OyBpKyspIHsKKyNpZiAoUExBVEZPUk1fQllURV9PUkRFUiA9PSBJU19MSVRUTEVfRU5ESUFOKQorICAgICAgICAoKFVJTlQ2NCopb3V0cHV0KVtpXSA9ICgoVUlOVDY0KilpbnB1dClbaV0gXiAoKGNvbnN0IFVJTlQ2NCopc3RhdGUpW2ldOworI2Vsc2UKKyAgICAgICAgZnJvbVdvcmRUb0J5dGVzKHRlbXAsICgoY29uc3QgVUlOVDY0KilzdGF0ZSlbaV0pOworICAgICAgICBmb3Ioaj0wOyBqPDg7IGorKykKKyAgICAgICAgICAgIG91dHB1dFtpKjgral0gPSBpbnB1dFtpKjgral0gXiB0ZW1wW2pdOworI2VuZGlmCisgICAgfQorI2lmZGVmIEtlY2Nha1AxNjAwX3VzZUxhbmVDb21wbGVtZW50aW5nCisgICAgaWYgKGxhbmVDb3VudCA+IDEpIHsKKyAgICAgICAgKChVSU5UNjQqKW91dHB1dClbIDFdID0gfigoVUlOVDY0KilvdXRwdXQpWyAxXTsKKyAgICAgICAgaWYgKGxhbmVDb3VudCA+IDIpIHsKKyAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyAyXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgMl07CisgICAgICAgICAgICBpZiAobGFuZUNvdW50ID4gOCkgeworICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWyA4XSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsgOF07CisgICAgICAgICAgICAgICAgaWYgKGxhbmVDb3VudCA+IDEyKSB7CisgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzEyXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsxMl07CisgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAxNykgeworICAgICAgICAgICAgICAgICAgICAgICAgKChVSU5UNjQqKW91dHB1dClbMTddID0gfigoVUlOVDY0KilvdXRwdXQpWzE3XTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYW5lQ291bnQgPiAyMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoVUlOVDY0KilvdXRwdXQpWzIwXSA9IH4oKFVJTlQ2NCopb3V0cHV0KVsyMF07CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCit2b2lkIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyhjb25zdCB2b2lkICpzdGF0ZSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzLCBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUsIDgpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK3NpemVfdCBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIodm9pZCAqc3RhdGUsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbikKK3sKKyAgICBzaXplX3Qgb3JpZ2luYWxEYXRhQnl0ZUxlbiA9IGRhdGFCeXRlTGVuOworICAgIGRlY2xhcmVBQkNERQorICAgICNpZm5kZWYgS2VjY2FrUDE2MDBfZnVsbFVucm9sbGluZworICAgIHVuc2lnbmVkIGludCBpOworICAgICNlbmRpZgorICAgIFVJTlQ2NCAqc3RhdGVBc0xhbmVzID0gKFVJTlQ2NCopc3RhdGU7CisgICAgVUlOVDY0ICppbkRhdGFBc0xhbmVzID0gKFVJTlQ2NCopZGF0YTsKKworICAgIGNvcHlGcm9tU3RhdGUoQSwgc3RhdGVBc0xhbmVzKQorICAgIHdoaWxlKGRhdGFCeXRlTGVuID49IGxhbmVDb3VudCo4KSB7CisgICAgICAgIGFkZElucHV0KEEsIGluRGF0YUFzTGFuZXMsIGxhbmVDb3VudCkKKyAgICAgICAgcm91bmRzMjQKKyAgICAgICAgaW5EYXRhQXNMYW5lcyArPSBsYW5lQ291bnQ7CisgICAgICAgIGRhdGFCeXRlTGVuIC09IGxhbmVDb3VudCo4OworICAgIH0KKyAgICBjb3B5VG9TdGF0ZShzdGF0ZUFzTGFuZXMsIEEpCisgICAgcmV0dXJuIG9yaWdpbmFsRGF0YUJ5dGVMZW4gLSBkYXRhQnl0ZUxlbjsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrUC0xNjAwLXVucm9sbGluZy5tYWNyb3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA1Y2UyOQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1AtMTYwMC11bnJvbGxpbmcubWFjcm9zCkBAIC0wLDAgKzEsMTg1IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWYgKGRlZmluZWQoRnVsbFVucm9sbGluZykpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCAzLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDQsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggNSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA2LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoIDcsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSggOCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKCA5LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTAsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDEyLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTMsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE1LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTYsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE4LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTksIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMCwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIxLCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YSgyMywgRSwgQSkgXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDEyKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0xMikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyAyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA1LCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDYsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsgNywgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKyA4LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrIDksIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxMCwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzExLCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTIsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxMywgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE0LCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTUsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxNiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDE3LCBFLCBBKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMTgsIEEsIEUpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgxOSwgRSwgQSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKDIwLCBBLCBFKSBcCisgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoMjEsIEUsIEEpIFwKKyAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YSgyMiwgQSwgRSkgXAorICAgIHRoZXRhUmhvUGlDaGlJb3RhKDIzLCBFLCBBKSBcCisKKyNlbGlmIChVbnJvbGxpbmcgPT0gNikKKyNkZWZpbmUgcm91bmRzMjQgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MDsgaTwyNDsgaSs9NikgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMywgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzQsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs1LCBFLCBBKSBcCisgICAgfSBcCisKKyNkZWZpbmUgcm91bmRzMTIgXAorICAgIHByZXBhcmVUaGV0YSBcCisgICAgZm9yKGk9MTI7IGk8MjQ7IGkrPTYpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSs0LCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrNSwgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDQpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTQpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzMsIEUsIEEpIFwKKyAgICB9IFwKKworI2RlZmluZSByb3VuZHMxMiBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0xMjsgaTwyNDsgaSs9NCkgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzEsIEUsIEEpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsyLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMywgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDMpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrPTMpIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSsxLCBFLCBBKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMiwgQSwgRSkgXAorICAgICAgICBjb3B5U3RhdGVWYXJpYWJsZXMoQSwgRSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz0zKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpKzIsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2VsaWYgKFVucm9sbGluZyA9PSAyKQorI2RlZmluZSByb3VuZHMyNCBcCisgICAgcHJlcGFyZVRoZXRhIFwKKyAgICBmb3IoaT0wOyBpPDI0OyBpKz0yKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKz0yKSB7IFwKKyAgICAgICAgdGhldGFSaG9QaUNoaUlvdGFQcmVwYXJlVGhldGEoaSAgLCBBLCBFKSBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkrMSwgRSwgQSkgXAorICAgIH0gXAorCisjZWxpZiAoVW5yb2xsaW5nID09IDEpCisjZGVmaW5lIHJvdW5kczI0IFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTA7IGk8MjQ7IGkrKykgeyBcCisgICAgICAgIHRoZXRhUmhvUGlDaGlJb3RhUHJlcGFyZVRoZXRhKGkgICwgQSwgRSkgXAorICAgICAgICBjb3B5U3RhdGVWYXJpYWJsZXMoQSwgRSkgXAorICAgIH0gXAorCisjZGVmaW5lIHJvdW5kczEyIFwKKyAgICBwcmVwYXJlVGhldGEgXAorICAgIGZvcihpPTEyOyBpPDI0OyBpKyspIHsgXAorICAgICAgICB0aGV0YVJob1BpQ2hpSW90YVByZXBhcmVUaGV0YShpICAsIEEsIEUpIFwKKyAgICAgICAgY29weVN0YXRlVmFyaWFibGVzKEEsIEUpIFwKKyAgICB9IFwKKworI2Vsc2UKKyNlcnJvciAiVW5yb2xsaW5nIGlzIG5vdCBjb3JyZWN0bHkgc3BlY2lmaWVkISIKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmRiNzMxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmMKQEAgLTAsMCArMSw5MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5oIgorCisjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgI2luY2x1ZGUgImRpc3BsYXlJbnRlcm1lZGlhdGVWYWx1ZXMuaCIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1AyMDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC0yMDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDIwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1AyMDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCAyMDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1AyMDBfUGVybXV0ZV8xOHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0YyMDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjIwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1A0MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC00MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDQwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1A0MDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCA0MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1A0MDBfUGVybXV0ZV8yMHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0Y0MDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjQwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1A4MDBfZXhjbHVkZWQKKyAgICAjaW5jbHVkZSAiS2VjY2FrUC04MDAtU25QLmgiCisKKyAgICAjZGVmaW5lIHByZWZpeCBLZWNjYWtXaWR0aDgwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1A4MDAKKyAgICAjZGVmaW5lIFNuUF93aWR0aCA4MDAKKyAgICAjZGVmaW5lIFNuUF9QZXJtdXRlIEtlY2Nha1A4MDBfUGVybXV0ZV8yMnJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0Y4MDBfRmFzdExvb3Bfc3VwcG9ydGVkKQorICAgICAgICAjZGVmaW5lIFNuUF9GYXN0TG9vcF9BYnNvcmIgS2VjY2FrRjgwMF9GYXN0TG9vcF9BYnNvcmIKKyAgICAjZW5kaWYKKyAgICAgICAgI2luY2x1ZGUgIktlY2Nha1Nwb25nZS5pbmMiCisgICAgI3VuZGVmIHByZWZpeAorICAgICN1bmRlZiBTblAKKyAgICAjdW5kZWYgU25QX3dpZHRoCisgICAgI3VuZGVmIFNuUF9QZXJtdXRlCisgICAgI3VuZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyNlbmRpZgorCisjaWZuZGVmIEtlY2Nha1AxNjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMTYwMC1TblAuaCIKKworICAgICNkZWZpbmUgcHJlZml4IEtlY2Nha1dpZHRoMTYwMAorICAgICNkZWZpbmUgU25QIEtlY2Nha1AxNjAwCisgICAgI2RlZmluZSBTblBfd2lkdGggMTYwMAorICAgICNkZWZpbmUgU25QX1Blcm11dGUgS2VjY2FrUDE2MDBfUGVybXV0ZV8yNHJvdW5kcworICAgICNpZiBkZWZpbmVkKEtlY2Nha0YxNjAwX0Zhc3RMb29wX3N1cHBvcnRlZCkKKyAgICAgICAgI2RlZmluZSBTblBfRmFzdExvb3BfQWJzb3JiIEtlY2Nha0YxNjAwX0Zhc3RMb29wX0Fic29yYgorICAgICNlbmRpZgorICAgICAgICAjaW5jbHVkZSAiS2VjY2FrU3BvbmdlLmluYyIKKyAgICAjdW5kZWYgcHJlZml4CisgICAgI3VuZGVmIFNuUAorICAgICN1bmRlZiBTblBfd2lkdGgKKyAgICAjdW5kZWYgU25QX1Blcm11dGUKKyAgICAjdW5kZWYgU25QX0Zhc3RMb29wX0Fic29yYgorI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaCBiL01vZHVsZXMvX3NoYTMva2NwL0tlY2Nha1Nwb25nZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNGJhZGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaApAQCAtMCwwICsxLDE3MiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2lmbmRlZiBfS2VjY2FrU3BvbmdlX2hfCisjZGVmaW5lIF9LZWNjYWtTcG9uZ2VfaF8KKworLyoqIEdlbmVyYWwgaW5mb3JtYXRpb24KKyAgKgorICAqIFRoZSBmb2xsb3dpbmcgdHlwZSBhbmQgZnVuY3Rpb25zIGFyZSBub3QgYWN0dWFsbHkgaW1wbGVtZW50ZWQuIFRoZWlyCisgICogZG9jdW1lbnRhdGlvbiBpcyBnZW5lcmljLCB3aXRoIHRoZSBwcmVmaXggUHJlZml4IHJlcGxhY2VkIGJ5CisgICogLSBLZWNjYWtXaWR0aDIwMCBmb3IgYSBzcG9uZ2UgZnVuY3Rpb24gYmFzZWQgb24gS2VjY2FrLWZbMjAwXQorICAqIC0gS2VjY2FrV2lkdGg0MDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzQwMF0KKyAgKiAtIEtlY2Nha1dpZHRoODAwIGZvciBhIHNwb25nZSBmdW5jdGlvbiBiYXNlZCBvbiBLZWNjYWstZls4MDBdCisgICogLSBLZWNjYWtXaWR0aDE2MDAgZm9yIGEgc3BvbmdlIGZ1bmN0aW9uIGJhc2VkIG9uIEtlY2Nhay1mWzE2MDBdCisgICoKKyAgKiBJbiBhbGwgdGhlc2UgZnVuY3Rpb25zLCB0aGUgcmF0ZSBhbmQgY2FwYWNpdHkgbXVzdCBzdW0gdG8gdGhlIHdpZHRoIG9mIHRoZQorICAqIGNob3NlbiBwZXJtdXRhdGlvbi4gRm9yIGluc3RhbmNlLCB0byB1c2UgdGhlIHNwb25nZSBmdW5jdGlvbgorICAqIEtlY2Nha1tyPTEzNDQsIGM9MjU2XSwgb25lIG11c3QgdXNlIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2UoKSBvciBhIGNvbWJpbmF0aW9uCisgICogb2YgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUluaXRpYWxpemUoKSwgS2VjY2FrV2lkdGgxNjAwX1Nwb25nZUFic29yYigpLAorICAqIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cygpIGFuZAorICAqIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplKCkuCisgICoKKyAgKiBUaGUgUHJlZml4X1Nwb25nZUluc3RhbmNlIGNvbnRhaW5zIHRoZSBzcG9uZ2UgaW5zdGFuY2UgYXR0cmlidXRlcyBmb3IgdXNlCisgICogd2l0aCB0aGUgUHJlZml4X1Nwb25nZSogZnVuY3Rpb25zLgorICAqIEl0IGdhdGhlcnMgdGhlIHN0YXRlIHByb2Nlc3NlZCBieSB0aGUgcGVybXV0YXRpb24gYXMgd2VsbCBhcyB0aGUgcmF0ZSwKKyAgKiB0aGUgcG9zaXRpb24gb2YgaW5wdXQvb3V0cHV0IGJ5dGVzIGluIHRoZSBzdGF0ZSBhbmQgdGhlIHBoYXNlCisgICogKGFic29yYmluZyBvciBzcXVlZXppbmcpLgorICAqLworCisjaWZkZWYgRG9udFJlYWxseUluY2x1ZGVfRG9jdW1lbnRhdGlvbk9ubHkKKy8qKiBGdW5jdGlvbiB0byBldmFsdWF0ZSB0aGUgc3BvbmdlIGZ1bmN0aW9uIEtlY2Nha1tyLCBjXSBpbiBhIHNpbmdsZSBjYWxsLgorICAqIEBwYXJhbSAgcmF0ZSAgICAgICAgVGhlIHZhbHVlIG9mIHRoZSByYXRlIHIuCisgICogQHBhcmFtICBjYXBhY2l0eSAgICBUaGUgdmFsdWUgb2YgdGhlIGNhcGFjaXR5IGMuCisgICogQHBhcmFtICBpbnB1dCAgICAgICAgICAgUG9pbnRlciB0byB0aGUgaW5wdXQgbWVzc2FnZSAoYmVmb3JlIHRoZSBzdWZmaXgpLgorICAqIEBwYXJhbSAgaW5wdXRCeXRlTGVuICAgIFRoZSBsZW5ndGggb2YgdGhlIGlucHV0IG1lc3NhZ2UgaW4gYnl0ZXMuCisgICogQHBhcmFtICBzdWZmaXggICAgICAgICAgQnl0ZSBjb250YWluaW5nIGZyb20gMCB0byA3IHN1ZmZpeCBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCBtdXN0IGJlIGFic29yYmVkIGFmdGVyIEBhIGlucHV0LgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIDxpPm48L2k+IGJpdHMgbXVzdCBiZSBpbiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHBvc2l0aW9ucy4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGVzZSBiaXRzIG11c3QgYmUgZGVsaW1pdGVkIHdpdGggYSBiaXQgMSBhdCBwb3NpdGlvbiA8aT5uPC9pPgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIChjb3VudGluZyBmcm9tIDA9TFNCIHRvIDc9TVNCKSBhbmQgZm9sbG93ZWQgYnkgYml0cyAwCisgICogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBwb3NpdGlvbiA8aT5uPC9pPisxIHRvIHBvc2l0aW9uIDcuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlczoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiBubyBiaXRzIGFyZSB0byBiZSBhYnNvcmJlZCwgdGhlbiBAYSBzdWZmaXggbXVzdCBiZSAweDAxLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSAyLWJpdCBzZXF1ZW5jZSAwLDAgaXMgdG8gYmUgYWJzb3JiZWQsIEBhIHN1ZmZpeCBtdXN0IGJlIDB4MDQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDUtYml0IHNlcXVlbmNlIDAsMSwwLDAsMSBpcyB0byBiZSBhYnNvcmJlZCwgQGEgc3VmZml4IG11c3QgYmUgMHgzMi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNy1iaXQgc2VxdWVuY2UgMSwxLDAsMSwwLDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgc3VmZml4IG11c3QgYmUgMHg4Qi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAuCisgICogQHBhcmFtICBvdXRwdXQgICAgICAgICAgUG9pbnRlciB0byB0aGUgb3V0cHV0IGJ1ZmZlci4KKyAgKiBAcGFyYW0gIG91dHB1dEJ5dGVMZW4gICBUaGUgZGVzaXJlZCBudW1iZXIgb2Ygb3V0cHV0IGJ5dGVzLgorICAqIEBwcmUgICAgT25lIG11c3QgaGF2ZSByK2MgZXF1YWwgdG8gdGhlIHN1cHBvcnRlZCB3aWR0aCBvZiB0aGlzIGltcGxlbWVudGF0aW9uCisgICogICAgICAgICBhbmQgdGhlIHJhdGUgYSBtdWx0aXBsZSBvZiA4IGJpdHMgKG9uZSBieXRlKSBpbiB0aGlzIGltcGxlbWVudGF0aW9uLgorICAqIEBwcmUgICAgQGEgc3VmZml4IOKJoCAweDAwCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKTsKKworLyoqCisgICogRnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIEtlY2Nha1tyLCBjXSBzcG9uZ2UgZnVuY3Rpb24uCisgICogVGhlIHBoYXNlIG9mIHRoZSBzcG9uZ2UgZnVuY3Rpb24gaXMgc2V0IHRvIGFic29yYmluZy4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgdG8gYmUgaW5pdGlhbGl6ZWQuCisgICogQHBhcmFtICByYXRlICAgICAgICBUaGUgdmFsdWUgb2YgdGhlIHJhdGUgci4KKyAgKiBAcGFyYW0gIGNhcGFjaXR5ICAgIFRoZSB2YWx1ZSBvZiB0aGUgY2FwYWNpdHkgYy4KKyAgKiBAcHJlICAgIE9uZSBtdXN0IGhhdmUgcitjIGVxdWFsIHRvIHRoZSBzdXBwb3J0ZWQgd2lkdGggb2YgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAqICAgICAgICAgYW5kIHRoZSByYXRlIGEgbXVsdGlwbGUgb2YgOCBiaXRzIChvbmUgYnl0ZSkgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbi4KKyAgKiBAcmV0dXJuIFplcm8gaWYgc3VjY2Vzc2Z1bCwgMSBvdGhlcndpc2UuCisgICovCitpbnQgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoUHJlZml4X1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSk7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSBieXRlcyBmb3IgdGhlIHNwb25nZSBmdW5jdGlvbiB0byBhYnNvcmIuCisgICogQHBhcmFtICBzcG9uZ2VJbnN0YW5jZSAgUG9pbnRlciB0byB0aGUgc3BvbmdlIGluc3RhbmNlIGluaXRpYWxpemVkIGJ5IFByZWZpeF9TcG9uZ2VJbml0aWFsaXplKCkuCisgICogQHBhcmFtICBkYXRhICAgICAgICBQb2ludGVyIHRvIHRoZSBpbnB1dCBkYXRhLgorICAqIEBwYXJhbSAgZGF0YUJ5dGVMZW4gIFRoZSBudW1iZXIgb2YgaW5wdXQgYnl0ZXMgcHJvdmlkZWQgaW4gdGhlIGlucHV0IGRhdGEuCisgICogQHByZSAgICBUaGUgc3BvbmdlIGZ1bmN0aW9uIG11c3QgYmUgaW4gdGhlIGFic29yYmluZyBwaGFzZSwKKyAgKiAgICAgICAgIGkuZS4sIFByZWZpeF9TcG9uZ2VTcXVlZXplKCkgb3IgUHJlZml4X1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKCkKKyAgKiAgICAgICAgIG11c3Qgbm90IGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlLgorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlQWJzb3JiKFByZWZpeF9TcG9uZ2VJbnN0YW5jZSAqc3BvbmdlSW5zdGFuY2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHNpemVfdCBkYXRhQnl0ZUxlbik7CisKKy8qKgorICAqIEZ1bmN0aW9uIHRvIGdpdmUgaW5wdXQgZGF0YSBiaXRzIGZvciB0aGUgc3BvbmdlIGZ1bmN0aW9uIHRvIGFic29yYgorICAqIGFuZCB0aGVuIHRvIHN3aXRjaCB0byB0aGUgc3F1ZWV6aW5nIHBoYXNlLgorICAqIEBwYXJhbSAgc3BvbmdlSW5zdGFuY2UgIFBvaW50ZXIgdG8gdGhlIHNwb25nZSBpbnN0YW5jZSBpbml0aWFsaXplZCBieSBQcmVmaXhfU3BvbmdlSW5pdGlhbGl6ZSgpLgorICAqIEBwYXJhbSAgZGVsaW1pdGVkRGF0YSAgIEJ5dGUgY29udGFpbmluZyBmcm9tIDAgdG8gNyB0cmFpbGluZyBiaXRzCisgICogICAgICAgICAgICAgICAgICAgICB0aGF0IG11c3QgYmUgYWJzb3JiZWQuCisgICogICAgICAgICAgICAgICAgICAgICBUaGVzZSA8aT5uPC9pPiBiaXRzIG11c3QgYmUgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBwb3NpdGlvbnMuCisgICogICAgICAgICAgICAgICAgICAgICBUaGVzZSBiaXRzIG11c3QgYmUgZGVsaW1pdGVkIHdpdGggYSBiaXQgMSBhdCBwb3NpdGlvbiA8aT5uPC9pPgorICAqICAgICAgICAgICAgICAgICAgICAgKGNvdW50aW5nIGZyb20gMD1MU0IgdG8gNz1NU0IpIGFuZCBmb2xsb3dlZCBieSBiaXRzIDAKKyAgKiAgICAgICAgICAgICAgICAgICAgIGZyb20gcG9zaXRpb24gPGk+bjwvaT4rMSB0byBwb3NpdGlvbiA3LgorICAqICAgICAgICAgICAgICAgICAgICAgU29tZSBleGFtcGxlczoKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIG5vIGJpdHMgYXJlIHRvIGJlIGFic29yYmVkLCB0aGVuIEBhIGRlbGltaXRlZERhdGEgbXVzdCBiZSAweDAxLgorICAqICAgICAgICAgICAgICAgICAgICAgICAgIC0gSWYgdGhlIDItYml0IHNlcXVlbmNlIDAsMCBpcyB0byBiZSBhYnNvcmJlZCwgQGEgZGVsaW1pdGVkRGF0YSBtdXN0IGJlIDB4MDQuCisgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBJZiB0aGUgNS1iaXQgc2VxdWVuY2UgMCwxLDAsMCwxIGlzIHRvIGJlIGFic29yYmVkLCBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHgzMi4KKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIElmIHRoZSA3LWJpdCBzZXF1ZW5jZSAxLDEsMCwxLDAsMCwwIGlzIHRvIGJlIGFic29yYmVkLCBAYSBkZWxpbWl0ZWREYXRhIG11c3QgYmUgMHg4Qi4KKyAgKiAgICAgICAgICAgICAgICAgICAgIC4KKyAgKiBAcHJlICAgIFRoZSBzcG9uZ2UgZnVuY3Rpb24gbXVzdCBiZSBpbiB0aGUgYWJzb3JiaW5nIHBoYXNlLAorICAqICAgICAgICAgaS5lLiwgUHJlZml4X1Nwb25nZVNxdWVlemUoKSBvciBQcmVmaXhfU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMoKQorICAqICAgICAgICAgbXVzdCBub3QgaGF2ZSBiZWVuIGNhbGxlZCBiZWZvcmUuCisgICogQHByZSAgICBAYSBkZWxpbWl0ZWREYXRhIOKJoCAweDAwCisgICogQHJldHVybiBaZXJvIGlmIHN1Y2Nlc3NmdWwsIDEgb3RoZXJ3aXNlLgorICAqLworaW50IFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBjaGFyIGRlbGltaXRlZERhdGEpOworCisvKioKKyAgKiBGdW5jdGlvbiB0byBzcXVlZXplIG91dHB1dCBkYXRhIGZyb20gdGhlIHNwb25nZSBmdW5jdGlvbi4KKyAgKiBJZiB0aGUgc3BvbmdlIGZ1bmN0aW9uIHdhcyBpbiB0aGUgYWJzb3JiaW5nIHBoYXNlLCB0aGlzIGZ1bmN0aW9uCisgICogc3dpdGNoZXMgaXQgdG8gdGhlIHNxdWVlemluZyBwaGFzZQorICAqIGFzIGlmIFByZWZpeF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyhzcG9uZ2VJbnN0YW5jZSwgMHgwMSkgd2FzIGNhbGxlZC4KKyAgKiBAcGFyYW0gIHNwb25nZUluc3RhbmNlICBQb2ludGVyIHRvIHRoZSBzcG9uZ2UgaW5zdGFuY2UgaW5pdGlhbGl6ZWQgYnkgUHJlZml4X1Nwb25nZUluaXRpYWxpemUoKS4KKyAgKiBAcGFyYW0gIGRhdGEgICAgICAgIFBvaW50ZXIgdG8gdGhlIGJ1ZmZlciB3aGVyZSB0byBzdG9yZSB0aGUgb3V0cHV0IGRhdGEuCisgICogQHBhcmFtICBkYXRhQnl0ZUxlbiBUaGUgbnVtYmVyIG9mIG91dHB1dCBieXRlcyBkZXNpcmVkLgorICAqIEByZXR1cm4gWmVybyBpZiBzdWNjZXNzZnVsLCAxIG90aGVyd2lzZS4KKyAgKi8KK2ludCBQcmVmaXhfU3BvbmdlU3F1ZWV6ZShQcmVmaXhfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOworI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJhbGlnbi5oIgorCisjZGVmaW5lIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKHByZWZpeCwgc2l6ZSwgYWxpZ25tZW50KSBcCisgICAgQUxJR04oYWxpZ25tZW50KSB0eXBlZGVmIHN0cnVjdCBwcmVmaXgjI19TcG9uZ2VJbnN0YW5jZVN0cnVjdCB7IFwKKyAgICAgICAgdW5zaWduZWQgY2hhciBzdGF0ZVtzaXplXTsgXAorICAgICAgICB1bnNpZ25lZCBpbnQgcmF0ZTsgXAorICAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZUlPSW5kZXg7IFwKKyAgICAgICAgaW50IHNxdWVlemluZzsgXAorICAgIH0gcHJlZml4IyNfU3BvbmdlSW5zdGFuY2U7CisKKyNkZWZpbmUgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMocHJlZml4KSBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZSh1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgc2l6ZV90IGlucHV0Qnl0ZUxlbiwgdW5zaWduZWQgY2hhciBzdWZmaXgsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgc2l6ZV90IG91dHB1dEJ5dGVMZW4pOyBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZUluaXRpYWxpemUocHJlZml4IyNfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCB1bnNpZ25lZCBpbnQgcmF0ZSwgdW5zaWduZWQgaW50IGNhcGFjaXR5KTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VBYnNvcmIocHJlZml4IyNfU3BvbmdlSW5zdGFuY2UgKnNwb25nZUluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pOyBcCisgICAgaW50IHByZWZpeCMjX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKTsgXAorICAgIGludCBwcmVmaXgjI19TcG9uZ2VTcXVlZXplKHByZWZpeCMjX1Nwb25nZUluc3RhbmNlICpzcG9uZ2VJbnN0YW5jZSwgdW5zaWduZWQgY2hhciAqZGF0YSwgc2l6ZV90IGRhdGFCeXRlTGVuKTsKKworI2lmbmRlZiBLZWNjYWtQMjAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtMjAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoMjAwLCBLZWNjYWtQMjAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1AyMDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGgyMDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQNDAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtNDAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoNDAwLCBLZWNjYWtQNDAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1A0MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGg0MDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQODAwX2V4Y2x1ZGVkCisgICAgI2luY2x1ZGUgIktlY2Nha1AtODAwLVNuUC5oIgorICAgIEtDUF9EZWNsYXJlU3BvbmdlU3RydWN0dXJlKEtlY2Nha1dpZHRoODAwLCBLZWNjYWtQODAwX3N0YXRlU2l6ZUluQnl0ZXMsIEtlY2Nha1A4MDBfc3RhdGVBbGlnbm1lbnQpCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VGdW5jdGlvbnMoS2VjY2FrV2lkdGg4MDApCisjZW5kaWYKKworI2lmbmRlZiBLZWNjYWtQMTYwMF9leGNsdWRlZAorICAgICNpbmNsdWRlICJLZWNjYWtQLTE2MDAtU25QLmgiCisgICAgS0NQX0RlY2xhcmVTcG9uZ2VTdHJ1Y3R1cmUoS2VjY2FrV2lkdGgxNjAwLCBLZWNjYWtQMTYwMF9zdGF0ZVNpemVJbkJ5dGVzLCBLZWNjYWtQMTYwMF9zdGF0ZUFsaWdubWVudCkKKyAgICBLQ1BfRGVjbGFyZVNwb25nZUZ1bmN0aW9ucyhLZWNjYWtXaWR0aDE2MDApCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9LZWNjYWtTcG9uZ2UuaW5jIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTA3MzlkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvS2VjY2FrU3BvbmdlLmluYwpAQCAtMCwwICsxLDMzMiBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworI2RlZmluZSBKT0lOMChhLCBiKSAgICAgICAgICAgICAgICAgICAgIGEgIyMgYgorI2RlZmluZSBKT0lOKGEsIGIpICAgICAgICAgICAgICAgICAgICAgIEpPSU4wKGEsIGIpCisKKyNkZWZpbmUgU3BvbmdlICAgICAgICAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZSkKKyNkZWZpbmUgU3BvbmdlSW5zdGFuY2UgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUluc3RhbmNlKQorI2RlZmluZSBTcG9uZ2VJbml0aWFsaXplICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3BvbmdlSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU3BvbmdlQWJzb3JiICAgICAgICAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUFic29yYikKKyNkZWZpbmUgU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMgICAgICAgICBKT0lOKHByZWZpeCwgX1Nwb25nZUFic29yYkxhc3RGZXdCaXRzKQorI2RlZmluZSBTcG9uZ2VTcXVlZXplICAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3BvbmdlU3F1ZWV6ZSkKKworI2RlZmluZSBTblBfc3RhdGVTaXplSW5CeXRlcyAgICAgICAgICAgIEpPSU4oU25QLCBfc3RhdGVTaXplSW5CeXRlcykKKyNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlQWxpZ25tZW50KQorI2RlZmluZSBTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICAgIEpPSU4oU25QLCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU25QX0luaXRpYWxpemUgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9BZGRCeXRlICAgICAgICAgICAgICAgICAgICAgSk9JTihTblAsIF9BZGRCeXRlKQorI2RlZmluZSBTblBfQWRkQnl0ZXMgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZXMpCisjZGVmaW5lIFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgICAgSk9JTihTblAsIF9FeHRyYWN0Qnl0ZXMpCisKK2ludCBTcG9uZ2UodW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSwgY29uc3QgdW5zaWduZWQgY2hhciAqaW5wdXQsIHNpemVfdCBpbnB1dEJ5dGVMZW4sIHVuc2lnbmVkIGNoYXIgc3VmZml4LCB1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHNpemVfdCBvdXRwdXRCeXRlTGVuKQoreworICAgIEFMSUdOKFNuUF9zdGF0ZUFsaWdubWVudCkgdW5zaWduZWQgY2hhciBzdGF0ZVtTblBfc3RhdGVTaXplSW5CeXRlc107CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjdXJJbnB1dCA9IGlucHV0OworICAgIHVuc2lnbmVkIGNoYXIgKmN1ck91dHB1dCA9IG91dHB1dDsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSByYXRlLzg7CisKKyAgICBpZiAocmF0ZStjYXBhY2l0eSAhPSBTblBfd2lkdGgpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICgocmF0ZSA8PSAwKSB8fCAocmF0ZSA+IFNuUF93aWR0aCkgfHwgKChyYXRlICUgOCkgIT0gMCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChzdWZmaXggPT0gMCkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAvKiBJbml0aWFsaXplIHRoZSBzdGF0ZSAqLworCisgICAgU25QX1N0YXRpY0luaXRpYWxpemUoKTsKKyAgICBTblBfSW5pdGlhbGl6ZShzdGF0ZSk7CisKKyAgICAvKiBGaXJzdCwgYWJzb3JiIHdob2xlIGJsb2NrcyAqLworCisjaWZkZWYgU25QX0Zhc3RMb29wX0Fic29yYgorICAgIGlmICgoKHJhdGVJbkJ5dGVzICUgKFNuUF93aWR0aC8yMDApKSA9PSAwKSAmJiAoaW5wdXRCeXRlTGVuID49IHJhdGVJbkJ5dGVzKSkgeworICAgICAgICAvKiBmYXN0IGxhbmU6IHdob2xlIGxhbmUgcmF0ZSAqLworCisgICAgICAgIHNpemVfdCBqOworICAgICAgICBqID0gU25QX0Zhc3RMb29wX0Fic29yYihzdGF0ZSwgcmF0ZUluQnl0ZXMvKFNuUF93aWR0aC8yMDApLCBjdXJJbnB1dCwgaW5wdXRCeXRlTGVuKTsKKyAgICAgICAgY3VySW5wdXQgKz0gajsKKyAgICAgICAgaW5wdXRCeXRlTGVuIC09IGo7CisgICAgfQorI2VuZGlmCisgICAgd2hpbGUoaW5wdXRCeXRlTGVuID49IChzaXplX3QpcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIiwgY3VySW5wdXQsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgY3VySW5wdXQsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICAgICBjdXJJbnB1dCArPSByYXRlSW5CeXRlczsKKyAgICAgICAgaW5wdXRCeXRlTGVuIC09IHJhdGVJbkJ5dGVzOworICAgIH0KKworICAgIC8qIFRoZW4sIGFic29yYiB3aGF0IHJlbWFpbnMgKi8KKworICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpaW5wdXRCeXRlTGVuOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5Qnl0ZXMoMSwgIkJsb2NrIHRvIGJlIGFic29yYmVkIChwYXJ0KSIsIGN1cklucHV0LCBwYXJ0aWFsQmxvY2spOworICAgICNlbmRpZgorICAgIFNuUF9BZGRCeXRlcyhzdGF0ZSwgY3VySW5wdXQsIDAsIHBhcnRpYWxCbG9jayk7CisKKyAgICAvKiBGaW5hbGx5LCBhYnNvcmIgdGhlIHN1ZmZpeCAqLworCisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhMVsxXTsKKyAgICAgICAgZGVsaW1pdGVkRGF0YTFbMF0gPSBzdWZmaXg7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKGxhc3QgZmV3IGJpdHMgKyBmaXJzdCBiaXQgb2YgcGFkZGluZykiLCBkZWxpbWl0ZWREYXRhMSwgMSk7CisgICAgfQorICAgICNlbmRpZgorICAgIC8qIExhc3QgZmV3IGJpdHMsIHdob3NlIGRlbGltaXRlciBjb2luY2lkZXMgd2l0aCBmaXJzdCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgU25QX0FkZEJ5dGUoc3RhdGUsIHN1ZmZpeCwgcGFydGlhbEJsb2NrKTsKKyAgICAvKiBJZiB0aGUgZmlyc3QgYml0IG9mIHBhZGRpbmcgaXMgYXQgcG9zaXRpb24gcmF0ZS0xLCB3ZSBuZWVkIGEgd2hvbGUgbmV3IGJsb2NrIGZvciB0aGUgc2Vjb25kIGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBpZiAoKHN1ZmZpeCA+PSAweDgwKSAmJiAocGFydGlhbEJsb2NrID09IChyYXRlSW5CeXRlcy0xKSkpCisgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlKTsKKyAgICAvKiBTZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKHN0YXRlLCAweDgwLCByYXRlSW5CeXRlcy0xKTsKKyAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGJsb2NrW1NuUF93aWR0aC84XTsKKyAgICAgICAgbWVtc2V0KGJsb2NrLCAwLCBTblBfd2lkdGgvOCk7CisgICAgICAgIGJsb2NrW3JhdGVJbkJ5dGVzLTFdID0gMHg4MDsKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJTZWNvbmQgYml0IG9mIHBhZGRpbmciLCBibG9jaywgcmF0ZUluQnl0ZXMpOworICAgIH0KKyAgICAjZW5kaWYKKyAgICBTblBfUGVybXV0ZShzdGF0ZSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIGRpc3BsYXlUZXh0KDEsICItLS0gU3dpdGNoaW5nIHRvIHNxdWVlemluZyBwaGFzZSAtLS0iKTsKKyAgICAjZW5kaWYKKworICAgIC8qIEZpcnN0LCBvdXRwdXQgd2hvbGUgYmxvY2tzICovCisKKyAgICB3aGlsZShvdXRwdXRCeXRlTGVuID4gKHNpemVfdClyYXRlSW5CeXRlcykgeworICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBjdXJPdXRwdXQsIDAsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgU25QX1Blcm11dGUoc3RhdGUpOworICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU3F1ZWV6ZWQgYmxvY2siLCBjdXJPdXRwdXQsIHJhdGVJbkJ5dGVzKTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGN1ck91dHB1dCArPSByYXRlSW5CeXRlczsKKyAgICAgICAgb3V0cHV0Qnl0ZUxlbiAtPSByYXRlSW5CeXRlczsKKyAgICB9CisKKyAgICAvKiBGaW5hbGx5LCBvdXRwdXQgd2hhdCByZW1haW5zICovCisKKyAgICBwYXJ0aWFsQmxvY2sgPSAodW5zaWduZWQgaW50KW91dHB1dEJ5dGVMZW47CisgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZSwgY3VyT3V0cHV0LCAwLCBwYXJ0aWFsQmxvY2spOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIChwYXJ0KSIsIGN1ck91dHB1dCwgcGFydGlhbEJsb2NrKTsKKyAgICAjZW5kaWYKKworICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VJbml0aWFsaXplKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgaW50IHJhdGUsIHVuc2lnbmVkIGludCBjYXBhY2l0eSkKK3sKKyAgICBpZiAocmF0ZStjYXBhY2l0eSAhPSBTblBfd2lkdGgpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICgocmF0ZSA8PSAwKSB8fCAocmF0ZSA+IFNuUF93aWR0aCkgfHwgKChyYXRlICUgOCkgIT0gMCkpCisgICAgICAgIHJldHVybiAxOworICAgIFNuUF9TdGF0aWNJbml0aWFsaXplKCk7CisgICAgU25QX0luaXRpYWxpemUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICBpbnN0YW5jZS0+cmF0ZSA9IHJhdGU7CisgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID0gMDsKKyAgICBpbnN0YW5jZS0+c3F1ZWV6aW5nID0gMDsKKworICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKK2ludCBTcG9uZ2VBYnNvcmIoU3BvbmdlSW5zdGFuY2UgKmluc3RhbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IGksIGo7CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjdXJEYXRhOworICAgIHVuc2lnbmVkIGludCByYXRlSW5CeXRlcyA9IGluc3RhbmNlLT5yYXRlLzg7CisKKyAgICBpZiAoaW5zdGFuY2UtPnNxdWVlemluZykKKyAgICAgICAgcmV0dXJuIDE7IC8qIFRvbyBsYXRlIGZvciBhZGRpdGlvbmFsIGlucHV0ICovCisKKworICAgIGkgPSAwOworICAgIGN1ckRhdGEgPSBkYXRhOworICAgIHdoaWxlKGkgPCBkYXRhQnl0ZUxlbikgeworICAgICAgICBpZiAoKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSAwKSAmJiAoZGF0YUJ5dGVMZW4gPj0gKGkgKyByYXRlSW5CeXRlcykpKSB7CisjaWZkZWYgU25QX0Zhc3RMb29wX0Fic29yYgorICAgICAgICAgICAgLyogcHJvY2Vzc2luZyBmdWxsIGJsb2NrcyBmaXJzdCAqLworCisgICAgICAgICAgICBpZiAoKHJhdGVJbkJ5dGVzICUgKFNuUF93aWR0aC8yMDApKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZmFzdCBsYW5lOiB3aG9sZSBsYW5lIHJhdGUgKi8KKworICAgICAgICAgICAgICAgIGogPSBTblBfRmFzdExvb3BfQWJzb3JiKGluc3RhbmNlLT5zdGF0ZSwgcmF0ZUluQnl0ZXMvKFNuUF93aWR0aC8yMDApLCBjdXJEYXRhLCBkYXRhQnl0ZUxlbiAtIGkpOworICAgICAgICAgICAgICAgIGkgKz0gajsKKyAgICAgICAgICAgICAgICBjdXJEYXRhICs9IGo7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGZvcihqPWRhdGFCeXRlTGVuLWk7IGo+PXJhdGVJbkJ5dGVzOyBqLT1yYXRlSW5CeXRlcykgeworICAgICAgICAgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQiLCBjdXJEYXRhLCByYXRlSW5CeXRlcyk7CisgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICAgICBTblBfQWRkQnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCAwLCByYXRlSW5CeXRlcyk7CisgICAgICAgICAgICAgICAgICAgIFNuUF9QZXJtdXRlKGluc3RhbmNlLT5zdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGN1ckRhdGErPXJhdGVJbkJ5dGVzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpID0gZGF0YUJ5dGVMZW4gLSBqOworI2lmZGVmIFNuUF9GYXN0TG9vcF9BYnNvcmIKKyAgICAgICAgICAgIH0KKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogbm9ybWFsIGxhbmU6IHVzaW5nIHRoZSBtZXNzYWdlIHF1ZXVlICovCisKKyAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9ICh1bnNpZ25lZCBpbnQpKGRhdGFCeXRlTGVuIC0gaSk7CisgICAgICAgICAgICBpZiAocGFydGlhbEJsb2NrK2luc3RhbmNlLT5ieXRlSU9JbmRleCA+IHJhdGVJbkJ5dGVzKQorICAgICAgICAgICAgICAgIHBhcnRpYWxCbG9jayA9IHJhdGVJbkJ5dGVzLWluc3RhbmNlLT5ieXRlSU9JbmRleDsKKyAgICAgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiQmxvY2sgdG8gYmUgYWJzb3JiZWQgKHBhcnQpIiwgY3VyRGF0YSwgcGFydGlhbEJsb2NrKTsKKyAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgaSArPSBwYXJ0aWFsQmxvY2s7CisKKyAgICAgICAgICAgIFNuUF9BZGRCeXRlcyhpbnN0YW5jZS0+c3RhdGUsIGN1ckRhdGEsIGluc3RhbmNlLT5ieXRlSU9JbmRleCwgcGFydGlhbEJsb2NrKTsKKyAgICAgICAgICAgIGN1ckRhdGEgKz0gcGFydGlhbEJsb2NrOworICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgICAgIGlmIChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gcmF0ZUluQnl0ZXMpIHsKKyAgICAgICAgICAgICAgICBTblBfUGVybXV0ZShpbnN0YW5jZS0+c3RhdGUpOworICAgICAgICAgICAgICAgIGluc3RhbmNlLT5ieXRlSU9JbmRleCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IFNwb25nZUFic29yYkxhc3RGZXdCaXRzKFNwb25nZUluc3RhbmNlICppbnN0YW5jZSwgdW5zaWduZWQgY2hhciBkZWxpbWl0ZWREYXRhKQoreworICAgIHVuc2lnbmVkIGludCByYXRlSW5CeXRlcyA9IGluc3RhbmNlLT5yYXRlLzg7CisKKyAgICBpZiAoZGVsaW1pdGVkRGF0YSA9PSAwKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAoaW5zdGFuY2UtPnNxdWVlemluZykKKyAgICAgICAgcmV0dXJuIDE7IC8qIFRvbyBsYXRlIGZvciBhZGRpdGlvbmFsIGlucHV0ICovCisKKworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgZGVsaW1pdGVkRGF0YTFbMV07CisgICAgICAgIGRlbGltaXRlZERhdGExWzBdID0gZGVsaW1pdGVkRGF0YTsKKyAgICAgICAgZGlzcGxheUJ5dGVzKDEsICJCbG9jayB0byBiZSBhYnNvcmJlZCAobGFzdCBmZXcgYml0cyArIGZpcnN0IGJpdCBvZiBwYWRkaW5nKSIsIGRlbGltaXRlZERhdGExLCAxKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgLyogTGFzdCBmZXcgYml0cywgd2hvc2UgZGVsaW1pdGVyIGNvaW5jaWRlcyB3aXRoIGZpcnN0IGJpdCBvZiBwYWRkaW5nICovCisKKyAgICBTblBfQWRkQnl0ZShpbnN0YW5jZS0+c3RhdGUsIGRlbGltaXRlZERhdGEsIGluc3RhbmNlLT5ieXRlSU9JbmRleCk7CisgICAgLyogSWYgdGhlIGZpcnN0IGJpdCBvZiBwYWRkaW5nIGlzIGF0IHBvc2l0aW9uIHJhdGUtMSwgd2UgbmVlZCBhIHdob2xlIG5ldyBibG9jayBmb3IgdGhlIHNlY29uZCBiaXQgb2YgcGFkZGluZyAqLworCisgICAgaWYgKChkZWxpbWl0ZWREYXRhID49IDB4ODApICYmIChpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPT0gKHJhdGVJbkJ5dGVzLTEpKSkKKyAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAvKiBTZWNvbmQgYml0IG9mIHBhZGRpbmcgKi8KKworICAgIFNuUF9BZGRCeXRlKGluc3RhbmNlLT5zdGF0ZSwgMHg4MCwgcmF0ZUluQnl0ZXMtMSk7CisgICAgI2lmZGVmIEtlY2Nha1JlZmVyZW5jZQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBibG9ja1tTblBfd2lkdGgvOF07CisgICAgICAgIG1lbXNldChibG9jaywgMCwgU25QX3dpZHRoLzgpOworICAgICAgICBibG9ja1tyYXRlSW5CeXRlcy0xXSA9IDB4ODA7CisgICAgICAgIGRpc3BsYXlCeXRlcygxLCAiU2Vjb25kIGJpdCBvZiBwYWRkaW5nIiwgYmxvY2ssIHJhdGVJbkJ5dGVzKTsKKyAgICB9CisgICAgI2VuZGlmCisgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgIGluc3RhbmNlLT5zcXVlZXppbmcgPSAxOworICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICBkaXNwbGF5VGV4dCgxLCAiLS0tIFN3aXRjaGluZyB0byBzcXVlZXppbmcgcGhhc2UgLS0tIik7CisgICAgI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworaW50IFNwb25nZVNxdWVlemUoU3BvbmdlSW5zdGFuY2UgKmluc3RhbmNlLCB1bnNpZ25lZCBjaGFyICpkYXRhLCBzaXplX3QgZGF0YUJ5dGVMZW4pCit7CisgICAgc2l6ZV90IGksIGo7CisgICAgdW5zaWduZWQgaW50IHBhcnRpYWxCbG9jazsKKyAgICB1bnNpZ25lZCBpbnQgcmF0ZUluQnl0ZXMgPSBpbnN0YW5jZS0+cmF0ZS84OworICAgIHVuc2lnbmVkIGNoYXIgKmN1ckRhdGE7CisKKyAgICBpZiAoIWluc3RhbmNlLT5zcXVlZXppbmcpCisgICAgICAgIFNwb25nZUFic29yYkxhc3RGZXdCaXRzKGluc3RhbmNlLCAweDAxKTsKKworICAgIGkgPSAwOworICAgIGN1ckRhdGEgPSBkYXRhOworICAgIHdoaWxlKGkgPCBkYXRhQnl0ZUxlbikgeworICAgICAgICBpZiAoKGluc3RhbmNlLT5ieXRlSU9JbmRleCA9PSByYXRlSW5CeXRlcykgJiYgKGRhdGFCeXRlTGVuID49IChpICsgcmF0ZUluQnl0ZXMpKSkgeworICAgICAgICAgICAgZm9yKGo9ZGF0YUJ5dGVMZW4taTsgaj49cmF0ZUluQnl0ZXM7IGotPXJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzKGluc3RhbmNlLT5zdGF0ZSwgY3VyRGF0YSwgMCwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICNpZmRlZiBLZWNjYWtSZWZlcmVuY2UKKyAgICAgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIiwgY3VyRGF0YSwgcmF0ZUluQnl0ZXMpOworICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIGN1ckRhdGErPXJhdGVJbkJ5dGVzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IGRhdGFCeXRlTGVuIC0gajsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIG5vcm1hbCBsYW5lOiB1c2luZyB0aGUgbWVzc2FnZSBxdWV1ZSAqLworCisgICAgICAgICAgICBpZiAoaW5zdGFuY2UtPmJ5dGVJT0luZGV4ID09IHJhdGVJbkJ5dGVzKSB7CisgICAgICAgICAgICAgICAgU25QX1Blcm11dGUoaW5zdGFuY2UtPnN0YXRlKTsKKyAgICAgICAgICAgICAgICBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXggPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFydGlhbEJsb2NrID0gKHVuc2lnbmVkIGludCkoZGF0YUJ5dGVMZW4gLSBpKTsKKyAgICAgICAgICAgIGlmIChwYXJ0aWFsQmxvY2sraW5zdGFuY2UtPmJ5dGVJT0luZGV4ID4gcmF0ZUluQnl0ZXMpCisgICAgICAgICAgICAgICAgcGFydGlhbEJsb2NrID0gcmF0ZUluQnl0ZXMtaW5zdGFuY2UtPmJ5dGVJT0luZGV4OworICAgICAgICAgICAgaSArPSBwYXJ0aWFsQmxvY2s7CisKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoaW5zdGFuY2UtPnN0YXRlLCBjdXJEYXRhLCBpbnN0YW5jZS0+Ynl0ZUlPSW5kZXgsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjaWZkZWYgS2VjY2FrUmVmZXJlbmNlCisgICAgICAgICAgICBkaXNwbGF5Qnl0ZXMoMSwgIlNxdWVlemVkIGJsb2NrIChwYXJ0KSIsIGN1ckRhdGEsIHBhcnRpYWxCbG9jayk7CisgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgIGN1ckRhdGEgKz0gcGFydGlhbEJsb2NrOworICAgICAgICAgICAgaW5zdGFuY2UtPmJ5dGVJT0luZGV4ICs9IHBhcnRpYWxCbG9jazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisjdW5kZWYgU3BvbmdlCisjdW5kZWYgU3BvbmdlSW5zdGFuY2UKKyN1bmRlZiBTcG9uZ2VJbml0aWFsaXplCisjdW5kZWYgU3BvbmdlQWJzb3JiCisjdW5kZWYgU3BvbmdlQWJzb3JiTGFzdEZld0JpdHMKKyN1bmRlZiBTcG9uZ2VTcXVlZXplCisjdW5kZWYgU25QX3N0YXRlU2l6ZUluQnl0ZXMKKyN1bmRlZiBTblBfc3RhdGVBbGlnbm1lbnQKKyN1bmRlZiBTblBfU3RhdGljSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9Jbml0aWFsaXplCisjdW5kZWYgU25QX0FkZEJ5dGUKKyN1bmRlZiBTblBfQWRkQnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdEJ5dGVzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMgYi9Nb2R1bGVzL19zaGEzL2tjcC9QbFNuUC1GYWxsYmFjay5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2E5MTE5YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3NoYTMva2NwL1BsU25QLUZhbGxiYWNrLmluYwpAQCAtMCwwICsxLDI1NyBAQAorLyoKK0ltcGxlbWVudGF0aW9uIGJ5IHRoZSBLZWNjYWssIEtleWFrIGFuZCBLZXRqZSBUZWFtcywgbmFtZWx5LCBHdWlkbyBCZXJ0b25pLAorSm9hbiBEYWVtZW4sIE1pY2hhw6tsIFBlZXRlcnMsIEdpbGxlcyBWYW4gQXNzY2hlIGFuZCBSb25ueSBWYW4gS2VlciwgaGVyZWJ5CitkZW5vdGVkIGFzICJ0aGUgaW1wbGVtZW50ZXIiLgorCitGb3IgbW9yZSBpbmZvcm1hdGlvbiwgZmVlZGJhY2sgb3IgcXVlc3Rpb25zLCBwbGVhc2UgcmVmZXIgdG8gb3VyIHdlYnNpdGVzOgoraHR0cDovL2tlY2Nhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXlhay5ub2VrZW9uLm9yZy8KK2h0dHA6Ly9rZXRqZS5ub2VrZW9uLm9yZy8KKworVG8gdGhlIGV4dGVudCBwb3NzaWJsZSB1bmRlciBsYXcsIHRoZSBpbXBsZW1lbnRlciBoYXMgd2FpdmVkIGFsbCBjb3B5cmlnaHQKK2FuZCByZWxhdGVkIG9yIG5laWdoYm9yaW5nIHJpZ2h0cyB0byB0aGUgc291cmNlIGNvZGUgaW4gdGhpcyBmaWxlLgoraHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvcHVibGljZG9tYWluL3plcm8vMS4wLworKi8KKworLyogZXhwZWN0IFBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgUGxTblBfdGFyZ2V0UGFyYWxsZWxpc20gKi8KKworLyogZXhwZWN0IFNuUF9zdGF0ZVNpemVJbkJ5dGVzLCBTblBfc3RhdGVBbGlnbm1lbnQgKi8KKworLyogZXhwZWN0IHByZWZpeCAqLworCisvKiBleHBlY3QgU25QXyogKi8KKworCisjZGVmaW5lIEpPSU4wKGEsIGIpICAgICAgICAgICAgICAgICAgICAgYSAjIyBiCisjZGVmaW5lIEpPSU4oYSwgYikgICAgICAgICAgICAgICAgICAgICAgSk9JTjAoYSwgYikKKworI2RlZmluZSBQbFNuUF9TdGF0aWNJbml0aWFsaXplICAgICAgICAgIEpPSU4ocHJlZml4LCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgUGxTblBfSW5pdGlhbGl6ZUFsbCAgICAgICAgICAgICBKT0lOKHByZWZpeCwgX0luaXRpYWxpemVBbGwpCisjZGVmaW5lIFBsU25QX0FkZEJ5dGUgICAgICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9BZGRCeXRlKQorI2RlZmluZSBQbFNuUF9BZGRCeXRlcyAgICAgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfQWRkQnl0ZXMpCisjZGVmaW5lIFBsU25QX0FkZExhbmVzQWxsICAgICAgICAgICAgICAgSk9JTihwcmVmaXgsIF9BZGRMYW5lc0FsbCkKKyNkZWZpbmUgUGxTblBfT3ZlcndyaXRlQnl0ZXMgICAgICAgICAgICBKT0lOKHByZWZpeCwgX092ZXJ3cml0ZUJ5dGVzKQorI2RlZmluZSBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbCAgICAgICAgIEpPSU4ocHJlZml4LCBfT3ZlcndyaXRlTGFuZXNBbGwpCisjZGVmaW5lIFBsU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMgICAgICAgSk9JTihwcmVmaXgsIF9PdmVyd3JpdGVXaXRoWmVyb2VzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0Qnl0ZXMgICAgICAgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEJ5dGVzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0TGFuZXNBbGwgICAgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdExhbmVzQWxsKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMgICAgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEFuZEFkZEJ5dGVzKQorI2RlZmluZSBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwgICAgIEpPSU4ocHJlZml4LCBfRXh0cmFjdEFuZEFkZExhbmVzQWxsKQorCisjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlU2l6ZUluQnl0ZXMpCisgICAgI2RlZmluZSBTblBfc3RhdGVBbGlnbm1lbnQgICAgICAgICAgICAgIEpPSU4oU25QLCBfc3RhdGVBbGlnbm1lbnQpCisjZWxzZQorICAgICNkZWZpbmUgU25QX3N0YXRlU2l6ZUluQnl0ZXMgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlc1NpemVJbkJ5dGVzKQorICAgICNkZWZpbmUgU25QX3N0YXRlQWxpZ25tZW50ICAgICAgICAgICAgICBKT0lOKFNuUCwgX3N0YXRlc0FsaWdubWVudCkKKyNlbmRpZgorI2RlZmluZSBQbFNuUF9mYWN0b3IgKChQbFNuUF90YXJnZXRQYXJhbGxlbGlzbSkvKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSkpCisjZGVmaW5lIFNuUF9zdGF0ZU9mZnNldCAoKChTblBfc3RhdGVTaXplSW5CeXRlcysoU25QX3N0YXRlQWxpZ25tZW50LTEpKS9TblBfc3RhdGVBbGlnbm1lbnQpKlNuUF9zdGF0ZUFsaWdubWVudCkKKyNkZWZpbmUgc3RhdGVXaXRoSW5kZXgoaSkgKCh1bnNpZ25lZCBjaGFyICopc3RhdGVzKygoaSkqU25QX3N0YXRlT2Zmc2V0KSkKKworI2RlZmluZSBTblBfU3RhdGljSW5pdGlhbGl6ZSAgICAgICAgICAgIEpPSU4oU25QLCBfU3RhdGljSW5pdGlhbGl6ZSkKKyNkZWZpbmUgU25QX0luaXRpYWxpemUgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0luaXRpYWxpemUpCisjZGVmaW5lIFNuUF9Jbml0aWFsaXplQWxsICAgICAgICAgICAgICAgSk9JTihTblAsIF9Jbml0aWFsaXplQWxsKQorI2RlZmluZSBTblBfQWRkQnl0ZSAgICAgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkQnl0ZSkKKyNkZWZpbmUgU25QX0FkZEJ5dGVzICAgICAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0FkZEJ5dGVzKQorI2RlZmluZSBTblBfQWRkTGFuZXNBbGwgICAgICAgICAgICAgICAgIEpPSU4oU25QLCBfQWRkTGFuZXNBbGwpCisjZGVmaW5lIFNuUF9PdmVyd3JpdGVCeXRlcyAgICAgICAgICAgICAgSk9JTihTblAsIF9PdmVyd3JpdGVCeXRlcykKKyNkZWZpbmUgU25QX092ZXJ3cml0ZUxhbmVzQWxsICAgICAgICAgICBKT0lOKFNuUCwgX092ZXJ3cml0ZUxhbmVzQWxsKQorI2RlZmluZSBTblBfT3ZlcndyaXRlV2l0aFplcm9lcyAgICAgICAgIEpPSU4oU25QLCBfT3ZlcndyaXRlV2l0aFplcm9lcykKKyNkZWZpbmUgU25QX0V4dHJhY3RCeXRlcyAgICAgICAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RCeXRlcykKKyNkZWZpbmUgU25QX0V4dHJhY3RMYW5lc0FsbCAgICAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RMYW5lc0FsbCkKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRCeXRlcyAgICAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RBbmRBZGRCeXRlcykKKyNkZWZpbmUgU25QX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCAgICAgICBKT0lOKFNuUCwgX0V4dHJhY3RBbmRBZGRMYW5lc0FsbCkKKwordm9pZCBQbFNuUF9TdGF0aWNJbml0aWFsaXplKCB2b2lkICkKK3sKKyAgICBTblBfU3RhdGljSW5pdGlhbGl6ZSgpOworfQorCit2b2lkIFBsU25QX0luaXRpYWxpemVBbGwodm9pZCAqc3RhdGVzKQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfSW5pdGlhbGl6ZShzdGF0ZVdpdGhJbmRleChpKSk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX0luaXRpYWxpemVBbGwoc3RhdGVXaXRoSW5kZXgoaSkpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZEJ5dGUodm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgdW5zaWduZWQgY2hhciBieXRlLCB1bnNpZ25lZCBpbnQgb2Zmc2V0KQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9BZGRCeXRlKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBieXRlLCBvZmZzZXQpOworICAgICNlbHNlCisgICAgICAgIFNuUF9BZGRCeXRlKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGJ5dGUsIG9mZnNldCk7CisgICAgI2VuZGlmCit9CisKK3ZvaWQgUGxTblBfQWRkQnl0ZXModm9pZCAqc3RhdGVzLCB1bnNpZ25lZCBpbnQgaW5zdGFuY2VJbmRleCwgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IGxlbmd0aCkKK3sKKyAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0FkZExhbmVzQWxsKHZvaWQgKnN0YXRlcywgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YSwgdW5zaWduZWQgaW50IGxhbmVDb3VudCwgdW5zaWduZWQgaW50IGxhbmVPZmZzZXQpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBmb3IoaT0wOyBpPFBsU25QX2ZhY3RvcjsgaSsrKSB7CisgICAgICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgICAgICBTblBfQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGRhdGEsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0FkZExhbmVzQWxsKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCBsYW5lQ291bnQsIGxhbmVPZmZzZXQpOworICAgICAgICAjZW5kaWYKKyAgICAgICAgZGF0YSArPSBQbFNuUF9iYXNlUGFyYWxsZWxpc20qbGFuZU9mZnNldCpTblBfbGFuZUxlbmd0aEluQnl0ZXM7CisgICAgfQorfQorCit2b2lkIFBsU25QX092ZXJ3cml0ZUJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgpLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGRhdGEsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVMYW5lc0FsbCh2b2lkICpzdGF0ZXMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCAwLCBsYW5lQ291bnQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGRhdGEgKz0gUGxTblBfYmFzZVBhcmFsbGVsaXNtKmxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzOworICAgIH0KK30KKwordm9pZCBQbFNuUF9PdmVyd3JpdGVXaXRoWmVyb2VzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGludCBieXRlQ291bnQpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGJ5dGVDb3VudCk7CisgICAgI2Vsc2UKKyAgICAgICAgU25QX092ZXJ3cml0ZVdpdGhaZXJvZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgYnl0ZUNvdW50KTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9QZXJtdXRlQWxsKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlQWxsKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2VuZGlmCisgICAgfQorfQorCisjaWYgKGRlZmluZWQoU25QX1Blcm11dGVfMTJyb3VuZHMpIHx8IGRlZmluZWQoU25QX1Blcm11dGVBbGxfMTJyb3VuZHMpKQordm9pZCBQbFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKHZvaWQgKnN0YXRlcykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlXzEycm91bmRzKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgIFNuUF9QZXJtdXRlQWxsXzEycm91bmRzKHN0YXRlV2l0aEluZGV4KGkpKTsKKyAgICAgICAgI2VuZGlmCisgICAgfQorfQorI2VuZGlmCisKK3ZvaWQgUGxTblBfRXh0cmFjdEJ5dGVzKHZvaWQgKnN0YXRlcywgdW5zaWduZWQgaW50IGluc3RhbmNlSW5kZXgsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBsZW5ndGgpCit7CisgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZVdpdGhJbmRleChpbnN0YW5jZUluZGV4KSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbHNlCisgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleC9QbFNuUF9iYXNlUGFyYWxsZWxpc20pLCBpbnN0YW5jZUluZGV4JVBsU25QX2Jhc2VQYXJhbGxlbGlzbSwgZGF0YSwgb2Zmc2V0LCBsZW5ndGgpOworICAgICNlbmRpZgorfQorCit2b2lkIFBsU25QX0V4dHJhY3RMYW5lc0FsbChjb25zdCB2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsYW5lQ291bnQsIHVuc2lnbmVkIGludCBsYW5lT2Zmc2V0KQoreworICAgIHVuc2lnbmVkIGludCBpOworCisgICAgZm9yKGk9MDsgaTxQbFNuUF9mYWN0b3I7IGkrKykgeworICAgICAgICAjaWYgKFBsU25QX2Jhc2VQYXJhbGxlbGlzbSA9PSAxKQorICAgICAgICAgICAgU25QX0V4dHJhY3RCeXRlcyhzdGF0ZVdpdGhJbmRleChpKSwgZGF0YSwgMCwgbGFuZUNvdW50KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7CisgICAgICAgICNlbHNlCisgICAgICAgICAgICBTblBfRXh0cmFjdExhbmVzQWxsKHN0YXRlV2l0aEluZGV4KGkpLCBkYXRhLCBsYW5lQ291bnQsIGxhbmVPZmZzZXQpOworICAgICAgICAjZW5kaWYKKyAgICAgICAgZGF0YSArPSBsYW5lT2Zmc2V0KlNuUF9sYW5lTGVuZ3RoSW5CeXRlcypQbFNuUF9iYXNlUGFyYWxsZWxpc207CisgICAgfQorfQorCit2b2lkIFBsU25QX0V4dHJhY3RBbmRBZGRCeXRlcyh2b2lkICpzdGF0ZXMsIHVuc2lnbmVkIGludCBpbnN0YW5jZUluZGV4LCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgbGVuZ3RoKQoreworICAgICNpZiAoUGxTblBfYmFzZVBhcmFsbGVsaXNtID09IDEpCisgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaW5zdGFuY2VJbmRleCksIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZWxzZQorICAgICAgICBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlV2l0aEluZGV4KGluc3RhbmNlSW5kZXgvUGxTblBfYmFzZVBhcmFsbGVsaXNtKSwgaW5zdGFuY2VJbmRleCVQbFNuUF9iYXNlUGFyYWxsZWxpc20sIGlucHV0LCBvdXRwdXQsIG9mZnNldCwgbGVuZ3RoKTsKKyAgICAjZW5kaWYKK30KKwordm9pZCBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwoY29uc3Qgdm9pZCAqc3RhdGVzLCBjb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCwgdW5zaWduZWQgY2hhciAqb3V0cHV0LCB1bnNpZ25lZCBpbnQgbGFuZUNvdW50LCB1bnNpZ25lZCBpbnQgbGFuZU9mZnNldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvcihpPTA7IGk8UGxTblBfZmFjdG9yOyBpKyspIHsKKyAgICAgICAgI2lmIChQbFNuUF9iYXNlUGFyYWxsZWxpc20gPT0gMSkKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMoc3RhdGVXaXRoSW5kZXgoaSksIGlucHV0LCBvdXRwdXQsIDAsIGxhbmVDb3VudCpTblBfbGFuZUxlbmd0aEluQnl0ZXMpOworICAgICAgICAjZWxzZQorICAgICAgICAgICAgU25QX0V4dHJhY3RBbmRBZGRMYW5lc0FsbChzdGF0ZVdpdGhJbmRleChpKSwgaW5wdXQsIG91dHB1dCwgbGFuZUNvdW50LCBsYW5lT2Zmc2V0KTsKKyAgICAgICAgI2VuZGlmCisgICAgICAgIGlucHV0ICs9IGxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKlBsU25QX2Jhc2VQYXJhbGxlbGlzbTsKKyAgICAgICAgb3V0cHV0ICs9IGxhbmVPZmZzZXQqU25QX2xhbmVMZW5ndGhJbkJ5dGVzKlBsU25QX2Jhc2VQYXJhbGxlbGlzbTsKKyAgICB9Cit9CisKKyN1bmRlZiBQbFNuUF9mYWN0b3IKKyN1bmRlZiBTblBfc3RhdGVPZmZzZXQKKyN1bmRlZiBzdGF0ZVdpdGhJbmRleAorI3VuZGVmIEpPSU4wCisjdW5kZWYgSk9JTgorI3VuZGVmIFBsU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBQbFNuUF9Jbml0aWFsaXplQWxsCisjdW5kZWYgUGxTblBfQWRkQnl0ZQorI3VuZGVmIFBsU25QX0FkZEJ5dGVzCisjdW5kZWYgUGxTblBfQWRkTGFuZXNBbGwKKyN1bmRlZiBQbFNuUF9PdmVyd3JpdGVCeXRlcworI3VuZGVmIFBsU25QX092ZXJ3cml0ZUxhbmVzQWxsCisjdW5kZWYgUGxTblBfT3ZlcndyaXRlV2l0aFplcm9lcworI3VuZGVmIFBsU25QX1Blcm11dGVBbGwKKyN1bmRlZiBQbFNuUF9FeHRyYWN0Qnl0ZXMKKyN1bmRlZiBQbFNuUF9FeHRyYWN0TGFuZXNBbGwKKyN1bmRlZiBQbFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXMKKyN1bmRlZiBQbFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwKKyN1bmRlZiBTblBfc3RhdGVBbGlnbm1lbnQKKyN1bmRlZiBTblBfc3RhdGVTaXplSW5CeXRlcworI3VuZGVmIFBsU25QX2ZhY3RvcgorI3VuZGVmIFNuUF9zdGF0ZU9mZnNldAorI3VuZGVmIHN0YXRlV2l0aEluZGV4CisjdW5kZWYgU25QX1N0YXRpY0luaXRpYWxpemUKKyN1bmRlZiBTblBfSW5pdGlhbGl6ZQorI3VuZGVmIFNuUF9Jbml0aWFsaXplQWxsCisjdW5kZWYgU25QX0FkZEJ5dGUKKyN1bmRlZiBTblBfQWRkQnl0ZXMKKyN1bmRlZiBTblBfQWRkTGFuZXNBbGwKKyN1bmRlZiBTblBfT3ZlcndyaXRlQnl0ZXMKKyN1bmRlZiBTblBfT3ZlcndyaXRlV2l0aFplcm9lcworI3VuZGVmIFNuUF9PdmVyd3JpdGVMYW5lc0FsbAorI3VuZGVmIFNuUF9FeHRyYWN0Qnl0ZXMKKyN1bmRlZiBTblBfRXh0cmFjdExhbmVzQWxsCisjdW5kZWYgU25QX0V4dHJhY3RBbmRBZGRCeXRlcworI3VuZGVmIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXNBbGwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NoYTMva2NwL1NuUC1SZWxhbmVkLmggYi9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NmU2MzUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL2tjcC9TblAtUmVsYW5lZC5oCkBAIC0wLDAgKzEsMTM0IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9TblBfUmVsYW5lZF9oXworI2RlZmluZSBfU25QX1JlbGFuZWRfaF8KKworI2RlZmluZSBTblBfQWRkQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBTblBfQWRkTGFuZXMsIFNuUF9BZGRCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9BZGRMYW5lcyhzdGF0ZSwgZGF0YSwgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICAgICAgU25QX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX0FkZEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfT3ZlcndyaXRlQnl0ZXMoc3RhdGUsIGRhdGEsIG9mZnNldCwgbGVuZ3RoLCBTblBfT3ZlcndyaXRlTGFuZXMsIFNuUF9PdmVyd3JpdGVCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9PdmVyd3JpdGVMYW5lcyhzdGF0ZSwgZGF0YSwgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzKTsgXAorICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHN0YXRlLCBcCisgICAgICAgICAgICAgICAgKGxlbmd0aCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgKGRhdGEpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJEYXRhID0gKGRhdGEpOyBcCisgICAgICAgICAgICB3aGlsZShfc2l6ZUxlZnQgPiAwKSB7IFwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2J5dGVzSW5MYW5lID0gU25QX2xhbmVMZW5ndGhJbkJ5dGVzIC0gX29mZnNldEluTGFuZTsgXAorICAgICAgICAgICAgICAgIGlmIChfYnl0ZXNJbkxhbmUgPiBfc2l6ZUxlZnQpIFwKKyAgICAgICAgICAgICAgICAgICAgX2J5dGVzSW5MYW5lID0gX3NpemVMZWZ0OyBcCisgICAgICAgICAgICAgICAgU25QX092ZXJ3cml0ZUJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfRXh0cmFjdEJ5dGVzKHN0YXRlLCBkYXRhLCBvZmZzZXQsIGxlbmd0aCwgU25QX0V4dHJhY3RMYW5lcywgU25QX0V4dHJhY3RCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0TGFuZXMoc3RhdGUsIGRhdGEsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0Qnl0ZXNJbkxhbmUoc3RhdGUsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAoZGF0YSkrKChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcykqU25QX2xhbmVMZW5ndGhJbkJ5dGVzLCBcCisgICAgICAgICAgICAgICAgMCwgXAorICAgICAgICAgICAgICAgIChsZW5ndGgpJVNuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGVsc2UgeyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX3NpemVMZWZ0ID0gKGxlbmd0aCk7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBfbGFuZVBvc2l0aW9uID0gKG9mZnNldCkvU25QX2xhbmVMZW5ndGhJbkJ5dGVzOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX29mZnNldEluTGFuZSA9IChvZmZzZXQpJVNuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqX2N1ckRhdGEgPSAoZGF0YSk7IFwKKyAgICAgICAgICAgIHdoaWxlKF9zaXplTGVmdCA+IDApIHsgXAorICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBfYnl0ZXNJbkxhbmUgPSBTblBfbGFuZUxlbmd0aEluQnl0ZXMgLSBfb2Zmc2V0SW5MYW5lOyBcCisgICAgICAgICAgICAgICAgaWYgKF9ieXRlc0luTGFuZSA+IF9zaXplTGVmdCkgXAorICAgICAgICAgICAgICAgICAgICBfYnl0ZXNJbkxhbmUgPSBfc2l6ZUxlZnQ7IFwKKyAgICAgICAgICAgICAgICBTblBfRXh0cmFjdEJ5dGVzSW5MYW5lKHN0YXRlLCBfbGFuZVBvc2l0aW9uLCBfY3VyRGF0YSwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJEYXRhICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2RlZmluZSBTblBfRXh0cmFjdEFuZEFkZEJ5dGVzKHN0YXRlLCBpbnB1dCwgb3V0cHV0LCBvZmZzZXQsIGxlbmd0aCwgU25QX0V4dHJhY3RBbmRBZGRMYW5lcywgU25QX0V4dHJhY3RBbmRBZGRCeXRlc0luTGFuZSwgU25QX2xhbmVMZW5ndGhJbkJ5dGVzKSBcCisgICAgeyBcCisgICAgICAgIGlmICgob2Zmc2V0KSA9PSAwKSB7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkTGFuZXMoc3RhdGUsIGlucHV0LCBvdXRwdXQsIChsZW5ndGgpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlcyk7IFwKKyAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoc3RhdGUsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMsIFwKKyAgICAgICAgICAgICAgICAoaW5wdXQpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIChvdXRwdXQpKygobGVuZ3RoKS9TblBfbGFuZUxlbmd0aEluQnl0ZXMpKlNuUF9sYW5lTGVuZ3RoSW5CeXRlcywgXAorICAgICAgICAgICAgICAgIDAsIFwKKyAgICAgICAgICAgICAgICAobGVuZ3RoKSVTblBfbGFuZUxlbmd0aEluQnl0ZXMpOyBcCisgICAgICAgIH0gXAorICAgICAgICBlbHNlIHsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9zaXplTGVmdCA9IChsZW5ndGgpOyBcCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgX2xhbmVQb3NpdGlvbiA9IChvZmZzZXQpL1NuUF9sYW5lTGVuZ3RoSW5CeXRlczsgXAorICAgICAgICAgICAgdW5zaWduZWQgaW50IF9vZmZzZXRJbkxhbmUgPSAob2Zmc2V0KSVTblBfbGFuZUxlbmd0aEluQnl0ZXM7IFwKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9jdXJJbnB1dCA9IChpbnB1dCk7IFwKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKl9jdXJPdXRwdXQgPSAob3V0cHV0KTsgXAorICAgICAgICAgICAgd2hpbGUoX3NpemVMZWZ0ID4gMCkgeyBcCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IF9ieXRlc0luTGFuZSA9IFNuUF9sYW5lTGVuZ3RoSW5CeXRlcyAtIF9vZmZzZXRJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBpZiAoX2J5dGVzSW5MYW5lID4gX3NpemVMZWZ0KSBcCisgICAgICAgICAgICAgICAgICAgIF9ieXRlc0luTGFuZSA9IF9zaXplTGVmdDsgXAorICAgICAgICAgICAgICAgIFNuUF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUoc3RhdGUsIF9sYW5lUG9zaXRpb24sIF9jdXJJbnB1dCwgX2N1ck91dHB1dCwgX29mZnNldEluTGFuZSwgX2J5dGVzSW5MYW5lKTsgXAorICAgICAgICAgICAgICAgIF9zaXplTGVmdCAtPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfbGFuZVBvc2l0aW9uKys7IFwKKyAgICAgICAgICAgICAgICBfb2Zmc2V0SW5MYW5lID0gMDsgXAorICAgICAgICAgICAgICAgIF9jdXJJbnB1dCArPSBfYnl0ZXNJbkxhbmU7IFwKKyAgICAgICAgICAgICAgICBfY3VyT3V0cHV0ICs9IF9ieXRlc0luTGFuZTsgXAorICAgICAgICAgICAgfSBcCisgICAgICAgIH0gXAorICAgIH0KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL2tjcC9hbGlnbi5oIGIvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjUwZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fc2hhMy9rY3AvYWxpZ24uaApAQCAtMCwwICsxLDM1IEBACisvKgorSW1wbGVtZW50YXRpb24gYnkgdGhlIEtlY2NhaywgS2V5YWsgYW5kIEtldGplIFRlYW1zLCBuYW1lbHksIEd1aWRvIEJlcnRvbmksCitKb2FuIERhZW1lbiwgTWljaGHDq2wgUGVldGVycywgR2lsbGVzIFZhbiBBc3NjaGUgYW5kIFJvbm55IFZhbiBLZWVyLCBoZXJlYnkKK2Rlbm90ZWQgYXMgInRoZSBpbXBsZW1lbnRlciIuCisKK0ZvciBtb3JlIGluZm9ybWF0aW9uLCBmZWVkYmFjayBvciBxdWVzdGlvbnMsIHBsZWFzZSByZWZlciB0byBvdXIgd2Vic2l0ZXM6CitodHRwOi8va2VjY2FrLm5vZWtlb24ub3JnLworaHR0cDovL2tleWFrLm5vZWtlb24ub3JnLworaHR0cDovL2tldGplLm5vZWtlb24ub3JnLworCitUbyB0aGUgZXh0ZW50IHBvc3NpYmxlIHVuZGVyIGxhdywgdGhlIGltcGxlbWVudGVyIGhhcyB3YWl2ZWQgYWxsIGNvcHlyaWdodAorYW5kIHJlbGF0ZWQgb3IgbmVpZ2hib3JpbmcgcmlnaHRzIHRvIHRoZSBzb3VyY2UgY29kZSBpbiB0aGlzIGZpbGUuCitodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9wdWJsaWNkb21haW4vemVyby8xLjAvCisqLworCisjaWZuZGVmIF9hbGlnbl9oXworI2RlZmluZSBfYWxpZ25faF8KKworLyogb24gTWFjIE9TLVggYW5kIHBvc3NpYmx5IG90aGVycywgQUxJR04oeCkgaXMgZGVmaW5lZCBpbiBwYXJhbS5oLCBhbmQgLVdlcnJvciBjaG9rZXMgb24gdGhlIHJlZGVmLiAqLworCisjaWZkZWYgQUxJR04KKyN1bmRlZiBBTElHTgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorI2RlZmluZSBBTElHTih4KSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCh4KSkpCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI2RlZmluZSBBTElHTih4KSBfX2RlY2xzcGVjKGFsaWduKHgpKQorI2VsaWYgZGVmaW5lZChfX0FSTUNDX1ZFUlNJT04pCisjZGVmaW5lIEFMSUdOKHgpIF9fYWxpZ24oeCkKKyNlbHNlCisjZGVmaW5lIEFMSUdOKHgpCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYyBiL01vZHVsZXMvX3NoYTMvc2hhM21vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYWFhMWYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zaGEzL3NoYTNtb2R1bGUuYwpAQCAtMCwwICsxLDc1NyBAQAorLyogU0hBMyBtb2R1bGUKKyAqCisgKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgdG8gdGhlIFNIQTMgYWxnb3JpdGhtCisgKgorICogU2VlIGJlbG93IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgY29kZSB0aGlzIG1vZHVsZSB3YXMKKyAqIGJhc2VkIHVwb24uIEFkZGl0aW9uYWwgd29yayBwZXJmb3JtZWQgYnk6CisgKgorICogIEFuZHJldyBLdWNobGluZyAoYW1rQGFtay5jYSkKKyAqICBHcmVnIFN0ZWluIChnc3RlaW5AbHlyYS5vcmcpCisgKiAgVHJldm9yIFBlcnJpbiAodHJldnBAdHJldnAubmV0KQorICogIEdyZWdvcnkgUC4gU21pdGggKGdyZWdAa3J5cHRvLm9yZykKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNiAgQ2hyaXN0aWFuIEhlaW1lcyAoY2hyaXN0aWFuQHB5dGhvbi5vcmcpCisgKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCisgKgorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJweXN0cmhleC5oIgorI2luY2x1ZGUgIi4uL2hhc2hsaWIuaCIKKworLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICBTSEEtMyAoS2VjY2FrKSBhbmQgU0hBS0UKKyAqCisgKiBUaGUgY29kZSBpcyBiYXNlZCBvbiBLZWNjYWtDb2RlUGFja2FnZSBmcm9tIDIwMTYtMDQtMjMKKyAqIGNvbW1pdCA2NDdmOTMwNzlhZmM0YWRhM2QyMzczNzQ3N2E2ZTUyNTExY2E0MWZkCisgKgorICogVGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpcyBhbHRlcmVkIGluIHRoaXMgcG9pbnRzOgorICogIC0gQysrIGNvbW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gQU5TSSBDIGNvbW1lbnRzLgorICogIC0gYWxsIGZ1bmN0aW9uIG5hbWVzIGFyZSBtYW5nbGVkCisgKiAgLSB0eXBlZGVmIGZvciBVSU5UNjQgaXMgY29tbWVudGVkIG91dC4KKyAqICAtIGJyZ19lbmRpYW4uaCBpcyByZW1vdmVkCisgKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIF9fc3BhcmMKKyAgLyogb3B0NjQgdXNlcyB1bi1hbGlnbmVkIG1lbW9yeSBhY2Nlc3MgdGhhdCBjYXVzZXMgYSBCVVMgZXJyb3Igd2l0aCBtc2cKKyAgICogJ2ludmFsaWQgYWRkcmVzcyBhbGlnbm1lbnQnIG9uIFNQQVJDLiAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VsaWYgUFlfQklHX0VORElBTgorICAvKiBvcHQ2NCBpcyBub3QgeWV0IHN1cHBvcnRlZCBvbiBiaWcgZW5kaWFuIHBsYXRmb3JtcyAqLworICAjZGVmaW5lIEtlY2Nha09wdCAzMgorI2VsaWYgU0laRU9GX1ZPSURfUCA9PSA4ICYmIGRlZmluZWQoUFlfVUlOVDY0X1QpCisgIC8qIG9wdDY0IHdvcmtzIG9ubHkgb24gbGl0dGxlLWVuZGlhbiA2NGJpdCBwbGF0Zm9ybXMgd2l0aCB1bnNpZ25lZCBpbnQ2NCAqLworICAjZGVmaW5lIEtlY2Nha09wdCA2NAorI2Vsc2UKKyAgLyogb3B0MzIgaXMgdXNlZCBmb3IgdGhlIHJlbWFpbmluZyAzMiBhbmQgNjRiaXQgcGxhdGZvcm1zICovCisgICNkZWZpbmUgS2VjY2FrT3B0IDMyCisjZW5kaWYKKworI2lmIEtlY2Nha09wdCA9PSA2NCAmJiBkZWZpbmVkKFBZX1VJTlQ2NF9UKQorICAvKiA2NGJpdCBwbGF0Zm9ybXMgd2l0aCB1bnNpZ25lZCBpbnQ2NCAqLworICB0eXBlZGVmIFBZX1VJTlQ2NF9UIFVJTlQ2NDsKKyAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVJTlQ4OworI2VuZGlmCisKKy8qIHJlcGxhY2VtZW50IGZvciBicmdfZW5kaWFuLmggKi8KKyNkZWZpbmUgSVNfTElUVExFX0VORElBTiAxMjM0CisjZGVmaW5lIElTX0JJR19FTkRJQU4gNDMyMQorI2lmIFBZX0xJVFRMRV9FTkRJQU4KKyNkZWZpbmUgUExBVEZPUk1fQllURV9PUkRFUiBJU19MSVRUTEVfRU5ESUFOCisjZW5kaWYKKyNpZiBQWV9CSUdfRU5ESUFOCisjZGVmaW5lIFBMQVRGT1JNX0JZVEVfT1JERVIgSVNfQklHX0VORElBTgorI2VuZGlmCisKKy8qIG1hbmdsZSBuYW1lcyAqLworI2RlZmluZSBLZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIgX1B5U0hBM19LZWNjYWtGMTYwMF9GYXN0TG9vcF9BYnNvcmIKKyNkZWZpbmUgS2VjY2FrX0hhc2hGaW5hbCBfUHlTSEEzX0tlY2Nha19IYXNoRmluYWwKKyNkZWZpbmUgS2VjY2FrX0hhc2hJbml0aWFsaXplIF9QeVNIQTNfS2VjY2FrX0hhc2hJbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha19IYXNoU3F1ZWV6ZSBfUHlTSEEzX0tlY2Nha19IYXNoU3F1ZWV6ZQorI2RlZmluZSBLZWNjYWtfSGFzaFVwZGF0ZSBfUHlTSEEzX0tlY2Nha19IYXNoVXBkYXRlCisjZGVmaW5lIEtlY2Nha1AxNjAwX0FkZEJ5dGVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfQWRkQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9BZGRCeXRlc0luTGFuZQorI2RlZmluZSBLZWNjYWtQMTYwMF9BZGRMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RBbmRBZGRCeXRlcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0QW5kQWRkQnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdEFuZEFkZExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcyBfUHlTSEEzX0tlY2Nha1AxNjAwX0V4dHJhY3RCeXRlcworI2RlZmluZSBLZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9FeHRyYWN0Qnl0ZXNJbkxhbmUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfRXh0cmFjdExhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX0luaXRpYWxpemUgX1B5U0hBM19LZWNjYWtQMTYwMF9Jbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZUJ5dGVzIF9QeVNIQTNfS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXMKKyNkZWZpbmUgS2VjY2FrUDE2MDBfT3ZlcndyaXRlQnl0ZXNJbkxhbmUgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVCeXRlc0luTGFuZQorI2RlZmluZSBLZWNjYWtQMTYwMF9PdmVyd3JpdGVMYW5lcyBfUHlTSEEzX0tlY2Nha1AxNjAwX092ZXJ3cml0ZUxhbmVzCisjZGVmaW5lIEtlY2Nha1AxNjAwX092ZXJ3cml0ZVdpdGhaZXJvZXMgX1B5U0hBM19LZWNjYWtQMTYwMF9PdmVyd3JpdGVXaXRoWmVyb2VzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfMTJyb3VuZHMgX1B5U0hBM19LZWNjYWtQMTYwMF9QZXJtdXRlXzEycm91bmRzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1Blcm11dGVfMjRyb3VuZHMgX1B5U0hBM19LZWNjYWtQMTYwMF9QZXJtdXRlXzI0cm91bmRzCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2UgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmIgX1B5U0hBM19LZWNjYWtXaWR0aDE2MDBfU3BvbmdlQWJzb3JiCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cyBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VBYnNvcmJMYXN0RmV3Qml0cworI2RlZmluZSBLZWNjYWtXaWR0aDE2MDBfU3BvbmdlSW5pdGlhbGl6ZSBfUHlTSEEzX0tlY2Nha1dpZHRoMTYwMF9TcG9uZ2VJbml0aWFsaXplCisjZGVmaW5lIEtlY2Nha1dpZHRoMTYwMF9TcG9uZ2VTcXVlZXplIF9QeVNIQTNfS2VjY2FrV2lkdGgxNjAwX1Nwb25nZVNxdWVlemUKKyNpZiBLZWNjYWtPcHQgPT0gMzIKKyNkZWZpbmUgS2VjY2FrUDE2MDBfQWRkQnl0ZSBfUHlTSEEzX0tlY2Nha1AxNjAwX0FkZEJ5dGUKKyNkZWZpbmUgS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzIF9QeVNIQTNfS2VjY2FrUDE2MDBfUGVybXV0ZV9Ocm91bmRzCisjZGVmaW5lIEtlY2Nha1AxNjAwX1NldEJ5dGVzSW5MYW5lVG9aZXJvIF9QeVNIQTNfS2VjY2FrUDE2MDBfU2V0Qnl0ZXNJbkxhbmVUb1plcm8KKyNlbmRpZgorCisvKiB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIEtlY2Nha1AxNjAwICovCisjZGVmaW5lIEtlY2Nha1AyMDBfZXhjbHVkZWQgMQorI2RlZmluZSBLZWNjYWtQNDAwX2V4Y2x1ZGVkIDEKKyNkZWZpbmUgS2VjY2FrUDgwMF9leGNsdWRlZCAxCisKKy8qIGlubGluZSBhbGwgS2VjY2FrIGRlcGVuZGVuY2llcyAqLworI2luY2x1ZGUgImtjcC9LZWNjYWtIYXNoLmgiCisjaW5jbHVkZSAia2NwL0tlY2Nha1Nwb25nZS5oIgorI2luY2x1ZGUgImtjcC9LZWNjYWtIYXNoLmMiCisjaW5jbHVkZSAia2NwL0tlY2Nha1Nwb25nZS5jIgorI2lmIEtlY2Nha09wdCA9PSA2NAorICAjaW5jbHVkZSAia2NwL0tlY2Nha1AtMTYwMC1vcHQ2NC5jIgorI2VsaWYgS2VjY2FrT3B0ID09IDMyCisgICNpbmNsdWRlICJrY3AvS2VjY2FrUC0xNjAwLWlucGxhY2UzMkJJLmMiCisjZW5kaWYKKworI2RlZmluZSBTSEEzX01BWF9ESUdFU1RTSVpFIDY0IC8qIDY0IEJ5dGVzICg1MTIgQml0cykgZm9yIDIyNCB0byA1MTIgKi8KKyNkZWZpbmUgU0hBM19MQU5FU0laRSAoMjAgKiA4KSAvKiBFeHRyYWN0TGFuZSBuZWVkcyBtYXggdWludDY0X3RbMjBdIGV4dHJhLiAqLworI2RlZmluZSBTSEEzX3N0YXRlIEtlY2Nha19IYXNoSW5zdGFuY2UKKyNkZWZpbmUgU0hBM19pbml0IEtlY2Nha19IYXNoSW5pdGlhbGl6ZQorI2RlZmluZSBTSEEzX3Byb2Nlc3MgS2VjY2FrX0hhc2hVcGRhdGUKKyNkZWZpbmUgU0hBM19kb25lIEtlY2Nha19IYXNoRmluYWwKKyNkZWZpbmUgU0hBM19zcXVlZXplIEtlY2Nha19IYXNoU3F1ZWV6ZQorI2RlZmluZSBTSEEzX2NvcHlzdGF0ZShkZXN0LCBzcmMpIG1lbWNweSgmKGRlc3QpLCAmKHNyYyksIHNpemVvZihTSEEzX3N0YXRlKSkKKworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3NoYTMKK2NsYXNzIF9zaGEzLnNoYTNfMjI0ICJTSEEzb2JqZWN0ICoiICImU0hBM18yMjR0eXAiCitjbGFzcyBfc2hhMy5zaGEzXzI1NiAiU0hBM29iamVjdCAqIiAiJlNIQTNfMjU2dHlwIgorY2xhc3MgX3NoYTMuc2hhM18zODQgIlNIQTNvYmplY3QgKiIgIiZTSEEzXzM4NHR5cCIKK2NsYXNzIF9zaGEzLnNoYTNfNTEyICJTSEEzb2JqZWN0ICoiICImU0hBM181MTJ0eXAiCitjbGFzcyBfc2hhMy5zaGFrZV8xMjggIlNIQTNvYmplY3QgKiIgIiZTSEFLRTEyOHR5cGUiCitjbGFzcyBfc2hhMy5zaGFrZV8yNTYgIlNIQTNvYmplY3QgKiIgIiZTSEFLRTI1NnR5cGUiCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD1iOGE1MzY4MGYzNzAyODVhXSovCisKKy8qIFRoZSBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgU0hBMyBpbmZvICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgU0hBM19zdGF0ZSBoYXNoX3N0YXRlOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gU0hBM29iamVjdDsKKworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzIyNHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTNfMjU2dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBM18zODR0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEEzXzUxMnR5cGU7CisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzIyNHR5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IEtlY2Nha18yNTZ0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBLZWNjYWtfMzg0dHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgS2VjY2FrXzUxMnR5cGU7CisjZW5kaWYKK3N0YXRpYyBQeVR5cGVPYmplY3QgU0hBS0UxMjh0eXBlOworc3RhdGljIFB5VHlwZU9iamVjdCBTSEFLRTI1NnR5cGU7CisKKyNpbmNsdWRlICJjbGluaWMvc2hhM21vZHVsZS5jLmgiCisKK3N0YXRpYyBTSEEzb2JqZWN0ICoKK25ld1NIQTNvYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlKQoreworICAgIFNIQTNvYmplY3QgKm5ld29iajsKKyAgICBuZXdvYmogPSAoU0hBM29iamVjdCAqKVB5T2JqZWN0X05ldyhTSEEzb2JqZWN0LCB0eXBlKTsKKyAgICBpZiAobmV3b2JqID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgbmV3b2JqLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiBuZXdvYmo7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorQGNsYXNzbWV0aG9kCitfc2hhMy5zaGEzXzIyNC5fX25ld19fIGFzIHB5X3NoYTNfbmV3CisgICAgc3RyaW5nIGFzIGRhdGE6IG9iamVjdCA9IE5VTEwKKworUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorcHlfc2hhM19uZXdfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpkYXRhKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThkNWMzNDI3OWU2OWJmMDkgaW5wdXQ9ZDdjNTgyYjk1MGE4NThiNl0qLworeworICAgIFNIQTNvYmplY3QgKnNlbGYgPSBOVUxMOworICAgIFB5X2J1ZmZlciBidWYgPSB7TlVMTCwgTlVMTH07CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICBzZWxmID0gbmV3U0hBM29iamVjdCh0eXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKHR5cGUgPT0gJlNIQTNfMjI0dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM18yMjQoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18yNTZ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZV9TSEEzXzI1Nigmc2VsZi0+aGFzaF9zdGF0ZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzM4NHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQTNfMzg0KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfNTEydHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBM181MTIoJnNlbGYtPmhhc2hfc3RhdGUpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjI0dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemUoJnNlbGYtPmhhc2hfc3RhdGUsIDExNTIsIDQ0OCwgMjI0LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18yNTZ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgMTA4OCwgNTEyLCAyNTYsIDB4MDEpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzM4NHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplKCZzZWxmLT5oYXNoX3N0YXRlLCA4MzIsIDc2OCwgMzg0LCAweDAxKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha181MTJ0eXBlKSB7CisgICAgICAgIHJlcyA9IEtlY2Nha19IYXNoSW5pdGlhbGl6ZSgmc2VsZi0+aGFzaF9zdGF0ZSwgNTc2LCAxMDI0LCA1MTIsIDB4MDEpOworI2VuZGlmCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTEyOHR5cGUpIHsKKyAgICAgICAgcmVzID0gS2VjY2FrX0hhc2hJbml0aWFsaXplX1NIQUtFMTI4KCZzZWxmLT5oYXNoX3N0YXRlKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQUtFMjU2dHlwZSkgeworICAgICAgICByZXMgPSBLZWNjYWtfSGFzaEluaXRpYWxpemVfU0hBS0UyNTYoJnNlbGYtPmhhc2hfc3RhdGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChkYXRhKSB7CisgICAgICAgIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihkYXRhLCAmYnVmLCBnb3RvIGVycm9yKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgICAgICBpZiAoYnVmLmxlbiA+PSBIQVNITElCX0dJTF9NSU5TSVpFKSB7CisgICAgICAgICAgICAvKiBpbnZhcmlhbnQ6IE5ldyBvYmplY3RzIGNhbid0IGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGNvZGUgeWV0LAorICAgICAgICAgICAgICogdGh1cyBpdCdzIHNhZmUgdG8gcmVsZWFzZSB0aGUgR0lMIHdpdGhvdXQgbG9ja2luZyB0aGUgb2JqZWN0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisjZW5kaWYKKyAgICAgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvciBpbiBTSEEzIFVwZGF0ZSgpIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisKKyAgZXJyb3I6CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgIH0KKyAgICBpZiAoZGF0YSAmJiBidWYub2JqKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCisKKy8qIEludGVybmFsIG1ldGhvZHMgZm9yIGEgaGFzaCBvYmplY3QgKi8KKworc3RhdGljIHZvaWQKK1NIQTNfZGVhbGxvYyhTSEEzb2JqZWN0ICpzZWxmKQoreworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2spIHsKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIH0KKyNlbmRpZgorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworCisvKiBFeHRlcm5hbCBtZXRob2RzIGZvciBhIGhhc2ggb2JqZWN0ICovCisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQuY29weQorCitSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIG9iamVjdC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYTNfMjI0X2NvcHlfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZjNTM3NDExZWNkY2RhNGMgaW5wdXQ9OTNhNDRhYWViZWE1MWJhOF0qLworeworICAgIFNIQTNvYmplY3QgKm5ld29iajsKKworICAgIGlmICgobmV3b2JqID0gbmV3U0hBM29iamVjdChQeV9UWVBFKHNlbGYpKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgRU5URVJfSEFTSExJQihzZWxmKTsKKyAgICBTSEEzX2NvcHlzdGF0ZShuZXdvYmotPmhhc2hfc3RhdGUsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5ld29iajsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitfc2hhMy5zaGEzXzIyNC5kaWdlc3QKKworUmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBzdHJpbmcgb2YgYmluYXJ5IGRhdGEuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9kaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZkNTMxODQyZTIwYjJkNWIgaW5wdXQ9YTU4MDc5MTdkMjE5YjMwZV0qLworeworICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFXTsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBkaWdlc3QpOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBGaW5hbCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK19zaGEzLnNoYTNfMjI0LmhleGRpZ2VzdAorCitSZXR1cm4gdGhlIGRpZ2VzdCB2YWx1ZSBhcyBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBkaWdpdHMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTc1YWQwMzI1NzkwNjkxOGQgaW5wdXQ9MmQ5MWJiNmUwZDExNGVlM10qLworeworICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W1NIQTNfTUFYX0RJR0VTVFNJWkUgKyBTSEEzX0xBTkVTSVpFXTsKKyAgICBTSEEzX3N0YXRlIHRlbXA7CisgICAgSGFzaFJldHVybiByZXM7CisKKyAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBkaWdlc3QpOworICAgIGlmIChyZXMgIT0gU1VDQ0VTUykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBGaW5hbCgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5X3N0cmhleCgoY29uc3QgY2hhciAqKWRpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5oYXNoX3N0YXRlLmZpeGVkT3V0cHV0TGVuZ3RoIC8gOCk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hhM18yMjQudXBkYXRlCisKKyAgICBvYmo6IG9iamVjdAorICAgIC8KKworVXBkYXRlIHRoaXMgaGFzaCBvYmplY3QncyBzdGF0ZSB3aXRoIHRoZSBwcm92aWRlZCBzdHJpbmcuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc2hhM19zaGEzXzIyNF91cGRhdGUoU0hBM29iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNjcyMWQ1NWI0ODNlMGFmIGlucHV0PWJlNDRiZjBkMWMyNzk3OTFdKi8KK3sKKyAgICBQeV9idWZmZXIgYnVmOworICAgIEhhc2hSZXR1cm4gcmVzOworCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosICZidWYpOworCisgICAgLyogYWRkIG5ldyBkYXRhLCB0aGUgZnVuY3Rpb24gdGFrZXMgdGhlIGxlbmd0aCBpbiBiaXRzIG5vdCBieXRlcyAqLworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCAmJiBidWYubGVuID49IEhBU0hMSUJfR0lMX01JTlNJWkUpIHsKKyAgICAgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICB9CisgICAgLyogT25jZSBhIGxvY2sgZXhpc3RzIGFsbCBjb2RlIHBhdGhzIG11c3QgYmUgc3luY2hyb25pemVkLiBXZSBoYXZlIHRvCisgICAgICogcmVsZWFzZSB0aGUgR0lMIGV2ZW4gZm9yIHNtYWxsIGJ1ZmZlcnMgYXMgYWNxdWlyaW5nIHRoZSBsb2NrIG1heSB0YWtlCisgICAgICogYW4gdW5saW1pdGVkIGFtb3VudCBvZiB0aW1lIHdoZW4gYW5vdGhlciB0aHJlYWQgdXBkYXRlcyB0aGlzIG9iamVjdAorICAgICAqIHdpdGggbG90cyBvZiBkYXRhLiAqLworICAgIGlmIChzZWxmLT5sb2NrKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPmxvY2ssIDEpOworICAgICAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2spOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzID0gU0hBM19wcm9jZXNzKCZzZWxmLT5oYXNoX3N0YXRlLCBidWYuYnVmLCBidWYubGVuICogOCk7CisgICAgfQorI2Vsc2UKKyAgICByZXMgPSBTSEEzX3Byb2Nlc3MoJnNlbGYtPmhhc2hfc3RhdGUsIGJ1Zi5idWYsIGJ1Zi5sZW4gKiA4KTsKKyNlbmRpZgorCisgICAgaWYgKHJlcyAhPSBTVUNDRVNTKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3IgaW4gU0hBMyBVcGRhdGUoKSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgU0hBM19tZXRob2RzW10gPSB7CisgICAgX1NIQTNfU0hBM18yMjRfQ09QWV9NRVRIT0RERUYKKyAgICBfU0hBM19TSEEzXzIyNF9ESUdFU1RfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfSEVYRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQTNfMjI0X1VQREFURV9NRVRIT0RERUYKKyAgICB7TlVMTCwgICAgICAgIE5VTEx9ICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X2Jsb2NrX3NpemUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmF0ZSA9IHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyYXRlIC8gOCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X25hbWUoU0hBM29iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKHNlbGYpOworICAgIGlmICh0eXBlID09ICZTSEEzXzIyNHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzIyNCIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBM18yNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hhM18yNTYiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJlNIQTNfMzg0dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNoYTNfMzg0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEEzXzUxMnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGEzXzUxMiIpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfMjI0dHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha18yMjQiKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJktlY2Nha18yNTZ0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygia2VjY2FrXzI1NiIpOworICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmS2VjY2FrXzM4NHR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJrZWNjYWtfMzg0Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZLZWNjYWtfNTEydHlwZSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoImtlY2Nha181MTIiKTsKKyNlbmRpZgorICAgIH0gZWxzZSBpZiAodHlwZSA9PSAmU0hBS0UxMjh0eXBlKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZygic2hha2VfMTI4Iik7CisgICAgfSBlbHNlIGlmICh0eXBlID09ICZTSEFLRTI1NnR5cGUpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJzaGFrZV8yNTYiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9kaWdlc3Rfc2l6ZShTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+aGFzaF9zdGF0ZS5maXhlZE91dHB1dExlbmd0aCAvIDgpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitTSEEzX2dldF9jYXBhY2l0eV9iaXRzKFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgaW50IGNhcGFjaXR5ID0gMTYwMCAtIHNlbGYtPmhhc2hfc3RhdGUuc3BvbmdlLnJhdGU7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhjYXBhY2l0eSk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1NIQTNfZ2V0X3JhdGVfYml0cyhTSEEzb2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHVuc2lnbmVkIGludCByYXRlID0gc2VsZi0+aGFzaF9zdGF0ZS5zcG9uZ2UucmF0ZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHJhdGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU0hBM19nZXRfc3VmZml4KFNIQTNvYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgdW5zaWduZWQgY2hhciBzdWZmaXhbMl07CisgICAgc3VmZml4WzBdID0gc2VsZi0+aGFzaF9zdGF0ZS5kZWxpbWl0ZWRTdWZmaXg7CisgICAgc3VmZml4WzFdID0gMDsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKXN1ZmZpeCwgMSk7Cit9CisKKworc3RhdGljIFB5R2V0U2V0RGVmIFNIQTNfZ2V0c2V0ZXJzW10gPSB7CisgICAgeyJibG9ja19zaXplIiwgKGdldHRlcilTSEEzX2dldF9ibG9ja19zaXplLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Im5hbWUiLCAoZ2V0dGVyKVNIQTNfZ2V0X25hbWUsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHsiZGlnZXN0X3NpemUiLCAoZ2V0dGVyKVNIQTNfZ2V0X2RpZ2VzdF9zaXplLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9jYXBhY2l0eV9iaXRzIiwgKGdldHRlcilTSEEzX2dldF9jYXBhY2l0eV9iaXRzLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9yYXRlX2JpdHMiLCAoZ2V0dGVyKVNIQTNfZ2V0X3JhdGVfYml0cywgTlVMTCwgTlVMTCwgTlVMTH0sCisgICAgeyJfc3VmZml4IiwgKGdldHRlcilTSEEzX2dldF9zdWZmaXgsIE5VTEwsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKKworI2RlZmluZSBTSEEzX1RZUEUodHlwZV9vYmosIHR5cGVfbmFtZSwgdHlwZV9kb2MsIHR5cGVfbWV0aG9kcykgXAorICAgIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9vYmogPSB7IFwKKyAgICAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApIFwKKyAgICAgICAgdHlwZV9uYW1lLCAgICAgICAgICAvKiB0cF9uYW1lICovIFwKKyAgICAgICAgc2l6ZW9mKFNIQTNvYmplY3QpLCAvKiB0cF9zaXplICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLyBcCisgICAgICAgIC8qICBtZXRob2RzICAqLyBcCisgICAgICAgIChkZXN0cnVjdG9yKVNIQTNfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovIFwKKyAgICAgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLyBcCisgICAgICAgIHR5cGVfZG9jLCAgICAgICAgICAgLyogdHBfZG9jICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8gXAorICAgICAgICB0eXBlX21ldGhvZHMsICAgICAgIC8qIHRwX21ldGhvZHMgKi8gXAorICAgICAgICBOVUxMLCAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8gXAorICAgICAgICBTSEEzX2dldHNldGVycywgICAgIC8qIHRwX2dldHNldCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLyBcCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovIFwKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8gXAorICAgICAgICAwLCAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovIFwKKyAgICAgICAgcHlfc2hhM19uZXcsICAgICAgICAvKiB0cF9uZXcgKi8gXAorICAgIH0KKworUHlEb2NfU1RSVkFSKHNoYTNfMjU2X19kb2NfXywKKyJzaGEzXzI1Nihbc3RyaW5nXSkgLT4gU0hBMyBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQTMgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDMyIGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoc2hhM18zODRfX2RvY19fLAorInNoYTNfMzg0KFtzdHJpbmddKSAtPiBTSEEzIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBMyBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNDggYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihzaGEzXzUxMl9fZG9jX18sCisic2hhM181MTIoW3N0cmluZ10pIC0+IFNIQTMgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBTSEEzIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiA2NCBieXRlcy4iKTsKKworU0hBM19UWVBFKFNIQTNfMjI0dHlwZSwgIl9zaGEzLnNoYTNfMjI0IiwgcHlfc2hhM19uZXdfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfMjU2dHlwZSwgIl9zaGEzLnNoYTNfMjU2Iiwgc2hhM18yNTZfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfMzg0dHlwZSwgIl9zaGEzLnNoYTNfMzg0Iiwgc2hhM18zODRfX2RvY19fLCBTSEEzX21ldGhvZHMpOworU0hBM19UWVBFKFNIQTNfNTEydHlwZSwgIl9zaGEzLnNoYTNfNTEyIiwgc2hhM181MTJfX2RvY19fLCBTSEEzX21ldGhvZHMpOworCisjaWZkZWYgUFlfV0lUSF9LRUNDQUsKK1B5RG9jX1NUUlZBUihrZWNjYWtfMjI0X19kb2NfXywKKyJrZWNjYWtfMjI0KFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDI4IGJ5dGVzLiIpOworCitQeURvY19TVFJWQVIoa2VjY2FrXzI1Nl9fZG9jX18sCisia2VjY2FrXzI1Nihbc3RyaW5nXSkgLT4gS2VjY2FrIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgS2VjY2FrIGhhc2ggb2JqZWN0IHdpdGggYSBoYXNoYml0IGxlbmd0aCBvZiAzMiBieXRlcy4iKTsKKworUHlEb2NfU1RSVkFSKGtlY2Nha18zODRfX2RvY19fLAorImtlY2Nha18zODQoW3N0cmluZ10pIC0+IEtlY2NhayBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IEtlY2NhayBoYXNoIG9iamVjdCB3aXRoIGEgaGFzaGJpdCBsZW5ndGggb2YgNDggYnl0ZXMuIik7CisKK1B5RG9jX1NUUlZBUihrZWNjYWtfNTEyX19kb2NfXywKKyJrZWNjYWtfNTEyKFtzdHJpbmddKSAtPiBLZWNjYWsgb2JqZWN0XG5cCitcblwKK1JldHVybiBhIG5ldyBLZWNjYWsgaGFzaCBvYmplY3Qgd2l0aCBhIGhhc2hiaXQgbGVuZ3RoIG9mIDY0IGJ5dGVzLiIpOworCitTSEEzX1RZUEUoS2VjY2FrXzIyNHR5cGUsICJfc2hhMy5rZWNjYWtfMjI0Iiwga2VjY2FrXzIyNF9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzI1NnR5cGUsICJfc2hhMy5rZWNjYWtfMjU2Iiwga2VjY2FrXzI1Nl9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzM4NHR5cGUsICJfc2hhMy5rZWNjYWtfMzg0Iiwga2VjY2FrXzM4NF9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CitTSEEzX1RZUEUoS2VjY2FrXzUxMnR5cGUsICJfc2hhMy5rZWNjYWtfNTEyIiwga2VjY2FrXzUxMl9fZG9jX18sIFNIQTNfbWV0aG9kcyk7CisjZW5kaWYKKworCitzdGF0aWMgUHlPYmplY3QgKgorX1NIQUtFX2RpZ2VzdChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGRpZ2VzdGxlbiwgaW50IGhleCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyICpkaWdlc3QgPSBOVUxMOworICAgIFNIQTNfc3RhdGUgdGVtcDsKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgLyogRXh0cmFjdExhbmUgbmVlZHMgYXQgbGVhc3QgU0hBM19NQVhfRElHRVNUU0laRSArIFNIQTNfTEFORVNJWkUgYW5kCisgICAgICogU0hBM19MQU5FU0laRSBleHRyYSBzcGFjZS4KKyAgICAgKi8KKyAgICBkaWdlc3QgPSAodW5zaWduZWQgY2hhciopUHlNZW1fTWFsbG9jKGRpZ2VzdGxlbiArIFNIQTNfTEFORVNJWkUpOworICAgIGlmIChkaWdlc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisKKyAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KKyAgICBFTlRFUl9IQVNITElCKHNlbGYpOworICAgIFNIQTNfY29weXN0YXRlKHRlbXAsIHNlbGYtPmhhc2hfc3RhdGUpOworICAgIExFQVZFX0hBU0hMSUIoc2VsZik7CisgICAgcmVzID0gU0hBM19kb25lKCZ0ZW1wLCBOVUxMKTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgZG9uZSgpIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHJlcyA9IFNIQTNfc3F1ZWV6ZSgmdGVtcCwgZGlnZXN0LCBkaWdlc3RsZW4gKiA4KTsKKyAgICBpZiAocmVzICE9IFNVQ0NFU1MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludGVybmFsIGVycm9yIGluIFNIQTMgU3F1ZWV6ZSgpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoaGV4KSB7CisgICAgICAgICByZXN1bHQgPSBfUHlfc3RyaGV4KChjb25zdCBjaGFyICopZGlnZXN0LCBkaWdlc3RsZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNvbnN0IGNoYXIgKilkaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlnZXN0bGVuKTsKKyAgICB9CisgIGVycm9yOgorICAgIGlmIChkaWdlc3QgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKGRpZ2VzdCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hha2VfMTI4LmRpZ2VzdAorCisgICAgbGVuZ3RoOiB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSkKKyAgICBcCisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGJpbmFyeSBkYXRhLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorX3NoYTNfc2hha2VfMTI4X2RpZ2VzdF9pbXBsKFNIQTNvYmplY3QgKnNlbGYsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzMTM2MDVlMmY4N2JiOGYgaW5wdXQ9NjA4YzhjYTgwYWU5ZDExNV0qLworeworICAgIHJldHVybiBfU0hBS0VfZGlnZXN0KHNlbGYsIGxlbmd0aCwgMCk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorX3NoYTMuc2hha2VfMTI4LmhleGRpZ2VzdAorCisgICAgbGVuZ3RoOiB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSkKKyAgICBcCisKK1JldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgc3RyaW5nIG9mIGhleGFkZWNpbWFsIGRpZ2l0cy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK19zaGEzX3NoYWtlXzEyOF9oZXhkaWdlc3RfaW1wbChTSEEzb2JqZWN0ICpzZWxmLCB1bnNpZ25lZCBsb25nIGxlbmd0aCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZjhlMmYxZTQ5MDk0NGE4IGlucHV0PTY0ZTU2YjQ3NjBkYjQ1NzNdKi8KK3sKKyAgICByZXR1cm4gX1NIQUtFX2RpZ2VzdChzZWxmLCBsZW5ndGgsIDEpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBTSEFLRV9tZXRob2RzW10gPSB7CisgICAgX1NIQTNfU0hBM18yMjRfQ09QWV9NRVRIT0RERUYKKyAgICBfU0hBM19TSEFLRV8xMjhfRElHRVNUX01FVEhPRERFRgorICAgIF9TSEEzX1NIQUtFXzEyOF9IRVhESUdFU1RfTUVUSE9EREVGCisgICAgX1NIQTNfU0hBM18yMjRfVVBEQVRFX01FVEhPRERFRgorICAgIHtOVUxMLCAgICAgICAgTlVMTH0gICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworUHlEb2NfU1RSVkFSKHNoYWtlXzEyOF9fZG9jX18sCisic2hha2VfMTI4KFtzdHJpbmddKSAtPiBTSEFLRSBvYmplY3RcblwKK1xuXAorUmV0dXJuIGEgbmV3IFNIQUtFIGhhc2ggb2JqZWN0LiIpOworCitQeURvY19TVFJWQVIoc2hha2VfMjU2X19kb2NfXywKKyJzaGFrZV8yNTYoW3N0cmluZ10pIC0+IFNIQUtFIG9iamVjdFxuXAorXG5cCitSZXR1cm4gYSBuZXcgU0hBS0UgaGFzaCBvYmplY3QuIik7CisKK1NIQTNfVFlQRShTSEFLRTEyOHR5cGUsICJfc2hhMy5zaGFrZV8xMjgiLCBzaGFrZV8xMjhfX2RvY19fLCBTSEFLRV9tZXRob2RzKTsKK1NIQTNfVFlQRShTSEFLRTI1NnR5cGUsICJfc2hhMy5zaGFrZV8yNTYiLCBzaGFrZV8yNTZfX2RvY19fLCBTSEFLRV9tZXRob2RzKTsKKworCisvKiBJbml0aWFsaXplIHRoaXMgbW9kdWxlLiAqLworc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBfU0hBM21vZHVsZSA9IHsKKyAgICAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICAgICAiX3NoYTMiLAorICAgICAgICBOVUxMLAorICAgICAgICAtMSwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTAorfTsKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X19zaGEzKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworCisgICAgaWYgKChtID0gUHlNb2R1bGVfQ3JlYXRlKCZfU0hBM21vZHVsZSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisjZGVmaW5lIGluaXRfc2hhM3R5cGUobmFtZSwgdHlwZSkgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9UWVBFKHR5cGUpID0gJlB5VHlwZV9UeXBlOyBcCisgICAgICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKSB7IFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0lOQ1JFRigoUHlPYmplY3QgKil0eXBlKTsgIFwKKyAgICAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCBuYW1lLCAoUHlPYmplY3QgKil0eXBlKSA8IDApIHsgXAorICAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlKDApCisKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzIyNCIsICZTSEEzXzIyNHR5cGUpOworICAgIGluaXRfc2hhM3R5cGUoInNoYTNfMjU2IiwgJlNIQTNfMjU2dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgic2hhM18zODQiLCAmU0hBM18zODR0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGEzXzUxMiIsICZTSEEzXzUxMnR5cGUpOworI2lmZGVmIFBZX1dJVEhfS0VDQ0FLCisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzIyNCIsICZLZWNjYWtfMjI0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzI1NiIsICZLZWNjYWtfMjU2dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzM4NCIsICZLZWNjYWtfMzg0dHlwZSk7CisgICAgaW5pdF9zaGEzdHlwZSgia2VjY2FrXzUxMiIsICZLZWNjYWtfNTEydHlwZSk7CisjZW5kaWYKKyAgICBpbml0X3NoYTN0eXBlKCJzaGFrZV8xMjgiLCAmU0hBS0UxMjh0eXBlKTsKKyAgICBpbml0X3NoYTN0eXBlKCJzaGFrZV8yNTYiLCAmU0hBS0UyNTZ0eXBlKTsKKworI3VuZGVmIGluaXRfc2hhM3R5cGUKKworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAia2VjY2Frb3B0IiwgS2VjY2FrT3B0KSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50KG0sICJpbXBsZW1lbnRhdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtlY2Nha1AxNjAwX2ltcGxlbWVudGF0aW9uKSA8IDApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICByZXR1cm4gbTsKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKG0pOworICAgIHJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwppbmRleCAzNjg5YTRlLi42MmM1ODkzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY2FjaGUuYwpAQCAtMjQ0LDggKzI0NCw3IEBACiAgICAgICAgIHB0ciA9IHB0ci0+bmV4dDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjYWNoZV9tZXRob2RzW10gPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwppbmRleCBkYjk3OWY1Li42MjEwMjI3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKQEAgLTE2NSw3ICsxNjUsNiBAQAogICAgIHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+ZGVjcmVmX2ZhY3RvcnkgPSAwOwogICAgIFB5X0RFQ1JFRihzZWxmKTsKIAotICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwogICAgIHNlbGYtPmRldGVjdF90eXBlcyA9IGRldGVjdF90eXBlczsKICAgICBzZWxmLT50aW1lb3V0ID0gdGltZW91dDsKICAgICAodm9pZClzcWxpdGUzX2J1c3lfdGltZW91dChzZWxmLT5kYiwgKGludCkodGltZW91dCoxMDAwKSk7CkBAIC0yMDIsMjYgKzIwMSw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEVtcHR5IHRoZSBlbnRpcmUgc3RhdGVtZW50IGNhY2hlIG9mIHRoaXMgY29ubmVjdGlvbiAqLwotdm9pZCBweXNxbGl0ZV9mbHVzaF9zdGF0ZW1lbnRfY2FjaGUocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZikKLXsKLSAgICBweXNxbGl0ZV9Ob2RlKiBub2RlOwotICAgIHB5c3FsaXRlX1N0YXRlbWVudCogc3RhdGVtZW50OwotCi0gICAgbm9kZSA9IHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+Zmlyc3Q7Ci0KLSAgICB3aGlsZSAobm9kZSkgewotICAgICAgICBzdGF0ZW1lbnQgPSAocHlzcWxpdGVfU3RhdGVtZW50Kikobm9kZS0+ZGF0YSk7Ci0gICAgICAgICh2b2lkKXB5c3FsaXRlX3N0YXRlbWVudF9maW5hbGl6ZShzdGF0ZW1lbnQpOwotICAgICAgICBub2RlID0gbm9kZS0+bmV4dDsKLSAgICB9Ci0KLSAgICBQeV9TRVRSRUYoc2VsZi0+c3RhdGVtZW50X2NhY2hlLAotICAgICAgICAgICAgICAocHlzcWxpdGVfQ2FjaGUgKilQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopJnB5c3FsaXRlX0NhY2hlVHlwZSwgIk8iLCBzZWxmKSk7Ci0gICAgUHlfREVDUkVGKHNlbGYpOwotICAgIHNlbGYtPnN0YXRlbWVudF9jYWNoZS0+ZGVjcmVmX2ZhY3RvcnkgPSAwOwotfQotCiAvKiBhY3Rpb24gaW4gKEFDVElPTl9SRVNFVCwgQUNUSU9OX0ZJTkFMSVpFKSAqLwogdm9pZCBweXNxbGl0ZV9kb19hbGxfc3RhdGVtZW50cyhweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBpbnQgYWN0aW9uLCBpbnQgcmVzZXRfY3Vyc29ycykKIHsKQEAgLTM2Niw4ICszNDUsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAvKgpAQCAtNDA2LDkgKzM4NCw3IEBACiAgICAgfQogCiAgICAgcmMgPSBweXNxbGl0ZV9zdGVwKHN0YXRlbWVudCwgc2VsZik7Ci0gICAgaWYgKHJjID09IFNRTElURV9ET05FKSB7Ci0gICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAxOwotICAgIH0gZWxzZSB7CisgICAgaWYgKHJjICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICB9CiAKQEAgLTQzOSw3ICs0MTUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+aW5UcmFuc2FjdGlvbikgeworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5kYikpIHsKIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIHJjID0gc3FsaXRlM19wcmVwYXJlKHNlbGYtPmRiLCAiQ09NTUlUIiwgLTEsICZzdGF0ZW1lbnQsICZ0YWlsKTsKQEAgLTQ1MCw5ICs0MjYsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGVwKHN0YXRlbWVudCwgc2VsZik7Ci0gICAgICAgIGlmIChyYyA9PSBTUUxJVEVfRE9ORSkgewotICAgICAgICAgICAgc2VsZi0+aW5UcmFuc2FjdGlvbiA9IDA7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgX3B5c3FsaXRlX3NldGVycm9yKHNlbGYtPmRiLCBzdGF0ZW1lbnQpOwogICAgICAgICB9CiAKQEAgLTQ4NCw3ICs0NTgsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoc2VsZi0+aW5UcmFuc2FjdGlvbikgeworICAgIGlmICghc3FsaXRlM19nZXRfYXV0b2NvbW1pdChzZWxmLT5kYikpIHsKICAgICAgICAgcHlzcWxpdGVfZG9fYWxsX3N0YXRlbWVudHMoc2VsZiwgQUNUSU9OX1JFU0VULCAxKTsKIAogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC00OTYsOSArNDcwLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RlcChzdGF0ZW1lbnQsIHNlbGYpOwotICAgICAgICBpZiAocmMgPT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgICAgIHNlbGYtPmluVHJhbnNhY3Rpb24gPSAwOwotICAgICAgICB9IGVsc2UgeworICAgICAgICBpZiAocmMgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIF9weXNxbGl0ZV9zZXRlcnJvcihzZWxmLT5kYiwgc3RhdGVtZW50KTsKICAgICAgICAgfQogCkBAIC02NzMsNyArNjQ1LDcgQEAKICAgICBhZ2dyZWdhdGVfaW5zdGFuY2UgPSAoUHlPYmplY3QqKilzcWxpdGUzX2FnZ3JlZ2F0ZV9jb250ZXh0KGNvbnRleHQsIHNpemVvZihQeU9iamVjdCopKTsKIAogICAgIGlmICgqYWdncmVnYXRlX2luc3RhbmNlID09IDApIHsKLSAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihhZ2dyZWdhdGVfY2xhc3MsICIiKTsKKyAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihhZ2dyZWdhdGVfY2xhc3MsIE5VTEwpOwogCiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICAqYWdncmVnYXRlX2luc3RhbmNlID0gMDsKQEAgLTc0NSw3ICs3MTcsNyBAQAogICAgIFB5RXJyX0ZldGNoKCZleGNlcHRpb24sICZ2YWx1ZSwgJnRiKTsKICAgICByZXN0b3JlID0gMTsKIAotICAgIGZ1bmN0aW9uX3Jlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKmFnZ3JlZ2F0ZV9pbnN0YW5jZSwgJlB5SWRfZmluYWxpemUsICIiKTsKKyAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCBOVUxMKTsKIAogICAgIFB5X0RFQ1JFRigqYWdncmVnYXRlX2luc3RhbmNlKTsKIApAQCAtODc0LDggKzg0Niw3IEBACiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShzZWxmLT5mdW5jdGlvbl9waW5ib2FyZCwgZnVuYywgUHlfTm9uZSkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTkwNiw4ICs4NzcsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGFnZ3JlZ2F0ZV9jbGFzcywgUHlfTm9uZSkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTk2Myw3ICs5MzMsNyBAQAogCiAgICAgZ2lsc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogI2VuZGlmCi0gICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCopdXNlcl9hcmcsICIiKTsKKyAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0Kil1c2VyX2FyZywgTlVMTCk7CiAKICAgICBpZiAoIXJldCkgewogICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CkBAIC0xMDQyLDggKzEwMTIsNyBAQAogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIGF1dGhvcml6ZXJfY2IsIFB5X05vbmUpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xMDcyLDggKzEwNDEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X3RyYWNlX2NhbGxiYWNrKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQpAQCAtMTEwMCw4ICsxMDY4LDcgQEAKICAgICAgICAgc3FsaXRlM190cmFjZShzZWxmLT5kYiwgX3RyYWNlX2NhbGxiYWNrLCB0cmFjZV9jYWxsYmFjayk7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiAjaWZkZWYgSEFWRV9MT0FEX0VYVEVOU0lPTgpAQCAtMTEyNCw4ICsxMDkxLDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX09wZXJhdGlvbmFsRXJyb3IsICJFcnJvciBlbmFibGluZyBsb2FkIGV4dGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAKQEAgLTExNDgsOCArMTExNCw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9PcGVyYXRpb25hbEVycm9yLCBlcnJtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTExODYsNiArMTE1MSwxNyBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX2dldF9pbl90cmFuc2FjdGlvbihweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCB2b2lkKiB1bnVzZWQpCit7CisgICAgaWYgKCFweXNxbGl0ZV9jaGVja19jb25uZWN0aW9uKHNlbGYpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+ZGIpKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBQeV9SRVRVUk5fRkFMU0U7Cit9CisKIHN0YXRpYyBpbnQgcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfaXNvbGF0aW9uX2xldmVsKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBpc29sYXRpb25fbGV2ZWwpCiB7CiAgICAgaWYgKGlzb2xhdGlvbl9sZXZlbCA9PSBQeV9Ob25lKSB7CkBAIC0xMTk2LDcgKzExNzIsNiBAQAogICAgICAgICBQeV9ERUNSRUYocmVzKTsKIAogICAgICAgICBzZWxmLT5iZWdpbl9zdGF0ZW1lbnQgPSBOVUxMOwotICAgICAgICBzZWxmLT5pblRyYW5zYWN0aW9uID0gMDsKICAgICB9IGVsc2UgewogICAgICAgICBjb25zdCBjaGFyICogY29uc3QgKmNhbmRpZGF0ZTsKICAgICAgICAgUHlPYmplY3QgKnVwcGVyY2FzZV9sZXZlbDsKQEAgLTEyOTksNyArMTI3NCw3IEBACiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CiAKLSAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCAiIik7CisgICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgTlVMTCk7CiAgICAgaWYgKCFjdXJzb3IpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CkBAIC0xMzI4LDcgKzEzMDMsNyBAQAogICAgIFB5T2JqZWN0KiByZXN1bHQgPSAwOwogICAgIFB5T2JqZWN0KiBtZXRob2QgPSAwOwogCi0gICAgY3Vyc29yID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QqKXNlbGYsICZQeUlkX2N1cnNvciwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsIE5VTEwpOwogICAgIGlmICghY3Vyc29yKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtMTM1Nyw3ICsxMzMyLDcgQEAKICAgICBQeU9iamVjdCogcmVzdWx0ID0gMDsKICAgICBQeU9iamVjdCogbWV0aG9kID0gMDsKIAotICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKKyAgICBjdXJzb3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCopc2VsZiwgJlB5SWRfY3Vyc29yLCBOVUxMKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTE2MjEsNyArMTU5Niw3IEBACiAgICAgICAgIG1ldGhvZF9uYW1lID0gInJvbGxiYWNrIjsKICAgICB9CiAKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCopc2VsZiwgbWV0aG9kX25hbWUsICIiKTsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCopc2VsZiwgbWV0aG9kX25hbWUsIE5VTEwpOwogICAgIGlmICghcmVzdWx0KSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE2MzAsMTIgKzE2MDUsMTMgQEAKICAgICBQeV9SRVRVUk5fRkFMU0U7CiB9CiAKLXN0YXRpYyBjaGFyIGNvbm5lY3Rpb25fZG9jW10gPQorc3RhdGljIGNvbnN0IGNoYXIgY29ubmVjdGlvbl9kb2NbXSA9CiBQeURvY19TVFIoIlNRTGl0ZSBkYXRhYmFzZSBjb25uZWN0aW9uIG9iamVjdC4iKTsKIAogc3RhdGljIFB5R2V0U2V0RGVmIGNvbm5lY3Rpb25fZ2V0c2V0W10gPSB7CiAgICAgeyJpc29sYXRpb25fbGV2ZWwiLCAgKGdldHRlcilweXNxbGl0ZV9jb25uZWN0aW9uX2dldF9pc29sYXRpb25fbGV2ZWwsIChzZXR0ZXIpcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfaXNvbGF0aW9uX2xldmVsfSwKICAgICB7InRvdGFsX2NoYW5nZXMiLCAgKGdldHRlcilweXNxbGl0ZV9jb25uZWN0aW9uX2dldF90b3RhbF9jaGFuZ2VzLCAoc2V0dGVyKTB9LAorICAgIHsiaW5fdHJhbnNhY3Rpb24iLCAgKGdldHRlcilweXNxbGl0ZV9jb25uZWN0aW9uX2dldF9pbl90cmFuc2FjdGlvbiwgKHNldHRlcikwfSwKICAgICB7TlVMTH0KIH07CiAKQEAgLTE2OTcsNyArMTY3Myw2IEBACiAgICAgeyJOb3RTdXBwb3J0ZWRFcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihweXNxbGl0ZV9Db25uZWN0aW9uLCBOb3RTdXBwb3J0ZWRFcnJvciksIFJFQURPTkxZfSwKICAgICB7InJvd19mYWN0b3J5IiwgVF9PQkpFQ1QsIG9mZnNldG9mKHB5c3FsaXRlX0Nvbm5lY3Rpb24sIHJvd19mYWN0b3J5KX0sCiAgICAgeyJ0ZXh0X2ZhY3RvcnkiLCBUX09CSkVDVCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgdGV4dF9mYWN0b3J5KX0sCi0gICAgeyJpbl90cmFuc2FjdGlvbiIsIFRfQk9PTCwgb2Zmc2V0b2YocHlzcWxpdGVfQ29ubmVjdGlvbiwgaW5UcmFuc2FjdGlvbiksIFJFQURPTkxZfSwKICAgICB7TlVMTH0KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmggYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCmluZGV4IGFkYmZiNTQuLjI4NjBhMGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaApAQCAtMzcsMTAgKzM3LDYgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgc3FsaXRlMyogZGI7CiAKLSAgICAvKiAxIGlmIHdlIGFyZSBjdXJyZW50bHkgd2l0aGluIGEgdHJhbnNhY3Rpb24sIGkuIGUuIGlmIGEgQkVHSU4gaGFzIGJlZW4KLSAgICAgKiBpc3N1ZWQgKi8KLSAgICBjaGFyIGluVHJhbnNhY3Rpb247Ci0KICAgICAvKiB0aGUgdHlwZSBkZXRlY3Rpb24gbW9kZS4gT25seSAwLCBQQVJTRV9ERUNMVFlQRVMsIFBBUlNFX0NPTE5BTUVTIG9yIGEKICAgICAgKiBiaXR3aXNlIGNvbWJpbmF0aW9uIHRoZXJlb2YgbWFrZXMgc2Vuc2UgKi8KICAgICBpbnQgZGV0ZWN0X3R5cGVzOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCmluZGV4IGUxNjc2ZGUuLmM3MTY5ZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKQEAgLTI3LDQ1ICsyNyw3IEBACiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9jdXJzb3JfaXRlcm5leHQocHlzcWxpdGVfQ3Vyc29yKiBzZWxmKTsKIAotc3RhdGljIGNoYXIqIGVycm1zZ19mZXRjaF9hY3Jvc3Nfcm9sbGJhY2sgPSAiQ3Vyc29yIG5lZWRlZCB0byBiZSByZXNldCBiZWNhdXNlIG9mIGNvbW1pdC9yb2xsYmFjayBhbmQgY2FuIG5vIGxvbmdlciBiZSBmZXRjaGVkIGZyb20uIjsKLQotc3RhdGljIHB5c3FsaXRlX1N0YXRlbWVudEtpbmQgZGV0ZWN0X3N0YXRlbWVudF90eXBlKGNvbnN0IGNoYXIqIHN0YXRlbWVudCkKLXsKLSAgICBjaGFyIGJ1ZlsyMF07Ci0gICAgY29uc3QgY2hhciogc3JjOwotICAgIGNoYXIqIGRzdDsKLQotICAgIHNyYyA9IHN0YXRlbWVudDsKLSAgICAvKiBza2lwIG92ZXIgd2hpdGVwYWNlICovCi0gICAgd2hpbGUgKCpzcmMgPT0gJ1xyJyB8fCAqc3JjID09ICdcbicgfHwgKnNyYyA9PSAnICcgfHwgKnNyYyA9PSAnXHQnKSB7Ci0gICAgICAgIHNyYysrOwotICAgIH0KLQotICAgIGlmICgqc3JjID09IDApCi0gICAgICAgIHJldHVybiBTVEFURU1FTlRfSU5WQUxJRDsKLQotICAgIGRzdCA9IGJ1ZjsKLSAgICAqZHN0ID0gMDsKLSAgICB3aGlsZSAoUHlfSVNBTFBIQSgqc3JjKSAmJiAoZHN0IC0gYnVmKSA8ICgoUHlfc3NpemVfdClzaXplb2YoYnVmKSAtIDIpKSB7Ci0gICAgICAgICpkc3QrKyA9IFB5X1RPTE9XRVIoKnNyYysrKTsKLSAgICB9Ci0KLSAgICAqZHN0ID0gMDsKLQotICAgIGlmICghc3RyY21wKGJ1ZiwgInNlbGVjdCIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfU0VMRUNUOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJpbnNlcnQiKSkgewotICAgICAgICByZXR1cm4gU1RBVEVNRU5UX0lOU0VSVDsKLSAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYnVmLCAidXBkYXRlIikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9VUERBVEU7Ci0gICAgfSBlbHNlIGlmICghc3RyY21wKGJ1ZiwgImRlbGV0ZSIpKSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfREVMRVRFOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcChidWYsICJyZXBsYWNlIikpIHsKLSAgICAgICAgcmV0dXJuIFNUQVRFTUVOVF9SRVBMQUNFOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldHVybiBTVEFURU1FTlRfT1RIRVI7Ci0gICAgfQotfQorc3RhdGljIGNvbnN0IGNoYXIgZXJybXNnX2ZldGNoX2Fjcm9zc19yb2xsYmFja1tdID0gIkN1cnNvciBuZWVkZWQgdG8gYmUgcmVzZXQgYmVjYXVzZSBvZiBjb21taXQvcm9sbGJhY2sgYW5kIGNhbiBubyBsb25nZXIgYmUgZmV0Y2hlZCBmcm9tLiI7CiAKIHN0YXRpYyBpbnQgcHlzcWxpdGVfY3Vyc29yX2luaXQocHlzcWxpdGVfQ3Vyc29yKiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3YXJncykKIHsKQEAgLTE0Myw3ICsxMDUsNyBAQAogICAgIFB5T2JqZWN0KiByZXR2YWw7CiAgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogCi0gICAgdXBjYXNlX2tleSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoa2V5LCAmUHlJZF91cHBlciwgIiIpOworICAgIHVwY2FzZV9rZXkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGtleSwgJlB5SWRfdXBwZXIsIE5VTEwpOwogICAgIGlmICghdXBjYXNlX2tleSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNDIsOCArMjA0LDcgQEAKICAgICBjb25zdCBjaGFyKiBwb3M7CiAKICAgICBpZiAoIWNvbG5hbWUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCiAgICAgZm9yIChwb3MgPSBjb2xuYW1lOzsgcG9zKyspIHsKQEAgLTQyOCw5ICszODksOSBAQAogICAgIFB5T2JqZWN0KiBmdW5jX2FyZ3M7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKICAgICBpbnQgbnVtY29sczsKLSAgICBpbnQgc3RhdGVtZW50X3R5cGU7CiAgICAgUHlPYmplY3QqIGRlc2NyaXB0b3I7CiAgICAgUHlPYmplY3QqIHNlY29uZF9hcmd1bWVudCA9IE5VTEw7CisgICAgc3FsaXRlX2ludDY0IGxhc3Ryb3dpZDsKIAogICAgIGlmICghY2hlY2tfY3Vyc29yKHNlbGYpKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC01MTEsNyArNDcyLDcgQEAKICAgICAvKiByZXNldCBkZXNjcmlwdGlvbiBhbmQgcm93Y291bnQgKi8KICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgUHlfU0VUUkVGKHNlbGYtPmRlc2NyaXB0aW9uLCBQeV9Ob25lKTsKLSAgICBzZWxmLT5yb3djb3VudCA9IC0xTDsKKyAgICBzZWxmLT5yb3djb3VudCA9IDBMOwogCiAgICAgZnVuY19hcmdzID0gUHlUdXBsZV9OZXcoMSk7CiAgICAgaWYgKCFmdW5jX2FyZ3MpIHsKQEAgLTU1MCw0MyArNTExLDE5IEBACiAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CiAgICAgcHlzcWxpdGVfc3RhdGVtZW50X21hcmtfZGlydHkoc2VsZi0+c3RhdGVtZW50KTsKIAotICAgIHN0YXRlbWVudF90eXBlID0gZGV0ZWN0X3N0YXRlbWVudF90eXBlKG9wZXJhdGlvbl9jc3RyKTsKLSAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbi0+YmVnaW5fc3RhdGVtZW50KSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdGVtZW50X3R5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1VQREFURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0RFTEVURToKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX0lOU0VSVDoKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1JFUExBQ0U6Ci0gICAgICAgICAgICAgICAgaWYgKCFzZWxmLT5jb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9weXNxbGl0ZV9jb25uZWN0aW9uX2JlZ2luKHNlbGYtPmNvbm5lY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNUQVRFTUVOVF9PVEhFUjoKLSAgICAgICAgICAgICAgICAvKiBpdCdzIGEgRERMIHN0YXRlbWVudCBvciBzb21ldGhpbmcgc2ltaWxhcgotICAgICAgICAgICAgICAgICAgIC0gd2UgYmV0dGVyIENPTU1JVCBmaXJzdCBzbyBpdCB3b3JrcyBmb3IgYWxsIGNhc2VzICovCi0gICAgICAgICAgICAgICAgaWYgKHNlbGYtPmNvbm5lY3Rpb24tPmluVHJhbnNhY3Rpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcHlzcWxpdGVfY29ubmVjdGlvbl9jb21taXQoc2VsZi0+Y29ubmVjdGlvbiwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU1RBVEVNRU5UX1NFTEVDVDoKLSAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGUpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX1Byb2dyYW1taW5nRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2Fubm90IGV4ZWN1dGUgU0VMRUNUIHN0YXRlbWVudHMgaW4gZXhlY3V0ZW1hbnkoKS4iKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgLyogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGRvIG5vdCBzdGFydCBhIHRyYW5zYWN0aW9uIGlmIGEKKyAgICAgICBEREwgc3RhdGVtZW50IGlzIGVuY291bnRlcmVkLiAgSWYgYW55Ym9keSB3YW50cyB0cmFuc2FjdGlvbmFsIERETCwKKyAgICAgICB0aGV5IGNhbiBpc3N1ZSBhIEJFR0lOIHN0YXRlbWVudCBtYW51YWxseS4gKi8KKyAgICBpZiAoc2VsZi0+Y29ubmVjdGlvbi0+YmVnaW5fc3RhdGVtZW50ICYmICFzcWxpdGUzX3N0bXRfcmVhZG9ubHkoc2VsZi0+c3RhdGVtZW50LT5zdCkgJiYgIXNlbGYtPnN0YXRlbWVudC0+aXNfZGRsKSB7CisgICAgICAgIGlmIChzcWxpdGUzX2dldF9hdXRvY29tbWl0KHNlbGYtPmNvbm5lY3Rpb24tPmRiKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gX3B5c3FsaXRlX2Nvbm5lY3Rpb25fYmVnaW4oc2VsZi0+Y29ubmVjdGlvbik7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgfQogICAgIH0KIAotCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgcGFyYW1ldGVycyA9IFB5SXRlcl9OZXh0KHBhcmFtZXRlcnNfaXRlcik7CiAgICAgICAgIGlmICghcGFyYW1ldGVycykgewpAQCAtNjcyLDYgKzYwOSwyMCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgaWYgKCFzcWxpdGUzX3N0bXRfcmVhZG9ubHkoc2VsZi0+c3RhdGVtZW50LT5zdCkpIHsKKyAgICAgICAgICAgIHNlbGYtPnJvd2NvdW50ICs9IChsb25nKXNxbGl0ZTNfY2hhbmdlcyhzZWxmLT5jb25uZWN0aW9uLT5kYik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZWxmLT5yb3djb3VudD0gLTFMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtdWx0aXBsZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYtPmxhc3Ryb3dpZCk7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgICAgICBsYXN0cm93aWQgPSBzcWxpdGUzX2xhc3RfaW5zZXJ0X3Jvd2lkKHNlbGYtPmNvbm5lY3Rpb24tPmRiKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICBzZWxmLT5sYXN0cm93aWQgPSBfcHlzcWxpdGVfbG9uZ19mcm9tX2ludDY0KGxhc3Ryb3dpZCk7CisgICAgICAgIH0KKwogICAgICAgICBpZiAocmMgPT0gU1FMSVRFX1JPVykgewogICAgICAgICAgICAgaWYgKG11bHRpcGxlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHB5c3FsaXRlX1Byb2dyYW1taW5nRXJyb3IsICJleGVjdXRlbWFueSgpIGNhbiBvbmx5IGV4ZWN1dGUgRE1MIHN0YXRlbWVudHMuIik7CkBAIC02ODYsMjkgKzYzNyw2IEBACiAgICAgICAgICAgICBQeV9DTEVBUihzZWxmLT5zdGF0ZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgc3dpdGNoIChzdGF0ZW1lbnRfdHlwZSkgewotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfVVBEQVRFOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfREVMRVRFOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfSU5TRVJUOgotICAgICAgICAgICAgY2FzZSBTVEFURU1FTlRfUkVQTEFDRToKLSAgICAgICAgICAgICAgICBpZiAoc2VsZi0+cm93Y291bnQgPT0gLTFMKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYtPnJvd2NvdW50ID0gMEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNlbGYtPnJvd2NvdW50ICs9IChsb25nKXNxbGl0ZTNfY2hhbmdlcyhzZWxmLT5jb25uZWN0aW9uLT5kYik7Ci0gICAgICAgIH0KLQotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdHJvd2lkKTsKLSAgICAgICAgaWYgKCFtdWx0aXBsZSAmJiBzdGF0ZW1lbnRfdHlwZSA9PSBTVEFURU1FTlRfSU5TRVJUKSB7Ci0gICAgICAgICAgICBzcWxpdGVfaW50NjQgbGFzdHJvd2lkOwotICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgbGFzdHJvd2lkID0gc3FsaXRlM19sYXN0X2luc2VydF9yb3dpZChzZWxmLT5jb25uZWN0aW9uLT5kYik7Ci0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgc2VsZi0+bGFzdHJvd2lkID0gX3B5c3FsaXRlX2xvbmdfZnJvbV9pbnQ2NChsYXN0cm93aWQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICAgICAgc2VsZi0+bGFzdHJvd2lkID0gUHlfTm9uZTsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChtdWx0aXBsZSkgewogICAgICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgIH0KQEAgLTcxNiwxNSArNjQ0LDYgQEAKICAgICB9CiAKIGVycm9yOgotICAgIC8qIGp1c3QgdG8gYmUgc3VyZSAoaW1wbGljaXQgUk9MTEJBQ0tzIHdpdGggT04gQ09ORkxJQ1QgUk9MTEJBQ0svT1IKLSAgICAgKiBST0xMQkFDSyBjb3VsZCBoYXZlIGhhcHBlbmVkICovCi0gICAgI2lmZGVmIFNRTElURV9WRVJTSU9OX05VTUJFUgotICAgICNpZiBTUUxJVEVfVkVSU0lPTl9OVU1CRVIgPj0gMzAwMjAwMgotICAgIGlmIChzZWxmLT5jb25uZWN0aW9uICYmIHNlbGYtPmNvbm5lY3Rpb24tPmRiKQotICAgICAgICBzZWxmLT5jb25uZWN0aW9uLT5pblRyYW5zYWN0aW9uID0gIXNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoc2VsZi0+Y29ubmVjdGlvbi0+ZGIpOwotICAgICNlbmRpZgotICAgICNlbmRpZgotCiAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzKTsKICAgICBQeV9YREVDUkVGKHBhcmFtZXRlcnNfaXRlcik7CiAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzX2xpc3QpOwpAQCAtOTEzLDggKzgzMiw3IEBACiAKICAgICByb3cgPSBweXNxbGl0ZV9jdXJzb3JfaXRlcm5leHQoc2VsZik7CiAgICAgaWYgKCFyb3cgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogCiAgICAgcmV0dXJuIHJvdzsKQEAgLTk5NSw4ICs5MTMsNyBAQAogUHlPYmplY3QqIHB5c3FsaXRlX25vb3AocHlzcWxpdGVfQ29ubmVjdGlvbiogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgLyogZG9uJ3QgY2FyZSwgcmV0dXJuIE5vbmUgKi8KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5T2JqZWN0KiBweXNxbGl0ZV9jdXJzb3JfY2xvc2UocHlzcWxpdGVfQ3Vyc29yKiBzZWxmLCBQeU9iamVjdCogYXJncykKQEAgLTEwMTIsOCArOTI5LDcgQEAKIAogICAgIHNlbGYtPmNsb3NlZCA9IDE7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBjdXJzb3JfbWV0aG9kc1tdID0gewpAQCAtMTA0OSw3ICs5NjUsNyBAQAogICAgIHtOVUxMfQogfTsKIAotc3RhdGljIGNoYXIgY3Vyc29yX2RvY1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGN1cnNvcl9kb2NbXSA9CiBQeURvY19TVFIoIlNRTGl0ZSBkYXRhYmFzZSBjdXJzb3IgY2xhc3MuIik7CiAKIFB5VHlwZU9iamVjdCBweXNxbGl0ZV9DdXJzb3JUeXBlID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oIGIvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5oCmluZGV4IDExOGJhMzguLjI4YmJkNWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuaAorKysgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmgKQEAgLTUxLDEyICs1MSw2IEBACiAgICAgUHlPYmplY3QqIGluX3dlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogfSBweXNxbGl0ZV9DdXJzb3I7CiAKLXR5cGVkZWYgZW51bSB7Ci0gICAgU1RBVEVNRU5UX0lOVkFMSUQsIFNUQVRFTUVOVF9JTlNFUlQsIFNUQVRFTUVOVF9ERUxFVEUsCi0gICAgU1RBVEVNRU5UX1VQREFURSwgU1RBVEVNRU5UX1JFUExBQ0UsIFNUQVRFTUVOVF9TRUxFQ1QsCi0gICAgU1RBVEVNRU5UX09USEVSCi19IHB5c3FsaXRlX1N0YXRlbWVudEtpbmQ7Ci0KIGV4dGVybiBQeVR5cGVPYmplY3QgcHlzcWxpdGVfQ3Vyc29yVHlwZTsKIAogUHlPYmplY3QqIHB5c3FsaXRlX2N1cnNvcl9leGVjdXRlKHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCmluZGV4IDdhN2U4NjAuLmNjNDUzMzEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKQEAgLTEzOSw4ICsxMzksNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcocHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgIkNoYW5naW5nIHRoZSBzaGFyZWRfY2FjaGUgZmxhZyBmYWlsZWQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgfQogfQogCkBAIC0xNzIsOCArMTcxLDcgQEAKICAgICBpZiAocmMgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIobW9kdWxlX3JlZ2lzdGVyX2FkYXB0ZXJfZG9jLApAQCAtMTk0LDcgKzE5Miw3IEBACiAgICAgfQogCiAgICAgLyogY29udmVydCB0aGUgbmFtZSB0byB1cHBlciBjYXNlICovCi0gICAgbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3JpZ19uYW1lLCAmUHlJZF91cHBlciwgIiIpOworICAgIG5hbWUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9yaWdfbmFtZSwgJlB5SWRfdXBwZXIsIE5VTEwpOwogICAgIGlmICghbmFtZSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTIyMSw4ICsyMTksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihlbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrc19kb2MsCkBAIC0yNjEsMTMgKzI1OCwxMyBAQAogfTsKIAogc3RydWN0IF9JbnRDb25zdGFudFBhaXIgewotICAgIGNoYXIqIGNvbnN0YW50X25hbWU7CisgICAgY29uc3QgY2hhciAqY29uc3RhbnRfbmFtZTsKICAgICBpbnQgY29uc3RhbnRfdmFsdWU7CiB9OwogCiB0eXBlZGVmIHN0cnVjdCBfSW50Q29uc3RhbnRQYWlyIEludENvbnN0YW50UGFpcjsKIAotc3RhdGljIEludENvbnN0YW50UGFpciBfaW50X2NvbnN0YW50c1tdID0geworc3RhdGljIGNvbnN0IEludENvbnN0YW50UGFpciBfaW50X2NvbnN0YW50c1tdID0gewogICAgIHsiUEFSU0VfREVDTFRZUEVTIiwgUEFSU0VfREVDTFRZUEVTfSwKICAgICB7IlBBUlNFX0NPTE5BTUVTIiwgUEFSU0VfQ09MTkFNRVN9LAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKaW5kZXggZTg3MDYzMy4uN2I5ODAxMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYwpAQCAtNTQsNiArNTQsNyBAQAogICAgIGludCByYzsKICAgICBjb25zdCBjaGFyKiBzcWxfY3N0cjsKICAgICBQeV9zc2l6ZV90IHNxbF9jc3RyX2xlbjsKKyAgICBjb25zdCBjaGFyKiBwOwogCiAgICAgc2VsZi0+c3QgPSBOVUxMOwogICAgIHNlbGYtPmluX3VzZSA9IDA7CkBAIC03Miw2ICs3MywyMyBAQAogICAgIFB5X0lOQ1JFRihzcWwpOwogICAgIHNlbGYtPnNxbCA9IHNxbDsKIAorICAgIC8qIGRldGVybWluZSBpZiB0aGUgc3RhdGVtZW50IGlzIGEgRERMIHN0YXRlbWVudCAqLworICAgIHNlbGYtPmlzX2RkbCA9IDA7CisgICAgZm9yIChwID0gc3FsX2NzdHI7ICpwICE9IDA7IHArKykgeworICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNlICcgJzoKKyAgICAgICAgICAgIGNhc2UgJ1xyJzoKKyAgICAgICAgICAgIGNhc2UgJ1xuJzoKKyAgICAgICAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNlbGYtPmlzX2RkbCA9IChQeU9TX3N0cm5pY21wKHAsICJjcmVhdGUgIiwgNykgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgfHwgKFB5T1Nfc3RybmljbXAocCwgImRyb3AgIiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgfHwgKFB5T1Nfc3RybmljbXAocCwgInJlaW5kZXggIiwgOCkgPT0gMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByYyA9IHNxbGl0ZTNfcHJlcGFyZShjb25uZWN0aW9uLT5kYiwKICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxfY3N0ciwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaCBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaAppbmRleCA0NjgxNDQzLi42ZWVmMTY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCkBAIC0zOCw2ICszOCw3IEBACiAgICAgc3FsaXRlM19zdG10KiBzdDsKICAgICBQeU9iamVjdCogc3FsOwogICAgIGludCBpbl91c2U7CisgICAgaW50IGlzX2RkbDsKICAgICBQeU9iamVjdCogaW5fd2Vha3JlZmxpc3Q7IC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCiB9IHB5c3FsaXRlX1N0YXRlbWVudDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYyBiL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKaW5kZXggMzEyZmUzYi4uMzUxYjFiNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCkBAIC0xMTMsNyArMTEzLDYgQEAKIFB5T2JqZWN0ICoKIF9weXNxbGl0ZV9sb25nX2Zyb21faW50NjQoc3FsaXRlX2ludDY0IHZhbHVlKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAjIGlmIFNJWkVPRl9MT05HX0xPTkcgPCA4CiAgICAgaWYgKHZhbHVlID4gUFlfTExPTkdfTUFYIHx8IHZhbHVlIDwgUFlfTExPTkdfTUlOKSB7CiAgICAgICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoJnZhbHVlLCBzaXplb2YodmFsdWUpLApAQCAtMTI0LDE0ICsxMjMsNiBAQAogICAgIGlmICh2YWx1ZSA+IExPTkdfTUFYIHx8IHZhbHVlIDwgTE9OR19NSU4pCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbHVlKTsKICMgZW5kaWYKLSNlbHNlCi0jIGlmIFNJWkVPRl9MT05HIDwgOAotICAgIGlmICh2YWx1ZSA+IExPTkdfTUFYIHx8IHZhbHVlIDwgTE9OR19NSU4pIHsKLSAgICAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgmdmFsdWUsIHNpemVvZih2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVNfTElUVExFX0VORElBTiwgMSAvKiBzaWduZWQgKi8pOwotICAgIH0KLSMgZW5kaWYKLSNlbmRpZgogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh2YWx1ZSwgc3FsaXRlX2ludDY0LCBsb25nKSk7CiB9CiAKQEAgLTEzOSwyMyArMTMwLDEzIEBACiBfcHlzcWxpdGVfbG9uZ19hc19pbnQ2NChQeU9iamVjdCAqIHB5X3ZhbCkKIHsKICAgICBpbnQgb3ZlcmZsb3c7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgdmFsdWUgPSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KHB5X3ZhbCwgJm92ZXJmbG93KTsKLSNlbHNlCi0gICAgbG9uZyB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhweV92YWwsICZvdmVyZmxvdyk7Ci0jZW5kaWYKKyAgICBsb25nIGxvbmcgdmFsdWUgPSBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KHB5X3ZhbCwgJm92ZXJmbG93KTsKICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghb3ZlcmZsb3cpIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogIyBpZiBTSVpFT0ZfTE9OR19MT05HID4gOAogICAgICAgICBpZiAoLTB4ODAwMDAwMDAwMDAwMDAwMExMIDw9IHZhbHVlICYmIHZhbHVlIDw9IDB4N0ZGRkZGRkZGRkZGRkZGRkxMKQogIyBlbmRpZgotI2Vsc2UKLSMgaWYgU0laRU9GX0xPTkcgPiA4Ci0gICAgICAgIGlmICgtMHg4MDAwMDAwMDAwMDAwMDAwTCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweDdGRkZGRkZGRkZGRkZGRkZMKQotIyBlbmRpZgotI2VuZGlmCiAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgfQogICAgIGVsc2UgaWYgKHNpemVvZih2YWx1ZSkgPCBzaXplb2Yoc3FsaXRlX2ludDY0KSkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCAwOWI1ODM1Li42OWM3YmMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtMzUsNyArMzUsNyBAQAogICogb3RoZXIgY29tcGF0aWJpbGl0eSB3b3JrLgogICovCiAKLXN0YXRpYyBjaGFyIGNvcHlyaWdodFtdID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvcHlyaWdodFtdID0KICAgICAiIFNSRSAyLjIuMiBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMiBieSBTZWNyZXQgTGFicyBBQiAiOwogCiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KQEAgLTYyLDkgKzYyLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBvcHRpb25hbCBmZWF0dXJlcyAqLwogCi0vKiBlbmFibGVzIGZhc3Qgc2VhcmNoaW5nICovCi0jZGVmaW5lIFVTRV9GQVNUX1NFQVJDSAotCiAvKiBlbmFibGVzIGNvcHkvZGVlcGNvcHkgaGFuZGxpbmcgKHdvcmsgaW4gcHJvZ3Jlc3MpICovCiAjdW5kZWYgVVNFX0JVSUxUSU5fQ09QWQogCkBAIC03MTcsNyArNzE0LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotY2FsbChjaGFyKiBtb2R1bGUsIGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogYXJncykKK2NhbGwoY29uc3QgY2hhciogbW9kdWxlLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGFyZ3MpCiB7CiAgICAgUHlPYmplY3QqIG5hbWU7CiAgICAgUHlPYmplY3QqIG1vZDsKQEAgLTEwNTksNyArMTA1Niw2IEBACiAgICAgUHlPYmplY3QqIGpvaW5lcjsKICAgICBQeU9iamVjdCogaXRlbTsKICAgICBQeU9iamVjdCogZmlsdGVyOwotICAgIFB5T2JqZWN0KiBhcmdzOwogICAgIFB5T2JqZWN0KiBtYXRjaDsKICAgICB2b2lkKiBwdHI7CiAgICAgUHlfc3NpemVfdCBzdGF0dXM7CkBAIC0xMTYxLDEzICsxMTU3LDcgQEAKICAgICAgICAgICAgIG1hdGNoID0gcGF0dGVybl9uZXdfbWF0Y2goc2VsZiwgJnN0YXRlLCAxKTsKICAgICAgICAgICAgIGlmICghbWF0Y2gpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgbWF0Y2gpOwotICAgICAgICAgICAgaWYgKCFhcmdzKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG1hdGNoKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaXRlbSA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZmlsdGVyLCBhcmdzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIGl0ZW0gPSBfUHlPYmplY3RfQ2FsbEFyZzEoZmlsdGVyLCBtYXRjaCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobWF0Y2gpOwogICAgICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xNTkyLDcgKzE1ODIsNyBAQAogICAgICAgICBza2lwID0gKmNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFZUUkFDRSgoIiVsdSAoc2tpcCB0byAlcClcbiIsICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNraXAsIGNvZGUrc2tpcCkpOyAgICAgICAgXAotICAgICAgICBpZiAoc2tpcC1hZGogPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkgICAgICBcCisgICAgICAgIGlmIChza2lwLWFkaiA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKSAgICAgIFwKICAgICAgICAgICAgIEZBSUw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBjb2RlKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKQEAgLTE2MjYsNyArMTYxNiw3IEBACiAKICAgICAgICAgY2FzZSBTUkVfT1BfQ0hBUlNFVDoKICAgICAgICAgICAgIG9mZnNldCA9IDI1Ni9TUkVfQ09ERV9CSVRTOyAvKiAyNTYtYml0IGJpdG1hcCAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICBjb2RlICs9IG9mZnNldDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTYzNCw3ICsxNjI0LDcgQEAKICAgICAgICAgY2FzZSBTUkVfT1BfQklHQ0hBUlNFVDoKICAgICAgICAgICAgIEdFVF9BUkc7IC8qIE51bWJlciBvZiBibG9ja3MgKi8KICAgICAgICAgICAgIG9mZnNldCA9IDI1Ni9zaXplb2YoU1JFX0NPREUpOyAvKiAyNTYtYnl0ZSB0YWJsZSAqLwotICAgICAgICAgICAgaWYgKG9mZnNldCA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKQorICAgICAgICAgICAgaWYgKG9mZnNldCA+ICh1aW50cHRyX3QpKGVuZCAtIGNvZGUpKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCBlYWNoIGJ5dGUgcG9pbnRzIHRvIGEgdmFsaWQgYmxvY2sgKi8KICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewpAQCAtMTY0Myw3ICsxNjMzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvZGUgKz0gb2Zmc2V0OwogICAgICAgICAgICAgb2Zmc2V0ID0gYXJnICogKDI1Ni9TUkVfQ09ERV9CSVRTKTsgLyogMjU2LWJpdCBiaXRtYXAgdGltZXMgYXJnICovCi0gICAgICAgICAgICBpZiAob2Zmc2V0ID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpCisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gKHVpbnRwdHJfdCkoZW5kIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgIGNvZGUgKz0gb2Zmc2V0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNzk0LDExICsxNzg0LDExIEBACiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IHByZWZpeF9sZW4gPSBhcmc7CiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7CiAgICAgICAgICAgICAgICAgICAgIC8qIEhlcmUgY29tZXMgdGhlIHByZWZpeCBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAoUHlfdWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKHVpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAgICAgY29kZSArPSBwcmVmaXhfbGVuOwogICAgICAgICAgICAgICAgICAgICAvKiBBbmQgaGVyZSBjb21lcyB0aGUgb3ZlcmxhcCB0YWJsZSAqLwotICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+IChQeV91aW50cHRyX3QpKG5ld2NvZGUgLSBjb2RlKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAodWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgICAgICAgICAvKiBFYWNoIG92ZXJsYXAgdmFsdWUgc2hvdWxkIGJlIDwgcHJlZml4X2xlbiAqLwogICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlZml4X2xlbjsgaSsrKSB7CkBAIC0xOTI3LDcgKzE5MTcsNyBAQAogICAgICAgICAgICAgICAgdG8gYWxsb3cgYXJiaXRyYXJ5IGp1bXBzIGFueXdoZXJlIGluIHRoZSBjb2RlOyBzbyB3ZSBqdXN0IGxvb2sKICAgICAgICAgICAgICAgIGZvciBhIEpVTVAgb3Bjb2RlIHByZWNlZGluZyBvdXIgc2tpcCB0YXJnZXQuCiAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKHNraXAgPj0gMyAmJiBza2lwLTMgPCAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSAmJgorICAgICAgICAgICAgaWYgKHNraXAgPj0gMyAmJiBza2lwLTMgPCAodWludHB0cl90KShlbmQgLSBjb2RlKSAmJgogICAgICAgICAgICAgICAgIGNvZGVbc2tpcC0zXSA9PSBTUkVfT1BfSlVNUCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBWVFJBQ0UoKCJib3RoIHRoZW4gYW5kIGVsc2UgcGFydHMgcHJlc2VudFxuIikpOwpAQCAtMjA1Miw4ICsyMDQyLDkgQEAKICAgICAgICAgLyogRGVmYXVsdCB2YWx1ZSAqLwogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChQeUxvbmdfQ2hlY2soaW5kZXgpKQotICAgICAgICByZXR1cm4gUHlMb25nX0FzU3NpemVfdChpbmRleCk7CisgICAgaWYgKFB5SW5kZXhfQ2hlY2soaW5kZXgpKSB7CisgICAgICAgIHJldHVybiBQeU51bWJlcl9Bc1NzaXplX3QoaW5kZXgsIE5VTEwpOworICAgIH0KIAogICAgIGkgPSAtMTsKIApAQCAtMjEzMCw2ICsyMTIxLDEyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorbWF0Y2hfZ2V0aXRlbShNYXRjaE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWUpCit7CisgICAgcmV0dXJuIG1hdGNoX2dldHNsaWNlKHNlbGYsIG5hbWUsIFB5X05vbmUpOworfQorCiAvKltjbGluaWMgaW5wdXRdCiBfc3JlLlNSRV9NYXRjaC5ncm91cHMKIApAQCAtMjcxNSw2ICsyNzEyLDEzIEBACiAgICAgcGF0dGVybl9nZXRzZXQsICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCisvKiBNYXRjaCBvYmplY3RzIGRvIG5vdCBzdXBwb3J0IGxlbmd0aCBvciBhc3NpZ25tZW50LCBidXQgZG8gc3VwcG9ydAorICAgX19nZXRpdGVtX18uICovCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtYXRjaF9hc19tYXBwaW5nID0geworICAgIE5VTEwsCisgICAgKGJpbmFyeWZ1bmMpbWF0Y2hfZ2V0aXRlbSwKKyAgICBOVUxMCit9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgbWF0Y2hfbWV0aG9kc1tdID0gewogICAgIHsiZ3JvdXAiLCAoUHlDRnVuY3Rpb24pIG1hdGNoX2dyb3VwLCBNRVRIX1ZBUkFSR1MsIG1hdGNoX2dyb3VwX2RvY30sCkBAIC0yNzYwLDcgKzI3NjQsNyBAQAogICAgIChyZXByZnVuYyltYXRjaF9yZXByLCAgICAgICAvKiB0cF9yZXByICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgJm1hdGNoX2FzX21hcHBpbmcsICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3NsLmMgYi9Nb2R1bGVzL19zc2wuYwppbmRleCBhNzljM2E4Li5iMTk4ODU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zc2wuYworKysgYi9Nb2R1bGVzL19zc2wuYwpAQCAtMTQwLDYgKzE0MCw4IEBACiAjZW5kaWYKIAogI2RlZmluZSBUTFNfbWV0aG9kIFNTTHYyM19tZXRob2QKKyNkZWZpbmUgVExTX2NsaWVudF9tZXRob2QgU1NMdjIzX2NsaWVudF9tZXRob2QKKyNkZWZpbmUgVExTX3NlcnZlcl9tZXRob2QgU1NMdjIzX3NlcnZlcl9tZXRob2QKIAogc3RhdGljIGludCBYNTA5X05BTUVfRU5UUllfc2V0KGNvbnN0IFg1MDlfTkFNRV9FTlRSWSAqbmUpCiB7CkBAIC0xNDcsMTAgKzE0OSwxMiBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fQ09NUAorLyogTENPVl9FWENMX1NUQVJUICovCiBzdGF0aWMgaW50IENPTVBfZ2V0X3R5cGUoY29uc3QgQ09NUF9NRVRIT0QgKm1ldGgpCiB7CiAgICAgcmV0dXJuIG1ldGgtPnR5cGU7CiB9CisvKiBMQ09WX0VYQ0xfU1RPUCAqLwogI2VuZGlmCiAKIHN0YXRpYyBwZW1fcGFzc3dvcmRfY2IgKlNTTF9DVFhfZ2V0X2RlZmF1bHRfcGFzc3dkX2NiKFNTTF9DVFggKmN0eCkKQEAgLTE4Nyw2ICsxOTEsMTkgQEAKIHsKICAgICByZXR1cm4gc3RvcmUtPnBhcmFtOwogfQorCitzdGF0aWMgaW50CitTU0xfU0VTU0lPTl9oYXNfdGlja2V0KGNvbnN0IFNTTF9TRVNTSU9OICpzKQoreworICAgIHJldHVybiAocy0+dGxzZXh0X3RpY2tsZW4gPiAwKSA/IDEgOiAwOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZworU1NMX1NFU1NJT05fZ2V0X3RpY2tldF9saWZldGltZV9oaW50KGNvbnN0IFNTTF9TRVNTSU9OICpzKQoreworICAgIHJldHVybiBzLT50bHNleHRfdGlja19saWZldGltZV9oaW50OworfQorCiAjZW5kaWYgLyogT3BlblNTTCA8IDEuMS4wIG9yIExpYnJlU1NMICovCiAKIApAQCAtMjIwLDE0ICsyMzcsMTYgQEAKIGVudW0gcHlfc3NsX3ZlcnNpb24gewogICAgIFBZX1NTTF9WRVJTSU9OX1NTTDIsCiAgICAgUFlfU1NMX1ZFUlNJT05fU1NMMz0xLAotICAgIFBZX1NTTF9WRVJTSU9OX1RMUywKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFMsIC8qIFNTTHYyMyAqLwogI2lmIEhBVkVfVExTdjFfMgogICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCiAgICAgUFlfU1NMX1ZFUlNJT05fVExTMV8xLAotICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMgorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzFfMiwKICNlbHNlCi0gICAgUFlfU1NMX1ZFUlNJT05fVExTMQorICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEsCiAjZW5kaWYKKyAgICBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UPTB4MTAsCisgICAgUFlfU1NMX1ZFUlNJT05fVExTX1NFUlZFUiwKIH07CiAKICNpZmRlZiBXSVRIX1RIUkVBRApAQCAtMjkzLDI1ICszMTIsMzUgQEAKICAgICBpbnQgZW9mX3dyaXR0ZW47CiB9IFB5U1NMTWVtb3J5QklPOwogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworICAgIFB5U1NMQ29udGV4dCAqY3R4OworfSBQeVNTTFNlc3Npb247CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlTU0xDb250ZXh0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU29ja2V0X1R5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMTWVtb3J5QklPX1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU2Vzc2lvbl9UeXBlOwogCiAvKltjbGluaWMgaW5wdXRdCiBtb2R1bGUgX3NzbAogY2xhc3MgX3NzbC5fU1NMQ29udGV4dCAiUHlTU0xDb250ZXh0ICoiICImUHlTU0xDb250ZXh0X1R5cGUiCiBjbGFzcyBfc3NsLl9TU0xTb2NrZXQgIlB5U1NMU29ja2V0ICoiICImUHlTU0xTb2NrZXRfVHlwZSIKIGNsYXNzIF9zc2wuTWVtb3J5QklPICJQeVNTTE1lbW9yeUJJTyAqIiAiJlB5U1NMTWVtb3J5QklPX1R5cGUiCitjbGFzcyBfc3NsLlNTTFNlc3Npb24gIlB5U1NMU2Vzc2lvbiAqIiAiJlB5U1NMU2Vzc2lvbl9UeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2JmN2NiODMyNjM4ZTJlMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YmRjNjdmYWZlZWFhODEwOV0qLwogCiAjaW5jbHVkZSAiY2xpbmljL19zc2wuYy5oIgogCiBzdGF0aWMgaW50IFB5U1NMX3NlbGVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCB3cml0aW5nLCBfUHlUaW1lX3QgdGltZW91dCk7CiAKKwogI2RlZmluZSBQeVNTTENvbnRleHRfQ2hlY2sodikgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpCiAjZGVmaW5lIFB5U1NMU29ja2V0X0NoZWNrKHYpICAgIChQeV9UWVBFKHYpID09ICZQeVNTTFNvY2tldF9UeXBlKQogI2RlZmluZSBQeVNTTE1lbW9yeUJJT19DaGVjayh2KSAgICAoUHlfVFlQRSh2KSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkKKyNkZWZpbmUgUHlTU0xTZXNzaW9uX0NoZWNrKHYpICAgKFB5X1RZUEUodikgPT0gJlB5U1NMU2Vzc2lvbl9UeXBlKQogCiB0eXBlZGVmIGVudW0gewogICAgIFNPQ0tFVF9JU19OT05CTE9DS0lORywKQEAgLTQ1NSw3ICs0ODQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlTU0xfU2V0RXJyb3IoUHlTU0xTb2NrZXQgKm9iaiwgaW50IHJldCwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCitQeVNTTF9TZXRFcnJvcihQeVNTTFNvY2tldCAqb2JqLCBpbnQgcmV0LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKICAgICBQeU9iamVjdCAqdHlwZSA9IFB5U1NMRXJyb3JPYmplY3Q7CiAgICAgY2hhciAqZXJyc3RyID0gTlVMTDsKQEAgLTUzNyw3ICs1NjYsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NldFNTTEVycm9yIChjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgeworX3NldFNTTEVycm9yIChjb25zdCBjaGFyICplcnJzdHIsIGludCBlcnJjb2RlLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykgewogCiAgICAgaWYgKGVycnN0ciA9PSBOVUxMKQogICAgICAgICBlcnJjb2RlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwpAQCAtMTU0Nyw2ICsxNTc2LDY1IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAwMDIwMDBVTAorc3RhdGljIFB5T2JqZWN0ICoKK2NpcGhlcl90b19kaWN0KGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcikKK3sKKyAgICBjb25zdCBjaGFyICpjaXBoZXJfbmFtZSwgKmNpcGhlcl9wcm90b2NvbDsKKworICAgIHVuc2lnbmVkIGxvbmcgY2lwaGVyX2lkOworICAgIGludCBhbGdfYml0cywgc3RyZW5ndGhfYml0cywgbGVuOworICAgIGNoYXIgYnVmWzUxMl0gPSB7MH07CisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIGludCBhZWFkLCBuaWQ7CisgICAgY29uc3QgY2hhciAqc2tjaXBoZXIgPSBOVUxMLCAqZGlnZXN0ID0gTlVMTCwgKmt4ID0gTlVMTCwgKmF1dGggPSBOVUxMOworI2VuZGlmCisKKyAgICAvKiBjYW4gYmUgTlVMTCAqLworICAgIGNpcGhlcl9uYW1lID0gU1NMX0NJUEhFUl9nZXRfbmFtZShjaXBoZXIpOworICAgIGNpcGhlcl9wcm90b2NvbCA9IFNTTF9DSVBIRVJfZ2V0X3ZlcnNpb24oY2lwaGVyKTsKKyAgICBjaXBoZXJfaWQgPSBTU0xfQ0lQSEVSX2dldF9pZChjaXBoZXIpOworICAgIFNTTF9DSVBIRVJfZGVzY3JpcHRpb24oY2lwaGVyLCBidWYsIHNpemVvZihidWYpIC0gMSk7CisgICAgbGVuID0gc3RybGVuKGJ1Zik7CisgICAgaWYgKGxlbiA+IDEgJiYgYnVmW2xlbi0xXSA9PSAnXG4nKQorICAgICAgICBidWZbbGVuLTFdID0gJ1wwJzsKKyAgICBzdHJlbmd0aF9iaXRzID0gU1NMX0NJUEhFUl9nZXRfYml0cyhjaXBoZXIsICZhbGdfYml0cyk7CisKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgYWVhZCA9IFNTTF9DSVBIRVJfaXNfYWVhZChjaXBoZXIpOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2NpcGhlcl9uaWQoY2lwaGVyKTsKKyAgICBza2NpcGhlciA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2RpZ2VzdF9uaWQoY2lwaGVyKTsKKyAgICBkaWdlc3QgPSBuaWQgIT0gTklEX3VuZGVmID8gT0JKX25pZDJsbihuaWQpIDogTlVMTDsKKyAgICBuaWQgPSBTU0xfQ0lQSEVSX2dldF9reF9uaWQoY2lwaGVyKTsKKyAgICBreCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworICAgIG5pZCA9IFNTTF9DSVBIRVJfZ2V0X2F1dGhfbmlkKGNpcGhlcik7CisgICAgYXV0aCA9IG5pZCAhPSBOSURfdW5kZWYgPyBPQkpfbmlkMmxuKG5pZCkgOiBOVUxMOworI2VuZGlmCisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKKyAgICAgICAgIntza3Nzc3Nzc3Npc2kiCisjaWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgICAgICAic09zc3Nzc3NzcyIKKyNlbmRpZgorICAgICAgICAifSIsCisgICAgICAgICJpZCIsIGNpcGhlcl9pZCwKKyAgICAgICAgIm5hbWUiLCBjaXBoZXJfbmFtZSwKKyAgICAgICAgInByb3RvY29sIiwgY2lwaGVyX3Byb3RvY29sLAorICAgICAgICAiZGVzY3JpcHRpb24iLCBidWYsCisgICAgICAgICJzdHJlbmd0aF9iaXRzIiwgc3RyZW5ndGhfYml0cywKKyAgICAgICAgImFsZ19iaXRzIiwgYWxnX2JpdHMKKyNpZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgICAgICwiYWVhZCIsIGFlYWQgPyBQeV9UcnVlIDogUHlfRmFsc2UsCisgICAgICAgICJzeW1tZXRyaWMiLCBza2NpcGhlciwKKyAgICAgICAgImRpZ2VzdCIsIGRpZ2VzdCwKKyAgICAgICAgImtlYSIsIGt4LAorICAgICAgICAiYXV0aCIsIGF1dGgKKyNlbmRpZgorICAgICAgICk7Cit9CisjZW5kaWYKKwogLypbY2xpbmljIGlucHV0XQogX3NzbC5fU1NMU29ja2V0LnNoYXJlZF9jaXBoZXJzCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0yMjU1LDYgKzIzNDMsMTUyIEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorI2lmZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKworc3RhdGljIFNTTF9TRVNTSU9OKgorX3NzbF9zZXNzaW9uX2R1cChTU0xfU0VTU0lPTiAqc2Vzc2lvbikgeworICAgIFNTTF9TRVNTSU9OICpuZXdzZXNzaW9uID0gTlVMTDsKKyAgICBpbnQgc2xlbjsKKyAgICB1bnNpZ25lZCBjaGFyICpzZW5jID0gTlVMTCwgKnA7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY29uc3RfcDsKKworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIHNlc3Npb24iKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBnZXQgbGVuZ3RoICovCisgICAgc2xlbiA9IGkyZF9TU0xfU0VTU0lPTihzZXNzaW9uLCBOVUxMKTsKKyAgICBpZiAoc2xlbiA9PSAwIHx8IHNsZW4gPiAweEZGMDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpMmQoKSBmYWlsZWQuIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmICgoc2VuYyA9IFB5TWVtX01hbGxvYyhzbGVuKSkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBwID0gc2VuYzsKKyAgICBpZiAoIWkyZF9TU0xfU0VTU0lPTihzZXNzaW9uLCAmcCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpMmQoKSBmYWlsZWQuIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGNvbnN0X3AgPSBzZW5jOworICAgIG5ld3Nlc3Npb24gPSBkMmlfU1NMX1NFU1NJT04oTlVMTCwgJmNvbnN0X3AsIHNsZW4pOworICAgIGlmIChzZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgUHlNZW1fRnJlZShzZW5jKTsKKyAgICByZXR1cm4gbmV3c2Vzc2lvbjsKKyAgZXJyb3I6CisgICAgaWYgKHNlbmMgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHNlbmMpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfZ2V0X3Nlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICAvKiBnZXRfc2Vzc2lvbiBjYW4gcmV0dXJuIHNlc3Npb25zIGZyb20gYSBzZXJ2ZXItc2lkZSBjb25uZWN0aW9uLAorICAgICAqIGl0IGRvZXMgbm90IGNoZWNrIGZvciBoYW5kc2hha2UgZG9uZSBvciBjbGllbnQgc29ja2V0LiAqLworICAgIFB5U1NMU2Vzc2lvbiAqcHlzZXNzOworICAgIFNTTF9TRVNTSU9OICpzZXNzaW9uOworCisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIC8qIGR1cGxpY2F0ZSBzZXNzaW9uIGFzIHdvcmthcm91bmQgZm9yIHNlc3Npb24gYnVnIGluIE9wZW5TU0wgMS4xLjAsCisgICAgICogaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2wvb3BlbnNzbC9pc3N1ZXMvMTU1MCAqLworICAgIHNlc3Npb24gPSBTU0xfZ2V0MF9zZXNzaW9uKHNlbGYtPnNzbCk7ICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBpZiAoKHNlc3Npb24gPSBfc3NsX3Nlc3Npb25fZHVwKHNlc3Npb24pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbHNlCisgICAgc2Vzc2lvbiA9IFNTTF9nZXQxX3Nlc3Npb24oc2VsZi0+c3NsKTsKKyAgICBpZiAoc2Vzc2lvbiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyNlbmRpZgorICAgIHB5c2VzcyA9IFB5T2JqZWN0X0dDX05ldyhQeVNTTFNlc3Npb24sICZQeVNTTFNlc3Npb25fVHlwZSk7CisgICAgaWYgKHB5c2VzcyA9PSBOVUxMKSB7CisgICAgICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2Vzc2lvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGFzc2VydChzZWxmLT5jdHgpOworICAgIHB5c2Vzcy0+Y3R4ID0gc2VsZi0+Y3R4OworICAgIFB5X0lOQ1JFRihweXNlc3MtPmN0eCk7CisgICAgcHlzZXNzLT5zZXNzaW9uID0gc2Vzc2lvbjsKKyAgICBQeU9iamVjdF9HQ19UcmFjayhweXNlc3MpOworICAgIHJldHVybiAoUHlPYmplY3QgKilweXNlc3M7Cit9CisKK3N0YXRpYyBpbnQgUHlTU0xfc2V0X3Nlc3Npb24oUHlTU0xTb2NrZXQgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xvc3VyZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICBQeVNTTFNlc3Npb24gKnB5c2VzczsKKyNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgU1NMX1NFU1NJT04gKnNlc3Npb247CisjZW5kaWYKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKCFQeVNTTFNlc3Npb25fQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJWYWx1ZSBpcyBub3QgYSBTU0xTZXNzaW9uLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHB5c2VzcyA9IChQeVNTTFNlc3Npb24gKil2YWx1ZTsKKworICAgIGlmIChzZWxmLT5jdHgtPmN0eCAhPSBweXNlc3MtPmN0eC0+Y3R4KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlNlc3Npb24gcmVmZXJzIHRvIGEgZGlmZmVyZW50IFNTTENvbnRleHQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNlbGYtPnNvY2tldF90eXBlICE9IFBZX1NTTF9DTElFTlQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNldCBzZXNzaW9uIGZvciBzZXJ2ZXItc2lkZSBTU0xTb2NrZXQuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNlbGYtPmhhbmRzaGFrZV9kb25lKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzZXQgc2Vzc2lvbiBhZnRlciBoYW5kc2hha2UuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjaWZkZWYgT1BFTlNTTF9WRVJTSU9OXzFfMQorICAgIC8qIGR1cGxpY2F0ZSBzZXNzaW9uICovCisgICAgaWYgKChzZXNzaW9uID0gX3NzbF9zZXNzaW9uX2R1cChweXNlc3MtPnNlc3Npb24pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzdWx0ID0gU1NMX3NldF9zZXNzaW9uKHNlbGYtPnNzbCwgc2Vzc2lvbik7CisgICAgLyogZnJlZSBkdXBsaWNhdGUsIFNTTF9zZXRfc2Vzc2lvbigpIGJ1bXBzIHJlZiBjb3VudCAqLworICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2Vzc2lvbik7CisjZWxzZQorICAgIHJlc3VsdCA9IFNTTF9zZXRfc2Vzc2lvbihzZWxmLT5zc2wsIHB5c2Vzcy0+c2Vzc2lvbik7CisjZW5kaWYKKyAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9zZXRfc2Vzc2lvbl9kb2MsCisiX3NldHRlcl9zZXNzaW9uKHNlc3Npb24pXG5cCitcCitHZXQgLyBzZXQgU1NMU2Vzc2lvbi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX2dldF9zZXNzaW9uX3JldXNlZChQeVNTTFNvY2tldCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIGlmIChTU0xfc2Vzc2lvbl9yZXVzZWQoc2VsZi0+c3NsKSkgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorfQorCitQeURvY19TVFJWQVIoUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkX2RvYywKKyJXYXMgdGhlIGNsaWVudCBzZXNzaW9uIHJldXNlZCBkdXJpbmcgaGFuZHNoYWtlPyIpOworCiBzdGF0aWMgUHlHZXRTZXREZWYgc3NsX2dldHNldGxpc3RbXSA9IHsKICAgICB7ImNvbnRleHQiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfY29udGV4dCwKICAgICAgICAgICAgICAgICAoc2V0dGVyKSBQeVNTTF9zZXRfY29udGV4dCwgUHlTU0xfc2V0X2NvbnRleHRfZG9jfSwKQEAgLTIyNjQsNiArMjQ5OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlTU0xfZ2V0X3NlcnZlcl9ob3N0bmFtZV9kb2N9LAogICAgIHsib3duZXIiLCAoZ2V0dGVyKSBQeVNTTF9nZXRfb3duZXIsIChzZXR0ZXIpIFB5U1NMX3NldF9vd25lciwKICAgICAgICAgICAgICAgUHlTU0xfZ2V0X293bmVyX2RvY30sCisgICAgeyJzZXNzaW9uIiwgKGdldHRlcikgUHlTU0xfZ2V0X3Nlc3Npb24sCisgICAgICAgICAgICAgICAgKHNldHRlcikgUHlTU0xfc2V0X3Nlc3Npb24sIFB5U1NMX3NldF9zZXNzaW9uX2RvY30sCisgICAgeyJzZXNzaW9uX3JldXNlZCIsIChnZXR0ZXIpIFB5U1NMX2dldF9zZXNzaW9uX3JldXNlZCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xfZ2V0X3Nlc3Npb25fcmV1c2VkX2RvY30sCiAgICAge05VTEx9LCAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yMzIzLDYgKzI1NjEsMzMgQEAKICAqIF9TU0xDb250ZXh0IG9iamVjdHMKICAqLwogCitzdGF0aWMgaW50Citfc2V0X3ZlcmlmeV9tb2RlKFNTTF9DVFggKmN0eCwgZW51bSBweV9zc2xfY2VydF9yZXF1aXJlbWVudHMgbikKK3sKKyAgICBpbnQgbW9kZTsKKyAgICBpbnQgKCp2ZXJpZnlfY2IpKGludCwgWDUwOV9TVE9SRV9DVFggKikgPSBOVUxMOworCisgICAgc3dpdGNoKG4pIHsKKyAgICBjYXNlIFBZX1NTTF9DRVJUX05PTkU6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX05PTkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFlfU1NMX0NFUlRfT1BUSU9OQUw6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFlfU1NMX0NFUlRfUkVRVUlSRUQ6CisgICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCB2YWx1ZSBmb3IgdmVyaWZ5X21vZGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAvKiBrZWVwIGN1cnJlbnQgdmVyaWZ5IGNiICovCisgICAgdmVyaWZ5X2NiID0gU1NMX0NUWF9nZXRfdmVyaWZ5X2NhbGxiYWNrKGN0eCk7CisgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGN0eCwgbW9kZSwgdmVyaWZ5X2NiKTsKKyAgICByZXR1cm4gMDsKK30KKwogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBfc3NsLl9TU0xDb250ZXh0Ll9fbmV3X18KQEAgLTIzMzcsNiArMjYwMiw3IEBACiAgICAgUHlTU0xDb250ZXh0ICpzZWxmOwogICAgIGxvbmcgb3B0aW9uczsKICAgICBTU0xfQ1RYICpjdHggPSBOVUxMOworICAgIGludCByZXN1bHQ7CiAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCiAgICAgdW5zaWduZWQgbG9uZyBsaWJ2ZXI7CiAjZW5kaWYKQEAgLTIzNTgsOCArMjYyNCwxMiBAQAogICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fU1NMMikKICAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoU1NMdjJfbWV0aG9kKCkpOwogI2VuZGlmCi0gICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMpCisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFMpIC8qIFNTTHYyMyAqLwogICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfbWV0aG9kKCkpOworICAgIGVsc2UgaWYgKHByb3RvX3ZlcnNpb24gPT0gUFlfU1NMX1ZFUlNJT05fVExTX0NMSUVOVCkKKyAgICAgICAgY3R4ID0gU1NMX0NUWF9uZXcoVExTX2NsaWVudF9tZXRob2QoKSk7CisgICAgZWxzZSBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSKQorICAgICAgICBjdHggPSBTU0xfQ1RYX25ldyhUTFNfc2VydmVyX21ldGhvZCgpKTsKICAgICBlbHNlCiAgICAgICAgIHByb3RvX3ZlcnNpb24gPSAtMTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtMjM5MiwxNiArMjY2Miw1NyBAQAogICAgIHNlbGYtPnNldF9ob3N0bmFtZSA9IE5VTEw7CiAjZW5kaWYKICAgICAvKiBEb24ndCBjaGVjayBob3N0IG5hbWUgYnkgZGVmYXVsdCAqLwotICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMDsKKyAgICBpZiAocHJvdG9fdmVyc2lvbiA9PSBQWV9TU0xfVkVSU0lPTl9UTFNfQ0xJRU5UKSB7CisgICAgICAgIHNlbGYtPmNoZWNrX2hvc3RuYW1lID0gMTsKKyAgICAgICAgaWYgKF9zZXRfdmVyaWZ5X21vZGUoc2VsZi0+Y3R4LCBQWV9TU0xfQ0VSVF9SRVFVSVJFRCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+Y2hlY2tfaG9zdG5hbWUgPSAwOworICAgICAgICBpZiAoX3NldF92ZXJpZnlfbW9kZShzZWxmLT5jdHgsIFBZX1NTTF9DRVJUX05PTkUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KICAgICAvKiBEZWZhdWx0cyAqLwotICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIFNTTF9WRVJJRllfTk9ORSwgTlVMTCk7CiAgICAgb3B0aW9ucyA9IFNTTF9PUF9BTEwgJiB+U1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UUzsKICAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKQogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MjsKICAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wzKQogICAgICAgICBvcHRpb25zIHw9IFNTTF9PUF9OT19TU0x2MzsKKyAgICAvKiBNaW5pbWFsIHNlY3VyaXR5IGZsYWdzIGZvciBzZXJ2ZXIgYW5kIGNsaWVudCBzaWRlIGNvbnRleHQuCisgICAgICogQ2xpZW50IHNvY2tldHMgaWdub3JlIHNlcnZlci1zaWRlIHBhcmFtZXRlcnMuICovCisjaWZkZWYgU1NMX09QX05PX0NPTVBSRVNTSU9OCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfTk9fQ09NUFJFU1NJT047CisjZW5kaWYKKyNpZmRlZiBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFCisgICAgb3B0aW9ucyB8PSBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFOworI2VuZGlmCisjaWZkZWYgU1NMX09QX1NJTkdMRV9ESF9VU0UKKyAgICBvcHRpb25zIHw9IFNTTF9PUF9TSU5HTEVfREhfVVNFOworI2VuZGlmCisjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQorICAgIG9wdGlvbnMgfD0gU1NMX09QX1NJTkdMRV9FQ0RIX1VTRTsKKyNlbmRpZgogICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoc2VsZi0+Y3R4LCBvcHRpb25zKTsKIAorICAgIC8qIEEgYmFyZSBtaW5pbXVtIGNpcGhlciBsaXN0IHdpdGhvdXQgY29tcGxldGx5IGJyb2tlbiBjaXBoZXIgc3VpdGVzLgorICAgICAqIEl0J3MgZmFyIGZyb20gcGVyZmVjdCBidXQgZ2l2ZXMgdXNlcnMgYSBiZXR0ZXIgaGVhZCBzdGFydC4gKi8KKyAgICBpZiAocHJvdG9fdmVyc2lvbiAhPSBQWV9TU0xfVkVSU0lPTl9TU0wyKSB7CisgICAgICAgIHJlc3VsdCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIkhJR0g6IWFOVUxMOiFlTlVMTDohTUQ1Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogU1NMdjIgbmVlZHMgTUQ1ICovCisgICAgICAgIHJlc3VsdCA9IFNTTF9DVFhfc2V0X2NpcGhlcl9saXN0KGN0eCwgIkhJR0g6IWFOVUxMOiFlTlVMTCIpOworICAgIH0KKyAgICBpZiAocmVzdWx0ID09IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5U1NMRXJyb3JPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZC4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAjaWYgZGVmaW5lZChTU0xfTU9ERV9SRUxFQVNFX0JVRkZFUlMpCiAgICAgLyogU2V0IFNTTF9NT0RFX1JFTEVBU0VfQlVGRkVSUy4gVGhpcyBwb3RlbnRpYWxseSBncmVhdGx5IHJlZHVjZXMgbWVtb3J5CiAgICAgICAgdXNhZ2UgZm9yIG5vIGNvc3QgYXQgYWxsLiBIb3dldmVyLCBkb24ndCBkbyB0aGlzIGZvciBPcGVuU1NMIHZlcnNpb25zCkBAIC0yNTA2LDYgKzI4MTcsNTIgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMCisvKltjbGluaWMgaW5wdXRdCitfc3NsLl9TU0xDb250ZXh0LmdldF9jaXBoZXJzCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE1NmU0ZDY4YTQwNmRmYzQgaW5wdXQ9YTJhYWRjOWFmODliNzljNV0qLworeworICAgIFNTTCAqc3NsID0gTlVMTDsKKyAgICBTVEFDS19PRihTU0xfQ0lQSEVSKSAqc2sgPSBOVUxMOworICAgIGNvbnN0IFNTTF9DSVBIRVIgKmNpcGhlcjsKKyAgICBpbnQgaT0wOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMLCAqZGN0OworCisgICAgc3NsID0gU1NMX25ldyhzZWxmLT5jdHgpOworICAgIGlmIChzc2wgPT0gTlVMTCkgeworICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBzayA9IFNTTF9nZXRfY2lwaGVycyhzc2wpOworCisgICAgcmVzdWx0ID0gUHlMaXN0X05ldyhza19TU0xfQ0lQSEVSX251bShzaykpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNrX1NTTF9DSVBIRVJfbnVtKHNrKTsgaSsrKSB7CisgICAgICAgIGNpcGhlciA9IHNrX1NTTF9DSVBIRVJfdmFsdWUoc2ssIGkpOworICAgICAgICBkY3QgPSBjaXBoZXJfdG9fZGljdChjaXBoZXIpOworICAgICAgICBpZiAoZGN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlc3VsdCwgaSwgZGN0KTsKKyAgICB9CisKKyAgZXhpdDoKKyAgICBpZiAoc3NsICE9IE5VTEwpCisgICAgICAgIFNTTF9mcmVlKHNzbCk7CisgICAgcmV0dXJuIHJlc3VsdDsKKworfQorI2VuZGlmCisKKwogI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKIHN0YXRpYyBpbnQKIGRvX3Byb3RvY29sX3NlbGVjdGlvbihpbnQgYWxwbiwgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLApAQCAtMjY2MiwyOCArMzAxOSwxNiBAQAogc3RhdGljIGludAogc2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZywgdm9pZCAqYykKIHsKLSAgICBpbnQgbiwgbW9kZTsKKyAgICBpbnQgbjsKICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImkiLCAmbikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAobiA9PSBQWV9TU0xfQ0VSVF9OT05FKQotICAgICAgICBtb2RlID0gU1NMX1ZFUklGWV9OT05FOwotICAgIGVsc2UgaWYgKG4gPT0gUFlfU1NMX0NFUlRfT1BUSU9OQUwpCi0gICAgICAgIG1vZGUgPSBTU0xfVkVSSUZZX1BFRVI7Ci0gICAgZWxzZSBpZiAobiA9PSBQWV9TU0xfQ0VSVF9SRVFVSVJFRCkKLSAgICAgICAgbW9kZSA9IFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgdmFsdWUgZm9yIHZlcmlmeV9tb2RlIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKG1vZGUgPT0gU1NMX1ZFUklGWV9OT05FICYmIHNlbGYtPmNoZWNrX2hvc3RuYW1lKSB7CisgICAgaWYgKG4gPT0gUFlfU1NMX0NFUlRfTk9ORSAmJiBzZWxmLT5jaGVja19ob3N0bmFtZSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc2V0IHZlcmlmeV9tb2RlIHRvIENFUlRfTk9ORSB3aGVuICIKICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVja19ob3N0bmFtZSBpcyBlbmFibGVkLiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIG1vZGUsIE5VTEwpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBfc2V0X3ZlcmlmeV9tb2RlKHNlbGYtPmN0eCwgbik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNjczLDYgKzQwMTgsNyBAQAogICAgIF9TU0xfX1NTTENPTlRFWFRfU0VUX1NFUlZFUk5BTUVfQ0FMTEJBQ0tfTUVUSE9EREVGCiAgICAgX1NTTF9fU1NMQ09OVEVYVF9DRVJUX1NUT1JFX1NUQVRTX01FVEhPRERFRgogICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRgorICAgIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMzkzOCw2ICs0Mjg0LDE5NCBAQAogfTsKIAogCisvKgorICogU1NMIFNlc3Npb24gb2JqZWN0CisgKi8KKworc3RhdGljIHZvaWQKK1B5U1NMU2Vzc2lvbl9kZWFsbG9jKFB5U1NMU2Vzc2lvbiAqc2VsZikKK3sKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgIFB5X1hERUNSRUYoc2VsZi0+Y3R4KTsKKyAgICBpZiAoc2VsZi0+c2Vzc2lvbiAhPSBOVUxMKSB7CisgICAgICAgIFNTTF9TRVNTSU9OX2ZyZWUoc2VsZi0+c2Vzc2lvbik7CisgICAgfQorICAgIFB5T2JqZWN0X0dDX0RlbChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9yaWNoY29tcGFyZShQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBpbnQgb3ApCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmIChsZWZ0ID09IE5VTEwgfHwgcmlnaHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeVNTTFNlc3Npb25fQ2hlY2sobGVmdCkgfHwgIVB5U1NMU2Vzc2lvbl9DaGVjayhyaWdodCkpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIH0KKworICAgIGlmIChsZWZ0ID09IHJpZ2h0KSB7CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqbGVmdF9pZCwgKnJpZ2h0X2lkOworICAgICAgICB1bnNpZ25lZCBpbnQgbGVmdF9sZW4sIHJpZ2h0X2xlbjsKKyAgICAgICAgbGVmdF9pZCA9IFNTTF9TRVNTSU9OX2dldF9pZCgoKFB5U1NMU2Vzc2lvbiAqKWxlZnQpLT5zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsZWZ0X2xlbik7CisgICAgICAgIHJpZ2h0X2lkID0gU1NMX1NFU1NJT05fZ2V0X2lkKCgoUHlTU0xTZXNzaW9uICopcmlnaHQpLT5zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmlnaHRfbGVuKTsKKyAgICAgICAgaWYgKGxlZnRfbGVuID09IHJpZ2h0X2xlbikgeworICAgICAgICAgICAgcmVzdWx0ID0gbWVtY21wKGxlZnRfaWQsIHJpZ2h0X2lkLCBsZWZ0X2xlbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgc3dpdGNoIChvcCkgeworICAgICAgY2FzZSBQeV9FUToKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgUHlfTkU6CisgICAgICAgIGlmIChyZXN1bHQgIT0gMCkgeworICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIFB5X0xUOgorICAgICAgY2FzZSBQeV9MRToKKyAgICAgIGNhc2UgUHlfR1Q6CisgICAgICBjYXNlIFB5X0dFOgorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgaW50CitQeVNTTFNlc3Npb25fdHJhdmVyc2UoUHlTU0xTZXNzaW9uICpzZWxmLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChzZWxmLT5jdHgpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitQeVNTTFNlc3Npb25fY2xlYXIoUHlTU0xTZXNzaW9uICpzZWxmKQoreworICAgIFB5X0NMRUFSKHNlbGYtPmN0eCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfdGltZShQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFNTTF9TRVNTSU9OX2dldF90aW1lKHNlbGYtPnNlc3Npb24pKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMU2Vzc2lvbl9nZXRfdGltZV9kb2MsCisiU2Vzc2lvbiBjcmVhdGlvbiB0aW1lIChzZWNvbmRzIHNpbmNlIGVwb2NoKS4iKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoU1NMX1NFU1NJT05fZ2V0X3RpbWVvdXQoc2VsZi0+c2Vzc2lvbikpOworfQorCitQeURvY19TVFJWQVIoUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0X2RvYywKKyJTZXNzaW9uIHRpbWVvdXQgKGRlbHRhIGluIHNlY29uZHMpLiIpOworCisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIHVuc2lnbmVkIGxvbmcgaGludCA9IFNTTF9TRVNTSU9OX2dldF90aWNrZXRfbGlmZXRpbWVfaGludChzZWxmLT5zZXNzaW9uKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoaGludCk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3RpY2tldF9saWZldGltZV9oaW50X2RvYywKKyJUaWNrZXQgbGlmZSB0aW1lIGhpbnQuIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZChQeVNTTFNlc3Npb24gKnNlbGYsIHZvaWQgKmNsb3N1cmUpIHsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppZDsKKyAgICB1bnNpZ25lZCBpbnQgbGVuOworICAgIGlkID0gU1NMX1NFU1NJT05fZ2V0X2lkKHNlbGYtPnNlc3Npb24sICZsZW4pOworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopaWQsIGxlbik7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X3Nlc3Npb25faWRfZG9jLAorIlNlc3Npb24gaWQiKTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xTZXNzaW9uX2dldF9oYXNfdGlja2V0KFB5U1NMU2Vzc2lvbiAqc2VsZiwgdm9pZCAqY2xvc3VyZSkgeworICAgIGlmIChTU0xfU0VTU0lPTl9oYXNfdGlja2V0KHNlbGYtPnNlc3Npb24pKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXRfZG9jLAorIkRvZXMgdGhlIHNlc3Npb24gY29udGFpbiBhIHRpY2tldD8iKTsKKworCitzdGF0aWMgUHlHZXRTZXREZWYgUHlTU0xTZXNzaW9uX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Imhhc190aWNrZXQiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X2hhc190aWNrZXQsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfaGFzX3RpY2tldF9kb2N9LAorICAgIHsiaWQiLCAgIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfc2Vzc2lvbl9pZCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xTZXNzaW9uX2dldF9zZXNzaW9uX2lkX2RvY30sCisgICAgeyJ0aWNrZXRfbGlmZXRpbWVfaGludCIsIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnQsCisgICAgICAgICAgICAgIE5VTEwsIFB5U1NMU2Vzc2lvbl9nZXRfdGlja2V0X2xpZmV0aW1lX2hpbnRfZG9jfSwKKyAgICB7InRpbWUiLCAoZ2V0dGVyKSBQeVNTTFNlc3Npb25fZ2V0X3RpbWUsIE5VTEwsCisgICAgICAgICAgICAgIFB5U1NMU2Vzc2lvbl9nZXRfdGltZV9kb2N9LAorICAgIHsidGltZW91dCIsIChnZXR0ZXIpIFB5U1NMU2Vzc2lvbl9nZXRfdGltZW91dCwgTlVMTCwKKyAgICAgICAgICAgICAgUHlTU0xTZXNzaW9uX2dldF90aW1lb3V0X2RvY30sCisgICAge05VTEx9LCAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMU2Vzc2lvbl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfc3NsLlNlc3Npb24iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX25hbWUqLworICAgIHNpemVvZihQeVNTTFNlc3Npb24pLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLworICAgIChkZXN0cnVjdG9yKVB5U1NMU2Vzc2lvbl9kZWFsbG9jLCAgICAgICAgICAvKnRwX2RlYWxsb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgIC8qdHBfZmxhZ3MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCisgICAgKHRyYXZlcnNlcHJvYylQeVNTTFNlc3Npb25fdHJhdmVyc2UsICAgICAgIC8qdHBfdHJhdmVyc2UqLworICAgIChpbnF1aXJ5KVB5U1NMU2Vzc2lvbl9jbGVhciwgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICBQeVNTTFNlc3Npb25fcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9tZW1iZXJzKi8KKyAgICBQeVNTTFNlc3Npb25fZ2V0c2V0bGlzdCwgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQqLworfTsKKworCiAvKiBoZWxwZXIgcm91dGluZXMgZm9yIHNlZWRpbmcgdGhlIFNTTCBQUk5HICovCiAvKltjbGluaWMgaW5wdXRdCiBfc3NsLlJBTkRfYWRkCkBAIC00MDU5LDYgKzQ1OTMsNyBAQAogfQogCiAjaWZuZGVmIE9QRU5TU0xfTk9fRUdECisvKiBMQ09WX0VYQ0xfU1RBUlQgKi8KIC8qW2NsaW5pYyBpbnB1dF0KIF9zc2wuUkFORF9lZ2QKICAgICBwYXRoOiBvYmplY3QoY29udmVydGVyPSJQeVVuaWNvZGVfRlNDb252ZXJ0ZXIiKQpAQCAtNDA4NCw2ICs0NjE5LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhieXRlcyk7CiB9CisvKiBMQ09WX0VYQ0xfU1RPUCAqLwogI2VuZGlmIC8qIE9QRU5TU0xfTk9fRUdEICovCiAKIApAQCAtNDU0MiwxMyArNTA3OCwxMiBAQAogCiAgICAgaWYgKF9zc2xfbG9ja3MgPT0gTlVMTCkgewogICAgICAgICBfc3NsX2xvY2tzX2NvdW50ID0gQ1JZUFRPX251bV9sb2NrcygpOwotICAgICAgICBfc3NsX2xvY2tzID0gUHlNZW1fTmV3KFB5VGhyZWFkX3R5cGVfbG9jaywgX3NzbF9sb2Nrc19jb3VudCk7CisgICAgICAgIF9zc2xfbG9ja3MgPSBQeU1lbV9DYWxsb2MoX3NzbF9sb2Nrc19jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlUaHJlYWRfdHlwZV9sb2NrKSk7CiAgICAgICAgIGlmIChfc3NsX2xvY2tzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBtZW1zZXQoX3NzbF9sb2NrcywgMCwKLSAgICAgICAgICAgICAgIHNpemVvZihQeVRocmVhZF90eXBlX2xvY2spICogX3NzbF9sb2Nrc19jb3VudCk7CiAgICAgICAgIGZvciAoaSA9IDA7ICBpIDwgX3NzbF9sb2Nrc19jb3VudDsgIGkrKykgewogICAgICAgICAgICAgX3NzbF9sb2Nrc1tpXSA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKICAgICAgICAgICAgIGlmIChfc3NsX2xvY2tzW2ldID09IE5VTEwpIHsKQEAgLTQ2MjMsNiArNTE1OCw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5U1NMTWVtb3J5QklPX1R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlTU0xTZXNzaW9uX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKIAogICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJl9zc2xtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCkBAIC00Njk0LDYgKzUyMzIsMTAgQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1lbW9yeUJJTyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeVNTTE1lbW9yeUJJT19UeXBlKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNTTFNlc3Npb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlTU0xTZXNzaW9uX1R5cGUpICE9IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNTTF9FUlJPUl9aRVJPX1JFVFVSTiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NMX0VSUk9SX1pFUk9fUkVUVVJOKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU1NMX0VSUk9SX1dBTlRfUkVBRCIsCkBAIC00Nzk4LDYgKzUzNDAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFMpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlBST1RPQ09MX1RMU19DTElFTlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMU19DTElFTlQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQUk9UT0NPTF9UTFNfU0VSVkVSIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9TU0xfVkVSU0lPTl9UTFNfU0VSVkVSKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUFJPVE9DT0xfVExTdjEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX1NTTF9WRVJTSU9OX1RMUzEpOwogI2lmIEhBVkVfVExTdjFfMgpAQCAtNDgyMCw2ICs1MzY2LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU0xfT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfU0lOR0xFX0RIX1VTRSIsIFNTTF9PUF9TSU5HTEVfREhfVVNFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVElDS0VUIiwgU1NMX09QX05PX1RJQ0tFVCk7CiAjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9TSU5HTEVfRUNESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0VDREhfVVNFKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3RydWN0LmMgYi9Nb2R1bGVzL19zdHJ1Y3QuYwppbmRleCBmOTY1NTQxLi43OTZkMTY4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zdHJ1Y3QuYworKysgYi9Nb2R1bGVzL19zdHJ1Y3QuYwpAQCAtNjAsNiArNjAsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGRvdWJsZSB4OyB9IHN0X2RvdWJsZTsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyB2b2lkICp4OyB9IHN0X3ZvaWRfcDsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBzaXplX3QgeDsgfSBzdF9zaXplX3Q7Cit0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgX0Jvb2wgeDsgfSBzdF9ib29sOwogCiAjZGVmaW5lIFNIT1JUX0FMSUdOIChzaXplb2Yoc3Rfc2hvcnQpIC0gc2l6ZW9mKHNob3J0KSkKICNkZWZpbmUgSU5UX0FMSUdOIChzaXplb2Yoc3RfaW50KSAtIHNpemVvZihpbnQpKQpAQCAtNjgsMjIgKzY5LDEyIEBACiAjZGVmaW5lIERPVUJMRV9BTElHTiAoc2l6ZW9mKHN0X2RvdWJsZSkgLSBzaXplb2YoZG91YmxlKSkKICNkZWZpbmUgVk9JRF9QX0FMSUdOIChzaXplb2Yoc3Rfdm9pZF9wKSAtIHNpemVvZih2b2lkICopKQogI2RlZmluZSBTSVpFX1RfQUxJR04gKHNpemVvZihzdF9zaXplX3QpIC0gc2l6ZW9mKHNpemVfdCkpCisjZGVmaW5lIEJPT0xfQUxJR04gKHNpemVvZihzdF9ib29sKSAtIHNpemVvZihfQm9vbCkpCiAKIC8qIFdlIGNhbid0IHN1cHBvcnQgcSBhbmQgUSBpbiBuYXRpdmUgbW9kZSB1bmxlc3MgdGhlIGNvbXBpbGVyIGRvZXM7CiAgICBpbiBzdGQgbW9kZSwgdGhleSdyZSA4IGJ5dGVzIG9uIGFsbCBwbGF0Zm9ybXMuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBQWV9MT05HX0xPTkcgeDsgfSBzX2xvbmdfbG9uZzsKLSNkZWZpbmUgTE9OR19MT05HX0FMSUdOIChzaXplb2Yoc19sb25nX2xvbmcpIC0gc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfQzk5X0JPT0wKLSNkZWZpbmUgQk9PTF9UWVBFIF9Cb29sCi10eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgX0Jvb2wgeDsgfSBzX2Jvb2w7Ci0jZGVmaW5lIEJPT0xfQUxJR04gKHNpemVvZihzX2Jvb2wpIC0gc2l6ZW9mKEJPT0xfVFlQRSkpCi0jZWxzZQotI2RlZmluZSBCT09MX1RZUEUgY2hhcgotI2RlZmluZSBCT09MX0FMSUdOIDAKLSNlbmRpZgordHlwZWRlZiBzdHJ1Y3QgeyBjaGFyIGM7IGxvbmcgbG9uZyB4OyB9IHNfbG9uZ19sb25nOworI2RlZmluZSBMT05HX0xPTkdfQUxJR04gKHNpemVvZihzX2xvbmdfbG9uZykgLSBzaXplb2YobG9uZyBsb25nKSkKIAogI2lmZGVmIF9fcG93ZXJjCiAjcHJhZ21hIG9wdGlvbnMgYWxpZ249cmVzZXQKQEAgLTE2NCwxNCArMTU1LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBTYW1lLCBidXQgaGFuZGxpbmcgbmF0aXZlIGxvbmcgbG9uZy4gKi8KIAogc3RhdGljIGludAotZ2V0X2xvbmdsb25nKFB5T2JqZWN0ICp2LCBQWV9MT05HX0xPTkcgKnApCitnZXRfbG9uZ2xvbmcoUHlPYmplY3QgKnYsIGxvbmcgbG9uZyAqcCkKIHsKLSAgICBQWV9MT05HX0xPTkcgeDsKKyAgICBsb25nIGxvbmcgeDsKIAogICAgIHYgPSBnZXRfcHlsb25nKHYpOwogICAgIGlmICh2ID09IE5VTEwpCkBAIC0xNzksNyArMTY4LDcgQEAKICAgICBhc3NlcnQoUHlMb25nX0NoZWNrKHYpKTsKICAgICB4ID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIGlmICh4ID09IChQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIGlmICh4ID09IChsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CkBAIC0xOTIsOSArMTgxLDkgQEAKIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBuYXRpdmUgdW5zaWduZWQgbG9uZyBsb25nLiAqLwogCiBzdGF0aWMgaW50Ci1nZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKnApCitnZXRfdWxvbmdsb25nKFB5T2JqZWN0ICp2LCB1bnNpZ25lZCBsb25nIGxvbmcgKnApCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAKICAgICB2ID0gZ2V0X3B5bG9uZyh2KTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMjAyLDcgKzE5MSw3IEBACiAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CiAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhTdHJ1Y3RFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CkBAIC0yMTIsOCArMjAxLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2VuZGlmCi0KIC8qIFNhbWUsIGJ1dCBoYW5kbGluZyBQeV9zc2l6ZV90ICovCiAKIHN0YXRpYyBpbnQKQEAgLTI2Nyw2ICsyNTQsMzMgQEAKIC8qIEZsb2F0aW5nIHBvaW50IGhlbHBlcnMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKK3VucGFja19oYWxmZmxvYXQoY29uc3QgY2hhciAqcCwgIC8qIHN0YXJ0IG9mIDItYnl0ZSBzdHJpbmcgKi8KKyAgICAgICAgICAgICAgICAgaW50IGxlKSAgICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCit7CisgICAgZG91YmxlIHg7CisKKyAgICB4ID0gX1B5RmxvYXRfVW5wYWNrMigodW5zaWduZWQgY2hhciAqKXAsIGxlKTsKKyAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7Cit9CisKK3N0YXRpYyBpbnQKK3BhY2tfaGFsZmZsb2F0KGNoYXIgKnAsICAgICAgLyogc3RhcnQgb2YgMi1ieXRlIHN0cmluZyAqLworICAgICAgICAgICAgICAgUHlPYmplY3QgKnYsICAvKiB2YWx1ZSB0byBwYWNrICovCisgICAgICAgICAgICAgICBpbnQgbGUpICAgICAgIC8qIHRydWUgZm9yIGxpdHRsZS1lbmRpYW4sIGZhbHNlIGZvciBiaWctZW5kaWFuICovCit7CisgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOworICAgIGlmICh4ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQgYXJndW1lbnQgaXMgbm90IGEgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gX1B5RmxvYXRfUGFjazIoeCwgKHVuc2lnbmVkIGNoYXIgKilwLCBsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiB1bnBhY2tfZmxvYXQoY29uc3QgY2hhciAqcCwgIC8qIHN0YXJ0IG9mIDQtYnl0ZSBzdHJpbmcgKi8KICAgICAgICAgIGludCBsZSkgICAgICAgICAgICAgLyogdHJ1ZSBmb3IgbGl0dGxlLWVuZGlhbiwgZmFsc2UgZm9yIGJpZy1lbmRpYW4gKi8KIHsKQEAgLTQzNiw0MCArNDUwLDQ2IEBACiAvKiBOYXRpdmUgbW9kZSBkb2Vzbid0IHN1cHBvcnQgcSBvciBRIHVubGVzcyB0aGUgcGxhdGZvcm0gQyBzdXBwb3J0cwogICAgbG9uZyBsb25nIChvciwgb24gV2luZG93cywgX19pbnQ2NCkuICovCiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBudV91bG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7CiB9CiAKLSNlbmRpZgotCiBzdGF0aWMgUHlPYmplY3QgKgogbnVfYm9vbChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgQk9PTF9UWVBFIHg7CisgICAgX0Jvb2wgeDsKICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoeCAhPSAwKTsKIH0KIAogCiBzdGF0aWMgUHlPYmplY3QgKgorbnVfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMSk7CisjZWxzZQorICAgIHJldHVybiB1bnBhY2tfaGFsZmZsb2F0KHAsIDApOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBudV9mbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZmxvYXQgeDsKQEAgLTY0MywxMiArNjYzLDEwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotCiBzdGF0aWMgaW50CiBucF9sb25nbG9uZyhjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmIChnZXRfbG9uZ2xvbmcodiwgJngpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CkBAIC02NTgsMjAgKzY3NiwxOSBAQAogc3RhdGljIGludAogbnBfdWxvbmdsb25nKGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHg7CiAgICAgaWYgKGdldF91bG9uZ2xvbmcodiwgJngpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKIAogCiBzdGF0aWMgaW50CiBucF9ib29sKGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgaW50IHk7Ci0gICAgQk9PTF9UWVBFIHg7CisgICAgX0Jvb2wgeDsKICAgICB5ID0gUHlPYmplY3RfSXNUcnVlKHYpOwogICAgIGlmICh5IDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjgxLDYgKzY5OCwxNiBAQAogfQogCiBzdGF0aWMgaW50CitucF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyNpZiBQWV9MSVRUTEVfRU5ESUFOCisgICAgcmV0dXJuIHBhY2tfaGFsZmZsb2F0KHAsIHYsIDEpOworI2Vsc2UKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMCk7CisjZW5kaWYKK30KKworc3RhdGljIGludAogbnBfZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBmbG9hdCB4ID0gKGZsb2F0KVB5RmxvYXRfQXNEb3VibGUodik7CkBAIC03MjMsNyArNzUwLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGZvcm1hdGRlZiBuYXRpdmVfdGFibGVbXSA9IHsKK3N0YXRpYyBjb25zdCBmb3JtYXRkZWYgbmF0aXZlX3RhYmxlW10gPSB7CiAgICAgeyd4JywgICAgICAgc2l6ZW9mKGNoYXIpLCAgIDAsICAgICAgICAgICAgICBOVUxMfSwKICAgICB7J2InLCAgICAgICBzaXplb2YoY2hhciksICAgMCwgICAgICAgICAgICAgIG51X2J5dGUsICAgICAgICBucF9ieXRlfSwKICAgICB7J0InLCAgICAgICBzaXplb2YoY2hhciksICAgMCwgICAgICAgICAgICAgIG51X3VieXRlLCAgICAgICBucF91Ynl0ZX0sCkBAIC03MzgsMTEgKzc2NSwxMCBAQAogICAgIHsnTCcsICAgICAgIHNpemVvZihsb25nKSwgICBMT05HX0FMSUdOLCAgICAgbnVfdWxvbmcsICAgICAgIG5wX3Vsb25nfSwKICAgICB7J24nLCAgICAgICBzaXplb2Yoc2l6ZV90KSwgU0laRV9UX0FMSUdOLCAgIG51X3NzaXplX3QsICAgICBucF9zc2l6ZV90fSwKICAgICB7J04nLCAgICAgICBzaXplb2Yoc2l6ZV90KSwgU0laRV9UX0FMSUdOLCAgIG51X3NpemVfdCwgICAgICBucF9zaXplX3R9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgeydxJywgICAgICAgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIExPTkdfTE9OR19BTElHTiwgbnVfbG9uZ2xvbmcsIG5wX2xvbmdsb25nfSwKLSAgICB7J1EnLCAgICAgICBzaXplb2YoUFlfTE9OR19MT05HKSwgTE9OR19MT05HX0FMSUdOLCBudV91bG9uZ2xvbmcsbnBfdWxvbmdsb25nfSwKLSNlbmRpZgotICAgIHsnPycsICAgICAgIHNpemVvZihCT09MX1RZUEUpLCAgICAgIEJPT0xfQUxJR04sICAgICBudV9ib29sLCAgICAgICAgbnBfYm9vbH0sCisgICAgeydxJywgICAgICAgc2l6ZW9mKGxvbmcgbG9uZyksIExPTkdfTE9OR19BTElHTiwgbnVfbG9uZ2xvbmcsIG5wX2xvbmdsb25nfSwKKyAgICB7J1EnLCAgICAgICBzaXplb2YobG9uZyBsb25nKSwgTE9OR19MT05HX0FMSUdOLCBudV91bG9uZ2xvbmcsbnBfdWxvbmdsb25nfSwKKyAgICB7Jz8nLCAgICAgICBzaXplb2YoX0Jvb2wpLCAgICAgIEJPT0xfQUxJR04sICAgICBudV9ib29sLCAgICAgICAgbnBfYm9vbH0sCisgICAgeydlJywgICAgICAgc2l6ZW9mKHNob3J0KSwgIFNIT1JUX0FMSUdOLCAgICBudV9oYWxmZmxvYXQsICAgbnBfaGFsZmZsb2F0fSwKICAgICB7J2YnLCAgICAgICBzaXplb2YoZmxvYXQpLCAgRkxPQVRfQUxJR04sICAgIG51X2Zsb2F0LCAgICAgICBucF9mbG9hdH0sCiAgICAgeydkJywgICAgICAgc2l6ZW9mKGRvdWJsZSksIERPVUJMRV9BTElHTiwgICBudV9kb3VibGUsICAgICAgbnBfZG91YmxlfSwKICAgICB7J1AnLCAgICAgICBzaXplb2Yodm9pZCAqKSwgVk9JRF9QX0FMSUdOLCAgIG51X3ZvaWRfcCwgICAgICBucF92b2lkX3B9LApAQCAtNzgzLDggKzgwOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVfbG9uZ2xvbmcoY29uc3QgY2hhciAqcCwgY29uc3QgZm9ybWF0ZGVmICpmKQogewotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIHggPSAwOworICAgIGxvbmcgbG9uZyB4ID0gMDsKICAgICBQeV9zc2l6ZV90IGkgPSBmLT5zaXplOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ5dGVzID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGRvIHsKQEAgLTc5MiwzNyArODE3LDMwIEBACiAgICAgfSB3aGlsZSAoLS1pID4gMCk7CiAgICAgLyogRXh0ZW5kIHRoZSBzaWduIGJpdC4gKi8KICAgICBpZiAoU0laRU9GX0xPTkdfTE9ORyA+IGYtPnNpemUpCi0gICAgICAgIHggfD0gLSh4ICYgKChQWV9MT05HX0xPTkcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CisgICAgICAgIHggfD0gLSh4ICYgKChsb25nIGxvbmcpMSA8PCAoKDggKiBmLT5zaXplKSAtIDEpKSk7CiAgICAgaWYgKHggPj0gTE9OR19NSU4gJiYgeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDEgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1X3Vsb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewogICAgICAgICB4ID0gKHg8PDgpIHwgKmJ5dGVzKys7CiAgICAgfSB3aGlsZSAoLS1pID4gMCk7CiAgICAgaWYgKHggPD0gTE9OR19NQVgpCi0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCB1bnNpZ25lZCBQWV9MT05HX0xPTkcsIGxvbmcpKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZykpOwogICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoeCk7Ci0jZWxzZQotICAgIHJldHVybiBfUHlMb25nX0Zyb21CeXRlQXJyYXkoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogbGl0dGxlLWVuZGlhbiAqLwotICAgICAgICAgICAgICAgICAgICAgIDAgIC8qIHNpZ25lZCAqLyk7Ci0jZW5kaWYKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J1X2hhbGZmbG9hdChjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCit7CisgICAgcmV0dXJuIHVucGFja19oYWxmZmxvYXQocCwgMCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC05MjIsNiArOTQwLDEyIEBACiB9CiAKIHN0YXRpYyBpbnQKK2JwX2hhbGZmbG9hdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHJldHVybiBwYWNrX2hhbGZmbG9hdChwLCB2LCAwKTsKK30KKworc3RhdGljIGludAogYnBfZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKICAgICBkb3VibGUgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CkBAIC05NzIsNiArOTk2LDcgQEAKICAgICB7J3EnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2xvbmdsb25nLCAgICBicF9sb25nbG9uZ30sCiAgICAgeydRJywgICAgICAgOCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBidV91bG9uZ2xvbmcsICAgYnBfdWxvbmdsb25nfSwKICAgICB7Jz8nLCAgICAgICAxLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2Jvb2wsICAgICAgICBicF9ib29sfSwKKyAgICB7J2UnLCAgICAgICAyLCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2hhbGZmbG9hdCwgICBicF9oYWxmZmxvYXR9LAogICAgIHsnZicsICAgICAgIDQsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfZmxvYXQsICAgICAgIGJwX2Zsb2F0fSwKICAgICB7J2QnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGJ1X2RvdWJsZSwgICAgICBicF9kb3VibGV9LAogICAgIHswfQpAQCAtMTAxMSw4ICsxMDM2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBsdV9sb25nbG9uZyhjb25zdCBjaGFyICpwLCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBQWV9MT05HX0xPTkcgeCA9IDA7CisgICAgbG9uZyBsb25nIHggPSAwOwogICAgIFB5X3NzaXplX3QgaSA9IGYtPnNpemU7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnl0ZXMgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXA7CiAgICAgZG8gewpAQCAtMTAyMCwzNyArMTA0NCwzMCBAQAogICAgIH0gd2hpbGUgKGkgPiAwKTsKICAgICAvKiBFeHRlbmQgdGhlIHNpZ24gYml0LiAqLwogICAgIGlmIChTSVpFT0ZfTE9OR19MT05HID4gZi0+c2l6ZSkKLSAgICAgICAgeCB8PSAtKHggJiAoKFBZX0xPTkdfTE9ORykxIDw8ICgoOCAqIGYtPnNpemUpIC0gMSkpKTsKKyAgICAgICAgeCB8PSAtKHggJiAoKGxvbmcgbG9uZykxIDw8ICgoOCAqIGYtPnNpemUpIC0gMSkpKTsKICAgICBpZiAoeCA+PSBMT05HX01JTiAmJiB4IDw9IExPTkdfTUFYKQotICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgUFlfTE9OR19MT05HLCBsb25nKSk7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoUHlfU0FGRV9ET1dOQ0FTVCh4LCBsb25nIGxvbmcsIGxvbmcpKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZyh4KTsKLSNlbHNlCi0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAvKiBsaXR0bGUtZW5kaWFuICovCi0gICAgICAgICAgICAgICAgICAgICAgMSAgLyogc2lnbmVkICovKTsKLSNlbmRpZgogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogbHVfdWxvbmdsb25nKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4ID0gMDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeCA9IDA7CiAgICAgUHlfc3NpemVfdCBpID0gZi0+c2l6ZTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpieXRlcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopcDsKICAgICBkbyB7CiAgICAgICAgIHggPSAoeDw8OCkgfCBieXRlc1stLWldOwogICAgIH0gd2hpbGUgKGkgPiAwKTsKICAgICBpZiAoeCA8PSBMT05HX01BWCkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhQeV9TQUZFX0RPV05DQVNUKHgsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORywgbG9uZykpOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QoeCwgdW5zaWduZWQgbG9uZyBsb25nLCBsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh4KTsKLSNlbHNlCi0gICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAvKiBsaXR0bGUtZW5kaWFuICovCi0gICAgICAgICAgICAgICAgICAgICAgMCAgLyogc2lnbmVkICovKTsKLSNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgorbHVfaGFsZmZsb2F0KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gdW5wYWNrX2hhbGZmbG9hdChwLCAxKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExNDIsNiArMTE1OSwxMiBAQAogfQogCiBzdGF0aWMgaW50CitscF9oYWxmZmxvYXQoY2hhciAqcCwgUHlPYmplY3QgKnYsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICByZXR1cm4gcGFja19oYWxmZmxvYXQocCwgdiwgMSk7Cit9CisKK3N0YXRpYyBpbnQKIGxwX2Zsb2F0KGNoYXIgKnAsIFB5T2JqZWN0ICp2LCBjb25zdCBmb3JtYXRkZWYgKmYpCiB7CiAgICAgZG91YmxlIHggPSBQeUZsb2F0X0FzRG91YmxlKHYpOwpAQCAtMTE4Miw2ICsxMjA1LDcgQEAKICAgICB7J1EnLCAgICAgICA4LCAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgIGx1X3Vsb25nbG9uZywgICBscF91bG9uZ2xvbmd9LAogICAgIHsnPycsICAgICAgIDEsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgYnVfYm9vbCwgICAgICAgIGJwX2Jvb2x9LCAvKiBTdGQgcmVwIG5vdCBlbmRpYW4gZGVwLAogICAgICAgICBidXQgcG90ZW50aWFsbHkgZGlmZmVyZW50IGZyb20gbmF0aXZlIHJlcCAtLSByZXVzZSBieF9ib29sIGZ1bmNzLiAqLworICAgIHsnZScsICAgICAgIDIsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfaGFsZmZsb2F0LCAgIGxwX2hhbGZmbG9hdH0sCiAgICAgeydmJywgICAgICAgNCwgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICBsdV9mbG9hdCwgICAgICAgbHBfZmxvYXR9LAogICAgIHsnZCcsICAgICAgIDgsICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgbHVfZG91YmxlLCAgICAgIGxwX2RvdWJsZX0sCiAgICAgezB9CkBAIC0xMTg5LDcgKzEyMTMsNyBAQAogCiAKIHN0YXRpYyBjb25zdCBmb3JtYXRkZWYgKgotd2hpY2h0YWJsZShjaGFyICoqcGZtdCkKK3doaWNodGFibGUoY29uc3QgY2hhciAqKnBmbXQpCiB7CiAgICAgY29uc3QgY2hhciAqZm10ID0gKCpwZm10KSsrOyAvKiBNYXkgYmUgYmFja2VkIG91dCBvZiBsYXRlciAqLwogICAgIHN3aXRjaCAoKmZtdCkgewpAQCAtMTI2OCw3ICsxMjkyLDcgQEAKIAogICAgIGZtdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPnNfZm9ybWF0KTsKIAotICAgIGYgPSB3aGljaHRhYmxlKChjaGFyICoqKSZmbXQpOworICAgIGYgPSB3aGljaHRhYmxlKCZmbXQpOwogCiAgICAgcyA9IGZtdDsKICAgICBzaXplID0gMDsKQEAgLTE0NTYsNyArMTQ4MCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1zX3VucGFja19pbnRlcm5hbChQeVN0cnVjdE9iamVjdCAqc29zZWxmLCBjaGFyICpzdGFydGZyb20pIHsKK3NfdW5wYWNrX2ludGVybmFsKFB5U3RydWN0T2JqZWN0ICpzb3NlbGYsIGNvbnN0IGNoYXIgKnN0YXJ0ZnJvbSkgewogICAgIGZvcm1hdGNvZGUgKmNvZGU7CiAgICAgUHlfc3NpemVfdCBpID0gMDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlUdXBsZV9OZXcoc29zZWxmLT5zX2xlbik7CkBAIC0yMjM5LDcgKzIyNjMsNyBAQAogICB4OiBwYWQgYnl0ZSAobm8gZGF0YSk7IGM6Y2hhcjsgYjpzaWduZWQgYnl0ZTsgQjp1bnNpZ25lZCBieXRlO1xuXAogICA/OiBfQm9vbCAocmVxdWlyZXMgQzk5OyBpZiBub3QgYXZhaWxhYmxlLCBjaGFyIGlzIHVzZWQgaW5zdGVhZClcblwKICAgaDpzaG9ydDsgSDp1bnNpZ25lZCBzaG9ydDsgaTppbnQ7IEk6dW5zaWduZWQgaW50O1xuXAotICBsOmxvbmc7IEw6dW5zaWduZWQgbG9uZzsgZjpmbG9hdDsgZDpkb3VibGUuXG5cCisgIGw6bG9uZzsgTDp1bnNpZ25lZCBsb25nOyBmOmZsb2F0OyBkOmRvdWJsZTsgZTpoYWxmLWZsb2F0LlxuXAogU3BlY2lhbCBjYXNlcyAocHJlY2VkaW5nIGRlY2ltYWwgY291bnQgaW5kaWNhdGVzIGxlbmd0aCk6XG5cCiAgIHM6c3RyaW5nIChhcnJheSBvZiBjaGFyKTsgcDogcGFzY2FsIHN0cmluZyAod2l0aCBjb3VudCBieXRlKS5cblwKIFNwZWNpYWwgY2FzZXMgKG9ubHkgYXZhaWxhYmxlIGluIG5hdGl2ZSBmb3JtYXQpOlxuXApAQCAtMjI3OSw3ICsyMzAzLDcgQEAKIAogICAgIC8qIENoZWNrIGVuZGlhbiBhbmQgc3dhcCBpbiBmYXN0ZXIgZnVuY3Rpb25zICovCiAgICAgewotICAgICAgICBmb3JtYXRkZWYgKm5hdGl2ZSA9IG5hdGl2ZV90YWJsZTsKKyAgICAgICAgY29uc3QgZm9ybWF0ZGVmICpuYXRpdmUgPSBuYXRpdmVfdGFibGU7CiAgICAgICAgIGZvcm1hdGRlZiAqb3RoZXIsICpwdHI7CiAjaWYgUFlfTElUVExFX0VORElBTgogICAgICAgICBvdGhlciA9IGxpbGVuZGlhbl90YWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RidWZmZXIuYyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwppbmRleCA0M2RiOGE4Li4xM2QzY2NjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKKysrIGIvTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCkBAIC0xMyw3ICsxMyw3IEBACiBQeU9iamVjdCAqY2FsY3NpemUgPSBOVUxMOwogCiAvKiBjYWNoZSBzaW1wbGUgZm9ybWF0IHN0cmluZyAqLwotc3RhdGljIGNvbnN0IGNoYXIgKnNpbXBsZV9mbXQgPSAiQiI7CitzdGF0aWMgY29uc3QgY2hhciBzaW1wbGVfZm10W10gPSAiQiI7CiBQeU9iamVjdCAqc2ltcGxlX2Zvcm1hdCA9IE5VTEw7CiAjZGVmaW5lIFNJTVBMRV9GT1JNQVQoZm10KSAoZm10ID09IE5VTEwgfHwgc3RyY21wKGZtdCwgIkIiKSA9PSAwKQogI2RlZmluZSBGSVhfRk9STUFUKGZtdCkgKGZtdCA9PSBOVUxMID8gIkIiIDogZm10KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKaW5kZXggNGVjZDQ4YS4uNzQ0MjJhMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworKysgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCkBAIC02MCw5ICs2MCw3IEBACiAgICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9MT05HLCBsb25nKTsKICAgICBDSEVDS19TSVpFT0YoU0laRU9GX1ZPSURfUCwgdm9pZCopOwogICAgIENIRUNLX1NJWkVPRihTSVpFT0ZfVElNRV9ULCB0aW1lX3QpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgQ0hFQ0tfU0laRU9GKFNJWkVPRl9MT05HX0xPTkcsIFBZX0xPTkdfTE9ORyk7Ci0jZW5kaWYKKyAgICBDSEVDS19TSVpFT0YoU0laRU9GX0xPTkdfTE9ORywgbG9uZyBsb25nKTsKIAogI3VuZGVmIENIRUNLX1NJWkVPRgogCkBAIC0xMDAsMjIgKzk4LDE0IEBACiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfVUNTMSwgMCk7CiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfVUNTMiwgMCk7CiAgICAgQ0hFQ0tfU0lHTk5FU1MoUHlfVUNTNCwgMCk7Ci0jaWZkZWYgSEFWRV9JTlQzMl9UCi0gICAgQ0hFQ0tfU0laRU9GKFBZX0lOVDMyX1QsIDQpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX0lOVDMyX1QsIDEpOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9VSU5UMzJfVAotICAgIENIRUNLX1NJWkVPRihQWV9VSU5UMzJfVCwgNCk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUFlfVUlOVDMyX1QsIDApOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9JTlQ2NF9UCi0gICAgQ0hFQ0tfU0laRU9GKFBZX0lOVDY0X1QsIDgpOwotICAgIENIRUNLX1NJR05ORVNTKFBZX0lOVDY0X1QsIDEpOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9VSU5UNjRfVAotICAgIENIRUNLX1NJWkVPRihQWV9VSU5UNjRfVCwgOCk7Ci0gICAgQ0hFQ0tfU0lHTk5FU1MoUFlfVUlOVDY0X1QsIDApOwotI2VuZGlmCisgICAgQ0hFQ0tfU0laRU9GKGludDMyX3QsIDQpOworICAgIENIRUNLX1NJR05ORVNTKGludDMyX3QsIDEpOworICAgIENIRUNLX1NJWkVPRih1aW50MzJfdCwgNCk7CisgICAgQ0hFQ0tfU0lHTk5FU1ModWludDMyX3QsIDApOworICAgIENIRUNLX1NJWkVPRihpbnQ2NF90LCA4KTsKKyAgICBDSEVDS19TSUdOTkVTUyhpbnQ2NF90LCAxKTsKKyAgICBDSEVDS19TSVpFT0YodWludDY0X3QsIDgpOworICAgIENIRUNLX1NJR05ORVNTKHVpbnQ2NF90LCAwKTsKIAogICAgIC8qIHBvaW50ZXIvc2l6ZSB0eXBlcyAqLwogICAgIENIRUNLX1NJWkVPRihzaXplX3QsIHNpemVvZih2b2lkICopKTsKQEAgLTEyMywxMCArMTEzLDEwIEBACiAgICAgQ0hFQ0tfU0laRU9GKFB5X3NzaXplX3QsIHNpemVvZih2b2lkICopKTsKICAgICBDSEVDS19TSUdOTkVTUyhQeV9zc2l6ZV90LCAxKTsKIAotICAgIENIRUNLX1NJWkVPRihQeV91aW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKLSAgICBDSEVDS19TSUdOTkVTUyhQeV91aW50cHRyX3QsIDApOwotICAgIENIRUNLX1NJWkVPRihQeV9pbnRwdHJfdCwgc2l6ZW9mKHZvaWQgKikpOwotICAgIENIRUNLX1NJR05ORVNTKFB5X2ludHB0cl90LCAxKTsKKyAgICBDSEVDS19TSVpFT0YodWludHB0cl90LCBzaXplb2Yodm9pZCAqKSk7CisgICAgQ0hFQ0tfU0lHTk5FU1ModWludHB0cl90LCAwKTsKKyAgICBDSEVDS19TSVpFT0YoaW50cHRyX3QsIHNpemVvZih2b2lkICopKTsKKyAgICBDSEVDS19TSUdOTkVTUyhpbnRwdHJfdCwgMSk7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0zNTcsMTIgKzM0NywxMiBAQAogfQogCiAKLS8qIFRlc3RzIG9mIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nKCksIGFuZCAoI2lmZGVmIEhBVkVfTE9OR19MT05HKQorLyogVGVzdHMgb2YgUHlMb25nX3tBcywgRnJvbX17VW5zaWduZWQsfUxvbmcoKSwgYW5kCiAgICBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZ0xvbmcoKS4KIAogICAgTm90ZSB0aGF0IHRoZSBtZWF0IG9mIHRoZSB0ZXN0IGlzIGNvbnRhaW5lZCBpbiB0ZXN0Y2FwaV9sb25nLmguCiAgICBUaGlzIGlzIHJldm9sdGluZywgYnV0IGRlbGljYXRlIGNvZGUgZHVwbGljYXRpb24gaXMgd29yc2U6ICAiYWxtb3N0Ci0gICBleGFjdGx5IHRoZSBzYW1lIiBjb2RlIGlzIG5lZWRlZCB0byB0ZXN0IFBZX0xPTkdfTE9ORywgYnV0IHRoZSB1YmlxdWl0b3VzCisgICBleGFjdGx5IHRoZSBzYW1lIiBjb2RlIGlzIG5lZWRlZCB0byB0ZXN0IGxvbmcgbG9uZywgYnV0IHRoZSB1YmlxdWl0b3VzCiAgICBkZXBlbmRlbmNlIG9uIHR5cGUgbmFtZXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byB1c2UgYSBwYXJhbWV0ZXJpemVkCiAgICBmdW5jdGlvbi4gIEEgZ2lhbnQgbWFjcm8gd291bGQgYmUgZXZlbiB3b3JzZSB0aGFuIHRoaXMuICBBIEMrKyB0ZW1wbGF0ZQogICAgd291bGQgYmUgcGVyZmVjdC4KQEAgLTQwMiw4ICszOTIsNiBAQAogI3VuZGVmIEZfVV9UT19QWQogI3VuZGVmIEZfUFlfVE9fVQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIHJhaXNlX3Rlc3RfbG9uZ2xvbmdfZXJyb3IoY29uc3QgY2hhciogbXNnKQogewpAQCAtNDExLDcgKzM5OSw3IEBACiB9CiAKICNkZWZpbmUgVEVTVE5BTUUgICAgICAgIHRlc3RfbG9uZ2xvbmdfYXBpX2lubmVyCi0jZGVmaW5lIFRZUEVOQU1FICAgICAgICBQWV9MT05HX0xPTkcKKyNkZWZpbmUgVFlQRU5BTUUgICAgICAgIGxvbmcgbG9uZwogI2RlZmluZSBGX1NfVE9fUFkgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZwogI2RlZmluZSBGX1BZX1RPX1MgICAgICAgUHlMb25nX0FzTG9uZ0xvbmcKICNkZWZpbmUgRl9VX1RPX1BZICAgICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwpAQCAtNTk4LDcgKzU4Niw3IEBACiB9CiAKIC8qIFRlc3QgdGhlIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cgQVBJLiBHZW5lcmFsIGNvbnZlcnNpb24gdG8KLSAgIFBZX0xPTkdfTE9ORyBpcyB0ZXN0ZWQgYnkgdGVzdF9sb25nX2FwaV9pbm5lci4gVGhpcyB0ZXN0IHdpbGwKKyAgIGxvbmcgbG9uZyBpcyB0ZXN0ZWQgYnkgdGVzdF9sb25nX2FwaV9pbm5lci4gVGhpcyB0ZXN0IHdpbGwKICAgIGNvbmNlbnRyYXRlIG9uIHByb3BlciBoYW5kbGluZyBvZiBvdmVyZmxvdy4KICovCiAKQEAgLTYwNiw3ICs1OTQsNyBAQAogdGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93KFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpudW0sICpvbmUsICp0ZW1wOwotICAgIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICBsb25nIGxvbmcgdmFsdWU7CiAgICAgaW50IG92ZXJmbG93OwogCiAgICAgLyogVGVzdCB0aGF0IG92ZXJmbG93IGlzIHNldCBwcm9wZXJseSBmb3IgYSBsYXJnZSB2YWx1ZS4gKi8KQEAgLTgyNCw3ICs4MTIsNyBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi0vKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgUFlfTE9OR19MT05HCisvKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgbG9uZyBsb25nCiAgICBmb3IgYm90aCBsb25nIGFuZCBpbnQgYXJndW1lbnRzLiAgVGhlIHRlc3QgbWF5IGxlYWsgYSBsaXR0bGUgbWVtb3J5IGlmCiAgICBpdCBmYWlscy4KICovCkBAIC04MzIsNyArODIwLDcgQEAKIHRlc3RfTF9jb2RlKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0dXBsZSwgKm51bTsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogCiAgICAgdHVwbGUgPSBQeVR1cGxlX05ldygxKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKQEAgLTg3MCw4ICs4NTgsNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi0jZW5kaWYgIC8qIGlmZGVmIEhBVkVfTE9OR19MT05HICovCi0KIHN0YXRpYyBQeU9iamVjdCAqCiByZXR1cm5fbm9uZSh2b2lkICp1bnVzZWQpCiB7CkBAIC0xMDAxLDcgKzk4Nyw3IEBACiBnZXRhcmdzX2tleXdvcmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCBOVUxMfTsKLSAgICBzdGF0aWMgY2hhciAqZm10PSIoaWkpaXwoaShpaSkpKGlpaSlpIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmbXRbXSA9ICIoaWkpaXwoaShpaSkpKGlpaSlpIjsKICAgICBpbnQgaW50X2FyZ3NbMTBdPXstMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAtMX07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsIGZtdCwga2V5d29yZHMsCkBAIC0xMDI4LDYgKzEwMTQsMjEgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaWlpIiwgcmVxdWlyZWQsIG9wdGlvbmFsLCBrZXl3b3JkX29ubHkpOwogfQogCisvKiB0ZXN0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBwb3NpdGlvbmFsLW9ubHkgYXJndW1lbnRzICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiIiwgIiIsICJrZXl3b3JkIiwgTlVMTH07CisgICAgaW50IHJlcXVpcmVkID0gLTE7CisgICAgaW50IG9wdGlvbmFsID0gLTE7CisgICAgaW50IGtleXdvcmQgPSAtMTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIml8aWkiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVxdWlyZWQsICZvcHRpb25hbCwgJmtleXdvcmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaWlpIiwgcmVxdWlyZWQsIG9wdGlvbmFsLCBrZXl3b3JkKTsKK30KKwogLyogRnVuY3Rpb25zIHRvIGNhbGwgUHlBcmdfUGFyc2VUdXBsZSB3aXRoIGludGVnZXIgZm9ybWF0IGNvZGVzLAogICAgYW5kIHJldHVybiB0aGUgcmVzdWx0LgogKi8KQEAgLTExMjEsMTEgKzExMjIsMTAgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHZhbHVlKTsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19MKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgbG9uZyBsb25nIHZhbHVlOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTCIsICZ2YWx1ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbHVlKTsKQEAgLTExMzQsMTIgKzExMzQsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZXRhcmdzX0soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsdWU7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJLIiwgJnZhbHVlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CiB9Ci0jZW5kaWYKIAogLyogVGhpcyBmdW5jdGlvbiBub3Qgb25seSB0ZXN0cyB0aGUgJ2snIGdldGFyZ3MgY29kZSwgYnV0IGFsc28gdGhlCiAgICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgYW5kIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2soKSBmdW5jdGlvbnMuICovCkBAIC0xMTYxLDcgKzExNjAsNyBAQAogICAgIHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhudW0pOwogICAgIGlmICh2YWx1ZSAhPSBVTE9OR19NQVgpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9rX2NvZGUiLAotICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CisgICAgICAgICAgICAiUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaygpIHJldHVybmVkIHdyb25nIHZhbHVlIGZvciBsb25nIDB4RkZGLi4uRkZGIik7CiAKICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCAwLCBudW0pOwogCkBAIC0xMTgwLDcgKzExNzksNyBAQAogICAgIHZhbHVlID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhudW0pOwogICAgIGlmICh2YWx1ZSAhPSAodW5zaWduZWQgbG9uZyktMHg0MikKICAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2tfY29kZSIsCi0gICAgICAgICJQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgcmV0dXJuZWQgd3JvbmcgdmFsdWUgZm9yIGxvbmcgMHhGRkYuLi5GRkYiKTsKKyAgICAgICAgICAgICJQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKCkgcmV0dXJuZWQgd3JvbmcgdmFsdWUgZm9yIGxvbmcgMHhGRkYuLi5GRkYiKTsKIAogICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIDAsIG51bSk7CiAKQEAgLTIxOTMsNyArMjE5Miw3IEBACiAgICAgUHlPYmplY3QgKnJjOwogICAgIGludCBzdWNjZXNzOwogICAgIFB5R0lMU3RhdGVfU1RBVEUgcyA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7Ci0gICAgcmMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopY2FsbGFibGUsICIiKTsKKyAgICByYyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoKFB5T2JqZWN0ICopY2FsbGFibGUpOwogICAgIHN1Y2Nlc3MgPSAocmMgIT0gTlVMTCk7CiAgICAgUHlfWERFQ1JFRihyYyk7CiAgICAgUHlHSUxTdGF0ZV9SZWxlYXNlKHMpOwpAQCAtMjMyNywxMCArMjMyNiw4IEBACiAgICAgQ0hFQ0tfMV9GT1JNQVQoIiV6dSIsIHNpemVfdCk7CiAKICAgICAvKiAiJWxsZCIgYW5kICIlbGx1IiBzdXBwb3J0IGFkZGVkIGluIFB5dGhvbiAyLjcuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBDSEVDS18xX0ZPUk1BVCgiJWxsdSIsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7Ci0gICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbGQiLCBQWV9MT05HX0xPTkcpOwotI2VuZGlmCisgICAgQ0hFQ0tfMV9GT1JNQVQoIiVsbHUiLCB1bnNpZ25lZCBsb25nIGxvbmcpOworICAgIENIRUNLXzFfRk9STUFUKCIlbGxkIiwgbG9uZyBsb25nKTsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogCkBAIC0yMzc1LDcgKzIzNzIsNyBAQAogICAgIHJlc3VsdCA9IFB5T1Nfc3RyaW5nX3RvX2RvdWJsZShTVFIsIE5VTEwsIE5VTEwpOyAgICAgICAgICAgIFwKICAgICBpZiAocmVzdWx0ID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChyZXN1bHQgIT0gZXhwZWN0ZWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAocmVzdWx0ICE9IChkb3VibGUpZXhwZWN0ZWQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG1zZyA9ICJjb252ZXJzaW9uIG9mICIgU1RSICIgdG8gZmxvYXQgZmFpbGVkIjsgICAgICAgICAgXAogICAgICAgICBnb3RvIGZhaWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CkBAIC0yOTY3LDcgKzI5NjQsOSBAQAogc3RhdGljIGludAogY2hlY2tfdGltZV9yb3VuZGluZyhpbnQgcm91bmQpCiB7Ci0gICAgaWYgKHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfRkxPT1IgJiYgcm91bmQgIT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CisgICAgaWYgKHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfRkxPT1IKKyAgICAgICAgJiYgcm91bmQgIT0gX1B5VGltZV9ST1VORF9DRUlMSU5HCisgICAgICAgICYmIHJvdW5kICE9IF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCByb3VuZGluZyIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMzQ2Miw3ICszNDYxLDcgQEAKICAgICAvKiBBbGxvY2F0ZSBhIFB5dGhvbiB0aHJlYWQgc3RhdGUgZm9yIHRoaXMgdGhyZWFkICovCiAgICAgc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogCi0gICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHRlc3RfY190aHJlYWQtPmNhbGxiYWNrLCAiIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxOb0FyZyh0ZXN0X2NfdGhyZWFkLT5jYWxsYmFjayk7CiAgICAgUHlfQ0xFQVIodGVzdF9jX3RocmVhZC0+Y2FsbGJhY2spOwogCiAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CkBAIC0zNzUyLDcgKzM3NTEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRlc3RfcHl0aW1lX2Fzc2Vjb25kc2RvdWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBfUHlUaW1lX3QgdHM7CiAgICAgZG91YmxlIGQ7CiAKQEAgLTM3NjYsNyArMzc2NSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNUaW1ldmFsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQWV9MT05HX0xPTkcgbnM7CisgICAgbG9uZyBsb25nIG5zOwogICAgIGludCByb3VuZDsKICAgICBfUHlUaW1lX3QgdDsKICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKQEAgLTM3ODAsNyArMzc3OSw3IEBACiAgICAgaWYgKF9QeVRpbWVfQXNUaW1ldmFsKHQsICZ0diwgcm91bmQpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBzZWNvbmRzID0gUHlMb25nX0Zyb21Mb25nKChQWV9MT05HX0xPTkcpdHYudHZfc2VjKTsKKyAgICBzZWNvbmRzID0gUHlMb25nX0Zyb21Mb25nKChsb25nIGxvbmcpdHYudHZfc2VjKTsKICAgICBpZiAoc2Vjb25kcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBzZWNvbmRzLCB0di50dl91c2VjKTsKQEAgLTM3OTAsNyArMzc4OSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNUaW1lc3BlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBfUHlUaW1lX3QgdDsKICAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CiAKQEAgLTM4MDYsNyArMzgwNSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFBZX0xPTkdfTE9ORyBuczsKKyAgICBsb25nIGxvbmcgbnM7CiAgICAgaW50IHJvdW5kOwogICAgIF9QeVRpbWVfdCB0LCBtczsKIApAQCAtMzgyNCw3ICszODIzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUFlfTE9OR19MT05HIG5zOworICAgIGxvbmcgbG9uZyBuczsKICAgICBpbnQgcm91bmQ7CiAgICAgX1B5VGltZV90IHQsIG1zOwogCkBAIC0zODQ4LDYgKzM4NDcsMTUyIEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh0c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aCAtIDEpOwogfQogCitzdGF0aWMgUHlPYmplY3QqCitweW1lbV9idWZmZXJfb3ZlcmZsb3coUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgYnVmZmVyIG92ZXJmbG93IHRvIGNoZWNrIHRoYXQgUHlNZW1fRnJlZSgpIGRldGVjdHMKKyAgICAgICB0aGUgb3ZlcmZsb3cgd2hlbiBkZWJ1ZyBob29rcyBhcmUgaW5zdGFsbGVkLiAqLworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYygxNik7CisgICAgYnVmZmVyWzE2XSA9ICd4JzsKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcHltZW1fYXBpX21pc3VzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgLyogRGVsaWJlcmF0ZSBtaXN1c2FnZSBvZiBQeXRob24gYWxsb2NhdG9yczoKKyAgICAgICBhbGxvY29jYXRlIHdpdGggUHlNZW0gYnV0IHJlbGVhc2Ugd2l0aCBQeU1lbV9SYXcuICovCisgICAgYnVmZmVyID0gUHlNZW1fTWFsbG9jKDE2KTsKKyAgICBQeU1lbV9SYXdGcmVlKGJ1ZmZlcik7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorcHltZW1fbWFsbG9jX3dpdGhvdXRfZ2lsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICpidWZmZXI7CisKKyAgICAvKiBEZWxpYmVyYXRlIGJ1ZyB0byB0ZXN0IGRlYnVnIGhvb2tzIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yczoKKyAgICAgICBjYWxsIFB5TWVtX01hbGxvYygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGJ1ZmZlciA9IFB5TWVtX01hbGxvYygxMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5TWVtX0ZyZWUoYnVmZmVyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QqCitweW9iamVjdF9tYWxsb2Nfd2l0aG91dF9naWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKmJ1ZmZlcjsKKworICAgIC8qIERlbGliZXJhdGUgYnVnIHRvIHRlc3QgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzOgorICAgICAgIGNhbGwgUHlPYmplY3RfTWFsbG9jKCkgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgYnVmZmVyID0gUHlPYmplY3RfTWFsbG9jKDEwKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlPYmplY3RfRnJlZShidWZmZXIpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0cmFjZW1hbGxvY190cmFjayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgaW50IGRvbWFpbjsKKyAgICBQeU9iamVjdCAqcHRyX29iajsKKyAgICB2b2lkICpwdHI7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIGludCByZWxlYXNlX2dpbCA9IDA7CisgICAgaW50IHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiSU9ufGkiLCAmZG9tYWluLCAmcHRyX29iaiwgJnNpemUsICZyZWxlYXNlX2dpbCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHB0ciA9IFB5TG9uZ19Bc1ZvaWRQdHIocHRyX29iaik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHJlbGVhc2VfZ2lsKSB7CisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgcmVzID0gX1B5VHJhY2VNYWxsb2NfVHJhY2soZG9tYWluLCAodWludHB0cl90KXB0ciwgc2l6ZSk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXMgPSBfUHlUcmFjZU1hbGxvY19UcmFjayhkb21haW4sICh1aW50cHRyX3QpcHRyLCBzaXplKTsKKyAgICB9CisKKyAgICBpZiAocmVzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiX1B5VHJhY2VNYWxsb2NfVHJhY2sgZXJyb3IiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0cmFjZW1hbGxvY191bnRyYWNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICB1bnNpZ25lZCBpbnQgZG9tYWluOworICAgIFB5T2JqZWN0ICpwdHJfb2JqOworICAgIHZvaWQgKnB0cjsKKyAgICBpbnQgcmVzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJTyIsICZkb21haW4sICZwdHJfb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcHRyID0gUHlMb25nX0FzVm9pZFB0cihwdHJfb2JqKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXMgPSBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIpOworICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJfUHlUcmFjZU1hbGxvY19UcmFjayBlcnJvciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3RyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBkb21haW47CisgICAgUHlPYmplY3QgKnB0cl9vYmo7CisgICAgdm9pZCAqcHRyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJTyIsICZkb21haW4sICZwdHJfb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcHRyID0gUHlMb25nX0FzVm9pZFB0cihwdHJfb2JqKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrKGRvbWFpbiwgKHVpbnRwdHJfdClwdHIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGljdF9nZXRfdmVyc2lvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlEaWN0T2JqZWN0ICpkaWN0OworICAgIHVpbnQ2NF90IHZlcnNpb247CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8hIiwgJlB5RGljdF9UeXBlLCAmZGljdCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdmVyc2lvbiA9IGRpY3QtPm1hX3ZlcnNpb25fdGFnOworCisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih1bnNpZ25lZCBQWV9MT05HX0xPTkcpID49IHNpemVvZih2ZXJzaW9uKSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygodW5zaWduZWQgUFlfTE9OR19MT05HKXZlcnNpb24pOworfQorCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBUZXN0TWV0aG9kc1tdID0gewogICAgIHsicmFpc2VfZXhjZXB0aW9uIiwgICAgICAgICByYWlzZV9leGNlcHRpb24sICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LApAQCAtMzg5Myw2ICs0MDM4LDkgQEAKICAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7ImdldGFyZ3Nfa2V5d29yZF9vbmx5IiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZF9vbmx5LAogICAgICAgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFN9LAorICAgIHsiZ2V0YXJnc19wb3NpdGlvbmFsX29ubHlfYW5kX2tleXdvcmRzIiwKKyAgICAgIChQeUNGdW5jdGlvbilnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMsCisgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCiAgICAgeyJnZXRhcmdzX2IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfYiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX0IiLCAgICAgICAgICAgICAgIGdldGFyZ3NfQiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2giLCAgICAgICAgICAgICAgIGdldGFyZ3NfaCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0zOTAzLDE0ICs0MDUxLDEyIEBACiAgICAgeyJnZXRhcmdzX2wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfbCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX24iLCAgICAgICAgICAgICAgIGdldGFyZ3NfbiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3AiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7ImdldGFyZ3NfTCIsICAgICAgICAgICAgICAgZ2V0YXJnc19MLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfSyIsICAgICAgICAgICAgICAgZ2V0YXJnc19LLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlc3RfbG9uZ2xvbmdfYXBpIiwgICAgICAgdGVzdF9sb25nbG9uZ19hcGksICAgICAgICAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2xvbmdfYW5kX292ZXJmbG93IiwKICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19sb25nX2FuZF9vdmVyZmxvdywgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9MX2NvZGUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9MX2NvZGUsICAgICAgICBNRVRIX05PQVJHU30sCi0jZW5kaWYKICAgICB7ImdldGFyZ3NfZiIsICAgICAgICAgICAgICAgZ2V0YXJnc19mLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfZCIsICAgICAgICAgICAgICAgZ2V0YXJnc19kLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfRCIsICAgICAgICAgICAgICAgZ2V0YXJnc19ELCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTQwNDEsNiArNDE4NywxNCBAQAogICAgIHsiUHlUaW1lX0FzTWlsbGlzZWNvbmRzIiwgdGVzdF9QeVRpbWVfQXNNaWxsaXNlY29uZHMsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJQeVRpbWVfQXNNaWNyb3NlY29uZHMiLCB0ZXN0X1B5VGltZV9Bc01pY3Jvc2Vjb25kcywgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldF9yZWN1cnNpb25fZGVwdGgiLCBnZXRfcmVjdXJzaW9uX2RlcHRoLCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9idWZmZXJfb3ZlcmZsb3ciLCBweW1lbV9idWZmZXJfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5bWVtX2FwaV9taXN1c2UiLCBweW1lbV9hcGlfbWlzdXNlLCBNRVRIX05PQVJHU30sCisgICAgeyJweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwiLCBweW1lbV9tYWxsb2Nfd2l0aG91dF9naWwsIE1FVEhfTk9BUkdTfSwKKyAgICB7InB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCIsIHB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCwgTUVUSF9OT0FSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfdHJhY2siLCB0cmFjZW1hbGxvY190cmFjaywgTUVUSF9WQVJBUkdTfSwKKyAgICB7InRyYWNlbWFsbG9jX3VudHJhY2siLCB0cmFjZW1hbGxvY191bnRyYWNrLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsidHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayIsIHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2ssIE1FVEhfVkFSQVJHU30sCisgICAgeyJkaWN0X2dldF92ZXJzaW9uIiwgZGljdF9nZXRfdmVyc2lvbiwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTQwNjAsMTAgKzQyMTQsOCBAQAogICAgIGZsb2F0IGZsb2F0X21lbWJlcjsKICAgICBkb3VibGUgZG91YmxlX21lbWJlcjsKICAgICBjaGFyIGlucGxhY2VfbWVtYmVyWzZdOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgUFlfTE9OR19MT05HIGxvbmdsb25nX21lbWJlcjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdWxvbmdsb25nX21lbWJlcjsKLSNlbmRpZgorICAgIGxvbmcgbG9uZyBsb25nbG9uZ19tZW1iZXI7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHVsb25nbG9uZ19tZW1iZXI7CiB9IGFsbF9zdHJ1Y3RtZW1iZXJzOwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC00MDg1LDEwICs0MjM3LDggQEAKICAgICB7IlRfRkxPQVQiLCBUX0ZMT0FULCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuZmxvYXRfbWVtYmVyKSwgMCwgTlVMTH0sCiAgICAgeyJUX0RPVUJMRSIsIFRfRE9VQkxFLCBvZmZzZXRvZih0ZXN0X3N0cnVjdG1lbWJlcnMsIHN0cnVjdG1lbWJlcnMuZG91YmxlX21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9TVFJJTkdfSU5QTEFDRSIsIFRfU1RSSU5HX0lOUExBQ0UsIG9mZnNldG9mKHRlc3Rfc3RydWN0bWVtYmVycywgc3RydWN0bWVtYmVycy5pbnBsYWNlX21lbWJlciksIDAsIE5VTEx9LAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgeyJUX0xPTkdMT05HIiwgVF9MT05HTE9ORywgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLmxvbmdsb25nX21lbWJlciksIDAsIE5VTEx9LAogICAgIHsiVF9VTE9OR0xPTkciLCBUX1VMT05HTE9ORywgb2Zmc2V0b2YodGVzdF9zdHJ1Y3RtZW1iZXJzLCBzdHJ1Y3RtZW1iZXJzLnVsb25nbG9uZ19tZW1iZXIpLCAwLCBOVUxMfSwKLSNlbmRpZgogICAgIHtOVUxMfQogfTsKIApAQCAtNDEwMCwxNSArNDI1MCw5IEBACiAgICAgICAgICJUX0JPT0wiLCAiVF9CWVRFIiwgIlRfVUJZVEUiLCAiVF9TSE9SVCIsICJUX1VTSE9SVCIsCiAgICAgICAgICJUX0lOVCIsICJUX1VJTlQiLCAiVF9MT05HIiwgIlRfVUxPTkciLCAiVF9QWVNTSVpFVCIsCiAgICAgICAgICJUX0ZMT0FUIiwgIlRfRE9VQkxFIiwgIlRfU1RSSU5HX0lOUExBQ0UiLAotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICJUX0xPTkdMT05HIiwgIlRfVUxPTkdMT05HIiwKLSNlbmRpZgogICAgICAgICBOVUxMfTsKLSAgICBzdGF0aWMgY2hhciAqZm10ID0gInxiYkJoSGlJbGtuZmRzIyIKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAiTEsiCi0jZW5kaWYKLSAgICAgICAgOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gInxiYkJoSGlJbGtuZmRzI0xLIjsKICAgICB0ZXN0X3N0cnVjdG1lbWJlcnMgKm9iOwogICAgIGNvbnN0IGNoYXIgKnMgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RyaW5nX2xlbiA9IDA7CkBAIC00MTMwLDEwICs0Mjc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb2ItPnN0cnVjdG1lbWJlcnMuZmxvYXRfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy5kb3VibGVfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzLCAmc3RyaW5nX2xlbgotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmb2ItPnN0cnVjdG1lbWJlcnMubG9uZ2xvbmdfbWVtYmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYi0+c3RydWN0bWVtYmVycy51bG9uZ2xvbmdfbWVtYmVyCi0jZW5kaWYKICAgICAgICAgKSkgewogICAgICAgICBQeV9ERUNSRUYob2IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ0NTksNiArNDYwMSw3IEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJQWV9TU0laRV9UX01BWCIsIFB5TG9uZ19Gcm9tU3NpemVfdChQWV9TU0laRV9UX01BWCkpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUFlfU1NJWkVfVF9NSU4iLCBQeUxvbmdfRnJvbVNzaXplX3QoUFlfU1NJWkVfVF9NSU4pKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNJWkVPRl9QWUdDX0hFQUQiLCBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKFB5R0NfSGVhZCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlNJWkVPRl9USU1FX1QiLCBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZW9mKHRpbWVfdCkpKTsKICAgICBQeV9JTkNSRUYoJlB5SW5zdGFuY2VNZXRob2RfVHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJpbnN0YW5jZW1ldGhvZCIsIChQeU9iamVjdCAqKSZQeUluc3RhbmNlTWV0aG9kX1R5cGUpOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jIGIvTW9kdWxlcy9fdGVzdG11bHRpcGhhc2UuYwppbmRleCA0MWRhOTk3Li40ZGFhMzRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190ZXN0bXVsdGlwaGFzZS5jCisrKyBiL01vZHVsZXMvX3Rlc3RtdWx0aXBoYXNlLmMKQEAgLTYxLDcgKzYxLDcgQEAKIH0KIAogc3RhdGljIGludAotRXhhbXBsZV9zZXRhdHRyKEV4YW1wbGVPYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorRXhhbXBsZV9zZXRhdHRyKEV4YW1wbGVPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggMTYzYzg3Zi4uM2U5NmFhMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtNDYyLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0odiwgaSwgdyk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHcpOwogICAgICAgICB9CiAgICAgfQogICAgIFRjbF9GcmVlKEZSRUVDQVNUIGFyZ3YpOwpAQCAtNDgwLDEzICs0ODAsMTMgQEAKICAgICAgICAgUHlfc3NpemVfdCBpLCBzaXplOwogICAgICAgICBQeU9iamVjdCAqZWxlbSwgKm5ld2VsZW0sICpyZXN1bHQ7CiAKLSAgICAgICAgc2l6ZSA9IFB5VHVwbGVfU2l6ZShhcmcpOworICAgICAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShhcmcpOwogICAgICAgICByZXN1bHQgPSBOVUxMOwogICAgICAgICAvKiBSZWN1cnNpdmVseSBpbnZva2UgU3BsaXRPYmogZm9yIGFsbCB0dXBsZSBpdGVtcy4KICAgICAgICAgICAgSWYgdGhpcyBkb2VzIG5vdCByZXR1cm4gYSBuZXcgb2JqZWN0LCBubyBhY3Rpb24gaXMKICAgICAgICAgICAgbmVlZGVkLiAqLwogICAgICAgICBmb3IoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dldEl0ZW0oYXJnLCBpKTsKKyAgICAgICAgICAgIGVsZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7CiAgICAgICAgICAgICBuZXdlbGVtID0gU3BsaXRPYmooZWxlbSk7CiAgICAgICAgICAgICBpZiAoIW5ld2VsZW0pIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CkBAIC01MDIsMTIgKzUwMiwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICBmb3IoayA9IDA7IGsgPCBpOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfR2V0SXRlbShhcmcsIGspOworICAgICAgICAgICAgICAgICAgICBlbGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmcsIGspOwogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU2V0SXRlbShyZXN1bHQsIGssIGVsZW0pOworICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaywgZWxlbSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgbmV3ZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01MjksNyArNTI5LDcgQEAKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeVR1cGxlX1NldEl0ZW0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCBuZXdlbGVtKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewogICAgICAgICBpbnQgYXJnYzsKICAgICAgICAgY29uc3QgY2hhciAqKmFyZ3Y7Ci0gICAgICAgIGNoYXIgKmxpc3QgPSBQeUJ5dGVzX0FzU3RyaW5nKGFyZyk7CisgICAgICAgIGNoYXIgKmxpc3QgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpOwogCiAgICAgICAgIGlmIChUY2xfU3BsaXRMaXN0KChUY2xfSW50ZXJwICopTlVMTCwgbGlzdCwgJmFyZ2MsICZhcmd2KSAhPSBUQ0xfT0spIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihhcmcpOwpAQCAtNTU5LDcgKzU1OSw3IEBACiAgICAgICAgIH0KICAgICAgICAgVGNsX0ZyZWUoRlJFRUNBU1QgYXJndik7CiAgICAgICAgIGlmIChhcmdjID4gMSkKLSAgICAgICAgICAgIHJldHVybiBTcGxpdChQeUJ5dGVzX0FzU3RyaW5nKGFyZykpOworICAgICAgICAgICAgcmV0dXJuIFNwbGl0KFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZykpOwogICAgICAgICAvKiBGYWxsIHRocm91Z2gsIHJldHVybmluZyBhcmcuICovCiAgICAgfQogICAgIFB5X0lOQ1JFRihhcmcpOwpAQCAtNzU4LDcgKzc1OCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFRjbF9TZXRWYXIodi0+aW50ZXJwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInRjbF9saWJyYXJ5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcodXRmOF9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHV0ZjhfcGF0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0xfR0xPQkFMX09OTFkpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1dGY4X3BhdGgpOwogICAgICAgICAgICAgfQpAQCAtODQxLDcgKzg0MSw3IEBACiAgICAgUHlfREVDUkVGKHRwKTsKIH0KIAotc3RhdGljIGNoYXIqCitzdGF0aWMgY29uc3QgY2hhciAqCiBQeVRjbE9iamVjdF9UY2xTdHJpbmcoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgcmV0dXJuIFRjbF9HZXRTdHJpbmcoKChQeVRjbE9iamVjdCopc2VsZiktPnZhbHVlKTsKQEAgLTk3Niw3ICs5NzYsNyBAQAogfTsKIAogCi0jaWYgUFlfU0laRV9NQVggPiBJTlRfTUFYCisjaWYgU0laRV9NQVggPiBJTlRfTUFYCiAjZGVmaW5lIENIRUNLX1NUUklOR19MRU5HVEgocykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzICE9IE5VTEwgJiYgc3RybGVuKHMpID49IElOVF9NQVgpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInN0cmluZyBpcyB0b28gbG9uZyIpOyBcCkBAIC0xMTgyLDEwICsxMTgyLDggQEAKIHsKICAgICAgICAgVGNsX1dpZGVJbnQgd2lkZVZhbHVlOwogICAgICAgICBpZiAoVGNsX0dldFdpZGVJbnRGcm9tT2JqKFRrYXBwX0ludGVycCh0a2FwcCksIHZhbHVlLCAmd2lkZVZhbHVlKSA9PSBUQ0xfT0spIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgaWYgKHNpemVvZih3aWRlVmFsdWUpIDw9IFNJWkVPRl9MT05HX0xPTkcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcod2lkZVZhbHVlKTsKLSNlbmRpZgogICAgICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRnJvbUJ5dGVBcnJheSgodW5zaWduZWQgY2hhciAqKSh2b2lkICopJndpZGVWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdpZGVWYWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBZX0xJVFRMRV9FTkRJQU4sCkBAIC0xMzA2LDcgKzEzMDQsNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlUdXBsZV9TZXRJdGVtKHJlc3VsdCwgaSwgZWxlbSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgaSwgZWxlbSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNTE3LDggKzE1MTUsOCBAQAogICAgIGludCBmbGFncyA9IFRDTF9FVkFMX0RJUkVDVCB8IFRDTF9FVkFMX0dMT0JBTDsKIAogICAgIC8qIElmIGFyZ3MgaXMgYSBzaW5nbGUgdHVwbGUsIHJlcGxhY2Ugd2l0aCBjb250ZW50cyBvZiB0dXBsZSAqLwotICAgIGlmICgxID09IFB5VHVwbGVfU2l6ZShhcmdzKSl7Ci0gICAgICAgIFB5T2JqZWN0KiBpdGVtID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApOworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwogICAgICAgICBpZiAoUHlUdXBsZV9DaGVjayhpdGVtKSkKICAgICAgICAgICAgIGFyZ3MgPSBpdGVtOwogICAgIH0KQEAgLTE3MjYsMTQgKzE3MjQsMTQgQEAKIHZhcm5hbWVfY29udmVydGVyKFB5T2JqZWN0ICppbiwgdm9pZCAqX291dCkKIHsKICAgICBjaGFyICpzOwotICAgIGNoYXIgKipvdXQgPSAoY2hhcioqKV9vdXQ7CisgICAgY29uc3QgY2hhciAqKm91dCA9IChjb25zdCBjaGFyKiopX291dDsKICAgICBpZiAoUHlCeXRlc19DaGVjayhpbikpIHsKLSAgICAgICAgaWYgKFB5Qnl0ZXNfU2l6ZShpbikgPiBJTlRfTUFYKSB7CisgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGluKSA+IElOVF9NQVgpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiYnl0ZXMgb2JqZWN0IGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBzID0gUHlCeXRlc19Bc1N0cmluZyhpbik7Ci0gICAgICAgIGlmIChzdHJsZW4ocykgIT0gKHNpemVfdClQeUJ5dGVzX1NpemUoaW4pKSB7CisgICAgICAgIHMgPSBQeUJ5dGVzX0FTX1NUUklORyhpbik7CisgICAgICAgIGlmIChzdHJsZW4ocykgIT0gKHNpemVfdClQeUJ5dGVzX0dFVF9TSVpFKGluKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGJ5dGUiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0xODQ2LDcgKzE4NDQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFNldFZhcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBmbGFncykKIHsKLSAgICBjaGFyICpuYW1lMSwgKm5hbWUyOworICAgIGNvbnN0IGNoYXIgKm5hbWUxLCAqbmFtZTI7CiAgICAgUHlPYmplY3QgKm5ld1ZhbHVlOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIFRjbF9PYmogKm5ld3ZhbCwgKm9rOwpAQCAtMTkxNSw3ICsxOTEzLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBHZXRWYXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZmxhZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTEsICpuYW1lMj1OVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWUxLCAqbmFtZTI9TlVMTDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBUY2xfT2JqICp0cmVzOwogCkBAIC0yMjc0LDEwICsyMjcyLDExIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7Ci0gICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CisgICAgICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KQEAgLTIzMDQsMTEgKzIzMDMsMTIgQEAKIAogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhhcmd2W2ldKTsKLSAgICAgICAgaWYgKCFzIHx8IFB5VHVwbGVfU2V0SXRlbSh2LCBpLCBzKSkgeworICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIHYgPSBOVUxMOwogICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odiwgaSwgcyk7CiAgICAgfQogCiAgIGZpbmFsbHk6CkBAIC0yMzQ5LDEwICsyMzQ5LDExIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG9iamM7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnMgPSBGcm9tT2JqKChQeU9iamVjdCopc2VsZiwgb2JqdltpXSk7Ci0gICAgICAgICAgICBpZiAoIXMgfHwgUHlUdXBsZV9TZXRJdGVtKHYsIGksIHMpKSB7CisgICAgICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHYsIGksIHMpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KQEAgLTI0MTAsMTAgKzI0MTEsMTEgQEAKIAogICAgIGZvciAoaSA9IDA7IGkgPCAoYXJnYyAtIDEpOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QgKnMgPSB1bmljb2RlRnJvbVRjbFN0cmluZyhhcmd2W2kgKyAxXSk7Ci0gICAgICAgIGlmICghcyB8fCBQeVR1cGxlX1NldEl0ZW0oYXJnLCBpLCBzKSkgeworICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOwogICAgICAgICAgICAgcmV0dXJuIFB5dGhvbkNtZF9FcnJvcihpbnRlcnApOwogICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnLCBpLCBzKTsKICAgICB9CiAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgYXJnKTsKICAgICBQeV9ERUNSRUYoYXJnKTsKQEAgLTI0ODUsNyArMjQ4Nyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a2FwcC5jcmVhdGVjb21tYW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlRrYXBwT2JqZWN0ICoiKQogICAgIG5hbWU6IHN0cgogICAgIGZ1bmM6IG9iamVjdAogICAgIC8KQEAgLTI0OTUsNyArMjQ5Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfY3JlYXRlY29tbWFuZF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhMWM3OWE0ZWUyYWY0MTAgaW5wdXQ9MmJjMmMwNDZhMDkxNDIzNF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhMWM3OWE0ZWUyYWY0MTAgaW5wdXQ9MjU1Nzg1Y2I3MGVkYzZhMF0qLwogewogICAgIFB5dGhvbkNtZF9DbGllbnREYXRhICpkYXRhOwogICAgIGludCBlcnI7CkBAIC0yNTYxLDcgKzI1NjIsNiBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAuZGVsZXRlY29tbWFuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa2FwcE9iamVjdCAqIikKICAgICBuYW1lOiBzdHIKICAgICAvCiAKQEAgLTI1NjksNyArMjU2OSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a2FwcF9kZWxldGVjb21tYW5kX2ltcGwoVGthcHBPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY3ZThjYjU4NDVlMGQyZCBpbnB1dD1iNjMwNjQ2OGYxMGIyMTljXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTY3ZThjYjU4NDVlMGQyZCBpbnB1dD01M2U5OTUyZWFlMWY4NWY1XSovCiB7CiAgICAgaW50IGVycjsKIApAQCAtMjc2MiwxMyArMjc2MiwxMSBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGt0aW1lcnRva2VuLmRlbGV0ZXRpbWVyaGFuZGxlcgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJUa3R0T2JqZWN0ICoiKQotCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfdGtpbnRlcl90a3RpbWVydG9rZW5fZGVsZXRldGltZXJoYW5kbGVyX2ltcGwoVGt0dE9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDdmZTE3ZjMyOGNmYTU1IGlucHV0PTI1YmE1ZGQ1OTRlNTIwODRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDdmZTE3ZjMyOGNmYTU1IGlucHV0PTQwYmQwNzBmZjg1ZjVjZjNdKi8KIHsKICAgICBUa3R0T2JqZWN0ICp2ID0gc2VsZjsKICAgICBQeU9iamVjdCAqZnVuYyA9IHYtPmZ1bmM7CkBAIC0yODk0LDcgKzI4OTIsNiBAQAogLypbY2xpbmljIGlucHV0XQogX3RraW50ZXIudGthcHAubWFpbmxvb3AKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCiAgICAgdGhyZXNob2xkOiBpbnQgPSAwCiAgICAgLwogCkBAIC0yOTAyLDcgKzI4OTksNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3RraW50ZXJfdGthcHBfbWFpbmxvb3BfaW1wbChUa2FwcE9iamVjdCAqc2VsZiwgaW50IHRocmVzaG9sZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmE4ZWFiYmU1Nzg0MWIwIGlucHV0PWFkNTdjOWMxZGQyYjk0NzBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYmE4ZWFiYmU1Nzg0MWIwIGlucHV0PTAzNmJjZGNmMDNkNWVjYTBdKi8KIHsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CkBAIC0zMDcyLDEzICszMDY5LDExIEBACiAvKltjbGluaWMgaW5wdXRdCiBfdGtpbnRlci50a2FwcC53aWxsZGlzcGF0Y2gKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iVGthcHBPYmplY3QgKiIpCi0KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIF90a2ludGVyX3RrYXBwX3dpbGxkaXNwYXRjaF9pbXBsKFRrYXBwT2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlM2Y0NmQyNDQ2NDIxNTUgaW5wdXQ9MjYzMDY5OTc2NzgwODk3MF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBlM2Y0NmQyNDQ2NDIxNTUgaW5wdXQ9ZDg4ZjU5NzA4NDNkNmRhYl0qLwogewogICAgIHNlbGYtPmRpc3BhdGNoaW5nID0gMTsKIApAQCAtMzYyOSwxNCArMzYyNCwxNCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQXNTdHJpbmcoY2V4ZSkpOworICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQVNfU1RSSU5HKGNleGUpKTsKIAogICAgICAgICAgICAgaWYgKHNldF92YXIpIHsKICAgICAgICAgICAgICAgICBTZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhMIlRDTF9MSUJSQVJZIiwgTlVMTCk7CiAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh3Y3NfcGF0aCk7CiAgICAgICAgICAgICB9CiAjZWxzZQotICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQXNTdHJpbmcoY2V4ZSkpOworICAgICAgICAgICAgVGNsX0ZpbmRFeGVjdXRhYmxlKFB5Qnl0ZXNfQVNfU1RSSU5HKGNleGUpKTsKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihjZXhlKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMgYi9Nb2R1bGVzL190cmFjZW1hbGxvYy5jCmluZGV4IDY1YmY3YTMuLmVjOGJkOTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RyYWNlbWFsbG9jLmMKKysrIGIvTW9kdWxlcy9fdHJhY2VtYWxsb2MuYwpAQCAtMzksNyArMzksMTEgQEAKICAgICAvKiBsaW1pdCBvZiB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiBhIHRyYWNlYmFjaywgMSBieSBkZWZhdWx0LgogICAgICAgIFZhcmlhYmxlIHByb3RlY3RlZCBieSB0aGUgR0lMLiAqLwogICAgIGludCBtYXhfbmZyYW1lOwotfSB0cmFjZW1hbGxvY19jb25maWcgPSB7VFJBQ0VNQUxMT0NfTk9UX0lOSVRJQUxJWkVELCAwLCAxfTsKKworICAgIC8qIHVzZSBkb21haW4gaW4gdHJhY2Uga2V5PworICAgICAgIFZhcmlhYmxlIHByb3RlY3RlZCBieSB0aGUgR0lMLiAqLworICAgIGludCB1c2VfZG9tYWluOworfSB0cmFjZW1hbGxvY19jb25maWcgPSB7VFJBQ0VNQUxMT0NfTk9UX0lOSVRJQUxJWkVELCAwLCAxLCAwfTsKIAogI2lmIGRlZmluZWQoVFJBQ0VfUkFXX01BTExPQykgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKIC8qIFRoaXMgbG9jayBpcyBuZWVkZWQgYmVjYXVzZSB0cmFjZW1hbGxvY19mcmVlKCkgaXMgY2FsbGVkIHdpdGhvdXQKQEAgLTU0LDEwICs1OCwyMSBAQAogIyAgZGVmaW5lIFRBQkxFU19VTkxPQ0soKQogI2VuZGlmCiAKKworI2RlZmluZSBERUZBVUxUX0RPTUFJTiAwCisKKy8qIFBhY2sgdGhlIGZyYW1lX3Qgc3RydWN0dXJlIHRvIHJlZHVjZSB0aGUgbWVtb3J5IGZvb3RwcmludC4gKi8KK3R5cGVkZWYgc3RydWN0CisjaWZkZWYgX19HTlVDX18KK19fYXR0cmlidXRlX18oKHBhY2tlZCkpCisjZW5kaWYKK3sKKyAgICB1aW50cHRyX3QgcHRyOworICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbjsKK30gcG9pbnRlcl90OworCiAvKiBQYWNrIHRoZSBmcmFtZV90IHN0cnVjdHVyZSB0byByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQgb24gNjQtYml0Ci0gICBhcmNoaXRlY3R1cmVzOiAxMiBieXRlcyBpbnN0ZWFkIG9mIDE2LiBUaGlzIG9wdGltaXphdGlvbiBtaWdodCBwcm9kdWNlCi0gICBTSUdCVVMgb24gYXJjaGl0ZWN0dXJlcyBub3Qgc3VwcG9ydGluZyB1bmFsaWduZWQgbWVtb3J5IGFjY2Vzc2VzICg2NC1iaXQKLSAgIE1JUFMgQ1BVPyk6IG9uIHN1Y2ggYXJjaGl0ZWN0dXJlLCB0aGUgc3RydWN0dXJlIG11c3Qgbm90IGJlIHBhY2tlZC4gKi8KKyAgIGFyY2hpdGVjdHVyZXM6IDEyIGJ5dGVzIGluc3RlYWQgb2YgMTYuICovCiB0eXBlZGVmIHN0cnVjdAogI2lmZGVmIF9fR05VQ19fCiBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKQpAQCAtNjUsMTAgKzgwLDEzIEBACiBfZGVjbHNwZWMoYWxpZ24oNCkpCiAjZW5kaWYKIHsKKyAgICAvKiBmaWxlbmFtZSBjYW5ub3QgYmUgTlVMTDogIjx1bmtub3duPiIgaXMgdXNlZCBpZiB0aGUgUHl0aG9uIGZyYW1lCisgICAgICAgZmlsZW5hbWUgaXMgTlVMTCAqLwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICB1bnNpZ25lZCBpbnQgbGluZW5vOwogfSBmcmFtZV90OwogCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeV91aGFzaF90IGhhc2g7CiAgICAgaW50IG5mcmFtZTsKQEAgLTgxLDYgKzk5LDcgQEAKICNkZWZpbmUgTUFYX05GUkFNRSBcCiAgICAgICAgICgoSU5UX01BWCAtIChpbnQpc2l6ZW9mKHRyYWNlYmFja190KSkgLyAoaW50KXNpemVvZihmcmFtZV90KSArIDEpCiAKKwogc3RhdGljIFB5T2JqZWN0ICp1bmtub3duX2ZpbGVuYW1lID0gTlVMTDsKIHN0YXRpYyB0cmFjZWJhY2tfdCB0cmFjZW1hbGxvY19lbXB0eV90cmFjZWJhY2s7CiAKQEAgLTkzLDYgKzExMiw3IEBACiAgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKIH0gdHJhY2VfdDsKIAorCiAvKiBTaXplIGluIGJ5dGVzIG9mIGN1cnJlbnRseSB0cmFjZWQgbWVtb3J5LgogICAgUHJvdGVjdGVkIGJ5IFRBQkxFU19MT0NLKCkuICovCiBzdGF0aWMgc2l6ZV90IHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgPSAwOwpAQCAtMTE5LDYgKzEzOSw3IEBACiAgICBQcm90ZWN0ZWQgYnkgVEFCTEVTX0xPQ0soKS4gKi8KIHN0YXRpYyBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlbWFsbG9jX3RyYWNlcyA9IE5VTEw7CiAKKwogI2lmZGVmIFRSQUNFX0RFQlVHCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZXJyb3IoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCkBAIC0xMzMsNiArMTU0LDcgQEAKIH0KICNlbmRpZgogCisKICNpZiBkZWZpbmVkKFdJVEhfVEhSRUFEKSAmJiBkZWZpbmVkKFRSQUNFX1JBV19NQUxMT0MpCiAjZGVmaW5lIFJFRU5UUkFOVF9USFJFQURMT0NBTAogCkBAIC0xNDMsNyArMTY1LDcgQEAKICMgIGVycm9yICJuZWVkIG5hdGl2ZSB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoVExTKSIKICNlbmRpZgogCi1zdGF0aWMgaW50IHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXk7CitzdGF0aWMgaW50IHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkgPSAtMTsKIAogLyogQW55IG5vbi1OVUxMIHBvaW50ZXIgY2FuIGJlIHVzZWQgKi8KICNkZWZpbmUgUkVFTlRSQU5UIFB5X1RydWUKQEAgLTE1MSw3ICsxNzMsMTAgQEAKIHN0YXRpYyBpbnQKIGdldF9yZWVudHJhbnQodm9pZCkKIHsKLSAgICB2b2lkICpwdHIgPSBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpOworICAgIHZvaWQgKnB0cjsKKworICAgIGFzc2VydCh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ICE9IC0xKTsKKyAgICBwdHIgPSBQeVRocmVhZF9nZXRfa2V5X3ZhbHVlKHRyYWNlbWFsbG9jX3JlZW50cmFudF9rZXkpOwogICAgIGlmIChwdHIgIT0gTlVMTCkgewogICAgICAgICBhc3NlcnQocHRyID09IFJFRU5UUkFOVCk7CiAgICAgICAgIHJldHVybiAxOwpAQCAtMTY0LDEyICsxODksMTQgQEAKIHNldF9yZWVudHJhbnQoaW50IHJlZW50cmFudCkKIHsKICAgICBhc3NlcnQocmVlbnRyYW50ID09IDAgfHwgcmVlbnRyYW50ID09IDEpOworICAgIGFzc2VydCh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ICE9IC0xKTsKKwogICAgIGlmIChyZWVudHJhbnQpIHsKLSAgICAgICAgYXNzZXJ0KFB5VGhyZWFkX2dldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSkgPT0gTlVMTCk7CisgICAgICAgIGFzc2VydCghZ2V0X3JlZW50cmFudCgpKTsKICAgICAgICAgUHlUaHJlYWRfc2V0X2tleV92YWx1ZSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5LCBSRUVOVFJBTlQpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KFB5VGhyZWFkX2dldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSkgPT0gUkVFTlRSQU5UKTsKKyAgICAgICAgYXNzZXJ0KGdldF9yZWVudHJhbnQoKSk7CiAgICAgICAgIFB5VGhyZWFkX3NldF9rZXlfdmFsdWUodHJhY2VtYWxsb2NfcmVlbnRyYW50X2tleSwgTlVMTCk7CiAgICAgfQogfQpAQCAtMTk0LDI3ICsyMjEsNzUgQEAKIH0KICNlbmRpZgogCi1zdGF0aWMgaW50Ci1oYXNodGFibGVfY29tcGFyZV91bmljb2RlKGNvbnN0IHZvaWQgKmtleSwgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKKworc3RhdGljIFB5X3VoYXNoX3QKK2hhc2h0YWJsZV9oYXNoX3B5b2JqZWN0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXkpCiB7Ci0gICAgaWYgKGtleSAhPSBOVUxMICYmIGVudHJ5LT5rZXkgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVfQ29tcGFyZSgoUHlPYmplY3QgKilrZXksIChQeU9iamVjdCAqKWVudHJ5LT5rZXkpID09IDApOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGtleSA9PSBlbnRyeS0+a2V5OworICAgIFB5T2JqZWN0ICpvYmo7CisKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCBvYmopOworICAgIHJldHVybiBQeU9iamVjdF9IYXNoKG9iaik7CiB9CiAKLXN0YXRpYyBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90IGhhc2h0YWJsZV9hbGxvYyA9IHttYWxsb2MsIGZyZWV9OworCitzdGF0aWMgaW50CitoYXNodGFibGVfY29tcGFyZV91bmljb2RlKF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCit7CisgICAgUHlPYmplY3QgKmtleTEsICprZXkyOworCisgICAgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShodCwgcGtleSwga2V5MSk7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIGtleTIpOworCisgICAgaWYgKGtleTEgIT0gTlVMTCAmJiBrZXkyICE9IE5VTEwpCisgICAgICAgIHJldHVybiAoUHlVbmljb2RlX0NvbXBhcmUoa2V5MSwga2V5MikgPT0gMCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4ga2V5MSA9PSBrZXkyOworfQorCisKK3N0YXRpYyBQeV91aGFzaF90CitoYXNodGFibGVfaGFzaF9wb2ludGVyX3QoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqcGtleSkKK3sKKyAgICBwb2ludGVyX3QgcHRyOworICAgIFB5X3VoYXNoX3QgaGFzaDsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHB0cik7CisKKyAgICBoYXNoID0gKFB5X3VoYXNoX3QpX1B5X0hhc2hQb2ludGVyKCh2b2lkKilwdHIucHRyKTsKKyAgICBoYXNoIF49IHB0ci5kb21haW47CisgICAgcmV0dXJuIGhhc2g7Cit9CisKKworc3RhdGljIGludAoraGFzaHRhYmxlX2NvbXBhcmVfcG9pbnRlcl90KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSkKK3sKKyAgICBwb2ludGVyX3QgcHRyMSwgcHRyMjsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHB0cjEpOworICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9LRVkoaHQsIGVudHJ5LCBwdHIyKTsKKworICAgIC8qIGNvbXBhcmUgcG9pbnRlciBiZWZvcmUgZG9tYWluLCBiZWNhdXNlIHBvaW50ZXIgaXMgbW9yZSBsaWtlbHkgdG8gYmUKKyAgICAgICBkaWZmZXJlbnQgKi8KKyAgICByZXR1cm4gKHB0cjEucHRyID09IHB0cjIucHRyICYmIHB0cjEuZG9tYWluID09IHB0cjIuZG9tYWluKTsKKworfQorCiAKIHN0YXRpYyBfUHlfaGFzaHRhYmxlX3QgKgotaGFzaHRhYmxlX25ldyhzaXplX3QgZGF0YV9zaXplLAoraGFzaHRhYmxlX25ldyhzaXplX3Qga2V5X3NpemUsIHNpemVfdCBkYXRhX3NpemUsCiAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jKQogewotICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGRhdGFfc2l6ZSwgMCwKKyAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90IGhhc2h0YWJsZV9hbGxvYyA9IHttYWxsb2MsIGZyZWV9OworICAgIHJldHVybiBfUHlfaGFzaHRhYmxlX25ld19mdWxsKGtleV9zaXplLCBkYXRhX3NpemUsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9mdW5jLCBjb21wYXJlX2Z1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCwgJmhhc2h0YWJsZV9hbGxvYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhc2h0YWJsZV9hbGxvYyk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiByYXdfbWFsbG9jKHNpemVfdCBzaXplKQogewpAQCAtMjI3LDIxICszMDIsMjggQEAKICAgICBhbGxvY2F0b3JzLnJhdy5mcmVlKGFsbG9jYXRvcnMucmF3LmN0eCwgcHRyKTsKIH0KIAorCiBzdGF0aWMgUHlfdWhhc2hfdAotaGFzaHRhYmxlX2hhc2hfdHJhY2ViYWNrKGNvbnN0IHZvaWQgKmtleSkKK2hhc2h0YWJsZV9oYXNoX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5KQogewotICAgIGNvbnN0IHRyYWNlYmFja190ICp0cmFjZWJhY2sgPSBrZXk7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIHRyYWNlYmFjayk7CiAgICAgcmV0dXJuIHRyYWNlYmFjay0+aGFzaDsKIH0KIAorCiBzdGF0aWMgaW50Ci1oYXNodGFibGVfY29tcGFyZV90cmFjZWJhY2soY29uc3QgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICpoZSkKK2hhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCiB7Ci0gICAgY29uc3QgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazIgPSBoZS0+a2V5OworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2sxLCAqdHJhY2ViYWNrMjsKICAgICBjb25zdCBmcmFtZV90ICpmcmFtZTEsICpmcmFtZTI7CiAgICAgaW50IGk7CiAKKyAgICBfUHlfSEFTSFRBQkxFX1JFQURfS0VZKGh0LCBwa2V5LCB0cmFjZWJhY2sxKTsKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgdHJhY2ViYWNrMik7CisKICAgICBpZiAodHJhY2ViYWNrMS0+bmZyYW1lICE9IHRyYWNlYmFjazItPm5mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTI2MCw2ICszNDIsNyBAQAogICAgIHJldHVybiAxOwogfQogCisKIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19nZXRfZnJhbWUoUHlGcmFtZU9iamVjdCAqcHlmcmFtZSwgZnJhbWVfdCAqZnJhbWUpCiB7CkBAIC0zMTAsMTUgKzM5MywxNSBAQAogICAgIH0KIAogICAgIC8qIGludGVybiB0aGUgZmlsZW5hbWUgKi8KLSAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZmlsZW5hbWUpOworICAgIGVudHJ5ID0gX1B5X0hBU0hUQUJMRV9HRVRfRU5UUlkodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSk7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKLSAgICAgICAgZmlsZW5hbWUgPSAoUHlPYmplY3QgKillbnRyeS0+a2V5OworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKHRyYWNlbWFsbG9jX2ZpbGVuYW1lcywgZW50cnksIGZpbGVuYW1lKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyBpcyByZXNwb25zaWJsZSB0byBrZWVwIGEgcmVmZXJlbmNlCiAgICAgICAgICAgIHRvIHRoZSBmaWxlbmFtZSAqLwogICAgICAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOwotICAgICAgICBpZiAoX1B5X2hhc2h0YWJsZV9zZXQodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIGlmIChfUHlfSEFTSFRBQkxFX1NFVF9OT0RBVEEodHJhY2VtYWxsb2NfZmlsZW5hbWVzLCBmaWxlbmFtZSkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwogI2lmZGVmIFRSQUNFX0RFQlVHCiAgICAgICAgICAgICB0cmFjZW1hbGxvY19lcnJvcigiZmFpbGVkIHRvIGludGVybiB0aGUgZmlsZW5hbWUiKTsKQEAgLTMzMSw2ICs0MTQsNyBAQAogICAgIGZyYW1lLT5maWxlbmFtZSA9IGZpbGVuYW1lOwogfQogCisKIHN0YXRpYyBQeV91aGFzaF90CiB0cmFjZWJhY2tfaGFzaCh0cmFjZWJhY2tfdCAqdHJhY2ViYWNrKQogewpAQCAtMzU1LDYgKzQzOSw3IEBACiAgICAgcmV0dXJuIHg7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlYmFja19nZXRfZnJhbWVzKHRyYWNlYmFja190ICp0cmFjZWJhY2spCiB7CkBAIC0zODIsNiArNDY3LDcgQEAKICAgICB9CiB9CiAKKwogc3RhdGljIHRyYWNlYmFja190ICoKIHRyYWNlYmFja19uZXcodm9pZCkKIHsKQEAgLTQwMSw5ICs0ODcsOSBAQAogICAgIHRyYWNlYmFjay0+aGFzaCA9IHRyYWNlYmFja19oYXNoKHRyYWNlYmFjayk7CiAKICAgICAvKiBpbnRlcm4gdGhlIHRyYWNlYmFjayAqLwotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkodHJhY2VtYWxsb2NfdHJhY2ViYWNrcywgdHJhY2ViYWNrKTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX3RyYWNlYmFja3MsIHRyYWNlYmFjayk7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKLSAgICAgICAgdHJhY2ViYWNrID0gKHRyYWNlYmFja190ICopZW50cnktPmtleTsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBlbnRyeSwgdHJhY2ViYWNrKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHRyYWNlYmFja190ICpjb3B5OwpAQCAtNDIwLDcgKzUwNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgbWVtY3B5KGNvcHksIHRyYWNlYmFjaywgdHJhY2ViYWNrX3NpemUpOwogCi0gICAgICAgIGlmIChfUHlfaGFzaHRhYmxlX3NldCh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBjb3B5LCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgaWYgKF9QeV9IQVNIVEFCTEVfU0VUX05PREFUQSh0cmFjZW1hbGxvY190cmFjZWJhY2tzLCBjb3B5KSA8IDApIHsKICAgICAgICAgICAgIHJhd19mcmVlKGNvcHkpOwogI2lmZGVmIFRSQUNFX0RFQlVHCiAgICAgICAgICAgICB0cmFjZW1hbGxvY19lcnJvcigiZmFpbGVkIHRvIGludGVybiB0aGUgdHJhY2ViYWNrOiBwdXRkYXRhIGZhaWxlZCIpOwpAQCAtNDMyLDUzICs1MTgsMTYxIEBACiAgICAgcmV0dXJuIHRyYWNlYmFjazsKIH0KIAorCiBzdGF0aWMgaW50Ci10cmFjZW1hbGxvY19hZGRfdHJhY2Uodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKK3RyYWNlbWFsbG9jX3VzZV9kb21haW5fY2IoX1B5X2hhc2h0YWJsZV90ICpvbGRfdHJhY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqdXNlcl9kYXRhKQogewotICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7Ci0gICAgdHJhY2VfdCB0cmFjZTsKLSAgICBpbnQgcmVzOworICAgIHVpbnRwdHJfdCBwdHI7CisgICAgcG9pbnRlcl90IGtleTsKKyAgICBfUHlfaGFzaHRhYmxlX3QgKm5ld190cmFjZXMgPSAoX1B5X2hhc2h0YWJsZV90ICopdXNlcl9kYXRhOworICAgIGNvbnN0IHZvaWQgKnBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShvbGRfdHJhY2VzLCBlbnRyeSk7CiAKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOwotI2VuZGlmCisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShvbGRfdHJhY2VzLCBlbnRyeSwgcHRyKTsKKyAgICBrZXkucHRyID0gcHRyOworICAgIGtleS5kb21haW4gPSBERUZBVUxUX0RPTUFJTjsKIAotICAgIHRyYWNlYmFjayA9IHRyYWNlYmFja19uZXcoKTsKLSAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfc2V0KG5ld190cmFjZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXkpLCAma2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfdHJhY2VzLT5kYXRhX3NpemUsIHBkYXRhKTsKK30KKworCisvKiBDb252ZXJ0IHRyYWNlbWFsbG9jX3RyYWNlcyBmcm9tIGNvbXBhY3Qga2V5ICh1aW50cHRyX3QpIHRvIHBvaW50ZXJfdCBrZXkuCisgKiBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4gKi8KK3N0YXRpYyBpbnQKK3RyYWNlbWFsbG9jX3VzZV9kb21haW4odm9pZCkKK3sKKyAgICBfUHlfaGFzaHRhYmxlX3QgKm5ld190cmFjZXMgPSBOVUxMOworCisgICAgYXNzZXJ0KCF0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbik7CisKKyAgICBuZXdfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YocG9pbnRlcl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcG9pbnRlcl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3BvaW50ZXJfdCk7CisgICAgaWYgKG5ld190cmFjZXMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICB0cmFjZS5zaXplID0gc2l6ZTsKLSAgICB0cmFjZS50cmFjZWJhY2sgPSB0cmFjZWJhY2s7Ci0KLSAgICByZXMgPSBfUHlfSEFTSFRBQkxFX1NFVCh0cmFjZW1hbGxvY190cmFjZXMsIHB0ciwgdHJhY2UpOwotICAgIGlmIChyZXMgPT0gMCkgewotICAgICAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA8PSBQWV9TSVpFX01BWCAtIHNpemUpOwotICAgICAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ICs9IHNpemU7Ci0gICAgICAgIGlmICh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID4gdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5KQotICAgICAgICAgICAgdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5ID0gdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeTsKICAgICB9CiAKLSAgICByZXR1cm4gcmVzOworICAgIGlmIChfUHlfaGFzaHRhYmxlX2ZvcmVhY2godHJhY2VtYWxsb2NfdHJhY2VzLCB0cmFjZW1hbGxvY191c2VfZG9tYWluX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3RyYWNlcykgPCAwKQorICAgIHsKKyAgICAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KG5ld190cmFjZXMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlcyk7CisgICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gbmV3X3RyYWNlczsKKworICAgIHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluID0gMTsKKworICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCi10cmFjZW1hbGxvY19yZW1vdmVfdHJhY2Uodm9pZCAqcHRyKQordHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdWludHB0cl90IHB0cikKIHsKICAgICB0cmFjZV90IHRyYWNlOworICAgIGludCByZW1vdmVkOwogCi0gICAgaWYgKF9QeV9oYXNodGFibGVfcG9wKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCAmdHJhY2UsIHNpemVvZih0cmFjZSkpKSB7CisgICAgYXNzZXJ0KHRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKTsKKworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBwb2ludGVyX3Qga2V5ID0ge3B0ciwgZG9tYWlufTsKKyAgICAgICAgcmVtb3ZlZCA9IF9QeV9IQVNIVEFCTEVfUE9QKHRyYWNlbWFsbG9jX3RyYWNlcywga2V5LCB0cmFjZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZW1vdmVkID0gX1B5X0hBU0hUQUJMRV9QT1AodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKKyAgICB9CisgICAgaWYgKCFyZW1vdmVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+PSB0cmFjZS5zaXplKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5IC09IHRyYWNlLnNpemU7Cit9CisKKyNkZWZpbmUgUkVNT1ZFX1RSQUNFKHB0cikgXAorICAgICAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KShwdHIpKQorCisKK3N0YXRpYyBpbnQKK3RyYWNlbWFsbG9jX2FkZF90cmFjZShfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCit7CisgICAgcG9pbnRlcl90IGtleSA9IHtwdHIsIGRvbWFpbn07CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKyAgICB0cmFjZV90IHRyYWNlOworICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCogZW50cnk7CisgICAgaW50IHJlczsKKworICAgIGFzc2VydCh0cmFjZW1hbGxvY19jb25maWcudHJhY2luZyk7CisKKyAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tfbmV3KCk7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluICYmIGRvbWFpbiAhPSBERUZBVUxUX0RPTUFJTikgeworICAgICAgICAvKiBmaXJzdCB0cmFjZSB1c2luZyBhIG5vbi16ZXJvIGRvbWFpbiB3aGVyZWFzIHRyYWNlcyB1c2UgY29tcGFjdAorICAgICAgICAgICAodWludHB0cl90KSBrZXlzOiBzd2l0Y2ggdG8gcG9pbnRlcl90IGtleXMuICovCisgICAgICAgIGlmICh0cmFjZW1hbGxvY191c2VfZG9tYWluKCkgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgZW50cnkgPSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSh0cmFjZW1hbGxvY190cmFjZXMsIGtleSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyKTsKKyAgICB9CisKKyAgICBpZiAoZW50cnkgIT0gTlVMTCkgeworICAgICAgICAvKiB0aGUgbWVtb3J5IGJsb2NrIGlzIGFscmVhZHkgdHJhY2tlZCAqLworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQSh0cmFjZW1hbGxvY190cmFjZXMsIGVudHJ5LCB0cmFjZSk7CiAgICAgICAgIGFzc2VydCh0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5ID49IHRyYWNlLnNpemUpOwogICAgICAgICB0cmFjZW1hbGxvY190cmFjZWRfbWVtb3J5IC09IHRyYWNlLnNpemU7CisKKyAgICAgICAgdHJhY2Uuc2l6ZSA9IHNpemU7CisgICAgICAgIHRyYWNlLnRyYWNlYmFjayA9IHRyYWNlYmFjazsKKyAgICAgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9XUklURV9EQVRBKHRyYWNlbWFsbG9jX3RyYWNlcywgZW50cnksIHRyYWNlKTsKICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHRyYWNlLnNpemUgPSBzaXplOworICAgICAgICB0cmFjZS50cmFjZWJhY2sgPSB0cmFjZWJhY2s7CisKKyAgICAgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgICAgICByZXMgPSBfUHlfSEFTSFRBQkxFX1NFVCh0cmFjZW1hbGxvY190cmFjZXMsIGtleSwgdHJhY2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzID0gX1B5X0hBU0hUQUJMRV9TRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA8PSBTSVpFX01BWCAtIHNpemUpOworICAgIHRyYWNlbWFsbG9jX3RyYWNlZF9tZW1vcnkgKz0gc2l6ZTsKKyAgICBpZiAodHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeSA+IHRyYWNlbWFsbG9jX3BlYWtfdHJhY2VkX21lbW9yeSkKKyAgICAgICAgdHJhY2VtYWxsb2NfcGVha190cmFjZWRfbWVtb3J5ID0gdHJhY2VtYWxsb2NfdHJhY2VkX21lbW9yeTsKKyAgICByZXR1cm4gMDsKIH0KIAorI2RlZmluZSBBRERfVFJBQ0UocHRyLCBzaXplKSBcCisgICAgICAgICAgICB0cmFjZW1hbGxvY19hZGRfdHJhY2UoREVGQVVMVF9ET01BSU4sICh1aW50cHRyX3QpKHB0ciksIHNpemUpCisKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCiB7CiAgICAgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2MgPSAoUHlNZW1BbGxvY2F0b3JFeCAqKWN0eDsKICAgICB2b2lkICpwdHI7CiAKLSAgICBhc3NlcnQoZWxzaXplID09IDAgfHwgbmVsZW0gPD0gUFlfU0laRV9NQVggLyBlbHNpemUpOworICAgIGFzc2VydChlbHNpemUgPT0gMCB8fCBuZWxlbSA8PSBTSVpFX01BWCAvIGVsc2l6ZSk7CiAKICAgICBpZiAodXNlX2NhbGxvYykKICAgICAgICAgcHRyID0gYWxsb2MtPmNhbGxvYyhhbGxvYy0+Y3R4LCBuZWxlbSwgZWxzaXplKTsKQEAgLTQ4OCw3ICs2ODIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgaWYgKHRyYWNlbWFsbG9jX2FkZF90cmFjZShwdHIsIG5lbGVtICogZWxzaXplKSA8IDApIHsKKyAgICBpZiAoQUREX1RSQUNFKHB0ciwgbmVsZW0gKiBlbHNpemUpIDwgMCkgewogICAgICAgICAvKiBGYWlsZWQgdG8gYWxsb2NhdGUgYSB0cmFjZSBmb3IgdGhlIG5ldyBtZW1vcnkgYmxvY2sgKi8KICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICBhbGxvYy0+ZnJlZShhbGxvYy0+Y3R4LCBwdHIpOwpAQCAtNDk4LDYgKzY5Miw3IEBACiAgICAgcmV0dXJuIHB0cjsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSkKIHsKQEAgLTUxMiw5ICs3MDcsMTQgQEAKICAgICAgICAgLyogYW4gZXhpc3RpbmcgbWVtb3J5IGJsb2NrIGhhcyBiZWVuIHJlc2l6ZWQgKi8KIAogICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICB0cmFjZW1hbGxvY19yZW1vdmVfdHJhY2UocHRyKTsKIAotICAgICAgICBpZiAodHJhY2VtYWxsb2NfYWRkX3RyYWNlKHB0cjIsIG5ld19zaXplKSA8IDApIHsKKyAgICAgICAgLyogdHJhY2VtYWxsb2NfYWRkX3RyYWNlKCkgdXBkYXRlcyB0aGUgdHJhY2UgaWYgdGhlcmUgaXMgYWxyZWFkeQorICAgICAgICAgICBhIHRyYWNlIGF0IGFkZHJlc3MgKGRvbWFpbiwgcHRyMikgKi8KKyAgICAgICAgaWYgKHB0cjIgIT0gcHRyKSB7CisgICAgICAgICAgICBSRU1PVkVfVFJBQ0UocHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChBRERfVFJBQ0UocHRyMiwgbmV3X3NpemUpIDwgMCkgewogICAgICAgICAgICAgLyogTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLiBUaGUgZXJyb3IgY2Fubm90IGJlIHJlcG9ydGVkIHRvCiAgICAgICAgICAgICAgICB0aGUgY2FsbGVyLCBiZWNhdXNlIHJlYWxsb2MoKSBtYXkgYWxyZWFkeSBoYXZlIHNocnVuayB0aGUKICAgICAgICAgICAgICAgIG1lbW9yeSBibG9jayBhbmQgc28gcmVtb3ZlZCBieXRlcy4KQEAgLTUzMiw3ICs3MzIsNyBAQAogICAgICAgICAvKiBuZXcgYWxsb2NhdGlvbiAqLwogCiAgICAgICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgICAgIGlmICh0cmFjZW1hbGxvY19hZGRfdHJhY2UocHRyMiwgbmV3X3NpemUpIDwgMCkgeworICAgICAgICBpZiAoQUREX1RSQUNFKHB0cjIsIG5ld19zaXplKSA8IDApIHsKICAgICAgICAgICAgIC8qIEZhaWxlZCB0byBhbGxvY2F0ZSBhIHRyYWNlIGZvciB0aGUgbmV3IG1lbW9yeSBibG9jayAqLwogICAgICAgICAgICAgVEFCTEVTX1VOTE9DSygpOwogICAgICAgICAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyMik7CkBAIC01NDMsNiArNzQzLDcgQEAKICAgICByZXR1cm4gcHRyMjsKIH0KIAorCiBzdGF0aWMgdm9pZAogdHJhY2VtYWxsb2NfZnJlZSh2b2lkICpjdHgsIHZvaWQgKnB0cikKIHsKQEAgLTU1NywxMCArNzU4LDExIEBACiAgICAgYWxsb2MtPmZyZWUoYWxsb2MtPmN0eCwgcHRyKTsKIAogICAgIFRBQkxFU19MT0NLKCk7Ci0gICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CisgICAgUkVNT1ZFX1RSQUNFKHB0cik7CiAgICAgVEFCTEVTX1VOTE9DSygpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKGludCB1c2VfY2FsbG9jLCB2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKQEAgLTU4NSwxOCArNzg3LDIxIEBACiAgICAgcmV0dXJuIHB0cjsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX21hbGxvY19naWwodm9pZCAqY3R4LCBzaXplX3Qgc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfYWxsb2NfZ2lsKDAsIGN0eCwgMSwgc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19jYWxsb2NfZ2lsKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewogICAgIHJldHVybiB0cmFjZW1hbGxvY19hbGxvY19naWwoMSwgY3R4LCBuZWxlbSwgZWxzaXplKTsKIH0KIAorCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3JlYWxsb2NfZ2lsKHZvaWQgKmN0eCwgdm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpCiB7CkBAIC02MTIsNyArODE3LDcgQEAKICAgICAgICAgcHRyMiA9IGFsbG9jLT5yZWFsbG9jKGFsbG9jLT5jdHgsIHB0ciwgbmV3X3NpemUpOwogICAgICAgICBpZiAocHRyMiAhPSBOVUxMICYmIHB0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBUQUJMRVNfTE9DSygpOwotICAgICAgICAgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKHB0cik7CisgICAgICAgICAgICBSRU1PVkVfVFJBQ0UocHRyKTsKICAgICAgICAgICAgIFRBQkxFU19VTkxPQ0soKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcHRyMjsKQEAgLTYyOSw2ICs4MzQsNyBAQAogICAgIHJldHVybiBwdHIyOwogfQogCisKICNpZmRlZiBUUkFDRV9SQVdfTUFMTE9DCiBzdGF0aWMgdm9pZCoKIHRyYWNlbWFsbG9jX3Jhd19hbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCkBAIC02NjMsMTggKzg2OSwyMSBAQAogICAgIHJldHVybiBwdHI7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfbWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IHNpemUpCiB7CiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3Jhd19hbGxvYygwLCBjdHgsIDEsIHNpemUpOwogfQogCisKIHN0YXRpYyB2b2lkKgogdHJhY2VtYWxsb2NfcmF3X2NhbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuZWxlbSwgc2l6ZV90IGVsc2l6ZSkKIHsKICAgICByZXR1cm4gdHJhY2VtYWxsb2NfcmF3X2FsbG9jKDEsIGN0eCwgbmVsZW0sIGVsc2l6ZSk7CiB9CiAKKwogc3RhdGljIHZvaWQqCiB0cmFjZW1hbGxvY19yYXdfcmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnB0ciwgc2l6ZV90IG5ld19zaXplKQogewpAQCAtNjkxLDcgKzkwMCw3IEBACiAKICAgICAgICAgaWYgKHB0cjIgIT0gTlVMTCAmJiBwdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgVEFCTEVTX0xPQ0soKTsKLSAgICAgICAgICAgIHRyYWNlbWFsbG9jX3JlbW92ZV90cmFjZShwdHIpOworICAgICAgICAgICAgUkVNT1ZFX1RSQUNFKHB0cik7CiAgICAgICAgICAgICBUQUJMRVNfVU5MT0NLKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHB0cjI7CkBAIC03MTUsMjIgKzkyNCwzMSBAQAogfQogI2VuZGlmICAgLyogVFJBQ0VfUkFXX01BTExPQyAqLwogCisKIHN0YXRpYyBpbnQKLXRyYWNlbWFsbG9jX2NsZWFyX2ZpbGVuYW1lKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX2NsZWFyX2ZpbGVuYW1lKF9QeV9oYXNodGFibGVfdCAqaHQsIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lID0gKFB5T2JqZWN0ICopZW50cnktPmtleTsKKyAgICBQeU9iamVjdCAqZmlsZW5hbWU7CisKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgZmlsZW5hbWUpOwogICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIGludAotdHJhY2ViYWNrX2ZyZWVfdHJhY2ViYWNrKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlYmFja19mcmVlX3RyYWNlYmFjayhfUHlfaGFzaHRhYmxlX3QgKmh0LCBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfZGF0YSkKIHsKLSAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrID0gKHRyYWNlYmFja190ICopZW50cnktPmtleTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOworCisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0tFWShodCwgZW50cnksIHRyYWNlYmFjayk7CiAgICAgcmF3X2ZyZWUodHJhY2ViYWNrKTsKICAgICByZXR1cm4gMDsKIH0KIAorCiAvKiByZWVudHJhbnQgZmxhZyBtdXN0IGJlIHNldCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gYW5kIEdJTCBtdXN0IGJlIGhlbGQgKi8KIHN0YXRpYyB2b2lkCiB0cmFjZW1hbGxvY19jbGVhcl90cmFjZXModm9pZCkKQEAgLTc1Myw2ICs5NzEsNyBAQAogICAgIF9QeV9oYXNodGFibGVfY2xlYXIodHJhY2VtYWxsb2NfZmlsZW5hbWVzKTsKIH0KIAorCiBzdGF0aWMgaW50CiB0cmFjZW1hbGxvY19pbml0KHZvaWQpCiB7CkBAIC03ODksMjEgKzEwMDgsMjkgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyA9IGhhc2h0YWJsZV9uZXcoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYylQeU9iamVjdF9IYXNoLAorICAgIHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyA9IGhhc2h0YWJsZV9uZXcoc2l6ZW9mKFB5T2JqZWN0ICopLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcHlvYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNodGFibGVfY29tcGFyZV91bmljb2RlKTsKIAotICAgIHRyYWNlbWFsbG9jX3RyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9oYXNodGFibGVfaGFzaF9mdW5jKWhhc2h0YWJsZV9oYXNoX3RyYWNlYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMpaGFzaHRhYmxlX2NvbXBhcmVfdHJhY2ViYWNrKTsKKyAgICB0cmFjZW1hbGxvY190cmFjZWJhY2tzID0gaGFzaHRhYmxlX25ldyhzaXplb2YodHJhY2ViYWNrX3QgKiksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfdHJhY2ViYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3RyYWNlYmFjayk7CiAKLSAgICB0cmFjZW1hbGxvY190cmFjZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZih0cmFjZV90KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKKyAgICBpZiAodHJhY2VtYWxsb2NfY29uZmlnLnVzZV9kb21haW4pIHsKKyAgICAgICAgdHJhY2VtYWxsb2NfdHJhY2VzID0gaGFzaHRhYmxlX25ldyhzaXplb2YocG9pbnRlcl90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaHRhYmxlX2hhc2hfcG9pbnRlcl90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2h0YWJsZV9jb21wYXJlX3BvaW50ZXJfdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0cmFjZW1hbGxvY190cmFjZXMgPSBoYXNodGFibGVfbmV3KHNpemVvZih1aW50cHRyX3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFjZV90KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9kaXJlY3QpOworICAgIH0KIAogICAgIGlmICh0cmFjZW1hbGxvY19maWxlbmFtZXMgPT0gTlVMTCB8fCB0cmFjZW1hbGxvY190cmFjZWJhY2tzID09IE5VTEwKLSAgICAgICAgfHwgdHJhY2VtYWxsb2NfdHJhY2VzID09IE5VTEwpCi0gICAgeworICAgICAgIHx8IHRyYWNlbWFsbG9jX3RyYWNlcyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC04MjMsNiArMTA1MCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX2RlaW5pdCh2b2lkKQogewpAQCAtODMzLDkgKzEwNjEsOSBAQAogICAgIHRyYWNlbWFsbG9jX3N0b3AoKTsKIAogICAgIC8qIGRlc3Ryb3kgaGFzaCB0YWJsZXMgKi8KLSAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfdHJhY2VzKTsKICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3kodHJhY2VtYWxsb2NfdHJhY2ViYWNrcyk7CiAgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX2ZpbGVuYW1lcyk7CisgICAgX1B5X2hhc2h0YWJsZV9kZXN0cm95KHRyYWNlbWFsbG9jX3RyYWNlcyk7CiAKICNpZiBkZWZpbmVkKFdJVEhfVEhSRUFEKSAmJiBkZWZpbmVkKFRSQUNFX1JBV19NQUxMT0MpCiAgICAgaWYgKHRhYmxlc19sb2NrICE9IE5VTEwpIHsKQEAgLTg0NiwxMSArMTA3NCwxMyBAQAogCiAjaWZkZWYgUkVFTlRSQU5UX1RIUkVBRExPQ0FMCiAgICAgUHlUaHJlYWRfZGVsZXRlX2tleSh0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5KTsKKyAgICB0cmFjZW1hbGxvY19yZWVudHJhbnRfa2V5ID0gLTE7CiAjZW5kaWYKIAogICAgIFB5X1hERUNSRUYodW5rbm93bl9maWxlbmFtZSk7CiB9CiAKKwogc3RhdGljIGludAogdHJhY2VtYWxsb2Nfc3RhcnQoaW50IG1heF9uZnJhbWUpCiB7CkBAIC05MDcsNiArMTEzNyw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIHZvaWQKIHRyYWNlbWFsbG9jX3N0b3Aodm9pZCkKIHsKQEAgLTkyMyw4ICsxMTU0LDkgQEAKICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX01FTSwgJmFsbG9jYXRvcnMubWVtKTsKICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJmFsbG9jYXRvcnMub2JqKTsKIAotICAgIC8qIHJlbGVhc2UgbWVtb3J5ICovCiAgICAgdHJhY2VtYWxsb2NfY2xlYXJfdHJhY2VzKCk7CisKKyAgICAvKiByZWxlYXNlIG1lbW9yeSAqLwogICAgIHJhd19mcmVlKHRyYWNlbWFsbG9jX3RyYWNlYmFjayk7CiAgICAgdHJhY2VtYWxsb2NfdHJhY2ViYWNrID0gTlVMTDsKIH0KQEAgLTkzNSw2ICsxMTY3LDcgQEAKICAgICAiVHJ1ZSBpZiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlIGlzIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyxcbiIKICAgICAiRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCisKIHN0YXRpYyBQeU9iamVjdCoKIHB5X3RyYWNlbWFsbG9jX2lzX3RyYWNpbmcoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC05NDYsNiArMTE3OSw3IEBACiAgICAgIlxuIgogICAgICJDbGVhciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQgYnkgUHl0aG9uLiIpOwogCisKIHN0YXRpYyBQeU9iamVjdCoKIHB5X3RyYWNlbWFsbG9jX2NsZWFyX3RyYWNlcyhQeU9iamVjdCAqc2VsZikKIHsKQEAgLTk1OSw2ICsxMTkzLDcgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCiBmcmFtZV90b19weW9iamVjdChmcmFtZV90ICpmcmFtZSkKIHsKQEAgLTk2OCw4ICsxMjAzLDYgQEAKICAgICBpZiAoZnJhbWVfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGZyYW1lLT5maWxlbmFtZSA9PSBOVUxMKQotICAgICAgICBmcmFtZS0+ZmlsZW5hbWUgPSBQeV9Ob25lOwogICAgIFB5X0lOQ1JFRihmcmFtZS0+ZmlsZW5hbWUpOwogICAgIFB5VHVwbGVfU0VUX0lURU0oZnJhbWVfb2JqLCAwLCBmcmFtZS0+ZmlsZW5hbWUpOwogCkBAIC05ODMsNiArMTIxNiw3IEBACiAgICAgcmV0dXJuIGZyYW1lX29iajsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2ViYWNrX3QgKnRyYWNlYmFjaywgX1B5X2hhc2h0YWJsZV90ICppbnRlcm5fdGFibGUpCiB7CkBAIC0xMDIxLDMzICsxMjU1LDQzIEBACiAgICAgcmV0dXJuIGZyYW1lczsKIH0KIAorCiBzdGF0aWMgUHlPYmplY3QqCi10cmFjZV90b19weW9iamVjdCh0cmFjZV90ICp0cmFjZSwgX1B5X2hhc2h0YWJsZV90ICppbnRlcm5fdHJhY2ViYWNrcykKK3RyYWNlX3RvX3B5b2JqZWN0KF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbiwgdHJhY2VfdCAqdHJhY2UsCisgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX3QgKmludGVybl90cmFjZWJhY2tzKQogewogICAgIFB5T2JqZWN0ICp0cmFjZV9vYmogPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzaXplLCAqdHJhY2ViYWNrOworICAgIFB5T2JqZWN0ICpvYmo7CiAKLSAgICB0cmFjZV9vYmogPSBQeVR1cGxlX05ldygyKTsKKyAgICB0cmFjZV9vYmogPSBQeVR1cGxlX05ldygzKTsKICAgICBpZiAodHJhY2Vfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc2l6ZSA9IFB5TG9uZ19Gcm9tU2l6ZV90KHRyYWNlLT5zaXplKTsKLSAgICBpZiAoc2l6ZSA9PSBOVUxMKSB7CisgICAgb2JqID0gUHlMb25nX0Zyb21TaXplX3QoZG9tYWluKTsKKyAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHRyYWNlX29iaik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMCwgc2l6ZSk7CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDAsIG9iaik7CiAKLSAgICB0cmFjZWJhY2sgPSB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2UtPnRyYWNlYmFjaywgaW50ZXJuX3RyYWNlYmFja3MpOwotICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkgeworICAgIG9iaiA9IFB5TG9uZ19Gcm9tU2l6ZV90KHRyYWNlLT5zaXplKTsKKyAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHRyYWNlX29iaik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMSwgdHJhY2ViYWNrKTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKHRyYWNlX29iaiwgMSwgb2JqKTsKKworICAgIG9iaiA9IHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZS0+dHJhY2ViYWNrLCBpbnRlcm5fdHJhY2ViYWNrcyk7CisgICAgaWYgKG9iaiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRih0cmFjZV9vYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlUdXBsZV9TRVRfSVRFTSh0cmFjZV9vYmosIDIsIG9iaik7CiAKICAgICByZXR1cm4gdHJhY2Vfb2JqOwogfQogCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlczsKICAgICBfUHlfaGFzaHRhYmxlX3QgKnRyYWNlYmFja3M7CkBAIC0xMDU1LDE2ICsxMjk5LDI2IEBACiB9IGdldF90cmFjZXNfdDsKIAogc3RhdGljIGludAotdHJhY2VtYWxsb2NfZ2V0X3RyYWNlc19maWxsKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX2dldF90cmFjZXNfZmlsbChfUHlfaGFzaHRhYmxlX3QgKnRyYWNlcywgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7CiAgICAgZ2V0X3RyYWNlc190ICpnZXRfdHJhY2VzID0gdXNlcl9kYXRhOwotICAgIHRyYWNlX3QgKnRyYWNlOworICAgIF9QeVRyYWNlTWFsbG9jX2RvbWFpbl90IGRvbWFpbjsKKyAgICB0cmFjZV90IHRyYWNlOwogICAgIFB5T2JqZWN0ICp0cmFjZW1hbGxvY19vYmo7CiAgICAgaW50IHJlczsKIAotICAgIHRyYWNlID0gKHRyYWNlX3QgKilfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoZW50cnkpOworICAgIGlmICh0cmFjZW1hbGxvY19jb25maWcudXNlX2RvbWFpbikgeworICAgICAgICBwb2ludGVyX3Qga2V5OworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKHRyYWNlcywgZW50cnksIGtleSk7CisgICAgICAgIGRvbWFpbiA9IGtleS5kb21haW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkb21haW4gPSBERUZBVUxUX0RPTUFJTjsKKyAgICB9CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEodHJhY2VzLCBlbnRyeSwgdHJhY2UpOwogCi0gICAgdHJhY2VtYWxsb2Nfb2JqID0gdHJhY2VfdG9fcHlvYmplY3QodHJhY2UsIGdldF90cmFjZXMtPnRyYWNlYmFja3MpOworICAgIHRyYWNlbWFsbG9jX29iaiA9IHRyYWNlX3RvX3B5b2JqZWN0KGRvbWFpbiwgJnRyYWNlLCBnZXRfdHJhY2VzLT50cmFjZWJhY2tzKTsKICAgICBpZiAodHJhY2VtYWxsb2Nfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiAxOwogCkBAIC0xMDc2LDE0ICsxMzMwLDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogc3RhdGljIGludAotdHJhY2VtYWxsb2NfcHlvYmplY3RfZGVjcmVmX2NiKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKnVzZXJfZGF0YSkKK3RyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYihfUHlfaGFzaHRhYmxlX3QgKnRyYWNlYmFja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2RhdGEpCiB7Ci0gICAgUHlPYmplY3QgKm9iaiA9IChQeU9iamVjdCAqKV9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpOworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgX1B5X0hBU0hUQUJMRV9FTlRSWV9SRUFEX0RBVEEodHJhY2ViYWNrcywgZW50cnksIG9iaik7CiAgICAgUHlfREVDUkVGKG9iaik7CiAgICAgcmV0dXJuIDA7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZXNfZG9jLAogICAgICJfZ2V0X3RyYWNlcygpIC0+IGxpc3RcbiIKICAgICAiXG4iCkBAIC0xMTEwLDcgKzEzNjksOCBAQAogCiAgICAgLyogdGhlIHRyYWNlYmFjayBoYXNoIHRhYmxlIGlzIHVzZWQgdGVtcG9yYXJpbHkgdG8gaW50ZXJuIHRyYWNlYmFjayB0dXBsZQogICAgICAgIG9mIChmaWxlbmFtZSwgbGluZW5vKSB0dXBsZXMgKi8KLSAgICBnZXRfdHJhY2VzLnRyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KHNpemVvZihQeU9iamVjdCAqKSwKKyAgICBnZXRfdHJhY2VzLnRyYWNlYmFja3MgPSBoYXNodGFibGVfbmV3KHNpemVvZih0cmFjZWJhY2tfdCAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeU9iamVjdCAqKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKICAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZWJhY2tzID09IE5VTEwpIHsKQEAgLTExNDIsMTUgKzE0MDIsNDMgQEAKIGZpbmFsbHk6CiAgICAgaWYgKGdldF90cmFjZXMudHJhY2ViYWNrcyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaChnZXRfdHJhY2VzLnRyYWNlYmFja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2NfcHlvYmplY3RfZGVjcmVmX2NiLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jX3B5b2JqZWN0X2RlY3JlZl9jYiwgTlVMTCk7CiAgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveShnZXRfdHJhY2VzLnRyYWNlYmFja3MpOwogICAgIH0KLSAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZXMgIT0gTlVMTCkKKyAgICBpZiAoZ2V0X3RyYWNlcy50cmFjZXMgIT0gTlVMTCkgewogICAgICAgICBfUHlfaGFzaHRhYmxlX2Rlc3Ryb3koZ2V0X3RyYWNlcy50cmFjZXMpOworICAgIH0KIAogICAgIHJldHVybiBnZXRfdHJhY2VzLmxpc3Q7CiB9CiAKKworc3RhdGljIHRyYWNlYmFja190KgordHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFjayhfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCit7CisgICAgdHJhY2VfdCB0cmFjZTsKKyAgICBpbnQgZm91bmQ7CisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgaWYgKHRyYWNlbWFsbG9jX2NvbmZpZy51c2VfZG9tYWluKSB7CisgICAgICAgIHBvaW50ZXJfdCBrZXkgPSB7cHRyLCBkb21haW59OworICAgICAgICBmb3VuZCA9IF9QeV9IQVNIVEFCTEVfR0VUKHRyYWNlbWFsbG9jX3RyYWNlcywga2V5LCB0cmFjZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmb3VuZCA9IF9QeV9IQVNIVEFCTEVfR0VUKHRyYWNlbWFsbG9jX3RyYWNlcywgcHRyLCB0cmFjZSk7CisgICAgfQorICAgIFRBQkxFU19VTkxPQ0soKTsKKworICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIHRyYWNlLnRyYWNlYmFjazsKK30KKworCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X29iamVjdF90cmFjZWJhY2tfZG9jLAogICAgICJfZ2V0X29iamVjdF90cmFjZWJhY2sob2JqKVxuIgogICAgICJcbiIKQEAgLTExNjUsMTEgKzE0NTMsNyBAQAogewogICAgIFB5VHlwZU9iamVjdCAqdHlwZTsKICAgICB2b2lkICpwdHI7Ci0gICAgdHJhY2VfdCB0cmFjZTsKLSAgICBpbnQgZm91bmQ7Ci0KLSAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB0cmFjZWJhY2tfdCAqdHJhY2ViYWNrOwogCiAgICAgdHlwZSA9IFB5X1RZUEUob2JqKTsKICAgICBpZiAoUHlUeXBlX0lTX0dDKHR5cGUpKQpAQCAtMTE3NywxNiArMTQ2MSw0OCBAQAogICAgIGVsc2UKICAgICAgICAgcHRyID0gKHZvaWQgKilvYmo7CiAKLSAgICBUQUJMRVNfTE9DSygpOwotICAgIGZvdW5kID0gX1B5X0hBU0hUQUJMRV9HRVQodHJhY2VtYWxsb2NfdHJhY2VzLCBwdHIsIHRyYWNlKTsKLSAgICBUQUJMRVNfVU5MT0NLKCk7Ci0KLSAgICBpZiAoIWZvdW5kKQorICAgIHRyYWNlYmFjayA9IHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soREVGQVVMVF9ET01BSU4sICh1aW50cHRyX3QpcHRyKTsKKyAgICBpZiAodHJhY2ViYWNrID09IE5VTEwpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCi0gICAgcmV0dXJuIHRyYWNlYmFja190b19weW9iamVjdCh0cmFjZS50cmFjZWJhY2ssIE5VTEwpOworICAgIHJldHVybiB0cmFjZWJhY2tfdG9fcHlvYmplY3QodHJhY2ViYWNrLCBOVUxMKTsKIH0KIAorCisjZGVmaW5lIFBVVFMoZmQsIHN0cikgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHN0ciwgKGludClzdHJsZW4oc3RyKSkKKworc3RhdGljIHZvaWQKK19QeU1lbV9EdW1wRnJhbWUoaW50IGZkLCBmcmFtZV90ICogZnJhbWUpCit7CisgICAgUFVUUyhmZCwgIiAgRmlsZSBcIiIpOworICAgIF9QeV9EdW1wQVNDSUkoZmQsIGZyYW1lLT5maWxlbmFtZSk7CisgICAgUFVUUyhmZCwgIlwiLCBsaW5lICIpOworICAgIF9QeV9EdW1wRGVjaW1hbChmZCwgZnJhbWUtPmxpbmVubyk7CisgICAgUFVUUyhmZCwgIlxuIik7Cit9CisKKy8qIER1bXAgdGhlIHRyYWNlYmFjayB3aGVyZSBhIG1lbW9yeSBibG9jayB3YXMgYWxsb2NhdGVkIGludG8gZmlsZSBkZXNjcmlwdG9yCisgICBmZC4gVGhlIGZ1bmN0aW9uIG1heSBibG9jayBvbiBUQUJMRVNfTE9DSygpIGJ1dCBpdCBpcyB1bmxpa2VseS4gKi8KK3ZvaWQKK19QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKQoreworICAgIHRyYWNlYmFja190ICp0cmFjZWJhY2s7CisgICAgaW50IGk7CisKKyAgICB0cmFjZWJhY2sgPSB0cmFjZW1hbGxvY19nZXRfdHJhY2ViYWNrKERFRkFVTFRfRE9NQUlOLCAodWludHB0cl90KXB0cik7CisgICAgaWYgKHRyYWNlYmFjayA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICBQVVRTKGZkLCAiTWVtb3J5IGJsb2NrIGFsbG9jYXRlZCBhdCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKKyAgICBmb3IgKGk9MDsgaSA8IHRyYWNlYmFjay0+bmZyYW1lOyBpKyspIHsKKyAgICAgICAgX1B5TWVtX0R1bXBGcmFtZShmZCwgJnRyYWNlYmFjay0+ZnJhbWVzW2ldKTsKKyAgICB9CisgICAgUFVUUyhmZCwgIlxuIik7Cit9CisKKyN1bmRlZiBQVVRTCisKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX3N0YXJ0X2RvYywKICAgICAic3RhcnQobmZyYW1lOiBpbnQ9MSlcbiIKICAgICAiXG4iCkBAIC0xMjIyLDYgKzE1MzgsNyBAQAogICAgICJTdG9wIHRyYWNpbmcgUHl0aG9uIG1lbW9yeSBhbGxvY2F0aW9ucyBhbmQgY2xlYXIgdHJhY2VzXG4iCiAgICAgIm9mIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkIGJ5IFB5dGhvbi4iKTsKIAorCiBzdGF0aWMgUHlPYmplY3QqCiBweV90cmFjZW1hbGxvY19zdG9wKFB5T2JqZWN0ICpzZWxmKQogewpAQCAtMTIyOSw2ICsxNTQ2LDcgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorCiBQeURvY19TVFJWQVIodHJhY2VtYWxsb2NfZ2V0X3RyYWNlYmFja19saW1pdF9kb2MsCiAgICAgImdldF90cmFjZWJhY2tfbGltaXQoKSAtPiBpbnRcbiIKICAgICAiXG4iCkBAIC0xMjQ0LDYgKzE1NjIsNyBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcodHJhY2VtYWxsb2NfY29uZmlnLm1heF9uZnJhbWUpOwogfQogCisKIFB5RG9jX1NUUlZBUih0cmFjZW1hbGxvY19nZXRfdHJhY2VtYWxsb2NfbWVtb3J5X2RvYywKICAgICAiZ2V0X3RyYWNlbWFsbG9jX21lbW9yeSgpIC0+IGludFxuIgogICAgICJcbiIKQEAgLTEyNjcsNiArMTU4Niw3IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4iLCBzaXplX29iaik7CiB9CiAKKwogUHlEb2NfU1RSVkFSKHRyYWNlbWFsbG9jX2dldF90cmFjZWRfbWVtb3J5X2RvYywKICAgICAiZ2V0X3RyYWNlZF9tZW1vcnkoKSAtPiAoaW50LCBpbnQpXG4iCiAgICAgIlxuIgpAQCAtMTI5Miw2ICsxNjEyLDcgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk4iLCBzaXplX29iaiwgcGVha19zaXplX29iaik7CiB9CiAKKwogc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7CiAgICAgeyJpc190cmFjaW5nIiwgKFB5Q0Z1bmN0aW9uKXB5X3RyYWNlbWFsbG9jX2lzX3RyYWNpbmcsCiAgICAgIE1FVEhfTk9BUkdTLCB0cmFjZW1hbGxvY19pc190cmFjaW5nX2RvY30sCkBAIC0xMzQyLDYgKzE2NjMsNyBAQAogICAgIHJldHVybiBtOwogfQogCisKIHN0YXRpYyBpbnQKIHBhcnNlX3N5c194b3B0aW9ucyhQeU9iamVjdCAqdmFsdWUpCiB7CkBAIC0xMzcwLDYgKzE2OTIsNyBAQAogICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKG5mcmFtZSwgbG9uZywgaW50KTsKIH0KIAorCiBpbnQKIF9QeVRyYWNlTWFsbG9jX0luaXQodm9pZCkKIHsKQEAgLTE0MjgsNiArMTc1MSw3IEBACiAgICAgcmV0dXJuIHRyYWNlbWFsbG9jX3N0YXJ0KG5mcmFtZSk7CiB9CiAKKwogdm9pZAogX1B5VHJhY2VNYWxsb2NfRmluaSh2b2lkKQogewpAQCAtMTQzNywzICsxNzYxLDU5IEBACiAgICAgdHJhY2VtYWxsb2NfZGVpbml0KCk7CiB9CiAKK2ludAorX1B5VHJhY2VNYWxsb2NfVHJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyLAorICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpCit7CisgICAgaW50IHJlczsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfU1RBVEUgZ2lsX3N0YXRlOworI2VuZGlmCisKKyAgICBpZiAoIXRyYWNlbWFsbG9jX2NvbmZpZy50cmFjaW5nKSB7CisgICAgICAgIC8qIHRyYWNlbWFsbG9jIGlzIG5vdCB0cmFjaW5nOiBkbyBub3RoaW5nICovCisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGdpbF9zdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlKCk7CisjZW5kaWYKKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgcmVzID0gdHJhY2VtYWxsb2NfYWRkX3RyYWNlKGRvbWFpbiwgcHRyLCBzaXplKTsKKyAgICBUQUJMRVNfVU5MT0NLKCk7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxfc3RhdGUpOworI2VuZGlmCisgICAgcmV0dXJuIHJlczsKK30KKworCitpbnQKK19QeVRyYWNlTWFsbG9jX1VudHJhY2soX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLCB1aW50cHRyX3QgcHRyKQoreworICAgIGlmICghdHJhY2VtYWxsb2NfY29uZmlnLnRyYWNpbmcpIHsKKyAgICAgICAgLyogdHJhY2VtYWxsb2MgaXMgbm90IHRyYWNpbmc6IGRvIG5vdGhpbmcgKi8KKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIFRBQkxFU19MT0NLKCk7CisgICAgdHJhY2VtYWxsb2NfcmVtb3ZlX3RyYWNlKGRvbWFpbiwgcHRyKTsKKyAgICBUQUJMRVNfVU5MT0NLKCk7CisKKyAgICByZXR1cm4gMDsKK30KKworCitQeU9iamVjdCoKK19QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjayhfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sIHVpbnRwdHJfdCBwdHIpCit7CisgICAgdHJhY2ViYWNrX3QgKnRyYWNlYmFjazsKKworICAgIHRyYWNlYmFjayA9IHRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soZG9tYWluLCBwdHIpOworICAgIGlmICh0cmFjZWJhY2sgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICByZXR1cm4gdHJhY2ViYWNrX3RvX3B5b2JqZWN0KHRyYWNlYmFjaywgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL193aW5hcGkuYyBiL01vZHVsZXMvX3dpbmFwaS5jCmluZGV4IGVkYzZjZjQuLjkxZDRmMDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3dpbmFwaS5jCisrKyBiL01vZHVsZXMvX3dpbmFwaS5jCkBAIC0xNzUsNyArMTc1LDcgQEAKICAgICAgICAgc2VsZi5kZWNsYXJlKGRhdGEpCiAgICAgICAgIHNlbGYuZXJyX29jY3VycmVkX2lmKCJfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFIiwgZGF0YSkKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCi0gICAgICAgICAgICAnaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTClcbiAgICBQeV9SRVRVUk5fTk9ORTtcbicpCisgICAgICAgICAgICAnaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkge1xuICAgIFB5X1JFVFVSTl9OT05FO1xufVxuJykKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpO1xuJykKIApAQCAtMTg4LDcgKzE4OCw3IEBACiAgICAgICAgIGRhdGEucmV0dXJuX2NvbnZlcnNpb24uYXBwZW5kKAogICAgICAgICAgICAgJ3JldHVybl92YWx1ZSA9IFB5X0J1aWxkVmFsdWUoImsiLCBfcmV0dXJuX3ZhbHVlKTtcbicpCiBbcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0zNzQwNzY5Nzk1OTZlYmJhXSovCisvKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD05NDgxOWU3MmQyYzZkNTU4XSovCiAKICNpbmNsdWRlICJjbGluaWMvX3dpbmFwaS5jLmgiCiAKQEAgLTQ4Niw3ICs0ODYsNyBAQAogICAgIGNvbnN0IFVTSE9SVCBwcmVmaXhfbGVuID0gNDsKICAgICBVU0hPUlQgcHJpbnRfbGVuID0gMDsKICAgICBVU0hPUlQgcmRiX3NpemUgPSAwOwotICAgIFBSRVBBUlNFX0RBVEFfQlVGRkVSIHJkYiA9IE5VTEw7CisgICAgX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSIHJkYiA9IE5VTEw7CiAKICAgICAvKiBKdW5jdGlvbiBwb2ludCBjcmVhdGlvbiAqLwogICAgIEhBTkRMRSBqdW5jdGlvbiA9IE5VTEw7CkBAIC01NDIsMTggKzU0MiwxOCBAQAogICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgcHJpbnQgbmFtZSBpbiBieXRlcwogICAgICAgICAgLSB0aGUgc2l6ZSBvZiB0aGUgc3Vic3RpdHV0ZSBuYW1lIGluIGJ5dGVzCiAgICAgICAgICAtIHRoZSBzaXplIG9mIHR3byBOVUwgdGVybWluYXRvcnMgaW4gYnl0ZXMgKi8KLSAgICByZGJfc2l6ZSA9IFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgKworICAgIHJkYl9zaXplID0gX1B5X1JFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgKwogICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlcikgLQogICAgICAgICBzaXplb2YocmRiLT5Nb3VudFBvaW50UmVwYXJzZUJ1ZmZlci5QYXRoQnVmZmVyKSArCiAgICAgICAgIC8qIFR3byArMSdzIGZvciBOVUwgdGVybWluYXRvcnMuICovCiAgICAgICAgIChwcmVmaXhfbGVuICsgcHJpbnRfbGVuICsgMSArIHByaW50X2xlbiArIDEpICogc2l6ZW9mKFdDSEFSKTsKLSAgICByZGIgPSAoUFJFUEFSU0VfREFUQV9CVUZGRVIpUHlNZW1fUmF3TWFsbG9jKHJkYl9zaXplKTsKKyAgICByZGIgPSAoX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSKVB5TWVtX1Jhd01hbGxvYyhyZGJfc2l6ZSk7CiAgICAgaWYgKHJkYiA9PSBOVUxMKQogICAgICAgICBnb3RvIGNsZWFudXA7CiAKICAgICBtZW1zZXQocmRiLCAwLCByZGJfc2l6ZSk7CiAgICAgcmRiLT5SZXBhcnNlVGFnID0gSU9fUkVQQVJTRV9UQUdfTU9VTlRfUE9JTlQ7Ci0gICAgcmRiLT5SZXBhcnNlRGF0YUxlbmd0aCA9IHJkYl9zaXplIC0gUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRTsKKyAgICByZGItPlJlcGFyc2VEYXRhTGVuZ3RoID0gcmRiX3NpemUgLSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRTsKICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lT2Zmc2V0ID0gMDsKICAgICByZGItPk1vdW50UG9pbnRSZXBhcnNlQnVmZmVyLlN1YnN0aXR1dGVOYW1lTGVuZ3RoID0KICAgICAgICAgKHByZWZpeF9sZW4gKyBwcmludF9sZW4pICogc2l6ZW9mKFdDSEFSKTsKQEAgLTY3NCw3ICs2NzQsNyBAQAogLyogaGVscGVycyBmb3IgY3JlYXRlcHJvY2VzcyAqLwogCiBzdGF0aWMgdW5zaWduZWQgbG9uZwotZ2V0dWxvbmcoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK2dldHVsb25nKFB5T2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOwogICAgIHVuc2lnbmVkIGxvbmcgcmV0OwpAQCAtNjkwLDcgKzY5MCw3IEBACiB9CiAKIHN0YXRpYyBIQU5ETEUKLWdldGhhbmRsZShQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQorZ2V0aGFuZGxlKFB5T2JqZWN0KiBvYmosIGNvbnN0IGNoYXIqIG5hbWUpCiB7CiAgICAgUHlPYmplY3QqIHZhbHVlOwogICAgIEhBTkRMRSByZXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FkZHJpbmZvLmggYi9Nb2R1bGVzL2FkZHJpbmZvLmgKaW5kZXggMWNiNmYwZS4uYzNjODYyNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hZGRyaW5mby5oCisrKyBiL01vZHVsZXMvYWRkcmluZm8uaApAQCAtMTQxLDExICsxNDEsNyBAQAogICogUkZDIDI1NTM6IHByb3RvY29sLWluZGVwZW5kZW50IHBsYWNlaG9sZGVyIGZvciBzb2NrZXQgYWRkcmVzc2VzCiAgKi8KICNkZWZpbmUgX1NTX01BWFNJWkUgICAgIDEyOAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jZGVmaW5lIF9TU19BTElHTlNJWkUgICAoc2l6ZW9mKFBZX0xPTkdfTE9ORykpCi0jZWxzZQotI2RlZmluZSBfU1NfQUxJR05TSVpFICAgKHNpemVvZihkb3VibGUpKQotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCisjZGVmaW5lIF9TU19BTElHTlNJWkUgICAoc2l6ZW9mKGxvbmcgbG9uZykpCiAjZGVmaW5lIF9TU19QQUQxU0laRSAgICAoX1NTX0FMSUdOU0laRSAtIHNpemVvZih1X2NoYXIpICogMikKICNkZWZpbmUgX1NTX1BBRDJTSVpFICAgIChfU1NfTUFYU0laRSAtIHNpemVvZih1X2NoYXIpICogMiAtIFwKICAgICAgICAgICAgICAgICBfU1NfUEFEMVNJWkUgLSBfU1NfQUxJR05TSVpFKQpAQCAtMTU4LDExICsxNTQsNyBAQAogICAgIHVuc2lnbmVkIHNob3J0IHNzX2ZhbWlseTsgICAgICAgICAgIC8qIGFkZHJlc3MgZmFtaWx5ICovCiAjZW5kaWYgLyogSEFWRV9TT0NLQUREUl9TQV9MRU4gKi8KICAgICBjaGFyICAgICAgICBfX3NzX3BhZDFbX1NTX1BBRDFTSVpFXTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyBfX3NzX2FsaWduOyAgICAgICAgICAgIC8qIGZvcmNlIGRlc2lyZWQgc3RydWN0dXJlIHN0b3JhZ2UgYWxpZ25tZW50ICovCi0jZWxzZQotICAgIGRvdWJsZSBfX3NzX2FsaWduOyAgICAgICAgICAvKiBmb3JjZSBkZXNpcmVkIHN0cnVjdHVyZSBzdG9yYWdlIGFsaWdubWVudCAqLwotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCisgICAgbG9uZyBsb25nIF9fc3NfYWxpZ247ICAgICAgICAgICAgLyogZm9yY2UgZGVzaXJlZCBzdHJ1Y3R1cmUgc3RvcmFnZSBhbGlnbm1lbnQgKi8KICAgICBjaGFyICAgICAgICBfX3NzX3BhZDJbX1NTX1BBRDJTSVpFXTsKIH07CiAjZW5kaWYgLyogIUhBVkVfU09DS0FERFJfU1RPUkFHRSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCmluZGV4IGE0OTY2YjQuLjJjYWE4ZWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXJyYXltb2R1bGUuYworKysgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKQEAgLTMxLDcgKzMxLDcgQEAKICAgICBpbnQgaXRlbXNpemU7CiAgICAgUHlPYmplY3QgKiAoKmdldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90KTsKICAgICBpbnQgKCpzZXRpdGVtKShzdHJ1Y3QgYXJyYXlvYmplY3QgKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7Ci0gICAgY2hhciAqZm9ybWF0czsKKyAgICBjb25zdCBjaGFyICpmb3JtYXRzOwogICAgIGludCBpc19pbnRlZ2VyX3R5cGU7CiAgICAgaW50IGlzX3NpZ25lZDsKIH07CkBAIC00MCw3ICs0MCw3IEBACiAgICAgUHlPYmplY3RfVkFSX0hFQUQKICAgICBjaGFyICpvYl9pdGVtOwogICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOwotICAgIHN0cnVjdCBhcnJheWRlc2NyICpvYl9kZXNjcjsKKyAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqb2JfZGVzY3I7CiAgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OyAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogICAgIGludCBvYl9leHBvcnRzOyAgLyogTnVtYmVyIG9mIGV4cG9ydGVkIGJ1ZmZlcnMgKi8KIH0gYXJyYXlvYmplY3Q7CkBAIC00MTgsMjIgKzQxOCwyMCBAQAogICAgIHJldHVybiAwOwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLQogc3RhdGljIFB5T2JqZWN0ICoKIHFfZ2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSkKIHsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKChsb25nIGxvbmcgKilhcC0+b2JfaXRlbSlbaV0pOwogfQogCiBzdGF0aWMgaW50CiBxX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeCkpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoaSA+PSAwKQotICAgICAgICAoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgICAgICgobG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldID0geDsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDQxLDIwICs0MzksMjAgQEAKIFFRX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygKLSAgICAgICAgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworICAgICAgICAoKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFwLT5vYl9pdGVtKVtpXSk7CiB9CiAKIHN0YXRpYyBpbnQKIFFRX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB4OwogICAgIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKICAgICAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7Ci0gICAgICAgIGlmICh4ID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmICh4ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQWV9MT05HX0xPTkcgeTsKKyAgICAgICAgbG9uZyBsb25nIHk7CiAgICAgICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeSkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmICh5IDwgMCkgewpAQCAtNDYyLDE0ICs0NjAsMTMgQEAKICAgICAgICAgICAgICAgICAidW5zaWduZWQgbG9uZyBsb25nIGlzIGxlc3MgdGhhbiBtaW5pbXVtIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgeCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpeTsKKyAgICAgICAgeCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpeTsKICAgICB9CiAKICAgICBpZiAoaSA+PSAwKQotICAgICAgICAoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgICAgICgodW5zaWduZWQgbG9uZyBsb25nICopYXAtPm9iX2l0ZW0pW2ldID0geDsKICAgICByZXR1cm4gMDsKIH0KLSNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogZl9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQpAQCAtNTExLDcgKzUwOCw3IEBACiAgKiBEb24ndCBmb3JnZXQgdG8gdXBkYXRlIHR5cGVjb2RlX3RvX21mb3JtYXRfY29kZSgpIGlmIHlvdSBhZGQgYSBuZXcKICAqIHR5cGVjb2RlLgogICovCi1zdGF0aWMgc3RydWN0IGFycmF5ZGVzY3IgZGVzY3JpcHRvcnNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciBkZXNjcmlwdG9yc1tdID0gewogICAgIHsnYicsIDEsIGJfZ2V0aXRlbSwgYl9zZXRpdGVtLCAiYiIsIDEsIDF9LAogICAgIHsnQicsIDEsIEJCX2dldGl0ZW0sIEJCX3NldGl0ZW0sICJCIiwgMSwgMH0sCiAgICAgeyd1Jywgc2l6ZW9mKFB5X1VOSUNPREUpLCB1X2dldGl0ZW0sIHVfc2V0aXRlbSwgInUiLCAwLCAwfSwKQEAgLTUyMSwxMCArNTE4LDggQEAKICAgICB7J0knLCBzaXplb2YoaW50KSwgSUlfZ2V0aXRlbSwgSUlfc2V0aXRlbSwgIkkiLCAxLCAwfSwKICAgICB7J2wnLCBzaXplb2YobG9uZyksIGxfZ2V0aXRlbSwgbF9zZXRpdGVtLCAibCIsIDEsIDF9LAogICAgIHsnTCcsIHNpemVvZihsb25nKSwgTExfZ2V0aXRlbSwgTExfc2V0aXRlbSwgIkwiLCAxLCAwfSwKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIHsncScsIHNpemVvZihQWV9MT05HX0xPTkcpLCBxX2dldGl0ZW0sIHFfc2V0aXRlbSwgInEiLCAxLCAxfSwKLSAgICB7J1EnLCBzaXplb2YoUFlfTE9OR19MT05HKSwgUVFfZ2V0aXRlbSwgUVFfc2V0aXRlbSwgIlEiLCAxLCAwfSwKLSNlbmRpZgorICAgIHsncScsIHNpemVvZihsb25nIGxvbmcpLCBxX2dldGl0ZW0sIHFfc2V0aXRlbSwgInEiLCAxLCAxfSwKKyAgICB7J1EnLCBzaXplb2YobG9uZyBsb25nKSwgUVFfZ2V0aXRlbSwgUVFfc2V0aXRlbSwgIlEiLCAxLCAwfSwKICAgICB7J2YnLCBzaXplb2YoZmxvYXQpLCBmX2dldGl0ZW0sIGZfc2V0aXRlbSwgImYiLCAwLCAwfSwKICAgICB7J2QnLCBzaXplb2YoZG91YmxlKSwgZF9nZXRpdGVtLCBkX3NldGl0ZW0sICJkIiwgMCwgMH0sCiAgICAgeydcMCcsIDAsIDAsIDAsIDAsIDAsIDB9IC8qIFNlbnRpbmVsICovCkBAIC01MzksNyArNTM0LDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFkNDNkMzdlOTQyYTg4NTRdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW5ld2FycmF5b2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBzaXplLCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3IpCituZXdhcnJheW9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyKQogewogICAgIGFycmF5b2JqZWN0ICpvcDsKICAgICBzaXplX3QgbmJ5dGVzOwpAQCAtODQxLDEwICs4MzYsMTAgQEAKICAgICAgICAgbWVtc2V0KG5wLT5vYl9pdGVtLCBhLT5vYl9pdGVtWzBdLCBuZXdieXRlcyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlfc3NpemVfdCBkb25lID0gb2xkYnl0ZXM7Ci0gICAgICAgIFB5X01FTUNQWShucC0+b2JfaXRlbSwgYS0+b2JfaXRlbSwgb2xkYnl0ZXMpOworICAgICAgICBtZW1jcHkobnAtPm9iX2l0ZW0sIGEtPm9iX2l0ZW0sIG9sZGJ5dGVzKTsKICAgICAgICAgd2hpbGUgKGRvbmUgPCBuZXdieXRlcykgewogICAgICAgICAgICAgUHlfc3NpemVfdCBuY29weSA9IChkb25lIDw9IG5ld2J5dGVzLWRvbmUpID8gZG9uZSA6IG5ld2J5dGVzLWRvbmU7Ci0gICAgICAgICAgICBQeV9NRU1DUFkobnAtPm9iX2l0ZW0rZG9uZSwgbnAtPm9iX2l0ZW0sIG5jb3B5KTsKKyAgICAgICAgICAgIG1lbWNweShucC0+b2JfaXRlbStkb25lLCBucC0+b2JfaXRlbSwgbmNvcHkpOwogICAgICAgICAgICAgZG9uZSArPSBuY29weTsKICAgICAgICAgfQogICAgIH0KQEAgLTg1MiwzNyArODQ3LDEwIEBACiB9CiAKIHN0YXRpYyBpbnQKLWFycmF5X2Fzc19zbGljZShhcnJheW9iamVjdCAqYSwgUHlfc3NpemVfdCBpbG93LCBQeV9zc2l6ZV90IGloaWdoLCBQeU9iamVjdCAqdikKK2FycmF5X2RlbF9zbGljZShhcnJheW9iamVjdCAqYSwgUHlfc3NpemVfdCBpbG93LCBQeV9zc2l6ZV90IGloaWdoKQogewogICAgIGNoYXIgKml0ZW07Ci0gICAgUHlfc3NpemVfdCBuOyAvKiBTaXplIG9mIHJlcGxhY2VtZW50IGFycmF5ICovCiAgICAgUHlfc3NpemVfdCBkOyAvKiBDaGFuZ2UgaW4gc2l6ZSAqLwotI2RlZmluZSBiICgoYXJyYXlvYmplY3QgKil2KQotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIG4gPSAwOwotICAgIGVsc2UgaWYgKGFycmF5X0NoZWNrKHYpKSB7Ci0gICAgICAgIG4gPSBQeV9TSVpFKGIpOwotICAgICAgICBpZiAoYSA9PSBiKSB7Ci0gICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2UgImFbaTpqXSA9IGEiIC0tIGNvcHkgYiBmaXJzdCAqLwotICAgICAgICAgICAgaW50IHJldDsKLSAgICAgICAgICAgIHYgPSBhcnJheV9zbGljZShiLCAwLCBuKTsKLSAgICAgICAgICAgIGlmICghdikKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICByZXQgPSBhcnJheV9hc3Nfc2xpY2UoYSwgaWxvdywgaWhpZ2gsIHYpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIHJldDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYi0+b2JfZGVzY3IgIT0gYS0+b2JfZGVzY3IpIHsKLSAgICAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAiY2FuIG9ubHkgYXNzaWduIGFycmF5IChub3QgXCIlLjIwMHNcIikgdG8gYXJyYXkgc2xpY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmIChpbG93IDwgMCkKICAgICAgICAgaWxvdyA9IDA7CiAgICAgZWxzZSBpZiAoaWxvdyA+IFB5X1NJWkUoYSkpCkBAIC04OTQsNyArODYyLDcgQEAKICAgICBlbHNlIGlmIChpaGlnaCA+IFB5X1NJWkUoYSkpCiAgICAgICAgIGloaWdoID0gUHlfU0laRShhKTsKICAgICBpdGVtID0gYS0+b2JfaXRlbTsKLSAgICBkID0gbiAtIChpaGlnaC1pbG93KTsKKyAgICBkID0gaWhpZ2gtaWxvdzsKICAgICAvKiBJc3N1ZSAjNDUwOTogSWYgdGhlIGFycmF5IGhhcyBleHBvcnRlZCBidWZmZXJzIGFuZCB0aGUgc2xpY2UKICAgICAgICBhc3NpZ25tZW50IHdvdWxkIGNoYW5nZSB0aGUgc2l6ZSBvZiB0aGUgYXJyYXksIGZhaWwgZWFybHkgdG8gbWFrZQogICAgICAgIHN1cmUgd2UgZG9uJ3QgbW9kaWZ5IGl0LiAqLwpAQCAtOTAzLDI1ICs4NzEsMTQgQEAKICAgICAgICAgICAgICJjYW5ub3QgcmVzaXplIGFuIGFycmF5IHRoYXQgaXMgZXhwb3J0aW5nIGJ1ZmZlcnMiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAoZCA8IDApIHsgLyogRGVsZXRlIC1kIGl0ZW1zICovCi0gICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaCtkKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCisgICAgaWYgKGQgPiAwKSB7IC8qIERlbGV0ZSBkIGl0ZW1zICovCisgICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaC1kKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCiAgICAgICAgICAgICBpdGVtICsgaWhpZ2gqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAogICAgICAgICAgICAgKFB5X1NJWkUoYSktaWhpZ2gpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7Ci0gICAgICAgIGlmIChhcnJheV9yZXNpemUoYSwgUHlfU0laRShhKSArIGQpID09IC0xKQorICAgICAgICBpZiAoYXJyYXlfcmVzaXplKGEsIFB5X1NJWkUoYSkgLSBkKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZWxzZSBpZiAoZCA+IDApIHsgLyogSW5zZXJ0IGQgaXRlbXMgKi8KLSAgICAgICAgaWYgKGFycmF5X3Jlc2l6ZShhLCBQeV9TSVpFKGEpICsgZCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIG1lbW1vdmUoaXRlbSArIChpaGlnaCtkKSphLT5vYl9kZXNjci0+aXRlbXNpemUsCi0gICAgICAgICAgICBpdGVtICsgaWhpZ2gqYS0+b2JfZGVzY3ItPml0ZW1zaXplLAotICAgICAgICAgICAgKFB5X1NJWkUoYSktaWhpZ2gpKmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7Ci0gICAgfQotICAgIGlmIChuID4gMCkKLSAgICAgICAgbWVtY3B5KGl0ZW0gKyBpbG93KmEtPm9iX2Rlc2NyLT5pdGVtc2l6ZSwgYi0+b2JfaXRlbSwKLSAgICAgICAgICAgICAgIG4qYi0+b2JfZGVzY3ItPml0ZW1zaXplKTsKICAgICByZXR1cm4gMDsKLSN1bmRlZiBiCiB9CiAKIHN0YXRpYyBpbnQKQEAgLTkzMyw3ICs4OTAsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBhcnJheV9hc3Nfc2xpY2UoYSwgaSwgaSsxLCB2KTsKKyAgICAgICAgcmV0dXJuIGFycmF5X2RlbF9zbGljZShhLCBpLCBpKzEpOwogICAgIHJldHVybiAoKmEtPm9iX2Rlc2NyLT5zZXRpdGVtKShhLCBpLCB2KTsKIH0KIApAQCAtMTE2Myw4ICsxMTIwLDcgQEAKICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHNlbGZpLCB2LCBQeV9FUSk7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmaSk7CiAgICAgICAgIGlmIChjbXAgPiAwKSB7Ci0gICAgICAgICAgICBpZiAoYXJyYXlfYXNzX3NsaWNlKHNlbGYsIGksIGkrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMKSAhPSAwKQorICAgICAgICAgICAgaWYgKGFycmF5X2RlbF9zbGljZShzZWxmLCBpLCBpKzEpICE9IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTEyMDcsNyArMTE2Myw3IEBACiAgICAgdiA9IGdldGFycmF5aXRlbSgoUHlPYmplY3QgKilzZWxmLCBpKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoYXJyYXlfYXNzX3NsaWNlKHNlbGYsIGksIGkrMSwgKFB5T2JqZWN0ICopTlVMTCkgIT0gMCkgeworICAgIGlmIChhcnJheV9kZWxfc2xpY2Uoc2VsZiwgaSwgaSsxKSAhPSAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTg2MSwxNiArMTgxNywxNCBAQAogICAgICAgICBpbnRzaXplID0gc2l6ZW9mKGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKLSNpZiBIQVZFX0xPTkdfTE9ORwogICAgIGNhc2UgJ3EnOgotICAgICAgICBpbnRzaXplID0gc2l6ZW9mKFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGludHNpemUgPSBzaXplb2YobG9uZyBsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnUSc6Ci0gICAgICAgIGludHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsKKyAgICAgICAgaW50c2l6ZSA9IHNpemVvZihsb25nIGxvbmcpOwogICAgICAgICBpc19zaWduZWQgPSAwOwogICAgICAgICBicmVhazsKLSNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBVTktOT1dOX0ZPUk1BVDsKICAgICB9CkBAIC0xOTU0LDcgKzE5MDgsNyBAQAogewogICAgIFB5T2JqZWN0ICpjb252ZXJ0ZWRfaXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CisgICAgY29uc3Qgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYXJyYXl0eXBlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMjA5Miw3ICsyMDQ2LDcgQEAKICAgICAgICAgUHlfc3NpemVfdCBpdGVtY291bnQgPSBQeV9TSVpFKGl0ZW1zKSAvIG1mX2Rlc2NyLnNpemU7CiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1lbXN0ciA9CiAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGl0ZW1zKTsKLSAgICAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgICAgICBjb25zdCBzdHJ1Y3QgYXJyYXlkZXNjciAqZGVzY3I7CiAKICAgICAgICAgLyogSWYgcG9zc2libGUsIHRyeSB0byBwYWNrIGFycmF5J3MgaXRlbXMgdXNpbmcgYSBkYXRhIHR5cGUKICAgICAgICAgICogdGhhdCBmaXRzIGJldHRlci4gVGhpcyBtYXkgcmVzdWx0IGluIGFuIGFycmF5IHdpdGggbmFycm93ZXIKQEAgLTI1NjIsNyArMjUxNiw3IEBACiAgICAgdmlldy0+Zm9ybWF0ID0gTlVMTDsKICAgICB2aWV3LT5pbnRlcm5hbCA9IE5VTEw7CiAgICAgaWYgKChmbGFncyAmIFB5QlVGX0ZPUk1BVCkgPT0gUHlCVUZfRk9STUFUKSB7Ci0gICAgICAgIHZpZXctPmZvcm1hdCA9IHNlbGYtPm9iX2Rlc2NyLT5mb3JtYXRzOworICAgICAgICB2aWV3LT5mb3JtYXQgPSAoY2hhciAqKXNlbGYtPm9iX2Rlc2NyLT5mb3JtYXRzOwogI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICBpZiAoc2VsZi0+b2JfZGVzY3ItPnR5cGVjb2RlID09ICd1JykgewogICAgICAgICAgICAgdmlldy0+Zm9ybWF0ID0gInciOwpAQCAtMjYwMyw3ICsyNTU3LDcgQEAKIHsKICAgICBpbnQgYzsKICAgICBQeU9iamVjdCAqaW5pdGlhbCA9IE5VTEwsICppdCA9IE5VTEw7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmICh0eXBlID09ICZBcnJheXR5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJhcnJheS5hcnJheSgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjczMiwxMSArMjY4Niw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgImJhZCB0eXBlY29kZSAobXVzdCBiZSBiLCBCLCB1LCBoLCBILCBpLCBJLCBsLCBMLCBxLCBRLCBmIG9yIGQpIik7Ci0jZWxzZQotICAgICAgICAiYmFkIHR5cGVjb2RlIChtdXN0IGJlIGIsIEIsIHUsIGgsIEgsIGksIEksIGwsIEwsIGYgb3IgZCkiKTsKLSNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yODgzLDkgKzI4MzMsMjAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhcnJheWl0ZXJfbmV4dChhcnJheWl0ZXJvYmplY3QgKml0KQogeworICAgIGFycmF5b2JqZWN0ICphbzsKKworICAgIGFzc2VydChpdCAhPSBOVUxMKTsKICAgICBhc3NlcnQoUHlBcnJheUl0ZXJfQ2hlY2soaXQpKTsKLSAgICBpZiAoaXQtPmluZGV4IDwgUHlfU0laRShpdC0+YW8pKQotICAgICAgICByZXR1cm4gKCppdC0+Z2V0aXRlbSkoaXQtPmFvLCBpdC0+aW5kZXgrKyk7CisgICAgYW8gPSBpdC0+YW87CisgICAgaWYgKGFvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFzc2VydChhcnJheV9DaGVjayhhbykpOworICAgIGlmIChpdC0+aW5kZXggPCBQeV9TSVpFKGFvKSkgeworICAgICAgICByZXR1cm4gKCppdC0+Z2V0aXRlbSkoYW8sIGl0LT5pbmRleCsrKTsKKyAgICB9CisgICAgaXQtPmFvID0gTlVMTDsKKyAgICBQeV9ERUNSRUYoYW8pOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yOTE0LDggKzI4NzUsMTEgQEAKIGFycmF5X2FycmF5aXRlcmF0b3JfX19yZWR1Y2VfX19pbXBsKGFycmF5aXRlcm9iamVjdCAqc2VsZikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ODk4YTUyZThlNjZlMDE2IGlucHV0PWEwNjJlYTFlOTk1MTQxN2FdKi8KIHsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFvLCBzZWxmLT5pbmRleCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpOworICAgIGlmIChzZWxmLT5hbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKCgpKSIsIGZ1bmMpOworICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBmdW5jLCBzZWxmLT5hbywgc2VsZi0+aW5kZXgpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC0yOTk1LDcgKzI5NTksNyBAQAogICAgIGNoYXIgYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChkZXNjcmlwdG9ycyldLCAqcDsKICAgICBQeU9iamVjdCAqdHlwZWNvZGVzOwogICAgIFB5X3NzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOworICAgIGNvbnN0IHN0cnVjdCBhcnJheWRlc2NyICpkZXNjcjsKIAogICAgIGlmIChQeVR5cGVfUmVhZHkoJkFycmF5dHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2F1ZGlvb3AuYyBiL01vZHVsZXMvYXVkaW9vcC5jCmluZGV4IDFlMTMxZDIuLmRjZDc3ODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXVkaW9vcC5jCisrKyBiL01vZHVsZXMvYXVkaW9vcC5jCkBAIC01LDggKzUsNiBAQAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKLXR5cGVkZWYgc2hvcnQgUHlJbnQxNjsKLQogI2lmIGRlZmluZWQoX19DSEFSX1VOU0lHTkVEX18pCiAjaWYgZGVmaW5lZChzaWduZWQpCiAvKiBUaGlzIG1vZHVsZSBjdXJyZW50bHkgZG9lcyBub3Qgd29yayBvbiBzeXN0ZW1zIHdoZXJlIG9ubHkgdW5zaWduZWQKQEAgLTUxLDEzICs0OSwxNSBAQAogI2RlZmluZSBTRUdfU0hJRlQgICAgICAgKDQpICAgICAgICAgICAgIC8qIExlZnQgc2hpZnQgZm9yIHNlZ21lbnQgbnVtYmVyLiAqLwogI2RlZmluZSBTRUdfTUFTSyAgICAgICAgKDB4NzApICAgICAgICAgIC8qIFNlZ21lbnQgZmllbGQgbWFzay4gKi8KIAotc3RhdGljIFB5SW50MTYgc2VnX2FlbmRbOF0gPSB7MHgxRiwgMHgzRiwgMHg3RiwgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MUZGLCAweDNGRiwgMHg3RkYsIDB4RkZGfTsKLXN0YXRpYyBQeUludDE2IHNlZ191ZW5kWzhdID0gezB4M0YsIDB4N0YsIDB4RkYsIDB4MUZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzRkYsIDB4N0ZGLCAweEZGRiwgMHgxRkZGfTsKK3N0YXRpYyBjb25zdCBpbnQxNl90IHNlZ19hZW5kWzhdID0geworICAgIDB4MUYsIDB4M0YsIDB4N0YsIDB4RkYsIDB4MUZGLCAweDNGRiwgMHg3RkYsIDB4RkZGCit9Oworc3RhdGljIGNvbnN0IGludDE2X3Qgc2VnX3VlbmRbOF0gPSB7CisgICAgMHgzRiwgMHg3RiwgMHhGRiwgMHgxRkYsIDB4M0ZGLCAweDdGRiwgMHhGRkYsIDB4MUZGRgorfTsKIAotc3RhdGljIFB5SW50MTYKLXNlYXJjaChQeUludDE2IHZhbCwgUHlJbnQxNiAqdGFibGUsIGludCBzaXplKQorc3RhdGljIGludDE2X3QKK3NlYXJjaChpbnQxNl90IHZhbCwgY29uc3QgaW50MTZfdCAqdGFibGUsIGludCBzaXplKQogewogICAgIGludCBpOwogCkBAIC03MCw3ICs3MCw3IEBACiAjZGVmaW5lIHN0X3VsYXcybGluZWFyMTYodWMpIChfc3RfdWxhdzJsaW5lYXIxNlt1Y10pCiAjZGVmaW5lIHN0X2FsYXcybGluZWFyMTYodWMpIChfc3RfYWxhdzJsaW5lYXIxNlt1Y10pCiAKLXN0YXRpYyBQeUludDE2IF9zdF91bGF3MmxpbmVhcjE2WzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgaW50MTZfdCBfc3RfdWxhdzJsaW5lYXIxNlsyNTZdID0gewogICAgIC0zMjEyNCwgIC0zMTEwMCwgIC0zMDA3NiwgIC0yOTA1MiwgIC0yODAyOCwgIC0yNzAwNCwgIC0yNTk4MCwKICAgICAtMjQ5NTYsICAtMjM5MzIsICAtMjI5MDgsICAtMjE4ODQsICAtMjA4NjAsICAtMTk4MzYsICAtMTg4MTIsCiAgICAgLTE3Nzg4LCAgLTE2NzY0LCAgLTE1OTk2LCAgLTE1NDg0LCAgLTE0OTcyLCAgLTE0NDYwLCAgLTEzOTQ4LApAQCAtMTQzLDEwICsxNDMsMTAgQEAKICAqIEpvaG4gV2lsZXkgJiBTb25zLCBwcHMgOTgtMTExIGFuZCA0NzItNDc2LgogICovCiBzdGF0aWMgdW5zaWduZWQgY2hhcgotc3RfMTRsaW5lYXIydWxhdyhQeUludDE2IHBjbV92YWwpICAgICAgIC8qIDIncyBjb21wbGVtZW50ICgxNC1iaXQgcmFuZ2UpICovCitzdF8xNGxpbmVhcjJ1bGF3KGludDE2X3QgcGNtX3ZhbCkgICAgICAgLyogMidzIGNvbXBsZW1lbnQgKDE0LWJpdCByYW5nZSkgKi8KIHsKLSAgICBQeUludDE2ICAgICAgICAgbWFzazsKLSAgICBQeUludDE2ICAgICAgICAgc2VnOworICAgIGludDE2X3QgICAgICAgICBtYXNrOworICAgIGludDE2X3QgICAgICAgICBzZWc7CiAgICAgdW5zaWduZWQgY2hhciAgIHV2YWw7CiAKICAgICAvKiB1LWxhdyBpbnZlcnRzIGFsbCBiaXRzICovCkBAIC0xNzYsNyArMTc2LDcgQEAKIAogfQogCi1zdGF0aWMgUHlJbnQxNiBfc3RfYWxhdzJsaW5lYXIxNlsyNTZdID0geworc3RhdGljIGNvbnN0IGludDE2X3QgX3N0X2FsYXcybGluZWFyMTZbMjU2XSA9IHsKICAgICAgLTU1MDQsICAgLTUyNDgsICAgLTYwMTYsICAgLTU3NjAsICAgLTQ0ODAsICAgLTQyMjQsICAgLTQ5OTIsCiAgICAgIC00NzM2LCAgIC03NTUyLCAgIC03Mjk2LCAgIC04MDY0LCAgIC03ODA4LCAgIC02NTI4LCAgIC02MjcyLAogICAgICAtNzA0MCwgICAtNjc4NCwgICAtMjc1MiwgICAtMjYyNCwgICAtMzAwOCwgICAtMjg4MCwgICAtMjI0MCwKQEAgLTIzNywxMCArMjM3LDEwIEBACiAgKiBKb2huIFdpbGV5ICYgU29ucywgcHBzIDk4LTExMSBhbmQgNDcyLTQ3Ni4KICAqLwogc3RhdGljIHVuc2lnbmVkIGNoYXIKLXN0X2xpbmVhcjJhbGF3KFB5SW50MTYgcGNtX3ZhbCkgLyogMidzIGNvbXBsZW1lbnQgKDEzLWJpdCByYW5nZSkgKi8KK3N0X2xpbmVhcjJhbGF3KGludDE2X3QgcGNtX3ZhbCkgLyogMidzIGNvbXBsZW1lbnQgKDEzLWJpdCByYW5nZSkgKi8KIHsKLSAgICBQeUludDE2ICAgICAgICAgbWFzazsKLSAgICBzaG9ydCAgICAgICAgICAgc2VnOworICAgIGludDE2X3QgICAgICAgICBtYXNrOworICAgIGludDE2X3QgICAgICAgICBzZWc7CiAgICAgdW5zaWduZWQgY2hhciAgIGF2YWw7CiAKICAgICAvKiBBLWxhdyB1c2luZyBldmVuIGJpdCBpbnZlcnNpb24gKi8KQEAgLTI3MCwxMiArMjcwLDEyIEBACiAvKiBFbmQgb2YgY29kZSB0YWtlbiBmcm9tIHNveCAqLwogCiAvKiBJbnRlbCBBRFBDTSBzdGVwIHZhcmlhdGlvbiB0YWJsZSAqLwotc3RhdGljIGludCBpbmRleFRhYmxlWzE2XSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgaW5kZXhUYWJsZVsxNl0gPSB7CiAgICAgLTEsIC0xLCAtMSwgLTEsIDIsIDQsIDYsIDgsCiAgICAgLTEsIC0xLCAtMSwgLTEsIDIsIDQsIDYsIDgsCiB9OwogCi1zdGF0aWMgaW50IHN0ZXBzaXplVGFibGVbODldID0geworc3RhdGljIGNvbnN0IGludCBzdGVwc2l6ZVRhYmxlWzg5XSA9IHsKICAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE2LCAxNywKICAgICAxOSwgMjEsIDIzLCAyNSwgMjgsIDMxLCAzNCwgMzcsIDQxLCA0NSwKICAgICA1MCwgNTUsIDYwLCA2NiwgNzMsIDgwLCA4OCwgOTcsIDEwNywgMTE4LApAQCAtMjk0LDggKzI5NCw4IEBACiAKIAogI2RlZmluZSBHRVRJTlQ4KGNwLCBpKSAgICAgICAgICBHRVRJTlRYKHNpZ25lZCBjaGFyLCAoY3ApLCAoaSkpCi0jZGVmaW5lIEdFVElOVDE2KGNwLCBpKSAgICAgICAgIEdFVElOVFgoc2hvcnQsIChjcCksIChpKSkKLSNkZWZpbmUgR0VUSU5UMzIoY3AsIGkpICAgICAgICAgR0VUSU5UWChQWV9JTlQzMl9ULCAoY3ApLCAoaSkpCisjZGVmaW5lIEdFVElOVDE2KGNwLCBpKSAgICAgICAgIEdFVElOVFgoaW50MTZfdCwgKGNwKSwgKGkpKQorI2RlZmluZSBHRVRJTlQzMihjcCwgaSkgICAgICAgICBHRVRJTlRYKGludDMyX3QsIChjcCksIChpKSkKIAogI2lmIFdPUkRTX0JJR0VORElBTgogI2RlZmluZSBHRVRJTlQyNChjcCwgaSkgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0zMTEsOCArMzExLDggQEAKIAogCiAjZGVmaW5lIFNFVElOVDgoY3AsIGksIHZhbCkgICAgIFNFVElOVFgoc2lnbmVkIGNoYXIsIChjcCksIChpKSwgKHZhbCkpCi0jZGVmaW5lIFNFVElOVDE2KGNwLCBpLCB2YWwpICAgIFNFVElOVFgoc2hvcnQsIChjcCksIChpKSwgKHZhbCkpCi0jZGVmaW5lIFNFVElOVDMyKGNwLCBpLCB2YWwpICAgIFNFVElOVFgoUFlfSU5UMzJfVCwgKGNwKSwgKGkpLCAodmFsKSkKKyNkZWZpbmUgU0VUSU5UMTYoY3AsIGksIHZhbCkgICAgU0VUSU5UWChpbnQxNl90LCAoY3ApLCAoaSksICh2YWwpKQorI2RlZmluZSBTRVRJTlQzMihjcCwgaSwgdmFsKSAgICBTRVRJTlRYKGludDMyX3QsIChjcCksIChpKSwgKHZhbCkpCiAKICNpZiBXT1JEU19CSUdFTkRJQU4KICNkZWZpbmUgU0VUSU5UMjQoY3AsIGksIHZhbCkgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC00NDQsNyArNDQ0LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChpID0gMDsgaSA8IGZyYWdtZW50LT5sZW47IGkgKz0gd2lkdGgpIHsKICAgICAgICAgaW50IHZhbCA9IEdFVFJBV1NBTVBMRSh3aWR0aCwgZnJhZ21lbnQtPmJ1ZiwgaSk7Ci0gICAgICAgIGlmICh2YWwgPCAwKSBhYnN2YWwgPSAoLXZhbCk7CisgICAgICAgIC8qIENhc3QgdG8gdW5zaWduZWQgYmVmb3JlIG5lZ2F0aW5nLiBVbnNpZ25lZCBvdmVyZmxvdyBpcyB3ZWxsLQorICAgICAgICBkZWZpbmVkLCBidXQgc2lnbmVkIG92ZXJmbG93IGlzIG5vdC4gKi8KKyAgICAgICAgaWYgKHZhbCA8IDApIGFic3ZhbCA9ICh1bnNpZ25lZCBpbnQpLShpbnQ2NF90KXZhbDsKICAgICAgICAgZWxzZSBhYnN2YWwgPSB2YWw7CiAgICAgICAgIGlmIChhYnN2YWwgPiBtYXgpIG1heCA9IGFic3ZhbDsKICAgICB9CkBAIC01NDAsNyArNTQyLDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcocmVzKTsKIH0KIAotc3RhdGljIGRvdWJsZSBfc3VtMihjb25zdCBzaG9ydCAqYSwgY29uc3Qgc2hvcnQgKmIsIFB5X3NzaXplX3QgbGVuKQorc3RhdGljIGRvdWJsZSBfc3VtMihjb25zdCBpbnQxNl90ICphLCBjb25zdCBpbnQxNl90ICpiLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZG91YmxlIHN1bSA9IDAuMDsKQEAgLTU5OCw3ICs2MDAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTc1MjMwNmQ4M2NiYmFkYSBpbnB1dD02MmMzMDU2MDVlMTgzYzlhXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKKyAgICBjb25zdCBpbnQxNl90ICpjcDEsICpjcDI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogICAgIFB5X3NzaXplX3QgaiwgYmVzdF9qOwogICAgIGRvdWJsZSBhal9tMSwgYWpfbG0xOwpAQCAtNjA4LDkgKzYxMCw5IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsICJTdHJpbmdzIHNob3VsZCBiZSBldmVuLXNpemVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKICAgICBsZW4xID0gZnJhZ21lbnQtPmxlbiA+PiAxOwotICAgIGNwMiA9IChjb25zdCBzaG9ydCAqKXJlZmVyZW5jZS0+YnVmOworICAgIGNwMiA9IChjb25zdCBpbnQxNl90ICopcmVmZXJlbmNlLT5idWY7CiAgICAgbGVuMiA9IHJlZmVyZW5jZS0+bGVuID4+IDE7CiAKICAgICBpZiAobGVuMSA8IGxlbjIpIHsKQEAgLTY2Nyw3ICs2NjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpyZWZlcmVuY2UpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTRlYTk1NjUyYzFhZmNmOCBpbnB1dD04MTY2ODAzMDFkMDEyYjIxXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMSwgKmNwMjsKKyAgICBjb25zdCBpbnQxNl90ICpjcDEsICpjcDI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgZG91YmxlIHN1bV9yaV8yLCBzdW1fYWlqX3JpLCByZXN1bHQ7CiAKQEAgLTY3OSw4ICs2ODEsOCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoQXVkaW9vcEVycm9yLCAiU2FtcGxlcyBzaG91bGQgYmUgc2FtZSBzaXplIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOwotICAgIGNwMiA9IChjb25zdCBzaG9ydCAqKXJlZmVyZW5jZS0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKKyAgICBjcDIgPSAoY29uc3QgaW50MTZfdCAqKXJlZmVyZW5jZS0+YnVmOwogICAgIGxlbiA9IGZyYWdtZW50LT5sZW4gPj4gMTsKICAgICBzdW1fcmlfMiA9IF9zdW0yKGNwMiwgY3AyLCBsZW4pOwogICAgIHN1bV9haWpfcmkgPSBfc3VtMihjcDEsIGNwMiwgbGVuKTsKQEAgLTcwOSw3ICs3MTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjAwODEyODIzMzUyMzA0MCBpbnB1dD0yZjMwNDgwMWVkNDIzODNjXSovCiB7Ci0gICAgY29uc3Qgc2hvcnQgKmNwMTsKKyAgICBjb25zdCBpbnQxNl90ICpjcDE7CiAgICAgUHlfc3NpemVfdCBsZW4xOwogICAgIFB5X3NzaXplX3QgaiwgYmVzdF9qOwogICAgIGRvdWJsZSBhal9tMSwgYWpfbG0xOwpAQCAtNzE5LDcgKzcyMSw3IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsICJTdHJpbmdzIHNob3VsZCBiZSBldmVuLXNpemVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBjcDEgPSAoY29uc3Qgc2hvcnQgKilmcmFnbWVudC0+YnVmOworICAgIGNwMSA9IChjb25zdCBpbnQxNl90ICopZnJhZ21lbnQtPmJ1ZjsKICAgICBsZW4xID0gZnJhZ21lbnQtPmxlbiA+PiAxOwogCiAgICAgaWYgKGxlbmd0aCA8IDAgfHwgbGVuMSA8IGxlbmd0aCkgewpAQCAtMTEyMCwxMiArMTEyMiwxMiBAQAogICAgICAgICBpZiAod2lkdGggPT0gMSkKICAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodW5zaWduZWQgY2hhciwgZnJhZ21lbnQtPmJ1ZiwgaSk7CiAgICAgICAgIGVsc2UgaWYgKHdpZHRoID09IDIpCi0gICAgICAgICAgICB2YWwgPSBHRVRJTlRYKHVuc2lnbmVkIHNob3J0LCBmcmFnbWVudC0+YnVmLCBpKTsKKyAgICAgICAgICAgIHZhbCA9IEdFVElOVFgodWludDE2X3QsIGZyYWdtZW50LT5idWYsIGkpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAzKQogICAgICAgICAgICAgdmFsID0gKCh1bnNpZ25lZCBpbnQpR0VUSU5UMjQoZnJhZ21lbnQtPmJ1ZiwgaSkpICYgMHhmZmZmZmZ1OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGFzc2VydCh3aWR0aCA9PSA0KTsKLSAgICAgICAgICAgIHZhbCA9IEdFVElOVFgoUFlfVUlOVDMyX1QsIGZyYWdtZW50LT5idWYsIGkpOworICAgICAgICAgICAgdmFsID0gR0VUSU5UWCh1aW50MzJfdCwgZnJhZ21lbnQtPmJ1ZiwgaSk7CiAgICAgICAgIH0KIAogICAgICAgICB2YWwgKz0gKHVuc2lnbmVkIGludCliaWFzOwpAQCAtMTEzNSwxMiArMTEzNywxMiBAQAogICAgICAgICBpZiAod2lkdGggPT0gMSkKICAgICAgICAgICAgIFNFVElOVFgodW5zaWduZWQgY2hhciwgbmNwLCBpLCB2YWwpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAyKQotICAgICAgICAgICAgU0VUSU5UWCh1bnNpZ25lZCBzaG9ydCwgbmNwLCBpLCB2YWwpOworICAgICAgICAgICAgU0VUSU5UWCh1aW50MTZfdCwgbmNwLCBpLCB2YWwpOwogICAgICAgICBlbHNlIGlmICh3aWR0aCA9PSAzKQogICAgICAgICAgICAgU0VUSU5UMjQobmNwLCBpLCAoaW50KXZhbCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgYXNzZXJ0KHdpZHRoID09IDQpOwotICAgICAgICAgICAgU0VUSU5UWChQWV9VSU5UMzJfVCwgbmNwLCBpLCB2YWwpOworICAgICAgICAgICAgU0VUSU5UWCh1aW50MzJfdCwgbmNwLCBpLCB2YWwpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBydjsKQEAgLTEzMzIsNyArMTMzNCw3IEBACiAgICAgd2VpZ2h0QSAvPSBkOwogICAgIHdlaWdodEIgLz0gZDsKIAotICAgIGlmICgoc2l6ZV90KW5jaGFubmVscyA+IFBZX1NJWkVfTUFYL3NpemVvZihpbnQpKSB7CisgICAgaWYgKChzaXplX3QpbmNoYW5uZWxzID4gU0laRV9NQVgvc2l6ZW9mKGludCkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IGZvciBvdXRwdXQgYnVmZmVyIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iaW5hc2NpaS5jIGIvTW9kdWxlcy9iaW5hc2NpaS5jCmluZGV4IDFhNDBiNDEuLjliOWNkN2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYmluYXNjaWkuYworKysgYi9Nb2R1bGVzL2JpbmFzY2lpLmMKQEAgLTc0LDcgKzc0LDcgQEAKICNkZWZpbmUgU0tJUCAweDdFCiAjZGVmaW5lIEZBSUwgMHg3RAogCi1zdGF0aWMgdW5zaWduZWQgY2hhciB0YWJsZV9hMmJfaHF4WzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB0YWJsZV9hMmJfaHF4WzI1Nl0gPSB7CiAvKiAgICAgICBeQCAgICBeQSAgICBeQiAgICBeQyAgICBeRCAgICBeRSAgICBeRiAgICBeRyAgICovCiAvKiAwKi8gIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsCiAvKiAgICAgICBcYiAgICBcdCAgICBcbiAgICBeSyAgICBeTCAgICBcciAgICBeTiAgICBeTyAgICovCkBAIC0xMjUsMTAgKzEyNSwxMCBAQAogICAgIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsIEZBSUwsCiB9OwogCi1zdGF0aWMgdW5zaWduZWQgY2hhciB0YWJsZV9iMmFfaHF4W10gPQorc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2hxeFtdID0KICIhXCIjJCUmJygpKissLTAxMjM0NTY4OUBBQkNERUZHSElKS0xNTlBRUlNUVVZYWVpbYGFiY2RlZmhpamtsbXBxciI7CiAKLXN0YXRpYyBjaGFyIHRhYmxlX2EyYl9iYXNlNjRbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyIHRhYmxlX2EyYl9iYXNlNjRbXSA9IHsKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLDYyLCAtMSwtMSwtMSw2MywKQEAgLTE0NCwxMiArMTQ0LDEyIEBACiAvKiBNYXggYmluYXJ5IGNodW5rIHNpemU7IGxpbWl0ZWQgb25seSBieSBhdmFpbGFibGUgbWVtb3J5ICovCiAjZGVmaW5lIEJBU0U2NF9NQVhCSU4gKChQWV9TU0laRV9UX01BWCAtIDMpIC8gMikKIAotc3RhdGljIHVuc2lnbmVkIGNoYXIgdGFibGVfYjJhX2Jhc2U2NFtdID0KK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHRhYmxlX2IyYV9iYXNlNjRbXSA9CiAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyI7CiAKIAogCi1zdGF0aWMgdW5zaWduZWQgc2hvcnQgY3JjdGFiX2hxeFsyNTZdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGNyY3RhYl9ocXhbMjU2XSA9IHsKICAgICAweDAwMDAsIDB4MTAyMSwgMHgyMDQyLCAweDMwNjMsIDB4NDA4NCwgMHg1MGE1LCAweDYwYzYsIDB4NzBlNywKICAgICAweDgxMDgsIDB4OTEyOSwgMHhhMTRhLCAweGIxNmIsIDB4YzE4YywgMHhkMWFkLCAweGUxY2UsIDB4ZjFlZiwKICAgICAweDEyMzEsIDB4MDIxMCwgMHgzMjczLCAweDIyNTIsIDB4NTJiNSwgMHg0Mjk0LCAweDcyZjcsIDB4NjJkNiwKQEAgLTI1Niw3ICsyNTYsOCBAQAogYmluYXNjaWlfYTJiX3V1X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwMjdmOGUwYjA1OTg3NDIgaW5wdXQ9N2NhZmVhZjczZGY2M2QxY10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7CkBAIC0zNDIsMTMgKzM0MywxNSBAQAogYmluYXNjaWlfYjJhX3V1X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTAwNzA2NzBlNTJlNGFhNmIgaW5wdXQ9MDBmZGY0NThjZThiNDY1Yl0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwotICAgIFB5X3NzaXplX3QgYmluX2xlbjsKKyAgICBQeV9zc2l6ZV90IGJpbl9sZW4sIG91dF9sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKICAgICBiaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBiaW5fbGVuID0gZGF0YS0+bGVuOwogICAgIGlmICggYmluX2xlbiA+IDQ1ICkgewpAQCAtMzU4LDkgKzM2MSwxMCBAQAogICAgIH0KIAogICAgIC8qIFdlJ3JlIGxhenkgYW5kIGFsbG9jYXRlIHRvIG11Y2ggKGZpeGVkIHVwIGxhdGVyKSAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMiArIChiaW5fbGVuKzIpLzMqNCkpID09IE5VTEwgKQorICAgIG91dF9sZW4gPSAyICsgKGJpbl9sZW4gKyAyKSAvIDMgKiA0OworICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBvdXRfbGVuKTsKKyAgICBpZiAoYXNjaWlfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc2NpaV9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICAvKiBTdG9yZSB0aGUgbGVuZ3RoICovCiAgICAgKmFzY2lpX2RhdGErKyA9ICcgJyArIChiaW5fbGVuICYgMDc3KTsKQEAgLTM4MiwxNyArMzg2LDEyIEBACiAgICAgfQogICAgICphc2NpaV9kYXRhKysgPSAnXG4nOyAgICAgICAvKiBBcHBlbmQgYSBjb3VydGVzeSBuZXdsaW5lICovCiAKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGFzY2lpX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBhc2NpaV9kYXRhKTsKIH0KIAogCiBzdGF0aWMgaW50Ci1iaW5hc2NpaV9maW5kX3ZhbGlkKHVuc2lnbmVkIGNoYXIgKnMsIFB5X3NzaXplX3Qgc2xlbiwgaW50IG51bSkKK2JpbmFzY2lpX2ZpbmRfdmFsaWQoY29uc3QgdW5zaWduZWQgY2hhciAqcywgUHlfc3NpemVfdCBzbGVuLCBpbnQgbnVtKQogewogICAgIC8qIEZpbmRzICYgcmV0dXJucyB0aGUgKG51bSsxKXRoCiAgICAgKiogdmFsaWQgY2hhcmFjdGVyIGZvciBiYXNlNjQsIG9yIC0xIGlmIG5vbmUuCkBAIC00MjksMTMgKzQyOCwxNCBAQAogYmluYXNjaWlfYTJiX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wNjI4MjIzZjE5ZmQzZjliIGlucHV0PTU4NzJhY2Y2ZTFjYWMyNDNdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqYmluX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBpbnQgbGVmdGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGNoYXIgdGhpc19jaDsKICAgICB1bnNpZ25lZCBpbnQgbGVmdGNoYXIgPSAwOwotICAgIFB5T2JqZWN0ICpydjsKICAgICBQeV9zc2l6ZV90IGFzY2lpX2xlbiwgYmluX2xlbjsKICAgICBpbnQgcXVhZF9wb3MgPSAwOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzY2lpX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgYXNjaWlfbGVuID0gZGF0YS0+bGVuOwpAQCAtNDQ3LDExICs0NDcsMTIgQEAKIAogICAgIGJpbl9sZW4gPSAoKGFzY2lpX2xlbiszKS80KSozOyAvKiBVcHBlciBib3VuZCwgY29ycmVjdGVkIGxhdGVyICovCiAKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCiAgICAgLyogQWxsb2NhdGUgdGhlIGJ1ZmZlciAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYmluX2xlbikpID09IE5VTEwgKQorICAgIGJpbl9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgYmluX2xlbik7CisgICAgaWYgKGJpbl9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJpbl9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7Ci0gICAgYmluX2xlbiA9IDA7CiAKICAgICBmb3IoIDsgYXNjaWlfbGVuID4gMDsgYXNjaWlfbGVuLS0sIGFzY2lpX2RhdGErKykgewogICAgICAgICB0aGlzX2NoID0gKmFzY2lpX2RhdGE7CkBAIC00OTYsMzEgKzQ5NywxNyBAQAogICAgICAgICBpZiAoIGxlZnRiaXRzID49IDggKSB7CiAgICAgICAgICAgICBsZWZ0Yml0cyAtPSA4OwogICAgICAgICAgICAgKmJpbl9kYXRhKysgPSAobGVmdGNoYXIgPj4gbGVmdGJpdHMpICYgMHhmZjsKLSAgICAgICAgICAgIGJpbl9sZW4rKzsKICAgICAgICAgICAgIGxlZnRjaGFyICY9ICgoMSA8PCBsZWZ0Yml0cykgLSAxKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChsZWZ0Yml0cyAhPSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkluY29ycmVjdCBwYWRkaW5nIik7Ci0gICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIC8qIEFuZCBzZXQgc3RyaW5nIHNpemUgY29ycmVjdGx5LiBJZiB0aGUgcmVzdWx0IHN0cmluZyBpcyBlbXB0eQotICAgICoqIChiZWNhdXNlIHRoZSBpbnB1dCB3YXMgYWxsIGludmFsaWQpIHJldHVybiB0aGUgc2hhcmVkIGVtcHR5Ci0gICAgKiogc3RyaW5nIGluc3RlYWQ7IF9QeUJ5dGVzX1Jlc2l6ZSgpIHdvbid0IGRvIHRoaXMgZm9yIHVzLgotICAgICovCi0gICAgaWYgKGJpbl9sZW4gPiAwKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LCBiaW5fbGVuKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgcnYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYmluX2RhdGEpOwogfQogCiAKQEAgLTUyOCwyNCArNTE1LDI3IEBACiBiaW5hc2NpaS5iMmFfYmFzZTY0CiAKICAgICBkYXRhOiBQeV9idWZmZXIKLSAgICAvCisgICAgKgorICAgIG5ld2xpbmU6IGludChjX2RlZmF1bHQ9IjEiKSA9IFRydWUKIAogQmFzZTY0LWNvZGUgbGluZSBvZiBkYXRhLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDk2NjYzMTcwNzc4ZGMzIGlucHV0PTE0ZWM0ZTQ3MzcxMTc0YTldKi8KK2JpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBuZXdsaW5lKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRhZDYyYzhlODQ4NWQzYjMgaW5wdXQ9N2IyZWE2ZmEzOGQ4OTI0Y10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OwotICAgIFB5X3NzaXplX3QgYmluX2xlbjsKKyAgICBQeV9zc2l6ZV90IGJpbl9sZW4sIG91dF9sZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYmluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgYmluX2xlbiA9IGRhdGEtPmxlbjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOwogCiAgICAgYXNzZXJ0KGJpbl9sZW4gPj0gMCk7CiAKQEAgLTU1NSwxMSArNTQ1LDE0IEBACiAgICAgfQogCiAgICAgLyogV2UncmUgbGF6eSBhbmQgYWxsb2NhdGUgdG9vIG11Y2ggKGZpeGVkIHVwIGxhdGVyKS4KLSAgICAgICAiKzMiIGxlYXZlcyByb29tIGZvciB1cCB0byB0d28gcGFkIGNoYXJhY3RlcnMgYW5kIGEgdHJhaWxpbmcKLSAgICAgICBuZXdsaW5lLiAgTm90ZSB0aGF0ICdiJyBnZXRzIGVuY29kZWQgYXMgJ1lnPT1cbicgKDEgaW4sIDUgb3V0KS4gKi8KLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJpbl9sZW4qMiArIDMpKSA9PSBOVUxMICkKKyAgICAgICAiKzIiIGxlYXZlcyByb29tIGZvciB1cCB0byB0d28gcGFkIGNoYXJhY3RlcnMuCisgICAgICAgTm90ZSB0aGF0ICdiJyBnZXRzIGVuY29kZWQgYXMgJ1lnPT1cbicgKDEgaW4sIDUgb3V0KS4gKi8KKyAgICBvdXRfbGVuID0gYmluX2xlbioyICsgMjsKKyAgICBpZiAobmV3bGluZSkKKyAgICAgICAgb3V0X2xlbisrOworICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBvdXRfbGVuKTsKKyAgICBpZiAoYXNjaWlfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc2NpaV9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICBmb3IoIDsgYmluX2xlbiA+IDAgOyBiaW5fbGVuLS0sIGJpbl9kYXRhKysgKSB7CiAgICAgICAgIC8qIFNoaWZ0IHRoZSBkYXRhIGludG8gb3VyIGJ1ZmZlciAqLwpAQCAtNTgxLDE0ICs1NzQsMTAgQEAKICAgICAgICAgKmFzY2lpX2RhdGErKyA9IHRhYmxlX2IyYV9iYXNlNjRbKGxlZnRjaGFyJjB4ZikgPDwgMl07CiAgICAgICAgICphc2NpaV9kYXRhKysgPSBCQVNFNjRfUEFEOwogICAgIH0KLSAgICAqYXNjaWlfZGF0YSsrID0gJ1xuJzsgICAgICAgLyogQXBwZW5kIGEgY291cnRlc3kgbmV3bGluZSAqLworICAgIGlmIChuZXdsaW5lKQorICAgICAgICAqYXNjaWlfZGF0YSsrID0gJ1xuJzsgICAgICAgLyogQXBwZW5kIGEgY291cnRlc3kgbmV3bGluZSAqLwogCi0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcnYsCi0gICAgICAgICAgICAgICAgICAgICAgIChhc2NpaV9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYXNjaWlfZGF0YSk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KQEAgLTYwNCwxNiArNTkzLDE5IEBACiBiaW5hc2NpaV9hMmJfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRkNmQ4YzU0ZDU0ZWExYzEgaW5wdXQ9MGQ5MTRjNjgwZTBlZWQ1NV0qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGEsICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIGludCBsZWZ0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgY2hhciB0aGlzX2NoOwogICAgIHVuc2lnbmVkIGludCBsZWZ0Y2hhciA9IDA7Ci0gICAgUHlPYmplY3QgKnJ2OworICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgaW50IGRvbmUgPSAwOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzY2lpX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQobGVuID49IDApOwogCkBAIC02MjMsOSArNjE1LDkgQEAKICAgICAvKiBBbGxvY2F0ZSBhIHN0cmluZyB0aGF0IGlzIHRvbyBiaWcgKGZpeGVkIGxhdGVyKQogICAgICAgIEFkZCB0d28gdG8gdGhlIGluaXRpYWwgbGVuZ3RoIHRvIHByZXZlbnQgaW50ZXJuaW5nIHdoaWNoCiAgICAgICAgd291bGQgcHJlY2x1ZGUgc3Vic2VxdWVudCByZXNpemluZy4gICovCi0gICAgaWYgKCAocnY9UHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4rMikpID09IE5VTEwgKQorICAgIGJpbl9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuICsgMik7CisgICAgaWYgKGJpbl9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJpbl9kYXRhID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydik7CiAKICAgICBmb3IoIDsgbGVuID4gMCA7IGxlbi0tLCBhc2NpaV9kYXRhKysgKSB7CiAgICAgICAgIC8qIEdldCB0aGUgYnl0ZSBhbmQgbG9vayBpdCB1cCAqLwpAQCAtNjM0LDcgKzYyNiw3IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKCB0aGlzX2NoID09IEZBSUwgKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbGxlZ2FsIGNoYXIiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihydik7CisgICAgICAgICAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCB0aGlzX2NoID09IERPTkUgKSB7CkBAIC02NTYsMjEgKzY0OCwxNCBAQAogICAgIGlmICggbGVmdGJpdHMgJiYgIWRvbmUgKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhJbmNvbXBsZXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIlN0cmluZyBoYXMgaW5jb21wbGV0ZSBudW1iZXIgb2YgYnl0ZXMiKTsKLSAgICAgICAgUHlfREVDUkVGKHJ2KTsKKyAgICAgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJ2LAotICAgICAgICAgICAgICAgICAgICAgICAoYmluX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICBpZiAocnYpIHsKLSAgICAgICAgUHlPYmplY3QgKnJydiA9IFB5X0J1aWxkVmFsdWUoIk9pIiwgcnYsIGRvbmUpOwotICAgICAgICBQeV9ERUNSRUYocnYpOwotICAgICAgICByZXR1cm4gcnJ2OwotICAgIH0KIAotICAgIHJldHVybiBOVUxMOworICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBiaW5fZGF0YSk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmkiLCByZXMsIGRvbmUpOwogfQogCiAKQEAgLTY4NywxMSArNjcyLDEzIEBACiBiaW5hc2NpaV9ybGVjb2RlX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zOTNkNzkzMzhmNWY1NjI5IGlucHV0PWUxZjE3MTI0NDdhODJiMDldKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICppbl9kYXRhLCAqb3V0X2RhdGE7Ci0gICAgUHlPYmplY3QgKnJ2OworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluX2RhdGE7CisgICAgdW5zaWduZWQgY2hhciAqb3V0X2RhdGE7CiAgICAgdW5zaWduZWQgY2hhciBjaDsKICAgICBQeV9zc2l6ZV90IGluLCBpbmVuZCwgbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAorICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAgICAgaW5fZGF0YSA9IGRhdGEtPmJ1ZjsKICAgICBsZW4gPSBkYXRhLT5sZW47CiAKQEAgLTcwMSw5ICs2ODgsOSBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIC8qIFdvcnN0IGNhc2U6IG91dHB1dCBpcyB0d2ljZSBhcyBiaWcgYXMgaW5wdXQgKGZpeGVkIGxhdGVyKSAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKjIrMikpID09IE5VTEwgKQorICAgIG91dF9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuICogMiArIDIpOworICAgIGlmIChvdXRfZGF0YSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBvdXRfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCBpbj0wOyBpbjxsZW47IGluKyspIHsKICAgICAgICAgY2ggPSBpbl9kYXRhW2luXTsKQEAgLTcyOSwxMiArNzE2LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKG91dF9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBvdXRfZGF0YSk7CiB9CiAKIApAQCAtNzUxLDE1ICs3MzQsMTcgQEAKIGJpbmFzY2lpX2IyYV9ocXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDBhYTVhNzA0YmM5ZjdkZSBpbnB1dD05NTk2ZWJlMDE5ZmUxMmJhXSovCiB7Ci0gICAgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YSwgKmJpbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKmFzY2lpX2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYmluX2RhdGE7CiAgICAgaW50IGxlZnRiaXRzID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIHRoaXNfY2g7CiAgICAgdW5zaWduZWQgaW50IGxlZnRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqcnY7CiAgICAgUHlfc3NpemVfdCBsZW47CisgICAgX1B5Qnl0ZXNXcml0ZXIgd3JpdGVyOwogCiAgICAgYmluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQobGVuID49IDApOwogCkBAIC03NjcsOSArNzUyLDkgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAKICAgICAvKiBBbGxvY2F0ZSBhIGJ1ZmZlciB0aGF0IGlzIGF0IGxlYXN0IGxhcmdlIGVub3VnaCAqLwotICAgIGlmICggKHJ2PVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbGVuKjIrMikpID09IE5VTEwgKQorICAgIGFzY2lpX2RhdGEgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBsZW4gKiAyICsgMik7CisgICAgaWYgKGFzY2lpX2RhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNjaWlfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpOwogCiAgICAgZm9yKCA7IGxlbiA+IDAgOyBsZW4tLSwgYmluX2RhdGErKyApIHsKICAgICAgICAgLyogU2hpZnQgaW50byBvdXIgYnVmZmVyLCBhbmQgb3V0cHV0IGFueSA2Yml0cyByZWFkeSAqLwpAQCAtNzg2LDEyICs3NzEsOCBAQAogICAgICAgICBsZWZ0Y2hhciA8PD0gKDYtbGVmdGJpdHMpOwogICAgICAgICAqYXNjaWlfZGF0YSsrID0gdGFibGVfYjJhX2hxeFtsZWZ0Y2hhciAmIDB4M2ZdOwogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKGFzY2lpX2RhdGEgLQotICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhydikpKSA8IDApIHsKLSAgICAgICAgUHlfQ0xFQVIocnYpOwotICAgIH0KLSAgICByZXR1cm4gcnY7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGFzY2lpX2RhdGEpOwogfQogCiAKQEAgLTgwOCwxMyArNzg5LDE1IEBACiBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MjY2MTk1NjVkZTFjNmMgaW5wdXQ9NTRjZGQ0OWZjMDE0NDAyY10qLwogewotICAgIHVuc2lnbmVkIGNoYXIgKmluX2RhdGEsICpvdXRfZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbl9kYXRhOworICAgIHVuc2lnbmVkIGNoYXIgKm91dF9kYXRhOwogICAgIHVuc2lnbmVkIGNoYXIgaW5fYnl0ZSwgaW5fcmVwZWF0OwotICAgIFB5T2JqZWN0ICpydjsKLSAgICBQeV9zc2l6ZV90IGluX2xlbiwgb3V0X2xlbiwgb3V0X2xlbl9sZWZ0OworICAgIFB5X3NzaXplX3QgaW5fbGVuOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGluX2RhdGEgPSBkYXRhLT5idWY7CiAgICAgaW5fbGVuID0gZGF0YS0+bGVuOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKICAgICBhc3NlcnQoaW5fbGVuID49IDApOwogCkBAIC04MjUsNTkgKzgwOCw0OCBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIC8qIEFsbG9jYXRlIGEgYnVmZmVyIG9mIHJlYXNvbmFibGUgc2l6ZS4gUmVzaXplZCB3aGVuIG5lZWRlZCAqLwotICAgIG91dF9sZW4gPSBpbl9sZW4qMjsKLSAgICBpZiAoIChydj1QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dF9sZW4pKSA9PSBOVUxMICkKKyAgICBvdXRfZGF0YSA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGluX2xlbik7CisgICAgaWYgKG91dF9kYXRhID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG91dF9sZW5fbGVmdCA9IG91dF9sZW47Ci0gICAgb3V0X2RhdGEgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJ2KTsKKworICAgIC8qIFVzZSBvdmVyYWxsb2NhdGlvbiAqLworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCiAgICAgLyoKICAgICAqKiBXZSBuZWVkIHR3byBtYWNyb3MgaGVyZSB0byBnZXQvcHV0IGJ5dGVzIGFuZCBoYW5kbGUKICAgICAqKiBlbmQtb2YtYnVmZmVyIGZvciBpbnB1dCBhbmQgb3V0cHV0IHN0cmluZ3MuCiAgICAgKi8KLSNkZWZpbmUgSU5CWVRFKGIpIFwKLSAgICBkbyB7IFwKLSAgICAgICAgICAgICBpZiAoIC0taW5fbGVuIDwgMCApIHsgXAotICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoSW5jb21wbGV0ZSwgIiIpOyBcCi0gICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihydik7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKLSAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICBiID0gKmluX2RhdGErKzsgXAorI2RlZmluZSBJTkJZVEUoYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgaWYgKCAtLWluX2xlbiA8IDAgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoSW5jb21wbGV0ZSwgIiIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgYiA9ICppbl9kYXRhKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBPVVRCWVRFKGIpIFwKLSAgICBkbyB7IFwKLSAgICAgICAgICAgICBpZiAoIC0tb3V0X2xlbl9sZWZ0IDwgMCApIHsgXAotICAgICAgICAgICAgICAgICAgICAgIGlmICggb3V0X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMikgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7IFwKLSAgICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwgMipvdXRfbGVuKSA8IDApIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgUHlfWERFQ1JFRihydik7IHJldHVybiBOVUxMOyB9IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG91dF9sZW47IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfbGVuX2xlZnQgPSBvdXRfbGVuLTE7IFwKLSAgICAgICAgICAgICAgICAgICAgICBvdXRfbGVuID0gb3V0X2xlbiAqIDI7IFwKLSAgICAgICAgICAgICB9IFwKLSAgICAgICAgICAgICAqb3V0X2RhdGErKyA9IGI7IFwKLSAgICB9IHdoaWxlKDApCi0KLSAgICAgICAgLyoKLSAgICAgICAgKiogSGFuZGxlIGZpcnN0IGJ5dGUgc2VwYXJhdGVseSAoc2luY2Ugd2UgaGF2ZSB0byBnZXQgYW5ncnkKLSAgICAgICAgKiogaW4gY2FzZSBvZiBhbiBvcnBoYW5lZCBSTEUgY29kZSkuCi0gICAgICAgICovCi0gICAgICAgIElOQllURShpbl9ieXRlKTsKKyAgICAvKgorICAgICoqIEhhbmRsZSBmaXJzdCBieXRlIHNlcGFyYXRlbHkgKHNpbmNlIHdlIGhhdmUgdG8gZ2V0IGFuZ3J5CisgICAgKiogaW4gY2FzZSBvZiBhbiBvcnBoYW5lZCBSTEUgY29kZSkuCisgICAgKi8KKyAgICBJTkJZVEUoaW5fYnl0ZSk7CiAKICAgICBpZiAoaW5fYnl0ZSA9PSBSVU5DSEFSKSB7CiAgICAgICAgIElOQllURShpbl9yZXBlYXQpOworICAgICAgICAvKiBvbmx5IDEgYnl0ZSB3aWxsIGJlIHdyaXR0ZW4sIGJ1dCAyIGJ5dGVzIHdlcmUgcHJlYWxsb2NhdGVkOgorICAgICAgICAgICBzdWJ0cmFjdCAxIGJ5dGUgdG8gcHJldmVudCBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICB3cml0ZXIubWluX3NpemUtLTsKKwogICAgICAgICBpZiAoaW5fcmVwZWF0ICE9IDApIHsKICAgICAgICAgICAgIC8qIE5vdGUgRXJyb3IsIG5vdCBJbmNvbXBsZXRlICh3aGljaCBpcyBhdCB0aGUgZW5kCiAgICAgICAgICAgICAqKiBvZiB0aGUgc3RyaW5nIG9ubHkpLiBUaGlzIGlzIGEgcHJvZ3JhbW1lciBlcnJvci4KICAgICAgICAgICAgICovCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJPcnBoYW5lZCBSTEUgY29kZSBhdCBzdGFydCIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJ2KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBPVVRCWVRFKFJVTkNIQVIpOworICAgICAgICAqb3V0X2RhdGErKyA9IFJVTkNIQVI7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgT1VUQllURShpbl9ieXRlKTsKKyAgICAgICAgKm91dF9kYXRhKysgPSBpbl9ieXRlOwogICAgIH0KIAogICAgIHdoaWxlKCBpbl9sZW4gPiAwICkgewpAQCAtODg1LDI2ICs4NTcsMzkgQEAKIAogICAgICAgICBpZiAoaW5fYnl0ZSA9PSBSVU5DSEFSKSB7CiAgICAgICAgICAgICBJTkJZVEUoaW5fcmVwZWF0KTsKKyAgICAgICAgICAgIC8qIG9ubHkgMSBieXRlIHdpbGwgYmUgd3JpdHRlbiwgYnV0IDIgYnl0ZXMgd2VyZSBwcmVhbGxvY2F0ZWQ6CisgICAgICAgICAgICAgICBzdWJ0cmFjdCAxIGJ5dGUgdG8gcHJldmVudCBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplLS07CisKICAgICAgICAgICAgIGlmICggaW5fcmVwZWF0ID09IDAgKSB7CiAgICAgICAgICAgICAgICAgLyogSnVzdCBhbiBlc2NhcGVkIFJVTkNIQVIgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICBPVVRCWVRFKFJVTkNIQVIpOworICAgICAgICAgICAgICAgICpvdXRfZGF0YSsrID0gUlVOQ0hBUjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogUGljayB1cCB2YWx1ZSBhbmQgb3V0cHV0IGEgc2VxdWVuY2Ugb2YgaXQgKi8KICAgICAgICAgICAgICAgICBpbl9ieXRlID0gb3V0X2RhdGFbLTFdOworCisgICAgICAgICAgICAgICAgLyogZW5sYXJnZSB0aGUgYnVmZmVyIGlmIG5lZWRlZCAqLworICAgICAgICAgICAgICAgIGlmIChpbl9yZXBlYXQgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIC0xIGJlY2F1c2Ugd2UgYWxyZWFkeSBwcmVhbGxvY2F0ZWQgMSBieXRlICovCisgICAgICAgICAgICAgICAgICAgIG91dF9kYXRhID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCBvdXRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3JlcGVhdCAtIDEpOworICAgICAgICAgICAgICAgICAgICBpZiAob3V0X2RhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgd2hpbGUgKCAtLWluX3JlcGVhdCA+IDAgKQotICAgICAgICAgICAgICAgICAgICBPVVRCWVRFKGluX2J5dGUpOworICAgICAgICAgICAgICAgICAgICAqb3V0X2RhdGErKyA9IGluX2J5dGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiBOb3JtYWwgYnl0ZSAqLwotICAgICAgICAgICAgT1VUQllURShpbl9ieXRlKTsKKyAgICAgICAgICAgICpvdXRfZGF0YSsrID0gaW5fYnl0ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZydiwKLSAgICAgICAgICAgICAgICAgICAgICAgKG91dF9kYXRhIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyICopUHlCeXRlc19BU19TVFJJTkcocnYpKSkgPCAwKSB7Ci0gICAgICAgIFB5X0NMRUFSKHJ2KTsKLSAgICB9Ci0gICAgcmV0dXJuIHJ2OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgb3V0X2RhdGEpOworCitlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOwogfQogCiAKQEAgLTkyMiw3ICs5MDcsNyBAQAogYmluYXNjaWlfY3JjX2hxeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgdW5zaWduZWQgaW50IGNyYykKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZWMyYTc4NTkwZDE5MTcwIGlucHV0PWFkZDhjNTM3MTJjY2NlZGFdKi8KIHsKLSAgICB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpiaW5fZGF0YTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGNyYyAmPSAweGZmZmY7CkBAIC0xMDAwLDcgKzk4NSw3IEBACiAgICAgIHVzaW5nIGJ5dGUtc3dhcCBpbnN0cnVjdGlvbnMuCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIHVuc2lnbmVkIGludCBjcmNfMzJfdGFiWzI1Nl0gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGNyY18zMl90YWJbMjU2XSA9IHsKIDB4MDAwMDAwMDBVLCAweDc3MDczMDk2VSwgMHhlZTBlNjEyY1UsIDB4OTkwOTUxYmFVLCAweDA3NmRjNDE5VSwKIDB4NzA2YWY0OGZVLCAweGU5NjNhNTM1VSwgMHg5ZTY0OTVhM1UsIDB4MGVkYjg4MzJVLCAweDc5ZGNiOGE0VSwKIDB4ZTBkNWU5MWVVLCAweDk3ZDJkOTg4VSwgMHgwOWI2NGMyYlUsIDB4N2ViMTdjYmRVLCAweGU3YjgyZDA3VSwKQEAgLTEwNzMsNyArMTA1OCw3IEBACiAjaWZkZWYgVVNFX1pMSUJfQ1JDMzIKIC8qIFRoaXMgd2FzIHRha2VuIGZyb20gemxpYm1vZHVsZS5jIFB5WmxpYl9jcmMzMiAoYnV0IGlzIFBZX1NTSVpFX1RfQ0xFQU4pICovCiB7Ci0gICAgQnl0ZSAqYnVmOworICAgIGNvbnN0IEJ5dGUgKmJ1ZjsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgc2lnbmVkX3ZhbDsKIApAQCAtMTA4NCw3ICsxMDY5LDcgQEAKIH0KICNlbHNlICAvKiBVU0VfWkxJQl9DUkMzMiAqLwogeyAvKiBCeSBKaW0gQWhsc3Ryb207IEFsbCByaWdodHMgdHJhbnNmZXJyZWQgdG8gQ05SSSAqLwotICAgIHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJpbl9kYXRhOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIHVuc2lnbmVkIGludCByZXN1bHQ7CiAKQEAgLTExNjcsNyArMTE1Miw3IEBACiBiaW5hc2NpaV9hMmJfaGV4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpoZXhzdHIpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGNjMWExMzlhZjBlZWVjYiBpbnB1dD05ZTFlN2YyZjk0ZGIyNGZkXSovCiB7Ci0gICAgY2hhciogYXJnYnVmOworICAgIGNvbnN0IGNoYXIqIGFyZ2J1ZjsKICAgICBQeV9zc2l6ZV90IGFyZ2xlbjsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogICAgIGNoYXIqIHJldGJ1ZjsKQEAgLTEyMjQsNyArMTIwOSw3IEBACiAgICAgcmV0dXJuIGJpbmFzY2lpX2EyYl9oZXhfaW1wbChtb2R1bGUsIGhleHN0cik7CiB9CiAKLXN0YXRpYyBpbnQgdGFibGVfaGV4WzEyOF0gPSB7CitzdGF0aWMgY29uc3QgaW50IHRhYmxlX2hleFsxMjhdID0gewogICAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwKICAgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsCiAgIC0xLC0xLC0xLC0xLCAtMSwtMSwtMSwtMSwgLTEsLTEsLTEsLTEsIC0xLC0xLC0xLC0xLApAQCAtMTI1NSw3ICsxMjQwLDggQEAKIHsKICAgICBQeV9zc2l6ZV90IGluLCBvdXQ7CiAgICAgY2hhciBjaDsKLSAgICB1bnNpZ25lZCBjaGFyICphc2NpaV9kYXRhLCAqb2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXNjaWlfZGF0YTsKKyAgICB1bnNpZ25lZCBjaGFyICpvZGF0YTsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW4gPSAwOwogICAgIFB5T2JqZWN0ICpydjsKIApAQCAtMTM2MiwxMyArMTM0OCwxNCBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU5ODg0NDcyZWJiMWE5NGMgaW5wdXQ9N2YyYTlhYWEwMDhlOTJiMl0qLwogewogICAgIFB5X3NzaXplX3QgaW4sIG91dDsKLSAgICB1bnNpZ25lZCBjaGFyICpkYXRhYnVmLCAqb2RhdGE7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZGF0YWJ1ZjsKKyAgICB1bnNpZ25lZCBjaGFyICpvZGF0YTsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW4gPSAwLCBvZGF0YWxlbiA9IDA7CiAgICAgUHlPYmplY3QgKnJ2OwogICAgIHVuc2lnbmVkIGludCBsaW5lbGVuID0gMDsKICAgICB1bnNpZ25lZCBjaGFyIGNoOwogICAgIGludCBjcmxmID0gMDsKLSAgICB1bnNpZ25lZCBjaGFyICpwOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnA7CiAKICAgICBkYXRhYnVmID0gZGF0YS0+YnVmOwogICAgIGRhdGFsZW4gPSBkYXRhLT5sZW47CkBAIC0xMzc3LDcgKzEzNjQsNyBAQAogICAgIC8qIFhYWDogdGhpcyBmdW5jdGlvbiBoYXMgdGhlIHNpZGUgZWZmZWN0IG9mIGNvbnZlcnRpbmcgYWxsIG9mCiAgICAgICogdGhlIGVuZCBvZiBsaW5lcyB0byBiZSB0aGUgc2FtZSBkZXBlbmRpbmcgb24gdGhpcyBkZXRlY3Rpb24KICAgICAgKiBoZXJlICovCi0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopIG1lbWNocihkYXRhYnVmLCAnXG4nLCBkYXRhbGVuKTsKKyAgICBwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbWVtY2hyKGRhdGFidWYsICdcbicsIGRhdGFsZW4pOwogICAgIGlmICgocCAhPSBOVUxMKSAmJiAocCA+IGRhdGFidWYpICYmICgqKHAtMSkgPT0gJ1xyJykpCiAgICAgICAgIGNybGYgPSAxOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oIGIvTW9kdWxlcy9jamtjb2RlY3MvY2xpbmljL211bHRpYnl0ZWNvZGVjLmMuaAppbmRleCA4YTQ3ZmY4Li44NGZmZDEyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9jbGluaWMvbXVsdGlieXRlY29kZWMuYy5oCisrKyBiL01vZHVsZXMvY2prY29kZWNzL2NsaW5pYy9tdWx0aWJ5dGVjb2RlYy5jLmgKQEAgLTE0LDcgKzE0LDcgQEAKICJyZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgY2FuIGhhbmRsZSBVbmljb2RlRW5jb2RlRXJyb3JzLiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19FTkNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKQEAgLTIyLDE2ICsyMiwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19lbmNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHo6ZW5jb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqaW5wdXQ7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98ejplbmNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZpbnB1dCwgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZW5jb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC01MCw3ICs1Miw3IEBACiAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQgaXMgYWJsZSB0byBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy5cIiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVDT0RFQ19ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUNvZGVjX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChNdWx0aWJ5dGVDb2RlY09iamVjdCAqc2VsZiwKQEAgLTU4LDIyICs2MCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlQ29kZWNfZGVjb2RlKE11bHRpYnl0ZUNvZGVjT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGUoTXVsdGlieXRlQ29kZWNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5Knx6OmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGlucHV0ID0ge05VTEwsIE5VTEx9OwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5Knx6OmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlucHV0LCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVDb2RlY19kZWNvZGVfaW1wbChzZWxmLCAmaW5wdXQsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KLSAgICBpZiAoaW5wdXQub2JqKQorICAgIGlmIChpbnB1dC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpbnB1dCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg0LDcgKzg5LDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19NVUxUSUJZVEVJTkNSRU1FTlRBTEVOQ09ERVJfRU5DT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX199LAorICAgIHsiZW5jb2RlIiwgKFB5Q0Z1bmN0aW9uKV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlLCBNRVRIX0ZBU1RDQUxMLCBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlcl9lbmNvZGVfaW1wbChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsCkBAIC05MiwxNiArOTcsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpbmFsKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlKE11bHRpYnl0ZUluY3JlbWVudGFsRW5jb2Rlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxFbmNvZGVyX2VuY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlucHV0IiwgImZpbmFsIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xpOmVuY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlucHV0OwogICAgIGludCBmaW5hbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfGk6ZW5jb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJfZW5jb2RlX2ltcGwoc2VsZiwgaW5wdXQsIGZpbmFsKTsKIAogZXhpdDoKQEAgLTEzMSw3ICsxMzgsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX01VTFRJQllURUNPREVDX01VTFRJQllURUlOQ1JFTUVOVEFMREVDT0RFUl9ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUsIE1FVEhfRkFTVENBTEwsIF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZV9pbXBsKE11bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlck9iamVjdCAqc2VsZiwKQEAgLTEzOSwyMiArMTQ2LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaW5hbCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbXVsdGlieXRlY29kZWNfTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyX2RlY29kZShNdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZUluY3JlbWVudGFsRGVjb2Rlcl9kZWNvZGUoTXVsdGlieXRlSW5jcmVtZW50YWxEZWNvZGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5wdXQiLCAiZmluYWwiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJpbnB1dCIsICJmaW5hbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGk6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgaW5wdXQgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IGZpbmFsID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGk6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmaW5wdXQsICZmaW5hbCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZpbnB1dCwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9tdWx0aWJ5dGVjb2RlY19NdWx0aWJ5dGVJbmNyZW1lbnRhbERlY29kZXJfZGVjb2RlX2ltcGwoc2VsZiwgJmlucHV0LCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgaW5wdXQgKi8KLSAgICBpZiAoaW5wdXQub2JqKQorICAgIGlmIChpbnB1dC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZpbnB1dCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE5Niw4ICsyMDYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmVhZCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZzaXplb2JqKSkKKyAgICAgICAgJnNpemVvYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX211bHRpYnl0ZWNvZGVjX011bHRpYnl0ZVN0cmVhbVJlYWRlcl9yZWFkX2ltcGwoc2VsZiwgc2l6ZW9iaik7CiAKIGV4aXQ6CkBAIC0yMjQsOCArMjM1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnNpemVvYmopKQorICAgICAgICAmc2l6ZW9iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lX2ltcGwoc2VsZiwgc2l6ZW9iaik7CiAKIGV4aXQ6CkBAIC0yNTIsOCArMjY0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInJlYWRsaW5lcyIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZzaXplaGludG9iaikpCisgICAgICAgICZzaXplaGludG9iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbXVsdGlieXRlY29kZWNfTXVsdGlieXRlU3RyZWFtUmVhZGVyX3JlYWRsaW5lc19pbXBsKHNlbGYsIHNpemVoaW50b2JqKTsKIAogZXhpdDoKQEAgLTMxNyw0ICszMzAsNCBAQAogCiAjZGVmaW5lIF9NVUxUSUJZVEVDT0RFQ19fX0NSRUFURV9DT0RFQ19NRVRIT0RERUYgICAgXAogICAgIHsiX19jcmVhdGVfY29kZWMiLCAoUHlDRnVuY3Rpb24pX211bHRpYnl0ZWNvZGVjX19fY3JlYXRlX2NvZGVjLCBNRVRIX08sIF9tdWx0aWJ5dGVjb2RlY19fX2NyZWF0ZV9jb2RlY19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVlYmIyMWUxOGMzMDQzZDEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEzNGI5ZTM2Y2I5ODU5MzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2FzeW5jaW9tb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2FzeW5jaW9tb2R1bGUuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MmQyNTIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fYXN5bmNpb21vZHVsZS5jLmgKQEAgLTAsMCArMSw1MjAgQEAKKy8qW2NsaW5pYyBpbnB1dF0KK3ByZXNlcnZlCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfX19pbml0X19fX2RvY19fLAorIkZ1dHVyZSgqLCBsb29wPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJUaGlzIGNsYXNzIGlzICphbG1vc3QqIGNvbXBhdGlibGUgd2l0aCBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLlxuIgorIlxuIgorIiAgICBEaWZmZXJlbmNlczpcbiIKKyJcbiIKKyIgICAgLSByZXN1bHQoKSBhbmQgZXhjZXB0aW9uKCkgZG8gbm90IHRha2UgYSB0aW1lb3V0IGFyZ3VtZW50IGFuZFxuIgorIiAgICAgIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBmdXR1cmUgaXNuXCd0IGRvbmUgeWV0LlxuIgorIlxuIgorIiAgICAtIENhbGxiYWNrcyByZWdpc3RlcmVkIHdpdGggYWRkX2RvbmVfY2FsbGJhY2soKSBhcmUgYWx3YXlzIGNhbGxlZFxuIgorIiAgICAgIHZpYSB0aGUgZXZlbnQgbG9vcFwncyBjYWxsX3Nvb25fdGhyZWFkc2FmZSgpLlxuIgorIlxuIgorIiAgICAtIFRoaXMgY2xhc3MgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgd2FpdCgpIGFuZCBhc19jb21wbGV0ZWQoKVxuIgorIiAgICAgIG1ldGhvZHMgaW4gdGhlIGNvbmN1cnJlbnQuZnV0dXJlcyBwYWNrYWdlLiIpOworCitzdGF0aWMgaW50CitfYXN5bmNpb19GdXR1cmVfX19pbml0X19faW1wbChGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpsb29wKTsKKworc3RhdGljIGludAorX2FzeW5jaW9fRnV0dXJlX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibG9vcCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InwkTzpGdXR1cmUiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpsb29wID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmxvb3ApKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2FzeW5jaW9fRnV0dXJlX19faW5pdF9fX2ltcGwoKEZ1dHVyZU9iaiAqKXNlbGYsIGxvb3ApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfcmVzdWx0X19kb2NfXywKKyJyZXN1bHQoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gdGhlIHJlc3VsdCB0aGlzIGZ1dHVyZSByZXByZXNlbnRzLlxuIgorIlxuIgorIklmIHRoZSBmdXR1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCByYWlzZXMgQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGVcbiIKKyJmdXR1cmVcJ3MgcmVzdWx0IGlzblwndCB5ZXQgYXZhaWxhYmxlLCByYWlzZXMgSW52YWxpZFN0YXRlRXJyb3IuICBJZlxuIgorInRoZSBmdXR1cmUgaXMgZG9uZSBhbmQgaGFzIGFuIGV4Y2VwdGlvbiBzZXQsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfUkVTVUxUX01FVEhPRERFRiAgICBcCisgICAgeyJyZXN1bHQiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX3Jlc3VsdCwgTUVUSF9OT0FSR1MsIF9hc3luY2lvX0Z1dHVyZV9yZXN1bHRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9yZXN1bHRfaW1wbChGdXR1cmVPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX3Jlc3VsdChGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX0Z1dHVyZV9yZXN1bHRfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9leGNlcHRpb25fX2RvY19fLAorImV4Y2VwdGlvbigkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZXhjZXB0aW9uIHRoYXQgd2FzIHNldCBvbiB0aGlzIGZ1dHVyZS5cbiIKKyJcbiIKKyJUaGUgZXhjZXB0aW9uIChvciBOb25lIGlmIG5vIGV4Y2VwdGlvbiB3YXMgc2V0KSBpcyByZXR1cm5lZCBvbmx5IGlmXG4iCisidGhlIGZ1dHVyZSBpcyBkb25lLiAgSWYgdGhlIGZ1dHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJhaXNlc1xuIgorIkNhbmNlbGxlZEVycm9yLiAgSWYgdGhlIGZ1dHVyZSBpc25cJ3QgZG9uZSB5ZXQsIHJhaXNlc1xuIgorIkludmFsaWRTdGF0ZUVycm9yLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9FWENFUFRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7ImV4Y2VwdGlvbiIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfZXhjZXB0aW9uLCBNRVRIX05PQVJHUywgX2FzeW5jaW9fRnV0dXJlX2V4Y2VwdGlvbl9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2V4Y2VwdGlvbl9pbXBsKEZ1dHVyZU9iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfZXhjZXB0aW9uKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fRnV0dXJlX2V4Y2VwdGlvbl9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX3NldF9yZXN1bHRfX2RvY19fLAorInNldF9yZXN1bHQoJHNlbGYsIHJlcywgLylcbiIKKyItLVxuIgorIlxuIgorIk1hcmsgdGhlIGZ1dHVyZSBkb25lIGFuZCBzZXQgaXRzIHJlc3VsdC5cbiIKKyJcbiIKKyJJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzXG4iCisiSW52YWxpZFN0YXRlRXJyb3IuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX1NFVF9SRVNVTFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9yZXN1bHQiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX3NldF9yZXN1bHQsIE1FVEhfTywgX2FzeW5jaW9fRnV0dXJlX3NldF9yZXN1bHRfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9zZXRfZXhjZXB0aW9uX19kb2NfXywKKyJzZXRfZXhjZXB0aW9uKCRzZWxmLCBleGNlcHRpb24sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJNYXJrIHRoZSBmdXR1cmUgZG9uZSBhbmQgc2V0IGFuIGV4Y2VwdGlvbi5cbiIKKyJcbiIKKyJJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzXG4iCisiSW52YWxpZFN0YXRlRXJyb3IuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX1NFVF9FWENFUFRJT05fTUVUSE9EREVGICAgIFwKKyAgICB7InNldF9leGNlcHRpb24iLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX3NldF9leGNlcHRpb24sIE1FVEhfTywgX2FzeW5jaW9fRnV0dXJlX3NldF9leGNlcHRpb25fX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9hZGRfZG9uZV9jYWxsYmFja19fZG9jX18sCisiYWRkX2RvbmVfY2FsbGJhY2soJHNlbGYsIGZuLCAvKVxuIgorIi0tXG4iCisiXG4iCisiQWRkIGEgY2FsbGJhY2sgdG8gYmUgcnVuIHdoZW4gdGhlIGZ1dHVyZSBiZWNvbWVzIGRvbmUuXG4iCisiXG4iCisiVGhlIGNhbGxiYWNrIGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IC0gdGhlIGZ1dHVyZSBvYmplY3QuIElmXG4iCisidGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgd2hlbiB0aGlzIGlzIGNhbGxlZCwgdGhlIGNhbGxiYWNrIGlzXG4iCisic2NoZWR1bGVkIHdpdGggY2FsbF9zb29uLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9BRERfRE9ORV9DQUxMQkFDS19NRVRIT0RERUYgICAgXAorICAgIHsiYWRkX2RvbmVfY2FsbGJhY2siLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX2FkZF9kb25lX2NhbGxiYWNrLCBNRVRIX08sIF9hc3luY2lvX0Z1dHVyZV9hZGRfZG9uZV9jYWxsYmFja19fZG9jX199LAorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX3JlbW92ZV9kb25lX2NhbGxiYWNrX19kb2NfXywKKyJyZW1vdmVfZG9uZV9jYWxsYmFjaygkc2VsZiwgZm4sIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZW1vdmUgYWxsIGluc3RhbmNlcyBvZiBhIGNhbGxiYWNrIGZyb20gdGhlIFwiY2FsbCB3aGVuIGRvbmVcIiBsaXN0LlxuIgorIlxuIgorIlJldHVybnMgdGhlIG51bWJlciBvZiBjYWxsYmFja3MgcmVtb3ZlZC4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfUkVNT1ZFX0RPTkVfQ0FMTEJBQ0tfTUVUSE9EREVGICAgIFwKKyAgICB7InJlbW92ZV9kb25lX2NhbGxiYWNrIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9yZW1vdmVfZG9uZV9jYWxsYmFjaywgTUVUSF9PLCBfYXN5bmNpb19GdXR1cmVfcmVtb3ZlX2RvbmVfY2FsbGJhY2tfX2RvY19ffSwKKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9jYW5jZWxfX2RvY19fLAorImNhbmNlbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIkNhbmNlbCB0aGUgZnV0dXJlIGFuZCBzY2hlZHVsZSBjYWxsYmFja3MuXG4iCisiXG4iCisiSWYgdGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgb3IgY2FuY2VsbGVkLCByZXR1cm4gRmFsc2UuICBPdGhlcndpc2UsXG4iCisiY2hhbmdlIHRoZSBmdXR1cmVcJ3Mgc3RhdGUgdG8gY2FuY2VsbGVkLCBzY2hlZHVsZSB0aGUgY2FsbGJhY2tzIGFuZFxuIgorInJldHVybiBUcnVlLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9DQU5DRUxfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhbmNlbCIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfY2FuY2VsLCBNRVRIX05PQVJHUywgX2FzeW5jaW9fRnV0dXJlX2NhbmNlbF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2NhbmNlbF9pbXBsKEZ1dHVyZU9iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfY2FuY2VsKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fRnV0dXJlX2NhbmNlbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX2NhbmNlbGxlZF9fZG9jX18sCisiY2FuY2VsbGVkKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iCisiUmV0dXJuIFRydWUgaWYgdGhlIGZ1dHVyZSB3YXMgY2FuY2VsbGVkLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9DQU5DRUxMRURfTUVUSE9EREVGICAgIFwKKyAgICB7ImNhbmNlbGxlZCIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfY2FuY2VsbGVkLCBNRVRIX05PQVJHUywgX2FzeW5jaW9fRnV0dXJlX2NhbmNlbGxlZF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX2NhbmNlbGxlZF9pbXBsKEZ1dHVyZU9iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfY2FuY2VsbGVkKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fRnV0dXJlX2NhbmNlbGxlZF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fRnV0dXJlX2RvbmVfX2RvY19fLAorImRvbmUoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gVHJ1ZSBpZiB0aGUgZnV0dXJlIGlzIGRvbmUuXG4iCisiXG4iCisiRG9uZSBtZWFucyBlaXRoZXIgdGhhdCBhIHJlc3VsdCAvIGV4Y2VwdGlvbiBhcmUgYXZhaWxhYmxlLCBvciB0aGF0IHRoZVxuIgorImZ1dHVyZSB3YXMgY2FuY2VsbGVkLiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX0ZVVFVSRV9ET05FX01FVEhPRERFRiAgICBcCisgICAgeyJkb25lIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX0Z1dHVyZV9kb25lLCBNRVRIX05PQVJHUywgX2FzeW5jaW9fRnV0dXJlX2RvbmVfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9kb25lX2ltcGwoRnV0dXJlT2JqICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX0Z1dHVyZV9kb25lKEZ1dHVyZU9iaiAqc2VsZiwgUHlPYmplY3QgKlB5X1VOVVNFRChpZ25vcmVkKSkKK3sKKyAgICByZXR1cm4gX2FzeW5jaW9fRnV0dXJlX2RvbmVfaW1wbChzZWxmKTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX0Z1dHVyZV9fcmVwcl9pbmZvX19kb2NfXywKKyJfcmVwcl9pbmZvKCRzZWxmLCAvKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQVNZTkNJT19GVVRVUkVfX1JFUFJfSU5GT19NRVRIT0RERUYgICAgXAorICAgIHsiX3JlcHJfaW5mbyIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19GdXR1cmVfX3JlcHJfaW5mbywgTUVUSF9OT0FSR1MsIF9hc3luY2lvX0Z1dHVyZV9fcmVwcl9pbmZvX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfX3JlcHJfaW5mb19pbXBsKEZ1dHVyZU9iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19GdXR1cmVfX3JlcHJfaW5mbyhGdXR1cmVPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX0Z1dHVyZV9fcmVwcl9pbmZvX2ltcGwoc2VsZik7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19GdXR1cmVfX3NjaGVkdWxlX2NhbGxiYWNrc19fZG9jX18sCisiX3NjaGVkdWxlX2NhbGxiYWNrcygkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fRlVUVVJFX19TQ0hFRFVMRV9DQUxMQkFDS1NfTUVUSE9EREVGICAgIFwKKyAgICB7Il9zY2hlZHVsZV9jYWxsYmFja3MiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fRnV0dXJlX19zY2hlZHVsZV9jYWxsYmFja3MsIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19GdXR1cmVfX3NjaGVkdWxlX2NhbGxiYWNrc19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX19zY2hlZHVsZV9jYWxsYmFja3NfaW1wbChGdXR1cmVPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fRnV0dXJlX19zY2hlZHVsZV9jYWxsYmFja3MoRnV0dXJlT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19GdXR1cmVfX3NjaGVkdWxlX2NhbGxiYWNrc19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19fX2luaXRfX19fZG9jX18sCisiVGFzayhjb3JvLCAqLCBsb29wPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJBIGNvcm91dGluZSB3cmFwcGVkIGluIGEgRnV0dXJlLiIpOworCitzdGF0aWMgaW50CitfYXN5bmNpb19UYXNrX19faW5pdF9fX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmNvcm8sIFB5T2JqZWN0ICpsb29wKTsKKworc3RhdGljIGludAorX2FzeW5jaW9fVGFza19fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNvcm8iLCAibG9vcCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JE86VGFzayIsIF9rZXl3b3JkcywgMH07CisgICAgUHlPYmplY3QgKmNvcm87CisgICAgUHlPYmplY3QgKmxvb3AgPSBOVUxMOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmY29ybywgJmxvb3ApKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2FzeW5jaW9fVGFza19fX2luaXRfX19pbXBsKChUYXNrT2JqICopc2VsZiwgY29ybywgbG9vcCk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfY3VycmVudF90YXNrX19kb2NfXywKKyJjdXJyZW50X3Rhc2soJHR5cGUsIC8sIGxvb3A9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzayBpbiBhbiBldmVudCBsb29wIG9yIE5vbmUuXG4iCisiXG4iCisiQnkgZGVmYXVsdCB0aGUgY3VycmVudCB0YXNrIGZvciB0aGUgY3VycmVudCBldmVudCBsb29wIGlzIHJldHVybmVkLlxuIgorIlxuIgorIk5vbmUgaXMgcmV0dXJuZWQgd2hlbiBjYWxsZWQgbm90IGluIHRoZSBjb250ZXh0IG9mIGEgVGFzay4iKTsKKworI2RlZmluZSBfQVNZTkNJT19UQVNLX0NVUlJFTlRfVEFTS19NRVRIT0RERUYgICAgXAorICAgIHsiY3VycmVudF90YXNrIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX1Rhc2tfY3VycmVudF90YXNrLCBNRVRIX0ZBU1RDQUxMfE1FVEhfQ0xBU1MsIF9hc3luY2lvX1Rhc2tfY3VycmVudF90YXNrX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2N1cnJlbnRfdGFza19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmxvb3ApOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19jdXJyZW50X3Rhc2soUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imxvb3AiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpjdXJyZW50X3Rhc2siLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpsb29wID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbG9vcCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfYXN5bmNpb19UYXNrX2N1cnJlbnRfdGFza19pbXBsKHR5cGUsIGxvb3ApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX2FsbF90YXNrc19fZG9jX18sCisiYWxsX3Rhc2tzKCR0eXBlLCAvLCBsb29wPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZXR1cm4gYSBzZXQgb2YgYWxsIHRhc2tzIGZvciBhbiBldmVudCBsb29wLlxuIgorIlxuIgorIkJ5IGRlZmF1bHQgYWxsIHRhc2tzIGZvciB0aGUgY3VycmVudCBldmVudCBsb29wIGFyZSByZXR1cm5lZC4iKTsKKworI2RlZmluZSBfQVNZTkNJT19UQVNLX0FMTF9UQVNLU19NRVRIT0RERUYgICAgXAorICAgIHsiYWxsX3Rhc2tzIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX1Rhc2tfYWxsX3Rhc2tzLCBNRVRIX0ZBU1RDQUxMfE1FVEhfQ0xBU1MsIF9hc3luY2lvX1Rhc2tfYWxsX3Rhc2tzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2FsbF90YXNrc19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmxvb3ApOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19hbGxfdGFza3MoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Imxvb3AiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzphbGxfdGFza3MiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpsb29wID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbG9vcCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfYXN5bmNpb19UYXNrX2FsbF90YXNrc19pbXBsKHR5cGUsIGxvb3ApOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX19yZXByX2luZm9fX2RvY19fLAorIl9yZXByX2luZm8oJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9BU1lOQ0lPX1RBU0tfX1JFUFJfSU5GT19NRVRIT0RERUYgICAgXAorICAgIHsiX3JlcHJfaW5mbyIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19UYXNrX19yZXByX2luZm8sIE1FVEhfTk9BUkdTLCBfYXN5bmNpb19UYXNrX19yZXByX2luZm9fX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3JlcHJfaW5mb19pbXBsKFRhc2tPYmogKnNlbGYpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fcmVwcl9pbmZvKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpQeV9VTlVTRUQoaWdub3JlZCkpCit7CisgICAgcmV0dXJuIF9hc3luY2lvX1Rhc2tfX3JlcHJfaW5mb19pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19jYW5jZWxfX2RvY19fLAorImNhbmNlbCgkc2VsZiwgLylcbiIKKyItLVxuIgorIlxuIgorIlJlcXVlc3QgdGhhdCB0aGlzIHRhc2sgY2FuY2VsIGl0c2VsZi5cbiIKKyJcbiIKKyJUaGlzIGFycmFuZ2VzIGZvciBhIENhbmNlbGxlZEVycm9yIHRvIGJlIHRocm93biBpbnRvIHRoZVxuIgorIndyYXBwZWQgY29yb3V0aW5lIG9uIHRoZSBuZXh0IGN5Y2xlIHRocm91Z2ggdGhlIGV2ZW50IGxvb3AuXG4iCisiVGhlIGNvcm91dGluZSB0aGVuIGhhcyBhIGNoYW5jZSB0byBjbGVhbiB1cCBvciBldmVuIGRlbnlcbiIKKyJ0aGUgcmVxdWVzdCB1c2luZyB0cnkvZXhjZXB0L2ZpbmFsbHkuXG4iCisiXG4iCisiVW5saWtlIEZ1dHVyZS5jYW5jZWwsIHRoaXMgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlXG4iCisidGFzayB3aWxsIGJlIGNhbmNlbGxlZDogdGhlIGV4Y2VwdGlvbiBtaWdodCBiZSBjYXVnaHQgYW5kXG4iCisiYWN0ZWQgdXBvbiwgZGVsYXlpbmcgY2FuY2VsbGF0aW9uIG9mIHRoZSB0YXNrIG9yIHByZXZlbnRpbmdcbiIKKyJjYW5jZWxsYXRpb24gY29tcGxldGVseS4gIFRoZSB0YXNrIG1heSBhbHNvIHJldHVybiBhIHZhbHVlIG9yXG4iCisicmFpc2UgYSBkaWZmZXJlbnQgZXhjZXB0aW9uLlxuIgorIlxuIgorIkltbWVkaWF0ZWx5IGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgVGFzay5jYW5jZWxsZWQoKSB3aWxsXG4iCisibm90IHJldHVybiBUcnVlICh1bmxlc3MgdGhlIHRhc2sgd2FzIGFscmVhZHkgY2FuY2VsbGVkKS4gIEFcbiIKKyJ0YXNrIHdpbGwgYmUgbWFya2VkIGFzIGNhbmNlbGxlZCB3aGVuIHRoZSB3cmFwcGVkIGNvcm91dGluZVxuIgorInRlcm1pbmF0ZXMgd2l0aCBhIENhbmNlbGxlZEVycm9yIGV4Y2VwdGlvbiAoZXZlbiBpZiBjYW5jZWwoKVxuIgorIndhcyBub3QgY2FsbGVkKS4iKTsKKworI2RlZmluZSBfQVNZTkNJT19UQVNLX0NBTkNFTF9NRVRIT0RERUYgICAgXAorICAgIHsiY2FuY2VsIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX1Rhc2tfY2FuY2VsLCBNRVRIX05PQVJHUywgX2FzeW5jaW9fVGFza19jYW5jZWxfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfY2FuY2VsX2ltcGwoVGFza09iaiAqc2VsZik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX2NhbmNlbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfYXN5bmNpb19UYXNrX2NhbmNlbF9pbXBsKHNlbGYpOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19nZXRfc3RhY2tfX2RvY19fLAorImdldF9zdGFjaygkc2VsZiwgLywgKiwgbGltaXQ9Tm9uZSlcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgbGlzdCBvZiBzdGFjayBmcmFtZXMgZm9yIHRoaXMgdGFza1wncyBjb3JvdXRpbmUuXG4iCisiXG4iCisiSWYgdGhlIGNvcm91dGluZSBpcyBub3QgZG9uZSwgdGhpcyByZXR1cm5zIHRoZSBzdGFjayB3aGVyZSBpdCBpc1xuIgorInN1c3BlbmRlZC4gIElmIHRoZSBjb3JvdXRpbmUgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3Igd2FzXG4iCisiY2FuY2VsbGVkLCB0aGlzIHJldHVybnMgYW4gZW1wdHkgbGlzdC4gIElmIHRoZSBjb3JvdXRpbmUgd2FzXG4iCisidGVybWluYXRlZCBieSBhbiBleGNlcHRpb24sIHRoaXMgcmV0dXJucyB0aGUgbGlzdCBvZiB0cmFjZWJhY2tcbiIKKyJmcmFtZXMuXG4iCisiXG4iCisiVGhlIGZyYW1lcyBhcmUgYWx3YXlzIG9yZGVyZWQgZnJvbSBvbGRlc3QgdG8gbmV3ZXN0LlxuIgorIlxuIgorIlRoZSBvcHRpb25hbCBsaW1pdCBnaXZlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZnJhbWVzIHRvXG4iCisicmV0dXJuOyBieSBkZWZhdWx0IGFsbCBhdmFpbGFibGUgZnJhbWVzIGFyZSByZXR1cm5lZC4gIEl0c1xuIgorIm1lYW5pbmcgZGlmZmVycyBkZXBlbmRpbmcgb24gd2hldGhlciBhIHN0YWNrIG9yIGEgdHJhY2ViYWNrIGlzXG4iCisicmV0dXJuZWQ6IHRoZSBuZXdlc3QgZnJhbWVzIG9mIGEgc3RhY2sgYXJlIHJldHVybmVkLCBidXQgdGhlXG4iCisib2xkZXN0IGZyYW1lcyBvZiBhIHRyYWNlYmFjayBhcmUgcmV0dXJuZWQuICAoVGhpcyBtYXRjaGVzIHRoZVxuIgorImJlaGF2aW9yIG9mIHRoZSB0cmFjZWJhY2sgbW9kdWxlLilcbiIKKyJcbiIKKyJGb3IgcmVhc29ucyBiZXlvbmQgb3VyIGNvbnRyb2wsIG9ubHkgb25lIHN0YWNrIGZyYW1lIGlzXG4iCisicmV0dXJuZWQgZm9yIGEgc3VzcGVuZGVkIGNvcm91dGluZS4iKTsKKworI2RlZmluZSBfQVNZTkNJT19UQVNLX0dFVF9TVEFDS19NRVRIT0RERUYgICAgXAorICAgIHsiZ2V0X3N0YWNrIiwgKFB5Q0Z1bmN0aW9uKV9hc3luY2lvX1Rhc2tfZ2V0X3N0YWNrLCBNRVRIX0ZBU1RDQUxMLCBfYXN5bmNpb19UYXNrX2dldF9zdGFja19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19nZXRfc3RhY2tfaW1wbChUYXNrT2JqICpzZWxmLCBQeU9iamVjdCAqbGltaXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19nZXRfc3RhY2soVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsaW1pdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InwkTzpnZXRfc3RhY2siLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpsaW1pdCA9IFB5X05vbmU7CisKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmxpbWl0KSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9hc3luY2lvX1Rhc2tfZ2V0X3N0YWNrX2ltcGwoc2VsZiwgbGltaXQpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihfYXN5bmNpb19UYXNrX3ByaW50X3N0YWNrX19kb2NfXywKKyJwcmludF9zdGFjaygkc2VsZiwgLywgKiwgbGltaXQ9Tm9uZSwgZmlsZT1Ob25lKVxuIgorIi0tXG4iCisiXG4iCisiUHJpbnQgdGhlIHN0YWNrIG9yIHRyYWNlYmFjayBmb3IgdGhpcyB0YXNrXCdzIGNvcm91dGluZS5cbiIKKyJcbiIKKyJUaGlzIHByb2R1Y2VzIG91dHB1dCBzaW1pbGFyIHRvIHRoYXQgb2YgdGhlIHRyYWNlYmFjayBtb2R1bGUsXG4iCisiZm9yIHRoZSBmcmFtZXMgcmV0cmlldmVkIGJ5IGdldF9zdGFjaygpLiAgVGhlIGxpbWl0IGFyZ3VtZW50XG4iCisiaXMgcGFzc2VkIHRvIGdldF9zdGFjaygpLiAgVGhlIGZpbGUgYXJndW1lbnQgaXMgYW4gSS9PIHN0cmVhbVxuIgorInRvIHdoaWNoIHRoZSBvdXRwdXQgaXMgd3JpdHRlbjsgYnkgZGVmYXVsdCBvdXRwdXQgaXMgd3JpdHRlblxuIgorInRvIHN5cy5zdGRlcnIuIik7CisKKyNkZWZpbmUgX0FTWU5DSU9fVEFTS19QUklOVF9TVEFDS19NRVRIT0RERUYgICAgXAorICAgIHsicHJpbnRfc3RhY2siLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fVGFza19wcmludF9zdGFjaywgTUVUSF9GQVNUQ0FMTCwgX2FzeW5jaW9fVGFza19wcmludF9zdGFja19fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19wcmludF9zdGFja19pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX3ByaW50X3N0YWNrKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibGltaXQiLCAiZmlsZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InwkT086cHJpbnRfc3RhY2siLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpsaW1pdCA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKmZpbGUgPSBQeV9Ob25lOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZsaW1pdCwgJmZpbGUpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2FzeW5jaW9fVGFza19wcmludF9zdGFja19pbXBsKHNlbGYsIGxpbWl0LCBmaWxlKTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCitQeURvY19TVFJWQVIoX2FzeW5jaW9fVGFza19fc3RlcF9fZG9jX18sCisiX3N0ZXAoJHNlbGYsIC8sIGV4Yz1Ob25lKVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQVNZTkNJT19UQVNLX19TVEVQX01FVEhPRERFRiAgICBcCisgICAgeyJfc3RlcCIsIChQeUNGdW5jdGlvbilfYXN5bmNpb19UYXNrX19zdGVwLCBNRVRIX0ZBU1RDQUxMLCBfYXN5bmNpb19UYXNrX19zdGVwX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX19zdGVwX2ltcGwoVGFza09iaiAqc2VsZiwgUHlPYmplY3QgKmV4Yyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfYXN5bmNpb19UYXNrX19zdGVwKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZXhjIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86X3N0ZXAiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZleGMpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2FzeW5jaW9fVGFza19fc3RlcF9pbXBsKHNlbGYsIGV4Yyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKF9hc3luY2lvX1Rhc2tfX3dha2V1cF9fZG9jX18sCisiX3dha2V1cCgkc2VsZiwgLywgZnV0KVxuIgorIi0tXG4iCisiXG4iKTsKKworI2RlZmluZSBfQVNZTkNJT19UQVNLX19XQUtFVVBfTUVUSE9EREVGICAgIFwKKyAgICB7Il93YWtldXAiLCAoUHlDRnVuY3Rpb24pX2FzeW5jaW9fVGFza19fd2FrZXVwLCBNRVRIX0ZBU1RDQUxMLCBfYXN5bmNpb19UYXNrX193YWtldXBfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK19hc3luY2lvX1Rhc2tfX3dha2V1cF9pbXBsKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICpmdXQpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2FzeW5jaW9fVGFza19fd2FrZXVwKFRhc2tPYmogKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZnV0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpfd2FrZXVwIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZnV0OworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmdXQpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2FzeW5jaW9fVGFza19fd2FrZXVwX2ltcGwoc2VsZiwgZnV0KTsKKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmMDM2MzIxYmIwODMwNjYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2J6Mm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaAppbmRleCAzZWQ4MzAzLi4xY2E4MTBjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fYnoybW9kdWxlLmMuaApAQCAtMjUsMTQgKzI1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6Y29tcHJlc3MiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfYnoyX0JaMkNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODAsMTEgKzgyLDEzIEBACiAgICAgaW50IGNvbXByZXNzbGV2ZWwgPSA5OwogCiAgICAgaWYgKChQeV9UWVBFKHNlbGYpID09ICZCWjJDb21wcmVzc29yX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyQ29tcHJlc3NvciIsIGt3YXJncykpCisgICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyQ29tcHJlc3NvciIsIGt3YXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOkJaMkNvbXByZXNzb3IiLAotICAgICAgICAmY29tcHJlc3NsZXZlbCkpCisgICAgICAgICZjb21wcmVzc2xldmVsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyQ29tcHJlc3Nvcl9fX2luaXRfX19pbXBsKChCWjJDb21wcmVzc29yICopc2VsZiwgY29tcHJlc3NsZXZlbCk7CiAKIGV4aXQ6CkBAIC0xMTEsMjkgKzExNSwzMiBAQAogInRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuIik7CiAKICNkZWZpbmUgX0JaMl9CWjJERUNPTVBSRVNTT1JfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2J6Ml9CWjJEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX0ZBU1RDQUxMLCBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnoyX0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MoQloyRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGggPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfG46ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZtYXhfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9iejJfQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSwgbWF4X2xlbmd0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTU1LDE0ICsxNjIsMTYgQEAKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7CiAKICAgICBpZiAoKFB5X1RZUEUoc2VsZikgPT0gJkJaMkRlY29tcHJlc3Nvcl9UeXBlKSAmJgotICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiQloyRGVjb21wcmVzc29yIiwgYXJncykpCisgICAgICAgICFfUHlBcmdfTm9Qb3NpdGlvbmFsKCJCWjJEZWNvbXByZXNzb3IiLCBhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIGlmICgoUHlfVFlQRShzZWxmKSA9PSAmQloyRGVjb21wcmVzc29yX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiQloyRGVjb21wcmVzc29yIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJCWjJEZWNvbXByZXNzb3IiLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2J6Ml9CWjJEZWNvbXByZXNzb3JfX19pbml0X19faW1wbCgoQloyRGVjb21wcmVzc29yICopc2VsZik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZWYyOWI3NmIzMzE0ZmM3IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZTU3YWYwYjM2OGQzZTU1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jb2RlY3Ntb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKaW5kZXggYWYwNmM2ZC4uMDU2Mjg3ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2NvZGVjc21vZHVsZS5jLmgKQEAgLTMzLDggKzMzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICplbmNvZGluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXAiLCAmZW5jb2RpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpsb29rdXAiLCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sb29rdXBfaW1wbChtb2R1bGUsIGVuY29kaW5nKTsKIAogZXhpdDoKQEAgLTU0LDI0ICs1NSwyNiBAQAogImNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVmFsdWVFcnJvcnMuIik7CiAKICNkZWZpbmUgX0NPREVDU19FTkNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImVuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX2VuY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9jb2RlY3NfZW5jb2RlX19kb2NfX30sCisgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19lbmNvZGUsIE1FVEhfRkFTVENBTEwsIF9jb2RlY3NfZW5jb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfY29kZWNzX2VuY29kZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2NvZGVjc19lbmNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfY29kZWNzX2VuY29kZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfHNzOmVuY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm9iajsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98c3M6ZW5jb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmb2JqLCAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19lbmNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC05MSwyNCArOTQsMjYgQEAKICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IgdGhhdCBjYW4gaGFuZGxlIFZhbHVlRXJyb3JzLiIpOwogCiAjZGVmaW5lIF9DT0RFQ1NfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pX2NvZGVjc19kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfY29kZWNzX2RlY29kZV9fZG9jX199LAorICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKV9jb2RlY3NfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBfY29kZWNzX2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2NvZGVjc19kZWNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9jb2RlY3NfZGVjb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2NvZGVjc19kZWNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9iaiIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xzczpkZWNvZGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfHNzOmRlY29kZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9iaiwgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZGVjb2RlX2ltcGwobW9kdWxlLCBvYmosIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtMTMzLDggKzEzOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6X2ZvcmdldF9jb2RlYyIsICZlbmNvZGluZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOl9mb3JnZXRfY29kZWMiLCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19fZm9yZ2V0X2NvZGVjX2ltcGwobW9kdWxlLCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC0xNjEsMTQgKzE2NywxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6ZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19lc2NhcGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xOTMsOCArMjAxLDkgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIXx6OmVzY2FwZV9lbmNvZGUiLAotICAgICAgICAmUHlCeXRlc19UeXBlLCAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZQeUJ5dGVzX1R5cGUsICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfZXNjYXBlX2VuY29kZV9pbXBsKG1vZHVsZSwgZGF0YSwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTIyMSw4ICsyMzAsOSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2RlY29kZSIsCi0gICAgICAgICZvYmosICZlcnJvcnMpKQorICAgICAgICAmb2JqLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9kZWNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTI1MCwxNCArMjYwLDE2IEBACiAgICAgaW50IGZpbmFsID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8emk6dXRmXzdfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfN19kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODMsMTQgKzI5NSwxNiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOnV0Zl84X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzhfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzE2LDE0ICszMzAsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzQ5LDE0ICszNjUsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfbGVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfbGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzgyLDE0ICs0MDAsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMTZfYmVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfYmVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDE3LDE0ICs0MzcsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aWk6dXRmXzE2X2V4X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmYnl0ZW9yZGVyLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2V4X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgYnl0ZW9yZGVyLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDUwLDE0ICs0NzIsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMzJfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDgzLDE0ICs1MDcsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMzJfbGVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfbGVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTE2LDE0ICs1NDIsMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTp1dGZfMzJfYmVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfYmVfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTUxLDE0ICs1NzksMTYgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aWk6dXRmXzMyX2V4X2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmYnl0ZW9yZGVyLCAmZmluYWwpKQorICAgICAgICAmZGF0YSwgJmVycm9ycywgJmJ5dGVvcmRlciwgJmZpbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzMyX2V4X2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgYnl0ZW9yZGVyLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTgzLDE0ICs2MTMsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzKnx6OnVuaWNvZGVfZXNjYXBlX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTYxNSwxNCArNjQ3LDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyp8ejpyYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMpKQorICAgICAgICAmZGF0YSwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY0NywxNCArNjgxLDE2IEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8ejpsYXRpbl8xX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sYXRpbl8xX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNjc5LDE0ICs3MTUsMTYgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6OmFzY2lpX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzKSkKKyAgICAgICAgJmRhdGEsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19hc2NpaV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTcxMiwxOSArNzUwLDIxIEBACiAgICAgUHlPYmplY3QgKm1hcHBpbmcgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6TzpjaGFybWFwX2RlY29kZSIsCi0gICAgICAgICZkYXRhLCAmZXJyb3JzLCAmbWFwcGluZykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmbWFwcGluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NoYXJtYXBfZGVjb2RlX2ltcGwobW9kdWxlLCAmZGF0YSwgZXJyb3JzLCBtYXBwaW5nKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX21iY3NfZGVjb2RlX19kb2NfXywKICJtYmNzX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCkBAIC03NDcsMjEgKzc4Nyw2MiBAQAogICAgIGludCBmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfHppOm1iY3NfZGVjb2RlIiwKLSAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZkYXRhLCAmZXJyb3JzLCAmZmluYWwpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19tYmNzX2RlY29kZV9pbXBsKG1vZHVsZSwgJmRhdGEsIGVycm9ycywgZmluYWwpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAotI2lmIGRlZmluZWQoSEFWRV9NQkNTKQorI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF9jb2RlY3Nfb2VtX2RlY29kZV9fZG9jX18sCisib2VtX2RlY29kZSgkbW9kdWxlLCBkYXRhLCBlcnJvcnM9Tm9uZSwgZmluYWw9RmFsc2UsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfT0VNX0RFQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsib2VtX2RlY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX29lbV9kZWNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19vZW1fZGVjb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9kZWNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCBmaW5hbCk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9kZWNvZGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBpbnQgZmluYWwgPSAwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Knx6aTpvZW1fZGVjb2RlIiwKKyAgICAgICAgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX29lbV9kZWNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMsIGZpbmFsKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCisgICAgaWYgKGRhdGEub2JqKSB7CisgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQorCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfY29kZV9wYWdlX2RlY29kZV9fZG9jX18sCiAiY29kZV9wYWdlX2RlY29kZSgkbW9kdWxlLCBjb2RlcGFnZSwgZGF0YSwgZXJyb3JzPU5vbmUsIGZpbmFsPUZhbHNlLCAvKVxuIgpAQCAtNzg1LDE5ICs4NjYsMjEgQEAKICAgICBpbnQgZmluYWwgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSp8emk6Y29kZV9wYWdlX2RlY29kZSIsCi0gICAgICAgICZjb2RlcGFnZSwgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpCisgICAgICAgICZjb2RlcGFnZSwgJmRhdGEsICZlcnJvcnMsICZmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX2NvZGVfcGFnZV9kZWNvZGVfaW1wbChtb2R1bGUsIGNvZGVwYWdlLCAmZGF0YSwgZXJyb3JzLCBmaW5hbCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCiBQeURvY19TVFJWQVIoX2NvZGVjc19yZWFkYnVmZmVyX2VuY29kZV9fZG9jX18sCiAicmVhZGJ1ZmZlcl9lbmNvZGUoJG1vZHVsZSwgZGF0YSwgZXJyb3JzPU5vbmUsIC8pXG4iCkBAIC04MTksMTQgKzkwMiwxNiBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqfHo6cmVhZGJ1ZmZlcl9lbmNvZGUiLAotICAgICAgICAmZGF0YSwgJmVycm9ycykpCisgICAgICAgICZkYXRhLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfcmVhZGJ1ZmZlcl9lbmNvZGVfaW1wbChtb2R1bGUsICZkYXRhLCBlcnJvcnMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg1MSw4ICs5MzYsOSBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1bmljb2RlX2ludGVybmFsX2VuY29kZSIsCi0gICAgICAgICZvYmosICZlcnJvcnMpKQorICAgICAgICAmb2JqLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdW5pY29kZV9pbnRlcm5hbF9lbmNvZGVfaW1wbChtb2R1bGUsIG9iaiwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTg3OCw5ICs5NjQsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfN19lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfN19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzdfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC05MDYsOSArOTkzLDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzhfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzhfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl84X2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTM1LDkgKzEwMjMsMTAgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGludCBieXRlb3JkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHppOnV0Zl8xNl9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8emk6dXRmXzE2X2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgYnl0ZW9yZGVyKTsKIAogZXhpdDoKQEAgLTk2Myw5ICsxMDUyLDEwIEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHo6dXRmXzE2X2xlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnV0Zl8xNl9sZV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfdXRmXzE2X2xlX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtOTkxLDkgKzEwODEsMTAgQEAKICAgICBQeU9iamVjdCAqc3RyOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98ejp1dGZfMTZfYmVfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6dXRmXzE2X2JlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMTZfYmVfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0xMDIwLDkgKzExMTEsMTAgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGludCBieXRlb3JkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHppOnV0Zl8zMl9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzLCAmYnl0ZW9yZGVyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8emk6dXRmXzMyX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZieXRlb3JkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191dGZfMzJfZW5jb2RlX2ltcGwobW9kdWxlLCBzdHIsIGVycm9ycywgYnl0ZW9yZGVyKTsKIAogZXhpdDoKQEAgLTEwNDgsOSArMTE0MCwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8zMl9sZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfMzJfbGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9sZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTEwNzYsOSArMTE2OSwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnV0Zl8zMl9iZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejp1dGZfMzJfYmVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3V0Zl8zMl9iZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTExMDQsOSArMTE5OCwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfZXNjYXBlX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OnVuaWNvZGVfZXNjYXBlX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTExMzIsOSArMTIyNywxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnJhd191bmljb2RlX2VzY2FwZV9lbmNvZGUiLAotICAgICAgICAmc3RyLCAmZXJyb3JzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8ejpyYXdfdW5pY29kZV9lc2NhcGVfZW5jb2RlIiwKKyAgICAgICAgJnN0ciwgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3Jhd191bmljb2RlX2VzY2FwZV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTExNjAsOSArMTI1NiwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OmxhdGluXzFfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6bGF0aW5fMV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbGF0aW5fMV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTExODgsOSArMTI4NSwxMCBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OmFzY2lpX2VuY29kZSIsCi0gICAgICAgICZzdHIsICZlcnJvcnMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6OmFzY2lpX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19hc2NpaV9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTEyMTcsOSArMTMxNSwxMCBAQAogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1hcHBpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfHpPOmNoYXJtYXBfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycywgJm1hcHBpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6TzpjaGFybWFwX2VuY29kZSIsCisgICAgICAgICZzdHIsICZlcnJvcnMsICZtYXBwaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY2hhcm1hcF9lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzLCBtYXBwaW5nKTsKIAogZXhpdDoKQEAgLTEyNDMsMTUgKzEzNDIsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbWFwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmNoYXJtYXBfYnVpbGQiLCAmbWFwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Y2hhcm1hcF9idWlsZCIsICZtYXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19jaGFybWFwX2J1aWxkX2ltcGwobW9kdWxlLCBtYXApOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfTUJDUykKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX21iY3NfZW5jb2RlX19kb2NfXywKICJtYmNzX2VuY29kZSgkbW9kdWxlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgpAQCAtMTI3MSwxOCArMTM3MSw1MSBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6Om1iY3NfZW5jb2RlIiwKLSAgICAgICAgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHo6bWJjc19lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfbWJjc19lbmNvZGVfaW1wbChtb2R1bGUsIHN0ciwgZXJyb3JzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX01CQ1MpICovCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX01CQ1MpCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorCitQeURvY19TVFJWQVIoX2NvZGVjc19vZW1fZW5jb2RlX19kb2NfXywKKyJvZW1fZW5jb2RlKCRtb2R1bGUsIHN0ciwgZXJyb3JzPU5vbmUsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYgICAgXAorICAgIHsib2VtX2VuY29kZSIsIChQeUNGdW5jdGlvbilfY29kZWNzX29lbV9lbmNvZGUsIE1FVEhfVkFSQVJHUywgX2NvZGVjc19vZW1fZW5jb2RlX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfY29kZWNzX29lbV9lbmNvZGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyLCBjb25zdCBjaGFyICplcnJvcnMpOworCitzdGF0aWMgUHlPYmplY3QgKgorX2NvZGVjc19vZW1fZW5jb2RlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXx6Om9lbV9lbmNvZGUiLAorICAgICAgICAmc3RyLCAmZXJyb3JzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3Nfb2VtX2VuY29kZV9pbXBsKG1vZHVsZSwgc3RyLCBlcnJvcnMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIFB5RG9jX1NUUlZBUihfY29kZWNzX2NvZGVfcGFnZV9lbmNvZGVfX2RvY19fLAogImNvZGVfcGFnZV9lbmNvZGUoJG1vZHVsZSwgY29kZV9wYWdlLCBzdHIsIGVycm9ycz1Ob25lLCAvKVxuIgpAQCAtMTMwNCwxNiArMTQzNywxNyBAQAogICAgIFB5T2JqZWN0ICpzdHI7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU98ejpjb2RlX3BhZ2VfZW5jb2RlIiwKLSAgICAgICAgJmNvZGVfcGFnZSwgJnN0ciwgJmVycm9ycykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpVXx6OmNvZGVfcGFnZV9lbmNvZGUiLAorICAgICAgICAmY29kZV9wYWdlLCAmc3RyLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9jb2RlY3NfY29kZV9wYWdlX2VuY29kZV9pbXBsKG1vZHVsZSwgY29kZV9wYWdlLCBzdHIsIGVycm9ycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9NQkNTKSAqLworI2VuZGlmIC8qIGRlZmluZWQoTVNfV0lORE9XUykgKi8KIAogUHlEb2NfU1RSVkFSKF9jb2RlY3NfcmVnaXN0ZXJfZXJyb3JfX2RvY19fLAogInJlZ2lzdGVyX2Vycm9yKCRtb2R1bGUsIGVycm9ycywgaGFuZGxlciwgLylcbiIKQEAgLTEzNDAsOCArMTQ3NCw5IEBACiAgICAgUHlPYmplY3QgKmhhbmRsZXI7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPOnJlZ2lzdGVyX2Vycm9yIiwKLSAgICAgICAgJmVycm9ycywgJmhhbmRsZXIpKQorICAgICAgICAmZXJyb3JzLCAmaGFuZGxlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfY29kZWNzX3JlZ2lzdGVyX2Vycm9yX2ltcGwobW9kdWxlLCBlcnJvcnMsIGhhbmRsZXIpOwogCiBleGl0OgpAQCAtMTM2OSw4ICsxNTA0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmxvb2t1cF9lcnJvciIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6bG9va3VwX2Vycm9yIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2NvZGVjc19sb29rdXBfZXJyb3JfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMTM4MSw2ICsxNTE3LDEwIEBACiAgICAgI2RlZmluZSBfQ09ERUNTX01CQ1NfREVDT0RFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfTUJDU19ERUNPREVfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIF9DT0RFQ1NfT0VNX0RFQ09ERV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9DT0RFQ1NfT0VNX0RFQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX09FTV9ERUNPREVfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0RFQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX0NPREVfUEFHRV9ERUNPREVfTUVUSE9EREVGKSAqLwpAQCAtMTM4OSw3ICsxNTI5LDExIEBACiAgICAgI2RlZmluZSBfQ09ERUNTX01CQ1NfRU5DT0RFX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9DT0RFQ1NfTUJDU19FTkNPREVfTUVUSE9EREVGKSAqLwogCisjaWZuZGVmIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9DT0RFQ1NfT0VNX0VOQ09ERV9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX09FTV9FTkNPREVfTUVUSE9EREVGKSAqLworCiAjaWZuZGVmIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9DT0RFQ1NfQ09ERV9QQUdFX0VOQ09ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfQ09ERUNTX0NPREVfUEFHRV9FTkNPREVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQyZmVkOTRlMmFiNzY1YmEgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZkNmFmY2FiZGUxMGVkNzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19jcnlwdG1vZHVsZS5jLmgKaW5kZXggYTNjMzcxYy4uNDEyYzZmZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2NyeXB0bW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fY3J5cHRtb2R1bGUuYy5oCkBAIC0yNywxMSArMjcsMTIgQEAKICAgICBjb25zdCBjaGFyICpzYWx0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzczpjcnlwdCIsCi0gICAgICAgICZ3b3JkLCAmc2FsdCkpCisgICAgICAgICZ3b3JkLCAmc2FsdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjcnlwdF9jcnlwdF9pbXBsKG1vZHVsZSwgd29yZCwgc2FsdCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMDQ5M2E5NjkxNTM3NjkwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04ZGZjODgyNjRlNjYyZGY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19jdXJzZXNtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKaW5kZXggNWUxMTc0Mi4uNjJmZjFjOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2N1cnNlc21vZHVsZS5jLmgKQEAgLTQwLDIyICs0MCwyNiBAQAogCiAgICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzphZGRjaCIsICZjaCkpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86YWRkY2giLCAmY2gpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w6YWRkY2giLCAmY2gsICZhdHRyKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w6YWRkY2giLCAmY2gsICZhdHRyKSkgewogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPOmFkZGNoIiwgJnksICZ4LCAmY2gpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaU86YWRkY2giLCAmeSwgJngsICZjaCkpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPbDphZGRjaCIsICZ5LCAmeCwgJmNoLCAmYXR0cikpCisgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpT2w6YWRkY2giLCAmeSwgJngsICZjaCwgJmF0dHIpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CiAgICAgICAgICAgICBncm91cF9sZWZ0XzEgPSAxOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02OCw0ICs3Miw0IEBACiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTgyYjFlNzA5NTc3ZjNlYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTNmZmM1ZjhkNzljYmZiZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2RhdGV0aW1lbW9kdWxlLmMuaAppbmRleCA2ODhjOTAzLi5kY2I5OTJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fZGF0ZXRpbWVtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19kYXRldGltZW1vZHVsZS5jLmgKQEAgLTE0LDI0ICsxNCwyNiBAQAogIklmIG5vIHR6IGlzIHNwZWNpZmllZCwgdXNlcyBsb2NhbCB0aW1lem9uZS4iKTsKIAogI2RlZmluZSBEQVRFVElNRV9EQVRFVElNRV9OT1dfTUVUSE9EREVGICAgIFwKLSAgICB7Im5vdyIsIChQeUNGdW5jdGlvbilkYXRldGltZV9kYXRldGltZV9ub3csIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfE1FVEhfQ0xBU1MsIGRhdGV0aW1lX2RhdGV0aW1lX25vd19fZG9jX199LAorICAgIHsibm93IiwgKFB5Q0Z1bmN0aW9uKWRhdGV0aW1lX2RhdGV0aW1lX25vdywgTUVUSF9GQVNUQ0FMTHxNRVRIX0NMQVNTLCBkYXRldGltZV9kYXRldGltZV9ub3dfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2RhdGV0aW1lX25vd19pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnR6KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGV0aW1lX2RhdGV0aW1lX25vdyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZGF0ZXRpbWVfZGF0ZXRpbWVfbm93KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHoiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8Tzpub3ciLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0eiA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8Tzpub3ciLCBfa2V5d29yZHMsCi0gICAgICAgICZ0eikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0eikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkYXRldGltZV9kYXRldGltZV9ub3dfaW1wbCh0eXBlLCB0eik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03ZjQ1YzY3MGQ2ZTQ5NTNhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YWFhYzA3MDVhZGQ2MWNhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19kYm1tb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKaW5kZXggNDljYmNlYi4uMDZjZjdlNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2RibW1vZHVsZS5jLmgKQEAgLTYwLDggKzYwLDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMjfE86Z2V0IiwKLSAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmtleSwgJmtleV9sZW5ndGgsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9kYm1fZGJtX2dldF9pbXBsKHNlbGYsIGtleSwga2V5X2xlbmd0aCwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC05Myw4ICs5NCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI3xPOnNldGRlZmF1bHQiLAotICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAma2V5LCAma2V5X2xlbmd0aCwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2RibV9kYm1fc2V0ZGVmYXVsdF9pbXBsKHNlbGYsIGtleSwga2V5X2xlbmd0aCwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzEsMTEgKzEzMywxMiBAQAogICAgIGludCBtb2RlID0gNDM4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzfHNpOm9wZW4iLAotICAgICAgICAmZmlsZW5hbWUsICZmbGFncywgJm1vZGUpKQorICAgICAgICAmZmlsZW5hbWUsICZmbGFncywgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZGJtb3Blbl9pbXBsKG1vZHVsZSwgZmlsZW5hbWUsIGZsYWdzLCBtb2RlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZmZjEyZjE2OGNkZjhiNDMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk5YWRmOTY2ZWYwNDc1ZmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaCBiL01vZHVsZXMvY2xpbmljL19lbGVtZW50dHJlZS5jLmgKaW5kZXggODZiNGM0Yy4uMWIzMDljZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX2VsZW1lbnR0cmVlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fZWxlbWVudHRyZWUuYy5oCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOmFwcGVuZCIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOmFwcGVuZCIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2FwcGVuZF9pbXBsKHNlbGYsIHN1YmVsZW1lbnQpOwogCiBleGl0OgpAQCAtODcsOCArODgsOSBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9fX3NpemVvZl9fX2ltcGwoc2VsZik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTEzNCwyMyArMTM2LDI1IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kX19kb2NfX30sCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmQsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOmZpbmQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98TzpmaW5kIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCwgJm5hbWVzcGFjZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMTYzLDcgKzE2Nyw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfRUxFTUVOVFRSRUVfRUxFTUVOVF9GSU5EVEVYVF9NRVRIT0RERUYgICAgXAotICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9fZG9jX199LAorICAgIHsiZmluZHRleHQiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQsIE1FVEhfRkFTVENBTEwsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmR0ZXh0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLApAQCAtMTcxLDE3ICsxNzUsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkZWZhdWx0IiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRlZmF1bHQiLCAibmFtZXNwYWNlcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98T086ZmluZHRleHQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpwYXRoOwogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE9POmZpbmR0ZXh0IiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCwgJmRlZmF1bHRfdmFsdWUsICZuYW1lc3BhY2VzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBhdGgsICZkZWZhdWx0X3ZhbHVlLCAmbmFtZXNwYWNlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kdGV4dF9pbXBsKHNlbGYsIHBhdGgsIGRlZmF1bHRfdmFsdWUsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMTk0LDIzICsyMDAsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0ZJTkRBTExfTUVUSE9EREVGICAgIFwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGxfX2RvY19ffSwKKyAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfZmluZGFsbF9pbXBsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9lbGVtZW50dHJlZV9FbGVtZW50X2ZpbmRhbGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE86ZmluZGFsbCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPOmZpbmRhbGwiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9maW5kYWxsX2ltcGwoc2VsZiwgcGF0aCwgbmFtZXNwYWNlcyk7CiAKIGV4aXQ6CkBAIC0yMjMsMjMgKzIzMSwyNSBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUkZJTkRfTUVUSE9EREVGICAgIFwKLSAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfX2RvY19ffSwKKyAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2l0ZXJmaW5kLCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWVzcGFjZXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcmZpbmQoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOml0ZXJmaW5kIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKICAgICBQeU9iamVjdCAqbmFtZXNwYWNlcyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86aXRlcmZpbmQiLCBfa2V5d29yZHMsCi0gICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoLCAmbmFtZXNwYWNlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyZmluZF9pbXBsKHNlbGYsIHBhdGgsIG5hbWVzcGFjZXMpOwogCiBleGl0OgpAQCAtMjUyLDIzICsyNjIsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9FTEVNRU5UVFJFRV9FTEVNRU5UX0dFVF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2dldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9fZG9jX199LAorICAgIHsiZ2V0IiwgKFB5Q0Z1bmN0aW9uKV9lbGVtZW50dHJlZV9FbGVtZW50X2dldCwgTUVUSF9GQVNUQ0FMTCwgX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9nZXRfaW1wbChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfZ2V0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZXkiLCAiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOmdldCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmtleTsKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE86Z2V0IiwgX2tleXdvcmRzLAotICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X2dldF9pbXBsKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yOTgsMjEgKzMxMCwyMyBAQAogIlxuIik7CiAKICNkZWZpbmUgX0VMRU1FTlRUUkVFX0VMRU1FTlRfSVRFUl9NRVRIT0RERUYgICAgXAotICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcl9fZG9jX199LAorICAgIHsiaXRlciIsIChQeUNGdW5jdGlvbilfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyLCBNRVRIX0ZBU1RDQUxMLCBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoRWxlbWVudE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX2VsZW1lbnR0cmVlX0VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsidGFnIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidGFnIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86aXRlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhZyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzppdGVyIiwgX2tleXdvcmRzLAotICAgICAgICAmdGFnKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnRhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfZWxlbWVudHRyZWVfRWxlbWVudF9pdGVyX2ltcGwoc2VsZiwgdGFnKTsKIAogZXhpdDoKQEAgLTM1Niw4ICszNzAsOSBAQAogICAgIFB5T2JqZWN0ICpzdWJlbGVtZW50OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuTyE6aW5zZXJ0IiwKLSAgICAgICAgJmluZGV4LCAmRWxlbWVudF9UeXBlLCAmc3ViZWxlbWVudCkpCisgICAgICAgICZpbmRleCwgJkVsZW1lbnRfVHlwZSwgJnN1YmVsZW1lbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIHN1YmVsZW1lbnQpOwogCiBleGl0OgpAQCAtNDE5LDggKzQzNCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJtYWtlZWxlbWVudCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZ0YWcsICZhdHRyaWIpKQorICAgICAgICAmdGFnLCAmYXR0cmliKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X21ha2VlbGVtZW50X2ltcGwoc2VsZiwgdGFnLCBhdHRyaWIpOwogCiBleGl0OgpAQCAtNDQ0LDggKzQ2MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnN1YmVsZW1lbnQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOnJlbW92ZSIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8hOnJlbW92ZSIsICZFbGVtZW50X1R5cGUsICZzdWJlbGVtZW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9FbGVtZW50X3JlbW92ZV9pbXBsKHNlbGYsIHN1YmVsZW1lbnQpOwogCiBleGl0OgpAQCAtNDczLDggKzQ5MCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXQiLAogICAgICAgICAyLCAyLAotICAgICAgICAma2V5LCAmdmFsdWUpKQorICAgICAgICAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX0VsZW1lbnRfc2V0X2ltcGwoc2VsZiwga2V5LCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00ODksMTIgKzUwNywxNCBAQAogX2VsZW1lbnR0cmVlX1RyZWVCdWlsZGVyX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbGVtZW50X2ZhY3RvcnkiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbGVtZW50X2ZhY3RvcnkiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpUcmVlQnVpbGRlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmVsZW1lbnRfZmFjdG9yeSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpUcmVlQnVpbGRlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmVsZW1lbnRfZmFjdG9yeSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9fX2luaXRfX19pbXBsKChUcmVlQnVpbGRlck9iamVjdCAqKXNlbGYsIGVsZW1lbnRfZmFjdG9yeSk7CiAKIGV4aXQ6CkBAIC01NTUsOCArNTc1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0YXJ0IiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJnRhZywgJmF0dHJzKSkKKyAgICAgICAgJnRhZywgJmF0dHJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9UcmVlQnVpbGRlcl9zdGFydF9pbXBsKHNlbGYsIHRhZywgYXR0cnMpOwogCiBleGl0OgpAQCAtNTcxLDE0ICs1OTIsMTYgQEAKIF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaHRtbCIsICJ0YXJnZXQiLCAiZW5jb2RpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T096OlhNTFBhcnNlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmh0bWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp0YXJnZXQgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPT3o6WE1MUGFyc2VyIiwgX2tleXdvcmRzLAotICAgICAgICAmaHRtbCwgJnRhcmdldCwgJmVuY29kaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZodG1sLCAmdGFyZ2V0LCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2VsZW1lbnR0cmVlX1hNTFBhcnNlcl9fX2luaXRfX19pbXBsKChYTUxQYXJzZXJPYmplY3QgKilzZWxmLCBodG1sLCB0YXJnZXQsIGVuY29kaW5nKTsKIAogZXhpdDoKQEAgLTY0MCw4ICs2NjMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZG9jdHlwZSIsCiAgICAgICAgIDMsIDMsCi0gICAgICAgICZuYW1lLCAmcHViaWQsICZzeXN0ZW0pKQorICAgICAgICAmbmFtZSwgJnB1YmlkLCAmc3lzdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfZG9jdHlwZV9pbXBsKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOwogCiBleGl0OgpAQCAtNjY4LDEyICs2OTIsMTQgQEAKICAgICBQeU9iamVjdCAqZXZlbnRzX3F1ZXVlOwogICAgIFB5T2JqZWN0ICpldmVudHNfdG9fcmVwb3J0ID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8Tzpfc2V0ZXZlbnRzIiwKLSAgICAgICAgJlB5TGlzdF9UeXBlLCAmZXZlbnRzX3F1ZXVlLCAmZXZlbnRzX3RvX3JlcG9ydCkpCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiX3NldGV2ZW50cyIsCisgICAgICAgIDEsIDIsCisgICAgICAgICZldmVudHNfcXVldWUsICZldmVudHNfdG9fcmVwb3J0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9lbGVtZW50dHJlZV9YTUxQYXJzZXJfX3NldGV2ZW50c19pbXBsKHNlbGYsIGV2ZW50c19xdWV1ZSwgZXZlbnRzX3RvX3JlcG9ydCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yNWI4YmY3ZTdmMjE1MWNhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNGE1NzFhOThjZWQzMTYzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL19nZGJtbW9kdWxlLmMuaAppbmRleCAyZDg3Y2ZjLi5mZGQ1ODljIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fZ2RibW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX2dkYm1tb2R1bGUuYy5oCkBAIC0yMyw4ICsyMyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLAogICAgICAgICAxLCAyLAotICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9nZGJtX2dkYm1fZ2V0X2ltcGwoc2VsZiwga2V5LCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUzLDggKzU0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGRlZmF1bHQiLAogICAgICAgICAxLCAyLAotICAgICAgICAma2V5LCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZrZXksICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9nZGJtX2dkYm1fc2V0ZGVmYXVsdF9pbXBsKHNlbGYsIGtleSwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xNDcsOCArMTQ5LDkgQEAKICAgICBjb25zdCBjaGFyICprZXk7CiAgICAgUHlfc3NpemVfY2xlYW5fdCBrZXlfbGVuZ3RoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzIzpuZXh0a2V5IiwgJmtleSwgJmtleV9sZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bmV4dGtleSIsICZrZXksICZrZXlfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9nZGJtX2dkYm1fbmV4dGtleV9pbXBsKHNlbGYsIGtleSwga2V5X2xlbmd0aCk7CiAKIGV4aXQ6CkBAIC0yNDIsMTEgKzI0NSwxMiBAQAogICAgIGludCBtb2RlID0gNDM4OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzfHNpOm9wZW4iLAotICAgICAgICAmbmFtZSwgJmZsYWdzLCAmbW9kZSkpCisgICAgICAgICZuYW1lLCAmZmxhZ3MsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGRibW9wZW5faW1wbChtb2R1bGUsIG5hbWUsIGZsYWdzLCBtb2RlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTlhYzdhODk4NThhOTc2NWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVkMGY1ZDRlM2Q3OWI4MGMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2hhc2hvcGVuc3NsLmMuaCBiL01vZHVsZXMvY2xpbmljL19oYXNob3BlbnNzbC5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ0NTM1MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvY2xpbmljL19oYXNob3BlbnNzbC5jLmgKQEAgLTAsMCArMSw2MCBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIChPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID4gMHgxMDEwMDAwMEwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TQ1JZUFQpICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKSkKKworUHlEb2NfU1RSVkFSKF9oYXNobGliX3NjcnlwdF9fZG9jX18sCisic2NyeXB0KCRtb2R1bGUsIC8sIHBhc3N3b3JkLCAqLCBzYWx0PU5vbmUsIG49Tm9uZSwgcj1Ob25lLCBwPU5vbmUsXG4iCisiICAgICAgIG1heG1lbT0wLCBka2xlbj02NClcbiIKKyItLVxuIgorIlxuIgorInNjcnlwdCBwYXNzd29yZC1iYXNlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbi4iKTsKKworI2RlZmluZSBfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGICAgIFwKKyAgICB7InNjcnlwdCIsIChQeUNGdW5jdGlvbilfaGFzaGxpYl9zY3J5cHQsIE1FVEhfRkFTVENBTEwsIF9oYXNobGliX3NjcnlwdF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX2hhc2hsaWJfc2NyeXB0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpwYXNzd29yZCwgUHlfYnVmZmVyICpzYWx0LAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5fb2JqLCBQeU9iamVjdCAqcl9vYmosIFB5T2JqZWN0ICpwX29iaiwKKyAgICAgICAgICAgICAgICAgICAgIGxvbmcgbWF4bWVtLCBsb25nIGRrbGVuKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19oYXNobGliX3NjcnlwdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhc3N3b3JkIiwgInNhbHQiLCAibiIsICJyIiwgInAiLCAibWF4bWVtIiwgImRrbGVuIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8JHkqTyFPIU8hbGw6c2NyeXB0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeV9idWZmZXIgcGFzc3dvcmQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIHNhbHQgPSB7TlVMTCwgTlVMTH07CisgICAgUHlPYmplY3QgKm5fb2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqcl9vYmogPSBQeV9Ob25lOworICAgIFB5T2JqZWN0ICpwX29iaiA9IFB5X05vbmU7CisgICAgbG9uZyBtYXhtZW0gPSAwOworICAgIGxvbmcgZGtsZW4gPSA2NDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGFzc3dvcmQsICZzYWx0LCAmUHlMb25nX1R5cGUsICZuX29iaiwgJlB5TG9uZ19UeXBlLCAmcl9vYmosICZQeUxvbmdfVHlwZSwgJnBfb2JqLCAmbWF4bWVtLCAmZGtsZW4pKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gX2hhc2hsaWJfc2NyeXB0X2ltcGwobW9kdWxlLCAmcGFzc3dvcmQsICZzYWx0LCBuX29iaiwgcl9vYmosIHBfb2JqLCBtYXhtZW0sIGRrbGVuKTsKKworZXhpdDoKKyAgICAvKiBDbGVhbnVwIGZvciBwYXNzd29yZCAqLworICAgIGlmIChwYXNzd29yZC5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYXNzd29yZCk7CisgICAgfQorICAgIC8qIENsZWFudXAgZm9yIHNhbHQgKi8KKyAgICBpZiAoc2FsdC5vYmopIHsKKyAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzYWx0KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPiAweDEwMTAwMDAwTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1NDUllQVCkgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpKSAqLworCisjaWZuZGVmIF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9IQVNITElCX1NDUllQVF9NRVRIT0RERUYKKyNlbmRpZiAvKiAhZGVmaW5lZChfSEFTSExJQl9TQ1JZUFRfTUVUSE9EREVGKSAqLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTExOGNkNzAzNmZhMGZiNTIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX2x6bWFtb2R1bGUuYy5oCmluZGV4IGY4ZDM4ZWEuLjllNjA3NTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19sem1hbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fbHptYW1vZHVsZS5jLmgKQEAgLTI1LDE0ICsyNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQUNvbXByZXNzb3JfY29tcHJlc3NfaW1wbChzZWxmLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzksMjkgKzgxLDMyIEBACiAidGhlIHVudXNlZF9kYXRhIGF0dHJpYnV0ZS4iKTsKIAogI2RlZmluZSBfTFpNQV9MWk1BREVDT01QUkVTU09SX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKV9sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3NfaW1wbChEZWNvbXByZXNzb3IgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fbHptYV9MWk1BRGVjb21wcmVzc29yX2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19sem1hX0xaTUFEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm1heF9sZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJkYXRhIiwgIm1heF9sZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxuOmRlY29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8bjpkZWNvbXByZXNzIiwgX2tleXdvcmRzLAotICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJm1heF9sZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2x6bWFfTFpNQURlY29tcHJlc3Nvcl9kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEzNywxNCArMTQyLDE2IEBACiBfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlID0gLTE7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmb3JtYXQiLCAibWVtbGltaXQiLCAiZmlsdGVycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZvcm1hdCIsICJtZW1saW1pdCIsICJmaWx0ZXJzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGlPTzpMWk1BRGVjb21wcmVzc29yIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZm9ybWF0ID0gRk9STUFUX0FVVE87CiAgICAgUHlPYmplY3QgKm1lbWxpbWl0ID0gUHlfTm9uZTsKICAgICBQeU9iamVjdCAqZmlsdGVycyA9IFB5X05vbmU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU9POkxaTUFEZWNvbXByZXNzb3IiLCBfa2V5d29yZHMsCi0gICAgICAgICZmb3JtYXQsICZtZW1saW1pdCwgJmZpbHRlcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoYXJncywga3dhcmdzLCAmX3BhcnNlciwKKyAgICAgICAgJmZvcm1hdCwgJm1lbWxpbWl0LCAmZmlsdGVycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9MWk1BRGVjb21wcmVzc29yX19faW5pdF9fX2ltcGwoKERlY29tcHJlc3NvciAqKXNlbGYsIGZvcm1hdCwgbWVtbGltaXQsIGZpbHRlcnMpOwogCiBleGl0OgpAQCAtMTcxLDggKzE3OCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNoZWNrX2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzX2NoZWNrX3N1cHBvcnRlZCIsICZjaGVja19pZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzX2NoZWNrX3N1cHBvcnRlZCIsICZjaGVja19pZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9pc19jaGVja19zdXBwb3J0ZWRfaW1wbChtb2R1bGUsIGNoZWNrX2lkKTsKIAogZXhpdDoKQEAgLTE5OSw4ICsyMDcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGx6bWFfZmlsdGVyIGZpbHRlciA9IHtMWk1BX1ZMSV9VTktOT1dOLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIGx6bWFfZmlsdGVyX2NvbnZlcnRlciwgJmZpbHRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzIiwgbHptYV9maWx0ZXJfY29udmVydGVyLCAmZmlsdGVyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9sem1hX19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfaW1wbChtb2R1bGUsIGZpbHRlcik7CiAKIGV4aXQ6CkBAIC0yMzQsMTUgKzI0MywxNyBAQAogICAgIFB5X2J1ZmZlciBlbmNvZGVkX3Byb3BzID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnkqOl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLAotICAgICAgICBsem1hX3ZsaV9jb252ZXJ0ZXIsICZmaWx0ZXJfaWQsICZlbmNvZGVkX3Byb3BzKSkKKyAgICAgICAgbHptYV92bGlfY29udmVydGVyLCAmZmlsdGVyX2lkLCAmZW5jb2RlZF9wcm9wcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfbHptYV9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2ltcGwobW9kdWxlLCBmaWx0ZXJfaWQsICZlbmNvZGVkX3Byb3BzKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBlbmNvZGVkX3Byb3BzICovCi0gICAgaWYgKGVuY29kZWRfcHJvcHMub2JqKQorICAgIGlmIChlbmNvZGVkX3Byb3BzLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmVuY29kZWRfcHJvcHMpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmFkYTA2MDIwZmQzMThjYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjI3YWJhZTQ2MDEyMjcwNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fb3Bjb2RlLmMuaCBiL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCmluZGV4IGE1ZjY0NDIuLjUxM2NiZmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL19vcGNvZGUuYy5oCkBAIC0yMywxNCArMjMsMTYgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXxPOnN0YWNrX2VmZmVjdCIsCi0gICAgICAgICZvcGNvZGUsICZvcGFyZykpCisgICAgICAgICZvcGNvZGUsICZvcGFyZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX29wY29kZV9zdGFja19lZmZlY3RfaW1wbChtb2R1bGUsIG9wY29kZSwgb3BhcmcpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODRkNmRlMTQwMzAzZDEwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00ZDkxYzZhNzY1MDk3ODUzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL19waWNrbGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmgKaW5kZXggYmQxMmQyYS4uOWFkNGMzNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3BpY2tsZS5jLmgKQEAgLTUzLDggKzUzLDkgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9QaWNrbGVyX19fc2l6ZW9mX19faW1wbChzZWxmKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtOTIsMTQgKzkzLDE2IEBACiBfcGlja2xlX1BpY2tsZXJfX19pbml0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIGludCByZXR1cm5fdmFsdWUgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZpbGUiLCAicHJvdG9jb2wiLCAiZml4X2ltcG9ydHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPcDpQaWNrbGVyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBQeU9iamVjdCAqcHJvdG9jb2wgPSBOVUxMOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPfE9wOlBpY2tsZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9QaWNrbGVyX19faW5pdF9fX2ltcGwoKFBpY2tsZXJPYmplY3QgKilzZWxmLCBmaWxlLCBwcm90b2NvbCwgZml4X2ltcG9ydHMpOwogCiBleGl0OgpAQCAtMjEyLDggKzIxNSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJmaW5kX2NsYXNzIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm1vZHVsZV9uYW1lLCAmZ2xvYmFsX25hbWUpKQorICAgICAgICAmbW9kdWxlX25hbWUsICZnbG9iYWxfbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX1VucGlja2xlcl9maW5kX2NsYXNzX2ltcGwoc2VsZiwgbW9kdWxlX25hbWUsIGdsb2JhbF9uYW1lKTsKIAogZXhpdDoKQEAgLTIzOSw4ICsyNDMsOSBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfcGlja2xlX1VucGlja2xlcl9fX3NpemVvZl9fX2ltcGwoc2VsZik7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI4MSwxNSArMjg2LDE3IEBACiBfcGlja2xlX1VucGlja2xlcl9fX2luaXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgaW50IHJldHVybl92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmlsZSIsICJmaXhfaW1wb3J0cyIsICJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmaWxlIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98JHBzczpVbnBpY2tsZXIiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3wkcHNzOlVucGlja2xlciIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZpbGUsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX1VucGlja2xlcl9fX2luaXRfX19pbXBsKChVbnBpY2tsZXJPYmplY3QgKilzZWxmLCBmaWxlLCBmaXhfaW1wb3J0cywgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC0zNzcsMjUgKzM4NCwyNyBAQAogIjIsIHNvIHRoYXQgdGhlIHBpY2tsZSBkYXRhIHN0cmVhbSBpcyByZWFkYWJsZSB3aXRoIFB5dGhvbiAyLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfRFVNUF9NRVRIT0RERUYgICAgXAotICAgIHsiZHVtcCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2R1bXBfX2RvY19ffSwKKyAgICB7ImR1bXAiLCAoUHlDRnVuY3Rpb24pX3BpY2tsZV9kdW1wLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2R1bXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9waWNrbGVfZHVtcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICpmaWxlLAogICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnByb3RvY29sLCBpbnQgZml4X2ltcG9ydHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9kdW1wKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9kdW1wKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJvYmoiLCAiZmlsZSIsICJwcm90b2NvbCIsICJmaXhfaW1wb3J0cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im9iaiIsICJmaWxlIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlPYmplY3QgKmZpbGU7CiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098TyRwOmR1bXAiLCBfa2V5d29yZHMsCi0gICAgICAgICZvYmosICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvYmosICZmaWxlLCAmcHJvdG9jb2wsICZmaXhfaW1wb3J0cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2R1bXBfaW1wbChtb2R1bGUsIG9iaiwgZmlsZSwgcHJvdG9jb2wsIGZpeF9pbXBvcnRzKTsKIAogZXhpdDoKQEAgLTQyMSwyNCArNDMwLDI2IEBACiAiUHl0aG9uIDIsIHNvIHRoYXQgdGhlIHBpY2tsZSBkYXRhIHN0cmVhbSBpcyByZWFkYWJsZSB3aXRoIFB5dGhvbiAyLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfRFVNUFNfTUVUSE9EREVGICAgIFwKLSAgICB7ImR1bXBzIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfZHVtcHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2R1bXBzX19kb2NfX30sCisgICAgeyJkdW1wcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2R1bXBzLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2R1bXBzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2R1bXBzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnByb3RvY29sLAogICAgICAgICAgICAgICAgICAgIGludCBmaXhfaW1wb3J0cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fcGlja2xlX2R1bXBzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9kdW1wcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsib2JqIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsib2JqIiwgInByb3RvY29sIiwgImZpeF9pbXBvcnRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpvYmo7CiAgICAgUHlPYmplY3QgKnByb3RvY29sID0gTlVMTDsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPJHA6ZHVtcHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZvYmosICZwcm90b2NvbCwgJmZpeF9pbXBvcnRzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJm9iaiwgJnByb3RvY29sLCAmZml4X2ltcG9ydHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3BpY2tsZV9kdW1wc19pbXBsKG1vZHVsZSwgb2JqLCBwcm90b2NvbCwgZml4X2ltcG9ydHMpOwogCiBleGl0OgpAQCAtNDc1LDI1ICs0ODYsMjcgQEAKICJzdHJpbmcgaW5zdGFuY2VzIGFzIGJ5dGVzIG9iamVjdHMuIik7CiAKICNkZWZpbmUgX1BJQ0tMRV9MT0FEX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfbG9hZCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9waWNrbGVfbG9hZF9fZG9jX199LAorICAgIHsibG9hZCIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWQsIE1FVEhfRkFTVENBTEwsIF9waWNrbGVfbG9hZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3BpY2tsZV9sb2FkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsIGludCBmaXhfaW1wb3J0cywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3BpY2tsZV9sb2FkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3BpY2tsZV9sb2FkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmaWxlIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpmaWxlOwogICAgIGludCBmaXhfaW1wb3J0cyA9IDE7CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSAiQVNDSUkiOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9ICJzdHJpY3QiOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3wkcHNzOmxvYWQiLCBfa2V5d29yZHMsCi0gICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmZml4X2ltcG9ydHMsICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfcGlja2xlX2xvYWRfaW1wbChtb2R1bGUsIGZpbGUsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTUyMSwyOCArNTM0LDMwIEBACiAic3RyaW5nIGluc3RhbmNlcyBhcyBieXRlcyBvYmplY3RzLiIpOwogCiAjZGVmaW5lIF9QSUNLTEVfTE9BRFNfTUVUSE9EREVGICAgIFwKLSAgICB7ImxvYWRzIiwgKFB5Q0Z1bmN0aW9uKV9waWNrbGVfbG9hZHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfcGlja2xlX2xvYWRzX19kb2NfX30sCisgICAgeyJsb2FkcyIsIChQeUNGdW5jdGlvbilfcGlja2xlX2xvYWRzLCBNRVRIX0ZBU1RDQUxMLCBfcGlja2xlX2xvYWRzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfcGlja2xlX2xvYWRzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmRhdGEsIGludCBmaXhfaW1wb3J0cywKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9waWNrbGVfbG9hZHMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfcGlja2xlX2xvYWRzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImZpeF9pbXBvcnRzIiwgImVuY29kaW5nIiwgImVycm9ycyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAiZml4X2ltcG9ydHMiLCAiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3wkcHNzOmxvYWRzIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqZGF0YTsKICAgICBpbnQgZml4X2ltcG9ydHMgPSAxOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gIkFTQ0lJIjsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSAic3RyaWN0IjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98JHBzczpsb2FkcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZmaXhfaW1wb3J0cywgJmVuY29kaW5nLCAmZXJyb3JzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9waWNrbGVfbG9hZHNfaW1wbChtb2R1bGUsIGRhdGEsIGZpeF9pbXBvcnRzLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkzNjU3ZTU1ZDZhNzQ4YWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTgyYmUxMzdiM2MwOWNiOWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3NyZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fc3JlLmMuaAppbmRleCAzMjgxNzE3Li4wNjEyMDA1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fc3JlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fc3JlLmMuaApAQCAtMjAsOCArMjAsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0Y29kZXNpemVfaW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00OCwxMSArNDksMTMgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Z2V0bG93ZXIiLAotICAgICAgICAmY2hhcmFjdGVyLCAmZmxhZ3MpKQorICAgICAgICAmY2hhcmFjdGVyLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfZ2V0bG93ZXJfaW1wbChtb2R1bGUsIGNoYXJhY3RlciwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02Niw3ICs2OSw3IEBACiAiTWF0Y2hlcyB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9NQVRDSF9NRVRIT0RERUYgICAgXAotICAgIHsibWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9tYXRjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfX2RvY19ffSwKKyAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fbWF0Y2gsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fbWF0Y2hfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLApAQCAtNzQsMTggKzc3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnBhdHRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9tYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fbWF0Y2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9ubiRPOm1hdGNoIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKICAgICBQeU9iamVjdCAqcGF0dGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T25uJE86bWF0Y2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9tYXRjaF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHBhdHRlcm4pOwogCiBleGl0OgpAQCAtMTAwLDcgKzEwNSw3IEBACiAiTWF0Y2hlcyBhZ2FpbnN0IGFsbCBvZiB0aGUgc3RyaW5nIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9GVUxMTUFUQ0hfTUVUSE9EREVGICAgIFwKLSAgICB7ImZ1bGxtYXRjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX19kb2NfX30sCisgICAgeyJmdWxsbWF0Y2giLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2gsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCkBAIC0xMDgsMTggKzExMywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGF0dGVybik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX2Z1bGxtYXRjaChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fZnVsbG1hdGNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAicGF0dGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbm4kTzpmdWxsbWF0Y2giLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpwYXR0ZXJuID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbm4kTzpmdWxsbWF0Y2giLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZwYXR0ZXJuKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9mdWxsbWF0Y2hfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zLCBwYXR0ZXJuKTsKIAogZXhpdDoKQEAgLTEzNiw3ICsxNDMsNyBAQAogIlJldHVybiBOb25lIGlmIG5vIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcgbWF0Y2hlcy4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NFQVJDSF9NRVRIT0RERUYgICAgXAotICAgIHsic2VhcmNoIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfX2RvY19ffSwKKyAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zZWFyY2hfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKQEAgLTE0NCwxOCArMTUxLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXR0ZXJuKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc2VhcmNoKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zZWFyY2goUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgInBhdHRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsICJwYXR0ZXJuIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9ubiRPOnNlYXJjaCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBwb3MgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kcG9zID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnBhdHRlcm4gPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOnNlYXJjaCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcywgJnBhdHRlcm4pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmcGF0dGVybikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3NlYXJjaF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHBhdHRlcm4pOwogCiBleGl0OgpAQCAtMTcwLDcgKzE3OSw3IEBACiAiUmV0dXJuIGEgbGlzdCBvZiBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgb2YgcGF0dGVybiBpbiBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfUEFUVEVSTl9GSU5EQUxMX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9fZG9jX199LAorICAgIHsiZmluZGFsbCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9maW5kYWxsX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN0cmluZywKQEAgLTE3OCwxOCArMTg3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc291cmNlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fZmluZGFsbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAic291cmNlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCAic291cmNlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9ubiRPOmZpbmRhbGwiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZHBvcyA9IFBZX1NTSVpFX1RfTUFYOwogICAgIFB5T2JqZWN0ICpzb3VyY2UgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9ubiRPOmZpbmRhbGwiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MsICZzb3VyY2UpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zLCAmc291cmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZmluZGFsbF9pbXBsKHNlbGYsIHN0cmluZywgcG9zLCBlbmRwb3MsIHNvdXJjZSk7CiAKIGV4aXQ6CkBAIC0yMDUsMjQgKzIxNiwyNiBAQAogIkZvciBlYWNoIG1hdGNoLCB0aGUgaXRlcmF0b3IgcmV0dXJucyBhIG1hdGNoIG9iamVjdC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX0ZJTkRJVEVSX01FVEhPRERFRiAgICBcCi0gICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX199LAorICAgIHsiZmluZGl0ZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlciwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9maW5kaXRlcl9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJwb3MiLCAiZW5kcG9zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xubjpmaW5kaXRlciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bm46ZmluZGl0ZXIiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nLCAmcG9zLCAmZW5kcG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fZmluZGl0ZXJfaW1wbChzZWxmLCBzdHJpbmcsIHBvcywgZW5kcG9zKTsKIAogZXhpdDoKQEAgLTIzNSwyNCArMjQ4LDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NDQU5ORVJfTUVUSE9EREVGICAgIFwKLSAgICB7InNjYW5uZXIiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX19kb2NfX30sCisgICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lciwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3NjYW5uZXJfaW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBwb3MsIFB5X3NzaXplX3QgZW5kcG9zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX1BhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCAicG9zIiwgImVuZHBvcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98bm46c2Nhbm5lciIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmRwb3MgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk98bm46c2Nhbm5lciIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJnBvcywgJmVuZHBvcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcsICZwb3MsICZlbmRwb3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfUGF0dGVybl9zY2FubmVyX2ltcGwoc2VsZiwgc3RyaW5nLCBwb3MsIGVuZHBvcyk7CiAKIGV4aXQ6CkBAIC0yNjYsMjQgKzI4MSwyNiBAQAogIlNwbGl0IHN0cmluZyBieSB0aGUgb2NjdXJyZW5jZXMgb2YgcGF0dGVybi4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zcGxpdCwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfUGF0dGVybl9zcGxpdF9pbXBsKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCwgUHlPYmplY3QgKnNvdXJjZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9QYXR0ZXJuX3NwbGl0KFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zcGxpdChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgIm1heHNwbGl0IiwgInNvdXJjZSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsICJtYXhzcGxpdCIsICJzb3VyY2UiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T24kTzpzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IDA7CiAgICAgUHlPYmplY3QgKnNvdXJjZSA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T24kTzpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZywgJm1heHNwbGl0LCAmc291cmNlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZywgJm1heHNwbGl0LCAmc291cmNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3BsaXRfaW1wbChzZWxmLCBzdHJpbmcsIG1heHNwbGl0LCBzb3VyY2UpOwogCiBleGl0OgpAQCAtMjk3LDI0ICszMTQsMjYgQEAKICJSZXR1cm4gdGhlIHN0cmluZyBvYnRhaW5lZCBieSByZXBsYWNpbmcgdGhlIGxlZnRtb3N0IG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBwYXR0ZXJuIGluIHN0cmluZyBieSB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQl9NRVRIT0RERUYgICAgXAotICAgIHsic3ViIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3ViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJfX2RvY19ffSwKKyAgICB7InN1YiIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX3N1YiwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zdWJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnJlcGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zdWIoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX3N1YihQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicmVwbCIsICJzdHJpbmciLCAiY291bnQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PfG46c3ViIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmVwbDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098bjpzdWIiLCBfa2V5d29yZHMsCi0gICAgICAgICZyZXBsLCAmc3RyaW5nLCAmY291bnQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX1BhdHRlcm5fc3ViX2ltcGwoc2VsZiwgcmVwbCwgc3RyaW5nLCBjb3VudCk7CiAKIGV4aXQ6CkBAIC0zMjgsMjQgKzM0NywyNiBAQAogIlJldHVybiB0aGUgdHVwbGUgKG5ld19zdHJpbmcsIG51bWJlcl9vZl9zdWJzX21hZGUpIGZvdW5kIGJ5IHJlcGxhY2luZyB0aGUgbGVmdG1vc3Qgbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gd2l0aCB0aGUgcmVwbGFjZW1lbnQgcmVwbC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX1NVQk5fTUVUSE9EREVGICAgIFwKLSAgICB7InN1Ym4iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfUGF0dGVybl9zdWJuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9zdWJuX19kb2NfX30sCisgICAgeyJzdWJuIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fc3VibiwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9zdWJuX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5faW1wbChQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqcmVwbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHJpbmcsIFB5X3NzaXplX3QgY291bnQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfUGF0dGVybl9zdWJuKFBhdHRlcm5PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJyZXBsIiwgInN0cmluZyIsICJjb3VudCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InJlcGwiLCAic3RyaW5nIiwgImNvdW50IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT098bjpzdWJuIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcmVwbDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098bjpzdWJuIiwgX2tleXdvcmRzLAotICAgICAgICAmcmVwbCwgJnN0cmluZywgJmNvdW50KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnJlcGwsICZzdHJpbmcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX3N1Ym5faW1wbChzZWxmLCByZXBsLCBzdHJpbmcsIGNvdW50KTsKIAogZXhpdDoKQEAgLTM3NSwyMSArMzk2LDIzIEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9QQVRURVJOX19fREVFUENPUFlfX19NRVRIT0RERUYgICAgXAotICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19fX2RvY19ffSwKKyAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXywgTUVUSF9GQVNUQ0FMTCwgX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X19fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX1BhdHRlcm5fX19kZWVwY29weV9fX2ltcGwoUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1lbW8pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfUGF0dGVybl9fX2RlZXBjb3B5X18oUGF0dGVybk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfXyhQYXR0ZXJuT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm1lbW87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm1lbW8pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbWVtbykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9QYXR0ZXJuX19fZGVlcGNvcHlfX19pbXBsKHNlbGYsIG1lbW8pOwogCiBleGl0OgpAQCAtNDAzLDcgKzQyNiw3IEBACiAiXG4iKTsKIAogI2RlZmluZSBfU1JFX0NPTVBJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pX3NyZV9jb21waWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9jb21waWxlX19kb2NfX30sCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKV9zcmVfY29tcGlsZSwgTUVUSF9GQVNUQ0FMTCwgX3NyZV9jb21waWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3JlX2NvbXBpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqcGF0dGVybiwgaW50IGZsYWdzLApAQCAtNDExLDEwICs0MzQsMTEgQEAKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbmRleGdyb3VwKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0dGVybiIsICJmbGFncyIsICJjb2RlIiwgImdyb3VwcyIsICJncm91cGluZGV4IiwgImluZGV4Z3JvdXAiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXR0ZXJuIiwgImZsYWdzIiwgImNvZGUiLCAiZ3JvdXBzIiwgImdyb3VwaW5kZXgiLCAiaW5kZXhncm91cCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9pTyFuT086Y29tcGlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnBhdHRlcm47CiAgICAgaW50IGZsYWdzOwogICAgIFB5T2JqZWN0ICpjb2RlOwpAQCAtNDIyLDkgKzQ0NiwxMCBAQAogICAgIFB5T2JqZWN0ICpncm91cGluZGV4OwogICAgIFB5T2JqZWN0ICppbmRleGdyb3VwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT2lPIW5PTzpjb21waWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0dGVybiwgJmZsYWdzLCAmUHlMaXN0X1R5cGUsICZjb2RlLCAmZ3JvdXBzLCAmZ3JvdXBpbmRleCwgJmluZGV4Z3JvdXApKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0dGVybiwgJmZsYWdzLCAmUHlMaXN0X1R5cGUsICZjb2RlLCAmZ3JvdXBzLCAmZ3JvdXBpbmRleCwgJmluZGV4Z3JvdXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NyZV9jb21waWxlX2ltcGwobW9kdWxlLCBwYXR0ZXJuLCBmbGFncywgY29kZSwgZ3JvdXBzLCBncm91cGluZGV4LCBpbmRleGdyb3VwKTsKIAogZXhpdDoKQEAgLTQzOCwyMSArNDYzLDIzIEBACiAiUmV0dXJuIHRoZSBzdHJpbmcgb2J0YWluZWQgYnkgZG9pbmcgYmFja3NsYXNoIHN1YnN0aXR1dGlvbiBvbiB0aGUgc3RyaW5nIHRlbXBsYXRlLCBhcyBkb25lIGJ5IHRoZSBzdWIoKSBtZXRob2QuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfRVhQQU5EX01FVEhPRERFRiAgICBcCi0gICAgeyJleHBhbmQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZXhwYW5kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZXhwYW5kX19kb2NfX30sCisgICAgeyJleHBhbmQiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZXhwYW5kLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9leHBhbmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX2V4cGFuZF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGVtcGxhdGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NyZV9TUkVfTWF0Y2hfZXhwYW5kKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zcmVfU1JFX01hdGNoX2V4cGFuZChNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InRlbXBsYXRlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidGVtcGxhdGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOmV4cGFuZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRlbXBsYXRlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpleHBhbmQiLCBfa2V5d29yZHMsCi0gICAgICAgICZ0ZW1wbGF0ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0ZW1wbGF0ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9leHBhbmRfaW1wbChzZWxmLCB0ZW1wbGF0ZSk7CiAKIGV4aXQ6CkBAIC00NjksMjEgKzQ5NiwyMyBAQAogIiAgICBJcyB1c2VkIGZvciBncm91cHMgdGhhdCBkaWQgbm90IHBhcnRpY2lwYXRlIGluIHRoZSBtYXRjaC4iKTsKIAogI2RlZmluZSBfU1JFX1NSRV9NQVRDSF9HUk9VUFNfTUVUSE9EREVGICAgIFwKLSAgICB7Imdyb3VwcyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3JlX1NSRV9NYXRjaF9ncm91cHNfX2RvY19ffSwKKyAgICB7Imdyb3VwcyIsIChQeUNGdW5jdGlvbilfc3JlX1NSRV9NYXRjaF9ncm91cHMsIE1FVEhfRkFTVENBTEwsIF9zcmVfU1JFX01hdGNoX2dyb3Vwc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NyZV9TUkVfTWF0Y2hfZ3JvdXBzX2ltcGwoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zcmVfU1JFX01hdGNoX2dyb3VwcyhNYXRjaE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3JlX1NSRV9NYXRjaF9ncm91cHMoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkZWZhdWx0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOmdyb3VwcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86Z3JvdXBzIiwgX2tleXdvcmRzLAotICAgICAgICAmZGVmYXVsdF92YWx1ZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2dyb3Vwc19pbXBsKHNlbGYsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtNTAwLDIxICs1MjksMjMgQEAKICIgICAgSXMgdXNlZCBmb3IgZ3JvdXBzIHRoYXQgZGlkIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgbWF0Y2guIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfR1JPVVBESUNUX01FVEhPRERFRiAgICBcCi0gICAgeyJncm91cGRpY3QiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0X19kb2NfX30sCisgICAgeyJncm91cGRpY3QiLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0LCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX2dyb3VwZGljdF9pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9NYXRjaF9ncm91cGRpY3QoTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfTWF0Y2hfZ3JvdXBkaWN0KE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZGVmYXVsdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRlZmF1bHQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8Tzpncm91cGRpY3QiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpkZWZhdWx0X3ZhbHVlID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOmdyb3VwZGljdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRlZmF1bHRfdmFsdWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9ncm91cGRpY3RfaW1wbChzZWxmLCBkZWZhdWx0X3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU0MiwxMSArNTczLDEzIEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdGFydCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZncm91cCkpCisgICAgICAgICZncm91cCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3NyZV9TUkVfTWF0Y2hfc3RhcnRfaW1wbChzZWxmLCBncm91cCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTU3NCwxMSArNjA3LDEzIEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJlbmQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmZ3JvdXApKQorICAgICAgICAmZ3JvdXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX2VuZF9pbXBsKHNlbGYsIGdyb3VwKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNjA1LDggKzY0MCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzcGFuIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmdyb3VwKSkKKyAgICAgICAgJmdyb3VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zcmVfU1JFX01hdGNoX3NwYW5faW1wbChzZWxmLCBncm91cCk7CiAKIGV4aXQ6CkBAIC02MzYsMjEgKzY3MiwyMyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NSRV9TUkVfTUFUQ0hfX19ERUVQQ09QWV9fX01FVEhPRERFRiAgICBcCi0gICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fX19kb2NfX30sCisgICAgeyJfX2RlZXBjb3B5X18iLCAoUHlDRnVuY3Rpb24pX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fLCBNRVRIX0ZBU1RDQUxMLCBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zcmVfU1JFX01hdGNoX19fZGVlcGNvcHlfX19pbXBsKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbWVtbyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X18oTWF0Y2hPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NyZV9TUkVfTWF0Y2hfX19kZWVwY29weV9fKE1hdGNoT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsibWVtbyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7Im1lbW8iLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKm1lbW87CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPOl9fZGVlcGNvcHlfXyIsIF9rZXl3b3JkcywKLSAgICAgICAgJm1lbW8pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbWVtbykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3JlX1NSRV9NYXRjaF9fX2RlZXBjb3B5X19faW1wbChzZWxmLCBtZW1vKTsKIAogZXhpdDoKQEAgLTY5MCw0ICs3MjgsNCBAQAogewogICAgIHJldHVybiBfc3JlX1NSRV9TY2FubmVyX3NlYXJjaF9pbXBsKHNlbGYpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE0Y2U5ZTViNzQ4Y2U1MzIgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWE0YTI0NmJjYTE5NjNiYzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvX3NzbC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaAppbmRleCA4NTJlMzY1Li4yOWY1ODM4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9fc3NsLmMuaApAQCAtMzYsOCArMzYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfdGVzdF9kZWNvZGVfY2VydCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6X3Rlc3RfZGVjb2RlX2NlcnQiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX3Rlc3RfZGVjb2RlX2NlcnRfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtNzEsOCArNzIsOSBAQAogICAgIGludCBiaW5hcnlfbW9kZSA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxwOnBlZXJfY2VydGlmaWNhdGUiLAotICAgICAgICAmYmluYXJ5X21vZGUpKQorICAgICAgICAmYmluYXJ5X21vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3BlZXJfY2VydGlmaWNhdGVfaW1wbChzZWxmLCBiaW5hcnlfbW9kZSk7CiAKIGV4aXQ6CkBAIC0yMDksMTQgKzIxMSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBiID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOndyaXRlIiwgJmIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMU29ja2V0X3dyaXRlX2ltcGwoc2VsZiwgJmIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGIgKi8KLSAgICBpZiAoYi5vYmopCisgICAgaWYgKGIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI2MCwxMiArMjY0LDE0IEBACiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJlYWQiLCAmbGVuKSkKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJmxlbikpIHsKICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpdyo6cmVhZCIsICZsZW4sICZidWZmZXIpKQorICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpdyo6cmVhZCIsICZsZW4sICZidWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQogICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTI3Niw4ICsyODIsOSBAQAogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzMyLDExICszMzksMTMgQEAKICAgICBpbnQgcHJvdG9fdmVyc2lvbjsKIAogICAgIGlmICgodHlwZSA9PSAmUHlTU0xDb250ZXh0X1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiX1NTTENvbnRleHQiLCBrd2FyZ3MpKQorICAgICAgICAhX1B5QXJnX05vS2V5d29yZHMoIl9TU0xDb250ZXh0Iiwga3dhcmdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpfU1NMQ29udGV4dCIsCi0gICAgICAgICZwcm90b192ZXJzaW9uKSkKKyAgICAgICAgJnByb3RvX3ZlcnNpb24pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9pbXBsKHR5cGUsIHByb3RvX3ZlcnNpb24pOwogCiBleGl0OgpAQCAtMzYwLDE0ICszNjksMzYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpjaXBoZXJsaXN0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnNldF9jaXBoZXJzIiwgJmNpcGhlcmxpc3QpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpzZXRfY2lwaGVycyIsICZjaXBoZXJsaXN0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfc2V0X2NpcGhlcnNfaW1wbChzZWxmLCBjaXBoZXJsaXN0KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCisjaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDAwMjAwMFVMKQorCitQeURvY19TVFJWQVIoX3NzbF9fU1NMQ29udGV4dF9nZXRfY2lwaGVyc19fZG9jX18sCisiZ2V0X2NpcGhlcnMoJHNlbGYsIC8pXG4iCisiLS1cbiIKKyJcbiIpOworCisjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGICAgIFwKKyAgICB7ImdldF9jaXBoZXJzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnMsIE1FVEhfTk9BUkdTLCBfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX19kb2NfX30sCisKK3N0YXRpYyBQeU9iamVjdCAqCitfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX2ltcGwoUHlTU0xDb250ZXh0ICpzZWxmKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19zc2xfX1NTTENvbnRleHRfZ2V0X2NpcGhlcnMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqUHlfVU5VU0VEKGlnbm9yZWQpKQoreworICAgIHJldHVybiBfc3NsX19TU0xDb250ZXh0X2dldF9jaXBoZXJzX2ltcGwoc2VsZik7Cit9CisKKyNlbmRpZiAvKiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDAwVUwpICovCisKIFB5RG9jX1NUUlZBUihfc3NsX19TU0xDb250ZXh0X19zZXRfbnBuX3Byb3RvY29sc19fZG9jX18sCiAiX3NldF9ucG5fcHJvdG9jb2xzKCRzZWxmLCBwcm90b3MsIC8pXG4iCiAiLS1cbiIKQEAgLTM4NiwxNCArNDE3LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHByb3RvcyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6X3NldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpfc2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9ucG5fcHJvdG9jb2xzX2ltcGwoc2VsZiwgJnByb3Rvcyk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcHJvdG9zICovCi0gICAgaWYgKHByb3Rvcy5vYmopCisgICAgaWYgKHByb3Rvcy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MTYsMTQgKzQ0OSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBwcm90b3MgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfYWxwbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOl9zZXRfYWxwbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfX3NldF9hbHBuX3Byb3RvY29sc19pbXBsKHNlbGYsICZwcm90b3MpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHByb3RvcyAqLwotICAgIGlmIChwcm90b3Mub2JqKQorICAgIGlmIChwcm90b3Mub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcHJvdG9zKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDM0LDI0ICs0NjksMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9DRVJUX0NIQUlOX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX2NlcnRfY2hhaW4iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX199LAorICAgIHsibG9hZF9jZXJ0X2NoYWluIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF9jZXJ0X2NoYWluLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW5faW1wbChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpjZXJ0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleWZpbGUsIFB5T2JqZWN0ICpwYXNzd29yZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbihQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9sb2FkX2NlcnRfY2hhaW4oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiY2VydGZpbGUiLCAia2V5ZmlsZSIsICJwYXNzd29yZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE9POmxvYWRfY2VydF9jaGFpbiIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmNlcnRmaWxlOwogICAgIFB5T2JqZWN0ICprZXlmaWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGFzc3dvcmQgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT3xPTzpsb2FkX2NlcnRfY2hhaW4iLCBfa2V5d29yZHMsCi0gICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUsICZwYXNzd29yZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUsICZwYXNzd29yZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X2xvYWRfY2VydF9jaGFpbl9pbXBsKHNlbGYsIGNlcnRmaWxlLCBrZXlmaWxlLCBwYXNzd29yZCk7CiAKIGV4aXQ6CkBAIC00NjQsNyArNTAxLDcgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfTE9BRF9WRVJJRllfTE9DQVRJT05TX01FVEhPRERFRiAgICBcCi0gICAgeyJsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19fZG9jX199LAorICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9uc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsCkBAIC00NzMsMTcgKzUxMCwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2FkYXRhKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX19TU0xDb250ZXh0X2xvYWRfdmVyaWZ5X2xvY2F0aW9ucyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjYWZpbGUiLCAiY2FwYXRoIiwgImNhZGF0YSIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImNhZmlsZSIsICJjYXBhdGgiLCAiY2FkYXRhIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9PTzpsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpjYWZpbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjYXBhdGggPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjYWRhdGEgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9PTzpsb2FkX3ZlcmlmeV9sb2NhdGlvbnMiLCBfa2V5d29yZHMsCi0gICAgICAgICZjYWZpbGUsICZjYXBhdGgsICZjYWRhdGEpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmY2FmaWxlLCAmY2FwYXRoLCAmY2FkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfbG9hZF92ZXJpZnlfbG9jYXRpb25zX2ltcGwoc2VsZiwgY2FmaWxlLCBjYXBhdGgsIGNhZGF0YSk7CiAKIGV4aXQ6CkBAIC01MDQsMjQgKzU0MywyNiBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9TT0NLRVRfTUVUSE9EREVGICAgIFwKLSAgICB7Il93cmFwX3NvY2tldCIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCisgICAgeyJfd3JhcF9zb2NrZXQiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQsIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfc29ja2V0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldF9pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKnNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXJ2ZXJfc2lkZSwgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X193cmFwX3NvY2tldChQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic29jayIsICJzZXJ2ZXJfc2lkZSIsICJzZXJ2ZXJfaG9zdG5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzb2NrIiwgInNlcnZlcl9zaWRlIiwgInNlcnZlcl9ob3N0bmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8haXxPOl93cmFwX3NvY2tldCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNvY2s7CiAgICAgaW50IHNlcnZlcl9zaWRlOwogICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyFpfE86X3dyYXBfc29ja2V0IiwgX2tleXdvcmRzLAotICAgICAgICBQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUsICZzb2NrLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBQeVNvY2tldE1vZHVsZS5Tb2NrX1R5cGUsICZzb2NrLCAmc2VydmVyX3NpZGUsICZob3N0bmFtZV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9zb2NrZXRfaW1wbChzZWxmLCBzb2NrLCBzZXJ2ZXJfc2lkZSwgaG9zdG5hbWVfb2JqKTsKIAogZXhpdDoKQEAgLTUzNSw3ICs1NzYsNyBAQAogIlxuIik7CiAKICNkZWZpbmUgX1NTTF9fU1NMQ09OVEVYVF9fV1JBUF9CSU9fTUVUSE9EREVGICAgIFwKLSAgICB7Il93cmFwX2JpbyIsIChQeUNGdW5jdGlvbilfc3NsX19TU0xDb250ZXh0X193cmFwX2JpbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCisgICAgeyJfd3JhcF9iaW8iLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8sIE1FVEhfRkFTVENBTEwsIF9zc2xfX1NTTENvbnRleHRfX3dyYXBfYmlvX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlTU0xNZW1vcnlCSU8gKmluY29taW5nLApAQCAtNTQzLDE4ICs1ODQsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmhvc3RuYW1lX29iaik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X193cmFwX2JpbyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9fd3JhcF9iaW8oUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaW5jb21pbmciLCAib3V0Z29pbmciLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyFPIWl8Tzpfd3JhcF9iaW8iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5U1NMTWVtb3J5QklPICppbmNvbWluZzsKICAgICBQeVNTTE1lbW9yeUJJTyAqb3V0Z29pbmc7CiAgICAgaW50IHNlcnZlcl9zaWRlOwogICAgIFB5T2JqZWN0ICpob3N0bmFtZV9vYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyFPIWl8Tzpfd3JhcF9iaW8iLCBfa2V5d29yZHMsCi0gICAgICAgICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmaW5jb21pbmcsICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmb3V0Z29pbmcsICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmaW5jb21pbmcsICZQeVNTTE1lbW9yeUJJT19UeXBlLCAmb3V0Z29pbmcsICZzZXJ2ZXJfc2lkZSwgJmhvc3RuYW1lX29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX19TU0xDb250ZXh0X193cmFwX2Jpb19pbXBsKHNlbGYsIGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGUsIGhvc3RuYW1lX29iaik7CiAKIGV4aXQ6CkBAIC02NTcsMjEgKzcwMCwyMyBAQAogImJlZW4gdXNlZCBhdCBsZWFzdCBvbmNlLiIpOwogCiAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NBX0NFUlRTX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRfY2FfY2VydHMiLCAoUHlDRnVuY3Rpb24pX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX199LAorICAgIHsiZ2V0X2NhX2NlcnRzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzLCBNRVRIX0ZBU1RDQUxMLCBfc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0c19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHNfaW1wbChQeVNTTENvbnRleHQgKnNlbGYsIGludCBiaW5hcnlfZm9ybSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX19TU0xDb250ZXh0X2dldF9jYV9jZXJ0cyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NzbF9fU1NMQ29udGV4dF9nZXRfY2FfY2VydHMoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiYmluYXJ5X2Zvcm0iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJiaW5hcnlfZm9ybSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGJpbmFyeV9mb3JtID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxwOmdldF9jYV9jZXJ0cyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmJpbmFyeV9mb3JtKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmJpbmFyeV9mb3JtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfX1NTTENvbnRleHRfZ2V0X2NhX2NlcnRzX2ltcGwoc2VsZiwgYmluYXJ5X2Zvcm0pOwogCiBleGl0OgpAQCAtNjg3LDExICs3MzIsMTMgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKIAogICAgIGlmICgodHlwZSA9PSAmUHlTU0xNZW1vcnlCSU9fVHlwZSkgJiYKLSAgICAgICAgIV9QeUFyZ19Ob1Bvc2l0aW9uYWwoIk1lbW9yeUJJTyIsIGFyZ3MpKQorICAgICAgICAhX1B5QXJnX05vUG9zaXRpb25hbCgiTWVtb3J5QklPIiwgYXJncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBpZiAoKHR5cGUgPT0gJlB5U1NMTWVtb3J5QklPX1R5cGUpICYmCi0gICAgICAgICFfUHlBcmdfTm9LZXl3b3JkcygiTWVtb3J5QklPIiwga3dhcmdzKSkKKyAgICAgICAgIV9QeUFyZ19Ob0tleXdvcmRzKCJNZW1vcnlCSU8iLCBrd2FyZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9NZW1vcnlCSU9faW1wbCh0eXBlKTsKIAogZXhpdDoKQEAgLTcyMiw4ICs3NjksOSBAQAogICAgIGludCBsZW4gPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6cmVhZCIsCi0gICAgICAgICZsZW4pKQorICAgICAgICAmbGVuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX3JlYWRfaW1wbChzZWxmLCBsZW4pOwogCiBleGl0OgpAQCAtNzUwLDE0ICs3OTgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYiA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6d3JpdGUiLCAmYikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjp3cml0ZSIsICZiKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfTWVtb3J5QklPX3dyaXRlX2ltcGwoc2VsZiwgJmIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGIgKi8KLSAgICBpZiAoYi5vYmopCisgICAgaWYgKGIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTgwNSwxNCArODU1LDE2IEBACiAgICAgZG91YmxlIGVudHJvcHk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqZDpSQU5EX2FkZCIsCi0gICAgICAgICZ2aWV3LCAmZW50cm9weSkpCisgICAgICAgICZ2aWV3LCAmZW50cm9weSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfYWRkX2ltcGwobW9kdWxlLCAmdmlldywgZW50cm9weSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgdmlldyAqLwotICAgIGlmICh2aWV3Lm9iaikKKyAgICBpZiAodmlldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODM1LDggKzg4Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG47CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9ieXRlcyIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9ieXRlcyIsICZuKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfUkFORF9ieXRlc19pbXBsKG1vZHVsZSwgbik7CiAKIGV4aXQ6CkBAIC04NjQsOCArOTE3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpSQU5EX3BzZXVkb19ieXRlcyIsICZuKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc3NsX1JBTkRfcHNldWRvX2J5dGVzX2ltcGwobW9kdWxlLCBuKTsKIAogZXhpdDoKQEAgLTkxNiw4ICs5NzAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpSQU5EX2VnZCIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UkFORF9lZ2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfUkFORF9lZ2RfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtOTU2LDIyICsxMDExLDI0IEBACiAibG9uZyBuYW1lIGFyZSBhbHNvIG1hdGNoZWQuIik7CiAKICNkZWZpbmUgX1NTTF9UWFQyT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJ0eHQyb2JqIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfdHh0Mm9iaiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zc2xfdHh0Mm9ial9fZG9jX199LAorICAgIHsidHh0Mm9iaiIsIChQeUNGdW5jdGlvbilfc3NsX3R4dDJvYmosIE1FVEhfRkFTVENBTEwsIF9zc2xfdHh0Mm9ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF90eHQyb2JqX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqdHh0LCBpbnQgbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX3R4dDJvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc3NsX3R4dDJvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InR4dCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsidHh0IiwgIm5hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJzfHA6dHh0Mm9iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqdHh0OwogICAgIGludCBuYW1lID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInN8cDp0eHQyb2JqIiwgX2tleXdvcmRzLAotICAgICAgICAmdHh0LCAmbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0eHQsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zc2xfdHh0Mm9ial9pbXBsKG1vZHVsZSwgdHh0LCBuYW1lKTsKIAogZXhpdDoKQEAgLTk5Niw4ICsxMDUzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pZDJvYmoiLCAmbmlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6bmlkMm9iaiIsICZuaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9uaWQyb2JqX2ltcGwobW9kdWxlLCBuaWQpOwogCiBleGl0OgpAQCAtMTAxOSwyMSArMTA3NywyMyBAQAogImEgc2V0IG9mIE9JRHMgb3IgdGhlIGJvb2xlYW4gVHJ1ZS4iKTsKIAogI2RlZmluZSBfU1NMX0VOVU1fQ0VSVElGSUNBVEVTX01FVEhPRERFRiAgICBcCi0gICAgeyJlbnVtX2NlcnRpZmljYXRlcyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY2VydGlmaWNhdGVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAorICAgIHsiZW51bV9jZXJ0aWZpY2F0ZXMiLCAoUHlDRnVuY3Rpb24pX3NzbF9lbnVtX2NlcnRpZmljYXRlcywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9lbnVtX2NlcnRpZmljYXRlc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGNvbnN0IGNoYXIgKnN0b3JlX25hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NzbF9lbnVtX2NlcnRpZmljYXRlcyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfZW51bV9jZXJ0aWZpY2F0ZXMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0b3JlX25hbWUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiczplbnVtX2NlcnRpZmljYXRlcyIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqc3RvcmVfbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInM6ZW51bV9jZXJ0aWZpY2F0ZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdG9yZV9uYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0b3JlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NlcnRpZmljYXRlc19pbXBsKG1vZHVsZSwgc3RvcmVfbmFtZSk7CiAKIGV4aXQ6CkBAIC0xMDU2LDIxICsxMTE2LDIzIEBACiAiWDUwOV9BU05fRU5DT0RJTkcgb3IgUEtDU183X0FTTl9FTkNPRElORy4iKTsKIAogI2RlZmluZSBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYgICAgXAotICAgIHsiZW51bV9jcmxzIiwgKFB5Q0Z1bmN0aW9uKV9zc2xfZW51bV9jcmxzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NzbF9lbnVtX2NybHNfX2RvY19ffSwKKyAgICB7ImVudW1fY3JscyIsIChQeUNGdW5jdGlvbilfc3NsX2VudW1fY3JscywgTUVUSF9GQVNUQ0FMTCwgX3NzbF9lbnVtX2NybHNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zc2xfZW51bV9jcmxzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqc3RvcmVfbmFtZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc3NsX2VudW1fY3JscyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zc2xfZW51bV9jcmxzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdG9yZV9uYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RvcmVfbmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InM6ZW51bV9jcmxzIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICpzdG9yZV9uYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiczplbnVtX2NybHMiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdG9yZV9uYW1lKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0b3JlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NzbF9lbnVtX2NybHNfaW1wbChtb2R1bGUsIHN0b3JlX25hbWUpOwogCiBleGl0OgpAQCAtMTA4Nyw2ICsxMTQ5LDEwIEBACiAgICAgI2RlZmluZSBfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfU1NMX19TU0xTT0NLRVRfU0VMRUNURURfQUxQTl9QUk9UT0NPTF9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYKKyAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfR0VUX0NJUEhFUlNfTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9HRVRfQ0lQSEVSU19NRVRIT0RERUYpICovCisKICNpZm5kZWYgX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYKICAgICAjZGVmaW5lIF9TU0xfX1NTTENPTlRFWFRfU0VUX0VDREhfQ1VSVkVfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX1NTTF9fU1NMQ09OVEVYVF9TRVRfRUNESF9DVVJWRV9NRVRIT0RERUYpICovCkBAIC0xMTAyLDQgKzExNjgsNCBAQAogI2lmbmRlZiBfU1NMX0VOVU1fQ1JMU19NRVRIT0RERUYKICAgICAjZGVmaW5lIF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKF9TU0xfRU5VTV9DUkxTX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZmIxMDU5NGQ4MzUxZGM1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hODU5YjIxZmU2OGE2MTE1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaCBiL01vZHVsZXMvY2xpbmljL190a2ludGVyLmMuaAppbmRleCA3N2FmMDgzLi5lZGQ1MzgwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9fdGtpbnRlci5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvX3RraW50ZXIuYy5oCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqc2NyaXB0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV2YWwiLCAmc2NyaXB0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbCIsICZzY3JpcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXZhbF9pbXBsKHNlbGYsIHNjcmlwdCk7CiAKIGV4aXQ6CkBAIC00NCw4ICs0NSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZmlsZU5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXZhbGZpbGUiLCAmZmlsZU5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczpldmFsZmlsZSIsICZmaWxlTmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9ldmFsZmlsZV9pbXBsKHNlbGYsIGZpbGVOYW1lKTsKIAogZXhpdDoKQEAgLTY5LDggKzcxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICpzY3JpcHQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6cmVjb3JkIiwgJnNjcmlwdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOnJlY29yZCIsICZzY3JpcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfcmVjb3JkX2ltcGwoc2VsZiwgc2NyaXB0KTsKIAogZXhpdDoKQEAgLTk0LDggKzk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjb25zdCBjaGFyICptc2c7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6YWRkZXJyaW5mbyIsICZtc2cpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiczphZGRlcnJpbmZvIiwgJm1zZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9hZGRlcnJpbmZvX2ltcGwoc2VsZiwgbXNnKTsKIAogZXhpdDoKQEAgLTE0Myw4ICsxNDcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcnN0cmluZyIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJzdHJpbmdfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTE2OCw4ICsxNzMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmxvbmciLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJsb25nIiwgJnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcmxvbmdfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTE5Myw4ICsxOTksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmRvdWJsZSIsICZzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmRvdWJsZSIsICZzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2V4cHJkb3VibGVfaW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTIxOCw4ICsyMjUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZXhwcmJvb2xlYW4iLCAmcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzOmV4cHJib29sZWFuIiwgJnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZXhwcmJvb2xlYW5faW1wbChzZWxmLCBzKTsKIAogZXhpdDoKQEAgLTI2Miw4ICsyNzAsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTzpjcmVhdGVjb21tYW5kIiwKLSAgICAgICAgJm5hbWUsICZmdW5jKSkKKyAgICAgICAgJm5hbWUsICZmdW5jKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2NyZWF0ZWNvbW1hbmRfaW1wbChzZWxmLCBuYW1lLCBmdW5jKTsKIAogZXhpdDoKQEAgLTI4Nyw4ICsyOTYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZGVsZXRlY29tbWFuZCIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6ZGVsZXRlY29tbWFuZCIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX2RlbGV0ZWNvbW1hbmRfaW1wbChzZWxmLCBuYW1lKTsKIAogZXhpdDoKQEAgLTMxOCw4ICszMjgsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaU86Y3JlYXRlZmlsZWhhbmRsZXIiLAotICAgICAgICAmZmlsZSwgJm1hc2ssICZmdW5jKSkKKyAgICAgICAgJmZpbGUsICZtYXNrLCAmZnVuYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl90a2FwcF9jcmVhdGVmaWxlaGFuZGxlcl9pbXBsKHNlbGYsIGZpbGUsIG1hc2ssIGZ1bmMpOwogCiBleGl0OgpAQCAtMzc3LDggKzM4OCw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOmNyZWF0ZXRpbWVyaGFuZGxlciIsCi0gICAgICAgICZtaWxsaXNlY29uZHMsICZmdW5jKSkKKyAgICAgICAgJm1pbGxpc2Vjb25kcywgJmZ1bmMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfY3JlYXRldGltZXJoYW5kbGVyX2ltcGwoc2VsZiwgbWlsbGlzZWNvbmRzLCBmdW5jKTsKIAogZXhpdDoKQEAgLTQwMyw4ICs0MTUsOSBAQAogICAgIGludCB0aHJlc2hvbGQgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTptYWlubG9vcCIsCi0gICAgICAgICZ0aHJlc2hvbGQpKQorICAgICAgICAmdGhyZXNob2xkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF90a2ludGVyX3RrYXBwX21haW5sb29wX2ltcGwoc2VsZiwgdGhyZXNob2xkKTsKIAogZXhpdDoKQEAgLTQyOSw4ICs0NDIsOSBAQAogICAgIGludCBmbGFncyA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmRvb25lZXZlbnQiLAotICAgICAgICAmZmxhZ3MpKQorICAgICAgICAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfdGthcHBfZG9vbmVldmVudF9pbXBsKHNlbGYsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTU1MSw4ICs1NjUsOSBAQAogICAgIGNvbnN0IGNoYXIgKnVzZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInx6c3NpaWlpejpjcmVhdGUiLAotICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLCAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywgJnN5bmMsICZ1c2UpKQorICAgICAgICAmc2NyZWVuTmFtZSwgJmJhc2VOYW1lLCAmY2xhc3NOYW1lLCAmaW50ZXJhY3RpdmUsICZ3YW50b2JqZWN0cywgJndhbnRUaywgJnN5bmMsICZ1c2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3RraW50ZXJfY3JlYXRlX2ltcGwobW9kdWxlLCBzY3JlZW5OYW1lLCBiYXNlTmFtZSwgY2xhc3NOYW1lLCBpbnRlcmFjdGl2ZSwgd2FudG9iamVjdHMsIHdhbnRUaywgc3luYywgdXNlKTsKIAogZXhpdDoKQEAgLTU3OSw4ICs1OTQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBuZXdfdmFsOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldGJ1c3l3YWl0aW50ZXJ2YWwiLCAmbmV3X3ZhbCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldGJ1c3l3YWl0aW50ZXJ2YWwiLCAmbmV3X3ZhbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfdGtpbnRlcl9zZXRidXN5d2FpdGludGVydmFsX2ltcGwobW9kdWxlLCBuZXdfdmFsKTsKIAogZXhpdDoKQEAgLTYwNiw4ICs2MjIsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF90a2ludGVyX2dldGJ1c3l3YWl0aW50ZXJ2YWxfaW1wbChtb2R1bGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC02MjEsNCArNjM4LDQgQEAKICNpZm5kZWYgX1RLSU5URVJfVEtBUFBfREVMRVRFRklMRUhBTkRMRVJfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfVEtJTlRFUl9US0FQUF9ERUxFVEVGSUxFSEFORExFUl9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjkwNTdjOGJmMjg4NjMzZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ODM2YzU3OGI3MWQ2OTA5NyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmggYi9Nb2R1bGVzL2NsaW5pYy9fd2Vha3JlZi5jLmgKaW5kZXggYjgzYjMzZS4uYzE5MmU3MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvX3dlYWtyZWYuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL193ZWFrcmVmLmMuaApAQCAtMjEsMTEgKzIxLDEyIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93ZWFrcmVmX2dldHdlYWtyZWZjb3VudF9pbXBsKG1vZHVsZSwgb2JqZWN0KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDkwODZjODU3NmQ0NjkzMyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZTFhZDU4NzE0NzMyM2UxOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9fd2luYXBpLmMuaCBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCmluZGV4IGFjMzhkMzcuLjViZmJhZjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL193aW5hcGkuYy5oCkBAIC0xOSw4ICsxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IHdhaXQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInA6R2V0T3ZlcmxhcHBlZFJlc3VsdCIsICZ3YWl0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInA6R2V0T3ZlcmxhcHBlZFJlc3VsdCIsICZ3YWl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfT3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0X2ltcGwoc2VsZiwgd2FpdCk7CiAKIGV4aXQ6CkBAIC03OSw4ICs4MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEFORExFIGhhbmRsZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBGX0hBTkRMRSAiOkNsb3NlSGFuZGxlIiwgJmhhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ2xvc2VIYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSk7CiAKIGV4aXQ6CkBAIC05MywyMyArOTUsMjUgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfQ09OTkVDVE5BTUVEUElQRV9NRVRIT0RERUYgICAgXAotICAgIHsiQ29ubmVjdE5hbWVkUGlwZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19ffSwKKyAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhBTkRMRSBoYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImhhbmRsZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAifGk6Q29ubmVjdE5hbWVkUGlwZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJnVzZV9vdmVybGFwcGVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ29ubmVjdE5hbWVkUGlwZV9pbXBsKG1vZHVsZSwgaGFuZGxlLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CkBAIC0xNDcsMTMgKzE1MSwxNiBAQAogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJza2siIEZfUE9JTlRFUiAia2siIEZfSEFORExFICI6Q3JlYXRlRmlsZSIsCi0gICAgICAgICZmaWxlX25hbWUsICZkZXNpcmVkX2FjY2VzcywgJnNoYXJlX21vZGUsICZzZWN1cml0eV9hdHRyaWJ1dGVzLCAmY3JlYXRpb25fZGlzcG9zaXRpb24sICZmbGFnc19hbmRfYXR0cmlidXRlcywgJnRlbXBsYXRlX2ZpbGUpKQorICAgICAgICAmZmlsZV9uYW1lLCAmZGVzaXJlZF9hY2Nlc3MsICZzaGFyZV9tb2RlLCAmc2VjdXJpdHlfYXR0cmlidXRlcywgJmNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCAmZmxhZ3NfYW5kX2F0dHJpYnV0ZXMsICZ0ZW1wbGF0ZV9maWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0NyZWF0ZUZpbGVfaW1wbChtb2R1bGUsIGZpbGVfbmFtZSwgZGVzaXJlZF9hY2Nlc3MsIHNoYXJlX21vZGUsIHNlY3VyaXR5X2F0dHJpYnV0ZXMsIGNyZWF0aW9uX2Rpc3Bvc2l0aW9uLCBmbGFnc19hbmRfYXR0cmlidXRlcywgdGVtcGxhdGVfZmlsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICB9CisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gSEFORExFX1RPX1BZTlVNKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTgwLDggKzE4Nyw5IEBACiAgICAgTFBXU1RSIGRzdF9wYXRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ1dTpDcmVhdGVKdW5jdGlvbiIsCi0gICAgICAgICZzcmNfcGF0aCwgJmRzdF9wYXRoKSkKKyAgICAgICAgJnNyY19wYXRoLCAmZHN0X3BhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVKdW5jdGlvbl9pbXBsKG1vZHVsZSwgc3JjX3BhdGgsIGRzdF9wYXRoKTsKIAogZXhpdDoKQEAgLTIyMCwxMyArMjI4LDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNra2tra2siIEZfUE9JTlRFUiAiOkNyZWF0ZU5hbWVkUGlwZSIsCi0gICAgICAgICZuYW1lLCAmb3Blbl9tb2RlLCAmcGlwZV9tb2RlLCAmbWF4X2luc3RhbmNlcywgJm91dF9idWZmZXJfc2l6ZSwgJmluX2J1ZmZlcl9zaXplLCAmZGVmYXVsdF90aW1lb3V0LCAmc2VjdXJpdHlfYXR0cmlidXRlcykpCisgICAgICAgICZuYW1lLCAmb3Blbl9tb2RlLCAmcGlwZV9tb2RlLCAmbWF4X2luc3RhbmNlcywgJm91dF9idWZmZXJfc2l6ZSwgJmluX2J1ZmZlcl9zaXplLCAmZGVmYXVsdF90aW1lb3V0LCAmc2VjdXJpdHlfYXR0cmlidXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVOYW1lZFBpcGVfaW1wbChtb2R1bGUsIG5hbWUsIG9wZW5fbW9kZSwgcGlwZV9tb2RlLCBtYXhfaW5zdGFuY2VzLCBvdXRfYnVmZmVyX3NpemUsIGluX2J1ZmZlcl9zaXplLCBkZWZhdWx0X3RpbWVvdXQsIHNlY3VyaXR5X2F0dHJpYnV0ZXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI1OCw4ICsyNjksOSBAQAogICAgIERXT1JEIHNpemU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9rOkNyZWF0ZVBpcGUiLAotICAgICAgICAmcGlwZV9hdHRycywgJnNpemUpKQorICAgICAgICAmcGlwZV9hdHRycywgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9DcmVhdGVQaXBlX2ltcGwobW9kdWxlLCBwaXBlX2F0dHJzLCBzaXplKTsKIAogZXhpdDoKQEAgLTMwOCw4ICszMjAsOSBAQAogICAgIFB5T2JqZWN0ICpzdGFydHVwX2luZm87CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlpaT09pa09aTzpDcmVhdGVQcm9jZXNzIiwKLSAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsICZjb21tYW5kX2xpbmUsICZwcm9jX2F0dHJzLCAmdGhyZWFkX2F0dHJzLCAmaW5oZXJpdF9oYW5kbGVzLCAmY3JlYXRpb25fZmxhZ3MsICZlbnZfbWFwcGluZywgJmN1cnJlbnRfZGlyZWN0b3J5LCAmc3RhcnR1cF9pbmZvKSkKKyAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsICZjb21tYW5kX2xpbmUsICZwcm9jX2F0dHJzLCAmdGhyZWFkX2F0dHJzLCAmaW5oZXJpdF9oYW5kbGVzLCAmY3JlYXRpb25fZmxhZ3MsICZlbnZfbWFwcGluZywgJmN1cnJlbnRfZGlyZWN0b3J5LCAmc3RhcnR1cF9pbmZvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfQ3JlYXRlUHJvY2Vzc19pbXBsKG1vZHVsZSwgYXBwbGljYXRpb25fbmFtZSwgY29tbWFuZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsIGluaGVyaXRfaGFuZGxlcywgY3JlYXRpb25fZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJyZW50X2RpcmVjdG9yeSwgc3RhcnR1cF9pbmZvKTsKIAogZXhpdDoKQEAgLTM1MSwxMyArMzY0LDE2IEBACiAgICAgSEFORExFIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIiIgRl9IQU5ETEUgIiIgRl9IQU5ETEUgImtpfGs6RHVwbGljYXRlSGFuZGxlIiwKLSAgICAgICAgJnNvdXJjZV9wcm9jZXNzX2hhbmRsZSwgJnNvdXJjZV9oYW5kbGUsICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsICZkZXNpcmVkX2FjY2VzcywgJmluaGVyaXRfaGFuZGxlLCAmb3B0aW9ucykpCisgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsICZzb3VyY2VfaGFuZGxlLCAmdGFyZ2V0X3Byb2Nlc3NfaGFuZGxlLCAmZGVzaXJlZF9hY2Nlc3MsICZpbmhlcml0X2hhbmRsZSwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfRHVwbGljYXRlSGFuZGxlX2ltcGwobW9kdWxlLCBzb3VyY2VfcHJvY2Vzc19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsIHRhcmdldF9wcm9jZXNzX2hhbmRsZSwgZGVzaXJlZF9hY2Nlc3MsIGluaGVyaXRfaGFuZGxlLCBvcHRpb25zKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zODEsOCArMzk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBVSU5UIEV4aXRDb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOkV4aXRQcm9jZXNzIiwgJkV4aXRDb2RlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkk6RXhpdFByb2Nlc3MiLCAmRXhpdENvZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9FeGl0UHJvY2Vzc19pbXBsKG1vZHVsZSwgRXhpdENvZGUpOwogCiBleGl0OgpAQCAtNDA4LDEwICs0MjUsMTIgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzcsMTEgKzQ1NiwxMyBAQAogICAgIEhBTkRMRSBwcm9jZXNzOwogICAgIERXT1JEIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIEZfSEFORExFICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzX2ltcGwobW9kdWxlLCBwcm9jZXNzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NjYsOCArNDg3LDkgQEAKICAgICBEV09SRCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0TGFzdEVycm9yX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gRFdPUkRfTUFYKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBEV09SRF9NQVgpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJrIiwgX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00OTksOCArNTIxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBITU9EVUxFIG1vZHVsZV9oYW5kbGU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsICZtb2R1bGVfaGFuZGxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgRl9IQU5ETEUgIjpHZXRNb2R1bGVGaWxlTmFtZSIsICZtb2R1bGVfaGFuZGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0TW9kdWxlRmlsZU5hbWVfaW1wbChtb2R1bGUsIG1vZHVsZV9oYW5kbGUpOwogCiBleGl0OgpAQCAtNTMxLDEzICs1NTQsMTYgQEAKICAgICBEV09SRCBzdGRfaGFuZGxlOwogICAgIEhBTkRMRSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJrOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIms6R2V0U3RkSGFuZGxlIiwgJnN0ZF9oYW5kbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IF93aW5hcGlfR2V0U3RkSGFuZGxlX2ltcGwobW9kdWxlLCBzdGRfaGFuZGxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKQorICAgIH0KKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBIQU5ETEVfVE9fUFlOVU0oX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01NjMsOCArNTg5LDkgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9HZXRWZXJzaW9uX2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTkzLDEzICs2MjAsMTYgQEAKICAgICBIQU5ETEUgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAia2lrOk9wZW5Qcm9jZXNzIiwKLSAgICAgICAgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZwcm9jZXNzX2lkKSkKKyAgICAgICAgJmRlc2lyZWRfYWNjZXNzLCAmaW5oZXJpdF9oYW5kbGUsICZwcm9jZXNzX2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX09wZW5Qcm9jZXNzX2ltcGwobW9kdWxlLCBkZXNpcmVkX2FjY2VzcywgaW5oZXJpdF9oYW5kbGUsIHByb2Nlc3NfaWQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgfQorICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IEhBTkRMRV9UT19QWU5VTShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTYyNSw4ICs2NTUsOSBAQAogICAgIGludCBzaXplID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAifGk6UGVla05hbWVkUGlwZSIsCi0gICAgICAgICZoYW5kbGUsICZzaXplKSkKKyAgICAgICAgJmhhbmRsZSwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9QZWVrTmFtZWRQaXBlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHNpemUpOwogCiBleGl0OgpAQCAtNjM5LDI0ICs2NzAsMjYgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfUkVBREZJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7IlJlYWRGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfUmVhZEZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1JlYWRGaWxlX19kb2NfX30sCisgICAgeyJSZWFkRmlsZSIsIChQeUNGdW5jdGlvbilfd2luYXBpX1JlYWRGaWxlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX1JlYWRGaWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfd2luYXBpX1JlYWRGaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgSEFORExFIGhhbmRsZSwgaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IHVzZV9vdmVybGFwcGVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV93aW5hcGlfUmVhZEZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfd2luYXBpX1JlYWRGaWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJoYW5kbGUiLCAic2l6ZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgInNpemUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IiIgRl9IQU5ETEUgIml8aTpSZWFkRmlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBpbnQgc2l6ZTsKICAgICBpbnQgdXNlX292ZXJsYXBwZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiIiBGX0hBTkRMRSAiaXxpOlJlYWRGaWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmaGFuZGxlLCAmc2l6ZSwgJnVzZV9vdmVybGFwcGVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1JlYWRGaWxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIHNpemUsIHVzZV9vdmVybGFwcGVkKTsKIAogZXhpdDoKQEAgLTY4OCw4ICs3MjEsOSBAQAogICAgIFB5T2JqZWN0ICpjb2xsZWN0X2RhdGFfdGltZW91dDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBGX0hBTkRMRSAiT09POlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlIiwKLSAgICAgICAgJm5hbWVkX3BpcGUsICZtb2RlLCAmbWF4X2NvbGxlY3Rpb25fY291bnQsICZjb2xsZWN0X2RhdGFfdGltZW91dCkpCisgICAgICAgICZuYW1lZF9waXBlLCAmbW9kZSwgJm1heF9jb2xsZWN0aW9uX2NvdW50LCAmY29sbGVjdF9kYXRhX3RpbWVvdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZV9pbXBsKG1vZHVsZSwgbmFtZWRfcGlwZSwgbW9kZSwgbWF4X2NvbGxlY3Rpb25fY291bnQsIGNvbGxlY3RfZGF0YV90aW1lb3V0KTsKIAogZXhpdDoKQEAgLTcxNyw4ICs3NTEsOSBAQAogICAgIFVJTlQgZXhpdF9jb2RlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIEZfSEFORExFICJJOlRlcm1pbmF0ZVByb2Nlc3MiLAotICAgICAgICAmaGFuZGxlLCAmZXhpdF9jb2RlKSkKKyAgICAgICAgJmhhbmRsZSwgJmV4aXRfY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3NfaW1wbChtb2R1bGUsIGhhbmRsZSwgZXhpdF9jb2RlKTsKIAogZXhpdDoKQEAgLTc0NCw4ICs3NzksOSBAQAogICAgIERXT1JEIHRpbWVvdXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNrOldhaXROYW1lZFBpcGUiLAotICAgICAgICAmbmFtZSwgJnRpbWVvdXQpKQorICAgICAgICAmbmFtZSwgJnRpbWVvdXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9XYWl0TmFtZWRQaXBlX2ltcGwobW9kdWxlLCBuYW1lLCB0aW1lb3V0KTsKIAogZXhpdDoKQEAgLTc3NCw4ICs4MTAsOSBAQAogICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPaXxrOldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLAotICAgICAgICAmaGFuZGxlX3NlcSwgJndhaXRfZmxhZywgJm1pbGxpc2Vjb25kcykpCisgICAgICAgICZoYW5kbGVfc2VxLCAmd2FpdF9mbGFnLCAmbWlsbGlzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF93aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0c19pbXBsKG1vZHVsZSwgaGFuZGxlX3NlcSwgd2FpdF9mbGFnLCBtaWxsaXNlY29uZHMpOwogCiBleGl0OgpAQCAtODA4LDExICs4NDUsMTMgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgRl9IQU5ETEUgIms6V2FpdEZvclNpbmdsZU9iamVjdCIsCi0gICAgICAgICZoYW5kbGUsICZtaWxsaXNlY29uZHMpKQorICAgICAgICAmaGFuZGxlLCAmbWlsbGlzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBfd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3RfaW1wbChtb2R1bGUsIGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtODI1LDI3ICs4NjQsMjkgQEAKICJcbiIpOwogCiAjZGVmaW5lIF9XSU5BUElfV1JJVEVGSUxFX01FVEhPRERFRiAgICBcCi0gICAgeyJXcml0ZUZpbGUiLCAoUHlDRnVuY3Rpb24pX3dpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAorICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKV93aW5hcGlfV3JpdGVGaWxlLCBNRVRIX0ZBU1RDQUxMLCBfd2luYXBpX1dyaXRlRmlsZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIQU5ETEUgaGFuZGxlLCBQeU9iamVjdCAqYnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXNlX292ZXJsYXBwZWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3dpbmFwaV9Xcml0ZUZpbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfd2luYXBpX1dyaXRlRmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgImJ1ZmZlciIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiaGFuZGxlIiwgImJ1ZmZlciIsICJvdmVybGFwcGVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBGX0hBTkRMRSAiT3xpOldyaXRlRmlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgSEFORExFIGhhbmRsZTsKICAgICBQeU9iamVjdCAqYnVmZmVyOwogICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIEZfSEFORExFICJPfGk6V3JpdGVGaWxlIiwgX2tleXdvcmRzLAotICAgICAgICAmaGFuZGxlLCAmYnVmZmVyLCAmdXNlX292ZXJsYXBwZWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmaGFuZGxlLCAmYnVmZmVyLCAmdXNlX292ZXJsYXBwZWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3dpbmFwaV9Xcml0ZUZpbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgYnVmZmVyLCB1c2Vfb3ZlcmxhcHBlZCk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hNGM0YjJhOWZjYjBiZWExIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NmQ2MzgyYTY2NjJjNGE5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL2FycmF5bW9kdWxlLmMuaAppbmRleCAwYzcwNjFhLi4zYjlmY2RhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9hcnJheW1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYXJyYXltb2R1bGUuYy5oCkBAIC03Nyw4ICs3Nyw5IEBACiAgICAgUHlfc3NpemVfdCBpID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxuOnBvcCIsCi0gICAgICAgICZpKSkKKyAgICAgICAgJmkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfYXJyYXlfcG9wX2ltcGwoc2VsZiwgaSk7CiAKIGV4aXQ6CkBAIC0xMTQsOCArMTE1LDkgQEAKICAgICBQeU9iamVjdCAqdjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk86aW5zZXJ0IiwKLSAgICAgICAgJmksICZ2KSkKKyAgICAgICAgJmksICZ2KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGFycmF5X2FycmF5X2luc2VydF9pbXBsKHNlbGYsIGksIHYpOwogCiBleGl0OgpAQCAtMjExLDggKzIxMyw5IEBACiAgICAgUHlfc3NpemVfdCBuOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbjpmcm9tZmlsZSIsCi0gICAgICAgICZmLCAmbikpCisgICAgICAgICZmLCAmbikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tZmlsZV9pbXBsKHNlbGYsIGYsIG4pOwogCiBleGl0OgpAQCAtMjc1LDE0ICsyNzgsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgYnVmZmVyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzKjpmcm9tc3RyaW5nIiwgJmJ1ZmZlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJzKjpmcm9tc3RyaW5nIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tc3RyaW5nX2ltcGwoc2VsZiwgJmJ1ZmZlcik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgYnVmZmVyICovCi0gICAgaWYgKGJ1ZmZlci5vYmopCisgICAgaWYgKGJ1ZmZlci5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMDUsMTQgKzMxMCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBidWZmZXIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmZyb21ieXRlcyIsICZidWZmZXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6ZnJvbWJ5dGVzIiwgJmJ1ZmZlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tYnl0ZXNfaW1wbChzZWxmLCAmYnVmZmVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBidWZmZXIgKi8KLSAgICBpZiAoYnVmZmVyLm9iaikKKyAgICBpZiAoYnVmZmVyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZmZlcik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM3OSw4ICszODYsOSBAQAogICAgIFB5X1VOSUNPREUgKnVzdHI7CiAgICAgUHlfc3NpemVfY2xlYW5fdCB1c3RyX2xlbmd0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidSM6ZnJvbXVuaWNvZGUiLCAmdXN0ciwgJnVzdHJfbGVuZ3RoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInUjOmZyb211bmljb2RlIiwgJnVzdHIsICZ1c3RyX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhcnJheV9hcnJheV9mcm9tdW5pY29kZV9pbXBsKHNlbGYsIHVzdHIsIHVzdHJfbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQ1Myw4ICs0NjEsOSBAQAogICAgIFB5T2JqZWN0ICppdGVtczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT0NpTzpfYXJyYXlfcmVjb25zdHJ1Y3RvciIsCi0gICAgICAgICZhcnJheXR5cGUsICZ0eXBlY29kZSwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkKKyAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXJyYXlfX2FycmF5X3JlY29uc3RydWN0b3JfaW1wbChtb2R1bGUsIGFycmF5dHlwZSwgdHlwZWNvZGUsIG1mb3JtYXRfY29kZSwgaXRlbXMpOwogCiBleGl0OgpAQCAtNDk2LDQgKzUwNSw0IEBACiAKICNkZWZpbmUgQVJSQVlfQVJSQVlJVEVSQVRPUl9fX1NFVFNUQVRFX19fTUVUSE9EREVGICAgIFwKICAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfXywgTUVUSF9PLCBhcnJheV9hcnJheWl0ZXJhdG9yX19fc2V0c3RhdGVfX19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTMwNWRmM2Y1Nzk2MDM5ZTQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIyMDU0ZmI3NjRjOGNjNjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmggYi9Nb2R1bGVzL2NsaW5pYy9hdWRpb29wLmMuaAppbmRleCA2MmUzMTNiNS4uYmU0YjcxOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvYXVkaW9vcC5jLmgKQEAgLTI0LDE0ICsyNCwxNiBAQAogICAgIFB5X3NzaXplX3QgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaW46Z2V0c2FtcGxlIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZpbmRleCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9nZXRzYW1wbGVfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGluZGV4KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTYsMTQgKzU4LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bWF4IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX21heF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTg4LDE0ICs5MiwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOm1pbm1heCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9taW5tYXhfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMjAsMTQgKzEyNiwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2ZyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hdmdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNTIsMTQgKzE2MCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJtcyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9ybXNfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xODUsMTcgKzE5NSwyMCBAQAogICAgIFB5X2J1ZmZlciByZWZlcmVuY2UgPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6ZmluZGZpdCIsCi0gICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpCisgICAgICAgICZmcmFnbWVudCwgJnJlZmVyZW5jZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2ZpbmRmaXRfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgJnJlZmVyZW5jZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIHJlZmVyZW5jZSAqLwotICAgIGlmIChyZWZlcmVuY2Uub2JqKQorICAgIGlmIChyZWZlcmVuY2Uub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcmVmZXJlbmNlKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjIxLDE3ICsyMzQsMjAgQEAKICAgICBQeV9idWZmZXIgcmVmZXJlbmNlID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOmZpbmRmYWN0b3IiLAotICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKQorICAgICAgICAmZnJhZ21lbnQsICZyZWZlcmVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9maW5kZmFjdG9yX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsICZyZWZlcmVuY2UpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciByZWZlcmVuY2UgKi8KLSAgICBpZiAocmVmZXJlbmNlLm9iaikKKyAgICBpZiAocmVmZXJlbmNlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnJlZmVyZW5jZSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI1NywxNCArMjczLDE2IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqbjpmaW5kbWF4IiwKLSAgICAgICAgJmZyYWdtZW50LCAmbGVuZ3RoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfZmluZG1heF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCBsZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0yODksMTQgKzMwNywxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmF2Z3BwIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2F2Z3BwX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzIxLDE0ICszNDEsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTptYXhwcCIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9tYXhwcF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1MywxNCArMzc1LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6Y3Jvc3MiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfY3Jvc3NfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zODcsMTQgKzQxMSwxNiBAQAogICAgIGRvdWJsZSBmYWN0b3I7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWQ6bXVsIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmZhY3RvcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX211bF9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCwgZmFjdG9yKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDIyLDE0ICs0NDgsMTYgQEAKICAgICBkb3VibGUgcmZhY3RvcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppZGQ6dG9tb25vIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZsZmFjdG9yLCAmcmZhY3RvcikpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF90b21vbm9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00NTcsMTQgKzQ4NSwxNiBAQAogICAgIGRvdWJsZSByZmFjdG9yOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlkZDp0b3N0ZXJlbyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbGZhY3RvciwgJnJmYWN0b3IpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJmxmYWN0b3IsICZyZmFjdG9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfdG9zdGVyZW9faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGxmYWN0b3IsIHJmYWN0b3IpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00OTEsMTcgKzUyMSwyMCBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5Kmk6YWRkIiwKLSAgICAgICAgJmZyYWdtZW50MSwgJmZyYWdtZW50MiwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50MSwgJmZyYWdtZW50MiwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYWRkX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQxLCAmZnJhZ21lbnQyLCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQxICovCi0gICAgaWYgKGZyYWdtZW50MS5vYmopCisgICAgaWYgKGZyYWdtZW50MS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudDEpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudDIgKi8KLSAgICBpZiAoZnJhZ21lbnQyLm9iaikKKyAgICBpZiAoZnJhZ21lbnQyLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50Mik7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTUyNywxNCArNTYwLDE2IEBACiAgICAgaW50IGJpYXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaWk6YmlhcyIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmYmlhcykpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmYmlhcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2JpYXNfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIGJpYXMpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC01NTksMTQgKzU5NCwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOnJldmVyc2UiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmV2ZXJzZV9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTU5MSwxNCArNjI4LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6Ynl0ZXN3YXAiLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfYnl0ZXN3YXBfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02MjUsMTQgKzY2NCwxNiBAQAogICAgIGludCBuZXd3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppaTpsaW4ybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZuZXd3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmV3d2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4ybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBuZXd3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTY2NiwxNCArNzA3LDE2IEBACiAgICAgaW50IHdlaWdodEIgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KmlpaWlPfGlpOnJhdGVjdiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmbmNoYW5uZWxzLCAmaW5yYXRlLCAmb3V0cmF0ZSwgJnN0YXRlLCAmd2VpZ2h0QSwgJndlaWdodEIpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCwgJm5jaGFubmVscywgJmlucmF0ZSwgJm91dHJhdGUsICZzdGF0ZSwgJndlaWdodEEsICZ3ZWlnaHRCKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfcmF0ZWN2X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoLCBuY2hhbm5lbHMsIGlucmF0ZSwgb3V0cmF0ZSwgc3RhdGUsIHdlaWdodEEsIHdlaWdodEIpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC02OTgsMTQgKzc0MSwxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmxpbjJ1bGF3IiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2xpbjJ1bGF3X2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNzMwLDE0ICs3NzUsMTYgQEAKICAgICBpbnQgd2lkdGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaTp1bGF3MmxpbiIsCi0gICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkKKyAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF91bGF3Mmxpbl9pbXBsKG1vZHVsZSwgJmZyYWdtZW50LCB3aWR0aCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJhZ21lbnQgKi8KLSAgICBpZiAoZnJhZ21lbnQub2JqKQorICAgIGlmIChmcmFnbWVudC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcmFnbWVudCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTc2MiwxNCArODA5LDE2IEBACiAgICAgaW50IHdpZHRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kmk6bGluMmFsYXciLAotICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGF1ZGlvb3BfbGluMmFsYXdfaW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZyYWdtZW50ICovCi0gICAgaWYgKGZyYWdtZW50Lm9iaikKKyAgICBpZiAoZnJhZ21lbnQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJhZ21lbnQpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC03OTQsMTQgKzg0MywxNiBAQAogICAgIGludCB3aWR0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSppOmFsYXcybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgpKQorICAgICAgICAmZnJhZ21lbnQsICZ3aWR0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBhdWRpb29wX2FsYXcybGluX2ltcGwobW9kdWxlLCAmZnJhZ21lbnQsIHdpZHRoKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODI4LDE0ICs4NzksMTYgQEAKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaU86bGluMmFkcGNtIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9saW4yYWRwY21faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODYyLDE1ICs5MTUsMTcgQEAKICAgICBQeU9iamVjdCAqc3RhdGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqaU86YWRwY20ybGluIiwKLSAgICAgICAgJmZyYWdtZW50LCAmd2lkdGgsICZzdGF0ZSkpCisgICAgICAgICZmcmFnbWVudCwgJndpZHRoLCAmc3RhdGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYXVkaW9vcF9hZHBjbTJsaW5faW1wbChtb2R1bGUsICZmcmFnbWVudCwgd2lkdGgsIHN0YXRlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBmcmFnbWVudCAqLwotICAgIGlmIChmcmFnbWVudC5vYmopCisgICAgaWYgKGZyYWdtZW50Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmZyYWdtZW50KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM4NWZiMDlmYTIxYTYyYzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwYWI3NGMzZmE1N2MzOWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oIGIvTW9kdWxlcy9jbGluaWMvYmluYXNjaWkuYy5oCmluZGV4IGUyMGNhYzIuLmFjYWZjYmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2JpbmFzY2lpLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9iaW5hc2NpaS5jLmgKQEAgLTIwLDggKzIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX3V1IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX3V1IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX3V1X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CkBAIC01MCwxNCArNTEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX3V1IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX3V1IiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX3V1X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtODAsOCArODMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfYmFzZTY0IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YTJiX2Jhc2U2NCIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2EyYl9iYXNlNjRfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKQEAgLTkzLDMxICs5NywzNyBAQAogfQogCiBQeURvY19TVFJWQVIoYmluYXNjaWlfYjJhX2Jhc2U2NF9fZG9jX18sCi0iYjJhX2Jhc2U2NCgkbW9kdWxlLCBkYXRhLCAvKVxuIgorImIyYV9iYXNlNjQoJG1vZHVsZSwgLywgZGF0YSwgKiwgbmV3bGluZT1UcnVlKVxuIgogIi0tXG4iCiAiXG4iCiAiQmFzZTY0LWNvZGUgbGluZSBvZiBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0IyQV9CQVNFNjRfTUVUSE9EREVGICAgIFwKLSAgICB7ImIyYV9iYXNlNjQiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX2Jhc2U2NCwgTUVUSF9PLCBiaW5hc2NpaV9iMmFfYmFzZTY0X19kb2NfX30sCisgICAgeyJiMmFfYmFzZTY0IiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2IyYV9iYXNlNjQsIE1FVEhfRkFTVENBTEwsIGJpbmFzY2lpX2IyYV9iYXNlNjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJpbmFzY2lpX2IyYV9iYXNlNjRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEpOworYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IG5ld2xpbmUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX2Jhc2U2NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJnKQorYmluYXNjaWlfYjJhX2Jhc2U2NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAibmV3bGluZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfCRpOmIyYV9iYXNlNjQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OworICAgIGludCBuZXdsaW5lID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2Jhc2U2NCIsICZkYXRhKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZuZXdsaW5lKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYjJhX2Jhc2U2NF9pbXBsKG1vZHVsZSwgJmRhdGEpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfYmFzZTY0X2ltcGwobW9kdWxlLCAmZGF0YSwgbmV3bGluZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTQwLDggKzE1MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmEyYl9ocXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaHF4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX2hxeF9pbXBsKG1vZHVsZSwgJmRhdGEpOwogCiBleGl0OgpAQCAtMTcwLDE0ICsxODEsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlY29kZV9ocXgiLCAmZGF0YSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpybGVjb2RlX2hxeCIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX3JsZWNvZGVfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjAwLDE0ICsyMTMsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hxeCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmIyYV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjMwLDE0ICsyNDUsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgZGF0YSA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cmxlZGVjb2RlX2hxeCIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJsZWRlY29kZV9ocXgiLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9ybGVkZWNvZGVfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMjYzLDE3ICsyODAsMjAgQEAKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSpJOmNyY19ocXgiLAotICAgICAgICAmZGF0YSwgJmNyYykpCisgICAgICAgICZkYXRhLCAmY3JjKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9jcmNfaHF4X2ltcGwobW9kdWxlLCAmZGF0YSwgY3JjKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI5OSwxNyArMzE5LDIwIEBACiAgICAgdW5zaWduZWQgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqfEk6Y3JjMzIiLAotICAgICAgICAmZGF0YSwgJmNyYykpCisgICAgICAgICZkYXRhLCAmY3JjKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIGNyYyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09ICh1bnNpZ25lZCBpbnQpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zMzUsMTQgKzM1OCwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpiMmFfaGV4IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6YjJhX2hleCIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2IyYV9oZXhfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNjcsMTQgKzM5MiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpoZXhsaWZ5IiwgJmRhdGEpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6aGV4bGlmeSIsICZkYXRhKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJpbmFzY2lpX2hleGxpZnlfaW1wbChtb2R1bGUsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MDAsOCArNDI3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgaGV4c3RyID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaGV4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjphMmJfaGV4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9hMmJfaGV4X2ltcGwobW9kdWxlLCAmaGV4c3RyKTsKIAogZXhpdDoKQEAgLTQzMiw4ICs0NjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBoZXhzdHIgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuaGV4bGlmeSIsIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZoZXhzdHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5oZXhsaWZ5IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmhleHN0cikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV91bmhleGxpZnlfaW1wbChtb2R1bGUsICZoZXhzdHIpOwogCiBleGl0OgpAQCAtNDUxLDIyICs0ODAsMjQgQEAKICJEZWNvZGUgYSBzdHJpbmcgb2YgcXAtZW5jb2RlZCBkYXRhLiIpOwogCiAjZGVmaW5lIEJJTkFTQ0lJX0EyQl9RUF9NRVRIT0RERUYgICAgXAotICAgIHsiYTJiX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9xcCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJpbmFzY2lpX2EyYl9xcF9fZG9jX199LAorICAgIHsiYTJiX3FwIiwgKFB5Q0Z1bmN0aW9uKWJpbmFzY2lpX2EyYl9xcCwgTUVUSF9GQVNUQ0FMTCwgYmluYXNjaWlfYTJiX3FwX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBiaW5hc2NpaV9hMmJfcXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBoZWFkZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYTJiX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYmluYXNjaWlfYTJiX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImRhdGEiLCAiaGVhZGVyIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aTphMmJfcXAiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aTphMmJfcXAiLCBfa2V5d29yZHMsCi0gICAgICAgIGFzY2lpX2J1ZmZlcl9jb252ZXJ0ZXIsICZkYXRhLCAmaGVhZGVyKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJmRhdGEsICZoZWFkZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYmluYXNjaWlfYTJiX3FwX2ltcGwobW9kdWxlLCAmZGF0YSwgaGVhZGVyKTsKIAogZXhpdDoKQEAgLTQ4OCwzMiArNTE5LDM1IEBACiAiYXJlIGJvdGggZW5jb2RlZC4gIFdoZW4gcXVvdGV0YWJzIGlzIHNldCwgc3BhY2UgYW5kIHRhYnMgYXJlIGVuY29kZWQuIik7CiAKICNkZWZpbmUgQklOQVNDSUlfQjJBX1FQX01FVEhPRERFRiAgICBcCi0gICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYmluYXNjaWlfYjJhX3FwX19kb2NfX30sCisgICAgeyJiMmFfcXAiLCAoUHlDRnVuY3Rpb24pYmluYXNjaWlfYjJhX3FwLCBNRVRIX0ZBU1RDQUxMLCBiaW5hc2NpaV9iMmFfcXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2IyYV9xcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IHF1b3RldGFicywKICAgICAgICAgICAgICAgICAgICAgIGludCBpc3RleHQsIGludCBoZWFkZXIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYmluYXNjaWlfYjJhX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYmluYXNjaWlfYjJhX3FwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJkYXRhIiwgInF1b3RldGFicyIsICJpc3RleHQiLCAiaGVhZGVyIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZGF0YSIsICJxdW90ZXRhYnMiLCAiaXN0ZXh0IiwgImhlYWRlciIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGlpaTpiMmFfcXAiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBxdW90ZXRhYnMgPSAwOwogICAgIGludCBpc3RleHQgPSAxOwogICAgIGludCBoZWFkZXIgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAieSp8aWlpOmIyYV9xcCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmRhdGEsICZxdW90ZXRhYnMsICZpc3RleHQsICZoZWFkZXIpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJnF1b3RldGFicywgJmlzdGV4dCwgJmhlYWRlcikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBiaW5hc2NpaV9iMmFfcXBfaW1wbChtb2R1bGUsICZkYXRhLCBxdW90ZXRhYnMsIGlzdGV4dCwgaGVhZGVyKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTExNzNmYzk3MThhNWVkYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWY4ZDZlNDhmNzVmNmQxZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9jbWF0aG1vZHVsZS5jLmgKaW5kZXggYTI1NTM1My4uMDU0MzFmYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvY21hdGhtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2NtYXRobW9kdWxlLmMuaApAQCAtMjEsOCArMjEsOSBAQAogICAgIFB5X2NvbXBsZXggejsKICAgICBQeV9jb21wbGV4IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvcyIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6YWNvcyIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hY29zX2ltcGwobW9kdWxlLCB6KTsKQEAgLTYyLDggKzYzLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFjb3NoIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphY29zaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hY29zaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0xMDMsOCArMTA1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXNpbl9pbXBsKG1vZHVsZSwgeik7CkBAIC0xNDQsOCArMTQ3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmFzaW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphc2luaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hc2luaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0xODUsOCArMTg5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW4iLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW4iLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfYXRhbl9pbXBsKG1vZHVsZSwgeik7CkBAIC0yMjYsOCArMjMxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmF0YW5oIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDphdGFuaCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9hdGFuaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0yNjcsOCArMjczLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvcyIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6Y29zIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2Nvc19pbXBsKG1vZHVsZSwgeik7CkBAIC0zMDgsOCArMzE1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmNvc2giLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfY29zaF9pbXBsKG1vZHVsZSwgeik7CkBAIC0zNDksOCArMzU3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmV4cCIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6ZXhwIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX2V4cF9pbXBsKG1vZHVsZSwgeik7CkBAIC0zOTAsOCArMzk5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmxvZzEwIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpsb2cxMCIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIC8qIG1vZGlmaWNhdGlvbnMgZm9yIHogKi8KICAgICBlcnJubyA9IDA7IFB5RlBFX1NUQVJUX1BST1RFQ1QoImNvbXBsZXggZnVuY3Rpb24iLCBnb3RvIGV4aXQpOwogICAgIF9yZXR1cm5fdmFsdWUgPSBjbWF0aF9sb2cxMF9pbXBsKG1vZHVsZSwgeik7CkBAIC00MzEsOCArNDQxLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6c2luIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Npbl9pbXBsKG1vZHVsZSwgeik7CkBAIC00NzIsOCArNDgzLDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNpbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc2luaF9pbXBsKG1vZHVsZSwgeik7CkBAIC01MTMsOCArNTI1LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNxcnQiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnNxcnQiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfc3FydF9pbXBsKG1vZHVsZSwgeik7CkBAIC01NTQsOCArNTY3LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6dGFuIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgLyogbW9kaWZpY2F0aW9ucyBmb3IgeiAqLwogICAgIGVycm5vID0gMDsgUHlGUEVfU1RBUlRfUFJPVEVDVCgiY29tcGxleCBmdW5jdGlvbiIsIGdvdG8gZXhpdCk7CiAgICAgX3JldHVybl92YWx1ZSA9IGNtYXRoX3Rhbl9pbXBsKG1vZHVsZSwgeik7CkBAIC01OTUsOCArNjA5LDkgQEAKICAgICBQeV9jb21wbGV4IHo7CiAgICAgUHlfY29tcGxleCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbmgiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnRhbmgiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICAvKiBtb2RpZmljYXRpb25zIGZvciB6ICovCiAgICAgZXJybm8gPSAwOyBQeUZQRV9TVEFSVF9QUk9URUNUKCJjb21wbGV4IGZ1bmN0aW9uIiwgZ290byBleGl0KTsKICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfdGFuaF9pbXBsKG1vZHVsZSwgeik7CkBAIC02MzksOCArNjU0LDkgQEAKICAgICBQeU9iamVjdCAqeV9vYmogPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJEfE86bG9nIiwKLSAgICAgICAgJngsICZ5X29iaikpCisgICAgICAgICZ4LCAmeV9vYmopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfbG9nX2ltcGwobW9kdWxlLCB4LCB5X29iaik7CiAKIGV4aXQ6CkBAIC02NjUsOCArNjgxLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6cGhhc2UiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBoYXNlIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfcGhhc2VfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtNjkzLDggKzcxMCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOnBvbGFyIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDpwb2xhciIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3BvbGFyX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTcyMSw4ICs3MzksOSBAQAogICAgIGRvdWJsZSBwaGk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRkOnJlY3QiLAotICAgICAgICAmciwgJnBoaSkpCisgICAgICAgICZyLCAmcGhpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX3JlY3RfaW1wbChtb2R1bGUsIHIsIHBoaSk7CiAKIGV4aXQ6CkBAIC03NDcsOCArNzY2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9jb21wbGV4IHo7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNmaW5pdGUiLCAmeikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzZmluaXRlIiwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNmaW5pdGVfaW1wbChtb2R1bGUsIHopOwogCiBleGl0OgpAQCAtNzczLDggKzc5Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfY29tcGxleCB6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJEOmlzbmFuIiwgJnopKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc25hbiIsICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGNtYXRoX2lzbmFuX2ltcGwobW9kdWxlLCB6KTsKIAogZXhpdDoKQEAgLTc5OSw4ICs4MjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2NvbXBsZXggejsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiRDppc2luZiIsICZ6KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkQ6aXNpbmYiLCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBjbWF0aF9pc2luZl9pbXBsKG1vZHVsZSwgeik7CiAKIGV4aXQ6CkBAIC04MjksMzIgKzg1MSwzNSBAQAogIm5vdCBjbG9zZSB0byBhbnl0aGluZywgZXZlbiBpdHNlbGYuIGluZiBhbmQgLWluZiBhcmUgb25seSBjbG9zZSB0byB0aGVtc2VsdmVzLiIpOwogCiAjZGVmaW5lIENNQVRIX0lTQ0xPU0VfTUVUSE9EREVGICAgIFwKLSAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGNtYXRoX2lzY2xvc2VfX2RvY19ffSwKKyAgICB7ImlzY2xvc2UiLCAoUHlDRnVuY3Rpb24pY21hdGhfaXNjbG9zZSwgTUVUSF9GQVNUQ0FMTCwgY21hdGhfaXNjbG9zZV9fZG9jX199LAogCiBzdGF0aWMgaW50CiBjbWF0aF9pc2Nsb3NlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfY29tcGxleCBhLCBQeV9jb21wbGV4IGIsCiAgICAgICAgICAgICAgICAgICAgZG91YmxlIHJlbF90b2wsIGRvdWJsZSBhYnNfdG9sKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWNtYXRoX2lzY2xvc2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitjbWF0aF9pc2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJhIiwgImIiLCAicmVsX3RvbCIsICJhYnNfdG9sIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiYSIsICJiIiwgInJlbF90b2wiLCAiYWJzX3RvbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IkREfCRkZDppc2Nsb3NlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9jb21wbGV4IGE7CiAgICAgUHlfY29tcGxleCBiOwogICAgIGRvdWJsZSByZWxfdG9sID0gMWUtMDk7CiAgICAgZG91YmxlIGFic190b2wgPSAwLjA7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJERHwkZGQ6aXNjbG9zZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmEsICZiLCAmcmVsX3RvbCwgJmFic190b2wpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmYSwgJmIsICZyZWxfdG9sLCAmYWJzX3RvbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gY21hdGhfaXNjbG9zZV9pbXBsKG1vZHVsZSwgYSwgYiwgcmVsX3RvbCwgYWJzX3RvbCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTczMjE5NDAyOWI3ZmIxZTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk3OGY1OTcwMmI0MTY1NWYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZmNudGxtb2R1bGUuYy5oCmluZGV4IDY3NjYwZWIuLjg0YTAwNGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL2ZjbnRsbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9mY250bG1vZHVsZS5jLmgKQEAgLTMzLDggKzMzLDkgQEAKICAgICBQeU9iamVjdCAqYXJnID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfE86ZmNudGwiLAotICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKQorICAgICAgICBjb252X2Rlc2NyaXB0b3IsICZmZCwgJmNvZGUsICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfZmNudGxfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBhcmcpOwogCiBleGl0OgpAQCAtOTEsOCArOTIsOSBAQAogICAgIGludCBtdXRhdGVfYXJnID0gMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZJfE9wOmlvY3RsIiwKLSAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmb2JfYXJnLCAmbXV0YXRlX2FyZykpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJm9iX2FyZywgJm11dGF0ZV9hcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfaW9jdGxfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBvYl9hcmcsIG11dGF0ZV9hcmcpOwogCiBleGl0OgpAQCAtMTIyLDggKzEyNCw5IEBACiAgICAgaW50IGNvZGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpmbG9jayIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSkpCisgICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBmY250bF9mbG9ja19pbXBsKG1vZHVsZSwgZmQsIGNvZGUpOwogCiBleGl0OgpAQCAtMTc1LDExICsxNzgsMTIgQEAKICAgICBpbnQgd2hlbmNlID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfE9PaTpsb2NrZiIsCi0gICAgICAgIGNvbnZfZGVzY3JpcHRvciwgJmZkLCAmY29kZSwgJmxlbm9iaiwgJnN0YXJ0b2JqLCAmd2hlbmNlKSkKKyAgICAgICAgY29udl9kZXNjcmlwdG9yLCAmZmQsICZjb2RlLCAmbGVub2JqLCAmc3RhcnRvYmosICZ3aGVuY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gZmNudGxfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb2RlLCBsZW5vYmosIHN0YXJ0b2JqLCB3aGVuY2UpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTdiMTMwNmI4NjRjMDFjOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZjZmY3NmE4ZmIyYzlhNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvZ3JwbW9kdWxlLmMuaAppbmRleCAyYzQ3YTQyLi4wMjgyYjRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9ncnBtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL2dycG1vZHVsZS5jLmgKQEAgLTExLDIxICsxMSwyMyBAQAogIklmIGlkIGlzIG5vdCB2YWxpZCwgcmFpc2UgS2V5RXJyb3IuIik7CiAKICNkZWZpbmUgR1JQX0dFVEdSR0lEX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRncmdpZCIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JnaWQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBncnBfZ2V0Z3JnaWRfX2RvY19ffSwKKyAgICB7ImdldGdyZ2lkIiwgKFB5Q0Z1bmN0aW9uKWdycF9nZXRncmdpZCwgTUVUSF9GQVNUQ0FMTCwgZ3JwX2dldGdyZ2lkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBncnBfZ2V0Z3JnaWRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqaWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZ3JwX2dldGdyZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJpZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImlkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTzpnZXRncmdpZCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpnZXRncmdpZCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmlkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmlkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGdycF9nZXRncmdpZF9pbXBsKG1vZHVsZSwgaWQpOwogCiBleGl0OgpAQCAtNDEsMjEgKzQzLDIzIEBACiAiSWYgbmFtZSBpcyBub3QgdmFsaWQsIHJhaXNlIEtleUVycm9yLiIpOwogCiAjZGVmaW5lIEdSUF9HRVRHUk5BTV9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0Z3JuYW0iLCAoUHlDRnVuY3Rpb24pZ3JwX2dldGdybmFtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZ3JwX2dldGdybmFtX19kb2NfX30sCisgICAgeyJnZXRncm5hbSIsIChQeUNGdW5jdGlvbilncnBfZ2V0Z3JuYW0sIE1FVEhfRkFTVENBTEwsIGdycF9nZXRncm5hbV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogZ3JwX2dldGdybmFtX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKm5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ3JwX2dldGdybmFtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZ3JwX2dldGdybmFtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsibmFtZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IlU6Z2V0Z3JuYW0iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVTpnZXRncm5hbSIsIF9rZXl3b3JkcywKLSAgICAgICAgJm5hbWUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBncnBfZ2V0Z3JuYW1faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtODIsNCArODYsNCBAQAogewogICAgIHJldHVybiBncnBfZ2V0Z3JhbGxfaW1wbChtb2R1bGUpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJlZTA5ZmVlZmM1NGEyY2IgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ2NDE3YWUwYTcyOThlMGUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL21kNW1vZHVsZS5jLmgKaW5kZXggMGJkOTU4YS4uYTg0MWZlNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvbWQ1bW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9tZDVtb2R1bGUuYy5oCkBAIC03MiwyNCArNzIsMjYgQEAKICJSZXR1cm4gYSBuZXcgTUQ1IGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX01ENV9NRDVfTUVUSE9EREVGICAgIFwKLSAgICB7Im1kNSIsIChQeUNGdW5jdGlvbilfbWQ1X21kNSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9tZDVfbWQ1X19kb2NfX30sCisgICAgeyJtZDUiLCAoUHlDRnVuY3Rpb24pX21kNV9tZDUsIE1FVEhfRkFTVENBTEwsIF9tZDVfbWQ1X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfbWQ1X21kNV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX21kNV9tZDUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfbWQ1X21kNShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86bWQ1IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOm1kNSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX21kNV9tZDVfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00Y2QzY2M5NmUzNTU2M2QyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NGNkNTBkYjA1MGYyNTg5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3Bvc2l4bW9kdWxlLmMuaAppbmRleCAxYmJmYzA2Li43MmQ3ODM0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9wb3NpeG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcG9zaXhtb2R1bGUuYy5oCkBAIC0yNywyMyArMjcsMjUgQEAKICIgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX1NUQVRfTUVUSE9EREVGICAgIFwKLSAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N0YXRfX2RvY19ffSwKKyAgICB7InN0YXQiLCAoUHlDRnVuY3Rpb24pb3Nfc3RhdCwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3RhdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mcDpzdGF0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzdGF0IiwgInBhdGgiLCAwLCAxKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyZwOnN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdF9pbXBsKG1vZHVsZSwgJnBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTYzLDIyICs2NSwyNCBAQAogIkVxdWl2YWxlbnQgdG8gc3RhdChwYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xTVEFUX01FVEhPRERFRiAgICBcCi0gICAgeyJsc3RhdCIsIChQeUNGdW5jdGlvbilvc19sc3RhdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xzdGF0X19kb2NfX30sCisgICAgeyJsc3RhdCIsIChQeUNGdW5jdGlvbilvc19sc3RhdCwgTUVUSF9GQVNUQ0FMTCwgb3NfbHN0YXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xzdGF0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbHN0YXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImxzdGF0IiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6bHN0YXQiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgRlNUQVRBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBGU1RBVEFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbHN0YXRfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTIxLDE3ICsxMjUsMTggQEAKICIgIGhhcyB0aGUgc3BlY2lmaWVkIGFjY2VzcyB0byB0aGUgcGF0aC4iKTsKIAogI2RlZmluZSBPU19BQ0NFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImFjY2VzcyIsIChQeUNGdW5jdGlvbilvc19hY2Nlc3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19hY2Nlc3NfX2RvY19ffSwKKyAgICB7ImFjY2VzcyIsIChQeUNGdW5jdGlvbilvc19hY2Nlc3MsIE1FVEhfRkFTVENBTEwsIG9zX2FjY2Vzc19fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19hY2Nlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAogICAgICAgICAgICAgICAgaW50IGVmZmVjdGl2ZV9pZHMsIGludCBmb2xsb3dfc3ltbGlua3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfYWNjZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfYWNjZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgImVmZmVjdGl2ZV9pZHMiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJlZmZlY3RpdmVfaWRzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImFjY2VzcyIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGU7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwpAQCAtMTM5LDEyICsxNDQsMTQgQEAKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwcDphY2Nlc3MiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIEZBQ0NFU1NBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZWZmZWN0aXZlX2lkcywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfYWNjZXNzX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkLCBlZmZlY3RpdmVfaWRzLCBmb2xsb3dfc3ltbGlua3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xNzgsMTEgKzE4NSwxMyBAQAogICAgIGludCBmZDsKICAgICBjaGFyICpfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnR0eW5hbWUiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0dHluYW1lIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc190dHluYW1lX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIyNCwyMSArMjMzLDIzIEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfQ0hESVJfTUVUSE9EREVGICAgIFwKLSAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hkaXJfX2RvY19ffSwKKyAgICB7ImNoZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19jaGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2hkaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfY2hkaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJjpjaGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hkaXIiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hESVIpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6Y2hkaXIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaGRpcl9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtMjYwLDIxICsyNzEsMjMgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNoZGlyKGZkKS4iKTsKIAogI2RlZmluZSBPU19GQ0hESVJfTUVUSE9EREVGICAgIFwKLSAgICB7ImZjaGRpciIsIChQeUNGdW5jdGlvbilvc19mY2hkaXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mY2hkaXJfX2RvY19ffSwKKyAgICB7ImZjaGRpciIsIChQeUNGdW5jdGlvbilvc19mY2hkaXIsIE1FVEhfRkFTVENBTEwsIG9zX2ZjaGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZmNoZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZjaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZjaGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZjaGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmNoZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNoZGlyX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMTAsMjUgKzMyMywyNyBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hNT0RfTUVUSE9EREVGICAgIFwKLSAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2htb2RfX2RvY19ffSwKKyAgICB7ImNobW9kIiwgKFB5Q0Z1bmN0aW9uKW9zX2NobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19jaG1vZF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2htb2RfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkLAogICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2NobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2htb2QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8JE8mcDpjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2htb2QiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hNT0QpOwogICAgIGludCBtb2RlOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBGQ0hNT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgRkNITU9EQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19jaG1vZF9pbXBsKG1vZHVsZSwgJnBhdGgsIG1vZGUsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTM0OSwyMiArMzY0LDI0IEBACiAiRXF1aXZhbGVudCB0byBvcy5jaG1vZChmZCwgbW9kZSkuIik7CiAKICNkZWZpbmUgT1NfRkNITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfZmNobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNobW9kX19kb2NfX30sCisgICAgeyJmY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfZmNobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaG1vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgaW50IG1vZGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZmNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZmNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJtb2RlIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAibW9kZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOmZjaG1vZCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogICAgIGludCBtb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaWk6ZmNobW9kIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQsICZtb2RlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mY2htb2RfaW1wbChtb2R1bGUsIGZkLCBtb2RlKTsKIAogZXhpdDoKQEAgLTM4NSwyMiArNDAyLDI0IEBACiAiRXF1aXZhbGVudCB0byBjaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLlwiIik7CiAKICNkZWZpbmUgT1NfTENITU9EX01FVEhPRERFRiAgICBcCi0gICAgeyJsY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfbGNobW9kLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfbGNobW9kX19kb2NfX30sCisgICAgeyJsY2htb2QiLCAoUHlDRnVuY3Rpb24pb3NfbGNobW9kLCBNRVRIX0ZBU1RDQUxMLCBvc19sY2htb2RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xjaG1vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfbGNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGNobW9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJmk6bGNobW9kIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2htb2QiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBtb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpOmxjaG1vZCIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGNobW9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSk7CiAKIGV4aXQ6CkBAIC00MjcsMjQgKzQ0NiwyNiBAQAogInVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19DSEZMQUdTX01FVEhPRERFRiAgICBcCi0gICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19jaGZsYWdzX19kb2NfX30sCisgICAgeyJjaGZsYWdzIiwgKFB5Q0Z1bmN0aW9uKW9zX2NoZmxhZ3MsIE1FVEhfRkFTVENBTEwsIG9zX2NoZmxhZ3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NoZmxhZ3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVuc2lnbmVkIGxvbmcgZmxhZ3MsCiAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hmbGFncyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8ma3xwOmNoZmxhZ3MiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImNoZmxhZ3MiLCAicGF0aCIsIDAsIDApOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJmt8cDpjaGZsYWdzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2NoZmxhZ3NfaW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTQ2OCwyMiArNDg5LDI0IEBACiAiRXF1aXZhbGVudCB0byBjaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xDSEZMQUdTX01FVEhPRERFRiAgICBcCi0gICAgeyJsY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19sY2hmbGFncywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaGZsYWdzX19kb2NfX30sCisgICAgeyJsY2hmbGFncyIsIChQeUNGdW5jdGlvbilvc19sY2hmbGFncywgTUVUSF9GQVNUQ0FMTCwgb3NfbGNoZmxhZ3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xjaGZsYWdzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCB1bnNpZ25lZCBsb25nIGZsYWdzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaGZsYWdzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGNoZmxhZ3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZsYWdzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZrOmxjaGZsYWdzIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsY2hmbGFncyIsICJwYXRoIiwgMCwgMCk7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mazpsY2hmbGFncyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hmbGFnc19pbXBsKG1vZHVsZSwgJnBhdGgsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTUwNCwyMSArNTI3LDIzIEBACiAiQ2hhbmdlIHJvb3QgZGlyZWN0b3J5IHRvIHBhdGguIik7CiAKICNkZWZpbmUgT1NfQ0hST09UX01FVEhPRERFRiAgICBcCi0gICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hyb290X19kb2NfX30sCisgICAgeyJjaHJvb3QiLCAoUHlDRnVuY3Rpb24pb3NfY2hyb290LCBNRVRIX0ZBU1RDQUxMLCBvc19jaHJvb3RfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nocm9vdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19jaHJvb3QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19jaHJvb3QoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6Y2hyb290IiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJjaHJvb3QiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6Y2hyb290IiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hyb290X2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC01MzksMjEgKzU2NCwyMyBAQAogIkZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2suIik7CiAKICNkZWZpbmUgT1NfRlNZTkNfTUVUSE9EREVGICAgIFwKLSAgICB7ImZzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzeW5jLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZnN5bmNfX2RvY19ffSwKKyAgICB7ImZzeW5jIiwgKFB5Q0Z1bmN0aW9uKW9zX2ZzeW5jLCBNRVRIX0ZBU1RDQUxMLCBvc19mc3luY19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZnN5bmNfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZnN5bmMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19mc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZzeW5jIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpmc3luYyIsIF9rZXl3b3JkcywKLSAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgZmlsZGVzX2NvbnZlcnRlciwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzeW5jX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC01OTMsMjEgKzYyMCwyMyBAQAogIkZvcmNlIHdyaXRlIG9mIGZkIHRvIGRpc2sgd2l0aG91dCBmb3JjaW5nIHVwZGF0ZSBvZiBtZXRhZGF0YS4iKTsKIAogI2RlZmluZSBPU19GREFUQVNZTkNfTUVUSE9EREVGICAgIFwKLSAgICB7ImZkYXRhc3luYyIsIChQeUNGdW5jdGlvbilvc19mZGF0YXN5bmMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mZGF0YXN5bmNfX2RvY19ffSwKKyAgICB7ImZkYXRhc3luYyIsIChQeUNGdW5jdGlvbilvc19mZGF0YXN5bmMsIE1FVEhfRkFTVENBTEwsIG9zX2ZkYXRhc3luY19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZmRhdGFzeW5jX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2ZkYXRhc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZkYXRhc3luYyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOmZkYXRhc3luYyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6ZmRhdGFzeW5jIiwgX2tleXdvcmRzLAotICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBmaWxkZXNfY29udmVydGVyLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmRhdGFzeW5jX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC02NDksMjYgKzY3OCwyOCBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfQ0hPV05fTUVUSE9EREVGICAgIFwKLSAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfY2hvd25fX2RvY19ffSwKKyAgICB7ImNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2Nob3duLCBNRVRIX0ZBU1RDQUxMLCBvc19jaG93bl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLAogICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2Nob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2hvd24oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mTyZ8JE8mcDpjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiY2hvd24iLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GQ0hPV04pOwogICAgIHVpZF90IHVpZDsKICAgICBnaWRfdCBnaWQ7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mfCRPJnA6Y2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkLCBGQ0hPV05BVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQsIEZDSE9XTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNjkxLDIzICs3MjIsMjUgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CiAKICNkZWZpbmUgT1NfRkNIT1dOX01FVEhPRERFRiAgICBcCi0gICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZmNob3duX19kb2NfX30sCisgICAgeyJmY2hvd24iLCAoUHlDRnVuY3Rpb24pb3NfZmNob3duLCBNRVRIX0ZBU1RDQUxMLCBvc19mY2hvd25fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2ZjaG93bl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZmNob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZmNob3duKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCAidWlkIiwgImdpZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlPJk8mOmZjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogICAgIHVpZF90IHVpZDsKICAgICBnaWRfdCBnaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpTyZPJjpmY2hvd24iLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZ1aWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZ2lkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZmNob3duX2ltcGwobW9kdWxlLCBmZCwgdWlkLCBnaWQpOwogCiBleGl0OgpAQCAtNzI4LDIzICs3NjEsMjUgQEAKICJFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiAjZGVmaW5lIE9TX0xDSE9XTl9NRVRIT0RERUYgICAgXAotICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xjaG93bl9fZG9jX199LAorICAgIHsibGNob3duIiwgKFB5Q0Z1bmN0aW9uKW9zX2xjaG93biwgTUVUSF9GQVNUQ0FMTCwgb3NfbGNob3duX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19sY2hvd25faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xjaG93bihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJ1aWQiLCAiZ2lkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJk8mOmxjaG93biIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGNob3duIiwgInBhdGgiLCAwLCAwKTsKICAgICB1aWRfdCB1aWQ7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJk8mOmxjaG93biIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZnaWQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIF9QeV9VaWRfQ29udmVydGVyLCAmdWlkLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19sY2hvd25faW1wbChtb2R1bGUsICZwYXRoLCB1aWQsIGdpZCk7CiAKIGV4aXQ6CkBAIC04MTIsMjYgKzg0NywyOCBAQAogIiAgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJsaW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpbmssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saW5rX19kb2NfX30sCisgICAgeyJsaW5rIiwgKFB5Q0Z1bmN0aW9uKW9zX2xpbmssIE1FVEhfRkFTVENBTEwsIG9zX2xpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2xpbmtfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnNyYywgcGF0aF90ICpkc3QsIGludCBzcmNfZGlyX2ZkLAogICAgICAgICAgICAgIGludCBkc3RfZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mcDpsaW5rIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3Qgc3JjID0gUEFUSF9UX0lOSVRJQUxJWkUoImxpbmsiLCAic3JjIiwgMCwgMCk7CiAgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJsaW5rIiwgImRzdCIsIDAsIDApOwogICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JE8mTyZwOmxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbGlua19pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTg2MywyMSArOTAwLDIzIEBACiAiZW50cmllcyBcJy5cJyBhbmQgXCcuLlwnIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LiIpOwogCiAjZGVmaW5lIE9TX0xJU1RESVJfTUVUSE9EREVGICAgIFwKLSAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2xpc3RkaXJfX2RvY19ffSwKKyAgICB7Imxpc3RkaXIiLCAoUHlDRnVuY3Rpb24pb3NfbGlzdGRpciwgTUVUSF9GQVNUQ0FMTCwgb3NfbGlzdGRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGlzdGRpcl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19saXN0ZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfbGlzdGRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TyY6bGlzdGRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGlzdGRpciIsICJwYXRoIiwgMSwgUEFUSF9IQVZFX0ZET1BFTkRJUik7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyY6bGlzdGRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpc3RkaXJfaW1wbChtb2R1bGUsICZwYXRoKTsKIAogZXhpdDoKQEAgLTkwNiw4ICs5NDUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9nZXRmdWxscGF0aG5hbWUiLCAicGF0aCIsIDAsIDApOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfZ2V0ZnVsbHBhdGhuYW1lIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9nZXRmdWxscGF0aG5hbWUiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZ1bGxwYXRobmFtZV9pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtOTM5LDggKzk3OSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnBhdGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6X2dldGZpbmFscGF0aG5hbWUiLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOl9nZXRmaW5hbHBhdGhuYW1lIiwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2dldGZpbmFscGF0aG5hbWVfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtOTY4LDggKzEwMDksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIl9pc2RpciIsICJwYXRoIiwgMCwgMCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOl9pc2RpciIsIHBhdGhfY29udmVydGVyLCAmcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpfaXNkaXIiLCBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfX2lzZGlyX2ltcGwobW9kdWxlLCAmcGF0aCk7CiAKIGV4aXQ6CkBAIC05OTAsMjEgKzEwMzIsMjMgQEAKICJBIGhlbHBlciBmdW5jdGlvbiBmb3IgaXNtb3VudCBvbiBXaW4zMi4iKTsKIAogI2RlZmluZSBPU19fR0VUVk9MVU1FUEFUSE5BTUVfTUVUSE9EREVGICAgIFwKLSAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZ2V0dm9sdW1lcGF0aG5hbWVfX2RvY19ffSwKKyAgICB7Il9nZXR2b2x1bWVwYXRobmFtZSIsIChQeUNGdW5jdGlvbilvc19fZ2V0dm9sdW1lcGF0aG5hbWUsIE1FVEhfRkFTVENBTEwsIG9zX19nZXR2b2x1bWVwYXRobmFtZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2dldHZvbHVtZXBhdGhuYW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2dldHZvbHVtZXBhdGhuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfX2dldHZvbHVtZXBhdGhuYW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7IlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIlU6X2dldHZvbHVtZXBhdGhuYW1lIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXR2b2x1bWVwYXRobmFtZV9pbXBsKG1vZHVsZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC0xMDI3LDIzICsxMDcxLDI1IEBACiAiVGhlIG1vZGUgYXJndW1lbnQgaXMgaWdub3JlZCBvbiBXaW5kb3dzLiIpOwogCiAjZGVmaW5lIE9TX01LRElSX01FVEhPRERFRiAgICBcCi0gICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZGlyX19kb2NfX30sCisgICAgeyJta2RpciIsIChQeUNGdW5jdGlvbilvc19ta2RpciwgTUVUSF9GQVNUQ0FMTCwgb3NfbWtkaXJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX21rZGlyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta2RpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rZGlyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfGkkTyY6bWtkaXIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoIm1rZGlyIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZSA9IDUxMTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBNS0RJUkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtkaXJfaW1wbChtb2R1bGUsICZwYXRoLCBtb2RlLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTA3Myw4ICsxMTE5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgaW5jcmVtZW50OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOm5pY2UiLCAmaW5jcmVtZW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6bmljZSIsICZpbmNyZW1lbnQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbmljZV9pbXBsKG1vZHVsZSwgaW5jcmVtZW50KTsKIAogZXhpdDoKQEAgLTEwOTIsMjIgKzExMzksMjQgQEAKICJSZXR1cm4gcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOwogCiAjZGVmaW5lIE9TX0dFVFBSSU9SSVRZX01FVEhPRERFRiAgICBcCi0gICAgeyJnZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19nZXRwcmlvcml0eSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2dldHByaW9yaXR5X19kb2NfX30sCisgICAgeyJnZXRwcmlvcml0eSIsIChQeUNGdW5jdGlvbilvc19nZXRwcmlvcml0eSwgTUVUSF9GQVNUQ0FMTCwgb3NfZ2V0cHJpb3JpdHlfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldHByaW9yaXR5X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHdoaWNoLCBpbnQgd2hvKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0cHJpb3JpdHkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IndoaWNoIiwgIndobyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgd2hpY2g7CiAgICAgaW50IHdobzsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpOmdldHByaW9yaXR5IiwgX2tleXdvcmRzLAotICAgICAgICAmd2hpY2gsICZ3aG8pKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2hpY2gsICZ3aG8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cHJpb3JpdHlfaW1wbChtb2R1bGUsIHdoaWNoLCB3aG8pOwogCiBleGl0OgpAQCAtMTEyNSwyMyArMTE3NCwyNSBAQAogIlNldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CiAKICNkZWZpbmUgT1NfU0VUUFJJT1JJVFlfTUVUSE9EREVGICAgIFwKLSAgICB7InNldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2V0cHJpb3JpdHlfX2RvY19ffSwKKyAgICB7InNldHByaW9yaXR5IiwgKFB5Q0Z1bmN0aW9uKW9zX3NldHByaW9yaXR5LCBNRVRIX0ZBU1RDQUxMLCBvc19zZXRwcmlvcml0eV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc2V0cHJpb3JpdHlfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgd2hpY2gsIGludCB3aG8sIGludCBwcmlvcml0eSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zZXRwcmlvcml0eShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3NldHByaW9yaXR5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCAicHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ3aGljaCIsICJ3aG8iLCAicHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaWk6c2V0cHJpb3JpdHkiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCB3aGljaDsKICAgICBpbnQgd2hvOwogICAgIGludCBwcmlvcml0eTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImlpaTpzZXRwcmlvcml0eSIsIF9rZXl3b3JkcywKLSAgICAgICAgJndoaWNoLCAmd2hvLCAmcHJpb3JpdHkpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2hpY2gsICZ3aG8sICZwcmlvcml0eSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRwcmlvcml0eV9pbXBsKG1vZHVsZSwgd2hpY2gsIHdobywgcHJpb3JpdHkpOwogCiBleGl0OgpAQCAtMTE2MywyNSArMTIxNCwyNyBAQAogIiAgSWYgdGhleSBhcmUgdW5hdmFpbGFibGUsIHVzaW5nIHRoZW0gd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfUkVOQU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJyZW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfcmVuYW1lLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVuYW1lX19kb2NfX30sCisgICAgeyJyZW5hbWUiLCAoUHlDRnVuY3Rpb24pb3NfcmVuYW1lLCBNRVRIX0ZBU1RDQUxMLCBvc19yZW5hbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JlbmFtZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsCiAgICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZW5hbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19yZW5hbWUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAic3JjX2Rpcl9mZCIsICJkc3RfZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRPJk8mOnJlbmFtZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAic3JjIiwgMCwgMCk7CiAgICAgcGF0aF90IGRzdCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW5hbWUiLCAiZHN0IiwgMCwgMCk7CiAgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkTyZPJjpyZW5hbWUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVuYW1lX2ltcGwobW9kdWxlLCAmc3JjLCAmZHN0LCBzcmNfZGlyX2ZkLCBkc3RfZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyMDYsMjUgKzEyNTksMjcgQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlwiIik7CiAKICNkZWZpbmUgT1NfUkVQTEFDRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbilvc19yZXBsYWNlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfcmVwbGFjZV9fZG9jX199LAorICAgIHsicmVwbGFjZSIsIChQeUNGdW5jdGlvbilvc19yZXBsYWNlLCBNRVRIX0ZBU1RDQUxMLCBvc19yZXBsYWNlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZXBsYWNlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpzcmMsIHBhdGhfdCAqZHN0LCBpbnQgc3JjX2Rpcl9mZCwKICAgICAgICAgICAgICAgICBpbnQgZHN0X2Rpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZXBsYWNlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVwbGFjZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzcmMiLCAiZHN0IiwgInNyY19kaXJfZmQiLCAiZHN0X2Rpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JE8mTyY6cmVwbGFjZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZXBsYWNlIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgicmVwbGFjZSIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgc3JjX2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBkc3RfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfCRPJk8mOnJlcGxhY2UiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgZGlyX2ZkX2NvbnZlcnRlciwgJnNyY19kaXJfZmQsIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVwbGFjZV9pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCk7CiAKIGV4aXQ6CkBAIC0xMjQ4LDIyICsxMzAzLDI0IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfUk1ESVJfTUVUSE9EREVGICAgIFwKLSAgICB7InJtZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JtZGlyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfcm1kaXJfX2RvY19ffSwKKyAgICB7InJtZGlyIiwgKFB5Q0Z1bmN0aW9uKW9zX3JtZGlyLCBNRVRIX0ZBU1RDQUxMLCBvc19ybWRpcl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfcm1kaXJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfcm1kaXIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19ybWRpcihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicm1kaXIiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpybWRpciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBVTkxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JtZGlyX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTEyODIsMjUgKzEzMzksMjggQEAKICJFeGVjdXRlIHRoZSBjb21tYW5kIGluIGEgc3Vic2hlbGwuIik7CiAKICNkZWZpbmUgT1NfU1lTVEVNX01FVEhPRERFRiAgICBcCi0gICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3lzdGVtX19kb2NfX30sCisgICAgeyJzeXN0ZW0iLCAoUHlDRnVuY3Rpb24pb3Nfc3lzdGVtLCBNRVRIX0ZBU1RDQUxMLCBvc19zeXN0ZW1fX2RvY19ffSwKIAogc3RhdGljIGxvbmcKIG9zX3N5c3RlbV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKmNvbW1hbmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3lzdGVtKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiY29tbWFuZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InU6c3lzdGVtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9VTklDT0RFICpjb21tYW5kOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInU6c3lzdGVtIiwgX2tleXdvcmRzLAotICAgICAgICAmY29tbWFuZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZjb21tYW5kKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19zeXN0ZW1faW1wbChtb2R1bGUsIGNvbW1hbmQpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xMzE4LDI1ICsxMzc4LDI4IEBACiAiRXhlY3V0ZSB0aGUgY29tbWFuZCBpbiBhIHN1YnNoZWxsLiIpOwogCiAjZGVmaW5lIE9TX1NZU1RFTV9NRVRIT0RERUYgICAgXAotICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5c3RlbV9fZG9jX199LAorICAgIHsic3lzdGVtIiwgKFB5Q0Z1bmN0aW9uKW9zX3N5c3RlbSwgTUVUSF9GQVNUQ0FMTCwgb3Nfc3lzdGVtX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19zeXN0ZW1faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqY29tbWFuZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zeXN0ZW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zeXN0ZW0oUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImNvbW1hbmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJjb21tYW5kIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyY6c3lzdGVtIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqY29tbWFuZCA9IE5VTEw7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3lzdGVtIiwgX2tleXdvcmRzLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjb21tYW5kKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmY29tbWFuZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzdGVtX2ltcGwobW9kdWxlLCBjb21tYW5kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMTM2Niw4ICsxNDI5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbWFzazsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp1bWFzayIsICZtYXNrKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6dW1hc2siLCAmbWFzaykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bWFza19pbXBsKG1vZHVsZSwgbWFzayk7CiAKIGV4aXQ6CkBAIC0xMzg2LDIyICsxNDUwLDI0IEBACiAiICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKICNkZWZpbmUgT1NfVU5MSU5LX01FVEhPRERFRiAgICBcCi0gICAgeyJ1bmxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfdW5saW5rLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfdW5saW5rX19kb2NfX30sCisgICAgeyJ1bmxpbmsiLCAoUHlDRnVuY3Rpb24pb3NfdW5saW5rLCBNRVRIX0ZBU1RDQUxMLCBvc191bmxpbmtfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3VubGlua19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc191bmxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc191bmxpbmsoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnwkTyY6dW5saW5rIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJ1bmxpbmsiLCAicGF0aCIsIDAsIDApOwogICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgVU5MSU5LQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bmxpbmtfaW1wbChtb2R1bGUsICZwYXRoLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMTQyMywyMiArMTQ4OSwyNCBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1JFTU9WRV9NRVRIT0RERUYgICAgXAotICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbW92ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbW92ZV9fZG9jX199LAorICAgIHsicmVtb3ZlIiwgKFB5Q0Z1bmN0aW9uKW9zX3JlbW92ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVtb3ZlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19yZW1vdmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcmVtb3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfcmVtb3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8JE8mOnJlbW92ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicmVtb3ZlIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyY6cmVtb3ZlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFVOTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVtb3ZlX2ltcGwobW9kdWxlLCAmcGF0aCwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTE1MDMsMjYgKzE1NzEsMjggQEAKICIgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1VUSU1FX01FVEhPRERFRiAgICBcCi0gICAgeyJ1dGltZSIsIChQeUNGdW5jdGlvbilvc191dGltZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3V0aW1lX19kb2NfX30sCisgICAgeyJ1dGltZSIsIChQeUNGdW5jdGlvbilvc191dGltZSwgTUVUSF9GQVNUQ0FMTCwgb3NfdXRpbWVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3V0aW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqdGltZXMsIFB5T2JqZWN0ICpucywKICAgICAgICAgICAgICAgaW50IGRpcl9mZCwgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc191dGltZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3V0aW1lKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgInRpbWVzIiwgIm5zIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxPJE9PJnA6dXRpbWUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInV0aW1lIiwgInBhdGgiLCAwLCBQQVRIX1VUSU1FX0hBVkVfRkQpOwogICAgIFB5T2JqZWN0ICp0aW1lcyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5zID0gTlVMTDsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxPJE9PJnA6dXRpbWUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJnRpbWVzLCAmbnMsIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJnRpbWVzLCAmbnMsIEZVVElNRU5TQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCwgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191dGltZV9pbXBsKG1vZHVsZSwgJnBhdGgsIHRpbWVzLCBucywgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtMTUzOSwyMSArMTYwOSwyMyBAQAogIkV4aXQgdG8gdGhlIHN5c3RlbSB3aXRoIHNwZWNpZmllZCBzdGF0dXMsIHdpdGhvdXQgbm9ybWFsIGV4aXQgcHJvY2Vzc2luZy4iKTsKIAogI2RlZmluZSBPU19fRVhJVF9NRVRIT0RERUYgICAgXAotICAgIHsiX2V4aXQiLCAoUHlDRnVuY3Rpb24pb3NfX2V4aXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19fZXhpdF9fZG9jX199LAorICAgIHsiX2V4aXQiLCAoUHlDRnVuY3Rpb24pb3NfX2V4aXQsIE1FVEhfRkFTVENBTEwsIG9zX19leGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19fZXhpdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2V4aXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19fZXhpdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpfZXhpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6X2V4aXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdGF0dXMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19leGl0X2ltcGwobW9kdWxlLCBzdGF0dXMpOwogCiBleGl0OgpAQCAtMTU3NywyMyArMTY0OSwyNCBAQAogICAgIHsiZXhlY3YiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3YsIE1FVEhfVkFSQVJHUywgb3NfZXhlY3ZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKK29zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19leGVjdihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgiZXhlY3YiLCAicGF0aCIsIDAsIDApOwogICAgIFB5T2JqZWN0ICphcmd2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAotICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19leGVjdl9pbXBsKG1vZHVsZSwgcGF0aCwgYXJndik7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2X2ltcGwobW9kdWxlLCAmcGF0aCwgYXJndik7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgcGF0aCAqLwotICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNjE2LDIzICsxNjg5LDI1IEBACiAiICAgIERpY3Rpb25hcnkgb2Ygc3RyaW5ncyBtYXBwaW5nIHRvIHN0cmluZ3MuIik7CiAKICNkZWZpbmUgT1NfRVhFQ1ZFX01FVEhPRERFRiAgICBcCi0gICAgeyJleGVjdmUiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3ZlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZXhlY3ZlX19kb2NfX30sCisgICAgeyJleGVjdmUiLCAoUHlDRnVuY3Rpb24pb3NfZXhlY3ZlLCBNRVRIX0ZBU1RDQUxMLCBvc19leGVjdmVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2V4ZWN2ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsIFB5T2JqZWN0ICplbnYpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfZXhlY3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZXhlY3ZlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJhcmd2IiwgImVudiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mT086ZXhlY3ZlIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJleGVjdmUiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GRVhFQ1ZFKTsKICAgICBQeU9iamVjdCAqYXJndjsKICAgICBQeU9iamVjdCAqZW52OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2V4ZWN2ZV9pbXBsKG1vZHVsZSwgJnBhdGgsIGFyZ3YsIGVudik7CiAKIGV4aXQ6CkBAIC0xNjQ0LDcgKzE3MTksNyBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChIQVZFX0VYRUNWKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKyNpZiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKQogCiBQeURvY19TVFJWQVIob3Nfc3Bhd252X19kb2NfXywKICJzcGF3bnYoJG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndiwgLylcbiIKQEAgLTE2NjMsMzEgKzE3MzgsMzIgQEAKICAgICB7InNwYXdudiIsIChQeUNGdW5jdGlvbilvc19zcGF3bnYsIE1FVEhfVkFSQVJHUywgb3Nfc3Bhd252X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKK29zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NwYXdudihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbW9kZTsKLSAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3Bhd252IiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTzpzcGF3bnYiLAotICAgICAgICAmbW9kZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCwgJmFyZ3YpKQorICAgICAgICAmbW9kZSwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmYXJndikpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudl9pbXBsKG1vZHVsZSwgbW9kZSwgcGF0aCwgYXJndik7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX3NwYXdudl9pbXBsKG1vZHVsZSwgbW9kZSwgJnBhdGgsIGFyZ3YpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHBhdGggKi8KLSAgICBQeV9YREVDUkVGKHBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChIQVZFX1NQQVdOVikgKi8KKyNlbmRpZiAvKiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKSAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1NQQVdOVikKKyNpZiAoZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpKQogCiBQeURvY19TVFJWQVIob3Nfc3Bhd252ZV9fZG9jX18sCiAic3Bhd252ZSgkbW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCBlbnYsIC8pXG4iCkBAIC0xNzA4LDcgKzE3ODQsNyBAQAogICAgIHsic3Bhd252ZSIsIChQeUNGdW5jdGlvbilvc19zcGF3bnZlLCBNRVRIX1ZBUkFSR1MsIG9zX3NwYXdudmVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudmVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAorb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2LAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbnYpOwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTcxNiwyMyArMTc5MiwyNCBAQAogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBtb2RlOwotICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKyAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJzcGF3bnZlIiwgInBhdGgiLCAwLCAwKTsKICAgICBQeU9iamVjdCAqYXJndjsKICAgICBQeU9iamVjdCAqZW52OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPTzpzcGF3bnZlIiwKLSAgICAgICAgJm1vZGUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGgsICZhcmd2LCAmZW52KSkKKyAgICAgICAgJm1vZGUsIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmFyZ3YsICZlbnYpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKLSAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZlX2ltcGwobW9kdWxlLCBtb2RlLCBwYXRoLCBhcmd2LCBlbnYpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19zcGF3bnZlX2ltcGwobW9kdWxlLCBtb2RlLCAmcGF0aCwgYXJndiwgZW52KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBwYXRoICovCi0gICAgUHlfWERFQ1JFRihwYXRoKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TUEFXTlYpICovCisjZW5kaWYgLyogKGRlZmluZWQoSEFWRV9TUEFXTlYpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKSkgKi8KIAogI2lmIGRlZmluZWQoSEFWRV9GT1JLMSkKIApAQCAtMTc5MSwyMSArMTg2OCwyMyBAQAogIkdldCB0aGUgbWF4aW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuIik7CiAKICNkZWZpbmUgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01BWF9NRVRIT0RERUYgICAgXAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heF9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21heCIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4LCBNRVRIX0ZBU1RDQUxMLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHBvbGljeSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgcG9saWN5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgX2tleXdvcmRzLAotICAgICAgICAmcG9saWN5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBvbGljeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X2ltcGwobW9kdWxlLCBwb2xpY3kpOwogCiBleGl0OgpAQCAtMTgyMywyMSArMTkwMiwyMyBAQAogIkdldCB0aGUgbWluaW11bSBzY2hlZHVsaW5nIHByaW9yaXR5IGZvciBwb2xpY3kuIik7CiAKICNkZWZpbmUgT1NfU0NIRURfR0VUX1BSSU9SSVRZX01JTl9NRVRIT0RERUYgICAgXAotICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbl9fZG9jX199LAorICAgIHsic2NoZWRfZ2V0X3ByaW9yaXR5X21pbiIsIChQeUNGdW5jdGlvbilvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluLCBNRVRIX0ZBU1RDQUxMLCBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHBvbGljeSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicG9saWN5IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgcG9saWN5OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgX2tleXdvcmRzLAotICAgICAgICAmcG9saWN5KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBvbGljeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRfcHJpb3JpdHlfbWluX2ltcGwobW9kdWxlLCBwb2xpY3kpOwogCiBleGl0OgpAQCAtMTg2OCw4ICsxOTQ5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHNjaGVkdWxlciIsICZwaWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0c2NoZWR1bGVyIiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRzY2hlZHVsZXJfaW1wbChtb2R1bGUsIHBpZCk7CiAKIGV4aXQ6CkBAIC0xODk2LDEyICsxOTc4LDE0IEBACiBvc19zY2hlZF9wYXJhbShQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2NoZWRfcHJpb3JpdHkiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86c2NoZWRfcGFyYW0iLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzY2hlZF9wcmlvcml0eTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk86c2NoZWRfcGFyYW0iLCBfa2V5d29yZHMsCi0gICAgICAgICZzY2hlZF9wcmlvcml0eSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChhcmdzLCBrd2FyZ3MsICZfcGFyc2VyLAorICAgICAgICAmc2NoZWRfcHJpb3JpdHkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfcGFyYW1faW1wbCh0eXBlLCBzY2hlZF9wcmlvcml0eSk7CiAKIGV4aXQ6CkBAIC0xOTM3LDggKzIwMjEsOSBAQAogICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJpTyY6c2NoZWRfc2V0c2NoZWR1bGVyIiwKLSAgICAgICAgJnBpZCwgJnBvbGljeSwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgJnBpZCwgJnBvbGljeSwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldHNjaGVkdWxlcl9pbXBsKG1vZHVsZSwgcGlkLCBwb2xpY3ksICZwYXJhbSk7CiAKIGV4aXQ6CkBAIC0xOTcwLDggKzIwNTUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0cGFyYW0iLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldHBhcmFtIiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRwYXJhbV9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTIwMDYsOCArMjA5Miw5IEBACiAgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIk8mOnNjaGVkX3NldHBhcmFtIiwKLSAgICAgICAgJnBpZCwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgJnBpZCwgY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NjaGVkX3NldHBhcmFtX2ltcGwobW9kdWxlLCBwaWQsICZwYXJhbSk7CiAKIGV4aXQ6CkBAIC0yMDM5LDExICsyMTI2LDEzIEBACiAgICAgcGlkX3QgcGlkOwogICAgIGRvdWJsZSBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9ycl9nZXRfaW50ZXJ2YWwiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX3JyX2dldF9pbnRlcnZhbCIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX3NjaGVkX3JyX2dldF9pbnRlcnZhbF9pbXBsKG1vZHVsZSwgcGlkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEuMCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEuMCkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5RmxvYXRfRnJvbURvdWJsZShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTIwOTgsOCArMjE4Nyw5IEBACiAgICAgUHlPYmplY3QgKm1hc2s7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiTzpzY2hlZF9zZXRhZmZpbml0eSIsCi0gICAgICAgICZwaWQsICZtYXNrKSkKKyAgICAgICAgJnBpZCwgJm1hc2spKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2NoZWRfc2V0YWZmaW5pdHlfaW1wbChtb2R1bGUsIHBpZCwgbWFzayk7CiAKIGV4aXQ6CkBAIC0yMTE0LDcgKzIyMDQsNyBAQAogInNjaGVkX2dldGFmZmluaXR5KCRtb2R1bGUsIHBpZCwgLylcbiIKICItLVxuIgogIlxuIgotIlJldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQuXG4iCisiUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZCAob3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBpZiB6ZXJvKS5cbiIKICJcbiIKICJUaGUgYWZmaW5pdHkgaXMgcmV0dXJuZWQgYXMgYSBzZXQgb2YgQ1BVIGlkZW50aWZpZXJzLiIpOwogCkBAIC0yMTMwLDggKzIyMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHBpZF90IHBpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiIiBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX2dldGFmZmluaXR5IiwgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKG1vZHVsZSwgcGlkKTsKIAogZXhpdDoKQEAgLTIyNTgsNiArMjM0OSw4IEBACiAKICNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUR0lEKSAqLwogCisjaWYgZGVmaW5lZChIQVZFX0dFVFBJRCkKKwogUHlEb2NfU1RSVkFSKG9zX2dldHBpZF9fZG9jX18sCiAiZ2V0cGlkKCRtb2R1bGUsIC8pXG4iCiAiLS1cbiIKQEAgLTIyNzYsNiArMjM2OSw4IEBACiAgICAgcmV0dXJuIG9zX2dldHBpZF9pbXBsKG1vZHVsZSk7CiB9CiAKKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VUUElEKSAqLworCiAjaWYgZGVmaW5lZChIQVZFX0dFVEdST1VQUykKIAogUHlEb2NfU1RSVkFSKG9zX2dldGdyb3Vwc19fZG9jX18sCkBAIC0yMzA3LDIxICsyNDAyLDIzIEBACiAiQ2FsbCB0aGUgc3lzdGVtIGNhbGwgZ2V0cGdpZCgpLCBhbmQgcmV0dXJuIHRoZSByZXN1bHQuIik7CiAKICNkZWZpbmUgT1NfR0VUUEdJRF9NRVRIT0RERUYgICAgXAotICAgIHsiZ2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ2lkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0cGdpZF9fZG9jX199LAorICAgIHsiZ2V0cGdpZCIsIChQeUNGdW5jdGlvbilvc19nZXRwZ2lkLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXRwZ2lkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19nZXRwZ2lkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGlkX3QgcGlkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHBnaWQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19nZXRwZ2lkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwaWQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyIiIF9QeV9QQVJTRV9QSUQgIjpnZXRwZ2lkIiwgX2tleXdvcmRzLCAwfTsKICAgICBwaWRfdCBwaWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRwZ2lkIiwgX2tleXdvcmRzLAotICAgICAgICAmcGlkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19nZXRwZ2lkX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMjQ2NSw4ICsyNTYyLDkgQEAKICAgICBQeV9zc2l6ZV90IHNpZ25hbDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIiBfUHlfUEFSU0VfUElEICJuOmtpbGwiLAotICAgICAgICAmcGlkLCAmc2lnbmFsKSkKKyAgICAgICAgJnBpZCwgJnNpZ25hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19raWxsX2ltcGwobW9kdWxlLCBwaWQsIHNpZ25hbCk7CiAKIGV4aXQ6CkBAIC0yNDk3LDggKzI1OTUsOSBAQAogICAgIGludCBzaWduYWw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX1BJRCAiaTpraWxscGciLAotICAgICAgICAmcGdpZCwgJnNpZ25hbCkpCisgICAgICAgICZwZ2lkLCAmc2lnbmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2tpbGxwZ19pbXBsKG1vZHVsZSwgcGdpZCwgc2lnbmFsKTsKIAogZXhpdDoKQEAgLTI1MjcsOCArMjYyNiw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IG9wOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBsb2NrIiwgJm9wKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGxvY2siLCAmb3ApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGxvY2tfaW1wbChtb2R1bGUsIG9wKTsKIAogZXhpdDoKQEAgLTI1NTcsOCArMjY1Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgdWlkX3QgdWlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXR1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXR1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJnVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXR1aWRfaW1wbChtb2R1bGUsIHVpZCk7CiAKIGV4aXQ6CkBAIC0yNTg3LDggKzI2ODgsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHVpZF90IGV1aWQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnNldGV1aWQiLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZXVpZCIsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRldWlkX2ltcGwobW9kdWxlLCBldWlkKTsKIAogZXhpdDoKQEAgLTI2MTcsOCArMjcxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgZ2lkX3QgZWdpZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6c2V0ZWdpZCIsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRlZ2lkIiwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldGVnaWRfaW1wbChtb2R1bGUsIGVnaWQpOwogCiBleGl0OgpAQCAtMjY0OSw4ICsyNzUyLDkgQEAKICAgICB1aWRfdCBldWlkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnNldHJldWlkIiwKLSAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQpKQorICAgICAgICBfUHlfVWlkX0NvbnZlcnRlciwgJnJ1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmZXVpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRyZXVpZF9pbXBsKG1vZHVsZSwgcnVpZCwgZXVpZCk7CiAKIGV4aXQ6CkBAIC0yNjgxLDggKzI3ODUsOSBAQAogICAgIGdpZF90IGVnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6c2V0cmVnaWQiLAotICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCkpCisgICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlZ2lkX2ltcGwobW9kdWxlLCByZ2lkLCBlZ2lkKTsKIAogZXhpdDoKQEAgLTI3MTEsOCArMjgxNiw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgZ2lkX3QgZ2lkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzZXRnaWQiLCBfUHlfR2lkX0NvbnZlcnRlciwgJmdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRnaWRfaW1wbChtb2R1bGUsIGdpZCk7CiAKIGV4aXQ6CkBAIC0yNzQ2LDIxICsyODUyLDIzIEBACiAiICAocGlkLCBzdGF0dXMsIHJ1c2FnZSkiKTsKIAogI2RlZmluZSBPU19XQUlUM19NRVRIT0RERUYgICAgXAotICAgIHsid2FpdDMiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc193YWl0M19fZG9jX199LAorICAgIHsid2FpdDMiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdDMsIE1FVEhfRkFTVENBTEwsIG9zX3dhaXQzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0M19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBvcHRpb25zKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3dhaXQzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfd2FpdDMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7Im9wdGlvbnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTp3YWl0MyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IG9wdGlvbnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOndhaXQzIiwgX2tleXdvcmRzLAotICAgICAgICAmb3B0aW9ucykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXQzX2ltcGwobW9kdWxlLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI3ODEsMjIgKzI4ODksMjQgQEAKICIgIChwaWQsIHN0YXR1cywgcnVzYWdlKSIpOwogCiAjZGVmaW5lIE9TX1dBSVQ0X01FVEhPRERFRiAgICBcCi0gICAgeyJ3YWl0NCIsIChQeUNGdW5jdGlvbilvc193YWl0NCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3dhaXQ0X19kb2NfX30sCisgICAgeyJ3YWl0NCIsIChQeUNGdW5jdGlvbilvc193YWl0NCwgTUVUSF9GQVNUQ0FMTCwgb3Nfd2FpdDRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3dhaXQ0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGlkX3QgcGlkLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0NChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3dhaXQ0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwaWQiLCAib3B0aW9ucyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBpZCIsICJvcHRpb25zIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiIiBfUHlfUEFSU0VfUElEICJpOndhaXQ0IiwgX2tleXdvcmRzLCAwfTsKICAgICBwaWRfdCBwaWQ7CiAgICAgaW50IG9wdGlvbnM7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdDQiLCBfa2V5d29yZHMsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdDRfaW1wbChtb2R1bGUsIHBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yODM5LDggKzI5NDksOSBAQAogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICJpOndhaXRpZCIsCi0gICAgICAgICZpZHR5cGUsICZpZCwgJm9wdGlvbnMpKQorICAgICAgICAmaWR0eXBlLCAmaWQsICZvcHRpb25zKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3dhaXRpZF9pbXBsKG1vZHVsZSwgaWR0eXBlLCBpZCwgb3B0aW9ucyk7CiAKIGV4aXQ6CkBAIC0yODc2LDggKzI5ODcsOSBAQAogICAgIGludCBvcHRpb25zOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgImk6d2FpdHBpZCIsCi0gICAgICAgICZwaWQsICZvcHRpb25zKSkKKyAgICAgICAgJnBpZCwgJm9wdGlvbnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfd2FpdHBpZF9pbXBsKG1vZHVsZSwgcGlkLCBvcHRpb25zKTsKIAogZXhpdDoKQEAgLTI5MDMsMTggKzMwMTUsMTkgQEAKICAgICB7IndhaXRwaWQiLCAoUHlDRnVuY3Rpb24pb3Nfd2FpdHBpZCwgTUVUSF9WQVJBUkdTLCBvc193YWl0cGlkX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucyk7Citvc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc193YWl0cGlkKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IHBpZDsKKyAgICBpbnRwdHJfdCBwaWQ7CiAgICAgaW50IG9wdGlvbnM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiIgX1B5X1BBUlNFX0lOVFBUUiAiaTp3YWl0cGlkIiwKLSAgICAgICAgJnBpZCwgJm9wdGlvbnMpKQorICAgICAgICAmcGlkLCAmb3B0aW9ucykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc193YWl0cGlkX2ltcGwobW9kdWxlLCBwaWQsIG9wdGlvbnMpOwogCiBleGl0OgpAQCAtMjk2NywyNSArMzA4MCwyNyBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX1NZTUxJTktfTUVUSE9EREVGICAgIFwKLSAgICB7InN5bWxpbmsiLCAoUHlDRnVuY3Rpb24pb3Nfc3ltbGluaywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3N5bWxpbmtfX2RvY19ffSwKKyAgICB7InN5bWxpbmsiLCAoUHlDRnVuY3Rpb24pb3Nfc3ltbGluaywgTUVUSF9GQVNUQ0FMTCwgb3Nfc3ltbGlua19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3Nfc3ltbGlua19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwKICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19zeW1saW5rKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc3ltbGluayhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJ0YXJnZXRfaXNfZGlyZWN0b3J5IiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfHAkTyY6c3ltbGluayIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHNyYyA9IFBBVEhfVF9JTklUSUFMSVpFKCJzeW1saW5rIiwgInNyYyIsIDAsIDApOwogICAgIHBhdGhfdCBkc3QgPSBQQVRIX1RfSU5JVElBTElaRSgic3ltbGluayIsICJkc3QiLCAwLCAwKTsKICAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnxwJE8mOnN5bWxpbmsiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLCBwYXRoX2NvbnZlcnRlciwgJmRzdCwgJnRhcmdldF9pc19kaXJlY3RvcnksIFNZTUxJTktBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsIHBhdGhfY29udmVydGVyLCAmZHN0LCAmdGFyZ2V0X2lzX2RpcmVjdG9yeSwgU1lNTElOS0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3ltbGlua19pbXBsKG1vZHVsZSwgJnNyYywgJmRzdCwgdGFyZ2V0X2lzX2RpcmVjdG9yeSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTMwNDUsOCArMzE2MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgcGlkX3QgcGlkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9QSUQgIjpnZXRzaWQiLCAmcGlkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIiIgX1B5X1BBUlNFX1BJRCAiOmdldHNpZCIsICZwaWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0c2lkX2ltcGwobW9kdWxlLCBwaWQpOwogCiBleGl0OgpAQCAtMzA5OSw4ICszMjE1LDkgQEAKICAgICBwaWRfdCBwZ3JwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9QSUQgIiIgX1B5X1BBUlNFX1BJRCAiOnNldHBnaWQiLAotICAgICAgICAmcGlkLCAmcGdycCkpCisgICAgICAgICZwaWQsICZwZ3JwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHBnaWRfaW1wbChtb2R1bGUsIHBpZCwgcGdycCk7CiAKIGV4aXQ6CkBAIC0zMTI5LDggKzMyNDYsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0Y2dldHBncnAiLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTp0Y2dldHBncnAiLCAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdGNnZXRwZ3JwX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zMTYxLDggKzMyNzksOSBAQAogICAgIHBpZF90IHBnaWQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiIF9QeV9QQVJTRV9QSUQgIjp0Y3NldHBncnAiLAotICAgICAgICAmZmQsICZwZ2lkKSkKKyAgICAgICAgJmZkLCAmcGdpZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc190Y3NldHBncnBfaW1wbChtb2R1bGUsIGZkLCBwZ2lkKTsKIAogZXhpdDoKQEAgLTMxODMsMjggKzMzMDIsMzEgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19PUEVOX01FVEhPRERFRiAgICBcCi0gICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKW9zX29wZW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19vcGVuX19kb2NfX30sCisgICAgeyJvcGVuIiwgKFB5Q0Z1bmN0aW9uKW9zX29wZW4sIE1FVEhfRkFTVENBTEwsIG9zX29wZW5fX2RvY19ffSwKIAogc3RhdGljIGludAogb3Nfb3Blbl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IGZsYWdzLCBpbnQgbW9kZSwgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19vcGVuKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfb3BlbihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmbGFncyIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJml8aSRPJjpvcGVuIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJvcGVuIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgZmxhZ3M7CiAgICAgaW50IG1vZGUgPSA1MTE7CiAgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfGkkTyY6b3BlbiIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZmxhZ3MsICZtb2RlLCBPUEVOQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJmZsYWdzLCAmbW9kZSwgT1BFTkFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX29wZW5faW1wbChtb2R1bGUsICZwYXRoLCBmbGFncywgbW9kZSwgZGlyX2ZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzIyMSwyMSArMzM0MywyMyBAQAogIkNsb3NlIGEgZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX0NMT1NFX01FVEhPRERFRiAgICBcCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2Nsb3NlX19kb2NfX30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilvc19jbG9zZSwgTUVUSF9GQVNUQ0FMTCwgb3NfY2xvc2VfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2Nsb3NlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2Nsb3NlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfY2xvc2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOmNsb3NlIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmNsb3NlIiwgX2tleXdvcmRzLAotICAgICAgICAmZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY2xvc2VfaW1wbChtb2R1bGUsIGZkKTsKIAogZXhpdDoKQEAgLTMyNjIsOCArMzM4Niw5IEBACiAgICAgaW50IGZkX2hpZ2g7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOmNsb3NlcmFuZ2UiLAotICAgICAgICAmZmRfbG93LCAmZmRfaGlnaCkpCisgICAgICAgICZmZF9sb3csICZmZF9oaWdoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2Nsb3NlcmFuZ2VfaW1wbChtb2R1bGUsIGZkX2xvdywgZmRfaGlnaCk7CiAKIGV4aXQ6CkBAIC0zMjg5LDExICszNDE0LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmR1cCIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmR1cCIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZHVwX2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMzMDcsMjMgKzM0MzQsMjUgQEAKICJEdXBsaWNhdGUgZmlsZSBkZXNjcmlwdG9yLiIpOwogCiAjZGVmaW5lIE9TX0RVUDJfTUVUSE9EREVGICAgIFwKLSAgICB7ImR1cDIiLCAoUHlDRnVuY3Rpb24pb3NfZHVwMiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX2R1cDJfX2RvY19ffSwKKyAgICB7ImR1cDIiLCAoUHlDRnVuY3Rpb24pb3NfZHVwMiwgTUVUSF9GQVNUQ0FMTCwgb3NfZHVwMl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZHVwMl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCwgaW50IGZkMiwgaW50IGluaGVyaXRhYmxlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2R1cDIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19kdXAyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsICJmZDIiLCAiaW5oZXJpdGFibGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpaXxwOmR1cDIiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmZDsKICAgICBpbnQgZmQyOwogICAgIGludCBpbmhlcml0YWJsZSA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpaXxwOmR1cDIiLCBfa2V5d29yZHMsCi0gICAgICAgICZmZCwgJmZkMiwgJmluaGVyaXRhYmxlKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkLCAmZmQyLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZHVwMl9pbXBsKG1vZHVsZSwgZmQsIGZkMiwgaW5oZXJpdGFibGUpOwogCiBleGl0OgpAQCAtMzM2MCw4ICszNDg5LDkgQEAKICAgICBQeV9vZmZfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6bG9ja2YiLAotICAgICAgICAmZmQsICZjb21tYW5kLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICAmZmQsICZjb21tYW5kLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbG9ja2ZfaW1wbChtb2R1bGUsIGZkLCBjb21tYW5kLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzM5NSwxMSArMzUyNSwxMyBAQAogICAgIFB5X29mZl90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJmk6bHNlZWsiLAotICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJnBvc2l0aW9uLCAmaG93KSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZwb3NpdGlvbiwgJmhvdykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfbHNlZWtfaW1wbChtb2R1bGUsIGZkLCBwb3NpdGlvbiwgaG93KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21QeV9vZmZfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM0MjYsOCArMzU1OCw5IEBACiAgICAgUHlfc3NpemVfdCBsZW5ndGg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImluOnJlYWQiLAotICAgICAgICAmZmQsICZsZW5ndGgpKQorICAgICAgICAmZmQsICZsZW5ndGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcmVhZF9pbXBsKG1vZHVsZSwgZmQsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC0zNDY1LDExICszNTk4LDEzIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpyZWFkdiIsCi0gICAgICAgICZmZCwgJmJ1ZmZlcnMpKQorICAgICAgICAmZmQsICZidWZmZXJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19yZWFkdl9pbXBsKG1vZHVsZSwgZmQsIGJ1ZmZlcnMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbVNzaXplX3QoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNTA0LDggKzM2MzksOSBAQAogICAgIFB5X29mZl90IG9mZnNldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpwcmVhZCIsCi0gICAgICAgICZmZCwgJmxlbmd0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0KSkKKyAgICAgICAgJmZkLCAmbGVuZ3RoLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHJlYWRfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgsIG9mZnNldCk7CiAKIGV4aXQ6CkBAIC0zNTM1LDE3ICszNjcxLDIwIEBACiAgICAgUHlfc3NpemVfdCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSo6d3JpdGUiLAotICAgICAgICAmZmQsICZkYXRhKSkKKyAgICAgICAgJmZkLCAmZGF0YSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfd3JpdGVfaW1wbChtb2R1bGUsIGZkLCAmZGF0YSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0zNTYwLDIxICszNjk5LDIzIEBACiAiRXF1aXZhbGVudCB0byBvcy5zdGF0KGZkKS4iKTsKIAogI2RlZmluZSBPU19GU1RBVF9NRVRIT0RERUYgICAgXAotICAgIHsiZnN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19mc3RhdF9fZG9jX199LAorICAgIHsiZnN0YXQiLCAoUHlDRnVuY3Rpb24pb3NfZnN0YXQsIE1FVEhfRkFTVENBTEwsIG9zX2ZzdGF0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19mc3RhdF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19mc3RhdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2ZzdGF0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpmc3RhdCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGZkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpmc3RhdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0X2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC0zNjAzLDExICszNzQ0LDEzIEBACiAgICAgaW50IGZkOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzYXR0eSIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmlzYXR0eSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfaXNhdHR5X2ltcGwobW9kdWxlLCBmZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM2NjUsOCArMzgwOCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZsYWdzOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnBpcGUyIiwgJmZsYWdzKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6cGlwZTIiLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcGlwZTJfaW1wbChtb2R1bGUsIGZsYWdzKTsKIAogZXhpdDoKQEAgLTM3MDEsMTEgKzM4NDUsMTMgQEAKICAgICBQeV9zc2l6ZV90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOndyaXRldiIsCi0gICAgICAgICZmZCwgJmJ1ZmZlcnMpKQorICAgICAgICAmZmQsICZidWZmZXJzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc193cml0ZXZfaW1wbChtb2R1bGUsIGZkLCBidWZmZXJzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzc0MiwxNyArMzg4OCwyMCBAQAogICAgIFB5X3NzaXplX3QgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqTyY6cHdyaXRlIiwKLSAgICAgICAgJmZkLCAmYnVmZmVyLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQpKQorICAgICAgICAmZmQsICZidWZmZXIsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcHdyaXRlX2ltcGwobW9kdWxlLCBmZCwgJmJ1ZmZlciwgb2Zmc2V0KTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Tc2l6ZV90KF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGJ1ZmZlciAqLwotICAgIGlmIChidWZmZXIub2JqKQorICAgIGlmIChidWZmZXIub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzc3MywyMyArMzkyMiwyNSBAQAogIiAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAjZGVmaW5lIE9TX01LRklGT19NRVRIT0RERUYgICAgXAotICAgIHsibWtmaWZvIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZmlmbywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX21rZmlmb19fZG9jX199LAorICAgIHsibWtmaWZvIiwgKFB5Q0Z1bmN0aW9uKW9zX21rZmlmbywgTUVUSF9GQVNUQ0FMTCwgb3NfbWtmaWZvX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta2ZpZm9faW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIGludCBtb2RlLCBpbnQgZGlyX2ZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX21rZmlmbyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rZmlmbyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJnxpJE8mOm1rZmlmbyIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibWtmaWZvIiwgInBhdGgiLCAwLCAwKTsKICAgICBpbnQgbW9kZSA9IDQzODsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZmlmbyIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmbW9kZSwgTUtGSUZPQVRfRElSX0ZEX0NPTlZFUlRFUiwgJmRpcl9mZCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIE1LRklGT0FUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfbWtmaWZvX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGlyX2ZkKTsKIAogZXhpdDoKQEAgLTM4MjIsMjUgKzM5NzMsMjcgQEAKICIgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogI2RlZmluZSBPU19NS05PRF9NRVRIT0RERUYgICAgXAotICAgIHsibWtub2QiLCAoUHlDRnVuY3Rpb24pb3NfbWtub2QsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19ta25vZF9fZG9jX199LAorICAgIHsibWtub2QiLCAoUHlDRnVuY3Rpb24pb3NfbWtub2QsIE1FVEhfRkFTVENBTEwsIG9zX21rbm9kX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19ta25vZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG1vZGUsIGRldl90IGRldmljZSwKICAgICAgICAgICAgICAgaW50IGRpcl9mZCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19ta25vZChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX21rbm9kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGV2aWNlIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkZXZpY2UiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ8aU8mJE8mOm1rbm9kIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJta25vZCIsICJwYXRoIiwgMCwgMCk7CiAgICAgaW50IG1vZGUgPSAzODQ7CiAgICAgZGV2X3QgZGV2aWNlID0gMDsKICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpTyYkTyY6bWtub2QiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlLCBNS05PREFUX0RJUl9GRF9DT05WRVJURVIsICZkaXJfZmQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSwgTUtOT0RBVF9ESVJfRkRfQ09OVkVSVEVSLCAmZGlyX2ZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX21rbm9kX2ltcGwobW9kdWxlLCAmcGF0aCwgbW9kZSwgZGV2aWNlLCBkaXJfZmQpOwogCiBleGl0OgpAQCAtMzg3MywxMSArNDAyNiwxMyBAQAogICAgIGRldl90IGRldmljZTsKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWFqb3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptYWpvciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWpvcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzkwNywxMSArNDA2MiwxMyBAQAogICAgIGRldl90IGRldmljZTsKICAgICB1bnNpZ25lZCBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6bWlub3IiLCBfUHlfRGV2X0NvbnZlcnRlciwgJmRldmljZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjptaW5vciIsIF9QeV9EZXZfQ29udmVydGVyLCAmZGV2aWNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19taW5vcl9pbXBsKG1vZHVsZSwgZGV2aWNlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gKHVuc2lnbmVkIGludCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzk0MywxMSArNDEwMCwxMyBAQAogICAgIGRldl90IF9yZXR1cm5fdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOm1ha2VkZXYiLAotICAgICAgICAmbWFqb3IsICZtaW5vcikpCisgICAgICAgICZtYWpvciwgJm1pbm9yKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19tYWtlZGV2X2ltcGwobW9kdWxlLCBtYWpvciwgbWlub3IpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAoZGV2X3QpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IChkZXZfdCktMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9QeUxvbmdfRnJvbURldihfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5NzgsOCArNDEzNyw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyY6ZnRydW5jYXRlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19mdHJ1bmNhdGVfaW1wbChtb2R1bGUsIGZkLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtNDAwMCwyMiArNDE2MCwyNCBAQAogIiAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiAjZGVmaW5lIE9TX1RSVU5DQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilvc190cnVuY2F0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3RydW5jYXRlX19kb2NfX30sCisgICAgeyJ0cnVuY2F0ZSIsIChQeUNGdW5jdGlvbilvc190cnVuY2F0ZSwgTUVUSF9GQVNUQ0FMTCwgb3NfdHJ1bmNhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3RydW5jYXRlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeV9vZmZfdCBsZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfdHJ1bmNhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc190cnVuY2F0ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImxlbmd0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyY6dHJ1bmNhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInRydW5jYXRlIiwgInBhdGgiLCAwLCBQQVRIX0hBVkVfRlRSVU5DQVRFKTsKICAgICBQeV9vZmZfdCBsZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnRydW5jYXRlIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3RydW5jYXRlX2ltcGwobW9kdWxlLCAmcGF0aCwgbGVuZ3RoKTsKIAogZXhpdDoKQEAgLTQwNTQsOCArNDIxNiw5IEBACiAgICAgUHlfb2ZmX3QgbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTyZPJjpwb3NpeF9mYWxsb2NhdGUiLAotICAgICAgICAmZmQsIFB5X29mZl90X2NvbnZlcnRlciwgJm9mZnNldCwgUHlfb2ZmX3RfY29udmVydGVyLCAmbGVuZ3RoKSkKKyAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19wb3NpeF9mYWxsb2NhdGVfaW1wbChtb2R1bGUsIGZkLCBvZmZzZXQsIGxlbmd0aCk7CiAKIGV4aXQ6CkBAIC00MDk3LDggKzQyNjAsOSBAQAogICAgIGludCBhZHZpY2U7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJk8maTpwb3NpeF9mYWR2aXNlIiwKLSAgICAgICAgJmZkLCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZvZmZzZXQsIFB5X29mZl90X2NvbnZlcnRlciwgJmxlbmd0aCwgJmFkdmljZSkpCisgICAgICAgICZmZCwgUHlfb2ZmX3RfY29udmVydGVyLCAmb2Zmc2V0LCBQeV9vZmZfdF9jb252ZXJ0ZXIsICZsZW5ndGgsICZhZHZpY2UpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcG9zaXhfZmFkdmlzZV9pbXBsKG1vZHVsZSwgZmQsIG9mZnNldCwgbGVuZ3RoLCBhZHZpY2UpOwogCiBleGl0OgpAQCAtNDEyOSw4ICs0MjkzLDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVVOnB1dGVudiIsCi0gICAgICAgICZuYW1lLCAmdmFsdWUpKQorICAgICAgICAmbmFtZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3B1dGVudl9pbXBsKG1vZHVsZSwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDE2MSw4ICs0MzI2LDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mOnB1dGVudiIsCi0gICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm5hbWUsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnZhbHVlKSkKKyAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfcHV0ZW52X2ltcGwobW9kdWxlLCBuYW1lLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MTk2LDggKzQzNjIsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6dW5zZXRlbnYiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnVuc2V0ZW52IiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc191bnNldGVudl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC00MjI3LDggKzQzOTQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnN0cmVycm9yIiwgJmNvZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzdHJlcnJvciIsICZjb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3N0cmVycm9yX2ltcGwobW9kdWxlLCBjb2RlKTsKIAogZXhpdDoKQEAgLTQyNTYsMTEgKzQ0MjQsMTMgQEAKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOldDT1JFRFVNUCIsICZzdGF0dXMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpXQ09SRURVTVAiLCAmc3RhdHVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19XQ09SRURVTVBfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQyODEsMjUgKzQ0NTEsMjggQEAKICJqb2IgY29udHJvbCBzdG9wLiIpOwogCiAjZGVmaW5lIE9TX1dJRkNPTlRJTlVFRF9NRVRIT0RERUYgICAgXAotICAgIHsiV0lGQ09OVElOVUVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkNPTlRJTlVFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRkNPTlRJTlVFRF9fZG9jX199LAorICAgIHsiV0lGQ09OVElOVUVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRkNPTlRJTlVFRCwgTUVUSF9GQVNUQ0FMTCwgb3NfV0lGQ09OVElOVUVEX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dJRkNPTlRJTlVFRF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0lGQ09OVElOVUVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0lGQ09OVElOVUVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldJRkNPTlRJTlVFRCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGQ09OVElOVUVEIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGQ09OVElOVUVEX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MzE3LDI1ICs0NDkwLDI4IEBACiAiUmV0dXJuIFRydWUgaWYgdGhlIHByb2Nlc3MgcmV0dXJuaW5nIHN0YXR1cyB3YXMgc3RvcHBlZC4iKTsKIAogI2RlZmluZSBPU19XSUZTVE9QUEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZTVE9QUEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNUT1BQRUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZTVE9QUEVEX19kb2NfX30sCisgICAgeyJXSUZTVE9QUEVEIiwgKFB5Q0Z1bmN0aW9uKW9zX1dJRlNUT1BQRUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRlNUT1BQRURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGU1RPUFBFRF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBzdGF0dXMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfV0lGU1RPUFBFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRlNUT1BQRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGU1RPUFBFRCIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgImk6V0lGU1RPUFBFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRlNUT1BQRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQzNTMsMjUgKzQ1MjksMjggQEAKICJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIHdhcyB0ZXJtaW5hdGVkIGJ5IGEgc2lnbmFsLiIpOwogCiAjZGVmaW5lIE9TX1dJRlNJR05BTEVEX01FVEhPRERFRiAgICBcCi0gICAgeyJXSUZTSUdOQUxFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTSUdOQUxFRCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX1dJRlNJR05BTEVEX19kb2NfX30sCisgICAgeyJXSUZTSUdOQUxFRCIsIChQeUNGdW5jdGlvbilvc19XSUZTSUdOQUxFRCwgTUVUSF9GQVNUQ0FMTCwgb3NfV0lGU0lHTkFMRURfX2RvY19ffSwKIAogc3RhdGljIGludAogb3NfV0lGU0lHTkFMRURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRlNJR05BTEVEKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfV0lGU0lHTkFMRUQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0YXR1cyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6V0lGU0lHTkFMRUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRlNJR05BTEVEIiwgX2tleXdvcmRzLAotICAgICAgICAmc3RhdHVzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0YXR1cykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfV0lGU0lHTkFMRURfaW1wbChtb2R1bGUsIHN0YXR1cyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5Qm9vbF9Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQzODksMjUgKzQ1NjgsMjggQEAKICJSZXR1cm4gVHJ1ZSBpZiB0aGUgcHJvY2VzcyByZXR1cm5pbmcgc3RhdHVzIGV4aXRlZCB2aWEgdGhlIGV4aXQoKSBzeXN0ZW0gY2FsbC4iKTsKIAogI2RlZmluZSBPU19XSUZFWElURURfTUVUSE9EREVGICAgIFwKLSAgICB7IldJRkVYSVRFRCIsIChQeUNGdW5jdGlvbilvc19XSUZFWElURUQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XSUZFWElURURfX2RvY19ffSwKKyAgICB7IldJRkVYSVRFRCIsIChQeUNGdW5jdGlvbilvc19XSUZFWElURUQsIE1FVEhfRkFTVENBTEwsIG9zX1dJRkVYSVRFRF9fZG9jX199LAogCiBzdGF0aWMgaW50CiBvc19XSUZFWElURURfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgc3RhdHVzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX1dJRkVYSVRFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dJRkVYSVRFRChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RhdHVzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiaTpXSUZFWElURUQiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBzdGF0dXM7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOldJRkVYSVRFRCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dJRkVYSVRFRF9pbXBsKG1vZHVsZSwgc3RhdHVzKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDQyNSwyNSArNDYwNywyOCBAQAogIlJldHVybiB0aGUgcHJvY2VzcyByZXR1cm4gY29kZSBmcm9tIHN0YXR1cy4iKTsKIAogI2RlZmluZSBPU19XRVhJVFNUQVRVU19NRVRIT0RERUYgICAgXAotICAgIHsiV0VYSVRTVEFUVVMiLCAoUHlDRnVuY3Rpb24pb3NfV0VYSVRTVEFUVVMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XRVhJVFNUQVRVU19fZG9jX199LAorICAgIHsiV0VYSVRTVEFUVVMiLCAoUHlDRnVuY3Rpb24pb3NfV0VYSVRTVEFUVVMsIE1FVEhfRkFTVENBTEwsIG9zX1dFWElUU1RBVFVTX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dFWElUU1RBVFVTX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XRVhJVFNUQVRVUyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dFWElUU1RBVFVTKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldFWElUU1RBVFVTIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXRVhJVFNUQVRVUyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dFWElUU1RBVFVTX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NDYxLDI1ICs0NjQ2LDI4IEBACiAiUmV0dXJuIHRoZSBzaWduYWwgdGhhdCB0ZXJtaW5hdGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4iKTsKIAogI2RlZmluZSBPU19XVEVSTVNJR19NRVRIT0RERUYgICAgXAotICAgIHsiV1RFUk1TSUciLCAoUHlDRnVuY3Rpb24pb3NfV1RFUk1TSUcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XVEVSTVNJR19fZG9jX199LAorICAgIHsiV1RFUk1TSUciLCAoUHlDRnVuY3Rpb24pb3NfV1RFUk1TSUcsIE1FVEhfRkFTVENBTEwsIG9zX1dURVJNU0lHX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dURVJNU0lHX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XVEVSTVNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dURVJNU0lHKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldURVJNU0lHIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXVEVSTVNJRyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dURVJNU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NDk3LDI1ICs0Njg1LDI4IEBACiAiUmV0dXJuIHRoZSBzaWduYWwgdGhhdCBzdG9wcGVkIHRoZSBwcm9jZXNzIHRoYXQgcHJvdmlkZWQgdGhlIHN0YXR1cyB2YWx1ZS4iKTsKIAogI2RlZmluZSBPU19XU1RPUFNJR19NRVRIT0RERUYgICAgXAotICAgIHsiV1NUT1BTSUciLCAoUHlDRnVuY3Rpb24pb3NfV1NUT1BTSUcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19XU1RPUFNJR19fZG9jX199LAorICAgIHsiV1NUT1BTSUciLCAoUHlDRnVuY3Rpb24pb3NfV1NUT1BTSUcsIE1FVEhfRkFTVENBTEwsIG9zX1dTVE9QU0lHX19kb2NfX30sCiAKIHN0YXRpYyBpbnQKIG9zX1dTVE9QU0lHX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHN0YXR1cyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19XU1RPUFNJRyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX1dTVE9QU0lHKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdGF0dXMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJpOldTVE9QU0lHIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgc3RhdHVzOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaTpXU1RPUFNJRyIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0YXR1cykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdGF0dXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IG9zX1dTVE9QU0lHX2ltcGwobW9kdWxlLCBzdGF0dXMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC00NTQ2LDggKzQ3MzcsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBmZDsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpmc3RhdHZmcyIsICZmZCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmZzdGF0dmZzIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2ZzdGF0dmZzX2ltcGwobW9kdWxlLCBmZCk7CiAKIGV4aXQ6CkBAIC00NTY5LDIxICs0NzYxLDIzIEBACiAiICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKICNkZWZpbmUgT1NfU1RBVFZGU19NRVRIT0RERUYgICAgXAotICAgIHsic3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19zdGF0dmZzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3Nfc3RhdHZmc19fZG9jX199LAorICAgIHsic3RhdHZmcyIsIChQeUNGdW5jdGlvbilvc19zdGF0dmZzLCBNRVRIX0ZBU1RDQUxMLCBvc19zdGF0dmZzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zdGF0dmZzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3N0YXR2ZnMoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19zdGF0dmZzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mOnN0YXR2ZnMiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInN0YXR2ZnMiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GU1RBVFZGUyk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpzdGF0dmZzIiwgX2tleXdvcmRzLAotICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc3RhdHZmc19pbXBsKG1vZHVsZSwgJnBhdGgpOwogCiBleGl0OgpAQCAtNDYwNCwyMSArNDc5OCwyMyBAQAogIlJldHVybiBkaXNrIHVzYWdlIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGdpdmVuIHBhdGggYXMgYSAodG90YWwsIGZyZWUpIHR1cGxlLiIpOwogCiAjZGVmaW5lIE9TX19HRVRESVNLVVNBR0VfTUVUSE9EREVGICAgIFwKLSAgICB7Il9nZXRkaXNrdXNhZ2UiLCAoUHlDRnVuY3Rpb24pb3NfX2dldGRpc2t1c2FnZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKKyAgICB7Il9nZXRkaXNrdXNhZ2UiLCAoUHlDRnVuY3Rpb24pb3NfX2dldGRpc2t1c2FnZSwgTUVUSF9GQVNUQ0FMTCwgb3NfX2dldGRpc2t1c2FnZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfX2dldGRpc2t1c2FnZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKnBhdGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfX2dldGRpc2t1c2FnZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX19nZXRkaXNrdXNhZ2UoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsidTpfZ2V0ZGlza3VzYWdlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeV9VTklDT0RFICpwYXRoOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAidTpfZ2V0ZGlza3VzYWdlIiwgX2tleXdvcmRzLAotICAgICAgICAmcGF0aCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX19nZXRkaXNrdXNhZ2VfaW1wbChtb2R1bGUsIHBhdGgpOwogCiBleGl0OgpAQCAtNDY1MiwxMSArNDg0OCwxMyBAQAogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mOmZwYXRoY29uZiIsCi0gICAgICAgICZmZCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgICAgICZmZCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZnBhdGhjb25mX2ltcGwobW9kdWxlLCBmZCwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ2NzgsMjYgKzQ4NzYsMjkgQEAKICIgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogI2RlZmluZSBPU19QQVRIQ09ORl9NRVRIT0RERUYgICAgXAotICAgIHsicGF0aGNvbmYiLCAoUHlDRnVuY3Rpb24pb3NfcGF0aGNvbmYsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19wYXRoY29uZl9fZG9jX199LAorICAgIHsicGF0aGNvbmYiLCAoUHlDRnVuY3Rpb24pb3NfcGF0aGNvbmYsIE1FVEhfRkFTVENBTEwsIG9zX3BhdGhjb25mX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCiBvc19wYXRoY29uZl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqcGF0aCwgaW50IG5hbWUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3NfcGF0aGNvbmYoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitvc19wYXRoY29uZihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsICJuYW1lIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZPJjpwYXRoY29uZiIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgicGF0aGNvbmYiLCAicGF0aCIsIDAsIFBBVEhfSEFWRV9GUEFUSENPTkYpOwogICAgIGludCBuYW1lOwogICAgIGxvbmcgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyY6cGF0aGNvbmYiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgY29udl9wYXRoX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfcGF0aGNvbmZfaW1wbChtb2R1bGUsICZwYXRoLCBuYW1lKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNDcyOSw4ICs0OTMwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Y29uZnN0ciIsIGNvbnZfY29uZnN0cl9jb25mbmFtZSwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Y29uZnN0ciIsIGNvbnZfY29uZnN0cl9jb25mbmFtZSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfY29uZnN0cl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC00NzYwLDExICs0OTYyLDEzIEBACiAgICAgaW50IG5hbWU7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzeXNjb25mIiwgY29udl9zeXNjb25mX2NvbmZuYW1lLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpzeXNjb25mIiwgY29udl9zeXNjb25mX2NvbmZuYW1lLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3Nfc3lzY29uZl9pbXBsKG1vZHVsZSwgbmFtZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ3OTQsNiArNDk5OCw2MSBAQAogICAgIHJldHVybiBvc19hYm9ydF9pbXBsKG1vZHVsZSk7CiB9CiAKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihvc19zdGFydGZpbGVfX2RvY19fLAorInN0YXJ0ZmlsZSgkbW9kdWxlLCAvLCBmaWxlcGF0aCwgb3BlcmF0aW9uPU5vbmUpXG4iCisiLS1cbiIKKyJcbiIKKyJzdGFydGZpbGUoZmlsZXBhdGggWywgb3BlcmF0aW9uXSlcbiIKKyJcbiIKKyJTdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cbiIKKyJcbiIKKyJXaGVuIFwib3BlcmF0aW9uXCIgaXMgbm90IHNwZWNpZmllZCBvciBcIm9wZW5cIiwgdGhpcyBhY3RzIGxpa2VcbiIKKyJkb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG4iCisiYXJndW1lbnQgdG8gdGhlIERPUyBcInN0YXJ0XCIgY29tbWFuZDogdGhlIGZpbGUgaXMgb3BlbmVkIHdpdGggd2hhdGV2ZXJcbiIKKyJhcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuXG4iCisiV2hlbiBhbm90aGVyIFwib3BlcmF0aW9uXCIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGhcbiIKKyJ0aGUgZmlsZS4gIEEgdHlwaWNhbCBvcGVyYXRpb24gaXMgXCJwcmludFwiLlxuIgorIlxuIgorInN0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuXG4iCisiVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheVxuIgorInRvIHJldHJpZXZlIHRoZSBhcHBsaWNhdGlvblwncyBleGl0IHN0YXR1cy5cbiIKKyJcbiIKKyJUaGUgZmlsZXBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgSWYgeW91IHdhbnQgdG8gdXNlXG4iCisiYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcbiIKKyJ0aGUgdW5kZXJseWluZyBXaW4zMiBTaGVsbEV4ZWN1dGUgZnVuY3Rpb24gZG9lc25cJ3Qgd29yayBpZiBpdCBpcy4iKTsKKworI2RlZmluZSBPU19TVEFSVEZJTEVfTUVUSE9EREVGICAgIFwKKyAgICB7InN0YXJ0ZmlsZSIsIChQeUNGdW5jdGlvbilvc19zdGFydGZpbGUsIE1FVEhfRkFTVENBTEwsIG9zX3N0YXJ0ZmlsZV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3Nfc3RhcnRmaWxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpmaWxlcGF0aCwgUHlfVU5JQ09ERSAqb3BlcmF0aW9uKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGVwYXRoIiwgIm9wZXJhdGlvbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mfHU6c3RhcnRmaWxlIiwgX2tleXdvcmRzLCAwfTsKKyAgICBwYXRoX3QgZmlsZXBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgic3RhcnRmaWxlIiwgImZpbGVwYXRoIiwgMCwgMCk7CisgICAgUHlfVU5JQ09ERSAqb3BlcmF0aW9uID0gTlVMTDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmZpbGVwYXRoLCAmb3BlcmF0aW9uKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IG9zX3N0YXJ0ZmlsZV9pbXBsKG1vZHVsZSwgJmZpbGVwYXRoLCBvcGVyYXRpb24pOworCitleGl0OgorICAgIC8qIENsZWFudXAgZm9yIGZpbGVwYXRoICovCisgICAgcGF0aF9jbGVhbnVwKCZmaWxlcGF0aCk7CisKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCisjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLworCiAjaWYgZGVmaW5lZChIQVZFX0dFVExPQURBVkcpCiAKIFB5RG9jX1NUUlZBUihvc19nZXRsb2FkYXZnX19kb2NfXywKQEAgLTQ4MzAsMjEgKzUwODksMjMgQEAKICJJZiB0aGUgZGV2aWNlIGlzIG5vdCBhIHRlcm1pbmFsLCByZXR1cm4gTm9uZS4iKTsKIAogI2RlZmluZSBPU19ERVZJQ0VfRU5DT0RJTkdfTUVUSE9EREVGICAgIFwKLSAgICB7ImRldmljZV9lbmNvZGluZyIsIChQeUNGdW5jdGlvbilvc19kZXZpY2VfZW5jb2RpbmcsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19kZXZpY2VfZW5jb2RpbmdfX2RvY19ffSwKKyAgICB7ImRldmljZV9lbmNvZGluZyIsIChQeUNGdW5jdGlvbilvc19kZXZpY2VfZW5jb2RpbmcsIE1FVEhfRkFTVENBTEwsIG9zX2RldmljZV9lbmNvZGluZ19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZGV2aWNlX2VuY29kaW5nX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2RldmljZV9lbmNvZGluZyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2RldmljZV9lbmNvZGluZyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJmZCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Imk6ZGV2aWNlX2VuY29kaW5nIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQgZmQ7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJpOmRldmljZV9lbmNvZGluZyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmZkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2RldmljZV9lbmNvZGluZ19pbXBsKG1vZHVsZSwgZmQpOwogCiBleGl0OgpAQCAtNDg3NCw4ICs1MTM1LDkgQEAKICAgICB1aWRfdCBzdWlkOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk8mTyY6c2V0cmVzdWlkIiwKLSAgICAgICAgX1B5X1VpZF9Db252ZXJ0ZXIsICZydWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJmV1aWQsIF9QeV9VaWRfQ29udmVydGVyLCAmc3VpZCkpCisgICAgICAgIF9QeV9VaWRfQ29udmVydGVyLCAmcnVpZCwgX1B5X1VpZF9Db252ZXJ0ZXIsICZldWlkLCBfUHlfVWlkX0NvbnZlcnRlciwgJnN1aWQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0cmVzdWlkX2ltcGwobW9kdWxlLCBydWlkLCBldWlkLCBzdWlkKTsKIAogZXhpdDoKQEAgLTQ5MDcsOCArNTE2OSw5IEBACiAgICAgZ2lkX3Qgc2dpZDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPJk8mOnNldHJlc2dpZCIsCi0gICAgICAgIF9QeV9HaWRfQ29udmVydGVyLCAmcmdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZlZ2lkLCBfUHlfR2lkX0NvbnZlcnRlciwgJnNnaWQpKQorICAgICAgICBfUHlfR2lkX0NvbnZlcnRlciwgJnJnaWQsIF9QeV9HaWRfQ29udmVydGVyLCAmZWdpZCwgX1B5X0dpZF9Db252ZXJ0ZXIsICZzZ2lkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3NldHJlc2dpZF9pbXBsKG1vZHVsZSwgcmdpZCwgZWdpZCwgc2dpZCk7CiAKIGV4aXQ6CkBAIC00OTc1LDI0ICs1MjM4LDI2IEBACiAiICB0aGUgbGluayBwb2ludHMgdG8uIik7CiAKICNkZWZpbmUgT1NfR0VUWEFUVFJfTUVUSE9EREVGICAgIFwKLSAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHhhdHRyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgb3NfZ2V0eGF0dHJfX2RvY19ffSwKKyAgICB7ImdldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKW9zX2dldHhhdHRyLCBNRVRIX0ZBU1RDQUxMLCBvc19nZXR4YXR0cl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfZ2V0eGF0dHJfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIHBhdGhfdCAqYXR0cmlidXRlLAogICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2dldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3NfZ2V0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ8JHA6Z2V0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKICAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoImdldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnwkcDpnZXR4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJmZvbGxvd19zeW1saW5rcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0eGF0dHJfaW1wbChtb2R1bGUsICZwYXRoLCAmYXR0cmlidXRlLCBmb2xsb3dfc3ltbGlua3MpOwogCiBleGl0OgpAQCAtNTAyMSwyNiArNTI4NiwyOCBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX1NFVFhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19zZXR4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3NldHhhdHRyX19kb2NfX30sCisgICAgeyJzZXR4YXR0ciIsIChQeUNGdW5jdGlvbilvc19zZXR4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3Nfc2V0eGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3NldHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICp2YWx1ZSwgaW50IGZsYWdzLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldHhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorb3Nfc2V0eGF0dHIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwgImZsYWdzIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mTyZ5KnxpJHA6c2V0eGF0dHIiLCBfa2V5d29yZHMsIDB9OwogICAgIHBhdGhfdCBwYXRoID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgInBhdGgiLCAwLCAxKTsKICAgICBwYXRoX3QgYXR0cmlidXRlID0gUEFUSF9UX0lOSVRJQUxJWkUoInNldHhhdHRyIiwgImF0dHJpYnV0ZSIsIDAsIDApOwogICAgIFB5X2J1ZmZlciB2YWx1ZSA9IHtOVUxMLCBOVUxMfTsKICAgICBpbnQgZmxhZ3MgPSAwOwogICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJnkqfGkkcDpzZXR4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwgJnZhbHVlLCAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmdmFsdWUsICZmbGFncywgJmZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXR4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsICZhdHRyaWJ1dGUsICZ2YWx1ZSwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MDQ5LDggKzUzMTYsOSBAQAogICAgIC8qIENsZWFudXAgZm9yIGF0dHJpYnV0ZSAqLwogICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKICAgICAvKiBDbGVhbnVwIGZvciB2YWx1ZSAqLwotICAgIGlmICh2YWx1ZS5vYmopCisgICAgaWYgKHZhbHVlLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNTA3MSwyNCArNTMzOSwyNiBAQAogIiAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOwogCiAjZGVmaW5lIE9TX1JFTU9WRVhBVFRSX01FVEhPRERFRiAgICBcCi0gICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilvc19yZW1vdmV4YXR0ciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIG9zX3JlbW92ZXhhdHRyX19kb2NfX30sCisgICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilvc19yZW1vdmV4YXR0ciwgTUVUSF9GQVNUQ0FMTCwgb3NfcmVtb3ZleGF0dHJfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX3JlbW92ZXhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBwYXRoX3QgKmF0dHJpYnV0ZSwKICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1vc19yZW1vdmV4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX3JlbW92ZXhhdHRyKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPJk8mfCRwOnJlbW92ZXhhdHRyIiwgX2tleXdvcmRzLCAwfTsKICAgICBwYXRoX3QgcGF0aCA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJwYXRoIiwgMCwgMSk7CiAgICAgcGF0aF90IGF0dHJpYnV0ZSA9IFBBVEhfVF9JTklUSUFMSVpFKCJyZW1vdmV4YXR0ciIsICJhdHRyaWJ1dGUiLCAwLCAwKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6cmVtb3ZleGF0dHIiLCBfa2V5d29yZHMsCi0gICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsICZmb2xsb3dfc3ltbGlua3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsIHBhdGhfY29udmVydGVyLCAmYXR0cmlidXRlLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX3JlbW92ZXhhdHRyX2ltcGwobW9kdWxlLCAmcGF0aCwgJmF0dHJpYnV0ZSwgZm9sbG93X3N5bWxpbmtzKTsKIAogZXhpdDoKQEAgLTUxMTcsMjIgKzUzODcsMjQgQEAKICIgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKIAogI2RlZmluZSBPU19MSVNUWEFUVFJfTUVUSE9EREVGICAgIFwKLSAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilvc19saXN0eGF0dHIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBvc19saXN0eGF0dHJfX2RvY19ffSwKKyAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilvc19saXN0eGF0dHIsIE1FVEhfRkFTVENBTEwsIG9zX2xpc3R4YXR0cl9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NfbGlzdHhhdHRyX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBpbnQgZm9sbG93X3N5bWxpbmtzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2xpc3R4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK29zX2xpc3R4YXR0cihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsicGF0aCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPJiRwOmxpc3R4YXR0ciIsIF9rZXl3b3JkcywgMH07CiAgICAgcGF0aF90IHBhdGggPSBQQVRIX1RfSU5JVElBTElaRSgibGlzdHhhdHRyIiwgInBhdGgiLCAxLCAxKTsKICAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJiRwOmxpc3R4YXR0ciIsIF9rZXl3b3JkcywKLSAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLCAmZm9sbG93X3N5bWxpbmtzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG9zX2xpc3R4YXR0cl9pbXBsKG1vZHVsZSwgJnBhdGgsIGZvbGxvd19zeW1saW5rcyk7CiAKIGV4aXQ6CkBAIC01MTYyLDggKzU0MzQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjp1cmFuZG9tIiwgJnNpemUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibjp1cmFuZG9tIiwgJnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3NfdXJhbmRvbV9pbXBsKG1vZHVsZSwgc2l6ZSk7CiAKIGV4aXQ6CkBAIC01MTc0LDcgKzU0NDcsMTEgQEAKICJjcHVfY291bnQoJG1vZHVsZSwgLylcbiIKICItLVxuIgogIlxuIgotIlJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuIik7CisiUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtOyByZXR1cm4gTm9uZSBpZiBpbmRldGVybWluYWJsZS5cbiIKKyJcbiIKKyJUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW5cbiIKKyJ1c2UuICBUaGUgbnVtYmVyIG9mIHVzYWJsZSBDUFVzIGNhbiBiZSBvYnRhaW5lZCB3aXRoXG4iCisiYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAiKTsKIAogI2RlZmluZSBPU19DUFVfQ09VTlRfTUVUSE9EREVGICAgIFwKICAgICB7ImNwdV9jb3VudCIsIChQeUNGdW5jdGlvbilvc19jcHVfY291bnQsIE1FVEhfTk9BUkdTLCBvc19jcHVfY291bnRfX2RvY19ffSwKQEAgLTUyMDcsMTEgKzU0ODQsMTMgQEAKICAgICBpbnQgZmQ7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X2luaGVyaXRhYmxlIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X2luaGVyaXRhYmxlIiwgJmZkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBvc19nZXRfaW5oZXJpdGFibGVfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTIzOCw4ICs1NTE3LDkgQEAKICAgICBpbnQgaW5oZXJpdGFibGU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpOnNldF9pbmhlcml0YWJsZSIsCi0gICAgICAgICZmZCwgJmluaGVyaXRhYmxlKSkKKyAgICAgICAgJmZkLCAmaW5oZXJpdGFibGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gb3Nfc2V0X2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBmZCwgaW5oZXJpdGFibGUpOwogCiBleGl0OgpAQCAtNTI1OCwyMCArNTUzOCwyMiBAQAogICAgIHsiZ2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlLCBNRVRIX08sIG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKIAogc3RhdGljIGludAotb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSk7Citvc19nZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2dldF9oYW5kbGVfaW5oZXJpdGFibGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGU7CisgICAgaW50cHRyX3QgaGFuZGxlOwogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9JTlRQVFIgIjpnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgJmhhbmRsZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICIiIF9QeV9QQVJTRV9JTlRQVFIgIjpnZXRfaGFuZGxlX2luaGVyaXRhYmxlIiwgJmhhbmRsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKG1vZHVsZSwgaGFuZGxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNTI5MiwxOSArNTU3NCwyMCBAQAogICAgIHsic2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsIChQeUNGdW5jdGlvbilvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlLCBNRVRIX1ZBUkFSR1MsIG9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIFB5X2ludHB0cl90IGhhbmRsZTsKKyAgICBpbnRwdHJfdCBoYW5kbGU7CiAgICAgaW50IGluaGVyaXRhYmxlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiIF9QeV9QQVJTRV9JTlRQVFIgInA6c2V0X2hhbmRsZV9pbmhlcml0YWJsZSIsCi0gICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpCisgICAgICAgICZoYW5kbGUsICZpbmhlcml0YWJsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwobW9kdWxlLCBoYW5kbGUsIGluaGVyaXRhYmxlKTsKIAogZXhpdDoKQEAgLTUzMTMsNiArNTU5Niw3NSBAQAogCiAjZW5kaWYgLyogZGVmaW5lZChNU19XSU5ET1dTKSAqLwogCitQeURvY19TVFJWQVIob3NfZnNwYXRoX19kb2NfXywKKyJmc3BhdGgoJG1vZHVsZSwgLywgcGF0aClcbiIKKyItLVxuIgorIlxuIgorIlJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LlxuIgorIlxuIgorIklmIHRoZSBvYmplY3QgaXMgc3RyIG9yIGJ5dGVzLCB0aGVuIGFsbG93IGl0IHRvIHBhc3MgdGhyb3VnaCBhcy1pcy4gSWYgdGhlXG4iCisib2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXJcbiIKKyJ0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4iKTsKKworI2RlZmluZSBPU19GU1BBVEhfTUVUSE9EREVGICAgIFwKKyAgICB7ImZzcGF0aCIsIChQeUNGdW5jdGlvbilvc19mc3BhdGgsIE1FVEhfRkFTVENBTEwsIG9zX2ZzcGF0aF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik86ZnNwYXRoIiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqcGF0aDsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmcGF0aCkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBvc19mc3BhdGhfaW1wbChtb2R1bGUsIHBhdGgpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NX1NZU0NBTEwpCisKK1B5RG9jX1NUUlZBUihvc19nZXRyYW5kb21fX2RvY19fLAorImdldHJhbmRvbSgkbW9kdWxlLCAvLCBzaXplLCBmbGFncz0wKVxuIgorIi0tXG4iCisiXG4iCisiT2J0YWluIGEgc2VyaWVzIG9mIHJhbmRvbSBieXRlcy4iKTsKKworI2RlZmluZSBPU19HRVRSQU5ET01fTUVUSE9EREVGICAgIFwKKyAgICB7ImdldHJhbmRvbSIsIChQeUNGdW5jdGlvbilvc19nZXRyYW5kb20sIE1FVEhfRkFTVENBTEwsIG9zX2dldHJhbmRvbV9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmFuZG9tX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfc3NpemVfdCBzaXplLCBpbnQgZmxhZ3MpOworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZ2V0cmFuZG9tKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2l6ZSIsICJmbGFncyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Im58aTpnZXRyYW5kb20iLCBfa2V5d29yZHMsIDB9OworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgZmxhZ3MgPSAwOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzaXplLCAmZmxhZ3MpKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gb3NfZ2V0cmFuZG9tX2ltcGwobW9kdWxlLCBzaXplLCBmbGFncyk7CisKK2V4aXQ6CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCkgKi8KKwogI2lmbmRlZiBPU19UVFlOQU1FX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfVFRZTkFNRV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19UVFlOQU1FX01FVEhPRERFRikgKi8KQEAgLTU0OTMsNiArNTg0NSwxMCBAQAogICAgICNkZWZpbmUgT1NfR0VUR0lEX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdJRF9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgT1NfR0VUUElEX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfR0VUUElEX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVFBJRF9NRVRIT0RERUYpICovCisKICNpZm5kZWYgT1NfR0VUR1JPVVBTX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfR0VUR1JPVVBTX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKE9TX0dFVEdST1VQU19NRVRIT0RERUYpICovCkBAIC01NzQxLDYgKzYwOTcsMTAgQEAKICAgICAjZGVmaW5lIE9TX1NZU0NPTkZfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfU1lTQ09ORl9NRVRIT0RERUYpICovCiAKKyNpZm5kZWYgT1NfU1RBUlRGSUxFX01FVEhPRERFRgorICAgICNkZWZpbmUgT1NfU1RBUlRGSUxFX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKE9TX1NUQVJURklMRV9NRVRIT0RERUYpICovCisKICNpZm5kZWYgT1NfR0VUTE9BREFWR19NRVRIT0RERUYKICAgICAjZGVmaW5lIE9TX0dFVExPQURBVkdfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUTE9BREFWR19NRVRIT0RERUYpICovCkBAIC01Nzg0LDQgKzYxNDQsOCBAQAogI2lmbmRlZiBPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRgogICAgICNkZWZpbmUgT1NfU0VUX0hBTkRMRV9JTkhFUklUQUJMRV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChPU19TRVRfSEFORExFX0lOSEVSSVRBQkxFX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZDVmODMxYjIzMTQ1ZDFlIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKworI2lmbmRlZiBPU19HRVRSQU5ET01fTUVUSE9EREVGCisgICAgI2RlZmluZSBPU19HRVRSQU5ET01fTUVUSE9EREVGCisjZW5kaWYgLyogIWRlZmluZWQoT1NfR0VUUkFORE9NX01FVEhPRERFRikgKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iOWVkNTcwM2QyZmViMGQ5IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9wd2Rtb2R1bGUuYy5oCmluZGV4IGNiMTkxYTAuLmY5ZTA2NDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3B3ZG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcHdkbW9kdWxlLmMuaApAQCAtMzMsOCArMzMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICphcmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ18sICJVOmdldHB3bmFtIiwgJmFyZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRwd25hbSIsICZhcmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHdkX2dldHB3bmFtX2ltcGwobW9kdWxlLCBhcmcpOwogCiBleGl0OgpAQCAtNjgsNCArNjksNCBAQAogI2lmbmRlZiBQV0RfR0VUUFdBTExfTUVUSE9EREVGCiAgICAgI2RlZmluZSBQV0RfR0VUUFdBTExfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoUFdEX0dFVFBXQUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMGVhMWM1YzgzMmYwYzFhIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mYzQxZDhkODhlYzIwNmQ4IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3B5ZXhwYXQuYy5oIGIvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKaW5kZXggYzViNWM3MS4uNzVhMDk2YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvcHlleHBhdC5jLmgKQEAgLTI1LDggKzI1LDkgQEAKICAgICBpbnQgaXNmaW5hbCA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpQYXJzZSIsCi0gICAgICAgICZkYXRhLCAmaXNmaW5hbCkpCisgICAgICAgICZkYXRhLCAmaXNmaW5hbCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9QYXJzZV9pbXBsKHNlbGYsIGRhdGEsIGlzZmluYWwpOwogCiBleGl0OgpAQCAtNjAsOCArNjEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmJhc2U7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6U2V0QmFzZSIsICZiYXNlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInM6U2V0QmFzZSIsICZiYXNlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldEJhc2VfaW1wbChzZWxmLCBiYXNlKTsKIAogZXhpdDoKQEAgLTEyOSw4ICsxMzEsOSBAQAogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAienxzOkV4dGVybmFsRW50aXR5UGFyc2VyQ3JlYXRlIiwKLSAgICAgICAgJmNvbnRleHQsICZlbmNvZGluZykpCisgICAgICAgICZjb250ZXh0LCAmZW5jb2RpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF94bWxwYXJzZXJfRXh0ZXJuYWxFbnRpdHlQYXJzZXJDcmVhdGVfaW1wbChzZWxmLCBjb250ZXh0LCBlbmNvZGluZyk7CiAKIGV4aXQ6CkBAIC0xNjAsOCArMTYzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgZmxhZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpTZXRQYXJhbUVudGl0eVBhcnNpbmciLCAmZmxhZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOlNldFBhcmFtRW50aXR5UGFyc2luZyIsICZmbGFnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfeG1scGFyc2VyX1NldFBhcmFtRW50aXR5UGFyc2luZ19pbXBsKHNlbGYsIGZsYWcpOwogCiBleGl0OgpAQCAtMTkzLDggKzE5Nyw5IEBACiAgICAgaW50IGZsYWcgPSAxOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwKLSAgICAgICAgJmZsYWcpKQorICAgICAgICAmZmxhZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBweWV4cGF0X3htbHBhcnNlcl9Vc2VGb3JlaWduRFREX2ltcGwoc2VsZiwgZmxhZyk7CiAKIGV4aXQ6CkBAIC0yMjgsMjQgKzIzMywyNiBAQAogIlJldHVybiBhIG5ldyBYTUwgcGFyc2VyIG9iamVjdC4iKTsKIAogI2RlZmluZSBQWUVYUEFUX1BBUlNFUkNSRUFURV9NRVRIT0RERUYgICAgXAotICAgIHsiUGFyc2VyQ3JlYXRlIiwgKFB5Q0Z1bmN0aW9uKXB5ZXhwYXRfUGFyc2VyQ3JlYXRlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgcHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19ffSwKKyAgICB7IlBhcnNlckNyZWF0ZSIsIChQeUNGdW5jdGlvbilweWV4cGF0X1BhcnNlckNyZWF0ZSwgTUVUSF9GQVNUQ0FMTCwgcHlleHBhdF9QYXJzZXJDcmVhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHB5ZXhwYXRfUGFyc2VyQ3JlYXRlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzcGFjZV9zZXBhcmF0b3IsIFB5T2JqZWN0ICppbnRlcm4pOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcHlleHBhdF9QYXJzZXJDcmVhdGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitweWV4cGF0X1BhcnNlckNyZWF0ZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAibmFtZXNwYWNlX3NlcGFyYXRvciIsICJpbnRlcm4iLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJuYW1lc3BhY2Vfc2VwYXJhdG9yIiwgImludGVybiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Inx6ek86UGFyc2VyQ3JlYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqbmFtZXNwYWNlX3NlcGFyYXRvciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmludGVybiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8enpPOlBhcnNlckNyZWF0ZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJmVuY29kaW5nLCAmbmFtZXNwYWNlX3NlcGFyYXRvciwgJmludGVybikpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZlbmNvZGluZywgJm5hbWVzcGFjZV9zZXBhcmF0b3IsICZpbnRlcm4pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gcHlleHBhdF9QYXJzZXJDcmVhdGVfaW1wbChtb2R1bGUsIGVuY29kaW5nLCBuYW1lc3BhY2Vfc2VwYXJhdG9yLCBpbnRlcm4pOwogCiBleGl0OgpAQCAtMjcwLDggKzI3Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgbG9uZyBjb2RlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJsOkVycm9yU3RyaW5nIiwgJmNvZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAibDpFcnJvclN0cmluZyIsICZjb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHB5ZXhwYXRfRXJyb3JTdHJpbmdfaW1wbChtb2R1bGUsIGNvZGUpOwogCiBleGl0OgpAQCAtMjgxLDQgKzI4OSw0IEBACiAjaWZuZGVmIFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGCiAgICAgI2RlZmluZSBQWUVYUEFUX1hNTFBBUlNFUl9VU0VGT1JFSUdORFREX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFBZRVhQQVRfWE1MUEFSU0VSX1VTRUZPUkVJR05EVERfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQ0NzljZmFiNjA3ZTlkYzggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWU4ODlmN2M2YWY2Y2M0MmYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhMW1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaAppbmRleCA1YjhkYjgwLi5iMDhlOTJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGExbW9kdWxlLmMuaApAQCAtNzIsMjQgKzcyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQTEgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMV9TSEExX01FVEhPRERFRiAgICBcCi0gICAgeyJzaGExIiwgKFB5Q0Z1bmN0aW9uKV9zaGExX3NoYTEsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhMV9zaGExX19kb2NfX30sCisgICAgeyJzaGExIiwgKFB5Q0Z1bmN0aW9uKV9zaGExX3NoYTEsIE1FVEhfRkFTVENBTEwsIF9zaGExX3NoYTFfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGExX3NoYTFfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGExX3NoYTEoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhMV9zaGExKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGExIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTEiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGExX3NoYTFfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wYjZhMTk0ZmJiMGI5NGYyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xNDMwNDUwZjNmODA2ODk1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaGEyNTZtb2R1bGUuYy5oCmluZGV4IDY2MTU2OWMuLjExNWRiNTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NoYTI1Nm1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2hhMjU2bW9kdWxlLmMuaApAQCAtNzIsMjEgKzcyLDIzIEBACiAiUmV0dXJuIGEgbmV3IFNIQS0yNTYgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMjU2X1NIQTI1Nl9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMjU2IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjU2LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyNTZfX2RvY19ffSwKKyAgICB7InNoYTI1NiIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTI1NiwgTUVUSF9GQVNUQ0FMTCwgX3NoYTI1Nl9zaGEyNTZfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGEyNTZfc2hhMjU2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMjU2X3NoYTI1NihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGEyNTZfc2hhMjU2KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEyNTYiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjU2IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMjU2X3NoYTI1Nl9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKQEAgLTEwMCwyNCArMTAyLDI2IEBACiAiUmV0dXJuIGEgbmV3IFNIQS0yMjQgaGFzaCBvYmplY3Q7IG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBhIHN0cmluZy4iKTsKIAogI2RlZmluZSBfU0hBMjU2X1NIQTIyNF9NRVRIT0RERUYgICAgXAotICAgIHsic2hhMjI0IiwgKFB5Q0Z1bmN0aW9uKV9zaGEyNTZfc2hhMjI0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgX3NoYTI1Nl9zaGEyMjRfX2RvY19ffSwKKyAgICB7InNoYTIyNCIsIChQeUNGdW5jdGlvbilfc2hhMjU2X3NoYTIyNCwgTUVUSF9GQVNUQ0FMTCwgX3NoYTI1Nl9zaGEyMjRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zaGEyNTZfc2hhMjI0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnN0cmluZyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1fc2hhMjU2X3NoYTIyNChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK19zaGEyNTZfc2hhMjI0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzdHJpbmciLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8TzpzaGEyMjQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzdHJpbmcgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE86c2hhMjI0IiwgX2tleXdvcmRzLAotICAgICAgICAmc3RyaW5nKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfc2hhMjU2X3NoYTIyNF9pbXBsKG1vZHVsZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTVhMWZjNTQ4MGUzOTlmOTUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5NDM5ZDcwZGI3ZWFkNWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3NoYTUxMm1vZHVsZS5jLmgKaW5kZXggZDY0YzJhNC4uYTJiNTdmNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc2hhNTEybW9kdWxlLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy9zaGE1MTJtb2R1bGUuYy5oCkBAIC0yLDggKzIsNiBAQAogcHJlc2VydmUKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV9jb3B5X19kb2NfXywKICJjb3B5KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC0yMiwxMCArMjAsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2NvcHlfaW1wbChzZWxmKTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihTSEE1MTJUeXBlX2RpZ2VzdF9fZG9jX18sCiAiZGlnZXN0KCRzZWxmLCAvKVxuIgogIi0tXG4iCkBAIC00NCwxMCArMzgsNiBAQAogICAgIHJldHVybiBTSEE1MTJUeXBlX2RpZ2VzdF9pbXBsKHNlbGYpOwogfQogCi0jZW5kaWYgLyogZGVmaW5lZChQWV9MT05HX0xPTkcpICovCi0KLSNpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykKLQogUHlEb2NfU1RSVkFSKFNIQTUxMlR5cGVfaGV4ZGlnZXN0X19kb2NfXywKICJoZXhkaWdlc3QoJHNlbGYsIC8pXG4iCiAiLS1cbiIKQEAgLTY2LDEwICs1Niw2IEBACiAgICAgcmV0dXJuIFNIQTUxMlR5cGVfaGV4ZGlnZXN0X2ltcGwoc2VsZik7CiB9CiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoU0hBNTEyVHlwZV91cGRhdGVfX2RvY19fLAogInVwZGF0ZSgkc2VsZiwgb2JqLCAvKVxuIgogIi0tXG4iCkBAIC03OSwxMCArNjUsNiBAQAogI2RlZmluZSBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYgICAgXAogICAgIHsidXBkYXRlIiwgKFB5Q0Z1bmN0aW9uKVNIQTUxMlR5cGVfdXBkYXRlLCBNRVRIX08sIFNIQTUxMlR5cGVfdXBkYXRlX19kb2NfX30sCiAKLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmIGRlZmluZWQoUFlfTE9OR19MT05HKQotCiBQeURvY19TVFJWQVIoX3NoYTUxMl9zaGE1MTJfX2RvY19fLAogInNoYTUxMigkbW9kdWxlLCAvLCBzdHJpbmc9YlwnXCcpXG4iCiAiLS1cbiIKQEAgLTkwLDMxICs3MiwyOSBAQAogIlJldHVybiBhIG5ldyBTSEEtNTEyIGhhc2ggb2JqZWN0OyBvcHRpb25hbGx5IGluaXRpYWxpemVkIHdpdGggYSBzdHJpbmcuIik7CiAKICNkZWZpbmUgX1NIQTUxMl9TSEE1MTJfTUVUSE9EREVGICAgIFwKLSAgICB7InNoYTUxMiIsIChQeUNGdW5jdGlvbilfc2hhNTEyX3NoYTUxMiwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIF9zaGE1MTJfc2hhNTEyX19kb2NfX30sCisgICAgeyJzaGE1MTIiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGE1MTIsIE1FVEhfRkFTVENBTEwsIF9zaGE1MTJfc2hhNTEyX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2hhNTEyX3NoYTUxMl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotX3NoYTUxMl9zaGE1MTIoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitfc2hhNTEyX3NoYTUxMihQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic3RyaW5nIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE86c2hhNTEyIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc3RyaW5nID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPOnNoYTUxMiIsIF9rZXl3b3JkcywKLSAgICAgICAgJnN0cmluZykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX3NoYTUxMl9zaGE1MTJfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotI2VuZGlmIC8qIGRlZmluZWQoUFlfTE9OR19MT05HKSAqLwotCi0jaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpCi0KIFB5RG9jX1NUUlZBUihfc2hhNTEyX3NoYTM4NF9fZG9jX18sCiAic2hhMzg0KCRtb2R1bGUsIC8sIHN0cmluZz1iXCdcJylcbiIKICItLVxuIgpAQCAtMTIyLDUwICsxMDIsMjYgQEAKICJSZXR1cm4gYSBuZXcgU0hBLTM4NCBoYXNoIG9iamVjdDsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLiIpOwogCiAjZGVmaW5lIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRiAgICBcCi0gICAgeyJzaGEzODQiLCAoUHlDRnVuY3Rpb24pX3NoYTUxMl9zaGEzODQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBfc2hhNTEyX3NoYTM4NF9fZG9jX199LAorICAgIHsic2hhMzg0IiwgKFB5Q0Z1bmN0aW9uKV9zaGE1MTJfc2hhMzg0LCBNRVRIX0ZBU1RDQUxMLCBfc2hhNTEyX3NoYTM4NF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogX3NoYTUxMl9zaGEzODRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLV9zaGE1MTJfc2hhMzg0KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorX3NoYTUxMl9zaGEzODQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InN0cmluZyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPOnNoYTM4NCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnN0cmluZyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TzpzaGEzODQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzdHJpbmcpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9zaGE1MTJfc2hhMzg0X2ltcGwobW9kdWxlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0KLSNlbmRpZiAvKiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGCi0gICAgI2RlZmluZSBTSEE1MTJUWVBFX0NPUFlfTUVUSE9EREVGCi0jZW5kaWYgLyogIWRlZmluZWQoU0hBNTEyVFlQRV9DT1BZX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0RJR0VTVF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfRElHRVNUX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX0hFWERJR0VTVF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfSEVYRElHRVNUX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBTSEE1MTJUWVBFX1VQREFURV9NRVRIT0RERUYKLSAgICAjZGVmaW5lIFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKFNIQTUxMlRZUEVfVVBEQVRFX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBfU0hBNTEyX1NIQTUxMl9NRVRIT0RERUYKLSAgICAjZGVmaW5lIF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKF9TSEE1MTJfU0hBNTEyX01FVEhPRERFRikgKi8KLQotI2lmbmRlZiBfU0hBNTEyX1NIQTM4NF9NRVRIT0RERUYKLSAgICAjZGVmaW5lIF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRgotI2VuZGlmIC8qICFkZWZpbmVkKF9TSEE1MTJfU0hBMzg0X01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYjg3ZjQ5NGRmNTBmZmMwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOGYxNTU5OGMzNDg3MDQ1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmggYi9Nb2R1bGVzL2NsaW5pYy9zaWduYWxtb2R1bGUuYy5oCmluZGV4IGM4ZjRjZDUuLmY4ZDViZDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3NpZ25hbG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc2lnbmFsbW9kdWxlLmMuaApAQCAtMjMsMTEgKzIzLDEzIEBACiAgICAgaW50IHNlY29uZHM7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmFsYXJtIiwgJnNlY29uZHMpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTphbGFybSIsICZzZWNvbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBzaWduYWxfYWxhcm1faW1wbChtb2R1bGUsIHNlY29uZHMpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC04NSw4ICs4Nyw5IEBACiAgICAgUHlPYmplY3QgKmhhbmRsZXI7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPOnNpZ25hbCIsCi0gICAgICAgICZzaWduYWxudW0sICZoYW5kbGVyKSkKKyAgICAgICAgJnNpZ25hbG51bSwgJmhhbmRsZXIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX3NpZ25hbF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtLCBoYW5kbGVyKTsKIAogZXhpdDoKQEAgLTExNyw4ICsxMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBzaWduYWxudW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0c2lnbmFsIiwgJnNpZ25hbG51bSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmdldHNpZ25hbCIsICZzaWduYWxudW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gc2lnbmFsX2dldHNpZ25hbF9pbXBsKG1vZHVsZSwgc2lnbmFsbnVtKTsKIAogZXhpdDoKQEAgLTE1MCw4ICsxNTQsOSBAQAogICAgIGludCBmbGFnOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzaWdpbnRlcnJ1cHQiLAotICAgICAgICAmc2lnbmFsbnVtLCAmZmxhZykpCisgICAgICAgICZzaWduYWxudW0sICZmbGFnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zaWdpbnRlcnJ1cHRfaW1wbChtb2R1bGUsIHNpZ25hbG51bSwgZmxhZyk7CiAKIGV4aXQ6CkBAIC0xODksOCArMTk0LDkgQEAKICAgICBkb3VibGUgaW50ZXJ2YWwgPSAwLjA7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlkfGQ6c2V0aXRpbWVyIiwKLSAgICAgICAgJndoaWNoLCAmc2Vjb25kcywgJmludGVydmFsKSkKKyAgICAgICAgJndoaWNoLCAmc2Vjb25kcywgJmludGVydmFsKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9zZXRpdGltZXJfaW1wbChtb2R1bGUsIHdoaWNoLCBzZWNvbmRzLCBpbnRlcnZhbCk7CiAKIGV4aXQ6CkBAIC0yMTksOCArMjI1LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgd2hpY2g7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0aXRpbWVyIiwgJndoaWNoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0aXRpbWVyIiwgJndoaWNoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9nZXRpdGltZXJfaW1wbChtb2R1bGUsIHdoaWNoKTsKIAogZXhpdDoKQEAgLTI1MSw4ICsyNTgsOSBAQAogICAgIFB5T2JqZWN0ICptYXNrOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpwdGhyZWFkX3NpZ21hc2siLAotICAgICAgICAmaG93LCAmbWFzaykpCisgICAgICAgICZob3csICZtYXNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9wdGhyZWFkX3NpZ21hc2tfaW1wbChtb2R1bGUsIGhvdywgbWFzayk7CiAKIGV4aXQ6CkBAIC0zNDQsOCArMzUyLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNpZ3RpbWVkd2FpdCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZzaWdzZXQsICZ0aW1lb3V0X29iaikpCisgICAgICAgICZzaWdzZXQsICZ0aW1lb3V0X29iaikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBzaWduYWxfc2lndGltZWR3YWl0X2ltcGwobW9kdWxlLCBzaWdzZXQsIHRpbWVvdXRfb2JqKTsKIAogZXhpdDoKQEAgLTM3Niw4ICszODUsOSBAQAogICAgIGludCBzaWduYWxudW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImxpOnB0aHJlYWRfa2lsbCIsCi0gICAgICAgICZ0aHJlYWRfaWQsICZzaWduYWxudW0pKQorICAgICAgICAmdGhyZWFkX2lkLCAmc2lnbmFsbnVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNpZ25hbF9wdGhyZWFkX2tpbGxfaW1wbChtb2R1bGUsIHRocmVhZF9pZCwgc2lnbmFsbnVtKTsKIAogZXhpdDoKQEAgLTQyOSw0ICs0MzksNCBAQAogI2lmbmRlZiBTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRgogICAgICNkZWZpbmUgU0lHTkFMX1BUSFJFQURfS0lMTF9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChTSUdOQUxfUFRIUkVBRF9LSUxMX01FVEhPRERFRikgKi8KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYWZhNTk4NDEyYmZiOGQyIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jNjk5MGVmMGQwYmE3MmI2IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2xpbmljL3Nwd2Rtb2R1bGUuYy5oIGIvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKaW5kZXggZTI2YWNmMS4uYjI0NzlmZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKKysrIGIvTW9kdWxlcy9jbGluaWMvc3B3ZG1vZHVsZS5jLmgKQEAgLTI0LDggKzI0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqYXJnOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmdfLCAiVTpnZXRzcG5hbSIsICZhcmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnXywgIlU6Z2V0c3BuYW0iLCAmYXJnKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHNwd2RfZ2V0c3BuYW1faW1wbChtb2R1bGUsIGFyZyk7CiAKIGV4aXQ6CkBAIC02NSw0ICs2Niw0IEBACiAjaWZuZGVmIFNQV0RfR0VUU1BBTExfTUVUSE9EREVGCiAgICAgI2RlZmluZSBTUFdEX0dFVFNQQUxMX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFNQV0RfR0VUU1BBTExfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUxMGY2ODFiMzZmNTRjMzAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA3Y2Q4YWYwYWZkNzdmZTcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oIGIvTW9kdWxlcy9jbGluaWMvdW5pY29kZWRhdGEuYy5oCmluZGV4IGQ1MjBjMWUuLmQ0ODFjY2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3VuaWNvZGVkYXRhLmMuaAorKysgYi9Nb2R1bGVzL2NsaW5pYy91bmljb2RlZGF0YS5jLmgKQEAgLTI3LDggKzI3LDkgQEAKICAgICBQeU9iamVjdCAqZGVmYXVsdF92YWx1ZSA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkN8TzpkZWNpbWFsIiwKLSAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKQorICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfZGVjaW1hbF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01OSw4ICs2MCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86ZGlnaXQiLAotICAgICAgICAmY2hyLCAmZGVmYXVsdF92YWx1ZSkpCisgICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kaWdpdF9pbXBsKHNlbGYsIGNociwgZGVmYXVsdF92YWx1ZSk7CiAKIGV4aXQ6CkBAIC05Miw4ICs5NCw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bnVtZXJpYyIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX251bWVyaWNfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMTE4LDggKzEyMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjYXRlZ29yeSIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpjYXRlZ29yeSIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2NhdGVnb3J5X2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTE0Niw4ICsxNTAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBjaHI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6YmlkaXJlY3Rpb25hbCIsICZjaHIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpiaWRpcmVjdGlvbmFsIiwgJmNocikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfYmlkaXJlY3Rpb25hbF9pbXBsKHNlbGYsIGNocik7CiAKIGV4aXQ6CkBAIC0xNzUsMTEgKzE4MCwxMyBAQAogICAgIGludCBjaHI7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6Y29tYmluaW5nIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmNvbWJpbmluZyIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9jb21iaW5pbmdfaW1wbChzZWxmLCBjaHIpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMDgsMTEgKzIxNSwxMyBAQAogICAgIGludCBjaHI7CiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6bWlycm9yZWQiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6bWlycm9yZWQiLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbWlycm9yZWRfaW1wbChzZWxmLCBjaHIpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0yMzcsOCArMjQ2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgY2hyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmVhc3RfYXNpYW5fd2lkdGgiLCAmY2hyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6ZWFzdF9hc2lhbl93aWR0aCIsICZjaHIpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX2Vhc3RfYXNpYW5fd2lkdGhfaW1wbChzZWxmLCBjaHIpOwogCiBleGl0OgpAQCAtMjY1LDggKzI3NSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGNocjsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpkZWNvbXBvc2l0aW9uIiwgJmNocikpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOmRlY29tcG9zaXRpb24iLCAmY2hyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVkYXRhX1VDRF9kZWNvbXBvc2l0aW9uX2ltcGwoc2VsZiwgY2hyKTsKIAogZXhpdDoKQEAgLTI5Niw4ICszMDcsOSBAQAogICAgIFB5T2JqZWN0ICppbnB1dDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08hOm5vcm1hbGl6ZSIsCi0gICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpCisgICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0Rfbm9ybWFsaXplX2ltcGwoc2VsZiwgZm9ybSwgaW5wdXQpOwogCiBleGl0OgpAQCAtMzI3LDggKzMzOSw5IEBACiAgICAgUHlPYmplY3QgKmRlZmF1bHRfdmFsdWUgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJDfE86bmFtZSIsCi0gICAgICAgICZjaHIsICZkZWZhdWx0X3ZhbHVlKSkKKyAgICAgICAgJmNociwgJmRlZmF1bHRfdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZWRhdGFfVUNEX25hbWVfaW1wbChzZWxmLCBjaHIsIGRlZmF1bHRfdmFsdWUpOwogCiBleGl0OgpAQCAtMzU4LDExICszNzEsMTIgQEAKICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIFB5X3NzaXplX2NsZWFuX3QgbmFtZV9sZW5ndGg7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInMjOmxvb2t1cCIsICZuYW1lLCAmbmFtZV9sZW5ndGgpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB1bmljb2RlZGF0YV9VQ0RfbG9va3VwX2ltcGwoc2VsZiwgbmFtZSwgbmFtZV9sZW5ndGgpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NGY4ZGEzM2M2YmM2ZWZjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTMxM2NlMTI5ZGE4N2IyZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NsaW5pYy96bGlibW9kdWxlLmMuaCBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCmluZGV4IGIxYWY3Y2UuLmZkYTM5MmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCisrKyBiL01vZHVsZXMvY2xpbmljL3psaWJtb2R1bGUuYy5oCkBAIC0zLDQ0ICszLDQ4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIFB5RG9jX1NUUlZBUih6bGliX2NvbXByZXNzX19kb2NfXywKLSJjb21wcmVzcygkbW9kdWxlLCBieXRlcywgbGV2ZWw9Wl9ERUZBVUxUX0NPTVBSRVNTSU9OLCAvKVxuIgorImNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIC8sIGxldmVsPVpfREVGQVVMVF9DT01QUkVTU0lPTilcbiIKICItLVxuIgogIlxuIgogIlJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyBjb21wcmVzc2VkIGRhdGEuXG4iCiAiXG4iCi0iICBieXRlc1xuIgorIiAgZGF0YVxuIgogIiAgICBCaW5hcnkgZGF0YSB0byBiZSBjb21wcmVzc2VkLlxuIgogIiAgbGV2ZWxcbiIKLSIgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOS4iKTsKKyIgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOSBvciAtMS4iKTsKIAogI2RlZmluZSBaTElCX0NPTVBSRVNTX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIHpsaWJfY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmJ5dGVzLCBpbnQgbGV2ZWwpOworemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqZGF0YSwgaW50IGxldmVsKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3MoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCit6bGliX2NvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfYnVmZmVyIGJ5dGVzID0ge05VTEwsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJsZXZlbCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InkqfGk6Y29tcHJlc3MiLCBfa2V5d29yZHMsIDB9OworICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogICAgIGludCBsZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aTpjb21wcmVzcyIsCi0gICAgICAgICZieXRlcywgJmxldmVsKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmRhdGEsICZsZXZlbCkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHpsaWJfY29tcHJlc3NfaW1wbChtb2R1bGUsICZieXRlcywgbGV2ZWwpOworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzX2ltcGwobW9kdWxlLCAmZGF0YSwgbGV2ZWwpOwogCiBleGl0OgotICAgIC8qIENsZWFudXAgZm9yIGJ5dGVzICovCi0gICAgaWYgKGJ5dGVzLm9iaikKLSAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZieXRlcyk7CisgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLworICAgIGlmIChkYXRhLm9iaikgeworICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIFB5RG9jX1NUUlZBUih6bGliX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoJG1vZHVsZSwgZGF0YSwgd2JpdHM9TUFYX1dCSVRTLCBidWZzaXplPURFRl9CVUZfU0laRSwgLylcbiIKKyJkZWNvbXByZXNzKCRtb2R1bGUsIGRhdGEsIC8sIHdiaXRzPU1BWF9XQklUUywgYnVmc2l6ZT1ERUZfQlVGX1NJWkUpXG4iCiAiLS1cbiIKICJcbiIKICJSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhLlxuIgpAQCAtNTMsMjkgKzU3LDMzIEBACiAiICAgIFRoZSBpbml0aWFsIG91dHB1dCBidWZmZXIgc2l6ZS4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzLCBNRVRIX1ZBUkFSR1MsIHpsaWJfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX2RlY29tcHJlc3MsIE1FVEhfRkFTVENBTEwsIHpsaWJfZGVjb21wcmVzc19fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9kZWNvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9kZWNvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQoremxpYl9kZWNvbXByZXNzKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgIndiaXRzIiwgImJ1ZnNpemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ5KnxpTyY6ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIFB5X3NzaXplX3QgYnVmc2l6ZSA9IERFRl9CVUZfU0laRTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8aU8mOmRlY29tcHJlc3MiLAotICAgICAgICAmZGF0YSwgJndiaXRzLCBzc2l6ZV90X2NvbnZlcnRlciwgJmJ1ZnNpemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgJndiaXRzLCBzc2l6ZV90X2NvbnZlcnRlciwgJmJ1ZnNpemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9kZWNvbXByZXNzX2ltcGwobW9kdWxlLCAmZGF0YSwgd2JpdHMsIGJ1ZnNpemUpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTExMSwxNyArMTE5LDE4IEBACiAiICAgIGNvbnRhaW5pbmcgc3Vic2VxdWVuY2VzIHRoYXQgYXJlIGxpa2VseSB0byBvY2N1ciBpbiB0aGUgaW5wdXQgZGF0YS4iKTsKIAogI2RlZmluZSBaTElCX0NPTVBSRVNTT0JKX01FVEhPRERFRiAgICBcCi0gICAgeyJjb21wcmVzc29iaiIsIChQeUNGdW5jdGlvbil6bGliX2NvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgemxpYl9jb21wcmVzc29ial9fZG9jX199LAorICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9jb21wcmVzc29iaiwgTUVUSF9GQVNUQ0FMTCwgemxpYl9jb21wcmVzc29ial9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9jb21wcmVzc29ial9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBsZXZlbCwgaW50IG1ldGhvZCwgaW50IHdiaXRzLAogICAgICAgICAgICAgICAgICAgICAgIGludCBtZW1MZXZlbCwgaW50IHN0cmF0ZWd5LCBQeV9idWZmZXIgKnpkaWN0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit6bGliX2NvbXByZXNzb2JqKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLCAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJsZXZlbCIsICJtZXRob2QiLCAid2JpdHMiLCAibWVtTGV2ZWwiLCAic3RyYXRlZ3kiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aWlpaWl5Kjpjb21wcmVzc29iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGxldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwogICAgIGludCBtZXRob2QgPSBERUZMQVRFRDsKICAgICBpbnQgd2JpdHMgPSBNQVhfV0JJVFM7CkBAIC0xMjksMTUgKzEzOCwxNyBAQAogICAgIGludCBzdHJhdGVneSA9IFpfREVGQVVMVF9TVFJBVEVHWTsKICAgICBQeV9idWZmZXIgemRpY3QgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aWlpaWl5Kjpjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJmxldmVsLCAmbWV0aG9kLCAmd2JpdHMsICZtZW1MZXZlbCwgJnN0cmF0ZWd5LCAmemRpY3QpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmbGV2ZWwsICZtZXRob2QsICZ3Yml0cywgJm1lbUxldmVsLCAmc3RyYXRlZ3ksICZ6ZGljdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2NvbXByZXNzb2JqX2ltcGwobW9kdWxlLCBsZXZlbCwgbWV0aG9kLCB3Yml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCAmemRpY3QpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHpkaWN0ICovCi0gICAgaWYgKHpkaWN0Lm9iaikKKyAgICBpZiAoemRpY3Qub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmemRpY3QpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xNTUsMjIgKzE2NiwyNCBAQAogIiAgICBkaWN0aW9uYXJ5IGFzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdCBwcm9kdWNlZCB0aGUgaW5wdXQgZGF0YS4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NPQkpfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pemxpYl9kZWNvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgemxpYl9kZWNvbXByZXNzb2JqX19kb2NfX30sCisgICAgeyJkZWNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKXpsaWJfZGVjb21wcmVzc29iaiwgTUVUSF9GQVNUQ0FMTCwgemxpYl9kZWNvbXByZXNzb2JqX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2RlY29tcHJlc3NvYmpfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgd2JpdHMsIFB5T2JqZWN0ICp6ZGljdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi16bGliX2RlY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit6bGliX2RlY29tcHJlc3NvYmooUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7IndiaXRzIiwgInpkaWN0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsid2JpdHMiLCAiemRpY3QiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IHdiaXRzID0gTUFYX1dCSVRTOwogICAgIFB5T2JqZWN0ICp6ZGljdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8aU86ZGVjb21wcmVzc29iaiIsIF9rZXl3b3JkcywKLSAgICAgICAgJndiaXRzLCAmemRpY3QpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmd2JpdHMsICZ6ZGljdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2RlY29tcHJlc3NvYmpfaW1wbChtb2R1bGUsIHdiaXRzLCB6ZGljdCk7CiAKIGV4aXQ6CkBAIC0yMDIsMjAgKzIxNSwyMiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBkYXRhID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5Kjpjb21wcmVzcyIsICZkYXRhKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOmNvbXByZXNzIiwgJmRhdGEpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9Db21wcmVzc19jb21wcmVzc19pbXBsKHNlbGYsICZkYXRhKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIFB5RG9jX1NUUlZBUih6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX18sCi0iZGVjb21wcmVzcygkc2VsZiwgZGF0YSwgbWF4X2xlbmd0aD0wLCAvKVxuIgorImRlY29tcHJlc3MoJHNlbGYsIGRhdGEsIC8sIG1heF9sZW5ndGg9MClcbiIKICItLVxuIgogIlxuIgogIlJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgZGF0YS5cbiIKQEAgLTIzMiwyOCArMjQ3LDMyIEBACiAiQ2FsbCB0aGUgZmx1c2goKSBtZXRob2QgdG8gY2xlYXIgdGhlc2UgYnVmZmVycy4iKTsKIAogI2RlZmluZSBaTElCX0RFQ09NUFJFU1NfREVDT01QUkVTU19NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19fZG9jX199LAorICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbil6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcywgTUVUSF9GQVNUQ0FMTCwgemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoY29tcG9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heF9sZW5ndGgpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3MoY29tcG9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzcyhjb21wb2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJtYXhfbGVuZ3RoIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsieSp8TyY6ZGVjb21wcmVzcyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlfYnVmZmVyIGRhdGEgPSB7TlVMTCwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp8TyY6ZGVjb21wcmVzcyIsCi0gICAgICAgICZkYXRhLCBzc2l6ZV90X2NvbnZlcnRlciwgJm1heF9sZW5ndGgpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZGF0YSwgc3NpemVfdF9jb252ZXJ0ZXIsICZtYXhfbGVuZ3RoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHpsaWJfRGVjb21wcmVzc19kZWNvbXByZXNzX2ltcGwoc2VsZiwgJmRhdGEsIG1heF9sZW5ndGgpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGRhdGEgKi8KLSAgICBpZiAoZGF0YS5vYmopCisgICAgaWYgKGRhdGEub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTI4Myw4ICszMDIsOSBAQAogICAgIGludCBtb2RlID0gWl9GSU5JU0g7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmZsdXNoIiwKLSAgICAgICAgJm1vZGUpKQorICAgICAgICAmbW9kZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0NvbXByZXNzX2ZsdXNoX2ltcGwoc2VsZiwgbW9kZSk7CiAKIGV4aXQ6CkBAIC0zNTcsOCArMzc3LDkgQEAKICAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IERFRl9CVUZfU0laRTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOmZsdXNoIiwKLSAgICAgICAgc3NpemVfdF9jb252ZXJ0ZXIsICZsZW5ndGgpKQorICAgICAgICBzc2l6ZV90X2NvbnZlcnRlciwgJmxlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX0RlY29tcHJlc3NfZmx1c2hfaW1wbChzZWxmLCBsZW5ndGgpOwogCiBleGl0OgpAQCAtMzkwLDE0ICs0MTEsMTYgQEAKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAxOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmFkbGVyMzIiLAotICAgICAgICAmZGF0YSwgJnZhbHVlKSkKKyAgICAgICAgJmRhdGEsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB6bGliX2FkbGVyMzJfaW1wbChtb2R1bGUsICZkYXRhLCB2YWx1ZSk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZGF0YSAqLwotICAgIGlmIChkYXRhLm9iaikKKyAgICBpZiAoZGF0YS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtNDI3LDE0ICs0NTAsMTYgQEAKICAgICB1bnNpZ25lZCBpbnQgdmFsdWUgPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnxJOmNyYzMyIiwKLSAgICAgICAgJmRhdGEsICZ2YWx1ZSkpCisgICAgICAgICZkYXRhLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gemxpYl9jcmMzMl9pbXBsKG1vZHVsZSwgJmRhdGEsIHZhbHVlKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBkYXRhICovCi0gICAgaWYgKGRhdGEub2JqKQorICAgIGlmIChkYXRhLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRhdGEpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00NDIsNCArNDY3LDQgQEAKICNpZm5kZWYgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgogICAgICNkZWZpbmUgWkxJQl9DT01QUkVTU19DT1BZX01FVEhPRERFRgogI2VuZGlmIC8qICFkZWZpbmVkKFpMSUJfQ09NUFJFU1NfQ09QWV9NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzcxMWVmMDJkMWQ1Nzc2YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2E0ZTJiZmU3NTA0MjNhMyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NtYXRobW9kdWxlLmMgYi9Nb2R1bGVzL2NtYXRobW9kdWxlLmMKaW5kZXggY2JhNDJhNy4uODMxOTc2NyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvY21hdGhtb2R1bGUuYwpAQCAtODEsNiArODEsNTQgQEAKICNlbmRpZgogI2RlZmluZSBDTV9TQ0FMRV9ET1dOICgtKENNX1NDQUxFX1VQKzEpLzIpCiAKKy8qIENvbnN0YW50cyBjbWF0aC5pbmYsIGNtYXRoLmluZmosIGNtYXRoLm5hbiwgY21hdGgubmFuai4KKyAgIGNtYXRoLm5hbiBhbmQgY21hdGgubmFuaiBhcmUgZGVmaW5lZCBvbmx5IHdoZW4gZWl0aGVyCisgICBQWV9OT19TSE9SVF9GTE9BVF9SRVBSIGlzICpub3QqIGRlZmluZWQgKHdoaWNoIHNob3VsZCBiZQorICAgdGhlIG1vc3QgY29tbW9uIHNpdHVhdGlvbiBvbiBtYWNoaW5lcyB1c2luZyBhbiBJRUVFIDc1NAorICAgcmVwcmVzZW50YXRpb24pLCBvciBQeV9OQU4gaXMgZGVmaW5lZC4gKi8KKworc3RhdGljIGRvdWJsZQorbV9pbmYodm9pZCkKK3sKKyNpZm5kZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUgorICAgIHJldHVybiBfUHlfZGdfaW5maW5pdHkoMCk7CisjZWxzZQorICAgIHJldHVybiBQeV9IVUdFX1ZBTDsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlfY29tcGxleAorY19pbmZqKHZvaWQpCit7CisgICAgUHlfY29tcGxleCByOworICAgIHIucmVhbCA9IDAuMDsKKyAgICByLmltYWcgPSBtX2luZigpOworICAgIHJldHVybiByOworfQorCisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisKK3N0YXRpYyBkb3VibGUKK21fbmFuKHZvaWQpCit7CisjaWZuZGVmIFBZX05PX1NIT1JUX0ZMT0FUX1JFUFIKKyAgICByZXR1cm4gX1B5X2RnX3N0ZG5hbigwKTsKKyNlbHNlCisgICAgcmV0dXJuIFB5X05BTjsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlfY29tcGxleAorY19uYW5qKHZvaWQpCit7CisgICAgUHlfY29tcGxleCByOworICAgIHIucmVhbCA9IDAuMDsKKyAgICByLmltYWcgPSBtX25hbigpOworICAgIHJldHVybiByOworfQorCisjZW5kaWYKKwogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KIHN0YXRpYyBQeV9jb21wbGV4IGNtYXRoX2FzaW5oX2ltcGwoUHlPYmplY3QgKiwgUHlfY29tcGxleCk7CiBzdGF0aWMgUHlfY29tcGxleCBjbWF0aF9hdGFuaF9pbXBsKFB5T2JqZWN0ICosIFB5X2NvbXBsZXgpOwpAQCAtMTIzOSw2ICsxMjg3LDEzIEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJwaSIsCiAgICAgICAgICAgICAgICAgICAgICAgIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1BJKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfRSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGF1IiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfVEFVKSk7IC8qIDJwaSAqLworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiaW5mIiwgUHlGbG9hdF9Gcm9tRG91YmxlKG1faW5mKCkpKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZmoiLCBQeUNvbXBsZXhfRnJvbUNDb21wbGV4KGNfaW5maigpKSk7CisjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW4iLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9uYW4oKSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAibmFuaiIsIFB5Q29tcGxleF9Gcm9tQ0NvbXBsZXgoY19uYW5qKCkpKTsKKyNlbmRpZgogCiAgICAgLyogaW5pdGlhbGl6ZSBzcGVjaWFsIHZhbHVlIHRhYmxlcyAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwppbmRleCBmMWZkYTQ4Li4xYzFlNGZiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jCisrKyBiL01vZHVsZXMvZmF1bHRoYW5kbGVyLmMKQEAgLTExOSw3ICsxMTksNyBAQAogICAgICAgIGhhbmRsZXIgZmFpbHMgaW4gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgKi8KICAgICB7U0lHU0VHViwgMCwgIlNlZ21lbnRhdGlvbiBmYXVsdCIsIH0KIH07Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBmYXVsdGhhbmRsZXJfbnNpZ25hbHMgPSBcCitzdGF0aWMgY29uc3Qgc2l6ZV90IGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9IFwKICAgICBQeV9BUlJBWV9MRU5HVEgoZmF1bHRoYW5kbGVyX2hhbmRsZXJzKTsKIAogI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICBmZCA9IF9QeUxvbmdfQXNJbnQoZmlsZSk7CiAgICAgICAgIGlmIChmZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoZmQgPCAwIHx8ICFfUHlWZXJpZnlfZmQoZmQpKSB7CisgICAgICAgIGlmIChmZCA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCBhIHZhbGlkIGZpbGUgZGVzY3JpcHRlciIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgIHJldHVybiBmZDsKICAgICB9CiAKLSAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZpbGVubywgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtMTg2LDcgKzE4Niw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICBlbHNlIHsKQEAgLTIwMiw4ICsyMDIsOSBAQAogc3RhdGljIFB5VGhyZWFkU3RhdGUqCiBnZXRfdGhyZWFkX3N0YXRlKHZvaWQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKICAgICBpZiAodHN0YXRlID09IE5VTEwpIHsKKyAgICAgICAgLyoganVzdCBpbiBjYXNlIGJ1dCB2ZXJ5IHVubGlrZWx5Li4uICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzQsMTEgKzIzNSwxMiBAQAogICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCiAgICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKICNlbHNlCi0gICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICB0c3RhdGUgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKICNlbmRpZgogCi0gICAgaWYgKGFsbF90aHJlYWRzKQotICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIGludGVycCwgdHN0YXRlKTsKKyAgICBpZiAoYWxsX3RocmVhZHMpIHsKKyAgICAgICAgKHZvaWQpX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCB0c3RhdGUpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQogICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CkBAIC0yNzIsNyArMjc0LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoYWxsX3RocmVhZHMpIHsKLSAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCB0c3RhdGUpOwogICAgICAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIGVycm1zZyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI4OCw2ICsyOTAsMTkgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorc3RhdGljIHZvaWQKK2ZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyKQoreworICAgIGlmICghaGFuZGxlci0+ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgKHZvaWQpc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKKyNlbHNlCisgICAgKHZvaWQpc2lnbmFsKGhhbmRsZXItPnNpZ251bSwgaGFuZGxlci0+cHJldmlvdXMpOworI2VuZGlmCit9CisKIAogLyogSGFuZGxlciBmb3IgU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBzaWduYWxzLgogCkBAIC0zMDYsNyArMzIxLDcgQEAKIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcihpbnQgc2lnbnVtKQogewogICAgIGNvbnN0IGludCBmZCA9IGZhdGFsX2Vycm9yLmZkOwotICAgIHVuc2lnbmVkIGludCBpOworICAgIHNpemVfdCBpOwogICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9IE5VTEw7CiAgICAgaW50IHNhdmVfZXJybm8gPSBlcnJubzsKIApAQCAtMzI0LDEyICszMzksNyBAQAogICAgIH0KIAogICAgIC8qIHJlc3RvcmUgdGhlIHByZXZpb3VzIGhhbmRsZXIgKi8KLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7Ci0jZWxzZQotICAgICh2b2lkKXNpZ25hbChzaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKLSNlbmRpZgotICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlX2ZhdGFsX2hhbmRsZXIoaGFuZGxlcik7CiAKICAgICBQVVRTKGZkLCAiRmF0YWwgUHl0aG9uIGVycm9yOiAiKTsKICAgICBQVVRTKGZkLCBoYW5kbGVyLT5uYW1lKTsKQEAgLTM1MSwyMCArMzYxLDExNyBAQAogICAgIHJhaXNlKHNpZ251bSk7CiB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCitzdGF0aWMgTE9ORyBXSU5BUEkKK2ZhdWx0aGFuZGxlcl9leGNfaGFuZGxlcihzdHJ1Y3QgX0VYQ0VQVElPTl9QT0lOVEVSUyAqZXhjX2luZm8pCit7CisgICAgY29uc3QgaW50IGZkID0gZmF0YWxfZXJyb3IuZmQ7CisgICAgRFdPUkQgY29kZSA9IGV4Y19pbmZvLT5FeGNlcHRpb25SZWNvcmQtPkV4Y2VwdGlvbkNvZGU7CisgICAgRFdPUkQgZmxhZ3MgPSBleGNfaW5mby0+RXhjZXB0aW9uUmVjb3JkLT5FeGNlcHRpb25GbGFnczsKKworICAgIC8qIG9ubHkgbG9nIGZhdGFsIGV4Y2VwdGlvbnMgKi8KKyAgICBpZiAoZmxhZ3MgJiBFWENFUFRJT05fTk9OQ09OVElOVUFCTEUpIHsKKyAgICAgICAgLyogY2FsbCB0aGUgbmV4dCBleGNlcHRpb24gaGFuZGxlciAqLworICAgICAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKKyAgICB9CisKKyAgICBQVVRTKGZkLCAiV2luZG93cyBmYXRhbCBleGNlcHRpb246ICIpOworICAgIHN3aXRjaCAoY29kZSkKKyAgICB7CisgICAgLyogb25seSBmb3JtYXQgbW9zdCBjb21tb24gZXJyb3JzICovCisgICAgY2FzZSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTjogUFVUUyhmZCwgImFjY2VzcyB2aW9sYXRpb24iKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fRkxUX0RJVklERV9CWV9aRVJPOiBQVVRTKGZkLCAiZmxvYXQgZGl2aWRlIGJ5IHplcm8iKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fRkxUX09WRVJGTE9XOiBQVVRTKGZkLCAiZmxvYXQgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPOiBQVVRTKGZkLCAiaW50IGRpdmlkZSBieSB6ZXJvIik7IGJyZWFrOworICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9PVkVSRkxPVzogUFVUUyhmZCwgImludGVnZXIgb3ZlcmZsb3ciKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fSU5fUEFHRV9FUlJPUjogUFVUUyhmZCwgInBhZ2UgZXJyb3IiKTsgYnJlYWs7CisgICAgY2FzZSBFWENFUFRJT05fU1RBQ0tfT1ZFUkZMT1c6IFBVVFMoZmQsICJzdGFjayBvdmVyZmxvdyIpOyBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQVVRTKGZkLCAiY29kZSAiKTsKKyAgICAgICAgX1B5X0R1bXBEZWNpbWFsKGZkLCBjb2RlKTsKKyAgICB9CisgICAgUFVUUyhmZCwgIlxuXG4iKTsKKworICAgIGlmIChjb2RlID09IEVYQ0VQVElPTl9BQ0NFU1NfVklPTEFUSU9OKSB7CisgICAgICAgIC8qIGRpc2FibGUgc2lnbmFsIGhhbmRsZXIgZm9yIFNJR1NFR1YgKi8KKyAgICAgICAgc2l6ZV90IGk7CisgICAgICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisgICAgICAgICAgICBpZiAoaGFuZGxlci0+c2lnbnVtID09IFNJR1NFR1YpIHsKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZGlzYWJsZV9mYXRhbF9oYW5kbGVyKGhhbmRsZXIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrKGZkLCBmYXRhbF9lcnJvci5hbGxfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF0YWxfZXJyb3IuaW50ZXJwKTsKKworICAgIC8qIGNhbGwgdGhlIG5leHQgZXhjZXB0aW9uIGhhbmRsZXIgKi8KKyAgICByZXR1cm4gRVhDRVBUSU9OX0NPTlRJTlVFX1NFQVJDSDsKK30KKyNlbmRpZgorCiAvKiBJbnN0YWxsIHRoZSBoYW5kbGVyIGZvciBmYXRhbCBzaWduYWxzLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKS4gKi8KIAorc3RhdGljIGludAorZmF1bHRoYW5kbGVyX2VuYWJsZSh2b2lkKQoreworICAgIHNpemVfdCBpOworCisgICAgaWYgKGZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZhdGFsX2Vycm9yLmVuYWJsZWQgPSAxOworCisgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXI7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247CisjZW5kaWYKKyAgICAgICAgaW50IGVycjsKKworICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyAgICAgICAgYXNzZXJ0KCFoYW5kbGVyLT5lbmFibGVkKTsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICBhY3Rpb24uc2FfaGFuZGxlciA9IGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcjsKKyAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCisgICAgICAgICAgIGl0cyBvd24gc2lnbmFsIGhhbmRsZXIgKi8KKyAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfTk9ERUZFUjsKKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCisgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAvKiBDYWxsIHRoZSBzaWduYWwgaGFuZGxlciBvbiBhbiBhbHRlcm5hdGUgc2lnbmFsIHN0YWNrCisgICAgICAgICAgICAgICBwcm92aWRlZCBieSBzaWdhbHRzdGFjaygpICovCisgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGVyciA9IHNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZhY3Rpb24sICZoYW5kbGVyLT5wcmV2aW91cyk7CisjZWxzZQorICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCisgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKTsKKyAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOworI2VuZGlmCisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDE7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIEFkZFZlY3RvcmVkRXhjZXB0aW9uSGFuZGxlcigxLCBmYXVsdGhhbmRsZXJfZXhjX2hhbmRsZXIpOworI2VuZGlmCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCoKLWZhdWx0aGFuZGxlcl9lbmFibGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorZmF1bHRoYW5kbGVyX3B5X2VuYWJsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgImFsbF90aHJlYWRzIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOwogICAgIGludCBhbGxfdGhyZWFkcyA9IDE7Ci0gICAgdW5zaWduZWQgaW50IGk7Ci0gICAgZmF1bHRfaGFuZGxlcl90ICpoYW5kbGVyOwotI2lmZGVmIEhBVkVfU0lHQUNUSU9OCi0gICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Rpb247Ci0jZW5kaWYKLSAgICBpbnQgZXJyOwogICAgIGludCBmZDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAKQEAgLTM4NiwzNyArNDkzLDEwIEBACiAgICAgZmF0YWxfZXJyb3IuYWxsX3RocmVhZHMgPSBhbGxfdGhyZWFkczsKICAgICBmYXRhbF9lcnJvci5pbnRlcnAgPSB0c3RhdGUtPmludGVycDsKIAotICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkgewotICAgICAgICBmYXRhbF9lcnJvci5lbmFibGVkID0gMTsKLQotICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7Ci0gICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICAgICAgICAgYWN0aW9uLnNhX2hhbmRsZXIgPSBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3I7Ci0gICAgICAgICAgICBzaWdlbXB0eXNldCgmYWN0aW9uLnNhX21hc2spOwotICAgICAgICAgICAgLyogRG8gbm90IHByZXZlbnQgdGhlIHNpZ25hbCBmcm9tIGJlaW5nIHJlY2VpdmVkIGZyb20gd2l0aGluCi0gICAgICAgICAgICAgICBpdHMgb3duIHNpZ25hbCBoYW5kbGVyICovCi0gICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOwotI2lmZGVmIEhBVkVfU0lHQUxUU1RBQ0sKLSAgICAgICAgICAgIGlmIChzdGFjay5zc19zcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjawotICAgICAgICAgICAgICAgICAgIHByb3ZpZGVkIGJ5IHNpZ2FsdHN0YWNrKCkgKi8KLSAgICAgICAgICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgfD0gU0FfT05TVEFDSzsKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgZXJyID0gc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmFjdGlvbiwgJmhhbmRsZXItPnByZXZpb3VzKTsKLSNlbHNlCi0gICAgICAgICAgICBoYW5kbGVyLT5wcmV2aW91cyA9IHNpZ25hbChoYW5kbGVyLT5zaWdudW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IpOwotICAgICAgICAgICAgZXJyID0gKGhhbmRsZXItPnByZXZpb3VzID09IFNJR19FUlIpOwotI2VuZGlmCi0gICAgICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1J1bnRpbWVFcnJvcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBoYW5kbGVyLT5lbmFibGVkID0gMTsKLSAgICAgICAgfQorICAgIGlmIChmYXVsdGhhbmRsZXJfZW5hYmxlKCkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC00MzAsMTQgKzUxMCw3IEBACiAgICAgICAgIGZhdGFsX2Vycm9yLmVuYWJsZWQgPSAwOwogICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CiAgICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKLSAgICAgICAgICAgIGlmICghaGFuZGxlci0+ZW5hYmxlZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSNpZmRlZiBIQVZFX1NJR0FDVElPTgotICAgICAgICAgICAgKHZvaWQpc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKLSNlbHNlCi0gICAgICAgICAgICAodm9pZClzaWduYWwoaGFuZGxlci0+c2lnbnVtLCBoYW5kbGVyLT5wcmV2aW91cyk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGVfZmF0YWxfaGFuZGxlcihoYW5kbGVyKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDY5LDcgKzU0Miw2IEBACiB7CiAgICAgUHlMb2NrU3RhdHVzIHN0OwogICAgIGNvbnN0IGNoYXIqIGVycm1zZzsKLSAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50OwogICAgIGludCBvazsKICNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCiAgICAgc2lnc2V0X3Qgc2V0OwpAQCAtNDg5LDEyICs1NjEsOSBAQAogICAgICAgICAvKiBUaW1lb3V0ID0+IGR1bXAgdHJhY2ViYWNrICovCiAgICAgICAgIGFzc2VydChzdCA9PSBQWV9MT0NLX0ZBSUxVUkUpOwogCi0gICAgICAgIC8qIGdldCB0aGUgdGhyZWFkIGhvbGRpbmcgdGhlIEdJTCwgTlVMTCBpZiBubyB0aHJlYWQgaG9sZCB0aGUgR0lMICovCi0gICAgICAgIGN1cnJlbnQgPSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQoKTsKLQogICAgICAgICBfUHlfd3JpdGVfbm9yYWlzZSh0aHJlYWQuZmQsIHRocmVhZC5oZWFkZXIsIChpbnQpdGhyZWFkLmhlYWRlcl9sZW4pOwogCi0gICAgICAgIGVycm1zZyA9IF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyh0aHJlYWQuZmQsIHRocmVhZC5pbnRlcnAsIGN1cnJlbnQpOworICAgICAgICBlcnJtc2cgPSBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModGhyZWFkLmZkLCB0aHJlYWQuaW50ZXJwLCBOVUxMKTsKICAgICAgICAgb2sgPSAoZXJybXNnID09IE5VTEwpOwogCiAgICAgICAgIGlmICh0aHJlYWQuZXhpdCkKQEAgLTg5NCw3ICs5NjMsNyBAQAogZmF1bHRoYW5kbGVyX3NpZ3NlZ3YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCByZWxlYXNlX2dpbCA9IDA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfcmVhZF9udWxsIiwgJnJlbGVhc2VfZ2lsKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9zaWdzZWd2IiwgJnJlbGVhc2VfZ2lsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAocmVsZWFzZV9naWwpIHsKQEAgLTkwNyw2ICs5NzYsNDkgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmZGVmIFdJVEhfVEhSRUFECitzdGF0aWMgdm9pZAorZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3RocmVhZCh2b2lkICpwbG9jaykKK3sKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgKmxvY2sgPSAoUHlUaHJlYWRfdHlwZV9sb2NrICopcGxvY2s7CisKKyAgICBQeV9GYXRhbEVycm9yKCJpbiBuZXcgdGhyZWFkIik7CisKKyAgICAvKiBub3RpZnkgdGhlIGNhbGxlciB0aGF0IHdlIGFyZSBkb25lICovCisgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKGxvY2spOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX2NfdGhyZWFkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBsb25nIHRocmVhZDsKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKworICAgIGZhdWx0aGFuZGxlcl9zdXBwcmVzc19jcmFzaF9yZXBvcnQoKTsKKworICAgIGxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKGxvY2sgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sobG9jaywgV0FJVF9MT0NLKTsKKworICAgIHRocmVhZCA9IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQoZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3RocmVhZCwgbG9jayk7CisgICAgaWYgKHRocmVhZCA9PSAtMSkgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sobG9jayk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gc3RhcnQgdGhlIHRocmVhZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiB3YWl0IHVudGlsIHRoZSB0aHJlYWQgY29tcGxldGVzOiBpdCB3aWxsIG5ldmVyIG9jY3VyLCBzaW5jZSBQeV9GYXRhbEVycm9yKCkKKyAgICAgICBleGl0cyB0aGUgcHJvY2VzcyBpbW1lZGlhbHR5LiAqLworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhsb2NrLCBXQUlUX0xPQ0spOworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhsb2NrKTsKKyAgICBQeVRocmVhZF9mcmVlX2xvY2sobG9jayk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlPYmplY3QgKgogZmF1bHRoYW5kbGVyX3NpZ2ZwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC05NTEsNiArMTA2Myw4IEBACiB9CiAKICNpZiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pCisjZGVmaW5lIEZBVUxUSEFORExFUl9TVEFDS19PVkVSRkxPVworCiAjaWZkZWYgX19JTlRFTF9DT01QSUxFUgogICAgLyogSXNzdWUgIzIzNjU0OiBUdXJuIG9mZiBJQ0MncyB0YWlsIGNhbGwgb3B0aW1pemF0aW9uIGZvciB0aGUKICAgICAqIHN0YWNrX292ZXJmbG93IGdlbmVyYXRvci4gSUNDIHR1cm5zIHRoZSByZWN1cnNpdmUgdGFpbCBjYWxsIGludG8KQEAgLTk1OCwxMiArMTA3MiwxMiBAQAogIyAgcHJhZ21hIGludGVsIG9wdGltaXphdGlvbl9sZXZlbCAwCiAjZW5kaWYKIHN0YXRpYwotUHlfdWludHB0cl90Ci1zdGFja19vdmVyZmxvdyhQeV91aW50cHRyX3QgbWluX3NwLCBQeV91aW50cHRyX3QgbWF4X3NwLCBzaXplX3QgKmRlcHRoKQordWludHB0cl90CitzdGFja19vdmVyZmxvdyh1aW50cHRyX3QgbWluX3NwLCB1aW50cHRyX3QgbWF4X3NwLCBzaXplX3QgKmRlcHRoKQogewogICAgIC8qIGFsbG9jYXRlIDQwOTYgYnl0ZXMgb24gdGhlIHN0YWNrIGF0IGVhY2ggY2FsbCAqLwogICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzQwOTZdOwotICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmJ1ZmZlcjsKKyAgICB1aW50cHRyX3Qgc3AgPSAodWludHB0cl90KSZidWZmZXI7CiAgICAgKmRlcHRoICs9IDE7CiAgICAgaWYgKHNwIDwgbWluX3NwIHx8IG1heF9zcCA8IHNwKQogICAgICAgICByZXR1cm4gc3A7CkBAIC05NzYsOCArMTA5MCw4IEBACiBmYXVsdGhhbmRsZXJfc3RhY2tfb3ZlcmZsb3coUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgc2l6ZV90IGRlcHRoLCBzaXplOwotICAgIFB5X3VpbnRwdHJfdCBzcCA9IChQeV91aW50cHRyX3QpJmRlcHRoOwotICAgIFB5X3VpbnRwdHJfdCBzdG9wOworICAgIHVpbnRwdHJfdCBzcCA9ICh1aW50cHRyX3QpJmRlcHRoOworICAgIHVpbnRwdHJfdCBzdG9wOwogCiAgICAgZmF1bHRoYW5kbGVyX3N1cHByZXNzX2NyYXNoX3JlcG9ydCgpOwogICAgIGRlcHRoID0gMDsKQEAgLTk5NCw3ICsxMTA4LDcgQEAKICAgICAgICAgc2l6ZSwgZGVwdGgpOwogICAgIHJldHVybiBOVUxMOwogfQotI2VuZGlmCisjZW5kaWYgICAvKiBkZWZpbmVkKEhBVkVfU0lHQUxUU1RBQ0spICYmIGRlZmluZWQoSEFWRV9TSUdBQ1RJT04pICovCiAKIAogc3RhdGljIGludApAQCAtMTAxNywxMiArMTEzMSwyNSBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9yYWlzZV9leGNlcHRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHVuc2lnbmVkIGludCBjb2RlLCBmbGFncyA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJJfEk6X3JhaXNlX2V4Y2VwdGlvbiIsICZjb2RlLCAmZmxhZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmYXVsdGhhbmRsZXJfc3VwcHJlc3NfY3Jhc2hfcmVwb3J0KCk7CisgICAgUmFpc2VFeGNlcHRpb24oY29kZSwgZmxhZ3MsIDAsIE5VTEwpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKIFB5RG9jX1NUUlZBUihtb2R1bGVfZG9jLAogImZhdWx0aGFuZGxlciBtb2R1bGUuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0gewogICAgIHsiZW5hYmxlIiwKLSAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9lbmFibGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3B5X2VuYWJsZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCiAgICAgIFB5RG9jX1NUUigiZW5hYmxlKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSk6ICIKICAgICAgICAgICAgICAgICJlbmFibGUgdGhlIGZhdWx0IGhhbmRsZXIiKX0sCiAgICAgeyJkaXNhYmxlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9kaXNhYmxlX3B5LCBNRVRIX05PQVJHUywKQEAgLTEwNjUsMTYgKzExOTIsMjUgQEAKICAgICAgICAgICAgICAgICJhIFNJR1NFR1Ygb3IgU0lHQlVTIHNpZ25hbCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIil9LAogICAgIHsiX3NpZ3NlZ3YiLCBmYXVsdGhhbmRsZXJfc2lnc2VndiwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoIl9zaWdzZWd2KHJlbGVhc2VfZ2lsPUZhbHNlKTogcmFpc2UgYSBTSUdTRUdWIHNpZ25hbCIpfSwKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHsiX2ZhdGFsX2Vycm9yX2NfdGhyZWFkIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX2NfdGhyZWFkLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJmYXRhbF9lcnJvcl9jX3RocmVhZCgpOiAiCisgICAgICAgICAgICAgICAiY2FsbCBQeV9GYXRhbEVycm9yKCkgaW4gYSBuZXcgQyB0aHJlYWQuIil9LAorI2VuZGlmCiAgICAgeyJfc2lnYWJydCIsIGZhdWx0aGFuZGxlcl9zaWdhYnJ0LCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnYWJydCgpOiByYWlzZSBhIFNJR0FCUlQgc2lnbmFsIil9LAogICAgIHsiX3NpZ2ZwZSIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnZnBlLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJfc2lnZnBlKCk6IHJhaXNlIGEgU0lHRlBFIHNpZ25hbCIpfSwKICAgICB7Il9mYXRhbF9lcnJvciIsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcl9weSwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoIl9mYXRhbF9lcnJvcihtZXNzYWdlKTogY2FsbCBQeV9GYXRhbEVycm9yKG1lc3NhZ2UpIil9LAotI2lmIGRlZmluZWQoSEFWRV9TSUdBTFRTVEFDSykgJiYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikKKyNpZmRlZiBGQVVMVEhBTkRMRVJfU1RBQ0tfT1ZFUkZMT1cKICAgICB7Il9zdGFja19vdmVyZmxvdyIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc3RhY2tfb3ZlcmZsb3csIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIl9zdGFja19vdmVyZmxvdygpOiByZWN1cnNpdmUgY2FsbCB0byByYWlzZSBhIHN0YWNrIG92ZXJmbG93Iil9LAogI2VuZGlmCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsiX3JhaXNlX2V4Y2VwdGlvbiIsIGZhdWx0aGFuZGxlcl9yYWlzZV9leGNlcHRpb24sIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJyYWlzZV9leGNlcHRpb24oY29kZSwgZmxhZ3M9MCk6IENhbGwgUmFpc2VFeGNlcHRpb24oY29kZSwgZmxhZ3MpLiIpfSwKKyNlbmRpZgogICAgIHtOVUxMLCBOVUxMfSAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTEwOTMsNyArMTIyOSwzMyBAQAogUHlNT0RJTklUX0ZVTkMKIFB5SW5pdF9mYXVsdGhhbmRsZXIodm9pZCkKIHsKLSAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZtb2R1bGVfZGVmKTsKKyAgICBQeU9iamVjdCAqbSA9IFB5TW9kdWxlX0NyZWF0ZSgmbW9kdWxlX2RlZik7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBBZGQgY29uc3RhbnRzIGZvciB1bml0IHRlc3RzICovCisjaWZkZWYgTVNfV0lORE9XUworICAgIC8qIFJhaXNlRXhjZXB0aW9uKCkgY29kZXMgKHByZWZpeGVkIGJ5IGFuIHVuZGVyc2NvcmUpICovCisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX0FDQ0VTU19WSU9MQVRJT04iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fSU5UX0RJVklERV9CWV9aRVJPKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJfRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX1NUQUNLX09WRVJGTE9XKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBSYWlzZUV4Y2VwdGlvbigpIGZsYWdzIChwcmVmaXhlZCBieSBhbiB1bmRlcnNjb3JlKSAqLworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9OT05DT05USU5VQUJMRSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ0VQVElPTl9OT05DT05USU5VQUJMRSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX0VYQ0VQVElPTl9OT05DT05USU5VQUJMRV9FWENFUFRJT04iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENFUFRJT05fTk9OQ09OVElOVUFCTEVfRVhDRVBUSU9OKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKworICAgIHJldHVybiBtOwogfQogCiAvKiBDYWxsIGZhdWx0aGFuZGxlci5lbmFibGUoKSBpZiB0aGUgUFlUSE9ORkFVTFRIQU5ETEVSIGVudmlyb25tZW50IHZhcmlhYmxlCkBAIC0xMTI4LDcgKzEyOTAsNyBAQAogICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobW9kdWxlLCAmUHlJZF9lbmFibGUsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfZW5hYmxlLCBOVUxMKTsKICAgICBQeV9ERUNSRUYobW9kdWxlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCBjYjcyMjJkLi43NTQzNDhlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIiAgICAgICAgLyogZm9yIFB5RnJhbWVfQ2xlYXJGcmVlTGlzdCAqLworI2luY2x1ZGUgInB5ZHRyYWNlLmgiCiAjaW5jbHVkZSAicHl0aW1lLmgiICAgICAgICAgICAgIC8qIGZvciBfUHlUaW1lX0dldE1vbm90b25pY0Nsb2NrKCkgKi8KIAogLyogR2V0IGFuIG9iamVjdCdzIEdDIGhlYWQgKi8KQEAgLTczOCw3ICs3MzksNyBAQAogfQogCiBzdGF0aWMgdm9pZAotZGVidWdfY3ljbGUoY2hhciAqbXNnLCBQeU9iamVjdCAqb3ApCitkZWJ1Z19jeWNsZShjb25zdCBjaGFyICptc2csIFB5T2JqZWN0ICpvcCkKIHsKICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImdjOiAlcyA8JXMgJXA+XG4iLAogICAgICAgICAgICAgICAgICAgICAgICBtc2csIFB5X1RZUEUob3ApLT50cF9uYW1lLCBvcCk7CkBAIC04OTIsNiArODkzLDcgQEAKICAgICAodm9pZClQeUxpc3RfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5RGljdF9DbGVhckZyZWVMaXN0KCk7CiAgICAgKHZvaWQpUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOworICAgICh2b2lkKVB5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHMoKTsKIH0KIAogLyogVGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbi4gIFJlYWQgdGhpcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUKQEAgLTkyNCw2ICs5MjYsOSBAQAogICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiXG4iKTsKICAgICB9CiAKKyAgICBpZiAoUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCgpKQorICAgICAgICBQeURUcmFjZV9HQ19TVEFSVChnZW5lcmF0aW9uKTsKKwogICAgIC8qIHVwZGF0ZSBjb2xsZWN0aW9uIGFuZCBhbGxvY2F0aW9uIGNvdW50ZXJzICovCiAgICAgaWYgKGdlbmVyYXRpb24rMSA8IE5VTV9HRU5FUkFUSU9OUykKICAgICAgICAgZ2VuZXJhdGlvbnNbZ2VuZXJhdGlvbisxXS5jb3VudCArPSAxOwpAQCAtMTA2OCw2ICsxMDczLDEwIEBACiAgICAgc3RhdHMtPmNvbGxlY3Rpb25zKys7CiAgICAgc3RhdHMtPmNvbGxlY3RlZCArPSBtOwogICAgIHN0YXRzLT51bmNvbGxlY3RhYmxlICs9IG47CisKKyAgICBpZiAoUHlEVHJhY2VfR0NfRE9ORV9FTkFCTEVEKCkpCisgICAgICAgIFB5RFRyYWNlX0dDX0RPTkUobittKTsKKwogICAgIHJldHVybiBuK207CiB9CiAKQEAgLTE1ODgsNiArMTU5NywxNSBAQAogfQogCiBQeV9zc2l6ZV90CitfUHlHQ19Db2xsZWN0SWZFbmFibGVkKHZvaWQpCit7CisgICAgaWYgKCFlbmFibGVkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBQeUdDX0NvbGxlY3QoKTsKK30KKworUHlfc3NpemVfdAogX1B5R0NfQ29sbGVjdE5vRmFpbCh2b2lkKQogewogICAgIFB5X3NzaXplX3QgbjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2V0YWRkcmluZm8uYyBiL01vZHVsZXMvZ2V0YWRkcmluZm8uYwppbmRleCBkODE2N2VhLi5iNmZiNTNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldGFkZHJpbmZvLmMKKysrIGIvTW9kdWxlcy9nZXRhZGRyaW5mby5jCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqLCBpbnQpOwogc3RhdGljIGludCBzdHJfaXNudW1iZXIoY29uc3QgY2hhciAqKTsKIAotc3RhdGljIGNoYXIgKmFpX2Vycmxpc3RbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYWlfZXJybGlzdFtdID0gewogICAgICJzdWNjZXNzLiIsCiAgICAgImFkZHJlc3MgZmFtaWx5IGZvciBob3N0bmFtZSBub3Qgc3VwcG9ydGVkLiIsICAgICAgIC8qIEVBSV9BRERSRkFNSUxZICovCiAgICAgInRlbXBvcmFyeSBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4iLCAgICAgICAgICAgIC8qIEVBSV9BR0FJTiAgICAgICovCkBAIC0xOTgsNyArMTk4LDcgQEAKIAogI2RlZmluZSBFUlIoZXJyKSB7IGVycm9yID0gKGVycik7IGdvdG8gYmFkOyB9CiAKLWNoYXIgKgorY29uc3QgY2hhciAqCiBnYWlfc3RyZXJyb3IoaW50IGVjb2RlKQogewogICAgIGlmIChlY29kZSA8IDAgfHwgZWNvZGUgPiBFQUlfTUFYKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRwYXRoLmMgYi9Nb2R1bGVzL2dldHBhdGguYwppbmRleCAxOGRlYjYwLi42NWI0N2EzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldHBhdGguYworKysgYi9Nb2R1bGVzL2dldHBhdGguYwpAQCAtNDYwLDggKzQ2MCw4IEBACiB7CiAgICAgZXh0ZXJuIHdjaGFyX3QgKlB5X0dldFByb2dyYW1OYW1lKHZvaWQpOwogCi0gICAgc3RhdGljIHdjaGFyX3QgZGVsaW1pdGVyWzJdID0ge0RFTElNLCAnXDAnfTsKLSAgICBzdGF0aWMgd2NoYXJfdCBzZXBhcmF0b3JbMl0gPSB7U0VQLCAnXDAnfTsKKyAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCBkZWxpbWl0ZXJbMl0gPSB7REVMSU0sICdcMCd9OworICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90IHNlcGFyYXRvclsyXSA9IHtTRVAsICdcMCd9OwogICAgIGNoYXIgKl9ydHB5cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOyAvKiBYWFggdXNlIHdpZGUgdmVyc2lvbiBvbiBXaW5kb3dzICovCiAgICAgd2NoYXJfdCAqcnRweXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKmhvbWUgPSBQeV9HZXRQeXRob25Ib21lKCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dycG1vZHVsZS5jIGIvTW9kdWxlcy9ncnBtb2R1bGUuYwppbmRleCAzYTEzNGEwLi45NDM3YWU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dycG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZ3JwbW9kdWxlLmMKQEAgLTEwMCwxNCArMTAwLDI1IEBACiAgICAgZ2lkX3QgZ2lkOwogICAgIHN0cnVjdCBncm91cCAqcDsKIAotICAgIHB5X2ludF9pZCA9IFB5TnVtYmVyX0xvbmcoaWQpOwotICAgIGlmICghcHlfaW50X2lkKQorICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIoaWQsICZnaWQpKSB7CisgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIV9QeV9HaWRfQ29udmVydGVyKHB5X2ludF9pZCwgJmdpZCkpIHsKKyAgICAgICAgfQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJncm91cCBpZCBtdXN0IGJlIGludCwgbm90ICUuMjAwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQtPm9iX3R5cGUtPnRwX25hbWUpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcHlfaW50X2lkID0gUHlOdW1iZXJfTG9uZyhpZCk7CisgICAgICAgIGlmICghcHlfaW50X2lkKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghX1B5X0dpZF9Db252ZXJ0ZXIocHlfaW50X2lkLCAmZ2lkKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHB5X2ludF9pZCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocHlfaW50X2lkKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X0RFQ1JFRihweV9pbnRfaWQpOwogCiAgICAgaWYgKChwID0gZ2V0Z3JnaWQoZ2lkKSkgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZ2lkX29iaiA9IF9QeUxvbmdfRnJvbUdpZChnaWQpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9oYXNobGliLmggYi9Nb2R1bGVzL2hhc2hsaWIuaAppbmRleCAzNTgwNDUzLi41MzBiNmIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2hhc2hsaWIuaAorKysgYi9Nb2R1bGVzL2hhc2hsaWIuaApAQCAtMiwzMCArMiwzMyBAQAogCiAvKgogICogR2l2ZW4gYSBQeU9iamVjdCogb2JqLCBmaWxsIGluIHRoZSBQeV9idWZmZXIqIHZpZXdwIHdpdGggdGhlIHJlc3VsdAotICogb2YgUHlPYmplY3RfR2V0QnVmZmVyLiAgU2V0cyBhbiBleGNlcHRpb24gYW5kIGlzc3VlcyBhIHJldHVybiBOVUxMCi0gKiBvbiBhbnkgZXJyb3JzLgorICogb2YgUHlPYmplY3RfR2V0QnVmZmVyLiAgU2V0cyBhbiBleGNlcHRpb24gYW5kIGlzc3VlcyB0aGUgZXJyYWN0aW9uCisgKiBvbiBhbnkgZXJyb3JzLCBlLmcuICdyZXR1cm4gTlVMTCcgb3IgJ2dvdG8gZXJyb3InLgogICovCi0jZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPVVQob2JqLCB2aWV3cCkgZG8geyBcCisjZGVmaW5lIEdFVF9CVUZGRVJfVklFV19PUl9FUlJPUihvYmosIHZpZXdwLCBlcnJhY3Rpb24pIGRvIHsgXAogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKChvYmopKSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuaWNvZGUtb2JqZWN0cyBtdXN0IGJlIGVuY29kZWQgYmVmb3JlIGhhc2hpbmciKTtcCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgICAgICAgICAgZXJyYWN0aW9uOyBcCiAgICAgICAgIH0gXAogICAgICAgICBpZiAoIVB5T2JqZWN0X0NoZWNrQnVmZmVyKChvYmopKSkgeyBcCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgQVBJIHJlcXVpcmVkIik7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCiAgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoKG9iaiksICh2aWV3cCksIFB5QlVGX1NJTVBMRSkgPT0gLTEpIHsgXAotICAgICAgICAgICAgcmV0dXJuIE5VTEw7IFwKKyAgICAgICAgICAgIGVycmFjdGlvbjsgXAogICAgICAgICB9IFwKICAgICAgICAgaWYgKCh2aWV3cCktPm5kaW0gPiAxKSB7IFwKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWZmZXIgbXVzdCBiZSBzaW5nbGUgZGltZW5zaW9uIik7IFwKICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoKHZpZXdwKSk7IFwKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgICAgICAgICBlcnJhY3Rpb247IFwKICAgICAgICAgfSBcCi0gICAgfSB3aGlsZSgwKTsKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9VVChvYmosIHZpZXdwKSBcCisgICAgR0VUX0JVRkZFUl9WSUVXX09SX0VSUk9SKG9iaiwgdmlld3AsIHJldHVybiBOVUxMKQogCiAvKgogICogSGVscGVyIGNvZGUgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvIHRoZSBoYXNoIG9iamVjdCB3aGVuIHRoZSBHSUwgaXMKZGlmZiAtLWdpdCBhL01vZHVsZXMvaGFzaHRhYmxlLmMgYi9Nb2R1bGVzL2hhc2h0YWJsZS5jCmluZGV4IGZkZGRjMTkuLjA1NDdhNmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaGFzaHRhYmxlLmMKKysrIGIvTW9kdWxlcy9oYXNodGFibGUuYwpAQCAtMSw1ICsxLDUgQEAKLS8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFzaCB0YWJsZSAoX1B5X2hhc2h0YWJsZV90KSBpcyBiYXNlZCBvbiB0aGUgY2Z1aGFzaAotICAgcHJvamVjdDoKKy8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgaGFzaCB0YWJsZSAoX1B5X2hhc2h0YWJsZV90KSBpcyBiYXNlZCBvbiB0aGUKKyAgIGNmdWhhc2ggcHJvamVjdDoKICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGliY2Z1LwogCiAgICBDb3B5cmlnaHQgb2YgY2Z1aGFzaDoKQEAgLTU5LDcgKzU5LDIxIEBACiAjZGVmaW5lIEVOVFJZX05FWFQoRU5UUlkpIFwKICAgICAgICAgKChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKilfUHlfU0xJU1RfSVRFTV9ORVhUKEVOVFJZKSkKICNkZWZpbmUgSEFTSFRBQkxFX0lURU1fU0laRShIVCkgXAotICAgICAgICAoc2l6ZW9mKF9QeV9oYXNodGFibGVfZW50cnlfdCkgKyAoSFQpLT5kYXRhX3NpemUpCisgICAgICAgIChzaXplb2YoX1B5X2hhc2h0YWJsZV9lbnRyeV90KSArIChIVCktPmtleV9zaXplICsgKEhUKS0+ZGF0YV9zaXplKQorCisjZGVmaW5lIEVOVFJZX1JFQURfUERBVEEoVEFCTEUsIEVOVFJZLCBEQVRBX1NJWkUsIFBEQVRBKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydCgoREFUQV9TSVpFKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgoUERBVEEpLCBfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKFRBQkxFLCAoRU5UUlkpKSwgXAorICAgICAgICAgICAgICAgICAgKERBVEFfU0laRSkpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBFTlRSWV9XUklURV9QREFUQShUQUJMRSwgRU5UUlksIERBVEFfU0laRSwgUERBVEEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KChEQVRBX1NJWkUpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCh2b2lkICopX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQSgoVEFCTEUpLCAoRU5UUlkpKSwgXAorICAgICAgICAgICAgICAgICAgKFBEQVRBKSwgKERBVEFfU0laRSkpOyBcCisgICAgfSB3aGlsZSAoMCkKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLwogc3RhdGljIHZvaWQgaGFzaHRhYmxlX3JlaGFzaChfUHlfaGFzaHRhYmxlX3QgKmh0KTsKQEAgLTcwLDYgKzg0LDcgQEAKICAgICBsaXN0LT5oZWFkID0gTlVMTDsKIH0KIAorCiBzdGF0aWMgdm9pZAogX1B5X3NsaXN0X3ByZXBlbmQoX1B5X3NsaXN0X3QgKmxpc3QsIF9QeV9zbGlzdF9pdGVtX3QgKml0ZW0pCiB7CkBAIC03Nyw2ICs5Miw3IEBACiAgICAgbGlzdC0+aGVhZCA9IGl0ZW07CiB9CiAKKwogc3RhdGljIHZvaWQKIF9QeV9zbGlzdF9yZW1vdmUoX1B5X3NsaXN0X3QgKmxpc3QsIF9QeV9zbGlzdF9pdGVtX3QgKnByZXZpb3VzLAogICAgICAgICAgICAgICAgICBfUHlfc2xpc3RfaXRlbV90ICppdGVtKQpAQCAtODcsMjQgKzEwMywyNiBAQAogICAgICAgICBsaXN0LT5oZWFkID0gaXRlbS0+bmV4dDsKIH0KIAotUHlfdWhhc2hfdAotX1B5X2hhc2h0YWJsZV9oYXNoX2ludChjb25zdCB2b2lkICprZXkpCi17Ci0gICAgcmV0dXJuIChQeV91aGFzaF90KWtleTsKLX0KIAogUHlfdWhhc2hfdAotX1B5X2hhc2h0YWJsZV9oYXNoX3B0cihjb25zdCB2b2lkICprZXkpCitfUHlfaGFzaHRhYmxlX2hhc2hfcHRyKHN0cnVjdCBfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICpwa2V5KQogewotICAgIHJldHVybiAoUHlfdWhhc2hfdClfUHlfSGFzaFBvaW50ZXIoKHZvaWQgKilrZXkpOworICAgIHZvaWQgKmtleTsKKworICAgIF9QeV9IQVNIVEFCTEVfUkVBRF9LRVkoaHQsIHBrZXksIGtleSk7CisgICAgcmV0dXJuIChQeV91aGFzaF90KV9QeV9IYXNoUG9pbnRlcihrZXkpOwogfQogCisKIGludAotX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdChjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCitfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpCiB7Ci0gICAgcmV0dXJuIGVudHJ5LT5rZXkgPT0ga2V5OworICAgIGNvbnN0IHZvaWQgKnBrZXkyID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KTsKKyAgICByZXR1cm4gKG1lbWNtcChwa2V5LCBwa2V5MiwgaHQtPmtleV9zaXplKSA9PSAwKTsKIH0KIAorCiAvKiBtYWtlcyBzdXJlIHRoZSByZWFsIHNpemUgb2YgdGhlIGJ1Y2tldHMgYXJyYXkgaXMgYSBwb3dlciBvZiAyICovCiBzdGF0aWMgc2l6ZV90CiByb3VuZF9zaXplKHNpemVfdCBzKQpAQCAtMTE4LDEzICsxMzYsMTIgQEAKICAgICByZXR1cm4gaTsKIH0KIAorCiBfUHlfaGFzaHRhYmxlX3QgKgotX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChzaXplX3QgZGF0YV9zaXplLCBzaXplX3QgaW5pdF9zaXplLAorX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChzaXplX3Qga2V5X3NpemUsIHNpemVfdCBkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbml0X3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMgY29tcGFyZV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvcHlfZGF0YV9mdW5jIGNvcHlfZGF0YV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jIGZyZWVfZGF0YV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2dldF9kYXRhX3NpemVfZnVuYyBnZXRfZGF0YV9zaXplX2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3QgKmFsbG9jYXRvcikKIHsKICAgICBfUHlfaGFzaHRhYmxlX3QgKmh0OwpAQCAtMTQ0LDYgKzE2MSw3IEBACiAKICAgICBodC0+bnVtX2J1Y2tldHMgPSByb3VuZF9zaXplKGluaXRfc2l6ZSk7CiAgICAgaHQtPmVudHJpZXMgPSAwOworICAgIGh0LT5rZXlfc2l6ZSA9IGtleV9zaXplOwogICAgIGh0LT5kYXRhX3NpemUgPSBkYXRhX3NpemU7CiAKICAgICBidWNrZXRzX3NpemUgPSBodC0+bnVtX2J1Y2tldHMgKiBzaXplb2YoaHQtPmJ1Y2tldHNbMF0pOwpAQCAtMTU2LDI4ICsxNzQsMjcgQEAKIAogICAgIGh0LT5oYXNoX2Z1bmMgPSBoYXNoX2Z1bmM7CiAgICAgaHQtPmNvbXBhcmVfZnVuYyA9IGNvbXBhcmVfZnVuYzsKLSAgICBodC0+Y29weV9kYXRhX2Z1bmMgPSBjb3B5X2RhdGFfZnVuYzsKLSAgICBodC0+ZnJlZV9kYXRhX2Z1bmMgPSBmcmVlX2RhdGFfZnVuYzsKLSAgICBodC0+Z2V0X2RhdGFfc2l6ZV9mdW5jID0gZ2V0X2RhdGFfc2l6ZV9mdW5jOwogICAgIGh0LT5hbGxvYyA9IGFsbG9jOwogICAgIHJldHVybiBodDsKIH0KIAorCiBfUHlfaGFzaHRhYmxlX3QgKgotX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZV90IGRhdGFfc2l6ZSwKK19QeV9oYXNodGFibGVfbmV3KHNpemVfdCBrZXlfc2l6ZSwgc2l6ZV90IGRhdGFfc2l6ZSwKICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYykKIHsKLSAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChkYXRhX3NpemUsIEhBU0hUQUJMRV9NSU5fU0laRSwKKyAgICByZXR1cm4gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChrZXlfc2l6ZSwgZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBU0hUQUJMRV9NSU5fU0laRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoX2Z1bmMsIGNvbXBhcmVfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKIH0KIAorCiBzaXplX3QKIF9QeV9oYXNodGFibGVfc2l6ZShfUHlfaGFzaHRhYmxlX3QgKmh0KQogewogICAgIHNpemVfdCBzaXplOwotICAgIHNpemVfdCBodjsKIAogICAgIHNpemUgPSBzaXplb2YoX1B5X2hhc2h0YWJsZV90KTsKIApAQCAtMTg3LDIyICsyMDQsMTAgQEAKICAgICAvKiBlbnRyaWVzICovCiAgICAgc2l6ZSArPSBodC0+ZW50cmllcyAqIEhBU0hUQUJMRV9JVEVNX1NJWkUoaHQpOwogCi0gICAgLyogZGF0YSBsaW5rZWQgZnJvbSBlbnRyaWVzICovCi0gICAgaWYgKGh0LT5nZXRfZGF0YV9zaXplX2Z1bmMpIHsKLSAgICAgICAgZm9yIChodiA9IDA7IGh2IDwgaHQtPm51bV9idWNrZXRzOyBodisrKSB7Ci0gICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwotCi0gICAgICAgICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaHYpOyBlbnRyeTsgZW50cnkgPSBFTlRSWV9ORVhUKGVudHJ5KSkgewotICAgICAgICAgICAgICAgIHZvaWQgKmRhdGE7Ci0KLSAgICAgICAgICAgICAgICBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChlbnRyeSk7Ci0gICAgICAgICAgICAgICAgc2l6ZSArPSBodC0+Z2V0X2RhdGFfc2l6ZV9mdW5jKGRhdGEpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogICAgIHJldHVybiBzaXplOwogfQogCisKICNpZmRlZiBQeV9ERUJVRwogdm9pZAogX1B5X2hhc2h0YWJsZV9wcmludF9zdGF0cyhfUHlfaGFzaHRhYmxlX3QgKmh0KQpAQCAtMjQzLDM4ICsyNDgsNDUgQEAKIH0KICNlbmRpZgogCi0vKiBHZXQgYW4gZW50cnkuIFJldHVybiBOVUxMIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QuICovCisKIF9QeV9oYXNodGFibGVfZW50cnlfdCAqCi1fUHlfaGFzaHRhYmxlX2dldF9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXkpCitfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5KQogewogICAgIFB5X3VoYXNoX3Qga2V5X2hhc2g7CiAgICAgc2l6ZV90IGluZGV4OwogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CiAKLSAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoa2V5KTsKKyAgICBhc3NlcnQoa2V5X3NpemUgPT0gaHQtPmtleV9zaXplKTsKKworICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhodCwgcGtleSk7CiAgICAgaW5kZXggPSBrZXlfaGFzaCAmIChodC0+bnVtX2J1Y2tldHMgLSAxKTsKIAogICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBpbmRleCk7IGVudHJ5ICE9IE5VTEw7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGtleSwgZW50cnkpKQorICAgICAgICBpZiAoZW50cnktPmtleV9oYXNoID09IGtleV9oYXNoICYmIGh0LT5jb21wYXJlX2Z1bmMoaHQsIHBrZXksIGVudHJ5KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiBlbnRyeTsKIH0KIAorCiBzdGF0aWMgaW50Ci1faGFzaHRhYmxlX3BvcF9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXksIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCitfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShfUHlfaGFzaHRhYmxlX3QgKmh0LCBzaXplX3Qga2V5X3NpemUsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQogewogICAgIFB5X3VoYXNoX3Qga2V5X2hhc2g7CiAgICAgc2l6ZV90IGluZGV4OwogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksICpwcmV2aW91czsKIAotICAgIGtleV9oYXNoID0gaHQtPmhhc2hfZnVuYyhrZXkpOworICAgIGFzc2VydChrZXlfc2l6ZSA9PSBodC0+a2V5X3NpemUpOworCisgICAga2V5X2hhc2ggPSBodC0+aGFzaF9mdW5jKGh0LCBwa2V5KTsKICAgICBpbmRleCA9IGtleV9oYXNoICYgKGh0LT5udW1fYnVja2V0cyAtIDEpOwogCiAgICAgcHJldmlvdXMgPSBOVUxMOwogICAgIGZvciAoZW50cnkgPSBUQUJMRV9IRUFEKGh0LCBpbmRleCk7IGVudHJ5ICE9IE5VTEw7IGVudHJ5ID0gRU5UUllfTkVYVChlbnRyeSkpIHsKLSAgICAgICAgaWYgKGVudHJ5LT5rZXlfaGFzaCA9PSBrZXlfaGFzaCAmJiBodC0+Y29tcGFyZV9mdW5jKGtleSwgZW50cnkpKQorICAgICAgICBpZiAoZW50cnktPmtleV9oYXNoID09IGtleV9oYXNoICYmIGh0LT5jb21wYXJlX2Z1bmMoaHQsIHBrZXksIGVudHJ5KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBwcmV2aW91cyA9IGVudHJ5OwogICAgIH0KQEAgLTI4Nyw3ICsyOTksNyBAQAogICAgIGh0LT5lbnRyaWVzLS07CiAKICAgICBpZiAoZGF0YSAhPSBOVUxMKQotICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShodCwgZGF0YSwgZGF0YV9zaXplLCBlbnRyeSk7CisgICAgICAgIEVOVFJZX1JFQURfUERBVEEoaHQsIGVudHJ5LCBkYXRhX3NpemUsIGRhdGEpOwogICAgIGh0LT5hbGxvYy5mcmVlKGVudHJ5KTsKIAogICAgIGlmICgoZmxvYXQpaHQtPmVudHJpZXMgLyAoZmxvYXQpaHQtPm51bV9idWNrZXRzIDwgSEFTSFRBQkxFX0xPVykKQEAgLTI5NSwyNiArMzA3LDI3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLS8qIEFkZCBhIG5ldyBlbnRyeSB0byB0aGUgaGFzaC4gVGhlIGtleSBtdXN0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBoYXNoIHRhYmxlLgotICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gbWVtb3J5IGVycm9yLiAqLworCiBpbnQKLV9QeV9oYXNodGFibGVfc2V0KF9QeV9oYXNodGFibGVfdCAqaHQsIGNvbnN0IHZvaWQgKmtleSwKLSAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCitfUHlfaGFzaHRhYmxlX3NldChfUHlfaGFzaHRhYmxlX3QgKmh0LCBzaXplX3Qga2V5X3NpemUsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9zaXplLCBjb25zdCB2b2lkICpkYXRhKQogewogICAgIFB5X3VoYXNoX3Qga2V5X2hhc2g7CiAgICAgc2l6ZV90IGluZGV4OwogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CiAKKyAgICBhc3NlcnQoa2V5X3NpemUgPT0gaHQtPmtleV9zaXplKTsKKwogICAgIGFzc2VydChkYXRhICE9IE5VTEwgfHwgZGF0YV9zaXplID09IDApOwogI2lmbmRlZiBOREVCVUcKICAgICAvKiBEb24ndCB3cml0ZSB0aGUgYXNzZXJ0aW9uIG9uIGEgc2luZ2xlIGxpbmUgYmVjYXVzZSBpdCBpcyBpbnRlcmVzdGluZwogICAgICAgIHRvIGtub3cgdGhlIGR1cGxpY2F0ZWQgZW50cnkgaWYgdGhlIGFzc2VydGlvbiBmYWlsZWQuIFRoZSBlbnRyeSBjYW4KICAgICAgICBiZSByZWFkIHVzaW5nIGEgZGVidWdnZXIuICovCi0gICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShodCwga2V5KTsKKyAgICBlbnRyeSA9IF9QeV9oYXNodGFibGVfZ2V0X2VudHJ5KGh0LCBrZXlfc2l6ZSwgcGtleSk7CiAgICAgYXNzZXJ0KGVudHJ5ID09IE5VTEwpOwogI2VuZGlmCiAKLSAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoa2V5KTsKKyAgICBrZXlfaGFzaCA9IGh0LT5oYXNoX2Z1bmMoaHQsIHBrZXkpOwogICAgIGluZGV4ID0ga2V5X2hhc2ggJiAoaHQtPm51bV9idWNrZXRzIC0gMSk7CiAKICAgICBlbnRyeSA9IGh0LT5hbGxvYy5tYWxsb2MoSEFTSFRBQkxFX0lURU1fU0laRShodCkpOwpAQCAtMzIzLDEyICszMzYsMTAgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGVudHJ5LT5rZXkgPSAodm9pZCAqKWtleTsKICAgICBlbnRyeS0+a2V5X2hhc2ggPSBrZXlfaGFzaDsKLQotICAgIGFzc2VydChkYXRhX3NpemUgPT0gaHQtPmRhdGFfc2l6ZSk7CisgICAgbWVtY3B5KCh2b2lkICopX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KSwgcGtleSwgaHQtPmtleV9zaXplKTsKICAgICBpZiAoZGF0YSkKLSAgICAgICAgbWVtY3B5KF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShlbnRyeSksIGRhdGEsIGRhdGFfc2l6ZSk7CisgICAgICAgIEVOVFJZX1dSSVRFX1BEQVRBKGh0LCBlbnRyeSwgZGF0YV9zaXplLCBkYXRhKTsKIAogICAgIF9QeV9zbGlzdF9wcmVwZW5kKCZodC0+YnVja2V0c1tpbmRleF0sIChfUHlfc2xpc3RfaXRlbV90KillbnRyeSk7CiAgICAgaHQtPmVudHJpZXMrKzsKQEAgLTMzOCw0OCArMzQ5LDUwIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIEdldCBkYXRhIGZyb20gYW4gZW50cnkuIENvcHkgZW50cnkgZGF0YSBpbnRvIGRhdGEgYW5kIHJldHVybiAxIGlmIHRoZSBlbnRyeQotICAgZXhpc3RzLCByZXR1cm4gMCBpZiB0aGUgZW50cnkgZG9lcyBub3QgZXhpc3QuICovCisKIGludAotX1B5X2hhc2h0YWJsZV9nZXQoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5LCB2b2lkICpkYXRhLCBzaXplX3QgZGF0YV9zaXplKQorX1B5X2hhc2h0YWJsZV9nZXQoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9zaXplLCB2b2lkICpkYXRhKQogewogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CiAKICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMKTsKIAotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoaHQsIGtleSk7CisgICAgZW50cnkgPSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeShodCwga2V5X3NpemUsIHBrZXkpOwogICAgIGlmIChlbnRyeSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKLSAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShodCwgZGF0YSwgZGF0YV9zaXplLCBlbnRyeSk7CisgICAgRU5UUllfUkVBRF9QREFUQShodCwgZW50cnksIGRhdGFfc2l6ZSwgZGF0YSk7CiAgICAgcmV0dXJuIDE7CiB9CiAKKwogaW50Ci1fUHlfaGFzaHRhYmxlX3BvcChfUHlfaGFzaHRhYmxlX3QgKmh0LCBjb25zdCB2b2lkICprZXksIHZvaWQgKmRhdGEsIHNpemVfdCBkYXRhX3NpemUpCitfUHlfaGFzaHRhYmxlX3BvcChfUHlfaGFzaHRhYmxlX3QgKmh0LCBzaXplX3Qga2V5X3NpemUsIGNvbnN0IHZvaWQgKnBrZXksCisgICAgICAgICAgICAgICAgICBzaXplX3QgZGF0YV9zaXplLCB2b2lkICpkYXRhKQogewogICAgIGFzc2VydChkYXRhICE9IE5VTEwpOwotICAgIGFzc2VydChodC0+ZnJlZV9kYXRhX2Z1bmMgPT0gTlVMTCk7Ci0gICAgcmV0dXJuIF9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXksIGRhdGEsIGRhdGFfc2l6ZSk7CisgICAgcmV0dXJuIF9QeV9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXlfc2l6ZSwgcGtleSwgZGF0YSwgZGF0YV9zaXplKTsKIH0KIAotLyogRGVsZXRlIGFuIGVudHJ5LiBUaGUgZW50cnkgbXVzdCBleGlzdC4gKi8KKworLyogQ29kZSBjb21tZW50ZWQgc2luY2UgdGhlIGZ1bmN0aW9uIGlzIG5vdCBuZWVkZWQgaW4gUHl0aG9uICovCisjaWYgMAogdm9pZAotX1B5X2hhc2h0YWJsZV9kZWxldGUoX1B5X2hhc2h0YWJsZV90ICpodCwgY29uc3Qgdm9pZCAqa2V5KQorX1B5X2hhc2h0YWJsZV9kZWxldGUoX1B5X2hhc2h0YWJsZV90ICpodCwgc2l6ZV90IGtleV9zaXplLCBjb25zdCB2b2lkICpwa2V5KQogewogI2lmbmRlZiBOREVCVUcKLSAgICBpbnQgZm91bmQgPSBfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5LCBOVUxMLCAwKTsKKyAgICBpbnQgZm91bmQgPSBfUHlfaGFzaHRhYmxlX3BvcF9lbnRyeShodCwga2V5X3NpemUsIHBrZXksIE5VTEwsIDApOwogICAgIGFzc2VydChmb3VuZCk7CiAjZWxzZQotICAgICh2b2lkKV9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXksIE5VTEwsIDApOworICAgICh2b2lkKV9QeV9oYXNodGFibGVfcG9wX2VudHJ5KGh0LCBrZXlfc2l6ZSwgcGtleSwgTlVMTCwgMCk7CiAjZW5kaWYKIH0KKyNlbmRpZgogCi0vKiBQcm90b3R5cGUgZm9yIGEgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmb3JlYWNoCi0gICBrZXkvdmFsdWUgcGFpciBpbiB0aGUgaGFzaCBieSBoYXNodGFibGVfZm9yZWFjaCgpLiAgSXRlcmF0aW9uCi0gICBzdG9wcyBpZiBhIG5vbi16ZXJvIHZhbHVlIGlzIHJldHVybmVkLiAqLworCiBpbnQKIF9QeV9oYXNodGFibGVfZm9yZWFjaChfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgICAgICAgICAgICAgICAgICAgIGludCAoKmZ1bmMpIChfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5LCB2b2lkICphcmcpLAorICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZm9yZWFjaF9mdW5jIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKQogewogICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnk7CkBAIC0zODcsNyArNDAwLDcgQEAKIAogICAgIGZvciAoaHYgPSAwOyBodiA8IGh0LT5udW1fYnVja2V0czsgaHYrKykgewogICAgICAgICBmb3IgKGVudHJ5ID0gVEFCTEVfSEVBRChodCwgaHYpOyBlbnRyeTsgZW50cnkgPSBFTlRSWV9ORVhUKGVudHJ5KSkgewotICAgICAgICAgICAgaW50IHJlcyA9IGZ1bmMoZW50cnksIGFyZyk7CisgICAgICAgICAgICBpbnQgcmVzID0gZnVuYyhodCwgZW50cnksIGFyZyk7CiAgICAgICAgICAgICBpZiAocmVzKQogICAgICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KQEAgLTM5NSw2ICs0MDgsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKIHN0YXRpYyB2b2lkCiBoYXNodGFibGVfcmVoYXNoKF9QeV9oYXNodGFibGVfdCAqaHQpCiB7CkBAIC00MjYsNyArNDQwLDggQEAKICAgICAgICAgZm9yIChlbnRyeSA9IEJVQ0tFVFNfSEVBRChvbGRfYnVja2V0c1tidWNrZXRdKTsgZW50cnkgIT0gTlVMTDsgZW50cnkgPSBuZXh0KSB7CiAgICAgICAgICAgICBzaXplX3QgZW50cnlfaW5kZXg7CiAKLSAgICAgICAgICAgIGFzc2VydChodC0+aGFzaF9mdW5jKGVudHJ5LT5rZXkpID09IGVudHJ5LT5rZXlfaGFzaCk7CisKKyAgICAgICAgICAgIGFzc2VydChodC0+aGFzaF9mdW5jKGh0LCBfUHlfSEFTSFRBQkxFX0VOVFJZX1BLRVkoZW50cnkpKSA9PSBlbnRyeS0+a2V5X2hhc2gpOwogICAgICAgICAgICAgbmV4dCA9IEVOVFJZX05FWFQoZW50cnkpOwogICAgICAgICAgICAgZW50cnlfaW5kZXggPSBlbnRyeS0+a2V5X2hhc2ggJiAobmV3X3NpemUgLSAxKTsKIApAQCAtNDM3LDYgKzQ1Miw3IEBACiAgICAgaHQtPmFsbG9jLmZyZWUob2xkX2J1Y2tldHMpOwogfQogCisKIHZvaWQKIF9QeV9oYXNodGFibGVfY2xlYXIoX1B5X2hhc2h0YWJsZV90ICpodCkKIHsKQEAgLTQ0Niw4ICs0NjIsNiBAQAogICAgIGZvciAoaT0wOyBpIDwgaHQtPm51bV9idWNrZXRzOyBpKyspIHsKICAgICAgICAgZm9yIChlbnRyeSA9IFRBQkxFX0hFQUQoaHQsIGkpOyBlbnRyeSAhPSBOVUxMOyBlbnRyeSA9IG5leHQpIHsKICAgICAgICAgICAgIG5leHQgPSBFTlRSWV9ORVhUKGVudHJ5KTsKLSAgICAgICAgICAgIGlmIChodC0+ZnJlZV9kYXRhX2Z1bmMpCi0gICAgICAgICAgICAgICAgaHQtPmZyZWVfZGF0YV9mdW5jKF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpKTsKICAgICAgICAgICAgIGh0LT5hbGxvYy5mcmVlKGVudHJ5KTsKICAgICAgICAgfQogICAgICAgICBfUHlfc2xpc3RfaW5pdCgmaHQtPmJ1Y2tldHNbaV0pOwpAQCAtNDU2LDYgKzQ3MCw3IEBACiAgICAgaGFzaHRhYmxlX3JlaGFzaChodCk7CiB9CiAKKwogdm9pZAogX1B5X2hhc2h0YWJsZV9kZXN0cm95KF9QeV9oYXNodGFibGVfdCAqaHQpCiB7CkBAIC00NjUsOCArNDgwLDYgQEAKICAgICAgICAgX1B5X3NsaXN0X2l0ZW1fdCAqZW50cnkgPSBodC0+YnVja2V0c1tpXS5oZWFkOwogICAgICAgICB3aGlsZSAoZW50cnkpIHsKICAgICAgICAgICAgIF9QeV9zbGlzdF9pdGVtX3QgKmVudHJ5X25leHQgPSBlbnRyeS0+bmV4dDsKLSAgICAgICAgICAgIGlmIChodC0+ZnJlZV9kYXRhX2Z1bmMpCi0gICAgICAgICAgICAgICAgaHQtPmZyZWVfZGF0YV9mdW5jKF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQV9BU19WT0lEX1AoZW50cnkpKTsKICAgICAgICAgICAgIGh0LT5hbGxvYy5mcmVlKGVudHJ5KTsKICAgICAgICAgICAgIGVudHJ5ID0gZW50cnlfbmV4dDsKICAgICAgICAgfQpAQCAtNDc2LDM5ICs0ODksMzEgQEAKICAgICBodC0+YWxsb2MuZnJlZShodCk7CiB9CiAKLS8qIFJldHVybiBhIGNvcHkgb2YgdGhlIGhhc2ggdGFibGUgKi8KKwogX1B5X2hhc2h0YWJsZV90ICoKIF9QeV9oYXNodGFibGVfY29weShfUHlfaGFzaHRhYmxlX3QgKnNyYykKIHsKKyAgICBjb25zdCBzaXplX3Qga2V5X3NpemUgPSBzcmMtPmtleV9zaXplOworICAgIGNvbnN0IHNpemVfdCBkYXRhX3NpemUgPSBzcmMtPmRhdGFfc2l6ZTsKICAgICBfUHlfaGFzaHRhYmxlX3QgKmRzdDsKICAgICBfUHlfaGFzaHRhYmxlX2VudHJ5X3QgKmVudHJ5OwogICAgIHNpemVfdCBidWNrZXQ7CiAgICAgaW50IGVycjsKLSAgICB2b2lkICpkYXRhLCAqbmV3X2RhdGE7CiAKLSAgICBkc3QgPSBfUHlfaGFzaHRhYmxlX25ld19mdWxsKHNyYy0+ZGF0YV9zaXplLCBzcmMtPm51bV9idWNrZXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+aGFzaF9mdW5jLCBzcmMtPmNvbXBhcmVfZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmMtPmNvcHlfZGF0YV9mdW5jLCBzcmMtPmZyZWVfZGF0YV9mdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+Z2V0X2RhdGFfc2l6ZV9mdW5jLCAmc3JjLT5hbGxvYyk7CisgICAgZHN0ID0gX1B5X2hhc2h0YWJsZV9uZXdfZnVsbChrZXlfc2l6ZSwgZGF0YV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5udW1fYnVja2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy0+aGFzaF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLT5jb21wYXJlX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3JjLT5hbGxvYyk7CiAgICAgaWYgKGRzdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoYnVja2V0PTA7IGJ1Y2tldCA8IHNyYy0+bnVtX2J1Y2tldHM7IGJ1Y2tldCsrKSB7CiAgICAgICAgIGVudHJ5ID0gVEFCTEVfSEVBRChzcmMsIGJ1Y2tldCk7CiAgICAgICAgIGZvciAoOyBlbnRyeTsgZW50cnkgPSBFTlRSWV9ORVhUKGVudHJ5KSkgewotICAgICAgICAgICAgaWYgKHNyYy0+Y29weV9kYXRhX2Z1bmMpIHsKLSAgICAgICAgICAgICAgICBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBX0FTX1ZPSURfUChlbnRyeSk7Ci0gICAgICAgICAgICAgICAgbmV3X2RhdGEgPSBzcmMtPmNvcHlfZGF0YV9mdW5jKGRhdGEpOwotICAgICAgICAgICAgICAgIGlmIChuZXdfZGF0YSAhPSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBlcnIgPSBfUHlfaGFzaHRhYmxlX3NldChkc3QsIGVudHJ5LT5rZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld19kYXRhLCBzcmMtPmRhdGFfc2l6ZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBlcnIgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IF9QeV9IQVNIVEFCTEVfRU5UUllfREFUQShlbnRyeSk7Ci0gICAgICAgICAgICAgICAgZXJyID0gX1B5X2hhc2h0YWJsZV9zZXQoZHN0LCBlbnRyeS0+a2V5LCBkYXRhLCBzcmMtPmRhdGFfc2l6ZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCB2b2lkICpwa2V5ID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKGVudHJ5KTsKKyAgICAgICAgICAgIGNvbnN0IHZvaWQgKnBkYXRhID0gX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShzcmMsIGVudHJ5KTsKKyAgICAgICAgICAgIGVyciA9IF9QeV9oYXNodGFibGVfc2V0KGRzdCwga2V5X3NpemUsIHBrZXksIGRhdGFfc2l6ZSwgcGRhdGEpOwogICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZGVzdHJveShkc3QpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTE3LDQgKzUyMiwzIEBACiAgICAgfQogICAgIHJldHVybiBkc3Q7CiB9Ci0KZGlmZiAtLWdpdCBhL01vZHVsZXMvaGFzaHRhYmxlLmggYi9Nb2R1bGVzL2hhc2h0YWJsZS5oCmluZGV4IGE5Zjk5OTMuLmRiZWMyM2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaGFzaHRhYmxlLmgKKysrIGIvTW9kdWxlcy9oYXNodGFibGUuaApAQCAtMSw5ICsxLDEwIEBACiAjaWZuZGVmIFB5X0hBU0hUQUJMRV9ICiAjZGVmaW5lIFB5X0hBU0hUQUJMRV9ICi0KIC8qIFRoZSB3aG9sZSBBUEkgaXMgcHJpdmF0ZSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogCisvKiBTaW5nbGUgbGlua2VkIGxpc3QgKi8KKwogdHlwZWRlZiBzdHJ1Y3QgX1B5X3NsaXN0X2l0ZW1fcyB7CiAgICAgc3RydWN0IF9QeV9zbGlzdF9pdGVtX3MgKm5leHQ7CiB9IF9QeV9zbGlzdF9pdGVtX3Q7CkBAIC0xNiwzMyArMTcsNjYgQEAKIAogI2RlZmluZSBfUHlfU0xJU1RfSEVBRChTTElTVCkgKCgoX1B5X3NsaXN0X3QgKilTTElTVCktPmhlYWQpCiAKKworLyogX1B5X2hhc2h0YWJsZTogdGFibGUgZW50cnkgKi8KKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIC8qIHVzZWQgYnkgX1B5X2hhc2h0YWJsZV90LmJ1Y2tldHMgdG8gbGluayBlbnRyaWVzICovCiAgICAgX1B5X3NsaXN0X2l0ZW1fdCBfUHlfc2xpc3RfaXRlbTsKIAotICAgIGNvbnN0IHZvaWQgKmtleTsKICAgICBQeV91aGFzaF90IGtleV9oYXNoOwogCi0gICAgLyogZGF0YSBmb2xsb3dzICovCisgICAgLyoga2V5IChrZXlfc2l6ZSBieXRlcykgYW5kIHRoZW4gZGF0YSAoZGF0YV9zaXplIGJ5dGVzKSBmb2xsb3dzICovCiB9IF9QeV9oYXNodGFibGVfZW50cnlfdDsKIAotI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEEoRU5UUlkpIFwKLSAgICAgICAgKChjaGFyICopKEVOVFJZKSArIHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpKQorI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1BLRVkoRU5UUlkpIFwKKyAgICAgICAgKChjb25zdCB2b2lkICopKChjaGFyICopKEVOVFJZKSBcCisgICAgICAgICAgICAgICAgICAgICAgICArIHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpKSkKIAotI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX0RBVEFfQVNfVk9JRF9QKEVOVFJZKSBcCi0gICAgICAgICgqKHZvaWQgKiopX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKEVOVFJZKSkKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQShUQUJMRSwgRU5UUlkpIFwKKyAgICAgICAgKChjb25zdCB2b2lkICopKChjaGFyICopKEVOVFJZKSBcCisgICAgICAgICAgICAgICAgICAgICAgICArIHNpemVvZihfUHlfaGFzaHRhYmxlX2VudHJ5X3QpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICsgKFRBQkxFKS0+a2V5X3NpemUpKQogCi0jZGVmaW5lIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKFRBQkxFLCBEQVRBLCBEQVRBX1NJWkUsIEVOVFJZKSBcCisvKiBHZXQgYSBrZXkgdmFsdWUgZnJvbSBwa2V5OiB1c2UgbWVtY3B5KCkgcmF0aGVyIHRoYW4gYSBwb2ludGVyIGRlcmVmZXJlbmNlCisgICB0byBhdm9pZCBtZW1vcnkgYWxpZ25tZW50IGlzc3Vlcy4gKi8KKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9SRUFEX0tFWShUQUJMRSwgUEtFWSwgRFNUX0tFWSkgXAogICAgIGRvIHsgXAotICAgICAgICBhc3NlcnQoKERBVEFfU0laRSkgPT0gKFRBQkxFKS0+ZGF0YV9zaXplKTsgXAotICAgICAgICBtZW1jcHkoREFUQSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9EQVRBKEVOVFJZKSwgREFUQV9TSVpFKTsgXAorICAgICAgICBhc3NlcnQoc2l6ZW9mKERTVF9LRVkpID09IChUQUJMRSktPmtleV9zaXplKTsgXAorICAgICAgICBtZW1jcHkoJihEU1RfS0VZKSwgKFBLRVkpLCBzaXplb2YoRFNUX0tFWSkpOyBcCiAgICAgfSB3aGlsZSAoMCkKIAotdHlwZWRlZiBQeV91aGFzaF90ICgqX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMpIChjb25zdCB2b2lkICprZXkpOwotdHlwZWRlZiBpbnQgKCpfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYykgKGNvbnN0IHZvaWQgKmtleSwgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICpoZSk7Ci10eXBlZGVmIHZvaWQqICgqX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYykodm9pZCAqZGF0YSk7Ci10eXBlZGVmIHZvaWQgKCpfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jKSh2b2lkICpkYXRhKTsKLXR5cGVkZWYgc2l6ZV90ICgqX1B5X2hhc2h0YWJsZV9nZXRfZGF0YV9zaXplX2Z1bmMpKHZvaWQgKmRhdGEpOworI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKFRBQkxFLCBFTlRSWSwgS0VZKSBcCisgICAgZG8geyBcCisgICAgICAgIGFzc2VydChzaXplb2YoS0VZKSA9PSAoVEFCTEUpLT5rZXlfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCYoS0VZKSwgX1B5X0hBU0hUQUJMRV9FTlRSWV9QS0VZKEVOVFJZKSwgc2l6ZW9mKEtFWSkpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShUQUJMRSwgRU5UUlksIERBVEEpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgYXNzZXJ0KHNpemVvZihEQVRBKSA9PSAoVEFCTEUpLT5kYXRhX3NpemUpOyBcCisgICAgICAgIG1lbWNweSgmKERBVEEpLCBfUHlfSEFTSFRBQkxFX0VOVFJZX1BEQVRBKFRBQkxFLCAoRU5UUlkpKSwgXAorICAgICAgICAgICAgICAgICAgc2l6ZW9mKERBVEEpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKyNkZWZpbmUgX1B5X0hBU0hUQUJMRV9FTlRSWV9XUklURV9EQVRBKFRBQkxFLCBFTlRSWSwgREFUQSkgXAorICAgIGRvIHsgXAorICAgICAgICBhc3NlcnQoc2l6ZW9mKERBVEEpID09IChUQUJMRSktPmRhdGFfc2l6ZSk7IFwKKyAgICAgICAgbWVtY3B5KCh2b2lkICopX1B5X0hBU0hUQUJMRV9FTlRSWV9QREFUQSgoVEFCTEUpLCAoRU5UUlkpKSwgXAorICAgICAgICAgICAgICAgICAgJihEQVRBKSwgc2l6ZW9mKERBVEEpKTsgXAorICAgIH0gd2hpbGUgKDApCisKKworLyogX1B5X2hhc2h0YWJsZTogcHJvdG90eXBlcyAqLworCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90OworCit0eXBlZGVmIFB5X3VoYXNoX3QgKCpfUHlfaGFzaHRhYmxlX2hhc2hfZnVuYykgKHN0cnVjdCBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwa2V5KTsKK3R5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9jb21wYXJlX2Z1bmMpIChzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqaGUpOwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgLyogYWxsb2NhdGUgYSBtZW1vcnkgYmxvY2sgKi8KQEAgLTUyLDc3ICs4NiwxMjYgQEAKICAgICB2b2lkICgqZnJlZSkgKHZvaWQgKnB0cik7CiB9IF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3Q7CiAKLXR5cGVkZWYgc3RydWN0IHsKKworLyogX1B5X2hhc2h0YWJsZTogdGFibGUgKi8KKwordHlwZWRlZiBzdHJ1Y3QgX1B5X2hhc2h0YWJsZV90IHsKICAgICBzaXplX3QgbnVtX2J1Y2tldHM7CiAgICAgc2l6ZV90IGVudHJpZXM7IC8qIFRvdGFsIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSB0YWJsZS4gKi8KICAgICBfUHlfc2xpc3RfdCAqYnVja2V0czsKKyAgICBzaXplX3Qga2V5X3NpemU7CiAgICAgc2l6ZV90IGRhdGFfc2l6ZTsKIAogICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYzsKICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmM7Ci0gICAgX1B5X2hhc2h0YWJsZV9jb3B5X2RhdGFfZnVuYyBjb3B5X2RhdGFfZnVuYzsKLSAgICBfUHlfaGFzaHRhYmxlX2ZyZWVfZGF0YV9mdW5jIGZyZWVfZGF0YV9mdW5jOwotICAgIF9QeV9oYXNodGFibGVfZ2V0X2RhdGFfc2l6ZV9mdW5jIGdldF9kYXRhX3NpemVfZnVuYzsKICAgICBfUHlfaGFzaHRhYmxlX2FsbG9jYXRvcl90IGFsbG9jOwogfSBfUHlfaGFzaHRhYmxlX3Q7CiAKLS8qIGhhc2ggYW5kIGNvbXBhcmUgZnVuY3Rpb25zIGZvciBpbnRlZ2VycyBhbmQgcG9pbnRlcnMgKi8KLVB5QVBJX0ZVTkMoUHlfdWhhc2hfdCkgX1B5X2hhc2h0YWJsZV9oYXNoX3B0cihjb25zdCB2b2lkICprZXkpOwotUHlBUElfRlVOQyhQeV91aGFzaF90KSBfUHlfaGFzaHRhYmxlX2hhc2hfaW50KGNvbnN0IHZvaWQgKmtleSk7Ci1QeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdChjb25zdCB2b2lkICprZXksIGNvbnN0IF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnkpOworLyogaGFzaCBhIHBvaW50ZXIgKHZvaWQqKSAqLworUHlBUElfRlVOQyhQeV91aGFzaF90KSBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyKAorICAgIHN0cnVjdCBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIGNvbnN0IHZvaWQgKnBrZXkpOworCisvKiBjb21wYXJpc29uIHVzaW5nIG1lbWNtcCgpICovCitQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9jb21wYXJlX2RpcmVjdCgKKyAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIGNvbnN0IHZvaWQgKnBrZXksCisgICAgY29uc3QgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSk7CiAKIFB5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV90ICopIF9QeV9oYXNodGFibGVfbmV3KAorICAgIHNpemVfdCBrZXlfc2l6ZSwKICAgICBzaXplX3QgZGF0YV9zaXplLAogICAgIF9QeV9oYXNodGFibGVfaGFzaF9mdW5jIGhhc2hfZnVuYywKICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZnVuYyBjb21wYXJlX2Z1bmMpOworCiBQeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX25ld19mdWxsKAorICAgIHNpemVfdCBrZXlfc2l6ZSwKICAgICBzaXplX3QgZGF0YV9zaXplLAogICAgIHNpemVfdCBpbml0X3NpemUsCiAgICAgX1B5X2hhc2h0YWJsZV9oYXNoX2Z1bmMgaGFzaF9mdW5jLAogICAgIF9QeV9oYXNodGFibGVfY29tcGFyZV9mdW5jIGNvbXBhcmVfZnVuYywKLSAgICBfUHlfaGFzaHRhYmxlX2NvcHlfZGF0YV9mdW5jIGNvcHlfZGF0YV9mdW5jLAotICAgIF9QeV9oYXNodGFibGVfZnJlZV9kYXRhX2Z1bmMgZnJlZV9kYXRhX2Z1bmMsCi0gICAgX1B5X2hhc2h0YWJsZV9nZXRfZGF0YV9zaXplX2Z1bmMgZ2V0X2RhdGFfc2l6ZV9mdW5jLAogICAgIF9QeV9oYXNodGFibGVfYWxsb2NhdG9yX3QgKmFsbG9jYXRvcik7Ci1QeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX2NvcHkoX1B5X2hhc2h0YWJsZV90ICpzcmMpOwotUHlBUElfRlVOQyh2b2lkKSBfUHlfaGFzaHRhYmxlX2NsZWFyKF9QeV9oYXNodGFibGVfdCAqaHQpOworCiBQeUFQSV9GVU5DKHZvaWQpIF9QeV9oYXNodGFibGVfZGVzdHJveShfUHlfaGFzaHRhYmxlX3QgKmh0KTsKIAotdHlwZWRlZiBpbnQgKCpfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYykgKF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksIHZvaWQgKmFyZyk7CisvKiBSZXR1cm4gYSBjb3B5IG9mIHRoZSBoYXNoIHRhYmxlICovCitQeUFQSV9GVU5DKF9QeV9oYXNodGFibGVfdCAqKSBfUHlfaGFzaHRhYmxlX2NvcHkoX1B5X2hhc2h0YWJsZV90ICpzcmMpOwogCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9oYXNodGFibGVfY2xlYXIoX1B5X2hhc2h0YWJsZV90ICpodCk7CisKK3R5cGVkZWYgaW50ICgqX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMpIChfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfZW50cnlfdCAqZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKKworLyogQ2FsbCBmdW5jKCkgb24gZWFjaCBlbnRyeSBvZiB0aGUgaGFzaHRhYmxlLgorICAgSXRlcmF0aW9uIHN0b3BzIGlmIGZ1bmMoKSByZXN1bHQgaXMgbm9uLXplcm8sIGluIHRoaXMgY2FzZSBpdCdzIHRoZSByZXN1bHQKKyAgIG9mIHRoZSBjYWxsLiBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuICovCiBQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9mb3JlYWNoKAogICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgX1B5X2hhc2h0YWJsZV9mb3JlYWNoX2Z1bmMgZnVuYywgdm9pZCAqYXJnKTsKKyAgICBfUHlfaGFzaHRhYmxlX2ZvcmVhY2hfZnVuYyBmdW5jLAorICAgIHZvaWQgKmFyZyk7CisKIFB5QVBJX0ZVTkMoc2l6ZV90KSBfUHlfaGFzaHRhYmxlX3NpemUoX1B5X2hhc2h0YWJsZV90ICpodCk7CiAKLVB5QVBJX0ZVTkMoX1B5X2hhc2h0YWJsZV9lbnRyeV90KikgX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoCi0gICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXkpOworLyogQWRkIGEgbmV3IGVudHJ5IHRvIHRoZSBoYXNoLiBUaGUga2V5IG11c3Qgbm90IGJlIHByZXNlbnQgaW4gdGhlIGhhc2ggdGFibGUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBtZW1vcnkgZXJyb3IuCisKKyAgIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwKKyAgIGJ1dCB1c2UgX1B5X0hBU0hUQUJMRV9TRVQoKSBhbmQgX1B5X0hBU0hUQUJMRV9TRVRfTk9EQVRBKCkgbWFjcm9zICovCiBQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9zZXQoCiAgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKLSAgICBjb25zdCB2b2lkICprZXksCi0gICAgdm9pZCAqZGF0YSwKLSAgICBzaXplX3QgZGF0YV9zaXplKTsKLVB5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX2dldCgKLSAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAotICAgIGNvbnN0IHZvaWQgKmtleSwKLSAgICB2b2lkICpkYXRhLAotICAgIHNpemVfdCBkYXRhX3NpemUpOwotUHlBUElfRlVOQyhpbnQpIF9QeV9oYXNodGFibGVfcG9wKAotICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5LAotICAgIHZvaWQgKmRhdGEsCi0gICAgc2l6ZV90IGRhdGFfc2l6ZSk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeV9oYXNodGFibGVfZGVsZXRlKAotICAgIF9QeV9oYXNodGFibGVfdCAqaHQsCi0gICAgY29uc3Qgdm9pZCAqa2V5KTsKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICBzaXplX3QgZGF0YV9zaXplLAorICAgIGNvbnN0IHZvaWQgKmRhdGEpOwogCiAjZGVmaW5lIF9QeV9IQVNIVEFCTEVfU0VUKFRBQkxFLCBLRVksIERBVEEpIFwKLSAgICBfUHlfaGFzaHRhYmxlX3NldChUQUJMRSwgS0VZLCAmKERBVEEpLCBzaXplb2YoREFUQSkpCisgICAgX1B5X2hhc2h0YWJsZV9zZXQoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSksIHNpemVvZihEQVRBKSwgJihEQVRBKSkKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX1NFVF9OT0RBVEEoVEFCTEUsIEtFWSkgXAorICAgIF9QeV9oYXNodGFibGVfc2V0KFRBQkxFLCBzaXplb2YoS0VZKSwgJihLRVkpLCAwLCBOVUxMKQorCisKKy8qIEdldCBhbiBlbnRyeS4KKyAgIFJldHVybiBOVUxMIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QuCisKKyAgIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwgYnV0IHVzZSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWSgpCisgICBtYWNybyAqLworUHlBUElfRlVOQyhfUHlfaGFzaHRhYmxlX2VudHJ5X3QqKSBfUHlfaGFzaHRhYmxlX2dldF9lbnRyeSgKKyAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIHNpemVfdCBrZXlfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpwa2V5KTsKKworI2RlZmluZSBfUHlfSEFTSFRBQkxFX0dFVF9FTlRSWShUQUJMRSwgS0VZKSBcCisgICAgX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkoVEFCTEUsIHNpemVvZihLRVkpLCAmKEtFWSkpCisKKworLyogR2V0IGRhdGEgZnJvbSBhbiBlbnRyeS4gQ29weSBlbnRyeSBkYXRhIGludG8gZGF0YSBhbmQgcmV0dXJuIDEgaWYgdGhlIGVudHJ5CisgICBleGlzdHMsIHJldHVybiAwIGlmIHRoZSBlbnRyeSBkb2VzIG5vdCBleGlzdC4KKworICAgRG9uJ3QgY2FsbCBkaXJlY3RseSB0aGlzIGZ1bmN0aW9uLCBidXQgdXNlIF9QeV9IQVNIVEFCTEVfR0VUKCkgbWFjcm8gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlfaGFzaHRhYmxlX2dldCgKKyAgICBfUHlfaGFzaHRhYmxlX3QgKmh0LAorICAgIHNpemVfdCBrZXlfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpwa2V5LAorICAgIHNpemVfdCBkYXRhX3NpemUsCisgICAgdm9pZCAqZGF0YSk7CiAKICNkZWZpbmUgX1B5X0hBU0hUQUJMRV9HRVQoVEFCTEUsIEtFWSwgREFUQSkgXAotICAgIF9QeV9oYXNodGFibGVfZ2V0KFRBQkxFLCBLRVksICYoREFUQSksIHNpemVvZihEQVRBKSkKKyAgICBfUHlfaGFzaHRhYmxlX2dldChUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSwgc2l6ZW9mKERBVEEpLCAmKERBVEEpKQorCisKKy8qIERvbid0IGNhbGwgZGlyZWN0bHkgdGhpcyBmdW5jdGlvbiwgYnV0IHVzZSBfUHlfSEFTSFRBQkxFX1BPUCgpIG1hY3JvICovCitQeUFQSV9GVU5DKGludCkgX1B5X2hhc2h0YWJsZV9wb3AoCisgICAgX1B5X2hhc2h0YWJsZV90ICpodCwKKyAgICBzaXplX3Qga2V5X3NpemUsCisgICAgY29uc3Qgdm9pZCAqcGtleSwKKyAgICBzaXplX3QgZGF0YV9zaXplLAorICAgIHZvaWQgKmRhdGEpOworCisjZGVmaW5lIF9QeV9IQVNIVEFCTEVfUE9QKFRBQkxFLCBLRVksIERBVEEpIFwKKyAgICBfUHlfaGFzaHRhYmxlX3BvcChUQUJMRSwgc2l6ZW9mKEtFWSksICYoS0VZKSwgc2l6ZW9mKERBVEEpLCAmKERBVEEpKQorCiAKICNlbmRpZiAgIC8qIFB5X0xJTUlURURfQVBJICovCi0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKaW5kZXggYmUwZjQ5OC4uNmJmMDRjYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYworKysgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCkBAIC0xLDQgKzEsNSBAQAogCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIApAQCAtNyw3ICs4LDcgQEAKICovCiAKIAotLyogZ3JvdXBieSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBncm91cGJ5IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC03NCw3ICs3NSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ3JvdXBieV9uZXh0KGdyb3VwYnlvYmplY3QgKmdibykKIHsKLSAgICBQeU9iamVjdCAqbmV3dmFsdWUsICpuZXdrZXksICpyLCAqZ3JvdXBlciwgKnRtcDsKKyAgICBQeU9iamVjdCAqbmV3dmFsdWUsICpuZXdrZXksICpyLCAqZ3JvdXBlcjsKIAogICAgIC8qIHNraXAgdG8gbmV4dCBpdGVyYXRpb24gZ3JvdXAgKi8KICAgICBmb3IgKDs7KSB7CkBAIC04NSw4ICs4Niw3IEBACiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW50IHJjbXA7CiAKLSAgICAgICAgICAgIHJjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woZ2JvLT50Z3RrZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdiby0+Y3VycmtleSwgUHlfRVEpOworICAgICAgICAgICAgcmNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChnYm8tPnRndGtleSwgZ2JvLT5jdXJya2V5LCBQeV9FUSk7CiAgICAgICAgICAgICBpZiAocmNtcCA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGVsc2UgaWYgKHJjbXAgPT0gMCkKQEAgLTEwMSwyNyArMTAxLDE5IEBACiAgICAgICAgICAgICBuZXdrZXkgPSBuZXd2YWx1ZTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsdWUsIE5VTEwpOworICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsIG5ld3ZhbHVlLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChuZXdrZXkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd2YWx1ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0bXAgPSBnYm8tPmN1cnJrZXk7Ci0gICAgICAgIGdiby0+Y3VycmtleSA9IG5ld2tleTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOwotCi0gICAgICAgIHRtcCA9IGdiby0+Y3VycnZhbHVlOwotICAgICAgICBnYm8tPmN1cnJ2YWx1ZSA9IG5ld3ZhbHVlOwotICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgIFB5X1hTRVRSRUYoZ2JvLT5jdXJya2V5LCBuZXdrZXkpOworICAgICAgICBQeV9YU0VUUkVGKGdiby0+Y3VycnZhbHVlLCBuZXd2YWx1ZSk7CiAgICAgfQogCiAgICAgUHlfSU5DUkVGKGdiby0+Y3VycmtleSk7Ci0gICAgdG1wID0gZ2JvLT50Z3RrZXk7Ci0gICAgZ2JvLT50Z3RrZXkgPSBnYm8tPmN1cnJrZXk7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYoZ2JvLT50Z3RrZXksIGdiby0+Y3VycmtleSk7CiAKICAgICBncm91cGVyID0gX2dyb3VwZXJfY3JlYXRlKGdibywgZ2JvLT50Z3RrZXkpOwogICAgIGlmIChncm91cGVyID09IE5VTEwpCkBAIC0xNzgsNyArMTcwLDcgQEAKICAgICAgcmVkdWNlX2RvY30sCiAgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pZ3JvdXBieV9zZXRzdGF0ZSwgICAgTUVUSF9PLAogICAgICBzZXRzdGF0ZV9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBQeURvY19TVFJWQVIoZ3JvdXBieV9kb2MsCkBAIC0zMDEsOCArMjkzLDcgQEAKICAgICAgICAgICAgIG5ld2tleSA9IG5ld3ZhbHVlOwogICAgICAgICAgICAgUHlfSU5DUkVGKG5ld3ZhbHVlKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5ld2tleSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoZ2JvLT5rZXlmdW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd2YWx1ZSwgTlVMTCk7CisgICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywgbmV3dmFsdWUsIE5VTEwpOwogICAgICAgICAgICAgaWYgKG5ld2tleSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld3ZhbHVlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMCw4ICszMjEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9ncm91cGVyX3JlZHVjZShfZ3JvdXBlcm9iamVjdCAqbHopCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCi0gICAgICAgICAgICBsei0+cGFyZW50LCBsei0+dGd0a2V5KTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwgbHotPnBhcmVudCwgbHotPnRndGtleSk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBfZ3JvdXBlcl9tZXRob2RzW10gPSB7CkBAIC0zNjQsNyArMzU0LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAodHJhdmVyc2Vwcm9jKV9ncm91cGVyX3RyYXZlcnNlLC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYylfZ3JvdXBlcl90cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KQEAgLTM4NSw4ICszNzUsNyBAQAogfTsKIAogCi0KLS8qIHRlZSBvYmplY3QgYW5kIHdpdGggc3VwcG9ydGluZyBmdW5jdGlvbiBhbmQgb2JqZWN0cyAqKioqKioqKioqKioqKiovCisvKiB0ZWUgb2JqZWN0IGFuZCB3aXRoIHN1cHBvcnRpbmcgZnVuY3Rpb24gYW5kIG9iamVjdHMgKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIFRoZSB0ZWVkYXRhb2JqZWN0IHByZS1hbGxvY2F0ZXMgc3BhY2UgZm9yIExJTktDRUxMUyBudW1iZXIgb2Ygb2JqZWN0cy4KICAgIFRvIGhlbHAgdGhlIG9iamVjdCBmaXQgbmVhdGx5IGluc2lkZSBjYWNoZSBsaW5lcyAoc3BhY2UgZm9yIDE2IHRvIDMyCkBAIC00MDEsNyArMzkwLDcgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKml0OwotICAgIGludCBudW1yZWFkOyAgLyogMCA8PSBudW1yZWFkIDw9IExJTktDRUxMUyAqLworICAgIGludCBudW1yZWFkOyAgICAgICAgICAgICAgICAvKiAwIDw9IG51bXJlYWQgPD0gTElOS0NFTExTICovCiAgICAgUHlPYmplY3QgKm5leHRsaW5rOwogICAgIFB5T2JqZWN0ICoodmFsdWVzW0xJTktDRUxMU10pOwogfSB0ZWVkYXRhb2JqZWN0OwpAQCAtNDA5LDcgKzM5OCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIHRlZWRhdGFvYmplY3QgKmRhdGFvYmo7Ci0gICAgaW50IGluZGV4OyAgICAvKiAwIDw9IGluZGV4IDw9IExJTktDRUxMUyAqLworICAgIGludCBpbmRleDsgICAgICAgICAgICAgICAgICAvKiAwIDw9IGluZGV4IDw9IExJTktDRUxMUyAqLwogICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKIH0gdGVlb2JqZWN0OwogCkBAIC00NjYsNiArNDU1LDcgQEAKIHRlZWRhdGFvYmplY3RfdHJhdmVyc2UodGVlZGF0YW9iamVjdCAqdGRvLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKiBhcmcpCiB7CiAgICAgaW50IGk7CisKICAgICBQeV9WSVNJVCh0ZG8tPml0KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgdGRvLT5udW1yZWFkOyBpKyspCiAgICAgICAgIFB5X1ZJU0lUKHRkby0+dmFsdWVzW2ldKTsKQEAgLTUxNSw2ICs1MDUsNyBAQAogICAgIGludCBpOwogICAgIC8qIGNyZWF0ZSBhIHRlbXBvcmFyeSBsaXN0IG9mIGFscmVhZHkgaXRlcmF0ZWQgdmFsdWVzICovCiAgICAgUHlPYmplY3QgKnZhbHVlcyA9IFB5TGlzdF9OZXcodGRvLT5udW1yZWFkKTsKKwogICAgIGlmICghdmFsdWVzKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmb3IgKGk9MCA7IGk8dGRvLT5udW1yZWFkIDsgaSsrKSB7CkBAIC01ODIsNyArNTczLDcgQEAKIFB5RG9jX1NUUlZBUih0ZWVkYXRhb2JqZWN0X2RvYywgIkRhdGEgY29udGFpbmVyIGNvbW1vbiB0byBtdWx0aXBsZSB0ZWUgb2JqZWN0cy4iKTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCB0ZWVkYXRhb2JqZWN0X3R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApICAgICAgICAgLyogTXVzdCBmaWxsIGluIHR5cGUgdmFsdWUgbGF0ZXIgKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoMCwgMCkgICAgICAgICAgICAgICAgIC8qIE11c3QgZmlsbCBpbiB0eXBlIHZhbHVlIGxhdGVyICovCiAgICAgIml0ZXJ0b29scy5fdGVlX2RhdGFvYmplY3QiLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHRlZWRhdGFvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCkBAIC02MDIsNyArNTkzLDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIHRlZWRhdGFvYmplY3RfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYyl0ZWVkYXRhb2JqZWN0X3RyYXZlcnNlLCAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KXRlZWRhdGFvYmplY3RfY2xlYXIsICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTc2Miw5ICs3NTMsOSBAQAogIkl0ZXJhdG9yIHdyYXBwZWQgdG8gbWFrZSBpdCBjb3B5YWJsZSIpOwogCiBzdGF0aWMgUHlNZXRob2REZWYgdGVlX21ldGhvZHNbXSA9IHsKLSAgICB7Il9fY29weV9fIiwgICAgICAgIChQeUNGdW5jdGlvbil0ZWVfY29weSwgIE1FVEhfTk9BUkdTLCB0ZWVjb3B5X2RvY30sCi0gICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGVlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCi0gICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdGVlX3NldHN0YXRlLCAgICBNRVRIX08sIHNldHN0YXRlX2RvY30sCisgICAgeyJfX2NvcHlfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pdGVlX2NvcHksICAgICBNRVRIX05PQVJHUywgdGVlY29weV9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9yZWR1Y2UsICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXRlZV9zZXRzdGF0ZSwgTUVUSF9PLCAgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTc5NCw3ICs3ODUsNyBAQAogICAgICh0cmF2ZXJzZXByb2MpdGVlX3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpdGVlX2NsZWFyLCAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIG9mZnNldG9mKHRlZW9iamVjdCwgd2Vha3JlZmxpc3QpLCAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZih0ZWVvYmplY3QsIHdlYWtyZWZsaXN0KSwgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXRlZV9uZXh0LCAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIHRlZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KQEAgLTg2MCwxMiArODUxLDEzIEBACiAidGVlKGl0ZXJhYmxlLCBuPTIpIC0tPiB0dXBsZSBvZiBuIGluZGVwZW5kZW50IGl0ZXJhdG9ycy4iKTsKIAogCi0vKiBjeWNsZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGN5Y2xlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqaXQ7CiAgICAgUHlPYmplY3QgKnNhdmVkOworICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgaW50IGZpcnN0cGFzczsKIH0gY3ljbGVvYmplY3Q7CiAKQEAgLTkwNSw2ICs4OTcsNyBAQAogICAgIH0KICAgICBsei0+aXQgPSBpdDsKICAgICBsei0+c2F2ZWQgPSBzYXZlZDsKKyAgICBsei0+aW5kZXggPSAwOwogICAgIGx6LT5maXJzdHBhc3MgPSAwOwogCiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWx6OwpAQCAtOTE0LDE1ICs5MDcsMTYgQEAKIGN5Y2xlX2RlYWxsb2MoY3ljbGVvYmplY3QgKmx6KQogewogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobHopOwotICAgIFB5X1hERUNSRUYobHotPnNhdmVkKTsKICAgICBQeV9YREVDUkVGKGx6LT5pdCk7CisgICAgUHlfWERFQ1JFRihsei0+c2F2ZWQpOwogICAgIFB5X1RZUEUobHopLT50cF9mcmVlKGx6KTsKIH0KIAogc3RhdGljIGludAogY3ljbGVfdHJhdmVyc2UoY3ljbGVvYmplY3QgKmx6LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9WSVNJVChsei0+aXQpOworICAgIGlmIChsei0+aXQpCisgICAgICAgIFB5X1ZJU0lUKGx6LT5pdCk7CiAgICAgUHlfVklTSVQobHotPnNhdmVkKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTkzMSw0NSArOTI1LDU2IEBACiBjeWNsZV9uZXh0KGN5Y2xlb2JqZWN0ICpseikKIHsKICAgICBQeU9iamVjdCAqaXRlbTsKLSAgICBQeU9iamVjdCAqaXQ7Ci0gICAgUHlPYmplY3QgKnRtcDsKIAotICAgIHdoaWxlICgxKSB7CisgICAgaWYgKGx6LT5pdCAhPSBOVUxMKSB7CiAgICAgICAgIGl0ZW0gPSBQeUl0ZXJfTmV4dChsei0+aXQpOwogICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoIWx6LT5maXJzdHBhc3MgJiYgUHlMaXN0X0FwcGVuZChsei0+c2F2ZWQsIGl0ZW0pKSB7CisgICAgICAgICAgICBpZiAobHotPmZpcnN0cGFzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGx6LT5zYXZlZCwgaXRlbSkpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gaXRlbTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpCi0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlMaXN0X1NpemUobHotPnNhdmVkKSA9PSAwKQorICAgICAgICAvKiBOb3RlOiAgU3RvcEl0ZXJhdGlvbiBpcyBhbHJlYWR5IGNsZWFyZWQgYnkgUHlJdGVyX05leHQoKSAqLworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIobHotPnNhdmVkKTsKLSAgICAgICAgaWYgKGl0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgdG1wID0gbHotPml0OwotICAgICAgICBsei0+aXQgPSBpdDsKLSAgICAgICAgbHotPmZpcnN0cGFzcyA9IDE7Ci0gICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBQeV9DTEVBUihsei0+aXQpOwogICAgIH0KKyAgICBpZiAoUHlfU0laRShsei0+c2F2ZWQpID09IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGl0ZW0gPSBQeUxpc3RfR0VUX0lURU0obHotPnNhdmVkLCBsei0+aW5kZXgpOworICAgIGx6LT5pbmRleCsrOworICAgIGlmIChsei0+aW5kZXggPj0gUHlfU0laRShsei0+c2F2ZWQpKQorICAgICAgICBsei0+aW5kZXggPSAwOworICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICByZXR1cm4gaXRlbTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGN5Y2xlX3JlZHVjZShjeWNsZW9iamVjdCAqbHopCiB7Ci0gICAgLyogQ3JlYXRlIGEgbmV3IGN5Y2xlIHdpdGggdGhlIGl0ZXJhdG9yIHR1cGxlLCB0aGVuIHNldAotICAgICAqIHRoZSBzYXZlZCBzdGF0ZSBvbiBpdC4KLSAgICAgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKShPaSkiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgbHotPml0LCBsei0+c2F2ZWQsIGx6LT5maXJzdHBhc3MpOworICAgIC8qIENyZWF0ZSBhIG5ldyBjeWNsZSB3aXRoIHRoZSBpdGVyYXRvciB0dXBsZSwgdGhlbiBzZXQgdGhlIHNhdmVkIHN0YXRlICovCisgICAgaWYgKGx6LT5pdCA9PSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5T2JqZWN0X0dldEl0ZXIobHotPnNhdmVkKTsKKyAgICAgICAgaWYgKGl0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKGx6LT5pbmRleCAhPSAwKSB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX3NldHN0YXRlX18pOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaXQsICZQeUlkX19fc2V0c3RhdGVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuIiwgbHotPmluZGV4KTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhOKShPaSkiLCBQeV9UWVBFKGx6KSwgaXQsIGx6LT5zYXZlZCwgMSk7CiAgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pKE9pKSIsIFB5X1RZUEUobHopLCBsei0+aXQsIGx6LT5zYXZlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsei0+Zmlyc3RwYXNzKTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGN5Y2xlX3NldHN0YXRlKGN5Y2xlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQpAQCAtOTgzLDkgKzk4OCwxMCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk8haSIsICZQeUxpc3RfVHlwZSwgJnNhdmVkLCAmZmlyc3RwYXNzKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWElOQ1JFRihzYXZlZCk7CisgICAgUHlfSU5DUkVGKHNhdmVkKTsKICAgICBQeV9YU0VUUkVGKGx6LT5zYXZlZCwgc2F2ZWQpOwogICAgIGx6LT5maXJzdHBhc3MgPSBmaXJzdHBhc3MgIT0gMDsKKyAgICBsei0+aW5kZXggPSAwOwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0xMDU0LDcgKzEwNjAsNyBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqZnVuYzsKICAgICBQeU9iamVjdCAqaXQ7Ci0gICAgbG9uZyAgICAgICAgIHN0YXJ0OworICAgIGxvbmcgc3RhcnQ7CiB9IGRyb3B3aGlsZW9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkcm9wd2hpbGVfdHlwZTsKQEAgLTExNDQsOCArMTE1MCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZHJvcHdoaWxlX3JlZHVjZShkcm9wd2hpbGVvYmplY3QgKmx6KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsei0+ZnVuYywgbHotPml0LCBsei0+c3RhcnQpOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKWwiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCwgbHotPnN0YXJ0KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExOTYsMTMgKzEyMDEsMTMgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgZHJvcHdoaWxlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylkcm9wd2hpbGVfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYylkcm9wd2hpbGVfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylkcm9wd2hpbGVfbmV4dCwgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBkcm9wd2hpbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGRyb3B3aGlsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTIyMyw3ICsxMjI4LDcgQEAKICAgICBQeU9iamVjdF9IRUFECiAgICAgUHlPYmplY3QgKmZ1bmM7CiAgICAgUHlPYmplY3QgKml0OwotICAgIGxvbmcgICAgICAgICBzdG9wOworICAgIGxvbmcgc3RvcDsKIH0gdGFrZXdoaWxlb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHRha2V3aGlsZV90eXBlOwpAQCAtMTI5OCw3ICsxMzAzLDcgQEAKICAgICB9CiAgICAgb2sgPSBQeU9iamVjdF9Jc1RydWUoZ29vZCk7CiAgICAgUHlfREVDUkVGKGdvb2QpOwotICAgIGlmIChvayA9PSAxKQorICAgIGlmIChvayA+IDApCiAgICAgICAgIHJldHVybiBpdGVtOwogICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICBpZiAob2sgPT0gMCkKQEAgLTEzMDksMTQgKzEzMTQsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0YWtld2hpbGVfcmVkdWNlKHRha2V3aGlsZW9iamVjdCAqbHopCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLAotICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdG9wKTsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylsIiwgUHlfVFlQRShseiksIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdG9wKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRha2V3aGlsZV9yZWR1Y2Vfc2V0c3RhdGUodGFrZXdoaWxlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQogewogICAgIGludCBzdG9wID0gUHlPYmplY3RfSXNUcnVlKHN0YXRlKTsKKwogICAgIGlmIChzdG9wIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbHotPnN0b3AgPSBzdG9wOwpAQCAtMTM2MCw3ICsxMzY1LDcgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgdGFrZXdoaWxlX2RvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyl0YWtld2hpbGVfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYyl0YWtld2hpbGVfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KQEAgLTEzODEsNyArMTM4Niw3IEBACiB9OwogCiAKLS8qIGlzbGljZSBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogaXNsaWNlIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMTQxNyw3ICsxNDIyLDggQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAiU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKKyAgICAgICAgICAgICAgICAgICAiU3RvcCBhcmd1bWVudCBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yICIKKyAgICAgICAgICAgICAgICAgICAiYW4gaW50ZWdlcjogMCA8PSB4IDw9IHN5cy5tYXhzaXplLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDMyLDE0ICsxNDM4LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciBhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CisgICAgICAgICAgICAgICAgICAgIlN0b3AgYXJndW1lbnQgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciAiCisgICAgICAgICAgICAgICAgICAgImFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBpZiAoc3RhcnQ8MCB8fCBzdG9wPC0xKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAiSW5kaWNlcyBmb3IgaXNsaWNlKCkgbXVzdCBiZSBOb25lIG9yIGFuIGludGVnZXI6IDAgPD0geCA8PSBzeXMubWF4c2l6ZS4iKTsKKyAgICAgICAgICAgIkluZGljZXMgZm9yIGlzbGljZSgpIG11c3QgYmUgTm9uZSBvciAiCisgICAgICAgICAgICJhbiBpbnRlZ2VyOiAwIDw9IHggPD0gc3lzLm1heHNpemUuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTUzNiw2ICsxNTQ0LDcgQEAKICAgICAgKiB0aGVuICdzZXRzdGF0ZScgd2l0aCB0aGUgbmV4dCBhbmQgY291bnQKICAgICAgKi8KICAgICBQeU9iamVjdCAqc3RvcDsKKwogICAgIGlmIChsei0+aXQgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZW1wdHlfbGlzdDsKICAgICAgICAgUHlPYmplY3QgKmVtcHR5X2l0OwpAQCAtMTU2NSw2ICsxNTc0LDcgQEAKIGlzbGljZV9zZXRzdGF0ZShpc2xpY2VvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCiB7CiAgICAgUHlfc3NpemVfdCBjbnQgPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKwogICAgIGlmIChjbnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbHotPmNudCA9IGNudDsKQEAgLTE3NzksNyArMTc4OSw3IEBACiB9OwogCiAKLS8qIGNoYWluIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjaGFpbiBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC0xODU1LDMyICsxODY1LDMyIEBACiAgICAgUHlPYmplY3QgKml0ZW07CiAKICAgICBpZiAobHotPnNvdXJjZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHJlYWR5IHN0b3BwZWQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAvKiBhbHJlYWR5IHN0b3BwZWQgKi8KIAogICAgIGlmIChsei0+YWN0aXZlID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gUHlJdGVyX05leHQobHotPnNvdXJjZSk7CiAgICAgICAgIGlmIChpdGVyYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihsei0+c291cmNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm8gbW9yZSBpbnB1dCBzb3VyY2VzICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogbm8gbW9yZSBpbnB1dCBzb3VyY2VzICovCiAgICAgICAgIH0KICAgICAgICAgbHotPmFjdGl2ZSA9IFB5T2JqZWN0X0dldEl0ZXIoaXRlcmFibGUpOwogICAgICAgICBQeV9ERUNSRUYoaXRlcmFibGUpOwogICAgICAgICBpZiAobHotPmFjdGl2ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihsei0+c291cmNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgbm90IGl0ZXJhYmxlICovCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogaW5wdXQgbm90IGl0ZXJhYmxlICovCiAgICAgICAgIH0KICAgICB9Ci0gICAgaXRlbSA9IFB5SXRlcl9OZXh0KGx6LT5hY3RpdmUpOworICAgIGl0ZW0gPSAoKlB5X1RZUEUobHotPmFjdGl2ZSktPnRwX2l0ZXJuZXh0KShsei0+YWN0aXZlKTsKICAgICBpZiAoaXRlbSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gaXRlbTsKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgIC8qIGlucHV0IHJhaXNlZCBhbiBleGNlcHRpb24gKi8KICAgICB9CiAgICAgUHlfQ0xFQVIobHotPmFjdGl2ZSk7Ci0gICAgcmV0dXJuIGNoYWluX25leHQobHopOyAgICAgICAgICAgICAgICAgICAgICAvKiByZWN1cnNlIGFuZCB1c2UgbmV4dCBhY3RpdmUgKi8KKyAgICByZXR1cm4gY2hhaW5fbmV4dChseik7ICAgICAgICAgICAgICAvKiByZWN1cnNlIGFuZCB1c2UgbmV4dCBhY3RpdmUgKi8KIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE5NDAsMTMgKzE5NTAsMTMgQEAKIHRoYXQgZXZhbHVhdGVzIGxhemlseS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIGNoYWluX21ldGhvZHNbXSA9IHsKLSAgICB7ImZyb21faXRlcmFibGUiLCAoUHlDRnVuY3Rpb24pIGNoYWluX25ld19mcm9tX2l0ZXJhYmxlLCAgICAgICAgICAgIE1FVEhfTyB8IE1FVEhfQ0xBU1MsCi0gICAgICAgIGNoYWluX2Zyb21faXRlcmFibGVfZG9jfSwKKyAgICB7ImZyb21faXRlcmFibGUiLCAoUHlDRnVuY3Rpb24pIGNoYWluX25ld19mcm9tX2l0ZXJhYmxlLCBNRVRIX08gfCBNRVRIX0NMQVNTLAorICAgICBjaGFpbl9mcm9tX2l0ZXJhYmxlX2RvY30sCiAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pY2hhaW5fcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAogICAgICByZWR1Y2VfZG9jfSwKICAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljaGFpbl9zZXRzdGF0ZSwgICAgTUVUSF9PLAogICAgICBzZXRzdGF0ZV9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGNoYWluX3R5cGUgPSB7CkBAIC0xOTk4LDEwICsyMDA4LDEwIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2xzOyAgICAgICAgICAgICAgICAgICAgLyogdHVwbGUgb2YgcG9vbCB0dXBsZXMgKi8KLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAgICAgICAgIC8qIG9uZSBpbmRleCBwZXIgcG9vbCAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KLSAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIHByb2R1Y3QgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlPYmplY3QgKnBvb2xzOyAgICAgICAgLyogdHVwbGUgb2YgcG9vbCB0dXBsZXMgKi8KKyAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAvKiBvbmUgaW5kZXggcGVyIHBvb2wgKi8KKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAvKiBtb3N0IHJlY2VudGx5IHJldHVybmVkIHJlc3VsdCB0dXBsZSAqLworICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBwcm9kdWN0b2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHByb2R1Y3RfdHlwZTsKQEAgLTIwMjAsNyArMjAzMCw4IEBACiAgICAgICAgIFB5T2JqZWN0ICp0bXBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgICAgIGlmICh0bXBhcmdzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHModG1wYXJncywga3dkcywgInxuOnByb2R1Y3QiLCBrd2xpc3QsICZyZXBlYXQpKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHRtcGFyZ3MsIGt3ZHMsICJ8bjpwcm9kdWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmcmVwZWF0KSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHRtcGFyZ3MpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTIzMDksNyArMjMyMCw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0IHByb2R1Y3RfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiaXRlcnRvb2xzLnByb2R1Y3QiLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCi0gICAgc2l6ZW9mKHByb2R1Y3RvYmplY3QpLCAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIHNpemVvZihwcm9kdWN0b2JqZWN0KSwgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKXByb2R1Y3RfZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KQEAgLTIzNTEsMTUgKzIzNjIsMTUgQEAKIH07CiAKIAotLyogY29tYmluYXRpb25zIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBjb21iaW5hdGlvbnMgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAgICAgICAgIC8qIG9uZSBpbmRleCBwZXIgcmVzdWx0IGVsZW1lbnQgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KLSAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBjb21iaW5hdGlvbnMgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KKyAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAvKiBvbmUgaW5kZXggcGVyIHJlc3VsdCBlbGVtZW50ICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KKyAgICBQeV9zc2l6ZV90IHI7ICAgICAgICAgICAvKiBzaXplIG9mIHJlc3VsdCB0dXBsZSAqLworICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBjb21iaW5hdGlvbnNvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY29tYmluYXRpb25zX3R5cGU7CkBAIC0yNTY5LDE3ICsyNTgwLDE2IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5X3NzaXplX3QgbiA9IFB5VHVwbGVfR0VUX1NJWkUobHotPnBvb2wpOwogCi0gICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHN0YXRlKSAhPSBsei0+cikKLSAgICB7CisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHN0YXRlKSAhPSBsei0+cikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCi0gICAgeworICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspIHsKICAgICAgICAgUHlfc3NpemVfdCBtYXg7CiAgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisKICAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KICAgICAgICAgbWF4ID0gaSArIG4gLSBsei0+cjsKQEAgLTI2NjUsNyArMjY3NSw3IEBACiB9OwogCiAKLS8qIGNvbWJpbmF0aW9ucyB3aXRoIHJlcGxhY2VtZW50IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogY29tYmluYXRpb25zIHdpdGggcmVwbGFjZW1lbnQgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiBFcXVpdmFsZW50IHRvOgogCkBAIC0yNjk1LDExICsyNzA1LDExIEBACiAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqcG9vbDsgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBjb252ZXJ0ZWQgdG8gYSB0dXBsZSAqLworICAgIFB5T2JqZWN0ICpwb29sOyAgICAgICAgIC8qIGlucHV0IGNvbnZlcnRlZCB0byBhIHR1cGxlICovCiAgICAgUHlfc3NpemVfdCAqaW5kaWNlczsgICAgLyogb25lIGluZGV4IHBlciByZXN1bHQgZWxlbWVudCAqLwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KLSAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBjd3IgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KKyAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBjd3IgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCiB9IGN3cm9iamVjdDsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjd3JfdHlwZTsKQEAgLTI3MTYsOCArMjcyNiw5IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsiaXRlcmFibGUiLCAiciIsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9uOmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50Iiwga3dhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpdGVyYWJsZSwgJnIpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9uOmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MsICZpdGVyYWJsZSwgJnIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHBvb2wgPSBQeVNlcXVlbmNlX1R1cGxlKGl0ZXJhYmxlKTsKQEAgLTI4ODIsOCArMjg5Myw3IEBACiAgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhsei0+cik7CiAgICAgICAgIGlmICghaW5kaWNlcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQotICAgICAgICB7CisgICAgICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0KiBpbmRleCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+aW5kaWNlc1tpXSk7CiAgICAgICAgICAgICBpZiAoIWluZGV4KSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGluZGljZXMpOwpAQCAtMjkwOSwxMCArMjkxOSwxMCBAQAogICAgIH0KIAogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29sKTsKLSAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKQotICAgIHsKKyAgICBmb3IgKGk9MDsgaTxsei0+cjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0KiBpbmRleE9iamVjdCA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisKICAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCiAgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAqLwpAQCAtMjk5Niw3ICszMDA2LDcgQEAKIH07CiAKIAotLyogcGVybXV0YXRpb25zIG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy8qIHBlcm11dGF0aW9ucyBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogZGVmIHBlcm11dGF0aW9ucyhpdGVyYWJsZSwgcj1Ob25lKToKICAgICAncGVybXV0YXRpb25zKHJhbmdlKDMpLCAyKSAtLT4gKDAsMSkgKDAsMikgKDEsMCkgKDEsMikgKDIsMCkgKDIsMSknCkBAIC0zMDIzLDEyICszMDMzLDEyIEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KLSAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAgICAgICAgIC8qIG9uZSBpbmRleCBwZXIgZWxlbWVudCBpbiB0aGUgcG9vbCAqLwotICAgIFB5X3NzaXplX3QgKmN5Y2xlczsgICAgICAgICAgICAgICAgIC8qIG9uZSByb2xsb3ZlciBjb3VudGVyIHBlciBlbGVtZW50IGluIHRoZSByZXN1bHQgKi8KLSAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgIC8qIG1vc3QgcmVjZW50bHkgcmV0dXJuZWQgcmVzdWx0IHR1cGxlICovCi0gICAgUHlfc3NpemVfdCByOyAgICAgICAgICAgICAgICAgICAgICAgLyogc2l6ZSBvZiByZXN1bHQgdHVwbGUgKi8KLSAgICBpbnQgc3RvcHBlZDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZXQgdG8gMSB3aGVuIHRoZSBwZXJtdXRhdGlvbnMgaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlPYmplY3QgKnBvb2w7ICAgICAgICAgLyogaW5wdXQgY29udmVydGVkIHRvIGEgdHVwbGUgKi8KKyAgICBQeV9zc2l6ZV90ICppbmRpY2VzOyAgICAvKiBvbmUgaW5kZXggcGVyIGVsZW1lbnQgaW4gdGhlIHBvb2wgKi8KKyAgICBQeV9zc2l6ZV90ICpjeWNsZXM7ICAgICAvKiBvbmUgcm9sbG92ZXIgY291bnRlciBwZXIgZWxlbWVudCBpbiB0aGUgcmVzdWx0ICovCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgLyogbW9zdCByZWNlbnRseSByZXR1cm5lZCByZXN1bHQgdHVwbGUgKi8KKyAgICBQeV9zc2l6ZV90IHI7ICAgICAgICAgICAvKiBzaXplIG9mIHJlc3VsdCB0dXBsZSAqLworICAgIGludCBzdG9wcGVkOyAgICAgICAgICAgIC8qIHNldCB0byAxIHdoZW4gdGhlIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZCAqLwogfSBwZXJtdXRhdGlvbnNvYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgcGVybXV0YXRpb25zX3R5cGU7CkBAIC0zMjQzLDcgKzMyNTMsNyBAQAogICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobik7CiAgICAgICAgIGlmIChpbmRpY2VzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAgZm9yIChpPTA7IGk8bjsgaSsrKXsKKyAgICAgICAgZm9yIChpPTA7IGk8bjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QocG8tPmluZGljZXNbaV0pOwogICAgICAgICAgICAgaWYgKCFpbmRleCkKICAgICAgICAgICAgICAgICBnb3RvIGVycjsKQEAgLTMyNTMsOCArMzI2Myw3IEBACiAgICAgICAgIGN5Y2xlcyA9IFB5VHVwbGVfTmV3KHBvLT5yKTsKICAgICAgICAgaWYgKGN5Y2xlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspCi0gICAgICAgIHsKKyAgICAgICAgZm9yIChpPTAgOyBpPHBvLT5yIDsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QocG8tPmN5Y2xlc1tpXSk7CiAgICAgICAgICAgICBpZiAoIWluZGV4KQogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwpAQCAtMzI4NywxNSArMzI5NiwxMiBAQAogICAgIH0KIAogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKHBvLT5wb29sKTsKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShpbmRpY2VzKSAhPSBuIHx8Ci0gICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoY3ljbGVzKSAhPSBwby0+cikKLSAgICB7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoaW5kaWNlcykgIT0gbiB8fCBQeVR1cGxlX0dFVF9TSVpFKGN5Y2xlcykgIT0gcG8tPnIpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBmb3IgKGk9MDsgaTxuOyBpKyspCi0gICAgeworICAgIGZvciAoaT0wOyBpPG47IGkrKykgewogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKGluZGljZXMsIGkpOwogICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CiAgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTMzMDgsOCArMzMxNCw3IEBACiAgICAgICAgIHBvLT5pbmRpY2VzW2ldID0gaW5kZXg7CiAgICAgfQogCi0gICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykKLSAgICB7CisgICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykgewogICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKGN5Y2xlcywgaSk7CiAgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKICAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQpAQCAtMzM1MCwxMSArMzM1NSwxMSBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHBlcm11dGF0aW9uc190eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpdGVydG9vbHMucGVybXV0YXRpb25zIiwgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJpdGVydG9vbHMucGVybXV0YXRpb25zIiwgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YocGVybXV0YXRpb25zb2JqZWN0KSwgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcilwZXJtdXRhdGlvbnNfZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3RvcilwZXJtdXRhdGlvbnNfZGVhbGxvYywgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtMzM3MSwxMyArMzM3NiwxMyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBwZXJtdXRhdGlvbnNfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpcGVybXV0YXRpb25zX3RyYXZlcnNlLCAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICBwZXJtdXRhdGlvbnNfZG9jLCAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKXBlcm11dGF0aW9uc190cmF2ZXJzZSwvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAoaXRlcm5leHRmdW5jKXBlcm11dGF0aW9uc19uZXh0LCAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgKGl0ZXJuZXh0ZnVuYylwZXJtdXRhdGlvbnNfbmV4dCwgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBwZXJtdWF0aW9uc19tZXRob2RzLCAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMzM4OCwxMSArMzM5MywxMSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICBwZXJtdXRhdGlvbnNfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIHBlcm11dGF0aW9uc19uZXcsICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKLS8qIGFjY3VtdWxhdGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIGFjY3VtdWxhdGUgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRApAQCAtMzQ1OSw5ICszNDY0LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhY2N1bXVsYXRlX25leHQoYWNjdW11bGF0ZW9iamVjdCAqbHopCiB7Ci0gICAgUHlPYmplY3QgKnZhbCwgKm9sZHRvdGFsLCAqbmV3dG90YWw7CisgICAgUHlPYmplY3QgKnZhbCwgKm5ld3RvdGFsOwogCi0gICAgdmFsID0gUHlJdGVyX05leHQobHotPml0KTsKKyAgICB2YWwgPSAoKlB5X1RZUEUobHotPml0KS0+dHBfaXRlcm5leHQpKGx6LT5pdCk7CiAgICAgaWYgKHZhbCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMzQ3OSwxMSArMzQ4NCw4IEBACiAgICAgaWYgKG5ld3RvdGFsID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgb2xkdG90YWwgPSBsei0+dG90YWw7Ci0gICAgbHotPnRvdGFsID0gbmV3dG90YWw7Ci0gICAgUHlfREVDUkVGKG9sZHRvdGFsKTsKLQogICAgIFB5X0lOQ1JFRihuZXd0b3RhbCk7CisgICAgUHlfU0VUUkVGKGx6LT50b3RhbCwgbmV3dG90YWwpOwogICAgIHJldHVybiBuZXd0b3RhbDsKIH0KIApAQCAtMzUxMCw3ICszNTEyLDcgQEAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTylPIiwgUHlfVFlQRShseiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHotPml0LCBsei0+Ymlub3A/bHotPmJpbm9wOlB5X05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHotPnRvdGFsP2x6LT50b3RhbDpQeV9Ob25lKTsKLSB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBhY2N1bXVsYXRlX3NldHN0YXRlKGFjY3VtdWxhdGVvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCkBAIC0zNjcyLDcgKzM2NzQsNyBAQAogCiAgICAgICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKHNlbGVjdG9yKTsKICAgICAgICAgUHlfREVDUkVGKHNlbGVjdG9yKTsKLSAgICAgICAgaWYgKG9rID09IDEpCisgICAgICAgIGlmIChvayA+IDApCiAgICAgICAgICAgICByZXR1cm4gZGF0dW07CiAgICAgICAgIFB5X0RFQ1JFRihkYXR1bSk7CiAgICAgICAgIGlmIChvayA8IDApCkBAIC0zNjg1LDcgKzM2ODcsNyBAQAogewogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAogICAgICAgICBsei0+ZGF0YSwgbHotPnNlbGVjdG9ycyk7Ci0gICAgfQorfQogCiBzdGF0aWMgUHlNZXRob2REZWYgY29tcHJlc3NfbWV0aG9kc1tdID0gewogICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNvbXByZXNzX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKQEAgLTM3MDQsNDQgKzM3MDYsNDQgQEAKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiaXRlcnRvb2xzLmNvbXByZXNzIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGNvbXByZXNzb2JqZWN0KSwgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3Rvciljb21wcmVzc19kZWFsbG9jLCAgICAgICAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKLSAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgY29tcHJlc3NfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpY29tcHJlc3NfdHJhdmVyc2UsICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgY29tcHJlc3NfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyljb21wcmVzc190cmF2ZXJzZSwgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljb21wcmVzc19uZXh0LCAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBjb21wcmVzc19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgY29tcHJlc3NfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgY29tcHJlc3NfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBjb21wcmVzc19uZXcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTM4MjIsOCArMzgyNCw3IEBACiAgICAgICAgICAgICBvayA9IFB5T2JqZWN0X0lzVHJ1ZShpdGVtKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpnb29kOwotICAgICAgICAgICAgZ29vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobHotPmZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLCBOVUxMKTsKKyAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLCBpdGVtLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChnb29kID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zODQyLDkgKzM4NDMsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbHRlcmZhbHNlX3JlZHVjZShmaWx0ZXJmYWxzZW9iamVjdCAqbHopCiB7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCi0gICAgICAgIGx6LT5mdW5jLCBsei0+aXQpOwotICAgIH0KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPTykiLCBQeV9UWVBFKGx6KSwgbHotPmZ1bmMsIGx6LT5pdCk7Cit9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBmaWx0ZXJmYWxzZV9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pZmlsdGVyZmFsc2VfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLApAQCAtMzg2NCw3ICszODY0LDcgQEAKICAgICBzaXplb2YoZmlsdGVyZmFsc2VvYmplY3QpLCAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcilmaWx0ZXJmYWxzZV9kZWFsbG9jLCAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3RvcilmaWx0ZXJmYWxzZV9kZWFsbG9jLCAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtMzg4Miw3ICszODgyLDcgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAogICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgZmlsdGVyZmFsc2VfZG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYylmaWx0ZXJmYWxzZV90cmF2ZXJzZSwgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgICh0cmF2ZXJzZXByb2MpZmlsdGVyZmFsc2VfdHJhdmVyc2UsIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCkBAIC00MTM0LDE1ICs0MTM0LDE1IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MgfAotICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIGNvdW50X2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpY291bnRfdHJhdmVyc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKHRyYXZlcnNlcHJvYyljb3VudF90cmF2ZXJzZSwgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljb3VudF9uZXh0LCAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBjb3VudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBjb3VudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTQzMDgsOSArNDMwOCw3IEBACiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAotLyogemlwbG9uZ2VzdCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCisvKiB6aXBsb25nZXN0IG9iamVjdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECkBAIC00MzQ5LDcgKzQzNDcsNyBAQAogICAgIGl0dHVwbGUgPSBQeVR1cGxlX05ldyh0dXBsZXNpemUpOwogICAgIGlmIChpdHR1cGxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoaT0wOyBpIDwgdHVwbGVzaXplOyArK2kpIHsKKyAgICBmb3IgKGk9MDsgaSA8IHR1cGxlc2l6ZTsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKICAgICAgICAgUHlPYmplY3QgKml0ID0gUHlPYmplY3RfR2V0SXRlcihpdGVtKTsKICAgICAgICAgaWYgKGl0ID09IE5VTEwpIHsKQEAgLTQ0OTAsNiArNDQ4OCw3IEBACiAgICAgICovCiAgICAgaW50IGk7CiAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdHR1cGxlKSk7CisKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmb3IgKGk9MDsgaTxQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdHR1cGxlKTsgaSsrKSB7CkBAIC00NTQwLDcgKzQ1MzksNyBAQAogICAgIHNpemVvZih6aXBsb25nZXN0b2JqZWN0KSwgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKXppcF9sb25nZXN0X2RlYWxsb2MsICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKXppcF9sb25nZXN0X2RlYWxsb2MsICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC00NTU3LDggKzQ1NTYsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8CiAgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICB6aXBfbG9uZ2VzdF9kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpemlwX2xvbmdlc3RfdHJhdmVyc2UsICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgemlwX2xvbmdlc3RfZG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl6aXBfbG9uZ2VzdF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KQEAgLTQ1NzQsNyArNDU3Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIHppcF9sb25nZXN0X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgemlwX2xvbmdlc3RfbmV3LCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYWluLmMgYi9Nb2R1bGVzL21haW4uYwppbmRleCBlNGM5NTVlLi42OTg2ZDk0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21haW4uYworKysgYi9Nb2R1bGVzL21haW4uYwpAQCAtNDIsMTEgKzQyLDExIEBACiAjZGVmaW5lIFBST0dSQU1fT1BUUyBCQVNFX09QVFMKIAogLyogU2hvcnQgdXNhZ2UgbWVzc2FnZSAod2l0aCAlcyBmb3IgYXJndjApICovCi1zdGF0aWMgY2hhciAqdXNhZ2VfbGluZSA9CitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV9saW5lW10gPQogInVzYWdlOiAlbHMgW29wdGlvbl0gLi4uIFstYyBjbWQgfCAtbSBtb2QgfCBmaWxlIHwgLV0gW2FyZ10gLi4uXG4iOwogCiAvKiBMb25nIHVzYWdlIG1lc3NhZ2UsIHNwbGl0IGludG8gcGFydHMgPCA1MTIgYnl0ZXMgKi8KLXN0YXRpYyBjaGFyICp1c2FnZV8xID0gIlwKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzFbXSA9ICJcCiBPcHRpb25zIGFuZCBhcmd1bWVudHMgKGFuZCBjb3JyZXNwb25kaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyk6XG5cCiAtYiAgICAgOiBpc3N1ZSB3YXJuaW5ncyBhYm91dCBzdHIoYnl0ZXNfaW5zdGFuY2UpLCBzdHIoYnl0ZWFycmF5X2luc3RhbmNlKVxuXAogICAgICAgICAgYW5kIGNvbXBhcmluZyBieXRlcy9ieXRlYXJyYXkgd2l0aCBzdHIuICgtYmI6IGlzc3VlIGVycm9ycylcblwKQEAgLTU2LDcgKzU2LDcgQEAKIC1FICAgICA6IGlnbm9yZSBQWVRIT04qIGVudmlyb25tZW50IHZhcmlhYmxlcyAoc3VjaCBhcyBQWVRIT05QQVRIKVxuXAogLWggICAgIDogcHJpbnQgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQgKGFsc28gLS1oZWxwKVxuXAogIjsKLXN0YXRpYyBjaGFyICp1c2FnZV8yID0gIlwKK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzJbXSA9ICJcCiAtaSAgICAgOiBpbnNwZWN0IGludGVyYWN0aXZlbHkgYWZ0ZXIgcnVubmluZyBzY3JpcHQ7IGZvcmNlcyBhIHByb21wdCBldmVuXG5cCiAgICAgICAgICBpZiBzdGRpbiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYSB0ZXJtaW5hbDsgYWxzbyBQWVRIT05JTlNQRUNUPXhcblwKIC1JICAgICA6IGlzb2xhdGUgUHl0aG9uIGZyb20gdGhlIHVzZXIncyBlbnZpcm9ubWVudCAoaW1wbGllcyAtRSBhbmQgLXMpXG5cCkBAIC02Nyw3ICs2Nyw3IEBACiAtcyAgICAgOiBkb24ndCBhZGQgdXNlciBzaXRlIGRpcmVjdG9yeSB0byBzeXMucGF0aDsgYWxzbyBQWVRIT05OT1VTRVJTSVRFXG5cCiAtUyAgICAgOiBkb24ndCBpbXBseSAnaW1wb3J0IHNpdGUnIG9uIGluaXRpYWxpemF0aW9uXG5cCiAiOwotc3RhdGljIGNoYXIgKnVzYWdlXzMgPSAiXAorc3RhdGljIGNvbnN0IGNoYXIgdXNhZ2VfM1tdID0gIlwKIC11ICAgICA6IHVuYnVmZmVyZWQgYmluYXJ5IHN0ZG91dCBhbmQgc3RkZXJyLCBzdGRpbiBhbHdheXMgYnVmZmVyZWQ7XG5cCiAgICAgICAgICBhbHNvIFBZVEhPTlVOQlVGRkVSRUQ9eFxuXAogICAgICAgICAgc2VlIG1hbiBwYWdlIGZvciBkZXRhaWxzIG9uIGludGVybmFsIGJ1ZmZlcmluZyByZWxhdGluZyB0byAnLXUnXG5cCkBAIC03OSw3ICs3OSw3IEBACiAteCAgICAgOiBza2lwIGZpcnN0IGxpbmUgb2Ygc291cmNlLCBhbGxvd2luZyB1c2Ugb2Ygbm9uLVVuaXggZm9ybXMgb2YgIyFjbWRcblwKIC1YIG9wdCA6IHNldCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBvcHRpb25cblwKICI7Ci1zdGF0aWMgY2hhciAqdXNhZ2VfNCA9ICJcCitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV80W10gPSAiXAogZmlsZSAgIDogcHJvZ3JhbSByZWFkIGZyb20gc2NyaXB0IGZpbGVcblwKIC0gICAgICA6IHByb2dyYW0gcmVhZCBmcm9tIHN0ZGluIChkZWZhdWx0OyBpbnRlcmFjdGl2ZSBtb2RlIGlmIGEgdHR5KVxuXAogYXJnIC4uLjogYXJndW1lbnRzIHBhc3NlZCB0byBwcm9ncmFtIGluIHN5cy5hcmd2WzE6XVxuXG5cCkBAIC04OCwyMiArODgsMjMgQEAKIFBZVEhPTlBBVEggICA6ICclbGMnLXNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHByZWZpeGVkIHRvIHRoZVxuXAogICAgICAgICAgICAgICAgZGVmYXVsdCBtb2R1bGUgc2VhcmNoIHBhdGguICBUaGUgcmVzdWx0IGlzIHN5cy5wYXRoLlxuXAogIjsKLXN0YXRpYyBjaGFyICp1c2FnZV81ID0KK3N0YXRpYyBjb25zdCBjaGFyIHVzYWdlXzVbXSA9CiAiUFlUSE9OSE9NRSAgIDogYWx0ZXJuYXRlIDxwcmVmaXg+IGRpcmVjdG9yeSAob3IgPHByZWZpeD4lbGM8ZXhlY19wcmVmaXg+KS5cbiIKICIgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBtb2R1bGUgc2VhcmNoIHBhdGggdXNlcyAlcy5cbiIKICJQWVRIT05DQVNFT0sgOiBpZ25vcmUgY2FzZSBpbiAnaW1wb3J0JyBzdGF0ZW1lbnRzIChXaW5kb3dzKS5cbiIKICJQWVRIT05JT0VOQ09ESU5HOiBFbmNvZGluZ1s6ZXJyb3JzXSB1c2VkIGZvciBzdGRpbi9zdGRvdXQvc3RkZXJyLlxuIgotIlBZVEhPTkZBVUxUSEFORExFUjogZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMuXG5cCi0iOwotc3RhdGljIGNoYXIgKnVzYWdlXzYgPSAiXAotUFlUSE9OSEFTSFNFRUQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICdyYW5kb20nLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkXG5cCi0gICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlXG5cCi0gICBzZXQgdG8gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYVxuXAotICAgcHJlZGljdGFibGUgc2VlZC5cblwKLSI7CisiUFlUSE9ORkFVTFRIQU5ETEVSOiBkdW1wIHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIGZhdGFsIGVycm9ycy5cbiI7CitzdGF0aWMgY29uc3QgY2hhciB1c2FnZV82W10gPQorIlBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgYSByYW5kb20gdmFsdWUgaXMgdXNlZFxuIgorIiAgIHRvIHNlZWQgdGhlIGhhc2hlcyBvZiBzdHIsIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLiAgSXQgY2FuIGFsc28gYmVcbiIKKyIgICBzZXQgdG8gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYVxuIgorIiAgIHByZWRpY3RhYmxlIHNlZWQuXG4iCisiUFlUSE9OTUFMTE9DOiBzZXQgdGhlIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycyBhbmQvb3IgaW5zdGFsbCBkZWJ1ZyBob29rc1xuIgorIiAgIG9uIFB5dGhvbiBtZW1vcnkgYWxsb2NhdG9ycy4gVXNlIFBZVEhPTk1BTExPQz1kZWJ1ZyB0byBpbnN0YWxsIGRlYnVnXG4iCisiICAgaG9va3MuXG4iOwogCiBzdGF0aWMgaW50Ci11c2FnZShpbnQgZXhpdGNvZGUsIHdjaGFyX3QqIHByb2dyYW0pCit1c2FnZShpbnQgZXhpdGNvZGUsIGNvbnN0IHdjaGFyX3QqIHByb2dyYW0pCiB7CiAgICAgRklMRSAqZiA9IGV4aXRjb2RlID8gc3RkZXJyIDogc3Rkb3V0OwogCkBAIC0zNDEsNiArMzQyLDcgQEAKICAgICBpbnQgaGVscCA9IDA7CiAgICAgaW50IHZlcnNpb24gPSAwOwogICAgIGludCBzYXdfdW5idWZmZXJlZF9mbGFnID0gMDsKKyAgICBjaGFyICpvcHQ7CiAgICAgUHlDb21waWxlckZsYWdzIGNmOwogICAgIFB5T2JqZWN0ICp3YXJuaW5nX29wdGlvbiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKndhcm5pbmdfb3B0aW9ucyA9IE5VTEw7CkBAIC0zNjUsNiArMzY3LDEzIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBvcHQgPSBQeV9HRVRFTlYoIlBZVEhPTk1BTExPQyIpOworICAgIGlmIChfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKG9wdCkgPCAwKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICJFcnJvciBpbiBQWVRIT05NQUxMT0M6IHVua25vd24gYWxsb2NhdG9yIFwiJXNcIiFcbiIsIG9wdCk7CisgICAgICAgIGV4aXQoMSk7CisgICAgfQorCiAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnID0gMTsKICAgICBfUHlSYW5kb21fSW5pdCgpOwogCkBAIC00NzMsNyArNDgyLDggQEAKICAgICAgICAgICAgIHdhcm5pbmdfb3B0aW9uID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihfUHlPU19vcHRhcmcsIC0xKTsKICAgICAgICAgICAgIGlmICh3YXJuaW5nX29wdGlvbiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWx1cmUgaW4gaGFuZGxpbmcgb2YgLVcgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQod2FybmluZ19vcHRpb25zLCB3YXJuaW5nX29wdGlvbik7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZCh3YXJuaW5nX29wdGlvbnMsIHdhcm5pbmdfb3B0aW9uKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJmYWlsdXJlIGluIGhhbmRsaW5nIG9mIC1XIGFyZ3VtZW50Iik7CiAgICAgICAgICAgICBQeV9ERUNSRUYod2FybmluZ19vcHRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTY1NCw3ICs2NjQsNyBAQAogICAgICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUod2J1Zik7CiAKICAgICAgICAgICAgIC8qIERvbid0IGZyZWUgd2J1ZiwgdGhlIGFyZ3VtZW50IHRvIFB5X1NldFByb2dyYW1OYW1lCi0gICAgICAgICAgICAgKiBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgUHlfRmluYWxpemUgaXMgY2FsbGVkLgorICAgICAgICAgICAgICogbXVzdCByZW1haW4gdmFsaWQgdW50aWwgUHlfRmluYWxpemVFeCBpcyBjYWxsZWQuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwpAQCAtNjkzLDcgKzcwMyw4IEBACiAgICAgUHlTeXNfU2V0QXJndihhcmdjLV9QeU9TX29wdGluZCwgYXJnditfUHlPU19vcHRpbmQpOwogCiAgICAgaWYgKChQeV9JbnNwZWN0RmxhZyB8fCAoY29tbWFuZCA9PSBOVUxMICYmIGZpbGVuYW1lID09IE5VTEwgJiYgbW9kdWxlID09IE5VTEwpKSAmJgotICAgICAgICBpc2F0dHkoZmlsZW5vKHN0ZGluKSkpIHsKKyAgICAgICAgaXNhdHR5KGZpbGVubyhzdGRpbikpICYmCisgICAgICAgICFQeV9Jc29sYXRlZEZsYWcpIHsKICAgICAgICAgUHlPYmplY3QgKnY7CiAgICAgICAgIHYgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInJlYWRsaW5lIik7CiAgICAgICAgIGlmICh2ID09IE5VTEwpCkBAIC03ODUsNyArNzk2LDExIEBACiAgICAgICAgIHN0cyA9IFB5UnVuX0FueUZpbGVGbGFncyhzdGRpbiwgIjxzdGRpbj4iLCAmY2YpICE9IDA7CiAgICAgfQogCi0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICAvKiBWYWx1ZSB1bmxpa2VseSB0byBiZSBjb25mdXNlZCB3aXRoIGEgbm9uLWVycm9yIGV4aXQgc3RhdHVzIG9yCisgICAgICAgIG90aGVyIHNwZWNpYWwgbWVhbmluZyAqLworICAgICAgICBzdHMgPSAxMjA7CisgICAgfQogCiAjaWZkZWYgX19JTlNVUkVfXwogICAgIC8qIEluc3VyZSsrIGlzIGEgbWVtb3J5IGFuYWx5c2lzIHRvb2wgdGhhdCBhaWRzIGluIGRpc2NvdmVyaW5nCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21hdGhtb2R1bGUuYyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCmluZGV4IGI5NDViZDYuLjk1ZWE0ZjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCkBAIC04NzUsNyArODc1LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1hdGhfMihQeU9iamVjdCAqYXJncywgZG91YmxlICgqZnVuYykgKGRvdWJsZSwgZG91YmxlKSwgY2hhciAqZnVuY25hbWUpCittYXRoXzIoUHlPYmplY3QgKmFyZ3MsIGRvdWJsZSAoKmZ1bmMpIChkb3VibGUsIGRvdWJsZSksIGNvbnN0IGNoYXIgKmZ1bmNuYW1lKQogewogICAgIFB5T2JqZWN0ICpveCwgKm95OwogICAgIGRvdWJsZSB4LCB5LCByOwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAKICAgIGluIHRoYXQgaW50IGlzIGxhcmdlciB0aGFuIFBZX1NTSVpFX1RfTUFYLiAqLwogCiBzdGF0aWMgUHlPYmplY3QqCi1sb2doZWxwZXIoUHlPYmplY3QqIGFyZywgZG91YmxlICgqZnVuYykoZG91YmxlKSwgY2hhciAqZnVuY25hbWUpCitsb2doZWxwZXIoUHlPYmplY3QqIGFyZywgZG91YmxlICgqZnVuYykoZG91YmxlKSwgY29uc3QgY2hhciAqZnVuY25hbWUpCiB7CiAgICAgLyogSWYgaXQgaXMgaW50LCBkbyBpdCBvdXJzZWx2ZXMuICovCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKSB7CkBAIC0yMTQ0LDYgKzIxNDQsNyBAQAogCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJwaSIsIFB5RmxvYXRfRnJvbURvdWJsZShQeV9NQVRIX1BJKSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlIiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfRSkpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidGF1IiwgUHlGbG9hdF9Gcm9tRG91YmxlKFB5X01BVEhfVEFVKSk7ICAvKiAycGkgKi8KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImluZiIsIFB5RmxvYXRfRnJvbURvdWJsZShtX2luZigpKSk7CiAjaWYgIWRlZmluZWQoUFlfTk9fU0hPUlRfRkxPQVRfUkVQUikgfHwgZGVmaW5lZChQeV9OQU4pCiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJuYW4iLCBQeUZsb2F0X0Zyb21Eb3VibGUobV9uYW4oKSkpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tZDVtb2R1bGUuYyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKaW5kZXggZjk0YWNjNy4uMDRiYzA2ZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tZDVtb2R1bGUuYworKysgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCkBAIC0zMCw3ICszMCw3IEBACiAKICNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IE1ENV9JTlQzMjsgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgUFlfTE9OR19MT05HIE1ENV9JTlQ2NDsgLyogNjQtYml0IGludGVnZXIgKi8KK3R5cGVkZWYgbG9uZyBsb25nIE1ENV9JTlQ2NDsgLyogNjQtYml0IGludGVnZXIgKi8KICNlbHNlCiAvKiBub3QgZGVmaW5lZC4gY29tcGlsYXRpb24gd2lsbCBkaWUuICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvbW1hcG1vZHVsZS5jIGIvTW9kdWxlcy9tbWFwbW9kdWxlLmMKaW5kZXggNGViOTI3NC4uNWYxNjE1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tbWFwbW9kdWxlLmMKQEAgLTkzLDcgKzkzLDcgQEAKICAgICBQeV9zc2l6ZV90ICBzaXplOwogICAgIFB5X3NzaXplX3QgIHBvczsgICAgLyogcmVsYXRpdmUgdG8gb2Zmc2V0ICovCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFBZX0xPTkdfTE9ORyBvZmZzZXQ7CisgICAgbG9uZyBsb25nIG9mZnNldDsKICNlbHNlCiAgICAgb2ZmX3QgICAgICAgb2Zmc2V0OwogI2VuZGlmCkBAIC0zOTcsOCArMzk3LDcgQEAKICAgICBtZW1jcHkoJnNlbGYtPmRhdGFbc2VsZi0+cG9zXSwgZGF0YS5idWYsIGRhdGEubGVuKTsKICAgICBzZWxmLT5wb3MgKz0gZGF0YS5sZW47CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YSk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoZGF0YS5sZW4pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDM0LDcgKzQzMyw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChzZWxmLT5maWxlX2hhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBEV09SRCBsb3csaGlnaDsKLSAgICAgICAgUFlfTE9OR19MT05HIHNpemU7CisgICAgICAgIGxvbmcgbG9uZyBzaXplOwogICAgICAgICBsb3cgPSBHZXRGaWxlU2l6ZShzZWxmLT5maWxlX2hhbmRsZSwgJmhpZ2gpOwogICAgICAgICBpZiAobG93ID09IElOVkFMSURfRklMRV9TSVpFKSB7CiAgICAgICAgICAgICAvKiBJdCBtaWdodCBiZSB0aGF0IHRoZSBmdW5jdGlvbiBhcHBlYXJzIHRvIGhhdmUgZmFpbGVkLApAQCAtNDQ1LDcgKzQ0NCw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKCFoaWdoICYmIGxvdyA8IExPTkdfTUFYKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylsb3cpOwotICAgICAgICBzaXplID0gKCgoUFlfTE9OR19MT05HKWhpZ2gpPDwzMikgKyBsb3c7CisgICAgICAgIHNpemUgPSAoKChsb25nIGxvbmcpaGlnaCk8PDMyKSArIGxvdzsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoc2l6ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5zaXplKTsKQEAgLTEyMjcsNyArMTIyNiw3IEBACiAKIC8qIEEgbm90ZSBvbiBzaXplcyBhbmQgb2Zmc2V0czogd2hpbGUgdGhlIGFjdHVhbCBtYXAgc2l6ZSBtdXN0IGhvbGQgaW4gYQogICAgUHlfc3NpemVfdCwgYm90aCB0aGUgdG90YWwgZmlsZSBzaXplIGFuZCB0aGUgc3RhcnQgb2Zmc2V0IGNhbiBiZSBsb25nZXIKLSAgIHRoYW4gYSBQeV9zc2l6ZV90LCBzbyB3ZSB1c2UgUFlfTE9OR19MT05HIHdoaWNoIGlzIGFsd2F5cyA2NC1iaXQuCisgICB0aGFuIGEgUHlfc3NpemVfdCwgc28gd2UgdXNlIGxvbmcgbG9uZyB3aGljaCBpcyBhbHdheXMgNjQtYml0LgogKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyMzUsNyArMTIzNCw3IEBACiB7CiAgICAgbW1hcF9vYmplY3QgKm1fb2JqOwogICAgIFB5X3NzaXplX3QgbWFwX3NpemU7Ci0gICAgUFlfTE9OR19MT05HIG9mZnNldCA9IDAsIHNpemU7CisgICAgbG9uZyBsb25nIG9mZnNldCA9IDAsIHNpemU7CiAgICAgRFdPUkQgb2ZmX2hpOyAgICAgICAvKiB1cHBlciAzMiBiaXRzIG9mIG9mZnNldCAqLwogICAgIERXT1JEIG9mZl9sbzsgICAgICAgLyogbG93ZXIgMzIgYml0cyBvZiBvZmZzZXQgKi8KICAgICBEV09SRCBzaXplX2hpOyAgICAgIC8qIHVwcGVyIDMyIGJpdHMgb2Ygc2l6ZSAqLwpAQCAtMTI5NiwxMCArMTI5NSw2IEBACiAgICAgICovCiAgICAgaWYgKGZpbGVubyAhPSAtMSAmJiBmaWxlbm8gIT0gMCkgewogICAgICAgICAvKiBFbnN1cmUgdGhhdCBmaWxlbm8gaXMgd2l0aGluIHRoZSBDUlQncyB2YWxpZCByYW5nZSAqLwotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmaWxlbm8pKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgICAgIGZoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8pOwogICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTM0OSw3ICsxMzQ0LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZHdFcnIpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzaXplID0gKCgoUFlfTE9OR19MT05HKSBoaWdoKSA8PCAzMikgKyBsb3c7CisgICAgICAgICAgICBzaXplID0gKCgobG9uZyBsb25nKSBoaWdoKSA8PCAzMikgKyBsb3c7CiAgICAgICAgICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgbW1hcCBhbiBlbXB0eSBmaWxlIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL25pc21vZHVsZS5jIGIvTW9kdWxlcy9uaXNtb2R1bGUuYwppbmRleCA2NGViNWRiLi5iNmE4NTVjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL25pc21vZHVsZS5jCisrKyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKQEAgLTc2LDExICs3Niw3IEBACiAKICAgICAqcGZpeCA9IDA7CiAgICAgZm9yIChpPTA7IGFsaWFzZXNbaV0uYWxpYXMgIT0gMEw7IGkrKykgewotICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5hbGlhcywgbWFwKSkgewotICAgICAgICAgICAgKnBmaXggPSBhbGlhc2VzW2ldLmZpeDsKLSAgICAgICAgICAgIHJldHVybiBhbGlhc2VzW2ldLm1hcDsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXN0cmNtcCAoYWxpYXNlc1tpXS5tYXAsIG1hcCkpIHsKKyAgICAgICAgaWYgKCFzdHJjbXAgKGFsaWFzZXNbaV0uYWxpYXMsIG1hcCkgfHwgIXN0cmNtcCAoYWxpYXNlc1tpXS5tYXAsIG1hcCkpIHsKICAgICAgICAgICAgICpwZml4ID0gYWxpYXNlc1tpXS5maXg7CiAgICAgICAgICAgICByZXR1cm4gYWxpYXNlc1tpXS5tYXA7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwppbmRleCBkMmZkNWM4Li40Nzk2MjAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKKysrIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCkBAIC0zMSw5ICszMSwxMyBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGxpbnV4L3NvdW5kY2FyZC5oPgorI2Vsc2UKICNpbmNsdWRlIDxzeXMvc291bmRjYXJkLmg+CisjZW5kaWYKIAotI2lmIGRlZmluZWQobGludXgpCisjaWZkZWYgX19saW51eF9fCiAKICNpZm5kZWYgSEFWRV9TVERJTlRfSAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIHVpbnQzMl90OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9vdmVybGFwcGVkLmMgYi9Nb2R1bGVzL292ZXJsYXBwZWQuYwppbmRleCBmODVlNWJjLi4wYWE4NjU3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL292ZXJsYXBwZWQuYworKysgYi9Nb2R1bGVzL292ZXJsYXBwZWQuYwpAQCAtOTczLDI4ICs5NzMsMjggQEAKIHN0YXRpYyBpbnQKIHBhcnNlX2FkZHJlc3MoUHlPYmplY3QgKm9iaiwgU09DS0FERFIgKkFkZHJlc3MsIGludCBMZW5ndGgpCiB7Ci0gICAgY2hhciAqSG9zdDsKKyAgICBQeV9VTklDT0RFICpIb3N0OwogICAgIHVuc2lnbmVkIHNob3J0IFBvcnQ7CiAgICAgdW5zaWduZWQgbG9uZyBGbG93SW5mbzsKICAgICB1bnNpZ25lZCBsb25nIFNjb3BlSWQ7CiAKICAgICBtZW1zZXQoQWRkcmVzcywgMCwgTGVuZ3RoKTsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKG9iaiwgInNIIiwgJkhvc3QsICZQb3J0KSkKKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJ1SCIsICZIb3N0LCAmUG9ydCkpCiAgICAgewogICAgICAgICBBZGRyZXNzLT5zYV9mYW1pbHkgPSBBRl9JTkVUOwotICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzQShIb3N0LCBBRl9JTkVULCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKKyAgICAgICAgaWYgKFdTQVN0cmluZ1RvQWRkcmVzc1coSG9zdCwgQUZfSU5FVCwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICBTZXRGcm9tV2luZG93c0VycihXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgKChTT0NLQUREUl9JTiopQWRkcmVzcyktPnNpbl9wb3J0ID0gaHRvbnMoUG9ydCk7CiAgICAgICAgIHJldHVybiBMZW5ndGg7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5QXJnX1BhcnNlVHVwbGUob2JqLCAic0hrayIsICZIb3N0LCAmUG9ydCwgJkZsb3dJbmZvLCAmU2NvcGVJZCkpCisgICAgZWxzZSBpZiAoUHlBcmdfUGFyc2VUdXBsZShvYmosICJ1SGtrIiwgJkhvc3QsICZQb3J0LCAmRmxvd0luZm8sICZTY29wZUlkKSkKICAgICB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIEFkZHJlc3MtPnNhX2ZhbWlseSA9IEFGX0lORVQ2OwotICAgICAgICBpZiAoV1NBU3RyaW5nVG9BZGRyZXNzQShIb3N0LCBBRl9JTkVUNiwgTlVMTCwgQWRkcmVzcywgJkxlbmd0aCkgPCAwKSB7CisgICAgICAgIGlmIChXU0FTdHJpbmdUb0FkZHJlc3NXKEhvc3QsIEFGX0lORVQ2LCBOVUxMLCBBZGRyZXNzLCAmTGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIFNldEZyb21XaW5kb3dzRXJyKFdTQUdldExhc3RFcnJvcigpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKaW5kZXggNjQ3MWI4ZS4uODI3NzBhNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCkBAIC01Myw3ICs1Myw3IEBACiAvKiAgU3RyaW5nIGNvbnN0YW50cyB1c2VkIHRvIGluaXRpYWxpemUgbW9kdWxlIGF0dHJpYnV0ZXMuCiAgKgogICovCi1zdGF0aWMgY2hhciBwYXJzZXJfY29weXJpZ2h0X3N0cmluZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHBhcnNlcl9jb3B5cmlnaHRfc3RyaW5nW10gPQogIkNvcHlyaWdodCAxOTk1LTE5OTYgYnkgVmlyZ2luaWEgUG9seXRlY2huaWMgSW5zdGl0dXRlICYgU3RhdGVcblwKIFVuaXZlcnNpdHksIEJsYWNrc2J1cmcsIFZpcmdpbmlhLCBVU0EsIGFuZCBGcmVkIEwuIERyYWtlLCBKci4sIFJlc3RvbixcblwKIFZpcmdpbmlhLCBVU0EuICBQb3J0aW9ucyBjb3B5cmlnaHQgMTk5MS0xOTk1IGJ5IFN0aWNodGluZyBNYXRoZW1hdGlzY2hcblwKQEAgLTYzLDcgKzYzLDcgQEAKIFB5RG9jX1NUUlZBUihwYXJzZXJfZG9jX3N0cmluZywKICJUaGlzIGlzIGFuIGludGVyZmFjZSB0byBQeXRob24ncyBpbnRlcm5hbCBwYXJzZXIuIik7CiAKLXN0YXRpYyBjaGFyIHBhcnNlcl92ZXJzaW9uX3N0cmluZ1tdID0gIjAuNSI7CitzdGF0aWMgY29uc3QgY2hhciBwYXJzZXJfdmVyc2lvbl9zdHJpbmdbXSA9ICIwLjUiOwogCiAKIHR5cGVkZWYgUHlPYmplY3QqICgqU2VxTWFrZXIpIChQeV9zc2l6ZV90IGxlbmd0aCk7CkBAIC01NzgsMTMgKzU3OCwxMyBAQAogfQogCiAKLS8qICBlcnJfc3RyaW5nKGNoYXIqIG1lc3NhZ2UpCisvKiAgZXJyX3N0cmluZyhjb25zdCBjaGFyKiBtZXNzYWdlKQogICoKICAqICBTZXRzIHRoZSBlcnJvciBzdHJpbmcgZm9yIGFuIGV4Y2VwdGlvbiBvZiB0eXBlIFBhcnNlckVycm9yLgogICoKICAqLwogc3RhdGljIHZvaWQKLWVycl9zdHJpbmcoY2hhciAqbWVzc2FnZSkKK2Vycl9zdHJpbmcoY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKICAgICBQeUVycl9TZXRTdHJpbmcocGFyc2VyX2Vycm9yLCBtZXNzYWdlKTsKIH0KQEAgLTU5Nyw3ICs1OTcsNyBAQAogICoKICAqLwogc3RhdGljIFB5T2JqZWN0KgotcGFyc2VyX2RvX3BhcnNlKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNoYXIgKmFyZ3NwZWMsIGludCB0eXBlKQorcGFyc2VyX2RvX3BhcnNlKFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3csIGNvbnN0IGNoYXIgKmFyZ3NwZWMsIGludCB0eXBlKQogewogICAgIGNoYXIqICAgICBzdHJpbmcgPSAwOwogICAgIFB5T2JqZWN0KiByZXMgICAgPSAwOwpAQCAtNjcwLDkgKzY3MCw3NSBAQAogCiAKIHN0YXRpYyBub2RlKiBidWlsZF9ub2RlX3RyZWUoUHlPYmplY3QgKnR1cGxlKTsKLXN0YXRpYyBpbnQgICB2YWxpZGF0ZV9leHByX3RyZWUobm9kZSAqdHJlZSk7Ci1zdGF0aWMgaW50ICAgdmFsaWRhdGVfZmlsZV9pbnB1dChub2RlICp0cmVlKTsKLXN0YXRpYyBpbnQgICB2YWxpZGF0ZV9lbmNvZGluZ19kZWNsKG5vZGUgKnRyZWUpOworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9ub2RlKG5vZGUgKnRyZWUpCit7CisgICAgaW50IHR5cGUgPSBUWVBFKHRyZWUpOworICAgIGludCBuY2ggPSBOQ0godHJlZSk7CisgICAgZGZhICpudF9kZmE7CisgICAgc3RhdGUgKmRmYV9zdGF0ZTsKKyAgICBpbnQgcG9zLCBhcmM7CisKKyAgICBhc3NlcnQoSVNOT05URVJNSU5BTCh0eXBlKSk7CisgICAgdHlwZSAtPSBOVF9PRkZTRVQ7CisgICAgaWYgKHR5cGUgPj0gX1B5UGFyc2VyX0dyYW1tYXIuZ19uZGZhcykgeworICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiVW5yZWNvZ25pemVkIG5vZGUgdHlwZSAlZC4iLCBUWVBFKHRyZWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIG50X2RmYSA9ICZfUHlQYXJzZXJfR3JhbW1hci5nX2RmYVt0eXBlXTsKKyAgICBSRVEodHJlZSwgbnRfZGZhLT5kX3R5cGUpOworCisgICAgLyogUnVuIHRoZSBERkEgZm9yIHRoaXMgbm9udGVybWluYWwuICovCisgICAgZGZhX3N0YXRlID0gJm50X2RmYS0+ZF9zdGF0ZVtudF9kZmEtPmRfaW5pdGlhbF07CisgICAgZm9yIChwb3MgPSAwOyBwb3MgPCBuY2g7ICsrcG9zKSB7CisgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQodHJlZSwgcG9zKTsKKyAgICAgICAgaW50IGNoX3R5cGUgPSBUWVBFKGNoKTsKKyAgICAgICAgZm9yIChhcmMgPSAwOyBhcmMgPCBkZmFfc3RhdGUtPnNfbmFyY3M7ICsrYXJjKSB7CisgICAgICAgICAgICBzaG9ydCBhX2xhYmVsID0gZGZhX3N0YXRlLT5zX2FyY1thcmNdLmFfbGJsOworICAgICAgICAgICAgYXNzZXJ0KGFfbGFiZWwgPCBfUHlQYXJzZXJfR3JhbW1hci5nX2xsLmxsX25sYWJlbHMpOworICAgICAgICAgICAgaWYgKF9QeVBhcnNlcl9HcmFtbWFyLmdfbGwubGxfbGFiZWxbYV9sYWJlbF0ubGJfdHlwZSA9PSBjaF90eXBlKSB7CisgICAgIAkgICAgICAgIC8qIFRoZSBjaGlsZCBpcyBhY2NlcHRhYmxlOyBpZiBub24tdGVybWluYWwsIHZhbGlkYXRlIGl0IHJlY3Vyc2l2ZWx5LiAqLworICAgICAgICAgICAgICAgIGlmIChJU05PTlRFUk1JTkFMKGNoX3R5cGUpICYmICF2YWxpZGF0ZV9ub2RlKGNoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgICAgICAvKiBVcGRhdGUgdGhlIHN0YXRlLCBhbmQgbW92ZSBvbiB0byB0aGUgbmV4dCBjaGlsZC4gKi8KKyAgICAgICAgICAgICAgICBkZmFfc3RhdGUgPSAmbnRfZGZhLT5kX3N0YXRlW2RmYV9zdGF0ZS0+c19hcmNbYXJjXS5hX2Fycm93XTsKKyAgICAgICAgICAgICAgICBnb3RvIGFyY19mb3VuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBXaGF0IHdvdWxkIHRoaXMgc3RhdGUgaGF2ZSBhY2NlcHRlZD8gKi8KKyAgICAgICAgeworICAgICAgICAgICAgc2hvcnQgYV9sYWJlbCA9IGRmYV9zdGF0ZS0+c19hcmMtPmFfbGJsOworICAgICAgICAgICAgaW50IG5leHRfdHlwZTsKKyAgICAgICAgICAgIGlmICghYV9sYWJlbCkgLyogV291bGRuJ3QgYWNjZXB0IGFueSBtb3JlIGNoaWxkcmVuICovCisgICAgICAgICAgICAgICAgZ290byBpbGxlZ2FsX251bV9jaGlsZHJlbjsKKworICAgICAgICAgICAgbmV4dF90eXBlID0gX1B5UGFyc2VyX0dyYW1tYXIuZ19sbC5sbF9sYWJlbFthX2xhYmVsXS5sYl90eXBlOworICAgICAgICAgICAgaWYgKElTTk9OVEVSTUlOQUwobmV4dF90eXBlKSkKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiRXhwZWN0ZWQgbm9kZSB0eXBlICVkLCBnb3QgJWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF90eXBlLCBjaF90eXBlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiSWxsZWdhbCB0ZXJtaW5hbDogZXhwZWN0ZWQgJXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5UGFyc2VyX1Rva2VuTmFtZXNbbmV4dF90eXBlXSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCithcmNfZm91bmQ6CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICAvKiBBcmUgd2UgaW4gYSBmaW5hbCBzdGF0ZT8gSWYgc28sIHJldHVybiAxIGZvciBzdWNjZXNzZnVsIHZhbGlkYXRpb24uICovCisgICAgZm9yIChhcmMgPSAwOyBhcmMgPCBkZmFfc3RhdGUtPnNfbmFyY3M7ICsrYXJjKSB7CisgICAgICAgIGlmICghZGZhX3N0YXRlLT5zX2FyY1thcmNdLmFfbGJsKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworaWxsZWdhbF9udW1fY2hpbGRyZW46CisgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKKyAgICAgICAgICAgICAgICAgIklsbGVnYWwgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciAlcyBub2RlLiIsIG50X2RmYS0+ZF9uYW1lKTsKKyAgICByZXR1cm4gMDsKK30KIAogLyogIFB5T2JqZWN0KiBwYXJzZXJfdHVwbGUyc3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogICoKQEAgLTY4MSw3ICs3NDcsNyBAQAogICogIHR1cGxlIGNhbiBiZSB2YWxpZGF0ZWQuICBJdCBkb2VzIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGZpcnN0IGNvZGUgb2YgdGhlCiAgKiAgdHVwbGUsIGFuZCwgaWYgYWNjZXB0YWJsZSwgYnVpbGRzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbi4gIElmIHRoaXMKICAqICBzdGVwIHN1Y2NlZWRzLCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gaXMgdmFsaWRhdGVkIGFzIGZ1bGx5IGFzCi0gKiAgcG9zc2libGUgd2l0aCB0aGUgdmFyaW91cyB2YWxpZGF0ZV8qKCkgcm91dGluZXMgZGVmaW5lZCBiZWxvdy4KKyAqICBwb3NzaWJsZSB3aXRoIHRoZSByZWN1cnNpdmUgdmFsaWRhdGVfbm9kZSgpIHJvdXRpbmUgZGVmaW5lZCBhYm92ZS4KICAqCiAgKiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNoYW5nZWQgaWYgc3VwcG9ydCBpcyB0byBiZSBhZGRlZCBmb3IgUHlTVF9GUkFHTUVOVAogICogIFNUIG9iamVjdHMuCkBAIC03MTAsMzMgKzc3NiwzNSBAQAogICAgICAqLwogICAgIHRyZWUgPSBidWlsZF9ub2RlX3RyZWUodHVwbGUpOwogICAgIGlmICh0cmVlICE9IDApIHsKLSAgICAgICAgaW50IHN0YXJ0X3N5bSA9IFRZUEUodHJlZSk7Ci0gICAgICAgIGlmIChzdGFydF9zeW0gPT0gZXZhbF9pbnB1dCkgeworICAgICAgICBub2RlICp2YWxpZGF0aW9uX3Jvb3QgPSB0cmVlOworICAgICAgICBpbnQgdHJlZV90eXBlID0gMDsKKyAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7CisgICAgICAgIGNhc2UgZXZhbF9pbnB1dDoKICAgICAgICAgICAgIC8qICBNaWdodCBiZSBhbiBldmFsIGZvcm0uICAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2V4cHJfdHJlZSh0cmVlKSkKLSAgICAgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCBQeVNUX0VYUFIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN0YXJ0X3N5bSA9PSBmaWxlX2lucHV0KSB7Ci0gICAgICAgICAgICAvKiAgVGhpcyBsb29rcyBsaWtlIGFuIGV4ZWMgZm9ybSBzbyBmYXIuICAqLwotICAgICAgICAgICAgaWYgKHZhbGlkYXRlX2ZpbGVfaW5wdXQodHJlZSkpCi0gICAgICAgICAgICAgICAgc3QgPSBwYXJzZXJfbmV3c3RvYmplY3QodHJlZSwgUHlTVF9TVUlURSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUHlOb2RlX0ZyZWUodHJlZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3RhcnRfc3ltID09IGVuY29kaW5nX2RlY2wpIHsKKyAgICAgICAgICAgIHRyZWVfdHlwZSA9IFB5U1RfRVhQUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGVuY29kaW5nX2RlY2w6CiAgICAgICAgICAgICAvKiBUaGlzIGxvb2tzIGxpa2UgYW4gZW5jb2RpbmdfZGVjbCBzbyBmYXIuICovCi0gICAgICAgICAgICBpZiAodmFsaWRhdGVfZW5jb2RpbmdfZGVjbCh0cmVlKSkKLSAgICAgICAgICAgICAgICBzdCA9IHBhcnNlcl9uZXdzdG9iamVjdCh0cmVlLCBQeVNUX1NVSVRFKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChOQ0godHJlZSkgIT0gMSkKKyAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJFcnJvciBQYXJzaW5nIGVuY29kaW5nX2RlY2wiKTsKKyAgICAgICAgICAgIHZhbGlkYXRpb25fcm9vdCA9IENISUxEKHRyZWUsIDApOworICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovCisgICAgICAgIGNhc2UgZmlsZV9pbnB1dDoKKyAgICAgICAgICAgIC8qICBUaGlzIGxvb2tzIGxpa2UgYW4gZXhlYyBmb3JtIHNvIGZhci4gICovCisKKyAgICAgICAgICAgIHRyZWVfdHlwZSA9IFB5U1RfU1VJVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8qICBUaGlzIGlzIGEgZnJhZ21lbnQsIGF0IGJlc3QuICovCiAgICAgICAgICAgICBQeU5vZGVfRnJlZSh0cmVlKTsKICAgICAgICAgICAgIGVycl9zdHJpbmcoInBhcnNlIHRyZWUgZG9lcyBub3QgdXNlIGEgdmFsaWQgc3RhcnQgc3ltYm9sIik7CisgICAgICAgICAgICByZXR1cm4gKDApOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKHZhbGlkYXRlX25vZGUodmFsaWRhdGlvbl9yb290KSkKKyAgICAgICAgICAgIHN0ID0gcGFyc2VyX25ld3N0b2JqZWN0KHRyZWUsIHRyZWVfdHlwZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5Tm9kZV9GcmVlKHRyZWUpOwogICAgIH0KICAgICAvKiAgTWFrZSBzdXJlIHdlIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBhbGwgZXJyb3JzLiAgV2Ugc2hvdWxkIG5ldmVyCiAgICAgICogIGdldCB0aGlzLCBidXQgd2UnZCBkbyB3ZWxsIHRvIGJlIHN1cmUgc29tZXRoaW5nIGlzIGRvbmUuCkBAIC05ODEsMjQzMyArMTA0OSw2IEBACiB9CiAKIAotLyoKLSAqICBWYWxpZGF0aW9uIHJvdXRpbmVzIHVzZWQgd2l0aGluIHRoZSB2YWxpZGF0aW9uIHNlY3Rpb246Ci0gKi8KLXN0YXRpYyBpbnQgdmFsaWRhdGVfdGVybWluYWwobm9kZSAqdGVybWluYWwsIGludCB0eXBlLCBjaGFyICpzdHJpbmcpOwotCi0jZGVmaW5lIHZhbGlkYXRlX2FtcGVyc2FuZChjaCkgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIEFNUEVSLCAiJiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NpcmN1bWZsZXgoY2gpIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCBDSVJDVU1GTEVYLCAiXiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NvbG9uKGNoKSAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIENPTE9OLCAiOiIpCi0jZGVmaW5lIHZhbGlkYXRlX2NvbW1hKGNoKSAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgIENPTU1BLCAiLCIpCi0jZGVmaW5lIHZhbGlkYXRlX2RlZGVudChjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgREVERU5ULCAiIikKLSNkZWZpbmUgdmFsaWRhdGVfZXF1YWwoY2gpICAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgRVFVQUwsICI9IikKLSNkZWZpbmUgdmFsaWRhdGVfaW5kZW50KGNoKSAgICAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICBJTkRFTlQsIChjaGFyKilOVUxMKQotI2RlZmluZSB2YWxpZGF0ZV9scGFyZW4oY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgTFBBUiwgIigiKQotI2RlZmluZSB2YWxpZGF0ZV9uZXdsaW5lKGNoKSAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgTkVXTElORSwgKGNoYXIqKU5VTEwpCi0jZGVmaW5lIHZhbGlkYXRlX3JwYXJlbihjaCkgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBSUEFSLCAiKSIpCi0jZGVmaW5lIHZhbGlkYXRlX3NlbWkoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBTRU1JLCAiOyIpCi0jZGVmaW5lIHZhbGlkYXRlX3N0YXIoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBTVEFSLCAiKiIpCi0jZGVmaW5lIHZhbGlkYXRlX3ZiYXIoY2gpICAgICAgIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCAgICAgICBWQkFSLCAifCIpCi0jZGVmaW5lIHZhbGlkYXRlX2RvdWJsZXN0YXIoY2gpIHZhbGlkYXRlX3Rlcm1pbmFsKGNoLCBET1VCTEVTVEFSLCAiKioiKQotI2RlZmluZSB2YWxpZGF0ZV9kb3QoY2gpICAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgIERPVCwgIi4iKQotI2RlZmluZSB2YWxpZGF0ZV9hdChjaCkgICAgICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgICAgICBBVCwgIkAiKQotI2RlZmluZSB2YWxpZGF0ZV9yYXJyb3coY2gpICAgICB2YWxpZGF0ZV90ZXJtaW5hbChjaCwgICAgIFJBUlJPVywgIi0+IikKLSNkZWZpbmUgdmFsaWRhdGVfbmFtZShjaCwgc3RyKSAgdmFsaWRhdGVfdGVybWluYWwoY2gsICAgICAgIE5BTUUsIHN0cikKLQotI2RlZmluZSBWQUxJREFURVIobikgICAgc3RhdGljIGludCB2YWxpZGF0ZV8jI24obm9kZSAqdHJlZSkKLQotVkFMSURBVEVSKG5vZGUpOyAgICAgICAgICAgICAgICBWQUxJREFURVIoc21hbGxfc3RtdCk7Ci1WQUxJREFURVIoY2xhc3MpOyAgICAgICAgICAgICAgIFZBTElEQVRFUihub2RlKTsKLVZBTElEQVRFUihwYXJhbWV0ZXJzKTsgICAgICAgICAgVkFMSURBVEVSKHN1aXRlKTsKLVZBTElEQVRFUih0ZXN0bGlzdCk7ICAgICAgICAgICAgVkFMSURBVEVSKHZhcmFyZ3NsaXN0KTsKLVZBTElEQVRFUih2ZnBkZWYpOwotVkFMSURBVEVSKHN0bXQpOyAgICAgICAgICAgICAgICBWQUxJREFURVIoc2ltcGxlX3N0bXQpOwotVkFMSURBVEVSKGV4cHJfc3RtdCk7ICAgICAgICAgICBWQUxJREFURVIocG93ZXIpOwotVkFMSURBVEVSKGRlbF9zdG10KTsKLVZBTElEQVRFUihyZXR1cm5fc3RtdCk7ICAgICAgICAgVkFMSURBVEVSKHJhaXNlX3N0bXQpOwotVkFMSURBVEVSKGltcG9ydF9zdG10KTsgICAgICAgICBWQUxJREFURVIoaW1wb3J0X3N0bXQpOwotVkFMSURBVEVSKGltcG9ydF9uYW1lKTsgICAgICAgICBWQUxJREFURVIoeWllbGRfc3RtdCk7Ci1WQUxJREFURVIoZ2xvYmFsX3N0bXQpOyAgICAgICAgIFZBTElEQVRFUihub25sb2NhbF9zdG10KTsKLVZBTElEQVRFUihhc3NlcnRfc3RtdCk7Ci1WQUxJREFURVIoY29tcG91bmRfc3RtdCk7ICAgICAgIFZBTElEQVRFUih0ZXN0X29yX3N0YXJfZXhwcik7Ci1WQUxJREFURVIod2hpbGUpOyAgICAgICAgICAgICAgIFZBTElEQVRFUihmb3IpOwotVkFMSURBVEVSKHRyeSk7ICAgICAgICAgICAgICAgICBWQUxJREFURVIoZXhjZXB0X2NsYXVzZSk7Ci1WQUxJREFURVIodGVzdCk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihhbmRfdGVzdCk7Ci1WQUxJREFURVIobm90X3Rlc3QpOyAgICAgICAgICAgIFZBTElEQVRFUihjb21wYXJpc29uKTsKLVZBTElEQVRFUihjb21wX29wKTsKLVZBTElEQVRFUihzdGFyX2V4cHIpOyAgICAgICAgICAgVkFMSURBVEVSKGV4cHIpOwotVkFMSURBVEVSKHhvcl9leHByKTsgICAgICAgICAgICBWQUxJREFURVIoYW5kX2V4cHIpOwotVkFMSURBVEVSKHNoaWZ0X2V4cHIpOyAgICAgICAgICBWQUxJREFURVIoYXJpdGhfZXhwcik7Ci1WQUxJREFURVIodGVybSk7ICAgICAgICAgICAgICAgIFZBTElEQVRFUihmYWN0b3IpOwotVkFMSURBVEVSKGF0b20pOyAgICAgICAgICAgICAgICBWQUxJREFURVIobGFtYmRlZik7Ci1WQUxJREFURVIodHJhaWxlcik7ICAgICAgICAgICAgIFZBTElEQVRFUihzdWJzY3JpcHQpOwotVkFMSURBVEVSKHN1YnNjcmlwdGxpc3QpOyAgICAgICBWQUxJREFURVIoc2xpY2VvcCk7Ci1WQUxJREFURVIoZXhwcmxpc3QpOyAgICAgICAgICAgIFZBTElEQVRFUihkaWN0b3JzZXRtYWtlcik7Ci1WQUxJREFURVIoYXJnbGlzdCk7ICAgICAgICAgICAgIFZBTElEQVRFUihhcmd1bWVudCk7Ci1WQUxJREFURVIoY29tcF9mb3IpOwotVkFMSURBVEVSKGNvbXBfaXRlcik7ICAgICAgICAgICBWQUxJREFURVIoY29tcF9pZik7Ci1WQUxJREFURVIodGVzdGxpc3RfY29tcCk7ICAgICAgIFZBTElEQVRFUih5aWVsZF9leHByKTsKLVZBTElEQVRFUihvcl90ZXN0KTsKLVZBTElEQVRFUih0ZXN0X25vY29uZCk7ICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWZfbm9jb25kKTsKLVZBTElEQVRFUih5aWVsZF9hcmcpOwotVkFMSURBVEVSKGFzeW5jX2Z1bmNkZWYpOyAgICAgICBWQUxJREFURVIoYXN5bmNfc3RtdCk7Ci1WQUxJREFURVIoYXRvbV9leHByKTsKLQotI3VuZGVmIFZBTElEQVRFUgotCi0jZGVmaW5lIGlzX2V2ZW4obikgICAgICAoKChuKSAmIDEpID09IDApCi0jZGVmaW5lIGlzX29kZChuKSAgICAgICAoKChuKSAmIDEpID09IDEpCi0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbnR5cGUobm9kZSAqbiwgaW50IHQpCi17Ci0gICAgaWYgKFRZUEUobikgIT0gdCkgewotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLCAiRXhwZWN0ZWQgbm9kZSB0eXBlICVkLCBnb3QgJWQuIiwKLSAgICAgICAgICAgICAgICAgICAgIHQsIFRZUEUobikpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLQotLyogIFZlcmlmaWVzIHRoYXQgdGhlIG51bWJlciBvZiBjaGlsZCBub2RlcyBpcyBleGFjdGx5ICdudW0nLCByYWlzaW5nCi0gKiAgYW4gZXhjZXB0aW9uIGlmIGl0IGlzbid0LiAgVGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGRvZXMgbm90IGluZGljYXRlCi0gKiAgdGhlIGV4YWN0IG51bWJlciBvZiBub2RlcywgYWxsb3dpbmcgdGhpcyB0byBiZSB1c2VkIHRvIHJhaXNlIHRoZQotICogICJyaWdodCIgZXhjZXB0aW9uIHdoZW4gdGhlIHdyb25nIG51bWJlciBvZiBub2RlcyBpcyBwcmVzZW50IGluIGEKLSAqICBzcGVjaWZpYyB2YXJpYW50IG9mIGEgc3RhdGVtZW50J3Mgc3ludGF4LiAgVGhpcyBpcyBjb21tb25seSB1c2VkCi0gKiAgaW4gdGhhdCBmYXNoaW9uLgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9udW1ub2Rlcyhub2RlICpuLCBpbnQgbnVtLCBjb25zdCBjaGFyICpjb25zdCBuYW1lKQotewotICAgIGlmIChOQ0gobikgIT0gbnVtKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yICVzIG5vZGUuIiwgbmFtZSk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXJtaW5hbChub2RlICp0ZXJtaW5hbCwgaW50IHR5cGUsIGNoYXIgKnN0cmluZykKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRlcm1pbmFsLCB0eXBlKQotICAgICAgICAgICAgICAgJiYgKChzdHJpbmcgPT0gMCkgfHwgKHN0cmNtcChzdHJpbmcsIFNUUih0ZXJtaW5hbCkpID09IDApKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgdGVybWluYWw6IGV4cGVjdGVkIFwiJXNcIiIsIHN0cmluZyk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotLyogIFggKCcsJyBYKSBbJywnXSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUobm9kZSAqdHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0X25vZGVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnZhbGlkYXRlX2NoaWxkX2Z1bmNfaW5jKShub2RlICosIGludCAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbGlzdF9ub2RlX3R5cGVfbmFtZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAobmNoICYmIHZhbGlkYXRlX250eXBlKHRyZWUsIGxpc3Rfbm9kZV90eXBlKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAvKiBVbmNvbmRpdGlvbmFsbHkgcmFpc2UuICovCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCBsaXN0X25vZGVfdHlwZV9uYW1lKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoIDsgcmVzICYmICpwb3MgPCBuY2g7ICkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2hpbGRfZnVuY19pbmModHJlZSwgcG9zKTsKLSAgICAgICAgICAgIGlmICghcmVzIHx8ICpwb3MgPj0gbmNoKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgKCpwb3MpKyspKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgWCAoJywnIFgpIFsnLCddICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdChub2RlICp0cmVlLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpc3Rfbm9kZV90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ICgqdmFsaWRhdGVfY2hpbGRfZnVuYykobm9kZSAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IGxpc3Rfbm9kZV90eXBlX25hbWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKG5jaCAmJiB2YWxpZGF0ZV9udHlwZSh0cmVlLCBsaXN0X25vZGVfdHlwZSkpOwotICAgIGludCBwb3MgPSAwOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgLyogVW5jb25kaXRpb25hbGx5IHJhaXNlLiAqLwotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgbGlzdF9ub2RlX3R5cGVfbmFtZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmb3IgKCA7IHJlcyAmJiBwb3MgPCBuY2g7ICkgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY2hpbGRfZnVuYyhDSElMRCh0cmVlLCBwb3MrKykpOwotICAgICAgICAgICAgaWYgKCFyZXMgfHwgcG9zID49IG5jaCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIHBvcysrKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiAgdmFsaWRhdGVfY2xhc3MoKQotICoKLSAqICBjbGFzc2RlZjoKLSAqICAgICAgJ2NsYXNzJyBOQU1FIFsnKCcgdGVzdGxpc3QgJyknXSAnOicgc3VpdGUKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY2xhc3Mobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgY2xhc3NkZWYpICYmCi0gICAgICAgICAgICAgICAgKChuY2ggPT0gNCkgfHwgKG5jaCA9PSA2KSB8fCAobmNoID09IDcpKSk7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiY2xhc3MiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgImNsYXNzIik7Ci0gICAgfQotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDcpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAoKHZhbGlkYXRlX2xwYXJlbihDSElMRCh0cmVlLCAyKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2FyZ2xpc3QoQ0hJTEQodHJlZSwgMykpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgNCkpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDYpIHsKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsMikpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwzKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgaWZfc3RtdDoKLSAqICAgICAgJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2lmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGlmX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDQpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiaWYiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIGlmIChyZXMgJiYgKChuY2ggJSA0KSA9PSAzKSkgewotICAgICAgICAvKiAgLi4uICdlbHNlJyAnOicgc3VpdGUgICovCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIG5jaCAtIDMpLCAiZWxzZSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgICAgIG5jaCAtPSAzOwotICAgIH0KLSAgICBlbHNlIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgImlmIik7Ci0gICAgaWYgKChuY2ggJSA0KSAhPSAwKQotICAgICAgICAvKiBXaWxsIGNhdGNoIHRoZSBjYXNlIGZvciBuY2ggPCA0ICovCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDAsICJpZiIpOwotICAgIGVsc2UgaWYgKHJlcyAmJiAobmNoID4gNCkpIHsKLSAgICAgICAgLyogIC4uLiAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSsgLi4uICAqLwotICAgICAgICBpbnQgaiA9IDQ7Ci0gICAgICAgIHdoaWxlICgoaiA8IG5jaCkgJiYgcmVzKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBqKSwgImVsaWYiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIGogKyAyKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGogKyAxKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBqICsgMykpKTsKLSAgICAgICAgICAgIGogKz0gNDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHBhcmFtZXRlcnM6Ci0gKiAgICAgICcoJyBbdmFyYXJnc2xpc3RdICcpJwotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcGFyYW1ldGVycyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHBhcmFtZXRlcnMpICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gMykpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAicGFyYW1ldGVycyIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHZhbGlkYXRlX3N1aXRlKCkKLSAqCi0gKiAgc3VpdGU6Ci0gKiAgICAgIHNpbXBsZV9zdG10Ci0gKiAgICB8IE5FV0xJTkUgSU5ERU5UIHN0bXQrIERFREVOVAotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdWl0ZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBzdWl0ZSkgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA+PSA0KSkpOwotCi0gICAgaWYgKHJlcyAmJiAobmNoID09IDEpKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaW1wbGVfc3RtdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIC8qICBORVdMSU5FIElOREVOVCBzdG10KyBERURFTlQgICovCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfaW5kZW50KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3RtdChDSElMRCh0cmVlLCAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RlZGVudChDSElMRCh0cmVlLCBuY2ggLSAxKSkpOwotCi0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA+IDQpKSB7Ci0gICAgICAgICAgICBpbnQgaSA9IDM7Ci0gICAgICAgICAgICAtLW5jaDsgICAgICAgICAgICAgICAgICAgICAgLyogZm9yZ2V0IHRoZSBERURFTlQgICAgICovCi0gICAgICAgICAgICBmb3IgKCA7IHJlcyAmJiAoaSA8IG5jaCk7ICsraSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10KENISUxEKHRyZWUsIGkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuY2ggPCA0KQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNCwgInN1aXRlIik7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0bGlzdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwgdGVzdGxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0LCAidGVzdGxpc3QiKSk7Ci19Ci0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3Rlc3RsaXN0X3N0YXJfZXhwcihub2RlICp0bCkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRsLCB0ZXN0bGlzdF9zdGFyX2V4cHIsIHZhbGlkYXRlX3Rlc3Rfb3Jfc3Rhcl9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3RsaXN0IikpOwotfQotCi0KLS8qIHZhbGlkYXRlIGVpdGhlciB2ZnBkZWYgb3IgdGZwZGVmLgotICogdmZwZGVmOiBOQU1FCi0gKiB0ZnBkZWY6IE5BTUUgWyc6JyB0ZXN0XQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV92ZnBkZWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGlmIChUWVBFKHRyZWUpID09IHZmcGRlZikgewotICAgICAgICByZXR1cm4gbmNoID09IDEgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKFRZUEUodHJlZSkgPT0gdGZwZGVmKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKSB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkgJiYKLSAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCAxKSkgJiYKLSAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDIpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotLyogJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnICcqKicgdmZwZGVmXSB8ICcqKicgdmZwZGVmCi0gKiAuLm9yIHRmcGRlZiBpbiBwbGFjZSBvZiB2ZnBkZWYuIHZmcGRlZjogTkFNRTsgdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdmFyYXJnc2xpc3RfdHJhaWxlcihub2RlICp0cmVlLCBpbnQgc3RhcnQpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gMDsKLQotICAgIGlmIChuY2ggPD0gc3RhcnQpIHsKLSAgICAgICAgZXJyX3N0cmluZygiZXhwZWN0ZWQgdmFyaWFibGUgYXJndW1lbnQgdHJhaWxlciBmb3IgdmFyYXJnc2xpc3QiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gU1RBUikgewotICAgICAgICAvKgotICAgICAgICAgKiAnKicgW3ZmcGRlZl0KLSAgICAgICAgICovCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0YXIoQ0hJTEQodHJlZSwgc3RhcnQrKykpOwotICAgICAgICBpZiAocmVzICYmIHN0YXJ0IDwgbmNoICYmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gdmZwZGVmIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSB0ZnBkZWYpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmZwZGVmKENISUxEKHRyZWUsIHN0YXJ0KyspKTsKLSAgICAgICAgLyoKLSAgICAgICAgICogKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqCi0gICAgICAgICAqLwotICAgICAgICB3aGlsZSAocmVzICYmIHN0YXJ0ICsgMSA8IG5jaCAmJiAoCi0gICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCBzdGFydCArIDEpKSA9PSB2ZnBkZWYgfHwKLSAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIHN0YXJ0ICsgMSkpID09IHRmcGRlZikpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92ZnBkZWYoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgc3RhcnQgKyAxIDwgbmNoICYmIFRZUEUoQ0hJTEQodHJlZSwgc3RhcnQpKSA9PSBFUVVBTCkKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgc3RhcnQrKykpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgc3RhcnQrKykpKTsKLSAgICAgICAgfQotICAgICAgICAvKgotICAgICAgICAgKiBbJywnICcqKicgdmZwZGVmXQotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHJlcyAmJiBzdGFydCArIDIgPCBuY2ggJiYgVFlQRShDSElMRCh0cmVlLCBzdGFydCsxKSkgPT0gRE9VQkxFU1RBUikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBzdGFydCsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSkpOwotICAgIH0KLSAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIHN0YXJ0KSkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAvKgotICAgICAgICAgKiAnKionIHZmcGRlZgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHN0YXJ0ICsgMSA8IG5jaCkKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsIHN0YXJ0KyspKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3ZmcGRlZihDSElMRCh0cmVlLCBzdGFydCsrKSkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJleHBlY3RlZCB2ZnBkZWYgYWZ0ZXIgKiogaW4gdmFyYXJnc2xpc3QgdHJhaWxlciIpOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJleHBlY3RlZCAqIG9yICoqIGluIHZhcmFyZ3NsaXN0IHRyYWlsZXIiKTsKLSAgICB9Ci0KLSAgICBpZiAocmVzICYmIHN0YXJ0ICE9IG5jaCkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJ1bmV4cGVjdGVkIGV4dHJhIGNoaWxkcmVuIGluIHZhcmFyZ3NsaXN0IHRyYWlsZXIiKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiB2YWxpZGF0ZV92YXJhcmdzbGlzdCgpCi0gKgotICogVmFsaWRhdGUgdHlwZWRhcmdzbGlzdCBvciB2YXJhcmdzbGlzdC4KLSAqCi0gKiB0eXBlZGFyZ3NsaXN0OiAoKHRmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gKiAgICAgICAgICAgICAgICAgKCcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHRmcGRlZl0gfAotICogICAgICAgICAgICAgICAgICAnKionIHRmcGRlZikKLSAqICAgICAgICAgICAgICAgICB8IHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnXSkKLSAqIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi0gKiB2YXJhcmdzbGlzdDogKCh2ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICogICAgICAgICAgICAgICAoJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiAgWycsJyAnKionIHZmcGRlZl0gfAotICogICAgICAgICAgICAgICAgJyoqJyB2ZnBkZWYpCi0gKiAgICAgICAgICAgICAgIHwgdmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCddKQotICogdmZwZGVmOiBOQU1FCi0gKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV92YXJhcmdzbGlzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IChUWVBFKHRyZWUpID09IHZhcmFyZ3NsaXN0IHx8Ci0gICAgICAgICAgICAgICBUWVBFKHRyZWUpID09IHR5cGVkYXJnc2xpc3QpICYmCi0gICAgICAgICAgICAgIChuY2ggIT0gMCk7Ci0gICAgaW50IHN5bTsKLSAgICBub2RlICpjaDsKLSAgICBpbnQgaSA9IDA7Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5jaCA8IDEpIHsKLSAgICAgICAgZXJyX3N0cmluZygidmFyYXJnc2xpc3QgbWlzc2luZyBjaGlsZCBub2RlcyIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgd2hpbGUgKGkgPCBuY2gpIHsKLSAgICAgICAgY2ggPSBDSElMRCh0cmVlLCBpKTsKLSAgICAgICAgc3ltID0gVFlQRShjaCk7Ci0gICAgICAgIGlmIChzeW0gPT0gdmZwZGVmIHx8IHN5bSA9PSB0ZnBkZWYpIHsKLSAgICAgICAgICAgIC8qIHZhbGlkYXRlICh2ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKyAqLwotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmZwZGVmKGNoKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgKGkrMiA8PSBuY2gpICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IEVRVUFMKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIGkrMSkpKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgICAgICAgaSArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHJlcyAmJiBpIDwgbmNoKSB7Ci0gICAgICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgaSkpOwotICAgICAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChzeW0gPT0gRE9VQkxFU1RBUiB8fCBzeW0gPT0gU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdmFyYXJnc2xpc3RfdHJhaWxlcih0cmVlLCBpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgZm9ybWF0aW9uIGZvciB2YXJhcmdzbGlzdCIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogIGNvbXBfaXRlcjogIGNvbXBfZm9yIHwgY29tcF9pZgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX2l0ZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBfaXRlcikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJjb21wX2l0ZXIiKSk7Ci0gICAgaWYgKHJlcyAmJiBUWVBFKENISUxEKHRyZWUsIDApKSA9PSBjb21wX2ZvcikKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMCkpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9pZihDSElMRCh0cmVlLCAwKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgY29tcF9mb3I6ICAnZm9yJyBleHBybGlzdCAnaW4nIHRlc3QgW2NvbXBfaXRlcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfY29tcF9mb3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXM7Ci0KLSAgICBpZiAobmNoID09IDUpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX2NvbXBfaXRlcihDSElMRCh0cmVlLCA0KSk7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCA0LCAiY29tcF9mb3IiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZm9yIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHJsaXN0KENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgImluIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX29yX3Rlc3QoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qICBjb21wX2lmOiAgJ2lmJyB0ZXN0X25vY29uZCBbY29tcF9pdGVyXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX2lmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzOwotCi0gICAgaWYgKG5jaCA9PSAzKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wX2l0ZXIoQ0hJTEQodHJlZSwgMikpOwotICAgIGVsc2UKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgImNvbXBfaWYiKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiaWYiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdF9ub2NvbmQoQ0hJTEQodHJlZSwgMSkpKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotLyogIHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdAotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgc3RtdCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJzdG10IikpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICB0cmVlID0gQ0hJTEQodHJlZSwgMCk7Ci0KLSAgICAgICAgaWYgKFRZUEUodHJlZSkgPT0gc2ltcGxlX3N0bXQpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaW1wbGVfc3RtdCh0cmVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcG91bmRfc3RtdCh0cmVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddIE5FV0xJTkUKLSAqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3NpbXBsZV9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHNpbXBsZV9zdG10KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSAyKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc21hbGxfc3RtdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25ld2xpbmUoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgIGlmIChuY2ggPCAyKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAic2ltcGxlX3N0bXQiKTsKLSAgICAtLW5jaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3JnZXQgdGhlIE5FV0xJTkUgICAgKi8KLSAgICBpZiAocmVzICYmIGlzX2V2ZW4obmNoKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfc2VtaShDSElMRCh0cmVlLCAtLW5jaCkpOwotICAgIGlmIChyZXMgJiYgKG5jaCA+IDIpKSB7Ci0gICAgICAgIGludCBpOwotCi0gICAgICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9zZW1pKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NtYWxsX3N0bXQoQ0hJTEQodHJlZSwgaSArIDEpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zbWFsbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInNtYWxsX3N0bXQiKTsKLQotICAgIGlmIChyZXMpIHsKLSAgICAgICAgaW50IG50eXBlID0gVFlQRShDSElMRCh0cmVlLCAwKSk7Ci0KLSAgICAgICAgaWYgKCAgKG50eXBlID09IGV4cHJfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IGRlbF9zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gcGFzc19zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gZmxvd19zdG10KQotICAgICAgICAgICAgICB8fCAobnR5cGUgPT0gaW1wb3J0X3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBnbG9iYWxfc3RtdCkKLSAgICAgICAgICAgICAgfHwgKG50eXBlID09IG5vbmxvY2FsX3N0bXQpCi0gICAgICAgICAgICAgIHx8IChudHlwZSA9PSBhc3NlcnRfc3RtdCkpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9ub2RlKENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBzbWFsbF9zdG10IGNoaWxkIHR5cGUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChuY2ggPT0gMSkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjaGlsZCBub2RlIG9mIHNtYWxsX3N0bXQ6ICVkLiIsCi0gICAgICAgICAgICAgICAgICAgICBUWVBFKENISUxEKHRyZWUsIDApKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgY29tcG91bmRfc3RtdDoKLSAqICAgICAgaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgd2l0aF9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmIHwgZGVjb3JhdGVkCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBvdW5kX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGNvbXBvdW5kX3N0bXQpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAiY29tcG91bmRfc3RtdCIpKTsKLSAgICBpbnQgbnR5cGU7Ci0KLSAgICBpZiAoIXJlcykKLSAgICAgICAgcmV0dXJuICgwKTsKLQotICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKLSAgICBudHlwZSA9IFRZUEUodHJlZSk7Ci0gICAgaWYgKCAgKG50eXBlID09IGlmX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IHdoaWxlX3N0bXQpCi0gICAgICAgICAgfHwgKG50eXBlID09IGZvcl9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSB0cnlfc3RtdCkKLSAgICAgICAgICB8fCAobnR5cGUgPT0gd2l0aF9zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSBmdW5jZGVmKQotICAgICAgICAgIHx8IChudHlwZSA9PSBhc3luY19zdG10KQotICAgICAgICAgIHx8IChudHlwZSA9PSBjbGFzc2RlZikKLSAgICAgICAgICB8fCAobnR5cGUgPT0gZGVjb3JhdGVkKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9kZSh0cmVlKTsKLSAgICBlbHNlIHsKLSAgICAgICAgcmVzID0gMDsKLSAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIGNvbXBvdW5kIHN0YXRlbWVudCB0eXBlOiAlZC4iLCBUWVBFKHRyZWUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV95aWVsZF9vcl90ZXN0bGlzdChub2RlICp0cmVlLCBpbnQgdHNlKQotewotICAgIGlmIChUWVBFKHRyZWUpID09IHlpZWxkX2V4cHIpIHsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3lpZWxkX2V4cHIodHJlZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAodHNlKQotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3Rlc3RsaXN0X3N0YXJfZXhwcih0cmVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX3Rlc3RsaXN0KHRyZWUpOwotICAgIH0KLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcl9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV4cHJfc3RtdCkKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdF9zdGFyX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmIChyZXMgJiYgbmNoID09IDMKLSAgICAgICAgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gYXVnYXNzaWduKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX251bW5vZGVzKENISUxEKHRyZWUsIDEpLCAxLCAiYXVnYXNzaWduIikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX3lpZWxkX29yX3Rlc3RsaXN0KENISUxEKHRyZWUsIDIpLCAwKTsKLQotICAgICAgICBpZiAocmVzKSB7Ci0gICAgICAgICAgICBjaGFyICpzID0gU1RSKENISUxEKENISUxEKHRyZWUsIDEpLCAwKSk7Ci0KLSAgICAgICAgICAgIHJlcyA9IChzdHJjbXAocywgIis9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiLT0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIqPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgIi89IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiLy89IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiJT0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICImPSIpID09IDAKLSAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAocywgInw9IikgPT0gMAotICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChzLCAiXj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICI8PD0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICI+Pj0iKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKHMsICIqKj0iKSA9PSAwKTsKLSAgICAgICAgICAgIGlmICghcmVzKQotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXVnbWVudGVkIGFzc2lnbm1lbnQgb3BlcmF0b3IiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZm9yIChqID0gMTsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZXF1YWwoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfeWllbGRfb3JfdGVzdGxpc3QoQ0hJTEQodHJlZSwgaiArIDEpLCAxKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiZGVsX3N0bXQiKQotICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImRlbCIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHBybGlzdChDSElMRCh0cmVlLCAxKSkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3JldHVybl9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHJldHVybl9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJyZXR1cm4iKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gMikpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIDEpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKgotICogIHJhaXNlX3N0bXQ6Ci0gKgotICogICdyYWlzZScgW3Rlc3QgWydmcm9tJyB0ZXN0XV0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcmFpc2Vfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCByYWlzZV9zdG10KQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDQpKSk7Ci0KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDIsICJyYWlzZSIpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICByZXMgPSB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAicmFpc2UiKTsKLSAgICAgICAgaWYgKHJlcyAmJiAobmNoID49IDIpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJmcm9tIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDMpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qIHlpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfZXhwcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaWYgKG5jaCA8IDEgfHwgbmNoID4gMikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9leHByKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKCF2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAieWllbGQiKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG5jaCA9PSAyKSB7Ci0gICAgICAgIGlmICghdmFsaWRhdGVfeWllbGRfYXJnKENISUxEKHRyZWUsIDEpKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotLyogeWllbGRfYXJnOiAnZnJvbScgdGVzdCB8IHRlc3RsaXN0Ci0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3lpZWxkX2FyZyhub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9hcmcpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBzd2l0Y2ggKG5jaCkgewotICAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3RsaXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCF2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZnJvbSIpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIHlpZWxkX3N0bXQ6IHlpZWxkX2V4cHIKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfeWllbGRfc3RtdChub2RlICp0cmVlKQotewotICAgIHJldHVybiAodmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfc3RtdCkKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJ5aWVsZF9zdG10IikKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX3lpZWxkX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZShub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgaW1wb3J0X2FzX25hbWUpOwotCi0gICAgaWYgKG9rKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMSkKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCk7Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKQotICAgICAgICAgICAgb2sgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkKLSAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDIpLCBOVUxMKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgImltcG9ydF9hc19uYW1lIik7Ci0gICAgfQotICAgIHJldHVybiBvazsKLX0KLQotCi0vKiBkb3R0ZWRfbmFtZTogIE5BTUUgKCIuIiBOQU1FKSoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZG90dGVkX25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZG90dGVkX25hbWUpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgTlVMTCkpOwotICAgIGludCBpOwotCi0gICAgZm9yIChpID0gMTsgcmVzICYmIChpIDwgbmNoKTsgaSArPSAyKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIGkrMSksIE5VTEwpKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQotCi0vKiBkb3R0ZWRfYXNfbmFtZTogIGRvdHRlZF9uYW1lIFtOQU1FIE5BTUVdCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RvdHRlZF9hc19uYW1lKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZG90dGVkX2FzX25hbWUpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9kb3R0ZWRfbmFtZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAzKQotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX2RvdHRlZF9uYW1lKENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgTlVMTCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgZG90dGVkX2FzX25hbWUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qIGRvdHRlZF9hc19uYW1lICgnLCcgZG90dGVkX2FzX25hbWUpKiAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZG90dGVkX2FzX25hbWVzKG5vZGUgKnRyZWUpCi17Ci0gICAgICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgICAgIGludCByZXMgPSBpc19vZGQobmNoKSAmJiB2YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZShDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGludCBpOwotCi0gICAgICAgIGZvciAoaSA9IDE7IHJlcyAmJiAoaSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBpKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3R0ZWRfYXNfbmFtZShDSElMRCh0cmVlLCBpICsgMSkpKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qIGltcG9ydF9hc19uYW1lICgnLCcgaW1wb3J0X2FzX25hbWUpKiBbJywnXSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X2FzX25hbWVzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfaW1wb3J0X2FzX25hbWUoQ0hJTEQodHJlZSwgMCkpOwotICAgIGludCBpOwotCi0gICAgZm9yIChpID0gMTsgcmVzICYmIChpICsgMSA8IG5jaCk7IGkgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfaW1wb3J0X2FzX25hbWUoQ0hJTEQodHJlZSwgaSArIDEpKSk7Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICdpbXBvcnQnIGRvdHRlZF9hc19uYW1lcyAqLwotc3RhdGljIGludAotdmFsaWRhdGVfaW1wb3J0X25hbWUobm9kZSAqdHJlZSkKLXsKLSAgICAgICAgcmV0dXJuICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBpbXBvcnRfbmFtZSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiaW1wb3J0X25hbWUiKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJpbXBvcnQiKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdHRlZF9hc19uYW1lcyhDSElMRCh0cmVlLCAxKSkpOwotfQotCi0vKiBIZWxwZXIgZnVuY3Rpb24gdG8gY291bnQgdGhlIG51bWJlciBvZiBsZWFkaW5nIGRvdHMgKG9yIGVsbGlwc2lzIHRva2VucykgaW4KLSAqICdmcm9tIC4uLm1vZHVsZSBpbXBvcnQgbmFtZScKLSAqLwotc3RhdGljIGludAotY291bnRfZnJvbV9kb3RzKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGk7Ci0gICAgZm9yIChpID0gMTsgaSA8IE5DSCh0cmVlKTsgaSsrKQotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBpKSkgIT0gRE9UICYmIFRZUEUoQ0hJTEQodHJlZSwgaSkpICE9IEVMTElQU0lTKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgcmV0dXJuIGkgLSAxOwotfQotCi0vKiBpbXBvcnRfZnJvbTogKCdmcm9tJyAoJy4nKiBkb3R0ZWRfbmFtZSB8ICcuJyspCi0gKiAgICAgICAgICAgICAgICdpbXBvcnQnICgnKicgfCAnKCcgaW1wb3J0X2FzX25hbWVzICcpJyB8IGltcG9ydF9hc19uYW1lcykpCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9mcm9tKG5vZGUgKnRyZWUpCi17Ci0gICAgICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgICAgIGludCBuZG90cyA9IGNvdW50X2Zyb21fZG90cyh0cmVlKTsKLSAgICAgICAgaW50IGhhdmVuYW1lID0gKFRZUEUoQ0hJTEQodHJlZSwgbmRvdHMgKyAxKSkgPT0gZG90dGVkX25hbWUpOwotICAgICAgICBpbnQgb2Zmc2V0ID0gbmRvdHMgKyBoYXZlbmFtZTsKLSAgICAgICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGltcG9ydF9mcm9tKQotICAgICAgICAgICAgICAgICYmIChvZmZzZXQgPj0gMSkKLSAgICAgICAgICAgICAgICAmJiAobmNoID49IDMgKyBvZmZzZXQpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZyb20iKQotICAgICAgICAgICAgICAgICYmICghaGF2ZW5hbWUgfHwgdmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgbmRvdHMgKyAxKSkpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBvZmZzZXQgKyAxKSwgImltcG9ydCIpOwotCi0gICAgICAgIGlmIChyZXMgJiYgVFlQRShDSElMRCh0cmVlLCBvZmZzZXQgKyAyKSkgPT0gTFBBUikKLSAgICAgICAgICAgIHJlcyA9ICgobmNoID09IG9mZnNldCArIDUpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIG9mZnNldCArIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ltcG9ydF9hc19uYW1lcyhDSElMRCh0cmVlLCBvZmZzZXQgKyAzKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ycGFyZW4oQ0hJTEQodHJlZSwgb2Zmc2V0ICsgNCkpKTsKLSAgICAgICAgZWxzZSBpZiAocmVzICYmIFRZUEUoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpICE9IFNUQVIpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9pbXBvcnRfYXNfbmFtZXMoQ0hJTEQodHJlZSwgb2Zmc2V0ICsgMikpOwotICAgICAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogaW1wb3J0X3N0bXQ6IGltcG9ydF9uYW1lIHwgaW1wb3J0X2Zyb20gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2ltcG9ydF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImltcG9ydF9zdG10Iik7Ci0KLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCBudHlwZSA9IFRZUEUoQ0hJTEQodHJlZSwgMCkpOwotCi0gICAgICAgIGlmIChudHlwZSA9PSBpbXBvcnRfbmFtZSB8fCBudHlwZSA9PSBpbXBvcnRfZnJvbSkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX25vZGUoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIGltcG9ydF9zdG10IGNoaWxkIHR5cGUiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChuY2ggPT0gMSkgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjaGlsZCBub2RlIG9mIGltcG9ydF9zdG10OiAlZC4iLAotICAgICAgICAgICAgICAgICAgICAgVFlQRShDSElMRCh0cmVlLCAwKSkpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGdsb2JhbF9zdG10OgotICoKLSAqICAnZ2xvYmFsJyBOQU1FICgnLCcgTkFNRSkqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2dsb2JhbF9zdG10KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGdsb2JhbF9zdG10KQotICAgICAgICAgICAgICAgJiYgaXNfZXZlbihuY2gpICYmIChuY2ggPj0gMikpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgZ2xvYmFsIHN0YXRlbWVudCIpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJnbG9iYWwiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMSksIE5BTUUpKTsKLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb21tYShDSElMRCh0cmVlLCBqKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIGogKyAxKSwgTkFNRSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0vKiAgbm9ubG9jYWxfc3RtdDoKLSAqCi0gKiAgJ25vbmxvY2FsJyBOQU1FICgnLCcgTkFNRSkqCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX25vbmxvY2FsX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgbm9ubG9jYWxfc3RtdCkKLSAgICAgICAgICAgICAgICYmIGlzX2V2ZW4obmNoKSAmJiAobmNoID49IDIpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG5vbmxvY2FsIHN0YXRlbWVudCIpOwotCi0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJub25sb2NhbCIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkpOwotICAgIGZvciAoaiA9IDI7IHJlcyAmJiAoaiA8IG5jaCk7IGogKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGopKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgaiArIDEpLCBOQU1FKSk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiAgYXNzZXJ0X3N0bXQ6Ci0gKgotICogICdhc3NlcnQnIHRlc3QgWycsJyB0ZXN0XQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hc3NlcnRfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3NlcnRfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gNCkpCi0gICAgICAgICAgICAgICAmJiAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImFzc2VydCIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXNzZXJ0IHN0YXRlbWVudCIpOwotICAgIGlmIChyZXMgJiYgKG5jaCA+IDIpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfY29tbWEoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDMpKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfd2hpbGUobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgd2hpbGVfc3RtdCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDQpIHx8IChuY2ggPT0gNykpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAid2hpbGUiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMykpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA3KSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgNCksICJlbHNlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDUpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNikpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9mb3Iobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZm9yX3N0bXQpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSA2KSB8fCAobmNoID09IDkpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZvciIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9leHBybGlzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMiksICJpbiIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAzKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNSkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA5KSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgNiksICJlbHNlIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDcpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgOCkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgdHJ5X3N0bXQ6Ci0gKiAgICAgICd0cnknICc6JyBzdWl0ZSAoZXhjZXB0X2NsYXVzZSAnOicgc3VpdGUpKyBbJ2Vsc2UnICc6JyBzdWl0ZV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZmluYWxseScgJzonIHN1aXRlXQotICogICAgfCAndHJ5JyAnOicgc3VpdGUgJ2ZpbmFsbHknICc6JyBzdWl0ZQotICoKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdHJ5KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcG9zID0gMzsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHRyeV9zdG10KQotICAgICAgICAgICAgICAgJiYgKG5jaCA+PSA2KSAmJiAoKG5jaCAlIDMpID09IDApKTsKLQotICAgIGlmIChyZXMpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAidHJ5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0gICAgZWxzZSBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgY29uc3QgY2hhciogbmFtZSA9ICJleGNlcHQiOwotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBuY2ggLSAzKSkgIT0gZXhjZXB0X2NsYXVzZSkKLSAgICAgICAgICAgIG5hbWUgPSBTVFIoQ0hJTEQodHJlZSwgbmNoIC0gMykpOwotCi0gICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIHRyeS8lcyBub2RlLiIsIG5hbWUpOwotICAgIH0KLSAgICAvKiBIYW5kbGUgdHJ5L2ZpbmFsbHkgc3RhdGVtZW50ICovCi0gICAgaWYgKHJlcyAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBOQU1FKSAmJgotICAgICAgICAoc3RyY21wKFNUUihDSElMRCh0cmVlLCBwb3MpKSwgImZpbmFsbHkiKSA9PSAwKSkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgNiwgInRyeS9maW5hbGx5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgNSkpKTsKLSAgICAgICAgcmV0dXJuIChyZXMpOwotICAgIH0KLSAgICAvKiB0cnkvZXhjZXB0IHN0YXRlbWVudDogc2tpcCBwYXN0IGV4Y2VwdF9jbGF1c2Ugc2VjdGlvbnMgKi8KLSAgICB3aGlsZSAocmVzICYmIHBvcyA8IG5jaCAmJiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBleGNlcHRfY2xhdXNlKSkgewotICAgICAgICByZXMgPSAodmFsaWRhdGVfZXhjZXB0X2NsYXVzZShDSElMRCh0cmVlLCBwb3MpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgcG9zICsgMSkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShDSElMRCh0cmVlLCBwb3MgKyAyKSkpOwotICAgICAgICBwb3MgKz0gMzsKLSAgICB9Ci0gICAgLyogc2tpcCBlbHNlIGNsYXVzZSAqLwotICAgIGlmIChyZXMgJiYgcG9zIDwgbmNoICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IE5BTUUpICYmCi0gICAgICAgIChzdHJjbXAoU1RSKENISUxEKHRyZWUsIHBvcykpLCAiZWxzZSIpID09IDApKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBwb3MgKyAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIHBvcyArIDIpKSk7Ci0gICAgICAgIHBvcyArPSAzOwotICAgIH0KLSAgICBpZiAocmVzICYmIHBvcyA8IG5jaCkgewotICAgICAgICAvKiBsYXN0IGNsYXVzZSBtdXN0IGJlIGEgZmluYWxseSAqLwotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCBwb3MpLCAiZmluYWxseSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCBwb3MgKyAzLCAidHJ5L2V4Y2VwdC9maW5hbGx5IikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIHBvcyArIDEpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3VpdGUoQ0hJTEQodHJlZSwgcG9zICsgMikpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4Y2VwdF9jbGF1c2Uobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZXhjZXB0X2NsYXVzZSkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJleGNlcHQiKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPiAxKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgaWYgKHJlcyAmJiAobmNoID09IDQpKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAyKSwgImFzIikKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDMpLCBOQU1FKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHRlc3QpICYmIGlzX29kZChuY2gpOwotCi0gICAgaWYgKHJlcyAmJiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gbGFtYmRlZikpCi0gICAgICAgIHJlcyA9ICgobmNoID09IDEpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9sYW1iZGVmKENISUxEKHRyZWUsIDApKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX29yX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICByZXMgPSAocmVzICYmIChuY2ggPT0gMSB8fCAobmNoID09IDUgJiYKLSAgICAgICAgICAgIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJpZiIpICYmCi0gICAgICAgICAgICB2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDIpKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAzKSwgImVsc2UiKSAmJgotICAgICAgICAgICAgdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCA0KSkpKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdF9ub2NvbmQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCB0ZXN0X25vY29uZCkgJiYgKG5jaCA9PSAxKTsKLQotICAgIGlmIChyZXMgJiYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IGxhbWJkZWZfbm9jb25kKSkKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2xhbWJkZWZfbm9jb25kKENISUxEKHRyZWUsIDApKSk7Ci0gICAgZWxzZSBpZiAocmVzKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9vcl90ZXN0KENISUxEKHRyZWUsIDApKSk7Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfb3JfdGVzdChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIG9yX3Rlc3QpICYmIGlzX29kZChuY2gpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpbnQgcG9zOwotICAgICAgICByZXMgPSB2YWxpZGF0ZV9hbmRfdGVzdChDSElMRCh0cmVlLCAwKSk7Ci0gICAgICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIHBvcyksICJvciIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfYW5kX3Rlc3QoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FuZF90ZXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYW5kX3Rlc3QpCi0gICAgICAgICAgICAgICAmJiBpc19vZGQobmNoKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbm90X3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgcG9zKSwgImFuZCIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9ub3RfdGVzdChDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX25vdF90ZXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgbm90X3Rlc3QpICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDIpCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIm5vdCIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbm90X3Rlc3QoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICAgICAgZWxzZSBpZiAobmNoID09IDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wYXJpc29uKENISUxEKHRyZWUsIDApKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2NvbXBhcmlzb24obm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBjb21wYXJpc29uKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikKLSAgICAgICAgcmVzID0gKHZhbGlkYXRlX2NvbXBfb3AoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jb21wX29wKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9IDA7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLQotICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgY29tcF9vcCkpCi0gICAgICAgIHJldHVybiAoMCk7Ci0gICAgaWYgKG5jaCA9PSAxKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqICBPbmx5IGNoaWxkIHdpbGwgYmUgYSB0ZXJtaW5hbCB3aXRoIGEgd2VsbC1kZWZpbmVkIHN5bWJvbGljIG5hbWUKLSAgICAgICAgICogIG9yIGEgTkFNRSB3aXRoIGEgc3RyaW5nIG9mIGVpdGhlciAnaXMnIG9yICdpbicKLSAgICAgICAgICovCi0gICAgICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKLSAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgY2FzZSBMRVNTOgotICAgICAgICAgIGNhc2UgR1JFQVRFUjoKLSAgICAgICAgICBjYXNlIEVRRVFVQUw6Ci0gICAgICAgICAgY2FzZSBFUVVBTDoKLSAgICAgICAgICBjYXNlIExFU1NFUVVBTDoKLSAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKLSAgICAgICAgICBjYXNlIE5PVEVRVUFMOgotICAgICAgICAgICAgICByZXMgPSAxOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIE5BTUU6Ci0gICAgICAgICAgICAgIHJlcyA9ICgoc3RyY21wKFNUUih0cmVlKSwgImluIikgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgIHx8IChzdHJjbXAoU1RSKHRyZWUpLCAiaXMiKSA9PSAwKSk7Ci0gICAgICAgICAgICAgIGlmICghcmVzKSB7Ci0gICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIG9wZXJhdG9yICclcyciLCBTVFIodHJlZSkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgY29tcGFyaXNvbiBvcGVyYXRvciB0eXBlIik7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKChyZXMgPSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAiY29tcF9vcCIpKSAhPSAwKSB7Ci0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgTkFNRSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKQotICAgICAgICAgICAgICAgJiYgKCgoc3RyY21wKFNUUihDSElMRCh0cmVlLCAwKSksICJpcyIpID09IDApCi0gICAgICAgICAgICAgICAgICAgICYmIChzdHJjbXAoU1RSKENISUxEKHRyZWUsIDEpKSwgIm5vdCIpID09IDApKQotICAgICAgICAgICAgICAgICAgIHx8ICgoc3RyY21wKFNUUihDSElMRCh0cmVlLCAwKSksICJub3QiKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAmJiAoc3RyY21wKFNUUihDSElMRCh0cmVlLCAxKSksICJpbiIpID09IDApKSkpOwotICAgICAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGVycl9zdHJpbmcoInVua25vd24gY29tcGFyaXNvbiBvcGVyYXRvciIpOwotICAgIH0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfc3Rhcl9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHN0YXJfZXhwcik7Ci0gICAgaWYgKCFyZXMpIHJldHVybiByZXM7Ci0gICAgaWYgKCF2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAyLCAic3Rhcl9leHByIikpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgU1RBUikgJiYgICAgICBcCi0gICAgICAgIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMSkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgajsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZXhwcikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV94b3JfZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yIChqID0gMjsgcmVzICYmIChqIDwgbmNoKTsgaiArPSAyKQotICAgICAgICByZXMgPSAodmFsaWRhdGVfeG9yX2V4cHIoQ0hJTEQodHJlZSwgaikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV92YmFyKENISUxEKHRyZWUsIGogLSAxKSkpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3hvcl9leHByKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHhvcl9leHByKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2FuZF9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKGogPSAyOyByZXMgJiYgKGogPCBuY2gpOyBqICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9jaXJjdW1mbGV4KENISUxEKHRyZWUsIGogLSAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2FuZF9leHByKENISUxEKHRyZWUsIGopKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfYW5kX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgcG9zOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhbmRfZXhwcikKLSAgICAgICAgICAgICAgICYmIGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9zaGlmdF9leHByKENISUxEKHRyZWUsIDApKSk7Ci0KLSAgICBmb3IgKHBvcyA9IDE7IHJlcyAmJiAocG9zIDwgbmNoKTsgcG9zICs9IDIpCi0gICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9hbXBlcnNhbmQoQ0hJTEQodHJlZSwgcG9zKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3NoaWZ0X2V4cHIoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9jaGFpbl90d29fb3BzKG5vZGUgKnRyZWUsIGludCAoKnRlcm12YWxpZCkobm9kZSAqKSwgaW50IG9wMSwgaW50IG9wMikKLSB7Ci0gICAgaW50IHBvcyA9IDE7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKGlzX29kZChuY2gpCi0gICAgICAgICAgICAgICAmJiAoKnRlcm12YWxpZCkoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGZvciAoIDsgcmVzICYmIChwb3MgPCBuY2gpOyBwb3MgKz0gMikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSAhPSBvcDEpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBwb3MpLCBvcDIpOwotICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgcmVzID0gKCp0ZXJtdmFsaWQpKENISUxEKHRyZWUsIHBvcyArIDEpKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3NoaWZ0X2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIHNoaWZ0X2V4cHIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9jaGFpbl90d29fb3BzKHRyZWUsIHZhbGlkYXRlX2FyaXRoX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExFRlRTSElGVCwgUklHSFRTSElGVCkpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FyaXRoX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX250eXBlKHRyZWUsIGFyaXRoX2V4cHIpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV9jaGFpbl90d29fb3BzKHRyZWUsIHZhbGlkYXRlX3Rlcm0sIFBMVVMsIE1JTlVTKSk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVybShub2RlICp0cmVlKQotewotICAgIGludCBwb3MgPSAxOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB0ZXJtKQotICAgICAgICAgICAgICAgJiYgaXNfb2RkKG5jaCkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgZm9yICggOyByZXMgJiYgKHBvcyA8IG5jaCk7IHBvcyArPSAyKQotICAgICAgICByZXMgPSAoKChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IFNUQVIpCi0gICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCBwb3MpKSA9PSBTTEFTSCkKLSAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IERPVUJMRVNMQVNIKQotICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgcG9zKSkgPT0gUEVSQ0VOVCkpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgcG9zICsgMSkpKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgZmFjdG9yOgotICoKLSAqICBmYWN0b3I6ICgnKyd8Jy0nfCd+JykgZmFjdG9yIHwgcG93ZXIKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZmFjdG9yKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGZhY3RvcikKLSAgICAgICAgICAgICAgICYmICgoKG5jaCA9PSAyKQotICAgICAgICAgICAgICAgICAgICAmJiAoKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IFBMVVMpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gTUlOVVMpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gVElMREUpKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mYWN0b3IoQ0hJTEQodHJlZSwgMSkpKQotICAgICAgICAgICAgICAgICAgIHx8ICgobmNoID09IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Bvd2VyKENISUxEKHRyZWUsIDApKSkpKTsKLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIHBvd2VyOgotICoKLSAqICBwb3dlcjogYXRvbV9leHByIHRyYWlsZXIqIFsnKionIGZhY3Rvcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfcG93ZXIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgcG93ZXIpICYmIChuY2ggPj0gMSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2F0b21fZXhwcihDSElMRCh0cmVlLCAwKSkpOwotCi0gICAgaWYgKG5jaCA+IDEpIHsKLSAgICAgICAgaWYgKG5jaCAhPSAzKSB7Ci0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBub2RlcyBmb3IgJ3Bvd2VyJyIpOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICAgfQotICAgICAgICByZXMgPSAodmFsaWRhdGVfZG91Ymxlc3RhcihDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2ZhY3RvcihDSElMRCh0cmVlLCAyKSkpOwotICAgIH0KLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgYXRvbV9leHByOgotICoKLSAqICBhdG9tX2V4cHI6IFtBV0FJVF0gYXRvbSB0cmFpbGVyKgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hdG9tX2V4cHIobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgc3RhcnQgPSAwOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLSAgICBpbnQgcG9zOwotCi0gICAgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgYXRvbV9leHByKSAmJiAobmNoID49IDEpOwotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIHJldHVybiAocmVzKTsKLSAgICB9Ci0KLSAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gQVdBSVQpIHsKLSAgICAgICAgc3RhcnQgPSAxOwotICAgICAgICBpZiAobmNoIDwgMikgewotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2Ygbm9kZXMgZm9yICdhdG9tX2V4cHInIik7Ci0gICAgICAgICAgICByZXR1cm4gKDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmVzID0gdmFsaWRhdGVfYXRvbShDSElMRCh0cmVlLCBzdGFydCkpOwotICAgIGlmIChyZXMpIHsKLSAgICAgICAgcG9zID0gc3RhcnQgKyAxOwotICAgICAgICB3aGlsZSAocmVzICYmIChwb3MgPCBuY2gpICYmIChUWVBFKENISUxEKHRyZWUsIHBvcykpID09IHRyYWlsZXIpKQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdHJhaWxlcihDSElMRCh0cmVlLCBwb3MrKykpOwotICAgIH0KLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hdG9tKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IHBvczsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhdG9tKTsKLQotICAgIGlmIChyZXMgJiYgbmNoIDwgMSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgbmNoKzEsICJhdG9tIik7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBzd2l0Y2ggKFRZUEUoQ0hJTEQodHJlZSwgMCkpKSB7Ci0gICAgICAgICAgY2FzZSBMUEFSOgotICAgICAgICAgICAgcmVzID0gKChuY2ggPD0gMykKLSAgICAgICAgICAgICAgICAgICAmJiAodmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKSkpOwotCi0gICAgICAgICAgICBpZiAocmVzICYmIChuY2ggPT0gMykpIHsKLSAgICAgICAgICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSk9PXlpZWxkX2V4cHIpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV95aWVsZF9leHByKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0bGlzdF9jb21wKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTFNRQjoKLSAgICAgICAgICAgIGlmIChuY2ggPT0gMikKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgUlNRQik7Ci0gICAgICAgICAgICBlbHNlIGlmIChuY2ggPT0gMykKLSAgICAgICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdGxpc3RfY29tcChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgMiksIFJTUUIpKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBsaXN0IGRpc3BsYXkgYXRvbSIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBMQlJBQ0U6Ci0gICAgICAgICAgICByZXMgPSAoKG5jaCA8PSAzKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIG5jaCAtIDEpLCBSQlJBQ0UpKTsKLQotICAgICAgICAgICAgaWYgKHJlcyAmJiAobmNoID09IDMpKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2RpY3RvcnNldG1ha2VyKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTkFNRToKLSAgICAgICAgICBjYXNlIE5VTUJFUjoKLSAgICAgICAgICBjYXNlIEVMTElQU0lTOgotICAgICAgICAgICAgcmVzID0gKG5jaCA9PSAxKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgU1RSSU5HOgotICAgICAgICAgICAgZm9yIChwb3MgPSAxOyByZXMgJiYgKHBvcyA8IG5jaCk7ICsrcG9zKQotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIHBvcyksIFNUUklORyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi0vKiAgdGVzdGxpc3RfY29tcDoKLSAqICAgICh0ZXN0fHN0YXJfZXhwcikgKCBjb21wX2ZvciB8ICgnLCcgKHRlc3R8c3Rhcl9leHByKSkqIFsnLCddICkKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdGxpc3RfY29tcChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rOwotCi0gICAgaWYgKG5jaCA9PSAwKSB7Ci0gICAgICAgIGVycl9zdHJpbmcoIm1pc3NpbmcgY2hpbGQgbm9kZXMgb2YgdGVzdGxpc3RfY29tcCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAobmNoID09IDIgJiYgVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgb2sgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCAxKSkpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLAotICAgICAgICAgICAgICAgIHRlc3RsaXN0X2NvbXAsCi0gICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCi0gICAgICAgICAgICAgICAgInRlc3RsaXN0X2NvbXAiKTsKLSAgICB9Ci0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgZGVjb3JhdG9yOgotICogICAgJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2RlY29yYXRvcihub2RlICp0cmVlKQotewotICAgIGludCBvazsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGRlY29yYXRvcikgJiYKLSAgICAgICAgICAobmNoID09IDMgfHwgbmNoID09IDUgfHwgbmNoID09IDYpICYmCi0gICAgICAgICAgdmFsaWRhdGVfYXQoQ0hJTEQodHJlZSwgMCkpICYmCi0gICAgICAgICAgdmFsaWRhdGVfZG90dGVkX25hbWUoQ0hJTEQodHJlZSwgMSkpICYmCi0gICAgICAgICAgdmFsaWRhdGVfbmV3bGluZShSQ0hJTEQodHJlZSwgLTEpKSk7Ci0KLSAgICBpZiAob2sgJiYgbmNoICE9IDMpIHsKLSAgICAgICAgb2sgPSAodmFsaWRhdGVfbHBhcmVuKENISUxEKHRyZWUsIDIpKSAmJgotICAgICAgICAgICAgICB2YWxpZGF0ZV9ycGFyZW4oUkNISUxEKHRyZWUsIC0yKSkpOwotCi0gICAgICAgIGlmIChvayAmJiBuY2ggPT0gNikKLSAgICAgICAgICAgIG9rID0gdmFsaWRhdGVfYXJnbGlzdChDSElMRCh0cmVlLCAzKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIG9rOwotfQotCi0vKiAgZGVjb3JhdG9yczoKLSAqICAgIGRlY29yYXRvcisKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGVjb3JhdG9ycyhub2RlICp0cmVlKQotewotICAgIGludCBpLCBuY2gsIG9rOwotICAgIG5jaCA9IE5DSCh0cmVlKTsKLSAgICBvayA9IHZhbGlkYXRlX250eXBlKHRyZWUsIGRlY29yYXRvcnMpICYmIG5jaCA+PSAxOwotCi0gICAgZm9yIChpID0gMDsgb2sgJiYgaSA8IG5jaDsgKytpKQotICAgICAgICBvayA9IHZhbGlkYXRlX2RlY29yYXRvcihDSElMRCh0cmVlLCBpKSk7Ci0KLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qICB3aXRoX2l0ZW06Ci0gKiAgIHRlc3QgWydhcycgZXhwcl0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfd2l0aF9pdGVtKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgd2l0aF9pdGVtKQotICAgICAgICAgICAgICAmJiAobmNoID09IDEgfHwgbmNoID09IDMpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLSAgICBpZiAob2sgJiYgbmNoID09IDMpCi0gICAgICAgIG9rID0gKHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMSksICJhcyIpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgMikpKTsKLSAgICByZXR1cm4gb2s7Ci19Ci0KLS8qICB3aXRoX3N0bXQ6Ci0gKiAgICAwICAgICAgMSAgICAgICAgICAuLi4gICAgICAgICAgICAgLTIgICAtMQotICogICAnd2l0aCcgd2l0aF9pdGVtICgnLCcgd2l0aF9pdGVtKSogJzonIHN1aXRlCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX3dpdGhfc3RtdChub2RlICp0cmVlKQotewotICAgIGludCBpOwotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IG9rID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIHdpdGhfc3RtdCkKLSAgICAgICAgJiYgKG5jaCAlIDIgPT0gMCkKLSAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgIndpdGgiKQotICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihSQ0hJTEQodHJlZSwgLTIpKQotICAgICAgICAmJiB2YWxpZGF0ZV9zdWl0ZShSQ0hJTEQodHJlZSwgLTEpKSk7Ci0gICAgZm9yIChpID0gMTsgb2sgJiYgaSA8IG5jaCAtIDI7IGkgKz0gMikKLSAgICAgICAgb2sgPSB2YWxpZGF0ZV93aXRoX2l0ZW0oQ0hJTEQodHJlZSwgaSkpOwotICAgIHJldHVybiBvazsKLX0KLQotLyogZnVuY2RlZjogJ2RlZicgTkFNRSBwYXJhbWV0ZXJzIFsnLT4nIHRlc3RdICc6JyBzdWl0ZSAqLwotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9mdW5jZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgZnVuY2RlZik7Ci0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAobmNoID09IDUpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZGVmIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9wYXJhbWV0ZXJzKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDMpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDQpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDcpIHsKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiZGVmIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAxKSwgTkFNRSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9wYXJhbWV0ZXJzKENISUxEKHRyZWUsIDIpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3JhcnJvdyhDSElMRCh0cmVlLCAzKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDQpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsIDUpKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3N1aXRlKENISUxEKHRyZWUsIDYpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGZ1bmNkZWYiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKiBhc3luY19mdW5jZGVmOiBBU1lOQyBmdW5jZGVmICovCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FzeW5jX2Z1bmNkZWYobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBhc3luY19mdW5jZGVmKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGlmIChuY2ggPT0gMikgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDApLCBBU1lOQykKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBudW1iZXIgb2YgY2hpbGRyZW4gZm9yIGFzeW5jX2Z1bmNkZWYiKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLS8qIGFzeW5jX3N0bXQ6IEFTWU5DIChmdW5jZGVmIHwgd2l0aF9zdG10IHwgZm9yX3N0bXQpICovCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FzeW5jX3N0bXQobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCByZXMgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgYXN5bmNfc3RtdCkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAwKSwgQVNZTkMpKTsKLQotICAgIGlmIChuY2ggIT0gMikgewotICAgICAgICByZXMgPSAwOwotICAgICAgICBlcnJfc3RyaW5nKCJpbGxlZ2FsIG51bWJlciBvZiBjaGlsZHJlbiBmb3IgYXN5bmNfc3RtdCIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSBmdW5jZGVmKSB7Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9mdW5jZGVmKENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChUWVBFKENISUxEKHRyZWUsIDEpKSA9PSB3aXRoX3N0bXQpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAxKSkgPT0gZm9yX3N0bXQpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZvcihDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLQotLyogZGVjb3JhdGVkCi0gKiAgIGRlY29yYXRvcnMgKGNsYXNzZGVmIHwgZnVuY2RlZikKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGVjb3JhdGVkKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgb2sgPSAodmFsaWRhdGVfbnR5cGUodHJlZSwgZGVjb3JhdGVkKQotICAgICAgICAgICAgICAmJiAobmNoID09IDIpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RlY29yYXRvcnMoUkNISUxEKHRyZWUsIC0yKSkpOwotICAgIGlmIChUWVBFKFJDSElMRCh0cmVlLCAtMSkpID09IGZ1bmNkZWYpCi0gICAgICAgIG9rID0gb2sgJiYgdmFsaWRhdGVfZnVuY2RlZihSQ0hJTEQodHJlZSwgLTEpKTsKLSAgICBlbHNlCi0gICAgICAgIG9rID0gb2sgJiYgdmFsaWRhdGVfY2xhc3MoUkNISUxEKHRyZWUsIC0xKSk7Ci0gICAgcmV0dXJuIG9rOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9sYW1iZGVmKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGxhbWJkZWYpCi0gICAgICAgICAgICAgICAmJiAoKG5jaCA9PSAzKSB8fCAobmNoID09IDQpKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImxhbWJkYSIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBuY2ggLSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgbmNoIC0gMSkpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSA0KSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdmFyYXJnc2xpc3QoQ0hJTEQodHJlZSwgMSkpOwotICAgIGVsc2UgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICh2b2lkKSB2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAibGFtYmRlZiIpOwotCi0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2xhbWJkZWZfbm9jb25kKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGxhbWJkZWZfbm9jb25kKQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMykgfHwgKG5jaCA9PSA0KSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJsYW1iZGEiKQotICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgbmNoIC0gMikpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIG5jaCAtIDEpKSk7Ci0KLSAgICBpZiAocmVzICYmIChuY2ggPT0gNCkpCi0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3ZhcmFyZ3NsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICBlbHNlIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgImxhbWJkZWZfbm9jb25kIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGFyZ2xpc3Q6Ci0gKgotICogIChhcmd1bWVudCAnLCcpKiAoYXJndW1lbnQgWycsJ10gfCAnKicgdGVzdCBbJywnICcqKicgdGVzdF0gfCAnKionIHRlc3QpCi0gKi8KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2FyZ2xpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICBpbnQgbmNoID0gTkNIKHRyZWUpOwotICAgIGludCBpID0gMDsKLSAgICBpbnQgb2sgPSAxOwotCi0gICAgaWYgKG5jaCA8PSAwKQotICAgICAgICAvKiByYWlzZSB0aGUgcmlnaHQgZXJyb3IgZnJvbSBoYXZpbmcgYW4gaW52YWxpZCBudW1iZXIgb2YgY2hpbGRyZW4gKi8KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIG5jaCArIDEsICJhcmdsaXN0Iik7Ci0KLSAgICBpZiAobmNoID4gMSkgewotICAgICAgICBmb3IgKGk9MDsgaTxuY2g7IGkrKykgewotICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgaSkpID09IGFyZ3VtZW50KSB7Ci0gICAgICAgICAgICAgICAgbm9kZSAqY2ggPSBDSElMRCh0cmVlLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoTkNIKGNoKSA9PSAyICYmIFRZUEUoQ0hJTEQoY2gsIDEpKSA9PSBjb21wX2ZvcikgewotICAgICAgICAgICAgICAgICAgICBlcnJfc3RyaW5nKCJuZWVkICcoJywgJyknIGZvciBnZW5lcmF0b3IgZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3aGlsZSAob2sgJiYgbmNoLWkgPj0gMikgewotICAgICAgICAvKiBza2lwIGxlYWRpbmcgKGFyZ3VtZW50ICcsJykgKi8KLSAgICAgICAgb2sgPSAodmFsaWRhdGVfYXJndW1lbnQoQ0hJTEQodHJlZSwgaSkpCi0gICAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbW1hKENISUxEKHRyZWUsIGkrMSkpKTsKLSAgICAgICAgaWYgKG9rKQotICAgICAgICAgICAgaSArPSAyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBvayA9IDE7Ci0gICAgaWYgKG5jaC1pID4gMCkgewotICAgICAgICBpbnQgc3ltID0gVFlQRShDSElMRCh0cmVlLCBpKSk7Ci0KLSAgICAgICAgaWYgKHN5bSA9PSBhcmd1bWVudCkgewotICAgICAgICAgICAgb2sgPSB2YWxpZGF0ZV9hcmd1bWVudChDSElMRCh0cmVlLCBpKSk7Ci0gICAgICAgICAgICBpZiAob2sgJiYgaSsxICE9IG5jaCkgewotICAgICAgICAgICAgICAgIGVycl9zdHJpbmcoImlsbGVnYWwgYXJnbGlzdCBzcGVjaWZpY2F0aW9uIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoZXh0cmEgc3R1ZmYgb24gZW5kKSIpOwotICAgICAgICAgICAgICAgIG9rID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBhcmdsaXN0IHNwZWNpZmljYXRpb24iKTsKLSAgICAgICAgICAgIG9rID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKG9rKTsKLX0KLQotCi0KLS8qICBhcmd1bWVudDogKCB0ZXN0IFtjb21wX2Zvcl0gfAotICogICAgICAgICAgICAgIHRlc3QgJz0nIHRlc3QgfAotICogICAgICAgICAgICAgICcqKicgdGVzdCB8Ci0gKiAgICAgICAgICAgICAgJyonIHRlc3QgKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9hcmd1bWVudChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcmd1bWVudCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gRE9VQkxFU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gU1RBUikgewotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobmNoID09IDEpIHsKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5jaCA9PSAyKSB7Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkgewotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2VxdWFsKENISUxEKHRyZWUsIDEpKQotICAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDIpKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLQotLyogIHRyYWlsZXI6Ci0gKgotICogICcoJyBbYXJnbGlzdF0gJyknIHwgJ1snIHN1YnNjcmlwdGxpc3QgJ10nIHwgJy4nIE5BTUUKLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfdHJhaWxlcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9IHZhbGlkYXRlX250eXBlKHRyZWUsIHRyYWlsZXIpICYmICgobmNoID09IDIpIHx8IChuY2ggPT0gMykpOwotCi0gICAgaWYgKHJlcykgewotICAgICAgICBzd2l0Y2ggKFRZUEUoQ0hJTEQodHJlZSwgMCkpKSB7Ci0gICAgICAgICAgY2FzZSBMUEFSOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcnBhcmVuKENISUxEKHRyZWUsIG5jaCAtIDEpKTsKLSAgICAgICAgICAgIGlmIChyZXMgJiYgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hcmdsaXN0KENISUxEKHRyZWUsIDEpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTFNRQjoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAzLCAidHJhaWxlciIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfc3Vic2NyaXB0bGlzdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCAyKSwgUlNRQikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBET1Q6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInRyYWlsZXIiKQotICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIDEpLCBOQU1FKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVzID0gMDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAodm9pZCkgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInRyYWlsZXIiKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLS8qICBzdWJzY3JpcHRsaXN0OgotICoKLSAqICBzdWJzY3JpcHQgKCcsJyBzdWJzY3JpcHQpKiBbJywnXQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zdWJzY3JpcHRsaXN0KG5vZGUgKnRyZWUpCi17Ci0gICAgcmV0dXJuICh2YWxpZGF0ZV9yZXBlYXRpbmdfbGlzdCh0cmVlLCBzdWJzY3JpcHRsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3Vic2NyaXB0LCAic3Vic2NyaXB0bGlzdCIpKTsKLX0KLQotCi0vKiAgc3Vic2NyaXB0OgotICoKLSAqICAnLicgJy4nICcuJyB8IHRlc3QgfCBbdGVzdF0gJzonIFt0ZXN0XSBbc2xpY2VvcF0KLSAqLwotc3RhdGljIGludAotdmFsaWRhdGVfc3Vic2NyaXB0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG9mZnNldCA9IDA7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gdmFsaWRhdGVfbnR5cGUodHJlZSwgc3Vic2NyaXB0KSAmJiAobmNoID49IDEpICYmIChuY2ggPD0gNCk7Ci0KLSAgICBpZiAoIXJlcykgewotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBlcnJfc3RyaW5nKCJpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHN1YnNjcmlwdCBub2RlIik7Ci0gICAgICAgIHJldHVybiAoMCk7Ci0gICAgfQotICAgIGlmIChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBET1QpCi0gICAgICAgIC8qIHRha2UgY2FyZSBvZiAoJy4nICcuJyAnLicpIHBvc3NpYmlsaXR5ICovCi0gICAgICAgIHJldHVybiAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMywgInN1YnNjcmlwdCIpCi0gICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfZG90KENISUxEKHRyZWUsIDApKQotICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2RvdChDSElMRCh0cmVlLCAxKSkKLSAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9kb3QoQ0hJTEQodHJlZSwgMikpKTsKLSAgICBpZiAobmNoID09IDEpIHsKLSAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHRlc3QpCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsIDApKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICByZXR1cm4gKHJlcyk7Ci0gICAgfQotICAgIC8qICBNdXN0IGJlIFt0ZXN0XSAnOicgW3Rlc3RdIFtzbGljZW9wXSwKLSAgICAgKiAgYnV0IGF0IGxlYXN0IG9uZSBvZiB0aGUgb3B0aW9uYWwgY29tcG9uZW50cyB3aWxsCi0gICAgICogIGJlIHByZXNlbnQsIGJ1dCB3ZSBkb24ndCBrbm93IHdoaWNoIHlldC4KLSAgICAgKi8KLSAgICBpZiAoKFRZUEUoQ0hJTEQodHJlZSwgMCkpICE9IENPTE9OKSB8fCAobmNoID09IDQpKSB7Ci0gICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwotICAgICAgICBvZmZzZXQgPSAxOwotICAgIH0KLSAgICBpZiAocmVzKQotICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb2xvbihDSElMRCh0cmVlLCBvZmZzZXQpKTsKLSAgICBpZiAocmVzKSB7Ci0gICAgICAgIGludCByZW0gPSBuY2ggLSArK29mZnNldDsKLSAgICAgICAgaWYgKHJlbSkgewotICAgICAgICAgICAgaWYgKFRZUEUoQ0hJTEQodHJlZSwgb2Zmc2V0KSkgPT0gdGVzdCkgewotICAgICAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgb2Zmc2V0KSk7Ci0gICAgICAgICAgICAgICAgKytvZmZzZXQ7Ci0gICAgICAgICAgICAgICAgLS1yZW07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocmVzICYmIHJlbSkKLSAgICAgICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zbGljZW9wKENISUxEKHRyZWUsIG9mZnNldCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiAocmVzKTsKLX0KLQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9zbGljZW9wKG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKChuY2ggPT0gMSkgfHwgdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMiwgInNsaWNlb3AiKSkKLSAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbnR5cGUodHJlZSwgc2xpY2VvcCk7Ci0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgInNsaWNlb3AiKTsKLSAgICB9Ci0gICAgaWYgKHJlcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfY29sb24oQ0hJTEQodHJlZSwgMCkpOwotICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdChDSElMRCh0cmVlLCAxKSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIobm9kZSAqbikKLXsKLSAgICBpZiAoVFlQRShuKSA9PSB0ZXN0KQotICAgICAgICByZXR1cm4gdmFsaWRhdGVfdGVzdChuKTsKLSAgICByZXR1cm4gdmFsaWRhdGVfc3Rhcl9leHByKG4pOwotfQotCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9leHByX29yX3N0YXJfZXhwcihub2RlICpuKQotewotICAgIGlmIChUWVBFKG4pID09IGV4cHIpCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKG4pOwotICAgIHJldHVybiB2YWxpZGF0ZV9zdGFyX2V4cHIobik7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXhwcmxpc3Qobm9kZSAqdHJlZSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3JlcGVhdGluZ19saXN0KHRyZWUsIGV4cHJsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcl9vcl9zdGFyX2V4cHIsICJleHBybGlzdCIpKTsKLX0KLQotLyogSW5jcmVtZW50aW5nIHZhbGlkYXRlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbnplcm8gaWZmIHN1Y2Nlc3MgKGxpa2Ugb3RoZXIKLSAqIHZhbGlkYXRlIGZ1bmN0aW9ucywgYW5kIGFkdmFuY2UgKmkgYnkgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2hlZCBwYXR0ZXJuLiAqLwotCi0vKiB0ZXN0ICc6JyB0ZXN0ICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV90ZXN0X2NvbG9uX3Rlc3RfaW5jKG5vZGUgKnRyZWUsIGludCAqaSkKLXsKLSAgICByZXR1cm4gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgKCppKSsrKSkKLSAgICAgICAgICAgICYmIHZhbGlkYXRlX2NvbG9uKENISUxEKHRyZWUsICgqaSkrKykpCi0gICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0KENISUxEKHRyZWUsICgqaSkrKykpKTsKLX0KLQotLyogdGVzdCAnOicgdGVzdCB8ICcqKicgZXhwciAqLwotc3RhdGljIGludAotdmFsaWRhdGVfZGljdF9lbGVtZW50X2luYyhub2RlICp0cmVlLCBpbnQgKmkpCi17Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gMDsKLSAgICBpZiAobmNoIC0gKmkgPj0gMikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCAqaSsxKSkgPT0gQ09MT04pIHsKLSAgICAgICAgICAgIC8qIHRlc3QgJzonIHRlc3QgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RfY29sb25fdGVzdF9pbmModHJlZSwgaSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiAnKionIGV4cHIgKi8KLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9kb3VibGVzdGFyKENISUxEKHRyZWUsICgqaSkrKykpCi0gICAgICAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX2V4cHIoQ0hJTEQodHJlZSwgKCppKSsrKSkpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiAgZGljdG9yc2V0bWFrZXI6Ci0gKgotICogICAoICgodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikKLSAqICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCAnOicgdGVzdCB8ICcqKicgZXhwcikpKiBbJywnXSkpIHwKLSAqICAgICAoKHRlc3QgfCAnKicgdGVzdCkKLSAqICAgICAgKGNvbXBfZm9yIHwgKCcsJyAodGVzdCB8ICcqJyB0ZXN0KSkqIFsnLCddKSkgKQotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9kaWN0b3JzZXRtYWtlcihub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlczsKLSAgICBpbnQgaSA9IDA7Ci0KLSAgICByZXMgPSB2YWxpZGF0ZV9udHlwZSh0cmVlLCBkaWN0b3JzZXRtYWtlcik7Ci0gICAgaWYgKCFyZXMpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgaWYgKG5jaCAtIGkgPCAxKSB7Ci0gICAgICAgIC8qIFVuY29uZGl0aW9uYWxseSByYWlzZS4gKi8KLSAgICAgICAgKHZvaWQpIHZhbGlkYXRlX251bW5vZGVzKHRyZWUsIDEsICJkaWN0b3JzZXRtYWtlciIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAobmNoIC0gaSA+PSAyCi0gICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCBpKzEpKSA9PSBDT0xPTikgfHwKLSAgICAgICAgICAgIChUWVBFKENISUxEKHRyZWUsIGkpKSA9PSBET1VCTEVTVEFSKSkpIHsKLSAgICAgICAgLyogRGljdGlvbmFyeSBkaXNwbGF5IG9yIGRpY3Rpb25hcnkgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gNCAmJiBUWVBFKENISUxEKHRyZWUsIGkrMykpID09IGNvbXBfZm9yKSB7Ci0gICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGNvbXByZWhlbnNpb24uICovCi0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfdGVzdF9jb2xvbl90ZXN0X2luYyh0cmVlLCAmaSkKLSAgICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgaSsrKSkpOwotICAgICAgICAgICAgaWYgKCFyZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBEaWN0aW9uYXJ5IGRpc3BsYXkuICovCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3RfdmFyaWFibGUoCi0gICAgICAgICAgICAgICAgICAgIHRyZWUsCi0gICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAotICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9kaWN0X2VsZW1lbnRfaW5jLAotICAgICAgICAgICAgICAgICAgICAmaSwKLSAgICAgICAgICAgICAgICAgICAgImRpY3RvcnNldG1ha2VyIik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvKiBTZXQgZGlzcGxheSBvciBzZXQgY29tcHJlaGVuc2lvbi4gKi8KLSAgICAgICAgaWYgKG5jaCAtIGkgPj0gMiAmJiBUWVBFKENISUxEKHRyZWUsIGkgKyAxKSkgPT0gY29tcF9mb3IpIHsKLSAgICAgICAgICAgIC8qIFNldCBjb21wcmVoZW5zaW9uLiAqLwotICAgICAgICAgICAgcmVzID0gKHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgaSsrKSkKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9jb21wX2ZvcihDSElMRCh0cmVlLCBpKyspKSk7Ci0gICAgICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIFNldCBkaXNwbGF5LiAqLwotICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfcmVwZWF0aW5nX2xpc3QodHJlZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3RvcnNldG1ha2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfdGVzdF9vcl9zdGFyX2V4cHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdG9yc2V0bWFrZXIiKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChuY2ggLSBpID4gMCkgewotICAgICAgICBlcnJfc3RyaW5nKCJJbGxlZ2FsIHRyYWlsaW5nIG5vZGVzIGZvciBkaWN0b3JzZXRtYWtlci4iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZXZhbF9pbnB1dChub2RlICp0cmVlKQotewotICAgIGludCBwb3M7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKTsKLSAgICBpbnQgcmVzID0gKHZhbGlkYXRlX250eXBlKHRyZWUsIGV2YWxfaW5wdXQpCi0gICAgICAgICAgICAgICAmJiAobmNoID49IDIpCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCAwKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX250eXBlKENISUxEKHRyZWUsIG5jaCAtIDEpLCBFTkRNQVJLRVIpKTsKLQotICAgIGZvciAocG9zID0gMTsgcmVzICYmIChwb3MgPCAobmNoIC0gMSkpOyArK3BvcykKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfbnR5cGUoQ0hJTEQodHJlZSwgcG9zKSwgTkVXTElORSk7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotc3RhdGljIGludAotdmFsaWRhdGVfbm9kZShub2RlICp0cmVlKQotewotICAgIGludCAgIG5jaCAgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8qIG51bS4gY2hpbGRyZW4gb24gY3VycmVudCBub2RlICAqLwotICAgIGludCAgIHJlcyAgPSAxOyAgICAgICAgICAgICAgICAgICAgIC8qIHJlc3VsdCB2YWx1ZSAgICAgICAgICAgICAgICAgICAqLwotICAgIG5vZGUqIG5leHQgPSAwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gcHJvY2VzcyBhZnRlciB0aGlzIG9uZSAqLwotCi0gICAgd2hpbGUgKHJlcyAmJiAodHJlZSAhPSAwKSkgewotICAgICAgICBuY2ggID0gTkNIKHRyZWUpOwotICAgICAgICBuZXh0ID0gMDsKLSAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIERlZmluaXRpb24gbm9kZXMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICBjYXNlIGFzeW5jX2Z1bmNkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3luY19mdW5jZGVmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhc3luY19zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXN5bmNfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZnVuY2RlZjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2Z1bmNkZWYodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHdpdGhfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3dpdGhfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgY2xhc3NkZWY6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jbGFzcyh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZGVjb3JhdGVkOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGVjb3JhdGVkKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogICJUcml2aWFsIiBwYXJzZSB0cmVlIG5vZGVzLgotICAgICAgICAgICAgICogIChXaHkgZGlkIEkgY2FsbCB0aGVzZSB0cml2aWFsPykKLSAgICAgICAgICAgICAqLwotICAgICAgICAgIGNhc2Ugc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHNtYWxsX3N0bXQ6Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogIGV4cHJfc3RtdCB8IGRlbF9zdG10IHwgcGFzc19zdG10IHwgZmxvd19zdG10IHwKLSAgICAgICAgICAgICAqICBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgbm9ubG9jYWxfc3RtdCB8IGFzc2VydF9zdG10Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NtYWxsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZsb3dfc3RtdDoKLSAgICAgICAgICAgIHJlcyAgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImZsb3dfc3RtdCIpCi0gICAgICAgICAgICAgICAgICAgICYmICgoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gYnJlYWtfc3RtdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IChUWVBFKENISUxEKHRyZWUsIDApKSA9PSBjb250aW51ZV9zdG10KQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKFRZUEUoQ0hJTEQodHJlZSwgMCkpID09IHlpZWxkX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gcmV0dXJuX3N0bXQpCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAoVFlQRShDSElMRCh0cmVlLCAwKSkgPT0gcmFpc2Vfc3RtdCkpKTsKLSAgICAgICAgICAgIGlmIChyZXMpCi0gICAgICAgICAgICAgICAgbmV4dCA9IENISUxEKHRyZWUsIDApOwotICAgICAgICAgICAgZWxzZSBpZiAobmNoID09IDEpCi0gICAgICAgICAgICAgICAgZXJyX3N0cmluZygiaWxsZWdhbCBmbG93X3N0bXQgdHlwZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB5aWVsZF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBDb21wb3VuZCBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBzaW1wbGVfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3NpbXBsZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wb3VuZF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcG91bmRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBGdW5kYW1lbnRhbCBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSBleHByX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHByX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGRlbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZGVsX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHBhc3Nfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9ICh2YWxpZGF0ZV9udW1ub2Rlcyh0cmVlLCAxLCAicGFzcyIpCi0gICAgICAgICAgICAgICAgICAgJiYgdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInBhc3MiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGJyZWFrX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImJyZWFrIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiYnJlYWsiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbnRpbnVlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSAodmFsaWRhdGVfbnVtbm9kZXModHJlZSwgMSwgImNvbnRpbnVlIikKLSAgICAgICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9uYW1lKENISUxEKHRyZWUsIDApLCAiY29udGludWUiKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHJldHVybl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfcmV0dXJuX3N0bXQodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHJhaXNlX3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9yYWlzZV9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfbmFtZToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9uYW1lKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBpbXBvcnRfZnJvbToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ltcG9ydF9mcm9tKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBnbG9iYWxfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2dsb2JhbF9zdG10KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBub25sb2NhbF9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm9ubG9jYWxfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXNzZXJ0X3N0bXQ6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9hc3NlcnRfc3RtdCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgaWZfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2lmKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB3aGlsZV9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfd2hpbGUodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZvcl9zdG10OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfZm9yKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB0cnlfc3RtdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3RyeSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ugc3VpdGU6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdWl0ZSh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqICBFeHByZXNzaW9uIG5vZGVzLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgY2FzZSB0ZXN0bGlzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3RsaXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSB5aWVsZF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeWllbGRfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdGVzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFuZF90ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIG5vdF90ZXN0OgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfbm90X3Rlc3QodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGNvbXBhcmlzb246Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9jb21wYXJpc29uKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBleHBybGlzdDoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHJsaXN0KHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBjb21wX29wOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9vcCh0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgZXhwcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHhvcl9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfeG9yX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGFuZF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYW5kX2V4cHIodHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIHNoaWZ0X2V4cHI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9zaGlmdF9leHByKHRyZWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBhcml0aF9leHByOgotICAgICAgICAgICAgcmVzID0gdmFsaWRhdGVfYXJpdGhfZXhwcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgdGVybToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlcm0odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIGZhY3RvcjoKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2ZhY3Rvcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgcG93ZXI6Ci0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9wb3dlcih0cmVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgYXRvbToKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX2F0b20odHJlZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAvKiBIb3BlZnVsbHkgbmV2ZXIgcmVhY2hlZCEgKi8KLSAgICAgICAgICAgIGVycl9zdHJpbmcoInVucmVjb2duaXplZCBub2RlIHR5cGUiKTsKLSAgICAgICAgICAgIHJlcyA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICB0cmVlID0gbmV4dDsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXMpOwotfQotCi0KLXN0YXRpYyBpbnQKLXZhbGlkYXRlX2V4cHJfdHJlZShub2RlICp0cmVlKQotewotICAgIGludCByZXMgPSB2YWxpZGF0ZV9ldmFsX2lucHV0KHRyZWUpOwotCi0gICAgaWYgKCFyZXMgJiYgIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIGVycl9zdHJpbmcoImNvdWxkIG5vdCB2YWxpZGF0ZSBleHByZXNzaW9uIHR1cGxlIik7Ci0KLSAgICByZXR1cm4gKHJlcyk7Ci19Ci0KLQotLyogIGZpbGVfaW5wdXQ6Ci0gKiAgICAgIChORVdMSU5FIHwgc3RtdCkqIEVORE1BUktFUgotICovCi1zdGF0aWMgaW50Ci12YWxpZGF0ZV9maWxlX2lucHV0KG5vZGUgKnRyZWUpCi17Ci0gICAgaW50IGo7Ci0gICAgaW50IG5jaCA9IE5DSCh0cmVlKSAtIDE7Ci0gICAgaW50IHJlcyA9ICgobmNoID49IDApCi0gICAgICAgICAgICAgICAmJiB2YWxpZGF0ZV9udHlwZShDSElMRCh0cmVlLCBuY2gpLCBFTkRNQVJLRVIpKTsKLQotICAgIGZvciAoaiA9IDA7IHJlcyAmJiAoaiA8IG5jaCk7ICsraikgewotICAgICAgICBpZiAoVFlQRShDSElMRCh0cmVlLCBqKSkgPT0gc3RtdCkKLSAgICAgICAgICAgIHJlcyA9IHZhbGlkYXRlX3N0bXQoQ0hJTEQodHJlZSwgaikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSB2YWxpZGF0ZV9uZXdsaW5lKENISUxEKHRyZWUsIGopKTsKLSAgICB9Ci0gICAgLyogIFRoaXMgc3RheXMgaW4gdG8gcHJldmVudCBhbnkgaW50ZXJuYWwgZmFpbHVyZXMgZnJvbSBnZXR0aW5nIHRvIHRoZQotICAgICAqICB1c2VyLiAgSG9wZWZ1bGx5LCB0aGlzIHdvbid0IGJlIG5lZWRlZC4gIElmIGEgdXNlciByZXBvcnRzIGdldHRpbmcKLSAgICAgKiAgdGhpcywgd2UgaGF2ZSBzb21lIGRlYnVnZ2luZyB0byBkby4KLSAgICAgKi8KLSAgICBpZiAoIXJlcyAmJiAhUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZXJyX3N0cmluZygiVkFMSURBVElPTiBGQUlMVVJFOiByZXBvcnQgdGhpcyB0byB0aGUgbWFpbnRhaW5lciEiKTsKLQotICAgIHJldHVybiAocmVzKTsKLX0KLQotc3RhdGljIGludAotdmFsaWRhdGVfZW5jb2RpbmdfZGVjbChub2RlICp0cmVlKQotewotICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICgobmNoID09IDEpCi0gICAgICAgICYmIHZhbGlkYXRlX2ZpbGVfaW5wdXQoQ0hJTEQodHJlZSwgMCkpKTsKLQotICAgIGlmICghcmVzICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBlcnJfc3RyaW5nKCJFcnJvciBQYXJzaW5nIGVuY29kaW5nX2RlY2wiKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCoKIHBpY2tsZV9jb25zdHJ1Y3RvciA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCBkNzM3NjI0Li43YWFlNWM3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC0zMiw2ICszMiwxMiBAQAogI2luY2x1ZGUgIndpbnJlcGFyc2UuaCIKICNlbmRpZgogCisvKiBPbiBhbmRyb2lkIEFQSSBsZXZlbCAyMSwgJ0FUX0VBQ0NFU1MnIGlzIG5vdCBkZWNsYXJlZCBhbHRob3VnaAorICogSEFWRV9GQUNDRVNTQVQgaXMgZGVmaW5lZC4gKi8KKyNpZmRlZiBfX0FORFJPSURfXworI3VuZGVmIEhBVkVfRkFDQ0VTU0FUCisjZW5kaWYKKwogI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBuZWVkZWQgZm9yIGN0ZXJtaWQoKSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTEyNyw2ICsxMzMsMTMgQEAKICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTElOVVhfUkFORE9NX0gKKyMgIGluY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorIyAgaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNlbmRpZgorCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKQogIyAgZGVmaW5lIFRFUk1TSVpFX1VTRV9DT05JTwogI2VsaWYgZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKQpAQCAtMTUxLDYgKzE2NCw4IEBACiAjZGVmaW5lIEhBVkVfR0VUTE9HSU4gICAxCiAjZGVmaW5lIEhBVkVfU1BBV05WICAgICAxCiAjZGVmaW5lIEhBVkVfRVhFQ1YgICAgICAxCisjZGVmaW5lIEhBVkVfV1NQQVdOViAgICAxCisjZGVmaW5lIEhBVkVfV0VYRUNWICAgICAxCiAjZGVmaW5lIEhBVkVfUElQRSAgICAgICAxCiAjZGVmaW5lIEhBVkVfU1lTVEVNICAgICAxCiAjZGVmaW5lIEhBVkVfQ1dBSVQgICAgICAxCkBAIC02MzQsMjIgKzY0OSwxNCBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSMgIGRlZmluZSBfUHlMb25nX0Zyb21EZXYgUHlMb25nX0Zyb21Mb25nTG9uZwotI2Vsc2UKLSMgIGRlZmluZSBfUHlMb25nX0Zyb21EZXYgUHlMb25nX0Zyb21Mb25nCi0jZW5kaWYKKyNkZWZpbmUgX1B5TG9uZ19Gcm9tRGV2IFB5TG9uZ19Gcm9tTG9uZ0xvbmcKIAogCiAjaWYgZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikKIHN0YXRpYyBpbnQKIF9QeV9EZXZfQ29udmVydGVyKFB5T2JqZWN0ICpvYmosIHZvaWQgKnApCiB7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAqKChkZXZfdCAqKXApID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhvYmopOwotI2Vsc2UKLSAgICAqKChkZXZfdCAqKXApID0gUHlMb25nX0FzVW5zaWduZWRMb25nKG9iaik7Ci0jZW5kaWYKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIDE7CkBAIC02NzEsMjEgKzY3OCwyMCBAQAogI2VuZGlmCiAKIHN0YXRpYyBpbnQKLV9mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIGludCAqcCwgY29uc3QgY2hhciAqYWxsb3dlZCkKK19mZF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIGludCAqcCkKIHsKICAgICBpbnQgb3ZlcmZsb3c7CiAgICAgbG9uZyBsb25nX3ZhbHVlOwogCiAgICAgUHlPYmplY3QgKmluZGV4ID0gUHlOdW1iZXJfSW5kZXgobyk7CiAgICAgaWYgKGluZGV4ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBzaG91bGQgYmUgJXMsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgYWxsb3dlZCwgUHlfVFlQRShvKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGFzc2VydChQeUxvbmdfQ2hlY2soaW5kZXgpKTsKICAgICBsb25nX3ZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KGluZGV4LCAmb3ZlcmZsb3cpOwogICAgIFB5X0RFQ1JFRihpbmRleCk7CisgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKICAgICBpZiAob3ZlcmZsb3cgPiAwIHx8IGxvbmdfdmFsdWUgPiBJTlRfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImZkIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIik7CkBAIC03MDgsNyArNzE0LDE1IEBACiAgICAgICAgICooaW50ICopcCA9IERFRkFVTFRfRElSX0ZEOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgcmV0dXJuIF9mZF9jb252ZXJ0ZXIobywgKGludCAqKXAsICJpbnRlZ2VyIik7CisgICAgZWxzZSBpZiAoUHlJbmRleF9DaGVjayhvKSkgeworICAgICAgICByZXR1cm4gX2ZkX2NvbnZlcnRlcihvLCAoaW50ICopcCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAogCkBAIC03MjMsNyArNzM3LDcgQEAKICAqCiAgKiAgICogT24gV2luZG93cywgaWYgd2UgZ2V0IGEgKFVuaWNvZGUpIHN0cmluZyB3ZQogICogICAgIGV4dHJhY3QgdGhlIHdjaGFyX3QgKiBhbmQgcmV0dXJuIGl0OyBpZiB3ZSBnZXQKLSAqICAgICBieXRlcyB3ZSBleHRyYWN0IHRoZSBjaGFyICogYW5kIHJldHVybiB0aGF0LgorICogICAgIGJ5dGVzIHdlIGRlY29kZSB0byB3Y2hhcl90ICogYW5kIHJldHVybiB0aGF0LgogICoKICAqICAgKiBPbiBhbGwgb3RoZXIgcGxhdGZvcm1zLCBzdHJpbmdzIGFyZSBlbmNvZGVkCiAgKiAgICAgdG8gYnl0ZXMgdXNpbmcgUHlVbmljb2RlX0ZTQ29udmVydGVyLCB0aGVuIHdlCkBAIC03NTUsNyArNzY5LDkgQEAKICAqICAgICBhbmQgd2FzIG5vdCBlbmNvZGVkLiAgKE9ubHkgdXNlZCBvbiBXaW5kb3dzLikKICAqICAgcGF0aC5uYXJyb3cKICAqICAgICBQb2ludHMgdG8gdGhlIHBhdGggaWYgaXQgd2FzIGV4cHJlc3NlZCBhcyBieXRlcywKLSAqICAgICBvciBpdCB3YXMgVW5pY29kZSBhbmQgd2FzIGVuY29kZWQgdG8gYnl0ZXMuCisgKiAgICAgb3IgaXQgd2FzIFVuaWNvZGUgYW5kIHdhcyBlbmNvZGVkIHRvIGJ5dGVzLiAoT24gV2luZG93cywKKyAqICAgICBpcyBhIG5vbi16ZXJvIGludGVnZXIgaWYgdGhlIHBhdGggd2FzIGV4cHJlc3NlZCBhcyBieXRlcy4KKyAqICAgICBUaGUgdHlwZSBpcyBkZWxpYmVyYXRlbHkgaW5jb21wYXRpYmxlIHRvIHByZXZlbnQgbWlzdXNlLikKICAqICAgcGF0aC5mZAogICogICAgIENvbnRhaW5zIGEgZmlsZSBkZXNjcmlwdG9yIGlmIHBhdGguYWNjZXB0X2ZkIHdhcyB0cnVlCiAgKiAgICAgYW5kIHRoZSBjYWxsZXIgcHJvdmlkZWQgYSBzaWduZWQgaW50ZWdlciBpbnN0ZWFkIG9mIGFueQpAQCAtNzk5LDE2ICs4MTUsMjUgQEAKICAgICBjb25zdCBjaGFyICphcmd1bWVudF9uYW1lOwogICAgIGludCBudWxsYWJsZTsKICAgICBpbnQgYWxsb3dfZmQ7Ci0gICAgd2NoYXJfdCAqd2lkZTsKLSAgICBjaGFyICpuYXJyb3c7CisgICAgY29uc3Qgd2NoYXJfdCAqd2lkZTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgQk9PTCBuYXJyb3c7CisjZWxzZQorICAgIGNvbnN0IGNoYXIgKm5hcnJvdzsKKyNlbmRpZgogICAgIGludCBmZDsKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKICAgICBQeU9iamVjdCAqb2JqZWN0OwogICAgIFB5T2JqZWN0ICpjbGVhbnVwOwogfSBwYXRoX3Q7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisjZGVmaW5lIFBBVEhfVF9JTklUSUFMSVpFKGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCkgXAorICAgIHtmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQsIE5VTEwsIEZBTFNFLCAtMSwgMCwgTlVMTCwgTlVMTH0KKyNlbHNlCiAjZGVmaW5lIFBBVEhfVF9JTklUSUFMSVpFKGZ1bmN0aW9uX25hbWUsIGFyZ3VtZW50X25hbWUsIG51bGxhYmxlLCBhbGxvd19mZCkgXAogICAgIHtmdW5jdGlvbl9uYW1lLCBhcmd1bWVudF9uYW1lLCBudWxsYWJsZSwgYWxsb3dfZmQsIE5VTEwsIE5VTEwsIC0xLCAwLCBOVUxMLCBOVUxMfQorI2VuZGlmCiAKIHN0YXRpYyB2b2lkCiBwYXRoX2NsZWFudXAocGF0aF90ICpwYXRoKSB7CkBAIC04MTgsMTEgKzg0MywxOSBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXRoX2NvbnZlcnRlcihQeU9iamVjdCAqbywgdm9pZCAqcCkgeworcGF0aF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIHZvaWQgKnApCit7CiAgICAgcGF0aF90ICpwYXRoID0gKHBhdGhfdCAqKXA7Ci0gICAgUHlPYmplY3QgKnVuaWNvZGUsICpieXRlczsKKyAgICBQeU9iamVjdCAqYnl0ZXMsICp0b19jbGVhbnVwID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbmd0aDsKLSAgICBjaGFyICpuYXJyb3c7CisgICAgaW50IGlzX2luZGV4LCBpc19idWZmZXIsIGlzX2J5dGVzLCBpc191bmljb2RlOworICAgIC8qIERlZmF1bHQgdG8gZmFpbHVyZSwgZm9yY2luZyBleHBsaWNpdCBzaWduYWxpbmcgb2Ygc3VjY2Nlc3MuICovCisgICAgaW50IHJldCA9IDA7CisgICAgY29uc3QgY2hhciAqbmFycm93OworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBQeU9iamVjdCAqd287CisgICAgY29uc3Qgd2NoYXJfdCAqd2lkZTsKKyNlbmRpZgogCiAjZGVmaW5lIEZPUk1BVF9FWENFUFRJT04oZXhjLCBmbXQpIFwKICAgICBQeUVycl9Gb3JtYXQoZXhjLCAiJXMlcyIgZm10LCBcCkBAIC04MzYsMTIyICs4NjksMTkxIEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIC8qIGVuc3VyZSBpdCdzIGFsd2F5cyBzYWZlIHRvIGNhbGwgcGF0aF9jbGVhbnVwKCkgKi8KKyAgICAvKiBFbnN1cmUgaXQncyBhbHdheXMgc2FmZSB0byBjYWxsIHBhdGhfY2xlYW51cCgpLiAqLwogICAgIHBhdGgtPmNsZWFudXAgPSBOVUxMOwogCi0gICAgaWYgKG8gPT0gUHlfTm9uZSkgewotICAgICAgICBpZiAoIXBhdGgtPm51bGxhYmxlKSB7Ci0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNwZWNpZnkgTm9uZSBmb3IgJXMgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9CisgICAgaWYgKChvID09IFB5X05vbmUpICYmIHBhdGgtPm51bGxhYmxlKSB7CiAgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgcGF0aC0+bmFycm93ID0gRkFMU0U7CisjZWxzZQogICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworI2VuZGlmCiAgICAgICAgIHBhdGgtPmxlbmd0aCA9IDA7CiAgICAgICAgIHBhdGgtPm9iamVjdCA9IG87CiAgICAgICAgIHBhdGgtPmZkID0gLTE7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvKTsKLSAgICBpZiAodW5pY29kZSkgewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgd2NoYXJfdCAqd2lkZTsKKyAgICAvKiBPbmx5IGNhbGwgdGhpcyBoZXJlIHNvIHRoYXQgd2UgZG9uJ3QgdHJlYXQgdGhlIHJldHVybiB2YWx1ZSBvZgorICAgICAgIG9zLmZzcGF0aCgpIGFzIGFuIGZkIG9yIGJ1ZmZlci4gKi8KKyAgICBpc19pbmRleCA9IHBhdGgtPmFsbG93X2ZkICYmIFB5SW5kZXhfQ2hlY2sobyk7CisgICAgaXNfYnVmZmVyID0gUHlPYmplY3RfQ2hlY2tCdWZmZXIobyk7CisgICAgaXNfYnl0ZXMgPSBQeUJ5dGVzX0NoZWNrKG8pOworICAgIGlzX3VuaWNvZGUgPSBQeVVuaWNvZGVfQ2hlY2sobyk7CiAKLSAgICAgICAgd2lkZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaWNvZGUsICZsZW5ndGgpOworICAgIGlmICghaXNfaW5kZXggJiYgIWlzX2J1ZmZlciAmJiAhaXNfdW5pY29kZSAmJiAhaXNfYnl0ZXMpIHsKKyAgICAgICAgLyogSW5saW5lIFB5T1NfRlNQYXRoKCkgZm9yIGJldHRlciBlcnJvciBtZXNzYWdlcy4gKi8KKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19mc3BhdGhfXyk7CisgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKworICAgICAgICBmdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX19mc3BhdGhfXyk7CisgICAgICAgIGlmIChOVUxMID09IGZ1bmMpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIG8gPSB0b19jbGVhbnVwID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBpZiAoTlVMTCA9PSBvKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKG8pKSB7CisgICAgICAgICAgICBpc191bmljb2RlID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUJ5dGVzX0NoZWNrKG8pKSB7CisgICAgICAgICAgICBpc19ieXRlcyA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaXNfdW5pY29kZSkgeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgd2lkZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKG8sICZsZW5ndGgpOwogICAgICAgICBpZiAoIXdpZGUpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIGlmIChsZW5ndGggPiAzMjc2NykgewogICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIGlmICh3Y3NsZW4od2lkZSkgIT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAKICAgICAgICAgcGF0aC0+d2lkZSA9IHdpZGU7Ci0gICAgICAgIHBhdGgtPm5hcnJvdyA9IE5VTEw7CiAgICAgICAgIHBhdGgtPmxlbmd0aCA9IGxlbmd0aDsKICAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKICAgICAgICAgcGF0aC0+ZmQgPSAtMTsKLSAgICAgICAgcGF0aC0+Y2xlYW51cCA9IHVuaWNvZGU7Ci0gICAgICAgIHJldHVybiBQeV9DTEVBTlVQX1NVUFBPUlRFRDsKKyAgICAgICAgcmV0ID0gMTsKKyAgICAgICAgZ290byBleGl0OwogI2Vsc2UKLSAgICAgICAgaW50IGNvbnZlcnRlZCA9IFB5VW5pY29kZV9GU0NvbnZlcnRlcih1bmljb2RlLCAmYnl0ZXMpOwotICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7Ci0gICAgICAgIGlmICghY29udmVydGVkKQotICAgICAgICAgICAgYnl0ZXMgPSBOVUxMOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAmYnl0ZXMpKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KICNlbmRpZgogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKG8pKQotICAgICAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3Qobyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJ5dGVzID0gTlVMTDsKKyAgICBlbHNlIGlmIChpc19ieXRlcykgeworICAgICAgICBieXRlcyA9IG87CisgICAgICAgIFB5X0lOQ1JFRihieXRlcyk7CisgICAgfQorICAgIGVsc2UgaWYgKGlzX2J1ZmZlcikgeworICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAiJXMlcyVzIHNob3VsZCBiZSAlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gcGF0aC0+ZnVuY3Rpb25fbmFtZSA6ICIiLAorICAgICAgICAgICAgcGF0aC0+ZnVuY3Rpb25fbmFtZSA/ICI6ICIgICAgICAgICAgICAgICAgOiAiIiwKKyAgICAgICAgICAgIHBhdGgtPmFyZ3VtZW50X25hbWUgPyBwYXRoLT5hcmd1bWVudF9uYW1lIDogInBhdGgiLAorICAgICAgICAgICAgcGF0aC0+YWxsb3dfZmQgJiYgcGF0aC0+bnVsbGFibGUgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2UsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVnZXIgb3IgTm9uZSIgOgorICAgICAgICAgICAgcGF0aC0+YWxsb3dfZmQgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgaW50ZWdlciIgOgorICAgICAgICAgICAgcGF0aC0+bnVsbGFibGUgPyAic3RyaW5nLCBieXRlcywgb3MuUGF0aExpa2Ugb3IgTm9uZSIgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nLCBieXRlcyBvciBvcy5QYXRoTGlrZSIsCisgICAgICAgICAgICBQeV9UWVBFKG8pLT50cF9uYW1lKSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tT2JqZWN0KG8pOwogICAgICAgICBpZiAoIWJ5dGVzKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgaWYgKHBhdGgtPmFsbG93X2ZkKSB7Ci0gICAgICAgICAgICAgICAgaW50IGZkOwotICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBfZmRfY29udmVydGVyKG8sICZmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIiKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBwYXRoLT5sZW5ndGggPSAwOwotICAgICAgICAgICAgICAgICAgICBwYXRoLT5vYmplY3QgPSBvOwotICAgICAgICAgICAgICAgICAgICBwYXRoLT5mZCA9IGZkOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgIH0KLQotICAgIGlmICghYnl0ZXMpIHsKLSAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19UeXBlRXJyb3IsICJpbGxlZ2FsIHR5cGUgZm9yICVzIHBhcmFtZXRlciIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KKyAgICBlbHNlIGlmIChpc19pbmRleCkgeworICAgICAgICBpZiAoIV9mZF9jb252ZXJ0ZXIobywgJnBhdGgtPmZkKSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkgewotICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgICAgIHBhdGgtPm5hcnJvdyA9IEZBTFNFOworI2Vsc2UKKyAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKICNlbmRpZgorICAgICAgICBwYXRoLT5sZW5ndGggPSAwOworICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworICAgICAgICByZXQgPSAxOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorICAgIGVsc2UgeworIGVycm9yX2V4aXQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlcyVzJXMgc2hvdWxkIGJlICVzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyBwYXRoLT5mdW5jdGlvbl9uYW1lIDogIiIsCisgICAgICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gIjogIiAgICAgICAgICAgICAgICA6ICIiLAorICAgICAgICAgICAgcGF0aC0+YXJndW1lbnRfbmFtZSA/IHBhdGgtPmFyZ3VtZW50X25hbWUgOiAicGF0aCIsCisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCAmJiBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBvciBOb25lIiA6CisgICAgICAgICAgICBwYXRoLT5hbGxvd19mZCA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyIiA6CisgICAgICAgICAgICBwYXRoLT5udWxsYWJsZSA/ICJzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBOb25lIiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIiwKKyAgICAgICAgICAgIFB5X1RZUEUobyktPnRwX25hbWUpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogCiAgICAgbGVuZ3RoID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChsZW5ndGggPiBNQVhfUEFUSC0xKSB7Ci0gICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgIiVzIHRvbyBsb25nIGZvciBXaW5kb3dzIik7Ci0gICAgICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSNlbmRpZgotCiAgICAgbmFycm93ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwogICAgIGlmICgoc2l6ZV90KWxlbmd0aCAhPSBzdHJsZW4obmFycm93KSkgewogICAgICAgICBGT1JNQVRfRVhDRVBUSU9OKFB5RXhjX1ZhbHVlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBpbiAlcyIpOwogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB3byA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKAorICAgICAgICBuYXJyb3csCisgICAgICAgIGxlbmd0aAorICAgICk7CisgICAgaWYgKCF3bykgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgd2lkZSA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHdvLCAmbGVuZ3RoKTsKKyAgICBQeV9ERUNSRUYod28pOworCisgICAgaWYgKCF3aWRlKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKGxlbmd0aCA+IDMyNzY3KSB7CisgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgIiVzIHRvbyBsb25nIGZvciBXaW5kb3dzIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKHdjc2xlbih3aWRlKSAhPSBsZW5ndGgpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIgaW4gJXMiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICBwYXRoLT53aWRlID0gd2lkZTsKKyAgICBwYXRoLT5uYXJyb3cgPSBUUlVFOworI2Vsc2UKICAgICBwYXRoLT53aWRlID0gTlVMTDsKICAgICBwYXRoLT5uYXJyb3cgPSBuYXJyb3c7CisjZW5kaWYKICAgICBwYXRoLT5sZW5ndGggPSBsZW5ndGg7CiAgICAgcGF0aC0+b2JqZWN0ID0gbzsKICAgICBwYXRoLT5mZCA9IC0xOwotICAgIHBhdGgtPmNsZWFudXAgPSBieXRlczsKLSAgICByZXR1cm4gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7CisgICAgaWYgKGJ5dGVzID09IG8pIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0ID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBhdGgtPmNsZWFudXAgPSBieXRlczsKKyAgICAgICAgcmV0ID0gUHlfQ0xFQU5VUF9TVVBQT1JURUQ7CisgICAgfQorIGV4aXQ6CisgICAgUHlfWERFQ1JFRih0b19jbGVhbnVwKTsKKyAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZAotYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoY2hhciAqZnVuY3Rpb25fbmFtZSwgY2hhciAqYXJndW1lbnRfbmFtZSkgeworYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgY29uc3QgY2hhciAqYXJndW1lbnRfbmFtZSkKK3sKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKICAgICAgICAgIiVzJXMlcyB1bmF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIiwKICAgICAgICAgKGZ1bmN0aW9uX25hbWUgIT0gTlVMTCkgPyBmdW5jdGlvbl9uYW1lIDogIiIsCkBAIC05NzQsNyArMTA3Niw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWZkX3NwZWNpZmllZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQpIHsKK2ZkX3NwZWNpZmllZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQpCit7CiAgICAgaWYgKGZkID09IC0xKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtOTgzLDcgKzEwODYsOCBAQAogfQogCiBzdGF0aWMgaW50Ci1mb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmb2xsb3dfc3ltbGlua3MpIHsKK2ZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZvbGxvd19zeW1saW5rcykKK3sKICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQogICAgICAgICByZXR1cm4gMDsKIApAQCAtOTkyLDggKzEwOTYsMTMgQEAKIH0KIAogc3RhdGljIGludAotcGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLCBpbnQgZGlyX2ZkKSB7Ci0gICAgaWYgKCFwYXRoLT5uYXJyb3cgJiYgIXBhdGgtPndpZGUgJiYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkpIHsKK3BhdGhfYW5kX2Rpcl9mZF9pbnZhbGlkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwgaW50IGRpcl9mZCkKK3sKKyAgICBpZiAoIXBhdGgtPndpZGUgJiYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyNpZm5kZWYgTVNfV0lORE9XUworICAgICAgICAmJiAhcGF0aC0+bmFycm93CisjZW5kaWYKKyAgICApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbid0IHNwZWNpZnkgZGlyX2ZkIHdpdGhvdXQgbWF0Y2hpbmcgcGF0aCIsCiAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lKTsKQEAgLTEwMDMsNyArMTExMiw4IEBACiB9CiAKIHN0YXRpYyBpbnQKLWRpcl9mZF9hbmRfZmRfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLCBpbnQgZmQpIHsKK2Rpcl9mZF9hbmRfZmRfaW52YWxpZChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLCBpbnQgZmQpCit7CiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpICYmIChmZCAhPSAtMSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbid0IHNwZWNpZnkgYm90aCBkaXJfZmQgYW5kIGZkIiwKQEAgLTEwMTQsOCArMTEyNCw5IEBACiB9CiAKIHN0YXRpYyBpbnQKLWZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykgeworZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKQorewogICAgIGlmICgoZmQgPiAwKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbm5vdCB1c2UgZmQgYW5kIGZvbGxvd19zeW1saW5rcyB0b2dldGhlciIsCkBAIC0xMDI2LDggKzExMzcsOSBAQAogfQogCiBzdGF0aWMgaW50Ci1kaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBkaXJfZmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb2xsb3dfc3ltbGlua3MpIHsKK2Rpcl9mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykKK3sKICAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgJiYgKCFmb2xsb3dfc3ltbGlua3MpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiVzOiBjYW5ub3QgdXNlIGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyIiwKQEAgLTEwMzgsNyArMTE1MCw3IEBACiB9CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgdHlwZWRlZiBQWV9MT05HX0xPTkcgUHlfb2ZmX3Q7CisgICAgdHlwZWRlZiBsb25nIGxvbmcgUHlfb2ZmX3Q7CiAjZWxzZQogICAgIHR5cGVkZWYgb2ZmX3QgUHlfb2ZmX3Q7CiAjZW5kaWYKQEAgLTEwNjYsNDEgKzExNzgsMTMgQEAKICNlbmRpZgogfQogCi0KLSNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgX01TQ19WRVIgPCAxOTAwCi0vKiBMZWdhY3kgaW1wbGVtZW50YXRpb24gb2YgX1B5VmVyaWZ5X2ZkX2R1cDIgd2hpbGUgdHJhbnNpdGlvbmluZyB0bwotICogTVNWQyAxNC4wLiBUaGlzIHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQuIChpc3N1ZTIzNTI0KQotICovCi0jZGVmaW5lIElPSU5GT19MMkUgNQotI2RlZmluZSBJT0lORk9fQVJSQVlTIDY0Ci0jZGVmaW5lIElPSU5GT19BUlJBWV9FTFRTICAgKDEgPDwgSU9JTkZPX0wyRSkKLSNkZWZpbmUgX05IQU5ETEVfICAgICAgICAgICAoSU9JTkZPX0FSUkFZUyAqIElPSU5GT19BUlJBWV9FTFRTKQotI2RlZmluZSBfTk9fQ09OU09MRV9GSUxFTk8gKGludHB0cl90KS0yCi0KLS8qIHRoZSBzcGVjaWFsIGNhc2Ugb2YgY2hlY2tpbmcgZHVwMi4gIFRoZSB0YXJnZXQgZmQgbXVzdCBiZSBpbiBhIHNlbnNpYmxlIHJhbmdlICovCi1zdGF0aWMgaW50Ci1fUHlWZXJpZnlfZmRfZHVwMihpbnQgZmQxLCBpbnQgZmQyKQotewotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkMSkpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmIChmZDIgPT0gX05PX0NPTlNPTEVfRklMRU5PKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKHVuc2lnbmVkKWZkMiA8IF9OSEFORExFXykKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gMDsKLX0KLSNlbHNlCi0jZGVmaW5lIF9QeVZlcmlmeV9mZF9kdXAyKGZkMSwgZmQyKSAoX1B5VmVyaWZ5X2ZkKGZkMSkgJiYgKGZkMikgPj0gMCkKLSNlbmRpZgotCiAjaWZkZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgaW50CiB3aW4zMl9nZXRfcmVwYXJzZV90YWcoSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlLCBVTE9ORyAqcmVwYXJzZV90YWcpCiB7Ci0gICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKLSAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CisgICAgY2hhciB0YXJnZXRfYnVmZmVyW19QeV9NQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRV07CisgICAgX1B5X1JFUEFSU0VfREFUQV9CVUZGRVIgKnJkYiA9IChfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKIAogICAgIGlmICgwID09IERldmljZUlvQ29udHJvbCgKQEAgLTExNTksNyArMTI0Myw3IEBACiAgICAgZm9yIChlID0gX3dlbnZpcm9uOyAqZSAhPSBOVUxMOyBlKyspIHsKICAgICAgICAgUHlPYmplY3QgKms7CiAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICB3Y2hhcl90ICpwID0gd2NzY2hyKCplLCBMJz0nKTsKKyAgICAgICAgY29uc3Qgd2NoYXJfdCAqcCA9IHdjc2NocigqZSwgTCc9Jyk7CiAgICAgICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgayA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoKmUsIChQeV9zc2l6ZV90KShwLSplKSk7CkBAIC0xMTg3LDcgKzEyNzEsNyBAQAogICAgIGZvciAoZSA9IGVudmlyb247ICplICE9IE5VTEw7IGUrKykgewogICAgICAgICBQeU9iamVjdCAqazsKICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgIGNoYXIgKnAgPSBzdHJjaHIoKmUsICc9Jyk7CisgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBzdHJjaHIoKmUsICc9Jyk7CiAgICAgICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgayA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKmUsIChpbnQpKHAtKmUpKTsKQEAgLTEyMjIsNyArMTMwNiw3IEBACiAKICNpZmRlZiBNU19XSU5ET1dTCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfZXJyb3IoY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZpbGVuYW1lKQord2luMzJfZXJyb3IoY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGZpbGVuYW1lKQogewogICAgIC8qIFhYWCBXZSBzaG91bGQgcGFzcyB0aGUgZnVuY3Rpb24gbmFtZSBhbG9uZyBpbiB0aGUgZnV0dXJlLgogICAgICAgICh3aW5yZWcuYyBhbHNvIHdhbnRzIHRvIHBhc3MgdGhlIGZ1bmN0aW9uIG5hbWUuKQpAQCAtMTIzNyw3ICsxMzIxLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX2Vycm9yX29iamVjdChjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGZpbGVuYW1lKQord2luMzJfZXJyb3Jfb2JqZWN0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBQeU9iamVjdCogZmlsZW5hbWUpCiB7CiAgICAgLyogWFhYIC0gc2VlIHdpbjMyX2Vycm9yIGZvciBjb21tZW50cyBvbiAnZnVuY3Rpb24nICovCiAgICAgZXJybm8gPSBHZXRMYXN0RXJyb3IoKTsKQEAgLTEyNTMsMjcgKzEzMzcsMzcgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wYXRoX2Vycm9yKHBhdGhfdCAqcGF0aCkKK3BhdGhfb2JqZWN0X2Vycm9yKFB5T2JqZWN0ICpwYXRoKQogewogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcGF0aC0+b2JqZWN0KTsKKyAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoCisgICAgICAgICAgICAgICAgUHlFeGNfT1NFcnJvciwgMCwgcGF0aCk7CiAjZWxzZQotICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwgcGF0aC0+b2JqZWN0KTsKKyAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHBhdGgpOwogI2VuZGlmCiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwYXRoX29iamVjdF9lcnJvcjIoUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICpwYXRoMikKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0cygKKyAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yLCAwLCBwYXRoLCBwYXRoMik7CisjZWxzZQorICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3RzKFB5RXhjX09TRXJyb3IsIHBhdGgsIHBhdGgyKTsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgorcGF0aF9lcnJvcihwYXRoX3QgKnBhdGgpCit7CisgICAgcmV0dXJuIHBhdGhfb2JqZWN0X2Vycm9yKHBhdGgtPm9iamVjdCk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwYXRoX2Vycm9yMihwYXRoX3QgKnBhdGgsIHBhdGhfdCAqcGF0aDIpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZU9iamVjdHMoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgIDAsIHBhdGgtPm9iamVjdCwgcGF0aDItPm9iamVjdCk7Ci0jZWxzZQotICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3RzKFB5RXhjX09TRXJyb3IsCi0gICAgICAgIHBhdGgtPm9iamVjdCwgcGF0aDItPm9iamVjdCk7Ci0jZW5kaWYKKyAgICByZXR1cm4gcGF0aF9vYmplY3RfZXJyb3IyKHBhdGgtPm9iamVjdCwgcGF0aDItPm9iamVjdCk7CiB9CiAKIApAQCAtMTI5Nyw5ICsxMzkxLDYgQEAKICAgICBpbnQgcmVzOwogICAgIGludCBhc3luY19lcnIgPSAwOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC0xMzIwLDMxICsxNDExLDYgQEAKICAgIGl0IGFsc28gbmVlZHMgdG8gc2V0ICJtYWdpYyIgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluZGljYXRpbmcKICAgIHRoZSBwZXItZHJpdmUgY3VycmVudCBkaXJlY3RvcnksIHdoaWNoIGFyZSBvZiB0aGUgZm9ybSA9PGRyaXZlPjogKi8KIHN0YXRpYyBCT09MIF9fc3RkY2FsbAotd2luMzJfY2hkaXIoTFBDU1RSIHBhdGgpCi17Ci0gICAgY2hhciBuZXdfcGF0aFtNQVhfUEFUSF07Ci0gICAgaW50IHJlc3VsdDsKLSAgICBjaGFyIGVudls0XSA9ICI9eDoiOwotCi0gICAgaWYoIVNldEN1cnJlbnREaXJlY3RvcnlBKHBhdGgpKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgcmVzdWx0ID0gR2V0Q3VycmVudERpcmVjdG9yeUEoUHlfQVJSQVlfTEVOR1RIKG5ld19wYXRoKSwgbmV3X3BhdGgpOwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgLyogSW4gdGhlIEFOU0kgQVBJLCB0aGVyZSBzaG91bGQgbm90IGJlIGFueSBwYXRocyBsb25nZXIKLSAgICAgICB0aGFuIE1BWF9QQVRILTEgKG5vdCBpbmNsdWRpbmcgdGhlIGZpbmFsIG51bGwgY2hhcmFjdGVyKS4gKi8KLSAgICBhc3NlcnQocmVzdWx0IDwgUHlfQVJSQVlfTEVOR1RIKG5ld19wYXRoKSk7Ci0gICAgaWYgKHN0cm5jbXAobmV3X3BhdGgsICJcXFxcIiwgMikgPT0gMCB8fAotICAgICAgICBzdHJuY21wKG5ld19wYXRoLCAiLy8iLCAyKSA9PSAwKQotICAgICAgICAvKiBVTkMgcGF0aCwgbm90aGluZyB0byBkby4gKi8KLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgZW52WzFdID0gbmV3X3BhdGhbMF07Ci0gICAgcmV0dXJuIFNldEVudmlyb25tZW50VmFyaWFibGVBKGVudiwgbmV3X3BhdGgpOwotfQotCi0vKiBUaGUgVW5pY29kZSB2ZXJzaW9uIGRpZmZlcnMgZnJvbSB0aGUgQU5TSSB2ZXJzaW9uCi0gICBzaW5jZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgbWlnaHQgZXhjZWVkIE1BWF9QQVRIIGNoYXJhY3RlcnMgKi8KLXN0YXRpYyBCT09MIF9fc3RkY2FsbAogd2luMzJfd2NoZGlyKExQQ1dTVFIgcGF0aCkKIHsKICAgICB3Y2hhcl90IHBhdGhfYnVmW01BWF9QQVRIXSwgKm5ld19wYXRoID0gcGF0aF9idWY7CkBAIC0xMzkwLDMzICsxNDU2LDEwIEBACiAjZGVmaW5lIEhBVkVfU1RBVF9OU0VDIDEKICNkZWZpbmUgSEFWRV9TVFJVQ1RfU1RBVF9TVF9GSUxFX0FUVFJJQlVURVMgMQogCi1zdGF0aWMgQk9PTAotYXR0cmlidXRlc19mcm9tX2RpcihMUENTVFIgcHN6RmlsZSwgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sIFVMT05HICpyZXBhcnNlX3RhZykKLXsKLSAgICBIQU5ETEUgaEZpbmRGaWxlOwotICAgIFdJTjMyX0ZJTkRfREFUQUEgRmlsZURhdGE7Ci0gICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZUEocHN6RmlsZSwgJkZpbGVEYXRhKTsKLSAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZigqaW5mbykpOwotICAgICpyZXBhcnNlX3RhZyA9IDA7Ci0gICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IEZpbGVEYXRhLmR3RmlsZUF0dHJpYnV0ZXM7Ci0gICAgaW5mby0+ZnRDcmVhdGlvblRpbWUgICA9IEZpbGVEYXRhLmZ0Q3JlYXRpb25UaW1lOwotICAgIGluZm8tPmZ0TGFzdEFjY2Vzc1RpbWUgPSBGaWxlRGF0YS5mdExhc3RBY2Nlc3NUaW1lOwotICAgIGluZm8tPmZ0TGFzdFdyaXRlVGltZSAgPSBGaWxlRGF0YS5mdExhc3RXcml0ZVRpbWU7Ci0gICAgaW5mby0+bkZpbGVTaXplSGlnaCAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUhpZ2g7Ci0gICAgaW5mby0+bkZpbGVTaXplTG93ICAgICA9IEZpbGVEYXRhLm5GaWxlU2l6ZUxvdzsKLS8qICBpbmZvLT5uTnVtYmVyT2ZMaW5rcyAgID0gMTsgKi8KLSAgICBpZiAoRmlsZURhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1JFUEFSU0VfUE9JTlQpCi0gICAgICAgICpyZXBhcnNlX3RhZyA9IEZpbGVEYXRhLmR3UmVzZXJ2ZWQwOwotICAgIHJldHVybiBUUlVFOwotfQotCiBzdGF0aWMgdm9pZAotZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KFdJTjMyX0ZJTkRfREFUQVcgKnBGaWxlRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBVTE9ORyAqcmVwYXJzZV90YWcpCitmaW5kX2RhdGFfdG9fZmlsZV9pbmZvKFdJTjMyX0ZJTkRfREFUQVcgKnBGaWxlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgIFVMT05HICpyZXBhcnNlX3RhZykKIHsKICAgICBtZW1zZXQoaW5mbywgMCwgc2l6ZW9mKCppbmZvKSk7CiAgICAgaW5mby0+ZHdGaWxlQXR0cmlidXRlcyA9IHBGaWxlRGF0YS0+ZHdGaWxlQXR0cmlidXRlczsKQEAgLTE0MzMsNyArMTQ3Niw3IEBACiB9CiAKIHN0YXRpYyBCT09MCi1hdHRyaWJ1dGVzX2Zyb21fZGlyX3coTFBDV1NUUiBwc3pGaWxlLCBCWV9IQU5ETEVfRklMRV9JTkZPUk1BVElPTiAqaW5mbywgVUxPTkcgKnJlcGFyc2VfdGFnKQorYXR0cmlidXRlc19mcm9tX2RpcihMUENXU1RSIHBzekZpbGUsIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OICppbmZvLCBVTE9ORyAqcmVwYXJzZV90YWcpCiB7CiAgICAgSEFORExFIGhGaW5kRmlsZTsKICAgICBXSU4zMl9GSU5EX0RBVEFXIEZpbGVEYXRhOwpAQCAtMTQ0MSw3ICsxNDg0LDcgQEAKICAgICBpZiAoaEZpbmRGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgRmluZENsb3NlKGhGaW5kRmlsZSk7Ci0gICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mb193KCZGaWxlRGF0YSwgaW5mbywgcmVwYXJzZV90YWcpOworICAgIGZpbmRfZGF0YV90b19maWxlX2luZm8oJkZpbGVEYXRhLCBpbmZvLCByZXBhcnNlX3RhZyk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTE0NTgsNyArMTUwMSw3IEBACiAgICAgaWYoIWJ1Zl9zaXplKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICBidWYgPSBQeU1lbV9OZXcod2NoYXJfdCwgYnVmX3NpemUrMSk7CisgICAgYnVmID0gKHdjaGFyX3QgKilQeU1lbV9SYXdNYWxsb2MoKGJ1Zl9zaXplICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgIGlmICghYnVmKSB7CiAgICAgICAgIFNldExhc3RFcnJvcihFUlJPUl9PVVRPRk1FTU9SWSk7CiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTE0NjgsMTIgKzE1MTEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKIAogICAgIGlmKCFyZXN1bHRfbGVuZ3RoKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgUHlNZW1fUmF3RnJlZShidWYpOwogICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogCiAgICAgaWYoIUNsb3NlSGFuZGxlKGhkbCkpIHsKLSAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKQEAgLTE0ODQsMTAgKzE1MjcsNyBAQAogfQogCiBzdGF0aWMgaW50Ci13aW4zMl94c3RhdF9pbXBsX3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LAotICAgICAgICAgICAgICAgICAgIEJPT0wgdHJhdmVyc2UpOwotc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQsCit3aW4zMl94c3RhdF9pbXBsKGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKICAgICAgICAgICAgICAgICAgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICBpbnQgY29kZTsKQEAgLTE0OTUsOSArMTUzNSw5IEBACiAgICAgQllfSEFORExFX0ZJTEVfSU5GT1JNQVRJT04gaW5mbzsKICAgICBVTE9ORyByZXBhcnNlX3RhZyA9IDA7CiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7Ci0gICAgY29uc3QgY2hhciAqZG90OworICAgIGNvbnN0IHdjaGFyX3QgKmRvdDsKIAotICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEoCisgICAgaEZpbGUgPSBDcmVhdGVGaWxlVygKICAgICAgICAgcGF0aCwKICAgICAgICAgRklMRV9SRUFEX0FUVFJJQlVURVMsIC8qIGRlc2lyZWQgYWNjZXNzICovCiAgICAgICAgIDAsIC8qIHNoYXJlIG1vZGUgKi8KQEAgLTE1NDgsOTggKzE1ODgsNiBAQAogICAgICAgICAgICAgaWYgKHRyYXZlcnNlKSB7CiAgICAgICAgICAgICAgICAgLyogSW4gb3JkZXIgdG8gY2FsbCBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgd2UgbmVlZCB0byBvcGVuCiAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUgd2l0aG91dCB0aGUgcmVwYXJzZSBoYW5kbGluZyBmbGFnIHNldC4gKi8KLSAgICAgICAgICAgICAgICBoRmlsZTIgPSBDcmVhdGVGaWxlQSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCBGSUxFX1NIQVJFX1JFQUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9BVFRSSUJVVEVfTk9STUFMfEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICAgICAgaWYgKGhGaWxlMiA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICAgICAgaWYgKCFnZXRfdGFyZ2V0X3BhdGgoaEZpbGUyLCAmdGFyZ2V0X3BhdGgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAgICAgICAgICAgICBjb2RlID0gd2luMzJfeHN0YXRfaW1wbF93KHRhcmdldF9wYXRoLCByZXN1bHQsIEZBTFNFKTsKLSAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHRhcmdldF9wYXRoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7Ci0gICAgfQotICAgIF9QeV9hdHRyaWJ1dGVfZGF0YV90b19zdGF0KCZpbmZvLCByZXBhcnNlX3RhZywgcmVzdWx0KTsKLQotICAgIC8qIFNldCBTX0lFWEVDIGlmIGl0IGlzIGFuIC5leGUsIC5iYXQsIC4uLiAqLwotICAgIGRvdCA9IHN0cnJjaHIocGF0aCwgJy4nKTsKLSAgICBpZiAoZG90KSB7Ci0gICAgICAgIGlmIChzdHJpY21wKGRvdCwgIi5iYXQiKSA9PSAwIHx8IHN0cmljbXAoZG90LCAiLmNtZCIpID09IDAgfHwKLSAgICAgICAgICAgIHN0cmljbXAoZG90LCAiLmV4ZSIpID09IDAgfHwgc3RyaWNtcChkb3QsICIuY29tIikgPT0gMCkKLSAgICAgICAgICAgIHJlc3VsdC0+c3RfbW9kZSB8PSAwMTExOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIGludAotd2luMzJfeHN0YXRfaW1wbF93KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwKLSAgICAgICAgICAgICAgICAgICBCT09MIHRyYXZlcnNlKQotewotICAgIGludCBjb2RlOwotICAgIEhBTkRMRSBoRmlsZSwgaEZpbGUyOwotICAgIEJZX0hBTkRMRV9GSUxFX0lORk9STUFUSU9OIGluZm87Ci0gICAgVUxPTkcgcmVwYXJzZV90YWcgPSAwOwotICAgIHdjaGFyX3QgKnRhcmdldF9wYXRoOwotICAgIGNvbnN0IHdjaGFyX3QgKmRvdDsKLQotICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcoCi0gICAgICAgIHBhdGgsCi0gICAgICAgIEZJTEVfUkVBRF9BVFRSSUJVVEVTLCAvKiBkZXNpcmVkIGFjY2VzcyAqLwotICAgICAgICAwLCAvKiBzaGFyZSBtb2RlICovCi0gICAgICAgIE5VTEwsIC8qIHNlY3VyaXR5IGF0dHJpYnV0ZXMgKi8KLSAgICAgICAgT1BFTl9FWElTVElORywKLSAgICAgICAgLyogRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MgaXMgcmVxdWlyZWQgdG8gb3BlbiBhIGRpcmVjdG9yeSAqLwotICAgICAgICAvKiBGSUxFX0ZMQUdfT1BFTl9SRVBBUlNFX1BPSU5UIGRvZXMgbm90IGZvbGxvdyB0aGUgc3ltbGluay4KLSAgICAgICAgICAgQmVjYXVzZSBvZiB0aGlzLCBjYWxscyBsaWtlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSB3aWxsIHJldHVybgotICAgICAgICAgICB0aGUgc3ltbGluayBwYXRoIGFnYWluIGFuZCBub3QgdGhlIGFjdHVhbCBmaW5hbCBwYXRoLiAqLwotICAgICAgICBGSUxFX0FUVFJJQlVURV9OT1JNQUx8RklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1N8Ci0gICAgICAgICAgICBGSUxFX0ZMQUdfT1BFTl9SRVBBUlNFX1BPSU5ULAotICAgICAgICBOVUxMKTsKLQotICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAvKiBFaXRoZXIgdGhlIHRhcmdldCBkb2Vzbid0IGV4aXN0LCBvciB3ZSBkb24ndCBoYXZlIGFjY2VzcyB0bwotICAgICAgICAgICBnZXQgYSBoYW5kbGUgdG8gaXQuIElmIHRoZSBmb3JtZXIsIHdlIG5lZWQgdG8gcmV0dXJuIGFuIGVycm9yLgotICAgICAgICAgICBJZiB0aGUgbGF0dGVyLCB3ZSBjYW4gdXNlIGF0dHJpYnV0ZXNfZnJvbV9kaXIuICovCi0gICAgICAgIERXT1JEIGxhc3RFcnJvciA9IEdldExhc3RFcnJvcigpOwotICAgICAgICBpZiAobGFzdEVycm9yICE9IEVSUk9SX0FDQ0VTU19ERU5JRUQgJiYKLSAgICAgICAgICAgIGxhc3RFcnJvciAhPSBFUlJPUl9TSEFSSU5HX1ZJT0xBVElPTikKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgLyogQ291bGQgbm90IGdldCBhdHRyaWJ1dGVzIG9uIG9wZW4gZmlsZS4gRmFsbCBiYWNrIHRvCi0gICAgICAgICAgIHJlYWRpbmcgdGhlIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgaWYgKCFhdHRyaWJ1dGVzX2Zyb21fZGlyX3cocGF0aCwgJmluZm8sICZyZXBhcnNlX3RhZykpCi0gICAgICAgICAgICAvKiBWZXJ5IHN0cmFuZ2UuIFRoaXMgc2hvdWxkIG5vdCBmYWlsIG5vdyAqLwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkgewotICAgICAgICAgICAgaWYgKHRyYXZlcnNlKSB7Ci0gICAgICAgICAgICAgICAgLyogU2hvdWxkIHRyYXZlcnNlLCBidXQgY291bGQgbm90IG9wZW4gcmVwYXJzZSBwb2ludCBoYW5kbGUgKi8KLSAgICAgICAgICAgICAgICBTZXRMYXN0RXJyb3IobGFzdEVycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIUdldEZpbGVJbmZvcm1hdGlvbkJ5SGFuZGxlKGhGaWxlLCAmaW5mbykpIHsKLSAgICAgICAgICAgIENsb3NlSGFuZGxlKGhGaWxlKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5mby5kd0ZpbGVBdHRyaWJ1dGVzICYgRklMRV9BVFRSSUJVVEVfUkVQQVJTRV9QT0lOVCkgewotICAgICAgICAgICAgaWYgKCF3aW4zMl9nZXRfcmVwYXJzZV90YWcoaEZpbGUsICZyZXBhcnNlX3RhZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICAvKiBDbG9zZSB0aGUgb3V0ZXIgb3BlbiBmaWxlIGhhbmRsZSBub3cgdGhhdCB3ZSdyZSBhYm91dCB0bwotICAgICAgICAgICAgICAgcmVvcGVuIGl0IHdpdGggZGlmZmVyZW50IGZsYWdzLiAqLwotICAgICAgICAgICAgaWYgKCFDbG9zZUhhbmRsZShoRmlsZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgICAgICBpZiAodHJhdmVyc2UpIHsKLSAgICAgICAgICAgICAgICAvKiBJbiBvcmRlciB0byBjYWxsIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSB3ZSBuZWVkIHRvIG9wZW4KLSAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSB3aXRob3V0IHRoZSByZXBhcnNlIGhhbmRsaW5nIGZsYWcgc2V0LiAqLwogICAgICAgICAgICAgICAgIGhGaWxlMiA9IENyZWF0ZUZpbGVXKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgRklMRV9SRUFEX0FUVFJJQlVURVMsIEZJTEVfU0hBUkVfUkVBRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCkBAIC0xNjUxLDggKzE1OTksOCBAQAogICAgICAgICAgICAgICAgIGlmICghZ2V0X3RhcmdldF9wYXRoKGhGaWxlMiwgJnRhcmdldF9wYXRoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgICAgICAgICAgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGxfdyh0YXJnZXRfcGF0aCwgcmVzdWx0LCBGQUxTRSk7Ci0gICAgICAgICAgICAgICAgUHlNZW1fRnJlZSh0YXJnZXRfcGF0aCk7CisgICAgICAgICAgICAgICAgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGwodGFyZ2V0X3BhdGgsIHJlc3VsdCwgRkFMU0UpOworICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUodGFyZ2V0X3BhdGgpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb2RlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKQEAgLTE2NzEsNyArMTYxOSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKK3dpbjMyX3hzdGF0KGNvbnN0IHdjaGFyX3QgKnBhdGgsIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3QgKnJlc3VsdCwgQk9PTCB0cmF2ZXJzZSkKIHsKICAgICAvKiBQcm90b2NvbCB2aW9sYXRpb246IHdlIGV4cGxpY2l0bHkgY2xlYXIgZXJybm8sIGluc3RlYWQgb2YKICAgICAgICBzZXR0aW5nIGl0IHRvIGEgUE9TSVggZXJyb3IuIENhbGxlcnMgc2hvdWxkIHVzZSBHZXRMYXN0RXJyb3IuICovCkBAIC0xNjc5LDE2ICsxNjI3LDYgQEAKICAgICBlcnJubyA9IDA7CiAgICAgcmV0dXJuIGNvZGU7CiB9Ci0KLXN0YXRpYyBpbnQKLXdpbjMyX3hzdGF0X3coY29uc3Qgd2NoYXJfdCAqcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0LCBCT09MIHRyYXZlcnNlKQotewotICAgIC8qIFByb3RvY29sIHZpb2xhdGlvbjogd2UgZXhwbGljaXRseSBjbGVhciBlcnJubywgaW5zdGVhZCBvZgotICAgICAgIHNldHRpbmcgaXQgdG8gYSBQT1NJWCBlcnJvci4gQ2FsbGVycyBzaG91bGQgdXNlIEdldExhc3RFcnJvci4gKi8KLSAgICBpbnQgY29kZSA9IHdpbjMyX3hzdGF0X2ltcGxfdyhwYXRoLCByZXN1bHQsIHRyYXZlcnNlKTsKLSAgICBlcnJubyA9IDA7Ci0gICAgcmV0dXJuIGNvZGU7Ci19CiAvKiBBYm91dCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczogd2luMzJfbHN0YXRfdywgd2luMzJfc3RhdCwgd2luMzJfc3RhdF93CiAKICAgIEluIFBvc2l4LCBzdGF0IGF1dG9tYXRpY2FsbHkgdHJhdmVyc2VzIHN5bWxpbmtzIGFuZCByZXR1cm5zIHRoZSBzdGF0CkBAIC0xNjk4LDM0ICsxNjM2LDIwIEBACiAKICAgIFRoZXJlZm9yZSwgd2luMzJfbHN0YXQgd2lsbCBnZXQgdGhlIGF0dHJpYnV0ZXMgdHJhZGl0aW9uYWxseSwgYW5kCiAgICB3aW4zMl9zdGF0IHdpbGwgZmlyc3QgZXhwbGljaXRseSByZXNvbHZlIHRoZSBzeW1saW5rIHRhcmdldCBhbmQgdGhlbiB3aWxsCi0gICBjYWxsIHdpbjMyX2xzdGF0IG9uIHRoYXQgcmVzdWx0LgotCi0gICBUaGUgX3cgcmVwcmVzZW50IFVuaWNvZGUgZXF1aXZhbGVudHMgb2YgdGhlIGFmb3JlbWVudGlvbmVkIEFOU0kgZnVuY3Rpb25zLiAqLworICAgY2FsbCB3aW4zMl9sc3RhdCBvbiB0aGF0IHJlc3VsdC4gKi8KIAogc3RhdGljIGludAotd2luMzJfbHN0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQord2luMzJfbHN0YXQoY29uc3Qgd2NoYXJfdCogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQogewogICAgIHJldHVybiB3aW4zMl94c3RhdChwYXRoLCByZXN1bHQsIEZBTFNFKTsKIH0KIAogc3RhdGljIGludAotd2luMzJfbHN0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCi17Ci0gICAgcmV0dXJuIHdpbjMyX3hzdGF0X3cocGF0aCwgcmVzdWx0LCBGQUxTRSk7Ci19Ci0KLXN0YXRpYyBpbnQKLXdpbjMyX3N0YXQoY29uc3QgY2hhciogcGF0aCwgc3RydWN0IF9QeV9zdGF0X3N0cnVjdCAqcmVzdWx0KQord2luMzJfc3RhdChjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCiB7CiAgICAgcmV0dXJuIHdpbjMyX3hzdGF0KHBhdGgsIHJlc3VsdCwgVFJVRSk7CiB9CiAKLXN0YXRpYyBpbnQKLXdpbjMyX3N0YXRfdyhjb25zdCB3Y2hhcl90KiBwYXRoLCBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0ICpyZXN1bHQpCi17Ci0gICAgcmV0dXJuIHdpbjMyX3hzdGF0X3cocGF0aCwgcmVzdWx0LCBUUlVFKTsKLX0KLQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHN0YXRfcmVzdWx0X19kb2NfXywKQEAgLTIwMDcsNyArMTkzMSw3IEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAwLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc3QtPnN0X21vZGUpKTsKICNpZmRlZiBIQVZFX0xBUkdFRklMRV9TVVBQT1JUCiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXN0LT5zdF9pbm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzdC0+c3RfaW5vKSk7CiAjZWxzZQogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMSwgUHlMb25nX0Zyb21Mb25nKChsb25nKXN0LT5zdF9pbm8pKTsKICNlbmRpZgpAQCAtMjAyNiw3ICsxOTUwLDcgQEAKICNlbmRpZgogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc3QtPnN0X3NpemUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzdC0+c3Rfc2l6ZSkpOwogI2Vsc2UKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDYsIFB5TG9uZ19Gcm9tTG9uZyhzdC0+c3Rfc2l6ZSkpOwogI2VuZGlmCkBAIC0yMTA2LDcgKzIwMzAsNyBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9kb19zdGF0KGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCwKK3Bvc2l4X2RvX3N0YXQoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLAogICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKQogewogICAgIFNUUlVDVF9TVEFUIHN0OwpAQCAtMjEyNSwyOCArMjA0OSwyNiBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCiAgICAgICAgIHJlc3VsdCA9IEZTVEFUKHBhdGgtPmZkLCAmc3QpOwotICAgIGVsc2UKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKHBhdGgtPndpZGUpIHsKLSAgICAgICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgICAgIHJlc3VsdCA9IHdpbjMyX3N0YXRfdyhwYXRoLT53aWRlLCAmc3QpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdF93KHBhdGgtPndpZGUsICZzdCk7Ci0gICAgfQorICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdChwYXRoLT53aWRlLCAmc3QpOwogICAgIGVsc2UKLSNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9MU1RBVCkgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdChwYXRoLT53aWRlLCAmc3QpOworI2Vsc2UKKyAgICBlbHNlCisjaWYgZGVmaW5lZChIQVZFX0xTVEFUKQogICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCiAgICAgICAgIHJlc3VsdCA9IExTVEFUKHBhdGgtPm5hcnJvdywgJnN0KTsKICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX0xTVEFUICovCiAjaWZkZWYgSEFWRV9GU1RBVEFUCiAgICAgaWYgKChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8ICFmb2xsb3dfc3ltbGlua3MpCiAgICAgICAgIHJlc3VsdCA9IGZzdGF0YXQoZGlyX2ZkLCBwYXRoLT5uYXJyb3csICZzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CiAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9GU1RBVEFUICovCiAgICAgICAgIHJlc3VsdCA9IFNUQVQocGF0aC0+bmFycm93LCAmc3QpOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCAhPSAwKSB7CkBAIC0yNDI2LDggKzIzNDgsOCBAQAogICAgIHR5cGUgPSAnaWRfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9QSUQgIicKIAotY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCitjbGFzcyBpbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnRwdHJfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciIF9QeV9QQVJTRV9JTlRQVFIgIicKIAogY2xhc3MgUHlfb2ZmX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgpAQCAtMjQ1NCw3ICsyMzc2LDcgQEAKICAgICBpbXBsX2J5X3JlZmVyZW5jZSA9IFRydWU7CiAKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWFmZmU2ODMxNmYxNjA0MDFdKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTQxOGZjZTBlMDExNDQ0NjFdKi8KIAogLypbY2xpbmljIGlucHV0XQogCkBAIC0yNTgyLDEwICsyNTA0LDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUgIT0gTlVMTCkKLSAgICAgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93KTsKKyAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICAvKgpAQCAtMjcwOSwxMSArMjYyOCw4IEBACiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICByZXN1bHQgPSB3aW4zMl93Y2hkaXIocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9jaGRpcihwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIG9uIHVuaXgsIHN1Y2Nlc3MgPSAwLCBvbiB3aW5kb3dzLCBzdWNjZXNzID0gITAgKi8KKyAgICAvKiBvbiB1bml4LCBzdWNjZXNzID0gMCwgb24gd2luZG93cywgc3VjY2VzcyA9ICEwICovCisgICAgcmVzdWx0ID0gIXdpbjMyX3djaGRpcihwYXRoLT53aWRlKTsKICNlbHNlCiAjaWZkZWYgSEFWRV9GQ0hESVIKICAgICBpZiAocGF0aC0+ZmQgIT0gLTEpCkBAIC0yODA4LDEwICsyNzI0LDcgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgtPm5hcnJvdyk7CisgICAgYXR0ciA9IEdldEZpbGVBdHRyaWJ1dGVzVyhwYXRoLT53aWRlKTsKICAgICBpZiAoYXR0ciA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKICAgICAgICAgcmVzdWx0ID0gMDsKICAgICBlbHNlIHsKQEAgLTI4MTksMTAgKzI3MzIsNyBAQAogICAgICAgICAgICAgYXR0ciAmPSB+RklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUsIGF0dHIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aC0+bmFycm93LCBhdHRyKTsKKyAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUsIGF0dHIpOwogICAgIH0KICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC0zMzE4LDEyICszMjI4LDIyIEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGRvIHsKICAgICAgICAgYnVmbGVuICs9IGNodW5rOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgaWYgKGJ1ZmxlbiA+IElOVF9NQVgpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIHRtcGJ1ZiA9IFB5TWVtX1Jhd1JlYWxsb2MoYnVmLCBidWZsZW4pOwogICAgICAgICBpZiAodG1wYnVmID09IE5VTEwpCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBidWYgPSB0bXBidWY7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBjd2QgPSBnZXRjd2QoYnVmLCAoaW50KWJ1Zmxlbik7CisjZWxzZQogICAgICAgICBjd2QgPSBnZXRjd2QoYnVmLCBidWZsZW4pOworI2VuZGlmCiAgICAgfSB3aGlsZSAoY3dkID09IE5VTEwgJiYgZXJybm8gPT0gRVJBTkdFKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCkBAIC0zNDA1LDcgKzMzMjUsNyBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdmMDBmNjAwN2ZkNTI2OWEgaW5wdXQ9YjAwOTVlYmJjYmFhN2UwNF0qLwogewogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBCT09MIHJlc3VsdDsKKyAgICBCT09MIHJlc3VsdCA9IEZBTFNFOwogI2Vsc2UKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCkBAIC0zNDE3LDE4ICszMzM3LDE4IEBACiAgICAgfQogI2VuZGlmCiAKKyNpZm5kZWYgTVNfV0lORE9XUwogICAgIGlmICgoc3JjLT5uYXJyb3cgJiYgZHN0LT53aWRlKSB8fCAoc3JjLT53aWRlICYmIGRzdC0+bmFycm93KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5rOiBzcmMgYW5kIGRzdCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGlmIChzcmMtPndpZGUpCiAgICAgICAgIHJlc3VsdCA9IENyZWF0ZUhhcmRMaW5rVyhkc3QtPndpZGUsIHNyYy0+d2lkZSwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0LT5uYXJyb3csIHNyYy0+bmFycm93LCBOVUxMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKCFyZXN1bHQpCkBAIC0zNDQzLDEzICszMzYzLDEzIEBACiAgICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QtPm5hcnJvdywKICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IEFUX1NZTUxJTktfRk9MTE9XIDogMCk7CiAgICAgZWxzZQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MSU5LQVQgKi8KICAgICAgICAgcmVzdWx0ID0gbGluayhzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3cpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gcGF0aF9lcnJvcjIoc3JjLCBkc3QpOwotI2VuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CkBAIC0zNDYzLDk5ICszMzgzLDM5IEBACiAgICAgUHlPYmplY3QgKnY7CiAgICAgSEFORExFIGhGaW5kRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwogICAgIEJPT0wgcmVzdWx0OwotICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKLSAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNF07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgIlwqLioiICovCi0gICAgY2hhciAqYnVmcHRyID0gbmFtZWJ1ZjsKKyAgICB3Y2hhcl90IG5hbWVidWZbTUFYX1BBVEgrNF07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgIlwqLioiICovCiAgICAgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlfQVJSQVlfTEVOR1RIKG5hbWVidWYpLTQ7Ci0gICAgUHlPYmplY3QgKnBvID0gTlVMTDsKICAgICB3Y2hhcl90ICp3bmFtZWJ1ZiA9IE5VTEw7CiAKLSAgICBpZiAoIXBhdGgtPm5hcnJvdykgewotICAgICAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKLSAgICAgICAgd2NoYXJfdCAqcG9fd2NoYXJzOworICAgIFdJTjMyX0ZJTkRfREFUQVcgd0ZpbGVEYXRhOworICAgIGNvbnN0IHdjaGFyX3QgKnBvX3djaGFyczsKIAotICAgICAgICBpZiAoIXBhdGgtPndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLwotICAgICAgICAgICAgcG9fd2NoYXJzID0gTCIuIjsKLSAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwb193Y2hhcnMgPSBwYXRoLT53aWRlOwotICAgICAgICAgICAgbGVuID0gd2NzbGVuKHBhdGgtPndpZGUpOwotICAgICAgICB9Ci0gICAgICAgIC8qIFRoZSArNSBpcyBzbyB3ZSBjYW4gYXBwZW5kICJcXCouKlwwIiAqLwotICAgICAgICB3bmFtZWJ1ZiA9IFB5TWVtX05ldyh3Y2hhcl90LCBsZW4gKyA1KTsKLSAgICAgICAgaWYgKCF3bmFtZWJ1ZikgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICB3Y3NjcHkod25hbWVidWYsIHBvX3djaGFycyk7Ci0gICAgICAgIGlmIChsZW4gPiAwKSB7Ci0gICAgICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKLSAgICAgICAgICAgIGlmICh3Y2ggIT0gU0VQICYmIHdjaCAhPSBBTFRTRVAgJiYgd2NoICE9IEwnOicpCi0gICAgICAgICAgICAgICAgd25hbWVidWZbbGVuKytdID0gU0VQOwotICAgICAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgfQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVXKHduYW1lYnVmLCAmd0ZpbGVEYXRhKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgLyogU2tpcCBvdmVyIC4gYW5kIC4uICovCi0gICAgICAgICAgICBpZiAod2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLiIpICE9IDAgJiYKLSAgICAgICAgICAgICAgICB3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuLiIpICE9IDApIHsKLSAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbih3RmlsZURhdGEuY0ZpbGVOYW1lKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICByZXN1bHQgPSBGaW5kTmV4dEZpbGVXKGhGaW5kRmlsZSwgJndGaWxlRGF0YSk7Ci0gICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgLyogRmluZE5leHRGaWxlIHNldHMgZXJyb3IgdG8gRVJST1JfTk9fTU9SRV9GSUxFUyBpZgotICAgICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KLSAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgICAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IocGF0aCk7Ci0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgfQotICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7Ci0KKyAgICBpZiAoIXBhdGgtPndpZGUpIHsgLyogRGVmYXVsdCBhcmc6ICIuIiAqLworICAgICAgICBwb193Y2hhcnMgPSBMIi4iOworICAgICAgICBsZW4gPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgIHBvX3djaGFycyA9IHBhdGgtPndpZGU7CisgICAgICAgIGxlbiA9IHdjc2xlbihwYXRoLT53aWRlKTsKKyAgICB9CisgICAgLyogVGhlICs1IGlzIHNvIHdlIGNhbiBhcHBlbmQgIlxcKi4qXDAiICovCisgICAgd25hbWVidWYgPSBQeU1lbV9OZXcod2NoYXJfdCwgbGVuICsgNSk7CisgICAgaWYgKCF3bmFtZWJ1ZikgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBwYXRoLT5uYXJyb3cpOwotICAgIGxlbiA9IHBhdGgtPmxlbmd0aDsKKyAgICB3Y3NjcHkod25hbWVidWYsIHBvX3djaGFycyk7CiAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgY2hhciBjaCA9IG5hbWVidWZbbGVuLTFdOwotICAgICAgICBpZiAoY2ggIT0gJ1xcJyAmJiBjaCAhPSAnLycgJiYgY2ggIT0gJzonKQotICAgICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSAnXFwnOwotICAgICAgICBzdHJjcHkobmFtZWJ1ZiArIGxlbiwgIiouKiIpOworICAgICAgICB3Y2hhcl90IHdjaCA9IHduYW1lYnVmW2xlbi0xXTsKKyAgICAgICAgaWYgKHdjaCAhPSBTRVAgJiYgd2NoICE9IEFMVFNFUCAmJiB3Y2ggIT0gTCc6JykKKyAgICAgICAgICAgIHduYW1lYnVmW2xlbisrXSA9IFNFUDsKKyAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwogICAgIH0KLQotICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoRmluZEZpbGUgPSBGaW5kRmlyc3RGaWxlKG5hbWVidWYsICZGaWxlRGF0YSk7CisgICAgaEZpbmRGaWxlID0gRmluZEZpcnN0RmlsZVcod25hbWVidWYsICZ3RmlsZURhdGEpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKQEAgLTM1NjcsOSArMzQyNywxMyBAQAogICAgIH0KICAgICBkbyB7CiAgICAgICAgIC8qIFNraXAgb3ZlciAuIGFuZCAuLiAqLwotICAgICAgICBpZiAoc3RyY21wKEZpbGVEYXRhLmNGaWxlTmFtZSwgIi4iKSAhPSAwICYmCi0gICAgICAgICAgICBzdHJjbXAoRmlsZURhdGEuY0ZpbGVOYW1lLCAiLi4iKSAhPSAwKSB7Ci0gICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nKEZpbGVEYXRhLmNGaWxlTmFtZSk7CisgICAgICAgIGlmICh3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgorICAgICAgICAgICAgd2NzY21wKHdGaWxlRGF0YS5jRmlsZU5hbWUsIEwiLi4iKSAhPSAwKSB7CisgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKKyAgICAgICAgICAgIGlmIChwYXRoLT5uYXJyb3cgJiYgdikgeworICAgICAgICAgICAgICAgIFB5X1NFVFJFRih2LCBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHYpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CiAgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CkBAIC0zNTg0LDcgKzM0NDgsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICB9CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlKGhGaW5kRmlsZSwgJkZpbGVEYXRhKTsKKyAgICAgICAgcmVzdWx0ID0gRmluZE5leHRGaWxlVyhoRmluZEZpbGUsICZ3RmlsZURhdGEpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgIGl0IGdvdCB0byB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkuICovCkBAIC0zNjM5LDcgKzM1MDMsNyBAQAogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgY2hhciAqbmFtZTsKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZTsKICAgICAgICAgaWYgKHBhdGgtPm5hcnJvdykgewogICAgICAgICAgICAgbmFtZSA9IHBhdGgtPm5hcnJvdzsKICAgICAgICAgICAgIC8qIG9ubHkgcmV0dXJuIGJ5dGVzIGlmIHRoZXkgc3BlY2lmaWVkIGEgYnl0ZXMgb2JqZWN0ICovCkBAIC0zNzY1LDQxICszNjI5LDI5IEBACiBvc19fZ2V0ZnVsbHBhdGhuYW1lX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJiODY3OWQ1Njg0NWJjOWIgaW5wdXQ9MzMyZWQ1MzdjMjlkMGEzZV0qLwogewotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgIHsKLSAgICAgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKLSAgICAgICAgd2NoYXJfdCAqd3RlbXA7Ci0gICAgICAgIERXT1JEIHJlc3VsdDsKLSAgICAgICAgUHlPYmplY3QgKnY7CisgICAgd2NoYXJfdCB3b3V0YnVmW01BWF9QQVRIXSwgKndvdXRidWZwID0gd291dGJ1ZjsKKyAgICB3Y2hhcl90ICp3dGVtcDsKKyAgICBEV09SRCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnY7CiAKLSAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSCh3b3V0YnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3V0YnVmLCAmd3RlbXApOwotICAgICAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7Ci0gICAgICAgICAgICB3b3V0YnVmcCA9IFB5TWVtX05ldyh3Y2hhcl90LCByZXN1bHQpOwotICAgICAgICAgICAgaWYgKCF3b3V0YnVmcCkKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcocGF0aC0+d2lkZSwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKLSAgICAgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCi0gICAgICAgICAgICBQeU1lbV9GcmVlKHdvdXRidWZwKTsKLSAgICAgICAgcmV0dXJuIHY7CisgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKKyAgICBpZiAocmVzdWx0ID4gUHlfQVJSQVlfTEVOR1RIKHdvdXRidWYpKSB7CisgICAgICAgIHdvdXRidWZwID0gUHlNZW1fTmV3KHdjaGFyX3QsIHJlc3VsdCk7CisgICAgICAgIGlmICghd291dGJ1ZnApCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyhwYXRoLT53aWRlLCByZXN1bHQsIHdvdXRidWZwLCAmd3RlbXApOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY2hhciBvdXRidWZbTUFYX1BBVEhdOwotICAgICAgICBjaGFyICp0ZW1wOwotCi0gICAgICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgtPm5hcnJvdywgUHlfQVJSQVlfTEVOR1RIKG91dGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dGJ1ZiwgJnRlbXApKSB7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZ1bGxQYXRoTmFtZSIsIHBhdGgtPm9iamVjdCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nKG91dGJ1Zik7Ci0gICAgfQorICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod291dGJ1ZnAsIHdjc2xlbih3b3V0YnVmcCkpOworICAgICAgICBpZiAocGF0aC0+bmFycm93KQorICAgICAgICAgICAgUHlfU0VUUkVGKHYsIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQodikpOworICAgIH0gZWxzZQorICAgICAgICB2ID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGdWxsUGF0aE5hbWVXIiwgcGF0aC0+b2JqZWN0KTsKKyAgICBpZiAod291dGJ1ZnAgIT0gd291dGJ1ZikKKyAgICAgICAgUHlNZW1fRnJlZSh3b3V0YnVmcCk7CisgICAgcmV0dXJuIHY7CiB9CiAKIApAQCAtMzgyMSw3ICszNjczLDcgQEAKICAgICB3Y2hhcl90ICp0YXJnZXRfcGF0aDsKICAgICBpbnQgcmVzdWx0X2xlbmd0aDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXI7CisgICAgY29uc3Qgd2NoYXJfdCAqcGF0aF93Y2hhcjsKIAogICAgIHBhdGhfd2NoYXIgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBhdGgpOwogICAgIGlmIChwYXRoX3djaGFyID09IE5VTEwpCkBAIC0zODgzLDEwICszNzM1LDcgQEAKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmICghcGF0aC0+bmFycm93KQotICAgICAgICBhdHRyaWJ1dGVzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgtPndpZGUpOwotICAgIGVsc2UKLSAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoLT5uYXJyb3cpOworICAgIGF0dHJpYnV0ZXMgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC0+d2lkZSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQpAQCAtMzkxMiw3ICszNzYxLDggQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jYmRjYmQxMDU5Y2VlZjRjIGlucHV0PTdlYWNhZGM0MGFjYmRhNmJdKi8KIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHdjaGFyX3QgKnBhdGhfd2NoYXIsICptb3VudHBhdGg9TlVMTDsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoX3djaGFyOworICAgIHdjaGFyX3QgKm1vdW50cGF0aD1OVUxMOwogICAgIHNpemVfdCBidWZsZW47CiAgICAgQk9PTCByZXQ7CiAKQEAgLTM5ODMsMTAgKzM4MzMsNyBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLT53aWRlLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IENyZWF0ZURpcmVjdG9yeUEocGF0aC0+bmFycm93LCBOVUxMKTsKKyAgICByZXN1bHQgPSBDcmVhdGVEaXJlY3RvcnlXKHBhdGgtPndpZGUsIE5VTEwpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKQEAgLTQwMDYsNyArMzg1Myw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAocmVzdWx0IDwgMCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IocGF0aCk7Ci0jZW5kaWYKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTQxMTAsNyArMzk1Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW50ZXJuYWxfcmVuYW1lKHBhdGhfdCAqc3JjLCBwYXRoX3QgKmRzdCwgaW50IHNyY19kaXJfZmQsIGludCBkc3RfZGlyX2ZkLCBpbnQgaXNfcmVwbGFjZSkKIHsKLSAgICBjaGFyICpmdW5jdGlvbl9uYW1lID0gaXNfcmVwbGFjZSA/ICJyZXBsYWNlIiA6ICJyZW5hbWUiOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBpc19yZXBsYWNlID8gInJlcGxhY2UiIDogInJlbmFtZSI7CiAgICAgaW50IGRpcl9mZF9zcGVjaWZpZWQ7CiAKICNpZmRlZiBNU19XSU5ET1dTCkBAIC00MTI5LDMxICszOTc2LDI4IEBACiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGlmIChzcmMtPndpZGUpCi0gICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy0+d2lkZSwgZHN0LT53aWRlLCBmbGFncyk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBNb3ZlRmlsZUV4QShzcmMtPm5hcnJvdywgZHN0LT5uYXJyb3csIGZsYWdzKTsKKyAgICByZXN1bHQgPSBNb3ZlRmlsZUV4VyhzcmMtPndpZGUsIGRzdC0+d2lkZSwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIHBhdGhfZXJyb3IyKHNyYywgZHN0KTsKIAogI2Vsc2UKKyAgICBpZiAoKHNyYy0+bmFycm93ICYmIGRzdC0+d2lkZSkgfHwgKHNyYy0+d2lkZSAmJiBkc3QtPm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgSEFWRV9SRU5BTUVBVAogICAgIGlmIChkaXJfZmRfc3BlY2lmaWVkKQogICAgICAgICByZXN1bHQgPSByZW5hbWVhdChzcmNfZGlyX2ZkLCBzcmMtPm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0LT5uYXJyb3cpOwogICAgIGVsc2UKICNlbmRpZgotICAgICAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKKyAgICByZXN1bHQgPSByZW5hbWUoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICAgaWYgKHJlc3VsdCkKQEAgLTQyMzQsMTEgKzQwNzgsOCBAQAogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLT53aWRlKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFJlbW92ZURpcmVjdG9yeUEocGF0aC0+bmFycm93KTsKLSAgICByZXN1bHQgPSAhcmVzdWx0OyAvKiBXaW5kb3dzLCBzdWNjZXNzPTEsIFVOSVgsIHN1Y2Nlc3M9MCAqLworICAgIC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgcmVzdWx0ID0gIVJlbW92ZURpcmVjdG9yeVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDI5MCw3ICs0MTMxLDcgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yOTBmYzQzN2RkNGYzM2EwIGlucHV0PTg2YTU4NTU0YmE2MDk0YWZdKi8KIHsKICAgICBsb25nIHJlc3VsdDsKLSAgICBjaGFyICpieXRlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcoY29tbWFuZCk7CisgICAgY29uc3QgY2hhciAqYnl0ZXMgPSBQeUJ5dGVzX0FzU3RyaW5nKGNvbW1hbmQpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXN1bHQgPSBzeXN0ZW0oYnl0ZXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC00Mzg0LDExICs0MjI1LDggQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAocGF0aC0+d2lkZSkKLSAgICAgICAgcmVzdWx0ID0gUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBEZWxldGVGaWxlQShwYXRoLT5uYXJyb3cpOwotICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisgICAgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KKyAgICByZXN1bHQgPSAhUHlfRGVsZXRlRmlsZVcocGF0aC0+d2lkZSk7CiAjZWxzZQogI2lmZGVmIEhBVkVfVU5MSU5LQVQKICAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQpAQCAtNDU3MCw3ICs0NDA4LDcgQEAKICNpZiBkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKSB8fCBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKQogCiBzdGF0aWMgaW50Ci11dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCit1dGltZV9kaXJfZmQodXRpbWVfdCAqdXQsIGludCBkaXJfZmQsIGNvbnN0IGNoYXIgKnBhdGgsIGludCBmb2xsb3dfc3ltbGlua3MpCiB7CiAjaWZkZWYgSEFWRV9VVElNRU5TQVQKICAgICBpbnQgZmxhZ3MgPSBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVzsKQEAgLTQ2MTIsMTQgKzQ0NTAsMTQgQEAKICAgICAjZGVmaW5lIFBBVEhfVVRJTUVfSEFWRV9GRCAwCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKQorIyAgZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKyNlbmRpZgogCi0jZGVmaW5lIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MgXAotICAgICAgICAoZGVmaW5lZChIQVZFX1VUSU1FTlNBVCkgfHwgZGVmaW5lZChIQVZFX0xVVElNRVMpKQotCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKIAogc3RhdGljIGludAotdXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXQsIGNoYXIgKnBhdGgpCit1dGltZV9ub2ZvbGxvd19zeW1saW5rcyh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDYzNSw3ICs0NDczLDcgQEAKICNpZm5kZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgaW50Ci11dGltZV9kZWZhdWx0KHV0aW1lX3QgKnV0LCBjaGFyICpwYXRoKQordXRpbWVfZGVmYXVsdCh1dGltZV90ICp1dCwgY29uc3QgY2hhciAqcGF0aCkKIHsKICNpZmRlZiBIQVZFX1VUSU1FTlNBVAogICAgIFVUSU1FX1RPX1RJTUVTUEVDOwpAQCAtNDc3OCw3ICs0NjE2LDcgQEAKICAgICAgICAgdXRpbWUubm93ID0gMTsKICAgICB9CiAKLSNpZiAhVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmICFkZWZpbmVkKFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MpCiAgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoInV0aW1lIiwgZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgZ290byBleGl0OwogI2VuZGlmCkBAIC00Nzk5LDE0ICs0NjM3LDkgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZVcocGF0aC0+d2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLT5uYXJyb3csIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKKyAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgtPndpZGUsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTQ4MzIsNyArNDY2NSw3IEBACiAjZWxzZSAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogCi0jaWYgVVRJTUVfSEFWRV9OT0ZPTExPV19TWU1MSU5LUworI2lmZGVmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKICAgICBpZiAoKCFmb2xsb3dfc3ltbGlua3MpICYmIChkaXJfZmQgPT0gREVGQVVMVF9ESVJfRkQpKQogICAgICAgICByZXN1bHQgPSB1dGltZV9ub2ZvbGxvd19zeW1saW5rcygmdXRpbWUsIHBhdGgtPm5hcnJvdyk7CiAgICAgZWxzZQpAQCAtNDg5Miw5ICs0NzI1LDE1IEBACiAgICAgcmV0dXJuIE5VTEw7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCiB9CiAKKyNpZiBkZWZpbmVkKEhBVkVfV0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfV1NQQVdOVikKKyNkZWZpbmUgRVhFQ1ZfQ0hBUiB3Y2hhcl90CisjZWxzZQorI2RlZmluZSBFWEVDVl9DSEFSIGNoYXIKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChIQVZFX0VYRUNWKSB8fCBkZWZpbmVkKEhBVkVfU1BBV05WKQogc3RhdGljIHZvaWQKLWZyZWVfc3RyaW5nX2FycmF5KGNoYXIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKK2ZyZWVfc3RyaW5nX2FycmF5KEVYRUNWX0NIQVIgKiphcnJheSwgUHlfc3NpemVfdCBjb3VudCkKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspCkBAIC00OTAyLDQwICs0NzQxLDQ3IEBACiAgICAgUHlNZW1fREVMKGFycmF5KTsKIH0KIAotc3RhdGljCi1pbnQgZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgY2hhcioqb3V0KQorc3RhdGljIGludAorZnNjb252ZXJ0X3N0cmR1cChQeU9iamVjdCAqbywgRVhFQ1ZfQ0hBUiAqKm91dCkKIHsKLSAgICBQeU9iamVjdCAqYnl0ZXM7CiAgICAgUHlfc3NpemVfdCBzaXplOwotICAgIGlmICghUHlVbmljb2RlX0ZTQ29udmVydGVyKG8sICZieXRlcykpCisgICAgUHlPYmplY3QgKnViOworICAgIGludCByZXN1bHQgPSAwOworI2lmIGRlZmluZWQoSEFWRV9XRVhFQ1YpIHx8IGRlZmluZWQoSEFWRV9XU1BBV05WKQorICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihvLCAmdWIpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplKzEpOwotICAgIGlmICghKm91dCkgeworICAgICpvdXQgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh1YiwgJnNpemUpOworICAgIGlmICgqb3V0KQorICAgICAgICByZXN1bHQgPSAxOworI2Vsc2UKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihvLCAmdWIpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplID0gUHlCeXRlc19HRVRfU0laRSh1Yik7CisgICAgKm91dCA9IFB5TWVtX01hbGxvYyhzaXplICsgMSk7CisgICAgaWYgKCpvdXQpIHsKKyAgICAgICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHViKSwgc2l6ZSArIDEpOworICAgICAgICByZXN1bHQgPSAxOworICAgIH0gZWxzZQogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgbWVtY3B5KCpvdXQsIFB5Qnl0ZXNfQXNTdHJpbmcoYnl0ZXMpLCBzaXplKzEpOwotICAgIFB5X0RFQ1JFRihieXRlcyk7Ci0gICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICBQeV9ERUNSRUYodWIpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZCAoSEFWRV9GRVhFQ1ZFKQotc3RhdGljIGNoYXIqKgorc3RhdGljIEVYRUNWX0NIQVIqKgogcGFyc2VfZW52bGlzdChQeU9iamVjdCogZW52LCBQeV9zc2l6ZV90ICplbnZjX3B0cikKIHsKLSAgICBjaGFyICoqZW52bGlzdDsKICAgICBQeV9zc2l6ZV90IGksIHBvcywgZW52YzsKICAgICBQeU9iamVjdCAqa2V5cz1OVUxMLCAqdmFscz1OVUxMOwotICAgIFB5T2JqZWN0ICprZXksICp2YWwsICprZXkyLCAqdmFsMjsKLSAgICBjaGFyICpwLCAqaywgKnY7Ci0gICAgc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsLCAqa2V5MiwgKnZhbDIsICprZXl2YWw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAKICAgICBpID0gUHlNYXBwaW5nX1NpemUoZW52KTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGVudmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBpICsgMSk7CisgICAgZW52bGlzdCA9IFB5TWVtX05FVyhFWEVDVl9DSEFSICosIGkgKyAxKTsKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDk1OSwyOCArNDgwNSwzNSBAQAogICAgICAgICBpZiAoIWtleSB8fCAhdmFsKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIAotICAgICAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKGtleSwgJmtleTIpID09IDApCisjaWYgZGVmaW5lZChIQVZFX1dFWEVDVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihrZXksICZrZXkyKSkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfRlNDb252ZXJ0ZXIodmFsLCAmdmFsMikgPT0gMCkgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0RlY29kZXIodmFsLCAmdmFsMikpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkyKTsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KLQotICAgICAgICBrID0gUHlCeXRlc19Bc1N0cmluZyhrZXkyKTsKLSAgICAgICAgdiA9IFB5Qnl0ZXNfQXNTdHJpbmcodmFsMik7Ci0gICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoa2V5MikgKyBQeUJ5dGVzX0dFVF9TSVpFKHZhbDIpICsgMjsKLQotICAgICAgICBwID0gUHlNZW1fTkVXKGNoYXIsIGxlbik7Ci0gICAgICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGtleXZhbCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIGtleTIsIHZhbDIpOworI2Vsc2UKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoa2V5LCAma2V5MikpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcih2YWwsICZ2YWwyKSkgewogICAgICAgICAgICAgUHlfREVDUkVGKGtleTIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbDIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBQeU9TX3NucHJpbnRmKHAsIGxlbiwgIiVzPSVzIiwgaywgdik7Ci0gICAgICAgIGVudmxpc3RbZW52YysrXSA9IHA7CisgICAgICAgIGtleXZhbCA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBQeUJ5dGVzX0FTX1NUUklORyhrZXkyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHZhbDIpKTsKKyNlbmRpZgogICAgICAgICBQeV9ERUNSRUYoa2V5Mik7CiAgICAgICAgIFB5X0RFQ1JFRih2YWwyKTsKKyAgICAgICAgaWYgKCFrZXl2YWwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cChrZXl2YWwsICZlbnZsaXN0W2VudmMrK10pKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoa2V5dmFsKTsKICAgICB9CiAgICAgUHlfREVDUkVGKHZhbHMpOwogICAgIFB5X0RFQ1JFRihrZXlzKTsKQEAgLTQ5OTIsMTcgKzQ4NDUsMTUgQEAKIGVycm9yOgogICAgIFB5X1hERUNSRUYoa2V5cyk7CiAgICAgUHlfWERFQ1JFRih2YWxzKTsKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBjaGFyKioKK3N0YXRpYyBFWEVDVl9DSEFSKioKIHBhcnNlX2FyZ2xpc3QoUHlPYmplY3QqIGFyZ3YsIFB5X3NzaXplX3QgKmFyZ2MpCiB7CiAgICAgaW50IGk7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgKmFyZ2MrMSk7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgKmFyZ2MrMSk7CiAgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDI0LDYgKzQ4NzUsNyBAQAogICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCAqYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZgogCiAKQEAgLTUwMzEsNyArNDg4Myw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBvcy5leGVjdgogCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUwNDEsMTcgKzQ4OTMsMTUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX2V4ZWN2X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWIyMWRjMzRkZWViNWIwMDQgaW5wdXQ9OTYwNDE1NTk5MjVlNTIyOV0qLworb3NfZXhlY3ZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBwYXRoX3QgKnBhdGgsIFB5T2JqZWN0ICphcmd2KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTNiNTJmZWMzNGNkMGRhZmQgaW5wdXQ9OWJhYzMxZWZhZTA3ZGFjN10qLwogewotICAgIGNoYXIgKnBhdGhfY2hhcjsKLSAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgRVhFQ1ZfQ0hBUiAqKmFyZ3ZsaXN0OwogICAgIFB5X3NzaXplX3QgYXJnYzsKIAogICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCiAgICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KIAotICAgIHBhdGhfY2hhciA9IFB5Qnl0ZXNfQXNTdHJpbmcocGF0aCk7CiAgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CkBAIC01MDY4LDcgKzQ5MTgsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZXhlY3YocGF0aF9jaGFyLCBhcmd2bGlzdCk7CisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICBfd2V4ZWN2KHBhdGgtPndpZGUsIGFyZ3ZsaXN0KTsKKyNlbHNlCisgICAgZXhlY3YocGF0aC0+bmFycm93LCBhcmd2bGlzdCk7CisjZW5kaWYKIAogICAgIC8qIElmIHdlIGdldCBoZXJlIGl0J3MgZGVmaW5pdGVseSBhbiBlcnJvciAqLwogCkBAIC01MDk0LDggKzQ5NDgsOCBAQAogb3NfZXhlY3ZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndiwgUHlPYmplY3QgKmVudikKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mZjlmYThlNGRhOGJkZTU4IGlucHV0PTYyNjgwNGZhMDkyNjA2ZDldKi8KIHsKLSAgICBjaGFyICoqYXJndmxpc3QgPSBOVUxMOwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdCA9IE5VTEw7CisgICAgRVhFQ1ZfQ0hBUiAqKmVudmxpc3Q7CiAgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOwogCiAgICAgLyogZXhlY3ZlIGhhcyB0aHJlZSBhcmd1bWVudHM6IChwYXRoLCBhcmd2LCBlbnYpLCB3aGVyZQpAQCAtNTEyOCwzMCArNDk4MiwzMyBAQAogICAgICAgICBmZXhlY3ZlKHBhdGgtPmZkLCBhcmd2bGlzdCwgZW52bGlzdCk7CiAgICAgZWxzZQogI2VuZGlmCisjaWZkZWYgSEFWRV9XRVhFQ1YKKyAgICAgICAgX3dleGVjdmUocGF0aC0+d2lkZSwgYXJndmxpc3QsIGVudmxpc3QpOworI2Vsc2UKICAgICAgICAgZXhlY3ZlKHBhdGgtPm5hcnJvdywgYXJndmxpc3QsIGVudmxpc3QpOworI2VuZGlmCiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAogICAgIHBhdGhfZXJyb3IocGF0aCk7CiAKLSAgICB3aGlsZSAoLS1lbnZjID49IDApCi0gICAgICAgIFB5TWVtX0RFTChlbnZsaXN0W2VudmNdKTsKLSAgICBQeU1lbV9ERUwoZW52bGlzdCk7CisgICAgZnJlZV9zdHJpbmdfYXJyYXkoZW52bGlzdCwgZW52Yyk7CiAgIGZhaWw6CiAgICAgaWYgKGFyZ3ZsaXN0KQogICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisKICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCiAKIAotI2lmZGVmIEhBVkVfU1BBV05WCisjaWYgZGVmaW5lZChIQVZFX1NQQVdOVikgfHwgZGVmaW5lZChIQVZFX1dTUEFXTlYpCiAvKltjbGluaWMgaW5wdXRdCiBvcy5zcGF3bnYKIAogICAgIG1vZGU6IGludAogICAgICAgICBNb2RlIG9mIHByb2Nlc3MgY3JlYXRpb24uCi0gICAgcGF0aDogRlNDb252ZXJ0ZXIKKyAgICBwYXRoOiBwYXRoX3QKICAgICAgICAgUGF0aCBvZiBleGVjdXRhYmxlIGZpbGUuCiAgICAgYXJndjogb2JqZWN0CiAgICAgICAgIFR1cGxlIG9yIGxpc3Qgb2Ygc3RyaW5ncy4KQEAgLTUxNjEsMjAgKzUwMTgsMTggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NwYXdudl9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzQyN2MwY2U0MGYxMDYzOCBpbnB1dD0wNDJjOTFkZmMxZTZkZWJjXSovCitvc19zcGF3bnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgbW9kZSwgcGF0aF90ICpwYXRoLCBQeU9iamVjdCAqYXJndikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MWNkMDM3YTlkOTZiODE2IGlucHV0PTQzMjI0MjQyMzAzMjkxYmVdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKICAgICBpbnQgaTsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAKICAgICAvKiBzcGF3bnYgaGFzIHRocmVlIGFyZ3VtZW50czogKG1vZGUsIHBhdGgsIGFyZ3YpLCB3aGVyZQogICAgICAgIGFyZ3YgaXMgYSBsaXN0IG9yIHR1cGxlIG9mIHN0cmluZ3MuICovCiAKLSAgICBwYXRoX2NoYXIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBhdGgpOwogICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKICAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwogICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07CkBAIC01MTg5LDcgKzUwNDQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoRVhFQ1ZfQ0hBUiAqLCBhcmdjKzEpOwogICAgIGlmIChhcmd2bGlzdCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KQEAgLTUyMDksNyArNTA2NCwxMyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aF9jaGFyLCBhcmd2bGlzdCk7CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorI2lmZGVmIEhBVkVfV1NQQVdOVgorICAgIHNwYXdudmFsID0gX3dzcGF3bnYobW9kZSwgcGF0aC0+d2lkZSwgYXJndmxpc3QpOworI2Vsc2UKKyAgICBzcGF3bnZhbCA9IF9zcGF3bnYobW9kZSwgcGF0aC0+bmFycm93LCBhcmd2bGlzdCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CkBAIC01MjI2LDcgKzUwODcsNyBAQAogCiAgICAgbW9kZTogaW50CiAgICAgICAgIE1vZGUgb2YgcHJvY2VzcyBjcmVhdGlvbi4KLSAgICBwYXRoOiBGU0NvbnZlcnRlcgorICAgIHBhdGg6IHBhdGhfdAogICAgICAgICBQYXRoIG9mIGV4ZWN1dGFibGUgZmlsZS4KICAgICBhcmd2OiBvYmplY3QKICAgICAgICAgVHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzLgpAQCAtNTIzOCwxNiArNTA5OSwxNSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfc3Bhd252ZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBtb2RlLCBQeU9iamVjdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCitvc19zcGF3bnZlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IG1vZGUsIHBhdGhfdCAqcGF0aCwgUHlPYmplY3QgKmFyZ3YsCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmVudikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYmNmYTVmN2JhMmY0MjE5IGlucHV0PTAyMzYyZmQ5Mzc5NjNmOGZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0zMGZlODViZTU2ZmUzN2FkIGlucHV0PTNlNDA4MDNlZTdjNGM1ODZdKi8KIHsKLSAgICBjaGFyICpwYXRoX2NoYXI7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIGNoYXIgKiplbnZsaXN0OworICAgIEVYRUNWX0NIQVIgKiphcmd2bGlzdDsKKyAgICBFWEVDVl9DSEFSICoqZW52bGlzdDsKICAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGFyZ2MsIGksIGVudmM7Ci0gICAgUHlfaW50cHRyX3Qgc3Bhd252YWw7CisgICAgaW50cHRyX3Qgc3Bhd252YWw7CiAgICAgUHlPYmplY3QgKigqZ2V0aXRlbSkoUHlPYmplY3QgKiwgUHlfc3NpemVfdCk7CiAgICAgUHlfc3NpemVfdCBsYXN0YXJnID0gMDsKIApAQCAtNTI1NSw3ICs1MTE1LDYgQEAKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgcGF0aF9jaGFyID0gUHlCeXRlc19Bc1N0cmluZyhwYXRoKTsKICAgICBpZiAoUHlMaXN0X0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIGFyZ2MgPSBQeUxpc3RfU2l6ZShhcmd2KTsKICAgICAgICAgZ2V0aXRlbSA9IFB5TGlzdF9HZXRJdGVtOwpAQCAtNTI3NSw3ICs1MTM0LDcgQEAKICAgICAgICAgZ290byBmYWlsXzA7CiAgICAgfQogCi0gICAgYXJndmxpc3QgPSBQeU1lbV9ORVcoY2hhciAqLCBhcmdjKzEpOworICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKEVYRUNWX0NIQVIgKiwgYXJnYysxKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGZhaWxfMDsKQEAgLTUyOTksNyArNTE1OCwxMyBAQAogICAgICAgICBtb2RlID0gX1BfT1ZFUkxBWTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzcGF3bnZhbCA9IF9zcGF3bnZlKG1vZGUsIHBhdGhfY2hhciwgYXJndmxpc3QsIGVudmxpc3QpOworICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyNpZmRlZiBIQVZFX1dTUEFXTlYKKyAgICBzcGF3bnZhbCA9IF93c3Bhd252ZShtb2RlLCBwYXRoLT53aWRlLCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZWxzZQorICAgIHNwYXdudmFsID0gX3NwYXdudmUobW9kZSwgcGF0aC0+bmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CisjZW5kaWYKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoc3Bhd252YWwgPT0gLTEpCkBAIC01NzYyLDE0ICs1NjI3LDE0IEBACiAgICAgcGlkOiBwaWRfdAogICAgIC8KIAotUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyBpZGVudGlmaWVkIGJ5IHBpZC4KK1JldHVybiB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3MgaWRlbnRpZmllZCBieSBwaWQgKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykuCiAKIFRoZSBhZmZpbml0eSBpcyByZXR1cm5lZCBhcyBhIHNldCBvZiBDUFUgaWRlbnRpZmllcnMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc19zY2hlZF9nZXRhZmZpbml0eV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBpZF90IHBpZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PWVhZjE2MTkzNjg3NGI4YTFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mNzI2ZjJjMTkzYzE3YTRmIGlucHV0PTk4M2NlN2NiNGE1NjU5ODBdKi8KIHsKICAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CiAgICAgc2l6ZV90IHNldHNpemU7CkBAIC01OTMwLDcgKzU3OTUsNyBAQAogICAgIGlmIChfUHlfc2V0X2luaGVyaXRhYmxlKG1hc3Rlcl9mZCwgMCwgTlVMTCkgPCAwKQogICAgICAgICBnb3RvIHBvc2l4X2Vycm9yOwogCi0jaWYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoSEFWRV9ERVZfUFRDKQorI2lmICFkZWZpbmVkKF9fQ1lHV0lOX18pICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiAhZGVmaW5lZChIQVZFX0RFVl9QVEMpCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgInB0ZW0iKTsgLyogcHVzaCBwdGVtICovCiAgICAgaW9jdGwoc2xhdmVfZmQsIElfUFVTSCwgImxkdGVybSIpOyAvKiBwdXNoIGxkdGVybSAqLwogI2lmbmRlZiBfX2hwdXgKQEAgLTYwNDIsNiArNTkwNyw3IEBACiAjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KIAogCisjaWZkZWYgSEFWRV9HRVRQSUQKIC8qW2NsaW5pYyBpbnB1dF0KIG9zLmdldHBpZAogCkBAIC02MDU0LDYgKzU5MjAsNyBAQAogewogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwaWQoKSk7CiB9CisjZW5kaWYgLyogSEFWRV9HRVRQSUQgKi8KIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBMSVNUCiAKQEAgLTYyNTUsNyArNjEyMiw3IEBACiBwb3NpeF9pbml0Z3JvdXBzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqb25hbWU7Ci0gICAgY2hhciAqdXNlcm5hbWU7CisgICAgY29uc3QgY2hhciAqdXNlcm5hbWU7CiAgICAgaW50IHJlczsKICNpZmRlZiBfX0FQUExFX18KICAgICBpbnQgZ2lkOwpAQCAtNzAwMiw3ICs2ODY5LDcgQEAKIC8qIE1TIEMgaGFzIGEgdmFyaWFudCBvZiB3YWl0cGlkKCkgdGhhdCdzIHVzYWJsZSBmb3IgbW9zdCBwdXJwb3Nlcy4gKi8KIC8qW2NsaW5pYyBpbnB1dF0KIG9zLndhaXRwaWQKLSAgICBwaWQ6IFB5X2ludHB0cl90CisgICAgcGlkOiBpbnRwdHJfdAogICAgIG9wdGlvbnM6IGludAogICAgIC8KIApAQCAtNzAxNSwxMSArNjg4MiwxMSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotb3Nfd2FpdHBpZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IHBpZCwgaW50IG9wdGlvbnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTVmMWNlMDA1YTM0NmIwOSBpbnB1dD00NDRjOGY1MWNjYTViODYyXSovCitvc193YWl0cGlkX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgcGlkLCBpbnQgb3B0aW9ucykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZTgzNmIyMjEyNzFkNTM4IGlucHV0PTQwZjI0NDBjNTE1NDEwZjhdKi8KIHsKICAgICBpbnQgc3RhdHVzOwotICAgIFB5X2ludHB0cl90IHJlczsKKyAgICBpbnRwdHJfdCByZXM7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKICAgICBkbyB7CkBAIC03MTMwLDE2ICs2OTk3LDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2luX3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICB3Y2hhcl90ICpwYXRoOworICAgIGNvbnN0IHdjaGFyX3QgKnBhdGg7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKICAgICBEV09SRCBpb19yZXN1bHQ7CiAgICAgUHlPYmplY3QgKnBvLCAqcmVzdWx0OwotICAgICAgICBpbnQgZGlyX2ZkOworICAgIGludCBkaXJfZmQ7CiAgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOwogCi0gICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKLSAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7Ci0gICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKKyAgICBjaGFyIHRhcmdldF9idWZmZXJbX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKKyAgICBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUiAqcmRiID0gKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSICopdGFyZ2V0X2J1ZmZlcjsKKyAgICBjb25zdCB3Y2hhcl90ICpwcmludF9uYW1lOwogCiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZGlyX2ZkIiwgTlVMTH07CiAKQEAgLTcyMDcsMjIgKzcwNzQsMTkgQEAKICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAKIC8qIEdyYWIgQ3JlYXRlU3ltYm9saWNMaW5rVyBkeW5hbWljYWxseSBmcm9tIGtlcm5lbDMyICovCi1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUFdTVFIsIExQV1NUUiwgRFdPUkQpID0gTlVMTDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua0EpKExQU1RSLCBMUFNUUiwgRFdPUkQpID0gTlVMTDsKK3N0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQQ1dTVFIsIExQQ1dTVFIsIERXT1JEKSA9IE5VTEw7CiAKIHN0YXRpYyBpbnQKIGNoZWNrX0NyZWF0ZVN5bWJvbGljTGluayh2b2lkKQogewogICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CiAgICAgLyogb25seSByZWNoZWNrICovCi0gICAgaWYgKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkKKyAgICBpZiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykKICAgICAgICAgcmV0dXJuIDE7CiAgICAgaEtlcm5lbDMyID0gR2V0TW9kdWxlSGFuZGxlVyhMIktFUk5FTDMyIik7CiAgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKLSAgICAqKEZBUlBST0MqKSZQeV9DcmVhdGVTeW1ib2xpY0xpbmtBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rQSIpOwotICAgIHJldHVybiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAmJiBQeV9DcmVhdGVTeW1ib2xpY0xpbmtBKTsKKyAgICByZXR1cm4gUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyAhPSBOVUxMOwogfQogCiAvKiBSZW1vdmUgdGhlIGxhc3QgcG9ydGlvbiBvZiB0aGUgcGF0aCAqLwpAQCAtNzIzOSwyMCArNzEwMyw2IEBACiAgICAgKnB0ciA9IDA7CiB9CiAKLS8qIFJlbW92ZSB0aGUgbGFzdCBwb3J0aW9uIG9mIHRoZSBwYXRoICovCi1zdGF0aWMgdm9pZAotX2Rpcm5hbWVBKGNoYXIgKnBhdGgpCi17Ci0gICAgY2hhciAqcHRyOwotCi0gICAgLyogd2FsayB0aGUgcGF0aCBmcm9tIHRoZSBlbmQgdW50aWwgYSBiYWNrc2xhc2ggaXMgZW5jb3VudGVyZWQgKi8KLSAgICBmb3IocHRyID0gcGF0aCArIHN0cmxlbihwYXRoKTsgcHRyICE9IHBhdGg7IHB0ci0tKSB7Ci0gICAgICAgIGlmICgqcHRyID09ICdcXCcgfHwgKnB0ciA9PSAnLycpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgKnB0ciA9IDA7Ci19Ci0KIC8qIElzIHRoaXMgcGF0aCBhYnNvbHV0ZT8gKi8KIHN0YXRpYyBpbnQKIF9pc19hYnNXKGNvbnN0IFdDSEFSICpwYXRoKQpAQCAtNzI2MSwxNCArNzExMSw2IEBACiAKIH0KIAotLyogSXMgdGhpcyBwYXRoIGFic29sdXRlPyAqLwotc3RhdGljIGludAotX2lzX2Fic0EoY29uc3QgY2hhciAqcGF0aCkKLXsKLSAgICByZXR1cm4gcGF0aFswXSA9PSAnXFwnIHx8IHBhdGhbMF0gPT0gJy8nIHx8IHBhdGhbMV0gPT0gJzonOwotCi19Ci0KIC8qIGpvaW4gcm9vdCBhbmQgcmVzdCB3aXRoIGEgYmFja3NsYXNoICovCiBzdGF0aWMgdm9pZAogX2pvaW5XKFdDSEFSICpkZXN0X3BhdGgsIGNvbnN0IFdDSEFSICpyb290LCBjb25zdCBXQ0hBUiAqcmVzdCkKQEAgLTcyOTAsMzAgKzcxMzIsOSBAQAogICAgIHdjc2NweShkZXN0X3BhdGgrcm9vdF9sZW4sIHJlc3QpOwogfQogCi0vKiBqb2luIHJvb3QgYW5kIHJlc3Qgd2l0aCBhIGJhY2tzbGFzaCAqLwotc3RhdGljIHZvaWQKLV9qb2luQShjaGFyICpkZXN0X3BhdGgsIGNvbnN0IGNoYXIgKnJvb3QsIGNvbnN0IGNoYXIgKnJlc3QpCi17Ci0gICAgc2l6ZV90IHJvb3RfbGVuOwotCi0gICAgaWYgKF9pc19hYnNBKHJlc3QpKSB7Ci0gICAgICAgIHN0cmNweShkZXN0X3BhdGgsIHJlc3QpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcm9vdF9sZW4gPSBzdHJsZW4ocm9vdCk7Ci0KLSAgICBzdHJjcHkoZGVzdF9wYXRoLCByb290KTsKLSAgICBpZihyb290X2xlbikgewotICAgICAgICBkZXN0X3BhdGhbcm9vdF9sZW5dID0gJ1xcJzsKLSAgICAgICAgcm9vdF9sZW4rKzsKLSAgICB9Ci0gICAgc3RyY3B5KGRlc3RfcGF0aCtyb290X2xlbiwgcmVzdCk7Ci19Ci0KIC8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgaW50Ci1fY2hlY2tfZGlyVyhXQ0hBUiAqc3JjLCBXQ0hBUiAqZGVzdCkKK19jaGVja19kaXJXKExQQ1dTVFIgc3JjLCBMUENXU1RSIGRlc3QpCiB7CiAgICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKICAgICBXQ0hBUiBkZXN0X3BhcmVudFtNQVhfUEFUSF07CkBAIC03MzI5LDI1ICs3MTUwLDYgQEAKICAgICAgICAgJiYgc3JjX2luZm8uZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQogICAgICk7CiB9Ci0KLS8qIFJldHVybiBUcnVlIGlmIHRoZSBwYXRoIGF0IHNyYyByZWxhdGl2ZSB0byBkZXN0IGlzIGEgZGlyZWN0b3J5ICovCi1zdGF0aWMgaW50Ci1fY2hlY2tfZGlyQShjaGFyICpzcmMsIGNoYXIgKmRlc3QpCi17Ci0gICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFUQSBzcmNfaW5mbzsKLSAgICBjaGFyIGRlc3RfcGFyZW50W01BWF9QQVRIXTsKLSAgICBjaGFyIHNyY19yZXNvbHZlZFtNQVhfUEFUSF0gPSAiIjsKLQotICAgIC8qIGRlc3RfcGFyZW50ID0gb3MucGF0aC5kaXJuYW1lKGRlc3QpICovCi0gICAgc3RyY3B5KGRlc3RfcGFyZW50LCBkZXN0KTsKLSAgICBfZGlybmFtZUEoZGVzdF9wYXJlbnQpOwotICAgIC8qIHNyY19yZXNvbHZlZCA9IG9zLnBhdGguam9pbihkZXN0X3BhcmVudCwgc3JjKSAqLwotICAgIF9qb2luQShzcmNfcmVzb2x2ZWQsIGRlc3RfcGFyZW50LCBzcmMpOwotICAgIHJldHVybiAoCi0gICAgICAgIEdldEZpbGVBdHRyaWJ1dGVzRXhBKHNyY19yZXNvbHZlZCwgR2V0RmlsZUV4SW5mb1N0YW5kYXJkLCAmc3JjX2luZm8pCi0gICAgICAgICYmIHNyY19pbmZvLmR3RmlsZUF0dHJpYnV0ZXMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkKLSAgICApOwotfQogI2VuZGlmCiAKIApAQCAtNzQwNywxOCArNzIwOSwxMCBAQAogI2lmZGVmIE1TX1dJTkRPV1MKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZHN0LT53aWRlKSB7Ci0gICAgICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSB8PSBfY2hlY2tfZGlyVyhzcmMtPndpZGUsIGRzdC0+d2lkZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LT53aWRlLCBzcmMtPndpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBpZiBzcmMgaXMgYSBkaXJlY3RvcnksIGVuc3VyZSB0YXJnZXRfaXNfZGlyZWN0b3J5PT0xICovCi0gICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkgfD0gX2NoZWNrX2RpckEoc3JjLT5uYXJyb3csIGRzdC0+bmFycm93KTsKLSAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QtPm5hcnJvdywgc3JjLT5uYXJyb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgfQorICAgIC8qIGlmIHNyYyBpcyBhIGRpcmVjdG9yeSwgZW5zdXJlIHRhcmdldF9pc19kaXJlY3Rvcnk9PTEgKi8KKyAgICB0YXJnZXRfaXNfZGlyZWN0b3J5IHw9IF9jaGVja19kaXJXKHNyYy0+d2lkZSwgZHN0LT53aWRlKTsKKyAgICByZXN1bHQgPSBQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKGRzdC0+d2lkZSwgc3JjLT53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmICghcmVzdWx0KQpAQCAtNzcyMywxNiArNzUxNywxNSBAQAogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAgICAgaWYgKHBhdGgtPndpZGUpCi0gICAgICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7Ci0gICAgICAgIGVsc2UKLSNlbmRpZgorICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBmbGFncywgbW9kZSk7CisjZWxzZQogI2lmZGVmIEhBVkVfT1BFTkFUCiAgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCiAgICAgICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOwogICAgICAgICBlbHNlCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX09QRU5BVCAqLwogICAgICAgICAgICAgZmQgPSBvcGVuKHBhdGgtPm5hcnJvdywgZmxhZ3MsIG1vZGUpOworI2VuZGlmIC8qICFNU19XSU5ET1dTICovCiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfSB3aGlsZSAoZmQgPCAwICYmIGVycm5vID09IEVJTlRSICYmICEoYXN5bmNfZXJyID0gUHlFcnJfQ2hlY2tTaWduYWxzKCkpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtNzc2Nyw4ICs3NTYwLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZmU0ZTkzNjAyODIyYzE0IGlucHV0PTJiYzQyNDUxY2E1YzMyMjNdKi8KIHsKICAgICBpbnQgcmVzOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8KICAgICAgKiBhbmQgaHR0cDovL2xpbnV4LmRlcmtlaWxlci5jb20vTWFpbGluZy1MaXN0cy9LZXJuZWwvMjAwNS0wOS8zMDAwLmh0bWwKICAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgpAQCAtNzgwMSw5ICs3NTkyLDggQEAKICAgICBpbnQgaTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIGZvciAoaSA9IGZkX2xvdzsgaSA8IGZkX2hpZ2g7IGkrKykKLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChpKSkKLSAgICAgICAgICAgIGNsb3NlKGkpOworICAgIGZvciAoaSA9IFB5X01BWChmZF9sb3csIDApOyBpIDwgZmRfaGlnaDsgaSsrKQorICAgICAgICBjbG9zZShpKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgUHlfUkVUVVJOX05PTkU7CkBAIC03ODQ3LDcgKzc2MzcsNyBAQAogICAgIGludCBkdXAzX3dvcmtzID0gLTE7CiAjZW5kaWYKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkX2R1cDIoZmQsIGZkMikpCisgICAgaWYgKGZkIDwgMCB8fCBmZDIgPCAwKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIC8qIGR1cDIoKSBjYW4gZmFpbCB3aXRoIEVJTlRSIGlmIHRoZSB0YXJnZXQgRkQgaXMgYWxyZWFkeSBvcGVuLCBiZWNhdXNlIGl0CkBAIC03OTcxLDEwICs3NzYxLDYgQEAKIHsKICAgICBQeV9vZmZfdCByZXN1bHQ7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICNpZmRlZiBTRUVLX1NFVAogICAgIC8qIFR1cm4gMCwgMSwgMiBpbnRvIFNFRUtfe1NFVCxDVVIsRU5EfSAqLwogICAgIHN3aXRjaCAoaG93KSB7CkBAIC03OTg3LDEwICs3NzczLDYgQEAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCkBAIC04MTk4LDEwICs3OTgwLDYgQEAKICAgICBidWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbGVuZ3RoKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgfQogCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCkBAIC04MzY0LDcgKzgxNDIsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZGljdCwgImlpT246c2VuZGZpbGUiLAogICAgICAgICAgICAga2V5d29yZHMsICZvdXQsICZpbiwgJm9mZm9iaiwgJmNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWZkZWYgbGludXgKKyNpZmRlZiBfX2xpbnV4X18KICAgICBpZiAob2Zmb2JqID09IFB5X05vbmUpIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtODQ0NCw4ICs4MjIyLDYgQEAKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02YTQ4YzhiNGU2NDRjYTAwIGlucHV0PTA4Y2U5NGFhMWVhZjdiNWVdKi8KIHsKICAgICBpbnQgcmV0dXJuX3ZhbHVlOwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAogICAgIHJldHVybl92YWx1ZSA9IGlzYXR0eShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTg0ODQsOCArODI2MCw4IEBACiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIG9rID0gQ3JlYXRlUGlwZSgmcmVhZCwgJndyaXRlLCAmYXR0ciwgMCk7CiAgICAgaWYgKG9rKSB7Ci0gICAgICAgIGZkc1swXSA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3QpcmVhZCwgX09fUkRPTkxZKTsKLSAgICAgICAgZmRzWzFdID0gX29wZW5fb3NmaGFuZGxlKChQeV9pbnRwdHJfdCl3cml0ZSwgX09fV1JPTkxZKTsKKyAgICAgICAgZmRzWzBdID0gX29wZW5fb3NmaGFuZGxlKChpbnRwdHJfdClyZWFkLCBfT19SRE9OTFkpOworICAgICAgICBmZHNbMV0gPSBfb3Blbl9vc2ZoYW5kbGUoKGludHB0cl90KXdyaXRlLCBfT19XUk9OTFkpOwogICAgICAgICBpZiAoZmRzWzBdID09IC0xIHx8IGZkc1sxXSA9PSAtMSkgewogICAgICAgICAgICAgQ2xvc2VIYW5kbGUocmVhZCk7CiAgICAgICAgICAgICBDbG9zZUhhbmRsZSh3cml0ZSk7CkBAIC04NjM3LDExICs4NDEzLDYgQEAKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIGRvIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC04ODI0LDkgKzg1OTUsNiBAQAogICAgIGludCByZXN1bHQ7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotCiAgICAgZG8gewogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTg4NzMsMTAgKzg2NDEsNyBAQAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmIChwYXRoLT53aWRlKQotICAgICAgICBmZCA9IF93b3BlbihwYXRoLT53aWRlLCBfT19XUk9OTFkgfCBfT19CSU5BUlkgfCBfT19OT0lOSEVSSVQpOwotICAgIGVsc2UKLSAgICAgICAgZmQgPSBfb3BlbihwYXRoLT5uYXJyb3csIF9PX1dST05MWSB8IF9PX0JJTkFSWSB8IF9PX05PSU5IRVJJVCk7CisgICAgZmQgPSBfd29wZW4ocGF0aC0+d2lkZSwgX09fV1JPTkxZIHwgX09fQklOQVJZIHwgX09fTk9JTkhFUklUKTsKICAgICBpZiAoZmQgPCAwKQogICAgICAgICByZXN1bHQgPSAtMTsKICAgICBlbHNlIHsKQEAgLTkwMjAsNyArODc4NSw3IEBACiBvc19wdXRlbnZfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnZhbHVlKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyOWE1NjdkNmIyMzI3ZDIgaW5wdXQ9YmE1ODY1ODFjMmU2MTA1Zl0qLwogewotICAgIHdjaGFyX3QgKmVudjsKKyAgICBjb25zdCB3Y2hhcl90ICplbnY7CiAKICAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CkBAIC05MDY2LDggKzg4MzEsOCBAQAogewogICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CiAgICAgY2hhciAqZW52OwotICAgIGNoYXIgKm5hbWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lKTsKLSAgICBjaGFyICp2YWx1ZV9zdHJpbmcgPSBQeUJ5dGVzX0FzU3RyaW5nKHZhbHVlKTsKKyAgICBjb25zdCBjaGFyICpuYW1lX3N0cmluZyA9IFB5Qnl0ZXNfQXNTdHJpbmcobmFtZSk7CisgICAgY29uc3QgY2hhciAqdmFsdWVfc3RyaW5nID0gUHlCeXRlc19Bc1N0cmluZyh2YWx1ZSk7CiAKICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgiJXM9JXMiLCBuYW1lX3N0cmluZywgdmFsdWVfc3RyaW5nKTsKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgewpAQCAtOTM0NSwxNyArOTExMCwxNyBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMCwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX2JzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAxLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZnJzaXplKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2Jsb2NrcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2Jsb2NrcykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9iZnJlZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JmcmVlKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2JhdmFpbCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2JhdmFpbCkpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORykgc3QuZl9maWxlcykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBzdC5mX2ZpbGVzKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKSBzdC5mX2ZmcmVlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmZyZWUpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIDcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIHN0LmZfZmF2YWlsKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpIHN0LmZfZmF2YWlsKSk7CiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA4LCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIHN0LmZfZmxhZykpOwogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwgUHlMb25nX0Zyb21Mb25nKChsb25nKSBzdC5mX25hbWVtYXgpKTsKICNlbmRpZgpAQCAtOTQ4Niw4ICs5MjUxLDggQEAKICAqIHN1ZmZpY2llbnRseSBwZXJ2YXNpdmUgdGhhdCBpdCdzIG5vdCB3b3J0aCB0aGUgbG9zcyBvZiByZWFkYWJpbGl0eS4KICAqLwogc3RydWN0IGNvbnN0ZGVmIHsKLSAgICBjaGFyICpuYW1lOwotICAgIGxvbmcgdmFsdWU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKKyAgICBpbnQgdmFsdWU7CiB9OwogCiBzdGF0aWMgaW50CkBAIC05NDk1LDcgKzkyNjAsMTAgQEAKICAgICAgICAgICAgICAgc2l6ZV90IHRhYmxlc2l6ZSkKIHsKICAgICBpZiAoUHlMb25nX0NoZWNrKGFyZykpIHsKLSAgICAgICAgKnZhbHVlcCA9IFB5TG9uZ19BU19MT05HKGFyZyk7CisgICAgICAgIGludCB2YWx1ZSA9IF9QeUxvbmdfQXNJbnQoYXJnKTsKKyAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgKnZhbHVlcCA9IHZhbHVlOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC0xMDQ1Niw3ICsxMDIyNCw3IEBACiAKIHN0YXRpYyBpbnQKIHNldHVwX2NvbmZuYW1lX3RhYmxlKHN0cnVjdCBjb25zdGRlZiAqdGFibGUsIHNpemVfdCB0YWJsZXNpemUsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0YWJsZW5hbWUsIFB5T2JqZWN0ICptb2R1bGUpCiB7CiAgICAgUHlPYmplY3QgKmQgPSBOVUxMOwogICAgIHNpemVfdCBpOwpAQCAtMTA1MjcsMzEgKzEwMjk1LDggQEAKIH0KIAogI2lmZGVmIE1TX1dJTkRPV1MKLS8qIEFDIDMuNTogY2hhbmdlIHRvIHBhdGhfdD8gYnV0IHRoYXQgbWlnaHQgY2hhbmdlIGV4Y2VwdGlvbnMgKi8KLVB5RG9jX1NUUlZBUih3aW4zMl9zdGFydGZpbGVfX2RvY19fLAotInN0YXJ0ZmlsZShmaWxlcGF0aCBbLCBvcGVyYXRpb25dKVxuXAotXG5cCi1TdGFydCBhIGZpbGUgd2l0aCBpdHMgYXNzb2NpYXRlZCBhcHBsaWNhdGlvbi5cblwKLVxuXAotV2hlbiBcIm9wZXJhdGlvblwiIGlzIG5vdCBzcGVjaWZpZWQgb3IgXCJvcGVuXCIsIHRoaXMgYWN0cyBsaWtlXG5cCi1kb3VibGUtY2xpY2tpbmcgdGhlIGZpbGUgaW4gRXhwbG9yZXIsIG9yIGdpdmluZyB0aGUgZmlsZSBuYW1lIGFzIGFuXG5cCi1hcmd1bWVudCB0byB0aGUgRE9TIFwic3RhcnRcIiBjb21tYW5kOiB0aGUgZmlsZSBpcyBvcGVuZWQgd2l0aCB3aGF0ZXZlclxuXAotYXBwbGljYXRpb24gKGlmIGFueSkgaXRzIGV4dGVuc2lvbiBpcyBhc3NvY2lhdGVkLlxuXAotV2hlbiBhbm90aGVyIFwib3BlcmF0aW9uXCIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGhcblwKLXRoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyBcInByaW50XCIuXG5cCi1cblwKLXN0YXJ0ZmlsZSByZXR1cm5zIGFzIHNvb24gYXMgdGhlIGFzc29jaWF0ZWQgYXBwbGljYXRpb24gaXMgbGF1bmNoZWQuXG5cCi1UaGVyZSBpcyBubyBvcHRpb24gdG8gd2FpdCBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIGNsb3NlLCBhbmQgbm8gd2F5XG5cCi10byByZXRyaWV2ZSB0aGUgYXBwbGljYXRpb24ncyBleGl0IHN0YXR1cy5cblwKLVxuXAotVGhlIGZpbGVwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gIElmIHlvdSB3YW50IHRvIHVzZVxuXAotYW4gYWJzb2x1dGUgcGF0aCwgbWFrZSBzdXJlIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaXMgbm90IGEgc2xhc2ggKFwiL1wiKTtcblwKLXRoZSB1bmRlcmx5aW5nIFdpbjMyIFNoZWxsRXhlY3V0ZSBmdW5jdGlvbiBkb2Vzbid0IHdvcmsgaWYgaXQgaXMuIik7Ci0KIC8qIEdyYWIgU2hlbGxFeGVjdXRlIGR5bmFtaWNhbGx5IGZyb20gc2hlbGwzMiAqLwogc3RhdGljIGludCBoYXNfU2hlbGxFeGVjdXRlID0gLTE7Ci1zdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlQSkoSFdORCwgTFBDU1RSLCBMUENTVFIsIExQQ1NUUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENTVFIsIElOVCk7CiBzdGF0aWMgSElOU1RBTkNFIChDQUxMQkFDSyAqUHlfU2hlbGxFeGVjdXRlVykoSFdORCwgTFBDV1NUUiwgTFBDV1NUUiwgTFBDV1NUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMUENXU1RSLCBJTlQpOwogc3RhdGljIGludApAQCAtMTA1NjUsMTIgKzEwMzEwLDkgQEAKICAgICAgICAgaFNoZWxsMzIgPSBMb2FkTGlicmFyeVcoTCJTSEVMTDMyIik7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIGlmIChoU2hlbGwzMikgewotICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlQSA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlQSIpOwogICAgICAgICAgICAgKihGQVJQUk9DKikmUHlfU2hlbGxFeGVjdXRlVyA9IEdldFByb2NBZGRyZXNzKGhTaGVsbDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hlbGxFeGVjdXRlVyIpOwotICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZUEgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TaGVsbEV4ZWN1dGVXOworICAgICAgICAgICAgaGFzX1NoZWxsRXhlY3V0ZSA9IFB5X1NoZWxsRXhlY3V0ZVcgIT0gTlVMTDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGhhc19TaGVsbEV4ZWN1dGUgPSAwOwogICAgICAgICB9CkBAIC0xMDU3OSwxNiArMTAzMjEsMzYgQEAKIH0KIAogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfc3RhcnRmaWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqb2ZpbGVwYXRoOwotICAgIGNoYXIgKmZpbGVwYXRoOwotICAgIGNoYXIgKm9wZXJhdGlvbiA9IE5VTEw7Ci0gICAgd2NoYXJfdCAqd3BhdGgsICp3b3BlcmF0aW9uOwotICAgIEhJTlNUQU5DRSByYzsKKy8qW2NsaW5pYyBpbnB1dF0KK29zLnN0YXJ0ZmlsZQorICAgIGZpbGVwYXRoOiBwYXRoX3QKKyAgICBvcGVyYXRpb246IFB5X1VOSUNPREUgPSBOVUxMCiAKLSAgICBQeU9iamVjdCAqdW5pcGF0aCwgKnVvcGVyYXRpb24gPSBOVUxMOworc3RhcnRmaWxlKGZpbGVwYXRoIFssIG9wZXJhdGlvbl0pCisKK1N0YXJ0IGEgZmlsZSB3aXRoIGl0cyBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uLgorCitXaGVuICJvcGVyYXRpb24iIGlzIG5vdCBzcGVjaWZpZWQgb3IgIm9wZW4iLCB0aGlzIGFjdHMgbGlrZQorZG91YmxlLWNsaWNraW5nIHRoZSBmaWxlIGluIEV4cGxvcmVyLCBvciBnaXZpbmcgdGhlIGZpbGUgbmFtZSBhcyBhbgorYXJndW1lbnQgdG8gdGhlIERPUyAic3RhcnQiIGNvbW1hbmQ6IHRoZSBmaWxlIGlzIG9wZW5lZCB3aXRoIHdoYXRldmVyCithcHBsaWNhdGlvbiAoaWYgYW55KSBpdHMgZXh0ZW5zaW9uIGlzIGFzc29jaWF0ZWQuCitXaGVuIGFub3RoZXIgIm9wZXJhdGlvbiIgaXMgZ2l2ZW4sIGl0IHNwZWNpZmllcyB3aGF0IHNob3VsZCBiZSBkb25lIHdpdGgKK3RoZSBmaWxlLiAgQSB0eXBpY2FsIG9wZXJhdGlvbiBpcyAicHJpbnQiLgorCitzdGFydGZpbGUgcmV0dXJucyBhcyBzb29uIGFzIHRoZSBhc3NvY2lhdGVkIGFwcGxpY2F0aW9uIGlzIGxhdW5jaGVkLgorVGhlcmUgaXMgbm8gb3B0aW9uIHRvIHdhaXQgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byBjbG9zZSwgYW5kIG5vIHdheQordG8gcmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uJ3MgZXhpdCBzdGF0dXMuCisKK1RoZSBmaWxlcGF0aCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBJZiB5b3Ugd2FudCB0byB1c2UKK2FuIGFic29sdXRlIHBhdGgsIG1ha2Ugc3VyZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIG5vdCBhIHNsYXNoICgiLyIpOwordGhlIHVuZGVybHlpbmcgV2luMzIgU2hlbGxFeGVjdXRlIGZ1bmN0aW9uIGRvZXNuJ3Qgd29yayBpZiBpdCBpcy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK29zX3N0YXJ0ZmlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIHBhdGhfdCAqZmlsZXBhdGgsIFB5X1VOSUNPREUgKm9wZXJhdGlvbikKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05MTJjZWJhNzlhY2ZhMWM5IGlucHV0PTYzOTUwYmYyOTg2MzgwZDBdKi8KK3sKKyAgICBISU5TVEFOQ0UgcmM7CiAKICAgICBpZighY2hlY2tfU2hlbGxFeGVjdXRlKCkpIHsKICAgICAgICAgLyogSWYgdGhlIE9TIGRvZXNuJ3QgaGF2ZSBTaGVsbEV4ZWN1dGUsIHJldHVybiBhCkBAIC0xMDU5Nyw2OCArMTAzNTksMTYgQEAKICAgICAgICAgICAgICJzdGFydGZpbGUgbm90IGF2YWlsYWJsZSBvbiB0aGlzIHBsYXRmb3JtIik7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfHM6c3RhcnRmaWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnVuaXBhdGgsICZvcGVyYXRpb24pKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIH0KLQotICAgIGlmIChvcGVyYXRpb24pIHsKLSAgICAgICAgdW9wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG9wZXJhdGlvbiksIE5VTEwpOwotICAgICAgICBpZiAoIXVvcGVyYXRpb24pIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBvcGVyYXRpb24gPSBOVUxMOwotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pcGF0aCk7Ci0gICAgaWYgKHdwYXRoID09IE5VTEwpCi0gICAgICAgIGdvdG8gbm9ybWFsOwotICAgIGlmICh1b3BlcmF0aW9uKSB7Ci0gICAgICAgIHdvcGVyYXRpb24gPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVvcGVyYXRpb24pOwotICAgICAgICBpZiAod29wZXJhdGlvbiA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBub3JtYWw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgd29wZXJhdGlvbiA9IE5VTEw7Ci0KICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmMgPSBQeV9TaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAorICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlVygoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLT53aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfWERFQ1JFRih1b3BlcmF0aW9uKTsKICAgICBpZiAocmMgPD0gKEhJTlNUQU5DRSkzMikgewotICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIHVuaXBhdGgpOworICAgICAgICB3aW4zMl9lcnJvcl9vYmplY3QoInN0YXJ0ZmlsZSIsIGZpbGVwYXRoLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi1ub3JtYWw6Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnxzOnN0YXJ0ZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZXJhdGlvbikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZmlsZXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gUHlfU2hlbGxFeGVjdXRlQSgoSFdORCkwLCBvcGVyYXRpb24sIGZpbGVwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcigic3RhcnRmaWxlIiwgZmlsZXBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob2ZpbGVwYXRoKTsKLSAgICAgICAgcmV0dXJuIGVycnZhbDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9maWxlcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIFB5X1JFVFVSTl9OT05FOwogfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIApAQCAtMTA4MjYsNyArMTA1MzYsNyBAQAogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CiAgICAgICAgIHZvaWQgKnB0cjsKICAgICAgICAgc3NpemVfdCByZXN1bHQ7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0gezEyOCwgWEFUVFJfU0laRV9NQVgsIDB9OworICAgICAgICBzdGF0aWMgY29uc3QgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKICAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKICAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgewogICAgICAgICAgICAgcGF0aF9lcnJvcihwYXRoKTsKQEAgLTEwOTkwLDkgKzEwNzAwLDkgQEAKICAgICBuYW1lID0gcGF0aC0+bmFycm93ID8gcGF0aC0+bmFycm93IDogIi4iOwogCiAgICAgZm9yIChpID0gMDsgOyBpKyspIHsKLSAgICAgICAgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKKyAgICAgICAgY29uc3QgY2hhciAqc3RhcnQsICp0cmFjZSwgKmVuZDsKICAgICAgICAgc3NpemVfdCBsZW5ndGg7Ci0gICAgICAgIHN0YXRpYyBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CisgICAgICAgIHN0YXRpYyBjb25zdCBQeV9zc2l6ZV90IGJ1ZmZlcl9zaXplc1tdID0geyAyNTYsIFhBVFRSX0xJU1RfTUFYLCAwIH07CiAgICAgICAgIFB5X3NzaXplX3QgYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZXNbaV07CiAgICAgICAgIGlmICghYnVmZmVyX3NpemUpIHsKICAgICAgICAgICAgIC8qIEVSQU5HRSAqLwpAQCAtMTEwODMsOCArMTA3OTMsNyBAQAogICAgIGlmIChieXRlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShieXRlcykpOworICAgIHJlc3VsdCA9IF9QeU9TX1VSYW5kb20oUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkgewogICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExMjA0LDExICsxMDkxMywxNSBAQAogb3MuY3B1X2NvdW50CiAKIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbTsgcmV0dXJuIE5vbmUgaWYgaW5kZXRlcm1pbmFibGUuCisKK1RoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgordXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zX2NwdV9jb3VudF9pbXBsKFB5T2JqZWN0ICptb2R1bGUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1kNTVlMmY4ZjM4MjNhNjI4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NWZjMjk0NjNjMzkzNmE5YyBpbnB1dD1lN2M4ZjRiYTZkYmJhZGQzXSovCiB7CiAgICAgaW50IG5jcHUgPSAwOwogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTExMjUyLDExICsxMDk2NSw2IEBACiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MDQ0NWUyMGUxNDlhYTViOCBpbnB1dD04OWFjMDA4ZGM5YWI2Yjk1XSovCiB7CiAgICAgaW50IHJldHVybl92YWx1ZTsKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgcG9zaXhfZXJyb3IoKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXR1cm5fdmFsdWUgPSBfUHlfZ2V0X2luaGVyaXRhYmxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtMTEyNzgsOCArMTA5ODYsNiBAQAogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYxYjE5MThhMmYzYzM4YzIgaW5wdXQ9OWNlYWVhZDg3YTFlMjQwMl0qLwogewogICAgIGludCByZXN1bHQ7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKIAogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2luaGVyaXRhYmxlKGZkLCBpbmhlcml0YWJsZSwgTlVMTCk7CkBAIC0xMTI5MywxNSArMTA5OTksMTUgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAvKltjbGluaWMgaW5wdXRdCiBvcy5nZXRfaGFuZGxlX2luaGVyaXRhYmxlIC0+IGJvb2wKLSAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaGFuZGxlOiBpbnRwdHJfdAogICAgIC8KIAogR2V0IHRoZSBjbG9zZS1vbi1leGUgZmxhZyBvZiB0aGUgc3BlY2lmaWVkIGZpbGUgZGVzY3JpcHRvci4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGludAotb3NfZ2V0X2hhbmRsZV9pbmhlcml0YWJsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ZTUzODliMGFhMDkxNmNlIGlucHV0PTVmNzc1OTQ0M2FhZTNkYzVdKi8KK29zX2dldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzZiZTVhZmNhNmVhODRkOCBpbnB1dD1jZmU5OWY5YzA1YzcwYWQxXSovCiB7CiAgICAgRFdPUkQgZmxhZ3M7CiAKQEAgLTExMzE2LDcgKzExMDIyLDcgQEAKIAogLypbY2xpbmljIGlucHV0XQogb3Muc2V0X2hhbmRsZV9pbmhlcml0YWJsZQotICAgIGhhbmRsZTogUHlfaW50cHRyX3QKKyAgICBoYW5kbGU6IGludHB0cl90CiAgICAgaW5oZXJpdGFibGU6IGJvb2wKICAgICAvCiAKQEAgLTExMzI0LDkgKzExMDMwLDkgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLW9zX3NldF9oYW5kbGVfaW5oZXJpdGFibGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsCitvc19zZXRfaGFuZGxlX2luaGVyaXRhYmxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmhlcml0YWJsZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iMWU2N2JmYTMyMTNkNzQ1IGlucHV0PWU2NGIyYjI3MzA0NjlkZWZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wMjFkNzRmZTZjOTZiYWEzIGlucHV0PTdhNzY0MTM5MGQ4MzY0ZmNdKi8KIHsKICAgICBEV09SRCBmbGFncyA9IGluaGVyaXRhYmxlID8gSEFORExFX0ZMQUdfSU5IRVJJVCA6IDA7CiAgICAgaWYgKCFTZXRIYW5kbGVJbmZvcm1hdGlvbigoSEFORExFKWhhbmRsZSwgSEFORExFX0ZMQUdfSU5IRVJJVCwgZmxhZ3MpKSB7CkBAIC0xMTM1Myw5ICsxMTA1OSw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOmdldF9ibG9ja2luZyIsICZmZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBibG9ja2luZyA9IF9QeV9nZXRfYmxvY2tpbmcoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICkBAIC0xMTM3OSw5ICsxMTA4Miw2IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRfYmxvY2tpbmciLCAmZmQsICZibG9ja2luZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICByZXN1bHQgPSBfUHlfc2V0X2Jsb2NraW5nKGZkLCBibG9ja2luZyk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTExNDYyLDQxICsxMTE2MiwyNiBAQAogRGlyRW50cnlfZmV0Y2hfc3RhdChEaXJFbnRyeSAqc2VsZiwgaW50IGZvbGxvd19zeW1saW5rcykKIHsKICAgICBpbnQgcmVzdWx0OwotICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CisgICAgU1RSVUNUX1NUQVQgc3Q7CisgICAgUHlPYmplY3QgKnViOwogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHdjaGFyX3QgKnBhdGg7Ci0KLSAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShzZWxmLT5wYXRoKTsKLSAgICBpZiAoIXBhdGgpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdF93KHBhdGgsICZzdCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSB3aW4zMl9sc3RhdF93KHBhdGgsICZzdCk7Ci0KLSAgICBpZiAocmVzdWx0ICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9GU0RlY29kZXIoc2VsZi0+cGF0aCwgJnViKSkgeworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZSh1Yik7CiAjZWxzZSAvKiBQT1NJWCAqLwotICAgIFB5T2JqZWN0ICpieXRlczsKLSAgICBjaGFyICpwYXRoOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoc2VsZi0+cGF0aCwgJmJ5dGVzKSkKKyAgICBpZiAoUHlVbmljb2RlX0ZTQ29udmVydGVyKHNlbGYtPnBhdGgsICZ1YikpIHsKKyAgICAgICAgY29uc3QgY2hhciAqcGF0aCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHViKTsKKyNlbmRpZgorICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBMU1RBVChwYXRoLCAmc3QpOworICAgICAgICBQeV9ERUNSRUYodWIpOworICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotCi0gICAgaWYgKGZvbGxvd19zeW1saW5rcykKLSAgICAgICAgcmVzdWx0ID0gU1RBVChwYXRoLCAmc3QpOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aCwgJnN0KTsKLSAgICBQeV9ERUNSRUYoYnl0ZXMpOwogCiAgICAgaWYgKHJlc3VsdCAhPSAwKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIHNlbGYtPnBhdGgpOwotI2VuZGlmCisgICAgICAgIHJldHVybiBwYXRoX29iamVjdF9lcnJvcihzZWxmLT5wYXRoKTsKIAogICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7CiB9CkBAIC0xMTY2NiwyNSArMTEzNTEsMjcgQEAKIHsKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKCFzZWxmLT5nb3RfZmlsZV9pbmRleCkgewotICAgICAgICB3Y2hhcl90ICpwYXRoOwotICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0YXQ7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgICAgICBjb25zdCB3Y2hhcl90ICpwYXRoOworICAgICAgICBTVFJVQ1RfU1RBVCBzdGF0OworICAgICAgICBpbnQgcmVzdWx0OwogCi0gICAgICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNlbGYtPnBhdGgpOwotICAgICAgICBpZiAoIXBhdGgpCisgICAgICAgIGlmICghUHlVbmljb2RlX0ZTRGVjb2RlcihzZWxmLT5wYXRoLCAmdW5pY29kZSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pY29kZSk7CisgICAgICAgIHJlc3VsdCA9IExTVEFUKHBhdGgsICZzdGF0KTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogCi0gICAgICAgIGlmICh3aW4zMl9sc3RhdF93KHBhdGgsICZzdGF0KSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfT1NFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWxmLT5wYXRoKTsKLSAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0ICE9IDApCisgICAgICAgICAgICByZXR1cm4gcGF0aF9vYmplY3RfZXJyb3Ioc2VsZi0+cGF0aCk7CiAKICAgICAgICAgc2VsZi0+d2luMzJfZmlsZV9pbmRleCA9IHN0YXQuc3RfaW5vOwogICAgICAgICBzZWxmLT5nb3RfZmlsZV9pbmRleCA9IDE7CiAgICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+d2luMzJfZmlsZV9pbmRleCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZylzZWxmLT53aW4zMl9maWxlX2luZGV4KTsKICNlbHNlIC8qIFBPU0lYICovCiAjaWZkZWYgSEFWRV9MQVJHRUZJTEVfU1VQUE9SVAotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpc2VsZi0+ZF9pbm8pOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChsb25nIGxvbmcpc2VsZi0+ZF9pbm8pOwogI2Vsc2UKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXNlbGYtPmRfaW5vKTsKICNlbmRpZgpAQCAtMTE2OTcsNiArMTEzODQsMTMgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxEaXJFbnRyeSAlUj4iLCBzZWxmLT5uYW1lKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK0RpckVudHJ5X2ZzcGF0aChEaXJFbnRyeSAqc2VsZikKK3sKKyAgICBQeV9JTkNSRUYoc2VsZi0+cGF0aCk7CisgICAgcmV0dXJuIHNlbGYtPnBhdGg7Cit9CisKIHN0YXRpYyBQeU1lbWJlckRlZiBEaXJFbnRyeV9tZW1iZXJzW10gPSB7CiAgICAgeyJuYW1lIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERpckVudHJ5LCBuYW1lKSwgUkVBRE9OTFksCiAgICAgICJ0aGUgZW50cnkncyBiYXNlIGZpbGVuYW1lLCByZWxhdGl2ZSB0byBzY2FuZGlyKCkgXCJwYXRoXCIgYXJndW1lbnQifSwKQEAgLTExNzIxLDYgKzExNDE1LDkgQEAKICAgICB7Imlub2RlIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2lub2RlLCBNRVRIX05PQVJHUywKICAgICAgInJldHVybiBpbm9kZSBvZiB0aGUgZW50cnk7IGNhY2hlZCBwZXIgZW50cnkiLAogICAgIH0sCisgICAgeyJfX2ZzcGF0aF9fIiwgKFB5Q0Z1bmN0aW9uKURpckVudHJ5X2ZzcGF0aCwgTUVUSF9OT0FSR1MsCisgICAgICJyZXR1cm5zIHRoZSBwYXRoIGZvciB0aGUgZW50cnkiLAorICAgIH0sCiAgICAge05VTEx9CiB9OwogCkBAIC0xMTc2MCw3ICsxMTQ1Nyw3IEBACiAjaWZkZWYgTVNfV0lORE9XUwogCiBzdGF0aWMgd2NoYXJfdCAqCi1qb2luX3BhdGhfZmlsZW5hbWVXKHdjaGFyX3QgKnBhdGhfd2lkZSwgd2NoYXJfdCogZmlsZW5hbWUpCitqb2luX3BhdGhfZmlsZW5hbWVXKGNvbnN0IHdjaGFyX3QgKnBhdGhfd2lkZSwgY29uc3Qgd2NoYXJfdCAqZmlsZW5hbWUpCiB7CiAgICAgUHlfc3NpemVfdCBwYXRoX2xlbjsKICAgICBQeV9zc2l6ZV90IHNpemU7CkBAIC0xMTgxMiw2ICsxMTUwOSwxMSBAQAogICAgIGVudHJ5LT5uYW1lID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihkYXRhVy0+Y0ZpbGVOYW1lLCAtMSk7CiAgICAgaWYgKCFlbnRyeS0+bmFtZSkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgIFB5X1NFVFJFRihlbnRyeS0+bmFtZSwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChlbnRyeS0+bmFtZSkpOworICAgICAgICBpZiAoIWVudHJ5LT5uYW1lKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKICAgICBqb2luZWRfcGF0aCA9IGpvaW5fcGF0aF9maWxlbmFtZVcocGF0aC0+d2lkZSwgZGF0YVctPmNGaWxlTmFtZSk7CiAgICAgaWYgKCFqb2luZWRfcGF0aCkKQEAgLTExODIxLDggKzExNTIzLDEzIEBACiAgICAgUHlNZW1fRnJlZShqb2luZWRfcGF0aCk7CiAgICAgaWYgKCFlbnRyeS0+cGF0aCkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocGF0aC0+bmFycm93KSB7CisgICAgICAgIFB5X1NFVFJFRihlbnRyeS0+cGF0aCwgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChlbnRyeS0+cGF0aCkpOworICAgICAgICBpZiAoIWVudHJ5LT5wYXRoKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKLSAgICBmaW5kX2RhdGFfdG9fZmlsZV9pbmZvX3coZGF0YVcsICZmaWxlX2luZm8sICZyZXBhcnNlX3RhZyk7CisgICAgZmluZF9kYXRhX3RvX2ZpbGVfaW5mbyhkYXRhVywgJmZpbGVfaW5mbywgJnJlcGFyc2VfdGFnKTsKICAgICBfUHlfYXR0cmlidXRlX2RhdGFfdG9fc3RhdCgmZmlsZV9pbmZvLCByZXBhcnNlX3RhZywgJmVudHJ5LT53aW4zMl9sc3RhdCk7CiAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZW50cnk7CkBAIC0xMTgzNSw3ICsxMTU0Miw3IEBACiAjZWxzZSAvKiBQT1NJWCAqLwogCiBzdGF0aWMgY2hhciAqCi1qb2luX3BhdGhfZmlsZW5hbWUoY2hhciAqcGF0aF9uYXJyb3csIGNoYXIqIGZpbGVuYW1lLCBQeV9zc2l6ZV90IGZpbGVuYW1lX2xlbikKK2pvaW5fcGF0aF9maWxlbmFtZShjb25zdCBjaGFyICpwYXRoX25hcnJvdywgY29uc3QgY2hhciogZmlsZW5hbWUsIFB5X3NzaXplX3QgZmlsZW5hbWVfbGVuKQogewogICAgIFB5X3NzaXplX3QgcGF0aF9sZW47CiAgICAgUHlfc3NpemVfdCBzaXplOwpAQCAtMTE4NjcsNyArMTE1NzQsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotRGlyRW50cnlfZnJvbV9wb3NpeF9pbmZvKHBhdGhfdCAqcGF0aCwgY2hhciAqbmFtZSwgUHlfc3NpemVfdCBuYW1lX2xlbiwKK0RpckVudHJ5X2Zyb21fcG9zaXhfaW5mbyhwYXRoX3QgKnBhdGgsIGNvbnN0IGNoYXIgKm5hbWUsIFB5X3NzaXplX3QgbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5vX3QgZF9pbm8KICNpZmRlZiBIQVZFX0RJUkVOVF9EX1RZUEUKICAgICAgICAgICAgICAgICAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIgZF90eXBlCkBAIC0xMTkzMCw4ICsxMTYzNywxNCBAQAogCiAjaWZkZWYgTVNfV0lORE9XUwogCitzdGF0aWMgaW50CitTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgcmV0dXJuIGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Cit9CisKIHN0YXRpYyB2b2lkCi1TY2FuZGlySXRlcmF0b3JfY2xvc2UoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKK1NjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQogewogICAgIEhBTkRMRSBoYW5kbGUgPSBpdGVyYXRvci0+aGFuZGxlOwogCkBAIC0xMTk1MSw3ICsxMTY2NCw3IEBACiAgICAgQk9PTCBzdWNjZXNzOwogICAgIFB5T2JqZWN0ICplbnRyeTsKIAotICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlICovCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UsIG9yIGNsb3NlZCBleHBsaWNpdGx5ICovCiAgICAgaWYgKGl0ZXJhdG9yLT5oYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xMTk4MiwxNCArMTE2OTUsMjAgQEAKICAgICB9CiAKICAgICAvKiBFcnJvciBvciBubyBtb3JlIGZpbGVzICovCi0gICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKGl0ZXJhdG9yKTsKKyAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOwogICAgIHJldHVybiBOVUxMOwogfQogCiAjZWxzZSAvKiBQT1NJWCAqLwogCitzdGF0aWMgaW50CitTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCit7CisgICAgcmV0dXJuICFpdGVyYXRvci0+ZGlycDsKK30KKwogc3RhdGljIHZvaWQKLVNjYW5kaXJJdGVyYXRvcl9jbG9zZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKFNjYW5kaXJJdGVyYXRvciAqaXRlcmF0b3IpCiB7CiAgICAgRElSICpkaXJwID0gaXRlcmF0b3ItPmRpcnA7CiAKQEAgLTEyMDExLDcgKzExNzMwLDcgQEAKICAgICBpbnQgaXNfZG90OwogICAgIFB5T2JqZWN0ICplbnRyeTsKIAotICAgIC8qIEhhcHBlbnMgaWYgdGhlIGl0ZXJhdG9yIGlzIGl0ZXJhdGVkIHR3aWNlICovCisgICAgLyogSGFwcGVucyBpZiB0aGUgaXRlcmF0b3IgaXMgaXRlcmF0ZWQgdHdpY2UsIG9yIGNsb3NlZCBleHBsaWNpdGx5ICovCiAgICAgaWYgKCFpdGVyYXRvci0+ZGlycCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyMDQ4LDIxICsxMTc2Nyw3NiBAQAogICAgIH0KIAogICAgIC8qIEVycm9yIG9yIG5vIG1vcmUgZmlsZXMgKi8KLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihpdGVyYXRvcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbmRpZgogCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2Nsb3NlKFNjYW5kaXJJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgU2NhbmRpckl0ZXJhdG9yX2Nsb3NlZGlyKHNlbGYpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorU2NhbmRpckl0ZXJhdG9yX2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitTY2FuZGlySXRlcmF0b3JfZXhpdChTY2FuZGlySXRlcmF0b3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFNjYW5kaXJJdGVyYXRvcl9jbG9zZWRpcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIHZvaWQKK1NjYW5kaXJJdGVyYXRvcl9maW5hbGl6ZShTY2FuZGlySXRlcmF0b3IgKml0ZXJhdG9yKQoreworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgaWYgKCFTY2FuZGlySXRlcmF0b3JfaXNfY2xvc2VkKGl0ZXJhdG9yKSkgeworICAgICAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2VkaXIoaXRlcmF0b3IpOworCisgICAgICAgIGlmIChQeUVycl9SZXNvdXJjZVdhcm5pbmcoKFB5T2JqZWN0ICopaXRlcmF0b3IsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuY2xvc2VkIHNjYW5kaXIgaXRlcmF0b3IgJVIiLCBpdGVyYXRvcikpIHsKKyAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgoUHlPYmplY3QgKikgaXRlcmF0b3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgUHlfQ0xFQVIoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKKyAgICBwYXRoX2NsZWFudXAoJml0ZXJhdG9yLT5wYXRoKTsKKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCiBzdGF0aWMgdm9pZAogU2NhbmRpckl0ZXJhdG9yX2RlYWxsb2MoU2NhbmRpckl0ZXJhdG9yICppdGVyYXRvcikKIHsKLSAgICBTY2FuZGlySXRlcmF0b3JfY2xvc2UoaXRlcmF0b3IpOwotICAgIFB5X1hERUNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKLSAgICBwYXRoX2NsZWFudXAoJml0ZXJhdG9yLT5wYXRoKTsKKyAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKChQeU9iamVjdCAqKWl0ZXJhdG9yKSA8IDApCisgICAgICAgIHJldHVybjsKKwogICAgIFB5X1RZUEUoaXRlcmF0b3IpLT50cF9mcmVlKChQeU9iamVjdCAqKWl0ZXJhdG9yKTsKIH0KIAorc3RhdGljIFB5TWV0aG9kRGVmIFNjYW5kaXJJdGVyYXRvcl9tZXRob2RzW10gPSB7CisgICAgeyJfX2VudGVyX18iLCAoUHlDRnVuY3Rpb24pU2NhbmRpckl0ZXJhdG9yX2VudGVyLCBNRVRIX05PQVJHU30sCisgICAgeyJfX2V4aXRfXyIsIChQeUNGdW5jdGlvbilTY2FuZGlySXRlcmF0b3JfZXhpdCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKVNjYW5kaXJJdGVyYXRvcl9jbG9zZSwgTUVUSF9OT0FSR1N9LAorICAgIHtOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBTY2FuZGlySXRlcmF0b3JUeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgIE1PRE5BTUUgIi5TY2FuZGlySXRlcmF0b3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0xMjA4NCw3ICsxMTg1OCw4IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVAorICAgICAgICB8IFB5X1RQRkxBR1NfSEFWRV9GSU5BTElaRSwgICAgICAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTEyMDkyLDYgKzExODY3LDI3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKVNjYW5kaXJJdGVyYXRvcl9pdGVybmV4dCwgLyogdHBfaXRlcm5leHQgKi8KKyAgICBTY2FuZGlySXRlcmF0b3JfbWV0aG9kcywgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbXJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgKGRlc3RydWN0b3IpU2NhbmRpckl0ZXJhdG9yX2ZpbmFsaXplLCAgIC8qIHRwX2ZpbmFsaXplICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTIxMDIsNyArMTE4OTgsNyBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICB3Y2hhcl90ICpwYXRoX3N0clc7CiAjZWxzZQotICAgIGNoYXIgKnBhdGg7CisgICAgY29uc3QgY2hhciAqcGF0aDsKICNlbmRpZgogCiAgICAgaXRlcmF0b3IgPSBQeU9iamVjdF9OZXcoU2NhbmRpckl0ZXJhdG9yLCAmU2NhbmRpckl0ZXJhdG9yVHlwZSk7CkBAIC0xMjEyOSwxMSArMTE5MjUsNiBAQAogICAgIFB5X1hJTkNSRUYoaXRlcmF0b3ItPnBhdGgub2JqZWN0KTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpZiAoaXRlcmF0b3ItPnBhdGgubmFycm93KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAib3Muc2NhbmRpcigpIGRvZXNuJ3Qgc3VwcG9ydCBieXRlcyBwYXRoIG9uIFdpbmRvd3MsIHVzZSBVbmljb2RlIGluc3RlYWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9CiAgICAgaXRlcmF0b3ItPmZpcnN0X3RpbWUgPSAxOwogCiAgICAgcGF0aF9zdHJXID0gam9pbl9wYXRoX2ZpbGVuYW1lVyhpdGVyYXRvci0+cGF0aC53aWRlLCBMIiouKiIpOwpAQCAtMTIxNzQsNiArMTE5NjUsMTMyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuCisKKyAgICBJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggd2l0aAorICAgIGFuIGluY3JlbWVudGVkIHJlZmNvdW50LiBJZiB0aGUgb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuCisgICAgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhhdCBtZXRob2QuIEFsbCBvdGhlciB0eXBlcyByYWlzZSBhIFR5cGVFcnJvci4KKyovCitQeU9iamVjdCAqCitQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKK3sKKyAgICAvKiBGb3IgZXJyb3IgbWVzc2FnZSByZWFzb25zLCB0aGlzIGZ1bmN0aW9uIGlzIG1hbnVhbGx5IGlubGluZWQgaW4KKyAgICAgICBwYXRoX2NvbnZlcnRlcigpLiAqLworICAgIF9QeV9JREVOVElGSUVSKF9fZnNwYXRoX18pOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcGF0aF9yZXByID0gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socGF0aCkgfHwgUHlCeXRlc19DaGVjayhwYXRoKSkgeworICAgICAgICBQeV9JTkNSRUYocGF0aCk7CisgICAgICAgIHJldHVybiBwYXRoOworICAgIH0KKworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChwYXRoLCAmUHlJZF9fX2ZzcGF0aF9fKTsKKyAgICBpZiAoTlVMTCA9PSBmdW5jKSB7CisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBzdHIsIGJ5dGVzIG9yIG9zLlBhdGhMaWtlIG9iamVjdCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHBhdGgpLT50cF9uYW1lKTsKKyAgICB9CisKKyAgICBwYXRoX3JlcHIgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZ1bmMsIE5VTEwpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICBpZiAoTlVMTCA9PSBwYXRoX3JlcHIpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCEoUHlVbmljb2RlX0NoZWNrKHBhdGhfcmVwcikgfHwgUHlCeXRlc19DaGVjayhwYXRoX3JlcHIpKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICUuMjAwcy5fX2ZzcGF0aF9fKCkgdG8gcmV0dXJuIHN0ciBvciBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLCBQeV9UWVBFKHBhdGgpLT50cF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShwYXRoX3JlcHIpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhfcmVwcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBwYXRoX3JlcHI7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK29zLmZzcGF0aAorCisgICAgcGF0aDogb2JqZWN0CisKK1JldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LgorCitJZiB0aGUgb2JqZWN0IGlzIHN0ciBvciBieXRlcywgdGhlbiBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2ggYXMtaXMuIElmIHRoZQorb2JqZWN0IGRlZmluZXMgX19mc3BhdGhfXygpLCB0aGVuIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoYXQgbWV0aG9kLiBBbGwgb3RoZXIKK3R5cGVzIHJhaXNlIGEgVHlwZUVycm9yLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorb3NfZnNwYXRoX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnBhdGgpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzNjM2I3OGVjZmYyOTE0ZiBpbnB1dD1lMzU3MTY1ZjdiMjI0OTBmXSovCit7CisgICAgcmV0dXJuIFB5T1NfRlNQYXRoKHBhdGgpOworfQorCisjaWZkZWYgSEFWRV9HRVRSQU5ET01fU1lTQ0FMTAorLypbY2xpbmljIGlucHV0XQorb3MuZ2V0cmFuZG9tCisKKyAgICBzaXplOiBQeV9zc2l6ZV90CisgICAgZmxhZ3M6IGludD0wCisKK09idGFpbiBhIHNlcmllcyBvZiByYW5kb20gYnl0ZXMuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitvc19nZXRyYW5kb21faW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iM2E2MTgxOTZhNjE0MDljIGlucHV0PTU5YmFmYWMzOWM1OTQ5NDddKi8KK3sKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfc3NpemVfdCBuOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIGVycm5vID0gRUlOVkFMOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgbiA9IHN5c2NhbGwoU1lTX2dldHJhbmRvbSwKKyAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLAorICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MpOworICAgICAgICBpZiAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBnZXRyYW5kb20oKSB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWw6IHJldHJ5ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChuICE9IHNpemUpIHsKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZieXRlcywgbik7CisgICAgfQorCisgICAgcmV0dXJuIGJ5dGVzOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmICAgLyogSEFWRV9HRVRSQU5ET01fU1lTQ0FMTCAqLwogCiAjaW5jbHVkZSAiY2xpbmljL3Bvc2l4bW9kdWxlLmMuaCIKIApAQCAtMTIyNjUsNyArMTIxODIsNyBAQAogICAgIE9TX0tJTExQR19NRVRIT0RERUYKICAgICBPU19QTE9DS19NRVRIT0RERUYKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgeyJzdGFydGZpbGUiLCAgICAgICB3aW4zMl9zdGFydGZpbGUsIE1FVEhfVkFSQVJHUywgd2luMzJfc3RhcnRmaWxlX19kb2NfX30sCisgICAgT1NfU1RBUlRGSUxFX01FVEhPRERFRgogI2VuZGlmCiAgICAgT1NfU0VUVUlEX01FVEhPRERFRgogICAgIE9TX1NFVEVVSURfTUVUSE9EREVGCkBAIC0xMjM3NCw2ICsxMjI5MSw4IEBACiAgICAgeyJzY2FuZGlyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2NhbmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9zY2FuZGlyX19kb2NfX30sCisgICAgT1NfRlNQQVRIX01FVEhPRERFRgorICAgIE9TX0dFVFJBTkRPTV9NRVRIT0RERUYKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAgLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTEyMzg1LDcgKzEyMzA0LDYgQEAKICAgICBIQU5ETEUgdG9rOwogICAgIFRPS0VOX1BSSVZJTEVHRVMgdG9rX3ByaXY7CiAgICAgTFVJRCBsdWlkOwotICAgIGludCBtZXRoX2lkeCA9IDA7CiAKICAgICBpZiAoIU9wZW5Qcm9jZXNzVG9rZW4oR2V0Q3VycmVudFByb2Nlc3MoKSwgVE9LRU5fQUxMX0FDQ0VTUywgJnRvaykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTI0ODgsMTIgKzEyNDA2LDE0IEBACiAjaWZkZWYgT19MQVJHRUZJTEUKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19MQVJHRUZJTEUpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZm5kZWYgX19HTlVfXwogI2lmZGVmIE9fU0hMT0NLCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE9fU0hMT0NLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAjaWZkZWYgT19FWExPQ0sKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgT19FWExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNlbmRpZgogI2lmZGVmIE9fRVhFQwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBPX0VYRUMpKSByZXR1cm4gLTE7CiAjZW5kaWYKQEAgLTEyNzk2LDI4ICsxMjcxNiwzMyBAQAogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBYQVRUUl9TSVpFX01BWCkpIHJldHVybiAtMTsKICNlbmRpZgogCi0jaWZkZWYgUlRMRF9MQVpZCisjaWYgSEFWRV9ERUNMX1JUTERfTEFaWQogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX0xBWlkpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PVworI2lmIEhBVkVfREVDTF9SVExEX05PVwogICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBSVExEX05PVykpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfR0xPQkFMCisjaWYgSEFWRV9ERUNMX1JUTERfR0xPQkFMCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfR0xPQkFMKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9MT0NBTAorI2lmIEhBVkVfREVDTF9SVExEX0xPQ0FMCiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTE9DQUwpKSByZXR1cm4gLTE7CiAjZW5kaWYKLSNpZmRlZiBSVExEX05PREVMRVRFCisjaWYgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUKICAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUlRMRF9OT0RFTEVURSkpIHJldHVybiAtMTsKICNlbmRpZgotI2lmZGVmIFJUTERfTk9MT0FECisjaWYgSEFWRV9ERUNMX1JUTERfTk9MT0FECiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfTk9MT0FEKSkgcmV0dXJuIC0xOwogI2VuZGlmCi0jaWZkZWYgUlRMRF9ERUVQQklORAorI2lmIEhBVkVfREVDTF9SVExEX0RFRVBCSU5ECiAgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJUTERfREVFUEJJTkQpKSByZXR1cm4gLTE7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfR0VUUkFORE9NX1NZU0NBTEwKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgR1JORF9SQU5ET00pKSByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEdSTkRfTk9OQkxPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMjgzNSw3ICsxMjc2MCw3IEBACiB9OwogCiAKLXN0YXRpYyBjaGFyICpoYXZlX2Z1bmN0aW9uc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBoYXZlX2Z1bmN0aW9uc1tdID0gewogCiAjaWZkZWYgSEFWRV9GQUNDRVNTQVQKICAgICAiSEFWRV9GQUNDRVNTQVQiLApAQCAtMTI5NzAsNyArMTI4OTUsNyBAQAogewogICAgIFB5T2JqZWN0ICptLCAqdjsKICAgICBQeU9iamVjdCAqbGlzdDsKLSAgICBjaGFyICoqdHJhY2U7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICp0cmFjZTsKIAogI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2luMzJfY2FuX3N5bWxpbmsgPSBlbmFibGVfc3ltbGluaygpOwpAQCAtMTMxNDYsNiArMTMwNzEsOSBAQAogICAgIH0KICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9oYXZlX2Z1bmN0aW9ucyIsIGxpc3QpOwogCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCAqKSAmRGlyRW50cnlUeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRpckVudHJ5IiwgKFB5T2JqZWN0ICopJkRpckVudHJ5VHlwZSk7CisKICAgICBpbml0aWFsaXplZCA9IDE7CiAKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHdkbW9kdWxlLmMgYi9Nb2R1bGVzL3B3ZG1vZHVsZS5jCmluZGV4IDc0MTZjZjcuLjc4NGU5ZDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcHdkbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wd2Rtb2R1bGUuYwpAQCAtNzUsMTAgKzc1LDE4IEBACiAjZGVmaW5lIFNFVFMoaSx2YWwpIHNldHModiwgaSwgdmFsKQogCiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19uYW1lKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QpICYmICFkZWZpbmVkKF9fQU5EUk9JRF9fKQogICAgIFNFVFMoc2V0SW5kZXgrKywgcC0+cHdfcGFzc3dkKTsKKyNlbHNlCisgICAgU0VUUyhzZXRJbmRleCsrLCAiIik7CisjZW5kaWYKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIHNldEluZGV4KyssIF9QeUxvbmdfRnJvbVVpZChwLT5wd191aWQpKTsKICAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIHNldEluZGV4KyssIF9QeUxvbmdfRnJvbUdpZChwLT5wd19naWQpKTsKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX1BBU1NXRF9QV19HRUNPUykKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X2dlY29zKTsKKyNlbHNlCisgICAgU0VUUyhzZXRJbmRleCsrLCAiIik7CisjZW5kaWYKICAgICBTRVRTKHNldEluZGV4KyssIHAtPnB3X2Rpcik7CiAgICAgU0VUUyhzZXRJbmRleCsrLCBwLT5wd19zaGVsbCk7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggZWIzMjJjMi4uYjE5YjdiZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTkxLDcgKzkxLDcgQEAKICAqIGZhbHNlIG9uIGFuIGV4Y2VwdGlvbi4KICAqLwogc3RhdGljIGludAotc2V0X2Vycm9yX2F0dHIoUHlPYmplY3QgKmVyciwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQorc2V0X2Vycm9yX2F0dHIoUHlPYmplY3QgKmVyciwgY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKQogewogICAgIFB5T2JqZWN0ICp2ID0gUHlMb25nX0Zyb21Mb25nKHZhbHVlKTsKIApAQCAtMjE4LDcgKzIxOCw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWNhbGxfd2l0aF9mcmFtZShjaGFyICpmdW5jbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QqIGZ1bmMsIFB5T2JqZWN0KiBhcmdzLAorY2FsbF93aXRoX2ZyYW1lKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCogZnVuYywgUHlPYmplY3QqIGFyZ3MsCiAgICAgICAgICAgICAgICAgeG1scGFyc2VvYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKQEAgLTc0Nyw3ICs3NDcsOCBAQAogICAgICAgICBzICs9IE1BWF9DSFVOS19TSVpFOwogICAgICAgICBzbGVuIC09IE1BWF9DSFVOS19TSVpFOwogICAgIH0KLSAgICBhc3NlcnQoTUFYX0NIVU5LX1NJWkUgPCBJTlRfTUFYICYmIHNsZW4gPCBJTlRfTUFYKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoTUFYX0NIVU5LX1NJWkUgPD0gSU5UX01BWCk7CisgICAgYXNzZXJ0KHNsZW4gPD0gSU5UX01BWCk7CiAgICAgcmMgPSBYTUxfUGFyc2Uoc2VsZi0+aXRzZWxmLCBzLCAoaW50KXNsZW4sIGlzZmluYWwpOwogCiBkb25lOgpAQCAtNzY1LDcgKzc2Niw3IEBACiB7CiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBjaGFyICpwdHI7CisgICAgY29uc3QgY2hhciAqcHRyOwogCiAgICAgc3RyID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKG1ldGgsICJuIiwgYnVmX3NpemUpOwogICAgIGlmIChzdHIgPT0gTlVMTCkKQEAgLTEyMjUsMTIgKzEyMjYsOCBAQAogICAgIHNlbGYtPml0c2VsZiA9IE5VTEw7CiAKICAgICBpZiAoc2VsZi0+aGFuZGxlcnMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqdGVtcDsKLSAgICAgICAgZm9yIChpID0gMDsgaGFuZGxlcl9pbmZvW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgICAgICB0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykKKyAgICAgICAgICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZXJzW2ldKTsKICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5oYW5kbGVycyk7CiAgICAgICAgIHNlbGYtPmhhbmRsZXJzID0gTlVMTDsKICAgICB9CkBAIC0xMzQ0LDcgKzEzNDEsNiBAQAogICAgIGludCBoYW5kbGVybnVtID0gaGFuZGxlcm5hbWUyaW50KG5hbWUpOwogICAgIGlmIChoYW5kbGVybnVtID49IDApIHsKICAgICAgICAgeG1saGFuZGxlciBjX2hhbmRsZXIgPSBOVUxMOwotICAgICAgICBQeU9iamVjdCAqdGVtcCA9IHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dOwogCiAgICAgICAgIGlmICh2ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIElmIHRoaXMgaXMgdGhlIGNoYXJhY3RlciBkYXRhIGhhbmRsZXIsIGFuZCBhIGNoYXJhY3RlcgpAQCAtMTM2Niw4ICsxMzYyLDcgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgICAgIGNfaGFuZGxlciA9IGhhbmRsZXJfaW5mb1toYW5kbGVybnVtXS5oYW5kbGVyOwogICAgICAgICB9Ci0gICAgICAgIHNlbGYtPmhhbmRsZXJzW2hhbmRsZXJudW1dID0gdjsKLSAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICAgICAgUHlfWFNFVFJFRihzZWxmLT5oYW5kbGVyc1toYW5kbGVybnVtXSwgdik7CiAgICAgICAgIGhhbmRsZXJfaW5mb1toYW5kbGVybnVtXS5zZXR0ZXIoc2VsZi0+aXRzZWxmLCBjX2hhbmRsZXIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC0xNzA2LDcgKzE3MDEsMTUgQEAKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAibmF0aXZlX2VuY29kaW5nIiwgIlVURi04Iik7CiAKICAgICBzeXNfbW9kdWxlcyA9IFB5U3lzX0dldE9iamVjdCgibW9kdWxlcyIpOworICAgIGlmIChzeXNfbW9kdWxlcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihtKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGlmIChkID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZXJyb3JzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGQsIGVycm1vZF9uYW1lKTsKICAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMKSB7CiAgICAgICAgIGVycm9yc19tb2R1bGUgPSBQeU1vZHVsZV9OZXcoTU9EVUxFX05BTUUgIi5lcnJvcnMiKTsKQEAgLTE3MjcsOSArMTczMCwxMSBAQAogICAgICAgICB9CiAgICAgfQogICAgIFB5X0RFQ1JFRihtb2RlbG1vZF9uYW1lKTsKLSAgICBpZiAoZXJyb3JzX21vZHVsZSA9PSBOVUxMIHx8IG1vZGVsX21vZHVsZSA9PSBOVUxMKQorICAgIGlmIChlcnJvcnNfbW9kdWxlID09IE5VTEwgfHwgbW9kZWxfbW9kdWxlID09IE5VTEwpIHsKICAgICAgICAgLyogRG9uJ3QgY29yZSBkdW1wIGxhdGVyISAqLworICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID4gMTk1MDUKICAgICB7CkBAIC0xODk3LDE1ICsxOTAyLDEyIEBACiBjbGVhcl9oYW5kbGVycyh4bWxwYXJzZW9iamVjdCAqc2VsZiwgaW50IGluaXRpYWwpCiB7CiAgICAgaW50IGkgPSAwOwotICAgIFB5T2JqZWN0ICp0ZW1wOwogCiAgICAgZm9yICg7IGhhbmRsZXJfaW5mb1tpXS5uYW1lICE9IE5VTEw7IGkrKykgewogICAgICAgICBpZiAoaW5pdGlhbCkKICAgICAgICAgICAgIHNlbGYtPmhhbmRsZXJzW2ldID0gTlVMTDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0ZW1wID0gc2VsZi0+aGFuZGxlcnNbaV07Ci0gICAgICAgICAgICBzZWxmLT5oYW5kbGVyc1tpXSA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlcnNbaV0pOwogICAgICAgICAgICAgaGFuZGxlcl9pbmZvW2ldLnNldHRlcihzZWxmLT5pdHNlbGYsIE5VTEwpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9yZWFkbGluZS5jIGIvTW9kdWxlcy9yZWFkbGluZS5jCmluZGV4IDU0ZjE1YmMuLjNiOTRkNGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcmVhZGxpbmUuYworKysgYi9Nb2R1bGVzL3JlYWRsaW5lLmMKQEAgLTM0MywxMCArMzQzLDggQEAKICAgICAgICAgUHlfQ0xFQVIoKmhvb2tfdmFyKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlDYWxsYWJsZV9DaGVjayhmdW5jdGlvbikpIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9ICpob29rX3ZhcjsKICAgICAgICAgUHlfSU5DUkVGKGZ1bmN0aW9uKTsKLSAgICAgICAgKmhvb2tfdmFyID0gZnVuY3Rpb247Ci0gICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgUHlfWFNFVFJFRigqaG9va192YXIsIGZ1bmN0aW9uKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC02MDQsNiArNjAyLDI0IEBACiAiYWRkX2hpc3Rvcnkoc3RyaW5nKSAtPiBOb25lXG5cCiBhZGQgYW4gaXRlbSB0byB0aGUgaGlzdG9yeSBidWZmZXIiKTsKIAorc3RhdGljIGludCBzaG91bGRfYXV0b19hZGRfaGlzdG9yeSA9IDE7CisKKy8qIEVuYWJsZSBvciBkaXNhYmxlIGF1dG9tYXRpYyBoaXN0b3J5ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitweV9zZXRfYXV0b19oaXN0b3J5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInA6c2V0X2F1dG9faGlzdG9yeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZzaG91bGRfYXV0b19hZGRfaGlzdG9yeSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoZG9jX3NldF9hdXRvX2hpc3RvcnksCisic2V0X2F1dG9faGlzdG9yeShlbmFibGVkKSAtPiBOb25lXG5cCitFbmFibGVzIG9yIGRpc2FibGVzIGF1dG9tYXRpYyBoaXN0b3J5LiIpOworCiAKIC8qIEdldCB0aGUgdGFiLWNvbXBsZXRpb24gd29yZC1kZWxpbWl0ZXJzIHRoYXQgcmVhZGxpbmUgdXNlcyAqLwogCkBAIC04MjIsNiArODM4LDcgQEAKIAogICAgIHsic2V0X2NvbXBsZXRlcl9kZWxpbXMiLCBzZXRfY29tcGxldGVyX2RlbGltcywKICAgICAgTUVUSF9PLCBkb2Nfc2V0X2NvbXBsZXRlcl9kZWxpbXN9LAorICAgIHsic2V0X2F1dG9faGlzdG9yeSIsIHB5X3NldF9hdXRvX2hpc3RvcnksIE1FVEhfVkFSQVJHUywgZG9jX3NldF9hdXRvX2hpc3Rvcnl9LAogICAgIHsiYWRkX2hpc3RvcnkiLCBweV9hZGRfaGlzdG9yeSwgTUVUSF9PLCBkb2NfYWRkX2hpc3Rvcnl9LAogICAgIHsicmVtb3ZlX2hpc3RvcnlfaXRlbSIsIHB5X3JlbW92ZV9oaXN0b3J5LCBNRVRIX1ZBUkFSR1MsIGRvY19yZW1vdmVfaGlzdG9yeX0sCiAgICAgeyJyZXBsYWNlX2hpc3RvcnlfaXRlbSIsIHB5X3JlcGxhY2VfaGlzdG9yeSwgTUVUSF9WQVJBUkdTLCBkb2NfcmVwbGFjZV9oaXN0b3J5fSwKQEAgLTg1Nyw3ICs4NzQsNyBAQAogICAgICAgICBpZiAociA9PSBQeV9Ob25lKQogICAgICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUxvbmdfQXNMb25nKHIpOworICAgICAgICAgICAgcmVzdWx0ID0gX1B5TG9uZ19Bc0ludChyKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CkBAIC0xMzI3LDcgKzEzNDQsNyBAQAogCiAgICAgLyogd2UgaGF2ZSBhIHZhbGlkIGxpbmUgKi8KICAgICBuID0gc3RybGVuKHApOwotICAgIGlmIChuID4gMCkgeworICAgIGlmIChzaG91bGRfYXV0b19hZGRfaGlzdG9yeSAmJiBuID4gMCkgewogICAgICAgICBjb25zdCBjaGFyICpsaW5lOwogICAgICAgICBpbnQgbGVuZ3RoID0gX3B5X2dldF9oaXN0b3J5X2xlbmd0aCgpOwogICAgICAgICBpZiAobGVuZ3RoID4gMCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVzb3VyY2UuYyBiL01vZHVsZXMvcmVzb3VyY2UuYwppbmRleCAzYTFjZjA5Li42NzAyYjdhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Jlc291cmNlLmMKKysrIGIvTW9kdWxlcy9yZXNvdXJjZS5jCkBAIC0xMzUsMTMgKzEzNSwxMSBAQAogc3RhdGljIFB5T2JqZWN0KgogcmxpbWl0MnB5KHN0cnVjdCBybGltaXQgcmwpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBpZiAoc2l6ZW9mKHJsLnJsaW1fY3VyKSA+IHNpemVvZihsb25nKSkgewogICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTEwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfTE9OR19MT05HKSBybC5ybGltX2N1ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX0xPTkdfTE9ORykgcmwucmxpbV9tYXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyBsb25nKSBybC5ybGltX2N1ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZykgcmwucmxpbV9tYXgpOwogICAgIH0KLSNlbmRpZgogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJsbCIsIChsb25nKSBybC5ybGltX2N1ciwgKGxvbmcpIHJsLnJsaW1fbWF4KTsKIH0KIApAQCAtNDM4LDExICs0MzYsOSBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFJMSU1JVF9OUFRTKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykKICAgICBpZiAoc2l6ZW9mKFJMSU1fSU5GSU5JVFkpID4gc2l6ZW9mKGxvbmcpKSB7Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpIFJMSU1fSU5GSU5JVFkpOworICAgICAgICB2ID0gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBSTElNX0lORklOSVRZKTsKICAgICB9IGVsc2UKLSNlbmRpZgogICAgIHsKICAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgUkxJTV9JTkZJTklUWSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYyBiL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKaW5kZXggMDAzMjRhNS4uNDdkYTQ5MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCkBAIC00LDYgKzQsMTAgQEAKICAgIGhhdmUgYW55IHZhbHVlIGV4Y2VwdCBJTlZBTElEX1NPQ0tFVC4KICovCiAKKyNpZiBkZWZpbmVkKEhBVkVfUE9MTF9IKSAmJiAhZGVmaW5lZChfR05VX1NPVVJDRSkKKyNkZWZpbmUgX0dOVV9TT1VSQ0UKKyNlbmRpZgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8c3RydWN0bWVtYmVyLmg+CiAKQEAgLTE3OTMsNyArMTc5Nyw3IEBACiAgKi8KICNpZiAhZGVmaW5lZChfX09wZW5CU0RfXykKICMgICBkZWZpbmUgSURFTlRfVFlQRSAgVF9VSU5UUFRSVAotIyAgIGRlZmluZSBJREVOVF9DQVNUICBQeV9pbnRwdHJfdAorIyAgIGRlZmluZSBJREVOVF9DQVNUICBpbnRwdHJfdAogIyAgIGRlZmluZSBEQVRBX1RZUEUgICBUX0lOVFBUUlQKICMgICBkZWZpbmUgREFUQV9GTVRfVU5JVCBJTlRQVFJUX0ZNVF9VTklUCiAjICAgZGVmaW5lIElERU5UX0FzVHlwZSBQeUxvbmdfQXNVaW50cHRyX3QKQEAgLTE4NDIsNyArMTg0Niw3IEBACiAgICAgUHlPYmplY3QgKnBmZDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImlkZW50IiwgImZpbHRlciIsICJmbGFncyIsICJmZmxhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGF0YSIsICJ1ZGF0YSIsIE5VTEx9OwotICAgIHN0YXRpYyBjaGFyICpmbXQgPSAiT3xoSEkiIERBVEFfRk1UX1VOSVQgVUlOVFBUUlRfRk1UX1VOSVQgIjprZXZlbnQiOworICAgIHN0YXRpYyBjb25zdCBjaGFyIGZtdFtdID0gIk98aEhJIiBEQVRBX0ZNVF9VTklUIFVJTlRQVFJUX0ZNVF9VTklUICI6a2V2ZW50IjsKIAogICAgIEVWX1NFVCgmKHNlbGYtPmUpLCAwLCBFVkZJTFRfUkVBRCwgRVZfQURELCAwLCAwLCAwKTsgLyogZGVmYXVsdHMgKi8KIApAQCAtMTg3Miw3ICsxODc2LDcgQEAKIGtxdWV1ZV9ldmVudF9yaWNoY29tcGFyZShrcXVldWVfZXZlbnRfT2JqZWN0ICpzLCBrcXVldWVfZXZlbnRfT2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcCkKIHsKLSAgICBQeV9pbnRwdHJfdCByZXN1bHQgPSAwOworICAgIGludHB0cl90IHJlc3VsdCA9IDA7CiAKICAgICBpZiAoIWtxdWV1ZV9ldmVudF9DaGVjayhvKSkgewogICAgICAgICBpZiAob3AgPT0gUHlfRVEgfHwgb3AgPT0gUHlfTkUpIHsKQEAgLTIxMjcsNyArMjEzMSw3IEBACiAgICAgICAgIGlmIChfUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0KCZ0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGltZW91dCwgX1B5VGltZV9ST1VORF9DRUlMSU5HKSA8IDApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgInRpbWVvdXQgYXJndW1lbnQgbXVzdCBiZSBhbiBudW1iZXIgIgorICAgICAgICAgICAgICAgICJ0aW1lb3V0IGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXIgIgogICAgICAgICAgICAgICAgICJvciBOb25lLCBnb3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICBQeV9UWVBFKG90aW1lb3V0KS0+dHBfbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NTIsNiArMjQ1NiwxMCBAQAogI2lmZGVmIFBPTExNU0cKICAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTE1TRyk7CiAjZW5kaWYKKyNpZmRlZiBQT0xMUkRIVVAKKyAgICAgICAgLyogS2VybmVsIDIuNi4xNysgKi8KKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUE9MTFJESFVQKTsKKyNlbmRpZgogICAgIH0KICNlbmRpZiAvKiBIQVZFX1BPTEwgKi8KIApAQCAtMjQ3MywxMiArMjQ4MSwxOCBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUFJJKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVSUik7CiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExIVVApOworI2lmZGVmIEVQT0xMUkRIVVAKKyAgICAvKiBLZXJuZWwgMi42LjE3ICovCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExSREhVUCk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBFUE9MTEVUKTsKICNpZmRlZiBFUE9MTE9ORVNIT1QKICAgICAvKiBLZXJuZWwgMi42LjIrICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExPTkVTSE9UKTsKICNlbmRpZgotICAgIC8qIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTF9SREhVUCIsIEVQT0xMUkRIVVApOyAqLworI2lmZGVmIEVQT0xMRVhDTFVTSVZFCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRVBPTExFWENMVVNJVkUpOworI2VuZGlmCiAKICNpZmRlZiBFUE9MTFJETk9STQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEVQT0xMUkROT1JNKTsKQEAgLTI1MTksMTMgKzI1MzMsMjEgQEAKICAgICAvKiBldmVudCBmaWx0ZXJzICovCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9SRUFEIiwgRVZGSUxUX1JFQUQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfV1JJVEUiLCBFVkZJTFRfV1JJVEUpOworI2lmZGVmIEVWRklMVF9BSU8KICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX0FJTyIsIEVWRklMVF9BSU8pOworI2VuZGlmCisjaWZkZWYgRVZGSUxUX1ZOT0RFCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0ZJTFRFUl9WTk9ERSIsIEVWRklMVF9WTk9ERSk7CisjZW5kaWYKKyNpZmRlZiBFVkZJTFRfUFJPQwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfUFJPQyIsIEVWRklMVF9QUk9DKTsKKyNlbmRpZgogI2lmZGVmIEVWRklMVF9ORVRERVYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX05FVERFViIsIEVWRklMVF9ORVRERVYpOwogI2VuZGlmCisjaWZkZWYgRVZGSUxUX1NJR05BTAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9GSUxURVJfU0lHTkFMIiwgRVZGSUxUX1NJR05BTCk7CisjZW5kaWYKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRklMVEVSX1RJTUVSIiwgRVZGSUxUX1RJTUVSKTsKIAogICAgIC8qIGV2ZW50IGZsYWdzICovCkBAIC0yNTM2LDE2ICsyNTU4LDIzIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX09ORVNIT1QiLCBFVl9PTkVTSE9UKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfQ0xFQVIiLCBFVl9DTEVBUik7CiAKKyNpZmRlZiBFVl9TWVNGTEFHUwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9FVl9TWVNGTEFHUyIsIEVWX1NZU0ZMQUdTKTsKKyNlbmRpZgorI2lmZGVmIEVWX0ZMQUcxCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX0VWX0ZMQUcxIiwgRVZfRkxBRzEpOworI2VuZGlmCiAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRU9GIiwgRVZfRU9GKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfRVZfRVJST1IiLCBFVl9FUlJPUik7CiAKICAgICAvKiBSRUFEIFdSSVRFIGZpbHRlciBmbGFnICovCisjaWZkZWYgTk9URV9MT1dBVAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0xPV0FUIiwgTk9URV9MT1dBVCk7CisjZW5kaWYKIAogICAgIC8qIFZOT0RFIGZpbHRlciBmbGFncyAgKi8KKyNpZmRlZiBFVkZJTFRfVk5PREUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9ERUxFVEUiLCBOT1RFX0RFTEVURSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfV1JJVEUiLCBOT1RFX1dSSVRFKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9FWFRFTkQiLCBOT1RFX0VYVEVORCk7CkBAIC0yNTUzLDggKzI1ODIsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9MSU5LIiwgTk9URV9MSU5LKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9SRU5BTUUiLCBOT1RFX1JFTkFNRSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfUkVWT0tFIiwgTk9URV9SRVZPS0UpOworI2VuZGlmCiAKICAgICAvKiBQUk9DIGZpbHRlciBmbGFncyAgKi8KKyNpZmRlZiBFVkZJTFRfUFJPQwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYSVQiLCBOT1RFX0VYSVQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0ZPUksiLCBOT1RFX0ZPUkspOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0VYRUMiLCBOT1RFX0VYRUMpOwpAQCAtMjU2NCw2ICsyNTk1LDcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiS1FfTk9URV9UUkFDSyIsIE5PVEVfVFJBQ0spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJLUV9OT1RFX0NISUxEIiwgTk9URV9DSElMRCk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIktRX05PVEVfVFJBQ0tFUlIiLCBOT1RFX1RSQUNLRVJSKTsKKyNlbmRpZgogCiAgICAgLyogTkVUREVWIGZpbHRlciBmbGFncyAqLwogI2lmZGVmIEVWRklMVF9ORVRERVYKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMW1vZHVsZS5jIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKaW5kZXggNmNiMzJlZC4uZDUwNjVjZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGExbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2lmIFNJWkVPRl9JTlQgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBpbnQgU0hBMV9JTlQzMjsgICAgICAgIC8qIDMyLWJpdCBpbnRlZ2VyICovCi10eXBlZGVmIFBZX0xPTkdfTE9ORyBTSEExX0lOVDY0OyAgICAgICAgLyogNjQtYml0IGludGVnZXIgKi8KK3R5cGVkZWYgbG9uZyBsb25nIFNIQTFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKaW5kZXggZjlmZjBlYS4uMTc3NzVhZTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwpAQCAtMjcsMTUgKzI3LDEzIEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD04MWEzY2NkZTkyYmNmZThkXSovCiAKLSNpZmRlZiBQWV9MT05HX0xPTkcgLyogSWYgbm8gUFlfTE9OR19MT05HLCBkb24ndCBjb21waWxlIGFueXRoaW5nISAqLwotCiAvKiBTb21lIHVzZWZ1bCB0eXBlcyAqLwogCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgU0hBX0JZVEU7CiAKICNpZiBTSVpFT0ZfSU5UID09IDQKIHR5cGVkZWYgdW5zaWduZWQgaW50IFNIQV9JTlQzMjsgLyogMzItYml0IGludGVnZXIgKi8KLXR5cGVkZWYgdW5zaWduZWQgUFlfTE9OR19MT05HIFNIQV9JTlQ2NDsgICAgICAgIC8qIDY0LWJpdCBpbnRlZ2VyICovCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBTSEFfSU5UNjQ7ICAgICAgICAvKiA2NC1iaXQgaW50ZWdlciAqLwogI2Vsc2UKIC8qIG5vdCBkZWZpbmVkLiBjb21waWxhdGlvbiB3aWxsIGRpZS4gKi8KICNlbmRpZgpAQCAtMTIxLDEyICsxMTksMTIgQEAKIAogLyogVmFyaW91cyBsb2dpY2FsIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBST1I2NCh4LCB5KSBcCi0gICAgKCAoKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSk+PigodW5zaWduZWQgUFlfTE9OR19MT05HKSh5KSAmIDYzKSkgfCBcCi0gICAgICAoKHgpPDwoKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykoNjQtKCh5KSAmIDYzKSkpKSkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkKKyAgICAoICgoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCk+PigodW5zaWduZWQgbG9uZyBsb25nKSh5KSAmIDYzKSkgfCBcCisgICAgICAoKHgpPDwoKHVuc2lnbmVkIGxvbmcgbG9uZykoNjQtKCh5KSAmIDYzKSkpKSkgJiAweEZGRkZGRkZGRkZGRkZGRkZVTEwpCiAjZGVmaW5lIENoKHgseSx6KSAgICAgICAoeiBeICh4ICYgKHkgXiB6KSkpCiAjZGVmaW5lIE1haih4LHkseikgICAgICAoKCh4IHwgeSkgJiB6KSB8ICh4ICYgeSkpCiAjZGVmaW5lIFMoeCwgbikgICAgICAgICBST1I2NCgoeCksKG4pKQotI2RlZmluZSBSKHgsIG4pICAgICAgICAgKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkgPj4gKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpbikpCisjZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCkgPj4gKCh1bnNpZ25lZCBsb25nIGxvbmcpbikpCiAjZGVmaW5lIFNpZ21hMCh4KSAgICAgICAoUyh4LCAyOCkgXiBTKHgsIDM0KSBeIFMoeCwgMzkpKQogI2RlZmluZSBTaWdtYTEoeCkgICAgICAgKFMoeCwgMTQpIF4gUyh4LCAxOCkgXiBTKHgsIDQxKSkKICNkZWZpbmUgR2FtbWEwKHgpICAgICAgIChTKHgsIDEpIF4gUyh4LCA4KSBeIFIoeCwgNykpCkBAIC0xNTgsODYgKzE1Niw4NiBAQAogICAgICBkICs9IHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGggID0gdDAgKyB0MTsKIAotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMCxQeV9VTEwoMHg0MjhhMmY5OGQ3MjhhZTIyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLFB5X1VMTCgweDcxMzc0NDkxMjNlZjY1Y2QpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDIsUHlfVUxMKDB4YjVjMGZiY2ZlYzRkM2IyZikpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMyxQeV9VTEwoMHhlOWI1ZGJhNTgxODlkYmJjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LFB5X1VMTCgweDM5NTZjMjViZjM0OGI1MzgpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDUsUHlfVUxMKDB4NTlmMTExZjFiNjA1ZDAxOSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNixQeV9VTEwoMHg5MjNmODJhNGFmMTk0ZjliKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LFB5X1VMTCgweGFiMWM1ZWQ1ZGE2ZDgxMTgpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDgsUHlfVUxMKDB4ZDgwN2FhOThhMzAzMDI0MikpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sOSxQeV9VTEwoMHgxMjgzNWIwMTQ1NzA2ZmJlKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCxQeV9VTEwoMHgyNDMxODViZTRlZTRiMjhjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxMSxQeV9VTEwoMHg1NTBjN2RjM2Q1ZmZiNGUyKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwxMixQeV9VTEwoMHg3MmJlNWQ3NGYyN2I4OTZmKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMyxQeV9VTEwoMHg4MGRlYjFmZTNiMTY5NmIxKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwxNCxQeV9VTEwoMHg5YmRjMDZhNzI1YzcxMjM1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwxNSxQeV9VTEwoMHhjMTliZjE3NGNmNjkyNjk0KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNixQeV9VTEwoMHhlNDliNjljMTllZjE0YWQyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxNyxQeV9VTEwoMHhlZmJlNDc4NjM4NGYyNWUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxOCxQeV9VTEwoMHgwZmMxOWRjNjhiOGNkNWI1KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSxQeV9VTEwoMHgyNDBjYTFjYzc3YWM5YzY1KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyMCxQeV9VTEwoMHgyZGU5MmM2ZjU5MmIwMjc1KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyMSxQeV9VTEwoMHg0YTc0ODRhYTZlYTZlNDgzKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMixQeV9VTEwoMHg1Y2IwYTlkY2JkNDFmYmQ0KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwyMyxQeV9VTEwoMHg3NmY5ODhkYTgzMTE1M2I1KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwyNCxQeV9VTEwoMHg5ODNlNTE1MmVlNjZkZmFiKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSxQeV9VTEwoMHhhODMxYzY2ZDJkYjQzMjEwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyNixQeV9VTEwoMHhiMDAzMjdjODk4ZmIyMTNmKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwyNyxQeV9VTEwoMHhiZjU5N2ZjN2JlZWYwZWU0KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCxQeV9VTEwoMHhjNmUwMGJmMzNkYTg4ZmMyKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyOSxQeV9VTEwoMHhkNWE3OTE0NzkzMGFhNzI1KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzMCxQeV9VTEwoMHgwNmNhNjM1MWUwMDM4MjZmKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSxQeV9VTEwoMHgxNDI5Mjk2NzBhMGU2ZTcwKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwzMixQeV9VTEwoMHgyN2I3MGE4NTQ2ZDIyZmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwzMyxQeV9VTEwoMHgyZTFiMjEzODVjMjZjOTI2KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCxQeV9VTEwoMHg0ZDJjNmRmYzVhYzQyYWVkKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzNSxQeV9VTEwoMHg1MzM4MGQxMzlkOTViM2RmKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwzNixQeV9VTEwoMHg2NTBhNzM1NDhiYWY2M2RlKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNyxQeV9VTEwoMHg3NjZhMGFiYjNjNzdiMmE4KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzOCxQeV9VTEwoMHg4MWMyYzkyZTQ3ZWRhZWU2KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzOSxQeV9VTEwoMHg5MjcyMmM4NTE0ODIzNTNiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCxQeV9VTEwoMHhhMmJmZThhMTRjZjEwMzY0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0MSxQeV9VTEwoMHhhODFhNjY0YmJjNDIzMDAxKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw0MixQeV9VTEwoMHhjMjRiOGI3MGQwZjg5NzkxKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MyxQeV9VTEwoMHhjNzZjNTFhMzA2NTRiZTMwKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0NCxQeV9VTEwoMHhkMTkyZTgxOWQ2ZWY1MjE4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw0NSxQeV9VTEwoMHhkNjk5MDYyNDU1NjVhOTEwKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NixQeV9VTEwoMHhmNDBlMzU4NTU3NzEyMDJhKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw0NyxQeV9VTEwoMHgxMDZhYTA3MDMyYmJkMWI4KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0OCxQeV9VTEwoMHgxOWE0YzExNmI4ZDJkMGM4KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSxQeV9VTEwoMHgxZTM3NmMwODUxNDFhYjUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1MCxQeV9VTEwoMHgyNzQ4Nzc0Y2RmOGVlYjk5KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1MSxQeV9VTEwoMHgzNGIwYmNiNWUxOWI0OGE4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MixQeV9VTEwoMHgzOTFjMGNiM2M1Yzk1YTYzKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1MyxQeV9VTEwoMHg0ZWQ4YWE0YWUzNDE4YWNiKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw1NCxQeV9VTEwoMHg1YjljY2E0Zjc3NjNlMzczKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSxQeV9VTEwoMHg2ODJlNmZmM2Q2YjJiOGEzKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw1NixQeV9VTEwoMHg3NDhmODJlZTVkZWZiMmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw1NyxQeV9VTEwoMHg3OGE1NjM2ZjQzMTcyZjYwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCxQeV9VTEwoMHg4NGM4NzgxNGExZjBhYjcyKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1OSxQeV9VTEwoMHg4Y2M3MDIwODFhNjQzOWVjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2MCxQeV9VTEwoMHg5MGJlZmZmYTIzNjMxZTI4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSxQeV9VTEwoMHhhNDUwNmNlYmRlODJiZGU5KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2MixQeV9VTEwoMHhiZWY5YTNmN2IyYzY3OTE1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw2MyxQeV9VTEwoMHhjNjcxNzhmMmUzNzI1MzJiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCxQeV9VTEwoMHhjYTI3M2VjZWVhMjY2MTljKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw2NSxQeV9VTEwoMHhkMTg2YjhjNzIxYzBjMjA3KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw2NixQeV9VTEwoMHhlYWRhN2RkNmNkZTBlYjFlKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NyxQeV9VTEwoMHhmNTdkNGY3ZmVlNmVkMTc4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2OCxQeV9VTEwoMHgwNmYwNjdhYTcyMTc2ZmJhKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2OSxQeV9VTEwoMHgwYTYzN2RjNWEyYzg5OGE2KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCxQeV9VTEwoMHgxMTNmOTgwNGJlZjkwZGFlKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3MSxQeV9VTEwoMHgxYjcxMGIzNTEzMWM0NzFiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw3MixQeV9VTEwoMHgyOGRiNzdmNTIzMDQ3ZDg0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MyxQeV9VTEwoMHgzMmNhYWI3YjQwYzcyNDkzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw3NCxQeV9VTEwoMHgzYzllYmUwYTE1YzliZWJjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw3NSxQeV9VTEwoMHg0MzFkNjdjNDljMTAwZDRjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NixQeV9VTEwoMHg0Y2M1ZDRiZWNiM2U0MmI2KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw3NyxQeV9VTEwoMHg1OTdmMjk5Y2ZjNjU3ZTJhKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3OCxQeV9VTEwoMHg1ZmNiNmZhYjNhZDZmYWVjKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSxQeV9VTEwoMHg2YzQ0MTk4YzRhNDc1ODE3KSk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwwLDB4NDI4YTJmOThkNzI4YWUyMlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLDB4NzEzNzQ0OTEyM2VmNjVjZFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyLDB4YjVjMGZiY2ZlYzRkM2IyZlVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzLDB4ZTliNWRiYTU4MTg5ZGJiY1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LDB4Mzk1NmMyNWJmMzQ4YjUzOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1LDB4NTlmMTExZjFiNjA1ZDAxOVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2LDB4OTIzZjgyYTRhZjE5NGY5YlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LDB4YWIxYzVlZDVkYTZkODExOFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw4LDB4ZDgwN2FhOThhMzAzMDI0MlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw5LDB4MTI4MzViMDE0NTcwNmZiZVVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCwweDI0MzE4NWJlNGVlNGIyOGNVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMTEsMHg1NTBjN2RjM2Q1ZmZiNGUyVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDEyLDB4NzJiZTVkNzRmMjdiODk2ZlVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMywweDgwZGViMWZlM2IxNjk2YjFVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMTQsMHg5YmRjMDZhNzI1YzcxMjM1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDE1LDB4YzE5YmYxNzRjZjY5MjY5NFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNiwweGU0OWI2OWMxOWVmMTRhZDJVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMTcsMHhlZmJlNDc4NjM4NGYyNWUzVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDE4LDB4MGZjMTlkYzY4YjhjZDViNVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSwweDI0MGNhMWNjNzdhYzljNjVVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMjAsMHgyZGU5MmM2ZjU5MmIwMjc1VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDIxLDB4NGE3NDg0YWE2ZWE2ZTQ4M1VMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMiwweDVjYjBhOWRjYmQ0MWZiZDRVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMjMsMHg3NmY5ODhkYTgzMTE1M2I1VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDI0LDB4OTgzZTUxNTJlZTY2ZGZhYlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSwweGE4MzFjNjZkMmRiNDMyMTBVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMjYsMHhiMDAzMjdjODk4ZmIyMTNmVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDI3LDB4YmY1OTdmYzdiZWVmMGVlNFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCwweGM2ZTAwYmYzM2RhODhmYzJVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMjksMHhkNWE3OTE0NzkzMGFhNzI1VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDMwLDB4MDZjYTYzNTFlMDAzODI2ZlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSwweDE0MjkyOTY3MGEwZTZlNzBVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMzIsMHgyN2I3MGE4NTQ2ZDIyZmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDMzLDB4MmUxYjIxMzg1YzI2YzkyNlVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCwweDRkMmM2ZGZjNWFjNDJhZWRVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMzUsMHg1MzM4MGQxMzlkOTViM2RmVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDM2LDB4NjUwYTczNTQ4YmFmNjNkZVVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNywweDc2NmEwYWJiM2M3N2IyYThVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMzgsMHg4MWMyYzkyZTQ3ZWRhZWU2VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDM5LDB4OTI3MjJjODUxNDgyMzUzYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCwweGEyYmZlOGExNGNmMTAzNjRVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNDEsMHhhODFhNjY0YmJjNDIzMDAxVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDQyLDB4YzI0YjhiNzBkMGY4OTc5MVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MywweGM3NmM1MWEzMDY1NGJlMzBVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNDQsMHhkMTkyZTgxOWQ2ZWY1MjE4VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDQ1LDB4ZDY5OTA2MjQ1NTY1YTkxMFVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NiwweGY0MGUzNTg1NTc3MTIwMmFVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNDcsMHgxMDZhYTA3MDMyYmJkMWI4VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDQ4LDB4MTlhNGMxMTZiOGQyZDBjOFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSwweDFlMzc2YzA4NTE0MWFiNTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNTAsMHgyNzQ4Nzc0Y2RmOGVlYjk5VUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDUxLDB4MzRiMGJjYjVlMTliNDhhOFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MiwweDM5MWMwY2IzYzVjOTVhNjNVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNTMsMHg0ZWQ4YWE0YWUzNDE4YWNiVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDU0LDB4NWI5Y2NhNGY3NzYzZTM3M1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSwweDY4MmU2ZmYzZDZiMmI4YTNVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNTYsMHg3NDhmODJlZTVkZWZiMmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDU3LDB4NzhhNTYzNmY0MzE3MmY2MFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCwweDg0Yzg3ODE0YTFmMGFiNzJVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNTksMHg4Y2M3MDIwODFhNjQzOWVjVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDYwLDB4OTBiZWZmZmEyMzYzMWUyOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSwweGE0NTA2Y2ViZGU4MmJkZTlVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNjIsMHhiZWY5YTNmN2IyYzY3OTE1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDYzLDB4YzY3MTc4ZjJlMzcyNTMyYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCwweGNhMjczZWNlZWEyNjYxOWNVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNjUsMHhkMTg2YjhjNzIxYzBjMjA3VUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDY2LDB4ZWFkYTdkZDZjZGUwZWIxZVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NywweGY1N2Q0ZjdmZWU2ZWQxNzhVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNjgsMHgwNmYwNjdhYTcyMTc2ZmJhVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDY5LDB4MGE2MzdkYzVhMmM4OThhNlVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCwweDExM2Y5ODA0YmVmOTBkYWVVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNzEsMHgxYjcxMGIzNTEzMWM0NzFiVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDcyLDB4MjhkYjc3ZjUyMzA0N2Q4NFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MywweDMyY2FhYjdiNDBjNzI0OTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNzQsMHgzYzllYmUwYTE1YzliZWJjVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDc1LDB4NDMxZDY3YzQ5YzEwMGQ0Y1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NiwweDRjYzVkNGJlY2IzZTQyYjZVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNzcsMHg1OTdmMjk5Y2ZjNjU3ZTJhVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDc4LDB4NWZjYjZmYWIzYWQ2ZmFlY1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSwweDZjNDQxOThjNGE0NzU4MTdVTEwpOwogCiAjdW5kZWYgUk5ECiAKQEAgLTgwMyw1ICs4MDEsMyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiU0hBNTEyVHlwZSIsIChQeU9iamVjdCAqKSZTSEE1MTJ0eXBlKTsKICAgICByZXR1cm4gbTsKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCA3NTNkOTg3Li5lMjcwNzViIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTE5OCw3ICsxOTgsNyBAQAogcmVwb3J0X3dha2V1cF93cml0ZV9lcnJvcih2b2lkICpkYXRhKQogewogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87Ci0gICAgZXJybm8gPSAoaW50KSAoUHlfaW50cHRyX3QpIGRhdGE7CisgICAgZXJybm8gPSAoaW50KSAoaW50cHRyX3QpIGRhdGE7CiAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJFeGNlcHRpb24gaWdub3JlZCB3aGVuIHRyeWluZyB0byB3cml0ZSB0byB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgd2FrZXVwIGZkOlxuIik7CkBAIC0yNzcsNyArMjc3LDcgQEAKIAogICAgICAgICAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfd3JpdGVfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoUHlfaW50cHRyX3QpZXJybm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGludHB0cl90KWVycm5vKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTU3OSw3ICs1NzksNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmZCA9IChpbnQpc29ja2ZkOwotICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQgfHwgIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgIGlmICgoU09DS0VUX1QpZmQgIT0gc29ja2ZkKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC02MDksMTEgKzYwOSw2IEBACiAgICAgaWYgKGZkICE9IC0xKSB7CiAgICAgICAgIGludCBibG9ja2luZzsKIAotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3RhdHVzKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyNzEsMjEwICsxMjY2LDE2OSBAQAogICAgIH0KIAogI2lmZGVmIFNJR0hVUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSFVQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSFVQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSFVQKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU5UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JSRUFLCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdCUkVBSyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0JSRUFLIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlJFQUspKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUVVJVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUVVJVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1FVSVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdRVUlUKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RSQVAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RSQVApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUUkFQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFJBUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJT1QKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lPVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lPVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdBQlJUCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdBQlJUKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQUJSVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0FCUlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRU1UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdFTVQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdFTVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdFTVQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRlBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdGUEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdGUEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdGUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHS0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHS0lMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0tJTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdLSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JVUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQlVTKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQlVTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlVTKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NFR1YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NFR1YpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTRUdWIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU0VHVikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdTWVMKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NZUyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NZUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1NZUykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQSVBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQSVBFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUElQRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BJUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQUxSTQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQUxSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0FMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdBTFJNKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RFUk0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RFUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdURVJNIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVEVSTSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdVU1IxCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVU1IxKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVNSMSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1VTUjEpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVVNSMgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVNSMik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1VTUjIiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdVU1IyKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NMRAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ0xEKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQ0xEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0xEKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NITEQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0NITEQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdDSExEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0hMRCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQV1IKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BXUik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BXUiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BXUikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJTwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1VSRwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVJHKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVJHIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVVJHKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1dJTkNICi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdXSU5DSCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1dJTkNIIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHV0lOQ0gpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUE9MTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUE9MTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BPTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQT0xMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NUT1AKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NUT1ApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTVE9QIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU1RPUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUU1RQCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUU1RQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFNUUCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RTVFApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ09OVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ09OVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0NPTlQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDT05UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RUSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RUSU4pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUVElOIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFRJTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUVE9VCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUVE9VKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFRPVSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RUT1UpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVlRBTFJNCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdWVEFMUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdWVEFMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdWVEFMUk0pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUFJPRgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUFJPRik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BST0YiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1hDUFUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1hDUFUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdYQ1BVIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHWENQVSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdYRlNaCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdYRlNaKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHWEZTWiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1hGU1opKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUlRNSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1JUTUlOKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUlRNSU4iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdSVE1JTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdSVE1BWAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUlRNQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdSVE1BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1JUTUFYKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lORk8KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lORk8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTkZPIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5GTykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmZGVmIElUSU1FUl9SRUFMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhJVElNRVJfUkVBTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklUSU1FUl9SRUFMIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJVElNRVJfUkVBTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBJVElNRVJfVklSVFVBTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoSVRJTUVSX1ZJUlRVQUwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJVElNRVJfVklSVFVBTCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVRJTUVSX1ZJUlRVQUwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgSVRJTUVSX1BST0YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKElUSU1FUl9QUk9GKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSVRJTUVSX1BST0YiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElUSU1FUl9QUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZCAoSEFWRV9TRVRJVElNRVIpIHx8IGRlZmluZWQgKEhBVkVfR0VUSVRJTUVSKQpAQCAtMTQ4NSwxNSArMTQzOSwxMyBAQAogI2VuZGlmCiAKICNpZmRlZiBDVFJMX0NfRVZFTlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKENUUkxfQ19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQ19FVkVOVCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ1RSTF9DX0VWRU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWZkZWYgQ1RSTF9CUkVBS19FVkVOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ1RSTF9CUkVBS19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQlJFQUtfRVZFTlQiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENUUkxfQlJFQUtfRVZFTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCAzZTFhNDYwLi4yNjIwZDU2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogc2VuZChkYXRhWywgZmxhZ3NdKSAtLSBzZW5kIGRhdGEsIG1heSBub3Qgc2VuZCBhbGwgb2YgaXRcblwKIHNlbmR0byhkYXRhWywgZmxhZ3NdLCBhZGRyKSAtLSBzZW5kIGRhdGEgdG8gYSBnaXZlbiBhZGRyZXNzXG5cCiBzZXRibG9ja2luZygwIHwgMSkgLS0gc2V0IG9yIGNsZWFyIHRoZSBibG9ja2luZyBJL08gZmxhZ1xuXAotc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAorc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWVbLCBvcHRsZW5dKSAtLSBzZXQgc29ja2V0IG9wdGlvbnNcblwKIHNldHRpbWVvdXQoTm9uZSB8IGZsb2F0KSAtLSBzZXQgb3IgY2xlYXIgdGhlIHRpbWVvdXRcblwKIHNodXRkb3duKGhvdykgLS0gc2h1dCBkb3duIHRyYWZmaWMgaW4gb25lIG9yIGJvdGggZGlyZWN0aW9uc1xuXAogaWZfbmFtZWluZGV4KCkgLS0gcmV0dXJuIGFsbCBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lc1xuXApAQCAtMTUzLDcgKzE1Myw3IEBACiAgICBPbiB0aGUgb3RoZXIgaGFuZCwgbm90IGFsbCBMaW51eCB2ZXJzaW9ucyBhZ3JlZSwgc28gdGhlcmUgdGhlIHNldHRpbmdzCiAgICBjb21wdXRlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBhcmUgbmVlZGVkISAqLwogCi0jaWZuZGVmIGxpbnV4CisjaWZuZGVmIF9fbGludXhfXwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwpAQCAtMTYzLDcgKzE2MywxMSBAQAogIyBpbmNsdWRlIDxzeXMvdWlvLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBXSVRIX1RIUkVBRAorI2lmICFkZWZpbmVkKFdJVEhfVEhSRUFEKQorIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2VuZGlmCiAKQEAgLTE3Miw3ICsxNzYsNyBAQAogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIGVsaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX3NnaSkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwotIyBlbGlmIGRlZmluZWQobGludXgpCisjIGVsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAvKiBSZWx5IG9uIHRoZSBjb25maWd1cmUgc2NyaXB0ICovCiAjIGVsc2UKICMgIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCkBAIC0yODIsNiArMjg2LDM2IEBACiAjaW5jbHVkZSA8bmV0L2lmLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisjaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+CisjaWZuZGVmIEFGX0FMRworI2RlZmluZSBBRl9BTEcgMzgKKyNlbmRpZgorI2lmbmRlZiBTT0xfQUxHCisjZGVmaW5lIFNPTF9BTEcgMjc5CisjZW5kaWYKKworLyogTGludXggMy4xOSAqLworI2lmbmRlZiBBTEdfU0VUX0FFQURfQVNTT0NMRU4KKyNkZWZpbmUgQUxHX1NFVF9BRUFEX0FTU09DTEVOICAgICAgICAgICA0CisjZW5kaWYKKyNpZm5kZWYgQUxHX1NFVF9BRUFEX0FVVEhTSVpFCisjZGVmaW5lIEFMR19TRVRfQUVBRF9BVVRIU0laRSAgICAgICAgICAgNQorI2VuZGlmCisvKiBMaW51eCA0LjggKi8KKyNpZm5kZWYgQUxHX1NFVF9QVUJLRVkKKyNkZWZpbmUgQUxHX1NFVF9QVUJLRVkgICAgICAgICAgICAgICAgICA2CisjZW5kaWYKKworI2lmbmRlZiBBTEdfT1BfU0lHTgorI2RlZmluZSBBTEdfT1BfU0lHTiAgICAgICAgICAgICAgICAgICAgIDIKKyNlbmRpZgorI2lmbmRlZiBBTEdfT1BfVkVSSUZZCisjZGVmaW5lIEFMR19PUF9WRVJJRlkgICAgICAgICAgICAgICAgICAgMworI2VuZGlmCisKKyNlbmRpZiAvKiBIQVZFX1NPQ0tBRERSX0FMRyAqLworCiAvKiBHZW5lcmljIHNvY2tldCBvYmplY3QgZGVmaW5pdGlvbnMgYW5kIGluY2x1ZGVzICovCiAjZGVmaW5lIFB5U29ja2V0X0JVSUxESU5HX1NPQ0tFVAogI2luY2x1ZGUgInNvY2tldG1vZHVsZS5oIgpAQCAtNTg4LDYgKzYyMiw3IEBACiBzdGF0aWMgaW50CiBpbnRlcm5hbF9zZXRibG9ja2luZyhQeVNvY2tldFNvY2tPYmplY3QgKnMsIGludCBibG9jaykKIHsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHVfbG9uZyBhcmc7CiAjZW5kaWYKQEAgLTYwNiwyNCArNjQxLDQxIEBACiAjaWZuZGVmIE1TX1dJTkRPV1MKICNpZiAoZGVmaW5lZChIQVZFX1NZU19JT0NUTF9IKSAmJiBkZWZpbmVkKEZJT05CSU8pKQogICAgIGJsb2NrID0gIWJsb2NrOwotICAgIGlvY3RsKHMtPnNvY2tfZmQsIEZJT05CSU8sICh1bnNpZ25lZCBpbnQgKikmYmxvY2spOworICAgIGlmIChpb2N0bChzLT5zb2NrX2ZkLCBGSU9OQklPLCAodW5zaWduZWQgaW50ICopJmJsb2NrKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOwogI2Vsc2UKICAgICBkZWxheV9mbGFnID0gZmNudGwocy0+c29ja19mZCwgRl9HRVRGTCwgMCk7CisgICAgaWYgKGRlbGF5X2ZsYWcgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKICAgICBpZiAoYmxvY2spCiAgICAgICAgIG5ld19kZWxheV9mbGFnID0gZGVsYXlfZmxhZyAmICh+T19OT05CTE9DSyk7CiAgICAgZWxzZQogICAgICAgICBuZXdfZGVsYXlfZmxhZyA9IGRlbGF5X2ZsYWcgfCBPX05PTkJMT0NLOwogICAgIGlmIChuZXdfZGVsYXlfZmxhZyAhPSBkZWxheV9mbGFnKQotICAgICAgICBmY250bChzLT5zb2NrX2ZkLCBGX1NFVEZMLCBuZXdfZGVsYXlfZmxhZyk7CisgICAgICAgIGlmIChmY250bChzLT5zb2NrX2ZkLCBGX1NFVEZMLCBuZXdfZGVsYXlfZmxhZykgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGRvbmU7CiAjZW5kaWYKICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KICAgICBhcmcgPSAhYmxvY2s7Ci0gICAgaW9jdGxzb2NrZXQocy0+c29ja19mZCwgRklPTkJJTywgJmFyZyk7CisgICAgaWYgKGlvY3Rsc29ja2V0KHMtPnNvY2tfZmQsIEZJT05CSU8sICZhcmcpICE9IDApCisgICAgICAgIGdvdG8gZG9uZTsKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCisKKyAgICByZXN1bHQgPSAwOworCisgIGRvbmU6CisgICAgOyAgLyogbmVjZXNzYXJ5IGZvciAtLXdpdGhvdXQtdGhyZWFkcyBmbGFnICovCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIC8qIFNpbmNlIHRoZXNlIGRvbid0IHJldHVybiBhbnl0aGluZyAqLwotICAgIHJldHVybiAxOworICAgIGlmIChyZXN1bHQpIHsKKyNpZm5kZWYgTVNfV0lORE9XUworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisjZWxzZQorICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19PU0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW50CkBAIC04NzEsNyArOTIzLDcgQEAKIC8qIERlZmF1bHQgdGltZW91dCBmb3IgbmV3IHNvY2tldHMgKi8KIHN0YXRpYyBfUHlUaW1lX3QgZGVmYXVsdHRpbWVvdXQgPSBfUFlUSU1FX0ZST01TRUNPTkRTKC0xKTsKIAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIGluaXRfc29ja29iamVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsCiAgICAgICAgICAgICAgICAgU09DS0VUX1QgZmQsIGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG8pCiB7CkBAIC04ODgsMTAgKzk0MCwxMyBAQAogI2VuZGlmCiAgICAgewogICAgICAgICBzLT5zb2NrX3RpbWVvdXQgPSBkZWZhdWx0dGltZW91dDsKLSAgICAgICAgaWYgKGRlZmF1bHR0aW1lb3V0ID49IDApCi0gICAgICAgICAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCAwKTsKKyAgICAgICAgaWYgKGRlZmF1bHR0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbF9zZXRibG9ja2luZyhzLCAwKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLQorICAgIHJldHVybiAwOwogfQogCiAKQEAgLTkwNiw4ICs5NjEsMTIgQEAKICAgICBQeVNvY2tldFNvY2tPYmplY3QgKnM7CiAgICAgcyA9IChQeVNvY2tldFNvY2tPYmplY3QgKikKICAgICAgICAgUHlUeXBlX0dlbmVyaWNOZXcoJnNvY2tfdHlwZSwgTlVMTCwgTlVMTCk7Ci0gICAgaWYgKHMgIT0gTlVMTCkKLSAgICAgICAgaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKTsKKyAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYocyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gczsKIH0KIApAQCAtOTI2LDcgKzk4NSw3IEBACiAgICBhbiBlcnJvciBvY2N1cnJlZDsgdGhlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqLwogCiBzdGF0aWMgaW50Ci1zZXRpcGFkZHIoY2hhciAqbmFtZSwgc3RydWN0IHNvY2thZGRyICphZGRyX3JldCwgc2l6ZV90IGFkZHJfcmV0X3NpemUsIGludCBhZikKK3NldGlwYWRkcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJfcmV0LCBzaXplX3QgYWRkcl9yZXRfc2l6ZSwgaW50IGFmKQogewogICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlczsKICAgICBpbnQgZXJyb3I7CkBAIC0xMTA3LDcgKzExNjYsNyBAQAogICAgYW4gZXJyb3Igb2NjdXJyZWQuICovCiAKIHN0YXRpYyBpbnQKLXNldGJkYWRkcihjaGFyICpuYW1lLCBiZGFkZHJfdCAqYmRhZGRyKQorc2V0YmRhZGRyKGNvbnN0IGNoYXIgKm5hbWUsIGJkYWRkcl90ICpiZGFkZHIpCiB7CiAgICAgdW5zaWduZWQgaW50IGIwLCBiMSwgYjIsIGIzLCBiNCwgYjU7CiAgICAgY2hhciBjaDsKQEAgLTExODAsNyArMTIzOSw3IEBACiAgICAgY2FzZSBBRl9VTklYOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX3VuICphID0gKHN0cnVjdCBzb2NrYWRkcl91biAqKSBhZGRyOwotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAgICAgICAgIGlmIChhLT5zdW5fcGF0aFswXSA9PSAwKSB7ICAvKiBMaW51eCBhYnN0cmFjdCBuYW1lc3BhY2UgKi8KICAgICAgICAgICAgIGFkZHJsZW4gLT0gb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX3VuLCBzdW5fcGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShhLT5zdW5fcGF0aCwgYWRkcmxlbik7CkBAIC0xMzcxLDYgKzE0MzAsMjIgQEAKICAgICAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2FsZyAqYSA9IChzdHJ1Y3Qgc29ja2FkZHJfYWxnICopYWRkcjsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInMjcyNISCIsCisgICAgICAgICAgICBhLT5zYWxnX3R5cGUsCisgICAgICAgICAgICBzdHJubGVuKChjb25zdCBjaGFyKilhLT5zYWxnX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZihhLT5zYWxnX3R5cGUpKSwKKyAgICAgICAgICAgIGEtPnNhbGdfbmFtZSwKKyAgICAgICAgICAgIHN0cm5sZW4oKGNvbnN0IGNoYXIqKWEtPnNhbGdfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGEtPnNhbGdfbmFtZSkpLAorICAgICAgICAgICAgYS0+c2FsZ19mZWF0LAorICAgICAgICAgICAgYS0+c2FsZ19tYXNrKTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKQEAgLTE0MDEsNyArMTQ3Niw3IEBACiBpZG5hX2NvbnZlcnRlcihQeU9iamVjdCAqb2JqLCBzdHJ1Y3QgbWF5YmVfaWRuYSAqZGF0YSkKIHsKICAgICBzaXplX3QgbGVuOwotICAgIFB5T2JqZWN0ICpvYmoyLCAqb2JqMzsKKyAgICBQeU9iamVjdCAqb2JqMjsKICAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgaWRuYV9jbGVhbnVwKGRhdGEpOwogICAgICAgICByZXR1cm4gMTsKQEAgLTE0MTYsMzEgKzE0OTEsMjcgQEAKICAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcob2JqKTsKICAgICAgICAgbGVuID0gUHlCeXRlQXJyYXlfU2l6ZShvYmopOwogICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSAmJiBQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAwICYmIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9iaikpIHsKLSAgICAgICAgZGF0YS0+YnVmID0gUHlVbmljb2RlX0RBVEEob2JqKTsKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gMCAmJiBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvYmopKSB7CisgICAgICAgICAgICBkYXRhLT5idWYgPSBQeVVuaWNvZGVfREFUQShvYmopOworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG9iajIgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG9iaiwgImlkbmEiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICghb2JqMikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKG9iajIpKTsKKyAgICAgICAgICAgIGRhdGEtPm9iaiA9IG9iajI7CisgICAgICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhvYmoyKTsKKyAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqMik7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIG9iajIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwotICAgICAgICBpZiAoIW9iajIpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdHJpbmcgb3IgdW5pY29kZSB0ZXh0IGJ1ZmZlciBleHBlY3RlZCwgbm90ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgb2JqMyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqMiwgImlkbmEiLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKG9iajIpOwotICAgICAgICBpZiAoIW9iajMpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmICghUHlCeXRlc19DaGVjayhvYmozKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9iajMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGRhdGEtPm9iaiA9IG9iajM7Ci0gICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9iajMpOwotICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9iajMpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RyLCBieXRlcyBvciBieXRlYXJyYXkgZXhwZWN0ZWQsIG5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKHN0cmxlbihkYXRhLT5idWYpICE9IGxlbikgewogICAgICAgICBQeV9DTEVBUihkYXRhLT5vYmopOwpAQCAtMTQ4Myw3ICsxNTU0LDcgQEAKICAgICAgICAgYXNzZXJ0KHBhdGgubGVuID49IDApOwogCiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3VuKilhZGRyX3JldDsKLSNpZmRlZiBsaW51eAorI2lmZGVmIF9fbGludXhfXwogICAgICAgICBpZiAocGF0aC5sZW4gPiAwICYmICooY29uc3QgY2hhciAqKXBhdGguYnVmID09IDApIHsKICAgICAgICAgICAgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSBleHRlbnNpb24gKi8KICAgICAgICAgICAgIGlmICgoc2l6ZV90KXBhdGgubGVuID4gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7CkBAIC0xOTQwLDYgKzIwMTEsMzYgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2FsZyAqc2E7CisgICAgICAgIGNoYXIgKnR5cGU7CisgICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgIHNhID0gKHN0cnVjdCBzb2NrYWRkcl9hbGcgKilhZGRyX3JldDsKKworICAgICAgICBtZW1zZXQoc2EsIDAsIHNpemVvZigqc2EpKTsKKyAgICAgICAgc2EtPnNhbGdfZmFtaWx5ID0gQUZfQUxHOworCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3N8SEg6Z2V0c29ja2FkZHJhcmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZSwgJm5hbWUsICZzYS0+c2FsZ19mZWF0LCAmc2EtPnNhbGdfbWFzaykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgLyogc29ja2FkZHJfYWxnIGhhcyBmaXhlZC1zaXplZCBjaGFyIGFycmF5cyBmb3IgdHlwZSBhbmQgbmFtZSAqLworICAgICAgICBpZiAoc3RybGVuKHR5cGUpID4gc2l6ZW9mKHNhLT5zYWxnX3R5cGUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkFGX0FMRyB0eXBlIHRvbyBsb25nLiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3RybmNweSgoY2hhciAqKXNhLT5zYWxnX3R5cGUsIHR5cGUsIHNpemVvZihzYS0+c2FsZ190eXBlKSk7CisgICAgICAgIGlmIChzdHJsZW4obmFtZSkgPiBzaXplb2Yoc2EtPnNhbGdfbmFtZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQUZfQUxHIG5hbWUgdG9vIGxvbmcuIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzdHJuY3B5KChjaGFyICopc2EtPnNhbGdfbmFtZSwgbmFtZSwgc2l6ZW9mKHNhLT5zYWxnX25hbWUpKTsKKworICAgICAgICAqbGVuX3JldCA9IHNpemVvZigqc2EpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCkBAIC0yMDYyLDYgKzIxNjMsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9hbGcpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCkBAIC0yMjIxLDEwICsyMzI5LDIxIEBACiBzb2NrX2FjY2VwdF9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKIHsKICAgICBzdHJ1Y3Qgc29ja19hY2NlcHQgKmN0eCA9IGRhdGE7CisgICAgc3RydWN0IHNvY2thZGRyICphZGRyID0gU0FTMlNBKGN0eC0+YWRkcmJ1Zik7CisgICAgc29ja2xlbl90ICpwYWRkcmxlbiA9IGN0eC0+YWRkcmxlbjsKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIC8qIEFGX0FMRyBkb2VzIG5vdCBzdXBwb3J0IGFjY2VwdCgpIHdpdGggYWRkciBhbmQgcmFpc2VzCisgICAgICogRUNPTk5BQk9SVEVEIGluc3RlYWQuICovCisgICAgaWYgKHMtPnNvY2tfZmFtaWx5ID09IEFGX0FMRykgeworICAgICAgICBhZGRyID0gTlVMTDsKKyAgICAgICAgcGFkZHJsZW4gPSBOVUxMOworICAgICAgICAqY3R4LT5hZGRybGVuID0gMDsKKyAgICB9CisjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKICAgICBpZiAoYWNjZXB0NF93b3JrcyAhPSAwKSB7Ci0gICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0NChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuLAorICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdDQocy0+c29ja19mZCwgYWRkciwgcGFkZHJsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT0NLX0NMT0VYRUMpOwogICAgICAgICBpZiAoY3R4LT5yZXN1bHQgPT0gSU5WQUxJRF9TT0NLRVQgJiYgYWNjZXB0NF93b3JrcyA9PSAtMSkgewogICAgICAgICAgICAgLyogT24gTGludXggb2xkZXIgdGhhbiAyLjYuMjgsIGFjY2VwdDQoKSBmYWlscyB3aXRoIEVOT1NZUyAqLwpAQCAtMjIzMiw5ICsyMzUxLDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoYWNjZXB0NF93b3JrcyA9PSAwKQotICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgYWRkciwgcGFkZHJsZW4pOwogI2Vsc2UKLSAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbik7CiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTIzMzAsMTAgKzI0NDksMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzLT5zb2NrX3RpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKGJsb2NrID8gLTEgOiAwKTsKLSAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCBibG9jayk7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIGJsb2NrKSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXRibG9ja2luZ19kb2MsCkBAIC0yMzk5LDEwICsyNTE4LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcy0+c29ja190aW1lb3V0ID0gdGltZW91dDsKLSAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCB0aW1lb3V0IDwgMCk7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIHRpbWVvdXQgPCAwKSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXR0aW1lb3V0X2RvYywKQEAgLTI0MzYsOSArMjU1NSwxMiBAQAogb3BlcmF0aW9ucyBhcmUgZGlzYWJsZWQuIik7CiAKIC8qIHMuc2V0c29ja29wdCgpIG1ldGhvZC4KLSAgIFdpdGggYW4gaW50ZWdlciB0aGlyZCBhcmd1bWVudCwgc2V0cyBhbiBpbnRlZ2VyIG9wdGlvbi4KKyAgIFdpdGggYW4gaW50ZWdlciB0aGlyZCBhcmd1bWVudCwgc2V0cyBhbiBpbnRlZ2VyIG9wdHZhbCB3aXRoIG9wdGxlbj00LgorICAgV2l0aCBOb25lIGFzIHRoaXJkIGFyZ3VtZW50IGFuZCBhbiBpbnRlZ2VyIGZvdXJ0aCBhcmd1bWVudCwgc2V0CisgICBvcHR2YWw9TlVMTCB3aXRoIHVuc2lnbmVkIGludCBhcyBvcHRsZW4uCiAgICBXaXRoIGEgc3RyaW5nIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIG9wdGlvbiBmcm9tIGEgYnVmZmVyOwotICAgdXNlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSAnc3RydWN0JyB0byBlbmNvZGUgdGhlIHN0cmluZy4gKi8KKyAgIHVzZSBvcHRpb25hbCBidWlsdC1pbiBtb2R1bGUgJ3N0cnVjdCcgdG8gZW5jb2RlIHRoZSBzdHJpbmcuCisqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19zZXRzb2Nrb3B0KFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCkBAIC0yNDQ4LDMxICsyNTcwLDY0IEBACiAgICAgaW50IHJlczsKICAgICBQeV9idWZmZXIgb3B0dmFsOwogICAgIGludCBmbGFnOworICAgIHVuc2lnbmVkIGludCBvcHRsZW47CisgICAgUHlPYmplY3QgKm5vbmU7CiAKKyAgICAvKiBzZXRzb2Nrb3B0KGxldmVsLCBvcHQsIGZsYWcpICovCiAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaTpzZXRzb2Nrb3B0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmZmxhZykpIHsKICAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopJmZsYWcsIHNpemVvZiBmbGFnKTsKKyAgICAgICAgZ290byBkb25lOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaXkqOnNldHNvY2tvcHQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJm9wdHZhbCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLmJ1Ziwgb3B0dmFsLmxlbik7CisKKyAgICBQeUVycl9DbGVhcigpOworICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgTm9uZSwgZmxhZykgKi8KKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPIUk6c2V0c29ja29wdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgUHlfVFlQRShQeV9Ob25lKSwgJm5vbmUsICZvcHRsZW4pKSB7CisgICAgICAgIGFzc2VydChzaXplb2Yoc29ja2xlbl90KSA+PSBzaXplb2YodW5zaWduZWQgaW50KSk7CisgICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgKHNvY2tsZW5fdClvcHRsZW4pOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAvKiBzZXRzb2Nrb3B0KGxldmVsLCBvcHQsIGJ1ZmZlcikgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSo6c2V0c29ja29wdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJm9wdHZhbCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChvcHR2YWwubGVuID4gSU5UX01BWCkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvcHR2YWwpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXQgb3B0aW9uIGlzIGxhcmdlciB0aGFuICVpIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHJlcyA8IDApCisgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdHZhbC5idWYsIChpbnQpb3B0dmFsLmxlbik7CisjZWxzZQorICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbC5idWYsIG9wdHZhbC5sZW4pOworI2VuZGlmCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmb3B0dmFsKTsKKworZG9uZToKKyAgICBpZiAocmVzIDwgMCkgewogICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoc2V0c29ja29wdF9kb2MsCi0ic2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCB2YWx1ZSlcblwKKyJzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlOiBpbnQpXG5cCitzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlOiBidWZmZXIpXG5cCitzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIE5vbmUsIG9wdGxlbjogaW50KVxuXAogXG5cCiBTZXQgYSBzb2NrZXQgb3B0aW9uLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBmb3IgbGV2ZWwgYW5kIG9wdGlvbi5cblwKLVRoZSB2YWx1ZSBhcmd1bWVudCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgb3IgYSBzdHJpbmcuIik7CitUaGUgdmFsdWUgYXJndW1lbnQgY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyLCBhIHN0cmluZyBidWZmZXIsIG9yIFxuXAorTm9uZSwgb3B0bGVuLiIpOwogCiAKIC8qIHMuZ2V0c29ja29wdCgpIG1ldGhvZC4KQEAgLTI1NjQsMTcgKzI3MTksMjIgQEAKIHNvY2tfY2xvc2UoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewogICAgIFNPQ0tFVF9UIGZkOworICAgIGludCByZXM7CiAKLSAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTc2NDc4LwotICAgICAqIGFuZCBodHRwOi8vbGludXguZGVya2VpbGVyLmNvbS9NYWlsaW5nLUxpc3RzL0tlcm5lbC8yMDA1LTA5LzMwMDAuaHRtbAotICAgICAqIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICovCiAgICAgZmQgPSBzLT5zb2NrX2ZkOwogICAgIGlmIChmZCAhPSBJTlZBTElEX1NPQ0tFVCkgewogICAgICAgICBzLT5zb2NrX2ZkID0gSU5WQUxJRF9TT0NLRVQ7CisKKyAgICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlCisgICAgICAgICAgIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8gYW5kCisgICAgICAgICAgIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCisgICAgICAgICAgIGZvciBtb3JlIGRldGFpbHMuICovCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgKHZvaWQpIFNPQ0tFVENMT1NFKGZkKTsKKyAgICAgICAgcmVzID0gU09DS0VUQ0xPU0UoZmQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICB9CiAgICAgfQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTM3NTcsNiArMzkxNyw2MyBAQAogfTsKIAogc3RhdGljIGludAorc29ja19zZW5kbXNnX2lvdmVjKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtc2doZHIgKm1zZywKKyAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKipkYXRhYnVmc291dCwgUHlfc3NpemVfdCAqbmRhdGFidWZzb3V0KSB7CisgICAgUHlfc3NpemVfdCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBzdHJ1Y3QgaW92ZWMgKmlvdnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhX2Zhc3QgPSBOVUxMOworICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOworCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKKyAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KKyAgICBkYXRhX2Zhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIik7CisgICAgaWYgKGRhdGFfZmFzdCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBuZGF0YXBhcnRzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGRhdGFfZmFzdCk7CisgICAgaWYgKG5kYXRhcGFydHMgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VuZG1zZygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG1zZy0+bXNnX2lvdmxlbiA9IG5kYXRhcGFydHM7CisgICAgaWYgKG5kYXRhcGFydHMgPiAwKSB7CisgICAgICAgIGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuZGF0YXBhcnRzKTsKKyAgICAgICAgaWYgKGlvdnMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBtc2ctPm1zZ19pb3YgPSBpb3ZzOworCisgICAgICAgIGRhdGFidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbmRhdGFwYXJ0cyk7CisgICAgICAgIGlmIChkYXRhYnVmcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorICAgIGZvciAoOyBuZGF0YWJ1ZnMgPCBuZGF0YXBhcnRzOyBuZGF0YWJ1ZnMrKykgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShkYXRhX2Zhc3QsIG5kYXRhYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInkqO3NlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcy1saWtlIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CisgICAgfQorICAgIHJlc3VsdCA9IDA7CisgIGZpbmFsbHk6CisgICAgKmRhdGFidWZzb3V0ID0gZGF0YWJ1ZnM7CisgICAgKm5kYXRhYnVmc291dCA9IG5kYXRhYnVmczsKKyAgICBQeV9YREVDUkVGKGRhdGFfZmFzdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAogc29ja19zZW5kbXNnX2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQogewogICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgKmN0eCA9IGRhdGE7CkBAIC0zNzcwLDExICszOTg3LDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19zZW5kbXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CiAgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7Ci0gICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwotICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OworICAgIHN0cnVjdCBtc2doZHIgbXNnOwogICAgIHN0cnVjdCBjbXNnaW5mbyB7CiAgICAgICAgIGludCBsZXZlbDsKICAgICAgICAgaW50IHR5cGU7CkBAIC0zNzgzLDEzICszOTk5LDE2IEBACiAgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CiAgICAgc2l6ZV90IGNvbnRyb2xsZW4sIGNvbnRyb2xsZW5fbGFzdDsKICAgICBpbnQgYWRkcmxlbiwgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0ICpkYXRhX2FyZywgKmNtc2dfYXJnID0gTlVMTCwgKmFkZHJfYXJnID0gTlVMTCwgKmRhdGFfZmFzdCA9IE5VTEwsCisgICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLAogICAgICAgICAqY21zZ19mYXN0ID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CiAgICAgc3RydWN0IHNvY2tfc2VuZG1zZyBjdHg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T2lPOnNlbmRtc2ciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsICZjbXNnX2FyZywgJmZsYWdzLCAmYWRkcl9hcmcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsICZjbXNnX2FyZywgJmZsYWdzLCAmYWRkcl9hcmcpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CiAKICAgICAvKiBQYXJzZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiAqLwogICAgIGlmIChhZGRyX2FyZyAhPSBOVUxMICYmIGFkZHJfYXJnICE9IFB5X05vbmUpIHsKQEAgLTM4MDEsMzAgKzQwMjAsOCBAQAogCiAgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKICAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KLSAgICBpZiAoKGRhdGFfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChkYXRhX2FyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIikpID09IE5VTEwpCisgICAgaWYgKHNvY2tfc2VuZG1zZ19pb3ZlYyhzLCBkYXRhX2FyZywgJm1zZywgJmRhdGFidWZzLCAmbmRhdGFidWZzKSA9PSAtMSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgbmRhdGFwYXJ0cyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShkYXRhX2Zhc3QpOwotICAgIGlmIChuZGF0YXBhcnRzID4gSU5UX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInNlbmRtc2coKSBhcmd1bWVudCAxIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgbXNnLm1zZ19pb3ZsZW4gPSBuZGF0YXBhcnRzOwotICAgIGlmIChuZGF0YXBhcnRzID4gMCAmJgotICAgICAgICAoKG1zZy5tc2dfaW92ID0gaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5kYXRhcGFydHMpKSA9PSBOVUxMIHx8Ci0gICAgICAgICAoZGF0YWJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCkpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBmb3IgKDsgbmRhdGFidWZzIDwgbmRhdGFwYXJ0czsgbmRhdGFidWZzKyspIHsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oZGF0YV9mYXN0LCBuZGF0YWJ1ZnMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJ5KjtzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMtbGlrZSBvYmplY3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJ1ZnNbbmRhdGFidWZzXSkpCi0gICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfYmFzZSA9IGRhdGFidWZzW25kYXRhYnVmc10uYnVmOwotICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2xlbiA9IGRhdGFidWZzW25kYXRhYnVmc10ubGVuOwogICAgIH0KIAogICAgIGlmIChjbXNnX2FyZyA9PSBOVUxMKQpAQCAtMzg4MywxMSArNDA4MCwxMyBAQAogICAgIGlmIChuY21zZ2J1ZnMgPiAwKSB7CiAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaCA9IE5VTEw7CiAKLSAgICAgICAgaWYgKChtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmID0KLSAgICAgICAgICAgICBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpIHsKKyAgICAgICAgY29udHJvbGJ1ZiA9IFB5TWVtX01hbGxvYyhjb250cm9sbGVuKTsKKyAgICAgICAgaWYgKGNvbnRyb2xidWYgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgfQorICAgICAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOworCiAgICAgICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CiAKICAgICAgICAgLyogTmVlZCB0byB6ZXJvIG91dCB0aGUgYnVmZmVyIGFzIGEgd29ya2Fyb3VuZCBmb3IgZ2xpYmMncwpAQCAtMzk1MiwxMSArNDE1MSwxMSBAQAogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZjbXNnc1tpXS5kYXRhKTsKICAgICBQeU1lbV9GcmVlKGNtc2dzKTsKICAgICBQeV9YREVDUkVGKGNtc2dfZmFzdCk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKQorICAgIFB5TWVtX0ZyZWUobXNnLm1zZ19pb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhYnVmc1tpXSk7CisgICAgfQogICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOwotICAgIFB5TWVtX0ZyZWUoaW92cyk7Ci0gICAgUHlfWERFQ1JFRihkYXRhX2Zhc3QpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTM5NzgsNiArNDE3NywxNzEgQEAKIGRhdGEgc2VudC4iKTsKICNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLwogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKK3N0YXRpYyBQeU9iamVjdCoKK3NvY2tfc2VuZG1zZ19hZmFsZyhQeVNvY2tldFNvY2tPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKworICAgIFB5X3NzaXplX3QgaSwgbmRhdGFidWZzID0gMDsKKyAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGF0YV9hcmcgPSBOVUxMOworCisgICAgUHlfYnVmZmVyIGl2ID0ge05VTEwsIE5VTEx9OworCisgICAgUHlPYmplY3QgKm9wb2JqID0gTlVMTDsKKyAgICBpbnQgb3AgPSAtMTsKKworICAgIFB5T2JqZWN0ICphc3NvY2xlbm9iaiA9IE5VTEw7CisgICAgaW50IGFzc29jbGVuID0gLTE7CisKKyAgICB1bnNpZ25lZCBpbnQgKnVpcHRyOworICAgIGludCBmbGFncyA9IDA7CisKKyAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKKyAgICBzdHJ1Y3QgY21zZ2hkciAqaGVhZGVyID0gTlVMTDsKKyAgICBzdHJ1Y3QgYWZfYWxnX2l2ICphbGdfaXYgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgY3R4OworICAgIFB5X3NzaXplX3QgY29udHJvbGxlbjsKKyAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsibXNnIiwgIm9wIiwgIml2IiwgImFzc29jbGVuIiwgImZsYWdzIiwgMH07CisKKyAgICBpZiAoc2VsZi0+c29ja19mYW1pbHkgIT0gQUZfQUxHKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImFsZ3NldCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQUZfQUxHIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInxPJE8heSpPIWk6c2VuZG1zZ19hZmFsZyIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlMb25nX1R5cGUsICZvcG9iaiwgJml2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUxvbmdfVHlwZSwgJmFzc29jbGVub2JqLCAmZmxhZ3MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisKKyAgICAvKiBvcCBpcyBhIHJlcXVpcmVkLCBrZXl3b3JkLW9ubHkgYXJndW1lbnQgPj0gMCAqLworICAgIGlmIChvcG9iaiAhPSBOVUxMKSB7CisgICAgICAgIG9wID0gX1B5TG9uZ19Bc0ludChvcG9iaik7CisgICAgfQorICAgIGlmIChvcCA8IDApIHsKKyAgICAgICAgLyogb3ZlcnJpZGUgZXhjZXB0aW9uIGZyb20gX1B5TG9uZ19Bc0ludCgpICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBvciBtaXNzaW5nIGFyZ3VtZW50ICdvcCciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICAvKiBhc3NvY2xlbiBpcyBvcHRpb25hbCBidXQgbXVzdCBiZSA+PSAwICovCisgICAgaWYgKGFzc29jbGVub2JqICE9IE5VTEwpIHsKKyAgICAgICAgYXNzb2NsZW4gPSBfUHlMb25nX0FzSW50KGFzc29jbGVub2JqKTsKKyAgICAgICAgaWYgKGFzc29jbGVuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXNzb2NsZW4gPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NvY2xlbiBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb250cm9sbGVuID0gQ01TR19TUEFDRSg0KTsKKyAgICBpZiAoaXYuYnVmICE9IE5VTEwpIHsKKyAgICAgICAgY29udHJvbGxlbiArPSBDTVNHX1NQQUNFKHNpemVvZigqYWxnX2l2KSArIGl2Lmxlbik7CisgICAgfQorICAgIGlmIChhc3NvY2xlbiA+PSAwKSB7CisgICAgICAgIGNvbnRyb2xsZW4gKz0gQ01TR19TUEFDRSg0KTsKKyAgICB9CisKKyAgICBjb250cm9sYnVmID0gUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pOworICAgIGlmIChjb250cm9sYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBtZW1zZXQoY29udHJvbGJ1ZiwgMCwgY29udHJvbGxlbik7CisKKyAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOworICAgIG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWY7CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGlmIChkYXRhX2FyZyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChzb2NrX3NlbmRtc2dfaW92ZWMoc2VsZiwgZGF0YV9hcmcsICZtc2csICZkYXRhYnVmcywgJm5kYXRhYnVmcykgPT0gLTEpIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHNldCBvcGVyYXRpb24gdG8gZW5jcnlwdCBvciBkZWNyeXB0ICovCisgICAgaGVhZGVyID0gQ01TR19GSVJTVEhEUigmbXNnKTsKKyAgICBpZiAoaGVhZGVyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gQ01TR19GSVJTVEhEUiIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgaGVhZGVyLT5jbXNnX3R5cGUgPSBBTEdfU0VUX09QOworICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX0xFTig0KTsKKyAgICB1aXB0ciA9ICh2b2lkKilDTVNHX0RBVEEoaGVhZGVyKTsKKyAgICAqdWlwdHIgPSAodW5zaWduZWQgaW50KW9wOworCisgICAgLyogc2V0IGluaXRpYWxpemF0aW9uIHZlY3RvciAqLworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBoZWFkZXIgPSBDTVNHX05YVEhEUigmbXNnLCBoZWFkZXIpOworICAgICAgICBpZiAoaGVhZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSBDTVNHX05YVEhEUihpdikiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBoZWFkZXItPmNtc2dfbGV2ZWwgPSBTT0xfQUxHOworICAgICAgICBoZWFkZXItPmNtc2dfdHlwZSA9IEFMR19TRVRfSVY7CisgICAgICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX1NQQUNFKHNpemVvZigqYWxnX2l2KSArIGl2Lmxlbik7CisgICAgICAgIGFsZ19pdiA9ICh2b2lkKilDTVNHX0RBVEEoaGVhZGVyKTsKKyAgICAgICAgYWxnX2l2LT5pdmxlbiA9IGl2LmxlbjsKKyAgICAgICAgbWVtY3B5KGFsZ19pdi0+aXYsIGl2LmJ1ZiwgaXYubGVuKTsKKyAgICB9CisKKyAgICAvKiBzZXQgbGVuZ3RoIG9mIGFzc29jaWF0ZWQgZGF0YSBmb3IgQUVBRCAqLworICAgIGlmIChhc3NvY2xlbiA+PSAwKSB7CisgICAgICAgIGhlYWRlciA9IENNU0dfTlhUSERSKCZtc2csIGhlYWRlcik7CisgICAgICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tIENNU0dfTlhUSERSKGFzc29jKSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgICAgIGhlYWRlci0+Y21zZ190eXBlID0gQUxHX1NFVF9BRUFEX0FTU09DTEVOOworICAgICAgICBoZWFkZXItPmNtc2dfbGVuID0gQ01TR19MRU4oNCk7CisgICAgICAgIHVpcHRyID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICAgICAqdWlwdHIgPSAodW5zaWduZWQgaW50KWFzc29jbGVuOworICAgIH0KKworICAgIGN0eC5tc2cgPSAmbXNnOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwoc2VsZiwgMSwgc29ja19zZW5kbXNnX2ltcGwsICZjdHgpIDwgMCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgcmV0dmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOworCisgIGZpbmFsbHk6CisgICAgUHlNZW1fRnJlZShjb250cm9sYnVmKTsKKyAgICBpZiAoaXYuYnVmICE9IE5VTEwpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaXYpOworICAgIH0KKyAgICBQeU1lbV9GcmVlKG1zZy5tc2dfaW92KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YWJ1ZnNbaV0pOworICAgIH0KKyAgICBQeU1lbV9GcmVlKGRhdGFidWZzKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIoc2VuZG1zZ19hZmFsZ19kb2MsCisic2VuZG1zZ19hZmFsZyhbbXNnXSwgKiwgb3BbLCBpdlssIGFzc29jbGVuWywgZmxhZ3M9TVNHX01PUkVdXV0pXG5cCitcblwKK1NldCBvcGVyYXRpb24gbW9kZSwgSVYgYW5kIGxlbmd0aCBvZiBhc3NvY2lhdGVkIGRhdGEgZm9yIGFuIEFGX0FMR1xuXAorb3BlcmF0aW9uIHNvY2tldC4iKTsKKyNlbmRpZgogCiAvKiBzLnNodXRkb3duKGhvdykgbWV0aG9kICovCiAKQEAgLTQwMzYsNiArNDQwMCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZWN2KTsgfQorI2lmIGRlZmluZWQoU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCkKKyAgICBjYXNlIFNJT19MT09QQkFDS19GQVNUX1BBVEg6IHsKKyAgICAgICAgdW5zaWduZWQgaW50IG9wdGlvbjsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZywgImtJOmlvY3RsIiwgJmNtZCwgJm9wdGlvbikpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFdTQUlvY3RsKHMtPnNvY2tfZmQsIGNtZCwgJm9wdGlvbiwgc2l6ZW9mKG9wdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnJlY3YsIE5VTEwsIE5VTEwpID09IFNPQ0tFVF9FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZWN2KTsgfQorI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGlvY3RsIGNvbW1hbmQgJWQiLCBjbWQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQwNDYsNyArNDQyMSw4IEBACiBcblwKIENvbnRyb2wgdGhlIHNvY2tldCB3aXRoIFdTQUlvY3RsIHN5c2NhbGwuIEN1cnJlbnRseSBzdXBwb3J0ZWQgJ2NtZCcgdmFsdWVzIGFyZVxuXAogU0lPX1JDVkFMTDogICdvcHRpb24nIG11c3QgYmUgb25lIG9mIHRoZSBzb2NrZXQuUkNWQUxMXyogY29uc3RhbnRzLlxuXAotU0lPX0tFRVBBTElWRV9WQUxTOiAgJ29wdGlvbicgaXMgYSB0dXBsZSBvZiAob25vZmYsIHRpbWVvdXQsIGludGVydmFsKS4iKTsKK1NJT19LRUVQQUxJVkVfVkFMUzogICdvcHRpb24nIGlzIGEgdHVwbGUgb2YgKG9ub2ZmLCB0aW1lb3V0LCBpbnRlcnZhbCkuXG5cCitTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIOiAnb3B0aW9uJyBpcyBhIGJvb2xlYW4gdmFsdWUsIGFuZCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Iik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKQEAgLTQxNDUsNiArNDUyMSwxMCBAQAogICAgIHsic2VuZG1zZyIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgICAgc2VuZG1zZ19kb2N9LAogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICB7InNlbmRtc2dfYWZhbGciLCAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2VuZG1zZ19hZmFsZywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICBzZW5kbXNnX2FmYWxnX2RvY30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC00MTY1LDIyICs0NTQ1LDQ1IEBACiAgICBGaXJzdCBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdGlvbi4gKi8KIAogc3RhdGljIHZvaWQKK3NvY2tfZmluYWxpemUoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQoreworICAgIFNPQ0tFVF9UIGZkOworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgaWYgKHMtPnNvY2tfZmQgIT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICAgICAgaWYgKFB5RXJyX1Jlc291cmNlV2FybmluZygoUHlPYmplY3QgKilzLCAxLCAidW5jbG9zZWQgJVIiLCBzKSkgeworICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKChQeU9iamVjdCAqKXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogT25seSBjbG9zZSB0aGUgc29ja2V0ICphZnRlciogbG9nZ2luZyB0aGUgUmVzb3VyY2VXYXJuaW5nIHdhcm5pbmcKKyAgICAgICAgICAgdG8gYWxsb3cgdGhlIGxvZ2dlciB0byBjYWxsIHNvY2tldCBtZXRob2RzIGxpa2UKKyAgICAgICAgICAgc29ja2V0LmdldHNvY2tuYW1lKCkuIElmIHRoZSBzb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSwgc29ja2V0CisgICAgICAgICAgIG1ldGhvZHMgZmFpbHMgd2l0aCB0aGUgRUJBREYgZXJyb3IuICovCisgICAgICAgIGZkID0gcy0+c29ja19mZDsKKyAgICAgICAgcy0+c29ja19mZCA9IElOVkFMSURfU09DS0VUOworCisgICAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBzb2NrX2Nsb3NlKCkgKi8KKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAodm9pZCkgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCitzdGF0aWMgdm9pZAogc29ja19kZWFsbG9jKFB5U29ja2V0U29ja09iamVjdCAqcykKIHsKLSAgICBpZiAocy0+c29ja19mZCAhPSBJTlZBTElEX1NPQ0tFVCkgewotICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7Ci0gICAgICAgIFB5X3NzaXplX3Qgb2xkX3JlZmNvdW50ID0gUHlfUkVGQ05UKHMpOwotICAgICAgICArK1B5X1JFRkNOVChzKTsKLSAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUmVzb3VyY2VXYXJuaW5nLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5jbG9zZWQgJVIiLCBzKSkKLSAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCi0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkKLSAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIHMpOwotICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7Ci0gICAgICAgICh2b2lkKSBTT0NLRVRDTE9TRShzLT5zb2NrX2ZkKTsKLSAgICAgICAgUHlfUkVGQ05UKHMpID0gb2xkX3JlZmNvdW50OwotICAgIH0KKyAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKChQeU9iamVjdCAqKXMpIDwgMCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUHlfVFlQRShzKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzKTsKIH0KIApAQCAtNDM2OCw3ICs0NzcxLDEwIEBACiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KLSAgICBpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pOworICAgIGlmIChpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pID09IC0xKSB7CisgICAgICAgIFNPQ0tFVENMT1NFKGZkKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgIHJldHVybiAwOwogCkBAIC00Mzk3LDcgKzQ4MDMsOCBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgc29ja19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtNDQxNyw2ICs0ODI0LDE1IEBACiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIHNvY2tfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgKGRlc3RydWN0b3Ipc29ja19maW5hbGl6ZSwgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCkBAIC01NDUyLDEwICs1ODY4LDYgQEAKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcocmV0dmFsKTsKICAgICB9Ci0KLSAgICAvKiBOT1RSRUFDSEVEICovCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgaGFuZGxpbmcgb2YgaW5ldF9udG9wIik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKQEAgLTYxODksOSArNjYwMSw2IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfVU5TUEVDKTsKICNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0lORVQpOwotI2lmZGVmIEFGX0lORVQ2Ci0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfSU5FVDYpOwotI2VuZGlmIC8qIEFGX0lORVQ2ICovCiAjaWYgZGVmaW5lZChBRl9VTklYKQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1VOSVgpOwogI2VuZGlmIC8qIEFGX1VOSVggKi8KQEAgLTYyMjIsNiArNjYzMSw5IEBACiAgICAgLyogUmVzZXJ2ZWQgZm9yIFdlcm5lcidzIEFUTSAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0FBTDUpOwogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9BTEcpOyAvKiBMaW51eCBjcnlwdG8gKi8KKyNlbmRpZgogI2lmZGVmIEFGX1gyNQogICAgIC8qIFJlc2VydmVkIGZvciBYLjI1IHByb2plY3QgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9YMjUpOwpAQCAtNjI4Myw2ICs2Njk1LDkgQEAKICNpZmRlZiBORVRMSU5LX1RBUEJBU0UKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX1RBUEJBU0UpOwogI2VuZGlmCisjaWZkZWYgTkVUTElOS19DUllQVE8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX0NSWVBUTyk7CisjZW5kaWYKICNlbmRpZiAvKiBBRl9ORVRMSU5LICovCiAjaWZkZWYgQUZfUk9VVEUKICAgICAvKiBBbGlhcyB0byBlbXVsYXRlIDQuNEJTRCAqLwpAQCAtNjQzNiwxMSArNjg1MSwzMCBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfVE9QX1NSVik7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgLyogU29ja2V0IG9wdGlvbnMgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0tFWSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9JVik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9PUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9BRUFEX0FTU09DTEVOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0FFQURfQVVUSFNJWkUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfUFVCS0VZKTsKKworICAgIC8qIE9wZXJhdGlvbnMgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfREVDUllQVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX0VOQ1JZUFQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9TSUdOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfVkVSSUZZKTsKKyNlbmRpZgorCiAgICAgLyogU29ja2V0IHR5cGVzICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19TVFJFQU0pOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfREdSQU0pOwogLyogV2UgaGF2ZSBpbmNvbXBsZXRlIHNvY2tldCBzdXBwb3J0LiAqLworI2lmZGVmIFNPQ0tfUkFXCisgICAgLyogU09DS19SQVcgaXMgbWFya2VkIGFzIG9wdGlvbmFsIGluIHRoZSBQT1NJWCBzcGVjaWZpY2F0aW9uICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19SQVcpOworI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19TRVFQQUNLRVQpOwogI2lmIGRlZmluZWQoU09DS19SRE0pCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19SRE0pOwpAQCAtNjQ4Myw5ICs2OTE3LDExIEBACiAjaWZkZWYgIFNPX09PQklOTElORQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX09PQklOTElORSk7CiAjZW5kaWYKKyNpZm5kZWYgX19HTlVfXwogI2lmZGVmICBTT19SRVVTRVBPUlQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19SRVVTRVBPUlQpOwogI2VuZGlmCisjZW5kaWYKICNpZmRlZiAgU09fU05EQlVGCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fU05EQlVGKTsKICNlbmRpZgpAQCAtNjUyMiw2ICs2OTU4LDEyIEBACiAjaWZkZWYgIExPQ0FMX1BFRVJDUkVECiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9DQUxfUEVFUkNSRUQpOwogI2VuZGlmCisjaWZkZWYgIFNPX1BBU1NTRUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QQVNTU0VDKTsKKyNlbmRpZgorI2lmZGVmICBTT19QRUVSU0VDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUEVFUlNFQyk7CisjZW5kaWYKICNpZmRlZiAgU09fQklORFRPREVWSUNFCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fQklORFRPREVWSUNFKTsKICNlbmRpZgpAQCAtNjUzMSw2ICs2OTczLDEyIEBACiAjaWZkZWYgIFNPX01BUksKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19NQVJLKTsKICNlbmRpZgorI2lmZGVmIFNPX0RPTUFJTgorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0RPTUFJTik7CisjZW5kaWYKKyNpZmRlZiBTT19QUk9UT0NPTAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BST1RPQ09MKTsKKyNlbmRpZgogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgpAQCAtNjY4OSw2ICs3MTM3LDkgQEAKICNpZmRlZiBTT0xfUkRTCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX1JEUyk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9BTEcpOworI2VuZGlmCiAjaWZkZWYgUkRTX0NBTkNFTF9TRU5UX1RPCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkRTX0NBTkNFTF9TRU5UX1RPKTsKICNlbmRpZgpAQCAtNzIyNiw4ICs3Njc3LDE2IEBACiAKICNpZmRlZiBTSU9fUkNWQUxMCiAgICAgewotICAgICAgICBEV09SRCBjb2Rlc1tdID0ge1NJT19SQ1ZBTEwsIFNJT19LRUVQQUxJVkVfVkFMU307Ci0gICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzW10gPSB7IlNJT19SQ1ZBTEwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIn07CisgICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTLAorI2lmIGRlZmluZWQoU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCkKKyAgICAgICAgICAgIFNJT19MT09QQkFDS19GQVNUX1BBVEgKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBjb25zdCBjaGFyICpuYW1lc1tdID0geyJTSU9fUkNWQUxMIiwgIlNJT19LRUVQQUxJVkVfVkFMUyIsCisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgICAgICAgICAgIlNJT19MT09QQkFDS19GQVNUX1BBVEgiCisjZW5kaWYKKyAgICAgICAgfTsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGZvcihpID0gMDsgaTxQeV9BUlJBWV9MRU5HVEgoY29kZXMpOyArK2kpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCmluZGV4IDRiOWYzY2QuLjU1NmE3MTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCkBAIC0xMzcsNyArMTM3LDEwIEBACiAgICAgaWYgKFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplKGJ5dGVzLCAmbmFtZSwgTlVMTCkgPT0gLTEpCiAgICAgICAgIGdvdG8gb3V0OwogICAgIGlmICgocCA9IGdldHNwbmFtKG5hbWUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgImdldHNwbmFtKCk6IG5hbWUgbm90IGZvdW5kIik7CisgICAgICAgIGlmIChlcnJubyAhPSAwKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICJnZXRzcG5hbSgpOiBuYW1lIG5vdCBmb3VuZCIpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAgICAgcmV0dmFsID0gbWtzcGVudChwKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3JlX2xpYi5oIGIvTW9kdWxlcy9zcmVfbGliLmgKaW5kZXggMTI4YzcxZS4uMDg2NWZjNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmVfbGliLmgKKysrIGIvTW9kdWxlcy9zcmVfbGliLmgKQEAgLTM2NywxNCArMzY3LDEyIEBACiAjZGVmaW5lIFJFVFVSTl9PTl9GQUlMVVJFKGkpIFwKICAgICBkbyB7IFJFVFVSTl9PTl9FUlJPUihpKTsgaWYgKGkgPT0gMCkgUkVUVVJOX0ZBSUxVUkU7IH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgU0ZZKHgpICN4Ci0KICNkZWZpbmUgREFUQV9TVEFDS19BTExPQyhzdGF0ZSwgdHlwZSwgcHRyKSBcCiBkbyB7IFwKICAgICBhbGxvY19wb3MgPSBzdGF0ZS0+ZGF0YV9zdGFja19iYXNlOyBcCiAgICAgVFJBQ0UoKCJhbGxvY2F0aW5nICVzIGluICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgIiBcCiAgICAgICAgICAgICIoJSIgUFlfRk9STUFUX1NJWkVfVCAiZClcbiIsIFwKLSAgICAgICAgICAgU0ZZKHR5cGUpLCBhbGxvY19wb3MsIHNpemVvZih0eXBlKSkpOyBcCisgICAgICAgICAgIFB5X1NUUklOR0lGWSh0eXBlKSwgYWxsb2NfcG9zLCBzaXplb2YodHlwZSkpKTsgXAogICAgIGlmIChzaXplb2YodHlwZSkgPiBzdGF0ZS0+ZGF0YV9zdGFja19zaXplIC0gYWxsb2NfcG9zKSB7IFwKICAgICAgICAgaW50IGogPSBkYXRhX3N0YWNrX2dyb3coc3RhdGUsIHNpemVvZih0eXBlKSk7IFwKICAgICAgICAgaWYgKGogPCAwKSByZXR1cm4gajsgXApAQCAtMzg3LDcgKzM4NSw3IEBACiAKICNkZWZpbmUgREFUQV9TVEFDS19MT09LVVBfQVQoc3RhdGUsIHR5cGUsIHB0ciwgcG9zKSBcCiBkbyB7IFwKLSAgICBUUkFDRSgoImxvb2tpbmcgdXAgJXMgYXQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwgU0ZZKHR5cGUpLCBwb3MpKTsgXAorICAgIFRSQUNFKCgibG9va2luZyB1cCAlcyBhdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLCBQeV9TVFJJTkdJRlkodHlwZSksIHBvcykpOyBcCiAgICAgcHRyID0gKHR5cGUqKShzdGF0ZS0+ZGF0YV9zdGFjaytwb3MpOyBcCiB9IHdoaWxlICgwKQogCkBAIC01MzEsNyArNTI5LDcgQEAKICAgICBpZiAoY3R4LT5wYXR0ZXJuWzBdID09IFNSRV9PUF9JTkZPKSB7CiAgICAgICAgIC8qIG9wdGltaXphdGlvbiBpbmZvIGJsb2NrICovCiAgICAgICAgIC8qIDxJTkZPPiA8MT1za2lwPiA8Mj1mbGFncz4gPDM9bWluPiAuLi4gKi8KLSAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAoUHlfdWludHB0cl90KShlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKKyAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAodWludHB0cl90KShlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKICAgICAgICAgICAgIFRSQUNFKCgicmVqZWN0IChnb3QgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBjaGFycywgIgogICAgICAgICAgICAgICAgICAgICJuZWVkICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQpXG4iLAogICAgICAgICAgICAgICAgICAgIGVuZCAtIGN0eC0+cHRyLCAoUHlfc3NpemVfdCkgY3R4LT5wYXR0ZXJuWzNdKSk7CkBAIC0xMjU2LDcgKzEyNTQsMzIgQEAKICAgICAgICAgICAgcHJlZml4LCBwcmVmaXhfbGVuLCBwcmVmaXhfc2tpcCkpOwogICAgIFRSQUNFKCgiY2hhcnNldCA9ICVwXG4iLCBjaGFyc2V0KSk7CiAKLSNpZiBkZWZpbmVkKFVTRV9GQVNUX1NFQVJDSCkKKyAgICBpZiAocHJlZml4X2xlbiA9PSAxKSB7CisgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBsaXRlcmFsIGNoYXJhY3RlciAqLworICAgICAgICBTUkVfQ0hBUiBjID0gKFNSRV9DSEFSKSBwcmVmaXhbMF07CisjaWYgU0laRU9GX1NSRV9DSEFSIDwgNAorICAgICAgICBpZiAoKFNSRV9DT0RFKSBjICE9IHByZWZpeFswXSkKKyAgICAgICAgICAgIHJldHVybiAwOyAvKiBsaXRlcmFsIGNhbid0IG1hdGNoOiBkb2Vzbid0IGZpdCBpbiBjaGFyIHdpZHRoICovCisjZW5kaWYKKyAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgeworICAgICAgICAgICAgd2hpbGUgKCpwdHIgIT0gYykgeworICAgICAgICAgICAgICAgIGlmICgrK3B0ciA+PSBlbmQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIExJVEVSQUxcbiIsIHBhdHRlcm4sIHB0cikpOworICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0ciArIHByZWZpeF9za2lwOworICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLworICAgICAgICAgICAgc3RhdHVzID0gU1JFKG1hdGNoKShzdGF0ZSwgcGF0dGVybiArIDIqcHJlZml4X3NraXAsIDApOworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICAgICArK3B0cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAocHJlZml4X2xlbiA+IDEpIHsKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGtub3duIHByZWZpeC4gIHVzZSB0aGUgb3ZlcmxhcAogICAgICAgICAgICB0YWJsZSB0byBza2lwIGZvcndhcmQgYXMgZmFzdCBhcyB3ZSBwb3NzaWJseSBjYW4gKi8KQEAgLTEzMDUsMzIgKzEzMjgsOCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSNlbmRpZgogCi0gICAgaWYgKHBhdHRlcm5bMF0gPT0gU1JFX09QX0xJVEVSQUwpIHsKLSAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGxpdGVyYWwgY2hhcmFjdGVyLiAgdGhpcyBpcyB1c2VkCi0gICAgICAgICAgIGZvciBzaG9ydCBwcmVmaXhlcywgYW5kIGlmIGZhc3Qgc2VhcmNoIGlzIGRpc2FibGVkICovCi0gICAgICAgIFNSRV9DSEFSIGMgPSAoU1JFX0NIQVIpIHBhdHRlcm5bMV07Ci0jaWYgU0laRU9GX1NSRV9DSEFSIDwgNAotICAgICAgICBpZiAoKFNSRV9DT0RFKSBjICE9IHBhdHRlcm5bMV0pCi0gICAgICAgICAgICByZXR1cm4gMDsgLyogbGl0ZXJhbCBjYW4ndCBtYXRjaDogZG9lc24ndCBmaXQgaW4gY2hhciB3aWR0aCAqLwotI2VuZGlmCi0gICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKLSAgICAgICAgICAgIHdoaWxlICgqcHRyICE9IGMpIHsKLSAgICAgICAgICAgICAgICBpZiAoKytwdHIgPj0gZW5kKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBMSVRFUkFMXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0cjsKLSAgICAgICAgICAgIHN0YXRlLT5wdHIgPSArK3B0cjsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KLSAgICAgICAgICAgIHN0YXR1cyA9IFNSRShtYXRjaCkoc3RhdGUsIHBhdHRlcm4gKyAyLCAwKTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoY2hhcnNldCkgeworICAgIGlmIChjaGFyc2V0KSB7CiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBjaGFyYWN0ZXIgZnJvbSBhIGtub3duIHNldCAqLwogICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOwogICAgICAgICBmb3IgKDs7KSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKaW5kZXggZjg0Y2M3OC4uMzRhNmZjNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwpAQCAtNzksNiArNzksNyBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9GUkVFX0NMQVNTKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfSU1QT1JUKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfQk9VTkQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9BTk5PVCk7CiAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9GVU5DVElPTiIsIEZ1bmN0aW9uQmxvY2spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX0NMQVNTIiwgQ2xhc3NCbG9jayk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IGQyY2FhY2QuLmYwNzA4MzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0xNjAsNyArMTYwLDkgQEAKICJjbG9ja19nZXR0aW1lKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKIFJldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogCisjaWZkZWYgSEFWRV9DTE9DS19TRVRUSU1FCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jbG9ja19zZXR0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5MSw3ICsxOTMsOSBAQAogImNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKVxuXAogXG5cCiBTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX1NFVFRJTUUgKi8KIAorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jbG9ja19nZXRyZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjE1LDcgKzIxOSw3IEBACiAiY2xvY2tfZ2V0cmVzKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKIFJldHVybiB0aGUgcmVzb2x1dGlvbiAocHJlY2lzaW9uKSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKLSNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLworI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRSRVMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCkBAIC0yNTAsMTAgKzI1NCw4IEBACiAgICAgeyJ0bV93ZGF5IiwgImRheSBvZiB3ZWVrLCByYW5nZSBbMCwgNl0sIE1vbmRheSBpcyAwIn0sCiAgICAgeyJ0bV95ZGF5IiwgImRheSBvZiB5ZWFyLCByYW5nZSBbMSwgMzY2XSJ9LAogICAgIHsidG1faXNkc3QiLCAiMSBpZiBzdW1tZXIgdGltZSBpcyBpbiBlZmZlY3QsIDAgaWYgbm90LCBhbmQgLTEgaWYgdW5rbm93biJ9LAotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICB7InRtX3pvbmUiLCAiYWJicmV2aWF0aW9uIG9mIHRpbWV6b25lIG5hbWUifSwKICAgICB7InRtX2dtdG9mZiIsICJvZmZzZXQgZnJvbSBVVEMgaW4gc2Vjb25kcyJ9LAotI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICB7MH0KIH07CiAKQEAgLTI3NSw3ICsyNzcsMTEgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotdG10b3R1cGxlKHN0cnVjdCB0bSAqcCkKK3RtdG90dXBsZShzdHJ1Y3QgdG0gKnAKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgICAgICAsIGNvbnN0IGNoYXIgKnpvbmUsIGludCBnbXRvZmYKKyNlbmRpZgorKQogewogICAgIFB5T2JqZWN0ICp2ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlN0cnVjdFRpbWVUeXBlKTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMjk2LDYgKzMwMiwxMCBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwKICAgICAgICAgUHlVbmljb2RlX0RlY29kZUxvY2FsZShwLT50bV96b25lLCAic3Vycm9nYXRlZXNjYXBlIikpOwogICAgIFNFVCgxMCwgcC0+dG1fZ210b2ZmKTsKKyNlbHNlCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LAorICAgICAgICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHpvbmUsICJzdXJyb2dhdGVlc2NhcGUiKSk7CisgICAgU0VUKDEwLCBnbXRvZmYpOwogI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICN1bmRlZiBTRVQKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtMzExLDcgKzMyMSw3IEBACiAgICBSZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MgKHBhcmFsbGVscyBQeUFyZ19QYXJzZVR1cGxlKS4KICovCiBzdGF0aWMgaW50Ci1wYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQorcGFyc2VfdGltZV90X2FyZ3MoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdGltZV90ICpwd2hlbikKIHsKICAgICBQeU9iamVjdCAqb3QgPSBOVUxMOwogICAgIHRpbWVfdCB3aGVudDsKQEAgLTMzMywyNCArMzQzLDM0IEBACiB0aW1lX2dtdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgdGltZV90IHdoZW47Ci0gICAgc3RydWN0IHRtIGJ1ZiwgKmxvY2FsOworICAgIHN0cnVjdCB0bSBidWY7CiAKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZXJybm8gPSAwOwotICAgIGxvY2FsID0gZ210aW1lKCZ3aGVuKTsKLSAgICBpZiAobG9jYWwgPT0gTlVMTCkgewotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgfQotICAgIGJ1ZiA9ICpsb2NhbDsKKyAgICBpZiAoX1B5VGltZV9nbXRpbWUod2hlbiwgJmJ1ZikgIT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1Zik7CisjZWxzZQorICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1ZiwgIlVUQyIsIDApOworI2VuZGlmCiB9CiAKKyNpZm5kZWYgSEFWRV9USU1FR00KK3N0YXRpYyB0aW1lX3QKK3RpbWVnbShzdHJ1Y3QgdG0gKnApCit7CisgICAgLyogWFhYOiB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdpbGwgbm90IHdvcmsgZm9yIHRtX3llYXIgPCAxOTcwLgorICAgICAgIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIHRpbWVnbSBkbyBub3Qgc3VwcG9ydAorICAgICAgIG5lZ2F0aXZlIHRpbWVzdGFtcHMgYW55d2F5cy4gKi8KKyAgICByZXR1cm4gcC0+dG1fc2VjICsgcC0+dG1fbWluKjYwICsgcC0+dG1faG91ciozNjAwICsgcC0+dG1feWRheSo4NjQwMCArCisgICAgICAgIChwLT50bV95ZWFyLTcwKSozMTUzNjAwMCArICgocC0+dG1feWVhci02OSkvNCkqODY0MDAgLQorICAgICAgICAoKHAtPnRtX3llYXItMSkvMTAwKSo4NjQwMCArICgocC0+dG1feWVhcisyOTkpLzQwMCkqODY0MDA7Cit9CisjZW5kaWYKKwogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCiAiZ210aW1lKFtzZWNvbmRzXSkgLT4gKHRtX3llYXIsIHRtX21vbiwgdG1fbWRheSwgdG1faG91ciwgdG1fbWluLFxuXAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXApAQCAtMzYxLDI2ICszODEsNiBAQAogSWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHRoZSB0bV9nbXRvZmYgYW5kIHRtX3pvbmUsIHRoZXkgYXJlIGF2YWlsYWJsZSBhc1xuXAogYXR0cmlidXRlcyBvbmx5LiIpOwogCi1zdGF0aWMgaW50Ci1weWxvY2FsdGltZSh0aW1lX3QgKnRpbWVwLCBzdHJ1Y3QgdG0gKnJlc3VsdCkKLXsKLSAgICBzdHJ1Y3QgdG0gKmxvY2FsOwotCi0gICAgYXNzZXJ0ICh0aW1lcCAhPSBOVUxMKTsKLSAgICBsb2NhbCA9IGxvY2FsdGltZSh0aW1lcCk7Ci0gICAgaWYgKGxvY2FsID09IE5VTEwpIHsKLSAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCi0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpyZXN1bHQgPSAqbG9jYWw7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2xvY2FsdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0zODksOSArMzg5LDIwIEBACiAKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChweWxvY2FsdGltZSgmd2hlbiwgJmJ1ZikgPT0gLTEpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHdoZW4sICZidWYpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOworI2Vsc2UKKyAgICB7CisgICAgICAgIHN0cnVjdCB0bSBsb2NhbCA9IGJ1ZjsKKyAgICAgICAgY2hhciB6b25lWzEwMF07CisgICAgICAgIGludCBnbXRvZmY7CisgICAgICAgIHN0cmZ0aW1lKHpvbmUsIHNpemVvZihidWYpLCAiJVoiLCAmYnVmKTsKKyAgICAgICAgZ210b2ZmID0gdGltZWdtKCZidWYpIC0gd2hlbjsKKyAgICAgICAgcmV0dXJuIHRtdG90dXBsZSgmbG9jYWwsIHpvbmUsIGdtdG9mZik7CisgICAgfQorI2VuZGlmCiB9CiAKIFB5RG9jX1NUUlZBUihsb2NhbHRpbWVfZG9jLApAQCAtNTczLDcgKzU4NCw3IEBACiAKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKLSAgICAgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0dCwgJmJ1ZikgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmICghZ2V0dG1hcmcodHVwLCAmYnVmKSB8fCAhY2hlY2t0bSgmYnVmKSkKQEAgLTczMiwxMCArNzQzLDEwIEBACiB7CiAgICAgLyogSW5zcGlyZWQgYnkgT3BlbiBHcm91cCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIGF0CiAgICAgICogaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvYXNjdGltZS5odG1sICovCi0gICAgc3RhdGljIGNoYXIgd2RheV9uYW1lWzddWzRdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyIHdkYXlfbmFtZVs3XVs0XSA9IHsKICAgICAgICAgIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIKICAgICB9OwotICAgIHN0YXRpYyBjaGFyIG1vbl9uYW1lWzEyXVs0XSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBtb25fbmFtZVsxMl1bNF0gPSB7CiAgICAgICAgICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIKICAgICB9OwpAQCAtNzU4LDcgKzc2OSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHR0LCAmYnVmKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB9IGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQpAQCAtNzgwLDcgKzc5MSw3IEBACiAgICAgc3RydWN0IHRtIGJ1ZjsKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpjdGltZSIsICZ0dCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0dCwgJmJ1ZikgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIF9hc2N0aW1lKCZidWYpOwogfQpAQCAtMTAzNCw2ICsxMDQ1LDcgQEAKICAgICB9CiAjZW5kaWYKIAorICAgIC8qIEN1cnJlbnRseSwgUHl0aG9uIDMgcmVxdWlyZXMgY2xvY2soKSB0byBidWlsZDogc2VlIGlzc3VlICMyMjYyNCAqLwogICAgIHJldHVybiBmbG9hdGNsb2NrKGluZm8pOwogI2VuZGlmCiB9CkBAIC0xMTQ1LDYgKzExNTcsMjcgQEAKIEdldCBpbmZvcm1hdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrLiIpOwogCiBzdGF0aWMgdm9pZAorZ2V0X3pvbmUoY2hhciAqem9uZSwgaW50IG4sIHN0cnVjdCB0bSAqcCkKK3sKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgc3RybmNweSh6b25lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCBuKTsKKyNlbHNlCisgICAgdHpzZXQoKTsKKyAgICBzdHJmdGltZSh6b25lLCBuLCAiJVoiLCBwKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitnZXRfZ210b2ZmKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnApCit7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHJldHVybiBwLT50bV9nbXRvZmY7CisjZWxzZQorICAgIHJldHVybiB0aW1lZ20ocCkgLSB0OworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCiBQeUluaXRfdGltZXpvbmUoUHlPYmplY3QgKm0pIHsKICAgICAvKiBUaGlzIGNvZGUgbW92ZWQgZnJvbSBQeUluaXRfdGltZSB3aG9sZXNhbGUgdG8gYWxsb3cgY2FsbGluZyBpdCBmcm9tCiAgICAgdGltZV90enNldC4gSW4gdGhlIGZ1dHVyZSwgc29tZSBwYXJ0cyBvZiBpdCBjYW4gYmUgbW92ZWQgYmFjawpAQCAtMTE3NiwyMiArMTIwOSwyMSBAQAogICAgIG90ejEgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHR6bmFtZVsxXSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidHpuYW1lIiwgUHlfQnVpbGRWYWx1ZSgiKE5OKSIsIG90ejAsIG90ejEpKTsKICNlbHNlIC8qICFIQVZFX1RaTkFNRSB8fCBfX0dMSUJDX18gfHwgX19DWUdXSU5fXyovCi0jaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHsKICNkZWZpbmUgWUVBUiAoKHRpbWVfdCkoKDM2NSAqIDI0ICsgNikgKiAzNjAwKSkKICAgICAgICAgdGltZV90IHQ7Ci0gICAgICAgIHN0cnVjdCB0bSAqcDsKKyAgICAgICAgc3RydWN0IHRtIHA7CiAgICAgICAgIGxvbmcgamFuem9uZSwganVseXpvbmU7CiAgICAgICAgIGNoYXIgamFubmFtZVsxMF0sIGp1bHluYW1lWzEwXTsKICAgICAgICAgdCA9ICh0aW1lKCh0aW1lX3QgKikwKSAvIFlFQVIpICogWUVBUjsKLSAgICAgICAgcCA9IGxvY2FsdGltZSgmdCk7Ci0gICAgICAgIGphbnpvbmUgPSAtcC0+dG1fZ210b2ZmOwotICAgICAgICBzdHJuY3B5KGphbm5hbWUsIHAtPnRtX3pvbmUgPyBwLT50bV96b25lIDogIiAgICIsIDkpOworICAgICAgICBfUHlUaW1lX2xvY2FsdGltZSh0LCAmcCk7CisgICAgICAgIGdldF96b25lKGphbm5hbWUsIDksICZwKTsKKyAgICAgICAgamFuem9uZSA9IC1nZXRfZ210b2ZmKHQsICZwKTsKICAgICAgICAgamFubmFtZVs5XSA9ICdcMCc7CiAgICAgICAgIHQgKz0gWUVBUi8yOwotICAgICAgICBwID0gbG9jYWx0aW1lKCZ0KTsKLSAgICAgICAganVseXpvbmUgPSAtcC0+dG1fZ210b2ZmOwotICAgICAgICBzdHJuY3B5KGp1bHluYW1lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCA5KTsKKyAgICAgICAgX1B5VGltZV9sb2NhbHRpbWUodCwgJnApOworICAgICAgICBnZXRfem9uZShqdWx5bmFtZSwgOSwgJnApOworICAgICAgICBqdWx5em9uZSA9IC1nZXRfZ210b2ZmKHQsICZwKTsKICAgICAgICAganVseW5hbWVbOV0gPSAnXDAnOwogCiAgICAgICAgIGlmKCBqYW56b25lIDwganVseXpvbmUgKSB7CkBAIC0xMjEzLDggKzEyNDUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamFubmFtZSwganVseW5hbWUpKTsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0jZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI2lmZGVmIF9fQ1lHV0lOX18KICAgICB0enNldCgpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJ0aW1lem9uZSIsIF90aW1lem9uZSk7CkBAIC0xMjI0LDI1ICsxMjU0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHp6KSIsIF90em5hbWVbMF0sIF90em5hbWVbMV0pKTsKICNlbmRpZiAvKiBfX0NZR1dJTl9fICovCiAjZW5kaWYgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KLQotI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKQotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKLSNpZmRlZiBDTE9DS19NT05PVE9OSUMKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfSElHSFJFUwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOwotI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiB9CiAKIApAQCAtMTI1Myw3ICsxMjY0LDExIEBACiAjZW5kaWYKICNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKICAgICB7ImNsb2NrX2dldHRpbWUiLCAgIHRpbWVfY2xvY2tfZ2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXR0aW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX0NMT0NLX1NFVFRJTUUKICAgICB7ImNsb2NrX3NldHRpbWUiLCAgIHRpbWVfY2xvY2tfc2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19zZXR0aW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFJFUwogICAgIHsiY2xvY2tfZ2V0cmVzIiwgICAgdGltZV9jbG9ja19nZXRyZXMsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0cmVzX2RvY30sCiAjZW5kaWYKICAgICB7InNsZWVwIiwgICAgICAgICAgIHRpbWVfc2xlZXAsIE1FVEhfTywgc2xlZXBfZG9jfSwKQEAgLTEzNDksMTcgKzEzNjQsMzIgQEAKICAgICAvKiBTZXQsIG9yIHJlc2V0LCBtb2R1bGUgdmFyaWFibGVzIGxpa2UgdGltZS50aW1lem9uZSAqLwogICAgIFB5SW5pdF90aW1lem9uZShtKTsKIAorI2lmZGVmIENMT0NLX1JFQUxUSU1FCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUkVBTFRJTUUpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX01PTk9UT05JQ19SQVcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUNfUkFXKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX0hJR0hSRVMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19ISUdIUkVTKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19USFJFQURfQ1BVVElNRV9JRAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEKTsKKyNlbmRpZgorCiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0cnVjdFRpbWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF90aW1lX3R5cGVfZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRigmU3RydWN0VGltZVR5cGUpOwotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDExKTsKLSNlbHNlCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCA5KTsKLSNlbmRpZgogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3RpbWUiLCAoUHlPYmplY3QqKSAmU3RydWN0VGltZVR5cGUpOwogICAgIGluaXRpYWxpemVkID0gMTsKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGEuYyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwppbmRleCAxZjliYTc4Li45ZTcxZTAxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCkBAIC00NSw2ICs0NSw3IEBACiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBjYXRlZ29yeV9jaGFuZ2VkOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVjaW1hbF9jaGFuZ2VkOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgbWlycm9yZWRfY2hhbmdlZDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZDsKICAgICBjb25zdCBkb3VibGUgbnVtZXJpY19jaGFuZ2VkOwogfSBjaGFuZ2VfcmVjb3JkOwogCkBAIC0zNzUsNiArMzc2LDggQEAKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CiAgICAgICAgIGlmIChvbGQtPmNhdGVnb3J5X2NoYW5nZWQgPT0gMCkKICAgICAgICAgICAgIGluZGV4ID0gMDsgLyogdW5hc3NpZ25lZCAqLworICAgICAgICBlbHNlIGlmIChvbGQtPmVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZCAhPSAweEZGKQorICAgICAgICAgICAgaW5kZXggPSBvbGQtPmVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZDsKICAgICB9CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVVuaWNvZGVfRWFzdEFzaWFuV2lkdGhOYW1lc1tpbmRleF0pOwogfQpAQCAtODg0LDcgKzg4Nyw3IEBACiAgICAgcmV0dXJuIGg7CiB9CiAKLXN0YXRpYyBjaGFyICpoYW5ndWxfc3lsbGFibGVzW11bM10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhhbmd1bF9zeWxsYWJsZXNbXVszXSA9IHsKICAgICB7ICJHIiwgICJBIiwgICAiIiAgIH0sCiAgICAgeyAiR0ciLCAiQUUiLCAgIkciICB9LAogICAgIHsgIk4iLCAgIllBIiwgICJHRyIgfSwKQEAgLTEwNTcsNyArMTA2MCw3IEBACiAgICAgaW50IGksIGxlbjE7CiAgICAgKmxlbiA9IC0xOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgKnMgPSBoYW5ndWxfc3lsbGFibGVzW2ldW2NvbHVtbl07CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBoYW5ndWxfc3lsbGFibGVzW2ldW2NvbHVtbl07CiAgICAgICAgIGxlbjEgPSBQeV9TQUZFX0RPV05DQVNUKHN0cmxlbihzKSwgc2l6ZV90LCBpbnQpOwogICAgICAgICBpZiAobGVuMSA8PSAqbGVuKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKaW5kZXggODlkODc2OC4uZWE0MGMyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IDMuMiAqLwogCi0jZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiOC4wLjAiCisjZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiOS4wLjAiCiAvKiBhIGxpc3Qgb2YgdW5pcXVlIGRhdGFiYXNlIHJlY29yZHMgKi8KIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgX1B5VW5pY29kZV9EYXRhYmFzZV9SZWNvcmRzW10gPSB7CiAgICAgezAsIDAsIDAsIDAsIDAsIDB9LApAQCAtMjQyLDEyICsyNDIsMTMgQEAKICAgICB7MjcsIDAsIDExLCAwLCA1LCAwfSwKICAgICB7MjcsIDAsIDE5LCAxLCA0LCAxMzZ9LAogICAgIHsyNywgMCwgMTksIDEsIDQsIDEwfSwKKyAgICB7MzAsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MjIsIDAsIDE5LCAxLCAyLCAxNzB9LAogICAgIHsyMywgMCwgMTksIDEsIDIsIDE3MH0sCiAgICAgezMwLCAwLCAxLCAwLCA0LCAxMzZ9LAogICAgIHs5LCAwLCAxOSwgMCwgNCwgMH0sCisgICAgezI3LCAwLCAxOSwgMCwgMiwgMH0sCiAgICAgezI3LCAwLCAxOSwgMSwgNSwgMTcwfSwKLSAgICB7MzAsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MzAsIDAsIDE5LCAwLCAyLCAxMzZ9LAogICAgIHsxMCwgMCwgMTgsIDAsIDAsIDEzNn0sCiAgICAgezI2LCAwLCAxOSwgMCwgMiwgMH0sCkBAIC0zMjksNiArMzMwLDcgQEAKICAgICB7MSwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezIsIDAsIDQsIDAsIDUsIDB9LAogICAgIHs5LCAwLCAxMiwgMCwgNSwgMH0sCisgICAgezQsIDksIDEsIDAsIDUsIDB9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTcwfSwKICAgICB7NSwgMjE2LCAxLCAwLCA1LCAwfSwKICAgICB7NSwgMjI2LCAxLCAwLCA1LCAwfSwKQEAgLTMzNiw2ICszMzgsNyBAQAogICAgIHs3LCAwLCA5LCAwLCA1LCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDQsIDB9LAorICAgIHsyOSwgMCwgMTksIDAsIDIsIDB9LAogfTsKIAogLyogUmVpbmRleGluZyBvZiBORkMgZmlyc3QgY2hhcmFjdGVycy4gKi8KQEAgLTczMCwzOSArNzMzLDM5IEBACiAgICAgMTI1LCAxMjYsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIAogICAgIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTM4LCA0MSwgNDEsIDE0NSwgMTM4LCAxNDYsIDE0NywgMTQ4LCAKICAgICAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDEzOCwgMTM4LCAxNTYsIDEzOCwgMTM4LCAxMzgsIDE1NywgCi0gICAgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTM4LCAxMzgsIDE2NCwgMTM4LCAxNjUsIDE2NiwgMTY3LCAxNjgsIAotICAgIDEzOCwgMTM4LCAxNjksIDEzOCwgMTM4LCAxMzgsIDE3MCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTcxLCAxNzIsIDQxLCAxNzMsIDEzOCwgMTM4LCAKKyAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxMzgsIDE2NCwgMTY1LCAxMzgsIDE2NiwgMTY3LCAxNjgsIDE2OSwgCisgICAgMTM4LCAxMzgsIDE3MCwgMTM4LCAxMzgsIDEzOCwgMTcxLCAxMzgsIDEzOCwgMTcyLCAxNzMsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzQsIDE3NSwgNDEsIDE3NiwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzQsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzcsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3NSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzYsIDE3NywgMTc4LCAxNzksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDE4MCwgMTgxLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzksIDE4MCwgMTgxLCAxODIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4MywgMTg0LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTg1LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTg2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTg4LCAxODksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTgyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTgzLCAxODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTg1LCAKLSAgICAxODYsIDE4NywgMTg4LCAxMzgsIDE4OSwgMTM4LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgNzgsIAotICAgIDc4LCA3OCwgNzgsIDE5OCwgMTk5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMjAwLCAyMDEsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMjAyLCAyMDMsIDEzOCwgMTM4LCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMTM4LCAyMDksIDIxMCwgMjA5LCAyMDksIAotICAgIDIxMSwgMjEyLCAyMDksIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxOTAsIAorICAgIDE5MSwgMTkyLCAxOTMsIDEzOCwgMTk0LCAxMzgsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgMjAzLCAyMDQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMjA1LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAyMDYsIDIwNywgMjA4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAyMDksIDIxMCwgMTM4LCAxMzgsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAxMzgsIDIxNiwgMjE3LCAyMTgsIDIxOSwgCisgICAgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIApAQCAtNzg3LDE5ICs3OTAsMTkgQEAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIzMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIyMSwgMTAxLCAyMjIsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMzEsIDEwMSwgMjMyLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMjIzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMDEsIDIzMywgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMjIsIDEyMiwgMTIyLCAxMjIsIDIyNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTIyLCAxMjIsIDEyMiwgMTIyLCAyMzQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIApAQCAtMTIwMiw3ICsxMjA1LDcgQEAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAyMjUsIDEzOCwgMjI2LCAyMjcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMjM1LCAxMzgsIDIzNiwgMjM3LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIApAQCAtMTI3NSw3ICsxMjc4LDcgQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKLSAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDIyOCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAyMzgsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIApAQCAtMTMxMiw3ICsxMzE1LDcgQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKLSAgICAxMjEsIDIyOCwgCisgICAgMTIxLCAyMzgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTQ0NCwxNzAgKzE0NDcsMTcxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCAKLSAgICA4MSwgODEsIDg2LCA4NiwgODYsIDEyMSwgMTIyLCAxMjMsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4NiwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDEzOSwgCi0gICAgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIAotICAgIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgCi0gICAgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIAotICAgIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAKLSAgICAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAKLSAgICAxNDMsIDE0MywgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODAsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMzUsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDE0MCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAKLSAgICAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgCi0gICAgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgCi0gICAgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTU0LCAxNDcsIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIAotICAgIDE0NywgMCwgMTQ3LCAxNDcsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIAotICAgIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMDgsIAorICAgIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCAxMjEsIDEyMiwgMTIzLCA4MSwgCisgICAgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIAotICAgIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgMCwgMTU1LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAKLSAgICAxNDcsIDEzOSwgMTQ3LCAxNDcsIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1NywgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAKLSAgICAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgCi0gICAgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAKLSAgICAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIAotICAgIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIAotICAgIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIAotICAgIDE2NiwgMTY2LCAxMzUsIDEzOSwgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIAotICAgIDEzOSwgMTM1LCAxNDksIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDEzOSwgMTQyLCAKLSAgICAxNDIsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgNDgsIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgODYsIDQ4LCAxMzksIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTM5LCAxMzksIDEzOSwgMTM1LCA4MCwgODAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDUxLCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzOSwgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAxMzksIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIAorICAgIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgODAsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgCisgICAgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgMTQ3LCAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCA4MCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMTQ2LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxMzksIAorICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxNTUsIDAsIDAsIDAsIAorICAgIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIDE0NywgMTM5LCAxNDcsIDE0NywgCisgICAgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE1NywgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgCisgICAgMTU4LCAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTY1LCAKKyAgICAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxMzUsIDEzOSwgCisgICAgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxNDksIDEzNSwgCisgICAgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDEzOSwgMTQyLCAxNDIsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzUsIDEzNSwgNDgsIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgODYsIDQ4LCAxMzksIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCA4MCwgODAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCAKKyAgICA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDgxLCA4MSwgCisgICAgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCAwLCA4NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAorICAgIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMTYyNyw0NSArMTYzMSw0NSBAQAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIAotICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTQyLCAxMzUsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTc0LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAKKyAgICAxMzUsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTc0LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDg4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA4OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgCiAgICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgCiAgICAgMTM5LCAxMzksIDg3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTE3MTQsMjcgKzE3MTgsMjcgQEAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCAKLSAgICA4MywgMTc2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIDE3NiwgMTc2LCAKLSAgICAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgNDgsIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAotICAgIDgxLCA0OCwgNDgsIDAsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgCisgICAgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzksIDEzOSwgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIAorICAgIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAogICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgMTc3LCAKLSAgICAxNzgsIDg2LCAxNzksIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIAorICAgIDgxLCA4MSwgMTc3LCAxNzgsIDg2LCAxNzksIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MCwgODYsIDgxLCA4NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDgxLCAxODAsIDg2LCA4MSwgODYsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKQEAgLTE3NDMsMzMyICsxNzQ3LDMzMyBAQAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MSwgNDcsIDQ3LCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAKLSAgICAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIAotICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAotICAgIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCA1OCwgNTgsIDc2LCA0MywgNDMsIAotICAgIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCAwLCAwLCAKLSAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCA0MywgNDMsIDQzLCA0MywgCi0gICAgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIAotICAgIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCi0gICAgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgMTkwLCAxOTAsIDIyLCAxOTIsIAotICAgIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAxMzgsIDE5NywgMTk3LCAxOTcsIAotICAgIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgMjA1LCAyMDYsIDIwNywgMjIsIAotICAgIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAxMzgsIDEzOCwgMTM4LCAyMDksIAotICAgIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgCi0gICAgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NywgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMjE0LCAKLSAgICA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMTQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAwLCAwLCA4NSwgODUsIDg1LCA4NSwgCi0gICAgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAKLSAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCA4MSwgODEsIDgxLCA4MSwgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCAKLSAgICA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NiwgMTc2LCA4MSwgODYsIDgxLCAxNzYsIDE3NiwgODYsIDg2LCAKLSAgICA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjIsIDIyMiwgNDksIAotICAgIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIDQ5LCA0OSwgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIAotICAgIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIDI2LCAyMjIsIDIyMywgMjIzLCAyNiwgNDksIAotICAgIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIDIyNSwgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAKLSAgICAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgNDksIDIyNiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAyMjcsIDIyNywgMjI3LCAKLSAgICAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIAotICAgIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyMzEsIDIzMCwgMjMwLCAyNiwgMjYsIDQwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgCi0gICAgMjMyLCAyMzMsIDIzMywgMjM0LCA3OCwgNzgsIDQwLCAyMzMsIDIzNCwgMjMyLCAyMzMsIDIzNCwgMjMyLCA3OCwgNDAsIDc4LCAKLSAgICAyMzMsIDIzNSwgMjM2LCA3OCwgMjMzLCAyMzIsIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMywgNDAsIDIzMywgCi0gICAgMjMzLCAyMzIsIDIzMiwgNDAsIDIzNCwgNDAsIDIzNCwgNDAsIDQwLCA0MCwgNDAsIDIzMywgMjM3LCAyMjYsIDIzMywgMjI2LCAKLSAgICAyMjYsIDIzMiwgMjMyLCAyMzIsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjMyLCA3OCwgMjMyLCAyMzMsIDIzMywgMjMyLCAyMzIsIAotICAgIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzMsIDIzNCwgMjMyLCAyMzIsIDIzMywgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgMjM4LCA0MCwgMjM0LCA3OCwgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzIsIDIzMiwgMjMzLCAyMzMsIDc4LCAyMzAsIDIzOCwgCi0gICAgMjM4LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMyLCAKLSAgICAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNDAsIDc4LCA3OCwgMjMyLCA0MCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDQwLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMTYzLCAxNjQsIDE2MywgMTY0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgMjMyLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKLSAgICAyNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAKKyAgICAzOCwgMCwgMzgsIDAsIDM4LCAwLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAKKyAgICAxODIsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDE4MywgNTgsIDE4MiwgCisgICAgNTgsIDU4LCA3NiwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDc2LCA3NiwgNzYsIDQzLCAKKyAgICA0MywgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDAsIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIAorICAgIDE4MiwgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMzgsIDc2LCAxODUsIDE4NSwgMCwgMCwgNDMsIDQzLCA0MywgCisgICAgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDE4NSwgNTgsIDAsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxNzQsIDE3NCwgMTc0LCAxODgsIDE4OSwgMTkwLCAxOTEsIDg0LCAxOTAsIAorICAgIDE5MCwgMTkwLCAyMiwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIDE5NiwgMjIsIDIyLCAyMiwgCisgICAgMTM4LCAxOTcsIDE5NywgMTk3LCAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMSwgMjA1LCAxMTAsIAorICAgIDIwNSwgMjA2LCAyMDcsIDIyLCAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIDEzOCwgMTk3LCAyMDgsIDIwOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMjA5LCAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDIxNCwgNTEsIDAsIDAsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgCisgICAgMjE3LCAyMTgsIDIxOSwgMjE0LCAzNCwgMzQsIDM0LCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAKKyAgICAyMTYsIDIxNywgMjE4LCAwLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgMCwgCisgICAgMCwgMCwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAyMjAsIDIyMSwgODUsIDg1LCAyMywgODUsIDg1LCA4NSwgCisgICAgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzYsIDE3NiwgODEsIDgxLCA4MSwgODEsIAorICAgIDE3NiwgMTc2LCAxNzYsIDgxLCA4MSwgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAxNzYsIDE3NiwgODEsIDg2LCAKKyAgICA4MSwgMTc2LCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjIyLCAyMjIsIDQ5LCAyMjMsIDI2LCAyMjMsIDIyMiwgNDksIDI2LCAyMjMsIDM1LCA0OSwgNDksIDQ5LCAzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ2LCAyNiwgNDksIDIyMywgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgNDksIDI2LCAyNiwgMjIyLCAKKyAgICAyMjMsIDIyMywgMjYsIDQ5LCAyNiwgMjI0LCAyNiwgNDksIDI2LCAxODQsIDIyNCwgNDksIDQ5LCAyMjUsIDM1LCA0OSwgNDksIAorICAgIDQ0LCA0OSwgMzUsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMjIsIDM1LCAzNSwgNDksIDQ5LCAyMjYsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyNywgMjI3LCAyMjcsIDM3LCAKKyAgICAzNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAzNywgMzcsIDIyNywgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAKKyAgICAyMjksIDE3MywgMTczLCAxNzMsIDQ0LCA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMjYsIDI2LCAwLCAwLCAwLCAwLCAKKyAgICA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjMwLCAyMzAsIDI2LCAyNiwgMjYsIDI2LCA3OCwgMjYsIAorICAgIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMxLCAyMzAsIDIzMCwgMjYsIDI2LCA0MCwgMjYsIDQwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIDIzMiwgMjMzLCAyMzMsIDIzNCwgNzgsIDc4LCA0MCwgMjMzLCAyMzQsIDIzMiwgCisgICAgMjMzLCAyMzQsIDIzMiwgNzgsIDQwLCA3OCwgMjMzLCAyMzUsIDIzNiwgNzgsIDIzMywgMjMyLCA3OCwgNzgsIDc4LCAyMzMsIAorICAgIDIzMiwgMjMyLCAyMzMsIDQwLCAyMzMsIDIzMywgMjMyLCAyMzIsIDQwLCAyMzQsIDQwLCAyMzQsIDQwLCA0MCwgNDAsIDQwLCAKKyAgICAyMzMsIDIzNywgMjI2LCAyMzMsIDIyNiwgMjI2LCAyMzIsIDIzMiwgMjMyLCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIzMiwgNzgsIAorICAgIDIzMiwgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMzLCAKKyAgICAyMzQsIDIzMiwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzOCwgNDAsIDIzNCwgNzgsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMyLCAKKyAgICAyMzIsIDIzMywgMjMzLCA3OCwgMjMwLCAyMzgsIDIzOCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIAorICAgIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAKKyAgICAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDQwLCA3OCwgNzgsIDIzMiwgNDAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA0MCwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgCisgICAgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgMjMyLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjQwLCAyNDEsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjYsIDc4LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKICAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKLSAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyMjcsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCi0gICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMwLCAKKyAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjI3LCAKKyAgICAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgCisgICAgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKLSAgICAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjQ0LCAyNDQsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgCisgICAgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjM5LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAyMzksIDMwLCAyMzksIDMwLCAzMCwgMzAsIDMwLCAyMzksIDMwLCAKKyAgICAzMCwgMjM5LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAotICAgIDE2MywgMTY0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDE1MywgMTUzLCAKKyAgICAxNjMsIDE2NCwgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAxNTMsIDE1MywgCiAgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjMyLCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAxNjMsIDE2NCwgNzgsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAxNjMsIAotICAgIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAotICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjI2LCAyMTYsIAotICAgIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAxNjMsIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgCisgICAgMjI2LCAyMTYsIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyNDMsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDI0NSwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ3LCAwLCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA0NCwgNDQsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIDEzOCwgNDcsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAKKyAgICAxMzgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCAKICAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIAotICAgIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKLSAgICAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMCwgMCwgMCwgMCwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgODQsIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgCisgICAgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMTM4LCAKKyAgICAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAyNDYsIDI0NywgMjQ3LCAyNDcsIDI0NCwgMjQ4LCAxNzAsIDI0OSwgMjUwLCAyNTEsIAotICAgIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNDQsIDI0NCwgMjUwLCAyNTEsIDI1MCwgMjUxLCAKLSAgICAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NCwgMjQ0LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgCi0gICAgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjU5LCAyNTIsIDI0OCwgMjQ4LCAyNDgsIAotICAgIDI0OCwgMjQ4LCAyNDUsIDI0NCwgMjYwLCAyNjAsIDI2MCwgMjQ4LCAxNzAsIDI0NywgMjQ0LCAyNiwgMCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDAsIAotICAgIDAsIDI2MiwgMjYyLCAyNjMsIDI2MywgMjQ4LCAyNjQsIDI2NSwgMjUyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAKLSAgICAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNDcsIDI0OCwgMjQ4LCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjQ2LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDI0NywgMjQ4LCAyNDgsIDI0OCwgMjM5LCAyNDksIDE3MCwgCisgICAgMjUwLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDIzOSwgMjM5LCAyNTEsIAorICAgIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NSwgMjU1LCAyMzksIDI1MCwgMjUwLCAKKyAgICAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjYwLCAyNjAsIDI1MywgCisgICAgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0NiwgMjM5LCAyNjEsIDI2MSwgMjYxLCAyNDksIDE3MCwgMjQ4LCAyMzksIDI2LCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgCisgICAgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIAorICAgIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgCisgICAgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMjYzLCAyNjMsIDI2NCwgMjY0LCAyNDksIDI2NSwgMjY2LCAyNTMsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgCisgICAgMjYyLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDI2MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMTcwLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI0OCwgMjQ5LCAyNDksIDI2NSwgMjY2LCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAwLCAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMCwgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMCwgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgCi0gICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ1LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAotICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI2NiwgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNDUsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjQ2LCAyNDYsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI0NiwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgCisgICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjQ2LCAyNDYsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0yMDgxLDIwICsyMDg2LDIwIEBACiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OSwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0yMTAzLDEyNCArMjEwOCwxMTUgQEAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzgsIDEzOCwgCi0gICAgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgCisgICAgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNTMsIDEzOCwgMTM4LCAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDUxLCA4MSwgODEsIDQ4LCA0OCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDUxLCAKKyAgICA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAotICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDU0LCA1NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDU0LCA1NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MiwgMjcxLCAyNzEsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0OCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA1MiwgMjcyLCAyNzIsIDQ0LCA0NywgNDQsIDQ3LCA0OCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDE0MiwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAKKyAgICA0OCwgNDgsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgCisgICAgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDQ4LCAKKyAgICA4MywgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgODYsIDg2LCA4MywgCisgICAgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDE3NSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDUzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgwLCA4MCwgODAsIDQ4LCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgODEsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgCisgICAgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDI3MiwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgCisgICAgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAogICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgNDgsIDgzLCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCA4NiwgODYsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKLSAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAotICAgIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgCi0gICAgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgCi0gICAgNDgsIDEzOSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgODEsIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCAKLSAgICA4MSwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMjcxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAKLSAgICAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKQEAgLTIyMjksNyArMjIyNSw4IEBACiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjc0LCAyNzQsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCkBAIC0yMjM4LDM4ICsyMjM1LDQ3IEBACiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAxNzAsIDE3MCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAxNzAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMjc0LCAxNzAsIDE3MCwgMjc0LCAyNzQsIDE3MCwgMTcwLCAxNzAsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAwLCAwLCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMTcwLCAxNzAsIDI3NSwgMTcwLCAyNzUsIDE3MCwgMTcwLCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDE3MCwgMjc1LCAxNzAsIDI3NSwgMTcwLCAxNzAsIAorICAgIDI3NSwgMjc1LCAxNzAsIDE3MCwgMTcwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMCwgMCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzUsIDI3NiwgMjc1LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgCi0gICAgMjc3LCAyNzcsIDI3NywgMjc3LCAyMTUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAotICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDI3NSwgMCwgMjc1LCAyNzUsIDAsIAotICAgIDI3NSwgMjc1LCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzcsIDEzMSwgMTMxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzYsIDI3NywgMjc2LCAKKyAgICAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyMTUsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMCwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIAorICAgIDAsIDI3NiwgMCwgMjc2LCAyNzYsIDAsIDI3NiwgMjc2LCAwLCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIAorICAgIDI3NiwgMjc2LCAyNzgsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyNzgsIDI3OCwgCi0gICAgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgCisgICAgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKQEAgLTIyODUsMjcgKzIyOTEsMjcgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjc5LCAxOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjgwLCAxOTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAyODAsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODIsIDI4MywgMjgxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCAKLSAgICA4MSwgMjgxLCAyODQsIDI4NCwgMjg1LCAyODUsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIAotICAgIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjQ3LCAyNDcsIDI4MiwgMjgzLCAyODEsIDI4MSwgMjgxLCAKLSAgICAyODEsIDI4NSwgMjg1LCAyODUsIDI4NiwgMjgxLCAyODYsIDAsIDI4MSwgMjg2LCAyODEsIDI4MSwgMjg0LCAyODcsIDI4OCwgCi0gICAgMjg3LCAyODgsIDI4NywgMjg4LCAyODksIDI4MSwgMjgxLCAyOTAsIDI5MSwgMjkyLCAyOTIsIDI5MywgMCwgMjgxLCAyOTQsIAotICAgIDI4OSwgMjgxLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMTgsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyODEsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMjgyLCAyODIsIDI4MiwgMjgyLCAyODIsIDI4MiwgCisgICAgMjgyLCAyODMsIDI4NCwgMjgyLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgMjgyLCAyODUsIDI4NSwgMjg2LCAyODYsIDI4MywgMjg0LCAyODMsIDI4NCwgCisgICAgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjQ4LCAyNDgsIAorICAgIDI4MywgMjg0LCAyODIsIDI4MiwgMjgyLCAyODIsIDI4NiwgMjg2LCAyODYsIDI4NywgMjgyLCAyODcsIDAsIDI4MiwgMjg3LCAKKyAgICAyODIsIDI4MiwgMjg1LCAyODgsIDI4OSwgMjg4LCAyODksIDI4OCwgMjg5LCAyOTAsIDI4MiwgMjgyLCAyOTEsIDI5MiwgCisgICAgMjkzLCAyOTMsIDI5NCwgMCwgMjgyLCAyOTUsIDI5MCwgMjgyLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMTgsIAorICAgIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKQEAgLTIzMTQsMTY1ICsyMzIwLDE2NSBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTc0LCAwLCAyOTUsIDI5NSwgMjk2LCAyOTcsIDI5NiwgMjk1LCAyOTUsIAotICAgIDI5OCwgMjk5LCAyOTUsIDMwMCwgMzAxLCAzMDIsIDMwMSwgMzAxLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAKLSAgICAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMSwgMjk1LCAzMDQsIDMwNSwgMzA0LCAyOTUsIDI5NSwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIAotICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDI5OCwgMjk1LCAyOTksIDMwNywgMzA4LCAKLSAgICAzMDcsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCi0gICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAyOTgsIAotICAgIDMwNSwgMjk5LCAzMDUsIDI5OCwgMjk5LCAzMTAsIDMxMSwgMzEyLCAzMTAsIDMxMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxNCwgMzE0LCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDAsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDAsIDAsIAotICAgIDAsIDI5NywgMjk3LCAzMDUsIDMwNywgMzE1LCAyOTcsIDI5NywgMCwgMzE2LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNiwgCi0gICAgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDMxOCwgMzE4LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDE3NCwgMCwgMjk2LCAyOTYsIAorICAgIDI5NywgMjk4LCAyOTcsIDI5NiwgMjk2LCAyOTksIDMwMCwgMjk2LCAzMDEsIDMwMiwgMzAzLCAzMDIsIDMwMiwgMzA0LCAKKyAgICAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDIsIDI5NiwgMzA1LCAzMDYsIDMwNSwgCisgICAgMjk2LCAyOTYsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAorICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKKyAgICAyOTksIDI5NiwgMzAwLCAzMDgsIDMwOSwgMzA4LCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgCisgICAgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIAorICAgIDMxMCwgMzEwLCAzMTAsIDMxMCwgMjk5LCAzMDYsIDMwMCwgMzA2LCAyOTksIDMwMCwgMzExLCAzMTIsIDMxMywgMzExLCAKKyAgICAzMTEsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE1LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTUsIDMxNSwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAKKyAgICAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAKKyAgICAwLCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAyOTgsIDI5OCwgMzA2LCAzMDgsIDMxNiwgMjk4LCAyOTgsIDAsIDMxNywgCisgICAgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTcsIDMxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE5LCAzMTksIAorICAgIDMxOSwgMjYsIDMwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAKKyAgICAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAogICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKICAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAotICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAxNTMsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2LCAzMjAsIDMyMCwgMzIwLCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyMCwgCiAgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDE1MywgCisgICAgMjYsIDgwLCA4MCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA4NiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDE3MywgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIzLCAzMjMsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDMyMiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDEwNywgMTA3LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMTA3LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMTM1LCA4NiwgMTM1LCAKLSAgICA4MSwgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAKKyAgICAxMzUsIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc2LCA4NiwgMCwgMCwgMCwgCi0gICAgMCwgMTQyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc2LCA4NiwgMCwgCisgICAgMCwgMCwgMCwgMTQyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAzMjEsIDMyMSwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAzMjIsIDMyMiwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDg2LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDg2LCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIApAQCAtMjQ4MywyMSArMjQ4OSwyMSBAQAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCi0gICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAotICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKLSAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKICAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCiAgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAotICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCiAgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAotICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAwLCAxMzksIDEzNSwgMTM5LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKKyAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCisgICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDAsIDEzOSwgMTM1LCAxMzksIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKQEAgLTI1MzAsMTUgKzI1MzYsMTUgQEAKICAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKLSAgICAxMzksIDEzNSwgMTc1LCAxNDUsIDEzNSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM5LCAxMzUsIDE3NSwgMTQ1LCAxMzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTI1NTAsNiArMjU1NiwxMyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCAxNDIsIDEzNSwgMTM1LCAxMzksIDE0NSwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCA4MywgMCwgODMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTQ5LCAxNDcsIDE0NywgMTQ2LCAKICAgICAxNDcsIDEzNSwgMTM1LCAxMzksIDE0MiwgMTQ1LCA0OCwgNDgsIDgzLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTI1NjYsMjMwICsyNTc5LDI2OCBAQAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxNDIsIDEzNSwgODMsIDgzLCAKICAgICA4MywgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIAotICAgIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDgzLCAKLSAgICA4MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE3NSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgODMsIDgzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIAotICAgIDUzLCA1MywgNTMsIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMzI3LCA0OCwgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgODAsIDEzNSwgMTc2LCA4MywgMTc0LCAxNzQsIDE3NCwgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCi0gICAgMzI3LCAzMjcsIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIDMyOCwgMzI3LCAzMjcsIDMyNywgMzI3LCAzMjcsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCAKLSAgICA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCA4MSwgODEsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNzYsIDE3NiwgMTc2LCAKKyAgICAxNzYsIDE3NiwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA1MywgNTMsIDUzLCA1MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA4MCwgMTM1LCAxNzYsIDgzLCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI5LCAzMjksIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIAorICAgIDMzMCwgMzI5LCAzMjksIDMyOSwgMzI5LCAzMjksIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgCisgICAgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCA4MSwgODEsIDI2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgCi0gICAgMCwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAKKyAgICAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCA4MCwgODAsIDgwLCA4MCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCAwLCA4MSwgODEsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCkBAIC0yODAzLDExICsyODU0LDE4IEBACiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAotICAgIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIAotICAgIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCA4NiwgODYsIAorICAgIDg2LCA4NiwgODYsIDg2LCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIAogICAgIDEzMSwgMCwgMTMxLCAwLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKQEAgLTI4MjEsNyArMjg3OSw3IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIApAQCAtMjgzMiwxNzMgKzI4OTAsMjA4IEBACiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTUzLCAxNTMsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDMzMSwgMCwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDI0MSwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTUzLCAxNTMsIDAsIDAsIDAsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMzMywgMCwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMjY3LCAzMzQsIDI0MiwgMjY3LCAyNjcsIDI2NywgCisgICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAKLSAgICAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNTQsIDU0LCAKLSAgICA1NCwgNTQsIDU0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAKKyAgICAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAzMzUsIDMzNSwgMzM1LCAzMzUsIDMzNSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjYsIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDAsIDAsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDAsIDAsIAogfTsKIAogLyogZGVjb21wb3NpdGlvbiBkYXRhICovCkBAIC0zOTcwLDEwMiArNDA2MywxMDIgQEAKICAgICAyNjYsIDI4NDM2LCAyNjYsIDI1MjM3LCAyNjYsIDI1NDI5LCAyNjYsIDE5OTY4LCAyNjYsIDE5OTc3LCAyNjYsIDM2OTM4LCAKICAgICAyNjYsIDI0MDM4LCAyNjYsIDIwMDEzLCAyNjYsIDIxNDkxLCAyNjYsIDI1MzUxLCAyNjYsIDM2MjA4LCAyNjYsIDI1MTcxLCAKICAgICAyNjYsIDMxMTA1LCAyNjYsIDMxMzU0LCAyNjYsIDIxNTEyLCAyNjYsIDI4Mjg4LCAyNjYsIDI2Mzc3LCAyNjYsIDI2Mzc2LCAKLSAgICAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIDc3MCwgMTIzMDgsIAotICAgIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgMTIzMDksIDc3MCwgCi0gICAgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAzMDQyMywgMTIzMDksIAotICAgIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIDI0NDcxLCAyNjMsIAotICAgIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAyMDMyMCwgMjU2LCAKLSAgICAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAyMDcxMSwgMjU2LCAKLSAgICAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgMjA4MzYsIDI1NiwgCi0gICAgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIDEzMjQyNywgMjU2LCAKLSAgICAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAxNjg0MTUsIDI1NiwgCi0gICAgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgMjExMDYsIDI1NiwgCi0gICAgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEyNDIsIDI1NiwgCi0gICAgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgMjEzMzgsIDI1NiwgCi0gICAgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMTMzNjc2LCAyNTYsIAotICAgIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAyMTQ4OSwgMjU2LCAKLSAgICAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAyMTY2NiwgMjU2LCAKLSAgICAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAyMTg5MiwgMjU2LCAKLSAgICAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAyMjAyMiwgMjU2LCAKLSAgICAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAyMjQ3OCwgMjU2LCAKLSAgICAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAyMjcwMCwgMjU2LCAKLSAgICAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgMjI4MTgsIDI1NiwgCi0gICAgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAyMzA3OSwgMjU2LCAKLSAgICAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAyMzM1OCwgMjU2LCAKLSAgICAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgMjM1MzksIDI1NiwgCi0gICAgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIDE0MjA5LCAyNTYsIAotICAgIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAyMzg3NSwgMjU2LCAKLSAgICAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgMjQwMzQsIDI1NiwgCi0gICAgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgMTQ0MzQsIDI1NiwgCi0gICAgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIDI0MjY2LCAyNTYsIAotICAgIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAyNTYsIDI0MzU0LCAKLSAgICAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIDI1NiwgMjQ0MjcsIAotICAgIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIDI1NiwgMjQ3MDUsIAotICAgIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAyNTYsIDI0OTA0LCAKLSAgICAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAyNTYsIDI1MDEwLCAKLSAgICAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAyNTYsIDI1MTA0LCAKLSAgICAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAyNTYsIDE0MjA5MiwgCi0gICAgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgMjU2LCAxNDIzMjEsIAotICAgIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIDI1NiwgMjU3MjYsIAotICAgIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIDI1NiwgMTQzMzcwLCAKLSAgICAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAyNTYsIDE1MTEyLCAKLSAgICAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAyNTYsIDMyOTQxLCAKLSAgICAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAyNTYsIDI2NDUxLCAKLSAgICAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgMjU2LCAyNjc1NywgCi0gICAgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIDI1NiwgMjY5NDYsIAotICAgIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAyNTYsIDE1Mzg0LCAKLSAgICAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgMjU2LCAyNzU1MSwgCi0gICAgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIDE0NjE3MCwgMjU2LCAKLSAgICAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgMjc5MjYsIDI1NiwgCi0gICAgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgMjgwMzcsIDI1NiwgCi0gICAgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIDI4MzYzLCAyNTYsIAotICAgIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgMTQ3MzQyLCAKLSAgICAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIDI4NzQ2LCAKLSAgICAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAxNDgwNjcsIAotICAgIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIDE0OTAwMCwgCi0gICAgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAyNTYsIDI5NTc5LCAKLSAgICAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAyNTYsIDI5Nzg4LCAKLSAgICAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAyNTYsIDE1MDU4MiwgCi0gICAgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIDMwMjI0LCAyNTYsIAotICAgIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAyNTYsIDMwNDUyLCAKLSAgICAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAzMDQ5NCwgMjU2LCAKLSAgICAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAxNjQ1NCwgMjU2LCAKLSAgICAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgMTY2MTEsIDI1NiwgCi0gICAgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIDI1NiwgMzEyMTEsIAotICAgIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAyNTYsIDE1NDI3OSwgCi0gICAgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIDMxNjg2LCAyNTYsIDMxNjg5LCAKLSAgICAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAzMTk3NiwgMjU2LCAzMTk3MSwgCi0gICAgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgMzIxOTksIDI1NiwgMzIyNTgsIAotICAgIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAxNzI0MSwgMjU2LCAKLSAgICAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIDMyNzczLCAyNTYsIAotICAgIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAyNTYsIDE0NDIyMywgCi0gICAgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgMjU2LCAyMzIyMSwgCi0gICAgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgMzMyODEsIDI1NiwgCi0gICAgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgMzM0MzcsIDI1NiwgCi0gICAgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgMTU4NTI0LCAyNTYsIAotICAgIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIDMzNzI1LCAyNTYsIAotICAgIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIDMzNzU2LCAyNTYsIAotICAgIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAyNTYsIDM0MDM1LCAKLSAgICAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIDI1NiwgMTc3NjEsIAotICAgIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgMjU2LCAzNDQwNywgCi0gICAgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgMjU2LCAzNDY4MSwgCi0gICAgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgMjU2LCAzNDgxNywgCi0gICAgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIDI1NiwgMzUwMzgsIAotICAgIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgMjU2LCAxODExMCwgCi0gICAgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgMjU2LCAxNjI5ODQsIAotICAgIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAyNTYsIDEzMzEyNCwgCi0gICAgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIDI1NiwgMzY2NjQsIAotICAgIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgMjU2LCAKLSAgICAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIDI1NiwgCi0gICAgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAyNTYsIAotICAgIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIDI1NiwgCi0gICAgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgMjU2LCAKLSAgICAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAyNTYsIAotICAgIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAyNTYsIAotICAgIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgMjU2LCAKLSAgICA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAxNzI2ODksIAotICAgIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgNDA3MTksIAotICAgIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKKyAgICAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCAyNjYsIDM3MTk3LCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIAorICAgIDc3MCwgMTIzMDgsIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgCisgICAgMTIzMDksIDc3MCwgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAKKyAgICAzMDQyMywgMTIzMDksIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIAorICAgIDI0NDcxLCAyNjMsIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAKKyAgICAyMDMyMCwgMjU2LCAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAKKyAgICAyMDcxMSwgMjU2LCAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgCisgICAgMjA4MzYsIDI1NiwgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIAorICAgIDEzMjQyNywgMjU2LCAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAKKyAgICAxNjg0MTUsIDI1NiwgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgCisgICAgMjExMDYsIDI1NiwgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgCisgICAgMjEyNDIsIDI1NiwgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgCisgICAgMjEzMzgsIDI1NiwgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgCisgICAgMTMzNjc2LCAyNTYsIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAKKyAgICAyMTQ4OSwgMjU2LCAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAKKyAgICAyMTY2NiwgMjU2LCAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAKKyAgICAyMTg5MiwgMjU2LCAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAKKyAgICAyMjAyMiwgMjU2LCAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAKKyAgICAyMjQ3OCwgMjU2LCAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAKKyAgICAyMjcwMCwgMjU2LCAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgCisgICAgMjI4MTgsIDI1NiwgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAKKyAgICAyMzA3OSwgMjU2LCAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAKKyAgICAyMzM1OCwgMjU2LCAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgCisgICAgMjM1MzksIDI1NiwgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIAorICAgIDE0MjA5LCAyNTYsIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAKKyAgICAyMzg3NSwgMjU2LCAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgCisgICAgMjQwMzQsIDI1NiwgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgCisgICAgMTQ0MzQsIDI1NiwgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIAorICAgIDI0MjY2LCAyNTYsIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAKKyAgICAyNTYsIDI0MzU0LCAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIAorICAgIDI1NiwgMjQ0MjcsIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIAorICAgIDI1NiwgMjQ3MDUsIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAKKyAgICAyNTYsIDI0OTA0LCAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAKKyAgICAyNTYsIDI1MDEwLCAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAKKyAgICAyNTYsIDI1MTA0LCAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAKKyAgICAyNTYsIDE0MjA5MiwgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgCisgICAgMjU2LCAxNDIzMjEsIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIAorICAgIDI1NiwgMjU3MjYsIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIAorICAgIDI1NiwgMTQzMzcwLCAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAKKyAgICAyNTYsIDE1MTEyLCAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAKKyAgICAyNTYsIDMyOTQxLCAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAKKyAgICAyNTYsIDI2NDUxLCAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgCisgICAgMjU2LCAyNjc1NywgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIAorICAgIDI1NiwgMjY5NDYsIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAKKyAgICAyNTYsIDE1Mzg0LCAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgCisgICAgMjU2LCAyNzU1MSwgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIAorICAgIDE0NjE3MCwgMjU2LCAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgCisgICAgMjc5MjYsIDI1NiwgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgCisgICAgMjgwMzcsIDI1NiwgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIAorICAgIDI4MzYzLCAyNTYsIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgCisgICAgMTQ3MzQyLCAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIAorICAgIDI4NzQ2LCAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAKKyAgICAxNDgwNjcsIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIAorICAgIDE0OTAwMCwgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAKKyAgICAyNTYsIDI5NTc5LCAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAKKyAgICAyNTYsIDI5Nzg4LCAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAKKyAgICAyNTYsIDE1MDU4MiwgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIAorICAgIDMwMjI0LCAyNTYsIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAKKyAgICAyNTYsIDMwNDUyLCAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAKKyAgICAzMDQ5NCwgMjU2LCAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAKKyAgICAxNjQ1NCwgMjU2LCAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgCisgICAgMTY2MTEsIDI1NiwgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIAorICAgIDI1NiwgMzEyMTEsIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAKKyAgICAyNTYsIDE1NDI3OSwgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIAorICAgIDMxNjg2LCAyNTYsIDMxNjg5LCAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAKKyAgICAzMTk3NiwgMjU2LCAzMTk3MSwgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgCisgICAgMzIxOTksIDI1NiwgMzIyNTgsIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAKKyAgICAxNzI0MSwgMjU2LCAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIAorICAgIDMyNzczLCAyNTYsIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAKKyAgICAyNTYsIDE0NDIyMywgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgCisgICAgMjU2LCAyMzIyMSwgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgCisgICAgMzMyODEsIDI1NiwgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgCisgICAgMzM0MzcsIDI1NiwgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgCisgICAgMTU4NTI0LCAyNTYsIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIAorICAgIDMzNzI1LCAyNTYsIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIAorICAgIDMzNzU2LCAyNTYsIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAKKyAgICAyNTYsIDM0MDM1LCAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIAorICAgIDI1NiwgMTc3NjEsIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgCisgICAgMjU2LCAzNDQwNywgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgCisgICAgMjU2LCAzNDY4MSwgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgCisgICAgMjU2LCAzNDgxNywgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIAorICAgIDI1NiwgMzUwMzgsIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgCisgICAgMjU2LCAxODExMCwgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgCisgICAgMjU2LCAxNjI5ODQsIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAKKyAgICAyNTYsIDEzMzEyNCwgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIAorICAgIDI1NiwgMzY2NjQsIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgCisgICAgMjU2LCAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIAorICAgIDI1NiwgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAKKyAgICAyNTYsIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIAorICAgIDI1NiwgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgCisgICAgMjU2LCAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAKKyAgICAyNTYsIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAKKyAgICAyNTYsIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgCisgICAgMjU2LCA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAKKyAgICAxNzI2ODksIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgCisgICAgNDA3MTksIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKIH07CiAKIC8qIGluZGV4IHRhYmxlcyBmb3IgdGhlIGRlY29tcG9zaXRpb24gZGF0YSAqLwpAQCAtNTE4NywxMSArNTI4MCwxMSBAQAogICAgIDEzMDQ0LCAxMzA0NiwgMTMwNDgsIDEzMDUwLCAxMzA1MiwgMTMwNTQsIDEzMDU2LCAxMzA1OCwgMTMwNjAsIDEzMDYyLCAKICAgICAxMzA2NCwgMTMwNjYsIDEzMDY4LCAxMzA3MCwgMTMwNzIsIDEzMDc0LCAxMzA3NiwgMTMwNzgsIDEzMDgwLCAxMzA4MiwgCiAgICAgMTMwODQsIDEzMDg2LCAxMzA4OCwgMTMwOTAsIDEzMDkyLCAxMzA5NCwgMTMwOTYsIDEzMDk4LCAxMzEwMCwgMTMxMDIsIAotICAgIDEzMTA0LCAxMzEwNiwgMTMxMDgsIDEzMTEwLCAxMzExMiwgMTMxMTQsIDEzMTE2LCAxMzExOCwgMTMxMjAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzMTIyLCAxMzEyNiwgMTMxMzAsIDEzMTM0LCAxMzEzOCwgMTMxNDIsIDEzMTQ2LCAxMzE1MCwgMTMxNTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTU4LCAxMzE2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxMDQsIDEzMTA2LCAxMzEwOCwgMTMxMTAsIDEzMTEyLCAxMzExNCwgMTMxMTYsIDEzMTE4LCAxMzEyMCwgMTMxMjIsIDAsIAorICAgIDAsIDAsIDAsIDEzMTI0LCAxMzEyOCwgMTMxMzIsIDEzMTM2LCAxMzE0MCwgMTMxNDQsIDEzMTQ4LCAxMzE1MiwgMTMxNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTYwLCAxMzE2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjIsIDEzMTY0LCAxMzE2NiwgMTMxNjgsIDEzMTcwLCAxMzE3MiwgMTMxNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTY0LCAxMzE2NiwgMTMxNjgsIDEzMTcwLCAxMzE3MiwgMTMxNzQsIAogICAgIDEzMTc2LCAxMzE3OCwgMTMxODAsIDEzMTgyLCAxMzE4NCwgMTMxODYsIDEzMTg4LCAxMzE5MCwgMTMxOTIsIDEzMTk0LCAKICAgICAxMzE5NiwgMTMxOTgsIDEzMjAwLCAxMzIwMiwgMTMyMDQsIDEzMjA2LCAxMzIwOCwgMTMyMTAsIDEzMjEyLCAxMzIxNCwgCiAgICAgMTMyMTYsIDEzMjE4LCAxMzIyMCwgMTMyMjIsIDEzMjI0LCAxMzIyNiwgMTMyMjgsIDEzMjMwLCAxMzIzMiwgMTMyMzQsIApAQCAtNTI0NSwxMSArNTMzOCwxMSBAQAogICAgIDE0MTc2LCAxNDE3OCwgMTQxODAsIDE0MTgyLCAxNDE4NCwgMTQxODYsIDE0MTg4LCAxNDE5MCwgMTQxOTIsIDE0MTk0LCAKICAgICAxNDE5NiwgMTQxOTgsIDE0MjAwLCAxNDIwMiwgMTQyMDQsIDE0MjA2LCAxNDIwOCwgMTQyMTAsIDE0MjEyLCAxNDIxNCwgCiAgICAgMTQyMTYsIDE0MjE4LCAxNDIyMCwgMTQyMjIsIDE0MjI0LCAxNDIyNiwgMTQyMjgsIDE0MjMwLCAxNDIzMiwgMTQyMzQsIAotICAgIDE0MjM2LCAxNDIzOCwgMTQyNDAsIDE0MjQyLCAxNDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQyMzYsIDE0MjM4LCAxNDI0MCwgMTQyNDIsIDE0MjQ0LCAxNDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBORkMgcGFpcnMgKi8KQEAgLTU2NjUsMTMyICs1NzU4LDEzNSBAQAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQgY2hhbmdlX3JlY29yZHNfM18yXzBbXSA9IHsKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDMwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAotCXsgMTksIDIxLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDIsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDMsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDEsIDI1NSwgMCB9LAotCXsgMjU1LCAwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjYsIDI1NSwgMjU1LCAwIH0sCi0JeyA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxNCwgNiwgMjU1LCAyNTUsIDAgfSwKLQl7IDE1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDEuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyLjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMy4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDQuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAotCXsgMTQsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDAsIDAgfSwKLQl7IDI1NSwgNywgMSwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDIsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCAzLCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNCwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDUsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA2LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNywgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDgsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA5LCAyNTUsIDAgfSwKLQl7IDI1NSwgMTksIDI1NSwgMjU1LCAwIH0sCi0JeyAxLCA1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDE4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDAsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDQsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDYsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDcsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDgsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDksIDI1NSwgMCB9LAotCXsgMTksIDMwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCA4LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNywgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjIsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIzLCAyNTUsIDI1NSwgMCB9LAotCXsgOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTQsIDQsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LAotCXsgMjU1LCAxOSwgMjU1LCAyNTUsIC0xIH0sCi0JeyAxLCAyNTUsIDI1NSwgMCwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDExLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMzAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTksIDIxLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAzLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDEsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjYsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDYsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAzLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCA0LjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAorCXsgMTQsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMCwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDEsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDIsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDMsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDQsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDYsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDcsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDgsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDksIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxLCA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxLCAxOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTgsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTksIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDAsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDYsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA4LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDksIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMzAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgOCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNywgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCA1LCAwIH0sCisJeyAyNTUsIDIyLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIzLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyA5LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE0LCA0LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMTYgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LAorCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDI1NSwgLTEgfSwKKwl7IDEsIDI1NSwgMjU1LCAwLCAyNTUsIDAgfSwKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7CiAgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCiAgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDIsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKICAgICAzNiwgMzcsIDIsIDIsIDIsIDM4LCAzOSwgMiwgNDAsIDIsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAotICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDIsIDYyLCA2MywgCi0gICAgNjQsIDY1LCA2NiwgNjYsIDIsIDIsIDIsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCAyLCAyLCAyLCA3NCwgNzUsIAotICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIsIDIsIDIsIDIsIDIsIDg1LCAKKyAgICA1MCwgNTEsIDIsIDUyLCAyLCAyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDIsIDU4LCA1OSwgNjAsIDYxLCAyLCA2MiwgNjMsIAorICAgIDY0LCA2NSwgNjYsIDY3LCA2NywgMiwgMiwgMiwgMiwgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDIsIDIsIDIsIDc1LCAKKyAgICA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCAyLCAyLCAyLCAyLCAyLCAyLCA4NSwgMiwgMiwgMiwgMiwgMiwgCisgICAgODYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg3LCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgODksIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTIsIAorICAgIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIDIsIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICA4OCwgODksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgCi0gICAgOTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCA5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTgsIDUwLCA1MCwgCi0gICAgOTksIDEwMCwgNTAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk1LCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTcsIDk4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5OSwgNTAsIDUwLCAKKyAgICAxMDAsIDEwMSwgNTAsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDExMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTExLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAyLCAyLCAxMTcsIDExOCwgMTE5LCAyLCAxMjAsIAotICAgIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAyLCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAyLCA1MCwgNTAsIDEzMiwgCi0gICAgMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAyLCAyLCAxNDMsIDIsIDIsIDIsIAotICAgIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMiwgMiwgMTUxLCAyLCAxNTIsIDE1MywgMTU0LCAxNTUsIDIsIAotICAgIDIsIDE1NiwgMiwgMiwgMiwgMTU3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTU4LCAxNTksIDUwLCAxNjAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTYxLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAyLCAyLCAxMTgsIDExOSwgMTIwLCAyLCAxMjEsIAorICAgIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAyLCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAyLCA1MCwgNTAsIDEzMywgCisgICAgMiwgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAyLCAyLCAxNDQsIDIsIDIsIDIsIAorICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMiwgMTUyLCAxNTMsIDIsIDE1NCwgMTU1LCAxNTYsIDE1NywgMiwgCisgICAgMiwgMTU4LCAyLCAyLCAyLCAxNTksIDIsIDIsIDE2MCwgMTYxLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgMTYyLCAxNjMsIDUwLCAxNjQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTY1LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCA1MCwgNTAsIDUwLCA1MCwgMTYyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTY2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAyLCAyLCAyLCAyLCAyLCAyLCAxNjcsIDE2OCwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDE2NywgMTY4LCAxNjksIDE3MCwgMiwgMiwgMiwgMiwgMiwgMiwgMTcxLCAKKyAgICAxNzIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTczLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDE3NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTc1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAxNzYsIDE3NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc4LCAKKyAgICAxNzksIDE4MCwgMiwgMTgxLCAyLCAyLCAxODIsIDIsIDIsIDIsIDE4MywgMTg0LCAxODUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgMTg2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDUwLCAxODgsIDE4OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTkwLCAxOTEsIDIsIDIsIDE5MiwgCisgICAgMTkzLCAxOTQsIDE5NSwgMTk2LCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTk3LCAxOTgsIDE5OSwgMjAwLCAKKyAgICAyMDEsIDIwMiwgMjAzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDQsIDIwNSwgOTYsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyMDYsIDIsIDIwNywgMjA4LCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDksIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjExLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyMTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTcwLCAxNzEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDE3MiwgMTczLCAxNzQsIDIsIDE3NSwgMiwgMiwgMTc2LCAyLCAyLCAyLCAxNzcsIDE3OCwgMTc5LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDE4MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDE4MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTgyLCAKLSAgICAxODMsIDIsIDIsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAyLCA1MCwgNTAsIDUwLCA1MCwgMTg5LCAxOTAsIDUwLCAxOTEsIAotICAgIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE5OCwgCi0gICAgMTk5LCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIwMCwgMiwgMjAxLCAKLSAgICAyMDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIwMywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyMDUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMDcsIDUwLCAyMDgsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjEzLCA1MCwgMjE0LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKICAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKICAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgNTAsIDUwLCAyMTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwMywgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTYwMjYsOCArNjEyMiw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDIxMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgNTAsIDIxNiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC02MDkwLDcgKzYxODUsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9kYXRhW10gPSB7CkBAIC02MTc2LDkgKzYyNzEsOSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIApAQCAtNjIxNiw3ICs2MzExLDcgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjIyNSw5ICs2MzIwLDkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTYzMTQsNyArNjQwOSw3IEBACiAgICAgMzIsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIApAQCAtNjM1Niw4ICs2NDUxLDggQEAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKQEAgLTYzNzIsMjkgKzY0NjcsMjkgQEAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzYsIDQsIDAsIDAsIAotICAgIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDQsIDM2LCA4LCA2LCA3LCAzNywgMzgsIDM5LCA0MCwgCi0gICAgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCA0LCAwLCAwLCAKKyAgICAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCAxLCAxLCAwLCAwLCAwLCA0LCAzNywgOCwgNiwgNywgMzgsIDM5LCA0MCwgNDEsIAorICAgIDQyLCA0MywgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjQwNSwxMzcgKzY1MDAsODIxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIDQ1LCA0NSwgNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NiwgNDYsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NywgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OSwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIAorICAgIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTEsIDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDksIAorICAgIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02NTQ3LDY4MyArNzMyNiwzMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIAotICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDksIAotICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgCi0gICAgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQqIGdldF9jaGFuZ2VfM18yXzAoUHlfVUNTNCBuKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCmluZGV4IGQwZjljYjQuLmE4MWQ4ZTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKQEAgLTQsMjQ2ICs0LDI0NyBAQAogCiAvKiBsZXhpY29uICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBsZXhpY29uW10gPSB7Ci0gICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDgzLCA3MywgNzEsIDIwNiwgODcsIDczLCA4NCwgMjAwLCA4MywgODksIDc2LCAKLSAgICA3NiwgNjUsIDY2LCA3NiwgMTk3LCA4MywgNzcsIDY1LCA3NiwgMjA0LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAotICAgIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNzYsIDY1LCA4NCwgNzMsIDIwNiwgNjcsIDg1LCA3OCwgCi0gICAgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDY1LCA4MiwgNjUsIDY2LCA3MywgMTk1LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgCisgICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDgzLCA3MywgNzEsIDIwNiwgODcsIDczLCA4NCwgMjAwLCA4MywgNzcsIDY1LCAKKyAgICA3NiwgMjA0LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3NiwgMTk3LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAorICAgIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNzYsIDY1LCA4NCwgNzMsIDIwNiwgNjUsIDgyLCA2NSwgCisgICAgNjYsIDczLCAxOTUsIDY3LCA4NSwgNzgsIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgCiAgICAgNzcsIDY1LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIAogICAgIDY1LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCAyMDQsIDY4LCA3MywgNzEsIDczLCAyMTIsIDcwLCA3OSwgODIsIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCAKLSAgICA2OCwgNzMsIDY1LCAyMDYsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgMjExLCA4MywgNzMsIDcxLCA3OCwgODcsIAotICAgIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4NCwgNzMsIDc3LCA2OSwgMjExLCA2NiwgCi0gICAgNjUsIDc3LCA4NSwgMjA1LCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCA2NSwgNzgsIDY1LCA4NCwgNzksIDc2LCAKLSAgICA3MywgNjUsIDIwNiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MSwgODIsIAotICAgIDY5LCA2OSwgMjAzLCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAKLSAgICAxOTcsIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDE5MywgNzAsIDc5LCAyMTAsIDY3LCA4OSwgODIsIDczLCAKLSAgICA3NiwgNzYsIDczLCAxOTUsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY1LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA4MywgNjUsIDc4LCA4MywgNDUsIDgzLCA2OSwgODIsIDczLCAKLSAgICAxOTgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDg0LCA2NSwgNzcsIAotICAgIDczLCAyMDQsIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA2NSwgODIsIDgyLCA3OSwgODcsIDEyOCwgODYsIAotICAgIDY1LCAyMDEsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDIxMiwgODMsIDgxLCA4NSwgNjUsIDgyLCAxOTcsIAotICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NSwgCi0gICAgNjYsIDc5LCA4NiwgNjksIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIDIwNiwgNjYsIAotICAgIDg5LCA5MCwgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICAyMDMsIDY1LCAxMjgsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAotICAgIDY5LCAyMTAsIDE5NCwgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDE5MywgODUsIDEyOCwgNzcsIDg5LCA2NSwgNzgsIAotICAgIDc3LCA2NSwgMjEwLCA2OCwgNzksIDIxMiwgNzUsIDY1LCA3OCwgNzEsIDg4LCAyMDEsIDc1LCA3MywgNzUsIDY1LCA3NSwgCi0gICAgODUsIDIwMSwgNzcsIDY5LCA3OCwgNjgsIDE5NywgNzMsIDEyOCwgNzksIDE5OCwgODQsIDczLCA2NiwgNjksIDg0LCA2NSwgCi0gICAgMjA2LCA3OSwgMTI4LCA3MiwgNjksIDY1LCA4NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgCi0gICAgNzgsIDczLCA4NCwgNzMsIDY1LCAyMDQsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDc3LCA2OSwgNjksIDIwNSwgNjcsIDc5LCAKLSAgICA4MCwgODQsIDczLCAxOTUsIDc1LCA3MiwgNzcsIDY5LCAyMTAsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDIxMSwgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4OSwgNjksIDIwMCwgNjcsIAotICAgIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgODAsIDc2LCA4NSwgMjExLCA2OCwgNjksIDg2LCA2NSwgNzgsIDY1LCA3MSwgCi0gICAgNjUsIDgyLCAyMDEsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCA3NiwgNzMsIDY1LCAKLSAgICAyMDYsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDEyOCwgNjYsIDc5LCAyMTYsIDg0LCA3MywgNzYsIDE5NywgNjgsIDg1LCA4MCwgCi0gICAgNzYsIDc5LCA4OSwgNjUsIDIwNiwgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCAKLSAgICA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA4NCwgNzIsIDY1LCAyMDUsIAotICAgIDc5LCA3OCwgNjksIDEyOCwgMjEzLCA3NCwgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODQsIDg3LCA3OSwgCi0gICAgMTI4LCA2NywgNzksIDc4LCA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNzIsIDY5LCA2NiwgODIsIDY5LCAyMTUsIDc3LCAKLSAgICA3MywgNjUsIDIwNywgODUsIDIwOCwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIAotICAgIDIwNiwgNzksIDg2LCA2OSwgMjEwLCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgMjExLCA3MiwgNzcsIDc5LCA3OCwgCi0gICAgMTk5LCA3OSwgNzgsIDE5NywgODAsIDY1LCA3MiwgNjUsIDg3LCAyMDAsIDg0LCA4NywgMjA3LCA2OCwgNzksIDg3LCAyMDYsIAotICAgIDczLCA3OCwgNjgsIDY5LCAyMTYsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDc2LCA3OSwgMjE1LCA4NiwgCi0gICAgNzksIDY3LCA2NSwgNzYsIDczLCAxOTUsIDg0LCA3MiwgODIsIDY5LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCA4NywgNzMsIDY4LCAKLSAgICA4NCwgMjAwLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDIxMiwgNzcsIDY5LCA4MiwgNzksIDczLCA4NCwgNzMsIAotICAgIDE5NSwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzcsIDY1LCA4MiwgMjAzLCA4MywgNjcsIDgyLCA3MywgCi0gICAgODAsIDIxMiwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk2LCAKLSAgICA4NCwgNzksIDEyOCwgNjUsIDc2LCA2NywgNzIsIDY5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgNzYsIDY5LCAxOTgsIAotICAgIDcyLCA3MywgNzEsIDIwMCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgODMsIDczLCA3OCwgCi0gICAgNzIsIDY1LCA3NiwgMTkzLCA3OCwgODUsIDc3LCA2OSwgODIsIDczLCAxOTUsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCAKLSAgICA3OCwgMTk3LCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgNzIsIDg1LCA3OCwgNzEsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIAotICAgIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgNzIsIDg1LCA3NywgMTk0LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA2NiwgCi0gICAgNjUsIDgyLCAxOTQsIDcyLCA2NSwgMjAwLCA3MiwgNjUsIDEyOCwgNzgsIDc5LCA4MiwgODQsIDIwMCwgNzAsIDg1LCA3NiwgCi0gICAgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIDY1LCAKLSAgICAyMDQsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA2NSwgMTk5LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzIsIDY1LCAKLSAgICA3NiwgMTk4LCA3NiwgNzksIDc4LCAxOTksIDc3LCA2NSwgNzYsIDY1LCA4OSwgNjUsIDc2LCA2NSwgMjA1LCA2NSwgNjcsIAotICAgIDg1LCA4NCwgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgCi0gICAgNjksIDIxMCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgODMsIDg0LCAKLSAgICA4MiwgODUsIDY3LCAyMDMsIDcwLCA3MywgODYsIDY5LCAxMjgsIDc5LCA4MCwgNjksIDIwNiwgNzIsIDczLCA4MiwgNjUsIAotICAgIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgCisgICAgNjYsIDc5LCAyMDQsIDY4LCA3MywgNzEsIDczLCAyMTIsIDg0LCA2NSwgNzgsIDcxLCA4NSwgMjEyLCA3MCwgNzksIDgyLCAKKyAgICA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIAorICAgIDIxMSwgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDczLCA3MSwgNzgsIDg3LCA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgODQsIDczLCA3NywgNjksIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgCisgICAgNjUsIDc4LCA2NSwgODQsIDc5LCA3NiwgNzMsIDY1LCAyMDYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA3NiwgNzMsIDc4LCAKKyAgICA2OSwgNjUsIDIxMCwgNzEsIDgyLCA2OSwgNjksIDIwMywgNzcsIDg1LCA4MywgNzMsIDY3LCA2NSwgMjA0LCA3NiwgNzMsIAorICAgIDcxLCA2NSwgODQsIDg1LCA4MiwgMTk3LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCAxOTMsIDcwLCA3OSwgCisgICAgMjEwLCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgMTk1LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIAorICAgIDE5OSwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA4MiwgNjUsIDY4LCA3MywgCisgICAgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIDE5OCwgNjcsIDczLCA4MiwgNjcsIDc2LCAKKyAgICA2OSwgMTk2LCA4NCwgNjUsIDc3LCA3MywgMjA0LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgNjUsIDgyLCAKKyAgICA4MiwgNzksIDg3LCAxMjgsIDc2LCA2OSwgNzAsIDIxMiwgODYsIDY1LCAyMDEsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDgzLCAKKyAgICA4MSwgODUsIDY1LCA4MiwgMTk3LCA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgODMsIDczLCA3MSwgNzgsIDEyOCwgNjUsIAorICAgIDgyLCA4MiwgNzksIDIxNSwgNjUsIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA4NiwgCisgICAgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCAKKyAgICA4NCwgNjksIDgyLCAyMDYsIDY2LCA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA2NSwgMTI4LCA2NiwgNzYsIAorICAgIDY1LCA2NywgMjAzLCA4NywgNzIsIDczLCA4NCwgMTk3LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA4NSwgCisgICAgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgMjEwLCAxOTQsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCAKKyAgICAxOTMsIDczLCAxMjgsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgNjgsIDc5LCAyMTIsIDc5LCAxMjgsIDc1LCA2NSwgCisgICAgNzgsIDcxLCA4OCwgMjAxLCA3OSwgMTk4LCA3NSwgNzMsIDc1LCA2NSwgNzUsIDg1LCAyMDEsIDc3LCA2OSwgNzgsIDY4LCAKKyAgICAxOTcsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIDIwNiwgNzIsIDY5LCA2NSwgODYsIDIxNywgNzcsIDY1LCA4MiwgNzUsIAorICAgIDEyOCwgNzMsIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgCisgICAgNjksIDY5LCAyMDUsIDY3LCA3OSwgODAsIDg0LCA3MywgMTk1LCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4MiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIAorICAgIDIxMCwgODksIDY5LCAyMDAsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgCisgICAgNzYsIDczLCA2NSwgMjA2LCA4MCwgNzYsIDg1LCAyMTEsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCA2NSwgODIsIAorICAgIDIwMSwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDgzLCA4NCwgCisgICAgODIsIDc5LCA3NSwgNjksIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDEyOCwgNjYsIDc5LCAyMTYsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCAKKyAgICA3MywgNzYsIDE5NywgNjgsIDg1LCA4MCwgNzYsIDc5LCA4OSwgNjUsIDIwNiwgODQsIDg3LCA3OSwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgMjEzLCA4NiwgCisgICAgNzksIDY3LCA2NSwgNzYsIDczLCAxOTUsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA2NywgNzksIDc4LCAKKyAgICA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA3NywgNzMsIAorICAgIDY1LCAyMDcsIDg1LCAyMDgsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3OSwgCisgICAgNzUsIDEyOCwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgNzksIDg2LCA2OSwgMjEwLCA4NCwgODcsIDIwNywgCisgICAgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIDIxMSwgNzIsIDczLCA3MSwgMjAwLCA3MiwgNzcsIDc5LCA3OCwgMTk5LCAKKyAgICA3MywgNzgsIDY4LCA2OSwgMjE2LCA4MCwgNjUsIDcyLCA2NSwgODcsIDIwMCwgODQsIDcyLCA4MiwgNjksIDE5NywgNjgsIAorICAgIDc5LCA4NywgMjA2LCA3NiwgNzksIDIxNSwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzIsIDY1LCA3NiwgCisgICAgNzAsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgMjEyLCA3NywgNjksIDgyLCAKKyAgICA3OSwgNzMsIDg0LCA3MywgMTk1LCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3NywgNjUsIDgyLCAyMDMsIAorICAgIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgCisgICAgNjksIDQ1LCAxOTYsIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCAKKyAgICA3NiwgNjksIDE5OCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNzcsIDY1LCA3NiwgNjUsIAorICAgIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA3MywgNzgsIDcyLCA2NSwgNzYsIDE5MywgNzIsIDY1LCAxMjgsIDc4LCA4NSwgCisgICAgNzcsIDY5LCA4MiwgNzMsIDE5NSwgODIsIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCA2NSwgODIsIDEyOCwgCisgICAgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDc5LCA3OCwgMTk3LCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgNzIsIDg1LCAKKyAgICA3OCwgNzEsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgODUsIDc3LCAxOTQsIDY2LCA2NSwgODIsIDE5NCwgNzIsIAorICAgIDY1LCAyMDAsIDc4LCA3OSwgODIsIDg0LCAyMDAsIDcwLCA4NSwgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgCisgICAgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCA2NSwgMjA0LCA3NSwgNjUsIDEyOCwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgNzAsIDczLCA4NiwgNjksIDEyOCwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCAKKyAgICA3MiwgNjUsIDc2LCAxOTgsIDc2LCA3OSwgNzgsIDE5OSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIAorICAgIDc1LCA4NCwgODUsIDIxMCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCAyMTAsIDgwLCA2NSwgMTI4LCA4MCwgCisgICAgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY2LCA3MiwgNjUsIDczLCA3NSwgODMsIDg1LCA3NSwgMjAxLCA2OCwgNzksIDg1LCAKKyAgICA2NiwgNzYsIDY5LCA0NSwgODMsIDg0LCA4MiwgODUsIDY3LCAyMDMsIDc5LCA4MCwgNjksIDIwNiwgNzIsIDczLCA4MiwgNjUsIAorICAgIDcxLCA2NSwgNzgsIDE5MywgNzcsIDY1LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgCiAgICAgNzEsIDIxMywgNzQsIDg1LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDIxMSwgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNjYsIDY5LCA3OCwgNzEsIDY1LCA3NiwgMjAxLCA3MSwgCi0gICAgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgNzgsIDY5LCAKLSAgICA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDc0LCA2OSwgNjksIAotICAgIDIwNSwgODAsIDY1LCAxMjgsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDIwNSwgNjgsIDc5LCA4NCwgMjExLCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzQsIDY1LCA4NiwgNjUsIDc4LCA2OSwgODMsIDE5NywgNjcsIDg1LCA4MiwgCi0gICAgODMsIDczLCA4NiwgMTk3LCA3NywgNjUsIDEyOCwgNzksIDgyLCA3MywgODksIDE5MywgODMsIDEyOCwgODMsIDczLCA4OCwgCi0gICAgMTI4LCA4NywgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgODIsIDg1LCA3OCwgNzMsIDE5NSwgODksIDY1LCAKLSAgICAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNjUsIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc4LCA2NSwgMTI4LCAKLSAgICA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgOTAsIAotICAgIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgOTAsIDkwLCA4OSwgCi0gICAgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDEyOCwgCi0gICAgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIDEyOCwgOTAsIDkwLCAKLSAgICA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCA3OSwgMTI4LCAKLSAgICA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCA5MCwgOTAsIAotICAgIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA5MCwgCi0gICAgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgNjksIDgwLCAKLSAgICAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgOTAsIDkwLCAKLSAgICA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCA2NSwgMTI4LCAKLSAgICA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgNzQsIDEyOCwgOTAsIAotICAgIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgMjAyLCA5MCwgODcsIDY1LCA4MiwgCi0gICAgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgODUsIDY2LCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDIxMywgOTAsIDgzLCA3MiwgNjUsIDEyOCwgCi0gICAgOTAsIDgyLCA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAKLSAgICAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgCi0gICAgOTAsIDc0LCA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCAKLSAgICA4MCwgODAsIDY5LCA4MiwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDkwLCA3MywgNzgsIDc5LCA4MiwgMTI4LCA5MCwgNzMsIAotICAgIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgOTAsIDczLCA2OCwgCi0gICAgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIDkwLCA3MiwgODksIAotICAgIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgCi0gICAgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAxMjgsIDkwLCA3MiwgCi0gICAgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgODUsIDEyOCwgOTAsIAotICAgIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgOTAsIDcyLCA3OSwgCi0gICAgNzksIDEyOCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCAKLSAgICA2OSwgMTI4LCA5MCwgNzIsIDczLCA3NiwgMTI4LCA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCAKLSAgICA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIAotICAgIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgODgsIDEyOCwgOTAsIAotICAgIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCA5MCwgCi0gICAgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgMTI4LCAKLSAgICA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIAotICAgIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCA2NSwgCi0gICAgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgyLCA3NiwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCAKLSAgICA4OCwgMTI4LCA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAKLSAgICAxMjgsIDkwLCA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgCi0gICAgOTAsIDY1LCA1NSwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAotICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIAotICAgIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgCi0gICAgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgCi0gICAgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgCi0gICAgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgCi0gICAgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgCi0gICAgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgCi0gICAgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAKLSAgICAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgCi0gICAgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgCi0gICAgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAKLSAgICAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAxMjgsIDg5LCA4NSwgNjksIDgxLCAKLSAgICAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCA4OSwgODUsIDY1LCAKLSAgICA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgODUsIAotICAgIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgODksIDg1LCA0NSwgCi0gICAgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAKLSAgICA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgyLCA4OSwgMTI4LCA4OSwgCi0gICAgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIDc1LCAKLSAgICA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgNzksIAotICAgIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCA4OCwgCi0gICAgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgODksIDc5LCA4MiwgNzMsIAotICAgIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgNzksIDc5LCAxMjgsIDg5LCAKLSAgICA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAotICAgIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgNzksIAotICAgIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgCi0gICAgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCAKLSAgICA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgODQsIDEyOCwgODksIDczLCAKLSAgICA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgODAsIDEyOCwgODksIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgODgsIDEyOCwgODksIDczLCAKLSAgICA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgODksIDczLCA2OSwgMTI4LCAKLSAgICA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCA3MywgMTI4LCA4OSwgNzAsIAotICAgIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgCi0gICAgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAKLSAgICAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIAotICAgIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgCi0gICAgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCAKLSAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIAotICAgIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCAKLSAgICA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCAKLSAgICA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIAotICAgIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgCi0gICAgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCA3MiwgMTI4LCA4OSwgNjksIDY5LCA3MSwgMTI4LCA4OSwgCi0gICAgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgCi0gICAgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCA2NSwgODksIDY4LCAxMjgsIDg5LCA2NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgNzgsIDEyOCwgODksIDY1LCA4NywgMTI4LCAKLSAgICA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIAotICAgIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIAotICAgIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIAotICAgIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgCi0gICAgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgCi0gICAgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCAKLSAgICA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIAotICAgIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAKLSAgICAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAKLSAgICAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCAKLSAgICA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIAotICAgIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgCi0gICAgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgCi0gICAgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCAKLSAgICA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIAotICAgIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCAKLSAgICA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCAKLSAgICA4OCwgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIAotICAgIDIwNSwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIAotICAgIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIAotICAgIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCAKLSAgICA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCAKLSAgICA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIAotICAgIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIAotICAgIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIAotICAgIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIAotICAgIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIAotICAgIDEyOCwgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIAotICAgIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIAotICAgIDgwLCA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAotICAgIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgCi0gICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAKLSAgICAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCAKLSAgICA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCAKLSAgICA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCAKLSAgICA4NiwgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCAKLSAgICA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCAKLSAgICA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCAKLSAgICA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgODMsIDIxMiwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIAotICAgIDgzLCAxMjgsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAyMTEsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA2OCwgCi0gICAgMTI4LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgODIsIDY1LCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCA4NywgMTI4LCAKLSAgICA4NywgNzksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCA3OSwgODIsIAotICAgIDc2LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIDc5LCA4MiwgCi0gICAgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgODcsIDc5LCAKLSAgICA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCA2OCwgODMsIAotICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIDc5LCAyMDYsIAotICAgIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgNzgsIDIxMSwgCi0gICAgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCA4MywgNzksIAotICAgIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCA4NCwgNzIsIAotICAgIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3MywgMjA2LCA4NywgCi0gICAgNzMsIDgyLCA2OSwgMTk2LCA4NywgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIAotICAgIDE5OSwgODcsIDczLCA3OCwgNzUsIDEyOCwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgCi0gICAgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgCi0gICAgNzMsIDc4LCA2OCwgNzksIDg3LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCAKLSAgICA3OCwgMTI4LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIAotICAgIDczLCA3MSwgNzEsIDc2LCA2OSwgODMsIDEyOCwgODcsIDczLCA2OCwgODQsIDcyLCAxMjgsIDg3LCA3MywgNjgsIDY5LCA3OCwgCi0gICAgNzMsIDc4LCAxOTksIDg3LCA3MywgNjgsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIAotICAgIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgCi0gICAgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIAotICAgIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgCi0gICAgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAKLSAgICAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIDY1LCA3NiwgNjksIDEyOCwgODcsIDcyLCAxMjgsIDg3LCAKLSAgICA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIAotICAgIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIAotICAgIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIAotICAgIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA3MywgMTI4LCA4NywgNjksIDY5LCA3OCwgCisgICAgMjExLCA4OSwgNjUsIDEyOCwgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNjYsIDY5LCA3OCwgNzEsIDY1LCAKKyAgICA3NiwgMjAxLCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDgzLCA3MywgODgsIDEyOCwgNzgsIDY1LCAxMjgsIDc4LCAKKyAgICA2OSwgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAorICAgIDY4LCAyMTEsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NCwgNjksIDY5LCAyMDUsIDc2LCA2NSwgMTI4LCA3OCwgNjksIAorICAgIDg3LCAxOTMsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICAyMDAsIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA5MCwgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIAorICAgIDg5LCAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgCisgICAgMTI4LCA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCA5MCwgCisgICAgOTAsIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAKKyAgICAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCAKKyAgICA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIAorICAgIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgCisgICAgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgCisgICAgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAKKyAgICAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgMTI4LCAKKyAgICA5MCwgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCAyMDIsIDkwLCA4NywgNjUsIAorICAgIDgyLCA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgCisgICAgNjYsIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgMjEzLCA5MCwgODMsIDcyLCA2NSwgCisgICAgMTI4LCA5MCwgODIsIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgCisgICAgNzksIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgCisgICAgMTkzLCA5MCwgNzQsIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgCisgICAgNzMsIDgwLCA4MCwgNjksIDgyLCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCAKKyAgICA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIAorICAgIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCAKKyAgICA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIAorICAgIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCAKKyAgICA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIAorICAgIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgCisgICAgODQsIDY5LCAxMjgsIDkwLCA3MiwgNzMsIDc2LCAxMjgsIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgCisgICAgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCAKKyAgICA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCAKKyAgICA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIAorICAgIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIAorICAgIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIAorICAgIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAKKyAgICAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCAKKyAgICA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIAorICAgIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODIsIDc2LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgCisgICAgNzcsIDg4LCAxMjgsIDkwLCA2NSwgNzYsIDEyOCwgOTAsIDY1LCAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgCisgICAgNzMsIDIwNiwgOTAsIDY1LCA3MywgMTI4LCA5MCwgNjUsIDcyLCAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIAorICAgIDkwLCA2NSwgNjksIDcwLCAxMjgsIDkwLCA2NSwgNTUsIDEyOCwgOTAsIDE5MywgOTAsIDQ4LCA0OSwgNTQsIDcyLCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDU0LCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY5LCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAorICAgIDY2LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgCisgICAgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MywgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OCwgMTI4LCA5MCwgNDgsIAorICAgIDQ5LCA1MywgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NSwgMTI4LCA5MCwgCisgICAgNDgsIDQ5LCA1MywgMTI4LCA5MCwgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MCwgMTI4LCA5MCwgNDgsIDQ5LCA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA5MCwgNDgsIDQ4LCA1NiwgMTI4LCA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCA1NCwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUyLCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTEsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NywgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAxMjgsIDg5LCA4OSwgODIsIAorICAgIDg4LCAxMjgsIDg5LCA4OSwgODIsIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAxMjgsIDg5LCA4OSwgNjUsIAorICAgIDY1LCAxMjgsIDg5LCA4OSwgNjUsIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAxMjgsIDg5LCA4NywgNzksIAorICAgIDEyOCwgODksIDg3LCA3MywgNzMsIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAxMjgsIDg5LCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDg5LCA4NywgNjUsIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgODksIDg1LCA4NywgNzksIAorICAgIDgxLCAxMjgsIDg5LCA4NSwgODUsIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIDg1LCAxMjgsIDg5LCA4NSwgCisgICAgODUsIDEyOCwgODksIDg1LCA4NCwgMTI4LCA4OSwgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCA4OSwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA4OSwgODUsIDgyLCAxMjgsIDg5LCA4NSwgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCA4NSwgODAsIDEyOCwgODksIAorICAgIDg1LCA3OSwgODgsIDEyOCwgODksIDg1LCA3OSwgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIDEyOCwgODksIDg1LCA3OSwgCisgICAgNzcsIDEyOCwgODksIDg1LCA3OSwgMTI4LCA4OSwgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIDEyOCwgODksIDg1LCA3NCwgCisgICAgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgCisgICAgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIAorICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCisgICAgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIAorICAgIDg5LCA4MiwgODksIDEyOCwgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3MywgCisgICAgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCAKKyAgICA3MywgMjExLCA4OSwgODAsIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4OSwgNzksIAorICAgIDg5LCAxMjgsIDg5LCA3OSwgODgsIDEyOCwgODksIDc5LCA4NywgNjgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgCisgICAgODUsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAKKyAgICAxMjgsIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgCisgICAgODksIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCAKKyAgICA3MiwgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIAorICAgIDc5LCA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgCisgICAgNDUsIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgCisgICAgNjksIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgCisgICAgNzMsIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgCisgICAgNjksIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAKKyAgICAxMjgsIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCAKKyAgICA4OSwgNzMsIDEyOCwgODksIDcyLCA2OSwgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIAorICAgIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIAorICAgIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCAKKyAgICA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIAorICAgIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCAKKyAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKKyAgICA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgCisgICAgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgCisgICAgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCAKKyAgICA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgCisgICAgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgCisgICAgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCAKKyAgICA3MiwgMTI4LCA4OSwgNjksIDY5LCA3MSwgMTI4LCA4OSwgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCAKKyAgICA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCAKKyAgICA2NSwgODksIDY4LCAxMjgsIDg5LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIAorICAgIDY1LCA4NywgNzgsIDEyOCwgODksIDY1LCA4NywgMTI4LCA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIAorICAgIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgCisgICAgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgCisgICAgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgCisgICAgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAKKyAgICAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIAorICAgIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIAorICAgIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgCisgICAgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCAKKyAgICA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIAorICAgIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIAorICAgIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgCisgICAgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCAKKyAgICA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCAKKyAgICA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIAorICAgIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgCisgICAgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCAKKyAgICA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIAorICAgIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIAorICAgIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCA4OCwgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIAorICAgIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDIwNSwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgCisgICAgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIAorICAgIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgCisgICAgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgCisgICAgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgCisgICAgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIAorICAgIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgCisgICAgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgCisgICAgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgCisgICAgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIDgwLCA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgCisgICAgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCAKKyAgICA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIAorICAgIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIAorICAgIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCA4NiwgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIAorICAgIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIAorICAgIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIAorICAgIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgCisgICAgODMsIDIxMiwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAKKyAgICAyMTEsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA2OCwgMTI4LCA4NywgODIsIDY5LCA4MywgODQsIDc2LCA2OSwgODIsIAorICAgIDgzLCAxMjgsIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDg3LCA4MiwgCisgICAgNjUsIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCA4NywgNzksIDg3LCAKKyAgICAxMjgsIDg3LCA3OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIAorICAgIDc5LCA4MiwgNzYsIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgCisgICAgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCAKKyAgICA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIAorICAgIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgCisgICAgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCAKKyAgICA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIAorICAgIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIAorICAgIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA4NCwgNzIsIDczLCAKKyAgICAyMDYsIDg3LCA3MywgODIsIDY5LCAxOTYsIDg3LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgMTk5LCA4NywgNzMsIDc4LCA3NSwgMTI4LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIDczLCA3OCwgCisgICAgNzEsIDgzLCAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgNjgsIDg1LCAKKyAgICAxMjgsIDg3LCA3MywgNzgsIDY4LCA3OSwgODcsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCAKKyAgICA4NywgNzMsIDc4LCAxMjgsIDg3LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgCisgICAgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIDczLCA3MSwgNzEsIDc2LCA2OSwgODMsIDEyOCwgODcsIDczLCAKKyAgICA2OCwgODQsIDcyLCAxMjgsIDg3LCA3MywgNjgsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA3MywgNjgsIDY5LCA0NSwgNzIsIAorICAgIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCA3NSwgCisgICAgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIDY5LCAKKyAgICA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgNzIsIAorICAgIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCA2OSwgCisgICAgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIDY1LCAKKyAgICA3NiwgNjksIDEyOCwgODcsIDcyLCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAKKyAgICAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIAorICAgIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIDIxMiwgODcsIDY5LCA4MCwgMTI4LCA4NywgNjksIDc5LCAxMjgsIAorICAgIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIDEyOCwgODcsIDY5LCA3MywgNzEsIDcyLCAyMTIsIDg3LCA2OSwgCisgICAgNzMsIDY5LCA4MiwgODMsIDg0LCA4MiwgNjUsIDgzLCAyMTEsIDg3LCA2OSwgNzMsIDEyOCwgODcsIDY5LCA2OSwgNzgsIAogICAgIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDcxLCA2OSwgCiAgICAgMTI4LCA4NywgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjksIDY2LCAxMjgsIDg3LCA2OSwgNjUsIDgyLCAKICAgICAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIDg5LCAKQEAgLTI1NywyNTEgKzI1OCwyNTMgQEAKICAgICAxMjgsIDg3LCA2NSwgODMsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNzYsIDY1LCAxMjgsIAogICAgIDg3LCA2NSwgODMsIDc2LCAxOTMsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA2NSwgCiAgICAgNzYsIDc2LCA2NSwgMjA1LCA4NywgNjUsIDgyLCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODIsIDY1LCA3OCwgMTk5LCAKLSAgICA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIAotICAgIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDIwNCwgODcsIDY1LCAKLSAgICA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIAotICAgIDczLCA4MywgODQsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIAotICAgIDg3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgCi0gICAgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIAotICAgIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIAotICAgIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDc0LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCAKLSAgICA4NiwgODUsIDg1LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCAKLSAgICA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIAotICAgIDgzLCAxMjgsIDg2LCA4NCwgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIAotICAgIDU3LCA1NSwgMTI4LCA4NiwgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDU3LCA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDU3LCA0OCwgMTI4LCA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAKLSAgICAxMjgsIDg2LCA4MywgNTYsIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCAKLSAgICA4MywgNTYsIDUyLCAxMjgsIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIAotICAgIDgzLCA1NSwgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgCi0gICAgNTMsIDEyOCwgODYsIDgzLCA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgCi0gICAgODYsIDgzLCA1NSwgNDksIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCAKLSAgICA1NywgMTI4LCA4NiwgODMsIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCAKLSAgICA4NiwgODMsIDU0LCA1MywgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDU0LCA1MCwgMTI4LCA4NiwgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNTMsIDU3LCAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgCi0gICAgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAKLSAgICAxMjgsIDg2LCA4MywgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCAKLSAgICA4MywgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIAotICAgIDEyOCwgODYsIDgzLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIAotICAgIDgzLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgCi0gICAgNDgsIDEyOCwgODYsIDgzLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgCi0gICAgODMsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCAKLSAgICA1MiwgMTI4LCA4NiwgODMsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCAKLSAgICA4NiwgODMsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDU2LCAxMjgsIDg2LCA4MywgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCAKLSAgICA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAKLSAgICA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNDgsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTcsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTcsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTcsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU2LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTUsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTUsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTUsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCAKLSAgICA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTMsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1MiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCAKLSAgICA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTEsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1MCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCAKLSAgICA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIAotICAgIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA0OCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA0OCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCAKLSAgICA4OCwgMTI4LCA4NiwgNzksIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIAotICAgIDEyOCwgODYsIDc5LCA4NSwgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgMjExLCA4NiwgNzksIDgwLCAxMjgsIDg2LCAKLSAgICA3OSwgNzksIDczLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgMTI4LCA4NiwgNzksIDc2LCA4NSwgNzcsIAotICAgIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgNjUsIDc2LCA3NiwgCi0gICAgMTI4LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCA3OSwgMTI4LCA4NiwgNzksIDc2LCA2NSwgODAsIDg1LCAyMDMsIDg2LCAKLSAgICA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCA3MywgNjcsIDY5LCA3NiwgNjksIAotICAgIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgODksIDc5LCAxMjgsIDg2LCA3MywgCi0gICAgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCAKLSAgICA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIAotICAgIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgCi0gICAgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCAKLSAgICA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIAotICAgIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgCi0gICAgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCAKLSAgICA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIAotICAgIDY5LCA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTk3LCA4NiwgNzMsIDc4LCAxMjgsIAotICAgIDg2LCA3MywgNzYsIDc2LCA2NSwgNzEsIDY5LCAxMjgsIDg2LCA3MywgNzMsIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgODYsIDczLCA2OSwgODcsIDczLCA3OCwgMTk5LCA4NiwgNzMsIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA4NiwgNzMsIDY5LCAyMTIsIDg2LCA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCAKLSAgICA2OCwgNzQsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIAotICAgIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgCi0gICAgNzMsIDY3LCA4NCwgNzksIDgyLCAyMTcsIDg2LCA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzAsIDY1LCAKLSAgICAxMjgsIDg2LCA2OSwgODksIDkwLCAxMjgsIDg2LCA2OSwgODgsIDEyOCwgODYsIDY5LCA4NywgMTI4LCA4NiwgNjksIDIxNSwgCi0gICAgODYsIDY5LCA4NSwgODgsIDEyOCwgODYsIDY5LCA4NSwgNzcsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAKLSAgICAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4NiwgNjksIDgzLCA4NCwgNjUsIDEyOCwgODYsIDY5LCA4MywgODMsIAotICAgIDY5LCAyMDQsIDg2LCA2OSwgODIsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgODksIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKLSAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKLSAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKLSAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCAKLSAgICA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCAKLSAgICA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCAKLSAgICA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKLSAgICA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKLSAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDgzLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4NiwgNjksIDgyLCA3MSwgNjksIAotICAgIDEyOCwgODYsIDY5LCA4MiwgNjgsIDczLCA3MSwgODIsIDczLCA4MywgMTI4LCA4NiwgNjksIDgyLCAxMjgsIDg2LCA2OSwgCi0gICAgODAsIDEyOCwgODYsIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIDY5LCA3MiwgNzMsIDY3LCAKLSAgICA3NiwgNjksIDEyOCwgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgMTI4LCA4NiwgNjksIDE5NywgCi0gICAgODYsIDY5LCA2OCwgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgODYsIDY1LCA4NSwgMTI4LCA4NiwgCi0gICAgNjUsIDg0LCA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCA4NCwgNzgsIDY5LCA4MywgMjExLCAKLSAgICA4NiwgNjUsIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIDY1LCA4MiwgNzMsIDc1LCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCA4NCwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCAKLSAgICA2NSwgODIsIDczLCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIAotICAgIDg2LCA2NSwgODIsIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAKLSAgICAxMjgsIDg2LCA2NSwgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAKLSAgICAxMjgsIDg2LCA2NSwgNzQsIDEyOCwgODYsIDY1LCA3MywgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgMjAwLCA4NiwgCi0gICAgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA1MiwgNDgsIDEyOCwgODYsIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIAotICAgIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDg2LCA0OCwgNTEsIDUyLCAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgMTI4LCA4NiwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDEyOCwgODYsIDQ4LCAKLSAgICA1MSwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA4NiwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDEyOCwgODYsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgODYsIDQ4LCA1MCwgNTQsIDEyOCwgODYsIDQ4LCA1MCwgNTMsIDEyOCwgODYsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAxMjgsIDg2LCA0OCwgNTAsIDUwLCAxMjgsIDg2LCAKLSAgICA0OCwgNTAsIDQ5LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzUsIDEyOCwgODYsIAotICAgIDQ4LCA1MCwgNDgsIDc0LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzIsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNDgsIDcxLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjksIAotICAgIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY4LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgCi0gICAgNjYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAxMjgsIDg2LCA0OCwgNDksIDU3LCAKLSAgICAxMjgsIDg2LCA0OCwgNDksIDU2LCAxMjgsIDg2LCA0OCwgNDksIDU1LCAxMjgsIDg2LCA0OCwgNDksIDU0LCAxMjgsIDg2LCAKLSAgICA0OCwgNDksIDUzLCAxMjgsIDg2LCA0OCwgNDksIDUyLCAxMjgsIDg2LCA0OCwgNDksIDUxLCAxMjgsIDg2LCA0OCwgNDksIAotICAgIDUwLCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDEyOCwgODYsIDQ4LCA0OSwgCi0gICAgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODYsIDQ4LCA0OSwgNDgsIDEyOCwgODYsIDQ4LCA0OCwgNTcsIDEyOCwgODYsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA1NCwgMTI4LCA4NiwgNDgsIDQ4LCA1MywgMTI4LCA4NiwgNDgsIDQ4LCA1MiwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA1MSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDEyOCwgODYsIDQ4LCAKLSAgICA0OCwgNDksIDczLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzEsIDEyOCwgODYsIAotICAgIDQ4LCA0OCwgNDksIDcwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjgsIDEyOCwgCi0gICAgODYsIDQ4LCA0OCwgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDkwLCA4NSwgMTI4LCA4NSwgOTAsIDUxLCAxMjgsIDg1LCA5MCwgMTc5LCAKLSAgICA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4OSwgMTI4LCA4NSwgODcsIDg1LCAxMjgsIDg1LCA4NSwgODksIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4NSwgODUsIDg1LCAxMjgsIDg1LCA4NSwgODUsIDUxLCAxMjgsIDg1LCA4NSwgCi0gICAgODUsIDUwLCAxMjgsIDg1LCA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIDg1LCA4MywgODMsIDg1LCAKLSAgICA1MSwgMTI4LCA4NSwgODMsIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgODMsIDcyLCA4NSwgNzcsIAotICAgIDg4LCAxMjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAxMjgsIDg1LCA4MywgCi0gICAgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIDg1LCA4MywgCi0gICAgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIDg1LCA4MiwgCi0gICAgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgODIsIDg1LCAKLSAgICAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgODIsIDczLCAKLSAgICA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCA2NSwgMTI4LCAKLSAgICA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgCi0gICAgODQsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCAKLSAgICA3OSwgMjA2LCA4NSwgODAsIDgzLCA3MywgNjgsIDY5LCA0NSwgNjgsIDc5LCA4NywgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIAotICAgIDcyLCAyMTIsIDg1LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgCi0gICAgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIDEyOCwgODUsIDgwLCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIAotICAgIDE5OSwgODUsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDc4LCAxMjgsIDg1LCA3OCwgNzcsIDY1LCA4MiwgODIsIDczLCA2OSwgCi0gICAgMTk2LCA4NSwgNzgsIDc1LCA3OCwgNzksIDg3LCA3OCwgMTI4LCA4NSwgNzgsIDc1LCAxMjgsIDg1LCA3OCwgNzMsIDg2LCAKLSAgICA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NSwgNzgsIDczLCA4NCwgODksIDEyOCwgODUsIDc4LCA3MywgODQsIDEyOCwgODUsIAotICAgIDc4LCA3MywgMjEyLCA4NSwgNzgsIDczLCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3MywgNzksIDIwNiwgODUsIDc4LCA3MywgCi0gICAgNzAsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDczLCA2NywgNzksIDgyLCAyMDYsIDg1LCA3OCwgNjgsIDIwNywgODUsIDc4LCAKLSAgICA2OCwgNjksIDgyLCA4NCwgNzMsIDY5LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNzYsIDczLCA3OCwgMTk3LCA4NSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDY4LCA3OSwgODQsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDg1LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgMjEwLCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4NSwgNzgsIDY3LCAKLSAgICA2OSwgODIsIDg0LCA2NSwgNzMsIDc4LCA4NCwgMjE3LCA4NSwgNzgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgCi0gICAgNjgsIDEyOCwgODUsIDc4LCA2NSwgODAsIDEyOCwgODUsIDc4LCA2NSwgNzcsIDg1LCA4MywgNjksIDE5NiwgODUsIDc4LCAKLSAgICA2NSwgMTI4LCA4NSwgMjA2LCA4NSwgNzcsIDg1LCA3NywgMTI4LCA4NSwgNzcsIDg1LCAyMDUsIDg1LCA3NywgNjYsIDgyLCAKLSAgICA2OSwgNzYsIDc2LCA2NSwgMTI4LCA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgMTkzLCA4NSwgNzcsIDY2LCA3MywgNzgsIAotICAgIDEyOCwgODUsIDc1LCA4NSwgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgCi0gICAgODIsIDY1LCAxMjgsIDg1LCA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCAKLSAgICA3OCwgNzgsIDEyOCwgODUsIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIDczLCAxOTUsIAorICAgIDg3LCA2NSwgODEsIDcwLCA2NSwgMTI4LCA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgCisgICAgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCAKKyAgICA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIAorICAgIDg3LCA2NSwgNzYsIDIwNCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDczLCA4MywgODQsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIAorICAgIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIAorICAgIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIAorICAgIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgCisgICAgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIAorICAgIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIAorICAgIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgCisgICAgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDc0LCAxMjgsIDg2LCA4NywgCisgICAgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgCisgICAgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgCisgICAgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCAKKyAgICA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgMTI4LCA4NiwgODMsIDU3LCA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgODMsIDU3LCA0OCwgMTI4LCA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIAorICAgIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAxMjgsIDg2LCA4MywgNTYsIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCA4MywgNTYsIDUyLCAxMjgsIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIDgzLCA1NSwgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgNTMsIDEyOCwgODYsIDgzLCA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIAorICAgIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgODYsIDgzLCA1NSwgNDksIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NywgMTI4LCA4NiwgODMsIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCA4NiwgODMsIDU0LCA1MywgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIDU0LCA1MCwgMTI4LCA4NiwgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCAKKyAgICA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDU3LCAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgCisgICAgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCAKKyAgICA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgCisgICAgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIAorICAgIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgCisgICAgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgCisgICAgMjExLCA4NiwgNzksIDgwLCAxMjgsIDg2LCA3OSwgNzksIDczLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgCisgICAgMTI4LCA4NiwgNzksIDc2LCA4NSwgNzcsIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCAKKyAgICA3NiwgNjksIDg5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCA3OSwgMTI4LCA4NiwgNzksIAorICAgIDc2LCA2NSwgODAsIDg1LCAyMDMsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgODYsIDc5LCA3MywgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY4LCAKKyAgICAxMjgsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgCisgICAgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OSwgNzksIDEyOCwgODYsIDczLCA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgCisgICAgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIAorICAgIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDg5LCA2NSwgMTI4LCA4NiwgCisgICAgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCAxOTMsIDg2LCA3MywgODIsIDczLCAKKyAgICA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIAorICAgIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCA3OSwgNzYsIDczLCA3OCwgMTI4LCA4NiwgCisgICAgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTAsIAorICAgIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgMjEwLCA4NiwgCisgICAgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxOTcsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIDY1LCAKKyAgICA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCA4NiwgNzMsIDY5LCA4NywgNzMsIAorICAgIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIDg0LCAxMjgsIDg2LCA3MywgCisgICAgNjksIDIxMiwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgNDUsIDUwLCAKKyAgICAxMjgsIDg2LCA3MywgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIAorICAgIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCA3MywgNjcsIDg0LCA3OSwgCisgICAgODIsIDIxNywgODYsIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MCwgNjUsIDEyOCwgODYsIDY5LCAKKyAgICA4OSwgOTAsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCA4NiwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIDEyOCwgODYsIAorICAgIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgNjksIDIwNCwgCisgICAgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCisgICAgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCisgICAgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgCisgICAgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCisgICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCA4MiwgODMsIDczLCAKKyAgICA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgODIsIDEyOCwgODYsIDY5LCA4MCwgMTI4LCA4NiwgCisgICAgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIDc2LCA2OSwgMTI4LCAKKyAgICA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCA4NiwgNjksIDY4LCAKKyAgICA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODYsIAorICAgIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg1LCAxMjgsIDg2LCA2NSwgODQsIAorICAgIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgCisgICAgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCAKKyAgICA2NSwgODIsIDczLCA2NSwgNzgsIDg0LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIAorICAgIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgCisgICAgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCAKKyAgICA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIAorICAgIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA3NCwgCisgICAgMTI4LCA4NiwgNjUsIDczLCAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCAyMDAsIDg2LCA2NSwgNjUsIDg2LCA4NSwgCisgICAgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgMTI4LCA4NiwgCisgICAgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgODYsIDQ4LCAKKyAgICA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgODYsIDQ4LCA1MSwgNTIsIAorICAgIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCA0OCwgNTEsIDUwLCAxMjgsIAorICAgIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCAxMjgsIDg2LCAKKyAgICA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCA1NSwgMTI4LCA4NiwgNDgsIAorICAgIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgCisgICAgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIDQ4LCA1MCwgNDksIDEyOCwgCisgICAgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzQsIAorICAgIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgCisgICAgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgMTI4LCA4NiwgNDgsIDUwLCAKKyAgICA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NiwgMTI4LCA4NiwgNDgsIAorICAgIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIDEyOCwgODYsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY2LCAxMjgsIDg2LCAKKyAgICA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjcsIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzMsIDEyOCwgCisgICAgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzAsIAorICAgIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgCisgICAgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIDg1LCA4OSwgNjUsIDc4LCAKKyAgICA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCA4NywgODUsIDEyOCwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgODUsIDg1LCA4NSwgNTAsIDEyOCwgODUsIAorICAgIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCA4MywgODUsIDUxLCAxMjgsIDg1LCA4MywgCisgICAgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDg1LCA3NywgODgsIDEyOCwgODUsIDgzLCAKKyAgICA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIAorICAgIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgODUsIDgzLCA2OSwgNDUsIDQ5LCAxMjgsIAorICAgIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIAorICAgIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIAorICAgIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgCisgICAgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgCisgICAgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCAKKyAgICA4NywgNjUsIDgyLCA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgCisgICAgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCAKKyAgICA4MCwgODMsIDczLCA2OCwgNjksIDQ1LCA2OCwgNzksIDg3LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgNzIsIDIxMiwgODUsIAorICAgIDgwLCA4MCwgNjksIDgyLCAxMjgsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCA3MiwgNzcsIDY1LCA3OCwgCisgICAgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4NSwgNzksIDc4LCAKKyAgICAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzUsIAorICAgIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzUsIDEyOCwgODUsIDc4LCA3MywgODYsIDY5LCA4MiwgODMsIDY1LCAKKyAgICAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgNzgsIDczLCAyMTIsIDg1LCAKKyAgICA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCA3MCwgNzksIDgyLCA3NywgCisgICAgMTI4LCA4NSwgNzgsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzMsIDY3LCA3OSwgODIsIDIwNiwgODUsIDc4LCAKKyAgICA2OCwgMjA3LCA4NSwgNzgsIDY4LCA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIAorICAgIDc4LCAxOTcsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgCisgICAgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAKKyAgICAxOTMsIDg1LCA3OCwgNjcsIDY5LCA4MiwgODQsIDY1LCA3MywgNzgsIDg0LCAyMTcsIDg1LCA3OCwgNjYsIDc2LCA2OSwgNzgsIAorICAgIDY4LCA2OSwgMTk2LCA4NSwgNzgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgNjgsIDEyOCwgODUsIDc4LCA2NSwgCisgICAgODAsIDEyOCwgODUsIDc4LCA2NSwgNzcsIDg1LCA4MywgNjksIDE5NiwgODUsIDc4LCA2NSwgMTI4LCA4NSwgMjA2LCA4NSwgCisgICAgNzcsIDg1LCA3NywgMTI4LCA4NSwgNzcsIDg1LCAyMDUsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgMTkzLCA4NSwgNzcsIDY2LCA3MywgNzgsIDEyOCwgODUsIDc1LCA4NSwgCisgICAgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDg1LCAKKyAgICA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCA3OCwgNzgsIDEyOCwgODUsIAorICAgIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MiwgNjgsIDEyOCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCiAgICAgODUsIDY5LCA4OSwgMTI4LCA4NSwgNjksIDczLCAxMjgsIDg1LCA2OSwgNjksIDEyOCwgODUsIDY5LCA2NSwgMTI4LCA4NSwgCiAgICAgNjgsIDg1LCA3MSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCAKICAgICA4NSwgNjgsIDY1LCA2NSwgODQsIDEyOCwgODUsIDY4LCAxMjgsIDg1LCAxOTYsIDg1LCA2NywgMTI4LCA4NSwgNjYsIDg1LCAKQEAgLTUzOCw2OCArNTQxLDcxIEBACiAgICAgODcsIDc5LCA0NSwgNjksIDIwNSwgODQsIDg3LCA3OSwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4NCwgODcsIDczLCAKICAgICA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCA4NCwgODcsIDczLCA3MywgCiAgICAgMTI4LCA4NCwgODcsIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDc5LCAxMjgsIDg0LCAKLSAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgCi0gICAgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCAKLSAgICA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCi0gICAgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCAKLSAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgCi0gICAgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCAKLSAgICA4NCwgODcsIDY5LCA3NiwgODYsIDE5NywgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDg0LCA4NywgNjksIAotICAgIDc2LCA3MCwgODQsIDcyLCAxMjgsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgCi0gICAgMTI4LCA4NCwgODYsIDgyLCA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCAKLSAgICA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg1LCA4NCwgODQsIAotICAgIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgMTI4LCA4NCwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAxMjgsIDg0LCAKLSAgICA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIAotICAgIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgODQsIDg1LCA4MiwgCi0gICAgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDc1LCA2OSwgODksIDEyOCwgODQsIDg1LCA4MiwgNjYsIDY1LCA3OCwgMTI4LCAKLSAgICA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCA3OSwgODQsIAotICAgIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIDEyOCwgODQsIAotICAgIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgCi0gICAgODQsIDg1LCAyMDUsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAKLSAgICAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCAKLSAgICA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NiwgMTI4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIAotICAgIDgwLCAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIAotICAgIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgMTI4LCA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCAKLSAgICA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgODQsIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIAotICAgIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCA4MywgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgCi0gICAgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCAKLSAgICA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIAotICAgIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgCi0gICAgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIAotICAgIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY2LCAxMjgsIAotICAgIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgCi0gICAgNjUsIDEyOCwgODQsIDgzLCA3OSwgMjE0LCA4NCwgODMsIDczLCA4NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAKLSAgICAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIAotICAgIDc5LCA3OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgCi0gICAgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgNjksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCAKLSAgICA4MywgNzIsIDY1LCAxOTQsIDg0LCA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIAotICAgIDY5LCA2OSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgCi0gICAgNjUsIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCAKLSAgICA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIAotICAgIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgCi0gICAgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCAKLSAgICA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NCwgCi0gICAgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MiwgMTI4LCAKLSAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDksIDEyOCwgODQsIAotICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTYsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTMsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUyLCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTAsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgCi0gICAgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCAKLSAgICA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgCi0gICAgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAotICAgIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKLSAgICA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAotICAgIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAKKyAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDIwNywgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgCisgICAgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgCisgICAgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgCisgICAgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCAKKyAgICA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIAorICAgIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCA3OCwgODQsIDczLCA2OSwgODQsIDcyLCA4MywgMTI4LCA4NCwgCisgICAgODcsIDY5LCA3OCwgODQsIDczLCA2OSwgODQsIDcyLCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDQ1LCA4NCwgNzIsIAorICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCAKKyAgICAxOTcsIDg0LCA4NywgNjksIDc2LCA3MCwgODQsIDcyLCA4MywgMTI4LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgCisgICAgMTI4LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgCisgICAgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCA2OSwgNjgsIDc5LCAKKyAgICAxMjgsIDg0LCA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg1LCAKKyAgICA4NCwgODQsIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgCisgICAgMTI4LCA4NCwgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAxMjgsIAorICAgIDg0LCA4NSwgODIsIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgCisgICAgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDc1LCA2OSwgODksIDEyOCwgODQsIDg1LCA4MiwgNjYsIDY1LCAKKyAgICA3OCwgMTI4LCA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCAKKyAgICA3OSwgODQsIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIAorICAgIDEyOCwgODQsIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjYsIDc2LCA2OSwgMjEwLCA4NCwgCisgICAgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCA4NCwgODUsIDIwNSwgODQsIDg1LCA3NiwgNzMsIDgwLCAKKyAgICAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIAorICAgIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY2LCAxMjgsIAorICAgIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgCisgICAgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCAKKyAgICA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIAorICAgIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgCisgICAgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCAKKyAgICA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIAorICAgIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgCisgICAgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCAKKyAgICA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIAorICAgIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgCisgICAgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgCisgICAgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjYsIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCAKKyAgICA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIDc5LCAyMTQsIDg0LCAKKyAgICA4MywgNzMsIDg1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgCisgICAgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgNzksIDc5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCAKKyAgICA2OSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIAorICAgIDY5LCA2OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDE5NCwgODQsIDgzLCA3MiwgCisgICAgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgNjksIDY5LCA2NiwgMTI4LCA4NCwgODMsIDY1LCAKKyAgICA2OCwgNzMsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCA2NSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjUsIAorICAgIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgODQsIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgCisgICAgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIDc3LCA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIAorICAgIDc3LCA4MCwgNDUsIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgCisgICAgNDUsIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUzLCAKKyAgICAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUyLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUxLCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDgsIDEyOCwgCisgICAgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU3LCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTUsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MywgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTIsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUxLCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNDksIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCA4NCwgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCAKKyAgICA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgCisgICAgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIAorICAgIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKKyAgICA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIAorICAgIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgCisgICAgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIAogICAgIDEyOCwgODQsIDgyLCA3OSwgNzUsIDg1LCA4NCwgNjUsIDgzLCA4NCwgMjAxLCA4NCwgODIsIDc5LCA2OSwgOTAsIDY5LCA3OCwgCiAgICAgNzMsIDY1LCAyMDYsIDg0LCA4MiwgNzMsIDg1LCA3NywgODAsIDcyLCAxMjgsIDg0LCA4MiwgNzMsIDg0LCA3OSwgMjExLCAKICAgICA4NCwgODIsIDczLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgODMsIDczLCA3NywgCkBAIC02ODgsMjQ5ICs2OTQsMjUwIEBACiAgICAgMjAwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA3MiwgODIsIDY5LCAKICAgICA2OSwgNDUsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgCiAgICAgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAKLSAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2NywgNzMsIAotICAgIDgyLCA2NywgNzYsIDE5NywgODQsIDcyLCA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgCi0gICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCAKLSAgICA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgCi0gICAgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgCi0gICAgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgNzksIDc3LCAxMjgsIDg0LCA3MiwgNzksIDc0LCAxMjgsIDg0LCAKLSAgICA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIAotICAgIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCAKLSAgICA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIAotICAgIDY4LCA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCA0NSwgODMsIDg0LCA2NSwgCi0gICAgNzEsIDE5NywgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDc4LCAKLSAgICA3NSwgNzMsIDc4LCAxOTksIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIAotICAgIDczLCA2OSwgODUsIDg0LCAyMDAsIDg0LCA3MiwgNzMsIDY3LCAyMDMsIDg0LCA3MiwgNzMsIDY1LCA2NiwgMTI4LCA4NCwgCi0gICAgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCAKLSAgICA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIAotICAgIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgCi0gICAgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDc3LCA2OSwgODQsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgNzcsIDc5LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgCi0gICAgODIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDgzLCA3NywgNzksIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIAotICAgIDg0LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCA2OSwgNjUsIDEyOCwgODQsIDcyLCAxOTcsIAotICAgIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgCi0gICAgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIAotICAgIDY1LCA3NCwgMTI4LCA4NCwgNzIsIDY1LCAyMDEsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgCi0gICAgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKLSAgICA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIAotICAgIDgyLCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgCi0gICAgNzgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MSwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIAotICAgIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgCi0gICAgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCAKLSAgICA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIAotICAgIDg0LCAyMDAsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgCi0gICAgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCAKLSAgICA2OSwgODIsIDY1LCAxMjgsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIAotICAgIDIwNiwgODQsIDY5LCA4MywgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgCi0gICAgNjksIDgwLCAxMjgsIDg0LCA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCAKLSAgICA3OCwgMjEzLCA4NCwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIAotICAgIDY5LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCAxOTcsIDg0LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIAotICAgIDY5LCA3OCwgNzgsIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgCi0gICAgNjksIDc2LCA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCAKLSAgICA2OSwgNzYsIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIAotICAgIDY5LCA3NiwgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIAotICAgIDg0LCA2OSwgNzYsIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDc1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgCi0gICAgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCAKLSAgICAyMDAsIDg0LCA2OSwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCAKLSAgICA2OSwgNjgsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIAotICAgIDgwLCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKLSAgICA3MiwgNjUsIDc4LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgCi0gICAgNjYsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCAKLSAgICA4NCwgNjksIDQ1LCA4NSwgMTI4LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgCi0gICAgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCAKLSAgICA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAKLSAgICAxMjgsIDg0LCA2NSwgODgsIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIAotICAgIDg3LCA2NSwgMTI4LCA4NCwgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgCi0gICAgNjUsIDg2LCAxMjgsIDg0LCA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgODUsIDc3LCAKLSAgICAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCA4NywgNjksIAotICAgIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIDY1LCA4MywgCi0gICAgMTI4LCA4NCwgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCAKLSAgICA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODIsIDcxLCA2OSwgODQsIDEyOCwgODQsIDY1LCA4MSwgCi0gICAgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgCi0gICAgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIDY5LCAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIAotICAgIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgMjEyLCA4NCwgCi0gICAgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCA2NiwgNjUsIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCAKLSAgICA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIAotICAgIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgCi0gICAgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzUsIDgyLCAyMDEsIDg0LCAKLSAgICA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIDY1LCA3NSwgNTIsIAotICAgIDEyOCwgODQsIDY1LCA3NSwgMTgwLCA4NCwgNjUsIDc1LCAxMjgsIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIAotICAgIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgCi0gICAgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCAKLSAgICA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzksIAotICAgIDEyOCwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgNjYsIDgzLCAKLSAgICAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCAKLSAgICA2NSwgMTk0LCA4NCwgNjUsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIAotICAgIDY1LCA3NywgMTI4LCA4NCwgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgCi0gICAgNjUsIDcwLCAxMjgsIDg0LCA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCAKLSAgICA1MCwgMTI4LCA4NCwgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCAKLSAgICA4NCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIAotICAgIDg0LCA0OCwgNTEsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAKLSAgICAxMjgsIDg0LCA0OCwgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDg0LCA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgCi0gICAgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgCi0gICAgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgODQsIDQ4LCA0OCwgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIAotICAgIDgzLCA5MCwgOTAsIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgCi0gICAgMTI4LCA4MywgOTAsIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgCi0gICAgMTI4LCA4MywgOTAsIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIAotICAgIDgzLCA4OSwgODQsIDEyOCwgODMsIDg5LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgCi0gICAgODIsIDc3LCA2NSwgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCAKLSAgICA3OCwgNzEsIDY5LCAxMjgsIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIAotICAgIDEyOCwgODMsIDg5LCA3OSwgODUsIDg3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgCi0gICAgODksIDc4LCA2OCwgNjksIDgzLCA3NywgNzksIDIxMSwgODMsIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIAotICAgIDIxMSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3OSwgNzEsIDg1LCA2OSwgMTI4LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAKLSAgICAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIAotICAgIDg0LCA4MiwgODksIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDgzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAotICAgIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUyLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKLSAgICA3OSwgNzYsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNTEsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTAsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIAotICAgIDc5LCA3NiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgCi0gICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCi0gICAgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIAotICAgIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAKLSAgICAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCAKLSAgICA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIAotICAgIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIAotICAgIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgCi0gICAgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIAotICAgIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgCi0gICAgODQsIDgyLCAxOTMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCAKLSAgICA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgODMsIDg1LCA4MiwgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgCi0gICAgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIAotICAgIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIAotICAgIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgCi0gICAgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCAKLSAgICA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIAotICAgIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCAKLSAgICA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCAKLSAgICA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIAotICAgIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgCi0gICAgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCAKLSAgICA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIAotICAgIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIAotICAgIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgCi0gICAgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCAKLSAgICA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgODMsIDg1LCA3MywgMjEyLCA4MywgODUsIAotICAgIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIAotICAgIDgzLCA4NSwgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg1LCA2NywgNzUsIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCAKLSAgICAyMDMsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgCi0gICAgMjExLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCAKLSAgICA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCAKLSAgICA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIAotICAgIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCAKLSAgICA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgCi0gICAgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgCi0gICAgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIAotICAgIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAKLSAgICAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgNzcsIDEyOCwgODMsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDgzLCAKLSAgICA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCA2NiwgMTI4LCA4MywgODUsIAotICAgIDY1LCAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIAotICAgIDg5LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA3MywgMjA3LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgCi0gICAgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgODMsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTcsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU2LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTQsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUzLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTEsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDksIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCi0gICAgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzMsIDc1LCA2OSwgODQsIAotICAgIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA2OCwgCi0gICAgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAKLSAgICAxOTYsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIAotICAgIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgCi0gICAgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCA4MywgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgCi0gICAgODQsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgCi0gICAgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCAKLSAgICA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIAotICAgIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDc5LCA2NywgMjAzLCA4MywgODQsIDczLCA4MiwgODIsIDg1LCAyMDgsIDgzLCAKLSAgICA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIAotICAgIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODQsIDczLCA2NywgCi0gICAgMjAzLCA4MywgODQsIDY5LCA4MiwgNjksIDc5LCAxMjgsIDgzLCA4NCwgNjksIDgwLCAxMjgsIDgzLCA4NCwgNjksIDc4LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgNzcsIAotICAgIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgCi0gICAgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCAKLSAgICA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA4MiwgODIsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIAotICAgIDY1LCAyMTAsIDgzLCA4NCwgNjUsIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgCi0gICAgNjUsIDgyLCAxOTYsIDgzLCA4NCwgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCAKLSAgICA3NywgODAsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3MCwgNzAsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNzAsIDE5OCwgODMsIDg0LCA2NSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIAotICAgIDc5LCAxMjgsIDgzLCA4NCwgNTAsIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIAotICAgIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgCi0gICAgODksIDEyOCwgODMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDgzLCA4NSwgODUsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgCi0gICAgODMsIDgzLCA4NSwgODAsIDEyOCwgODMsIDgzLCA3OSwgODgsIDEyOCwgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCAKLSAgICA3OSwgODAsIDEyOCwgODMsIDgzLCA3OSwgNzksIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCA4OCwgMTI4LCAKLSAgICA4MywgODMsIDczLCA4NCwgMTI4LCA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA3MywgMTI4LCA4MywgODMsIAotICAgIDczLCA2OSwgODgsIDEyOCwgODMsIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgCi0gICAgNzMsIDEyOCwgODMsIDgzLCA3MiwgNzMsIDc4LCAxMjgsIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAKLSAgICAxMjgsIDgzLCA4MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDg1LCAxMjgsIDgzLCA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCAKLSAgICA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MywgCi0gICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgNjUsIAotICAgIDEyOCwgODMsIDgzLCA2NSwgNzMsIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgODMsIAotICAgIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgCi0gICAgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgNjksIDY4LCAKKyAgICA0NSwgNzYsIDY5LCA3MSwgNzEsIDY5LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIAorICAgIDY5LCA2OSwgNDUsIDE5NiwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDg0LCA3MiwgCisgICAgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA4NCwgNzIsIDc5LCAKKyAgICA4NSwgODMsIDY1LCA3OCwgNjgsIDIxMSwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDg0LCA3MiwgNzksIAorICAgIDg1LCA4MywgNjUsIDc4LCAxOTYsIDg0LCA3MiwgNzksIDg1LCA3MSwgNzIsIDIxMiwgODQsIDcyLCA3OSwgODUsIDEyOCwgCisgICAgODQsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDg0LCA3MiwgNzksIDgyLCAyMDYsIDg0LCA3MiwgNzksIDc4LCA3MSwgMTI4LCAKKyAgICA4NCwgNzIsIDc5LCA3NywgMTI4LCA4NCwgNzIsIDc5LCA3NCwgMTI4LCA4NCwgNzIsIDc5LCA2NSwgMTI4LCA4NCwgNzIsIAorICAgIDIwNywgODQsIDcyLCA3MywgODUsIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDczLCA4NCwgNjUsIDEyOCwgODQsIDcyLCA3MywgCisgICAgODIsIDg0LCA4OSwgNDUsIDgzLCA2OSwgNjcsIDc5LCA3OCwgMTk2LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgNzksIAorICAgIDc4LCA2OSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDIxNywgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCAyMDYsIDg0LCA3MiwgNzMsIDgyLCA2OCwgODMsIDEyOCwgODQsIAorICAgIDcyLCA3MywgODIsIDY4LCAyMTEsIDg0LCA3MiwgNzMsIDgyLCA2OCwgNDUsIDgzLCA4NCwgNjUsIDcxLCAxOTcsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA2OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgMTk2LCA4NCwgNzIsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgCisgICAgMjAwLCA4NCwgNzIsIDczLCA2NywgMjAzLCA4NCwgNzIsIDczLCA2NSwgNjYsIDEyOCwgODQsIDcyLCA2OSwgODksIDEyOCwgCisgICAgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgODQsIDY1LCAKKyAgICAxMjgsIDg0LCA3MiwgNjksIDg0LCAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgNjksIAorICAgIDgzLCA2OSwgNzksIDgzLCAxMjgsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgMjExLCA4NCwgCisgICAgNzIsIDY5LCA4MiwgNzcsIDc5LCA3NywgNjksIDg0LCA2OSwgODIsIDEyOCwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNjgsIAorICAgIDg5LCA3OCwgNjUsIDc3LCA3MywgNjcsIDEyOCwgODQsIDcyLCA2OSwgODIsIDY5LCA3MCwgNzksIDgyLCA2OSwgMTI4LCA4NCwgCisgICAgNzIsIDY5LCA4MiwgMTk3LCA4NCwgNzIsIDY5LCAyMDYsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA4MywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA3NywgMTkzLCA4NCwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCAyMDAsIDg0LCA3MiwgNjksIDY1LCAxMjgsIDg0LCA3MiwgMTk3LCA4NCwgNzIsIDY1LCA4NywgMTI4LCAKKyAgICA4NCwgNzIsIDY1LCA3OCwgODQsIDcyLCA2NSwgNzUsIDcyLCA2NSwgODQsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAyMDYsIDg0LCA3MiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDg0LCA3MiwgNjUsIDIwNCwgODQsIDcyLCA2NSwgNzQsIDEyOCwgODQsIDcyLCAKKyAgICA2NSwgMjAxLCA4NCwgNzIsIDY1LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgMTkzLCA4NCwgNzIsIAorICAgIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCA4OCwgODQsIDEyOCwgCisgICAgODQsIDY5LCA4OCwgMjEyLCA4NCwgNjksIDg4LCAxMjgsIDg0LCA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCAKKyAgICA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgCisgICAgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAKKyAgICAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIAorICAgIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgCisgICAgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCAKKyAgICA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgCisgICAgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIAorICAgIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgCisgICAgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCAKKyAgICA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCA2OSwgMTI4LCA4NCwgNjksIAorICAgIDc4LCA4MywgMTk3LCA4NCwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDc4LCAyMTEsIDg0LCA2OSwgNzgsIDc4LCA3MywgCisgICAgMjExLCA4NCwgNjksIDc4LCA3MSwgMTk3LCA4NCwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCAKKyAgICA4NCwgNjksIDc4LCAxMjgsIDg0LCA2OSwgMjA2LCA4NCwgNjksIDc3LCA4MCwgODUsIDIxMSwgODQsIDY5LCA3NiwgODUsIAorICAgIDEyOCwgODQsIDY5LCA3NiwgNzksIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4NCwgNjksIDc2LCA3MywgCisgICAgODMsIDcyLCAxOTMsIDg0LCA2OSwgNzYsIDY5LCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCAKKyAgICA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNjksIAorICAgIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDE5NywgODQsIDY5LCA3NiwgNjksIDczLCA2NSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDIwMCwgODQsIDY5LCA3NSwgMTI4LCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCAKKyAgICA3MSwgNjksIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgMjAwLCA4NCwgNjksIAorICAgIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKKyAgICA4MCwgNzksIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgCisgICAgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIAorICAgIDEyOCwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgCisgICAgNjksIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCAKKyAgICA3MiwgNjksIDEyOCwgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAKKyAgICAxMjgsIDg0LCA2NSwgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIAorICAgIDY1LCA4NywgMTI4LCA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgCisgICAgNjUsIDIxNCwgODQsIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDg1LCA3NywgMTI4LCA4NCwgNjUsIDIxMywgCisgICAgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCAKKyAgICA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAxMjgsIDg0LCA2NSwgODMsIDEyOCwgODQsIDY1LCA4MiwgODUsIAorICAgIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgCisgICAgMTI4LCA4NCwgNjUsIDgyLCA3MSwgNjksIDg0LCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAKKyAgICAxMjgsIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCAKKyAgICA2OSwgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIAorICAgIDg0LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIDc4LCA2NSwgCisgICAgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCAKKyAgICA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDg0LCA2NSwgCisgICAgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgODUsIDgzLCAKKyAgICAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDE4MCwgODQsIDY1LCAKKyAgICA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCA4NCwgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgCisgICAgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIDg0LCA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIAorICAgIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgNzEsIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgCisgICAgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc5LCAxMjgsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA2NSwgCisgICAgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgODUsIDc2LCAKKyAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA4NCwgNjUsIDY2LCA4MywgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIAorICAgIDY1LCA2NiwgNzYsIDE5NywgODQsIDY1LCA2NiwgMTI4LCA4NCwgNjUsIDE5NCwgODQsIDY1LCA2NSwgODMsIDcyLCA2NSwgCisgICAgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA2NSwgNzYsIDg1LCAKKyAgICA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIDY1LCA3MCwgMTI4LCA4NCwgNjUsIDUwLCAxMjgsIDg0LCAKKyAgICA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDY1LCA0NSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNTQsIDEyOCwgODQsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgCisgICAgNTEsIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgMTI4LCA4NCwgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIDUwLCA1NywgMTI4LCA4NCwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA4NCwgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgMTI4LCA4NCwgNDgsIDUwLCA1MywgMTI4LCA4NCwgNDgsIAorICAgIDUwLCA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgNDgsIDUwLCA1MCwgMTI4LCA4NCwgNDgsIDUwLCA0OSwgCisgICAgMTI4LCA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCA1NywgMTI4LCA4NCwgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDEyOCwgODQsIDQ4LCAKKyAgICA0OSwgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIDQ4LCA0OSwgNTEsIDEyOCwgODQsIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgNDksIDQ5LCAxMjgsIDg0LCA0OCwgNDksIDQ4LCAxMjgsIAorICAgIDg0LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgCisgICAgODQsIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAxMjgsIDg0LCAKKyAgICA0OCwgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIDg0LCA0OCwgNDgsIDUyLCAxMjgsIDg0LCA0OCwgNDgsIAorICAgIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgNDgsIDQ4LCA1MCwgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCA4MywgOTAsIDkwLCAxMjgsIDgzLCA5MCwgODcsIDcxLCAKKyAgICAxMjgsIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIDEyOCwgODMsIDkwLCA3OSwgMTI4LCA4MywgOTAsIDczLCAKKyAgICAxMjgsIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIDEyOCwgODMsIDkwLCA2NSwgNjUsIDEyOCwgODMsIDkwLCAKKyAgICA2NSwgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCA4MywgODksIDg0LCAxMjgsIDgzLCA4OSwgODMsIDg0LCAKKyAgICA2OSwgMjA1LCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIAorICAgIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIDgyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCA3MywgCisgICAgNjUsIDE5NSwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgCisgICAgODMsIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCAKKyAgICA4OSwgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzksIDcxLCA4NSwgCisgICAgNjksIDEyOCwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCAKKyAgICA4OSwgNzgsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDg5LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIAorICAgIDgyLCA3MywgMTk1LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA4MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDUzLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgMTI4LCA4MywgODksIAorICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTYsIDEyOCwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAorICAgIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDUyLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDQ1LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTAsIAorICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTAsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUwLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MCwgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCisgICAgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA0OSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA0NSwgNDksIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUyLCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MCwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA0OSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgCisgICAgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgCisgICAgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAKKyAgICAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIAorICAgIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgCisgICAgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCAKKyAgICA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgCisgICAgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCAKKyAgICA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIDg0LCA4MiwgMTkzLCA4MywgODUsIDg0LCAxMjgsIDgzLCAKKyAgICA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIDgzLCA4NSwgODIsIAorICAgIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgCisgICAgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCA4MywgODUsIDgyLCAKKyAgICA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIDY1LCA3NiwgCisgICAgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDgwLCAKKyAgICA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCA4MCwgNjksIAorICAgIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgODMsIDY5LCAKKyAgICAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDIxMCwgODMsIAorICAgIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIDc5LCAxMjgsIAorICAgIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDc4LCA4MiwgCisgICAgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCA4NSwgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIAorICAgIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDEyOCwgODMsIDg1LCAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIAorICAgIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgODMsIDg1LCA3NywgNjUsIDgzLCA3MiwgMTI4LCA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIAorICAgIDEyOCwgODMsIDg1LCA3NSwgODUsIDc4LCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIAorICAgIDgzLCA4NSwgNzUsIDIxMywgODMsIDg1LCA3MywgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAKKyAgICAxMjgsIDgzLCA4NSwgNzMsIDIxMiwgODMsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCAKKyAgICA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCA4MywgODUsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NSwgNjcsIAorICAgIDc1LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgMjAzLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgCisgICAgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCAKKyAgICA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIAorICAgIDczLCA4NCwgODUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgCisgICAgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCAKKyAgICA4NSwgNjYsIDgzLCA2OSwgMjEyLCA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIAorICAgIDg1LCA3OCwgNjcsIDg0LCA3MywgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgCisgICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIAorICAgIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgCisgICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCAKKyAgICA4NSwgNjYsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIAorICAgIDY2LCA3MywgODQsIDc5LCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgCisgICAgODIsIDc5LCA4NSwgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIDc3LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAKKyAgICA4NCwgMTI4LCA4MywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgNjYsIAorICAgIDEyOCwgODMsIDg1LCA2NSwgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCAKKyAgICA4NCwgODUsIDcwLCA3MCwgNjksIDE5NiwgODMsIDg0LCA4NSwgNjgsIDg5LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA3MywgCisgICAgMjA3LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCAKKyAgICA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgODMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTcsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU2LCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTQsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MiwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIAorICAgIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAKKyAgICAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIAorICAgIDgyLCA3MywgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzMsIDc1LCA2OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNzMsIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCAKKyAgICA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIAorICAgIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIAorICAgIDg5LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgCisgICAgNzcsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCAKKyAgICA4MywgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgCisgICAgNjksIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIAorICAgIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgCisgICAgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgCisgICAgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDc5LCAKKyAgICA2NywgMjAzLCA4MywgODQsIDczLCA4MiwgODIsIDg1LCAyMDgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIAorICAgIDg0LCA3MywgNzYsIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgCisgICAgODQsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODQsIDczLCA2NywgMjAzLCA4MywgODQsIDY5LCA4MiwgNjksIDc5LCAKKyAgICAxMjgsIDgzLCA4NCwgNjksIDgwLCAxMjgsIDgzLCA4NCwgNjksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgCisgICAgMTk1LCA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCAKKyAgICA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIAorICAgIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgCisgICAgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NCwgCisgICAgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIDY1LCAyMTAsIDgzLCA4NCwgNjUsIAorICAgIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgNjUsIDgyLCAxOTYsIDgzLCA4NCwgCisgICAgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3NywgODAsIDY5LCAxOTYsIDgzLCAKKyAgICA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3MCwgNzAsIDEyOCwgODMsIDg0LCA2NSwgNzAsIAorICAgIDE5OCwgODMsIDg0LCA2NSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIDc5LCAxMjgsIDgzLCA4NCwgNTAsIAorICAgIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIDgzLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgODksIDEyOCwgODMsIDgzLCA4NSwgCisgICAgODgsIDEyOCwgODMsIDgzLCA4NSwgODUsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDgzLCA4NSwgODAsIDEyOCwgCisgICAgODMsIDgzLCA3OSwgODgsIDEyOCwgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCA3OSwgODAsIDEyOCwgODMsIDgzLCAKKyAgICA3OSwgNzksIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCA4OCwgMTI4LCA4MywgODMsIDczLCA4NCwgMTI4LCAKKyAgICA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA3MywgMTI4LCA4MywgODMsIDczLCA2OSwgODgsIDEyOCwgODMsIAorICAgIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgNzMsIDEyOCwgODMsIDgzLCA3MiwgCisgICAgNzMsIDc4LCAxMjgsIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNjksIDgwLCAKKyAgICAxMjgsIDgzLCA4MywgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDgzLCAKKyAgICA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIAorICAgIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCisgICAgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCAKKyAgICA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgCisgICAgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgCisgICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCAKKyAgICA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCAKKyAgICA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgCisgICAgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgODMsIDgzLCA2NSwgNzMsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgODMsIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCAKKyAgICA4MywgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIAorICAgIDcxLCA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDY5LCA2OCwgCiAgICAgMTI4LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCA4MSwgODUsIDY1LCAKICAgICA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIAogICAgIDEyOCwgODMsIDgwLCA4OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIApAQCAtOTY5LDc3ICs5NzYsNzkgQEAKICAgICA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIAogICAgIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgCiAgICAgMTI4LCA4MywgNzgsIDc5LCAyMTUsIDgzLCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MywgNzgsIDc5LCA4NSwgMjEyLCA4MywgCi0gICAgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCAKLSAgICA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDc3LCA3MywgNzYsIDE5NywgODMsIDc3LCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCAKLSAgICA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIAotICAgIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgODcsIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgCi0gICAgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDc5LCA2NSwgMjA2LCA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIAotICAgIDc2LCA3MywgNzEsIDcyLCA4NCwgNzYsIDIxNywgODMsIDc2LCA3MywgNjgsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgCi0gICAgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzYsIDczLCA2NywgNjksIDEyOCwgODMsIDc2LCA3MywgNjcsIDE5NywgODMsIDc2LCAKLSAgICA2OSwgODUsIDg0LCAyMDAsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgNzYsIDY1LCA4NiwgNzksIDc4LCA3MywgMTk1LCA4MywgNzYsIDY1LCA4NiwgNjksIDEyOCwgODMsIDc2LCAKLSAgICA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgODMsIAotICAgIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCA4NywgMTI4LCA4MywgNzUsIDg1LCA3NiwgNzYsIDEyOCwgODMsIDc1LCA4NSwgCi0gICAgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIDgyLCA3OSwgMjA2LCA4MywgNzUsIDczLCA3OCwgMTI4LCA4MywgNzUsIDczLCAKLSAgICA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIDgzLCA3NSwgNjksIDg3LCA2OSwgMTk2LCA4MywgNzUsIDY1LCA4NCwgNjksIAotICAgIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgNjksIDEyOCwgODMsIDczLCA5MCwgMTk3LCA4MywgNzMsIDg4LCA4NCwgODksIAotICAgIDQ1LCA3MCwgNzksIDg1LCA4MiwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICAyMTcsIDgzLCA3MywgODgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIAotICAgIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgNjksIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCAKLSAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgCi0gICAgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIAotICAgIDIxNiwgODMsIDczLCA4NCwgNjksIDEyOCwgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgCi0gICAgODUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIAotICAgIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgCi0gICAgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIAotICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCAKLSAgICA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAyMTEsIDgzLCA3MywgNzgsIDg1LCA4MywgNzksIDczLCAxOTYsIAotICAgIDgzLCA3MywgNzgsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDgzLCA3MywgNzgsIDc1LCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgMTI4LCA4MywgNzMsIAotICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCAKLSAgICA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIAotICAgIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA2OCwgCi0gICAgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCA4NSwgODMsIAotICAgIDEyOCwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCAyMTEsIDgzLCA3MywgNzcsIDgwLCA3NiwgCi0gICAgNzMsIDcwLCA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCAKLSAgICA2NSwgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIAotICAgIDg1LCAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgCi0gICAgNzUsIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAKLSAgICA2OSwgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgCi0gICAgMTI4LCA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgCi0gICAgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDczLCA3MSwgNzcsIDE5MywgODMsIDczLCAKLSAgICA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgMTgwLCA4MywgNzMsIDcxLCAxMjgsIDgzLCAKLSAgICA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAyMTEsIDgzLCA3MywgNjgsIDY5LCAxMjgsIAotICAgIDgzLCA3MywgNjgsIDE5NywgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgNzcsIDEyOCwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgCi0gICAgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgMTk3LCA4MywgNzMsIDY1LCAKLSAgICAxMjgsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIDgzLCA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCAKLSAgICA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIDEyOCwgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIDgzLCA3MiwgODcsIDE5NywgODMsIDcyLCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDgzLCA3MiwgODcsIDY1LCAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg1LCAxMjgsIDgzLCAKLSAgICA3MiwgODUsIDg0LCA4NCwgNzYsIDY5LCA2NywgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgCi0gICAgNzksIDg4LCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCAKLSAgICA3NywgMTI4LCA4MywgNzIsIDg1LCA3NiwgMTI4LCA4MywgNzIsIDg1LCA3MCwgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIAotICAgIDY5LCA4MSwgMTI4LCA4MywgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgCi0gICAgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgCi0gICAgNzIsIDIxMywgODMsIDcyLCA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCAKLSAgICA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzcsIDgwLCAxMjgsIDgzLCA3MiwgODIsIDczLCA3MywgCi0gICAgMTI4LCA4MywgNzIsIDgyLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCA4MywgCi0gICAgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIDcyLCAKLSAgICA3OSwgODUsIDc2LCA2OCwgNjksIDIxMCwgODMsIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgCisgICAgNzgsIDY5LCA2OSwgOTAsIDczLCA3OCwgMTk5LCA4MywgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCAKKyAgICA4MywgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIAorICAgIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgCisgICAgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgODMsIDc3LCA3MywgNzYsIDE5NywgODMsIDc3LCA2OSwgNjUsIDgyLCAKKyAgICAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIAorICAgIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgCisgICAgODcsIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgCisgICAgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDc5LCA2NSwgMjA2LCAKKyAgICA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzYsIDIxNywgODMsIDc2LCA3MywgNjgsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzYsIDczLCA2NywgNjksIDEyOCwgCisgICAgODMsIDc2LCA3MywgNjcsIDE5NywgODMsIDc2LCA2OSwgODUsIDg0LCAyMDAsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCAKKyAgICA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDY5LCA2OSwgMjA4LCA4MywgNzYsIDY1LCA4NiwgNzksIAorICAgIDc4LCA3MywgMTk1LCA4MywgNzYsIDY1LCA4NiwgNjksIDEyOCwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgCisgICAgNjUsIDgzLCAyMDAsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgODMsIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCAKKyAgICA4NywgMTI4LCA4MywgNzUsIDg1LCA3NiwgNzYsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIAorICAgIDgyLCA3OSwgMjA2LCA4MywgNzUsIDczLCA3OCwgMTI4LCA4MywgNzUsIDczLCA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIAorICAgIDgzLCA3NSwgNjksIDg3LCA2OSwgMTk2LCA4MywgNzUsIDY1LCA4NCwgNjksIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgCisgICAgNjksIDEyOCwgODMsIDczLCA5MCwgMTk3LCA4MywgNzMsIDg4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgODQsIAorICAgIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAyMTcsIDgzLCA3MywgODgsIDg0LCA3MiwgCisgICAgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCAKKyAgICA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCAxMjgsIAorICAgIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgCisgICAgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCAKKyAgICA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgCisgICAgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDIxNiwgODMsIDczLCA4NCwgNjksIDEyOCwgCisgICAgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgODUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKKyAgICA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNjUsIAorICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCAKKyAgICA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MywgNzMsIAorICAgIDc5LCAyMTEsIDgzLCA3MywgNzgsIDg1LCA4MywgNzksIDczLCAxOTYsIDgzLCA3MywgNzgsIDc5LCA3NiwgNzksIDcxLCA3MywgCisgICAgNjcsIDY1LCAyMDQsIDgzLCA3MywgNzgsIDc4LCA4OSwgNzMsIDczLCA4OSwgNzIsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgCisgICAgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgCisgICAgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCAKKyAgICA4NSwgODMsIDEyOCwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCAyMTEsIDgzLCA3MywgNzcsIAorICAgIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgCisgICAgNzMsIDc2LCA2NSwgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCAKKyAgICA3OCwgNzEsIDg1LCAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIAorICAgIDczLCA3NiwgNzUsIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCAKKyAgICA1MSwgMTI4LCA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCAKKyAgICA3MywgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDczLCA3MSwgNzcsIDE5MywgODMsIAorICAgIDczLCA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgMTgwLCA4MywgNzMsIDcxLCAxMjgsIAorICAgIDgzLCA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAyMTEsIDgzLCA3MywgNjgsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgNjgsIDE5NywgODMsIDczLCA2OCwgNjgsIDcyLCA3MywgMTI4LCA4MywgNzMsIDY4LCA2OCwgNzIsIAorICAgIDY1LCA3NywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgCisgICAgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCA3MywgNjUsIDEyOCwgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgCisgICAgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgCisgICAgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIAorICAgIDcyLCA4NywgMTk3LCA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NiwgCisgICAgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgODQsIDc2LCAKKyAgICA2OSwgNjcsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIDcyLCAKKyAgICA4NSwgNzYsIDEyOCwgODMsIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgCisgICAgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDg1LCA3MSwgMTI4LCAKKyAgICA4MywgNzIsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA4MiwgNzMsIAorICAgIDczLCAxMjgsIDgzLCA3MiwgODIsIDczLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgCisgICAgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgMjEwLCA4MywgNzIsIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAKICAgICAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODMsIAogICAgIDcyLCA3OSwgODIsIDg0LCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDY3LCA2NSwgNzUsIDY5LCAKICAgICAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODksIDgyLCAxMjgsIDgzLCA3MiwgNzksIApAQCAtMTA3Nyw1NDMgKzEwODYsNTQ4IEBACiAgICAgMTI4LCA4MywgNzIsIDY1LCA4OCwgMTI4LCA4MywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgzLCAKICAgICA3MiwgNjUsIDg2LCA3MywgNjUsIDIwNiwgODMsIDcyLCA2NSwgODYsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDg1LCAxMjgsIAogICAgIDgzLCA3MiwgNjUsIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA4NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjEzLCA4MywgCi0gICAgNzIsIDY1LCA4MiwgODAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIwOCwgODMsIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDgyLCA1MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMTc4LCA4MywgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCAxOTcsIDgzLCA3MiwgNjUsIDgwLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA4MywgNzIsIDY1LCAyMDYsIDgzLCAKLSAgICA3MiwgNjUsIDc3LCA4MiwgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIDcyLCA2OSwgNzYsIDY5LCA4NCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA3NSwgODQsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDc1LCA3MywgNzgsIDE5OSwgODMsIDcyLCA2NSwgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgNzAsIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDcwLCAyMTIsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAKLSAgICAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCA2NSwgNjgsIAotICAgIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNTQsIDEyOCwgCi0gICAgODMsIDcyLCA2NSwgMTgyLCA4MywgNzIsIDY1LCA1MSwgMTI4LCA4MywgNzIsIDY1LCAxNzksIDgzLCA3MSwgODIsIDE5MywgCi0gICAgODMsIDcxLCA3OSwgMjEwLCA4MywgNzEsIDY3LCAxMjgsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgCi0gICAgNzEsIDEyOCwgODMsIDY5LCA4OSwgNzUsIDEyOCwgODMsIDY5LCA4OCwgODQsIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCAKLSAgICA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDg4LCA4NCwgNjUsIDc4LCAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIAotICAgIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgCi0gICAgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAyMDYsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgCi0gICAgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIDgzLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCAKLSAgICA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIAotICAgIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgCi0gICAgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCAKLSAgICA4MywgNjksIDgyLCA3MywgNzAsIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgODMsIAotICAgIDY5LCA4MSwgODUsIDY5LCA3OCwgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDg1LCA4MCwgNzYsIDE5NywgODMsIDY5LCA4MCwgCi0gICAgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCAKLSAgICA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIAotICAgIDczLCAxMjgsIDgzLCA2OSwgNzcsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzcsIDc1LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIAotICAgIDc3LCA3MywgODMsIDc5LCA3MCwgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDc3LCA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIAotICAgIDY3LCAyMTIsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgCi0gICAgNzYsIDc5LCAyMDYsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCAKLSAgICA3MywgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIAotICAgIDY5LCA3NywgNzMsIDQ1LCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAotICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAotICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAotICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgCi0gICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCi0gICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAotICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgODMsIDY5LCAKLSAgICA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCA2OSwgNzEsIAotICAgIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgCi0gICAgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgCi0gICAgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgCi0gICAgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAKLSAgICAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIAotICAgIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIAotICAgIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgCi0gICAgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIAotICAgIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgCi0gICAgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIAotICAgIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgCi0gICAgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCAKLSAgICA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIAotICAgIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCAKLSAgICA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIAotICAgIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDgyLCA2NSwgCi0gICAgODMsIDcyLCA4NCwgODIsIDE5MywgODMsIDY1LCA4NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIAotICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgCi0gICAgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCAKLSAgICA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIAotICAgIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIAotICAgIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIAotICAgIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgCi0gICAgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCAKLSAgICA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIAotICAgIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgCi0gICAgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIAotICAgIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgCi0gICAgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIAotICAgIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgCi0gICAgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCAKLSAgICA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIAotICAgIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgCi0gICAgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA3OSwgODQsIAotICAgIDEyOCwgODMsIDY1LCA3NSwgNzIsIDE5MywgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCA3NSwgCi0gICAgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgMTI4LCAKLSAgICA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAxMjgsIAotICAgIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgMTI4LCA4MywgCi0gICAgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA3MCwgNjksIDg0LCAKLSAgICAyMTcsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCAKLSAgICA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgCi0gICAgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAKLSAgICAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCAKLSAgICA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIAotICAgIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIAotICAgIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgCi0gICAgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgCi0gICAgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAKLSAgICAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAKLSAgICAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCAKLSAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIAotICAgIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCAKLSAgICA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCAKLSAgICA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCAKLSAgICA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIAotICAgIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIAotICAgIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgCi0gICAgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCAKLSAgICA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIAotICAgIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIAotICAgIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgCi0gICAgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgODUsIDc2LCA2NSwgNzMsIDEyOCwgODIsIDg1LCAKLSAgICA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgNzEsIDY2LCAyMTcsIAotICAgIDgyLCA4NSwgNjgsIDczLCA3NywgNjksIDc4LCA4NCwgMTkzLCA4MiwgODUsIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgCi0gICAgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCAKLSAgICA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgCi0gICAgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCAKLSAgICA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA4MiwgNjUsIDEyOCwgODIsIDgyLCA3OSwgODgsIAotICAgIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIAotICAgIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIAotICAgIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgCi0gICAgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgCi0gICAgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIDY1LCA2NSwgMTI4LCA4MiwgNzksIDg3LCAKLSAgICA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIAotICAgIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIAotICAgIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCAKLSAgICA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNzksIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAKLSAgICAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIAotICAgIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgCi0gICAgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzcsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDY1LCAyMDYsIDgyLCAKLSAgICA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIAotICAgIDc5LCA3NiwgNzYsIDY5LCA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgCi0gICAgNzEsIDEyOCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgCi0gICAgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDc5LCAyMTIsIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCAKLSAgICA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIAotICAgIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIAotICAgIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIAotICAgIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIAotICAgIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAKLSAgICAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIAotICAgIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgODAsIDc2LCAxOTcsIDgyLCA3MywgODAsIDEyOCwgODIsIAotICAgIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgCi0gICAgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCA2NiwgNjUsIDEyOCwgODIsIDczLCAKLSAgICA3NywgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAotICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCAKLSAgICA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCAKLSAgICA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDc2LCAKLSAgICA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIAotICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCAKLSAgICA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgCi0gICAgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCAKLSAgICA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgCi0gICAgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCi0gICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCAKLSAgICA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIAotICAgIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgCi0gICAgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjYsIDY2LCAKLSAgICA3OSwgMjA2LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCAKLSAgICA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MiwgMTI4LCA4MiwgNzEsIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCAKLSAgICA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCA4MywgNjcsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgCi0gICAgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIDEyOCwgODIsIDY5LCAKLSAgICA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIAotICAgIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgCi0gICAgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCAKLSAgICA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIAotICAgIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgCi0gICAgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCAKLSAgICA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIAotICAgIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgCi0gICAgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCAKLSAgICA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgCi0gICAgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgCi0gICAgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCA3NywgNzMsIDc4LCA2OCwgNjksIDIxMCwgCi0gICAgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCAKLSAgICA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIAotICAgIDg4LCA2OSwgNjgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCAKLSAgICA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgCi0gICAgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAKLSAgICA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgCi0gICAgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAKLSAgICAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCA2NSwgMTI4LCA4MiwgNjksIAotICAgIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgODIsIDY5LCA2OCwgCi0gICAgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNzMsIAotICAgIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzYsIDczLCA3OCwgCi0gICAgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCAKLSAgICA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDgyLCA2OSwgNjcsIAotICAgIDgyLCA2OSwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDEyOCwgODIsIDY5LCAKLSAgICA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIAotICAgIDgwLCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA2OSwgCi0gICAgNzMsIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNjUsIDc2LCAKLSAgICA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIDgyLCA2OSwgNjUsIDY3LCA3MiwgCi0gICAgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgMTkzLCA4MiwgNjUsIDg5LCA4MywgCi0gICAgMTI4LCA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIDE5MywgODIsIDY1LCA4NCwgNjUsIAotICAgIDEyOCwgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgCi0gICAgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCAKLSAgICA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCAKLSAgICA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIAotICAgIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgCi0gICAgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIAotICAgIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgCi0gICAgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCAKLSAgICA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgMTI4LCA4MiwgNjUsIDcwLCA2OSwgCi0gICAgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCAKLSAgICA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIAotICAgIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgODIsIDY1LCAKLSAgICA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCAKLSAgICA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCA0OCwgNTAsIAotICAgIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIDgyLCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCA4MiwgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgODIsIDQ4LCAKLSAgICA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCA4MiwgNDgsIAotICAgIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIDQ1LCA2NywgCi0gICAgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIDgxLCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIDgxLCA4OSwgCi0gICAgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgMTI4LCA4MSwgCi0gICAgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIDgxLCA4NywgCi0gICAgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIDgxLCA4NSwgCi0gICAgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIDgxLCA4NSwgCi0gICAgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgMTI4LCAKLSAgICA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgNzksIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCA4MSwgCi0gICAgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIDY3LCAKLSAgICA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgNzgsIAotICAgIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCA3NiwgCi0gICAgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgCi0gICAgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIAotICAgIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCAKLSAgICA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIAotICAgIDY1LCA2OCwgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgCi0gICAgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIAotICAgIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgCi0gICAgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIAotICAgIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIAotICAgIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIAotICAgIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIAotICAgIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCA4MCwgNzIsIDEyOCwgCi0gICAgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgCi0gICAgODEsIDcyLCA2NSwgODUsIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAKLSAgICAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCAKLSAgICA4OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIAotICAgIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIAotICAgIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCAyMTEsIDgxLCA2NSwgNzYsIDE5MywgODEsIDY1LCA3MywgCi0gICAgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgNzMsIDEyOCwgODEsIDY1LCA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgCi0gICAgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCA1NSwgMTI4LCA4MSwgNDgsIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIAotICAgIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCA4MSwgNDgsIDQ4LCA1MSwgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgCi0gICAgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIDEyOCwgODAsIDg5LCA4OCwgMTI4LCA4MCwgODksIDg0LCAxMjgsIAotICAgIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIDEyOCwgODAsIDg5LCA4MCwgMTI4LCA4MCwgODcsIDc5LCA4OSwgCi0gICAgMTI4LCA4MCwgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4MCwgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIAotICAgIDgwLCA4NSwgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCi0gICAgODUsIDg0LCAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCAKLSAgICA3MiwgODAsIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCAKLSAgICA2NSwgNzcsIDY1LCAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAKLSAgICAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCAKLSAgICA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNzAsIDcwLCA2OSwgNjgsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIAotICAgIDY3LCA3NSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIAotICAgIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIAotICAgIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgCi0gICAgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAotICAgIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgCi0gICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgNjUsIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIAotICAgIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgCi0gICAgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAotICAgIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCi0gICAgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCAKLSAgICA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODAsIDgyLCA3OSwgCi0gICAgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNzIsIDczLCA2NiwgNzMsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCA3MCwgNzksIDg1LCA3OCwgNjgsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgMjEyLCA4MCwgCi0gICAgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDgwLCA4MiwgNzMsIDg2LCAKLSAgICA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIDg0LCA4MiwgMTkzLCA4MCwgODIsIAotICAgIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDIxMCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCAKLSAgICA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIAotICAgIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA4MCwgODIsIDY5LCA4MywgCi0gICAgNjksIDg0LCAxMjgsIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCAKLSAgICA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgNjgsIDY5LCA4MiwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCA2OSwgNzAsIDY1LCAKLSAgICA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIAotICAgIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCA4MywgMTI4LCA4MCwgODIsIDY5LCA2NywgCi0gICAgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTk2LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAKLSAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCA4MiwgNjUsIDg5LCA2OSwgMjEwLCA4MCwgODIsIAotICAgIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgCi0gICAgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCAKLSAgICA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIAotICAgIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgCi0gICAgMTI4LCA4MCwgODAsIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgCi0gICAgODIsIDIxMSwgODAsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCAKLSAgICA3OSwgODcsIDY4LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgCi0gICAgMjE3LCA4MCwgNzksIDg1LCA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCAKLSAgICA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODAsIDc5LCA4MywgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgCi0gICAgODMsIDg0LCAxMjgsIDgwLCA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4NCwgNjUsIDY2LCA3NiwgCi0gICAgMTk3LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAKLSAgICA4NSwgMjExLCA4MCwgNzksIDgwLCA4MCwgNzMsIDc4LCAxOTksIDgwLCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIAotICAgIDc5LCA4MCwgNjcsIDc5LCA4MiwgNzgsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgCi0gICAgNjgsIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgCi0gICAgODAsIDc5LCA3NywgNzcsIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCAKKyAgICA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNzUsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMTc4LCA4MywgCisgICAgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCAKKyAgICAxOTcsIDgzLCA3MiwgNjUsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3OCwgMTI4LCAKKyAgICA4MywgNzIsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDc3LCA4MiwgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIAorICAgIDcyLCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA3NiwgNzYsIDc5LCAyMTUsIDgzLCA3MiwgNjUsIDc1LCA4NCwgCisgICAgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3MCwgODQsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAKKyAgICAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIAorICAgIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgCisgICAgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCA4MywgNzIsIDY1LCAxODIsIDgzLCA3MiwgCisgICAgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgCisgICAgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg5LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCAKKyAgICA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIAorICAgIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgCisgICAgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIAorICAgIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgODMsIDY5LCA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgCisgICAgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCA3MCwgNzksIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCAKKyAgICA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgCisgICAgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCA4NiwgNzMsIDY3LCAxOTcsIDgzLCAKKyAgICA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIDgzLCA2OSwgODIsIDczLCA3MCwgCisgICAgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCAKKyAgICA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgODUsIDgwLCA3NiwgMTk3LCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIAorICAgIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgCisgICAgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCAKKyAgICA3NywgODUsIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIAorICAgIDEyOCwgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAKKyAgICAyMTIsIDgzLCA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIAorICAgIDczLCA3OCwgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgCisgICAgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCAKKyAgICA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgCisgICAgNzYsIDE5NywgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCAKKyAgICA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgNzMsIDY5LCAxMjgsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAorICAgIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKKyAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKKyAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAorICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAKKyAgICAxOTMsIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCAKKyAgICA4MywgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA4NiwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIAorICAgIDEyOCwgODMsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgODMsIDY5LCA2OSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY3LCA2NSwgCisgICAgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCA4MywgNjksIDY1LCA4NCwgMTI4LCAKKyAgICA4MywgNjksIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIDgzLCA2OCwgNzksIDc4LCAxOTksIAorICAgIDgzLCA2OCwgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgODAsIDc2LCA2OSwgMTI4LCA4MywgCisgICAgNjcsIDgyLCA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIAorICAgIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODMsIDY3LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA2NywgNzksIDc5LCA4NCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzMsIDgzLCAKKyAgICA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAxMjgsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIAorICAgIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIDY5LCA2OCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCisgICAgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAyMDQsIDgzLCA2NywgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCAKKyAgICA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIDY5LCA4MCwgODQsIDY5LCAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIAorICAgIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgCisgICAgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgNjYsIDg1LCAxOTQsIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCAKKyAgICA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MywgNjUsIDg5LCAxMjgsIAorICAgIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODMsIDY1LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg3LCAxMjgsIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIAorICAgIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAxOTMsIDgzLCA2NSwgODUsIDczLCA3NiwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgNjksIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCAxOTcsIDgzLCA2NSwgODQsIDY3LCA3MiwgNjksIDc2LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDY1LCA3OCwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIDgzLCA2NSwgODMsIAorICAgIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgODIsIDEyOCwgODMsIAorICAgIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCA3MSwgMTkzLCA4MywgCisgICAgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIDg0LCA3MywgNzMsIDc3LCA4NSwgMTI4LCA4MywgNjUsIDc4LCAKKyAgICA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgNTAsIDEyOCwgODMsIDY1LCA3OCwgNjgsIDcyLCAyMDEsIAorICAgIDgzLCA2NSwgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgCisgICAgODMsIDY1LCA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAKKyAgICAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIAorICAgIDc3LCA2OSwgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgCisgICAgODMsIDY1LCA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIAorICAgIDEyOCwgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgCisgICAgNjUsIDcyLCA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCAKKyAgICA2NSwgNjgsIDEyOCwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCA3NywgNzcsIDc5LCA3OCwgNzMsIAorICAgIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDc1LCA3OSwgCisgICAgODQsIDEyOCwgODMsIDY1LCA3NSwgNzIsIDE5MywgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCAKKyAgICA3NSwgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgCisgICAgMTI4LCA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAKKyAgICAxMjgsIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgCisgICAgMTI4LCA4MywgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA3MCwgCisgICAgNjksIDg0LCAyMTcsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAKKyAgICAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIAorICAgIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgCisgICAgNDUsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAKKyAgICAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCAKKyAgICA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIAorICAgIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgCisgICAgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgCisgICAgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCAKKyAgICA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAKKyAgICA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgCisgICAgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgCisgICAgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgCisgICAgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAKKyAgICAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCAKKyAgICA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIAorICAgIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIAorICAgIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgCisgICAgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgCisgICAgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIDc3LCAKKyAgICA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIDg1LCAKKyAgICA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgODUsIAorICAgIDc2LCA2NSwgNzMsIDEyOCwgODIsIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAKKyAgICAxMjgsIDgyLCA4NSwgNzEsIDY2LCAyMTcsIDgyLCA4NSwgNjgsIDczLCA3NywgNjksIDc4LCA4NCwgMTkzLCA4MiwgODUsIAorICAgIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIAorICAgIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgCisgICAgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCAKKyAgICA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIAorICAgIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA4MiwgCisgICAgNjUsIDEyOCwgODIsIDgyLCA3OSwgODgsIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgCisgICAgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAKKyAgICAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCAKKyAgICA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCAKKyAgICA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIAorICAgIDY1LCA2NSwgMTI4LCA4MiwgNzksIDg3LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAKKyAgICAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIAorICAgIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MiwgNzksIDg0LCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgCisgICAgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCAKKyAgICA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzcsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIAorICAgIDgyLCA3OSwgNzcsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA4MiwgCisgICAgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIDc5LCA3NiwgNzYsIDY5LCA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCAKKyAgICA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgNzEsIDEyOCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIAorICAgIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDc5LCAyMTIsIDgyLCA3OSwgNjYsIAorICAgIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgCisgICAgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCAKKyAgICA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAKKyAgICAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgCisgICAgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCAKKyAgICA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIAorICAgIDE5OSwgODIsIDczLCA4MywgNzIsIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgODAsIDc2LCAxOTcsIAorICAgIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA4MiwgCisgICAgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCAKKyAgICA2NiwgNjUsIDEyOCwgODIsIDczLCA3NywgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIAorICAgIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgCisgICAgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIAorICAgIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgCisgICAgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIAorICAgIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgCisgICAgNzEsIDcyLCA4NCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIAorICAgIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgCisgICAgNzIsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDcwLCAKKyAgICA3NiwgNjksIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCisgICAgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgCisgICAgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCAKKyAgICA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgCisgICAgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgCisgICAgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY2LCA2NiwgNzksIDIwNiwgODIsIDczLCA2NSwgMjA0LCAKKyAgICA4MiwgNzIsIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCA3OSwgMTI4LCA4MiwgNzIsIDIwNywgODIsIDcyLCA3MywgNzgsIAorICAgIDc5LCA2NywgNjksIDgyLCA3OSwgODMsIDEyOCwgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzIsIDEyOCwgODIsIDcxLCA4OSwgCisgICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODIsIDcxLCA4OSwgNjUsIDc4LCAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIDY5LCAKKyAgICA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgODYsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgyLCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA3MywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgCisgICAgNjksIDY4LCA0NSwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCAKKyAgICA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgCisgICAgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAKKyAgICAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgCisgICAgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIAorICAgIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIAorICAgIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgCisgICAgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCAKKyAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgODksIAorICAgIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgCisgICAgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgCisgICAgNzcsIDczLCA3OCwgNjgsIDY5LCAyMTAsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCA3NiwgNzMsIDcxLCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIDY5LCA2NSwgODMsIAorICAgIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4OCwgNjksIDY4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNjUsIDIwNCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCAKKyAgICA4MiwgNjksIDc0LCA2NSwgNzgsIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDczLCAxMjgsIDgyLCA2OSwgNzEsIAorICAgIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCA4MiwgCisgICAgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIDgyLCAKKyAgICA2OSwgNzEsIDg1LCA3NiwgODUsIDIxMSwgODIsIDY5LCA3MSwgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgNjksIAorICAgIDcxLCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDcxLCA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA3MywgCisgICAgNjUsIDEyOCwgODIsIDY5LCA3MCwgNzksIDgyLCA3NywgNjksIDE5NiwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAKKyAgICAxOTcsIDgyLCA2OSwgNjgsIDg1LCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNjcsIAorICAgIDg5LCA2NywgNzYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MiwgNjksIDY3LCA4NCwgCisgICAgNzMsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCAKKyAgICA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgCisgICAgMTk3LCA4MiwgNjksIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA2NywgNzksIDgyLCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIAorICAgIDY4LCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgMTk2LCA4MiwgNjksIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIDg2LCAKKyAgICAxOTcsIDgyLCA2OSwgNjcsIDY5LCA4MCwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDIxMCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDQ1LCA1MCwgCisgICAgMTI4LCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3MiwgNzcsIDg1LCA3NSwgMTI4LCAKKyAgICA4MiwgNjksIDY1LCA2NywgNzIsIDEyOCwgODIsIDY4LCAyMDcsIDgyLCA2OCwgNjksIDIwNCwgODIsIDY2LCA2NSwgODMsIAorICAgIDE5MywgODIsIDY1LCA4OSwgODMsIDEyOCwgODIsIDY1LCA4OSwgMjExLCA4MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4MiwgNjUsIDg0LCA3MywgNzksIDEyOCwgODIsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDcyLCAKKyAgICAxOTMsIDgyLCA2NSwgODQsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDEyOCwgODIsIDY1LCA4MywgODcsIDY1LCA2OCwgNzMsIAorICAgIDEyOCwgODIsIDY1LCA4MywgNzksIDg1LCAyMDQsIDgyLCA2NSwgODMsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDgxLCAxMjgsIAorICAgIDgyLCA2NSwgODAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDgyLCA2NSwgNzgsIDY1LCAKKyAgICAxMjgsIDgyLCA2NSwgNzgsIDEyOCwgODIsIDY1LCA3NywgMjExLCA4MiwgNjUsIDc3LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCAKKyAgICA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIDY1LCA2NSwgNzgsIDgzLCA2NSwgCisgICAgODksIDY1LCAxMjgsIDgyLCA2NSwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgODMsIDY5LCAxOTYsIDgyLCAKKyAgICA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAxMjgsIDgyLCA2NSwgNzMsIAorICAgIDc2LCA4NywgNjUsIDIxNywgODIsIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIDIwNywgODIsIDY1LCA3MywgCisgICAgNjgsIDY1LCAxMjgsIDgyLCA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAyMDAsIDgyLCA2NSwgNzIsIAorICAgIDEyOCwgODIsIDY1LCA3MCwgNjksIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCA2OCwgNzMsIDc5LCA2NSwgCisgICAgNjcsIDg0LCA3MywgODYsIDE5NywgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIDczLCAyMDcsIDgyLCAKKyAgICA2NSwgNjgsIDIwMSwgODIsIDY1LCA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIDg1LCA2OSwgMjEyLCAKKyAgICA4MiwgNjUsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDY2LCA2NiwgNzMsIAorICAgIDg0LCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgCisgICAgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgCisgICAgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAKKyAgICAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCAKKyAgICA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCAKKyAgICA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCAKKyAgICA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCAKKyAgICA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCAKKyAgICA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCAKKyAgICA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgCisgICAgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAKKyAgICAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIAorICAgIDIxMSwgODEsIDg1LCA3MywgNzYsIDIxMiwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIAorICAgIDgxLCA4NSwgNzMsIDEyOCwgODEsIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAKKyAgICAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgCisgICAgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgCisgICAgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCAKKyAgICA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIAorICAgIDgyLCA4NCwgNjksIDgyLCAxMjgsIDgxLCA4NSwgNjUsIDc4LCA4NCwgNzMsIDg0LCAyMTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgCisgICAgODUsIDgwLCA3NiwgMTk3LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgODQsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDgyLCAKKyAgICA2NSwgNzgsIDIxMiwgODEsIDg1LCA2NSwgNjgsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgCisgICAgMTI4LCA4MSwgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIAorICAgIDEyOCwgODEsIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIAorICAgIDgwLCAxMjgsIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCAKKyAgICA3OSwgNjUsIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCAKKyAgICA2NSwgMTI4LCA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDcwLCAKKyAgICAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCAKKyAgICA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIAorICAgIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIAorICAgIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgODUsIDEyOCwgODEsIDcyLCA2NSwgCisgICAgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgCisgICAgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCA4OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgCisgICAgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAKKyAgICAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIAorICAgIDg0LCAyMTEsIDgxLCA2NSwgNzYsIDE5MywgODEsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgCisgICAgNzMsIDEyOCwgODEsIDY1LCA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDgxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA4MSwgNDgsIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCAKKyAgICA4MSwgNDgsIDQ4LCA1MSwgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIAorICAgIDEyOCwgODAsIDg5LCA4OCwgMTI4LCA4MCwgODksIDg0LCAxMjgsIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIAorICAgIDEyOCwgODAsIDg5LCA4MCwgMTI4LCA4MCwgODcsIDc5LCA4OSwgMTI4LCA4MCwgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIAorICAgIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgMTI4LCA4MCwgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIAorICAgIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgNjUsIDEyOCwgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCAKKyAgICA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIDgwLCA4NSwgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIAorICAgIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDg0LCAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgCisgICAgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCAKKyAgICA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgMTI4LCA4MCwgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIAorICAgIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCA2NSwgNzcsIDY1LCAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgCisgICAgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgCisgICAgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAKKyAgICAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIAorICAgIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNzAsIDcwLCA2OSwgNjgsIAorICAgIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY3LCA3NSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIAorICAgIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIAorICAgIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIAorICAgIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAKKyAgICA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgCisgICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCAKKyAgICA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgNjUsIAorICAgIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgCisgICAgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCAKKyAgICA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIAorICAgIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIAorICAgIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgCisgICAgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgNzQsIAorICAgIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgNzIsIDczLCA2NiwgNzMsIDg0LCA2OSwgMTk2LCA4MCwgCisgICAgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIAorICAgIDg1LCA2NywgMjEyLCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAKKyAgICAxOTcsIDgwLCA4MiwgNzMsIDg2LCA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIAorICAgIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDIxMCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIAorICAgIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgNjcsIDY5LCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgODIsIDY5LCA4NiwgNzMsIAorICAgIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDgzLCA2OSwgODQsIDEyOCwgCisgICAgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgzLCA2NywgODIsIAorICAgIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MSwgNzgsIDY1LCA3OCwgCisgICAgMjEyLCA4MCwgODIsIDY5LCA3MCwgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCAKKyAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIAorICAgIDgzLCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAKKyAgICAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIAorICAgIDgyLCA2NSwgODksIDY5LCAyMTAsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgCisgICAgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDg5LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCAKKyAgICA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDc4LCAxMjgsIDgwLCA4MiwgNjUsIAorICAgIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgNzMsIDEyOCwgODAsIDgyLCA2NSwgCisgICAgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDEyOCwgCisgICAgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAxMjgsIDgwLCA4MCwgNjUsIDEyOCwgODAsIDc5LCA4OSwgMTI4LCA4MCwgCisgICAgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCA4MiwgMjExLCA4MCwgNzksIDg3LCA2OSwgODIsIDEyOCwgODAsIDc5LCAKKyAgICA4NywgNjksIDIxMCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAyMTcsIDgwLCA3OSwgODUsIDY3LCAKKyAgICA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgODAsIAorICAgIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4MCwgNzksIDgzLCA4NCwgCisgICAgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCA4MywgODQsIDEyOCwgODAsIDc5LCAKKyAgICA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNzksIDgzLCA3MywgODQsIAorICAgIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgODIsIDgyLCA2OSwgCisgICAgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCAKKyAgICA3MywgNzgsIDE5OSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCA2NywgNzksIDgyLCA3OCwgCisgICAgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgCisgICAgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAKKyAgICAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCA4MCwgNzksIDc2LCA3OSwgMTI4LCA4MCwgNzksIDc2LCA3MywgODMsIAogICAgIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIDgwLCA3OSwgNzYsIDY5LCAxMjgsIAogICAgIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAxMjgsIDgwLCA3OSwgNzUsIDc5LCA3NCwgCiAgICAgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzksIDEyOCwgODAsIDc5LCAKQEAgLTE2OTEsNzYgKzE3MDUsNzggQEAKICAgICA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIDgzLCA4MywgNzMsIDg2LCA2OSwgCiAgICAgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIDY5LCAKICAgICA4MCwgNjksIDg0LCAxMjgsIDgwLCA2OSwgODAsIDY5LCAyMTIsIDgwLCA2OSwgNzksIDgyLCA4NCwgMjAwLCA4MCwgNjksIAotICAgIDc5LCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgCi0gICAgODQsIDY1LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCAKLSAgICA3OCwgODMsIDg1LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIAotICAgIDY5LCA3OCwgNzgsIDY1LCA3OCwgODQsIDEyOCwgODAsIDY5LCA3OCwgNzMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgCi0gICAgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCAKLSAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgNjcsIDczLCA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIAotICAgIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAKLSAgICAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCAKLSAgICA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIAotICAgIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgMTI4LCA4MCwgNjksIDY5LCA3MywgMTI4LCA4MCwgNjksIDY5LCAxMjgsIAotICAgIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgNjksIAotICAgIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgNjUsIDIwNCwgODAsIDY5LCA2NSwgNzUsIDIxMSwgODAsIDY5LCA2NSwgCi0gICAgNjcsIDcyLCAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIDczLCAKLSAgICAxMjgsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIDEyOCwgCi0gICAgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODAsIDY1LCAKLSAgICA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgNjUsIDg2LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDIxMywgODAsIDY1LCA4NCwgODQsIAotICAgIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgCi0gICAgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgCi0gICAgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCAKLSAgICA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgCi0gICAgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgCi0gICAgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA2OSwgNzgsIDcxLCA2OSwgMjEwLCA4MCwgNjUsIDgzLCAKLSAgICA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIAotICAgIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDc1LCAKLSAgICAxMjgsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIDg0LCA3MywgNzEsIAotICAgIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgCi0gICAgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgMjExLCAKLSAgICA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA2OSwgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIDcyLCA4MiwgCi0gICAgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCAKLSAgICA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgMjA0LCA4MCwgNjUsIAotICAgIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCAKLSAgICA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIDY1LCA4MiwgNjUsIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgODIsIAotICAgIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgCi0gICAgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCAKLSAgICA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIAotICAgIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgCi0gICAgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAotICAgIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIAotICAgIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDg0LCA3MiwgNzYsIDc5LCA3OCwgMTI4LCA4MCwgNjksIAorICAgIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgCisgICAgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCAKKyAgICA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDc4LCA2NSwgNzgsIDg0LCAxMjgsIAorICAgIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKKyAgICA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIAorICAgIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAKKyAgICAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIAorICAgIDEyOCwgODAsIDY5LCA2OSwgNzMsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCAKKyAgICA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIAorICAgIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDc4LCA4NSwgODQsIDgzLCAxMjgsIDgwLCA2OSwgNjUsIDc1LCAyMTEsIDgwLCA2OSwgCisgICAgNjUsIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCAKKyAgICA3MywgMTI4LCA4MCwgNjgsIDcwLCAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIAorICAgIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCAyMTMsIDgwLCA2NSwgCisgICAgODQsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCAKKyAgICA2NSwgODQsIDIwMCwgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIAorICAgIDg0LCAxMjgsIDgwLCA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgCisgICAgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgCisgICAgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIAorICAgIDg3LCA3OCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNjksIDc4LCA3MSwgNjksIDIxMCwgCisgICAgODAsIDY1LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgODMsIDY5LCAKKyAgICA4MSwgMTI4LCA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIAorICAgIDY1LCA4MiwgODQsIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgCisgICAgODQsIDczLCA2NSwgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIAorICAgIDg0LCA3MywgNjUsIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgCisgICAgNjUsIDgyLCA3NSwgMTI4LCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCAKKyAgICA4NCwgNzMsIDcxLCA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCAKKyAgICA4MywgNzMsIDIxMSwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNjksIDIxMSwgODAsIDY1LCA4MiwgNjUsIAorICAgIDgwLCA3MiwgODIsIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCAKKyAgICA3NywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIAorICAgIDIwNCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgCisgICAgNzYsIDczLCA4NCwgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCAKKyAgICA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIAorICAgIDc2LCA3MywgODAsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgCisgICAgNjksIDIxMCwgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgCisgICAgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCAKKyAgICA3NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIAorICAgIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIAorICAgIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCAKKyAgICA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIAorICAgIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgCisgICAgNzEsIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAKKyAgICA3MSwgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIAorICAgIDcxLCA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCiAgICAgMTI4LCA4MCwgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCAKLSAgICA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIAotICAgIDg1LCA3OCwgNzEsIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCAKLSAgICA3NywgNzMsIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA2OSwgNzgsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgCi0gICAgNjUsIDY5LCA3MiwgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NywgODksIDgyLCA2OSwgNzgsIDE5NywgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIAotICAgIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgCi0gICAgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCAKLSAgICA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCAKLSAgICA2OSwgMTk2LCA4MCwgNjUsIDczLCA3OCwgODQsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA4MCwgNjUsIDczLCAxMjgsIAotICAgIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODMsIDEyOCwgCi0gICAgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIDY1LCAKLSAgICA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgNjUsIAotICAgIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKKyAgICA4MCwgNjUsIDc4LCA2NywgNjUsIDc1LCA2OSwgODMsIDEyOCwgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgCisgICAgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDIwNiwgODAsIDY1LCA3NywgODUsIDc4LCA3MSwgNzUsIDY1LCAKKyAgICA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCA3NywgODMsIDcyLCA2NSwgNjksIAorICAgIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDc3LCA3MywgNzgsIDcxLCA3NSwgCisgICAgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA3OCwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2NSwgNjksIDcyLCAxMjgsIAorICAgIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIDY1LCAxMjgsIDgwLCA2NSwgCisgICAgNzYsIDc3LCA4OSwgODIsIDY5LCA3OCwgMTk3LCA4MCwgNjUsIDc2LCA3NywgMTI4LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCAKKyAgICA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgCisgICAgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgCisgICAgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCAKKyAgICA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDc4LCA4NCwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDgwLCA2NSwgNzMsIAorICAgIDEyOCwgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MywgCisgICAgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgCisgICAgNjUsIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCAKKyAgICA2NSwgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAogICAgIDEyOCwgODAsIDY1LCA2NSwgODQsIDg1LCAxMjgsIDgwLCA2NSwgNjUsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MCwgCiAgICAgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgNjUsIDczLCAxMjgsIDgwLCAKICAgICA2NSwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgODAsIDY1LCA2NSwgMTI4LCA4MCwgNTAsIDEyOCwgODAsIApAQCAtMTc3MCw0NjQgKzE3ODYsNDcxIEBACiAgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCAKICAgICA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIAogICAgIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIAotICAgIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgCi0gICAgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCAKLSAgICA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgMTI4LCA3OSwgODYsIAotICAgIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgCi0gICAgNzYsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIAotICAgIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgCi0gICAgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgMjExLCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIAotICAgIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgCi0gICAgNzIsIDc5LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCAKLSAgICA2NSwgODQsIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAKLSAgICAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIAotICAgIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA2OCwgNjksIDIxMCwgCi0gICAgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgCi0gICAgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgODUsIDgzLCAKLSAgICAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgCi0gICAgMjEwLCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgCi0gICAgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDIwNywgNzksIDgwLCAKLSAgICA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgCi0gICAgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCA3OCwgMTI4LCA3OSwgNzksIDkwLCAKLSAgICA2OSwgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIAotICAgIDg1LCAxMjgsIDc5LCA3OSwgNzIsIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgCi0gICAgNzYsIDczLCAxMjgsIDc5LCA3OCwgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgCi0gICAgNzgsIDc1LCA2NSwgODIsIDEyOCwgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCAKLSAgICA2NSwgMjE3LCA3OSwgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIAotICAgIDczLCA3OCwgMTk3LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgCi0gICAgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCAKLSAgICA2NywgODIsIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIAotICAgIDY1LCA3NiwgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgCi0gICAgNzksIDc2LCA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCAKLSAgICA4MiwgMTkzLCA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIAotICAgIDc2LCAxMjgsIDc5LCA3MywgMjA0LCA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCAKLSAgICA3OSwgNzEsIDc5LCA3OCwgNjksIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgCi0gICAgMjA1LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCAKLSAgICA3MCwgNzAsIDczLCA2NywgMTk3LCA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCAKLSAgICA3OSwgNjksIDY5LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCAKLSAgICA2NywgODQsIDc5LCA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIAotICAgIDY5LCAyMTIsIDc5LCA2NywgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgCi0gICAgNjcsIDc1LCAxMjgsIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCAKLSAgICA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIAotICAgIDY2LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgCi0gICAgNjcsIDIxMiwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCAKLSAgICA2NiwgMTI4LCA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIAotICAgIDc2LCA3MywgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIAotICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgCi0gICAgNTIsIDU2LCAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAKLSAgICAxMjgsIDc5LCA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgCi0gICAgNjcsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCAKLSAgICA1NCwgMTI4LCA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIAotICAgIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgCi0gICAgNDgsIDUwLCA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCAKLSAgICA1NCwgMTI4LCA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIAotICAgIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDc5LCA0OCwgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgCi0gICAgNDgsIDQ5LCA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNzksIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIAotICAgIDQ4LCA0OSwgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgCi0gICAgNzksIDQ4LCA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCAKLSAgICA0OCwgNTUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgCi0gICAgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgCi0gICAgMTI4LCA3OSwgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDg5LCA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCAKLSAgICA4OSwgODAsIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIAotICAgIDkwLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgCi0gICAgMTI4LCA3OCwgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDczLCA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIAotICAgIDkwLCA2NSwgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgCi0gICAgMTI4LCA3OCwgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgCi0gICAgODUsIDEyOCwgNzgsIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDc4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA3OCwgMTI4LCAKLSAgICA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIAotICAgIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDc4LCAxMjgsIAotICAgIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIDczLCAyMTEsIDc4LCA4OSwgCi0gICAgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgNzksIDEyOCwgNzgsIDg5LCAKLSAgICA3MywgNzgsIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgCi0gICAgMjEyLCA3OCwgODksIDY5LCA3OCwgMTI4LCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgCi0gICAgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCAKLSAgICA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIAotICAgIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCAKLSAgICA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIAotICAgIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIAotICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIAotICAgIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgCi0gICAgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCAKLSAgICA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIAotICAgIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgCi0gICAgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgCi0gICAgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCAKLSAgICA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIAotICAgIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCi0gICAgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCAKLSAgICA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAKLSAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDg0LCA4OCwgNzMsIAotICAgIDg2LCAxMjgsIDc4LCA4NCwgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAxMjgsIDc4LCA4NCwgODUsIDc0LCAxMjgsIAotICAgIDc4LCA4NCwgMjEzLCA3OCwgODQsIDgzLCA2NSwgODUsIDEyOCwgNzgsIDg0LCA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgCi0gICAgNzgsIDg0LCA3OSwgNzEsIDEyOCwgNzgsIDg0LCA3OSwgMTk5LCA3OCwgODQsIDczLCA2OSwgMTk3LCA3OCwgODQsIDcyLCAKLSAgICA2NSwgODUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIDY1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgODQsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDY5LCA2OSwgMTI4LCA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgODQsIDY1LCAyMDgsIDc4LCA4NCwgNjUsIDY1LCAxMjgsIDc4LCA4MywgODUsIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAKLSAgICAxMjgsIDc4LCA4MywgODUsIDc3LCAxMjgsIDc4LCA4MywgNzksIDc3LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIAotICAgIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4MCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgCi0gICAgODUsIDg0LCAxMjgsIDc4LCA4MywgNzIsIDg1LCAyMTIsIDc4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDgzLCAKLSAgICA3MiwgODUsIDY5LCAxMjgsIDc4LCA4MywgNzIsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDc4LCA4MywgNzIsIDY1LCA4MSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgMTI4LCA3OCwgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgCi0gICAgMTI4LCA3OCwgODMsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY1LCAxMjgsIDc4LCA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgCi0gICAgODksIDg0LCAxMjgsIDc4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCAKLSAgICA4MCwgMTI4LCA3OCwgODIsIDg5LCAxMjgsIDc4LCA4MiwgODUsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCAKLSAgICA4MiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgMTI4LCA3OCwgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIAotICAgIDg1LCA2NSwgMTI4LCA3OCwgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAxMjgsIDc4LCA4MiwgNzksIDgwLCAxMjgsIAotICAgIDc4LCA4MiwgNzksIDEyOCwgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCA2OSwgODQsIDEyOCwgNzgsIDgyLCA2OSwgCi0gICAgMjExLCA3OCwgODIsIDY5LCA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgCi0gICAgNjUsIDg0LCAxMjgsIDc4LCA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIDEyOCwgNzgsIDgxLCA3MywgNzEsIDEyOCwgCi0gICAgNzgsIDc5LCA4OSwgMTI4LCA3OCwgNzksIDg4LCAxMjgsIDc4LCA3OSwgODcsIDY3LCAxMjgsIDc4LCA3OSwgODYsIDY5LCAKLSAgICA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIAotICAgIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgCi0gICAgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCAKLSAgICA4NCwgNjksIDEyOCwgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIAotICAgIDY3LCA3MiwgMTI4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgCi0gICAgMjEyLCA3OCwgNzksIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgzLCAxOTcsIDc4LCA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCAKLSAgICA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA2NSwgODMsIAotICAgIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA4MiwgNzcsIDY1LCAyMDQsIDc4LCA3OSwgCi0gICAgODIsIDY4LCA3MywgMTk1LCA3OCwgNzksIDIxMCwgNzgsIDc5LCA4MCwgMTI4LCA3OCwgNzksIDc5LCA3OCwgODUsIDEyOCwgCi0gICAgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzksIDc4LCA3MCwgNzksIDgyLCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA3OCwgNzksIDc4LCAKLSAgICA0NSwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgCi0gICAgMTI4LCA3OCwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA3OCwgMTI4LCAKLSAgICA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCAyMDQsIDc4LCA3OSwgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIAotICAgIDEyOCwgNzgsIDc5LCA2NSwgMTI4LCA3OCwgNzksIDQ1LCA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgCi0gICAgMTI4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgODUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIAotICAgIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgCi0gICAgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgCi0gICAgNzgsIDc4LCA3MiwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCAKLSAgICA3OCwgNzEsIDczLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIAotICAgIDc4LCA3MSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgMTI4LCA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIAotICAgIDc4LCA3NiwgNjUsIDg1LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgNzgsIDc2LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAotICAgIDUyLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIAotICAgIDc2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDc4LCA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIAotICAgIDY4LCA3MywgMTI4LCA3OCwgNzUsIDY1LCA4NSwgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgCi0gICAgNzQsIDg5LCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCAKLSAgICA4OSwgODIsIDEyOCwgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIAotICAgIDc4LCA3NCwgODUsIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgCi0gICAgNzQsIDg1LCA2OSwgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCAKLSAgICA3OSwgODgsIDEyOCwgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIAotICAgIDEyOCwgNzgsIDc0LCA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIAotICAgIDczLCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCAKLSAgICA3MywgMTI4LCA3OCwgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIAotICAgIDc0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgCi0gICAgNjksIDEyOCwgNzgsIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAKLSAgICA3NiwgNzMsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIAotICAgIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgCi0gICAgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCAKLSAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIAotICAgIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc4LCA1NywgMTI4LCA3OCwgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIAotICAgIDczLCAyMDUsIDc4LCA3MywgNzUsIDc5LCA3NiwgODMsIDY2LCA4NSwgODIsIDE5OSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgCi0gICAgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCAKLSAgICA3MywgNzIsIDgzLCA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgCi0gICAgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKLSAgICA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIAotICAgIDg4LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgCi0gICAgODUsIDc4LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIAotICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCAKLSAgICA2NywgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCAKLSAgICA3OCwgNzMsIDY2LCAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCAKLSAgICA3OCwgNzIsIDc0LCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA4NSwgODUsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgCi0gICAgMTI4LCA3OCwgNzEsIDg1LCA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIAotICAgIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgCi0gICAgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAKLSAgICA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKLSAgICA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIAotICAgIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCAKLSAgICA3MSwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIAotICAgIDc4LCA3MSwgNzEsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIAotICAgIDEyOCwgNzgsIDcxLCA2NSwgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIAotICAgIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgCi0gICAgNjUsIDczLCAxMjgsIDc4LCA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgCi0gICAgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIAotICAgIDE5NywgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDIxNSwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgNzYsIDEyOCwgNzgsIAotICAgIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDg3LCA3OSwgCi0gICAgODIsIDc1LCA2OSwgMTk2LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgCi0gICAgNzgsIDY5LCA4MiwgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCAKLSAgICA2OSwgMTI4LCA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDc5LCAKLSAgICA2OSwgMTI4LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCAKLSAgICA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIAotICAgIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NywgNzUsIDEyOCwgCi0gICAgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCAKLSAgICA2OCwgODUsIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIAotICAgIDg1LCA4MCwgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIAotICAgIDY4LCA3OSwgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgCi0gICAgNzgsIDEyOCwgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCAKLSAgICA4OCwgMTI4LCA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCAKLSAgICA3OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIAotICAgIDc4LCA2OCwgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgCi0gICAgNzgsIDY4LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCAKLSAgICA2OSwgODAsIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCAKLSAgICA3OCwgNjgsIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIAotICAgIDY1LCA2NSwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDE5MywgNzgsIDY3LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAKLSAgICAxMjgsIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCAKLSAgICA3OCwgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIAotICAgIDc4LCA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgCi0gICAgNzksIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgCi0gICAgNzgsIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCAKLSAgICA3OCwgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIAotICAgIDEyOCwgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgCi0gICAgODUsIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgNjgsIDczLCAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIAotICAgIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgCi0gICAgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MywgNjUsIDIwNCwgNzgsIAotICAgIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIAotICAgIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCAKLSAgICA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCAKLSAgICA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3NSwgMTI4LCAKLSAgICA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCA2NSwgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIAotICAgIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIDcxLCAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIAotICAgIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIDY1LCAxMjgsIDc4LCA2NSwgNjYsIDY1LCA4NCwgCi0gICAgNjUsIDY5LCA2NSwgMjA2LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCAKLSAgICA3NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCAxOTMsIAotICAgIDc4LCA2NSwgNTIsIDEyOCwgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIDQ1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgCi0gICAgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIAotICAgIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgCi0gICAgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgCi0gICAgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIAotICAgIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIAotICAgIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgCi0gICAgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgCi0gICAgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCAKLSAgICA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIAotICAgIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCAKLSAgICA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCAKLSAgICA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgODYsIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAKLSAgICAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIAotICAgIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgCi0gICAgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCA3NywgODUsIDg1LCAxMjgsIDc3LCAKLSAgICA4NSwgODQsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIDczLCAxOTUsIDc3LCA4NSwgODMsIAotICAgIDcyLCA4MiwgNzksIDc5LCA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDE3OSwgCi0gICAgNzcsIDg1LCA4MywgNzIsIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgzLCAxMjgsIDc3LCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCA4MiwgNjgsIAotICAgIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIDY1LCA3NywgCi0gICAgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIDc3LCA4NSwgCi0gICAgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgODUsIDc4LCAKLSAgICA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc4LCAxMjgsIDc3LCA4NSwgNzYsIAotICAgIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgMjEyLCA3NywgODUsIDc2LCA4NCwgCi0gICAgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIAotICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDY5LCAxMjgsIDc3LCA4NSwgCi0gICAgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCAKLSAgICA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc2LCA4NCwgNjUsIAotICAgIDc4LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgCi0gICAgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIDE5OSwgNzcsIDg1LCA2OSwgNzgsIDEyOCwgCi0gICAgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAyMDAsIDc3LCA4NSwgNjcsIDY1LCAKLSAgICA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgODMsIDEyOCwgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIAotICAgIDgyLCAyMDcsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIAotICAgIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDIxMSwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgCi0gICAgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIAotICAgIDcyLCA3MywgNzgsIDcxLCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDcwLCA3NiwgNzksIDc5LCAKLSAgICA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNjgsIDczLCA2NSwgCi0gICAgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc3LCA3OSwgODYsIDY5LCAKLSAgICA3NywgNjksIDc4LCAyMTIsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCA3OSwgODYsIDY5LCAxMjgsIDc3LCA3OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgCi0gICAgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCAKLSAgICA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIAotICAgIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgODQsIDc5LCA4MiwgODcsIDY1LCA4OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgCi0gICAgODIsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgMjEwLCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAKLSAgICAxMjgsIDc3LCA3OSwgODQsIDEyOCwgNzcsIDc5LCA4MywgODEsIDg1LCA2OSwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIAotICAgIDg1LCA3NywgMTI4LCA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgCi0gICAgNzEsIDczLCA2NywgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIAotICAgIDIwNiwgNzcsIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgCi0gICAgNzcsIDc5LCA3OSwgNjgsIDEyOCwgNzcsIDc5LCA3OSwgMTk2LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAKLSAgICA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIAotICAgIDc5LCA3OCwgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgCi0gICAgNzksIDc4LCA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCAKLSAgICA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCi0gICAgMjExLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCAKLSAgICA4MywgMTI4LCA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgCi0gICAgMTI4LCA3NywgNzksIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCAKLSAgICA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIDg5LCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIAotICAgIDc5LCA3OCwgNjksIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIAotICAgIDcyLCA2NSwgNzcsIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDgyLCA0NSwgNTcsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTYsIDEyOCwgNzcsIDc5LCAKLSAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTUsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgCi0gICAgNTQsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCAKLSAgICA3MywgNjksIDgyLCA0NSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTEsIDEyOCwgNzcsIAotICAgIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDU0LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDUxLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCAxMjgsIDc3LCA3OSwgNjgsIDIwMSwgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIAotICAgIDc5LCA2OCwgNjksIDc3LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAKLSAgICAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCA3OSwgNjYsIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAKLSAgICAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCA3OCwgNjUsIDgzLCAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCAKLSAgICA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCA3NiwgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAKLSAgICAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCAKLSAgICA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIAotICAgIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgCi0gICAgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIAotICAgIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAKLSAgICAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIAotICAgIDgzLCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgCi0gICAgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAKLSAgICA3MywgODQsIDY1LCA4MiwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIAotICAgIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIAotICAgIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgCi0gICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIAotICAgIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCAKLSAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIAotICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgCi0gICAgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIAotICAgIDEyOCwgNzcsIDczLCA2OCwgNDUsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCA4MiwgCi0gICAgNzksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCAKLSAgICA3NywgNzMsIDY3LCA4MiwgMjA3LCA3NywgNzMsIDY3LCAyMTAsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIDcyLCA2NSwgMTI4LCAKLSAgICA3NywgNzIsIDEyOCwgNzcsIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA3NywgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCA3NywgCi0gICAgNzEsIDc5LCA4OCwgMTI4LCA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDc5LCAKLSAgICAxMjgsIDc3LCA3MSwgMjA3LCA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIDcxLCAKLSAgICA2OSwgODgsIDEyOCwgNzcsIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgMTI4LCAKLSAgICA3NywgNzEsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAotICAgIDEyOCwgNzcsIDcxLCA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgCi0gICAgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY1LCAKLSAgICA4MywgNjUsIDgxLCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIDEyOCwgNzcsIAotICAgIDcxLCA2NSwgODQsIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIDEyOCwgNzcsIAotICAgIDcwLCA3OSwgNzgsIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIDg5LCA2NSwgCi0gICAgODEsIDEyOCwgNzcsIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzAsIDY5LCAKLSAgICA4NSwgODEsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCA3NywgNjksIAotICAgIDkwLCA5MCwgNzksIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIDgxLCAxMjgsIAotICAgIDc3LCA2OSwgODUsIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzcsIDY5LCA4NCwgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgODQsIDgyLCAKLSAgICA3MywgNjUsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIDY2LCA2OSwgNzYsIAotICAgIDg1LCA4MywgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAxMjgsIDc3LCA2OSwgCi0gICAgODQsIDY1LCA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIDczLCA2NSwgMjA2LCAKLSAgICA3NywgNjksIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCAxOTcsIDc3LCA2OSwgODMsIAotICAgIDc5LCAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgCi0gICAgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgODIsIDczLCA2OCwgNzMsIDY1LCA3OCwgODMsIAotICAgIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgCi0gICAgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIDY5LCA3OCwgNzksIDgyLCA2NSwgMjAwLCAKLSAgICA3NywgNjksIDc4LCA3OSwgNjksIDEyOCwgNzcsIDY5LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3NywgNjksIDc4LCAxMjgsIAotICAgIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc3LCA2OSwgCi0gICAgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCAyMTAsIDc3LCA2OSwgNzcsIDQ1LCA4MSwgNzksIDgwLCAKLSAgICA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIDc3LCA2OSwgMjA1LCA3NywgNjksIDc2LCA3OSwgNjgsIDczLCAxOTUsIDc3LCAKLSAgICA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgNjksIDczLCA5MCwgNzMsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDg0LCA3OSwgNzgsIAotICAgIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNjksIDcxLCA2NSwgNzYsIDczLCAKLSAgICAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCA2OSwgMjAxLCA3NywgNjksIAotICAgIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCA2OSwgCi0gICAgMjAyLCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA3NywgNjksIDY4LCAKLSAgICA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNzcsIDY5LCA2OCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgNzcsIAotICAgIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCA2NSwgCi0gICAgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgCi0gICAgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIDY2LCA4NSwgODUsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgCi0gICAgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCAKLSAgICA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIAotICAgIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgCi0gICAgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCAKLSAgICA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIAotICAgIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgCi0gICAgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIAotICAgIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCAKLSAgICA2NSwgODksIDY5LCAyMDMsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIAotICAgIDY1LCA4OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgCi0gICAgMTI4LCA3NywgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgODQsIDgyLCAKLSAgICA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAxMjgsIAotICAgIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgODMsIDcyLCAKLSAgICA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCA3NiwgNzMsIAotICAgIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg3LCA2NSwgODIsIDIwMSwgNzcsIDY1LCA4MiwgCi0gICAgODUsIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCAKLSAgICA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgMjExLCA3NywgNjUsIAotICAgIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIAotICAgIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIAotICAgIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIAotICAgIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4NCwgNjksIDc2LCA4MCwgNzMsIDY5LCA2NywgMTk3LCA3NywgNjUsIDc4LCA4MywgCi0gICAgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAorICAgIDg3LCA3NiwgMTI4LCA3OSwgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgCisgICAgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAKKyAgICAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIAorICAgIDgwLCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgCisgICAgMTI4LCA3OSwgODYsIDY1LCA3NiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAKKyAgICAxOTYsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIAorICAgIDY2LCA3OSwgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgCisgICAgNzgsIDY3LCAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgCisgICAgNzksIDg0LCA3MiwgNjksIDgyLCAyMTEsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIAorICAgIDIwNiwgNzksIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgCisgICAgMTI4LCA3OSwgODMsIDY1LCA3MSwgMTk3LCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCAKKyAgICA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDgzLCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgCisgICAgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIDIwNiwgNzksIDgyLCA3MywgODksIDE5MywgNzksIDgyLCAKKyAgICA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgODIsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCA3OSwgODIsIDY3LCA3MiwgCisgICAgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIDIwNiwgNzksIDgwLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIAorICAgIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA3OCwgMTk5LCA3OSwgCisgICAgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIDEyOCwgNzksIDgwLCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc5LCA4MCwgNjksIAorICAgIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA0NSwgCisgICAgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCAKKyAgICA3OCwgNDUsIDc5LCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgMjA3LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIAorICAgIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCAKKyAgICA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDc4LCAxMjgsIDc5LCA3OSwgOTAsIDY5LCAxMjgsIDc5LCA3OSwgODksIAorICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgODUsIDEyOCwgNzksIDc5LCA3MiwgCisgICAgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDc4LCAKKyAgICA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCA4MiwgMTI4LCAKKyAgICA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIDc5LCA3OCwgNjksIAorICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDc5LCA3OCwgCisgICAgNjksIDQ1LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgNDUsIDY1LCA3OCwgNjgsIDQ1LCA4MywgNzMsIDg4LCA4NCwgCisgICAgNzMsIDY5LCA4NCwgNzIsIDEyOCwgNzksIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIAorICAgIDEyOCwgNzksIDc4LCA0NSwgNzksIDcwLCAxOTgsIDc5LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgCisgICAgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAKKyAgICAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIAorICAgIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIAorICAgIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgCisgICAgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCA3OSwgNzMsIDIwNCwgCisgICAgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIDIwNSwgNzksIDcxLCA4MiwgNjksIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAKKyAgICA3NSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIDIwNSwgNzksIDcwLCA3MCwgNzMsIAorICAgIDY3LCA2OSwgODIsIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDE5NywgCisgICAgNzksIDcwLCA3MCwgMTI4LCA3OSwgNjksIDg5LCAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgNzksIDY5LCA2OSwgMTI4LCA3OSwgCisgICAgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDY4LCAxMjgsIDc5LCA2OCwgMTk2LCA3OSwgNjcsIDg0LCA3OSwgODAsIDg1LCAKKyAgICA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIDg0LCA2OSwgMjEyLCA3OSwgNjcsIAorICAgIDg0LCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIDY3LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzksIDY3LCAKKyAgICAyMTAsIDc5LCA2NywgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIAorICAgIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgCisgICAgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCAKKyAgICA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCAKKyAgICA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIAorICAgIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgCisgICAgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCAKKyAgICA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIAorICAgIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgCisgICAgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCAKKyAgICA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgCisgICAgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgCisgICAgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgCisgICAgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAKKyAgICAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIAorICAgIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgCisgICAgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAKKyAgICAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAKKyAgICAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIAorICAgIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgCisgICAgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgCisgICAgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAKKyAgICAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCAKKyAgICA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIAorICAgIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgCisgICAgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgCisgICAgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgCisgICAgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCAKKyAgICA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIAorICAgIDc5LCAxMjgsIDc4LCA4OSwgODUsIDc4LCAxMjgsIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIAorICAgIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgCisgICAgNzksIDEyOCwgNzgsIDg5LCA3OSwgNzgsIDEyOCwgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgCisgICAgODksIDc0LCA2NSwgMTI4LCA3OCwgODksIDczLCA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAKKyAgICAyMTIsIDc4LCA4OSwgNzMsIDIxMSwgNzgsIDg5LCA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCAKKyAgICA3OCwgNDUsIDY4LCA3OSwgMTI4LCA3OCwgODksIDczLCA3OCwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgCisgICAgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgCisgICAgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIDc4LCA4OSwgNjksIDc4LCAxMjgsIDc4LCA4OSwgNjksIDcyLCAKKyAgICAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgCisgICAgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgNzMsIDEyOCwgNzgsIDg5LCAKKyAgICA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIAorICAgIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIAorICAgIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgODUsIAorICAgIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgCisgICAgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgCisgICAgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAKKyAgICAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIAorICAgIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgCisgICAgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCA3OCwgODUsIDc2LCAxMjgsIDc4LCA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgCisgICAgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA2OSwgMTI4LCA3OCwgODUsIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OSwgMTc3LCA3OCwgODUsIDQ4LCA1MCwgNTAsIAorICAgIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCAKKyAgICA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDc4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDc4LCA4NSwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgCisgICAgODUsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA3OCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA3OCwgODQsIDg4LCA3MywgODYsIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIAorICAgIDEyOCwgNzgsIDg0LCA4NSwgNzQsIDEyOCwgNzgsIDg0LCAyMTMsIDc4LCA4NCwgODMsIDY1LCA4NSwgMTI4LCA3OCwgODQsIAorICAgIDc5LCA4MSwgODAsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDc5LCA3MSwgMTI4LCA3OCwgODQsIDc5LCAxOTksIDc4LCA4NCwgCisgICAgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNzIsIDY1LCA4NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzgsIDcxLCA2NiwgNjUsIAorICAgIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc3LCAxMjgsIDc4LCA4NCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA4NCwgNjUsIDgwLCAxMjgsIDc4LCA4NCwgNjUsIDIwOCwgNzgsIDg0LCA2NSwgNjUsIDEyOCwgNzgsIDgzLCA4NSwgCisgICAgNzksIDIxMiwgNzgsIDgzLCA4NSwgNzgsIDEyOCwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzgsIDgzLCA3OSwgNzcsIDEyOCwgCisgICAgNzgsIDgzLCA3MywgNjksIDY5LCA4NCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDgwLCAxMjgsIDc4LCA4MywgNzMsIDY5LCAKKyAgICA2OSwgMTI4LCA3OCwgODMsIDcyLCA4NSwgODQsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDIxMiwgNzgsIDgzLCA3MiwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgODMsIDcyLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDgxLCAxMjgsIDc4LCA4MywgNzIsIDY1LCAxMjgsIDc4LCAKKyAgICA4MywgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA4MywgNjksIDc4LCAxMjgsIDc4LCA4MywgNjUsIDEyOCwgNzgsIAorICAgIDgyLCA4OSwgODgsIDEyOCwgNzgsIDgyLCA4OSwgODQsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgODksIDgyLCAxMjgsIDc4LCA4MiwgODksIDgwLCAxMjgsIDc4LCA4MiwgODksIDEyOCwgNzgsIDgyLCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDgyLCA4NSwgODQsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDgyLCAxMjgsIDc4LCAKKyAgICA4MiwgODUsIDgwLCAxMjgsIDc4LCA4MiwgODUsIDY1LCAxMjgsIDc4LCA4MiwgODUsIDEyOCwgNzgsIDgyLCA3OSwgODgsIAorICAgIDEyOCwgNzgsIDgyLCA3OSwgODAsIDEyOCwgNzgsIDgyLCA3OSwgMTI4LCA3OCwgODIsIDY5LCA4OCwgMTI4LCA3OCwgODIsIAorICAgIDY5LCA4NCwgMTI4LCA3OCwgODIsIDY5LCAyMTEsIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIAorICAgIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCA2NSwgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgCisgICAgMTI4LCA3OCwgODEsIDczLCA3MSwgMTI4LCA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgODgsIDEyOCwgNzgsIDc5LCA4NywgCisgICAgNjcsIDEyOCwgNzgsIDc5LCA4NiwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCAKKyAgICA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIAorICAgIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgCisgICAgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCAKKyAgICA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAyMTIsIDc4LCA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODMsIDE5NywgNzgsIAorICAgIDc5LCA4MiwgODQsIDcyLCA4NywgNjksIDgzLCAyMTIsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDc4LCA3OSwgCisgICAgODIsIDg0LCA3MiwgNjksIDY1LCA4MywgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3OCwgNzksIAorICAgIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCA4MiwgNjgsIDczLCAxOTUsIDc4LCA3OSwgMjEwLCA3OCwgNzksIDgwLCAxMjgsIAorICAgIDc4LCA3OSwgNzksIDc4LCA4NSwgMTI4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OSwgNzgsIDcwLCA3OSwgODIsIDc1LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc4LCA3OSwgNzgsIDQ1LCAKKyAgICA3NCwgNzksIDczLCA3OCwgNjksIDgyLCAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA2NSwgNzUsIDczLCA3OCwgCisgICAgMTk5LCA3OCwgNzksIDc4LCAxMjgsIDc4LCA3OSwgNzcsIDczLCA4MywgNzcsIDE5MywgNzgsIDc5LCA3NywgNzMsIDc4LCAKKyAgICA2NSwgMjA0LCA3OCwgNzksIDc1LCA3MiwgODUsIDc1LCAxMjgsIDc4LCA3OSwgNjgsIDY5LCAxMjgsIDc4LCA3OSwgNjUsIAorICAgIDEyOCwgNzgsIDc5LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA4NSwgCisgICAgMTI4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgCisgICAgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNzgsIAorICAgIDc4LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDczLCAxMjgsIDc4LCA3OCwgCisgICAgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIDc4LCA3OCwgNzIsIDY1LCAKKyAgICAxMjgsIDc4LCA3OCwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3MywgNzMsIAorICAgIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDY1LCAxMjgsIAorICAgIDc4LCA3OCwgNzEsIDEyOCwgNzgsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDc4LCA3NywgMTI4LCA3OCwgNzYsIDY1LCA4NSwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgCisgICAgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCAKKyAgICA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgCisgICAgNzYsIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAyMDcsIDc4LCA3NSwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgCisgICAgNzgsIDc1LCA2NSwgODUsIDEyOCwgNzgsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4OSwgODgsIAorICAgIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODksIDgyLCAxMjgsIAorICAgIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCA3OCwgNzQsIDg1LCAKKyAgICA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIDc0LCA4NSwgNjksIAorICAgIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgNzksIDg4LCAxMjgsIAorICAgIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAxMjgsIDc4LCA3NCwgCisgICAgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCA3MywgODAsIDEyOCwgCisgICAgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDEyOCwgNzgsIAorICAgIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDc0LCA2OSwgCisgICAgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAKKyAgICA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIDY5LCAxMjgsIDc4LCAKKyAgICA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgNzYsIDczLCAxMjgsIAorICAgIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzMsIDg4LCAxMjgsIDc4LCA3MywgCisgICAgODQsIDgyLCA2OSwgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIDcxLCA4NSwgMTI4LCAKKyAgICA3OCwgNzMsIDgwLCAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDg5LCAxMjgsIAorICAgIDc4LCA3MywgNzgsIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzgsIDczLCA3OCwgCisgICAgNjksIDg0LCA2OSwgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc4LCAKKyAgICA3MywgNzgsIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDE3OCwgNzgsIAorICAgIDczLCA3OCwgNTcsIDEyOCwgNzgsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDc3LCAxMjgsIDc4LCA3MywgMjA1LCA3OCwgNzMsIAorICAgIDc1LCA3OSwgNzYsIDgzLCA2NiwgODUsIDgyLCAxOTksIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgCisgICAgNzMsIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIDcyLCA4MywgNzIsIDg2LCAKKyAgICA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3MSwgNzMsIAorICAgIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDIxMiwgCisgICAgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIAorICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgCisgICAgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCA2OSwgODUsIAorICAgIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc4LCA3MywgCisgICAgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgMTI4LCA3OCwgCisgICAgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgNjUsIDEyOCwgCisgICAgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIDc4LCA3MSwgODUsIDg1LCAKKyAgICAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNzksIAorICAgIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgNzksIDg1LCAxMjgsIDc4LCA3MSwgNzksIDIxMywgCisgICAgNzgsIDcxLCA3OSwgODQsIDEyOCwgNzgsIDcxLCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3OSwgODAsIDEyOCwgNzgsIDcxLCAKKyAgICA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDcyLCAxMjgsIDc4LCA3MSwgNzksIAorICAgIDY5LCAyMDAsIDc4LCA3MSwgMjA3LCA3OCwgNzEsIDc1LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDg3LCA2NSwgCisgICAgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzgsIDEyOCwgNzgsIDcxLCAKKyAgICA3NSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA2OSwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIAorICAgIDg1LCAxOTcsIDc4LCA3MSwgNzUsIDczLCA3OCwgNjgsIDIwMSwgNzgsIDcxLCA3NSwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgNzEsIDc1LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgNjUsIDc3LCA3MywgMTI4LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA3MywgNjksIDgwLCAxMjgsIDc4LCAKKyAgICA3MSwgNzMsIDY5LCAxMjgsIDc4LCA3MSwgNzIsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg3LCA2NSwgNjksIDc4LCAxMjgsIAorICAgIDc4LCA3MSwgNzEsIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCisgICAgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgMjA5LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc4LCAxMjgsIDc4LCAKKyAgICA3MSwgNzEsIDg1LCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2OSwgNjksIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDgzLCA3MiwgNjUsIDE5NywgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgCisgICAgMjA2LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDEyOCwgNzgsIDcxLCA3MSwgNzksIDc5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDczLCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgODgsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCA3MSwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgNjUsIDY5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIAorICAgIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MSwgCisgICAgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNjksIDY1LCAKKyAgICA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCA2NSwgODAsIDEyOCwgNzgsIAorICAgIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDY1LCA3MywgMTI4LCA3OCwgCisgICAgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIDc4LCA3MCwgMTI4LCA3OCwgCisgICAgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgODAsIDY5LCA4MiwgMTI4LCAKKyAgICA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCAxOTcsIDc4LCA2OSwgODcsIAorICAgIDEyOCwgNzgsIDY5LCAyMTUsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDc2LCAxMjgsIDc4LCA2OSwgODUsIDg0LCA4MiwgCisgICAgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCA4NywgNzksIDgyLCA3NSwgNjksIAorICAgIDE5NiwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIDc4LCA2OSwgODIsIAorICAgIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIDEyOCwgCisgICAgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA3OSwgNjksIDEyOCwgCisgICAgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgNzgsIDY5LCAKKyAgICA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCAxMjgsIDc4LCA2OSwgCisgICAgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgMTI4LCA3OCwgNjgsIDg1LCAKKyAgICA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgNzgsIDY4LCA4NSwgODAsIAorICAgIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAxMjgsIDc4LCA2OCwgNzksIAorICAgIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCA2OCwgNzksIDc4LCAxMjgsIAorICAgIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIDY4LCA3MywgODgsIDEyOCwgCisgICAgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgODAsIDEyOCwgNzgsIDY4LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCA2NSwgMTI4LCA3OCwgNjgsIAorICAgIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA2OCwgCisgICAgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDgwLCAKKyAgICAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCA2NSwgODgsIDEyOCwgNzgsIDY4LCAKKyAgICA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIAorICAgIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjgsIDY1LCAKKyAgICAxOTMsIDc4LCA2NywgNzIsIDY1LCA4NSwgMTI4LCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgMTI4LCAKKyAgICA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgNzgsIAorICAgIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCA3OCwgCisgICAgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIDc5LCAKKyAgICAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIDc4LCAKKyAgICA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgNzgsIAorICAgIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAxMjgsIAorICAgIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIDg1LCAKKyAgICA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDgzLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjUsIDg1LCA2OCwgNzMsIAorICAgIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3OCwgCisgICAgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCAKKyAgICA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA3OCwgNjUsIDgzLCA2NSwgMjA0LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgCisgICAgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIAorICAgIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIAorICAgIDY1LCA3NywgMTI4LCA3OCwgNjUsIDc1LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIAorICAgIDY1LCA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNzEsIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgCisgICAgNjUsIDEyOCwgNzgsIDY1LCA2NiwgNjUsIDg0LCA2NSwgNjksIDY1LCAyMDYsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCAKKyAgICA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIAorICAgIDY1LCA3MywgMTI4LCA3OCwgNjUsIDE5MywgNzgsIDY1LCA1MiwgMTI4LCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgNDUsIAorICAgIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAxMjgsIAorICAgIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3OCwgCisgICAgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgNTEsIAorICAgIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCA0OSwgCisgICAgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgNTAsIAorICAgIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIAorICAgIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIDQ5LCAKKyAgICA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNDgsIAorICAgIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgCisgICAgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIDg0LCAKKyAgICAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgMTI4LCAKKyAgICA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIDEyOCwgCisgICAgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIDY5LCAKKyAgICAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCA4NiwgCisgICAgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIDg1LCAKKyAgICA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAxOTMsIAorICAgIDc3LCA4NSwgODUsIDEyOCwgNzcsIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgCisgICAgNzMsIDE5NSwgNzcsIDg1LCA4MywgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCAKKyAgICA3NywgODUsIDgzLCA3MiwgMTc5LCA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODMsIAorICAgIDEyOCwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NywgODUsIDgyLCA2OCwgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgCisgICAgODUsIDgxLCA2OCwgNjUsIDc3LCAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCAKKyAgICA3OSwgODQsIDEyOCwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIAorICAgIDc5LCAxMjgsIDc3LCA4NSwgNzgsIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgCisgICAgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAKKyAgICAyMTIsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIAorICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCAKKyAgICA3NiwgNjksIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIAorICAgIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAKKyAgICAyMDEsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgCisgICAgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgCisgICAgMTk5LCA3NywgODUsIDY5LCA3OCwgMTI4LCA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgCisgICAgNjcsIDIwMCwgNzcsIDg1LCA2NywgNjUsIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA4MywgMTI4LCA3NywgODUsIDY1LCAKKyAgICA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgMTI4LCA3NywgODUsIDQ1LCA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIAorICAgIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgODIsIDIwNywgNzcsIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIAorICAgIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCA2OSwgMjExLCA3NywgNzksIAorICAgIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCAKKyAgICA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgCisgICAgNzgsIDg0LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDEyOCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIAorICAgIDc5LCA4NiwgNjksIDEyOCwgNzcsIDc5LCA4NSwgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgCisgICAgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCAKKyAgICA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgCisgICAgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzksIDgyLCAKKyAgICA4NywgNjUsIDg5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCA4MiwgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDc3LCA3OSwgODQsIAorICAgIDc5LCAyMTAsIDc3LCA3OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzcsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc3LCA3OSwgCisgICAgODQsIDEyOCwgNzcsIDc5LCA4MywgODEsIDg1LCA2OSwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIDg1LCA3NywgMTI4LCAKKyAgICA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCisgICAgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCA3NywgNzksIDc5LCAKKyAgICA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIDIwNiwgNzcsIAorICAgIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDc5LCA3OSwgCisgICAgNjgsIDEyOCwgNzcsIDc5LCA3OSwgMTk2LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgODMsIAorICAgIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCA3OSwgCisgICAgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgNzksIAorICAgIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA3NywgCisgICAgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIDc4LCAKKyAgICA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIAorICAgIDEyOCwgNzcsIDc5LCA3OCwgNjksIDg5LCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIDc5LCA3OCwgNjksIDIxNywgCisgICAgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIDc3LCAKKyAgICA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTcsIAorICAgIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTYsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDgyLCA0NSwgNTUsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTQsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgCisgICAgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTEsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCAKKyAgICA3MywgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDU0LCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUxLCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgMTI4LCA3NywgNzksIDY4LCAyMDEsIDc3LCA3OSwgNjgsIDY5LCA4MywgCisgICAgODQsIDg5LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA4MiwgMjA2LCA3NywgNzksIDY4LCA2OSwgNzcsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIAorICAgIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIAorICAgIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIAorICAgIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIAorICAgIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAKKyAgICAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCAKKyAgICA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIAorICAgIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgCisgICAgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCAKKyAgICA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIAorICAgIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgCisgICAgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA3NywgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAKKyAgICAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIDc1LCAxMjgsIDc3LCA3MywgNzYsIDczLCA4NCwgNjUsIAorICAgIDgyLCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDczLCA3NSwgCisgICAgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCA3NywgNzMsIDczLCAKKyAgICA3NywgMTI4LCA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgCisgICAgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc3LCA3MywgNjksIDg1LCAKKyAgICA3NywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIDg1LCAyMDUsIDc3LCA3MywgNjksIAorICAgIDgwLCAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIDczLCA2OCwgNzYsIDczLCA3OCwgCisgICAgMTk3LCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgNzcsIDczLCA2OCwgNjgsIDc2LCAKKyAgICA2OSwgMTI4LCA3NywgNzMsIDY4LCA0NSwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIAorICAgIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKKyAgICAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgMTI4LCA3NywgNzIsIDY1LCAKKyAgICAxMjgsIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgMTI4LCA3NywgNzEsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCA3NywgNzEsIDg1LCAxMjgsIAorICAgIDc3LCA3MSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgCisgICAgNzksIDEyOCwgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDczLCA2OSwgMTI4LCA3NywgCisgICAgNzEsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDg1LCAKKyAgICAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgMTI4LCA3NywgNzEsIAorICAgIDY2LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDY5LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNjUsIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgNzEsIDY1LCA4OCwgCisgICAgMTI4LCA3NywgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAxMjgsIDc3LCA3MSwgCisgICAgMTI4LCA3NywgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgNzcsIDcwLCA3MywgCisgICAgODksIDY1LCA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAxMjgsIDc3LCAKKyAgICA3MCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIDY1LCAxMjgsIAorICAgIDc3LCA2OSwgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIDY5LCA4NSwgCisgICAgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNzcsIAorICAgIDY5LCA4NCwgODIsIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgNjksIDg0LCA3OSwgCisgICAgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCA2OSwgNzEsIAorICAgIDEyOCwgNzcsIDY5LCA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIDY5LCA3OCwgCisgICAgNzMsIDY1LCAyMDYsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIAorICAgIDE5NywgNzcsIDY5LCA4MywgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIAorICAgIDY5LCA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgCisgICAgNjUsIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCAKKyAgICA4MiwgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA3OSwgODIsIAorICAgIDY1LCAyMDAsIDc3LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIAorICAgIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgCisgICAgNDUsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCAKKyAgICA2OCwgNzMsIDE5NSwgNzcsIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIAorICAgIDcxLCA2NSwgODQsIDc5LCA3OCwgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA2OSwgCisgICAgNzEsIDY1LCA3NiwgNzMsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDY5LCAKKyAgICAyMDEsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgMTI4LCAKKyAgICA3NywgNjksIDY5LCAyMDIsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDc3LCAxMjgsIAorICAgIDc3LCA2OSwgNjgsIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY5LCA2OCwgCisgICAgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY4LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCAKKyAgICA2NSwgMjEyLCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgCisgICAgMjEzLCA3NywgNjcsIDcyLCA2NSwgMjA2LCA3NywgMTk1LCA3NywgNjYsIDg1LCA4NSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgCisgICAgODEsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAKKyAgICA3NywgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDY2LCA3OSwgMTI4LCAKKyAgICA3NywgNjYsIDczLCA4NCwgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA3NywgNjYsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCA4NSwgODIsIDczLCAKKyAgICAxMjgsIDc3LCA2NiwgNjksIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA2NiwgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgMTI4LCA3NywgCisgICAgNjYsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY2LCAKKyAgICA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIAorICAgIDEyOCwgNzcsIDY2LCA2NSwgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAxMjgsIDc3LCAKKyAgICA2NiwgNTAsIDEyOCwgNzcsIDY1LCA4OSwgNjksIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIAorICAgIDY1LCA4OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDg4LCAxMjgsIDc3LCA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgCisgICAgNzcsIDY1LCA4NCwgODIsIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCAKKyAgICA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIAorICAgIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgCisgICAgNzcsIDY1LCA4MywgNzIsIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCAKKyAgICA2NywgODUsIDc2LCA3MywgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODcsIDY1LCA4MiwgCisgICAgMjAxLCA3NywgNjUsIDgyLCA4NSwgNzUsIDg1LCAxMjgsIDc3LCA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCAKKyAgICA2NSwgODIsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIAorICAgIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDIxMSwgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCAKKyAgICA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIAorICAgIDY3LCA3MiwgNjksIDIwNiwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgCisgICAgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgCisgICAgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgCisgICAgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4NCwgNjksIDc2LCA4MCwgNzMsIDY5LCA2NywgMTk3LCA3NywgNjUsIDc4LCAKKyAgICA4MywgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAogICAgIDIxOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDczLCA2NywgNzIsIDY1LCA2OSwgNjUsIDIwNiwgCiAgICAgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDc2LCA3MywgNzgsIAogICAgIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIDc4LCA2NywgNzIsIDIxMywgNzcsIDY1LCA3OCwgCkBAIC0yMzIyLDE0MjAgKzIzNDUsMTQyNiBAQAogICAgIDQ4LCA0OCwgMTc4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc3LCA0OCwgCiAgICAgNDgsIDQ5LCAxMjgsIDc3LCA0OCwgNDgsIDE3NywgNzYsIDIxOCwgNzYsIDg5LCA4OSwgMTI4LCA3NiwgODksIDg4LCAxMjgsIAogICAgIDc2LCA4OSwgODQsIDEyOCwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzYsIDg5LCA4MiwgMTI4LCA3NiwgODksIDgwLCAxMjgsIAotICAgIDc2LCA4OSwgNzMsIDg0LCAxMjgsIDc2LCA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgODksIDY3LCA3MywgNjUsIDIwNiwgCi0gICAgNzYsIDg4LCAxMjgsIDc2LCA4NywgNzksIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgNzYsIDg3LCA3MywgNzMsIDEyOCwgCi0gICAgNzYsIDg3LCA3MywgMTI4LCA3NiwgODcsIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAxMjgsIDc2LCA4NywgNjUsIDEyOCwgCi0gICAgNzYsIDg1LCA4OCwgMTI4LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIAotICAgIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIAotICAgIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCA4NSwgMjAwLCA3NiwgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgCi0gICAgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgCi0gICAgODUsIDE5NywgNzYsIDg1LCA2NiwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDg1LCA1MSwgMTI4LCA3NiwgCi0gICAgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgNzcsIDEyOCwgNzYsIDgyLCA3MywgCi0gICAgMTI4LCA3NiwgODIsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCAKLSAgICA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIDY5LCAxOTYsIDc2LCA3OSwgODcsIAotICAgIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDc2LCA3OSwgCi0gICAgODcsIDQ1LCA3NywgNzMsIDE5NiwgNzYsIDc5LCA4NywgNDUsIDcwLCA2NSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgNzYsIDc5LCAKLSAgICA4NywgNDUsIDE4NSwgNzYsIDc5LCA4NiwgMTk3LCA3NiwgNzksIDg1LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA4NSwgNjgsIAotICAgIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDc2LCA3OSwgODUsIDY4LCA3NiwgMjE3LCA3NiwgNzksIDg0LCA4NSwgCi0gICAgODMsIDEyOCwgNzYsIDc5LCA4NCwgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIDc5LCA4MiwgODIsIDY1LCAKLSAgICA3MywgNzgsIDY5LCAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA4NCwgMTI4LCAKLSAgICA3NiwgNzksIDc5LCA4MCwgNjksIDE5NiwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgMjA4LCA3NiwgNzksIAotICAgIDc5LCA3OCwgMTI4LCA3NiwgNzksIDc5LCAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCA3NywgCi0gICAgMTI4LCA3NiwgNzksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIDQ1LCAKLSAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODksIDgyLCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgCi0gICAgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIAotICAgIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIDY1LCAKLSAgICA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgCi0gICAgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIDc5LCAKLSAgICA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIDc3LCAxMjgsIDc2LCA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgNzMsIAotICAgIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgNzYsIDEyOCwgNzYsIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCA3OSwgCi0gICAgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NiwgNzksIDcxLCAxMjgsIDc2LCAKLSAgICA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgNzYsIDc5LCA2NywgNzksIDc3LCA3OSwgODQsIDczLCA4NiwgCi0gICAgNjksIDEyOCwgNzYsIDc5LCA2NywgNzUsIDczLCA3OCwgNzEsIDQ1LCA4MywgNzIsIDczLCA3MCwgMjEyLCA3NiwgNzksIDY3LCAKLSAgICAyMDMsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3NiwgNzksIDY1LCAxMjgsIDc2LCA3OCwgMTI4LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc5LCA3OSwgCi0gICAgMTI4LCA3NiwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNzksIDc5LCAKLSAgICAxMjgsIDc2LCA3NiwgNzYsIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDczLCA3MywgMTI4LCA3NiwgNzYsIDc2LCA3MywgMTI4LCAKLSAgICA3NiwgNzYsIDc2LCA2OSwgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDg1LCAxMjgsIAotICAgIDc2LCA3NiwgNzYsIDY1LCA3MywgMTI4LCA3NiwgNzYsIDc2LCA2NSwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDEyOCwgCi0gICAgNzYsIDc2LCA3NiwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgNzMsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCAKLSAgICA3NCwgMTI4LCA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCAKLSAgICA3MywgODQsIDg0LCA3NiwgNjksIDEyOCwgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgCi0gICAgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAyMDAsIDc2LCA3MywgODMsIDIxMywgNzYsIDczLCA4MywgCi0gICAgMTI4LCA3NiwgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgCi0gICAgODAsIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDgwLCAyMTEsIDc2LCA3MywgMjA4LCA3NiwgNzMsIDc4LCAKLSAgICA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzgsIDc1LCA2OSwgMTk2LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCA3MywgNzgsIAotICAgIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIDc2LCA3MywgCi0gICAgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDUxLCAKLSAgICAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3NiwgNzMsIAotICAgIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3NiwgCi0gICAgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc2LCAKLSAgICA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NiwgNzMsIAotICAgIDc3LCA2NiwgMjExLCA3NiwgNzMsIDc3LCAxOTQsIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCA4NCwgCi0gICAgNzIsIDEyOCwgNzYsIDczLCA3NiwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCAKLSAgICA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgCi0gICAgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MSwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDczLCAKLSAgICA3MCwgODQsIDY5LCA4MiwgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3NiwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIDY5LCAxMjgsIAotICAgIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDY2LCA4MiwgNjUsIDEyOCwgCi0gICAgNzYsIDczLCA2NiwgNjksIDgyLCA4NCwgODksIDEyOCwgNzYsIDczLCA2NSwgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDc2LCAKLSAgICA3MiwgNzMsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzYsIDcyLCA2NSwgCi0gICAgMTk5LCA3NiwgNzIsIDY1LCA2NSwgMTI4LCA3NiwgNzIsIDEyOCwgNzYsIDY5LCA5MCwgNzIsIDEyOCwgNzYsIDY5LCA4OCwgCi0gICAgMTI4LCA3NiwgNjksIDg2LCA3MywgODQsIDY1LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjksIDg1LCA3NywgMTI4LCAKLSAgICA3NiwgNjksIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgCi0gICAgMTI4LCA3NiwgNjksIDIxMywgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNzYsIDY5LCA4NCwgODQsIDY5LCAKLSAgICA4MiwgMTI4LCA3NiwgNjksIDIxMiwgNzYsIDY5LCA4MywgODMsIDY5LCAyMTAsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIAotICAgIDcyLCA2NSwgNzgsIDEyOCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDc2LCA2OSwgODAsIDY3LCA3MiwgCi0gICAgMTkzLCA3NiwgNjksIDgwLCAxMjgsIDc2LCA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgCi0gICAgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCAKLSAgICA3OCwgNzMsIDIxMSwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDU1LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1NCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNTMsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA1MSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTAsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDQ5LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgCi0gICAgNzYsIDY5LCA3OCwgNzEsIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCAKLSAgICA3NiwgNjksIDc2LCA2OSwgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIAotICAgIDc3LCA3NywgNjUsIDEyOCwgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzMsIDEyOCwgNzYsIDY5LCA3MSwgCi0gICAgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCAKLSAgICA2OSwgNzEsIDEyOCwgNzYsIDY5LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIAotICAgIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCAKLSAgICA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIAotICAgIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgCi0gICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIAotICAgIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA3NiwgNjksIDcwLCA4NCwgCi0gICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgMTI4LCA3NiwgNjksIDY5LCA4MiwgNjUsIDY5LCAKLSAgICA4NywgNjUsIDEyOCwgNzYsIDY5LCA2OSwgNzUsIDEyOCwgNzYsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc2LCA2OSwgNjgsIAotICAgIDcxLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgNzAsIDEyOCwgCi0gICAgNzYsIDY5LCA2NSwgMTk4LCA3NiwgNjksIDY1LCA2OCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNjUsIDY4LCA2OSwgODIsIAotICAgIDEyOCwgNzYsIDY5LCA2NSwgMTk2LCA3NiwgNjgsIDY1LCA3OCwgMTI4LCA3NiwgNjgsIDUwLCAxMjgsIDc2LCA2NywgMjAxLCAKLSAgICA3NiwgNjcsIDE5NywgNzYsIDY1LCA5MCwgMjE3LCA3NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NiwgNjUsIAotICAgIDg4LCAxMjgsIDc2LCA2NSwgODcsIDEyOCwgNzYsIDY1LCAyMTUsIDc2LCA2NSwgODUsIDc2LCA2NSwgMTI4LCA3NiwgNjUsIAotICAgIDg1LCA3NSwgNjUsIDIxOCwgNzYsIDY1LCA4NSwgNzQsIDEyOCwgNzYsIDY1LCA4NCwgNzMsIDc4LCA2NSwgODQsIDE5NywgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDc1LCAxMjgsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNzYsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCAyMDEsIAotICAgIDc2LCA2NSwgODIsIDcxLCA2OSwgODMsIDg0LCAxMjgsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgCi0gICAgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgCi0gICAgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAKLSAgICAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzcsIDgwLCAxMjgsIDc2LCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY5LCAxOTYsIAotICAgIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgNjgsIDcyLCAxMjgsIDc2LCAKLSAgICA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgODksIDY1LCA3OSwgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUwLCA1MiwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTQsIDUyLCAxODQsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgCi0gICAgNDksIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDksIDE4MywgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OCwgNTYsIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTMsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTAsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAotICAgIDUyLCA1NSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgCi0gICAgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgMTg1LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNTEsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCAKLSAgICA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1MywgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNDksIDUyLCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU3LCAKLSAgICA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCAxNzcsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTUsIDE4NSwgNzYsIDY1LCA3NSwgCi0gICAgNDUsIDQ4LCA1NCwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCAKLSAgICA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNTMsIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDgsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA0OCwgNTEsIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgNzgsIAotICAgIDEyOCwgNzYsIDY1LCA3MywgNzgsIDE5OSwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIDEyOCwgNzYsIAotICAgIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCA3NiwgNjUsIDcxLCA2NSwgCi0gICAgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAKLSAgICAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgMjE3LCA3NiwgNjUsIDY3LCAKLSAgICA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2OSwgNzYsIDEyOCwgNzYsIDY1LCA2NiwgNjUsIAotICAgIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgCi0gICAgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA1NCwgMTI4LCA3NiwgCi0gICAgNTIsIDEyOCwgNzYsIDUxLCAxMjgsIDc2LCA1MCwgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCA0OCwgCi0gICAgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCAKLSAgICA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgODksIAotICAgIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCA2NSwgCi0gICAgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgODksIDY1LCAxMjgsIDc1LCA4OCwgODcsIDczLCAKLSAgICAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAxMjgsIDc1LCA4OCwgNzMsIAotICAgIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCA2NSwgMTI4LCA3NSwgODgsIAotICAgIDY1LCAxMjgsIDc1LCA4NywgODYsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCA3NSwgODcsIDc5LCA3OSwgCi0gICAgMTI4LCA3NSwgODcsIDc5LCAxMjgsIDc1LCA4NywgNzcsIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgCi0gICAgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjYsIDEyOCwgNzUsIDg3LCA2NSwgCi0gICAgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4NiwgNjUsIDEyOCwgCi0gICAgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NiwgMTI4LCA3NSwgODUsIDg1LCA3MiwgMTI4LCA3NSwgCi0gICAgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgODUsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDc1LCAKLSAgICA4NSwgODMsIDcyLCA4NSwgMTc4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIAotICAgIDc5LCAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIDc1LCA4NSwgCi0gICAgODIsIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIDc1LCA4NSwgCi0gICAgNzgsIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgNzYsIAotICAgIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNzEsIDEyOCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgNzUsIDg1LCA2NiwgMTI4LCAKLSAgICA3NSwgODUsIDY1LCA4NiwgMTI4LCA3NSwgODUsIDY1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCAxMjgsIDc1LCA4NSwgNTUsIAotICAgIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAKLSAgICAxMjgsIDc1LCA4MywgODMsIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgNzksIAotICAgIDEyOCwgNzUsIDgzLCA4MywgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCA4MywgODMsIDczLCAxMjgsIAotICAgIDc1LCA4MywgODMsIDY5LCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgODUsIDEyOCwgCi0gICAgNzUsIDgzLCA4MywgNjUsIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCAKLSAgICA3NSwgODMsIDgzLCAxMjgsIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIAotICAgIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCAKLSAgICA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgCi0gICAgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCAKLSAgICA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIAotICAgIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIAotICAgIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCA3MiwgMTI4LCA3NSwgCi0gICAgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAxMjgsIDc1LCA3OSwgODYsIDEyOCwgCi0gICAgNzUsIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIDgyLCA3OSwgNzgsIDczLCAKLSAgICA4MywgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgMTk1LCA3NSwgNzksIAotICAgIDgxLCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4MCwgMTI4LCA3NSwgCi0gICAgNzksIDc5LCA4NiwgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIDg1LCA4NSwgODQsIAotICAgIDEyOCwgNzUsIDc5LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgCi0gICAgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDE5MywgNzUsIDc5LCA3NywgMjAxLCA3NSwgNzksIDc3LCAKLSAgICA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIDY2LCAyMTMsIAotICAgIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDY5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgNzUsIDc5LCAyMDMsIAotICAgIDc1LCA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCA3MSwgNzIsIDc5LCA3NywgCi0gICAgMTI4LCA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgCi0gICAgNzksIDY1LCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIDY5LCA4MywgMTI4LCA3NSwgNzgsIDg1LCA2NywgNzUsIDc2LCAKLSAgICA2OSwgMTI4LCA3NSwgNzgsIDc5LCA2NiwgODMsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIAotICAgIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgCi0gICAgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgCi0gICAgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgCi0gICAgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgCi0gICAgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCAKLSAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIAotICAgIDczLCA4NywgMTI4LCA3NSwgNzMsIDg2LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIDczLCA3OCwgCi0gICAgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgNTMsIDEyOCwgCi0gICAgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCA3NiwgMTI4LCAKLSAgICA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIDY5LCA4NCwgCi0gICAgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgNzMsIDgyLCAKLSAgICA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCA4MCwgMTI4LCAKLSAgICA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIDY5LCA4MiwgNzEsIAotICAgIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgNzYsIDc2LCA2OSwgCi0gICAgODIsIDEyOCwgNzUsIDczLCA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgCi0gICAgNjksIDg2LCA2NSwgMjA2LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCAKLSAgICA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzMsIDY2LCAKLSAgICAxMjgsIDc1LCA3MywgNjUsIDg2LCAxMjgsIDc1LCA3MywgNjUsIDY2LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCAKLSAgICA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgODUsIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgCi0gICAgMjA2LCA3NSwgNzIsIDg1LCA2OCwgNjUsIDg3LCA2NSwgNjgsIDIwMSwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgMTI4LCAKLSAgICA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIAotICAgIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDc0LCA3NSwgMjAxLCA3NSwgCi0gICAgNzIsIDc5LCAxMjgsIDc1LCA3MiwgMjA3LCA3NSwgNzIsIDc3LCAyMTMsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCA3MiwgCi0gICAgNzMsIDc4LCA4OSwgNjUsIDEyOCwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgMjAwLCA3NSwgNzIsIDczLCAxMjgsIDc1LCAKLSAgICA3MiwgMjAxLCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIAotICAgIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCA2OSwgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCA4NiwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIDc1LCA3MiwgNjUsIDgyLCAKLSAgICAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgNzIsIDY1LCA3OCwgNjgsIAotICAgIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCA3MiwgNjUsIDc1LCA2NSwgCi0gICAgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIDEyOCwgNzUsIDcyLCAKLSAgICA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgNzEsIDEyOCwgNzUsIDY5LCAKLSAgICA4OSwgNjcsIDY1LCA4MCwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIAotICAgIDY4LCAxMjgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAxOTYsIDc1LCA2OSwgODgsIDEyOCwgNzUsIDY5LCA4NiwgCi0gICAgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MCwgODUsIDgxLCAxMjgsIAotICAgIDc1LCA2OSwgODUsIDc5LCAyMTIsIDc1LCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2OSwgODUsIDg0LCA3OCwgCi0gICAgNjgsIDY1LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4NCwgNzcsIDY5LCAKLSAgICA4NSwgNzgsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNzMsIDEyOCwgNzUsIDY5LCA4NCwgODQsIDIwMSwgNzUsIAotICAgIDY5LCA4MywgNzIsIDUwLCAxMjgsIDc1LCA2OSwgODIsIDY5LCA4NCwgMTI4LCA3NSwgNjksIDc5LCA4NywgMTI4LCA3NSwgCi0gICAgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgMTkzLCAKLSAgICA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA2OSwgNzgsIDY1LCA4NCwgMTI4LCA3NSwgNjksIDc4LCAxMjgsIAotICAgIDc1LCA2OSwgMjA2LCA3NSwgNjksIDc3LCA4MCwgODUsIDc2LCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA4NSwgMjA0LCA3NSwgCi0gICAgNjksIDc3LCA4MCwgNzYsIDczLCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA3NiwgMjAxLCA3NSwgNjksIDc3LCA4MCwgNzIsIDgyLCAKLSAgICA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzcsIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzYsIDg2LCA3MywgCi0gICAgMjA2LCA3NSwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNzUsIDY5LCA3MiwgNjksIDIwMCwgNzUsIDY5LCA3MiwgMTI4LCA3NSwgCi0gICAgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCA2OSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgNjksIDgzLCA4NSwgMTI4LCAKLSAgICA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDY5LCA2NiwgCi0gICAgMTI4LCA3NSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjUsIDY1LCA2OSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCA3NSwgCi0gICAgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc1LCAKLSAgICA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIDEyOCwgNzUsIDY1LCA4NywgODYsIDEyOCwgNzUsIDY1LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDY1LCA4NywgNjYsIDEyOCwgNzUsIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg2LCAxMjgsIAotICAgIDc1LCA2NSwgODUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgCi0gICAgODUsIDY2LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCAKLSAgICA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIAotICAgIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCAKLSAgICA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIAotICAgIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgCi0gICAgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIAotICAgIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAKLSAgICAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIAotICAgIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKLSAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIAotICAgIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgCi0gICAgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgMjA4LCA3NSwgCi0gICAgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCAKLSAgICA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIAotICAgIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgCi0gICAgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgCi0gICAgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgCi0gICAgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgCi0gICAgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAKLSAgICAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAKLSAgICAxMjgsIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgNjUsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDEyOCwgNzUsIAotICAgIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIAotICAgIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgCi0gICAgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgCi0gICAgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIAotICAgIDg1LCA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgCi0gICAgODksIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCAKLSAgICA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIAotICAgIDg5LCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzQsIDc5LCA4OSwgNzksIDg1LCAyMTEsIDc0LCA3OSwgODksIDEyOCwgCi0gICAgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgNzgsIDcxLCAxMjgsIDc0LCA3OSwgNzgsIDE5MywgCi0gICAgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCAKLSAgICA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCAKLSAgICA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIAotICAgIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIAotICAgIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCAKLSAgICA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCAKLSAgICA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIAotICAgIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgCi0gICAgNzYsIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIAotICAgIDEyOCwgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCA4OCwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIAotICAgIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgCi0gICAgNzcsIDEyOCwgNzQsIDcyLCA2NSwgNjUsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgCi0gICAgODIsIDg1LCA4MywgNjUsIDc2LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIAotICAgIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIAotICAgIDY1LCA3OCwgMTI4LCA3NCwgNjksIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgCi0gICAgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCAKLSAgICA2NSwgODcsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODUsIDEyOCwgNzQsIAotICAgIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgCi0gICAgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIAotICAgIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAyMDYsIDc0LCA2NSwgNzMsIDEyOCwgNzQsIDY1LCA3MiwgCi0gICAgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgODMsIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCAKLSAgICA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIAotICAgIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgCi0gICAgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCAKLSAgICA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIAotICAgIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCA2OSwgNzcsIDEyOCwgCi0gICAgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA4MywgNjcsIDY5LCA3NiwgNjksIDIxMSwgNzMsIDgzLCAKLSAgICA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgODMsIAotICAgIDc2LCA2NSwgNzgsIDY4LCAxMjgsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIDEyOCwgNzMsIDgzLCA2NSwgCi0gICAgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgNDUsIAotICAgIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgODIsIDY2LCAxMjgsIDczLCA3OSwgCi0gICAgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIAotICAgIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIAotICAgIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgNjgsIDEyOCwgCi0gICAgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA3MywgNzgsIDg0LCAKLSAgICA4MiwgNzksIDY4LCA4NSwgNjcsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIAotICAgIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIAotICAgIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCAKLSAgICA3OCwgNzEsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIAotICAgIDgyLCA4MCwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3OSwgNjcsIDc1LCAKLSAgICA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MywgNzgsIDg0LCA2OSwgODIsIAotICAgIDc2LCA2NSwgNjcsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzMsIDc5LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgNjksIDgzLCAyMTIsIDczLCA3OCwgODQsIDY5LCA4MiwgNjcsIDY1LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgNzgsIDg0LCAKLSAgICA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDc2LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCAKLSAgICAyMDQsIDczLCA3OCwgODMsIDg1LCA3NiwgNjUsIDIxMCwgNzMsIDc4LCA4MywgODQsIDgyLCA4NSwgNzcsIDY5LCA3OCwgODQsIAotICAgIDY1LCAyMDQsIDczLCA3OCwgODMsIDczLCA2OCwgNjksIDEyOCwgNzMsIDc4LCA4MywgNzMsIDY4LCAxOTcsIDczLCA3OCwgCi0gICAgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDgzLCA2OSwgNjcsIDg0LCAxMjgsIDczLCA3OCwgODMsIDY3LCAKLSAgICA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzMsIDc4LCA4MCwgODUsIDIxMiwgNzMsIDc4LCA3OCwgNzksIAotICAgIDY3LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgCi0gICAgNzMsIDc4LCA3OCwgNjksIDIxMCwgNzMsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDczLCAKLSAgICA3OCwgNzMsIDEyOCwgNzMsIDc4LCA3MiwgNzMsIDY2LCA3MywgMjEyLCA3MywgNzgsIDcyLCA2OSwgODIsIDY5LCA3OCwgCi0gICAgMjEyLCA3MywgNzgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDczLCA3OCwgNzEsIDg3LCA2NSwgOTAsIDEyOCwgNzMsIDc4LCAKLSAgICA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA3MCwgNzYsIDg1LCA2OSwgNzgsIDY3LCA2OSwgCi0gICAgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgODksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIAotICAgIDIxNywgNzMsIDc4LCA2OCwgODUsIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA3MywgNzgsIDY4LCA3MywgODIsIDY5LCA2NywgCi0gICAgMjEyLCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCAKLSAgICA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgNzMsIDc4LCA2OCwgNjksIAotICAgIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCA3OCwgNjcsIDgyLCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIDczLCA3OCwgNjcsIDgyLCAKLSAgICA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIAotICAgIDgwLCA3NiwgNjksIDg0LCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgCi0gICAgNjgsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCAKLSAgICA4MCwgMTI4LCA3MywgNzgsIDQ1LCA2NSwgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgCi0gICAgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCAKLSAgICA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIAotICAgIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgCi0gICAgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCAKLSAgICA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgCi0gICAgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCAKLSAgICA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgCi0gICAgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCAKLSAgICA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIAotICAgIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgCi0gICAgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgCi0gICAgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIAotICAgIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKLSAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKLSAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgCi0gICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCAKLSAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCAKLSAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgCi0gICAgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNzMsIDY3LCA3OSwgNzgsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDg1LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgCi0gICAgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAKLSAgICAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIAotICAgIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgCi0gICAgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCAKLSAgICA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIAotICAgIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCAKLSAgICA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIAotICAgIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAKLSAgICAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCAKLSAgICA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgCi0gICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgCi0gICAgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgCi0gICAgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIAotICAgIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgCi0gICAgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCAKLSAgICA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OSwgNzEsIDczLCA2OSwgNzMsIDY1LCAxMjgsIDcyLCA4OCwgODcsIDcxLCAxMjgsIAotICAgIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAKLSAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCAKLSAgICA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIAotICAgIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgCi0gICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgCi0gICAgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAKLSAgICAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCAKLSAgICA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg3LCA2NSwgNzIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCAKLSAgICA4NSwgODYsIDY1LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgzLCA3MiwgMTI4LCA3MiwgODUsIAotICAgIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDgzLCAKLSAgICAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIAotICAgIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAyMDgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgCi0gICAgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNzEsIDcxLCAKLSAgICA3MywgNzgsIDE5OSwgNzIsIDg1LCA2NiwgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCAKLSAgICA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCA3OSwgMTI4LCA3MiwgODUsIDY1LCA3OCwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIAotICAgIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgCi0gICAgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCAKLSAgICA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgCi0gICAgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgCi0gICAgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAKLSAgICAxOTcsIDcyLCA3OSwgODIsIDgyLCAxMjgsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAotICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKLSAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCi0gICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3MiwgNzksIDgyLCAKLSAgICA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCAKLSAgICA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDY4LCAxMjgsIAotICAgIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgCi0gICAgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCAKLSAgICA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA3OSwgMTI4LCA3MiwgNzksIDc2LCA3NiwgNzksIDIxNSwgNzIsIAotICAgIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgCi0gICAgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgNzIsIDc5LCA2NywgNzUsIDY5LCAyMTcsIDcyLCAKLSAgICA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIAotICAgIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA4NSwgNjYsIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgCi0gICAgODQsIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIAotICAgIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIAotICAgIDcyLCA3OCwgNjUsIDg1LCAxMjgsIDcyLCA3OCwgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgCi0gICAgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAKLSAgICAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIDcyLCA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCAKLSAgICA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIAotICAgIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCA3MiwgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgCi0gICAgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDc5LCAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgNzIsIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIAotICAgIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAxMjgsIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIAotICAgIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgCi0gICAgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIDgwLCAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgCi0gICAgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCA4NSwgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCA3NiwgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgMTI4LCA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCAKLSAgICA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgNjUsIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg1LCAxMjgsIDcyLCA3NiwgNjUsIAotICAgIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIDcyLCA3NiwgNjUsIDEyOCwgNzIsIDc2LCAxMjgsIDcyLCA3NSwgMTI4LCAKLSAgICA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDg5LCA3OSwgMTI4LCA3MiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIAotICAgIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAxOTUsIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgCi0gICAgNjksIDY4LCAxMjgsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTk2LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDczLCAKLSAgICA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgCi0gICAgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3NiwgNzksIDIxNSwgNzIsIDczLCA3MSwgNzIsIDQ1LCAKLSAgICA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAKLSAgICAxMjgsIDcyLCA3MywgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIAotICAgIDEyOCwgNzIsIDczLCA2NiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDcyLCA3MiwgODcsIDY1LCAxMjgsIDcyLCA3MiwgCi0gICAgODUsIDEyOCwgNzIsIDcyLCA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA3MiwgNzIsIDY5LCAxMjgsIDcyLCA3MiwgCi0gICAgNjUsIDY1LCAxMjgsIDcyLCA3MSwgMTI4LCA3MiwgNjksIDg5LCA4NCwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIDc5LCAKLSAgICA4MiwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgCisgICAgNzYsIDg5LCA3MywgODQsIDEyOCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCAKKyAgICA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCAKKyAgICA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCAKKyAgICA3NiwgODUsIDgyLCA4OCwgMTI4LCA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIAorICAgIDg0LCAxMjgsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgCisgICAgMTI4LCA3NiwgODUsIDc4LCA2NSwgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgCisgICAgODMsIDEyOCwgNzYsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCAyMDAsIDc2LCA4NSwgCisgICAgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCAKKyAgICA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgMTk3LCA3NiwgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCAKKyAgICA3NiwgODUsIDUxLCAxMjgsIDc2LCA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCAKKyAgICA3NywgMTI4LCA3NiwgODIsIDczLCAxMjgsIDc2LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIAorICAgIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgCisgICAgNjksIDE5NiwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAKKyAgICA2OCwgNDUsIDE4NSwgNzYsIDc5LCA4NywgNDUsIDc3LCA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIAorICAgIDczLCA3OCwgMTk5LCA3NiwgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NiwgNzksIDg1LCA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAKKyAgICAyMTcsIDc2LCA3OSwgODQsIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODMsIDgzLCA3NiwgNjksIAorICAgIDgzLCA4MywgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIDc5LCA4MiwgODIsIDY1LCA3MywgNzgsIDY5LCAKKyAgICAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA4NCwgMTI4LCA3NiwgNzksIDc5LCAKKyAgICA4MCwgNjksIDE5NiwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgMjA4LCA3NiwgNzksIDc5LCA3OCwgMTI4LCAKKyAgICA3NiwgNzksIDc5LCAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3NiwgNzksIAorICAgIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIDQ1LCA3NiwgNjksIDcxLCA3MSwgCisgICAgNjksIDE5NiwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODksIDgyLCAxMjgsIDc2LCAKKyAgICA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCA3NiwgNzksIDc4LCA3MSwgCisgICAgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIAorICAgIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgCisgICAgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIDc5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIDc3LCAxMjgsIDc2LCAKKyAgICA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgNzMsIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgNzYsIDEyOCwgNzYsIAorICAgIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCA3OSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCA3OSwgNzEsIDgyLCA2NSwgCisgICAgMjA1LCA3NiwgNzksIDcxLCAxMjgsIDc2LCA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgNzYsIDc5LCAKKyAgICA2NywgNzksIDc3LCA3OSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNzUsIDczLCA3OCwgNzEsIDQ1LCA4MywgCisgICAgNzIsIDczLCA3MCwgMjEyLCA3NiwgNzksIDY3LCAyMDMsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCAKKyAgICA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgCisgICAgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgCisgICAgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNzksIDY1LCAxMjgsIDc2LCA3OCwgMTI4LCA3NiwgCisgICAgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCAKKyAgICA3NiwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDczLCA3MywgMTI4LCA3NiwgNzYsIDc2LCA3MywgMTI4LCA3NiwgNzYsIDc2LCA2OSwgNjksIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA3MywgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICA2NSwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgNzMsIAorICAgIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCA3NCwgMTI4LCA3NiwgNzMsIDkwLCA2NSwgODIsIDY4LCAxMjgsIAorICAgIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIDczLCA4NCwgCisgICAgODQsIDc2LCA2OSwgMTI4LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAyMTAsIDc2LCAKKyAgICA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDIwMCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAxMjgsIDc2LCAKKyAgICA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCA4MCwgODMsIAorICAgIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgODAsIDIxMSwgNzYsIDczLCAyMDgsIDc2LCA3MywgNzgsIDc1LCA3MywgCisgICAgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgNzEsIDgzLCAKKyAgICA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCA3OCwgNjksIAorICAgIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIDEyOCwgCisgICAgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgNzcsIDc3LCAKKyAgICA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCA3MywgNzcsIAorICAgIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDczLCA3NywgCisgICAgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgNzcsIDY2LCAKKyAgICAyMTEsIDc2LCA3MywgNzcsIDE5NCwgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIDg0LCA3MiwgMTI4LCAKKyAgICA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDczLCA3MSwgNzIsIAorICAgIDg0LCA3OCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc2LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcxLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDcwLCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgNjksIDg0LCAxMjgsIDc2LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgNzYsIDczLCA2OCwgMTI4LCAKKyAgICA3NiwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIAorICAgIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgCisgICAgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAKKyAgICAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDczLCAKKyAgICA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIAorICAgIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgCisgICAgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCAKKyAgICA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc2LCA2OSwgODAsIDEyOCwgNzYsIAorICAgIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgCisgICAgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIDc4LCA3MywgMjExLCA3NiwgNjksIDc4LCAKKyAgICA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTUsIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU0LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MywgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUxLCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNDksIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgCisgICAgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIAorICAgIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MywgMTI4LCA3NiwgNjksIDcxLCA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgCisgICAgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIDY5LCA3MSwgMTI4LCA3NiwgNjksIDE5OSwgCisgICAgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIAorICAgIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgCisgICAgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCAKKyAgICA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgNDUsIDc2LCA3MywgCisgICAgNzEsIDcyLCA4NCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCAKKyAgICA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIAorICAgIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgCisgICAgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAKKyAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIAorICAgIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgCisgICAgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIAorICAgIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgCisgICAgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg1LCAKKyAgICA3NCwgMTI4LCA3NiwgNjUsIDg1LCA3MSwgNzIsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY1LCA4NCwgNzMsIDc4LCA2NSwgODQsIAorICAgIDE5NywgNzYsIDY1LCA4NCwgNzMsIDc1LCAxMjgsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNzYsIDY1LCA4NCwgCisgICAgMTk3LCA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCAKKyAgICAyMDEsIDc2LCA2NSwgODIsIDcxLCA2OSwgODMsIDg0LCAxMjgsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIAorICAgIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgCisgICAgODEsIDEyOCwgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgNjUsIDcxLCAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzcsIAorICAgIDgwLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCA2NSwgCisgICAgNzcsIDY5LCAxOTYsIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIDY1LCAKKyAgICAxMjgsIDc2LCA2NSwgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgNjgsIAorICAgIDcyLCAxMjgsIDc2LCA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgCisgICAgODksIDY1LCA3OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUwLCAKKyAgICA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCA1NiwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCAxODQsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDc2LCAKKyAgICA2NSwgNzUsIDQ1LCA1NCwgNDksIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDksIDE4MywgNzYsIDY1LCA3NSwgNDUsIAorICAgIDU0LCA0OCwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgCisgICAgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTAsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgNTUsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDUyLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDUyLCA1MiwgMTg1LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU3LCA0OCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTEsIDUyLCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTAsIDU0LCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCAKKyAgICA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA0OCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNDksIDUyLCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNDgsIDU3LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNDgsIDU2LCAxNzcsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTUsIAorICAgIDE4NSwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NCwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDksIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDQ4LCA1MCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDQ4LCA1MCwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA0OCwgNTEsIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgCisgICAgNjUsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3MywgNzgsIDE5OSwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCAKKyAgICA3MiwgODUsIDEyOCwgNzYsIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCAKKyAgICA3NiwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIAorICAgIDc2LCA2NSwgNzEsIDY1LCAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgCisgICAgMjE3LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIAorICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2OSwgNzYsIDEyOCwgCisgICAgNzYsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIAorICAgIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDc2LCA1NCwgMTI4LCA3NiwgNTIsIDEyOCwgNzYsIDUxLCAxMjgsIDc2LCA1MCwgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIAorICAgIDEyOCwgNzYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgCisgICAgNjUsIDgwLCA2OSwgMTk2LCA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCAKKyAgICA3OSwgMTI4LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIAorICAgIDEyOCwgNzUsIDg5LCA2NSwgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgODksIDY1LCAxMjgsIAorICAgIDc1LCA4OCwgODcsIDczLCAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgCisgICAgODgsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAKKyAgICAxMjgsIDc1LCA4OCwgNzMsIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCAKKyAgICA2NSwgMTI4LCA3NSwgODgsIDY1LCAxMjgsIDc1LCA4NywgODYsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCAKKyAgICA3NSwgODcsIDc5LCA3OSwgMTI4LCA3NSwgODcsIDc5LCAxMjgsIDc1LCA4NywgNzcsIDEyOCwgNzUsIDg3LCA3MywgNzMsIAorICAgIDEyOCwgNzUsIDg3LCA3MywgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjYsIAorICAgIDEyOCwgNzUsIDg3LCA2NSwgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAxMjgsIAorICAgIDc1LCA4NiwgNjUsIDEyOCwgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NiwgMTI4LCA3NSwgODUsIAorICAgIDg1LCA3MiwgMTI4LCA3NSwgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgODUsIDgzLCA3MiwgCisgICAgODUsIDUwLCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgMTc4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCAKKyAgICA4NSwgOTAsIDY5LCA3MywgODIsIDc5LCAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIAorICAgIDY5LCAxMjgsIDc1LCA4NSwgODIsIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzUsIDg1LCA3OSwgODAsIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIAorICAgIDc5LCAxMjgsIDc1LCA4NSwgNzgsIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAKKyAgICAxMjgsIDc1LCA4NSwgNzYsIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNzEsIDEyOCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgCisgICAgNzUsIDg1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCA4NiwgMTI4LCA3NSwgODUsIDY1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCAKKyAgICAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgCisgICAgODUsIDE3OSwgNzUsIDg0LCAxMjgsIDc1LCA4MywgODMsIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgCisgICAgODMsIDgzLCA3OSwgNzksIDEyOCwgNzUsIDgzLCA4MywgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDczLCAxMjgsIDc1LCA4MywgODMsIDY5LCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIAorICAgIDgzLCA2NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgCisgICAgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIDgzLCAxMjgsIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCAKKyAgICA4MywgODQsIDczLCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgCisgICAgNzgsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIAorICAgIDgwLCA4NSwgMTI4LCA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIAorICAgIDc1LCA4MCwgNzMsIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgCisgICAgNjksIDEyOCwgNzUsIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCAKKyAgICA3MiwgMTI4LCA3NSwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAxMjgsIDc1LCAKKyAgICA3OSwgODYsIDEyOCwgNzUsIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgCisgICAgMTk1LCA3NSwgNzksIDgxLCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA4MCwgMTI4LCA3NSwgNzksIDc5LCA4NiwgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIAorICAgIDg1LCA4NSwgODQsIDEyOCwgNzUsIDc5LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgCisgICAgNjksIDg2LCA3NywgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDE5MywgNzUsIDc5LCA3NywgMjAxLCAKKyAgICA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIAorICAgIDY2LCAyMTMsIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDY5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgNzUsIAorICAgIDc5LCAyMDMsIDc1LCA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCA3MSwgNzIsIAorICAgIDc5LCA3NywgMTI4LCA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgCisgICAgMTI4LCA3NSwgNzksIDY1LCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIDY5LCA4MywgMTI4LCA3NSwgNzgsIDg1LCAKKyAgICA2NywgNzUsIDc2LCA2OSwgMTI4LCA3NSwgNzgsIDc5LCA2NiwgODMsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAKKyAgICAxOTcsIDc1LCA3NywgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCAKKyAgICA3NywgNjUsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCAKKyAgICA3NSwgODUsIDEyOCwgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCAKKyAgICA3NSwgNjksIDEyOCwgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIAorICAgIDY5LCA3OSwgNzUsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIAorICAgIDEyOCwgNzUsIDczLCA4NywgNzMsIDcwLCA4MiwgODUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDg3LCAxMjgsIDc1LCA3MywgCisgICAgODYsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAxOTksIDc1LCA3MywgODMsIDgzLCAKKyAgICAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCA3NSwgNzMsIDgzLCA3MywgNzcsIAorICAgIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIDc1LCA3MywgODIsIDc5LCA4NywgCisgICAgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc1LCAKKyAgICA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCAxMjgsIDc1LCA3MywgODIsIAorICAgIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIDc1LCA3MywgMjA4LCA3NSwgNzMsIAorICAgIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgNjUsIDgyLCA4NCwgNjksIDc4LCAKKyAgICAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3NSwgNzMsIAorICAgIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCA2OSwgODYsIDY1LCAyMDYsIAorICAgIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIDY5LCAxMjgsIDc1LCA3MywgCisgICAgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MywgNjYsIDEyOCwgNzUsIDczLCA2NSwgCisgICAgODYsIDEyOCwgNzUsIDczLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIDg3LCA2NSwgNzMsIDEyOCwgCisgICAgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAyMDYsIDc1LCA3MiwgODUsIDY4LCAKKyAgICA2NSwgODcsIDY1LCA2OCwgMjAxLCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIDc1LCA3MiwgODUsIDY1LCA4NCwgCisgICAgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgNzksIDc4LCAxMjgsIDc1LCA3MiwgCisgICAgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgNzQsIDc1LCAyMDEsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKKyAgICAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCA3MywgNzgsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCAyMDEsIDc1LCA3MiwgNzIsIAorICAgIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA3NSwgNzIsIDY5LCA3MywgCisgICAgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgNjUsIDg2LCAxMjgsIDc1LCA3MiwgCisgICAgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAKKyAgICAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCAKKyAgICA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIAorICAgIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY2LCAxMjgsIAorICAgIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDgwLCAxMjgsIDc1LCA2OSwgCisgICAgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCAKKyAgICA2NSwgODIsIDE5NiwgNzUsIDY5LCA4OCwgMTI4LCA3NSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc1LCA2OSwgODUsIDgzLCA2OSwgCisgICAgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgwLCA4NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNzksIDIxMiwgNzUsIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY5LCA4NSwgODQsIDc4LCA2OCwgNjUsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIAorICAgIDY1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDg0LCA3NywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNjksIDg1LCA2NSwgCisgICAgNjksIDgyLCA3MywgMTI4LCA3NSwgNjksIDg0LCA4NCwgMjAxLCA3NSwgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzUsIDY5LCAKKyAgICA4MiwgNjksIDg0LCAxMjgsIDc1LCA2OSwgNzksIDg3LCAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCAxOTMsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDE5MywgCisgICAgNzUsIDY5LCA3OCwgNjUsIDg0LCAxMjgsIDc1LCA2OSwgNzgsIDEyOCwgNzUsIDY5LCAyMDYsIDc1LCA2OSwgNzcsIDgwLCAKKyAgICA4NSwgNzYsIDEyOCwgNzUsIDY5LCA3NywgODAsIDg1LCAyMDQsIDc1LCA2OSwgNzcsIDgwLCA3NiwgNzMsIDEyOCwgNzUsIAorICAgIDY5LCA3NywgODAsIDc2LCAyMDEsIDc1LCA2OSwgNzcsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NywgCisgICAgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NiwgODYsIDczLCAyMDYsIDc1LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA3NSwgNjksIDcyLCA2OSwgMjAwLCA3NSwgNjksIDcyLCAxMjgsIDc1LCA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIAorICAgIDY5LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgCisgICAgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCAKKyAgICA2NSwgNjUsIDY5LCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIAorICAgIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgCisgICAgMTI4LCA3NSwgNjUsIDg3LCA4NiwgMTI4LCA3NSwgNjUsIDg3LCA3MywgMTI4LCA3NSwgNjUsIDg3LCA2NiwgMTI4LCA3NSwgCisgICAgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA4NSwgODYsIDEyOCwgNzUsIDY1LCAKKyAgICA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCA4NSwgNjYsIDEyOCwgNzUsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgCisgICAgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCAKKyAgICA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgCisgICAgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCAKKyAgICA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIAorICAgIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgCisgICAgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCAKKyAgICA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIAorICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKKyAgICA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgCisgICAgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAorICAgIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgCisgICAgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgCisgICAgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAyMDgsIDc1LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCAKKyAgICA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3NSwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIAorICAgIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgCisgICAgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAKKyAgICAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4NiwgMTI4LCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzUsIDY1LCAKKyAgICA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDY2LCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIDc1LCAKKyAgICA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIDc1LCAKKyAgICA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgMTc5LCAKKyAgICA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgMTI4LCAKKyAgICA3NSwgNjUsIDY1LCA4NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzUsIAorICAgIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDY1LCAxMjgsIDc1LCA2NSwgNjUsIDY2LCAxMjgsIDc1LCA2NSwgCisgICAgNTAsIDEyOCwgNzUsIDY1LCAxNzgsIDc1LCA0OCwgNDgsIDU2LCAxMjgsIDc1LCA0OCwgNDgsIDU1LCAxMjgsIDc1LCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDc1LCA0OCwgNDgsIDUzLCAxMjgsIDc1LCA0OCwgNDgsIDUyLCAxMjgsIDc1LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc1LCA0OCwgNDgsIDUwLCAxMjgsIDc1LCA0OCwgNDgsIDQ5LCAxMjgsIDc0LCA4NywgNjUsIDEyOCwgNzQsIDg1LCAKKyAgICA4NSwgMTI4LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA4NSwgODMsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDc0LCA4NSwgODAsIDczLCA4NCwgNjksIDgyLCAxMjgsIDc0LCA4NSwgNzksIDg0LCAxMjgsIDc0LCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc0LCA4NSwgNzgsIDc5LCAxMjgsIDc0LCA4NSwgNzgsIDY5LCAxMjgsIDc0LCA4NSwgNzYsIDg5LCAKKyAgICAxMjgsIDc0LCA4NSwgNzEsIDcxLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIAorICAgIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgCisgICAgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgODksIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NCwgNzksIDg5LCAKKyAgICA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCAKKyAgICA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIAorICAgIDg0LCA4MywgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgCisgICAgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgCisgICAgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIAorICAgIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgCisgICAgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgCisgICAgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIAorICAgIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCA3NiwgMTI4LCA3NCwgNzMsIDczLCA3NywgMTI4LCA3NCwgNzMsIAorICAgIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NCwgNzMsIDY1LCAKKyAgICAxMjgsIDc0LCA3MiwgNzksIDg4LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgNzIsIDEyOCwgNzQsIDcyLCAKKyAgICA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3NywgMTI4LCA3NCwgNzIsIAorICAgIDY1LCA2NSwgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgCisgICAgNzYsIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAKKyAgICAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCAKKyAgICA2OSwgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCA3OCwgMTI4LCA3NCwgNjUsIAorICAgIDg5LCA3MywgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIDY1LCA4NywgMTI4LCA3NCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4NiwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCAKKyAgICA4NSwgMTI4LCA3NCwgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIAorICAgIDY1LCA3OCwgMTI4LCA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgCisgICAgNzYsIDY1LCA3NiwgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgNzMsIDIwNiwgNzQsIDY1LCA3MywgMTI4LCAKKyAgICA3NCwgNjUsIDcyLCAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA4MywgMTI4LCA3NCwgNjUsIAorICAgIDY3LCA3NSwgNDUsIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgCisgICAgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIAorICAgIDEyOCwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgCisgICAgNjUsIDg5LCAxOTMsIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCAKKyAgICA3NCwgNjUsIDEyOCwgNzMsIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIAorICAgIDY5LCA3NywgMTI4LCA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDgzLCA2NywgNjksIDc2LCA2OSwgCisgICAgMjExLCA3MywgODMsIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAKKyAgICAxMjgsIDczLCA4MywgNzYsIDY1LCA3OCwgNjgsIDEyOCwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgCisgICAgMTI4LCA3MywgODMsIDY1LCA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCAKKyAgICA4MiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDczLCA4MiwgNzksIDc4LCA0NSwgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA4MiwgCisgICAgNjYsIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCAKKyAgICA3MywgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIAorICAgIDY1LCA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgCisgICAgODQsIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAKKyAgICAxOTcsIDczLCA3OCwgODQsIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCAKKyAgICA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCAKKyAgICA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgCisgICAgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCAKKyAgICA4MiwgNzYsIDc5LCA2NywgNzUsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCisgICAgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCAKKyAgICA4NCwgNjksIDcxLCA4MiwgNjUsIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIAorICAgIDg1LCA3NywgNjksIDc4LCA4NCwgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA3MywgCisgICAgNjgsIDE5NywgNzMsIDc4LCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODMsIDY5LCA2NywgODQsIAorICAgIDEyOCwgNzMsIDc4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MywgNzgsIDgwLCA4NSwgCisgICAgMjEyLCA3MywgNzgsIDc4LCA3OSwgNjcsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzgsIDc4LCAxMjgsIDczLCAKKyAgICA3OCwgNzgsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDc4LCA2OSwgMjEwLCA3MywgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzMsIAorICAgIDc4LCA3MSwgODUsIDEyOCwgNzMsIDc4LCA3MywgMTI4LCA3MywgNzgsIDcyLCA3MywgNjYsIDczLCAyMTIsIDczLCA3OCwgCisgICAgNzIsIDY5LCA4MiwgNjksIDc4LCAyMTIsIDczLCA3OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNzMsIDc4LCA3MSwgODcsIDY1LCAKKyAgICA5MCwgMTI4LCA3MywgNzgsIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgODUsIAorICAgIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgCisgICAgNzgsIDczLCA4NCwgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIDczLCAKKyAgICA4MiwgNjksIDY3LCAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDY4LCA3MywgNjcsIAorICAgIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgCisgICAgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgNzMsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCAKKyAgICA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCA3OCwgNjcsIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIAorICAgIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgCisgICAgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCAxOTcsIDczLCAKKyAgICA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgNjgsIDczLCA3OCwgMTk5LCA3MywgNzgsIAorICAgIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA3MywgNzgsIDQ1LCA2NSwgCisgICAgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgNzcsIAorICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgCisgICAgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgCisgICAgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIAorICAgIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgCisgICAgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgCisgICAgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAKKyAgICA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIAorICAgIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIAorICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgCisgICAgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIAorICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCAKKyAgICA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU3LCA0OSwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NywgNDgsIDUyLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY4LCA1NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDY4LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTcsIDU2LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU0LCA2OCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDQ5LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA0OCwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNzAsIDQ5LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDY5LCA1NiwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1NCwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDUxLCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MCwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUzLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA3MCwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjgsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDY2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA2NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDUwLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTMsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUyLCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDcwLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA2NywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUwLCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MCwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNDksIDU2LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA2NSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUyLCA2OSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzgsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2NywgNzksIDc4LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4NSwgCisgICAgMTI4LCA3MywgNjcsIDcyLCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNzMsIDc3LCA2NSwgODQsIDc5LCA4MywgMTI4LCAKKyAgICA3MywgNjcsIDcyLCA2NSwgNjgsIDczLCA3OCwgMTI4LCA3MywgNjcsIDY5LCA3NiwgNjUsIDc4LCA2OCwgNzMsIDY3LCA0NSwgCisgICAgODksIDgyLCAxMjgsIDczLCA2NiwgNzMsIDcwLCA3MywgNzYsIDczLCAxMjgsIDczLCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKKyAgICA3MywgNDgsIDQ5LCA1MywgMTI4LCA3MywgNDgsIDQ5LCA1MiwgMTI4LCA3MywgNDgsIDQ5LCA1MSwgMTI4LCA3MywgNDgsIAorICAgIDQ5LCA1MCwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDEyOCwgNzMsIDQ4LCA0OSwgCisgICAgNDgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ4LCAxMjgsIDczLCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA3MywgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNDgsIDQ4LCA1NiwgMTI4LCA3MywgNDgsIDQ4LCA1NSwgMTI4LCA3MywgNDgsIDQ4LCA1NCwgMTI4LCAKKyAgICA3MywgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDEyOCwgNzMsIDQ4LCA0OCwgNTIsIDEyOCwgNzMsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzMsIDQ4LCA0OCwgNTAsIDEyOCwgNzMsIDQ4LCA0OCwgNDksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgODUsIDEyOCwgNzMsIDQ1LCA4OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCAKKyAgICAxMjgsIDczLCA0NSwgODksIDY1LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDczLCA0NSwgODksIAorICAgIDY1LCAxMjgsIDczLCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3MywgNDUsIDc5LCAxMjgsIDczLCA0NSwgNjksIDg1LCAxMjgsIAorICAgIDczLCA0NSwgNjYsIDY5LCA2NSwgNzcsIDEyOCwgNzMsIDQ1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgNzMsIDQ1LCA2NSwgCisgICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgNzEsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA5MCwgODAsIDEyOCwgCisgICAgNzIsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDg3LCA3MSwgMTI4LCA3MiwgOTAsIDg3LCAxMjgsIDcyLCA5MCwgODQsIDEyOCwgCisgICAgNzIsIDkwLCA3MSwgMTI4LCA3MiwgODksIDgzLCA4NCwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDcyLCA4OSwgODAsIDc5LCAKKyAgICA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNDUsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3MiwgODksIDgwLCAKKyAgICA3MiwgNjksIDc4LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgMjA2LCA3MiwgODksIDcxLCA3MywgNjksIDczLCA2NSwgCisgICAgMTI4LCA3MiwgODgsIDg3LCA3MSwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg0LCAKKyAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgMTI4LCA3MiwgODgsIDc5LCA4OCwgMTI4LCAKKyAgICA3MiwgODgsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDc5LCAxMjgsIDcyLCA4OCwgNzMsIAorICAgIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODQsIDEyOCwgNzIsIDg4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAKKyAgICAxMjgsIDcyLCA4OCwgNzMsIDEyOCwgNzIsIDg4LCA2OSwgODgsIDEyOCwgNzIsIDg4LCA2OSwgODAsIDEyOCwgNzIsIDg4LCAKKyAgICA2OSwgMTI4LCA3MiwgODgsIDY1LCA4OCwgMTI4LCA3MiwgODgsIDY1LCA4NCwgMTI4LCA3MiwgODgsIDY1LCA4MCwgMTI4LCAKKyAgICA3MiwgODgsIDY1LCAxMjgsIDcyLCA4NywgODUsIDEyOCwgNzIsIDg3LCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA4NywgNjUsIAorICAgIDcyLCAxMjgsIDcyLCA4NSwgODYsIDY1LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgzLCA3MiwgCisgICAgMTI4LCA3MiwgODUsIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCAKKyAgICA2OSwgNjgsIDgzLCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAyMTEsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIAorICAgIDY4LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAyMDgsIAorICAgIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgCisgICAgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNzEsIDcxLCA3MywgNzgsIDE5OSwgNzIsIDg1LCA2NiwgNTAsIAorICAgIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCA3OSwgCisgICAgMTI4LCA3MiwgODUsIDY1LCA3OCwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgCisgICAgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgCisgICAgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCAKKyAgICA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIAorICAgIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIDcyLCA3OSwgODIsIDgyLCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCAKKyAgICA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCisgICAgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3MiwgNzksIDgyLCA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCAKKyAgICA3OSwgNzksIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIAorICAgIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDY4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgCisgICAgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCAKKyAgICA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIAorICAgIDc2LCA3OSwgMTI4LCA3MiwgNzksIDc2LCA3NiwgNzksIDIxNSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCAKKyAgICA3NSwgNjUsIDEyOCwgNzIsIDc5LCA2NywgNzUsIDY5LCAyMTcsIDcyLCA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIAorICAgIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA4NSwgCisgICAgNjYsIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgODQsIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgCisgICAgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgNzIsIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIAorICAgIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgCisgICAgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIDcyLCA3OCwgNjUsIDg1LCAxMjgsIDcyLCA3OCwgCisgICAgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIDEyOCwgCisgICAgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIDcyLCAKKyAgICA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCA3MiwgCisgICAgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDc5LCAKKyAgICAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIDcyLCAKKyAgICA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgNzIsIAorICAgIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAxMjgsIAorICAgIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCA4OSwgCisgICAgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIDgwLCAKKyAgICAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIDc2LCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCA4NSwgCisgICAgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCA3NiwgCisgICAgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgMTI4LCAKKyAgICA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgNjUsIAorICAgIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg1LCAxMjgsIDcyLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIAorICAgIDcyLCA3NiwgNjUsIDEyOCwgNzIsIDc2LCAxMjgsIDcyLCA3NSwgMTI4LCA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIAorICAgIDg5LCA3OSwgMTI4LCA3MiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAKKyAgICAxOTUsIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDcyLCA3MywgNzgsIAorICAgIDcxLCA2OSwgMTk2LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgCisgICAgMTk2LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCAKKyAgICA3MSwgNzIsIDQ1LCA3NiwgNzksIDIxNSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgCisgICAgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIAorICAgIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgCisgICAgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDgyLCAKKyAgICA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAxMjgsIDcyLCA3MywgNjgsIDczLCA3OCwgCisgICAgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIDEyOCwgNzIsIDczLCA2NiwgNzMsIDgzLCAKKyAgICA2NywgODUsIDgzLCAxMjgsIDcyLCA3MywgNDUsIDgyLCA2OSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIAorICAgIDcyLCA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIAorICAgIDcyLCA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgCisgICAgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKICAgICAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIAogICAgIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgCiAgICAgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2OSwgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCAKQEAgLTM3NTAsNDI5ICszNzc5LDQzOCBAQAogICAgIDQ1LCA2OSwgODYsIDczLCAyMDQsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDcyLCA2OSwgCiAgICAgNjUsIDY4LCA4MywgODQsIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY1LCA2OCwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCAKICAgICA2OSwgNjUsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNjUsIDY4LCA0NSwgNjYsIDY1LCA3OCwgNjgsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIDY2LCA2NSwgODMsIAotICAgIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NywgNzQsIDEyOCwgNzIsIDY1LCA4NiwgCi0gICAgNjksIDEyOCwgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgMjEzLCAKLSAgICA3MiwgNjUsIDg0LCA4MiwgNjUsIDIwNiwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDcyLCA2NSwgODQsIDY5LCAxMjgsIAotICAgIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAxOTgsIDcyLCA2NSwgODMsIDY5LCAKLSAgICAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDc4LCAxMjgsIAotICAgIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDY3LCAxMjgsIDcyLCA2NSwgCi0gICAgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MiwgNjUsIDgyLCAKLSAgICAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIDIwNywgNzIsIDY1LCA3OCwgNzEsIAotICAgIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCAKLSAgICA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIAotICAgIDc5LCA4NiwgNjUsIDIwNCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgNDUsIDcyLCA3OSwgNzksIDIwMywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDY1LCAKLSAgICA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIAotICAgIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgMjEyLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDg0LCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIAotICAgIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgwLCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCAyMDgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgODcsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCAyMTUsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgCi0gICAgNjcsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc4LCAKLSAgICA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIAotICAgIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgCi0gICAgNjUsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDE5MywgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCAKLSAgICA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCA3MSwgNjksIAotICAgIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgMTI4LCA3MiwgNjUsIDc2LCA3MCwgCi0gICAgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCAKLSAgICA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIAotICAgIDY1LCA3MywgMjExLCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgCi0gICAgNjUsIDcxLCA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIAotICAgIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgCi0gICAgODUsIDEyOCwgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgNzIsIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIAotICAgIDcxLCA4OSwgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIAotICAgIDcxLCA4OSwgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgCi0gICAgNjUsIDEyOCwgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIAotICAgIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgCi0gICAgMTI4LCA3MSwgODYsIDY1LCA3OCwgNzEsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgCi0gICAgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDcxLCA4NSwgODIsIDY1LCAKLSAgICA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIAotICAgIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgCi0gICAgMjAxLCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MywgMTI4LCA3MSwgCi0gICAgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIAotICAgIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCAxMjgsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgCi0gICAgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIAotICAgIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzMsIDc3LCA2NSwgNjcsIDczLCA3OCwgCi0gICAgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNzEsIDgyLCAKLSAgICA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgCi0gICAgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3MSwgODIsIDY5LCAKLSAgICA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIDg2LCA2OSwgODksIDY1LCA4MiwgCi0gICAgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAKLSAgICA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA4NiwgCi0gICAgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCA4MywgMTI4LCA3MSwgODIsIDY1LCAKLSAgICA4MywgMjExLCA3MSwgODIsIDY1LCA4MywgMjA4LCA3MSwgODIsIDY1LCA4MCwgNzIsIDY5LCA3NywgMTk3LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc4LCA4NCwgNzIsIDE5MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAKLSAgICAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDc2LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA2NywgCi0gICAgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCA3NSwgNzksIDIwNiwgNzEsIDc5LCAKLSAgICA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIAotICAgIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgCi0gICAgODIsIDcxLCA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAKLSAgICAxMjgsIDcxLCA3OSwgNzYsIDcwLCA2OSwgODIsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCAKLSAgICA3MSwgNzksIDczLCA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIAotICAgIDcxLCA3OSwgNjUsIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgCi0gICAgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCAKLSAgICA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIAotICAgIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAKLSAgICAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAKLSAgICAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIAotICAgIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAyMTEsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgODIsIDUxLCAxMjgsIAotICAgIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgNzMsIDgwLCAxMjgsIAotICAgIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCA3NywgNjksIDIwNCwgCi0gICAgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDcxLCAxMjgsIDcxLCA3MywgNjksIDg0LCAKLSAgICAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIDcxLCA3MywgNjYsIAotICAgIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIDcyLCA4NywgNjUsIAotICAgIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgNzEsIDcyLCA4NSwgCi0gICAgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCA3OSwgMTI4LCA3MSwgCi0gICAgNzIsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA2OSwgODksIDgzLCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzgsIDEyOCwgNzEsIAotICAgIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCAKLSAgICA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIAotICAgIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDgyLCAKLSAgICA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgCi0gICAgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCAKLSAgICA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIAotICAgIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIAotICAgIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgCi0gICAgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAKLSAgICAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIAotICAgIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDY5LCA4NCwgCi0gICAgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIDY5LCAKLSAgICA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgNTAsIAotICAgIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIDIwNiwgCi0gICAgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgNzcsIDY5LCAKLSAgICA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgNzEsIAotICAgIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgNjksIDc4LCA3MywgCi0gICAgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAxMjgsIDcxLCAKLSAgICA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjksIDc3LCAxMjgsIAotICAgIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgCi0gICAgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY5LCA1MCwgNTAsIDEyOCwgCi0gICAgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCAKLSAgICA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIAotICAgIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAKLSAgICAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIAotICAgIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgCi0gICAgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKLSAgICA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAotICAgIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgCi0gICAgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIAotICAgIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIAotICAgIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgCi0gICAgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCAKLSAgICA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCAKLSAgICA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIAotICAgIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIAotICAgIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIAotICAgIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgCi0gICAgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAKLSAgICAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCAKLSAgICA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIAotICAgIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgCi0gICAgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAKLSAgICAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCAKLSAgICA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIAotICAgIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgCi0gICAgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIAotICAgIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgCi0gICAgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCAKLSAgICA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAKLSAgICAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCAKLSAgICA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCAKLSAgICA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIAotICAgIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCAKLSAgICA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIAotICAgIDEyOCwgNzAsIDg1LCA2NSwgMTI4LCA3MCwgODQsIDcyLCA3OSwgODIsIDE5MywgNzAsIDgzLCA3MywgMTI4LCA3MCwgODIsIAotICAgIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgCi0gICAgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDg3LCAyMDYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCAKLSAgICA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgNzgsIAotICAgIDIxMiwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIAotICAgIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgCi0gICAgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCAKLSAgICA4MiwgNjksIDc4LCA2NywgMjAwLCA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIAotICAgIDc4LCA3NSwgMjExLCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDgzLCAxMjgsIDcwLCA4MiwgCi0gICAgNjUsIDc3LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NywgMTk3LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIAotICAgIDgyLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgCi0gICAgNzksIDg1LCA4MiwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIAotICAgIDQ1LCA2OSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgCi0gICAgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzAsIDc5LCAKLSAgICA4MywgODQsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIAotICAgIDgyLCA4NywgNjUsIDgyLCAxOTYsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgCi0gICAgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDY1LCAyMTIsIDcwLCA3OSwgODIsIDc1LCA2OSwgMTk2LCA3MCwgNzksIAotICAgIDgyLCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3MCwgNzksIDgyLCA2NywgNjksIDgzLCAxMjgsIDcwLCA3OSwgODIsIDY3LCA2OSwgCi0gICAgMTI4LCA3MCwgNzksIDgwLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MywgODQsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCAKLSAgICA3OSwgODQsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDc4LCA3OSwgODQsIDE5NywgNzAsIAotICAgIDc5LCA3OSwgODQsIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCAxMjgsIDcwLCA3OSwgNzksIDc2LCAKLSAgICAxMjgsIDcwLCA3OSwgNzksIDY4LCAxMjgsIDcwLCA3OSwgNzksIDEyOCwgNzAsIDc5LCA3OCwgMjEyLCA3MCwgNzksIDc4LCAKLSAgICA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgNzksIAotICAgIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCA3NiwgCi0gICAgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzksIDcxLCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgCi0gICAgMTI4LCA3MCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCAKLSAgICA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIAotICAgIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDcwLCA3NiwgNzksIDg1LCAKLSAgICA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA3OSwgODIsIAotICAgIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgODIsIDEyOCwgNzAsIDc2LCA3OSwgCi0gICAgNzksIDIxMCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDczLCAKLSAgICA2NywgMjAzLCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIAotICAgIDY5LCA4OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgCi0gICAgNjksIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCAKLSAgICA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA4MywgCi0gICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCAKLSAgICA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCAKLSAgICA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIAotICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgCi0gICAgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDkwLCA4MCwgNjUsIDg0LCA4MiwgNzMsIDY3LCAyMDMsIDcwLCA3MywgODQsIDY1LCAKLSAgICAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIAotICAgIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKLSAgICAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIAotICAgIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgCi0gICAgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCAKLSAgICA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIAotICAgIDcxLCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDIxMSwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgCi0gICAgNzgsIDY1LCA3MywgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDcxLCAKLSAgICA2OSwgODIsIDQ1LCA4MCwgNzksIDgzLCAyMTIsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDEyOCwgNzAsIDczLCA3OCwgNzEsIAotICAgIDY5LCAyMTAsIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAKLSAgICAxMjgsIDcwLCA3MywgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIAotICAgIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIAotICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIAotICAgIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgCi0gICAgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDczLCAKLSAgICA2OSwgNzYsIDE5NiwgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCAKLSAgICA3MCwgNjksIDg1LCA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIAotICAgIDg0LCA3MywgODYsIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAKLSAgICAyMTEsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIAotICAgIDY5LCA3OSwgMjAwLCA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgCi0gICAgNzgsIDczLCA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCAKLSAgICA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIAotICAgIDIxMywgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIAotICAgIDc3LCAxMjgsIDcwLCA2OSwgNjksIDY4LCAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIAotICAgIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgCi0gICAgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCAKLSAgICA3MCwgNjksIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg5LCAxMjgsIAotICAgIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIDY5LCAxMjgsIDcwLCA2NSwgCi0gICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAKLSAgICA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgNzAsIAotICAgIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgzLCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgCi0gICAgMjAxLCA3MCwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCAKLSAgICA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzcsIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzQsIAotICAgIDEyOCwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCA2NSwgCi0gICAgNzMsIDY2LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIAotICAgIDE5NywgNzAsIDY1LCA2NywgNzMsIDc4LCA3MSwgODMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1NCwgMTI4LCA3MCwgCi0gICAgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCAKLSAgICA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIAotICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCAKLSAgICA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgCi0gICAgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKLSAgICA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgCi0gICAgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCAKLSAgICA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCAKLSAgICA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIAotICAgIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIAotICAgIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIAotICAgIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDEyOCwgNjksIDkwLCA4MywgCi0gICAgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIAotICAgIDg5LCA4OSwgODksIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgMjExLCA2OSwgODksIDY5LCA3NiwgCi0gICAgNjUsIDgzLCA3MiwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCAKLSAgICA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCi0gICAgNzEsIDY1LCA5MCwgNjksIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIAotICAgIDY2LCA4MiwgNzksIDg3LCAyMTEsIDY5LCA4OSwgMTk3LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY5LCA3NywgNjksIDc2LCAyMTcsIAotICAgIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCAKLSAgICA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIAotICAgIDg4LCA4NCwgODIsIDE5MywgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgCi0gICAgNzgsIDY4LCA2OSwgNjgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCAKLSAgICA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIAotICAgIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgCi0gICAgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDc2LCAKLSAgICA2OSwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIAotICAgIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzMsIDg0LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCi0gICAgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCAKLSAgICA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgNjksIDgyLCAyMTcsIAotICAgIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgCi0gICAgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIAotICAgIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgCi0gICAgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgCi0gICAgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCAKLSAgICA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIAotICAgIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgCi0gICAgODksIDEyOCwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDIxNywgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDkwLCAKLSAgICAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIAotICAgIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgCi0gICAgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAKLSAgICAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgzLCAKLSAgICA0NSwgNTEsIDEyOCwgNjksIDgzLCA0NSwgNTAsIDEyOCwgNjksIDgzLCA0NSwgNDksIDEyOCwgNjksIDgyLCA4MiwgNzksIAotICAgIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAKLSAgICAxMjgsIDY5LCA4MiwgNzMsIDc4LCAxNzgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIDgxLCAKLSAgICA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgCi0gICAgMjA0LCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIAotICAgIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgCi0gICAgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIAotICAgIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgCi0gICAgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIAotICAgIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgODAsIDY1LCA2NywgMjEyLCA2OSwgCi0gICAgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgCi0gICAgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCAKLSAgICA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA0OSwgMTI4LCAKLSAgICA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIAotICAgIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgCi0gICAgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCAKLSAgICA3OCwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIDEyOCwgNjksIAotICAgIDc4LCA4MSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDczLCAxMjgsIDY5LCA3OCwgNzgsIDEyOCwgNjksIAotICAgIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgCi0gICAgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCAKLSAgICA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIAotICAgIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgODMsIDEyOCwgCi0gICAgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgCi0gICAgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIAotICAgIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA3OSwgNzQsIDIwMSwgNjksIDc3LCA2NiwgCi0gICAgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCAKLSAgICA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODksIDEyOCwgNjksIDc2LCA4NCwgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDg0LCAKLSAgICA3MywgMTk1LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgODMsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNjksIAotICAgIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAyMDYsIDY5LCAKLSAgICA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCA2OSwgNzYsIDY5LCA3NywgNjksIDc4LCAyMTIsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDE5NSwgNjksIDc2LCA2NiwgCi0gICAgNjUsIDgzLCA2NSwgMjA2LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCA2OSwgMTI4LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCAKLSAgICAxOTcsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIAotICAgIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAKLSAgICAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzUsIDY1LCA3NywgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCAKLSAgICA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgCi0gICAgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAKLSAgICA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAotICAgIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCi0gICAgNjUsIDIwNCwgNjksIDcxLCA4OSwgMTI4LCA2OSwgNzEsIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCAKLSAgICA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIAotICAgIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgNjgsIDEyOCwgNjksIDY3LCA4MywgMTI4LCA2OSwgNjYsIDY5LCA3MCwgCi0gICAgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAyMDYsIDY5LCA2NSwgODMsIDg0LCAxMjgsIDY5LCAKLSAgICA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgNjksIAotICAgIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCA3NywgCi0gICAgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIDY4LCAKLSAgICA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgNDgsIAotICAgIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgCi0gICAgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIDEyOCwgCi0gICAgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIDQ4LCAKLSAgICA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAxMjgsIAotICAgIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA2OSwgCi0gICAgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIDQ5LCAKLSAgICA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgNDksIAotICAgIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAxMjgsIAotICAgIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCA0OCwgCi0gICAgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgNTMsIAotICAgIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDg5LCA2NSwgODksIDEyOCwgNjgsIDkwLCAKLSAgICA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgNzMsIDg0LCA2NSwgMTI4LCA2OCwgOTAsIDczLCAxMjgsIDY4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA2OCwgOTAsIAotICAgIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgCi0gICAgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDY1LCA4OSwgMTI4LCA2OCwgOTAsIDY1LCA2NSwgMTI4LCA2OCwgCi0gICAgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgMjE4LCA2OCwgODksIDc5LCAxMjgsIDY4LCA4OSwgMjA3LCA2OCwgODksIAotICAgIDc4LCA2NSwgNzcsIDczLCAxOTUsIDY4LCA4OSwgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg5LCA2NSwgCi0gICAgNzgsIDEyOCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgODcsIDY5LCAxMjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgCi0gICAgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCA4NiwgNjgsIDEyOCwgNjgsIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCAKLSAgICA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIDEyOCwgNjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIAotICAgIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgODUsIDgyLCA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgCi0gICAgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCAKLSAgICA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCA2OCwgODUsIDc4LCAxNzksIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAKLSAgICAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCA3MSwgODUsIDY4LCAxMjgsIDY4LCA4NSwgMTk5LCA2OCwgODUsIDY2LCAKLSAgICA1MCwgMTI4LCA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgCi0gICAgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCAKLSAgICA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIAotICAgIDY4LCA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgCi0gICAgODYsIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDY4LCA4MiwgNjksIDY1LCA3NywgMjE3LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIAotICAgIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgCi0gICAgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAKLSAgICA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIAotICAgIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCAKLSAgICA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIAotICAgIDg2LCAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgCi0gICAgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCAKLSAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKKyAgICA2OSwgMTI4LCA3MiwgNjgsIDgyLCAxMjgsIDcyLCA2NywgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIAorICAgIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgCisgICAgNjUsIDg3LCA3NCwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCA3MiwgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCAKKyAgICA3NywgNjksIDEyOCwgNzIsIDY1LCAyMTMsIDcyLCA2NSwgODQsIDgyLCA2NSwgMjA2LCA3MiwgNjUsIDg0LCA3MiwgNzMsIAorICAgIDEyOCwgNzIsIDY1LCA4NCwgNjksIDEyOCwgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgCisgICAgNjUsIDE5OCwgNzIsIDY1LCA4MywgNjksIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCAKKyAgICA4MiwgODAsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIAorICAgIDc4LCA3MywgNjcsIDEyOCwgNzIsIDY1LCA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgCisgICAgODMsIDgzLCAxMjgsIDcyLCA2NSwgODIsIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCAKKyAgICA3OSwgMjA3LCA3MiwgNjUsIDc4LCA3MSwgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDcyLCA2NSwgNzUsIAorICAgIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMjExLCA3MiwgNjUsIDc4LCA2OCwgCisgICAgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDc5LCA4NiwgNjUsIAorICAgIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgMjA0LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3OSwgCisgICAgNzksIDc1LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCA3OSwgMjAzLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCAKKyAgICA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCAxOTcsIDcyLCA2NSwgNzgsIAorICAgIDY4LCA0NSwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCAyMTIsIDcyLCA2NSwgCisgICAgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgODQsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIAorICAgIDY3LCA4NSwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgMTk3LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODAsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDIwOCwgNzIsIDY1LCAKKyAgICA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCA4NywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDIxNSwgNzIsIAorICAgIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIAorICAgIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgCisgICAgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgMTkzLCA3MiwgNjUsIDc3LCAKKyAgICA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIAorICAgIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgCisgICAgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAKKyAgICAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIAorICAgIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgNjUsIDczLCAyMTEsIDcyLCA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAKKyAgICAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA2NSwgNzEsIDc2LCA2NSwgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCAKKyAgICA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIAorICAgIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjUsIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIAorICAgIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU2LCAxMjgsIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgCisgICAgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgMTI4LCA3MiwgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgMTI4LCA3MiwgNDgsIDQ4LCA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCAKKyAgICA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzEsIDg5LCA4NSwgMTI4LCA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIAorICAgIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgNzEsIDg5LCA3MCwgMjEzLCA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIAorICAgIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCA2NSwgMTI4LCA3MSwgODksIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIAorICAgIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIAorICAgIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAxMjgsIDcxLCA4NiwgNjUsIDc4LCA3MSwgMTI4LCA3MSwgODYsIDEyOCwgNzEsIAorICAgIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgCisgICAgNzIsIDIwMSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCAKKyAgICA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCAKKyAgICA4NSwgNzQsIDY1LCA4MiwgNjUsIDg0LCAyMDEsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIDg1LCAxOTksIAorICAgIDcxLCA4NSwgNjksIDczLCAxMjgsIDcxLCA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgCisgICAgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCAKKyAgICA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIAorICAgIDY1LCA4MiwgNjgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIAorICAgIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIAorICAgIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCAKKyAgICA3MywgNzcsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIAorICAgIDY5LCA2OSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgCisgICAgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIAorICAgIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgCisgICAgODYsIDY5LCA4OSwgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIAorICAgIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgzLCAyMDgsIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNjksIDc3LCAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzgsIDg0LCA3MiwgMTkzLCAKKyAgICA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgNzYsIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDY5LCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDY3LCAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIAorICAgIDc1LCA3OSwgMjA2LCA3MSwgNzksIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgCisgICAgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIAorICAgIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgNzEsIDczLCAKKyAgICAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIDEyOCwgNzEsIDc5LCAKKyAgICA3NiwgNzAsIDY5LCA4MiwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIDcxLCA3OSwgNzMsIAorICAgIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgNzEsIDc5LCA2NSwgCisgICAgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCA4NiwgNzMsIDg5LCAKKyAgICA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODYsIDY5LCAxMjgsIAorICAgIDcxLCA3NiwgNzksIDg0LCA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgCisgICAgNzgsIDY4LCAyMDcsIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCAKKyAgICA3MSwgNzYsIDY1LCAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCAKKyAgICA3MywgODMsIDcyLCAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIAorICAgIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAyMTEsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgCisgICAgODIsIDUxLCAxMjgsIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgCisgICAgNzMsIDgwLCAxMjgsIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCAKKyAgICA3NywgNjksIDIwNCwgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDcxLCAxMjgsIDcxLCAKKyAgICA3MywgNjksIDg0LCAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIAorICAgIDcxLCA3MywgNjYsIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgCisgICAgNzEsIDcyLCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCAKKyAgICA3OSwgMTI4LCA3MSwgNzIsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIAorICAgIDEyOCwgNzEsIDcyLCA2OSwgODksIDgzLCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgCisgICAgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCAKKyAgICA3MSwgNzIsIDY5LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIAorICAgIDg1LCA2NSwgNjksIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgCisgICAgNjksIDEyOCwgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgCisgICAgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCAKKyAgICA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIAorICAgIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIAorICAgIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAKKyAgICAxMjgsIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIAorICAgIDcxLCA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgCisgICAgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCAKKyAgICA3MSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIAorICAgIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgCisgICAgNzEsIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDY5LCAKKyAgICA4NCwgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIAorICAgIDY5LCA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgCisgICAgNTAsIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIAorICAgIDIwNiwgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgCisgICAgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIAorICAgIDE5NSwgNzEsIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgCisgICAgNjksIDc4LCA3MywgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAKKyAgICAxMjgsIDcxLCA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIAorICAgIDE5NywgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjksIDc3LCAxMjgsIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIAorICAgIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIAorICAgIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY5LCA1MCwgNTAsIDEyOCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgCisgICAgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgCisgICAgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCAKKyAgICA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIAorICAgIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgCisgICAgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIAorICAgIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgCisgICAgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIAorICAgIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIAorICAgIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgCisgICAgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCAKKyAgICA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCAKKyAgICA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIAorICAgIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgCisgICAgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCAKKyAgICA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIAorICAgIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIAorICAgIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIAorICAgIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgCisgICAgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCAKKyAgICA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIAorICAgIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIAorICAgIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgCisgICAgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgCisgICAgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCAKKyAgICA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIAorICAgIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIAorICAgIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgCisgICAgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCAKKyAgICA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIAorICAgIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgCisgICAgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgCisgICAgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgCisgICAgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgCisgICAgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIAorICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgCisgICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCAKKyAgICA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg1LCA2NSwgMTI4LCA3MCwgODQsIDcyLCAKKyAgICA3OSwgODIsIDE5MywgNzAsIDgzLCA3MywgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIAorICAgIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDg3LCAKKyAgICAyMDYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIAorICAgIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgNzgsIDIxMiwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgCisgICAgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCAKKyAgICA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgCisgICAgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA4MiwgNjksIDc4LCA2NywgMjAwLCAKKyAgICA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIDc4LCA3NSwgMjExLCA3MCwgODIsIAorICAgIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNjUsIDc3LCA2OSwgMTI4LCA3MCwgCisgICAgODIsIDY1LCA3NywgMTk3LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIAorICAgIDc5LCAyMTYsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgCisgICAgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCAKKyAgICA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIAorICAgIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgCisgICAgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgCisgICAgMTk2LCA3MCwgNzksIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4MiwgODQsIDIxNywgNzAsIDc5LCA4MiwgODQsIDczLCAKKyAgICA2OSwgODQsIDcyLCAxMjgsIDcwLCA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIAorICAgIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NywgNjUsIDIxMiwgNzAsIDc5LCA4MiwgCisgICAgNzUsIDY5LCAxOTYsIDcwLCA3OSwgODIsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIAorICAgIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgCisgICAgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCAKKyAgICA4NCwgNzgsIDc5LCA4NCwgMTk3LCA3MCwgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIAorICAgIDEyOCwgNzAsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIAorICAgIDc4LCAyMTIsIDcwLCA3OSwgNzgsIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgCisgICAgNzYsIDg5LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCAKKyAgICA4MiwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3OSwgNzEsIAorICAgIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAxMjgsIDcwLCA3NiwgODksIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCAKKyAgICA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgCisgICAgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCAKKyAgICA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCA4MywgMTI4LCA3MCwgNzYsIDc5LCA4NywgNjksIAorICAgIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgCisgICAgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCAKKyAgICA4MiwgMTI4LCA3MCwgNzYsIDc5LCA3OSwgMjEwLCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIAorICAgIDg0LCAxMjgsIDcwLCA3NiwgNzMsIDY3LCAyMDMsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgCisgICAgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNzksIDc4LCAxMjgsIDcwLCAKKyAgICA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgCisgICAgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgNjYsIDgyLCAKKyAgICA2OSwgNjUsIDY4LCAxMjgsIDcwLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgODMsIDEyOCwgNzAsIAorICAgIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgCisgICAgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDQ5LCAxMjgsIDcwLCAKKyAgICA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgNzAsIDczLCAKKyAgICA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgODQsIAorICAgIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDczLCA4NiwgCisgICAgMTk3LCA3MCwgNzMsIDg0LCA5MCwgODAsIDY1LCA4NCwgODIsIDczLCA2NywgMjAzLCA3MCwgNzMsIDg0LCA2NSwgMTI4LCAKKyAgICA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIAorICAgIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgCisgICAgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCAKKyAgICA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIAorICAgIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgCisgICAgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKKyAgICA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAyMTEsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDc4LCA2NSwgNzMsIAorICAgIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA0NSwgCisgICAgODAsIDc5LCA4MywgMjEyLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgMjEwLCAKKyAgICA3MCwgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzgsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIAorICAgIDc2LCAyMDUsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCA0NSwgCisgICAgNDksIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDE5NiwgNzAsIDczLCAKKyAgICA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIDEyOCwgNzAsIDczLCAKKyAgICA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNzMsIAorICAgIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIDczLCA3MCwgODQsIDcyLCAKKyAgICA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIAorICAgIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDczLCA2OSwgNzYsIDE5NiwgCisgICAgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCA3MCwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIDg0LCA3MywgODYsIAorICAgIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAyMTEsIDcwLCA2OSwgCisgICAgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIDY5LCA3OSwgMjAwLCAKKyAgICA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIAorICAgIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgCisgICAgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIAorICAgIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIAorICAgIDEyOCwgNzAsIDY5LCA2OSwgNzcsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIAorICAgIDY5LCAxMjgsIDcwLCA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgCisgICAgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCAKKyAgICA4MiwgNzAsIDg1LCAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDcwLCA2NSwgODksIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgCisgICAgNjksIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIAorICAgIDcyLCA2NSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODMsIDg0LCAxMjgsIAorICAgIDcwLCA2NSwgODIsIDgzLCAyMDEsIDcwLCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIAorICAgIDcwLCA2NSwgNzgsIDcxLCAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAKKyAgICAxMjgsIDcwLCA2NSwgNzcsIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NywgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNjksIAorICAgIDIwNiwgNzAsIDY1LCA3NCwgMTI4LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgCisgICAgODUsIDEyOCwgNzAsIDY1LCA3MywgNjYsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIAorICAgIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgCisgICAgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgMTk3LCA3MCwgNjUsIDY3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgNDUsIDU0LCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCAKKyAgICA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCAKKyAgICA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAKKyAgICAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIAorICAgIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDgzLCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCA2OSwgOTAsIAorICAgIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDg5LCA4OSwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIAorICAgIDY5LCAyMTEsIDY5LCA4OSwgNjksIDc2LCA2NSwgODMsIDcyLCA2OSwgMjExLCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgCisgICAgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIAorICAgIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCAKKyAgICA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgNjYsIDgyLCA3OSwgODcsIDIxMSwgNjksIDg5LCAxOTcsIDY5LCA4OSwgNjYsIAorICAgIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgCisgICAgNjksIDc3LCA2OSwgNzYsIDIxNywgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgCisgICAgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIDg0LCA4MiwgMTkzLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCA2OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgCisgICAgMTk2LCA2OSwgODgsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIAorICAgIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgODgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MywgODQsIAorICAgIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgCisgICAgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIAorICAgIDEyOCwgNjksIDg2LCA2OSwgODIsIDIxNywgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgCisgICAgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCAKKyAgICA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgCisgICAgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCAKKyAgICA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIAorICAgIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIAorICAgIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAKKyAgICAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgCisgICAgMjE3LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgOTAsIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAKKyAgICAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgCisgICAgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAKKyAgICAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODMsIDQ1LCA1MSwgMTI4LCA2OSwgODMsIDQ1LCA1MCwgMTI4LCAKKyAgICA2OSwgODMsIDQ1LCA0OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIAorICAgIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIDgyLCA3MywgNzgsIDE3OCwgNjksIDgyLCA3MSwgCisgICAgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCAKKyAgICA4MSwgODUsIDczLCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAyMDQsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIAorICAgIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgCisgICAgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCAKKyAgICA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIAorICAgIDY5LCA4MCwgNjUsIDY3LCAyMTIsIDY5LCA3OSwgODQsIDEyOCwgNjksIDc5LCA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgCisgICAgODgsIDEyOCwgNjksIDc5LCA3NiwgMTI4LCA2OSwgNzksIDcyLCAxMjgsIDY5LCA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgCisgICAgNjksIDc2LCA3OSwgODAsIDY5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIAorICAgIDgyLCA4OSwgNDUsIDQ5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgCisgICAgNzgsIDg0LCA3MiwgODUsIDgzLCA3MywgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIAorICAgIDgzLCA2OSwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDg0LCA2OSwgODIsIDEyOCwgCisgICAgNjksIDc4LCA4NCwgNjksIDIxMCwgNjksIDc4LCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA2OSwgNzgsIDgxLCAKKyAgICA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDgxLCAxMjgsIDY5LCA3OCwgNzksIDIxMSwgNjksIDc4LCA3OCwgNzMsIAorICAgIDEyOCwgNjksIDc4LCA3OCwgMTI4LCA2OSwgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjksIDc4LCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY5LCAKKyAgICA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIDY1LCA4NiwgNzksIAorICAgIDg1LCA4MiwgMTI4LCA2OSwgNzgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgCisgICAgNzksIDgzLCA4NSwgODIsIDY5LCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCAxMjgsIDY5LCAKKyAgICA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY3LCAxMjgsIDY5LCA3OCwgNjUsIDgyLCA4OCwgNzMsIAorICAgIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA3OSwgMjExLCA2OSwgNzcsIDgwLCA4NCwgMjE3LCA2OSwgCisgICAgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgMTk1LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgMjExLCA2OSwgNzcsIDc5LCAKKyAgICA3NCwgMjAxLCA2OSwgNzcsIDY2LCA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCA2OSwgNzcsIDY2LCA3NiwgNjksIAorICAgIDc3LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3NywgCisgICAgNjYsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDc2LCA4OSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIDY5LCAKKyAgICA3NiwgNzYsIDczLCA4MCwgODQsIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCA4MywgMTI4LCA2OSwgNzYsIAorICAgIDc2LCA3MywgODAsIDgzLCA2OSwgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgCisgICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgMTI4LCA2OSwgNzYsIDY5LCAKKyAgICA4NiwgNjksIDIwNiwgNjksIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIAorICAgIDIxMiwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgCisgICAgMTk1LCA2OSwgNzYsIDY2LCA2NSwgODMsIDY1LCAyMDYsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIDY5LCAxMjgsIDY5LCAKKyAgICA3NiwgNjUsIDc3LCA3MywgODQsIDE5NywgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgODQsIAorICAgIDgyLCA2OSwgODAsIDg0LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCA4NCwgCisgICAgNzMsIDc1LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NSwgNjUsIDc3LCAxMjgsIDY5LCAKKyAgICA3NCwgNjksIDY3LCAyMTIsIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAorICAgIDcxLCA3MiwgODQsIDIxNywgNjksIDczLCA3MSwgNzIsIDg0LCA3MywgNjksIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgCisgICAgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAKKyAgICAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgCisgICAgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNjksIAorICAgIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcyLCA4NCwgODMsIDY1LCAxMjgsIDY5LCA3MiwgODQsIDY1LCAxMjgsIAorICAgIDY5LCA3MiwgODAsIDY1LCAxMjgsIDY5LCA3MiwgNzUsIDY1LCAxMjgsIDY5LCA3MiwgNjcsIDcyLCA2NSwgMTI4LCA2OSwgCisgICAgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDEyOCwgNjksIDcxLCAKKyAgICA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIAorICAgIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAKKyAgICAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIAorICAgIDY4LCAxMjgsIDY5LCA2NywgODMsIDEyOCwgNjksIDY2LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgCisgICAgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCA4NCwgMTI4LCA2OSwgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCAKKyAgICA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIAorICAgIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgCisgICAgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCAKKyAgICA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgCisgICAgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCAKKyAgICA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIAorICAgIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIAorICAgIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgCisgICAgNjUsIDEyOCwgNjgsIDkwLCA4OSwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgCisgICAgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCA2OCwgOTAsIDczLCA4NCwgNjUsIDEyOCwgNjgsIDkwLCAKKyAgICA3MywgMTI4LCA2OCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIAorICAgIDkwLCA2NSwgODksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIAorICAgIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCA3OCwgNjUsIDc3LCA3MywgMTk1LCA2OCwgODksIAorICAgIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4OSwgNjUsIDc4LCAxMjgsIDY4LCA4NywgNzksIDEyOCwgNjgsIAorICAgIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgCisgICAgODYsIDY4LCAxMjgsIDY4LCA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAKKyAgICAxMjgsIDY4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjgsIDg1LCA4MiwgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgCisgICAgNjgsIDg1LCA3OCwgMTc5LCA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgCisgICAgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDE5OSwgNjgsIDg1LCA2NywgNzUsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgCisgICAgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgCisgICAgNzcsIDgzLCA4NCwgNzMsIDY3LCA3NSwgODMsIDEyOCwgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCAKKyAgICA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIAorICAgIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3OSwgNzYsIDczLCA3OCwgMTk5LCA2OCwgCisgICAgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAKKyAgICAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCAKKyAgICA2OCwgODIsIDY5LCA2NSwgNzcsIDIxNywgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCA2NSwgNzcsIAorICAgIDEyOCwgNjgsIDgyLCA2NSwgMjA1LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIDcxLCA3OSwgCisgICAgMjA2LCA2OCwgODIsIDY1LCA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgODMsIAorICAgIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCA2OCwgCisgICAgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgNzgsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCA4NiwgCisgICAgMTk3LCA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIAorICAgIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4NCwgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAorICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAKICAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTYsIAogICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgCkBAIC00Mjg2LDI2MyArNDMyNCw4NTQgQEAKICAgICA3MSwgMTI4LCA2OCwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc3LCA2NSwgNzMsIDIwNiwgNjgsIDc5LCA3NiwgODAsIAogICAgIDcyLCA3MywgNzgsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDgzLCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA2NSwgMjEwLCA2OCwgCiAgICAgNzksIDc2LCA3MywgODUsIDc3LCAxMjgsIDY4LCA3OSwgNzUsIDc3LCA2NSwgNzMsIDEyOCwgNjgsIDc5LCA3MywgODQsIAotICAgIDEyOCwgNjgsIDc5LCA3MywgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCAKLSAgICA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIAotICAgIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgCi0gICAgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgMTk3LCAKLSAgICA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgNzYsIDg1LCAKLSAgICAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgNjgsIDc2LCAKLSAgICA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIDEyOCwgNjgsIDc1LCAKLSAgICA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIDY4LCA3NCwgNjksIAotICAgIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDczLCA5MCwgOTAsIDIxNywgNjgsIAotICAgIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgCi0gICAgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCAKLSAgICA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDgzLCAxMjgsIDY4LCA3MywgODYsIAotICAgIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCi0gICAgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIAotICAgIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIAotICAgIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgCi0gICAgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCAKLSAgICA3NSwgMTI4LCA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIAotICAgIDgzLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgCi0gICAgNjUsIDgwLCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCAKLSAgICA3MywgODIsIDcxLCAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIAotICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDgwLCA4NCwgCi0gICAgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCAKLSAgICA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgCi0gICAgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCAKLSAgICA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCAKLSAgICA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIAotICAgIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCAKLSAgICA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCAxNzgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAotICAgIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAKLSAgICAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgCi0gICAgMjA2LCA2OCwgNzMsIDcxLCA3MywgODQsIDgzLCAxMjgsIDY4LCA3MywgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCAKLSAgICA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIAotICAgIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgCi0gICAgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIAotICAgIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgCi0gICAgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCAKLSAgICA4MywgNjksIDIwNCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCAKLSAgICA2NSwgODQsIDc5LCA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIAotICAgIDgzLCA4NCwgNzksIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgCi0gICAgNzksIDc4LCA2OCwgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAKLSAgICAyMTAsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIAotICAgIDc1LCAxOTMsIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgCi0gICAgNzYsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCAKLSAgICA2OSwgODMsIDczLCA4MywgNDUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgCi0gICAgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCAKLSAgICA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgNzMsIDEyOCwgNjgsIDcyLCA3MywgMTI4LCAKLSAgICA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIAotICAgIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgCi0gICAgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIAotICAgIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCAKLSAgICA5MCwgMjAwLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgCi0gICAgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCAKLSAgICA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgNzUsIAotICAgIDg0LCA3OSwgMjA4LCA2OCwgNjksIDgzLCAyMDMsIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjgsIDY5LCA4MywgCi0gICAgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCA4NCwgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDIxMiwgNjgsIDY5LCAKLSAgICA4MywgNjksIDgyLCA2OSwgMjEyLCA2OCwgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA2OCwgNjksIAotICAgIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgCi0gICAgNjgsIDY5LCA4MiwgNjksIDg0LCA0NSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgMTI4LCAKLSAgICA2OCwgNjksIDgyLCA2OSwgNzYsIDczLCA2NywgMjEyLCA2OCwgNjksIDgwLCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIAotICAgIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgCi0gICAgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCAKLSAgICA3OCwgODQsIDY1LCAyMDQsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIAotICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDY4LCA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCAKLSAgICA3NiwgODQsIDY1LCAxMjgsIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIAotICAgIDgwLCA3MiwgNzMsIDE5NSwgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgCi0gICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCAKLSAgICA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIAotICAgIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgMTk3LCA2OCwgNjksIDc1LCA2NSwgMTI4LCA2OCwgCi0gICAgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgNzMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAKLSAgICA2OSwgODMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgNzMsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDIxMSwgNjgsIDY5LCA2OSwgCi0gICAgODIsIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgMTI4LCA2OCwgNjksIDY3LCAKLSAgICA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIAotICAgIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgODYsIDE5NywgCi0gICAgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDgzLCA3MywgODYsIAotICAgIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCA2OSwgNjcsIDczLCA2OCwgCi0gICAgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2NywgNjUsIDg5LCAKLSAgICA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2OSwgNjUsIAotICAgIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDg0LCAxMjgsIAotICAgIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIDg1LCA4MCwgMTI4LCA2OCwgCi0gICAgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCAKLSAgICA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgNjgsIDY4LCA3OSwgODAsIAotICAgIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCA3MywgODQsIDEyOCwgNjgsIAotICAgIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgCi0gICAgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA2OCwgNzIsIDc5LCAKLSAgICAxMjgsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCAKLSAgICA2OCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIAotICAgIDY4LCA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgCi0gICAgNjUsIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCAKLSAgICA2OCwgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIAotICAgIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgCi0gICAgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgNjcsIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIAotICAgIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAKLSAgICAxMjgsIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIAotICAgIDY1LCA4NCwgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgCi0gICAgNzIsIDY5LCAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCAKLSAgICA2NSwgMTI4LCA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgCi0gICAgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgCi0gICAgNjgsIDY1LCA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCAKLSAgICA0NSwgNzcsIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIAotICAgIDY5LCAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgCi0gICAgMTI4LCA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCAKLSAgICA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgCi0gICAgNzYsIDY5LCA4NCwgNzIsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCAKLSAgICA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIAotICAgIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAKLSAgICAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDczLCAxMjgsIDY4LCAKLSAgICA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgCi0gICAgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCAKLSAgICA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAyMDAsIAotICAgIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIDY4LCA2NSwgCi0gICAgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDUxLCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCAKLSAgICA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIAotICAgIDQ4LCA1NCwgNTUsIDcxLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTUsIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIAotICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIAotICAgIDY4LCA0OCwgNTQsIDUzLCAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgCi0gICAgNTQsIDUwLCAxMjgsIDY4LCA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAKLSAgICAxMjgsIDY4LCA0OCwgNTMsIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDUzLCAxMjgsIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIAotICAgIDUzLCA1MSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgCi0gICAgNDksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OCwgNzEsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIAotICAgIDUzLCA0OCwgNjgsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MiwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIAotICAgIDU0LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgCi0gICAgMTI4LCA2OCwgNDgsIDUyLCA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgCi0gICAgNDgsIDUyLCA0OCwgMTI4LCA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCAKLSAgICA1NSwgMTI4LCA2OCwgNDgsIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIAotICAgIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIAotICAgIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDY4LCA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA2OCwgNDgsIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA2OCwgNDgsIDUwLCA1MSwgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA2OCwgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2OCwgNDgsIDQ5LCA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA2OCwgNDgsIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNjgsIDQ4LCA0OCwgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNjcsIDg5LCA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgCi0gICAgODIsIDY5LCA3OCwgNjUsIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCAKLSAgICA2NywgODksIDgwLCA2OSwgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIAotICAgIDgyLCA3MywgNjcsIDczLCA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgCi0gICAgODksIDEyOCwgNjcsIDg5LCA2NSwgODcsIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgCi0gICAgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCAKLSAgICA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCAKLSAgICA4NSwgODUsIDEyOCwgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIAotICAgIDg0LCA3OSwgNzcsIDY5LCAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA4NSwgODMsIDgwLCAKLSAgICAxMjgsIDY3LCA4NSwgODIsIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIAotICAgIDY5LCA2OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgCi0gICAgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAxMjgsIDY3LCAKLSAgICA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIDEyOCwgNjcsIAotICAgIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDY4LCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgCi0gICAgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAKLSAgICAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCAKLSAgICA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgCi0gICAgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCAKLSAgICA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIAotICAgIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIAotICAgIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgCi0gICAgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIAotICAgIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAKLSAgICAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCi0gICAgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgCi0gICAgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgNjcsIDgyLCAKLSAgICA3MywgNjcsIDc1LCA2OSwgMjEyLCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDY3LCA4MiwgNjksIAotICAgIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIDY5LCA2OCwgCi0gICAgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAxMjgsIDY3LCAKLSAgICA4MiwgNjUsIDg5LCA3OSwgNzgsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCA2NSwgNjYsIAotICAgIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCAKLSAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NSwgNjcsIAotICAgIDIwMCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgCi0gICAgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCAKLSAgICA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIAotICAgIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgCi0gICAgMjEwLCA2NywgNzksIDgyLCA3NSwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCAKLSAgICA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIAotICAgIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgCi0gICAgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIAotICAgIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgCi0gICAgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCAKLSAgICA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgCi0gICAgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzMsIDc4LCAxOTksIDY3LCAKLSAgICA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIAotICAgIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgCi0gICAgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDY5LCAKLSAgICA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAotICAgIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAKLSAgICAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIAotICAgIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgCi0gICAgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCAKLSAgICA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgCi0gICAgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCAKLSAgICA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCAKLSAgICA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIAotICAgIDc5LCA3NywgODAsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIAotICAgIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgCi0gICAgNzksIDIwNiwgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCAKLSAgICA2OCwgMTI4LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIAotICAgIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCA3NiwgODUsIDc3LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzYsIAotICAgIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgMTI4LCA2NywgNzksIDY5LCA3OCwgCi0gICAgNzEsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgNjcsIDc5LCA2NywgNzUsIDg0LCAKLSAgICA2NSwgNzMsIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA2NSwgMTI4LCA2NywgNzcsIAotICAgIDEyOCwgNjcsIDIwNSwgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIAotICAgIDc2LCA4NSwgNjYsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgCi0gICAgMTk0LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNzksIDg1LCA2OCwgMTI4LCA2NywgNzYsIDc5LCAKLSAgICA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NywgNzYsIDc5LCA4NCwgNzIsIDEyOCwgNjcsIAotICAgIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY3LCA3NiwgCi0gICAgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAKLSAgICAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCA3MywgODMsIDEyOCwgNjcsIDc2LCA3MywgODAsIAotICAgIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgODMsIDEyOCwgNjcsIDc2LCA3MywgNzAsIDcwLCAKLSAgICAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDUwLCAxMjgsIDY3LCA3NiwgNjksIAotICAgIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIDc2LCA2OSwgMTk4LCA2NywgNzYsIDY5LCA2NSwgCi0gICAgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgNzYsIDY1LCA4MywgODMsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgMjEwLCA2NywgCi0gICAgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCAyMDYsIDY3LCA3NiwgNjUsIDc3LCA4MywgNzIsIDY5LCA3NiwgMjA0LCAKLSAgICA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCA4NiwgNzMsIAotICAgIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjcsIDczLCA4NCwgCi0gICAgODksIDgzLCA2NywgNjUsIDgwLCAxOTcsIDY3LCA3MywgODQsIDIwMSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgCi0gICAgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIDgyLCAKLSAgICA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIAotICAgIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIDczLCA4MiwgCi0gICAgNjcsIDc2LCA2OSwgMjExLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA2OCwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIDY3LCAKLSAgICA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgCisgICAgMTI4LCA2OCwgNzksIDczLCA3OCwgMTk5LCA2OCwgNzksIDczLCAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIAorICAgIDY4LCA3OSwgNjksIDIxMSwgNjgsIDc5LCA2OCwgNjksIDc1LCA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNzksIDY2LCA4MiwgNzksIAorICAgIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgCisgICAgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAKKyAgICAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgCisgICAgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAKKyAgICAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCAKKyAgICA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCAKKyAgICA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKKyAgICA4MiwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCisgICAgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgMTk3LCA2OCwgNzMsIDg2LCAKKyAgICA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNzMsIDg0LCA4NCwgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIAorICAgIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgCisgICAgNjgsIDczLCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgODMsIDgwLCA4NSwgODQsIDY5LCAKKyAgICAxOTYsIDY4LCA3MywgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDc1LCAxMjgsIAorICAgIDY4LCA3MywgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA3MywgNzgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCA2NSwgODAsIDgwLCAKKyAgICA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDczLCA4MiwgNzEsIAorICAgIDE5MywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNjUsIDIwNCwgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA3MywgODAsIDg0LCA2OSwgMTI4LCAKKyAgICA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY4LCA3MywgODAsIAorICAgIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAyMTIsIDY4LCA3MywgCisgICAgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTAsIDEyOCwgNjgsIAorICAgIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDczLCAKKyAgICA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgNjgsIDczLCA3NywgNjksIAorICAgIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgCisgICAgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDE3OCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCisgICAgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgNjgsIDczLCAKKyAgICA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDY4LCA3MywgNzEsIAorICAgIDczLCA4NCwgODMsIDEyOCwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgCisgICAgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCAKKyAgICA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgCisgICAgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCAKKyAgICA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIAorICAgIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgzLCA2OSwgMjA0LCA2OCwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCAKKyAgICA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIAorICAgIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCAKKyAgICAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIDIxMCwgNjgsIAorICAgIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDE5MywgCisgICAgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCA3NiwgMTI4LCAKKyAgICA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgCisgICAgNzMsIDgzLCA0NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgMTI4LCAKKyAgICA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCA3OSwgNzksIAorICAgIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIAorICAgIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAKKyAgICAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNjgsIAorICAgIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgCisgICAgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCAKKyAgICA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCA2OCwgNjksIDg5LCA4NCwgNjksIAorICAgIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgCisgICAgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgNzUsIDg0LCA3OSwgMjA4LCA2OCwgNjksIDgzLCAyMDMsIAorICAgIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjgsIDY5LCA4MywgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCA4NCwgCisgICAgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDIxMiwgNjgsIDY5LCA4MywgNjksIDgyLCA2OSwgMjEyLCA2OCwgNjksIDgzLCAKKyAgICA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIAorICAgIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCA0NSwgNzIsIDczLCAKKyAgICA2OCwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgNzYsIDczLCA2NywgCisgICAgMjEyLCA2OCwgNjksIDgwLCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCAKKyAgICA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgCisgICAgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY4LCAKKyAgICA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgCisgICAgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgNzgsIDcxLCAxMjgsIDY4LCAKKyAgICA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCA3NiwgODQsIDY1LCAxMjgsIAorICAgIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIDgwLCA3MiwgNzMsIDE5NSwgCisgICAgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIAorICAgIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgCisgICAgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIDc2LCA2OSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2OCwgNjksIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgMTk3LCA2OCwgNjksIAorICAgIDc1LCA2NSwgMTI4LCA2OCwgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgNzMsIDEyOCwgNjgsIAorICAgIDY5LCA3MSwgODIsIDY5LCA2OSwgODMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgCisgICAgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIAorICAgIDIxMSwgNjgsIDY5LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgCisgICAgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCAKKyAgICA2NSwgODMsIDY5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIAorICAgIDg0LCA3MywgODYsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgCisgICAgNzMsIDgzLCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCAKKyAgICA2OSwgNjcsIDczLCA2OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIAorICAgIDY5LCA2NywgNjUsIDg5LCA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAKKyAgICAxMjgsIDY4LCA2OSwgNjUsIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCAKKyAgICA2OCwgODUsIDg0LCAxMjgsIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIAorICAgIDg1LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgCisgICAgODUsIDc5LCAxMjgsIDY4LCA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgCisgICAgNjgsIDY4LCA3OSwgODAsIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCAKKyAgICA3MywgODQsIDEyOCwgNjgsIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIAorICAgIDY4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIDY4LCAKKyAgICA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2OCwgCisgICAgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIDc2LCAKKyAgICAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgNjUsIAorICAgIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgNjcsIAorICAgIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIDY4LCAKKyAgICA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAxMjgsIAorICAgIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgCisgICAgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgNzIsIDY5LCAKKyAgICAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCAKKyAgICA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIAorICAgIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgCisgICAgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCAKKyAgICA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIAorICAgIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAKKyAgICAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCAKKyAgICA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAorICAgIDc4LCA2NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAKKyAgICAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIAorICAgIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgCisgICAgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCAKKyAgICA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgCisgICAgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCAKKyAgICA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDczLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgCisgICAgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCAKKyAgICA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIAorICAgIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAyMDAsIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIDY4LCA2NSwgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIAorICAgIDUxLCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIAorICAgIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNzYsIDczLCAxMjgsIAorICAgIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAKKyAgICA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIAorICAgIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgCisgICAgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgCisgICAgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCAKKyAgICA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIAorICAgIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgCisgICAgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgCisgICAgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIAorICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIAorICAgIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgCisgICAgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCAKKyAgICA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIAorICAgIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgCisgICAgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDg5LCAxMjgsIDY3LCAKKyAgICA4OSwgNjUsIDg3LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCAKKyAgICA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIAorICAgIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDg1LCAxMjgsIAorICAgIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgCisgICAgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgMTI4LCA2NywgODUsIDgzLCA4MCwgMTI4LCA2NywgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIDg2LCA2OSwgNjgsIDEyOCwgNjcsIAorICAgIDg1LCA4MiwgODYsIDY5LCAxOTYsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTI4LCA2NywgODUsIDgyLCA4NiwgMTk3LCA2NywgCisgICAgODUsIDgyLCA4MywgNzMsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIAorICAgIDEyOCwgNjcsIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDY4LCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgCisgICAgMTk2LCA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgCisgICAgMjA1LCA2NywgODUsIDY3LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCAKKyAgICA4NSwgNjYsIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIAorICAgIDczLCA3NiwgNzYsIDIwNywgNjcsIDg1LCA2NSwgMjA1LCA2NywgODUsIDEyOCwgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIAorICAgIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCA4MiwgODksIDgwLCA4NCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgCisgICAgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCAKKyAgICA3MywgNzAsIDc5LCA4MiwgMjA1LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MywgMTI4LCA2NywgODIsIAorICAgIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCAKKyAgICA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIAorICAgIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCA2NSwgODQsIDY3LCAKKyAgICAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIDgyLCA3OSwgODMsIAorICAgIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgCisgICAgNzgsIDY5LCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCAKKyAgICA3OSwgODAsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDczLCA4MywgODMsIDY1LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgCisgICAgNjcsIDgyLCA3MywgNjcsIDc1LCA2OSwgMjEyLCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDY3LCAKKyAgICA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIAorICAgIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAKKyAgICAxMjgsIDY3LCA4MiwgNjUsIDg5LCA3OSwgNzgsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDgyLCA2NSwgNjYsIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgNjYsIDc5LCAyMTcsIAorICAgIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIDg1LCA4MCwgCisgICAgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAKKyAgICA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCA2NywgNzksIAorICAgIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODUsIDY3LCAyMDAsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgCisgICAgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCAKKyAgICA4MiwgODAsIDgzLCA2OSwgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIAorICAgIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgCisgICAgNzgsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MiwgNzUsIDEyOCwgNjcsIDc5LCAKKyAgICA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIAorICAgIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgCisgICAgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCAKKyAgICA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIAorICAgIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgCisgICAgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCAKKyAgICA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIAorICAgIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCAKKyAgICA3OCwgODQsIDczLCA3OCwgODUsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCAKKyAgICA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgCisgICAgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCAKKyAgICA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA2OSwgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIAorICAgIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgCisgICAgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNjksIAorICAgIDY4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIAorICAgIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgCisgICAgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCAKKyAgICA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgCisgICAgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCAKKyAgICA3NywgODAsIDg1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCAKKyAgICA4MywgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIAorICAgIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNzMsIAorICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3NiwgNjksIDg0LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgNzcsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDc5LCA3NywgODAsIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIDc5LCAyMDYsIDY3LCA3OSwgCisgICAgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgNjgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgNzcsIDY1LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA2NiwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIAorICAgIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgCisgICAgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCAKKyAgICA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAyMDQsIAorICAgIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc3LCAxMjgsIDY3LCAyMDUsIAorICAgIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCA3NiwgODUsIDY2LCA0NSwgCisgICAgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIDE5NCwgNjcsIDc2LCAKKyAgICA3OSwgODcsIDIwNiwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDc5LCA4NSwgNjgsIDEyOCwgNjcsIAorICAgIDc2LCA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjcsIDc2LCA3OSwgODQsIDcyLCAKKyAgICAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA3OCwgNjksIDgzLCA4MywgCisgICAgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAKKyAgICA3NSwgODcsIDczLCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgNzMsIDgzLCAxMjgsIAorICAgIDY3LCA3NiwgNzMsIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgNjcsIDc2LCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIDgzLCAxMjgsIDY3LCAKKyAgICA3NiwgNzMsIDcwLCA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA1MCwgCisgICAgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCA3NiwgNjksIDE5OCwgCisgICAgNjcsIDc2LCA2OSwgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIDc2LCA2NSwgODMsIDgzLCAKKyAgICA3MywgNjcsIDY1LCAyMDQsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIAorICAgIDIxMCwgNjcsIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgMjA2LCA2NywgNzYsIDY1LCA3NywgODMsIDcyLCA2OSwgCisgICAgNzYsIDIwNCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgCisgICAgODYsIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY3LCAKKyAgICA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgMTk3LCA2NywgNzMsIDg0LCAyMDEsIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgCisgICAgNzcsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCAxOTksIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCA3MywgCisgICAgODIsIDY3LCA3NiwgNjksIDIxMSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgNjgsIDEyOCwgNjcsIDczLCA4MCwgMTI4LCAKKyAgICA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIAogICAgIDIwNiwgNjcsIDczLCAyMDUsIDY3LCA3MywgNzMsIDEyOCwgNjcsIDczLCA2OSwgODgsIDEyOCwgNjcsIDczLCA2OSwgODUsIAogICAgIDY3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCAKICAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgCkBAIC00NTc2LDMwMCArNTIwNSwzMDQgQEAKICAgICA4NiwgODIsIDc5LCAyMDYsIDY3LCA3MiwgNjksIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgNzgsIDg1LCA4NCwgCiAgICAgMTI4LCA2NywgNzIsIDY5LCA4MywgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDIxMSwgNjcsIDcyLCA2OSwgODIsIDg5LCAKICAgICAxMjgsIDY3LCA3MiwgNjksIDgyLCA4MiwgMjE3LCA2NywgNzIsIDY5LCA4MiwgODIsIDczLCA2OSwgODMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgODEsIDg1LCA2OSwgODIsIDY5LCAxOTYsIDY3LCA3MiwgNjksIDgwLCAxMjgsIDY3LCA3MiwgNjksIDIwNiwgCi0gICAgNjcsIDcyLCA2OSwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjksIDczLCAxMjgsIDY3LCAKLSAgICA3MiwgNjksIDczLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY5LCA2OSwgODMsIDE5NywgNjcsIDcyLCA2OSwgNjksIAotICAgIDgyLCA3MywgNzgsIDE5OSwgNjcsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA3NSwgMjExLCA2NywgCi0gICAgNzIsIDY5LCA2OSwgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCA2OSwgMjEwLCAKLSAgICA2NywgNzIsIDY5LCA2NywgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIAotICAgIDg4LCAxMjgsIDY3LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgCi0gICAgODcsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4MiwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDg0LCA2OSwgODIsIDEyOCwgNjcsIAotICAgIDcyLCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgCi0gICAgNjUsIDc3LCA3NSwgNzksIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCAKLSAgICA3MywgNzYsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDIwNSwgNjcsIDcyLCA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIAotICAgIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgCi0gICAgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCAKLSAgICA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIAotICAgIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCAKLSAgICA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCAKLSAgICA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgCi0gICAgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCAKLSAgICA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAKLSAgICAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIAotICAgIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDY4LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgCi0gICAgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCAKLSAgICA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIDc2LCA4NCwgNzMsIAotICAgIDE5NSwgNjcsIDY5LCA3NiwgODMsIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY3LCA2OSwgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2NywgNjksIDczLCA3NiwgNzMsIDc4LCAxOTksIDY3LCA2OSwgNjksIDg2LCAxMjgsIDY3LCA2OSwgNjksIDY2LCAxMjgsIAotICAgIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgCi0gICAgMTkzLCA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgCi0gICAgNjcsIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCAKLSAgICA3OSwgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCAKLSAgICA2NywgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIAotICAgIDY3LCA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAKLSAgICAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNjUsIDEyOCwgNjcsIDY3LCA3MiwgMTI4LCA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgCi0gICAgNjUsIDY1LCAxMjgsIDY3LCA2NywgNjUsIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNjcsIDY1LCA4OCwgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY3LCA2NSwgODUsIDc2LCA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgCi0gICAgNjcsIDY1LCA4NSwgNjcsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODUsIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCAKLSAgICA2NSwgMTI4LCA2NywgNjUsIDg0LCAxMjgsIDY3LCA2NSwgMjEyLCA2NywgNjUsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCAKLSAgICA2NSwgODMsIDc1LCA2OSwgMjEyLCA2NywgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIAotICAgIDgyLCA3MywgNjgsIDcxLCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4NCwgMTI4LCA2NywgNjUsIDgyLCAyMTEsIDY3LCA2NSwgCi0gICAgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCA2NSwgODIsIDgwLCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIDgyLCAKLSAgICAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIDY5LCAyMDQsIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIAotICAgIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgMjAzLCA2NywgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgCi0gICAgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIDgzLCAKLSAgICAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA2NSwgODIsIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDIxMCwgCi0gICAgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCA4MCwgODQsIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgODIsIDczLCAKLSAgICA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIDgwLCA4MCwgNjksIDE5NiwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIAotICAgIDY1LCA4MCwgNzMsIDg0LCA4NSwgNzYsIDg1LCA3NywgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA2NywgCi0gICAgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgMTk5LCA2NywgNjUsIDc4LCAKLSAgICA2OCwgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDY3LCA2NSwgNzgsIAotICAgIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3OCwgCi0gICAgNjgsIDgyLCAxOTMsIDY3LCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCAKLSAgICA2NywgNjUsIDc4LCA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgCi0gICAgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIDc3LCA4MCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA2NywgNjUsIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIAotICAgIDc3LCA2OSwgODIsIDE5MywgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgCi0gICAgNjUsIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCAKLSAgICA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDIxMCwgNjcsIDY1LCA3NiwgNjcsIAotICAgIDg1LCA3NiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY1LCA3NSwgODIsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA3MywgMTI4LCA2NywgNjUsIDcyLCAxMjgsIDY3LCA2NSwgNjksIDgzLCAKLSAgICA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAxOTMsIAotICAgIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIDY3LCA2NSwgCi0gICAgNjYsIDczLCA3OCwgNjksIDg0LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCAKLSAgICA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCA2NywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNjcsIAotICAgIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIDkwLCA3MiwgCi0gICAgMjAxLCA2NiwgODksIDg0LCAxOTcsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgNzgsIDQ1LCAKLSAgICA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAxMjgsIAotICAgIDY2LCA4NywgNjksIDY5LCAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCA3NywgCi0gICAgNzMsIDgzLCA3MiwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgMjA2LCAKLSAgICA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIAotICAgIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCA4MywgNzMsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgCi0gICAgODIsIDIxMywgNjYsIDg1LCA4MiwgODIsIDczLCA4NCwgNzksIDEyOCwgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAKLSAgICAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCAKLSAgICA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIAotICAgIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgCi0gICAgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCAyMDYsIDY2LCAKLSAgICA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIAotICAgIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgCi0gICAgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCAKLSAgICAxOTksIDY2LCA4NSwgNzIsIDczLCAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAxOTcsIDY2LCA4NSwgNzEsIAotICAgIDEyOCwgNjYsIDg1LCA3MCwgNzAsIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2OCwgMTI4LCA2NiwgODUsIDY3LCA3NSwgCi0gICAgNzYsIDY5LCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIDgzLCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIAotICAgIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIDY1LCAxNzMsIAotICAgIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCA4MiwgODUsIDgzLCAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgCi0gICAgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIDY2LCA4MiwgNzksIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAKLSAgICAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIAotICAgIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCA2OCwgNzEsIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgCi0gICAgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIDg2LCA3MywgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCAKLSAgICA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgODIsIDY5LCA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIAotICAgIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgCi0gICAgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKLSAgICA3MiwgNjksIDgzLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCAyMDAsIAotICAgIDY2LCA4MiwgNjUsIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCA2OSwgMTk2LCA2NiwgCi0gICAgODIsIDY1LCA2NywgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgODEsIDEyOCwgNjYsIDgwLCAKLSAgICA3MiwgMTI4LCA2NiwgNzksIDg5LCAyMTEsIDY2LCA3OSwgODksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCAKLSAgICA2NiwgNzksIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIAotICAgIDEyOCwgNjYsIDc5LCA4NywgMjA0LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIAotICAgIDgxLCA4NSwgNjksIDg0LCAxMjgsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDIxMiwgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgCi0gICAgODIsIDIxNywgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA2NiwgNzksIDg0LCAKLSAgICA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIAotICAgIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgCi0gICAgMTk3LCA2NiwgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAKLSAgICA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDY2LCA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgCi0gICAgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCAKLSAgICA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIAotICAgIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgCi0gICAgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAKLSAgICAxMjgsIDY2LCA3OSwgNjgsIDIxNywgNjYsIDc5LCA2NSwgODIsIDEyOCwgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCAKLSAgICA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc2LCA3OSwgODcsIAotICAgIDcwLCA3MywgODMsIDcyLCAxMjgsIDY2LCA3NiwgNzksIDIxNSwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgCi0gICAgNjYsIDc2LCA3OSwgNzksIDY4LCAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCAKLSAgICA2NiwgNzYsIDczLCA3OCwgMjAzLCA2NiwgNzYsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDc4LCA3NSwgCi0gICAgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDc2LCAKLSAgICA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIAotICAgIDc1LCA0NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCAKLSAgICA3MiwgNjksIDgyLCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIAotICAgIDg0LCA4NCwgNjksIDgyLCAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDg0LCAxOTcsIDY2LCA3MywgCi0gICAgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCAKLSAgICA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgCi0gICAgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCAKLSAgICA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIAotICAgIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgCi0gICAgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAKLSAgICAxMjgsIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIAotICAgIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIDY2LCA3MywgMTk5LCA2NiwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgNzMsIDY4LCA2NSwgNzUsIDg1LCA3OSwgCi0gICAgMjA2LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAKLSAgICA4MywgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIAotICAgIDY2LCA3MywgNjYsIDc2LCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgCi0gICAgNzIsIDg1LCAxMjgsIDY2LCA3MiwgNzksIDc5LCAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgCi0gICAgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDcyLCA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCAKLSAgICA4NCwgODQsIDczLCA4MCwgODIsIDc5LCA3NiwgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCA2NSwgCi0gICAgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgODksIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgCi0gICAgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCAKLSAgICA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIAotICAgIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgNjksIDgzLCA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgCi0gICAgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgCi0gICAgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA4NCwgMTI4LCAKLSAgICA2NiwgNjksIDc4LCAyMTIsIDY2LCA2OSwgNzgsIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIAotICAgIDc4LCAxOTYsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIAotICAgIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCA3MiwgNzksIDIwOCwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgCi0gICAgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCA3OSwgMjEwLCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCAKLSAgICA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIAotICAgIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgCi0gICAgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAotICAgIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIAotICAgIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgCi0gICAgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2OSwgNjUsIDY4LCA4MywgMTI4LCA2NiwgNjksIDY1LCAKLSAgICA2NywgMjAwLCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIAotICAgIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCAKLSAgICA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIAotICAgIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgCi0gICAgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgCi0gICAgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCAKLSAgICA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIAotICAgIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgCi0gICAgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCAKLSAgICA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgODMsIAotICAgIDE5MywgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKLSAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY2LCA2NSwgODMsIAotICAgIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgCi0gICAgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAKLSAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgCi0gICAgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCAKLSAgICA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgCi0gICAgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgCi0gICAgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCAKLSAgICA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIAotICAgIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgODQsIDEyOCwgCi0gICAgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgNzUsIAotICAgIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCA2NiwgCi0gICAgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDczLCAKLSAgICA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgODUsIAotICAgIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDE3OCwgCi0gICAgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA4MywgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAxOTcsIDY2LCAKLSAgICA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCA3NywgNzMsIAotICAgIDc4LCA4NCwgNzksIDIwNiwgNjYsIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgCi0gICAgNjYsIDY1LCA2OCwgMTI4LCA2NiwgNjUsIDE5NiwgNjYsIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCAKLSAgICA2NywgNzUsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIAotICAgIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgCi0gICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDcyLCA2NSwgNzgsIAotICAgIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDEyOCwgCi0gICAgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIDY2LCA2NSwgNjUsIDgyLCAKLSAgICA2OSwgODIsIDg1LCAxMjgsIDY2LCA2NSwgNDUsIDUwLCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIAotICAgIDU3LCAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIAotICAgIDY2LCA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgCi0gICAgNTAsIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgCi0gICAgNjYsIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCAKLSAgICA1MywgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAKLSAgICAxNzYsIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCAKLSAgICA1MSwgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCAKLSAgICA1MCwgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIAotICAgIDE4MSwgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIAotICAgIDQ5LCA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgCi0gICAgMTI4LCA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCAKLSAgICA1NywgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCAKLSAgICA2NiwgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIAotICAgIDQ4LCA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIAotICAgIDY2LCA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgCi0gICAgNTYsIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAKLSAgICAxMjgsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCAKLSAgICA0OSwgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCAKLSAgICA2NiwgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIAotICAgIDU0LCA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgCi0gICAgMTI4LCA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgCi0gICAgNTQsIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgCi0gICAgNDksIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAKLSAgICAxMjgsIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCAKLSAgICA0OSwgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCAKLSAgICA2NiwgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCAKLSAgICA2NiwgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCAKLSAgICA2NiwgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCAKLSAgICA0OSwgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCAKLSAgICA0OSwgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIAotICAgIDU1LCAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIAotICAgIDY2LCA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgCi0gICAgMTgwLCA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIAotICAgIDY2LCA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgCi0gICAgMTgxLCA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgCi0gICAgNTYsIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgCi0gICAgNTUsIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgCi0gICAgMTc4LCA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIAotICAgIDY2LCA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIAotICAgIDY2LCA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIAotICAgIDY2LCA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIAotICAgIDY2LCA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIAotICAgIDQ4LCA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIAotICAgIDQ4LCA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIAotICAgIDQ4LCA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIAotICAgIDUxLCAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIAotICAgIDUyLCAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIAotICAgIDE3NiwgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCAKLSAgICA2NiwgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA2NiwgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCAKLSAgICA2NiwgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCAKLSAgICA0OCwgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCAKLSAgICA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIAotICAgIDE4MiwgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIAotICAgIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgCi0gICAgMTc3LCA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIDg4LCA2OSwgCi0gICAgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NywgNjUsIDIxNywgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgCi0gICAgODYsIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIAotICAgIDY1LCAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIAotICAgIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgCi0gICAgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIAotICAgIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCAKLSAgICA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgODQsIDY1LCA2NywgNzIsIDY5LCAKLSAgICAxOTYsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgNjUsIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCAKLSAgICA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCA3MiwgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIAotICAgIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgCi0gICAgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCAKLSAgICA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAotICAgIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCAKLSAgICA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIAotICAgIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIAotICAgIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgzLCA3MiwgCi0gICAgNTcsIDEyOCwgNjUsIDgzLCA3MiwgNTEsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIAotICAgIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCisgICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc4LCAKKyAgICA2NSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjksIDczLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIAorICAgIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY5LCA2OSwgODMsIDE5NywgNjcsIDcyLCA2OSwgNjksIDgyLCA3MywgNzgsIDE5OSwgCisgICAgNjcsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA3NSwgMjExLCA2NywgNzIsIDY5LCA2OSwgNzUsIAorICAgIDEyOCwgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCA2OSwgMjEwLCA2NywgNzIsIDY5LCA2NywgCisgICAgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIDg4LCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMjEyLCA2NywgNzIsIAorICAgIDY1LCA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA2NSwgCisgICAgNjcsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3NSwgNzksIDEyOCwgCisgICAgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDczLCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDIwNSwgNjcsIDcyLCA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3MywgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDY3LCA3MSwgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgCisgICAgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCAKKyAgICA0NSwgODcsIDY1LCAxMjgsIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIAorICAgIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgCisgICAgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIAorICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgCisgICAgODIsIDczLCA2NSwgMjA0LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCAKKyAgICA4MiwgNjksIDY4LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgCisgICAgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIDc2LCA4NCwgNzMsIDE5NSwgNjcsIDY5LCA3NiwgODMsIAorICAgIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA2OSwgCisgICAgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDY3LCA2OSwgNjksIDg2LCAxMjgsIDY3LCA2OSwgNjksIDY2LCAxMjgsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY5LCAKKyAgICA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCA2NywgNjksIDY4LCAyMDEsIAorICAgIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDIwMywgCisgICAgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgMTI4LCA2NywgNjcsIDczLCAKKyAgICAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIDczLCAxMjgsIDY3LCAKKyAgICA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDczLCAxMjgsIAorICAgIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgCisgICAgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCAKKyAgICA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgMTI4LCAKKyAgICA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAxMjgsIDY3LCA2NywgNjUsIAorICAgIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjcsIDY1LCA4OCwgCisgICAgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgODUsIDc2LCAKKyAgICA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NSwgNjcsIDY1LCA4MywgNzMsIAorICAgIDY1LCAyMDYsIDY3LCA2NSwgODUsIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNjUsIDg0LCAxMjgsIAorICAgIDY3LCA2NSwgMjEyLCA2NywgNjUsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgODMsIDc1LCA2OSwgMjEyLCA2NywgCisgICAgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIDg3LCA3MiwgNjksIDY5LCA3NiwgMTI4LCAKKyAgICA2NywgNjUsIDgyLCA4NCwgODIsIDczLCA2OCwgNzEsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIAorICAgIDIxMSwgNjcsIDY1LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgCisgICAgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCAKKyAgICA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIAorICAgIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgCisgICAgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgCisgICAgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgCisgICAgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCAKKyAgICA4MCwgODAsIDY5LCAxOTYsIDY3LCA2NSwgODAsIDc5LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgODUsIDc2LCA4NSwgNzcsIAorICAgIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDc5LCA2OSwgMTI4LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY3LCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAxMjgsIAorICAgIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIAorICAgIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCA2NSwgCisgICAgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDIwNCwgCisgICAgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCAyMTAsIDY3LCAKKyAgICA2NSwgNzYsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIAorICAgIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCA3MiwgMTI4LCA2NywgNjUsIAorICAgIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2OCwgCisgICAgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgODcsIDY1LCA4OSwgMTI4LCAKKyAgICA2NywgNjUsIDY2LCA3MywgNzgsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgCisgICAgNjksIDY5LCAxMjgsIDY3LCA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgCisgICAgNDgsIDUwLCA1MiwgMTI4LCA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCAKKyAgICA0OSwgMTI4LCA2NywgNDgsIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCAKKyAgICA2NywgNDgsIDQ5LCA1NSwgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIAorICAgIDQ5LCA1MiwgMTI4LCA2NywgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgCisgICAgMTI4LCA2NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgNjcsIDQ4LCA0OCwgNTYsIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNTMsIDEyOCwgNjcsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIAorICAgIDY3LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjcsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAKKyAgICAxOTYsIDY3LCA0NSwgNTEsIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCAKKyAgICA5MCwgNzIsIDIwMSwgNjYsIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIAorICAgIDc4LCA0NSwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgCisgICAgMTI4LCA2NiwgODcsIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgCisgICAgNzcsIDczLCA4MywgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIAorICAgIDIwNiwgNjYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzAsIDc2LCA4OSwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgCisgICAgODQsIDIxMSwgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAKKyAgICA4MywgNzMsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgODIsIDIxMywgNjYsIDg1LCA4MiwgODIsIAorICAgIDczLCA4NCwgNzksIDEyOCwgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgCisgICAgNzcsIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCAKKyAgICA3NiwgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIAorICAgIDc4LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCAyMDYsIDY2LCA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgCisgICAgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCAKKyAgICA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIAorICAgIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA4NSwgNzIsIDczLCAKKyAgICAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAxOTcsIDY2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3MCwgNzAsIAorICAgIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2OCwgMTI4LCA2NiwgODUsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDY2LCA4NSwgCisgICAgNjYsIDY2LCA3NiwgNjksIDgzLCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAKKyAgICAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIDY1LCAxNzMsIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCAKKyAgICA4MiwgODUsIDgzLCAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIAorICAgIDY2LCA4MiwgNzksIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCAKKyAgICA2OCwgNzEsIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIAorICAgIDg2LCA3MywgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgCisgICAgODIsIDY5LCA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCAKKyAgICA3OSwgODUsIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgCisgICAgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA2OSwgODMsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCAKKyAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIAorICAgIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAKKyAgICAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgODAsIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgCisgICAgNzksIDg4LCA3MywgNzgsIDE5OSwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIAorICAgIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgNjYsIDc5LCA4NywgCisgICAgMjA0LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAKKyAgICAxMjgsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDIxMiwgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgODIsIDIxNywgNjYsIAorICAgIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAKKyAgICA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIDY2LCA3OSwgODQsIAorICAgIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgMTk3LCA2NiwgCisgICAgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTEsIAorICAgIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIDY2LCA3OSwgCisgICAgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCAKKyAgICA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIAorICAgIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgCisgICAgNjksIDEyOCwgNjYsIDc5LCA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgMTI4LCA2NiwgCisgICAgNzksIDc2LCAyMTIsIDY2LCA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAxMjgsIDY2LCAKKyAgICA3OSwgNjgsIDIxNywgNjYsIDc5LCA2NSwgODIsIDEyOCwgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCAKKyAgICA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc2LCA3OSwgODcsIDcwLCA3MywgODMsIAorICAgIDcyLCAxMjgsIDY2LCA3NiwgNzksIDIxNSwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgNjYsIDc2LCA3OSwgCisgICAgNzksIDY4LCAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA2NiwgNzYsIDczLCAKKyAgICA3OCwgMjAzLCA2NiwgNzYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgNjYsIDc2LCA2NSwgNjgsIAorICAgIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgCisgICAgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCAKKyAgICA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIAorICAgIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgNjYsIDczLCA4NCwgMTk3LCA2NiwgNzMsIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIDc3LCA3MywgNzYsIDc2LCAKKyAgICA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgODQsIDczLCA3OCwgCisgICAgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCA4MiwgODQsIDcyLCAKKyAgICA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDcxLCAxOTMsIDY2LCA3MywgODIsIAorICAgIDY4LCAxMjgsIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgCisgICAgNjUsIDIxMCwgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCAKKyAgICA3OCwgNjUsIDgyLCAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA3NiwgNzMsIAorICAgIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgCisgICAgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCA2NiwgNzMsIDE5OSwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgCisgICAgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIDczLCA2OCwgNjUsIDc1LCA4NSwgNzksIDIwNiwgNjYsIDczLCA2NywgODksIDY3LCAKKyAgICA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDczLCA2NywgODksIAorICAgIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCA2NiwgNzMsIDY2LCA3NiwgNjksIDQ1LCA2NywgCisgICAgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIDcyLCA4NSwgMTI4LCA2NiwgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDY2LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgODQsIDg0LCA3MywgODAsIDgyLCA3OSwgNzYsIAorICAgIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgNjUsIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIAorICAgIDg5LCA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIAorICAgIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIAorICAgIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgCisgICAgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgCisgICAgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgODQsIDEyOCwgNjYsIDY5LCA3OCwgMjEyLCA2NiwgNjksIDc4LCAKKyAgICA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCA3OCwgMTk2LCA2NiwgNjksIDIwNiwgNjYsIDY5LCAKKyAgICA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgNzIsIAorICAgIDc5LCAyMDgsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgCisgICAgNzksIDIxMCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCAKKyAgICA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCAKKyAgICA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIAorICAgIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgCisgICAgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIAorICAgIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCAKKyAgICA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCAKKyAgICA2NiwgNjksIDY1LCA2OCwgODMsIDEyOCwgNjYsIDY5LCA2NSwgNjcsIDIwMCwgNjYsIDY3LCA2NSwgNjgsIDEyOCwgNjYsIAorICAgIDY3LCA2NSwgMTk2LCA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgNjYsIDg5LCA4NCwgMTI4LCA2NiwgNjYsIDg5LCA4MCwgCisgICAgMTI4LCA2NiwgNjYsIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDg0LCAxMjgsIDY2LCA2NiwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCA2NiwgNjYsIDg1LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCAxMjgsIDY2LCA2NiwgODUsIAorICAgIDEyOCwgNjYsIDY2LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgODQsIDEyOCwgNjYsIDY2LCA3OSwgODAsIDEyOCwgNjYsIAorICAgIDY2LCA3OSwgMTI4LCA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgNjYsIDczLCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDczLCAKKyAgICA2OSwgMTI4LCA2NiwgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIDg4LCAxMjgsIDY2LCA2NiwgNjksIDgwLCAxMjgsIDY2LCAKKyAgICA2NiwgNjksIDY5LCAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIDY2LCA2NSwgODgsIDEyOCwgNjYsIDY2LCA2NSwgODQsIAorICAgIDEyOCwgNjYsIDY2LCA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgNjUsIDEyOCwgNjYsIDY2LCA2NSwgMTI4LCA2NiwgNjUsIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAxMjgsIDY2LCA2NSwgODQsIDg0LCA2OSwgODIsIDg5LCAKKyAgICAxMjgsIDY2LCA2NSwgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIAorICAgIDg0LCAxMjgsIDY2LCA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgODQsIDIwMCwgNjYsIDY1LCA4NCwgNjUsIDIwMywgNjYsIAorICAgIDY1LCA4MywgODMsIDY1LCAxMjgsIDY2LCA2NSwgODMsIDgzLCAxOTMsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgCisgICAgNzYsIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCAKKyAgICA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NiwgNjUsIDgzLCA2OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCA4MywgNjksIAorICAgIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIDgyLCA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIDY5LCA4MiwgCisgICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCAKKyAgICA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA3NiwgNjksIAorICAgIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgODIsIDY2LCA2OSwgCisgICAgMjEwLCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgNjYsIDY1LCAyMTAsIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgCisgICAgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIDE5NywgNjYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCAKKyAgICA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIAorICAgIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgODMsIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgCisgICAgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAxMjgsIDY2LCA2NSwgNzYsIDc2LCA4MCwgNzksIDczLCA3OCwgMjEyLCAKKyAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDg0LCAxMjgsIDY2LCA2NSwgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIAorICAgIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgCisgICAgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIDY1LCA3NiwgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCAKKyAgICA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgNzcsIDY1LCA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIAorICAgIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgCisgICAgNjYsIDY1LCA3MiwgNjUsIDgyLCAxNzgsIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgODUsIDY5LCA4NCwgODQsIAorICAgIDE5NywgNjYsIDY1LCA3MSwgODMsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIDY1LCA3MSwgMTk3LCA2NiwgNjUsIDcxLCA2NSwgCisgICAgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIDY1LCA2OCwgNzcsIDczLCA3OCwgODQsIDc5LCAKKyAgICAyMDYsIDY2LCA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIDY2LCA2NSwgNjgsIAorICAgIDEyOCwgNjYsIDY1LCAxOTYsIDY2LCA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc5LCA3OCwgCisgICAgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIAorICAgIDY1LCA4MywgMjAwLCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgCisgICAgNzIsIDY1LCA3OCwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCAKKyAgICA3NSwgMTI4LCA2NiwgNjUsIDY3LCAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCAKKyAgICA2NSwgODIsIDY5LCA4MiwgODUsIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNTcsIDEyOCwgNjYsIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgCisgICAgNTQsIDEyOCwgNjYsIDUwLCA1MywgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA2NiwgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCAKKyAgICA1NywgMTI4LCA2NiwgNTAsIDUyLCA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCAKKyAgICA1MCwgNTIsIDUzLCAxMjgsIDY2LCA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCAKKyAgICA1MCwgNTIsIDE3NiwgNjYsIDUwLCA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCAKKyAgICA2NiwgNTAsIDUxLCA1MCwgMTI4LCA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIAorICAgIDEyOCwgNjYsIDUwLCA1MCwgNTYsIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIAorICAgIDUwLCA1MCwgMTgxLCA2NiwgNTAsIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIAorICAgIDY2LCA1MCwgNDksIDU3LCAxMjgsIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgCisgICAgNDksIDU0LCAxMjgsIDY2LCA1MCwgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAKKyAgICAxMjgsIDY2LCA1MCwgNDksIDUwLCAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCAKKyAgICA1MCwgNDgsIDU3LCAxMjgsIDY2LCA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIAorICAgIDU0LCAxMjgsIDY2LCA1MCwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIAorICAgIDY2LCA1MCwgNDgsIDUwLCAxMjgsIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgCisgICAgNTcsIDE3NywgNjYsIDQ5LCA1NywgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgCisgICAgNjYsIDQ5LCA1NiwgNTIsIDEyOCwgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NiwgNDksIDEyOCwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIAorICAgIDEyOCwgNjYsIDQ5LCA1NSwgNTUsIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIAorICAgIDU1LCAxNzksIDY2LCA0OSwgNTUsIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIAorICAgIDY2LCA0OSwgNTQsIDU3LCAxMjgsIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgCisgICAgNTQsIDU0LCAxMjgsIDY2LCA0OSwgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgCisgICAgNjYsIDQ5LCA1NCwgMTc4LCA2NiwgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAKKyAgICAxODUsIDY2LCA0OSwgNTMsIDU2LCAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCAKKyAgICA1MywgNTMsIDEyOCwgNjYsIDQ5LCA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIAorICAgIDEyOCwgNjYsIDQ5LCA1MywgMTc3LCA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIAorICAgIDUyLCAxODEsIDY2LCA0OSwgNTIsIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIAorICAgIDUxLCAxODEsIDY2LCA0OSwgNTEsIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIAorICAgIDUxLCAxNzYsIDY2LCA0OSwgNTAsIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIAorICAgIDE3OSwgNjYsIDQ5LCA1MCwgMTc4LCA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIAorICAgIDIwNSwgNjYsIDQ5LCA0OCwgNTcsIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIAorICAgIDQ5LCA0OCwgNTUsIDIwNSwgNjYsIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgCisgICAgNTQsIDE5OCwgNjYsIDQ5LCA0OCwgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgCisgICAgNDksIDQ4LCAxODAsIDY2LCA0OSwgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgCisgICAgNTcsIDE3NiwgNjYsIDQ4LCA1NiwgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgCisgICAgNDgsIDU2LCAxODEsIDY2LCA0OCwgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgCisgICAgNjYsIDQ4LCA1NiwgMTc2LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgCisgICAgNjYsIDQ4LCA1NSwgMTgyLCA2NiwgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgCisgICAgNDgsIDU1LCAxNzgsIDY2LCA0OCwgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgCisgICAgNTQsIDE4NCwgNjYsIDQ4LCA1NCwgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgCisgICAgNTIsIDEyOCwgNjYsIDQ4LCA1NCwgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgCisgICAgNTQsIDE3NiwgNjYsIDQ4LCA1MywgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgCisgICAgNTQsIDEyOCwgNjYsIDQ4LCA1MywgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgCisgICAgMTc4LCA2NiwgNDgsIDUzLCAxNzcsIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgCisgICAgMTg0LCA2NiwgNDgsIDUyLCA1NSwgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgCisgICAgMTgwLCA2NiwgNDgsIDUyLCAxNzksIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIAorICAgIDY2LCA0OCwgNTEsIDE4NSwgNjYsIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIAorICAgIDQ4LCA1MSwgNTIsIDEyOCwgNjYsIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIAorICAgIDQ4LCA1MSwgMTc2LCA2NiwgNDgsIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIAorICAgIDUwLCAxODIsIDY2LCA0OCwgNTAsIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDY2LCA0OCwgNTAsIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIAorICAgIDQ5LCA1NiwgMTI4LCA2NiwgNDgsIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIAorICAgIDQ5LCAxODAsIDY2LCA0OCwgNDksIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIAorICAgIDE3NiwgNjYsIDQ4LCA0OCwgNTcsIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIAorICAgIDQ4LCAxODQsIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIAorICAgIDQ4LCA0OCwgMTgyLCA2NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgCisgICAgMTgxLCA2NiwgNDgsIDQ4LCA1MiwgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgCisgICAgNDgsIDE3OSwgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgCisgICAgNDgsIDQ4LCAxNzcsIDY1LCA5MCwgODUsIDEyOCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCA2NSwgCisgICAgODgsIDY5LCAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg3LCA2NSwgMjE3LCA2NSwgODYsIDc5LCA2NywgNjUsIDY4LCAKKyAgICA3OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgNjksIDgyLCA2NSwgNzEsIDE5NywgNjUsIAorICAgIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIDEyOCwgNjUsIDg2LCA2NSwgNzEsIDgyLCAKKyAgICA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA4NSwgODQsIDg1LCA3NywgNzgsIAorICAgIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA2NSwgCisgICAgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgNjUsIDg1LCA4MiwgNzMsIDgwLCA3MywgNzEsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIAorICAgIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCA1MCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKKyAgICA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgMTI4LCA2NSwgODUsIDcxLCA4NSwgODMsIDg0LCAxMjgsIAorICAgIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODUsIDY5LCAxMjgsIDY1LCA4NSwgCisgICAgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIDg0LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA4NCwgNzIsIDY1LCAKKyAgICA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjUsIAorICAgIDIwMywgNjUsIDg0LCA4NCwgNjUsIDY3LCA3MiwgNjksIDE5NiwgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgCisgICAgMjAwLCA2NSwgODQsIDc3LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCAKKyAgICA3NiwgNjksIDg0LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDgwLCA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODQsIDcyLCA0NSwgODQsIDcyLCA2NSwgNzYsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCAxMjgsIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgODksIAorICAgIDc3LCA4MCwgODQsIDc5LCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIDc5LCAKKyAgICA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjUsIAorICAgIDgzLCA4NCwgNzksIDc4LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIDEyOCwgCisgICAgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMTI4LCAKKyAgICA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCA4MywgCisgICAgMTI4LCA2NSwgODMsIDgzLCA4OSwgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIAorICAgIDg0LCA2OSwgMTk2LCA2NSwgODMsIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCA4NCwgCisgICAgODIsIDY1LCA3NiwgNzMsIDY1LCAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIDgzLCAKKyAgICAxMjgsIDY1LCA4MywgNzIsIDU3LCAxMjgsIDY1LCA4MywgNzIsIDUxLCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCAKKyAgICA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIAorICAgIDUwLCAxMjgsIDY1LCA4MywgNDUsIDgzLCA2NSwgNzQsIDY4LCA2NSwgMTI4LCA2NSwgODIsIDg1LCA3MiwgODUsIDY1LCAKKyAgICAxMjgsIDY1LCA4MiwgODQsIDIxMSwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAogICAgIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MiwgODQsIDY1LCA2NiwgMTk3LCA2NSwgODIsIDgzLCA2OSwgNzksIDgzLCAKICAgICAxMjgsIDY1LCA4MiwgODMsIDY5LCA3OSwgMjExLCA2NSwgODIsIDgzLCA2OSwgNzgsIDczLCA2NywgMTI4LCA2NSwgODIsIAogICAgIDgyLCA3OSwgODcsIDgzLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgMjExLCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgCkBAIC00ODkyLDQyICs1NTI1LDQzIEBACiAgICAgNjUsIDQ1LCA4NSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA3MywgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCAKICAgICA2OSwgNzksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjUsIAogICAgIDEyOCwgNjUsIDgyLCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA2NSwgMTk2LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY3LCA0NSwgCi0gICAgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCAKLSAgICA3NywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIAotICAgIDczLCA4NSwgODMsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgODIsIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgCi0gICAgMTkzLCA2NSwgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCA3NiwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCAKLSAgICA3MywgNzcsIDY1LCA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgCi0gICAgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAyMTEsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCAKLSAgICA3MiwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIAotICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgCi0gICAgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA4MCwgNzIsIDY5LCAxMjgsIDY1LCAKLSAgICA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgCi0gICAgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjAxLCA2NSwgODAsIDc5LCA2OCwgNjksIDg4LCAKLSAgICA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIDE5MywgNjUsIDgwLCA3NiwgNzksIDg1LCA3OCwgCi0gICAgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgMjA0LCA2NSwgODAsIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgCi0gICAgMjA3LCA2NSwgODAsIDY3LCAxMjgsIDY1LCA4MCwgNjUsIDgyLCA4NCwgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDY1LCA3OSwgODUsIDEyOCwgNjUsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIAotICAgIDg5LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgCi0gICAgODIsIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAKLSAgICAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIAotICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCAKLSAgICAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA3MywgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIAotICAgIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCAKLSAgICA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCi0gICAgODMsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjUsIDc4LCAKLSAgICA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCA2NSwgNzgsIDg0LCA2NSwgODIsIAotICAgIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIDY1LCA3OCwgODMsIDcyLCA2OSwgCi0gICAgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgNzgsIDg1LCA3MywgODQsIDIxNywgCi0gICAgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCAKLSAgICA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIAotICAgIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA4MywgCi0gICAgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCA3NiwgNjksIDY4LCAxMjgsIDY1LCAKLSAgICA3OCwgNzEsIDc2LCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIAotICAgIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgCi0gICAgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIAotICAgIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgCisgICAgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgODUsIDY2LCAKKyAgICAxMjgsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIAorICAgIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgCisgICAgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAKKyAgICAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIAorICAgIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgCisgICAgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCA4NCwgCisgICAgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIAorICAgIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAKKyAgICAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgCisgICAgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgCisgICAgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAKKyAgICAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIDY1LCAKKyAgICA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIAorICAgIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCAKKyAgICA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIAorICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCAKKyAgICA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgCisgICAgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCAKKyAgICA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgCisgICAgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIAorICAgIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgCisgICAgNzgsIDc4LCAxOTMsIDY1LCA3OCwgODQsIDY1LCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCAKKyAgICA4MywgODUsIDIxOCwgNjUsIDc4LCA4MywgNzIsIDY5LCAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIAorICAgIDIwNywgNjUsIDc4LCA3OCwgODUsIDczLCA4NCwgMjE3LCA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDY1LCA3OCwgNzgsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIAorICAgIDEyOCwgNjUsIDc4LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgCisgICAgODUsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAKKyAgICAyMTcsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIAorICAgIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgCisgICAgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCAKKyAgICA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIAorICAgIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNDUsIDc4LCA3MywgODMsIDcwLCAKICAgICAxMjgsIDY1LCA3NywgODAsIDgzLCAxMjgsIDY1LCA3NywgODAsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3NywgODAsIAogICAgIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIDc3LCA4MCwgNjksIDgyLCA4MywgNjUsIDc4LCAxOTYsIDY1LCA3NywgCiAgICAgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCAKQEAgLTQ5NDEsMTE1ODAgKzU1NzUsMTIwNjIgQEAKICAgICA2NSwgODQsIDE5NywgNjUsIDc2LCA4NCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDY1LCAxMjgsIDY1LCA3NiwgODAsIAogICAgIDcyLCAxOTMsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgCiAgICAgNjUsIDY1LCA3OCwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgMTI4LCA2NSwgNzYsIDc3LCA3OSwgODMsIDIxMiwgNjUsIDc2LCAKLSAgICA3NywgMTI4LCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIAotICAgIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgCi0gICAgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCAKLSAgICA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIAotICAgIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODIsIDg0LCAxMjgsIAotICAgIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgMTI4LCA2NSwgNzYsIDY5LCA3MCwgCi0gICAgMTI4LCA2NSwgNzYsIDY2LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCAKLSAgICA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIAotICAgIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCAKLSAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIAotICAgIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAKLSAgICAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgCi0gICAgMTk3LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgCi0gICAgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIAotICAgIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA3OSwgMjA1LCA2NSwgNzIsIDY1LCA3OCwgMTk5LCA2NSwgNzIsIAotICAgIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgCi0gICAgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCAKLSAgICA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDgzLCAyMTIsIDY1LCA3MSwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgNjUsIDgxLCAxMjgsIDY1LCA3MCwgCi0gICAgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgNjksIAotICAgIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDcwLCA3MCwgNzMsIDIxNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCAKLSAgICA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIDEyOCwgNjUsIDY5LCA4MywgNjcsIAotICAgIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIDY5LCA4MiwgMTI4LCA2NSwgNjksIAotICAgIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgCi0gICAgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIAotICAgIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgODQsIDY1LCA3MSwgNjksIDEyOCwgCi0gICAgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDY1LCAKLSAgICA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIAotICAgIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgCi0gICAgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIAotICAgIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgCi0gICAgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCAKLSAgICA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgCi0gICAgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCAKLSAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCAKLSAgICA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgCi0gICAgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCAKLSAgICA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIAotICAgIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCAKLSAgICA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIAotICAgIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCAKLSAgICA0OSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA1NSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCAKLSAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIAotICAgIDU0LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDUzLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIAotICAgIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTIsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNTEsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgCi0gICAgNTEsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDUwLCA1MCwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNjUsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCAKLSAgICA2NSwgODksIDEyOCwgNjUsIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCAKLSAgICA2NiwgNjUsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIAotICAgIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNTAsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNTAsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCAKLSAgICA1NCwgMTI4LCA2NSwgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCAKLSAgICA2NSwgNTYsIDQ4LCA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIAotICAgIDUxLCAxNzgsIDY1LCA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIAotICAgIDE4MCwgNjUsIDU1LCA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCAKLSAgICA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgCi0gICAgMTc5LCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgCi0gICAgNDgsIDE4MywgNjUsIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgCi0gICAgMTc5LCA2NSwgNTUsIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgCi0gICAgNTEsIDEyOCwgNjUsIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgCi0gICAgNjUsIDU0LCA1MywgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCAKLSAgICA1MywgNTQsIDEyOCwgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIAotICAgIDEyOCwgNjUsIDU0LCA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIAotICAgIDU0LCA1MiwgNTYsIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgCi0gICAgNTIsIDEyOCwgNjUsIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgCi0gICAgNjUsIDU0LCA1MSwgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCAKLSAgICA1MCwgNTcsIDEyOCwgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIAotICAgIDEyOCwgNjUsIDU0LCA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDU0LCA1MCwgNDksIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgCi0gICAgNTYsIDEyOCwgNjUsIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDU0LCA0OSwgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIAotICAgIDEyOCwgNjUsIDU0LCA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIAotICAgIDU0LCA0OCwgNTAsIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDUzLCA1NywgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCAKLSAgICA1NiwgNTYsIDEyOCwgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIAotICAgIDUzLCA1NiwgNDksIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgCi0gICAgNjUsIDUzLCA1NSwgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCAKLSAgICA1NSwgNDksIDEyOCwgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjUsIDUzLCA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIAotICAgIDUzLCA1NCwgNTEsIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgCi0gICAgNTQsIDEyOCwgNjUsIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgCi0gICAgNjUsIDUzLCA1MywgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCAKLSAgICA1MiwgNTcsIDEyOCwgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIAotICAgIDUzLCA1MSwgNTcsIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgCi0gICAgNTQsIDEyOCwgNjUsIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgCi0gICAgNjUsIDUzLCA1MSwgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCAKLSAgICA1MCwgNTYsIDEyOCwgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDUzLCA1MCwgNDksIDEyOCwgNjUsIDUzLCA1MCwgNDgsIDEyOCwgNjUsIDUzLCA0OSwgNTcsIDEyOCwgNjUsIDUzLCA0OSwgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA0OSwgNTUsIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDUzLCA0OSwgNTIsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIAotICAgIDEyOCwgNjUsIDUzLCA0OCwgNTUsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgNjUsIAotICAgIDUzLCA0OCwgNTIsIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCA0OCwgCi0gICAgNDksIDEyOCwgNjUsIDUyLCA1NywgNTUsIDEyOCwgNjUsIDUyLCA1NywgNTQsIDEyOCwgNjUsIDUyLCA1NywgNTMsIDEyOCwgCi0gICAgNjUsIDUyLCA1NywgNTIsIDEyOCwgNjUsIDUyLCA1NywgNTEsIDEyOCwgNjUsIDUyLCA1NywgNTAsIDEyOCwgNjUsIDUyLCAKLSAgICA1NywgNDksIDEyOCwgNjUsIDUyLCA1NywgNDgsIDEyOCwgNjUsIDUyLCA1NiwgNTcsIDEyOCwgNjUsIDUyLCA1NiwgNTYsIAotICAgIDEyOCwgNjUsIDUyLCA1NiwgNTUsIDEyOCwgNjUsIDUyLCA1NiwgNTQsIDEyOCwgNjUsIDUyLCA1NiwgNTMsIDEyOCwgNjUsIAotICAgIDUyLCA1NiwgNTIsIDEyOCwgNjUsIDUyLCA1NiwgNTEsIDEyOCwgNjUsIDUyLCA1NiwgNTAsIDEyOCwgNjUsIDUyLCA1NiwgCi0gICAgNDksIDEyOCwgNjUsIDUyLCA1NiwgNDgsIDEyOCwgNjUsIDUyLCA1NSwgNTcsIDEyOCwgNjUsIDUyLCA1NSwgNTYsIDEyOCwgCi0gICAgNjUsIDUyLCA1NSwgNTUsIDEyOCwgNjUsIDUyLCA1NSwgNTQsIDEyOCwgNjUsIDUyLCA1NSwgNTMsIDEyOCwgNjUsIDUyLCAKLSAgICA1NSwgNTIsIDEyOCwgNjUsIDUyLCA1NSwgNTEsIDEyOCwgNjUsIDUyLCA1NSwgNTAsIDEyOCwgNjUsIDUyLCA1NSwgNDksIAotICAgIDEyOCwgNjUsIDUyLCA1NSwgNDgsIDEyOCwgNjUsIDUyLCA1NCwgNTcsIDEyOCwgNjUsIDUyLCA1NCwgNTYsIDEyOCwgNjUsIAotICAgIDUyLCA1NCwgNTUsIDEyOCwgNjUsIDUyLCA1NCwgNTQsIDEyOCwgNjUsIDUyLCA1NCwgNTMsIDEyOCwgNjUsIDUyLCA1NCwgCi0gICAgNTIsIDEyOCwgNjUsIDUyLCA1NCwgNTEsIDEyOCwgNjUsIDUyLCA1NCwgNTAsIDEyOCwgNjUsIDUyLCA1NCwgNDksIDEyOCwgCi0gICAgNjUsIDUyLCA1NCwgNDgsIDEyOCwgNjUsIDUyLCA1MywgNTcsIDEyOCwgNjUsIDUyLCA1MywgNTYsIDEyOCwgNjUsIDUyLCAKLSAgICA1MywgNTUsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDU1LCAxMjgsIDY1LCA1MiwgNTMsIDU0LCAxMjgsIDY1LCA1MiwgNTMsIAotICAgIDUzLCAxMjgsIDY1LCA1MiwgNTMsIDUyLCAxMjgsIDY1LCA1MiwgNTMsIDUxLCAxMjgsIDY1LCA1MiwgNTMsIDUwLCAxMjgsIAotICAgIDY1LCA1MiwgNTMsIDQ5LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgMTI4LCA2NSwgCi0gICAgNTIsIDUyLCA1NywgMTI4LCA2NSwgNTIsIDUyLCA1NiwgMTI4LCA2NSwgNTIsIDUyLCA1NSwgMTI4LCA2NSwgNTIsIDUyLCAKLSAgICA1NCwgMTI4LCA2NSwgNTIsIDUyLCA1MywgMTI4LCA2NSwgNTIsIDUyLCA1MiwgMTI4LCA2NSwgNTIsIDUyLCA1MSwgMTI4LCAKLSAgICA2NSwgNTIsIDUyLCA1MCwgMTI4LCA2NSwgNTIsIDUyLCA0OSwgMTI4LCA2NSwgNTIsIDUyLCA0OCwgMTI4LCA2NSwgNTIsIAotICAgIDUxLCA1NywgMTI4LCA2NSwgNTIsIDUxLCA1NiwgMTI4LCA2NSwgNTIsIDUxLCA1NSwgMTI4LCA2NSwgNTIsIDUxLCA1NCwgCi0gICAgMTI4LCA2NSwgNTIsIDUxLCA1MywgMTI4LCA2NSwgNTIsIDUxLCA1MiwgMTI4LCA2NSwgNTIsIDUxLCA1MSwgMTI4LCA2NSwgCi0gICAgNTIsIDUxLCA1MCwgMTI4LCA2NSwgNTIsIDUxLCA0OSwgMTI4LCA2NSwgNTIsIDUxLCA0OCwgMTI4LCA2NSwgNTIsIDUwLCAKLSAgICA1NywgMTI4LCA2NSwgNTIsIDUwLCA1NiwgMTI4LCA2NSwgNTIsIDUwLCA1NSwgMTI4LCA2NSwgNTIsIDUwLCA1NCwgMTI4LCAKLSAgICA2NSwgNTIsIDUwLCA1MywgMTI4LCA2NSwgNTIsIDUwLCA1MiwgMTI4LCA2NSwgNTIsIDUwLCA1MSwgMTI4LCA2NSwgNTIsIAotICAgIDUwLCA1MCwgMTI4LCA2NSwgNTIsIDUwLCA0OSwgMTI4LCA2NSwgNTIsIDUwLCA0OCwgMTI4LCA2NSwgNTIsIDQ5LCA1NywgCi0gICAgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDEyOCwgNjUsIDUyLCAKLSAgICA0OSwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCAxMjgsIDY1LCA1MiwgNDksIDU0LCA0NSwgODYsIAotICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NSwgNTIsIDQ5LCA1MywgNDUsIDg2LCA2NSwgODMsIDEyOCwgCi0gICAgNjUsIDUyLCA0OSwgNTMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCAKLSAgICAxMjgsIDY1LCA1MiwgNDksIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgMTI4LCA2NSwgNTIsIAotICAgIDQ5LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDQ1LCA4NiwgCi0gICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCAxMjgsIDY1LCA1MiwgNDksIDQ4LCAxOTMsIDY1LCA1MiwgNDksIDQ4LCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCAxNzYsIDY1LCA1MiwgNDgsIDU3LCA0NSwgODYsIDY1LCA4MywgCi0gICAgMTI4LCA2NSwgNTIsIDQ4LCA1NywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKLSAgICA0OCwgNTYsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU1LCAxMjgsIAotICAgIDY1LCA1MiwgNDgsIDU0LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NSwgNTIsIDQ4LCA1MywgCi0gICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAKLSAgICAxMjgsIDY1LCA1MiwgNDgsIDUyLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAotICAgIDQ4LCA1MSwgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDEyOCwgCi0gICAgNjUsIDUyLCA0OCwgNDksIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NSwgNTEsIDU3LCA1NywgMTI4LCA2NSwgNTEsIAotICAgIDU3LCA1NiwgMTI4LCA2NSwgNTEsIDU3LCA1NSwgMTI4LCA2NSwgNTEsIDU3LCA1NCwgMTI4LCA2NSwgNTEsIDU3LCA1MywgCi0gICAgMTI4LCA2NSwgNTEsIDU3LCA1MiwgMTI4LCA2NSwgNTEsIDU3LCAxNzksIDY1LCA1MSwgNTcsIDUwLCAxMjgsIDY1LCA1MSwgCi0gICAgNTcsIDQ5LCAxMjgsIDY1LCA1MSwgNTcsIDQ4LCAxMjgsIDY1LCA1MSwgNTYsIDU3LCAxMjgsIDY1LCA1MSwgNTYsIDU2LCAKLSAgICAxMjgsIDY1LCA1MSwgNTYsIDU1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgMTI4LCAKLSAgICA2NSwgNTEsIDU2LCA1MywgMTI4LCA2NSwgNTEsIDU2LCA1MiwgMTI4LCA2NSwgNTEsIDU2LCA1MSwgNjUsIDEyOCwgNjUsIAotICAgIDUxLCA1NiwgMTc5LCA2NSwgNTEsIDU2LCA1MCwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgCi0gICAgNDksIDEyOCwgNjUsIDUxLCA1NiwgNDgsIDEyOCwgNjUsIDUxLCA1NSwgNTcsIDEyOCwgNjUsIDUxLCA1NSwgNTYsIDEyOCwgCi0gICAgNjUsIDUxLCA1NSwgNTUsIDEyOCwgNjUsIDUxLCA1NSwgNTQsIDEyOCwgNjUsIDUxLCA1NSwgNTMsIDEyOCwgNjUsIDUxLCAKLSAgICA1NSwgNTIsIDEyOCwgNjUsIDUxLCA1NSwgNTEsIDEyOCwgNjUsIDUxLCA1NSwgNTAsIDEyOCwgNjUsIDUxLCA1NSwgNDksIAotICAgIDY1LCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCAxMjgsIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIAotICAgIDY1LCA1MSwgNTQsIDU2LCA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1NiwgMTI4LCA2NSwgNTEsIDU0LCA1NSwgMTI4LCA2NSwgCi0gICAgNTEsIDU0LCA1NCwgMTI4LCA2NSwgNTEsIDU0LCA1MywgMTI4LCA2NSwgNTEsIDU0LCA1MiwgNjUsIDEyOCwgNjUsIDUxLCAKLSAgICA1NCwgNTIsIDEyOCwgNjUsIDUxLCA1NCwgNTEsIDEyOCwgNjUsIDUxLCA1NCwgNTAsIDEyOCwgNjUsIDUxLCA1NCwgNDksIAotICAgIDEyOCwgNjUsIDUxLCA1NCwgNDgsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIAotICAgIDY1LCA1MSwgNTMsIDU2LCAxMjgsIDY1LCA1MSwgNTMsIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgCi0gICAgNTMsIDUzLCAxMjgsIDY1LCA1MSwgNTMsIDUyLCAxMjgsIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAKLSAgICAxMjgsIDY1LCA1MSwgNTMsIDQ5LCAxMjgsIDY1LCA1MSwgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDY1LCA1MSwgNTIsIDU1LCAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIAotICAgIDUzLCAxMjgsIDY1LCA1MSwgNTIsIDUyLCAxMjgsIDY1LCA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIAotICAgIDY1LCA1MSwgNTIsIDQ5LCAxMjgsIDY1LCA1MSwgNTIsIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgCi0gICAgNTEsIDU2LCAxMjgsIDY1LCA1MSwgNTEsIDU1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NywgMTI4LCA2NSwgNTEsIDUxLCAKLSAgICA1NCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIAotICAgIDUzLCAxMjgsIDY1LCA1MSwgNTEsIDUyLCAxMjgsIDY1LCA1MSwgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NywgCi0gICAgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAKLSAgICAxMjgsIDY1LCA1MSwgNTEsIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCA2NSwgMTI4LCAKLSAgICA2NSwgNTEsIDUwLCA1NywgMTI4LCA2NSwgNTEsIDUwLCA1NiwgMTI4LCA2NSwgNTEsIDUwLCA1NSwgMTI4LCA2NSwgNTEsIAotICAgIDUwLCA1NCwgMTI4LCA2NSwgNTEsIDUwLCA1MywgMTI4LCA2NSwgNTEsIDUwLCA1MiwgMTI4LCA2NSwgNTEsIDUwLCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDUwLCA1MCwgMTI4LCA2NSwgNTEsIDUwLCA0OSwgMTI4LCA2NSwgNTEsIDUwLCA0OCwgMTI4LCA2NSwgCi0gICAgNTEsIDQ5LCA1NywgMTI4LCA2NSwgNTEsIDQ5LCA1NiwgMTI4LCA2NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NSwgNTEsIDQ5LCAKLSAgICA1NCwgMTI4LCA2NSwgNTEsIDQ5LCA1MywgMTI4LCA2NSwgNTEsIDQ5LCA1MiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjcsIAotICAgIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY2LCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDQ5LCA1MCwgMTI4LCA2NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NSwgCi0gICAgNTEsIDQ4LCA1NywgNjcsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY2LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NSwgMTI4LCAKLSAgICA2NSwgNTEsIDQ4LCA1NywgMTI4LCA2NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NSwgNTEsIAotICAgIDQ4LCA1NCwgMTI4LCA2NSwgNTEsIDQ4LCA1MywgMTI4LCA2NSwgNTEsIDQ4LCA1MiwgMTI4LCA2NSwgNTEsIDQ4LCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDQ4LCA1MCwgMTI4LCA2NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NSwgNTEsIDQ4LCA0OCwgMTI4LCA2NSwgCi0gICAgNTAsIDU3LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTcsIDEyOCwgNjUsIDUwLCA1NywgNTYsIDEyOCwgNjUsIDUwLCAKLSAgICA1NywgNTUsIDEyOCwgNjUsIDUwLCA1NywgNTQsIDEyOCwgNjUsIDUwLCA1NywgNTMsIDEyOCwgNjUsIDUwLCA1NywgNTIsIAotICAgIDY1LCAxMjgsIDY1LCA1MCwgNTcsIDUyLCAxMjgsIDY1LCA1MCwgNTcsIDUxLCAxMjgsIDY1LCA1MCwgNTcsIDUwLCAxMjgsIAotICAgIDY1LCA1MCwgNTcsIDQ5LCAxMjgsIDY1LCA1MCwgNTcsIDQ4LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCA2NSwgMTI4LCA2NSwgCi0gICAgNTAsIDU2LCA1NywgMTI4LCA2NSwgNTAsIDU2LCA1NiwgMTI4LCA2NSwgNTAsIDU2LCA1NSwgMTI4LCA2NSwgNTAsIDU2LCAKLSAgICA1NCwgMTI4LCA2NSwgNTAsIDU2LCA1MywgMTI4LCA2NSwgNTAsIDU2LCA1MiwgMTI4LCA2NSwgNTAsIDU2LCA1MSwgMTI4LCAKLSAgICA2NSwgNTAsIDU2LCA1MCwgMTI4LCA2NSwgNTAsIDU2LCA0OSwgMTI4LCA2NSwgNTAsIDU2LCA0OCwgMTI4LCA2NSwgNTAsIAotICAgIDU1LCA1NywgMTI4LCA2NSwgNTAsIDU1LCA1NiwgMTI4LCA2NSwgNTAsIDU1LCA1NSwgMTI4LCA2NSwgNTAsIDU1LCA1NCwgCi0gICAgMTI4LCA2NSwgNTAsIDU1LCA1MywgMTI4LCA2NSwgNTAsIDU1LCA1MiwgMTI4LCA2NSwgNTAsIDU1LCA1MSwgMTI4LCA2NSwgCi0gICAgNTAsIDU1LCA1MCwgMTI4LCA2NSwgNTAsIDU1LCA0OSwgMTI4LCA2NSwgNTAsIDU1LCA0OCwgMTI4LCA2NSwgNTAsIDU0LCAKLSAgICA1NywgMTI4LCA2NSwgNTAsIDU0LCA1NiwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIAotICAgIDEyOCwgNjUsIDUwLCA1NCwgNTQsIDEyOCwgNjUsIDUwLCA1NCwgNTMsIDEyOCwgNjUsIDUwLCA1NCwgNTIsIDEyOCwgNjUsIAotICAgIDUwLCA1NCwgNTEsIDEyOCwgNjUsIDUwLCA1NCwgNTAsIDEyOCwgNjUsIDUwLCA1NCwgNDksIDEyOCwgNjUsIDUwLCA1NCwgCi0gICAgNDgsIDEyOCwgNjUsIDUwLCA1MywgNTcsIDEyOCwgNjUsIDUwLCA1MywgNTYsIDEyOCwgNjUsIDUwLCA1MywgNTUsIDEyOCwgCi0gICAgNjUsIDUwLCA1MywgNTQsIDEyOCwgNjUsIDUwLCA1MywgNTMsIDEyOCwgNjUsIDUwLCA1MywgNTIsIDEyOCwgNjUsIDUwLCAKLSAgICA1MywgNTEsIDEyOCwgNjUsIDUwLCA1MywgNTAsIDEyOCwgNjUsIDUwLCA1MywgNDksIDEyOCwgNjUsIDUwLCA1MywgNDgsIAotICAgIDEyOCwgNjUsIDUwLCA1MiwgNTcsIDEyOCwgNjUsIDUwLCA1MiwgNTYsIDEyOCwgNjUsIDUwLCA1MiwgNTUsIDEyOCwgNjUsIAotICAgIDUwLCA1MiwgNTQsIDEyOCwgNjUsIDUwLCA1MiwgNTMsIDEyOCwgNjUsIDUwLCA1MiwgNTIsIDEyOCwgNjUsIDUwLCA1MiwgCi0gICAgNTEsIDEyOCwgNjUsIDUwLCA1MiwgNTAsIDEyOCwgNjUsIDUwLCA1MiwgNDksIDEyOCwgNjUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgNjUsIDUwLCA1MSwgNTcsIDEyOCwgNjUsIDUwLCA1MSwgNTYsIDEyOCwgNjUsIDUwLCA1MSwgNTUsIDEyOCwgNjUsIDUwLCAKLSAgICA1MSwgNTQsIDEyOCwgNjUsIDUwLCA1MSwgNTMsIDEyOCwgNjUsIDUwLCA1MSwgNTIsIDEyOCwgNjUsIDUwLCA1MSwgNTEsIAotICAgIDEyOCwgNjUsIDUwLCA1MSwgNTAsIDEyOCwgNjUsIDUwLCA1MSwgNDksIDEyOCwgNjUsIDUwLCA1MSwgNDgsIDEyOCwgNjUsIAotICAgIDUwLCA1MCwgNTcsIDEyOCwgNjUsIDUwLCA1MCwgNTYsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgCi0gICAgNTAsIDU1LCAxMjgsIDY1LCA1MCwgNTAsIDU0LCAxMjgsIDY1LCA1MCwgNTAsIDUzLCAxMjgsIDY1LCA1MCwgNTAsIDUyLCAKLSAgICAxMjgsIDY1LCA1MCwgNTAsIDUxLCAxMjgsIDY1LCA1MCwgNTAsIDUwLCAxMjgsIDY1LCA1MCwgNTAsIDQ5LCAxMjgsIDY1LCAKLSAgICA1MCwgNTAsIDQ4LCAxMjgsIDY1LCA1MCwgNDksIDU3LCAxMjgsIDY1LCA1MCwgNDksIDU2LCAxMjgsIDY1LCA1MCwgNDksIAotICAgIDU1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgCi0gICAgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIDEyOCwgNjUsIDUwLCA0OSwgNTIsIDEyOCwgNjUsIDUwLCA0OSwgNTEsIDEyOCwgCi0gICAgNjUsIDUwLCA0OSwgNTAsIDEyOCwgNjUsIDUwLCA0OSwgNDksIDEyOCwgNjUsIDUwLCA0OSwgNDgsIDEyOCwgNjUsIDUwLCAKLSAgICA0OCwgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU3LCAxMjgsIDY1LCA1MCwgNDgsIDU2LCAxMjgsIDY1LCA1MCwgNDgsIAotICAgIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NCwgMTI4LCA2NSwgNTAsIDQ4LCA1MywgCi0gICAgMTI4LCA2NSwgNTAsIDQ4LCA1MiwgMTI4LCA2NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgNjYsIDEyOCwgCi0gICAgNjUsIDUwLCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAxMjgsIDY1LCA1MCwgNDgsIDQ5LCAxMjgsIDY1LCAKLSAgICA1MCwgNDgsIDQ4LCAxMjgsIDY1LCA0OSwgNTcsIDU3LCAxMjgsIDY1LCA0OSwgNTcsIDU2LCAxMjgsIDY1LCA0OSwgNTcsIAotICAgIDU1LCAxMjgsIDY1LCA0OSwgNTcsIDU0LCAxMjgsIDY1LCA0OSwgNTcsIDUzLCAxMjgsIDY1LCA0OSwgNTcsIDUyLCAxMjgsIAotICAgIDY1LCA0OSwgNTcsIDUxLCAxMjgsIDY1LCA0OSwgNTcsIDUwLCAxMjgsIDY1LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA0OSwgCi0gICAgNTcsIDQ4LCAxMjgsIDY1LCA0OSwgNTYsIDU3LCAxMjgsIDY1LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA0OSwgNTYsIDU1LCAKLSAgICAxMjgsIDY1LCA0OSwgNTYsIDU0LCAxMjgsIDY1LCA0OSwgNTYsIDUzLCAxMjgsIDY1LCA0OSwgNTYsIDUyLCAxMjgsIDY1LCAKLSAgICA0OSwgNTYsIDUxLCAxMjgsIDY1LCA0OSwgNTYsIDUwLCAxMjgsIDY1LCA0OSwgNTYsIDQ5LCAxMjgsIDY1LCA0OSwgNTYsIAotICAgIDQ4LCAxMjgsIDY1LCA0OSwgNTUsIDU3LCAxMjgsIDY1LCA0OSwgNTUsIDU2LCAxMjgsIDY1LCA0OSwgNTUsIDU1LCAxMjgsIAotICAgIDY1LCA0OSwgNTUsIDU0LCAxMjgsIDY1LCA0OSwgNTUsIDUzLCAxMjgsIDY1LCA0OSwgNTUsIDUyLCAxMjgsIDY1LCA0OSwgCi0gICAgNTUsIDUxLCAxMjgsIDY1LCA0OSwgNTUsIDUwLCAxMjgsIDY1LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA0OSwgNTUsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OSwgNTQsIDU3LCAxMjgsIDY1LCA0OSwgNTQsIDU2LCAxMjgsIDY1LCA0OSwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA0OSwgNTQsIDU0LCAxMjgsIDY1LCA0OSwgNTQsIDUzLCAxMjgsIDY1LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA0OSwgNTQsIAotICAgIDUxLCAxMjgsIDY1LCA0OSwgNTQsIDUwLCAxMjgsIDY1LCA0OSwgNTQsIDQ5LCAxMjgsIDY1LCA0OSwgNTQsIDQ4LCAxMjgsIAotICAgIDY1LCA0OSwgNTMsIDU3LCAxMjgsIDY1LCA0OSwgNTMsIDU2LCAxMjgsIDY1LCA0OSwgNTMsIDU1LCAxMjgsIDY1LCA0OSwgCi0gICAgNTMsIDU0LCAxMjgsIDY1LCA0OSwgNTMsIDUzLCAxMjgsIDY1LCA0OSwgNTMsIDUyLCAxMjgsIDY1LCA0OSwgNTMsIDUxLCAKLSAgICAxMjgsIDY1LCA0OSwgNTMsIDUwLCAxMjgsIDY1LCA0OSwgNTMsIDQ5LCAxMjgsIDY1LCA0OSwgNTMsIDQ4LCAxMjgsIDY1LCAKLSAgICA0OSwgNTIsIDU3LCAxMjgsIDY1LCA0OSwgNTIsIDU2LCAxMjgsIDY1LCA0OSwgNTIsIDU1LCAxMjgsIDY1LCA0OSwgNTIsIAotICAgIDU0LCAxMjgsIDY1LCA0OSwgNTIsIDUzLCAxMjgsIDY1LCA0OSwgNTIsIDUyLCAxMjgsIDY1LCA0OSwgNTIsIDUxLCAxMjgsIAotICAgIDY1LCA0OSwgNTIsIDUwLCAxMjgsIDY1LCA0OSwgNTIsIDQ5LCAxMjgsIDY1LCA0OSwgNTIsIDQ4LCAxMjgsIDY1LCA0OSwgCi0gICAgNTEsIDU3LCAxMjgsIDY1LCA0OSwgNTEsIDU2LCAxMjgsIDY1LCA0OSwgNTEsIDU1LCAxMjgsIDY1LCA0OSwgNTEsIDU0LCAKLSAgICAxMjgsIDY1LCA0OSwgNTEsIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUxLCA1MywgMTI4LCA2NSwgNDksIDUxLCA1MiwgMTI4LCAKLSAgICA2NSwgNDksIDUxLCA1MSwgMTI4LCA2NSwgNDksIDUxLCA1MCwgMTI4LCA2NSwgNDksIDUxLCA0OSwgNjcsIDEyOCwgNjUsIAotICAgIDQ5LCA1MSwgNDksIDEyOCwgNjUsIDQ5LCA1MSwgNDgsIDEyOCwgNjUsIDQ5LCA1MCwgNTcsIDEyOCwgNjUsIDQ5LCA1MCwgCi0gICAgNTYsIDEyOCwgNjUsIDQ5LCA1MCwgNTUsIDEyOCwgNjUsIDQ5LCA1MCwgNTQsIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDY1LCAKLSAgICAxMjgsIDY1LCA0OSwgNTAsIDUzLCAxMjgsIDY1LCA0OSwgNTAsIDUyLCAxMjgsIDY1LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCAKLSAgICA0OSwgNTAsIDUwLCAxMjgsIDY1LCA0OSwgNTAsIDQ5LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCA2NiwgMTI4LCA2NSwgNDksIAotICAgIDUwLCA0OCwgMTI4LCA2NSwgNDksIDQ5LCA1NywgMTI4LCA2NSwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNDksIDQ5LCA1NSwgCi0gICAgMTI4LCA2NSwgNDksIDQ5LCA1NCwgMTI4LCA2NSwgNDksIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDQ5LCA0OSwgNTIsIDEyOCwgNjUsIDQ5LCA0OSwgNTEsIDEyOCwgNjUsIDQ5LCA0OSwgNTAsIDEyOCwgNjUsIDQ5LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDksIAotICAgIDQ5LCA0OCwgMTI4LCA2NSwgNDksIDQ4LCA1NywgMTI4LCA2NSwgNDksIDQ4LCA1NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgCi0gICAgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCAKLSAgICA1NSwgMTI4LCA2NSwgNDksIDQ4LCA1NCwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIAotICAgIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgCi0gICAgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAxMjgsIDY1LCA0OSwgNDgsIDUxLCAKLSAgICAxMjgsIDY1LCA0OSwgNDgsIDUwLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA0NSwgCi0gICAgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgMTI4LCA2NSwgNDgsIDU3LCA1NywgMTI4LCA2NSwgNDgsIDU3LCAKLSAgICA1NiwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgNTYsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIAotICAgIDU1LCAxMjgsIDY1LCA0OCwgNTcsIDU0LCAxMjgsIDY1LCA0OCwgNTcsIDUzLCAxMjgsIDY1LCA0OCwgNTcsIDUyLCAxMjgsIAotICAgIDY1LCA0OCwgNTcsIDUxLCAxMjgsIDY1LCA0OCwgNTcsIDUwLCAxMjgsIDY1LCA0OCwgNTcsIDQ5LCAxMjgsIDY1LCA0OCwgCi0gICAgNTcsIDQ4LCAxMjgsIDY1LCA0OCwgNTYsIDU3LCAxMjgsIDY1LCA0OCwgNTYsIDU2LCAxMjgsIDY1LCA0OCwgNTYsIDU1LCAKLSAgICAxMjgsIDY1LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCA0OCwgNTYsIDUyLCAxMjgsIDY1LCAKLSAgICA0OCwgNTYsIDUxLCAxMjgsIDY1LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA0OCwgNTYsIAotICAgIDQ4LCAxMjgsIDY1LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA0OCwgNTUsIDU1LCAxMjgsIAotICAgIDY1LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA0OCwgNTUsIDUzLCAxMjgsIDY1LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTUsIDUxLCAxMjgsIDY1LCA0OCwgNTUsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA0OCwgNTQsIDU0LCA2NywgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY1LCAxMjgsIAotICAgIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKLSAgICA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIAotICAgIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIAotICAgIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAKLSAgICA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgNjUsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIAotICAgIDEyOCwgNjUsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIAotICAgIDQ4LCA1MSwgNTMsIDEyOCwgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgCi0gICAgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTAsIDU2LCA2NiwgMTI4LCA2NSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIAotICAgIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgCi0gICAgNjUsIDQ1LCA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCAKLSAgICA4OSwgODUsIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIAotICAgIDcyLCA2NSwgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCisgICAgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCAKKyAgICA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIAorICAgIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgCisgICAgNzMsIDcwLCAxMjgsIDY1LCA3NiwgNzMsIDE5OCwgNjUsIDc2LCA3MywgNjksIDc4LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCAKKyAgICAyMDYsIDY1LCA3NiwgNzEsIDczLCAyMTgsIDY1LCA3NiwgNzAsIDY1LCAxMjgsIDY1LCA3NiwgNjksIDg1LCAyMTIsIDY1LCAKKyAgICA3NiwgNjksIDgyLCA4NCwgMTI4LCA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA2OSwgNzcsIDY2LCA3MywgNjcsIAorICAgIDEyOCwgNjUsIDc2LCA2OSwgNzAsIDEyOCwgNjUsIDc2LCA2NiwgNjUsIDc4LCA3MywgNjUsIDIwNiwgNjUsIDc2LCA2NSwgCisgICAgODksIDcyLCA2OSwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCAKKyAgICA2NSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNDUsIDc2LCA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIAorICAgIDY5LCA4MywgNjksIDc2LCA4MywgNzUsIDY1LCA2NiwgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgCisgICAgNzMsIDc3LCA3MywgMTk1LCA2NSwgNzUsIDY2LCA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCAKKyAgICA2NSwgODIsIDE5MywgNjUsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgCisgICAgMjAzLCA2NSwgNzMsIDg0LCA3OSwgMjA2LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCAKKyAgICA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjUsIDczLCA3OCwgMjEzLCA2NSwgNzMsIDc4LCA3OCwgMTI4LCA2NSwgNzMsIAorICAgIDc2LCA3NywgMTI4LCA2NSwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3MywgNzIsIDg2LCA4NSwgODMsIDEyOCwgCisgICAgNjUsIDcyLCA4MywgNjgsIDY1LCAxMjgsIDY1LCA3MiwgODMsIDY1LCAxMjgsIDY1LCA3MiwgNzksIDIwNSwgNjUsIDcyLCAKKyAgICA2NSwgNzgsIDE5OSwgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIAorICAgIDg1LCA3OCwgNzEsIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAKKyAgICA4MywgMjEyLCA2NSwgNzEsIDY1LCA3MywgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIAorICAgIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgCisgICAgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCAKKyAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3MCwgNzAsIDczLCAyMTYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIAorICAgIDY1LCAxMjgsIDY1LCA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAKKyAgICAxMjgsIDY1LCA2OSwgODMsIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCAKKyAgICA2OSwgODIsIDEyOCwgNjUsIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgCisgICAgMTI4LCA2NSwgNjksIDc1LCAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgCisgICAgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCAKKyAgICA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIAorICAgIDg0LCA2NSwgNzEsIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2OCwgNzcsIDczLCA4MywgCisgICAgODMsIDczLCA3OSwgMjA2LCA2NSwgNjgsIDc2LCA2NSwgMjA1LCA2NSwgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIDY5LCAKKyAgICAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAyMTEsIAorICAgIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDc3LCA2NSwgCisgICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIAorICAgIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIDc2LCAKKyAgICAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNzMsIAorICAgIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCA3NywgCisgICAgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIDY3LCAKKyAgICA3OSwgNzcsIDc3LCA3OSwgNjgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgODAsIDg0LCAxMjgsIAorICAgIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDY3LCAKKyAgICA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDIxMiwgNjUsIDY3LCA2NSwgNjgsIDY5LCA3NywgCisgICAgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgNjUsIDc4LCA2NywgNjksIAorICAgIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCA2OSwgODYsIDczLCA2NSwgCisgICAgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIDE3OCwgNjUsIDY2LCAKKyAgICA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA1NiwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjUsIAorICAgIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY2LCAKKyAgICAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjUsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDksIAorICAgIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDU2LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ4LCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU1LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIAorICAgIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTQsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTEsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgCisgICAgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1MiwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1MiwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUxLCA3NywgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCA3NywgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDcwLCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDc3LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDUwLCA0OSwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA0OSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NywgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDQ4LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA2NSwgCisgICAgODksIDczLCA3OCwgMTI4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjUsIDg5LCAxMjgsIDY1LCAKKyAgICA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgNjYsIDY1LCA2NSwgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUyLCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU2LCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MCwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNTUsIDEyOCwgNjUsIDU2LCA0OCwgNTQsIDEyOCwgNjUsIAorICAgIDU2LCA0OCwgNTMsIDEyOCwgNjUsIDU2LCA0OCwgNTIsIDEyOCwgNjUsIDU2LCA0OCwgNTEsIDEyOCwgNjUsIDU2LCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDU2LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNDgsIDEyOCwgNjUsIDU1LCA1MSwgMTc4LCA2NSwgCisgICAgNTUsIDUwLCAxODIsIDY1LCA1NSwgNDksIDE4MywgNjUsIDU1LCA0OSwgMTgxLCA2NSwgNTUsIDQ5LCAxODAsIDY1LCA1NSwgCisgICAgNDksIDE3OSwgNjUsIDU1LCA0OSwgMTc4LCA2NSwgNTUsIDQ5LCAxNzcsIDY1LCA1NSwgNDksIDE3NiwgNjUsIDU1LCA0OCwgCisgICAgNTcsIDQ1LCAxODIsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgwLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE3OSwgNjUsIDU1LCAKKyAgICA0OCwgNTcsIDQ1LCAxNzgsIDY1LCA1NSwgNDgsIDE4NSwgNjUsIDU1LCA0OCwgMTg0LCA2NSwgNTUsIDQ4LCAxODMsIDY1LCAKKyAgICA1NSwgNDgsIDE4MiwgNjUsIDU1LCA0OCwgMTgxLCA2NSwgNTUsIDQ4LCAxODAsIDY1LCA1NSwgNDgsIDE3OSwgNjUsIDU1LCAKKyAgICA0OCwgMTc4LCA2NSwgNTUsIDQ4LCAxNzcsIDY1LCA1NCwgNTQsIDUyLCAxMjgsIDY1LCA1NCwgNTQsIDUxLCAxMjgsIDY1LCAKKyAgICA1NCwgNTQsIDUwLCAxMjgsIDY1LCA1NCwgNTQsIDQ5LCAxMjgsIDY1LCA1NCwgNTQsIDQ4LCAxMjgsIDY1LCA1NCwgNTMsIAorICAgIDU3LCAxMjgsIDY1LCA1NCwgNTMsIDU2LCAxMjgsIDY1LCA1NCwgNTMsIDU1LCAxMjgsIDY1LCA1NCwgNTMsIDU0LCAxMjgsIAorICAgIDY1LCA1NCwgNTMsIDUzLCAxMjgsIDY1LCA1NCwgNTMsIDUyLCAxMjgsIDY1LCA1NCwgNTMsIDUxLCAxMjgsIDY1LCA1NCwgCisgICAgNTMsIDUwLCAxMjgsIDY1LCA1NCwgNTMsIDQ5LCAxMjgsIDY1LCA1NCwgNTIsIDU3LCAxMjgsIDY1LCA1NCwgNTIsIDU2LCAKKyAgICAxMjgsIDY1LCA1NCwgNTIsIDU0LCAxMjgsIDY1LCA1NCwgNTIsIDUzLCAxMjgsIDY1LCA1NCwgNTIsIDUyLCAxMjgsIDY1LCAKKyAgICA1NCwgNTIsIDUxLCAxMjgsIDY1LCA1NCwgNTIsIDUwLCAxMjgsIDY1LCA1NCwgNTIsIDQ4LCAxMjgsIDY1LCA1NCwgNTEsIAorICAgIDU2LCAxMjgsIDY1LCA1NCwgNTEsIDU1LCAxMjgsIDY1LCA1NCwgNTEsIDUyLCAxMjgsIDY1LCA1NCwgNTAsIDU3LCAxMjgsIAorICAgIDY1LCA1NCwgNTAsIDU2LCAxMjgsIDY1LCA1NCwgNTAsIDU1LCAxMjgsIDY1LCA1NCwgNTAsIDU0LCAxMjgsIDY1LCA1NCwgCisgICAgNTAsIDUyLCAxMjgsIDY1LCA1NCwgNTAsIDUxLCAxMjgsIDY1LCA1NCwgNTAsIDUwLCAxMjgsIDY1LCA1NCwgNTAsIDQ5LCAKKyAgICAxMjgsIDY1LCA1NCwgNTAsIDQ4LCAxMjgsIDY1LCA1NCwgNDksIDU3LCAxMjgsIDY1LCA1NCwgNDksIDU2LCAxMjgsIDY1LCAKKyAgICA1NCwgNDksIDU1LCAxMjgsIDY1LCA1NCwgNDksIDU0LCAxMjgsIDY1LCA1NCwgNDksIDUzLCAxMjgsIDY1LCA1NCwgNDksIAorICAgIDUyLCAxMjgsIDY1LCA1NCwgNDksIDUxLCAxMjgsIDY1LCA1NCwgNDksIDUwLCAxMjgsIDY1LCA1NCwgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA1NCwgNDksIDQ4LCAxMjgsIDY1LCA1NCwgNDgsIDU3LCAxMjgsIDY1LCA1NCwgNDgsIDU2LCAxMjgsIDY1LCA1NCwgCisgICAgNDgsIDU0LCAxMjgsIDY1LCA1NCwgNDgsIDUyLCAxMjgsIDY1LCA1NCwgNDgsIDUxLCAxMjgsIDY1LCA1NCwgNDgsIDUwLCAKKyAgICAxMjgsIDY1LCA1NCwgNDgsIDQ5LCAxMjgsIDY1LCA1NCwgNDgsIDQ4LCAxMjgsIDY1LCA1MywgNTcsIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNTcsIDU0LCAxMjgsIDY1LCA1MywgNTcsIDUzLCAxMjgsIDY1LCA1MywgNTcsIDUyLCAxMjgsIDY1LCA1MywgNTcsIAorICAgIDUwLCAxMjgsIDY1LCA1MywgNTcsIDQ5LCAxMjgsIDY1LCA1MywgNTYsIDU3LCAxMjgsIDY1LCA1MywgNTYsIDU2LCAxMjgsIAorICAgIDY1LCA1MywgNTYsIDU1LCAxMjgsIDY1LCA1MywgNTYsIDU0LCAxMjgsIDY1LCA1MywgNTYsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTYsIDUyLCAxMjgsIDY1LCA1MywgNTYsIDUxLCAxMjgsIDY1LCA1MywgNTYsIDUwLCAxMjgsIDY1LCA1MywgNTYsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MywgNTYsIDQ4LCAxMjgsIDY1LCA1MywgNTUsIDU3LCAxMjgsIDY1LCA1MywgNTUsIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNTUsIDU1LCAxMjgsIDY1LCA1MywgNTUsIDU0LCAxMjgsIDY1LCA1MywgNTUsIDUzLCAxMjgsIDY1LCA1MywgNTUsIAorICAgIDUyLCAxMjgsIDY1LCA1MywgNTUsIDUxLCAxMjgsIDY1LCA1MywgNTUsIDUwLCAxMjgsIDY1LCA1MywgNTUsIDQ5LCAxMjgsIAorICAgIDY1LCA1MywgNTUsIDQ4LCAxMjgsIDY1LCA1MywgNTQsIDU3LCAxMjgsIDY1LCA1MywgNTQsIDU2LCAxMjgsIDY1LCA1MywgCisgICAgNTQsIDU0LCAxMjgsIDY1LCA1MywgNTQsIDUzLCAxMjgsIDY1LCA1MywgNTQsIDUyLCAxMjgsIDY1LCA1MywgNTQsIDUxLCAKKyAgICAxMjgsIDY1LCA1MywgNTMsIDU3LCAxMjgsIDY1LCA1MywgNTMsIDU1LCAxMjgsIDY1LCA1MywgNTMsIDU0LCAxMjgsIDY1LCAKKyAgICA1MywgNTMsIDUzLCAxMjgsIDY1LCA1MywgNTMsIDUyLCAxMjgsIDY1LCA1MywgNTMsIDUxLCAxMjgsIDY1LCA1MywgNTMsIAorICAgIDUwLCAxMjgsIDY1LCA1MywgNTMsIDQ5LCAxMjgsIDY1LCA1MywgNTMsIDQ4LCAxMjgsIDY1LCA1MywgNTIsIDU3LCAxMjgsIAorICAgIDY1LCA1MywgNTIsIDU2LCAxMjgsIDY1LCA1MywgNTIsIDU1LCAxMjgsIDY1LCA1MywgNTIsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTIsIDUwLCAxMjgsIDY1LCA1MywgNTIsIDQ5LCAxMjgsIDY1LCA1MywgNTIsIDQ4LCAxMjgsIDY1LCA1MywgNTEsIDU3LCAKKyAgICAxMjgsIDY1LCA1MywgNTEsIDU2LCAxMjgsIDY1LCA1MywgNTEsIDU1LCAxMjgsIDY1LCA1MywgNTEsIDU0LCAxMjgsIDY1LCAKKyAgICA1MywgNTEsIDUzLCAxMjgsIDY1LCA1MywgNTEsIDUyLCAxMjgsIDY1LCA1MywgNTEsIDUwLCAxMjgsIDY1LCA1MywgNTEsIAorICAgIDQ5LCAxMjgsIDY1LCA1MywgNTEsIDQ4LCAxMjgsIDY1LCA1MywgNTAsIDU3LCAxMjgsIDY1LCA1MywgNTAsIDU2LCAxMjgsIAorICAgIDY1LCA1MywgNTAsIDU1LCAxMjgsIDY1LCA1MywgNTAsIDU0LCAxMjgsIDY1LCA1MywgNTAsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTAsIDUyLCAxMjgsIDY1LCA1MywgNTAsIDUxLCAxMjgsIDY1LCA1MywgNTAsIDUwLCAxMjgsIDY1LCA1MywgNTAsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MywgNTAsIDQ4LCAxMjgsIDY1LCA1MywgNDksIDU3LCAxMjgsIDY1LCA1MywgNDksIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNDksIDU1LCAxMjgsIDY1LCA1MywgNDksIDU0LCAxMjgsIDY1LCA1MywgNDksIDUzLCAxMjgsIDY1LCA1MywgNDksIAorICAgIDUyLCAxMjgsIDY1LCA1MywgNDksIDUxLCAxMjgsIDY1LCA1MywgNDksIDUwLCAxMjgsIDY1LCA1MywgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA1MywgNDksIDQ4LCAxMjgsIDY1LCA1MywgNDgsIDU3LCAxMjgsIDY1LCA1MywgNDgsIDU2LCAxMjgsIDY1LCA1MywgCisgICAgNDgsIDU1LCAxMjgsIDY1LCA1MywgNDgsIDU0LCAxMjgsIDY1LCA1MywgNDgsIDUzLCAxMjgsIDY1LCA1MywgNDgsIDUyLCAKKyAgICAxMjgsIDY1LCA1MywgNDgsIDUxLCAxMjgsIDY1LCA1MywgNDgsIDUwLCAxMjgsIDY1LCA1MywgNDgsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MiwgNTcsIDU1LCAxMjgsIDY1LCA1MiwgNTcsIDU0LCAxMjgsIDY1LCA1MiwgNTcsIDUzLCAxMjgsIDY1LCA1MiwgNTcsIAorICAgIDUyLCAxMjgsIDY1LCA1MiwgNTcsIDUxLCAxMjgsIDY1LCA1MiwgNTcsIDUwLCAxMjgsIDY1LCA1MiwgNTcsIDQ5LCAxMjgsIAorICAgIDY1LCA1MiwgNTcsIDQ4LCAxMjgsIDY1LCA1MiwgNTYsIDU3LCAxMjgsIDY1LCA1MiwgNTYsIDU2LCAxMjgsIDY1LCA1MiwgCisgICAgNTYsIDU1LCAxMjgsIDY1LCA1MiwgNTYsIDU0LCAxMjgsIDY1LCA1MiwgNTYsIDUzLCAxMjgsIDY1LCA1MiwgNTYsIDUyLCAKKyAgICAxMjgsIDY1LCA1MiwgNTYsIDUxLCAxMjgsIDY1LCA1MiwgNTYsIDUwLCAxMjgsIDY1LCA1MiwgNTYsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MiwgNTYsIDQ4LCAxMjgsIDY1LCA1MiwgNTUsIDU3LCAxMjgsIDY1LCA1MiwgNTUsIDU2LCAxMjgsIDY1LCA1MiwgNTUsIAorICAgIDU1LCAxMjgsIDY1LCA1MiwgNTUsIDU0LCAxMjgsIDY1LCA1MiwgNTUsIDUzLCAxMjgsIDY1LCA1MiwgNTUsIDUyLCAxMjgsIAorICAgIDY1LCA1MiwgNTUsIDUxLCAxMjgsIDY1LCA1MiwgNTUsIDUwLCAxMjgsIDY1LCA1MiwgNTUsIDQ5LCAxMjgsIDY1LCA1MiwgCisgICAgNTUsIDQ4LCAxMjgsIDY1LCA1MiwgNTQsIDU3LCAxMjgsIDY1LCA1MiwgNTQsIDU2LCAxMjgsIDY1LCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY1LCA1MiwgNTQsIDU0LCAxMjgsIDY1LCA1MiwgNTQsIDUzLCAxMjgsIDY1LCA1MiwgNTQsIDUyLCAxMjgsIDY1LCAKKyAgICA1MiwgNTQsIDUxLCAxMjgsIDY1LCA1MiwgNTQsIDUwLCAxMjgsIDY1LCA1MiwgNTQsIDQ5LCAxMjgsIDY1LCA1MiwgNTQsIAorICAgIDQ4LCAxMjgsIDY1LCA1MiwgNTMsIDU3LCAxMjgsIDY1LCA1MiwgNTMsIDU2LCAxMjgsIDY1LCA1MiwgNTMsIDU1LCA2NSwgCisgICAgMTI4LCA2NSwgNTIsIDUzLCA1NSwgMTI4LCA2NSwgNTIsIDUzLCA1NCwgMTI4LCA2NSwgNTIsIDUzLCA1MywgMTI4LCA2NSwgCisgICAgNTIsIDUzLCA1MiwgMTI4LCA2NSwgNTIsIDUzLCA1MSwgMTI4LCA2NSwgNTIsIDUzLCA1MCwgMTI4LCA2NSwgNTIsIDUzLCAKKyAgICA0OSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNDgsIDEyOCwgNjUsIDUyLCA1MiwgNTcsIAorICAgIDEyOCwgNjUsIDUyLCA1MiwgNTYsIDEyOCwgNjUsIDUyLCA1MiwgNTUsIDEyOCwgNjUsIDUyLCA1MiwgNTQsIDEyOCwgNjUsIAorICAgIDUyLCA1MiwgNTMsIDEyOCwgNjUsIDUyLCA1MiwgNTIsIDEyOCwgNjUsIDUyLCA1MiwgNTEsIDEyOCwgNjUsIDUyLCA1MiwgCisgICAgNTAsIDEyOCwgNjUsIDUyLCA1MiwgNDksIDEyOCwgNjUsIDUyLCA1MiwgNDgsIDEyOCwgNjUsIDUyLCA1MSwgNTcsIDEyOCwgCisgICAgNjUsIDUyLCA1MSwgNTYsIDEyOCwgNjUsIDUyLCA1MSwgNTUsIDEyOCwgNjUsIDUyLCA1MSwgNTQsIDEyOCwgNjUsIDUyLCAKKyAgICA1MSwgNTMsIDEyOCwgNjUsIDUyLCA1MSwgNTIsIDEyOCwgNjUsIDUyLCA1MSwgNTEsIDEyOCwgNjUsIDUyLCA1MSwgNTAsIAorICAgIDEyOCwgNjUsIDUyLCA1MSwgNDksIDEyOCwgNjUsIDUyLCA1MSwgNDgsIDEyOCwgNjUsIDUyLCA1MCwgNTcsIDEyOCwgNjUsIAorICAgIDUyLCA1MCwgNTYsIDEyOCwgNjUsIDUyLCA1MCwgNTUsIDEyOCwgNjUsIDUyLCA1MCwgNTQsIDEyOCwgNjUsIDUyLCA1MCwgCisgICAgNTMsIDEyOCwgNjUsIDUyLCA1MCwgNTIsIDEyOCwgNjUsIDUyLCA1MCwgNTEsIDEyOCwgNjUsIDUyLCA1MCwgNTAsIDEyOCwgCisgICAgNjUsIDUyLCA1MCwgNDksIDEyOCwgNjUsIDUyLCA1MCwgNDgsIDEyOCwgNjUsIDUyLCA0OSwgNTcsIDEyOCwgNjUsIDUyLCAKKyAgICA0OSwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU2LCAxMjgsIDY1LCA1MiwgNDksIDU1LCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NSwgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgCisgICAgNjUsIDUyLCA0OSwgNTQsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDksIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUwLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCA0NSwgODYsIDY1LCA4MywgMTI4LCAKKyAgICA2NSwgNTIsIDQ5LCA0OSwgMTI4LCA2NSwgNTIsIDQ5LCA0OCwgMTkzLCA2NSwgNTIsIDQ5LCA0OCwgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OSwgMTc2LCA2NSwgNTIsIDQ4LCA1NywgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgCisgICAgNTcsIDEyOCwgNjUsIDUyLCA0OCwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU2LCAxMjgsIDY1LCAKKyAgICA1MiwgNDgsIDU1LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgNDUsIAorICAgIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTQsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDgsIDUzLCAxMjgsIDY1LCA1MiwgNDgsIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAorICAgIDQ4LCA1MiwgMTI4LCA2NSwgNTIsIDQ4LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDEyOCwgCisgICAgNjUsIDUyLCA0OCwgNTAsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAKKyAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OSwgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OCwgNDgsIDEyOCwgNjUsIDUxLCA1NywgNTcsIDEyOCwgNjUsIDUxLCA1NywgNTYsIDEyOCwgNjUsIAorICAgIDUxLCA1NywgNTUsIDEyOCwgNjUsIDUxLCA1NywgNTQsIDEyOCwgNjUsIDUxLCA1NywgNTMsIDEyOCwgNjUsIDUxLCA1NywgCisgICAgNTIsIDEyOCwgNjUsIDUxLCA1NywgMTc5LCA2NSwgNTEsIDU3LCA1MCwgMTI4LCA2NSwgNTEsIDU3LCA0OSwgMTI4LCA2NSwgCisgICAgNTEsIDU3LCA0OCwgMTI4LCA2NSwgNTEsIDU2LCA1NywgMTI4LCA2NSwgNTEsIDU2LCA1NiwgMTI4LCA2NSwgNTEsIDU2LCAKKyAgICA1NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDEyOCwgNjUsIDUxLCA1NiwgNTMsIAorICAgIDEyOCwgNjUsIDUxLCA1NiwgNTIsIDEyOCwgNjUsIDUxLCA1NiwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDE3OSwgNjUsIAorICAgIDUxLCA1NiwgNTAsIDEyOCwgNjUsIDUxLCA1NiwgNDksIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCAxMjgsIDY1LCA1MSwgCisgICAgNTYsIDQ4LCAxMjgsIDY1LCA1MSwgNTUsIDU3LCAxMjgsIDY1LCA1MSwgNTUsIDU2LCAxMjgsIDY1LCA1MSwgNTUsIDU1LCAKKyAgICAxMjgsIDY1LCA1MSwgNTUsIDU0LCAxMjgsIDY1LCA1MSwgNTUsIDUzLCAxMjgsIDY1LCA1MSwgNTUsIDUyLCAxMjgsIDY1LCAKKyAgICA1MSwgNTUsIDUxLCAxMjgsIDY1LCA1MSwgNTUsIDUwLCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIAorICAgIDU1LCA0OSwgMTI4LCA2NSwgNTEsIDU1LCA0OCwgMTI4LCA2NSwgNTEsIDU0LCA1NywgMTI4LCA2NSwgNTEsIDU0LCA1NiwgCisgICAgNjUsIDEyOCwgNjUsIDUxLCA1NCwgNTYsIDEyOCwgNjUsIDUxLCA1NCwgNTUsIDEyOCwgNjUsIDUxLCA1NCwgNTQsIDEyOCwgCisgICAgNjUsIDUxLCA1NCwgNTMsIDEyOCwgNjUsIDUxLCA1NCwgNTIsIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDUyLCAxMjgsIDY1LCAKKyAgICA1MSwgNTQsIDUxLCAxMjgsIDY1LCA1MSwgNTQsIDUwLCAxMjgsIDY1LCA1MSwgNTQsIDQ5LCAxMjgsIDY1LCA1MSwgNTQsIAorICAgIDQ4LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDUzLCA1NywgMTI4LCA2NSwgNTEsIDUzLCA1NiwgCisgICAgMTI4LCA2NSwgNTEsIDUzLCA1NSwgMTI4LCA2NSwgNTEsIDUzLCA1NCwgMTI4LCA2NSwgNTEsIDUzLCA1MywgMTI4LCA2NSwgCisgICAgNTEsIDUzLCA1MiwgMTI4LCA2NSwgNTEsIDUzLCA1MSwgMTI4LCA2NSwgNTEsIDUzLCA1MCwgMTI4LCA2NSwgNTEsIDUzLCAKKyAgICA0OSwgMTI4LCA2NSwgNTEsIDUzLCA0OCwgMTI4LCA2NSwgNTEsIDUyLCA1NywgMTI4LCA2NSwgNTEsIDUyLCA1NiwgMTI4LCAKKyAgICA2NSwgNTEsIDUyLCA1NSwgMTI4LCA2NSwgNTEsIDUyLCA1NCwgMTI4LCA2NSwgNTEsIDUyLCA1MywgMTI4LCA2NSwgNTEsIAorICAgIDUyLCA1MiwgMTI4LCA2NSwgNTEsIDUyLCA1MSwgMTI4LCA2NSwgNTEsIDUyLCA1MCwgMTI4LCA2NSwgNTEsIDUyLCA0OSwgCisgICAgMTI4LCA2NSwgNTEsIDUyLCA0OCwgMTI4LCA2NSwgNTEsIDUxLCA1NywgMTI4LCA2NSwgNTEsIDUxLCA1NiwgMTI4LCA2NSwgCisgICAgNTEsIDUxLCA1NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjcsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY2LCAxMjgsIDY1LCAKKyAgICA1MSwgNTEsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgMTI4LCA2NSwgNTEsIDUxLCA1MywgMTI4LCA2NSwgNTEsIAorICAgIDUxLCA1MiwgMTI4LCA2NSwgNTEsIDUxLCA1MSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjcsIDEyOCwgNjUsIDUxLCA1MSwgCisgICAgNTAsIDY2LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgMTI4LCA2NSwgNTEsIDUxLCAKKyAgICA0OSwgMTI4LCA2NSwgNTEsIDUxLCA0OCwgMTI4LCA2NSwgNTEsIDUwLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIAorICAgIDEyOCwgNjUsIDUxLCA1MCwgNTYsIDEyOCwgNjUsIDUxLCA1MCwgNTUsIDEyOCwgNjUsIDUxLCA1MCwgNTQsIDEyOCwgNjUsIAorICAgIDUxLCA1MCwgNTMsIDEyOCwgNjUsIDUxLCA1MCwgNTIsIDEyOCwgNjUsIDUxLCA1MCwgNTEsIDEyOCwgNjUsIDUxLCA1MCwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA1MCwgNDksIDEyOCwgNjUsIDUxLCA1MCwgNDgsIDEyOCwgNjUsIDUxLCA0OSwgNTcsIDEyOCwgCisgICAgNjUsIDUxLCA0OSwgNTYsIDEyOCwgNjUsIDUxLCA0OSwgNTUsIDEyOCwgNjUsIDUxLCA0OSwgNTQsIDEyOCwgNjUsIDUxLCAKKyAgICA0OSwgNTMsIDEyOCwgNjUsIDUxLCA0OSwgNTIsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY3LCAxMjgsIDY1LCA1MSwgNDksIAorICAgIDUxLCA2NiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjUsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDEyOCwgNjUsIDUxLCA0OSwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA0OSwgNDksIDEyOCwgNjUsIDUxLCA0OSwgNDgsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY3LCAKKyAgICAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjUsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIAorICAgIDEyOCwgNjUsIDUxLCA0OCwgNTYsIDEyOCwgNjUsIDUxLCA0OCwgNTUsIDEyOCwgNjUsIDUxLCA0OCwgNTQsIDEyOCwgNjUsIAorICAgIDUxLCA0OCwgNTMsIDEyOCwgNjUsIDUxLCA0OCwgNTIsIDEyOCwgNjUsIDUxLCA0OCwgNTEsIDEyOCwgNjUsIDUxLCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA0OCwgNDksIDEyOCwgNjUsIDUxLCA0OCwgNDgsIDEyOCwgNjUsIDUwLCA1NywgNTcsIDY1LCAKKyAgICAxMjgsIDY1LCA1MCwgNTcsIDU3LCAxMjgsIDY1LCA1MCwgNTcsIDU2LCAxMjgsIDY1LCA1MCwgNTcsIDU1LCAxMjgsIDY1LCAKKyAgICA1MCwgNTcsIDU0LCAxMjgsIDY1LCA1MCwgNTcsIDUzLCAxMjgsIDY1LCA1MCwgNTcsIDUyLCA2NSwgMTI4LCA2NSwgNTAsIAorICAgIDU3LCA1MiwgMTI4LCA2NSwgNTAsIDU3LCA1MSwgMTI4LCA2NSwgNTAsIDU3LCA1MCwgMTI4LCA2NSwgNTAsIDU3LCA0OSwgCisgICAgMTI4LCA2NSwgNTAsIDU3LCA0OCwgMTI4LCA2NSwgNTAsIDU2LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDEyOCwgCisgICAgNjUsIDUwLCA1NiwgNTYsIDEyOCwgNjUsIDUwLCA1NiwgNTUsIDEyOCwgNjUsIDUwLCA1NiwgNTQsIDEyOCwgNjUsIDUwLCAKKyAgICA1NiwgNTMsIDEyOCwgNjUsIDUwLCA1NiwgNTIsIDEyOCwgNjUsIDUwLCA1NiwgNTEsIDEyOCwgNjUsIDUwLCA1NiwgNTAsIAorICAgIDEyOCwgNjUsIDUwLCA1NiwgNDksIDEyOCwgNjUsIDUwLCA1NiwgNDgsIDEyOCwgNjUsIDUwLCA1NSwgNTcsIDEyOCwgNjUsIAorICAgIDUwLCA1NSwgNTYsIDEyOCwgNjUsIDUwLCA1NSwgNTUsIDEyOCwgNjUsIDUwLCA1NSwgNTQsIDEyOCwgNjUsIDUwLCA1NSwgCisgICAgNTMsIDEyOCwgNjUsIDUwLCA1NSwgNTIsIDEyOCwgNjUsIDUwLCA1NSwgNTEsIDEyOCwgNjUsIDUwLCA1NSwgNTAsIDEyOCwgCisgICAgNjUsIDUwLCA1NSwgNDksIDEyOCwgNjUsIDUwLCA1NSwgNDgsIDEyOCwgNjUsIDUwLCA1NCwgNTcsIDEyOCwgNjUsIDUwLCAKKyAgICA1NCwgNTYsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCAxMjgsIDY1LCA1MCwgNTQsIAorICAgIDU0LCAxMjgsIDY1LCA1MCwgNTQsIDUzLCAxMjgsIDY1LCA1MCwgNTQsIDUyLCAxMjgsIDY1LCA1MCwgNTQsIDUxLCAxMjgsIAorICAgIDY1LCA1MCwgNTQsIDUwLCAxMjgsIDY1LCA1MCwgNTQsIDQ5LCAxMjgsIDY1LCA1MCwgNTQsIDQ4LCAxMjgsIDY1LCA1MCwgCisgICAgNTMsIDU3LCAxMjgsIDY1LCA1MCwgNTMsIDU2LCAxMjgsIDY1LCA1MCwgNTMsIDU1LCAxMjgsIDY1LCA1MCwgNTMsIDU0LCAKKyAgICAxMjgsIDY1LCA1MCwgNTMsIDUzLCAxMjgsIDY1LCA1MCwgNTMsIDUyLCAxMjgsIDY1LCA1MCwgNTMsIDUxLCAxMjgsIDY1LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDY1LCA1MCwgNTMsIDQ5LCAxMjgsIDY1LCA1MCwgNTMsIDQ4LCAxMjgsIDY1LCA1MCwgNTIsIAorICAgIDU3LCAxMjgsIDY1LCA1MCwgNTIsIDU2LCAxMjgsIDY1LCA1MCwgNTIsIDU1LCAxMjgsIDY1LCA1MCwgNTIsIDU0LCAxMjgsIAorICAgIDY1LCA1MCwgNTIsIDUzLCAxMjgsIDY1LCA1MCwgNTIsIDUyLCAxMjgsIDY1LCA1MCwgNTIsIDUxLCAxMjgsIDY1LCA1MCwgCisgICAgNTIsIDUwLCAxMjgsIDY1LCA1MCwgNTIsIDQ5LCAxMjgsIDY1LCA1MCwgNTIsIDQ4LCAxMjgsIDY1LCA1MCwgNTEsIDU3LCAKKyAgICAxMjgsIDY1LCA1MCwgNTEsIDU2LCAxMjgsIDY1LCA1MCwgNTEsIDU1LCAxMjgsIDY1LCA1MCwgNTEsIDU0LCAxMjgsIDY1LCAKKyAgICA1MCwgNTEsIDUzLCAxMjgsIDY1LCA1MCwgNTEsIDUyLCAxMjgsIDY1LCA1MCwgNTEsIDUxLCAxMjgsIDY1LCA1MCwgNTEsIAorICAgIDUwLCAxMjgsIDY1LCA1MCwgNTEsIDQ5LCAxMjgsIDY1LCA1MCwgNTEsIDQ4LCAxMjgsIDY1LCA1MCwgNTAsIDU3LCAxMjgsIAorICAgIDY1LCA1MCwgNTAsIDU2LCAxMjgsIDY1LCA1MCwgNTAsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgMTI4LCA2NSwgCisgICAgNTAsIDUwLCA1NCwgMTI4LCA2NSwgNTAsIDUwLCA1MywgMTI4LCA2NSwgNTAsIDUwLCA1MiwgMTI4LCA2NSwgNTAsIDUwLCAKKyAgICA1MSwgMTI4LCA2NSwgNTAsIDUwLCA1MCwgMTI4LCA2NSwgNTAsIDUwLCA0OSwgMTI4LCA2NSwgNTAsIDUwLCA0OCwgMTI4LCAKKyAgICA2NSwgNTAsIDQ5LCA1NywgMTI4LCA2NSwgNTAsIDQ5LCA1NiwgMTI4LCA2NSwgNTAsIDQ5LCA1NSwgMTI4LCA2NSwgNTAsIAorICAgIDQ5LCA1NCwgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIDY1LCAxMjgsIDY1LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDY1LCA1MCwgNDksIDUyLCAxMjgsIDY1LCA1MCwgNDksIDUxLCAxMjgsIDY1LCA1MCwgNDksIDUwLCAKKyAgICAxMjgsIDY1LCA1MCwgNDksIDQ5LCAxMjgsIDY1LCA1MCwgNDksIDQ4LCAxMjgsIDY1LCA1MCwgNDgsIDU3LCA2NSwgMTI4LCAKKyAgICA2NSwgNTAsIDQ4LCA1NywgMTI4LCA2NSwgNTAsIDQ4LCA1NiwgMTI4LCA2NSwgNTAsIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIAorICAgIDUwLCA0OCwgNTUsIDEyOCwgNjUsIDUwLCA0OCwgNTQsIDEyOCwgNjUsIDUwLCA0OCwgNTMsIDEyOCwgNjUsIDUwLCA0OCwgCisgICAgNTIsIDEyOCwgNjUsIDUwLCA0OCwgNTEsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDY2LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAKKyAgICA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgMTI4LCA2NSwgNTAsIDQ4LCA0OSwgMTI4LCA2NSwgNTAsIDQ4LCA0OCwgMTI4LCAKKyAgICA2NSwgNDksIDU3LCA1NywgMTI4LCA2NSwgNDksIDU3LCA1NiwgMTI4LCA2NSwgNDksIDU3LCA1NSwgMTI4LCA2NSwgNDksIAorICAgIDU3LCA1NCwgMTI4LCA2NSwgNDksIDU3LCA1MywgMTI4LCA2NSwgNDksIDU3LCA1MiwgMTI4LCA2NSwgNDksIDU3LCA1MSwgCisgICAgMTI4LCA2NSwgNDksIDU3LCA1MCwgMTI4LCA2NSwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNDksIDU3LCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDU2LCA1NywgMTI4LCA2NSwgNDksIDU2LCA1NiwgMTI4LCA2NSwgNDksIDU2LCA1NSwgMTI4LCA2NSwgNDksIDU2LCAKKyAgICA1NCwgMTI4LCA2NSwgNDksIDU2LCA1MywgMTI4LCA2NSwgNDksIDU2LCA1MiwgMTI4LCA2NSwgNDksIDU2LCA1MSwgMTI4LCAKKyAgICA2NSwgNDksIDU2LCA1MCwgMTI4LCA2NSwgNDksIDU2LCA0OSwgMTI4LCA2NSwgNDksIDU2LCA0OCwgMTI4LCA2NSwgNDksIAorICAgIDU1LCA1NywgMTI4LCA2NSwgNDksIDU1LCA1NiwgMTI4LCA2NSwgNDksIDU1LCA1NSwgMTI4LCA2NSwgNDksIDU1LCA1NCwgCisgICAgMTI4LCA2NSwgNDksIDU1LCA1MywgMTI4LCA2NSwgNDksIDU1LCA1MiwgMTI4LCA2NSwgNDksIDU1LCA1MSwgMTI4LCA2NSwgCisgICAgNDksIDU1LCA1MCwgMTI4LCA2NSwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNDksIDU1LCA0OCwgMTI4LCA2NSwgNDksIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNDksIDU0LCA1NiwgMTI4LCA2NSwgNDksIDU0LCA1NSwgMTI4LCA2NSwgNDksIDU0LCA1NCwgMTI4LCAKKyAgICA2NSwgNDksIDU0LCA1MywgMTI4LCA2NSwgNDksIDU0LCA1MiwgMTI4LCA2NSwgNDksIDU0LCA1MSwgMTI4LCA2NSwgNDksIAorICAgIDU0LCA1MCwgMTI4LCA2NSwgNDksIDU0LCA0OSwgMTI4LCA2NSwgNDksIDU0LCA0OCwgMTI4LCA2NSwgNDksIDUzLCA1NywgCisgICAgMTI4LCA2NSwgNDksIDUzLCA1NiwgMTI4LCA2NSwgNDksIDUzLCA1NSwgMTI4LCA2NSwgNDksIDUzLCA1NCwgMTI4LCA2NSwgCisgICAgNDksIDUzLCA1MywgMTI4LCA2NSwgNDksIDUzLCA1MiwgMTI4LCA2NSwgNDksIDUzLCA1MSwgMTI4LCA2NSwgNDksIDUzLCAKKyAgICA1MCwgMTI4LCA2NSwgNDksIDUzLCA0OSwgMTI4LCA2NSwgNDksIDUzLCA0OCwgMTI4LCA2NSwgNDksIDUyLCA1NywgMTI4LCAKKyAgICA2NSwgNDksIDUyLCA1NiwgMTI4LCA2NSwgNDksIDUyLCA1NSwgMTI4LCA2NSwgNDksIDUyLCA1NCwgMTI4LCA2NSwgNDksIAorICAgIDUyLCA1MywgMTI4LCA2NSwgNDksIDUyLCA1MiwgMTI4LCA2NSwgNDksIDUyLCA1MSwgMTI4LCA2NSwgNDksIDUyLCA1MCwgCisgICAgMTI4LCA2NSwgNDksIDUyLCA0OSwgMTI4LCA2NSwgNDksIDUyLCA0OCwgMTI4LCA2NSwgNDksIDUxLCA1NywgMTI4LCA2NSwgCisgICAgNDksIDUxLCA1NiwgMTI4LCA2NSwgNDksIDUxLCA1NSwgMTI4LCA2NSwgNDksIDUxLCA1NCwgMTI4LCA2NSwgNDksIDUxLCAKKyAgICA1MywgNjUsIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDEyOCwgNjUsIDQ5LCA1MSwgNTIsIDEyOCwgNjUsIDQ5LCA1MSwgNTEsIAorICAgIDEyOCwgNjUsIDQ5LCA1MSwgNTAsIDEyOCwgNjUsIDQ5LCA1MSwgNDksIDY3LCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCAxMjgsIAorICAgIDY1LCA0OSwgNTEsIDQ4LCAxMjgsIDY1LCA0OSwgNTAsIDU3LCAxMjgsIDY1LCA0OSwgNTAsIDU2LCAxMjgsIDY1LCA0OSwgCisgICAgNTAsIDU1LCAxMjgsIDY1LCA0OSwgNTAsIDU0LCAxMjgsIDY1LCA0OSwgNTAsIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUwLCAKKyAgICA1MywgMTI4LCA2NSwgNDksIDUwLCA1MiwgMTI4LCA2NSwgNDksIDUwLCA1MSwgMTI4LCA2NSwgNDksIDUwLCA1MCwgMTI4LCAKKyAgICA2NSwgNDksIDUwLCA0OSwgMTI4LCA2NSwgNDksIDUwLCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA0OSwgNTcsIDEyOCwgNjUsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDQ5LCA0OSwgNTUsIDEyOCwgNjUsIDQ5LCA0OSwgCisgICAgNTQsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNDksIDUzLCAxMjgsIDY1LCA0OSwgNDksIDUyLCAKKyAgICAxMjgsIDY1LCA0OSwgNDksIDUxLCAxMjgsIDY1LCA0OSwgNDksIDUwLCAxMjgsIDY1LCA0OSwgNDksIDQ5LCAxMjgsIDY1LCAKKyAgICA0OSwgNDksIDQ4LCA2NiwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA0OCwgNTcsIDEyOCwgNjUsIDQ5LCA0OCwgNTYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY3LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTQsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NSwgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1MywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY2LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDUyLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgMTI4LCA2NSwgNDksIDQ4LCA1MSwgMTI4LCA2NSwgNDksIDQ4LCAKKyAgICA1MCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDY1LCAxMjgsIDY1LCA0OSwgNDgsIAorICAgIDQ5LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgCisgICAgNjUsIDQ5LCA0OCwgNDgsIDEyOCwgNjUsIDQ4LCA1NywgNTcsIDEyOCwgNjUsIDQ4LCA1NywgNTYsIDY1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTcsIDU2LCAxMjgsIDY1LCA0OCwgNTcsIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgMTI4LCA2NSwgNDgsIAorICAgIDU3LCA1NCwgMTI4LCA2NSwgNDgsIDU3LCA1MywgMTI4LCA2NSwgNDgsIDU3LCA1MiwgMTI4LCA2NSwgNDgsIDU3LCA1MSwgCisgICAgMTI4LCA2NSwgNDgsIDU3LCA1MCwgMTI4LCA2NSwgNDgsIDU3LCA0OSwgMTI4LCA2NSwgNDgsIDU3LCA0OCwgMTI4LCA2NSwgCisgICAgNDgsIDU2LCA1NywgMTI4LCA2NSwgNDgsIDU2LCA1NiwgMTI4LCA2NSwgNDgsIDU2LCA1NSwgMTI4LCA2NSwgNDgsIDU2LCAKKyAgICA1NCwgMTI4LCA2NSwgNDgsIDU2LCA1MywgMTI4LCA2NSwgNDgsIDU2LCA1MiwgMTI4LCA2NSwgNDgsIDU2LCA1MSwgMTI4LCAKKyAgICA2NSwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNDgsIDU2LCA0OCwgMTI4LCA2NSwgNDgsIAorICAgIDU1LCA1NywgMTI4LCA2NSwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNDgsIDU1LCA1NSwgMTI4LCA2NSwgNDgsIDU1LCA1NCwgCisgICAgMTI4LCA2NSwgNDgsIDU1LCA1MywgMTI4LCA2NSwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNDgsIDU1LCA1MSwgMTI4LCA2NSwgCisgICAgNDgsIDU1LCA1MCwgMTI4LCA2NSwgNDgsIDU1LCA0OSwgMTI4LCA2NSwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNDgsIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNDgsIDU0LCA1NiwgMTI4LCA2NSwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjcsIAorICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgCisgICAgMTI4LCA2NSwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNDgsIDU0LCA1MiwgMTI4LCA2NSwgNDgsIDU0LCA1MSwgMTI4LCA2NSwgCisgICAgNDgsIDU0LCA1MCwgMTI4LCA2NSwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNDgsIDUzLCAKKyAgICA1NywgMTI4LCA2NSwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNDgsIAorICAgIDUzLCA1MCwgMTI4LCA2NSwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNDgsIDUyLCA1NywgCisgICAgMTI4LCA2NSwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgNjYsIDEyOCwgCisgICAgNjUsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCA2NSwgMTI4LCAKKyAgICA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAxMjgsIDY1LCA0OCwgCisgICAgNTIsIDQ5LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNDgsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDY1LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCA0OCwgNTEsIAorICAgIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCA0OCwgNTEsIDUzLCAxMjgsIAorICAgIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDUwLCA1NiwgNjYsIDEyOCwgNjUsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA2NSwgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NiwgCisgICAgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0NSwgNjksIDg1LCAKKyAgICAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgNDUsIDc1LCA3MiwgODksIDg1LCAxOTYsIDQ1LCAKKyAgICA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIDE5NiwgNDUsIDY3LCA3MiwgNjUsIDIxMCwgNDUsIAorICAgIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBsZXhpY29uX29mZnNldFtdID0gewotICAgIDAsIDAsIDYsIDEwLCAxNCwgMjIsIDI3LCAzNCwgNDQsIDQ5LCA1OCwgNjQsIDY2LCA2OSwgODEsIDg5LCAxMDIsIDEwOCwgCi0gICAgMTEzLCAxMTgsIDEyNiwgMTM1LCAxNDYsIDE1MSwgMTU2LCAxNjEsIDE2NCwgMTY4LCAxNzcsIDE4MywgMTg5LCAxOTQsIAotICAgIDIwMSwgMjA5LCAyMTcsIDIxOCwgMjIxLCAyMjksIDE2NSwgMjM1LCAyNDQsIDI1MSwgMjYxLCAyNjcsIDI3NCwgMjc5LCAKLSAgICAyODIsIDI4NywgMjkzLCAyOTYsIDMwMCwgMzA1LCAzMTEsIDMxNywgMzIyLCAzMjcsIDMzMywgMzM5LCAzNDgsIDM1NSwgCi0gICAgMzYyLCAzNzEsIDM3NiwgMzgxLCAzODMsIDM5MSwgMzk5LCA0MDAsIDQwOCwgNDEwLCA0MTcsIDQyMCwgNDI2LCA0MzMsIAotICAgIDMzMSwgNDM4LCA0NDAsIDQ0MiwgNDQ5LCA0NTEsIDQ1NiwgNDY0LCA0NzEsIDQ3NiwgNDgwLCA0ODYsIDQ5MSwgNTAxLCAKLSAgICA1MDYsIDUxMywgNTE2LCA1MjQsIDUyOCwgNTM4LCA1NDUsIDU1NCwgNTYxLCA1NzAsIDU3NywgNTgwLCA1ODQsIDU5MiwgCi0gICAgNTk4LCA2MTEsIDYxOCwgNjIyLCA2MjYsIDYyNywgNjM2LCA2NDAsIDY0OSwgNjU1LCA2NTksIDY2MSwgNjY2LCA2NzQsIAotICAgIDY3OCwgNjg2LCA2OTEsIDY5NCwgNzAwLCA3MDMsIDcwNywgNzEyLCA3MjAsIDcyMywgNzMwLCA3MzUsIDc0NCwgNzUzLCAKLSAgICA3NjEsIDc2OSwgNzczLCA3NzksIDc4NywgNzk0LCA3OTcsIDgwNywgODExLCA4MTUsIDgyNiwgODMzLCA4NDAsIDg0NCwgCi0gICAgODQ4LCA4NTQsIDg0MiwgODYzLCA4NjksIDg3NCwgODc5LCA4ODMsIDg4NiwgODg5LCA4OTQsIDkwMywgOTExLCA5MTYsIAotICAgIDY1OCwgNTc1LCA5MjEsIDkyNCwgOTMwLCA5MzQsIDkzOCwgOTQ3LCA5NTMsIDk2MCwgOTY5LCA5NzYsIDk4OSwgOTk0LCAKLSAgICA5OTgsIDEwMDYsIDEwMDksIDEwMTUsIDEwMjEsIDEwMzAsIDEwMzcsIDEwNDUsIDEwNTIsIDEwNjIsIDEwNjksIDEwNzcsIAotICAgIDEwODYsIDEwOTAsIDEwOTMsIDExMDAsIDIxLCAxMTA0LCAxMTEzLCAxMTIxLCAxMTI4LCAxMTMxLCAxMTM2LCAxMTM4LCAKLSAgICAxMTQyLCAxMTUxLCAxMTU2LCAxMTU5LCAxMTY1LCAxMTcyLCAxMTc1LCAxMTgwLCAxMTg1LCAxMTkxLCAxMTk2LCAxMjAxLCAKLSAgICAxMjA2LCAxMjEwLCAxMjE1LCAxMjIxLCAxMjI2LCAxMjMxLCAxMjM1LCAxMjQxLCAxMjQ2LCAxMjUxLCAxMjU2LCAxMjYwLCAKLSAgICAxMjY1LCAxMjcwLCAxMjc1LCAxMjgxLCAxMjg3LCAxMjkzLCAxMjk4LCAxMzAyLCAxMzA3LCAxMzEyLCAxMzE3LCAxMzIxLCAKLSAgICAxMzI2LCAxMzMxLCAxMzM2LCAxMzQxLCAxMTc2LCAxMTgxLCAxMTg2LCAxMTkyLCAxMTk3LCAxMzQ1LCAxMjA3LCAxMzUxLCAKLSAgICAxMzU2LCAxMzYxLCAxMzY4LCAxMzcyLCAxMzc1LCAxMzg0LCAxMjExLCAxMzg4LCAxMjE2LCAxMjIyLCAxMjI3LCAxMzkyLCAKLSAgICAxMzk3LCAxNDAyLCAxNDA2LCAxNDEwLCAxNDE2LCAxNDIwLCAxMjMyLCAxNDIzLCAxNDI1LCAxMjQyLCAxNDMwLCAxNDM0LCAKLSAgICAxMjQ3LCAxNDQwLCAxMjUyLCAxNDQ0LCAxNDQ4LCAxMjU3LCAxNDUyLCAxNDU3LCAxNDYxLCAxNDY0LCAxNDY4LCAxMjYxLCAKLSAgICAxMjY2LCAxNDczLCAxNDc5LCAxMjcxLCAxNDkxLCAxNDk3LCAxNTAzLCAxNTA5LCAxMjc2LCAxMjg4LCAxMjk0LCAxNTEzLCAKLSAgICAxNTE3LCAxNTIxLCAxNTI0LCAxMjk5LCAxNTI4LCAxNTMwLCAxNTM1LCAxNTQwLCAxNTQ2LCAxNTUxLCAxNTU2LCAxNTYwLCAKLSAgICAxNTY1LCAxNTcwLCAxNTc1LCAxNTgwLCAxNTg2LCAxNTkxLCAxNTk2LCAxNjAyLCAxNjA4LCAxNjEzLCAxNjE3LCAxNjIyLCAKLSAgICAxNjI3LCAxNjMyLCAxNjM3LCAxNjQyLCAxNjQ2LCAxNjU0LCAxNjU5LCAxNjYzLCAxNjY4LCAxNjczLCAxNjc4LCAxNjgzLCAKLSAgICAxNjg3LCAxNjkwLCAxNjk3LCAxNzAyLCAxNzA3LCAxNzEyLCAxNzE3LCAxNzIzLCAxNzI4LCAxNzMyLCAxMzAzLCAxNzM1LCAKLSAgICAxNzQwLCAxNzQ1LCAxMzA4LCAxNzQ5LCAxNzUzLCAxNzYwLCAxMzEzLCAxNzY3LCAxMzE4LCAxNzcxLCAxNzczLCAxNzc4LCAKLSAgICAxNzg0LCAxMzIyLCAxNzg5LCAxNzk4LCAxMzI3LCAxODAzLCAxODA5LCAxODE0LCAxMzMyLCAxODE5LCAxODI0LCAxODI3LCAKLSAgICAxODMyLCAxODM2LCAxODQwLCAxODQ0LCAxODQ3LCAxODUxLCAxMzM3LCAxODU2LCAxMzQyLCAxODYwLCAxODYyLCAxODY4LCAKLSAgICAxODc0LCAxODgwLCAxODg2LCAxODkyLCAxODk4LCAxOTA0LCAxOTEwLCAxOTE1LCAxOTIxLCAxOTI3LCAxOTMzLCAxOTM5LCAKLSAgICAxOTQ1LCAxOTUxLCAxOTU3LCAxOTYzLCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg0LCAxOTg5LCAxOTk0LCAxOTk5LCAyMDA0LCAKLSAgICAyMDA5LCAyMDE0LCAyMDE5LCAyMDI1LCAyMDMwLCAyMDM2LCAyMDQxLCAyMDQ3LCAyMDUzLCAyMDU4LCAyMDY0LCAyMDcwLCAKLSAgICAyMDc2LCAyMDgyLCAyMDg3LCAyMDkyLCAyMDk0LCAyMDk1LCAyMDk5LCAyMTAzLCAyMTA4LCAyMTEyLCAyMTE2LCAyMTIwLCAKLSAgICAyMTI1LCAyMTI5LCAyMTMyLCAyMTM3LCAyMTQxLCAyMTQ2LCAyMTUwLCAyMTU0LCAyMTU5LCAyMTYzLCAyMTY2LCAyMTcwLCAKLSAgICAyMTc2LCAyMTkwLCAyMTk0LCAyMTk4LCAyMjAyLCAyMjA1LCAyMjEwLCAyMjE0LCAyMjE4LCAyMjIxLCAyMjI1LCAyMjMwLCAKLSAgICAyMjM1LCAyMjQwLCAyMjQ1LCAyMjQ5LCAyMjUzLCAyMjU3LCAyMjYxLCAyMjY2LCAyMjcwLCAyMjc1LCAyMjc5LCAyMjg0LCAKLSAgICAyMjkwLCAyMjk3LCAyMzAzLCAyMzA4LCAyMzEzLCAyMzE4LCAyMzI0LCAyMzI5LCAyMzM1LCAyMzQwLCAyMzQzLCAyMzQ1LCAKLSAgICAxMTkzLCAyMzQ5LCAyMzU2LCAyMzY0LCAyMzc0LCAyMzgzLCAyMzk3LCAyNDAxLCAyNDA1LCAyNDEwLCAyNDIzLCAyNDMxLCAKLSAgICAyNDM1LCAyNDQwLCAyNDQ0LCAyNDQ3LCAyNDUxLCAyNDU1LCAyNDYwLCAyNDY1LCAyNDcwLCAyNDc0LCAyNDc3LCAyNDgxLCAKLSAgICAyNDg4LCAyNDk1LCAyNTAxLCAyNTA2LCAyNTExLCAyNTE3LCAyNTIzLCAyNTI4LCAyNTMxLCAxNzc1LCAyNTMzLCAyNTM5LCAKLSAgICAyNTQzLCAyNTQ4LCAyNTUyLCAyNTU2LCAxNjkzLCAxNzg2LCAyNTYxLCAyNTY1LCAyNTY4LCAyNTczLCAyNTc4LCAyNTgzLCAKLSAgICAyNTg4LCAyNTkyLCAyNTk5LCAyNjA0LCAyNjA3LCAyNjE0LCAyNjIwLCAyNjI0LCAyNjI4LCAyNjMyLCAyNjM3LCAyNjQ0LCAKLSAgICAyNjQ5LCAyNjU0LCAyNjYxLCAyNjY3LCAyNjczLCAyNjc5LCAyNjkzLCAyNzEwLCAyNzI1LCAyNzQwLCAyNzQ5LCAyNzU0LCAKLSAgICAyNzU4LCAyNzYzLCAyNzY4LCAyNzcyLCAyNzg0LCAyNzkxLCAyNzk3LCAyMjkzLCAyODAzLCAyODEwLCAyODE2LCAyODIwLCAKLSAgICAyODIzLCAyODMwLCAyODM2LCAyODQxLCAyODQ1LCAyODUwLCAyODU0LCAyODU4LCAyMTE3LCAyODYyLCAyODY3LCAyODcyLCAKLSAgICAyODc2LCAyODgxLCAyODg5LCAyODkzLCAyODk4LCAyOTAyLCAyOTA2LCAyOTEwLCAyOTE1LCAyOTIwLCAyOTI1LCAyOTI5LCAKLSAgICAyOTM0LCAyOTM5LCAyOTQzLCAyOTQ4LCAyOTUyLCAyOTU1LCAyOTU5LCAyOTYzLCAyOTcxLCAyOTc2LCAyOTgwLCAyOTg0LCAKLSAgICAyOTkwLCAyOTk5LCAzMDAzLCAzMDA3LCAzMDEzLCAzMDE4LCAzMDI1LCAzMDI5LCAzMDM5LCAzMDQzLCAzMDQ3LCAzMDUyLCAKLSAgICAzMDU2LCAzMDYxLCAzMDY3LCAzMDcyLCAzMDc2LCAzMDgwLCAzMDg0LCAyNDkxLCAzMDkyLCAzMDk3LCAzMTAzLCAzMTA4LCAKLSAgICAzMTEyLCAzMTE3LCAzMTIyLCAzMTI2LCAzMTMyLCAzMTM3LCAyMTIxLCAzMTQzLCAzMTQ5LCAzMTU0LCAzMTU5LCAzMTY0LCAKLSAgICAzMTY5LCAzMTc0LCAzMTc5LCAzMTg0LCAzMTg5LCAzMTk0LCAzMjAwLCAzMjA1LCAxMjA4LCAxMDEsIDMyMTEsIDMyMTUsIAotICAgIDMyMTksIDMyMjMsIDMyMjgsIDMyMzIsIDMyMzYsIDMyNDIsIDMyNDcsIDMyNTEsIDMyNTUsIDMyNjAsIDMyNjUsIDMyNjksIAotICAgIDMyNzQsIDMyNzgsIDMyODEsIDMyODUsIDMyOTAsIDMyOTQsIDMyOTksIDMzMDMsIDMzMDYsIDMzMTAsIDMzMTQsIDMzMTksIAotICAgIDMzMjMsIDMzMjYsIDMzMzksIDMzNDMsIDMzNDcsIDMzNTEsIDMzNTYsIDMzNjAsIDMzNjQsIDMzNjcsIDMzNzEsIDMzNzUsIAotICAgIDMzODAsIDMzODQsIDMzODksIDMzOTQsIDMzOTksIDM0MDMsIDM0MDgsIDM0MTEsIDM0MTQsIDM0MTksIDM0MjUsIDM0MjksIAotICAgIDM0MzMsIDM0MzYsIDM0NDEsIDM0NDUsIDM0NTAsIDM0NTQsIDM0NTgsIDM0NjEsIDM0NjcsIDM0NzIsIDM0NzcsIDM0ODMsIAotICAgIDM0ODgsIDM0OTMsIDM0OTksIDM1MDUsIDM1MTAsIDM1MTUsIDM1MjAsIDM1MjUsIDExNDAsIDU3OSwgMzUyOCwgMzUzMSwgCi0gICAgMzUzNiwgMzU0MCwgMzU0NCwgMzU0OCwgMzU1MiwgMzU1NSwgMzU1OSwgMzU2NCwgMzU2OSwgMzU3MywgMzU3OCwgMzU4MiwgCi0gICAgMzU4NywgMzU5MSwgMzU5NSwgMzU5OSwgMzYwNSwgMzYxMSwgMzYxNCwgMzYxNywgMTM5LCAzNjIzLCAzNjI4LCAzNjM3LCAKLSAgICAzNjQ1LCAzNjU0LCAzNjYxLCAzNjY3LCAzNjc0LCAzNjc5LCAzNjgzLCAzNjg3LCAzNjk1LCAzNzAyLCAzNzA3LCAzNzE0LCAKLSAgICAzNzE5LCAzNzIzLCAzNzMzLCAzNzM3LCAzNzQxLCAzNzQ2LCAzNzUxLCAzNzYxLCAyMTMzLCAzNzY2LCAzNzcwLCAzNzczLCAKLSAgICAzNzc5LCAzNzg0LCAzNzkwLCAzNzk2LCAzODAxLCAzODA4LCAzODEyLCAzODE2LCA2MzcsIDcwMSwgMTM2OSwgMzgyMCwgCi0gICAgMzgyNywgMzgzNCwgMzg0MCwgMzg0NSwgMzg1MiwgMzg1OSwgMzg2NCwgMzg3MCwgMzg3NiwgMzg4MSwgMzg4NSwgMzg5MSwgCi0gICAgMzg5OCwgMzkwMywgMzkwNywgMjE0MiwgMzkxMSwgMzkxOSwgMzkyNSwgMzkzMywgNzM5LCAzOTM5LCAzOTQ3LCAzOTU4LCAKLSAgICAzOTYyLCAzOTcyLCAyMTQ3LCAzOTc4LCAzOTgzLCAzOTk4LCA0MDA0LCA0MDExLCA0MDIxLCA0MDI3LCA0MDMyLCA0MDM4LCAKLSAgICA0MDQ0LCA0MDQ3LCA0MDUwLCA0MDU0LCA0MDU5LCA0MDY2LCA0MDcxLCA0MDc1LCA0MDc5LCA0MDgzLCA0MDg3LCA0MDkyLCAKLSAgICA0MDk4LCA0MTA5LCA0MTEzLCAzMjg2LCA0MTE4LCA0MTMwLCA0MTM2LCA0MTQ0LCA0MTQ4LCA0MTUzLCAxNTYyLCA0MTYwLCAKLSAgICA0MTYzLCA0MTY2LCA0MTcwLCA0MTczLCA0MTc5LCA0MTgzLCA0MTk3LCA0MjAxLCA0MjA0LCA0MjA4LCA0MjE0LCA0MjIwLCAKLSAgICA0MjI1LCA0MjI5LCA0MjMzLCA0MjM5LCA0MjUwLCA0MjU2LCA0MjYxLCA0MjY3LCA0MjcxLCA0Mjc5LCA0MjkxLCA0MzAxLCAKLSAgICA0MzA3LCA0MzEyLCA0MzIxLCA0MzI5LCA0MzM2LCA0MzQyLCA0MzQ2LCA0MzUyLCA0MzYxLCA0MzcwLCA0Mzc0LCA0MzgzLCAKLSAgICA0Mzg4LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA5LCA0NDE1LCA0NDE5LCA0NDI0LCA0NDI4LCA0NDM0LCAyMTU1LCAxMzg1LCAKLSAgICA0NDQwLCA0NDQ1LCA0NDUxLCA0NDU2LCA0NDYxLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg3LCA0NDkyLCA0NDk4LCAKLSAgICA0NTAzLCA0NTA4LCA0NTEzLCA0NTE5LCA0NTI0LCA0NTI5LCA0NTM0LCA0NTM5LCA0NTQ1LCA0NTUwLCA0NTU2LCA0NTYxLCAKLSAgICA0NTY2LCA0NTcxLCA0NTc2LCA0NTgxLCA0NTg2LCA0NTkyLCA0NTk3LCA0NjAyLCAyOTEsIDMyMSwgNDYwNywgNDYxMywgCi0gICAgNDYxNywgNDYyMSwgNDYyNiwgNDYzMCwgNDYzNCwgNDYzNywgNDY0MSwgNDY0NSwgNDY0OSwgNDY1MywgNDY1NywgNDY2MiwgCi0gICAgNDY2NiwgNDY3MCwgNDY3NiwgNDQzNywgNDY4MSwgNDY4NSwgNDY4OCwgNDY5MywgNDY5OCwgNDcwMywgNDcwOCwgNDcxMywgCi0gICAgNDcxOCwgNDcyMywgNDcyOCwgNDczMywgNDczOCwgNDc0MiwgNDc0NywgNDc1MiwgNDc1NywgNDc2MiwgNDc2NywgNDc3MiwgCi0gICAgNDc3NywgNDc4MiwgNDc4NywgNDc5MiwgNDc5NiwgNDgwMSwgNDgwNiwgNDgxMSwgNDgxNiwgNDgyMSwgNDgyNiwgNDgzMSwgCi0gICAgNDgzNiwgNDg0MSwgNDg0NiwgNDg1MCwgNDg1NSwgNDg2MCwgNDg2NSwgNDg3MCwgNDg3NSwgNDg4MCwgNDg4NSwgNDg5MCwgCi0gICAgNDg5NSwgNDkwMCwgNDkwNCwgNDkwOSwgNDkxNCwgNDkxOSwgNDkyNCwgNDkyOSwgNDkzNCwgNDkzOSwgNDk0NCwgNDk0OSwgCi0gICAgNDk1NCwgNDk1OCwgNDk2MywgNDk2OCwgNDk3MywgNDk3OCwgNDk4MywgNDk4OCwgNDk5MywgNDk5OCwgNTAwMywgNTAwOCwgCi0gICAgNTAxMiwgNTAxNywgNTAyMiwgNTAyNywgNTAzMiwgNTAzNywgNTA0MiwgNTA0NywgNTA1MiwgNTA1NywgNTA2MiwgNTA2NiwgCi0gICAgNTA3MSwgNTA3NiwgNTA4MSwgNTA4NiwgNTA5MiwgNTA5OCwgNTEwNCwgNTExMCwgNTExNiwgNTEyMiwgNTEyOCwgNTEzMywgCi0gICAgNTEzOSwgNTE0NSwgNTE1MSwgNTE1NywgNTE2MywgNTE2OSwgNTE3NSwgNTE4MSwgNTE4NywgNTE5MywgNTE5OCwgNTIwNCwgCi0gICAgNTIxMCwgNTIxNiwgNTIyMiwgNTIyOCwgNTIzNCwgNTI0MCwgNTI0NiwgNTI1MiwgNTI1OCwgNTI2MywgNTI2OSwgNTI3NSwgCi0gICAgNTI4MSwgNTI4NywgNTI5MywgNTI5OSwgNTMwNSwgNTMxMSwgNTMxNywgNTMyMywgNTMyOCwgNTMzNCwgNTM0MCwgNTM0NiwgCi0gICAgNTM1MiwgNTM1OCwgNTM2NCwgNTM3MCwgNTM3NiwgNTM4MiwgNTM4OCwgNTM5MywgNTM5OSwgNTQwNSwgNTQxMSwgNTQxNywgCi0gICAgNTQyMywgNTQyOSwgNTQzNSwgNTQ0MSwgNTQ0NywgNTQ1MywgNTQ1OCwgNTQ2MiwgNTQ2OCwgNTQ3NCwgNTQ4MCwgNTQ4NiwgCi0gICAgNTQ5MiwgNTQ5OCwgNTUwNCwgNTUxMCwgNTUxNiwgNTUyMiwgNTUyNywgNTUzMywgNTUzOSwgNTU0NSwgNTU1MSwgNTU1NywgCi0gICAgNTU2MywgNTU2OSwgNTU3NSwgNTU4MSwgNTU4NywgNTU5MiwgNTU5OCwgNTYwNCwgNTYxMCwgNTYxNiwgNTYyMiwgNTYyOCwgCi0gICAgNTYzNCwgNTY0MCwgNTY0NiwgNTY1MiwgNTY1NywgNTY2MywgNTY2OSwgNTY3NSwgNTY4MSwgNTY4NywgNTY5MywgNTY5OSwgCi0gICAgNTcwNSwgNTcxMSwgNTcxNywgNTcyMiwgNTcyOCwgNTczNCwgNTc0MCwgNTc0NiwgNTc1MiwgNTc1OCwgNTc2NCwgNTc3MCwgCi0gICAgNTc3NiwgNTc4MiwgNTc4NywgNTc5MywgNTc5OSwgNTgwNSwgNTgxMSwgNTgxNywgNTgyMywgNTgyOSwgNTgzNSwgNTg0MSwgCi0gICAgNTg0NywgNTg1MiwgNTg1OCwgNTg2NCwgNTg3MCwgNTg3NiwgNTg4MiwgNTg4OCwgNTg5NCwgNTkwMCwgNTkwNiwgNTkxMiwgCi0gICAgNTkxNywgNTkyMywgNTkyOSwgNTkzNSwgNTk0MSwgNTk0NywgNTk1MywgNTk1OSwgNTk2NSwgNTk3MSwgNTk3NywgNTk4MiwgCi0gICAgNTk4OCwgNTk5NCwgNjAwMCwgNjAwNiwgNjAxMiwgNjAxOCwgNjAyNCwgNjAzMCwgNjAzNiwgNjA0MiwgNjA0NywgNjA1MywgCi0gICAgNjA1OSwgNjA2NSwgNjA3MSwgNjA3NywgNjA4MywgNjA4OSwgNjA5NSwgNjEwMSwgNjEwNywgNjExMiwgNjExNiwgNjExOSwgCi0gICAgNjEyNiwgNjEzMCwgNjE0MywgNjE0NywgNjE1MSwgNjE1NSwgNjE1OCwgNjE2MiwgNjE2NywgNjE3MSwgNjE3NSwgNjE4MSwgCi0gICAgNjE4OCwgNjE5OSwgNjIwNywgNjIxNCwgNjIxOCwgNjIyNiwgNjIzNSwgNjI0MSwgNjI1MywgNjI1OCwgNjI2MSwgNjI2NiwgCi0gICAgNjI3MCwgNjI4MCwgNjI4OCwgNjI5NiwgNjMwMiwgNjMwNiwgNjMxNiwgNjMyNiwgNjMzNCwgNjM0MSwgNjM0OCwgNjM1NCwgCi0gICAgNjM2MCwgNjM2NywgNjM3MSwgNjM3OCwgNjM4OCwgNjM5OCwgNjQwNiwgNjQxMywgNjQxOCwgNjQyMiwgNjQyNiwgNjQzNCwgCi0gICAgNjQzOCwgNjQ0MywgNjQ1MCwgNjQ1OCwgNjQ2MywgNjQ2NywgNjQ3MiwgNjQ3NiwgNjQ4MywgNjQ4OCwgNjUwMiwgNjUwNywgCi0gICAgNjUxMiwgNjUxOSwgMzU0MSwgNjUyOCwgNjUzMiwgNjUzNywgNjU0MSwgNjU0NSwgNjU0OCwgNjU1MywgNjU1OCwgNjU2NywgCi0gICAgNjU3MywgNjU3OSwgNjU4NSwgNjU4OSwgNjYwMCwgNjYxMCwgNjYyNSwgNjY0MCwgNjY1NSwgNjY3MCwgNjY4NSwgNjcwMCwgCi0gICAgNjcxNSwgNjczMCwgNjc0NSwgNjc2MCwgNjc3NSwgNjc5MCwgNjgwNSwgNjgyMCwgNjgzNSwgNjg1MCwgNjg2NSwgNjg4MCwgCi0gICAgNjg5NSwgNjkxMCwgNjkyNSwgNjk0MCwgNjk1NSwgNjk3MCwgNjk4NSwgNzAwMCwgNzAxNSwgNzAzMCwgNzA0NSwgNzA2MCwgCi0gICAgNzA3NSwgNzA5MCwgNzEwNSwgNzEyMCwgNzEzNSwgNzE1MCwgNzE2NSwgNzE4MCwgNzE5NSwgNzIxMCwgNzIyNSwgNzI0MCwgCi0gICAgNzI1NSwgNzI3MCwgNzI4NSwgNzMwMCwgNzMxNSwgNzMzMCwgNzM0NSwgNzM1NCwgNzM2MywgNzM2OCwgNzM3NCwgNzM4NCwgCi0gICAgNzM4OCwgNzM5MiwgNzM5NywgNzQwMiwgNzQxMCwgNzQxNCwgNzQxNywgNzQyMSwgMzAzNCwgNzQyNCwgNzQyOSwgMzMwLCAKLSAgICA1MDQsIDc0MzUsIDc0NDMsIDc0NDcsIDc0NTEsIDc0NTQsIDc0NTgsIDc0NjQsIDc0NjgsIDc0NzYsIDc0ODIsIDc0ODcsIAotICAgIDc0OTQsIDc1MDIsIDc1MDksIDc1MTUsIDc1MjAsIDc1MjcsIDc1MzMsIDc1NDEsIDc1NDUsIDc1NTAsIDc1NjIsIDc1NzMsIAotICAgIDc1ODAsIDc1ODQsIDc1ODgsIDc1OTIsIDc1OTUsIDc2MDEsIDMzMTEsIDc2MDUsIDc2MTEsIDc2MTYsIDc2MjEsIDc2MjYsIAotICAgIDc2MzIsIDc2MzcsIDc2NDIsIDc2NDcsIDc2NTIsIDc2NTgsIDc2NjMsIDc2NjgsIDc2NzQsIDc2NzksIDc2ODUsIDc2OTAsIAotICAgIDc2OTYsIDc3MDEsIDc3MDcsIDc3MTIsIDc3MTcsIDc3MjIsIDc3MjcsIDc3MzIsIDc3MzgsIDc3NDMsIDc3NDgsIDc3NTMsIAotICAgIDc3NTksIDc3NjUsIDc3NzEsIDc3NzcsIDc3ODMsIDc3ODksIDc3OTUsIDc4MDEsIDc4MDcsIDc4MTMsIDc4MTksIDc4MjUsIAotICAgIDc4MzAsIDc4MzUsIDc4NDAsIDc4NDUsIDc4NTAsIDc4NTUsIDc4NjAsIDc4NjUsIDc4NzEsIDc4NzcsIDc4ODIsIDc4ODgsIAotICAgIDc4OTQsIDc5MDAsIDc5MDUsIDc5MTAsIDc5MTUsIDc5MjAsIDc5MjYsIDc5MzIsIDc5MzcsIDc5NDIsIDc5NDcsIDc5NTIsIAotICAgIDc5NTcsIDc5NjMsIDc5NjgsIDc5NzQsIDc5ODAsIDc5ODYsIDc5OTIsIDc5OTgsIDgwMDQsIDgwMTAsIDgwMTYsIDgwMjIsIAotICAgIDIxNjQsIDc0NTMsIDgwMjcsIDgwMzEsIDgwMzUsIDgwMzgsIDgwNDUsIDgwNDgsIDgwNTIsIDgwNjAsIDgwNjUsIDgwNzAsIAotICAgIDgwNjEsIDgwNzUsIDIxOTEsIDgwNzksIDgwODUsIDgwOTEsIDgwOTYsIDgxMDEsIDgxMDgsIDgxMTYsIDgxMjEsIDgxMjUsIAotICAgIDgxMjgsIDgxMzIsIDgxMzgsIDgxNDQsIDgxNDgsIDIxOTksIDUyNiwgODE1MSwgODE1NSwgODE2MCwgODE2NiwgODE3MSwgCi0gICAgODE3NSwgODE3OCwgODE4MiwgODE4OCwgODE5MywgODE5NywgODIwNCwgODIwOCwgODIxMiwgODIxNiwgODc2LCA5NTgsIAotICAgIDgyMTksIDgyMjcsIDgyMzQsIDgyNDAsIDgyNDcsIDgyNTUsIDgyNjIsIDgyNzMsIDgyODAsIDgyODYsIDgyOTEsIDgzMDMsIAotICAgIDEyMjgsIDEzOTMsIDEzOTgsIDgzMTQsIDE0MDMsIDgzMTgsIDgzMjIsIDgzMzEsIDgzMzksIDgzNDMsIDgzNTIsIDgzNTgsIAotICAgIDgzNjMsIDgzNjcsIDgzNzMsIDgzNzgsIDgzODUsIDI3NDUsIDgzOTIsIDgzOTYsIDg0MDUsIDg0MTQsIDg0MjMsIDg0MzIsIAotICAgIDg0MzgsIDg0NDMsIDg0NDgsIDg0NTksIDg0NzEsIDg0NzYsIDg0ODQsIDIyNTAsIDg0ODgsIDg0OTAsIDg0OTUsIDg0OTksIAotICAgIDg1MDgsIDg1MTYsIDE0MDcsIDE1OSwgMzU4MywgMzU4OCwgODUyMiwgODUyNiwgODUzNSwgODU0MSwgODU0NiwgODU0OSwgCi0gICAgODU1OCwgMzU5MiwgMjczNywgODU2NCwgODU3MiwgODU3NiwgODU4MCwgODU4NCwgMjI2NywgODU4OCwgODU5MywgODYwMCwgCi0gICAgODYwNiwgODYxMiwgODYxNSwgODYxNywgODYyMCwgODYyOCwgODYzNiwgODY0NCwgODY0NywgODY1MiwgMjI4MCwgODY1NywgCi0gICAgODA3MiwgODY2MCwgODY2MiwgODY2NywgODY3MiwgODY3NywgODY4MiwgODY4NywgODY5MiwgODY5NywgODcwMiwgODcwNywgCi0gICAgODcxMiwgODcxOCwgODcyMywgODcyOCwgODczMywgODczOSwgODc0NCwgODc0OSwgODc1NCwgODc1OSwgODc2NCwgODc2OSwgCi0gICAgODc3NSwgODc4MCwgODc4NSwgODc5MCwgODc5NSwgODgwMCwgODgwNSwgODgxMCwgODgxNSwgODgyMCwgODgyNSwgODgzMCwgCi0gICAgODgzNSwgODg0MCwgODg0NSwgODg1MCwgODg1NSwgODg2MCwgODg2NiwgODg3MiwgODg3NywgODg4MiwgODg4NywgODg5MiwgCi0gICAgODg5NywgMjI5MSwgMjI5OCwgMjMwNCwgODkwMiwgODkxMCwgODkxNiwgODkyNCwgMjMzMCwgMjMzNiwgODkzMiwgODkzNiwgCi0gICAgODk0MSwgODk0NSwgODk0OSwgODk1MywgODk1OCwgODk2MiwgODk2NywgODk3MSwgODk3NCwgODk3NywgODk4MywgODk5MCwgCi0gICAgODk5NiwgOTAwMywgOTAwOSwgOTAxNiwgOTAyMiwgOTAyOSwgOTAzNSwgOTA0MSwgOTA1MCwgOTA1NiwgOTA2MCwgOTA2NCwgCi0gICAgOTA2OCwgOTA3MiwgOTA3NywgOTA4MSwgOTA4NiwgOTA5MCwgOTA5NiwgOTEwMSwgOTEwOCwgOTExOSwgOTEyNywgOTEzNywgCi0gICAgOTE0MywgOTE1MywgOTE2MiwgOTE2OSwgOTE3NCwgOTE3OCwgOTE4OSwgOTIwMiwgOTIxMywgOTIyNiwgOTIzNywgOTI0OSwgCi0gICAgOTI2MSwgOTI3MywgOTI4NiwgOTI5OSwgOTMwNiwgOTMxMiwgOTMyNiwgOTMzMywgOTMzOSwgOTM0OCwgOTM1NiwgOTM2MCwgCi0gICAgOTM2NSwgOTM2OSwgOTM3NiwgOTM4NCwgOTM4OCwgOTM5NCwgOTM5OCwgOTQwNCwgOTQxNCwgOTQxOCwgOTQyMywgOTQyOCwgCi0gICAgOTQzNSwgOTQ0MSwgOTQ1MSwgODI0MiwgOTQ1NywgOTQ2MSwgOTQ2OCwgOTQ3NCwgOTQ4MSwgOTQ4OCwgOTU3LCA5NDkyLCAKLSAgICA5NDk2LCA5NTAxLCA5NTA2LCA5NTExLCA5NTE1LCA5NTIxLCA5NTI5LCA5NTM1LCA5NTM5LCA5NTQyLCA5NTQ4LCA5NTU4LCAKLSAgICA5NTYyLCA5NTY4LCA5NTczLCA5NTc3LCA5NTgxLCA5NTg3LCA5NTkzLCAyMTg3LCA5NTk4LCA5NjAwLCA5NjA1LCA5NjEzLCAKLSAgICA5NjIyLCA5NjI2LCA5NjMyLCA5NjM3LCA5NjQyLCA5NjQ3LCA5NjUyLCA5NjU4LCA5NjYzLCA5NjY4LCA0MjM1LCA5NjczLCAKLSAgICA5Njc4LCA5NjgyLCA5Njg4LCA5NjkzLCA5Njk5LCA5NzA0LCA5NzA5LCA5NzE1LCA5NzIwLCA5NjI3LCA5NzI2LCA5NzMwLCAKLSAgICA5NzM3LCA5NzQzLCA5NzQ4LCA5NzUyLCA2NDk4LCA5NzU3LCA5NzY2LCA5NzcxLCA5Nzc2LCA4NTk2LCA4NjAzLCA5NzgxLCAKLSAgICAyOTEyLCA5Nzg1LCA5NzkwLCA5Nzk1LCA5ODAwLCA5NjM4LCA5ODA0LCA5ODA5LCA5ODE0LCA5NjQzLCA5ODE4LCA5NjQ4LCAKLSAgICA5ODIzLCA5ODMwLCA5ODM3LCA5ODQzLCA5ODUwLCA5ODU2LCA5ODYyLCA5ODY3LCA5ODc0LCA5ODc5LCA5ODg0LCA5ODg5LCAKLSAgICA5ODk1LCA5NjUzLCA5NjU5LCA5OTAxLCA5OTA3LCA5OTEyLCA5OTE3LCA5OTI1LCA5NjY0LCA5OTMwLCAxMTAyLCA5OTMzLCAKLSAgICA5OTQxLCA5OTQ3LCA5OTUzLCA5OTYyLCA5OTcwLCA5OTc4LCA5OTg2LCA5OTk0LCAxMDAwMiwgMTAwMTAsIDEwMDE4LCAKLSAgICAxMDAyNiwgMTAwMzUsIDEwMDQ0LCAxMDA1MiwgMTAwNjEsIDEwMDcwLCAxMDA3OSwgMTAwODgsIDEwMDk3LCAxMDEwNiwgCi0gICAgMTAxMTUsIDEwMTI0LCAxMDEzMywgMTAxNDIsIDEwMTUwLCAxMDE1NSwgMTAxNjEsIDEwMTY5LCAxMDE3NiwgMTAxOTEsIAotICAgIDEwMjA4LCAxMDIyNywgMTAyMzYsIDEwMjQ0LCAxMDI1OSwgMTAyNzAsIDEwMjgwLCAxMDI5MCwgMTAyOTgsIDEwMzA0LCAKLSAgICAxMDMxNiwgMTAzMjUsIDEwMzMzLCAxMDM0MCwgMTAzNDcsIDEwMzU0LCAxMDM2MCwgMTAzNjUsIDEwMzc1LCAxMDM4MywgCi0gICAgMTAzOTMsIDEwNDAwLCAxMDQxMCwgMTA0MjAsIDEwNDMwLCAxMDQzOCwgMTA0NDUsIDEwNDU0LCAxMDQ2NCwgMTA0NzgsIAotICAgIDEwNDkzLCAxMDUwMiwgMTA1MTAsIDEwNTE1LCAxMDUxOSwgMTA1MjgsIDEwNTM0LCAxMDUzOSwgMTA1NDksIDEwNTU5LCAKLSAgICAxMDU2OSwgMTA1NzQsIDEwNTc4LCAxMDU4NywgMTA1OTIsIDEwNjA4LCAxMDYyNSwgMTA2MzUsIDEwNjQ2LCAxMDY1OSwgCi0gICAgMTA2NjcsIDEwNjgwLCAxMDY5MiwgMTA3MDAsIDEwNzA1LCAxMDcwOSwgMTA3MTUsIDEwNzIwLCAxMDcyOCwgMTA3MzYsIAotICAgIDEwNzQzLCAxMDc0OCwgMTA3NTYsIDEwNzY2LCAxMDc3MiwgMTA3NzYsIDEwNzc5LCAxMDc4MywgMTA3ODksIDEwNzk2LCAKLSAgICAxMDgwMCwgMTA4MDgsIDEwODE3LCAxMDgyNSwgMTA4MzIsIDEwODM3LCAxMDg0MiwgMTA4NDYsIDEwODUwLCAxMDg1OCwgCi0gICAgMTA4NzMsIDEwODg5LCAxMDg5NSwgMTA5MDMsIDEwOTEyLCAxMDkyMCwgMTA5MjYsIDEwOTMwLCAxMDkzNywgMTA5NDgsIAotICAgIDEwOTUyLCAxMDk1NSwgMTA5NjEsIDk2NjksIDEwOTY2LCAxMDk3MiwgMTA5NzksIDEwOTg1LCAxMDk5MCwgMTA5OTcsIAotICAgIDExMDA0LCAxMTAxMSwgMTEwMTgsIDExMDI1LCAxMTAzMiwgMTEwMzksIDExMDQ2LCAxMTA1MSwgMTAyMDQsIDExMDU2LCAKLSAgICAxMTA2MiwgMTEwNjksIDExMDc2LCAxMTA4MSwgMTEwODgsIDExMDk3LCAxMTEwMSwgMTExMTMsIDg2MzQsIDExMTE3LCAKLSAgICAxMTEyMCwgMTExMjQsIDExMTI4LCAxMTEzMiwgMTExMzYsIDExMTQyLCAxMTE0OCwgMTExNTMsIDExMTU5LCAxMTE2NCwgCi0gICAgMTExNjksIDExMTc1LCAxMTE4MCwgMTExODUsIDk0MzEsIDExMTkwLCAxMTE5NCwgMTExOTgsIDExMjAyLCAxMTIwNywgCi0gICAgMTEyMTIsIDExMjE3LCAxMTIyNSwgMTEyMzEsIDExMjM2LCAxMTI0MCwgMTEyNDQsIDExMjUxLCAxMTI1NiwgMTEyNjQsIAotICAgIDExMjcxLCAxMTI3NiwgMTEyODAsIDExMjgzLCAxMTI4OSwgMTEyOTYsIDExMzAwLCAxMTMwMywgMTEzMDgsIDExMzEyLCAKLSAgICA0Mjc0LCAxMTMxOCwgMTEzMjcsIDQ2LCAxMTMzNSwgMTEzNDEsIDExMzQ2LCAxMTM1MSwgMTEzNTksIDExMzY2LCAxMTM3MSwgCi0gICAgOTQ0NiwgMTEzNzcsIDExMzgzLCAxMTM4OCwgMTEzOTIsIDExMzk1LCAxMTQxMCwgMTE0MjksIDExNDQxLCAxMTQ1NCwgCi0gICAgMTE0NjcsIDExNDgwLCAxMTQ5NCwgMTE1MDcsIDExNTIyLCAxMTUyOSwgOTY3NCwgMTE1MzUsIDExNTQ5LCAxMTU1NCwgCi0gICAgMTE1NjAsIDExNTY1LCAxMTU3MywgMTE1NzgsIDg0MDEsIDExNTgzLCAxMTU4NiwgMTE1OTQsIDExNjAxLCAxMTYwNiwgCi0gICAgMTE2MTAsIDExNjE2LCAyOTE3LCAxMDI3OCwgMTE2MjAsIDExNjI0LCAxMTYzMCwgMTE2MzYsIDExNjQxLCAxMTY0NywgCi0gICAgMTE2NTIsIDk2ODMsIDExNjU4LCAxMTY2NCwgMTE2NjksIDExNjc0LCAxMTY4MiwgMTE2ODgsIDExNzAxLCAxMTcwOSwgCi0gICAgMTE3MTYsIDExNzIyLCA5Njg5LCAxMTcyOCwgMTE3MzYsIDExNzQ0LCAxMTc1MSwgMTE3NjQsIDExNzc3LCAxMTc4OSwgCi0gICAgMTE3OTksIDExODA3LCAxMTgxNCwgMTE4MjYsIDExODMzLCAxMTg0MywgMTE4NTIsIDExODYxLCAxMTg2OSwgMTE4NzYsIAotICAgIDExODgxLCAxMTg4NywgOTY5NCwgMTE4OTIsIDExODk4LCAxMTkwMywgMTE5MDgsIDk3MDAsIDExOTEzLCAxMTkxNiwgCi0gICAgMTE5MjMsIDExOTI5LCAxMTk0MiwgOTExMiwgMTE5NTMsIDExOTU5LCAxMTk2OCwgMTE5NzYsIDExOTgzLCAxMTk4OSwgCi0gICAgMTIwMDAsIDEyMDA2LCAxMjAxMSwgMzgzNiwgMTIwMTksIDEyMDI0LCAxMTQwMiwgMTIwMzAsIDEyMDM3LCAxMjA0MiwgCi0gICAgOTcwNSwgMTIwNDgsIDEyMDUzLCAxMjA2MCwgMTIwNjYsIDEyMDcyLCAxMjA3NywgMTIwODUsIDEyMDkzLCAxMjEwMCwgCi0gICAgMTIxMDQsIDEyMTE2LCAxMjEzMCwgMTIxNDAsIDEyMTQ1LCAxMjE0OSwgMTIxNjAsIDEyMTY2LCAxMjE3MSwgMTIxNzYsIAotICAgIDk3MTAsIDEyMTgwLCA5NzE2LCAxMjE4NSwgMTIxODgsIDEyMTkzLCAxMjIwNSwgMTIyMTIsIDEyMjE3LCAxMjIyMSwgCi0gICAgMTIyMjksIDEyMjM0LCAxMjIzOCwgMTIyNDMsIDEyMjQ3LCAxMjI1NCwgMTIyNjAsIDk3MjEsIDk2MjgsIDEyMjY3LCAyOTIyLCAKLSAgICAxMiwgMTIyNzQsIDEyMjc5LCAxMjI4MywgMTIyODcsIDEyMjkzLCAxMjMwMSwgMTIzMTEsIDEyMzE2LCAxMjMyMSwgMTIzMjgsIAotICAgIDEyMzM1LCAxMjMzOSwgMTIzNTAsIDEyMzYwLCAxMjM2OSwgMTIzNzgsIDEyMzkwLCAxMjM5NSwgMTIzOTksIDEyNDA3LCAKLSAgICAxMjQyMSwgMTI0MjUsIDEyNDI4LCAxMjQzNiwgMTI0NDMsIDEyNDUxLCAxMjQ1NSwgMTI0NjYsIDEyNDcwLCAxMjQ3NywgCi0gICAgMTI0ODIsIDEyNDg2LCAxMjQ5MiwgMTI0OTcsIDEyNTAzLCAxMjUwOCwgMTI1MTMsIDEyNTE3LCAxMjUyMywgMTI1MjgsIAotICAgIDEyNTM5LCAxMjU0MywgMTI1NDYsIDEyNTUyLCAxMjU1NywgMTI1NjMsIDEyNTY5LCAxMjU3NiwgMTI1ODcsIDEyNTk3LCAKLSAgICAxMjYwNywgMTI2MTYsIDEyNjIzLCAxMjYzMiwgMTI2MzYsIDk3MzEsIDk3MzgsIDk3NDQsIDk3NDksIDEyNjQyLCAxMjY0OCwgCi0gICAgMTI2NTQsIDEyNjU5LCAxMjY2NSwgOTc1MywgMTI2NzEsIDEyNjc0LCAxMjY4MSwgMTI2ODYsIDEyNzAxLCAxMjcxNywgCi0gICAgMTI3MzIsIDEyNzQwLCAxMjc0NiwgMTI3NTEsIDk1MCwgMzc0LCAxMjc1NiwgMTI3NjQsIDEyNzcxLCAxMjc3NywgMTI3ODIsIAotICAgIDEyNzg3LCA5NzU4LCAxMjc4OSwgMTI3OTMsIDEyNzk4LCAxMjgwMiwgMTI4MTIsIDEyODE3LCAxMjgyMSwgMTI4MzAsIAotICAgIDEyODM0LCAxMjgzNywgMTI4NDQsIDk3NjcsIDEyODQ5LCAxMjg1MiwgMTI4NjAsIDEyODY3LCAxMjg3NSwgMTI4NzksIAotICAgIDEyODgzLCAxMjg5MCwgMTI4OTksIDEyOTA2LCAxMjkwMiwgMTI5MTMsIDEyOTE3LCAxMjkyMywgMTI5MjcsIDEyOTMxLCAKLSAgICAxMjkzNSwgMTI5NDEsIDEyOTUxLCAxMjk1OSwgMTI5NjYsIDEyOTcwLCAxMjk3OCwgMTI5ODIsIDEyOTg5LCAxMjk5MywgCi0gICAgMTI5OTgsIDEzMDAyLCAxMzAwOSwgMTMwMTUsIDEzMDIzLCAxMzAyOSwgMTMwMzQsIDEzMDQ0LCAxMzA0OSwgMTMwNTQsIAotICAgIDEzMDU4LCAxMzA2MiwgMTMwNzAsIDQxMjQsIDEzMDc4LCAxMzA4MywgOTc3MiwgMTMwODcsIDEzMDkxLCAxMzA5NCwgCi0gICAgMTMxMDIsIDEzMTA5LCAxMzExMywgNjI5OCwgMTMxMTcsIDEzMTIyLCAxMzEyNywgMTMxMzEsIDEzMTQyLCAxMzE1MiwgCi0gICAgMTMxNTcsIDEzMTYzLCAxMzE2OCwgMTMxNzIsIDEzMTc1LCAxMzE4MywgMTMxODgsIDEzMTkzLCAxMzIwMCwgMTMyMDUsIAotICAgIDk3NzcsIDEzMjEwLCAxMzIxNCwgMTMyMjEsIDE3MzcsIDY0NTYsIDEzMjI2LCAxMzIzMSwgMTMyMzYsIDEzMjQxLCAxMzI0NywgCi0gICAgMTMyNTIsIDEzMjU4LCAxMzI2MywgMTMyNjgsIDEzMjczLCAxMzI3OCwgMTMyODMsIDEzMjg4LCAxMzI5MywgMTMyOTgsIAotICAgIDEzMzAzLCAxMzMwOCwgMTMzMTMsIDEzMzE4LCAxMzMyMywgMTMzMjgsIDEzMzMzLCAxMzMzOCwgMTMzNDQsIDEzMzQ5LCAKLSAgICAxMzM1NCwgMTMzNTksIDEzMzY0LCAxMzM2OSwgMTMzNzUsIDEzMzgwLCAxMzM4NSwgMTMzOTEsIDEzMzk2LCAxMzQwMiwgCi0gICAgMTM0MDcsIDEzNDEzLCAxMzQxOCwgMTM0MjMsIDEzNDI4LCAxMzQzMywgMTM0MzksIDEzNDQ0LCAxMzQ0OSwgMTM0NTQsIAotICAgIDkwOSwgMTEyLCAxMzQ2MiwgMTM0NjYsIDEzNDcxLCAxMzQ3NiwgMTM0ODAsIDEzNDg0LCAxMzQ4OCwgMTM0OTMsIDEzNDk3LCAKLSAgICAxMzUwMiwgMTM1MDYsIDEzNTA5LCAxMzUxMywgMTM1MTcsIDEzNTIzLCAxMzUyOCwgMTM1MzgsIDEzNTQ0LCAxMzU1MiwgCi0gICAgMTM1NTgsIDEzNTYyLCAxMzU2NiwgMTM1NzMsIDEzNTgxLCAxMzU5MCwgMTM2MDEsIDEzNjExLCAxMzYxOCwgMTM2MjUsIAotICAgIDEzNjI5LCAxMzYzOCwgMTM2NDcsIDEzNjU1LCAxMzY2NCwgMTM2NzMsIDEzNjgyLCAxMzY5MSwgMTM3MDEsIDEzNzExLCAKLSAgICAxMzcyMSwgMTM3MzEsIDEzNzQxLCAxMzc1MCwgMTM3NjAsIDEzNzcwLCAxMzc4MCwgMTM3OTAsIDEzODAwLCAxMzgxMCwgCi0gICAgMTM4MjAsIDEzODI5LCAxMzgzOSwgMTM4NDksIDEzODU5LCAxMzg2OSwgMTM4NzksIDEzODg5LCAxMzg5OCwgMTM5MDgsIAotICAgIDEzOTE4LCAxMzkyOCwgMTM5MzgsIDEzOTQ4LCAxMzk1OCwgMTM5NjgsIDEzOTc4LCAxMzk4OCwgMTM5OTcsIDE0MDA3LCAKLSAgICAxNDAxNywgMTQwMjcsIDE0MDM3LCAxNDA0NywgMTQwNTcsIDE0MDY3LCAxNDA3NywgMTQwODcsIDE0MDk3LCAxNDEwNiwgCi0gICAgMTIzNywgMTQxMTIsIDE0MTE1LCAxNDExOSwgMTQxMjQsIDE0MTMxLCAxNDEzNywgMTQxNDIsIDE0MTQ2LCAxNDE1MSwgCi0gICAgMTQxNjAsIDE0MTY4LCAxNDE3MywgMTQxNzcsIDE0MTgxLCAxNDE4NywgMTQxOTIsIDE0MTk4LCA5Nzg2LCAxNDIwMywgCi0gICAgMTQyMDgsIDE0MjE3LCA5Nzk2LCAxNDIyMiwgMTQyMjUsIDE0MjMxLCAxNDIzOSwgOTgwMSwgMTQyNDYsIDE0MjUwLCAKLSAgICAxNDI1NCwgMTQyNTksIDE0MjYzLCAxNDI3MywgMTQyNzksIDE0Mjg1LCAxNDI5MCwgMTQyOTksIDE0MzA3LCAxNDMxNCwgCi0gICAgMTQzMjEsIDE0MzI2LCAxNDMzMywgMTQzMzgsIDE0MzQyLCAxNDM0NSwgMTQzNTYsIDE0MzY2LCAxNDM3NSwgMTQzODMsIAotICAgIDE0Mzk0LCAxNDQwNiwgMTQ0MTYsIDE0NDIxLCAxNDQyNSwgMTQ0MzAsIDE0NDM1LCAxNDQzOSwgMTQ0NDUsIDE0NDUzLCAKLSAgICAxNDQ2MCwgMTQ0NzEsIDE0NDc2LCAxNDQ4NiwgMTQ0OTUsIDE0NDk5LCAxNDUwMiwgMTQ1MDksIDE0NTE5LCAxNDUyOCwgCi0gICAgMTQ1MzUsIDE0NTM5LCAxNDU0NiwgMTQ1NTIsIDE0NTU3LCAxNDU2MiwgMTQ1NjYsIDE0NTc1LCAxNDU4MCwgMTQ1ODQsIAotICAgIDE0NTkwLCAxNDU5NCwgMTQ1OTksIDE0NjAzLCAxNDYxMCwgMTQ2MTcsIDE0NjIxLCAxNDYzMCwgMTQ2MzgsIDE0NjQ2LCAKLSAgICAxNDY1MywgMTQ2NjEsIDE0NjczLCAxNDY4NCwgMTQ2OTQsIDE0NzAxLCAxNDcwNywgMTQ3MTYsIDE0NzI3LCAxNDczNiwgCi0gICAgMTQ3NDgsIDE0NzYwLCAxNDc3MiwgMTQ3ODIsIDE0NzkxLCAxNDgwMCwgMTQ4MDgsIDE0ODE1LCAxNDgyNCwgMTQ4MzIsIAotICAgIDE0ODM2LCAxNDg0MSwgMTQ4NDcsIDE0ODUzLCAxNDg1OCwgMTQ4NjMsIDgwOTMsIDE0ODY3LCAxNDg2OSwgMTQ4NzMsIAotICAgIDE0ODc4LCAxNDg4NCwgMTQ4OTAsIDE0ODk5LCAxNDkwMywgMTQ5MDksIDE0OTE3LCAxNDkyNCwgMTQ5MzMsIDE0OTQyLCAKLSAgICAxNDk1MSwgMTQ5NjAsIDE0OTY5LCAxNDk3OCwgMTQ5ODcsIDE0OTk2LCAxNTAwNiwgMTUwMTYsIDE1MDI1LCAxNTAzMSwgCi0gICAgMTUwMzgsIDE1MDQ1LCAxNTA1MSwgMTUwNjUsIDE1MDcxLCAxNTA3OCwgMTUwODYsIDE1MDk1LCAxNTEwMywgMTUxMDksIAotICAgIDE1MTE4LCAxNTEyNywgMTUxMzgsIDE1MTQ4LCAxNTE1NiwgMTUxNjMsIDE1MTcxLCAxNTE4MCwgMTUxOTMsIDE1MjAyLCAKLSAgICAxNTIxMCwgMTUyMTcsIDE1MjMwLCAxNTIzNiwgMTUyNDIsIDE1MjUyLCAxNTI2MSwgMTUyNzAsIDE1Mjc1LCAxNTI3OSwgCi0gICAgMTUyODUsIDE1MjkxLCAxNTI5NiwgMTUzMDMsIDE1MzEwLCA5NDQ1LCAxNTMxNSwgMTUzMjAsIDE1MzI3LCAxNTMzNSwgCi0gICAgMTUzNDAsIDE1MzQ3LCAxNTM1MiwgMTUzNjQsIDEzNTE5LCAxNTM2OSwgMTUzNzcsIDE1MzgzLCAxNTM4OCwgMTUzOTYsIAotICAgIDE1NDA0LCAxNTQxMSwgMTU0MTksIDE1NDI1LCAxNTQzMywgMTU0NDEsIDE1NDQ3LCAxNTQ1MiwgMTU0NTgsIDE1NDY1LCAKLSAgICAxNTQ3MSwgMTU0NzYsIDE1NDgwLCAxNTQ5MSwgMTU0OTksIDE1NTA1LCAxNTUxMCwgMTU1MTcsIDE1NTI2LCAxNTUzMiwgCi0gICAgMTU1MzcsIDE1NTQ1LCAxNTU1NCwgMTU1NjgsIDQwNjgsIDE1NTcyLCAxNTU3NywgMTU1ODIsIDE1NTg4LCAxNTU5MywgCi0gICAgMTU1OTgsIDE1NjAyLCAxNTYwNywgMTU2MTIsIDE1NjE3LCA4MDkyLCAxNTYyMiwgMTU2MjcsIDE1NjMyLCAxNTYzNywgCi0gICAgMTU2NDIsIDE1NjQ2LCAxNTY1MSwgMTU2NTYsIDE1NjYxLCAxNTY2NiwgMTU2NzIsIDE1Njc4LCAxNTY4MywgMTU2ODcsIAotICAgIDE1NjkzLCAxNTY5OCwgMTU3MDMsIDE1NzA4LCA5ODA1LCAxNTcxMywgMTU3MTgsIDE1NzIzLCAxNTcyOCwgMTU3MzMsIAotICAgIDE1NzUwLCAxNTc2OCwgMTU3ODAsIDE1NzkzLCAxNTgxMCwgMTU4MjYsIDE1ODQzLCAxNTg1MywgMTU4NzIsIDE1ODgzLCAKLSAgICAxNTg5NCwgMTU5MDUsIDE1OTE2LCAxNTkyOCwgMTU5MzksIDE1OTUwLCAxNTk2NywgMTU5NzgsIDE1OTg5LCAxNTk5NCwgCi0gICAgOTgxMCwgMTU5OTksIDE2MDAzLCAyNDIwLCAxNjAwNywgMTYwMTAsIDE2MDE2LCAxNjAyNCwgMTYwMzIsIDE2MDQxLCAKLSAgICAxNjA0OCwgMTYwNTMsIDE2MDYxLCAxNjA2OSwgMTYwNzYsIDE2MDgwLCAxNjA4NSwgMTYwOTEsIDE2MDk4LCAxNjEwNiwgCi0gICAgMTYxMTMsIDE2MTI1LCAxNjEzMiwgMTYxMzgsIDE2MTQ2LCAxNjE1MSwgMTYxNTcsIDEyNjk1LCAxNjE2MywgMTYxNzIsIAotICAgIDE2MTc4LCAxNjE4MywgMTYxOTEsIDE2MjAwLCAxNjIwOCwgMTYyMTUsIDE2MjIxLCAxNjIyOSwgMTYyMzYsIDE2MjQyLCAKLSAgICAxNjI0OCwgMTYyNTUsIDE2MjYyLCAxNjI2OCwgMTYyNzQsIDE2MjgzLCAxNjI5MSwgMTYzMDEsIDE2MzA4LCAxNjMxNCwgCi0gICAgMTYzMjIsIDE2MzI4LCAxNjMzNiwgMTYzNDQsIDE2MzUxLCAxNjM2NCwgMTYzNzEsIDE2MzgwLCAxNjM4OSwgMTYzOTgsIAotICAgIDE2NDA2LCAxNjQxNiwgMTY0MjMsIDE2NDI4LCAzNzI3LCAxNjQzNSwgMTY0NDAsIDEzNTMsIDE2NDQ0LCAxNTYyMywgCi0gICAgMTY0NDgsIDE2NDU0LCAxNjQ1OCwgMTY0NjYsIDE2NDc4LCAxNjQ4MywgMTY0OTAsIDE2NDk2LCAxNjUwMSwgMTY1MDgsIAotICAgIDE1NjI4LCAxNjUxMiwgMTY1MTYsIDE2NTIwLCAxNTYzMywgMTY1MjQsIDE1NjM4LCAxNjUyOCwgMTY1MzUsIDE2NTQwLCAKLSAgICAxNjU0NCwgMTY1NTEsIDE2NTU1LCAxNjU2MywgMTY1NzAsIDE2NTc1LCAxNjU3OSwgMTY1ODYsIDE2NjAzLCAxNjYxMiwgCi0gICAgMTY2MTYsIDE2NjE5LCAxNjYyNywgMTY2MzMsIDE2NjM4LCAzODA1LCAxNjY0MiwgMTY2NDQsIDE2NjUyLCAxNjY1OSwgCi0gICAgMTY2NjksIDE2NjgxLCAxNjY4NiwgMTY2OTAsIDE2Njk2LCAxNjcwMSwgMTY3MDUsIDE2NzExLCAxNjcxNiwgMTY3MjIsIAotICAgIDE2NzI1LCAxNjczMiwgMTY3NDAsIDE2NzQ3LCAxNjc1MywgMTY3NTgsIDE2NzY0LCAxNjc2OSwgMTY3NzYsIDE2NzgyLCAKLSAgICAxNjc4NywgMTY3OTQsIDE2Nzk5LCAxNjgwMywgMTY4MDksIDE2ODEzLCAxNjgyMCwgMTY4MjYsIDE2ODMxLCAxNjgzNywgCi0gICAgMTY4NDUsIDE2ODUzLCAxNjg2MCwgMTY4NjYsIDE2ODcxLCAxNjg3NywgMTY4ODMsIDE2ODkxLCAxNjg5OSwgMTY5MDUsIAotICAgIDE2OTExLCAxNjkxNiwgMTY5MjMsIDE2OTI4LCAxNjkzMiwgMTY5MzgsIDE2OTQzLCAxNjk1MCwgMTY5NTUsIDE2OTYxLCAKLSAgICAxNjk2NCwgMTY5NzAsIDE2OTc2LCAxNjk3OSwgMTY5ODMsIDE2OTg3LCAxNjk5OSwgMTcwMDUsIDE3MDEwLCAxNzAxNywgCi0gICAgMTcwMjMsIDE3MDI5LCAxNzA0MCwgMTcwNTAsIDE3MDU5LCAxNzA2NywgMTcwNzQsIDE3MDg1LCAxNzA5NSwgMTcxMDUsIAotICAgIDE3MTEzLCAxNzExNiwgMTU2NTIsIDE3MTIxLCAxNzEyNiwgMTU2NTcsIDE1Nzk4LCAxNzEzNCwgMTcxNDcsIDE3MTYyLCAKLSAgICAxNzE3MywgMTU4MTUsIDE3MTkxLCAxNzIwNCwgMTcyMTcsIDE3MjI4LCAxMTQxNywgMTcyMzksIDE3MjUyLCAxNzI3MSwgCi0gICAgMTcyODIsIDE3MjkzLCAxNzMwNCwgMjY4OCwgMTczMTcsIDE3MzIxLCAxNzMyOSwgMTczNDAsIDE3MzQ4LCAxNzM2MywgCi0gICAgMTczNzgsIDE3Mzg5LCAxNzM5NiwgMTc0MDIsIDE3NDEwLCAxNzQxNCwgMTc0MjAsIDE3NDIzLCAxNzQzNiwgMTc0NDgsIAotICAgIDE3NDU4LCAxNzQ2NiwgMTc0NzMsIDE3NDgxLCAxNzQ5MSwgMTc0OTYsIDE3NTAzLCAxNzUwOCwgMTc1MTUsIDE3NTI2LCAKLSAgICAxNzUzNiwgMTc1NDIsIDE3NTQ3LCAxNzU1MiwgMTU2NjIsIDE3NTU2LCAxNzU2MiwgMTc1NjgsIDE3NTczLCAxNzU3OCwgCi0gICAgMTc1ODMsIDE3NTg3LCAxNTY2NywgMTU2NzMsIDE3NTkxLCAxNTY3OSwgMTc1OTYsIDE3NjA0LCAxNzYwOSwgMTc2MTMsIAotICAgIDE3NjIxLCAxNzYzMCwgMTc2MzcsIDE3NjQxLCA5NjQ5LCAxNzY0NSwgMTc2NDcsIDE3NjUyLCAxNzY1NywgMTc2NjMsIAotICAgIDE3NjY4LCAxNzY3MywgMTc2NzgsIDE3NjgzLCAxNzY4NywgMTc2OTMsIDE3Njk5LCAxNzcwNCwgMTc3MTAsIDE3NzE1LCAKLSAgICAxNzcyMCwgMTc3MjQsIDE3NzMwLCAxNzczNSwgMTc3NDAsIDE3NzQ1LCAxNzc1NywgMTc3NjIsIDE3NzY4LCAxNzc3MywgCi0gICAgMTc3NzgsIDE3Nzg0LCAxNzc5MCwgMTc3OTUsIDE3ODAwLCAxNzgwNSwgMTc4MTIsIDE3ODE4LCAxNzgyOSwgMTc4MzYsIAotICAgIDE3ODQxLCAxNzg0NSwgMTc4NDksIDE3ODUyLCAxNzg2MCwgMTc4NjUsIDE3ODcyLCAxNzg3OSwgMTc4ODUsIDE3ODkwLCAKLSAgICAxNzg5NSwgMTc5MDAsIDE3OTA3LCAxNzkxNywgMTc5MjUsIDE3OTMwLCAxNzkzNywgMTc5NDMsIDE3OTUyLCAxNzk2MiwgCi0gICAgMTc5NzIsIDE3OTg2LCAxODAwMCwgMTgwMTQsIDE4MDI4LCAxODA0MywgMTgwNTgsIDE4MDc1LCAxODA5MywgMTgxMDYsIAotICAgIDE4MTEyLCAxODExNywgMTgxMjIsIDE4MTI2LCAxODEzNCwgMTgxMzksIDE4MTQ3LCAxODE1MywgMTgxNTksIDE4MTY0LCAKLSAgICAxODE2OSwgMTgxNzMsIDE4MTc4LCAxODE4MiwgMTgxODcsIDE4MTkxLCAxODIwMiwgMTgyMDgsIDE4MjEzLCAxODIxOCwgCi0gICAgMTgyMjUsIDE4MjMwLCAxODIzNCwgMzY5MCwgMTgyMzksIDE4MjQ1LCAxODI1MiwgMTU2ODgsIDE4MjU4LCAxODI2MiwgCi0gICAgMTgyNjgsIDE4MjczLCAxODI3OCwgMTgyODIsIDE4Mjg4LCAxODI5MywgMTgyOTgsIDE4MzA1LCAxODMxMCwgMTQyNzUsIAotICAgIDE4MzE0LCAxODMxOSwgMTgzMjMsIDE4MzI4LCAxODMzNCwgMTgzNDAsIDE4MzQ3LCAxODM1NywgMTgzNjUsIDE4MzcyLCAKLSAgICAxODM3NywgMTgzODEsIDE4MzkwLCAxODM5OCwgMTg0MDUsIDE4NDEyLCAxODQxOCwgMTg0MjMsIDE4NDI5LCAxODQzNCwgCi0gICAgMTg0MzksIDE4NDQ1LCAxODQ1MCwgMTg0NTYsIDE4NDYxLCAxODQ2NywgMTg0NzMsIDE4NDgwLCAxODQ4NiwgMTg0OTEsIAotICAgIDE4NDk2LCA5ODc1LCAxODUwNSwgMTg1MDgsIDE4NTE2LCAxODUyMiwgMTg1MjcsIDE4NTMyLCAxODU0MiwgMTg1NDksIAotICAgIDE4NTU1LCAxODU2MCwgMTg1NjUsIDE4NTcxLCAxODU3NiwgMTg1ODIsIDE4NTg3LCAxODU5MywgMTg1OTksIDE4NjA0LCAKLSAgICAxODYxMiwgMTg2MTksIDE4NjI0LCAxODYyOSwgMTg2MzUsIDE4NjQwLCAxODY0NCwgMTg2NTMsIDE4NjY0LCAxODY3MSwgCi0gICAgMTg2NzksIDE4Njg2LCAxODY5MSwgMTg2OTYsIDE4NzAyLCAxODcwNywgMTg3MTUsIDE4NzIxLCAxODcyNywgMTg3MzQsIAotICAgIDE4NzQwLCAxODc0NSwgMTg3NDksIDE4NzU1LCAxODc2MCwgMTg3NjUsIDE4NzY5LCAxODc3NCwgMTQyNiwgODExNywgMjkzNiwgCi0gICAgMTg3NzgsIDE4NzgyLCAxODc4NiwgMTg3OTAsIDE4Nzk0LCAxODc5OCwgMTg4MDEsIDE4ODA2LCAxODgxMywgMTg4MjEsIAotICAgIDE1Njk5LCAxODgyOCwgMTg4MzgsIDE4ODQ2LCAxODg1MywgMTg4NjEsIDE4ODcxLCAxODg4MCwgOTIyMCwgMTg4OTMsIAotICAgIDE4ODk4LCAxODkwMywgMTg5MTEsIDE4OTE4LCAxNDM3MSwgMTQzODAsIDE4OTI1LCAxODkzNSwgMTg5NTAsIDE4OTU2LCAKLSAgICAxODk2MywgMTg5NzAsIDE4OTc2LCAxODk4MiwgMTg5OTMsIDE5MDAxLCAxOTAwOSwgMTkwMTksIDE5MDI5LCAxNTcwNCwgCi0gICAgMTkwMzgsIDE5MDQ0LCAxOTA1MCwgMTkwNTgsIDE5MDY2LCAxOTA3MSwgMTkwODAsIDE5MDg4LCAxOTEwMCwgMTkxMTAsIAotICAgIDE5MTIwLCAxOTEzMCwgMTkxMzksIDE5MTUxLCAxOTE2MSwgMTkxNzEsIDE5MTgyLCAxOTE4NywgMTkxOTksIDE5MjExLCAKLSAgICAxOTIyMywgMTkyMzUsIDE5MjQ3LCAxOTI1OSwgMTkyNzEsIDE5MjgzLCAxOTI5NSwgMTkzMDcsIDE5MzE4LCAxOTMzMCwgCi0gICAgMTkzNDIsIDE5MzU0LCAxOTM2NiwgMTkzNzgsIDE5MzkwLCAxOTQwMiwgMTk0MTQsIDE5NDI2LCAxOTQzOCwgMTk0NDksIAotICAgIDE5NDYxLCAxOTQ3MywgMTk0ODUsIDE5NDk3LCAxOTUwOSwgMTk1MjEsIDE5NTMzLCAxOTU0NSwgMTk1NTcsIDE5NTY5LCAKLSAgICAxOTU4MCwgMTk1OTIsIDE5NjA0LCAxOTYxNiwgMTk2MjgsIDE5NjQwLCAxOTY1MiwgMTk2NjQsIDE5Njc2LCAxOTY4OCwgCi0gICAgMTk3MDAsIDE5NzExLCAxOTcyMywgMTk3MzUsIDE5NzQ3LCAxOTc1OSwgMTk3NzEsIDE5NzgzLCAxOTc5NSwgMTk4MDcsIAotICAgIDE5ODE5LCAxOTgzMSwgMTk4NDIsIDE5ODU0LCAxOTg2NiwgMTk4NzgsIDE5ODkwLCAxOTkwMiwgMTk5MTQsIDE5OTI2LCAKLSAgICAxOTkzOCwgMTk5NTAsIDE5OTYyLCAxOTk3MywgMTk5ODUsIDE5OTk3LCAyMDAwOSwgMjAwMjEsIDIwMDMzLCAyMDA0NSwgCi0gICAgMjAwNTcsIDIwMDY5LCAyMDA4MSwgMjAwOTMsIDIwMTA0LCAyMDExNiwgMjAxMjgsIDIwMTQwLCAyMDE1MiwgMjAxNjUsIAotICAgIDIwMTc4LCAyMDE5MSwgMjAyMDQsIDIwMjE3LCAyMDIzMCwgMjAyNDMsIDIwMjU1LCAyMDI2OCwgMjAyODEsIDIwMjk0LCAKLSAgICAyMDMwNywgMjAzMjAsIDIwMzMzLCAyMDM0NiwgMjAzNTksIDIwMzcyLCAyMDM4NSwgMjAzOTcsIDIwNDEwLCAyMDQyMywgCi0gICAgMjA0MzYsIDIwNDQ5LCAyMDQ2MiwgMjA0NzUsIDIwNDg4LCAyMDUwMSwgMjA1MTQsIDIwNTI3LCAyMDUzOSwgMjA1NTIsIAotICAgIDIwNTY1LCAyMDU3OCwgMjA1OTEsIDIwNjA0LCAyMDYxNywgMjA2MzAsIDIwNjQzLCAyMDY1NiwgMjA2NjksIDIwNjgxLCAKLSAgICAyMDY5NCwgMjA3MDcsIDIwNzIwLCAyMDczMywgMjA3NDYsIDIwNzU5LCAyMDc3MiwgMjA3ODUsIDIwNzk4LCAyMDgxMSwgCi0gICAgMjA4MjMsIDIwODM2LCAyMDg0OSwgMjA4NjIsIDIwODc1LCAyMDg4OCwgMjA5MDEsIDIwOTE0LCAyMDkyNywgMjA5NDAsIAotICAgIDIwOTUzLCAyMDk2NSwgMjA5NzYsIDIwOTg5LCAyMTAwMiwgMjEwMTUsIDIxMDI4LCAyMTA0MSwgMjEwNTQsIDIxMDY3LCAKLSAgICAyMTA4MCwgMjEwOTMsIDIxMTA2LCAyMTExOCwgMjExMzEsIDIxMTQ0LCAyMTE1NywgMjExNzAsIDIxMTgzLCAyMTE5NiwgCi0gICAgMjEyMDksIDIxMjIyLCAyMTIzNSwgMjEyNDgsIDIxMjYwLCAyMTI3MywgMjEyODYsIDIxMjk5LCAyMTMxMiwgMjEzMjUsIAotICAgIDIxMzM4LCAyMTM1MSwgMjEzNjQsIDIxMzc3LCAyMTM5MCwgMjE0MDIsIDIxNDE1LCAyMTQyOCwgMjE0NDEsIDIxNDU0LCAKLSAgICAyMTQ2NywgMjE0ODAsIDIxNDkzLCAyMTUwNiwgMjE1MTksIDIxNTMyLCAyMTU0NCwgMjE1NTcsIDIxNTcwLCAyMTU4MywgCi0gICAgMjE1OTYsIDIxNjA5LCAyMTYyMiwgMjE2MzUsIDIxNjQ4LCAyMTY2MSwgMjE2NzQsIDIxNjg2LCAyMTY5OSwgMjE3MTIsIAotICAgIDIxNzI1LCAyMTczOCwgMjE3NTEsIDIxNzY0LCAyMTc3NywgMjE3OTAsIDIxODAzLCAyMTgxNiwgMjE4MjgsIDIxODQxLCAKLSAgICAyMTg1NCwgMjE4NjcsIDIxODgwLCAyMTg5MywgMjE5MDYsIDIxOTE5LCAyMTkzMiwgMjE5NDUsIDIxOTU4LCAyMTk3MCwgCi0gICAgMjE5ODMsIDIxOTk2LCAyMjAwOSwgMjIwMjIsIDIyMDM1LCAyMjA0OCwgMjIwNjEsIDIyMDc0LCAyMjA4NywgMjIxMDAsIAotICAgIDIyMTEyLCAyMjEyNSwgMjIxMzgsIDIyMTUxLCAyMjE2NCwgMjIxNzcsIDIyMTkwLCAyMjIwMywgMjIyMTYsIDIyMjI5LCAKLSAgICAyMjI0MiwgMjIyNTQsIDIyMjY3LCAyMjI4MCwgMjIyOTMsIDIyMzA2LCAyMjMxOSwgMjIzMzIsIDIyMzQ1LCAyMjM1OCwgCi0gICAgMjIzNzEsIDIyMzg0LCAyMjM5NiwgMjI0MDcsIDIyNDE2LCAyMjQyNCwgMjI0MzIsIDIyNDM5LCAyMjQ0NSwgMjI0NDksIAotICAgIDIyNDU1LCAyMjQ2MSwgMjI0NjksIDIyNDc0LCAyMjQ4MCwgMjI0ODUsIDIyNDg5LCAyMjQ5OCwgOTY1NCwgMjI1MDksIAotICAgIDIyNTE2LCAyMjUyNCwgMjI1MzEsIDIyNTM4LCAxMTkzNiwgMjI1NDUsIDIyNTUyLCAyMjU2MSwgMjI1NjYsIDIyNTcxLCAKLSAgICA4MTQ1LCAyMjU3OCwgMjI1ODMsIDIyNTg2LCAyMjU5MSwgMjI1OTksIDIyNjA2LCAyMjYxMywgMjI2MjAsIDIyNjI2LCAKLSAgICAyMjYzNSwgMjI2NDQsIDIyNjUzLCAyMjY1OSwgMjI2NjgsIDIyNjcyLCAyMjY3OCwgMjI2ODMsIDIyNjkzLCAyMjcwMCwgCi0gICAgMjI3MDYsIDIyNzE0LCAyMjcyMCwgMjI3MjcsIDIyNzM3LCAyMjc0NiwgMjI3NTAsIDIyNzU3LCAyMjc2MSwgMjI3NjYsIAotICAgIDIyNzcyLCAyMjc4MCwgMjI3ODQsIDIyNzk0LCAxNTcxNCwgMjI4MDMsIDIyODA5LCAyMjgxMywgMjI4MjIsIDIyODMyLCAKLSAgICAxNTcxOSwgMjI4MzgsIDIyODQ1LCAyMjg1NiwgMjI4NjQsIDIyODc0LCAyMjg4MywgMjI4OTEsIDk0MTAsIDIyODk5LCAKLSAgICAyMjkwNCwgMjI5MTAsIDIyOTE1LCAyMjkxOSwgMjI5MjMsIDIyOTI3LCAxMDM3OSwgMjI5MzIsIDIyOTQwLCAyMjk0NywgCi0gICAgMjI5NTYsIDIyOTYzLCAyMjk3MCwgMjI5NzYsIDExODU2LCAyMjk4MywgMjI5ODksIDIyOTkzLCAyMjk5OSwgMjMwMDYsIAotICAgIDIzMDEyLCAyMzAyMCwgMjMwMjYsIDIzMDMzLCAyMzAzOSwgMjMwNDUsIDIzMDU0LCAyMzA1OCwgMjMwNjYsIDIzMDc1LCAKLSAgICAyMzA4MiwgMjMwODcsIDIzMDkxLCAyMzEwMiwgMjMxMDcsIDIzMTEyLCAyMzExNywgMjMxMzAsIDgzNDksIDIzMTM0LCAKLSAgICAyMzE0MCwgMjMxNDUsIDIzMTUzLCAyMzE1NywgMjMxNjQsIDIzMTczLCAyMzE3OCwgMTU5OTAsIDIzMTg2LCAyMzE5MCwgCi0gICAgMjMyMDIsIDIzMjA3LCAyMzIxMSwgMjMyMTQsIDIzMjIwLCAyMzIyNiwgMjMyMzIsIDIzMjM3LCAyMzI0MSwgMjMyNDQsIAotICAgIDIzMjU1LCAyMzI2MCwgOTkyNiwgMjMyNjcsIDIzMjcyLCAxMjQzLCA5OTMxLCAyMzI3NywgMjMyODIsIDIzMjg3LCAyMzI5MiwgCi0gICAgMjMyOTcsIDIzMzAyLCAyMzMwNywgMjMzMTIsIDIzMzE3LCAyMzMyMiwgMjMzMjcsIDIzMzMyLCAyMzMzOCwgMjMzNDMsIAotICAgIDIzMzQ4LCAyMzM1MywgMjMzNTgsIDIzMzYzLCAyMzM2OCwgMjMzNzMsIDIzMzc4LCAyMzM4MywgMjMzODksIDIzMzk1LCAKLSAgICAyMzQwMCwgMjM0MDUsIDIzNDEwLCAyMzQxNSwgMjM0MjAsIDIzNDI1LCAyMzQzMCwgMjM0MzUsIDIzNDQwLCAyMzQ0NiwgCi0gICAgMjM0NTEsIDIzNDU2LCAyMzQ2MSwgMjM0NjcsIDIzNDczLCAyMzQ3OCwgMjM0ODMsIDIzNDg4LCAyMzQ5MywgMjM0OTgsIAotICAgIDIzNTAzLCAyMzUwOCwgMjM1MTMsIDIzNTE5LCAyMzUyNCwgMjM1MjksIDIzNTM0LCAyMzUzOSwgMjM1NDUsIDIzNTUwLCAKLSAgICAyMzU1NSwgMjM1NTksIDEzNCwgMjM1NjcsIDIzNTcxLCAyMzU3NSwgMjM1NzksIDIzNTg0LCAyMzU4OCwgMTQyODEsIDIzNDYsIAotICAgIDIzNTkyLCAyMzU5NywgMjM2MDEsIDIzNjA2LCAyMzYxMCwgMjM2MTUsIDIzNjE5LCAyMzYyNSwgMjM2MzAsIDIzNjM0LCAKLSAgICAyMzYzOCwgMjM2NDYsIDIzNjUwLCAyMzY1NCwgMjM2NTksIDIzNjY0LCAyMzY2OCwgMjM2NzQsIDIzNjc5LCAyMzY4MywgCi0gICAgMjM2ODgsIDIzNjkzLCAyMzY5NywgMjM3MDQsIDIzNzExLCAyMzcxOCwgMjM3MjIsIDIzNzI2LCAyMzczMSwgMjM3MzUsIAotICAgIDIzNzM4LCAyMzc0NCwgMjM3NTcsIDIzNzYyLCAyMzc2OCwgMjM3NzcsIDIzNzgyLCAxMDE1MSwgMjM3ODcsIDIzNzk2LCAKLSAgICAyMzgwMSwgMjM4MDQsIDI3NTEsIDI3NTYsIDIzODA4LCAyMzgxNCwgMjM4MjAsIDc1MzgsIDIzODI1LCAyMzgzMCwgMjM4MzUsIAotICAgIDIzODQxLCAyMzg0NiwgMTUxMzQsIDIzODUxLCAyMzg1NiwgMjM4NjEsIDIzODY2LCAyMzg3MiwgMjM4NzcsIDIzODgyLCAKLSAgICAyMzg4OCwgMjM4OTMsIDIzODk3LCAyMzkwMiwgMjM5MDcsIDIzOTEyLCAyMzkxNywgMjM5MjIsIDIzOTI2LCAyMzkzMSwgCi0gICAgMjM5MzUsIDIzOTQwLCAyMzk0NSwgMjM5NTAsIDIzOTU1LCAyMzk1OSwgMjM5NjQsIDIzOTY4LCAyMzk3MywgMjM5NzgsIAotICAgIDIzOTgzLCAyMzg5OCwgMjk0NSwgMjM5MDMsIDIzOTg4LCAyMzk5NiwgMjQwMDMsIDEwNDczLCAyNDAxNSwgMjQwMjMsIAotICAgIDI0MDMzLCAyNDA1MSwgMjQwNzAsIDI0MDc5LCAyNDA4NywgMjM5MDgsIDI0MDk0LCAyNDA5OSwgMjQxMDcsIDIzOTEzLCAKLSAgICAyNDExMiwgMjQxMTcsIDI0MTI1LCAyNDEzMCwgMjM5MTgsIDI0MTM1LCAyNDE0MywgMjQxNDgsIDI0MTUyLCAyNDE1OSwgCi0gICAgMjQxNjUsIDI0MTc0LCAyNDE4MiwgMjQxODYsIDI0MTg5LCAyNDE5NiwgMjQyMDAsIDI0MjA0LCAyNDIwOSwgMjQyMTUsIAotICAgIDI0MjIyLCAyNDIyNywgOTQzNywgMTc0MiwgMTc0NywgMjQyMzEsIDI0MjM3LCAyNDI0MywgMjQyNDgsIDI0MjUyLCAyNDI1NiwgCi0gICAgMjQyNjAsIDI0MjY0LCAyNDI2OCwgMjQyNzIsIDI0Mjc2LCAyNDI4MCwgMjQyODMsIDI0Mjg5LCAyNDI5NiwgMjQzMDQsIAotICAgIDI0MzEwLCAyNDMxNiwgMjQzMjEsIDI0MzI2LCAyNDMzMiwgMjQzMzYsIDI0MzQxLCAxNTA0MCwgMTUwNDcsIDI0MzQ4LCAKLSAgICAyNDM2MCwgMjQzNjMsIDI0MzcwLCAyNDM3NCwgMTc4ODEsIDI0MzgxLCAyNDM4OSwgMjQ0MDAsIDI0NDA5LCAyNDQyMiwgCi0gICAgMjQ0MzIsIDI0NDQ2LCAyNDQ1OCwgMjQ0NzIsIDI0NDg1LCAyNDQ5NywgMjQ1MDcsIDI0NTE5LCAyNDUyNSwgMjQ1NDAsIAotICAgIDI0NTY0LCAyNDU4MiwgMjQ2MDEsIDI0NjE0LCAyNDYyOCwgMjQ2NDYsIDI0NjYyLCAyNDY3OSwgMjQ2OTcsIDI0NzA4LCAKLSAgICAyNDcyNywgMjQ3NDQsIDI0NzY0LCAyNDc4MiwgMjQ3OTQsIDI0ODA4LCAyNDgyMiwgMjQ4MzQsIDI0ODUxLCAyNDg3MCwgCi0gICAgMjQ4ODgsIDI0OTAwLCAyNDkxOCwgMjQ5MzcsIDE1ODU4LCAyNDk1MCwgMjQ5NzAsIDI0OTgyLCAxMTQ0OCwgMjQ5OTQsIAotICAgIDI0OTk5LCAyNTAwNCwgMjUwMDksIDI1MDE1LCAyNTAyMCwgMjUwMjQsIDI1MDMxLCAyNTAzNywgMjQzNywgMjUwNDEsIAotICAgIDI1MDQ3LCAyNTA1MSwgMjUwNTQsIDI1MDU4LCAyNTA2MSwgMjUwNjksIDI1MDc1LCAyMzkzNiwgMjUwNzksIDI1MDg4LCAKLSAgICAyNTA5OSwgMjUxMDUsIDI1MTExLCAyNTEyNiwgMjUxMzUsIDI1MTQzLCAyNTE1MCwgMjUxNTUsIDI1MTU5LCAyNTE2NiwgCi0gICAgMjUxNzIsIDI1MTgxLCAyNTE4OSwgMjUxOTYsIDI1MjA2LCAyNTIxNSwgMjUyMjUsIDI1MjMwLCAyNTIzOSwgMjUyNDgsIAotICAgIDI1MjU5LCAyNTI3MCwgNDE5MiwgMjUyODAsIDI1Mjg0LCAyNTI5NCwgMjUzMDIsIDI1MzEyLCAyNTMyMywgMjUzMjgsIAotICAgIDI1MzM4LCAyNTM0NiwgMjUzNTMsIDI1MzU5LCAyNTM2NiwgMjUzNzEsIDIzOTQ2LCAyNTM3NSwgMjUzODQsIDI1Mzg4LCAKLSAgICAyNTM5MSwgMjUzOTYsIDI1NDA0LCAyNTQxMSwgMjU0MjAsIDI1NDI4LCAyNTQzNiwgMjU0NDQsIDI1NDU0LCAyNTQ2MywgCi0gICAgMjU0NjksIDI1NDc1LCAyNTQ3OSwgMjM5NTEsIDIzOTU2LCAyNTQ4MywgMjU0OTMsIDI1NTAzLCAyNTUxMywgMjU1MjEsIAotICAgIDI1NTI4LCAyNTUzOCwgMjU1NDYsIDI1NTU0LCAyNTU2MCwgMjU1NjgsIDg2NSwgMjU1NzcsIDE2MDY1LCA2MTUsIDI1NTkxLCAKLSAgICAyNTYwMCwgMjU2MDgsIDI1NjE5LCAyNTYzMCwgMjU2NDAsIDI1NjQ5LCAyNTY2MSwgMjU2NzAsIDI1Njc5LCAyNTY4NiwgCi0gICAgMjU2OTIsIDI1NzAyLCAyNTcxMSwgMjU3MjAsIDI1NzI4LCAyNTczOCwgMjU3NDYsIDI1NzU0LCA5ODkyLCAyNTc2MCwgCi0gICAgMjU3NjMsIDI1NzY3LCAyNTc3MiwgMjU3NzcsIDI1NzgxLCAxMDU4OCwgMjM5NjksIDIzOTc0LCAyNTc4OSwgMjU3OTUsIAotICAgIDI1ODAxLCAyNTgwNiwgMjU4MTEsIDI1ODE1LCAyNTgyMywgMjU4MjksIDI1ODM1LCAyNTgzOSwgMzY3NSwgMjU4NDcsIAotICAgIDI1ODUyLCAyNTg1NywgMjU4NjEsIDI1ODY1LCAxMDcwMSwgMjU4NzIsIDI1ODgwLCAyNTg5NCwgMjU5MDEsIDI1OTA3LCAKLSAgICAxMDcxMCwgMTA3MTYsIDI1OTE1LCAyNTkyMywgMjU5MzAsIDI1OTM1LCAyNTk0MCwgMjM5NzksIDI1OTQ2LCAyNTk1NywgCi0gICAgMjU5NjEsIDI1OTY2LCAyNjQwLCAyNTk3MSwgMjU5ODIsIDI1OTg4LCAyNTk5MywgMjU5OTcsIDI2MDAxLCAyNjAwNCwgCi0gICAgMjYwMTEsIDI2MDE4LCAyNjAyNCwgMjYwMzEsIDI2MDM3LCAyNjA0MSwgMjM5ODQsIDI2MDQ2LCAyNjA1MCwgMjYwNTQsIAotICAgIDE0MzEsIDg1NDQsIDI2MDU5LCAyNjA2NCwgMjYwNjksIDI2MDc0LCAyNjA3OSwgMjYwODQsIDI2MDg5LCAyNjA5NCwgCi0gICAgMjYwOTksIDI2MTA0LCAyNjEwOSwgMjYxMTQsIDI2MTE5LCAyNjEyNCwgMjYxMzAsIDI2MTM1LCAyNjE0MCwgMjYxNDUsIAotICAgIDI2MTUwLCAyNjE1NSwgMjYxNjAsIDI2MTY2LCAyNjE3MSwgMjYxNzYsIDI2MTgxLCAyNjE4NiwgMjYxOTEsIDI2MTk2LCAKLSAgICAyNjIwMSwgMjYyMDcsIDI2MjEzLCAyNjIxOCwgMjYyMjQsIDI2MjI5LCAyNjIzNCwgNSwgMjYyNDAsIDI2MjQ0LCAyNjI0OCwgCi0gICAgMjYyNTIsIDI2MjU3LCAyNjI2MSwgMjYyNjUsIDI2MjY5LCAyNjI3MywgMjYyNzgsIDI2MjgyLCAyNjI4NywgMjYyOTEsIAotICAgIDI2Mjk0LCAyNjI5OCwgMjYzMDMsIDI2MzA3LCAyNjMxMiwgMjYzMTYsIDI2MzIwLCAyNjMyNCwgMjYzMjksIDI2MzMzLCAKLSAgICAyNjMzNywgMjYzNDcsIDI2MzUyLCAyNjM1NiwgMjYzNjAsIDI2MzY1LCAyNjM3MCwgMjYzNzksIDI2Mzg0LCAyNjM4OSwgCi0gICAgMjYzOTMsIDI2Mzk3LCAyNjQxMCwgMjY0MjIsIDI2NDMxLCAyNjQ0MCwgMjY0NDUsIDI2NDUxLCAyNjQ1NiwgMjY0NjAsIAotICAgIDI2NDY0LCAyNjQ3NCwgMjY0ODMsIDI2NDkxLCAyNjQ5NywgMjY1MDIsIDI2NTA2LCAyNjUxMywgMjY1MjMsIDI2NTMyLCAKLSAgICAyNjU0MCwgMTE3NzAsIDI2NTQ4LCAyNjU1NiwgMjY1NjUsIDI2NTc0LCAyNjU4MiwgMjY1OTIsIDI2NTk3LCAyNjYwMSwgCi0gICAgMjY2MDUsIDI2NjA4LCAyNjYxMCwgMjY2MTQsIDI2NjE4LCAyNjYyMywgMjY2MjgsIDI2NjMyLCAyNjYzNiwgMjY2MzksIAotICAgIDI2NjQzLCAyNjY0NiwgMjY2NTAsIDI2NjUzLCAyNjY1NiwgMjY2NjAsIDI2NjY2LCAyNjY3MCwgMjY2NzQsIDI2Njc4LCAKLSAgICAyNjY4MywgMjY2ODgsIDI2NjkzLCAyNjY5NywgMjY3MDAsIDI2NzA1LCAyNjcxMSwgMjY3MTYsIDI2NzIyLCAyNjcyNywgCi0gICAgMjY3MzEsIDI2NzM3LCAyNjc0MSwgMjY3NDUsIDI2NzUwLCAyNjc1NCwgMjY3NTksIDI2NzY0LCAyNjc2OCwgMjY3NzIsIAotICAgIDI2Nzc5LCAyNjc4MywgMjY3ODYsIDI2NzkwLCAyNjc5NCwgMjY4MDAsIDI2ODA2LCAyNjgxMCwgMjY4MTQsIDI2ODE5LCAKLSAgICAyNjgyNiwgMjY4MzIsIDI2ODM2LCAyNjg0NSwgMjY4NDksIDI2ODUzLCAyNjg1NiwgMjY4NjIsIDI2ODY3LCAyNjg3MywgCi0gICAgMTQ3NSwgMTgwNiwgMjY4NzgsIDI2ODgzLCAyNjg4OCwgMjY4OTMsIDI2ODk4LCAyNjkwMywgMjY5MDgsIDIxNzQsIDIyMjAsIAotICAgIDI2OTEzLCAyNjkxNiwgMjY5MjAsIDI2OTI0LCAyNjkyOSwgMjY5MzMsIDE2MDc3LCAyNjkzNywgMjY5NDIsIDI2OTQ3LCAKLSAgICAyNjk1MSwgMjY5NTQsIDI2OTU5LCAyNjk2MywgMjY5NjgsIDI2OTcyLCAxNjA4MSwgMjY5NzcsIDI2OTgwLCAyNjk4MywgCi0gICAgMjY5ODcsIDI2OTkyLCAyNjk5NiwgMjcwMDksIDI3MDEzLCAyNzAxNiwgMjcwMjQsIDI3MDMzLCAyNzA0MCwgMjcwNDUsIAotICAgIDI3MDUxLCAyNzA1NywgMjcwNjUsIDI3MDcyLCAyNzA3OSwgMjcwODMsIDI3MDg3LCAyNzA5MSwgMjcwOTYsIDI3MTAxLCAKLSAgICAyNzEwNSwgMjcxMTMsIDI3MTE4LCAyNzEzMCwgMjcxNDEsIDI3MTQ2LCAyNzE1MCwgMjcxNTcsIDI3MTYxLCAyNzE2NiwgCi0gICAgMjcxNzIsIDI3MTc1LCAyNzE4MCwgMjcxODUsIDI3MTg5LCAyNzE5MywgMjcxOTYsIDI3MjAyLCA4MjQ4LCAyMzUwLCAKLSAgICAyNzIwNiwgMjcyMTEsIDI3MjI3LCAxMDE5OCwgMjcyNDcsIDI3MjU2LCAyNzI3MiwgMjcyNzYsIDI3MjgzLCAyNzI4NiwgCi0gICAgMjcyOTIsIDI3MzAyLCAyNzMwOCwgMjczMTcsIDI3MzMyLCAyNzM0NCwgMjczNTUsIDI3MzYzLCAyNzM3MiwgMjczNzgsIAotICAgIDI3Mzg3LCAyNzM5NywgMjc0MDcsIDI3NDE4LCAyNzQyOSwgMjc0MzksIDI3NDQ4LCAyNzQ1NSwgMjc0NjQsIDI3NDcyLCAKLSAgICAyNzQ3OSwgMjc0ODcsIDI3NDk0LCAyNzUwMSwgMjc1MTQsIDI3NTIxLCAyNzUyOSwgMjc1MzYsIDI3NTQyLCAyNzU0NywgCi0gICAgMjc1NTYsIDI3NTYyLCAyNzU2NywgMjc1NzUsIDI3NTgyLCAyNzU4OSwgMjUzMDQsIDI3NjAxLCAyNzYxMywgMjc2MjcsIAotICAgIDI3NjM1LCAyNzY0MiwgMjc2NTQsIDI3NjYzLCAyNzY3MiwgMjc2ODAsIDI3Njg4LCAyNzY5NiwgMjc3MDMsIDI3NzA5LCAKLSAgICAyNzcxOCwgMjc3MjYsIDI3NzM2LCAyNzc0NSwgMjc3NTUsIDI3NzY0LCAyNzc3MywgMjc3ODEsIDI3Nzg2LCAyNzc5MCwgCi0gICAgMjc3OTMsIDI3Nzk3LCAyNzgwMSwgMjc4MDUsIDI3ODA5LCAyNzgxMywgMjc4MTksIDI3ODI1LCAyNzgzMywgMTYxMzksIAotICAgIDI3ODQwLCAyNzg0NSwgMjc4NTIsIDI3ODU4LCAyNzg2NSwgMTYxNDcsIDI3ODcyLCAyNzg3NSwgMjc4ODcsIDI3ODk1LCAKLSAgICAyNzkwMSwgMjc5MDYsIDI3OTEwLCAyNzkyMSwgMTA2NTEsIDI3OTMxLCAyNzkzOSwgMjc5NDksIDI3OTU4LCAyNzk2NSwgCi0gICAgMjc5NzIsIDI3OTgwLCAyNzk4NCwgMTYxNTgsIDI3OTg3LCAyNzk5NCwgMjc5OTgsIDI4MDA0LCAyODAwNywgMjgwMTQsIAotICAgIDI4MDIwLCAyODAyNywgMjgwMzMsIDI4MDM3LCAyODA0MiwgMjgwNDYsIDI4MDU1LCAyODA2MiwgMjgwNjgsIDgzMDYsIAotICAgIDI4MDc1LCAyODA4MywgMjgwOTAsIDI4MDk2LCAyODEwMSwgMjgxMDcsIDI4MTEzLCAyODEyMSwgMjgxMjcsIDI4MTMxLCAKLSAgICAyODEzNCwgMjgxMzYsIDI3Nzk4LCAyODE0NSwgMjgxNTEsIDI4MTU3LCAyODE2NywgMjgxNzIsIDI4MTc5LCAyODE4NSwgCi0gICAgMjgxOTAsIDI4MTk1LCAyODIwMCwgMjgyMDQsIDI4MjA5LCAyODIxNiwgMjgyMjIsIDI4MjMxLCAyODIzNSwgMjgyNDIsIAotICAgIDI4MjQ4LCAyODI1NywgNDM3OCwgMjgyNjMsIDI4MjY5LCAyODI3NCwgMjgyODEsIDI4MjkyLCAyODI5NywgMjgzMDEsIAotICAgIDI4MzExLCAyODMxNywgMjgzMjEsIDI4MzI2LCAyODMzNiwgMjgzNDUsIDI4MzQ5LCAyODM1NiwgMjgzNjQsIDI4MzcxLCAKLSAgICAyODM3NywgMjgzODIsIDI4MzkwLCAyODM5NywgMjg0MDIsIDI4NDA5LCAyODQyMSwgMjg0MzAsIDI4NDM0LCAxNDIxMiwgCi0gICAgMjg0NDIsIDI4NDUyLCAyODQ1NiwgMjcwMjAsIDI4NDY3LCAyODQ3MiwgMjg0NzYsIDI4NDgzLCAyODQ5MCwgMjM2NzAsIAotICAgIDI3NzIzLCAyODQ5NSwgMjg0OTksIDI4NTAyLCAyNDcxNCwgMjg1MDcsIDI4NTIxLCAyODUzNywgMjg1NTUsIDI4NTc0LCAKLSAgICAyODU5MSwgMjg2MDksIDI0NzMzLCAyODYyNiwgMjg2NDYsIDI0NzUwLCAyODY1OCwgMjg2NzAsIDE3MTc4LCAyODY4MiwgCi0gICAgMjQ3NzAsIDI4Njk2LCAyODcwOCwgMTE0NjEsIDI4NzIyLCAyODcyNywgMjg3MzIsIDI4NzM3LCAyODc0MywgMjg3NDksIAotICAgIDI4NzU1LCAyODc1OSwgMjg3NjcsIDI4Nzc0LCAyODc3OSwgMjg3ODksIDI4Nzk1LCAxMTA1OSwgMjg4MDEsIDI4ODAzLCAKLSAgICAyODgwOCwgMjg4MTYsIDI4ODIwLCAyODIxMiwgMjg4MjYsIDI4ODMzLCAxMjYwMSwgMTI2MTEsIDI4ODQwLCAyODg1MCwgCi0gICAgMjg4NTUsIDI4ODU5LCAyODg2MiwgMjg4NjgsIDI4ODc2LCAyODg4OCwgMjg4OTgsIDI4OTE0LCAyODkyNywgMjg5NDEsIAotICAgIDE3MTk2LCAyODk1NSwgMjg5NjIsIDI4OTY2LCAyODk2OSwgMjg5NzQsIDI4OTc4LCAyODk4NSwgMjg5OTIsIDI4OTk5LCAKLSAgICAyOTAwOSwgMjkwMTQsIDI5MDE5LCAyOTAyNCwgMjkwMzIsIDI5MDQwLCAyOTA0NSwgMjkwNTQsIDI5MDU5LCAzMzUzLCAKLSAgICAyOTA2MywgMjkwNjYsIDI5MDY5LCAyOTA3NCwgMjkwODEsIDI5MDg2LCAyOTEwMiwgMjkxMTAsIDI5MTE4LCA5OTY2LCAKLSAgICAyOTEyNiwgMjkxMzEsIDI5MTM1LCAyOTE0MSwgMjkxNDYsIDI5MTUyLCAyOTE1NSwgMjkxNjEsIDI5MTczLCAyOTE4MSwgCi0gICAgMjkxODgsIDI5MTk0LCAyOTIwMSwgMjkyMTIsIDI5MjI2LCAyOTIzOSwgMjkyNDUsIDI5MjU0LCAyOTI2MCwgMjkyNjksIAotICAgIDI5MjgxLCAyOTI5MiwgMjkzMDIsIDI5MzExLCAyOTMyMCwgMjkzMjgsIDI5MzM5LCA4Mjg4LCAyOTM0NiwgMjkzNTMsIAotICAgIDI5MzU5LCAyOTM2NCwgMjkzNzAsIDI5Mzc3LCAyOTM4NywgMjkzOTcsIDI5NDA2LCAyOTQxMiwgMjk0MTksIDI5NDI0LCAKLSAgICAyOTQzMiwgMjk0MzksIDI5NDQ3LCAyOTQ1NSwgMjk0NjcsIDY1NjMsIDk5NSwgMjk0NzQsIDI5NDgzLCAyOTQ5MSwgMjk0OTcsIAotICAgIDI5NTAzLCAyOTUwOCwgMjk1MTIsIDI5NTE1LCAyOTUyMSwgMjk1MjgsIDI5NTMzLCAyOTUzOCwgMjk1NDMsIDI5NTQ3LCAKLSAgICAyOTU1OSwgMjk1NzAsIDI5NTc5LCAyOTU4NywgMTYzMjMsIDI5NTkyLCAyOTU5NywgMjk2MDMsIDI5NjA5LCAxMjU5NCwgCi0gICAgOTA1OCwgMjk2MTQsIDI5NjE4LCAyOTYyMiwgMjk2MjUsIDI5NjI4LCAyOTYzNCwgMjk2NDIsIDI5NjUwLCAyOTY1NCwgCi0gICAgMjk2NTgsIDI5NjYzLCAyOTY2NiwgMjk2NzUsIDI5Njc5LCAyOTY4MiwgMjk2OTAsIDI5NzAxLCAyOTcwNSwgMjk3MTEsIAotICAgIDI5NzE3LCAyOTcyMSwgMjk3MjcsIDI5NzM1LCAyOTc1NywgMjk3ODEsIDI5NzkwLCAyOTc5NywgMjk4MDQsIDI5ODEwLCAKLSAgICAyOTgxOCwgMjk4MjQsIDI5ODI5LCAyOTg0MCwgMjk4NTgsIDI5ODY1LCAyOTg3MywgMjk4NzcsIDI5ODgyLCAyOTg5MSwgCi0gICAgMjk5MDQsIDI5OTEyLCAyOTkyNCwgMjk5MzUsIDI5OTQ2LCAyOTk1NiwgMjk5NzAsIDI5OTc5LCAyOTk4NywgMjk5OTksIAotICAgIDEwMjE1LCAzMDAxMCwgMzAwMjEsIDMwMDMzLCAzMDA0MywgMzAwNTIsIDMwMDU3LCAzMDA2MSwgMzAwNjksIDMwMDgwLCAKLSAgICAzMDA5MCwgMzAwOTUsIDMwMDk5LCAzMDEwMiwgMzAxMDUsIDMwMTEzLCAzMDEyMSwgMzAxMzAsIDMwMTQwLCAzMDE0OSwgCi0gICAgMzAxNTUsIDMwMTY5LCAyNzAyLCAzMDE5MSwgMzAyMDIsIDMwMjExLCAzMDIyMSwgMzAyMzMsIDMwMjQyLCAzMDI1MSwgCi0gICAgMzAyNjEsIDMwMjY5LCAzMDI3NywgMzAyODYsIDMwMjkxLCAzMDMwMiwgMzAzMDcsIDMwMzE4LCAzMDMyMiwgMzAzMzIsIAotICAgIDMwMzQxLCAzMDM0OSwgMzAzNTksIDMwMzY5LCAzMDM3NywgMzAzODYsIDMwMzkzLCAzMDQwMSwgMzA0MDgsIDMwNDE3LCAKLSAgICAzMDQyNiwgMzA0MzAsIDMwNDM4LCAzMDQ0NSwgMzA0NTMsIDMwNDYwLCAzMDQ3MSwgMzA0ODYsIDMwNDkzLCAzMDQ5OSwgCi0gICAgMzA1MDksIDMwNTE4LCAzMDUyNCwgMzA1MzUsIDMwNTM5LCAzMDU0NiwgMzA1NTAsIDMwNTU2LCAxNTI2NSwgMzA1NjIsIAotICAgIDMwNTY2LCAzMDU3MSwgMzA1NzcsIDMwNTg0LCAzMDU4OCwgMzA1OTIsIDMwNjAwLCAzMDYwOCwgMzA2MTQsIDMwNjIzLCAKLSAgICAzMDYzMCwgMzA2MzUsIDMwNjQwLCAzMDY1MCwgMjUzNzMsIDMwNjU0LCAzMDY1NywgMzA2NjIsIDMwNjY3LCAzMDY3MiwgCi0gICAgMzA2NzcsIDMwNjgyLCAzMDY4NywgMzA2OTIsIDMwNjk3LCAzMDcwMywgMzA3MDgsIDMwNzEzLCAzMDcxOSwgMTE5OSwgNjYwLCAKLSAgICAzMDcyNCwgMzA3MzMsIDIzOTgsIDMwNzQwLCAzMDc0NSwgMzA3NDksIDMwNzU1LCAxMjQ4LCA1NzgsIDI5MCwgMzA3NjAsIAotICAgIDMwNzY5LCAzMDc3NywgMzA3ODYsIDMwNzk0LCAzMDgwNSwgMzA4MTMsIDMwODIyLCAzMDgzMCwgMzA4MzUsIDEwNzk3LCAKLSAgICAzMDgzOSwgMzA4NDcsIDMwODU1LCAzMDg2MCwgMTYwOTQsIDM4MjQsIDMwODY2LCAzMDg3MiwgMzA4NzgsIDYxNDgsIAotICAgIDMwODgzLCAzMDg4NywgMzA4OTMsIDMwODk3LCAzMDkwMywgMzA5MDgsIDMwOTE1LCAxNDQxLCAzMDkyMSwgMzA5MjgsIAotICAgIDEzNDgsIDYxNTYsIDMwOTMyLCAzMDk0MiwgMzA5NTAsIDMwOTU2LCAzMDk2NiwgMzA5NzUsIDMwOTgzLCAzMDk4OSwgCi0gICAgMzA5OTcsIDMxMDA0LCAxMjEzNiwgMzEwMTAsIDMxMDE3LCAzMTAyMiwgMzEwMjksIDE0OTQsIDIxOSwgMjE3MywgMzEwMzUsIAotICAgIDMxMDQxLCAzMTA0OCwgMzEwNTksIDMxMDcwLCAzMTA3OCwgMzEwODUsIDMxMDk1LCAzMTEwNCwgMzExMTIsIDMxMTIxLCAKLSAgICAzMTEyOCwgMzExMzUsIDMxMTQ4LCAzMTE1NSwgMzExNjEsIDMxMTcyLCAzMTE5MSwgMTI1MywgMzExOTYsIDMxMjAxLCAKLSAgICAzMTIwOSwgMzc0MiwgMzEyMTMsIDMxMjE4LCAzMTIyMiwgMzEyMjYsIDE0NDUsIDI2NjM3LCAzMTIzNiwgMzEyNDAsIAotICAgIDMxMjQ1LCAzMTI0OSwgMzYxOSwgMzEyNTUsIDMxMjYzLCAzMTI3MCwgMzEyODEsIDMxMjg5LCAzMTI5NywgMzc0MywgMzQ2LCAKLSAgICAzMTMwMiwgMzEzMTAsIDMxMzE4LCAzMTMyNSwgMzEzMzEsIDMxMzM2LCAyMjQyLCAxMTYyOCwgMzEzNDMsIDMxMzQ5LCAKLSAgICAyODAzOCwgMjgyODcsIDMxMzU1LCA1NzQsIDEwNiwgMzEzNTksIDMxMzYzLCAzMTM2OSwgNjYzLCA5ODQxLCAzMTM3NCwgCi0gICAgMzEzODEsIDMxMzg3LCAzMTM5MSwgMTYzOSwgMzEzOTQsIDMxMzk4LCAxNjU3NiwgMzE0MDEsIDMxNDA2LCAzMTQxMywgCi0gICAgMzE0MTksIDMxNDI0LCAzMTQzMiwgMzE0MzksIDMxNDQ1LCAyNDEzMiwgMzE0NDksIDMxNDUzLCAzMTQ1NywgMzgxMywgCi0gICAgMTgxODAsIDMxNDYxLCAzMTQ2NiwgMzE0NzAsIDMxNDczLCAzMTQ4MSwgMzE0ODksIDMxNDk0LCAzMTUwMiwgMzE1MDUsIAotICAgIDMxNTEyLCAzMTUyMiwgMzE1MzQsIDMxNTM5LCAzMTU0MywgMzE1NTEsIDMxNTU4LCAzMTU2NCwgMzE1NzEsIDMxNTc4LCAKLSAgICAzMTU4MSwgMzE1ODUsIDMxNTg5LCAxNDQ5LCAzMTU5OSwgMzE2MDEsIDMxNjA2LCAzMTYxMiwgMzE2MTgsIDMxNjIzLCAKLSAgICAzMTYyOCwgMzE2MzMsIDMxNjM4LCAzMTY0MywgMzE2NDgsIDMxNjUzLCAzMTY1OCwgMzE2NjMsIDMxNjY4LCAzMTY3MywgCi0gICAgMzE2NzgsIDMxNjgzLCAzMTY4OCwgMzE2OTQsIDMxNzAwLCAzMTcwNiwgMzE3MTIsIDMxNzE3LCAzMTcyMiwgMzE3MjcsIAotICAgIDMxNzMzLCAzMTczOCwgMzE3NDMsIDMxNzQ4LCAzMTc1NCwgMzE3NTksIDMxNzY1LCAzMTc3MCwgMzE3NzUsIDMxNzgwLCAKLSAgICAzMTc4NSwgMzE3OTEsIDMxNzk2LCAzMTgwMiwgMzE4MDcsIDMxODEyLCAzMTgxNywgMzE4MjIsIDMxODI4LCAzMTgzMywgCi0gICAgMzE4MzksIDMxODQ0LCAzMTg0OSwgMzE4NTQsIDMxODU5LCAzMTg2NCwgMzE4NjksIDMxODc0LCAzMTg3OSwgMzE4ODQsIAotICAgIDMxODkwLCAzMTg5NiwgMzE5MDIsIDMxOTA3LCAzMTkxMiwgMzE5MTcsIDMxOTIyLCAzMTkyOCwgMzE5MzQsIDMxOTQwLCAKLSAgICAzMTk0NiwgMzE5NTIsIDMxOTU4LCAzMTk2MywgMzE5NjksIDMxOTc0LCAzMTk3OSwgMzE5ODQsIDMxOTg5LCAzMTk5NSwgCi0gICAgMjQ4MiwgMzIwMDAsIDI0ODksIDI0OTYsIDI3OTMsIDMyMDA1LCAyNTAyLCAyNTEyLCAzMjAxMSwgMzIwMTUsIDMyMDIwLCAKLSAgICAzMjAyNSwgMzIwMzEsIDMyMDM2LCAzMjA0MSwgMzIwNDUsIDMyMDUwLCAzMjA1NiwgMzIwNjEsIDMyMDY2LCAzMjA3MSwgCi0gICAgMzIwNzcsIDMyMDgyLCAzMjA4NiwgMzIwOTAsIDMyMDk1LCAzMjEwMCwgMzIxMDUsIDMyMTEwLCAzMjExNSwgMzIxMjEsIAotICAgIDMyMTI3LCAzMjEzMiwgMzIxMzYsIDMyMTQxLCAzMjE0NywgMzIxNTEsIDMyMTU2LCAzMjE2MSwgMzIxNjYsIDMyMTcxLCAKLSAgICAzMjE3NSwgMzIxNzgsIDMyMTgzLCAzMjE4OCwgMzIxOTMsIDMyMTk4LCAzMjIwMywgMzIyMDksIDMyMjE1LCAzMjIyMCwgCi0gICAgMzIyMjUsIDMyMjMwLCAzMjIzNCwgMzIyMzksIDMyMjQ0LCAzMjI0OSwgMzIyNTQsIDMyMjU5LCAzMjI2NCwgMzIyNjgsIAotICAgIDMyMjczLCAzMjI3OCwgMzIyODMsIDMyMjg3LCAzMjI5MSwgMzIyOTUsIDMyMzAwLCAzMjMwOCwgMzIzMTMsIDMyMzE4LCAKLSAgICAzMjMyNCwgMzIzMzAsIDMyMzM2LCAzMjM0MSwgMzIzNDUsIDMyMzQ4LCAzMjM1MywgMzIzNTgsIDMyMzYyLCAzMjM2NywgCi0gICAgMzIzNzIsIDMyMzc2LCAzMjM4MSwgMzIzODUsIDMyMzg4LCAzMjM5MywgMzkxNCwgMTg5MDYsIDMyMzk4LCAzMjQwMywgCi0gICAgMzI0MDgsIDMyNDE2LCAyMjk1OSwgMzA5MjUsIDk1MTgsIDMyNDIxLCAzMjQyNiwgMzI0MzAsIDMyNDM1LCAzMjQzOSwgCi0gICAgMzI0NDMsIDMyNDQ4LCAzMjQ1MiwgMzI0NTUsIDMyNDU4LCAzMjQ2MiwgMzI0NjcsIDMyNDcxLCAzMjQ3OSwgMzI0ODMsIAotICAgIDMyNDg2LCAzMjQ5MSwgMzI0OTUsIDMyNDk5LCAzMjUwNCwgMzI1MDksIDMyNTEzLCAzMjUxOSwgMzI1MjQsIDMyNTI5LCAKLSAgICAzMjUzNiwgMzI1NDMsIDMyNTQ3LCAzMjU1MCwgMzI1NTYsIDMyNTY1LCAzMjU3MiwgMzI1ODAsIDMyNTg3LCAzMjU5MSwgCi0gICAgMzI1OTYsIDMyNjAwLCAzMjYwNCwgMzI2MTAsIDMyNjE2LCAzMjYyMCwgMzI2MjYsIDMyNjMxLCAzMjYzNiwgMzI2NDAsIAotICAgIDMyNjQ3LCAzMjY1MywgMzI2NTksIDMyNjY1LCAzMjY3MSwgMzI2NzgsIDMyNjg0LCAzMjY5MCwgMzI2OTYsIDMyNzAyLCAKLSAgICAzMjcwOCwgMzI3MTQsIDMyNzIwLCAzMjcyNywgMzI3MzMsIDMyNzQwLCAzMjc0NiwgMzI3NTIsIDMyNzU4LCAzMjc2NCwgCi0gICAgMzI3NzAsIDMyNzc2LCAzMjc4MiwgMzI3ODgsIDMyNzk0LCAxMjQ3OSwgMzI4MDAsIDMyODA2LCAzMjgxMSwgMzI4MTYsIAotICAgIDMyODIxLCAzMjgyNCwgMzI4MzAsIDMyODM4LCAzMjg0MywgMzI4NDcsIDMyODUyLCAzMjg1OCwgMzI4NjcsIDMyODczLCAKLSAgICAzMjg3OCwgMzI4ODMsIDMyODg4LCAzMjg5MiwgMzI4OTcsIDMyOTAyLCAzMjkwNywgMzI5MTIsIDMyOTE3LCAzMjkyNCwgCi0gICAgMzI5MzEsIDMyOTM3LCAzMjk0MywgMzI5NDgsIDE3ODIyLCAzMjk1NSwgMzI5NjEsIDMyOTY4LCAzMjk3NCwgMzI5ODAsIAotICAgIDMyOTg1LCAzMjk5MywgMzI5OTgsIDEwMzcyLCAzMzAwMiwgMzMwMDcsIDMzMDEyLCAzMzAxOCwgMzMwMjMsIDMzMDI4LCAKLSAgICAzMzAzMiwgMzMwMzcsIDMzMDQyLCAzMzA0OCwgMzMwNTMsIDMzMDU4LCAzMzA2MywgMzMwNjcsIDMzMDcyLCAzMzA3NywgCi0gICAgMzMwODEsIDMzMDg2LCAzMzA5MSwgMzMwOTUsIDMzMTAwLCAzMzEwNCwgMzMxMDksIDMzMTE0LCAzMzExOSwgMzMxMjMsIAotICAgIDMzMTI4LCAzMzEzMiwgMzMxMzYsIDE2NjgyLCAzMzE0MSwgMzMxNTAsIDMzMTU2LCAzMzE2MiwgMzMxNzEsIDMzMTc5LCAKLSAgICAzMzE4OCwgMzMxOTYsIDMzMjAxLCAzMzIwNSwgMzMyMTIsIDMzMjE4LCAzMzIyNiwgMzMyMzAsIDMzMjMzLCAzMzIzOCwgCi0gICAgMzMyNDIsIDMzMjUxLCAzMzI1OSwgMzMyNzcsIDMzMjgzLCAxNDkzLCAzMzI4OSwgMzMyOTIsIDMzMjk2LCAyNDIzOCwgCi0gICAgMjQyNDQsIDMzMzAyLCAzMzMwNiwgMzMzMTcsIDMzMzI4LCAzMzMzOSwgMzMzNTEsIDMzMzU1LCAzMzM2MiwgMzMzNjksIAotICAgIDMzMzc0LCAzMzM3OCwgNjIwNCwgOTI4LCAyMjk1OCwgMzMzODYsIDMzMzkxLCAzMzM5NSwgMzM0MDAsIDMzNDA0LCAzMzQxMCwgCi0gICAgMzM0MTUsIDMzNDIxLCAzMzQyNiwgMzM0MzIsIDMzNDM3LCAzMzQ0MywgMzM0NDgsIDMzNDU0LCAzMzQ2MCwgMzM0NjYsIAotICAgIDMzNDcxLCAzMzQyNywgMzM0MzMsIDMzNDc1LCAzMzQ4MCwgMzM0ODYsIDMzNDkxLCAzMzQ5NywgMzM1MDIsIDMzNTA4LCAKLSAgICAzMzUxMywgMzM0MzgsIDExMzE0LCAzMzUxNywgMzM0NDksIDMzNDU1LCAzMzQ2MSwgMjg4NSwgMzUzMywgMzM1MjMsIAotICAgIDMzNTI2LCAzMzUzMSwgMzM1MzcsIDMzNTQzLCAzMzU0OSwgMzM1NTYsIDMzNTYyLCAzMzU2OCwgMzM1NzQsIDMzNTgwLCAKLSAgICAzMzU4NiwgMzM1OTIsIDMzNTk4LCAzMzYwNCwgMzM2MTAsIDMzNjE2LCAzMzYyMiwgMzM2MjgsIDMzNjM1LCAzMzY0MSwgCi0gICAgMzM2NDcsIDMzNjUzLCAzMzY1OSwgMzM2NjUsIDMzNjY4LCAzMzY3MywgMzM2NzYsIDMzNjgzLCAzMzY4OCwgMzM2OTYsIAotICAgIDMzNzAxLCAzMzcwNiwgMzM3MTIsIDMzNzE3LCAzMzcyMiwgMzM3MjYsIDMzNzMxLCAzMzczNywgMzM3NDIsIDMzNzQ4LCAKLSAgICAzMzc1MywgMzM3NTksIDMzNzY0LCAzMzc3MCwgMzM3NzYsIDMzNzgwLCAzMzc4NSwgMzM3OTAsIDMzNzk1LCAzMzgwMCwgCi0gICAgMzM4MDQsIDMzODA5LCAzMzgxNCwgMzM4MTksIDMzODI1LCAzMzgzMSwgMzM4MzcsIDMzODQzLCAzMzg0OCwgMzM4NTIsIAotICAgIDMzODU1LCAzMzg2MSwgMzM4NjcsIDMzODc2LCAzMzg4NCwgMzM4OTEsIDMzODk2LCAzMzkwMCwgMzM5MDQsIDMzOTA5LCAKLSAgICAxNjUzMCwgMzM5MTQsIDMzOTIyLCAzMzkyOCwgMzg2NiwgMTM1OCwgMzM5MzMsIDMzOTM3LCA4MzU5LCAzMzk0MywgMzM5NDksIAotICAgIDMzOTU2LCA4MzY4LCAzMzk2MCwgMzM5NjYsIDMzOTczLCAzMzk3OSwgMzM5ODgsIDMzOTk2LCA5MjQ0LCAzNDAwOCwgCi0gICAgMzQwMTIsIDM0MDE5LCAzNDAyNSwgMzQwMzAsIDM0MDM0LCAzNDAzOCwgMzQwNDEsIDM0MDUxLCAzNDA2MCwgMzQwNjgsIAotICAgIDMzNDI4LCAzNDA3MywgMzQwODMsIDM0MDkzLCAzNDEwMywgMzQxMDksIDM0MTE0LCAzNDEyNCwgMzQxMjksIDM0MTQyLCAKLSAgICAzNDE1NiwgMzQxNjcsIDM0MTc5LCAzNDE5MSwgMzQyMDUsIDM0MjE4LCAzNDIzMCwgMzQyNDIsIDE1ODk5LCAzNDI1NiwgCi0gICAgMzQyNjEsIDM0MjY2LCAzNDI3MCwgMzQyNzQsIDM0Mjc4LCAxNzk1LCAyOTI5MCwgMzQyODIsIDM0Mjg3LCAzMzQ3NiwgCi0gICAgMzQyOTIsIDM0Mjk1LCAzNDMwMCwgMzQzMDUsIDM0MzEwLCAzNDMxNiwgMzQzMjIsIDEwOTc0LCAzNDMyNywgMzQzMzMsIAotICAgIDM0MzQwLCAxNzEzMCwgMzQzNDYsIDM0MzUxLCAzNDM1NiwgMzQzNjAsIDM0MzY1LCAzNDM3MCwgMzM0ODEsIDM0Mzc1LCAKLSAgICAzNDM4MCwgMzQzODUsIDM0MzkxLCAzMzQ4NywgMzQzOTYsIDM0Mzk5LCAzNDQwNiwgMzQ0MTQsIDM0NDIwLCAzNDQyNiwgCi0gICAgMzQ0MzIsIDM0NDQzLCAzNDQ0OCwgMzQ0NTUsIDM0NDYyLCAzNDQ2OSwgMzQ0NzcsIDM0NDg2LCAzNDQ5NSwgMzQ1MDEsIAotICAgIDM0NTA3LCAzNDUxNSwgMzM0OTIsIDM0NTIwLCAzNDUyNiwgMzQ1MzIsIDMzNDk4LCAzNDUzNywgMzQ1NDIsIDM0NTUwLCAKLSAgICAzNDU1OCwgMzQ1NjQsIDM0NTcxLCAzNDU3NywgMzQ1ODQsIDM0NTkxLCAzNDU5NywgMzQ2MDUsIDM0NjE1LCAzNDYyMiwgCi0gICAgMzQ2MjgsIDM0NjMzLCAzNDYzOSwgMzQ2NDQsIDM0NjQ5LCAzNDY1NiwgMzQ2NjUsIDM0NjczLCAzNDY3OCwgMzQ2ODQsIAotICAgIDM0NjkxLCAzNDY5OSwgMzQ3MDUsIDM0NzEwLCAzNDcxNiwgMzQ3MjUsIDM0NzMyLCAzMDEzNSwgMzQ3MzgsIDM0NzQyLCAKLSAgICAzNDc0NywgMzQ3NTYsIDM0NzYxLCAzNDc2NiwgMzQ3NzEsIDEzNTQ4LCAzNDc3OSwgMzQ3ODQsIDM0Nzg5LCAzNDc5NCwgCi0gICAgMzQ3OTgsIDM0ODAzLCAzNDgwOCwgMzQ4MTUsIDM0ODIwLCAzNDgyNSwgMzQ4MzAsIDMzNTAzLCAyMjg5NSwgMzQ4MzYsIAotICAgIDI1NTgsIDE0NCwgMzQ4MzksIDM0ODQyLCAzNDg0NiwgMzQ4NTAsIDM0ODYwLCAzNDg2OCwgMzQ4NzUsIDM0ODc5LCAzNDg4MiwgCi0gICAgMzQ4OTAsIDM0ODk3LCAzNDkwNCwgMzQ5MTMsIDM0OTE3LCAzNDkyMCwgMzQ5MjYsIDM0OTMwLCAzNDkzOCwgMzQ5NDYsIAotICAgIDM0OTUwLCAzNDk1NCwgMzQ5NTcsIDM0OTYzLCAzNDk3MCwgMzQ5NzQsIDM0OTc4LCAzNDk4NSwgMzQ5OTMsIDMzNDM5LCAKLSAgICAzNTAwMCwgMzUwMDgsIDM1MDEzLCAxMTAzNCwgNjIzLCAzNjksIDM1MDI1LCAzNTAzMCwgMzUwMzUsIDM1MDQxLCAzNTA0NiwgCi0gICAgMzUwNTEsIDM4ODcsIDM1MDU2LCAzNTA1OSwgMzUwNjQsIDM1MDY5LCAzNTA3NCwgMzUwNzksIDM1MDg0LCAzNTA5MSwgCi0gICAgMjQzNTYsIDM1MDk2LCAzNTEwMSwgMzUxMDYsIDM1MTExLCAzNTExNiwgMzUxMjIsIDM1MTI3LCAzNTEzMywgMzM2NzksIAotICAgIDM1MTM5LCAzNTE0NCwgMzUxNTAsIDM1MTU2LCAzNTE2NiwgMzUxNzEsIDM1MTc2LCAzNTE4MCwgMzUxODUsIDM1MTkwLCAKLSAgICAzNTE5NSwgMzUyMDAsIDM1MjEzLCAzNTIxOCwgMjQwMTksIDE4MjU1LCAzOTAwLCAzNTIyMiwgMzUyMjgsIDM1MjMzLCAKLSAgICAzNTIzOCwgMzUyNDQsIDM1MjQ5LCAzNTI1NCwgMzUyNTgsIDM1MjYzLCAzNTI2OCwgMzUyNzQsIDM1Mjc5LCAzNTI4NCwgCi0gICAgMTM2MywgMzUyODgsIDM1MjkzLCAzNTI5OCwgMzUzMDMsIDM1MzA3LCAzNTMxMiwgMzUzMTcsIDM1MzIyLCAzNTMyOCwgCi0gICAgMzUzMzQsIDM1MzM5LCAzNTM0MywgMzUzNDcsIDM1MzUyLCAzNTM1NywgMzUzNjIsIDM1MzY2LCAzNTM3NCwgMzUzNzgsIAotICAgIDM1Mzg0LCAzNTM4OCwgMzUzOTUsIDE4MDM5LCAzMzQ1MCwgMzU0MDEsIDM1NDA4LCAzNTQxNiwgMzU0MjMsIDM1NDI5LCAKLSAgICAzNTQ0MiwgMzU0NTQsIDM1NDU5LCAzNTQ2NSwgMzU0NjksIDI4MTIsIDM1NDczLCAzNTQ3NywgMzQ5NjUsIDM1NDg2LCAKLSAgICAzNTQ5NywgMzU1MDIsIDMwMTk4LCAzNTUwNywgMzU1MTIsIDM1NTE2LCAzNTUyMSwgMjQyNDksIDM1NTI1LCAzNTUyOSwgCi0gICAgMzU1MzQsIDMzNDU2LCAyMjk4NSwgMzU1MzgsIDM1NTQzLCAzNTU0OSwgMzU1NTQsIDM1NTU4LCAzNTU2MiwgMzU1NjUsIAotICAgIDM1NTY5LCAzNTU3NSwgMzU1ODQsIDM1NTk1LCAzNTYwNywgMzM0NjIsIDM1NjEyLCAzNTYxNSwgMzU2MTksIDM1NjIzLCAKLSAgICA0MDYsIDM1NjI4LCAzNTYzMywgMzU2MzgsIDM1NjQzLCAzNTY0OCwgMzU2NTMsIDM1NjU5LCAzNTY2NCwgMzU2NjksIAotICAgIDM1Njc1LCAzNTY4MCwgMzU2ODYsIDM1NjkxLCAzNTY5NywgMzU3MDIsIDM1NzA3LCAzNTcxMiwgMzU3MTcsIDM1NzIyLCAKLSAgICAzNTcyNywgMzU3MzIsIDM1NzM3LCAzNTc0MywgMzU3NDgsIDM1NzUzLCAzNTc1OCwgMzU3NjMsIDM1NzY4LCAzNTc3MywgCi0gICAgMzU3NzgsIDM1Nzg0LCAzNTc5MCwgMzU3OTUsIDM1ODAwLCAzNTgwNSwgMzU4MTAsIDM1ODE1LCAzNTgyMCwgMzU4MjUsIAotICAgIDM1ODMwLCAzNTgzNSwgMzU4NDAsIDM1ODQ1LCAzNTg1MCwgMzU4NTUsIDM1ODYwLCAzNTg2NSwgMzU4NzAsIDM1ODc1LCAKLSAgICAzNTg4MCwgMzU4ODYsIDMyNSwgOSwgMzU4OTEsIDM1ODk1LCAzNTg5OSwgMzU5MDcsIDM1OTExLCAzNTkxNSwgMzU5MTgsIAotICAgIDM1OTIxLCAzNTkyMywgMzU5MjgsIDM1OTMyLCAzNTkzNywgMzU5NDEsIDM1OTQ2LCAzNTk1MCwgMzU5NTUsIDM1OTU5LCAKLSAgICAzNTk2MiwgMzU5NjQsIDM1OTY4LCAzNTk3MywgMzU5NzcsIDM1OTg4LCAzNTk5MSwgMzU5OTMsIDM1OTk3LCAzNjAwOSwgCi0gICAgMzYwMTgsIDM2MDIyLCAzNjAyNiwgMzYwMzIsIDM2MDM3LCAzNjA0NiwgMzYwNTIsIDM2MDU3LCAzNjA2MiwgMzYwNjYsIAotICAgIDM2MDcwLCAzNjA3NSwgMzYwODIsIDM2MDg3LCAzNjA5MywgMzYwOTgsIDM2MTAyLCAzNjEwOSwgMjc3MzEsIDI3NzQxLCAKLSAgICAzNjExMywgMzYxMTgsIDM2MTIzLCAzNjEyOCwgMzYxMzUsIDM2MTM5LCAzNjE0NiwgMzYxNTIsIDg0OTEsIDM2MTU2LCAKLSAgICAzNjE2NSwgMzYxNzMsIDM2MTg4LCAzNjIwMiwgMzYyMTEsIDM2MjE5LCAzNjIzMCwgMzYyMzksIDM2MjQ0LCAzNjI1MSwgCi0gICAgNzU1NiwgMzYyNjEsIDM2MjY2LCAzNjI3MSwgMzYyNzUsIDM2Mjc4LCAzNjI4MywgMzYyODcsIDM2MjkyLCAzNjI5NiwgCi0gICAgMzYzMDMsIDM2MzA4LCAzNjMxMywgMzYzMTgsIDkzOTEsIDM2MzI4LCAzNjMzMCwgMzYzMzMsIDM2MzM2LCAzNjM0MCwgCi0gICAgMzYzNDYsIDM2MzUwLCAzNjM1NSwgMzYzNjAsIDM2Mzc4LCAzNjM5MiwgMzY0MTEsIDM2NDI4LCAzNjQzNywgMzY0NDUsIAotICAgIDM2NDUwLCAzNjQ1NSwgMTQ4NiwgMzY0NjEsIDM2NDY3LCAzNjQ3MiwgMzY0ODIsIDM2NDkxLCAzNjQ5OSwgMzY1MDQsIAotICAgIDM2NTEwLCAzNjUxNSwgMzY1MjQsIDM2NTM1LCAzNjU0MCwgMzY1NDcsIDM2NTUxLCAzNjU1OCwgMzY1NjYsIDM2NTczLCAKLSAgICAzNjU4NiwgMzY1OTQsIDM2NTk4LCAzNjYwOCwgMzY2MTMsIDM2NjE3LCAzNjYyNSwgMzY2MzMsIDM2NjM4LCAzNjY0MiwgCi0gICAgMzY2NDYsIDM2NjU1LCAzNjY2MSwgMzY2NjYsIDM2Njc0LCAzNjY4NCwgMzY2OTMsIDM2NzAyLCAzNjcxMSwgMzY3MjIsIAotICAgIDM2NzMwLCAzNjc0MSwgMzY3NTAsIDM2NzU3LCAzNjc2MywgMzY3NjgsIDM2Nzc5LCAzNjc5MCwgMzY3OTUsIDM2Nzk5LCAKLSAgICAzNjgwMiwgMzY4MDYsIDM2ODE0LCAzNjgyMCwgMzY4MzEsIDM2ODQyLCAzNjg1MywgMzY4NjQsIDM2ODc1LCAzNjg4NiwgCi0gICAgMzY4OTcsIDM2OTA4LCAzNjkyMCwgMzY5MzIsIDM2OTQ0LCAzNjk1NiwgMzY5NjgsIDM2OTgwLCAzNjk5MiwgMzY5OTYsIAotICAgIDM3MDA0LCAzNzAxMCwgMzcwMTcsIDM3MDIzLCAzNzAyOCwgMzcwMzQsIDI0NTcsIDM3MDM4LCAzNzA0MCwgMzcwNDUsIAotICAgIDM3MDUwLCAzNzA1NSwgMzcwNTgsIDM3MDYwLCAzNzA2NCwgMzcwNjcsIDM3MDc0LCAzNzA3OCwgMTA2NjQsIDM3MDgyLCAKLSAgICAzNzA4OCwgMzcwOTgsIDM3MTAzLCAzNzEwOSwgMzcxMTMsIDM3MTE4LCAzNzEzMSwgMjgxNjIsIDM3MTM3LCAzNzE0NiwgCi0gICAgMzcxNTUsIDE5MTA0LCAzNzE2MiwgMzcxNzEsIDM0MDg5LCAzNzE3OSwgMzcxODQsIDM3MTg4LCAzNzE5NywgMzcyMDUsIAotICAgIDM3MjEyLCAzNzIxNywgMzcyMjEsIDM3MjI2LCAzNzIzNCwgMzcyMzgsIDM3MjQ2LCAzNzI1MiwgMzcyNTgsIDM3MjYzLCAKLSAgICAzNzI2NywgMzcyNzAsIDM3Mjc1LCAzNzI4OCwgMzczMDQsIDI0ODQwLCAzNzMyMSwgMzczMzMsIDM3MzUwLCAzNzM2MiwgCi0gICAgMzczNzYsIDI0ODU3LCAyNDg3NiwgMzczODgsIDM3NDAwLCAyNzE5LCAzNzQxNCwgMzc0MTksIDM3NDI0LCAzNzQyOSwgCi0gICAgMzc0MzMsIDM3NDQwLCAzNzQ1MiwgMzc0NTksIDM3NDY4LCAzNzQ3MSwgMzc0ODIsIDM3NDkzLCAzNzQ5OCwgMzQ1MTIsIAotICAgIDg1MiwgMzc1MDIsIDM3NTA2LCAzNzUxMCwgMzc1MTMsIDM3NTE4LCAzNzUyMywgMzc1MjksIDM3NTM0LCAzNzUzOSwgCi0gICAgMzc1NDUsIDM3NTUxLCAzNzU1NiwgMzc1NjAsIDM3NTY1LCAzNzU3MCwgMzc1NzUsIDM3NTc5LCAzNzU4MiwgMzc1ODgsIAotICAgIDM3NTkzLCAzNzU5OCwgMzc2MDMsIDM3NjA3LCAzNzYxMiwgMzc2MTgsIDM3NjI2LCAyODQxNCwgMzc2MzEsIDM3NjM2LCAKLSAgICAzNzY0MywgMzc2NDksIDM3NjU1LCAzNzY2MCwgMzc2NjgsIDI0MzY1LCAzNzY3NSwgMzc2ODAsIDM3Njg1LCAzNzY5MCwgCi0gICAgMzc2OTQsIDM3Njk3LCAzNzcwMiwgMzc3MDYsIDM3NzEwLCAzNzcxNywgMzc3MjMsIDM3NzI5LCAzNzczNSwgMzc3NDIsIAotICAgIDM3NzQ3LCAzNzc1MywgMzY2MjgsIDM3NzU3LCAzNzc2MSwgMzc3NjYsIDM3Nzc5LCAzNzc4NCwgMzc3OTAsIDM3Nzk4LCAKLSAgICAzNzgwNSwgMzc4MTMsIDM3ODIzLCAzNzgyOSwgMzc4MzUsIDM3ODQxLCAzNzg0NSwgMzc4NTQsIDM3ODYyLCAzNzg2OSwgCi0gICAgMzc4NzQsIDM3ODc5LCAxMTMzNywgMzc4ODQsIDM3ODkxLCAzNzg5NywgMzc5MDcsIDM3OTEyLCAzNzkxOCwgMzc5MjYsIAotICAgIDM3NzUsIDM3OTMzLCAzNzk0MCwgMzc5NDYsIDM3OTUzLCAzNzgxLCAzNzk1NywgMzc5NjIsIDM3OTczLCAzNzk4MCwgCi0gICAgMzc5ODYsIDM3OTk1LCAzNzk5OSwgNDI0NCwgMzgwMDIsIDM4MDA5LCAzODAxNSwgMzgwMjEsIDM4MDI5LCAzODAzOSwgCi0gICAgMzEzMjYsIDM4MDQ2LCAzODA1NCwgMzgwNjAsIDM4MDY1LCAzODA3MSwgMzgwNzYsIDM4MDgwLCAyODAxMCwgMzgwODYsIAotICAgIDM4MDkzLCAzODA5OSwgMzgxMDgsIDM4MTE1LCAyNTU2NSwgMzgxMjEsIDM4MTI2LCAzODEzMCwgMzgxMzgsIDM4MTQ2LCAKLSAgICAxMDMzMCwgNjE3OSwgMzgxNTMsIDM4MTU3LCAzODE1OSwgMzgxNjMsIDM4MTY4LCAzODE3MCwgMzgxNzUsIDM4MTgxLCAKLSAgICAzODE4NiwgMzgxOTEsIDM4MTk4LCAzNTA4NywgMzgyMDQsIDM4MjA5LCAzODIxMywgMzgyMTgsIDM4MjIyLCAzODIzMSwgCi0gICAgMzgyMzUsIDM4MjQxLCAzODI0OCwgMzgyNTQsIDM4MjYxLCAzODI2NiwgMzgyNzUsIDM4MjgwLCAzODI4NCwgMzgyODksIAotICAgIDM4Mjk2LCAzODMwNCwgMzgzMTIsIDM4MzE3LCAyMzA0MSwgMzgzMjEsIDM4MzI0LCAzODMyOCwgMzgzMzIsIDExNzI1LCAKLSAgICA4NzIsIDM4MzM2LCAzODM0MSwgMzgzNDksIDM4MzUzLCAzODM2MiwgMzgzNjksIDM4MzczLCAzODM3NywgMzgzODUsIAotICAgIDM4MzkyLCAzODQwMiwgMzg0MDYsIDM4NDEwLCAzODQxOCwgMzg0MjYsIDM4NDMyLCAzODQzNywgMzg0NDYsIDE0NTMwLCAKLSAgICAzODQ1MiwgMzg0NjEsIDM4NDY2LCAzODQ3MywgMzg0ODAsIDM4NDg4LCAzODQ5NiwgMzg1MDQsIDM4NTA5LCAzODUxNiwgCi0gICAgMzg1MjMsIDM4NTMwLCAzODUzNywgMzg1NDQsIDM4NTQ5LCAzODU1NSwgMzg1NzIsIDM4NTgwLCAzODU5MCwgMzg1OTgsIAotICAgIDM4NjA1LCA0MTQsIDM4NjA5LCAzODYxNSwgMzg2MTksIDM4NjI0LCAzNjIzNSwgMzg2MzAsIDM4NjMzLCAzODYzNywgCi0gICAgMzg2NDgsIDM4NjU2LCAzNzg2LCAzODY2NCwgMzg2NzAsIDM4Njc2LCAzODY4NiwgMzg2OTUsIDM4NzA1LCAzODcxMiwgCi0gICAgMzg3MTgsIDM4NzIzLCAzNzkyLCAzNzk4LCAzODczMiwgMzg3MzksIDM4NzQ3LCAzODc1MiwgMzg3NTYsIDM4NzYzLCAKLSAgICAzODc3MSwgMzg3NzgsIDM4Nzg0LCAzODc5MywgMzg4MDMsIDM4ODA5LCAzODgxNywgMzg4MjYsIDM4ODMzLCAzODg0MSwgCi0gICAgMzg4NDgsIDIzNzI4LCAzODg1MiwgMzg4NTksIDM4ODY1LCAzODg3NSwgMzg4ODQsIDM4ODkyLCAzODkwMywgMzg5MDcsIAotICAgIDM4OTE3LCAzODkyMywgMzg5MzAsIDM4OTM4LCAzODk0NywgMzg5NTYsIDM4OTY2LCAzODk3NywgMzg5ODQsIDM4OTg5LCAKLSAgICAzODk5NiwgMzA4OCwgMzkwMDQsIDM5MDEwLCAzOTAxNSwgMzkwMjEsIDM5MDI3LCAzOTAzMiwgMzkwNDUsIDM5MDU4LCAKLSAgICAzOTA3MSwgMzkwNzgsIDM5MDg0LCAzOTA5MiwgMzkxMDAsIDM5MTA1LCAzOTEwOSwgMTQ1NSwgMzkxMTMsIDM5MTE3LCAKLSAgICAzOTEyMSwgMzkxMjUsIDM5MTI5LCAzOTEzMywgMzkxMzcsIDM5MTQxLCAzOTE0NSwgMzkxNDksIDM5MTUzLCAzOTE1NywgCi0gICAgMzkxNjEsIDM5MTY1LCAzOTE2OSwgMzkxNzMsIDM5MTc3LCAzOTE4MSwgMzkxODUsIDM5MTg5LCAzOTE5MywgMzkxOTcsIAotICAgIDM5MjAxLCAzOTIwNSwgMzkyMDksIDM5MjEzLCAzOTIxNywgMzkyMjEsIDM5MjI1LCAzOTIyOSwgMzkyMzMsIDM5MjM3LCAKLSAgICAzOTI0MSwgMzkyNDUsIDM5MjQ5LCAzOTI1MywgMzkyNTcsIDM5MjYxLCAzOTI2NSwgMzkyNjksIDM5MjczLCAzOTI3NywgCi0gICAgMzkyODEsIDM5Mjg1LCAzOTI4OSwgMzkyOTMsIDM5Mjk3LCAzOTMwMSwgMzkzMDUsIDM5MzA5LCAzOTMxMywgMzkzMTcsIAotICAgIDM5MzIxLCAzOTMyNSwgMzkzMjksIDM5MzMzLCAzOTMzNywgMzkzNDEsIDM5MzQ1LCAzOTM0OSwgMzkzNTMsIDM5MzU3LCAKLSAgICAzOTM2MSwgMzkzNjUsIDM5MzY5LCAzOTM3MywgMzkzNzcsIDM5MzgxLCAzOTM4NSwgMzkzODksIDM5MzkzLCAzOTM5NywgCi0gICAgMzk0MDEsIDM5NDA1LCAzOTQwOSwgMzk0MTMsIDM5NDE3LCAzOTQyMSwgMzk0MjUsIDM5NDI5LCAzOTQzMywgMzk0MzcsIAotICAgIDM5NDQxLCAzOTQ0NSwgMzk0NDksIDM5NDUzLCAzOTQ1NywgMzk0NjEsIDM5NDY1LCAzOTQ2OSwgMzk0NzMsIDM5NDc3LCAKLSAgICAzOTQ4MSwgMzk0ODUsIDM5NDg5LCAzOTQ5MywgMzk0OTcsIDM5NTAxLCAzOTUwNSwgMzk1MDksIDM5NTEzLCAzOTUxNywgCi0gICAgMzk1MjEsIDM5NTI1LCAzOTUyOSwgMzk1MzMsIDM5NTM3LCAzOTU0MSwgMzk1NDUsIDM5NTQ5LCAzOTU1MywgMzk1NTcsIAotICAgIDM5NTYxLCAzOTU2NSwgMzk1NjksIDM5NTczLCAzOTU3NywgMzk1ODEsIDM5NTg1LCAzOTU4OSwgMzk1OTMsIDM5NTk3LCAKLSAgICAzOTYwMSwgMzk2MDUsIDM5NjA5LCAzOTYxMywgMzk2MTcsIDM5NjIxLCAzOTYyNSwgMzk2MjksIDM5NjMzLCAzOTYzNywgCi0gICAgMzk2NDEsIDM5NjQ1LCAzOTY0OSwgMzk2NTMsIDM5NjU3LCAzOTY2MSwgMzk2NjUsIDM5NjY5LCAzOTY3MywgMzk2NzcsIAotICAgIDM5NjgxLCAzOTY4NSwgMzk2ODksIDM5NjkzLCAzOTY5NywgMzk3MDEsIDM5NzA1LCAzOTcwOSwgMzk3MTMsIDM5NzE3LCAKLSAgICAzOTcyMSwgMzk3MjUsIDM5NzMwLCAzOTczNCwgMzk3MzksIDM5NzQzLCAzOTc0OCwgMzk3NTIsIDM5NzU3LCAzOTc2MSwgCi0gICAgMzk3NjcsIDM5NzcyLCAzOTc3NiwgMzk3ODEsIDM5Nzg1LCAzOTc5MCwgMzk3OTQsIDM5Nzk5LCAzOTgwMywgMzk4MDgsIAotICAgIDM5ODEyLCAzOTgxNywgMzk4MjEsIDM5ODI2LCAzOTgzMCwgMzk4MzYsIDM5ODQyLCAzOTg0NywgMzk4NTEsIDM5ODU2LCAKLSAgICAzOTg2MCwgMzk4NjYsIDM5ODcxLCAzOTg3NSwgMzk4ODAsIDM5ODg0LCAzOTg4OSwgMzk4OTMsIDM5ODk5LCAzOTkwNCwgCi0gICAgMzk5MDgsIDM5OTEzLCAzOTkxNywgMzk5MjIsIDM5OTI2LCAzOTkzMSwgMzk5MzUsIDM5OTQxLCAzOTk0NiwgMzk5NTAsIAotICAgIDM5OTU1LCAzOTk1OSwgMzk5NjUsIDM5OTcwLCAzOTk3NCwgMzk5NzksIDM5OTgzLCAzOTk4OCwgMzk5OTIsIDM5OTk3LCAKLSAgICA0MDAwMSwgNDAwMDYsIDQwMDEwLCA0MDAxNiwgNDAwMjEsIDQwMDI1LCA0MDAzMSwgNDAwMzYsIDQwMDQwLCA0MDA0NiwgCi0gICAgNDAwNTEsIDQwMDU1LCA0MDA2MCwgNDAwNjQsIDQwMDY5LCA0MDA3MywgNDAwNzksIDQwMDg1LCA0MDA5MSwgNDAwOTcsIAotICAgIDQwMTAzLCA0MDEwOSwgNDAxMTUsIDQwMTIxLCA0MDEyNiwgNDAxMzAsIDQwMTM1LCA0MDEzOSwgNDAxNDUsIDQwMTUwLCAKLSAgICA0MDE1NCwgNDAxNTksIDQwMTYzLCA0MDE2OCwgNDAxNzIsIDQwMTc3LCA0MDE4MSwgNDAxODYsIDQwMTkwLCA0MDE5NSwgCi0gICAgNDAxOTksIDQwMjA0LCA0MDIwOCwgNDAyMTQsIDQwMjE5LCA0MDIyMywgNDAyMjgsIDQwMjMyLCA0MDIzOCwgNDAyNDQsIAotICAgIDQwMjQ5LCAxMTYsIDU3LCA0MDI1MywgNDAyNTUsIDQwMjU5LCA0MDI2MywgNDAyNjcsIDQwMjcyLCA0MDI3NiwgNDAyODAsIAotICAgIDEwMjUxLCA0MDI4NSwgNDAyOTEsIDE3NTYsIDY1OTcsIDQwMjk3LCA0MDMwMCwgNDAzMDUsIDQwMzA5LCA0MDMxNCwgCi0gICAgNDAzMTgsIDQwMzIyLCA0MDMyNywgMTExMjEsIDQwMzMxLCA0MDMzNSwgNDAzMzksIDUyNSwgNDAzNDMsIDE2NzgzLCAKLSAgICA0MDM0OCwgNDAzNTIsIDQwMzU3LCA0MDM2MiwgNDAzNjcsIDQwMzcxLCA0MDM3OCwgMjgxODYsIDQwMzg0LCA0MDM4NywgCi0gICAgNDAzOTEsIDQwMzk2LCA0MDQwMiwgNDA0MDYsIDQwNDA5LCA0MDQxNywgNDA0MjMsIDQwNDI4LCA0MDQzMiwgNDA0MzUsIAotICAgIDQwNDM5LCA0MDQ0NSwgNDA0NDksIDQwNDUzLCAzNTg0LCAzNTg5LCAzMTUzNywgNDA0NTYsIDQwNDYwLCA0MDQ2NCwgCi0gICAgNDA0NjgsIDQwNDcyLCA0MDQ4MCwgNDA0ODcsIDQwNDkxLCAxNDQ4MCwgNDA0OTgsIDQwNTAzLCA0MDUxNywgNDA1MjQsIAotICAgIDQwNTM1LCAzMzUsIDQwNTQwLCA0MDU0NCwgNDA1NTAsIDQwNTYyLCA0MDU2OCwgNDA1NzQsIDMxNTc0LCA0MDU3OCwgCi0gICAgNDA1ODQsIDQwNTkzLCA0MDU5NywgNDA2MDEsIDQwNjA2LCA0MDYxMiwgNDA2MTcsIDQwNjIxLCA0MDYyNiwgNDA2MzAsIAotICAgIDQwNjM0LCA0MDY0MSwgNDA2NDcsIDQwNjUyLCA0MDY2NywgNDA2ODIsIDQwNjk3LCA0MDcxMywgNDA3MzEsIDExMDcxLCAKLSAgICA0MDc0NSwgNDA3NTIsIDQwNzU2LCA0MDc1OSwgNDA3NjgsIDQwNzczLCA0MDc3NywgNDA3ODUsIDE3MzMzLCA0MDc5MywgCi0gICAgNDA3OTcsIDQwODA3LCA0MDgxOCwgMzE1MDcsIDQwODMxLCA0MDgzNSwgNDA4NDQsIDQwODYyLCA0MDg4MSwgNDA4ODksIAotICAgIDEwNTI1LCAxMTIzNCwgNDA4OTMsIDI0MjYxLCA0MDg5NiwgMzI0NzUsIDQwOTAxLCAxMDUyNCwgNDA5MDYsIDQwOTEyLCAKLSAgICA0MDkxNywgNDA5MjMsIDQwOTI4LCA0MDkzNCwgNDA5MzksIDQwOTQ1LCA0MDk1MCwgNDA5NTYsIDQwOTYyLCA0MDk2OCwgCi0gICAgNDA5NzMsIDQwOTI5LCA0MDkzNSwgNDA5NDAsIDQwOTQ2LCA0MDk1MSwgNDA5NTcsIDQwOTYzLCA4NTA0LCA0MDg5LCAKLSAgICA0MDk3NywgNDA5ODUsIDQwOTg5LCA0MDk5MiwgNDA5OTYsIDQxMDAxLCA0MTAwNiwgNDEwMTMsIDQxMDE5LCA0MTAyNSwgCi0gICAgNDEwMzAsIDE2MTc0LCA0MTAzNCwgMjgwMjIsIDQxMDM4LCA0MTA0MiwgNDEwNDYsIDQxMDUyLCA0MTA1NiwgMzAwNzUsIAotICAgIDQxMDY1LCA5NTQ0LCA0MTA2OSwgOTkzNywgNDEwNzIsIDQxMDc5LCA0MTA4NSwgNDEwODksIDEzMDA0LCA0MTA5NiwgCi0gICAgNDExMDIsIDQxMTA3LCA0MTExNCwgNDExMjEsIDQxMTI4LCAzMDc4MSwgODQxMCwgNDExMzUsIDQxMTQyLCA0MTE0OSwgCi0gICAgNDExNTUsIDQxMTYwLCA0MTE2NywgNDExNzgsIDQxMTg0LCA0MTE4OSwgNDExOTQsIDQxMTk5LCA0MTIwMywgNDEyMDgsIAotICAgIDQxMjE1LCA0MDkzMCwgNDEyMTksIDQxMjI5LCA0MTIzOCwgNDEyNDksIDQxMjU1LCA0MTI2MywgNDEyNzAsIDQxMjc1LCAKLSAgICA0MTI4MCwgNDEyODUsIDQxMjkwLCA0MTI5NSwgNDEyOTksIDQxMzAzLCA0MTMxMCwgNDEzMTYsIDQxMzI0LCAyMzUzLCAKLSAgICAxMDUwLCAxMTEzNywgMTExNDksIDExMTU0LCAxMTE2MCwgNDEzMzMsIDExMTY1LCAxMTE3MCwgMTExNzYsIDQxMzM4LCAKLSAgICA0MTM0OCwgNDEzNTIsIDExMTgxLCA0MTM1NywgMTg0NTMsIDQxMzYwLCA0MTM2NSwgNDEzNjksIDM3NDYzLCA0MTM4MCwgCi0gICAgNDEzODUsIDQxMzkyLCA0MTM5OSwgNDE0MDMsIDQxNDA2LCA0MTQxNCwgMTEwODQsIDQxNDIxLCA0MTQyNCwgNDE0MzAsIAotICAgIDQxNDQwLCA2MjMxLCA0MTQ0OSwgNDE0NTUsIDQxNDU5LCA0MTQ2NywgNDE0NzEsIDQxNDgxLCA0MTQ4NywgNDE0OTIsIAotICAgIDQxNTAzLCA0MTUxMiwgNDE1MjEsIDQxNTMwLCA0MTUzOSwgNDE1NDgsIDQxNTU3LCA0MTU2NiwgNDE1NzIsIDQxNTc4LCAKLSAgICA0MTU4MywgNDE1ODksIDQxNTk1LCA0MTYwMSwgNDE2MDYsIDQxNjA5LCA0MTYxNiwgNDE2MjIsIDQxNjI2LCA0MTYzMSwgCi0gICAgNDE2MzgsIDQxNjQ1LCA0MTY0OSwgNDE2NTIsIDQxNjYyLCA0MTY3NSwgNDE2ODQsIDQxNjkzLCA0MTcwNCwgNDE3MTcsIAotICAgIDQxNzI5LCA0MTc0MCwgNDE3NDksIDQxNzYwLCA0MTc2NSwgNDE3NzQsIDQxNzc5LCAxMTE4NiwgNDE3ODUsIDQxNzkyLCAKLSAgICA0MTgwMCwgNDE4MDUsIDQxODA5LCA0MTgxNiwgNDE4MjMsIDQwNDEsIDIwLCA0MTgyNywgNDE4MzIsIDE4MzAyLCA0MTgzNiwgCi0gICAgNDE4MzksIDQxODQyLCAzMDI1NSwgNDE4NDYsIDMwNzkwLCA0MTg1NCwgNDE4NTgsIDQxODYyLCA0MTg2NSwgNDE4NzEsIAotICAgIDQxODc3LCAzMzUyNywgNDE4ODIsIDQxODkwLCA0MTg5NiwgNDE5MDMsIDMwMjM4LCA0MTkwNywgMzA0NDEsIDQxOTExLCAKLSAgICA0MTkyMCwgNDE5MjQsIDQxOTMyLCA0MTkzOCwgNDE5NDQsIDQxOTQ5LCA0MTk1MywgMzA4MDksIDQxOTU5LCA0MTk2MiwgCi0gICAgNDE5NzAsIDQxOTc4LCA0Mzc5LCA0MTk4NCwgNDE5ODgsIDQxOTkzLCA0MjAwMCwgNDIwMDYsIDQyMDExLCA0MjAxNiwgCi0gICAgNDIwMjAsIDQyMDI2LCA0MjAzMSwgNDIwMzcsIDQyOTcsIDk0NCwgNDIwNDQsIDQyMDQ4LCA0MjA1MSwgMTY2NjQsIDQyMDYzLCAKLSAgICA0MjA3MSwgNDIwNzksIDQyMDg3LCA0MjA5NSwgNDIxMDIsIDQyMTEwLCA0MjExOCwgNDIxMjUsIDQyMTMzLCA0MjE0MSwgCi0gICAgNDIxNDksIDQyMTU3LCA0MjE2NSwgNDIxNzMsIDQyMTgxLCA0MjE4OSwgNDIxOTcsIDQyMjA1LCA0MjIxMywgNDIyMjAsIAotICAgIDQyMjI4LCA0MjIzNiwgNDIyNDQsIDQyMjUyLCA0MjI2MCwgNDIyNjgsIDQyMjc2LCA0MjI4NCwgNDIyOTIsIDQyMzAwLCAKLSAgICA0MjMwOCwgNDIzMTYsIDQyMzI0LCA0MjMzMiwgNDIzNDAsIDQyMzQ4LCA0MjM1NiwgNDIzNjQsIDQyMzcyLCA0MjM3OSwgCi0gICAgNDIzODcsIDQyMzk0LCA0MjQwMiwgNDI0MTAsIDQyNDE4LCA0MjQyNiwgNDI0MzQsIDQyNDQyLCA0MjQ1MCwgNDI0NTgsIAotICAgIDQyNDY5LCAyMzc2NCwgNDI0NzQsIDQyNDc3LCA0MjQ4NCwgNDI0ODgsIDQyNDk0LCA0MjQ5OCwgNDI1MDQsIDQyNTA5LCAKLSAgICA0MjUxNSwgNDI1MjAsIDQyNTI1LCA0MjUyOSwgNDI1MzMsIDQyNTM4LCA0MjU0MywgNDI1NTMsIDQyNTU5LCA0MjU3MiwgCi0gICAgNDI1NzgsIDQyNTg0LCA0MjU5MCwgNDI1OTcsIDQyNjAyLCA0MjYwOCwgNDI2MTMsIDE4MTk4LCAxNDU4LCA4MzEsIDQyNjE4LCAKLSAgICA0MjYyMSwgNDI2MjQsIDQyNjI3LCAzMzYxMSwgMzM2MTcsIDQyNjMwLCAzMzYyMywgMzM2MzYsIDMzNjQyLCAzMzY0OCwgCi0gICAgNDI2MzYsIDMzNjU0LCAzMzY2MCwgNDI2NDIsIDQyNjQ4LCAyNiwgNDI2NTYsIDQyNjYzLCA0MjY2NywgNDI2NzEsIDQyNjc5LCAKLSAgICAzNDQwMSwgNDI2ODMsIDQyNjg3LCA0MjY5NCwgNDI2OTksIDQyNzAzLCA0MjcwOCwgNDI3MTQsIDQyNzE5LCA0MjcyNSwgCi0gICAgNDI3MzAsIDQyNzM0LCA0MjczOCwgNDI3NDIsIDQyNzQ3LCA0Mjc1MSwgNDI3NTYsIDQyNzYwLCA0Mjc2NCwgNDI3NzEsIAotICAgIDQyNzc2LCA0Mjc4MCwgNDI3ODQsIDQyNzg5LCA0Mjc5MywgNDI3OTgsIDQyODAyLCA0MjgwNiwgNDI4MTEsIDQyODE3LCAKLSAgICAxNjkyNCwgMTY5MjksIDQyODIyLCA0MjgyNiwgNDI4MjksIDQyODMzLCA0MjgzNywgMjI4NTIsIDQyODQyLCA0Mjg0NiwgCi0gICAgNDI4NTIsIDQyODU5LCA0Mjg2NSwgNDI4NzAsIDQyODgwLCA0Mjg4NSwgNDI4OTMsIDQyODk3LCA0MjkwMCwgMzQ0MTYsIAotICAgIDQyOTA0LCA0MzU2LCA0MjkwOSwgNDI5MTQsIDQyOTE4LCA0MjkyMywgNDI5MjcsIDQyOTMyLCAxNDU0OCwgNDI5NDMsIAotICAgIDQyOTQ3LCA0Mjk1MCwgNDI5NTQsIDQyOTU5LCA0Mjk2MywgNDI5NjgsIDQyOTczLCA0Mjk3NywgNDI5ODEsIDQyOTg1LCAKLSAgICA0Mjk4OCwgNDI5OTIsIDg1MjMsIDE0NTY0LCA0Mjk5NSwgNDI5OTgsIDQzMDA0LCA0MzAwOSwgNDMwMTUsIDQzMDIwLCAKLSAgICA0MzAyNiwgNDMwMzEsIDQzMDM3LCA0MzA0MiwgNDMwNDgsIDQzMDU0LCA0MzA2MCwgNDMwNjUsIDQzMDY5LCA0MzA3MywgCi0gICAgNDMwODIsIDQzMDk4LCA0MzExNCwgNDMxMjQsIDMwMTQ1LCA0MzEzMSwgNDMxMzUsIDQzMTQwLCA0MzE0NSwgNDMxNDksIAotICAgIDQzMTUzLCAzODk1MSwgNDMxNTksIDQzMTY0LCA0MzE2OCwgNDMxNzUsIDQzMTgwLCA0MzE4NSwgNDMxODksIDQzMTkzLCAKLSAgICA0MzE5OSwgMjkwOTMsIDQzMjAzLCAyMzEzNiwgNDMyMDgsIDQzMjE1LCA0MzIyMywgNDMyMjksIDQzMjM2LCA0MzI0NCwgCi0gICAgNDMyNTAsIDQzMjU0LCA0MzI1OSwgNDMyNjUsIDQzMjczLCA0MzI3OCwgNDMyODIsIDQzMjkxLCAxMDIzMiwgNDMyOTksIAotICAgIDQzMzAzLCA0MzMxMSwgNDMzMTgsIDQzMzIzLCA0MzMyOCwgNDMzMzMsIDQzMzM3LCA0MzM0MCwgNDMzNDQsIDQzMzQ3LCAKLSAgICA0MzM1MSwgNDMzNTgsIDQzMzYzLCA0MzM2NywgNDMzNzMsIDI4NDkyLCAzMzY3NCwgNDMzNzcsIDQzMzg2LCA0MzM5NCwgCi0gICAgNDM0MDAsIDQzNDA3LCA0MzQxMywgNDM0MTksIDQzNDI0LCA0MzQyNywgNDM0MjksIDQzNDM2LCA0MzQ0MywgNDM0NDksIAotICAgIDQzNDUzLCA0MzQ1NiwgNDM0NjAsIDQzNDY0LCA0MzQ2OCwgNDM0NzMsIDQzNDc3LCA0MzQ4MSwgNDM0ODQsIDQzNDg4LCAKLSAgICA0MzUwMiwgMjQ5MDYsIDQzNTIxLCA0MzUzNCwgNDM1NDcsIDQzNTYwLCAyNDkyNCwgNDM1NzUsIDExNDIyLCA0MzU5MCwgCi0gICAgNDM1OTYsIDQzNjAwLCA0MzYwNCwgNDM2MDgsIDQzNjEyLCA0MzYxOSwgNDM2MjQsIDQzNjI4LCA0MzYzNSwgNDM2NDEsIAotICAgIDQzNjQ2LCA0MzY1MiwgNDM2NjIsIDQzNjc0LCA0MzY4NSwgNDM2OTAsIDQzNjk3LCA0MzcwMSwgNDM3MDUsIDQzNzA4LCAKLSAgICAxNzM0MywgMzg1NSwgNDM3MTYsIDE2OTUxLCA0MzcyOSwgNDM3MzYsIDQzNzQzLCA0Mzc0NywgNDM3NTEsIDQzNzU2LCAKLSAgICA0Mzc2MiwgNDM3NjcsIDQzNzczLCA0Mzc3NywgNDM3ODEsIDQzNzg0LCA0Mzc4OSwgNDM3OTMsIDQzNzk4LCA4MDgyLCAKLSAgICAxNjk2MiwgNDM4MDMsIDQzODA3LCA0MzgxMywgNDM4MjIsIDQzODI3LCA0MzgzNiwgNDM4NDMsIDM4Nzk5LCA0Mzg0OSwgCi0gICAgNDM4NTQsIDQzODU4LCA0Mzg2MywgNDM4NzAsIDQzODc2LCA0Mzg4MCwgNDM4ODMsIDQzODg3LCA0Mzg5MiwgMTU4NjQsIAotICAgIDQzODk5LCA0MzkwNiwgNDM5MTAsIDQzOTEzLCA0MzkxOCwgNDM5MjMsIDQzOTI5LCA0MzkzNCwgNDM5MzksIDQzOTQzLCAKLSAgICA0Mzk0OCwgNDM5NTgsIDQzOTYzLCA0Mzk2OSwgNDM5NzQsIDQzOTgwLCA0Mzk4NSwgNDM5OTEsIDQ0MDAxLCA0NDAwNiwgCi0gICAgNDQwMTEsIDQ0MDE1LCA0NDAyMCwgNzU1OCwgNzU3MCwgNDQwMjUsIDQ0MDI4LCA0NDAzNSwgNDQwNDEsIDQ0MDUwLCA5NDc3LCAKLSAgICAzNjc2MCwgNDQwNTgsIDQ0MDYyLCA0NDA2NiwgMzQ0NjQsIDQ0MDc0LCA0NDA4NSwgNDQwOTMsIDM4OTk5LCA0NDEwMCwgCi0gICAgNDQxMDUsIDQ0MTEwLCA0NDEyMSwgNDQxMjgsIDQ0MTM5LCAzNDQ4OCwgMjMxNDcsIDQ0MTQ3LCA5MDcsIDQ0MTUyLCAKLSAgICAxNDkxMywgNDQxNTgsIDMwMjI5LCA0NDE2NCwgNDQxNjksIDQ0MTc5LCA0NDE4OCwgNDQxOTUsIDQ0MjAxLCA0NDIwNSwgCi0gICAgNDQyMDgsIDQ0MjE1LCA0NDIyMSwgNDQyMjgsIDQ0MjM0LCA0NDI0NCwgNDQyNTIsIDQ0MjU4LCA0NDI2NCwgNDQyNjksIAotICAgIDQ0MjczLCA0NDI4MCwgNDQyODUsIDQ0MjkxLCA0NDI5OCwgNDQzMDQsIDQzNDY5LCA0NDMwOSwgNDQzMTMsIDU1OCwgCi0gICAgMTUwMjksIDQ0MzE5LCA0NDMyNCwgNDQzMjcsIDQ0MzMzLCA0NDM0MSwgMTM4MCwgNDQzNDYsIDQ0MzUwLCA0NDM1NSwgCi0gICAgNDQzNjAsIDQ0MzY1LCA0NDM3MiwgNDQzNzYsIDQ0MzgxLCA0NDM4NywgNDQzOTEsIDMzNjg0LCA0NDM5NiwgNDQ0MDEsIAotICAgIDQ0NDEwLCA0NDQxNywgNDQ0MjcsIDQ0NDMzLCAzMDI3MywgNDQ0NTAsIDQ0NDU5LCA0NDQ2NywgNDQ0NzMsIDQ0NDc4LCAKLSAgICA0NDQ4NSwgNDQ0OTEsIDQ0NDk5LCA0NDUwOCwgNDQ1MTYsIDQ0NTIwLCA0NDUyNSwgNDQ1MzMsIDMxMjUxLCAzNDQ5NywgCi0gICAgNDQ1MzksIDQ0NTU4LCAxNzI1NywgNDQ1NzIsIDQ0NTg4LCA0NDYwMiwgNDQ2MDgsIDQ0NjEzLCA0NDYxOCwgNDQ2MjMsIAotICAgIDQ0NjI5LCAzNDUwMywgNDQ2MzQsIDQ0NjM3LCA0NDY0NCwgNDQ2NDksIDQ0NjUzLCA0MDQsIDI5OTUsIDQ0NjYwLCA0NDY2NSwgCi0gICAgNDQ2NzAsIDI5NDUxLCA0NDQ4OCwgNDQ2NzQsIDQ0Njc5LCA0NDY4NywgNDQ2OTEsIDQ0Njk0LCA0NDY5OSwgNDQ3MDUsIAotICAgIDQ0NzExLCA0NDcxNiwgNDQ3MjAsIDMwMzI4LCA0NDcyMywgNDQ3MjgsIDQ0NzMyLCA0NDczNSwgNDQ3NDAsIDQ0NzQ0LCAKLSAgICA0NDc0OSwgNDQ3NTQsIDQ0NzU4LCA0NDc2MywgNDQ3NjcsIDQ0NzcxLCA0NDc3NSwgMjI4NDgsIDIyODU5LCA0NDc4MCwgCi0gICAgNDQ3ODUsIDQ0NzkxLCA0NDc5NiwgNDQ4MDIsIDI5MDUwLCA0NDgwNywgNDQ4MTEsIDIyOTQ1LCAxNzU0OSwgNDQ4MTQsIAotICAgIDQ0ODE5LCA0NDgyNCwgNDQ4MjksIDQ0ODM0LCA0NDgzOSwgNDQ4NDQsIDQ0ODQ5LCA0NzQsIDY4LCAzMzY5NywgMzM3MDIsIAotICAgIDMzNzA3LCAzMzcxMywgMzM3MTgsIDMzNzIzLCA0NDg1NCwgMzM3MjcsIDQ0ODU4LCA0NDg2MiwgNDQ4NjYsIDMzNzMyLCAKLSAgICAzMzczOCwgNDQ4ODAsIDMzNzQ5LCAzMzc1NCwgNDQ4ODgsIDQ0ODkzLCAzMzc2MCwgNDQ4OTgsIDQ0OTAzLCA0NDkwOCwgCi0gICAgNDQ5MTMsIDQ0OTE5LCA0NDkyNSwgNDQ5MzEsIDMzNzc3LCA0NDk0NCwgNDQ5NTMsIDQ0OTU5LCAzMzc4MSwgNDQ5NjMsIAotICAgIDMzNzg2LCA0NDk2OCwgMzM3OTEsIDMzNzk2LCA0NDk3MSwgNDQ5NzYsIDQ0OTgwLCA0NDk4NiwgMzMzMzIsIDQ0OTkzLCAKLSAgICAxNDc5NCwgNDUwMDAsIDQ1MDA1LCAzMzgwMSwgNDUwMDksIDQ1MDE0LCA0NTAxOSwgNDUwMjQsIDQ1MDI4LCA0NTAzMywgCi0gICAgNDUwMzgsIDQ1MDQ0LCA0NTA0OSwgNDUwNTQsIDQ1MDYwLCA0NTA2NiwgNDUwNzEsIDQ1MDc1LCA0NTA4MCwgNDUwODUsIAotICAgIDQ1MDkwLCA0NTA5NCwgNDUwOTksIDQ1MTA0LCA0NTEwOSwgNDUxMTUsIDQ1MTIxLCA0NTEyNywgNDUxMzIsIDQ1MTM2LCAKLSAgICA0NTE0MSwgNDUxNDUsIDMzODA1LCAzMzgxMCwgMzM4MTUsIDQ1MTQ5LCA0NTE1MywgNDUxNTcsIDMzODIwLCAzMzgyNiwgCi0gICAgMzM4MzIsIDMzODQ0LCA0NTE2OSwgMjgwNTksIDQ1MTczLCA0NTE3OCwgNDUxODIsIDQ1MTg3LCA0NTE5NCwgNDUxOTksIAotICAgIDQ1MjA0LCA0NTIwOSwgNDUyMTMsIDQ1MjE3LCA0NTIyNywgNDUyMzIsIDQ1MjM3LCA0NTI0MSwgNDUyNDUsIDQ1MjQ4LCAKLSAgICA0NTI1NiwgMzM4OTIsIDQ1MjYxLCAxNDY1LCA0NTI2NywgNDUyNzIsIDQ1Mjc4LCA0NTI4NiwgNDUyOTAsIDQ1Mjk5LCAKLSAgICA0NTMwMywgNDUzMDcsIDQ1MzE1LCA0NTMyMSwgNDUzMjksIDQ1MzQ1LCA0NTM0OSwgNDUzNTMsIDQ1MzU3LCA0NTM2MiwgCi0gICAgNDUzNjgsIDQ1MzgzLCAzMzkyOSwgMTc2NCwgMTMxOTgsIDQ1Mzg3LCAxMzU5LCAxMzc0LCA0NTM5OSwgNDU0MDcsIDQ1NDE0LCAKLSAgICA0NTQxOSwgNDU0MjYsIDQ1NDMxLCA5OTIyLCAxMTM5LCAyNTQ0LCAxMTIxMywgNDU0MzgsIDk4MjAsIDQ1NDQzLCA0NTQ0NiwgCi0gICAgNDU0NTUsIDEyNjcsIDQ1NDYwLCA0MzYyNSwgNDU0NjcsIDQ1NDc2LCA0NTQ4MSwgNDU0ODUsIDQ1NDkzLCAyNDMxNywgCi0gICAgMjU5NiwgNDU1MDAsIDExNjc4LCA0NTUxMCwgNDU1MTYsIDIzNzEsIDIzODEsIDQ1NTI1LCA0NTUzNCwgNDU1NDQsIDQ1NTU1LCAKLSAgICAzMzc2LCAzNzA5OSwgNDU1NjAsIDExMjc3LCA0MDE5LCAxODIzNiwgMTI3MiwgNDU1NjQsIDQ1NTcyLCA0NTU3OSwgNDU1ODQsIAotICAgIDQ1NTg4LCA0NTU5MiwgMjU3OTIsIDQzODk0LCAxMTMwNCwgNDU2MDAsIDQ1NjA5LCA0NTYxOCwgNDU2MjYsIDQ1NjMzLCAKLSAgICA0NTY0NCwgNDU2NDksIDQ1NjYyLCA0NTY3NSwgNDU2ODcsIDQ1Njk5LCA0NTcxMSwgNDU3MjIsIDQ1NzM1LCA0NTc0NiwgCi0gICAgNDU3NTcsIDQ1NzY3LCA0NTc3NSwgNDU3ODMsIDQ1Nzk1LCA0NTgwNywgNDU4MTgsIDQ1ODI3LCA0NTgzNSwgNDU4NDIsIAotICAgIDQ1ODU0LCA0NTg2MSwgNDU4NjcsIDQ1ODc2LCA0NTg4MywgNDU4OTYsIDQ1OTAxLCA0NTkxMSwgNDU5MTYsIDQ1OTIyLCAKLSAgICA0NTkyNywgNDEwODYsIDQ1OTMxLCA0NTkzOCwgNDU5NDIsIDQ1OTQ5LCA0NTk1NywgNDU5NjQsIDI1NTcsIDQ1OTcxLCAKLSAgICA0NTk4MiwgNDU5OTIsIDQ2MDAxLCA0NjAwOSwgNDYwMTksIDQ2MDI3LCA0NjAzNywgNDYwNDYsIDQ2MDUxLCA0NjA1NywgCi0gICAgNDYwNjMsIDM4OTksIDQ2MDc0LCA0NjA4NCwgNDYwOTMsIDQ2MTAyLCA0NjExMCwgNDYxMjAsIDQ2MTI4LCA0NjEzNywgCi0gICAgNDYxNDIsIDQ2MTQ3LCA0NjE1MiwgMTY5NCwgNDcsIDQ2MTYwLCA0NjE2OCwgNDYxNzksIDQ2MTkwLCAxNzg3NSwgNDYyMDAsIAotICAgIDQ2MjA0LCA0NjIxMSwgNDYyMTcsIDQ2MjIyLCA0NjIyNiwgNDYyMzcsIDQ2MjQ3LCA0NjI1NiwgNDYyNjcsIDE4Mjc1LCAKLSAgICAxODI4MCwgNDYyNzIsIDQ2MjgxLCA0NjI4NiwgNDYyOTYsIDQ2MzAxLCA0NjMwOSwgNDYzMTcsIDQ2MzI0LCA0NjMzMCwgCi0gICAgMTY1NiwgMjc3LCA0NjMzNCwgNDYzNDAsIDQ2MzQ1LCA0NjM0OCwgMjE0MywgNDM3NDgsIDQ2MzU2LCA0NjM2MCwgNDYzNjMsIAotICAgIDE1MTAsIDQ2MzY5LCAxNTIxNCwgMTI3NywgNDYzNzQsIDQ2Mzg3LCA0NjQwMSwgMjY4MiwgNDY0MTksIDQ2NDMxLCA0NjQ0MywgCi0gICAgMjY5NiwgMjcxMywgNDY0NTcsIDQ2NDcwLCAyNzI4LCA0NjQ4NCwgNDY0OTYsIDI3NDMsIDQ2NTEwLCAxMjgzLCAxMjg5LCAKLSAgICAxMjk1LCAxMTU4NCwgNDY1MTUsIDQ2NTIwLCA0NjUyNSwgNDY1MjksIDQ2NTQ0LCA0NjU1OSwgNDY1NzQsIDQ2NTg5LCAKLSAgICA0NjYwNCwgNDY2MTksIDQ2NjM0LCA0NjY0OSwgNDY2NjQsIDQ2Njc5LCA0NjY5NCwgNDY3MDksIDQ2NzI0LCA0NjczOSwgCi0gICAgNDY3NTQsIDQ2NzY5LCA0Njc4NCwgNDY3OTksIDQ2ODE0LCA0NjgyOSwgNDY4NDQsIDQ2ODU5LCA0Njg3NCwgNDY4ODksIAotICAgIDQ2OTA0LCA0NjkxOSwgNDY5MzQsIDQ2OTQ5LCA0Njk2NCwgNDY5NzksIDQ2OTk0LCA0NzAwOSwgNDcwMjQsIDQ3MDM5LCAKLSAgICA0NzA1NCwgNDcwNjksIDQ3MDg0LCA0NzA5OSwgNDcxMTQsIDQ3MTI5LCA0NzE0NCwgNDcxNTksIDQ3MTc0LCA0NzE4OSwgCi0gICAgNDcyMDQsIDQ3MjE5LCA0NzIzNCwgNDcyNDksIDQ3MjY0LCA0NzI3OSwgNDcyOTQsIDQ3MzA5LCA0NzMyNCwgNDczMzksIAotICAgIDQ3MzU0LCA0NzM2OSwgNDczODQsIDQ3Mzk5LCA0NzQxNCwgNDc0MjksIDQ3NDQ0LCA0NzQ1OSwgNDc0NzQsIDQ3NDg5LCAKLSAgICA0NzUwNCwgNDc1MTksIDQ3NTM0LCA0NzU0OSwgNDc1NjQsIDQ3NTc5LCA0NzU5NCwgNDc2MDksIDQ3NjI0LCA0NzYzOSwgCi0gICAgNDc2NTQsIDQ3NjY5LCA0NzY4NCwgNDc2OTksIDQ3NzE0LCA0NzcyOSwgNDc3NDQsIDQ3NzU5LCA0Nzc3NCwgNDc3ODksIAotICAgIDQ3ODA0LCA0NzgxOSwgNDc4MzQsIDQ3ODQ5LCA0Nzg2NCwgNDc4NzksIDQ3ODk0LCA0NzkwOSwgNDc5MjQsIDQ3OTM5LCAKLSAgICA0Nzk1NCwgNDc5NjksIDQ3OTg0LCA0Nzk5OSwgNDgwMTQsIDQ4MDI5LCA0ODA0NCwgNDgwNTksIDQ4MDc0LCA0ODA4OSwgCi0gICAgNDgxMDQsIDQ4MTE5LCA0ODEzNCwgNDgxNDksIDQ4MTY0LCA0ODE3OSwgNDgxOTQsIDQ4MjA5LCA0ODIyNCwgNDgyMzksIAotICAgIDQ4MjU0LCA0ODI2OSwgNDgyODQsIDQ4Mjk5LCA0ODMxNCwgNDgzMjksIDQ4MzQ0LCA0ODM1OSwgNDgzNzQsIDQ4Mzg5LCAKLSAgICA0ODQwNCwgNDg0MTksIDQ4NDM0LCA0ODQ0OSwgNDg0NjQsIDQ4NDc5LCA0ODQ5NCwgNDg1MDksIDQ4NTI0LCA0ODUzOSwgCi0gICAgNDg1NTQsIDQ4NTY5LCA0ODU4NCwgNDg1OTksIDQ4NjE0LCA0ODYyOSwgNDg2NDQsIDQ4NjU5LCA0ODY3NCwgNDg2ODksIAotICAgIDQ4NzA0LCA0ODcxOSwgNDg3MzQsIDQ4NzQ5LCA0ODc2NCwgNDg3NzksIDQ4Nzk0LCA0ODgwOSwgNDg4MjQsIDQ4ODM5LCAKLSAgICA0ODg1NCwgNDg4NjksIDQ4ODg0LCA0ODg5OSwgNDg5MTQsIDQ4OTI5LCA0ODk0NCwgNDg5NTksIDQ4OTc0LCA0ODk4OSwgCi0gICAgNDkwMDQsIDQ5MDE5LCA0OTAzNCwgNDkwNDksIDQ5MDY0LCA0OTA3OSwgNDkwOTQsIDQ5MTA5LCA0OTEyNCwgNDkxMzksIAotICAgIDQ5MTU0LCA0OTE2OSwgNDkxODQsIDQ5MTk5LCA0OTIxNCwgNDkyMjksIDQ5MjQ0LCA0OTI1OSwgNDkyNzQsIDQ5Mjg5LCAKLSAgICA0OTMwNCwgNDkzMTksIDQ5MzM0LCA0OTM0OSwgNDkzNjQsIDQ5Mzc5LCA0OTM5NCwgNDk0MDksIDQ5NDI0LCA0OTQzOSwgCi0gICAgNDk0NTQsIDQ5NDY5LCA0OTQ4NCwgNDk0OTksIDQ5NTE0LCA0OTUyOSwgNDk1NDQsIDQ5NTU5LCA0OTU3NCwgNDk1ODksIAotICAgIDQ5NjA0LCA0OTYxOSwgNDk2MzQsIDQ5NjQ5LCA0OTY2NCwgNDk2NzksIDQ5Njk0LCA0OTcwOSwgNDk3MjQsIDQ5NzM5LCAKLSAgICA0OTc1NCwgNDk3NjksIDQ5Nzg0LCA0OTc5OSwgNDk4MTQsIDQ5ODI5LCA0OTg0NCwgNDk4NTksIDQ5ODc0LCA0OTg4OSwgCi0gICAgNDk5MDQsIDQ5OTE5LCA0OTkzNCwgNDk5NDksIDQ5OTY0LCA0OTk3OSwgNDk5OTQsIDUwMDA5LCA1MDAyNCwgNTAwMzksIAotICAgIDUwMDU0LCA1MDA2OSwgNTAwODQsIDUwMDk5LCA1MDExNCwgNTAxMjksIDUwMTQ0LCA1MDE1OSwgNTAxNzQsIDUwMTg5LCAKLSAgICA1MDIwNCwgNTAyMTksIDUwMjM0LCA1MDI0OSwgNTAyNjQsIDUwMjc5LCA1MDI5NCwgNTAzMDksIDUwMzI0LCA1MDMzOSwgCi0gICAgNTAzNTQsIDUwMzY5LCA1MDM4NCwgNTAzOTksIDUwNDE0LCA1MDQyOSwgNTA0NDQsIDUwNDU5LCA1MDQ3NCwgNTA0ODksIAotICAgIDUwNTA0LCA1MDUxOSwgNTA1MzQsIDUwNTQ5LCA1MDU2NCwgNTA1NzksIDUwNTk0LCA1MDYwOSwgNTA2MjQsIDUwNjM5LCAKLSAgICA1MDY1NCwgNTA2NjksIDUwNjg0LCA1MDY5OSwgNTA3MTQsIDUwNzI5LCA1MDc0NCwgNTA3NTksIDUwNzc0LCA1MDc4OSwgCi0gICAgNTA4MDQsIDUwODE5LCA1MDgzNCwgNTA4NDksIDUwODY0LCA1MDg3OSwgNTA4OTQsIDUwOTA5LCA1MDkyNCwgNTA5MzksIAotICAgIDUwOTU0LCA1MDk2OSwgNTA5ODQsIDUwOTk5LCA1MTAxNCwgNTEwMjksIDUxMDQ0LCA1MTA1OSwgNTEwNzQsIDUxMDg5LCAKLSAgICA1MTEwNCwgNTExMTksIDUxMTM0LCA1MTE0OSwgNTExNjQsIDUxMTc5LCA1MTE5NCwgNTEyMDksIDUxMjI0LCA1MTIzOSwgCi0gICAgNTEyNTQsIDUxMjY5LCA1MTI4NCwgNTEyOTksIDUxMzE0LCA1MTMyOSwgNTEzNDQsIDUxMzU5LCA1MTM3NCwgNTEzODksIAotICAgIDUxNDA0LCA1MTQxOSwgNTE0MzQsIDUxNDQ5LCA1MTQ2NCwgNTE0NzksIDUxNDk0LCA1MTUwOSwgNTE1MjQsIDUxNTM5LCAKLSAgICA1MTU1NCwgNTE1NjksIDUxNTg0LCA1MTU5OSwgNTE2MTQsIDUxNjI5LCA1MTY0NCwgNTE2NTksIDUxNjc0LCA1MTY4OSwgCi0gICAgNTE3MDQsIDUxNzE5LCA1MTczNCwgNTE3NDksIDUxNzY0LCA1MTc3OSwgNTE3OTQsIDUxODA5LCA1MTgyNCwgNTE4MzksIAotICAgIDUxODU0LCA1MTg2OSwgNTE4ODQsIDUxODk5LCA1MTkxNCwgNTE5MjksIDUxOTQ0LCA1MTk1OSwgNTE5NzQsIDUxOTg5LCAKLSAgICA1MjAwNCwgNTIwMTksIDUyMDM0LCA1MjA0OSwgNTIwNjQsIDUyMDc5LCA1MjA5NCwgNTIxMDksIDUyMTI0LCA1MjEzOSwgCi0gICAgNTIxNTQsIDUyMTY5LCA1MjE4NCwgNTIxOTksIDUyMjE0LCA1MjIyOSwgNTIyNDQsIDUyMjU5LCA1MjI3NCwgNTIyODksIAotICAgIDUyMzA0LCA1MjMxOSwgNTIzMzQsIDUyMzQ5LCA1MjM2NCwgNTIzNzksIDUyMzk0LCA1MjQwOSwgNTI0MjQsIDUyNDM5LCAKLSAgICA1MjQ1NCwgNTI0NjksIDUyNDg0LCA1MjQ5OSwgNTI1MTQsIDUyNTI5LCA1MjU0NCwgNTI1NTksIDUyNTc0LCA1MjU4OSwgCi0gICAgNTI2MDQsIDUyNjE5LCA1MjYzNCwgNTI2NDksIDUyNjY0LCA1MjY3OSwgNTI2OTQsIDUyNzA5LCA1MjcyNCwgNTI3MzksIAotICAgIDUyNzU0LCA1Mjc2OSwgNTI3ODQsIDUyNzk5LCA1MjgxNCwgNTI4MjksIDUyODQ0LCA1Mjg1OSwgNTI4NzQsIDUyODg5LCAKLSAgICA1MjkwNCwgNTI5MTksIDUyOTM0LCA1Mjk0OSwgNTI5NjQsIDUyOTc5LCA1Mjk5NCwgNTMwMDksIDUzMDI0LCA1MzAzOSwgCi0gICAgNTMwNTQsIDUzMDY5LCA1MzA4NCwgNTMwOTksIDUzMTE0LCA1MzEyOSwgNTMxNDQsIDUzMTU5LCA1MzE3NCwgNTMxODksIAotICAgIDUzMjA0LCA1MzIxOSwgNTMyMzQsIDUzMjQ5LCA1MzI2NCwgNTMyNzksIDUzMjk0LCA1MzMwOSwgNTMzMjQsIDUzMzM5LCAKLSAgICA1MzM1NCwgNTMzNjksIDUzMzg0LCA1MzM5OSwgNTM0MTQsIDUzNDI5LCA1MzQ0NCwgNTM0NTksIDUzNDc0LCA1MzQ4OSwgCi0gICAgNTM1MDQsIDUzNTE5LCA1MzUzNCwgNTM1NDksIDUzNTY0LCA1MzU3OSwgNTM1OTQsIDUzNjA5LCA1MzYyNCwgNTM2MzksIAotICAgIDUzNjU0LCA1MzY2OSwgNTM2ODQsIDUzNjk5LCA1MzcxNCwgNTM3MjksIDUzNzQ0LCA1Mzc1OSwgNTM3NzQsIDUzNzg5LCAKLSAgICA1MzgwNCwgNTM4MTksIDUzODM0LCA1Mzg0OSwgNTM4NjQsIDUzODc5LCA1Mzg5NCwgNTM5MDksIDUzOTI0LCA1MzkzOSwgCi0gICAgNTM5NTQsIDUzOTY5LCA1Mzk4NCwgNTM5OTksIDU0MDE0LCA1NDAyOSwgNTQwNDQsIDU0MDU5LCA1NDA3NCwgNTQwODksIAotICAgIDU0MTA0LCA1NDExOSwgNTQxMzQsIDU0MTQ5LCA1NDE2NCwgNTQxNzksIDU0MTk0LCA1NDIwOSwgNTQyMjQsIDU0MjM5LCAKLSAgICA1NDI1NCwgNTQyNjksIDU0Mjg0LCA1NDI5OSwgNTQzMTQsIDU0MzI5LCA1NDM0NSwgNTQzNjEsIDU0Mzc3LCA1NDM5MywgCi0gICAgNTQ0MDksIDU0NDI1LCA1NDQ0MSwgNTQ0NTcsIDU0NDczLCA1NDQ4OSwgNTQ1MDUsIDU0NTIxLCA1NDUzNywgNTQ1NTMsIAotICAgIDU0NTY5LCA1NDU4NSwgNTQ2MDEsIDU0NjE3LCA1NDYzMywgNTQ2NDksIDU0NjY1LCA1NDY4MSwgNTQ2OTcsIDU0NzEzLCAKLSAgICA1NDcyOSwgNTQ3NDUsIDU0NzYxLCA1NDc3NywgNTQ3OTMsIDU0ODA5LCA1NDgyNSwgNTQ4NDEsIDU0ODU3LCA1NDg3MywgCi0gICAgNTQ4ODksIDU0OTA1LCA1NDkyMSwgNTQ5MzcsIDU0OTUzLCA1NDk2OSwgNTQ5ODUsIDU1MDAxLCA1NTAxNywgNTUwMzMsIAotICAgIDU1MDQ5LCA1NTA2NSwgNTUwODEsIDU1MDk3LCA1NTExMywgNTUxMjksIDU1MTQ1LCA1NTE2MSwgNTUxNzcsIDU1MTkzLCAKLSAgICA1NTIwOSwgNTUyMjUsIDU1MjQxLCA1NTI1NywgNTUyNzMsIDU1Mjg5LCA1NTMwNSwgNTUzMjEsIDU1MzM3LCA1NTM1MywgCi0gICAgNTUzNjksIDU1Mzg1LCA1NTQwMSwgNTU0MTcsIDU1NDMzLCA1NTQ0OSwgNTU0NjUsIDU1NDgxLCA1NTQ5NywgNTU1MTMsIAotICAgIDU1NTI5LCA1NTU0NSwgNTU1NjEsIDU1NTc3LCA1NTU5MywgNTU2MDksIDU1NjI1LCA1NTY0MSwgNTU2NTcsIDU1NjczLCAKLSAgICA1NTY4OSwgNTU3MDUsIDU1NzIxLCA1NTczNywgNTU3NTMsIDU1NzY5LCA1NTc4NSwgNTU4MDEsIDU1ODE3LCA1NTgzMywgCi0gICAgNTU4NDksIDU1ODY1LCA1NTg4MSwgNTU4OTcsIDU1OTEzLCA1NTkyOSwgNTU5NDUsIDU1OTYxLCA1NTk3NywgNTU5OTMsIAotICAgIDU2MDA5LCA1NjAyNSwgNTYwNDEsIDU2MDU3LCA1NjA3MywgNTYwODksIDU2MTA1LCA1NjEyMSwgNTYxMzcsIDU2MTUzLCAKLSAgICA1NjE2OSwgNTYxODUsIDU2MjAxLCA1NjIxNywgNTYyMzMsIDU2MjQ5LCA1NjI2NSwgNTYyODEsIDU2Mjk3LCA1NjMxMywgCi0gICAgNTYzMjksIDU2MzQ1LCA1NjM2MSwgNTYzNzcsIDU2MzkzLCA1NjQwOSwgNTY0MjUsIDU2NDQxLCA1NjQ1NywgNTY0NzMsIAotICAgIDU2NDg5LCA1NjUwNSwgNTY1MjEsIDU2NTM3LCA1NjU1MywgNTY1NjksIDU2NTg1LCA1NjYwMSwgNTY2MTcsIDU2NjMzLCAKLSAgICA1NjY0OSwgNTY2NjUsIDU2NjgxLCA1NjY5NywgNTY3MTMsIDU2NzI5LCA1Njc0NSwgNTY3NjEsIDU2Nzc3LCA1Njc5MywgCi0gICAgNTY4MDksIDU2ODI1LCA1Njg0MSwgNTY4NTcsIDU2ODczLCA1Njg4OSwgNTY5MDUsIDU2OTIxLCA1NjkzNywgNTY5NTMsIAotICAgIDU2OTY5LCA1Njk4NSwgNTcwMDEsIDU3MDE3LCA1NzAzMywgNTcwNDksIDU3MDY1LCA1NzA4MSwgNTcwOTcsIDU3MTEzLCAKLSAgICA1NzEyOSwgNTcxNDUsIDU3MTYxLCA1NzE3NywgNTcxOTMsIDU3MjA5LCA1NzIyNSwgNTcyNDEsIDU3MjU3LCA1NzI3MywgCi0gICAgNTcyODksIDU3MzA1LCA1NzMyMSwgNTczMzcsIDU3MzUzLCA1NzM2OSwgNTczODUsIDU3NDAxLCA1NzQxNywgNTc0MzMsIAotICAgIDU3NDQ5LCA1NzQ2NSwgNTc0ODEsIDU3NDk3LCA1NzUxMywgNTc1MjksIDU3NTQ1LCA1NzU2MSwgNTc1NzcsIDU3NTkzLCAKLSAgICA1NzYwOSwgNTc2MjUsIDU3NjQxLCA1NzY1NywgNTc2NzMsIDU3Njg5LCA1NzcwNSwgNTc3MjEsIDU3NzM3LCA1Nzc1MywgCi0gICAgNTc3NjksIDU3Nzg1LCA1NzgwMSwgNTc4MTcsIDU3ODMzLCA1Nzg0OSwgNTc4NjUsIDU3ODgxLCA1Nzg5NywgNTc5MTMsIAotICAgIDU3OTI5LCA1Nzk0NSwgNTc5NjEsIDU3OTc3LCA1Nzk5MywgNTgwMDksIDU4MDI1LCA1ODA0MSwgNTgwNTcsIDU4MDczLCAKLSAgICA1ODA4OSwgNTgxMDUsIDU4MTIxLCA1ODEzNywgNTgxNTMsIDU4MTY5LCA1ODE4NSwgNTgyMDEsIDU4MjE3LCA1ODIzMywgCi0gICAgNTgyNDksIDU4MjY1LCA1ODI4MSwgNTgyOTcsIDU4MzEzLCA1ODMyOSwgNTgzNDUsIDU4MzYxLCA1ODM3NywgNTgzOTMsIAotICAgIDU4NDA5LCA1ODQyNSwgNTg0NDEsIDU4NDU3LCA1ODQ3MywgNTg0ODksIDU4NTA1LCA1ODUyMSwgNTg1MzcsIDU4NTUzLCAKLSAgICA1ODU2OSwgNTg1ODUsIDU4NjAxLCA1ODYxNywgNTg2MzMsIDU4NjQ5LCA1ODY2NSwgNTg2ODEsIDU4Njk3LCA1ODcxMywgCi0gICAgNTg3MjksIDU4NzQ1LCA1ODc2MSwgNTg3NzcsIDU4NzkzLCA1ODgwOSwgNTg4MjUsIDU4ODQxLCA1ODg1NywgNTg4NzMsIAotICAgIDU4ODg5LCA1ODkwNSwgNTg5MjEsIDU4OTM3LCA1ODk1MywgNTg5NjksIDU4OTg1LCA1OTAwMSwgNTkwMTcsIDU5MDMzLCAKLSAgICA1OTA0OSwgNTkwNjUsIDU5MDgxLCA1OTA5NywgNTkxMTMsIDU5MTI5LCA1OTE0NSwgNTkxNjEsIDU5MTc3LCA1OTE5MywgCi0gICAgNTkyMDksIDU5MjI1LCA1OTI0MSwgNTkyNTcsIDU5MjczLCA1OTI4OSwgNTkzMDUsIDU5MzIxLCA1OTMzNywgNTkzNTMsIAotICAgIDU5MzY5LCA1OTM4NSwgNTk0MDEsIDU5NDE3LCA1OTQzMywgNTk0NDksIDU5NDY1LCA1OTQ4MSwgNTk0OTcsIDU5NTEzLCAKLSAgICA1OTUyOSwgNTk1NDUsIDU5NTYxLCA1OTU3NywgNTk1OTMsIDU5NjA5LCA1OTYyNSwgNTk2NDEsIDU5NjU3LCA1OTY3MywgCi0gICAgNTk2ODksIDU5NzA1LCA1OTcyMSwgNTk3MzcsIDU5NzUzLCA1OTc2OSwgNTk3ODUsIDU5ODAxLCA1OTgxNywgNTk4MzMsIAotICAgIDU5ODQ5LCA1OTg2NSwgNTk4ODEsIDU5ODk3LCA1OTkxMywgNTk5MjksIDU5OTQ1LCA1OTk2MSwgNTk5NzcsIDU5OTkzLCAKLSAgICA2MDAwOSwgNjAwMjUsIDYwMDQxLCA2MDA1NywgNjAwNzMsIDYwMDg5LCA2MDEwNSwgNjAxMjEsIDYwMTM3LCA2MDE1MywgCi0gICAgNjAxNjksIDYwMTg1LCA2MDIwMSwgNjAyMTcsIDYwMjMzLCA2MDI0OSwgNjAyNjUsIDYwMjgxLCA2MDI5NywgNjAzMTMsIAotICAgIDYwMzI5LCA2MDM0NSwgNjAzNjEsIDYwMzc3LCA2MDM5MywgNjA0MDksIDYwNDI1LCA2MDQ0MSwgNjA0NTcsIDYwNDczLCAKLSAgICA2MDQ4OSwgNjA1MDUsIDYwNTIxLCA2MDUzNywgNjA1NTMsIDYwNTY5LCA2MDU4NSwgNjA2MDEsIDYwNjE3LCA2MDYzMywgCi0gICAgNjA2NDksIDYwNjY1LCA2MDY4MSwgNjA2OTcsIDYwNzEzLCA2MDcyOSwgNjA3NDUsIDYwNzYxLCA2MDc3NywgNjA3OTMsIAotICAgIDYwODA5LCA2MDgyNSwgNjA4NDEsIDYwODU3LCA2MDg3MywgNjA4ODksIDYwOTA1LCA2MDkyMSwgNjA5MzcsIDYwOTUzLCAKLSAgICA2MDk2OSwgNjA5ODUsIDYxMDAxLCA2MTAxNywgNjEwMzMsIDYxMDQ5LCA2MTA2NSwgNjEwODEsIDYxMDk3LCA2MTExMywgCi0gICAgNjExMjksIDYxMTQ1LCA2MTE2MSwgNjExNzcsIDYxMTkzLCA2MTIwOSwgNjEyMjUsIDYxMjQxLCA2MTI1NywgNjEyNzMsIAotICAgIDYxMjg5LCA2MTMwNSwgNjEzMjEsIDYxMzM3LCA2MTM1MywgNjEzNjksIDYxMzg1LCA2MTQwMSwgNjE0MTcsIDYxNDMzLCAKLSAgICA2MTQ0OSwgNjE0NjUsIDYxNDgxLCA2MTQ5NywgNjE1MTMsIDYxNTI5LCA2MTU0NSwgNjE1NjEsIDYxNTc3LCA2MTU5MywgCi0gICAgNjE2MDksIDYxNjI1LCA2MTY0MSwgNjE2NTcsIDYxNjczLCA2MTY4OSwgNjE3MDUsIDYxNzIxLCA2MTczNywgNjE3NTMsIAotICAgIDYxNzY5LCA2MTc4NSwgNjE4MDEsIDYxODE3LCA2MTgzMywgNjE4NDksIDYxODY1LCA2MTg4MSwgNjE4OTcsIDYxOTEzLCAKLSAgICA2MTkyOSwgNjE5NDUsIDYxOTYxLCA2MTk3NywgNjE5OTMsIDYyMDA5LCA2MjAyNSwgNjIwNDEsIDYyMDU3LCA2MjA3MywgCi0gICAgNjIwODksIDYyMTA1LCA2MjEyMSwgNjIxMzcsIDYyMTUzLCA2MjE2OSwgNjIxODUsIDYyMjAxLCA2MjIxNywgNjIyMzMsIAotICAgIDYyMjQ5LCA2MjI2NSwgNjIyODEsIDYyMjk3LCA2MjMxMywgNjIzMjksIDYyMzQ1LCA2MjM2MSwgNjIzNzcsIDYyMzkzLCAKLSAgICA2MjQwOSwgNjI0MjUsIDYyNDQxLCA2MjQ1NywgNjI0NzMsIDYyNDg5LCA2MjUwNSwgNjI1MjEsIDYyNTM3LCA2MjU1MywgCi0gICAgNjI1NjksIDYyNTg1LCA2MjYwMSwgNjI2MTcsIDYyNjMzLCA2MjY0OSwgNjI2NjUsIDYyNjgxLCA2MjY5NywgNjI3MTMsIAotICAgIDYyNzI5LCA2Mjc0NSwgNjI3NjEsIDYyNzc3LCA2Mjc5MywgNjI4MDksIDYyODI1LCA2Mjg0MSwgNjI4NTcsIDYyODczLCAKLSAgICA2Mjg4OSwgNjI5MDUsIDYyOTIxLCA2MjkzNywgNjI5NTMsIDYyOTY5LCA2Mjk4NSwgNjMwMDEsIDYzMDE2LCAxODMwNywgCi0gICAgNjMwMjUsIDYzMDMwLCA2MzAzNiwgNjMwNDIsIDYzMDUyLCA2MzA2MCwgMTYyNzAsIDE2ODY4LCAxMDczMywgNjMwNzMsIAotICAgIDE1MTgsIDE1MjIsIDYzMDgxLCAzOTczLCAyOTU2NiwgNzUxMiwgNjMwODcsIDYzMDkyLCA2MzA5NywgNjMxMDIsIDYzMTA3LCAKLSAgICA2MzExMywgNjMxMTgsIDYzMTI0LCA2MzEyOSwgNjMxMzUsIDYzMTQwLCA2MzE0NSwgNjMxNTAsIDYzMTU1LCA2MzE2MSwgCi0gICAgNjMxNjYsIDYzMTcxLCA2MzE3NiwgNjMxODEsIDYzMTg2LCA2MzE5MSwgNjMxOTYsIDYzMjAyLCA2MzIwNywgNjMyMTMsIAotICAgIDYzMjIwLCAyNjAwLCA2MzIyNSwgNjMyMzEsIDg5MTIsIDYzMjM1LCA2MzI0MCwgNjMyNDcsIDYzMjU1LCA2NSwgNjMyNTksIAotICAgIDYzMjY1LCA2MzI3MCwgNjMyNzUsIDYzMjc5LCA2MzI4NCwgNjMyODgsIDYzMjkyLCAxMTYyMSwgNjMyOTYsIDYzMzA2LCAKLSAgICA2MzMxOSwgNjMzMzAsIDYzMzQzLCA2MzM1MCwgNjMzNTYsIDYzMzY0LCA2MzM2OSwgNjMzNzUsIDYzMzgxLCA2MzM4NywgCi0gICAgNjMzOTIsIDYzMzk3LCA2MzQwMiwgNjM0MDcsIDYzNDExLCA2MzQxNiwgNjM0MjEsIDYzNDI2LCA2MzQzMiwgNjM0MzgsIAotICAgIDYzNDQ0LCA2MzQ0OSwgNjM0NTMsIDYzNDU4LCA2MzQ2MywgNjM0NjcsIDYzNDcyLCA2MzQ3NywgNjM0ODIsIDYzNDg2LCAKLSAgICAxMTYzNywgMTE2NDgsIDExNjUzLCAxNTYxLCA2MzQ5MCwgNjM0OTYsIDE1NjYsIDYzNTAxLCA2MzUwNCwgMTc3NDEsIAotICAgIDYzNTA5LCA2MzUxNSwgNjM1MjAsIDE1OTcsIDYzNTI2LCAxNjAzLCAxNjA5LCAxMTY4MywgNjM1MzEsIDYzNTQwLCA2MzU0OCwgCi0gICAgNjM1NTUsIDYzNTU5LCA2MzU2MywgNjM1NjksIDYzNTc0LCAzMzM2NSwgNjM1NzksIDYzNTg2LCA2MzU5MywgNjM1OTgsIAotICAgIDYzNjAyLCA2MzYwNiwgNjM2MTUsIDE2MTQsIDE3ODUwLCA2MzYyMCwgNjM2MjQsIDE3ODYxLCAxMTYyLCA2MzYyOCwgCi0gICAgNjM2MzUsIDYzNjQwLCA2MzY0NCwgMTc4OTEsIDE2MTgsIDQxMjQzLCA2MzY0NywgNjM2NTIsIDYzNjYyLCA2MzY3MSwgCi0gICAgNjM2NzYsIDYzNjgwLCA2MzY4NiwgMTYyMywgNDM4NTUsIDYzNjkxLCA2MzcwMCwgNjM3MDYsIDYzNzExLCA2MzcxNiwgCi0gICAgMTE4ODIsIDExODg4LCA2MzcyMiwgNjM3MzQsIDYzNzUxLCA2Mzc2OCwgNjM3ODUsIDYzODAyLCA2MzgxOSwgNjM4MzYsIAotICAgIDYzODUzLCA2Mzg3MCwgNjM4ODcsIDYzOTA0LCA2MzkyMSwgNjM5MzgsIDYzOTU1LCA2Mzk3MiwgNjM5ODksIDY0MDA2LCAKLSAgICA2NDAyMywgNjQwNDAsIDY0MDU3LCA2NDA3NCwgNjQwOTEsIDY0MTA4LCA2NDEyNSwgNjQxNDIsIDY0MTU5LCA2NDE3NiwgCi0gICAgNjQxOTMsIDY0MjEwLCA2NDIyNywgNjQyNDQsIDY0MjYxLCA2NDI3OCwgNjQyOTUsIDY0MzEyLCA2NDMyOSwgNjQzNDYsIAotICAgIDY0MzYzLCA2NDM4MCwgNjQzOTcsIDY0NDE0LCA2NDQzMSwgNjQ0NDgsIDY0NDY1LCA2NDQ4MiwgNjQ0OTksIDY0NTE2LCAKLSAgICA2NDUzMywgNjQ1NTAsIDY0NTY3LCA2NDU3OCwgNjQ1ODgsIDY0NTkzLCAxNjI4LCA2NDU5NywgNjQ2MDIsIDY0NjA4LCAKLSAgICA2NDYxMywgNjQ2MTgsIDY0NjI1LCA5ODM5LCAxNjMzLCA2NDYzMSwgNjQ2NDAsIDI5ODg3LCA2NDY0NSwgNjQ2NTYsIAotICAgIDExODk5LCA2NDY2NiwgNjQ2NzEsIDY0Njc3LCA2NDY4MiwgNjQ2ODksIDY0Njk1LCA2NDcwMCwgMTYzOCwgMTgxNzQsIAotICAgIDY0NzA1LCA2NDcxMSwgMTE5MDksIDE2NDMsIDExOTE0LCA2NDcxNywgNjQ3MjIsIDY0NzI4LCA2NDczMywgNjQ3MzgsIAotICAgIDY0NzQzLCA2NDc0OCwgNjQ3NTMsIDY0NzU4LCA2NDc2MywgNjQ3NjgsIDY0Nzc0LCA2NDc4MCwgNjQ3ODYsIDY0NzkxLCAKLSAgICA2NDc5NSwgNjQ4MDAsIDY0ODA1LCA2NDgwOSwgNjQ4MTQsIDY0ODE5LCA2NDgyNCwgNjQ4MjksIDY0ODMzLCA2NDgzOCwgCi0gICAgNjQ4NDQsIDY0ODQ5LCA2NDg1NCwgNjQ4NTgsIDY0ODYzLCA2NDg2OCwgNjQ4NzQsIDY0ODc5LCA2NDg4NCwgNjQ4OTAsIAotICAgIDY0ODk2LCA2NDkwMSwgNjQ5MDUsIDY0OTEwLCA2NDkxNSwgNjQ5MjAsIDY0OTI0LCA2NDkyOSwgNjQ5MzQsIDY0OTM5LCAKLSAgICA2NDk0NSwgNjQ5NTEsIDY0OTU2LCA2NDk2MCwgNjQ5NjQsIDY0OTY5LCA2NDk3NCwgNjQ5NzksIDMxMzk1LCA2NDk4MywgCi0gICAgNjQ5ODgsIDY0OTkzLCA2NDk5OSwgNjUwMDQsIDY1MDA5LCA2NTAxMywgNjUwMTgsIDY1MDIzLCA2NTAyOSwgNjUwMzQsIAotICAgIDY1MDM5LCA2NTA0NSwgNjUwNTEsIDY1MDU2LCA2NTA2MCwgNjUwNjUsIDY1MDcwLCA2NTA3NCwgNjUwNzksIDY1MDg0LCAKLSAgICA2NTA4OSwgNjUwOTUsIDY1MTAxLCA2NTEwNiwgNjUxMTAsIDY1MTE1LCA2NTEyMCwgNjUxMjQsIDY1MTI5LCA2NTEzNCwgCi0gICAgNjUxMzksIDY1MTQ0LCA2NTE0OCwgNjUxNTEsIDY1MTU0LCA2NTE1OSwgNjUxNjQsIDM0MDU2LCA2NTE3MSwgNjUxNzksIAotICAgIDM2OTEsIDI5ODM3LCA2NTE4NSwgNjUxOTIsIDY1MTk4LCAzODMwLCAxMjAyMCwgNjUyMDQsIDY1MjE0LCA2NTIyOSwgCi0gICAgNjUyMzcsIDEyMDI1LCA2NTI0OCwgNjUyNTMsIDY1MjY0LCA2NTI3NiwgNjUyODgsIDY1MzAwLCAyNzM0LCA2NTMxMiwgCi0gICAgNjUzMTcsIDY1MzI5LCA2NTMzMywgNjUzMzksIDY1MzQ1LCA2NTM1MCwgMTY2MCwgMTc0MTgsIDY1MzU5LCA2NTM2NCwgCi0gICAgNDM5MTQsIDY1MzY4LCA2NTM3MiwgNjUzNzcsIDY1MzgxLCAxODMxNSwgNjUzODYsIDY1Mzg5LCA2NTM5NCwgNjU0MDIsIAotICAgIDY1NDEwLCAxNjY0LCAxMjA2MSwgMTIwNjcsIDE2NjksIDY1NDE4LCA2NTQyNSwgNjU0MzAsIDY1NDM5LCA2NTQ0OSwgCi0gICAgNjU0NTYsIDY1NDYxLCA2NTQ2NiwgMTY3NCwgNjU0NzMsIDY1NDc4LCAxODQzNSwgNjU0ODIsIDY1NDg3LCA2NTQ5NCwgCi0gICAgNjU1MDAsIDY1NTA0LCA2NTUxNSwgNjU1MjUsIDY1NTMyLCAxODQ1NywgOTczMywgOTc0MCwgNDAyMiwgNDAyOCwgNjU1MzksIAotICAgIDE2NzksIDY1NTQ0LCA2NTU1MCwgNjU1NTgsIDY1NTY1LCA2NTU3MSwgNjU1NzgsIDY1NTkwLCA2NTU5NiwgNjU2MDEsIAotICAgIDY1NjEzLCA2NTYyNCwgNjU2MzMsIDY1NjQzLCAzOTUyLCA2NTY1MSwgMzMxNjYsIDMzMTc1LCAxODQ5NywgMTY4NCwgMTY4OCwgCi0gICAgNjU2NjQsIDY1Njc1LCA2NTY4MCwgMTY5OCwgNjU2ODgsIDY1NjkzLCA2NTY5OCwgMTg1NTYsIDY1NzEwLCA2NTcxMywgCi0gICAgNjU3MTksIDY1NzI1LCA2NTczMCwgNjU3MzgsIDE3MDMsIDY1NzQzLCA2NTc0OCwgNjU3NTYsIDY1NzY0LCA2NTc3MSwgCi0gICAgNjU3ODAsIDY1Nzg4LCA2NTc5NywgMTcwOCwgNjU4MDEsIDE3MTMsIDIzMDE2LCA2NTgwNiwgNjU4MTMsIDE4NjMwLCAKLSAgICA2NTgyMSwgNjU4MjcsIDY1ODMyLCA2NTg0MCwgNjU4NDcsIDY1ODU1LCA2NTg2NSwgNjU4NzQsIDY1ODg0LCA2NTg5MywgCi0gICAgNjU5MDQsIDY1OTE0LCA2NTkyNCwgNjU5MzMsIDY1OTQzLCA2NTk1NywgNjU5NzAsIDY1OTc5LCA2NTk4NywgNjU5OTcsIAotICAgIDY2MDA2LCA2NjAxOCwgNjYwMjksIDY2MDQwLCA2NjA1MCwgMTc5NDgsIDY2MDU1LCAxMjIxMywgNjYwNjQsIDY2MDcwLCAKLSAgICA2NjA3NSwgNjYwODIsIDY2MDg5LCA2NjA5NSwgMTc2MTcsIDY2MTA1LCA2NjExMSwgNjYxMTYsIDY2MTI3LCA2NjEzMiwgCi0gICAgNjYxNDAsIDEyMjMwLCAxMjIzNSwgNjYxNDgsIDY2MTU0LCA2NjE1OCwgNjYxNjYsIDQwMTcsIDE4NjkyLCA0NDAwNywgCi0gICAgNjYxNzEsIDY2MTc3LCA2NjE4MiwgNjYxOTAsIDY2MTk3LCAxMzE3OSwgNjYyMDIsIDY2MjA4LCAxNzI0LCA2NjIxMywgCi0gICAgNjYyMTYsIDE0MzgsIDY2MjIyLCA2NjIyNywgNjYyMzIsIDY2MjM4LCA2NjI0MywgNjYyNDgsIDY2MjUzLCA2NjI1OCwgCi0gICAgNjYyNjMsIDY2MjY4LCAxNzMzLCAxMywgNjYyNzQsIDY2Mjc4LCA2NjI4MywgNjYyODcsIDY2MjkxLCA2NjI5NSwgMzQyOTYsIAotICAgIDY2MzAwLCAyNTA3MCwgNjYzMDUsIDY2MzEwLCA2NjMxNCwgNjYzMTcsIDY2MzIxLCA2NjMyNSwgNjYzMzAsIDY2MzM0LCAKLSAgICA2NjMzOSwgNjYzNDMsIDY2MzQ5LCAzNzUxNCwgMzc1MTksIDM3NTI0LCA2NjM1MiwgNjYzNTksIDY2MzY1LCA2NjM3MywgCi0gICAgNDM2NzgsIDY2MzgzLCAzNzUzMCwgMzQ1NjAsIDM0MzExLCAzNDMxNywgMzc1NDYsIDM0MzIzLCA2NjM4OCwgNjYzOTMsIAotICAgIDM0NTkzLCA2NjM5NywgNjY0MDAsIDY2NDA0LCA2NjQxMiwgNjY0MTksIDY2NDIyLCA2NjQyNywgNjY0MzIsIDY2NDM2LCAKLSAgICA2NjQ0MCwgNjY0NDMsIDY2NDUzLCA2NjQ2NSwgNjY0NzIsIDY2NDc4LCAzNDMyOCwgNjY0ODUsIDM2MDc4LCA2NjQ4OCwgCi0gICAgODkyOSwgMTAxOSwgNjY0OTEsIDY2NDk1LCA2NjUwMCwgMzg3MywgNjY1MDQsIDY2NTA3LCAxNDgyNywgNjY1MTQsIDY2NTIxLCAKLSAgICA2NjUzNCwgNjY1NDIsIDY2NTUxLCA2NjU2MCwgNjY1NjUsIDY2NTc1LCA2NjU4OCwgNjY2MDAsIDY2NjA3LCA2NjYxMiwgCi0gICAgNjY2MjEsIDY2NjM0LCAzOTAzOSwgNjY2NTIsIDY2NjU3LCA2NjY2NCwgNjY2NzAsIDY2Njc1LCA4MTksIDY2NjgwLCAKLSAgICA2NjY4OCwgNjY2OTUsIDY2NzAyLCAyOTM5MiwgNzgzLCA2NjcwOCwgNjY3MTQsIDY2NzI0LCA2NjczMiwgNjY3MzgsIAotICAgIDY2NzQzLCAzNDM0NywgNjMxMCwgMzQzNjEsIDY2NzQ3LCA2Njc1NywgNjY3NjIsIDY2NzcyLCA2Njc4NywgNjY3OTMsIAotICAgIDY2Nzk5LCAzNDM3MSwgNjY4MDQsIDMzNDgyLCA2NjgwOCwgNjY4MTMsIDY2ODIwLCA2NjgyNSwgNjY4MjksIDY2ODM0LCAKLSAgICAxODUwMCwgNjY4NDEsIDY2ODQ2LCA2Njg1MCwgNjM1MSwgMzQzOTcsIDY2ODU0LCA2Njg2MCwgMzI0LCA2Njg3MCwgNjY4NzcsIAotICAgIDY2ODg0LCA2Njg4OSwgNjY4OTgsIDYzNjU2LCA2NjkwNCwgNjY5MTIsIDY2OTE2LCA2NjkyMCwgNjY5MjQsIDY2OTI4LCAKLSAgICA2NjkzMywgNjY5MzcsIDY2OTQzLCA2Njk1MSwgNjY5NTYsIDY2OTYxLCA2Njk2NiwgNjY5NzAsIDY2OTc1LCA2Njk3OSwgCi0gICAgNjY5ODMsIDY2OTg5LCA2Njk5NSwgNjcwMDAsIDY3MDA0LCA2NzAwOSwgMzQ1MjEsIDY3MDEzLCAzNDUyNywgMzQ1MzMsIAotICAgIDY3MDE4LCA2NzAyNCwgNjcwMzEsIDY3MDM2LCA2NzA0MCwgMzM0OTksIDE4MTY3LCA2NzA0MywgNjcwNDcsIDY3MDUyLCAKLSAgICA2NzA1OSwgNjcwNjUsIDY3MDY5LCA2NzA3NCwgNDMzNTMsIDY3MDgwLCA2NzA4NCwgNjcwOTEsIDY3MDk1LCA2NzEwMCwgCi0gICAgNjcxMDYsIDY3MTEyLCA2NzExOCwgNjcxMzAsIDY3MTM5LCA2NzE0OSwgNjcxNTUsIDY3MTYyLCA2NzE2NywgNjcxNzIsIAotICAgIDY3MTc2LCA2NzE3OSwgNjcxODUsIDY3MTkyLCA2NzE5NywgNjcyMDIsIDY3MjA5LCA2NzIxNiwgNjcyMjMsIDY3MjI5LCAKLSAgICA2NzIzNCwgNjcyMzksIDY3MjQ3LCAzNDUzOCwgMjQ2MiwgNjcyNTIsIDY3MjU3LCA2NzI2MywgNjcyNjgsIDY3Mjc0LCAKLSAgICA2NzI3OSwgNjcyODQsIDY3Mjg5LCA2NzI5NSwgMzQ1NTksIDY3MzAwLCA2NzMwNiwgNjczMTIsIDY3MzE4LCAzNDYyOSwgCi0gICAgNjczMjMsIDY3MzI4LCA2NzMzMywgMzQ2NDAsIDY3MzM4LCA2NzM0MywgNjczNDgsIDY3MzU0LCA2NzM2MCwgMzQ2NDUsIAotICAgIDY3MzY1LCA2NzM3MCwgNjczNzUsIDM0NzAwLCAzNDcwNiwgNjczODAsIDY3Mzg1LCAzNDcxMSwgMzQ3MzMsIDMwMTM2LCAKLSAgICAzNDczOSwgMzQ3NDMsIDY3MzkwLCAxMjkwOSwgNjczOTQsIDY3NDAyLCA2NzQwOCwgNjc0MTYsIDY3NDIzLCA2NzQyOSwgCi0gICAgNjc0MzksIDY3NDQ1LCA2NzQ1MiwgMTE1NTYsIDM0NzU3LCA2NzQ1OCwgNjc0NzEsIDY3NDgwLCA2NzQ4NiwgNjc0OTUsIAotICAgIDY3NTAxLCAyNTM4MCwgNjc1MDgsIDY3NTE1LCA2NzUyNSwgNjc1MjgsIDM0NzAxLCA2NzUzMywgNjc1NDAsIDY3NTQ1LCAKLSAgICA2NzU0OSwgNjc1NTMsIDY3NTU4LCA2NzU2MiwgNDEzMywgNjc1NjcsIDY3NTcyLCA2NzU3NywgMzc2MDgsIDM3NjEzLCAKLSAgICA2NzU4MSwgMzc2MjcsIDY3NTg2LCAzNzYzMiwgNjc1OTEsIDY3NTk3LCAzNzY0NCwgMzc2NTAsIDM3NjU2LCA2NzYwMiwgCi0gICAgNjc2MDgsIDI0MzY2LCA2NzYxOSwgNjc2MjIsIDY3NjM0LCA2NzY0MiwgMzQ3ODAsIDY3NjQ2LCA2NzY1NSwgNjc2NjUsIAotICAgIDY3Njc0LCAzNDc5MCwgNjc2NzksIDY3Njg2LCA2NzY5NSwgNjc3MDEsIDY3NzA5LCA2NzcxNiwgNjQwMiwgNDY3MywgCi0gICAgNjc3MjEsIDM0NzEyLCA2NzcyNywgNjc3MzAsIDY3NzM2LCA2Nzc0MywgNjc3NDgsIDY3NzUzLCAyNTI5MCwgNjc3NTcsIAotICAgIDY3NzYzLCA2Nzc2OSwgNjc3NzQsIDY3Nzc5LCA2Nzc4MywgNjc3ODksIDY3Nzk1LCAzNTk4NCwgMTA0OCwgMzg2ODksIAotICAgIDQwNDE5LCA0MDQyNSwgMzQ4MjEsIDM0ODI2LCA2NzgwMCwgNjc4MDQsIDY3ODA4LCA2NzgxMSwgNjc4MjQsIDY3ODMwLCAKLSAgICA2NzgzNCwgNjc4MzcsIDY3ODQyLCAzNjMyMSwgNjc4NDYsIDMzNTA0LCAyMjk2NiwgNjc4NTIsIDYzMzEsIDYzMzksIDk1NzAsIAotICAgIDY3ODU1LCA2Nzg2MCwgNjc4NjUsIDY3ODcwLCA2Nzg3NSwgNjc4ODAsIDY3ODg1LCA2Nzg5MCwgNjc4OTUsIDY3OTAwLCAKLSAgICA2NzkwNiwgNjc5MTEsIDY3OTE2LCA2NzkyMiwgNjc5MjcsIDY3OTMyLCA2NzkzNywgNjc5NDIsIDY3OTQ3LCA2Nzk1MiwgCi0gICAgNjc5NTgsIDY3OTYzLCA2Nzk2OSwgNjc5NzQsIDY3OTc5LCA2Nzk4NCwgNjc5ODksIDY3OTk0LCA2Nzk5OSwgNjgwMDQsIAotICAgIDY4MDA5LCA2ODAxNCwgNjgwMTksIDY4MDI1LCA2ODAzMCwgNjgwMzUsIDY4MDQwLCA2ODA0NSwgNjgwNTAsIDY4MDU1LCAKLSAgICA2ODA2MSwgNjgwNjYsIDY4MDcxLCA2ODA3NiwgNjgwODEsIDY4MDg2LCA2ODA5MSwgNjgwOTYsIDY4MTAxLCA2ODEwNiwgCi0gICAgNjgxMTIsIDY4MTE3LCA2ODEyMiwgNjgxMjcsIDY4MTMyLCA2ODEzOCwgNjgxNDQsIDY4MTQ5LCA2ODE1NSwgNjgxNjAsIAotICAgIDY4MTY1LCA2ODE3MCwgNjgxNzUsIDY4MTgwLCAxNTExLCAxNDUsIDY4MTg1LCA2ODE4OSwgNjgxOTMsIDY4MTk3LCAyNzA3NiwgCi0gICAgNjgyMDEsIDY4MjA1LCA2ODIxMCwgNjgyMTQsIDY4MjE5LCA2ODIyMywgNjgyMjgsIDY4MjMzLCA2ODIzOCwgNjgyNDIsIAotICAgIDY4MjQ2LCA2ODI1MSwgNjgyNTUsIDE0NTQyLCA2ODI2MCwgNjgyNjQsIDY4MjcxLCA2ODI4MSwgMTY1OTUsIDY4MjkwLCAKLSAgICA2ODI5OSwgNjgzMDMsIDY4MzA4LCA2ODMxMywgNjgzMTcsIDY4MzIxLCAyNjg3MCwgMzA3OCwgNjgzMjUsIDY4MzMxLCAKLSAgICAxODk2NywgNjgzMzUsIDY4MzQ0LCA2ODM1MiwgNjgzNTgsIDY4MzYzLCA2ODM3NSwgNjgzODcsIDY4MzkyLCA2ODM5NiwgCi0gICAgNjg0MDEsIDY4NDA1LCA2ODQxMSwgNjg0MTcsIDY4NDIyLCA2ODQzMiwgNjg0NDIsIDY4NDQ4LCA2ODQ1MywgNjg0NTcsIAotICAgIDY4NDYzLCA2ODQ2OCwgNjg0NzUsIDY4NDgxLCA2ODQ4NiwgNjg0OTUsIDY4NTA0LCA2ODUxMiwgMTY5OTMsIDY4NTE2LCAKLSAgICA2ODUyNSwgNjg1MzMsIDY4NTQ1LCA2ODU1NiwgNjg1NjcsIDY4NTc2LCA2ODU4MCwgNjg1ODksIDY4NTk3LCA2ODYwNywgCi0gICAgNjg2MTUsIDY4NjIyLCA2ODYyOCwgNjg2MzMsIDY4NjM5LCA2ODY0NCwgNjg2NTUsIDU0LCAzMzMwOSwgNjg2NjEsIDI4MzMxLCAKLSAgICAyODM0MSwgNjg2NjcsIDY4Njc1LCA2ODY4MiwgNjg2ODgsIDY4NjkyLCA2ODcwMiwgNjg3MTMsIDY4NzIxLCA2ODczMCwgCi0gICAgNjg3MzUsIDY4NzQwLCA2ODc0NSwgNjg3NDksIDY4NzUzLCAxODkyMSwgNjg3NjEsIDY4NzY1LCA2ODc3MSwgNjg3ODEsIAotICAgIDY4Nzg4LCA2ODc5NCwgNjg4MDAsIDM3NzA3LCA2ODgwNCwgNjg4MDYsIDY4ODA5LCA2ODgxNSwgNjg4MTksIDY4ODMwLCAKLSAgICA2ODg0MCwgNjg4NDYsIDY4ODUzLCA2ODg2MCwgMTQ0NzksIDY4ODY4LCA2ODg3NCwgNjg4ODMsIDY4ODkyLCA2ODg5OCwgCi0gICAgMTA2MTUsIDY4OTA0LCA2ODkxMCwgNjg5MTUsIDY4OTIwLCA2ODkyNywgNjg5MzIsIDY4OTM5LCA2ODk0NSwgNjg5NTAsIAotICAgIDY4OTU4LCA2ODk3MSwgNjg5ODAsIDY1OTE5LCA2NTkyOSwgNjg5ODksIDY4OTk1LCA2OTAwMSwgNjkwMDgsIDY5MDE1LCAKLSAgICA2OTAyMiwgNjkwMjksIDY5MDM2LCA2OTA0MSwgNjkwNDUsIDY5MDQ5LCA2OTA1MiwgNjkwNjIsIDY5MDY2LCA2OTA3OCwgCi0gICAgNjkwODcsIDY5MDkxLCA2OTEwMiwgNjkxMDcsIDY5MTExLCA2NTkzOCwgNjkxMTcsIDY5MTI0LCA2OTEzMywgNjkxNDEsIAotICAgIDY5MTQ5LCA2OTE1NCwgNjkxNTgsIDY5MTYzLCA2OTE2OCwgNjkxNzgsIDY5MTg2LCA2OTE5MSwgNjkxOTUsIDY5MTk5LCAKLSAgICA2OTIwNSwgNjkyMTMsIDY5MjIwLCA2OTIzMiwgNjkyNDAsIDY5MjUxLCA2OTI1OCwgNjkyNjQsIDY5Mjc0LCA2OTI4MCwgCi0gICAgNjkyODQsIDY5MjkxLCA2OTI5NywgNjkzMDIsIDY5MzA2LCA2OTMxMCwgNjkzMTQsIDY5MzIzLCA2OTMzMiwgNjkzNDEsIAotICAgIDY5MzQ3LCA2OTM1MywgNjkzNTksIDY5MzY0LCA2OTM3MSwgNjkzNzcsIDY5Mzg1LCA2OTM5MiwgNjkzOTgsIDEzNjIyLCAKLSAgICA2OTQwMywgNjk0MDksIDY5NDEzLCAxNTUyOSwgNjk0MTcsIDY5NDIyLCA2OTQzMiwgNjk0NDEsIDY5NDQ3LCA2OTQ1MywgCi0gICAgNjk0NjEsIDY5NDY4LCA2OTQ3MiwgNjk0NzYsIDY5NDgyLCA2OTQ5MCwgNjk0OTcsIDY5NTAzLCA2OTUxNCwgNjk1MTgsIAotICAgIDY5NTIyLCA2OTUyNiwgNjk1MjksIDY5NTM1LCA2OTU0MCwgNjk1NDUsIDY5NTQ5LCA2OTU1MywgNjk1NjIsIDY5NTcwLCAKLSAgICA2OTU3NywgNjk1ODMsIDY5NTkwLCAyNTk2MywgNDM0MjIsIDY5NTk1LCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNCwgCi0gICAgNjk2MjIsIDY5NjI5LCA2OTYzNSwgNjk2NDQsIDY5NjUyLCA2OTY1OCwgNjk2NjMsIDY5NjY3LCA2OTY3MiwgNjk2NzcsIAotICAgIDY5NjgxLCA2OTY4NSwgNjk2ODksIDY5Njk0LCA2OTcwMywgNjk3MDcsIDY5NzE0LCA0MDUyOCwgNjk3MTgsIDY5NzI0LCAKLSAgICA2OTcyOCwgNjk3MzYsIDY5NzQyLCA2OTc0NywgNjk3NTgsIDY5NzY2LCA2OTc3MiwgNjk3ODEsIDI0NTEzLCA2OTc4OSwgCi0gICAgNjk3OTYsIDY5ODAzLCA2OTgxMCwgNjk4MTcsIDY5ODI0LCA0NjcwNCwgMTQzMTcsIDY5ODMxLCA2OTgzOCwgNjk4NDMsIAotICAgIDM3NzQzLCA2NTI5LCA2OTg0OSwgNjk4NTQsIDY5ODU5LCA2OTg2NSwgNjk4NzEsIDY5ODc3LCA2OTg4MiwgNjk4ODcsIAotICAgIDY5ODkyLCA2OTg5NywgNjk5MDMsIDY5OTA4LCA2OTkxNCwgNjk5MTksIDY5OTI1LCA2OTkzMCwgNjk5MzUsIDY5OTQwLCAKLSAgICA2OTk0NSwgNjk5NTAsIDY5OTU1LCA2OTk2MCwgNjk5NjYsIDY5OTcxLCA2OTk3NywgNjk5ODIsIDY5OTg3LCA2OTk5MiwgCi0gICAgNjk5OTcsIDcwMDAyLCA3MDAwNywgNzAwMTMsIDcwMDE4LCA3MDAyMywgNzAwMjgsIDcwMDMzLCA3MDAzOCwgNzAwNDMsIAotICAgIDcwMDQ4LCA3MDA1MywgNzAwNTgsIDcwMDYzLCA3MDA2OSwgNzAwNzQsIDcwMDc5LCA3MDA4NCwgNzAwODksIDcwMDk0LCAKLSAgICA3MDA5OSwgNzAxMDQsIDcwMTA5LCA3MDExNSwgNzAxMjAsIDcwMTI1LCA3MDEzMCwgNzAxMzUsIDcwMTQwLCA3MDE0NSwgCi0gICAgNzAxNTAsIDcwMTU1LCA3MDE2MCwgNzAxNjUsIDcwMTcwLCA3MDE3NSwgNzAxODEsIDE4NTQsIDI2MCwgNzAxODYsIDQxMzYxLCAKLSAgICA3MDE5MCwgNzAxOTMsIDcwMTk4LCA3MDIwMiwgNzAyMDUsIDM0MTUsIDcwMjEwLCA3MDIxNSwgNzAyMTksIDcwMjI4LCAKLSAgICA3MDIzOSwgNzAyNTYsIDcwMjc0LCA2OTE0NSwgNzAyODIsIDcwMjg1LCA3MDI5NSwgNzAzMDIsIDcwMzExLCA3MDMyNywgCi0gICAgNzAzMzYsIDcwMzQ2LCA3MDM1MSwgNzAzNjEsIDcwMzcwLCA3MDM3OCwgNzAzOTIsIDcwNDAwLCA3MDQwNCwgNzA0MDcsIAotICAgIDcwNDE0LCA3MDQyMCwgNzA0MzEsIDcwNDM4LCA3MDQ1MCwgNzA0NjEsIDcwNDcyLCA3MDQ4MSwgNzA0ODgsIDEyNzgsIDcxMCwgCi0gICAgNzA0OTgsIDI2MjksIDcwNTAyLCA3MDUwNywgNzA1MTYsIDkyMjEsIDE4ODk0LCAyMjQ3MSwgNzA1MjQsIDcwNTMyLCAKLSAgICA3MDU0NiwgNzA1NTksIDcwNTYzLCA3MDU2OCwgNzA1NzMsIDcwNTc4LCA3MDU4NCwgNzA1OTAsIDcwNTk1LCA4OTIxLCAKLSAgICAxNjYyMywgNzA2MDAsIDcwNjA0LCA3MDYxMiwgMTIwNjIsIDcwNjE3LCA3MDYyMywgNzA2MzIsIDcwNjQwLCAxNzM2LCAKLSAgICAxMjA3NCwgOTA4LCA2NDY1LCA3MDY0NCwgNzA2NDgsIDcwNjU3LCA3MDY2NywgMjQxOSwgMjkxMjcsIDcwNjc2LCA3MDY4MiwgCi0gICAgMTg0MDcsIDI5MTQyLCA3MDY4OCwgNDE5MywgMTI0NTIsIDcwNjk0LCA3MDcwMSwgNjU2NzAsIDcwNzA1LCA3MDcwOSwgCi0gICAgNzA3MTUsIDcwNzIwLCA3MDcyNSwgMzYzNCwgMTU0LCAxNTQzNywgNzA3MzAsIDcwNzQyLCA3MDc0NiwgNzA3NTIsIDcwNzU3LCAKLSAgICAyOTkwNywgNzA3NjEsIDEyNDQwLCAyNzY5LCA0LCA3MDc2NiwgNzA3NzYsIDcwNzg3LCA3MDc5MywgNzA4MDQsIDcwODExLCAKLSAgICA3MDgxNywgNzA4MjMsIDcwODMxLCA3MDgzOCwgNzA4NDQsIDcwODU0LCA3MDg2NCwgNzA4NzQsIDcwODgzLCAyNTM2NywgCi0gICAgMTI5MCwgNzA4ODgsIDcwODkyLCA3MDg5NiwgNzA5MDIsIDcwOTA2LCAyNzkyLCAyNzk4LCA4OTE4LCAyMjk0LCA3MDkxMCwgCi0gICAgNzA5MTQsIDcwOTIzLCA3MDkzMSwgNzA5NDIsIDcwOTUwLCA3MDk1OCwgNzA5NjQsIDcwOTY5LCA3MDk4MCwgNzA5OTEsIAotICAgIDcwOTk5LCA3MTAwNSwgNzEwMTAsIDEwNDM0LCA3MTAyMCwgNzEwMjgsIDcxMDMyLCA3MTAzNiwgNzEwNDEsIDcxMDQ1LCAKLSAgICA3MTA1NywgMzAzMTQsIDE2NTQ4LCA3MTA2NCwgNzEwNzQsIDcxMDgwLCA3MTA4NiwgMTA1MzYsIDcxMDk2LCA3MTEwNywgCi0gICAgNzExMTgsIDcxMTI4LCA3MTEzNywgNzExNDEsIDcxMTQ4LCAxNzUwLCA5OTYsIDcxMTU4LCA3MTE2MywgNzExNzEsIDY1NDgzLCAKLSAgICA3MTE3OSwgNzExODQsIDcxMTk1LCA3MTIwMiwgNzEyMTYsIDE1MzY2LCA0NzgsIDcxMjI2LCA3MTIzMCwgNzEyMzQsIAotICAgIDcxMjQyLCA3MTI1MSwgNzEyNTksIDcxMjY1LCA3MTI3OSwgNzEyODYsIDcxMjkyLCA3MTMwMSwgNzEzMDgsIDcxMzE4LCAKLSAgICA3MTMyNiwgNzEzMzMsIDcxMzQxLCA3MTM0OCwgNDAyNCwgMTQ5LCA3MTM1NiwgNzEzNjcsIDcxMzcxLCA3MTM4MywgNzEzODksIAotICAgIDEyNjMzLCAxOTIsIDcxMzk0LCA5ODcxLCA3MTM5OSwgNzE0MDMsIDcxNDEwLCA3MTQxNiwgNzE0MjQsIDcxNDMxLCA5MjgwLCAKLSAgICA3MTQzOCwgNzE0NDcsIDcxNDU1LCA0MDkzLCA3MTQ2OCwgNDExMCwgNzE0NzIsIDI4NDIsIDUxNCwgNzE0NzcsIDcxNDkwLCAKLSAgICA3MTQ5NCwgNzE0OTksIDI4NDcsIDE4NTMsIDgwOSwgNzE1MDMsIDQxMTQsIDcxNTExLCA3MTUxNywgNzE1MjEsIDg2NiwgCi0gICAgNzE1MzEsIDcxNTQwLCA3MTU0NSwgMzY1MSwgNzE1NDksIDE2MzA0LCAxNjMxMSwgNTAwNjYsIDcxNTUzLCA0MTQ1LCA0MDM0LCAKLSAgICAxNDIwMCwgNzE1NjEsIDcxNTY4LCA3MTU3MywgMjU0MzEsIDcxNTc3LCA3MTU4NCwgNzE1OTAsIDcxNTk1LCA3MTYwMCwgCi0gICAgMTYzMjQsIDE4NiwgNzE2MDUsIDcxNjE3LCA3MTYyMywgNzE2MzEsIDI4NTksIDE3NjgsIDcxNjM5LCA3MTY0MSwgNzE2NDYsIAotICAgIDcxNjUxLCA3MTY1NiwgNzE2NjIsIDcxNjY3LCA3MTY3MiwgNzE2NzcsIDcxNjgyLCA3MTY4NywgNzE2OTIsIDcxNjk4LCAKLSAgICA3MTcwMywgNzE3MDgsIDcxNzEzLCA3MTcxOCwgNzE3MjMsIDcxNzI4LCA3MTczMywgNzE3MzgsIDcxNzQ0LCA3MTc0OSwgCi0gICAgNzE3NTQsIDcxNzU5LCA3MTc2NSwgNzE3NzAsIDcxNzc2LCA3MTc4MSwgNzE3ODYsIDcxNzkxLCA3MTc5NiwgNzE4MDEsIAotICAgIDcxODA2LCA3MTgxMSwgNzE4MTcsIDcxODIyLCA3MTgyOCwgNzE4MzMsIDcxODM4LCA3MTg0MywgNzE4NDgsIDcxODUzLCAKLSAgICA3MTg1OCwgNzE4NjMsIDcxODY4LCA3MTg3NCwgNzE4ODAsIDcxODg1LCA3MTg5MCwgNzE4OTYsIDcxOTAxLCA3MTkwNSwgCi0gICAgNzE5MDksIDcxOTE0LCA3MTkyMCwgNzE5MjQsIDcxOTMwLCA3MTkzNSwgNzE5NDAsIDcxOTQ2LCA3MTk1MSwgNzE5NTUsIAotICAgIDcxOTYwLCA3MTk2NSwgNzE5NjksIDcxOTcyLCA3MTk3NCwgNzE5NzgsIDcxOTgxLCA3MTk4OCwgNzE5OTMsIDcxOTk3LCAKLSAgICA3MjAwMiwgNzIwMDYsIDcyMDEwLCA3MjAxNCwgNzIwMjMsIDcyMDI3LCAzNTAyNiwgNzIwMzAsIDM1MDMxLCA3MjAzNywgCi0gICAgNzIwNDIsIDM1MDM2LCA3MjA1MSwgNzIwNjAsIDM1MDQyLCA3MjA2NSwgMzUwNDcsIDcyMDc0LCA3MjA3OSwgMTI2NzYsIAotICAgIDcyMDgzLCA3MjA4OCwgNzIwOTMsIDM1MDUyLCA3MjA5NywgNDQ5MjEsIDcyMTAxLCA3MjEwNCwgNzIxMDgsIDg1ODksIAotICAgIDcyMTE0LCA3MjExNywgNzIxMjIsIDcyMTI2LCAzODg4LCAzNTA1NywgNzIxMjksIDcyMTMzLCA3MjEzNiwgNzIxNDEsIAotICAgIDcyMTQ1LCA3MjE1MSwgNzIxNTksIDcyMTcyLCA3MjE4MSwgNzIxODcsIDcyMTkyLCA3MjE5OCwgNzIyMDIsIDcyMjA4LCAKLSAgICA3MjIxNCwgNzIyMjIsIDcyMjI3LCA3MjIzMSwgNzIyMzgsIDcyMjQ0LCA3MjI1MiwgNzIyNjEsIDcyMjY5LCAzNTA2MCwgCi0gICAgNzIyNzYsIDcyMjg2LCA3MjI5OSwgNzIzMDQsIDcyMzA5LCA3MjMxMywgNzIzMjIsIDcyMzI4LCA3MjMzNSwgNzIzNDYsIAotICAgIDcyMzU4LCA3MjM2NSwgNzIzNzQsIDcyMzgzLCA3MjM5MiwgNzIzOTksIDcyNDA1LCA3MjQxMiwgNzI0MjAsIDcyNDI3LCAKLSAgICA3MjQzNSwgNzI0NDQsIDcyNDUyLCA3MjQ1OSwgNzI0NjcsIDcyNDc2LCA3MjQ4NCwgNzI0OTMsIDcyNTAzLCA3MjUxMiwgCi0gICAgNzI1MjAsIDcyNTI3LCA3MjUzNSwgNzI1NDQsIDcyNTUyLCA3MjU2MSwgNzI1NzEsIDcyNTgwLCA3MjU4OCwgNzI1OTcsIAotICAgIDcyNjA3LCA3MjYxNiwgNzI2MjYsIDcyNjM3LCA3MjY0NywgNzI2NTYsIDcyNjY0LCA3MjY3MSwgNzI2NzksIDcyNjg4LCAKLSAgICA3MjY5NiwgNzI3MDUsIDcyNzE1LCA3MjcyNCwgNzI3MzIsIDcyNzQxLCA3Mjc1MSwgNzI3NjAsIDcyNzcwLCA3Mjc4MSwgCi0gICAgNzI3OTEsIDcyODAwLCA3MjgwOCwgNzI4MTcsIDcyODI3LCA3MjgzNiwgNzI4NDYsIDcyODU3LCA3Mjg2NywgNzI4NzYsIAotICAgIDcyODg2LCA3Mjg5NywgNzI5MDcsIDcyOTE4LCA3MjkzMCwgNzI5NDEsIDcyOTUxLCA3Mjk2MCwgNzI5NjgsIDcyOTc1LCAKLSAgICA3Mjk4MywgNzI5OTIsIDczMDAwLCA3MzAwOSwgNzMwMTksIDczMDI4LCA3MzAzNiwgNzMwNDUsIDczMDU1LCA3MzA2NCwgCi0gICAgNzMwNzQsIDczMDg1LCA3MzA5NSwgNzMxMDQsIDczMTEyLCA3MzEyMSwgNzMxMzEsIDczMTQwLCA3MzE1MCwgNzMxNjEsIAotICAgIDczMTcxLCA3MzE4MCwgNzMxOTAsIDczMjAxLCA3MzIxMSwgNzMyMjIsIDczMjM0LCA3MzI0NSwgNzMyNTUsIDczMjY0LCAKLSAgICA3MzI3MiwgNzMyODEsIDczMjkxLCA3MzMwMCwgNzMzMTAsIDczMzIxLCA3MzMzMSwgNzMzNDAsIDczMzUwLCA3MzM2MSwgCi0gICAgNzMzNzEsIDczMzgyLCA3MzM5NCwgNzM0MDUsIDczNDE1LCA3MzQyNCwgNzM0MzQsIDczNDQ1LCA3MzQ1NSwgNzM0NjYsIAotICAgIDczNDc4LCA3MzQ4OSwgNzM0OTksIDczNTEwLCA3MzUyMiwgNzM1MzMsIDczNTQ1LCA3MzU1OCwgNzM1NzAsIDczNTgxLCAKLSAgICA3MzU5MSwgNzM2MDAsIDczNjA4LCA3MzYxNSwgNzM2MjMsIDczNjMyLCA3MzY0MCwgNzM2NDksIDczNjU5LCA3MzY2OCwgCi0gICAgNzM2NzYsIDczNjg1LCA3MzY5NSwgNzM3MDQsIDczNzE0LCA3MzcyNSwgNzM3MzUsIDczNzQ0LCA3Mzc1MiwgNzM3NjEsIAotICAgIDczNzcxLCA3Mzc4MCwgNzM3OTAsIDczODAxLCA3MzgxMSwgNzM4MjAsIDczODMwLCA3Mzg0MSwgNzM4NTEsIDczODYyLCAKLSAgICA3Mzg3NCwgNzM4ODUsIDczODk1LCA3MzkwNCwgNzM5MTIsIDczOTIxLCA3MzkzMSwgNzM5NDAsIDczOTUwLCA3Mzk2MSwgCi0gICAgNzM5NzEsIDczOTgwLCA3Mzk5MCwgNzQwMDEsIDc0MDExLCA3NDAyMiwgNzQwMzQsIDc0MDQ1LCA3NDA1NSwgNzQwNjQsIAotICAgIDc0MDc0LCA3NDA4NSwgNzQwOTUsIDc0MTA2LCA3NDExOCwgNzQxMjksIDc0MTM5LCA3NDE1MCwgNzQxNjIsIDc0MTczLCAKLSAgICA3NDE4NSwgNzQxOTgsIDc0MjEwLCA3NDIyMSwgNzQyMzEsIDc0MjQwLCA3NDI0OCwgNzQyNTcsIDc0MjY3LCA3NDI3NiwgCi0gICAgNzQyODYsIDc0Mjk3LCA3NDMwNywgNzQzMTYsIDc0MzI2LCA3NDMzNywgNzQzNDcsIDc0MzU4LCA3NDM3MCwgNzQzODEsIAotICAgIDc0MzkxLCA3NDQwMCwgNzQ0MTAsIDc0NDIxLCA3NDQzMSwgNzQ0NDIsIDc0NDU0LCA3NDQ2NSwgNzQ0NzUsIDc0NDg2LCAKLSAgICA3NDQ5OCwgNzQ1MDksIDc0NTIxLCA3NDUzNCwgNzQ1NDYsIDc0NTU3LCA3NDU2NywgNzQ1NzYsIDc0NTg2LCA3NDU5NywgCi0gICAgNzQ2MDcsIDc0NjE4LCA3NDYzMCwgNzQ2NDEsIDc0NjUxLCA3NDY2MiwgNzQ2NzQsIDc0Njg1LCA3NDY5NywgNzQ3MTAsIAotICAgIDc0NzIyLCA3NDczMywgNzQ3NDMsIDc0NzU0LCA3NDc2NiwgNzQ3NzcsIDc0Nzg5LCA3NDgwMiwgNzQ4MTQsIDc0ODI1LCAKLSAgICA3NDgzNywgNzQ4NTAsIDc0ODYyLCA3NDg3NSwgNzQ4ODksIDc0OTAyLCA3NDkxNCwgNzQ5MjUsIDc0OTM1LCA3NDk0NCwgCi0gICAgNzQ5NTIsIDc0OTU5LCA3NDk2NCwgODQxOSwgNzQ5NzEsIDM1MDcwLCA3NDk3NiwgNzQ5ODEsIDM1MDc1LCA3NDk4NywgCi0gICAgMjI1NzksIDM1MDgwLCA3NDk5MiwgNzQ5OTgsIDc1MDA2LCA3NTAxMiwgNzUwMTgsIDc1MDI1LCA3NTAzMiwgNzUwMzcsIAotICAgIDc1MDQxLCA3NTA0NSwgNzUwNDgsIDc1MDUyLCA3NTA2MSwgNzUwNzAsIDc1MDc4LCA3NTA4NCwgNzUwOTYsIDc1MTA3LCAKLSAgICA3NTExMSwgMzE0MCwgODM5NCwgNzUxMTYsIDc1MTE5LCA3NTEyMSwgNzUxMjUsIDc1MTI5LCA3NTEzMywgNzUxMzksIAotICAgIDc1MTQ0LCAyNzk5MCwgNzUxNDksIDc1MTUzLCA3NTE1NiwgNzUxNjEsIDc1MTY1LCA3NTE3MiwgNzUxNzgsIDc1MTgyLCAKLSAgICA2NDg1LCA3NTE4NiwgMzUwOTcsIDc1MTkxLCA3NTE5OCwgNzUyMDcsIDc1MjE1LCA3NTIyNiwgNzUyMzQsIDc1MjQzLCAKLSAgICA3NTI1MSwgNzUyNTgsIDc1MjY1LCA3NTI3MSwgNzUyODIsIDM1MTAyLCA3NTI4NywgNzUyOTgsIDc1MzEwLCA3NTMxOCwgCi0gICAgNzUzMjksIDc1MzM4LCA3NTM0OSwgNzUzNTQsIDc1MzYyLCAyNTk1LCA3NTM2NywgMzcxNjYsIDc1MzgwLCA3NTM4NCwgCi0gICAgNzUzOTYsIDc1NDA0LCA3NTQwOSwgNzU0MTcsIDc1NDI4LCAxOTExNCwgNzU0MzcsIDc1NDQzLCA3NTQ1MCwgNzU0NTgsIAotICAgIDc1NDY0LCAzNTExMiwgNzU0NjksIDQxMzksIDYzMDU2LCA3NTQ3NiwgNzU0NzksIDc1NDg3LCA3NTUwMCwgNzU1MTMsIAotICAgIDc1NTI2LCA3NTUzOSwgNzU1NDYsIDc1NTU3LCA3NTU2NiwgNzU1NzEsIDQ2NTIxLCA0NjUyNiwgNzU1NzUsIDc1NTc5LCAKLSAgICA3NTU4NywgNzU1OTQsIDc1NjAzLCA3NTYxMSwgNzU2MTcsIDc1NjI2LCA3NTYzNCwgNzU2NDEsIDc1NjQ5LCA3NTY1MywgCi0gICAgNzU2NjIsIDc1NjcxLCA3NTY4MSwgNzU2OTQsIDc1NzA3LCA3NTcxNywgMzUxMTcsIDc1NzIzLCA3NTczMCwgNzU3MzYsIAotICAgIDc1NzQyLCAzNTEyMywgNzU3NDcsIDc1NzUwLCA3NTc1NCwgNzU3NjIsIDc1NzcxLCA0NjI1OSwgNzU3NzksIDc1Nzg4LCAKLSAgICA3NTc5NiwgNzU4MDMsIDc1ODExLCA3NTgyMSwgNzU4MzAsIDc1ODM5LCAzNjQyMCwgNzU4NDgsIDc1ODU5LCA3NTg3NCwgCi0gICAgNzU4ODQsIDk5MDQsIDIzMjYzLCA3NTg5MywgNzU4OTgsIDc1OTAzLCA3NTkwNywgNzU5MTIsIDc1OTE2LCA3NTkyMSwgCi0gICAgNzU5MjcsIDc1OTMyLCA3NTkzNywgNzU5NDMsIDc1OTQ4LCA3NTk1MywgMjMyMjgsIDc1OTU4LCA3NTk2NSwgNzU5NzMsIAotICAgIDc1OTgxLCA3NTk4OSwgNzU5OTQsIDc2MDAxLCA3NjAwOCwgNzYwMTMsIDIyNzIsIDc2MDE3LCA3NjAyMSwgNzYwMjksIAotICAgIDc2MDM3LCAzNTE0MCwgNzYwNDMsIDc2MDQ5LCA3NjA2MSwgNzYwNjcsIDc2MDc0LCA3NjA3OCwgNzYwODUsIDc2MDkwLCAKLSAgICA3NjA5NywgNzYxMDMsIDc2MTEwLCA3NjEyMSwgNzYxMzEsIDc2MTQxLCA3NjE1MywgNzYxNTksIDc2MTY3LCA3NjE3MywgCi0gICAgNzYxODMsIDc2MTkzLCAzNTE2NywgNzYyMDIsIDc2MjExLCA3NjIxNywgNzYyMjksIDc2MjQwLCA3NjI0NywgNzYyNTIsIAotICAgIDc2MjU2LCA3NjI2NCwgNzYyNzAsIDc2Mjc1LCA3NjI4MCwgNzYyODcsIDc2Mjk1LCA3NjMwNywgNzYzMTcsIDc2MzI2LCAKLSAgICA3NjMzNSwgNzYzNDIsIDM3MDE5LCAyNTc2NCwgNzYzNDgsIDc2MzUzLCA3NjM1NywgNzYzNjEsIDc2MzY2LCA3NjM3NCwgCi0gICAgNzYzODAsIDc2MzkxLCA3NjQwNCwgNzY0MDksIDc2NDE2LCAzNTE3MiwgNzY0MjEsIDc2NDMzLCA3NjQ0MiwgNzY0NTAsIAotICAgIDc2NDYwLCA3NjQ3MSwgNzY0ODQsIDc2NDkxLCA3NjUwMCwgNzY1MDksIDc2NTE3LCA3NjUyMiwgNzY1MjgsIDE1MDAsIAotICAgIDc2NTMzLCA3NjUzOCwgNzY1NDMsIDc2NTQ4LCA3NjU1NCwgNzY1NTksIDc2NTY0LCA3NjU3MCwgNzY1NzYsIDc2NTgxLCAKLSAgICA3NjU4NSwgNzY1OTAsIDc2NTk1LCA3NjYwMCwgNjM2MTEsIDc2NjA1LCA3NjYxMCwgNzY2MTUsIDc2NjIwLCA3NjYyNiwgCi0gICAgNzY2MzIsIDc2NjM3LCA3NjY0MSwgNzY2NDYsIDc2NjUxLCA3NjY1NiwgNzY2NjIsIDc2NjY3LCA3NjY3MywgNzY2NzgsIAotICAgIDc2NjgzLCA3NjY4OCwgNzY2OTMsIDc2Njk3LCA3NjcwMywgNzY3MDgsIDc2NzE3LCA3NjcyMiwgNzY3MjcsIDc2NzMyLCAKLSAgICA3NjczNywgNzY3NDEsIDc2NzQ4LCA3Njc1NCwgNDQzMCwgMTg3MzcsIDMxMDUsIDc2NzU5LCA3Njc2MywgNzY3NjgsIAotICAgIDc2NzcyLCA3Njc3NiwgNzY3ODAsIDUwMzIxLCA3Njc4NCwgNzY3MDksIDc2Nzg2LCA3Njc5NiwgMzUxODEsIDc2Nzk5LCAKLSAgICA3NjgwNCwgNzY4MTMsIDc2ODE5LCA2NDU0LCAzNTE4NiwgNzY4MjMsIDc2ODI5LCA3NjgzNCwgNzY4NDAsIDc2ODQ1LCAKLSAgICA3Njg0OSwgNzY4NTYsIDc2ODYxLCA3Njg3MSwgNzY4ODAsIDc2ODg0LCA3Njg5MCwgNzY4OTYsIDc2OTAyLCA3NjkwNiwgCi0gICAgNzY5MTQsIDc2OTIxLCA3NjkyOSwgNzY5MzcsIDM1MTkxLCA3Njk0NCwgNzY5NDcsIDc2OTU0LCA3Njk2MCwgNzY5NjUsIAotICAgIDc2OTY5LCA3Njk3NSwgNzY5ODIsIDc2OTg3LCA3Njk5MSwgNzcwMDAsIDc3MDA4LCA3NzAxNCwgNzcwMTksIDM1MTk2LCAKLSAgICA3NzAyNiwgNzcwMzgsIDc3MDQ1LCA3NzA1MSwgNzcwNTYsIDc3MDYyLCA3NzA2OSwgNzcwNzUsIDIyOTc5LCAyOTU4OSwgCi0gICAgNzcwODEsIDc3MDg2LCA3NzA5MiwgNzcwOTYsIDc3MTA4LCA3Njc0MiwgNzY3NDksIDIzMTYwLCA3NzExOCwgNzcxMjMsIAotICAgIDc3MTMwLCA3NzEzNiwgNzcxNDMsIDc3MTQ5LCA3NzE2MCwgNzcxNjUsIDc3MTczLCA5NjA5LCA3NzE3OCwgNzcxODEsIAotICAgIDc3MTg3LCA3NzE5MSwgNzcxOTUsIDc3MTk4LCA3NzIwNCwgMzQ5MzQsIDQ0MzEsIDEwNjcsIDE0NTk2LCA3NzIxMSwgCi0gICAgNzcyMTcsIDc3MjIzLCA3NzIyOSwgNzcyMzUsIDc3MjQxLCA3NzI0NywgNzcyNTMsIDc3MjU5LCA3NzI2NCwgNzcyNjksIAotICAgIDc3Mjc0LCA3NzI3OSwgNzcyODQsIDc3Mjg5LCA3NzI5NCwgNzcyOTksIDc3MzA0LCA3NzMwOSwgNzczMTQsIDc3MzE5LCAKLSAgICA3NzMyNCwgNzczMzAsIDc3MzM1LCA3NzM0MCwgNzczNDYsIDc3MzUxLCA3NzM1NiwgNzczNjIsIDc3MzY4LCA3NzM3NCwgCi0gICAgNzczODAsIDc3Mzg2LCA3NzM5MiwgNzczOTgsIDc3NDA0LCA3NzQxMCwgNzc0MTUsIDc3NDIwLCA3NzQyNiwgNzc0MzEsIAotICAgIDc3NDM2LCA3NzQ0MiwgNzc0NDcsIDc3NDUyLCA3NzQ1NywgNzc0NjIsIDc3NDY3LCA3NzQ3MiwgNzc0NzcsIDc3NDgyLCAKLSAgICA3NzQ4NywgNzc0OTIsIDc3NDk3LCA3NzUwMiwgNzc1MDgsIDc3NTEzLCA3NzUxOCwgNzc1MjMsIDc3NTI5LCA3NzUzNCwgCi0gICAgNzc1MzksIDc3NTQ0LCA3NzU0OSwgNzc1NTUsIDc3NTYwLCA3NzU2NSwgNzc1NzAsIDc3NTc1LCA3NzU4MCwgNzc1ODUsIAotICAgIDc3NTkwLCA3NzU5NSwgNzc2MDAsIDc3NjA1LCA3NzYxMCwgNzc2MTUsIDc3NjIwLCA3NzYyNSwgNzc2MzAsIDc3NjM1LCAKLSAgICA3NzY0MCwgNzc2NDUsIDc3NjUwLCA3NzY1NiwgNzc2NjEsIDc3NjY2LCA3NzY3MSwgNzc2NzYsIDc3NjgxLCA3NzY4NiwgCi0gICAgNzc2OTEsIDE4OTAsIDE2MywgNzc2OTYsIDc3NzAwLCA3NzcwNCwgNzc3MDksIDc3NzE3LCA3NzcyMSwgNzc3MjgsIDc3NzM2LCAKLSAgICA3Nzc0MCwgNzc3NTMsIDc3NzYxLCA3Nzc2NiwgNzc3NzEsIDI4Mzk0LCA3Nzc3NSwgNzc3ODAsIDc3Nzg0LCA3Nzc4OSwgCi0gICAgNzc3OTMsIDc3ODAxLCA3NzgwNSwgMjI1ODcsIDc3ODEwLCA3NzgxNCwgNjYxNjIsIDc3ODE4LCA3NzgyMSwgNzc4MjksIAotICAgIDc3ODM3LCA3Nzg0NSwgNzc4NTAsIDc3ODU1LCA3Nzg2MiwgNzc4NjksIDc3ODc1LCA3Nzg4MSwgNzc4ODYsIDc3ODkxLCAKLSAgICA3Nzg5OSwgNzA1NTEsIDc3OTA2LCA2NTk0OCwgNzc5MTEsIDc3OTE2LCA3NzkyMCwgNzc5MjcsIDY1OTc1LCAxMjc0MywgCi0gICAgNzc5MzMsIDc3OTM4LCA3Nzk0MywgNzc5NDcsIDc3OTUwLCA3Nzk1NiwgNzc5NjAsIDc3OTcwLCA3Nzk3OSwgNzc5ODMsIAotICAgIDc3OTg2LCA3Nzk5MCwgNzc5OTcsIDc4MDEwLCA3ODAxNiwgNzgwMjQsIDc4MDMzLCA3ODA0NCwgNzgwNTUsIDc4MDY2LCAKLSAgICA3ODA3NywgNzgwODYsIDc4MDkyLCA3ODEwMSwgNzgxMDksIDc4MTE5LCA3ODEzMiwgNzgxNDAsIDc4MTQ3LCA3ODE1OCwgCi0gICAgNzgxNjQsIDc4MTY5LCA3ODE3NCwgNzgxODAsIDc4MTg2LCA3ODE5NiwgNzgyMDMsIDc4MjEzLCA3ODIyMiwgNzY0MjMsIAotICAgIDc4MjMwLCA3ODIzNiwgNzgyNDQsIDc4MjUwLCA3ODI1NywgNzgyNjUsIDc4MjcwLCA3ODI3MywgNzgyNzcsIDc4MjgxLCAKLSAgICA3ODI4NCwgNzgyOTAsIDc4Mjk2LCA3ODMwNCwgNzgzMTYsIDc4MzI4LCA3ODMzNSwgNzgzNDAsIDc4MzQ0LCA3ODM1NSwgCi0gICAgNzgzNjMsIDc4MzcwLCA3ODM4MiwgNzgzOTAsIDc4Mzk4LCA3ODQwNSwgNzg0MTEsIDc4NDE2LCA3ODQyNiwgNzg0MzUsIAotICAgIDc4NDQwLCA3ODQ1MCwgNzg0NTksIDQ1NTQ5LCA3ODQ2NiwgNzg0NzAsIDc4NDc1LCA3ODQ4MywgNzg0OTAsIDc4NDk2LCAKLSAgICA3ODUwMCwgNzg1MTAsIDc4NTIxLCA3ODUyOSwgNzg1MzYsIDc4NTQ4LCA3ODU2MCwgNzg1NjksIDc1MzcwLCA3ODU3NiwgCi0gICAgNzg1ODYsIDc4NTk4LCA3ODYwOSwgNzg2MjMsIDc4NjMxLCA3ODY0MSwgNzg2NDgsIDc4NjU2LCA3ODY2OSwgNzg2ODEsIAotICAgIDc4NjkwLCA3ODY5OCwgNzg3MDgsIDc4NzE5LCA3ODczMSwgNzg3NDAsIDc4NzUwLCA3ODc2MCwgNzg3NjksIDc4Nzc2LCAKLSAgICA3ODc4NSwgNzg4MDAsIDc4ODA4LCA3ODgxOCwgNzg4MjcsIDc4ODM1LCA3ODg0OCwgNjMwMjYsIDc4ODYzLCA3ODg3MywgCi0gICAgNzg4ODIsIDc4ODk0LCA3ODkwNCwgNzg5MTYsIDc4OTI3LCA3ODkzOCwgNzg5NDksIDc4OTU5LCA3ODk3MCwgNzg5NzgsIAotICAgIDc4OTg0LCA3ODk5NCwgNzkwMDIsIDc5MDA4LCAzMTI5MSwgNzkwMTMsIDc5MDE5LCA3OTAyOCwgNzkwNDAsIDc5MDQ1LCAKLSAgICA3OTA1MiwgMTA0NDgsIDE5MTM0LCA3OTA1OCwgNzkwNjcsIDc5MDcyLCA3OTA3NiwgNzkwODMsIDc5MDg5LCA3OTA5NCwgCi0gICAgNzkwOTksIDc5MTA3LCA3OTExNSwgMTMxMTksIDc5MTE5LCA3OTEyMiwgNzkxMjQsIDc5MTMxLCA3OTEzNywgNzkxNDgsIAotICAgIDc5MTUzLCA3OTE1NywgNzkxNjQsIDc5MTcwLCA3OTE3NSwgNzkxODMsIDcxMTIwLCA3MTEzMCwgNzkxODksIDc5MTk2LCAKLSAgICA3OTIwNiwgMTE1NDMsIDc5MjEzLCA3OTIxOCwgMzE1MDYsIDc5MjI3LCA3OTIzMiwgNzkyMzksIDc5MjQ5LCA3OTI1NywgCi0gICAgNzkyNjUsIDc5Mjc0LCA3OTI4MCwgNzkyODYsIDc5MjkzLCA3OTMwMCwgNzkzMDUsIDc5MzA5LCA3OTMxNywgNjU5OTIsIAotICAgIDc5MzIyLCA3OTMzMSwgNzkzMzksIDc5MzQ2LCA3OTM1MSwgNzkzNTUsIDc5MzY0LCA3OTM3MCwgNzkzNzMsIDc5Mzc3LCAKLSAgICA3OTM4NiwgNzkzOTYsIDc3NzQ4LCA3OTQwNSwgNzk0MDksIDc5NDE3LCA3OTQyMSwgNzk0MjcsIDc5NDM4LCA3OTQ0OCwgCi0gICAgMTkxNDMsIDc5NDU5LCA3OTQ2OCwgNzk0NzYsIDc5NDg0LCA3OTQ5MSwgNjYwMTEsIDkxNDcsIDc5NDk5LCA3OTUwMywgCi0gICAgNzk1MTIsIDc5NTE5LCA3OTUyMiwgMjk0NzAsIDc5NTI1LCA3OTUyOSwgNzk1MzQsIDc5NTUxLCA3OTU2MywgMTE1MDEsIAotICAgIDc5NTc1LCA3OTU4MCwgNzk1ODUsIDc5NTkwLCAyMjY2OSwgNzk1OTQsIDc5NTk5LCA3OTYwNCwgNzk2MTAsIDc5NjE1LCAKLSAgICA2MTIyLCA3OTYyMCwgMjI2NzMsIDc5NjI1LCA3OTYzMCwgNzk2MzYsIDc5NjQzLCA3OTY0OCwgNzk2NTMsIDc5NjU5LCAKLSAgICA3OTY2NSwgNzk2NzEsIDc5Njc2LCA3OTY4MiwgNzk2ODYsIDc5NzAwLCA3OTcwOCwgNzk3MTYsIDc5NzIyLCA3OTcyNywgCi0gICAgNzk3MzQsIDc5NzQ0LCA3OTc1MywgNzk3NTgsIDc5NzYzLCA3OTc2OCwgNzk3NzYsIDc5NzgxLCA3OTc4NywgNzk3OTIsIAotICAgIDc5ODAxLCA2NDcxMywgNzk4MDYsIDc5ODA5LCA3OTgyNywgNzk4NDYsIDc5ODU5LCA3OTg3MywgNzk4ODksIDc5ODk2LCAKLSAgICA3OTkwMywgNzk5MTIsIDc5OTE5LCA3OTkyNSwgNzk5MzIsIDc5OTM3LCA3OTk0MywgNzk5NDksIDc5OTU3LCA3OTk2MywgCi0gICAgNzk5NjgsIDc5OTczLCA3OTk4OSwgMTE1MTQsIDgwMDAzLCA4MDAxMCwgODAwMTgsIDgwMDI0LCA4MDAyOCwgODAwMzEsIAotICAgIDgwMDM2LCA4MDA0MSwgODAwNDgsIDgwMDUzLCA4MDA2MiwgODAwNjgsIDgwMDczLCA4MDA3OSwgODAwODUsIDgwMDk0LCAKLSAgICA4MDEwMywgODAxMDgsIDgwMTEyLCA4MDEyMCwgODAxMjksIDEyNzcyLCA4MDEzOCwgODAxNDQsIDgwMTUyLCA4MDE1OCwgCi0gICAgODAxNjQsIDgwMTcwLCA4MDE3NSwgODAxODIsIDgwMTg4LCAxMjc4MywgODAxOTMsIDgwMTk2LCA4MDIwMSwgMzUyMjMsIAotICAgIDgwMjExLCA4MDIyMCwgODAyMjUsIDgwMjMxLCA4MDIzNiwgODAyNDQsIDgwMjUxLCA4MDI2MiwgODAyNzIsIDgwMjc3LCAKLSAgICA4MDI4NSwgNzA0NzQsIDgwMjkwLCA4MDI5NiwgODAzMDEsIDgwMzA4LCA4MDMxNywgODAzMjUsIDgwMzI5LCA4MDMzNSwgCi0gICAgODAzNDEsIDgwMzQ4LCA4MDM1NCwgODAzNTgsIDE4NTE4LCAzMTE0LCA4MDM2MywgODAzNjcsIDgwMzcxLCA4MDM3NywgCi0gICAgODAzODYsIDgwMzkyLCA4MDM5OSwgODA0MDMsIDgwNDI0LCA4MDQ0NiwgODA0NjIsIDgwNDc5LCA4MDQ5OCwgODA1MDcsIAotICAgIDgwNTE3LCA4MDUyNSwgODA1MzIsIDgwNTM5LCA4MDU0NSwgMjkzNDIsIDgwNTU5LCA4MDU2MywgODA1NjksIDgwNTc3LCAKLSAgICA4MDU4OSwgODA1OTUsIDgwNjAzLCA4MDYxMCwgODA2MTUsIDgwNjIwLCA4MDYyNCwgODA2MzIsIDgwNjM5LCA4MDY0MywgCi0gICAgODA2NDksIDgwNjU1LCA4MDY2MCwgMzczMCwgNDY3MjEsIDgwNjY2LCA4MDY3MCwgODA2NzQsIDgwNjc4LCA4MDY4MywgCi0gICAgODA2ODgsIDgwNjkzLCA4MDY5OSwgODA3MDUsIDgwNzExLCA4MDcxOCwgODA3MjQsIDgwNzMxLCA4MDczNywgODA3NDMsIAotICAgIDgwNzQ4LCA4MDc1NCwgODA3NTksIDgwNzYzLCA4MDc2OCwgODA3NzIsIDgwNzc3LCA0NjczNiwgODA3ODEsIDgwNzg2LCAKLSAgICA4MDc5NCwgODA3OTgsIDgwODAzLCA4MDgxMCwgODA4MTksIDgwODI1LCA4MDgzNCwgODA4MzgsIDgwODQ1LCA4MDg0OSwgCi0gICAgODA4NTIsIDgwODU5LCA4MDg2NSwgODA4NzQsIDgwODg0LCA4MDg4OSwgODA4OTMsIDgwOTAxLCA4MDkxMCwgODA5MTQsIAotICAgIDgwOTIyLCA4MDkyOCwgODA5MzMsIDgwOTM4LCA4MDk0NCwgODA5NTAsIDgwOTU1LCA4MDk1OSwgODA5NjUsIDgwOTcwLCAKLSAgICA4MDk3NCwgODA5NzgsIDgwOTgxLCA4MDk4NiwgODA5OTQsIDgxMDA0LCA4MTAxMCwgODEwMTUsIDgxMDI1LCA0NDAzMSwgCi0gICAgODEwMzMsIDgxMDQ1LCA4MTA0OSwgODEwNTUsIDgxMDY3LCA4MTA3OCwgODEwODUsIDgxMDkxLCA4MTA5OCwgODExMDUsIAotICAgIDgxMTE3LCA4MTEyNCwgODExMzAsIDIyNzQ3LCA4MTEzNCwgODExNDIsIDgxMTQ4LCA4MTE1NSwgODExNjEsIDgxMTY3LCAKLSAgICA4MTE3MywgODExNzgsIDgxMTgzLCA4MTE4OCwgODExOTcsIDgxMjA1LCA4MTIxNiwgNzM1MCwgODEyMjEsIDE3OTY3LCAKLSAgICA4MTIyNywgODEyMzEsIDgxMjM1LCA4MTIzOSwgODEyNDcsIDgxMjU2LCA4MTI2MCwgODEyNjcsIDgxMjc2LCA4MTI4NCwgCi0gICAgODEyOTcsIDgxMzAzLCA4MDc3MywgMzIzOTAsIDgxMzA4LCA4MTMxMCwgODEzMTUsIDgxMzIwLCA4MTMyNSwgODEzMzAsIAotICAgIDgxMzM1LCA4MTM0MCwgODEzNDUsIDgxMzUwLCA4MTM1NSwgODEzNjAsIDgxMzY1LCA4MTM3MCwgODEzNzUsIDgxMzgwLCAKLSAgICA4MTM4NiwgODEzOTEsIDgxMzk2LCA4MTQwMSwgODE0MDYsIDgxNDExLCA4MTQxNiwgODE0MjEsIDgxNDI2LCA4MTQzMiwgCi0gICAgODE0MzgsIDgxNDQ0LCA4MTQ0OSwgODE0NTQsIDgxNDY2LCA4MTQ3MSwgMTg5NiwgNjMsIDgxNDc2LCA4MTQ4MSwgMzUyMjksIAotICAgIDgxNDg1LCAzNTIzNCwgMzUyMzksIDM1MjQ1LCAzNTI1MCwgODE0ODksIDM1MjU1LCAyMzc4NSwgODE1MTEsIDgxNTE1LCAKLSAgICA4MTUxOSwgODE1MjQsIDgxNTI4LCAzNTI1OSwgODE1MzIsIDgxNTQwLCA4MTU0NywgMzUyNjQsIDgxNTUzLCA4MTU1NiwgCi0gICAgODE1NjEsIDgxNTY1LCA4MTU3NCwgMTAyNjYsIDgxNTgyLCAzNTI2OSwgMjM2NDEsIDgxNTg1LCA4MTU4OSwgODE1OTcsIAotICAgIDE0MTIsIDgxNjAyLCAzNTI4MCwgODE2MDUsIDgxNjEwLCAyNzc1MCwgMjc3NjAsIDM4MTgyLCA4MTYxNSwgODE2MjAsIAotICAgIDgxNjI1LCA4MTYzMCwgODE2MzYsIDgxNjQxLCA4MTY1MCwgODE2NTUsIDgxNjY0LCA4MTY3MiwgODE2NzksIDgxNjg1LCAKLSAgICA4MTY5MCwgODE2OTUsIDgxNzAwLCA4MTcxMCwgODE3MTksIDgxNzI3LCA4MTczMiwgODE3NDAsIDgxNzQ0LCA4MTc1MiwgCi0gICAgODE3NTYsIDgxNzYzLCA4MTc3MSwgMzUwODgsIDQxMTkyLCA4MTc3OCwgODE3ODQsIDgxNzg5LCA4MTc5NCwgMTMxNTQsIAotICAgIDMwNTI5LCA4MTc5OSwgODE4MDQsIDgxODExLCA4MTgxNywgODE4MjIsIDgxODMwLCA4MTg0MCwgODE4NTAsIDgxODU2LCAKLSAgICA4MTg2MSwgODE4NjcsIDE5MTY1LCA4MTg3NCwgMzkwNTIsIDgxODg3LCA4MTg5MiwgODE4OTgsIDMzMzgxLCA4MTkxMSwgCi0gICAgODE5MTcsIDgxOTIxLCA4MTkzMCwgODE5MzksIDgxOTQ2LCA4MTk1MiwgODE5NjAsIDgxOTY5LCA4MTk3NiwgODE5ODIsIAotICAgIDgxOTg1LCA4MTk4OSwgODE5OTMsIDI3ODkxLCA4MTk5NywgODIwMDQsIDgyMDEwLCA4MjAxOCwgODIwMjMsIDgyMDI3LCAKLSAgICAyNTkxMSwgODIwMzMsIDgyMDM2LCA4MjA0NCwgODIwNTEsIDgyMDU5LCA4MjA3MiwgODIwODYsIDgyMDkzLCA4MjA5OSwgCi0gICAgODIxMDYsIDgyMTEyLCAzNTI5NCwgODIxMTYsIDgyMTIzLCA4MjEzMSwgODIxMzksIDgyMTQ1LCAzNTI5OSwgODIxNTMsIAotICAgIDgyMTU5LCA4MjE2NCwgODIxNzQsIDgyMTgwLCA4MjE4OSwgMzMxODMsIDM3NjE0LCA4MjE5NywgODIyMDIsIDgyMjA3LCAKLSAgICA4MjIxMSwgODIyMTYsIDgyMjIwLCA4MjIyOCwgODIyMzMsIDE2Mjk2LCA0NDA0NCwgODIyMzcsIDgyMjQyLCAzNTMwNCwgCi0gICAgNjc1NDcsIDgyMjQ2LCA4MjI1MSwgODIyNTUsIDgyMjYyLCA4MjI3MSwgODIyNzUsIDgyMjgzLCA4MjI4OSwgODIyOTQsIAotICAgIDgyMzAwLCA4MjMwNSwgODIzMTIsIDgyMzE4LCA4MjMyMywgODIzMjgsIDgyMzM5LCA4MjM0OCwgODIzNjAsIDgyMzc1LCAKLSAgICAzNTU3MSwgODIzODEsIDE4MDg2LCAzNTMwOCwgODIzODUsIDgyMzkyLCA4MjM5OCwgMjYwMjcsIDgyNDAyLCA4MjQwOSwgCi0gICAgODI0MTgsIDgyNDI1LCA4MjQzNCwgODI0NDAsIDgyNDQ1LCA4MjQ1MywgODI0NTksIDM1MzE4LCA4MjQ2NCwgODI0NzMsIAotICAgIDgxMDczLCA4MjQ4MiwgODI0ODksIDgyNDk1LCA4MjUwMSwgODI1MTAsIDgyNTIwLCA4MjUyOCwgODI1MzUsIDgyNTM5LCAKLSAgICAzNTMyMywgODI1NDIsIDM1MzI5LCAzNTMzNSwgODI1NDcsIDgyNTU1LCA4MjU2MywgODI1NzMsIDgyNTgyLCA4MjU5MCwgCi0gICAgODI1OTcsIDgyNjA3LCAzNTM0MCwgODI2MTEsIDgyNjEzLCA4MjYxNywgODI2MjIsIDgyNjI2LCA4MjYzMCwgODI2MzYsIAotICAgIDgyNjQxLCA4MjY0NSwgODI2NTYsIDgyNjYxLCA4MjY2NiwgMzExOSwgODI2NzAsIDgyNjc3LCA4MjY4MSwgODI2OTAsIAotICAgIDgyNjk4LCA4MjcwNSwgODI3MTAsIDgyNzE1LCA2NzU5OCwgODI3MTksIDgyNzIyLCA4MjcyOCwgODI3MzYsIDgyNzQyLCAKLSAgICA4Mjc0NiwgODI3NTEsIDgyNzU4LCA4Mjc2MywgODI3NjgsIDgyNzcyLCA4Mjc3OCwgODI3ODMsIDM3NjQ1LCA4Mjc4NywgCi0gICAgODI3OTAsIDgyNzk1LCA4Mjc5OSwgODI4MDQsIDgyODExLCA4MjgxNiwgODI4MjAsIDQyNTgwLCA4MjgyOCwgMjc3NjksIAotICAgIDI3Nzc4LCA4MjgzNCwgODI4NDAsIDgyODQ2LCA4Mjg1MSwgODI4NTUsIDgyODU4LCA4Mjg2OCwgODI4NzcsIDgyODgyLCAKLSAgICA4Mjg4OCwgODI4OTUsIDgyOTAxLCA4MjkwNSwgODI5MTMsIDgyOTE4LCAzNzY1MSwgNzc5NTIsIDgyOTIyLCA4MjkzMCwgCi0gICAgODI5MzYsIDgyOTQzLCA4Mjk0OCwgODI5NTIsIDgyOTU3LCA2MzI0MiwgODI5NjMsIDgyOTY5LCAzNzY1NywgODI5NzQsIAotICAgIDgyOTc5LCA4Mjk4MywgODI5ODgsIDgyOTkzLCA4Mjk5OCwgODMwMDIsIDgzMDA3LCA4MzAxMiwgODMwMTgsIDgzMDIzLCAKLSAgICA4MzAyOCwgODMwMzQsIDgzMDQwLCA4MzA0NSwgODMwNDksIDgzMDU0LCA4MzA1OSwgODMwNjQsIDgzMDY4LCAyNjAyNiwgCi0gICAgODMwNzMsIDgzMDc4LCA4MzA4NCwgODMwOTAsIDgzMDk2LCA4MzEwMSwgODMxMDUsIDgzMTEwLCA4MzExNSwgODMxMjAsIAotICAgIDgzMTI0LCA4MzEyOSwgODMxMzQsIDgzMTM5LCA4MzE0NCwgNDY5OTEsIDgzMTQ4LCAzNTM0OCwgODMxNTYsIDgzMTYwLCAKLSAgICA4MzE2OCwgODMxNzYsIDgzMTg3LCA4MzE5MiwgODMxOTYsIDI0MjExLCA3NTQ3MywgODMyMDEsIDgzMjA3LCA4MzIxMiwgCi0gICAgODMyMjIsIDgzMjI5LCA4MzIzNCwgODMyNDIsIDgzMjUxLCA4MzI1NiwgODMyNjAsIDgzMjY1LCA4MzI3MywgODMyODEsIAotICAgIDgzMjg4LCA3MDczNiwgODMyOTQsIDgzMzAyLCA4MzMwOSwgODMzMjAsIDgzMzI2LCA4MzMzMiwgMzUzNTgsIDgzMzM1LCAKLSAgICA4MzM0MiwgODMzNTAsIDgzMzU1LCA0NDI0NywgODMzNTksIDgzMzY0LCA4MzM3MSwgODMzNzYsIDk0ODQsIDgzMzgwLCAKLSAgICA4MzM4OCwgODMzOTUsIDgzNDAyLCA4MzQxMSwgODM0MTgsIDgzNDI0LCA4MzQzOCwgNjE5NCwgODM0NDYsIDgzNDUyLCAKLSAgICA4MzQ1NiwgODM0NTksIDgzNDY3LCA4MzQ3NCwgODM0NzksIDgzNDkyLCA4MzQ5OSwgODM1MDUsIDgzNTA5LCA4MzUxNCwgCi0gICAgODM1MjEsIDgzNTI2LCA2NTg1MSwgODM1MzEsIDgzNTM0LCA4MzU0MywgODM1NTAsIDgzNTU2LCA4MzU2MCwgODM1NjMsIAotICAgIDgzNTcxLCA4MzU4MCwgODM1OTAsIDgzNjAwLCA4MzYwOSwgODM2MjAsIDgzNjI4LCA4MzYzOSwgODM2NDQsIDgzNjQ4LCAKLSAgICA4MzY1MywgODM2NTcsIDM4MzEzLCA4MzY2NSwgMjMwNDIsIDM4MzIyLCA4MzY3MCwgODM2NzUsIDgzNjgwLCA4MzY4NSwgCi0gICAgODM2OTAsIDgzNjk1LCA4MzcwMCwgODM3MDQsIDgzNzA5LCA4MzcxNCwgODM3MTksIDgzNzI0LCA4MzcyOSwgODM3MzQsIAotICAgIDgzNzM4LCA4Mzc0MywgODM3NDgsIDgzNzUyLCA4Mzc1NiwgODM3NjAsIDgzNzY0LCA4Mzc2OSwgODM3NzQsIDgzNzc4LCAKLSAgICA4Mzc4MywgODM3ODcsIDgzNzkxLCA4Mzc5NiwgODM4MDEsIDgzODA2LCA4MzgxMSwgODM4MTUsIDgzODIwLCA4MzgyNSwgCi0gICAgODM4MjksIDgzODM0LCA4MzgzOSwgODM4NDQsIDgzODQ5LCA4Mzg1NCwgODM4NTksIDgzODY0LCA4Mzg2OSwgODM4NzQsIAotICAgIDgzODc5LCA4Mzg4NCwgODM4ODksIDgzODk0LCA4Mzg5OSwgODM5MDQsIDgzOTA5LCA4MzkxNCwgODM5MTksIDgzOTI0LCAKLSAgICA4MzkyOSwgODM5MzMsIDgzOTM4LCA4Mzk0MywgODM5NDgsIDgzOTUzLCA4Mzk1OCwgODM5NjMsIDgzOTY4LCA4Mzk3MywgCi0gICAgODM5NzgsIDgzOTgzLCA4Mzk4OCwgODM5OTIsIDgzOTk3LCA4NDAwMSwgODQwMDYsIDg0MDExLCA4NDAxNiwgODQwMjEsIAotICAgIDg0MDI2LCA4NDAzMSwgODQwMzYsIDg0MDQxLCA4NDA0NiwgODQwNTAsIDg0MDU0LCA4NDA1OSwgODQwNjQsIDg0MDY4LCAKLSAgICA4NDA3MywgODQwNzgsIDg0MDgyLCA4NDA4NywgODQwOTIsIDg0MDk3LCA4NDEwMiwgODQxMDYsIDg0MTExLCA4NDExNiwgCi0gICAgODQxMjAsIDg0MTI1LCA4NDEyOSwgODQxMzMsIDg0MTM3LCA4NDE0MSwgODQxNDYsIDg0MTUwLCA4NDE1NCwgODQxNTgsIAotICAgIDg0MTYyLCA4NDE2NiwgODQxNzAsIDg0MTc0LCA4NDE3OCwgODQxODIsIDg0MTg3LCA4NDE5MiwgODQxOTcsIDg0MjAyLCAKLSAgICA4NDIwNywgODQyMTIsIDg0MjE3LCA4NDIyMiwgODQyMjcsIDg0MjMyLCA4NDIzNiwgODQyNDAsIDg0MjQ0LCA4NDI0OCwgCi0gICAgODQyNTIsIDg0MjU2LCA4NDI2MSwgODQyNjUsIDg0MjcwLCA4NDI3NCwgODQyNzksIDg0Mjg0LCA4NDI4OCwgODQyOTIsIAotICAgIDg0Mjk3LCA4NDMwMSwgODQzMDUsIDg0MzA5LCA4NDMxMywgODQzMTcsIDg0MzIxLCA4NDMyNSwgODQzMjksIDg0MzMzLCAKLSAgICA4NDMzNywgODQzNDEsIDg0MzQ1LCA4NDM0OSwgODQzNTMsIDg0MzU4LCA4NDM2MywgODQzNjcsIDg0MzcxLCA4NDM3NSwgCi0gICAgODQzNzksIDg0MzgzLCA4NDM4NywgODQzOTIsIDg0Mzk2LCA4NDQwMCwgODQ0MDQsIDg0NDA4LCA4NDQxMiwgODQ0MTYsIAotICAgIDg0NDIxLCA4NDQyNSwgODQ0MzAsIDg0NDM0LCA4NDQzOCwgODQ0NDIsIDg0NDQ2LCA4NDQ1MCwgODQ0NTQsIDg0NDU4LCAKLSAgICA4NDQ2MiwgODQ0NjYsIDg0NDcwLCA4NDQ3NCwgODQ0NzksIDg0NDgzLCA4NDQ4NywgODQ0OTEsIDg0NDk1LCA4NDQ5OSwgCi0gICAgODQ1MDMsIDg0NTA3LCA4NDUxMSwgODQ1MTUsIDg0NTE5LCA4NDUyMywgODQ1MjgsIDg0NTMyLCA4NDUzNiwgODQ1NDEsIAotICAgIDg0NTQ2LCA4NDU1MCwgODQ1NTQsIDg0NTU4LCA4NDU2MiwgODQ1NjYsIDg0NTcwLCA4NDU3NCwgODQ1NzgsIDg0NTgzLCAKLSAgICA4NDU4NywgODQ1OTIsIDg0NTk2LCA4NDYwMSwgODQ2MDUsIDg0NjEwLCA4NDYxNCwgODQ2MjAsIDg0NjI1LCA4NDYyOSwgCi0gICAgODQ2MzQsIDg0NjM4LCA4NDY0MywgODQ2NDcsIDg0NjUyLCA4NDY1NiwgODQ2NjEsIDE1MTksIDg0NjY1LCAyODczLCAxNzc0LCAKLSAgICAxNjkyLCAyNzcwNSwgODQ2NjksIDI4ODIsIDg0NjczLCAxMzgxLCA4NDY3OCwgMTMyMywgODQ2ODIsIDg0Njg2LCAyODk5LCAKLSAgICA4NDY5MCwgODQ2OTcsIDg0NzA0LCA4NDcxOCwgMjkwMywgNzQ1MiwgODQ3MjcsIDg0NzM1LCA4NDc0MiwgODQ3NTMsIAotICAgIDg0NzYyLCA4NDc2OSwgODQ3ODEsIDg0Nzk0LCA4NDgwNywgODQ4MTgsIDg0ODIzLCA4NDgzMCwgODQ4NDIsIDg0ODQ2LCAKLSAgICAyOTA3LCAxMjg1MCwgODQ4NTYsIDg0ODYxLCA4NDg3MCwgODQ4ODAsIDg0ODg1LCAyOTExLCA4NDg5MywgODQ4OTcsIAotICAgIDg0OTAyLCA4NDkwOSwgODQ5MTUsIDg0OTIzLCA4NDkzNSwgMTMyOCwgMTQyMDEsIDg0OTQ1LCA4NDk0OSwgODQ5NTUsIAotICAgIDg0OTY5LCA4NDk4MSwgODQ5OTMsIDg1MDAzLCA4NTAxMiwgODUwMjEsIDg1MDMwLCA4NTAzOCwgODUwNDksIDg1MDU3LCAKLSAgICA0MjkyLCA4NTA2NywgODUwNzgsIDg1MDg3LCA4NTA5MywgODUxMDgsIDg1MTE1LCA4NTEyMSwgODUxMjYsIDM4NDQ3LCAKLSAgICA4NTEzMSwgMjkzNSwgMTQyMDUsIDg1MTM1LCA4NTE0MiwgOTQwOSwgODUxNTEsIDI5NDAsIDM0Nzk2LCA4NTE1NywgNjU1NzMsIAotICAgIDg1MTY0LCA4NTE3MCwgODUxODEsIDg1MTg3LCA4NTE5NCwgODUyMDAsIDg1MjA4LCA4NTIxNSwgODUyMjEsIDg1MjMyLCAKLSAgICA4NTI0MiwgODUyNTEsIDg1MjYyLCA4NTI3MSwgODUyNzgsIDg1Mjg0LCA4NTI5NCwgODUzMDIsIDg1MzA4LCA4NTMyMywgCi0gICAgODUzMjksIDg1MzM0LCA4NTM0MSwgODUzNDQsIDg1MzUwLCA4NTM1NywgODUzNjMsIDg1MzcxLCA4NTM4MCwgODUzODgsIAotICAgIDg1Mzk0LCA4NTQwMywgNDYyNjEsIDg1NDE3LCA4NTQyMiwgODU0MjgsIDE2MDcyLCA4NTQzMywgODU0NDYsIDg1NDU4LCAKLSAgICA4NTQ2NywgODU0NzUsIDg1NDgyLCA4NTQ4NiwgODU0OTAsIDg1NDkzLCA4NTUwMCwgODU1MDcsIDg1NTE1LCA4NTUyMywgCi0gICAgODU1MzIsIDg1NTQwLCAxNTk4MywgODU1NDgsIDg1NTUzLCA4NTU1NywgODU1NjksIDg1NTc2LCA4NTU4NSwgODQxLCAKLSAgICA4NTU5NSwgODU2MDQsIDg1NjE1LCAyOTU2LCA4NTYxOSwgODU2MjMsIDg1NjI5LCA4NTY0MiwgODU2NTQsIDg1NjY0LCAKLSAgICA4NTY3MywgODU2ODUsIDI4NDQ2LCA4NTY5NiwgODU3MDQsIDg1NzEzLCA4NTcyNCwgODU3MzUsIDg1NzQ1LCA4NTc1NSwgCi0gICAgODU3NjQsIDg1NzcyLCAxMjM2NCwgODU3NzksIDg1NzgzLCA4NTc4NiwgODU3OTEsIDg1Nzk2LCA4NTgwMCwgODU4MDYsIAotICAgIDEzMzMsIDg1ODEzLCA4NTgxNywgMTI5MzIsIDg1ODIxLCA4NTgzMiwgODU4NDEsIDg1ODQ5LCA4NTg1OCwgODU4NjYsIAotICAgIDg1ODgyLCA4NTg5MywgODU5MDIsIDg1OTEwLCA4NTkyMiwgODU5MzMsIDg1OTQ5LCA4NTk1OSwgODU5ODAsIDg1OTk0LCAKLSAgICA4NjAwNywgODYwMTUsIDg2MDIyLCA3NDk4LCA4NjAzNSwgODYwNDAsIDg2MDQ2LCA2MjAzLCA4NjA1MiwgODYwNTUsIAotICAgIDg2MDYyLCA4NjA3MiwgODU1NCwgODYwNzksIDg2MDg0LCA4NjA4OSwgODYwOTQsIDg2MTAyLCA4NjExMSwgODYxMTksIAotICAgIDg2MTI0LCA4NjEzMSwgMTA0OTYsIDEwNTA1LCA4NjEzNywgODYxNDgsIDg2MTUzLCA4NjE1OSwgMjk3MiwgMjk3NywgCi0gICAgODYxNjUsIDExODU3LCA4NjE3MSwgODYxNzgsIDg2MTg1LCA4NjE5OCwgMjI4MSwgODcsIDg2MjAzLCA4NjIwOCwgODYyMTYsIAotICAgIDg2MjI2LCA4NjIzNSwgODYyNDEsIDg2MjUwLCA4NjI1OCwgODYyNjgsIDg2MjcyLCA4NjI3NiwgODYyODEsIDg2Mjg1LCAKLSAgICA4NjI5NywgMzAwMCwgODYzMDUsIDg2MzEzLCA4NjMxOCwgODYzMjksIDg2MzQwLCA4NjM1MiwgODYzNjMsIDg2MzczLCAKLSAgICA4NjM4MiwgMjMwODMsIDg2Mzg3LCA4NjM5MywgODYzOTgsIDg2NDA4LCA4NjQxOCwgODY0MjMsIDg2NDI5LCA4NjQzMywgCi0gICAgODY0MzgsIDg2NDQ3LCAyMzA5NSwgODY0NTEsIDQzODQsIDI0LCA4NjQ1NiwgODY0NjUsIDg2NDcyLCA4NjQ3OSwgODY0ODUsIAotICAgIDg2NDkxLCAxMDQ5LCA4NjQ5NiwgODY1MDEsIDY2MTI4LCA4NjUwNiwgODY1MTEsIDg2NTE3LCA4NjUyMywgODY1MzEsIAotICAgIDg2NTM2LCA4NjU0NCwgODY1NTEsIDg2NTU3LCA4NjU2MiwgNDI0NjQsIDQ2MTU1LCA4NjU2OCwgMzAwNCwgMzIsIDg2NTc4LCAKLSAgICA4NjU5MSwgODY1OTYsIDg2NjA0LCA4NjYwOSwgODY2MTUsIDMwMjYsIDMwNDk3LCA4NjYyMCwgODY2MjgsIDg2NjM1LCAKLSAgICA4NjY0MCwgODY2NDksIDYzNDkyLCA0MDE4LCA2NzIxOCwgODY2NTcsIDg2NjYxLCAxNzE5LCAxODMzLCA4NjY2NiwgODY2NzEsIAotICAgIDg2Njc4LCAxODM3LCAyODAsIDg2Njg1LCA4NjY5MSwgODY2OTYsIDMwNDgsIDg2NzAwLCA4NjcwNSwgODY3MTIsIDE4NDEsIAotICAgIDg2NzE3LCA4NjcyMywgODY3MjgsIDg2NzQwLCA2NDMwLCA4Njc1MCwgODY3NTcsIDE4NDgsIDg2NzYzLCA4Njc2OCwgCi0gICAgODY3NzUsIDg2NzgyLCA4Njc5NywgODY4MDQsIDg2ODE1LCA4NjgyMCwgODY4MjgsIDI2NTcsIDg2ODMyLCA4Njg0NCwgCi0gICAgODY4NDksIDg2ODUzLCA4Njg1OSwgMzAzMTMsIDIyODYsIDg2ODYzLCA4Njg3NCwgODY4NzgsIDg2ODgyLCA4Njg4OCwgCi0gICAgODY4OTIsIDg2OTAxLCA4NjkwNSwgODY5MTYsIDg2OTIwLCAyMzMyLCAzNDYxMywgODY5MjQsIDg2OTM0LCAzMTM5LCAKLSAgICA4Njk0MiwgOTkwOSwgODY5NTEsIDg2OTU2LCA4Njk2MCwgODY5NjksIDg2OTc2LCA4Njk4MiwgMzEwOSwgMTYxMzYsIAotICAgIDg2OTg2LCA4Njk5OSwgODcwMTcsIDg3MDIyLCA4NzAzMCwgODcwMzgsIDg3MDQ4LCAxMDc2OCwgMTQzMTgsIDg3MDYwLCAKLSAgICA4NzA3MywgODcwODAsIDg3MDk0LCA4NzEwMSwgODcxMTcsIDg3MTI0LCA4NzEzMCwgMjMxMjcsIDEzNTU2LCA4NzEzNywgCi0gICAgODcxNDQsIDg3MTU0LCA4NzE2MywgNDY5OTAsIDg3MTc1LCA0NzEyNSwgODcxODMsIDg3MTg2LCA4NzE5MiwgODcxOTgsIAotICAgIDg3MjA0LCA4NzIxMCwgODcyMTYsIDg3MjIzLCA4NzIzMCwgODcyMzYsIDg3MjQyLCA4NzI0OCwgODcyNTQsIDg3MjYwLCAKLSAgICA4NzI2NiwgODcyNzIsIDg3Mjc4LCA4NzI4NCwgODcyOTAsIDg3Mjk2LCA4NzMwMiwgODczMDgsIDg3MzE0LCA4NzMyMCwgCi0gICAgODczMjYsIDg3MzMyLCA4NzMzOCwgODczNDQsIDg3MzUwLCA4NzM1NiwgODczNjIsIDg3MzY4LCA4NzM3NCwgODczODAsIAotICAgIDg3Mzg2LCA4NzM5MiwgODczOTgsIDg3NDA0LCA4NzQxMCwgODc0MTYsIDg3NDIyLCA4NzQyOCwgODc0MzQsIDg3NDQwLCAKLSAgICA4NzQ0NiwgODc0NTIsIDg3NDU4LCA4NzQ2NCwgODc0NzAsIDg3NDc2LCA4NzQ4MiwgODc0ODgsIDg3NDk0LCA4NzUwMCwgCi0gICAgODc1MDYsIDg3NTEyLCA4NzUxOCwgODc1MjQsIDg3NTMwLCA4NzUzNiwgODc1NDMsIDg3NTQ5LCA4NzU1NiwgODc1NjMsIAotICAgIDg3NTY5LCA4NzU3NiwgODc1ODMsIDg3NTg5LCA4NzU5NSwgODc2MDEsIDg3NjA3LCA4NzYxMywgODc2MTksIDg3NjI1LCAKLSAgICA4NzYzMSwgODc2MzcsIDg3NjQzLCA4NzY0OSwgODc2NTUsIDg3NjYxLCA4NzY2NywgODc2NzMsIDMxMjMsIDk4ODIsIAotICAgIDg3Njc5LCA4NzY4NSwgODc2OTMsIDg3Njk3LCA4NDkwNSwgMzEyNywgODc3MDEsIDIyODYwLCAxMzE4OSwgMzk2OCwgCi0gICAgODc3MDUsIDMxMzMsIDg3NzA5LCA4NzcxOSwgODc3MjUsIDg3NzMxLCA4NzczNywgODc3NDMsIDg3NzQ5LCA4Nzc1NSwgCi0gICAgODc3NjEsIDg3NzY3LCA4Nzc3MywgODc3NzksIDg3Nzg1LCA4Nzc5MSwgODc3OTcsIDg3ODAzLCA4NzgwOSwgODc4MTUsIAotICAgIDg3ODIxLCA4NzgyNywgODc4MzMsIDg3ODM5LCA4Nzg0NSwgODc4NTEsIDg3ODU3LCA4Nzg2MywgODc4NjksIDg3ODc2LCAKLSAgICA4Nzg4MywgODc4ODksIDg3ODk1LCA4NzkwMSwgODc5MDcsIDg3OTEzLCA4NzkxOSwgMTMzOCwgODc5MjUsIDg3OTMwLCAKLSAgICA4NzkzNSwgODc5NDAsIDg3OTQ1LCA4Nzk1MCwgODc5NTUsIDg3OTYwLCA4Nzk2NSwgODc5NjksIDg3OTczLCA4Nzk3NywgCi0gICAgODc5ODEsIDg3OTg1LCA4Nzk4OSwgODc5OTMsIDg3OTk3LCA4ODAwMSwgODgwMDcsIDg4MDEzLCA4ODAxOSwgODgwMjUsIAotICAgIDg4MDI5LCA4ODAzMywgODgwMzcsIDg4MDQxLCA4ODA0NSwgODgwNDksIDg4MDUzLCA4ODA1NywgODgwNjEsIDg4MDY2LCAKLSAgICA4ODA3MSwgODgwNzYsIDg4MDgxLCA4ODA4NiwgODgwOTEsIDg4MDk2LCA4ODEwMSwgODgxMDYsIDg4MTExLCA4ODExNiwgCi0gICAgODgxMjEsIDg4MTI2LCA4ODEzMSwgODgxMzYsIDg4MTQxLCA4ODE0NiwgODgxNTEsIDg4MTU2LCA4ODE2MSwgODgxNjYsIAotICAgIDg4MTcxLCA4ODE3NiwgODgxODEsIDg4MTg2LCA4ODE5MSwgODgxOTYsIDg4MjAxLCA4ODIwNiwgODgyMTEsIDg4MjE2LCAKLSAgICA4ODIyMSwgODgyMjYsIDg4MjMxLCA4ODIzNiwgODgyNDEsIDg4MjQ2LCA4ODI1MSwgODgyNTYsIDg4MjYxLCA4ODI2NiwgCi0gICAgODgyNzEsIDg4Mjc2LCA4ODI4MSwgODgyODYsIDg4MjkxLCA4ODI5NiwgODgzMDEsIDg4MzA2LCA4ODMxMSwgODgzMTYsIAotICAgIDg4MzIxLCA4ODMyNiwgODgzMzEsIDg4MzM2LCA4ODM0MSwgODgzNDYsIDg4MzUxLCA4ODM1NiwgODgzNjEsIDg4MzY2LCAKLSAgICA4ODM3MSwgODgzNzYsIDg4MzgxLCA4ODM4NiwgODgzOTEsIDg4Mzk2LCA4ODQwMSwgODg0MDYsIDg4NDExLCA4ODQxNiwgCi0gICAgODg0MjEsIDg4NDI2LCA4ODQzMSwgODg0MzYsIDg4NDQxLCA4ODQ0NiwgODg0NTEsIDg4NDU2LCA4ODQ2MSwgODg0NjYsIAotICAgIDg4NDcxLCA4ODQ3NiwgODg0ODEsIDg4NDg2LCA4ODQ5MSwgODg0OTYsIDg4NTAxLCA4ODUwNiwgODg1MTEsIDg4NTE2LCAKLSAgICA4ODUyMSwgODg1MjYsIDg4NTMxLCA4ODUzNiwgODg1NDEsIDg4NTQ2LCA4ODU1MSwgODg1NTYsIDg4NTYxLCA4ODU2NiwgCi0gICAgODg1NzEsIDg4NTc2LCA4ODU4MSwgODg1ODYsIDg4NTkxLCA4ODU5NiwgODg2MDEsIDg4NjA2LCA4ODYxMSwgODg2MTYsIAotICAgIDg4NjIxLCA4ODYyNiwgODg2MzEsIDg4NjM2LCA4ODY0MSwgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCAKLSAgICA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NiwgODg2OTEsIDg4Njk2LCA4ODcwMSwgODg3MDYsIDg4NzExLCA4ODcxNiwgCi0gICAgODg3MjEsIDg4NzI2LCA4ODczMSwgODg3MzYsIDg4NzQxLCA4ODc0NiwgODg3NTEsIDg4NzU2LCA4ODc2MSwgODg3NjYsIAotICAgIDg4NzcxLCA4ODc3NiwgODg3ODEsIDg4Nzg2LCA4ODc5MSwgODg3OTYsIDg4ODAxLCA4ODgwNiwgODg4MTEsIDg4ODE2LCAKLSAgICA4ODgyMSwgODg4MjYsIDg4ODMxLCA4ODgzNiwgODg4NDEsIDg4ODQ2LCA4ODg1MSwgODg4NTYsIDg4ODYxLCA4ODg2NiwgCi0gICAgODg4NzEsIDg4ODc2LCA4ODg4MSwgODg4ODYsIDg4ODkxLCA4ODg5NiwgODg5MDEsIDg4OTA2LCA4ODkxMSwgODg5MTYsIAotICAgIDg4OTIxLCA4ODkyNiwgODg5MzEsIDg4OTM2LCA4ODk0MSwgODg5NDYsIDg4OTUxLCA4ODk1NywgODg5NjIsIDg4OTY3LCAKLSAgICA4ODk3MiwgODg5NzcsIDg4OTgyLCA4ODk4NywgODg5OTIsIDg4OTk4LCA4OTAwMywgODkwMDgsIDg5MDEzLCA4OTAxOCwgCi0gICAgODkwMjMsIDg5MDI4LCA4OTAzMywgODkwMzgsIDg5MDQzLCA4OTA0OCwgODkwNTMsIDg5MDU4LCA4OTA2MywgODkwNjgsIAotICAgIDg5MDczLCA4OTA3OCwgODkwODMsIDg5MDg4LCA4OTA5MywgODkwOTgsIDg5MTAzLCA4OTEwOCwgODkxMTMsIDg5MTE4LCAKLSAgICA4OTEyMywgODkxMjgsIDg5MTMzLCA4OTEzOCwgODkxNDMsIDg5MTQ4LCA4OTE1MywgODkxNTgsIDg5MTY3LCA4OTE3MiwgCi0gICAgODkxODEsIDg5MTg2LCA4OTE5NSwgODkyMDAsIDg5MjA5LCA4OTIxNCwgODkyMjMsIDg5MjI4LCA4OTIzNywgODkyNDIsIAotICAgIDg5MjUxLCA4OTI1NiwgODkyNjUsIDg5MjcwLCA4OTI3NSwgODkyODQsIDg5Mjg4LCA4OTI5NywgODkzMDIsIDg5MzExLCAKLSAgICA4OTMxNiwgODkzMjUsIDg5MzMwLCA4OTMzOSwgODkzNDQsIDg5MzUzLCA4OTM1OCwgODkzNjcsIDg5MzcyLCA4OTM4MSwgCi0gICAgODkzODYsIDg5Mzk1LCA4OTQwMCwgODk0MDksIDg5NDE0LCA4OTQyMywgODk0MjgsIDg5NDMzLCA4OTQzOCwgODk0NDMsIAotICAgIDg5NDQ4LCA4OTQ1MywgODk0NTgsIDg5NDYyLCA4OTQ2NywgODk0NzIsIDg5NDc3LCA4OTQ4MiwgODk0ODcsIDg5NDkyLCAKLSAgICA4OTQ5OCwgODk1MDMsIDg5NTA4LCA4OTUxMywgODk1MTksIDg5NTIzLCA4OTUyOCwgODk1MzQsIDg5NTM5LCA4OTU0NCwgCi0gICAgODk1NDksIDg5NTU0LCA4OTU1OSwgODk1NjQsIDg5NTY5LCA4OTU3NCwgODk1NzksIDg5NTg0LCA4OTU5MCwgODk1OTUsIAotICAgIDg5NjAwLCA4OTYwNSwgODk2MTEsIDg5NjE2LCA4OTYyMSwgODk2MjYsIDg5NjMxLCA4OTYzNywgODk2NDIsIDg5NjQ3LCAKLSAgICA4OTY1MiwgODk2NTcsIDg5NjYyLCA4OTY2OCwgODk2NzMsIDg5Njc4LCA4OTY4MywgODk2ODgsIDg5NjkzLCA4OTY5OCwgCi0gICAgODk3MDMsIDg5NzA4LCA4OTcxMywgODk3MTgsIDg5NzIzLCA4OTcyOCwgODk3MzMsIDg5NzM4LCA4OTc0MywgODk3NDgsIAotICAgIDg5NzUzLCA4OTc1OCwgODk3NjMsIDg5NzY4LCA4OTc3MywgODk3NzgsIDg5NzgzLCA4OTc4OSwgODk3OTUsIDg5ODAxLCAKLSAgICA4OTgwNiwgODk4MTEsIDg5ODE2LCA4OTgyMSwgODk4MjcsIDg5ODMzLCA4OTgzOSwgODk4NDQsIDg5ODQ5LCA4OTg1NCwgCi0gICAgODk4NjAsIDg5ODY1LCA4OTg3MCwgODk4NzUsIDg5ODgwLCA4OTg4NSwgODk4OTAsIDg5ODk1LCA4OTkwMCwgODk5MDUsIAotICAgIDg5OTEwLCA4OTkxNSwgODk5MjAsIDg5OTI1LCA4OTkzMCwgODk5MzUsIDg5OTQwLCA4OTk0NiwgODk5NTIsIDg5OTU4LCAKLSAgICA4OTk2MywgODk5NjgsIDg5OTczLCA4OTk3OCwgODk5ODQsIDg5OTkwLCA4OTk5NiwgOTAwMDEsIDkwMDA2LCA5MDAxMSwgCi0gICAgOTAwMTYsIDkwMDIxLCA5MDAyNiwgOTAwMzEsIDkwMDM2LCA5MDA0MSwgMTc1MzksIDkwMDQ2LCA5MDA1MiwgOTAwNTcsIAotICAgIDkwMDYyLCA5MDA2NywgOTAwNzIsIDkwMDc3LCA5MDA4MywgOTAwODgsIDkwMDkzLCA5MDA5OCwgOTAxMDMsIDkwMTA4LCAKLSAgICA5MDExNCwgOTAxMTksIDkwMTI0LCA5MDEyOSwgOTAxMzQsIDkwMTM5LCA5MDE0NCwgOTAxNDksIDkwMTU0LCA5MDE1OSwgCi0gICAgOTAxNjQsIDkwMTY5LCA5MDE3NCwgOTAxNzksIDkwMTg0LCA5MDE4OSwgOTAxOTQsIDkwMTk5LCA5MDIwNCwgOTAyMDksIAotICAgIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjMwLCA5MDIzNSwgOTAyNDAsIDkwMjQ1LCA5MDI1MCwgOTAyNTUsIDkwMjYwLCAKLSAgICA5MDI2NSwgOTAyNzAsIDkwMjc1LCA5MDI4MCwgOTAyODUsIDkwMjkwLCA5MDI5NSwgOTAzMDAsIDkwMzA1LCA5MDMxMCwgCi0gICAgOTAzMTUsIDkwMzIwLCA5MDMyNSwgOTAzMzAsIDkwMzM1LCA5MDM0MCwgOTAzNDUsIDkwMzUwLCA5MDM1NSwgOTAzNjAsIAotICAgIDkwMzY1LCA5MDM3MCwgOTAzNzUsIDkwMzgwLCA5MDM4NSwgOTAzOTAsIDkwMzk1LCA5MDQwMCwgOTA0MDUsIDkwNDEwLCAKLSAgICA5MDQxNSwgOTA0MjAsIDkwNDI1LCA5MDQzMCwgOTA0MzYsIDkwNDQxLCA5MDQ0NiwgOTA0NTEsIDkwNDU2LCA5MDQ2MSwgCi0gICAgOTA0NjYsIDkwNDcxLCA5MDQ3NiwgOTA0ODEsIDkwNDg2LCA5MDQ5MSwgOTA0OTcsIDkwNTAyLCA5MDUwOCwgOTA1MTMsIAotICAgIDkwNTE4LCA5MDUyMywgOTA1MjgsIDkwNTMzLCA5MDUzOCwgOTA1NDQsIDkwNTQ5LCA5MDU1NCwgOTA1NjAsIDkwNTY1LCAKLSAgICA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTEsIDkwNTk3LCA5MDYwMiwgOTA2MDcsIDEzMjExLCA5MDYxMiwgCi0gICAgOTA2MTcsIDkwNjIyLCA5MDYyNywgOTA2MzIsIDkwNjM3LCA5MDY0MiwgOTA2NDcsIDkwNjUyLCA5MDY1NywgOTA2NjIsIAotICAgIDkwNjY3LCA5MDY3MiwgOTA2NzcsIDkwNjgyLCA5MDY4NywgOTA2OTIsIDkwNjk3LCA5MDcwMiwgOTA3MDcsIDkwNzEyLCAKLSAgICA5MDcxNywgOTA3MjIsIDkwNzI3LCA5MDczMiwgOTA3MzcsIDkwNzQyLCA5MDc0NywgOTA3NTIsIDkwNzU3LCA5MDc2MiwgCi0gICAgOTA3NjcsIDkwNzcyLCA5MDc3NywgOTA3ODIsIDkwNzg3LCA5MDc5MiwgOTA3OTcsIDkwODAyLCA5MDgwNywgOTA4MTIsIAotICAgIDkwODE3LCA5MDgyMiwgOTA4MjcsIDkwODMyLCA5MDgzNywgOTA4NDIsIDkwODQ3LCA5MDg1MiwgOTA4NTcsIDkwODYyLCAKLSAgICA5MDg2NywgOTA4NzIsIDkwODc3LCA5MDg4MiwgOTA4ODcsIDkwODkyLCA5MDg5NywgOTA5MDIsIDkwOTA3LCA5MDkxMiwgCi0gICAgOTA5MTcsIDkwOTIyLCA5MDkyNywgOTA5MzIsIDkwOTM4LCA5MDk0MywgOTA5NDgsIDkwOTUzLCA5MDk1OCwgOTA5NjQsIAotICAgIDkwOTY5LCA5MDk3NCwgOTA5NzksIDkwOTg0LCA5MDk4OSwgOTA5OTQsIDkxMDAwLCA5MTAwNSwgOTEwMTAsIDkxMDE1LCAKLSAgICA5MTAyMCwgOTEwMjUsIDkxMDMxLCA5MTAzNiwgOTEwNDEsIDkxMDQ2LCA5MTA1MSwgOTEwNTYsIDkxMDYyLCA5MTA2NywgCi0gICAgOTEwNzIsIDkxMDc3LCA5MTA4MiwgOTEwODcsIDkxMDkzLCA5MTA5OSwgOTExMDQsIDkxMTA5LCA5MTExNCwgOTExMjAsIAotICAgIDkxMTI2LCA5MTEzMiwgOTExMzcsIDkxMTQyLCA5MTE0OCwgOTExNTQsIDkxMTU5LCA5MTE2NSwgOTExNzEsIDkxMTc3LCAKLSAgICA5MTE4MiwgOTExODcsIDkxMTkzLCA5MTE5OCwgOTEyMDQsIDkxMjA5LCA5MTIxNSwgOTEyMjQsIDkxMjI5LCA5MTIzNCwgCi0gICAgOTEyNDAsIDkxMjQ1LCA5MTI1MSwgOTEyNTYsIDkxMjYxLCA5MTI2NiwgOTEyNzEsIDkxMjc2LCA5MTI4MSwgOTEyODYsIAotICAgIDkxMjkxLCA5MTI5NiwgOTEzMDEsIDkxMzA2LCA5MTMxMSwgOTEzMTYsIDkxMzIxLCA5MTMyNiwgOTEzMzEsIDkxMzM2LCAKLSAgICA5MTM0MSwgOTEzNDYsIDkxMzUxLCA5MTM1NiwgOTEzNjEsIDkxMzY2LCA5MTM3MSwgOTEzNzYsIDkxMzgxLCA5MTM4NiwgCi0gICAgOTEzOTEsIDkxMzk2LCA5MTQwMSwgOTE0MDYsIDkxNDEyLCA5MTQxOCwgOTE0MjQsIDkxNDI5LCA5MTQzNCwgOTE0MzksIAotICAgIDkxNDQ0LCA5MTQ0OSwgOTE0NTQsIDkxNDU5LCA5MTQ2NCwgOTE0NjksIDkxNDc0LCA5MTQ3OSwgOTE0ODQsIDkxNDg5LCAKLSAgICA5MTQ5NCwgOTE0OTksIDkxNTA0LCA5MTUwOSwgOTE1MTQsIDkxNTE5LCA5MTUyNCwgOTE1MzAsIDkxNTM2LCA5MTU0MSwgCi0gICAgOTE1NDcsIDkxNTUyLCA5MTU1NywgOTE1NjMsIDkxNTY4LCA5MTU3NCwgOTE1NzksIDkxNTg1LCA5MTU5MCwgOTE1OTYsIAotICAgIDkxNjAxLCA5MTYwNywgOTE2MTIsIDkxNjE3LCA5MTYyMiwgOTE2MjcsIDkxNjMyLCA5MTYzNywgOTE2NDIsIDg3NzIwLCAKLSAgICA4NzcyNiwgODc3MzIsIDg3NzM4LCA5MTY0OCwgODc3NDQsIDg3NzUwLCA5MTY1NCwgODc3NTYsIDg3NzYyLCA4Nzc2OCwgCi0gICAgODc3NzQsIDg3NzgwLCA4Nzc4NiwgODc3OTIsIDg3Nzk4LCA4NzgwNCwgOTE2NjAsIDg3ODEwLCA4NzgxNiwgODc4MjIsIAotICAgIDkxNjY2LCA4NzgyOCwgODc4MzQsIDg3ODQwLCA4Nzg0NiwgOTE2NzIsIDg3ODUyLCA4Nzg1OCwgODc4NjQsIDg3ODg0LCAKLSAgICA5MTY3OCwgOTE2ODQsIDg3ODkwLCA5MTY5MCwgODc4OTYsIDg3OTAyLCA4NzkwOCwgODc5MTQsIDg3OTIwLCAzMTUwLCAKLSAgICAzMTU1LCA5MTY5NiwgOTE3MDEsIDkxNzA0LCA5MTcxMCwgOTE3MTYsIDkxNzIzLCA5MTcyOCwgOTE3MzMsIDIzMzcsIAorICAgIDAsIDAsIDYsIDEwLCAxNCwgMTksIDI3LCAzNCwgNDQsIDQ5LCA1NSwgNjQsIDY2LCA2OSwgODEsIDg5LCAxMDIsIDEwOCwgCisgICAgMTEzLCAxMTksIDEyNCwgMTMyLCAxNDEsIDE0NiwgMTU3LCAxNjIsIDE2NywgMTcwLCAxNzQsIDE4MywgMTg5LCAxOTUsIAorICAgIDIwMCwgMjA3LCAyMTUsIDIyMywgMjI0LCAyMjcsIDIzNSwgMjQ0LCAxNzEsIDI1MCwgMjU2LCAyNjMsIDI3MywgMjgwLCAKKyAgICAyODUsIDI4OCwgMjkzLCAyOTksIDMwMywgMzA2LCAzMTEsIDMxNywgMzIzLCAzMjgsIDMzMywgMzM5LCAzNDUsIDM1NCwgCisgICAgMzYxLCAzNjgsIDM3NywgMzc5LCAzODQsIDM4OSwgMzk3LCAzOTksIDQwNywgNDA4LCA0MTYsIDQxOCwgMzM3LCA0MjUsIAorICAgIDQyOCwgNDMwLCA0MzYsIDQzOCwgNDQ1LCA0NTAsIDQ1NywgNDYyLCA0NjcsIDQ3NCwgNDgyLCA0ODYsIDQ5MiwgNDk3LCAKKyAgICA1MDcsIDUxMiwgNTE5LCA1MjIsIDUzMCwgNTM5LCA1NDMsIDU1MywgNTYwLCA1NjcsIDU3NCwgNTgzLCA1OTAsIDU5MywgCisgICAgNTk5LCA2MDMsIDYwNywgNjE1LCA2MTksIDYzMiwgNjM2LCA2MzcsIDY0NCwgNjUzLCA2NjIsIDY2NSwgNjcxLCA2NzUsIAorICAgIDY3NywgNjg3LCA2OTIsIDcwMCwgNzA0LCA3MDcsIDcxNSwgNzE5LCA3MjQsIDcyOSwgNzM1LCA3NDAsIDc0NCwgNzQ3LCAKKyAgICA3NTUsIDc2NCwgNzczLCA3ODEsIDc4OSwgNzkzLCA3OTksIDgwNywgODE0LCA4MTcsIDgyNywgODMxLCA4NDIsIDg1MSwgCisgICAgODU4LCA4NjEsIDg2OCwgODcwLCA4NzYsIDg4MCwgODg1LCA4ODksIDg5NSwgOTA0LCA5MDksIDkxMywgNTg4LCA5MTYsIAorICAgIDkyMSwgOTMwLCA5MzgsIDk0MywgOTQ2LCA2NzQsIDk1MSwgOTU2LCA5NTksIDk2NSwgOTY5LCA5NzMsIDk3OSwgOTg2LCAKKyAgICA5OTUsIDk5OCwgMTAwNSwgMTAxNCwgMTAyNywgMTAzMSwgMTAzOSwgMTA0MiwgMTA0OCwgMTA1NCwgMTA2MywgMTA3MCwgCisgICAgMTA3MywgMTA4MSwgMTA4OCwgMTA5NSwgMTA5OSwgMTEwMiwgMTExMCwgMTExNCwgMTEyMywgMTEyOSwgMTEzMywgMTEzNiwgCisgICAgMTE0MCwgMjYsIDExNDcsIDExNTYsIDExNjEsIDExNjYsIDExNzIsIDExNzcsIDExODIsIDExODcsIDExOTEsIDExOTYsIAorICAgIDEyMDIsIDEyMDcsIDEyMTIsIDEyMTYsIDEyMjIsIDEyMjcsIDEyMzIsIDEyMzcsIDEyNDEsIDEyNDYsIDEyNTEsIDEyNTYsIAorICAgIDEyNjIsIDEyNjgsIDEyNzQsIDEyNzksIDEyODMsIDEyODgsIDEyOTMsIDEyOTgsIDEzMDIsIDEzMDcsIDEzMTIsIDEzMTcsIAorICAgIDEzMjIsIDExNTcsIDExNjIsIDExNjcsIDExNzMsIDExNzgsIDEzMjYsIDExODgsIDEzMzIsIDEzMzcsIDEzNDIsIDEzNDksIAorICAgIDEzNTMsIDEzNTYsIDEzNjUsIDExOTIsIDEzNjksIDExOTcsIDEyMDMsIDEyMDgsIDEzNzMsIDEzNzgsIDEzODMsIDEzODcsIAorICAgIDEzOTEsIDEzOTcsIDE0MDEsIDEyMTMsIDE0MDQsIDE0MDYsIDEyMjMsIDE0MTEsIDE0MTUsIDEyMjgsIDE0MjEsIDEyMzMsIAorICAgIDE0MjUsIDE0MjksIDEyMzgsIDE0MzMsIDE0MzgsIDE0NDIsIDE0NDUsIDE0NDksIDEyNDIsIDEyNDcsIDE0NTQsIDE0NjAsIAorICAgIDEyNTIsIDE0NzIsIDE0NzgsIDE0ODQsIDE0OTAsIDEyNTcsIDEyNjksIDEyNzUsIDE0OTQsIDE0OTgsIDE1MDIsIDE1MDUsIAorICAgIDEyODAsIDE1MDksIDE1MTEsIDE1MTYsIDE1MjEsIDE1MjcsIDE1MzIsIDE1MzcsIDE1NDEsIDE1NDYsIDE1NTEsIDE1NTYsIAorICAgIDE1NjEsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODMsIDE1ODksIDE1OTQsIDE1OTgsIDE2MDMsIDE2MDgsIDE2MTMsIDE2MTgsIAorICAgIDE2MjMsIDE2MjcsIDE2MzUsIDE2NDAsIDE2NDQsIDE2NDksIDE2NTQsIDE2NTksIDE2NjQsIDE2NjgsIDE2NzEsIDE2NzgsIAorICAgIDE2ODMsIDE2ODgsIDE2OTMsIDE2OTgsIDE3MDQsIDE3MDksIDE3MTMsIDEyODQsIDE3MTYsIDE3MjEsIDE3MjYsIDEyODksIAorICAgIDE3MzAsIDE3MzQsIDE3NDEsIDEyOTQsIDE3NDgsIDEyOTksIDE3NTIsIDE3NTQsIDE3NTksIDE3NjUsIDEzMDMsIDE3NzAsIAorICAgIDE3NzksIDEzMDgsIDE3ODQsIDE3OTAsIDE3OTUsIDEzMTMsIDE4MDAsIDE4MDUsIDE4MDksIDE4MTIsIDE4MTcsIDE4MjEsIAorICAgIDE4MjUsIDE4MjksIDE4MzIsIDE4MzYsIDEzMTgsIDE4NDEsIDEzMjMsIDE4NDUsIDE4NDcsIDE4NTMsIDE4NTksIDE4NjUsIAorICAgIDE4NzEsIDE4NzcsIDE4ODMsIDE4ODksIDE4OTUsIDE5MDAsIDE5MDYsIDE5MTIsIDE5MTgsIDE5MjQsIDE5MzAsIDE5MzYsIAorICAgIDE5NDIsIDE5NDgsIDE5NTQsIDE5NTksIDE5NjQsIDE5NjksIDE5NzQsIDE5NzksIDE5ODQsIDE5ODksIDE5OTQsIDE5OTksIAorICAgIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjYsIDIwMzIsIDIwMzgsIDIwNDMsIDIwNDksIDIwNTUsIDIwNjEsIDIwNjcsIAorICAgIDIwNzIsIDIwNzcsIDIwNzksIDIwODAsIDIwODQsIDIwODgsIDIwOTMsIDIwOTcsIDIxMDEsIDIxMDUsIDIxMTAsIDIxMTQsIAorICAgIDIxMTcsIDIxMjIsIDIxMjYsIDIxMzEsIDIxMzUsIDIxMzksIDIxNDQsIDIxNDgsIDIxNTEsIDIxNTUsIDIxNjEsIDIxNzUsIAorICAgIDIxNzksIDIxODMsIDIxODcsIDIxOTAsIDIxOTUsIDIxOTksIDIyMDMsIDIyMDYsIDIyMTAsIDIyMTUsIDIyMjAsIDIyMjUsIAorICAgIDIyMzAsIDIyMzQsIDIyMzgsIDIyNDIsIDIyNDYsIDIyNTEsIDIyNTUsIDIyNjAsIDIyNjQsIDIyNjksIDIyNzUsIDIyODIsIAorICAgIDIyODgsIDIyOTMsIDIyOTgsIDIzMDMsIDIzMDksIDIzMTQsIDIzMjAsIDIzMjUsIDIzMjgsIDIzMzAsIDExNzQsIDIzMzQsIAorICAgIDIzNDEsIDIzNDksIDIzNTksIDIzNjgsIDIzODIsIDIzODYsIDIzOTAsIDIzOTUsIDI0MDgsIDI0MTYsIDI0MjAsIDI0MjUsIAorICAgIDI0MjksIDI0MzIsIDI0MzYsIDI0NDAsIDI0NDUsIDI0NTAsIDI0NTUsIDI0NTksIDI0NjIsIDI0NjYsIDI0NzMsIDI0ODAsIAorICAgIDI0ODYsIDI0OTEsIDI0OTYsIDI1MDIsIDI1MDgsIDI1MTMsIDI1MTYsIDE3NTYsIDI1MTgsIDI1MjQsIDI1MjgsIDI1MzMsIAorICAgIDI1MzcsIDI1NDEsIDE2NzQsIDE3NjcsIDI1NDYsIDI1NTAsIDI1NTMsIDI1NTgsIDI1NjMsIDI1NjgsIDI1NzMsIDI1NzcsIAorICAgIDI1ODQsIDI1ODksIDI1OTIsIDI1OTYsIDI2MDMsIDI2MDksIDI2MTMsIDI2MTcsIDI2MjEsIDI2MjYsIDI2MzMsIDI2MzgsIAorICAgIDI2NDMsIDI2NTAsIDI2NTYsIDI2NjIsIDI2NjgsIDI2ODIsIDI2OTksIDI3MTQsIDI3MjksIDI3MzgsIDI3NDMsIDI3NDcsIAorICAgIDI3NTIsIDI3NTcsIDI3NjEsIDI3NzMsIDI3ODAsIDI3ODYsIDIyNzgsIDI3OTIsIDI3OTksIDI4MDUsIDI4MDksIDI4MTIsIAorICAgIDI4MTksIDI4MjUsIDI4MzAsIDI4MzQsIDI4MzksIDI4NDMsIDI4NDcsIDIxMDIsIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjUsIAorICAgIDI4NzAsIDI4NzgsIDI4ODIsIDI4ODcsIDI4OTEsIDI4OTUsIDI4OTksIDI5MDQsIDI5MDksIDI5MTQsIDI5MTgsIDI5MjMsIAorICAgIDI5MjgsIDI5MzIsIDI5MzcsIDI5NDEsIDI5NDQsIDI5NDgsIDI5NTIsIDI5NjAsIDI5NjUsIDI5NjksIDI5NzMsIDI5NzksIAorICAgIDI5ODgsIDI5OTIsIDI5OTYsIDMwMDIsIDMwMDcsIDMwMTQsIDMwMTgsIDMwMjgsIDMwMzIsIDMwMzYsIDMwNDEsIDMwNDUsIAorICAgIDMwNTAsIDMwNTYsIDMwNjEsIDMwNjUsIDMwNjksIDMwNzMsIDI0NzYsIDMwODEsIDMwODYsIDMwOTIsIDMwOTcsIDMxMDEsIAorICAgIDMxMDYsIDMxMTEsIDMxMTUsIDMxMjEsIDMxMjYsIDIxMDYsIDMxMzIsIDMxMzgsIDMxNDMsIDMxNDgsIDMxNTMsIDMxNTgsIAorICAgIDMxNjMsIDMxNjgsIDMxNzMsIDMxNzgsIDMxODMsIDMxODksIDMxOTQsIDExODksIDEwMSwgMzIwMCwgMzIwNCwgMzIwOCwgCisgICAgMzIxMiwgMzIxNywgMzIyMSwgMzIyNSwgMzIzMSwgMzIzNiwgMzI0MCwgMzI0NCwgMzI0OSwgMzI1NCwgMzI1OCwgMzI2MywgCisgICAgMzI2NywgMzI3MCwgMzI3NCwgMzI3OSwgMzI4MywgMzI4OCwgMzI5MiwgMzI5NSwgMzI5OSwgMzMwMywgMzMwOCwgMzMxMiwgCisgICAgMzMxNSwgMzMyOCwgMzMzMiwgMzMzNiwgMzM0MCwgMzM0NSwgMzM0OSwgMzM1MywgMzM1NiwgMzM2MCwgMzM2NCwgMzM2OSwgCisgICAgMzM3MywgMzM3OCwgMzM4MywgMzM4OCwgMzM5MiwgMzM5NywgMzQwMCwgMzQwMywgMzQwOCwgMzQxNCwgMzQxOCwgMzQyMiwgCisgICAgMzQyNSwgMzQzMCwgMzQzNCwgMzQzOSwgMzQ0MywgMzQ0NywgMzQ1MCwgMzQ1NiwgMzQ2MSwgMzQ2NiwgMzQ3MiwgMzQ3NywgCisgICAgMzQ4MiwgMzQ4OCwgMzQ5NCwgMzQ5OSwgMzUwNCwgMzUwOSwgMzUxNCwgMTA5NywgNTkyLCAzNTE3LCAzNTIwLCAzNTI1LCAKKyAgICAzNTI5LCAzNTMzLCAzNTM3LCAzNTQxLCAzNTQ0LCAzNTQ4LCAzNTUzLCAzNTU4LCAzNTYyLCAzNTY3LCAzNTcxLCAzNTc2LCAKKyAgICAzNTgwLCAzNTg0LCAzNTg4LCAzNTk0LCAzNjAwLCAzNjAzLCAzNjA2LCAxNTAsIDM2MTIsIDM2MTcsIDM2MjYsIDM2MzQsIAorICAgIDM2NDMsIDM2NTMsIDM2NjAsIDM2NjYsIDM2NzMsIDM2NzgsIDM2ODIsIDM2ODYsIDM2OTQsIDM3MDEsIDM3MDYsIDM3MTMsIAorICAgIDM3MTgsIDM3MjIsIDM3MzIsIDM3MzYsIDM3NDAsIDM3NDUsIDM3NTAsIDM3NjAsIDIxMTgsIDM3NjUsIDM3NjksIDM3NzIsIAorICAgIDM3NzgsIDM3ODMsIDM3ODksIDM3OTUsIDM4MDAsIDM4MDcsIDM4MTEsIDM4MTUsIDYxNiwgNzA1LCAxMzUwLCAzODE5LCAKKyAgICAzODI2LCAzODMzLCAzODM5LCAzODQ0LCAzODUxLCAzODU4LCAzODYzLCAzODY5LCAzODc1LCAzODgwLCAzODg0LCAzODkwLCAKKyAgICAzODk3LCAzOTAyLCAzOTA2LCAzOTEwLCAyMTI3LCAzOTE2LCAzOTI0LCAzOTMwLCAzOTM4LCA3NTksIDM5NDQsIDM5NTIsIAorICAgIDM5NjMsIDM5NjcsIDM5NzcsIDIxMzIsIDM5ODMsIDM5ODgsIDQwMDMsIDQwMDksIDQwMTYsIDQwMjYsIDQwMzIsIDQwMzcsIAorICAgIDQwNDMsIDQwNDksIDQwNTIsIDQwNTUsIDQwNTksIDQwNjQsIDQwNzEsIDQwODAsIDQwODUsIDQwODksIDQwOTMsIDQwOTcsIAorICAgIDQxMDEsIDQxMDYsIDQxMTIsIDQxMjMsIDQxMjcsIDMyNzUsIDQxMzIsIDQxNDQsIDQxNTAsIDQxNTgsIDQxNjIsIDQxNjcsIAorICAgIDE1NDMsIDQxNzQsIDQxNzcsIDQxODAsIDQxODQsIDQxODcsIDQxOTMsIDQxOTcsIDQyMTEsIDQyMTUsIDQyMTgsIDQyMjIsIAorICAgIDQyMjgsIDQyMzQsIDQyMzksIDQyNDMsIDQyNDcsIDQyNTMsIDQyNjQsIDQyNzAsIDQyNzUsIDQyODEsIDQyODUsIDQyOTMsIAorICAgIDQzMDUsIDQzMTUsIDQzMjEsIDQzMjYsIDQzMzUsIDQzNDMsIDQzNTAsIDQzNTYsIDQzNjIsIDQzNjYsIDQzNzIsIDQzODEsIAorICAgIDQzOTAsIDQzOTQsIDQ0MDMsIDQ0MDgsIDQ0MTIsIDQ0MTcsIDQ0MjEsIDQ0MjksIDQ0MzUsIDQ0MzksIDQ0NDQsIDQ0NDgsIAorICAgIDQ0NTQsIDIxNDAsIDEzNjYsIDQ0NjAsIDQ0NjUsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODYsIDQ0OTEsIDQ0OTYsIDQ1MDEsIAorICAgIDQ1MDcsIDQ1MTIsIDQ1MTgsIDQ1MjMsIDQ1MjgsIDQ1MzMsIDQ1MzksIDQ1NDQsIDQ1NDksIDQ1NTQsIDQ1NTksIDQ1NjUsIAorICAgIDQ1NzAsIDQ1NzYsIDQ1ODEsIDQ1ODYsIDQ1OTEsIDQ1OTYsIDQ2MDEsIDQ2MDYsIDQ2MTIsIDQ2MTcsIDQ2MjIsIDI5NywgCisgICAgMzMyLCA0NjI3LCA0NjMzLCA0NjM3LCA0NjQxLCA0NjQ2LCA0NjUwLCA0NjU0LCA0NjU3LCA0NjYxLCA0NjY1LCA0NjY5LCAKKyAgICA0NjczLCA0Njc3LCA0NjgyLCA0Njg2LCA0NjkwLCA0Njk2LCA0NDU3LCA0NzAxLCA0NzA1LCA0NzA4LCA0NzEzLCA0NzE4LCAKKyAgICA0NzIzLCA0NzI4LCA0NzMzLCA0NzM4LCA0NzQzLCA0NzQ4LCA0NzUzLCA0NzU4LCA0NzYyLCA0NzY3LCA0NzcyLCA0Nzc3LCAKKyAgICA0NzgyLCA0Nzg3LCA0NzkyLCA0Nzk3LCA0ODAyLCA0ODA3LCA0ODEyLCA0ODE2LCA0ODIxLCA0ODI2LCA0ODMxLCA0ODM2LCAKKyAgICA0ODQxLCA0ODQ2LCA0ODUxLCA0ODU2LCA0ODYxLCA0ODY2LCA0ODcwLCA0ODc1LCA0ODgwLCA0ODg1LCA0ODkwLCA0ODk1LCAKKyAgICA0OTAwLCA0OTA1LCA0OTEwLCA0OTE1LCA0OTIwLCA0OTI0LCA0OTI5LCA0OTM0LCA0OTM5LCA0OTQ0LCA0OTQ5LCA0OTU0LCAKKyAgICA0OTU5LCA0OTY0LCA0OTY5LCA0OTc0LCA0OTc4LCA0OTgzLCA0OTg4LCA0OTkzLCA0OTk4LCA1MDAzLCA1MDA4LCA1MDEzLCAKKyAgICA1MDE4LCA1MDIzLCA1MDI4LCA1MDMyLCA1MDM3LCA1MDQyLCA1MDQ3LCA1MDUyLCA1MDU3LCA1MDYyLCA1MDY3LCA1MDcyLCAKKyAgICA1MDc3LCA1MDgyLCA1MDg2LCA1MDkxLCA1MDk2LCA1MTAxLCA1MTA2LCA1MTEyLCA1MTE4LCA1MTI0LCA1MTMwLCA1MTM2LCAKKyAgICA1MTQyLCA1MTQ4LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgzLCA1MTg5LCA1MTk1LCA1MjAxLCA1MjA3LCAKKyAgICA1MjEzLCA1MjE4LCA1MjI0LCA1MjMwLCA1MjM2LCA1MjQyLCA1MjQ4LCA1MjU0LCA1MjYwLCA1MjY2LCA1MjcyLCA1Mjc4LCAKKyAgICA1MjgzLCA1Mjg5LCA1Mjk1LCA1MzAxLCA1MzA3LCA1MzEzLCA1MzE5LCA1MzI1LCA1MzMxLCA1MzM3LCA1MzQzLCA1MzQ4LCAKKyAgICA1MzU0LCA1MzYwLCA1MzY2LCA1MzcyLCA1Mzc4LCA1Mzg0LCA1MzkwLCA1Mzk2LCA1NDAyLCA1NDA4LCA1NDEzLCA1NDE5LCAKKyAgICA1NDI1LCA1NDMxLCA1NDM3LCA1NDQzLCA1NDQ5LCA1NDU1LCA1NDYxLCA1NDY3LCA1NDczLCA1NDc4LCA1NDgyLCA1NDg4LCAKKyAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTEyLCA1NTE4LCA1NTI0LCA1NTMwLCA1NTM2LCA1NTQyLCA1NTQ3LCA1NTUzLCA1NTU5LCAKKyAgICA1NTY1LCA1NTcxLCA1NTc3LCA1NTgzLCA1NTg5LCA1NTk1LCA1NjAxLCA1NjA3LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKKyAgICA1NjM2LCA1NjQyLCA1NjQ4LCA1NjU0LCA1NjYwLCA1NjY2LCA1NjcyLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKKyAgICA1NzA3LCA1NzEzLCA1NzE5LCA1NzI1LCA1NzMxLCA1NzM3LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcyLCAKKyAgICA1Nzc4LCA1Nzg0LCA1NzkwLCA1Nzk2LCA1ODAyLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM3LCA1ODQzLCAKKyAgICA1ODQ5LCA1ODU1LCA1ODYxLCA1ODY3LCA1ODcyLCA1ODc4LCA1ODg0LCA1ODkwLCA1ODk2LCA1OTAyLCA1OTA4LCA1OTE0LCAKKyAgICA1OTIwLCA1OTI2LCA1OTMyLCA1OTM3LCA1OTQzLCA1OTQ5LCA1OTU1LCA1OTYxLCA1OTY3LCA1OTczLCA1OTc5LCA1OTg1LCAKKyAgICA1OTkxLCA1OTk3LCA2MDAyLCA2MDA4LCA2MDE0LCA2MDIwLCA2MDI2LCA2MDMyLCA2MDM4LCA2MDQ0LCA2MDUwLCA2MDU2LCAKKyAgICA2MDYyLCA2MDY3LCA2MDczLCA2MDc5LCA2MDg1LCA2MDkxLCA2MDk3LCA2MTAzLCA2MTA5LCA2MTE1LCA2MTIxLCA2MTI3LCAKKyAgICA2MTMyLCA2MTM2LCA2MTM5LCA2MTQ2LCA2MTUwLCA2MTYzLCA2MTY3LCA2MTcxLCA2MTc1LCA2MTc4LCA2MTgyLCA2MTg3LCAKKyAgICA2MTkxLCA2MTk1LCA2MjAxLCA2MjA4LCA2MjE5LCA2MjI3LCA2MjM0LCA2MjM4LCA2MjQ2LCA2MjU1LCA2MjYxLCA2MjY1LCAKKyAgICA2Mjc3LCA2MjgyLCA2Mjg1LCA2MjkwLCA2Mjk0LCA2MzA0LCA2MzEyLCA2MzIwLCA2MzI2LCA2MzMwLCA2MzQwLCA2MzUwLCAKKyAgICA2MzU4LCA2MzY1LCA2MzcyLCA2Mzc4LCA2Mzg0LCA2MzkxLCA2Mzk1LCA2NDAyLCA2NDEyLCA2NDIyLCA2NDMwLCA2NDM3LCAKKyAgICA2NDQyLCA2NDQ2LCA2NDUwLCA2NDU4LCA2NDYyLCA2NDY3LCA2NDc0LCA2NDgyLCA2NDg3LCA2NDkxLCA2NDk2LCA2NTAwLCAKKyAgICA2NTA3LCA2NTEyLCA2NTI2LCA2NTMxLCA2NTM2LCA2NTQzLCAzNTMwLCA2NTUyLCA2NTU2LCA2NTYxLCA2NTY1LCA2NTY5LCAKKyAgICA2NTcyLCA2NTc3LCA2NTgyLCA2NTkxLCA2NTk3LCA2NjAzLCA2NjA5LCA2NjEzLCA2NjI0LCA2NjM0LCA2NjQ5LCA2NjY0LCAKKyAgICA2Njc5LCA2Njk0LCA2NzA5LCA2NzI0LCA2NzM5LCA2NzU0LCA2NzY5LCA2Nzg0LCA2Nzk5LCA2ODE0LCA2ODI5LCA2ODQ0LCAKKyAgICA2ODU5LCA2ODc0LCA2ODg5LCA2OTA0LCA2OTE5LCA2OTM0LCA2OTQ5LCA2OTY0LCA2OTc5LCA2OTk0LCA3MDA5LCA3MDI0LCAKKyAgICA3MDM5LCA3MDU0LCA3MDY5LCA3MDg0LCA3MDk5LCA3MTE0LCA3MTI5LCA3MTQ0LCA3MTU5LCA3MTc0LCA3MTg5LCA3MjA0LCAKKyAgICA3MjE5LCA3MjM0LCA3MjQ5LCA3MjY0LCA3Mjc5LCA3Mjk0LCA3MzA5LCA3MzI0LCA3MzM5LCA3MzU0LCA3MzY5LCA3Mzc4LCAKKyAgICA3Mzg3LCA3MzkyLCA3Mzk4LCA3NDA4LCA3NDEyLCA3NDE2LCA3NDIxLCA3NDI2LCA3NDM0LCA3NDM4LCA3NDQxLCA3NDQ1LCAKKyAgICAzMDIzLCA3NDQ4LCA3NDUzLCAzMzYsIDUxMCwgNzQ1OSwgNzQ2NywgNzQ3MSwgNzQ3NSwgNzQ3OCwgNzQ4MiwgNzQ4OCwgCisgICAgNzQ5MiwgNzUwMCwgNzUwNiwgNzUxMSwgNzUxOCwgNzUyNiwgNzUzMywgNzUzOSwgNzU0NCwgNzU1MSwgNzU1NywgNzU2NSwgCisgICAgNzU2OSwgNzU3NCwgNzU4NiwgNzU5NywgNzYwNCwgNzYwOCwgNzYxMiwgNzYxNiwgNzYxOSwgNzYyNSwgMzMwMCwgNzYyOSwgCisgICAgNzYzNSwgNzY0MCwgNzY0NSwgNzY1MCwgNzY1NiwgNzY2MSwgNzY2NiwgNzY3MSwgNzY3NiwgNzY4MiwgNzY4NywgNzY5MiwgCisgICAgNzY5OCwgNzcwMywgNzcwOSwgNzcxNCwgNzcyMCwgNzcyNSwgNzczMSwgNzczNiwgNzc0MSwgNzc0NiwgNzc1MSwgNzc1NiwgCisgICAgNzc2MiwgNzc2NywgNzc3MiwgNzc3NywgNzc4MywgNzc4OSwgNzc5NSwgNzgwMSwgNzgwNywgNzgxMywgNzgxOSwgNzgyNSwgCisgICAgNzgzMSwgNzgzNywgNzg0MywgNzg0OSwgNzg1NCwgNzg1OSwgNzg2NCwgNzg2OSwgNzg3NCwgNzg3OSwgNzg4NCwgNzg4OSwgCisgICAgNzg5NSwgNzkwMSwgNzkwNiwgNzkxMiwgNzkxOCwgNzkyNCwgNzkyOSwgNzkzNCwgNzkzOSwgNzk0NCwgNzk1MCwgNzk1NiwgCisgICAgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NywgNzk5MiwgNzk5OCwgODAwNCwgODAxMCwgODAxNiwgODAyMiwgCisgICAgODAyOCwgODAzNCwgODA0MCwgODA0NiwgMjE0OSwgNzQ3NywgODA1MSwgODA1NSwgODA1OSwgODA2MiwgODA2OSwgODA3MiwgCisgICAgODA3NiwgODA4NCwgODA4OSwgODA5NCwgODA4NSwgODA5OSwgMjE3NiwgODEwMywgODEwOSwgODExNSwgODEyMCwgODEyNSwgCisgICAgODEzMiwgODE0MCwgODE0NSwgODE0OSwgODE1MiwgODE1NiwgODE2MiwgODE2OCwgODE3MiwgMjE4NCwgNTQxLCA4MTc1LCAKKyAgICA4MTc5LCA4MTg0LCA4MTkwLCA4MTk1LCA4MTk5LCA4MjAyLCA4MjA2LCA4MjEyLCA4MjE3LCA4MjIxLCA4MjI4LCA4MjMyLCAKKyAgICA4MjM2LCA4MjQwLCA4ODIsIDk4NCwgODI0MywgODI1MSwgODI1OCwgODI2NCwgODI3MSwgODI3OSwgODI4NiwgODI5NywgCisgICAgODMwNCwgODMxMCwgODMxNSwgODMyNywgMTIwOSwgMTM3NCwgMTM3OSwgODMzOCwgMTM4NCwgODM0MiwgODM0NiwgODM1NSwgCisgICAgODM2MywgODM2NywgODM3NiwgODM4MiwgODM4NywgODM5MSwgODM5NywgODQwMiwgODQxMCwgODQxNywgMjczNCwgODQyNCwgCisgICAgODQyOCwgODQzNywgODQ0NiwgODQ1NSwgODQ2NCwgODQ3MCwgODQ3NSwgODQ4MCwgODQ5MSwgODUwMCwgODUxMiwgODUxNywgCisgICAgODUyNSwgMjIzNSwgODUyOSwgODUzMSwgODUzNiwgODU0MCwgODU0OSwgODU1NywgMTM4OCwgMTY1LCAzNTcyLCAzNTc3LCAKKyAgICA4NTYzLCA4NTY3LCA4NTc2LCA4NTgyLCA4NTg3LCA4NTkwLCA4NTk5LCAzNTgxLCA4NjA1LCAyNzI2LCA4NjA5LCA4NjE3LCAKKyAgICA4NjIxLCA4NjI1LCA4NjI5LCAyMjUyLCA4NjMzLCA4NjM4LCA4NjQ1LCA4NjUxLCA4NjU3LCA4NjYwLCA4NjYyLCA4NjY1LCAKKyAgICA4NjczLCA4NjgxLCA4Njg5LCA4NjkyLCA4Njk3LCAyMjY1LCA4NzAyLCA4MDk2LCA4NzA1LCA4NzA3LCA4NzEyLCA4NzE3LCAKKyAgICA4NzIyLCA4NzI3LCA4NzMyLCA4NzM3LCA4NzQyLCA4NzQ3LCA4NzUyLCA4NzU3LCA4NzYzLCA4NzY4LCA4NzczLCA4Nzc4LCAKKyAgICA4Nzg0LCA4Nzg5LCA4Nzk0LCA4Nzk5LCA4ODA0LCA4ODA5LCA4ODE0LCA4ODIwLCA4ODI1LCA4ODMwLCA4ODM1LCA4ODQwLCAKKyAgICA4ODQ1LCA4ODUwLCA4ODU1LCA4ODYwLCA4ODY1LCA4ODcwLCA4ODc1LCA4ODgwLCA4ODg1LCA4ODkwLCA4ODk1LCA4OTAwLCAKKyAgICA4OTA1LCA4OTExLCA4OTE3LCA4OTIyLCA4OTI3LCA4OTMyLCA4OTM3LCA4OTQyLCAyMjc2LCAyMjgzLCAyMjg5LCA4OTQ3LCAKKyAgICA4OTU1LCA4OTYxLCA4OTY5LCAyMzE1LCAyMzIxLCA4OTc3LCA4OTgxLCA4OTg2LCA4OTkwLCA4OTk0LCA4OTk4LCA5MDAzLCAKKyAgICA5MDA3LCA5MDEyLCA5MDE2LCA5MDE5LCA5MDIyLCA5MDI4LCA5MDM1LCA5MDQxLCA5MDQ4LCA5MDU0LCA5MDYxLCA5MDY3LCAKKyAgICA5MDc0LCA5MDgwLCA5MDg2LCA5MDk1LCA5MTAxLCA5MTA1LCA5MTA5LCA5MTEzLCA5MTE3LCA5MTIyLCA5MTI2LCA5MTMxLCAKKyAgICA5MTM1LCA5MTQxLCA5MTQ2LCA5MTUzLCA5MTY0LCA5MTcyLCA5MTgyLCA5MTg4LCA5MTk4LCA5MjA3LCA5MjE0LCA5MjE5LCAKKyAgICA5MjIzLCA5MjM0LCA5MjQ0LCA5MjU3LCA5MjY4LCA5MjgxLCA5MjkyLCA5MzA0LCA5MzE2LCA5MzI4LCA5MzQxLCA5MzU0LCAKKyAgICA5MzYxLCA5MzY3LCA5Mzc4LCA5Mzg4LCA5NDAyLCA5NDA5LCA5NDE1LCA5NDI0LCA5NDMyLCA5NDM2LCA5NDQxLCA5NDQ1LCAKKyAgICA5NDUyLCA5NDYwLCA5NDY3LCA5NDcxLCA5NDc3LCA5NDgxLCA5NDg3LCA5NDk3LCA5NTAxLCA5NTA2LCA5NTExLCA5NTE4LCAKKyAgICA5NTI0LCA5NTM0LCA4MjY2LCA5NTQwLCA5NTQ0LCA5NTUxLCA5NTU3LCA5NTY0LCA5NTcxLCA5ODMsIDk1NzUsIDk1NzksIAorICAgIDk1ODQsIDk1ODksIDk1OTQsIDk1OTgsIDk2MDQsIDk2MTIsIDk2MTksIDk2MjUsIDk2MjksIDk2MzIsIDk2MzgsIDk2NDgsIAorICAgIDk2NTIsIDk2NTgsIDk2NjMsIDk2NjcsIDk2NzEsIDk2NzcsIDk2ODMsIDIxNzIsIDk2ODgsIDk2OTAsIDk2OTUsIDk3MDMsIAorICAgIDk3MTIsIDk3MTYsIDk3MjIsIDk3MjcsIDk3MzIsIDk3MzcsIDk3NDIsIDk3NDgsIDk3NTMsIDk3NTgsIDQyNDksIDk3NjMsIAorICAgIDk3NjgsIDk3NzIsIDk3NzgsIDk3ODMsIDk3ODksIDk3OTQsIDk3OTksIDk4MDUsIDk4MTAsIDk3MTcsIDk4MTYsIDk4MjAsIAorICAgIDk4MjcsIDk4MzMsIDk4MzgsIDk4NDIsIDY1MjIsIDk4NDcsIDk4NTYsIDk4NjEsIDk4NjYsIDg2NDEsIDg2NDgsIDk4NzEsIAorICAgIDI5MDEsIDk4NzUsIDk4ODAsIDk4ODUsIDk4OTAsIDk3MjgsIDk4OTQsIDk4OTksIDk5MDQsIDk3MzMsIDk5MDgsIDk3MzgsIAorICAgIDk5MTMsIDk5MjAsIDk5MjcsIDk5MzMsIDk5NDAsIDk5NDYsIDk5NTIsIDk5NTcsIDk5NjQsIDk5NjksIDk5NzQsIDk5NzksIAorICAgIDk5ODUsIDk3NDMsIDk3NDksIDk5OTEsIDk5OTcsIDEwMDAyLCAxMDAwNywgMTAwMTUsIDk3NTQsIDEwMDIwLCAxMTEyLCAKKyAgICAxMDAyMywgMTAwMzEsIDEwMDM3LCAxMDA0MywgMTAwNTIsIDEwMDYwLCAxMDA2OCwgMTAwNzYsIDEwMDg0LCAxMDA5MiwgCisgICAgMTAxMDAsIDEwMTA4LCAxMDExNiwgMTAxMjUsIDEwMTM0LCAxMDE0MiwgMTAxNTEsIDEwMTYwLCAxMDE2OSwgMTAxNzgsIAorICAgIDEwMTg3LCAxMDE5NiwgMTAyMDUsIDEwMjE0LCAxMDIyMywgMTAyMzIsIDEwMjQwLCAxMDI0NSwgMTAyNTEsIDEwMjU5LCAKKyAgICAxMDI2NiwgMTAyODEsIDEwMjk4LCAxMDMxNywgMTAzMjYsIDEwMzM0LCAxMDM0OSwgMTAzNjAsIDEwMzY4LCAxMDM3OCwgCisgICAgMTAzODgsIDEwMzk2LCAxMDQwMiwgMTA0MTQsIDEwNDIzLCAxMDQzMSwgMTA0MzgsIDEwNDQ1LCAxMDQ1MiwgMTA0NTgsIAorICAgIDEwNDYzLCAxMDQ3MywgMTA0ODEsIDEwNDkxLCAxMDQ5OCwgMTA1MDgsIDEwNTE4LCAxMDUyOCwgMTA1MzYsIDEwNTQzLCAKKyAgICAxMDU1MiwgMTA1NjIsIDEwNTc2LCAxMDU5MSwgMTA2MDAsIDEwNjA4LCAxMDYxMywgMTA2MTcsIDEwNjI2LCAxMDYzMiwgCisgICAgMTA2MzcsIDEwNjQ3LCAxMDY1NywgMTA2NjcsIDEwNjcyLCAxMDY3NiwgMTA2ODUsIDEwNjkwLCAxMDcwNiwgMTA3MjMsIAorICAgIDEwNzMzLCAxMDc0NCwgMTA3NTcsIDEwNzY1LCAxMDc3OCwgMTA3OTAsIDEwNzk4LCAxMDgwMywgMTA4MDcsIDEwODEzLCAKKyAgICAxMDgxOCwgMTA4MjYsIDEwODM0LCAxMDg0MSwgMTA4NDYsIDEwODU0LCAxMDg2NCwgMTA4NzAsIDEwODc0LCAxMDg3NywgCisgICAgMTA4ODEsIDEwODg3LCAxMDg5NCwgMTA4OTgsIDEwOTA2LCAxMDkxNSwgMTA5MjMsIDEwOTMwLCAxMDkzNSwgMTA5NDAsIAorICAgIDEwOTQ0LCAxMDk0OCwgMTA5NTYsIDEwOTcxLCAxMDk4NywgMTA5OTMsIDExMDAxLCAxMTAxMCwgMTEwMTgsIDExMDI0LCAKKyAgICAxMTAyOCwgMTEwMzUsIDExMDQ2LCAxMTA1MCwgMTEwNTMsIDExMDU5LCA5NzU5LCAxMTA2NCwgMTEwNzAsIDExMDc3LCAKKyAgICAxMTA4MywgMTEwODgsIDExMDk1LCAxMTEwMiwgMTExMDksIDExMTE2LCAxMTEyMywgMTExMzAsIDExMTM3LCAxMTE0NCwgCisgICAgMTExNDksIDEwMjk0LCAxMTE1NCwgMTExNjAsIDExMTY3LCAxMTE3NCwgMTExNzksIDExMTg2LCAxMTE5NSwgMTExOTksIAorICAgIDExMjExLCA4Njc5LCAxMTIxNSwgMTEyMTgsIDExMjIyLCAxMTIyNiwgMTEyMzAsIDExMjM0LCAxMTI0MCwgMTEyNDYsIAorICAgIDExMjUxLCAxMTI1NywgMTEyNjIsIDExMjY3LCAxMTI3MywgMTEyNzgsIDExMjgzLCA5NTE0LCAxMTI4OCwgMTEyOTIsIAorICAgIDExMjk2LCAxMTMwMCwgMTEzMDUsIDExMzEwLCAxMTMxNSwgMTEzMjMsIDExMzI5LCAxMTMzNCwgMTEzMzgsIDExMzQyLCAKKyAgICAxMTM0OSwgMTEzNTQsIDExMzYyLCAxMTM2OSwgMTEzNzQsIDExMzc4LCAxMTM4MSwgMTEzODcsIDExMzk0LCAxMTM5OCwgCisgICAgMTE0MDEsIDExNDA2LCAxMTQxMCwgNDI4OCwgMTE0MTYsIDExNDI1LCA0NiwgMTE0MzMsIDExNDM5LCAxMTQ0NCwgMTE0NDksIAorICAgIDExNDU3LCAxMTQ2NCwgMTE0NjksIDk1MjksIDExNDc1LCAxMTQ4MSwgMTE0ODYsIDExNDkwLCAxMTQ5MywgMTE1MDgsIAorICAgIDExNTI3LCAxMTUzOSwgMTE1NTIsIDExNTY1LCAxMTU3OCwgMTE1OTIsIDExNjA1LCAxMTYyMCwgMTE2MjcsIDk3NjQsIAorICAgIDExNjMzLCAxMTY0NywgMTE2NTIsIDExNjU4LCAxMTY2MywgMTE2NzEsIDExNjc2LCA4NDMzLCAxMTY4MSwgMTE2ODQsIAorICAgIDExNjkyLCAxMTY5OSwgMTE3MDQsIDExNzA4LCAxMTcxNCwgMjkwNiwgMTAzNzYsIDExNzE4LCAxMTcyMiwgMTE3MjgsIAorICAgIDExNzM0LCAxMTczOSwgMTE3NDUsIDExNzUwLCA5NzczLCAxMTc1NiwgMTE3NjIsIDExNzY3LCAxMTc3MiwgMTE3ODAsIAorICAgIDExNzg2LCAxMTc5OSwgMTE4MDcsIDExODE0LCAxMTgyMCwgOTc3OSwgMTE4MjYsIDExODM0LCAxMTg0MiwgMTE4NDksIAorICAgIDExODYyLCAxMTg3NSwgMTE4ODcsIDExODk3LCAxMTkwOSwgMTE5MTcsIDExOTI0LCAxMTkzNiwgMTE5NDMsIDExOTUzLCAKKyAgICAxMTk2MiwgMTE5NzEsIDExOTc5LCAxMTk4NiwgMTE5OTEsIDExOTk3LCA5Nzg0LCAxMjAwMiwgMTIwMDgsIDEyMDEzLCAKKyAgICAxMjAxOCwgOTc5MCwgMTIwMjMsIDEyMDI2LCAxMjAzMywgMTIwMzksIDEyMDUyLCA5MTU3LCAxMjA2MywgMTIwNjksIAorICAgIDEyMDc4LCAxMjA4NiwgMTIwOTMsIDEyMDk5LCAxMjExMCwgMTIxMTYsIDEyMTIxLCAzODM1LCAxMjEyOSwgMTIxMzQsIAorICAgIDExNTAwLCAxMjE0MCwgMTIxNDcsIDEyMTUyLCA5Nzk1LCAxMjE1OCwgMTIxNjMsIDEyMTcwLCAxMjE3NiwgMTIxODIsIAorICAgIDEyMTg3LCAxMjE5NSwgMTIyMDMsIDEyMjEwLCAxMjIxNCwgMTIyMjYsIDEyMjQwLCAxMjI1MCwgMTIyNTUsIDEyMjU5LCAKKyAgICAxMjI3MCwgMTIyNzYsIDEyMjgxLCAxMjI4NiwgOTgwMCwgMTIyOTAsIDk4MDYsIDEyMjk1LCAxMjI5OCwgMTIzMDMsIAorICAgIDEyMzE1LCAxMjMyMiwgMTIzMjcsIDEyMzMxLCAxMjMzOSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTIzNTcsIDEyMzY0LCAKKyAgICAxMjM3MCwgOTgxMSwgOTcxOCwgMTIzNzcsIDI5MTEsIDEyLCAxMjM4NCwgMTIzODksIDEyMzkzLCAxMjM5NywgMTI0MDMsIAorICAgIDEyNDExLCAxMjQyMSwgMTI0MjYsIDEyNDMxLCAxMjQzOCwgMTI0NDUsIDEyNDQ5LCAxMjQ2MCwgMTI0NzAsIDEyNDc5LCAKKyAgICAxMjQ4OCwgMTI1MDAsIDEyNTA1LCAxMjUwOSwgMTI1MTcsIDEyNTMxLCAxMjUzNSwgMTI1MzgsIDEyNTQ2LCAxMjU1MywgCisgICAgMTI1NjEsIDEyNTY1LCAxMjU3NiwgMTI1ODAsIDEyNTg3LCAxMjU5MiwgMTI1OTYsIDEyNjAyLCAxMjYwNywgMTI2MTMsIAorICAgIDEyNjE4LCAxMjYyMywgMTI2MjcsIDEyNjMzLCAxMjYzOCwgMTI2NDksIDEyNjUzLCAxMjY1NiwgMTI2NjIsIDEyNjY3LCAKKyAgICAxMjY3MywgMTI2NzksIDEyNjg2LCAxMjY5NywgMTI3MDcsIDEyNzE3LCAxMjcyNiwgMTI3MzMsIDEyNzQyLCAxMjc0NiwgCisgICAgOTgyMSwgOTgyOCwgOTgzNCwgOTgzOSwgMTI3NTIsIDEyNzU4LCAxMjc2NCwgMTI3NjksIDEyNzc1LCA5ODQzLCAxMjc4MSwgCisgICAgMTI3ODQsIDEyNzkxLCAxMjc5NiwgMTI4MTEsIDEyODI3LCAxMjg0MiwgMTI4NTAsIDEyODU2LCAxMjg2MSwgOTc2LCAzODcsIAorICAgIDEyODY2LCAxMjg3NCwgMTI4ODEsIDEyODg3LCAxMjg5MiwgMTI4OTcsIDk4NDgsIDEyODk5LCAxMjkwMywgMTI5MDgsIAorICAgIDEyOTEyLCAxMjkyMiwgMTI5MjcsIDEyOTMxLCAxMjk0MCwgMTI5NDQsIDEyOTQ3LCAxMjk1NCwgOTg1NywgMTI5NTksIAorICAgIDEyOTYyLCAxMjk3MCwgMTI5NzcsIDEyOTg1LCAxMjk4OSwgMTI5OTMsIDEzMDAwLCAxMzAwOSwgMTMwMTYsIDEzMDEyLCAKKyAgICAxMzAyMywgMTMwMjcsIDEzMDMzLCAxMzAzNywgMTMwNDEsIDEzMDQ1LCAxMzA1MSwgMTMwNjEsIDEzMDY5LCAxMzA3NiwgCisgICAgMTMwODAsIDEzMDg4LCAxMzA5MiwgMTMwOTksIDEzMTAzLCAxMzEwOCwgMTMxMTIsIDEzMTE5LCAxMzEyNSwgMTMxMzMsIAorICAgIDEzMTM5LCAxMzE0NCwgMTMxNTQsIDEzMTU5LCAxMzE2NCwgMTMxNjgsIDEzMTcyLCAxMzE4MCwgNDEzOCwgMTMxODgsIAorICAgIDEzMTkzLCA5ODYyLCAxMzE5NywgMTMyMDEsIDEzMjA0LCAxMzIxMiwgMTMyMTksIDEzMjIzLCA2MzIyLCAxMzIyNywgCisgICAgMTMyMzIsIDEzMjM3LCAxMzI0MSwgMTMyNTIsIDEzMjYyLCAxMzI2NywgMTMyNzMsIDEzMjc4LCAxMzI4MiwgMTMyODUsIAorICAgIDEzMjkzLCAxMzI5OCwgMTMzMDMsIDEzMzEwLCAxMzMxNSwgOTg2NywgMTMzMjAsIDEzMzI0LCAxMzMzMSwgMTcxOCwgNjQ4MCwgCisgICAgMTMzMzYsIDEzMzQxLCAxMzM0NiwgMTMzNTEsIDEzMzU3LCAxMzM2MiwgMTMzNjgsIDEzMzczLCAxMzM3OCwgMTMzODMsIAorICAgIDEzMzg4LCAxMzM5MywgMTMzOTgsIDEzNDAzLCAxMzQwOCwgMTM0MTMsIDEzNDE4LCAxMzQyMywgMTM0MjgsIDEzNDMzLCAKKyAgICAxMzQzOCwgMTM0NDMsIDEzNDQ4LCAxMzQ1NCwgMTM0NTksIDEzNDY0LCAxMzQ2OSwgMTM0NzQsIDEzNDc5LCAxMzQ4NSwgCisgICAgMTM0OTAsIDEzNDk1LCAxMzUwMSwgMTM1MDYsIDEzNTEyLCAxMzUxNywgMTM1MjMsIDEzNTI4LCAxMzUzMywgMTM1MzgsIAorICAgIDEzNTQzLCAxMzU0OSwgMTM1NTQsIDEzNTU5LCAxMzU2NCwgOTM2LCAxMTIsIDEzNTcyLCAxMzU3NiwgMTM1ODEsIDEzNTg2LCAKKyAgICAxMzU5MCwgMTM1OTQsIDEzNTk4LCAxMzYwMywgMTM2MDcsIDEzNjEyLCAxMzYxNiwgMTM2MTksIDEzNjIzLCAxMzYyNywgCisgICAgMTM2MzMsIDEzNjM4LCAxMzY0OCwgMTM2NTQsIDEzNjYyLCAxMzY2OCwgMTM2NzIsIDEzNjc2LCAxMzY4MywgMTM2OTEsIAorICAgIDEzNzAwLCAxMzcxMSwgMTM3MjEsIDEzNzI4LCAxMzczNSwgMTM3MzksIDEzNzQ4LCAxMzc1NywgMTM3NjUsIDEzNzc0LCAKKyAgICAxMzc4MywgMTM3OTIsIDEzODAxLCAxMzgxMSwgMTM4MjEsIDEzODMxLCAxMzg0MSwgMTM4NTEsIDEzODYwLCAxMzg3MCwgCisgICAgMTM4ODAsIDEzODkwLCAxMzkwMCwgMTM5MTAsIDEzOTIwLCAxMzkzMCwgMTM5MzksIDEzOTQ5LCAxMzk1OSwgMTM5NjksIAorICAgIDEzOTc5LCAxMzk4OSwgMTM5OTksIDE0MDA4LCAxNDAxOCwgMTQwMjgsIDE0MDM4LCAxNDA0OCwgMTQwNTgsIDE0MDY4LCAKKyAgICAxNDA3OCwgMTQwODgsIDE0MDk4LCAxNDEwNywgMTQxMTcsIDE0MTI3LCAxNDEzNywgMTQxNDcsIDE0MTU3LCAxNDE2NywgCisgICAgMTQxNzcsIDE0MTg3LCAxNDE5NywgMTQyMDcsIDE0MjE2LCAxMjE4LCAxNDIyMiwgMTQyMjUsIDE0MjI5LCAxNDIzNCwgCisgICAgMTQyNDEsIDE0MjQ3LCAxNDI1MiwgMTQyNTYsIDE0MjYxLCAxNDI3MCwgMTQyNzgsIDE0MjgzLCAxNDI4NywgMTQyOTEsIAorICAgIDE0Mjk3LCAxNDMwMiwgMTQzMDgsIDk4NzYsIDE0MzEzLCAxNDMxOCwgMTQzMjcsIDk4ODYsIDE0MzMyLCAxNDMzNSwgCisgICAgMTQzNDEsIDE0MzQ5LCA5ODkxLCAxNDM1NiwgMTQzNjAsIDE0MzY0LCAxNDM2OSwgMTQzNzMsIDE0MzgzLCAxNDM4OSwgCisgICAgMTQzOTUsIDE0NDAwLCAxNDQwOSwgMTQ0MTcsIDE0NDI0LCAxNDQzMSwgMTQ0MzYsIDE0NDQzLCAxNDQ0OCwgMTQ0NTIsIAorICAgIDE0NDU1LCAxNDQ2NiwgMTQ0NzYsIDE0NDg1LCAxNDQ5MywgMTQ1MDQsIDE0NTE2LCAxNDUyNiwgMTQ1MzEsIDE0NTM1LCAKKyAgICAxNDU0MCwgMTQ1NDUsIDE0NTQ5LCAxNDU1NSwgMTQ1NjMsIDE0NTcwLCAxNDU4MSwgMTQ1ODYsIDE0NTk2LCAxNDYwNSwgCisgICAgMTQ2MDksIDE0NjEyLCAxNDYxOSwgMTQ2MjksIDE0NjM4LCAxNDY0NSwgMTQ2NDksIDE0NjU2LCAxNDY2MiwgMTQ2NjcsIAorICAgIDE0NjcyLCAxNDY3NiwgMTQ2ODUsIDE0NjkwLCAxNDY5NCwgMTQ3MDAsIDE0NzA0LCAxNDcwOSwgMTQ3MTMsIDE0NzIwLCAKKyAgICAxNDcyNywgMTQ3MzEsIDE0NzQwLCAxNDc0OCwgMTQ3NTYsIDE0NzYzLCAxNDc3MSwgMTQ3ODMsIDE0Nzk0LCAxNDgwNCwgCisgICAgMTQ4MTEsIDE0ODE3LCAxNDgyNiwgMTQ4MzcsIDE0ODQ2LCAxNDg1OCwgMTQ4NzAsIDE0ODgyLCAxNDg5MiwgMTQ5MDEsIAorICAgIDE0OTEwLCAxNDkxOCwgMTQ5MjUsIDE0OTM0LCAxNDk0MiwgMTQ5NDYsIDE0OTUxLCAxNDk1NywgMTQ5NjMsIDE0OTY4LCAKKyAgICAxNDk3MywgODExNywgMTQ5NzcsIDE0OTc5LCAxNDk4MywgMTQ5ODgsIDE0OTk1LCAxNTAwMSwgMTUwMDcsIDE1MDE2LCAKKyAgICAxNTAyMCwgMTUwMjYsIDE1MDM0LCAxNTA0MSwgMTUwNTAsIDE1MDU5LCAxNTA2OCwgMTUwNzcsIDE1MDg2LCAxNTA5NSwgCisgICAgMTUxMDQsIDE1MTEzLCAxNTEyMywgMTUxMzMsIDE1MTQyLCAxNTE0OCwgMTUxNTUsIDE1MTYyLCAxNTE2OCwgMTUxODIsIAorICAgIDE1MTg4LCAxNTE5NSwgMTUyMDMsIDE1MjEyLCAxNTIyMCwgMTUyMjYsIDE1MjM1LCAxNTI0NCwgMTUyNTUsIDE1MjY1LCAKKyAgICAxNTI3MywgMTUyODAsIDE1Mjg4LCAxNTI5NywgMTUzMTAsIDE1MzE5LCAxNTMyNywgMTUzMzQsIDE1MzQ3LCAxNTM1MywgCisgICAgMTUzNTksIDE1MzY5LCAxNTM3OCwgMTUzODcsIDE1MzkyLCAxNTM5NiwgMTU0MDIsIDE1NDA4LCAxNTQxMywgMTU0MjAsIAorICAgIDE1NDI3LCA5NTI4LCAxNTQzMiwgMTU0MzcsIDE1NDQ0LCAxNTQ1MiwgMTU0NTcsIDE1NDY0LCAxNTQ2OSwgMTU0ODEsIAorICAgIDEzNjI5LCAxNTQ4NiwgMTU0OTQsIDE1NTAwLCAxNTUwNSwgMTU1MTMsIDE1NTIxLCAxNTUyOCwgMTU1MzYsIDE1NTQyLCAKKyAgICAxNTU1MCwgMTU1NTgsIDE1NTY0LCAxNTU2OSwgMTU1NzUsIDE1NTgyLCAxNTU4OCwgMTU1OTMsIDE1NTk3LCAxNTYwOCwgCisgICAgMTU2MTYsIDE1NjIyLCAxNTYyNywgMTU2MzQsIDE1NjQzLCAxNTY0OSwgMTU2NTQsIDE1NjYyLCAxNTY3MSwgMTU2ODUsIAorICAgIDQwODIsIDE1Njg5LCAxNTY5NCwgMTU2OTksIDE1NzA1LCAxNTcxMCwgMTU3MTUsIDE1NzE5LCAxNTcyNCwgMTU3MjksIAorICAgIDE1NzM0LCA4MTE2LCAxNTczOSwgMTU3NDQsIDE1NzQ5LCAxNTc1NCwgMTU3NTksIDE1NzYzLCAxNTc2OCwgMTU3NzMsIAorICAgIDE1Nzc4LCAxNTc4MywgMTU3ODksIDE1Nzk1LCAxNTgwMCwgMTU4MDQsIDE1ODEwLCAxNTgxNSwgMTU4MjAsIDE1ODI1LCAKKyAgICA5ODk1LCAxNTgzMCwgMTU4MzUsIDE1ODQwLCAxNTg0NSwgMTU4NTAsIDE1ODY3LCAxNTg4NSwgMTU4OTcsIDE1OTEwLCAKKyAgICAxNTkyNywgMTU5NDMsIDE1OTYwLCAxNTk3MCwgMTU5ODksIDE2MDAwLCAxNjAxMSwgMTYwMjIsIDE2MDMzLCAxNjA0NSwgCisgICAgMTYwNTYsIDE2MDY3LCAxNjA4NCwgMTYwOTUsIDE2MTA2LCAxNjExMSwgOTkwMCwgMTYxMTYsIDE2MTIwLCAyNDA1LCAKKyAgICAxNjEyNCwgMTYxMjcsIDE2MTMzLCAxNjE0MSwgMTYxNDksIDE2MTU1LCAxNjE2NCwgMTYxNzEsIDE2MTc2LCAxNjE4NCwgCisgICAgMTYxOTIsIDE2MTk5LCAxNjIwMywgMTYyMDgsIDE2MjE0LCAxNjIyMSwgMTYyMjksIDE2MjM2LCAxNjI0OCwgMTYyNTUsIAorICAgIDE2MjYxLCAxNjI2OSwgMTYyNzQsIDE2MjgwLCAxMjgwNSwgMTYyODYsIDE2Mjk1LCAxNjMwMSwgMTYzMDYsIDE2MzE0LCAKKyAgICAxNjMyMywgMTYzMzEsIDE2MzM4LCAxNjM0NCwgMTYzNTIsIDE2MzU5LCAxNjM2NSwgMTYzNzEsIDE2Mzc4LCAxNjM4NSwgCisgICAgMTYzOTEsIDE2Mzk3LCAxNjQwNiwgMTY0MTQsIDE2NDI0LCAxNjQzMSwgMTY0MzcsIDE2NDQ1LCAxNjQ1MSwgMTY0NTksIAorICAgIDE2NDY3LCAxNjQ3NCwgMTY0ODcsIDE2NDk0LCAxNjUwMywgMTY1MTIsIDE2NTIxLCAxNjUyOSwgMTY1MzksIDE2NTQ2LCAKKyAgICAxNjU1MSwgMzcyNiwgMTY1NTgsIDE2NTYzLCAxMzM0LCAxNjU2NywgMTU3NDAsIDE2NTcxLCAxNjU3NywgMTY1ODEsIAorICAgIDE2NTg5LCAxNjYwMSwgMTY2MDYsIDE2NjEzLCAxNjYxOSwgMTY2MjQsIDE2NjMxLCAxNTc0NSwgMTY2MzUsIDE2NjM5LCAKKyAgICAxNjY0MywgMTU3NTAsIDE2NjQ3LCAxNTc1NSwgMTY2NTEsIDE2NjU4LCAxNjY2MywgMTY2NjcsIDE2Njc0LCAxNjY3OCwgCisgICAgMTY2ODYsIDE2NjkzLCAxNjY5OCwgMTY3MDIsIDE2NzA5LCAxNjcyNiwgMTY3MzUsIDE2NzM5LCAxNjc0MiwgMTY3NTAsIAorICAgIDE2NzU2LCAxNjc2MSwgMzgwNCwgMTY3NjUsIDE2NzY3LCAxNjc3NSwgMTY3ODIsIDE2NzkyLCAxNjgwNCwgMTY4MDksIAorICAgIDE2ODEzLCAxNjgxOSwgMTY4MjQsIDE2ODMyLCAxNjgzNiwgMTY4NDIsIDE2ODQ3LCAxNjg1MywgMTY4NTYsIDE2ODYzLCAKKyAgICAxNjg3MSwgMTY4NzgsIDE2ODg0LCAxNjg4OSwgMTY4OTUsIDE2OTAwLCAxNjkwNywgMTY5MTMsIDE2OTE4LCAxNjkyNSwgCisgICAgMTY5MzAsIDE2OTM0LCAxNjk0MCwgMTY5NDQsIDE2OTUxLCAxNjk1NywgMTY5NjIsIDE2OTY4LCAxNjk3NiwgMTY5ODQsIAorICAgIDE2OTkxLCAxNjk5NywgMTcwMDIsIDE3MDA4LCAxNzAxNCwgMTcwMjIsIDE3MDI3LCAxNzAzNSwgMTcwNDEsIDE3MDQ3LCAKKyAgICAxNzA1MiwgMTcwNTksIDE3MDY0LCAxNzA2OCwgMTcwNzQsIDE3MDc5LCAxNzA4NiwgMTcwOTEsIDE3MDk3LCAxNzEwMCwgCisgICAgMTcxMDYsIDE3MTEyLCAxNzExNSwgMTcxMTksIDE3MTIzLCAxNzEzNSwgMTcxNDEsIDE3MTQ2LCAxNzE1MywgMTcxNTksIAorICAgIDE3MTY1LCAxNzE3NiwgMTcxODYsIDE3MTk1LCAxNzIwMywgMTcyMTAsIDE3MjIxLCAxNzIzMSwgMTcyNDEsIDE3MjQ5LCAKKyAgICAxNzI1MiwgMTU3NjksIDE3MjU3LCAxNzI2MiwgMTU3NzQsIDE1OTE1LCAxNzI3MCwgMTcyODMsIDE3Mjk4LCAxNzMwOSwgCisgICAgMTU5MzIsIDE3MzI3LCAxNzM0MCwgMTczNTMsIDE3MzY0LCAxMTUxNSwgMTczNzUsIDE3Mzg4LCAxNzQwNywgMTc0MTgsIAorICAgIDE3NDI5LCAxNzQ0MCwgMjY3NywgMTc0NTMsIDE3NDU3LCAxNzQ2NSwgMTc0NzYsIDE3NDg3LCAxNzQ5NSwgMTc1MTAsIAorICAgIDE3NTI1LCAxNzUzNiwgMTc1NDMsIDE3NTQ5LCAxNzU1NywgMTc1NjEsIDE3NTY3LCAxNzU3MCwgMTc1ODMsIDE3NTk1LCAKKyAgICAxNzYwNSwgMTc2MTMsIDE3NjIwLCAxNzYyOCwgMTc2MzgsIDE3NjQzLCAxNzY1MCwgMTc2NTUsIDE3NjYyLCAxNzY3MywgCisgICAgMTc2ODMsIDE3Njg5LCAxNzY5NCwgMTc2OTksIDE1Nzc5LCAxNzcwMywgMTc3MDksIDE3NzE1LCAxNzcyMCwgMTc3MjUsIAorICAgIDE3NzMwLCAxNzczNCwgMTU3ODQsIDE1NzkwLCAxNzczOCwgMTU3OTYsIDE3NzQzLCAxNzc1MSwgMTc3NTYsIDE3NzYwLCAKKyAgICAxNzc2NywgMTc3NzUsIDE3Nzg0LCAxNzc5MSwgMTc3OTUsIDk3MzksIDE3Nzk5LCAxNzgwMSwgMTc4MDYsIDE3ODExLCAKKyAgICAxNzgxNywgMTc4MjIsIDE3ODI3LCAxNzgzMiwgMTc4MzcsIDE3ODQxLCAxNzg0NywgMTc4NTMsIDE3ODU4LCAxNzg2NCwgCisgICAgMTc4NjksIDE3ODc0LCAxNzg3OCwgMTc4ODQsIDE3ODg5LCAxNzg5MywgMTc4OTgsIDE3OTAzLCAxNzkxNSwgMTc5MjAsIAorICAgIDE3OTI2LCAxNzkzMSwgMTc5MzYsIDE3OTQyLCAxNzk0OCwgMTc5NTMsIDE3OTU4LCAxNzk2MywgMTc5NzAsIDE3OTc2LCAKKyAgICAxNzk4NywgMTc5OTQsIDE3OTk5LCAxODAwMywgMTgwMDcsIDE4MDEwLCAxODAxOCwgMTgwMjMsIDE4MDI5LCAxODAzNiwgCisgICAgMTgwNDMsIDE4MDQ5LCAxODA1NCwgMTgwNTksIDE4MDY0LCAxODA3MSwgMTgwODEsIDE4MDg5LCAxODA5NCwgMTgxMDEsIAorICAgIDE4MTA3LCAxODExNiwgMTgxMjYsIDE4MTM2LCAxODE1MCwgMTgxNjQsIDE4MTc4LCAxODE5MiwgMTgyMDcsIDE4MjIyLCAKKyAgICAxODIzOSwgMTgyNTcsIDE4MjcwLCAxODI3NiwgMTgyODEsIDE4Mjg2LCAxODI5MCwgMTgyOTgsIDE4MzAzLCAxODMxMSwgCisgICAgMTgzMTcsIDE4MzIzLCAxODMyOCwgMTgzMzMsIDE4MzM3LCAxODM0MiwgMTgzNDYsIDE4MzUxLCAxODM1NSwgMTgzNjYsIAorICAgIDE4MzcyLCAxODM3NywgMTgzODIsIDE4Mzg5LCAxODM5NCwgMTgzOTgsIDM2ODksIDE4NDAzLCAxODQwOSwgMTg0MTYsIAorICAgIDE1ODA1LCAxODQyMiwgMTg0MjYsIDE4NDMyLCAxODQzNywgMTg0NDIsIDE4NDQ2LCAxODQ1MiwgMTg0NTcsIDE4NDYyLCAKKyAgICAxODQ2OSwgMTg0NzQsIDE0Mzg1LCAxODQ3OCwgMTg0ODMsIDE4NDg3LCAxODQ5MiwgMTg0OTgsIDE4NTA0LCAxODUxMSwgCisgICAgMTg1MjEsIDE4NTI5LCAxODUzNiwgMTg1NDEsIDE4NTQ1LCAxODU1NCwgMTg1NjIsIDE4NTY5LCAxODU3NiwgMTg1ODIsIAorICAgIDE4NTg3LCAxODU5MywgMTg1OTgsIDE4NjAzLCAxODYwOSwgMTg2MTQsIDE4NjIwLCAxODYyNSwgMTg2MzEsIDE4NjM3LCAKKyAgICAxODY0NCwgMTg2NTAsIDE4NjU1LCAxODY2MCwgOTk2NSwgMTg2NjksIDE4NjcyLCAxODY4MCwgMTg2ODYsIDE4NjkxLCAKKyAgICAxODY5NiwgMTg3MDYsIDE4NzEzLCAxODcxOSwgMTg3MjQsIDE4NzI5LCAxODczNSwgMTg3NDAsIDE4NzQ2LCAxODc1MSwgCisgICAgMTg3NTcsIDE4NzYzLCAxODc2OSwgMTg3NzQsIDE4NzgyLCAxODc4OSwgMTg3OTQsIDE4Nzk5LCAxODgwNSwgMTg4MTAsIAorICAgIDE4ODE0LCAxODgyMywgMTg4MzQsIDE4ODQxLCAxODg0OCwgMTg4NTYsIDE4ODYzLCAxODg2OCwgMTg4NzMsIDE4ODc5LCAKKyAgICAxODg4NCwgMTg4OTIsIDE4ODk4LCAxODkwNCwgMTg5MTEsIDE4OTE3LCAxODkyMiwgMTg5MjYsIDE4OTMyLCAxODkzNywgCisgICAgMTg5NDIsIDE4OTQ2LCAxODk1MSwgMTQwNywgODE0MSwgMjkyNSwgMTg5NTUsIDE4OTU5LCAxODk2MywgMTg5NjcsIDE4OTcxLCAKKyAgICAxODk3NSwgMTg5NzgsIDE4OTgzLCAxODk5MCwgMTg5OTgsIDE1ODE2LCAxOTAwNSwgMTkwMTUsIDE5MDIzLCAxOTAzMCwgCisgICAgMTkwMzgsIDE5MDQ4LCAxOTA1NywgOTI3NSwgMTkwNzAsIDE5MDc1LCAxOTA4MCwgMTkwODgsIDE5MDk1LCAxNDQ4MSwgCisgICAgMTQ0OTAsIDE5MTAyLCAxOTExMiwgMTkxMjcsIDE5MTMzLCAxOTE0MCwgMTkxNDcsIDE5MTUzLCAxOTE1OSwgMTkxNzAsIAorICAgIDE5MTc4LCAxOTE4NiwgMTkxOTYsIDE5MjA2LCAxNTgyMSwgMTkyMTUsIDE5MjIxLCAxOTIyNywgMTkyMzUsIDE5MjQzLCAKKyAgICAxOTI0OCwgMTkyNTcsIDE5MjY1LCAxOTI3NywgMTkyODcsIDE5Mjk3LCAxOTMwNywgMTkzMTYsIDE5MzI4LCAxOTMzOCwgCisgICAgMTkzNDgsIDE5MzU5LCAxOTM2NiwgMTkzNzEsIDE5MzgzLCAxOTM5NSwgMTk0MDcsIDE5NDE5LCAxOTQzMSwgMTk0NDMsIAorICAgIDE5NDU1LCAxOTQ2NywgMTk0NzksIDE5NDkxLCAxOTUwMiwgMTk1MTQsIDE5NTI2LCAxOTUzOCwgMTk1NTAsIDE5NTYyLCAKKyAgICAxOTU3NCwgMTk1ODYsIDE5NTk4LCAxOTYxMCwgMTk2MjIsIDE5NjMzLCAxOTY0NSwgMTk2NTcsIDE5NjY5LCAxOTY4MSwgCisgICAgMTk2OTMsIDE5NzA1LCAxOTcxNywgMTk3MjksIDE5NzQxLCAxOTc1MywgMTk3NjQsIDE5Nzc2LCAxOTc4OCwgMTk4MDAsIAorICAgIDE5ODEyLCAxOTgyNCwgMTk4MzYsIDE5ODQ4LCAxOTg2MCwgMTk4NzIsIDE5ODg0LCAxOTg5NSwgMTk5MDcsIDE5OTE5LCAKKyAgICAxOTkzMSwgMTk5NDMsIDE5OTU1LCAxOTk2NywgMTk5NzksIDE5OTkxLCAyMDAwMywgMjAwMTUsIDIwMDI2LCAyMDAzOCwgCisgICAgMjAwNTAsIDIwMDYyLCAyMDA3NCwgMjAwODYsIDIwMDk4LCAyMDExMCwgMjAxMjIsIDIwMTM0LCAyMDE0NiwgMjAxNTcsIAorICAgIDIwMTY5LCAyMDE4MSwgMjAxOTMsIDIwMjA1LCAyMDIxNywgMjAyMjksIDIwMjQxLCAyMDI1MywgMjAyNjUsIDIwMjc3LCAKKyAgICAyMDI4OCwgMjAzMDAsIDIwMzEyLCAyMDMyNCwgMjAzMzYsIDIwMzQ5LCAyMDM2MiwgMjAzNzUsIDIwMzg4LCAyMDQwMSwgCisgICAgMjA0MTQsIDIwNDI3LCAyMDQzOSwgMjA0NTIsIDIwNDY1LCAyMDQ3OCwgMjA0OTEsIDIwNTA0LCAyMDUxNywgMjA1MzAsIAorICAgIDIwNTQzLCAyMDU1NiwgMjA1NjksIDIwNTgxLCAyMDU5NCwgMjA2MDcsIDIwNjIwLCAyMDYzMywgMjA2NDYsIDIwNjU5LCAKKyAgICAyMDY3MiwgMjA2ODUsIDIwNjk4LCAyMDcxMSwgMjA3MjMsIDIwNzM2LCAyMDc0OSwgMjA3NjIsIDIwNzc1LCAyMDc4OCwgCisgICAgMjA4MDEsIDIwODE0LCAyMDgyNywgMjA4NDAsIDIwODUzLCAyMDg2NSwgMjA4NzgsIDIwODkxLCAyMDkwNCwgMjA5MTcsIAorICAgIDIwOTMwLCAyMDk0MywgMjA5NTYsIDIwOTY5LCAyMDk4MiwgMjA5OTUsIDIxMDA3LCAyMTAyMCwgMjEwMzMsIDIxMDQ2LCAKKyAgICAyMTA1OSwgMjEwNzIsIDIxMDg1LCAyMTA5OCwgMjExMTEsIDIxMTI0LCAyMTEzNywgMjExNDksIDIxMTYwLCAyMTE3MywgCisgICAgMjExODYsIDIxMTk5LCAyMTIxMiwgMjEyMjUsIDIxMjM4LCAyMTI1MSwgMjEyNjQsIDIxMjc3LCAyMTI5MCwgMjEzMDIsIAorICAgIDIxMzE1LCAyMTMyOCwgMjEzNDEsIDIxMzU0LCAyMTM2NywgMjEzODAsIDIxMzkzLCAyMTQwNiwgMjE0MTksIDIxNDMyLCAKKyAgICAyMTQ0NCwgMjE0NTcsIDIxNDcwLCAyMTQ4MywgMjE0OTYsIDIxNTA5LCAyMTUyMiwgMjE1MzUsIDIxNTQ4LCAyMTU2MSwgCisgICAgMjE1NzQsIDIxNTg2LCAyMTU5OSwgMjE2MTIsIDIxNjI1LCAyMTYzOCwgMjE2NTEsIDIxNjY0LCAyMTY3NywgMjE2OTAsIAorICAgIDIxNzAzLCAyMTcxNiwgMjE3MjgsIDIxNzQxLCAyMTc1NCwgMjE3NjcsIDIxNzgwLCAyMTc5MywgMjE4MDYsIDIxODE5LCAKKyAgICAyMTgzMiwgMjE4NDUsIDIxODU4LCAyMTg3MCwgMjE4ODMsIDIxODk2LCAyMTkwOSwgMjE5MjIsIDIxOTM1LCAyMTk0OCwgCisgICAgMjE5NjEsIDIxOTc0LCAyMTk4NywgMjIwMDAsIDIyMDEyLCAyMjAyNSwgMjIwMzgsIDIyMDUxLCAyMjA2NCwgMjIwNzcsIAorICAgIDIyMDkwLCAyMjEwMywgMjIxMTYsIDIyMTI5LCAyMjE0MiwgMjIxNTQsIDIyMTY3LCAyMjE4MCwgMjIxOTMsIDIyMjA2LCAKKyAgICAyMjIxOSwgMjIyMzIsIDIyMjQ1LCAyMjI1OCwgMjIyNzEsIDIyMjg0LCAyMjI5NiwgMjIzMDksIDIyMzIyLCAyMjMzNSwgCisgICAgMjIzNDgsIDIyMzYxLCAyMjM3NCwgMjIzODcsIDIyNDAwLCAyMjQxMywgMjI0MjYsIDIyNDM4LCAyMjQ1MSwgMjI0NjQsIAorICAgIDIyNDc3LCAyMjQ5MCwgMjI1MDMsIDIyNTE2LCAyMjUyOSwgMjI1NDIsIDIyNTU1LCAyMjU2OCwgMjI1ODAsIDIyNTkxLCAKKyAgICAyMjYwMCwgMjI2MDgsIDIyNjE2LCAyMjYyMywgMjI2MjksIDIyNjMzLCAyMjYzOSwgMjI2NDUsIDIyNjUzLCAyMjY1OCwgCisgICAgMjI2NjQsIDIyNjY5LCAyMjY3MywgMjI2ODIsIDk3NDQsIDIyNjkzLCAyMjcwMCwgMjI3MDgsIDIyNzE1LCAyMjcyMiwgCisgICAgMTIwNDYsIDIyNzI5LCAyMjczNiwgMjI3NDUsIDIyNzUwLCAyMjc1NSwgODE2OSwgMjI3NjIsIDIyNzY3LCAyMjc3MCwgCisgICAgMjI3NzUsIDIyNzgzLCAyMjc5MCwgMjI3OTcsIDIyODA0LCAyMjgxMCwgMjI4MTksIDIyODI4LCAyMjgzNywgMjI4NDMsIAorICAgIDIyODUxLCAyMjg2MCwgMjI4NjQsIDIyODcwLCAyMjg3NSwgMjI4ODUsIDIyODkyLCAyMjg5OCwgMjI5MDYsIDIyOTEyLCAKKyAgICAyMjkxOSwgMjI5MjksIDIyOTM4LCAyMjk0MiwgMjI5NDksIDIyOTUzLCAyMjk1OCwgMjI5NjQsIDIyOTcyLCAyMjk3NiwgCisgICAgMjI5ODYsIDE1ODMxLCAyMjk5NSwgMjMwMDEsIDIzMDA1LCAyMzAxNCwgMjMwMjQsIDE1ODM2LCAyMzAzMCwgMjMwMzcsIAorICAgIDIzMDQ4LCAyMzA1NiwgMjMwNjYsIDIzMDc1LCAyMzA4MywgOTQ5MywgMjMwOTEsIDIzMDk2LCAyMzEwMiwgMjMxMDcsIAorICAgIDIzMTExLCAyMzExNSwgMjMxMTksIDEwNDc3LCAyMzEyNCwgMjMxMzIsIDIzMTM5LCAyMzE0OCwgMjMxNTUsIDIzMTYyLCAKKyAgICAyMzE2OCwgMTE5NjYsIDIzMTc1LCAyMzE4MSwgMjMxODUsIDIzMTkxLCAyMzE5OCwgMjMyMDQsIDIzMjEyLCAyMzIxOCwgCisgICAgMjMyMjUsIDIzMjMxLCAyMzIzNywgMjMyNDYsIDIzMjUwLCAyMzI1OCwgMjMyNjcsIDIzMjc0LCAyMzI3OSwgMjMyODMsIAorICAgIDIzMjk0LCAyMzI5OSwgMjMzMDQsIDIzMzEwLCAyMzMxNSwgMjMzMjgsIDgzNzMsIDIzMzMyLCAyMzMzOCwgMjMzNDQsIAorICAgIDIzMzQ5LCAyMzM1NywgMjMzNjEsIDIzMzY4LCAyMzM3NywgMjMzODIsIDE2MTA3LCAyMzM5MCwgMjMzOTQsIDIzNDA2LCAKKyAgICAyMzQxMSwgMjM0MTUsIDIzNDE4LCAyMzQyNCwgMjM0MzAsIDIzNDM2LCAyMzQ0MSwgMjM0NDUsIDIzNDQ4LCAyMzQ1OSwgCisgICAgMjM0NjQsIDEwMDE2LCAyMzQ3MSwgMjM0NzYsIDEyMjQsIDEwMDIxLCAyMzQ4MSwgMjM0ODYsIDIzNDkxLCAyMzQ5NiwgCisgICAgMjM1MDEsIDIzNTA2LCAyMzUxMSwgMjM1MTYsIDIzNTIxLCAyMzUyNiwgMjM1MzEsIDIzNTM2LCAyMzU0MiwgMjM1NDcsIAorICAgIDIzNTUyLCAyMzU1NywgMjM1NjIsIDIzNTY3LCAyMzU3MiwgMjM1NzcsIDIzNTgyLCAyMzU4NywgMjM1OTMsIDIzNTk5LCAKKyAgICAyMzYwNCwgMjM2MDksIDIzNjE0LCAyMzYxOSwgMjM2MjQsIDIzNjI5LCAyMzYzNCwgMjM2MzksIDIzNjQ0LCAyMzY1MCwgCisgICAgMjM2NTUsIDIzNjYwLCAyMzY2NSwgMjM2NzEsIDIzNjc3LCAyMzY4MiwgMjM2ODcsIDIzNjkyLCAyMzY5NywgMjM3MDIsIAorICAgIDIzNzA3LCAyMzcxMiwgMjM3MTcsIDIzNzIzLCAyMzcyOCwgMjM3MzMsIDIzNzM4LCAyMzc0MywgMjM3NDksIDIzNzU0LCAKKyAgICAyMzc1OSwgMjM3NjMsIDEzMzAsIDE0MCwgMjM3NzEsIDIzNzc1LCAyMzc3OSwgMjM3ODMsIDIzNzg4LCAyMzc5MiwgMTQzOTEsIAorICAgIDIzMzEsIDIzNzk2LCAyMzgwMSwgMjM4MDUsIDIzODEwLCAyMzgxNCwgMjM4MTksIDIzODIzLCAyMzgyOSwgMjM4MzQsIAorICAgIDIzODM4LCAyMzg0MiwgMjM4NTAsIDIzODU0LCAyMzg1OCwgMjM4NjMsIDIzODY4LCAyMzg3MiwgMjM4NzgsIDIzODgzLCAKKyAgICAyMzg4NywgMjM4OTIsIDIzODk3LCAyMzkwMSwgMjM5MDgsIDIzOTE1LCAyMzkyMiwgMjM5MjcsIDIzOTMxLCAyMzkzNSwgCisgICAgMjM5NDAsIDIzOTQ0LCAyMzk0NywgMjM5NTMsIDIzOTY2LCAyMzk3MSwgMjM5NzcsIDIzOTg2LCAyMzk5MSwgMTAyNDEsIAorICAgIDIzOTk2LCAyNDAwNSwgMjQwMTAsIDI0MDEzLCAyNzQwLCAyNzQ1LCAyNDAxNywgMjQwMjMsIDI0MDI5LCAzNjUwLCAyNDAzNCwgCisgICAgMjQwMzksIDI0MDQ0LCAyNDA1MCwgMjQwNTUsIDE1MjUxLCAyNDA2MCwgMjQwNjUsIDI0MDcwLCAyNDA3NSwgMjQwODEsIAorICAgIDI0MDg2LCAyNDA5MSwgMjQwOTcsIDI0MTAyLCAyNDEwNiwgMjQxMTEsIDI0MTE2LCAyNDEyMSwgMjQxMjYsIDI0MTMxLCAKKyAgICAyNDEzNSwgMjQxNDAsIDI0MTQ0LCAyNDE0OSwgMjQxNTQsIDI0MTU5LCAyNDE2NCwgMjQxNjgsIDI0MTczLCAyNDE3NywgCisgICAgMjQxODIsIDI0MTg3LCAyNDE5MiwgMjQxMDcsIDI5MzQsIDI0MTEyLCAyNDE5NywgMjQyMDUsIDI0MjEyLCAxMDU3MSwgCisgICAgMjQyMjQsIDI0MjMyLCAyNDI0MiwgMjQyNjAsIDI0Mjc5LCAyNDI4OCwgMjQyOTYsIDI0MTE3LCAyNDMwMywgMjQzMDgsIAorICAgIDI0MzE2LCAyNDEyMiwgMjQzMjEsIDI0MzI2LCAyNDMzNCwgMjQzMzksIDI0MTI3LCAyNDM0NCwgMjQzNTIsIDI0MzU3LCAKKyAgICAyNDM2MSwgMjQzNjgsIDI0Mzc0LCAyNDM4MywgMjQzOTEsIDI0Mzk1LCAyNDM5OCwgMjQ0MDUsIDI0NDA5LCAyNDQxMywgCisgICAgMjQ0MTgsIDI0NDI0LCAyNDQzMSwgMjQ0MzYsIDk1MjAsIDE3MjMsIDE3MjgsIDI0NDQwLCAyNDQ0NiwgMjQ0NTIsIDI0NDU3LCAKKyAgICAyNDQ2MSwgMjQ0NjUsIDI0NDY5LCAyNDQ3MywgMjQ0NzcsIDI0NDgxLCAyNDQ4NSwgMjQ0ODksIDI0NDkyLCAyNDQ5OCwgCisgICAgMjQ1MDUsIDI0NTEzLCAyNDUxOSwgMjQ1MjUsIDI0NTMwLCAyNDUzNSwgMjQ1NDEsIDI0NTQ1LCAyNDU1MCwgMTUxNTcsIAorICAgIDE1MTY0LCAyNDU1NywgMjQ1NjksIDI0NTcyLCAyNDU3OSwgMjQ1ODMsIDE4MDQ1LCAyNDU5MCwgMjQ1OTgsIDI0NjA5LCAKKyAgICAyNDYxOCwgMjQ2MzEsIDI0NjQxLCAyNDY1NSwgMjQ2NjcsIDI0NjgxLCAyNDY5NCwgMjQ3MDYsIDI0NzE2LCAyNDcyOCwgCisgICAgMjQ3MzQsIDI0NzQwLCAyNDc1NSwgMjQ3NzksIDI0Nzk3LCAyNDgxNiwgMjQ4MjksIDI0ODQzLCAyNDg2MSwgMjQ4NzcsIAorICAgIDI0ODk0LCAyNDkxMiwgMjQ5MjMsIDI0OTQyLCAyNDk1OSwgMjQ5NzksIDI0OTk3LCAyNTAwOSwgMjUwMjMsIDI1MDM3LCAKKyAgICAyNTA0OSwgMjUwNjYsIDI1MDg1LCAyNTEwMywgMjUxMTUsIDI1MTMzLCAyNTE1MiwgMTU5NzUsIDI1MTY1LCAyNTE4NSwgCisgICAgMjUxOTcsIDExNTQ2LCAyNTIwOSwgMjUyMTQsIDI1MjE5LCAyNTIyNCwgMjUyMzAsIDI1MjM1LCAyNTIzOSwgMjUyNDYsIAorICAgIDI1MjUyLCAyNDIyLCAyNTI1NiwgMjUyNjIsIDI1MjY2LCAyNTI2OSwgMjUyODAsIDI1Mjg0LCAyNTI4NywgMjUyOTUsIAorICAgIDI1MzAxLCAyNDE0NSwgMjUzMDUsIDI1MzE0LCAyNTMyNSwgMjUzMzEsIDI1MzM3LCAyNTM1MiwgMjUzNjEsIDI1MzY5LCAKKyAgICAyNTM3NiwgMjUzODEsIDI1Mzg1LCAyNTM5MiwgMjUzOTgsIDI1NDA3LCAyNTQxNSwgMjU0MjIsIDI1NDMyLCAyNTQ0MSwgCisgICAgMjU0NTEsIDI1NDU2LCAyNTQ2NSwgMjU0NzQsIDI1NDg1LCAyNTQ5NiwgNDIwNiwgMjU1MDYsIDI1NTEwLCAyNTUyMCwgCisgICAgMjU1MjgsIDI1NTM4LCAyNTU0OSwgMjU1NTQsIDI1NTY0LCAyNTU3MiwgMjU1NzksIDI1NTg1LCAyNTU5MiwgMjU1OTcsIAorICAgIDI0MTU1LCAyNTYwMSwgMjU2MTAsIDI1NjE0LCAyNTYxNywgMjU2MjIsIDI1NjMwLCAyNTYzNywgMjU2NDYsIDI1NjU0LCAKKyAgICAyNTY2MiwgMjU2NzAsIDI1NjgwLCAyNTY4OSwgMjU2OTUsIDI1NzAxLCAyNTcwNSwgMjQxNjAsIDI0MTY1LCAyNTcwOSwgCisgICAgMjU3MTksIDI1NzI5LCAyNTczOSwgMjU3NDcsIDI1NzU0LCAyNTc2NCwgMjU3NzIsIDI1NzgwLCAyNTc4NiwgMjU3OTQsIAorICAgIDg3MiwgMjU4MDMsIDE2MTg4LCA1NTcsIDI1ODE3LCAyNTgyNiwgMjU4MzQsIDI1ODQ1LCAyNTg1NiwgMjU4NjYsIDI1ODc1LCAKKyAgICAyNTg4NywgMjU4OTYsIDI1OTA1LCAyNTkxMiwgMjU5MTgsIDI1OTI4LCAyNTkzNywgMjU5NDYsIDI1OTU0LCAyNTk2NCwgCisgICAgMjU5NzIsIDI1OTgwLCA5OTgyLCAyNTk4NiwgMjU5ODksIDI1OTkzLCAyNTk5OCwgMjYwMDMsIDI2MDA3LCAxMDY4NiwgCisgICAgMjQxNzgsIDI0MTgzLCAyNjAxNSwgMjYwMjEsIDI2MDI3LCAyNjAzMiwgMjYwMzcsIDI2MDQxLCAyNjA0OSwgMjYwNTUsIAorICAgIDI2MDYxLCAyNjA2NSwgMzY3NCwgMjYwNzMsIDI2MDc4LCAyNjA4MywgMjYwODcsIDI2MDkxLCAxMDc5OSwgMjYwOTgsIAorICAgIDI2MTA2LCAyNjEyMCwgMjYxMjcsIDI2MTMzLCAxMDgwOCwgMTA4MTQsIDI2MTQxLCAyNjE0OSwgMjYxNTYsIDI2MTYxLCAKKyAgICAyNjE2NiwgMjQxODgsIDI2MTcyLCAyNjE4MywgMjYxODcsIDI2MTkyLCAyNjI5LCAyNjE5NywgMjYyMDgsIDI2MjE0LCAKKyAgICAyNjIxOSwgMjYyMjMsIDI2MjI3LCAyNjIzMCwgMjYyMzcsIDI2MjQ0LCAyNjI1MCwgMjYyNTcsIDI2MjYzLCAyNjI2NywgCisgICAgMjQxOTMsIDI2MjcyLCAyNjI3NiwgMjYyODAsIDE0MTIsIDg1ODUsIDI2Mjg1LCAyNjI5MCwgMjYyOTUsIDI2MzAwLCAKKyAgICAyNjMwNSwgMjYzMTAsIDI2MzE1LCAyNjMyMCwgMjYzMjUsIDI2MzMwLCAyNjMzNSwgMjYzNDAsIDI2MzQ1LCAyNjM1MCwgCisgICAgMjYzNTYsIDI2MzYxLCAyNjM2NiwgMjYzNzEsIDI2Mzc2LCAyNjM4MSwgMjYzODYsIDI2MzkyLCAyNjM5NywgMjY0MDIsIAorICAgIDI2NDA3LCAyNjQxMiwgMjY0MTcsIDI2NDIyLCAyNjQyNywgMjY0MzMsIDI2NDM5LCAyNjQ0NCwgMjY0NTAsIDI2NDU1LCAKKyAgICAyNjQ2MCwgNSwgMjY0NjYsIDI2NDcwLCAyNjQ3NCwgMjY0NzgsIDI2NDgzLCAyNjQ4NywgMjY0OTEsIDI2NDk1LCAyNjQ5OSwgCisgICAgMjY1MDQsIDI2NTA4LCAyNjUxMywgMjY1MTcsIDI2NTIwLCAyNjUyNCwgMjY1MjksIDI2NTMzLCAyNjUzOCwgMjY1NDIsIAorICAgIDI2NTQ2LCAyNjU1MCwgMjY1NTUsIDI2NTU5LCAyNjU2MywgMjY1NzMsIDI2NTc4LCAyNjU4MiwgMjY1ODYsIDI2NTkxLCAKKyAgICAyNjU5NiwgMjY2MDUsIDI2NjEwLCAyNjYxNSwgMjY2MTksIDI2NjIzLCAyNjYzNiwgMjY2NDgsIDI2NjU3LCAyNjY2NiwgCisgICAgMjY2NzEsIDI2Njc3LCAyNjY4MiwgMjY2ODYsIDI2NjkwLCAyNjcwMCwgMjY3MDksIDI2NzE3LCAyNjcyMywgMjY3MjgsIAorICAgIDI2NzMyLCAyNjczOSwgMjY3NDksIDI2NzU4LCAyNjc2NiwgMTE4NjgsIDI2Nzc0LCAyNjc4MiwgMjY3OTEsIDI2ODAwLCAKKyAgICAyNjgwOCwgMjY4MTgsIDI2ODIzLCAyNjgyNywgMjY4MzEsIDI2ODM0LCAyNjgzNiwgMjY4NDAsIDI2ODQ0LCAyNjg0OSwgCisgICAgMjY4NTQsIDI2ODU4LCAyNjg2MiwgMjY4NjUsIDI2ODY5LCAyNjg3MiwgMjY4NzYsIDI2ODc5LCAyNjg4MiwgMjY4ODYsIAorICAgIDI2ODkyLCAyNjg5NiwgMjY5MDAsIDI2OTA0LCAyNjkwOCwgMjY5MTMsIDI2OTE4LCAyNjkyMywgMjY5MjcsIDI2OTMwLCAKKyAgICAyNjkzNSwgMjY5NDEsIDI2OTQ2LCAyNjk1MiwgMjY5NTcsIDI2OTYxLCAyNjk2NywgMjY5NzEsIDI2OTc1LCAyNjk4MCwgCisgICAgMjY5ODQsIDI2OTg5LCAyNjk5NCwgMjY5OTgsIDI3MDAyLCAyNzAwOSwgMjcwMTMsIDI3MDE2LCAyNzAyMCwgMjcwMjQsIAorICAgIDI3MDMwLCAyNzAzNiwgMjcwNDAsIDI3MDQ0LCAyNzA0OSwgMjcwNTYsIDI3MDYyLCAyNzA2NiwgMjcwNzUsIDI3MDc5LCAKKyAgICAyNzA4MywgMjcwODYsIDI3MDkyLCAyNzA5NywgMjcxMDMsIDE0NTYsIDE3ODcsIDI3MTA4LCAyNzExMywgMjcxMTgsIAorICAgIDI3MTIzLCAyNzEyOCwgMjcxMzMsIDI3MTM4LCAyMTU5LCAyMjA1LCAyNzE0MywgMjcxNDYsIDI3MTUwLCAyNzE1NCwgCisgICAgMjcxNTksIDI3MTYzLCAxNjIwMCwgMjcxNjcsIDI3MTcyLCAyNzE3NywgMjcxODEsIDI3MTg0LCAyNzE4OSwgMjcxOTMsIAorICAgIDI3MTk4LCAyNzIwMiwgMTYyMDQsIDI3MjA3LCAyNzIxMCwgMjcyMTMsIDI3MjE3LCAyNzIyMiwgMjcyMjYsIDI3MjM5LCAKKyAgICAyNzI0MywgMjcyNDYsIDI3MjU0LCAyNzI2MywgMjcyNzAsIDI3Mjc1LCAyNzI4MSwgMjcyODcsIDI3Mjk1LCAyNzMwMiwgCisgICAgMjczMDksIDI3MzEzLCAyNzMxNywgMjczMjEsIDI3MzI2LCAyNzMzMSwgMjczMzUsIDI3MzQzLCAyNzM0OCwgMjczNjAsIAorICAgIDI3MzcxLCAyNzM3NiwgMjczODAsIDI3Mzg3LCAyNzM5MSwgMjczOTYsIDI3NDAyLCAyNzQwNSwgMjc0MTAsIDI3NDE1LCAKKyAgICAyNzQxOSwgMjc0MjMsIDI3NDI2LCAyNzQzMiwgODI3MiwgMjMzNSwgMjc0MzYsIDI3NDQxLCAyNzQ1NywgMTAyODgsIAorICAgIDI3NDc3LCAyNzQ4NiwgMjc1MDIsIDI3NTA2LCAyNzUxMywgMjc1MTYsIDI3NTIyLCAyNzUzMiwgMjc1MzgsIDI3NTQ3LCAKKyAgICAyNzU2MiwgMjc1NzQsIDI3NTg1LCAyNzU5MywgMjc2MDIsIDI3NjA4LCAyNzYxNywgMjc2MjcsIDI3NjM3LCAyNzY0OCwgCisgICAgMjc2NTksIDI3NjY5LCAyNzY3OCwgMjc2ODUsIDI3Njk0LCAyNzcwMiwgMjc3MDksIDI3NzE3LCAyNzcyNCwgMjc3MzEsIAorICAgIDI3NzQ0LCAyNzc1MSwgMjc3NTksIDI3NzY2LCAyNzc3MiwgMjc3NzcsIDI3Nzg2LCAyNzc5MywgMjc3OTksIDI3ODA0LCAKKyAgICAyNzgxMiwgMjc4MTksIDI3ODI2LCAyNTUzMCwgMjc4MzgsIDI3ODUwLCAyNzg2NCwgMjc4NzIsIDI3ODgwLCAyNzg4NywgCisgICAgMjc4OTksIDI3OTA4LCAyNzkxNywgMjc5MjUsIDI3OTMzLCAyNzk0MSwgMjc5NDgsIDI3OTU0LCAyNzk2MywgMjc5NzEsIAorICAgIDI3OTgxLCAyNzk5MCwgMjgwMDAsIDI4MDA5LCAyODAxOCwgMjgwMjYsIDI4MDMxLCAyODAzNSwgMjgwMzgsIDI4MDQyLCAKKyAgICAyODA0NiwgMjgwNTAsIDI4MDU0LCAyODA1OCwgMjgwNjQsIDI4MDcwLCAyODA3NSwgMjgwODMsIDE2MjYyLCAyODA5MCwgCisgICAgMjgwOTUsIDI4MTAyLCAyODEwOCwgMjgxMTUsIDE2MjcwLCAyODEyMiwgMjgxMjUsIDI4MTM3LCAyODE0NSwgMjgxNTEsIAorICAgIDI4MTU2LCAyODE2MCwgMjgxNzEsIDEwNzQ5LCAyODE4MSwgMjgxODksIDI4MTk5LCAyODIwOCwgMjgyMTUsIDI4MjIyLCAKKyAgICAyODIzMCwgMjgyMzQsIDE2MjgxLCAyODIzNywgMjgyNDQsIDI4MjQ4LCAyODI1NCwgMjgyNTcsIDI4MjY0LCAyODI3MCwgCisgICAgMjgyNzUsIDI4MjgyLCAyODI4OCwgMjgyOTIsIDI4Mjk3LCAyODMwMSwgMjgzMTAsIDI4MzE3LCAyODMyMywgODMzMCwgCisgICAgMjgzMzAsIDI4MzM4LCAyODM0NSwgMjgzNTEsIDI4MzU2LCAyODM2MiwgMjgzNjgsIDI4Mzc2LCAyODM4MiwgMjgzODYsIAorICAgIDI4Mzg5LCAyODM5MSwgMjgwNDMsIDI4NDAwLCAyODQwNiwgMjg0MTIsIDI4NDIyLCAyODQyNywgMjg0MzQsIDI4NDQwLCAKKyAgICAyODQ0NSwgMjg0NTAsIDI4NDU1LCAyODQ1OSwgMjg0NjQsIDI4NDcxLCAyODQ3NywgMjg0ODYsIDI4NDkwLCAyODQ5NywgCisgICAgMjg1MDMsIDI4NTEyLCA0Mzk4LCAyODUxOCwgMjg1MjQsIDI4NTI5LCAyODUzNiwgMjg1NDcsIDI4NTUyLCAyODU1NiwgCisgICAgMjg1NjYsIDI4NTcyLCAyODU3NiwgMjg1ODEsIDI4NTkxLCAyODYwMCwgMjg2MDQsIDI4NjExLCAyODYxOSwgMjg2MjYsIAorICAgIDI4NjMyLCAyODYzNywgMjg2NDUsIDI4NjUyLCAyODY1NywgMjg2NjQsIDI4Njc2LCAyODY4NSwgMjg2ODksIDE0MzIyLCAKKyAgICAyODY5NywgMjg3MDcsIDI4NzExLCAyNzI1MCwgMjg3MjIsIDI4NzI3LCAyODczMSwgMjg3MzgsIDI4NzQ1LCAyMzg3NCwgCisgICAgMjc5NjgsIDI4NzUwLCAyODc1NCwgMjg3NTcsIDI0OTI5LCAyODc2MiwgMjg3NzYsIDI4NzkyLCAyODgxMCwgMjg4MjksIAorICAgIDI4ODQ2LCAyODg2NCwgMjQ5NDgsIDI4ODgxLCAyODkwMSwgMjQ5NjUsIDI4OTEzLCAyODkyNSwgMTczMTQsIDI4OTM3LCAKKyAgICAyNDk4NSwgMjg5NTEsIDI4OTYzLCAxMTU1OSwgMjg5NzcsIDI4OTgyLCAyODk4NywgMjg5OTIsIDI4OTk4LCAyOTAwNCwgCisgICAgMjkwMTAsIDI5MDE0LCAyOTAyMiwgMjkwMjksIDI5MDM0LCAyOTA0NCwgMjkwNTAsIDExMTU3LCAyOTA1NiwgMjkwNTgsIAorICAgIDI5MDYzLCAyOTA3MSwgMjkwNzUsIDI4NDY3LCAyOTA4MSwgMjkwODgsIDEyNzExLCAxMjcyMSwgMjkwOTUsIDI5MTA1LCAKKyAgICAyOTExMCwgMjkxMTQsIDI5MTE3LCAyOTEyMywgMjkxMzEsIDI5MTQzLCAyOTE1MywgMjkxNjksIDI5MTgyLCAyOTE5NiwgCisgICAgMTczMzIsIDI5MjEwLCAyOTIxNywgMjkyMjEsIDI5MjI0LCAyOTIyOSwgMjkyMzMsIDI5MjQwLCAyOTI0NywgMjkyNTQsIAorICAgIDI5MjY0LCAyOTI2OSwgMjkyNzQsIDI5Mjc5LCAyOTI4NywgMjkyOTUsIDI5MzAwLCAyOTMwOSwgMjkzMTQsIDMzNDIsIAorICAgIDI5MzE4LCAyOTMyMSwgMjkzMjQsIDI5MzI5LCAyOTMzNiwgMjkzNDEsIDI5MzU3LCAyOTM2NSwgMjkzNzMsIDEwMDU2LCAKKyAgICAyOTM4MSwgMjkzODYsIDI5MzkwLCAyOTM5NiwgMjk0MDEsIDI5NDA3LCAyOTQxMCwgMjk0MTYsIDI5NDI4LCAyOTQzNiwgCisgICAgMjk0NDMsIDI5NDQ5LCAyOTQ1NiwgMjk0NjcsIDI5NDgxLCAyOTQ5NCwgMjk1MDAsIDI5NTA5LCAyOTUxNSwgMjk1MjQsIAorICAgIDI5NTM2LCAyOTU0NywgMjk1NTcsIDI5NTY2LCAyOTU3NSwgMjk1ODMsIDI5NTk0LCA4MzEyLCAyOTYwMSwgMjk2MDgsIAorICAgIDI5NjE0LCAyOTYxOSwgMjk2MjUsIDI5NjMyLCAyOTY0MywgMjk2NTMsIDI5NjYzLCAyOTY3MiwgMjk2NzgsIDI5Njg1LCAKKyAgICAyOTY5MCwgMjk2OTgsIDI5NzA1LCAyOTcxMywgMjk3MjEsIDI5NzMzLCA2NTg3LCAxMDI4LCAyOTc0MCwgMjk3NDksIAorICAgIDI5NzU3LCAyOTc2MywgMjk3NjksIDI5Nzc0LCAyOTc3OCwgMjk3ODEsIDI5Nzg3LCAyOTc5NCwgMjk3OTksIDI5ODA0LCAKKyAgICAyOTgwOSwgMjk4MTMsIDI5ODI1LCAyOTgzNiwgMjk4NDUsIDI5ODUzLCAxNjQ0NiwgMjk4NTgsIDI5ODY2LCAyOTg3MSwgCisgICAgMjk4NzcsIDI5ODgzLCAxMjcwNCwgOTEwMywgMjk4ODgsIDI5ODkyLCAyOTg5NiwgMjk4OTksIDI5OTAyLCAyOTkwOCwgCisgICAgMjk5MTYsIDI5OTI0LCAyOTkyOCwgMjk5MzIsIDI5OTM3LCAyOTk0MCwgMjk5NDksIDI5OTUzLCAyOTk1NiwgMjk5NjQsIAorICAgIDI5OTc1LCAyOTk3OSwgMjk5ODUsIDI5OTkxLCAyOTk5NSwgMzAwMDEsIDMwMDA5LCAzMDAzMSwgMzAwNTUsIDMwMDY0LCAKKyAgICAzMDA3MSwgMzAwNzgsIDMwMDg0LCAzMDA5MiwgMzAwOTgsIDMwMTAzLCAzMDExNCwgMzAxMzIsIDMwMTM5LCAzMDE0NywgCisgICAgMzAxNTEsIDMwMTU2LCAzMDE2NSwgMzAxNzgsIDMwMTg2LCAzMDE5OCwgMzAyMDksIDMwMjIwLCAzMDIzMCwgMzAyNDQsIAorICAgIDMwMjUzLCAzMDI2MSwgMzAyNzMsIDEwMzA1LCAzMDI4NCwgMzAyOTUsIDMwMzA3LCAzMDMxNywgMzAzMjYsIDMwMzMxLCAKKyAgICAzMDMzNSwgMzAzNDMsIDMwMzU0LCAzMDM2NCwgMzAzNjksIDMwMzczLCAzMDM3NiwgMzAzNzksIDMwMzg3LCAzMDM5NSwgCisgICAgMzA0MDQsIDMwNDE0LCAzMDQyMywgMzA0MjksIDMwNDQzLCAyNjkxLCAzMDQ2NSwgMzA0NzYsIDMwNDg1LCAzMDQ5NSwgCisgICAgMzA1MDcsIDMwNTE2LCAzMDUyNSwgMzA1MzUsIDMwNTQzLCAzMDU1MSwgMzA1NjAsIDMwNTY1LCAzMDU3NiwgMzA1ODEsIAorICAgIDMwNTkwLCAzMDYwMSwgMzA2MDUsIDMwNjA4LCAzMDYxOCwgMzA2MjcsIDMwNjM1LCAzMDY0NSwgMzA2NTUsIDMwNjYzLCAKKyAgICAzMDY3MiwgMzA2NzksIDMwNjg3LCAzMDY5NCwgMzA3MDMsIDMwNzEyLCAzMDcxNywgMzA3MjEsIDMwNzI5LCAzMDczNiwgCisgICAgMzA3NDQsIDMwNzUxLCAzMDc2MiwgMzA3NzcsIDMwNzg0LCAzMDc5MCwgMzA4MDAsIDMwODA5LCAzMDgxNSwgMzA4MjYsIAorICAgIDMwODMwLCAzMDgzNywgMzA4NDEsIDMwODQ3LCAxNTM4MiwgMzA4NTMsIDMwODU3LCAzMDg2MiwgMzA4NjgsIDMwODc1LCAKKyAgICAzMDg3OSwgMzA4ODMsIDMwODkxLCAzMDg5OSwgMzA5MDUsIDMwOTE0LCAzMDkyMSwgMzA5MjYsIDMwOTMxLCAzMDk0MSwgCisgICAgMjU1OTksIDMwOTQ1LCAzMDk0OCwgMzA5NTMsIDMwOTU4LCAzMDk2MywgMzA5NjgsIDMwOTczLCAzMDk3OCwgMzA5ODMsIAorICAgIDMwOTg4LCAzMDk5NCwgMzA5OTksIDMxMDA0LCAzMTAxMCwgMTE4MCwgNjc2LCAzMTAxNSwgMzEwMjQsIDIzODMsIDMxMDMxLCAKKyAgICAzMTAzNiwgMzEwNDAsIDMxMDQ2LCAxMjI5LCA1OTEsIDMxMDUxLCAyOTYsIDMxMDU1LCAzMTA2NCwgMzEwNzIsIDMxMDgxLCAKKyAgICAzMTA4OSwgMzExMDAsIDMxMTA4LCAzMTExNywgMzExMjUsIDMxMTMwLCAxMDg5NSwgMzExMzQsIDMxMTQyLCAzMTE1MCwgCisgICAgMzExNTUsIDE2MjE3LCAzODIzLCAzMTE2MSwgMzExNjcsIDMxMTczLCA2MTY4LCAzMTE3OCwgMzExODIsIDMxMTg4LCAKKyAgICAzMTE5MiwgMzExOTgsIDMxMjAzLCAzMTIxMCwgMTQyMiwgMzEyMTYsIDMxMjIzLCAzMTIyNywgMTMyOSwgNjE3NiwgMzEyMzIsIAorICAgIDMxMjQyLCAzMTI1MCwgMzEyNTYsIDMxMjY2LCAzMTI3NSwgMzEyODMsIDMxMjg5LCAzMTI5NCwgMzEzMDIsIDMxMzA5LCAKKyAgICAxMjI0NiwgMzEzMTUsIDMxMzIyLCAzMTMyNywgMzEzMzQsIDE0NzUsIDIyNSwgMjE1OCwgMzEzNDAsIDMxMzQ2LCAzMTM1MywgCisgICAgMzEzNjQsIDMxMzc1LCAzMTM4MywgMzEzOTAsIDMxNDAwLCAzMTQwOSwgMzE0MTcsIDMxNDI2LCAzMTQzMywgMzE0NDAsIAorICAgIDMxNDUzLCAzMTQ2MCwgMzE0NjYsIDMxNDc3LCAzMTQ5NiwgMTIzNCwgMzE1MDEsIDMxNTA2LCAzMTUxNCwgMzc0MSwgCisgICAgMzE1MTgsIDMxNTIzLCAzMTUyNywgMzE1MzEsIDE0MjYsIDI2ODYzLCAzMTU0MSwgMzE1NDUsIDMxNTUwLCAzMTU1NCwgCisgICAgMzYwOCwgMzE1NjAsIDMxNTY4LCAzMTU3NSwgMzE1ODYsIDMxNTk0LCAzMTYxOSwgMzE2MjcsIDMxNjMyLCAzNzQyLCAzNTIsIAorICAgIDMxNjM4LCAzMTY0NiwgMzE2NTQsIDMxNjYxLCAzMTY2NywgMzE2NzIsIDIyMjcsIDExNzI2LCAzMTY3OSwgMzE2ODUsIAorICAgIDI4MjkzLCAyODU0MiwgMzE2OTEsIDU4NywgMTA2LCAzMTY5NSwgMzE2OTksIDMxNzA1LCA2ODksIDk5MzEsIDMxNzEwLCAKKyAgICAzMTcxNywgMzE3MjMsIDMxNzI3LCAzMTczMSwgMTYyMCwgMzE3MzQsIDMxNzM4LCAxNjY5OSwgMzE3NDEsIDMxNzQ2LCAKKyAgICAzMTc1MywgMzE3NTksIDMxNzY0LCAzMTc3MiwgMzE3NzksIDMxNzg1LCAyNDM0MSwgMzE3ODksIDMxNzkzLCAzMTc5NywgCisgICAgMzgxMiwgMTgzNDQsIDMxODAxLCAzMTgwNiwgMzE4MTAsIDMxODEzLCAzMTgyMSwgMzE4MjksIDMxODM0LCAzMTg0MywgCisgICAgMzE4NTEsIDMxODU0LCAzMTg2MSwgMzE4NzEsIDMxODgzLCAzMTg4OCwgMzE4OTIsIDMxOTAwLCAzMTkwNywgMzE5MTMsIAorICAgIDMxOTIwLCAzMTkyNywgMzE5MzAsIDMxOTM0LCAzMTkzOCwgMTQzMCwgMzE5NDgsIDMxOTUwLCAzMTk1NSwgMzE5NjEsIAorICAgIDMxOTY3LCAzMTk3MiwgMzE5NzcsIDMxOTgyLCAzMTk4NywgMzE5OTIsIDMxOTk3LCAzMjAwMiwgMzIwMDcsIDMyMDEyLCAKKyAgICAzMjAxNywgMzIwMjIsIDMyMDI3LCAzMjAzMiwgMzIwMzcsIDMyMDQzLCAzMjA0OSwgMzIwNTUsIDMyMDYxLCAzMjA2NiwgCisgICAgMzIwNzEsIDMyMDc2LCAzMjA4MiwgMzIwODcsIDMyMDkyLCAzMjA5NywgMzIxMDMsIDMyMTA4LCAzMjExNCwgMzIxMTksIAorICAgIDMyMTI0LCAzMjEyOSwgMzIxMzQsIDMyMTQwLCAzMjE0NSwgMzIxNTEsIDMyMTU2LCAzMjE2MSwgMzIxNjYsIDMyMTcxLCAKKyAgICAzMjE3NywgMzIxODIsIDMyMTg4LCAzMjE5MywgMzIxOTgsIDMyMjAzLCAzMjIwOCwgMzIyMTMsIDMyMjE4LCAzMjIyMywgCisgICAgMzIyMjgsIDMyMjMzLCAzMjIzOSwgMzIyNDUsIDMyMjUxLCAzMjI1NiwgMzIyNjEsIDMyMjY2LCAzMjI3MSwgMzIyNzcsIAorICAgIDMyMjgzLCAzMjI4OSwgMzIyOTUsIDMyMzAxLCAzMjMwNywgMzIzMTIsIDMyMzE4LCAzMjMyMywgMzIzMjgsIDMyMzMzLCAKKyAgICAzMjMzOCwgMzIzNDQsIDI0NjcsIDMyMzQ5LCAyNDc0LCAyNDgxLCAyNzgyLCAzMjM1NCwgMjQ4NywgMjQ5NywgMzIzNjAsIAorICAgIDMyMzY0LCAzMjM2OSwgMzIzNzQsIDMyMzgwLCAzMjM4NSwgMzIzOTAsIDMyMzk0LCAzMjM5OSwgMzI0MDUsIDMyNDEwLCAKKyAgICAzMjQxNSwgMzI0MjAsIDMyNDI2LCAzMjQzMSwgMzI0MzUsIDMyNDM5LCAzMjQ0NCwgMzI0NDksIDMyNDU0LCAzMjQ1OSwgCisgICAgMzI0NjQsIDMyNDcwLCAzMjQ3NiwgMzI0ODEsIDMyNDg1LCAzMjQ5MCwgMzI0OTYsIDMyNTAwLCAzMjUwNSwgMzI1MTAsIAorICAgIDMyNTE1LCAzMjUyMCwgMzI1MjQsIDMyNTI3LCAzMjUzMiwgMzI1MzcsIDMyNTQyLCAzMjU0NywgMzI1NTIsIDMyNTU4LCAKKyAgICAzMjU2NCwgMzI1NjksIDMyNTc0LCAzMjU3OSwgMzI1ODMsIDMyNTg4LCAzMjU5MywgMzI1OTgsIDMyNjAzLCAzMjYwOCwgCisgICAgMzI2MTMsIDMyNjE3LCAzMjYyMiwgMzI2MjcsIDMyNjMyLCAzMjYzNiwgMzI2NDAsIDMyNjQ0LCAzMjY0OSwgMzI2NTcsIAorICAgIDMyNjYyLCAzMjY2NywgMzI2NzMsIDMyNjc5LCAzMjY4NSwgMzI2OTAsIDMyNjk0LCAzMjY5NywgMzI3MDIsIDMyNzA3LCAKKyAgICAzMjcxMSwgMzI3MTYsIDMyNzIxLCAzMjcyNSwgMzI3MzAsIDMyNzM0LCAzMjczNywgMzI3NDIsIDM5MTksIDE5MDgzLCAKKyAgICAzMjc0NywgMzI3NTIsIDMyNzU3LCAzMjc2NSwgMjMxNTEsIDMxMjIwLCA5NjAxLCAzMjc3MCwgMzI3NzUsIDMyNzc5LCAKKyAgICAzMjc4NCwgMzI3ODgsIDMyNzkyLCAzMjc5NywgMzI4MDEsIDMyODA0LCAzMjgwNywgMzI4MTEsIDMyODE2LCAzMjgyMCwgCisgICAgMzI4MjgsIDMyODMyLCAzMjgzNSwgMzI4NDAsIDMyODQ0LCAzMjg0OCwgMzI4NTMsIDMyODU4LCAzMjg2MiwgMzI4NjgsIAorICAgIDMyODczLCAzMjg3OCwgMzI4ODUsIDMyODkyLCAzMjg5NiwgMzI4OTksIDMyOTA1LCAzMjkxNCwgMzI5MjEsIDMyOTI5LCAKKyAgICAzMjkzNiwgMzI5NDAsIDMyOTQ1LCAzMjk0OSwgMzI5NTMsIDMyOTU5LCAzMjk2NSwgMzI5NjksIDMyOTc1LCAzMjk4MCwgCisgICAgMzI5ODUsIDMyOTg5LCAzMjk5NiwgMzMwMDIsIDMzMDA4LCAzMzAxNCwgMzMwMjAsIDMzMDI3LCAzMzAzMywgMzMwMzksIAorICAgIDMzMDQ1LCAzMzA1MSwgMzMwNTcsIDMzMDYzLCAzMzA2OSwgMzMwNzYsIDMzMDgyLCAzMzA4OSwgMzMwOTUsIDMzMTAxLCAKKyAgICAzMzEwNywgMzMxMTMsIDMzMTE5LCAzMzEyNSwgMzMxMzEsIDMzMTM3LCAzMzE0MywgMTI1ODksIDMzMTQ5LCAzMzE1NSwgCisgICAgMzMxNjAsIDMzMTY1LCAzMzE3MCwgMzMxNzMsIDMzMTc5LCAzMzE4NywgMzMxOTIsIDMzMTk2LCAzMzIwMSwgMzMyMDcsIAorICAgIDMzMjE2LCAzMzIyMiwgMzMyMjcsIDMzMjMyLCAzMzIzNywgMzMyNDEsIDMzMjQ2LCAzMzI1MSwgMzMyNTYsIDMzMjYxLCAKKyAgICAzMzI2NiwgMzMyNzMsIDMzMjgwLCAzMzI4NiwgMzMyOTIsIDMzMjk3LCAxNzk4MCwgMzMzMDQsIDMzMzEwLCAzMzMxNywgCisgICAgMzMzMjMsIDMzMzI5LCAzMzMzNCwgMzMzNDIsIDMzMzQ3LCAxMDQ3MCwgMzMzNTEsIDMzMzU2LCAzMzM2MSwgMzMzNjcsIAorICAgIDMzMzcyLCAzMzM3NywgMzMzODEsIDMzMzg2LCAzMzM5MSwgMzMzOTcsIDMzNDAyLCAzMzQwNywgMzM0MTIsIDMzNDE2LCAKKyAgICAzMzQyMSwgMzM0MjYsIDMzNDMwLCAzMzQzNSwgMzM0NDAsIDMzNDQ0LCAzMzQ0OSwgMzM0NTMsIDMzNDU4LCAzMzQ2MywgCisgICAgMzM0NjgsIDMzNDcyLCAzMzQ3NywgMzM0ODEsIDMzNDg1LCAxNjgwNSwgMzM0OTAsIDMzNDk5LCAzMzUwNSwgMzM1MTEsIAorICAgIDMzNTIwLCAzMzUyOCwgMzM1MzcsIDMzNTQ1LCAzMzU1MCwgMzM1NTQsIDMzNTYxLCAzMzU2NywgMzM1NzUsIDMzNTc5LCAKKyAgICAzMzU4MiwgMzM1ODcsIDMzNTkxLCAzMzYwMCwgMzM2MDgsIDMzNjI2LCAzMzYzMiwgMTQ3NCwgMzM2MzgsIDMzNjQxLCAKKyAgICAzMzY0NSwgMjQ0NDcsIDI0NDUzLCAzMzY1MSwgMzM2NTUsIDMzNjY2LCAzMzY3NywgMzM2ODgsIDMzNzAwLCAzMzcwNCwgCisgICAgMzM3MTEsIDMzNzE4LCAzMzcyNSwgMzM3MzAsIDMzNzM0LCA2MjI0LCA5NjMsIDIzMTUwLCAzMzc0MiwgMzM3NDcsIDMzNzUxLCAKKyAgICAzMzc1NiwgMzM3NjAsIDMzNzY2LCAzMzc3MSwgMzM3NzcsIDMzNzgyLCAzMzc4OCwgMzM3OTMsIDMzNzk5LCAzMzgwNCwgCisgICAgMzM4MTAsIDMzODE2LCAzMzgyMiwgMzM4MjcsIDMzNzgzLCAzMzc4OSwgMzM4MzEsIDMzODM2LCAzMzg0MiwgMzM4NDcsIAorICAgIDMzODUzLCAzMzg1OCwgMzM4NjQsIDMzODY5LCAzMzc5NCwgMTE0MTIsIDMzODczLCAzMzgwNSwgMzM4MTEsIDMzODE3LCAKKyAgICAyODc0LCAzNTIyLCAzMzg3OSwgMzM4ODIsIDMzODg3LCAzMzg5MywgMzM4OTksIDMzOTA1LCAzMzkxMiwgMzM5MTgsIAorICAgIDMzOTI0LCAzMzkzMCwgMzM5MzYsIDMzOTQyLCAzMzk0OCwgMzM5NTQsIDMzOTYwLCAzMzk2NiwgMzM5NzIsIDMzOTc4LCAKKyAgICAzMzk4NCwgMzM5OTEsIDMzOTk3LCAzNDAwMywgMzQwMDksIDM0MDE1LCAzNDAyMSwgMzQwMjQsIDM0MDI5LCAzNDAzMiwgCisgICAgMzQwMzksIDM0MDQ0LCAzNDA1MiwgMzQwNTcsIDM0MDYyLCAzNDA2OCwgMzQwNzMsIDM0MDc4LCAzNDA4MiwgMzQwODcsIAorICAgIDM0MDkzLCAzNDA5OCwgMzQxMDQsIDM0MTA5LCAzNDExNSwgMzQxMjAsIDM0MTI2LCAzNDEzMiwgMzQxMzYsIDM0MTQxLCAKKyAgICAzNDE0NiwgMzQxNTEsIDM0MTU2LCAzNDE2MCwgMzQxNjUsIDM0MTcwLCAzNDE3NSwgMzQxODEsIDM0MTg3LCAzNDE5MywgCisgICAgMzQxOTksIDM0MjA0LCAzNDIwOCwgMzQyMTEsIDM0MjE3LCAzNDIyMywgMzQyMzIsIDM0MjQwLCAzNDI0NywgMzQyNTIsIAorICAgIDM0MjU2LCAzNDI2MCwgMzQyNjUsIDE2NjUzLCAzNDI3MCwgMzQyNzgsIDM0Mjg0LCAzODY1LCAxMzM5LCAzNDI4OSwgCisgICAgMzQyOTMsIDgzODMsIDM0Mjk5LCAzNDMwNSwgMzQzMTIsIDgzOTIsIDM0MzE2LCAzNDMyMiwgMzQzMjksIDM0MzM1LCAKKyAgICAzNDM0NCwgMzQzNTIsIDkyOTksIDM0MzY0LCAzNDM2OCwgMzQzNzUsIDM0MzgxLCAzNDM4NiwgMzQzOTAsIDM0Mzk0LCAKKyAgICAzNDM5NywgMzQ0MDcsIDM0NDE2LCAzNDQyNCwgMzM3ODQsIDM0NDI5LCAzNDQzOSwgMzQ0NDksIDM0NDU5LCAzNDQ2NSwgCisgICAgMzQ0NzAsIDM0NDgwLCAzNDQ4NSwgMzQ0OTgsIDM0NTEyLCAzNDUyMywgMzQ1MzUsIDM0NTQ3LCAzNDU2MSwgMzQ1NzQsIAorICAgIDM0NTg2LCAzNDU5OCwgMTYwMTYsIDM0NjEyLCAzNDYxNywgMzQ2MjIsIDM0NjI2LCAzNDYzMCwgMzQ2MzQsIDE3NzYsIAorICAgIDI5NTQ1LCAzNDYzOCwgMzQ2NDMsIDMzODMyLCAzNDY0OCwgMzQ2NTEsIDM0NjU2LCAzNDY2MSwgMzQ2NjYsIDM0NjcyLCAKKyAgICAzNDY3OCwgMTEwNzIsIDM0NjgzLCAzNDY4OSwgMzQ2OTYsIDE3MjY2LCAzNDcwMiwgMzQ3MDcsIDM0NzEyLCAzNDcxNiwgCisgICAgMzQ3MjEsIDM0NzI2LCAzMzgzNywgMzQ3MzEsIDM0NzM2LCAzNDc0MSwgMzQ3NDcsIDMzODQzLCAzNDc1MiwgMzQ3NTUsIAorICAgIDM0NzYyLCAzNDc3MCwgMzQ3NzYsIDM0NzgyLCAzNDc4OCwgMzQ3OTksIDM0ODA0LCAzNDgxMSwgMzQ4MTgsIDM0ODI1LCAKKyAgICAzNDgzMywgMzQ4NDIsIDM0ODUxLCAzNDg1NywgMzQ4NjMsIDM0ODcxLCAzMzg0OCwgMzQ4NzYsIDM0ODgyLCAzNDg4OCwgCisgICAgMzM4NTQsIDM0ODkzLCAzNDg5OCwgMzQ5MDYsIDM0OTE0LCAzNDkyMCwgMzQ5MjcsIDM0OTMzLCAzNDk0MCwgMzQ5NDcsIAorICAgIDM0OTUzLCAzNDk2MSwgMzQ5NzEsIDM0OTc4LCAzNDk4NCwgMzQ5ODksIDM0OTk1LCAzNTAwMCwgMzUwMDUsIDM1MDEyLCAKKyAgICAzNTAyMSwgMzUwMjksIDM1MDM0LCAzNTA0MCwgMzUwNDcsIDM1MDU1LCAzNTA2MSwgMzUwNjYsIDM1MDcyLCAzNTA4MSwgCisgICAgMzUwODgsIDMwNDA5LCAzNTA5NCwgMzUwOTgsIDM1MTAzLCAzNTExMiwgMzUxMTcsIDM1MTIyLCAzNTEyNywgMTM2NTgsIAorICAgIDM1MTM1LCAzNTE0MCwgMzUxNDUsIDM1MTUwLCAzNTE1NCwgMzUxNTksIDM1MTY0LCAzNTE3MSwgMzUxNzYsIDM1MTgxLCAKKyAgICAzNTE4NiwgMzM4NTksIDIzMDg3LCAzNTE5MiwgMjU0MywgMTU1LCAzNTE5NSwgMzUxOTgsIDM1MjAyLCAzNTIwNiwgMzUyMTYsIAorICAgIDM1MjI0LCAzNTIzMSwgMzUyMzUsIDM1MjM4LCAzNTI0NiwgMzUyNTMsIDM1MjYwLCAzNTI2OSwgMzUyNzMsIDM1Mjc2LCAKKyAgICAzNTI4MiwgMzUyODYsIDM1Mjk0LCAzNTMwMiwgMzUzMDYsIDM1MzEwLCAzNTMxMywgMzUzMTksIDM1MzI2LCAzNTMzMCwgCisgICAgMzUzMzQsIDM1MzQxLCAzNTM0OSwgMzM3OTUsIDM1MzU2LCAzNTM2NCwgMzUzNjksIDExMTMyLCA2MDAsIDM3NSwgMzUzODEsIAorICAgIDM1Mzg2LCAzNTM5MSwgMzUzOTcsIDM1NDAyLCAzNTQwNywgMzg4NiwgMzU0MTIsIDM1NDE1LCAzNTQyMCwgMzU0MjUsIAorICAgIDM1NDMwLCAzNTQzNSwgMzU0NDAsIDM1NDQ3LCAyNDU2NSwgMzU0NTIsIDM1NDU3LCAzNTQ2MiwgMzU0NjcsIDM1NDcyLCAKKyAgICAzNTQ3OCwgMzU0ODMsIDM1NDg5LCAzNDAzNSwgMzU0OTUsIDM1NTAwLCAzNTUwNiwgMzU1MTIsIDM1NTIyLCAzNTUyNywgCisgICAgMzU1MzIsIDM1NTM2LCAzNTU0MSwgMzU1NDYsIDM1NTUxLCAzNTU1NiwgMzU1NjksIDM1NTc0LCAyNDIyOCwgMTg0MTksIAorICAgIDM4OTksIDM1NTc4LCAzNTU4NCwgMzU1ODksIDM1NTk0LCAzNTYwMCwgMzU2MDUsIDM1NjEwLCAzNTYxNCwgMzU2MTksIAorICAgIDM1NjI0LCAzNTYzMCwgMzU2MzUsIDM1NjQwLCAxMzQ0LCAzNTY0NCwgMzU2NDksIDM1NjU0LCAzNTY1OSwgMzU2NjMsIAorICAgIDM1NjY4LCAzNTY3MywgMzU2NzgsIDM1Njg0LCAzNTY5MCwgMzU2OTUsIDM1Njk5LCAzNTcwMywgMzU3MDgsIDM1NzEzLCAKKyAgICAzNTcxOCwgMzU3MjIsIDM1NzMwLCAzNTczNCwgMzU3NDAsIDM1NzQ0LCAzNTc1MSwgMzU3NjAsIDE4MjAzLCAzMzgwNiwgCisgICAgMzU3NjYsIDM1NzczLCAzNTc4MSwgMzU3ODgsIDM1Nzk0LCAzNTgwNywgMzU4MTksIDM1ODI0LCAzNTgzMCwgMzU4MzQsIAorICAgIDI4MDEsIDM1ODM4LCAzNTg0MiwgMzUzMjEsIDM1ODUxLCAzNTg2MiwgMzU4NjcsIDMwNDcyLCAzNTg3MiwgMzU4NzcsIAorICAgIDM1ODgxLCAzNTg4NiwgMjQ0NTgsIDM1ODkwLCAzNTg5NCwgMzU4OTksIDMzODEyLCAyMzE3NywgMzU5MDMsIDM1OTA4LCAKKyAgICAzNTkxNCwgMzU5MTksIDM1OTIzLCAzNTkyNywgMzU5MzAsIDM1OTM0LCAzNTk0MCwgMzU5NDksIDM1OTYwLCAzNTk3MiwgCisgICAgMzM4MTgsIDM1OTc3LCAzNTk4MCwgMzU5ODQsIDM1OTg4LCA0MTQsIDM1OTkzLCAzNTk5OCwgMzYwMDMsIDM2MDA4LCAKKyAgICAzNjAxMywgMzYwMTgsIDM2MDI0LCAzNjAyOSwgMzYwMzQsIDM2MDQwLCAzNjA0NSwgMzYwNTEsIDM2MDU2LCAzNjA2MiwgCisgICAgMzYwNjcsIDM2MDcyLCAzNjA3NywgMzYwODIsIDM2MDg3LCAzNjA5MiwgMzYwOTcsIDM2MTAyLCAzNjEwOCwgMzYxMTMsIAorICAgIDM2MTE4LCAzNjEyMywgMzYxMjgsIDM2MTMzLCAzNjEzOCwgMzYxNDMsIDM2MTQ5LCAzNjE1NSwgMzYxNjAsIDM2MTY1LCAKKyAgICAzNjE3MCwgMzYxNzUsIDM2MTgwLCAzNjE4NSwgMzYxOTAsIDM2MTk1LCAzNjIwMCwgMzYyMDUsIDM2MjEwLCAzNjIxNSwgCisgICAgMzYyMjAsIDM2MjI1LCAzNjIzMCwgMzYyMzUsIDM2MjQwLCAzNjI0NSwgMzYyNTEsIDMyNiwgOSwgMzYyNTYsIDM2MjYwLCAKKyAgICAzNjI2NCwgMzYyNzIsIDM2Mjc2LCAzNjI4MCwgMzYyODMsIDM2Mjg2LCAzNjI4OCwgMzYyOTMsIDM2Mjk3LCAzNjMwMiwgCisgICAgMzYzMDYsIDM2MzExLCAzNjMxNSwgMzYzMjAsIDM2MzI0LCAzNjMyNywgMzYzMjksIDM2MzMzLCAzNjMzOCwgMzYzNDIsIAorICAgIDM2MzUzLCAzNjM1NiwgMzYzNTgsIDM2MzYyLCAzNjM3NCwgMzYzODMsIDM2Mzg3LCAzNjM5MSwgMzYzOTcsIDM2NDAyLCAKKyAgICAzNjQxMSwgMzY0MTcsIDM2NDIyLCAzNjQyNywgMzY0MzEsIDM2NDM1LCAzNjQ0MCwgMzY0NDcsIDM2NDUyLCAzNjQ1OCwgCisgICAgMzY0NjMsIDM2NDY3LCAzNjQ3NCwgMjc5NzYsIDI3OTg2LCAzNjQ3OCwgMzY0ODMsIDM2NDg4LCAzNjQ5MywgMzY1MDAsIAorICAgIDM2NTA0LCAzNjUxMSwgMzY1MTcsIDg1MzIsIDM2NTIxLCAzNjUzMCwgMzY1MzgsIDM2NTUzLCAzNjU2NywgMzY1NzYsIAorICAgIDM2NTg0LCAzNjU5NSwgMzY2MDQsIDM2NjA5LCAzNjYxNiwgNzU4MCwgMzY2MjYsIDM2NjMxLCAzNjYzNiwgMzY2NDAsIAorICAgIDM2NjQzLCAzNjY0OCwgMzY2NTIsIDM2NjU3LCAzNjY2MSwgMzY2NjgsIDM2NjczLCAzNjY3OCwgMzY2ODMsIDk0NzQsIAorICAgIDM2NjkzLCAzNjY5NSwgMzY2OTgsIDM2NzAxLCAzNjcwNSwgMzY3MTEsIDM2NzE1LCAzNjcyMCwgMzY3MjUsIDM2NzQzLCAKKyAgICAzNjc1NywgMzY3NzYsIDM2NzkzLCAzNjgwMiwgMzY4MTAsIDM2ODE1LCAzNjgyMCwgMTQ2NywgMzY4MjYsIDM2ODMyLCAKKyAgICAzNjgzNywgMzY4NDcsIDM2ODU2LCAzNjg2NCwgMzY4NjksIDM2ODc1LCAzNjg4MCwgMzY4ODksIDM2OTAwLCAzNjkwNSwgCisgICAgMzY5MTIsIDM2OTE4LCAzNjkyMiwgMzY5MjksIDM2OTM3LCAzNjk0NCwgMzY5NTcsIDM2OTY1LCAzNjk2OSwgMzY5NzksIAorICAgIDM2OTg0LCAzNjk4OCwgMzY5OTYsIDM3MDA0LCAzNzAwOSwgMzcwMTMsIDM3MDE3LCAzNzAyNiwgMzcwMzIsIDM3MDM3LCAKKyAgICAzNzA0NSwgMzcwNTUsIDM3MDY0LCAzNzA3MywgMzcwODIsIDM3MDkzLCAzNzEwMSwgMzcxMTIsIDM3MTIxLCAzNzEyOCwgCisgICAgMzcxMzQsIDM3MTM5LCAzNzE1MCwgMzcxNjEsIDM3MTY2LCAzNzE3MCwgMzcxNzMsIDM3MTc3LCAzNzE4NSwgMzcxOTEsIAorICAgIDM3MjAyLCAzNzIxMywgMzcyMjQsIDM3MjM1LCAzNzI0NiwgMzcyNTcsIDM3MjY4LCAzNzI3OSwgMzcyOTEsIDM3MzAzLCAKKyAgICAzNzMxNSwgMzczMjcsIDM3MzM5LCAzNzM1MSwgMzczNjMsIDM3MzcyLCAzNzM3NiwgMzczODQsIDM3MzkwLCAzNzM5NiwgCisgICAgMzc0MDMsIDM3NDA5LCAzNzQxNCwgMzc0MjAsIDI0NDIsIDM3NDI0LCAzNzQyNiwgMzc0MzEsIDM3NDM2LCAzNzQ0MSwgCisgICAgMzc0NDQsIDM3NDQ2LCAzNzQ1MCwgMzc0NTMsIDM3NDYwLCAzNzQ2NCwgMTA3NjIsIDM3NDY4LCAzNzQ3NCwgMzc0ODQsIAorICAgIDM3NDg5LCAzNzQ5NSwgMzc0OTksIDM3NTA0LCAzNzUxNywgMjg0MTcsIDM3NTIzLCAzNzUzMiwgMzc1NDEsIDE5MjgxLCAKKyAgICAzNzU0OCwgMzc1NTcsIDM0NDQ1LCAzNzU2NSwgMzc1NzAsIDM3NTc0LCAzNzU4MywgMzc1OTEsIDM3NTk4LCAzNzYwMywgCisgICAgMzc2MDcsIDM3NjEyLCAzNzYxNywgMzc2MjUsIDM3NjI5LCAzNzYzNywgMzc2NDMsIDM3NjQ5LCAzNzY1NCwgMzc2NTksIAorICAgIDM3NjYzLCAzNzY2NiwgMzc2NzEsIDM3Njg0LCAzNzcwMCwgMjUwNTUsIDM3NzE3LCAzNzcyOSwgMzc3NDYsIDM3NzU4LCAKKyAgICAzNzc3MiwgMjUwNzIsIDI1MDkxLCAzNzc4NCwgMzc3OTYsIDI3MDgsIDM3ODEwLCAzNzgxNSwgMzc4MjAsIDM3ODI1LCAKKyAgICAzNzgyOSwgMzc4MzYsIDM3ODQ4LCAzNzg1NSwgMzc4NjQsIDM3ODY3LCAzNzg3OCwgMzc4ODksIDM3ODk0LCAzNDg2OCwgCisgICAgODkzLCAzNzg5OCwgMzc5MDIsIDM3OTA2LCAzNzkwOSwgMzc5MTQsIDM3OTE5LCAzNzkyNSwgMzc5MzAsIDM3OTM1LCAKKyAgICAzNzk0MSwgMzc5NDcsIDM3OTUyLCAzNzk1NiwgMzc5NjEsIDM3OTY2LCAzNzk3MSwgMzc5NzUsIDM3OTc4LCAzNzk4NCwgCisgICAgMzc5ODksIDM3OTk0LCAzNzk5OSwgMzgwMDMsIDM4MDA4LCAzODAxNCwgMzgwMjIsIDI4NjY5LCAzODAyNywgMzgwMzIsIAorICAgIDM4MDM5LCAzODA0NSwgMzgwNTEsIDM4MDU2LCAzODA2NCwgMjQ1NzQsIDM4MDcxLCAzODA3NiwgMzgwODEsIDM4MDg2LCAKKyAgICAzODA5MCwgMzgwOTMsIDM4MDk4LCAzODEwMiwgMzgxMDYsIDM4MTEzLCAzODExOSwgMzgxMjUsIDM4MTMxLCAzODEzOCwgCisgICAgMzgxNDMsIDM4MTQ5LCAzNjk5OSwgMzgxNTMsIDM4MTU3LCAzODE2MiwgMzgxNzUsIDM4MTgwLCAzODE4NiwgMzgxOTQsIAorICAgIDM4MjAxLCAzODIwOSwgMzgyMTksIDM4MjI1LCAzODIzMSwgMzgyMzcsIDM4MjQxLCAzODI1MCwgMzgyNTgsIDM4MjY1LCAKKyAgICAzODI3MCwgMzgyNzUsIDExNDM1LCAzODI4MCwgMzgyODcsIDM4MjkzLCAzODMwMywgMzgzMDgsIDM4MzE0LCAzODMyMiwgCisgICAgMzc3NCwgMzgzMjksIDM4MzM2LCAzODM0MiwgMzgzNDksIDM3ODAsIDM4MzUzLCAzODM1OCwgMzgzNjksIDM4Mzc2LCAKKyAgICAzODM4MiwgMzgzOTEsIDM4Mzk1LCA0MjU4LCAzODM5OCwgMzg0MDUsIDM4NDExLCAzODQxNywgMzg0MjUsIDM4NDM1LCAKKyAgICAzMTY2MiwgMzg0NDIsIDM4NDUwLCAzODQ1NiwgMzg0NjEsIDM4NDY3LCAzODQ3MiwgMzg0NzYsIDI4MjYwLCAzODQ4MiwgCisgICAgMzg0ODksIDM4NDk1LCAzODUwNCwgMzg1MTEsIDI1NzkxLCAzODUxNywgMzg1MjIsIDM4NTI2LCAzODUzNCwgMzg1NDIsIAorICAgIDEwNDI4LCA2MTk5LCAzODU0OSwgMzg1NTMsIDM4NTU1LCAzODU1OSwgMzg1NjQsIDM4NTY2LCAzODU3MSwgMzg1NzcsIAorICAgIDM4NTgyLCAzODU4NywgMzg1OTQsIDM1NDQzLCAzODYwMCwgMzg2MDUsIDM4NjA5LCAzODYxNCwgMzg2MTgsIDM4NjI3LCAKKyAgICAzODYzMSwgMzg2MzcsIDM4NjQ0LCAzODY1MCwgMzg2NTcsIDM4NjYyLCAzODY3MSwgMzg2NzYsIDM4NjgwLCAzODY4NSwgCisgICAgMzg2OTIsIDM4NzAwLCAzODcwOCwgMzg3MTMsIDIzMjMzLCAzODcxNywgMzg3MjAsIDM4NzI0LCAzODcyOCwgMTE4MjMsIAorICAgIDkwNywgMzg3MzIsIDM4NzM3LCAzODc0NSwgMzg3NDksIDM4NzU4LCAzODc2NSwgMzg3NjksIDM4NzczLCAzODc4MSwgCisgICAgMzg3ODgsIDM4Nzk4LCAzODgwMiwgMzg4MDYsIDM4ODE0LCAzODgyMiwgMzg4MjgsIDM4ODMzLCAzODg0MiwgMTQ2NDAsIAorICAgIDM4ODQ4LCAzODg1NywgMzg4NjIsIDM4ODY5LCAzODg3NiwgMzg4ODQsIDM4ODkxLCAzODg5OSwgMzg5MDcsIDM4OTEyLCAKKyAgICAzODkxOSwgMzg5MjYsIDM4OTMzLCAzODk0MCwgMzg5NDcsIDM4OTUyLCAzODk1OSwgMzg5NjUsIDM4OTgyLCAzODk5MCwgCisgICAgMzkwMDAsIDM5MDA4LCAzOTAxNSwgNDIyLCAzOTAxOSwgMzkwMjUsIDM5MDI5LCAzOTAzNCwgMzY2MDAsIDM5MDQwLCAKKyAgICAzOTA0MywgMzkwNDcsIDM5MDU4LCAzOTA2NiwgMzc4NSwgMzkwNzQsIDM5MDgwLCAzOTA4NiwgMzkwOTYsIDM5MTA1LCAKKyAgICAzOTExNSwgMzkxMjIsIDM5MTI4LCAzOTEzMywgMzc5MSwgMzc5NywgMzkxNDIsIDM5MTQ5LCAzOTE1NywgMzkxNjIsIAorICAgIDM5MTY2LCAzOTE3MywgMzkxODEsIDM5MTg4LCAzOTE5NCwgMzkyMDMsIDM5MjEzLCAzOTIxOSwgMzkyMjcsIDM5MjM2LCAKKyAgICAzOTI0MywgMzkyNTEsIDM5MjU4LCAyMzkzNywgMzkyNjIsIDM5MjY5LCAzOTI3NSwgMzkyODUsIDM5Mjk0LCAzOTMwMiwgCisgICAgMzkzMTMsIDM5MzE3LCAzOTMyNywgMzkzMzMsIDM5MzQwLCAzOTM0OCwgMzkzNTcsIDM5MzY2LCAzOTM3NiwgMzkzODcsIAorICAgIDM5Mzk0LCAzOTM5OSwgMzk0MDYsIDMwNzcsIDM5NDE0LCAzOTQyMCwgMzk0MjUsIDM5NDMxLCAzOTQzNywgMzk0NDIsIAorICAgIDM5NDU1LCAzOTQ2OCwgMzk0ODEsIDM5NDg4LCAzOTQ5NCwgMzk1MDIsIDM5NTEwLCAzOTUxNSwgMzk1MTksIDE0MzYsIAorICAgIDM5NTIzLCAzOTUyNywgMzk1MzEsIDM5NTM1LCAzOTUzOSwgMzk1NDMsIDM5NTQ3LCAzOTU1MSwgMzk1NTUsIDM5NTU5LCAKKyAgICAzOTU2MywgMzk1NjcsIDM5NTcxLCAzOTU3NSwgMzk1NzksIDM5NTgzLCAzOTU4NywgMzk1OTEsIDM5NTk1LCAzOTU5OSwgCisgICAgMzk2MDMsIDM5NjA3LCAzOTYxMSwgMzk2MTUsIDM5NjE5LCAzOTYyMywgMzk2MjcsIDM5NjMxLCAzOTYzNSwgMzk2MzksIAorICAgIDM5NjQzLCAzOTY0NywgMzk2NTEsIDM5NjU1LCAzOTY1OSwgMzk2NjMsIDM5NjY3LCAzOTY3MSwgMzk2NzUsIDM5Njc5LCAKKyAgICAzOTY4MywgMzk2ODcsIDM5NjkxLCAzOTY5NSwgMzk2OTksIDM5NzAzLCAzOTcwNywgMzk3MTEsIDM5NzE1LCAzOTcxOSwgCisgICAgMzk3MjMsIDM5NzI3LCAzOTczMSwgMzk3MzUsIDM5NzM5LCAzOTc0MywgMzk3NDcsIDM5NzUxLCAzOTc1NSwgMzk3NTksIAorICAgIDM5NzYzLCAzOTc2NywgMzk3NzEsIDM5Nzc1LCAzOTc3OSwgMzk3ODMsIDM5Nzg3LCAzOTc5MSwgMzk3OTUsIDM5Nzk5LCAKKyAgICAzOTgwMywgMzk4MDcsIDM5ODExLCAzOTgxNSwgMzk4MTksIDM5ODIzLCAzOTgyNywgMzk4MzEsIDM5ODM1LCAzOTgzOSwgCisgICAgMzk4NDMsIDM5ODQ3LCAzOTg1MSwgMzk4NTUsIDM5ODU5LCAzOTg2MywgMzk4NjcsIDM5ODcxLCAzOTg3NSwgMzk4NzksIAorICAgIDM5ODgzLCAzOTg4NywgMzk4OTEsIDM5ODk1LCAzOTg5OSwgMzk5MDMsIDM5OTA3LCAzOTkxMSwgMzk5MTUsIDM5OTE5LCAKKyAgICAzOTkyMywgMzk5MjcsIDM5OTMxLCAzOTkzNSwgMzk5MzksIDM5OTQzLCAzOTk0NywgMzk5NTEsIDM5OTU1LCAzOTk1OSwgCisgICAgMzk5NjMsIDM5OTY3LCAzOTk3MSwgMzk5NzUsIDM5OTc5LCAzOTk4MywgMzk5ODcsIDM5OTkxLCAzOTk5NSwgMzk5OTksIAorICAgIDQwMDAzLCA0MDAwNywgNDAwMTEsIDQwMDE1LCA0MDAxOSwgNDAwMjMsIDQwMDI3LCA0MDAzMSwgNDAwMzUsIDQwMDM5LCAKKyAgICA0MDA0MywgNDAwNDcsIDQwMDUxLCA0MDA1NSwgNDAwNTksIDQwMDYzLCA0MDA2NywgNDAwNzEsIDQwMDc1LCA0MDA3OSwgCisgICAgNDAwODMsIDQwMDg3LCA0MDA5MSwgNDAwOTUsIDQwMDk5LCA0MDEwMywgNDAxMDcsIDQwMTExLCA0MDExNSwgNDAxMTksIAorICAgIDQwMTIzLCA0MDEyNywgNDAxMzEsIDQwMTM1LCA0MDE0MCwgNDAxNDQsIDQwMTQ5LCA0MDE1MywgNDAxNTgsIDQwMTYyLCAKKyAgICA0MDE2NywgNDAxNzEsIDQwMTc3LCA0MDE4MiwgNDAxODYsIDQwMTkxLCA0MDE5NSwgNDAyMDAsIDQwMjA0LCA0MDIwOSwgCisgICAgNDAyMTMsIDQwMjE4LCA0MDIyMiwgNDAyMjcsIDQwMjMxLCA0MDIzNiwgNDAyNDAsIDQwMjQ2LCA0MDI1MiwgNDAyNTcsIAorICAgIDQwMjYxLCA0MDI2NiwgNDAyNzAsIDQwMjc2LCA0MDI4MSwgNDAyODUsIDQwMjkwLCA0MDI5NCwgNDAyOTksIDQwMzAzLCAKKyAgICA0MDMwOSwgNDAzMTQsIDQwMzE4LCA0MDMyMywgNDAzMjcsIDQwMzMyLCA0MDMzNiwgNDAzNDEsIDQwMzQ1LCA0MDM1MSwgCisgICAgNDAzNTYsIDQwMzYwLCA0MDM2NSwgNDAzNjksIDQwMzc1LCA0MDM4MCwgNDAzODQsIDQwMzg5LCA0MDM5MywgNDAzOTgsIAorICAgIDQwNDAyLCA0MDQwNywgNDA0MTEsIDQwNDE2LCA0MDQyMCwgNDA0MjYsIDQwNDMxLCA0MDQzNSwgNDA0NDEsIDQwNDQ2LCAKKyAgICA0MDQ1MCwgNDA0NTYsIDQwNDYxLCA0MDQ2NSwgNDA0NzAsIDQwNDc0LCA0MDQ3OSwgNDA0ODMsIDQwNDg5LCA0MDQ5NSwgCisgICAgNDA1MDEsIDQwNTA3LCA0MDUxMywgNDA1MTksIDQwNTI1LCA0MDUzMSwgNDA1MzYsIDQwNTQwLCA0MDU0NSwgNDA1NDksIAorICAgIDQwNTU1LCA0MDU2MCwgNDA1NjQsIDQwNTY5LCA0MDU3MywgNDA1NzgsIDQwNTgyLCA0MDU4NywgNDA1OTEsIDQwNTk2LCAKKyAgICA0MDYwMCwgNDA2MDUsIDQwNjA5LCA0MDYxNCwgNDA2MTgsIDQwNjI0LCA0MDYyOSwgNDA2MzMsIDQwNjM4LCA0MDY0MiwgCisgICAgNDA2NDgsIDQwNjU0LCA0MDY1OSwgMTIyLCA2MywgNDA2NjMsIDQwNjY1LCA0MDY2OSwgNDA2NzMsIDQwNjc3LCA0MDY4MiwgCisgICAgNDA2ODYsIDQwNjkwLCA0MDY5NSwgMTAzNDEsIDQwNzAwLCA0MDcwNiwgMTczNywgNjYyMSwgNDA3MTIsIDQwNzE1LCAKKyAgICA0MDcyMCwgNDA3MjQsIDQwNzI5LCA0MDczMywgNDA3MzcsIDQwNzQyLCAxMTIxOSwgNDA3NDYsIDQwNzUwLCA0MDc1NCwgCisgICAgNTQwLCA0MDc1OCwgMTY5MTQsIDQwNzYzLCA0MDc2NywgNDA3NzIsIDQwNzc3LCA0MDc4MiwgNDA3ODYsIDQwNzkzLCAKKyAgICAyODQ0MSwgNDA3OTksIDQwODAyLCA0MDgwNiwgNDA4MTEsIDQwODE3LCA0MDgyMSwgNDA4MjQsIDQwODMyLCA0MDgzOCwgCisgICAgNDA4NDMsIDQwODQ3LCA0MDg1MCwgNDA4NTQsIDQwODYwLCA0MDg2NCwgNDA4NjgsIDM1NzMsIDM1NzgsIDMxODg2LCAKKyAgICA0MDg3MSwgNDA4NzUsIDQwODc5LCA0MDg4MywgNDA4ODcsIDQwODk1LCA0MDkwMiwgNDA5MDYsIDE0NTkwLCA0MDkxMywgCisgICAgNDA5MTgsIDQwOTMyLCA0MDkzOSwgNDA5NTAsIDM0MSwgNDA5NTUsIDQwOTU5LCA0MDk2NSwgNDA5NzcsIDQwOTgzLCAKKyAgICA0MDk4OSwgNDA5OTMsIDMxOTIzLCA0MTAwMiwgNDEwMDgsIDQxMDE3LCA0MTAyMSwgNDEwMjUsIDQxMDMwLCA0MTAzNiwgCisgICAgNDEwNDEsIDQxMDQ1LCA0MTA1MCwgNDEwNTQsIDQxMDU4LCA0MTA2NSwgNDEwNzEsIDQxMDc2LCA0MTA4NywgNDExMDIsIAorICAgIDQxMTE3LCA0MTEzMiwgNDExNDgsIDQxMTY2LCAxMTE2OSwgNDExODAsIDQxMTg3LCA0MTE5MSwgNDExOTQsIDQxMjAzLCAKKyAgICA0MTIwOCwgNDEyMTIsIDQxMjIwLCAxNzQ2OSwgNDEyMjgsIDQxMjMyLCA0MTI0MiwgNDEyNTMsIDMxODU2LCA0MTI2NiwgCisgICAgNDEyNzAsIDQxMjc5LCA0MTI5NywgNDEzMTYsIDQxMzI0LCAxMDYyMywgMTEzMzIsIDQxMzI4LCAyNDQ3MCwgNDEzMzEsIAorICAgIDMyODI0LCA0MTMzNiwgMTA2MjIsIDQxMzQxLCA0MTM0NywgNDEzNTIsIDQxMzU4LCA0MTM2MywgNDEzNjksIDQxMzc0LCAKKyAgICA0MTM4MCwgNDEzODUsIDQxMzkxLCA0MTM5NywgNDE0MDMsIDQxNDA4LCA0MTM2NCwgNDEzNzAsIDQxMzc1LCA0MTM4MSwgCisgICAgNDEzODYsIDQxMzkyLCA0MTM5OCwgODU0NSwgNDEwMywgNDE0MTIsIDQxNDIwLCA0MTQyNCwgNDE0MjcsIDQxNDM0LCAKKyAgICA0MTQzOCwgNDE0NDMsIDQxNDQ4LCA0MTQ1NSwgNDE0NjEsIDQxNDY3LCA0MTQ3MiwgMTYyOTcsIDQxNDc2LCAyODI3NywgCisgICAgNDE0ODAsIDQxNDg0LCA0MTQ4OCwgNDE0OTQsIDQxNDk4LCAzMDM0OSwgNDE1MDcsIDk2MzQsIDQxNTExLCAxMDAyNywgCisgICAgNDE1MTQsIDQxNTIxLCA0MTUyNywgNDE1MzEsIDEzMTE0LCA0MTUzOCwgNDE1NDQsIDQxNTQ5LCA0MTU1NiwgNDE1NjMsIAorICAgIDQxNTcwLCAzMTA3NiwgODQ0MiwgNDE1NzcsIDQxNTg0LCA0MTU5MSwgNDE1OTcsIDQxNjAyLCA0MTYwOSwgNDE2MjAsIAorICAgIDQxNjI2LCA0MTYzMSwgNDE2MzYsIDQxNjQxLCA0MTY0NSwgNDE2NTAsIDQxNjU3LCA0MTM2NSwgNDE2NjEsIDQxNjcxLCAKKyAgICA0MTY4MCwgNDE2OTEsIDQxNjk3LCA0MTcwNSwgNDE3MTIsIDQxNzE3LCA0MTcyMiwgNDE3MjcsIDQxNzMyLCA0MTczNywgCisgICAgNDE3NDEsIDQxNzQ1LCA0MTc1MiwgNDE3NTgsIDQxNzY2LCAyMzM4LCAxMDg2LCAxMTIzNSwgMTEyNDcsIDExMjUyLCAKKyAgICAxMTI1OCwgNDE3NzUsIDExMjYzLCAxMTI2OCwgMTEyNzQsIDQxNzgwLCA0MTc5MCwgNDE3OTQsIDExMjc5LCA0MTc5OSwgCisgICAgMTg2MTcsIDQxODAyLCA0MTgwNywgNDE4MTEsIDM3ODU5LCA0MTgyMiwgNDE4MjcsIDQxODM0LCA0MTg0MSwgNDE4NDUsIAorICAgIDQxODQ4LCA0MTg1NiwgMTExODIsIDQxODYzLCA0MTg2NiwgNDE4NzIsIDQxODgyLCA2MjUxLCA0MTg5MSwgNDE4OTcsIAorICAgIDQxOTAxLCA0MTkwOSwgNDE5MTMsIDQxOTIzLCA0MTkyOSwgNDE5MzQsIDQxOTQ1LCA0MTk1NCwgNDE5NjMsIDQxOTcyLCAKKyAgICA0MTk4MSwgNDE5OTAsIDQxOTk5LCA0MjAwOCwgNDIwMTQsIDQyMDIwLCA0MjAyNSwgNDIwMzEsIDQyMDM3LCA0MjA0MywgCisgICAgNDIwNDgsIDQyMDUxLCA0MjA1OCwgNDIwNjQsIDQyMDY4LCA0MjA3MywgNDIwODAsIDQyMDg3LCA0MjA5MSwgNDIwOTQsIAorICAgIDQyMTA0LCA0MjExNywgNDIxMjYsIDQyMTM1LCA0MjE0NiwgNDIxNTksIDQyMTcxLCA0MjE4MiwgNDIxOTEsIDQyMjAyLCAKKyAgICA0MjIwNywgNDIyMTYsIDQyMjIxLCAxMTI4NCwgNDIyMjcsIDQyMjM0LCA0MjI0MiwgNDIyNDcsIDQyMjUxLCA0MjI1OCwgCisgICAgNDIyNjUsIDQwNDYsIDI1LCA0MjI2OSwgNDIyNzQsIDE4NDY2LCA0MjI3OCwgNDIyODEsIDQyMjg0LCAzMDUyOSwgNDIyODgsIAorICAgIDMxMDg1LCA0MjI5NiwgNDIzMDAsIDQyMzA0LCA0MjMwNywgNDIzMTMsIDQyMzE5LCA0MjMyNCwgMzM4ODMsIDQyMzMzLCAKKyAgICA0MjM0MSwgNDIzNDcsIDQyMzU0LCAzMDUxMiwgNDIzNTgsIDMwNzMyLCA0MjM2MiwgNDIzNzEsIDQyMzc1LCA0MjM4MywgCisgICAgNDIzODksIDQyMzk1LCA0MjQwMCwgNDI0MDQsIDMxMTA0LCA0MjQxMCwgNDI0MTMsIDQyNDIxLCA0MjQyOSwgNDM5OSwgCisgICAgNDI0MzUsIDQyNDM5LCA0MjQ0NCwgNDI0NTEsIDQyNDU3LCA0MjQ2MiwgNDI0NjcsIDQyNDcxLCA0MjQ3NywgNDI0ODIsIAorICAgIDQyNDg4LCA0MzExLCA4NDgsIDQyNDk1LCA0MjQ5OSwgNDI1MDIsIDE2Nzg3LCA0MjUxNCwgNDI1MjIsIDQyNTMwLCA0MjUzOCwgCisgICAgNDI1NDYsIDQyNTUzLCA0MjU2MSwgNDI1NjksIDQyNTc2LCA0MjU4NCwgNDI1OTIsIDQyNjAwLCA0MjYwOCwgNDI2MTYsIAorICAgIDQyNjI0LCA0MjYzMiwgNDI2NDAsIDQyNjQ4LCA0MjY1NiwgNDI2NjQsIDQyNjcxLCA0MjY3OSwgNDI2ODcsIDQyNjk1LCAKKyAgICA0MjcwMywgNDI3MTEsIDQyNzE5LCA0MjcyNywgNDI3MzUsIDQyNzQzLCA0Mjc1MSwgNDI3NTksIDQyNzY3LCA0Mjc3NSwgCisgICAgNDI3ODMsIDQyNzkxLCA0Mjc5OSwgNDI4MDcsIDQyODE1LCA0MjgyMywgNDI4MzAsIDQyODM4LCA0Mjg0NSwgNDI4NTMsIAorICAgIDQyODYxLCA0Mjg2OSwgNDI4NzcsIDQyODg1LCA0Mjg5MywgNDI5MDEsIDQyOTA5LCA0MjkyMCwgMjM5NzMsIDQyOTI1LCAKKyAgICA0MjkyOCwgNDI5MzUsIDQyOTM5LCA0Mjk0NSwgNDI5NDksIDQyOTU1LCA0Mjk2MCwgNDI5NjYsIDQyOTcxLCA0Mjk3NiwgCisgICAgNDI5ODAsIDQyOTg0LCA0Mjk4OSwgNDI5OTQsIDQzMDA0LCA0MzAxMCwgNDMwMjMsIDQzMDI5LCA0MzAzNSwgNDMwNDEsIAorICAgIDQzMDQ4LCA0MzA1MywgNDMwNTksIDQzMDY0LCAxODM2MiwgODU2LCA0MzA2OSwgNDMwNzIsIDQzMDc1LCA0MzA3OCwgCisgICAgMzM5NjcsIDMzOTczLCA0MzA4MSwgMzM5NzksIDMzOTkyLCAzMzk5OCwgMzQwMDQsIDQzMDg3LCAzNDAxMCwgMzQwMTYsIAorICAgIDQzMDkzLCA0MzA5OSwgMTgsIDQzMTA3LCA0MzExNCwgNDMxMTgsIDQzMTIyLCA0MzEzMCwgMzQ3NTcsIDQzMTM0LCA0MzEzOCwgCisgICAgNDMxNDUsIDQzMTUwLCA0MzE1NCwgNDMxNTksIDQzMTY1LCA0MzE3MCwgNDMxNzYsIDQzMTgxLCA0MzE4NSwgNDMxODksIAorICAgIDQzMTkzLCA0MzE5OCwgNDMyMDIsIDQzMjA3LCA0MzIxMSwgNDMyMTUsIDQzMjIyLCA0MzIyNywgNDMyMzEsIDQzMjM1LCAKKyAgICA0MzI0MCwgNDMyNDQsIDQzMjQ5LCA0MzI1MywgNDMyNTcsIDQzMjYyLCA0MzI2OCwgMTcwNjAsIDE3MDY1LCA0MzI3MywgCisgICAgNDMyNzcsIDQzMjgwLCA0MzI4NCwgNDMyODgsIDIzMDQ0LCA0MzI5MywgNDMyOTcsIDQzMzAzLCA0MzMxMCwgNDMzMTYsIAorICAgIDQzMzIxLCA0MzMzMSwgNDMzMzYsIDQzMzQ0LCA0MzM0OCwgNDMzNTEsIDM0NzcyLCA0MzM1NSwgNDM3NiwgNDMzNjAsIAorICAgIDQzMzY1LCA0MzM2OSwgNDMzNzQsIDQzMzc4LCA0MzM4MywgMTQ2NTgsIDQzMzk0LCA0MzM5OCwgNDM0MDEsIDQzNDA1LCAKKyAgICA0MzQxMCwgNDM0MTQsIDQzNDE5LCA0MzQyNCwgNDM0MjgsIDQzNDMyLCA0MzQzNiwgNDM0MzksIDQzNDQzLCA4NTY0LCAKKyAgICAxNDY3NCwgNDM0NDYsIDQzNDQ5LCA0MzQ1NSwgNDM0NjAsIDQzNDY2LCA0MzQ3MSwgNDM0NzcsIDQzNDgyLCA0MzQ4OCwgCisgICAgNDM0OTMsIDQzNDk5LCA0MzUwNSwgNDM1MTEsIDQzNTE2LCA0MzUyMCwgNDM1MjQsIDQzNTMzLCA0MzU0OSwgNDM1NjUsIAorICAgIDQzNTc1LCAzMDQxOSwgNDM1ODIsIDQzNTg2LCA0MzU5MSwgNDM1OTYsIDQzNjAwLCA0MzYwNCwgMzkzNjEsIDQzNjEwLCAKKyAgICA0MzYxNSwgNDM2MTksIDQzNjI2LCA0MzYzMSwgNDM2MzYsIDQzNjQwLCA0MzY0NCwgNDM2NTAsIDI5MzQ4LCA0MzY1NCwgCisgICAgMjMzNDAsIDQzNjU5LCA0MzY2NiwgNDM2NzQsIDQzNjgwLCA0MzY4NywgNDM2OTUsIDQzNzAxLCA0MzcwNSwgNDM3MTAsIAorICAgIDQzNzE2LCA0MzcyNCwgNDM3MjksIDQzNzMzLCA0Mzc0MiwgMTAzMjIsIDQzNzUwLCA0Mzc1NCwgNDM3NjIsIDQzNzY5LCAKKyAgICA0Mzc3NCwgNDM3NzksIDQzNzg0LCA0Mzc4OCwgNDM3OTEsIDQzNzk1LCA0Mzc5OCwgNDM4MDIsIDQzODA5LCA0MzgxNCwgCisgICAgNDM4MTgsIDQzODI0LCAyODc0NywgMzQwMzAsIDQzODI4LCA0MzgzNywgNDM4NDUsIDQzODUxLCA0Mzg1OCwgNDM4NjQsIAorICAgIDQzODcwLCA0Mzg3NSwgNDM4NzgsIDQzODgwLCA0Mzg4NywgNDM4OTQsIDQzOTAwLCA0MzkwNCwgNDM5MDcsIDQzOTExLCAKKyAgICA0MzkxNSwgNDM5MTksIDQzOTI0LCA0MzkyOCwgNDM5MzIsIDQzOTM1LCA0MzkzOSwgNDM5NTMsIDI1MTIxLCA0Mzk3MiwgCisgICAgNDM5ODUsIDQzOTk4LCA0NDAxMSwgMjUxMzksIDQ0MDI2LCAxMTUyMCwgNDQwNDEsIDQ0MDQ3LCA0NDA1MSwgNDQwNjEsIAorICAgIDQ0MDY1LCA0NDA2OSwgNDQwNzMsIDQ0MDgwLCA0NDA4NSwgNDQwODksIDQ0MDk2LCA0NDEwMiwgNDQxMDcsIDQ0MTEzLCAKKyAgICA0NDEyMywgNDQxMzUsIDQ0MTQ2LCA0NDE1MSwgNDQxNTgsIDQ0MTYyLCA0NDE2NiwgNDQxNjksIDE3NDkwLCAzODU0LCAKKyAgICA0NDE3NywgMTcwODcsIDQ0MTkwLCA0NDE5NywgNDQyMDQsIDQ0MjA4LCA0NDIxMiwgNDQyMTcsIDQ0MjIzLCA0NDIyOCwgCisgICAgNDQyMzQsIDQ0MjM4LCA0NDI0MiwgNDQyNDUsIDQ0MjUwLCA0NDI1NCwgNDQyNTksIDgxMDYsIDEwMTIsIDQ0MjY0LCAKKyAgICA0NDI2OCwgNDQyNzQsIDQ0MjgzLCA0NDI4OCwgNDQyOTcsIDQ0MzA0LCAzOTIwOSwgNDQzMTAsIDQ0MzE1LCA0NDMxOSwgCisgICAgNDQzMjQsIDQ0MzMxLCA0NDMzNywgNDQzNDEsIDQ0MzQ0LCA0NDM0OCwgNDQzNTMsIDE1OTgxLCA0NDM2MCwgNDQzNjcsIAorICAgIDQ0MzcxLCA0NDM3NCwgNDQzNzksIDQ0Mzg0LCA0NDM5MCwgNDQzOTUsIDQ0NDAwLCA0NDQwNCwgNDQ0MDksIDQ0NDE5LCAKKyAgICA0NDQyNCwgNDQ0MzAsIDQ0NDM1LCA0NDQ0MSwgNDQ0NDYsIDQ0NDUyLCA0NDQ2MiwgNDQ0NjcsIDQ0NDcyLCA0NDQ3NiwgCisgICAgNDQ0ODEsIDc1ODIsIDc1OTQsIDQ0NDg2LCA0NDQ4OSwgNDQ0OTYsIDQ0NTAyLCA0NDUxMSwgOTU2MCwgMzcxMzEsIDQ0NTE5LCAKKyAgICA0NDUyMywgNDQ1MjcsIDM0ODIwLCA0NDUzNSwgNDQ1NDYsIDQ0NTU0LCAzOTQwOSwgNDQ1NjEsIDQ0NTY2LCA0NDU3MSwgCisgICAgNDQ1ODIsIDQ0NTg5LCA0NDYwMCwgMzQ4NDQsIDIzMzUxLCA0NDYwOCwgOTM0LCA0NDYxMywgMTUwMzAsIDQ0NjE5LCAKKyAgICAzMDUwMywgNDQ2MjUsIDQ0NjMwLCA0NDY0MCwgNDQ2NDksIDQ0NjU2LCA0NDY2MiwgNDQ2NjYsIDQ0NjY5LCA0NDY3NiwgCisgICAgNDQ2ODIsIDQ0Njg5LCA0NDY5NSwgNDQ3MDUsIDQ0NzEzLCA0NDcxOSwgNDQ3MjUsIDQ0NzMwLCA0NDczNCwgNDQ3NDEsIAorICAgIDQ0NzQ2LCA0NDc1MiwgNDQ3NTksIDQ0NzY1LCA0MzkyMCwgNDQ3NzAsIDQ0Nzc0LCA1NzEsIDE1MTQ2LCA0NDc4MCwgCisgICAgNDQ3ODUsIDQ0Nzg4LCA0NDc5NCwgNDQ4MDIsIDEzNjEsIDQ0ODA3LCA0NDgxMSwgNDQ4MTYsIDQ0ODIxLCA0NDgyNiwgCisgICAgNDQ4MzMsIDQ0ODM3LCA0NDg0MiwgNDQ4NDgsIDQ0ODUyLCAzNDA0MCwgNDQ4NTcsIDQ0ODYyLCA0NDg3MSwgNDQ4NzgsIAorICAgIDQ0ODg4LCA0NDg5NCwgMzA1NDcsIDQ0OTExLCA0NDkyMCwgNDQ5MjgsIDQ0OTM0LCA0NDkzOSwgNDQ5NDYsIDQ0OTUyLCAKKyAgICA0NDk2MCwgNDQ5NjksIDQ0OTc3LCA0NDk4MSwgNDQ5ODYsIDQ0OTk0LCAzMTU1NiwgMzQ4NTMsIDQ1MDAwLCA0NTAxOSwgCisgICAgMTczOTMsIDQ1MDMzLCA0NTA0OSwgNDUwNjMsIDQ1MDY5LCA0NTA3NCwgNDUwNzksIDQ1MDg0LCA0NTA5MCwgMzQ4NTksIAorICAgIDQ1MDk1LCA0NTA5OCwgNDUxMDUsIDQ1MTEyLCA0NTExNywgNDUxMjEsIDQxMiwgMjk4NCwgNDUxMjgsIDQ1MTMzLCA0NTEzOCwgCisgICAgMjk3MTcsIDQ0OTQ5LCA0NTE0MiwgNDUxNDcsIDQ1MTU1LCA0NTE1OSwgNDUxNjIsIDQ1MTY3LCA0NTE3MywgNDUxNzksIAorICAgIDQ1MTg0LCA0NTE4OCwgMzA2MTQsIDQ1MTkxLCA0NTE5NiwgNDUyMDAsIDQ1MjAzLCA0NTIwOCwgNDUyMTIsIDQ1MjE3LCAKKyAgICA0NTIyMiwgNDUyMjYsIDQ1MjMxLCA0NTIzNSwgNDUyMzksIDQ1MjQzLCAyMzA0MCwgMjMwNTEsIDQ1MjQ4LCA0NTI1MywgCisgICAgNDUyNTksIDQ1MjY0LCA0NTI3MCwgMjkzMDUsIDQ1Mjc1LCA0NTI3OSwgMjMxMzcsIDE3Njk2LCA0NTI4MiwgNDUyODcsIAorICAgIDQ1MjkyLCA0NTI5NywgNDUzMDIsIDQ1MzA3LCA0NTMxMiwgNDUzMTcsIDQ2NSwgNjgsIDM0MDUzLCAzNDA1OCwgMzQwNjMsIAorICAgIDM0MDY5LCAzNDA3NCwgMzQwNzksIDQ1MzIyLCAzNDA4MywgNDUzMjYsIDQ1MzMwLCA0NTMzNCwgMzQwODgsIDM0MDk0LCAKKyAgICA0NTM0OCwgMzQxMDUsIDM0MTEwLCA0NTM1NiwgNDUzNjEsIDM0MTE2LCA0NTM2NiwgNDUzNzEsIDQ1Mzc2LCA0NTM4MSwgCisgICAgNDUzOTAsIDQ1Mzk2LCA0NTQwMiwgNDU0MDgsIDM0MTMzLCA0NTQyMSwgNDU0MzAsIDQ1NDM2LCAzNDEzNywgNDU0NDAsIAorICAgIDM0MTQyLCA0NTQ0NSwgMzQxNDcsIDM0MTUyLCA0NTQ0OCwgNDU0NTMsIDQ1NDU3LCA0NTQ2MywgMzM2ODEsIDQ1NDcwLCAKKyAgICAxNDkwNCwgNDU0NzcsIDQ1NDgyLCAzNDE1NywgNDU0ODYsIDQ1NDkxLCA0NTQ5NiwgNDU1MDEsIDQ1NTA1LCA0NTUxMCwgCisgICAgNDU1MTUsIDQ1NTIxLCA0NTUyNiwgNDU1MzEsIDQ1NTM3LCA0NTU0MywgNDU1NDgsIDQ1NTUyLCA0NTU1NywgNDU1NjIsIAorICAgIDQ1NTY3LCA0NTU3MSwgNDU1NzYsIDQ1NTgxLCA0NTU4NiwgNDU1OTIsIDQ1NTk4LCA0NTYwNCwgNDU2MDksIDQ1NjEzLCAKKyAgICA0NTYxOCwgNDU2MjIsIDM0MTYxLCAzNDE2NiwgMzQxNzEsIDQ1NjI2LCA0NTYzMCwgNDU2MzUsIDQ1NjM5LCAzNDE3NiwgCisgICAgMzQxODIsIDM0MTg4LCAzNDIwMCwgNDU2NTEsIDI4MzE0LCA0NTY1NSwgNDU2NjAsIDQ1NjY0LCA0NTY2OSwgNDU2NzYsIAorICAgIDQ1NjgxLCA0NTY4NiwgNDU2OTEsIDQ1Njk1LCA0NTY5OSwgNDU3MDksIDQ1NzE0LCA0NTcxOSwgNDU3MjMsIDQ1NzI3LCAKKyAgICA0NTczMCwgNDU3MzgsIDM0MjQ4LCA0NTc0MywgMTQ0NiwgNDU3NDksIDQ1NzU0LCA0NTc2MCwgNDU3NjgsIDQ1NzcyLCAKKyAgICA0NTc4MSwgNDU3ODksIDQ1NzkzLCA0NTc5NywgNDU4MDUsIDQ1ODExLCA0NTgxOSwgNDU4MzUsIDQ1ODM5LCA0NTg0MywgCisgICAgNDU4NDcsIDQ1ODUyLCA0NTg1OCwgNDU4NzMsIDM0Mjg1LCAxNzQ1LCAxMzMwOCwgNDU4NzcsIDEzNDAsIDEzNTUsIDQ1ODg5LCAKKyAgICA0NTg5NywgNDU5MDQsIDQ1OTA5LCA0NTkxNiwgNDU5MjEsIDEwMDEyLCAxMDk2LCAyNTI5LCAxMTMxMSwgNDU5MjgsIDk5MTAsIAorICAgIDQ1OTMzLCA0NTkzNiwgNDU5NDUsIDEyNDgsIDQ1OTUwLCA0NDA4NiwgNDU5NTcsIDQ1OTY2LCA0NTk3MSwgNDU5NzUsIAorICAgIDQ1OTgzLCAyNDUyNiwgMjU4MSwgNDU5OTAsIDExNzc2LCA0NjAwMCwgNDYwMDYsIDIzNTYsIDIzNjYsIDQ2MDE1LCA0NjAyNCwgCisgICAgNDYwMzQsIDQ2MDQ1LCAzMzY1LCAzNzQ4NSwgNDYwNTAsIDExMzc1LCA0MDI0LCAxODQwMCwgMTI1MywgNDYwNTQsIDQ2MDYyLCAKKyAgICA0NjA2OSwgNDYwNzQsIDQ2MDc4LCA0NjA4MiwgMjYwMTgsIDQ0MzU1LCAxMTQwMiwgNDYwOTAsIDQ2MDk5LCA0NjEwOCwgCisgICAgNDYxMTYsIDQ2MTIzLCA0NjEzNCwgNDYxMzksIDQ2MTUyLCA0NjE2NSwgNDYxNzcsIDQ2MTg5LCA0NjIwMSwgNDYyMTIsIAorICAgIDQ2MjI1LCA0NjIzNiwgNDYyNDcsIDQ2MjU3LCA0NjI2NSwgNDYyNzMsIDQ2Mjg1LCA0NjI5NywgNDYzMDgsIDQ2MzE3LCAKKyAgICA0NjMyNSwgNDYzMzIsIDQ2MzQ0LCA0NjM1MSwgNDYzNTcsIDQ2MzY2LCA0NjM3MywgNDYzODYsIDQ2MzkxLCA0NjQwMSwgCisgICAgNDY0MDYsIDQ2NDEyLCA0NjQxNywgNDE1MjgsIDQ2NDIxLCA0NjQyOCwgNDY0MzIsIDQ2NDM5LCA0NjQ0NywgNDY0NTQsIAorICAgIDI1NDIsIDQ2NDYxLCA0NjQ3MiwgNDY0ODIsIDQ2NDkxLCA0NjQ5OSwgNDY1MDksIDQ2NTE3LCA0NjUyNiwgNDY1MzYsIAorICAgIDQ2NTQ1LCA0NjU1MCwgNDY1NTYsIDQ2NTYyLCAzODk4LCA0NjU3MywgNDY1ODMsIDQ2NTkyLCA0NjYwMSwgNDY2MDksIAorICAgIDQ2NjE5LCA0NjYyNywgNDY2MzYsIDQ2NjQxLCA0NjY0NiwgNDY2NTEsIDE2NzUsIDQ3LCA0NjY1OSwgNDY2NjcsIDQ2Njc4LCAKKyAgICA0NjY4OSwgMTgwMzksIDQ2Njk5LCA0NjcwMywgNDY3MTAsIDQ2NzE2LCA0NjcyMSwgNDY3MjUsIDQ2NzM2LCA0Njc0NiwgCisgICAgNDY3NTUsIDQ2NzY2LCAxODQzOSwgMTg0NDQsIDQ2NzcxLCA0Njc4MCwgNDY3ODUsIDQ2Nzk1LCA0NjgwMCwgNDY4MDgsIAorICAgIDQ2ODE2LCA0NjgyMywgNDY4MjksIDE2MzcsIDI4MywgNDY4MzMsIDQ2ODM5LCA0Njg0NCwgNDY4NDcsIDIxMjgsIDQ0MjA5LCAKKyAgICA0Njg1NSwgNDY4NTksIDQ2ODYyLCAxNDkxLCA0Njg2OCwgMTUzMzEsIDEyNTgsIDQ2ODczLCA0Njg4NiwgNDY5MDAsIDI2NzEsIAorICAgIDQ2OTE4LCA0NjkzMCwgNDY5NDIsIDI2ODUsIDI3MDIsIDQ2OTU2LCA0Njk2OSwgMjcxNywgNDY5ODMsIDQ2OTk1LCAyNzMyLCAKKyAgICA0NzAwOSwgMTI2NCwgMTI3MCwgMTI3NiwgMTE2ODIsIDQ3MDE0LCA0NzAxOSwgNDcwMjQsIDQ3MDI4LCA0NzA0MywgNDcwNTgsIAorICAgIDQ3MDczLCA0NzA4OCwgNDcxMDMsIDQ3MTE4LCA0NzEzMywgNDcxNDgsIDQ3MTYzLCA0NzE3OCwgNDcxOTMsIDQ3MjA4LCAKKyAgICA0NzIyMywgNDcyMzgsIDQ3MjUzLCA0NzI2OCwgNDcyODMsIDQ3Mjk4LCA0NzMxMywgNDczMjgsIDQ3MzQzLCA0NzM1OCwgCisgICAgNDczNzMsIDQ3Mzg4LCA0NzQwMywgNDc0MTgsIDQ3NDMzLCA0NzQ0OCwgNDc0NjMsIDQ3NDc4LCA0NzQ5MywgNDc1MDgsIAorICAgIDQ3NTIzLCA0NzUzOCwgNDc1NTMsIDQ3NTY4LCA0NzU4MywgNDc1OTgsIDQ3NjEzLCA0NzYyOCwgNDc2NDMsIDQ3NjU4LCAKKyAgICA0NzY3MywgNDc2ODgsIDQ3NzAzLCA0NzcxOCwgNDc3MzMsIDQ3NzQ4LCA0Nzc2MywgNDc3NzgsIDQ3NzkzLCA0NzgwOCwgCisgICAgNDc4MjMsIDQ3ODM4LCA0Nzg1MywgNDc4NjgsIDQ3ODgzLCA0Nzg5OCwgNDc5MTMsIDQ3OTI4LCA0Nzk0MywgNDc5NTgsIAorICAgIDQ3OTczLCA0Nzk4OCwgNDgwMDMsIDQ4MDE4LCA0ODAzMywgNDgwNDgsIDQ4MDYzLCA0ODA3OCwgNDgwOTMsIDQ4MTA4LCAKKyAgICA0ODEyMywgNDgxMzgsIDQ4MTUzLCA0ODE2OCwgNDgxODMsIDQ4MTk4LCA0ODIxMywgNDgyMjgsIDQ4MjQzLCA0ODI1OCwgCisgICAgNDgyNzMsIDQ4Mjg4LCA0ODMwMywgNDgzMTgsIDQ4MzMzLCA0ODM0OCwgNDgzNjMsIDQ4Mzc4LCA0ODM5MywgNDg0MDgsIAorICAgIDQ4NDIzLCA0ODQzOCwgNDg0NTMsIDQ4NDY4LCA0ODQ4MywgNDg0OTgsIDQ4NTEzLCA0ODUyOCwgNDg1NDMsIDQ4NTU4LCAKKyAgICA0ODU3MywgNDg1ODgsIDQ4NjAzLCA0ODYxOCwgNDg2MzMsIDQ4NjQ4LCA0ODY2MywgNDg2NzgsIDQ4NjkzLCA0ODcwOCwgCisgICAgNDg3MjMsIDQ4NzM4LCA0ODc1MywgNDg3NjgsIDQ4NzgzLCA0ODc5OCwgNDg4MTMsIDQ4ODI4LCA0ODg0MywgNDg4NTgsIAorICAgIDQ4ODczLCA0ODg4OCwgNDg5MDMsIDQ4OTE4LCA0ODkzMywgNDg5NDgsIDQ4OTYzLCA0ODk3OCwgNDg5OTMsIDQ5MDA4LCAKKyAgICA0OTAyMywgNDkwMzgsIDQ5MDUzLCA0OTA2OCwgNDkwODMsIDQ5MDk4LCA0OTExMywgNDkxMjgsIDQ5MTQzLCA0OTE1OCwgCisgICAgNDkxNzMsIDQ5MTg4LCA0OTIwMywgNDkyMTgsIDQ5MjMzLCA0OTI0OCwgNDkyNjMsIDQ5Mjc4LCA0OTI5MywgNDkzMDgsIAorICAgIDQ5MzIzLCA0OTMzOCwgNDkzNTMsIDQ5MzY4LCA0OTM4MywgNDkzOTgsIDQ5NDEzLCA0OTQyOCwgNDk0NDMsIDQ5NDU4LCAKKyAgICA0OTQ3MywgNDk0ODgsIDQ5NTAzLCA0OTUxOCwgNDk1MzMsIDQ5NTQ4LCA0OTU2MywgNDk1NzgsIDQ5NTkzLCA0OTYwOCwgCisgICAgNDk2MjMsIDQ5NjM4LCA0OTY1MywgNDk2NjgsIDQ5NjgzLCA0OTY5OCwgNDk3MTMsIDQ5NzI4LCA0OTc0MywgNDk3NTgsIAorICAgIDQ5NzczLCA0OTc4OCwgNDk4MDMsIDQ5ODE4LCA0OTgzMywgNDk4NDgsIDQ5ODYzLCA0OTg3OCwgNDk4OTMsIDQ5OTA4LCAKKyAgICA0OTkyMywgNDk5MzgsIDQ5OTUzLCA0OTk2OCwgNDk5ODMsIDQ5OTk4LCA1MDAxMywgNTAwMjgsIDUwMDQzLCA1MDA1OCwgCisgICAgNTAwNzMsIDUwMDg4LCA1MDEwMywgNTAxMTgsIDUwMTMzLCA1MDE0OCwgNTAxNjMsIDUwMTc4LCA1MDE5MywgNTAyMDgsIAorICAgIDUwMjIzLCA1MDIzOCwgNTAyNTMsIDUwMjY4LCA1MDI4MywgNTAyOTgsIDUwMzEzLCA1MDMyOCwgNTAzNDMsIDUwMzU4LCAKKyAgICA1MDM3MywgNTAzODgsIDUwNDAzLCA1MDQxOCwgNTA0MzMsIDUwNDQ4LCA1MDQ2MywgNTA0NzgsIDUwNDkzLCA1MDUwOCwgCisgICAgNTA1MjMsIDUwNTM4LCA1MDU1MywgNTA1NjgsIDUwNTgzLCA1MDU5OCwgNTA2MTMsIDUwNjI4LCA1MDY0MywgNTA2NTgsIAorICAgIDUwNjczLCA1MDY4OCwgNTA3MDMsIDUwNzE4LCA1MDczMywgNTA3NDgsIDUwNzYzLCA1MDc3OCwgNTA3OTMsIDUwODA4LCAKKyAgICA1MDgyMywgNTA4MzgsIDUwODUzLCA1MDg2OCwgNTA4ODMsIDUwODk4LCA1MDkxMywgNTA5MjgsIDUwOTQzLCA1MDk1OCwgCisgICAgNTA5NzMsIDUwOTg4LCA1MTAwMywgNTEwMTgsIDUxMDMzLCA1MTA0OCwgNTEwNjMsIDUxMDc4LCA1MTA5MywgNTExMDgsIAorICAgIDUxMTIzLCA1MTEzOCwgNTExNTMsIDUxMTY4LCA1MTE4MywgNTExOTgsIDUxMjEzLCA1MTIyOCwgNTEyNDMsIDUxMjU4LCAKKyAgICA1MTI3MywgNTEyODgsIDUxMzAzLCA1MTMxOCwgNTEzMzMsIDUxMzQ4LCA1MTM2MywgNTEzNzgsIDUxMzkzLCA1MTQwOCwgCisgICAgNTE0MjMsIDUxNDM4LCA1MTQ1MywgNTE0NjgsIDUxNDgzLCA1MTQ5OCwgNTE1MTMsIDUxNTI4LCA1MTU0MywgNTE1NTgsIAorICAgIDUxNTczLCA1MTU4OCwgNTE2MDMsIDUxNjE4LCA1MTYzMywgNTE2NDgsIDUxNjYzLCA1MTY3OCwgNTE2OTMsIDUxNzA4LCAKKyAgICA1MTcyMywgNTE3MzgsIDUxNzUzLCA1MTc2OCwgNTE3ODMsIDUxNzk4LCA1MTgxMywgNTE4MjgsIDUxODQzLCA1MTg1OCwgCisgICAgNTE4NzMsIDUxODg4LCA1MTkwMywgNTE5MTgsIDUxOTMzLCA1MTk0OCwgNTE5NjMsIDUxOTc4LCA1MTk5MywgNTIwMDgsIAorICAgIDUyMDIzLCA1MjAzOCwgNTIwNTMsIDUyMDY4LCA1MjA4MywgNTIwOTgsIDUyMTEzLCA1MjEyOCwgNTIxNDMsIDUyMTU4LCAKKyAgICA1MjE3MywgNTIxODgsIDUyMjAzLCA1MjIxOCwgNTIyMzMsIDUyMjQ4LCA1MjI2MywgNTIyNzgsIDUyMjkzLCA1MjMwOCwgCisgICAgNTIzMjMsIDUyMzM4LCA1MjM1MywgNTIzNjgsIDUyMzgzLCA1MjM5OCwgNTI0MTMsIDUyNDI4LCA1MjQ0MywgNTI0NTgsIAorICAgIDUyNDczLCA1MjQ4OCwgNTI1MDMsIDUyNTE4LCA1MjUzMywgNTI1NDgsIDUyNTYzLCA1MjU3OCwgNTI1OTMsIDUyNjA4LCAKKyAgICA1MjYyMywgNTI2MzgsIDUyNjUzLCA1MjY2OCwgNTI2ODMsIDUyNjk4LCA1MjcxMywgNTI3MjgsIDUyNzQzLCA1Mjc1OCwgCisgICAgNTI3NzMsIDUyNzg4LCA1MjgwMywgNTI4MTgsIDUyODMzLCA1Mjg0OCwgNTI4NjMsIDUyODc4LCA1Mjg5MywgNTI5MDgsIAorICAgIDUyOTIzLCA1MjkzOCwgNTI5NTMsIDUyOTY4LCA1Mjk4MywgNTI5OTgsIDUzMDEzLCA1MzAyOCwgNTMwNDMsIDUzMDU4LCAKKyAgICA1MzA3MywgNTMwODgsIDUzMTAzLCA1MzExOCwgNTMxMzMsIDUzMTQ4LCA1MzE2MywgNTMxNzgsIDUzMTkzLCA1MzIwOCwgCisgICAgNTMyMjMsIDUzMjM4LCA1MzI1MywgNTMyNjgsIDUzMjgzLCA1MzI5OCwgNTMzMTMsIDUzMzI4LCA1MzM0MywgNTMzNTgsIAorICAgIDUzMzczLCA1MzM4OCwgNTM0MDMsIDUzNDE4LCA1MzQzMywgNTM0NDgsIDUzNDYzLCA1MzQ3OCwgNTM0OTMsIDUzNTA4LCAKKyAgICA1MzUyMywgNTM1MzgsIDUzNTUzLCA1MzU2OCwgNTM1ODMsIDUzNTk4LCA1MzYxMywgNTM2MjgsIDUzNjQzLCA1MzY1OCwgCisgICAgNTM2NzMsIDUzNjg4LCA1MzcwMywgNTM3MTgsIDUzNzMzLCA1Mzc0OCwgNTM3NjMsIDUzNzc4LCA1Mzc5MywgNTM4MDgsIAorICAgIDUzODIzLCA1MzgzOCwgNTM4NTMsIDUzODY4LCA1Mzg4MywgNTM4OTgsIDUzOTEzLCA1MzkyOCwgNTM5NDMsIDUzOTU4LCAKKyAgICA1Mzk3MywgNTM5ODgsIDU0MDAzLCA1NDAxOCwgNTQwMzMsIDU0MDQ4LCA1NDA2MywgNTQwNzgsIDU0MDkzLCA1NDEwOCwgCisgICAgNTQxMjMsIDU0MTM4LCA1NDE1MywgNTQxNjgsIDU0MTgzLCA1NDE5OCwgNTQyMTMsIDU0MjI4LCA1NDI0MywgNTQyNTgsIAorICAgIDU0MjczLCA1NDI4OCwgNTQzMDMsIDU0MzE4LCA1NDMzMywgNTQzNDgsIDU0MzYzLCA1NDM3OCwgNTQzOTMsIDU0NDA4LCAKKyAgICA1NDQyMywgNTQ0MzgsIDU0NDUzLCA1NDQ2OCwgNTQ0ODMsIDU0NDk4LCA1NDUxMywgNTQ1MjgsIDU0NTQzLCA1NDU1OCwgCisgICAgNTQ1NzMsIDU0NTg4LCA1NDYwMywgNTQ2MTgsIDU0NjMzLCA1NDY0OCwgNTQ2NjMsIDU0Njc4LCA1NDY5MywgNTQ3MDgsIAorICAgIDU0NzIzLCA1NDczOCwgNTQ3NTMsIDU0NzY4LCA1NDc4MywgNTQ3OTgsIDU0ODEzLCA1NDgyOCwgNTQ4NDMsIDU0ODU5LCAKKyAgICA1NDg3NSwgNTQ4OTEsIDU0OTA3LCA1NDkyMywgNTQ5MzksIDU0OTU1LCA1NDk3MSwgNTQ5ODcsIDU1MDAzLCA1NTAxOSwgCisgICAgNTUwMzUsIDU1MDUxLCA1NTA2NywgNTUwODMsIDU1MDk5LCA1NTExNSwgNTUxMzEsIDU1MTQ3LCA1NTE2MywgNTUxNzksIAorICAgIDU1MTk1LCA1NTIxMSwgNTUyMjcsIDU1MjQzLCA1NTI1OSwgNTUyNzUsIDU1MjkxLCA1NTMwNywgNTUzMjMsIDU1MzM5LCAKKyAgICA1NTM1NSwgNTUzNzEsIDU1Mzg3LCA1NTQwMywgNTU0MTksIDU1NDM1LCA1NTQ1MSwgNTU0NjcsIDU1NDgzLCA1NTQ5OSwgCisgICAgNTU1MTUsIDU1NTMxLCA1NTU0NywgNTU1NjMsIDU1NTc5LCA1NTU5NSwgNTU2MTEsIDU1NjI3LCA1NTY0MywgNTU2NTksIAorICAgIDU1Njc1LCA1NTY5MSwgNTU3MDcsIDU1NzIzLCA1NTczOSwgNTU3NTUsIDU1NzcxLCA1NTc4NywgNTU4MDMsIDU1ODE5LCAKKyAgICA1NTgzNSwgNTU4NTEsIDU1ODY3LCA1NTg4MywgNTU4OTksIDU1OTE1LCA1NTkzMSwgNTU5NDcsIDU1OTYzLCA1NTk3OSwgCisgICAgNTU5OTUsIDU2MDExLCA1NjAyNywgNTYwNDMsIDU2MDU5LCA1NjA3NSwgNTYwOTEsIDU2MTA3LCA1NjEyMywgNTYxMzksIAorICAgIDU2MTU1LCA1NjE3MSwgNTYxODcsIDU2MjAzLCA1NjIxOSwgNTYyMzUsIDU2MjUxLCA1NjI2NywgNTYyODMsIDU2Mjk5LCAKKyAgICA1NjMxNSwgNTYzMzEsIDU2MzQ3LCA1NjM2MywgNTYzNzksIDU2Mzk1LCA1NjQxMSwgNTY0MjcsIDU2NDQzLCA1NjQ1OSwgCisgICAgNTY0NzUsIDU2NDkxLCA1NjUwNywgNTY1MjMsIDU2NTM5LCA1NjU1NSwgNTY1NzEsIDU2NTg3LCA1NjYwMywgNTY2MTksIAorICAgIDU2NjM1LCA1NjY1MSwgNTY2NjcsIDU2NjgzLCA1NjY5OSwgNTY3MTUsIDU2NzMxLCA1Njc0NywgNTY3NjMsIDU2Nzc5LCAKKyAgICA1Njc5NSwgNTY4MTEsIDU2ODI3LCA1Njg0MywgNTY4NTksIDU2ODc1LCA1Njg5MSwgNTY5MDcsIDU2OTIzLCA1NjkzOSwgCisgICAgNTY5NTUsIDU2OTcxLCA1Njk4NywgNTcwMDMsIDU3MDE5LCA1NzAzNSwgNTcwNTEsIDU3MDY3LCA1NzA4MywgNTcwOTksIAorICAgIDU3MTE1LCA1NzEzMSwgNTcxNDcsIDU3MTYzLCA1NzE3OSwgNTcxOTUsIDU3MjExLCA1NzIyNywgNTcyNDMsIDU3MjU5LCAKKyAgICA1NzI3NSwgNTcyOTEsIDU3MzA3LCA1NzMyMywgNTczMzksIDU3MzU1LCA1NzM3MSwgNTczODcsIDU3NDAzLCA1NzQxOSwgCisgICAgNTc0MzUsIDU3NDUxLCA1NzQ2NywgNTc0ODMsIDU3NDk5LCA1NzUxNSwgNTc1MzEsIDU3NTQ3LCA1NzU2MywgNTc1NzksIAorICAgIDU3NTk1LCA1NzYxMSwgNTc2MjcsIDU3NjQzLCA1NzY1OSwgNTc2NzUsIDU3NjkxLCA1NzcwNywgNTc3MjMsIDU3NzM5LCAKKyAgICA1Nzc1NSwgNTc3NzEsIDU3Nzg3LCA1NzgwMywgNTc4MTksIDU3ODM1LCA1Nzg1MSwgNTc4NjcsIDU3ODgzLCA1Nzg5OSwgCisgICAgNTc5MTUsIDU3OTMxLCA1Nzk0NywgNTc5NjMsIDU3OTc5LCA1Nzk5NSwgNTgwMTEsIDU4MDI3LCA1ODA0MywgNTgwNTksIAorICAgIDU4MDc1LCA1ODA5MSwgNTgxMDcsIDU4MTIzLCA1ODEzOSwgNTgxNTUsIDU4MTcxLCA1ODE4NywgNTgyMDMsIDU4MjE5LCAKKyAgICA1ODIzNSwgNTgyNTEsIDU4MjY3LCA1ODI4MywgNTgyOTksIDU4MzE1LCA1ODMzMSwgNTgzNDcsIDU4MzYzLCA1ODM3OSwgCisgICAgNTgzOTUsIDU4NDExLCA1ODQyNywgNTg0NDMsIDU4NDU5LCA1ODQ3NSwgNTg0OTEsIDU4NTA3LCA1ODUyMywgNTg1MzksIAorICAgIDU4NTU1LCA1ODU3MSwgNTg1ODcsIDU4NjAzLCA1ODYxOSwgNTg2MzUsIDU4NjUxLCA1ODY2NywgNTg2ODMsIDU4Njk5LCAKKyAgICA1ODcxNSwgNTg3MzEsIDU4NzQ3LCA1ODc2MywgNTg3NzksIDU4Nzk1LCA1ODgxMSwgNTg4MjcsIDU4ODQzLCA1ODg1OSwgCisgICAgNTg4NzUsIDU4ODkxLCA1ODkwNywgNTg5MjMsIDU4OTM5LCA1ODk1NSwgNTg5NzEsIDU4OTg3LCA1OTAwMywgNTkwMTksIAorICAgIDU5MDM1LCA1OTA1MSwgNTkwNjcsIDU5MDgzLCA1OTA5OSwgNTkxMTUsIDU5MTMxLCA1OTE0NywgNTkxNjMsIDU5MTc5LCAKKyAgICA1OTE5NSwgNTkyMTEsIDU5MjI3LCA1OTI0MywgNTkyNTksIDU5Mjc1LCA1OTI5MSwgNTkzMDcsIDU5MzIzLCA1OTMzOSwgCisgICAgNTkzNTUsIDU5MzcxLCA1OTM4NywgNTk0MDMsIDU5NDE5LCA1OTQzNSwgNTk0NTEsIDU5NDY3LCA1OTQ4MywgNTk0OTksIAorICAgIDU5NTE1LCA1OTUzMSwgNTk1NDcsIDU5NTYzLCA1OTU3OSwgNTk1OTUsIDU5NjExLCA1OTYyNywgNTk2NDMsIDU5NjU5LCAKKyAgICA1OTY3NSwgNTk2OTEsIDU5NzA3LCA1OTcyMywgNTk3MzksIDU5NzU1LCA1OTc3MSwgNTk3ODcsIDU5ODAzLCA1OTgxOSwgCisgICAgNTk4MzUsIDU5ODUxLCA1OTg2NywgNTk4ODMsIDU5ODk5LCA1OTkxNSwgNTk5MzEsIDU5OTQ3LCA1OTk2MywgNTk5NzksIAorICAgIDU5OTk1LCA2MDAxMSwgNjAwMjcsIDYwMDQzLCA2MDA1OSwgNjAwNzUsIDYwMDkxLCA2MDEwNywgNjAxMjMsIDYwMTM5LCAKKyAgICA2MDE1NSwgNjAxNzEsIDYwMTg3LCA2MDIwMywgNjAyMTksIDYwMjM1LCA2MDI1MSwgNjAyNjcsIDYwMjgzLCA2MDI5OSwgCisgICAgNjAzMTUsIDYwMzMxLCA2MDM0NywgNjAzNjMsIDYwMzc5LCA2MDM5NSwgNjA0MTEsIDYwNDI3LCA2MDQ0MywgNjA0NTksIAorICAgIDYwNDc1LCA2MDQ5MSwgNjA1MDcsIDYwNTIzLCA2MDUzOSwgNjA1NTUsIDYwNTcxLCA2MDU4NywgNjA2MDMsIDYwNjE5LCAKKyAgICA2MDYzNSwgNjA2NTEsIDYwNjY3LCA2MDY4MywgNjA2OTksIDYwNzE1LCA2MDczMSwgNjA3NDcsIDYwNzYzLCA2MDc3OSwgCisgICAgNjA3OTUsIDYwODExLCA2MDgyNywgNjA4NDMsIDYwODU5LCA2MDg3NSwgNjA4OTEsIDYwOTA3LCA2MDkyMywgNjA5MzksIAorICAgIDYwOTU1LCA2MDk3MSwgNjA5ODcsIDYxMDAzLCA2MTAxOSwgNjEwMzUsIDYxMDUxLCA2MTA2NywgNjEwODMsIDYxMDk5LCAKKyAgICA2MTExNSwgNjExMzEsIDYxMTQ3LCA2MTE2MywgNjExNzksIDYxMTk1LCA2MTIxMSwgNjEyMjcsIDYxMjQzLCA2MTI1OSwgCisgICAgNjEyNzUsIDYxMjkxLCA2MTMwNywgNjEzMjMsIDYxMzM5LCA2MTM1NSwgNjEzNzEsIDYxMzg3LCA2MTQwMywgNjE0MTksIAorICAgIDYxNDM1LCA2MTQ1MSwgNjE0NjcsIDYxNDgzLCA2MTQ5OSwgNjE1MTUsIDYxNTMxLCA2MTU0NywgNjE1NjMsIDYxNTc5LCAKKyAgICA2MTU5NSwgNjE2MTEsIDYxNjI3LCA2MTY0MywgNjE2NTksIDYxNjc1LCA2MTY5MSwgNjE3MDcsIDYxNzIzLCA2MTczOSwgCisgICAgNjE3NTUsIDYxNzcxLCA2MTc4NywgNjE4MDMsIDYxODE5LCA2MTgzNSwgNjE4NTEsIDYxODY3LCA2MTg4MywgNjE4OTksIAorICAgIDYxOTE1LCA2MTkzMSwgNjE5NDcsIDYxOTYzLCA2MTk3OSwgNjE5OTUsIDYyMDExLCA2MjAyNywgNjIwNDMsIDYyMDU5LCAKKyAgICA2MjA3NSwgNjIwOTEsIDYyMTA3LCA2MjEyMywgNjIxMzksIDYyMTU1LCA2MjE3MSwgNjIxODcsIDYyMjAzLCA2MjIxOSwgCisgICAgNjIyMzUsIDYyMjUxLCA2MjI2NywgNjIyODMsIDYyMjk5LCA2MjMxNSwgNjIzMzEsIDYyMzQ3LCA2MjM2MywgNjIzNzksIAorICAgIDYyMzk1LCA2MjQxMSwgNjI0MjcsIDYyNDQzLCA2MjQ1OSwgNjI0NzUsIDYyNDkxLCA2MjUwNywgNjI1MjMsIDYyNTM5LCAKKyAgICA2MjU1NSwgNjI1NzEsIDYyNTg3LCA2MjYwMywgNjI2MTksIDYyNjM1LCA2MjY1MSwgNjI2NjcsIDYyNjgzLCA2MjY5OSwgCisgICAgNjI3MTUsIDYyNzMxLCA2Mjc0NywgNjI3NjMsIDYyNzc5LCA2Mjc5NSwgNjI4MTEsIDYyODI3LCA2Mjg0MywgNjI4NTksIAorICAgIDYyODc1LCA2Mjg5MSwgNjI5MDcsIDYyOTIzLCA2MjkzOSwgNjI5NTUsIDYyOTcxLCA2Mjk4NywgNjMwMDMsIDYzMDE5LCAKKyAgICA2MzAzNSwgNjMwNTEsIDYzMDY3LCA2MzA4MywgNjMwOTksIDYzMTE1LCA2MzEzMSwgNjMxNDcsIDYzMTYzLCA2MzE3OSwgCisgICAgNjMxOTUsIDYzMjExLCA2MzIyNywgNjMyNDMsIDYzMjU5LCA2MzI3NSwgNjMyOTEsIDYzMzA3LCA2MzMyMywgNjMzMzksIAorICAgIDYzMzU1LCA2MzM3MSwgNjMzODcsIDYzNDAzLCA2MzQxOSwgNjM0MzUsIDYzNDUxLCA2MzQ2NywgNjM0ODMsIDYzNDk5LCAKKyAgICA2MzUxNSwgNjM1MzAsIDE2MTUyLCA2MzUzOSwgNjM1NDQsIDYzNTUwLCA2MzU1NiwgNjM1NjYsIDYzNTc0LCAxNjM5MywgCisgICAgMTY5OTksIDEwODMxLCA2MzU4NywgMTQ5OSwgMTUwMywgNjM1OTUsIDM5NzgsIDI5ODMyLCA3NTM2LCA2MzYwMSwgNjM2MDYsIAorICAgIDYzNjExLCA2MzYxNiwgNjM2MjEsIDYzNjI3LCA2MzYzMiwgNjM2MzgsIDYzNjQzLCA2MzY0OSwgNjM2NTQsIDYzNjU5LCAKKyAgICA2MzY2NCwgNjM2NjksIDYzNjc1LCA2MzY4MCwgNjM2ODUsIDYzNjkwLCA2MzY5NSwgNjM3MDAsIDYzNzA1LCA2MzcxMCwgCisgICAgNjM3MTYsIDYzNzIxLCA2MzcyNywgNjM3MzQsIDI1ODUsIDYzNzM5LCA2Mzc0NSwgODk1NywgNjM3NDksIDYzNzU0LCAKKyAgICA2Mzc2MSwgNjM3NjksIDY1LCA2Mzc3MywgNjM3NzksIDYzNzg0LCA2Mzc4OSwgNjM3OTMsIDYzNzk4LCA2MzgwMiwgNjM4MDYsIAorICAgIDExNzE5LCA2MzgxMCwgNjM4MjAsIDYzODMzLCA2Mzg0NCwgNjM4NTcsIDYzODY0LCA2Mzg3MCwgMTEyMzYsIDYzODc4LCAKKyAgICA2Mzg4MywgNjM4ODksIDYzODk1LCA2MzkwMSwgNjM5MDYsIDYzOTExLCA2MzkxNiwgNjM5MjEsIDYzOTI1LCA2MzkzMCwgCisgICAgNjM5MzUsIDYzOTQwLCA2Mzk0NiwgNjM5NTIsIDYzOTU4LCA2Mzk2MywgNjM5NjcsIDYzOTcyLCA2Mzk3NywgNjM5ODEsIAorICAgIDYzOTg2LCA2Mzk5MSwgNjM5OTYsIDY0MDAwLCAxMTczNSwgMTE3NDYsIDExNzUxLCAxNTQyLCA2NDAwNCwgNjQwMTAsIAorICAgIDE1NDcsIDE3ODkwLCA2NDAxNSwgMTc4OTksIDY0MDIwLCA2NDAyNiwgNjQwMzEsIDE1NzgsIDY0MDM3LCAxNTg0LCAxNTkwLCAKKyAgICAxMTc4MSwgNjQwNDIsIDY0MDUxLCA2NDA1OSwgNjQwNjcsIDY0MDc0LCA2NDA3OCwgNjQwODIsIDY0MDg4LCA2NDA5MywgCisgICAgMzM3MjEsIDY0MDk4LCA2NDEwNSwgNjQxMTIsIDY0MTE3LCA2NDEyMSwgNjQxMjUsIDY0MTM0LCAxNTk1LCAxODAwOCwgCisgICAgNjQxMzksIDY0MTQzLCAxODAxOSwgMTEyNiwgNjQxNDcsIDY0MTU0LCA2NDE1OSwgNjQxNjMsIDE4MDU1LCAxNTk5LCAKKyAgICA0MTY4NSwgNjQxNjYsIDY0MTcxLCA2NDE4MSwgNjQxOTAsIDY0MTk1LCA2NDE5OSwgNjQyMDUsIDE2MDQsIDQ0MzE2LCAKKyAgICA2NDIxMCwgNjQyMTksIDY0MjI1LCA2NDIzMCwgNjQyMzUsIDExOTkyLCAxMTk5OCwgNjQyNDEsIDY0MjUzLCA2NDI3MCwgCisgICAgNjQyODcsIDY0MzA0LCA2NDMyMSwgNjQzMzgsIDY0MzU1LCA2NDM3MiwgNjQzODksIDY0NDA2LCA2NDQyMywgNjQ0NDAsIAorICAgIDY0NDU3LCA2NDQ3NCwgNjQ0OTEsIDY0NTA4LCA2NDUyNSwgNjQ1NDIsIDY0NTU5LCA2NDU3NiwgNjQ1OTMsIDY0NjEwLCAKKyAgICA2NDYyNywgNjQ2NDQsIDY0NjYxLCA2NDY3OCwgNjQ2OTUsIDY0NzEyLCA2NDcyOSwgNjQ3NDYsIDY0NzYzLCA2NDc4MCwgCisgICAgNjQ3OTcsIDY0ODE0LCA2NDgzMSwgNjQ4NDgsIDY0ODY1LCA2NDg4MiwgNjQ4OTksIDY0OTE2LCA2NDkzMywgNjQ5NTAsIAorICAgIDY0OTY3LCA2NDk4NCwgNjUwMDEsIDY1MDE4LCA2NTAzNSwgNjUwNTIsIDY1MDY5LCA2NTA4NiwgNjUwOTcsIDY1MTA3LCAKKyAgICA2NTExMiwgMTYwOSwgNjUxMTYsIDY1MTIxLCA2NTEyNywgNjUxMzIsIDY1MTM3LCA2NTE0NCwgOTkyOSwgMTYxNCwgNjUxNTAsIAorICAgIDY1MTU5LCAzMDE2MSwgNjUxNjQsIDY1MTc1LCAxMjAwOSwgNjUxODUsIDY1MTkwLCA2NTE5NiwgNjUyMDEsIDY1MjA4LCAKKyAgICA2NTIxNCwgNjUyMTksIDE2MTksIDE4MzM4LCA2NTIyNCwgNjUyMzAsIDEyMDE5LCAxNjI0LCAxMjAyNCwgNjUyMzYsIAorICAgIDY1MjQxLCA2NTI0NywgNjUyNTIsIDY1MjU3LCA2NTI2MiwgNjUyNjcsIDY1MjcyLCA2NTI3NywgNjUyODIsIDY1Mjg3LCAKKyAgICA2NTI5MywgNjUyOTksIDY1MzA1LCA2NTMxMCwgNjUzMTQsIDY1MzE5LCA2NTMyNCwgNjUzMjgsIDY1MzMzLCA2NTMzOCwgCisgICAgNjUzNDMsIDY1MzQ4LCA2NTM1MiwgNjUzNTcsIDY1MzYzLCA2NTM2OCwgNjUzNzMsIDY1Mzc3LCA2NTM4MiwgNjUzODcsIAorICAgIDY1MzkzLCA2NTM5OCwgNjU0MDMsIDY1NDA5LCA2NTQxNSwgNjU0MjAsIDY1NDI0LCA2NTQyOSwgNjU0MzQsIDY1NDM5LCAKKyAgICA2NTQ0MywgNjU0NDgsIDY1NDUzLCA2NTQ1OCwgNjU0NjQsIDY1NDcwLCA2NTQ3NSwgNjU0NzksIDY1NDgzLCA2NTQ4OCwgCisgICAgNjU0OTMsIDY1NDk4LCAzMTczNSwgNjU1MDIsIDY1NTA3LCA2NTUxMiwgNjU1MTgsIDY1NTIzLCA2NTUyOCwgNjU1MzIsIAorICAgIDY1NTM3LCA2NTU0MiwgNjU1NDgsIDY1NTUzLCA2NTU1OCwgNjU1NjQsIDY1NTcwLCA2NTU3NSwgNjU1NzksIDY1NTg0LCAKKyAgICA2NTU4OSwgNjU1OTMsIDY1NTk4LCA2NTYwMywgNjU2MDgsIDY1NjE0LCA2NTYyMCwgNjU2MjUsIDY1NjI5LCA2NTYzNCwgCisgICAgNjU2MzksIDY1NjQzLCA2NTY0OCwgNjU2NTMsIDY1NjU4LCA2NTY2MywgNjU2NjcsIDY1NjcwLCA2NTY3MywgNjU2NzgsIAorICAgIDY1NjgzLCAzNDQxMiwgNjU2OTAsIDY1Njk4LCAzNjkwLCAzMDExMSwgNjU3MDQsIDY1NzExLCA2NTcxNywgMzgyOSwgCisgICAgMTIxMzAsIDY1NzIzLCA2NTczMywgNjU3NDgsIDY1NzU2LCAxMjEzNSwgNjU3NjcsIDY1NzcyLCA2NTc4MywgNjU3OTUsIAorICAgIDY1ODA3LCA2NTgxOSwgMjcyMywgNjU4MzEsIDY1ODM2LCA2NTg0OCwgNjU4NTIsIDY1ODU4LCA2NTg2NCwgNjU4NjksIAorICAgIDY1ODc4LCAxNjQxLCAxNzU2NSwgNjU4ODUsIDY1ODkwLCA0NDM3NSwgNjU4OTQsIDY1ODk4LCA2NTkwMywgNjU5MDcsIAorICAgIDE4NDc5LCA2NTkxMiwgNjU5MTUsIDY1OTIwLCA2NTkyOCwgNjU5MzYsIDE2NDUsIDEyMTcxLCAxMjE3NywgMTY1MCwgCisgICAgNjU5NDQsIDY1OTUxLCA2NTk1NiwgNjU5NjUsIDY1OTc1LCA2NTk4MiwgNjU5ODcsIDY1OTkyLCAxNjU1LCA2NTk5OSwgCisgICAgNjYwMDQsIDE4NTk5LCA2NjAwOCwgNjYwMTMsIDY2MDIwLCA2NjAyNiwgNjYwMzAsIDY2MDQxLCA2NjA1MSwgNjYwNTgsIAorICAgIDE4NjIxLCA5ODIzLCA5ODMwLCA0MDI3LCA0MDMzLCA2NjA2NSwgMTY2MCwgNjYwNzAsIDY2MDc2LCA2NjA4NCwgNjYwOTEsIAorICAgIDY2MDk3LCA2NjEwNCwgNjYxMTYsIDY2MTIyLCA2NjEyNywgNjYxMzksIDY2MTUwLCA2NjE1OSwgNjYxNjksIDM5NTcsIAorICAgIDY2MTc3LCAzMzUxNSwgMzM1MjQsIDE4NjYxLCAxNjY1LCAxNjY5LCA2NjE5MCwgNjYxOTQsIDY2MTk3LCA2NjIwOCwgCisgICAgNjYyMTMsIDE2NzksIDY2MjIxLCA2NjIyNiwgNjYyMzEsIDE4NzIwLCA2NjI0MywgNjYyNDYsIDY2MjUyLCA2NjI1OCwgCisgICAgNjYyNjMsIDY2MjcxLCAxNjg0LCA2NjI3NiwgNjYyODEsIDY2Mjg5LCA2NjI5NywgNjYzMDQsIDY2MzEzLCA2NjMyMSwgCisgICAgNjYzMzAsIDE2ODksIDY2MzM0LCAxNjk0LCAyMzIwOCwgNjYzMzksIDY2MzQ2LCAxODgwMCwgNjYzNTQsIDY2MzY0LCAKKyAgICA2NjM3MCwgNjYzNzUsIDY2MzgzLCA2NjM5MCwgNjYzOTksIDY2NDA3LCA2NjQxNywgNjY0MjYsIDY2NDM2LCA2NjQ0NSwgCisgICAgNjY0NTYsIDY2NDY2LCA2NjQ3NiwgNjY0ODUsIDY2NDk1LCA2NjUwOSwgNjY1MjIsIDY2NTMxLCA2NjUzOSwgNjY1NDksIAorICAgIDY2NTU4LCA2NjU3MCwgNjY1ODEsIDY2NTkyLCA2NjYwMiwgMTgxMTIsIDY2NjA3LCAxMjMyMywgNjY2MTYsIDY2NjIyLCAKKyAgICA2NjYyNywgNjY2MzQsIDY2NjQxLCA2NjY0NywgMTc3NzEsIDY2NjU3LCA2NjY2MywgNjY2NjgsIDY2Njc5LCA2NjY4NCwgCisgICAgNjY2OTIsIDEyMzQwLCAxMjM0NSwgNjY3MDAsIDY2NzA2LCA2NjcxMCwgNjY3MTgsIDQwMjIsIDE4ODY5LCA0NDQ2OCwgCisgICAgNjY3MjMsIDY2NzI5LCA2NjczNCwgNjY3NDIsIDY2NzQ5LCAxMzI4OSwgNjY3NTQsIDY2NzYwLCAxNzA1LCA2Njc2NSwgCisgICAgNjY3NjgsIDE0MTksIDY2Nzc0LCA2Njc3OSwgNjY3ODQsIDY2NzkwLCA2Njc5NSwgNjY4MDAsIDY2ODA1LCA2NjgxMCwgCisgICAgNjY4MTUsIDY2ODIwLCAxNzE0LCAxMywgNjY4MjYsIDY2ODMwLCA2NjgzNSwgNjY4MzksIDY2ODQzLCA2Njg0NywgMzQ2NTIsIAorICAgIDY2ODUyLCAyNTI5NiwgNjY4NTcsIDY2ODYyLCA2Njg2NiwgNjY4NjksIDY2ODczLCA2Njg3NywgNjY4ODIsIDY2ODg2LCAKKyAgICA2Njg5MSwgNjY4OTUsIDY2OTAxLCAzNzkxMCwgMzc5MTUsIDM3OTIwLCA2NjkwNCwgNjY5MTEsIDY2OTE3LCA2NjkyNSwgCisgICAgNDQxMzksIDY2OTM1LCAzNzkyNiwgMzQ5MTYsIDM0NjY3LCAzNDY3MywgMzc5NDIsIDM0Njc5LCA2Njk0MCwgNjY5NDUsIAorICAgIDM0OTQ5LCA2Njk0OSwgNjY5NTIsIDY2OTU2LCA2Njk2NCwgNjY5NzEsIDY2OTc0LCA2Njk3OSwgNjY5ODQsIDY2OTg4LCAKKyAgICA2Njk5MiwgNjY5OTUsIDY3MDA1LCA2NzAxNywgNjcwMjQsIDY3MDMwLCAzNDY4NCwgNjcwMzcsIDM2NDQzLCA2NzA0MCwgCisgICAgODk3NCwgMTA1MiwgNjcwNDMsIDY3MDQ3LCA2NzA1MiwgMzg3MiwgNjcwNTYsIDY3MDU5LCAxNDkzNywgNjcwNjYsIDY3MDczLCAKKyAgICA2NzA4NiwgNjcwOTQsIDY3MTAzLCA2NzExMiwgNjcxMTcsIDY3MTI3LCA2NzE0MCwgNjcxNTIsIDY3MTU5LCA2NzE2NCwgCisgICAgNjcxNzMsIDY3MTg2LCAzOTQ0OSwgNjcyMDQsIDY3MjA5LCA2NzIxNiwgNjcyMjIsIDY3MjI3LCA4MzUsIDY3MjMyLCAKKyAgICA2NzI0MCwgNjcyNDcsIDY3MjU0LCAyOTY1OCwgODAzLCA2NzI2MCwgNjcyNjYsIDY3Mjc2LCA2NzI4NCwgNjcyOTAsIAorICAgIDY3Mjk1LCAzNDcwMywgNjMzNCwgMzQ3MTcsIDY3Mjk5LCA2NzMwOSwgNjczMTQsIDY3MzIyLCA2NzMzMiwgNjczNDcsIAorICAgIDY3MzUzLCA2NzM1OSwgMzQ3MjcsIDY3MzY0LCAzMzgzOCwgNjczNjgsIDY3MzczLCA2NzM4MCwgNjczODUsIDY3Mzg5LCAKKyAgICA2NzM5NCwgMTg2NjQsIDY3NDAxLCA2NzQwNiwgNjc0MTAsIDYzNzUsIDM0NzUzLCA2NzQxNCwgNjc0MjAsIDMyNSwgNjc0MzAsIAorICAgIDY3NDM3LCA2NzQ0MywgNjc0NTAsIDY3NDU1LCA2NzQ2NCwgMTQ1NzMsIDY0MTc1LCA2NDE4NSwgNjc0NzAsIDY3NDc4LCAKKyAgICA2NzQ4MiwgNjc0ODYsIDY3NDkwLCA2NzQ5NCwgNjc0OTksIDY3NTAzLCA2NzUwOSwgNjc1MTcsIDY3NTIyLCA2NzUyNywgCisgICAgNjc1MzIsIDY3NTM2LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1NSwgNjc1NjEsIDY3NTY2LCA2NzU3MCwgNjc1NzUsIAorICAgIDM0ODc3LCA2NzU3OSwgMzQ4ODMsIDM0ODg5LCA2NzU4NCwgNjc1OTAsIDY3NTk3LCA2NzYwMiwgNjc2MDYsIDMzODU1LCAKKyAgICAxODMzMSwgNjc2MDksIDY3NjEzLCA2NzYxOCwgNjc2MjUsIDY3NjMxLCA2NzYzNSwgNjc2NDAsIDQzODA0LCA2NzY0NiwgCisgICAgNjc2NTAsIDY3NjU3LCA2NzY2MSwgNjc2NjYsIDY3NjcyLCA2NzY3OCwgNjc2ODQsIDY3Njk2LCA2NzcwNSwgNjc3MTUsIAorICAgIDY3NzIxLCA2NzcyOCwgNjc3MzMsIDY3NzM4LCA2Nzc0MiwgNjc3NDUsIDY3NzUxLCA2Nzc1OCwgNjc3NjMsIDY3NzY4LCAKKyAgICA2Nzc3NSwgNjc3ODIsIDY3Nzg5LCA2Nzc5NSwgNjc4MDAsIDY3ODA1LCA2NzgxMywgMzQ4OTQsIDI0NDcsIDY3ODE4LCAKKyAgICA2NzgyMywgNjc4MjksIDY3ODM0LCA2Nzg0MCwgNjc4NDUsIDY3ODUwLCA2Nzg1NSwgNjc4NjEsIDM0OTE1LCA2Nzg2NiwgCisgICAgNjc4NzIsIDY3ODc4LCA2Nzg4NCwgMzQ5ODUsIDY3ODg5LCA2Nzg5NCwgNjc4OTksIDM0OTk2LCA2NzkwNCwgNjc5MDksIAorICAgIDY3OTE0LCA2NzkyMCwgNjc5MjYsIDM1MDAxLCA2NzkzMSwgNjc5MzYsIDY3OTQxLCAzNTA1NiwgMzUwNjIsIDY3OTQ2LCAKKyAgICA2Nzk1MSwgMzUwNjcsIDM1MDg5LCAzMDQxMCwgMzUwOTUsIDM1MDk5LCA2Nzk1NiwgMTMwMTksIDY3OTYwLCA2Nzk2OCwgCisgICAgNjc5NzQsIDY3OTgyLCA2Nzk4OSwgNjc5OTUsIDY4MDA1LCA2ODAxMSwgNjgwMTgsIDExNjU0LCAzNTExMywgNjgwMjQsIAorICAgIDY4MDM3LCA2ODA0NiwgNjgwNTIsIDY4MDYxLCA2ODA2NywgMjU2MDYsIDY4MDc0LCA2ODA4MSwgNjgwOTEsIDY4MDk5LCAKKyAgICA2ODEwMiwgMzUwNTcsIDY4MTA3LCA2ODExNCwgNjgxMTksIDY4MTIzLCA2ODEyNywgNjgxMzIsIDY4MTM2LCA0MTQ3LCAKKyAgICA2ODE0MSwgNjgxNDYsIDY4MTUxLCAzODAwNCwgMzgwMDksIDY4MTU1LCAzODAyMywgNjgxNjAsIDM4MDI4LCA2ODE2NSwgCisgICAgNjgxNzEsIDM4MDQwLCAzODA0NiwgMzgwNTIsIDY4MTc2LCA2ODE4MiwgMjQ1NzUsIDY4MTkzLCA2ODE5NiwgNjgyMDgsIAorICAgIDY4MjE2LCAzNTEzNiwgNjgyMjAsIDY4MjI5LCA2ODIzOSwgNjgyNDgsIDM1MTQ2LCA2ODI1MywgNjgyNjAsIDY4MjY5LCAKKyAgICA2ODI3NSwgNjgyODMsIDY4MjkwLCA2NDI2LCA0NjkzLCA2ODI5NSwgMzUwNjgsIDY4MzAxLCA2ODMwNCwgNjgzMTAsIAorICAgIDY4MzE3LCA2ODMyMiwgNjgzMjcsIDI1NTE2LCA2ODMzMSwgNjgzMzcsIDY4MzQzLCA2ODM0OCwgNjgzNTMsIDY4MzU3LCAKKyAgICA2ODM2MywgNjgzNjksIDM2MzQ5LCAxMDg0LCAzOTA5OSwgNDA4MzQsIDQwODQwLCAzNTE3NywgMzUxODIsIDY4Mzc0LCAKKyAgICA2ODM3OCwgNjgzODIsIDY4Mzg1LCA2ODM5OCwgNjg0MDQsIDY4NDA4LCA2ODQxMSwgNjg0MTYsIDM2Njg2LCA2ODQyMCwgCisgICAgMzM4NjAsIDIzMTU4LCA2ODQyNiwgNjM1NSwgNjM2MywgOTY2MCwgNjg0MjksIDY4NDM0LCA2ODQzOSwgNjg0NDQsIDY4NDQ5LCAKKyAgICA2ODQ1NCwgNjg0NTksIDY4NDY0LCA2ODQ2OSwgNjg0NzQsIDY4NDgwLCA2ODQ4NSwgNjg0OTAsIDY4NDk2LCA2ODUwMSwgCisgICAgNjg1MDYsIDY4NTExLCA2ODUxNiwgNjg1MjEsIDY4NTI2LCA2ODUzMiwgNjg1MzcsIDY4NTQzLCA2ODU0OCwgNjg1NTMsIAorICAgIDY4NTU4LCA2ODU2MywgNjg1NjgsIDY4NTczLCA2ODU3OCwgNjg1ODMsIDY4NTg4LCA2ODU5MywgNjg1OTksIDY4NjA0LCAKKyAgICA2ODYwOSwgNjg2MTQsIDY4NjE5LCA2ODYyNCwgNjg2MjksIDY4NjM1LCA2ODY0MCwgNjg2NDUsIDY4NjUwLCA2ODY1NSwgCisgICAgNjg2NjAsIDY4NjY1LCA2ODY3MCwgNjg2NzUsIDY4NjgwLCA2ODY4NiwgNjg2OTEsIDY4Njk2LCA2ODcwMSwgNjg3MDYsIAorICAgIDY4NzEyLCA2ODcxOCwgNjg3MjMsIDY4NzI5LCA2ODczNCwgNjg3MzksIDY4NzQ0LCA2ODc0OSwgNjg3NTQsIDE0OTIsIDE1NiwgCisgICAgNjg3NTksIDY4NzYzLCA2ODc2NywgNjg3NzEsIDI3MzA2LCA2ODc3NSwgNjg3NzksIDY4Nzg0LCA2ODc4OCwgNjg3OTMsIAorICAgIDY4Nzk3LCA2ODgwMiwgNjg4MDcsIDY4ODEyLCA2ODgxNiwgNjg4MjAsIDY4ODI1LCA2ODgyOSwgMTQ2NTIsIDY4ODM0LCAKKyAgICA2ODgzOCwgNjg4NDUsIDY4ODU1LCAxNjcxOCwgNjg4NjQsIDY4ODczLCA2ODg3NywgNjg4ODIsIDY4ODg3LCA2ODg5MSwgCisgICAgNjg4OTUsIDI3MTAwLCAzMDY3LCA2ODg5OSwgNjg5MDUsIDE5MTQ0LCA2ODkwOSwgNjg5MTgsIDY4OTI2LCA2ODkzMiwgCisgICAgNjg5MzcsIDY4OTQ5LCA2ODk2MSwgNjg5NjYsIDY4OTcwLCA2ODk3NSwgNjg5NzksIDY4OTg1LCA2ODk5MSwgNjg5OTYsIAorICAgIDY5MDA2LCA2OTAxNiwgNjkwMjIsIDY5MDI3LCA2OTAzMSwgNjkwMzcsIDY5MDQyLCA2OTA0OSwgNjkwNTUsIDY5MDYwLCAKKyAgICA2OTA2OSwgNjkwNzgsIDY5MDg2LCA2OTA5MCwgMTcxMjksIDY5MDkzLCA2OTEwMiwgNjkxMTAsIDY5MTIyLCA2OTEzMywgCisgICAgNjkxNDQsIDY5MTUzLCA2OTE1NywgNjkxNjYsIDY5MTc0LCA2OTE4NCwgNjkxOTIsIDY5MTk5LCA2OTIwNSwgNjkyMTAsIAorICAgIDY5MjE5LCA2OTIyNSwgNjkyMzAsIDY5MjQxLCA2MCwgMzM2NTgsIDY5MjQ3LCAyODU4NiwgMjg1OTYsIDY5MjUzLCA2OTI2MSwgCisgICAgNjkyNjgsIDY5Mjc0LCA2OTI3OCwgNjkyODgsIDY5Mjk5LCA2OTMwNywgNjkzMTYsIDY5MzIxLCA2OTMyNiwgNjkzMzEsIAorICAgIDY5MzM1LCA2OTMzOSwgMTkwOTgsIDY5MzQ3LCA2OTM1MSwgNjkzNTcsIDY5MzY3LCA2OTM3NCwgNjkzODAsIDY5Mzg2LCAKKyAgICAzODEwMywgNjkzOTAsIDY5MzkyLCA2OTM5NSwgNjk0MDEsIDY5NDA1LCA2OTQxNiwgNjk0MjYsIDY5NDMyLCA2OTQzOSwgCisgICAgNjk0NDYsIDE0NTg5LCA2OTQ1NCwgNjk0NjAsIDY5NDY5LCA2OTQ3OCwgNjk0ODQsIDEwNzEzLCA2OTQ5MCwgNjk0OTYsIAorICAgIDY5NTAxLCA2OTUwNiwgNjk1MTMsIDY5NTE4LCA2OTUyNSwgNjk1MzEsIDY5NTM2LCA2OTU0NCwgNjk1NTcsIDY5NTY2LCAKKyAgICA2OTU3NSwgNjY0NzEsIDY2NDgxLCA2OTU4NSwgNjk1OTEsIDY5NTk3LCA2OTYwNCwgNjk2MTEsIDY5NjE4LCA2OTYyNSwgCisgICAgNjk2MzIsIDY5NjM3LCA2OTY0MSwgNjk2NDUsIDY5NjQ4LCA2OTY1OCwgNjk2NjIsIDY5Njc0LCA2OTY4MywgNjk2ODcsIAorICAgIDY5Njk4LCA2OTcwMywgNjk3MDcsIDY2NDkwLCA2OTcxMywgNjk3MjAsIDY5NzI5LCA2OTczNywgNjk3NDUsIDY5NzUwLCAKKyAgICA2OTc1NCwgNjk3NTksIDY5NzY0LCA2OTc3NCwgNjk3ODIsIDY5Nzg3LCA2OTc5MSwgNjk3OTUsIDY5ODAxLCA2OTgwOSwgCisgICAgNjk4MTYsIDY5ODI4LCA2OTgzNiwgNjk4NDcsIDY5ODU0LCA2OTg2MCwgNjk4NzAsIDY5ODc2LCA2OTg4MCwgNjk4ODksIAorICAgIDY5ODk4LCA2OTkwNSwgNjk5MTEsIDY5OTE2LCA2OTkyMCwgNjk5MjQsIDY5OTI4LCA2OTkzNywgNjk5NDYsIDY5OTU1LCAKKyAgICA2OTk2MSwgNjk5NjcsIDY5OTczLCA2OTk3OCwgNjk5ODUsIDY5OTkxLCA2OTk5OSwgNzAwMDYsIDcwMDEyLCAxMzczMiwgCisgICAgNzAwMTcsIDcwMDIzLCA3MDAyNywgMTU2NDYsIDcwMDMxLCA3MDAzNiwgNzAwNDYsIDcwMDU1LCA3MDA2MSwgNzAwNjcsIAorICAgIDcwMDc1LCA3MDA4MiwgNzAwODYsIDcwMDkwLCA3MDA5NywgNzAxMDMsIDcwMTExLCA3MDExOCwgNzAxMjQsIDcwMTM1LCAKKyAgICA3MDEzOSwgNzAxNDMsIDcwMTQ3LCA3MDE1MCwgNzAxNTYsIDcwMTYxLCA3MDE2NiwgNzAxNzAsIDcwMTc0LCA3MDE4MywgCisgICAgNzAxOTEsIDcwMTk4LCA3MDIwNCwgNzAyMTEsIDI2MTg5LCA0Mzg3MywgNzAyMTYsIDcwMjI0LCA3MDIyOCwgNzAyMzIsIAorICAgIDcwMjM1LCA3MDI0MywgNzAyNTAsIDcwMjU2LCA3MDI2NSwgNzAyNzMsIDcwMjc5LCA3MDI4NCwgNzAyODgsIDcwMjkzLCAKKyAgICA3MDI5OCwgNzAzMDIsIDcwMzA2LCA3MDMxMCwgNzAzMTUsIDcwMzI0LCA3MDMyOCwgNzAzMzUsIDQwOTQzLCA3MDMzOSwgCisgICAgNzAzNDUsIDcwMzQ5LCA3MDM1NywgNzAzNjMsIDcwMzY4LCA3MDM3OSwgNzAzODcsIDcwMzkzLCA3MDQwMiwgMjQ3MjIsIAorICAgIDcwNDEwLCA3MDQxNywgNzA0MjQsIDcwNDMxLCA3MDQzOCwgNzA0NDUsIDQ3MjAzLCAxNDQyNywgNzA0NTIsIDcwNDU5LCAKKyAgICA3MDQ2NCwgMzgxMzksIDQzNTksIDcwNDcwLCA3MDQ3NSwgNzA0ODAsIDcwNDg2LCA3MDQ5MiwgNzA0OTgsIDcwNTAzLCAKKyAgICA3MDUwOCwgNzA1MTMsIDcwNTE4LCA3MDUyNCwgNzA1MjksIDcwNTM1LCA3MDU0MCwgNzA1NDYsIDcwNTUxLCA3MDU1NiwgCisgICAgNzA1NjEsIDcwNTY2LCA3MDU3MSwgNzA1NzYsIDcwNTgxLCA3MDU4NywgNzA1OTIsIDcwNTk4LCA3MDYwMywgNzA2MDgsIAorICAgIDcwNjEzLCA3MDYxOCwgNzA2MjMsIDcwNjI4LCA3MDYzNCwgNzA2MzksIDcwNjQ0LCA3MDY0OSwgNzA2NTQsIDcwNjU5LCAKKyAgICA3MDY2NCwgNzA2NjksIDcwNjc0LCA3MDY3OSwgNzA2ODQsIDcwNjkwLCA3MDY5NSwgNzA3MDAsIDcwNzA1LCA3MDcxMCwgCisgICAgNzA3MTUsIDcwNzIwLCA3MDcyNSwgNzA3MzAsIDcwNzM2LCA3MDc0MSwgNzA3NDYsIDcwNzUxLCA3MDc1NiwgNzA3NjEsIAorICAgIDcwNzY2LCA3MDc3MSwgNzA3NzYsIDcwNzgxLCA3MDc4NiwgNzA3OTEsIDcwNzk2LCA3MDgwMiwgMTgzOSwgMjcyLCA3MDgwNywgCisgICAgNDE4MDMsIDcwODExLCA3MDgxNCwgNzA4MTksIDcwODIzLCA3MDgyNiwgMzQwNCwgNzA4MzEsIDcwODM2LCA3MDg0MCwgCisgICAgNzA4NDksIDcwODYwLCA3MDg3NywgNzA4OTUsIDY5NzQxLCA3MDkwMywgNzA5MDYsIDcwOTE2LCA3MDkyMywgNzA5MzIsIAorICAgIDcwOTQ4LCA3MDk1NywgNzA5NjcsIDcwOTcyLCA3MDk4MiwgNzA5OTEsIDcwOTk5LCA3MTAxMywgNzEwMjEsIDcxMDI1LCAKKyAgICA3MTAyOCwgNzEwMzUsIDcxMDQxLCA3MTA1MiwgNzEwNTksIDcxMDcxLCA3MTA4MiwgNzEwOTMsIDcxMTAyLCA3MTEwOSwgCisgICAgMTI1OSwgNzI3LCA3MTExOSwgMjYxOCwgNzExMjMsIDcxMTI4LCA3MTEzNywgOTI3NiwgMTkwNzEsIDIyNjU1LCA3MTE0NSwgCisgICAgNzExNTMsIDcxMTY3LCA3MTE4MCwgNzExODQsIDcxMTg5LCA3MTE5NCwgNzExOTksIDcxMjA1LCA3MTIxMSwgNzEyMTYsIAorICAgIDg5NjYsIDE2NzQ2LCA3MTIyMSwgNzEyMjUsIDcxMjMzLCA5Mzg0LCA3MTIzOCwgNzEyNDQsIDcxMjUzLCA3MTI2MSwgMTcxNywgCisgICAgMTIxODQsIDkzNSwgNjQ4OSwgNzEyNjUsIDcxMjY5LCA3MTI3OCwgNzEyODgsIDI0MDQsIDI5MzgyLCA3MTI5NywgNzEzMDMsIAorICAgIDE4NTcxLCAyOTM5NywgNzEzMDksIDQyMDcsIDEyNTYyLCA3MTMxNSwgNzEzMjIsIDY2MjAzLCA3MTMyNiwgNzEzMzAsIAorICAgIDcxMzM2LCA3MTM0MSwgNzEzNDYsIDM2MjMsIDE2MCwgMzY0OSwgNzEzNTEsIDcxMzYzLCA3MTM2NywgNzEzNzMsIDcxMzc4LCAKKyAgICAzMDE4MSwgNzEzODIsIDEyNTUwLCAyNzU4LCA0LCA3MTM4NywgNzEzOTcsIDcxNDA4LCA3MTQxNCwgNzE0MjUsIDcxNDMyLCAKKyAgICA3MTQzOCwgNzE0NDQsIDcxNDUyLCA3MTQ1OSwgNzE0NjUsIDcxNDc1LCA3MTQ4NSwgNzE0OTUsIDcxNTA0LCAyNTU5MywgCisgICAgMTI3MSwgNzE1MDksIDcxNTEzLCA3MTUxNywgNzE1MjMsIDcxNTI3LCAyNzgxLCAyNzg3LCA4OTYzLCAyMjc5LCA3MTUzMSwgCisgICAgNzE1MzUsIDcxNTQ0LCA3MTU1MiwgNzE1NjMsIDcxNTcxLCA3MTU3OSwgNzE1ODUsIDcxNTkwLCA3MTYwMSwgNzE2MTIsIAorICAgIDcxNjIwLCA3MTYyNiwgNzE2MzEsIDEwNTMyLCA3MTY0MSwgNzE2NDksIDcxNjUzLCA3MTY1NywgNzE2NjIsIDcxNjY2LCAKKyAgICA3MTY3OCwgMzA1OTcsIDE2NjcxLCA3MTY4NSwgNzE2OTUsIDcxNzAxLCA3MTcwNywgMTA2MzQsIDcxNzE3LCA3MTcyOCwgCisgICAgNzE3MzksIDcxNzQ5LCA3MTc1OCwgNzE3NjIsIDcxNzY5LCAxNzMxLCAxMDI5LCA3MTc3OSwgNzE3ODQsIDcxNzkyLCAKKyAgICA2NjAwOSwgNzE4MDAsIDcxODA1LCA3MTgxNiwgNzE4MjMsIDcxODM3LCAxNTQ4MywgNDg0LCA3MTg0NywgNzE4NTEsIAorICAgIDcxODU1LCA3MTg2MywgNzE4NzIsIDcxODgwLCA3MTg4NiwgNzE5MDAsIDcxOTA3LCA3MTkxMywgNzE5MjIsIDcxOTI5LCAKKyAgICA3MTkzOSwgNzE5NDcsIDcxOTU0LCA3MTk2MiwgNzE5NjksIDQwMjksIDE0NCwgNzE5NzcsIDcxOTg4LCA3MTk5MiwgNzIwMDQsIAorICAgIDcyMDEwLCAxMjc0MywgMTk4LCA3MjAxNSwgOTk2MSwgNzIwMjAsIDI4MjYsIDcyMDI0LCA3MjAzMSwgNzIwMzcsIDcyMDQ4LCAKKyAgICA3MjA1NiwgNzIwNjMsIDkzMzUsIDcyMDcwLCA3MjA3OSwgNzIwODcsIDQxMDcsIDcyMTAwLCA0MTI0LCA3MjEwNCwgNzIxMDksIAorICAgIDcyMTE1LCA3MjEyMCwgNzIxMjUsIDcyMTMwLCAyODMxLCA1MjAsIDcyMTM2LCA3MjE0OSwgNzIxNTMsIDcyMTU4LCAyODM2LCAKKyAgICAxODM4LCA4MjksIDcyMTYyLCA0MTI4LCA3MjE3MCwgNzIxNzYsIDcyMTgwLCA4NzMsIDcyMTkwLCA3MjE5OSwgNzIyMDQsIAorICAgIDM2NDAsIDcyMjA4LCAxNjQyNywgMTY0MzQsIDUwNTY1LCA3MjIxMiwgNDE1OSwgNDAzOSwgMTQzMTAsIDcyMjIwLCA3MjIyNywgCisgICAgNzIyMzIsIDI1NjU3LCA3MjIzNiwgNzIyNDMsIDcyMjQ5LCA3MjI1NCwgNzIyNTksIDE2NDQ3LCAxOTIsIDcyMjY0LCAKKyAgICA3MjI3NiwgNzIyODIsIDcyMjkwLCAyODQ4LCAxNzQ5LCA3MjI5OCwgNzIzMDAsIDcyMzA1LCA3MjMxMCwgNzIzMTUsIAorICAgIDcyMzIxLCA3MjMyNiwgNzIzMzEsIDcyMzM2LCA3MjM0MSwgNzIzNDYsIDcyMzUxLCA3MjM1NywgNzIzNjIsIDcyMzY3LCAKKyAgICA3MjM3MiwgNzIzNzcsIDcyMzgyLCA3MjM4NywgNzIzOTIsIDcyMzk3LCA3MjQwMywgNzI0MDgsIDcyNDEzLCA3MjQxOCwgCisgICAgNzI0MjQsIDcyNDI5LCA3MjQzNSwgNzI0NDAsIDcyNDQ1LCA3MjQ1MCwgNzI0NTUsIDcyNDYwLCA3MjQ2NSwgNzI0NzAsIAorICAgIDcyNDc2LCA3MjQ4MSwgNzI0ODcsIDcyNDkyLCA3MjQ5NywgNzI1MDIsIDcyNTA3LCA3MjUxMiwgNzI1MTcsIDcyNTIyLCAKKyAgICA3MjUyNywgNzI1MzMsIDcyNTM5LCA3MjU0NCwgNzI1NDksIDcyNTU1LCA3MjU2MCwgNzI1NjQsIDcyNTY4LCA3MjU3MywgCisgICAgNzI1NzksIDcyNTgzLCA3MjU4OSwgNzI1OTQsIDcyNTk5LCA3MjYwNSwgNzI2MTAsIDcyNjE0LCA3MjYxOSwgNzI2MjQsIAorICAgIDcyNjI4LCA3MjYzMSwgNzI2MzMsIDcyNjM3LCA3MjY0MCwgNzI2NDcsIDcyNjUyLCA3MjY1NiwgNzI2NjEsIDcyNjY1LCAKKyAgICA3MjY2OSwgNzI2NzMsIDcyNjgyLCA3MjY4NiwgMzUzODIsIDcyNjg5LCAzNTM4NywgNzI2OTYsIDcyNzAxLCAzNTM5MiwgCisgICAgNzI3MTAsIDcyNzE5LCAzNTM5OCwgNzI3MjQsIDM1NDAzLCA3MjczMywgNzI3MzgsIDEyNzg2LCA3Mjc0MiwgNzI3NDcsIAorICAgIDcyNzUyLCAzNTQwOCwgNzI3NTYsIDQ1Mzk4LCA3Mjc2MCwgNzI3NjMsIDcyNzY3LCA4NjM0LCA3Mjc3MywgNzI3NzYsIAorICAgIDcyNzgxLCA3Mjc4NiwgNzI3OTAsIDM4ODcsIDM1NDEzLCA3Mjc5MywgNzI3OTcsIDcyODAwLCA3MjgxMSwgNzI4MTYsIAorICAgIDcyODIwLCA3MjgyNiwgNzI4MzQsIDcyODQ3LCA3Mjg1NSwgNzI4NjQsIDcyODcwLCA3Mjg3NSwgNzI4ODEsIDcyODg1LCAKKyAgICA3Mjg5MSwgNzI4OTcsIDcyOTA1LCA3MjkxMCwgNzI5MTQsIDcyOTIxLCA3MjkyNywgNzI5MzUsIDcyOTQ0LCA3Mjk1MiwgCisgICAgMzU0MTYsIDcyOTU5LCA3Mjk2OSwgNzI5ODIsIDcyOTg3LCA3Mjk5MiwgNzI5OTYsIDczMDA1LCA3MzAxMSwgNzMwMTgsIAorICAgIDczMDI5LCA3MzA0MSwgNzMwNDgsIDczMDU3LCA3MzA2NiwgNzMwNzUsIDczMDgyLCA3MzA4OCwgNzMwOTUsIDczMTAzLCAKKyAgICA3MzExMCwgNzMxMTgsIDczMTI3LCA3MzEzNSwgNzMxNDIsIDczMTUwLCA3MzE1OSwgNzMxNjcsIDczMTc2LCA3MzE4NiwgCisgICAgNzMxOTUsIDczMjAzLCA3MzIxMCwgNzMyMTgsIDczMjI3LCA3MzIzNSwgNzMyNDQsIDczMjU0LCA3MzI2MywgNzMyNzEsIAorICAgIDczMjgwLCA3MzI5MCwgNzMyOTksIDczMzA5LCA3MzMyMCwgNzMzMzAsIDczMzM5LCA3MzM0NywgNzMzNTQsIDczMzYyLCAKKyAgICA3MzM3MSwgNzMzNzksIDczMzg4LCA3MzM5OCwgNzM0MDcsIDczNDE1LCA3MzQyNCwgNzM0MzQsIDczNDQzLCA3MzQ1MywgCisgICAgNzM0NjQsIDczNDc0LCA3MzQ4MywgNzM0OTEsIDczNTAwLCA3MzUxMCwgNzM1MTksIDczNTI5LCA3MzU0MCwgNzM1NTAsIAorICAgIDczNTU5LCA3MzU2OSwgNzM1ODAsIDczNTkwLCA3MzYwMSwgNzM2MTMsIDczNjI0LCA3MzYzNCwgNzM2NDMsIDczNjUxLCAKKyAgICA3MzY1OCwgNzM2NjYsIDczNjc1LCA3MzY4MywgNzM2OTIsIDczNzAyLCA3MzcxMSwgNzM3MTksIDczNzI4LCA3MzczOCwgCisgICAgNzM3NDcsIDczNzU3LCA3Mzc2OCwgNzM3NzgsIDczNzg3LCA3Mzc5NSwgNzM4MDQsIDczODE0LCA3MzgyMywgNzM4MzMsIAorICAgIDczODQ0LCA3Mzg1NCwgNzM4NjMsIDczODczLCA3Mzg4NCwgNzM4OTQsIDczOTA1LCA3MzkxNywgNzM5MjgsIDczOTM4LCAKKyAgICA3Mzk0NywgNzM5NTUsIDczOTY0LCA3Mzk3NCwgNzM5ODMsIDczOTkzLCA3NDAwNCwgNzQwMTQsIDc0MDIzLCA3NDAzMywgCisgICAgNzQwNDQsIDc0MDU0LCA3NDA2NSwgNzQwNzcsIDc0MDg4LCA3NDA5OCwgNzQxMDcsIDc0MTE3LCA3NDEyOCwgNzQxMzgsIAorICAgIDc0MTQ5LCA3NDE2MSwgNzQxNzIsIDc0MTgyLCA3NDE5MywgNzQyMDUsIDc0MjE2LCA3NDIyOCwgNzQyNDEsIDc0MjUzLCAKKyAgICA3NDI2NCwgNzQyNzQsIDc0MjgzLCA3NDI5MSwgNzQyOTgsIDc0MzA2LCA3NDMxNSwgNzQzMjMsIDc0MzMyLCA3NDM0MiwgCisgICAgNzQzNTEsIDc0MzU5LCA3NDM2OCwgNzQzNzgsIDc0Mzg3LCA3NDM5NywgNzQ0MDgsIDc0NDE4LCA3NDQyNywgNzQ0MzUsIAorICAgIDc0NDQ0LCA3NDQ1NCwgNzQ0NjMsIDc0NDczLCA3NDQ4NCwgNzQ0OTQsIDc0NTAzLCA3NDUxMywgNzQ1MjQsIDc0NTM0LCAKKyAgICA3NDU0NSwgNzQ1NTcsIDc0NTY4LCA3NDU3OCwgNzQ1ODcsIDc0NTk1LCA3NDYwNCwgNzQ2MTQsIDc0NjIzLCA3NDYzMywgCisgICAgNzQ2NDQsIDc0NjU0LCA3NDY2MywgNzQ2NzMsIDc0Njg0LCA3NDY5NCwgNzQ3MDUsIDc0NzE3LCA3NDcyOCwgNzQ3MzgsIAorICAgIDc0NzQ3LCA3NDc1NywgNzQ3NjgsIDc0Nzc4LCA3NDc4OSwgNzQ4MDEsIDc0ODEyLCA3NDgyMiwgNzQ4MzMsIDc0ODQ1LCAKKyAgICA3NDg1NiwgNzQ4NjgsIDc0ODgxLCA3NDg5MywgNzQ5MDQsIDc0OTE0LCA3NDkyMywgNzQ5MzEsIDc0OTQwLCA3NDk1MCwgCisgICAgNzQ5NTksIDc0OTY5LCA3NDk4MCwgNzQ5OTAsIDc0OTk5LCA3NTAwOSwgNzUwMjAsIDc1MDMwLCA3NTA0MSwgNzUwNTMsIAorICAgIDc1MDY0LCA3NTA3NCwgNzUwODMsIDc1MDkzLCA3NTEwNCwgNzUxMTQsIDc1MTI1LCA3NTEzNywgNzUxNDgsIDc1MTU4LCAKKyAgICA3NTE2OSwgNzUxODEsIDc1MTkyLCA3NTIwNCwgNzUyMTcsIDc1MjI5LCA3NTI0MCwgNzUyNTAsIDc1MjU5LCA3NTI2OSwgCisgICAgNzUyODAsIDc1MjkwLCA3NTMwMSwgNzUzMTMsIDc1MzI0LCA3NTMzNCwgNzUzNDUsIDc1MzU3LCA3NTM2OCwgNzUzODAsIAorICAgIDc1MzkzLCA3NTQwNSwgNzU0MTYsIDc1NDI2LCA3NTQzNywgNzU0NDksIDc1NDYwLCA3NTQ3MiwgNzU0ODUsIDc1NDk3LCAKKyAgICA3NTUwOCwgNzU1MjAsIDc1NTMzLCA3NTU0NSwgNzU1NTgsIDc1NTcyLCA3NTU4NSwgNzU1OTcsIDc1NjA4LCA3NTYxOCwgCisgICAgNzU2MjcsIDc1NjM1LCA3NTY0MiwgNzU2NDcsIDg0NTEsIDc1NjU0LCAzNTQyNiwgNzU2NTksIDc1NjY0LCAzNTQzMSwgCisgICAgNzU2NzAsIDIyNzYzLCAzNTQzNiwgNzU2NzUsIDc1NjgxLCA3NTY4OSwgNzU2OTUsIDc1NzAxLCA3NTcwOCwgNzU3MTUsIAorICAgIDc1NzIwLCA3NTcyNSwgNzU3MjksIDc1NzMzLCA3NTczNiwgNzU3NDAsIDc1NzQ5LCA3NTc1OCwgNzU3NjYsIDc1NzcyLCAKKyAgICA3NTc4NCwgNzU3OTUsIDc1Nzk5LCAzMTI5LCA4NDI2LCA3NTgwNCwgNzU4MDcsIDc1ODA5LCA3NTgxMywgNzU4MTcsIAorICAgIDc1ODIxLCA3NTgyNywgNzU4MzIsIDI4MjQwLCA3NTgzNywgNzU4NDEsIDc1ODQ0LCA3NTg0OSwgNzU4NTMsIDc1ODYwLCAKKyAgICA3NTg2NiwgNzU4NzAsIDY1MDksIDc1ODc0LCAzNTQ1MywgNzU4NzksIDc1ODg2LCA3NTg5NSwgNzU5MDMsIDc1OTE0LCAKKyAgICA3NTkyMiwgNzU5MzEsIDc1OTM5LCA3NTk0NiwgNzU5NTMsIDc1OTU5LCA3NTk3MCwgMzU0NTgsIDc1OTc1LCA3NTk4NiwgCisgICAgNzU5OTgsIDc2MDA2LCA3NjAxNywgNzYwMjYsIDc2MDM0LCA3NjA0NSwgNzYwNTAsIDc2MDU4LCAyNTgwLCA3NjA2MywgCisgICAgMzc1NTIsIDc2MDc2LCA3NjA4MCwgNzYwOTIsIDc2MTAwLCA3NjEwNSwgNzYxMTMsIDc2MTI0LCAxOTI5MSwgNzYxMzMsIAorICAgIDc2MTM5LCA3NjE0NiwgNzYxNTQsIDc2MTYwLCAzNTQ2OCwgNzYxNjUsIDQxNTMsIDYzNTcwLCA3NjE3MiwgNzYxNzUsIAorICAgIDc2MTgzLCA3NjE5NiwgNzYyMDksIDc2MjIyLCA3NjIzNSwgNzYyNDIsIDc2MjUzLCA3NjI2MiwgNzYyNjcsIDQ3MDIwLCAKKyAgICA0NzAyNSwgNzYyNzEsIDc2Mjc1LCA3NjI4MywgNzYyOTAsIDc2Mjk5LCA3NjMwNywgNzYzMTMsIDc2MzIyLCA3NjMzMCwgCisgICAgNzYzMzcsIDc2MzQ1LCA3NjM0OSwgNzYzNTgsIDc2MzY3LCA3NjM3NywgNzYzOTAsIDc2NDAzLCA3NjQxMywgMzU0NzMsIAorICAgIDc2NDE5LCA3NjQyNiwgNzY0MzIsIDc2NDM4LCAzNTQ3OSwgNzY0NDMsIDc2NDQ2LCA3NjQ1MCwgNzY0NTgsIDc2NDY3LCAKKyAgICA0Njc1OCwgNzY0NzUsIDc2NDg0LCA3NjQ5MiwgNzY0OTksIDc2NTA3LCA3NjUxNywgNzY1MjYsIDc2NTM1LCAzNjc4NSwgCisgICAgNzY1NDQsIDc2NTU1LCA3NjU3MCwgNzY1ODAsIDk5OTQsIDIzNDY3LCA3NjU4OSwgNzY1OTQsIDc2NTk5LCA3NjYwMywgCisgICAgMTc3NjMsIDc2NjA4LCA3NjYxMywgNzY2MTksIDc2NjI0LCA3NjYyOSwgNzY2MzUsIDc2NjQwLCA3NjY0NSwgMjM0MzIsIAorICAgIDc2NjUwLCA3NjY1NywgNzY2NjUsIDc2NjczLCA3NjY4MSwgNzY2ODYsIDc2NjkzLCA3NjcwMCwgNzY3MDUsIDIyNTcsIAorICAgIDc2NzA5LCA3NjcxMywgNzY3MjEsIDc2NzI5LCAzNTQ5NiwgNzY3MzUsIDc2NzQxLCA3Njc1MywgNzY3NTksIDc2NzY2LCAKKyAgICA3Njc3MCwgNzY3NzcsIDc2NzgyLCA3Njc4OSwgNzY3OTUsIDc2ODAyLCA3NjgxMywgNzY4MjMsIDc2ODMzLCA3Njg0NSwgCisgICAgNzY4NTEsIDc2ODU5LCA3Njg2NSwgNzY4NzUsIDc2ODg1LCAzNTUyMywgNzY4OTQsIDc2OTAzLCA3NjkwOSwgNzY5MjEsIAorICAgIDc2OTMyLCA3NjkzOSwgNzY5NDQsIDc2OTQ4LCA3Njk1NiwgNzY5NjIsIDc2OTY3LCA3Njk3MiwgNzY5NzksIDc2OTg3LCAKKyAgICA3Njk5OSwgNzcwMDksIDc3MDE4LCA3NzAyNywgNzcwMzUsIDc3MDQyLCAzNzQwNSwgMjU5OTAsIDc3MDQ4LCA3NzA1MywgCisgICAgNzcwNTcsIDc3MDYxLCA3NzA2NiwgNzcwNzQsIDc3MDgwLCA3NzA5MSwgNzcxMDQsIDc3MTA5LCA3NzExNiwgMzU1MjgsIAorICAgIDc3MTIxLCA3NzEzMywgNzcxNDIsIDc3MTUwLCA3NzE2MCwgNzcxNzEsIDc3MTg0LCA3NzE5MSwgNzcyMDAsIDc3MjA5LCAKKyAgICA3NzIxNywgNzcyMjIsIDc3MjI4LCAxNDgxLCA3NzIzMywgNzcyMzgsIDc3MjQzLCA3NzI0OCwgNzcyNTQsIDc3MjU5LCAKKyAgICA3NzI2NCwgNzcyNzAsIDc3Mjc2LCA3NzI4MSwgNzcyODUsIDc3MjkwLCA3NzI5NSwgNzczMDAsIDY0MTMwLCA3NzMwNSwgCisgICAgNzczMTAsIDc3MzE1LCA3NzMyMCwgNzczMjYsIDc3MzMyLCA3NzMzNywgNzczNDEsIDc3MzQ2LCAxNzc2MiwgNzczNTEsIAorICAgIDc3MzU3LCA3NzM2MiwgNzczNjgsIDc3MzczLCA3NzM3OCwgNzczODMsIDc3Mzg4LCA3NzM5MiwgNzczOTgsIDc3NDAzLCAKKyAgICA3NzQxMiwgNzc0MTcsIDc3NDIyLCA3NzQyNywgNzc0MzIsIDc3NDM2LCA3NzQ0MywgNzc0NDksIDQ0NTAsIDE4OTE0LCAKKyAgICAzMDk0LCA3NzQ1NCwgNzc0NTgsIDc3NDYzLCA3NzQ2NywgNzc0NzEsIDc3NDc1LCA1MDgyMCwgNzc0NzksIDc3NDA0LCAKKyAgICA3NzQ4MSwgNzc0OTEsIDM1NTM3LCA3NzQ5NCwgNzc0OTksIDc3NTA4LCA3NzUxNCwgNjQ3OCwgMzU1NDIsIDc3NTE4LCAKKyAgICA3NzUyNCwgNzc1MjksIDc3NTM1LCA3NzU0MCwgNzc1NDQsIDc3NTUxLCA3NzU1NiwgNzc1NjYsIDc3NTc1LCA3NzU3OSwgCisgICAgNzc1ODUsIDc3NTkxLCA3NzU5NywgNzc2MDEsIDc3NjA5LCA3NzYxNiwgNzc2MjQsIDc3NjMyLCAzNTU0NywgNzc2MzksIAorICAgIDc3NjQyLCA3NzY0OSwgNzc2NTUsIDc3NjYwLCA3NzY2NCwgNzc2NzAsIDc3Njc4LCA3NzY4NSwgNzc2OTAsIDc3Njk0LCAKKyAgICA3NzcwMywgNzc3MTEsIDc3NzE3LCA3NzcyMiwgMzU1NTIsIDc3NzI5LCA3Nzc0MSwgNzc3NDgsIDc3NzU0LCA3Nzc1OSwgCisgICAgNzc3NjUsIDc3NzcyLCA3Nzc3OCwgMjMxNzEsIDI5ODU1LCA3Nzc4NCwgNzc3ODksIDc3Nzk1LCA3Nzc5OSwgNzc4MTEsIAorICAgIDc3NDM3LCA3NzQ0NCwgMjMzNjQsIDc3ODIxLCA3NzgyNiwgNzc4MzMsIDc3ODM5LCA3Nzg0NiwgNzc4NTIsIDc3ODYzLCAKKyAgICA3Nzg2OCwgNzc4NzYsIDk2OTksIDc3ODgxLCA3Nzg4NCwgNzc4OTAsIDc3ODk0LCA3Nzg5OCwgNzc5MDEsIDc3OTA3LCAKKyAgICA3NzkxMywgMzUyOTAsIDQ0NTEsIDEwOTMsIDE0NzA2LCA3NzkyMCwgNzc5MjYsIDc3OTMyLCA3NzkzOCwgNzc5NDQsIAorICAgIDc3OTUwLCA3Nzk1NiwgNzc5NjIsIDc3OTY4LCA3Nzk3MywgNzc5NzgsIDc3OTgzLCA3Nzk4OCwgNzc5OTMsIDc3OTk4LCAKKyAgICA3ODAwMywgNzgwMDgsIDc4MDEzLCA3ODAxOCwgNzgwMjMsIDc4MDI4LCA3ODAzMywgNzgwMzksIDc4MDQ0LCA3ODA0OSwgCisgICAgNzgwNTUsIDc4MDYwLCA3ODA2NSwgNzgwNzEsIDc4MDc3LCA3ODA4MywgNzgwODksIDc4MDk1LCA3ODEwMSwgNzgxMDcsIAorICAgIDc4MTEzLCA3ODExOSwgNzgxMjQsIDc4MTI5LCA3ODEzNSwgNzgxNDAsIDc4MTQ1LCA3ODE1MSwgNzgxNTYsIDc4MTYxLCAKKyAgICA3ODE2NiwgNzgxNzEsIDc4MTc2LCA3ODE4MSwgNzgxODYsIDc4MTkxLCA3ODE5NiwgNzgyMDEsIDc4MjA2LCA3ODIxMSwgCisgICAgNzgyMTcsIDc4MjIyLCA3ODIyNywgNzgyMzIsIDc4MjM4LCA3ODI0MywgNzgyNDgsIDc4MjUzLCA3ODI1OCwgNzgyNjQsIAorICAgIDc4MjY5LCA3ODI3NCwgNzgyNzksIDc4Mjg0LCA3ODI4OSwgNzgyOTQsIDc4Mjk5LCA3ODMwNCwgNzgzMDksIDc4MzE0LCAKKyAgICA3ODMxOSwgNzgzMjQsIDc4MzI5LCA3ODMzNCwgNzgzMzksIDc4MzQ0LCA3ODM0OSwgNzgzNTQsIDc4MzU5LCA3ODM2NSwgCisgICAgNzgzNzAsIDc4Mzc1LCA3ODM4MCwgNzgzODUsIDc4MzkwLCA3ODM5NSwgNzg0MDAsIDE4NzUsIDE2OSwgNzg0MDUsIDc4NDA5LCAKKyAgICA3ODQxMywgNzg0MTgsIDc4NDI2LCA3ODQzMCwgNzg0MzcsIDc4NDQ1LCA3ODQ0OSwgNzg0NjIsIDc4NDcwLCA3ODQ3NSwgCisgICAgNzg0ODAsIDI4NjQ5LCA3ODQ4NCwgNzg0ODksIDc4NDkzLCA3ODQ5OCwgNzg1MDIsIDc4NTEwLCA3ODUxNCwgMjI3NzEsIAorICAgIDc4NTE5LCA3ODUyMywgNjY3MTQsIDc4NTI3LCA3ODUzMCwgNzg1MzgsIDc4NTQ2LCA3ODU1NCwgNzg1NTksIDc4NTY0LCAKKyAgICA3ODU3MSwgNzg1NzgsIDc4NTg0LCA3ODU5MCwgNzg1OTUsIDc4NjAyLCA3ODYwNywgNzg2MTUsIDcxMTcyLCA3ODYyMiwgCisgICAgNjY1MDAsIDc4NjI3LCA3ODYzMiwgNzg2MzYsIDc4NjQzLCA2NjUyNywgMTI4NTMsIDc4NjQ5LCA3ODY1NCwgNzg2NTksIAorICAgIDc4NjYzLCA3ODY2NiwgNzg2NzUsIDc4NjgxLCA3ODY4NSwgNzg2OTUsIDc4NzA0LCA3ODcwOCwgNzg3MTEsIDc4NzE1LCAKKyAgICA3ODcyMiwgNzg3MzUsIDc4NzQxLCA3ODc0OSwgNzg3NTgsIDc4NzY5LCA3ODc4MCwgNzg3OTEsIDc4ODAyLCA3ODgxMSwgCisgICAgNzg4MTcsIDc4ODI2LCA3ODgzNCwgNzg4NDQsIDc4ODU3LCA3ODg2NSwgNzg4NzIsIDc4ODgzLCA3ODg4OSwgNzg4OTQsIAorICAgIDc4ODk5LCA3ODkwNSwgNzg5MTUsIDc4OTIxLCA3ODkzMSwgNzg5MzgsIDc4OTQ4LCA3ODk1NywgNzcxMjMsIDc4OTY1LCAKKyAgICA3ODk3MSwgNzg5NzksIDc4OTg1LCA3ODk5MiwgNzkwMDAsIDc5MDA1LCA3OTAwOCwgNzkwMTIsIDc5MDE4LCA3OTAyMiwgCisgICAgNzkwMjUsIDc5MDMxLCA3OTAzNywgNzkwNDUsIDc5MDU3LCA3OTA2OSwgNzkwNzYsIDc5MDgxLCA3OTA4NSwgNzkwOTYsIAorICAgIDc5MTA0LCA3OTExMSwgNzkxMjMsIDc5MTMxLCA3OTEzOSwgNzkxNDYsIDc5MTUyLCA3OTE1NywgNzkxNjcsIDc5MTc2LCAKKyAgICA3OTE4MSwgNzkxOTEsIDc5MjAwLCA0NjAzOSwgNzkyMDcsIDc5MjExLCA3OTIxNiwgNzkyMjQsIDc5MjMxLCA3OTIzNywgCisgICAgNzkyNDEsIDc5MjUxLCA3OTI2MiwgNzkyNzAsIDc5Mjc3LCA3OTI4OSwgNzkzMDEsIDc5MzEwLCA3NjA2NiwgNzkzMTcsIAorICAgIDc5MzI3LCA3OTMzOSwgNzkzNTAsIDc5MzY0LCA3OTM3MiwgNzkzODIsIDc5Mzg5LCA3OTM5NywgNzk0MTAsIDc5NDIyLCAKKyAgICA3OTQzMSwgNzk0MzksIDc5NDQ5LCA3OTQ2MCwgNzk0NzIsIDc5NDgxLCA3OTQ5MSwgNzk1MDEsIDc5NTEwLCA3OTUxNywgCisgICAgNzk1MjYsIDc5NTQxLCA3OTU0OSwgNzk1NTksIDc5NTY4LCA3OTU3NiwgNzk1ODksIDYzNTQwLCA3OTYwNCwgNzk2MTQsIAorICAgIDc5NjIzLCA3OTYzNSwgNzk2NDUsIDc5NjU3LCA3OTY2OCwgNzk2ODIsIDc5Njk2LCA3OTcxMCwgNzk3MjQsIDc5NzM4LCAKKyAgICA3OTc1MiwgNzk3NjYsIDc5NzgwLCA3OTc5NCwgNzk4MDgsIDc5ODIyLCA3OTgzNiwgNzk4NTAsIDc5ODY0LCA3OTg3OCwgCisgICAgNzk4OTIsIDc5OTA2LCA3OTkyMCwgNzk5MzQsIDc5OTQ4LCA3OTk2MiwgNzk5NzYsIDc5OTkwLCA4MDAwNCwgODAwMTgsIAorICAgIDgwMDMyLCA4MDA0NiwgODAwNjAsIDgwMDc0LCA4MDA4OCwgODAxMDIsIDgwMTE2LCA4MDEzMCwgODAxNDQsIDgwMTU4LCAKKyAgICA4MDE3MiwgODAxODYsIDgwMjAwLCA4MDIxNCwgODAyMjgsIDgwMjQyLCA4MDI1NiwgODAyNzAsIDgwMjg0LCA4MDI5OCwgCisgICAgODAzMTIsIDgwMzI2LCA4MDM0MCwgODAzNTQsIDgwMzY4LCA4MDM4MiwgODAzOTYsIDgwNDEwLCA4MDQyNCwgODA0MzgsIAorICAgIDgwNDUyLCA4MDQ2NiwgODA0ODAsIDgwNDk0LCA4MDUwOCwgODA1MjIsIDgwNTM2LCA4MDU1MCwgODA1NjQsIDgwNTc4LCAKKyAgICA4MDU5MiwgODA2MDYsIDgwNjIwLCA4MDYzNCwgODA2NDgsIDgwNjYyLCA4MDY3NiwgODA2OTAsIDgwNzA0LCA4MDcxOCwgCisgICAgODA3MzIsIDgwNzQ2LCA4MDc2MCwgODA3NzQsIDgwNzg4LCA4MDgwMiwgODA4MTYsIDgwODMwLCA4MDg0NCwgODA4NTgsIAorICAgIDgwODcyLCA4MDg4NiwgODA5MDAsIDgwOTE0LCA4MDkyOCwgODA5NDIsIDgwOTU2LCA4MDk3MCwgODA5ODQsIDgwOTk4LCAKKyAgICA4MTAxMiwgODEwMjYsIDgxMDQwLCA4MTA1NCwgODEwNjgsIDgxMDgyLCA4MTA5NiwgODExMTAsIDgxMTI0LCA4MTEzOCwgCisgICAgODExNTIsIDgxMTY2LCA4MTE4MCwgODExOTQsIDgxMjA4LCA4MTIyMiwgODEyMzYsIDgxMjUwLCA4MTI2NCwgODEyNzgsIAorICAgIDgxMjkyLCA4MTMwNiwgODEzMjAsIDgxMzM0LCA4MTM0OCwgODEzNjIsIDgxMzc2LCA4MTM5MCwgODE0MDQsIDgxNDE4LCAKKyAgICA4MTQzMiwgODE0NDYsIDgxNDYwLCA4MTQ3NCwgODE0ODgsIDgxNTAyLCA4MTUxNiwgODE1MzAsIDgxNTQ0LCA4MTU1OCwgCisgICAgODE1NzIsIDgxNTg2LCA4MTYwMCwgODE2MTQsIDgxNjI4LCA4MTY0MiwgODE2NTYsIDgxNjcwLCA4MTY4NCwgODE2OTgsIAorICAgIDgxNzEyLCA4MTcyNiwgODE3NDAsIDgxNzU0LCA4MTc2OCwgODE3ODIsIDgxNzk2LCA4MTgxMCwgODE4MjQsIDgxODM4LCAKKyAgICA4MTg1MiwgODE4NjYsIDgxODgwLCA4MTg5NCwgODE5MDgsIDgxOTIyLCA4MTkzNiwgODE5NTAsIDgxOTY0LCA4MTk3OCwgCisgICAgODE5OTIsIDgyMDA2LCA4MjAyMCwgODIwMzQsIDgyMDQ4LCA4MjA2MiwgODIwNzYsIDgyMDkwLCA4MjEwNCwgODIxMTgsIAorICAgIDgyMTMyLCA4MjE0NiwgODIxNjAsIDgyMTc0LCA4MjE4OCwgODIyMDIsIDgyMjE2LCA4MjIzMCwgODIyNDQsIDgyMjU4LCAKKyAgICA4MjI3MiwgODIyODYsIDgyMzAwLCA4MjMxNCwgODIzMjgsIDgyMzQyLCA4MjM1NiwgODIzNzAsIDgyMzg0LCA4MjM5OCwgCisgICAgODI0MTIsIDgyNDI2LCA4MjQ0MCwgODI0NTQsIDgyNDY4LCA4MjQ4MiwgODI0OTYsIDgyNTEwLCA4MjUyNCwgODI1MzgsIAorICAgIDgyNTUyLCA4MjU2NiwgODI1ODAsIDgyNTk0LCA4MjYwOCwgODI2MjIsIDgyNjM2LCA4MjY1MCwgODI2NjQsIDgyNjc4LCAKKyAgICA4MjY5MiwgODI3MDYsIDgyNzIwLCA4MjczNCwgODI3NDgsIDgyNzYyLCA4Mjc3NiwgODI3OTAsIDgyODA0LCA4MjgxOCwgCisgICAgODI4MzIsIDgyODQ2LCA4Mjg2MCwgODI4NzQsIDgyODg4LCA4MjkwMiwgODI5MTYsIDgyOTMwLCA4Mjk0NCwgODI5NTgsIAorICAgIDgyOTcyLCA4Mjk4NiwgODMwMDAsIDgzMDE0LCA4MzAyOCwgODMwNDIsIDgzMDU2LCA4MzA3MCwgODMwODQsIDgzMDk4LCAKKyAgICA4MzExMiwgODMxMjYsIDgzMTQwLCA4MzE1NCwgODMxNjgsIDgzMTgyLCA4MzE5NiwgODMyMTAsIDgzMjI0LCA4MzIzOCwgCisgICAgODMyNTIsIDgzMjY2LCA4MzI4MCwgODMyOTQsIDgzMzA4LCA4MzMyMiwgODMzMzYsIDgzMzUwLCA4MzM2NCwgODMzNzgsIAorICAgIDgzMzkyLCA4MzQwNiwgODM0MjAsIDgzNDM0LCA4MzQ0OCwgODM0NjIsIDgzNDc2LCA4MzQ5MCwgODM1MDQsIDgzNTE4LCAKKyAgICA4MzUzMiwgODM1NDYsIDgzNTYwLCA4MzU3NCwgODM1ODgsIDgzNjAyLCA4MzYxNiwgODM2MzAsIDgzNjQ0LCA4MzY1OCwgCisgICAgODM2NzIsIDgzNjg2LCA4MzcwMCwgODM3MTQsIDgzNzI4LCA4Mzc0MiwgODM3NTYsIDgzNzcwLCA4Mzc4NCwgODM3OTgsIAorICAgIDgzODEyLCA4MzgyNiwgODM4NDAsIDgzODU0LCA4Mzg2OCwgODM4ODIsIDgzODk2LCA4MzkxMCwgODM5MjQsIDgzOTM4LCAKKyAgICA4Mzk1MiwgODM5NjYsIDgzOTgwLCA4Mzk5NCwgODQwMDgsIDg0MDIyLCA4NDAzNiwgODQwNTAsIDg0MDY0LCA4NDA3OCwgCisgICAgODQwOTIsIDg0MTA2LCA4NDEyMCwgODQxMzQsIDg0MTQ4LCA4NDE2MiwgODQxNzYsIDg0MTkwLCA4NDIwNCwgODQyMTgsIAorICAgIDg0MjMyLCA4NDI0NiwgODQyNjAsIDg0Mjc0LCA4NDI4OCwgODQzMDIsIDg0MzE2LCA4NDMzMCwgODQzNDQsIDg0MzU4LCAKKyAgICA4NDM3MiwgODQzODYsIDg0NDAwLCA4NDQxNCwgODQ0MjgsIDg0NDQyLCA4NDQ1NiwgODQ0NzAsIDg0NDg0LCA4NDQ5OCwgCisgICAgODQ1MTIsIDg0NTI2LCA4NDU0MCwgODQ1NTQsIDg0NTY4LCA4NDU4MiwgODQ1OTYsIDg0NjEwLCA4NDYyNCwgODQ2MzgsIAorICAgIDg0NjUyLCA4NDY2NiwgODQ2ODAsIDg0Njk0LCA4NDcwOCwgODQ3MjIsIDg0NzM2LCA4NDc1MCwgODQ3NjQsIDg0Nzc4LCAKKyAgICA4NDc5MiwgODQ4MDYsIDg0ODIwLCA4NDgzNCwgODQ4NDgsIDg0ODYyLCA4NDg3NiwgODQ4OTAsIDg0OTA0LCA4NDkxOCwgCisgICAgODQ5MzIsIDg0OTQ2LCA4NDk2MCwgODQ5NzQsIDg0OTg4LCA4NTAwMiwgODUwMTYsIDg1MDMwLCA4NTA0NCwgODUwNTgsIAorICAgIDg1MDcyLCA4NTA4NiwgODUxMDAsIDg1MTE0LCA4NTEyOCwgODUxNDIsIDg1MTU2LCA4NTE3MCwgODUxODQsIDg1MTk4LCAKKyAgICA4NTIxMiwgODUyMjYsIDg1MjQwLCA4NTI1NCwgODUyNjgsIDg1MjgyLCA4NTI5NiwgODUzMTAsIDg1MzI0LCA4NTMzOCwgCisgICAgODUzNTIsIDg1MzY2LCA4NTM4MCwgODUzOTQsIDg1NDA4LCA4NTQyMiwgODU0MzYsIDg1NDUwLCA4NTQ2NCwgODU0NzgsIAorICAgIDg1NDkyLCA4NTUwNiwgODU1MjAsIDg1NTM0LCA4NTU0OCwgODU1NjIsIDg1NTc2LCA4NTU5MCwgODU2MDQsIDg1NjE4LCAKKyAgICA4NTYzMiwgODU2NDYsIDg1NjYwLCA4NTY3NCwgODU2ODgsIDg1NzAyLCA4NTcxNiwgODU3MzAsIDg1NzQ0LCA4NTc1OCwgCisgICAgODU3NzIsIDg1Nzg2LCA4NTgwMCwgODU4MTQsIDg1ODI4LCA4NTg0MiwgODU4NTYsIDg1ODcwLCA4NTg4NCwgODU4OTgsIAorICAgIDg1OTEyLCA4NTkyNiwgODU5NDAsIDg1OTU0LCA4NTk2OCwgODU5ODIsIDg1OTk2LCA4NjAxMCwgODYwMjQsIDg2MDM4LCAKKyAgICA4NjA1MiwgODYwNjYsIDg2MDgwLCA4NjA5NCwgODYxMDgsIDg2MTIyLCA4NjEzNiwgODYxNTAsIDg2MTY0LCA4NjE3OCwgCisgICAgODYxOTIsIDg2MjA2LCA4NjIyMCwgODYyMzQsIDg2MjQ4LCA4NjI2MiwgODYyNzYsIDg2MjkwLCA4NjMwNCwgODYzMTgsIAorICAgIDg2MzMyLCA4NjM0NiwgODYzNjAsIDg2Mzc0LCA4NjM4OCwgODY0MDIsIDg2NDE2LCA4NjQzMCwgODY0NDQsIDg2NDU4LCAKKyAgICA4NjQ3MiwgODY0ODYsIDg2NTAwLCA4NjUxNCwgODY1MjgsIDg2NTQyLCA4NjU1NiwgODY1NzAsIDg2NTg0LCA4NjU5OCwgCisgICAgODY2MTIsIDg2NjI2LCA4NjY0MCwgODY2NTQsIDg2NjY4LCA4NjY4MiwgODY2OTYsIDg2NzEwLCA4NjcyNCwgODY3MzgsIAorICAgIDg2NzUyLCA4Njc2NiwgODY3ODAsIDg2Nzk0LCA4NjgwOCwgODY4MjIsIDg2ODM2LCA4Njg1MCwgODY4NjQsIDg2ODc4LCAKKyAgICA4Njg5MiwgODY5MDYsIDg2OTIwLCA4NjkzNCwgODY5NDgsIDg2OTYyLCA4Njk3NiwgODY5OTAsIDg3MDA0LCA4NzAxOCwgCisgICAgODcwMzIsIDg3MDQ2LCA4NzA2MCwgODcwNzQsIDg3MDg4LCA4NzEwMiwgODcxMTYsIDg3MTMwLCA4NzE0NCwgODcxNTgsIAorICAgIDg3MTcyLCA4NzE4NiwgODcyMDAsIDg3MjE0LCA4NzIyOCwgODcyNDIsIDg3MjU2LCA4NzI3MCwgODcyODQsIDg3Mjk4LCAKKyAgICA4NzMxMiwgODczMjYsIDg3MzQwLCA4NzM1NCwgODczNjgsIDg3MzgyLCA4NzM5NiwgODc0MTAsIDg3NDI0LCA4NzQzOCwgCisgICAgODc0NTIsIDg3NDY2LCA4NzQ4MCwgODc0OTQsIDg3NTA4LCA4NzUyMiwgODc1MzYsIDg3NTUwLCA4NzU2NCwgODc1NzgsIAorICAgIDg3NTkyLCA4NzYwNiwgODc2MjAsIDg3NjM0LCA4NzY0OCwgODc2NjIsIDg3Njc2LCA4NzY5MCwgODc3MDQsIDg3NzE4LCAKKyAgICA4NzczMiwgODc3NDYsIDg3NzYwLCA4Nzc3NCwgODc3ODgsIDg3ODAyLCA4NzgxNiwgODc4MzAsIDg3ODQ0LCA4Nzg1OCwgCisgICAgODc4NzIsIDg3ODg2LCA4NzkwMCwgODc5MTQsIDg3OTI4LCA4Nzk0MiwgODc5NTYsIDg3OTcwLCA4Nzk4NCwgODc5OTgsIAorICAgIDg4MDEyLCA4ODAyNiwgODgwNDAsIDg4MDU0LCA4ODA2OCwgODgwODIsIDg4MDk2LCA4ODExMCwgODgxMjQsIDg4MTM4LCAKKyAgICA4ODE1MiwgODgxNjYsIDg4MTgwLCA4ODE5NCwgODgyMDgsIDg4MjIyLCA4ODIzNiwgODgyNTAsIDg4MjY0LCA4ODI3OCwgCisgICAgODgyOTIsIDg4MzA2LCA4ODMyMCwgODgzMzQsIDg4MzQ4LCA4ODM2MiwgODgzNzYsIDg4MzkwLCA4ODQwNCwgODg0MTgsIAorICAgIDg4NDMyLCA4ODQ0NiwgODg0NjAsIDg4NDc0LCA4ODQ4OCwgODg1MDIsIDg4NTE2LCA4ODUzMCwgODg1NDQsIDg4NTU4LCAKKyAgICA4ODU3MiwgODg1ODYsIDg4NjAwLCA4ODYxNCwgODg2MjgsIDg4NjQyLCA4ODY1NiwgODg2NzAsIDg4Njg0LCA4ODY5OCwgCisgICAgODg3MTIsIDg4NzI2LCA4ODc0MCwgODg3NTQsIDg4NzY4LCA4ODc4MiwgODg3OTYsIDg4ODEwLCA4ODgyNCwgODg4MzgsIAorICAgIDg4ODUyLCA4ODg2NiwgODg4ODAsIDg4ODk0LCA4ODkwOCwgODg5MjIsIDg4OTM2LCA4ODk1MCwgODg5NjQsIDg4OTc4LCAKKyAgICA4ODk5MiwgODkwMDYsIDg5MDIwLCA4OTAzNCwgODkwNDgsIDg5MDYyLCA4OTA3NiwgODkwOTAsIDg5MTA0LCA4OTExOCwgCisgICAgODkxMzIsIDg5MTQ2LCA4OTE2MCwgODkxNzQsIDg5MTg4LCA4OTIwMiwgODkyMTYsIDg5MjMwLCA4OTI0NCwgODkyNTgsIAorICAgIDg5MjcyLCA4OTI4NiwgODkzMDAsIDg5MzE0LCA4OTMyOCwgODkzNDIsIDg5MzU2LCA4OTM3MCwgODkzODQsIDg5Mzk4LCAKKyAgICA4OTQxMiwgODk0MjYsIDg5NDQwLCA4OTQ1NCwgODk0NjgsIDg5NDgyLCA4OTQ5NiwgODk1MTAsIDg5NTI0LCA4OTUzOCwgCisgICAgODk1NTIsIDg5NTY2LCA4OTU4MCwgODk1OTQsIDg5NjA4LCA4OTYyMiwgODk2MzYsIDg5NjUwLCA4OTY2NCwgODk2NzgsIAorICAgIDg5NjkyLCA4OTcwNiwgODk3MjAsIDg5NzM0LCA4OTc0OCwgODk3NjIsIDg5Nzc2LCA4OTc5MCwgODk4MDQsIDg5ODE4LCAKKyAgICA4OTgzMiwgODk4NDYsIDg5ODYwLCA4OTg3NCwgODk4ODgsIDg5OTAyLCA4OTkxNiwgODk5MzAsIDg5OTQ0LCA4OTk1OCwgCisgICAgODk5NzIsIDg5OTg2LCA5MDAwMCwgOTAwMTQsIDkwMDI4LCA5MDA0MiwgOTAwNTYsIDkwMDcwLCA5MDA4NCwgOTAwOTgsIAorICAgIDkwMTEyLCA5MDEyNiwgOTAxNDAsIDkwMTU0LCA5MDE2OCwgOTAxODIsIDkwMTk2LCA5MDIxMCwgOTAyMjQsIDkwMjM4LCAKKyAgICA5MDI0OSwgOTAyNjAsIDkwMjcwLCA5MDI4MSwgOTAyODksIDkwMjk1LCA5MDMwNSwgOTAzMTMsIDkwMzE5LCAzMTYyMSwgCisgICAgOTAzMjQsIDkwMzMwLCA5MDMzOSwgOTAzNTEsIDkwMzU2LCA5MDM2MywgMTA1NDYsIDE5MzExLCA5MDM2OSwgOTAzNzgsIAorICAgIDkwMzgzLCA5MDM4NywgOTAzOTQsIDkwNDAwLCA5MDQwNSwgOTA0MTAsIDkwNDE4LCA5MDQyNiwgMTMyMjksIDkwNDMwLCAKKyAgICA5MDQzMywgOTA0MzUsIDkwNDQyLCA5MDQ0OCwgOTA0NTksIDkwNDY0LCA5MDQ2OCwgOTA0NzMsIDkwNDgwLCA5MDQ4NiwgCisgICAgOTA0OTEsIDkwNDk5LCA3MTc0MSwgNzE3NTEsIDkwNTA1LCA5MDUxMiwgOTA1MjIsIDExNjQxLCA5MDUyOSwgOTA1MzQsIAorICAgIDMxODU1LCA5MDU0MywgOTA1NDgsIDkwNTU1LCA5MDU2NSwgOTA1NzMsIDkwNTgxLCA5MDU5MCwgOTA1OTYsIDkwNjAyLCAKKyAgICA5MDYwOSwgOTA2MTYsIDkwNjIxLCA5MDYyNSwgOTA2MzMsIDY2NTQ0LCA5MDYzOCwgOTA2NDcsIDkwNjU1LCA5MDY2MiwgCisgICAgOTA2NjcsIDkwNjcxLCA5MDY4MCwgOTA2ODYsIDkwNjg5LCA5MDY5MywgOTA3MDIsIDkwNzEyLCA3ODQ1NywgOTA3MjEsIAorICAgIDkwNzI1LCA5MDczMywgOTA3MzcsIDkwNzQzLCA5MDc1NCwgOTA3NjQsIDE5MzIwLCA5MDc3NSwgOTA3ODQsIDkwNzkyLCAKKyAgICA5MDgwMCwgOTA4MDcsIDY2NTYzLCA5MTkyLCA5MDgxNSwgOTA4MTksIDkwODI4LCA5MDgzNSwgOTA4MzgsIDI5NzM2LCAKKyAgICA5MDg0MSwgOTA4NDUsIDkwODUwLCA5MDg2NywgOTA4NzksIDExNTk5LCA5MDg5MSwgOTA4OTYsIDkwOTAxLCA5MDkwNiwgCisgICAgMjI4NjEsIDkwOTEwLCA5MDkxNSwgOTA5MjAsIDkwOTI2LCA5MDkzMSwgNjE0MiwgOTA5MzYsIDIyODY1LCA5MDk0MSwgCisgICAgOTA5NDYsIDkwOTUyLCA5MDk1OSwgOTA5NjQsIDkwOTY5LCA5MDk3NSwgOTA5ODEsIDkwOTg3LCA5MDk5MiwgOTA5OTgsIAorICAgIDkxMDAyLCA5MTAxNiwgOTEwMjQsIDkxMDMyLCA5MTAzOCwgOTEwNDMsIDkxMDUwLCA5MTA2MCwgOTEwNjksIDkxMDc0LCAKKyAgICA5MTA3OSwgOTEwODQsIDkxMDkyLCA5MTA5NywgOTExMDMsIDkxMTA4LCA5MTExNywgNjUyMzIsIDkxMTIyLCA5MTEyNSwgCisgICAgOTExNDMsIDkxMTYyLCA5MTE3NSwgOTExODksIDkxMjA1LCA5MTIxMiwgOTEyMTksIDkxMjI4LCA5MTIzNSwgOTEyNDEsIAorICAgIDkxMjQ4LCA5MTI1MywgOTEyNTksIDkxMjY1LCA5MTI3MywgOTEyNzksIDkxMjg0LCA5MTI4OSwgOTEzMDUsIDExNjEyLCAKKyAgICA5MTMxOSwgOTEzMjYsIDkxMzM0LCA5MTM0MCwgOTEzNDQsIDkxMzQ3LCA5MTM1MiwgOTEzNTcsIDkxMzY0LCA5MTM2OSwgCisgICAgOTEzNzgsIDkxMzg0LCA5MTM4OSwgOTEzOTUsIDkxNDAxLCA5MTQxMCwgOTE0MTksIDM4OTU1LCA5MTQyNCwgOTE0MzIsIAorICAgIDkxNDQxLCAxMjg4MiwgOTE0NTAsIDkxNDU2LCA5MTQ2NCwgOTE0NzAsIDkxNDc2LCA5MTQ4MiwgOTE0ODcsIDkxNDk0LCAKKyAgICA5MTUwMCwgMTI4OTMsIDkxNTA1LCA5MTUwOCwgOTE1MTMsIDM1NTc5LCA5MTUyMywgOTE1MzIsIDkxNTM3LCA5MTU0MywgCisgICAgOTE1NDgsIDkxNTU2LCA5MTU2MywgOTE1NzQsIDkxNTg0LCA5MTU4OSwgOTE1OTcsIDcxMDk1LCA5MTYwMiwgOTE2MDgsIAorICAgIDkxNjEzLCA5MTYyMCwgOTE2MjksIDkxNjM3LCA5MTY0MSwgOTE2NDcsIDkxNjUzLCA5MTY2MCwgOTE2NjYsIDkxNjcwLCAKKyAgICAxODY4MiwgMzEwMywgOTE2NzUsIDkxNjc5LCA5MTY4MywgOTE2ODksIDkxNjk4LCA5MTcwNCwgOTE3MTEsIDkxNzE1LCAKKyAgICA5MTczNiwgOTE3NTgsIDkxNzc0LCA5MTc5MSwgOTE4MTAsIDkxODE5LCA5MTgyOSwgOTE4MzcsIDkxODQ0LCA5MTg1MSwgCisgICAgOTE4NTcsIDI5NTk3LCA5MTg3MSwgOTE4NzUsIDkxODgxLCA5MTg4OSwgOTE5MDEsIDkxOTA3LCA5MTkxNSwgOTE5MjIsIAorICAgIDkxOTI3LCA5MTkzMiwgOTE5MzYsIDkxOTQ0LCA5MTk1MSwgOTE5NTUsIDkxOTYxLCA5MTk2NywgOTE5NzIsIDM3MjksIAorICAgIDQ3MjIwLCA5MTk3OCwgOTE5ODIsIDkxOTg2LCA5MTk5MCwgOTE5OTUsIDkyMDAwLCA5MjAwNSwgOTIwMTEsIDkyMDE3LCAKKyAgICA5MjAyMywgOTIwMzAsIDkyMDM2LCA5MjA0MywgOTIwNDksIDkyMDU1LCA5MjA2MCwgOTIwNjYsIDkyMDcxLCA5MjA3NSwgCisgICAgOTIwODAsIDkyMDg0LCA5MjA4OSwgNDcyMzUsIDkyMDkzLCA5MjA5OCwgOTIxMDYsIDkyMTEwLCA5MjExNSwgOTIxMjIsIAorICAgIDkyMTMxLCA5MjEzNywgOTIxNDYsIDkyMTUwLCA5MjE1NywgOTIxNjEsIDkyMTY0LCA5MjE3MSwgOTIxNzcsIDkyMTg2LCAKKyAgICA5MjE5NiwgOTIyMDYsIDkyMjExLCA5MjIxNSwgOTIyMjIsIDkyMjMwLCA5MjIzOSwgOTIyNDMsIDkyMjUxLCA5MjI1NywgCisgICAgOTIyNjIsIDkyMjY3LCA5MjI3MywgOTIyNzksIDkyMjg0LCA5MjI4OCwgOTIyOTQsIDkyMjk5LCA5MjMwMywgOTIzMDcsIAorICAgIDkyMzEwLCA5MjMxNSwgOTIzMjMsIDkyMzMzLCA5MjMzOSwgOTIzNDQsIDkyMzU0LCA0NDQ5MiwgOTIzNjIsIDkyMzc0LCAKKyAgICA5MjM4MCwgOTIzODQsIDkyMzkwLCA5MjQwMiwgOTI0MTMsIDkyNDIwLCA5MjQyNiwgOTI0MzMsIDkyNDQwLCA5MjQ1MiwgCisgICAgOTI0NTksIDkyNDY1LCAyMjkzOSwgOTI0NjksIDkyNDc3LCA5MjQ4MywgOTI0OTAsIDkyNDk2LCA5MjUwMiwgOTI1MDgsIAorICAgIDkyNTEzLCA5MjUxOCwgOTI1MjMsIDkyNTI3LCA5MjUzNiwgOTI1NDQsIDkyNTU1LCA3Mzc0LCA5MjU2MCwgMTgxMzEsIAorICAgIDkyNTY2LCA5MjU3MCwgOTI1NzQsIDkyNTc4LCA5MjU4NiwgOTI1OTUsIDkyNTk5LCA5MjYwNiwgOTI2MTUsIDkyNjIzLCAKKyAgICA5MjYzNiwgOTI2NDIsIDkyMDg1LCAzMjczOSwgOTI2NDcsIDkyNjQ5LCA5MjY1NCwgOTI2NTksIDkyNjY0LCA5MjY2OSwgCisgICAgOTI2NzQsIDkyNjc5LCA5MjY4NCwgOTI2ODksIDkyNjk0LCA5MjY5OSwgOTI3MDQsIDkyNzA5LCA5MjcxNCwgOTI3MTksIAorICAgIDkyNzI1LCA5MjczMCwgOTI3MzUsIDkyNzQwLCA5Mjc0NSwgOTI3NTAsIDkyNzU1LCA5Mjc2MCwgOTI3NjUsIDkyNzcxLCAKKyAgICA5Mjc3NywgOTI3ODMsIDkyNzg4LCA5Mjc5MywgOTI4MDUsIDkyODEwLCAxODgxLCA1NCwgOTI4MTUsIDkyODIwLCAzNTU4NSwgCisgICAgOTI4MjQsIDM1NTkwLCAzNTU5NSwgMzU2MDEsIDM1NjA2LCA5MjgyOCwgMzU2MTEsIDIzOTk0LCA5Mjg1MCwgOTI4NTQsIAorICAgIDkyODU4LCA5Mjg2MywgOTI4NjcsIDM1NjE1LCA5Mjg3MSwgOTI4NzksIDkyODg2LCA5Mjg5MiwgMzU2MjAsIDkyOTAyLCAKKyAgICA5MjkwNSwgOTI5MTAsIDkyOTE0LCA5MjkyMywgMTAzNTYsIDkyOTMxLCAzNTYyNSwgMjM4NDUsIDkyOTM0LCA5MjkzOCwgCisgICAgOTI5NDYsIDEzOTMsIDkyOTUxLCAzNTYzNiwgOTI5NTQsIDkyOTU5LCAyNzk5NSwgMjgwMDUsIDM4NTc4LCA5Mjk2NCwgCisgICAgOTI5NjksIDkyOTc0LCA5Mjk3OSwgOTI5ODUsIDkyOTkwLCA5Mjk5OSwgOTMwMDQsIDkzMDEzLCA5MzAyMSwgOTMwMjgsIAorICAgIDkzMDM0LCA5MzAzOSwgOTMwNDQsIDkzMDQ5LCA5MzA1OSwgOTMwNjgsIDkzMDc2LCA5MzA4MSwgOTMwODksIDkzMDkzLCAKKyAgICA5MzEwMSwgOTMxMDUsIDkzMTEyLCA5MzEyMCwgMzU0NDQsIDQxNjM0LCA5MzEyNywgOTMxMzMsIDkzMTM4LCA5MzE0MywgCisgICAgMTMyNjQsIDMwODIwLCA5MzE0OCwgOTMxNTMsIDkzMTYwLCA5MzE2NiwgOTMxNzEsIDkzMTc5LCA5MzE4OSwgOTMxOTksIAorICAgIDkzMjA1LCA5MzIxMCwgOTMyMTYsIDE5MzQyLCA5MzIyMywgMzk0NjIsIDkzMjM2LCA5MzI0MSwgOTMyNDcsIDMzNzM3LCAKKyAgICA2OTU3OSwgOTMyNjAsIDkzMjY0LCA5MzI3MywgOTMyODIsIDkzMjg5LCA5MzI5NSwgOTMzMDMsIDkzMzEyLCA5MzMxOSwgCisgICAgNDE3NTQsIDkzMzI1LCA5MzMyOCwgOTMzMzIsIDkzMzM2LCA5MzM0MCwgMjgxNDEsIDkzMzQ2LCA5MzM1MywgOTMzNTksIAorICAgIDkzMzY3LCA5MzM3MiwgOTMzNzYsIDI2MTM3LCA5MzM4MiwgOTMzODUsIDkzMzkzLCA5MzQwMCwgOTM0MDgsIDkzNDIxLCAKKyAgICA5MzQzNSwgOTM0NDIsIDkzNDQ4LCA5MzQ1NSwgOTM0NjEsIDM1NjUwLCA5MzQ2NSwgOTM0NzIsIDkzNDgwLCA5MzQ4OCwgCisgICAgOTM0OTQsIDM1NjU1LCA5MzUwMiwgOTM1MDgsIDkzNTEzLCA5MzUyMywgOTM1MjksIDkzNTM4LCAzMzUzMiwgMzgwMTAsIAorICAgIDkzNTQ2LCA5MzU1MSwgOTM1NTYsIDkzNTYwLCA5MzU2NSwgOTM1NjksIDkzNTc3LCA5MzU4MiwgMTY0MTksIDQ0NTA1LCAKKyAgICA5MzU4NiwgOTM1OTEsIDM1NjYwLCA2ODEyMSwgOTM1OTUsIDkzNjAwLCA5MzYwNCwgOTM2MTEsIDkzNjIwLCA5MzYyNCwgCisgICAgOTM2MzIsIDkzNjM4LCA5MzY0MywgOTM2NDksIDg0OTMsIDkzNjU0LCA5MzY2MCwgOTM2NjUsIDkzNjcwLCA5MzY4MSwgCisgICAgOTM2OTAsIDkzNzAyLCA5MzcxNywgMzU5MzYsIDkzNzIzLCAxODI1MCwgMzU2NjQsIDkzNzI3LCA5MzczNCwgOTM3NDAsIAorICAgIDI2MjUzLCA5Mzc0NCwgOTM3NTEsIDkzNzYwLCA5Mzc2NywgOTM3NzYsIDkzNzgyLCA5Mzc4NywgOTM3OTUsIDkzODAxLCAKKyAgICA5MzgwNiwgMzU2NzQsIDkzODExLCA5MzgyMCwgOTI0MDgsIDkzODI5LCA5MzgzNiwgOTM4NDIsIDkzODQ4LCA5Mzg1NywgCisgICAgOTM4NjcsIDkzODc1LCA5Mzg4MiwgOTM4ODYsIDM1Njc5LCA5Mzg4OSwgMzU2ODUsIDM1NjkxLCA5Mzg5NCwgOTM5MDIsIAorICAgIDkzOTEwLCA5MzkyMCwgOTM5MjksIDkzOTM3LCA5Mzk0NCwgOTM5NTQsIDM1Njk2LCA5Mzk1OCwgOTM5NjAsIDkzOTY0LCAKKyAgICA5Mzk2OSwgOTM5NzMsIDkzOTc3LCA5Mzk4MywgOTM5ODgsIDkzOTkyLCA5NDAwMywgOTQwMDgsIDk0MDEzLCAzMTA4LCAKKyAgICA5NDAxNywgOTQwMjQsIDk0MDI4LCA5NDAzNywgOTQwNDUsIDk0MDUyLCA5NDA1NywgOTQwNjIsIDY4MTcyLCA5NDA2NiwgCisgICAgOTQwNjksIDk0MDc1LCA5NDA4MywgOTQwODksIDk0MDkzLCA5NDA5OCwgOTQxMDUsIDk0MTEwLCA5NDExNSwgOTQxMTksIAorICAgIDk0MTI1LCA5NDEzMCwgMzgwNDEsIDk0MTM0LCA5NDEzNywgOTQxNDIsIDk0MTQ2LCA5NDE1MSwgOTQxNTgsIDk0MTYzLCAKKyAgICA5NDE2NywgNDMwMzEsIDk0MTc1LCAyODAxNCwgMjgwMjMsIDk0MTgxLCA5NDE4NywgOTQxOTMsIDk0MTk4LCA5NDIwMiwgCisgICAgOTQyMDUsIDk0MjE1LCA5NDIyNCwgOTQyMjksIDk0MjM1LCA5NDI0MiwgOTQyNDgsIDk0MjUyLCA5NDI2MCwgOTQyNjUsIAorICAgIDM4MDQ3LCA3ODY3NywgOTQyNjksIDk0Mjc3LCA5NDI4MywgOTQyOTAsIDk0Mjk1LCA5NDI5OSwgOTQzMDQsIDYzNzU2LCAKKyAgICA5NDMxMCwgOTQzMTYsIDM4MDUzLCA5NDMyMSwgOTQzMjYsIDk0MzMwLCA5NDMzNSwgOTQzNDAsIDk0MzQ1LCA5NDM0OSwgCisgICAgOTQzNTQsIDk0MzU5LCA5NDM2NSwgOTQzNzAsIDk0Mzc1LCA5NDM4MSwgOTQzODcsIDk0MzkyLCA5NDM5NiwgOTQ0MDEsIAorICAgIDk0NDA2LCA5NDQxMSwgOTQ0MTUsIDI2MjUyLCA5NDQyMCwgOTQ0MjUsIDk0NDMxLCA5NDQzNywgOTQ0NDMsIDk0NDQ4LCAKKyAgICA5NDQ1MiwgOTQ0NTcsIDk0NDYyLCA5NDQ2NywgOTQ0NzEsIDk0NDc2LCA5NDQ4MSwgOTQ0ODYsIDk0NDkxLCA0NzQ5MCwgCisgICAgOTQ0OTUsIDM1NzA0LCA5NDUwMywgOTQ1MDcsIDk0NTE1LCA5NDUyMywgOTQ1MzQsIDk0NTM5LCA5NDU0MywgMjQ0MjAsIAorICAgIDc2MTY5LCA5NDU0OCwgOTQ1NTQsIDk0NTU5LCA5NDU2OSwgOTQ1NzYsIDk0NTgxLCA5NDU4OSwgOTQ1OTgsIDk0NjAzLCAKKyAgICA5NDYwNywgOTQ2MTIsIDk0NjIwLCA5NDYyOCwgOTQ2MzUsIDcxMzU3LCA5NDY0MSwgOTQ2NDksIDk0NjU2LCA5NDY2NywgCisgICAgOTQ2NzMsIDk0Njc5LCAzNTcxNCwgOTQ2ODIsIDk0Njg5LCA5NDY5NywgOTQ3MDIsIDQ0NzA4LCA5NDcwNiwgOTQ3MTEsIAorICAgIDk0NzE4LCA5NDcyMywgOTU2NywgOTQ3MjcsIDk0NzM1LCA5NDc0MiwgOTQ3NDksIDk0NzU4LCA5NDc2NSwgOTQ3NzEsIAorICAgIDk0Nzg1LCA2MjE0LCA5NDc5MywgOTQ3OTksIDk0ODAzLCA5NDgwNiwgOTQ4MTQsIDk0ODIxLCA5NDgyNiwgOTQ4MzksIAorICAgIDk0ODQ2LCA5NDg1MiwgOTQ4NTYsIDk0ODY0LCA5NDg2OSwgOTQ4NzYsIDk0ODgxLCA2NjQwMywgOTQ4ODYsIDk0ODg5LCAKKyAgICA5NDg5OCwgOTQ5MDUsIDk0OTExLCA5NDkxNSwgOTQ5MTgsIDk0OTI2LCA5NDkzMiwgOTQ5NDEsIDk0OTUxLCA5NDk2MSwgCisgICAgOTQ5NzAsIDk0OTgxLCA5NDk4OSwgOTUwMDAsIDk1MDA1LCA5NTAwOSwgOTUwMTQsIDk1MDE4LCAzODcwOSwgOTUwMjYsIAorICAgIDIzMjM0LCAzODcxOCwgOTUwMzEsIDk1MDM2LCA5NTA0MSwgOTUwNDYsIDk1MDUxLCA5NTA1NiwgOTUwNjEsIDk1MDY1LCAKKyAgICA5NTA3MCwgOTUwNzUsIDk1MDgwLCA5NTA4NSwgOTUwOTAsIDk1MDk1LCA5NTA5OSwgOTUxMDQsIDk1MTA5LCA5NTExMywgCisgICAgOTUxMTcsIDk1MTIxLCA5NTEyNSwgOTUxMzAsIDk1MTM1LCA5NTEzOSwgOTUxNDQsIDk1MTQ4LCA5NTE1MiwgOTUxNTcsIAorICAgIDk1MTYyLCA5NTE2NywgOTUxNzIsIDk1MTc2LCA5NTE4MSwgOTUxODYsIDk1MTkwLCA5NTE5NSwgOTUyMDAsIDk1MjA1LCAKKyAgICA5NTIxMCwgOTUyMTUsIDk1MjIwLCA5NTIyNSwgOTUyMzAsIDk1MjM1LCA5NTI0MCwgOTUyNDUsIDk1MjUwLCA5NTI1NSwgCisgICAgOTUyNjAsIDk1MjY1LCA5NTI3MCwgOTUyNzUsIDk1MjgwLCA5NTI4NSwgOTUyOTAsIDk1Mjk0LCA5NTI5OSwgOTUzMDQsIAorICAgIDk1MzA5LCA5NTMxNCwgOTUzMTksIDk1MzI0LCA5NTMyOSwgOTUzMzQsIDk1MzM5LCA5NTM0NCwgOTUzNDksIDk1MzUzLCAKKyAgICA5NTM1OCwgOTUzNjIsIDk1MzY3LCA5NTM3MiwgOTUzNzcsIDk1MzgyLCA5NTM4NywgOTUzOTIsIDk1Mzk3LCA5NTQwMiwgCisgICAgOTU0MDcsIDk1NDExLCA5NTQxNSwgOTU0MjAsIDk1NDI1LCA5NTQyOSwgOTU0MzQsIDk1NDM5LCA5NTQ0MywgOTU0NDgsIAorICAgIDk1NDUzLCA5NTQ1OCwgOTU0NjMsIDk1NDY3LCA5NTQ3MiwgOTU0NzcsIDk1NDgxLCA5NTQ4NiwgOTU0OTAsIDk1NDk0LCAKKyAgICA5NTQ5OCwgOTU1MDIsIDk1NTA3LCA5NTUxMSwgOTU1MTUsIDk1NTE5LCA5NTUyMywgOTU1MjcsIDk1NTMxLCA5NTUzNSwgCisgICAgOTU1MzksIDk1NTQzLCA5NTU0OCwgOTU1NTMsIDk1NTU4LCA5NTU2MywgOTU1NjgsIDk1NTczLCA5NTU3OCwgOTU1ODMsIAorICAgIDk1NTg4LCA5NTU5MywgOTU1OTcsIDk1NjAxLCA5NTYwNSwgOTU2MDksIDk1NjEzLCA5NTYxNywgOTU2MjIsIDk1NjI2LCAKKyAgICA5NTYzMSwgOTU2MzUsIDk1NjQwLCA5NTY0NSwgOTU2NDksIDk1NjUzLCA5NTY1OCwgOTU2NjIsIDk1NjY2LCA5NTY3MCwgCisgICAgOTU2NzQsIDk1Njc4LCA5NTY4MiwgOTU2ODYsIDk1NjkwLCA5NTY5NCwgOTU2OTgsIDk1NzAyLCA5NTcwNiwgOTU3MTAsIAorICAgIDk1NzE0LCA5NTcxOSwgOTU3MjQsIDk1NzI4LCA5NTczMiwgOTU3MzYsIDk1NzQwLCA5NTc0NCwgOTU3NDgsIDk1NzUzLCAKKyAgICA5NTc1NywgOTU3NjEsIDk1NzY1LCA5NTc2OSwgOTU3NzMsIDk1Nzc3LCA5NTc4MiwgOTU3ODYsIDk1NzkxLCA5NTc5NSwgCisgICAgOTU3OTksIDk1ODAzLCA5NTgwNywgOTU4MTEsIDk1ODE1LCA5NTgxOSwgOTU4MjMsIDk1ODI3LCA5NTgzMSwgOTU4MzUsIAorICAgIDk1ODQwLCA5NTg0NCwgOTU4NDgsIDk1ODUyLCA5NTg1NiwgOTU4NjAsIDk1ODY0LCA5NTg2OCwgOTU4NzIsIDk1ODc2LCAKKyAgICA5NTg4MCwgOTU4ODQsIDk1ODg5LCA5NTg5MywgOTU4OTcsIDk1OTAyLCA5NTkwNywgOTU5MTEsIDk1OTE1LCA5NTkxOSwgCisgICAgOTU5MjMsIDk1OTI3LCA5NTkzMSwgOTU5MzUsIDk1OTM5LCA5NTk0NCwgOTU5NDgsIDk1OTUzLCA5NTk1NywgOTU5NjIsIAorICAgIDk1OTY2LCA5NTk3MSwgOTU5NzUsIDk1OTgxLCA5NTk4NiwgOTU5OTAsIDk1OTk1LCA5NTk5OSwgOTYwMDQsIDk2MDA4LCAKKyAgICA5NjAxMywgOTYwMTcsIDk2MDIyLCAxNTAwLCA5NjAyNiwgMjg2MiwgMTc1NSwgMTY3MywgMjc5NTAsIDk2MDMwLCAyODcxLCAKKyAgICA5NjAzNCwgMTM2MiwgOTYwMzksIDEzMDQsIDk2MDQzLCA5NjA0NywgMjg4OCwgOTYwNTEsIDk2MDU5LCA5NjA2NiwgOTYwNzMsIAorICAgIDk2MDg3LCAyODkyLCA3NDc2LCA5NjA5NiwgOTYxMDQsIDk2MTExLCA5NjEyMiwgOTYxMzEsIDk2MTM4LCA5NjE1MCwgCisgICAgOTYxNjMsIDk2MTc2LCA5NjE4NywgOTYxOTIsIDk2MTk5LCA5NjIxMSwgOTYyMTUsIDI4OTYsIDEyOTYwLCA5NjIyNSwgCisgICAgOTYyMzAsIDk2MjM5LCA5NjI0OSwgOTYyNTQsIDI5MDAsIDk2MjYyLCA5NjI2NiwgOTYyNzEsIDk2Mjc4LCA5NjI4NCwgCisgICAgOTYyOTIsIDk2MzA0LCA5NjMxNCwgMTMwOSwgMTQzMTEsIDk2MzI3LCA5NjMzMSwgOTYzMzcsIDk2MzUxLCA5NjM2MywgCisgICAgOTYzNzUsIDk2Mzg1LCA5NjM5NCwgOTY0MDMsIDk2NDEyLCA5NjQyMCwgOTY0MzEsIDk2NDM5LCA0MzA2LCA5NjQ0OSwgCisgICAgOTY0NjAsIDk2NDY5LCA5NjQ3NSwgOTY0OTAsIDk2NDk3LCA5NjUwMywgOTY1MDgsIDM4ODQzLCA5NjUxMywgMjkyNCwgCisgICAgMTQzMTUsIDk2NTE3LCA5NjUyNCwgOTQ5MiwgOTY1MzMsIDk2NTM5LCAyOTI5LCAzNTE1MiwgOTY1NDgsIDY2MDk5LCAKKyAgICA5NjU1NSwgOTY1NTksIDk2NTY1LCA5NjU3NiwgOTY1ODIsIDk2NTg5LCA5NjU5NSwgOTY2MDMsIDk2NjEwLCA5NjYxNiwgCisgICAgOTY2MjcsIDk2NjM3LCA5NjY0NiwgOTY2NTcsIDk2NjY2LCA5NjY3MywgOTY2NzksIDk2Njg5LCA5NjY5NywgOTY3MDMsIAorICAgIDk2NzE4LCA5NjcyNCwgOTY3MjksIDk2NzM2LCA5NjczOSwgOTY3NDUsIDk2NzUyLCA5Njc1OCwgOTY3NjYsIDk2Nzc1LCAKKyAgICA5Njc4MywgOTY3ODksIDk2Nzk4LCA0Njc2MCwgOTY4MTIsIDk2ODE3LCA5NjgyMywgMTYxOTUsIDk2ODI4LCA5Njg0MSwgCisgICAgOTY4NTMsIDk2ODYyLCA5Njg3MCwgOTY4NzcsIDk2ODgxLCA5Njg4NSwgOTY4ODgsIDk2ODk1LCA5NjkwMiwgOTY5MTAsIAorICAgIDk2OTE4LCA5NjkyNywgOTY5MzUsIDE2MTAwLCA5Njk0MywgOTY5NDgsIDk2OTUyLCA5Njk2NCwgOTY5NzEsIDk2OTc4LCAKKyAgICA5Njk4NywgODc3LCA5Njk5NywgOTcwMDYsIDk3MDE3LCAyOTQ1LCA5NzAyMSwgOTcwMjUsIDk3MDMxLCA5NzA0NCwgOTcwNTYsIAorICAgIDk3MDY2LCA5NzA3NSwgOTcwODcsIDI4NzAxLCA5NzA5OCwgOTcxMDYsIDk3MTE1LCA5NzEyNiwgOTcxMzcsIDk3MTQ3LCAKKyAgICA5NzE1NywgOTcxNjYsIDk3MTc0LCAxMjQ3NCwgOTcxODEsIDk3MTg1LCA5NzE4OCwgOTcxOTMsIDk3MTk4LCA5NzIwMiwgCisgICAgOTcyMDgsIDEzMTQsIDk3MjE1LCA5NzIxOSwgMTMwNDIsIDk3MjIzLCA5NzIzNCwgOTcyNDMsIDk3MjUxLCA5NzI2MCwgCisgICAgOTcyNjgsIDk3Mjg0LCA5NzI5NSwgOTczMDQsIDk3MzEyLCA5NzMyNCwgOTczMzUsIDk3MzUxLCA5NzM2MSwgOTczODIsIAorICAgIDk3Mzk2LCA5NzQwOSwgOTc0MTcsIDk3NDI0LCA3NTIyLCA5NzQzNywgOTc0NDIsIDk3NDQ4LCA2MjIzLCA5NzQ1NCwgCisgICAgOTc0NTcsIDk3NDY0LCA5NzQ3NCwgODU5NSwgOTc0ODEsIDk3NDg2LCA5NzQ5MSwgOTc0OTYsIDk3NTA0LCA5NzUxMywgCisgICAgOTc1MjEsIDk3NTI2LCA5NzUzMywgMTA1OTQsIDEwNjAzLCA5NzUzOSwgOTc1NTAsIDk3NTU1LCA5NzU2MSwgMjk2MSwgCisgICAgMjk2NiwgOTc1NjcsIDExOTY3LCA5NzU3MywgOTc1ODAsIDk3NTg3LCA5NzYwMCwgOTc2MDUsIDIyNjYsIDg3LCA5NzYxMywgCisgICAgOTc2MTgsIDk3NjI2LCA5NzYzNiwgOTc2NDUsIDk3NjUxLCA5NzY2MCwgOTc2NjgsIDk3Njc4LCA5NzY4MiwgOTc2ODYsIAorICAgIDk3NjkxLCA5NzY5NSwgOTc3MDcsIDI5ODksIDk3NzE1LCA5NzcyMywgOTc3MjgsIDk3NzM5LCA5Nzc1MCwgOTc3NjIsIAorICAgIDk3NzczLCA5Nzc4MywgOTc3OTIsIDIzMjc1LCA5Nzc5NywgOTc4MDMsIDk3ODA4LCA5NzgxOCwgOTc4MjgsIDk3ODMzLCAKKyAgICAzMDcxMywgOTc4MzksIDk3ODQ0LCA5Nzg1MywgMjMyODcsIDk3ODU3LCA0NDA0LCAxNiwgOTc4NjIsIDk3ODcxLCA5Nzg3OCwgCisgICAgOTc4ODUsIDk3ODkxLCA5Nzg5NiwgOTc5MDAsIDk3OTA2LCAxMDg1LCA5NzkxMSwgOTc5MTYsIDY2NjgwLCA5NzkyMSwgCisgICAgOTc5MjYsIDk3OTMyLCA5NzkzOCwgOTc5NDYsIDk3OTUxLCA5Nzk1OSwgOTc5NjYsIDk3OTcyLCA5Nzk3NywgNDI5MTUsIAorICAgIDQ2NjU0LCA5Nzk4MywgMTgwNiwgMzIsIDk3OTkzLCA5ODAwNiwgOTgwMTEsIDk4MDE5LCA5ODAyNCwgOTgwMzAsIDMwMTUsIAorICAgIDMwNzg4LCA5ODAzNSwgOTgwNDMsIDk4MDUwLCA5ODA1NSwgOTgwNjQsIDY0MDA2LCA0MDIzLCA2Nzc4NCwgOTgwNzIsIAorICAgIDk4MDc2LCAxNzAwLCAxODE4LCA5ODA4MSwgOTgwODYsIDk4MDkzLCAxODIyLCAyODYsIDk4MTAwLCA5ODEwNiwgOTgxMTEsIAorICAgIDMwMzcsIDk4MTE1LCA5ODEyMCwgOTgxMjcsIDE4MjYsIDk4MTMyLCA5ODEzOCwgOTgxNDMsIDk4MTU1LCA2NDU0LCA5ODE2NSwgCisgICAgOTgxNzIsIDE4MzMsIDk4MTc4LCA5ODE4MywgOTgxOTAsIDk4MTk3LCA5ODIxMiwgOTgyMTksIDk4MjMwLCA5ODIzNSwgCisgICAgOTgyNDMsIDI2NDYsIDk4MjQ3LCA5ODI1OSwgOTgyNjQsIDk4MjY4LCA5ODI3NCwgMzA1OTYsIDIyNzEsIDk4Mjc4LCAKKyAgICA5ODI4OSwgOTgyOTMsIDk4Mjk3LCA5ODMwMywgOTgzMDcsIDk4MzE2LCA5ODMyMCwgOTgzMzEsIDk4MzM1LCAyMzE3LCAKKyAgICAzNDk2OSwgOTgzMzksIDk4MzQ5LCAzMTI4LCA5ODM1NywgOTgzNjYsIDk5OTksIDk4MzcxLCA5ODM3NiwgOTgzODAsIAorICAgIDk4Mzg5LCA5ODM5NiwgOTg0MDIsIDMwOTgsIDE2MjU5LCA5ODQwNiwgOTg0MTksIDk4NDM3LCA5ODQ0MiwgOTg0NTAsIAorICAgIDk4NDU4LCA5ODQ2OCwgMTA4NjYsIDE0NDI4LCA5ODQ4MCwgOTg0OTMsIDk4NTAwLCA5ODUxNCwgOTg1MjEsIDk4NTM3LCAKKyAgICA5ODU0NCwgOTg1NTAsIDIzMzI1LCAxMzY2NiwgOTg1NTcsIDk4NTY0LCA5ODU3NCwgOTg1ODMsIDQ3NDg5LCA5ODU5NSwgCisgICAgNDc2MjQsIDk4NjAzLCA5ODYwNiwgOTg2MTIsIDk4NjE4LCA5ODYyNCwgOTg2MzAsIDk4NjM2LCA5ODY0MywgOTg2NTAsIAorICAgIDk4NjU2LCA5ODY2MiwgOTg2NjgsIDk4Njc0LCA5ODY4MCwgOTg2ODYsIDk4NjkyLCA5ODY5OCwgOTg3MDQsIDk4NzEwLCAKKyAgICA5ODcxNiwgOTg3MjIsIDk4NzI4LCA5ODczNCwgOTg3NDAsIDk4NzQ2LCA5ODc1MiwgOTg3NTgsIDk4NzY0LCA5ODc3MCwgCisgICAgOTg3NzYsIDk4NzgyLCA5ODc4OCwgOTg3OTQsIDk4ODAwLCA5ODgwNiwgOTg4MTIsIDk4ODE4LCA5ODgyNCwgOTg4MzAsIAorICAgIDk4ODM2LCA5ODg0MiwgOTg4NDgsIDk4ODU0LCA5ODg2MCwgOTg4NjYsIDk4ODcyLCA5ODg3OCwgOTg4ODQsIDk4ODkwLCAKKyAgICA5ODg5NiwgOTg5MDIsIDk4OTA4LCA5ODkxNCwgOTg5MjAsIDk4OTI2LCA5ODkzMiwgOTg5MzgsIDk4OTQ0LCA5ODk1MCwgCisgICAgOTg5NTYsIDk4OTYzLCA5ODk2OSwgOTg5NzYsIDk4OTgzLCA5ODk4OSwgOTg5OTYsIDk5MDAzLCA5OTAwOSwgOTkwMTUsIAorICAgIDk5MDIxLCA5OTAyNywgOTkwMzMsIDk5MDM5LCA5OTA0NSwgOTkwNTEsIDk5MDU3LCA5OTA2MywgOTkwNjksIDk5MDc1LCAKKyAgICA5OTA4MSwgOTkwODcsIDk5MDkzLCAzMTEyLCA5OTcyLCA5OTA5OSwgOTkxMDUsIDk5MTEzLCA5OTExNywgOTYyNzQsIDMxMTYsIAorICAgIDk5MTIxLCAyMzA1MiwgMTMyOTksIDM5NzMsIDk5MTI1LCAzMTIyLCA5OTEyOSwgOTkxMzksIDk5MTQ1LCA5OTE1MSwgCisgICAgOTkxNTcsIDk5MTYzLCA5OTE2OSwgOTkxNzUsIDk5MTgxLCA5OTE4NywgOTkxOTMsIDk5MTk5LCA5OTIwNSwgOTkyMTEsIAorICAgIDk5MjE3LCA5OTIyMywgOTkyMjksIDk5MjM1LCA5OTI0MSwgOTkyNDcsIDk5MjUzLCA5OTI1OSwgOTkyNjUsIDk5MjcxLCAKKyAgICA5OTI3NywgOTkyODMsIDk5Mjg5LCA5OTI5NiwgOTkzMDMsIDk5MzA5LCA5OTMxNSwgOTkzMjEsIDk5MzI3LCA5OTMzMywgCisgICAgOTkzMzksIDEzMTksIDk5MzQ1LCA5OTM1MCwgOTkzNTUsIDk5MzYwLCA5OTM2NSwgOTkzNzAsIDk5Mzc1LCA5OTM4MCwgCisgICAgOTkzODUsIDk5Mzg5LCA5OTM5MywgOTkzOTcsIDk5NDAxLCA5OTQwNSwgOTk0MDksIDk5NDEzLCA5OTQxNywgOTk0MjEsIAorICAgIDk5NDI3LCA5OTQzMywgOTk0MzksIDk5NDQ1LCA5OTQ0OSwgOTk0NTMsIDk5NDU3LCA5OTQ2MSwgOTk0NjUsIDk5NDY5LCAKKyAgICA5OTQ3MywgOTk0NzcsIDk5NDgxLCA5OTQ4NiwgOTk0OTEsIDk5NDk2LCA5OTUwMSwgOTk1MDYsIDk5NTExLCA5OTUxNiwgCisgICAgOTk1MjEsIDk5NTI2LCA5OTUzMSwgOTk1MzYsIDk5NTQxLCA5OTU0NiwgOTk1NTEsIDk5NTU2LCA5OTU2MSwgOTk1NjYsIAorICAgIDk5NTcxLCA5OTU3NiwgOTk1ODEsIDk5NTg2LCA5OTU5MSwgOTk1OTYsIDk5NjAxLCA5OTYwNiwgOTk2MTEsIDk5NjE2LCAKKyAgICA5OTYyMSwgOTk2MjYsIDk5NjMxLCA5OTYzNiwgOTk2NDEsIDk5NjQ2LCA5OTY1MSwgOTk2NTYsIDk5NjYxLCA5OTY2NiwgCisgICAgOTk2NzEsIDk5Njc2LCA5OTY4MSwgOTk2ODYsIDk5NjkxLCA5OTY5NiwgOTk3MDEsIDk5NzA2LCA5OTcxMSwgOTk3MTYsIAorICAgIDk5NzIxLCA5OTcyNiwgOTk3MzEsIDk5NzM2LCA5OTc0MSwgOTk3NDYsIDk5NzUxLCA5OTc1NiwgOTk3NjEsIDk5NzY2LCAKKyAgICA5OTc3MSwgOTk3NzYsIDk5NzgxLCA5OTc4NiwgOTk3OTEsIDk5Nzk2LCA5OTgwMSwgOTk4MDYsIDk5ODExLCA5OTgxNiwgCisgICAgOTk4MjEsIDk5ODI2LCA5OTgzMSwgOTk4MzYsIDk5ODQxLCA5OTg0NiwgOTk4NTEsIDk5ODU2LCA5OTg2MSwgOTk4NjYsIAorICAgIDk5ODcxLCA5OTg3NiwgOTk4ODEsIDk5ODg2LCA5OTg5MSwgOTk4OTYsIDk5OTAxLCA5OTkwNiwgOTk5MTEsIDk5OTE2LCAKKyAgICA5OTkyMSwgOTk5MjYsIDk5OTMxLCA5OTkzNiwgOTk5NDEsIDk5OTQ2LCA5OTk1MSwgOTk5NTYsIDk5OTYxLCA5OTk2NiwgCisgICAgOTk5NzEsIDk5OTc2LCA5OTk4MSwgOTk5ODYsIDk5OTkxLCA5OTk5NiwgMTAwMDAxLCAxMDAwMDYsIDEwMDAxMSwgMTAwMDE2LCAKKyAgICAxMDAwMjEsIDEwMDAyNiwgMTAwMDMxLCAxMDAwMzYsIDEwMDA0MSwgMTAwMDQ2LCAxMDAwNTEsIDEwMDA1NiwgMTAwMDYxLCAKKyAgICAxMDAwNjYsIDEwMDA3MSwgMTAwMDc2LCAxMDAwODEsIDEwMDA4NiwgMTAwMDkxLCAxMDAwOTYsIDEwMDEwMSwgMTAwMTA2LCAKKyAgICAxMDAxMTEsIDEwMDExNiwgMTAwMTIxLCAxMDAxMjYsIDEwMDEzMSwgMTAwMTM2LCAxMDAxNDEsIDEwMDE0NiwgMTAwMTUxLCAKKyAgICAxMDAxNTYsIDEwMDE2MSwgMTAwMTY2LCAxMDAxNzEsIDEwMDE3NiwgMTAwMTgxLCAxMDAxODYsIDEwMDE5MSwgMTAwMTk2LCAKKyAgICAxMDAyMDEsIDEwMDIwNiwgMTAwMjExLCAxMDAyMTYsIDEwMDIyMSwgMTAwMjI2LCAxMDAyMzEsIDEwMDIzNiwgMTAwMjQxLCAKKyAgICAxMDAyNDYsIDEwMDI1MSwgMTAwMjU2LCAxMDAyNjEsIDEwMDI2NiwgMTAwMjcxLCAxMDAyNzYsIDEwMDI4MSwgMTAwMjg2LCAKKyAgICAxMDAyOTEsIDEwMDI5NiwgMTAwMzAxLCAxMDAzMDYsIDEwMDMxMSwgMTAwMzE2LCAxMDAzMjEsIDEwMDMyNiwgMTAwMzMxLCAKKyAgICAxMDAzMzYsIDEwMDM0MSwgMTAwMzQ2LCAxMDAzNTEsIDEwMDM1NiwgMTAwMzYxLCAxMDAzNjYsIDEwMDM3MSwgMTAwMzc3LCAKKyAgICAxMDAzODIsIDEwMDM4NywgMTAwMzkyLCAxMDAzOTcsIDEwMDQwMiwgMTAwNDA3LCAxMDA0MTIsIDEwMDQxOCwgMTAwNDIzLCAKKyAgICAxMDA0MjgsIDEwMDQzMywgMTAwNDM4LCAxMDA0NDMsIDEwMDQ0OCwgMTAwNDUzLCAxMDA0NTgsIDEwMDQ2MywgMTAwNDY4LCAKKyAgICAxMDA0NzMsIDEwMDQ3OCwgMTAwNDgzLCAxMDA0ODgsIDEwMDQ5MywgMTAwNDk4LCAxMDA1MDMsIDEwMDUwOCwgMTAwNTEzLCAKKyAgICAxMDA1MTgsIDEwMDUyMywgMTAwNTI4LCAxMDA1MzMsIDEwMDUzOCwgMTAwNTQzLCAxMDA1NDgsIDEwMDU1MywgMTAwNTU4LCAKKyAgICAxMDA1NjMsIDEwMDU2OCwgMTAwNTczLCAxMDA1NzgsIDEwMDU4NywgMTAwNTkyLCAxMDA2MDEsIDEwMDYwNiwgMTAwNjE1LCAKKyAgICAxMDA2MjAsIDEwMDYyOSwgMTAwNjM0LCAxMDA2NDMsIDEwMDY0OCwgMTAwNjU3LCAxMDA2NjIsIDEwMDY3MSwgMTAwNjc2LCAKKyAgICAxMDA2ODUsIDEwMDY5MCwgMTAwNjk1LCAxMDA3MDQsIDEwMDcwOCwgMTAwNzE3LCAxMDA3MjIsIDEwMDczMSwgMTAwNzM2LCAKKyAgICAxMDA3NDUsIDEwMDc1MCwgMTAwNzU5LCAxMDA3NjQsIDEwMDc3MywgMTAwNzc4LCAxMDA3ODcsIDEwMDc5MiwgMTAwODAxLCAKKyAgICAxMDA4MDYsIDEwMDgxNSwgMTAwODIwLCAxMDA4MjksIDEwMDgzNCwgMTAwODQzLCAxMDA4NDgsIDEwMDg1MywgMTAwODU4LCAKKyAgICAxMDA4NjMsIDEwMDg2OCwgMTAwODczLCAxMDA4NzgsIDEwMDg4MiwgMTAwODg3LCAxMDA4OTIsIDEwMDg5NywgMTAwOTAyLCAKKyAgICAxMDA5MDcsIDEwMDkxMiwgMTAwOTE4LCAxMDA5MjMsIDEwMDkyOCwgMTAwOTMzLCAxMDA5MzksIDEwMDk0MywgMTAwOTQ4LCAKKyAgICAxMDA5NTQsIDEwMDk1OSwgMTAwOTY0LCAxMDA5NjksIDEwMDk3NCwgMTAwOTc5LCAxMDA5ODQsIDEwMDk4OSwgMTAwOTk0LCAKKyAgICAxMDA5OTksIDEwMTAwNCwgMTAxMDEwLCAxMDEwMTUsIDEwMTAyMCwgMTAxMDI1LCAxMDEwMzEsIDEwMTAzNiwgMTAxMDQxLCAKKyAgICAxMDEwNDYsIDEwMTA1MSwgMTAxMDU3LCAxMDEwNjIsIDEwMTA2NywgMTAxMDcyLCAxMDEwNzcsIDEwMTA4MiwgMTAxMDg4LCAKKyAgICAxMDEwOTMsIDEwMTA5OCwgMTAxMTAzLCAxMDExMDgsIDEwMTExMywgMTAxMTE4LCAxMDExMjMsIDEwMTEyOCwgMTAxMTMzLCAKKyAgICAxMDExMzgsIDEwMTE0MywgMTAxMTQ4LCAxMDExNTMsIDEwMTE1OCwgMTAxMTYzLCAxMDExNjgsIDEwMTE3MywgMTAxMTc4LCAKKyAgICAxMDExODMsIDEwMTE4OCwgMTAxMTkzLCAxMDExOTgsIDEwMTIwMywgMTAxMjA5LCAxMDEyMTUsIDEwMTIyMSwgMTAxMjI2LCAKKyAgICAxMDEyMzEsIDEwMTIzNiwgMTAxMjQxLCAxMDEyNDcsIDEwMTI1MywgMTAxMjU5LCAxMDEyNjQsIDEwMTI2OSwgMTAxMjc0LCAKKyAgICAxMDEyODAsIDEwMTI4NSwgMTAxMjkwLCAxMDEyOTUsIDEwMTMwMCwgMTAxMzA1LCAxMDEzMTAsIDEwMTMxNSwgMTAxMzIwLCAKKyAgICAxMDEzMjUsIDEwMTMzMCwgMTAxMzM1LCAxMDEzNDAsIDEwMTM0NSwgMTAxMzUwLCAxMDEzNTUsIDEwMTM2MCwgMTAxMzY2LCAKKyAgICAxMDEzNzIsIDEwMTM3OCwgMTAxMzgzLCAxMDEzODgsIDEwMTM5MywgMTAxMzk4LCAxMDE0MDQsIDEwMTQxMCwgMTAxNDE2LCAKKyAgICAxMDE0MjEsIDEwMTQyNiwgMTAxNDMxLCAxMDE0MzYsIDEwMTQ0MSwgMTAxNDQ2LCAxMDE0NTEsIDEwMTQ1NiwgMTAxNDYxLCAKKyAgICAxNzY4NiwgMTAxNDY2LCAxMDE0NzIsIDEwMTQ3NywgMTAxNDgyLCAxMDE0ODcsIDEwMTQ5MiwgMTAxNDk3LCAxMDE1MDMsIAorICAgIDEwMTUwOCwgMTAxNTEzLCAxMDE1MTgsIDEwMTUyMywgMTAxNTI4LCAxMDE1MzQsIDEwMTUzOSwgMTAxNTQ0LCAxMDE1NDksIAorICAgIDEwMTU1NCwgMTAxNTU5LCAxMDE1NjQsIDEwMTU2OSwgMTAxNTc0LCAxMDE1NzksIDEwMTU4NCwgMTAxNTg5LCAxMDE1OTQsIAorICAgIDEwMTU5OSwgMTAxNjA0LCAxMDE2MDksIDEwMTYxNCwgMTAxNjE5LCAxMDE2MjQsIDEwMTYyOSwgMTAxNjM0LCAxMDE2MzksIAorICAgIDEwMTY0NCwgMTAxNjUwLCAxMDE2NTUsIDEwMTY2MCwgMTAxNjY1LCAxMDE2NzAsIDEwMTY3NSwgMTAxNjgwLCAxMDE2ODUsIAorICAgIDEwMTY5MCwgMTAxNjk1LCAxMDE3MDAsIDEwMTcwNSwgMTAxNzEwLCAxMDE3MTUsIDEwMTcyMCwgMTAxNzI1LCAxMDE3MzAsIAorICAgIDEwMTczNSwgMTAxNzQwLCAxMDE3NDUsIDEwMTc1MCwgMTAxNzU1LCAxMDE3NjAsIDEwMTc2NSwgMTAxNzcwLCAxMDE3NzUsIAorICAgIDEwMTc4MCwgMTAxNzg1LCAxMDE3OTAsIDEwMTc5NSwgMTAxODAwLCAxMDE4MDUsIDEwMTgxMCwgMTAxODE1LCAxMDE4MjAsIAorICAgIDEwMTgyNSwgMTAxODMwLCAxMDE4MzUsIDEwMTg0MCwgMTAxODQ1LCAxMDE4NTAsIDEwMTg1NiwgMTAxODYxLCAxMDE4NjYsIAorICAgIDEwMTg3MSwgMTAxODc2LCAxMDE4ODEsIDEwMTg4NiwgMTAxODkxLCAxMDE4OTYsIDEwMTkwMSwgMTAxOTA2LCAxMDE5MTEsIAorICAgIDEwMTkxNywgMTAxOTIyLCAxMDE5MjgsIDEwMTkzMywgMTAxOTM4LCAxMDE5NDMsIDEwMTk0OCwgMTAxOTUzLCAxMDE5NTgsIAorICAgIDEwMTk2NCwgMTAxOTY5LCAxMDE5NzQsIDEwMTk4MCwgMTAxOTg1LCAxMDE5OTAsIDEwMTk5NSwgMTAyMDAwLCAxMDIwMDUsIAorICAgIDEwMjAxMSwgMTAyMDE3LCAxMDIwMjIsIDEwMjAyNywgMTMzMjEsIDEwMjAzMiwgMTAyMDM3LCAxMDIwNDIsIDEwMjA0NywgCisgICAgMTAyMDUyLCAxMDIwNTcsIDEwMjA2MiwgMTAyMDY3LCAxMDIwNzIsIDEwMjA3NywgMTAyMDgyLCAxMDIwODcsIDEwMjA5MiwgCisgICAgMTAyMDk3LCAxMDIxMDIsIDEwMjEwNywgMTAyMTEyLCAxMDIxMTcsIDEwMjEyMiwgMTAyMTI3LCAxMDIxMzIsIDEwMjEzNywgCisgICAgMTAyMTQyLCAxMDIxNDcsIDEwMjE1MiwgMTAyMTU3LCAxMDIxNjIsIDEwMjE2NywgMTAyMTcyLCAxMDIxNzcsIDEwMjE4MiwgCisgICAgMTAyMTg3LCAxMDIxOTIsIDEwMjE5NywgMTAyMjAyLCAxMDIyMDcsIDEwMjIxMiwgMTAyMjE3LCAxMDIyMjIsIDEwMjIyNywgCisgICAgMTAyMjMyLCAxMDIyMzcsIDEwMjI0MiwgMTAyMjQ3LCAxMDIyNTIsIDEwMjI1NywgMTAyMjYyLCAxMDIyNjcsIDEwMjI3MiwgCisgICAgMTAyMjc3LCAxMDIyODIsIDEwMjI4NywgMTAyMjkyLCAxMDIyOTcsIDEwMjMwMiwgMTAyMzA3LCAxMDIzMTIsIDEwMjMxNywgCisgICAgMTAyMzIyLCAxMDIzMjcsIDEwMjMzMiwgMTAyMzM3LCAxMDIzNDIsIDEwMjM0NywgMTAyMzUyLCAxMDIzNTgsIDEwMjM2MywgCisgICAgMTAyMzY4LCAxMDIzNzMsIDEwMjM3OCwgMTAyMzg0LCAxMDIzODksIDEwMjM5NCwgMTAyMzk5LCAxMDI0MDQsIDEwMjQwOSwgCisgICAgMTAyNDE0LCAxMDI0MjAsIDEwMjQyNSwgMTAyNDMwLCAxMDI0MzUsIDEwMjQ0MCwgMTAyNDQ1LCAxMDI0NTEsIDEwMjQ1NiwgCisgICAgMTAyNDYxLCAxMDI0NjYsIDEwMjQ3MSwgMTAyNDc2LCAxMDI0ODIsIDEwMjQ4NywgMTAyNDkyLCAxMDI0OTcsIDEwMjUwMiwgCisgICAgMTAyNTA3LCAxMDI1MTMsIDEwMjUxOSwgMTAyNTI0LCAxMDI1MjksIDEwMjUzNCwgMTAyNTQwLCAxMDI1NDYsIDEwMjU1MiwgCisgICAgMTAyNTU3LCAxMDI1NjIsIDEwMjU2OCwgMTAyNTc0LCAxMDI1NzksIDEwMjU4NSwgMTAyNTkxLCAxMDI1OTcsIDEwMjYwMiwgCisgICAgMTAyNjA3LCAxMDI2MTMsIDEwMjYxOCwgMTAyNjI0LCAxMDI2MjksIDEwMjYzNSwgMTAyNjQ0LCAxMDI2NDksIDEwMjY1NCwgCisgICAgMTAyNjYwLCAxMDI2NjUsIDEwMjY3MSwgMTAyNjc2LCAxMDI2ODEsIDEwMjY4NiwgMTAyNjkxLCAxMDI2OTYsIDEwMjcwMSwgCisgICAgMTAyNzA2LCAxMDI3MTEsIDEwMjcxNiwgMTAyNzIxLCAxMDI3MjYsIDEwMjczMSwgMTAyNzM2LCAxMDI3NDEsIDEwMjc0NiwgCisgICAgMTAyNzUxLCAxMDI3NTYsIDEwMjc2MSwgMTAyNzY2LCAxMDI3NzEsIDEwMjc3NiwgMTAyNzgxLCAxMDI3ODYsIDEwMjc5MSwgCisgICAgMTAyNzk2LCAxMDI4MDEsIDEwMjgwNiwgMTAyODExLCAxMDI4MTYsIDEwMjgyMSwgMTAyODI2LCAxMDI4MzIsIDEwMjgzOCwgCisgICAgMTAyODQ0LCAxMDI4NDksIDEwMjg1NCwgMTAyODU5LCAxMDI4NjQsIDEwMjg2OSwgMTAyODc0LCAxMDI4NzksIDEwMjg4NCwgCisgICAgMTAyODg5LCAxMDI4OTQsIDEwMjg5OSwgMTAyOTA0LCAxMDI5MDksIDEwMjkxNCwgMTAyOTE5LCAxMDI5MjQsIDEwMjkyOSwgCisgICAgMTAyOTM0LCAxMDI5MzksIDEwMjk0NCwgMTAyOTUwLCAxMDI5NTYsIDEwMjk2MSwgMTAyOTY3LCAxMDI5NzIsIDEwMjk3NywgCisgICAgMTAyOTgzLCAxMDI5ODgsIDEwMjk5NCwgMTAyOTk5LCAxMDMwMDUsIDEwMzAxMCwgMTAzMDE2LCAxMDMwMjEsIDEwMzAyNywgCisgICAgMTAzMDMyLCAxMDMwMzcsIDEwMzA0MiwgMTAzMDQ3LCAxMDMwNTIsIDEwMzA1NywgMTAzMDYyLCA5OTE0MCwgOTkxNDYsIAorICAgIDk5MTUyLCA5OTE1OCwgMTAzMDY4LCA5OTE2NCwgOTkxNzAsIDEwMzA3NCwgOTkxNzYsIDk5MTgyLCA5OTE4OCwgOTkxOTQsIAorICAgIDk5MjAwLCA5OTIwNiwgOTkyMTIsIDk5MjE4LCA5OTIyNCwgMTAzMDgwLCA5OTIzMCwgOTkyMzYsIDk5MjQyLCAxMDMwODYsIAorICAgIDk5MjQ4LCA5OTI1NCwgOTkyNjAsIDk5MjY2LCAxMDMwOTIsIDk5MjcyLCA5OTI3OCwgOTkyODQsIDk5MzA0LCAxMDMwOTgsIAorICAgIDEwMzEwNCwgOTkzMTAsIDEwMzExMCwgOTkzMTYsIDk5MzIyLCA5OTMyOCwgOTkzMzQsIDk5MzQwLCAzMTM5LCAzMTQ0LCAKKyAgICAxMDMxMTYsIDEwMzEyMSwgMTAzMTI0LCAxMDMxMzAsIDEwMzEzNiwgMTAzMTQzLCAxMDMxNDgsIDEwMzE1MywgMjMyMiwgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KICNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA4Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjAxCisjZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMTk4CiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rW10gPSB7Ci0gICAgMCwgMjExLCAyMjgsIDI0MCwgMjEyLCA4MiwgMjE3LCAzMSwgODIsIDQyLCA1NCwgMjQzLCA5NywgNTQsIDIxOCwgMjQ2LCAKLSAgICA1NCwgMjUwLCAyMzUsIDI1MCwgMTYwLCA0OSwgMjE5LCA3NiwgNTAsIDIxOSwgNzYsIDI1MCwgNTksIDkxLCA1NCwgMjQ1LCAKLSAgICAyMzMsIDIzNSwgMjE5LCAyMzksIDEwMiwgMjExLCA2MSwgMjEyLCAwLCAxNywgMjAyLCA4NCwgMTcsIDEwNSwgMTcsIDEwOCwgCi0gICAgMTcsIDE0NywgMTcsIDE0OSwgMTcsIDE3MCwgMTcsIDE5NSwgMTcsIDIxMywgMTExLCAxNywgMTk5LCAxNywgMjIyLCA2MywgCi0gICAgMjQ1LCAyNDIsIDIxMywgMTQzLCAyMjcsIDE3OSwgNTQsIDI0MSwgMzUsIDU0LCAyMzcsIDI0NywgNTQsIDIxNywgNDcsIDgyLCAKLSAgICAyNDUsIDIzMSwgMjUwLCA0OSwgOCwgNiwgMSwgNjMsIDgsIDYsIDEsIDI0OSwgMjU1LCA4LCA2LCAxLCAyNDcsIDEyNSwgOCwgCi0gICAgNiwgMSwgMjQ1LCA1MSwgOCwgNiwgMSwgNzQsIDgsIDYsIDEsIDI0MCwgMTc0LCA4LCA2LCAxLCAyMzksIDc1LCA4LCA2LCAxLCAKLSAgICAyMzcsIDE3MSwgOCwgNiwgMSwgNzUsIDgsIDYsIDEsIDIzMCwgMTg0LCA4LCA2LCAxLCAyMzAsIDU0LCA4LCA2LCAxLCAxNTksIAotICAgIDgsIDYsIDEsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2MywgOCwgNiwgMSwgNzgsIDgsIDYsIDEsIDIxOSwgMTg0LCA4LCAKLSAgICA2LCAxLCAyMTcsIDEzNCwgOCwgNiwgMSwgMTQ2LCA4LCA2LCAxLCAxOTQsIDgsIDYsIDEsIDIxMCwgNjksIDgsIDYsIDEsIAotICAgIDY4LCA4LCA2LCAxLCAyMDYsIDE2NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDgsIDYsIDEsIDIwMywgMTk2LCA4LCA2LCAxLCAKLSAgICAyMDMsIDEyNCwgOCwgNiwgMSwgMjAyLCAxNTksIDQ5LCA1MSwgMTU1LCAyMTYsIDc0LCAyMTIsIDAsIDUwLCA1MSwgMTU1LCAKLSAgICAyNDYsIDUzLCAyNTEsIDEzOCwgMTI0LCAyMjcsIDExNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCA4LCA1LCAxLCA2MywgOCwgNSwgCi0gICAgMSwgMjQ5LCAyNTUsIDgsIDUsIDEsIDI0NywgMTI1LCA4LCA1LCAxLCAyNDUsIDUxLCA4LCA1LCAxLCA3NCwgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzQsIDgsIDUsIDEsIDIzOSwgNzUsIDgsIDUsIDEsIDIzNywgMTcxLCA4LCA1LCAxLCA3NSwgOCwgNSwgMSwgMjMwLCAKLSAgICAxODQsIDgsIDUsIDEsIDIzMCwgNTQsIDgsIDUsIDEsIDE1OSwgOCwgNSwgMSwgMjI2LCAxODUsIDgsIDUsIDEsIDIyMywgCi0gICAgMTYzLCA4LCA1LCAxLCA3OCwgOCwgNSwgMSwgMjE5LCAxODQsIDgsIDUsIDEsIDIxNywgMTM0LCA4LCA1LCAxLCAxNDYsIDgsIAotICAgIDUsIDEsIDE5NCwgOCwgNSwgMSwgMjEwLCA2OSwgOCwgNSwgMSwgNjgsIDgsIDUsIDEsIDIwNiwgMTY0LCA4LCA1LCAxLCAKLSAgICAyMDQsIDE0NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDgsIDUsIDEsIDIwMywgMTI0LCA4LCA1LCAxLCAyMDIsIDE1OSwgNDksIAotICAgIDI0NSwgOTMsIDE1NSwgODAsIDIyNywgMTE0LCA1MCwgMjQ1LCA5MywgMTU1LCAyMDgsIDIyNywgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCAyNDYsIDIyMCwgNTQsIDIxOCwgMjAsIDU0LCAyNDUsIDkyLCA1NCwgMjAzLCAKLSAgICA0MywgNTQsIDI0NywgMjAzLCAxNDIsIDIxNCwgMTY4LCA1NCwgMjQzLCAyMzEsIDI0NSwgMTY5LCA1NCwgMjQwLCA0MSwgCi0gICAgMjE5LCAyNDAsIDIzMSwgMzEsIDIyNywgMjE3LCA1MiwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMjEsIDE2NiwgNTQsIAotICAgIDIxMiwgNywgMjM1LCAyMjAsIDIxNiwgMTI5LCA1NCwgMjI1LCAxNzAsIDI0NCwgNTUsIDU0LCAyMTgsIDc1LCA1NCwgMjEwLCAKLSAgICAxOTksIDEwOCwgMjEwLCAxOTksIDE0NywgMjUxLCAxMjYsIDI1MSwgMTM4LCAyMjQsIDE1MywgNTQsIDIxOCwgMTI2LCA1NCwgCi0gICAgMTAxLCAyNDMsIDg1LCAyNDYsIDIzMSwgMjEwLCAxOTksIDEwNSwgMjI1LCA4MCwgMjE5LCAyNDAsIDIzMSwgMzEsIDIxNiwgCi0gICAgMTEsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAyMDQsIAotICAgIDE2MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAyMzAsIDIzOSwgCi0gICAgMjE3LCA0NywgODIsIDgsIDYsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDE2NSwgOCwgNiwgMSwgMzQsIAotICAgIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAKLSAgICAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA2LCAxLCAyNTEsIDEwOSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIAotICAgIDUyLCA4LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIAotICAgIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgMjQzLCAyMzEsIDgsIDYsIDEsIDI0MCwgMjQzLCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTIsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDIyMywgMjI0LCA1NCwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDEwNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgCi0gICAgNiwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjEzLCA1NywgMTk0LCA4LCA1LCAxLCAzNCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDM0LCAzLCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAzNCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDM0LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjUxLCAxMDksIDgsIDUsIAotICAgIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ2LCAKLSAgICA1MiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyNDAsIDI0MywgOCwgNSwgMSwgMjIzLCAxNjQsIAotICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAKLSAgICAyNDMsIDEzNywgNTQsIDgsIDUsIDEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDEwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDEwNiwgMywgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDgsIDUsIAotICAgIDEsIDIwMywgMTI1LCAzLCAxNjUsIDgsIDUsIDEsIDIwOSwgNDAsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyNDMsIDIzMSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMzQsIDMsIAotICAgIDIyMCwgNjIsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIAotICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIAotICAgIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgOTUsIDgsIAotICAgIDYsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ3LCAKLSAgICAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDcwLCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA1LCAKLSAgICAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM5LCA3NiwgCi0gICAgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCAKLSAgICA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIzNywgCi0gICAgMTcyLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDk1LCAKLSAgICA4LCA1LCAxLCAyMzcsIDE3MiwgMywgOTUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICAyMjUsIDE3MCwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIAotICAgIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MiwgOCwgNiwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQzLCA4NCwgNzUsIDgsIDYsIDMyLCAyMzEsIDgxLCA4LCA1LCAzMiwgCi0gICAgMjMxLCA4MSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDYsIDUyLCA4LCAKLSAgICA2LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA2LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAotICAgIDI0NywgMjksIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIAotICAgIDg1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIDg1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgOTUsIDgsIDUsIAotICAgIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgCi0gICAgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjIzLCAxNjQsIAotICAgIDIxNywgMjUxLCAyNDcsIDEzNywgMjUwLCAxNjAsIDgsIDYsIDEsIDI0MSwgNzgsIDgsIDUsIDEsIDI0MSwgNzgsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAKLSAgICAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE1OCwgMywgNTIsIDE2NSwgOCwgNSwgMSwgMTU4LCAKLSAgICAzLCA1MiwgMTY1LCA4LCA2LCAzMiwgMjIwLCA3MywgOCwgNSwgMzIsIDIyMCwgNzMsIDgsIDYsIDEsIDIxNywgMSwgMywgCi0gICAgMTY1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDE2NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjE3LCAKLSAgICAxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIAotICAgIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDE2NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNDYsIDUyLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgCi0gICAgNSwgMSwgMjE1LCA5NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNSwgCi0gICAgOTQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDYsIAotICAgIDIzMSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgCi0gICAgMjEwLCA3MCwgMywgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgCi0gICAgMTcwLCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxMDYsIAotICAgIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDEwNiwgMywgNTIsIDE2NSwgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDEwNiwgMywgMjIwLCAKLSAgICA2MiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDYsIDUyLCA4LCA2LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIwMywgCi0gICAgMTI1LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgCi0gICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAKLSAgICAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxNjMsIDE5NCwgOCwgNSwgCi0gICAgMSwgNjYsIDMsIDk1LCA4LCA2LCAxLCA2NiwgMywgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIDY2LCAKLSAgICAzLCAyMDgsIDE0MiwgOCwgNiwgMSwgMTQzLCAxOTUsIDgsIDUsIDEsIDE0MywgMTk1LCA4LCA2LCAxLCAxNzEsIDc4LCA4LCAKLSAgICA2LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA2LCAxLCAyNTEsIDg0LCAyNDUsIAotICAgIDUxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAxMTMsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDI0NCwgMzcsIDgsIDYsIDEsIDIxNiwgNzMsIDc0LCAKLSAgICA4LCA2LCAxLCAyMTQsIDE5MiwgOCwgNiwgMSwgMTcxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDExMywgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzUsIDMsIDExMywgOCwgNiwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA2LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgCi0gICAgMjM1LCAyNTUsIDgsIDYsIDEsIDIzMCwgMjMwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIAotICAgIDMsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTEzLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA1LCAxLCAKLSAgICAyMjgsIDI2LCAzLCA5NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNDksIAotICAgIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2MywgNTAsIDIyNywgMjEwLCA4LCA2LCAxLCAxNTgsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA2LCAxLCAyMjAsIAotICAgIDU3LCA4LCA1LCAxLCAyMjAsIDU3LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgCi0gICAgMTEzLCA4LCAxLCAyMDIsIDIxNiwgOCwgNiwgMSwgMTQzLCAxMDgsIDgsIDUsIDEsIDE0MywgMTA4LCA4LCA2LCAxLCAyNDEsIAotICAgIDcsIDgsIDEsIDIxNiwgNzMsIDI0MSwgOCwgMjI3LCAxNCwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE5LCAxNDIsIDExMywgOCwgCi0gICAgNiwgMSwgMjEwLCA3MCwgMywgMTEzLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDYsIAotICAgIDEsIDIwNiwgMjE2LCA4LCA2LCAxLCAyMDYsIDE2NSwgMywgMTEzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA1LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgOTUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA5NSwgCi0gICAgOCwgNiwgMSwgMjQwLCAxNzcsIDgsIDYsIDEsIDI0MCwgMTc4LCAyMTYsIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMjE2LCAKLSAgICA3MiwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIwOSwgMjQ4LCA4LCAxLCAxMjAsIDMsIDk1LCA4LCA2LCAxLCAxNDMsIDE3MCwgCi0gICAgOCwgNSwgMSwgMTQzLCAxNzAsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgMSwgMjAzLCAKLSAgICAxOTksIDgsIDEsIDI0NCwgMzAsIDI0NiwgMjcsIDgsIDEsIDIyNywgMjU0LCAyNDYsIDI3LCA4LCAxLCAyNTAsIDI0OCwgCi0gICAgMjQ2LCAyNywgOCwgMSwgMjE2LCA3OSwgMjQ2LCAyNywgOCwgNiwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKLSAgICAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCAKLSAgICA2LCAxLCAyMjcsIDgxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNSwgMSwgMjMwLCAxODQsIDgsIDUsIDEsIDIyNywgODEsIDgsIAotICAgIDYsIDEsIDIyMiwgNDksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjIyLCA0OSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAKLSAgICAyOSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgCi0gICAgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAKLSAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAKLSAgICAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjQ3LCAyOSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIwNywgMTc0LCA3NCwgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAzNCwgMywgNzAsIAotICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjUxLCAKLSAgICAxMTAsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIAotICAgIDk1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA5NSwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM5LCAKLSAgICA3NiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ3LCAKLSAgICAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE1OCwgMywgCi0gICAgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjMsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCi0gICAgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDE4NSwgCi0gICAgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQyLCAwLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE1OSwgOCwgNSwgCi0gICAgMSwgMjQyLCAwLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxNjUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjM1LCAyNTIsIDgsIDYsIDEsIDIwMywgMTk5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjUxLCAxMTAsIDMsIDE2NSwgOCwgNSwgMSwgMjUxLCAKLSAgICAxMTAsIDMsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyMTEsIDMyLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIxMSwgMzIsIAotICAgIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAotICAgIDYsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMzUsIAotICAgIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCAKLSAgICA2LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgCi0gICAgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxNTgsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjE3LCAKLSAgICAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIxNywgMSwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMTcsIDEsIDMsIAotICAgIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCi0gICAgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzAsIAotICAgIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgCi0gICAgMjQ1LCAyMzQsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDUsIDIzNCwgNTYsIDgsIDYsIDEsIDIwMiwgMjM0LCA4LCA1LCAKLSAgICAxLCAyMDIsIDIzNCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDcsIAotICAgIDI5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDI0NSwgCi0gICAgOTUsIDgsIDYsIDEsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMTksIDIxNiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgCi0gICAgNSwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NSwgCi0gICAgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMTU4LCAzLCAKLSAgICAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgNzAsIAotICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIwMywgCi0gICAgMTI1LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgCi0gICAgMjQ1LCA5NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgOTUsIDgsIAotICAgIDUsIDEsIDI0MywgODQsIDIzMCwgMTg0LCA4LCA1LCAxLCAyNDQsIDEzMCwgMjQzLCAxOTEsIDgsIDUsIDEsIDIxNywgNjYsIAotICAgIDI0MywgMTkxLCA4LCA2LCAxLCAzNCwgMywgOTUsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCA5NSwgOCwgNSwgMSwgMjQ3LCAKLSAgICAxMjYsIDMsIDk1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIAotICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAKLSAgICAyMDksIDI0OCwgOCwgNiwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNiwgMSwgCi0gICAgNjYsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDE0MiwgOCwgNiwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDk1LCA4LCA1LCAxLCAxODgsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCA5NSwgOCwgNiwgMSwgNSwgMjE3LCAxMzUsIDMsIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIAotICAgIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNiwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNiwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDk1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCA2MywgOCwgCi0gICAgNSwgMSwgMjUxLCAyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjUxLCAyLCA4LCA1LCAxLCA2NiwgMywgMTEzLCA4LCA1LCAxLCAKLSAgICAxNzEsIDc4LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjA5LCAyNDgsIDgsIAotICAgIDUsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNSwgMSwgMjE2LCA3MywgNzQsIDgsIDUsIDEsIDIxNCwgMTkyLCA4LCA1LCAxLCAKLSAgICAyMTQsIDE5MywgMywgMTEzLCA4LCA1LCAxLCAxNzEsIDc0LCA4LCA1LCAxLCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKLSAgICAyMTYsIDczLCAxNzEsIDE4OCwgMywgMTEzLCA4LCA1LCAxLCAyNDYsIDE2LCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKLSAgICAyNDMsIDg0LCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDExMywgOCwgNSwgMSwgMTMyLCAyMzksIAotICAgIDc1LCA4LCAxLCA1LCA2LCAyMzksIDc1LCA4LCA1LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgMjE2LCAxODIsIDIzNiwgNTMsIAotICAgIDgsIDUsIDEsIDIwNywgMTc0LCAyMzcsIDE3MSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNSwgMSwgMjM3LCAzMiwgCi0gICAgMywgMTEzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjMwLCA4LCAxLCA1LCA2LCA3NSwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDgsIDEyNCwgOCwgNSwgCi0gICAgMSwgMjI4LCAxMzEsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjI3LCAxNjQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjYsIAotICAgIDE4NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgCi0gICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNDksIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIDExMywgCi0gICAgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDgsIDUsIDEsIDI0OCwgMjI1LCA3OCwgOCwgMSwgNSwgNiwgMjIwLCA3MywgOCwgNSwgCi0gICAgMSwgMjQ2LCAxNiwgMjIwLCAzNiwgOCwgNSwgMSwgMjE4LCAxOTIsIDgsIDUsIDEsIDIwNywgMTc0LCAxNDYsIDgsIDUsIDEsIAotICAgIDIwNywgMTc0LCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDExMywgOCwgCi0gICAgNSwgMSwgMjE3LCAxLCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMTYsIDczLCAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCAxLCA1LCA2LCAKLSAgICAxNDYsIDgsIDEsIDUsIDYsIDIzMCwgMjM5LCAxNDYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDExMywgOCwgNSwgMSwgMjQxLCAKLSAgICA3LCA4LCA1LCAxLCAyNDMsIDg0LCAyMzAsIDE4NSwgMywgMjExLCAzMiwgMjUsIDExMywgOCwgNSwgMSwgMjExLCAxNzQsIAotICAgIDIxNiwgNzMsIDI0MSwgNywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgCi0gICAgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDE0MiwgOCwgNSwgMSwgMjA2LCAyMTYsIAotICAgIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDYsIDE2NCwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjAzLCAxMjQsIDgsIDEsIDUsIDYsIDIwMywgMTI0LCA4LCA1LCAKLSAgICAxLCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzcsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDUsIDk1LCA4LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKLSAgICAyMTgsIDE5OSwgMjA1LCAxODYsIDIzOSwgMTI2LCA4LCAxLCAyMzAsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgMSwgCi0gICAgMjExLCA0MCwgMjQ3LCAxMjUsIDgsIDEsIDI0OCwgNzAsIDI0NiwgMjcsIDgsIDEsIDUsIDYsIDI0OSwgMjU1LCA4LCA1LCAxLCAKLSAgICAyNDYsIDE2LCAxNzEsIDc0LCA4LCAxLCA1LCA2LCAyMzksIDc2LCAzLCAxMTMsIDgsIDEsIDUsIDYsIDIzNywgMTcxLCA4LCAKLSAgICA1LCAxLCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCA4LCAxLCA1LCA2LCAxNTksIAotICAgIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAxMTMsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMTYsIDczLCAKLSAgICAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjQ0LCAzLCAyNDMsIAotICAgIDE5MSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjA4LCAyMiwgMjQzLCAxOTEsIAotICAgIDgsIDUsIDEsIDIwOSwgMTM3LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjA5LCAxOTQsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCAKLSAgICA1LCAxLCAyNDAsIDM5LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjI2LCAyNDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDE4NywgCi0gICAgMjQzLCAxOTEsIDgsIDEsIDI0OCwgNzAsIDIxOCwgMjQ1LCA4LCAxLCAyNDgsIDc4LCAyMTgsIDI0NSwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MSwgMjUsIAotICAgIDIwOSwgMjQ4LCA2NSwgMSwgNSwgMjM3LCAxNzEsIDY1LCAxLCA1LCAyMzcsIDE3MiwgMywgMTEzLCA2NSwgMSwgNSwgMjMwLCAKLSAgICAxODQsIDY1LCAxLCA1LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMTQ2LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIxNywgMSwgCi0gICAgMywgMTEzLCA2NSwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgNjUsIDEsIDUsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgMjAzLCAKLSAgICAxMjQsIDY1LCAxLCAyMTcsIDIzNiwgNjUsIDEsIDUyLCAyMTcsIDIzNiwgNjUsIDEsIDIwNywgMTc0LCAyNDUsIDIzMywgNjUsIAotICAgIDEsIDI1MCwgMTYwLCA2NSwgMSwgMjE2LCA3MywgMjQ1LCAyMzMsIDY1LCAxLCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIAotICAgIDQ5LCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgCi0gICAgNjEsIDY1LCAxLCA0OSwgMjUwLCA5NCwgNjUsIDEsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgCi0gICAgMTIxLCAyNTAsIDk0LCA2NSwgMSwgMjQ2LCA1MywgMjUxLCAxMzgsIDI0NywgMjksIDY1LCAxLCA4MCwgMjI3LCAxMTQsIDY1LCAKLSAgICAxLCAyMjUsIDE3MCwgNjUsIDEsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIzNywgMjU0LCAyNTEsIDEzOCwgNjUsIDEsIAotICAgIDEyNCwgODAsIDIyNywgMTE0LCA2NSwgMSwgMTI0LCAyMjUsIDE3MCwgNjUsIDEsIDEyNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCAKLSAgICA2NSwgMSwgMTI0LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDE2MiwgCi0gICAgMjA4LCA4MiwgMjQ1LCAyNDIsIDY1LCAxLCAyNDYsIDIxNiwgNTAsIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyNDYsIDIxNiwgCi0gICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAxMTIsIDIxMCwgMywgNjUsIDEsIDEyMSwgMjEwLCAzLCA2NSwgMSwgOTEsIDU0LCAKLSAgICA2NSwgMSwgMjI0LCAxMDMsIDU0LCAyNDcsIDIxNCwgNzAsIDU1LCAyMTUsIDI1MywgNTUsIDIyMCwgNjIsIDUsIDIwOCwgCi0gICAgMjI3LCA1MiwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjE2LCA1OCwgMTEzLCA2NSwgMSwgMjQ1LCAxMzEsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgNSwgMjM4LCAyMzUsIDY1LCAxLCA1LCAxNTksIDY1LCAxLCA1LCAxOTQsIDY1LCAxLCA1LCAyMDMsIAotICAgIDE5NiwgNjUsIDEsIDUsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgNjEsIDY1LCAxLCAyNDAsIDE5OCwgMTQzLCAxNDIsIDY1LCAKLSAgICAxLCAxMzgsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAxNDMsIDE0MiwgNjUsIDEsIAotICAgIDI0MCwgMTk3LCAxNDMsIDE0MiwgNjUsIDEsIDIwMywgMSwgMjQ0LCAyNywgMTQzLCA4MiwgNjUsIDEsIDIwMywgNzcsIDI0NCwgCi0gICAgMjcsIDE0MywgODIsIDY1LCAxLCAyMDUsIDE4NCwgNjUsIDEsIDIwNiwgMjUxLCA2NSwgMSwgNTIsIDI1MCwgMTYwLCA2NSwgCi0gICAgMSwgMTI0LCAxMjEsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDExMiwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgNDksIDI1MCwgOTQsIAotICAgIDY1LCAxLCAxMjQsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCAyMTUsIDI1MiwgNjUsIDEsIDEwMSwgMjM3LCAyNTQsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjUxLCAxMjYsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgMTI0LCAyMDgsIDIyNywgNjUsIDEsIDIxNiwgMTg4LCAyNDUsIDI0MiwgNjUsIDEsIDI0OCwgMTQyLCAKLSAgICAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDI0OCwgMTQyLCAxMjQsIDIwOCwgCi0gICAgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTI0LCAyMDgsIDE2MSwgNjUsIDEsIDIxMywgMzQsIDY1LCAxLCAxNzEsIDIxMywgMzQsIAotICAgIDY1LCAxLCAxMjQsIDQ5LCA0NywgMzksIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIAotICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAzOSwgMjA4LCAyMjcsIDM5LCAyMjUsIDE3MCwgMzksIDIxOSwgMTk4LCAzOSwgMjQ3LCAKLSAgICAyMTQsIDM5LCA3MCwgNTUsIDM5LCAyNDMsIDIzMSwgMzksIDIzNiwgMTE2LCA1NSwgMzksIDIxNSwgMjUzLCA1NSwgMzksIAotICAgIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyNDcsIDI5LCAzOSwgODAsIDIyNywgMTE1LCA1NSwgMzksIDUyLCA4MCwgCi0gICAgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI0NywgNTIsIDM5LCAyMzAsIDIzOSwgMjQ3LCAKLSAgICAyMTQsIDM5LCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDU1LCAzOSwgMjQ1LCAyMzQsIDU1LCAzOSwgMjE2LCA3MywgMjQ1LCAyMzQsIAotICAgIDU1LCAzOSwgMjQ1LCAyMzQsIDg3LCAyMTYsIDE2LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM5LCA1NiwgMzksIDI1MSwgMTI2LCAKLSAgICAyNTEsIDEzOSwgNTYsIDM5LCA0OSwgMjEwLCA0LCA1NiwgMzksIDUwLCAyMTAsIDQsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCAKLSAgICA1NSwgMzksIDIzNiwgNTMsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAxMTIsIDIxMCwgNCwgNTYsIDM5LCAxMjEsIAotICAgIDIxMCwgNCwgNTYsIDM5LCA5MSwgMiwgNTYsIDM5LCAyMjQsIDEwMywgMiwgNTYsIDM5LCAyMTksIDE0MCwgMjM2LCAxMTYsIAotICAgIDU2LCAzOSwgMjE2LCA3OSwgMjM2LCAxMTYsIDU2LCAzOSwgNzAsIDU2LCAzOSwgMjQzLCAyMzIsIDU2LCAzOSwgMjE1LCAKLSAgICAyNTMsIDU2LCAzOSwgMjQ1LCAyMzQsIDU2LCAzOSwgMjQ2LCAyMzEsIDM5LCAyMjAsIDYyLCAzOSwgODAsIDIyNywgMTE1LCAKLSAgICA1NiwgMzksIDI0NywgMjA4LCA1NiwgMzksIDIzMCwgMjM5LCA1MiwgMjUwLCAxMjcsIDU2LCAzOSwgMjQ3LCAzMCwgNTYsIAotICAgIDM5LCAyNDYsIDUzLCAyNTEsIDEzOSwgNTYsIDM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMTUsIDU2LCAKLSAgICAzOSwgMjA4LCAyMjgsIDU2LCAzOSwgMjI1LCAxNzEsIDU2LCAzOSwgMTI0LCAyMjcsIDExNCwgMzksIDUyLCAxMjQsIDIyNywgCi0gICAgMTE0LCAzOSwgMjA4LCAyMjgsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMTYzLCAKLSAgICAyMTEsIDMyLCAyMTksIDE5OSwgMzksIDIxMiwgMjI4LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgMTYzLCAyMTIsIDEsIDIxOSwgCi0gICAgMTk5LCAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU2LCAzOSwgMjMwLCAyMzksIDI0NywgMjA4LCA1NiwgMzksIDUxLCA1NiwgCi0gICAgMzksIDIxNCwgMTc2LCA1NiwgMzksIDIwMywgMTk3LCA1NSwgMzksIDgwLCAyMDgsIDIyNywgMzksIDUyLCAyMTksIDE5OCwgCi0gICAgMzksIDIzNywgMjU0LCAxNDMsIDgyLCAzOSwgMjUxLCAxMjYsIDE0MywgODIsIDM5LCAzMCwgMjE4LCAyMzksIDM5LCAzMCwgCi0gICAgMjI4LCAyNTIsIDM5LCAzMCwgMjQzLCAyMjUsIDIwOCwgMTQ5LCAzOSwgMzAsIDIwMiwgMjIxLCAzOSwgMjQ3LCAyMDgsIDU1LCAKLSAgICAzOSwgMjQxLCAzNSwgMiwgNTYsIDM5LCA1MiwgODAsIDIyNywgMTE1LCA1NiwgMzksIDQ5LCAyNTAsIDIxOCwgNTYsIDM5LCAKLSAgICAyMjEsIDE2NiwgMjA4LCAyMjgsIDU1LCAzOSwgMjM2LCAxMjIsIDU1LCAzOSwgMjUxLCA3LCAxNTYsIDIwOCwgMTczLCA1NSwgCi0gICAgMzksIDQ5LCA1MCwgNTMsIDU2LCAzOSwgMTc3LCA1MywgNTYsIDM5LCAyMzgsIDQsIDIzMCwgOTYsIDM5LCA1MCwgMjUwLCAKLSAgICA5NSwgNTUsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCAyNDAsIDM2LCAzOSwgMjAzLCAxOTcsIDU2LCAzOSwgNDksIAotICAgIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMTIsIDI1MCwgOTUsIDU2LCAKLSAgICAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU1LCAzOSwgNzAsIDg3LCAyMTYsIDE2LCAzOSwgMjUwLCA2MCwgNTYsIDM5LCA1MiwgCi0gICAgMjE1LCAyNTMsIDU2LCAzOSwgMjAyLCAzMCwgNTUsIDM5LCA1MiwgMjQ3LCAyMTUsIDU2LCAzOSwgNTIsIDI0NywgMjE0LCAKLSAgICAzOSwgNTIsIDIyNSwgMTcwLCAzOSwgNTIsIDIyNSwgMTcxLCA1NiwgMzksIDUyLCAyMDgsIDIyNywgMzksIDUyLCAyMzAsIAotICAgIDIzOSwgMjQ3LCAyMTQsIDM5LCA1MiwgODYsIDUzLCA1NiwgMzksIDgsIDUsIDEsIDYzLCAzOSwgOCwgNSwgMSwgNzQsIDM5LCAKLSAgICA4LCA1LCAxLCA3NSwgMzksIDgsIDUsIDEsIDc4LCAzOSwgOCwgNSwgMSwgNjgsIDM5LCA4LCA1LCAxLCAyNDcsIDEyNSwgMzksIAotICAgIDgsIDUsIDEsIDI0NSwgNTEsIDM5LCA4LCA1LCAxLCAyMzcsIDE3MSwgMzksIDgsIDUsIDEsIDIyNiwgMTg1LCAzOSwgOCwgNSwgCi0gICAgMSwgMTQ2LCAzOSwgOCwgNSwgMSwgMjEwLCA2OSwgMzksIDgsIDUsIDEsIDIwNiwgMTY0LCAzOSwgOCwgNSwgMSwgMjAzLCAKLSAgICAxOTYsIDMwLCA2LCAxLCAyMzcsIDIwLCAzMCwgNSwgMSwgMjM3LCAyMCwgMzAsIDYsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgCi0gICAgMzAsIDUsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgMzAsIDIyMSwgNDQsIDU0LCAzMCwgMjI2LCAyNTEsIDIyMSwgNDQsIDU0LCAKLSAgICAzMCwgNiwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgNSwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgMjAyLCAyMjEsIAotICAgIDMwLCA1LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNSwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgCi0gICAgMTQ1LCA5NywgMzAsIDUsIDIxNiwgNzMsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAyMTcsIDQ3LCAKLSAgICA4MiwgMzAsIDYsIDEsIDIwMiwgMjI3LCAzMCwgMjA4LCAxNDksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDMwLCA2LCAxLCAKLSAgICAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgMjUwLCAyMDMsIDIwOSwgMTYzLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA4LCAKLSAgICAxNDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjA4LCAxNDksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIAotICAgIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIAotICAgIDMwLCA2LCAxLCAyNTEsIDIsIDMwLCA2LCAxLCAyNDgsIDEwNiwgMzAsIDYsIDEsIDIzOCwgMjM1LCAzMCwgNiwgMSwgMjQ0LCAKLSAgICAzNywgMzAsIDYsIDEsIDI0MSwgMzcsIDMwLCA2LCAxLCAyMDIsIDgzLCAzMCwgNiwgMSwgMjQwLCAyNDgsIDMwLCA2LCAxLCAKLSAgICAyMDksIDc0LCAzMCwgNiwgMSwgMjMwLCAyMzAsIDMwLCA2LCAxLCAyMjksIDI0NywgMzAsIDYsIDEsIDIyOCwgMjQsIDMwLCAKLSAgICA2LCAxLCAyMjMsIDI0NiwgMzAsIDYsIDEsIDIyMSwgODQsIDMwLCA2LCAxLCAyMDMsIDE3MCwgMzAsIDYsIDEsIDIyMCwgMzQsIAotICAgIDMwLCA2LCAxLCAyMTgsIDE2NywgMzAsIDYsIDEsIDIxNiwgNTksIDMwLCA2LCAxLCAyMTIsIDE0NCwgMzAsIDYsIDEsIDIwOSwgCi0gICAgMjA3LCAzMCwgNiwgMSwgMjA2LCAyMTYsIDMwLCA2LCAxLCAyMTgsIDE5MiwgMzAsIDYsIDEsIDI0NiwgMTQyLCAzMCwgNiwgCi0gICAgMSwgMjE3LCAyMDIsIDMwLCA2LCAxLCAyMjAsIDM2LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI0LCAzMCwgNiwgCi0gICAgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI0MSwgCi0gICAgMzgsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIAotICAgIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIDMwLCA1LCAxLCAyNTEsIAotICAgIDIsIDMwLCA1LCAxLCAyNDgsIDEwNiwgMzAsIDUsIDEsIDIzOCwgMjM1LCAzMCwgNSwgMSwgMjQ0LCAzNywgMzAsIDUsIDEsIAotICAgIDI0MSwgMzcsIDMwLCA1LCAxLCAyMDIsIDgzLCAzMCwgNSwgMSwgMjQwLCAyNDgsIDMwLCA1LCAxLCAyMDksIDc0LCAzMCwgNSwgCi0gICAgMSwgMjMwLCAyMzAsIDMwLCA1LCAxLCAyMjksIDI0NywgMzAsIDUsIDEsIDIyOCwgMjQsIDMwLCA1LCAxLCAyMjMsIDI0NiwgCi0gICAgMzAsIDUsIDEsIDIyMSwgODQsIDMwLCA1LCAxLCAyMDMsIDE3MCwgMzAsIDUsIDEsIDIyMCwgMzQsIDMwLCA1LCAxLCAyMTgsIAotICAgIDE2NywgMzAsIDUsIDEsIDIxNiwgNTksIDMwLCA1LCAxLCA0NiwgMjEyLCAxNDQsIDMwLCA1LCAxLCAyMTIsIDE0NCwgMzAsIAotICAgIDUsIDEsIDIwOSwgMjA3LCAzMCwgNSwgMSwgMjA2LCAyMTYsIDMwLCA1LCAxLCAyMTgsIDE5MiwgMzAsIDUsIDEsIDI0NiwgCi0gICAgMTQyLCAzMCwgNSwgMSwgMjE3LCAyMDIsIDMwLCA1LCAxLCAyMjAsIDM2LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgCi0gICAgMjI0LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjA4LCAxNDksIDMwLCAKLSAgICA1LCAxLCAyMDYsIDIxNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDIzMCwgCi0gICAgMTksIDk3LCAzMCwgMjQ4LCAxMDcsIDk3LCAzMCwgMjA5LCA3NSwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjM2LCAxMTYsIDk3LCAKLSAgICAzMCwgMjA2LCAyMTcsIDMsIDI1MSwgMTI2LCAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjA2LCAyMTcsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjE4LCAxOTMsIDk3LCAzMCwgMjE4LCAxNjgsIDk3LCAzMCwgMjMwLCAxOSwgOTcsIAotICAgIDMwLCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgNSwgMSwgMjUwLCAxMjYsIDIyOSwgMCwgMzAsIDEsIDIxMSwgNzEsIDMwLCAKLSAgICA1LCAxLCAyMTEsIDcxLCAzMCwgMSwgMjQzLCAxOTksIDMwLCA1LCAxLCAyNDMsIDE5OSwgMzAsIDEsIDIyOSwgMCwgMzAsIDUsIAotICAgIDEsIDIyOSwgMCwgMzAsIDEsIDIxNCwgMjQ2LCAzMCwgNSwgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyMTMsIDM1LCA4NCwgNSwgCi0gICAgMSwgMjEzLCAzNSwgODQsIDYsIDEsIDI0MCwgNDUsIDg0LCA1LCAxLCAyNDAsIDQ1LCA4NCwgNiwgMSwgMjI5LCAxMjcsIDg0LCAKLSAgICA1LCAxLCAyMjksIDEyNywgODQsIDYsIDEsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMjM2LCAxMDcsIDg0LCA2LCAxLCAyMzgsIAotICAgIDIzMCwgODQsIDUsIDEsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMjEzLCAxLCA4NCwgNSwgMSwgMjEzLCAxLCA4NCwgNiwgMSwgCi0gICAgMjQ0LCA1MiwgODQsIDUsIDEsIDI0NCwgNTIsIDMwLCAyMjksIDI0OCwgOTcsIDMwLCAyMTYsIDYwLCA5NywgMzAsIDIyNiwgCi0gICAgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAxLCAyMDIsIDIyNywgMzAsIDYsIDIwOSwgNzUsIDk3LCAzMCwgMjI2LCAyMjEsIAotICAgIDI0MSwgMzgsIDk3LCAzMCwgMjE2LCA3MywgMjI2LCAyMjEsIDI0MSwgMzgsIDk3LCAzMCwgNiwgMSwgMjEyLCAyNDIsIDMwLCAKLSAgICA1LCAxLCAyMTIsIDI0MiwgMzAsIDYsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA2LCAxLCAyMTQsIDI0MywgMzAsIDUsIAotICAgIDEsIDIxNCwgMjQzLCAzMCwgMjE2LCA2MCwgMywgMjExLCAzMiwgOTcsIDMwLCA2LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAKLSAgICAxNDUsIDk3LCAzMCwgNiwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDIxNiwgNzMsIDI0MiwgODMsIAotICAgIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMzAsIAotICAgIDIzNCwgMzYsIDYsIDEsIDI0MywgMTMwLCAzNiwgNiwgMSwgMjM4LCA1MiwgMzYsIDYsIDEsIDIwNywgMTEsIDIzMSwgMTEwLCAKLSAgICAzNiwgNiwgMSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA2LCAxLCAyMDMsIDExLCAzNiwgNiwgMSwgCi0gICAgMjMwLCAxNjEsIDM2LCA2LCAxLCAyMjcsIDgwLCAzNiwgNiwgMSwgMjIyLCA0MSwgMzYsIDYsIDEsIDIwOCwgOCwgMzYsIDYsIAotICAgIDEsIDIyOSwgNDksIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNjgsIDM2LCAKLSAgICA2LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDYzLCAzNiwgNiwgMSwgMjQ4LCAxNjIsIDM2LCA2LCAxLCAyMDYsIDU1LCAzNiwgCi0gICAgNiwgMSwgMjM4LCAxMDUsIDM2LCA2LCAxLCAyNDQsIDc1LCAzNiwgNiwgMSwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMDIsIDcxLCAKLSAgICAzNiwgNiwgMSwgMjAyLCA5MiwgMzYsIDYsIDEsIDc1LCAzNiwgNiwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNiwgMSwgMTczLCAKLSAgICAzNiwgNiwgMSwgMjQxLCAxMjIsIDM2LCA2LCAxLCAyNDEsIDEwMywgMzYsIDYsIDEsIDI0MSwgOTIsIDM2LCA2LCAxLCA3OCwgCi0gICAgMzYsIDYsIDEsIDIxOSwgMzQsIDM2LCA2LCAxLCAyNDEsIDI4LCAzNiwgNiwgMSwgMjQxLCAxNywgMzYsIDYsIDEsIDIwOSwgCi0gICAgMTg3LCAzNiwgNiwgMSwgNjgsIDM2LCA2LCAxLCAyNDEsIDE1NCwgMzYsIDYsIDEsIDE1MiwgMzYsIDYsIDEsIDIwOCwgMTQsIAotICAgIDM2LCA2LCAxLCAyNDYsIDE3MCwgMzYsIDYsIDEsIDIxMywgOTAsIDM2LCA2LCAxLCAyMTMsIDQ2LCAzNiwgNiwgMSwgMjM3LCAKLSAgICA5MSwgNTQsIDM2LCA2LCAxLCAyMDMsIDMwLCAzNiwgNiwgMSwgMjEyLCA3LCA1NCwgMzYsIDYsIDEsIDc0LCAzNiwgNiwgMSwgCi0gICAgMjAyLCAyMTMsIDM2LCA2LCAxLCAxOTgsIDM2LCA1LCAxLCA2MywgMzYsIDUsIDEsIDI0OCwgMTYyLCAzNiwgNSwgMSwgMjA2LCAKLSAgICA1NSwgMzYsIDUsIDEsIDIzOCwgMTA1LCAzNiwgNSwgMSwgMjQ0LCA3NSwgMzYsIDUsIDEsIDIzMSwgMTEwLCAzNiwgNSwgMSwgCi0gICAgMjAyLCA3MSwgMzYsIDUsIDEsIDIwMiwgOTIsIDM2LCA1LCAxLCA3NSwgMzYsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMzYsIDUsIAotICAgIDEsIDE3MywgMzYsIDUsIDEsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjQxLCAxMDMsIDM2LCA1LCAxLCAyNDEsIDkyLCAzNiwgNSwgCi0gICAgMSwgNzgsIDM2LCA1LCAxLCAyMTksIDM0LCAzNiwgNSwgMSwgMjQxLCAyOCwgMzYsIDUsIDEsIDI0MSwgMTcsIDM2LCA1LCAxLCAKLSAgICAyMDksIDE4NywgMzYsIDUsIDEsIDY4LCAzNiwgNSwgMSwgMjQxLCAxNTQsIDM2LCA1LCAxLCAxNTIsIDM2LCA1LCAxLCAyMDgsIAotICAgIDE0LCAzNiwgNSwgMSwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMTMsIDkwLCAzNiwgNSwgMSwgMjEzLCA0NiwgMzYsIDUsIDEsIAotICAgIDIzNywgOTEsIDU0LCAzNiwgNSwgMSwgMjAzLCAzMCwgMzYsIDUsIDEsIDIxMiwgNywgNTQsIDM2LCA1LCAxLCA3NCwgMzYsIAotICAgIDUsIDEsIDIwMiwgMjEzLCAzNiwgNSwgMSwgMTk4LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgCi0gICAgMjMwLCAyMzQsIDM2LCA1LCAxLCAyNDMsIDEzMCwgMzYsIDUsIDEsIDIzOCwgNTIsIDM2LCA1LCAxLCAyMDcsIDExLCAyMzEsIAotICAgIDExMCwgMzYsIDUsIDEsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjQ3LCAxMzUsIDc1LCAzNiwgNSwgMSwgMjAzLCAxMSwgMzYsIAotICAgIDUsIDEsIDIzMCwgMTYxLCAzNiwgNSwgMSwgMjI3LCA4MCwgMzYsIDUsIDEsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMDgsIDgsIAotICAgIDM2LCA1LCAxLCAyMjksIDQ5LCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgMjEyLCAyMjgsIAotICAgIDY4LCAzNiwgNSwgMSwgMjQxLCAyNDgsIDM2LCA2LCAxLCAyMjAsIDM2LCAzNiwgNSwgMSwgMjIwLCAzNiwgMzYsIDYsIDEsIAotICAgIDIwMywgNjYsIDM2LCA1LCAxLCAyMDMsIDY2LCAzNiwgNiwgMSwgMjMwLCAyMjgsIDc0LCAzNiwgNSwgMSwgMjMwLCAyMjgsIAotICAgIDc0LCAzNiwgNiwgMSwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIDEsIAotICAgIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIAotICAgIDYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCi0gICAgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMjgsIAotICAgIDIyNSwgMzYsIDUsIDEsIDIyOCwgMjI1LCAzNiwgNiwgMSwgMjE3LCAyMDIsIDM2LCA1LCAxLCAyMTcsIDIwMiwgMzYsIDYsIAotICAgIDEsIDIzOSwgMjM1LCAzNiwgNSwgMSwgMjM5LCAyMzUsIDM2LCA2LCAxLCAyMzAsIDE4NiwgMzYsIDUsIDEsIDIzMCwgMTg2LCAKLSAgICAzNiwgNiwgMSwgMjMwLCAxODcsIDMsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM2LCA1LCAxLCAyMzAsIDE4NywgMywgNTIsIAotICAgIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDYsIDEsIDIwNywgMTQsIDM2LCA1LCAxLCAyMDcsIDE0LCAzNiwgNiwgMSwgMjE1LCAKLSAgICAxOTEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMTUsIDE5MSwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMCwgMzcsIDMsIDIwOCwgCi0gICAgMTk3LCAzNiwgNSwgMSwgMjIwLCAzNywgMywgMjA4LCAxOTcsIDM2LCA2LCAxLCAyMTksIDIyNCwgMzYsIDUsIDEsIDIxOSwgCi0gICAgMjI0LCAzNiwgNiwgMSwgMjI5LCAwLCAzNiwgNSwgMSwgMjI5LCAwLCAzNiwgMjA5LCAzNSwgNTQsIDM5LCAzNiwgMjA4LCAKLSAgICAxOTcsIDM5LCAzNiwgMjE5LCAxNDEsIDM5LCAzNiwgMjQ0LCAxNDIsIDIxOCwgNzEsIDM5LCAzNiwgMjE3LCAxOTYsIDIxOCwgCi0gICAgNzEsIDM5LCAzNiwgMjE4LCA1NSwgMzksIDM2LCAyMzYsIDEyLCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMjQsIDExNCwgNTQsIAotICAgIDM2LCA2LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDIzNSwgMjA2LCAKLSAgICAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDUsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDYsIDEsIAotICAgIDI0MSwgMjksIDMsIDIwOCwgMjU0LCAzNiwgNSwgMSwgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA2LCAxLCAyMzgsIDEwNiwgCi0gICAgMywgMjA2LCAyMTUsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjA2LCAyMTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgOTUsIAotICAgIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgOTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAKLSAgICAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDcyLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjAyLCA3MiwgCi0gICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDkzLCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKLSAgICAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAKLSAgICA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDk1LCAzNiwgNiwgMSwgMjQ4LCAyMTQsIDE3MywgMzYsIDUsIDEsIDI0OCwgCi0gICAgMjE0LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjQ0LCAyMCwgCi0gICAgMzYsIDYsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDUsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDYsIDEsIAotICAgIDIxOSwgMzUsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNTEsIDE0NSwgCi0gICAgMTUyLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDE1MiwgMzYsIDYsIDEsIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAKLSAgICAyNDEsIDE4LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDksIDE4OCwgCi0gICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIxMSwgNTMsIDY4LCAzNiwgNSwgMSwgMjExLCA1MywgNjgsIDM2LCA2LCAxLCAyMTEsIAotICAgIDUzLCAxMDYsIDMsIDk1LCAzNiwgNSwgMSwgMjExLCA1MywgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCAKLSAgICAyNDQsIDIwLCAzNiwgNSwgMSwgMjM3LCAxNjAsIDMsIDI0NCwgMjAsIDM2LCA2LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIAotICAgIDM2LCA1LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAotICAgIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDI0NiwgMTcxLCAKLSAgICAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMTMsIDEyLCAzNiwgNSwgMSwgMjEzLCAxMiwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIAotICAgIDE3MCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MCwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAKLSAgICAyMCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDEsIDIxOSwgMTMzLCAzNiwgNiwgMSwgCi0gICAgMjAyLCA3MiwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDIzMCwgNDQsIAotICAgIDMsIDExMywgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIAotICAgIDUsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDExMywgMzYsIDUsIDEsIDI0MSwgCi0gICAgOTMsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjA5LCAKLSAgICAyNDgsIDM2LCA2LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA2LCAKLSAgICAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTksIAotICAgIDEzMywgMzYsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDM0LCAKLSAgICAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA1LCAKLSAgICAzMiwgMzQsIDIzMSwgMTEwLCAzNiwgNiwgMSwgMjMxLCAxMTEsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIAotICAgIDI0NywgMjE0LCAzNiwgNiwgMSwgMjE0LCAxOTIsIDM2LCA1LCAxLCAyMTQsIDE5MiwgMzYsIDYsIDEsIDIxNCwgMTkzLCAzLCAKLSAgICAyNDMsIDIzMSwgMzYsIDUsIDEsIDIxNCwgMTkzLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNSwgMSwgMjAyLCA3MiwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMDIsIDkzLCAzLCAyNDMsIDIzMSwgMzYsIAotICAgIDUsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjUxLCAKLSAgICAxNDUsIDI0MSwgMjUyLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAKLSAgICAyNDgsIDIyNSwgNzgsIDM2LCA1LCAxLCAyNDgsIDIyNSwgNzgsIDM2LCA2LCAxLCAyNDgsIDIyNSwgMTU4LCAzLCAyNDMsIAotICAgIDIzMSwgMzYsIDUsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgCi0gICAgMzYsIDUsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMTA2LCAzLCAKLSAgICAyMjUsIDE3MCwgMzYsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzNiwgNiwgCi0gICAgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIAotICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjQ2LCAxNzEsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDI0NCwgCi0gICAgMjAsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMywgMzEsIDMsIDI0MywgMjMxLCAzNiwgCi0gICAgNSwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjExLCAzMiwgMjUsIDExMywgMzYsIAotICAgIDUsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDUsIAotICAgIDEsIDIzNywgMTYwLCAzLCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgOTUsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgCi0gICAgOTUsIDM2LCA2LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQ0LCA3NSwgMzYsIDYsIDEsIAotICAgIDIyOSwgMTAsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDIsIAotICAgIDIxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjAyLCAyMSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0MSwgMjQ0LCAzNiwgNSwgMSwgCi0gICAgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA2LCAxLCAyMjksIDEwLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjI3LCAKLSAgICA4MCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjIsIDQxLCAzNiwgNiwgMSwgCi0gICAgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIxMiwgNzEsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDgsIAotICAgIDE5MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIwOCwgMTkxLCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDUsIDEsIAotICAgIDIxNiwgNzMsIDIwMiwgOTIsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAxMjMsIDMsIDExMywgCi0gICAgMzYsIDYsIDEsIDIyNywgMTYxLCAzNiwgNSwgMSwgMjI3LCAxNjEsIDM2LCA2LCAxLCAyMTYsIDYxLCAzNiwgNSwgMSwgMjE2LCAKLSAgICA2MSwgMzYsIDYsIDEsIDIwMywgOTksIDM2LCA1LCAxLCAyMDMsIDk5LCAzNiwgNiwgMSwgMjE3LCAxMjYsIDM2LCA1LCAxLCAKLSAgICAyMTcsIDEyNiwgMzYsIDYsIDEsIDIwNCwgNjIsIDM2LCA1LCAxLCAyMDQsIDYyLCAzNiwgNiwgMSwgMjUxLCAyNiwgMTczLCAKLSAgICAzNiwgNSwgMSwgMjUxLCAyNiwgMTczLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjQxLCAKLSAgICAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAKLSAgICAxMDEsIDExMywgMzYsIDYsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxMywgMTMsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKLSAgICAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgNDksIDExMywgMzYsIDYsIDEsIDI0MSwgMjM3LCAKLSAgICAzNiwgNSwgMSwgMjQxLCAyMzcsIDM2LCA2LCAxLCAyNDQsIDEyNCwgMzYsIDUsIDEsIDI0NCwgMTI0LCAzNiwgNiwgMSwgCi0gICAgMjQxLCAxMjMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMTc4LCA2LCAxLCAyNTAsIDUsIAotICAgIDE3OCwgNiwgMSwgMjQ4LCAxMjIsIDE3OCwgNiwgMSwgMjM4LCA2OSwgMTc4LCA2LCAxLCAyNDQsIDIxMiwgMTc4LCA2LCAxLCAKLSAgICAyNDEsIDE2NywgMTc4LCA2LCAxLCAyMDIsIDExNiwgMTc4LCA2LCAxLCAyNDEsIDE0NywgMTc4LCA2LCAxLCAyNDAsIDI1MCwgCi0gICAgMTc4LCA2LCAxLCAxMzUsIDE3OCwgNiwgMSwgMjAyLCA3MSwgMTc4LCA2LCAxLCAyMzEsIDE5LCAxNzgsIDYsIDEsIDIyNywgCi0gICAgODMsIDE3OCwgNiwgMSwgMjAzLCAxNzQsIDE3OCwgNiwgMSwgMjQ3LCA5MiwgMTc4LCA2LCAxLCAyMjksIDE4MCwgMTc4LCA2LCAKLSAgICAxLCAyMzYsIDEzNiwgMTc4LCA2LCAxLCAyMzAsIDE4MSwgMTc4LCA2LCAxLCAyMzgsIDExNiwgMTc4LCA2LCAxLCAyNDYsIAotICAgIDE2MCwgMTc4LCA2LCAxLCAyMjQsIDI0MCwgMTc4LCA2LCAxLCAyMDMsIDExLCAxNzgsIDYsIDEsIDIyMSwgMTUyLCAxNzgsIAotICAgIDYsIDEsIDIxMywgOTAsIDE3OCwgNiwgMSwgMjA1LCAxODksIDE3OCwgNiwgMSwgMjQ2LCAxOTksIDE3OCwgNiwgMSwgMjE5LCAKLSAgICAxNiwgMTc4LCA2LCAxLCAyMzAsIDE0NCwgMTc4LCA2LCAxLCAyMTYsIDIyMCwgMTc4LCA2LCAxLCAyMTQsIDE1NSwgMTc4LCAKLSAgICA2LCAxLCAyMDUsIDIzNCwgMTc4LCA2LCAxLCAyMDgsIDE5NCwgMTc4LCA2LCAxLCAyMTYsIDEyMiwgMTc4LCA2LCAxLCAyNDUsIAotICAgIDI1NCwgMTc4LCA2LCAxLCAyMDIsIDI1MiwgMTc4LCA2LCAxLCAyMTgsIDEwMiwgMTc4LCA2LCAxLCAyMjksIDE5MSwgMTc4LCAKLSAgICA2LCAxLCAyMjAsIDYwLCAxNzgsIDYsIDEsIDI0MCwgNDcsIDE3OCwgNjUsIDEsIDQ5LCAxNjIsIDIxNSwgMjUyLCAxNzgsIAotICAgIDI1MCwgMTYwLCAxNzgsIDI0MSwgOTYsIDgyLCAxNzgsIDI0MCwgMjEyLCA4MiwgMTc4LCAyNDUsIDIzMywgMTc4LCAyMTcsIAotICAgIDQ3LCA4MiwgMTc4LCAyNTEsIDE0NiwgODIsIDE3OCwgNSwgMSwgMjUwLCA1LCAxNzgsIDUsIDEsIDI0OCwgMTIyLCAxNzgsIAotICAgIDUsIDEsIDIzOCwgNjksIDE3OCwgNSwgMSwgMjQ0LCAyMTIsIDE3OCwgNSwgMSwgMjQxLCAxNjcsIDE3OCwgNSwgMSwgMjAyLCAKLSAgICAxMTYsIDE3OCwgNSwgMSwgMjQxLCAxNDcsIDE3OCwgNSwgMSwgMjQwLCAyNTAsIDE3OCwgNSwgMSwgMTM1LCAxNzgsIDUsIDEsIAotICAgIDIwMiwgNzEsIDE3OCwgNSwgMSwgMjMxLCAxOSwgMTc4LCA1LCAxLCAyMjcsIDgzLCAxNzgsIDUsIDEsIDIwMywgMTc0LCAKLSAgICAxNzgsIDUsIDEsIDI0NywgOTIsIDE3OCwgNSwgMSwgMjI5LCAxODAsIDE3OCwgNSwgMSwgMjM2LCAxMzYsIDE3OCwgNSwgMSwgCi0gICAgMjMwLCAxODEsIDE3OCwgNSwgMSwgMjM4LCAxMTYsIDE3OCwgNSwgMSwgMjQ2LCAxNjAsIDE3OCwgNSwgMSwgMjI0LCAyNDAsIAotICAgIDE3OCwgNSwgMSwgMjAzLCAxMSwgMTc4LCA1LCAxLCAyMjEsIDE1MiwgMTc4LCA1LCAxLCAyMTMsIDkwLCAxNzgsIDUsIDEsIAotICAgIDIwNSwgMTg5LCAxNzgsIDUsIDEsIDI0NiwgMTk5LCAxNzgsIDUsIDEsIDIxOSwgMTYsIDE3OCwgNSwgMSwgMjMwLCAxNDQsIAotICAgIDE3OCwgNSwgMSwgMjE2LCAyMjAsIDE3OCwgNSwgMSwgMjE0LCAxNTUsIDE3OCwgNSwgMSwgMjA1LCAyMzQsIDE3OCwgNSwgMSwgCi0gICAgMjA4LCAxOTQsIDE3OCwgNSwgMSwgMjE2LCAxMjIsIDE3OCwgNSwgMSwgMjQ1LCAyNTQsIDE3OCwgNSwgMSwgMjAyLCAyNTIsIAotICAgIDE3OCwgNSwgMSwgMjE4LCAxMDIsIDE3OCwgNSwgMSwgMjI5LCAxOTEsIDE3OCwgNSwgMSwgMjIwLCA2MCwgMTc4LCA1LCAxLCAKLSAgICAyNDAsIDQ3LCAxNzgsIDUsIDMyLCAyNDEsIDE2OCwgMjAyLCAyNTIsIDE3OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3OCwgCi0gICAgMjM1LCAyMjAsIDIxNiwgMTUsIDE3OCwgMjQwLCAyNDYsIDU0LCAyMjcsIDIyMSwgMTc4LCAyNDAsIDI0NiwgNTQsIDE3OCwgCi0gICAgMjQyLCA2MCwgNTQsIDExMCwgMjUxLCAxMzksIDI0MCwgMjQxLCAxMTAsIDI1MSwgMTM5LCAyMTQsIDE1NiwgMTEwLCAyNTEsIAotICAgIDEzOSwgMjEzLCA2OSwgMTEwLCAyNTEsIDEzOSwgMjAyLCAxMDMsIDIxNywgMTA5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgCi0gICAgMjM4LCAyNTQsIDExMCwgMjUxLCAxMzksIDIwOCwgMjA5LCAxMTAsIDI1MSwgMTM5LCAyMTYsIDcwLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDIsIDEwMSwgMTEwLCAyNTEsIDEzOSwgMjE5LCA2MSwgMTEwLCAyNTEsIDEzOSwgMjAzLCAyMywgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjA5LCAxMTUsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY3LCAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2OCwgMjIzLCAyMDgsIAotICAgIDExMCwgMjUxLCAxMzksIDIzOCwgMTY1LCAxMTAsIDI1MSwgMTM5LCAyMTcsIDExMCwgMjE5LCA5MCwgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjA5LCAxNTgsIDIzOCwgMTgzLCAxMTAsIDI1MSwgMTM5LCAyMTksIDQwLCAxMTAsIDI1MSwgMTM5LCAyNTAsIDQzLCAyMzcsIAotICAgIDE1MiwgMTEwLCAyNTEsIDEzOSwgMjIzLCAyMTgsIDExMCwgMjUxLCAxMzksIDIyNSwgMTQ1LCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMjQsIDIyOSwgMTEwLCAyNTEsIDEzOSwgMjI0LCAyMzAsIDIyOSwgMTkyLCAxMTAsIDI1MSwgMTM5LCAyNDQsIDE1MSwgCi0gICAgMTEwLCAyNTEsIDEzOSwgMjE3LCAxMjEsIDExMCwgMjUxLCAxMzksIDIwOSwgMTU4LCAyMTcsIDEwNCwgMTEwLCAyNTEsIAotICAgIDEzOSwgMjAzLCAzMywgMjQ4LCAxMjMsIDIwMiwgMjMzLCAxMTAsIDI1MSwgMTM5LCAyMjAsIDQzLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMzEsIDY5LCAxMTAsIDI1MSwgMTM5LCAyNDQsIDUzLCAxMTAsIDI1MSwgMTM5LCAyMDIsIDI4LCAxMTAsIDEzMSwgMjI1LCAKLSAgICA3NSwgMjQ2LCA2MSwgMTEwLCAyMTgsIDYzLCAyMTMsIDE1LCAxMTAsIDIxOCwgNjMsIDIzNywgODIsIDIxNCwgMTU2LCAxMTAsIAotICAgIDIxOCwgNjMsIDIzNywgODIsIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgCi0gICAgMjM2LCAyMzIsIDExMCwgMjE4LCA2MywgMjA4LCAxMSwgMTEwLCAyMTgsIDYzLCAyMTQsIDE1NiwgMTEwLCAyMTgsIDYzLCAKLSAgICAyMTksIDU0LCAxMTAsIDIxOCwgNjMsIDIxNywgMTE0LCAxMTAsIDIxOCwgNjMsIDIzNiwgMTI4LCAxMTAsIDIxOCwgNjMsIAotICAgIDIzNiwgMTI5LCAyMzcsIDg0LCAzNSwgMjA2LCA1OSwgMTEwLCAyMTgsIDYzLCAyMTcsIDUxLCAxMTAsIDIxOCwgNjMsIDI0NCwgCi0gICAgMTk4LCAyMTksIDI0NSwgMjI1LCAxMDUsIDExMCwgMjE4LCA2MywgMjI0LCAyMTksIDExMCwgMjE3LCAxNzksIDIyNSwgMTAyLCAKLSAgICAxMTAsIDIxOCwgNjMsIDIxNiwgMjAwLCAxMTAsIDIxNywgMTc5LCAyMTksIDYzLCAxMTAsIDIxOCwgNjMsIDIxMywgMCwgCi0gICAgMjQzLCA4NSwgMTEwLCAyMTgsIDYzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgMjEyLCA4LCAyMTksIDU2LCAKLSAgICAxMTAsIDEzMSwgMjA2LCAyMjEsIDI0MywgODUsIDExMCwgMTMxLCAyMjYsIDI1MSwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgCi0gICAgMjIxLCA0MSwgMjM3LCAxNTEsIDExMCwgMjE4LCA2MywgMjE3LCAxMTUsIDIxNywgMTA5LCAxMTAsIDEsIDI1MSwgMzAsIAotICAgIDExMCwgMSwgMjQ4LCAxMDgsIDExMCwgMSwgMjM4LCA2NywgMTEwLCAxLCAyNDQsIDE3OCwgMTEwLCAxLCAyMzcsIDY3LCAKLSAgICAxMTAsIDEsIDIwNiwgNTksIDExMCwgMSwgMjAyLCA5NSwgMTEwLCAxLCAyMzcsIDIxLCAxMTAsIDEsIDIwOSwgMTMyLCAxMTAsIAotICAgIDEsIDIwMiwgMjM2LCAxMTAsIDEsIDQ2LCAyMzAsIDIyLCAxMTAsIDEsIDIzMCwgMjIsIDExMCwgMSwgMjI4LCAyMCwgMTEwLCAKLSAgICAxLCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjI0LCAyNDcsIDExMCwgMSwgNDYsIDIyMSwgNDAsIDExMCwgMSwgMjIxLCA0MCwgCi0gICAgMTEwLCAxLCAyMTQsIDI0OSwgMTEwLCAxLCAyNTAsIDMsIDExMCwgMSwgNDYsIDIxOSwgMzQsIDExMCwgMSwgMjE5LCAzNCwgCi0gICAgMTEwLCAxLCA0NiwgMjA4LCAxNSwgMTEwLCAxLCAyMDgsIDE1LCAxMTAsIDEsIDIxNywgNzQsIDExMCwgMSwgMjE2LCA5MSwgCi0gICAgMTEwLCAxLCAyMTIsIDI1NSwgMTEwLCAxLCAyMDksIDIwMywgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjA2LCA1OSwgMTEwLCAKLSAgICAzMiwgMjAzLCA5LCAyMDYsIDYwLCAyMDIsIDIzNiwgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjAyLCAyMzYsIDExMCwgMjE3LCAKLSAgICAxNzksIDIzOCwgMTY3LCAxMTAsIDIxNywgMTc5LCAyMzgsIDE2NSwgMTAsIDQyLCA1NCwgMTAsIDIsIDIxNCwgMjQyLCAxMCwgCi0gICAgMjM5LCAxNzAsIDIyNSwgODgsIDEwLCAyLCAyMTUsIDI0LCAxMCwgMiwgMjE0LCAyNDUsIDEwLCA0MiwgMTMxLCA1NSwgMjUwLCAKLSAgICAxNDAsIDI0NSwgMTA2LCAyMTUsIDIwNCwgMjUwLCAxNDAsIDIzOSwgMTQwLCAyMTUsIDIwNCwgMTAsIDIxNiwgMTY1LCAyNTAsIAotICAgIDE0MCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjUwLCAxNDAsIDIxOCwgMjQ3LCAyMDksIDE1MywgMjA5LCAzNywgNTQsIAotICAgIDI1MSwgODYsIDU0LCAxMCwgMjQ1LCAyMzMsIDEwLCAyNDQsIDEzOCwgMjEzLCAxMzAsIDEwLCAyMTgsIDY1LCAyMDYsIDQwLCAKLSAgICA1NCwgMTAsIDIsIDIyNCwgOTUsIDEwLCAyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODYsIDEwLCAyLCAyNTEsIDMzLCAyNTAsIAotICAgIDY0LCAxMCwgMiwgMjE2LCAxOTgsIDI1MSwgMzIsIDEwLCAyLCAyMTYsIDIwNiwgMjUxLCAxMiwgMjUwLCAyMTAsIDEwLCAyLCAKLSAgICAyMDksIDI0MCwgMTAsIDUsIDEzOCwgMjA5LCAyNTEsIDEwLCA1LCAxMzgsIDMyLCAxMzcsIDMsIDIyOCwgMjksIDMsIDIwMywgCi0gICAgNDcsIDEwLCA1LCAxMzgsIDIwMiwgMTA3LCAxMCwgNSwgMjQwLCA3MSwgMTAsIDUsIDI0NCwgMTcyLCAxMCwgNSwgMjI5LCAKLSAgICAyMjksIDEwLCAyMTMsIDE0MywgMTAsIDEsIDgyLCAxMCwgMjA4LCA3MCwgNzAsIDIxNywgMTc5LCA4MiwgMTAsIDIxNywgNDcsIAotICAgIDgyLCAxMCwgMSwgMjI5LCAyMzMsIDIwMywgNDcsIDEwLCAxLCAyMzcsIDEyNywgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIAotICAgIDU1LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAKLSAgICAxMzcsIDMsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyNTEsIDMwLCAxMCwgMSwgCi0gICAgMjQ4LCAxMzgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OCwgMTAsIDEsIDIwOSwgMTY5LCAxMCwgMSwgMjA5LCA4OCwgMTAsIAotICAgIDEsIDIzMCwgMTU4LCAxMCwgMSwgMjM3LCAxNDgsIDEwLCAxLCAyMjksIDE0MCwgMTAsIDEsIDI0NCwgMTg0LCAxMCwgMSwgCi0gICAgMjA5LCAxMDAsIDEwLCAxLCAyMTYsIDEyMiwgMTAsIDEsIDIwMiwgMTA3LCAxMCwgMSwgMjE0LCAxNjEsIDEwLCAxLCAyMTMsIAotICAgIDM5LCAxMCwgMSwgMjE1LCAyOCwgMTAsIDEsIDI0NCwgMjA3LCAxMCwgMSwgMjA5LCAyNTEsIDEwLCAxLCAyMDIsIDExMCwgCi0gICAgMTAsIDEsIDI1MSwgNTksIDEwLCAxLCAyMzgsIDExNCwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAKLSAgICAyMjksIDE5MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIAotICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCi0gICAgMjA5LCAyMDksIDEwLCAxLCAyNDAsIDQ3LCAxMCwgMSwgMjE3LCAxMTksIDEwLCAxLCAyMzAsIDIyLCAxMCwgMSwgMjI4LCAKLSAgICAyOCwgMTAsIDEsIDIyNSwgNSwgMTAsIDEsIDIyMSwgMTc4LCAxMCwgMSwgMjM3LCA0MywgMTAsIDEsIDIwNCwgNzAsIDEwLCAKLSAgICAxLCAxMzcsIDIyNSwgMTI5LCAxMCwgMSwgMjAzLCA0NywgMTAsIDI0MCwgNjksIDEwLCAyNDQsIDE3MCwgMTAsIDIyOSwgCi0gICAgMjI3LCAxMCwgMjQwLCA3MSwgMTAsIDI0NCwgMTcyLCAxMCwgMjI5LCAyMjksIDEwLCAyMTMsIDgwLCAxMCwgMjEwLCAyMjIsIAotICAgIDEwLCAyMjUsIDE2NCwgNTUsIDEwLCAyMzcsIDEyOCwgNTUsIDEwLCAyMzcsIDEyOCwgNTYsIDEwLCAyMTAsIDI0NiwgMjUxLCAKLSAgICAzMCwgMTAsIDIzMCwgMjM5LCAyNDQsIDE3MiwgMTAsIDEzMSwgMjIxLCAxNzksIDIzOCwgODUsIDEwLCAyMDEsIDI0OCwgMTAsIAotICAgIDIyLCAyLCA1LCAyMDYsIDE2NSwgNTUsIDEwLCAyMiwgMiwgMjMwLCAyMzksIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAKLSAgICA3MCwgNTYsIDEwLCAyMTYsIDczLCAyNDQsIDE3MiwgMTAsIDI0MCwgNzIsIDMsIDEyMCwgMjQzLCA4MywgMTAsIDIwNCwgNzIsIAotICAgIDIzNywgMTI4LCA1NiwgMjUwLCAxNDAsIDE3LCAyMDIsIDg0LCAyNTAsIDE0MCwgMTcsIDEwNSwgMjUwLCAxNDAsIDE3LCAKLSAgICAxMDgsIDI1MCwgMTQwLCAxNywgMTQ3LCAyNTAsIDE0MCwgMTcsIDE0OSwgMjUwLCAxNDAsIDE3LCAxNzAsIDI1MCwgMTQwLCAKLSAgICAxNywgMTk1LCAyNTAsIDE0MCwgMTcsIDIxMywgMTExLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjUwLCAxNDAsIDE3LCAyMjIsIAotICAgIDYzLCAxMCwgMjE4LCAyNDYsIDU0LCAxMCwgMjQ0LCA2OCwgMjEzLCAxMzAsIDEwLCAyMDksIDM1LCAyMTMsIDEzMCwgMTAsIAotICAgIDIzOSwgMjMzLCAyMTgsIDYxLCAyMTEsIDk0LCAxMCwgMSwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxLCAyNDMsIDg0LCAKLSAgICAyMTcsIDExOSwgMTAsIDEsIDIxMCwgMTk5LCAyNTEsIDMwLCAxMCwgMSwgMTM3LCAyMDQsIDg3LCAxMCwgMSwgMTM3LCAzLCAKLSAgICAyMDQsIDcyLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzcsIDMsIDIwNCwgNzIsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDEzOCwgCi0gICAgMjM3LCAxMjcsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyNTEsIDMwLCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjA0LCA3MCwgCi0gICAgMTAsIDEsIDEwNiwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjAzLCA0NywgMTAsIDEsIDIwNywgCi0gICAgMjMzLCAxMCwgMSwgMjA3LCAyMzEsIDEwLCAxLCAyNDgsIDE0OCwgMTAsIDEsIDIwOSwgMTcwLCAzLCAyMTUsIDI1MiwgMTAsIAotICAgIDEsIDIwOSwgMTcwLCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyMTksIDE2LCAxMCwgMSwgMjA5LCAxNjcsIAotICAgIDEwLCAxLCAyNDgsIDEzNiwgMTAsIDEsIDE1MSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgCi0gICAgODAsIDU1LCAxMCwgMSwgMjIwLCAyNTQsIDEwLCAxLCAyNDIsIDUsIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIwOSwgMTkxLCAxMCwgMSwgMjA5LCAxODksIDEwLCAxLCAyNDQsIDExNSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMTUsIAotICAgIDI1MiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDE4NSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNSwgCi0gICAgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE5MSwgMTAsIDEsIDI0NCwgMTE3LCAxMCwgMSwgMjQyLCAzMywgMTAsIDEsIDI0NCwgCi0gICAgMTg1LCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAKLSAgICAxLCAyMTUsIDE3NywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMTUsIAotICAgIDI1MiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA3MCwgNTYsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMjA2LCAxNjUsIDU2LCAxMCwgCi0gICAgMSwgMjE2LCAxMjMsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAxMjAsIDE4NywgCi0gICAgNTUsIDEwLCAxLCAyMzAsIDE1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDEsIDIxNCwgCi0gICAgMTYyLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDU2LCAxMCwgCi0gICAgMSwgMjE0LCAxNjIsIDMsIDEyNiwgMTg3LCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIxNSwgMjksIDMsIAotICAgIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjYsIAotICAgIDE4NywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMSwgCi0gICAgMjQwLCA0OCwgMywgNzAsIDIyNCwgNSwgNTYsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMDYsIDQ4LCAKLSAgICAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjE5LCAxNCwgMTAsIDEsIDIxNywgMTIwLCAzLCA3MCwgCi0gICAgNTUsIDEwLCAxLCAyMTcsIDEyMCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI5LCAxODksIDEwLCAxLCAyMTAsIDE2OSwgCi0gICAgMjMwLCAyMiwgMTAsIDEsIDIzMCwgMjMsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU1LCAxMCwgMSwgCi0gICAgMjIyLCAyMDUsIDEwLCAxLCAyMzAsIDIzLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MSwgMTAsIDEsIDIzOCwgCi0gICAgMjUyLCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMiwgMTI2LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyMCwgMTg3LCA1NiwgMTAsIAotICAgIDEsIDIzNywgMjE3LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOCwgMjksIDMsIDUsIDIwNiwgCi0gICAgMTY0LCAxMCwgMSwgMjI4LCAyOSwgMywgNzAsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgCi0gICAgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDcwLCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICAyMzgsIDg1LCAxMCwgMSwgMjE1LCAyMzAsIDEwLCAxLCAyMjEsIDE3OSwgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjEsIDE3OSwgCi0gICAgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMDksIDEwLCAxLCAyMDksIDE5MiwgMywgNzAsIDU1LCAKLSAgICAxMCwgMSwgMjM3LCA0NCwgMywgODksIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNiwgMTAsIDEsIDIzNywgNDQsIDIzOCwgCi0gICAgMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk5LCAyMzgsIDM2LCAxMCwgMSwgMjA0LCA3MSwgCi0gICAgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjksIDc2LCAyMjAsIDczLCAxMCwgMSwgMjIwLCA3MywgMTAsIDEsIDY4LCAxMCwgMSwgCi0gICAgMjAyLCAyMTMsIDEwLCAxLCAyMjksIDc2LCAyMDIsIDIxMywgMTAsIDEsIDIwNCwgNzEsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIwNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCAyMDMsIDQ3LCAxMCwgMSwgODksIDMsIDIwOSwgMjQ4LCAxMCwgMSwgODksIAotICAgIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjA0LCA3MSwgMywgNzAsIDU1LCAxMCwgMSwgNzQsIDEwLCAxLCA4OSwgMywgMTI2LCAKLSAgICAxODcsIDU2LCAxMCwgMSwgODksIDI0OCwgMjIzLCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTAsIDEsIDI1MSwgMTA5LCAxMCwgNSwgMTM4LCAzMiwgMjE1LCAyOSwgMywgMjI4LCAyOSwgCi0gICAgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDUsIDEzOCwgMzIsIDIxNywgMTIwLCAzLCAyMjgsIDI5LCAzLCAxMzcsIDIyNSwgMTI5LCAKLSAgICAxMCwgNSwgMTM4LCA4MywgODEsIDE4LCAxMCwgNSwgMTM4LCAyMjgsIDI5LCAyNTEsIDMwLCAxMCwgNSwgMTM4LCAyMzAsIAotICAgIDE1OCwgMTAsIDUsIDEzOCwgMTI2LCAyNDMsIDgzLCAxMCwgNSwgMTM4LCAyMTQsIDE2MSwgMTAsIDI0MSwgODQsIDc2LCAKLSAgICAyNTAsIDcsIDEwLCAyMTEsIDkwLCA3NiwgMjE1LCAxNDMsIDI0MSwgMTIzLCAyMzYsIDIyNywgMTAsIDUsIDEzOCwgMjE1LCAKLSAgICAxODksIDIwMiwgODQsIDEwLCA1LCAxMzgsIDIwNiwgMjE5LCAyMTYsIDE0MiwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjQzLCAKLSAgICA4NCwgMjM3LCA2NSwgNzYsIDIyOSwgMTQwLCAxMCwgNSwgMTM4LCA4MywgNjQsIDE4LCAxMCwgNSwgMTI0LCAyMTQsIDE2MSwgCi0gICAgMTAsIDUsIDEzOCwgMjI1LCAxNjUsIDEwLCA1LCAyMDQsIDcwLCAxMCwgNSwgMjAzLCA0NywgMTAsIDUsIDEzOCwgMjAzLCAKLSAgICA0NywgMTAsIDUsIDEzOCwgMjIxLCAxNzgsIDEwLCAyMTgsIDk3LCA3NiwgMjE1LCAxNCwgMTAsIDI0MSwgOTQsIDI0NiwgCi0gICAgMjE4LCAxMjQsIDIxMSwgNjEsIDEwLCAyNDEsIDk0LCAyNDYsIDIxOCwgMTM4LCAyMTEsIDYxLCAxMCwgMjE1LCAxODksIAotICAgIDEzOCwgMjExLCA2MiwgMywgMjQwLCA4LCAyNDYsIDIxNywgMTAsIDUsIDEyNCwgMjI1LCA1LCAxMCwgMSwgMjQ0LCAxODUsIAotICAgIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEwNSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMTA4LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxNDcsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0OSwgMjQwLCAKLSAgICAyMDIsIDI1MCwgMTQwLCAxNywgMTcwLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTUsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCi0gICAgMTcsIDIxMywgMTExLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTksIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIyMiwgCi0gICAgNjMsIDEwLCAxLCAyMTMsIDQwLCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDIwOCwgMywgNzAsIDU2LCAxMCwgMSwgMjM4LCAKLSAgICAxMTUsIDMsIDcwLCA1NiwgMTAsIDIsIDIxMiwgMTIzLCAyNTAsIDIzNSwgMTAsIDIsIDIxMiwgMTIzLCAyMTgsIDI3LCAyMjQsIAotICAgIDI0MCwgMTAsIDEsIDIzNywgNDQsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjEwLCA4OSwgMjQxLCA4NCwgNzYsIDIxOSwgCi0gICAgODgsIDIxMCwgODksIDIxMCwgMTk1LCAyMzksIDEwMiwgMjExLCA2MSwgMjEwLCA4OSwgMjEwLCAyNDgsIDIzOSwgMTAyLCAKLSAgICAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MiwgMjEwLCAKLSAgICA4OSwgMjM2LCAxMDYsIDI0NSwgMjQyLCAyMTAsIDg5LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIxMCwgODksIAotICAgIDI0NSwgMjQzLCAyMTIsIDY4LCAyMTYsIDE2LCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgCi0gICAgMjIyLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDI0NSwgMTg2LCAKLSAgICAyMTAsIDg5LCAyMzcsIDg5LCAyMjAsIDkxLCAyMTAsIDg5LCAyMzcsIDg5LCAyMjQsIDIxNywgMjEwLCA4OSwgMjM3LCA4OSwgCi0gICAgMjUwLCA2MSwgMjEwLCA4OSwgMjUxLCAxNDYsIDgyLCAyMTAsIDg5LCAxLCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyMTAsIAotICAgIDE5OSwgMjUxLCAzNSwgMjEwLCA4OSwgMSwgMjQ4LCAxMDUsIDIxMCwgODksIDEsIDIzOCwgMjQxLCAyMTAsIDg5LCAxLCAKLSAgICAyMzgsIDI0MiwgMjM4LCAyMTksIDIxMCwgODksIDEsIDI0NCwgMTgxLCAyMTAsIDg5LCAxLCAyNDMsIDg0LCAyNDQsIDE4MiwgCi0gICAgMjE1LCAyNDYsIDIxMCwgODksIDEsIDIzNywgNjcsIDIxMCwgODksIDEsIDIwNCwgNzAsIDIxMCwgODksIDEsIDIwMiwgMTA3LCAKLSAgICAyMTAsIDg5LCAxLCAyMzcsIDE5LCAyMTAsIDg5LCAxLCAyMDksIDEyOCwgMjEwLCA4OSwgMSwgMjA5LCAxMjksIDIzOCwgCi0gICAgMjE5LCAyMTAsIDg5LCAxLCAyMDIsIDIwMCwgMjEwLCA4OSwgMSwgMjAyLCAyMDEsIDIzNywgNjcsIDIxMCwgODksIDEsIAotICAgIDIyOSwgMjUwLCAyMTAsIDg5LCAxLCAyMjgsIDI3LCAyMTAsIDg5LCAxLCAyMjQsIDExMiwgMjEwLCA4OSwgMSwgMjIxLCA0MCwgCi0gICAgMjEwLCA4OSwgMSwgMjEzLCAxMzYsIDIxMCwgODksIDEsIDQ2LCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNzQsIDIxMCwgODksIAotICAgIDEsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNiwgNzMsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNSwgMjYsIDIxMCwgODksIAotICAgIDEsIDIxNywgMTEzLCAyMTAsIDg5LCAxLCAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjEyLCAyNTUsIDIxMCwgODksIDEsIDIwOSwgCi0gICAgMjAxLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjQ4LCA5MiwgMjEwLCA4OSwgMSwgMjE4LCAyMzEsIDIzOCwgMTEyLCAyMTAsIAotICAgIDg5LCAxLCAyMTgsIDIzMSwgMjQzLCAyNTIsIDIxMCwgODksIDIxNywgMTkyLCA1NSwgMjEwLCA4OSwgMjE3LCAxOTIsIDU2LCAKLSAgICAyMTAsIDg5LCAyMTcsIDE5MiwgMjQyLCA4MiwgMjEwLCA4OSwgMjAyLCAxMSwgNTUsIDIxMCwgODksIDIwMiwgMTEsIDU2LCAKLSAgICAyMTAsIDg5LCAyMDIsIDExLCAyNDIsIDgyLCAyMTAsIDg5LCAyMTYsIDE2MSwgNTUsIDIxMCwgODksIDIxNiwgMTYxLCA1NiwgCi0gICAgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjM2LCAxMDUsIDIxMCwgODksIDI0MiwgODMsIDIwMiwgMTgsIDI1MCwgMjExLCAKLSAgICAyMTAsIDg5LCAyMzcsIDcwLCA1NSwgMjEwLCA4OSwgMjM3LCA3MCwgNTYsIDIxMCwgODksIDIzNywgNjksIDI0MiwgODIsIAotICAgIDIxMCwgODksIDI0MSwgMTEsIDU1LCAyMTAsIDg5LCAyNDEsIDExLCA1NiwgMjEwLCA4OSwgMjE1LCAxMDksIDIxMCwgODksIAotICAgIDI0MCwgNDEsIDI0MywgODUsIDIxMCwgODksIDIxNywgMjUsIDIxMCwgODksIDIxNSwgMTM3LCAyMTAsIDg5LCAxMjAsIDgwLCAKLSAgICAxODcsIDU1LCAyMTAsIDg5LCAxMjAsIDgwLCAxODcsIDU2LCAyMTAsIDg5LCAxMjYsIDE4NywgNTUsIDIxMCwgODksIDEyNiwgCi0gICAgMTg3LCA1NiwgMjEwLCA4OSwgMjIwLCA4OSwgMjI3LCAxMTUsIDU1LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTYsIAotICAgIDIxMCwgODksIDIyMywgMTk0LCAyMTAsIDg5LCAyNDgsIDIyMiwgMjEwLCA4OSwgMSwgMjEyLCA0LCAyMDIsIDc4LCAyMTAsIAotICAgIDg5LCAxLCAyMTIsIDQsIDIyOSwgMTMzLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDI0MCwgNjAsIDEwLCAxLCAyNDgsIDEzOSwgMywgCi0gICAgMTI2LCAxODcsIDIzNiwgNTUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCAyNDgsIDEyNiwgMjUsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjAsIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgMjMwLCAyMzksIDUsIDIwNiwgCi0gICAgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDE1MSwgMywgMTIwLCAxODcsIDU1LCAKLSAgICAxMCwgMSwgMTUxLCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCAxMjAsIDE4NywgCi0gICAgMjA1LCAyNDQsIDI0OCwgMTI2LCAyNSwgNSwgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjMwLCAyMzksIDUsIAotICAgIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA5NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyMzksIDE0NywgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCAyMTgsIAotICAgIDU5LCAxODMsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDI0MCwgNDgsIAotICAgIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgCi0gICAgMjI5LCAxOTAsIDMsIDcwLCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE5MCwgCi0gICAgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCA4MywgMywgNzAsIDU1LCAxMCwgMSwgODMsIDMsIDcwLCAKLSAgICA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCAxMjAsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA5LCAyNTEsIAotICAgIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCAxNDIsIDEwLCAxLCAyMTYsIDEyMywgCi0gICAgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMTQsIAotICAgIDE2MiwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NiwgCi0gICAgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE0LCAxNjIsIDMsIAotICAgIDUsIDEwLCAxLCAyMDksIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAxMCwgMSwgMjA5LCAKLSAgICAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgNTUsIDEwLCAxLCAxMzcsIAotICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAxMzcsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCi0gICAgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIAotICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIAotICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIAotICAgIDU1LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgODksIAotICAgIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMTUxLCAzLCAyNDAsIDIwMiwgCi0gICAgMjUwLCAxNDAsIDE3LCAyMzksIDE0NywgNTYsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgCi0gICAgMjM5LCAxNDcsIDU1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIzMCwgMjMsIDMsIAotICAgIDEyMCwgMTg3LCA1NSwgMjA5LCAxMDUsIDEsIDIzNywgMTU3LCAyMDksIDEwNSwgMSwgMjEzLCA0OSwgMjA5LCAxMDUsIDEsIAotICAgIDIyMSwgMTc3LCAyMDksIDEwNSwgMSwgMjE2LCAyMTYsIDIwOSwgMTA1LCAxLCAyNDksIDMwLCAyMDksIDEwNSwgMSwgMjI3LCAKLSAgICAxNTgsIDIwOSwgMTA1LCAxLCAyMzAsIDM3LCAyMDksIDEwNSwgMSwgMjUxLCAxOSwgMjA5LCAxMDUsIDEsIDIwNiwgODQsIAotICAgIDIwOSwgMTA1LCAxLCAyMjUsIDQsIDIwOSwgMTA1LCAxLCAyNDAsIDEwNiwgMjA5LCAxMDUsIDEsIDI0MywgMjU1LCAyMDksIAotICAgIDEwNSwgMSwgMjA5LCAxMDcsIDIwOSwgMTA1LCAxLCAyMjgsIDEwOSwgMjA5LCAxMDUsIDEsIDIzOSwgNCwgMjA5LCAxMDUsIAotICAgIDEsIDIzOCwgNDIsIDIwOSwgMTA1LCAxLCAyMTQsIDE2MCwgMjA5LCAxMDUsIDEsIDI0NCwgMTM2LCAyMDksIDEwNSwgMSwgCi0gICAgMjAyLCA5OCwgMjA5LCAxMDUsIDEsIDIwOSwgMjAyLCAyMDksIDEwNSwgMSwgMjAzLCAxMTAsIDIwOSwgMTA1LCAxLCAyMTksIAotICAgIDQ3LCAyMDksIDEwNSwgMSwgMjMwLCAxNjYsIDIwOSwgMTA1LCAxLCAyNDYsIDE3MywgMjA5LCAxMDUsIDEsIDIwNywgMjQwLCAKLSAgICAyMDksIDEwNSwgMSwgMjM3LCAxMSwgMjA5LCAxMDUsIDEsIDIyOSwgMTQzLCAyMDksIDEwNSwgMSwgMjA5LCAxMDYsIDIwOSwgCi0gICAgMTA1LCAxLCAyMDIsIDExNCwgMjA5LCAxMDUsIDEsIDIxMywgMzgsIDIwOSwgMTA1LCAxLCAyMTUsIDMyLCAyMDksIDEwNSwgCi0gICAgMSwgMjQ0LCAyMTAsIDIwOSwgMTA1LCAxLCAxMzUsIDIwOSwgMTA1LCAxLCAyMDIsIDE3LCAyMDksIDEwNSwgMSwgMjUxLCAKLSAgICA1NiwgMjA5LCAxMDUsIDEsIDIzOCwgMTEzLCAyMDksIDEwNSwgMSwgMjE3LCAxMjMsIDIwOSwgMTA1LCAxLCAyMDQsIDEwOSwgCi0gICAgMjA5LCAxMDUsIDI1MSwgMTQ4LCAyMDksIDEwNSwgMjUxLCAyNDYsIDIwOSwgMTA1LCAyMzUsIDE2NSwgMjA5LCAxMDUsIAotICAgIDI0MSwgMTYwLCAyMDksIDEwNSwgMjA3LCAzMiwgMjA5LCAxMDUsIDIyMCwgMTcsIDIwOSwgMTA1LCAyNDEsIDE3MCwgMjA5LCAKLSAgICAxMDUsIDI0MCwgMTkzLCAyMDksIDEwNSwgMjIwLCA4OCwgMjA5LCAxMDUsIDIyMCwgOTYsIDIwOSwgMTA1LCAyMTAsIDIyMiwgCi0gICAgMjA5LCAxMDUsIDEsIDIyMywgMTA2LCAyMjEsIDI1NSwgMTcsIDIwMiwgODQsIDIyMSwgMjU1LCAxNywgMTA1LCAyMjEsIAotICAgIDI1NSwgMTcsIDEwOCwgMjIxLCAyNTUsIDE3LCAxNDcsIDIyMSwgMjU1LCAxNywgMTQ5LCAyMjEsIDI1NSwgMTcsIDE3MCwgCi0gICAgMjIxLCAyNTUsIDE3LCAxOTUsIDIyMSwgMjU1LCAxNywgMjEzLCAxMTEsIDIyMSwgMjU1LCAxNywgMTk5LCAyMjEsIDI1NSwgCi0gICAgMTcsIDIyMiwgNjMsIDIyMSwgMjU1LCAxLCA2MywgMjIxLCAyNTUsIDEsIDI0MSwgMTYxLCAyMjEsIDI1NSwgMSwgNzUsIAotICAgIDIyMSwgMjU1LCAxLCA3NCwgMjIxLCAyNTUsIDEsIDY4LCAyMjEsIDI1NSwgMSwgMjIwLCAxOCwgMjIxLCAyNTUsIDEsIDc4LCAKLSAgICAyMjEsIDI1NSwgMSwgMjQ0LCAxOTksIDIyMSwgMjU1LCAxLCAyMjMsIDE2MywgMjIxLCAyNTUsIDEsIDI0OSwgMzIsIDIyMSwgCi0gICAgMjU1LCAxLCAxODUsIDIyMSwgMjU1LCAxLCAyMTAsIDIyLCAyMjEsIDI1NSwgMSwgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAKLSAgICAyNDYsIDE5OSwgMjIxLCAyNTUsIDEsIDI0NCwgMjEyLCAyMjEsIDI1NSwgMSwgMjE2LCAyMjAsIDIyMSwgMjU1LCAxLCAyMTUsIAotICAgIDE4NSwgMjIxLCAyNTUsIDEsIDIxNSwgMzYsIDIyMSwgMjU1LCAxLCAyMzgsIDIwNywgMjIxLCAyNTUsIDEsIDI0MCwgMTA4LCAKLSAgICAyMjEsIDI1NSwgMSwgMTczLCAyMjEsIDI1NSwgMSwgMjI4LCAxMTMsIDIyMSwgMjU1LCAxLCAyMjMsIDExMSwgMjAzLCAyNTIsIAotICAgIDIyMSwgMjU1LCAxLCAxOTIsIDIyMSwgMjU1LCAxLCAyMjEsIDExLCAyMjEsIDI1NSwgMSwgMjAxLCAyMDEsIDIyMSwgMjU1LCAKLSAgICAxLCAxNTIsIDIyMSwgMjU1LCAxLCAyMDQsIDExMSwgMjIxLCAyNTUsIDEsIDE5OCwgMjIxLCAyNTUsIDEsIDIyMSwgMTIsIAotICAgIDIwMywgMjUyLCAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyNDYsIDE5OSwgCi0gICAgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDIxNiwgMjIwLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMzgsIDIwOCwgMTYxLCAKLSAgICAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAyMTUsIDI0NSwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyNDQsIDE5LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEzOCwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMjE1LCAyNDUsIAotICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIyMywgNzEsIDgyLCAyMjEsIDI1NSwgMzksIDUyLCA3MCwgNTUsIDIyMSwgMjU1LCAKLSAgICAxMzgsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxMjQsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxNiwgMjIwLCAxOSwgCi0gICAgMjQ0LCAzMywgMjIxLCAyNTUsIDE2LCAyMzgsIDIwNiwgMjIxLCAyNTUsIDI0NSwgMjMzLCAyMjEsIDI1NSwgMjQwLCAyMTIsIAotICAgIDgyLCAyMjEsIDI1NSwgMjI4LCA4NCwgMjE0LCAyNTIsIDEsIDI1MSwgMzcsIDIxNCwgMjUyLCAxLCAyNDgsIDUxLCAyMTQsIAotICAgIDI1MiwgMSwgMjM4LCAyNDAsIDIxNCwgMjUyLCAxLCAyNDQsIDE4MywgMjE0LCAyNTIsIDEsIDIzMCwgMTkyLCAyMTQsIDI1MiwgCi0gICAgMSwgMjQ5LCAzMCwgMjE0LCAyNTIsIDEsIDIwMiwgODcsIDIxNCwgMjUyLCAxLCAyMzAsIDIwMSwgMjE0LCAyNTIsIDEsIAotICAgIDIwOCwgMjAwLCAyMTQsIDI1MiwgMSwgMjAyLCAxODIsIDIxNCwgMjUyLCAxLCAyMzAsIDM4LCAyMTQsIDI1MiwgMSwgMjI4LCAKLSAgICAxMDYsIDIxNCwgMjUyLCAxLCAyMjQsIDExMiwgMjE0LCAyNTIsIDEsIDIyMSwgNDAsIDIxNCwgMjUyLCAxLCAyMTIsIDEyMSwgCi0gICAgMjE0LCAyNTIsIDEsIDIzMSwgNDksIDIxNCwgMjUyLCAxLCAyNDAsIDI2LCAyMTQsIDI1MiwgMSwgMjA4LCAxOCwgMjE0LCAKLSAgICAyNTIsIDEsIDIxNywgNDQsIDIxNCwgMjUyLCAxLCAyMTUsIDI0NiwgMjE0LCAyNTIsIDEsIDIxMywgNjYsIDIxNCwgMjUyLCAKLSAgICAxLCAyMTAsIDE3LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ5LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ4LCAyMTQsIDI1MiwgCi0gICAgMTMxLCAyMjAsIDg0LCAyMTQsIDI1MiwgMTMxLCAyNDQsIDE5NywgMjE0LCAyNTIsIDY1LCAxLCAyNDEsIDQyLCAyMDIsIAotICAgIDE4MiwgMjE0LCAyNTIsIDEzMSwgMjQxLCA0MiwgMjAyLCAxODIsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NCwgMjE0LCAKLSAgICAyNTIsIDIyLCAyLCA3NCwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIAotICAgIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgNjMsIDIxNCwgCi0gICAgMjUyLCAyMiwgMiwgMTYzLCA2MywgMjE0LCAyNTIsIDIyLCAyLCA2MywgMjE0LCAyNTIsIDY1LCAxLCAyMTIsIDIyOCwgNjMsIAotICAgIDIxNCwgMjUyLCAyMiwgMiwgMjEyLCAyMjgsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNjgsIDIxNCwgMjUyLCAyMiwgMiwgCi0gICAgNjgsIDIxNCwgMjUyLCA2NSwgMSwgNzUsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCA3NSwgCi0gICAgMjE0LCAyNTIsIDIyLCAyLCA3OCwgMjE0LCAyNTIsIDIyLCAyLCAyMTAsIDIyMiwgMjE0LCAyNTIsIDEzMSwgMjIyLCAyMjMsIAotICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjIyLCAyMjMsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjUxLCA4MywgMjE0LCAyNTIsIDIxNywgCi0gICAgMTc5LCAyNTAsIDIyMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNDgsIDIwMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTAsIDQ0LCAKLSAgICAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgMjQzLCAyMTQsIDI1MiwgMjUxLCAxNDYsIDgyLCAyMTQsIDI1MiwgMjE3LCAxNzksIAotICAgIDIyNCwgMjUwLCAyMTcsIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMjUsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjE3LCAKLSAgICA4MCwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDIsIDExMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDcsIDE3MCwgMjE0LCAyNTIsIAotICAgIDIxNywgMTc5LCAyNTAsIDExMSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTIsIDgsIDIyNSwgNzcsIDIxNCwgMjUyLCAyMTcsIAotICAgIDE3OSwgMjUwLCAyMDYsIDIyNSwgMTE4LCAxLCAyMzcsIDEzNCwgMjI1LCAxMTgsIDEsIDI1MSwgMjMyLCAyMjUsIDExOCwgMSwgCi0gICAgMjUxLCA4MSwgMjI1LCAxMTgsIDEsIDI1MSwgMTIyLCAyMjUsIDExOCwgMSwgMjUxLCA3MywgMjI1LCAxMTgsIDEsIDIwNiwgCi0gICAgMTg0LCAyMjUsIDExOCwgMSwgMjUwLCAxLCAyMjUsIDExOCwgMSwgMjMwLCAyMDEsIDIyNSwgMTE4LCAxLCAyNTAsIDQxLCAKLSAgICAyMjUsIDExOCwgMSwgMjUxLCA0MiwgMjI1LCAxMTgsIDEsIDI1MSwgNDcsIDIyNSwgMTE4LCAxLCAyNTEsIDM5LCAyMjUsIAotICAgIDExOCwgMSwgMjUwLCAyNDcsIDIyNSwgMTE4LCAxLCAyNTAsIDIzMSwgMjI1LCAxMTgsIDEsIDI1MCwgODEsIDIyNSwgMTE4LCAKLSAgICAxLCAyMzEsIDQ5LCAyMjUsIDExOCwgMSwgMjUwLCAxNzUsIDIyNSwgMTE4LCAxLCAyNTAsIDUxLCAyMjUsIDExOCwgMSwgCi0gICAgMjUwLCAxNDgsIDIyNSwgMTE4LCAxLCAyNTAsIDE0NCwgMjI1LCAxMTgsIDEsIDI1MCwgNzUsIDIyNSwgMTE4LCAxLCAyNTAsIAotICAgIDQ5LCAyMjUsIDExOCwgMSwgMjQyLCAxOCwgMjI1LCAxMTgsIDEsIDIzMCwgMzAsIDIyNSwgMTE4LCAxLCAyNTEsIDU5LCAKLSAgICAyMjUsIDExOCwgMjUxLCA4NywgODIsIDIyNSwgMTE4LCAyMDUsIDE4NywgODIsIDIyNSwgMTE4LCAyMzgsIDE3OSwgODIsIAotICAgIDIyNSwgMTE4LCAyMTcsIDE3OCwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgCi0gICAgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTg0LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyMDksIDI1MiwgMywgMTIwLCAKLSAgICAxODcsIDU1LCAxMCwgMSwgMjQwLCA0OCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE3LCAKLSAgICAxMjAsIDMsIDcwLCA1NiwgMTAsIDEsIDIyOCwgMjksIDMsIDUyLCAxNDIsIDEwLCAxLCA4MywgMywgMTI2LCAxODcsIDU1LCAKLSAgICAxMCwgMSwgODksIDMsIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDg5LCAzLCAxMjAsIAotICAgIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjI3LCAxNCwgMTAsIDEsIDIwNCwgNzEsIAotICAgIDMsIDcwLCAyMDQsIDQsIDEwLCAxLCAyMTUsIDIxNSwgMjAzLCA0NywgMTAsIDEsIDEyNCwgMjUxLCAzMCwgMTAsIDEsIDI0NCwgCi0gICAgMTg1LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTUsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MiwgCi0gICAgMywgMjMwLCAyMzksIDk1LCAxMCwgMSwgMjExLCA1MywgMjA0LCA3MCwgMTAsIDEsIDIwMiwgMTA4LCAzLCAyMzAsIDIzOSwgCi0gICAgMjA2LCAxNjUsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU2LCAKLSAgICAxMCwgMjA3LCAxNzQsIDI0NCwgMTczLCA1NiwgMTAsIDI0NSwgOTMsIDI0MCwgNzEsIDEwLCAyNDUsIDkzLCAyNDQsIDE3MiwgCi0gICAgMTAsIDI0NSwgOTMsIDIyOSwgMjI5LCAxMCwgMjQ1LCA5MywgMjQwLCA2OSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcwLCAxMCwgCi0gICAgMjQ1LCA5MywgMjI5LCAyMjcsIDEwLCAxNDMsIDExOCwgNzAsIDU1LCAxMCwgMTQzLCAxMjAsIDE4NywgNTUsIDEwLCAxNDMsIAotICAgIDIyNywgMTUsIDU1LCAxMCwgMTQzLCAxMTgsIDcwLCA1NiwgMTAsIDE0MywgMTIwLCAxODcsIDU2LCAxMCwgMTQzLCAyMjcsIAotICAgIDE1LCA1NiwgMTAsIDE3MSwgMjQwLCA2OSwgMTAsIDE3MSwgMjQ0LCAxNzAsIDEwLCAxNzEsIDIyOSwgMjI3LCAxMCwgNSwgCi0gICAgMTM4LCAyMDQsIDcwLCAxMCwgMjQwLCA3MiwgMywgMjE1LCAyNTIsIDEwLCAyNDAsIDcyLCAzLCA3MCwgNTUsIDEwLCAyMjksIAotICAgIDIzMCwgMywgNzAsIDU2LCAxMCwgNDksIDI1MCwgOTUsIDU1LCAxMCwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNDksIDI1MCwgCi0gICAgOTUsIDU2LCAxMCwgNTAsIDI1MCwgOTUsIDU2LCAxMCwgNTIsIDUwLCAyNTAsIDk1LCA1NSwgMTAsIDUyLCA1MCwgMjUwLCAKLSAgICA5NSwgODcsIDMsIDI0MywgODUsIDEwLCA1MCwgMjUwLCA5NSwgODcsIDMsIDI0MywgODUsIDEwLCAyNDQsIDE3MywgMywgCi0gICAgMjQzLCA4NSwgMTAsIDEzMSwgMjEyLCAxNTQsIDIyMSwgMTc5LCAyMzgsIDg1LCA5MiwgMiwgMjMwLCAyMzksIDI0NywgNTIsIAotICAgIDkyLCAyLCAyNDcsIDUyLCA5MiwgMiwgMjUwLCAxODAsIDkyLCAyLCAyMDUsIDE5OSwgOTIsIDEsIDIxMiwgMjI4LCA2MywgCi0gICAgOTIsIDEsIDYzLCA5MiwgMSwgMjUyLCAyNSwgOTIsIDEsIDc1LCA5MiwgMSwgMjMxLCA4MywgOTIsIDEsIDY4LCA5MiwgMSwgCi0gICAgMjA2LCAxNzgsIDkyLCAxLCAxMjUsIDE0NiwgOTIsIDEsIDEyNSwgMTU5LCA5MiwgMSwgMjQ3LCA1NSwgNzQsIDkyLCAxLCAKLSAgICAyMTIsIDIyOCwgNzQsIDkyLCAxLCA3NCwgOTIsIDEsIDI1MSwgNjQsIDkyLCAxLCAyNDcsIDU1LCA3OCwgOTIsIDEsIDIxMiwgCi0gICAgMjI4LCA3OCwgOTIsIDEsIDc4LCA5MiwgMSwgMjUwLCAzNCwgOTIsIDEsIDE3MywgOTIsIDEsIDIyOSwgMTQ0LCA5MiwgMSwgCi0gICAgMjM5LCA4LCA5MiwgMSwgMjM4LCAxMTksIDkyLCAxLCAyMjIsIDIwMywgOTIsIDEsIDI0NywgOTIsIDkyLCAxLCAyNDYsIAotICAgIDE5OSwgOTIsIDEsIDIzMCwgMTgxLCA5MiwgMSwgMjMwLCAxNDksIDkyLCAxLCAyMjEsIDExLCA5MiwgMSwgMjA3LCAyNDEsIAotICAgIDkyLCAxLCAyMDcsIDIyOSwgOTIsIDEsIDI0NCwgMTIwLCA5MiwgMSwgMjQ0LCAxMDQsIDkyLCAxLCAyMjEsIDIyNywgOTIsIAotICAgIDEsIDIxMCwgMjIsIDkyLCAxLCAyMDksIDEwOCwgOTIsIDEsIDI0NCwgMjEyLCA5MiwgMSwgMjQ0LCAxLCA5MiwgMSwgMjAxLCAKLSAgICAyMDEsIDkyLCAxLCAyMjEsIDIwOSwgOTIsIDEsIDE4NSwgOTIsIDEsIDIxOCwgMjA4LCA5MiwgMSwgMjQ5LCAzMiwgOTIsIDEsIAotICAgIDI0OCwgOTgsIDkyLCAxLCAxOTIsIDkyLCAxLCAxOTgsIDkyLCAxLCAyMTYsIDIyMCwgOTIsIDEsIDIxNSwgMTg1LCA5MiwgMSwgCi0gICAgMjI4LCAxMTMsIDkyLCAxLCAyMjcsIDc3LCA5MiwgMSwgMjI3LCA2OCwgOTIsIDEsIDIwNiwgODYsIDkyLCAxLCAyMTMsIDkwLCAKLSAgICA5MiwgMSwgMjExLCAxNjQsIDkyLCAxLCAyMTUsIDM2LCA5MiwgMSwgMTUyLCA5MiwgMjIsIDIsIDIyMCwgNzMsIDkyLCAyMiwgCi0gICAgMiwgMjIwLCAxNiwgOTIsIDIsIDIyMSwgNTEsIDkyLCAyLCAyNTAsIDE3LCA5MiwgMjIsIDIsIDI1MiwgMjUsIDkyLCAyMiwgCi0gICAgMiwgNzUsIDkyLCAyMiwgMiwgMjMxLCA4MywgOTIsIDIyLCAyLCA2OCwgOTIsIDIyLCAyLCAyMDYsIDE3OCwgOTIsIDIyLCAyLCAKLSAgICAxMjUsIDE0NiwgOTIsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc0LCA5MiwgMjIsIDIsIAotICAgIDIxMiwgMjI4LCA3NCwgOTIsIDIyLCAyLCA3NCwgOTIsIDIyLCAyLCAyNTEsIDY0LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc4LCAKLSAgICA5MiwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgOTIsIDIyLCAyLCA3OCwgOTIsIDIyLCAyLCAyNTAsIDM0LCA5MiwgMiwgMjA1LCAKLSAgICAyMDQsIDkyLCAyMiwgMiwgMjE3LCAyMjksIDc0LCA5MiwgMjIsIDIsIDI1MCwgMTMsIDkyLCAyMjAsIDM5LCA5MiwgMjExLCAKLSAgICA0MiwgMiwgMjA3LCAyNiwgOTIsIDIxMSwgNDIsIDIsIDI1MCwgMTgyLCA5MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA5MiwgCi0gICAgMjUxLCAxMjYsIDI1MSwgMTM4LCA5MiwgMjIsIDIsIDI0NywgNTUsIDE2MywgNzQsIDkyLCAyMiwgMiwgMjA3LCAyNCwgOTIsIAotICAgIDIyLCAyLCAyMDYsIDE3NywgOTIsIDEsIDIxNywgMTI2LCA5MiwgMSwgMjI5LCAxMjUsIDkyLCAxLCAyMzgsIDk0LCA5MiwgMSwgCi0gICAgMjAyLCAxMTYsIDkyLCAxLCAyNDQsIDEwOSwgOTIsIDEsIDIxNiwgNjEsIDkyLCAxLCAyNDAsIDEwOCwgOTIsIDEsIDIwMiwgCi0gICAgMTY4LCA5MiwgMSwgMTI1LCAyMTUsIDE4NiwgOTIsIDEsIDEyNSwgMjI3LCA3OCwgOTIsIDIyLCAyLCAxMjUsIDE1OSwgOTIsIAotICAgIDIyLCAyLCAxMjUsIDIyNywgNzgsIDkyLCAyNDQsIDE2NiwgOTIsIDUyLCAyNDQsIDE2NiwgOTIsIDE3LCAyMDIsIDg0LCA5MiwgCi0gICAgMTcsIDEwNSwgOTIsIDE3LCAxMDgsIDkyLCAxNywgMTQ3LCA5MiwgMTcsIDE0OSwgOTIsIDE3LCAxNzAsIDkyLCAxNywgMTk1LCAKLSAgICA5MiwgMTcsIDIxMywgMTExLCA5MiwgMTcsIDE5OSwgOTIsIDE3LCAyMjIsIDYzLCA5MiwgMjUxLCAxNDYsIDU0LCA5MiwgMiwgCi0gICAgMTM4LCAyMTEsIDIyNywgMjQzLCA4NSwgOTIsIDEsIDI0NywgNTUsIDYzLCA5MiwgMSwgMjIwLCA3MywgOTIsIDEsIDIyMCwgCi0gICAgMTYsIDkyLCAxLCAyNTAsIDEzLCA5MiwgMSwgMjA3LCAyNCwgOTIsIDEsIDIwNiwgMTc3LCA5MiwgMSwgMjI1LCA4MiwgMjQ0LCAKLSAgICAxMjAsIDkyLCAxLCAyMDIsIDgwLCA5MiwgMSwgNzksIDE5OCwgOTIsIDEsIDIzOCwgMTU1LCA5MiwgMSwgMjMwLCAxMjksIAotICAgIDkyLCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA5MiwgMSwgMjQ0LCAxMTAsIDkyLCAxLCAyNDgsIDE5OCwgMTc5LCAyNTAsIDIwOSwgCi0gICAgMTc5LCAyLCAyNDcsIDUyLCAxNzksIDIsIDI1MCwgMTgwLCAxNzksIDIsIDIwNSwgMTk5LCAxNzksIDEsIDYzLCAxNzksIDEsIAotICAgIDI1MiwgMjUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjMxLCA4MywgMTc5LCAxLCA2OCwgMTc5LCAxLCAyMDYsIDE3OCwgMTc5LCAKLSAgICAxLCAxMjUsIDE0NiwgMTc5LCAxLCAxMjUsIDE1OSwgMTc5LCAxLCA3NCwgMTc5LCAxLCAyNTEsIDY0LCAxNzksIDEsIDc4LCAKLSAgICAxNzksIDEsIDI1MCwgMzQsIDE3OSwgMSwgMTczLCAxNzksIDEsIDIyOSwgMTQ0LCAxNzksIDEsIDIzOSwgOCwgMTc5LCAxLCAKLSAgICAyMzgsIDExOSwgMTc5LCAxLCAyMjIsIDIwMywgMTc5LCAxLCAyNDcsIDkyLCAxNzksIDEsIDI0NiwgMTk5LCAxNzksIDEsIAotICAgIDIzMCwgMTgxLCAxNzksIDEsIDIzMCwgMTQ5LCAxNzksIDEsIDIyMSwgMTEsIDE3OSwgMSwgMjA3LCAyNDEsIDE3OSwgMSwgCi0gICAgMjA3LCAyMjksIDE3OSwgMSwgMjQ0LCAxMjAsIDE3OSwgMSwgMjQ0LCAxMDQsIDE3OSwgMSwgMjIxLCAyMjcsIDE3OSwgMSwgCi0gICAgMjEwLCAyMiwgMTc5LCAxLCAyMDksIDEwOCwgMTc5LCAxLCAyNDQsIDIxMiwgMTc5LCAxLCAyNDQsIDEsIDE3OSwgMSwgMjAxLCAKLSAgICAyMDEsIDE3OSwgMSwgMTg1LCAxNzksIDEsIDIxOCwgMjA4LCAxNzksIDEsIDI0OSwgMzIsIDE3OSwgMSwgMjQ4LCA5OCwgCi0gICAgMTc5LCAxLCAxOTIsIDE3OSwgMSwgMTk4LCAxNzksIDEsIDIxNiwgMjIwLCAxNzksIDEsIDIyOCwgMTEzLCAxNzksIDEsIAotICAgIDIxMywgOTAsIDE3OSwgMSwgMjExLCAxNjQsIDE3OSwgMSwgMjE1LCAzNiwgMTc5LCAxLCAxNTIsIDE3OSwgMiwgMjIxLCA1MSwgCi0gICAgMTc5LCAyLCAyNTAsIDE3LCAxNzksIDIyLCAyLCAyNTIsIDI1LCAxNzksIDIyLCAyLCA3NSwgMTc5LCAyMiwgMiwgMjMxLCAKLSAgICA4MywgMTc5LCAyMiwgMiwgNjgsIDE3OSwgMjIsIDIsIDIwNiwgMTc4LCAxNzksIDIyLCAyLCAxMjUsIDE0NiwgMTc5LCAyMiwgCi0gICAgMiwgMTI1LCAyMTUsIDE4NiwgMTc5LCAyMiwgMiwgNzQsIDE3OSwgMjIsIDIsIDI1MSwgNjQsIDE3OSwgMjIsIDIsIDc4LCAKLSAgICAxNzksIDIyLCAyLCAyNTAsIDM0LCAxNzksIDIsIDIwNSwgMjA0LCAxNzksIDEsIDIyOSwgMTM1LCAyMTAsIDIyLCAxNzksIAotICAgIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTc5LCAxLCAyMTUsIDE4NSwgMTc5LCAxLCAyMTYsIDYxLCAxNzksIDEsIDIwMiwgCi0gICAgMTY4LCAxNzksIDEsIDEyNSwgMjE1LCAxODYsIDE3OSwgMSwgMTI1LCAyMjcsIDc4LCAxNzksIDIyLCAyLCAxMjUsIDE1OSwgCi0gICAgMTc5LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNzksIDE3LCAyMDIsIDg0LCAxNzksIDE3LCAxMDUsIDE3OSwgMTcsIDEwOCwgCi0gICAgMTc5LCAxNywgMTQ3LCAxNzksIDE3LCAxNDksIDE3OSwgMTcsIDE3MCwgMTc5LCAxNywgMTk1LCAxNzksIDE3LCAyMTMsIAotICAgIDExMSwgMTc5LCAxNywgMTk5LCAxNzksIDE3LCAyMjIsIDYzLCAxNzksIDEsIDIxNiwgMjIxLCAzLCAxMDEsIDI0MywgMjI3LCAKLSAgICAxNzksIDEsIDIxNiwgMjIxLCAzLCAyMjYsIDI1MSwgMjQzLCAyMjcsIDE3OSwgMjE1LCAxMjAsIDgyLCAxNzksIDIxNSwgCi0gICAgMTIwLCA1NCwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDUsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTA4LCAxNzksIAotICAgIDI0NSwgOTIsIDIyMSwgNDMsIDE0NywgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxNDksIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgCi0gICAgMTE4LCAyMjcsIDE4MCwgMjA5LCA5OCwgMjA5LCA5MywgMjQ0LCAzMSwgMTc5LCAyNDUsIDkyLCAyNDQsIDMyLCAyMTIsIDgyLCAKLSAgICAxNzksIDIzMCwgMjAyLCAxNzksIDIzOCwgMjMxLCA4MiwgMjM3LCAxOTgsIDIsIDI1MSwgMTIxLCAyNDgsIDY2LCAyMzcsIAotICAgIDE5OCwgMiwgMjQ4LCA2NiwgMjM3LCAxOTgsIDIsIDIwNSwgMTk5LCAyMzcsIDE5OCwgMSwgNjMsIDIzNywgMTk4LCAxLCAKLSAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMSwgNzUsIDIzNywgMTk4LCAxLCAyMzEsIDgzLCAyMzcsIDE5OCwgMSwgNjgsIDIzNywgCi0gICAgMTk4LCAxLCAyMDYsIDE3OCwgMjM3LCAxOTgsIDEsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMSwgMjUxLCA2NCwgMjM3LCAxOTgsIAotICAgIDEsIDIyMCwgMTgsIDIzNywgMTk4LCAxLCAyNTAsIDM0LCAyMzcsIDE5OCwgMSwgMTczLCAyMzcsIDE5OCwgMSwgMjI5LCAKLSAgICAxNDQsIDIzNywgMTk4LCAxLCAyMzksIDgsIDIzNywgMTk4LCAxLCAyMzgsIDExOSwgMjM3LCAxOTgsIDEsIDIyMiwgMjAzLCAKLSAgICAyMzcsIDE5OCwgMSwgMjQ3LCA5MiwgMjM3LCAxOTgsIDEsIDI0NiwgMTk5LCAyMzcsIDE5OCwgMSwgMjMwLCAxODEsIDIzNywgCi0gICAgMTk4LCAxLCAyMzAsIDE0OSwgMjM3LCAxOTgsIDEsIDIyMSwgMTEsIDIzNywgMTk4LCAxLCAyMDcsIDI0MSwgMjM3LCAxOTgsIAotICAgIDEsIDIwNywgMjI5LCAyMzcsIDE5OCwgMSwgMjQ0LCAxMjAsIDIzNywgMTk4LCAxLCAyNDQsIDEwNCwgMjM3LCAxOTgsIDEsIAotICAgIDIyMSwgMjI3LCAyMzcsIDE5OCwgMSwgMjEwLCAyMiwgMjM3LCAxOTgsIDEsIDIwOSwgMTA4LCAyMzcsIDE5OCwgMSwgMjQ0LCAKLSAgICAyMTIsIDIzNywgMTk4LCAxLCAyNDQsIDEsIDIzNywgMTk4LCAxLCAyMDEsIDIwMSwgMjM3LCAxOTgsIDEsIDE4NSwgMjM3LCAKLSAgICAxOTgsIDEsIDIxOCwgMjA4LCAyMzcsIDE5OCwgMSwgMjQ5LCAzMiwgMjM3LCAxOTgsIDEsIDI0OCwgOTgsIDIzNywgMTk4LCAKLSAgICAxLCAxOTIsIDIzNywgMTk4LCAxLCAxOTgsIDIzNywgMTk4LCAxLCAyMTYsIDIyMCwgMjM3LCAxOTgsIDEsIDIyOCwgMTEzLCAKLSAgICAyMzcsIDE5OCwgMSwgMjI3LCA3NywgMjM3LCAxOTgsIDEsIDIwNiwgODYsIDIzNywgMTk4LCAxLCAyMTMsIDkwLCAyMzcsIAotICAgIDE5OCwgMSwgMjE1LCAzNiwgMjM3LCAxOTgsIDEsIDE1MiwgMjM3LCAxOTgsIDIsIDIyMSwgNTEsIDIzNywgMTk4LCAyMiwgMiwgCi0gICAgMjUyLCAyNSwgMjM3LCAxOTgsIDIyLCAyLCA3NSwgMjM3LCAxOTgsIDIyLCAyLCAyMzEsIDgzLCAyMzcsIDE5OCwgMjIsIDIsIAotICAgIDY4LCAyMzcsIDE5OCwgMjIsIDIsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMjIsIDIsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMjIsIAotICAgIDIsIDI1MSwgNjQsIDIzNywgMTk4LCAyMiwgMiwgMjIwLCAxOCwgMjM3LCAxOTgsIDIyLCAyLCAyNTAsIDM0LCAyMzcsIDE5OCwgCi0gICAgMiwgMjA1LCAyMDQsIDIzNywgMTk4LCAyLCAyMDcsIDI4LCAyMzcsIDE5OCwgMSwgMjI5LCAxMjUsIDIzNywgMTk4LCAxLCAKLSAgICAyMzgsIDk0LCAyMzcsIDE5OCwgMSwgMjAyLCAxMTYsIDIzNywgMTk4LCAxLCAyMTUsIDE4NSwgMjM3LCAxOTgsIDEsIDI0MCwgCi0gICAgMTA4LCAyMzcsIDE5OCwgMTcsIDIwMiwgODQsIDIzNywgMTk4LCAxNywgMTA1LCAyMzcsIDE5OCwgMTcsIDEwOCwgMjM3LCAKLSAgICAxOTgsIDE3LCAxNDcsIDIzNywgMTk4LCAxNywgMTQ5LCAyMzcsIDE5OCwgMTcsIDE3MCwgMjM3LCAxOTgsIDE3LCAxOTUsIAotICAgIDIzNywgMTk4LCAxNywgMjEzLCAxMTEsIDIzNywgMTk4LCAxNywgMTk5LCAyMzcsIDE5OCwgMTcsIDIyMiwgNjMsIDIzNywgCi0gICAgMTk4LCAyMDgsIDIwOCwgMjM3LCAxOTgsIDI1MSwgMTIwLCAyMzcsIDE5OCwgMjMwLCAyMjIsIDIzNywgMTk4LCAyMDYsIAotICAgIDIwNiwgMjM3LCAxOTgsIDI0MSwgMTMwLCAyMjAsIDIzLCAyMzcsIDE5OCwgMiwgMjAzLCA4NSwgMjM3LCAyMTMsIDIsIDI0NywgCi0gICAgNTIsIDIzNywgMjEzLCAyLCAyNTAsIDE4MCwgMjM3LCAyMTMsIDIsIDIwNSwgMTk5LCAyMzcsIDIxMywgMSwgNjMsIDIzNywgCi0gICAgMjEzLCAxLCAyNTIsIDI1LCAyMzcsIDIxMywgMSwgNzUsIDIzNywgMjEzLCAxLCAyMzEsIDgzLCAyMzcsIDIxMywgMSwgNjgsIAotICAgIDIzNywgMjEzLCAxLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDEsIDEyNSwgMTQ2LCAyMzcsIDIxMywgMSwgMTI1LCAxNTksIDIzNywgCi0gICAgMjEzLCAyMiwgMjQ3LCA1NSwgNzQsIDIzNywgMjEzLCAxLCA3NCwgMjM3LCAyMTMsIDEsIDI1MSwgNjQsIDIzNywgMjEzLCAKLSAgICAyMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAxLCA3OCwgMjM3LCAyMTMsIDEsIDI1MCwgMzQsIDIzNywgMjEzLCAxLCAxNzMsIAotICAgIDIzNywgMjEzLCAxLCAyMjksIDE0NCwgMjM3LCAyMTMsIDEsIDIzOSwgOCwgMjM3LCAyMTMsIDEsIDIzOCwgMTE5LCAyMzcsIAotICAgIDIxMywgMSwgMjIyLCAyMDMsIDIzNywgMjEzLCAxLCAyNDcsIDkyLCAyMzcsIDIxMywgMSwgMjQ2LCAxOTksIDIzNywgMjEzLCAKLSAgICAxLCAyMzAsIDE4MSwgMjM3LCAyMTMsIDEsIDIzMCwgMTQ5LCAyMzcsIDIxMywgMSwgMjIxLCAxMSwgMjM3LCAyMTMsIDEsIAotICAgIDIwNywgMjQxLCAyMzcsIDIxMywgMSwgMjA3LCAyMjksIDIzNywgMjEzLCAxLCAyNDQsIDEyMCwgMjM3LCAyMTMsIDEsIDI0NCwgCi0gICAgMTA0LCAyMzcsIDIxMywgMSwgMjIxLCAyMjcsIDIzNywgMjEzLCAxLCAyMTAsIDIyLCAyMzcsIDIxMywgMSwgMjA5LCAxMDgsIAotICAgIDIzNywgMjEzLCAxLCAyNDQsIDIxMiwgMjM3LCAyMTMsIDEsIDI0NCwgMSwgMjM3LCAyMTMsIDEsIDIwMSwgMjAxLCAyMzcsIAotICAgIDIxMywgMSwgMTg1LCAyMzcsIDIxMywgMSwgMjE4LCAyMDgsIDIzNywgMjEzLCAxLCAyNDksIDMyLCAyMzcsIDIxMywgMSwgCi0gICAgMjQ4LCA5OCwgMjM3LCAyMTMsIDEsIDE5MiwgMjM3LCAyMTMsIDEsIDE5OCwgMjM3LCAyMTMsIDEsIDIxNiwgMjIwLCAyMzcsIAotICAgIDIxMywgMSwgMjI4LCAxMTMsIDIzNywgMjEzLCAxLCAyMjcsIDc3LCAyMzcsIDIxMywgMSwgMjA2LCA4NiwgMjM3LCAyMTMsIAotICAgIDEsIDIxMywgOTAsIDIzNywgMjEzLCAxLCAyMTEsIDE2NCwgMjM3LCAyMTMsIDEsIDIxNSwgMzYsIDIzNywgMjEzLCAxLCAKLSAgICAxNTIsIDIzNywgMjEzLCAyLCAyMjEsIDUxLCAyMzcsIDIxMywgMiwgMjUwLCAxNywgMjM3LCAyMTMsIDIyLCAyLCAyNTIsIAotICAgIDI1LCAyMzcsIDIxMywgMjIsIDIsIDc1LCAyMzcsIDIxMywgMjIsIDIsIDIzMSwgODMsIDIzNywgMjEzLCAyMiwgMiwgNjgsIAotICAgIDIzNywgMjEzLCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAxNDYsIDIzNywgMjEzLCAyMiwgMiwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMjM3LCAyMTMsIDIyLCAyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDIyLCAyLCA3NCwgMjM3LCAKLSAgICAyMTMsIDIyLCAyLCAyNTEsIDY0LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDc4LCAKLSAgICAyMzcsIDIxMywgMjIsIDIsIDI1MCwgMzQsIDIzNywgMjEzLCAyLCAyMDUsIDIwNCwgMjM3LCAyMTMsIDIyMCwgMzksIDIzNywgCi0gICAgMjEzLCAxLCAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMSwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgCi0gICAgMTU5LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjM3LCAyMTMsIDE3LCAyMDIsIDg0LCAyMzcsIDIxMywgMTcsIAotICAgIDEwNSwgMjM3LCAyMTMsIDE3LCAxMDgsIDIzNywgMjEzLCAxNywgMTQ3LCAyMzcsIDIxMywgMTcsIDE0OSwgMjM3LCAyMTMsIAotICAgIDE3LCAxNzAsIDIzNywgMjEzLCAxNywgMTk1LCAyMzcsIDIxMywgMTcsIDIxMywgMTExLCAyMzcsIDIxMywgMTcsIDE5OSwgCi0gICAgMjM3LCAyMTMsIDE3LCAyMjIsIDYzLCAyMzcsIDIxMywgMjUxLCAxNDYsIDU0LCAyMzcsIDIxMywgMjE1LCAxMjAsIDU0LCAKLSAgICAyMzcsIDIxMywgMSwgMjAyLCA4MCwgMTkzLCAyLCAyNDcsIDUyLCAxOTMsIDIsIDI1MCwgMTgwLCAxOTMsIDIsIDIwNSwgCi0gICAgMTk5LCAxOTMsIDEsIDYzLCAxOTMsIDEsIDI1MiwgMjUsIDE5MywgMSwgNzUsIDE5MywgMSwgMjMxLCA4MywgMTkzLCAxLCAKLSAgICA2OCwgMTkzLCAxLCAyMDYsIDE3OCwgMTkzLCAxLCAxMjUsIDE0NiwgMTkzLCAxLCAxMjUsIDE1OSwgMTkzLCAxLCA3NCwgCi0gICAgMTkzLCAxLCAyNTEsIDY0LCAxOTMsIDEsIDc4LCAxOTMsIDEsIDI1MCwgMzQsIDE5MywgMSwgMTczLCAxOTMsIDEsIDIyOSwgCi0gICAgMTQ0LCAxOTMsIDEsIDIzOSwgOCwgMTkzLCAxLCAyMzgsIDExOSwgMTkzLCAxLCAyMjIsIDIwMywgMTkzLCAxLCAyNDcsIDkyLCAKLSAgICAxOTMsIDEsIDI0NiwgMTk5LCAxOTMsIDEsIDIzMCwgMTgxLCAxOTMsIDEsIDIzMCwgMTQ5LCAxOTMsIDEsIDIyMSwgMTEsIAotICAgIDE5MywgMSwgMjA3LCAyNDEsIDE5MywgMSwgMjA3LCAyMjksIDE5MywgMSwgMjQ0LCAxMjAsIDE5MywgMSwgMjQ0LCAxMDQsIAotICAgIDE5MywgMSwgMjIxLCAyMjcsIDE5MywgMSwgMjEwLCAyMiwgMTkzLCAxLCAyMDksIDEwOCwgMTkzLCAxLCAyNDQsIDIxMiwgCi0gICAgMTkzLCAxLCAyNDQsIDEsIDE5MywgMSwgMjAxLCAyMDEsIDE5MywgMSwgMTg1LCAxOTMsIDEsIDIxOCwgMjA4LCAxOTMsIDEsIAotICAgIDI0OSwgMzIsIDE5MywgMSwgMjQ4LCA5OCwgMTkzLCAxLCAxOTIsIDE5MywgMSwgMTk4LCAxOTMsIDEsIDIxNiwgMjIwLCAKLSAgICAxOTMsIDEsIDIyOCwgMTEzLCAxOTMsIDEsIDIyNywgNzcsIDE5MywgMSwgMjA2LCA4NiwgMTkzLCAxLCAyMTMsIDkwLCAxOTMsIAotICAgIDEsIDIxMSwgMTY0LCAxOTMsIDEsIDIxNSwgMzYsIDE5MywgMSwgMTUyLCAxOTMsIDIsIDIyMSwgNTEsIDE5MywgMiwgMjUwLCAKLSAgICAxNywgMTkzLCAyMiwgMiwgMjUyLCAyNSwgMTkzLCAyMiwgMiwgNzUsIDE5MywgMjIsIDIsIDIzMSwgODMsIDE5MywgMjIsIDIsIAotICAgIDY4LCAxOTMsIDIyLCAyLCAyMDYsIDE3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNDYsIDE5MywgMjIsIDIsIDEyNSwgMjE1LCAKLSAgICAxODYsIDE5MywgMjIsIDIsIDc0LCAxOTMsIDIyLCAyLCAyNTEsIDY0LCAxOTMsIDIyLCAyLCA3OCwgMTkzLCAyMiwgMiwgCi0gICAgMjUwLCAzNCwgMTkzLCAyLCAyMDUsIDIwNCwgMTkzLCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE5MywgMjUwLCAzNSwgMjI3LCAKLSAgICAxOTYsIDgyLCAxOTMsIDEsIDIxNSwgMTg1LCAxOTMsIDEsIDIxNiwgNjEsIDE5MywgMSwgMjAyLCAxNjgsIDE5MywgMSwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMTkzLCAxLCAxMjUsIDIyNywgNzgsIDE5MywgMjIsIDIsIDEyNSwgMTU5LCAxOTMsIDIyLCAyLCAKLSAgICAxMjUsIDIyNywgNzgsIDE5MywgMTcsIDIwMiwgODQsIDE5MywgMTcsIDEwNSwgMTkzLCAxNywgMTA4LCAxOTMsIDE3LCAxNDcsIAotICAgIDE5MywgMTcsIDE0OSwgMTkzLCAxNywgMTcwLCAxOTMsIDE3LCAxOTUsIDE5MywgMTcsIDIxMywgMTExLCAxOTMsIDE3LCAKLSAgICAxOTksIDE5MywgMTcsIDIyMiwgNjMsIDE5MywgMjMwLCAyMDIsIDE5MywgMSwgMjA0LCAxMTEsIDE5MywgMjM5LCAxMzgsIAotICAgIDExOCwgMjE3LCA1NSwgMTkzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTkzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAKLSAgICAxOTMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgODAsIDE5MywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE5MywgMjM5LCAxMzgsIAotICAgIDEyNiwgMjEyLCA3OSwgNDQsIDIsIDI1MCwgMTgwLCA0NCwgMiwgMjA1LCAxOTksIDQ0LCAxLCA2MywgNDQsIDEsIDI1MiwgCi0gICAgMjUsIDQ0LCAxLCA3NSwgNDQsIDEsIDIzMSwgODMsIDQ0LCAxLCA2OCwgNDQsIDEsIDIwNiwgMTc4LCA0NCwgMSwgNzQsIDQ0LCAKLSAgICAxLCAyNDEsIDE2MSwgNDQsIDEsIDI1MSwgNjQsIDQ0LCAxLCA3OCwgNDQsIDEsIDIyMCwgMTgsIDQ0LCAxLCAyNTAsIDM0LCAKLSAgICA0NCwgMSwgMTczLCA0NCwgMSwgMjIyLCAyMDMsIDQ0LCAxLCAyNDcsIDkyLCA0NCwgMSwgMjMwLCAxODEsIDQ0LCAxLCAyMjEsIAotICAgIDExLCA0NCwgMSwgMjA3LCAyNDEsIDQ0LCAxLCAyMjEsIDIyNywgNDQsIDEsIDIxMCwgMjIsIDQ0LCAxLCAyMDEsIDIwMSwgCi0gICAgNDQsIDEsIDIyMSwgMjA5LCA0NCwgMSwgMTg1LCA0NCwgMSwgMTkyLCA0NCwgMSwgMTk4LCA0NCwgMSwgMjE2LCAyMjAsIDQ0LCAKLSAgICAxLCAyMTUsIDE4NSwgNDQsIDEsIDIyOCwgMTEzLCA0NCwgMSwgMjI3LCA3NywgNDQsIDEsIDIyNywgNjgsIDQ0LCAxLCAyMDYsIAotICAgIDg2LCA0NCwgMSwgMjEzLCA5MCwgNDQsIDEsIDIxMSwgMTY0LCA0NCwgMSwgMjE1LCAzNiwgNDQsIDEsIDE1MiwgNDQsIDIyLCAKLSAgICAyLCAyNTIsIDI1LCA0NCwgMjIsIDIsIDc1LCA0NCwgMjIsIDIsIDIzMSwgODMsIDQ0LCAyMiwgMiwgNjgsIDQ0LCAyMiwgMiwgCi0gICAgMjA2LCAxNzgsIDQ0LCAyMiwgMiwgNzQsIDQ0LCAyMiwgMiwgMjQxLCAxNjEsIDQ0LCAyMiwgMiwgMjUxLCA2NCwgNDQsIDIyLCAKLSAgICAyLCA3OCwgNDQsIDIyLCAyLCAyMjAsIDE4LCA0NCwgMjIsIDIsIDI1MCwgMzQsIDQ0LCAyLCAyMDUsIDIwNCwgNDQsIDIyMCwgCi0gICAgMzksIDQ0LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDQ0LCAxNywgMjAyLCA4NCwgNDQsIDE3LCAxMDUsIDQ0LCAxNywgMTA4LCAKLSAgICA0NCwgMTcsIDE0NywgNDQsIDE3LCAxNDksIDQ0LCAxNywgMTcwLCA0NCwgMTcsIDE5NSwgNDQsIDE3LCAyMTMsIDExMSwgNDQsIAotICAgIDE3LCAxOTksIDQ0LCAxNywgMjIyLCA2MywgNDQsIDQyLCAyMDksIDE1MiwgNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDQ0LCA0MiwgCi0gICAgMTE4LCAyMDksIDM2LCA0NCwgMjQ0LCAxMzMsIDU0LCA0NCwgMjI0LCAzOCwgNTQsIDQ0LCAyMDMsIDUwLCA1NCwgNDQsIAotICAgIDI0NCwgNzIsIDU0LCA0NCwgMjQ1LCAxNDEsIDU0LCA0NCwgMjUwLCA4MiwgODcsIDU0LCA0NCwgMjE1LCAxMjAsIDU0LCA0NCwgCi0gICAgNDIsIDU0LCAxNzUsIDIsIDM5LCAyNDcsIDUzLCA1NSwgMTc1LCAyLCAyNDcsIDUyLCAxNzUsIDIsIDI1MCwgMTgwLCAxNzUsIAotICAgIDIsIDIwNSwgMTk5LCAxNzUsIDEsIDYzLCAxNzUsIDEsIDI1MiwgMjUsIDE3NSwgMSwgNzUsIDE3NSwgMSwgMjMxLCA4MywgCi0gICAgMTc1LCAxLCA2OCwgMTc1LCAxLCAyMDYsIDE3OCwgMTc1LCAxLCAxMjUsIDE0NiwgMTc1LCAxLCAxMjUsIDE1OSwgMTc1LCAxLCAKLSAgICA3NCwgMTc1LCAxLCAyNDEsIDE2MSwgMTc1LCAxLCAyNTEsIDY0LCAxNzUsIDEsIDc4LCAxNzUsIDEsIDIyMCwgMTgsIDE3NSwgCi0gICAgMSwgMjUwLCAzNCwgMTc1LCAxLCAxNzMsIDE3NSwgMSwgMjI5LCAxNDQsIDE3NSwgMSwgMjM5LCA4LCAxNzUsIDEsIDIzOCwgCi0gICAgMTE5LCAxNzUsIDEsIDIyMiwgMjAzLCAxNzUsIDEsIDI0NywgOTIsIDE3NSwgMSwgMjQ2LCAxOTksIDE3NSwgMSwgMjMwLCAKLSAgICAxODEsIDE3NSwgMSwgMjMwLCAxNDksIDE3NSwgMSwgMjIxLCAxMSwgMTc1LCAxLCAyMDcsIDI0MSwgMTc1LCAxLCAyMDcsIAotICAgIDIyOSwgMTc1LCAxLCAyNDQsIDEyMCwgMTc1LCAxLCAyNDQsIDEwNCwgMTc1LCAxLCAyMjEsIDIyNywgMTc1LCAxLCAyMTAsIAotICAgIDIyLCAxNzUsIDEsIDIwOSwgMTA4LCAxNzUsIDEsIDI0NCwgMjEyLCAxNzUsIDEsIDI0NCwgMSwgMTc1LCAxLCAyMDEsIDIwMSwgCi0gICAgMTc1LCAxLCAxODUsIDE3NSwgMSwgMjE4LCAyMDgsIDE3NSwgMSwgMjQ5LCAzMiwgMTc1LCAxLCAyNDgsIDk4LCAxNzUsIDEsIAotICAgIDE5MiwgMTc1LCAxLCAxOTgsIDE3NSwgMSwgMjE2LCAyMjAsIDE3NSwgMSwgMjE1LCAxODUsIDE3NSwgMSwgMjI4LCAxMTMsIAotICAgIDE3NSwgMSwgMjI3LCA3NywgMTc1LCAxLCAyMjcsIDY4LCAxNzUsIDEsIDIwNiwgODYsIDE3NSwgMSwgMjEzLCA5MCwgMTc1LCAKLSAgICAxLCAyMTEsIDE2NCwgMTc1LCAxLCAyMTUsIDM2LCAxNzUsIDEsIDE1MiwgMTc1LCAyLCAyNTAsIDE3LCAxNzUsIDIyLCAyLCAKLSAgICAyNTIsIDI1LCAxNzUsIDIyLCAyLCA3NSwgMTc1LCAyMiwgMiwgMjMxLCA4MywgMTc1LCAyMiwgMiwgNjgsIDE3NSwgMjIsIDIsIAotICAgIDIwNiwgMTc4LCAxNzUsIDIyLCAyLCAxMjUsIDE0NiwgMTc1LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTc1LCAyMiwgMiwgCi0gICAgNzQsIDE3NSwgMjIsIDIsIDI0MSwgMTYxLCAxNzUsIDIyLCAyLCAyNTEsIDY0LCAxNzUsIDIyLCAyLCA3OCwgMTc1LCAyMiwgCi0gICAgMiwgMjIwLCAxOCwgMTc1LCAyMiwgMiwgMjUwLCAzNCwgMTc1LCAyLCAyMDUsIDIwNCwgMTc1LCAyMjcsIDE5NiwgODIsIAotICAgIDE3NSwgMjUxLCA2NSwgMjI3LCAxOTYsIDgyLCAxNzUsIDEsIDIwOCwgMjAsIDE3NSwgMSwgMjQxLCAyNTUsIDE3NSwgMSwgCi0gICAgMjE1LCAxNjYsIDE3NSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc1LCAxLCAxMjUsIDIyNywgNzgsIDE3NSwgMjIsIDIsIDEyNSwgCi0gICAgMTU5LCAxNzUsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3NSwgMTcsIDIwMiwgODQsIDE3NSwgMTcsIDEwNSwgMTc1LCAxNywgCi0gICAgMTA4LCAxNzUsIDE3LCAxNDcsIDE3NSwgMTcsIDE0OSwgMTc1LCAxNywgMTcwLCAxNzUsIDE3LCAxOTUsIDE3NSwgMTcsIAotICAgIDIxMywgMTExLCAxNzUsIDE3LCAxOTksIDE3NSwgMTcsIDIyMiwgNjMsIDE3NSwgMjM5LCAxMzgsIDE3LCAyMDIsIDg1LCAzNSwgCi0gICAgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIAotICAgIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgCi0gICAgMTM4LCAxNywgMTI2LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIAotICAgIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTIwLCAzNSwgMjQwLCAyMjUsIDIxOCwgCi0gICAgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjYsIDM1LCAyNDAsIDIyNSwgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAKLSAgICAyLCAyMDcsIDE2NCwgMjAwLCAyLCAyNDcsIDUyLCAyMDAsIDIsIDI1MCwgMTgwLCAyMDAsIDIsIDIwNSwgMTk5LCAyMDAsIDEsIAotICAgIDYzLCAyMDAsIDEsIDI1MiwgMjUsIDIwMCwgMSwgNzUsIDIwMCwgMSwgMjMxLCA4MywgMjAwLCAxLCA2OCwgMjAwLCAxLCAKLSAgICAyMDYsIDE3OCwgMjAwLCAxLCAxMjUsIDE0NiwgMjAwLCAxLCAxMjUsIDE1OSwgMjAwLCAxLCA3NCwgMjAwLCAxLCAyNDEsIAotICAgIDE2MSwgMjAwLCAxLCAyNTEsIDY0LCAyMDAsIDEsIDc4LCAyMDAsIDEsIDIyMCwgMTgsIDIwMCwgMSwgMjUwLCAzNCwgMjAwLCAKLSAgICAxLCAxNzMsIDIwMCwgMSwgMjI5LCAxNDQsIDIwMCwgMSwgMjM5LCA4LCAyMDAsIDEsIDIzOCwgMTE5LCAyMDAsIDEsIDIyMiwgCi0gICAgMjAzLCAyMDAsIDEsIDI0NywgOTIsIDIwMCwgMSwgMjQ2LCAxOTksIDIwMCwgMSwgMjMwLCAxODEsIDIwMCwgMSwgMjMwLCAKLSAgICAxNDksIDIwMCwgMSwgMjIxLCAxMSwgMjAwLCAxLCAyMDcsIDI0MSwgMjAwLCAxLCAyMDcsIDIyOSwgMjAwLCAxLCAyNDQsIAotICAgIDEyMCwgMjAwLCAxLCAyNDQsIDEwNCwgMjAwLCAxLCAyMjEsIDIyNywgMjAwLCAxLCAyMTAsIDIyLCAyMDAsIDEsIDIwOSwgCi0gICAgMTA4LCAyMDAsIDEsIDI0NCwgMjEyLCAyMDAsIDEsIDI0NCwgMSwgMjAwLCAxLCAyMDEsIDIwMSwgMjAwLCAxLCAxODUsIAotICAgIDIwMCwgMSwgMjE4LCAyMDgsIDIwMCwgMSwgMjQ5LCAzMiwgMjAwLCAxLCAyNDgsIDk4LCAyMDAsIDEsIDE5MiwgMjAwLCAxLCAKLSAgICAxOTgsIDIwMCwgMSwgMjE2LCAyMjAsIDIwMCwgMSwgMjE1LCAxODUsIDIwMCwgMSwgMjI4LCAxMTMsIDIwMCwgMSwgMjI3LCAKLSAgICA3NywgMjAwLCAxLCAyMDYsIDg2LCAyMDAsIDEsIDIxMywgOTAsIDIwMCwgMSwgMjExLCAxNjQsIDIwMCwgMSwgMjE1LCAzNiwgCi0gICAgMjAwLCAxLCAxNTIsIDIwMCwgMiwgMjIxLCA1MSwgMjAwLCAyLCAyNTAsIDE3LCAyMDAsIDIyLCAyLCAyNTIsIDI1LCAyMDAsIAotICAgIDIyLCAyLCA3NSwgMjAwLCAyMiwgMiwgMjMxLCA4MywgMjAwLCAyMiwgMiwgNjgsIDIwMCwgMjIsIDIsIDIwNiwgMTc4LCAKLSAgICAyMDAsIDIyLCAyLCAxMjUsIDE0NiwgMjAwLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjAwLCAyMiwgMiwgNzQsIDIwMCwgMjIsIAotICAgIDIsIDI0MSwgMTYxLCAyMDAsIDIyLCAyLCAyNTEsIDY0LCAyMDAsIDIyLCAyLCA3OCwgMjAwLCAyMiwgMiwgMjIwLCAxOCwgCi0gICAgMjAwLCAyMiwgMiwgMjUwLCAzNCwgMjAwLCAyLCAyMDUsIDIwNCwgMjAwLCAyMjcsIDE5NiwgODIsIDIwMCwgMjUxLCA2NSwgCi0gICAgMjI3LCAxOTYsIDgyLCAyMDAsIDEsIDI0MCwgMTA4LCAyMDAsIDEsIDEyNSwgMjE1LCAxODYsIDIwMCwgMSwgMTI1LCAyMjcsIAotICAgIDc4LCAyMDAsIDIyLCAyLCAxMjUsIDE1OSwgMjAwLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDAsIDE3LCAyMDIsIDg0LCAKLSAgICAyMDAsIDE3LCAxMDUsIDIwMCwgMTcsIDEwOCwgMjAwLCAxNywgMTQ3LCAyMDAsIDE3LCAxNDksIDIwMCwgMTcsIDE3MCwgCi0gICAgMjAwLCAxNywgMTk1LCAyMDAsIDE3LCAyMTMsIDExMSwgMjAwLCAxNywgMTk5LCAyMDAsIDE3LCAyMjIsIDYzLCAyMDAsIDIsIAotICAgIDIzMCwgMTM1LCAyMDAsIDIsIDIwNiwgMjIyLCAxNjQsIDIsIDI0NywgNTIsIDE2NCwgMiwgMjUwLCAxODAsIDE2NCwgMiwgCi0gICAgMjA1LCAxOTksIDE2NCwgMSwgNjMsIDE2NCwgMSwgMjUyLCAyNSwgMTY0LCAxLCA3NSwgMTY0LCAxLCAyMzEsIDgzLCAxNjQsIAotICAgIDEsIDY4LCAxNjQsIDEsIDIwNiwgMTc4LCAxNjQsIDEsIDEyNSwgMTQ2LCAxNjQsIDEsIDEyNSwgMTU5LCAxNjQsIDEsIDc0LCAKLSAgICAxNjQsIDEsIDI0MSwgMTYxLCAxNjQsIDEsIDI1MSwgNjQsIDE2NCwgMSwgNzgsIDE2NCwgMSwgMjIwLCAxOCwgMTY0LCAxLCAKLSAgICAyNTAsIDM0LCAxNjQsIDEsIDE3MywgMTY0LCAxLCAyMjksIDE0NCwgMTY0LCAxLCAyMzksIDgsIDE2NCwgMSwgMjM4LCAxMTksIAotICAgIDE2NCwgMSwgMjIyLCAyMDMsIDE2NCwgMSwgMjQ3LCA5MiwgMTY0LCAxLCAyNDYsIDE5OSwgMTY0LCAxLCAyMzAsIDE4MSwgCi0gICAgMTY0LCAxLCAyMzAsIDE0OSwgMTY0LCAxLCAyMjEsIDExLCAxNjQsIDEsIDIwNywgMjQxLCAxNjQsIDEsIDIwNywgMjI5LCAKLSAgICAxNjQsIDEsIDI0NCwgMTIwLCAxNjQsIDEsIDI0NCwgMTA0LCAxNjQsIDEsIDIyMSwgMjI3LCAxNjQsIDEsIDIxMCwgMjIsIAotICAgIDE2NCwgMSwgMjA5LCAxMDgsIDE2NCwgMSwgMjQ0LCAyMTIsIDE2NCwgMSwgMjQ0LCAxLCAxNjQsIDEsIDIwMSwgMjAxLCAKLSAgICAxNjQsIDEsIDIyMSwgMjA5LCAxNjQsIDEsIDE4NSwgMTY0LCAxLCAyMTgsIDIwOCwgMTY0LCAxLCAyNDksIDMyLCAxNjQsIDEsIAotICAgIDI0OCwgOTgsIDE2NCwgMSwgMTkyLCAxNjQsIDEsIDE5OCwgMTY0LCAxLCAyMTYsIDIyMCwgMTY0LCAxLCAyMTUsIDE4NSwgCi0gICAgMTY0LCAxLCAyMjgsIDExMywgMTY0LCAxLCAyMjcsIDc3LCAxNjQsIDEsIDIyNywgNjgsIDE2NCwgMSwgMjA2LCA4NiwgMTY0LCAKLSAgICAxLCAyMTMsIDkwLCAxNjQsIDEsIDIxMSwgMTY0LCAxNjQsIDEsIDIxNSwgMzYsIDE2NCwgMSwgMTUyLCAxNjQsIDEsIDIwNywgCi0gICAgMjEwLCAxNjQsIDIsIDI1MCwgMTcsIDE2NCwgMjIsIDIsIDI1MiwgMjUsIDE2NCwgMjIsIDIsIDc1LCAxNjQsIDIyLCAyLCAKLSAgICAyMzEsIDgzLCAxNjQsIDIyLCAyLCA2OCwgMTY0LCAyMiwgMiwgMjA2LCAxNzgsIDE2NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNjQsIAotICAgIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDIyLCAyLCA3NCwgMTY0LCAyMiwgMiwgMjQxLCAxNjEsIDE2NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDE2NCwgMjIsIDIsIDc4LCAxNjQsIDIyLCAyLCAyMjAsIDE4LCAxNjQsIDIyLCAyLCAyNTAsIDM0LCAxNjQsIAotICAgIDIsIDIwNSwgMjA0LCAxNjQsIDEsIDcwLCAyMTYsIDk3LCAxNjQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTY0LCAxLCAKLSAgICAyNTAsIDEyNiwgMjMxLCA4MywgMTY0LCAxLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDEsIDEyNSwgMjI3LCA3OCwgMTY0LCAyMiwgCi0gICAgMiwgMTI1LCAxNTksIDE2NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTY0LCAxNywgMjAyLCA4NCwgMTY0LCAxNywgMTA1LCAKLSAgICAxNjQsIDE3LCAxMDgsIDE2NCwgMTcsIDE0NywgMTY0LCAxNywgMTQ5LCAxNjQsIDE3LCAxNzAsIDE2NCwgMTcsIDE5NSwgCi0gICAgMTY0LCAxNywgMjEzLCAxMTEsIDE2NCwgMTcsIDE5OSwgMTY0LCAxNywgMjIyLCA2MywgMTY0LCA0MiwgMjA5LCAxNTIsIAotICAgIDE2NCwgNDIsIDExOCwgMjM2LCAxMSwgMTY0LCA0MiwgMTE4LCAyMDksIDM2LCAxNjQsIDIzOSwgMTM4LCAxMTgsIDIxNywgCi0gICAgNTUsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDE2NCwgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMTY0LCAyNDQsIAotICAgIDEzOCwgODIsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMSwgMjI4LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjMsIDE2MywgMTY0LCAxLCAKLSAgICAyNDYsIDEzMSwgMjE1LCAxODYsIDE2NCwgMSwgMjQ2LCAxMzEsIDE1OSwgMTY0LCAxLCAyNDYsIDEzMSwgMjI3LCA3OCwgCi0gICAgMTY0LCAxLCAyNDYsIDEzMSwgMjMwLCA1NCwgMTQwLCAyLCAyNTAsIDE3OSwgMTQwLCAyLCAyMDUsIDE5OCwgMTQwLCAxLCAKLSAgICAyNTAsIDYsIDE0MCwgMSwgMjUxLCAyMzUsIDE0MCwgMSwgMjUxLCA4OSwgMTQwLCAxLCAyNTEsIDEwNCwgMTQwLCAxLCAyMzAsIAotICAgIDE5MSwgMTQwLCAxLCAyMzEsIDgyLCAxNDAsIDEsIDIwNiwgMTY5LCAxNDAsIDEsIDIwNiwgMTcyLCAxNDAsIDEsIDIzMCwgCi0gICAgMjE3LCAxNDAsIDEsIDIzMCwgMjE4LCAxNDAsIDEsIDIzMSwgNjgsIDE0MCwgMSwgMjMxLCA3MCwgMTQwLCAxLCAyNDAsIAotICAgIDE5NCwgMTQwLCAxLCAyNDEsIDE1NiwgMTQwLCAxLCAyNTEsIDQ5LCAxNDAsIDEsIDIxOSwgMTg3LCAxNDAsIDEsIDIyMCwgCi0gICAgMTEsIDE0MCwgMSwgMjUwLCAyMCwgMTQwLCAxLCAyNTEsIDUsIDIyOSwgMjA2LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMjksIAotICAgIDIwNiwgMTQwLCAxLCAyNTEsIDUsIDIzOCwgMjEwLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzgsIDIxMCwgMTQwLCAxLCAyMjksIAotICAgIDI1NSwgMjIzLCAxMDMsIDE0MCwgMSwgMjE0LCAyMzUsIDIzOCwgMjEwLCAxNDAsIDEsIDI1MSwgNSwgMjQ3LCA4LCAxNDAsIAotICAgIDEsIDIyNSwgMTQ3LCAyNDcsIDgsIDE0MCwgMSwgMjUxLCA1LCAyMzAsIDE2NCwgMTQwLCAxLCAyMjUsIDE0NywgMjMwLCAKLSAgICAxNjQsIDE0MCwgMSwgMjEwLCAxNSwgMjIzLCAxMDMsIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMzQsIDIyMywgMTA0LCAxNDAsIAotICAgIDEsIDIxNCwgMjM1LCAyMzAsIDE2NCwgMTQwLCAxLCAyNTEsIDUsIDIwNywgMjM3LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMDcsIAotICAgIDIzNywgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTExLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIDExMSwgMTQwLCAxLCAyMjMsIAotICAgIDE5MSwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjUxLCA1LCAyMDksIDE5NSwgMTQwLCAKLSAgICAxLCAyMjUsIDE0NywgMjA5LCAxOTUsIDE0MCwgMSwgMjUxLCA1LCAyNDQsIDEzMSwgMTQwLCAxLCAyMjUsIDE0NywgMjQ0LCAKLSAgICAxMzEsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyMywgNTgsIDE0MCwgMSwgMjE0LCAyMzUsIDI0NCwgMTMxLCAxNDAsIDEsIDI1MSwgCi0gICAgNSwgMjE5LCA0MiwgMTQwLCAxLCAyMjUsIDE0NywgMjE5LCA0MiwgMTQwLCAxLCAyNTEsIDUsIDI0OCwgMjAwLCAxNDAsIDEsIAotICAgIDIyNSwgMTQ3LCAyNDgsIDIwMCwgMTQwLCAxLCAyMjUsIDYyLCAxNDAsIDEsIDI1MCwgMjQxLCAyNDgsIDIwMCwgMTQwLCAxLCAKLSAgICAyMDMsIDU3LCAxNDAsIDEsIDIxNiwgMTY0LCAxNDAsIDEsIDI0NCwgMTYyLCAyMjcsIDI0MywgMTQwLCAxLCAyMDYsIDU3LCAKLSAgICAxNDAsIDEsIDIxMCwgMTUsIDIxNCwgMjA3LCAxNDAsIDEsIDIyMywgMTkxLCAyMTQsIDIwNywgMTQwLCAxLCAyNDQsIDE2MiwgCi0gICAgMjE0LCAyMDcsIDE0MCwgMSwgMjM3LCA3MSwgMTQwLCAxLCAyMjMsIDE5MSwgMjI3LCAyNDMsIDE0MCwgMSwgMjQwLCA2MiwgCi0gICAgMTQwLCAyLCAyNTEsIDM4LCAxNDAsIDIyLCAyLCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjUxLCAxMDYsIAotICAgIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyNTEsIDEwNiwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIzMCwgMjE0LCAxNDAsIDIyLCAKLSAgICAyLCAyNDMsIDIwMCwgMjMwLCAyMTQsIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyMTksIDE2NywgMTQwLCAyMiwgMiwgMjQzLCAKLSAgICAyMDAsIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgCi0gICAgMjQzLCAyMDAsIDIyOSwgMTEsIDE0MCwgMjIsIDIsIDIyOSwgMTMsIDI0NCwgNTAsIDE0MCwgMjIsIDIsIDIyOSwgMTIsIAotICAgIDIzNywgMTU4LCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDEyLCAyMzcsIDE1OCwgMjQzLCAyMDAsIDI1MSwgOTksIDE0MCwgCi0gICAgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyMzgsIDIwOSwgMTQwLCAyMiwgMiwgMjM4LCAyMDksIDE0MCwgMjI3LCA4OSwgCi0gICAgMTcsIDIwMiwgODQsIDE0MCwgMjI3LCA4OSwgMTcsIDEwNSwgMTQwLCAyMjcsIDg5LCAxNywgMTA4LCAxNDAsIDIyNywgODksIAotICAgIDE3LCAxNDcsIDE0MCwgMjI3LCA4OSwgMTcsIDE0OSwgMTQwLCAyMjcsIDg5LCAxNywgMTcwLCAxNDAsIDIyNywgODksIDE3LCAKLSAgICAxOTUsIDE0MCwgMjI3LCA4OSwgMTcsIDIxMywgMTExLCAxNDAsIDIyNywgODksIDE3LCAxOTksIDE0MCwgMjI3LCA4OSwgMTcsIAotICAgIDIyMiwgNjMsIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjA5LCAKLSAgICAxNDAsIDIxNywgMTc5LCAyMjgsIDE5NCwgMjA5LCAxMDMsIDE2NywgMjI5LCAyNywgMjMwLCAxOCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI5LCAxMTYsIDIyOSwgMTM5LCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMDgsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyOSwgMTE2LCAyMjksIDEwMywgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTYsIDIyOSwgMTEyLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjksIDExNiwgMjE2LCAxODUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgMTI5LCAyMjIsIDExNiwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjQ2LCAxMTcsIDI0NiwgMTg4LCAyMDksIDEwMywgMTY3LCAyNDYsIDExNywgMjQ2LCAxMjcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDI0NiwgMTE3LCAyNDYsIDE4NywgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjEyLCAxMywgMjA5LCAxMDMsIDE2NywgMjQ2LCAKLSAgICAxMTcsIDI0NiwgMTEzLCAyMDksIDEwMywgMTY3LCAyMDIsIDI0OCwgMjAyLCAyNTUsIDIwOSwgMTAzLCAxNjcsIDI0MywgCi0gICAgMTE0LCAyNDYsIDE5NiwgMjA5LCAxMDMsIDE2NywgMjA4LCAxNzMsIDIxOSwgNTMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIAotICAgIDIwOSwgOTcsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIyMywgODAsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIxOCwgCi0gICAgMTcwLCAyMDksIDEwMywgMTY3LCAyMjEsIDE5MiwgMjIyLCAyMzAsIDIwOSwgMTAzLCAxNjcsIDI0MywgMTE0LCAyNDQsIDUxLCAKLSAgICAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjA5LCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTYsIDIwOSwgCi0gICAgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTA0LCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDQzLCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjEsIDE5MiwgMjIxLCA4NCwgMjA5LCAxMDMsIDE2NywgMjQ4LCAyNCwgMjQ5LCAwLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTgsIDcwLCAyMTgsIDk4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAxNzIsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTg3LCAyNDAsIDEwOCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxOCwgMjAxLCAyMDksIDEwMywgMTY3LCAyMzksIAotICAgIDE4NywgMjQwLCA4MSwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxNCwgMjQ3LCAyMDksIDEwMywgMTY3LCAyMjQsIDgzLCAKLSAgICAxOTIsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDMsIDg2LCAyMDksIDEwMywgMTY3LCAyMTUsIDIyOCwgMjE1LCAxNDQsIAotICAgIDIwOSwgMTAzLCAxNjcsIDIxNSwgMTQ1LCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyMjcsIDEwNywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI2LCAyMzksIDIwOSwgMTAzLCAxNjcsIDIwNCwgMSwgMjA0LCAxMDYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxNSwgCi0gICAgNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAxMTYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxMSwgOSwgMjA5LCAKLSAgICAxMDMsIDE2NywgMjM2LCAxMzcsIDIzNiwgMjMzLCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyNDYsIDk3LCAyMDksIDEwMywgCi0gICAgMTY3LCAxNTgsIDI1MCwgMjIzLCAyMDksIDEwMywgMTY3LCAyMzYsIDEzNywgMjIxLCAxODcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxOSwgMTQ0LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNjMsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMzcsIDEyNSwgCi0gICAgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MiwgMjUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTAsIDI0NywgMjA5LCAKLSAgICAxMDMsIDE2NywgMjE0LCAyMjksIDc1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjMxLCA4MywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE0LCAyMjksIDIwNywgMjQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDcsIDIyLCAyMDksIDEwMywgMTY3LCAyMTQsIAotICAgIDIyOSwgNjgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDYsIDE3OCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODMsIDIwOSwgCi0gICAgMTAzLCAyNDUsIDkyLCAxNiwgMjQ5LCAxLCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzQsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxNCwgMjI5LCAyNTEsIDEwOSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDc4LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgCi0gICAgMjUxLCA2NSwgMjI1LCAxMzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTEsIDY1LCAyMjUsIDEzNiwgMjA5LCAxMDMsIAotICAgIDE2NywgMjI4LCAzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzIsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTMzLCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjUsIDE0MSwgMjQxLCAxMjksIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMDksIDQ3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjUsIDE0MSwgMjA4LCA4OCwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDI0NiwgMTc1LCAyMDksIDEwMywgMTY3LCAyMDksIAotICAgIDk1LCAyMDksIDEwMywgMTY3LCAyMjIsIDcyLCAyMDksIDEwMywgMTY3LCAyMDMsIDgwLCAyMDksIDEwMywgMTY3LCAyMzksIAotICAgIDE3NywgMjA5LCAxMDMsIDE3LCAyMDIsIDg0LCAyMDksIDEwMywgMTcsIDEwNSwgMjA5LCAxMDMsIDE3LCAxMDgsIDIwOSwgCi0gICAgMTAzLCAxNywgMTQ3LCAyMDksIDEwMywgMTcsIDE0OSwgMjA5LCAxMDMsIDE3LCAxNzAsIDIwOSwgMTAzLCAxNywgMTk1LCAKLSAgICAyMDksIDEwMywgMTcsIDIxMywgMTExLCAyMDksIDEwMywgMTcsIDE5OSwgMjA5LCAxMDMsIDE3LCAyMjIsIDYzLCAyMDksIAotICAgIDEwMywgMTY3LCAyNTAsIDIxOSwgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTMsIDIyOCwgMTIsIDEsIDIyOSwgMjYsIDIyOCwgCi0gICAgMTIsIDEsIDIyOSwgMTE2LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjI5LCAxMTYsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAKLSAgICAyMjIsIDEyOCwgMjI4LCAxMiwgMSwgMjQ1LCAyNTQsIDIyOCwgMTIsIDEsIDIxMiwgMTQsIDIwOSwgMjMyLCAyMjgsIDEyLCAKLSAgICAxLCAyMjAsIDIzMywgMjI4LCAxMiwgMSwgMjQzLCAxMTMsIDIyOCwgMTIsIDEsIDEzNSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgCi0gICAgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIwOSwgNDgsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMjEsIDE5MSwgMjI4LCAxMiwgCi0gICAgMSwgMjQ4LCAyMywgMjI4LCAxMiwgMSwgMjE4LCA2OSwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIxMCwgMjExLCAyMjgsIDEyLCAKLSAgICAxLCAyMzksIDE4NywgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIxOCwgMTgxLCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjM5LCAKLSAgICAxODcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMDIsIDI0NywgMjI4LCAxMiwgMSwgCi0gICAgMjI3LCA1MCwgMjI3LCAxMDcsIDIyOCwgMTIsIDEsIDIyNywgNTAsIDIyNywgMTIsIDIyOCwgMTIsIDEsIDIwNCwgMCwgMjI4LCAKLSAgICAxMiwgMSwgMjEyLCAxNCwgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgNzgsIAotICAgIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMDksIDIzMiwgMjI4LCAxMiwgMjQxLCAxMDgsIDIyOCwgMTIsIDIyLCAyLCA2MywgCi0gICAgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMzAsIDQsIDIyOCwgMTIsIDIyLCAyLCAyNTIsIDI1LCAyMjgsIDEyLCAyMiwgCi0gICAgMiwgMjUwLCAyNDcsIDIyOCwgMTIsIDIyLCAyLCA3NSwgMjI4LCAxMiwgMjIsIDIsIDIzMSwgODMsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyMDMsIDEyNCwgMjI4LCAxMiwgMjIsIDIsIDIwMiwgMTY5LCAyMjgsIDEyLCAyMiwgMiwgNjgsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyMDYsIDE3OCwgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMjksIDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjcsIAotICAgIDQ5LCAyMjgsIDEyLCAyMTMsIDEzOCwgMiwgMjIwLCAyMzMsIDIyOCwgMTIsIDIyLCAyLCA3NCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDI0MSwgMTQ1LCAyMjgsIDEyLCAyMiwgMiwgNzgsIDIyOCwgMTIsIDIyLCAyLCAyNTAsIDgsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAyMjgsIDEyLCAyMjksIDI3LCAyMjgsIDExMywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIAotICAgIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgNDcsIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgMiwgMjI4LCAxMiwgCi0gICAgMTQzLCAyMjUsIDE0MSwgMjQ3LCAxNiwgMjI4LCAxMiwgMjQ3LCA1OCwgODIsIDIyOCwgMTIsIDIyMiwgODEsIDIyOCwgMTIsIAotICAgIDE3LCAyMDIsIDg0LCAyMjgsIDEyLCAxNywgMTA1LCAyMjgsIDEyLCAxNywgMTA4LCAyMjgsIDEyLCAxNywgMTQ3LCAyMjgsIAotICAgIDEyLCAxNywgMTQ5LCAyMjgsIDEyLCAxNywgMTcwLCAyMjgsIDEyLCAxNywgMTk1LCAyMjgsIDEyLCAxNywgMjEzLCAxMTEsIAotICAgIDIyOCwgMTIsIDE3LCAxOTksIDIyOCwgMTIsIDE3LCAyMjIsIDYzLCAyMjgsIDEyLCAyMzYsIDEzNywgMjIxLCAxOTEsIDIyOCwgCi0gICAgMTIsIDIzNiwgMTM3LCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMjksIDExNywgMjM4LCAzOSwgMjI4LCAxMiwgMSwgMjI5LCAKLSAgICAxMTcsIDIyMCwgMjMzLCA3NywgNCwgMjIwLCAzOSwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDIwOCwgCi0gICAgMjYsIDYzLCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjU1LCAyMiwgMjE1LCAyMzIsIDI0OCwgMTY0LCAKLSAgICAxOTIsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMzcsIDIzMiwgMjA4LCA2LCAxOTIsIAotICAgIDc3LCAxMzEsIDgxLCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAxMzEsIDI0NiwgMTIsIDIwMywgMywgCi0gICAgMjI0LCAxNzMsIDIxMywgOTcsIDE5MiwgNzcsIDEzMSwgMjQ3LCAzNCwgMjAzLCAzLCAyMjQsIDE3MywgMjE4LCAxNzEsIAotICAgIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCA2LCAyMTMsIDgzLCAxOTIsIDc3LCAxMzEsIAotICAgIDIxNCwgMjA1LCAyMTMsIDgyLCA3NywgMTMxLCAyNDcsIDE5NiwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjQ4LCA0NSwgCi0gICAgMjEyLCAyMzgsIDIwMywgMywgMjI0LCAxNzIsIDc3LCAxMzEsIDIzMCwgMjQzLCAyMDgsIDUsIDc3LCAxMzEsIDI0NCwgNDQsIAotICAgIDIwOCwgNiwgMjQ3LCAxOTUsIDc3LCAxMzEsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMTMsIDgyLCA3NywgMTMxLCAKLSAgICAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIxNSwgMjU1LCAKLSAgICAyNDYsIDE1NiwgMjExLCAxODAsIDIxMywgODIsIDc3LCAxMzEsIDIxNiwgNjUsIDIzOCwgOSwgMjEzLCA4MiwgNzcsIDEzMSwgCi0gICAgMjQ3LCAzNCwgMjU1LCAyNiwgMjE1LCAxNDksIDIyNSwgMjEsIDE2MywgMjQ3LCA2MSwgNzcsIDEzMSwgMjM3LCAyMzIsIAotICAgIDIwOCwgNSwgNzcsIDIyNywgMzUsIDIsIDI0NiwgMTk3LCAyMTUsIDE0OCwgNzcsIDIyNywgMzUsIDIsIDIyNywgMTU5LCAKLSAgICAyMTUsIDE0OCwgNzcsIDI1MCwgNTUsIDIsIDIxMywgOTMsIDIzOCwgMTkzLCAyNTUsIDI3LCAyMTUsIDE0OCwgNzcsIDI1MCwgCi0gICAgNTUsIDIsIDI1NSwgMjQsIDE4NSwgNzcsIDI1MCwgNTUsIDIsIDIxNCwgMTc4LCAyMDgsIDAsIDc3LCAyLCAyMTYsIDE2MCwgCi0gICAgMjQzLCAxMjcsIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIAotICAgIDI0MywgMTI3LCAyMzcsIDIzMywgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMzgsIDE5MiwgNzcsIDIsIDIxNiwgMTYwLCAKLSAgICAyMjMsIDk5LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMTYsIDE2MCwgMjIzLCA5OCwgNzcsIDE3LCAKLSAgICAyMDIsIDg0LCA3NywgMTcsIDEwNSwgNzcsIDE3LCAxMDgsIDc3LCAxNywgMTQ3LCA3NywgMTcsIDE0OSwgNzcsIDE3LCAxNzAsIAotICAgIDc3LCAxNywgMTk1LCA3NywgMTcsIDIxMywgMTExLCA3NywgMTcsIDE5OSwgNzcsIDE3LCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgCi0gICAgMTA1LCA3NywgMTcsIDE2MiwgMTA4LCA3NywgMTcsIDE2MiwgMTQ3LCA3NywgMTcsIDE2MiwgMTQ5LCA3NywgMTcsIDE2MiwgCi0gICAgMTcwLCA3NywgMTcsIDE2MiwgMTk1LCA3NywgMTcsIDE2MiwgMjEzLCAxMTEsIDc3LCAxNywgMTYyLCAxOTksIDc3LCAxNywgCi0gICAgMTYyLCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgMjAyLCA4NCwgNzcsIDEzMSwgMjQ3LCAxOTgsIDIxNSwgMTQ4LCA3NywgMTMxLCAKLSAgICAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIyMCwgMjQ5LCAyMDIsIDE5LCA3NywgMTMxLCAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIAotICAgIDE0OSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMTMxLCAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIxMywgOTQsIAotICAgIDIxNSwgMTQ4LCA3NywgMTMxLCAyNDYsIDE3MSwgMjI0LCAxNzIsIDc3LCAxMzEsIDIwOCwgMjEsIDI1NSwgMjMsIDc3LCAKLSAgICAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxNzQsIDc3LCAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxODAsIAotICAgIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAxNzQsIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAKLSAgICAxODAsIDc3LCAyLCAyMDMsIDcyLCAyMDgsIDQsIDc3LCAyLCAyMjUsIDEwMSwgMjA4LCA0LCA3NywgMSwgMTczLCA3NywgMSwgCi0gICAgMjI5LCAxNDQsIDc3LCAxLCAyMzksIDgsIDc3LCAxLCAyMzgsIDExOSwgNzcsIDEsIDIyMiwgMjAzLCA3NywgMSwgMjQ3LCAKLSAgICA5MiwgNzcsIDEsIDI0NiwgMTk5LCA3NywgMSwgMjMwLCAxODEsIDc3LCAxLCAyMjEsIDExLCA3NywgMSwgMjA3LCAyNDEsIAotICAgIDc3LCAxLCAyMDcsIDIyOSwgNzcsIDEsIDI0NCwgMTIwLCA3NywgMSwgMjQ0LCAxMDQsIDc3LCAxLCAyMjEsIDIyNywgNzcsIAotICAgIDEsIDIxMCwgMjIsIDc3LCAxLCAyMDksIDEwOCwgNzcsIDEsIDI0NCwgMjEyLCA3NywgMSwgMjQ0LCAxLCA3NywgMSwgMjAxLCAKLSAgICAyMDEsIDc3LCAxLCAxODUsIDc3LCAxLCAyMTgsIDIwOCwgNzcsIDEsIDI0OSwgMzIsIDc3LCAxLCAyNDgsIDk4LCA3NywgMSwgCi0gICAgMTkyLCA3NywgMSwgMjA4LCAyMCwgNzcsIDEsIDIwOCwgMTAsIDc3LCAxLCAyNDEsIDI1NSwgNzcsIDEsIDI0MSwgMjQ5LCAKLSAgICA3NywgMSwgMjA0LCAxMTEsIDc3LCAxLCAyMDIsIDgwLCA3NywgMSwgMjAyLCAxMTYsIDc3LCAxLCAyNTUsIDI5LCA3NywgMSwgCi0gICAgMTk4LCA3NywgMSwgMjE2LCAyMjAsIDc3LCAxLCAyMjgsIDExMywgNzcsIDEsIDIxMywgOTAsIDc3LCAxLCAyMTEsIDE2NCwgCi0gICAgNzcsIDEsIDIxNSwgMzYsIDc3LCAxLCAxNTIsIDc3LCAxLCA2MywgNzcsIDEsIDIyOCwgMjIzLCA3NywgMSwgMjM5LCAyMjksIAotICAgIDIxNiwgMjIwLCA3NywgMSwgMjI5LCA0NywgNzcsIDEsIDIxNSwgMTg1LCA3NywgMjIsIDIsIDI1MiwgMjUsIDc3LCAyMiwgMiwgCi0gICAgNzUsIDc3LCAyMiwgMiwgMjMxLCA4MywgNzcsIDIyLCAyLCA2OCwgNzcsIDIyLCAyLCAyMDYsIDE3OCwgNzcsIDIyLCAyLCAKLSAgICAxMjUsIDE0NiwgNzcsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA3NywgMjIsIDIsIDEyNSwgMTU5LCA3NywgMjIsIDIsIDEyNSwgCi0gICAgMjI3LCA3OCwgNzcsIDIyLCAyLCA3NCwgNzcsIDIyLCAyLCAyNDEsIDE2MSwgNzcsIDIyLCAyLCA3OCwgNzcsIDIyLCAyLCAKLSAgICAyMjAsIDE4LCA3NywgMiwgMjE1LCAyMzgsIDIxMSwgMTEsIDIyMiwgMjA0LCAyMTUsIDIyNywgNzcsIDIsIDIxNSwgMjMyLCAKLSAgICAyNDgsIDE2MywgNzcsIDIyLCAyLCAyMTYsIDczLCA3NSwgNzcsIDIyLCAyLCAyMTYsIDczLCAyMzEsIDgzLCA3NywgMiwgCi0gICAgMjIwLCAyNDksIDIwMiwgMjAsIDIyMywgMTA3LCAyNDQsIDIxMiwgNzcsIDIsIDIxMiwgMjcsIDIyNywgMjM2LCA3NywgMTMxLCAKLSAgICAyMzcsIDEzOSwgNzcsIDEzMSwgMjE5LCAxMzIsIDc3LCAyLCAyMjcsIDIzOSwgMjE1LCAxNDgsIDc3LCAyLCAyMDMsIDc3LCAKLSAgICAyMTUsIDE0OCwgNzcsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCA3NywgMiwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIAotICAgIDIsIDIzNywgMjM2LCAyNDcsIDYyLCAyMTYsIDYzLCA3NywgMiwgMjM3LCAyMzYsIDIyNSwgMTQsIDIxNiwgNjMsIDc3LCAyLCAKLSAgICAyMzAsIDIzOSwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAyLCAyMjcsIDI0MCwgMjA4LCAyMSwgMjQ3LCA2MSwgCi0gICAgNzcsIDIxMCwgMjU0LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIzMCwgMjM5LCAyMjUsIDI0LCAKLSAgICAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDEsIDE3MywgNzcsIDIxMCwgMjU0LCAxLCAyMjksIDE0NCwgNzcsIDIxMCwgMjU0LCAKLSAgICAxLCAyMzksIDgsIDc3LCAyMTAsIDI1NCwgMSwgMjM4LCAxMTksIDc3LCAyMTAsIDI1NCwgMSwgMjIyLCAyMDMsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjQ3LCA5MiwgNzcsIDIxMCwgMjU0LCAxLCAyNDYsIDE5OSwgNzcsIDIxMCwgMjU0LCAxLCAyMzAsIDE4MSwgCi0gICAgNzcsIDIxMCwgMjU0LCAxLCAyMjEsIDExLCA3NywgMjEwLCAyNTQsIDEsIDIwNywgMjQxLCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDIwNywgMjI5LCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTIwLCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTA0LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDIyMSwgMjI3LCA3NywgMjEwLCAyNTQsIDEsIDIxMCwgMjIsIDc3LCAyMTAsIDI1NCwgMSwgMjA5LCAxMDgsIAotICAgIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAyMTIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxLCA3NywgMjEwLCAyNTQsIDEsIDIwMSwgCi0gICAgMjAxLCA3NywgMjEwLCAyNTQsIDEsIDE4NSwgNzcsIDIxMCwgMjU0LCAxLCAyMTgsIDIwOCwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAyNDksIDMyLCA3NywgMjEwLCAyNTQsIDEsIDI0OCwgOTgsIDc3LCAyMTAsIDI1NCwgMSwgMTkyLCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDIwOCwgMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjA4LCAxMCwgNzcsIDIxMCwgMjU0LCAxLCAyNDEsIDI1NSwgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyNDEsIDI0OSwgNzcsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDIsIDgwLCAKLSAgICA3NywgMjEwLCAyNTQsIDEsIDIwMiwgMTE2LCA3NywgMjEwLCAyNTQsIDEsIDI1NSwgMjksIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMTk4LCA3NywgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCA3NywgMjEwLCAyNTQsIDEsIDIyOCwgMTEzLCA3NywgMjEwLCAyNTQsIAotICAgIDEsIDIxMywgOTAsIDc3LCAyMTAsIDI1NCwgMSwgMjExLCAxNjQsIDc3LCAyMTAsIDI1NCwgMSwgMjE1LCAzNiwgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAxNTIsIDc3LCAyMTAsIDI1NCwgMSwgNjMsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAyMjMsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjM5LCAyMjksIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIzOSwgMjI5LCAxOTgsIDc3LCAyMTAsIDI1NCwgCi0gICAgMSwgMjM5LCAyMjksIDIxNiwgMjIwLCA3NywgMjI4LCAyMTAsIDIxNSwgMTQ2LCAyMjksIDE0NCwgNzcsIDIyOCwgMjEwLCAKLSAgICAyMTUsIDE0NiwgMjI5LCAxNDUsIDI0NywgMTI4LCAyMjQsIDEyNiwgMjQ3LCA2MSwgNzcsIDI0NywgNDksIDIsIDc5LCAyNDgsIAotICAgIDE1NSwgNzcsIDI0NywgNDksIDIsIDE1NywgMjQ4LCAxNTUsIDc3LCAyNDcsIDQ5LCAyLCAyNDcsIDUwLCAyMDksIDE4NSwgCi0gICAgNzcsIDI0NywgNDksIDIsIDIxNCwgMjA0LCAyNTUsIDI4LCA3NywgMTYsIDI0MiwgNTUsIDI0NywgMTkzLCA3NywgMTYsIAotICAgIDIxNiwgMTU5LCAyMTUsIDIzOSwgNzcsIDE2LCAyMTksIDE1NSwgMjM4LCAxOTEsIDc3LCAxNiwgMjE2LCAxNTksIDIxNSwgCi0gICAgMjQwLCAyMTYsIDY1LCAyMzgsIDgsIDc3LCAxNiwgMjE4LCAxNzEsIDE4NSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTMsIAotICAgIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyMjAsIDIzOCwgMjU1LCAyNSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAKLSAgICAxOTQsIDIzNywgMjM0LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5NCwgMjQ3LCAxMjgsIDI1NSwgMjUsIAotICAgIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgMjE2LCAxNjAsIDI0MywgMTI2LCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIAotICAgIDIzNywgMjMzLCA3NywgMTMxLCAyNDcsIDE5NywgMjEyLCAyMzgsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgCi0gICAgMTMxLCAyMjQsIDg0LCAyMDMsIDMsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgMTMxLCAyMjAsIDIzOCwgMjA4LCAKLSAgICA1LCA3NywgMTMxLCA4MSwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAKLSAgICAxMzEsIDI0NiwgMTIsIDI0NywgMjIwLCAyMTUsIDIyOSwgMjAzLCAzLCAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCAyMTYsIAotICAgIDE1LCAyMTAsIDE3NCwgNTQsIDIyNywgMjIxLCAyMTAsIDE3NCwgNTQsIDIxNiwgMTUsIDIxMCwgMTc0LCAyLCAzLCAyNDMsIAotICAgIDgzLCAyMjcsIDIyMSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgODMsIDc3LCAxMzEsIDIyNywgMjMxLCAyMjUsIDI1LCAyMTUsIAotICAgIDE0OCwgNzcsIDEzMSwgMjA4LCAxMTIsIDIyNSwgMjUsIDIxNSwgMTQ4LCA2OSwgMSwgMTczLCA2OSwgMSwgMjI5LCAxNDQsIAotICAgIDY5LCAxLCAyMzksIDgsIDY5LCAxLCAyMzgsIDExOSwgNjksIDEsIDIyMiwgMjAzLCA2OSwgMSwgMjQ3LCA5MiwgNjksIDEsIAotICAgIDI0NiwgMTk5LCA2OSwgMSwgMjMwLCAxODEsIDY5LCAxLCAyMzAsIDE0OSwgNjksIDEsIDIyMSwgMTEsIDY5LCAxLCAyMjEsIAotICAgIDE5MywgNjksIDEsIDIwNywgMjQxLCA2OSwgMSwgMjA3LCAyMjksIDY5LCAxLCAyNDQsIDEyMCwgNjksIDEsIDI0NCwgMTA0LCAKLSAgICA2OSwgMSwgMjIxLCAyMjcsIDY5LCAxLCAyMTAsIDIyLCA2OSwgMSwgMjA5LCAxMDgsIDY5LCAxLCAyNDQsIDIxMiwgNjksIDEsIAotICAgIDI0NCwgMSwgNjksIDEsIDIwMSwgMjAxLCA2OSwgMSwgMTg1LCA2OSwgMSwgMjE4LCAyMDgsIDY5LCAxLCAyNDksIDMyLCA2OSwgCi0gICAgMSwgMjQ4LCA5OCwgNjksIDEsIDE5MiwgNjksIDEsIDE5OCwgNjksIDEsIDIxNiwgMjIwLCA2OSwgMSwgMjI4LCAxMTMsIDY5LCAKLSAgICAxLCAyMDQsIDExMSwgNjksIDEsIDIxNSwgMzYsIDY5LCAxLCAxNTIsIDY5LCAxLCAyMjcsIDc3LCA2OSwgMSwgNjMsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCA2MywgNjksIDEsIDc1LCA2OSwgMSwgMjMxLCA4MywgNjksIDEsIDY4LCA2OSwgMSwgMjA2LCAxNzgsIAotICAgIDY5LCAxLCA3NCwgNjksIDEsIDIyNCwgNTUsIDc0LCA2OSwgMSwgNzgsIDY5LCAxLCAyNTAsIDM0LCA2OSwgMjIsIDIsIDIwOSwgCi0gICAgMjM0LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDI1MiwgMjUsIDY5LCAyMiwgMiwgNzUsIDY5LCAyMiwgMiwgMjMxLCA4MywgNjksIAotICAgIDIyLCAyLCA2OCwgNjksIDIyLCAyLCAyMDYsIDE3OCwgNjksIDIyLCAyLCA3NCwgNjksIDIyLCAyLCAyNTEsIDY0LCA2OSwgCi0gICAgMjIsIDIsIDIyNCwgNTUsIDIzMSwgODMsIDY5LCAyMiwgMiwgMjI0LCA1NSwgNzgsIDY5LCAyMiwgMiwgMTg4LCA1NSwgNjksIAotICAgIDIsIDI1MCwgMTgwLCA2OSwgMiwgNzAsIDU2LCA2OSwgMiwgMjA1LCAxOTksIDY5LCAyLCAyMDUsIDIwNCwgNjksIDIsIDI1MCwgCi0gICAgNzksIDY5LCAxMDksIDIsIDE3NCwgMTk4LCA2OSwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA2OSwgMTA5LCAyLCAxNzQsIAotICAgIDIwNCwgMTExLCA2OSwgMTA5LCAyLCAxNzQsIDE1MiwgNjksIDEsIDIzNywgMjQ5LCAyMTUsIDM2LCA2OSwgMTcsIDIwMiwgCi0gICAgODQsIDY5LCAxNywgMTA1LCA2OSwgMTcsIDEwOCwgNjksIDE3LCAxNDcsIDY5LCAxNywgMTQ5LCA2OSwgMTcsIDE3MCwgNjksIAotICAgIDE3LCAxOTUsIDY5LCAxNywgMjEzLCAxMTEsIDY5LCAxNywgMTk5LCA2OSwgMTcsIDIyMiwgNjMsIDY5LCAyLCAyMjcsIDg2LCAKLSAgICAyMTQsIDE2NywgNjksIDIsIDIxNCwgMTY3LCA2OSwgMTYsIDIyNywgNDQsIDY5LCAxNiwgMjQ1LCAyMjcsIDY5LCAxNiwgCi0gICAgMjUxLCA4NSwgNjksIDE2LCAyMzgsIDE3NCwgNjksIDEsIDIxMywgOTAsIDY5LCAxLCAyMTEsIDE2NCwgNjksIDEsIDEyNSwgCi0gICAgMTQ2LCA2OSwgMSwgMTI1LCAyMTUsIDE4NiwgNjksIDEsIDEyNSwgMTU5LCA2OSwgMSwgMTI1LCAyMjcsIDc4LCA2OSwgMjIsIAotICAgIDIsIDEyNSwgMTQ2LCA2OSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDY5LCAyMiwgMiwgMTI1LCAxNTksIDY5LCAyMiwgMiwgCi0gICAgMTI1LCAyMjcsIDc4LCA2OSwgMSwgMjI0LCA1NSwgMjIyLCAyMDMsIDY5LCAxLCAyMjQsIDU1LCAyMzAsIDE0OSwgNjksIDEsIAotICAgIDIyNCwgNTUsIDI0OCwgMTk4LCA2OSwgMSwgMjI0LCA1NSwgMjQ4LCAxOTMsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgCi0gICAgMjAxLCAyMDEsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMTkyLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIDIyOCwgCi0gICAgMTEzLCA2OSwgMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIxMywgOTAsIDY5LCAyMiwgMiwgMjEzLCA5NiwgMjI5LCAyMzcsIAotICAgIDI0MCwgMjM4LCA2OSwgMTQzLCAxMzEsIDIxMywgOTYsIDIyOSwgMjM3LCAyMzcsIDc5LCA2OSwgMTQzLCAxMzEsIDIxMywgCi0gICAgOTYsIDIyOSwgMjM3LCAyMjksIDIwMiwgMjE4LCAxODAsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIAotICAgIDIwOSwgMTA4LCA2OSwgMSwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMTcsIDE1MiwgNjksIDIyLCAyLCAyMDQsIAotICAgIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDI0MCwgMjM4LCA2OSwgMjIsIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCi0gICAgMjA3LCAyNCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNjAsIDY5LCAyLCAyMDQsIDQ0LCAKLSAgICAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU5LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIAotICAgIDE1OCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTcsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIAotICAgIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjIxLCAyMjcsIAotICAgIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDIsIDE3NiwgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgCi0gICAgMjI5LCAyMzcsIDIzOCwgODQsIDY5LCAyMiwgMiwgMjM4LCAxODYsIDIyOSwgMjM3LCA3NSwgNjksIDIyLCAyLCAyMjksIAotICAgIDIwNywgMjIwLCA3MywgNjksIDIyLCAyLCAyMjksIDIwNywgNjgsIDY5LCAyMiwgMiwgMjI5LCAyMDcsIDI0MSwgMTYxLCA2OSwgCi0gICAgMSwgMjEzLCA2NywgMTczLCA2OSwgMSwgMjEzLCA2NywgMjI5LCAxNDQsIDY5LCAxLCAyMTMsIDY3LCAyMzksIDgsIDY5LCAxLCAKLSAgICAyMTMsIDY3LCAyNDcsIDkyLCA2OSwgMSwgMjEzLCA2NywgMjAyLCAxMTYsIDY5LCAxLCAyMTMsIDY3LCAyMjEsIDExLCA2OSwgCi0gICAgMSwgMjEzLCA2NywgMjQ0LCAyMTIsIDY5LCAxLCAyMTMsIDY3LCAyMDEsIDIwMSwgNjksIDEsIDIxMywgNjcsIDIxOCwgMjA4LCAKLSAgICA2OSwgMSwgMjEzLCA2NywgMjQwLCAxMDgsIDY5LCAxLCAyMTMsIDY3LCAyNDksIDMyLCA2OSwgMSwgMjEzLCA2NywgMjA5LCAKLSAgICAxMDgsIDY5LCAxLCAyMTMsIDY3LCAxNTIsIDY5LCAxMDksIDIsIDIxMywgNjcsIDE3NCwgMjA0LCAxMTEsIDY5LCAyMiwgMiwgCi0gICAgMjEzLCA2NywgMjUyLCAyNSwgNjksIDIyLCAyLCAyMTMsIDY3LCA3NCwgNjksIDIyLCAyLCAyMTMsIDY3LCAxODgsIDU1LCAKLSAgICA2OSwgMjIsIDIsIDIxMywgNjcsIDQ2LCAyMDMsIDEyNCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCAKLSAgICA2NywgMjA4LCAxNTgsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1NiwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU1LCA2OSwgMiwgCi0gICAgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU4LCA2OSwgMiwgCi0gICAgMjEzLCA2NywgMjQ1LCAxNTYsIDI0MSwgOTUsIDIwOCwgMTYxLCA2OSwgMSwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyNDAsIAotICAgIDEwOCwgNjksIDIsIDIxNSwgMTMwLCAyMTksIDEzOSwgMjA4LCAxNTYsIDY5LCAyMTMsIDY3LCAxNywgMjAyLCA4NCwgNjksIAotICAgIDIxMywgNjcsIDE3LCAxMDUsIDY5LCAyMTMsIDY3LCAxNywgMTA4LCA2OSwgMjEzLCA2NywgMTcsIDE0NywgNjksIDIxMywgCi0gICAgNjcsIDE3LCAxNDksIDY5LCAyMTMsIDY3LCAxNywgMTcwLCA2OSwgMjEzLCA2NywgMTcsIDE5NSwgNjksIDIxMywgNjcsIDE3LCAKLSAgICAyMTMsIDExMSwgNjksIDIxMywgNjcsIDE3LCAxOTksIDY5LCAyMTMsIDY3LCAxNywgMjIyLCA2MywgNjksIDIsIDIyOSwgCi0gICAgMTM3LCAyMDgsIDE2MCwgNjksIDIsIDIyOSwgMTM3LCAyMDgsIDE1OCwgNjksIDIyLCAyLCAyNTEsIDUxLCA2MywgNjksIDIyLCAKLSAgICAyLCAyNTEsIDUxLCAyNTEsIDY0LCA2OSwgMTYsIDIxMywgNjcsIDEwNSwgNjksIDE2LCAyMTMsIDY3LCAyNDAsIDIxMSwgCi0gICAgMTE0LCA2LCAxLCAyNTAsIDIzMSwgMTE0LCA2LCAxLCAyNDgsIDI0MiwgMTE0LCA2LCAxLCAyMzgsIDIzNCwgMTE0LCA2LCAxLCAKLSAgICAyNDMsIDkzLCAxMTQsIDYsIDEsIDI0MSwgOTIsIDExNCwgNiwgMSwgMjA1LCAyMTMsIDExNCwgNiwgMSwgMjAyLCA4NywgCi0gICAgMTE0LCA2LCAxLCAyMDksIDIzMCwgMTE0LCA2LCAxLCAyMzEsIDQ5LCAxMTQsIDYsIDEsIDIzMCwgNCwgMTE0LCA2LCAxLCAKLSAgICAyMjgsIDIsIDExNCwgNiwgMSwgMjI1LCAxMjIsIDExNCwgNiwgMSwgMjIzLCA3NCwgMTE0LCA2LCAxLCAyMjAsIDMxLCAxMTQsIAotICAgIDYsIDEsIDIxOSwgOTEsIDExNCwgNiwgMSwgMjAyLCA3NiwgMTE0LCA2LCAxLCAyMTYsIDIwMiwgMTE0LCA2LCAxLCAyMTQsIAotICAgIDI0MywgMTE0LCA2LCAxLCAyMDksIDIxOCwgMTE0LCA2LCAxLCAyMDYsIDI1NSwgMTE0LCA2LCAxLCAyMTgsIDIwMCwgMTE0LCAKLSAgICA2LCAxLCAyMjksIDEzMiwgMTE0LCA2LCAxLCAyMzgsIDExMCwgMTE0LCA2LCAxLCAyMTcsIDExMSwgMTE0LCA2LCAxLCAyMTIsIAotICAgIDI1NSwgMTE0LCA2LCAxLCAyNDYsIDEyOSwgMTE0LCA2LCAxLCAyNDcsIDYxLCAxMTQsIDYsIDEsIDIzMCwgMTMzLCAxMTQsIAotICAgIDYsIDEsIDI0NiwgNjgsIDExNCwgNiwgMSwgMjQ2LCAxODMsIDExNCwgNiwgMSwgMjAzLCAxODAsIDExNCwgNiwgMSwgMjMwLCAKLSAgICAxNDYsIDExNCwgNiwgMSwgMjM3LCAxNTQsIDExNCwgNiwgMSwgMjM3LCA2NywgMTE0LCA2LCAxLCAyMzYsIDI1NCwgMTE0LCAKLSAgICA2LCAxLCAyMDQsIDYyLCAxMTQsIDYsIDEsIDIzNywgOTIsIDExNCwgNiwgMSwgMjM2LCAxMzIsIDExNCwgNiwgMSwgMjAyLCAKLSAgICAyNDksIDExNCwgNiwgMSwgMjUxLCA5OCwgMTE0LCAxLCAyNTAsIDIzMSwgMTE0LCAxLCAyNDgsIDI0MiwgMTE0LCAxLCAyMzgsIAotICAgIDIzNCwgMTE0LCAxLCAyNDMsIDkzLCAxMTQsIDEsIDI0MSwgOTIsIDExNCwgMSwgMjA1LCAyMTMsIDExNCwgMSwgMjAyLCA4NywgCi0gICAgMTE0LCAxLCAyMDksIDIzMCwgMTE0LCAxLCAyMzEsIDQ5LCAxMTQsIDEsIDIzMCwgNCwgMTE0LCAxLCAyMjgsIDIsIDExNCwgCi0gICAgMSwgMjI1LCAxMjIsIDExNCwgMSwgMjIzLCA3NCwgMTE0LCAxLCAyMjAsIDMxLCAxMTQsIDEsIDIxOSwgOTEsIDExNCwgMSwgCi0gICAgMjAyLCA3NiwgMTE0LCAxLCAyMTYsIDIwMiwgMTE0LCAxLCAyMTQsIDI0MywgMTE0LCAxLCAyMDksIDIxOCwgMTE0LCAxLCAKLSAgICAyMDYsIDI1NSwgMTE0LCAxLCAyMTgsIDIwMCwgMTE0LCAxLCAyMjksIDEzMiwgMTE0LCAxLCAyMzgsIDExMCwgMTE0LCAxLCAKLSAgICAyMTcsIDExMSwgMTE0LCAxLCAyMTIsIDI1NSwgMTE0LCAxLCAyNDYsIDEyOSwgMTE0LCAxLCAyNDcsIDYxLCAxMTQsIDEsIAotICAgIDIzMCwgMTMzLCAxMTQsIDEsIDI0NiwgNjgsIDExNCwgMSwgMjQ2LCAxODMsIDExNCwgMSwgMjAzLCAxODAsIDExNCwgMSwgCi0gICAgMjMwLCAxNDYsIDExNCwgMSwgMjM3LCAxNTQsIDExNCwgMSwgMjM3LCA2NywgMTE0LCAxLCAyMzYsIDI1NCwgMTE0LCAxLCAKLSAgICAyMDQsIDYyLCAxMTQsIDEsIDIzNywgOTIsIDExNCwgMSwgMjM2LCAxMzIsIDExNCwgMSwgMjQwLCAyNiwgMTE0LCAxLCAyMDIsIAotICAgIDI0OSwgMTE0LCAxLCAyNDEsIDExMCwgMTE0LCAxLCAyMDcsIDE3NCwgMjM4LCAyMzQsIDExNCwgMSwgMjUxLCA1OSwgMTE0LCAKLSAgICAyMTksIDg5LCAyMTMsIDEzMCwgNjUsIDEsIDExNCwgMjIzLCA3NCwgMTE0LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDIzNywgOTEsIAotICAgIDU0LCAxMTQsIDEsIDIyOCwgMTA0LCA1NCwgMjgsIDEyMywgMjI5LCA1OSwgMjgsIDEyMywgMjExLCAxNTYsIDI4LCAxMjMsIAotICAgIDIyMiwgOTMsIDI4LCAxMjMsIDIwOCwgMjQwLCAyOCwgMTIzLCAyMTEsIDE0NSwgMjgsIDEyMywgMjE2LCA0NywgMjgsIDEyMywgCi0gICAgMjI0LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUzLCAyOCwgMTIzLCAyMTEsIDE1MywgMjgsIDEyMywgMjEyLCAxMTEsIDI4LCAKLSAgICAxMjMsIDIxMSwgMTUwLCAyOCwgMTIzLCAyMzEsIDEwNiwgMjgsIDEyMywgMjQ2LCA3NCwgMjgsIDEyMywgMjExLCAxNjAsIAotICAgIDI4LCAxMjMsIDI0NiwgMTM4LCAyOCwgMTIzLCAyMjksIDEyMCwgMjgsIDEyMywgMjA5LCA2NiwgMjgsIDEyMywgMjE4LCAKLSAgICAxOTAsIDI4LCAxMjMsIDIzNiwgMjUxLCAyOCwgMTIzLCAyMjIsIDg5LCAyOCwgMTIzLCAyMTEsIDE1NCwgMjgsIDEyMywgCi0gICAgMjIyLCA4MywgMjgsIDEyMywgMjIyLCA4NywgMjgsIDEyMywgMjA4LCAyMzcsIDI4LCAxMjMsIDIxNiwgMzUsIDI4LCAxMjMsIAotICAgIDIxMSwgMTUyLCAyOCwgMTIzLCAyMTYsIDQ1LCAyOCwgMTIzLCAyMjksIDI0MywgMjgsIDEyMywgMjI0LCAxMzQsIDI4LCAKLSAgICAxMjMsIDIyOSwgMjQ2LCAyOCwgMTIzLCAyMTgsIDE0OCwgMjgsIDEyMywgMjE4LCAxNDYsIDI4LCAxMjMsIDIxOCwgMTM0LCAKLSAgICAyOCwgMTIzLCAyMTgsIDE0MiwgMjgsIDEyMywgMjE4LCAxNDAsIDI4LCAxMjMsIDIxOCwgMTM3LCAyOCwgMTIzLCAyMTgsIAotICAgIDEzOSwgMjgsIDEyMywgMjE4LCAxMzYsIDI4LCAxMjMsIDIxOCwgMTQxLCAyOCwgMTIzLCAyMTgsIDE1MSwgMjgsIDEyMywgCi0gICAgMjE4LCAxNTIsIDI4LCAxMjMsIDIxOCwgMTM1LCAyOCwgMTIzLCAyMTgsIDE0NSwgMjgsIDEyMywgMjI5LCAyNDQsIDI4LCAKLSAgICAxMjMsIDIyOSwgMjQyLCAyOCwgMTIzLCAyMTIsIDEwNCwgMjgsIDEyMywgMjEyLCAxMDIsIDI4LCAxMjMsIDIxMiwgOTQsIAotICAgIDI4LCAxMjMsIDIxMiwgOTcsIDI4LCAxMjMsIDIxMiwgMTAzLCAyOCwgMTIzLCAyMTIsIDk5LCAyOCwgMTIzLCAyMTIsIDk4LCAKLSAgICAyOCwgMTIzLCAyMTIsIDk2LCAyOCwgMTIzLCAyMTIsIDEwNywgMjgsIDEyMywgMjEyLCAxMDksIDI4LCAxMjMsIDIxMiwgCi0gICAgMTEwLCAyOCwgMTIzLCAyMTIsIDEwNSwgMjgsIDEyMywgMjEyLCA5NSwgMjgsIDEyMywgMjEyLCAxMDAsIDI4LCAxMjMsIAotICAgIDIxMiwgMTA4LCAyOCwgMTIzLCAyNDYsIDEyMCwgMjgsIDEyMywgMjQ2LCAxMTgsIDI4LCAxMjMsIDI0NiwgMjEwLCAyOCwgCi0gICAgMTIzLCAyNDYsIDIwOCwgMjgsIDEyMywgMjE5LCAxMDcsIDI4LCAxMjMsIDIzMSwgMTAxLCAyOCwgMTIzLCAyMzEsIDkyLCAKLSAgICAyOCwgMTIzLCAyMzEsIDEwMCwgMjgsIDEyMywgMjMxLCA5NywgMjgsIDEyMywgMjMxLCA5NSwgMjgsIDEyMywgMjMxLCA5OSwgCi0gICAgMjgsIDEyMywgMjExLCAxNTcsIDI4LCAxMjMsIDIzMSwgMTA0LCAyOCwgMTIzLCAyMzEsIDEwNSwgMjgsIDEyMywgMjMxLCAKLSAgICA5MywgMjgsIDEyMywgMjMxLCA5OCwgMjgsIDEyMywgMjAzLCAyOSwgMjgsIDEyMywgMjQ2LCA3MywgMjgsIDEyMywgMjQ2LCAKLSAgICAxMjEsIDI4LCAxMjMsIDI0NiwgMTE5LCAyOCwgMTIzLCAyNDYsIDIxMSwgMjgsIDEyMywgMjQ2LCAyMDksIDI4LCAxMjMsIAotICAgIDI0NiwgMTM2LCAyOCwgMTIzLCAyNDYsIDEzNywgMjgsIDEyMywgMjQ2LCAxMjIsIDI4LCAxMjMsIDI0NiwgMjEyLCAyOCwgCi0gICAgMTIzLCAyMTgsIDE4OCwgMjgsIDEyMywgMjI5LCAyNDUsIDI4LCAxMjMsIDIxMSwgMTU4LCAyOCwgMTIzLCAyMDMsIDM1LCAKLSAgICAyOCwgMTIzLCAyMjksIDUwLCAyOCwgMTIzLCAyMjIsIDg1LCAyOCwgMTIzLCAyMjIsIDkxLCAyOCwgMTIzLCAyMjIsIDkwLCAKLSAgICAyOCwgMTIzLCAyMDgsIDIzNCwgMjgsIDEyMywgMjQwLCA3LCAyOCwgMTc2LCAyNDAsIDcsIDI4LCAxNzYsIDYzLCAyOCwgCi0gICAgMTc2LCAyNTEsIDEwOSwgMjgsIDE3NiwgMTk4LCAyOCwgMTc2LCAyMDMsIDk5LCAyOCwgMTc2LCAyNDEsIDU1LCAyOCwgMTc2LCAKLSAgICA3NCwgMjgsIDE3NiwgMjAzLCAzOSwgMjgsIDE3NiwgMjAzLCA1MiwgMjgsIDE3NiwgNzgsIDI4LCAxNzYsIDIwNCwgMTExLCAKLSAgICAyOCwgMTc2LCAyMDQsIDEwNywgMjgsIDE3NiwgMjIwLCA3MywgMjgsIDE3NiwgMjAyLCAyNDcsIDI4LCAxNzYsIDY4LCAyOCwgCi0gICAgMTc2LCAyMDQsIDQ4LCAyOCwgMTc2LCAyMDQsIDYyLCAyOCwgMTc2LCAyMDQsIDMwLCAyOCwgMTc2LCAyMDIsIDIxMywgMjgsIAotICAgIDE3NiwgMjQwLCAyMzgsIDI4LCAxNzYsIDIwMywgMTEsIDI4LCAxNzYsIDc1LCAyOCwgMTc2LCAyNTUsIDIwLCAyOCwgMTc2LCAKLSAgICAyNTUsIDE5LCAyOCwgMTc2LCAyMDMsIDExMywgMjgsIDE3NiwgMjAzLCAxMTEsIDI4LCAxNzYsIDI0MSwgNTMsIDI4LCAxNzYsIAotICAgIDI0MSwgNTIsIDI4LCAxNzYsIDI0MSwgNTQsIDI4LCAxNzYsIDIwMywgMzgsIDI4LCAxNzYsIDIwMywgMzcsIDI4LCAxNzYsIAotICAgIDIyMCwgMTgxLCAyOCwgMTc2LCAyMjAsIDE4MiwgMjgsIDE3NiwgMjIwLCAxNzUsIDI4LCAxNzYsIDIyMCwgMTgwLCAyOCwgCi0gICAgMTc2LCAyMjAsIDE3OCwgMjgsIDE3NiwgMjAyLCAyNDEsIDI4LCAxNzYsIDIwMiwgMjQwLCAyOCwgMTc2LCAyMDIsIDIzOSwgCi0gICAgMjgsIDE3NiwgMjAyLCAyNDIsIDI4LCAxNzYsIDIwMiwgMjQzLCAyOCwgMTc2LCAyMDcsIDk3LCAyOCwgMTc2LCAyMDcsIDk2LCAKLSAgICAyOCwgMTc2LCAyMDcsIDk0LCAyOCwgMTc2LCAyMDcsIDkwLCAyOCwgMTc2LCAyMDcsIDkxLCAyOCwgMTc2LCAyMDIsIDIxMiwgCi0gICAgMjgsIDE3NiwgMjAyLCAyMDksIDI4LCAxNzYsIDIwMiwgMjEwLCAyOCwgMTc2LCAyMDIsIDIwNCwgMjgsIDE3NiwgMjAyLCAKLSAgICAyMDUsIDI4LCAxNzYsIDIwMiwgMjA2LCAyOCwgMTc2LCAyMDIsIDIwOCwgMjgsIDE3NiwgMjQwLCAyMzIsIDI4LCAxNzYsIAotICAgIDI0MCwgMjM0LCAyOCwgMTc2LCAyMDMsIDEwLCAyOCwgMTc2LCAyMzUsIDIwNSwgMjgsIDE3NiwgMjM1LCAxOTcsIDI4LCAKLSAgICAxNzYsIDIzNSwgMjAwLCAyOCwgMTc2LCAyMzUsIDE5OCwgMjgsIDE3NiwgMjM1LCAyMDIsIDI4LCAxNzYsIDIzNSwgMjA0LCAKLSAgICAyOCwgMTc2LCAyNTAsIDEzNywgMjgsIDE3NiwgMjUwLCAxMzQsIDI4LCAxNzYsIDI1MCwgMTMyLCAyOCwgMTc2LCAyNTAsIAotICAgIDEzMywgMjgsIDE3NiwgMjExLCAxNjEsIDI4LCAxNzYsIDI1NSwgMjEsIDI4LCAxNzYsIDIwMywgMTEyLCAyOCwgMTc2LCAKLSAgICAyMDMsIDM2LCAyOCwgMTc2LCAyMjAsIDE3NywgMjgsIDE3NiwgMjIwLCAxNzYsIDI4LCAxMDcsIDIyOSwgNTksIDI4LCAxMDcsIAotICAgIDIxMSwgMTU2LCAyOCwgMTA3LCAyMjksIDUyLCAyOCwgMTA3LCAyMjIsIDkzLCAyOCwgMTA3LCAyMjIsIDkxLCAyOCwgMTA3LCAKLSAgICAyMjIsIDkwLCAyOCwgMTA3LCAyMDgsIDI0MCwgMjgsIDEwNywgMjE2LCA0NywgMjgsIDEwNywgMjE2LCA0MiwgMjgsIDEwNywgCi0gICAgMjE2LCAzOSwgMjgsIDEwNywgMjE2LCAzMiwgMjgsIDEwNywgMjE2LCAyNywgMjgsIDEwNywgMjE2LCAyMiwgMjgsIDEwNywgCi0gICAgMjE2LCAzMywgMjgsIDEwNywgMjE2LCA0NSwgMjgsIDEwNywgMjI0LCAxNDEsIDI4LCAxMDcsIDIxOCwgMTUzLCAyOCwgMTA3LCAKLSAgICAyMTgsIDE0MiwgMjgsIDEwNywgMjEyLCAxMTEsIDI4LCAxMDcsIDIxMSwgMTUwLCAyOCwgMTA3LCAyMzEsIDEwNiwgMjgsIAotICAgIDEwNywgMjQ2LCA3NCwgMjgsIDEwNywgMjQ2LCAxMzgsIDI4LCAxMDcsIDIyOSwgMTIwLCAyOCwgMTA3LCAyMDksIDY2LCAyOCwgCi0gICAgMTA3LCAyMTgsIDE5MCwgMjgsIDEwNywgMjM2LCAyNTEsIDI4LCAxMDcsIDIyOSwgNTMsIDI4LCAxMDcsIDIyOSwgNTEsIDI4LCAKLSAgICAxMDcsIDIyMiwgODksIDI4LCAxMDcsIDIyMiwgODMsIDI4LCAxMDcsIDIyMiwgODUsIDI4LCAxMDcsIDIyMiwgODgsIDI4LCAKLSAgICAxMDcsIDIyMiwgODQsIDI4LCAxMDcsIDIwOCwgMjM3LCAyOCwgMTA3LCAyMDgsIDIzNCwgMjgsIDEwNywgMjE2LCA0MCwgMjgsIAotICAgIDEwNywgMjE2LCAzNSwgMjgsIDEwNywgMjE2LCAyMSwgMjgsIDEwNywgMjE2LCAyMCwgMjgsIDEwNywgMjExLCAxNTIsIDI4LCAKLSAgICAxMDcsIDIxNiwgMzcsIDI4LCAxMDcsIDIxNiwgMzYsIDI4LCAxMDcsIDIxNiwgMjksIDI4LCAxMDcsIDIxNiwgMzEsIDI4LCAKLSAgICAxMDcsIDIxNiwgNDQsIDI4LCAxMDcsIDIxNiwgMjQsIDI4LCAxMDcsIDIxNiwgMzQsIDI4LCAxMDcsIDIxNiwgNDMsIDI4LCAKLSAgICAxMDcsIDIxNiwgMTksIDI4LCAxMDcsIDIyNCwgMTM3LCAyOCwgMTA3LCAyMjQsIDEzMiwgMjgsIDEwNywgMjI0LCAxMzQsIAotICAgIDI4LCAxMDcsIDIyNCwgMTMxLCAyOCwgMTA3LCAyMjQsIDEyOSwgMjgsIDEwNywgMjI0LCAxMzUsIDI4LCAxMDcsIDIyNCwgCi0gICAgMTQwLCAyOCwgMTA3LCAyMjQsIDEzOCwgMjgsIDEwNywgMjI5LCAyNDYsIDI4LCAxMDcsIDIxOCwgMTQ0LCAyOCwgMTA3LCAKLSAgICAyMTgsIDE0NSwgMjgsIDEwNywgMjE4LCAxNTAsIDI4LCAxMDcsIDIyOSwgMjQ0LCAyOCwgMTA3LCAyMTIsIDEwNCwgMjgsIAotICAgIDEwNywgMjEyLCA5NCwgMjgsIDEwNywgMjEyLCA5NywgMjgsIDEwNywgMjEyLCA5OSwgMjgsIDEwNywgMjE5LCAxMDcsIDI4LCAKLSAgICAxMDcsIDIzMSwgMTAxLCAyOCwgMTA3LCAyMzEsIDk0LCAyOCwgMTA3LCAyMTEsIDE1NywgMjgsIDEwNywgMjMxLCAxMDIsIAotICAgIDI4LCAxMDcsIDIwMywgMjksIDI4LCAxMDcsIDIwMywgMjUsIDI4LCAxMDcsIDIwMywgMjYsIDI4LCAxMDcsIDIxOCwgMTg4LCAKLSAgICAyOCwgMTA3LCAyMjksIDI0NSwgMjgsIDEwNywgMjM2LCAyNDksIDI4LCAxMDcsIDIzNiwgMjQ3LCAyOCwgMTA3LCAyMzYsIAotICAgIDI1MCwgMjgsIDEwNywgMjM2LCAyNDgsIDI4LCAxMDcsIDIwMywgMzUsIDI4LCAxMDcsIDIyOSwgNTUsIDI4LCAxMDcsIDIyOSwgCi0gICAgNTQsIDI4LCAxMDcsIDIyOSwgNTgsIDI4LCAxMDcsIDIyOSwgNTYsIDI4LCAxMDcsIDIyOSwgNTcsIDI4LCAxMDcsIDIxMSwgCi0gICAgMTU0LCAzMywgNCwgMTUyLCAzMywgNCwgMjM2LCAyNiwgMzMsIDQsIDIzNywgMywgMzMsIDQsIDIzNywgMTU3LCAzMywgNCwgCi0gICAgMjM3LCA0OCwgMzMsIDQsIDIzNywgNjcsIDMzLCA0LCAyMzYsIDEzNiwgMzMsIDQsIDIzNiwgMTM1LCAzMywgNCwgMjI4LCAKLSAgICAxMTMsIDMzLCA0LCAyMjYsIDIzOSwgMzMsIDQsIDIyNywgMTQ4LCAzMywgNCwgMjI4LCAxMTIsIDMzLCA0LCAyMjcsIDIyNiwgCi0gICAgMzMsIDQsIDIyNywgMjM0LCAzMywgNCwgMjI3LCA0OSwgMzMsIDQsIDIyNiwgMjA3LCAzMywgNCwgMjM3LCAxMiwgMzMsIDQsIAotICAgIDIzNywgNiwgMzMsIDQsIDIzNywgOCwgMzMsIDQsIDIzNywgMTEsIDMzLCA0LCAyMzcsIDksIDMzLCA0LCAyMzcsIDEwLCAzMywgCi0gICAgNCwgMjM3LCA3LCAzMywgNCwgMjM3LCA1LCAzMywgNCwgMTkyLCAzMywgNCwgMjIzLCAyNDYsIDMzLCA0LCAyMjQsIDE1NSwgCi0gICAgMzMsIDQsIDIyNSwgMTc1LCAzMywgNCwgMjI1LCA4LCAzMywgNCwgMjI1LCAyMCwgMzMsIDQsIDIyNCwgODIsIDMzLCA0LCAKLSAgICAyMjMsIDE4MCwgMzMsIDQsIDIxMCwgODAsIDMzLCA0LCAyMTAsIDc0LCAzMywgNCwgMjEwLCA3NiwgMzMsIDQsIDIxMCwgNzksIAotICAgIDMzLCA0LCAyMTAsIDc3LCAzMywgNCwgMjEwLCA3OCwgMzMsIDQsIDIxMCwgNzUsIDMzLCA0LCAyMTAsIDczLCAzMywgNCwgCi0gICAgMjE2LCAyMjAsIDMzLCA0LCAyMTUsIDE0NSwgMzMsIDQsIDIxNiwgNTcsIDMzLCA0LCAyMTYsIDIxNiwgMzMsIDQsIDIxNiwgCi0gICAgMTM1LCAzMywgNCwgMjE2LCAxNTgsIDMzLCA0LCAyMTUsIDIyNywgMzMsIDQsIDIxNSwgMTExLCAzMywgNCwgMjE1LCAzNiwgCi0gICAgMzMsIDQsIDIxMSwgMTAsIDMzLCA0LCAyMTIsIDE2MiwgMzMsIDQsIDIxNSwgMzMsIDMzLCA0LCAyMTQsIDE2NSwgMzMsIDQsIAotICAgIDIxNCwgMTc3LCAzMywgNCwgMjEyLCAxMywgMzMsIDQsIDIxMCwgMTcyLCAzMywgNCwgMjEzLCA5MCwgMzMsIDQsIDIxMiwgCi0gICAgMTk5LCAzMywgNCwgMjEzLCAxMSwgMzMsIDQsIDIxMywgODUsIDMzLCA0LCAyMTMsIDQxLCAzMywgNCwgMjEzLCA0MywgMzMsIAotICAgIDQsIDIxMiwgMjQyLCAzMywgNCwgMjEyLCAxODAsIDMzLCA0LCAyMTcsIDEyNiwgMzMsIDQsIDIxNywgNjUsIDMzLCA0LCAKLSAgICAyMTcsIDg4LCAzMywgNCwgMjE3LCAxMjUsIDMzLCA0LCAyMTcsIDEwNSwgMzMsIDQsIDIxNywgMTA2LCAzMywgNCwgMjE3LCAKLSAgICA3NywgMzMsIDQsIDIxNywgNzYsIDMzLCA0LCAyMTcsIDE5LCAzMywgNCwgMjE3LCAxNSwgMzMsIDQsIDIxNywgMTgsIDMzLCAKLSAgICA0LCAyMTcsIDE2LCAzMywgNCwgMjE3LCAxNywgMzMsIDQsIDIxNywgMTAyLCAzMywgNCwgMjE3LCA5NCwgMzMsIDQsIDIxNywgCi0gICAgOTcsIDMzLCA0LCAyMTcsIDEwMSwgMzMsIDQsIDIxNywgOTgsIDMzLCA0LCAyMTcsIDk5LCAzMywgNCwgMjE3LCA5NiwgMzMsIAotICAgIDQsIDIxNywgOTMsIDMzLCA0LCAyMTcsIDg5LCAzMywgNCwgMjE3LCA5MiwgMzMsIDQsIDIxNywgOTAsIDMzLCA0LCAyMTcsIAotICAgIDkxLCAzMywgNCwgMjQ5LCAzMiwgMzMsIDQsIDI0NywgMTkzLCAzMywgNCwgMjQ4LCA4NiwgMzMsIDQsIDI0OSwgMzAsIDMzLCAKLSAgICA0LCAyNDgsIDE1MCwgMzMsIDQsIDI0OCwgMTYyLCAzMywgNCwgMjQ4LCAyMywgMzMsIDQsIDI0NywgMTQyLCAzMywgNCwgCi0gICAgMjA2LCA4NiwgMzMsIDQsIDIwNCwgMTYzLCAzMywgNCwgMjA1LCAyMzAsIDMzLCA0LCAyMDYsIDg1LCAzMywgNCwgMjA2LCAKLSAgICA1MCwgMzMsIDQsIDIwNiwgNTUsIDMzLCA0LCAyMDUsIDE4OSwgMzMsIDQsIDIwNCwgMTU0LCAzMywgNCwgMjEwLCAyMiwgMzMsIAotICAgIDQsIDIwNywgMjAzLCAzMywgNCwgMjA5LCAyLCAzMywgNCwgMjEwLCAxOCwgMzMsIDQsIDIwOSwgMTc2LCAzMywgNCwgMjA5LCAKLSAgICAxODcsIDMzLCA0LCAxMzUsIDMzLCA0LCAyMDcsIDE2MCwgMzMsIDQsIDI0NywgOTIsIDMzLCA0LCAyNDUsIDExMCwgMzMsIDQsIAotICAgIDI0NiwgNzksIDMzLCA0LCAyNDcsIDkxLCAzMywgNCwgMjQ2LCAyMzAsIDMzLCA0LCAyNDYsIDIzOCwgMzMsIDQsIDI0NSwgCi0gICAgMjU0LCAzMywgNCwgMjQ1LCA3NCwgMzMsIDQsIDIwMywgMTgyLCAzMywgNCwgMjAzLCAxNTIsIDMzLCA0LCAyMDMsIDE3MCwgCi0gICAgMzMsIDQsIDIwMywgMTgxLCAzMywgNCwgMjAzLCAxNzUsIDMzLCA0LCAyMDMsIDE3NiwgMzMsIDQsIDIwMywgMTYwLCAzMywgCi0gICAgNCwgMjAzLCAxNTksIDMzLCA0LCAyMDMsIDE0NiwgMzMsIDQsIDIwMywgMTQyLCAzMywgNCwgMjAzLCAxNDUsIDMzLCA0LCAKLSAgICAyMDMsIDE0MywgMzMsIDQsIDIwMywgMTQ0LCAzMywgNCwgMjAxLCAyMDEsIDMzLCA0LCAyMjEsIDg0LCAzMywgNCwgMjIyLCAKLSAgICAxMDAsIDMzLCA0LCAyMjMsIDEwNiwgMzMsIDQsIDIyMiwgMjM1LCAzMywgNCwgMjIyLCAyNDAsIDMzLCA0LCAyMjEsIDE5MSwgCi0gICAgMzMsIDQsIDIyMSwgMjAsIDMzLCA0LCAyMjEsIDExLCAzMywgNCwgMjIwLCAyMjYsIDMzLCA0LCAyMjAsIDI0OCwgMzMsIDQsIAotICAgIDIyMSwgMTAsIDMzLCA0LCAyMjEsIDAsIDMzLCA0LCAyMjEsIDEsIDMzLCA0LCAyMjAsIDIzMywgMzMsIDQsIDIyMCwgMjE2LCAKLSAgICAzMywgNCwgMjM4LCA0NSwgNjMsIDMzLCA0LCAyMzgsIDQ1LCA2OCwgMzMsIDQsIDIzOCwgNDUsIDc1LCAzMywgNCwgMjM4LCAKLSAgICA0NSwgMjUyLCAyNSwgMzMsIDQsIDIzOCwgNDUsIDI0MSwgMTYxLCAzMywgNCwgMjM4LCA0NSwgNzQsIDMzLCA0LCAyMzgsIAotICAgIDQ1LCA3OCwgMzMsIDQsIDIzOCwgNDUsIDIwNCwgMTExLCAzMywgNCwgMTczLCAzMywgNCwgMjI4LCAyMDksIDMzLCA0LCAKLSAgICAyMjksIDEwMCwgMzMsIDQsIDIzMCwgNDEsIDMzLCA0LCAyMjksIDE5OCwgMzMsIDQsIDIyOSwgMjAxLCAzMywgNCwgMjI5LCAKLSAgICAyNiwgMzMsIDQsIDIyOSwgMjUsIDMzLCA0LCAyMjgsIDE2NywgMzMsIDQsIDIyOCwgMTYwLCAzMywgNCwgMjI4LCAxNjYsIAotICAgIDMzLCA0LCAyMjgsIDE2MSwgMzMsIDQsIDIyOCwgMTYyLCAzMywgNCwgMjI4LCAxNTMsIDMzLCA0LCAyMjgsIDE0NywgMzMsIAotICAgIDQsIDIyOCwgMTQ5LCAzMywgNCwgMjI4LCAxNTIsIDMzLCA0LCAyMjgsIDE1MCwgMzMsIDQsIDIyOCwgMTUxLCAzMywgNCwgCi0gICAgMjI4LCAxNDgsIDMzLCA0LCAyMjgsIDE0NiwgMzMsIDQsIDIyOCwgMTQyLCAzMywgNCwgMjI4LCAxNDUsIDMzLCA0LCAyMjgsIAotICAgIDE0MywgMzMsIDQsIDIyOCwgMTQ0LCAzMywgNCwgMjA0LCAxMTEsIDMzLCA0LCAyMDMsIDIxNywgMzMsIDQsIDIwNCwgMzAsIAotICAgIDMzLCA0LCAyMDQsIDExMCwgMzMsIDQsIDIwNCwgNTUsIDMzLCA0LCAyMDQsIDYyLCAzMywgNCwgMjA0LCAwLCAzMywgNCwgCi0gICAgMjAzLCAyNTUsIDMzLCA0LCAyMTgsIDE5OSwgNjMsIDMzLCA0LCAyMTgsIDE5OSwgNjgsIDMzLCA0LCAyMTgsIDE5OSwgNzUsIAotICAgIDMzLCA0LCAyMTgsIDE5OSwgMjUyLCAyNSwgMzMsIDQsIDIxOCwgMTk5LCAyNDEsIDE2MSwgMzMsIDQsIDIxOCwgMTk5LCA3NCwgCi0gICAgMzMsIDQsIDIxOCwgMTk5LCA3OCwgMzMsIDQsIDIwMiwgMTE2LCAzMywgNCwgMjAyLCA2LCAzMywgNCwgMjAyLCAzOSwgMzMsIAotICAgIDQsIDIwMiwgMTE0LCAzMywgNCwgMjAyLCA5MCwgMzMsIDQsIDIwMiwgOTIsIDMzLCA0LCAyMDIsIDE3LCAzMywgNCwgMjAxLCAKLSAgICAyNDksIDMzLCA0LCAyMDIsIDgwLCAzMywgNCwgMjAyLCA1NywgMzMsIDQsIDIwMiwgNjYsIDMzLCA0LCAyMDIsIDc5LCAzMywgCi0gICAgNCwgMjAyLCA3MCwgMzMsIDQsIDIwMiwgNzEsIDMzLCA0LCAyMDIsIDYzLCAzMywgNCwgMjAyLCA0OCwgMzMsIDQsIDE5OCwgCi0gICAgMzMsIDQsIDIwMiwgMjEzLCAzMywgNCwgMjAzLCAxMSwgMzMsIDQsIDIwMywgMTEwLCAzMywgNCwgMjAzLCA0OSwgMzMsIDQsIAotICAgIDIwMywgNTIsIDMzLCA0LCAyMDIsIDI0NywgMzMsIDQsIDIwMiwgMjM4LCAzMywgNCwgMjQ0LCAyMTIsIDMzLCA0LCAyNDIsIAotICAgIDQyLCAzMywgNCwgMjQzLCAyMzMsIDMzLCA0LCAyNDQsIDIxMSwgMzMsIDQsIDI0NCwgNjEsIDMzLCA0LCAyNDQsIDc1LCAzMywgCi0gICAgNCwgMjQzLCAxMTMsIDMzLCA0LCAyNDIsIDEwLCAzMywgNCwgMjQ0LCAxMjAsIDMzLCA0LCAyNDQsIDg1LCAzMywgNCwgMjQ0LCAKLSAgICA5NywgMzMsIDQsIDI0NCwgMTE5LCAzMywgNCwgMjQ0LCAxMDcsIDMzLCA0LCAyNDQsIDEwOCwgMzMsIDQsIDI0NCwgOTAsIAotICAgIDMzLCA0LCAyNDQsIDc2LCAzMywgNCwgMjMwLCAxODEsIDMzLCA0LCAyMzAsIDgyLCAzMywgNCwgMjMwLCAxNDEsIDMzLCA0LCAKLSAgICAyMzAsIDE4MCwgMzMsIDQsIDIzMCwgMTU5LCAzMywgNCwgMjMwLCAxNjEsIDMzLCA0LCAyMzAsIDEwMSwgMzMsIDQsIDIzMCwgCi0gICAgNjIsIDMzLCA0LCAyMzksIDgsIDMzLCA0LCAyMzcsIDIzMCwgMzMsIDQsIDIzOCwgODEsIDMzLCA0LCAyMzksIDUsIDMzLCA0LCAKLSAgICAyMzgsIDE4MiwgMzMsIDQsIDIzOCwgMTkwLCAzMywgNCwgMjM4LCAzOSwgMzMsIDQsIDIzOCwgMzgsIDMzLCA0LCAyMzcsIAotICAgIDE5MCwgMzMsIDQsIDIzNywgMTg2LCAzMywgNCwgMjM3LCAxODksIDMzLCA0LCAyMzcsIDE4NywgMzMsIDQsIDIzNywgMTg4LCAKLSAgICAzMywgNCwgMjM4LCAxNTUsIDMzLCA0LCAyMzgsIDEzNSwgMzMsIDQsIDIzOCwgMTQ1LCAzMywgNCwgMjM4LCAxNTQsIDMzLCAKLSAgICA0LCAyMzgsIDE0OSwgMzMsIDQsIDIzOCwgMTUwLCAzMywgNCwgMjM4LCAxMzksIDMzLCA0LCAyMzgsIDEyNCwgMzMsIDQsIAotICAgIDIwOSwgMTA4LCAzMywgNCwgMjA5LCAyMiwgMzMsIDQsIDIwOSwgNzAsIDMzLCA0LCAyMDksIDEwNywgMzMsIDQsIDIwOSwgCi0gICAgOTAsIDMzLCA0LCAyMDksIDkyLCAzMywgNCwgMjA5LCA0NywgMzMsIDQsIDIwOSwgMTMsIDMzLCA0LCAyNDYsIDE5OSwgMzMsIAotICAgIDQsIDI0NiwgOTgsIDMzLCA0LCAyNDYsIDE0MiwgMzMsIDQsIDI0NiwgMTk4LCAzMywgNCwgMjQ2LCAxNjYsIDMzLCA0LCAKLSAgICAyNDYsIDE3MCwgMzMsIDQsIDI0NiwgMTE2LCAzMywgNCwgMjQ2LCA4NywgMzMsIDQsIDIxOCwgMjA4LCAzMywgNCwgMjE4LCAKLSAgICAxNzMsIDMzLCA0LCAyMTgsIDE5MiwgMzMsIDQsIDIxOCwgMjA3LCAzMywgNCwgMjE4LCAxOTQsIDMzLCA0LCAyMTgsIDE5NSwgCi0gICAgMzMsIDQsIDIxOCwgMTgwLCAzMywgNCwgMjE4LCAxNjksIDMzLCA0LCAyMDgsIDIwLCAzMywgNCwgMjA3LCAyNDksIDMzLCA0LCAKLSAgICAyMDcsIDI1NSwgMzMsIDQsIDIwOCwgMTksIDMzLCA0LCAyMDgsIDEzLCAzMywgNCwgMjA4LCAxNCwgMzMsIDQsIDIwNywgCi0gICAgMjUzLCAzMywgNCwgMjA3LCAyNDcsIDMzLCA0LCAyMDcsIDEwNiwgMzMsIDQsIDIwNywgOTgsIDMzLCA0LCAyMDcsIDEwMiwgCi0gICAgMzMsIDQsIDIwNywgMTA1LCAzMywgNCwgMjA3LCAxMDMsIDMzLCA0LCAyMDcsIDEwNCwgMzMsIDQsIDIwNywgMTAwLCAzMywgCi0gICAgNCwgMjA3LCA5OSwgMzMsIDQsIDI0MCwgMTA4LCAzMywgNCwgMjM5LCAxMDgsIDMzLCA0LCAyNDAsIDI2LCAzMywgNCwgMjQwLCAKLSAgICAxMDcsIDMzLCA0LCAyNDAsIDUzLCAzMywgNCwgMjQwLCA2MCwgMzMsIDQsIDIzOSwgMTg2LCAzMywgNCwgMjM5LCA4NiwgMzMsIAotICAgIDQsIDE4NSwgMzMsIDQsIDIxNywgMTkxLCAzMywgNCwgMjE4LCAxNjcsIDMzLCA0LCAyMTksIDE2OCwgMzMsIDQsIDIxOSwgCi0gICAgMjMsIDMzLCA0LCAyMTksIDM0LCAzMywgNCwgMjE4LCA2OSwgMzMsIDQsIDIxNywgMTUyLCAzMywgNCwgMjE1LCAxMDEsIDMzLCAKLSAgICA0LCAyMjMsIDE2OSwgMzMsIDQsIDIzOSwgODAsIDMzLCAzOSwgMjM4LCAxNzksIDI1LCAyMiwgMjI3LCAxOTYsIDgyLCAzMywgCi0gICAgMzksIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAzOSwgMjM4LCAxNzksIDgyLCAzMywgMjE0LCAxNjgsIDgyLCAzMywgMjAzLCAKLSAgICAyMzcsIDMzLCAyMzksIDEwMiwgMjExLCA2MSwgMzMsIDI0NSwgMjMzLCAzMywgMjEzLCAxNDMsIDMzLCAyNDUsIDI0MiwgMzMsIAotICAgIDIxNywgMjQ2LCAyNDUsIDI0MiwgMzMsIDIxNywgNDcsIDgyLCAzMywgMjE5LCA4OSwgMjEzLCAxMzAsIDMzLCAxNywgMTA1LCAKLSAgICAzMywgMTcsIDEwOCwgMzMsIDE3LCAxNDcsIDMzLCAxNywgMTQ5LCAzMywgMTcsIDE3MCwgMzMsIDE3LCAxOTUsIDMzLCAxNywgCi0gICAgMjEzLCAxMTEsIDMzLCAxNywgMTk5LCAzMywgMTcsIDIyMiwgNjMsIDMzLCA0MiwgMjA5LCAxNTIsIDMzLCA0MiwgMjA3LCAKLSAgICAxNTEsIDMzLCA0MiwgMjA5LCA1MywgMzMsIDQyLCAyMzksIDE1MywgMzMsIDQyLCAyNDAsIDE4LCAzMywgNDIsIDIxMiwgNzQsIAotICAgIDMzLCA0MiwgMjEzLCAxMDUsIDMzLCA0MiwgMjQxLCAxMzQsIDMzLCA0MiwgMjIyLCA1OCwgMzMsIDQyLCAyMzYsIDExLCAzMywgCi0gICAgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAzMywgNCwgMjE0LCAxNzMsIDIyMywgMTgwLCAzMywgNCwgMjIzLCAxNzYsIDMzLCA0LCAKLSAgICAyMjMsIDE3NywgMzMsIDQsIDIyMywgMTc4LCAzMywgNCwgMjE0LCAxNzMsIDI0NywgMTQyLCAzMywgNCwgMjQ3LCAxMzksIAotICAgIDMzLCA0LCAyNDcsIDE0MCwgMzMsIDQsIDI0NywgMTQxLCAzMywgNCwgMjE0LCAxNzMsIDIzOSwgODYsIDMzLCA0LCAyMzksIAotICAgIDgyLCAzMywgNCwgMjM5LCA4MywgMzMsIDQsIDIzOSwgODQsIDMzLCA0LCAyMTQsIDE3MywgMjE3LCAxNTIsIDMzLCA0LCAKLSAgICAyMTcsIDE0OCwgMzMsIDQsIDIxNywgMTQ5LCAzMywgNCwgMjE3LCAxNTAsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMDIsIDI1MCwgCi0gICAgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NCwgMjIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAKLSAgICAyMTIsIDIyOCwgMjE2LCAyLCAzMywgMjA4LCAxNjIsIDEzMSwgMjQzLCAyMDcsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMjksIAotICAgIDE3OSwgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NiwgMTI0LCAzMywgMjA4LCAxNjIsIDEzMSwgMjM3LCAwLCAzMywgMjA4LCAKLSAgICAxNjIsIDEzMSwgMjQ0LCAyMSwgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOCwgMTgxLCA5MCwgMSwgNjMsIDkwLCAxLCA3NCwgOTAsIAotICAgIDEsIDc1LCA5MCwgMSwgNzgsIDkwLCAxLCA2OCwgOTAsIDEsIDIwNiwgMTY0LCA5MCwgMSwgMjM5LCA4LCA5MCwgMSwgMTczLCAKLSAgICA5MCwgMSwgMjM4LCAxOTAsIDkwLCAxLCAyMzgsIDgxLCA5MCwgMSwgMjM4LCAzOSwgOTAsIDEsIDIzNywgMjMwLCA5MCwgMSwgCi0gICAgMjM3LCAxOTIsIDkwLCAxLCAxNTIsIDkwLCAxLCAyMzcsIDY3LCA5MCwgMSwgMjM3LCAzLCA5MCwgMSwgMjM2LCAxMzYsIDkwLCAKLSAgICAxLCAyMzYsIDI2LCA5MCwgMSwgMjM1LCAyNTUsIDkwLCAxLCAyMjgsIDExMywgOTAsIDEsIDIyNywgMjM0LCA5MCwgMSwgCi0gICAgMjI3LCAxNDgsIDkwLCAxLCAyMjcsIDQ5LCA5MCwgMSwgMjI2LCAyMzksIDkwLCAxLCAyMjYsIDIwOCwgOTAsIDEsIDE5MiwgCi0gICAgOTAsIDEsIDIyNSwgMjAsIDkwLCAxLCAyMjQsIDE1NSwgOTAsIDEsIDIyNCwgODIsIDkwLCAxLCAyMjMsIDI0NiwgOTAsIDEsIAotICAgIDIwMSwgMjAxLCA5MCwgMSwgMjM2LCAxNjAsIDkwLCAxLCAyMjMsIDkzLCA5MCwgMSwgMjIyLCAyNDAsIDkwLCAxLCAyMjIsIAotICAgIDEwMCwgOTAsIDEsIDIyMSwgMTkxLCA5MCwgMSwgMjIxLCA4NCwgOTAsIDEsIDIyMSwgMjIsIDkwLCAxLCAyMTcsIDY0LCA5MCwgCi0gICAgMSwgMjE3LCA1MCwgOTAsIDEsIDIxNywgNDMsIDkwLCAxLCAyMTcsIDM0LCA5MCwgMSwgMjE3LCAyMywgOTAsIDEsIDIxNywgCi0gICAgMjEsIDkwLCAxLCAyMTUsIDM2LCA5MCwgMSwgMTk0LCA5MCwgMSwgMjE0LCAxNzcsIDkwLCAxLCAyMTIsIDE2MiwgOTAsIDEsIAotICAgIDIxMiwgMTMsIDkwLCAxLCAyMTEsIDEwLCA5MCwgMSwgMjEwLCAxNzcsIDkwLCAxLCAyNDQsIDIxMiwgOTAsIDEsIDIxMCwgCi0gICAgMjIsIDkwLCAxLCAyNDQsIDc1LCA5MCwgMSwgMjA5LCAxODcsIDkwLCAxLCAyNDMsIDIzMywgOTAsIDEsIDIwOSwgMiwgOTAsIAotICAgIDEsIDI0MywgMTEzLCA5MCwgMSwgMjQyLCA0MiwgOTAsIDEsIDI0MiwgMTMsIDkwLCAxLCAyNDMsIDEyNCwgOTAsIDEsIDIwOCwgCi0gICAgMTkwLCA5MCwgMSwgMjA4LCAxODksIDkwLCAxLCAyMDgsIDE3OCwgOTAsIDEsIDIwOCwgMTc3LCA5MCwgMSwgMjA4LCAxNzYsIAotICAgIDkwLCAxLCAyMDgsIDE3NSwgOTAsIDEsIDIwOCwgMjAsIDkwLCAxLCAyMDgsIDE0LCA5MCwgMSwgMjA3LCAyNTUsIDkwLCAxLCAKLSAgICAyMDcsIDI1MywgOTAsIDEsIDIwNywgMjQ5LCA5MCwgMSwgMjA3LCAyNDgsIDkwLCAxLCAyMDQsIDExMSwgOTAsIDEsIDIwNCwgCi0gICAgNjIsIDkwLCAxLCAyMDQsIDMwLCA5MCwgMSwgMjA0LCAwLCA5MCwgMSwgMjAzLCAyMTcsIDkwLCAxLCAyMDMsIDIwNCwgOTAsIAotICAgIDEsIDE5OCwgOTAsIDEsIDIwMywgNTIsIDkwLCAxLCAyMDMsIDExLCA5MCwgMSwgMjAyLCAyNDcsIDkwLCAxLCAyMDIsIDIxMywgCi0gICAgOTAsIDEsIDIwMiwgMTc3LCA5MCwgMSwgMjIzLCAxODcsIDkwLCA1LCAxLCAyMDMsIDUyLCA5MCwgNSwgMSwgMjAzLCAxMSwgCi0gICAgOTAsIDUsIDEsIDIwMiwgMjQ3LCA5MCwgNSwgMSwgMjAyLCAyMTMsIDkwLCA1LCAxLCAyMDIsIDE3NywgOTAsIDUsIDEsIAotICAgIDIyMywgMTg3LCAxOSwgMjAsIDIzNSwgMjIwLCAxOSwgMjAsIDc0LCAxOSwgMjAsIDI1MSwgMjQ1LCAxOSwgMjAsIDc1LCAxOSwgCi0gICAgMjAsIDIzMSwgODMsIDE5LCAyMCwgNzgsIDE5LCAyMCwgMjIwLCAxOCwgMTksIDIwLCAyMDMsIDEyMywgMjIwLCAxOCwgMTksIAotICAgIDIwLCA4OCwgMjQxLCAxNjEsIDE5LCAyMCwgODgsIDc1LCAxOSwgMjAsIDYzLCAxOSwgMjAsIDI1MiwgMjUsIDE5LCAyMCwgCi0gICAgMjA0LCA2MiwgMTksIDIwLCAxOTYsIDIwNCwgNjIsIDE5LCAyMCwgMjA0LCAzMCwgMTksIDIwLCAxOTYsIDIwNCwgMzAsIDE5LCAKLSAgICAyMCwgMjA0LCAxOSwgMTksIDIwLCAxOTYsIDIwNCwgMTksIDE5LCAyMCwgMjA0LCAwLCAxOSwgMjAsIDE5NiwgMjA0LCAwLCAKLSAgICAxOSwgMjAsIDIwMywgMjQ0LCAxOSwgMjAsIDE5NiwgMjAzLCAyNDQsIDE5LCAyMCwgMjIzLCA2OCwgMjAzLCAyNDQsIDE5LCAKLSAgICAyMCwgMjA0LCAxMTEsIDE5LCAyMCwgMTk2LCAyMDQsIDExMSwgMTksIDIwLCAyMDQsIDExMCwgMTksIDIwLCAxOTYsIDIwNCwgCi0gICAgMTEwLCAxOSwgMjAsIDIyMywgNjgsIDIwNCwgMTEwLCAxOSwgMjAsIDI1MSwgNjQsIDE5LCAyMCwgMjAzLCAxMjMsIDIwNCwgCi0gICAgMTQ0LCAxOSwgMjAsIDIzOCwgNDUsIDIxMSwgNjEsIDE5LCAyMCwgNDYsIDE2NSwgMTksIDIwLCA0NiwgMjM3LCAyNTMsIDE5LCAKLSAgICAyMCwgNDYsIDI0NywgMjQ4LCAxNjIsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMDgsIDE0NSwgMTYyLCAyMTUsIDI1MiwgMTksIAotICAgIDIwLCA0NiwgNTAsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCA1MiwgMTY1LCAxOSwgCi0gICAgMjAsIDQ2LCA1MiwgMjEyLCAyMjgsIDgwLCAyMTEsIDE5LCAxOSwgMjAsIDQ2LCAxMDEsIDI0MywgODUsIDE5LCAyMCwgNDYsIAotICAgIDIxMiwgMjI4LCAyMzYsIDEwNiwgOTUsIDE5LCAyMCwgNDYsIDIxOCwgNzYsIDE5LCAyMCwgNDYsIDEyMSwgMjEwLCAzLCAxOSwgCi0gICAgMjAsIDI0MSwgOTIsIDE5LCAyMCwgMjMxLCA0OSwgMTksIDIwLCAyMjAsIDMxLCAxOSwgMjAsIDI1MCwgMjMxLCAxOSwgMjAsIAotICAgIDIxOSwgMzQsIDE5LCAyMCwgMjE5LCAxNjYsIDE5LCAyMCwgMjE4LCAxNjcsIDE5LCAyMCwgMjE4LCAxMjksIDE5LCAyMCwgCi0gICAgMjE4LCA2OSwgMTksIDIwLCAyMTgsIDQ1LCAxOSwgMjAsIDIwMywgMTIzLCAyMTgsIDQ1LCAxOSwgMjAsIDg4LCAyMzcsIDQ4LCAKLSAgICAxOSwgMjAsIDg4LCAyMzcsIDMsIDE5LCAyMCwgMTg1LCAxOSwgMjAsIDIxOSwgMTY4LCAxOSwgMjAsIDIxNywgMTUwLCAxOSwgCi0gICAgMjAsIDE5NiwgMjE3LCAxNTAsIDE5LCAyMCwgMjE3LCAxNDgsIDE5LCAyMCwgMTk2LCAyMTcsIDE0OCwgMTksIDIwLCAyMTcsIAotICAgIDE0NywgMTksIDIwLCAxOTYsIDIxNywgMTQ3LCAxOSwgMjAsIDIxNywgMTQ1LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDUsIDE5LCAKLSAgICAyMCwgMjE3LCAxNDQsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NCwgMTksIDIwLCAyMTcsIDE1MiwgMTksIDIwLCAxOTYsIDIxNywgCi0gICAgMTUyLCAxOSwgMjAsIDIxNywgMTUxLCAxOSwgMjAsIDE5NiwgMjE3LCAxNTEsIDE5LCAyMCwgMjAzLCAxMjMsIDIxNywgMTUxLCAKLSAgICAxOSwgMjAsIDIxOSwgMTg0LCAxOSwgMjAsIDE5NiwgMjE5LCAxODQsIDE5LCAyMCwgODgsIDIzNywgMTcxLCAxOSwgMjAsIAotICAgIDIwOSwgMTg3LCAxOSwgMjAsIDIxMCwgMTYsIDE5LCAyMCwgMjA5LCAyLCAxOSwgMjAsIDIwOCwgMjQyLCAxOSwgMjAsIDEzNSwgCi0gICAgMTksIDIwLCAyMDgsIDE0OCwgMTksIDIwLCAyMDMsIDEyMywgMjA4LCAxNDgsIDE5LCAyMCwgODgsIDI0NCwgNjEsIDE5LCAKLSAgICAyMCwgODgsIDI0MywgMjMzLCAxOSwgMjAsIDIxMCwgMjIsIDE5LCAyMCwgMjEwLCAxOCwgMTksIDIwLCAyMDcsIDE1OCwgMTksIAotICAgIDIwLCAxOTYsIDIwNywgMTU4LCAxOSwgMjAsIDIwNywgMTQwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNDAsIDE5LCAyMCwgMjA3LCAKLSAgICAxMzksIDE5LCAyMCwgMTk2LCAyMDcsIDEzOSwgMTksIDIwLCAxMDgsIDE5LCAyMCwgMTk2LCAxMDgsIDE5LCAyMCwgMjA3LCAKLSAgICAxMzAsIDE5LCAyMCwgMTk2LCAyMDcsIDEzMCwgMTksIDIwLCAyMDcsIDE2MCwgMTksIDIwLCAxOTYsIDIwNywgMTYwLCAxOSwgCi0gICAgMjAsIDIwNywgMTU5LCAxOSwgMjAsIDE5NiwgMjA3LCAxNTksIDE5LCAyMCwgMjIzLCA2OCwgMjA3LCAxNTksIDE5LCAyMCwgCi0gICAgMjEwLCA2OSwgMTksIDIwLCAyMDcsIDIzNiwgMTksIDIwLCAyMDcsIDIyMCwgMTksIDIwLCAyMDcsIDIxOCwgMTksIDIwLCAKLSAgICAyMDcsIDI0MSwgMTksIDIwLCAyMjksIDIwMSwgMTksIDIwLCAyMzAsIDM2LCAxOSwgMjAsIDIyOSwgMTAwLCAxOSwgMjAsIAotICAgIDIyOSwgODcsIDE5LCAyMCwgMjI5LCAyNiwgMTksIDIwLCAyMjksIDYsIDE5LCAyMCwgMjAzLCAxMjMsIDIyOSwgNiwgMTksIAotICAgIDIwLCAxNzMsIDE5LCAyMCwgMjMwLCA0MSwgMTksIDIwLCAyMjgsIDE2MiwgMTksIDIwLCAxOTYsIDIyOCwgMTYyLCAxOSwgCi0gICAgMjAsIDIyOCwgMTYwLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjAsIDE5LCAyMCwgMjI4LCAxNTksIDE5LCAyMCwgMTk2LCAyMjgsIAotICAgIDE1OSwgMTksIDIwLCAyMjgsIDE1NywgMTksIDIwLCAxOTYsIDIyOCwgMTU3LCAxOSwgMjAsIDIyOCwgMTU2LCAxOSwgMjAsIAotICAgIDE5NiwgMjI4LCAxNTYsIDE5LCAyMCwgMjI4LCAxNjcsIDE5LCAyMCwgMTk2LCAyMjgsIDE2NywgMTksIDIwLCAyMjgsIDE2NiwgCi0gICAgMTksIDIwLCAxOTYsIDIyOCwgMTY2LCAxOSwgMjAsIDIyMywgNjgsIDIyOCwgMTY2LCAxOSwgMjAsIDIzMCwgNTQsIDE5LCAKLSAgICAyMCwgMjI4LCAxNjgsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgMTkxLCAxOSwgMjAsIDIxMSwgMjM3LCAyMjksIDg4LCAxOSwgCi0gICAgMjAsIDIxMSwgMjM3LCAyMjksIDIwLCAxOSwgMjAsIDIxMSwgMjM3LCAyMzAsIDIwLCAxOSwgMjAsIDI0NiwgMjM4LCAxOSwgCi0gICAgMjAsIDI0NywgOTAsIDE5LCAyMCwgMjQ2LCA3OSwgMTksIDIwLCAyNDYsIDY5LCAxOSwgMjAsIDI0NSwgMjU0LCAxOSwgMjAsIAotICAgIDI0NSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyNDUsIDE4MCwgMTksIDIwLCAyNDcsIDkyLCAxOSwgMjAsIDI0NywgOTEsIAotICAgIDE5LCAyMCwgMjQ1LCA3MiwgMTksIDIwLCAxOTYsIDI0NSwgNzIsIDE5LCAyMCwgMjQ1LCA3MCwgMTksIDIwLCAxOTYsIDI0NSwgCi0gICAgNzAsIDE5LCAyMCwgMjQ1LCA2OSwgMTksIDIwLCAxOTYsIDI0NSwgNjksIDE5LCAyMCwgMjQ1LCA2OCwgMTksIDIwLCAxOTYsIAotICAgIDI0NSwgNjgsIDE5LCAyMCwgMjQ1LCA2NywgMTksIDIwLCAxOTYsIDI0NSwgNjcsIDE5LCAyMCwgMjQ1LCA3NCwgMTksIDIwLCAKLSAgICAxOTYsIDI0NSwgNzQsIDE5LCAyMCwgMjQ1LCA3MywgMTksIDIwLCAxOTYsIDI0NSwgNzMsIDE5LCAyMCwgMjIzLCA2OCwgCi0gICAgMjQ1LCA3MywgMTksIDIwLCAyNDcsIDEyNSwgMTksIDIwLCAyMTQsIDIwNiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI1LCAyMCwgCi0gICAgMTksIDIwLCAyMjUsIDE3NCwgMTksIDIwLCAyMjQsIDE1NSwgMTksIDIwLCAyMjQsIDEyNSwgMTksIDIwLCAyMjQsIDgyLCAKLSAgICAxOSwgMjAsIDIyNCwgMzUsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNCwgMzUsIDE5LCAyMCwgMTkyLCAxOSwgMjAsIDIyNSwgCi0gICAgMTc1LCAxOSwgMjAsIDIyMywgMTc4LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzgsIDE5LCAyMCwgMjIzLCAxNzYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMjMsIDE3NiwgMTksIDIwLCAyMjMsIDE3NSwgMTksIDIwLCAxOTYsIDIyMywgMTc1LCAxOSwgMjAsIDIyMywgMTc0LCAKLSAgICAxOSwgMjAsIDE5NiwgMjIzLCAxNzQsIDE5LCAyMCwgMjIzLCAxNzMsIDE5LCAyMCwgMTk2LCAyMjMsIDE3MywgMTksIDIwLCAKLSAgICAyMjMsIDE4MCwgMTksIDIwLCAxOTYsIDIyMywgMTgwLCAxOSwgMjAsIDIyMywgMTc5LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzksIAotICAgIDE5LCAyMCwgMjIzLCA2OCwgMjIzLCAxNzksIDE5LCAyMCwgMjI2LCAxODUsIDE5LCAyMCwgMTk2LCAyMjYsIDE4NSwgMTksIAotICAgIDIwLCAyMjQsIDE1OSwgMTksIDIwLCAyNTAsIDQ4LCAyMjYsIDE4NSwgMTksIDIwLCAyMTQsIDIwNiwgMjI2LCAxODUsIDE5LCAKLSAgICAyMCwgMjIyLCAyNDAsIDE5LCAyMCwgMjIzLCAxMDUsIDE5LCAyMCwgMjIyLCAxMDAsIDE5LCAyMCwgMjIyLCA3NSwgMTksIAotICAgIDIwLCAyMjEsIDE5MSwgMTksIDIwLCAyMjEsIDE4MCwgMTksIDIwLCAyMDMsIDEyMywgMjIxLCAxODAsIDE5LCAyMCwgMjAxLCAKLSAgICAyMDEsIDE5LCAyMCwgMjIzLCAxMDYsIDE5LCAyMCwgMjIxLCAxOCwgMTksIDIwLCAxOTYsIDIyMSwgMTgsIDE5LCAyMCwgCi0gICAgMjIxLCAyMCwgMTksIDIwLCAxOTYsIDIyMSwgMjAsIDE5LCAyMCwgMjIxLCAxOSwgMTksIDIwLCAxOTYsIDIyMSwgMTksIDE5LCAKLSAgICAyMCwgMjIzLCA2OCwgMjIxLCAxOSwgMTksIDIwLCAyMjMsIDE2MywgMTksIDIwLCA4OCwgMjIyLCAyMDUsIDE5LCAyMCwgCi0gICAgMjIyLCAxMDUsIDE5LCAyMCwgMjI3LCAyMzQsIDE5LCAyMCwgMjI4LCAxMTEsIDE5LCAyMCwgMjI3LCAxNDgsIDE5LCAyMCwgCi0gICAgMjI3LCAxMzAsIDE5LCAyMCwgMjI3LCA0OSwgMTksIDIwLCAyMjcsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjcsIDE4LCAKLSAgICAxOSwgMjAsIDIyOCwgMTEzLCAxOSwgMjAsIDIyOCwgMTEyLCAxOSwgMjAsIDIyNiwgMjA1LCAxOSwgMjAsIDE5NiwgMjI2LCAKLSAgICAyMDUsIDE5LCAyMCwgMjI2LCAyMDQsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNCwgMTksIDIwLCAyMjYsIDIwMywgMTksIDIwLCAKLSAgICAxOTYsIDIyNiwgMjAzLCAxOSwgMjAsIDIyNiwgMjAyLCAxOSwgMjAsIDE5NiwgMjI2LCAyMDIsIDE5LCAyMCwgMjI2LCAyMDEsIAotICAgIDE5LCAyMCwgMTk2LCAyMjYsIDIwMSwgMTksIDIwLCAyMjYsIDIwNywgMTksIDIwLCAxOTYsIDIyNiwgMjA3LCAxOSwgMjAsIAotICAgIDIyNiwgMjA2LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDYsIDE5LCAyMCwgMTU5LCAxOSwgMjAsIDE5NiwgMTU5LCAxOSwgMjAsIAotICAgIDE3NCwgMTU5LCAxOSwgMjAsIDIxNCwgMTc3LCAxOSwgMjAsIDIxNSwgMzEsIDE5LCAyMCwgMjEyLCAxNjIsIDE5LCAyMCwgCi0gICAgMjEyLCAxNDIsIDE5LCAyMCwgMjEyLCAxMywgMTksIDIwLCAyMTEsIDI1MCwgMTksIDIwLCAyMDMsIDEyMywgMjExLCAyNTAsIAotICAgIDE5LCAyMCwgMjE1LCAzNiwgMTksIDIwLCAyMTUsIDMzLCAxOSwgMjAsIDIxMCwgMTY4LCAxOSwgMjAsIDE5NiwgMjEwLCAKLSAgICAxNjgsIDE5LCAyMCwgMjEwLCAxNjIsIDE5LCAyMCwgMTk2LCAyMTAsIDE2MiwgMTksIDIwLCAyMTAsIDE2MSwgMTksIDIwLCAKLSAgICAxOTYsIDIxMCwgMTYxLCAxOSwgMjAsIDIxMCwgMTU3LCAxOSwgMjAsIDE5NiwgMjEwLCAxNTcsIDE5LCAyMCwgMjEwLCAxNTYsIAotICAgIDE5LCAyMCwgMTk2LCAyMTAsIDE1NiwgMTksIDIwLCAyMTAsIDE3MiwgMTksIDIwLCAxOTYsIDIxMCwgMTcyLCAxOSwgMjAsIAotICAgIDIxMCwgMTcxLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzEsIDE5LCAyMCwgMjIzLCA2OCwgMjEwLCAxNzEsIDE5LCAyMCwgMTk0LCAKLSAgICAxOSwgMjAsIDI1MCwgNDgsIDE5NCwgMTksIDIwLCAyMTAsIDE3MywgMTksIDIwLCAyNDgsIDQwLCAxOTQsIDE5LCAyMCwgCi0gICAgMjI0LCAyOCwgMjEyLCA3MCwgMTksIDIwLCAyMjMsIDY4LCAyMTIsIDYxLCAxOSwgMjAsIDIyMywgNjgsIDIxNSwgOTIsIDE5LCAKLSAgICAyMCwgMjIzLCA2OCwgMjExLCAxNzksIDE5LCAyMCwgMjIzLCA2OCwgMjExLCAxMywgMTksIDIwLCAyMjMsIDY4LCAyMTIsIAotICAgIDYwLCAxOSwgMjAsIDIyMywgNjgsIDIxNCwgMTgwLCAxOSwgMjAsIDIxMywgNDMsIDE5LCAyMCwgMjEzLCAxMSwgMTksIDIwLCAKLSAgICAyMTMsIDYsIDE5LCAyMCwgMjEyLCAyNDIsIDE5LCAyMCwgMjEyLCAyMzYsIDE5LCAyMCwgMjEzLCA5MCwgMTksIDIwLCAyMTMsIAotICAgIDg1LCAxOSwgMjAsIDIxMiwgMTc3LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzcsIDE5LCAyMCwgMjEyLCAxNzYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMTIsIDE3NiwgMTksIDIwLCAyMTIsIDE3NSwgMTksIDIwLCAxOTYsIDIxMiwgMTc1LCAxOSwgMjAsIDIxMiwgMTc0LCAKLSAgICAxOSwgMjAsIDE5NiwgMjEyLCAxNzQsIDE5LCAyMCwgMjEyLCAxNzMsIDE5LCAyMCwgMTk2LCAyMTIsIDE3MywgMTksIDIwLCAKLSAgICAyMTIsIDE4MCwgMTksIDIwLCAxOTYsIDIxMiwgMTgwLCAxOSwgMjAsIDIxMiwgMTc5LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzksIAotICAgIDE5LCAyMCwgMjEzLCA5MiwgMTksIDIwLCAyMDMsIDUyLCAxOSwgMjAsIDIwMywgMTA4LCAxOSwgMjAsIDIwMywgMTEsIDE5LCAKLSAgICAyMCwgMjAzLCAyLCAxOSwgMjAsIDIwMiwgMjQ3LCAxOSwgMjAsIDIwMiwgMjMyLCAxOSwgMjAsIDIwMywgMTIzLCAyMDIsIAotICAgIDIzMiwgMTksIDIwLCAxOTgsIDE5LCAyMCwgMjAzLCAxMTAsIDE5LCAyMCwgMjAyLCAxNzQsIDE5LCAyMCwgMTk2LCAyMDIsIAotICAgIDE3NCwgMTksIDIwLCAyMDIsIDE3MywgMTksIDIwLCAxOTYsIDIwMiwgMTczLCAxOSwgMjAsIDIwMiwgMTcyLCAxOSwgMjAsIAotICAgIDE5NiwgMjAyLCAxNzIsIDE5LCAyMCwgMjAyLCAxNzEsIDE5LCAyMCwgMTk2LCAyMDIsIDE3MSwgMTksIDIwLCAyMDIsIDE3MCwgCi0gICAgMTksIDIwLCAxOTYsIDIwMiwgMTcwLCAxOSwgMjAsIDIwMiwgMTc2LCAxOSwgMjAsIDE5NiwgMjAyLCAxNzYsIDE5LCAyMCwgCi0gICAgMjAyLCAxNzUsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NSwgMTksIDIwLCAyMjMsIDY4LCAyMDIsIDE3NSwgMTksIDIwLCAyMDMsIAotICAgIDEyNCwgMTksIDIwLCAyNDgsIDg0LCAyMDMsIDEyNCwgMTksIDIwLCAxOTYsIDIwMywgMTI0LCAxOSwgMjAsIDIxNCwgMjA2LCAKLSAgICAyMDMsIDExLCAxOSwgMjAsIDIxNiwgMTU4LCAxOSwgMjAsIDIxNywgMCwgMjE2LCAxNTgsIDE5LCAyMCwgMTk2LCAyMjcsIAotICAgIDIzNCwgMTksIDIwLCAyMTYsIDIxNSwgMTksIDIwLCAyMTYsIDU3LCAxOSwgMjAsIDIxNiwgMywgMTksIDIwLCAyMTUsIDIyNywgCi0gICAgMTksIDIwLCAyMTUsIDIwOCwgMTksIDIwLCAxOTYsIDIyNywgNDksIDE5LCAyMCwgMjE2LCAyMjAsIDE5LCAyMCwgMjE2LCAKLSAgICAyMTYsIDE5LCAyMCwgMTk2LCAyMjgsIDExMywgMTksIDIwLCAyMTUsIDExMCwgMTksIDIwLCAxOTYsIDIxNSwgMTEwLCAxOSwgCi0gICAgMjAsIDE0NiwgMTksIDIwLCAxOTYsIDE0NiwgMTksIDIwLCAxNzQsIDE0NiwgMTksIDIwLCAyNDAsIDYwLCAxOSwgMjAsIAotICAgIDI0MCwgMTA1LCAxOSwgMjAsIDI0MCwgMjYsIDE5LCAyMCwgMjQwLCAxMiwgMTksIDIwLCAyMzksIDE4NiwgMTksIDIwLCAKLSAgICAyMzksIDE3NSwgMTksIDIwLCAyNDAsIDEwOCwgMTksIDIwLCAyNDAsIDEwNywgMTksIDIwLCAyMzksIDg1LCAxOSwgMjAsIAotICAgIDE5NiwgMjM5LCA4NSwgMTksIDIwLCAyNDAsIDE3NCwgMTksIDIwLCAyMDksIDkyLCAxOSwgMjAsIDIyMywgMTYxLCAyMDksIAotICAgIDkyLCAxOSwgMjAsIDIwOSwgNzAsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCA2NCwgMTksIDIwLCAKLSAgICAyMjMsIDE2MSwgMjA5LCA2NCwgMTksIDIwLCAyMDksIDQ3LCAxOSwgMjAsIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDgsIAotICAgIDE5LCAyMCwgMjA5LCAxMDcsIDE5LCAyMCwgMjA5LCAxMiwgMTksIDIwLCAxOTYsIDIwOSwgMTIsIDE5LCAyMCwgMjA5LCAKLSAgICAxMTAsIDE5LCAyMCwgMjA3LCAyMjcsIDE5LCAyMCwgMjA3LCAyMjUsIDE5LCAyMCwgMjA3LCAyMjQsIDE5LCAyMCwgMjA3LCAKLSAgICAyMjksIDE5LCAyMCwgMjA3LCAyMzAsIDE5LCAyMCwgMjA3LCAxMjQsIDE5LCAyMCwgMjA3LCAxMjMsIDE5LCAyMCwgMjA3LCAKLSAgICAxMjIsIDE5LCAyMCwgMjA3LCAxMjYsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCA2NywgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDMsIAotICAgIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAyMzksIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAxMzYsIDE5LCAyMCwgMjIxLCAzOSwgCi0gICAgMjM2LCAxMTcsIDE5LCAyMCwgMjIxLCAzOSwgMTUyLCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMTU3LCAxOSwgMjAsIDIyMSwgCi0gICAgMzksIDIzNywgMTcxLCAxOSwgMjAsIDIyMSwgMzgsIDIzNywgMTcxLCAxOSwgMjAsIDIzNiwgMjI2LCAxOSwgMjAsIDIxNywgCi0gICAgMTIyLCAxOSwgMjAsIDIxNywgODgsIDE5LCAyMCwgMjE3LCA4MywgMTksIDIwLCAyMTcsIDc3LCAxOSwgMjAsIDIxNywgNzIsIAotICAgIDE5LCAyMCwgMjE3LCAxMjYsIDE5LCAyMCwgMjE3LCAxMjUsIDE5LCAyMCwgMjE3LCAxMzQsIDE5LCAyMCwgMjA4LCAxODYsIAotICAgIDE5LCAyMCwgMjA4LCAxODQsIDE5LCAyMCwgMjA4LCAxODMsIDE5LCAyMCwgMjA4LCAxODcsIDE5LCAyMCwgMTk2LCAyMTYsIAotICAgIDE1OCwgMTksIDIwLCAxOTYsIDIxNiwgNTcsIDE5LCAyMCwgMTk2LCAyMTUsIDIyNywgMTksIDIwLCAxOTYsIDIxNiwgMjIwLCAKLSAgICAxOSwgMjAsIDIyMiwgMjAxLCAxOSwgMjAsIDIyMiwgMTUxLCAxOSwgMjAsIDIyMiwgMTQ3LCAxOSwgMjAsIDIyMiwgMTI4LCAKLSAgICAxOSwgMjAsIDIyMiwgMTIzLCAxOSwgMjAsIDIyMiwgMjAzLCAxOSwgMjAsIDIyMiwgMjAyLCAxOSwgMjAsIDIyMiwgMjA1LCAKLSAgICAxOSwgMjAsIDIyMSwgMjIwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDQzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDExLCAKLSAgICAxOSwgMjAsIDIxNCwgMjA2LCAyMTIsIDI0MiwgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCA5MCwgMTksIDIwLCAyMDMsIDI0MiwgCi0gICAgMjA5LCA5MiwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3MCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA0NywgMTksIDIwLCAKLSAgICAyMDMsIDI0MiwgMjA5LCAxMDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTEwLCAxOSwgMjAsIDIyNywgMTU1LCAxOSwgMjAsIAotICAgIDIyNywgMTU0LCAxOSwgMjAsIDIyNywgMTUzLCAxOSwgMjAsIDIyNywgMTUyLCAxOSwgMjAsIDIyNywgMTYxLCAxOSwgMjAsIAotICAgIDIyNywgMTYwLCAxOSwgMjAsIDIyNywgMTYyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDkyLCAxOSwgMjAsIDIwOSwgMTA5LCAKLSAgICAyMDksIDcwLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDQ3LCAxOSwgMjAsIAotICAgIDIwOSwgMTA5LCAyMDksIDQyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDEwOCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAKLSAgICAxMDcsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTEwLCAxOSwgMjAsIDI1MSwgNTAsIDI0OSwgMjU1LCAxOSwgMjAsIDI0OCwgCi0gICAgNDAsIDc0LCAxOSwgMjAsIDI0OCwgNDAsIDc1LCAxOSwgMjAsIDI0OCwgNDAsIDc4LCAxOSwgMjAsIDI0OCwgNDAsIDYzLCAKLSAgICAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgNjIsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAzMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIAotICAgIDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxMTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjIyLCAyNDAsIDE5LCAyMCwgMjQ4LCA0MCwgCi0gICAgMjIyLCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjIxLCAxOTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjAxLCAyMDEsIDE5LCAyMCwgCi0gICAgMjQ4LCA0MCwgMjI5LCAyMDEsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAyNiwgCi0gICAgMTksIDIwLCAyNDgsIDQwLCAxNzMsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgNjcsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgCi0gICAgMywgMTksIDIwLCAyMTQsIDIwNiwgMjM2LCAxMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDE1MiwgMTksIDIwLCA4OCwgMjM4LCAKLSAgICA4NywgMTksIDIwLCA4OCwgMjM4LCA5MSwgMTksIDIwLCA4OCwgMjM4LCAxMDUsIDE5LCAyMCwgODgsIDIzOCwgMTA0LCAxOSwgCi0gICAgMjAsIDg4LCAyMzgsIDkzLCAxOSwgMjAsIDg4LCAyMzgsIDExOSwgMTksIDIwLCA4OCwgMjE1LCAxNDUsIDE5LCAyMCwgODgsIAotICAgIDIxNSwgMjI3LCAxOSwgMjAsIDg4LCAyMTYsIDE1OCwgMTksIDIwLCA4OCwgMjE2LCAxMzUsIDE5LCAyMCwgODgsIDIxNiwgCi0gICAgNTcsIDE5LCAyMCwgODgsIDIxNiwgMjIwLCAxOSwgMjAsIDg4LCAyMDMsIDIxNywgMTksIDIwLCA4OCwgMjA0LCAwLCAxOSwgCi0gICAgMjAsIDg4LCAyMDQsIDYyLCAxOSwgMjAsIDg4LCAyMDQsIDU1LCAxOSwgMjAsIDg4LCAyMDQsIDMwLCAxOSwgMjAsIDg4LCAKLSAgICAyMDQsIDExMSwgMTksIDIwLCA4OCwgMjM1LCAyNDcsIDE5LCAyMCwgODgsIDIzNSwgMjQ4LCAxOSwgMjAsIDg4LCAyMzUsIAotICAgIDI1MSwgMTksIDIwLCA4OCwgMjM1LCAyNTAsIDE5LCAyMCwgODgsIDIzNSwgMjQ5LCAxOSwgMjAsIDg4LCAyMzUsIDI1NCwgCi0gICAgMTksIDIwLCA4OCwgMjA5LCAyMiwgMTksIDIwLCA4OCwgMjA5LCA0NywgMTksIDIwLCA4OCwgMjA5LCA5MiwgMTksIDIwLCAKLSAgICA4OCwgMjA5LCA5MCwgMTksIDIwLCA4OCwgMjA5LCA3MCwgMTksIDIwLCA4OCwgMjA5LCAxMDgsIDE5LCAyMCwgODgsIDIwNywgCi0gICAgMjA4LCAxOSwgMjAsIDg4LCAyMDcsIDIxOCwgMTksIDIwLCA4OCwgMjA3LCAyMzYsIDE5LCAyMCwgODgsIDIwNywgMjM1LCAKLSAgICAxOSwgMjAsIDg4LCAyMDcsIDIyMCwgMTksIDIwLCA4OCwgMjA3LCAyNDEsIDE5LCAyMCwgODgsIDIxNywgMTkxLCAxOSwgMjAsIAotICAgIDg4LCAyMTgsIDY5LCAxOSwgMjAsIDg4LCAyMTksIDM0LCAxOSwgMjAsIDg4LCAyMTksIDIzLCAxOSwgMjAsIDg4LCAyMTgsIAotICAgIDE2NywgMTksIDIwLCA4OCwgMTg1LCAxOSwgMjAsIDg4LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAyMzAsIDE5LCAyMCwgCi0gICAgODgsIDIzOCwgMzksIDE5LCAyMCwgODgsIDIzOCwgMTkwLCAxOSwgMjAsIDg4LCAyMzgsIDE4MiwgMTksIDIwLCA4OCwgMjM4LCAKLSAgICA4MSwgMTksIDIwLCA4OCwgMjM5LCA4LCAxOSwgMjAsIDg4LCAyMjksIDEwOSwgMTksIDIwLCA4OCwgMjI5LCAxMTUsIDE5LCAKLSAgICAyMCwgODgsIDIyOSwgMTI5LCAxOSwgMjAsIDg4LCAyMjksIDEyOCwgMTksIDIwLCA4OCwgMjI5LCAxMjIsIDE5LCAyMCwgODgsIAotICAgIDIyOSwgMTQ0LCAxOSwgMjAsIDg4LCAyMjksIDQyLCAxOSwgMjAsIDg4LCAyMjksIDQzLCAxOSwgMjAsIDg4LCAyMjksIDQ2LCAKLSAgICAxOSwgMjAsIDg4LCAyMjksIDQ1LCAxOSwgMjAsIDg4LCAyMjksIDQ0LCAxOSwgMjAsIDg4LCAyMjksIDQ3LCAxOSwgMjAsIAotICAgIDg4LCAyMjksIDQ4LCAxOSwgMjAsIDg4LCAyMjEsIDg0LCAxOSwgMjAsIDg4LCAyMjEsIDE5MSwgMTksIDIwLCA4OCwgMjIyLCAKLSAgICAyNDAsIDE5LCAyMCwgODgsIDIyMiwgMjM1LCAxOSwgMjAsIDg4LCAyMjIsIDEwMCwgMTksIDIwLCA4OCwgMjAxLCAyMDEsIAotICAgIDE5LCAyMCwgODgsIDIyMywgMjQ2LCAxOSwgMjAsIDg4LCAyMjQsIDgyLCAxOSwgMjAsIDg4LCAyMjUsIDIwLCAxOSwgMjAsIAotICAgIDg4LCAyMjUsIDgsIDE5LCAyMCwgODgsIDIyNCwgMTU1LCAxOSwgMjAsIDg4LCAxOTIsIDE5LCAyMCwgODgsIDIwMiwgMjEzLCAKLSAgICAxOSwgMjAsIDg4LCAyMDIsIDI0NywgMTksIDIwLCA4OCwgMjAzLCA1MiwgMTksIDIwLCA4OCwgMjAzLCA0OSwgMTksIDIwLCAKLSAgICA4OCwgMjAzLCAxMSwgMTksIDIwLCA4OCwgMTk4LCAxOSwgMjAsIDg4LCAyMzAsIDgyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIAotICAgIDgyLCAxOSwgMjAsIDg4LCAyMzAsIDEwMSwgMTksIDIwLCA4OCwgMjMwLCAxNjEsIDE5LCAyMCwgODgsIDIzMCwgMTU5LCAxOSwgCi0gICAgMjAsIDg4LCAyMzAsIDE0MSwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCAxNDEsIDE5LCAyMCwgODgsIDIzMCwgMTgxLCAxOSwgCi0gICAgMjAsIDg4LCAyMzAsIDExNCwgMTksIDIwLCA4OCwgMjMwLCAxMTgsIDE5LCAyMCwgODgsIDIzMCwgMTI4LCAxOSwgMjAsIDg4LCAKLSAgICAyMzAsIDEyNywgMTksIDIwLCA4OCwgMjMwLCAxMjYsIDE5LCAyMCwgODgsIDIzMCwgMTI5LCAxOSwgMjAsIDg4LCAyMjYsIAotICAgIDIzOSwgMTksIDIwLCA4OCwgMjI3LCA0OSwgMTksIDIwLCA4OCwgMjI3LCAyMzQsIDE5LCAyMCwgODgsIDIyNywgMjI2LCAxOSwgCi0gICAgMjAsIDg4LCAyMjcsIDE0OCwgMTksIDIwLCA4OCwgMjI4LCAxMTMsIDE5LCAyMCwgODgsIDI0MywgMTE3LCAxOSwgMjAsIDg4LCAKLSAgICAyNDMsIDExOCwgMTksIDIwLCA4OCwgMjQzLCAxMjMsIDE5LCAyMCwgODgsIDI0MywgMTIyLCAxOSwgMjAsIDg4LCAyNDMsIAotICAgIDExOSwgMTksIDIwLCA4OCwgMjQzLCAxMjQsIDE5LCAyMCwgODgsIDIyNywgMTUxLCAxOSwgMjAsIDg4LCAyMjcsIDE1MywgCi0gICAgMTksIDIwLCA4OCwgMjI3LCAxNTcsIDE5LCAyMCwgODgsIDIyNywgMTU2LCAxOSwgMjAsIDg4LCAyMjcsIDE1NSwgMTksIDIwLCAKLSAgICA4OCwgMjI3LCAxNjEsIDE5LCAyMCwgODgsIDIwOCwgMTgxLCAxOSwgMjAsIDg4LCAyMDgsIDE4MywgMTksIDIwLCA4OCwgCi0gICAgMjA4LCAxODYsIDE5LCAyMCwgODgsIDIwOCwgMTg1LCAxOSwgMjAsIDg4LCAyMDgsIDE4NCwgMTksIDIwLCA4OCwgMjA4LCAKLSAgICAxODcsIDE5LCAyMCwgODgsIDIwOCwgMTc2LCAxOSwgMjAsIDg4LCAyMDgsIDE3NywgMTksIDIwLCA4OCwgMjA4LCAxODksIAotICAgIDE5LCAyMCwgODgsIDIwOCwgMTg4LCAxOSwgMjAsIDg4LCAyMDgsIDE3OCwgMTksIDIwLCA4OCwgMjA4LCAxOTAsIDE5LCAyMCwgCi0gICAgODgsIDIwMiwgNiwgMTksIDIwLCA4OCwgMjAyLCAxNywgMTksIDIwLCA4OCwgMjAyLCA5MiwgMTksIDIwLCA4OCwgMjAyLCAKLSAgICA5MCwgMTksIDIwLCA4OCwgMjAyLCAzOSwgMTksIDIwLCA4OCwgMjAyLCAxMTYsIDE5LCAyMCwgODgsIDIwMiwgMTU5LCAxOSwgCi0gICAgMjAsIDg4LCA4MSwgMjAyLCAxNTksIDE5LCAyMCwgODgsIDI0MSwgMjQyLCAxOSwgMjAsIDg4LCAyNDEsIDI0MywgMTksIDIwLCAKLSAgICA4OCwgMjQxLCAyNTIsIDE5LCAyMCwgODgsIDI0MSwgMjUxLCAxOSwgMjAsIDg4LCAyNDEsIDI0NiwgMTksIDIwLCA4OCwgCi0gICAgMjQxLCAyNTUsIDE5LCAyMCwgODgsIDIxMSwgMTAsIDE5LCAyMCwgODgsIDIxMiwgMTMsIDE5LCAyMCwgODgsIDIxNCwgMTc3LCAKLSAgICAxOSwgMjAsIDg4LCAyMTQsIDE2NSwgMTksIDIwLCA4OCwgMjEyLCAxNjIsIDE5LCAyMCwgODgsIDIxNSwgMzYsIDE5LCAyMCwgCi0gICAgODgsIDIxMiwgMTk5LCAxOSwgMjAsIDg4LCAyMTIsIDI0MiwgMTksIDIwLCA4OCwgMjEzLCA0MywgMTksIDIwLCA4OCwgMjEzLCAKLSAgICA0MSwgMTksIDIwLCA4OCwgMjEzLCAxMSwgMTksIDIwLCA4OCwgMjEzLCA5MCwgMTksIDIwLCA4OCwgMjEzLCA5MiwgMTksIAotICAgIDIwLCA4OCwgMjA3LCAyNDksIDE5LCAyMCwgODgsIDIwNywgMjUzLCAxOSwgMjAsIDg4LCAyMDgsIDE0LCAxOSwgMjAsIDg4LCAKLSAgICAyMDgsIDEzLCAxOSwgMjAsIDg4LCAyMDcsIDI1NSwgMTksIDIwLCA4OCwgMjA4LCAyMCwgMTksIDIwLCA4OCwgMjQ2LCA5OCwgCi0gICAgMTksIDIwLCA4OCwgMjQ2LCAxMTYsIDE5LCAyMCwgODgsIDI0NiwgMTcwLCAxOSwgMjAsIDg4LCAyNDYsIDE2NiwgMTksIDIwLCAKLSAgICA4OCwgMjQ2LCAxNDIsIDE5LCAyMCwgODgsIDI0NiwgMTk5LCAxOSwgMjAsIDg4LCAyMDcsIDIxMSwgMTksIDIwLCA4OCwgCi0gICAgMjA3LCAyMTIsIDE5LCAyMCwgODgsIDIwNywgMjE1LCAxOSwgMjAsIDg4LCAyMDcsIDIxNCwgMTksIDIwLCA4OCwgMjA3LCAKLSAgICAyMTMsIDE5LCAyMCwgODgsIDIwNywgMjE2LCAxOSwgMjAsIDI0NiwgMTQzLCA1NCwgMTksIDIwLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMTksIDIwLCAyMTcsIDExOCwgMTksIDIwLCAyMjIsIDE5OSwgMTksIDIwLCAyMjEsIDIxNywgMTksIDIwLCAyMjEsIAotICAgIDIxNiwgMTksIDIwLCAyMjEsIDIxNSwgMTksIDIwLCAyMjEsIDIxNCwgMTksIDIwLCAyMjEsIDIxOSwgMTksIDIwLCAyMjEsIAotICAgIDIxOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA5LCAxOSwgMjAsIDIwMywgCi0gICAgMjQyLCAyMDksIDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNywgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA2LCAxOSwgMjAsIAotICAgIDIwMywgMjQyLCAyMDksIDEzLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEyLCAxOSwgMjAsIDIwMywgMjQyLCA0NiwgMjA5LCAKLSAgICAxMTAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxNDQsIDIyMCwgNjQsIDIxMSwgMjI5LCA4MiwgMjIwLCA2NCwgMSwgMjQ4LCAKLSAgICAxMzIsIDIyMCwgNjQsIDEsIDIyNiwgMjI1LCAyMjAsIDY0LCAxLCAyNDAsIDU3LCAyMjAsIDY0LCAxLCAyMTUsIDE2LCAyMjAsIAotICAgIDY0LCAxLCAyMjIsIDU2LCAyMjAsIDY0LCAxLCAyMDcsIDM2LCAyMjAsIDY0LCAxLCAyNDQsIDE4NiwgMjIwLCA2NCwgMSwgCi0gICAgMjA4LCAyMTQsIDIyMCwgNjQsIDEsIDI0NSwgMjQ1LCAyMjAsIDY0LCAxLCAyNDYsIDIyNSwgMjIwLCA2NCwgMSwgMjIzLCAKLSAgICAyMzMsIDIyMCwgNjQsIDEsIDIzOCwgMjAsIDIyMCwgNjQsIDEsIDIyMiwgMTg5LCAyMjAsIDY0LCAxLCAyMTEsIDU0LCAyMjAsIAotICAgIDY0LCAxLCAyMTUsIDEzOCwgMjIwLCA2NCwgMSwgMjUxLCA2MSwgMjIwLCA2NCwgMSwgMjIwLCAyMiwgMjIwLCA2NCwgMSwgCi0gICAgMjA2LCAyMTAsIDIyMCwgNjQsIDEsIDI0MSwgMTg3LCAyMjAsIDY0LCAxLCAyMzAsIDIzMywgMjIwLCA2NCwgMSwgMjQxLCAKLSAgICAxODgsIDIyMCwgNjQsIDEsIDIxOSwgMjQ0LCAyMjAsIDY0LCAxLCAyMDcsIDE1LCAyMjAsIDY0LCAxLCAyMzEsIDg5LCAyMjAsIAotICAgIDY0LCAxLCAyNDEsIDE4NSwgMjIwLCA2NCwgMSwgMjE5LCAxMywgMjIwLCA2NCwgMjQwLCA1NiwgODIsIDIyMCwgNjQsIDIxNiwgCi0gICAgNzMsIDI0MCwgNTYsIDgyLCAxOTcsIDEsIDI0MCwgNDYsIDI0MCwgMzgsIDI0MCwgNjEsIDI0MCwgMTc0LCAxOTcsIDEsIAotICAgIDIwNiwgMTY0LCAxOTcsIDEsIDIwNiwgMTk1LCAyMDYsIDIxMSwgNjgsIDE5NywgMSwgMjAyLCAyMTYsIDE5NywgMSwgMjAzLCAKLSAgICAxMjQsIDE5NywgMSwgMjA0LCAxNDQsIDE5NywgMSwgMjA5LCAxNSwgMjA5LCAxNCwgMjA5LCA0MCwgMTk3LCAxLCAyNDAsIAotICAgIDI0MywgMTk3LCAxLCAyNTAsIDE5OSwgNjMsIDE5NywgMSwgMjE5LCAyMjgsIDc4LCAxOTcsIDEsIDI1MSwgMTQyLCA2MywgCi0gICAgMTk3LCAxLCAyNTEsIDkzLCAxOTcsIDEsIDIyNywgMjQsIDc4LCAxOTcsIDEsIDIxMiwgMjIxLCA3OCwgMTk3LCAxLCA3OCwgCi0gICAgMTk3LCAxLCAyMjAsIDczLCAxOTcsIDEsIDIyMCwgMzEsIDE5NywgMSwgMjE2LCAxOTUsIDIxNiwgMjA4LCAyMTYsIDEyMCwgCi0gICAgMTQ2LCAxOTcsIDEsIDIyOSwgMjE2LCAxOTcsIDEsIDI0NiwgMjIxLCAxOTcsIDEsIDIyOSwgMjE3LCAyMzAsIDU0LCAxOTcsIAotICAgIDEsIDIzOSwgNzUsIDE5NywgMSwgMjQxLCA3OCwgMTk3LCAxLCAyMzgsIDE4NSwgMjM3LCAxNzcsIDIzOSwgNzUsIDE5NywgMSwgCi0gICAgMjM4LCAyMjQsIDE5NywgMSwgMjAzLCAyMDksIDIwMywgMjAwLCAyMDQsIDE0NCwgMTk3LCAxLCAyMzcsIDE0OSwgMjM3LCAKLSAgICAxNzEsIDE5NywgMSwgMjM3LCAxNTMsIDIzNywgMTcxLCAxOTcsIDEsIDIyNywgMjYsIDIzNywgMTcxLCAxOTcsIDEsIDIxMiwgCi0gICAgMjI0LCAyMzcsIDE3MSwgMTk3LCAxLCAyMjMsIDYzLCAyMjEsIDIsIDIyMywgNjQsIDIyMywgMTYzLCAxOTcsIDEsIDIxMiwgCi0gICAgMjIyLCAyMjMsIDE2MywgMTk3LCAxLCAyNDIsIDgwLCAxOTcsIDEsIDIzMCwgMjEyLCAyMzAsIDIxNiwgMjMwLCAyMDMsIDc1LCAKLSAgICAxOTcsIDEsIDc0LCAxOTcsIDEsIDIzMCwgMTUyLCAyMzAsIDE4NCwgMTk3LCAxLCAyMzgsIDE2OSwgMTk3LCAxLCAyMjcsIAotICAgIDI3LCAyNTEsIDEwOSwgMTk3LCAxLCAyMTIsIDIyNiwgNjMsIDE5NywgMSwgMjMwLCAxOTUsIDI0MSwgNTEsIDE5NywgMSwgCi0gICAgMjE4LCAyMjYsIDIxOCwgMjUxLCAyMTksIDE4NCwgMTk3LCAxLCAyNTEsIDIzLCAyNDEsIDQ5LCAxOTcsIDEsIDIxMSwgMjM0LCAKLSAgICAxOTQsIDE5NywgMSwgMjEyLCAxNDYsIDIyNywgMjMsIDE5NCwgMTk3LCAxLCAyMTIsIDIyMCwgMTk0LCAxOTcsIDEsIDI0NywgCi0gICAgMTI1LCAxOTcsIDEsIDIwMiwgMTU5LCAxOTcsIDEsIDIwOCwgMTk1LCAyMDgsIDIwNywgMjA3LCAxMDgsIDIxMCwgNjksIAotICAgIDE5NywgMSwgMjEyLCAyMTksIDIxMCwgNjksIDE5NywgMSwgMjQ1LCA1MSwgMTk3LCAxLCAyNDgsIDExMSwgMjQ4LCAxMTQsIAotICAgIDI0OCwgNDYsIDI0OSwgMjU1LCAxOTcsIDEsIDIxMiwgMjI1LCAyNDksIDI1NSwgMTk3LCAxLCAyNDIsIDc5LCAxOTcsIDEsIAotICAgIDIyMCwgMiwgMTk3LCAxLCAyNDEsIDE0NiwgMjQxLCAxNDgsIDc0LCAxOTcsIDEsIDIyNSwgMTEzLCAyMjUsIDEyMywgMjI2LCAKLSAgICAxODUsIDE5NywgMSwgMjI3LCAyNSwgMjI2LCAxODUsIDE5NywgMSwgMjEyLCAyMjMsIDIyNiwgMTg1LCAxOTcsIDEsIDIyNywgCi0gICAgMjQ5LCAyMjgsIDkxLCAyMjcsIDM0LCAxNTksIDE5NywgMSwgMjQyLCA4MSwgMTk3LCAxLCAyMzEsIDIzLCAxOTcsIDEsIAotICAgIDIzMSwgMjQsIDE5NywgMSwgMjQ0LCAyMDAsIDI0NCwgMjA2LCAyNDUsIDUxLCAxOTcsIDEsIDIxOSwgMjIyLCAyNDAsIDI0MiwgCi0gICAgNzgsIDE5NywgMSwgMjQxLCAxODMsIDE5NywgMSwgMjMwLCAyMzIsIDE5NywgMSwgMjQ1LCA3MSwgMTk3LCAxLCAyNDcsIDc1LCAKLSAgICAxOTcsIDEsIDI0NiwgMjM3LCAxOTcsIDEsIDIxMSwgOTksIDE5NywgMSwgMjI3LCAyMiwgMTk3LCAxLCAyMTIsIDIxOCwgCi0gICAgMTk3LCAxLCAyMzUsIDE2MSwgMTk3LCAxLCAyMTcsIDEzNCwgMTk3LCAxLCAyMDMsIDE5NiwgMTk3LCAyMTIsIDEyMCwgMjE3LCAKLSAgICAxNzgsIDE5NywgMjIzLCAyMjYsIDIxNywgMTc4LCAxOTcsIDI0NSwgMTMxLCAyMTcsIDE3OCwgMTk3LCAyNTAsIDEwOCwgOTcsIAotICAgIDE5NywgMjA3LCAxNjIsIDk3LCAxOTcsIDI0OCwgMTMwLCA5NywgMTk3LCAxLCAyMzAsIDU0LCAxOTcsIDEsIDIxMywgOTIsIAotICAgIDE5NywgMSwgMjIwLCAxOCwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjE5LCAyMjcsIDE5NywgMSwgMjM5LCAxMzEsIAotICAgIDI0NywgMjAsIDIzMCwgMjE1LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyNDEsIDE0NywgMTk3LCAxLCAyMzksIDEzMSwgCi0gICAgMjQ3LCAyMCwgMjUxLCAxNDEsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI1MSwgOTMsIDIwOSwgMjU0LCAxLCA2MywgCi0gICAgMjA5LCAyNTQsIDEsIDc1LCAyMDksIDI1NCwgMSwgNjgsIDIwOSwgMjU0LCAxLCAxNzMsIDIwOSwgMjU0LCAxLCAyMzksIDgsIAotICAgIDIwOSwgMjU0LCAxLCAyMjIsIDIwMywgMjA5LCAyNTQsIDEsIDIxMCwgMjIsIDIwOSwgMjU0LCAxLCAyNDQsIDIxMiwgMjA5LCAKLSAgICAyNTQsIDEsIDIwMSwgMjAxLCAyMDksIDI1NCwgMSwgMTg1LCAyMDksIDI1NCwgMSwgMjQ5LCAzMiwgMjA5LCAyNTQsIDEsIAotICAgIDE5MiwgMjA5LCAyNTQsIDEsIDE5OCwgMjA5LCAyNTQsIDEsIDIyOCwgMTEzLCAyMDksIDI1NCwgMSwgMjA0LCAxMTEsIDIwOSwgCi0gICAgMjU0LCAxLCAyMTUsIDM2LCAyMDksIDI1NCwgMSwgMTUyLCAyMDksIDI1NCwgMjIsIDIsIDc1LCAyMDksIDI1NCwgMjIsIDIsIAotICAgIDY4LCAyMDksIDI1NCwgMiwgMjA1LCAyMDQsIDIzNywgOTYsIDEsIDYzLCAyMzcsIDk2LCAxLCA3NSwgMjM3LCA5NiwgMSwgCi0gICAgNjgsIDIzNywgOTYsIDEsIDE3MywgMjM3LCA5NiwgMSwgMjM5LCA4LCAyMzcsIDk2LCAxLCAyMjIsIDIwMywgMjM3LCA5NiwgCi0gICAgMSwgMjEwLCAyMiwgMjM3LCA5NiwgMSwgMjQ0LCAyMTIsIDIzNywgOTYsIDEsIDIwMSwgMjAxLCAyMzcsIDk2LCAxLCAxODUsIAotICAgIDIzNywgOTYsIDEsIDI0OSwgMzIsIDIzNywgOTYsIDEsIDE5MiwgMjM3LCA5NiwgMSwgMTk4LCAyMzcsIDk2LCAxLCAyMTYsIAotICAgIDIyMCwgMjM3LCA5NiwgMSwgMjI4LCAxMTMsIDIzNywgOTYsIDEsIDIwNCwgMTExLCAyMzcsIDk2LCAxLCAyMTUsIDM2LCAKLSAgICAyMzcsIDk2LCAxLCAxNTIsIDIzNywgOTYsIDIyLCAyLCA3NSwgMjM3LCA5NiwgMjIsIDIsIDY4LCAyMzcsIDk2LCAyLCAyMTksIAotICAgIDEyNCwgMjE4LCAxODUsIDIxMiwgMTIwLCAyMTcsIDE3OCwgMjE4LCAxODUsIDUyLCAyMTcsIDE3OCwgMjQ3LCAxODUsIDEsIAotICAgIDYzLCAyNDcsIDE4NSwgMSwgNzUsIDI0NywgMTg1LCAxLCA2OCwgMjQ3LCAxODUsIDEsIDE3MywgMjQ3LCAxODUsIDEsIDIzOSwgCi0gICAgOCwgMjQ3LCAxODUsIDEsIDIyMiwgMjAzLCAyNDcsIDE4NSwgMSwgMjEwLCAyMiwgMjQ3LCAxODUsIDEsIDI0NCwgMjEyLCAKLSAgICAyNDcsIDE4NSwgMSwgMjAxLCAyMDEsIDI0NywgMTg1LCAxLCAxODUsIDI0NywgMTg1LCAxLCAyNDksIDMyLCAyNDcsIDE4NSwgCi0gICAgMSwgMTkyLCAyNDcsIDE4NSwgMSwgMTk4LCAyNDcsIDE4NSwgMSwgMjE2LCAyMjAsIDI0NywgMTg1LCAxLCAyMjgsIDExMywgCi0gICAgMjQ3LCAxODUsIDEsIDIwNCwgMTExLCAyNDcsIDE4NSwgMSwgMjE1LCAzNiwgMjQ3LCAxODUsIDEsIDE1MiwgMjQ3LCAxODUsIAotICAgIDIyLCAyLCA3NSwgMjQ3LCAxODUsIDIyLCAyLCA2OCwgMjA5LCAyNTMsIDEsIDYzLCAyMDksIDI1MywgMSwgNzUsIDIwOSwgCi0gICAgMjUzLCAxLCA2OCwgMjA5LCAyNTMsIDEsIDE3MywgMjA5LCAyNTMsIDEsIDIzOSwgOCwgMjA5LCAyNTMsIDEsIDIyMiwgMjAzLCAKLSAgICAyMDksIDI1MywgMSwgMjEwLCAyMiwgMjA5LCAyNTMsIDEsIDI0NCwgMjEyLCAyMDksIDI1MywgMSwgMjAxLCAyMDEsIDIwOSwgCi0gICAgMjUzLCAxLCAxODUsIDIwOSwgMjUzLCAxLCAyNDksIDMyLCAyMDksIDI1MywgMSwgMTkyLCAyMDksIDI1MywgMSwgMTk4LCAKLSAgICAyMDksIDI1MywgMSwgMjI4LCAxMTMsIDIwOSwgMjUzLCAxLCAyMDQsIDExMSwgMjA5LCAyNTMsIDEsIDIxNSwgMzYsIDIwOSwgCi0gICAgMjUzLCAyMiwgMiwgNzUsIDIwOSwgMjUzLCAyMiwgMiwgNjgsIDg1LCAxLCAxNzMsIDg1LCAxLCAyMjksIDE0NCwgODUsIDEsIAotICAgIDIyOSwgMjYsIDg1LCAxLCAyMjksIDExNSwgODUsIDEsIDIyMiwgMTI4LCA4NSwgMSwgMjQ3LCA5MiwgODUsIDEsIDI0NiwgCi0gICAgMTk5LCA4NSwgMSwgMjQ1LCAyNTQsIDg1LCAxLCAyNDYsIDExNiwgODUsIDEsIDIyMCwgMjMzLCA4NSwgMSwgMjQ0LCAyMTIsIAotICAgIDg1LCAxLCAyMDcsIDIyOSwgODUsIDEsIDI0MywgMTEzLCA4NSwgMSwgMjA3LCAyMjQsIDg1LCAxLCAyMjEsIDE5NywgODUsIAotICAgIDEsIDIxMCwgMjIsIDg1LCAxLCAyMDksIDEwOCwgODUsIDEsIDEzNSwgODUsIDEsIDIwOSwgNDcsIDg1LCAxLCAyMjEsIDE5MSwgCi0gICAgODUsIDEsIDI0OSwgMzIsIDg1LCAxLCAyMTgsIDIwOCwgODUsIDEsIDIxOCwgNjksIDg1LCAxLCAyMTgsIDE4MCwgODUsIDEsIAotICAgIDIyNCwgODIsIDg1LCAxLCAyMDIsIDI0NywgODUsIDEsIDIxNSwgMjI3LCA4NSwgMSwgMjI3LCA0OSwgODUsIDEsIDIwNSwgCi0gICAgMTg5LCA4NSwgMSwgMjEzLCA5MCwgODUsIDEsIDIxMSwgMTI0LCA4NSwgMSwgMjE1LCAzNiwgODUsIDEsIDE1MiwgODUsIDEsIAotICAgIDIyOCwgMTEzLCA4NSwgMSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAxMTIsIDg1LCAyMzEsIDM2LCAyMiwgCi0gICAgMjE3LCAxMjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA4OCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDgzLCA4NSwgMjMxLCAKLSAgICAzNiwgMjIsIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAzNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDIzLCA4NSwgCi0gICAgMjMxLCAzNiwgMjIsIDIxNywgMjIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAxMDIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAKLSAgICA5NSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE5OSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE4OCwgODUsIDIzMSwgMzYsIAotICAgIDIyLCAyMTcsIDEwNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDczLCAyMDcsIAotICAgIDEyMSwgMTA1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgMTIxLCAxMDgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAKLSAgICAxMDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUwLCAxNDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUyLCAyNSwgODUsIDIyLCAyLCAyNTIsIAotICAgIDI1LCA4NSwgMjIsIDIsIDc1LCA4NSwgMjIsIDIsIDIzMSwgODMsIDg1LCAyMiwgMiwgMjAzLCAxMjQsIDg1LCAyMiwgMiwgCi0gICAgMjAyLCAxNjksIDg1LCAyMiwgMiwgNjgsIDg1LCAyMiwgMiwgMjA2LCAxNzgsIDg1LCAyMiwgMiwgMjA3LCAzOSwgODUsIDIyLCAKLSAgICAyLCAyMjAsIDczLCA4NSwgMjIsIDIsIDE5OCwgODUsIDIyLCAyLCAyMzEsIDExMCwgODUsIDIyLCAyLCA3NCwgODUsIDIyLCAKLSAgICAyLCAyNTEsIDEwOSwgODUsIDIyLCAyLCAyNTEsIDY0LCA4NSwgMjIsIDIsIDIyMCwgMTgsIDg1LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgODUsIDIsIDIyMiwgNzMsIDg1LCAyLCAyMTYsIDE1NiwgODUsIDIsIDIwMiwgMTgwLCA4NSwgMiwgMjIzLCAxOTAsIDg1LCAyLCAKLSAgICAyMDgsIDczLCA4NSwgMiwgMjQ4LCAyMzMsIDg1LCAyLCAyMTUsIDIyMiwgODUsIDIsIDIwOCwgMTcxLCA4NSwgMiwgMjMwLCAKLSAgICAxMSwgODUsIDIsIDI1MSwgNjYsIDg1LCAyLCAyMTQsIDI0NCwgMjE0LCAyMzcsIDg1LCAyLCAyMDUsIDIwMSwgODUsIDIsIAotICAgIDI0NSwgMjQ4LCA4NSwgMiwgMjQ4LCAyMDUsIDg1LCAyLCAyMjksIDEzNiwgODUsIDIsIDI0OCwgMjI4LCA4NSwgMiwgMjQ3LCAKLSAgICA2NCwgMjE4LCAxMzAsIDIyOCwgMTczLCA4NSwgMiwgMjI3LCAyMDMsIDIwOCwgMTQ4LCA4NSwgMiwgMjQ4LCAxMDAsIDg1LCAKLSAgICAyLCAyMTgsIDE4MiwgMjIzLCAyNDMsIDg1LCAyLCAyMjksIDQsIDg1LCAyNDUsIDkyLCAxNiwgMjE2LCA0OSwgODUsIDIsIAotICAgIDI1MCwgMTYsIDg1LCAyLCAyNTAsIDM3LCA4NSwgMTcsIDIwMiwgODQsIDg1LCAxNywgMTA1LCA4NSwgMTcsIDEwOCwgODUsIAotICAgIDE3LCAxNDcsIDg1LCAxNywgMTQ5LCA4NSwgMTcsIDE3MCwgODUsIDE3LCAxOTUsIDg1LCAxNywgMjEzLCAxMTEsIDg1LCAxNywgCi0gICAgMTk5LCA4NSwgMTcsIDIyMiwgNjMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxMSwgMjUzLCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMjMsIDIxMCwgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCAxMjksIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDI0OCwgMTMzLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyNDcsIDE2NSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE4LCA3LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIxNywgMjU1LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDUsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIxOCwgMywgOTQsIDI0OCwgNTksIDk0LCAyNDEsIDEwOCwgOTQsIDI0NSwgMjMzLCA5NCwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDk0LCAyNDUsIDI0MiwgOTQsIDIzOSwgMTQ3LCAyNDMsIDgzLCA5NCwgMjA4LCAxNzAsIDIxMiwgNywgCi0gICAgMjM1LCAyMjAsIDk0LCAyMTIsIDE2MCwgNCwgMjQ3LCAyNDQsIDIyNSwgODgsIDk0LCAyMjUsIDExOSwgMjQ1LCAyMzMsIDk0LCAKLSAgICAyMjUsIDExOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDk0LCAyMjIsIDU0LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgCi0gICAgMTA1LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTA4LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTQ3LCAKLSAgICA5NCwgMjIsIDIxMywgMTMwLCA5NCwgMTcsIDIwMiwgODQsIDk0LCAxNywgMTA1LCA5NCwgMTcsIDEwOCwgOTQsIDE3LCAxNDcsIAotICAgIDk0LCAxNywgMTQ5LCA5NCwgMTcsIDE3MCwgOTQsIDE3LCAxOTUsIDk0LCAxNywgMjEzLCAxMTEsIDk0LCAxNywgMTk5LCA5NCwgCi0gICAgMTcsIDIyMiwgNjMsIDk0LCAxLCA2MywgOTQsIDEsIDc0LCA5NCwgMSwgNzUsIDk0LCAxLCA3OCwgOTQsIDEsIDY4LCA5NCwgCi0gICAgMSwgMjIwLCA3MywgOTQsIDEsIDIwNywgMjQsIDk0LCAxLCAyNDEsIDE2MSwgOTQsIDEsIDIwMSwgMjAxLCA5NCwgMSwgMjUwLCAKLSAgICAyMjMsIDk0LCAxLCAyNDksIDMyLCA5NCwgMSwgMTg1LCA5NCwgMSwgMjE3LCAxMjYsIDk0LCAxLCAyMzksIDgsIDk0LCAxLCAKLSAgICAxOTIsIDk0LCAxLCAyMjgsIDExMywgOTQsIDEsIDIxNSwgMzYsIDk0LCAxLCAyMTMsIDkwLCA5NCwgMSwgMjEwLCAyMiwgOTQsIAotICAgIDEsIDI0NCwgMjEyLCA5NCwgMSwgMjQ2LCAxOTksIDk0LCAxLCAyMzAsIDE4MSwgOTQsIDEsIDE5OCwgOTQsIDEsIDIxNiwgCi0gICAgMjIwLCA5NCwgMSwgMjA0LCAxMTEsIDk0LCAxLCAyNDAsIDEwOCwgOTQsIDEsIDE3MywgOTQsIDEsIDIyOSwgMTQ0LCA5NCwgCi0gICAgMSwgMjA4LCAyMCwgOTQsIDEsIDIwMiwgMTE2LCA5NCwgMSwgMjM3LCAxNTcsIDk0LCAxLCAyMDIsIDEwLCA5NCwgMSwgMjI3LCAKLSAgICAxNjEsIDk0LCAxLCAyMDIsIDY2LCA5NCwgMSwgMjQ2LCAxNDIsIDk0LCAxLCAyMDgsIDE3MCwgMTYzLCAyMiwgNTQsIDk0LCAKLSAgICAxLCAyMDgsIDE3MCwgNzQsIDk0LCAxLCAyMDgsIDE3MCwgNzUsIDk0LCAxLCAyMDgsIDE3MCwgNzgsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgNjgsIDk0LCAxLCAyMDgsIDE3MCwgMjIwLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAyMDcsIDI0LCA5NCwgMSwgMjA4LCAKLSAgICAxNzAsIDI1MCwgMjIzLCA5NCwgMSwgMjA4LCAxNzAsIDI0OSwgMzIsIDk0LCAxLCAyMDgsIDE3MCwgMTg1LCA5NCwgMSwgCi0gICAgMjA4LCAxNzAsIDIxNywgMTI2LCA5NCwgMSwgMjA4LCAxNzAsIDIzOSwgOCwgOTQsIDEsIDIwOCwgMTcwLCAxOTIsIDk0LCAxLCAKLSAgICAyMDgsIDE3MCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDQsIDIxMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDYsIDE5OSwgCi0gICAgOTQsIDEsIDIwOCwgMTcwLCAyMzAsIDE4MSwgOTQsIDEsIDIwOCwgMTcwLCAyMDgsIDIwLCA5NCwgMSwgMjA4LCAxNzAsIAotICAgIDE5OCwgOTQsIDEsIDIwOCwgMTcwLCAyMDQsIDExMSwgOTQsIDEsIDIwOCwgMTcwLCAxNzMsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMjM5LCA1LCA5NCwgMSwgMjA4LCAxNzAsIDIzNywgMTU3LCA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTQwLCA5NCwgMSwgMjA4LCAKLSAgICAxNzAsIDIyMiwgOTgsIDk0LCAxLCAyMDgsIDE3MCwgMjQxLCAyNTUsIDk0LCAxLCAyMTIsIDE2MCwgNzQsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgNzUsIDk0LCAxLCAyMTIsIDE2MCwgMjMwLCAxOTIsIDk0LCAxLCAyMTIsIDE2MCwgMjA3LCAyNCwgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCA2OCwgOTQsIDEsIDIxMiwgMTYwLCAyNTAsIDIyMywgOTQsIDEsIDIxMiwgMTYwLCAxNzMsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgMjM5LCA4LCA5NCwgMSwgMjEyLCAxNjAsIDE1MiwgOTQsIDEsIDIxMiwgMTYwLCAxODUsIDk0LCAxLCAyMTIsIDE2MCwgCi0gICAgMjEzLCA5MCwgOTQsIDEsIDIxMiwgMTYwLCAyMTAsIDIyLCA5NCwgMSwgMjEyLCAxNjAsIDI0NCwgMjEyLCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDIzMCwgMTgxLCA5NCwgMSwgMjEyLCAxNjAsIDI0MCwgMTA4LCA5NCwgMSwgMjEyLCAxNjAsIDIzOSwgNSwgOTQsIDEsIAotICAgIDIxMiwgMTYwLCAyMzcsIDE1NywgOTQsIDEsIDIxMiwgMTYwLCAyMDgsIDIwLCA5NCwgMSwgMjEyLCAxNjAsIDIwMiwgMTE2LCAKLSAgICA5NCwgMSwgMjEyLCAxNjAsIDIxNiwgMjE2LCA5NCwgMSwgMjEyLCAxNjAsIDI0NiwgMTk5LCA5NCwgMSwgMjEyLCAxNjAsIAotICAgIDIwMiwgODAsIDk0LCAxLCAyMjUsIDExOSwgNzUsIDk0LCAxLCAyMjUsIDExOSwgMTczLCA5NCwgMSwgMjI1LCAxMTksIDIxNiwgCi0gICAgMjIwLCA5NCwgMSwgMjI1LCAxMTksIDI0MCwgMTA4LCA5NCwgMSwgMjI1LCAxMTksIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjUwLCAxODEsIDEwNSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDUsIDIwMCwgMTA1LCA5NCwgMSwgCi0gICAgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTc0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMzQsIDk0LCAxLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAyMzksIDIwNywgMzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ4LCAyNDUsIAotICAgIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTI2LCAyNDgsIDI0NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA2MywgCi0gICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA3NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNzMsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjIyLCAyMDMsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMDcsIDI0MSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDcsIDIyOSwgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyNDQsIDEyMCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMjEsIDIyNywgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjEyLCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDE4NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTgsIDIwOCwgOTQsIDEsIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgMSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIwMiwgMTE2LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI1MSwgNzMsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyMDgsIDE3MCwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIAotICAgIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIzOCwgMTE5LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIAotICAgIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAxNDksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAKLSAgICAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDEwNCwgOTQsIDEsIDIyNSwgCi0gICAgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAKLSAgICAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjQ1LCA2NSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgOTQsIAotICAgIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTYyLCAKLSAgICA2OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIDE5OCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAotICAgIDI0NCwgMjQ4LCA5OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDIwMSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjI3LCAxNjEsIDE5LCAyMCwgMjE5LCAxODgsIDE5LCAyMCwgMjUwLCA4LCAxOSwgMjAsIDI1MSwgCi0gICAgMjM2LCAxOSwgMjAsIDIwNCwgNjUsIDE5LCAyMCwgMjE4LCAxMywgMTksIDIwLCAyMTksIDQzLCAxOSwgMjAsIDIxNywgMTQzLCAKLSAgICAxOSwgMjAsIDIwOSwgMTk2LCAxOSwgMjAsIDIyOSwgMjA4LCAxOSwgMjAsIDIyOCwgMTY0LCAxOSwgMjAsIDIyNSwgNjMsIAotICAgIDE5LCAyMCwgMjIxLCAxNDksIDE5LCAyMCwgMjIzLCA1OSwgMTksIDIwLCAyMjcsIDI0NCwgMTksIDIwLCAyMTEsIDIzMiwgCi0gICAgMTksIDIwLCAyMTQsIDIwOCwgMTksIDIwLCAyMTIsIDIwNywgMTksIDIwLCAyMTMsIDQ3LCAxOSwgMjAsIDIxMiwgMTcyLCAKLSAgICAxOSwgMjAsIDIwMiwgMjIyLCAxOSwgMjAsIDIwMywgNTgsIDE5LCAyMCwgMjE2LCAxNjUsIDE5LCAyMCwgMjIxLCAxNywgMTksIAotICAgIDIwLCAyMjAsIDUzLCAyMjEsIDE3LCAxOSwgMjAsIDIyMSwgMTYsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNiwgMTksIDIwLCAKLSAgICAyMjEsIDE1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgMTUsIDE5LCAyMCwgMjIxLCAxNCwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIAotICAgIDE0LCAxOSwgMjAsIDIxNSwgMTA3LCAxOSwgMjAsIDIxNSwgMTA2LCAxOSwgMjAsIDIxNSwgMTA1LCAxOSwgMjAsIDIxNSwgCi0gICAgMTA0LCAxOSwgMjAsIDIxNSwgMTAzLCAxOSwgMjAsIDIxNSwgMTExLCAxOSwgMjAsIDIyMCwgNTMsIDIxOSwgMTg0LCAxOSwgCi0gICAgMjAsIDIyMCwgNTMsIDIxMCwgNjksIDE5LCAyMCwgMjIwLCA1MywgMjMwLCA1NCwgMTksIDIwLCAyMjAsIDUzLCAyNDcsIAotICAgIDEyNSwgMTksIDIwLCAyMjAsIDUzLCAyMjYsIDE4NSwgMTksIDIwLCAyMjAsIDUzLCAyMjMsIDE2MywgMTksIDIwLCAyMjAsIAotICAgIDUzLCAxOTQsIDE5LCAyMCwgMjIwLCA1MywgMjEzLCA5MiwgMTksIDIwLCAyNDEsIDE3NCwgMjA0LCAxNDQsIDE5LCAyMCwgCi0gICAgMjA0LCA0NCwgMjA0LCAxNDQsIDE5LCAyMCwgNDYsIDUsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMTYsIDE4OCwgMjQzLCAKLSAgICA4NSwgMTksIDIwLCAyMTcsIDAsIDIxNSwgMTA4LCAxOSwgMjAsIDE5NiwgMjI3LCAxOCwgMTksIDIwLCAxOTYsIDIyOCwgCi0gICAgMTEyLCAxOSwgMjAsIDIwOSwgMTEsIDE5LCAyMCwgMjA5LCAxMywgMTksIDIwLCAyMDcsIDIyMSwgMTksIDIwLCAyMDcsIAotICAgIDIyMywgMTksIDIwLCAyMDcsIDIyOCwgMTksIDIwLCAyMDgsIDE4MCwgMTksIDIwLCAyMDgsIDE4MiwgMTksIDIwLCAyMTQsIAotICAgIDIwNiwgMjEyLCAxNzcsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjM2LCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDExNywgCi0gICAgMTksIDIwLCA4OCwgMjM3LCAxODUsIDE5LCAyMCwgODgsIDI0NCwgMzUsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzksIDUsIAotICAgIDE5LCAyMCwgODgsIDIzNywgMTkwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDY0LCAxOSwgMjAsIDg4LCAyMzAsIDYyLCAxOSwgCi0gICAgMjAsIDI0OCwgMTUzLCAyNDQsIDM1LCAxNTksIDE5LCAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE0NiwgMTksIDIwLCA4OCwgCi0gICAgMjQ0LCAzMCwgMTk0LCAyMjcsIDEyNCwgMjA1LCAxNjksIDIyNywgMTc0LCAyMjcsIDEyNCwgMSwgMTczLCAyMjcsIDEyNCwgCi0gICAgMSwgMjI5LCAxNDQsIDIyNywgMTI0LCAxLCAyMzksIDgsIDIyNywgMTI0LCAxLCAyMzgsIDExOSwgMjI3LCAxMjQsIDEsIAotICAgIDIyMiwgMjAzLCAyMjcsIDEyNCwgMSwgMjQ3LCA5MiwgMjI3LCAxMjQsIDEsIDI0NiwgMTk5LCAyMjcsIDEyNCwgMSwgMjMwLCAKLSAgICAxODEsIDIyNywgMTI0LCAxLCAyMzAsIDE0OSwgMjI3LCAxMjQsIDEsIDIwMywgNzgsIDIyNywgMTI0LCAxLCAyMTAsIDIyLCAKLSAgICAyMjcsIDEyNCwgMSwgMjA5LCAxMDgsIDIyNywgMTI0LCAxLCAyNDQsIDIxMiwgMjI3LCAxMjQsIDEsIDI0NCwgMSwgMjI3LCAKLSAgICAxMjQsIDEsIDIwMSwgMjAxLCAyMjcsIDEyNCwgMSwgMTg1LCAyMjcsIDEyNCwgMSwgMjE4LCAyMDgsIDIyNywgMTI0LCAxLCAKLSAgICAyNDksIDMyLCAyMjcsIDEyNCwgMSwgMjQ4LCA5OCwgMjI3LCAxMjQsIDEsIDE5MiwgMjI3LCAxMjQsIDEsIDE5OCwgMjI3LCAKLSAgICAxMjQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMSwgMjI4LCAxMTMsIDIyNywgMTI0LCAxLCAyMDQsIDExMSwgMjI3LCAxMjQsIAotICAgIDEsIDIxMywgOTAsIDIyNywgMTI0LCAxLCAyMTEsIDE2NCwgMjI3LCAxMjQsIDEsIDIxNSwgMzYsIDIyNywgMTI0LCAxLCAKLSAgICAxNTIsIDIyNywgMTI0LCAxLCAyMzcsIDE4MSwgMjI3LCAxMjQsIDEsIDIwOCwgMTE5LCAyMjcsIDEyNCwgMjIsIDIsIDYzLCAKLSAgICAyMjcsIDEyNCwgMjIsIDIsIDc1LCAyMjcsIDEyNCwgMjIsIDIsIDY4LCAyMjcsIDEyNCwgMjIsIDIsIDI0MSwgMTYxLCAyMjcsIAotICAgIDEyNCwgMjIsIDIsIDI1MSwgNjQsIDIyNywgMTI0LCAyMiwgMiwgMjIwLCAxOCwgMjI3LCAxMjQsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMjcsIDEyNCwgMjIsIDIsIDc0LCAyMjcsIDEyNCwgMjIsIDIsIDc4LCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDE5OCwgCi0gICAgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDE3MywgMjI3LCAxMjQsIDUsIDEsIDIyMiwgMjAzLCAyMjcsIDEyNCwgNSwgMSwgMjUwLCAxODAsIDIyNywgCi0gICAgMTI0LCA1LCAxLCAyMTAsIDIyLCAyMjcsIDEyNCwgNSwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCA1LCAxLCAxODUsIDIyNywgCi0gICAgMTI0LCA1LCAxLCAxOTIsIDIyNywgMTI0LCA1LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDUsIDEsIDIyOCwgMTEzLCAyMjcsIAotICAgIDEyNCwgMiwgMjIzLCAyMzEsIDIyNywgMTI0LCAyLCAyMjksIDE4NiwgMjI3LCAxMjQsIDIsIDIxNSwgMzQsIDIyNywgMTI0LCAKLSAgICAyLCAyMjcsIDE4LCAyMjcsIDEyNCwgMjQwLCAyMTIsIDgyLCAyMjcsIDEyNCwgMjE3LCA0NywgODIsIDIyNywgMTI0LCAxNywgCi0gICAgMjAyLCA4NCwgMjI3LCAxMjQsIDE3LCAxMDUsIDIyNywgMTI0LCAxNywgMTA4LCAyMjcsIDEyNCwgMTcsIDE0NywgMjI3LCAKLSAgICAxMjQsIDE3LCAxNDksIDIyNywgMTI0LCAxNywgMTcwLCAyMjcsIDEyNCwgMTcsIDE5NSwgMjI3LCAxMjQsIDE3LCAyMTMsIAotICAgIDExMSwgMjI3LCAxMjQsIDE3LCAxOTksIDIyNywgMTI0LCAxNywgMjIyLCA2MywgNDUsIDIyNywgMjM1LCAxLCAxNzMsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjAzLCAxODIsIDQ1LCAyMjcsIDIzNSwgMSwgMjIyLCAyMDMsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKLSAgICAyMCwgNDUsIDIyNywgMjM1LCAxLCAyMTUsIDM2LCA0NSwgMjI3LCAyMzUsIDEsIDE5OCwgNDUsIDIyNywgMjM1LCAxLCAyMTAsIAotICAgIDIyLCA0NSwgMjI3LCAyMzUsIDEsIDIwOSwgMTA4LCA0NSwgMjI3LCAyMzUsIDEsIDIyOCwgMTEzLCA0NSwgMjI3LCAyMzUsIAotICAgIDEsIDE4NSwgNDUsIDIyNywgMjM1LCAxLCAyMTgsIDIwOCwgNDUsIDIyNywgMjM1LCAxLCAxOTIsIDQ1LCAyMjcsIDIzNSwgMSwgCi0gICAgMjQwLCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA2LCA4NiwgNDUsIDIyNywgMjM1LCAxLCAxNTIsIDQ1LCAyMjcsIDIzNSwgCi0gICAgMSwgMjE3LCAxMjYsIDQ1LCAyMjcsIDIzNSwgMSwgMjI5LCAxNDQsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxMCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMDEsIDIwMSwgNDUsIDIyNywgMjM1LCAxLCA2MywgNDUsIDIyNywgMjM1LCAxLCA3NSwgNDUsIDIyNywgCi0gICAgMjM1LCAxLCAyNDEsIDE2MSwgNDUsIDIyNywgMjM1LCAxLCAyNDEsIDE0NywgNDUsIDIyNywgMjM1LCAxLCA2OCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMjAsIDE4LCA0NSwgMjI3LCAyMzUsIDEsIDc4LCA0NSwgMjI3LCAyMzUsIDEsIDIwNywgMjQsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgNzQsIDQ1LCAyMjcsIDIzNSwgMSwgMjUwLCAzMiwgNDUsIDIyNywgMjM1LCAxLCAyNTEsIDY0LCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIwOCwgMTU5LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU4LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgCi0gICAgMTU3LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU2LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU1LCAyMjIsIDIxNCwgNDUsIAotICAgIDIyNiwgMjMzLCAxLCAxMzgsIDIxNywgMTI2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNywgMTI2LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDMsIAotICAgIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTI0LCAxNzMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjAzLCAxODIsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEyNCwgMjIyLCAyMDMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA4LCAyMCwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTUsIDM2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE5OCwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDgsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNSwgCi0gICAgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTk4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAotICAgIDIxMCwgMjIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA5LCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEzOCwgMjAxLCAyMDEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjEwLCAyMiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDEsIDIwMSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxODUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjE4LCAKLSAgICAyMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAotICAgIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTgsIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTI0LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjQwLCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEzOCwgMjA2LCA4NiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjgsIDExMywgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDYsIDg2LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTEzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAotICAgIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTM4LCAyNDksIDMyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTI0LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDksIDMyLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgMTQ5LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAotICAgIDIwMywgMTQ5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCi0gICAgMSwgMTI0LCAyMTEsIDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMiwgMjEyLCAyMTYsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyNTIsIDI1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMxLCA4MywgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDY4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAKLSAgICAxNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAotICAgIDI1MSwgMTA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAKLSAgICAyLCAyMjAsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA3LCAyNCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMjIsIDIsIDI1MCwgOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MSwgMjM2LCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAxNzAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMTksIDE4OCwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyMCwgOTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAKLSAgICAyMDcsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMwLCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAotICAgIDEsIDQ2LCAyMDYsIDE2NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyMiwgMjA1LCAyMjIsIDIxNCwgNDUsIAotICAgIDIyNiwgMjMzLCAxLCA0NiwgMjIzLCAxNjMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMjYsIDE4NSwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIzMCwgNTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDUsIAotICAgIDUxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjQ5LCAyNTUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE0MywgCi0gICAgMjI1LCA5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAyMjUsIDkxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKLSAgICAxNywgMjAyLCA4NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDEwNSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIAotICAgIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0OSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE5NSwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDIxMywgMTExLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk5LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjIyLCA2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTA0LCAxNywgMTA1LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk2LCAKLSAgICA4NSwgMTYsIDIxOSwgNTEsIDg1LCAxNiwgMjIzLCAyMTEsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAxMzAsIDIyOSwgMjIsIAotICAgIDg1LCAxNiwgMjQ4LCAxMzQsIDIyOSwgMjIsIDg1LCAxNiwgMjQ3LCAxNjYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA4LCAKLSAgICAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDAsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAKLSAgICA2LCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgNCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE2MSwgMjI5LCAyMiwgODUsIDE2LCAKLSAgICAyNDQsIDE1NywgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NiwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1OSwgMjI5LCAyMiwgCi0gICAgODUsIDE2LCAyNDQsIDE1OCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NSwgMjI5LCAyMiwgODUsIDE2LCAyMDcsIDE2NywgCi0gICAgODUsIDE2LCAyMjMsIDIxMSwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAxMzAsIDIxNSwgMjIwLCA4NSwgMTYsIDI0OCwgMTM0LCAKLSAgICAyMTUsIDIyMCwgODUsIDE2LCAyNDcsIDE2NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA4LCAyMTUsIDIyMCwgODUsIDE2LCAKLSAgICAyMTgsIDIsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA2LCAyMTUsIDIyMCwgODUsIAotICAgIDE2LCAyMTgsIDQsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTYxLCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NywgMjE1LCAKLSAgICAyMjAsIDg1LCAxNiwgMjQ0LCAxNTYsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU5LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIAotICAgIDE1OCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTUsIDIxNSwgMjIwLCAyNDcsIDE4NiwgMSwgMTczLCAyNDcsIDE4NiwgMSwgCi0gICAgMjM5LCA4LCAyNDcsIDE4NiwgMSwgMjIyLCAyMDMsIDI0NywgMTg2LCAxLCAyMjIsIDE0NiwgMjQ3LCAxODYsIDEsIDE4NSwgCi0gICAgMjQ3LCAxODYsIDEsIDI0OSwgMzIsIDI0NywgMTg2LCAxLCAxOTIsIDI0NywgMTg2LCAxLCAyMjMsIDI1MCwgMjQ3LCAxODYsIAotICAgIDEsIDIxMCwgMjIsIDI0NywgMTg2LCAxLCAyNDQsIDIxMiwgMjQ3LCAxODYsIDEsIDIwMSwgMjAxLCAyNDcsIDE4NiwgMSwgCi0gICAgMjIxLCAxNDcsIDI0NywgMTg2LCAxLCAyNDcsIDkyLCAyNDcsIDE4NiwgMSwgMjMwLCAxODEsIDI0NywgMTg2LCAxLCAyMjEsIAotICAgIDExLCAyNDcsIDE4NiwgMSwgMjIxLCAzLCAyNDcsIDE4NiwgMSwgMTk4LCAyNDcsIDE4NiwgMSwgMjE2LCAyMjAsIDI0NywgCi0gICAgMTg2LCAxLCAyMjgsIDExMywgMjQ3LCAxODYsIDEsIDIwNiwgODYsIDI0NywgMTg2LCAxLCAyMTUsIDM2LCAyNDcsIDE4NiwgCi0gICAgMSwgNjMsIDI0NywgMTg2LCAxLCAxNTIsIDI0NywgMTg2LCAyMiwgMiwgNzUsIDI0NywgMTg2LCAyMiwgMiwgNjgsIDI0NywgCi0gICAgMTg2LCAyMiwgMiwgNzQsIDI0NywgMTg2LCAyMiwgMiwgNzgsIDI0NywgMTg2LCAyMiwgMiwgMjUxLCAxMDksIDI0NywgMTg2LCAKLSAgICAyMTksIDEzNiwgMjQ3LCAxODYsIDI0MSwgODQsIDc2LCAyMTQsIDE2NywgNDUsIDEwNCwgMSwgMTM4LCAxNzMsIDQ1LCAxMDQsIAotICAgIDEsIDEzOCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDEzOCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMTczLCA0NSwgCi0gICAgMTA0LCAxLCAxMjQsIDIyOCwgMTUzLCA0NSwgMTA0LCAxLCAxMjQsIDIyOSwgMTQ0LCA0NSwgMTA0LCAxLCAyMjIsIDIwMywgCi0gICAgNDUsIDEwNCwgMSwgMTM4LCAyNDcsIDkyLCA0NSwgMTA0LCAxLCAxMzgsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAxMjQsIAotICAgIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE1LCAzNiwgNDUsIDEwNCwgMSwgMTI0LCAyNDYsIDE5OSwgNDUsIDEwNCwgMSwgCi0gICAgMjIxLCAxMSwgNDUsIDEwNCwgMSwgMjE2LCAxNzEsIDQ1LCAxMDQsIDEsIDEzOCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIAotICAgIDI0NCwgMjEyLCA0NSwgMTA0LCAxLCAxMjQsIDIxNiwgMTY5LCA0NSwgMTA0LCAxLCAyMTYsIDE4MCwgNDUsIDEwNCwgMSwgCi0gICAgMTM4LCAyMTAsIDIyLCA0NSwgMTA0LCAxLCAxMzgsIDIwOSwgMTA4LCA0NSwgMTA0LCAxLCAxMjQsIDIxMCwgMjIsIDQ1LCAKLSAgICAxMDQsIDEsIDEyNCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDIwMSwgMjAxLCA0NSwgMTA0LCAxLCAyNDksIDMyLCA0NSwgCi0gICAgMTA0LCAxLCAxMzgsIDE4NSwgNDUsIDEwNCwgMSwgMTM4LCAyMTgsIDIwOCwgNDUsIDEwNCwgMSwgMTM4LCAyNDAsIDEwOCwgCi0gICAgNDUsIDEwNCwgMSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEsIDEyNCwgMjQwLCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjE4LCAKLSAgICAyMDgsIDQ1LCAxMDQsIDEsIDE5MiwgNDUsIDEwNCwgMSwgMTI0LCAxOTgsIDQ1LCAxMDQsIDEsIDEzOCwgMTk4LCA0NSwgCi0gICAgMTA0LCAxLCAyMTYsIDIyMCwgNDUsIDEwNCwgMSwgMjE1LCAxNDAsIDQ1LCAxMDQsIDEsIDIyOCwgMTEzLCA0NSwgMTA0LCAxLCAKLSAgICAyMjYsIDIzMiwgNDUsIDEwNCwgMSwgMjA0LCAxMTEsIDQ1LCAxMDQsIDEsIDEzOCwgMjEzLCA5MCwgNDUsIDEwNCwgMSwgCi0gICAgMTM4LCAyMTEsIDE2NCwgNDUsIDEwNCwgMSwgMTM4LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMzgsIDE1MiwgNDUsIDEwNCwgCi0gICAgMSwgMjI3LCA3NywgNDUsIDEwNCwgMSwgNjMsIDQ1LCAxMDQsIDEsIDEyNCwgMTUyLCA0NSwgMTA0LCAxLCA3NSwgNDUsIAotICAgIDEwNCwgMSwgMjMxLCA4MywgNDUsIDEwNCwgMSwgNjgsIDQ1LCAxMDQsIDEsIDIwNiwgMTc4LCA0NSwgMTA0LCAxLCAyNDEsIAotICAgIDE2MSwgNDUsIDEwNCwgMSwgMjIwLCAxOCwgNDUsIDEwNCwgMSwgMjI4LCA5NywgNDUsIDEwNCwgMSwgMjM3LCAyNDksIDIxNSwgCi0gICAgMzYsIDQ1LCAxMDQsIDEwOSwgMiwgMTc0LCAyMTYsIDIyMCwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIyOCwgMTEzLCA0NSwgCi0gICAgMTA0LCAxMDksIDIsIDIyOCwgMTE0LCAyMDksIDIyOCwgMjI4LCA4NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIzMCwgMSwgCi0gICAgMjI4LCA4NiwgNDUsIDEwNCwgMTA5LCAyLCA0NiwgMjIyLCAyMDMsIDQ1LCAxMDQsIDEwOSwgMiwgMTI0LCAxODUsIDQ1LCAKLSAgICAxMDQsIDEwOSwgMiwgMTM4LCAyMTYsIDE3MCwgMjE5LCAyNDUsIDEyNCwgMTg1LCA0NSwgMTA0LCAxMDksIDIsIDE5MiwgNDUsIAotICAgIDEwNCwgMTA5LCAyLCAyNDksIDMyLCA0NSwgMTA0LCAxMDksIDIsIDIxNSwgMzYsIDQ1LCAxMDQsIDIsIDIxNSwgMTAsIDQ1LCAKLSAgICAxMDQsIDIyLCAyLCA2MywgNDUsIDEwNCwgMjIsIDIsIDIyNSwgMTQxLCAyMTQsIDIyNSwgNDUsIDEwNCwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDQ1LCAxMDQsIDIyLCAyLCAyMDksIDIzNCwgMjUyLCAyNSwgNDUsIDEwNCwgMjIsIDIsIDc1LCA0NSwgMTA0LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgNDUsIDEwNCwgMjIsIDIsIDIwNywgMjQsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3NywgNDUsIDEwNCwgCi0gICAgMjIsIDIsIDY4LCA0NSwgMTA0LCAyMiwgMiwgMjA2LCAxNzgsIDQ1LCAxMDQsIDIyLCAyLCA3OCwgNDUsIDEwNCwgMjIsIDIsIAotICAgIDIyMCwgOTgsIDU2LCA0NSwgMTA0LCAyMiwgMiwgMjE5LCAxODgsIDQ1LCAxMDQsIDIyLCAyLCA3NCwgNDUsIDEwNCwgMjIsIAotICAgIDIsIDI1MSwgMTA5LCA0NSwgMTA0LCAyMiwgMiwgMjIwLCAxOCwgNDUsIDEwNCwgMjIsIDIsIDI1MSwgNjQsIDQ1LCAxMDQsIAotICAgIDIyLCAyLCAxMDQsIDI1MSwgNjQsIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDk4LCA1NSwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIAotICAgIDIzMCwgMCwgNDUsIDEwNCwgMiwgMjA4LCAxNjAsIDQ1LCAxMDQsIDIsIDIwOCwgMTU5LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgCi0gICAgMjA4LCAxNTgsIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAyMDgsIDE1NywgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU2LCAKLSAgICA0NSwgMTA0LCAyLCAyMTYsIDIyMSwgMjM3LCAxNTYsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMTQsIDI1MywgNDUsIDEwNCwgCi0gICAgMiwgMjI5LCAxMDQsIDIyOSwgMjM5LCA0NSwgMTA0LCAzOSwgMjQ1LCAxMTMsIDI0MywgODUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAKLSAgICAxNywgMjAyLCA4NCwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTA4LCA0NSwgCi0gICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE0NywgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxNDksIDQ1LCAxMDQsIDIzNiwgMTA4LCAKLSAgICAxNywgMTcwLCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE5NSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMTMsIDExMSwgNDUsIAotICAgIDEwNCwgMjM2LCAxMDgsIDE3LCAxOTksIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMjIyLCA2MywgNDUsIDEwNCwgMTA0LCAxNywgCi0gICAgMjAyLCA4NCwgNDUsIDEwNCwgMTA0LCAxNywgMTA1LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDgsIDQ1LCAxMDQsIDEwNCwgMTcsIAotICAgIDE0NywgNDUsIDEwNCwgMTA0LCAxNywgMTQ5LCA0NSwgMTA0LCAxMDQsIDE3LCAxNzAsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5NSwgCi0gICAgNDUsIDEwNCwgMTA0LCAxNywgMjEzLCAxMTEsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5OSwgNDUsIDEwNCwgMTA0LCAxNywgMjIyLCAKLSAgICA2MywgNDUsIDEwNCwgMiwgMjA0LCAyOSwgNDUsIDEwNCwgMiwgMjA0LCAyOCwgNDUsIDEwNCwgMiwgMjE0LCAyMTIsIDQ1LCAKLSAgICAxMDQsIDIsIDIyOSwgMTc1LCA0NSwgMTA0LCAyLCAyMzYsIDM2LCA0NSwgMTA0LCAyLCAyNDMsIDk5LCA0NSwgMTA0LCAyLCAKLSAgICAyMTYsIDczLCAyMTUsIDE5OCwgMjE2LCAxODAsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMDMsIDc5LCA0NSwgMTA0LCAyLCAKLSAgICAyMzAsIDM1LCA0NSwgMTA0LCAyLCAyMzAsIDM0LCA0NSwgMTA0LCAyLCAyMTQsIDIyMCwgNDUsIDEwNCwgMiwgMjE0LCAyMTksIAotICAgIDQ1LCAxMDQsIDIsIDIzNywgOTgsIDQ1LCAxMDQsIDIsIDI0NywgODksIDM5LCAyNDIsIDc1LCAyNDYsIDUzLCAyNTEsIDEzOCwgCi0gICAgMzksIDI0MywgMjMwLCAzOSwgMjMxLCAyNywgMzksIDE4MywgNDcsIDM5LCAyMDgsIDcwLCAyNDMsIDg1LCAzOSwgMjAzLCAKLSAgICAxOTUsIDU2LCAzOSwgMjA0LCAyMSwgMjI3LCAxMTUsIDU2LCAzOSwgMTcxLCAxMzEsIDU2LCAzOSwgNTIsIDE3MSwgMTMxLCAKLSAgICA1NiwgMzksIDE1NywgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAzOSwgMjExLCAxOCwgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAKLSAgICAzOSwgMjE5LCA3OCwgNTUsIDM5LCA1MiwgMjE5LCA3OCwgNTUsIDM5LCAyMTksIDc4LCA1NiwgMzksIDIxOSwgNzgsIDIxOSwgCi0gICAgMTk5LCAxMzAsIDIsIDIwNywgOSwgMjE2LCA1MSwgMTMwLCAyLCAyMDcsIDksIDI0NywgNTQsIDEzMCwgMiwgMjQ2LCAyMzQsIAotICAgIDEzMCwgMiwgMjEwLCAxOTEsIDEzMCwgMiwgMjQ4LCA1NiwgMTMwLCAxLCAyNTEsIDQ1LCAxMzAsIDEsIDI1MSwgNDYsIDIwOSwgCi0gICAgMTc4LCAxMzAsIDEsIDIzMSwgNzksIDEzMCwgMSwgMjMxLCA4MCwgMjA5LCAxNzgsIDEzMCwgMSwgMjA3LCAxMiwgMTMwLCAxLCAKLSAgICAyMDcsIDEzLCAyMDksIDE3OCwgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAxMDMsIDEzMCwgMSwgMjE2LCAyMjEsIDIxNiwgCi0gICAgMTA0LCAyMDksIDE3OCwgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMSwgMjI4LCAxMTQsIDIyNywgMTk4LCAKLSAgICAyMDksIDE3OCwgMTMwLCAxLCAyNDEsIDEyNywgMTMwLCAxLCAyNTEsIDYyLCAxMzAsIDEsIDIyMCwgNDksIDEzMCwgMSwgCi0gICAgMjIwLCA1MCwgMjA5LCAxNzgsIDEzMCwgMSwgMTczLCAxMzAsIDEsIDIzMCwgNDQsIDIyNSwgMTQ0LCAxMzAsIDEsIDIzOSwgCi0gICAgOCwgMTMwLCAxLCAyMzksIDksIDIzOCwgMjUsIDEzMCwgMSwgMjIyLCAyMDMsIDEzMCwgMSwgMjQ3LCA5MiwgMTMwLCAxLCAKLSAgICAyNDcsIDkzLCAyMjgsIDEwMCwgMTMwLCAxLCAyMzAsIDE4MSwgMTMwLCAxLCAyMzAsIDE4MiwgMjMwLCAxNTMsIDEzMCwgMSwgCi0gICAgMjIxLCAxMSwgMTMwLCAxLCAyMTAsIDIzLCAyMjcsIDI1MywgMTMwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNiwgMjI1LCAxNDQsIAotICAgIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyNTEsIDQsIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCi0gICAgMTMwLCAxLCAyMjMsIDExMSwgMjE2LCAxODMsIDEzMCwgMSwgMjEwLCAyMiwgMTMwLCAxLCAyMTAsIDIzLCAyMDksIDIwMCwgCi0gICAgMTMwLCAxLCAyNDQsIDIxMiwgMTMwLCAxLCAyNDQsIDIxMywgMjI1LCAxNjMsIDEzMCwgMSwgMjAxLCAyMDEsIDEzMCwgMSwgCi0gICAgMTg1LCAxMzAsIDEsIDIxOSwgMTY5LCAyMjksIDI1MSwgMTMwLCAxLCAyNDksIDMyLCAxMzAsIDEsIDI0OSwgMzMsIDIyOSwgCi0gICAgMTg3LCAxMzAsIDEsIDE5MiwgMTMwLCAxLCAxOTgsIDEzMCwgMSwgMjE2LCAyMjAsIDEzMCwgMSwgMjI4LCAxMTMsIDEzMCwgCi0gICAgMSwgMjA0LCAxMTEsIDEzMCwgMSwgMjE1LCAzNywgMjE1LCAyMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTQsIDIzMiwgMTMwLCAxLCAKLSAgICAyMTUsIDM2LCAxMzAsIDEsIDE1MiwgMTMwLCAyLCAyMTYsIDk0LCAxMzAsIDIyLCAyLCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgCi0gICAgMjA3LCA4LCAxMzAsIDIyLCAyLCAyMDcsIDksIDIxNCwgMjI4LCAxMzAsIDIyLCAyLCAyMTAsIDIyNCwgMTMwLCAyMiwgMiwgCi0gICAgMjEwLCAyMjUsIDIzMSwgNzEsIDEzMCwgMjIsIDIsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIAotICAgIDIxNiwgMTA0LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjI4LCAxMTQsIDIyNywgMTk3LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgCi0gICAgMjI3LCAxOTgsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMDksIDIzNSwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTAzLCAKLSAgICAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMTYsIDEwNCwgMjA5LCAxNzgsIAotICAgIDEzMCwgMjIsIDIsIDIxOCwgMjQ5LCAxMzAsIDIyLCAyLCAyMTgsIDI1MCwgMjA5LCAxNzgsIDEzMCwgMjUxLCAxMTcsIDI1MSwgCi0gICAgMTE2LCAxMzAsIDEsIDIzMCwgMjMsIDIxNCwgMjI3LCAxMzAsIDEsIDIyOSwgMTExLCAyMTQsIDIyNywgMTMwLCAxLCAyMDcsIAotICAgIDEwMSwgMjE0LCAyMjcsIDEzMCwgMSwgMjQxLCAxNTUsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNiwgNTYsIDIxNCwgMjI3LCAKLSAgICAxMzAsIDEsIDIwMiwgMTA2LCAyMTQsIDIyNywgMTMwLCAxLCAyNTAsIDUyLCAyMTQsIDIyNywgMTMwLCAxNywgMjAyLCA4NCwgCi0gICAgMTMwLCAxNywgMTA1LCAxMzAsIDE3LCAxMDgsIDEzMCwgMTcsIDE0NywgMTMwLCAxNywgMTQ5LCAxMzAsIDE3LCAxNzAsIAotICAgIDEzMCwgMTcsIDE5NSwgMTMwLCAxNywgMjEzLCAxMTEsIDEzMCwgMTcsIDE5OSwgMTMwLCAxNywgMjIyLCA2MywgMTMwLCAKLSAgICAyMTksIDEwNCwgMTMwLCAyMTksIDEzMCwgMTMwLCAyMDQsIDE0LCAxMzAsIDI0NywgMzEsIDIxOSwgMTIzLCAxMzAsIDI0NywgCi0gICAgMzEsIDIxMiwgMTM5LCAxMzAsIDI0NywgMzEsIDIxOSwgNzUsIDEzMCwgMjE5LCAxMjksIDEzMCwgMzEsIDE2LCAyNDMsIDkxLCAKLSAgICAxMzAsIDMxLCAxNiwgMjQ0LCAzNCwgMTMwLCAzMSwgMTYsIDI0MiwgMjcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NCwgMTMwLCAKLSAgICAzMSwgMTYsIDI0NCwgMTY1LCAyMTAsIDE5MSwgMTMwLCAzMSwgMTYsIDI0MywgMTc1LCAxMzAsIDMxLCAxNiwgMjQ0LCAyMDUsIAotICAgIDEzMCwgMzEsIDE2LCAyNDQsIDEwLCAxMzAsIDMxLCAxNiwgMjQ0LCAxODcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NSwgMjM4LCAKLSAgICAxODQsIDEzMCwgMzEsIDE2LCAzOSwgMjA5LCAxNzEsIDEzMCwgMzEsIDE2LCAzOSwgMjQxLCA4MiwgMTMwLCAzMSwgMTYsIAotICAgIDM5LCAyMjksIDE4MiwgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMzAsIDE1NywgMTMwLCAKLSAgICAzMSwgMTYsIDM5LCAyMjksIDE4MywgMywgMjMwLCAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjI5LCAxODUsIDMsIDIzMCwgCi0gICAgMTU3LCAxMzAsIDMxLCAxNiwgMzksIDI0OCwgMTE5LCAxMzAsIDMxLCAxNiwgMzksIDIzOCwgMjksIDEzMCwgMzEsIDE2LCAKLSAgICAyMTYsIDE0LCAxNzEsIDI0MiwgMzcsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAxNzEsIDI0NCwgMjAzLCAxMzAsIDMxLCAxNiwgCi0gICAgMjE2LCAxNCwgMjQ2LCAxNiwgMjA3LCAxOTUsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAyNDYsIDE2LCAyMDksIDI0NCwgMTMwLCAKLSAgICAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxOSwgMTE4LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE3LCAxNzcsIAotICAgIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMjQ2LCAxNiwgMjE4LCA5NCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAKLSAgICAyMTgsIDgwLCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE4LCAxMTksIDIxMCwgMjEzLCAyLCAyMTksIDEwMSwgCi0gICAgMjEwLCAyMTMsIDIsIDIxOSwgMTE0LCAyMTAsIDIxMywgMiwgMjE5LCAxMTAsIDIxMCwgMjEzLCAxLCA2MywgMjEwLCAyMTMsIAotICAgIDEsIDc1LCAyMTAsIDIxMywgMSwgNjgsIDIxMCwgMjEzLCAxLCAyNTEsIDEwOSwgMjEwLCAyMTMsIDEsIDc4LCAyMTAsIDIxMywgCi0gICAgMSwgNzQsIDIxMCwgMjEzLCAxLCAyNDAsIDIzOCwgMjEwLCAyMTMsIDEsIDE3MywgMjEwLCAyMTMsIDEsIDIxNywgMTI2LCAKLSAgICAyMTAsIDIxMywgMSwgMjM5LCA4LCAyMTAsIDIxMywgMSwgMjIyLCAyMDMsIDIxMCwgMjEzLCAxLCAyNDcsIDkyLCAyMTAsIAotICAgIDIxMywgMSwgMjMwLCAxODEsIDIxMCwgMjEzLCAxLCAyMDIsIDExNiwgMjEwLCAyMTMsIDEsIDIyMSwgMTEsIDIxMCwgMjEzLCAKLSAgICAxLCAyMTAsIDIyLCAyMTAsIDIxMywgMSwgMjQ0LCAyMTIsIDIxMCwgMjEzLCAxLCAyMDEsIDIwMSwgMjEwLCAyMTMsIDEsIAotICAgIDE4NSwgMjEwLCAyMTMsIDEsIDI0MCwgMTA4LCAyMTAsIDIxMywgMSwgMjA2LCA4NiwgMjEwLCAyMTMsIDEsIDI0OSwgMzIsIAotICAgIDIxMCwgMjEzLCAxLCAxOTIsIDIxMCwgMjEzLCAxLCAxOTgsIDIxMCwgMjEzLCAxLCAyMTYsIDIyMCwgMjEwLCAyMTMsIDEsIAotICAgIDIyOCwgMTEzLCAyMTAsIDIxMywgMSwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMTUsIDM2LCAyMTAsIDIxMywgMSwgMjAzLCAKLSAgICAxODIsIDIxMCwgMjEzLCAxLCAxNTIsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgMTI3LCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIAotICAgIDEwMywgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMDAsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMTcsIDIxMCwgMjEzLCAyMiwgCi0gICAgMiwgMjE5LCA5OSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEyMSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEwOSwgMjEwLCAKLSAgICAyMTMsIDIyLCAyLCAyMTksIDEyOCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTMxLCAKLSAgICAyMTAsIDIxMywgMiwgMjA1LCAyMDQsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgNjQsIDE5MiwgMjEwLCAyMTMsIDEwOSwgMiwgCi0gICAgMjE5LCA2NCwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMjksIDE0NCwgMjEwLCAyMTMsIDEsIDIxMCwgMTUwLCAyMTAsIAotICAgIDIxMywgMTcsIDIwMiwgODQsIDIxMCwgMjEzLCAxNywgMTA1LCAyMTAsIDIxMywgMTcsIDEwOCwgMjEwLCAyMTMsIDE3LCAKLSAgICAxNDcsIDIxMCwgMjEzLCAxNywgMTQ5LCAyMTAsIDIxMywgMTcsIDE3MCwgMjEwLCAyMTMsIDE3LCAxOTUsIDIxMCwgMjEzLCAKLSAgICAxNywgMjEzLCAxMTEsIDIxMCwgMjEzLCAxNywgMTk5LCAyMTAsIDIxMywgMTcsIDIyMiwgNjMsIDIxMCwgMjEzLCAyNTAsIAotICAgIDE3LCAyMTAsIDIxMywgMSwgMjE2LCA3NiwgMjEwLCAyMTMsIDEsIDIyNywgMTcxLCAyMTAsIDIxMywgMSwgMjQ4LCA5OCwgCi0gICAgMjEwLCAyMTMsIDEsIDQ2LCAyMzAsIDU0LCAyMTAsIDIxMywgMSwgNDYsIDIyNiwgMTg1LCAyNDgsIDIwOCwgMSwgNjMsIAotICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgNjMsIDI0OCwgMjA4LCAxLCAxNTIsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTUyLCAKLSAgICAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDE1MiwgMjQ4LCAyMDgsIDEsIDI0OSwgMzIsIDI0OCwgMjA4LCAxLCAyMjksIDIzNiwgCi0gICAgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxODUsIDI0OCwgMjA4LCAxLCAyMDEsIAotICAgIDIwMSwgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAyMDEsIDIwMSwgMjQ4LCAyMDgsIDEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgCi0gICAgMjEyLCAxMzEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjE5LCAxNDMsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjM5LCA4LCAKLSAgICAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIzOSwgOCwgMjQ4LCAyMDgsIDEsIDIzMCwgMTgxLCAyNDgsIDIwOCwgMSwgMjQ0LCAKLSAgICAyMTIsIDI0OCwgMjA4LCAxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIAotICAgIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxOTIsIDI0OCwgMjA4LCAxLCAyMTEsIDIzNiwgMjEwLCAyMiwgMjQ4LCAKLSAgICAyMDgsIDEsIDIyMSwgMTcwLCAyMTAsIDIyLCAyNDgsIDIwOCwgMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAKLSAgICAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAxOTgsIDI0OCwgMjA4LCAxLCAKLSAgICAyMTIsIDEzMSwgMTk4LCAyNDgsIDIwOCwgMSwgMjIyLCAyMDMsIDI0OCwgMjA4LCAxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIAotICAgIDIxMiwgMTMxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIDIyMSwgMTEsIDI0OCwgMjA4LCAxLCAyNDcsIDkyLCAyNDgsIDIwOCwgCi0gICAgMSwgMjIzLCAyNSwgMjQ4LCAyMDgsIDEsIDIyNSwgNTQsIDI0OCwgMjA4LCAxLCA3NSwgMjQ4LCAyMDgsIDEsIDY4LCAyNDgsIAotICAgIDIwOCwgMiwgMjA4LCAxNjQsIDI0OCwgMjA4LCAyMiwgMiwgNzQsIDI0OCwgMjA4LCAyMiwgMiwgMjE5LCAxNDMsIDc0LCAKLSAgICAyNDgsIDIwOCwgMjIsIDIsIDI0MSwgMTYxLCAyNDgsIDIwOCwgMjIsIDIsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgCi0gICAgMjM2LCA3NSwgMjQ4LCAyMDgsIDIyLCAyLCA3OCwgMjQ4LCAyMDgsIDIyLCAyLCAyMjksIDIzNiwgNzgsIDI0OCwgMjA4LCAKLSAgICAyMiwgMiwgNjgsIDI0OCwgMjA4LCAyMiwgMiwgMTA2LCAzNSwgMjEyLCAxMzEsIDIxNSwgMzYsIDI0OCwgMjA4LCAxMDksIDIsIAotICAgIDIyMiwgMjA1LCAyNDgsIDIwOCwgMTA5LCAyLCAyMzcsIDE3MSwgMjQ4LCAyMDgsIDIxOSwgMTEyLCAyNDgsIDIwOCwgMjE5LCAKLSAgICAxMDgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjIzLCAxMTEsIDIyNCwgMjE4LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIAotICAgIDIxOCwgMTIyLCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIzMCwgNzksIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjE5LCAKLSAgICAxMTIsIDIyNywgMTgxLCAxLCAxNzMsIDIyNywgMTgxLCAxLCAyMjksIDQwLCAyMjcsIDE4MSwgMSwgMjI5LCAxNDQsIDIyNywgCi0gICAgMTgxLCAxLCAyMzksIDgsIDIyNywgMTgxLCAxLCAyMzgsIDUxLCAyMjcsIDE4MSwgMSwgMjIyLCAyMDMsIDIyNywgMTgxLCAxLCAKLSAgICAyNDcsIDkyLCAyMjcsIDE4MSwgMSwgMjQ2LCAxOTksIDIyNywgMTgxLCAxLCAyMzAsIDE4MSwgMjI3LCAxODEsIDEsIDIyMSwgCi0gICAgMTEsIDIyNywgMTgxLCAxLCAyMTAsIDIyLCAyMjcsIDE4MSwgMSwgMjA5LCAxMDgsIDIyNywgMTgxLCAxLCAyNDQsIDIxMiwgCi0gICAgMjI3LCAxODEsIDEsIDIwMSwgMjAxLCAyMjcsIDE4MSwgMSwgMTg1LCAyMjcsIDE4MSwgMSwgMjE4LCA5OCwgMjI3LCAxODEsIAotICAgIDEsIDIxOCwgMjA4LCAyMjcsIDE4MSwgMSwgMjQwLCAxMDgsIDIyNywgMTgxLCAxLCAyMzksIDIyNywgMjI3LCAxODEsIDEsIAotICAgIDI0OSwgMzIsIDIyNywgMTgxLCAxLCAyNDgsIDQ0LCAyMjcsIDE4MSwgMSwgMTkyLCAyMjcsIDE4MSwgMSwgMjI0LCA4OSwgCi0gICAgMjI3LCAxODEsIDEsIDIwOCwgMjAsIDIyNywgMTgxLCAxLCAyMDgsIDEwLCAyMjcsIDE4MSwgMSwgMjQxLCAyNTUsIDIyNywgCi0gICAgMTgxLCAxLCAxOTgsIDIyNywgMTgxLCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDEsIDIyOCwgMTEzLCAyMjcsIDE4MSwgMSwgCi0gICAgMTUyLCAyMjcsIDE4MSwgMSwgMjM2LCAyMjQsIDIyNywgMTgxLCAxLCAyMDYsIDg2LCAyMjcsIDE4MSwgMSwgMjE1LCAzNiwgCi0gICAgMjI3LCAxODEsIDEsIDIxMywgOTAsIDIyNywgMTgxLCAxLCAyMDQsIDExMSwgMjI3LCAxODEsIDEsIDYzLCAyMjcsIDE4MSwgCi0gICAgMjEwLCAyNTQsIDEsIDE5OCwgMjI3LCAxODEsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDIyLCAyLCAyNTIsIAotICAgIDI1LCAyMjcsIDE4MSwgMjIsIDIsIDc1LCAyMjcsIDE4MSwgMjIsIDIsIDc4LCAyMjcsIDE4MSwgMjIsIDIsIDIyMCwgMTgsIAotICAgIDIyNywgMTgxLCAyMiwgMiwgNjgsIDIyNywgMTgxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNywgMTgxLCAyMiwgMiwgNzQsIDIyNywgCi0gICAgMTgxLCAxMDksIDIsIDIzMCwgNTQsIDIyNywgMTgxLCAxMDksIDIsIDIyNiwgMTg1LCAyMjcsIDE4MSwgMTA5LCAyLCAxNTksIAotICAgIDIyNywgMTgxLCAxMDksIDIsIDIyMywgMTYzLCAyMjcsIDE4MSwgMTA5LCAyLCAyMTksIDE4NCwgMjI3LCAxODEsIDEwOSwgMiwgCi0gICAgMTQ2LCAyMjcsIDE4MSwgMTA5LCAyLCAyMTAsIDY5LCAyMjcsIDE4MSwgMTA5LCAyLCAyMjAsIDI0MSwgMjI3LCAxODEsIAotICAgIDEwOSwgMiwgMjMwLCAwLCAyMjcsIDE4MSwgMiwgMjE2LCAxODEsIDIyNywgMTgxLCAyLCAyMjEsIDUxLCAyMjcsIDE4MSwgCi0gICAgMjE3LCAxNzksIDIxMCwgMjAsIDIyNywgMTgxLCAyMTcsIDE3OSwgMjIwLCAyNTIsIDIwOSwgNSwgMjEwLCAyMCwgMjI3LCAKLSAgICAxODEsIDIxNywgMTc5LCAyNDYsIDIwNiwgMjI3LCAxODEsIDIxNywgMTc5LCAyMDgsIDIsIDI0NiwgMjA2LCAyMjcsIDE4MSwgCi0gICAgMjE3LCAxNzksIDIwOCwgMSwgMjI3LCAxODEsIDE3LCAyMDIsIDg0LCAyMjcsIDE4MSwgMTcsIDEwNSwgMjI3LCAxODEsIDE3LCAKLSAgICAxMDgsIDIyNywgMTgxLCAxNywgMTQ3LCAyMjcsIDE4MSwgMTcsIDE0OSwgMjI3LCAxODEsIDE3LCAxNzAsIDIyNywgMTgxLCAKLSAgICAxNywgMTk1LCAyMjcsIDE4MSwgMTcsIDIxMywgMTExLCAyMjcsIDE4MSwgMTcsIDE5OSwgMjI3LCAxODEsIDE3LCAyMjIsIAotICAgIDYzLCAyMjcsIDE4MSwgMSwgMjA3LCAyNDEsIDIyNywgMTgxLCAxLCAyMDcsIDIyOSwgMjI3LCAxODEsIDEsIDI0NCwgMTIwLCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDIwMiwgODQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTA1LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMTcsIDEwOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTQ5LCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE3MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTUsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxNywgMjEzLCAxMTEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTk5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIAotICAgIDIyMiwgNjMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MCwgNDksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDgxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCAyMjMsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAxLCAyNTEsIDM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI4LCAxMTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAKLSAgICAxLCAyNTEsIDI0MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjQ0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAKLSAgICAyNDIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDIzNywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgMTQ4LCAyMjAsIAotICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjMwLCAyMTUsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzEsIDg0LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMSwgMjMwLCAyMzYsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIyNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIAotICAgIDIyNiwgMjM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAzMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNywgMjksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDYsIDIyOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMTcwLCAyMjAsIDQ3LCAKLSAgICAyNDYsIDEzNSwgMSwgMjI3LCAyMzQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDQ2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgCi0gICAgMSwgMjQxLCAxNjQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDkyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCAKLSAgICAyMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgNDksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIxOSwgMjIwLCAKLSAgICA0NywgMjQ2LCAxMzUsIDEsIDIyMCwgOTMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIwNiwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDEsIDIyMCwgNjAsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NywgMjA3LCAyMDYsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAyMzksIDMsIDIwNywgMjA3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjIzLCAyNDUsIDIwNywgMjA3LCAyMjAsIDQ3LCAKLSAgICAyNDYsIDEzNSwgMjE2LCAxMTgsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTgsIDIwNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDI1MSwgCi0gICAgNzIsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgMjIzLCAyNDEsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgCi0gICAgNTIsIDIyMywgMjQxLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxMCwgMTg0LCAyMTAsIDIxMywgMjE3LCAxNzksIAotICAgIDI0OCwgNjQsIDIxOSwgMTEzLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxNywgMTY3LCAyMTAsIDIxMywgMjE3LCAKLSAgICAxNzksIDI0OCwgNjQsIDI0NywgNzcsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjI3LCAxNzIsIDIxNCwgMjI0LCAKLSAgICAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIzMCwgNDQsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgCi0gICAgNjQsIDI0NCwgMjEzLCAyMTQsIDIyNCwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyNDksIDMzLCAyMTQsIDIyNCwgCi0gICAgMjA2LCA1MiwgMTQzLCAyMjksIDIzNCwgMjA2LCA1MiwgMTQzLCAyMTMsIDU4LCAyMDYsIDUyLCAxNDMsIDIxNywgMjQ1LCAKLSAgICAyMDYsIDUyLCAyLCAyMjIsIDc2LCAyMDYsIDUyLCAyLCAyMDMsIDg3LCAyMjQsIDE0NiwgMjEwLCAxNzUsIDIwNiwgNTIsIAotICAgIDE0MywgMjAzLCA4NywgMjUxLCA3NywgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjMxLCAzNiwgCi0gICAgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAKLSAgICAxNDMsIDI0NywgNTUsIDU2LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIyOSwgMjIyLCAyMzEsIDM2LCAyMTAsIDE3NiwgCi0gICAgMjE0LCAxOTQsIDIwNiwgNTIsIDE0MywgNTIsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwOCwgNzAsIDIxMCwgMTc1LCAKLSAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjIyLCAyNTAsIDE4MiwgMjA2LCA1MiwgMTQzLCA3MCwgNTYsIDIwNiwgNTIsIDE0MywgCi0gICAgMTIwLCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDEyNiwgMTg3LCA1NiwgMjA2LCA1MiwgMTQzLCAyMTYsIDQsIDIyOSwgMjMzLCAKLSAgICAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyNTAsIDQ3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMiwgCi0gICAgMjA1LCAyMDAsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCi0gICAgMjA1LCAyMDAsIDIwNywgMjYsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyNTAsIDE4MiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCi0gICAgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIAotICAgIDIsIDIwNSwgMjAwLCAyNTAsIDE4MywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyNTAsIDE5NywgMjA2LCAKLSAgICA1MiwgMiwgMjUwLCAxODEsIDI0OSwgMiwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDIwNiwgNzcsIDIwNiwgNTIsIDIsIDI1MCwgCi0gICAgMTgxLCAyMDYsIDc4LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjA4LCAyMDEsIDIwNiwgNTIsIDIsIDIzNywgMTUsIAotICAgIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDIxNSwgMTQ3LCAxNjMsIDI1MCwgCi0gICAgMTgwLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA3LCAzMywgMjIzLCAyMzIsIDIwNiwgNTIsIDIsIDI1MCwgMTIyLCAyMDYsIAotICAgIDUyLCAyLCAyMTUsIDE5OCwgMjUwLCAxMjIsIDIwNiwgNTIsIDE0MywgMjQ3LCA1NSwgNTUsIDIwNiwgNTIsIDIsIDIzMCwgCi0gICAgMTM1LCAyMDYsIDUyLCAyLCAyMDYsIDIyMiwgMjA2LCA1MiwgMTQzLCAyMTUsIDI1MywgNTUsIDIwNiwgNTIsIDE0MywgNTIsIAotICAgIDIxNSwgMjUzLCA1NSwgOCwgMSwgNSwgNiwgNjMsIDgsIDEsIDUsIDYsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCi0gICAgMjUxLCAxMDksIDgsIDEsIDUsIDYsIDI0OCwgMjI1LCAyNDksIDI1NSwgOCwgMSwgNSwgNiwgMjQ3LCAxMjUsIDgsIDEsIDUsIAotICAgIDYsIDI0NSwgNTEsIDgsIDEsIDUsIDYsIDI0MCwgMjQzLCA4LCAxLCA1LCA2LCA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE3MSwgCi0gICAgNzQsIDgsIDUsIDEsIDIwNywgMTc0LCA3NSwgOCwgMSwgNSwgNiwgMjMwLCAxODQsIDgsIDEsIDUsIDYsIDIzMCwgNTQsIDgsIAotICAgIDEsIDUsIDYsIDIyOCwgMTMxLCAzLCA5NSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDgsIDEsIDUsIDYsIDIxNiwgNzMsIDIyMywgCi0gICAgMTYzLCA4LCAxLCA1LCA2LCA3OCwgOCwgMSwgNSwgNiwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDc4LCA4LCA1LCAxLCAKLSAgICAyMTIsIDE1NCwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIAotICAgIDczLCA4LCAxLCA1LCA2LCAyMTksIDIxNiwgOCwgNSwgMSwgMjA4LCAxNDUsIDE2MiwgNzgsIDgsIDUsIDEsIDI0NywgMjQ4LCAKLSAgICAxNjIsIDc4LCA4LCAxLCA1LCA2LCAyMTksIDE4NCwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMTQ2LCA4LCAxLCA1LCA2LCAyMDcsIAotICAgIDE3NCwgMTQ2LCA4LCAxLCA1LCA2LCAyMTAsIDY5LCA4LCAxLCA1LCA2LCA2OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDY4LCA4LCAKLSAgICA1LCAxLCAyMTIsIDE1NCwgMjQzLCAyMjksIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAKLSAgICAxLCA1LCA2LCAyMDYsIDE2NCwgOCwgMSwgNSwgNiwgMjA0LCAxNDQsIDgsIDEsIDUsIDYsIDIwMiwgMTU5LCA4LCAxLCA1LCAKLSAgICA2LCAyNDAsIDE3NywgOCwgMSwgMjA1LCAxODYsIDIyOCwgMywgMjExLCAyMDAsIDgsIDEsIDI1MSwgNTksIDMwLCAxLCA1LCAKLSAgICA2LCAyMzgsIDIzNSwgMzAsIDEsIDUsIDYsIDIyOCwgMjQsIDMwLCAxLCA1LCA2LCAyMTgsIDE2NywgMzAsIDEsIDUsIDYsIAotICAgIDIxNiwgNTksIDMwLCAxLCA1LCA2LCAyMTcsIDIwMiwgMzYsIDEsIDUsIDYsIDI0MSwgMTIyLCA2NSwgMSwgNiwgNjMsIDY1LCAKLSAgICAxLCA2LCAyNTEsIDEwOSwgNjUsIDEsIDYsIDI0OSwgMjU1LCA2NSwgMSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA2NSwgMSwgCi0gICAgNiwgMjQ1LCA1MSwgNjUsIDEsIDYsIDc0LCA2NSwgMSwgNiwgMjE2LCA3MywgNzQsIDY1LCAxLCA2LCAyMzksIDc1LCA2NSwgCi0gICAgMSwgNiwgMjM3LCAxNzEsIDY1LCAxLCA2LCA3NSwgNjUsIDEsIDYsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjMwLCA1NCwgNjUsIAotICAgIDEsIDYsIDE1OSwgNjUsIDEsIDYsIDIyNiwgMTg1LCA2NSwgMSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA2LCAyMTYsIDczLCAKLSAgICAyMjMsIDE2MywgNjUsIDEsIDYsIDc4LCA2NSwgMSwgNiwgMjE5LCAyMTYsIDY1LCAxLCA2LCAyMTksIDE4NCwgNjUsIDEsIDYsIAotICAgIDE0NiwgNjUsIDEsIDYsIDIxMCwgNjksIDY1LCAxLCA2LCA2OCwgNjUsIDEsIDYsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgNjMsIAotICAgIDY1LCAxLCA1LCAyMDcsIDE3NCwgNjMsIDY1LCAxLCA1LCAyNTEsIDIsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjUxLCAxMDksIAotICAgIDY1LCAxLCA1LCAyNDksIDI1NSwgNjUsIDEsIDUsIDI0NSwgNTEsIDY1LCAxLCA1LCA3NCwgNjUsIDEsIDUsIDIxNCwgMTkyLCAKLSAgICA2NSwgMSwgNSwgMTcxLCA3NCwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjM5LCA3NSwgNjUsIDEsIAotICAgIDUsIDIwNywgMTc0LCA3NSwgNjUsIDEsIDUsIDIzMCwgNTQsIDY1LCAxLCA1LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDI0MSwgCi0gICAgNzgsIDY1LCAxLCA1LCA3OCwgNjUsIDEsIDUsIDE3MSwgNzgsIDY1LCAxLCA1LCAyMDgsIDE0NSwgMTYyLCA3OCwgNjUsIDEsIAotICAgIDUsIDI0NywgMjQ4LCAxNjIsIDc4LCA2NSwgMSwgNSwgMjE5LCAxODQsIDY1LCAxLCA1LCAyMTAsIDY5LCA2NSwgMSwgNSwgCi0gICAgNjgsIDY1LCAxLCA1LCAyMTIsIDE1NCwgNjgsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjI2LCAxODUsIDY1LCAxLCA1LCAyMDYsIAotICAgIDE2NCwgNjUsIDEsIDUsIDI1MSwgNTksIDY1LCAxLCA1LCAyNDgsIDEwNiwgNjUsIDEsIDUsIDMwLCAyMzgsIDIzNSwgNjUsIAotICAgIDEsIDUsIDI0NCwgMzcsIDY1LCAxLCA1LCAzMCwgMjE4LCAxOTIsIDY1LCAxLCA1LCAyNDYsIDE0MiwgOCwgMjEwLCAyNDYsIAotICAgIDUsIDEsIDc1LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTQ2LCA4LCAyMTAsIDI0NiwgNSwgMSwgNjgsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMDYsIDE2NCwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyNDgsIDEwNiwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMzgsIDIzNSwgCi0gICAgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMTYsIDU5LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxOCwgMTkyLCAzMCwgMjEwLCAyNDYsIAotICAgIDUsIDEsIDI0NiwgMTQyLCA4LCA1LCAxLCAyMDcsIDI0LCA4LCA1LCAxLCA2NiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjQ1LCA1MiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIyNiwgMTg2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjE5LCAxODUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNywgMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAzLCAyMzksIDI0MSwgMjUsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAxMDEsIDIwOCwgCi0gICAgMjI3LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM5LCA3NSwgNjUsIDEsIDM2LCAyNDEsIDkyLCA4LCA1LCAxLCAyMzEsIDQsIAotICAgIDIzOSwgNzUsIDgsIDUsIDEsIDIwOSwgMTExLCAzLCAyMTEsIDM2LCA4LCA1LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIAotICAgIDUsIDEsIDIzMCwgMjMxLCAzLCA5NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDk1LCA4LCA1LCA2LCAxLCAxMDYsIDMsIDk1LCAKLSAgICA4LCA1LCAxLCAyMDYsIDIxNywgMywgOTUsIDgsIDUsIDEsIDY2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDUsIAotICAgIDUyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM5LCAKLSAgICA3NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI4LCAKLSAgICAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjMsIAotICAgIDE2NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxNywgCi0gICAgMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQxLCA4LCAKLSAgICAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAzLCAxOTcsIAotICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNTEsIDMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjM2LCAKLSAgICAxMTYsIDI1LCAyMDksIDI0OCwgOCwgNSwgMSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgMTg4LCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNCwgCi0gICAgMTkzLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgCi0gICAgMTU4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0MSwgOCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAKLSAgICAyNTEsIDIsIDY1LCAxLCA1LCAyNDcsIDEyNSwgNjUsIDEsIDUsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA2NSwgMSwgNSwgCi0gICAgMjQwLCAyNDMsIDY1LCAxLCA1LCAyMTYsIDczLCAxNzEsIDc0LCA2NSwgMSwgNSwgMjQwLCAxNzQsIDY1LCAxLCA1LCAyNDMsIAotICAgIDg0LCAyMzAsIDE4NSwgMywgOTUsIDY1LCAxLCA1LCAxMzIsIDIzOSwgNzUsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjM3LCAKLSAgICAxNzEsIDY1LCAxLCA1LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDIzMCwgNjUsIDEsIDUsIDYsIDc1LCA2NSwgCi0gICAgMSwgNSwgNiwgMjM1LCAyMDYsIDMsIDk1LCA2NSwgMSwgNSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA2NSwgMSwgNSwgMjI4LCAKLSAgICAxMzEsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMTksIDE0MiwgMTEzLCA2NSwgMSwgNSwgNiwgCi0gICAgMTU5LCA2NSwgMSwgNSwgMjI2LCAxODYsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NiwgMywgMTYzLCAKLSAgICAyMjcsIDIxMCwgNjUsIDEsIDUsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIAotICAgIDExMywgNjUsIDEsIDUsIDYsIDIyMywgMTYzLCA2NSwgMSwgNSwgMjQ4LCAyMjUsIDc4LCA2NSwgMSwgNSwgMjE4LCAxOTIsIAotICAgIDY1LCAxLCA1LCAyMTUsIDk0LCAzLCAxMTMsIDY1LCAxLCA1LCAyNDEsIDcsIDY1LCAxLCA1LCAyMTAsIDcwLCAzLCAyMTksIAotICAgIDE0MiwgMTEzLCA2NSwgMSwgNSwgMTA2LCAxNDIsIDY1LCAxLCA1LCAyMDYsIDIxNiwgNjUsIDEsIDUsIDYsIDY4LCA2NSwgMSwgCi0gICAgNSwgMjA2LCAxNjUsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMDYsIDE2NCwgNjUsIDEsIDUsIDIwMiwgMTU5LCAKLSAgICA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA2NSwgCi0gICAgMSwgNSwgMjQwLCAxNzcsIDY1LCAxLCA1LCAyMDksIDc0LCAzOSwgMjQyLCA4MywgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgCi0gICAgMjQyLCA4MywgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgMjEyLCAyNSwgNTYsIDM5LCAyMTAsIDE4MiwgODIsIDM5LCAyMjUsIAotICAgIDE2OSwgMzksIDIzNywgMjUxLCAzOSwgMjI1LCAxNjcsIDM5LCAyNTEsIDEyNCwgMzksIDIzNywgMjUyLCAzOSwgMjUxLCAKLSAgICAxMjUsIDM5LCA4LCA1LCAxLCAyMTcsIDEsIDU2LCAzOSwgMjQ3LCAyMTMsIDM5LCAyMjUsIDE2OCwgMzksIDUyLCAyNDYsIAotICAgIDUzLCA1NSwgMzksIDIyMCwgNjMsIDU1LCAzOSwgMjAyLCAzMCwgNTYsIDM5LCAyMzAsIDIxNiwgNTYsIDM5LCAyMDYsIDIxMSwgCi0gICAgNTUsIDM5LCAyMDYsIDE5NCwgNTUsIDM5LCA4LCA1LCAxLCAyMzksIDIxNCwgMTcxLCAzNCwgNTUsIDM5LCA4LCA1LCAxLCAKLSAgICAyNTEsIDEwOSwgMzksIDgsIDUsIDEsIDI1MCwgMTc4LCAzOSwgOCwgNSwgMSwgMjUwLCAxOCwgMzksIDgsIDUsIDEsIDI0NywgCi0gICAgMTI2LCAyNDYsIDIzMSwgMzksIDgsIDUsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDI0MCwgMjQzLCAzOSwgCi0gICAgOCwgNSwgMSwgMjM5LCA3NSwgMzksIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDM5LCA4LCA1LCAxLCAyMzAsIDU0LCAzOSwgOCwgCi0gICAgNSwgMSwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDM5LCA4LCA1LCAxLCAKLSAgICAyMjMsIDE2MywgMzksIDgsIDEsIDUsIDYsIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMTQ2LCAzOSwgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAyMTUsIDE5MiwgMzksIDgsIDUsIDEsIDE5NCwgMzksIDgsIDUsIDEsIDE2MywgMTk0LCAzOSwgOCwgNSwgMSwgCi0gICAgMjAyLCAxNTksIDM5LCA4LCA1LCAxLCAyNTEsIDIsIDM5LCA4LCA1LCAxLCAyNDksIDI1NSwgMzksIDgsIDUsIDEsIDI0OCwgCi0gICAgMTA2LCAzOSwgOCwgNSwgMSwgMjE0LCAxOTIsIDM5LCA4LCA1LCAxLCAyNDAsIDE3NCwgMzksIDgsIDUsIDEsIDIyOCwgMTMxLCAKLSAgICAzLCA1MiwgMTAxLCAyMDgsIDIyNywgMzksIDgsIDUsIDEsIDE1OCwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIDM5LCA4LCA1LCAKLSAgICAxLCAyMTksIDE4NCwgMzksIDgsIDUsIDEsIDI0MSwgNywgMzksIDgsIDUsIDEsIDEwNiwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIAotICAgIDM5LCA4LCA1LCAxLCAyMDQsIDE0NCwgMzksIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgMjQzLCAyMzEsIDM5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzOSwgMTEyLCAyMTAsIDQsIDU1LCAzOSwgNTIsIAotICAgIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU2LCAzOSwgNDksIDI1MCwgOTUsIAotICAgIDU1LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMjEsIDI1MCwgOTUsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCAKLSAgICA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU1LCA4LCA1LCAxLCA2NiwgMywgNzAsIAotICAgIDU1LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA1LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA2LCAxLCA2NiwgMywgMjI3LCAKLSAgICAxMTUsIDU2LCA4LCA1LCAxLCA2NiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzIsIAotICAgIDI1LCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NiwgOCwgNSwgCi0gICAgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDI0NSwgCi0gICAgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIAotICAgIDI0NiwgMjMxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ2LCA1MywgCi0gICAgNTYsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgCi0gICAgMTcxLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgMjQ2LCAyMzIsIDI1LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCAKLSAgICA4LCA2LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMzksIAotICAgIDc2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgCi0gICAgNTUsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIAotICAgIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIAotICAgIDIzMSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCA1NiwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCAKLSAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCAKLSAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMyLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKLSAgICAyMzIsIDI1LCAxNjUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDE2NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA2LCAKLSAgICAxLCAyMzAsIDU1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjMwLCA1NSwgMywgCi0gICAgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAKLSAgICA3MCwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA3MCwgMjQ4LCAxMjYsIAotICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKLSAgICAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAKLSAgICAyMjgsIDEzMSwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDE2NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDE2NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCAKLSAgICA1NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIAotICAgIDcwLCA1NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNiwgCi0gICAgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgCi0gICAgMSwgMjIzLCAxNjQsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDE2NSwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDIxNywgMSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDUsIAotICAgIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIAotICAgIDU2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA1LCAKLSAgICAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCi0gICAgMjUxLCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDUsIDEsIAotICAgIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAKLSAgICAzLCA3MCwgNTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgNzAsIDU2LCA4LCAKLSAgICA1LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCi0gICAgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjEwLCAKLSAgICA3MCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgCi0gICAgMjMyLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCAKLSAgICA2LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIAotICAgIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIAotICAgIDIyNSwgMTcxLCAyNSwgMjQzLCAyMzEsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNiwgMSwgCi0gICAgMjA2LCAxNjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIwNiwgMTY1LCAKLSAgICAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyMzcsIDI1MywgCi0gICAgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMTY1LCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NSwgMywgMTY1LCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIAotICAgIDIzMSwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgCi0gICAgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIDI0MywgMjMxLCA4LCAKLSAgICA1LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwMywgCi0gICAgMTI1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ2LCAKLSAgICA1MiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgCi0gICAgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCi0gICAgMjM3LCAxNzIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICA1MCwgMTYyLCAyMTUsIDI1MiwgOCwgNSwgMSwgMTYzLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE2MywgMjE1LCAKLSAgICA5NCwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDIxMywgNTcsIAotICAgIDE5NCwgOCwgNSwgMSwgMjQ0LCAzNywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIAotICAgIDcwLCA1NiwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAKLSAgICAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIAotICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgNzAsIDU2LCAKLSAgICA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAxODgsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjM2LCAxMTYsIAotICAgIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAKLSAgICAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgCi0gICAgMTE2LCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDcwLCA1NiwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIAotICAgIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgCi0gICAgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAKLSAgICAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIAotICAgIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIAotICAgIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDEwNiwgMywgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDExNiwgCi0gICAgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKLSAgICA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAKLSAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM3LCAyNTMsIDgsIAotICAgIDUsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIAotICAgIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA1LCAxLCAyMjQsIDE0NywgMjI3LCA3OCwgOCwgNiwgMSwgCi0gICAgMjI0LCAxNDcsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAKLSAgICAyMjcsIDE0LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI3LCAxNCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIAotICAgIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIAotICAgIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAKLSAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MSwgMzgsIAotICAgIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAKLSAgICAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIAotICAgIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAotICAgIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCi0gICAgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAKLSAgICAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIAotICAgIDIzMCwgMjMxLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDIzMCwgCi0gICAgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIAotICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAKLSAgICAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIAotICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgCi0gICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgCi0gICAgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzUsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAKLSAgICAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgCi0gICAgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgCi0gICAgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgCi0gICAgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgCi0gICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgCi0gICAgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgCi0gICAgMSwgMjUxLCAzLCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MSwgMzgsIAotICAgIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgCi0gICAgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAKLSAgICAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTksIAotICAgIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCi0gICAgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgCi0gICAgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAKLSAgICAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAotICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgCi0gICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgCi0gICAgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAKLSAgICAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIAotICAgIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAKLSAgICAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCi0gICAgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAKLSAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgCi0gICAgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIAotICAgIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgCi0gICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIAotICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAKLSAgICAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIAotICAgIDIyMSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCi0gICAgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIAotICAgIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKLSAgICAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIAotICAgIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAotICAgIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAKLSAgICAzLCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAKLSAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAyMDksIAotICAgIDMwLCAyMjgsIDI1MiwgMzAsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTUsIDMwLCAyMTgsIDIzOSwgMzAsIDI0MywgMjI1LCAyNSwgCi0gICAgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgCi0gICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIAotICAgIDI0MCwgMjQ5LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAKLSAgICAyMzAsIDIzMSwgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgCi0gICAgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE4LCAKLSAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAKLSAgICAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDYsIAotICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgCi0gICAgMjA1LCAxNjcsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAKLSAgICAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAKLSAgICAxLCAyMTYsIDYwLCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDIxNiwgNjAsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjA2LCAKLSAgICAyMTcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyMDYsIAotICAgIDIxNywgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIxNiwgNjAsIDMsIAotICAgIDI0NCwgMTQxLCAzMCwgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIAotICAgIDM3LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDIwOSwgMzAsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDEsIDI0MSwgOTMsIDIxNywgNjIsIDI0MSwgMTA0LCAyMTcsIDYyLCAKLSAgICAyNDEsIDkzLCAyMTEsIDIyOCwgMjQxLCAxMDQsIDIxMSwgMjI4LCAyMDksIDI4LCAyMTEsIDIyOCwgMjM5LCAxNDUsIDIxMSwgCi0gICAgMjI4LCAyMTIsIDg2LCAyMTEsIDIyOCwgMjQwLCAxNiwgMjExLCAyMjgsIDIxNywgMTc5LCAyMTEsIDIyOCwgMjA5LCA2MywgCi0gICAgMjExLCAyMjgsIDIzNywgMTQ2LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjExLCAyMjgsIDIwMiwgODUsIDIwNCwgCi0gICAgMjQsIDIyMSwgMTgzLCAyMDIsIDg1LCAyMDQsIDI0LCAyMzAsIDk2LCAyMjcsIDIxMywgODIsIDIxNiwgNywgODIsIDIzNSwgCi0gICAgMjIwLCAyMjEsIDE4NCwgMjM1LCAyMjAsIDI0MCwgMTYsIDI0NCwgMTQ0LCAyNDEsIDkzLCAyNDQsIDE0NCwgMjQxLCAxMDQsIAotICAgIDI0NCwgMTQ0LCAyMzYsIDEwNiwgMTQyLCA1MiwgODAsIDIyNywgMTE0LCA1MiwgMTI0LCAyMjcsIDExNCwgNDksIDIxMiwgCi0gICAgMTIwLCAyMTcsIDMxLCA4MiwgNTAsIDIxMiwgMTIwLCAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIyNiwgMjU1LCAyMTcsIDMxLCAKLSAgICA4MiwgMjEyLCAxMjAsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgNDksIDUyLCAyMTcsIDMxLCA4MiwgNTAsIDUyLCAyMTcsIAotICAgIDMxLCA4MiwgNTIsIDIyNiwgMjU1LCAyMTcsIDMxLCA4MiwgNTIsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgMjQ0LCAxOTUsIAotICAgIDUyLCAyNDQsIDE5NSwgMjQ3LCAxNzcsIDIwOCwgODIsIDI0NywgMTc3LCAxMTgsIDcwLCAyMjcsIDIzMiwgMTIwLCA3MCwgCi0gICAgMjI3LCAyMzIsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMjM1LCAyMTgsIDIxOCwgNjIsIDIyNywgMTE1LCAyMTMsIDEzMCwgMjE5LCAKLSAgICA4OSwgMjEzLCAxMzAsIDIyNywgMjEzLCAyNDEsIDEwMiwgMjE2LCA3LCAyNDEsIDEwMiwgMjE4LCA0MiwgMjQzLCAxNjUsIAotICAgIDIzOSwgMTU3LCAyMjcsIDIxMywgMjE5LCAxOTYsIDIxNiwgNywgMjE5LCAxOTYsIDIyMywgNzMsIDIyMSwgMTkwLCAyMTEsIAotICAgIDIyOCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgMjE3LCAyMzYsIAotICAgIDUyLCAyMTcsIDIzNiwgMjA4LCA3MCwgMjE3LCAyMzYsIDIxNiwgNzMsIDIxNywgMjM2LCAyMTYsIDczLCA1MiwgMjE3LCAKLSAgICAyMzYsIDIxNiwgNzMsIDIwOCwgNzAsIDIxNywgMjM2LCAyNDcsIDMzLCAyMTIsIDEyMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAKLSAgICAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjE2LCAxMzQsIDgyLCA1MiwgCi0gICAgMjQwLCAyMTIsIDgyLCAyMzAsIDI0NywgMjE5LCAxOTgsIDIwNiwgMjQzLCAxNjcsIDIwOCwgMjUwLCAyNDcsIDM0LCAyMzEsIAotICAgIDgsIDIxOCwgNjIsIDI1MCwgNTcsIDIzNSwgMjIxLCAyNDcsIDE3NywgMjM5LCAxMzgsIDIxMiwgNTcsIDQ5LCA1MSwgMjQ3LCAKLSAgICAyMjcsIDMsIDIxNywgNDEsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIxNywgNDEsIDUyLCAyMTcsIDQ3LCA4MiwgMjE3LCA0NywgCi0gICAgMjQwLCAyMTIsIDgyLCAyNDAsIDIxMiwgMjE3LCA0NywgODIsIDIwOCwgMjAzLCAyLCAyNDAsIDI1MCwgMjE2LCA3MywgMjE4LCAKLSAgICAxMjYsIDU0LCA2MiwgOTYsIDI0NywgMTc3LCA2MiwgODYsIDI0NywgMTc3LCAxMjQsIDI1MCwgNTksIDIxNiwgNzMsIDIxMywgCi0gICAgMTQzLCAyNDYsIDE3LCAyMDYsIDIyNCwgMTIwLCAyNTAsIDU4LCAyNTEsIDE4LCAyMDUsIDI0MywgMjQ1LCAyMzEsIDIyNCwgCi0gICAgMTAzLCA1NCwgMjEwLCAxNTMsIDI0NCwgMTQ0LCAyMzAsIDIzOSwgMjA2LCAyNDMsIDIzOSwgMTk4LCAyMTcsIDE3OSwgODIsIAotICAgIDEyNiwgNzAsIDIxNywgMTc4LCAyMTcsIDU4LCAyMTcsIDIzNiwgMjM5LCAxNDcsIDcwLCAyMTcsIDE3OCwgMjM5LCAyMzMsIAotICAgIDcwLCAyMTcsIDE3OCwgMTIwLCA3MCwgMjE3LCAxNzgsIDIzOSwgMTQ3LCA3MCwgODIsIDI0MiwgODMsIDI0NSwgMTMwLCAKLSAgICAyMDgsIDgxLCA4MCwgMjM5LCAxNDcsIDI0MywgODMsIDIyNSwgMTAsIDEzLCAyMTEsIDIyOCwgMjAzLCAyMzgsIDIzMCwgOTYsIAotICAgIDIzOSwgMTAwLCAyNTAsIDE1NSwgMjMwLCAyMzcsIDIwOCwgMjE5LCAyMzAsIDIzNywgMjEzLCAxMzAsIDIzMCwgMjM3LCAKLSAgICAyMTgsIDc2LCAyMjcsIDIxMywgMjMwLCAyMDcsIDIxNiwgNywgMjMwLCAyMDcsIDIzOSwgMjQ1LCAyMTEsIDE4LCAyMzAsIAotICAgIDIwNywgMjE4LCA0MiwgMjQzLCAxNjUsIDIzMCwgMjA3LCAyMzEsIDIwLCAyMTAsIDEwMSwgMjEwLCAxNzAsIDI1MSwgMTI4LCAKLSAgICAyMTAsIDEwMSwgMjEwLCAxNzAsIDIzMSwgMjAsIDEwLCAyMzksIDE1OSwgMjEzLCA2MSwgMjUxLCAxMjgsIDEwLCAyMzksIAotICAgIDE1OSwgMjEzLCA2MSwgMjIzLCA2NywgMTcsIDIxMywgNjIsIDIyMSwgMTg2LCAxNywgMjEzLCA2MiwgMjEwLCAxOTksIDIwMiwgCi0gICAgODQsIDIxMCwgMTk5LCA4LCA1LCAxLCA3NSwgMjEwLCAxOTksIDE0OSwgMjEwLCAxOTksIDE3MCwgMjEwLCAxOTksIDE5NSwgCi0gICAgMjEwLCAxOTksIDIxMywgMTExLCAyMTAsIDE5OSwgMTk5LCAyMTAsIDE5OSwgMjIyLCA2MywgMjEwLCAxOTksIDkxLCA1NCwgCi0gICAgMjEwLCAxOTksIDIyNCwgMTAyLCAyMTAsIDE5OSwgMjQxLCAzNSwgNTQsIDIxMCwgMTk5LCA0OSwgMjE5LCA3NiwgMjEwLCAKLSAgICAxOTksIDUwLCAyMTksIDc2LCAyMTAsIDE5OSwgOCwgNSwgMSwgMjIzLCAxNjMsIDIxMCwgMjQ2LCAyMDIsIDg0LCAyMTAsIAotICAgIDI0NiwgMTA1LCAyMTAsIDI0NiwgMTA4LCAyMTAsIDI0NiwgMTQ3LCAyMTAsIDI0NiwgMTQ5LCAyMTAsIDI0NiwgMTcwLCAKLSAgICAyMTAsIDI0NiwgMTk1LCAyMTAsIDI0NiwgMjEzLCAxMTEsIDIxMCwgMjQ2LCAxOTksIDIxMCwgMjQ2LCAyMjIsIDYzLCAyMTAsIAotICAgIDI0NiwgOTEsIDU0LCAyMTAsIDI0NiwgMjI0LCAxMDIsIDIxMCwgMjQ2LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDYsIDQ5LCAKLSAgICAyMTksIDc2LCAyMTAsIDI0NiwgNTAsIDIxOSwgNzYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2MywgOCwgMjEwLCAyNDYsIDUsIDEsIAotICAgIDc0LCA4LCAyMTAsIDI0NiwgNSwgMSwgNzgsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMDMsIDE5NiwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIxNCwgMTkyLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjM3LCAxNzEsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzAsIDU0LCA4LCAKLSAgICAyMTAsIDI0NiwgNSwgMSwgMTU5LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjI2LCAxODUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjMsIAotICAgIDE2MywgOCwgMjEwLCAyNDYsIDUsIDEsIDIxOSwgMTg0LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTk0LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMjQwLCAyMjksIDU0LCAyNDUsIDI0MywgNTQsIDI0NSwgMTE1LCA1NCwgMjM5LCAxMjgsIDIzOSwgMTMyLCAKLSAgICA1NCwgMjI3LCA5NCwgNTQsIDIyNCwgMTE3LCA1NCwgMjIzLCA5MCwgNTQsIDIxOCwgMjI0LCA1NCwgMjE1LCAxMjAsIDU0LCAKLSAgICAyMDMsIDI0NiwgNTQsIDIyMiwgMjE0LCAyMTMsIDI5LCA1NCwgMjQzLCA5MiwgNTQsIDI0MCwgMjMwLCA1NCwgMjI5LCA3OSwgCi0gICAgNTQsIDIwNywgMTk2LCA1NCwgMjQyLCA2NiwgNTQsIDIzOCwgMTY2LCAyMTksIDIsIDU0LCAyMTgsIDIyMSwgNTQsIDIzNywgCi0gICAgMjI1LCA1NCwgMjUwLCAyNCwgNTQsIDIzNiwgMzIsIDU0LCAyNDYsIDIzMywgNTQsIDIyNywgODQsIDIwOCwgMTI1LCA1NCwgCi0gICAgMjExLCAyMDksIDU0LCAyMDksIDE1MCwgNTQsIDIzMSwgMzQsIDIxNSwgMTIwLCA1NCwgMjA3LCAxNzcsIDIyNywgOTQsIDU0LCAKLSAgICAyMjEsIDE3MywgMTMxLCA1NCwgMjI1LCAxMjAsIDU0LCAyMTUsIDE0MiwgNTQsIDIyOCwgNCwgNTQsIDM5LCA0OSwgMjM3LCAKLSAgICA4NywgNTUsIDM5LCA1MCwgMjM3LCA4NywgNTUsIDM5LCAxNjMsIDgwLCAyMjcsIDExNSwgMjE5LCAxOTksIDM5LCAyMTIsIAotICAgIDIyOCwgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCA1MywgNTUsIDM5LCAyNDYsIDE4LCA1MywgNTUsIAotICAgIDM5LCA0OSwgNTMsIDU1LCAzOSwgNTAsIDUzLCA1NSwgMzksIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDI0NiwgMTgsIDIxNSwgCi0gICAgMjUzLCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCAyMTUsIDI1MywgMjE5LCAxOTksIDM5LCAxMjYsIDE4NywgNTUsIDM5LCAKLSAgICAyMzksIDE0NywgMTg3LCA1NSwgMzksIDI0MSwgODgsIDI0NiwgNjEsIDM5LCAyNDEsIDg4LCAyMTEsIDE3NywgMzksIDI0MSwgCi0gICAgODgsIDI0MywgMjIxLCAzOSwgMjQxLCA4OCwgMjQ2LCA2MiwgMjQ5LCAyMCwgMzksIDQ5LCA1MCwgNTMsIDU1LCAzOSwgMjQxLCAKLSAgICA4OCwgMjE0LCAxODQsIDM5LCAyNDEsIDg4LCAyMjksIDE0NywgMzksIDI0MSwgODgsIDIwNiwgMjE0LCAyMTgsIDU5LCAyMDgsIAotICAgIDg1LCAzOSwgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDUyLCA4MCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAKLSAgICAyNTAsIDIwNCwgOTcsIDM5LCAyMDgsIDcwLCAyMDYsIDI0NSwgMzksIDIwNCwgMjcsIDI0NywgMjA4LCA1NSwgMzksIDk2LCAKLSAgICA1MywgMjE5LCAxOTksIDM5LCAxNjMsIDUyLCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgODYsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMjQyLCA2OCwgMzksIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDM5LCA0OSwgNTMsIDU2LCAzOSwgNTAsIDUzLCAKLSAgICA1NiwgMzksIDI1MCwgNjAsIDU1LCAyNTEsIDEzNCwgMjIwLCA2OSwgMjUxLCAxMTgsIDIwOCwgMTczLCAyMDksIDkzLCAyMTAsIAotICAgIDI1NSwgMTY5LCA2LCAyNDcsIDEyNSwgMjQ0LCA1NSwgMjQ2LCAyMjMsIDI0NiwgMjE4LCAyMjcsIDExNSwgOTcsIDI0NywgCi0gICAgMzUsIDIyMCwgNjksIDI0NywgODQsIDIwNiwgMjU0LCAyNDAsIDIzMSwgMjQ1LCAyMDAsIDIxNCwgMTgxLCAyNDQsIDU1LCAKLSAgICAyNDAsIDkwLCAxMzIsIDUsIDIzOSwgNzUsIDEzMiwgNiwgMjM3LCAxNzEsIDI0OCwgNDEsIDYsIDIzNywgMTcxLCAxNjksIDYsIAotICAgIDIzNywgMTcxLCAyMTgsIDkzLCAyNDUsIDIwMCwgMjE4LCA5MywgMjQ1LCAyMDEsIDExNSwgMTIwLCAyMTgsIDE2NywgMTMyLCAKLSAgICA2LCA3NSwgMjQ4LCA0MSwgNiwgNzUsIDEzMiwgNiwgMTU5LCAxMzIsIDUsIDE1OSwgMjI4LCAxMzEsIDY2LCAyNDgsIDIzMSwgCi0gICAgOTcsIDE2OSwgNiwgMjIzLCAxNjMsIDIyMSwgNDIsIDU0LCAyMTEsIDI0MSwgMjE2LCAxNDYsIDI0NSwgMTY4LCAxMzIsIDYsIAotICAgIDIxOSwgMTg0LCAxNjksIDYsIDIxOSwgMTg0LCAxNjksIDYsIDIxNywgMTM0LCAxMzIsIDYsIDE0NiwgMjQ4LCA0MSwgNiwgCi0gICAgMTQ2LCAxNjksIDYsIDE0NiwgMjE3LCAyNDMsIDIwOSwgMjQxLCAyMTYsIDg2LCAyMTMsIDEyMiwgODIsIDIwOSwgMTYyLCAKLSAgICA1NCwgMjA4LCAxMTUsIDEzMSwgNTQsIDIwNiwgMzksIDE2OSwgNiwgMjAyLCAxNTksIDIxOSwgMjE1LCA1NCwgMjIwLCA1OSwgCi0gICAgNTQsIDIzMCwgMjM5LCAyMjAsIDU5LCA1NCwgMjQ4LCA0MSwgNiwgMjAyLCAxNTksIDIwNywgMTc0LCAzMCwgNSwgMSwgMjMwLCAKLSAgICAyMzAsIDIyOSwgMTg4LCA1NCwgMjUwLCAyMTMsIDU0LCAxMzIsIDYsIDI0OSwgMjU1LCAyNDgsIDQxLCA2LCAyNDcsIDEyNSwgCi0gICAgMjQwLCAyNTUsIDk3LCAxMzIsIDUsIDc0LCAxMzIsIDYsIDc0LCAxMzIsIDYsIDI0MCwgMTc0LCAyMDcsIDE3NCwgNiwgMjQwLCAKLSAgICAxNzQsIDEzMiwgNiwgMjI2LCAxODUsIDEzMiwgNSwgNzgsIDEzNywgOTcsIDI0OCwgMTA5LCA5NywgMjM4LCA2OCwgOTcsIAotICAgIDI0NCwgMTc5LCA5NywgMjMxLCAyNSwgMjExLCAyMzksIDIxNSwgMTk4LCA2LCAyMTcsIDEzNCwgMjQwLCA5MywgNTQsIDE2OSwgCi0gICAgNSwgMjE4LCAxNjcsIDE2OSwgNSwgMjM4LCAyMzUsIDE2OSwgNiwgMjM4LCAyMzUsIDE2OSwgNiwgMjE4LCAxNjcsIDE2OSwgCi0gICAgMjIzLCAxNjIsIDIxMCwgMjE3LCAyMDcsIDE3NCwgNDEsIDYsIDIzOSwgNzUsIDIwNywgMTc0LCA0MSwgNiwgMTU5LCAyMTYsIAotICAgIDczLCA0MSwgNiwgMTU5LCAyMDcsIDE3NCwgNDEsIDYsIDIwMywgMTI0LCAxNjksIDM3LCA2LCAyNDUsIDUxLCAxNjksIDM3LCAKLSAgICA1LCAyNDUsIDUxLCAxNjksIDM3LCA1LCA3NCwgMTY5LCAzNywgNSwgNzUsIDE2OSwgMzcsIDUsIDIzMCwgMTg0LCAyMTcsIAotICAgIDIxMiwgMjI3LCAxMTQsIDIwNywgMTc0LCAyNTAsIDIzNSwgMjE4LCAyNDcsIDU0LCAyNTEsIDQxLCAyMDcsIDE3NCwgNSwgCi0gICAgMjQwLCAxNzQsIDE2LCAzNSwgMjE0LCAyNTIsIDIxMSwgMjM5LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjEzLCAxMDcsIAotICAgIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMjIsIDU3LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjA5LCAxNDMsIDIwNCwgCi0gICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyMCwgMjA5LCA1NywgMjA0LCAxNjEsIAotICAgIDIzOSwgMTM4LCAxMTgsIDI0MCwgMjEsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDEyNiwgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDE0NywgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAxMTgsIDIxMiwgNzgsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIxMiwgNzYsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMTE4LCAyNDEsIDEzOCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDIzOSwgMjMzLCAyNDEsIDEzNiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjQxLCAxMzYsIDIzOSwgCi0gICAgMTM4LCAyMjEsIDQzLCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDgsIDIxNSwgCi0gICAgMjEwLCAyMjEsIDQ0LCAxNDcsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDIxNSwgCi0gICAgMjEwLCAyMjEsIDQ0LCAxOTUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTMsIDExMSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgMjE1LCAyMTAsIDIyMSwgCi0gICAgNDQsIDI0MSwgMTEyLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA3LCAxNTQsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMzYsIDExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzYsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDUsIDIxNSwgMjEwLCAKLSAgICAyMjEsIDQ0LCAxMDgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDcsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTUsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAyMTMsIDExMSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MSwgMTEyLCA1LCAyMTUsIDIxMCwgCi0gICAgMjIxLCA0NCwgMjA3LCAxNTQsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgCi0gICAgMTE4LCAyMzYsIDExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIAotICAgIDQ0LCAxMTgsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzcsIDI0NywgMTI2LCAyNDUsIDUxLCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MywgMjA5LCAKLSAgICAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxNiwgNzMsIDExOCwgMjM2LCAxMSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTIsIDg4LCAyMjcsIDI1NSwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAKLSAgICAyNDEsIDE4MiwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgCi0gICAgMTE4LCAyMzYsIDEyLCAyMDksIDM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIwMiwgODUsIDIwOSwgNTcsIDIwNywgMTc0LCAKLSAgICAxNywgMTA4LCAyMDcsIDE3NCwgMTcsIDE0NywgOTYsIDQ3LCAxNzcsIDQ3LCA4NiwgNDcsIDE4MywgNDcsIDQ5LCA1MCwgNDcsIAotICAgIDExMiwgMTIxLCA0NywgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyNDEsIDE3NiwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0NywgOTYsIDUzLCAzLCA5NSwgODYsIDUzLCAzLCA5NSwgOTYsIDIwNCwgNzYsIDQ3LCAKLSAgICA4NiwgMjA0LCA3NiwgNDcsIDk2LCAxMjAsIDIzNywgNjIsIDQ3LCAxNzcsIDEyMCwgMjM3LCA2MiwgNDcsIDg2LCAxMjAsIAotICAgIDIzNywgNjIsIDQ3LCAxODMsIDEyMCwgMjM3LCA2MiwgNDcsIDk2LCA1MywgMywgMjA5LCAyNDgsIDg2LCA1MywgMywgMjA5LCAKLSAgICAyNDgsIDk2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUzLCAyMzksIDEyMCwgCi0gICAgMTQyLCAxODMsIDUzLCAyMzksIDEyMCwgMTQyLCAxMTIsIDEyMSwgNTMsIDMsIDI0OCwgMjE4LCA5NiwgNTMsIDMsIDExMywgCi0gICAgODYsIDUzLCAzLCAxMTMsIDk2LCA1MywgMywgMjI3LCAxNCwgODYsIDUzLCAzLCAyMjcsIDE0LCA0OSwgNTAsIDIwNCwgNzYsIAotICAgIDQ3LCA0OSwgNTAsIDUzLCAzLCA5NSwgMTgzLCAyMDIsIDMwLCA0NywgMTc3LCA1MywgMywgMjA4LCAyMTEsIDIyNywgMjEyLCAKLSAgICAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjE2LCA1LCAxODMsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIDE4MywgNTMsIDMsIAotICAgIDIwOCwgMjExLCAyMTYsIDUsIDg2LCA1MywgMywgMjQ1LCAxNjYsIDI0MiwgNjgsIDE4MywgNTMsIDMsIDI0NSwgMTY2LCAKLSAgICAyMjcsIDIxMiwgMjUwLCAxOTQsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgNDcsIDI0NiwgMTgsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgCi0gICAgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAxNjMsIDE0MiwgOTYsIDUzLCAyMDgsIDE3MywgMjQ4LCAyMzEsIAotICAgIDExNSwgODYsIDUzLCAyMDgsIDE3MywgMTQyLCAyNTAsIDE5NCwgMTcxLCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMTcxLCAKLSAgICAyNDYsIDYyLCA0NywgOTYsIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIAotICAgIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDUsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDIzNywgCi0gICAgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDE4MywgMjM3LCA4NywgMywgMTUwLCAKLSAgICAyMTYsIDUsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDUzLCAxMTUsIDk2LCA0NywgMTc3LCA1MywgOTYsIAotICAgIDc2LCAxODMsIDQ3LCA5NiwgNTMsIDExNSwgODYsIDQ3LCA5NiwgMjE5LCAxNDYsIDI1MCwgOTEsIDE3NywgMjE5LCAxNDYsIAotICAgIDI1MCwgOTEsIDg2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTgzLCAyMTksIDE0NiwgMjUwLCA5MSwgOTYsIDIzNywgODcsIDExNSwgCi0gICAgODYsIDIzNywgODYsIDg2LCAyMzcsIDg3LCAxMTUsIDk2LCAyMzcsIDg2LCA5NiwgNTIsIDUzLCAzLCA5NSwgNDksIDUwLCAKLSAgICA1MiwgNTMsIDMsIDk1LCA4NiwgNTIsIDUzLCAzLCA5NSwgOTYsIDUyLCA0NywgMTc3LCA1MiwgNDcsIDg2LCA1MiwgNDcsIAotICAgIDE4MywgNTIsIDQ3LCA0OSwgNTAsIDUyLCA0NywgMTEyLCAxMjEsIDUyLCA0NywgMTUzLCAyMDQsIDQ2LCA1MiwgNDcsIDE1MywgCi0gICAgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA1MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA1MiwgNDcsIAotICAgIDk2LCAyMDgsIDcwLCA0NywgODYsIDIwOCwgNzAsIDQ3LCA5NiwgMjExLCAxNzEsIDQ3LCA4NiwgMjExLCAxNzEsIDQ3LCAKLSAgICAxNzcsIDUzLCAzLCA1MiwgOTUsIDE4MywgNTMsIDMsIDUyLCA5NSwgOTYsIDI0NCwgMTQzLCA0NywgMTc3LCAyNDQsIDE0MywgCi0gICAgNDcsIDg2LCAyNDQsIDE0MywgNDcsIDE4MywgMjQ0LCAxNDMsIDQ3LCA5NiwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgCi0gICAgMjA4LCAxNzMsIDE0MiwgOTYsIDYxLCA0NywgMTc3LCA2MSwgNDcsIDg2LCA2MSwgNDcsIDE4MywgNjEsIDQ3LCAxNzcsIDYxLCAKLSAgICA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAKLSAgICAyMTksIDI3LCAzLCAyMzYsIDEwNiwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNywgMywgODAsIDE0MiwgCi0gICAgMTc3LCA2MSwgNTIsIDQ3LCAxNzcsIDYxLCA1MiwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDg2LCA2MSwgNTMsIDIzOSwgMTIwLCAKLSAgICAyMDQsIDk5LCAxNTMsIDIwNCwgNDYsIDUzLCAyMDgsIDE3MywgMjQ1LCAxNjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIAotICAgIDIwOCwgMTczLCAyNDUsIDE2NSwgMTEyLCAxMjEsIDYxLCA0NywgNTAsIDUzLCAzLCA1LCAyNDYsIDYxLCAxODMsIDUzLCA5NiwgCi0gICAgNzYsIDE3NywgNDcsIDEyNiwgODYsIDI1MCwgOTEsIDk2LCA1MywgMywgODAsIDk1LCA4NiwgNTMsIDMsIDgwLCA5NSwgNDksIAotICAgIDUwLCA1MywgMywgODAsIDk1LCA5NiwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCA1MywgMywgNTIsIDgwLCA5NSwgNDksIDUwLCAKLSAgICA1MywgMywgNTIsIDgwLCA5NSwgOTYsIDIyMCwgNiwgNDcsIDg2LCAyMjAsIDYsIDQ3LCA0OSwgNTAsIDIyMCwgNiwgNDcsIAotICAgIDM1LCAyNTEsIDE0LCAyNDUsIDIyOCwgMjE5LCA2OSwgMjQzLCAyMDUsIDIwOSwgODMsIDI0MCwgMjA3LCAyMDksIDgzLCAKLSAgICAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0MCwgMjA4LCAyNDEsIDk0LCAyMTMsIDExNywgMjMxLCAzOCwgMjIzLCAxMDEsIDI0MSwgCi0gICAgMTE1LCAyMjAsIDY5LCAyMjEsIDE2NiwgMjUwLCAyMzIsIDI0MSwgMTE1LCAyMjAsIDY5LCA1LCAyNDEsIDExNSwgMjIwLCAKLSAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAKLSAgICAyMjQsIDI0NCwgNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDEsIDg0LCA3NiwgMjE3LCAyMTQsIDIyMywgCi0gICAgMTYyLCAyMTcsIDIyNCwgMjIzLCAxNjIsIDI0NSwgMTcxLCAyMjMsIDE2MiwgMjEwLCAyMTcsIDIyNCwgMTAzLCA1NCwgMjI0LCAKLSAgICAxMDEsIDU0LCA3MCwgMjE4LCA3NiwgMjQzLCAxMzcsIDIxMiwgNTcsIDIxMywgMTE4LCAyMjQsIDEwMiwgMjUwLCA2MCwgCi0gICAgMjE5LCAyNTQsIDIxNSwgMjUzLCAyMTksIDI1NCwgMjQ3LCAxNzgsIDIxOSwgMjU0LCA1MSwgMjE1LCAyMDQsIDI0NSwgMTA2LCAKLSAgICAyMTUsIDIwNCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAyMTcsIDIxMCwgMTM1LCAyMzEsIDI3LCA1MCwgMjUwLCAyMTcsIDI1MCwgCi0gICAgMjE3LCAyMjUsIDE3LCAyNTAsIDIxNywgMjExLCAyMDgsIDI1MCwgMjE3LCAyNDMsIDEzOSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKLSAgICAyNDMsIDE0MywgMjE5LCA4MiwgMTM1LCAyMjEsIDE2NiwgMjE5LCA4MiwgMTM1LCAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAKLSAgICAzNywgMjE5LCAyNDQsIDIzMCwgMjQ0LCAyMDYsIDIzNywgMjMxLCAyLCA1MiwgMjMxLCAyLCAyMDgsIDcwLCAyMzEsIDIsIAotICAgIDI0NSwgMTg4LCAyMzEsIDIsIDIxMCwgMTg5LCAyMzEsIDIsIDIwNSwgMTc4LCAyMzEsIDIsIDI0NiwgMTgsIDIzMSwgMiwgCi0gICAgMjQ2LCAxOCwgMjQ1LCAxODgsIDIzMSwgMiwgMjUwLCAxOTQsIDI0NSwgMTg4LCAyMzEsIDIsIDIwOSwgODIsIDI0OCwgMTUyLCAKLSAgICAyMTYsIDE2OCwgMjE3LCAyMTEsIDcwLCAyMjQsIDEwMiwgMjQwLCAyMTUsIDIzOCwgMTcyLCAyMTcsIDIxMSwgMjM2LCAxMjEsIAotICAgIDIwOCwgMjI4LCAyMTksIDI1NCwgMjE2LCA3MywgMjA4LCAyMjcsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCAyMTIsIDEyMiwgCi0gICAgMjA0LCA3NSwgMjAzLCAyMjYsIDIxNywgMjI0LCAyMjEsIDE2NiwgMjA4LCAyMjcsIDIyNCwgMTAzLCAyMDgsIDIyNywgMjUwLCAKLSAgICA1MywgMTU2LCAxMzUsIDIyMSwgMTY2LCAyNTAsIDUzLCAxNTYsIDEzNSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgCi0gICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNTEsIDEyNywgMTU2LCAxMzUsIDIyMiwgMjMyLCAyNTAsIDE1MSwgMjIxLCAxNzUsIAotICAgIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjUxLCA3LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIDI1MSwgNywgCi0gICAgMTU2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIwOCwgMjI3LCAyNTEsIDE1LCAxNTYsIDEzNSwgMjQxLCAzMCwgCi0gICAgMTM1LCAyMzgsIDE3MSwgMjQxLCAzMCwgMTM1LCAyNDMsIDIwNiwgMjQ4LCAxMDMsIDI1MCwgMTUzLCAyMDksIDkzLCAyMjcsIAotICAgIDEyMiwgMjM4LCAxNzEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIwOSwgOTMsIDIzMSwgCi0gICAgNjUsIDIyMCwgNjksIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNDUsIDI0MywgMjQxLCAKLSAgICAzNCwgMjQxLCAzNSwgMjQ1LCAyNDIsIDIxNSwgMjUzLCAyMzEsIDUwLCAxNTYsIDEzNSwgMjE1LCAyNTMsIDE1NiwgMTM1LCAKLSAgICAyNDUsIDE1OSwgMTM1LCAyNDAsIDI1NCwgMjQxLCAzMywgMTM1LCAyMTEsIDk1LCAyNDEsIDM0LCAyNDQsIDM4LCAxNTYsIAotICAgIDEzNSwgMTU2LCAyMDgsIDE3MywgMjQ3LCAxMzcsIDI0NCwgNTYsIDIyNSwgMTcsIDI0NywgMTM2LCAyMTcsIDQ1LCAxNTYsIAotICAgIDEzNSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzUsIDE1NCwgMTM1LCAyMjEsIDE2NiwgMjM1LCAxNTQsIDEzNSwgMjExLCAzOSwgCi0gICAgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDE1NiwgMTM1LCAKLSAgICAyMjcsIDE3OSwgMTE1LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDExNSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgCi0gICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjIzLCAyNDAsIAotICAgIDIyNywgMTc4LCAyMjMsIDI0MCwgMjM3LCAyNDYsIDI0OCwgMTAzLCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMjEsIDE2NiwgCi0gICAgMjI3LCAxNzgsIDIyMSwgMTY2LCAyMzcsIDI0NiwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMTU2LCAxMzUsIAotICAgIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgCi0gICAgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDI0MSwgMzAsIAotICAgIDEzNSwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIzNywgCi0gICAgMjQ2LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIyNywgMTc4LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAyMzcsIAotICAgIDI0NiwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjI3LCAxNzgsIDIxNywgMjQ5LCAyMTAsIDIzNiwgMjE3LCAKLSAgICAyNTAsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDIxOSwgCi0gICAgMjQ1LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDIxNywgMjUyLCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM4LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjEwLCAxOTgsIDIyMCwgCi0gICAgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAyNDUsIDIyMCwgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAxOTgsIDIyMCwgNjksIAotICAgIDIxMCwgMjQ1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDE5OCwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIyLCAKLSAgICAyMzIsIDM0LCAyMTAsIDI0NSwgNzYsIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDM0LCAyMTAsIDE5OCwgNzYsIAotICAgIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCAzLCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMywgCi0gICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDIyMSwgMjIzLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMiwgMjA2LCAyMzcsIDUxLCAKLSAgICAyMzEsIDY1LCAyMjAsIDY5LCA1MSwgMjE5LCAyMzYsIDIyMCwgNjksIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgCi0gICAgMTM1LCA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDUxLCAyNDcsIDQ4LCA1MSwgMjQ1LCA5OSwgNDMsIAotICAgIDIxOCwgNzYsIDQzLCAyMjQsIDEwMiwgNDMsIDIwOCwgMjE5LCA0MywgMjQzLCAxMzcsIDIxMiwgNTcsIDQzLCA3MCwgMjE5LCAKLSAgICAyNTQsIDQzLCAyMTUsIDI1MywgMjE5LCAyNTQsIDQzLCAyNTAsIDYwLCAyMTksIDI1NCwgNDMsIDI0MSwgMzQsIDQzLCAyNDQsIAotICAgIDE0NCwgMTAzLCAyMTgsIDc2LCAxMDMsIDIyNCwgMTAyLCAxMDMsIDIwOCwgMjE5LCAxMDMsIDcwLCAyMTksIDI1NCwgNTAsIAotICAgIDIxMCwgMywgNDksIDIxMCwgMywgMTIxLCAyMTAsIDMsIDExMiwgMjEwLCAzLCAyNTAsIDYzLCAyMjQsIDc3LCAyMDgsIDQ5LCAKLSAgICAyMzksIDE2NSwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCA1MCwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA1MCwgCi0gICAgMjA3LCAxNzMsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAyMDUsIDIyMSwgMTY2LCAyMDgsIDQ5LCAyNDMsIDEwNCwgMjIxLCAKLSAgICAxNjYsIDIzOSwgMTY2LCAyMjIsIDIzNCwgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAyMDcsIDE3MywgMjE3LCAyNTAsIAotICAgIDIwNiwgMjQ4LCAyMTYsIDExNywgMjEwLCAyMzcsIDIwNiwgMjQ4LCAyMTYsIDExNywgMjIxLCAxNzIsIDIxMSwgMiwgMjIwLCAKLSAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTcyLCAyMTEsIDIsIDc2LCAyMTksIDI0NSwgCi0gICAgMTU2LCAxMzUsIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxOSwgCi0gICAgMjM2LCAyMjAsIDY5LCAyMzEsIDY1LCAyMjAsIDY5LCAyMjMsIDIyOCwgMjM3LCAyNCwgMjQ1LCAyMDUsIDIyNSwgNjksIAotICAgIDIzMCwgMjU1LCAyMDMsIDE1NiwgMjIzLCA4MSwgMjIxLCAxNzQsIDUwLCAyNTAsIDIxOCwgMywgMjUwLCAxMjgsIDUwLCAKLSAgICAyMDgsIDg1LCAyMjMsIDE2MiwgMjI3LCAzNywgMjUwLCAyMjYsIDIyMywgMTYyLCAyMjcsIDM3LCAyMTksIDI0NCwgMjIzLCAKLSAgICAxNjIsIDIzMCwgMjQ0LCAyMjMsIDE2MiwgMjA2LCAyMzcsIDI0MywgMjIyLCAyMTksIDI1NCwgNzAsIDIxOSwgMjU0LCAyMTEsIAotICAgIDk1LCAyMTksIDI1NCwgMjQzLCAxMzcsIDIwOCwgMjE5LCAyNDcsIDIzNCwgNDksIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIAotICAgIDE0MiwgMjE3LCAyMjQsIDUwLCAyMjEsIDE3MiwgMjQwLCA5MiwgMjEzLCAxNDIsIDIxNywgMjI0LCA0OSwgMjEzLCAxNDIsIAotICAgIDIxNywgMjI0LCA1MCwgMjEzLCAxNDIsIDIxNywgMjI0LCAyMTYsIDczLCAyMDgsIDIyOCwgMjQxLCAzNCwgMjQ1LCA5MywgCi0gICAgMjI3LCAzNywgMjE5LCAyNDQsIDI0NSwgOTMsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjEwLCAyNDQsIDUyLCAyMTAsIAotICAgIDE5NywgNTIsIDIzMCwgMjQ0LCA1MiwgMjA2LCAyMzcsIDIxOCwgMTAzLCAxNTYsIDI1LCAyMTksIDgyLCAxMzUsIDIyNywgCi0gICAgMTc5LCAzLCAyNDMsIDg1LCAyMzcsIDI0NywgMywgMjQzLCA4NSwgMjA1LCAyNDIsIDIyMywgMjQwLCAyMjcsIDE3OCwgMjA1LCAKLSAgICAyNDIsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjI3LCAxNzksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgCi0gICAgMjM3LCAyNDcsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAotICAgIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAKLSAgICAyMTcsIDI0OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIxMCwgMjM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxNywgCi0gICAgMjUzLCAyMTksIDI0NSwgMjQxLCAzNiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTAsIDIzOSwgMjE5LCAyNDUsIDI0MSwgMzYsIAotICAgIDIyMSwgMTY2LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDUxLCAyMTksIDIzNiwgCi0gICAgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAKLSAgICA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjQ3LCAxNDgsIDIyMSwgCi0gICAgMTY2LCAyNDEsIDMwLCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjE3LCAyNTAsIAotICAgIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTAsIDIzNywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAKLSAgICAxMzUsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIDY5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAKLSAgICAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAxLCAyMjEsIDE2NiwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAxNTYsIAotICAgIDEzNSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMiwgMjE5LCAyNDUsIAotICAgIDI0MSwgMzYsIDgwLCAyNDEsIDEwOCwgMjI0LCAxNDYsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMTEyLCA1MCwgMjQzLCAyMjgsIAotICAgIDI0MSwgMTA4LCAxMjEsIDUwLCAyNDMsIDIyOCwgMjQxLCAxMDgsIDI0MSwgMTE1LCA3NiwgMywgMTYzLCAyMzYsIDEwNiwgCi0gICAgOTUsIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAKLSAgICAyNDEsIDExNSwgNzYsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgMjQxLCAKLSAgICAxMTUsIDc2LCAzLCA3MCwgNTUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAyMDMsIDUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAKLSAgICAyMDMsIDI0MSwgMTE1LCA3NiwgMywgMjA2LCAyNDYsIDI0MSwgMTE1LCA3NiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAxOSwgCi0gICAgMjQ1LCAxOTQsIDMsIDE2MywgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIAotICAgIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgCi0gICAgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgMjE5LCAyMDMsIDUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgMjAyLCAxNjAsIAotICAgIDIyMSwgMTY0LCAyNDksIDExLCAyMjQsIDI0MywgMjQzLCAyMjMsIDU0LCAyNDEsIDExNywgNDcsIDIzNiwgMzgsIDExMiwgCi0gICAgMjUwLCA5NCwgMTIxLCAyNTAsIDk0LCAyMTcsIDIxOCwgMjE4LCAyMjcsIDIwNCwgNzIsIDIyNywgMTE0LCA0OSwgMjQ2LCAKLSAgICAyMjYsIDUwLCAyNDYsIDIyNiwgNDksIDIzOSwgMjA0LCA1MCwgMjM5LCAyMDQsIDI0NywgMjQ4LCA1MCwgMjQ1LCAxMzIsIAotICAgIDI0NywgMjQ4LCA0OSwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA1MCwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA0OSwgMjQ1LCAxMzIsIAotICAgIDIxNiwgNzMsIDIyMSwgMTY2LCA1NCwgNTEsIDIyNiwgMjQ2LCAyNTAsIDEyOCwgMjE0LCAxNTgsIDIxNCwgMTY2LCAyMDksIAotICAgIDE2MiwgMjE2LCAxNDcsIDIxOCwgMzQsIDIzMSwgMzEsIDIwNSwgMjE4LCAyMTEsIDE3NywgMjE4LCA5NywgNzYsIDIzMCwgCi0gICAgMjU0LCA1NCwgMjA3LCAxNzQsIDIyMSwgMTY2LCA1NCwgMjA0LCA4MiwgMjM2LCA0MCwgMjA4LCAxNDUsIDQ5LCAyNDUsIAotICAgIDE2NSwgMjA4LCAxNDUsIDUwLCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDQ5LCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDUwLCAyNDUsIAotICAgIDE2NSwgMjA4LCAxNDUsIDE2MiwgMjMxLCAyLCAyNDcsIDI0OCwgMTYyLCAyMzEsIDIsIDIzOSwgMTE1LCAyMTIsIDMxLCAKLSAgICAxMTIsIDI1MCwgOTUsIDI0OCwgMTA0LCAxMjAsIDIzNiwgMTA2LCAyNDgsIDIyMCwgMjE5LCAyNDcsIDIyOSwgMTUxLCAyNDEsIAotICAgIDI2LCAyMDgsIDE3MywgMjA5LCA5MywgMjE2LCAxNiwgMjAzLCAxOTcsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgMjQ3LCAKLSAgICAyMzMsIDIyOSwgMTQ5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjUwLCAyMTgsIDE1NSwgMjQxLCAyNiwgCi0gICAgMjA4LCAxNzMsIDIwOSwgOTMsIDIyNywgMjIyLCAyNDgsIDExNSwgMjE1LCAyNTIsIDI0NSwgNjEsIDI1MSwgMTUsIDI1MCwgCi0gICAgMTAzLCAyMTAsIDEwMCwgMjA4LCAxMzAsIDIxNSwgMTI1LCAyNDMsIDE4NSwgMjE5LCAyMzcsIDI0NSwgMjA5LCAyMDksIAotICAgIDIyMCwgMjEyLCA0NCwgMjQ1LCAxNTUsIDI0NSwgMTU0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzNSwgMjAzLCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgMTY5LCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0MSwgCi0gICAgMzYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQzLCAxNDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKLSAgICA2MywgMjQzLCAyMjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMTcsIDYzLCAyNDYsIDYxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIxMSwgNjksIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTIsIDU4LCAxNDIsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ5LCAyMSwgMTQyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIxMiwgNTcsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAKLSAgICAyMjcsIDE3OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzcsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCA5NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCA4NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMTcsIDYzLCA5NiwgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgODYsIDQ3LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0OSwgMjAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIwNiwgCi0gICAgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgMzgsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKLSAgICA2MywgMTIxLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgMzcsIDI1MCwgMTY5LCAyMzksIAotICAgIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTc3LCAyMDYsIDc2LCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE3NywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIAotICAgIDIxOSwgMjAzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCi0gICAgMjE3LCA2MywgMTEyLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgNDgsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTgzLCAyMDYsIDc2LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE4MywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgCi0gICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjQzLCAyMjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzMCwgODksIDIwNiwgMjQ2LCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjEyLCAKLSAgICAyNDAsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgMjE3LCA2MiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyNDYsIDYyLCAyMTEsIDk0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NSwgMjQyLCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyNDMsIAotICAgIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTEsIDk1LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMzAsIDg5LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyNDMsIDIzMSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAxMjEsIDIxMiwgMjQwLCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDQ5LCAyMTIsIDI0MCwgCi0gICAgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDgsIDIyOCwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjM3LCAyNDcsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NSwgMjM0LCAxNDIsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjAyLCAyOSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyMTEsIDcwLCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTMsIDE0NCwgMjA2LCAKLSAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjIxLCAxNjYsIDI0MSwgMzYsIDI1MCwgMTY5LCAyMzksIAotICAgIDk4LCAxNiwgMjE3LCA2MywgMjE3LCA0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDI0NywgMzQsIDIwOCwgMjI3LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjQ3LCAzNCwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCi0gICAgMjMwLCAyMzAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE2LCA1OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMjAsIDM2LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQxLCAzOCwgCi0gICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCAyMzEsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIyMCwgMzcsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMiwgMjIxLCAxNjYsIDI0NiwgMTY5LCAKLSAgICA4MiwgNTAsIDI1MCwgMjE4LCAzLCAxODMsIDIwMiwgMzAsIDQ3LCAyMTIsIDIxMCwgMTcxLCAyNDcsIDIzMywgMjQ4LCAxMjksIAotICAgIDk3LCA4MCwgMjI3LCAxMTUsIDMsIDEwMSwgMjQzLCA4NSwgMjMxLCA4LCA5NywgMjQ1LCAxODksIDIwNiwgMjQ0LCA5NywgCi0gICAgMjQzLCAxNTgsIDIwNiwgMjQ0LCA5NywgMjQxLCA5NiwgOTcsIDI0NSwgMjI0LCA5NywgNjEsIDUxLCAzLCAyNDYsIDIxOCwgCi0gICAgODAsIDIyNywgMTE0LCAyNDEsIDY4LCA5NywgMjUwLCAyNTAsIDIyOSwgMTUyLCA5NywgMjM3LCAzNywgOTcsIDQzLCAyMzYsIAotICAgIDEwNiwgMjQ4LCAyMzEsIDMsIDIyMSwgMTYzLCA0MywgMjA4LCA4NiwgMjQyLCA3MCwgMjQ3LCAyMDMsIDI0NiwgNjIsIDMsIAotICAgIDIyMSwgMTY5LCA0NywgMjA2LCAyNDIsIDk3LCAyMjQsIDQwLCA5NywgMjM1LCAyMTYsIDk3LCAyMjAsIDcsIDIzNywgMTcwLCAKLSAgICA5NywgMjIwLCA3LCAyMjgsIDEyOSwgOTcsIDIxOSwgNTksIDk3LCAyMTksIDU4LCA5NywgMjQzLCAxNjcsIDI0NSwgOTEsIAotICAgIDE2LCAyMzksIDE1OSwgMTA4LCAyMTIsIDUsIDk3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjIsIDI0NCwgNjgsIAotICAgIDIxMywgMTMxLCAyMjksIDE1MiwgOTcsIDIxNywgMjM4LCAyMTksIDE1MywgMjIyLCAyMDgsIDIxOSwgMTUzLCAyMTcsIDIzNCwgCi0gICAgMjE0LCAxODUsIDk3LCAyNDYsIDMzLCAyMTQsIDE4NSwgOTcsIDQ5LCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA0OSwgMjE5LCAKLSAgICA3NywgMjQwLCAyMDAsIDQ5LCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA1MCwgMjE5LCA3NywgMjA2LCAyMjEsIDExMywgNTAsIAotICAgIDIxOSwgNzcsIDI0MCwgMjAwLCA1MCwgMjE5LCA3NywgMjI2LCAyNTEsIDExMywgNDksIDUxLCAyNDcsIDIyNywgMjA2LCAKLSAgICAyMjEsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAyNDAsIDIwMCwgNDksIDUxLCAyNDcsIDIyNywgMjI2LCAyNTEsIAotICAgIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAyMDYsIDIyMSwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDI0MCwgCi0gICAgMjAwLCA1MCwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgMjQ1LCAxNjUsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjA2LCAKLSAgICAyMjEsIDExMywgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAxMDEsIDIxOCwgMTU5LCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIAotICAgIDIyNiwgMjUxLCAxMTMsIDI0NSwgOTMsIDI0NywgMjI3LCAyNDAsIDIwMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMTEzLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgCi0gICAgMjI2LCAyNTEsIDExMywgMjMxLCAzLCAyNDAsIDIwMCwgMjM2LCAxMDYsIDIyNywgMTE1LCAyNDAsIDIwMCwgMjA2LCAyMjEsIAotICAgIDQ5LCAyMTksIDI0NSwgMjI2LCAyNTEsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjE5LCAyNDUsIDIyNiwgMjUxLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxNCwgMTY3LCAyMTAsIDIxOCwgMjA4LCAxNDQsIAotICAgIDIxMCwgMjE4LCAyNDcsIDI0NywgMjA4LCAxNDUsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgMTU1LCAyNDcsIDI0OCwgNTEsIAotICAgIDI0NywgMjI3LCAxMTUsIDIwOCwgMTQ1LCA1MSwgMTU1LCA0MCwgMTYsIDI0NywgMjQ3LCA0OSwgODAsIDk4LCAyMjcsIDExNCwgCi0gICAgNTAsIDgwLCA5OCwgMjI3LCAxMTQsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTMsIDIzNiwgMTA2LCAyMTQsIDIwMiwgCi0gICAgMjI3LCAxMTIsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTEsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTAsIAotICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgCi0gICAgMjQ3LCAyNDgsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAKLSAgICAxMjEsIDI1LCAyMzYsIDEwNiwgMywgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIAotICAgIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAKLSAgICAyMzYsIDEwNiwgMywgMjA4LCA4NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwOCwgODUsIAotICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDYsIAotICAgIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgCi0gICAgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDUsIDI0NCwgMjksIDE2LCAKLSAgICAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIyNywgMjIyLCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDI0NywgMjQ4LCAyMjcsIAotICAgIDIyMiwgNTEsIDIzOSwgMTcyLCAyMTYsIDc4LCA5NywgMjQxLCAxMzEsIDk3LCA4MCwgMjI3LCAxMTUsIDI0MCwgMjAwLCAKLSAgICAyMjQsIDIxNCwgMjQ3LCAyMTQsIDIyNCwgMjE0LCAxNjMsIDExNSwgMjEyLCAyMjcsIDIyNCwgMjE0LCAyMTIsIDIyOCwgCi0gICAgMTE1LCAyMjcsIDI4LCAyMjQsIDIxNCwgMTYzLCAxMTUsIDEyMCwgMjEyLCAyMTMsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAKLSAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAyMzAsIDk3LCAyMjQsIDIxNCwgMjA4LCA2NiwgMjI0LCAKLSAgICAyMTQsIDIwOSwgMTI0LCAyMjQsIDIxNCwgMjE4LCAyNTMsIDI0MSwgMTgwLCAyMzcsIDIzOSwgMjM5LCA5MiwgMjA4LCAxNDUsIAotICAgIDIxOSwgNzYsIDI0NywgMjQ4LCAyMTksIDc2LCAyMDgsIDE0NSwgMjQ1LCA5MywgMTU1LCAyNDcsIDI0OCwgMjQ1LCA5MywgCi0gICAgMTU1LCAyMDgsIDE0NSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjQ3LCAyNDgsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAotICAgIDYxLCAyMDgsIDEwMSwgMjQ4LCAxMTUsIDIxNSwgMjUzLCAzLCAyNDYsIDYxLCAyMTEsIDUxLCAyMzksIDIxNSwgMjUxLCAKLSAgICAxNDIsIDI0NSwgOTAsIDI0MSwgMTE2LCAyMzAsIDI0NCwgMjQ0LCA2OCwgMjQwLCAyMDQsIDk3LCA2MiwgMjE2LCAxMSwgNTIsIAotICAgIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNTIsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNTIsIDIwOCwgODUsIDYyLCAyNDIsIAotICAgIDY5LCA1MiwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDUyLCAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjI3LCAyMTcsIDUyLCAKLSAgICAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjE2LCAxMSwgMjA4LCA4NiwgMywgNTIsIDgwLCAxNDIsIDI1MSwgMzQsIDI0NiwgCi0gICAgMTksIDIxMSwgNTgsIDIwOCwgMjIwLCAyNDYsIDE5LCAyMzYsIDQxLCAzLCAyMzksIDE5NSwgMjE0LCAyNDEsIDYyLCAyMjUsIAotICAgIDEwLCAyMjcsIDIxNywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyMDYsIAotICAgIDIyMywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODUsIDUyLCA4MCwgMTQyLCA2MiwgNTEsIDM1LCAKLSAgICAyMTEsIDYxLCA2MiwgMjQ2LCA2MiwgMzUsIDIxNiwgMTQ4LCAxNiwgMzUsIDIyMSwgNDgsIDE2LCAzNSwgMjExLCA5MCwgNzYsIAotICAgIDIzNywgNjEsIDE2LCAzNSwgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDksIDExMiwgCi0gICAgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDE2LCAzNSwgMjQxLCA3MSwgMTYsIDM1LCAyNTEsIDEzMCwgMTYsIDM1LCAKLSAgICAyNDgsIDEyOCwgMTYsIDM1LCAyNDksIDE5LCAxNiwgMzUsIDIzNiwgMTA2LCAyMTAsIDUsIDE2LCAzNSwgMjI3LCAxMTUsIAotICAgIDI0MCwgNTEsIDE2LCAzNSwgODAsIDIxMCwgNSwgMTYsIDM1LCAyMzksIDE1OSwgMjQwLCA1MSwgMTYsIDM1LCAyNDcsIDI1LCAKLSAgICAyMTYsIDc3LCAxNiwgMzUsIDIxMywgNywgMjE5LCAyMTEsIDE2LCAzNSwgMjEzLCA3LCAyMzEsIDQ5LCAxNiwgMzUsIDI0NCwgCi0gICAgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIDEwNSwgMTYsIDM1LCAyNDQsIDgsIAotICAgIDI0NSwgMTg0LCAxMDgsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ3LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIAotICAgIDE0OSwgMTYsIDM1LCAxODIsIDI1MSwgMTMwLCAxNiwgMzUsIDIxMCwgOTUsIDIzMSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIAotICAgIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMTYsIDM1LCAyNDcsIDU5LCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMjUsIDksIDE2LCAKLSAgICAzNSwgMjEwLCAyNDIsIDE2LCAzNSwgMjQxLCA5LCAxNiwgMzUsIDI0MCwgMTEsIDIxMywgMTMwLCAxNiwgMzUsIDIzNywgCi0gICAgMjM4LCAyMTMsIDEzMCwgMTYsIDM1LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDE2LCAzNSwgMjA2LCAyMzYsIDIxMywgMTMwLCAKLSAgICAxNiwgMzUsIDIxMSwgMjI4LCAxNiwgMzUsIDI0NCwgNDYsIDI0OCwgMzcsIDk3LCAxNzEsIDI0NywgMjMzLCAxNiwgMzUsIAotICAgIDIyMiwgMjExLCAxNiwgMzUsIDI0NCwgNDcsIDIzOSwgMTU5LCAxMDgsIDE2LCAzNSwgMjEwLCAyNDMsIDIzOSwgMTU5LCAKLSAgICAxMDgsIDIyMCwgODIsIDExMywgMjIwLCA4MiwgMjQ2LCAxOTQsIDIyMCwgODIsIDIzOSwgMTYyLCAyMjAsIDgyLCAyMzAsIAotICAgIDIzOSwgMjM5LCAxNjIsIDIyMCwgODIsIDI0OCwgMTI1LCAyNDcsIDE5MCwgMjIwLCA4MiwgMjQ3LCAyNDEsIDIwOCwgMjUwLCAKLSAgICAyMjAsIDgyLCAyNDcsIDIyNCwgMjQ4LCAyMzYsIDIzNSwgMTUzLCAyMjAsIDgyLCAyNTAsIDIzNywgNzYsIDI0NiwgMTY4LCAKLSAgICAyMjAsIDgyLCAyNDQsIDE0NCwgMjIwLCA4MiwgMjQ1LCA4MCwgMjUxLCAxMzQsIDIyMSwgNDYsIDIyMCwgODIsIDUyLCAyNDksIAotICAgIDIwLCA0MywgMTcsIDEwNSwgNDMsIDE3LCAxMDgsIDQzLCAxNywgMTQ3LCA0MywgMTcsIDE0OSwgNDMsIDE3LCAxNzAsIDQzLCAKLSAgICAxNywgMTk1LCA0MywgMTcsIDIxMywgMTExLCA0MywgMTcsIDE5OSwgNDMsIDE3LCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgCi0gICAgMTUyLCA0MywgNDIsIDI0MSwgMTEyLCA0MywgNDIsIDIwNywgMTU0LCA0MywgNDIsIDIwOSwgNTUsIDQzLCA0MiwgMjM5LCAKLSAgICAxNDEsIDQzLCA0MiwgMjQwLCAyMiwgNDMsIDQyLCAyMTIsIDgyLCA0MywgNDIsIDIxMywgMTA4LCA0MywgNDIsIDI0MSwgCi0gICAgMTQwLCA0MywgNDIsIDIyMiwgNjAsIDQzLCA0MiwgMjA3LCAxNTEsIDEwMiwgMTcsIDEwNSwgMTAyLCAxNywgMTA4LCAxMDIsIAotICAgIDE3LCAxNDcsIDEwMiwgMTcsIDE0OSwgMTAyLCAxNywgMTcwLCAxMDIsIDE3LCAxOTUsIDEwMiwgMTcsIDIxMywgMTExLCAKLSAgICAxMDIsIDE3LCAxOTksIDEwMiwgMTcsIDIyMiwgNjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAxMDIsIDQyLCAyNDEsIDExMiwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTQsIDEwMiwgNDIsIDIwOSwgNTUsIDEwMiwgNDIsIDIzOSwgMTQxLCAxMDIsIDQyLCAyNDAsIDIyLCAKLSAgICAxMDIsIDQyLCAyMTIsIDgyLCAxMDIsIDQyLCAyMTMsIDEwOCwgMTAyLCA0MiwgMjQxLCAxNDAsIDEwMiwgNDIsIDIyMiwgNjAsIAotICAgIDEwMiwgNDIsIDIwNywgMTUxLCAxNywgMTE4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDEyMCwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDE3LCAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAxNDcsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAKLSAgICAyMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjEyLCA4OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTMsIDExMiwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyNDEsIDE0MywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMjIsIDY0LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgMTUzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTEzLCAyMzksIDEwMiwgCi0gICAgMjExLCA2MSwgNDIsIDIwNywgMTU1LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgNTYsIDIzOSwgMTAyLCAyMTEsIDYxLCAKLSAgICA0MiwgMjM5LCAxNDIsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQwLCAyMywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMTIsIAotICAgIDgzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMywgMTA5LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTQxLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIyMiwgNjEsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA3LCAxNTIsIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCAxMDIsIDgsIDUsIDEsIDYzLCAxMDIsIDgsIDUsIDEsIDI0OSwgMjU1LCAxMDIsIDgsIDUsIDEsIAotICAgIDI0NywgMTI1LCAxMDIsIDgsIDUsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNSwgMSwgNzQsIDEwMiwgOCwgNSwgMSwgMjQwLCAKLSAgICAxNzQsIDEwMiwgOCwgNSwgMSwgMjM5LCA3NSwgMTAyLCA4LCA1LCAxLCAyMzcsIDE3MSwgMTAyLCA4LCA1LCAxLCA3NSwgCi0gICAgMTAyLCA4LCA1LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA1LCAxLCAyMzAsIDU0LCAxMDIsIDgsIDUsIDEsIDE1OSwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA1LCAxLCAyMjMsIDE2MywgMTAyLCA4LCA1LCAxLCA3OCwgMTAyLCA4LCA1LCAxLCAKLSAgICAyMTksIDE4NCwgMTAyLCA4LCA1LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA1LCAxLCAxNDYsIDEwMiwgOCwgNSwgMSwgMTk0LCAKLSAgICAxMDIsIDgsIDUsIDEsIDIxMCwgNjksIDEwMiwgOCwgNSwgMSwgNjgsIDEwMiwgOCwgNSwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgCi0gICAgNSwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNSwgMSwgMjAzLCAxOTYsIDEwMiwgOCwgNSwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgCi0gICAgNSwgMSwgMjAyLCAxNTksIDQzLCA4LCA2LCAxLCA2MywgNDMsIDgsIDYsIDEsIDI0OSwgMjU1LCA0MywgOCwgNiwgMSwgMjQ3LCAKLSAgICAxMjUsIDQzLCA4LCA2LCAxLCAyNDUsIDUxLCA0MywgOCwgNiwgMSwgNzQsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgNDMsIDgsIAotICAgIDYsIDEsIDIzOSwgNzUsIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgNDMsIDgsIDYsIDEsIDc1LCA0MywgOCwgNiwgMSwgMjMwLCAKLSAgICAxODQsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCA0MywgOCwgNiwgMSwgMTU5LCA0MywgOCwgNiwgMSwgMjI2LCAxODUsIDQzLCAKLSAgICA4LCA2LCAxLCAyMjMsIDE2MywgNDMsIDgsIDYsIDEsIDc4LCA0MywgOCwgNiwgMSwgMjE5LCAxODQsIDQzLCA4LCA2LCAxLCAKLSAgICAyMTcsIDEzNCwgNDMsIDgsIDYsIDEsIDE0NiwgNDMsIDgsIDYsIDEsIDE5NCwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDQzLCAKLSAgICA4LCA2LCAxLCA2OCwgNDMsIDgsIDYsIDEsIDIwNiwgMTY0LCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDQzLCA4LCA2LCAxLCAKLSAgICAyMDMsIDE5NiwgNDMsIDgsIDYsIDEsIDIwMywgMTI0LCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDQzLCA4LCA1LCAxLCA2MywgCi0gICAgNDMsIDgsIDUsIDEsIDI0OSwgMjU1LCA0MywgOCwgNSwgMSwgMjQ3LCAxMjUsIDQzLCA4LCA1LCAxLCAyNDUsIDUxLCA0MywgCi0gICAgOCwgNSwgMSwgNzQsIDQzLCA4LCA1LCAxLCAyNDAsIDE3NCwgNDMsIDgsIDUsIDEsIDIzOSwgNzUsIDQzLCA4LCA1LCAxLCAKLSAgICAyMzcsIDE3MSwgNDMsIDgsIDUsIDEsIDc1LCA0MywgOCwgNSwgMSwgMjMwLCAxODQsIDQzLCA4LCA1LCAxLCAyMzAsIDU0LCAKLSAgICA0MywgOCwgNSwgMSwgMTU5LCA0MywgOCwgNSwgMSwgMjI2LCAxODUsIDQzLCA4LCA1LCAxLCAyMjMsIDE2MywgNDMsIDgsIDUsIAotICAgIDEsIDc4LCA0MywgOCwgNSwgMSwgMjE5LCAxODQsIDQzLCA4LCA1LCAxLCAyMTcsIDEzNCwgNDMsIDgsIDUsIDEsIDE0NiwgCi0gICAgNDMsIDgsIDUsIDEsIDE5NCwgNDMsIDgsIDUsIDEsIDIxMCwgNjksIDQzLCA4LCA1LCAxLCA2OCwgNDMsIDgsIDUsIDEsIAotICAgIDIwNiwgMTY0LCA0MywgOCwgNSwgMSwgMjA0LCAxNDQsIDQzLCA4LCA1LCAxLCAyMDMsIDE5NiwgNDMsIDgsIDUsIDEsIDIwMywgCi0gICAgMTI0LCA0MywgOCwgNSwgMSwgMjAyLCAxNTksIDQzLCAxNywgMjAyLCA4NCwgMTgyLCA0MywgNDIsIDI0MSwgMTEyLCAxODIsIAotICAgIDQzLCA0MiwgMjA3LCAxNTQsIDE4MiwgNDMsIDQyLCAyMDksIDU1LCAxODIsIDQzLCA0MiwgMjM5LCAxNDEsIDE4MiwgNDMsIAotICAgIDQyLCAyNDAsIDIyLCAxODIsIDQzLCA0MiwgMjEyLCA4MiwgMTgyLCA0MywgNDIsIDIxMywgMTA4LCAxODIsIDQzLCA0MiwgCi0gICAgMjQxLCAxNDAsIDE4MiwgNDMsIDQyLCAyMjIsIDYwLCAxODIsIDQzLCA0MiwgMjA3LCAxNTEsIDUyLCA0MywgMTcsIDEwNSwgCi0gICAgNTIsIDQzLCAxNywgMTA4LCA1MiwgNDMsIDE3LCAxNDcsIDUyLCA0MywgMTcsIDE0OSwgNTIsIDQzLCAxNywgMTcwLCA1MiwgCi0gICAgNDMsIDE3LCAxOTUsIDUyLCA0MywgMTcsIDIxMywgMTExLCA1MiwgNDMsIDE3LCAxOTksIDUyLCA0MywgMTcsIDIyMiwgNjMsIAotICAgIDUyLCA0MywgNDIsIDIwOSwgMTUyLCAxODIsIDQzLCAxNywgMjAyLCA4NCwgOTgsIDExNiwgMTU3LCAyMzYsIDEwNSwgOTgsIAotICAgIDExNiwgNzksIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCAyMDYsIDM4LCA5OCwgMTE2LCAKLSAgICAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIAotICAgIDEwNSwgOTgsIDExNiwgMTU3LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgCi0gICAgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIAotICAgIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjA2LCAzOCwgCi0gICAgOTgsIDExNiwgNzksIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIxNiwgMTYsIAotICAgIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgNTAsIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIAotICAgIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMjEsIDE1NywgMjUsIDQ5LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAKLSAgICA3OSwgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAxNTcsIAotICAgIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgCi0gICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMjcsIAotICAgIDIyMiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgCi0gICAgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgCi0gICAgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgCi0gICAgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDUwLCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCA4MCwgCi0gICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDQ5LCAKLSAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNDksIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKLSAgICA0OSwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgCi0gICAgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgCi0gICAgNzksIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgCi0gICAgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgCi0gICAgMTIxLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIAotICAgIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgCi0gICAgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAKLSAgICAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgCi0gICAgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAKLSAgICA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAKLSAgICAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAKLSAgICAxMTYsIDE1NywgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDgwLCAyMjcsIDEzNCwgOTgsIAotICAgIDExNiwgNTAsIDc5LCAyNSwgNDksIDgwLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIAotICAgIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKLSAgICAxMTIsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgCi0gICAgMTE2LCA0OSwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTEyLCA3OSwgMjUsIDQ5LCAKLSAgICAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA0OSwgMTIxLCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgCi0gICAgMTIxLCA3OSwgMjUsIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDExMiwgMjM2LCAxMDYsIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgNTAsIDE1NywgCi0gICAgMjUsIDQ5LCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNzksIAotICAgIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDUyLCAKLSAgICAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgNTIsIAotICAgIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA1MiwgMjM2LCAxMDUsIDk4LCAxMTYsIDUyLCAyMDYsIDM4LCA5OCwgMTE2LCAKLSAgICAxMjEsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMjEsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDEyMSwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgMTEyLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCi0gICAgMTE2LCA1MiwgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCi0gICAgMTE2LCAxMTIsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDgwLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCA4MCwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCi0gICAgMTE2LCA4MCwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMjEsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCAyMzYsIDEwNiwgCi0gICAgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIAotICAgIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgMjM2LCAxMDYsIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgCi0gICAgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAKLSAgICA4MCwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAKLSAgICAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMjcsIAotICAgIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIAotICAgIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDIwNiwgMjIxLCA1MCwgMjA4LCAxNzMsIDIyNiwgCi0gICAgMjUxLCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIAotICAgIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDI0NSwgMTMwLCA5OCwgMTE2LCAxNTcsIDIyNywgMjIyLCA5OCwgCi0gICAgMTE2LCAxNTcsIDIwNiwgMjI0LCA5OCwgMTE2LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQyLCA3MCwgOTgsIAotICAgIDExNiwgNzksIDIyNywgMjIyLCA5OCwgMTE2LCA3OSwgMjA2LCAyMjQsIDk4LCAxMTYsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAKLSAgICA3OSwgMjQyLCA3MCwgOTgsIDExNiwgMTU3LCA0OSwgMjUsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIAotICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCA3OSwgNDksIDI1LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAKLSAgICAxNTcsIDI0MiwgNzAsIDIwNiwgMjIxLCAxNjIsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAKLSAgICAyMjYsIDI1MSwgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAKLSAgICAyNTEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDIzOSwgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAyNTEsIDEyNiwgCi0gICAgMjE3LCA1NCwgMjQ4LCAzMywgMjI2LCAyNTEsIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgMjM5LCAxMDIsIDI0OCwgCi0gICAgMzMsIDQ5LCAyMTMsIDExMiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxMjYsIDIxNywgNTQsIDI0OCwgMzMsIDQ5LCAyMzksIAotICAgIDIzMywgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxNjIsIDI0OCwgMzMsIDQ5LCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgCi0gICAgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCA0OSwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgNTAsIDE2MiwgMjQ4LCAzMywgMTU3LCAKLSAgICAyMTMsIDc5LCAyMjUsIDEwLCAyMTMsIDc5LCAyNDQsIDE1MCwgMjEzLCA3OSwgMjA2LCAyMjEsIDExOCwgMjQxLCAxMzksIAotICAgIDI0OCwgMzMsIDUwLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAyMTcsIDYwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDIxNywgCi0gICAgNjAsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCAKLSAgICA0OSwgMjUsIDIyNiwgMjUxLCA0OSwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAKLSAgICAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIAotICAgIDIyNywgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgCi0gICAgMjE3LCA2MCwgMjA2LCAyMjEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMjcsIAotICAgIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDYyLCAKLSAgICAyMTEsIDE3NywgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgNjEsIDUxLCAyNDUsIDE5NSwgCi0gICAgNjIsIDUsIDIxMSwgMTc3LCA1MSwgMywgMjM2LCAxMDYsIDI0MCwgOSwgNTEsIDMsIDgwLCAyNDAsIDksIDUxLCAzLCAyMTksIAotICAgIDIyOSwgMjQ1LCAxMjUsIDI0MCwgOSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjA4LCAxNzMsIDIyNiwgMjUxLCA1MCwgMjQwLCAKLSAgICA5LCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAyNTEsIDQ5LCAyNDAsIDksIDUxLCAzLCAyNDMsIDIyOCwgCi0gICAgMjQ1LCAxMjUsIDI0MCwgOSwgNjIsIDUsIDIxMSwgMTc3LCA2MSwgNSwgMjExLCAxNzcsIDYyLCAyMTYsIDE0MywgNjEsIAotICAgIDIxNiwgMTQzLCA2MiwgODAsIDIxNiwgMTQzLCA2MSwgODAsIDIxNiwgMTQzLCA2MiwgMjE5LCA4MCwgNjEsIDIxOSwgODAsIAotICAgIDYyLCAyMDYsIDIyMywgMjA4LCA4NSwgNjEsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDUsIDIwOCwgODUsIAotICAgIDYxLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIwOCwgODUsIDYxLCAyMTYsIDExLCAyMDgsIDg1LCA2MiwgCi0gICAgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDUsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMTgsIDYwLCA2MSwgCi0gICAgMjE2LCAxMSwgMjE4LCA2MCwgNjIsIDI0MiwgNjksIDIwOCwgODUsIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA2MiwgMjQyLCAKLSAgICA2OSwgNSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDUsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgMjA4LCA4NSwgNjEsIDIyNywgCi0gICAgMjE3LCAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDUsIDIwOCwgODUsIDYxLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjIsIAotICAgIDIyNywgMjE3LCAyMTgsIDYwLCA2MSwgMjI3LCAyMTcsIDIxOCwgNjAsIDYyLCAyNDMsIDIyMSwgNjEsIDI0MywgMjIxLCA2MSwgCi0gICAgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgNSwgMjQzLCAyMjEsIDIzOSwgMjQyLCAyMjYsIDI0NiwgNjEsIDI0NiwgNjEsIAotICAgIDI0MiwgODMsIDI0NiwgNjEsIDI0NiwgNjIsIDMsIDgwLCAyNDAsIDksIDI0NywgMTczLCA2MiwgMjQ2LCA2MSwgMjQ2LCA2MiwgCi0gICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIAotICAgIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIAotICAgIDUwLCAyMTcsIDYwLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyNTEsIDE1LCAyNDcsIDE0OCwgMjA2LCAyMjEsIDQ5LCAyMTcsIAotICAgIDYwLCAyNDgsIDQzLCA0OSwgMTYyLCA2MiwgMjQ2LCA2MSwgNTAsIDE2MiwgNjIsIDI0NiwgNjEsIDIzMCwgMjQwLCAyNDcsIAotICAgIDE3NywgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgMTYyLCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIyNiwgCi0gICAgMjUxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIAotICAgIDEyOCwgMjA2LCAyMjEsIDUwLCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDUwLCAyMTcsIDYwLCAKLSAgICAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjA2LCAyMjEsIAotICAgIDE2MiwgMjQ2LCA2MSwgMjI2LCAyNTEsIDE2MiwgMjQ2LCA2MSwgNjIsIDIyNiwgMjUxLCA1MCwgMjA4LCA4NSwgNjIsIDIyNiwgCi0gICAgMjUxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA1MCwgMjA4LCA4NSwgCi0gICAgNjEsIDI0NywgMTc3LCA1MSwgMywgNDksIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAKLSAgICAyMDYsIDIyMSwgNDksIDI0MywgMjI4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDI0MywgMjI4LCAxNjIsIAotICAgIDI0OCwgNDMsIDYxLCA1MSwgMywgODAsIDI0OCwgNTUsIDIyNywgMTE0LCA2MSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDI0MywgCi0gICAgODUsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgNTAsIAotICAgIDE2MiwgMjQ4LCA0MywgMjI4LCA4LCAyNDYsIDYxLCA2MSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAKLSAgICAzLCAyMjYsIDI1MSwgNDksIDIxNywgNTksIDYxLCA1MSwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgNTEsIDMsIAotICAgIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgCi0gICAgNjIsIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIyNiwgMjUxLCA1MCwgMjE3LCA1OSwgNjEsIAotICAgIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCAyMDYsIDIyMSwgNTAsIAotICAgIDIwOCwgODUsIDIyNiwgMjUxLCA0OSwgMjA4LCA4NSwgNjEsIDIyNSwgMTAsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgMjExLCAKLSAgICAxNzcsIDYxLCAyMjUsIDEwLCA1LCAyMTEsIDE3NywgNjIsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCAyMjYsIDI1MSwgNTAsIAotICAgIDIwOCwgODUsIDYyLCAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDI0NiwgNywgMjA3LCAzLCAyMTIsIDE1LCAyNDUsIDIzNiwgCi0gICAgNjIsIDIxMSwgOTQsIDYxLCAyMTEsIDk0LCAyMjcsIDEzMSwgMjA5LCAxNywgMjEwLCAyMTQsIDI1MCwgNzgsIDIyMSwgMTg4LCAKLSAgICAyNDQsIDE5LCAyMjEsIDE4OCwgMjQ1LCAyMDQsIDIxOSwgMjUwLCA2MiwgMjA5LCAxNjEsIDYxLCAyMDksIDE2MSwgMjQ4LCAKLSAgICAyNDgsIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDI0NiwgMTY4LCAyNDgsIDI0OCwgOTgsIDMsIDIwMywgMTk2LCAyMTQsIAotICAgIDI1NCwgMjA3LCA0LCAzLCAyMTYsIDE5MSwgMjQyLCA0OCwgMjM2LCA0NywgMjQ4LCAxMDIsIDYxLCAyMTIsIDIzNywgMjE4LCAKLSAgICAxNTksIDYyLCAyMTIsIDIzNywgMjE4LCAxNTksIDIxMywgNjgsIDIxNiwgNzMsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCAKLSAgICA1NiwgMjQ3LCAxNzcsIDYyLCA0OSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgNDksIAotICAgIDIxOCwgNTksIDIzMSwgMzUsIDYxLCAxMTIsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgCi0gICAgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCA2MywgMjUsIDI0NSwgMTI5LCAyNDcsIDExLCA1NCwgMjE2LCAyMDMsIAotICAgIDU0LCAyNDgsIDYyLCA1NCwgMjQ3LCA4MywgMjUwLCAyMDgsIDIxOSwgMjMwLCAyNDUsIDEzMCwgMjQ2LCAxNDMsIDIxNiwgCi0gICAgNTksIDI0NSwgMTMxLCA3NiwgMjI3LCA5LCAyNDUsIDEzMSwgNzYsIDIzMCwgMTUxLCAyMTEsIDk1LCAyNSwgMjQ1LCAxMzgsIAotICAgIDI0MCwgNzUsIDk3LCAyNTEsIDExNSwgMjEzLCA3MCwgMjM3LCAxMzEsIDI1LCAyMTIsIDE1OSwgMjE5LCAzMywgOTcsIDIwMywgCi0gICAgMSwgMjAzLCA3NiwgMjA4LCA3NSwgMzUsIDIzNywgNTEsIDIwOCwgNzUsIDM1LCAyMjgsIDMzLCAyMDgsIDc1LCAzNSwgMjM5LCAKLSAgICAyNDksIDIwOCwgNzUsIDM1LCAyMDksIDE4LCAyMDgsIDc1LCAzNSwgMjA0LCAxNiwgMjA4LCA3NSwgMzUsIDIwNCwgODAsIAotICAgIDIwOCwgNzUsIDM1LCAyMjQsIDEyLCAyMDgsIDc1LCAzNSwgMjQxLCAxNzksIDIwNCwgMzcsIDc2LCAyNDMsIDI0OSwgNjEsIAotICAgIDIzOSwgMTE0LCAyNDAsIDEwMiwgNjEsIDIxMiwgMzAsIDI0MCwgMTAyLCA2MiwgMjEyLCAzMCwgMjQwLCAxMDIsIDYxLCAKLSAgICAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDI5LCAyMjgsIDEsIDIxNywgNTYsIDIyNCwgCi0gICAgMjksIDIyNCwgMjM0LCAyNDAsIDQzLCA1NCwgMjQxLCAxNzksIDIyNSwgMTI3LCA1NCwgMjMwLCA2OSwgMjE0LCAyMTgsIAotICAgIDIwNiwgMjA1LCAyMjIsIDIyNCwgMjE4LCA3MywgMjUwLCAxMTQsIDIwOSwgMjA1LCAyMzgsIDE3OCwgMjQ3LCA1NywgMjI3LCAKLSAgICAxODQsIDIwNSwgMjAyLCAyMjcsIDE0NSwgMjE0LCAxODcsIDIxNSwgMjAsIDI0NywgNDMsIDI1MCwgMTQ1LCAyMTgsIDEwOCwgCi0gICAgNjEsIDI0NiwgMTUwLCAyMjksIDgxLCA2MSwgMjQ2LCAxNTAsIDIxNywgNDgsIDYxLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYxLCAKLSAgICAyNDYsIDE1MCwgMjQ4LCA1NCwgNjEsIDI0NiwgMTUwLCAyMjksIDMxLCA2MSwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyNDYsIAotICAgIDE1MCwgMjI5LCA4MSwgNjIsIDI0NiwgMTUwLCAyMTcsIDQ4LCA2MiwgMjQ2LCAxNTAsIDIxNSwgMjA2LCA2MiwgMjQ2LCAKLSAgICAxNTAsIDI0OCwgNTQsIDYyLCAyNDYsIDE1MCwgMjI5LCAzMSwgNjIsIDI0NiwgMTUwLCAyMTksIDQ1LCA2MiwgMjExLCAyMjYsIAotICAgIDIxMCwgMjI3LCA2MSwgMjM3LCA1NiwgMjEwLCAyMjcsIDYxLCAyNDMsIDIyMiwgMjEwLCAyMjcsIDYyLCAyNDYsIDUsIDIxMCwgCi0gICAgMjI3LCA2MSwgMjExLCAyMjYsIDIxMCwgMjI3LCA2MiwgMjM3LCA1NiwgMjEwLCAyMjcsIDYyLCAyNDMsIDIyMiwgMjEwLCAKLSAgICAyMjcsIDYxLCAyNDYsIDUsIDIxMCwgMjI3LCAyMzYsIDQ3LCAyMTEsIDE4MiwgMjE3LCA1NiwgMjIxLCAxNjAsIDI0MSwgCi0gICAgMTM5LCAyMjEsIDE2MCwgMjQ4LCAxNTgsIDI0MSwgMTM5LCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDIxMiwgODEsIDIyMSwgMTU1LCAKLSAgICAyMjMsIDE5NSwgMjM5LCAyMTcsIDU0LCAyMjMsIDE5NSwgMjIzLCA2NiwgNTQsIDIyMywgMTk1LCAyMTMsIDU3LCA1NCwgCi0gICAgMjA0LCA0NiwgMjEwLCA4OSwgMjQ1LCAxMzAsIDI0MSwgMTc2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjA2LCAyMzMsIDIxNiwgCi0gICAgMTM5LCA5NywgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMjAsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE4LCAKLSAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNywgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTUsIAotICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTEzLCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExMSwgCi0gICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMDksIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIzOCwgMTc2LCAKLSAgICAyMjUsIDcwLCA2MiwgMjA2LCAyMzMsIDIxNiwgMTM5LCA5NywgMjE2LCAxNDAsIDIxOSwgOTUsIDk3LCAyMTksIDY4LCAyMTksIAotICAgIDk1LCA5NywgMjE4LCAyMzgsIDIxOSwgOTUsIDU0LCAyMDQsIDM1LCA5NywgMjQzLCAyMTQsIDI0MCwgMTAxLCAyNDMsIDIxNCwgCi0gICAgMjQwLCAxMDAsIDI0MywgMjE0LCAyNDAsIDk5LCAyNDMsIDIxNCwgMjQwLCA5OCwgMjQzLCAyMTQsIDI0MCwgOTcsIDI0MywgCi0gICAgMjE0LCAyNDAsIDk2LCA2MSwgMjQ2LCA2MiwgMywgNzAsIDIxNiwgMTYsIDYxLCAyNDYsIDYyLCAzLCAxMjAsIDI0MywgODMsIAotICAgIDYyLCAyNDYsIDYyLCAzLCA2MSwgNzAsIDIxNiwgMTYsIDYyLCAyNDYsIDYyLCAzLCAxMjAsIDYxLCAyNDMsIDgzLCAyMjQsIAotICAgIDQ1LCAzNSwgMjAzLCA3NiwgMjI0LCA0NSwgMzUsIDIwMywgMCwgMjQzLCAxOTUsIDM1LCAyMzcsIDI0OCwgMjAzLCA3NiwgCi0gICAgMjQzLCAxOTUsIDM1LCAyMjcsIDE3NywgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDc2LCAyNDMsIAotICAgIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDAsIDYxLCAyMzksIDIyNSwgNjIsIDIzOSwgMjI1LCAyMzcsIDEzMSwgMjUsIDIxOCwgCi0gICAgMTYzLCAyNTAsIDIyOCwgMjQ1LCAxMjgsIDIxMCwgMTU0LCAyMTEsIDEwMywgNzYsIDI1MSwgOTIsIDIxNCwgMjAzLCAyNTEsIAotICAgIDI5LCAyMzksIDE5NywgMjM4LCAxODcsIDIxMSwgMTAzLCA3NiwgMjM3LCAyNiwgMjUwLCA0MiwgOTcsIDIzOSwgMjEzLCAKLSAgICAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDEyNiwgMjI3LCAxMDksIDI0NSwgMTgxLCAyMTYsIDE2LCAxMjYsIDIyNywgMTA5LCAKLSAgICAyNDUsIDE4MSwgMjI3LCAyMjIsIDIwNCwgOTEsIDU0LCAxMzgsIDIwNSwgMTc5LCA1NCwgMjQyLCA3NSwgMjQwLCA0MywgNTQsIAotICAgIDI0MiwgNzUsIDIyNSwgMTI3LCA1NCwgMjMwLCAyNTAsIDI0MCwgNDMsIDI1LCAyMjUsIDEyNywgNTQsIDIyNSwgMTI3LCAyNSwgCi0gICAgMjQwLCA0MywgNTQsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDI1LCAyMjUsIAotICAgIDEyNywgMjUsIDI0MCwgNDMsIDU0LCA4MCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMzYsIDEwNiwgMjI1LCAxMjcsIAotICAgIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEwLCA2MSwgMjQ2LCA2MSwgMjI1LCAxMCwgNjIsIDI0NiwgNjEsIDIyNSwgMTAsIDUsIAotICAgIDYxLCAyNDYsIDYxLCAyMjUsIDg2LCA5NywgMjQzLCAxMzUsIDk3LCAyMDYsIDIzMCwgMjE5LCA2NywgOTcsIDI0NSwgMjQ3LCAKLSAgICAyMzksIDk3LCAyMDYsIDIwMSwgMjIyLCAyMTcsIDI0NiwgMjAzLCAyMTksIDEzNywgMjMwLCA3NSwgMjA1LCAyNDAsIDI0NiwgCi0gICAgMTIzLCA2MiwgMjI0LCAzMCwgMjI3LCAxMjgsIDIxMywgMTAxLCAyMTMsIDE0MCwgMjE3LCAzOCwgMjEzLCAxMjAsIDIxMiwgCi0gICAgMTAsIDI0OCwgMjUxLCAyNDgsIDIxNywgMTAzLCAyMjksIDE1MSwgNjEsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MSwgMjQyLCAKLSAgICA1OCwgMjI5LCA4MSwgNjIsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MiwgMjQyLCA1OCwgMjI5LCA4MSwgMjEyLCAxNiwgMjA0LCAKLSAgICAzLCAyMTIsIDE5LCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgNywgMjE2LCAxOTAsIDYyLCAyMTIsIDE1LCAyMDksIDE5LCAKLSAgICAyNDYsIDgsIDI1LCAyMTYsIDE5MCwgMjA3LCAxNzQsIDYxLCAyMTIsIDIzNywgMjE4LCAxNTksIDIwNywgMTc0LCA2MiwgCi0gICAgMjEyLCAyMzcsIDIxOCwgMTU5LCA2MSwgMjQzLCAyMjIsIDIzMSwgNTAsIDIxMSwgMTc3LCAyNDUsIDEyNCwgMjI4LCAxNSwgCi0gICAgMjQzLCAxNjIsIDI0NywgMzksIDIxOSwgMjUzLCAyMTgsIDE2MywgMjQ3LCA0MCwgMjEyLCA0OCwgMjM3LCAzNiwgMywgNjEsIAotICAgIDI0NSwgMTMwLCA0MywgMjQ1LCAxMjQsIDIyOCwgMTUsIDI0NiwgMTk1LCAyMjEsIDE5MiwgMjQxLCA2MiwgMjUwLCAyNTUsIAotICAgIDIyMCwgMjYsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjIsIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYxLCAKLSAgICAyMDcsIDEzMSwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgNDksIDIyOCwgMTYsIDIyNCwgMjMzLCA2MSwgNDksIDIyOCwgCi0gICAgMTYsIDIyNCwgMjMzLCAyNDIsIDUzLCAyMTIsIDQwLCA1NCwgNzksIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA0OSwgMjQ2LCAKLSAgICAxNiwgMjQxLCA2MiwgMTAzLCAyMTQsIDI1NCwgMjQwLCA4NCwgMjQzLCAyMjgsIDIzMSwgNTAsIDYxLCAyNDYsIDYyLCAyMzEsIAotICAgIDUwLCA2MiwgMjExLCAxNzcsIDYyLCAyMDgsIDUwLCAyMTYsIDg0LCA0OSwgMjQxLCA2MSwgMjE2LCA4NCwgNDksIDI0MSwgCi0gICAgNjAsIDI1MCwgNTQsIDE2LCAzNSwgMjA2LCAyMDUsIDc5LCAyNDYsIDYyLCAzLCAyMTEsIDMyLCAyNSwgMTIwLCAxODcsIDU1LCAKLSAgICAyMTgsIDI1NCwgMjE2LCAxMywgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMjcsIDIxOSwgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMzAsIAotICAgIDIzOSwgMjE4LCAyNTQsIDYyLCAyNDUsIDEzMSwgMjIwLCAzMiwgMjEzLCA4LCAyMTIsIDI1MiwgMjEyLCAyMDMsIDI0NiwgCi0gICAgOTAsIDI0NywgMTksIDIzNiwgMjMxLCAyMTIsIDg5LCAyMzgsIDE4OCwgMjA0LCAzLCAyMzYsIDIzLCAyMzgsIDE4OCwgMywgCi0gICAgMjM3LCAxMDEsIDIyNSwgMTA3LCAxNiwgMzUsIDIyNywgMTMzLCAyMjQsIDEyLCAyMDcsIDQsIDIyMCwgMzIsIDIzNywgMjM5LCAKLSAgICAyMzksIDE0OCwgMjM5LCAyMjYsIDIzMSwgNTAsIDIzNiwgMTI2LCAyNDAsIDM0LCAyMTUsIDE1LCA1MSwgMjM5LCAxNDcsIAotICAgIDI0NSwgMTY0LCAyMTIsIDY2LCAyMzUsIDE2MywgMjEyLCA2OSwgMjE4LCAyMzAsIDMsIDI0OCwgMjUxLCAyMDksIDE0NCwgCi0gICAgMjMwLCAxNjksIDI0OCwgMjM2LCA5NywgMjM3LCA1OSwgMjM3LCAyNTAsIDk3LCAyMzksIDEwNSwgMjE3LCAxODAsIDI0NSwgCi0gICAgMTAwLCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDYxLCAyMzksIDIyNiwgMywgMjM2LCAxMDYsIDEwMSwgNjIsIDIxMSwgMzMsIAotICAgIDYyLCAyMTUsIDI1LCAyMTQsIDE5MCwgMjA2LCAyMjEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MiwgMjE0LCAxOTAsIDIyNiwgCi0gICAgMjUxLCAyNDgsIDM4LCAyMTQsIDE5MCwgNjEsIDIxNCwgMTkwLCA2MSwgNzksIDI0NiwgMTY5LCA4MiwgMjA5LCAxNjIsIAotICAgIDIyNywgNDcsIDU0LCAyMDksIDIyMSwgMjQyLCA1MiwgMjUxLCA1MiwgMjQxLCA1NywgMjE2LCAxODgsIDIzOSwgMjM4LCAKLSAgICAyMTYsIDE4OCwgMjM3LCAxMjMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjAzLCAyMjAsIDIzNywgMTIzLCAyMjYsIDI1MSwgNTAsIAotICAgIDIxOSwgOCwgMjE5LCA4LCAyMDYsIDIyMSwgNTAsIDIxOSwgOCwgNjEsIDIyMiwgOTcsIDYyLCAyMjIsIDk3LCAyNDYsIDE2OSwgCi0gICAgODIsIDc5LCAyNDYsIDE2OSwgODIsIDIyMywgMjI0LCAyMDMsIDE5NiwgNzksIDIyMywgMjI0LCAyMDMsIDE5NiwgMjQ4LCAKLSAgICAyNDgsIDIwMywgMTk2LCA3OSwgMjQ4LCAyNDgsIDIwMywgMTk2LCAyMTksIDIwNywgMzAsIDI0NSwgMTMwLCA3OSwgMzAsIAotICAgIDI0NSwgMTMwLCAxNzEsIDI0NiwgMjE4LCAyNDUsIDEzMCwgNzksIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA4LCAyNDUsIAotICAgIDEzMCwgMjEzLCA3NywgNjEsIDgsIDI0NSwgMTMwLCAyMTksIDIwNywgOCwgMjQ1LCAxMzAsIDIyNSwgMTI0LCAyNDUsIDEzMCwgCi0gICAgMjExLCA5NSwgNzYsIDI0NCwgMTM3LCAyMzksIDE0NywgMjA5LCAxODAsIDI1MCwgNTksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgCi0gICAgMjUwLCA1OSwgNzksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0NiwgMywgMjUwLCA1OSwgNjIsIAotICAgIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTEsIDk0LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDIxMSwgMjIxLCAKLSAgICAyMTEsIDQyLCAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDQzLCA2MSwgMjExLCA5NCwgMTcxLCAyNDYsIDIxOCwgNjIsIDIxMSwgCi0gICAgOTQsIDYyLCAyNDYsIDIxOCwgNjEsIDIxMSwgOTQsIDIxOSwgMjA3LCA2MiwgMjExLCA5NCwgNzksIDIxOSwgMjA3LCA2MiwgCi0gICAgMjExLCA5NCwgMjE4LCAxMTgsIDIxMSwgOTQsIDIxMywgNzcsIDYxLCAyMTEsIDk0LCA3OSwgMjUwLCA1OSwgMTcxLCAyNDYsIAotICAgIDIxOCwgMjUwLCA1OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgCi0gICAgOTQsIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAotICAgIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIDE0MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE2LCAKLSAgICAxNDEsIDYyLCAyMTEsIDk0LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODMsIDIxOCwgNjEsIDI1MCwgCi0gICAgNTksIDIwOSwgMTgwLCAyNTAsIDU5LCAxNzEsIDI0NiwgMjE4LCAyMDksIDE4MCwgMjUwLCA1OSwgNzksIDIwOSwgMTgwLCAKLSAgICAyNTAsIDU5LCAyMTIsIDg4LCAyMTgsIDIxOCwgNjIsIDI1LCA2MSwgMjM5LCAyMDAsIDYyLCAyMzksIDIwMCwgNjEsIDIzOSwgCi0gICAgMjAwLCAyNDEsIDE0MywgMjE4LCAyMTgsIDIxOSwgMjA3LCA2MiwgMjM5LCAyMDAsIDQzLCAxNzEsIDI0NiwgMjE4LCAyNDEsIAotICAgIDE0MywgMjE4LCA2MSwgMjExLCA5NCwgNzksIDIwOSwgMTgwLCAyMTgsIDExOCwgMjUwLCA1OSwgMjEyLCAxNywgMjA4LCAKLSAgICAyNDQsIDIwOCwgNzgsIDIxMiwgMTcsIDc5LCAyNDYsIDE0NiwgMjEyLCAxNywgMjExLCAyMjMsIDc5LCAyMTEsIDIyMywgCi0gICAgMjQ4LCAyNDksIDI1MCwgNTksIDI0MSwgMTQzLCAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDc5LCAyNDEsIDE0MywgCi0gICAgMjA5LCAxODAsIDIxNywgMjEzLCAyNTAsIDU5LCAyNDUsIDEzMSwgODIsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAxODIsIAotICAgIDEwMywgMjQ1LCAxMzEsIDgyLCAyMjYsIDI1MSwgNTAsIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjA2LCAyMjEsIDUwLCAKLSAgICAyNDIsIDUwLCA2MSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAotICAgIDIxMywgNzcsIDYxLCAyMTEsIDE3NywgNjIsIDIxNywgNDcsIDEzMSwgMjE5LCAyMzMsIDYxLCAyMTcsIDQ3LCAxMzEsIDIxOSwgCi0gICAgMjMzLCA2MSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDYyLCAyNDMsIDIyMiwgMjI0LCAxMDMsIDYxLCAyMDMsIDE5NiwgCi0gICAgNzksIDI0MCwgMjEyLCAxMzEsIDk3LCAxNTcsIDgwLCAxNDIsIDIyNSwgMTAsIDgwLCAxNDIsIDc5LCA4MCwgMTQyLCA3OSwgCi0gICAgMjEyLCAxMjAsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIxMiwgMTIwLCAyNDUsIAotICAgIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAxMjQsIDIxMiwgMTIwLCAKLSAgICAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIAotICAgIDIxOSwgMjMzLCAyNDUsIDg2LCAyMTEsIDc4LCAyMTksIDg5LCAyLCAyMTksIDIzMywgNzksIDI0MCwgMjEyLCAxMzEsIDIxOSwgCi0gICAgMjMzLCA3OSwgMjM3LCA1NiwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDc5LCA2MiwgMjM3LCA1NSwgMjE1LCAxOTgsIDc5LCAKLSAgICA2MiwgMjM3LCA1NiwgMjQ3LCAxNzcsIDIzOSwgMjAxLCAyMzcsIDU1LCAyMTUsIDE5OCwgMjM5LCAyMDEsIDIzNywgNTYsIAotICAgIDI0NywgMTc3LCAyMjUsIDEwLCA0OSwgMjE5LCA3NywgMjE5LCAyMzMsIDIyNSwgMTAsIDUwLCAyMTksIDc3LCAyMTksIDIzMywgCi0gICAgMjI1LCAxMCwgMjM5LCAyMTQsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgMjM5LCAyMTQsIDUwLCAyMTksIDc3LCAKLSAgICAyMTksIDIzMywgMjI1LCAxMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgMTAsIDIxNiwgCi0gICAgMTEsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAKLSAgICAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCA3OSwgMjE2LCAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgCi0gICAgMTU3LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMTU3LCA1MCwgMjA4LCAxMzMsIDIxMywgCi0gICAgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAKLSAgICAxMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxMDUsIDI0MywgCi0gICAgMTc0LCAxODIsIDQzLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE0NywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKLSAgICAxNDksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5NSwgMjQzLCAxNzQsIAotICAgIDE4MiwgNDMsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxOTksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgCi0gICAgMjIyLCA2MywgMjQzLCAxNzQsIDE4MiwgNDMsIDQyLCAyMDksIDE1MiwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE0NywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIAotICAgIDE0OSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE5NSwgMjQzLCAxNzQsIDQzLCAKLSAgICA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMjIyLCAKLSAgICA2MywgMjQzLCAxNzQsIDQzLCA0MSwgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxMDUsIDI0MywgCi0gICAgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCAKLSAgICA0MywgNDEsIDE3LCAxNDksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAKLSAgICAxNywgMTk1LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgCi0gICAgMTk5LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDQyLCAyMDksIAotICAgIDE1MiwgNzksIDIwNCwgMjYsIDg2LCA0NywgNzksIDkxLCA1NCwgNzksIDIyNCwgMTAzLCA1NCwgNzksIDI0MywgMTM3LCA1NCwgCi0gICAgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCA4NiwgNDcsIDc5LCAxNTMsIDI0MSwgMTc2LCA0NywgMjQyLCA2MywgCi0gICAgMjE4LCA2MywgODYsIDQ3LCA3OSwgMjE1LCAxOTAsIDg2LCA0NywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjA4LCA4NCwgODYsIAotICAgIDQ3LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjQ0LCAxNDMsIDIwOCwgODQsIDg2LCA0NywgNjIsIDg2LCA0NywgCi0gICAgMjA5LCAzMSwgMjA4LCAxNDMsIDg2LCAyNTAsIDk0LCAyMDksIDMxLCAyNDcsIDI0NiwgODYsIDI1MCwgOTQsIDYyLCA4NiwgCi0gICAgMjUwLCA5NCwgNzksIDYyLCAyNDUsIDg2LCAxODMsIDI1LCA4NiwgNDcsIDc5LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgODYsIAotICAgIDQ3LCAyMTEsIDE3NCwgNjIsIDg2LCA0NywgNzksIDI0NSwgMjE3LCA2MiwgODYsIDQ3LCAyMTYsIDEwLCA2MSwgODYsIDQ3LCAKLSAgICAyMjcsIDIxNiwgNjEsIDg2LCA0NywgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDg2LCA0NywgMjM5LCAxMTcsIDIxMywgNzcsIAotICAgIDYxLCA4NiwgNDcsIDc5LCAyMjYsIDI1MSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA3OSwgMjA2LCAyMjEsIDIxNiwgOSwgNjEsIAotICAgIDg2LCA0NywgMjIxLCAxNjIsIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDI0NSwgOTMsIDIyNywgMTQsIDIyMSwgCi0gICAgMTYyLCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA0MywgNzksIDYxLCA4NiwgNDcsIDIwNCwgMzIsIDg2LCA0NywgCi0gICAgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMjQ4LCA0MiwgODYsIDQ3LCAyNDgsIDQyLCAxNTMsIDI0MSwgMTc2LCAKLSAgICA0NywgNzksIDI0OCwgNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCAyNDgsIDQyLCA4NiwgNDcsIDc5LCAyNDgsIAotICAgIDQyLCAxNTMsIDI0MSwgMTc2LCA0NywgMjA5LCAxODIsIDg2LCA0NywgNzksIDIwOSwgMTgxLCA4NiwgNDcsIDIwNCwgNTYsIAotICAgIDg2LCA0NywgNzksIDIwNCwgNTYsIDg2LCA0NywgMjIwLCAzLCA4NiwgNDcsIDUyLCAyNDUsIDkzLCAyMjcsIDE0LCAxMjYsIAotICAgIDI0MywgMTg0LCAyNTAsIDIxNywgNjEsIDIwOCwgODYsIDI0NSwgMTk1LCA1LCA2MSwgMjA4LCA4NSwgMjE4LCAyMzMsIDE3MSwgCi0gICAgMjEwLCAyNDQsIDE3MSwgMjEwLCAxOTcsIDQ5LCAyMTUsIDkzLCAyNDksIDExLCAyNDQsIDQzLCA1MCwgMjE1LCA5MywgMjQ5LCAKLSAgICAxMSwgMjQ0LCA0MywgMjE5LCAyNDUsIDMsIDcwLCAyMzEsIDYsIDIxNiwgNzQsIDIxMiwgMSwgMjE3LCAyNDgsIDIxMCwgCi0gICAgMjQ0LCAyMTAsIDE5OCwgMjE3LCAyNDgsIDIxMiwgMCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDEzLCAyMTUsIAotICAgIDI0NSwgMjQzLCAyMjcsIDE2MywgMjQzLCAxMzYsIDEzLCAyNDAsIDg0LCAyNDMsIDIyNywgMTAzLCAyMjcsIDM3LCAyNTAsIAotICAgIDIyNiwgMTAzLCAyMjcsIDM3LCAyMTksIDI0NCwgNjEsIDI0MywgMjIyLCAzLCAyNDYsIDIxNiwgMjQzLCA4NSwgMjUsIDMsIAotICAgIDI0MywgODUsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyMDYsIDIxMiwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMywgMjQzLCAKLSAgICA4NSwgMjA2LCAyMjEsIDQ5LCAyNDUsIDE2NiwgMywgMjQzLCA4NSwgNDksIDIxOSwgMjA5LCAyMzAsIDk5LCA1MCwgMjE5LCAKLSAgICAyMDksIDIzMCwgOTksIDIzOSwgMTAyLCAyMTksIDIwOSwgMjMwLCA5OSwgMjI4LCA4LCAxMTIsIDIxMCwgMywgMjI4LCA4LCAKLSAgICAxMjEsIDIxMCwgMywgNDksIDI1LCA1MCwgNTIsIDIwNywgMTczLCA0OSwgMjUsIDUwLCAyMTAsIDMsIDQ5LCAyMjMsIDIyOCwgCi0gICAgMTYzLCA1MCwgMjEwLCAzLCAxNjMsIDQ5LCAyMTAsIDMsIDExMiwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NSwgMjI2LCAyNDcsIAotICAgIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDIxNSwgMTM1LCA2MSwgMjQ1LCAyMTYsIDI0MywgMjIxLCA2MSwgMjQ1LCAKLSAgICAyMTYsIDI0MywgMjIyLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjIsIDMsIDg2LCAyMDgsIDI1NCwgCi0gICAgNjEsIDUxLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCA1MSwgMywgODYsIDIwOCwgMjU0LCAxMywgNDksIDYxLCA1MSwgMTU1LCAKLSAgICAxMywgNTAsIDYxLCA1MSwgMTU1LCAxMywgNDksIDI1MCwgMjE4LCAxNTUsIDEzLCA1MCwgMjUwLCAyMTgsIDE1NSwgMTMsIAotICAgIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDQ5LCA2MSwgMjA4LCAxMzMsIAotICAgIDIxMywgMzMsIDE1NSwgMTMsIDUwLCA2MSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMTMsIDQ5LCAyMzksIDIxNCwgMjE5LCAKLSAgICA3NiwgMTMsIDUwLCAyMzksIDIxNCwgMjE5LCA3NiwgMTc3LCAyMTcsIDU4LCA0NywgMTgzLCAyMTcsIDU4LCA0NywgMjUwLCAKLSAgICAxOTQsIDIzOCwgMjI2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCA1MCwgNTMsIDMsIAotICAgIDQzLCAyMTgsIDc2LCAxNjMsIDk2LCA0NywgMTYzLCA4NiwgNDcsIDE2MywgNDksIDUwLCA0NywgMTYzLCA5NiwgNTIsIDQ3LCAKLSAgICAxNjMsIDg2LCA1MiwgNDcsIDE2MywgNDksIDUwLCA1MiwgNDcsIDE2MywgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIAotICAgIDg2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCA5NiwgNTIsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDg2LCA1MiwgNTMsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDIxMSwgMTcxLCA0NywgNTgsIDU5LCAyNDgsIDM2LCA1OCwgNTksIDI0MywgODIsIAotICAgIDU4LCA1OSwgMjQyLCAyMTAsIDU4LCA1OSwgMjQzLCA4MSwgNTgsIDU5LCAyNDIsIDE0NiwgNTgsIDU5LCAyNDMsIDE3LCA1OCwgCi0gICAgNTksIDI0MiwgMjA5LCA1OCwgNTksIDI0MywgODAsIDU4LCA1OSwgMjQyLCAxMTQsIDU4LCA1OSwgMjQyLCAyNDEsIDU4LCAKLSAgICA1OSwgMjQyLCAxNzcsIDU4LCA1OSwgMjQzLCA0OCwgNTgsIDU5LCAyNDIsIDE0NSwgNTgsIDU5LCAyNDMsIDE2LCA1OCwgNTksIAotICAgIDI0MiwgMjA4LCA1OCwgNTksIDI0MywgNzksIDU4LCA1OSwgMjQyLCA5OCwgNTgsIDU5LCAyNDIsIDIyNSwgNTgsIDU5LCAKLSAgICAyNDIsIDE2MSwgNTgsIDU5LCAyNDMsIDMyLCA1OCwgNTksIDI0MiwgMTI5LCA1OCwgNTksIDI0MywgMCwgNTgsIDU5LCAyNDIsIAotICAgIDE5MiwgNTgsIDU5LCAyNDMsIDYzLCA1OCwgNTksIDI0MiwgMTEzLCA1OCwgNTksIDI0MiwgMjQwLCA1OCwgNTksIDI0MiwgCi0gICAgMTc2LCA1OCwgNTksIDI0MywgNDcsIDU4LCA1OSwgMjQyLCAxNDQsIDU4LCA1OSwgMjQzLCAxNSwgNTgsIDU5LCAyNDIsIAotICAgIDIwNywgNTgsIDU5LCAyNDMsIDc4LCA1OCwgNTksIDI0MiwgOTAsIDU4LCA1OSwgMjQyLCAyMTcsIDU4LCA1OSwgMjQyLCAKLSAgICAxNTMsIDU4LCA1OSwgMjQzLCAyNCwgNTgsIDU5LCAyNDIsIDEyMSwgNTgsIDU5LCAyNDIsIDI0OCwgNTgsIDU5LCAyNDIsIAotICAgIDE4NCwgNTgsIDU5LCAyNDMsIDU1LCA1OCwgNTksIDI0MiwgMTA1LCA1OCwgNTksIDI0MiwgMjMyLCA1OCwgNTksIDI0MiwgCi0gICAgMTY4LCA1OCwgNTksIDI0MywgMzksIDU4LCA1OSwgMjQyLCAxMzYsIDU4LCA1OSwgMjQzLCA3LCA1OCwgNTksIDI0MiwgMTk5LCAKLSAgICA1OCwgNTksIDI0MywgNzAsIDU4LCA1OSwgMjQyLCA5NywgNTgsIDU5LCAyNDIsIDIyNCwgNTgsIDU5LCAyNDIsIDE2MCwgNTgsIAotICAgIDU5LCAyNDMsIDMxLCA1OCwgNTksIDI0MiwgMTI4LCA1OCwgNTksIDI0MiwgMjU1LCA1OCwgNTksIDI0MiwgMTkxLCA1OCwgCi0gICAgNTksIDI0MywgNjIsIDU4LCA1OSwgMjQyLCAxMTIsIDU4LCA1OSwgMjQyLCAyMzksIDU4LCA1OSwgMjQyLCAxNzUsIDU4LCAKLSAgICA1OSwgMjQzLCA0NiwgNTgsIDU5LCAyNDIsIDE0MywgNTgsIDU5LCAyNDMsIDE0LCA1OCwgNTksIDI0MiwgMjA2LCA1OCwgNTksIAotICAgIDI0MywgNzcsIDU4LCA1OSwgMjQyLCA4NiwgNTgsIDU5LCAyNDIsIDIxMywgNTgsIDU5LCAyNDIsIDE0OSwgNTgsIDU5LCAKLSAgICAyNDMsIDIwLCA1OCwgNTksIDI0MiwgMTE3LCA1OCwgNTksIDI0MiwgMjQ0LCA1OCwgNTksIDI0MiwgMTgwLCA1OCwgNTksIAotICAgIDI0MywgNTEsIDU4LCA1OSwgMjQyLCAxMDEsIDU4LCA1OSwgMjQyLCAyMjgsIDU4LCA1OSwgMjQyLCAxNjQsIDU4LCA1OSwgCi0gICAgMjQzLCAzNSwgNTgsIDU5LCAyNDIsIDEzMiwgNTgsIDU5LCAyNDMsIDMsIDU4LCA1OSwgMjQyLCAxOTUsIDU4LCA1OSwgMjQzLCAKLSAgICA2NiwgNTgsIDU5LCAyNDIsIDkzLCA1OCwgNTksIDI0MiwgMjIwLCA1OCwgNTksIDI0MiwgMTU2LCA1OCwgNTksIDI0MywgMjcsIAotICAgIDU4LCA1OSwgMjQyLCAxMjQsIDU4LCA1OSwgMjQyLCAyNTEsIDU4LCA1OSwgMjQyLCAxODcsIDU4LCA1OSwgMjQzLCA1OCwgCi0gICAgNTgsIDU5LCAyNDIsIDEwOCwgNTgsIDU5LCAyNDIsIDIzNSwgNTgsIDU5LCAyNDIsIDE3MSwgNTgsIDU5LCAyNDMsIDQyLCAKLSAgICA1OCwgNTksIDI0MiwgMTM5LCA1OCwgNTksIDI0MywgMTAsIDU4LCA1OSwgMjQyLCAyMDIsIDU4LCA1OSwgMjQzLCA3MywgNTgsIAotICAgIDU5LCAyNDIsIDg5LCA1OCwgNTksIDI0MiwgMjE2LCA1OCwgNTksIDI0MiwgMTUyLCA1OCwgNTksIDI0MywgMjMsIDU4LCA1OSwgCi0gICAgMjQyLCAxMjAsIDU4LCA1OSwgMjQyLCAyNDcsIDU4LCA1OSwgMjQyLCAxODMsIDU4LCA1OSwgMjQzLCA1NCwgNTgsIDU5LCAKLSAgICAyNDIsIDEwNCwgNTgsIDU5LCAyNDIsIDIzMSwgNTgsIDU5LCAyNDIsIDE2NywgNTgsIDU5LCAyNDMsIDM4LCA1OCwgNTksIAotICAgIDI0MiwgMTM1LCA1OCwgNTksIDI0MywgNiwgNTgsIDU5LCAyNDIsIDE5OCwgNTgsIDU5LCAyNDMsIDY5LCA1OCwgNTksIDI0MiwgCi0gICAgOTYsIDU4LCA1OSwgMjQyLCAyMjMsIDU4LCA1OSwgMjQyLCAxNTksIDU4LCA1OSwgMjQzLCAzMCwgNTgsIDU5LCAyNDIsIAotICAgIDEyNywgNTgsIDU5LCAyNDIsIDI1NCwgNTgsIDU5LCAyNDIsIDE5MCwgNTgsIDU5LCAyNDMsIDYxLCA1OCwgNTksIDI0MiwgCi0gICAgMTExLCA1OCwgNTksIDI0MiwgMjM4LCA1OCwgNTksIDI0MiwgMTc0LCA1OCwgNTksIDI0MywgNDUsIDU4LCA1OSwgMjQyLCAKLSAgICAxNDIsIDU4LCA1OSwgMjQzLCAxMywgNTgsIDU5LCAyNDIsIDIwNSwgNTgsIDU5LCAyNDMsIDc2LCA1OCwgNTksIDI0MiwgODQsIAotICAgIDU4LCA1OSwgMjQyLCAyMTEsIDU4LCA1OSwgMjQyLCAxNDcsIDU4LCA1OSwgMjQzLCAxOCwgNTgsIDU5LCAyNDIsIDExNSwgCi0gICAgNTgsIDU5LCAyNDIsIDI0MiwgNTgsIDU5LCAyNDIsIDE3OCwgNTgsIDU5LCAyNDMsIDQ5LCA1OCwgNTksIDI0MiwgOTksIDU4LCAKLSAgICA1OSwgMjQyLCAyMjYsIDU4LCA1OSwgMjQyLCAxNjIsIDU4LCA1OSwgMjQzLCAzMywgNTgsIDU5LCAyNDIsIDEzMCwgNTgsIAotICAgIDU5LCAyNDMsIDEsIDU4LCA1OSwgMjQyLCAxOTMsIDU4LCA1OSwgMjQzLCA2NCwgNTgsIDU5LCAyNDIsIDkxLCA1OCwgNTksIAotICAgIDI0MiwgMjE4LCA1OCwgNTksIDI0MiwgMTU0LCA1OCwgNTksIDI0MywgMjUsIDU4LCA1OSwgMjQyLCAxMjIsIDU4LCA1OSwgCi0gICAgMjQyLCAyNDksIDU4LCA1OSwgMjQyLCAxODUsIDU4LCA1OSwgMjQzLCA1NiwgNTgsIDU5LCAyNDIsIDEwNiwgNTgsIDU5LCAKLSAgICAyNDIsIDIzMywgNTgsIDU5LCAyNDIsIDE2OSwgNTgsIDU5LCAyNDMsIDQwLCA1OCwgNTksIDI0MiwgMTM3LCA1OCwgNTksIAotICAgIDI0MywgOCwgNTgsIDU5LCAyNDIsIDIwMCwgNTgsIDU5LCAyNDMsIDcxLCA1OCwgNTksIDI0MiwgODcsIDU4LCA1OSwgMjQyLCAKLSAgICAyMTQsIDU4LCA1OSwgMjQyLCAxNTAsIDU4LCA1OSwgMjQzLCAyMSwgNTgsIDU5LCAyNDIsIDExOCwgNTgsIDU5LCAyNDIsIAotICAgIDI0NSwgNTgsIDU5LCAyNDIsIDE4MSwgNTgsIDU5LCAyNDMsIDUyLCA1OCwgNTksIDI0MiwgMTAyLCA1OCwgNTksIDI0MiwgCi0gICAgMjI5LCA1OCwgNTksIDI0MiwgMTY1LCA1OCwgNTksIDI0MywgMzYsIDU4LCA1OSwgMjQyLCAxMzMsIDU4LCA1OSwgMjQzLCA0LCAKLSAgICA1OCwgNTksIDI0MiwgMTk2LCA1OCwgNTksIDI0MywgNjcsIDU4LCA1OSwgMjQyLCA5NCwgNTgsIDU5LCAyNDIsIDIyMSwgNTgsIAotICAgIDU5LCAyNDIsIDE1NywgNTgsIDU5LCAyNDMsIDI4LCA1OCwgNTksIDI0MiwgMTI1LCA1OCwgNTksIDI0MiwgMjUyLCA1OCwgCi0gICAgNTksIDI0MiwgMTg4LCA1OCwgNTksIDI0MywgNTksIDU4LCA1OSwgMjQyLCAxMDksIDU4LCA1OSwgMjQyLCAyMzYsIDU4LCAKLSAgICA1OSwgMjQyLCAxNzIsIDU4LCA1OSwgMjQzLCA0MywgNTgsIDU5LCAyNDIsIDE0MCwgNTgsIDU5LCAyNDMsIDExLCA1OCwgNTksIAotICAgIDI0MiwgMjAzLCA1OCwgNTksIDI0MywgNzQsIDU4LCA1OSwgMjQyLCA4NSwgNTgsIDU5LCAyNDIsIDIxMiwgNTgsIDU5LCAKLSAgICAyNDIsIDE0OCwgNTgsIDU5LCAyNDMsIDE5LCA1OCwgNTksIDI0MiwgMTE2LCA1OCwgNTksIDI0MiwgMjQzLCA1OCwgNTksIAotICAgIDI0MiwgMTc5LCA1OCwgNTksIDI0MywgNTAsIDU4LCA1OSwgMjQyLCAxMDAsIDU4LCA1OSwgMjQyLCAyMjcsIDU4LCA1OSwgCi0gICAgMjQyLCAxNjMsIDU4LCA1OSwgMjQzLCAzNCwgNTgsIDU5LCAyNDIsIDEzMSwgNTgsIDU5LCAyNDMsIDIsIDU4LCA1OSwgMjQyLCAKLSAgICAxOTQsIDU4LCA1OSwgMjQzLCA2NSwgNTgsIDU5LCAyNDIsIDkyLCA1OCwgNTksIDI0MiwgMjE5LCA1OCwgNTksIDI0MiwgCi0gICAgMTU1LCA1OCwgNTksIDI0MywgMjYsIDU4LCA1OSwgMjQyLCAxMjMsIDU4LCA1OSwgMjQyLCAyNTAsIDU4LCA1OSwgMjQyLCAKLSAgICAxODYsIDU4LCA1OSwgMjQzLCA1NywgNTgsIDU5LCAyNDIsIDEwNywgNTgsIDU5LCAyNDIsIDIzNCwgNTgsIDU5LCAyNDIsIAotICAgIDE3MCwgNTgsIDU5LCAyNDMsIDQxLCA1OCwgNTksIDI0MiwgMTM4LCA1OCwgNTksIDI0MywgOSwgNTgsIDU5LCAyNDIsIDIwMSwgCi0gICAgNTgsIDU5LCAyNDMsIDcyLCA1OCwgNTksIDI0MiwgODgsIDU4LCA1OSwgMjQyLCAyMTUsIDU4LCA1OSwgMjQyLCAxNTEsIDU4LCAKLSAgICA1OSwgMjQzLCAyMiwgNTgsIDU5LCAyNDIsIDExOSwgNTgsIDU5LCAyNDIsIDI0NiwgNTgsIDU5LCAyNDIsIDE4MiwgNTgsIAotICAgIDU5LCAyNDMsIDUzLCA1OCwgNTksIDI0MiwgMTAzLCA1OCwgNTksIDI0MiwgMjMwLCA1OCwgNTksIDI0MiwgMTY2LCA1OCwgCi0gICAgNTksIDI0MywgMzcsIDU4LCA1OSwgMjQyLCAxMzQsIDU4LCA1OSwgMjQzLCA1LCA1OCwgNTksIDI0MiwgMTk3LCA1OCwgNTksIAotICAgIDI0MywgNjgsIDU4LCA1OSwgMjQyLCA5NSwgNTgsIDU5LCAyNDIsIDIyMiwgNTgsIDU5LCAyNDIsIDE1OCwgNTgsIDU5LCAKLSAgICAyNDMsIDI5LCA1OCwgNTksIDI0MiwgMTI2LCA1OCwgNTksIDI0MiwgMjUzLCA1OCwgNTksIDI0MiwgMTg5LCA1OCwgNTksIAotICAgIDI0MywgNjAsIDU4LCA1OSwgMjQyLCAxMTAsIDU4LCA1OSwgMjQyLCAyMzcsIDU4LCA1OSwgMjQyLCAxNzMsIDU4LCA1OSwgCi0gICAgMjQzLCA0NCwgNTgsIDU5LCAyNDIsIDE0MSwgNTgsIDU5LCAyNDMsIDEyLCA1OCwgNTksIDI0MiwgMjA0LCA1OCwgNTksIAotICAgIDI0MywgNzUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgNTIsIDgwLCA5NSwgCi0gICAgOTYsIDUyLCA1MywgMywgODAsIDk1LCA4NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDQ5LCA1MCwgNTIsIDUzLCAzLCA4MCwgOTUsIAotICAgIDg2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDg2LCA1MiwgNTMsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE4MywgNTMsIDMsIDIzNiwgMTA2LCA5NSwgMTc3LCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIAotICAgIDIwOCwgNzAsIDQ3LCAxODMsIDIwOCwgNzAsIDQ3LCA5NiwgNTIsIDI0NCwgMTQ1LCA0NywgODYsIDUyLCAyNDQsIDE0NSwgCi0gICAgNDcsIDk2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDcsIDEzNCwgCi0gICAgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDE3NywgNTMsIDIwOCwgMTczLCAKLSAgICAxNDIsIDE4MywgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDUzLCAzLCAKLSAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDg2LCAyMDcsIDEzNCwgNTMsIAotICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCi0gICAgMjUwLCA5NiwgODYsIDI1MCwgOTYsIDk2LCA1MiwgMjUwLCA5NiwgODYsIDUyLCAyNTAsIDk2LCA5NiwgNTMsIDIwOCwgMTczLCAKLSAgICA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgOTYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIAotICAgIDIwOCwgMTczLCA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjM5LCAxMjAsIDI0OCwgMjMxLCAyMDgsIDE3MywgNjIsIDI0MywgCi0gICAgMjIxLCAxNTMsIDIwNCwgNDYsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyNSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjQxLCAxNzYsIDUzLCAzLCAxMTMsIAotICAgIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDMsIDExMywgMjExLCAyMzgsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjA0LCAKLSAgICA0NiwgNTMsIDI1LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAyNSwgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgCi0gICAgNTMsIDI1LCAxNTMsIDIwNCwgNDYsIDQ3LCAyMTUsIDI0NSwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyNDAsIDg0LCAyNDMsIAotICAgIDIyNywgMjQwLCA4NCwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTUsIDI0NSwgMjQzLCAyMjcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI0NSwgMTI0LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDQ3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMTUsIDI0NSwgCi0gICAgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIAotICAgIDE1MywgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMjA0LCA3NiwgCi0gICAgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMTYsIDE2LCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDIwNiwgCi0gICAgMjEyLCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDI0MiwgNjgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgCi0gICAgODQsIDI0NSwgODQsIDIyNywgMjEyLCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAyNDUsIDg0LCAyMTYsIDUsIDIxNiwgCi0gICAgOCwgMjUwLCAxMjksIDI0NiwgMTgsIDQ3LCAyMjcsIDIxNSwgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjA4LCAxNDUsIAotICAgIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDI0NywgMjQ4LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgMjUwLCAKLSAgICAxMjksIDI0NiwgMTgsIDUzLCAzLCAyMjQsIDEwMiwgMjA4LCAxNDUsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNTMsIDMsIDIxOCwgCi0gICAgNzYsIDIyNiwgMjUxLCA1MCwgMjEzLCAxNDUsIDI0NiwgMTgsIDQ3LCAyMjYsIDI1MSwgNDksIDIxMywgMTQ1LCAyNTAsIAotICAgIDE5NCwgNDcsIDI1MCwgMTk0LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjQ2LCAxNiwgMjQ2LCA2MiwgNDcsIAotICAgIDg2LCA1MywgODcsIDIxMiwgMjI4LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxMiwgMjI4LCA4NiwgNDcsIDIxMiwgMjI4LCA4NiwgCi0gICAgNTMsIDg3LCA5NiwgNDcsIDg2LCA1MywgMywgOTEsIDU2LCA5NiwgNTMsIDMsIDkxLCA1NiwgODYsIDUzLCAyMDksIDI1LCAKLSAgICAyMDMsIDE5NiwgNDksIDUwLCA1MywgMjA5LCAyNSwgNSwgMjQ2LCA2MSwgMTc3LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAKLSAgICA1LCAyNDYsIDYxLCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgNDksIDE1MCwgMTIxLCA1MCwgMTUwLCAKLSAgICAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAxNTAsIDQ5LCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCi0gICAgMTUwLCA1MCwgMjM3LCA4NiwgNDksIDE1MCwgMTEyLCA1MCwgMTUwLCAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAKLSAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgMTEyLCAxNTAsIDQ5LCAxMjEsIAotICAgIDE1MCwgNDksIDIzNywgODYsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjA4LCAxNzMsIDE0MiwgODYsIDIzNywgODcsIAotICAgIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIwOCwgMTczLCAxNDIsIDE4MywgCi0gICAgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMDgsIDE3MywgCi0gICAgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgCi0gICAgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgCi0gICAgMTUwLCAxMTIsIDIzOSwgMTIwLCAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgMTc3LCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMzksIDEyMCwgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAKLSAgICAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAKLSAgICAyMzksIDEyMCwgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgCi0gICAgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIDIzNywgODcsIDMsIAotICAgIDE1MCwgMjQyLCA3MCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDIxNiwgMTYsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNzAsIDE4MywgCi0gICAgMjM3LCA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA5NiwgMjM3LCAKLSAgICA4NywgMywgMTUwLCAxMTIsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgOTYsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMTIxLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIAotICAgIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMjQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgODcsIDk2LCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDI0MiwgNzAsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgMjQ0LCAxNDQsIDk2LCAyMzcsIDg3LCAKLSAgICAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgCi0gICAgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDE3NywgMjM3LCAKLSAgICA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCAxODMsIDIzNywgODcsIDMsIAotICAgIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgNTAsIDUyLCA1MywgMywgMjE1LCAKLSAgICAxODksIDIzNywgNjQsIDI0MSwgMzUsIDIsIDg3LCA4NiwgNDcsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIDg2LCA0NywgOTYsIAotICAgIDUzLCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCA4NiwgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIAotICAgIDI1MSwgNywgMTU2LCAxMzUsIDIyNywgMTc5LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDIwOSwgMjUsIDIyNywgMTc4LCAyMzcsIAotICAgIDI0NywgODcsIDg2LCA0NywgMjEwLCAyNDUsIDg3LCA4NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjEwLCAyNDQsIDIxMCwgCi0gICAgMTk4LCA4NywgOTYsIDQ3LCA0OSwgMjM5LCAyNDQsIDIwOSwgMjQ4LCA1MCwgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMTIsIAotICAgIDIzOSwgMjQ0LCAyMDksIDI0OCwgMTIxLCAyMzksIDI0NCwgMjA5LCAyNDgsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ0LCAKLSAgICA0MywgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTEsIDE4OCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMDcsIDEyMSwgMjQ1LCAyNDIsIAotICAgIDQ5LCA2MSwgMjQ1LCA5MywgMTU1LCA1MCwgNjEsIDI0NSwgOTMsIDE1NSwgNDksIDYxLCAyMTksIDc2LCA1MCwgNjEsIDIxOSwgCi0gICAgNzYsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDIzMSwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgMjMxLCAKLSAgICA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDQ5LCAyNDgsIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNTAsIAotICAgIDI0OCwgNjUsIDE1NSwgNDksIDUxLCAyNDcsIDIyNywgMywgMjA2LCAyNDYsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwNiwgCi0gICAgMjQ2LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA1MCwgNTEsIAotICAgIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAKLSAgICAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgCi0gICAgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA0OSwgMjUwLCAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA1MCwgMjUwLCAKLSAgICAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA0OSwgMjUwLCAxMjksIDIyNywgMTc5LCAxNTUsIDUwLCAyNTAsIDEyOSwgCi0gICAgMjM3LCAyNDcsIDE1NSwgNTIsIDQ5LCAyNTAsIDEyOSwgMjM3LCAyNDcsIDE1NSwgNTIsIDUwLCAyNTAsIDEyOSwgMjI3LCAKLSAgICAxNzksIDE1NSwgNDksIDYyLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAotICAgIDI0MiwgODMsIDI0MCwgNDAsIDgwLCAyMDIsIDMwLCAyMjcsIDExNCwgMjI1LCAxNywgMjUwLCAyMTgsIDIyMCwgMSwgMjI3LCAKLSAgICAyMjIsIDUwLCAyNTAsIDIxOCwgMjA2LCA2OSwgMywgMjExLCAxNzcsIDIyNSwgMTcsIDUwLCAyNTAsIDIxOCwgMywgMjQzLCAKLSAgICA4NSwgMjUwLCAyMTgsIDMsIDIxNSwgOTQsIDIzMSwgNiwgMjUxLCAxMjYsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTgsIAotICAgIDIyMCwgMSwgMjI3LCAyMjIsIDIxMSwgMjA4LCAyNTAsIDIxOCwgMjIwLCAxLCAyMDYsIDIyNCwgMjA3LCAxNzQsIDI1MCwgCi0gICAgMjE3LCAyMTYsIDczLCAyNTAsIDIxNywgMjUwLCAyMTgsIDMsIDIwNiwgMjQ2LCAyMTYsIDczLCAyNTAsIDIxOCwgMywgMjA2LCAKLSAgICAyNDYsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMjAsIDg5LCAyNTAsIDIxOCwgMjIwLCAxLCAyNDIsIAotICAgIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIAotICAgIDExMiwgMjUsIDIxNiwgMTYsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCAKLSAgICA1MywgMjE4LCA1OSwgMTEyLCAyNSwgMjI3LCAyMjIsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIAotICAgIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgMTIxLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgCi0gICAgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAKLSAgICAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA1MCwgMjUsIDIwNiwgMjI0LCAKLSAgICAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAKLSAgICAyNSwgMjA2LCAyMjQsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgCi0gICAgMjE4LCA1OSwgNTAsIDI1LCAyNDIsIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgCi0gICAgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAyNSwgMjQyLCA3MCwgMjE2LCA3MywgMjQxLCA5NCwgMjEzLCAxMTcsIDI0MSwgCi0gICAgOTQsIDIxMywgMTE4LCAzLCAyMTksIDIwMywgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDUsIDI0NiwgNjIsIDU1LCAyNDEsIDk0LCAKLSAgICAyMTMsIDExOCwgMywgNTAsIDUzLCA1NSwgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDQ5LCA1MywgNTUsIDI0NiwgNjIsIDMsIAotICAgIDIzNiwgMTA2LCAxNDIsIDQzLCA4MCwgMTQyLCA0MywgMjE5LCA4MSwgNDMsIDIxNiwgNzQsIDIxMiwgMCwgNDMsIDIxOCwgCi0gICAgMjMzLCAyNDYsIDYyLCAyNDMsIDE0MiwgMjQ3LCAxMzcsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMjUsIDIwOCwgMTQ1LCAxNjIsIAotICAgIDI0MywgMTQyLCAyNDcsIDEzNywgODAsIDE0MiwgMjQ2LCA2MiwgMywgMjEwLCAyMDAsIDIwMywgMTk2LCA0MywgMjUwLCAKLSAgICAxOTIsIDI0MywgMTM3LCA1NCwgMTEyLCA1MywgMjA5LCAyNSwgMjQ2LCA2MSwgNDMsIDYxLCAyNDcsIDE3NywgNDMsIDI0NywgCi0gICAgMTc3LCA0MywgMjI3LCAxNzgsIDQzLCAyMzcsIDI0NiwgMjQ2LCA2MiwgMywgNSwgMjQ2LCA2MiwgMjA4LCAxNzMsIDIwOSwgCi0gICAgOTMsIDIxNiwgMTYsIDI0NiwgNjIsIDMsIDEyMCwgMjM2LCAxMDYsIDIxMSwgMjAsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIAotICAgIDE2LCAxMDMsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjEyLCA1NywgMTAzLCAyNDAsIDg0LCAyNDMsIDIyOCwgMjEyLCA1NywgCi0gICAgMTAzLCAyNTAsIDU5LCAxMDMsIDUsIDI0NiwgNjEsIDEwMywgMjExLCAxNzcsIDEyMCwgMjMwLCA5OCwgMjExLCAxNzUsIAotICAgIDIwOCwgODYsIDMsIDcwLCA1NSwgMjA4LCA4NiwgMywgMjA2LCAyNDYsIDIxNSwgOTQsIDIzMSwgNTAsIDIwOCwgODUsIDIwOCwgCi0gICAgODYsIDMsIDIxMywgMTI0LCAyNTAsIDUwLCAyNDcsIDI0NywgNTAsIDIwOCwgODYsIDg3LCA0OSwgMjA4LCA4NSwgNDksIAotICAgIDIwOCwgODYsIDI0OCwgMTEwLCA4MCwgMTQyLCA4MCwgMjQ4LCAyMzEsIDI0OCwgMTEwLCA1MCwgMjA4LCA4NSwgMjQ3LCAKLSAgICAyMzUsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0NywgMjM1LCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MiwgMjQ3LCAyMzQsIAotICAgIDIzLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMywgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjEsIDIzNiwgNDAsIDYyLCAyMzYsIAotICAgIDQwLCA0OSwgMjA0LCAyMSwgMjQwLCA0MCwgNTAsIDIwNCwgMjEsIDI0MCwgNDAsIDQ5LCA1MiwgMjA0LCAyMSwgMjQwLCA0MCwgCi0gICAgNTAsIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAyMzEsIDQyLCAyMzEsIDI3LCAyMDgsIDI1MSwgMTE1LCAyMzEsIDI3LCAyMzEsIAotICAgIDI4LCAyMjIsIDIzNCwgMywgODAsIDE0MiwgMjQyLCA3NywgMjIzLCAyMjgsIDUxLCAzLCAyNDUsIDE4NywgMjE5LCAyMDgsIAotICAgIDIzMSwgMzksIDI1MCwgODEsIDIxMiwgMTkzLCAyMTcsIDIyNCwgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODEsIAotICAgIDI0MSwgMzUsIDIsIDI1LCAyMTIsIDU5LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgNTUsIDIzNSwgMTU0LCAyMDgsIDE3MywgCi0gICAgMjUsIDIxMiwgNTksIDIxOSwgODEsIDIzOCwgNDgsIDIxMSwgOTMsIDIwOSwgODEsIDI0MiwgNjksIDIwOCwgODYsIDMsIDQ5LCAKLSAgICAxNjIsIDI0OCwgNDMsIDI0MiwgNjksIDIwOCwgODYsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDMsIDIyMiwgMywgCi0gICAgMTIxLCA0NywgNjIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgMTIxLCA0NywgNjIsIDI0NiwgNjIsIDMsIDEyMSwgNDcsIAotICAgIDI0MSwgMjAsIDYxLCAyMTEsIDE3NywgMjQxLCAyMCwgNjIsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MSwgMjQzLCAyMjEsIDI0MSwgCi0gICAgMjAsIDYyLCAyNDMsIDIyMSwgMjQxLCAyMCwgNjEsIDI0NiwgNjEsIDI0MSwgMjAsIDYyLCAyNDYsIDYxLCAyMTUsIDEzNCwgCi0gICAgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDI1NCwgMjEyLCAxLCAzLCAyMTksIDIwMywgMjE2LCA3NCwgMjEyLCAxLCAzLCAyMzYsIAotICAgIDEwNiwgOTUsIDI0OCwgNzMsIDIxMiwgMCwgMjQ4LCA3MywgMjE2LCA3NCwgMjEyLCAwLCA1MiwgMjE4LCA3NiwgMjA4LCA3MCwgCi0gICAgMjE4LCA3NiwgMjI3LCAyMTcsIDI0NSwgODYsIDI1MCwgMjE4LCAxNTUsIDIxNiwgMTEsIDI0NSwgODYsIDI1MCwgMjE4LCAKLSAgICAxNTUsIDIwOCwgMjEyLCAyMjQsIDEwMCwgMjIzLCAxNjIsIDQzLCA3MCwgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgOTEsIAotICAgIDIxOSwgMjU0LCAyMjMsIDE2MiwgNDMsIDIzLCAyMTksIDI1NCwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgCi0gICAgMjQzLCA4NSwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgMjE4LCA3NiwgMjIzLCAxNjIsIDUxLCAyMzAsIAotICAgIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCA1MSwgMjA2LCAyMzgsIDIxOSwgMjU0LCAxMjAsIDIyNywgMzcsIDI1LCAyMTksIAotICAgIDI1NCwgMTIwLCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCAyMywgMjE5LCAyNTQsIDIyNCwgNTgsIAotICAgIDEyMCwgMjEwLCAyMjAsIDIxMCwgMjE4LCAzLCAyMzEsIDIsIDIxNywgNTgsIDIzMSwgMywgMjE5LCAyNTQsIDIzOSwgMjUyLCAKLSAgICAyMTksIDcxLCAyMzEsIDIsIDIzMSwgMywgMywgNTIsIDk1LCAyMzEsIDMsIDI1MCwgMTUsIDMsIDIxMiwgNTcsIDI0NiwgNTQsIAotICAgIDIzOSwgOTksIDI1MCwgMTk0LCAyMzEsIDAsIDIyNywgMTE1LCAyMzEsIDEsIDMsIDIxNiwgMTQyLCAyMTksIDUyLCAyNTAsIAotICAgIDEwNCwgMjE4LCA1MywgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjEzLCAxNDUsIDIxOSwgNTIsIDI1MCwgMTA0LCAyMTgsIDUzLCAKLSAgICAyMjcsIDExNSwgMjMxLCAxLCAyMjEsIDE2NiwgMjMxLCA0NCwgMjA5LCA5MywgMjE4LCA1MywgMjMxLCAzLCAyNTAsIDEwNCwgCi0gICAgMzQsIDIxOCwgNjMsIDIxOSwgMjU0LCAyMTcsIDUyLCAyMzEsIDMsIDIxOSwgMjU0LCAyMzEsIDMsIDMsIDk2LCA1MywgMywgCi0gICAgMTEzLCAyMzEsIDMsIDMsIDIzLCA1NCwgMjMxLCAzLCAzLCAyMzAsIDI0NCwgMjMxLCAzLCAzLCAyMDYsIDIzNywgMjMxLCAzLCAKLSAgICAzLCAyMTksIDIwMywgMjMxLCAzLCAzLCAyMDYsIDI0NiwgMjMwLCA5OSwgMjI4LCA4LCA0OSwgMjA4LCA4NiwgMjE5LCAyNTQsIAotICAgIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIDI0NSwgMjIzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAKLSAgICAyMTgsIDExNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjE3LCAyMTksIDkxLCAyLCAzLCA1LCAyNDYsIDYyLCAKLSAgICA1NSwgOTEsIDIsIDMsIDI0NiwgNTMsIDI1MSwgMTM5LCA1NSwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NSwgOTEsIDIsIDMsIAotICAgIDcwLCA1NiwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NiwgOTEsIDIsIDMsIDIxMCwgMjQ2LCAxMDgsIDkxLCAyLCAzLCA2MiwgCi0gICAgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDMsIDI0NSwgMjM0LCA1NSwgMjI0LCAxMDMsIDIsIDMsIDcwLCA1NiwgMjI0LCAxMDMsIAotICAgIDIsIDMsIDI0MCwgODQsIDI0MywgODMsIDIyNCwgMTAzLCAyLCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgOTEsIDIsIDIzMSwgCi0gICAgNTAsIDQ5LCAxNjIsIDI0NiwgNjEsIDkxLCAyLCAyMzEsIDUwLCA1MCwgMTYyLCAyNDYsIDYxLCAyMDYsIDU0LCAyMTksIAotICAgIDI0NSwgMjQ1LCAxMzEsIDIxNywgMjI0LCAyMjMsIDIyNCwgMiwgMywgNzAsIDU1LCAyMjMsIDIyNCwgMiwgMywgMjA2LCAKLSAgICAyNDYsIDIxMywgMTQyLCAyMTcsIDIyNSwgMywgMjQ3LCAyNDgsIDI0NiwgMTUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjMsIAotICAgIDIyNCwgMiwgMjMxLCA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgCi0gICAgNjEsIDQzLCAyMjMsIDIyNCwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCA1MiwgMjQ2LCAKLSAgICA2MSwgNDMsIDI0MywgMTM3LCA1NCwgOTEsIDIsIDIzMSwgNTAsIDIwOCwgODUsIDIyNCwgMTAzLCAyLCAyMzEsIDUwLCAyMDgsIAotICAgIDg1LCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjMwLCAyNTMsIDIxNywgMjI0LCAyMTYsIDYsIDIzMCwgMjUzLCAKLSAgICAyMTcsIDIyNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDExNiwgMjQ1LCAyMjMsIDI1MCwgMjQ1LCAyMTksIDI0NSwgCi0gICAgMjQ1LCAxNzEsIDIzMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMDYsIDIzOCwgMywgMjI0LCAxMDMsIDU0LCAyMDYsIDIzOCwgMywgCi0gICAgMjE5LCAyMDMsIDIzMCwgMjQ1LCAzLCAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIyNywgMzcsIDI1MCwgMjI2LCAyMDYsIAotICAgIDIzOCwgMywgMjI3LCAzNywgMjE5LCAyNDQsIDIwNiwgMjM4LCA4NywgMjMwLCAyNDQsIDIzMCwgMjQ1LCA4NywgMjA2LCAKLSAgICAyMzcsIDIwNiwgMjM4LCA4NywgMjQ4LCAyMzEsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyNDgsIDIzMSwgODcsIAotICAgIDIwNiwgMjM3LCAyMDYsIDIzOCwgMjQ4LCAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMDYsIDIzNywgMjMwLCAyNDUsIDI0OCwgCi0gICAgMTEwLCAyNSwgMjMwLCA5OCwgMywgMjMwLCAyNDQsIDI0NiwgMTYsIDIwNiwgMjM4LCAzLCAyMTMsIDEyMywgMjQ2LCAxNiwgCi0gICAgMjMwLCAyNDUsIDMsIDIxMywgMTIzLCA1MiwgNTEsIDIzMCwgMjQ0LCA1MiwgNTEsIDIwNiwgMjM3LCAyNDYsIDE2LCAyMDYsIAotICAgIDIzOCwgMywgMjEzLCAxMjQsIDI1LCAyMTIsIDM0LCAyMTcsIDIyNCwgMjI3LCAzNywgMjUsIDMsIDcwLCA1NSwgMjI3LCAzNywgCi0gICAgMjE5LCAyNDUsIDMsIDcwLCA1NSwgNTIsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjI3LCAzNywgMjE5LCAyNDQsIDEyMCwgCi0gICAgMjMwLCAyNDYsIDIyNywgMzcsIDI1MCwgMjI2LCAxMjAsIDIzMCwgMjQ2LCAyMjcsIDM3LCAyMTksIDI0NCwgMjEyLCA0MywgCi0gICAgMjI4LCA4LCAyMTksIDI0NCwgMjEyLCA0MywgMjI4LCA4LCAyNTAsIDIyNiwgMjI3LCAzNywgMjE5LCAyNDUsIDIxOSwgMjAwLCAKLSAgICAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAzNywgMjUsIDMsIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAotICAgIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjUsIDMsIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAotICAgIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjUsIDMsIDIwNiwgCi0gICAgMjQ2LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIwNiwgMjQ2LCA1LCAyMDYsIDUxLCAzLCAyMDYsIDI0NiwgMjI3LCAzNywgMjE5LCAKLSAgICAyNDUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIDUyLCAyMDYsIDI0NiwgMjAyLCAxNjAsIDIyMSwgCi0gICAgMTY0LCAyNDMsIDk0LCAyNTAsIDE4NCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDE3OSwgMjUwLCAxODQsIDI0MSwgMzUsIAotICAgIDIsIDMsIDcwLCA1NiwgMjM1LCAxNTQsIDMsIDcwLCA1NSwgMjA4LCA3MCwgMjM2LCAxMDYsIDI0OCwgMjMxLCAzLCA1MiwgCi0gICAgODAsIDk1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDIwOCwgNzAsIDgwLCA5NSwgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU1LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAyMTksIDI1NSwgMywgMjE1LCAyNDUsIDI0MywgODMsIDIxMiwgMTI5LCAyMjQsIAotICAgIDEwMywgMjEyLCAxMjgsIDI0NSwgMjEwLCAzLCA3MCwgNTUsIDI0MSwgMzUsIDMsIDI1MCwgNTksIDI1MSwgNywgMTU2LCAKLSAgICAyMDgsIDE3MywgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDI1MCwgMTUxLCAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAKLSAgICAzNSwgMiwgODcsIDkxLCA1NCwgOTEsIDIsIDg3LCAyNDEsIDM1LCA1NCwgMjQxLCAzNSwgMiwgODcsIDIwOCwgMjI4LCAyMTksIAotICAgIDI1NCwgNTIsIDI0NSwgMjQzLCAyNDEsIDM2LCAxMjAsIDI0NSwgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMTI2LCAyNDUsIAotICAgIDIwMywgMjQxLCAzNSwgMjEyLCAxNDMsIDI0MSwgMzUsIDIsIDMsIDEyMCwgMTg3LCA4NywgMjUsIDEyMCwgMTg3LCA1NiwgCi0gICAgMjQxLCAzMCwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDIyNywgMTc5LCAzLCAyNDYsIDYyLCAyMzEsIDYsIDIzNywgMjQ3LCAzLCAKLSAgICAyNDYsIDYyLCAyMzEsIDYsIDIyNywgMTc5LCAzLCAyMTcsIDQ3LCAxMzEsIDU1LCAyMzcsIDI0NywgMywgMjE3LCA0NywgCi0gICAgMTMxLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIAotICAgIDU5LCAxNTYsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgMjMxLCA2LCAKLSAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIDIyNywgMTc5LCAyMTksIAotICAgIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgCi0gICAgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgCi0gICAgODcsIDIxNiwgMTYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDg3LCAyMjcsIAotICAgIDIyMiwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjI3LCAKLSAgICAxNzksIDI1LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgCi0gICAgMTU2LCAxMzUsIDIyNywgMTc5LCAyNSwgMjIxLCAxNjYsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjUsIDIyMSwgMTY2LCAyNTAsIAotICAgIDE1MiwgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAxNTYsIDg3LCAyMzcsIDI0NiwgMjM3LCAyNDcsIDg3LCAyNDIsIDc2LCAKLSAgICAxNTYsIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIzNywgMjQ3LCAKLSAgICA4NywgMjEyLCAxMjksIDIxOSwgMjQ1LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDYsIAotICAgIDIzNywgMjQ3LCA4NywgMjEyLCAxMjksIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMzcsIDI0NywgODcsIDI0MiwgCi0gICAgNzYsIDI0MSwgMzYsIDIzNywgMjQ3LCA4NywgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIAotICAgIDIxMiwgNTksIDE1NiwgODcsIDIzNywgMjQ3LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAKLSAgICAxNTYsIDg3LCAyMjcsIDE3OSwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCi0gICAgMjQ1LCAyMjcsIDE3OCwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIDU5LCAxNTYsIAotICAgIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzksIDMsIDcwLCAyMzEsIDYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCi0gICAgMjQ1LCAyMzcsIDI0NywgMywgNzAsIDIzMSwgNiwgMjQyLCA3NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAKLSAgICAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDI0MiwgNzYsIDIxMiwgNTksIDE1NiwgMjA4LCAKLSAgICAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgCi0gICAgMjQ2LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIyNywgMTc4LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIAotICAgIDEyOSwgODcsIDIyNywgMTc5LCA4NywgMjQxLCAzNSwgNTQsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDcsIDg3LCAyNDEsIDM1LCAKLSAgICA1NCwgNTIsIDIyMiwgMjIxLCAyMjcsIDE3OCwgNTIsIDIyMiwgMjIxLCAyMzcsIDI0NiwgNTIsIDIyMiwgMjIxLCAyMjcsIAotICAgIDE3OSwgMywgMjA2LCAyNDYsIDIzNywgMjQ3LCAyMTksIDIwMCwgMjI3LCAxNzgsIDIzNywgMjQ3LCAyNDgsIDExMCwgMjI3LCAKLSAgICAxNzgsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4NywgMjM3LCAyNDcsIDI0NiwgMTYsIDI0NywgMTM3LCAKLSAgICAyNDUsIDg3LCAyMjcsIDE3OSwgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIAotICAgIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMTIsIDM1LCAyMDksIDk3LCAKLSAgICAyMjgsIDYsIDIwOSwgOTcsIDIxMiwgMzUsIDIwOSwgOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjI4LCA2LCAyMDksIDk4LCAKLSAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MSwgMzUsIDIsIDMsIDI0NywgMTcwLCA1NSwgMjE3LCAyNTAsIDg3LCAyMTIsIDExOCwgCi0gICAgMjQxLCAzNSwgNTQsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjE3LCAyNTAsIAotICAgIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyNDEsIDM1LCA1NCwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMTU2LCAKLSAgICAxMzUsIDIxMCwgMjM3LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDI1MSwgNywgMTU2LCAxMzUsIAotICAgIDIxMCwgMjM3LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgCi0gICAgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgNTIsIDIxNywgMjQ5LCA1MiwgMjEwLCAyMzYsIAotICAgIDIxMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMTAsIDE5OCwgMywgMjQzLCA4NSwgMjEwLCAyNDUsIDMsIDkxLCAyLCA1NiwgMjEwLCAKLSAgICAxOTgsIDMsIDkxLCAyLCA1NiwgMjEwLCAyNDUsIDMsIDIyMywgMjI0LCAyLCA1NiwgMjEwLCAxOTgsIDMsIDIyMywgMjI0LCAKLSAgICAyLCA1NiwgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMTAsIDE5OCwgNzYsIAotICAgIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMjQ1LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIAotICAgIDE5OCwgNzYsIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTAsIDE5OCwgCi0gICAgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMjQ1LCA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMTk4LCAKLSAgICA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMjQ1LCA3NiwgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAotICAgIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCA1MSwgNDksIDE3MSwgOTgsIDIxOSwgMjU0LCA1MSwgNTAsIDE3MSwgOTgsIAotICAgIDIxOSwgMjU0LCAyNDYsIDE2LCAyMTAsIDI0NCwgMjQ2LCAxNiwgMjEwLCAxOTcsIDI0NiwgMTYsIDIxMCwgMjQ1LCAyMTksIAotICAgIDI0NSwgMTU2LCAxMzUsIDI0NiwgMTYsIDIxMCwgMTk4LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMjQ1LCA4NywgMjEwLCAKLSAgICAxOTcsIDIxMCwgMTk4LCA4NywgMjEwLCAyNDQsIDIxMCwgMjQ1LCA4NywgMjEwLCAyNDQsIDIxMCwgMTk4LCA4NywgMjEwLCAKLSAgICAxOTcsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjEwLCAyNDQsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDI0NywgCi0gICAgMTM3LCAyNDQsIDE0NSwgMywgMjEwLCAyNDQsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyNDIsIDY4LCAyMTgsIDEwNCwgMywgCi0gICAgMjA5LCAxNzcsIDIwOCwgMTQ0LCAyMDgsIDEwMiwgMjMwLCAyNDQsIDIzOSwgMTYwLCAyMjEsIDE4MSwgMjEyLCAyMjgsIDQ5LCAKLSAgICAyMTAsIDMsIDIxMiwgMjI4LCAxMjEsIDIxMCwgMywgMjEyLCAyMjgsIDExMiwgMjEwLCAzLCAyMTgsIDIzNCwgMywgMTk0LCAKLSAgICA4MCwgMjQ4LCAyMzEsIDIwOCwgNzAsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNDksIDIwNywgMTczLCA4MCwgCi0gICAgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDE2MywgMjQ0LCAKLSAgICAxNDUsIDIzOSwgMTIwLCA0OSwgMjI0LCAyNDUsIDc2LCA1MiwgMjA2LCAzOCwgMjEyLCAyMjgsIDEyMSwgMjEwLCA0LCAzLCAKLSAgICAyMTksIDIwMywgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCAzLCAyMDYsIDI0NiwgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCA4NywgCi0gICAgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCA1MiwgMTIxLCAyMTAsIDMsIDUyLCAxMTIsIDIxMCwgMywgNTIsIDIxMSwgMzIsIAotICAgIDIyMSwgMTY2LCA1NCwgMjE2LCA3MywgNTIsIDIxMSwgMzIsIDIyMSwgMTY2LCA1NCwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKLSAgICAyNDMsIDE0NCwgMywgMjE2LCA3MywgMjIyLCAyMzMsIDIxMiwgNTcsIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTUsIAotICAgIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTYsIDEyMSwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NiwgMjE5LCA4MiwgMywgCi0gICAgMjM2LCAxMDYsIDk1LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ4LCAKLSAgICA2NywgMjE2LCAxMTcsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDk1LCAyMDgsIDcwLCAyNDUsIDI0MywgCi0gICAgMjE5LCAyNTQsIDIwOCwgNzAsIDIyMiwgMjIxLCAyMjcsIDE3OCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIzNywgMjQ2LCAyNDIsIAotICAgIDc2LCAyMTIsIDU5LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDIsIDc2LCAyMTIsIDU5LCAyMzcsIDI0NywgCi0gICAgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMDgsIDcwLCAyMTIsIDEsIDI0OCwgNjcsIDIxNiwgMTE3LCAyMjgsIDgsIDIwOCwgNzAsIAotICAgIDgwLCAyNDgsIDIzMSwgMjE5LCAyNTQsIDUyLCAyMTIsIDEsIDIxOSwgMjU0LCA2MSwgODAsIDE0MiwgMjIzLCAxNjIsIDYxLCAKLSAgICA4MCwgMTQyLCAxNTMsIDI0MSwgMTc2LCA2MSwgNDcsIDE1MywgMjA0LCA0NiwgNjEsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDYxLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYxLCA0NywgNDksIDUwLCA2MSwgNDcsIDk2LCA2MiwgNDcsIDE3NywgNjIsIAotICAgIDQ3LCAxODMsIDYyLCA0NywgMTUzLCAyNDEsIDE3NiwgNjIsIDQ3LCAxNTMsIDIwNCwgNDYsIDYyLCA0NywgMjExLCAyMzgsIAotICAgIDI0MSwgMTc2LCA2MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA2MiwgNDcsIDQ5LCA1MCwgNjIsIDQ3LCAxMTIsIDEyMSwgCi0gICAgNjIsIDQ3LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgOTYsIAotICAgIDUzLCAzLCAyMDgsIDIxMSwgMjQyLCA2OCwgOTYsIDUzLCAzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDUxLCAzLCAyMDgsIDE0NSwgCi0gICAgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIwNiwgMjIxLCA1MCwgMjQzLCAKLSAgICAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIAotICAgIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjA4LCAKLSAgICAxNDUsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDI0NywgMjQ4LCAxNjIsIDI0OCwgNDMsIDI0MiwgODMsIDIxMSwgCi0gICAgMTc3LCA2MiwgMjI4LCA4LCAyMTEsIDE3NywgNjEsIDIyOCwgOCwgMjExLCAxNzcsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKLSAgICAxNzcsIDYxLCAyMDUsIDI0MiwgNSwgMjExLCAxNzcsIDYyLCAyMTgsIDI1NSwgNjEsIDIxOCwgMjU1LCA2MSwgMjM3LCAxNywgCi0gICAgNjIsIDIzNywgMTcsIDIzNiwgMTA2LCA2MiwgMjM3LCAxNywgNjIsIDIyOCwgOCwgMjQ2LCA2MSwgNjIsIDIyNSwgMTAsIAotICAgIDI0MywgMjIxLCA2MSwgMjI1LCAxMCwgMjQzLCAyMjEsIDYyLCAyMjUsIDEwLCAyMjYsIDI0NiwgNjEsIDIyNSwgMTAsIDIyNiwgCi0gICAgMjQ2LCA2MiwgNSwgMjQzLCAyMjEsIDYyLCA1LCAyMjYsIDI0NiwgNjEsIDUsIDIyNiwgMjQ2LCA2MiwgMjM2LCAxMDYsIAotICAgIDI0MSwgMTA5LCA2MSwgMjM2LCAxMDYsIDI0MSwgMTA5LCA2MiwgODAsIDI0MSwgMTA5LCA2MSwgODAsIDI0MSwgMTA5LCA0OSwgCi0gICAgNTMsIDMsIDUsIDI0NiwgNjEsIDEyNiwgOTYsIDI1MCwgOTEsIDQ5LCA1MywgMywgNDMsIDIxOCwgNzYsIDE2MywgOTYsIAotICAgIDIxMSwgMTcxLCA0NywgOTYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIAotICAgIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgMTQyLCA5NiwgMjA3LCAxMzQsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgCi0gICAgOTYsIDUzLCAzLCAyNDIsIDgzLCAyMTEsIDc3LCA5NiwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCA1MywgMywgCi0gICAgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ4LCA5NiwgMjA3LCAxMzQsIDUzLCAKLSAgICAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIAotICAgIDUzLCAyMDksIDI1LCAyMDMsIDE5NiwgMjA0LCA3NiwgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMjcsIDIyMiwgMjQxLCAzNSwgCi0gICAgMiwgODcsIDk2LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyMTYsIAotICAgIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCA4NiwgNTMsIDIwOSwgMjUsIDIzNywgMjQ2LCA4NiwgNTMsIDIwOSwgMjUsIDIxMCwgCi0gICAgMTk3LCA5NiwgMjE3LCA1OCwgNDcsIDg2LCAyMTcsIDU4LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgCi0gICAgODYsIDQ3LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKLSAgICA5NiwgNDcsIDk2LCA1MywgODcsIDI1MSwgNywgMTU2LCAxMzUsIDk2LCA1MywgODcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIAotICAgIDI1NCwgODYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU0LCAxODMsIDIwOCwgODQsIDIwMiwgMzAsIDQ3LCAKLSAgICAyMTIsIDIyOCwgMjEyLCA1OSwgMTUzLCA0NywgMjEyLCAyMjgsIDI0OSwgMjIsIDIxMSwgMjM4LCA0NywgNjEsIDIyNSwgMTAsIAotICAgIDIxMSwgOTQsIDYyLCA1LCAyMTEsIDk0LCA2MSwgNSwgMjExLCA5NCwgNjIsIDIxNiwgMTEsIDIxOCwgMjU1LCA2MSwgMjE2LCAKLSAgICAxMSwgMjE4LCAyNTUsIDc5LCAyMjgsIDgsIDI0NiwgNjEsIDc5LCAyMTksIDIwNSwgMywgMjE5LCAyMDUsIDIzMSwgNiwgNzksIAotICAgIDI0NiwgNjIsIDMsIDI0NiwgNjIsIDIzMSwgNiwgNzksIDI0NiwgNjEsIDc5LCA0MywgMjE0LCAyNTQsIDIxMiwgNTksIDE1MywgCi0gICAgNTMsIDMsIDIzNiwgMTE1LCAyMzcsIDY0LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgMTE1LCAyMDksIDI0OCwgCi0gICAgMjEyLCA1OSwgMTUzLCA1MywgMywgMjM2LCAxMDYsIDIwOSwgMjQ4LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgCi0gICAgMTA2LCAyMDksIDI0OCwgMjQ4LCAxMTgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDE1MywgMjQxLCAxNzUsIDIxMiwgCi0gICAgMjI4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgOTYsIDIwOCwgODQsIDQ3LCAKLSAgICAxNzcsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNDcsIDQ5LCA1MCwgMjA4LCA4NCwgNDcsIAotICAgIDExMiwgMTIxLCAyMDgsIDg0LCA0NywgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgMTUzLCAyNDEsIDE3NiwgMjA4LCA4NCwgCi0gICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgOTYsIAotICAgIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgMTc3LCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDg2LCAyMDgsIDg0LCAyNDQsIDE0MywgCi0gICAgNDcsIDE4MywgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAyNDYsIDE4LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNTAsIAotICAgIDE5NCwgMjA4LCA4NCwgMTcxLCAyNDYsIDYyLCA0NywgOTYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIwOCwgCi0gICAgODQsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE4MywgMjA4LCA4NCwgNTMsIAotICAgIDIwOCwgMTczLCAxNDIsIDE1MywgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE1MywgMjQxLCAxNzYsIAotICAgIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgCi0gICAgMTQyLCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDk2LCAyMDgsIDg0LCA1MywgMywgCi0gICAgNTIsIDIzNiwgMTA2LCA5NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgNTIsIDIzNiwgMTA2LCA5NSwgODYsIDIwOCwgODQsIDUzLCAKLSAgICAzLCA1MiwgMjM2LCAxMDYsIDk1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCAyMzYsIDEwNiwgCi0gICAgMjEwLCAxMSwgMjI5LCAxNTEsIDgwLCAyMTAsIDExLCAyMjksIDE1MSwgOTYsIDIwOCwgODQsIDUzLCAxMTUsIDg2LCAyMDgsIAotICAgIDg0LCA0NywgMTc3LCAyMDgsIDg0LCA1MywgOTYsIDc2LCAxODMsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNTMsIDExNSwgCi0gICAgOTYsIDIwOCwgODQsIDQ3LCAxODMsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE3NywgMjA4LCA4NCwgNDcsIDk2LCAyMDgsIDg0LCAKLSAgICAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMDgsIDg0LCAyMTksIDE0NiwgMjUwLCA5MSwgODYsIDIwOCwgODQsIDIxOSwgCi0gICAgMTQ2LCAyNTAsIDkxLCAxODMsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgNjIsIDQzLCA2MSwgNDcsIDE3NywgCi0gICAgNjIsIDQzLCA2MSwgNDcsIDg2LCA2MiwgNDMsIDYxLCA0NywgMTgzLCA2MiwgNDMsIDYxLCA0NywgMjUwLCAxOTQsIDIwOCwgCi0gICAgODQsIDUwLCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDI0NywgMjQ4LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIAotICAgIDIwOCwgODQsIDQ5LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDIwOCwgMTQ1LCAyMDcsIDkyLCA0NywgMjE2LCAKLSAgICA3OCwgMjI3LCAyMjIsIDIxNiwgNzgsIDIxNiwgMTYsIDIyMiwgMjEyLCAyMjcsIDIyMiwgMjIyLCAyMTIsIDIxNiwgMTYsIAotICAgIDIzOSwgMTQ3LCAyNDUsIDE2NiwgMjUwLCA5MiwgMjQ2LCA1NywgMjUwLCAxOTMsIDg2LCA2MiwgNDcsIDIwOSwgMzEsIDIwOCwgCi0gICAgMTQzLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjE2LCAxMiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIAotICAgIDMxLCAyMDgsIDE0MywgODYsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgMzEsIDIyNywgMjE4LCAxODMsIDI0MSwgMzEsIDI1MCwgCi0gICAgOTQsIDYyLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDE3NywgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDg2LCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA2MiwgMTgzLCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAKLSAgICAyMjcsIDIxMiwgMTgzLCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAxNzcsIDIwOCwgODQsIDUzLCAKLSAgICAzLCAxNjMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTc3LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAKLSAgICA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIwNiwgMjEyLCA4NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgCi0gICAgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCAyMDgsIAotICAgIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDk2LCA0NywgNjIsIDI0NSwgCi0gICAgODYsIDE4MywgMjUsIDg2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIDk2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIAotICAgIDg2LCA0NywgNjIsIDI0NSwgODYsIDk2LCAyNSwgMTc3LCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTc3LCA0NywgNjIsIAotICAgIDI0NSwgODYsIDk2LCAyNSwgMTgzLCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTgzLCA0NywgMjE2LCA1NSwgNTMsIDEyMSwgCi0gICAgMjI3LCAyMjIsIDIxNiwgNTUsIDUzLCAxMjEsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCAxMTIsIDIyNywgMjIyLCAyMTYsIDU1LCAKLSAgICA1MywgMTEyLCAyMTYsIDE2LCAyMTYsIDU1LCA1MywgNDksIDIwNiwgMjI0LCAyMTYsIDU1LCA1MywgNTAsIDIwNiwgMjI0LCAKLSAgICAyMTYsIDU1LCA1MywgNDksIDI0MiwgNzAsIDIxNiwgNTUsIDUzLCA1MCwgMjQyLCA3MCwgMTc3LCA2MSwgNTMsIDIzOSwgCi0gICAgMTIwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDE0MiwgMTEyLCAyNTAsIDk1LCAyMzEsIDUwLCAzNCwgMjE2LCAxNDQsIAotICAgIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDE1NywgMjAzLCAxOTYsIDQzLCAyMDMsIDE5NiwgNDMsIDI2LCAyMDMsIDE5NiwgCi0gICAgNjIsIDUxLCAyNDYsIDIxNSwgNjIsIDI0MywgMjIyLCAyNDYsIDIxNSwgMjA3LCAxNzQsIDYyLCAyMTgsIDI1NSwgMjM2LCAKLSAgICAxMDYsIDYyLCAyMjAsIDgxLCA2MiwgMjIwLCA4MSwgNjIsIDIyNSwgMTAsIDIwNiwgMjIzLCAyMDgsIDg2LCAyNDYsIDIxNSwgCi0gICAgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODYsIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjI3LCAyMTcsIDIwOCwgODYsIAotICAgIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDIwOCwgMTQ1LCAxNjIsIDYyLCAKLSAgICAyNDYsIDYxLCAyNDcsIDI0OCwgMTYyLCA2MiwgMjQ2LCA2MSwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDI0NSwgODIsIAotICAgIDIxNSwgMTk4LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAKLSAgICAyNDUsIDgyLCAyMTUsIDE5OCwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyNDUsIDgyLCA1MSwgMjE4LCAzNCwgMjMxLCAzMSwgCi0gICAgMjA2LCAyNTAsIDU0LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxNzcsIDIwNywgMTM0LCA1MywgCi0gICAgMywgMjA4LCA4NiwgMjUwLCA5MywgODYsIDIwNywgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgzLCAyMDcsIAotICAgIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE4MCwgNiwgMSwgMjUwLCAwLCAxODAsIDYsIDEsIDI0NywgMTgxLCAKLSAgICAxODAsIDYsIDEsIDIwNiwgNTMsIDE4MCwgNiwgMSwgMjM4LCA1MCwgMTgwLCA2LCAxLCAyNDMsIDEwOCwgMTgwLCA2LCAxLCAKLSAgICAyMDMsIDI0LCAxODAsIDYsIDEsIDIwMiwgNjQsIDE4MCwgNiwgMSwgMjQxLCAyNTAsIDE4MCwgNiwgMSwgMjAyLCA4OSwgCi0gICAgMTgwLCA2LCAxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA4MSwgMjMwLCAxODgsIDE4MCwgNiwgMSwgNzUsIDE4MCwgNiwgMSwgCi0gICAgMjQzLCAxMjgsIDE4MCwgNiwgMSwgMjMwLCAxMCwgMTgwLCA2LCAxLCAyMjcsIDc5LCAxODAsIDYsIDEsIDIyMywgMTY3LCAKLSAgICAxODAsIDYsIDEsIDIyMywgNjksIDE4MCwgNiwgMSwgMjIwLCAyMCwgMTgwLCA2LCAxLCAyMTgsIDU2LCAxODAsIDYsIDEsIAotICAgIDIxNSwgMjQ0LCAxODAsIDYsIDEsIDIxMiwgNDEsIDE4MCwgNiwgMSwgMjA3LCAxNjEsIDE4MCwgNiwgMSwgMjA3LCAxMCwgCi0gICAgMTgwLCA2LCAxLCAyMzksIDEyMywgMTgwLCA2LCAxLCAyMzcsIDIzLCAxODAsIDYsIDEsIDIxOSwgMjE3LCAxODAsIDYsIDEsIAotICAgIDIxOSwgMzQsIDE4MCwgNiwgMSwgMjEyLCAyMDIsIDE4MCwgNiwgMSwgMjA3LCAyNTUsIDE4MCwgNiwgMSwgMjQ2LCAxMDQsIAotICAgIDE4MCwgNiwgMSwgMjEzLCA5MCwgMTgwLCA2LCAxLCAyMDMsIDMwLCAxODAsIDYsIDEsIDIwMywgMzIsIDE4MCwgNiwgMSwgCi0gICAgMjAzLCA2NCwgMTgwLCA2LCAxLCAyMTEsIDIwNCwgMTUyLCAxODAsIDYsIDEsIDIwMiwgMjEzLCAxODAsIDYsIDEsIDUsIAotICAgIDIwMiwgMTgzLCAxODAsIDYsIDEsIDUsIDIwMiwgMTg0LCAzLCAyMDksIDI0OCwgMTgwLCA2LCAxLCAyMDIsIDI0NywgMTgwLCAKLSAgICA2LCAxLCAyMzAsIDIyOSwgNSwgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgCi0gICAgMjMwLCAyMjksIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDYsIDEsIDIzOSwgMjM1LCAxODAsIDYsIDEsIDIzMCwgMTg2LCAKLSAgICAxODAsIDYsIDEsIDIxMiwgMjAxLCAxODAsIDYsIDEsIDIwOCwgNjAsIDYzLCAxODAsIDYsIDEsIDIyNywgMjUyLCAyMjMsIAotICAgIDE2NywgMTgwLCA1LCAxLCAyNTAsIDAsIDE4MCwgNSwgMSwgMjQ3LCAxODEsIDE4MCwgNSwgMSwgMjA2LCA1MywgMTgwLCA1LCAKLSAgICAxLCAyMzgsIDUwLCAxODAsIDUsIDEsIDI0MywgMTA4LCAxODAsIDUsIDEsIDIwMywgMjQsIDE4MCwgNSwgMSwgMjAyLCA2NCwgCi0gICAgMTgwLCA1LCAxLCAyNDEsIDI1MCwgMTgwLCA1LCAxLCAyMDIsIDg5LCAxODAsIDUsIDEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIAotICAgIDgxLCAyMzAsIDE4OCwgMTgwLCA1LCAxLCA3NSwgMTgwLCA1LCAxLCAyNDMsIDEyOCwgMTgwLCA1LCAxLCAyMzAsIDEwLCAKLSAgICAxODAsIDUsIDEsIDIyNywgNzksIDE4MCwgNSwgMSwgMjIzLCAxNjcsIDE4MCwgNSwgMSwgMjIzLCA2OSwgMTgwLCA1LCAxLCAKLSAgICAyMjAsIDIwLCAxODAsIDUsIDEsIDIxOCwgNTYsIDE4MCwgNSwgMSwgMjE1LCAyNDQsIDE4MCwgNSwgMSwgMjEyLCA0MSwgCi0gICAgMTgwLCA1LCAxLCAyMDcsIDE2MSwgMTgwLCA1LCAxLCAyMDcsIDEwLCAxODAsIDUsIDEsIDIzOSwgMTIzLCAxODAsIDUsIDEsIAotICAgIDIzNywgMjMsIDE4MCwgNSwgMSwgMjE5LCAyMTcsIDE4MCwgNSwgMSwgMjE5LCAzNCwgMTgwLCA1LCAxLCAyMTIsIDIwMiwgCi0gICAgMTgwLCA1LCAxLCAyMDcsIDI1NSwgMTgwLCA1LCAxLCAyNDYsIDEwNCwgMTgwLCA1LCAxLCAyMTMsIDkwLCAxODAsIDUsIDEsIAotICAgIDIwMywgMzAsIDE4MCwgNSwgMSwgMjAzLCAzMiwgMTgwLCA1LCAxLCAyMDMsIDY0LCAxODAsIDUsIDEsIDIxMSwgMjA0LCAKLSAgICAxNTIsIDE4MCwgNSwgMSwgMjAyLCAyMTMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODQsIAotICAgIDMsIDIwOSwgMjQ4LCAxODAsIDUsIDEsIDIwMiwgMjQ3LCAxODAsIDUsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCAKLSAgICA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAxLCAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNSwgCi0gICAgMSwgMjM5LCAyMzUsIDE4MCwgNSwgMSwgMjMwLCAxODYsIDE4MCwgNSwgMSwgMjEyLCAyMDEsIDE4MCwgNSwgMSwgMjA4LCAKLSAgICA2MCwgNjMsIDE4MCwgNSwgMSwgMjI3LCAyNTIsIDIyMywgMTY3LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxNDIsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NSwgMywgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIDM0LCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjEwLCA3MCwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjM3LCAKLSAgICAxNzIsIDMsIDI0NCwgMjAsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NCwgCi0gICAgMjAsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ0LCAyMCwgOCwgNiwgCi0gICAgMSwgMjUxLCAyLCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgMTEzLCA4LCA2LCAxLCAyMDcsIDE3NCwgNjMsIDgsIDYsIDEsIAotICAgIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA1MCwgMTEzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgCi0gICAgMTEzLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQ1LCA5NSwgOCwgNiwgMSwgCi0gICAgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMjA5LCAyNDYsIDIxOCwgMTkyLCA4LCA1LCAKLSAgICAxLCAxODgsIDMsIDIyMSwgMTYzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAxMjQsIDIxNSwgMjUzLCAyMzEsIDYsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCA3NCwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjA2LCAxNjQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgCi0gICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgODQsIDYsIDEsIDI1MSwgMjQsIDg0LCA1LCAxLCAKLSAgICAyNTEsIDI0LCA4NCwgNiwgMSwgMjA1LCAyMjcsIDg0LCA1LCAxLCAyMDUsIDIyNywgODQsIDYsIDEsIDIzOCwgMjM1LCA4NCwgCi0gICAgNSwgMSwgMjM4LCAyMzUsIDg0LCA2LCAxLCAyNDQsIDE4MCwgODQsIDUsIDEsIDI0NCwgMTgwLCA4NCwgNiwgMSwgMjQxLCAKLSAgICAxNDQsIDg0LCA1LCAxLCAyNDEsIDE0NCwgODQsIDYsIDEsIDIxMSwgMjQzLCA4NCwgNSwgMSwgMjExLCAyNDMsIDg0LCA2LCAKLSAgICAxLCAyMDIsIDk5LCA4NCwgNSwgMSwgMjAyLCA5OSwgODQsIDYsIDEsIDIzNywgODAsIDg0LCA1LCAxLCAyMzcsIDgwLCA4NCwgCi0gICAgNiwgMSwgMjA5LCA3MiwgODQsIDUsIDEsIDIwOSwgNzIsIDg0LCA2LCAxLCAyMzUsIDE2OCwgODQsIDUsIDEsIDIzNSwgMTY4LCAKLSAgICA4NCwgNiwgMSwgMjI5LCAyNTIsIDg0LCA1LCAxLCAyMjksIDI1MiwgODQsIDYsIDEsIDIyNywgMjQ4LCA4NCwgNSwgMSwgCi0gICAgMjI3LCAyNDgsIDg0LCA2LCAxLCAyMjQsIDE1NSwgODQsIDUsIDEsIDIyNCwgMTU1LCA4NCwgNiwgMSwgMjIyLCAxMDAsIDg0LCAKLSAgICA1LCAxLCAyMjIsIDEwMCwgODQsIDYsIDEsIDIyOCwgMjI1LCA4NCwgNSwgMSwgMjI4LCAyMjUsIDg0LCA2LCAxLCA3OCwgODQsIAotICAgIDUsIDEsIDc4LCA4NCwgNiwgMSwgMjE4LCAxNjcsIDg0LCA1LCAxLCAyMTgsIDE2NywgODQsIDYsIDEsIDIxNSwgMjI3LCA4NCwgCi0gICAgNSwgMSwgMjE1LCAyMjcsIDg0LCA2LCAxLCAyMTIsIDEzMiwgODQsIDUsIDEsIDIxMiwgMTMyLCA4NCwgNiwgMSwgMjA5LCAKLSAgICAyMDcsIDg0LCA1LCAxLCAyMDksIDIwNywgODQsIDYsIDEsIDIwNywgMzksIDg0LCA1LCAxLCAyMDcsIDM5LCA4NCwgNiwgMSwgCi0gICAgMjQwLCAyNiwgODQsIDUsIDEsIDI0MCwgMjYsIDg0LCA2LCAxLCAyMjksIDEyMiwgODQsIDUsIDEsIDIyOSwgMTIyLCA4NCwgCi0gICAgNiwgMSwgMjE3LCAyMDIsIDg0LCA1LCAxLCAyMTcsIDIwMiwgODQsIDYsIDEsIDIyMCwgMTIsIDg0LCA1LCAxLCAyMjAsIDEyLCAKLSAgICA4NCwgNiwgMSwgMjQzLCAyMjYsIDI1MSwgMzAsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDYsIDEsIDM4LCAKLSAgICA4NCwgMjUxLCA1OSwgODQsIDUsIDEsIDM4LCA4NCwgMjUxLCA1OSwgODQsIDYsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIAotICAgIDUsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjksIDI1MiwgODQsIDUsIDEsIDI0MywgCi0gICAgMjI2LCAyMjksIDI1MiwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyMjIsIAotICAgIDEwMCwgODQsIDYsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDYsIAotICAgIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDUsIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDYsIDEsIDIxNCwgMjQ2LCA4NCwgNSwgCi0gICAgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyNDUsIDEyOCwgMjEzLCAzNSwgODQsIDUsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCAKLSAgICA4NCwgNiwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNiwgMSwgMzgsIDg0LCAKLSAgICAyNDEsIDcsIDg0LCA1LCAxLCAzOCwgODQsIDI0MSwgNywgODQsIDYsIDEsIDI1MSwgNDMsIDIyOSwgMTI3LCA4NCwgNSwgMSwgCi0gICAgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjM2LCAKLSAgICAxMDcsIDg0LCA2LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMzgsIDg0LCAyMzYsIDEwNywgODQsIDYsIDEsIAotICAgIDM4LCA4NCwgMTUyLCA4NCwgNSwgMSwgMzgsIDg0LCAxNTIsIDg0LCA2LCAxLCAyMjgsIDEzMCwgMTUyLCA4NCwgNSwgMSwgCi0gICAgMjI4LCAxMzAsIDE1MiwgODQsIDYsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIAotICAgIDYsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDYsIDEsIDM4LCA4NCwgMjM4LCAKLSAgICAyMzAsIDg0LCA1LCAxLCAzOCwgODQsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDUsIDEsIAotICAgIDM4LCA4NCwgMjQzLCAxMzEsIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgCi0gICAgNiwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMTMsIDEsIDg0LCA2LCAxLCAzOCwgCi0gICAgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA2LCAxLCAzOCwgMjIxLCAKLSAgICA1NCwgMjIwLCAyNDgsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIwLCAyNDgsIDg0LCA2LCAxLCAzOCwgMjIxLCA1NCwgCi0gICAgMjA0LCA3NywgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMDQsIDc3LCA4NCwgMTYsIDIzMCwgMTgsIDg0LCAxNiwgMjI0LCAKLSAgICAxNTYsIDIxNSwgMjI3LCA4NCwgMTYsIDIxOCwgMTY4LCAyMTUsIDIyNywgODQsIDE2LCAyMTEsIDg1LCA4NCwgMTYsIDIwOSwgCi0gICAgMjA4LCAyMTUsIDIyNywgODQsIDE2LCAyMjksIDEyMywgMjE1LCAyMjcsIDg0LCAxNiwgMjEzLCAyLCAyMTIsIDEzMiwgODQsIAotICAgIDYsIDEsIDI0NSwgMTEzLCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA2LCAxLCAyNDUsIDExMywgCi0gICAgMjM4LCAyMzAsIDg0LCA1LCAxLCAyNDUsIDExMywgMjM4LCAyMzAsIDg0LCAzOSwgMjIyLCAxMDEsIDU1LCA4NCwgMzksIAotICAgIDIxMSwgMTk3LCAyNTAsIDY3LCA4NCwgMzksIDIxMSwgMTk3LCAyMjcsIDE4NiwgODQsIDYsIDEsIDI0OCwgMTYsIDIyOSwgCi0gICAgMTI3LCA4NCwgNSwgMSwgMjQ4LCAxNiwgMjI5LCAxMjcsIDg0LCAzOCwgMjIxLCA1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDg0LCAKLSAgICAzOCwgMjIxLCA1NCwgMjQzLCAxNjcsIDIxNywgNDcsIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIzMSwgMzAsIDIxNywgNDcsIAotICAgIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIwNiwgNDAsIDI0MywgMTQxLCA4NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDg0LCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgODQsIDIyNCwgMjUsIDI0MywgMTQxLCAxMTQsIDUsIDEsIDI1MCwgMjMxLCAxMTQsIDUsIDEsIAotICAgIDI0OCwgMjQyLCAxMTQsIDUsIDEsIDIzOCwgMjM0LCAxMTQsIDUsIDEsIDI0MywgOTMsIDExNCwgNSwgMSwgMjQxLCA5MiwgCi0gICAgMTE0LCA1LCAxLCAyMDUsIDIxMywgMTE0LCA1LCAxLCAyMDIsIDg3LCAxMTQsIDUsIDEsIDIwOSwgMjMwLCAxMTQsIDUsIDEsIAotICAgIDIzMSwgNDksIDExNCwgNSwgMSwgMjMwLCA0LCAxMTQsIDUsIDEsIDIyOCwgMiwgMTE0LCA1LCAxLCAyMjUsIDEyMiwgMTE0LCAKLSAgICA1LCAxLCAyMjMsIDc0LCAxMTQsIDUsIDEsIDIyMCwgMzEsIDExNCwgNSwgMSwgMjE5LCA5MSwgMTE0LCA1LCAxLCAyMDIsIAotICAgIDc2LCAxMTQsIDUsIDEsIDIxNiwgMjAyLCAxMTQsIDUsIDEsIDIxNCwgMjQzLCAxMTQsIDUsIDEsIDIwOSwgMjE4LCAxMTQsIAotICAgIDUsIDEsIDIwNiwgMjU1LCAxMTQsIDUsIDEsIDIxOCwgMjAwLCAxMTQsIDUsIDEsIDIyOSwgMTMyLCAxMTQsIDUsIDEsIDIzOCwgCi0gICAgMTEwLCAxMTQsIDUsIDEsIDIxNywgMTExLCAxMTQsIDUsIDEsIDIxMiwgMjU1LCAxMTQsIDUsIDEsIDI0NiwgMTI5LCAxMTQsIAotICAgIDUsIDEsIDI0NywgNjEsIDExNCwgNSwgMSwgMjMwLCAxMzMsIDExNCwgNSwgMSwgMjQ2LCA2OCwgMTE0LCA1LCAxLCAyNDYsIAotICAgIDE4MywgMTE0LCA1LCAxLCAyMDMsIDE4MCwgMTE0LCA1LCAxLCAyMzAsIDE0NiwgMTE0LCA1LCAxLCAyMzcsIDE1NCwgMTE0LCAKLSAgICA1LCAxLCAyMzcsIDY3LCAxMTQsIDUsIDEsIDIzNiwgMjU0LCAxMTQsIDUsIDEsIDIwNCwgNjIsIDExNCwgNSwgMSwgMjM3LCAKLSAgICA5MiwgMTE0LCA1LCAxLCAyMzYsIDEzMiwgMTE0LCA1LCAxLCAyMDIsIDI0OSwgMTE0LCA1LCAxLCAyNTEsIDk4LCAyMDgsIAotICAgIDI0NywgMSwgMTk4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDYsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNSwgMjA4LCAyNDcsIDEsIAotICAgIDIwMywgOTUsIDIwOCwgMjQ3LCAxLCAyMDMsIDkzLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAyMDMsIDg4LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA4OCwgMjA4LCAyNDcsIDEsIDIwMywgMTAzLCAyMDgsIDI0NywgMSwgMjAzLCAxMDAsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDEwMiwgMjA4LCAyNDcsIDEsIDIwMywgMTAxLCAyMDgsIDI0NywgMSwgMjAzLCAxNSwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgOTcsIDIwOCwgMjQ3LCAxLCAyMDMsIDg2LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODYsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDgzLCAyMDgsIDI0NywgMSwgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDI0OCwgMTEyLCAyNTEsIDE0MCwgCi0gICAgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjAzLCA5MCwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgMTEwLCAyMDgsIDI0NywgMSwgMjAzLCA4NCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDg0LCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCA3MywgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjAzLCAxMSwgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyNTEsIDcxLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjA3LCAKLSAgICAyMDAsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDgyLCAyMDgsIDI0NywgMSwgMjAzLCA4MSwgMjA4LCAyNDcsIDEsIAotICAgIDIwMywgNzgsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5MiwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDc2LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA3NCwgMjA4LCAyNDcsIDEsIDIwMiwgMjEzLCAyMDgsIDI0NywgMSwgMjAzLCA3MSwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgNzAsIDIwOCwgMjQ3LCAxLCAyMDMsIDk0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTQsIAotICAgIDIwOCwgMjQ3LCAxLCAyNTAsIDQsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDY5LCAyMDgsIDI0NywgMSwgMjAzLCA2NywgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgNjgsIDIwOCwgMjQ3LCAxLCAyMDMsIDY2LCAyMDgsIDI0NywgMSwgMjAzLCA2NSwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgMTA0LCAyMDgsIDI0NywgMSwgMjAzLCA2MywgMjA4LCAyNDcsIDEsIDIwMywgNjEsIDIwOCwgMjQ3LCAKLSAgICAxLCAyMDMsIDYwLCAyMDgsIDI0NywgMSwgMjAzLCA1OCwgMjA4LCAyNDcsIDEsIDIwMywgNTUsIDIwOCwgMjQ3LCAxLCAyMDksIAotICAgIDE5OSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwMywgNTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDUyLCAyMDgsIDI0NywgMSwgCi0gICAgMjAyLCAyNDcsIDIwOCwgMjQ3LCA2NSwgMSwgMjI4LCAxMDMsIDgyLCAyMDgsIDI0NywgMjEzLCAxMzEsIDgyLCAyMDgsIAotICAgIDI0NywgMTA5LCAyMzAsIDk2LCAzMywgNCwgMjI3LCA0OCwgMzMsIDQsIDIyNCwgODEsIDMzLCA0LCAyMTUsIDIyNSwgMzMsIAotICAgIDQsIDIxMiwgMTIsIDMzLCA0LCAyMTIsIDI0MSwgMzMsIDQsIDI0OCwgMjIsIDMzLCA0LCAyMDgsIDE3MiwgMzMsIDQsIDI0NSwgCi0gICAgMjUzLCAzMywgNCwgMjIxLCAxODksIDMzLCA0LCAyMjAsIDIzMiwgMzMsIDQsIDIzOCwgNDUsIDIyMCwgOTcsIDMzLCA0LCAKLSAgICAyMDIsIDE2LCAzMywgNCwgMjQzLCAxMTEsIDMzLCA0LCAyNDQsIDg5LCAzMywgNCwgMjMwLCAxMDAsIDMzLCA0LCAyMDksIAotICAgIDQ2LCAzMywgNCwgMjQ2LCAxMTUsIDMzLCA0LCAyMTgsIDE3OSwgMzMsIDQsIDIxOCwgNjgsIDMzLCA0LCAyMzgsIDEyNSwgCi0gICAgMzMsIDQsIDIzOCwgMTIxLCAzMywgNCwgMjM4LCAxMjIsIDMzLCA0LCAyMzgsIDEyMywgMzMsIDQsIDIxMSwgMTY0LCAzMywgCi0gICAgNCwgMjExLCAxMTksIDMzLCA0LCAyMTEsIDEzMiwgMzMsIDQsIDIxMSwgMTYzLCAzMywgNCwgMjExLCAxMzcsIDMzLCA0LCAKLSAgICAyMTEsIDEzOCwgMzMsIDQsIDIxMSwgMTI0LCAzMywgNCwgMjQ3LCA1LCAzMywgNCwgMjQ2LCAyNDAsIDMzLCA0LCAyNDYsIAotICAgIDI0MiwgMzMsIDQsIDI0NywgNCwgMzMsIDQsIDI0NywgMiwgMzMsIDQsIDI0NywgMywgMzMsIDQsIDI0NiwgMjQxLCAzMywgNCwgCi0gICAgMjAxLCAyMzUsIDMzLCA0LCAyMDEsIDIxMywgMzMsIDQsIDIwMSwgMjI2LCAzMywgNCwgMjAxLCAyMzQsIDMzLCA0LCAyMDEsIAotICAgIDIyOSwgMzMsIDQsIDIwMSwgMjMwLCAzMywgNCwgMjAxLCAyMTgsIDMzLCA0LCAyNDcsIDAsIDMzLCA0LCAyNDYsIDI0MywgCi0gICAgMzMsIDQsIDI0NiwgMjQ1LCAzMywgNCwgMjQ2LCAyNTUsIDMzLCA0LCAyNDYsIDI1MywgMzMsIDQsIDI0NiwgMjU0LCAzMywgCi0gICAgNCwgMjQ2LCAyNDQsIDMzLCA0LCAyMTcsIDEzLCAzMywgNCwgMjE3LCAzLCAzMywgNCwgMjE3LCA5LCAzMywgNCwgMjE3LCAKLSAgICAxMiwgMzMsIDQsIDIxNywgMTAsIDMzLCA0LCAyMTcsIDExLCAzMywgNCwgMjE3LCA4LCAzMywgNCwgMjI4LCAxNDEsIDMzLCAKLSAgICA0LCAyMjgsIDEzMywgMzMsIDQsIDIyOCwgMTM2LCAzMywgNCwgMjI4LCAxNDAsIDMzLCA0LCAyMjgsIDEzNywgMzMsIDQsIAotICAgIDIyOCwgMTM4LCAzMywgNCwgMjI4LCAxMzQsIDMzLCA0LCAyMDMsIDE0MCwgMzMsIDQsIDIwMywgMTI3LCAzMywgNCwgMjAzLCAKLSAgICAxMzUsIDMzLCA0LCAyMDMsIDEzOSwgMzMsIDQsIDIwMywgMTM3LCAzMywgNCwgMjAzLCAxMzgsIDMzLCA0LCAyMDMsIDEzNCwgCi0gICAgMzMsIDQsIDIzNywgMTgzLCAzMywgNCwgMjM3LCAxNzMsIDMzLCA0LCAyMzcsIDE3NiwgMzMsIDQsIDIzNywgMTgyLCAzMywgCi0gICAgNCwgMjM3LCAxNzgsIDMzLCA0LCAyMzcsIDE3OSwgMzMsIDQsIDIzNywgMTc1LCAzOSwgMzYsIDEsIDI0OCwgMTYyLCAzOSwgCi0gICAgMzYsIDEsIDIwNiwgNTUsIDM5LCAzNiwgMSwgMjM4LCAxMDUsIDM5LCAzNiwgMSwgMjQ0LCA3NSwgMzksIDM2LCAxLCAyMDIsIAotICAgIDcxLCAzOSwgMzYsIDEsIDIwMiwgOTIsIDM5LCAzNiwgMSwgMTczLCAzOSwgMzYsIDEsIDI0MSwgMTIyLCAzOSwgMzYsIDEsIAotICAgIDI0MSwgMTAzLCAzOSwgMzYsIDEsIDI0MSwgOTIsIDM5LCAzNiwgMSwgNzgsIDM5LCAzNiwgMSwgMjE5LCAzNCwgMzksIDM2LCAKLSAgICAxLCAyNDEsIDI4LCAzOSwgMzYsIDEsIDI0MSwgMTcsIDM5LCAzNiwgMSwgMjA5LCAxODcsIDM5LCAzNiwgMSwgMTUyLCAzOSwgCi0gICAgMzYsIDEsIDIwOCwgMTQsIDM5LCAzNiwgMSwgMjQ2LCAxNzAsIDM5LCAzNiwgMSwgMjEzLCA5MCwgMzksIDM2LCAxLCAyMTMsIAotICAgIDQ2LCAzOSwgMzYsIDEsIDIzOSwgMjM1LCAzOSwgMzYsIDEsIDI0MSwgMTMsIDM5LCAzNiwgMSwgNjMsIDM5LCAzNiwgMSwgCi0gICAgMjMxLCAxMTAsIDM5LCAzNiwgMSwgMjQzLCAxMjksIDM5LCAzNiwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzksIDM2LCAxLCAKLSAgICAyMDMsIDY2LCAzOSwgMzYsIDEsIDIwMiwgMjEzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCA2MywgMzksIDM2LCAxLCAyMjcsIAotICAgIDg2LCAyMDIsIDE4MywgMzksIDM2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzksIDM2LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgCi0gICAgMjAyLCAxODMsIDUwLCAyNTAsIDIxOCwgMjEwLCAyNDEsIDIyNSwgODgsIDUwLCAyNTAsIDIxOCwgMjQyLCA4MywgMjEwLCAKLSAgICAyNDEsIDIyNSwgODgsIDQ5LCAyMTAsIDI0MSwgMTU1LCA1MCwgMjEwLCAyNDEsIDE1NSwgNDksIDI0MiwgODMsIDIxMCwgCi0gICAgMjQxLCAxNTUsIDUwLCAyNDIsIDgzLCAyMTAsIDI0MSwgMTU1LCAyMTYsIDE4OCwgMjMwLCAyNDksIDIyNSwgODgsIDIxNiwgCi0gICAgMTg4LCAyNDIsIDgzLCAyMzAsIDI0OSwgMjI1LCA4OCwgMjQyLCA4MywgMjA4LCAxMDMsIDIyNSwgODgsIDQ5LCAyMDgsIAotICAgIDEwMywgMTU1LCA1MCwgMjA4LCAxMDMsIDE1NSwgMjE2LCAxODgsIDIxMSwgMTc3LCA0OSwgMjE2LCAxODgsIDIyMCwgMzMsIAotICAgIDE1NSwgNTAsIDIxNiwgMTg4LCAyMjAsIDMzLCAxNTUsIDI0MSwgMTYyLCAyNDUsIDE2MywgMjE5LCA4NywgMjM5LCAxNjEsIAotICAgIDIxOSwgODcsIDIxNiwgNzMsIDIzOSwgMTYxLCAyMTksIDg3LCAyMzUsIDIxNywgMjQyLCA4MywgMjIwLCA5MiwgMTgzLCAKLSAgICAyNTAsIDIyNywgMTc3LCAyNTAsIDIyNywgMjQyLCA4MywgMjE2LCAxMSwgMjUwLCAyMTcsIDUyLCAyMjAsIDg5LCAyMzUsIAotICAgIDIyMCwgMjMwLCAyMzksIDIzMCwgMjQ3LCAyMTksIDEzNSwgMjQ3LCAyMjMsIDIzNSwgMjIxLCAzLCAyNDMsIDIzMSwgMjA4LCAKLSAgICAyMjgsIDMsIDIxNSwgMjUzLCA1NSwgNDksIDEyNCwgMjE5LCA3OSwgMTU1LCA1MCwgMTI0LCAyMTksIDc5LCAxNTUsIDIwOCwgCi0gICAgMjI4LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAzLCA3MCwgNTYsIDQ5LCA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDUwLCAKLSAgICA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDIwOCwgMTQ1LCA0OSwgMTYyLCAxNTUsIDIwOCwgMTQ1LCA1MCwgMTYyLCAxNTUsIAotICAgIDI0NywgMjQ4LCA0OSwgMTYyLCAxNTUsIDI0NywgMjQ4LCA1MCwgMTYyLCAxNTUsIDQ5LCAyMTIsIDE1NCwgMTA2LCAxNTUsIAotICAgIDUwLCAyMTIsIDE1NCwgMTA2LCAxNTUsIDQ5LCA1MiwgMjE5LCA3NiwgNTAsIDUyLCAyMTksIDc2LCAxMjAsIDE4NywgMTE1LCAKLSAgICAxMTgsIDcwLCAyMTcsIDE3OCwgMTE4LCA3MCwgMTE1LCAxMjAsIDE4NywgMjE3LCAxNzgsIDEwMywgMjM5LCAxNDcsIDcwLCAKLSAgICAyMTcsIDE3OCwgMjM5LCAyMzMsIDcwLCA4MiwgMjE2LCA3MywgMjE3LCA0NywgODIsIDgwLCAyMDgsIDIyNywgMjE1LCAyNTMsIAotICAgIDIxOCwgNjIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMTAxLCAyNDMsIDg1LCAyMDcsIDE3NCwgMjQ1LCAyMzMsIDIxNiwgMTg4LCAKLSAgICAyNDMsIDg1LCAyMTYsIDE4OCwgMjQ1LCAyMzMsIDIwNywgMTc0LCAyMTMsIDE0MywgMjQ0LCAxOTYsIDMsIDQ5LCAyMzcsIAotICAgIDIyNCwgMjQ0LCAxOTYsIDMsIDUwLCAyMzcsIDIyNCwgMjA3LCAxNzQsIDI0NCwgMTk1LCAyMDgsIDE0NSwgMTYyLCAyMTQsIAotICAgIDE2OCwgNTQsIDIwNywgMTM1LCAyNDQsIDE0NCwgMjA5LCAzMCwgMjQ0LCAxNDQsIDIxMSwgNzYsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCA4MCwgMjEyLCA4OCwgMjQzLCA4MywgMjA0LCAyMSwgODAsIDIyNywgMTE0LCAyNDcsIDQ2LCA1MiwgMjM1LCAyMjAsIAotICAgIDIxNiwgNzMsIDI0NSwgMjMzLCA1MiwgMjI2LCAyNTIsIDIxNywgMzEsIDgyLCAxMiwgNDAsIDIxNiwgMTAwLCAxMiwgNDAsIAotICAgIDI0NiwgMjYsIDEyLCA0MCwgMjE0LCAxNzEsIDEwNSwgMTIsIDQwLCAyMTQsIDE3MSwgMTA4LCAxMiwgNDAsIDIxNCwgMTcxLCAKLSAgICAxNDcsIDEyLCA0MCwgMjE4LCAyMjksIDEyLCA0MCwgMjQ3LCAyMzMsIDEyLCA0MCwgMjEwLCA4LCAxMiwgNDAsIDIyOSwgMzQsIAotICAgIDEwNSwgMTIsIDQwLCAyMjksIDM0LCAxMDgsIDEyLCA0MCwgMjQzLCAxMzgsIDEyLCA0MCwgMjE0LCAxNzUsIDEyLCA0MCwgNSwgCi0gICAgMTA1LCAxMiwgNDAsIDUsIDEwOCwgMTIsIDQwLCAyMjgsIDIzLCAxMDUsIDEyLCA0MCwgMjI4LCAyMywgMTA4LCAxMiwgNDAsIAotICAgIDIyOCwgMjMsIDE0NywgMTIsIDQwLCAyMjgsIDIzLCAxNDksIDEyLCA0MCwgMjEyLCAyNCwgMTIsIDQwLCAyMDksIDMzLCAxMiwgCi0gICAgNDAsIDIxMiwgMjIsIDEwNSwgMTIsIDQwLCAyMTIsIDIyLCAxMDgsIDEyLCA0MCwgMjM3LCA1NiwgMTA1LCAxMiwgNDAsIAotICAgIDIzNywgNTYsIDEwOCwgMTIsIDQwLCAyMzcsIDEyMywgMTIsIDQwLCAyMTYsIDE3OCwgMTIsIDQwLCAyNDYsIDExMiwgMTIsIAotICAgIDQwLCAyMTAsIDIxNCwgMTIsIDQwLCAyMjQsIDI5LCAxMiwgNDAsIDI0NCwgNzMsIDEyLCA0MCwgMjI0LCAyMCwgMTIsIDQwLCAKLSAgICAyNDYsIDQ0LCAxMiwgNDAsIDIwNCwgODEsIDEwNSwgMTIsIDQwLCAyMDQsIDgxLCAxMDgsIDEyLCA0MCwgMjM5LCAyNDksIAotICAgIDEyLCA0MCwgMjE5LCA0NiwgMTA1LCAxMiwgNDAsIDIxOSwgNDYsIDEwOCwgMTIsIDQwLCAyMTIsIDEyNywgMTYyLCAyMDgsIAotICAgIDk2LCAyMDgsIDI1LCAxMiwgNDAsIDI0NSwgMTQ5LCAxMiwgNDAsIDI0MywgMTAyLCAxMiwgNDAsIDIzMCwgMTc2LCAxMiwgCi0gICAgNDAsIDI0OCwgMTUsIDc2LCAyNDYsIDEwLCAxMiwgNDAsIDI0MCwgMTkxLCAxMiwgNDAsIDIxMSwgMTk5LCAxMDUsIDEyLCAKLSAgICA0MCwgMjExLCAxOTksIDEwOCwgMTIsIDQwLCAyNDgsIDI0NCwgMTIsIDQwLCAyMTIsIDEzNCwgMTIsIDQwLCAyNDcsIDEyMiwgCi0gICAgMjEyLCAxMzQsIDEyLCA0MCwgMjIyLCAyMjAsIDEwNSwgMTIsIDQwLCAyMjIsIDIyMCwgMTA4LCAxMiwgNDAsIDIyMiwgMjIwLCAKLSAgICAxNDcsIDEyLCA0MCwgMjIyLCAyMjAsIDE0OSwgMTIsIDQwLCAyMjQsIDIyNywgMTIsIDQwLCAyMTMsIDM3LCAxMiwgNDAsIAotICAgIDIxNiwgMTg0LCAxMiwgNDAsIDI0MCwgMjE5LCAxMiwgNDAsIDIyMCwgNDUsIDEyLCA0MCwgMjQ3LCAyMDEsIDEwNSwgMTIsIAotICAgIDQwLCAyNDcsIDIwMSwgMTA4LCAxMiwgNDAsIDIyNSwgMTUsIDEyLCA0MCwgMjI0LCAyNCwgMTIsIDQwLCAyMzgsIDEsIDEwNSwgCi0gICAgMTIsIDQwLCAyMzgsIDEsIDEwOCwgMTIsIDQwLCAyMzgsIDEsIDE0NywgMTIsIDQwLCAyMDgsIDI0NSwgMTIsIDQwLCAyNDYsIAotICAgIDksIDEyLCA0MCwgMjA0LCA0NiwgMTA1LCAxMiwgNDAsIDIwNCwgNDYsIDEwOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjE0LCAKLSAgICAxNjUsIDEyLCA0MCwgMjEyLCAxMjcsIDIzNiwgNTMsIDEyLCA0MCwgMjM2LCA1MywgMTIsIDQwLCAyNDcsIDEyMiwgMjExLCAKLSAgICAyMTEsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxMywgMzIsIDEyLCA0MCwgMjM5LCAxNzIsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0NywgCi0gICAgMjMsIDEyLCA0MCwgMjEyLCAxMjcsIDIwNCwgMTAxLCAxMiwgNDAsIDIwNCwgMTAyLCAxMDUsIDEyLCA0MCwgMjA0LCAxMDIsIAotICAgIDEwOCwgMTIsIDQwLCAyNDYsIDQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDMxLCAxMiwgNDAsIDE2MywgMTA1LCAxMiwgCi0gICAgNDAsIDE2MywgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDIxNiwgMTIsIAotICAgIDQwLCAyMjQsIDE2LCAxMDUsIDEyLCA0MCwgMjI0LCAxNiwgMTA4LCAxMiwgNDAsIDIxNiwgMTkwLCAxMiwgNDAsIDI0OCwgCi0gICAgMjUsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOSwgMjI0LCAyMjcsIDIyOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjI3LCAyMjksIDEyLCAKLSAgICA0MCwgMjQ3LCAxMjIsIDIwNCwgMTYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOSwgMTkwLCAxMiwgNDAsIDI0MSwgMTczLCAxMDUsIAotICAgIDEyLCA0MCwgMjQxLCAxNzMsIDEwOCwgMTIsIDQwLCAyNDEsIDE3MywgMTQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyNDEsIDE3MiwgCi0gICAgMTIsIDQwLCAyMzcsIDY0LCAxMiwgNDAsIDI0NywgMTIyLCAyMzYsIDQ5LCAxMiwgNDAsIDI0OCwgMTEsIDEyLCA0MCwgMjM4LCAKLSAgICA4OSwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAyNDMsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0OCwgNjAsIDEyLCA0MCwgMjQ3LCAKLSAgICAxMjIsIDIxNSwgMSwgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAzOCwgMTIsIDQwLCAyMTIsIDEyNywgMjAzLCA0NCwgMTIsIAotICAgIDQwLCAyNDcsIDEyMiwgMjM5LCAxMjEsIDEyLCA0MCwgMjMwLCAxODMsIDI0MCwgMjI0LCAxMiwgNDAsIDI0NywgMTIyLCAKLSAgICAyNDAsIDIyNCwgMTIsIDQwLCAyMzAsIDE4MywgMjA4LCAxNDYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOCwgMTQ2LCAxMiwgNDAsIAotICAgIDIzMCwgMTgzLCAyNDIsIDYxLCAxMiwgNDAsIDI0NywgMTIyLCAyNDIsIDYxLCAxMiwgNDAsIDIwNywgMTcxLCAxMiwgNDAsIAotICAgIDIzMCwgMTgzLCAyMDcsIDE3MSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA3LCAxNzEsIDcxLCA0MCwgMTA1LCA3MSwgNDAsIDIyNywgCi0gICAgMTE0LCA3MSwgNDAsIDI0MywgODUsIDcxLCA0MCwgMjEyLCA1NywgNzEsIDQwLCAyMTQsIDE3MCwgNzEsIDQwLCAxMTMsIDcxLCAKLSAgICA0MCwgMTA4LCA3MSwgNDAsIDIyNywgMTQzLCA3MSwgNDAsIDIyNSwgMTIyLCA3MSwgNDAsIDIyNywgMjA3LCA3MSwgNDAsIAotICAgIDI0MSwgNjcsIDcxLCA0MCwgMTk5LCA3MSwgNDAsIDEyMSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjQ1LCAxNTEsIDcxLCA0MCwgCi0gICAgMjM1LCAxNjIsIDcxLCA0MCwgMjEwLCA4LCA3MSwgNDAsIDE3MSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjI5LCAzMywgNzEsIDQwLCAKLSAgICAyMTgsIDE2LCA3MSwgNDAsIDIwMywgMjI4LCA3MSwgNDAsIDIxMSwgMTkwLCA3MSwgNDAsIDUwLCAxNzEsIDI0NywgMjMzLCAKLSAgICA3MSwgNDAsIDIzNiwgMjU1LCAyNDEsIDg3LCA3MSwgNDAsIDIwOSwgMTUyLCA3MSwgNDAsIDI0MywgMTM4LCA3MSwgNDAsIAotICAgIDIxNCwgMTc1LCA3MSwgNDAsIDI0NiwgMjYsIDcxLCA0MCwgMjE3LCAyMjYsIDcxLCA0MCwgMjUxLCA4MCwgNzEsIDQwLCAKLSAgICAyMjQsIDcsIDcxLCA0MCwgMjQxLCA4NywgNzEsIDQwLCAyNDEsIDE3OSwgNzEsIDQwLCAyMTQsIDE5NywgNzEsIDQwLCAyMzgsIAotICAgIDM5LCA3MSwgNDAsIDIzOCwgNDAsIDIxMiwgMzgsIDcxLCA0MCwgMjQwLCAyMjMsIDcxLCA0MCwgMjQ4LCA3MiwgNzEsIDQwLCAKLSAgICAyMDMsIDI1MCwgNzEsIDQwLCAyNDYsIDEzMywgNzEsIDQwLCAyMTUsIDIwNywgNzEsIDQwLCAyMzEsIDQ1LCA3MSwgNDAsIAotICAgIDIxMiwgMzYsIDcxLCA0MCwgMjI4LCAyMiwgNzEsIDQwLCAyNDUsIDE2MSwgNzEsIDQwLCAyMTEsIDE4MSwgNzEsIDQwLCAKLSAgICAyMjQsIDEyLCA3MSwgNDAsIDIxNSwgMjQxLCA3MSwgNDAsIDIwMywgMjM1LCA3MSwgNDAsIDIyMCwgMjUsIDcxLCA0MCwgCi0gICAgMjA3LCAxODAsIDcxLCA0MCwgMjQyLCA0NCwgNzEsIDQwLCAyMTIsIDIyOCwgMjA5LCAzMywgNzEsIDQwLCAyNDIsIDgzLCAKLSAgICAyNDYsIDI2LCA3MSwgNDAsIDE2MywgMjExLCAzOCwgNzEsIDQwLCAxMjAsIDIzNywgOTksIDcxLCA0MCwgMjEyLCAyMzQsIAotICAgIDcxLCA0MCwgMjQ3LCAyNDAsIDcxLCA0MCwgMjEyLCAyMSwgNzEsIDQwLCAyNDcsIDIwNSwgNzEsIDQwLCAyMTEsIDc1LCA3MSwgCi0gICAgNDAsIDIzNywgNTUsIDcxLCA0MCwgMjM3LCAxMzgsIDcxLCA0MCwgMjQzLCA4OCwgNzEsIDQwLCAyMzcsIDEyMywgNzEsIDQwLCAKLSAgICAyNDcsIDIyMywgNzEsIDQwLCAyMTYsIDE3OCwgNzEsIDQwLCAyMTQsIDE4MywgNzEsIDQwLCAyNDMsIDE2OSwgNzEsIDQwLCAKLSAgICAyNTAsIDksIDcxLCA0MCwgMjExLCAxNzcsIDcxLCA0MCwgMjIxLCAxNjUsIDcxLCA0MCwgMjEwLCAyMTQsIDcxLCA0MCwgCi0gICAgMjE0LCAyMDgsIDcxLCA0MCwgMjI0LCAyOSwgNzEsIDQwLCAyMDgsIDk1LCA3MSwgNDAsIDIyOCwgOTksIDcxLCA0MCwgMjExLCAKLSAgICA2MSwgNzEsIDQwLCAyNDQsIDczLCA3MSwgNDAsIDIwNCwgNjEsIDcxLCA0MCwgMjQzLCAxMTQsIDIyMSwgMTY1LCA3MSwgNDAsIAotICAgIDI0NSwgMjI5LCA3MSwgNDAsIDIzOSwgOTUsIDcxLCA0MCwgMjQ2LCAzOCwgNzEsIDQwLCAyMTEsIDgwLCA3MSwgNDAsIDIwNCwgCi0gICAgODAsIDcxLCA0MCwgMjM5LCAyNDksIDcxLCA0MCwgMjQ2LCAzNCwgNzEsIDQwLCAyNDAsIDY3LCA3MSwgNDAsIDUyLCAyMDMsIAotICAgIDE5NiwgNzEsIDQwLCAxNjIsIDIwOCwgOTYsIDIwOCwgMjUsIDcxLCA0MCwgMjEyLCA1MCwgNzEsIDQwLCAyNDAsIDc5LCA3MSwgCi0gICAgNDAsIDI0NSwgMTQ5LCA3MSwgNDAsIDI0MywgMTAyLCA3MSwgNDAsIDIxNywgMjIzLCA3MSwgNDAsIDIzMCwgMTc2LCA3MSwgCi0gICAgNDAsIDIyNCwgMjQ5LCA3MSwgNDAsIDIwOCwgMjI2LCA3MSwgNDAsIDIxMCwgMTY0LCA3MSwgNDAsIDIyNywgMTM3LCA3MSwgCi0gICAgNDAsIDIwNiwgMTkxLCA3MSwgNDAsIDI0MCwgMjQsIDcxLCA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDcxLCA0MCwgMjEyLCAKLSAgICAxNTgsIDcxLCA0MCwgMjQyLCA4MywgMjA5LCAxNDQsIDcxLCA0MCwgMjA0LCAzMywgNzEsIDQwLCAyMTIsIDY1LCA3MSwgNDAsIAotICAgIDI0MywgMTU2LCA3MSwgNDAsIDI0MCwgMTkxLCA3MSwgNDAsIDIxMSwgMjE0LCA3MSwgNDAsIDQ3LCA3MSwgNDAsIDIxMSwgCi0gICAgNjMsIDcxLCA0MCwgMjExLCAxOTgsIDcxLCA0MCwgMjA4LCAxMTgsIDcxLCA0MCwgMjM4LCAxMCwgNzEsIDQwLCAyNDcsIDEwLCAKLSAgICA3MSwgNDAsIDIxMSwgOTgsIDcxLCA0MCwgMjQ4LCAyNDQsIDcxLCA0MCwgMjE2LCA1MiwgNzEsIDQwLCAyMTIsIDEzNCwgNzEsIAotICAgIDQwLCAyMzAsIDE2OCwgNzEsIDQwLCAyMjIsIDIxOSwgNzEsIDQwLCAyMTMsIDM3LCA3MSwgNDAsIDI0MCwgNTUsIDcxLCA0MCwgCi0gICAgMjIwLCA0NSwgNzEsIDQwLCAyNTAsIDIyNiwgNzEsIDQwLCAyMTgsIDgzLCA3MSwgNDAsIDI0MSwgMTgzLCA3MSwgNDAsIAotICAgIDI0NywgMjAwLCA3MSwgNDAsIDIyNSwgMTUsIDcxLCA0MCwgMjI0LCAxMDQsIDcxLCA0MCwgMjEzLCAxNDksIDcxLCA0MCwgCi0gICAgMjUwLCA5OCwgNzEsIDQwLCAyMjQsIDI0LCA3MSwgNDAsIDIwOCwgMTUwLCA3MSwgNDAsIDIxOSwgMjUyLCA3MSwgNDAsIAotICAgIDI0OCwgMTksIDcxLCA0MCwgMjExLCA1OSwgNzEsIDQwLCAyNDUsIDI0MSwgNzEsIDQwLCAyMzgsIDAsIDcxLCA0MCwgMjA4LCAKLSAgICAyNDUsIDcxLCA0MCwgMjMxLCA5LCA3MSwgNDAsIDI0OCwgMzEsIDcxLCA0MCwgMjA0LCAxMDIsIDI0MSwgODcsIDcxLCA0MCwgCi0gICAgMjQ2LCA5LCA3MSwgNDAsIDIwNCwgNDUsIDcxLCA0MCwgMjE0LCAxNjUsIDcxLCA0MCwgMjM2LCA1MywgNzEsIDQwLCAyMTEsIAotICAgIDIxMSwgNzEsIDQwLCAyMDYsIDc5LCA3MSwgNDAsIDI0OCwgMTU3LCA3MSwgNDAsIDIxOCwgMTMxLCA3MSwgNDAsIDI0OSwgCi0gICAgMTMsIDcxLCA0MCwgMjEzLCAzMiwgNzEsIDQwLCAyMTYsIDEzNywgNzEsIDQwLCAyMTUsIDEyOCwgNzEsIDQwLCAyMzksIAotICAgIDE3MiwgNzEsIDQwLCAyNDgsIDE3LCA3MSwgNDAsIDI0NywgMjMsIDcxLCA0MCwgMjQ4LCA0OCwgNzEsIDQwLCAyMjQsIDI2LCAKLSAgICA3MSwgNDAsIDIwNCwgMTAxLCA3MSwgNDAsIDI0NiwgNDcsIDcxLCA0MCwgMjA0LCAxMiwgNzEsIDQwLCAyNDMsIDE0OSwgNzEsIAotICAgIDQwLCAyMDUsIDIxNCwgNzEsIDQwLCAyMzgsIDMxLCA3MSwgNDAsIDIyNywgMjgsIDcxLCA0MCwgMjM4LCAyMTYsIDcxLCA0MCwgCi0gICAgMjI0LCAxNSwgNzEsIDQwLCAyMTIsIDU2LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDI0NywgMjQ4LCA2MCwgNzEsIDQwLCAKLSAgICAyMTYsIDE5MCwgNzEsIDQwLCAyNDgsIDI1LCA3MSwgNDAsIDIwMywgMjE5LCA3MSwgNDAsIDI0MCwgMTAyLCA3MSwgNDAsIAotICAgIDIyNywgMjI4LCA3MSwgNDAsIDIwOSwgMjI0LCAyMjcsIDIyOCwgNzEsIDQwLCAyMjcsIDIyNCwgNzEsIDQwLCAyMTEsIDI0MCwgCi0gICAgNzEsIDQwLCAyMjcsIDIyOSwgNzEsIDQwLCAyMDQsIDE2LCA3MSwgNDAsIDIzOSwgMTkwLCA3MSwgNDAsIDI0MSwgMTcyLCAKLSAgICA3MSwgNDAsIDIzNywgNjQsIDcxLCA0MCwgMjM5LCAxMzYsIDcxLCA0MCwgMjM2LCA0OSwgNzEsIDQwLCAyNDgsIDExLCA3MSwgCi0gICAgNDAsIDIwOSwgMjMzLCA3MSwgNDAsIDIzNywgMTQ1LCA3MSwgNDAsIDI0MCwgMTcsIDcxLCA0MCwgMjE1LCAzMCwgMjA0LCAKLSAgICAxMiwgNzEsIDQwLCAyNDcsIDEyLCA3MSwgNDAsIDIzOCwgODksIDcxLCA0MCwgMjM5LCAyNDMsIDcxLCA0MCwgMjQ4LCA2MCwgCi0gICAgNzEsIDQwLCAyMTUsIDEsIDcxLCA0MCwgMjQ0LCA1OCwgNzEsIDQwLCAyMDQsIDM4LCA3MSwgNDAsIDIzNywgMzQsIDcxLCAKLSAgICA0MCwgMjAzLCA0NCwgNzEsIDQwLCAyMjQsIDExNSwgNzEsIDQwLCAyNDgsIDQzLCA3MSwgNDAsIDI0MSwgOTksIDcxLCA0MCwgCi0gICAgMjM5LCAxMjEsIDcxLCA0MCwgMjA4LCA2NywgNzEsIDQwLCAyNDIsIDQ2LCA3MSwgNDAsIDIxNiwgMTcyLCA3MSwgNDAsIAotICAgIDIyMSwgMTY3LCA3MSwgNDAsIDI0MCwgMjI0LCA3MSwgNDAsIDIwOCwgMTQ2LCA3MSwgNDAsIDI0MiwgNjEsIDcxLCA0MCwgCi0gICAgMjA3LCAxNzEsIDcxLCA0MCwgMjM5LCAxOTMsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIDIxNiwgMTYsIAotICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgNDksIDIwOCwgMTczLCAKLSAgICAxMDEsIDI1LCAyMTYsIDE2LCAxMzksIDI0NCwgMTgsIDE2NywgODcsIDIwOCwgMTczLCAxMDEsIDI1LCA1NiwgMTM5LCAyNDQsIAotICAgIDE4LCAxNjcsIDIzOSwgMTAyLCAyMTAsIDE4NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTUsIAotICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIAotICAgIDIzOSwgMTIwLCAyMjcsIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjA2LCAyMjEsIDIyNywgCi0gICAgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMTM5LCAyNDQsIAotICAgIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjI2LCAyNTEsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjE5LCAKLSAgICAyMDIsIDEzOSwgMjExLCAyMjgsIDEzOSwgMjQ1LCAyMzMsIDEzOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDI0MywgMTQ2LCA4MiwgCi0gICAgMjMwLCAxNjksIDIzMSwgMjksIDIxMSwgOTcsIDk3LCAxMzksIDIzMCwgMTk5LCA4MiwgMTM5LCAyNDYsIDEyLCA4MiwgMTM5LCAKLSAgICA0MiwgMjAyLCA4NCwgNDksIDI1MCwgMjE4LCAxNTUsIDUwLCAyNTAsIDIxOCwgMTU1LCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAotICAgIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgNDksIDI0NSwgMTY2LCAxNTUsIDUwLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjEsIDI0NSwgCi0gICAgMTY2LCAxNTUsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgNDksIDYyLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjIsIDIyNywgMTg1LCAKLSAgICAxNTUsIDIxOCwgMjksIDgyLCAyMzgsIDE1OCwgODIsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgMjA4LCAxMzMsIAotICAgIDIxMywgMzMsIDE1NSwgNDksIDYxLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjEsIDIyNywgMTg1LCAxNTUsIDQ5LCA2MSwgMjA4LCAKLSAgICAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDUxLCAxNTUsIDUwLCAKLSAgICA2MSwgNTEsIDE1NSwgMjA0LCA3NiwgMjQ0LCAxNDQsIDIxNiwgNzMsIDUyLCAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDUyLCAKLSAgICAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDEyNCwgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMjE4LCAyOSwgMTMxLCAyNDAsIAotICAgIDEwMiwgMjM3LCA5NywgMjIxLCA0NCwgMTA1LCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDgsIDIzNywgOTcsIDIyMSwgNDQsIDE0NywgCi0gICAgMjM3LCA5NywgMjIxLCA0NCwgMTQ5LCAyMzcsIDk3LCAyMjEsIDQ0LCAxNzAsIDIzNywgOTcsIDIyMSwgNDQsIDE5NSwgMjM3LCAKLSAgICA5NywgMjIxLCA0NCwgMjEzLCAxMTEsIDIzNywgOTcsIDIyMSwgNDQsIDE5OSwgMjM3LCA5NywgMjIxLCA0NCwgMjIyLCA2MywgCi0gICAgMTM5LCAyMjcsIDE2NywgMTQzLCA4MiwgMTM5LCAyMTUsIDI0NSwgMTQzLCA4MiwgMTM5LCAyNDQsIDI3LCAxNDMsIDgyLCAKLSAgICAxMzksIDI0MSwgNjYsIDE0MywgODIsIDI4LCAyMTIsIDEyMCwgNzAsIDE0MywgODIsIDI4LCA1MiwgNzAsIDE0MywgODIsIAotICAgIDIwNCwgNzIsIDI0NCwgMTQ0LCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAKLSAgICAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIAotICAgIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAyMDUsIDE4NiwgMjExLCAyNDEsIDEzMSwgMjA2LCAyMjEsIDIzNywgMTM3LCA4MCwgCi0gICAgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMjYsIDI1MSwgMjM3LCAxMzcsIDQzLCAyMTgsIDI5LCA4MiwgMTM5LCAyMDksIAotICAgIDE2NCwgMjI3LCAxMTUsIDI0MCwgNTIsIDIxMywgMTMxLCA5NywgMjM3LCA5NywgMjIxLCA0NCwgMjA5LCAxNTIsIDIzNywgCi0gICAgOTcsIDIyMSwgNDQsIDIwNywgMTUxLCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDUzLCA4MCwgMTM5LCAyMzAsIDE5OSwgODIsIAotICAgIDIyNSwgNzIsIDgyLCAyMTksIDcxLCAyNTAsIDI1MSwgODIsIDEzOSwgNTcsIDIzMSwgMzEsIDEzOSwgMTYyLCAyNDAsIDEwLCAKLSAgICAyMTEsIDIyOCwgMTcyLCAxLCA1LCA2MywgMTcyLCAxLCA2MywgMTcyLCAxLCA1LCA3NSwgMTcyLCAxLCA3NSwgMTcyLCAxLCAKLSAgICA1LCA2OCwgMTcyLCAxLCA2OCwgMTcyLCAxLCA1LCA3NCwgMTcyLCAxLCA3NCwgMTcyLCAxLCA1LCA3OCwgMTcyLCAxLCA3OCwgCi0gICAgMTcyLCAxLCAxNzMsIDE3MiwgMSwgMjM5LCA4LCAxNzIsIDEsIDIyOSwgMTAwLCAxNzIsIDEsIDIzOCwgODEsIDE3MiwgMSwgCi0gICAgMjI4LCAyMDksIDE3MiwgMSwgMjM3LCAyMzAsIDE3MiwgMSwgMjI5LCAyMDEsIDE3MiwgMSwgMjM4LCAxOTAsIDE3MiwgMSwgCi0gICAgMjI5LCAyNiwgMTcyLCAxLCAyMzgsIDM5LCAxNzIsIDEsIDIxNSwgMzYsIDE3MiwgMSwgMjAyLCAxMTYsIDE3MiwgMSwgMjEyLCAKLSAgICAxNjIsIDE3MiwgMSwgMjAyLCAzOSwgMTcyLCAxLCAyMTEsIDEwLCAxNzIsIDEsIDIwMiwgNiwgMTcyLCAxLCAyMTQsIDE3NywgCi0gICAgMTcyLCAxLCAyMDIsIDkyLCAxNzIsIDEsIDIxMiwgMTMsIDE3MiwgMSwgMjAyLCAxNywgMTcyLCAxLCAyMTAsIDIyLCAxNzIsIAotICAgIDEsIDI0NCwgMjEyLCAxNzIsIDEsIDIwOSwgMiwgMTcyLCAxLCAyNDMsIDIzMywgMTcyLCAxLCA1LCAyMDcsIDIwMywgMTcyLCAKLSAgICAxLCAyMDcsIDIwMywgMTcyLCAxLCAyNDIsIDQyLCAxNzIsIDEsIDIwOSwgMTg3LCAxNzIsIDEsIDI0NCwgNzUsIDE3MiwgMSwgCi0gICAgMTM1LCAxNzIsIDEsIDI0MywgMTEzLCAxNzIsIDEsIDIwMSwgMjAxLCAxNzIsIDEsIDIyMiwgMTAwLCAxNzIsIDEsIDIyMSwgCi0gICAgODQsIDE3MiwgMSwgMjIyLCAyNDAsIDE3MiwgMSwgMjIxLCAxOTEsIDE3MiwgMSwgMTUyLCAxNzIsIDEsIDI0OSwgMzIsIAotICAgIDE3MiwgMSwgMTg1LCAxNzIsIDEsIDIzNywgMywgMTcyLCAxLCAyNDgsIDg2LCAxNzIsIDEsIDIxOCwgMTY3LCAxNzIsIDEsIAotICAgIDIzNiwgMjYsIDE3MiwgMSwgMjQ3LCAxOTMsIDE3MiwgMSwgMjE3LCAxOTEsIDE3MiwgMSwgMjM3LCA2NywgMTcyLCAxLCAKLSAgICAyNDgsIDE2MiwgMTcyLCAxLCAyMTksIDM0LCAxNzIsIDEsIDIzNiwgMTM2LCAxNzIsIDEsIDI0OCwgMjMsIDE3MiwgMSwgCi0gICAgMjE4LCA2OSwgMTcyLCAxLCAxOTIsIDE3MiwgMSwgMjI0LCAxNTUsIDE3MiwgMSwgMjIzLCAyNDYsIDE3MiwgMSwgMjI1LCAKLSAgICAyMCwgMTcyLCAxLCAyMjQsIDgyLCAxNzIsIDEsIDUsIDE5OCwgMTcyLCAxLCAxOTgsIDE3MiwgMSwgNSwgMjAyLCAyMTMsIAotICAgIDE3MiwgMSwgMjAyLCAyMTMsIDE3MiwgMSwgNSwgMjAyLCAyNDcsIDE3MiwgMSwgMjAyLCAyNDcsIDE3MiwgMSwgMjE2LCAKLSAgICAyMjAsIDE3MiwgMSwgMjE2LCA1NywgMTcyLCAxLCAyMTUsIDE0NSwgMTcyLCAxLCAyMTYsIDE1OCwgMTcyLCAxLCAyMTUsIAotICAgIDIyNywgMTcyLCAxLCA1LCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDMwLCAxNzIsIDEsIDIwNCwgCi0gICAgNjIsIDE3MiwgMSwgMjA0LCAwLCAxNzIsIDEsIDIyMywgMTYzLCAxNzIsIDEsIDIwNCwgMTYzLCAxNzIsIDEsIDUsIDE3MywgCi0gICAgMTcyLCAxLCA1LCAyMjksIDIwMSwgMzksIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAzOSwgMjI5LCAyMjUsIAotICAgIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAyMjksIDIyNSwgMjEzLCAKLSAgICAxNDgsIDIxMSwgMjQxLCA4MiwgMTcyLCAyMzAsIDE5OSwgODIsIDE3MiwgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgMTcyLCAKLSAgICAyNDMsIDE5MiwgMjAyLCAyMjgsIDIyOSwgMjI1LCA1MiwgMjM1LCAyMjAsIDY3LCAxLCA1LCA2MywgNjcsIDEsIDYzLCA2NywgCi0gICAgMSwgNSwgNzUsIDY3LCAxLCA3NSwgNjcsIDEsIDUsIDY4LCA2NywgMSwgNjgsIDY3LCAxLCA1LCA3NCwgNjcsIDEsIDc0LCAKLSAgICA2NywgMSwgNSwgNzgsIDY3LCAxLCA3OCwgNjcsIDEsIDE3MywgNjcsIDEsIDIzOSwgOCwgNjcsIDEsIDIyOSwgMTAwLCA2NywgCi0gICAgMSwgMjM4LCA4MSwgNjcsIDEsIDIyOCwgMjA5LCA2NywgMSwgMjM3LCAyMzAsIDY3LCAxLCAyMjksIDIwMSwgNjcsIDEsIAotICAgIDIzOCwgMTkwLCA2NywgMSwgMjI5LCAyNiwgNjcsIDEsIDIzOCwgMzksIDY3LCAxLCAyMTUsIDM2LCA2NywgMSwgMjAyLCAKLSAgICAxMTYsIDY3LCAxLCAyMTIsIDE2MiwgNjcsIDEsIDIwMiwgMzksIDY3LCAxLCAyMTEsIDEwLCA2NywgMSwgMjAyLCA2LCA2NywgCi0gICAgMSwgMjE0LCAxNzcsIDY3LCAxLCAyMDIsIDkyLCA2NywgMSwgMjEyLCAxMywgNjcsIDEsIDIwMiwgMTcsIDY3LCAxLCAyMTAsIAotICAgIDIyLCA2NywgMSwgMjQ0LCAyMTIsIDY3LCAxLCAyMDksIDIsIDY3LCAxLCAyNDMsIDIzMywgNjcsIDEsIDUsIDIwNywgMjAzLCAKLSAgICA2NywgMSwgMjA3LCAyMDMsIDY3LCAxLCAyNDIsIDQyLCA2NywgMSwgMjA5LCAxODcsIDY3LCAxLCAyNDQsIDc1LCA2NywgMSwgCi0gICAgMTM1LCA2NywgMSwgMjQzLCAxMTMsIDY3LCAxLCAyMDEsIDIwMSwgNjcsIDEsIDIyMiwgMTAwLCA2NywgMSwgMjIxLCA4NCwgCi0gICAgNjcsIDEsIDIyMiwgMjQwLCA2NywgMSwgMjIxLCAxOTEsIDY3LCAxLCAxNTIsIDY3LCAxLCAyNDksIDMyLCA2NywgMSwgMTg1LCAKLSAgICA2NywgMSwgMjM3LCAzLCA2NywgMSwgMjQ4LCA4NiwgNjcsIDEsIDIxOCwgMTY3LCA2NywgMSwgMjM2LCAyNiwgNjcsIDEsIAotICAgIDI0NywgMTkzLCA2NywgMSwgMjE3LCAxOTEsIDY3LCAxLCAyMzcsIDY3LCA2NywgMSwgMjQ4LCAxNjIsIDY3LCAxLCAyMTksIAotICAgIDM0LCA2NywgMSwgMjM2LCAxMzYsIDY3LCAxLCAyNDgsIDIzLCA2NywgMSwgMjE4LCA2OSwgNjcsIDEsIDE5MiwgNjcsIDEsIAotICAgIDIyNCwgMTU1LCA2NywgMSwgMjIzLCAyNDYsIDY3LCAxLCAyMjUsIDIwLCA2NywgMSwgMjI0LCA4MiwgNjcsIDEsIDUsIDE5OCwgCi0gICAgNjcsIDEsIDE5OCwgNjcsIDEsIDUsIDIwMiwgMjEzLCA2NywgMSwgMjAyLCAyMTMsIDY3LCAxLCA1LCAyMDIsIDI0NywgNjcsIAotICAgIDEsIDIwMiwgMjQ3LCA2NywgMSwgMjE2LCAyMjAsIDY3LCAxLCAyMTYsIDU3LCA2NywgMSwgMjE1LCAxNDUsIDY3LCAxLCAKLSAgICAyMTYsIDE1OCwgNjcsIDEsIDIxNSwgMjI3LCA2NywgMSwgNSwgMjA0LCAxMTEsIDY3LCAxLCAyMDQsIDExMSwgNjcsIDEsIAotICAgIDIwNCwgMzAsIDY3LCAxLCAyMDQsIDYyLCA2NywgMSwgMjA0LCAwLCA2NywgMSwgMjIzLCAxNjMsIDY3LCAxLCAyMDQsIDE2MywgCi0gICAgNjcsIDEsIDUsIDE3MywgNjcsIDEsIDUsIDIyOSwgMjAxLCA2NywgMSwgMjA2LCA4NiwgNjcsIDEsIDIwNSwgMjMwLCA2NywgCi0gICAgMSwgMjA2LCA1NSwgNjcsIDEsIDIwNSwgMTg5LCA2NywgMTAxLCAyNDMsIDg1LCAyMjksIDIyNSwgMjE3LCAyMTUsIDIxMSwgCi0gICAgMjQxLCA4MiwgNjcsIDIzMCwgMTk5LCA4MiwgNjcsIDIwNSwgMTg2LCAyMzAsIDE5OSwgODIsIDY3LCAyNDMsIDE5MiwgMjI4LCAKLSAgICAyNDksIDI0OCwgMSwgMSwgMjQ5LCAyNTUsIDI0OCwgMSwgMSwgMjE5LCAxODQsIDI0OCwgMSwgMSwgMjI2LCAxODUsIDI0OCwgCi0gICAgMSwgMSwgMjQwLCAxNzQsIDI0OCwgMSwgMSwgMjQ1LCA1MSwgMjQ4LCAxLCAxLCAyMTAsIDY5LCAyNDgsIDEsIDEsIDIyMywgCi0gICAgMTYzLCAyNDgsIDEsIDEsIDE1OSwgMjQ4LCAxLCAxLCAyMzksIDc1LCAyNDgsIDEsIDEsIDIzMCwgNTQsIDI0OCwgMSwgMSwgCi0gICAgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjMwLCAxODQsIDI0OCwgMSwgMSwgMjE3LCAxMzQsIDI0OCwgMSwgMSwgMjAzLCAxOTYsIAotICAgIDI0OCwgMSwgMSwgMjAyLCA4MSwgMjQ4LCAxLCAxLCAyNDYsIDIwMCwgMjQ4LCAxLCAxLCAyMTMsIDkyLCAyNDgsIDEsIDEsIAotICAgIDE0NiwgMjQ4LCAxLCAxLCAyMDIsIDE1OSwgMjQ4LCAxLCAxLCAyNDcsIDEyNSwgMjQ4LCAxLCAxLCAxOTQsIDI0OCwgMSwgMSwgCi0gICAgNjMsIDI0OCwgMSwgMSwgNzgsIDI0OCwgMSwgMSwgNzQsIDI0OCwgMSwgMSwgMjQxLCAxNDcsIDI0OCwgMSwgMSwgMjUxLCAKLSAgICA2NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NSwgMjQ4LCAxLCAxLCAyNTAsIDM0LCAyNDgsIDEsIDEsIDIxOSwgMjE2LCAyNDgsIDEsIAotICAgIDEsIDI1MCwgMjMxLCAyNDgsIDEsIDEsIDI0MSwgOTIsIDI0OCwgMSwgMSwgMjUwLCAyMjMsIDI0OCwgMSwgMSwgMjQxLCA3OCwgCi0gICAgMjQ4LCAxLCAxLCAyNDEsIDI4LCAyNDgsIDEsIDEsIDc1LCAyNDgsIDEsIDEsIDY4LCAyNDgsIDEsIDEsIDIzMCwgMTk3LCAKLSAgICAyNDgsIDEsIDEsIDIwNiwgMTY0LCAyNDgsIDEsIDEsIDIyMiwgMjA1LCAyNDgsIDEsIDEsIDIzOCwgNDMsIDI0OCwgMSwgMSwgCi0gICAgMjMxLCA4NCwgMjgsIDEsIDIyOSwgNTksIDI4LCAxLCAyMTEsIDE1NiwgMjgsIDEsIDIyOSwgNTIsIDI4LCAxLCAyMjIsIDkzLCAKLSAgICAyOCwgMSwgMjIyLCA5MSwgMjgsIDEsIDIyMiwgOTAsIDI4LCAxLCAyMDgsIDI0MCwgMjgsIDEsIDIxMSwgMTQ1LCAyOCwgMSwgCi0gICAgMjE2LCA0NywgMjgsIDEsIDIxNiwgNDIsIDI4LCAxLCAyMTYsIDM5LCAyOCwgMSwgMjE2LCAzMiwgMjgsIDEsIDIxNiwgMjcsIAotICAgIDI4LCAxLCAyMTYsIDIyLCAyOCwgMSwgMjE2LCAzMywgMjgsIDEsIDIxNiwgNDUsIDI4LCAxLCAyMjQsIDE0MSwgMjgsIDEsIAotICAgIDIxOCwgMTUzLCAyOCwgMSwgMjExLCAxNTMsIDI4LCAxLCAyMTgsIDE0MiwgMjgsIDEsIDIxMiwgMTExLCAyOCwgMSwgMjExLCAKLSAgICAxNTAsIDI4LCAxLCAyMzEsIDEwNiwgMjgsIDEsIDI0NiwgNzQsIDI4LCAxLCAyMTEsIDE2MCwgMjgsIDEsIDI0NiwgMTM4LCAKLSAgICAyOCwgMSwgMjI5LCAxMjAsIDI4LCAxLCAyMDksIDY2LCAyOCwgMSwgMjE4LCAxOTAsIDI4LCAxLCAyMzYsIDI1MSwgMjgsIDEsIAotICAgIDYzLCAyOCwgMSwgMjUxLCAxMDksIDI4LCAxLCAxOTgsIDI4LCAxLCAyMDMsIDk5LCAyOCwgMSwgMjQxLCA1NSwgMjgsIDEsIAotICAgIDc0LCAyOCwgMSwgMjAzLCAzOSwgMjgsIDEsIDIwMywgNTIsIDI4LCAxLCA3OCwgMjgsIDEsIDIwNCwgMTExLCAyOCwgMSwgCi0gICAgMjA0LCAxMDcsIDI4LCAxLCAyMjAsIDczLCAyOCwgMSwgMjAyLCAyNDcsIDI4LCAxLCA2OCwgMjgsIDEsIDIwNCwgNDgsIDI4LCAKLSAgICAxLCAyMDQsIDYyLCAyOCwgMSwgMjA0LCAzMCwgMjgsIDEsIDIwMiwgMjEzLCAyOCwgMSwgMjQwLCAyMzgsIDI4LCAxLCAyMDMsIAotICAgIDExLCAyOCwgMSwgNzUsIDI4LCAyNDAsIDcsIDI4LCAxLCAyMTEsIDE1NCwgMjgsIDEsIDIyMiwgODMsIDI4LCAxLCAyMjIsIAotICAgIDg1LCAyOCwgMSwgMjIyLCA4OCwgMjgsIDEsIDIxNiwgNDAsIDI4LCAxLCAyMTYsIDIxLCAyOCwgMSwgMjE2LCAyOSwgMjgsIAotICAgIDEsIDIxNiwgMzQsIDI4LCAxLCAyMTYsIDE5LCAyOCwgMSwgMjI0LCAxMzQsIDI4LCAxLCAyMjQsIDEzMSwgMjgsIDEsIDIyNCwgCi0gICAgMTM1LCAyOCwgMSwgMjI5LCAyNDYsIDI4LCAxLCAyMTgsIDE0OCwgMjgsIDEsIDIxOCwgMTM0LCAyOCwgMSwgMjE4LCAxNDAsIAotICAgIDI4LCAxLCAyMTgsIDEzNywgMjgsIDEsIDIxOCwgMTUxLCAyOCwgMSwgMjE4LCAxMzUsIDI4LCAxLCAyMjksIDI0NCwgMjgsIAotICAgIDEsIDIyOSwgMjQyLCAyOCwgMSwgMjEyLCAxMDQsIDI4LCAxLCAyMTIsIDEwMiwgMjgsIDEsIDIxMiwgOTQsIDI4LCAxLCAKLSAgICAyMTIsIDk5LCAyOCwgMSwgMjEyLCAxMDksIDI4LCAxLCAyMTksIDEwNywgMjgsIDEsIDIxMSwgMTU3LCAyOCwgMSwgMjAzLCAKLSAgICAyOSwgMjgsIDEsIDIwMywgMjUsIDI4LCAxLCAyMDMsIDI2LCAyOCwgMSwgMjI5LCAyNDUsIDI4LCAxLCAyMTEsIDE1OCwgMjgsIAotICAgIDEsIDIwMywgMzUsIDI4LCAxLCAyMDIsIDI0MSwgMjgsIDEsIDIwMiwgMjQwLCAyOCwgMSwgMjAyLCAyNDMsIDI4LCAxLCAKLSAgICAyMDIsIDIwNCwgMjgsIDEsIDIwMiwgMjA1LCAyOCwgMSwgMjAyLCAyMDgsIDI4LCAxLCAyNTAsIDEzNywgMjgsIDEsIDI1MCwgCi0gICAgMTMxLCAxMzksIDI1MCwgMjA1LCAyMjcsIDEwMywgODIsIDEzOSwgMjUwLCAyMDUsIDIxNiwgNzQsIDgyLCAxMzksIDI1MCwgCi0gICAgMjA1LCAxMTgsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjAsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjYsIDgyLCAxMzksIDI1MCwgCi0gICAgMjA1LCAyMzksIDE0NywgODIsIDEzOSwgMjUwLCAyMDUsIDIwOCwgMTQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgMTAxLCA4MiwgCi0gICAgMTM5LCAyNTAsIDIwNSwgMjQ3LCAyNDgsIDgyLCAxMzksIDI1MCwgMjA1LCAyMzksIDI0NSwgODIsIDEzOSwgMjUwLCAyMDUsIAotICAgIDIxNCwgMTcxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA5LCA2MSwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMTQwLCA4MiwgCi0gICAgMTM5LCAyNTAsIDIwNSwgMjM3LCA1MiwgODIsIDEzOSwgMjUwLCAyMDUsIDI0MSwgMTgwLCA4MiwgMTM5LCAyNTAsIDIwNSwgCi0gICAgMjI1LCAxMjMsIDgyLCAyNDgsIDEsIDEsIDI0NywgMTkzLCAyNDgsIDEsIDEsIDIwMiwgMzksIDI0OCwgMSwgMSwgMjMwLCAKLSAgICAxNDEsIDI0OCwgMSwgMSwgMjM3LCAyMzAsIDI0OCwgMSwgMSwgMjQxLCAxNjEsIDI0OCwgMSwgMSwgMjQxLCA3NSwgMjQ4LCAKLSAgICAxLCAxLCAyMjAsIDE4LCAyNDgsIDEsIDEsIDIyMCwgMjIsIDI0OCwgMSwgMSwgMjMwLCAyMjQsIDI0OCwgMSwgMSwgMjUwLCAKLSAgICAyMDcsIDI0OCwgMSwgMSwgMjMxLCAxNiwgMjQ4LCAxLCAxLCAyMDYsIDIyOSwgMjQ4LCAxLCAxLCAyMzEsIDY2LCAyNDgsIDEsIAotICAgIDEsIDIyMiwgMTgzLCAyNDgsIDEsIDEsIDI1MSwgNTgsIDI0OCwgMSwgMSwgMjUwLCAyOSwgMjQ4LCAxLCAxLCAyNTAsIDI0NywgCi0gICAgMjQ4LCAxLCAxLCAyMjAsIDM5LCAyNDgsIDEsIDEsIDIyMCwgMjQsIDI0OCwgMSwgMSwgMjMxLCAxMywgMjQ4LCAxLCA0NiwgCi0gICAgMSwgMjE5LCAxODQsIDI0OCwgMSwgNDYsIDEsIDIxMCwgNjksIDI0OCwgMSwgNDYsIDEsIDIzMCwgNTQsIDI0OCwgMSwgNDYsIAotICAgIDEsIDIzNywgMTcxLCAyNDgsIDEsIDEsIDIzOCwgMTIwLCAyNDgsIDEsIDEsIDIyNywgMTYyLCAyNDgsIDEsIDEsIDIwMSwgCi0gICAgMjQyLCAxMiwgMjExLCAzMiwgMjEwLCA2OSwgMTIsIDIxMSwgMzIsIDIwNCwgNDEsIDEyLCAyMTEsIDMyLCAyMDMsIDE3MSwgCi0gICAgMTIsIDIxMSwgMzIsIDI0NywgMTM4LCAxMiwgMjExLCAzMiwgMjEwLCAxNzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMCwgMTIsIAotICAgIDIxMSwgMzIsIDIzNSwgMjE0LCAxMiwgMjExLCAzMiwgMjM2LCAzNSwgMTIsIDIxMSwgMzIsIDIzNSwgMjExLCAxMiwgMjExLCAKLSAgICAzMiwgMjEwLCA3MiwgMTIsIDIxMSwgMzIsIDIzNSwgMjEzLCAxMiwgMjExLCAzMiwgMjM1LCAyMDksIDEyLCAyMTEsIDMyLCAKLSAgICAyMzYsIDMzLCAxMiwgMjExLCAzMiwgMjM1LCAyMTIsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOCwgMTIsIDIxMSwgMzIsIDIyMywgCi0gICAgMTYzLCAxMiwgMjExLCAzMiwgMjM3LCAxNzEsIDEyLCAyMTEsIDMyLCAxOTQsIDEyLCAyMTEsIDMyLCAyMTksIDE4NCwgMTIsIAotICAgIDIxMSwgMzIsIDIxMSwgMjMxLCAxMiwgMjExLCAzMiwgMjQ1LCA1MSwgMTIsIDIxMSwgMzIsIDIzNSwgMjE1LCAxMiwgMjExLCAKLSAgICAzMiwgMjM3LCAxMywgMTIsIDIxMSwgMzIsIDIxMCwgODEsIDEyLCAyMTEsIDMyLCAyMTAsIDE1MiwgMTIsIDIxMSwgMzIsIAotICAgIDIxMSwgMTA4LCAxMiwgMjExLCAzMiwgMjEzLCA5OCwgMTIsIDIxMSwgMzIsIDIxOSwgMzgsIDEyLCAyMTEsIDMyLCAyMTcsIAotICAgIDEzNiwgMTIsIDIxMSwgMzIsIDIwOCwgMTc0LCAxMiwgMjExLCAzMiwgMjEwLCA3MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTYzLCAKLSAgICAxMiwgMjExLCAzMiwgMjM1LCAyMjMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwNywgMTIsIDIxMSwgMzIsIDIxOCwgMjEwLCAxMiwgCi0gICAgMjExLCAzMiwgMjE3LCAxMzQsIDY3LCAxLCA1LCAyMjgsIDIwOSwgNjcsIDEsIDUsIDIxMiwgMTYyLCA2NywgMSwgNSwgMjExLCAKLSAgICAxMCwgNjcsIDEsIDUsIDEzNSwgNjcsIDEsIDUsIDIyMSwgODQsIDY3LCAxLCA1LCAxNTIsIDY3LCAxLCA1LCAyMzcsIDMsIAotICAgIDY3LCAxLCA1LCAyMzYsIDI2LCA2NywgMSwgNSwgMjM3LCA2NywgNjcsIDEsIDUsIDIzNiwgMTM2LCA2NywgMSwgNSwgMjIzLCAKLSAgICAyNDYsIDY3LCAxLCA1LCAyMTYsIDIyMCwgNjcsIDEsIDUsIDIxNiwgNTcsIDY3LCAxLCA1LCAyMTUsIDE0NSwgNjcsIDEsIDUsIAotICAgIDIxNiwgMTU4LCA2NywgMSwgNSwgMjE1LCAyMjcsIDEwMiwgMjgsIDIyOSwgNTksIDEwMiwgMjgsIDIyMiwgOTMsIDEwMiwgCi0gICAgMjgsIDIwOCwgMjQwLCAxMDIsIDI4LCAyMTYsIDQ3LCAxMDIsIDI4LCAyMjQsIDE0MSwgMTAyLCAyOCwgMjE4LCAxNTMsIAotICAgIDEwMiwgMjgsIDIxMiwgMTExLCAxMDIsIDI4LCAyMzEsIDEwNiwgMTAyLCAyOCwgMjQ2LCA3NCwgMTAyLCAyOCwgMjQ2LCAKLSAgICAxMzgsIDEwMiwgMjgsIDIyOSwgMTIwLCAxMDIsIDI4LCAyMDksIDY2LCAxMDIsIDI4LCAyMTgsIDE5MCwgMTAyLCAyOCwgCi0gICAgMjM2LCAyNTEsIDEwMiwgMjgsIDIyOSwgNjAsIDYzLCAxMDIsIDI4LCAyMjIsIDk0LCA2MywgMTAyLCAyOCwgMjA4LCAyNDEsIAotICAgIDYzLCAxMDIsIDI4LCAyMTYsIDQ4LCA2MywgMTAyLCAyOCwgMjI0LCAxNDIsIDYzLCAxMDIsIDI4LCAyMTgsIDE1NCwgNjMsIAotICAgIDEwMiwgMjgsIDIxMiwgMTEyLCA2MywgMTAyLCAyOCwgMjMxLCAxMDcsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2MywgMTAyLCAKLSAgICAyOCwgMjQ2LCAxMzksIDYzLCAxMDIsIDI4LCAyMjksIDEyMSwgNjMsIDEwMiwgMjgsIDIwOSwgNjcsIDYzLCAxMDIsIDI4LCAKLSAgICAyMTgsIDE5MSwgNjMsIDEwMiwgMjgsIDIzNiwgMjUyLCA2MywgMTAyLCAyOCwgMjQ2LCA3NSwgNjgsIDEwMiwgMjI4LCAyNTMsIAotICAgIDE2NywgMjIwLCA1NCwgMTAyLCAyMjgsIDI1MywgMTY3LCAxNTgsIDIzNiwgMjYsIDEwMiwgMTg5LCAxMDUsIDEwMiwgMTg5LCAKLSAgICAxMDgsIDEwMiwgMTg5LCAxNDcsIDEwMiwgMTg5LCAxNDksIDEwMiwgMTg5LCAxNzAsIDEwMiwgMTg5LCAxOTUsIDEwMiwgCi0gICAgMTg5LCAyMTMsIDExMSwgMTAyLCAxODksIDE5OSwgMTAyLCAxODksIDIyMiwgNjMsIDEwMiwgMTg5LCAyMDksIDE1MiwgMTAyLCAKLSAgICAxODksIDIyNCwgMjksIDEwMiwgMTg5LCAyMzksIDI0OSwgMTAyLCAxODksIDIwNCwgODAsIDEwMiwgMTg5LCAyMDMsIDI0MywgCi0gICAgMTAyLCAxODksIDIyNCwgMjIwLCAxMDIsIDE4OSwgMjQxLCAxNzksIDEwMiwgMTg5LCAyMTAsIDIxNCwgMTAyLCAxODksIAotICAgIDIxMSwgNjQsIDEwMiwgMTg5LCAyMzcsIDc0LCAxMDIsIDE4OSwgMjEyLCA5LCAxMDIsIDE4OSwgMjIzLCA4NCwgMTAyLCAKLSAgICAxODksIDIxMSwgMjEzLCAxMDIsIDE4OSwgMjQwLCA0LCAxMDIsIDE4OSwgMjQ1LCAyMTEsIDEwMiwgMTg5LCAyMjgsIDEwMiwgCi0gICAgMTAyLCAxODksIDIxNiwgOTUsIDEwMiwgMTg5LCAyNDcsIDcxLCAxMDIsIDE4OSwgMjExLCAxNCwgMTAyLCAxODksIDIxMCwgCi0gICAgMTk2LCAxMDIsIDE4OSwgMjQxLCA2NSwgMTAyLCAxODksIDIxNiwgODcsIDEwMiwgMTg5LCAyNTEsIDEwLCAxMDIsIDE4OSwgCi0gICAgMjQwLCAzMywgMTAyLCAxODksIDIxNiwgODUsIDEwMiwgMTg5LCAyMTMsIDE0OSwgMTAyLCAxODksIDIxNiwgMTU3LCA0MywgCi0gICAgMTg5LCAyMTcsIDQ2LCA0MywgMTg5LCAyMjksIDgzLCA0MywgMTg5LCAyMTQsIDE5NSwgNDMsIDE4OSwgMjI4LCAyNDksIDQzLCAKLSAgICA0MiwgMjA5LCAxNTMsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMDcsIDE1MiwgMjIwLCAzMiwgNjIsIDIxMSwgCi0gICAgMTc3LCA0MywgNDIsIDIwOSwgNTQsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMzksIDE1NCwgMjIwLCAzMiwgCi0gICAgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDI0MCwgMTksIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTIsIDc1LCAKLSAgICAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjEzLCAxMDYsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAKLSAgICAyNDEsIDEzNSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCAyMTksIDY3LCA1NCwgNDMsIDQyLCAyMDcsIDE1MiwgMTA1LCA0MywgCi0gICAgNDIsIDIwNywgMTUyLCAxMDgsIDQzLCA0MiwgMjA3LCAxNTIsIDE0NywgNDMsIDQyLCAyMDcsIDE1MiwgMTQ5LCA0MywgNDIsIAotICAgIDIwNywgMTUyLCAxNzAsIDQzLCA0MiwgMjA3LCAxNTIsIDE5NSwgNDMsIDQyLCAyMDcsIDE1MiwgMjEzLCAxMTEsIDQzLCA0MiwgCi0gICAgMjA3LCAxNTIsIDE5OSwgNDMsIDQyLCAyMDcsIDE1MiwgMjIyLCA2MywgNDMsIDQyLCAyMDksIDUzLCA0MywgNDIsIDIwOSwgCi0gICAgNTQsIDEwNSwgNDMsIDQyLCAyMDksIDU0LCAxMDgsIDQzLCA0MiwgMjA5LCA1NCwgMTQ3LCA0MywgNDIsIDIwOSwgNTQsIAotICAgIDE0OSwgNDMsIDQyLCAyMDksIDU0LCAxNzAsIDQzLCAyOCwgMjI5LCA1OSwgNDMsIDI4LCAyMjIsIDkzLCA0MywgMjgsIDIwOCwgCi0gICAgMjQwLCA0MywgMjgsIDIxNiwgNDcsIDQzLCAyOCwgMjI0LCAxNDEsIDQzLCAyOCwgMjE4LCAxNTMsIDQzLCAyOCwgMjEyLCAKLSAgICAxMTEsIDQzLCAyOCwgMjMxLCAxMDYsIDQzLCAyOCwgMjQ2LCA3NCwgNDMsIDI4LCAyNDYsIDEzOCwgNDMsIDI4LCAyMjksIAotICAgIDEyMCwgNDMsIDI4LCAyMDksIDY2LCA0MywgMjgsIDIxOCwgMTkwLCA0MywgMjgsIDIzNiwgMjUxLCA0MywgMjgsIDIyOSwgCi0gICAgNjAsIDYzLCA0MywgMjgsIDIyMiwgOTQsIDYzLCA0MywgMjgsIDIwOCwgMjQxLCA2MywgNDMsIDI4LCAyMTYsIDQ4LCA2MywgCi0gICAgNDMsIDI4LCAyMjQsIDE0MiwgNjMsIDQzLCAyOCwgMjE4LCAxNTQsIDYzLCA0MywgMjgsIDIxMiwgMTEyLCA2MywgNDMsIDI4LCAKLSAgICAyMzEsIDEwNywgNjMsIDQzLCAyOCwgMjQ2LCA3NSwgNjMsIDQzLCAyOCwgMjQ2LCAxMzksIDYzLCA0MywgMjgsIDIyOSwgCi0gICAgMTIxLCA2MywgNDMsIDI4LCAyMDksIDY3LCA2MywgNDMsIDI4LCAyMTgsIDE5MSwgNjMsIDQzLCAyOCwgMjM2LCAyNTIsIDYzLCAKLSAgICA0MywgMjI4LCAyNTMsIDE2NywgMjQ2LCAxODksIDQzLCAyMjgsIDI1MywgMTY3LCAyMzAsIDc4LCA0MywgMjgsIDIzMSwgCi0gICAgMTA3LCA2OCwgMjI4LCAyNTMsIDIxMSwgOTcsIDk3LCA0MywgMTg5LCAxMDUsIDQzLCAxODksIDEwOCwgNDMsIDE4OSwgMTQ3LCAKLSAgICA0MywgMTg5LCAxNDksIDQzLCAxODksIDE3MCwgNDMsIDE4OSwgMTk1LCA0MywgMTg5LCAyMTMsIDExMSwgNDMsIDE4OSwgCi0gICAgMTk5LCA0MywgMTg5LCAyMjIsIDYzLCA0MywgMTg5LCAyMDksIDE1MiwgNDMsIDE4OSwgMjI0LCAyOSwgNDMsIDE4OSwgMjM5LCAKLSAgICAyNDksIDQzLCAxODksIDIwNCwgODAsIDQzLCAxODksIDIwMywgMjQzLCA0MywgMTg5LCAyMjQsIDIyMCwgNDMsIDE4OSwgCi0gICAgMjQxLCAxNzksIDQzLCAxODksIDIxMCwgMjE0LCA0MywgMTg5LCAyMTEsIDY0LCA0MywgMTg5LCAyMzcsIDc0LCA0MywgMTg5LCAKLSAgICAyMTIsIDksIDQzLCAxODksIDIyMywgODQsIDQzLCAxODksIDIxMSwgMjEzLCA0MywgMTg5LCAyNDAsIDQsIDQzLCAxODksIAotICAgIDI0NSwgMjExLCA0MywgMTg5LCAyMjgsIDEwMiwgNDMsIDE4OSwgMjE0LCAxNjksIDQzLCAxODksIDIyNSwgMTI2LCA0MywgCi0gICAgMTg5LCAyNDAsIDQyLCA0MywgMTg5LCAyMTAsIDIyNiwgNDMsIDE4OSwgMjQwLCAyMTYsIDQzLCAxODksIDIxNywgMjMzLCAKLSAgICA0MywgMTg5LCAyNTAsIDM4LCA0MywgMTg5LCAyMzAsIDIwMCwgNDMsIDE4OSwgMjE2LCA4NSwgNDMsIDE4OSwgMjQ1LCAxNzAsIAotICAgIDQzLCAxODksIDI0NSwgMTYwLCA0MywgMTg5LCAyMzYsIDI0NCwgNDMsIDE4OSwgMjQ2LCAyMTcsIDQzLCAxODksIDIyNywgMCwgCi0gICAgNDMsIDE4OSwgMjI3LCAyMjIsIDQzLCAxODksIDIxNiwgMTYsIDQzLCAxODksIDIyNSwgMTEsIDQzLCAxODksIDIxNiwgMTEyLCAKLSAgICA0MywgMTg5LCAyMTEsIDE0LCA0MywgMTg5LCAyMTAsIDE5NiwgNDMsIDE4OSwgMjQxLCA2NSwgNDMsIDE4OSwgMjE2LCA4NywgCi0gICAgNDMsIDE4OSwgMjUxLCAxMCwgNDMsIDE4OSwgMjIyLCA3OSwgNDMsIDQyLCAyMDksIDU0LCAxOTUsIDQzLCA0MiwgMjA5LCAKLSAgICA1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjA5LCA1NCwgMTk5LCA0MywgNDIsIDIwOSwgNTQsIDIyMiwgNjMsIDQzLCA0MiwgCi0gICAgMjM5LCAxNTMsIDQzLCA0MiwgMjM5LCAxNTQsIDEwNSwgNDMsIDQyLCAyMzksIDE1NCwgMTA4LCA0MywgNDIsIDIzOSwgMTU0LCAKLSAgICAxNDcsIDQzLCA0MiwgMjM5LCAxNTQsIDE0OSwgNDMsIDQyLCAyMzksIDE1NCwgMTcwLCA0MywgNDIsIDIzOSwgMTU0LCAxOTUsIAotICAgIDQzLCA0MiwgMjM5LCAxNTQsIDIxMywgMTExLCA0MywgNDIsIDIzOSwgMTU0LCAxOTksIDQzLCA0MiwgMjM5LCAxNTQsIDIyMiwgCi0gICAgNjMsIDQzLCA0MiwgMjQwLCAxOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDE3MSwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDAsIDU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyNSwgOTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAKLSAgICAxNTAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDc2LCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAzMCwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMTMsIDEyOSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjAsIDc5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIyMSwgMTUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgNzAsIDUxLCAyMzcsIDEzLCA1MSwgMjQxLCAyNCwgNTEsIAotICAgIDI0MCwgMjI2LCAyMjcsIDEyMCwgMjI3LCAxNDcsIDU0LCA0MywgNjcsIDYzLCA0MywgNjcsIDc1LCA0MywgNjcsIDY4LCA0MywgCi0gICAgNjcsIDc0LCA0MywgNjcsIDc4LCA0MywgNjcsIDE3MywgNDMsIDY3LCAyMjksIDEwMCwgNDMsIDY3LCAyMjgsIDIwOSwgNDMsIAotICAgIDY3LCAyMjksIDIwMSwgNDMsIDY3LCAyMjksIDI2LCA0MywgNjcsIDIxNSwgMzYsIDQzLCA2NywgMjEyLCAxNjIsIDQzLCA2NywgCi0gICAgMjExLCAxMCwgNDMsIDY3LCAyMTQsIDE3NywgNDMsIDY3LCAyMTIsIDEzLCA0MywgNjcsIDIxMCwgMjIsIDQzLCA2NywgMjA5LCAKLSAgICAyLCA0MywgNjcsIDIwNywgMjAzLCA0MywgNjcsIDIwOSwgMTg3LCA0MywgNjcsIDEzNSwgNDMsIDY3LCAyMDEsIDIwMSwgNDMsIAotICAgIDY3LCAyMjIsIDEwMCwgNDMsIDY3LCAyMjEsIDg0LCA0MywgNjcsIDIyMiwgMjQwLCA0MywgNjcsIDIyMSwgMTkxLCA0MywgCi0gICAgNjcsIDE1MiwgNDMsIDY3LCAyMzcsIDMsIDQzLCA2NywgMjM2LCAyNiwgNDMsIDY3LCAyMzcsIDY3LCA0MywgNjcsIDIzNiwgCi0gICAgMTM2LCA0MywgNjcsIDE5MiwgNDMsIDY3LCAyMjQsIDE1NSwgNDMsIDY3LCAyMjMsIDI0NiwgNDMsIDY3LCAyMjUsIDIwLCAKLSAgICA0MywgNjcsIDIyNCwgODIsIDQzLCA2NywgMTk4LCA0MywgNjcsIDIwMiwgMjEzLCA0MywgNjcsIDIwMiwgMjQ3LCA0MywgNjcsIAotICAgIDIxNiwgMjIwLCA0MywgNjcsIDIxNiwgNTcsIDQzLCA2NywgMjE1LCAxNDUsIDQzLCA2NywgMjE2LCAxNTgsIDQzLCA2NywgCi0gICAgMjE1LCAyMjcsIDQzLCA2NywgMjA0LCAxMTEsIDQzLCA2NywgMjA0LCAzMCwgNDMsIDY3LCAyMDQsIDYyLCA0MywgNjcsIAotICAgIDIwNCwgMCwgNTEsIDI1MCwgMTc0LCA1MSwgMjUwLCA4MywgNTEsIDI1MCwgMjAxLCA1MSwgMjUxLCAyMzksIDUxLCAyMzEsIAotICAgIDE4LCA1MSwgMjMwLCAyNDIsIDUxLCAyMDYsIDIyNywgNTEsIDI0MCwgMjUzLCA1MSwgMjQxLCAxNTgsIDUxLCAyMjAsIDIxLCAKLSAgICA1MSwgMjIwLCAxNCwgNTEsIDIzMCwgMTYsIDUxLCAyMjksIDIzOCwgNTEsIDIyOSwgMjM1LCA1MSwgMjM4LCAyMjAsIDUxLCAKLSAgICAyMzgsIDIyOSwgNTEsIDIzOCwgNzAsIDUxLCAyMzgsIDY2LCA1MSwgMjI4LCAxMzIsIDUxLCAyMzgsIDU4LCA1MSwgMjI5LCAKLSAgICA3NSwgNTEsIDIyOSwgNzQsIDUxLCAyMjksIDczLCA1MSwgMjI5LCA3MiwgNTEsIDIzNywgMjAwLCA1MSwgMjM3LCAxOTksIAotICAgIDUxLCAyMjgsIDE4MCwgNTEsIDIyOCwgMTgyLCA1MSwgMjI5LCAxOTQsIDUxLCAyMjgsIDI1MSwgNTEsIDIyOSwgMywgNTEsIAotICAgIDIxNSwgMTcsIDUxLCAyMTQsIDIzNiwgNTEsIDIxMiwgOTIsIDUxLCAyMTMsIDEzNCwgNTEsIDIxMywgMTMzLCA1MSwgMjQ0LCAKLSAgICAyMDksIDUxLCAyNDQsIDE0LCA1MSwgMjQzLCA4NiwgNTEsIDIwOCwgMTYzLCA1MSwgMjIzLCA3OSwgNTEsIDIyMSwgMTU0LCAKLSAgICA1MSwgMjM3LCAxNDIsIDUxLCAyMTksIDE2MywgNTEsIDIxOSwgMTYyLCA1MSwgMjQ5LCAyOSwgNTEsIDIxOCwgMTY0LCA1MSwgCi0gICAgMjE4LCAxMjcsIDUxLCAyMTgsIDEyOCwgNTEsIDI0OCwgNTcsIDUxLCAyMzYsIDI0LCA1MSwgMjM2LCAxOSwgNTEsIDI0NywgCi0gICAgMTUxLCA1MSwgMjM2LCA0LCA1MSwgMjM3LCAzOSwgNTEsIDIxOCwgMjIwLCA1MSwgMjE5LCA0LCA1MSwgMjM3LCAyMiwgNTEsIAotICAgIDIxOSwgMCwgNTEsIDIxOSwgMTgsIDUxLCAyNDgsIDE0NSwgNTEsIDIxOCwgNTgsIDUxLCAyNDcsIDI1MywgNTEsIDIzNiwgCi0gICAgMTIwLCA1MSwgMjE4LCA0NiwgNTEsIDIzNiwgMTExLCA1MSwgMjM2LCAxMTMsIDUxLCAyMjUsIDEzOCwgNTEsIDIyNSwgMTM0LCAKLSAgICA1MSwgMjI1LCAxNDMsIDUxLCAyMjUsIDgzLCA1MSwgMjI1LCAxMTAsIDUxLCAyMjQsIDEyMSwgNTEsIDIyNCwgOTcsIDUxLCAKLSAgICAyMjQsIDk2LCA1MSwgMjI1LCAwLCA1MSwgMjI0LCAyNTMsIDUxLCAyMjUsIDEsIDUxLCAyMDMsIDEwOSwgNTEsIDIwMywgCi0gICAgMTA3LCA1MSwgMjAyLCAyMDIsIDUxLCAyMTUsIDI0MywgNTEsIDIxNSwgMjQ3LCA1MSwgMjE1LCAxMTksIDUxLCAyMTUsIAotICAgIDExMywgNTEsIDIxNiwgMTA5LCA1MSwgMjE2LCAxMDYsIDUxLCAyMDQsIDc4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgCi0gICAgNDMsIDIwMiwgODQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE3MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjM2LCA0MywgMTk5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIyMiwgNjMsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxMTIsIAotICAgIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgCi0gICAgMjA5LCA1NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMzksIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxNDAsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIAotICAgIDE1MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0MiwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NywgNTEsIDIzNiwgMzQsIDUxLCAyNDQsIDIxMiwgNTEsIDI1MCwgMzQsIAotICAgIDUxLCAxNDIsIDUxLCAyMTksIDIwNiwgNTEsIDIxOSwgMzksIDUxLCAyNDMsIDExNSwgNTEsIDI0MywgMTE2LCAyMTEsIDE3NiwgCi0gICAgNTEsIDI0MywgMTE2LCAyNDUsIDEwNSwgNTEsIDIzMCwgMTk3LCA1MSwgMjQxLCAyNywgMjIzLCA4NSwgMjM3LCA0MCwgNTEsIAotICAgIDI0MSwgMjcsIDIyMywgODUsIDIxMCwgOTIsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMDksIDI0NSwgNTEsIDI0MSwgMjcsIAotICAgIDIyMywgODUsIDIyNCwgMjUyLCA1MSwgMjQ1LCAxNjIsIDUxLCAyMTksIDE2OSwgMjUwLCAyMzMsIDUxLCAyMDEsIDIwMSwgCi0gICAgNTEsIDIyMywgMjQ3LCA2MywgNTEsIDE5MiwgNTEsIDE3MywgNTEsIDIyOSwgMjA0LCA1MSwgMjI1LCA1OSwgNTEsIDIzOCwgCi0gICAgMjA4LCA1MSwgMjQ3LCA3NiwgNTEsIDIyOSwgMjAzLCA1MSwgMjE4LCAyMTEsIDUxLCAyMjIsIDIwNywgNTEsIDIyMywgMjQ3LCAKLSAgICAyNDAsIDE3NCwgNTEsIDIyMywgMjQ3LCAyMzksIDc1LCA1MSwgMjI0LCAxOTYsIDUxLCAyMjksIDE0NiwgNTEsIDIzNSwgCi0gICAgMjE1LCA1MSwgMjI5LCAxMDIsIDUxLCAyMjQsIDE1NywgNTEsIDIzOCwgODMsIDUxLCAyMDksIDQsIDUxLCAyMjMsIDI0NywgCi0gICAgMTU5LCA1MSwgMjI0LCA5MCwgNTEsIDI0MywgMTI1LCA1MSwgMjI5LCA0MSwgNTEsIDIzOSwgMTg4LCA1MSwgMjIxLCAyMjksIAotICAgIDUxLCAyMjMsIDI0NywgMjI2LCAxODUsIDUxLCAyMjQsIDg3LCA1MSwgMjQ1LCAyNTUsIDUxLCAyMjksIDM1LCA1MSwgMjI0LCAKLSAgICA4OCwgMjExLCAxNzYsIDUxLCAyNDYsIDAsIDIxMSwgMTc2LCA1MSwgMjI2LCAxODYsIDIxMSwgMTc2LCA1MSwgMjI5LCAzNiwgCi0gICAgMjExLCAxNzYsIDUxLCAyMjQsIDg4LCAyNDUsIDEwNSwgNTEsIDI0NiwgMCwgMjQ1LCAxMDUsIDUxLCAyMjYsIDE4NiwgMjQ1LCAKLSAgICAxMDUsIDUxLCAyMjksIDM2LCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAxMTUsIDE5NCwgNTEsIDIyNiwgMTg2LCAxMTUsIAotICAgIDIxNSwgOTQsIDIxMSwgMTc2LCA1MSwgMTg1LCA1MSwgMjI4LCAyNDQsIDUxLCAyMjMsIDI1MCwgNTEsIDIzOCwgMTUsIDUxLCAKLSAgICAyMTYsIDIwNywgNTEsIDIxNiwgMjA4LCAxMTUsIDE5NCwgNTEsIDIxNiwgMjA4LCAxMTUsIDIxNSwgOTQsIDIxMSwgMTc2LCAKLSAgICA1MSwgMjE3LCAyMDQsIDUxLCAyMjEsIDEyMiwgNTEsIDIyMywgMjQ3LCAxOTQsIDUxLCAyMjMsIDI0OCwgNTEsIDIxNywgCi0gICAgMTU0LCA1MSwgMjIxLCAyMiwgNTEsIDIyMywgMjQ3LCAyMDYsIDE2NCwgNTEsIDIyMywgMTg3LCA1MSwgMjI4LCAxNzAsIDUxLCAKLSAgICAyMjMsIDE4OCwgMjI1LCAwLCA1MSwgMjE3LCAxNTMsIDUxLCAyMjEsIDIxLCA1MSwgMjIzLCAyNDcsIDIwNCwgMTQ0LCA1MSwgCi0gICAgMjIzLCAxODEsIDUxLCAyMjgsIDE2OCwgNTEsIDIyMywgMTgyLCAyMjUsIDAsIDUxLCAyMzAsIDU1LCAyMjAsIDU4LCA1MSwgCi0gICAgMjI2LCAxODYsIDIyMCwgNTgsIDUxLCAyNTAsIDI0NywgNTEsIDI0NywgMjI5LCA1MSwgMjQ3LCA2LCA1MSwgMjQ2LCAyMzksIAotICAgIDUxLCAyNDcsIDEyNiwgMTE1LCAyMjksIDE0NiwgNTEsIDI0NSwgMjU0LCA1MSwgMjQ0LCAxMjksIDUxLCAyMzcsIDE4NCwgCi0gICAgNTEsIDE1MiwgNTEsIDIzNiwgMzUsIDUxLCAyMzEsIDQ5LCA1MSwgMjI5LCA0OCwgNTEsIDIyOSwgMzYsIDI0NywgNDcsIDUxLCAKLSAgICAyMjgsIDIxMSwgNTEsIDIyNywgNTIsIDUxLCAyMjcsIDUxLCA1MSwgMjI3LCAzOCwgNTEsIDIyNiwgMjAwLCA1MSwgMjI1LCAKLSAgICA2MCwgMjEyLCAzNiwgNTEsIDIyNCwgMTIwLCA1MSwgMjI0LCA1NiwgNTEsIDIxOCwgMjA5LCA1MSwgMjE4LCA3MiwgNTEsIAotICAgIDIxOCwgMTEsIDUxLCAyMTgsIDksIDUxLCAyMTEsIDE2OCwgNTEsIDIxMCwgMTc3LCA1MSwgMjA0LCA2NCwgNTEsIDIwNiwgCi0gICAgMTY1LCAxMTUsIDIyNiwgMTg1LCA1MSwgMzQsIDExNSwgMjI2LCAxODUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAKLSAgICAxMzMsIDEwNSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE0OSwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDQsIDEzMywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMywgMTExLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTksIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAotICAgIDIwOSwgMTUyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDExMiwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDQsIDEzMywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTUsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAKLSAgICAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMTIsIDgyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjQxLCAxNDAsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgCi0gICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMjA3LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKLSAgICAxNDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMDcsIDE0NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNTAsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ2LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIAotICAgIDUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIDUyLCA1MSwgMjM4LCAyNDYsIDIzNywgMTYsIDM1LCAKLSAgICAyMDksIDkzLCAyNDUsIDE0MiwgMjM3LCA1MSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIxNiwgMTUxLCAyNDEsIDE3OSwgCi0gICAgMjM3LCAxNiwgMzUsIDI0MywgMjAzLCAyNTAsIDUwLCAyMDksIDkzLCAyNDgsIDE0MCwgMjM3LCAxNiwgMzUsIDIwMiwgMjI2LCAKLSAgICAyMzksIDE4MCwgMjM3LCAxNiwgMzUsIDIwNCwgMTAzLCAyMzcsIDE2LCAzNSwgMjQ1LCAyMTQsIDIzNywgMTYsIDM1LCAyMDksIAotICAgIDkzLCAyNTAsIDEwNSwgMjM3LCAxNiwgMzUsIDIzNiwgMTI3LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIDUsIDIwOSwgMjMxLCAKLSAgICAyMzcsIDE2LCAzNSwgMjA4LCA5NywgMjM3LCAxNiwgMzUsIDIxOSwgMzIsIDIzNywgMTYsIDM1LCAyMTEsIDk2LCAyMzcsIAotICAgIDE2LCAzNSwgMjQwLCA0NCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDMyLCAyMzcsIDE2LCAzNSwgMjI0LCA3NSwgCi0gICAgMjM3LCAxNiwgMzUsIDI0MSwgNjQsIDIzNywgMTYsIDM1LCAyMzksIDE4MSwgMjM3LCAxNiwgMzUsIDIwMywgMjM2LCAyMjAsIAotICAgIDMyLCAyMDksIDkzLCAyNDQsIDcxLCAyMzcsIDE2LCAzNSwgMjUwLCAxNTQsIDIzNywgMTYsIDM1LCAyNDUsIDE5MywgMjM3LCAKLSAgICAxNiwgMzUsIDI0OCwgNDksIDIwOSwgMjQsIDIzNywgMTYsIDM1LCAyMzgsIDEzLCAyMzcsIDE2LCAzNSwgMjExLCAxOTIsIAotICAgIDI1MCwgMTczLCAyMzcsIDE2LCAzNSwgMjE2LCA3NywgMjM3LCAxNiwgMzUsIDIzMSwgMTIsIDIzNywgMTYsIDM1LCAyMzcsIAotICAgIDI0OSwgMjA5LCAyMzEsIDIzNywgMTYsIDM1LCAyMjQsIDgsIDI0NSwgMTY0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxNywgCi0gICAgMjQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjUxLCAxNDMsIDIwNCwgODAsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDYsIAotICAgIDI0LCAyMzksIDI0OSwgMjM3LCAxNiwgMzUsIDIzMSwgMjYsIDIzNywgMTYsIDM1LCAyNDIsIDIwLCAyMzcsIDE2LCAzNSwgCi0gICAgMjE2LCA4MCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDE2LCAyMzcsIDE2LCAzNSwgMjE3LCAyMjEsIDIzNywgMTYsIAotICAgIDM1LCAyNDQsIDE0OSwgNzYsIDIwOSwgOTMsIDIyNywgMTM0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQwLCA4MiwgMjM3LCAKLSAgICAxNiwgMzUsIDIxOSwgMjUwLCAyMzcsIDE2LCAzNSwgMjIwLCA4NSwgMjM3LCAxNiwgMzUsIDI0NCwgNDIsIDIzNywgMTYsIAotICAgIDM1LCAyNDQsIDYzLCAyMzcsIDE2LCAzNSwgMjMxLCA0MCwgMjM3LCAxNiwgMzUsIDI0NywgMjE3LCAyMzcsIDE2LCAzNSwgCi0gICAgMjQ1LCAyMzUsIDIwOCwgMTczLCAyMjUsIDMsIDIzNywgMTYsIDM1LCAyMzgsIDIxNSwgMjA4LCAxNjksIDIzNywgMTYsIDM1LCAKLSAgICAyMTcsIDE2MywgMjA2LCAyMTMsIDIzNywgMTYsIDM1LCAyMTksIDI0OSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIwNCwgNTAsIAotICAgIDIzNywgMTYsIDM1LCAyMTYsIDY4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQ3LCAxMiwgMjM3LCAxNiwgMzUsIDIwOSwgCi0gICAgOTMsIDI1MCwgMTAxLCAyMDksIDE4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjI5LCAxOTUsIDIxMSwgNjgsIDIyNCwgMTIsIAotICAgIDIzNywgMTYsIDM1LCAyNDQsIDksIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjUsIDg1LCAyMjUsIDEzOSwgMjM3LCAxNiwgCi0gICAgMzUsIDI1MSwgMTQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA5NiwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIzOCwgCi0gICAgMTczLCAyMDQsIDE2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjMwLCA4NCwgMjI4LCAzMywgMjM3LCAxNiwgMzUsIDI0MywgCi0gICAgMTUzLCAyMzcsIDE2LCAzNSwgMjI3LCAxMjEsIDIzNywgMTYsIDM1LCAyMzEsIDE1LCAyMDgsIDI0LCAyMzcsIDE2LCAzNSwgCi0gICAgNSwgMjE3LCAyNDQsIDIzNywgMTYsIDM1LCAyNTEsIDgyLCAyNDUsIDIyNiwgMjM3LCAxNiwgMzUsIDI0OCwgMTQzLCAyNDUsIAotICAgIDIyNiwgMTEsIDQsIDIzMCwgMjAxLCAxMSwgNCwgMjMwLCAxOTMsIDExLCA0LCA3NSwgMTEsIDQsIDIzMCwgMjI3LCAxMSwgNCwgCi0gICAgMjMxLCAxMDgsIDExLCA0LCAyMzEsIDkxLCAxMSwgNCwgMjMxLCAxMTAsIDExLCA0LCAyMzEsIDEwOSwgMTEsIDQsIDI1MCwgCi0gICAgNDksIDExLCA0LCAyNTAsIDEwLCAxMSwgNCwgNjMsIDExLCA0LCAyNTAsIDE3NSwgMTEsIDQsIDIwNiwgMjI1LCAxMSwgNCwgCi0gICAgMjA2LCAyMjgsIDExLCA0LCAyMDYsIDIyNiwgMTEsIDQsIDIxOSwgMjI0LCAxMSwgNCwgMjE5LCAxOTMsIDExLCA0LCA3OCwgCi0gICAgMTEsIDQsIDIyMCwgOSwgMTEsIDQsIDI0MCwgMjE3LCAxMSwgNCwgNzQsIDExLCA0LCAyMDMsIDIxNywgMTEsIDQsIDI0OCwgCi0gICAgNTEsIDExLCA0LCAyNDgsIDQ3LCAxMSwgNCwgMjQ4LCA4NiwgMTEsIDQsIDI0OCwgNjEsIDExLCA0LCAyNDgsIDc1LCAxMSwgCi0gICAgNCwgMjQ4LCA3NCwgMTEsIDQsIDI0OCwgNzcsIDExLCA0LCAyNDgsIDc2LCAxMSwgNCwgMjQ4LCAyMDksIDExLCA0LCAyNDgsIAotICAgIDIwMSwgMTEsIDQsIDI0OSwgMzIsIDExLCA0LCAyNDgsIDIzMiwgMTEsIDQsIDI0NywgMTYzLCAxMSwgNCwgMjQ3LCAxNjcsIAotICAgIDExLCA0LCAyNDcsIDE2NCwgMTEsIDQsIDI0NywgMjUyLCAxMSwgNCwgMjQ3LCAyMzMsIDExLCA0LCAyNDgsIDIzLCAxMSwgNCwgCi0gICAgMjQ4LCAyLCAxMSwgNCwgMjQ4LCAxMDEsIDExLCA0LCAyNDgsIDE2MiwgMTEsIDQsIDI0OCwgMTEzLCAxMSwgNCwgMjQ3LCAKLSAgICAxNDcsIDExLCA0LCAyNDcsIDE0MywgMTEsIDQsIDI0NywgMTkzLCAxMSwgNCwgMjQ3LCAxNjIsIDExLCA0LCAyNDcsIDE1NSwgCi0gICAgMTEsIDQsIDI0NywgMTYwLCAxMSwgNCwgMjQ3LCAxMzEsIDExLCA0LCAyNDcsIDEyOSwgMTEsIDQsIDI0NywgMTM2LCAxMSwgCi0gICAgNCwgMjQ3LCAxMzQsIDExLCA0LCAyNDcsIDEzMiwgMTEsIDQsIDI0NywgMTMzLCAxMSwgNCwgMjE4LCAxMDUsIDExLCA0LCAKLSAgICAyMTgsIDEwMSwgMTEsIDQsIDIxOCwgMTY3LCAxMSwgNCwgMjE4LCAxMTcsIDExLCA0LCAyMTgsIDEzMywgMTEsIDQsIDIxOCwgCi0gICAgMTYwLCAxMSwgNCwgMjE4LCAxNTYsIDExLCA0LCAyMTksIDU1LCAxMSwgNCwgMjE5LCA0NCwgMTEsIDQsIDE4NSwgMTEsIDQsIAotICAgIDIxOSwgOTYsIDExLCA0LCAyMTcsIDE3MywgMTEsIDQsIDIxNywgMTc1LCAxMSwgNCwgMjE3LCAxNzQsIDExLCA0LCAyMTgsIAotICAgIDI1LCAxMSwgNCwgMjE4LCAxNCwgMTEsIDQsIDIxOCwgNjksIDExLCA0LCAyMTgsIDQxLCAxMSwgNCwgMjE3LCAxNTksIDExLCAKLSAgICA0LCAyMTcsIDE1NSwgMTEsIDQsIDIxNywgMTkxLCAxMSwgNCwgMjE3LCAxNzIsIDExLCA0LCAyMTcsIDE2NCwgMTEsIDQsIAotICAgIDIxNywgMTcwLCAxMSwgNCwgMjE3LCAxMzgsIDExLCA0LCAyMTcsIDEzNywgMTEsIDQsIDIxNywgMTQyLCAxMSwgNCwgMjE3LCAKLSAgICAxNDEsIDExLCA0LCAyMTcsIDEzOSwgMTEsIDQsIDIxNywgMTQwLCAxMSwgNCwgMjQ4LCAxODMsIDExLCA0LCAyNDgsIDE4MiwgCi0gICAgMTEsIDQsIDI0OCwgMTg5LCAxMSwgNCwgMjQ4LCAxODQsIDExLCA0LCAyNDgsIDE4NiwgMTEsIDQsIDI0OCwgMTg1LCAxMSwgCi0gICAgNCwgMjQ4LCAxODgsIDExLCA0LCAyNDgsIDE4NywgMTEsIDQsIDI0OCwgMTk1LCAxMSwgNCwgMjQ4LCAxOTQsIDExLCA0LCAKLSAgICAyNDgsIDE5OCwgMTEsIDQsIDI0OCwgMTk2LCAxMSwgNCwgMjQ4LCAxNzQsIDExLCA0LCAyNDgsIDE3NiwgMTEsIDQsIDI0OCwgCi0gICAgMTc1LCAxMSwgNCwgMjQ4LCAxNzksIDExLCA0LCAyNDgsIDE3OCwgMTEsIDQsIDI0OCwgMTgxLCAxMSwgNCwgMjQ4LCAxODAsIAotICAgIDExLCA0LCAyNDgsIDE5MCwgMTEsIDQsIDI0OCwgMTkzLCAxMSwgNCwgMjQ4LCAxOTEsIDExLCA0LCAyNDgsIDE3MCwgMTEsIAotICAgIDQsIDI0OCwgMTY5LCAxMSwgNCwgMjQ4LCAxNzcsIDExLCA0LCAyNDgsIDE3MywgMTEsIDQsIDI0OCwgMTcxLCAxMSwgNCwgCi0gICAgMjQ4LCAxNzIsIDExLCA0LCAyNDgsIDE2NiwgMTEsIDQsIDI0OCwgMTY1LCAxMSwgNCwgMjQ4LCAxNjgsIDExLCA0LCAyNDgsIAotICAgIDE2NywgMTEsIDQsIDIyMywgNDcsIDExLCA0LCAyMjMsIDQ2LCAxMSwgNCwgMjIzLCA1MiwgMTEsIDQsIDIyMywgNDgsIDExLCAKLSAgICA0LCAyMjMsIDQ5LCAxMSwgNCwgMjIzLCA1MSwgMTEsIDQsIDIyMywgNTAsIDExLCA0LCAyMjMsIDU1LCAxMSwgNCwgMjIzLCAKLSAgICA1NCwgMTEsIDQsIDIyMywgNTcsIDExLCA0LCAyMjMsIDU2LCAxMSwgNCwgMjIzLCA0MywgMTEsIDQsIDIyMywgNDIsIDExLCAKLSAgICA0LCAyMjMsIDQ1LCAxMSwgNCwgMjIzLCA0NCwgMTEsIDQsIDIyMywgMzYsIDExLCA0LCAyMjMsIDM1LCAxMSwgNCwgMjIzLCAKLSAgICA0MCwgMTEsIDQsIDIyMywgMzksIDExLCA0LCAyMjMsIDM3LCAxMSwgNCwgMjIzLCAzOCwgMTEsIDQsIDIyMywgMzAsIDExLCAKLSAgICA0LCAyMjMsIDI5LCAxMSwgNCwgMjIzLCAzNCwgMTEsIDQsIDIyMywgMzMsIDExLCA0LCAyMjMsIDMxLCAxMSwgNCwgMjIzLCAKLSAgICAzMiwgMTEsIDQsIDIzNiwgMTgwLCAxMSwgNCwgMjM2LCAxNzksIDExLCA0LCAyMzYsIDE4NSwgMTEsIDQsIDIzNiwgMTgxLCAKLSAgICAxMSwgNCwgMjM2LCAxODIsIDExLCA0LCAyMzYsIDE4NCwgMTEsIDQsIDIzNiwgMTgzLCAxMSwgNCwgMjM2LCAxODgsIDExLCAKLSAgICA0LCAyMzYsIDE4NywgMTEsIDQsIDIzNiwgMTkwLCAxMSwgNCwgMjM2LCAxODksIDExLCA0LCAyMzYsIDE3MSwgMTEsIDQsIAotICAgIDIzNiwgMTczLCAxMSwgNCwgMjM2LCAxNzIsIDExLCA0LCAyMzYsIDE3NiwgMTEsIDQsIDIzNiwgMTc1LCAxMSwgNCwgMjM2LCAKLSAgICAxNzgsIDExLCA0LCAyMzYsIDE3NywgMTEsIDQsIDIzNiwgMTY3LCAxMSwgNCwgMjM2LCAxNjYsIDExLCA0LCAyMzYsIDE3NCwgCi0gICAgMTEsIDQsIDIzNiwgMTcwLCAxMSwgNCwgMjM2LCAxNjgsIDExLCA0LCAyMzYsIDE2OSwgMTEsIDQsIDIzNiwgMTYxLCAxMSwgCi0gICAgNCwgMjM2LCAxNjUsIDExLCA0LCAyMzYsIDE2NCwgMTEsIDQsIDIzNiwgMTYyLCAxMSwgNCwgMjM2LCAxNjMsIDExLCA0LCAKLSAgICAyMjQsIDkzLCAxMSwgNCwgMjI0LCA5MiwgMTEsIDQsIDIyNCwgMTU1LCAxMSwgNCwgMjI0LCA5OSwgMTEsIDQsIDIyNCwgCi0gICAgMTI3LCAxMSwgNCwgMjI0LCAxNDUsIDExLCA0LCAyMjQsIDE0MywgMTEsIDQsIDIyNSwgNzEsIDExLCA0LCAyMjUsIDY2LCAKLSAgICAxMSwgNCwgMTkyLCAxMSwgNCwgMjI1LCAxMDYsIDExLCA0LCAyMjMsIDIxMywgMTEsIDQsIDIyMywgMjEyLCAxMSwgNCwgCi0gICAgMjIzLCAyMTYsIDExLCA0LCAyMjMsIDIxNCwgMTEsIDQsIDIyNCwgMjEsIDExLCA0LCAyMjMsIDI1MiwgMTEsIDQsIDIyNCwgCi0gICAgODIsIDExLCA0LCAyMjQsIDI3LCAxMSwgNCwgMjI0LCAyMDcsIDExLCA0LCAyMjUsIDIwLCAxMSwgNCwgMjIzLCAxOTMsIDExLCAKLSAgICA0LCAyMjMsIDE4OSwgMTEsIDQsIDIyMywgMjQ2LCAxMSwgNCwgMjIzLCAyMDksIDExLCA0LCAyMjMsIDIwMiwgMTEsIDQsIAotICAgIDIyMywgMjA3LCAxMSwgNCwgMjIzLCAxNjYsIDExLCA0LCAyMjMsIDE2NSwgMTEsIDQsIDIyMywgMTcxLCAxMSwgNCwgMjIzLCAKLSAgICAxNjgsIDExLCA0LCAyMzksIDIzNiwgMTEsIDQsIDIzOSwgMjMwLCAxMSwgNCwgMjQwLCAyNiwgMTEsIDQsIDIzOSwgMjUxLCAKLSAgICAxMSwgNCwgMjQwLCA3MywgMTEsIDQsIDI0MCwgNjQsIDExLCA0LCAyNDAsIDEwOCwgMTEsIDQsIDI0MCwgNzgsIDExLCA0LCAKLSAgICAyMzksIDEzOSwgMTEsIDQsIDIzOSwgMTg2LCAxMSwgNCwgMjM5LCAxNjcsIDExLCA0LCAyMzksIDkxLCAxMSwgNCwgMjM5LCAKLSAgICA5MCwgMTEsIDQsIDIzOSwgMTA4LCAxMSwgNCwgMjM5LCA5NiwgMTEsIDQsIDIzOSwgOTQsIDExLCA0LCAyMzksIDk1LCAxMSwgCi0gICAgNCwgMjM5LCA3OCwgMTEsIDQsIDIzOSwgNzcsIDExLCA0LCAyMzksIDgxLCAxMSwgNCwgMjM5LCA3OSwgMTEsIDQsIDIwNSwgCi0gICAgMTk2LCAxMSwgNCwgMjA1LCAxOTEsIDExLCA0LCAyMDUsIDIzMCwgMTEsIDQsIDIwNSwgMjA1LCAxMSwgNCwgMjA1LCAyMTksIAotICAgIDExLCA0LCAyMDUsIDIxNiwgMTEsIDQsIDIwNSwgMjIyLCAxMSwgNCwgMjA1LCAyMjEsIDExLCA0LCAyMDYsIDYzLCAxMSwgNCwgCi0gICAgMjA2LCA1OCwgMTEsIDQsIDIwNiwgODYsIDExLCA0LCAyMDYsIDc1LCAxMSwgNCwgMjA1LCAxNzIsIDExLCA0LCAyMDUsIAotICAgIDE2OCwgMTEsIDQsIDIwNSwgMTg5LCAxMSwgNCwgMjA1LCAxNzQsIDExLCA0LCAyMDUsIDIzMywgMTEsIDQsIDIwNiwgNDQsIAotICAgIDExLCA0LCAyMDQsIDE1NywgMTEsIDQsIDIwNCwgMTU1LCAxMSwgNCwgMjA0LCAxNjMsIDExLCA0LCAyMDQsIDE2MCwgMTEsIAotICAgIDQsIDIwNCwgMTU4LCAxMSwgNCwgMjA0LCAxNTksIDExLCA0LCAyMDQsIDE0OCwgMTEsIDQsIDIwNCwgMTQ3LCAxMSwgNCwgCi0gICAgMjA0LCAxNTIsIDExLCA0LCAyMDQsIDE1MSwgMTEsIDQsIDIwNCwgMTQ5LCAxMSwgNCwgMjA0LCAxNTAsIDExLCA0LCAyNDMsIAotICAgIDE0NywgMTEsIDQsIDI0MywgMTM0LCAxMSwgNCwgMjQzLCAyMzMsIDExLCA0LCAyNDMsIDE3MywgMTEsIDQsIDI0MywgMjA4LCAKLSAgICAxMSwgNCwgMjQzLCAyMTMsIDExLCA0LCAyNDMsIDIxMiwgMTEsIDQsIDI0NCwgMTQwLCAxMSwgNCwgMjQ0LCAxMzQsIDExLCAKLSAgICA0LCAyNDQsIDIxMiwgMTEsIDQsIDI0NCwgMTYwLCAxMSwgNCwgMjQyLCAyNSwgMTEsIDQsIDI0MiwgMjYsIDExLCA0LCAyNDMsIAotICAgIDg1LCAxMSwgNCwgMjQyLCA2NywgMTEsIDQsIDI0MywgMTEzLCAxMSwgNCwgMjQzLCA4NywgMTEsIDQsIDI0NCwgNywgMTEsIAotICAgIDQsIDI0NCwgNzUsIDExLCA0LCAyNDQsIDI4LCAxMSwgNCwgMjQyLCAxNiwgMTEsIDQsIDI0MiwgMTQsIDExLCA0LCAyNDIsIAotICAgIDQyLCAxMSwgNCwgMjQyLCAyNCwgMTEsIDQsIDI0MiwgMTksIDExLCA0LCAyNDIsIDIyLCAxMSwgNCwgMjA4LCAyMDAsIDExLCAKLSAgICA0LCAyMDgsIDE5MiwgMTEsIDQsIDIwOSwgMiwgMTEsIDQsIDIwOCwgMjEwLCAxMSwgNCwgMjA4LCAyNDgsIDExLCA0LCAyMDgsIAotICAgIDI1MCwgMTEsIDQsIDIwOCwgMjQ5LCAxMSwgNCwgMjA5LCAyMTIsIDExLCA0LCAyMDksIDE5OCwgMTEsIDQsIDIxMCwgMjIsIAotICAgIDExLCA0LCAyMDksIDIyMiwgMTEsIDQsIDIwNywgMTg1LCAxMSwgNCwgMjA3LCAxODQsIDExLCA0LCAyMDcsIDE4NywgMTEsIAotICAgIDQsIDIwNywgMTg2LCAxMSwgNCwgMjA4LCAxMzEsIDExLCA0LCAyMDgsIDEyMSwgMTEsIDQsIDEzNSwgMTEsIDQsIDIwOCwgCi0gICAgMTQ0LCAxMSwgNCwgMjA5LCAxMTQsIDExLCA0LCAyMDksIDE4NywgMTEsIDQsIDIwOSwgMTM5LCAxMSwgNCwgMjA3LCAxNjgsIAotICAgIDExLCA0LCAyMDcsIDE2MywgMTEsIDQsIDIwNywgMjAzLCAxMSwgNCwgMjA3LCAxODMsIDExLCA0LCAyMDcsIDE2OSwgMTEsIAotICAgIDQsIDIwNywgMTgxLCAxMSwgNCwgMjQ0LCA5MiwgMTEsIDQsIDI0NCwgOTEsIDExLCA0LCAyNDQsIDk3LCAxMSwgNCwgMjQ0LCAKLSAgICA5MywgMTEsIDQsIDI0NCwgOTQsIDExLCA0LCAyNDQsIDk2LCAxMSwgNCwgMjQ0LCA5NSwgMTEsIDQsIDI0NCwgMTEzLCAxMSwgCi0gICAgNCwgMjQ0LCAxMTIsIDExLCA0LCAyNDQsIDEyMCwgMTEsIDQsIDI0NCwgMTE0LCAxMSwgNCwgMjQ0LCA4MiwgMTEsIDQsIAotICAgIDI0NCwgODQsIDExLCA0LCAyNDQsIDgzLCAxMSwgNCwgMjQ0LCA4NywgMTEsIDQsIDI0NCwgODYsIDExLCA0LCAyNDQsIDkwLCAKLSAgICAxMSwgNCwgMjQ0LCA4OCwgMTEsIDQsIDI0NCwgMTA1LCAxMSwgNCwgMjQ0LCAxMDgsIDExLCA0LCAyNDQsIDEwNiwgMTEsIDQsIAotICAgIDI0NCwgNzgsIDExLCA0LCAyNDQsIDc3LCAxMSwgNCwgMjQ0LCA4NSwgMTEsIDQsIDI0NCwgODEsIDExLCA0LCAyNDQsIDc5LCAKLSAgICAxMSwgNCwgMjQ0LCA4MCwgMTEsIDQsIDIyMywgMywgMTEsIDQsIDIyMywgMiwgMTEsIDQsIDIyMywgMTAsIDExLCA0LCAyMjMsIAotICAgIDUsIDExLCA0LCAyMjMsIDYsIDExLCA0LCAyMjMsIDcsIDExLCA0LCAyMjMsIDE5LCAxMSwgNCwgMjIzLCAxOCwgMTEsIDQsIAotICAgIDIyMywgMjUsIDExLCA0LCAyMjMsIDIwLCAxMSwgNCwgMjIyLCAyNTEsIDExLCA0LCAyMjIsIDI1MCwgMTEsIDQsIDIyMywgMSwgCi0gICAgMTEsIDQsIDIyMiwgMjUyLCAxMSwgNCwgMjIzLCAxMSwgMTEsIDQsIDIyMywgMTcsIDExLCA0LCAyMjMsIDE1LCAxMSwgNCwgCi0gICAgMjIyLCAyNDMsIDExLCA0LCAyMjIsIDI0MiwgMTEsIDQsIDIyMiwgMjQ4LCAxMSwgNCwgMjIyLCAyNDYsIDExLCA0LCAyMjIsIAotICAgIDI0NCwgMTEsIDQsIDIyMiwgMjQ1LCAxMSwgNCwgMjM2LCAxNDYsIDExLCA0LCAyMzYsIDE0NSwgMTEsIDQsIDIzNiwgMTUyLCAKLSAgICAxMSwgNCwgMjM2LCAxNDcsIDExLCA0LCAyMzYsIDE0OSwgMTEsIDQsIDIzNiwgMTQ4LCAxMSwgNCwgMjM2LCAxNTEsIDExLCAKLSAgICA0LCAyMzYsIDE1MCwgMTEsIDQsIDIzNiwgMTU4LCAxMSwgNCwgMjM2LCAxNTYsIDExLCA0LCAyMzYsIDE2MCwgMTEsIDQsIAotICAgIDIzNiwgMTU5LCAxMSwgNCwgMjM2LCAxMzksIDExLCA0LCAyMzYsIDE0MCwgMTEsIDQsIDIzNiwgMTQzLCAxMSwgNCwgMjM2LCAKLSAgICAxNDIsIDExLCA0LCAyMzYsIDE0NCwgMTEsIDQsIDIzNiwgMTUzLCAxMSwgNCwgMjM2LCAxNTUsIDExLCA0LCAyMzYsIDE1NCwgCi0gICAgMTEsIDQsIDIzNiwgMTM4LCAxMSwgNCwgMjIyLCA1MiwgMTEsIDQsIDIyMiwgNTAsIDExLCA0LCAyMjIsIDEwMCwgMTEsIDQsIAotICAgIDIyMiwgNTUsIDExLCA0LCAyMjIsIDgyLCAxMSwgNCwgMjIyLCA5NiwgMTEsIDQsIDIyMiwgOTUsIDExLCA0LCAyMjMsIDYxLCAKLSAgICAxMSwgNCwgMjAxLCAyMDEsIDExLCA0LCAyMjMsIDc2LCAxMSwgNCwgMjIxLCAzMiwgMTEsIDQsIDIyMSwgMzQsIDExLCA0LCAKLSAgICAyMjEsIDMzLCAxMSwgNCwgMjIxLCAxNjUsIDExLCA0LCAyMjEsIDE1MCwgMTEsIDQsIDIyMSwgMTkxLCAxMSwgNCwgMjIxLCAKLSAgICAxNzYsIDExLCA0LCAyMjIsIDIwOSwgMTEsIDQsIDIyMiwgMjQwLCAxMSwgNCwgMjIyLCAyMjUsIDExLCA0LCAyMjEsIDI3LCAKLSAgICAxMSwgNCwgMjIxLCAyMywgMTEsIDQsIDIyMSwgODQsIDExLCA0LCAyMjEsIDMxLCAxMSwgNCwgMjIxLCAyOSwgMTEsIDQsIAotICAgIDIyMSwgMzAsIDExLCA0LCAyMzYsIDIxMSwgMTEsIDQsIDIzNiwgMjEwLCAxMSwgNCwgMjM2LCAyMTYsIDExLCA0LCAyMzYsIAotICAgIDIxMiwgMTEsIDQsIDIzNiwgMjEzLCAxMSwgNCwgMjM2LCAyMTUsIDExLCA0LCAyMzYsIDIxNCwgMTEsIDQsIDIzNiwgMjIyLCAKLSAgICAxMSwgNCwgMjM2LCAyMjAsIDExLCA0LCAyMzYsIDIyNCwgMTEsIDQsIDIzNiwgMjIzLCAxMSwgNCwgMjM2LCAyMDMsIDExLCAKLSAgICA0LCAyMzYsIDIwNSwgMTEsIDQsIDIzNiwgMjA0LCAxMSwgNCwgMjM2LCAyMDcsIDExLCA0LCAyMzYsIDIwOSwgMTEsIDQsIAotICAgIDIzNiwgMjA4LCAxMSwgNCwgMjM2LCAyMTcsIDExLCA0LCAyMzYsIDIxOSwgMTEsIDQsIDIzNiwgMjE4LCAxMSwgNCwgMjM2LCAKLSAgICAxOTksIDExLCA0LCAyMzYsIDE5OCwgMTEsIDQsIDIzNiwgMjA2LCAxMSwgNCwgMjM2LCAyMDIsIDExLCA0LCAyMzYsIDIwMCwgCi0gICAgMTEsIDQsIDIzNiwgMjAxLCAxMSwgNCwgMjM2LCAxOTMsIDExLCA0LCAyMzYsIDE5MiwgMTEsIDQsIDIzNiwgMTk3LCAxMSwgCi0gICAgNCwgMjM2LCAxOTYsIDExLCA0LCAyMzYsIDE5NCwgMTEsIDQsIDIzNiwgMTk1LCAxMSwgNCwgMjI3LCA5MCwgMTEsIDQsIAotICAgIDIyNywgODIsIDExLCA0LCAyMjcsIDE0OCwgMTEsIDQsIDIyNywgMTAwLCAxMSwgNCwgMjI3LCAxMzksIDExLCA0LCAyMjcsIAotICAgIDEzOCwgMTEsIDQsIDIyNywgMTQyLCAxMSwgNCwgMjI3LCAxNDAsIDExLCA0LCAyMjgsIDAsIDExLCA0LCAyMjcsIDI0NSwgCi0gICAgMTEsIDQsIDIyOCwgMTEzLCAxMSwgNCwgMjI4LCAxMSwgMTEsIDQsIDIyNiwgMjE3LCAxMSwgNCwgMjI2LCAyMTYsIDExLCA0LCAKLSAgICAyMjYsIDIxOSwgMTEsIDQsIDIyNiwgMjE4LCAxMSwgNCwgMjI3LCA2LCAxMSwgNCwgMjI2LCAyNDgsIDExLCA0LCAyMjcsIAotICAgIDQ5LCAxMSwgNCwgMjI3LCAxMSwgMTEsIDQsIDIyNywgMTY1LCAxMSwgNCwgMjI3LCAyMzQsIDExLCA0LCAyMjcsIDE4MiwgCi0gICAgMTEsIDQsIDIyNiwgMjExLCAxMSwgNCwgMjI2LCAyMDksIDExLCA0LCAyMjYsIDIzOSwgMTEsIDQsIDIyNiwgMjE1LCAxMSwgCi0gICAgNCwgMjI2LCAyMTMsIDExLCA0LCAyMjYsIDIxNCwgMTEsIDQsIDIyNiwgMTkwLCAxMSwgNCwgMjI2LCAxODksIDExLCA0LCAKLSAgICAyMjYsIDE5OSwgMTEsIDQsIDIyNiwgMTkzLCAxMSwgNCwgMjI2LCAxOTEsIDExLCA0LCAyMjYsIDE5MiwgMTEsIDQsIDIzOCwgCi0gICAgNTQsIDExLCA0LCAyMzgsIDUzLCAxMSwgNCwgMjM4LCA4MSwgMTEsIDQsIDIzOCwgNjUsIDExLCA0LCAyMzgsIDczLCAxMSwgCi0gICAgNCwgMjM4LCA3MiwgMTEsIDQsIDIzOCwgNzUsIDExLCA0LCAyMzgsIDc0LCAxMSwgNCwgMjM4LCAyMTcsIDExLCA0LCAyMzgsIAotICAgIDIxMiwgMTEsIDQsIDIzOSwgOCwgMTEsIDQsIDIzOCwgMjI3LCAxMSwgNCwgMjM3LCAyMDUsIDExLCA0LCAyMzcsIDIwNCwgCi0gICAgMTEsIDQsIDIzNywgMjA3LCAxMSwgNCwgMjM3LCAyMDYsIDExLCA0LCAyMzgsIDE4LCAxMSwgNCwgMjM4LCAxNiwgMTEsIDQsIAotICAgIDIzOCwgMzksIDExLCA0LCAyMzgsIDI2LCAxMSwgNCwgMjM4LCAxNTksIDExLCA0LCAyMzgsIDE1NywgMTEsIDQsIDIzOCwgCi0gICAgMTkwLCAxMSwgNCwgMjM4LCAxNzAsIDExLCA0LCAyMzcsIDE5NCwgMTEsIDQsIDIzNywgMTkzLCAxMSwgNCwgMjM3LCAyMzAsIAotICAgIDExLCA0LCAyMzcsIDIwMywgMTEsIDQsIDIzNywgMTk1LCAxMSwgNCwgMjM3LCAyMDIsIDExLCA0LCAyMjksIDY0LCAxMSwgNCwgCi0gICAgMjI5LCA2MSwgMTEsIDQsIDIyOSwgMTAwLCAxMSwgNCwgMjI5LCA3OCwgMTEsIDQsIDIyOSwgODksIDExLCA0LCAyMjksIDkzLCAKLSAgICAxMSwgNCwgMjI5LCA5MSwgMTEsIDQsIDIyOSwgMjI2LCAxMSwgNCwgMjI5LCAyMDksIDExLCA0LCAxNzMsIDExLCA0LCAyMjksIAotICAgIDI1MywgMTEsIDQsIDIyOCwgMTg3LCAxMSwgNCwgMjI4LCAxOTIsIDExLCA0LCAyMjgsIDE4OSwgMTEsIDQsIDIyOCwgMjUwLCAKLSAgICAxMSwgNCwgMjI4LCAyNDUsIDExLCA0LCAyMjksIDI2LCAxMSwgNCwgMjI5LCAxLCAxMSwgNCwgMjI5LCAxNzAsIDExLCA0LCAKLSAgICAyMjksIDE1MywgMTEsIDQsIDIyOSwgMjAxLCAxMSwgNCwgMjI5LCAxNzQsIDExLCA0LCAyMjgsIDE3NSwgMTEsIDQsIDIyOCwgCi0gICAgMTcxLCAxMSwgNCwgMjI4LCAyMDksIDExLCA0LCAyMjgsIDE4NiwgMTEsIDQsIDIyOCwgMTc5LCAxMSwgNCwgMjI4LCAxODMsIAotICAgIDExLCA0LCAyMzgsIDE0MSwgMTEsIDQsIDIzOCwgMTQwLCAxMSwgNCwgMjM4LCAxNDUsIDExLCA0LCAyMzgsIDE0MiwgMTEsIAotICAgIDQsIDIzOCwgMTQ0LCAxMSwgNCwgMjM4LCAxNDMsIDExLCA0LCAyMzgsIDE1MiwgMTEsIDQsIDIzOCwgMTUxLCAxMSwgNCwgCi0gICAgMjM4LCAxNTUsIDExLCA0LCAyMzgsIDE1MywgMTEsIDQsIDIzOCwgMTMyLCAxMSwgNCwgMjM4LCAxMzEsIDExLCA0LCAyMzgsIAotICAgIDEzNCwgMTEsIDQsIDIzOCwgMTMzLCAxMSwgNCwgMjM4LCAxMzcsIDExLCA0LCAyMzgsIDEzNiwgMTEsIDQsIDIzOCwgMTM5LCAKLSAgICAxMSwgNCwgMjM4LCAxMzgsIDExLCA0LCAyMzgsIDE0NywgMTEsIDQsIDIzOCwgMTQ2LCAxMSwgNCwgMjM4LCAxNTAsIDExLCAKLSAgICA0LCAyMzgsIDE0OCwgMTEsIDQsIDIzOCwgMTI3LCAxMSwgNCwgMjM4LCAxMjYsIDExLCA0LCAyMzgsIDEzNSwgMTEsIDQsIAotICAgIDIzOCwgMTMwLCAxMSwgNCwgMjM4LCAxMjgsIDExLCA0LCAyMzgsIDEyOSwgMTEsIDQsIDIyNCwgMTc0LCAxMSwgNCwgMjI0LCAKLSAgICAxNzUsIDExLCA0LCAyMjQsIDE5MywgMTEsIDQsIDIyNCwgMTkyLCAxMSwgNCwgMjI0LCAxOTUsIDExLCA0LCAyMjQsIDE5NCwgCi0gICAgMTEsIDQsIDIyNCwgMTY1LCAxMSwgNCwgMjI0LCAxNjcsIDExLCA0LCAyMjQsIDE2NiwgMTEsIDQsIDIyNCwgMTcwLCAxMSwgCi0gICAgNCwgMjI0LCAxNjksIDExLCA0LCAyMjQsIDE3MiwgMTEsIDQsIDIyNCwgMTcxLCAxMSwgNCwgMjI0LCAxNzYsIDExLCA0LCAKLSAgICAyMjQsIDE3OCwgMTEsIDQsIDIyNCwgMTc3LCAxMSwgNCwgMjI0LCAxNjEsIDExLCA0LCAyMjQsIDE2MCwgMTEsIDQsIDIyNCwgCi0gICAgMTY4LCAxMSwgNCwgMjI0LCAxNjQsIDExLCA0LCAyMjQsIDE2MiwgMTEsIDQsIDIyNCwgMTYzLCAxMSwgNCwgMjM1LCAyMzMsIAotICAgIDExLCA0LCAyMzUsIDIzMiwgMTEsIDQsIDIzNSwgMjM5LCAxMSwgNCwgMjM1LCAyMzQsIDExLCA0LCAyMzUsIDIzNiwgMTEsIAotICAgIDQsIDIzNSwgMjM1LCAxMSwgNCwgMjM1LCAyMzgsIDExLCA0LCAyMzUsIDIzNywgMTEsIDQsIDIzNSwgMjQ0LCAxMSwgNCwgCi0gICAgMjM1LCAyNDMsIDExLCA0LCAyMzUsIDI0NiwgMTEsIDQsIDIzNSwgMjQ1LCAxMSwgNCwgMjM1LCAyMjUsIDExLCA0LCAyMzUsIAotICAgIDIyNCwgMTEsIDQsIDIzNSwgMjI3LCAxMSwgNCwgMjM1LCAyMjYsIDExLCA0LCAyMzUsIDIyOSwgMTEsIDQsIDIzNSwgMjI4LCAKLSAgICAxMSwgNCwgMjM1LCAyMzEsIDExLCA0LCAyMzUsIDIzMCwgMTEsIDQsIDIzNSwgMjQwLCAxMSwgNCwgMjM1LCAyNDIsIDExLCAKLSAgICA0LCAyMzUsIDI0MSwgMTEsIDQsIDIyMiwgMTQ4LCAxMSwgNCwgMjIyLCAxNTAsIDExLCA0LCAyMjIsIDE0OSwgMTEsIDQsIAotICAgIDIyMiwgMTkzLCAxMSwgNCwgMjIyLCAxOTEsIDExLCA0LCAyMjIsIDIwMywgMTEsIDQsIDIyMiwgMTk2LCAxMSwgNCwgMjIyLCAKLSAgICAxMTAsIDExLCA0LCAyMjIsIDEwOSwgMTEsIDQsIDIyMiwgMTExLCAxMSwgNCwgMjIyLCAxMjAsIDExLCA0LCAyMjIsIDExNywgCi0gICAgMTEsIDQsIDIyMiwgMTI4LCAxMSwgNCwgMjIyLCAxMjIsIDExLCA0LCAyMjIsIDE4NCwgMTEsIDQsIDIyMiwgMTkwLCAxMSwgCi0gICAgNCwgMjIyLCAxODYsIDExLCA0LCAyMzYsIDIzMCwgMTEsIDQsIDIzNiwgMjQ1LCAxMSwgNCwgMjM2LCAyNTQsIDExLCA0LCAKLSAgICAyMzcsIDgzLCAxMSwgNCwgMjM3LCA3MiwgMTEsIDQsIDE1MiwgMTEsIDQsIDIzNywgOTQsIDExLCA0LCAyMzYsIDYsIDExLCAKLSAgICA0LCAyMzYsIDUsIDExLCA0LCAyMzYsIDgsIDExLCA0LCAyMzYsIDcsIDExLCA0LCAyMzYsIDQ2LCAxMSwgNCwgMjM2LCAzNywgCi0gICAgMTEsIDQsIDIzNiwgMTM2LCAxMSwgNCwgMjM2LCAxMDksIDExLCA0LCAyMzcsIDE4LCAxMSwgNCwgMjM3LCA2NywgMTEsIDQsIAotICAgIDIzNywgMzAsIDExLCA0LCAyMDQsIDgzLCAxMSwgNCwgMjA0LCA2OCwgMTEsIDQsIDIwNCwgMTExLCAxMSwgNCwgMjA0LCA5MywgCi0gICAgMTEsIDQsIDIwMywgMjA2LCAxMSwgNCwgMjAzLCAyMDgsIDExLCA0LCAyMDMsIDIwNywgMTEsIDQsIDIwMywgMjI5LCAxMSwgCi0gICAgNCwgMjA0LCAwLCAxMSwgNCwgMjAzLCAyMzksIDExLCA0LCAyMDQsIDQyLCAxMSwgNCwgMjA0LCA2MiwgMTEsIDQsIDIwNCwgCi0gICAgNDcsIDExLCA0LCAyMDIsIDI0LCAxMSwgNCwgMjAyLCAyMywgMTEsIDQsIDIwMiwgMzksIDExLCA0LCAyMDIsIDI3LCAxMSwgCi0gICAgNCwgMjAyLCAzMiwgMTEsIDQsIDIwMiwgMzQsIDExLCA0LCAyMDIsIDMzLCAxMSwgNCwgMjAyLCAxMDAsIDExLCA0LCAyMDIsIAotICAgIDk3LCAxMSwgNCwgMjAyLCAxMTYsIDExLCA0LCAyMDIsIDEwNCwgMTEsIDQsIDIwMSwgMjU1LCAxMSwgNCwgMjAyLCAxLCAxMSwgCi0gICAgNCwgMjAyLCAwLCAxMSwgNCwgMjAyLCAxMywgMTEsIDQsIDIwMiwgMTIsIDExLCA0LCAyMDIsIDE3LCAxMSwgNCwgMjAyLCAKLSAgICAxNCwgMTEsIDQsIDIwMiwgODIsIDExLCA0LCAyMDIsIDkyLCAxMSwgNCwgMjAyLCA4NiwgMTEsIDQsIDIwMSwgMjUxLCAxMSwgCi0gICAgNCwgMjAxLCAyNTAsIDExLCA0LCAyMDIsIDYsIDExLCA0LCAyMDEsIDI1NCwgMTEsIDQsIDIwMSwgMjUyLCAxMSwgNCwgMjAxLCAKLSAgICAyNTMsIDExLCA0LCAyMDEsIDIzNywgMTEsIDQsIDIwMSwgMjM2LCAxMSwgNCwgMjAxLCAyNDIsIDExLCA0LCAyMDEsIDI0MCwgCi0gICAgMTEsIDQsIDIwMSwgMjM4LCAxMSwgNCwgMjAxLCAyMzksIDExLCA0LCAyNDYsIDUwLCAxMSwgNCwgMjQ2LCA0MywgMTEsIDQsIAotICAgIDI0NiwgNzksIDExLCA0LCAyNDYsIDYzLCAxMSwgNCwgMjQ2LCA3NiwgMTEsIDQsIDI0NiwgNzAsIDExLCA0LCAyNDYsIDc4LCAKLSAgICAxMSwgNCwgMjQ2LCA3NywgMTEsIDQsIDI0NywgMTcsIDExLCA0LCAyNDcsIDksIDExLCA0LCAyNDcsIDkyLCAxMSwgNCwgCi0gICAgMjQ3LCA0OCwgMTEsIDQsIDI0NSwgMTAxLCAxMSwgNCwgMjQ1LCAxMDMsIDExLCA0LCAyNDUsIDEwMiwgMTEsIDQsIDI0NSwgCi0gICAgMTU4LCAxMSwgNCwgMjQ1LCAxNDgsIDExLCA0LCAyNDUsIDI1NCwgMTEsIDQsIDI0NSwgMTc1LCAxMSwgNCwgMjQ2LCAyMDIsIAotICAgIDExLCA0LCAyNDYsIDIzOCwgMTEsIDQsIDI0NiwgMjA3LCAxMSwgNCwgMjQ1LCA3NywgMTEsIDQsIDI0NSwgNzUsIDExLCA0LCAKLSAgICAyNDUsIDExMCwgMTEsIDQsIDI0NSwgOTksIDExLCA0LCAyNDUsIDgzLCAxMSwgNCwgMjQ1LCA5NiwgMTEsIDQsIDI0NSwgNTQsIAotICAgIDExLCA0LCAyNDUsIDUzLCAxMSwgNCwgMjQ1LCA2NiwgMTEsIDQsIDI0NSwgNjAsIDExLCA0LCAyNDUsIDU1LCAxMSwgNCwgCi0gICAgMjQ1LCA1NywgMTEsIDQsIDIwMSwgMjIwLCAxMSwgNCwgMjAxLCAyMTksIDExLCA0LCAyMDEsIDIyNiwgMTEsIDQsIDIwMSwgCi0gICAgMjIxLCAxMSwgNCwgMjAxLCAyMjMsIDExLCA0LCAyMDEsIDIyMiwgMTEsIDQsIDIwMSwgMjI1LCAxMSwgNCwgMjAxLCAyMjQsIAotICAgIDExLCA0LCAyMDEsIDIzMiwgMTEsIDQsIDIwMSwgMjMxLCAxMSwgNCwgMjAxLCAyMzUsIDExLCA0LCAyMDEsIDIzMywgMTEsIAotICAgIDQsIDIwMSwgMjE2LCAxMSwgNCwgMjAxLCAyMTgsIDExLCA0LCAyMDEsIDIxNywgMTEsIDQsIDIwMSwgMjI3LCAxMSwgNCwgCi0gICAgMjAxLCAyMzAsIDExLCA0LCAyMDEsIDIyOCwgMTEsIDQsIDIwMSwgMjA5LCAxMSwgNCwgMjAxLCAyMTMsIDExLCA0LCAyMDEsIAotICAgIDIxMiwgMTEsIDQsIDIwMSwgMjEwLCAxMSwgNCwgMjAxLCAyMTEsIDExLCA0LCAyMDEsIDIwMywgMTEsIDQsIDIwMSwgMjAyLCAKLSAgICAxMSwgNCwgMjAxLCAyMDgsIDExLCA0LCAyMDEsIDIwNiwgMTEsIDQsIDIwMSwgMjA0LCAxMSwgNCwgMjAxLCAyMDUsIDExLCAKLSAgICA0LCAyMjAsIDIwMSwgMTEsIDQsIDIyMCwgMjAwLCAxMSwgNCwgMjIwLCAyMDYsIDExLCA0LCAyMjAsIDIwMiwgMTEsIDQsIAotICAgIDIyMCwgMjAzLCAxMSwgNCwgMjIwLCAyMDUsIDExLCA0LCAyMjAsIDIwNCwgMTEsIDQsIDIyMCwgMjExLCAxMSwgNCwgMjIwLCAKLSAgICAyMTAsIDExLCA0LCAyMjAsIDIxNCwgMTEsIDQsIDIyMCwgMjEzLCAxMSwgNCwgMjIwLCAxOTQsIDExLCA0LCAyMjAsIDE5NSwgCi0gICAgMTEsIDQsIDIyMCwgMTk4LCAxMSwgNCwgMjIwLCAxOTksIDExLCA0LCAyMjAsIDIwNywgMTEsIDQsIDIyMCwgMjA5LCAxMSwgCi0gICAgNCwgMjIwLCAxODksIDExLCA0LCAyMjAsIDE5NywgMTEsIDQsIDIyMCwgMTkzLCAxMSwgNCwgMjIwLCAxOTAsIDExLCA0LCAKLSAgICAyMjAsIDE5MSwgMTEsIDQsIDIyMCwgMTg0LCAxMSwgNCwgMjIwLCAxODMsIDExLCA0LCAyMjAsIDE4OCwgMTEsIDQsIDIyMCwgCi0gICAgMTg3LCAxMSwgNCwgMjIwLCAxODUsIDExLCA0LCAyMjAsIDE4NiwgMTEsIDQsIDIxMiwgOTAsIDExLCA0LCAxOTUsIDExLCA0LCAKLSAgICAyMTIsIDE2MiwgMTEsIDQsIDIxMiwgOTMsIDExLCA0LCAyMTIsIDE1MCwgMTEsIDQsIDIxMiwgMTUzLCAxMSwgNCwgMjEyLCAKLSAgICAxNTEsIDExLCA0LCAyMTQsIDIyNSwgMTEsIDQsIDIxNCwgMjExLCAxMSwgNCwgMjE1LCAzNiwgMTEsIDQsIDIxNCwgMjMzLCAKLSAgICAxMSwgNCwgMjEwLCAyMDQsIDExLCA0LCAyMTAsIDIwNiwgMTEsIDQsIDIxMCwgMjA1LCAxMSwgNCwgMjExLCAyNDQsIDExLCAKLSAgICA0LCAyMTEsIDIzMywgMTEsIDQsIDIxMiwgMTMsIDExLCA0LCAyMTEsIDI0OCwgMTEsIDQsIDIxMywgMTAzLCAxMSwgNCwgCi0gICAgMjE0LCAxNzcsIDExLCA0LCAyMTMsIDEzMiwgMTEsIDQsIDIxMCwgMTgxLCAxMSwgNCwgMjEwLCAxNzgsIDExLCA0LCAyMTEsIAotICAgIDEwLCAxMSwgNCwgMjEwLCAyMDMsIDExLCA0LCAyMTAsIDE4NSwgMTEsIDQsIDIxMCwgMTkzLCAxMSwgNCwgMjEwLCA4MywgCi0gICAgMTEsIDQsIDIxMCwgODIsIDExLCA0LCAyMTAsIDE1MSwgMTEsIDQsIDIxMCwgOTEsIDExLCA0LCAyMTAsIDg1LCAxMSwgNCwgCi0gICAgMjEwLCA5MCwgMTEsIDQsIDIxMSwgMTI2LCAxMSwgNCwgMjExLCAxMjUsIDExLCA0LCAyMTEsIDEzMiwgMTEsIDQsIDIxMSwgCi0gICAgMTI3LCAxMSwgNCwgMjExLCAxMjksIDExLCA0LCAyMTEsIDEzMSwgMTEsIDQsIDIxMSwgMTMwLCAxMSwgNCwgMjExLCAxNDEsIAotICAgIDExLCA0LCAyMTEsIDEzOSwgMTEsIDQsIDIxMSwgMTY0LCAxMSwgNCwgMjExLCAxNDIsIDExLCA0LCAyMTEsIDEyMSwgMTEsIAotICAgIDQsIDIxMSwgMTIwLCAxMSwgNCwgMjExLCAxMjQsIDExLCA0LCAyMTEsIDEyMiwgMTEsIDQsIDIxMSwgMTM1LCAxMSwgNCwgCi0gICAgMjExLCAxMzgsIDExLCA0LCAyMTEsIDEzNiwgMTEsIDQsIDIxMSwgMTE3LCAxMSwgNCwgMjExLCAxMTUsIDExLCA0LCAyMTEsIAotICAgIDExOSwgMTEsIDQsIDIxMSwgMTE4LCAxMSwgNCwgMjExLCAxMTAsIDExLCA0LCAyMTEsIDEwOSwgMTEsIDQsIDIxMSwgMTE0LCAKLSAgICAxMSwgNCwgMjExLCAxMTMsIDExLCA0LCAyMTEsIDExMSwgMTEsIDQsIDIxMSwgMTEyLCAxMSwgNCwgMjAyLCA3NSwgMTEsIDQsIAotICAgIDIwMiwgNzQsIDExLCA0LCAyMDIsIDgwLCAxMSwgNCwgMjAyLCA3NywgMTEsIDQsIDIwMiwgNTQsIDExLCA0LCAyMDIsIDU2LCAKLSAgICAxMSwgNCwgMjAyLCA1NSwgMTEsIDQsIDIwMiwgNTksIDExLCA0LCAyMDIsIDU4LCAxMSwgNCwgMjAyLCA2MywgMTEsIDQsIAotICAgIDIwMiwgNjAsIDExLCA0LCAyMDIsIDY4LCAxMSwgNCwgMjAyLCA2NywgMTEsIDQsIDIwMiwgNzEsIDExLCA0LCAyMDIsIDY5LCAKLSAgICAxMSwgNCwgMjAyLCA1MCwgMTEsIDQsIDIwMiwgNDksIDExLCA0LCAyMDIsIDU3LCAxMSwgNCwgMjAyLCA1MywgMTEsIDQsIAotICAgIDIwMiwgNTEsIDExLCA0LCAyMDIsIDUyLCAxMSwgNCwgMjAyLCA0MiwgMTEsIDQsIDIwMiwgNDEsIDExLCA0LCAyMDIsIDQ2LCAKLSAgICAxMSwgNCwgMjAyLCA0NSwgMTEsIDQsIDIwMiwgNDMsIDExLCA0LCAyMDIsIDQ0LCAxMSwgNCwgMjQ2LCAxNzYsIDExLCA0LCAKLSAgICAyNDYsIDE3MiwgMTEsIDQsIDI0NiwgMTk5LCAxMSwgNCwgMjQ2LCAxODUsIDExLCA0LCAyNDYsIDk0LCAxMSwgNCwgMjQ2LCAKLSAgICA5MywgMTEsIDQsIDI0NiwgOTYsIDExLCA0LCAyNDYsIDk1LCAxMSwgNCwgMjQ2LCAxMDksIDExLCA0LCAyNDYsIDEwOCwgMTEsIAotICAgIDQsIDI0NiwgMTE2LCAxMSwgNCwgMjQ2LCAxMTEsIDExLCA0LCAyNDYsIDE0NywgMTEsIDQsIDI0NiwgMTQ1LCAxMSwgNCwgCi0gICAgMjQ2LCAxNzAsIDExLCA0LCAyNDYsIDE1NSwgMTEsIDQsIDI0NiwgODgsIDExLCA0LCAyNDYsIDk4LCAxMSwgNCwgMjQ2LCAKLSAgICA5MiwgMTEsIDQsIDI0NiwgODksIDExLCA0LCAyNDYsIDkxLCAxMSwgNCwgMjQ2LCA4MSwgMTEsIDQsIDI0NiwgODAsIDExLCAKLSAgICA0LCAyNDYsIDg1LCAxMSwgNCwgMjQ2LCA4NCwgMTEsIDQsIDI0NiwgODIsIDExLCA0LCAyNDYsIDgzLCAxMSwgNCwgMjE1LCAKLSAgICAxODEsIDExLCA0LCAyMTUsIDE4NSwgMTEsIDQsIDIxNSwgMTYzLCAxMSwgNCwgMjE1LCAxNjQsIDExLCA0LCAyMTUsIDE2OCwgCi0gICAgMTEsIDQsIDIxNSwgMTY3LCAxMSwgNCwgMjE1LCAxNzEsIDExLCA0LCAyMTUsIDE2OSwgMTEsIDQsIDIxNSwgMTc1LCAxMSwgCi0gICAgNCwgMjE1LCAxNzQsIDExLCA0LCAyMTUsIDE4MCwgMTEsIDQsIDIxNSwgMTc2LCAxMSwgNCwgMjE1LCAxNTksIDExLCA0LCAKLSAgICAyMTUsIDE1NywgMTEsIDQsIDIxNSwgMTY1LCAxMSwgNCwgMjE1LCAxNjIsIDExLCA0LCAyMTUsIDE2MCwgMTEsIDQsIDIxNSwgCi0gICAgMTYxLCAxMSwgNCwgMjE1LCAxNTIsIDExLCA0LCAyMTUsIDE1MSwgMTEsIDQsIDIxNSwgMTU2LCAxMSwgNCwgMjE1LCAxNTUsIAotICAgIDExLCA0LCAyMTUsIDE1MywgMTEsIDQsIDIxNSwgMTU0LCAxMSwgNCwgMjIxLCAxNDUsIDExLCA0LCAyMjEsIDE0NCwgMTEsIAotICAgIDQsIDIyMSwgMTQ3LCAxMSwgNCwgMjIxLCAxNDYsIDExLCA0LCAyMjEsIDEzNiwgMTEsIDQsIDIyMSwgMTM4LCAxMSwgNCwgCi0gICAgMjIxLCAxMzcsIDExLCA0LCAyMjEsIDE0MCwgMTEsIDQsIDIyMSwgMTM5LCAxMSwgNCwgMjIxLCAxNDMsIDExLCA0LCAyMjEsIAotICAgIDE0MiwgMTEsIDQsIDIyMSwgMTMwLCAxMSwgNCwgMjIxLCAxMjksIDExLCA0LCAyMjEsIDEzNSwgMTEsIDQsIDIyMSwgMTMzLCAKLSAgICAxMSwgNCwgMjIxLCAxMzEsIDExLCA0LCAyMjEsIDEzMiwgMTEsIDQsIDIyMSwgMTI0LCAxMSwgNCwgMjIxLCAxMjMsIDExLCAKLSAgICA0LCAyMjEsIDEyOCwgMTEsIDQsIDIyMSwgMTI3LCAxMSwgNCwgMjIxLCAxMjUsIDExLCA0LCAyMjEsIDEyNiwgMTEsIDQsIAotICAgIDIxMywgNTMsIDExLCA0LCAyMTMsIDQ4LCAxMSwgNCwgMjEzLCA5MCwgMTEsIDQsIDIxMywgNjQsIDExLCA0LCAyMTIsIDE4OCwgCi0gICAgMTEsIDQsIDIxMiwgMTkwLCAxMSwgNCwgMjEyLCAxODksIDExLCA0LCAyMTIsIDIxMiwgMTEsIDQsIDIxMiwgMjA4LCAxMSwgCi0gICAgNCwgMjEyLCAyNDIsIDExLCA0LCAyMTIsIDIzMiwgMTEsIDQsIDIxMywgMjEsIDExLCA0LCAyMTMsIDE0LCAxMSwgNCwgMjEzLCAKLSAgICA0MywgMTEsIDQsIDIxMywgMzAsIDExLCA0LCAyMTIsIDE4NCwgMTEsIDQsIDIxMiwgMTgxLCAxMSwgNCwgMjEyLCAxOTksIAotICAgIDExLCA0LCAyMTIsIDE4NywgMTEsIDQsIDIxMiwgMTg1LCAxMSwgNCwgMjEyLCAxODYsIDExLCA0LCAyMTIsIDE2NSwgMTEsIAotICAgIDQsIDIxMiwgMTY0LCAxMSwgNCwgMjEyLCAxNzEsIDExLCA0LCAyMTIsIDE2OCwgMTEsIDQsIDIxMiwgMTY2LCAxMSwgNCwgCi0gICAgMjEyLCAxNjcsIDExLCA0LCAyMTYsIDE3MiwgMTEsIDQsIDIxNiwgMTY2LCAxMSwgNCwgMjE2LCAyMjAsIDExLCA0LCAyMTYsIAotICAgIDE3OCwgMTEsIDQsIDIxNSwgMTIyLCAxMSwgNCwgMjE1LCAxMjQsIDExLCA0LCAyMTUsIDEyMywgMTEsIDQsIDIxNSwgMTk5LCAKLSAgICAxMSwgNCwgMjE1LCAxODcsIDExLCA0LCAyMTUsIDIyNywgMTEsIDQsIDIxNSwgMjAzLCAxMSwgNCwgMjE2LCA2NiwgMTEsIDQsIAotICAgIDIxNiwgMTU4LCAxMSwgNCwgMjE2LCAxMDUsIDExLCA0LCAyMTUsIDExNSwgMTEsIDQsIDIxNSwgMTEyLCAxMSwgNCwgMjE1LCAKLSAgICAxNDUsIDExLCA0LCAyMTUsIDEyMSwgMTEsIDQsIDIxNSwgMTE3LCAxMSwgNCwgMjE1LCAxMTgsIDExLCA0LCAyMTUsIDk3LCAKLSAgICAxMSwgNCwgMjE1LCA5NiwgMTEsIDQsIDIxNSwgMTAyLCAxMSwgNCwgMjE1LCAxMDAsIDExLCA0LCAyMTUsIDk4LCAxMSwgNCwgCi0gICAgMjE1LCA5OSwgMTEsIDQsIDIzMCwgMTMxLCAxMSwgNCwgMjMwLCAxMzAsIDExLCA0LCAyMzAsIDE0MSwgMTEsIDQsIDIzMCwgCi0gICAgMTMyLCAxMSwgNCwgMjMwLCAxMzcsIDExLCA0LCAyMzAsIDEzNiwgMTEsIDQsIDIzMCwgMTM5LCAxMSwgNCwgMjMwLCAxMzgsIAotICAgIDExLCA0LCAyMzAsIDcyLCAxMSwgNCwgMjMwLCA3MSwgMTEsIDQsIDIzMCwgNzQsIDExLCA0LCAyMzAsIDczLCAxMSwgNCwgCi0gICAgMjMwLCA4OCwgMTEsIDQsIDIzMCwgODYsIDExLCA0LCAyMzAsIDEwMSwgMTEsIDQsIDIzMCwgOTAsIDExLCA0LCAyMzAsIDY1LCAKLSAgICAxMSwgNCwgMjMwLCA2MywgMTEsIDQsIDIzMCwgODIsIDExLCA0LCAyMzAsIDcwLCAxMSwgNCwgMjMwLCA2NywgMTEsIDQsIAotICAgIDIzMCwgNjgsIDExLCA0LCAyMzAsIDU3LCAxMSwgNCwgMjMwLCA1NiwgMTEsIDQsIDIzMCwgNjEsIDExLCA0LCAyMzAsIDYwLCAKLSAgICAxMSwgNCwgMjMwLCA1OCwgMTEsIDQsIDIzMCwgNTksIDExLCA0LCAyMTcsIDgxLCAxMSwgNCwgMjE3LCA3OSwgMTEsIDQsIAotICAgIDIxNywgODgsIDExLCA0LCAyMTcsIDgyLCAxMSwgNCwgMjE3LCA4NSwgMTEsIDQsIDIxNywgODQsIDExLCA0LCAyMTcsIDg3LCAKLSAgICAxMSwgNCwgMjE3LCA4NiwgMTEsIDQsIDIxNywgMzIsIDExLCA0LCAyMTcsIDI5LCAxMSwgNCwgMjE3LCAzNCwgMTEsIDQsIAotICAgIDIxNywgMzMsIDExLCA0LCAyMTcsIDY4LCAxMSwgNCwgMjE3LCA2NywgMTEsIDQsIDIxNywgNzcsIDExLCA0LCAyMTcsIDcxLCAKLSAgICAxMSwgNCwgMjE3LCAyNCwgMTEsIDQsIDIxNywgMjAsIDExLCA0LCAyMTcsIDY1LCAxMSwgNCwgMjE3LCAyOCwgMTEsIDQsIAotICAgIDIxNywgMjYsIDExLCA0LCAyMTcsIDI3LCAxMSwgNCwgMjE3LCA0LCAxMSwgNCwgMjE3LCAyLCAxMSwgNCwgMjE3LCAxNCwgCi0gICAgMTEsIDQsIDIxNywgNywgMTEsIDQsIDIxNywgNSwgMTEsIDQsIDIxNywgNiwgMTEsIDQsIDIzMCwgMTIwLCAxMSwgNCwgMjMwLCAKLSAgICAxMTksIDExLCA0LCAyMzAsIDEyNiwgMTEsIDQsIDIzMCwgMTIxLCAxMSwgNCwgMjMwLCAxMjMsIDExLCA0LCAyMzAsIDEyMiwgCi0gICAgMTEsIDQsIDIzMCwgMTI1LCAxMSwgNCwgMjMwLCAxMjQsIDExLCA0LCAyMzAsIDExMSwgMTEsIDQsIDIzMCwgMTEzLCAxMSwgCi0gICAgNCwgMjMwLCAxMTIsIDExLCA0LCAyMzAsIDExNiwgMTEsIDQsIDIzMCwgMTE1LCAxMSwgNCwgMjMwLCAxMTgsIDExLCA0LCAKLSAgICAyMzAsIDExNywgMTEsIDQsIDIzMCwgMTA3LCAxMSwgNCwgMjMwLCAxMDYsIDExLCA0LCAyMzAsIDExNCwgMTEsIDQsIDIzMCwgCi0gICAgMTEwLCAxMSwgNCwgMjMwLCAxMDgsIDExLCA0LCAyMzAsIDEwOSwgMTEsIDQsIDIzMCwgMTAzLCAxMSwgNCwgMjMwLCAxMDIsIAotICAgIDExLCA0LCAyMzAsIDEwNSwgMTEsIDQsIDIzMCwgMTA0LCAxMSwgNCwgMjIyLCAyNSwgMTEsIDQsIDIyMiwgMjQsIDExLCA0LCAKLSAgICAyMjIsIDMyLCAxMSwgNCwgMjIyLCAyNiwgMTEsIDQsIDIyMiwgMjgsIDExLCA0LCAyMjIsIDI3LCAxMSwgNCwgMjIyLCAzMSwgCi0gICAgMTEsIDQsIDIyMiwgMjksIDExLCA0LCAyMjIsIDE0LCAxMSwgNCwgMjIyLCAxNSwgMTEsIDQsIDIyMiwgMjAsIDExLCA0LCAKLSAgICAyMjIsIDE5LCAxMSwgNCwgMjIyLCAyMywgMTEsIDQsIDIyMiwgMjEsIDExLCA0LCAyMjIsIDksIDExLCA0LCAyMjIsIDE4LCAKLSAgICAxMSwgNCwgMjIyLCAxMywgMTEsIDQsIDIyMiwgMTAsIDExLCA0LCAyMjIsIDExLCAxMSwgNCwgMjIyLCA0LCAxMSwgNCwgCi0gICAgMjIyLCAzLCAxMSwgNCwgMjIyLCA4LCAxMSwgNCwgMjIyLCA3LCAxMSwgNCwgMjIyLCA1LCAxMSwgNCwgMjIyLCA2LCAxMSwgCi0gICAgNCwgMjIwLCAyMzYsIDExLCA0LCAyMjAsIDIzNSwgMTEsIDQsIDIyMCwgMjQ4LCAxMSwgNCwgMjIwLCAyNDAsIDExLCA0LCAKLSAgICAyMjAsIDI0NSwgMTEsIDQsIDIyMCwgMjQ0LCAxMSwgNCwgMjIwLCAyNDcsIDExLCA0LCAyMjAsIDI0NiwgMTEsIDQsIDIyMCwgCi0gICAgMjIxLCAxMSwgNCwgMjIwLCAyMjMsIDExLCA0LCAyMjAsIDIyMiwgMTEsIDQsIDIyMCwgMjI4LCAxMSwgNCwgMjIwLCAyMjcsIAotICAgIDExLCA0LCAyMjAsIDIzMywgMTEsIDQsIDIyMCwgMjI5LCAxMSwgNCwgMjIwLCAyMTksIDExLCA0LCAyMjAsIDIxNywgMTEsIAotICAgIDQsIDIyMCwgMjI2LCAxMSwgNCwgMjIwLCAyMjAsIDExLCA0LCAyMDMsIDE2MiwgMTEsIDQsIDIwMywgMTYxLCAxMSwgNCwgCi0gICAgMjAzLCAxNzAsIDExLCA0LCAyMDMsIDE2NCwgMTEsIDQsIDIwMywgMTY2LCAxMSwgNCwgMjAzLCAxNjUsIDExLCA0LCAyMDMsIAotICAgIDE2OCwgMTEsIDQsIDIwMywgMTY3LCAxMSwgNCwgMjAzLCAxNTAsIDExLCA0LCAyMDMsIDE1MSwgMTEsIDQsIDIwMywgMTU1LCAKLSAgICAxMSwgNCwgMjAzLCAxNTQsIDExLCA0LCAyMDMsIDE2MCwgMTEsIDQsIDIwMywgMTU4LCAxMSwgNCwgMjAzLCAxMjgsIDExLCAKLSAgICA0LCAyMDMsIDEyNiwgMTEsIDQsIDIwMywgMTQxLCAxMSwgNCwgMjAzLCAxMzEsIDExLCA0LCAyMDMsIDEyOSwgMTEsIDQsIAotICAgIDIwMywgMTMwLCAxMSwgNCwgMjAyLCAyNTMsIDExLCA0LCAyMDIsIDI1MSwgMTEsIDQsIDIwMywgMTEsIDExLCA0LCAyMDIsIAotICAgIDI1NCwgMTEsIDQsIDIwMywgNSwgMTEsIDQsIDIwMywgNCwgMTEsIDQsIDIwMywgOCwgMTEsIDQsIDIwMywgNiwgMTEsIDQsIAotICAgIDIwMiwgMTkxLCAxMSwgNCwgMjAyLCAxOTAsIDExLCA0LCAyMDIsIDE5NCwgMTEsIDQsIDIwMiwgMTkyLCAxMSwgNCwgMjAyLCAKLSAgICAyMjcsIDExLCA0LCAyMDIsIDIyMywgMTEsIDQsIDIwMiwgMjQ3LCAxMSwgNCwgMjAyLCAyMzEsIDExLCA0LCAyMDIsIDE4MiwgCi0gICAgMTEsIDQsIDIwMiwgMTc4LCAxMSwgNCwgMjAyLCAyMTMsIDExLCA0LCAyMDIsIDE4OSwgMTEsIDQsIDIwMiwgMTg1LCAxMSwgCi0gICAgNCwgMjAyLCAxODYsIDExLCA0LCAyMDIsIDE2MiwgMTEsIDQsIDIwMiwgMTYxLCAxMSwgNCwgMjAyLCAxNjksIDExLCA0LCAKLSAgICAyMDIsIDE2NSwgMTEsIDQsIDIwMiwgMTYzLCAxMSwgNCwgMjAyLCAxNjQsIDExLCA0MCwgMjE3LCA2OCwgMTEsIDQwLCAyMjcsIAotICAgIDE0OCwgMTEsIDQwLCAyMjksIDY0LCAxMSwgNDAsIDIyMCwgMjQwLCAxMSwgNDAsIDI0NSwgNjAsIDExLCA0MCwgMjExLCAKLSAgICAxMzIsIDExLCA0MCwgMjM4LCAxMzgsIDExLCA0MCwgMjM4LCAxNzAsIDExLCA0MCwgMjI0LCAxNTUsIDExLCA0MCwgMjM1LCAKLSAgICAyMzMsIDExLCA0MCwgMjI2LCAxOTIsIDExLCA0MCwgMjQ4LCAxNzAsIDExLCA0MCwgMjI0LCAyNywgMTEsIDQwLCAyMDIsIAotICAgIDI0NywgMTEsIDQwLCAyMTcsIDE1OSwgMTEsIDQwLCAyMzUsIDIyNywgMTEsIDQwLCAyMDksIDIxMiwgMTEsIDQwLCAyMzksIAotICAgIDgsIDExLCA0MCwgMjAxLCAyNTQsIDExLCA0MCwgMjQ1LCA1NCwgMTEsIDQwLCAyNDQsIDgwLCAxMSwgNDAsIDI0NywgMTYwLCAKLSAgICAxMSwgNDAsIDIzOCwgMTM0LCAxMSwgNDAsIDIyMCwgMjI5LCAxMSwgNDAsIDIwNywgMjAzLCAxMSwgNDAsIDIyMCwgOSwgMTEsIAotICAgIDQwLCAyMzAsIDEwNywgMTEsIDQwLCAyMDIsIDEzLCAxMSwgNDAsIDIxNywgMTM4LCAxMSwgNDAsIDIzNiwgMTc4LCAxMSwgCi0gICAgNDAsIDIwMiwgMjUzLCAxMSwgNDAsIDIwNCwgMTU5LCAxMSwgNDAsIDIxMiwgMTcxLCAxMSwgNDAsIDIwNiwgNDQsIDExLCAKLSAgICA0MCwgMjAyLCAxMTYsIDExLCA0MCwgMjMwLCAxMDEsIDExLCA0MCwgMjIwLCAxOTMsIDExLCA0MCwgMjMwLCAxMDUsIDExLCAKLSAgICA0MCwgMjM4LCAxOCwgMTEsIDQwLCAyMzAsIDEyNSwgMTEsIDQwLCAyMDQsIDAsIDExLCA0MCwgMjQyLCA0MiwgMTEsIDQwLCAKLSAgICAyMTIsIDE4NiwgMTEsIDQwLCAyMjcsIDE0MiwgMTEsIDQwLCAyNDUsIDY2LCAxMSwgNDAsIDI0NSwgMTAyLCAxMSwgNDAsIAotICAgIDI0NiwgNjMsIDExLCA0MCwgMjM1LCAyMzAsIDExLCA0MCwgMjEzLCA1MywgMTEsIDQwLCAyMDEsIDI1MywgMTEsIDQwLCAKLSAgICAyMTIsIDIzMiwgMTEsIDQwLCAyNDYsIDE3MCwgMTEsIDQwLCAyMDEsIDIyMywgMTEsIDQwLCAyMjMsIDUxLCAxMSwgNDAsIAotICAgIDIyOSwgMjAxLCAyMjcsIDkxLCAxLCAyNDksIDMyLCAyMjcsIDkxLCAxLCAxODUsIDIyNywgOTEsIDEsIDIxOCwgMjA4LCAKLSAgICAyMjcsIDkxLCAxLCAyNDQsIDIxMiwgMjI3LCA5MSwgMSwgMjEwLCAyMiwgMjI3LCA5MSwgMSwgMjA5LCAxMDgsIDIyNywgOTEsIAotICAgIDEsIDIzOSwgOCwgMjI3LCA5MSwgMSwgMTczLCAyMjcsIDkxLCAxLCAyMjksIDE0NCwgMjI3LCA5MSwgMSwgMjMwLCAxODEsIAotICAgIDIyNywgOTEsIDEsIDI0NywgOTIsIDIyNywgOTEsIDEsIDI0NiwgMTk5LCAyMjcsIDkxLCAxLCAyNDEsIDI1NSwgMjI3LCA5MSwgCi0gICAgMSwgMjA4LCAyMCwgMjI3LCA5MSwgMSwgMjA4LCAxMCwgMjI3LCA5MSwgMSwgMTkyLCAyMjcsIDkxLCAxLCAyMDEsIDIwMSwgCi0gICAgMjI3LCA5MSwgMSwgMjI4LCAxMTMsIDIyNywgOTEsIDEsIDIxNSwgMzYsIDIyNywgOTEsIDEsIDIwMiwgODAsIDIyNywgOTEsIAotICAgIDEsIDIwMiwgMTE2LCAyMjcsIDkxLCAxLCAyMjIsIDIwMywgMjI3LCA5MSwgMSwgMTUyLCAyMjcsIDkxLCAxLCAyMDMsIDE4MiwgCi0gICAgMjI3LCA5MSwgMSwgMjM3LCAxMiwgMjI3LCA5MSwgMSwgMjQwLCAxMDgsIDIyNywgOTEsIDEsIDIwNCwgMTExLCAyMjcsIDkxLCAKLSAgICAxLCAyMTMsIDkwLCAyMjcsIDkxLCAxLCAxOTgsIDIyNywgOTEsIDEsIDIzOCwgMTE5LCAyMjcsIDkxLCAxLCA2MywgMjI3LCAKLSAgICA5MSwgMSwgMjUxLCAxMDksIDIyNywgOTEsIDEsIDc0LCAyMjcsIDkxLCAxLCAyNDAsIDIzOCwgMjI3LCA5MSwgMSwgNzUsIAotICAgIDIyNywgOTEsIDEsIDc4LCAyMjcsIDkxLCAxLCA2OCwgMjI3LCA5MSwgMSwgMjA3LCAyNCwgMjI3LCA5MSwgMSwgMjA3LCAxOCwgCi0gICAgMjI3LCA5MSwgMSwgMjIwLCA3MywgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjA5LCAyLCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTExLCAyMTgsIDY5LCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyNDUsIDY1LCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTcwLCAyNDgsIDIzLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDEsIDIwMSwgMjI3LCA5MSwgMSwgMTQzLCAKLSAgICAyMjMsIDE3MCwgMjMwLCAxNTAsIDIyNywgOTEsIDIxNywgMTc5LCAyNDUsIDIzMywgMjI3LCA5MSwgMjE3LCAxNzksIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCA0OCwgNCwgMjQxLCAxNjEsIDQ4LCA0LCAyNDEsIDE1NywgNDgsIDQsIDIzNywgNDgsIDQ4LCA0LCAKLSAgICAyMDQsIDU1LCA0OCwgNCwgMjA0LCA1NCwgNDgsIDQsIDIxOSwgMjMsIDQ4LCA0LCAyNDgsIDkzLCA0OCwgNCwgMjQ4LCAxNTAsIAotICAgIDQ4LCA0LCAyMjUsIDQ2LCA0OCwgNCwgMjI4LCAyMzksIDQ4LCA0LCAyMjQsIDE4NywgNDgsIDQsIDIzOCwgMjAzLCA0OCwgNCwgCi0gICAgMjQwLCA1MywgNDgsIDQsIDIwNiwgNTAsIDQ4LCA0LCAyMDksIDE3NiwgNDgsIDQsIDIwOSwgOTAsIDQ4LCA0LCAyNDMsIAotICAgIDI0NywgNDgsIDQsIDI0MywgMjQ0LCA0OCwgNCwgMjI3LCAyMjYsIDQ4LCA0LCAyMTYsIDEzNSwgNDgsIDQsIDI0NCwgNjEsIAotICAgIDQ4LCA0LCAyMjMsIDE2LCA0OCwgNCwgMjE0LCAxNjUsIDQ4LCA0LCAyMTMsIDQxLCA0OCwgNCwgMjAyLCA5MCwgNDgsIDQsIAotICAgIDIwMiwgNzAsIDQ4LCA0LCAyNDYsIDIzMCwgNDgsIDQsIDIzMCwgMTU5LCA0OCwgNCwgMjIyLCAzOSwgNDgsIDQsIDIwMywgCi0gICAgNDksIDQ4LCA0LCAyMjksIDE5OCwgNDgsIDQsIDIyMiwgMTc2LCA0OCwgNCwgMjM4LCAxODIsIDQ4LCA0LCAyMjUsIDgsIDQ4LCAKLSAgICA0LCAyMjIsIDIzNSwgNDgsIDQsIDIyMSwgMCwgNDgsIDQsIDc1LCA0OCwgNCwgMjMxLCA0OSwgNDgsIDQsIDIzNywgMywgNDgsIAotICAgIDQsIDIzNiwgMjM4LCA0OCwgNCwgMjA0LCAzMCwgNDgsIDQsIDIwNCwgMTgsIDQ4LCA0LCAyMTgsIDE2NywgNDgsIDQsIDI0OCwgCi0gICAgOTEsIDQ4LCA0LCAyNDgsIDg2LCA0OCwgNCwgMjI1LCAzOSwgNDgsIDQsIDIyOCwgMjM2LCA0OCwgNCwgMjI0LCAxODQsIDQ4LCAKLSAgICA0LCAyMzgsIDE5OSwgNDgsIDQsIDI0MCwgMjYsIDQ4LCA0LCAyMDUsIDIzMCwgNDgsIDQsIDIwOSwgMiwgNDgsIDQsIDIwOSwgCi0gICAgNzAsIDQ4LCA0LCAyNDMsIDIzOSwgNDgsIDQsIDI0MywgMjQzLCA0OCwgNCwgMjI3LCAxNDgsIDQ4LCA0LCAyMTYsIDU3LCAKLSAgICA0OCwgNCwgMjQzLCAyMzMsIDQ4LCA0LCAyMjMsIDEwLCA0OCwgNCwgMjEyLCAxNjIsIDQ4LCA0LCAyMTMsIDExLCA0OCwgNCwgCi0gICAgMjAyLCAzOSwgNDgsIDQsIDIwMiwgNjYsIDQ4LCA0LCAyNDYsIDc5LCA0OCwgNCwgMjMwLCAxNDEsIDQ4LCA0LCAyMjIsIDMyLCAKLSAgICA0OCwgNCwgMjAzLCAxMSwgNDgsIDQsIDIyOSwgMTAwLCA0OCwgNCwgMjIyLCAxNjgsIDQ4LCA0LCAyMzgsIDgxLCA0OCwgNCwgCi0gICAgMjI0LCAxNTUsIDQ4LCA0LCAyMjIsIDEwMCwgNDgsIDQsIDIyMCwgMjQ4LCA0OCwgNCwgNjMsIDQ4LCA0LCAyNTAsIDIzMSwgCi0gICAgNDgsIDQsIDIyMiwgMTk4LCA0OCwgNCwgMTUyLCA0OCwgNCwgMjM3LCAxMjYsIDQ4LCA0LCAyMDQsIDExMSwgNDgsIDQsIAotICAgIDIwNCwgOTcsIDQ4LCA0LCAxODUsIDQ4LCA0LCAyNDgsIDk4LCA0OCwgNCwgMjQ5LCAzMiwgNDgsIDQsIDIyNSwgNTQsIDQ4LCAKLSAgICA0LCAyMjgsIDI0NCwgNDgsIDQsIDIyOCwgMjQyLCA0OCwgNCwgMjI0LCAxOTEsIDQ4LCA0LCAyMzgsIDIwNywgNDgsIDQsIAotICAgIDI0MCwgMTA4LCA0OCwgNCwgMjA2LCA4NiwgNDgsIDQsIDIxMCwgMjIsIDQ4LCA0LCAyMDksIDEwOCwgNDgsIDQsIDI0NCwgMSwgCi0gICAgNDgsIDQsIDI0MywgMjQ2LCA0OCwgNCwgMjI4LCAxMTMsIDQ4LCA0LCAyMTYsIDIyMCwgNDgsIDQsIDI0NCwgMjEyLCA0OCwgCi0gICAgNCwgMjIzLCAyNSwgNDgsIDQsIDIxNSwgMzYsIDQ4LCA0LCAyMTMsIDkwLCA0OCwgNCwgMjAyLCAxMTYsIDQ4LCA0LCAyMDIsIAotICAgIDgwLCA0OCwgNCwgMjQ3LCA5MiwgNDgsIDQsIDIzMCwgMTgxLCA0OCwgNCwgMjIyLCA0OCwgNDgsIDQsIDE5OCwgNDgsIDQsIAotICAgIDE3MywgNDgsIDQsIDIzMCwgNCwgNDgsIDQsIDIyMiwgMTgyLCA0OCwgNCwgMjM5LCA4LCA0OCwgNCwgMTkyLCA0OCwgNCwgCi0gICAgMjAxLCAyMDEsIDQ4LCA0LCAyMjEsIDExLCA0OCwgNCwgMjIwLCAxOCwgNDgsIDQsIDIyMCwgMTMsIDQ4LCA0LCAyMzYsIAotICAgIDExNywgNDgsIDQsIDIwMywgMjQ0LCA0OCwgNCwgMjAzLCAyNDAsIDQ4LCA0LCAyMTgsIDQ1LCA0OCwgNCwgMjQ4LCA4OSwgCi0gICAgNDgsIDQsIDI0OCwgMTAsIDQ4LCA0LCAyMjUsIDM0LCA0OCwgNCwgMjI4LCAyMzQsIDQ4LCA0LCAyMjQsIDE4MCwgNDgsIDQsIAotICAgIDIzOCwgMTk1LCA0OCwgNCwgMjM5LCAxNzUsIDQ4LCA0LCAyMDUsIDE3NiwgNDgsIDQsIDIwOCwgMTQ4LCA0OCwgNCwgMjA5LCAKLSAgICA0MiwgNDgsIDQsIDI0MywgMjM2LCA0OCwgNCwgMjQzLCAyNDEsIDQ4LCA0LCAyMjcsIDE4LCA0OCwgNCwgMjE1LCAyMDgsIAotICAgIDQ4LCA0LCAyNDMsIDkwLCA0OCwgNCwgMjIyLCAyNTMsIDQ4LCA0LCAyMTEsIDI1MCwgNDgsIDQsIDIxMiwgMjM2LCA0OCwgNCwgCi0gICAgMjAyLCAxNSwgNDgsIDQsIDIwMiwgNjEsIDQ4LCA0LCAyNDUsIDE4MCwgNDgsIDQsIDIzMCwgOTEsIDQ4LCA0LCAyMjIsIDIyLCAKLSAgICA0OCwgNCwgMjAyLCAyMzIsIDQ4LCA0LCAyMjksIDYsIDQ4LCA0LCAyMjIsIDE2NiwgNDgsIDQsIDIzOCwgMjgsIDQ4LCA0LCAKLSAgICAyMjQsIDM1LCA0OCwgNCwgMjIxLCAxODAsIDQ4LCA0LCAyMjAsIDIzMCwgNDgsIDQsIDY4LCA0OCwgNCwgMjA2LCAyNTUsIAotICAgIDQ4LCA0LCAyMzYsIDI2LCA0OCwgNCwgMjM2LCAxMywgNDgsIDQsIDIwMywgMjE3LCA0OCwgNCwgMjAzLCAyMTAsIDQ4LCA0LCAKLSAgICAyMTcsIDE5MSwgNDgsIDQsIDI0OCwgODgsIDQ4LCA0LCAyNDcsIDE5MywgNDgsIDQsIDIyNSwgMzMsIDQ4LCA0LCAyMjgsIAotICAgIDIzMiwgNDgsIDQsIDIyNCwgMTc5LCA0OCwgNCwgMjM4LCAxOTQsIDQ4LCA0LCAyMzksIDEwOCwgNDgsIDQsIDIwNCwgMTYzLCAKLSAgICA0OCwgNCwgMjA3LCAyMDMsIDQ4LCA0LCAyMDksIDIyLCA0OCwgNCwgMjQzLCAyMzQsIDQ4LCA0LCAyNDMsIDI0MCwgNDgsIDQsIAotICAgIDIyNiwgMjM5LCA0OCwgNCwgMjE1LCAxNDUsIDQ4LCA0LCAyNDIsIDQyLCA0OCwgNCwgMjIyLCAyNDgsIDQ4LCA0LCAyMTEsIAotICAgIDEwLCA0OCwgNCwgMjEyLCAxOTksIDQ4LCA0LCAyMDIsIDYsIDQ4LCA0LCAyMDIsIDU3LCA0OCwgNCwgMjQ1LCAxMTAsIDQ4LCAKLSAgICA0LCAyMzAsIDgyLCA0OCwgNCwgMjIyLCAxOCwgNDgsIDQsIDIwMiwgMjEzLCA0OCwgNCwgMjI4LCAyMDksIDQ4LCA0LCAyMjIsIAotICAgIDE2NSwgNDgsIDQsIDIzNywgMjMwLCA0OCwgNCwgMjIzLCAyNDYsIDQ4LCA0LCAyMjEsIDg0LCA0OCwgNCwgMjIwLCAyMjYsIAotICAgIDQ4LCA0LCA3OCwgNDgsIDQsIDIyMCwgMzEsIDQ4LCA0LCAyMjIsIDEyNCwgNDgsIDQsIDIzNiwgMTM2LCA0OCwgNCwgMjM2LCAKLSAgICAxMjAsIDQ4LCA0LCAyMDQsIDAsIDQ4LCA0LCAyMDMsIDI0NSwgNDgsIDQsIDIxOCwgNjksIDQ4LCA0LCAyNDgsIDkwLCA0OCwgCi0gICAgNCwgMjQ4LCAyMywgNDgsIDQsIDIyNSwgMzUsIDQ4LCA0LCAyMjgsIDIzNSwgNDgsIDQsIDIyNCwgMTgyLCA0OCwgNCwgMjM4LCAKLSAgICAxOTcsIDQ4LCA0LCAyMzgsIDE5NiwgNDgsIDQsIDIzOSwgMTg2LCA0OCwgNCwgMjA1LCAxODksIDQ4LCA0LCAxMzUsIDQ4LCAKLSAgICA0LCAyMDksIDQ3LCA0OCwgNCwgMjQzLCAyMzcsIDQ4LCA0LCAyNDMsIDI0MiwgNDgsIDQsIDIyNywgNDksIDQ4LCA0LCAyMTUsIAotICAgIDIyNywgNDgsIDQsIDI0MywgMTEzLCA0OCwgNCwgMjIzLCAxLCA0OCwgNCwgMjEyLCAxMywgNDgsIDQsIDIxMiwgMjQyLCA0OCwgCi0gICAgNCwgMjAyLCAxNywgNDgsIDQsIDIwMiwgNjMsIDQ4LCA0LCAyNDUsIDI1NCwgNDgsIDQsIDIzMCwgMTAxLCA0OCwgNCwgMjIyLCAKLSAgICAyMywgNDgsIDQsIDIwMiwgMjQ3LCA0OCwgNCwgMjI5LCAyNiwgNDgsIDQsIDIyMiwgMTY3LCA0OCwgNCwgMjM4LCAzOSwgNDgsIAotICAgIDQsIDIyNCwgODIsIDQ4LCA0LCAyMjEsIDE5MSwgNDgsIDQsIDIyMCwgMjMzLCA0OCwgNCwgNzQsIDQ4LCA0LCAyNDEsIDkyLCAKLSAgICA0OCwgNCwgMjIyLCAxODcsIDQ4LCA0LCAyMzcsIDY3LCA0OCwgNCwgMjM3LCAzMywgNDgsIDQsIDIwNCwgNjIsIDQ4LCA0LCAKLSAgICAyMDQsIDQ5LCA0OCwgNCwgMjE5LCAzNCwgNDgsIDQsIDI0OCwgOTQsIDQ4LCA0LCAyNDgsIDE2MiwgNDgsIDQsIDIyNSwgNDcsIAotICAgIDQ4LCA0LCAyMjgsIDI0MCwgNDgsIDQsIDIyOCwgMjM4LCA0OCwgNCwgMjI0LCAxODgsIDQ4LCA0LCAyMzgsIDIwNCwgNDgsIAotICAgIDQsIDIzOCwgMjAyLCA0OCwgNCwgMjQwLCA2MCwgNDgsIDQsIDIwNiwgNTUsIDQ4LCA0LCAyMDksIDE4NywgNDgsIDQsIDIwOSwgCi0gICAgOTIsIDQ4LCA0LCAyNDMsIDI0OCwgNDgsIDQsIDI0MywgMjQ1LCA0OCwgNCwgMjI3LCAyMzQsIDQ4LCA0LCAyMTYsIDE1OCwgCi0gICAgNDgsIDQsIDI0NCwgNzUsIDQ4LCA0LCAyMjMsIDE3LCA0OCwgNCwgMjE0LCAxNzcsIDQ4LCA0LCAyMTMsIDQzLCA0OCwgNCwgCi0gICAgMjAyLCA5MiwgNDgsIDQsIDIwMiwgNzEsIDQ4LCA0LCAyNDYsIDIzOCwgNDgsIDQsIDIzMCwgMTYxLCA0OCwgNCwgMjIyLCAKLSAgICA0MSwgNDgsIDQsIDIwMywgNTIsIDQ4LCA0LCAyMjksIDIwMSwgNDgsIDQsIDIyMiwgMTc3LCA0OCwgNCwgMjIyLCAxNzMsIAotICAgIDQ4LCA0LCAyMzgsIDE5MCwgNDgsIDQsIDIzOCwgMTc3LCA0OCwgNCwgMjI1LCAyMCwgNDgsIDQsIDIyMiwgMjQwLCA0OCwgNCwgCi0gICAgMjIxLCAxLCA0OCwgNCwgMjIyLCAyMDUsIDQ4LCA0LCAyMjcsIDE4OCwgNDgsIDI0NSwgMjMzLCA0OCwgMjM5LCAxMDIsIAotICAgIDIxMSwgNjEsIDQ4LCAyMTcsIDQ3LCA4MiwgNDgsIDQsIDIyMywgMCwgMjQwLCAxMDgsIDQ4LCA0LCAyMjMsIDAsIDE3MywgCi0gICAgNDgsIDQsIDIyMywgMCwgMjExLCAyNTAsIDQ4LCAxNiwgMjQwLCA0OSwgNDgsIDE2LCAyMjksIDE5NiwgNDgsIDE2LCAyMDgsIAotICAgIDIxNSwgNDgsIDE2LCAyMjIsIDc1LCA0OCwgMTYsIDI0OCwgMjM3LCA0OCwgMTYsIDI0MCwgMTA3LCA0OCwgMTYsIDIxMCwgCi0gICAgMTgsIDQ4LCAxNiwgMjQ0LCAxNjQsIDQ4LCAxNiwgMjQzLCA4OSwgNDgsIDE2LCAyMjgsIDE5MywgNDgsIDE2LCAyMDgsIAotICAgIDE1MiwgNDgsIDE2LCAyNDMsIDExMiwgNDgsIDE2LCAyMzAsIDkyLCA0OCwgMTcsIDIwMiwgODQsIDQ4LCAxNywgMTA1LCA0OCwgCi0gICAgMTcsIDEwOCwgNDgsIDE3LCAxNDcsIDQ4LCAxNywgMTQ5LCA0OCwgMTcsIDE3MCwgNDgsIDE3LCAxOTUsIDQ4LCAxNywgMjEzLCAKLSAgICAxMTEsIDQ4LCAxNywgMTk5LCA0OCwgMTcsIDIyMiwgNjMsIDQ4LCA0LCAyMjMsIDAsIDE5MiwgNDgsIDQsIDIyMywgMCwgCi0gICAgMjQzLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDg4LCAzNiwgNSwgMSwgMjAyLCA4OCwgMzYsIDYsIDEsIDI0MSwgMjUwLCAzNiwgCi0gICAgNSwgMSwgMjQxLCAyNTAsIDM2LCA2LCAxLCAyMTYsIDczLCAyNDEsIDI1MiwgMzYsIDUsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAKLSAgICAzNiwgNiwgMSwgMjMwLCAyMzAsIDM2LCA1LCAxLCAyMzAsIDIzMCwgMzYsIDYsIDEsIDI0MywgMTI5LCAzNiwgNSwgMSwgCi0gICAgMjQzLCAxMjksIDM2LCA2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNSwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzYsIDYsIAotICAgIDEsIDI0NywgMjA0LCAyMjAsIDM2LCAzNiwgNSwgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA2LCAxLCAyMjIsIDIxNiwgCi0gICAgMjAzLCAzNCwgMzYsIDUsIDEsIDIyMiwgMjE2LCAyMDMsIDM0LCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAKLSAgICAzNCwgMzYsIDUsIDEsIDIwMywgMzEsIDMsIDI0OSwgMjYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMzAsIDIyOCwgMjAzLCA2NiwgCi0gICAgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCAyMTMsIDM2LCA1LCAxLCAyMTYsIAotICAgIDczLCAyMDIsIDIxMywgMzYsIDYsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDUsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDYsIDEsIAotICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA2LCAKLSAgICAxLCAyNDgsIDM1LCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIAotICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgCi0gICAgMTgzLCAzNiwgNiwgMSwgMjAyLCAyNDksIDM2LCA1LCAxLCAyMDIsIDI0OSwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIAotICAgIDM2LCA1LCAxLCAyMTYsIDczLCAyMDgsIDE0LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDQsIDc1LCAzNiwgNSwgMSwgMjEyLCA3LCAKLSAgICAyNDQsIDc1LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDUsIDEsIDIxMiwgNywgMjQxLCAxMjIsIDM2LCA2LCAKLSAgICAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEwMywgMzYsIDYsIDEsIDIyNCwgNDcsIDc4LCAKLSAgICAzNiwgNSwgMSwgMjI0LCA0NywgNzgsIDM2LCA2LCAxLCAyNDgsIDYzLCA3OCwgMzYsIDUsIDEsIDI0OCwgNjMsIDc4LCAzNiwgCi0gICAgNiwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgNSwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgMSwgMjIzLCAyMjcsIDc4LCAKLSAgICAzOSwgMzYsIDIwNCwgMTQ2LCAzOSwgMzYsIDIwOSwgMTUzLCAyMjQsIDExNCwgNTQsIDM5LCAzNiwgMjM2LCAxMiwgMjI0LCAKLSAgICAxMTQsIDU0LCAzOSwgMzYsIDIwOSwgMzcsIDIyNCwgMTE0LCA1NCwgMjEyLCA1NSwgMjUwLCA1OSwgMzksIDM2LCAxLCAyMDcsIAotICAgIDExLCAyMzEsIDExMCwgMzksIDM2LCAxLCA3NSwgMzksIDM2LCAxLCAyMDMsIDExLCAzOSwgMzYsIDEsIDY4LCAzOSwgMzYsIAotICAgIDEsIDIzNywgOTEsIDU0LCAzOSwgMzYsIDEsIDIwMywgMzAsIDM5LCAzNiwgMSwgMjEyLCA3LCA1NCwgMzksIDM2LCAxLCAKLSAgICAyMjAsIDM2LCAzOSwgMzYsIDIyOSwgMjEzLCAzOSwgMzYsIDIxOSwgNDEsIDM2LCAyMjksIDIxMywgMzYsIDIxOSwgNDEsIAotICAgIDM2LCA2LCAxLCAyNDIsIDksIDM2LCA1LCAxLCAyNDIsIDksIDM2LCA2LCAxLCAyNDEsIDI0MSwgMzYsIDUsIDEsIDI0MSwgCi0gICAgMjQxLCAzNiwgNiwgMSwgMjAyLCA0NywgMzYsIDUsIDEsIDIwMiwgNDcsIDM2LCA2LCAxLCAyNDYsIDI1NCwgMzYsIDUsIDEsIAotICAgIDI0NiwgMjU0LCAzNiwgNiwgMSwgMjQxLCAyMzgsIDM2LCA1LCAxLCAyNDEsIDIzOCwgMzYsIDYsIDEsIDIwOSwgMTg4LCAzLCAKLSAgICAxMDEsIDExMywgMzYsIDUsIDEsIDIwOSwgMTg4LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwNywgMTU4LCAzNiwgNSwgMSwgCi0gICAgMjA3LCAxNTgsIDM2LCA2LCAxLCAyMDcsIDI0NSwgMzYsIDUsIDEsIDIwNywgMjQ1LCAzNiwgNiwgMSwgMjA3LCAyNTAsIDM2LCAKLSAgICA1LCAxLCAyMDcsIDI1MCwgMzYsIDYsIDEsIDIwOSwgMTkzLCAzNiwgNSwgMSwgMjA5LCAxOTMsIDM2LCA2LCAxLCAyMzUsIAotICAgIDI1MSwgMzYsIDUsIDEsIDIzNSwgMjUxLCAzNiwgNiwgMSwgMjEyLCAxNzcsIDM2LCA1LCAxLCAyMTIsIDE3NywgMzYsIDYsIAotICAgIDEsIDUyLCA3OCwgMzYsIDUsIDEsIDUyLCA3OCwgMzYsIDYsIDEsIDI0NSwgMTI4LCA3OCwgMzYsIDUsIDEsIDI0NSwgMTI4LCAKLSAgICA3OCwgNjUsIDEsIDM2LCAyMzcsIDkxLCA1NCwgNjUsIDEsIDM2LCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIDI0MSwgMTU0LCAKLSAgICAzOSwgMzYsIDEsIDIzMCwgMjI4LCA3NCwgMjQsIDEsIDYzLCAyNCwgMSwgMTczLCAyNCwgMSwgNjgsIDI0LCAxLCAyMjgsIAotICAgIDIwOSwgMjQsIDEsIDI0MSwgMTYxLCAyNCwgMSwgMjE2LCAxMzUsIDI0LCAxLCAyMTAsIDEsIDI0LCAxLCA3OCwgMjQsIDEsIAotICAgIDIyMCwgMjQ4LCAyNCwgMSwgNzUsIDI0LCAxLCAyMjgsIDExMywgMjQsIDEsIDE4NSwgMjQsIDEsIDIxNiwgMywgMjQsIDEsIAotICAgIDIxNiwgNTAsIDI0LCAxLCAyMjcsIDIyNSwgMjQsIDEsIDIyNSwgNywgMjQsIDEsIDIxMCwgMTgsIDI0LCAxLCAyMjMsIDIzLCAKLSAgICAyNCwgMSwgMjIyLCA0NiwgMjQsIDEsIDIyNiwgMTg1LCAyNCwgMSwgMjEwLCAxNzksIDI0LCAxLCAyMjMsIDI0NiwgMjQsIDEsIAotICAgIDIxMywgNiwgMjQsIDEsIDIxMiwgMTYyLCAyNCwgMSwgMjEzLCAxNiwgMjQsIDEsIDIxMywgMTEzLCAyNCwgMSwgMjI4LCAKLSAgICAxMzcsIDI0LCAxLCAyMjksIDE3MCwgMjQsIDEsIDIyMSwgNTUsIDI0LCAxLCAyMjEsIDg0LCAyNCwgMSwgMjIyLCAxNywgMjQsIAotICAgIDEsIDIwMiwgMjI5LCAyNCwgMSwgMjEyLCAxOTksIDI0LCAxLCAyMDIsIDE4NywgMjQsIDEsIDE5OCwgMjQsIDEsIDIyMSwgCi0gICAgMTE4LCAyNCwgMSwgMjI5LCAxNTYsIDI0LCAxLCAyMTgsIDIxMiwgMjQsIDEsIDIyMiwgMzksIDI0LCAxLCAyMjEsIDk5LCAKLSAgICAyNCwgMSwgMjE3LCAxODMsIDI0LCAxLCAyMDMsIDIxNCwgMjQsIDEsIDIxOSwgMjMsIDI0LCAxLCAyNDAsIDUzLCAyNCwgMSwgCi0gICAgMjE1LCAxNDUsIDI0LCAxLCAyMjYsIDIzOSwgMjQsIDEsIDIyNCwgMTU1LCAyNCwgMSwgMjIyLCAxMDAsIDI0LCAxLCAyMTYsIAotICAgIDc1LCAyNCwgMSwgMjE2LCAyMDIsIDI0LCAxLCAyMjksIDE4MCwgMjQsIDEsIDIyMiwgMTMxLCAyNCwgMSwgMjIyLCAxODIsIAotICAgIDI0LCAxLCAyMjIsIDIwMywgMjQsIDEsIDIxMiwgMjQyLCAyNCwgMSwgMjE3LCAxODgsIDI0LCAxLCAyMzksIDEwOCwgMjQsIAotICAgIDEsIDIzOSwgMTc5LCAyNCwgMSwgMjA0LCAxMTEsIDI0LCAxLCAyMDEsIDIwMSwgMjQsIDEsIDIyNywgMTQ4LCAyNCwgMSwgCi0gICAgMjE4LCAxNjcsIDI0LCAxLCAyMjcsIDEwLCAyNCwgMSwgMjI5LCAyNiwgMjQsIDEsIDIyNSwgNDQsIDI0LCAxLCAyMTYsIAotICAgIDEwNywgMjQsIDEsIDIyNCwgMjQwLCAyNCwgMSwgMTkyLCAyNCwgMSwgMjA5LCAyLCAyNCwgMSwgMjI5LCAxMDAsIDI0LCAxLCAKLSAgICAyMjQsIDgyLCAyNCwgMSwgMjI1LCA1MiwgMjQsIDEsIDIwOSwgMTMyLCAyNCwgMSwgMjI4LCAyNDQsIDI0LCAxLCAyMDksIAotICAgIDE1MiwgMjQsIDEsIDIyMSwgODYsIDI0LCAxLCAyMTQsIDI1MSwgMjQsIDEsIDI0MCwgMTA0LCAyNCwgMSwgMjI4LCAyNDYsIAotICAgIDI0LCAxLCAyMjksIDIxLCAyNCwgMzksIDEzMSwgMjI4LCAyNTUsIDI0LCAzOSwgMTMxLCAyMDcsIDE5NCwgMjQsIDIyMiwgCi0gICAgNDUsIDI0LCAyMzksIDEwMiwgMjExLCA2MSwgMjQsIDI0NSwgMjQyLCAyNCwgMjQ1LCAyMzMsIDI0LCAyMTMsIDE0MywgMjQsIAotICAgIDIxNywgNDcsIDgyLCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTgsIDExOSwgNjUsIDEsIDI0NiwgMTI4LCAKLSAgICAxNDMsIDIwMywgNzcsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTMsIDY1LCA2NSwgMSwgCi0gICAgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjEzLCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjE3LCA2NSwgCi0gICAgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxNywgNjUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIAotICAgIDIxNSwgMTQ1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE1LCAxNDUsIDY1LCAxLCAyNDAsIDE5OCwgMjQyLCAKLSAgICA4MywgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIAotICAgIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyNDIsIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAxNDMsIAotICAgIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIAotICAgIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAKLSAgICAxMjQsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAyMjcsIDIxNCwgCi0gICAgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5OCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyMjcsIDIxNCwgMTQzLCAKLSAgICAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyMjcsIDIxNCwgMTQzLCAxNDIsIAotICAgIDY1LCAxLCAyNDAsIDE5NywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgNzAsIDgwLCAxNDIsIDY1LCAxLCA3MCwgMjEyLCAKLSAgICA1NywgNjUsIDEsIDcwLCAyMzYsIDEwNiwgMTQyLCA2NSwgMSwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMjUwLCAyMTcsIAotICAgIDY1LCAxLCAyMTYsIDE4OCwgMTEyLCA0NywgNjUsIDEsIDIxNiwgMTg4LCAxMjEsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDI0MCwgCi0gICAgMjEyLCA4MiwgNjUsIDEsIDIxNiwgMTg4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMTI0LCAyMzAsIDIzOSwgCi0gICAgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMjExLCA0MiwgMjUsIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTI0LCAKLSAgICAyMDgsIDE2MSwgOCwgNiwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDUsIDEsIDI0MSwgMTQ5LCAyNTEsIDMwLCA4LCA2LCAKLSAgICAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgNTksIDgsIDYsIDEsIDIzNywgMzEsIDgsIDUsIAotICAgIDEsIDIzNywgMzEsIDgsIDYsIDEsIDIwNywgMTA3LCA4LCA1LCAxLCAyMDcsIDEwNywgOCwgNiwgMSwgMjA4LCA4OSwgOCwgNSwgCi0gICAgMSwgMjA4LCA4OSwgOCwgNiwgMSwgMjQ1LCAxMDcsIDgsIDUsIDEsIDI0NSwgMTA3LCA4LCA2LCAxLCAyNDUsIDEwOCwgMywgCi0gICAgMjQ1LCAyMzMsIDgsIDUsIDEsIDI0NSwgMTA4LCAzLCAyNDUsIDIzMywgOCwgMSwgNSwgNiwgMjQwLCAxNzQsIDgsIDEsIDUsIAotICAgIDYsIDE5NCwgOCwgNiwgMSwgMjUyLCAyNSwgOCwgNSwgMSwgMjUyLCAyNSwgOCwgNiwgMSwgMjUwLCAxNzgsIDgsIDUsIDEsIAotICAgIDI1MCwgMTc4LCA4LCA2LCAxLCAyNTAsIDM0LCA4LCA1LCAxLCAyNTAsIDM0LCA4LCA2LCAxLCAyNTAsIDE4LCA4LCA1LCAxLCAKLSAgICAyNTAsIDE4LCA4LCA2LCAxLCAyNTAsIDE5LCAzLCAyMzYsIDEwNiwgMTQyLCA4LCA1LCAxLCAyNTAsIDE5LCAzLCAyMzYsIAotICAgIDEwNiwgMTQyLCA4LCA2LCAxLCAyNTAsIDgsIDgsIDUsIDEsIDI1MCwgOCwgOCwgNiwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIAotICAgIDMsIDI0MywgODUsIDgsIDUsIDEsIDIxNiwgNzMsIDI0NywgMTI2LCAzLCAyNDMsIDg1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKLSAgICA5NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgCi0gICAgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCAKLSAgICA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyNDcsIDIwMywgMTU5LCAKLSAgICA4LCA1LCAxLCAyNDcsIDIwMywgMTU5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTM4LCA5NSwgOCwgNSwgMSwgMjI4LCAxMzEsIAotICAgIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDE1OCwgMywgMTYzLCAyMTEsIDMyLCAyMTksIDE5OSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA2LCAxLCAxNTgsIDMsIDIyNywgMTQsIDgsIDUsIDEsIDE1OCwgMywgMjI3LCAKLSAgICAxNCwgOCwgNiwgMSwgMjIwLCAxOCwgOCwgNSwgMSwgMjIwLCAxOCwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIAotICAgIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyMTksIDE4NSwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjE5LCAKLSAgICAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgCi0gICAgNiwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAyMTEsIAotICAgIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMTcsIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMTcsIAotICAgIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDIxNSwgMTkyLCA4LCA1LCAxLCAyMTcsIDEsIDIxNSwgCi0gICAgMTkyLCA4LCA2LCAxLCAyMTUsIDEzMiwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNiwgMSwgCi0gICAgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgCi0gICAgMjA0LCAxNTIsIDgsIDUsIDEsIDIwNCwgMTUyLCA4LCA2LCAxLCAyMDUsIDE5NywgMjAyLCAxNTksIDgsIDUsIDEsIDIwNSwgCi0gICAgMTk3LCAyMDIsIDE1OSwgOCwgNiwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDk1LCA4LCA2LCAxLCAKLSAgICAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIAotICAgIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMDYsIDQ1LCA4LCA1LCAxLCAyMDYsIDQ1LCA4LCA2LCAxLCAyNDAsIDI1MCwgOCwgNSwgCi0gICAgMSwgMjQwLCAyNTAsIDgsIDYsIDEsIDIzMCwgMjE1LCA4LCA1LCAxLCAyMzAsIDIxNSwgOCwgNiwgMSwgMjQ1LCAyMTgsIDgsIAotICAgIDUsIDEsIDI0NSwgMjE4LCA2NSwgMSwgMjA2LCAxOTMsIDgsIDUsIDEsIDI0MiwgMzIsIDgsIDUsIDEsIDIyNiwgMjIyLCA4LCAKLSAgICA1LCAxLCAyMjMsIDIyMCwgOCwgNSwgMSwgMjIxLCA0NywgOCwgNSwgMSwgMjE1LCAxMzEsIDgsIDEsIDUsIDYsIDIxNSwgCi0gICAgMTMxLCA4LCA1LCAxLCAyMDcsIDE5MSwgOCwgNSwgMSwgMjA3LCA2LCA4LCA2LCAxLCAyMzEsIDQsIDI0NSwgNTEsIDgsIDUsIAotICAgIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNiwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgOCwgNSwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgCi0gICAgOCwgNiwgMSwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA1LCAxLCAKLSAgICAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMTU5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCi0gICAgMTU5LCA4LCA2LCAxLCAyMzEsIDQsIDE0NiwgOCwgNSwgMSwgMjMxLCA0LCAxNDYsIDgsIDYsIDEsIDIzMSwgNCwgMTk0LCA4LCAKLSAgICA1LCAxLCAyMzEsIDQsIDE5NCwgOCwgNiwgMSwgMjMxLCA0LCAyMTAsIDY5LCA4LCA1LCAxLCAyMzEsIDQsIDIxMCwgNjksIAotICAgIDY1LCAxLCAxMjQsIDI0NiwgNTMsIDI1MSwgMTM4LCA2NSwgMSwgMjQ1LCAyNDIsIDY1LCAxLCAyMTIsIDIyOCwgMjQxLCAzNSwgCi0gICAgNTQsIDgsIDYsIDEsIDIxNCwgMjU1LCA4LCA1LCAxLCAyMTQsIDI1NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMjM2LCAxMTYsIDI1LCAyNDgsIDEyNCwgOCwgMSwgMjEyLCAxMTQsIDI0MywgCi0gICAgODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ0LCAyMCwgOCwgNiwgCi0gICAgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIAotICAgIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjM5LCAKLSAgICAxOTksIDgsIDUsIDEsIDY2LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDk1LCA4LCA1LCAxLCAyNDAsIAotICAgIDE3NSwgMywgOTUsIDgsIDYsIDEsIDIwNSwgMTgyLCAyNTEsIDEwOSwgOCwgNSwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCAKLSAgICA2LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNSwgMSwgMjA1LCAxODIsIDIyMCwgNzMsIDgsIDYsIDEsIDIwNSwgMTgyLCAKLSAgICAyMDcsIDI0LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjA3LCAyNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIAotICAgIDUsIDEsIDIzOSwgNzYsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgCi0gICAgMjMwLCA1NSwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjIzLCAKLSAgICAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIAotICAgIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjIwLCAKLSAgICA4OSwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAxMTMsIDgsIDYsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDYsIDEsIAotICAgIDEzMiwgMjM5LCA3NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMwLCA1NCwgCi0gICAgOCwgNiwgMSwgMjA3LCAxNzQsIDIxMCwgNjksIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNiwgMSwgMjQ2LCAKLSAgICAxNDIsIDgsIDYsIDEsIDI0OCwgMTA2LCA4LCA1LCAxLCAyNDgsIDEwNiwgOCwgNiwgMSwgMjIwLCAzNiwgOCwgNSwgMSwgCi0gICAgMjIwLCAzNiwgOCwgMjQxLCA0MCwgMSwgMjEyLCAxNTQsIDc1LCA2NSwgMSwgNiwgMjM3LCAxNzIsIDMsIDk1LCA2NSwgMSwgCi0gICAgNSwgMzIsIDIyMCwgNzMsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgCi0gICAgMjQwLCAxNzQsIDgsIDI0MSwgNDAsIDEsIDIxNiwgNzMsIDIxOSwgMTg0LCA4LCAyNDEsIDQwLCAxLCAyMzAsIDIzOSwgMjI2LCAKLSAgICAxODUsIDgsIDI0MSwgNDAsIDEsIDIzNSwgMjA2LCAyMjcsIDIwLCA4LCAyNDEsIDQwLCAxLCAyNTAsIDEyNiwgMjI2LCAxODUsIAotICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDc1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgCi0gICAgMjQyLCAxMSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDY4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzQsIDIxMCwgMTQ5LCAKLSAgICAyMjMsIDk0LCAxLCA3OCwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDIzNywgODUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIAotICAgIDI2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI5LCAxMTUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDM5LCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMSwgMjM4LCA5MSwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDI1MCwgMTgwLCAyMTAsIDE0OSwgMjIzLCAKLSAgICA5NCwgMSwgMjQ1LCAyNTQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDYsIDExNiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAotICAgIDIzMCwgMTAxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjMwLCAxNDMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMDcsIDIxOCwgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjI0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ0LCA5MCwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDI0NCwgOTksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAxMzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAKLSAgICAyMDksIDQ3LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQzLCAxMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDIzNywgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyMSwgMTkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE4LCA2OSwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDIxOCwgMTgwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ4LCAyMywgMjEwLCAxNDksIDIyMywgOTQsIAotICAgIDEsIDI0OCwgOTAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjQsIDgyLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAKLSAgICAyMjcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjcsIDQ5LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAxNzEsIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAxLCAyMTIsIDEzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjM2LCAxMzYsIDIxMCwgMTQ5LCAyMjMsIAotICAgIDk0LCAyMiwgMiwgNjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgCi0gICAgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgMjIwLCAxOCwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkxLCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgODksIDE1MywgCi0gICAgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjE3LCA1NSwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgCi0gICAgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgCi0gICAgODAsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDEyNiwgCi0gICAgMjEyLCA3OSwgMTUzLCAyMzEsIDMzLCAyMTcsIDU2LCA4MiwgMTUzLCAyMzEsIDMzLCAyMTgsIDk2LCA4MiwgMTUzLCAyMzEsIAotICAgIDMzLCAyMTUsIDEyMCwgODIsIDE1MywgMjMxLCAzMywgMjE3LCA1NywgODIsIDIxOCwgMjA0LCAxLCAxNzMsIDIxOCwgMjA0LCAKLSAgICAxLCAyMjksIDE0NCwgMjE4LCAyMDQsIDEsIDIzOSwgOCwgMjE4LCAyMDQsIDEsIDIyMiwgMjAzLCAyMTgsIDIwNCwgMSwgCi0gICAgMjQ3LCA5MiwgMjE4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMTgsIDIwNCwgMSwgMjMwLCAxODEsIDIxOCwgMjA0LCAxLCAyMjEsIAotICAgIDExLCAyMTgsIDIwNCwgMSwgMjEwLCAyMiwgMjE4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMTgsIDIwNCwgMSwgMjQ0LCAyMTIsIAotICAgIDIxOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjE4LCAyMDQsIDEsIDE4NSwgMjE4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMTgsIDIwNCwgCi0gICAgMSwgMjQ5LCAzMiwgMjE4LCAyMDQsIDEsIDE5MiwgMjE4LCAyMDQsIDEsIDIwOCwgMjAsIDIxOCwgMjA0LCAxLCAyMDgsIDEwLCAKLSAgICAyMTgsIDIwNCwgMSwgMjQxLCAyNTUsIDIxOCwgMjA0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDEsIDIwMiwgODAsIDIxOCwgCi0gICAgMjA0LCAxLCAyMDIsIDExNiwgMjE4LCAyMDQsIDEsIDUsIDYzLCAyMTgsIDIwNCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgMjE2LCAKLSAgICAyMjAsIDIxOCwgMjA0LCAxLCAyMjgsIDExMywgMjE4LCAyMDQsIDEsIDIxMywgOTAsIDIxOCwgMjA0LCAxLCAyMTUsIDM2LCAKLSAgICAyMTgsIDIwNCwgMSwgMTUyLCAyMTgsIDIwNCwgMSwgNjMsIDIxOCwgMjA0LCAxLCA3NSwgMjE4LCAyMDQsIDEsIDY4LCAyMTgsIAotICAgIDIwNCwgMSwgNzQsIDIxOCwgMjA0LCAxLCA3OCwgMjE4LCAyMDQsIDEsIDIxNywgMTI2LCAyMTgsIDIwNCwgMSwgMjAzLCAKLSAgICAxODIsIDIxOCwgMjA0LCAxLCAyNDAsIDEwOCwgMjE4LCAyMDQsIDEsIDIzOCwgMTU1LCAyMTgsIDIwNCwgMSwgMjQxLCAxNjEsIAotICAgIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgCi0gICAgMjA3LCAyNDEsIDIxOCwgMjA0LCAxLCAyMDcsIDIyOSwgMjE4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMTgsIDIwNCwgMSwgMjIxLCAKLSAgICAyMjcsIDIxOCwgMjA0LCAxLCAyNTAsIDI1NSwgMTk4LCAyMTgsIDIwNCwgMSwgMjA1LCAxODUsIDIxMywgOTAsIDIxOCwgCi0gICAgMjA0LCAxLCAyMDUsIDE4NiwgMTUyLCAyMTgsIDIwNCwgMSwgMjUwLCA2NiwgMjQwLCAxMDgsIDIxOCwgMjA0LCAyMTAsIAotICAgIDI1NCwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAyMTAsIDIwMSwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAxLCAyNDcsIDUyLCAKLSAgICAyMTgsIDIwNCwgMjEyLCAxMjAsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgNTIsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgCi0gICAgMTMxLCAyMTMsIDgyLCAyMTgsIDIwNCwgMTMxLCA1MiwgMjEzLCA4MiwgMjE0LCAyMTUsIDIsIDI1MCwgMTgwLCAyMTQsIAotICAgIDIxNSwgMiwgMjA1LCAxOTksIDIxNCwgMjE1LCAxLCA2MywgMjE0LCAyMTUsIDEsIDI1MiwgMjUsIDIxNCwgMjE1LCAxLCA3NSwgCi0gICAgMjE0LCAyMTUsIDEsIDIzMSwgODMsIDIxNCwgMjE1LCAxLCA2OCwgMjE0LCAyMTUsIDEsIDIwNiwgMTc4LCAyMTQsIDIxNSwgCi0gICAgMSwgMTI1LCAxNDYsIDIxNCwgMjE1LCAxLCAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMSwgMTI1LCAxNTksIDIxNCwgMjE1LCAKLSAgICAxLCAxMjUsIDIyNywgNzgsIDIxNCwgMjE1LCAxLCA3NCwgMjE0LCAyMTUsIDEsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMSwgCi0gICAgMjUxLCA2NCwgMjE0LCAyMTUsIDEsIDc4LCAyMTQsIDIxNSwgMSwgMjIwLCAxOCwgMjE0LCAyMTUsIDEsIDI1MCwgMzQsIAotICAgIDIxNCwgMjE1LCAxLCAxNzMsIDIxNCwgMjE1LCAxLCAyMjksIDE0NCwgMjE0LCAyMTUsIDEsIDIzOSwgOCwgMjE0LCAyMTUsIAotICAgIDEsIDIzOCwgMTE5LCAyMTQsIDIxNSwgMSwgMjIyLCAyMDMsIDIxNCwgMjE1LCAxLCAyNDcsIDkyLCAyMTQsIDIxNSwgMSwgCi0gICAgMjQ2LCAxOTksIDIxNCwgMjE1LCAxLCAyMzAsIDE4MSwgMjE0LCAyMTUsIDEsIDIzMCwgMTQ5LCAyMTQsIDIxNSwgMSwgMjIxLCAKLSAgICAxMSwgMjE0LCAyMTUsIDEsIDIwNywgMjQxLCAyMTQsIDIxNSwgMSwgMjA3LCAyMjksIDIxNCwgMjE1LCAxLCAyNDQsIDEyMCwgCi0gICAgMjE0LCAyMTUsIDEsIDI0NCwgMTA0LCAyMTQsIDIxNSwgMSwgMjIxLCAyMjcsIDIxNCwgMjE1LCAxLCAyMTAsIDIyLCAyMTQsIAotICAgIDIxNSwgMSwgMjA5LCAxMDgsIDIxNCwgMjE1LCAxLCAyNDQsIDIxMiwgMjE0LCAyMTUsIDEsIDI0NCwgMSwgMjE0LCAyMTUsIAotICAgIDEsIDIwMSwgMjAxLCAyMTQsIDIxNSwgMSwgMTg1LCAyMTQsIDIxNSwgMSwgMjE4LCAyMDgsIDIxNCwgMjE1LCAxLCAyNDksIAotICAgIDMyLCAyMTQsIDIxNSwgMSwgMjQ4LCA5OCwgMjE0LCAyMTUsIDEsIDE5MiwgMjE0LCAyMTUsIDEsIDE5OCwgMjE0LCAyMTUsIAotICAgIDEsIDIxNiwgMjIwLCAyMTQsIDIxNSwgMSwgMjI4LCAxMTMsIDIxNCwgMjE1LCAxLCAyMDYsIDg2LCAyMTQsIDIxNSwgMSwgCi0gICAgMjEzLCA5MCwgMjE0LCAyMTUsIDEsIDIxMSwgMTY0LCAyMTQsIDIxNSwgMSwgMjE1LCAzNiwgMjE0LCAyMTUsIDEsIDE1MiwgCi0gICAgMjE0LCAyMTUsIDEsIDIyNywgNzcsIDIxNCwgMjE1LCAxMDksIDIsIDIzNywgMTU1LCAyMTQsIDIxNSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIxNCwgMjE1LCAyMiwgMiwgNzUsIDIxNCwgMjE1LCAyMiwgMiwgMjMxLCA4MywgMjE0LCAyMTUsIDIyLCAyLCA2OCwgCi0gICAgMjE0LCAyMTUsIDIyLCAyLCAyMDYsIDE3OCwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDIyLCAyLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTU5LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgCi0gICAgMjE0LCAyMTUsIDIyLCAyLCA3NCwgMjE0LCAyMTUsIDIyLCAyLCAyNDEsIDE2MSwgMjE0LCAyMTUsIDIyLCAyLCAyNTEsIDY0LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDc4LCAyMTQsIDIxNSwgMjIsIDIsIDIyMCwgMTgsIDIxNCwgMjE1LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgMjE0LCAyMTUsIDIsIDIwNSwgMjA0LCAyMTQsIDIxNSwgMjQ0LCAxNjYsIDIxNCwgMjE1LCA1MiwgMjQ0LCAxNjYsIDIxNCwgCi0gICAgMjE1LCAxNywgMjAyLCA4NCwgMjE0LCAyMTUsIDE3LCAxMDUsIDIxNCwgMjE1LCAxNywgMTA4LCAyMTQsIDIxNSwgMTcsIAotICAgIDE0NywgMjE0LCAyMTUsIDE3LCAxNDksIDIxNCwgMjE1LCAxNywgMTcwLCAyMTQsIDIxNSwgMTcsIDE5NSwgMjE0LCAyMTUsIAotICAgIDE3LCAyMTMsIDExMSwgMjE0LCAyMTUsIDE3LCAxOTksIDIxNCwgMjE1LCAxNywgMjIyLCA2MywgMzksIDkyLCAxNywgMjAyLCAKLSAgICA4NCwgMzksIDkyLCAxNywgMTA1LCAzOSwgOTIsIDE3LCAxMDgsIDM5LCA5MiwgMTcsIDE0NywgMzksIDkyLCAxNywgMTQ5LCAKLSAgICAzOSwgOTIsIDE3LCAxNzAsIDM5LCA5MiwgMTcsIDE5NSwgMzksIDkyLCAxNywgMjEzLCAxMTEsIDM5LCA5MiwgMTcsIDE5OSwgCi0gICAgMzksIDkyLCAxNywgMjIyLCA2MywgMzksIDkyLCAxLCA2MywgMzksIDkyLCAxLCA2OCwgMzksIDkyLCAxLCAxNzMsIDM5LCAKLSAgICA5MiwgMSwgMjAxLCAyMDEsIDM5LCA5MiwgMSwgMTg1LCAzOSwgOTIsIDEsIDIxNiwgMjIwLCAzOSwgOTIsIDEsIDIwNSwgCi0gICAgMjMwLCAzOSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyLCAyMTEsIDIyNywgMjQ3LCA1MiwgOTIsIDIsIDI0NywgNTMsIDIwNSwgCi0gICAgMjA0LCA5MiwgMiwgNTIsIDI0NywgNTMsIDIwNSwgMjA0LCA5MiwgMiwgMjQ3LCA1MywgMTA4LCA5MiwgMiwgMjQ3LCA1MywgCi0gICAgMTQ3LCA5MiwgMiwgMjQ3LCA1MywgMjUwLCAxNywgOTIsIDIsIDIxNywgMTYyLCA5MiwgMjM4LCAyMjgsIDI0MCwgNywgOTIsIAotICAgIDI0NywgMzMsIDkyLCAyMzcsIDU4LCA5MiwgMiwgMjEyLCAxNTcsIDkyLCAyMzAsIDE3MywgMjIwLCAzOSwgMjI5LCAyMDcsIAotICAgIDIyNywgMTQ5LCAxNywgMjAyLCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTA1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDE3LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE0NywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ5LCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDE3LCAxNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxNywgMjEzLCAxMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5OSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMjIyLCAKLSAgICA2MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxNzMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjI5LCAxNDQsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjM5LCA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMiwgMjAzLCAyMjksIDIwNywgMjI3LCAKLSAgICAxNDksIDEsIDIxNSwgMzYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEzLCA5MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKLSAgICAyMDIsIDExNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjEsIDExLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxMCwgMjIsIAotICAgIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjM2LCAzMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMDEsIDIwMSwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAxODUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE4LCAyMDgsIDIyOSwgMjA3LCAyMjcsIAotICAgIDE0OSwgMSwgMTkyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NCwgMjEyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0OSwgCi0gICAgMzIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE2LCAyMjAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTk4LCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDIyOCwgMTEzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwNCwgMTExLCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDEsIDIwOSwgMTA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE1MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKLSAgICAyMDYsIDg2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NywgOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgNjMsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjIwLCA3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA3NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxLCAyMjAsIDE4LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCAyMDcsIDI0LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA3NCwgCi0gICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDI0MSwgMTYxLCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDIyLCA3OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNDMsIDIxOCwgODQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMTQzLCAyNDcsIDY4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjQ3LCA2OSwgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgCi0gICAgMTQ5LCAyLCAyNDUsIDcwLCAyMjksIDIwNywgMjI3LCAxNDksIDIsIDIxMiwgMTcwLCAyMTYsIDExOSwgMSwgMTczLCAyMTYsIAotICAgIDExOSwgMSwgMjM5LCA4LCAyMTYsIDExOSwgMSwgMjIyLCAyMDMsIDIxNiwgMTE5LCAxLCAyMTAsIDIyLCAyMTYsIDExOSwgMSwgCi0gICAgMjQ0LCAyMTIsIDIxNiwgMTE5LCAxLCAyMDEsIDIwMSwgMjE2LCAxMTksIDEsIDE4NSwgMjE2LCAxMTksIDEsIDI0OSwgMzIsIAotICAgIDIxNiwgMTE5LCAxLCAxOTIsIDIxNiwgMTE5LCAxLCAyNDcsIDkyLCAyMTYsIDExOSwgMSwgMjMwLCAxODEsIDIxNiwgMTE5LCAKLSAgICAxLCAyMjEsIDExLCAyMTYsIDExOSwgMSwgMjE1LCAzNiwgMjE2LCAxMTksIDEsIDIxNiwgMjIwLCAyMTYsIDExOSwgMSwgCi0gICAgMjI4LCAxMTMsIDIxNiwgMTE5LCAxLCAxOTgsIDIxNiwgMTE5LCAxLCAyMDQsIDExMSwgMjE2LCAxMTksIDEsIDE1MiwgMjE2LCAKLSAgICAxMTksIDEsIDIyNSwgNTQsIDIxNiwgMTE5LCAxLCAyMjIsIDE4MiwgMjE2LCAxMTksIDEsIDIyMywgMjUsIDIxNiwgMTE5LCAKLSAgICAxLCAyMjAsIDIzNCwgMjE2LCAxMTksIDEsIDYzLCAyMTYsIDExOSwgMjIsIDIsIDc1LCAyMTYsIDExOSwgMjIsIDIsIDY4LCAKLSAgICAyMTYsIDExOSwgMjIsIDIsIDc0LCAyMTYsIDExOSwgMjIsIDIsIDI1MSwgNjQsIDIxNiwgMTE5LCAyMiwgMiwgNzgsIDIxNiwgCi0gICAgMTE5LCAyMiwgMiwgMjUwLCAzNCwgMjE2LCAxMTksIDIyLCAyLCAyNDAsIDIzOCwgMjE2LCAxMTksIDIyLCAyLCAyNDEsIAotICAgIDE4OSwgMjE2LCAxMTksIDEwOSwgMiwgMjIyLCAyMDUsIDIxNiwgMTE5LCAxMDksIDIsIDIyMywgMTYzLCAyMTYsIDExOSwgCi0gICAgMTA5LCAyLCAxNDYsIDIxNiwgMTE5LCAxMDksIDIsIDIzNywgMTcxLCAyMTYsIDExOSwgMjA1LCAyMDQsIDIxNiwgMTE5LCAKLSAgICAyMTQsIDE2OCwgODIsIDI4LCAxMjMsIDIwOCwgMjM2LCAyOCwgMTIzLCAyMDgsIDIzNSwgMjgsIDEyMywgMjA4LCAyMzMsIAotICAgIDI4LCAxMjMsIDIwOCwgMjM4LCAyOCwgMTIzLCAyMTYsIDQyLCAyOCwgMTIzLCAyMTYsIDI2LCAyOCwgMTIzLCAyMTYsIDIxLCAKLSAgICAyOCwgMTIzLCAyMTYsIDIzLCAyOCwgMTIzLCAyMTYsIDM5LCAyOCwgMTIzLCAyMTYsIDMyLCAyOCwgMTIzLCAyMTYsIDI1LCAKLSAgICAyOCwgMTIzLCAyMTYsIDQ0LCAyOCwgMTIzLCAyMTYsIDI3LCAyOCwgMTIzLCAyMTYsIDQ2LCAyOCwgMTIzLCAyMTYsIDQzLCAKLSAgICAyOCwgMTIzLCAyMjQsIDEzNywgMjgsIDEyMywgMjI0LCAxMjgsIDI4LCAxMjMsIDIyNCwgMTMxLCAyOCwgMTIzLCAyMTgsIAotICAgIDEzOCwgMjgsIDEyMywgMjE4LCAxNDksIDI4LCAxMjMsIDIxOCwgMTUwLCAyOCwgMTIzLCAyMTEsIDE0OCwgMjgsIDEyMywgCi0gICAgMjMxLCA5NiwgMjgsIDEyMywgMjMxLCAxMDMsIDI4LCAxMjMsIDIxMSwgMTU5LCAyOCwgMTIzLCAyMTEsIDE0NiwgMjgsIAotICAgIDEyMywgMjE4LCAxODksIDI4LCAxMjMsIDIzNiwgMjQ2LCAyOCwgMTIzLCAyMTEsIDE0MywgMTkwLCAyLCAyMTksIDEwMiwgCi0gICAgMTkwLCAyLCAyNDYsIDIzNSwgMTkwLCAyLCAyMjcsIDI0MiwgMTkwLCAyLCAyMDQsIDIwLCAxOTAsIDEsIDYzLCAxOTAsIDEsIAotICAgIDIzNSwgMjA2LCAyMjksIDIxMSwgMTkwLCAxLCA3NSwgMTkwLCAxLCAyMzEsIDgzLCAxOTAsIDEsIDY4LCAxOTAsIDEsIDIxOSwgCi0gICAgMTY5LCAyNDYsIDIwNSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDEsIDE5MCwgMSwgMjIyLCAyMDQsIDIyNywgMjAyLCAKLSAgICAyMTYsIDE3MywgMTkwLCAxLCA3NCwgMTkwLCAxLCAyNTEsIDY0LCAxOTAsIDEsIDc4LCAxOTAsIDEsIDE3MywgMTkwLCAxLCAKLSAgICAyMzAsIDQ0LCAyMTQsIDIyNywgMTkwLCAxLCAyMzAsIDQ0LCAyMjMsIDIwNSwgMTkwLCAxLCAyMzksIDgsIDE5MCwgMSwgCi0gICAgMjM5LCA5LCAyMjMsIDIwNSwgMTkwLCAxLCAyMjIsIDIwMywgMTkwLCAxLCAyNDcsIDkyLCAxOTAsIDEsIDI0NywgOTMsIAotICAgIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgxLCAxOTAsIDEsIDIyMSwgMTIsIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgyLCAKLSAgICAyMjUsIDE0NCwgMTkwLCAxLCAyMjEsIDExLCAxOTAsIDEsIDIwNywgMjQxLCAxOTAsIDEsIDIwNywgMjQyLCAyMjUsIDE0NCwgCi0gICAgMTkwLCAxLCAyNDQsIDEyMCwgMTkwLCAxLCAyNDQsIDEyMSwgMjI1LCAxNDQsIDE5MCwgMSwgMjIzLCAxMTEsIDIyMywgMjA1LCAKLSAgICAxOTAsIDEsIDIxMCwgMjIsIDE5MCwgMSwgMjEwLCAyMywgMjIzLCAyMDUsIDE5MCwgMSwgMjQ0LCAyMTIsIDE5MCwgMSwgCi0gICAgMjQ0LCAyMTMsIDIyNSwgMTQ0LCAxOTAsIDEsIDIwMSwgMjAxLCAxOTAsIDEsIDE4NSwgMTkwLCAxLCAyMTksIDE2OSwgMjIzLCAKLSAgICAyMDUsIDE5MCwgMSwgMjQ5LCAzMiwgMTkwLCAxLCAyNDksIDMzLCAyMjMsIDIwNSwgMTkwLCAxLCAxOTIsIDE5MCwgMSwgCi0gICAgMTk4LCAxOTAsIDEsIDIxNiwgMjIwLCAxOTAsIDEsIDIxNiwgMjIxLCAyNTEsIDc0LCAxOTAsIDEsIDIyOCwgMTEzLCAxOTAsIAotICAgIDEsIDIwNCwgMTExLCAxOTAsIDEsIDIxNSwgMzcsIDIyMywgMjA1LCAxOTAsIDEsIDIxNSwgMzcsIDIyNSwgMTQ0LCAxOTAsIAotICAgIDEsIDIxNSwgMzYsIDE5MCwgMSwgMTUyLCAxOTAsIDIsIDI0NiwgMjM2LCAyMDksIDE1NSwgMTkwLCAyMiwgMiwgMjA5LCAKLSAgICAyMTQsIDE5MCwgMjIsIDIsIDIwOCwgMTY2LCAxOTAsIDIyLCAyLCAyMDMsIDIxMSwgMTkwLCAyMiwgMiwgMjAzLCAyMTIsIAotICAgIDIyNCwgMjUxLCAxOTAsIDIyLCAyLCAyMTAsIDIyNCwgMTkwLCAyMiwgMiwgMjEwLCAyMjUsIDIyNCwgMjM5LCAxOTAsIDIyLCAKLSAgICAyLCAyMDksIDIzNSwgMTkwLCAyMiwgMiwgMjQzLCAxNjMsIDIyMywgMjA0LCAxOTAsIDIyLCAyLCAyMTgsIDI0OSwgMTkwLCAKLSAgICAxMDksIDIsIDIyOSwgMTczLCAxOTAsIDEwOSwgMiwgMjE5LCA2LCAxOTAsIDEwOSwgMiwgMjQ3LCA3NywgMTkwLCAyMTksIAotICAgIDExNSwgMTkwLCA0OSwgMjE2LCA5MywgMTkwLCA1MCwgMjE2LCA5MywgMTkwLCAyMTksIDE1OCwgMjUwLCAyMjUsIDE5MCwgCi0gICAgMjE5LCAxNTgsIDIyNSwgMTYyLCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyNiwgMTkwLCAyMTksIDE1OCwgMjA0LCAxNCwgMTkwLCAKLSAgICAyMTksIDE1OCwgMjE5LCAxMTYsIDE5MCwgMjE5LCAxNTgsIDIyNywgMTA2LCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyMCwgCi0gICAgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTYsIDE5MCwgMjE5LCAxNTgsIDI1MSwgMTE3LCAyNTEsIDExNiwgMTkwLCAyMTksIAotICAgIDE1OCwgMjE4LCAxMDcsIDE5MCwgMjA3LCAxNzQsIDIxOSwgMTU4LCAyMTgsIDEwNywgMTkwLCAyMTksIDExMSwgMTkwLCAxNywgCi0gICAgMjAyLCA4NCwgMTkwLCAxNywgMTA1LCAxOTAsIDE3LCAxMDgsIDE5MCwgMTcsIDE0NywgMTkwLCAxNywgMTQ5LCAxOTAsIDE3LCAKLSAgICAxNzAsIDE5MCwgMTcsIDE5NSwgMTkwLCAxNywgMjEzLCAxMTEsIDE5MCwgMTcsIDE5OSwgMTkwLCAxNywgMjIyLCA2MywgCi0gICAgMTkwLCAyMTksIDE1OCwgMjA4LCAyMDIsIDIwNywgMTg5LCAxOTAsIDIxOSwgMTU4LCAyMzAsIDIxMSwgNjksIDEsIDIxMywgCi0gICAgNjcsIDIzOCwgMTE5LCA2OSwgMSwgMjEzLCA2NywgMjQ2LCAxOTksIDY5LCAxLCAyMTMsIDY3LCAyMzAsIDE0OSwgNjksIDEsIAotICAgIDIxMywgNjcsIDIyMSwgMjI3LCA2OSwgMSwgMjEzLCA2NywgMjQ4LCA5OCwgNjksIDIsIDIxMywgNjcsIDIxNCwgMjEzLCA2OSwgCi0gICAgNjUsIDEsIDIxMywgNjcsIDIxNiwgMTM2LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgMTEsIDY5LCAxLCA0NSwgMjI4LCAKLSAgICA4NSwgMjQwLCAxMDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM5LCA4LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzOCwgMTE5LCAKLSAgICA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTgxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTQ5LCA2OSwgMSwgNDUsIAotICAgIDIyOCwgODUsIDI0NCwgMTIwLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgMTA0LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgCi0gICAgMjI3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMDIsIDg0LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxMDUsIDY5LCA0NSwgMjI4LCAKLSAgICA4NSwgMTcsIDEwOCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTQ3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDksIDY5LCA0NSwgCi0gICAgMjI4LCA4NSwgMTcsIDE3MCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk1LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMTMsIAotICAgIDExMSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk5LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMjIsIDYzLCA2OSwgMSwgNDUsIAotICAgIDIyOCwgODUsIDIyNywgNzcsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAyMTIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAKLSAgICAxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0OSwgMzIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ4LCA5OCwgMjQ2LCAxOTIsIDEsIAotICAgIDYzLCAyNDYsIDE5MiwgMSwgNzUsIDI0NiwgMTkyLCAxLCA2OCwgMjQ2LCAxOTIsIDEsIDc0LCAyNDYsIDE5MiwgMSwgMjUxLCAKLSAgICA2NCwgMjQ2LCAxOTIsIDEsIDc4LCAyNDYsIDE5MiwgMSwgMTczLCAyNDYsIDE5MiwgMSwgMjI5LCAxNDQsIDI0NiwgMTkyLCAKLSAgICAxLCAyMzksIDgsIDI0NiwgMTkyLCAxLCAyMzgsIDExOSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTEyLCAyNDYsIDE5MiwgMSwgCi0gICAgMjIyLCAyMDMsIDI0NiwgMTkyLCAxLCAyNDYsIDE5OSwgMjQ2LCAxOTIsIDEsIDI0NiwgMTQ0LCAyNDYsIDE5MiwgMSwgMjMwLCAKLSAgICAxODEsIDI0NiwgMTkyLCAxLCAyMzAsIDE0OSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTAyLCAyNDYsIDE5MiwgMSwgMjIyLCAxMDQsIAotICAgIDI0NiwgMTkyLCAxLCAyMjIsIDEwMywgMjQ2LCAxOTIsIDEsIDIxMCwgMjIsIDI0NiwgMTkyLCAxLCAyMDksIDEwOCwgMjQ2LCAKLSAgICAxOTIsIDEsIDI0NCwgMjEyLCAyNDYsIDE5MiwgMSwgMjQ0LCAxLCAyNDYsIDE5MiwgMSwgMjIxLCA1MywgMjQ2LCAxOTIsIDEsIAotICAgIDIwMSwgMjAxLCAyNDYsIDE5MiwgMSwgMjQ0LCAxMjAsIDI0NiwgMTkyLCAxLCAxODUsIDI0NiwgMTkyLCAxLCAyMTgsIDEyLCAKLSAgICAyNDYsIDE5MiwgMSwgMjE4LCAyMDgsIDI0NiwgMTkyLCAxLCAyNDksIDMyLCAyNDYsIDE5MiwgMSwgMjQ4LCA5OCwgMjQ2LCAKLSAgICAxOTIsIDEsIDIyMywgMjM4LCAyNDYsIDE5MiwgMSwgMTkyLCAyNDYsIDE5MiwgMSwgMjQ4LCAxOTgsIDI0NiwgMTkyLCAxLCAKLSAgICAxOTgsIDI0NiwgMTkyLCAxLCAyMTYsIDIyMCwgMjQ2LCAxOTIsIDEsIDIyOCwgMTEzLCAyNDYsIDE5MiwgMSwgMjA2LCA4NiwgCi0gICAgMjQ2LCAxOTIsIDEsIDIxMSwgMTY0LCAyNDYsIDE5MiwgMSwgMjE1LCAzNiwgMjQ2LCAxOTIsIDEsIDE1MiwgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyNTIsIDI1LCAyNDYsIDE5MiwgMjIsIDIsIDc1LCAyNDYsIDE5MiwgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgMjQxLCAxNDUsIDI0NiwgMTkyLCAyMiwgMiwgNjgsIDI0NiwgMTkyLCAyMiwgMiwgMjIwLCA3MywgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCA3OCwgMjQ2LCAxOTIsIDIyLCAyLCAyNTEsIDY0LCAyNDYsIDE5MiwgMjIsIDIsIDI1MCwgMzQsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgMjA3LCAyNCwgMjQ2LCAxOTIsIDEwOSwgMiwgMTk4LCAyNDYsIDE5MiwgMTA5LCAyLCAyMTYsIDIyMCwgMjQ2LCAKLSAgICAxOTIsIDEwOSwgMiwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxMDksIDIsIDIwNCwgMTExLCAyNDYsIDE5MiwgMSwgNDYsIDIzMCwgCi0gICAgNTQsIDI0NiwgMTkyLCAxLCA0NiwgMjM5LCA3NSwgMjQ2LCAxOTIsIDEsIDQ2LCAyMjIsIDIwNSwgMjQ2LCAxOTIsIDEwOSwgCi0gICAgMiwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMSwgNDYsIDI0NiwgMjAwLCAyNDYsIDE5MiwgMSwgNDYsIDIxMCwgNjksIAotICAgIDI0NiwgMTkyLCAxLCA0NiwgMjIzLCAxNjMsIDI0NiwgMTkyLCAxLCA0NiwgMjE5LCAxODQsIDI0NiwgMTkyLCAxLCA0NiwgCi0gICAgMjAzLCAxMjQsIDI0NiwgMTkyLCAxLCA0NiwgMTQ2LCAyNDYsIDE5MiwgMSwgNDYsIDE1OSwgMjQ2LCAxOTIsIDEsIDQ2LCAKLSAgICAyMTEsIDE2NywgMjQ2LCAxOTIsIDEwOSwgMiwgNDYsIDIyNiwgMTg1LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjM3LCAxNzEsIAotICAgIDI0NiwgMTkyLCAxNywgMjAyLCA4NCwgMjQ2LCAxOTIsIDE3LCAxMDUsIDI0NiwgMTkyLCAxNywgMTA4LCAyNDYsIDE5MiwgCi0gICAgMTcsIDE0NywgMjQ2LCAxOTIsIDE3LCAxNDksIDI0NiwgMTkyLCAxNywgMTcwLCAyNDYsIDE5MiwgMTcsIDE5NSwgMjQ2LCAKLSAgICAxOTIsIDE3LCAyMTMsIDExMSwgMjQ2LCAxOTIsIDE3LCAxOTksIDI0NiwgMTkyLCAxNywgMjIyLCA2MywgMjQ2LCAxOTIsIAotICAgIDIxNywgMTc5LCAyMTEsIDIwMSwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCA1MiwgCi0gICAgMjQ0LCAxNjYsIDI0NiwgMTkyLCAyMTcsIDE3OSwgMjA4LCA3MCwgMjQ0LCAxNjYsIDY5LCAxLCAyMjksIDEzNywgMjM5LCA4LCAKLSAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NywgOTIsIDY5LCAxLCAyMjksIDEzNywgMjQ2LCAxOTksIDY5LCAxLCAyMjksIDEzNywgCi0gICAgMjMwLCAxODEsIDY5LCAxLCAyMjksIDEzNywgMjMwLCAxNDksIDY5LCAxLCAyMjksIDEzNywgMjIxLCAxMSwgNjksIDEsIAotICAgIDIyOSwgMTM3LCAyMDcsIDI0MSwgNjksIDEsIDIyOSwgMTM3LCAyMDcsIDIyOSwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEyMCwgCi0gICAgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEwNCwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEsIDY5LCAxLCAyMjksIDEzNywgMjAxLCAKLSAgICAyMDEsIDY5LCAxLCAyMjksIDEzNywgMjE1LCAzNiwgNjksIDEsIDIyOSwgMTM3LCAxNTIsIDY5LCAxLCAyMjksIDEzNywgCi0gICAgMjM3LCAxMiwgNjksIDEsIDIyOSwgMTM3LCAyNDAsIDEwOCwgNjksIDY1LCAxLCAyMjksIDEzNywgMjE2LCAxMzYsIDY5LCAxLCAKLSAgICAyMjksIDEzNywgMjAzLCAxODIsIDY5LCAxLCAyMjksIDEzNywgMjAyLCAxMTYsIDY5LCAxLCAyMjksIDEzNywgMjE2LCAyMjAsIAotICAgIDY5LCAyMjcsIDM2LCAyMjksIDEzNywgMjIwLCA5NCwgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMTcsIDc4LCA2OSwgMjI3LCAKLSAgICAzNiwgMjI5LCAxMzcsIDIzNiwgMTkxLCA2OSwgMTYsIDI1MSwgNTEsIDI0MCwgMjExLCA2OSwgMTYsIDI1MSwgNTEsIDEwNSwgCi0gICAgNjksIDE2LCAyNTEsIDUxLCAxMDgsIDY5LCAxLCAyNTEsIDUxLCAyMTYsIDIyMCwgNjksIDIsIDIxOSwgOTgsIDIyOSwgMjM3LCAKLSAgICAyMDgsIDE2MSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1OSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1NiwgNjksIAotICAgIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjQ2LCAxOTksIDY5LCAxLCAyMTIsIDE3OCwgMjE5LCAxMzksIDIxMywgOTAsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAyNiwgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDIyOSwgMTE1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAyMjksIDEyNCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM4LCAzOSwgCi0gICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOCwgMzksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjIsIDEyOCwgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIyMiwgMTI4LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ1LCAyNTQsIDQ1LCAyMDUsIDIyMCwgMSwgCi0gICAgMTM4LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0NiwgMTE2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ2LCAKLSAgICAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTIsIDEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjEyLCAxMywgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyMCwgMjMzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMSwgMTI0LCAyNDMsIDExMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCi0gICAgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA5LCA0NywgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIwOSwgNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjEsIDE5MSwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ4LCAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0OCwgCi0gICAgMjMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTgsIDY5LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCA2OSwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgMTgwLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMSwgMTI0LCAyMzksIDE4NiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCi0gICAgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyNCwgODIsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDIsIDI0NywgCi0gICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwMiwgMjQ3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjE1LCAyMjcsIDQ1LCAyMDUsIAotICAgIDIyMCwgMSwgMTM4LCAyMTUsIDIyNywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgCi0gICAgMTM4LCAyMjcsIDQ5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA1LCAxODksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMDUsIAotICAgIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIzNiwgMTM2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM2LCAxMzYsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCA3OCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAKLSAgICAyMzAsIDAsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MiwgMjUsIDQ1LCAyMDUsIDIyMCwgMjIsIDc1LCA0NSwgMjA1LCAyMjAsIAotICAgIDIyLCAyMDcsIDI0LCA0NSwgMjA1LCAyMjAsIDIyLCA2OCwgNDUsIDIwNSwgMjIwLCAyMiwgNzQsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAyMjksIDExOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjM1LCAxNzEsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMjIsIDIwNywgMjMsIDQ1LCAyMDUsIDIyMCwgMjIsIDIwNywgMzksIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgCi0gICAgMzIsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAyMzEsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDI1MCwgMjQ3LCA0NSwgMjA1LCAyMjAsIDE0MywgMjI1LCAxNDEsIDI0MSwgMTI5LCA0NSwgMjA1LCAyMjAsIDE0MywgCi0gICAgMjI1LCAxNDEsIDIyMSwgNTIsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAKLSAgICAxNDMsIDIyNSwgMTQxLCAyMTEsIDI1MiwgNDUsIDIwNSwgMjIwLCAxNiwgMjI5LCA5LCA0NSwgMjA1LCAyMjAsIDE2LCAyMjEsIAotICAgIDUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMTQsIDI1MywgNDUsIDIwNSwgMjIwLCAxNiwgMjM2LCAxMzcsIDIzNiwgMTMxLCA0NSwgCi0gICAgMjA1LCAyMjAsIDE2LCAyMjksIDE5LCAyMjksIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc0LCAyMjUsIDIsIDIyNSwgNjEsIAotICAgIDEsIDc4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0NiwgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMSwgMTEsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjA3LCAyNDEsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA3LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjQ0LCAxMjAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ0LCAxMDQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAyMjcsIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjEzLCA5MCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTEsIDE2NCwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAyMiwgMiwgMjMxLCA4MywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNSwgMiwgMjI1LCA2MSwgCi0gICAgMjIsIDIsIDI1MSwgMjQ1LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDM0LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAKLSAgICAyNTEsIDIzOCwgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OSwgMjI1LCAyLCAyMjUsIDYxLCAyNTEsIDcwLCAyMjksIDEwNywgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAyNTAsIDIwOSwgMjI1LCAyLCAyMjUsIDYxLCA0LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAyMDMsIDIzOCwgMjE2LCA5OCwgODIsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNSwgMTk5LCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIwNSwgMjA0LCAzMywgNCwgMjA3LCAyMjIsIDMzLCA0LCAyMDcsIDIyNSwgMzMsIDQsIDIwNywgMjI4LCAzMywgNCwgCi0gICAgMjA3LCAyMjYsIDMzLCA0LCAyMDcsIDIyNywgMzMsIDQsIDIwNywgMjI0LCAzMywgNCwgMjQ0LCA5OCwgMzMsIDQsIDI0NCwgCi0gICAgMTAwLCAzMywgNCwgMjQ0LCAxMDMsIDMzLCA0LCAyNDQsIDEwMSwgMzMsIDQsIDI0NCwgMTAyLCAzMywgNCwgMjQ0LCA5OSwgCi0gICAgMzMsIDQsIDI0MSwgMjQyLCAzMywgNCwgMjQxLCAyNDYsIDMzLCA0LCAyNDEsIDI1NCwgMzMsIDQsIDI0MSwgMjUxLCAzMywgCi0gICAgNCwgMjQxLCAyNTIsIDMzLCA0LCAyNDEsIDI0MywgMzMsIDQsIDI0NiwgMjUyLCAzMywgNCwgMjQ2LCAyNDYsIDMzLCA0LCAKLSAgICAyNDYsIDI0OCwgMzMsIDQsIDI0NiwgMjUxLCAzMywgNCwgMjQ2LCAyNDksIDMzLCA0LCAyNDYsIDI1MCwgMzMsIDQsIDI0NiwgCi0gICAgMjQ3LCAzMywgNCwgMjQ4LCAxOTgsIDMzLCA0LCAyNDgsIDE3NywgMzMsIDQsIDI0OCwgMTg5LCAzMywgNCwgMjQ4LCAxOTcsIAotICAgIDMzLCA0LCAyNDgsIDE5MiwgMzMsIDQsIDI0OCwgMTkzLCAzMywgNCwgMjQ4LCAxODEsIDgsIDUsIDEsIDI0OCwgMjI1LCAKLSAgICAyNTEsIDIsIDgsIDUsIDEsIDM0LCAyMTYsIDcxLCA4LCA1LCAxLCAyNDgsIDM5LCA3NCwgOCwgNSwgMSwgMjQ4LCAyMjUsIAotICAgIDc0LCA4LCA1LCAxLCAxODgsIDMsIDIzOSwgMTk5LCA4LCA1LCAxLCAyMjcsIDE4NywgMjQwLCAxNzQsIDgsIDUsIDEsIDEzMiwgCi0gICAgMjM5LCA3NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMTUsIAotICAgIDI1MiwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCAxMjYsIDgsIAotICAgIDUsIDEsIDI0MSwgNzksIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyNDgsIDM5LCA3OCwgOCwgNSwgMSwgMjQ4LCAzOSwgMTU4LCAKLSAgICAzLCA5NSwgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjIwLCA3MywgOCwgNSwgMSwgCi0gICAgMjA3LCAxNzQsIDIyMCwgNzQsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjIwLCA3NCwgMywgMjM2LCAxMDYsIDk1LCA4LCAKLSAgICA1LCAxLCAyMDcsIDE3NCwgMTU4LCAyMjAsIDQsIDgsIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNSwgMywgOTUsIDgsIDUsIAotICAgIDEsIDIxMSwgNjYsIDE0NiwgOCwgMSwgNSwgNiwgMjE3LCAxLCAzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgCi0gICAgMjA0LCAzLCAyMzcsIDEwMiwgOCwgNSwgMSwgNTIsIDE0NiwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgCi0gICAgMSwgNTIsIDIxNywgMSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDEzMiwgMTQ2LCA4LCA1LCAxLCAxMzIsIDIxNywgMSwgMywgCi0gICAgMjE1LCAyNTIsIDgsIDUsIDEsIDI0OCwgMjE2LCAyNDEsIDcsIDgsIDUsIDEsIDEwNiwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIAotICAgIDIxMCwgOCwgNSwgMSwgMTA2LCAyNDgsIDIzMSwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNywgCi0gICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNywgMTcsIDgsIDUsIDEsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjQ2LCAxNDIsIAotICAgIDgsIDUsIDEsIDI0NiwgMTQzLCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNDksIAotICAgIDIxMywgMTI1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTI0LCA1MCwgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAKLSAgICAxNjMsIDQ5LCAyMjcsIDIxMCwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAyNSwgMTI0LCA1MCwgCi0gICAgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxNjMsIDQ5LCAyMjcsIDIxMSwgMywgMjEzLCAxMjUsIDgsIDUsIDEsIAotICAgIDIwMywgMTI1LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA2NSwgMjQ3LCAyMTUsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgCi0gICAgNjUsIDEsIDUsIDIzNywgMzEsIDY1LCAxLCA1LCAyMjgsIDEzMSwgMywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDY1LCAxLCAKLSAgICA1LCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgNjUsIDEsIDUsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjE1LCAKLSAgICAxMSwgMjAzLCA2NiwgOCwgNSwgMSwgMjMwLCAyMjgsIDc0LCA4LCA1LCAxLCAxNzEsIDIyMCwgNzMsIDgsIDUsIDEsIDIwNiwgCi0gICAgMjI4LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjUxLCAyLCAzMCwgMSwgNSwgNiwgMjIwLCAzNiwgOTAsIDUsIDEsIDYzLCA5MCwgCi0gICAgNSwgMSwgNzQsIDkwLCA1LCAxLCA3NSwgOTAsIDUsIDEsIDc4LCA5MCwgNSwgMSwgNjgsIDkwLCA1LCAxLCAyMDYsIDE2NCwgCi0gICAgOTAsIDUsIDEsIDIzOSwgOCwgOTAsIDUsIDEsIDE3MywgOTAsIDUsIDEsIDIzOCwgMTkwLCA5MCwgNSwgMSwgMjM4LCA4MSwgCi0gICAgOTAsIDUsIDEsIDIzOCwgMzksIDkwLCA1LCAxLCAyMzcsIDIzMCwgOTAsIDUsIDEsIDIzNywgMTkyLCA5MCwgNSwgMSwgMTUyLCAKLSAgICA5MCwgNSwgMSwgMjM3LCA2NywgOTAsIDUsIDEsIDIzNywgMywgOTAsIDUsIDEsIDIzNiwgMTM2LCA5MCwgNSwgMSwgMjM2LCAKLSAgICAyNiwgOTAsIDUsIDEsIDIzNSwgMjU1LCA5MCwgNSwgMSwgMjI4LCAxMTMsIDkwLCA1LCAxLCAyMjcsIDIzNCwgOTAsIDUsIDEsIAotICAgIDIyNywgMTQ4LCA5MCwgNSwgMSwgMjI3LCA0OSwgOTAsIDUsIDEsIDIyNiwgMjM5LCA5MCwgNSwgMSwgMjI2LCAyMDgsIDkwLCAKLSAgICA1LCAxLCAxOTIsIDkwLCA1LCAxLCAyMjUsIDIwLCA5MCwgNSwgMSwgMjI0LCAxNTUsIDkwLCA1LCAxLCAyMjQsIDgyLCA5MCwgCi0gICAgNSwgMSwgMjIzLCAyNDYsIDkwLCA1LCAxLCAyMDEsIDIwMSwgOTAsIDUsIDEsIDIzNiwgMTYwLCA5MCwgNSwgMSwgMjIzLCAKLSAgICA5MywgOTAsIDUsIDEsIDIyMiwgMjQwLCA5MCwgNSwgMSwgMjIyLCAxMDAsIDkwLCA1LCAxLCAyMjEsIDE5MSwgOTAsIDUsIDEsIAotICAgIDIyMSwgODQsIDkwLCA1LCAxLCAyMjEsIDIyLCA5MCwgNSwgMSwgMjE3LCA2NCwgOTAsIDUsIDEsIDIxNywgNTAsIDkwLCA1LCAKLSAgICAxLCAyMTcsIDQzLCA5MCwgNSwgMSwgMjE3LCAzNCwgOTAsIDUsIDEsIDIxNywgMjMsIDkwLCA1LCAxLCAyMTcsIDIxLCA5MCwgCi0gICAgNSwgMSwgMjE1LCAzNiwgOTAsIDUsIDEsIDE5NCwgOTAsIDUsIDEsIDIxNCwgMTc3LCA5MCwgNSwgMSwgMjEyLCAxNjIsIDkwLCAKLSAgICA1LCAxLCAyMTIsIDEzLCA5MCwgNSwgMSwgMjExLCAxMCwgOTAsIDUsIDEsIDIxMCwgMTc3LCA5MCwgNSwgMSwgMjQ0LCAyMTIsIAotICAgIDkwLCA1LCAxLCAyMTAsIDIyLCA5MCwgNSwgMSwgMjQ0LCA3NSwgOTAsIDUsIDEsIDIwOSwgMTg3LCA5MCwgNSwgMSwgMjQzLCAKLSAgICAyMzMsIDkwLCA1LCAxLCAyMDksIDIsIDkwLCA1LCAxLCAyNDMsIDExMywgOTAsIDUsIDEsIDI0MiwgNDIsIDkwLCA1LCAxLCAKLSAgICAyNDIsIDEzLCA5MCwgNSwgMSwgMjQzLCAxMjQsIDkwLCA1LCAxLCAyMDgsIDE5MCwgOTAsIDUsIDEsIDIwOCwgMTg5LCA5MCwgCi0gICAgNSwgMSwgMjA4LCAxNzgsIDkwLCA1LCAxLCAyMDgsIDE3NywgOTAsIDUsIDEsIDIwOCwgMTc2LCA5MCwgNSwgMSwgMjA4LCAKLSAgICAxNzUsIDkwLCA1LCAxLCAyMDgsIDIwLCA5MCwgNSwgMSwgMjA4LCAxNCwgOTAsIDUsIDEsIDIwNywgMjU1LCA5MCwgNSwgMSwgCi0gICAgMjA3LCAyNTMsIDkwLCA1LCAxLCAyMDcsIDI0OSwgOTAsIDUsIDEsIDIwNywgMjQ4LCA5MCwgNSwgMSwgMjA0LCAxMTEsIDkwLCAKLSAgICA1LCAxLCAyMDQsIDYyLCA5MCwgNSwgMSwgMjA0LCAzMCwgOTAsIDUsIDEsIDIwNCwgMCwgOTAsIDUsIDEsIDIwMywgMjE3LCAKLSAgICA5MCwgNSwgMSwgMjAzLCAyMDQsIDkwLCA1LCAxLCAxOTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI5LCAxNiwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMTQsIDI1MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjgsIDg2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIyNCwgOTMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMTg1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwMSwgMjAxLCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDI0NiwgMTM0LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjI5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIyOSwgMTEwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOSwgMzksIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjA0LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAzLCA3NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMzYsIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwNiwgMjU1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc1LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIxOCwgMjAyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI1MCwgNDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjM4LCAzMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzAsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTYsIDE5NywgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyNDksIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTMzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDI0MywgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzOCwgODgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQzLCAyMzUsIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjQ4LCA5NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE3LCAyMjcsIDE5LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIyOCwgODcsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI0LCA5NCwgMjI3LCAxOSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyMTksIDE2OSwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjMsIDExMSwgMjI3LCAxOSwgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDgsIDIzMCwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjIsIDExOSwgMjI3LCAKLSAgICAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzUsIDIwNiwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjIwLCAKLSAgICAzMCwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjMxLCA0NywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjUwLCAyMzAsIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwMywgNDEsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIxMSwgMjQyLCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDI1MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjQ2LCAxNTcsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMjIsIDIsIDIyMSwgMzcsIDIyNSwgMiwgMjI1LCA2MSwgMjQ2LCAxNTgsIDIyNSwgMiwgMjI1LCA2MSwgMjI2LCAKLSAgICAyMjMsIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMTQ5LCAyMzAsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCi0gICAgMjAyLCA4NCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTA1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDgsIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMTcsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTQ5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNzAsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMTcsIDE5NSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjEzLCAxMTEsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIAotICAgIDE5OSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjIyLCA2MywgMjgsIDE3NiwgMjIwLCAxNzQsIDI4LCAxNzYsIDIyMCwgMTc5LCAKLSAgICAyOCwgMTc2LCAyMDIsIDI0NiwgMjgsIDE3NiwgMjAyLCAyNDUsIDI4LCAxNzYsIDIwMiwgMjQ0LCAyOCwgMTc2LCAyMDcsIAotICAgIDg5LCAyOCwgMTc2LCAyMDcsIDkzLCAyOCwgMTc2LCAyMDIsIDIxMSwgMjgsIDE3NiwgMjAyLCAyMDcsIDI4LCAxNzYsIDI0MCwgCi0gICAgMjM3LCAyOCwgMTc2LCAyNDAsIDIzNSwgMjgsIDE3NiwgMjQwLCAyMzYsIDI4LCAxNzYsIDI0MCwgMjMzLCAyOCwgMTc2LCAKLSAgICAyMzUsIDE5NiwgMjgsIDE3NiwgMjM1LCAxOTUsIDI4LCAxNzYsIDIzNSwgMTkzLCAyOCwgMTc2LCAyMzUsIDE5NCwgMjgsIAotICAgIDE3NiwgMjM1LCAxOTksIDI4LCAxNzYsIDIzNSwgMTkyLCAyOCwgMTc2LCAyMzUsIDE5MSwgMjgsIDE3NiwgMjM1LCAyMDEsIAotICAgIDI4LCAxNzYsIDI1MCwgMTM2LCAyOCwgMTc2LCAyNTAsIDEzNSwgMjgsIDEwNywgMjIyLCA4NiwgMjgsIDEwNywgMjIyLCA5MiwgCi0gICAgMjgsIDEwNywgMjExLCAxNDUsIDI4LCAxMDcsIDIxMSwgMTQ0LCAyOCwgMTA3LCAyMDgsIDIzNSwgMjgsIDEwNywgMjA4LCAKLSAgICAyMzMsIDI4LCAxMDcsIDIwOCwgMjMyLCAyOCwgMTA3LCAyMDgsIDIzOCwgMjgsIDEwNywgMjA4LCAyMzksIDI4LCAxMDcsIAotICAgIDIwOCwgMjMxLCAyOCwgMTA3LCAyMTYsIDI2LCAyOCwgMTA3LCAyMTYsIDQxLCAyOCwgMTA3LCAyMTEsIDE1MSwgMjgsIDEwNywgCi0gICAgMjE2LCAzOCwgMjgsIDEwNywgMjE2LCAyOCwgMjgsIDEwNywgMjE2LCAzMCwgMjgsIDEwNywgMjE2LCAxNywgMjgsIDEwNywgCi0gICAgMjE2LCAxOCwgMjgsIDEwNywgMjI5LCAyNDMsIDI4LCAxMDcsIDIyNCwgMTM2LCAyOCwgMTA3LCAyMjQsIDEzMCwgMjgsIAotICAgIDEwNywgMjExLCAxNTUsIDI4LCAxMDcsIDIyNCwgMTMzLCAyOCwgMTA3LCAyMjQsIDEzOSwgMjgsIDEwNywgMjE4LCAxMzQsIAotICAgIDI4LCAxMDcsIDIxOCwgMTQzLCAyOCwgMTA3LCAyMTgsIDE0NywgMjgsIDEwNywgMjExLCAxNTMsIDI4LCAxMDcsIDIxOCwgCi0gICAgMTM3LCAyOCwgMTA3LCAyMTgsIDE1MSwgMjgsIDEwNywgMjE4LCAxNTIsIDI4LCAxMDcsIDIxMiwgMTAzLCAyOCwgMTA3LCAKLSAgICAyMTIsIDEwNiwgMjgsIDEwNywgMjExLCAxNDksIDI4LCAxMDcsIDIxMSwgMTQ3LCAyOCwgMTA3LCAyMTIsIDEwMSwgMjgsIAotICAgIDEwNywgMjEyLCAxMDksIDI4LCAxMDcsIDIxMiwgMTEwLCAyOCwgMTA3LCAyMTIsIDk1LCAyOCwgMTA3LCAyMTIsIDEwOCwgCi0gICAgMjgsIDEwNywgMjE5LCAxMDUsIDI4LCAxMDcsIDIxOSwgMTA2LCAyOCwgMTA3LCAyMDMsIDI3LCAyOCwgMTA3LCAyMDMsIDI4LCAKLSAgICAyOCwgMTA3LCAyNDYsIDcyLCAyOCwgMTA3LCAyNDYsIDcxLCAyOCwgMTA3LCAyMTEsIDE2MCwgMjgsIDEwNywgMjE4LCAxODcsIAotICAgIDI4LCAxMDcsIDIxOCwgMTg2LCAxMiwgMTUsIDIzMywgNzQsIDEyLCAxNSwgMjMzLCA3MywgMTIsIDE1LCAyMzMsIDcyLCAxMiwgCi0gICAgMTUsIDIzMywgNzEsIDEyLCAxNSwgMjMzLCA3MCwgMTIsIDE1LCAyMzMsIDY5LCAxMiwgMTUsIDIzMywgNjgsIDEyLCAxNSwgCi0gICAgMjMzLCA2NywgMTIsIDE1LCAyMzMsIDY2LCAxMiwgMTUsIDIzMywgNjUsIDEyLCAxNSwgMjMzLCA2NCwgMTIsIDE1LCAyMzMsIAotICAgIDYzLCAxMiwgMTUsIDIzMywgNjIsIDEyLCAxNSwgMjMzLCA2MSwgMTIsIDE1LCAyMzMsIDYwLCAxMiwgMTUsIDIzMywgNTksIAotICAgIDEyLCAxNSwgMjMzLCA1OCwgMTIsIDE1LCAyMzMsIDU3LCAxMiwgMTUsIDIzMywgNTYsIDEyLCAxNSwgMjMzLCA1NSwgMTIsIAotICAgIDE1LCAyMzMsIDU0LCAxMiwgMTUsIDIzMywgNTMsIDEyLCAxNSwgMjMzLCA1MiwgMTIsIDE1LCAyMzMsIDUxLCAxMiwgMTUsIAotICAgIDIzMywgNTAsIDEyLCAxNSwgMjMzLCA0OSwgMTIsIDE1LCAyMzMsIDQ4LCAxMiwgMTUsIDIzMywgNDcsIDEyLCAxNSwgMjMzLCAKLSAgICA0NiwgMTIsIDE1LCAyMzMsIDQ1LCAxMiwgMTUsIDIzMywgNDQsIDEyLCAxNSwgMjMzLCA0MywgMTIsIDE1LCAyMzMsIDQyLCAKLSAgICAxMiwgMTUsIDIzMywgNDEsIDEyLCAxNSwgMjMzLCA0MCwgMTIsIDE1LCAyMzMsIDM5LCAxMiwgMTUsIDIzMywgMzgsIDEyLCAKLSAgICAxNSwgMjMzLCAzNywgMTIsIDE1LCAyMzMsIDM2LCAxMiwgMTUsIDIzMywgMzUsIDEyLCAxNSwgMjMzLCAzNCwgMTIsIDE1LCAKLSAgICAyMzMsIDMzLCAxMiwgMTUsIDIzMywgMzIsIDEyLCAxNSwgMjMzLCAzMSwgMTIsIDE1LCAyMzMsIDMwLCAxMiwgMTUsIDIzMywgCi0gICAgMjksIDEyLCAxNSwgMjMzLCAyOCwgMTIsIDE1LCAyMzMsIDI3LCAxMiwgMTUsIDIzMywgMjYsIDEyLCAxNSwgMjMzLCAyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0LCAxMiwgMTUsIDIzMywgMjMsIDEyLCAxNSwgMjMzLCAyMiwgMTIsIDE1LCAyMzMsIDIxLCAxMiwgCi0gICAgMTUsIDIzMywgMjAsIDEyLCAxNSwgMjMzLCAxOSwgMTIsIDE1LCAyMzMsIDE4LCAxMiwgMTUsIDIzMywgMTcsIDEyLCAxNSwgCi0gICAgMjMzLCAxNiwgMTIsIDE1LCAyMzMsIDE1LCAxMiwgMTUsIDIzMywgMTQsIDEyLCAxNSwgMjMzLCAxMywgMTIsIDE1LCAyMzMsIAotICAgIDEyLCAxMiwgMTUsIDIzMywgMTEsIDEyLCAxNSwgMjMzLCAxMCwgMTIsIDE1LCAyMzMsIDksIDEyLCAxNSwgMjMzLCA4LCAxMiwgCi0gICAgMTUsIDIzMywgNywgMTIsIDE1LCAyMzMsIDYsIDEyLCAxNSwgMjMzLCA1LCAxMiwgMTUsIDIzMywgNCwgMTIsIDE1LCAyMzMsIAotICAgIDMsIDEyLCAxNSwgMjMzLCAyLCAxMiwgMTUsIDIzMywgMSwgMTIsIDE1LCAyMzMsIDAsIDEyLCAxNSwgMjMyLCAyNTUsIDEyLCAKLSAgICAxNSwgMjMyLCAyNTQsIDEyLCAxNSwgMjMyLCAyNTMsIDEyLCAxNSwgMjMyLCAyNTIsIDEyLCAxNSwgMjMyLCAyNTEsIDEyLCAKLSAgICAxNSwgMjMyLCAyNTAsIDEyLCAxNSwgMjMyLCAyNDksIDEyLCAxNSwgMjMyLCAyNDgsIDEyLCAxNSwgMjMyLCAyNDcsIDEyLCAKLSAgICAxNSwgMjMyLCAyNDYsIDEyLCAxNSwgMjMyLCAyNDUsIDEyLCAxNSwgMjMyLCAyNDQsIDEyLCAxNSwgMjMyLCAyNDMsIDEyLCAKLSAgICAxNSwgMjMyLCAyNDIsIDEyLCAxNSwgMjMyLCAyNDEsIDEyLCAxNSwgMjMyLCAyNDAsIDEyLCAxNSwgMjMyLCAyMzksIDEyLCAKLSAgICAxNSwgMjMyLCAyMzgsIDEyLCAxNSwgMjMyLCAyMzcsIDEyLCAxNSwgMjMyLCAyMzYsIDEyLCAxNSwgMjMyLCAyMzUsIDEyLCAKLSAgICAxNSwgMjMyLCAyMzQsIDEyLCAxNSwgMjMyLCAyMzMsIDEyLCAxNSwgMjMyLCAyMzIsIDEyLCAxNSwgMjMyLCAyMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAyMzAsIDEyLCAxNSwgMjMyLCAyMjksIDEyLCAxNSwgMjMyLCAyMjgsIDEyLCAxNSwgMjMyLCAyMjcsIDEyLCAKLSAgICAxNSwgMjMyLCAyMjYsIDEyLCAxNSwgMjMyLCAyMjUsIDEyLCAxNSwgMjMyLCAyMjQsIDEyLCAxNSwgMjMyLCAyMjMsIDEyLCAKLSAgICAxNSwgMjMyLCAyMjIsIDEyLCAxNSwgMjMyLCAyMjEsIDEyLCAxNSwgMjMyLCAyMjAsIDEyLCAxNSwgMjMyLCAyMTksIDEyLCAKLSAgICAxNSwgMjMyLCAyMTgsIDEyLCAxNSwgMjMyLCAyMTcsIDEyLCAxNSwgMjMyLCAyMTYsIDEyLCAxNSwgMjMyLCAyMTUsIDEyLCAKLSAgICAxNSwgMjMyLCAyMTQsIDEyLCAxNSwgMjMyLCAyMTMsIDEyLCAxNSwgMjMyLCAyMTIsIDEyLCAxNSwgMjMyLCAyMTEsIDEyLCAKLSAgICAxNSwgMjMyLCAyMTAsIDEyLCAxNSwgMjMyLCAyMDksIDEyLCAxNSwgMjMyLCAyMDgsIDEyLCAxNSwgMjMyLCAyMDcsIDEyLCAKLSAgICAxNSwgMjMyLCAyMDYsIDEyLCAxNSwgMjMyLCAyMDUsIDEyLCAxNSwgMjMyLCAyMDQsIDEyLCAxNSwgMjMyLCAyMDMsIDEyLCAKLSAgICAxNSwgMjMyLCAyMDIsIDEyLCAxNSwgMjMyLCAyMDEsIDEyLCAxNSwgMjMyLCAyMDAsIDEyLCAxNSwgMjMyLCAxOTksIDEyLCAKLSAgICAxNSwgMjMyLCAxOTgsIDEyLCAxNSwgMjMyLCAxOTcsIDEyLCAxNSwgMjMyLCAxOTYsIDEyLCAxNSwgMjMyLCAxOTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxOTQsIDEyLCAxNSwgMjMyLCAxOTMsIDEyLCAxNSwgMjMyLCAxOTIsIDEyLCAxNSwgMjMyLCAxOTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxOTAsIDEyLCAxNSwgMjMyLCAxODksIDEyLCAxNSwgMjMyLCAxODgsIDEyLCAxNSwgMjMyLCAxODcsIDEyLCAKLSAgICAxNSwgMjMyLCAxODYsIDEyLCAxNSwgMjMyLCAxODUsIDEyLCAxNSwgMjMyLCAxODQsIDEyLCAxNSwgMjMyLCAxODMsIDEyLCAKLSAgICAxNSwgMjMyLCAxODIsIDEyLCAxNSwgMjMyLCAxODEsIDEyLCAxNSwgMjMyLCAxODAsIDEyLCAxNSwgMjMyLCAxNzksIDEyLCAKLSAgICAxNSwgMjMyLCAxNzgsIDEyLCAxNSwgMjMyLCAxNzcsIDEyLCAxNSwgMjMyLCAxNzYsIDEyLCAxNSwgMjMyLCAxNzUsIDEyLCAKLSAgICAxNSwgMjMyLCAxNzQsIDEyLCAxNSwgMjMyLCAxNzMsIDEyLCAxNSwgMjMyLCAxNzIsIDEyLCAxNSwgMjMyLCAxNzEsIDEyLCAKLSAgICAxNSwgMjMyLCAxNzAsIDEyLCAxNSwgMjMyLCAxNjksIDEyLCAxNSwgMjMyLCAxNjgsIDEyLCAxNSwgMjMyLCAxNjcsIDEyLCAKLSAgICAxNSwgMjMyLCAxNjYsIDEyLCAxNSwgMjMyLCAxNjUsIDEyLCAxNSwgMjMyLCAxNjQsIDEyLCAxNSwgMjMyLCAxNjMsIDEyLCAKLSAgICAxNSwgMjMyLCAxNjIsIDEyLCAxNSwgMjMyLCAxNjEsIDEyLCAxNSwgMjMyLCAxNjAsIDEyLCAxNSwgMjMyLCAxNTksIDEyLCAKLSAgICAxNSwgMjMyLCAxNTgsIDEyLCAxNSwgMjMyLCAxNTcsIDEyLCAxNSwgMjMyLCAxNTYsIDEyLCAxNSwgMjMyLCAxNTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxNTQsIDEyLCAxNSwgMjMyLCAxNTMsIDEyLCAxNSwgMjMyLCAxNTIsIDEyLCAxNSwgMjMyLCAxNTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxNTAsIDEyLCAxNSwgMjMyLCAxNDksIDEyLCAxNSwgMjMyLCAxNDgsIDEyLCAxNSwgMjMyLCAxNDcsIDEyLCAKLSAgICAxNSwgMjMyLCAxNDYsIDEyLCAxNSwgMjMyLCAxNDUsIDEyLCAxNSwgMjMyLCAxNDQsIDEyLCAxNSwgMjMyLCAxNDMsIDEyLCAKLSAgICAxNSwgMjMyLCAxNDIsIDEyLCAxNSwgMjMyLCAxNDEsIDEyLCAxNSwgMjMyLCAxNDAsIDEyLCAxNSwgMjMyLCAxMzksIDEyLCAKLSAgICAxNSwgMjMyLCAxMzgsIDEyLCAxNSwgMjMyLCAxMzcsIDEyLCAxNSwgMjMyLCAxMzYsIDEyLCAxNSwgMjMyLCAxMzUsIDEyLCAKLSAgICAxNSwgMjMyLCAxMzQsIDEyLCAxNSwgMjMyLCAxMzMsIDEyLCAxNSwgMjMyLCAxMzIsIDEyLCAxNSwgMjMyLCAxMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAxMzAsIDEyLCAxNSwgMjMyLCAxMjksIDEyLCAxNSwgMjMyLCAxMjgsIDEyLCAxNSwgMjMyLCAxMjcsIDEyLCAKLSAgICAxNSwgMjMyLCAxMjYsIDEyLCAxNSwgMjMyLCAxMjUsIDEyLCAxNSwgMjMyLCAxMjQsIDEyLCAxNSwgMjMyLCAxMjMsIDEyLCAKLSAgICAxNSwgMjMyLCAxMjIsIDEyLCAxNSwgMjMyLCAxMjEsIDEyLCAxNSwgMjMyLCAxMjAsIDEyLCAxNSwgMjMyLCAxMTksIDEyLCAKLSAgICAxNSwgMjMyLCAxMTgsIDEyLCAxNSwgMjMyLCAxMTcsIDEyLCAxNSwgMjMyLCAxMTYsIDEyLCAxNSwgMjMyLCAxMTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxMTQsIDEyLCAxNSwgMjMyLCAxMTMsIDEyLCAxNSwgMjMyLCAxMTIsIDEyLCAxNSwgMjMyLCAxMTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxMTAsIDEyLCAxNSwgMjMyLCAxMDksIDEyLCAxNSwgMjMyLCAxMDgsIDEyLCAxNSwgMjMyLCAxMDcsIDEyLCAKLSAgICAxNSwgMjMyLCAxMDYsIDEyLCAxNSwgMjMyLCAxMDUsIDEyLCAxNSwgMjMyLCAxMDQsIDEyLCAxNSwgMjMyLCAxMDMsIDEyLCAKLSAgICAxNSwgMjMyLCAxMDIsIDEyLCAxNSwgMjMyLCAxMDEsIDEyLCAxNSwgMjMyLCAxMDAsIDEyLCAxNSwgMjMyLCA5OSwgMTIsIAotICAgIDE1LCAyMzIsIDk4LCAxMiwgMTUsIDIzMiwgOTcsIDEyLCAxNSwgMjMyLCA5NiwgMTIsIDE1LCAyMzIsIDk1LCAxMiwgMTUsIAotICAgIDIzMiwgOTQsIDEyLCAxNSwgMjMyLCA5MywgMTIsIDE1LCAyMzIsIDkyLCAxMiwgMTUsIDIzMiwgOTEsIDEyLCAxNSwgMjMyLCAKLSAgICA5MCwgMTIsIDE1LCAyMzIsIDg5LCAxMiwgMTUsIDIzMiwgODgsIDEyLCAxNSwgMjMyLCA4NywgMTIsIDE1LCAyMzIsIDg2LCAKLSAgICAxMiwgMTUsIDIzMiwgODUsIDEyLCAxNSwgMjMyLCA4NCwgMTIsIDE1LCAyMzIsIDgzLCAxMiwgMTUsIDIzMiwgODIsIDEyLCAKLSAgICAxNSwgMjMyLCA4MSwgMTIsIDE1LCAyMzIsIDgwLCAxMiwgMTUsIDIzMiwgNzksIDEyLCAxNSwgMjMyLCA3OCwgMTIsIDE1LCAKLSAgICAyMzIsIDc3LCAxMiwgMTUsIDIzMiwgNzYsIDEyLCAxNSwgMjMyLCA3NSwgMTIsIDE1LCAyMzIsIDc0LCAxMiwgMTUsIDIzMiwgCi0gICAgNzMsIDEyLCAxNSwgMjMyLCA3MiwgMTIsIDE1LCAyMzIsIDcxLCAxMiwgMTUsIDIzMiwgNzAsIDEyLCAxNSwgMjMyLCA2OSwgCi0gICAgMTIsIDE1LCAyMzIsIDY4LCAxMiwgMTUsIDIzMiwgNjcsIDEyLCAxNSwgMjMyLCA2NiwgMTIsIDE1LCAyMzIsIDY1LCAxMiwgCi0gICAgMTUsIDIzMiwgNjQsIDEyLCAxNSwgMjMyLCA2MywgMTIsIDE1LCAyMzIsIDYyLCAxMiwgMTUsIDIzMiwgNjEsIDEyLCAxNSwgCi0gICAgMjMyLCA2MCwgMTIsIDE1LCAyMzIsIDU5LCAxMiwgMTUsIDIzMiwgNTgsIDEyLCAxNSwgMjMyLCA1NywgMTIsIDE1LCAyMzIsIAotICAgIDU2LCAxMiwgMTUsIDIzMiwgNTUsIDEyLCAxNSwgMjMyLCA1NCwgMTIsIDE1LCAyMzIsIDUzLCAxMiwgMTUsIDIzMiwgNTIsIAotICAgIDEyLCAxNSwgMjMyLCA1MSwgMTIsIDE1LCAyMzIsIDUwLCAxMiwgMTUsIDIzMiwgNDksIDEyLCAxNSwgMjMyLCA0OCwgMTIsIAotICAgIDE1LCAyMzIsIDQ3LCAxMiwgMTUsIDIzMiwgNDYsIDEyLCAxNSwgMjMyLCA0NSwgMTIsIDE1LCAyMzIsIDQ0LCAxMiwgMTUsIAotICAgIDIzMiwgNDMsIDEyLCAxNSwgMjMyLCA0MiwgMTIsIDE1LCAyMzIsIDQxLCAxMiwgMTUsIDIzMiwgNDAsIDEyLCAxNSwgMjMyLCAKLSAgICAzOSwgMTIsIDE1LCAyMzIsIDM4LCAxMiwgMTUsIDIzMiwgMzcsIDEyLCAxNSwgMjMyLCAzNiwgMTIsIDE1LCAyMzIsIDM1LCAKLSAgICAxMiwgMTUsIDIzMiwgMzQsIDEyLCAxNSwgMjMyLCAzMywgMTIsIDE1LCAyMzIsIDMyLCAxMiwgMTUsIDIzMiwgMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAzMCwgMTIsIDE1LCAyMzIsIDI5LCAxMiwgMTUsIDIzMiwgMjgsIDEyLCAxNSwgMjMyLCAyNywgMTIsIDE1LCAKLSAgICAyMzIsIDI2LCAxMiwgMTUsIDIzMiwgMjUsIDEyLCAxNSwgMjMyLCAyNCwgMTIsIDE1LCAyMzIsIDIzLCAxMiwgMTUsIDIzMiwgCi0gICAgMjIsIDEyLCAxNSwgMjMyLCAyMSwgMTIsIDE1LCAyMzIsIDIwLCAxMiwgMTUsIDIzMiwgMTksIDEyLCAxNSwgMjMyLCAxOCwgCi0gICAgMTIsIDE1LCAyMzIsIDE3LCAxMiwgMTUsIDIzMiwgMTYsIDEyLCAxNSwgMjMyLCAxNSwgMTIsIDE1LCAyMzIsIDE0LCAxMiwgCi0gICAgMTUsIDIzMiwgMTMsIDEyLCAxNSwgMjMyLCAxMiwgMTIsIDE1LCAyMzIsIDExLCAxMiwgMTUsIDIzMiwgMTAsIDEyLCAxNSwgCi0gICAgMjMyLCA5LCAxMiwgMTUsIDIzMiwgOCwgMTIsIDE1LCAyMzIsIDcsIDEyLCAxNSwgMjMyLCA2LCAxMiwgMTUsIDIzMiwgNSwgCi0gICAgMTIsIDE1LCAyMzIsIDQsIDEyLCAxNSwgMjMyLCAzLCAxMiwgMTUsIDIzMiwgMiwgMTIsIDE1LCAyMzIsIDEsIDEyLCAxNSwgCi0gICAgMjMyLCAwLCAxMiwgMTUsIDIzMSwgMjU1LCAxMiwgMTUsIDIzMSwgMjU0LCAxMiwgMTUsIDIzMSwgMjUzLCAxMiwgMTUsIAotICAgIDIzMSwgMjUyLCAxMiwgMTUsIDIzMSwgMjUxLCAxMiwgMTUsIDIzMSwgMjUwLCAxMiwgMTUsIDIzMSwgMjQ5LCAxMiwgMTUsIAotICAgIDIzMSwgMjQ4LCAxMiwgMTUsIDIzMSwgMjQ3LCAxMiwgMTUsIDIzMSwgMjQ2LCAxMiwgMTUsIDIzMSwgMjQ1LCAxMiwgMTUsIAotICAgIDIzMSwgMjQ0LCAxMiwgMTUsIDIzMSwgMjQzLCAxMiwgMTUsIDIzMSwgMjQyLCAxMiwgMTUsIDIzMSwgMjQxLCAxMiwgMTUsIAotICAgIDIzMSwgMjQwLCAxMiwgMTUsIDIzMSwgMjM5LCAxMiwgMTUsIDIzMSwgMjM4LCAxMiwgMTUsIDIzMSwgMjM3LCAxMiwgMTUsIAotICAgIDIzMSwgMjM2LCAxMiwgMTUsIDIzMSwgMjM1LCAxMiwgMTUsIDIzMSwgMjM0LCAxMiwgMTUsIDIzMSwgMjMzLCAxMiwgMTUsIAotICAgIDIzMSwgMjMyLCAxMiwgMTUsIDIzMSwgMjMxLCAxMiwgMTUsIDIzMSwgMjMwLCAxMiwgMTUsIDIzMSwgMjI5LCAxMiwgMTUsIAotICAgIDIzMSwgMjI4LCAxMiwgMTUsIDIzMSwgMjI3LCAxMiwgMTUsIDIzMSwgMjI2LCAxMiwgMTUsIDIzMSwgMjI1LCAxMiwgMTUsIAotICAgIDIzMSwgMjI0LCAxMiwgMTUsIDIzMSwgMjIzLCAxMiwgMTUsIDIzMSwgMjIyLCAxMiwgMTUsIDIzMSwgMjIxLCAxMiwgMTUsIAotICAgIDIzMSwgMjIwLCAxMiwgMTUsIDIzMSwgMjE5LCAxMiwgMTUsIDIzMSwgMjE4LCAxMiwgMTUsIDIzMSwgMjE3LCAxMiwgMTUsIAotICAgIDIzMSwgMjE2LCAxMiwgMTUsIDIzMSwgMjE1LCAxMiwgMTUsIDIzMSwgMjE0LCAxMiwgMTUsIDIzMSwgMjEzLCAxMiwgMTUsIAotICAgIDIzMSwgMjEyLCAxMiwgMTUsIDIzMSwgMjExLCAxMiwgMTUsIDIzMSwgMjEwLCAxMiwgMTUsIDIzMSwgMjA5LCAxMiwgMTUsIAotICAgIDIzMSwgMjA4LCAxMiwgMTUsIDIzMSwgMjA3LCAxMiwgMTUsIDIzMSwgMjA2LCAxMiwgMTUsIDIzMSwgMjA1LCAxMiwgMTUsIAotICAgIDIzMSwgMjA0LCAxMiwgMTUsIDIzMSwgMjAzLCAxMiwgMTUsIDIzMSwgMjAyLCAxMiwgMTUsIDIzMSwgMjAxLCAxMiwgMTUsIAotICAgIDIzMSwgMjAwLCAxMiwgMTUsIDIzMSwgMTk5LCAxMiwgMTUsIDIzMSwgMTk4LCAxMiwgMTUsIDIzMSwgMTk3LCAxMiwgMTUsIAotICAgIDIzMSwgMTk2LCAxMiwgMTUsIDIzMSwgMTk1LCAxMiwgMTUsIDIzMSwgMTk0LCAxMiwgMTUsIDIzMSwgMTkzLCAxMiwgMTUsIAotICAgIDIzMSwgMTkyLCAxMiwgMTUsIDIzMSwgMTkxLCAxMiwgMTUsIDIzMSwgMTkwLCAxMiwgMTUsIDIzMSwgMTg5LCAxMiwgMTUsIAotICAgIDIzMSwgMTg4LCAxMiwgMTUsIDIzMSwgMTg3LCAxMiwgMTUsIDIzMSwgMTg2LCAxMiwgMTUsIDIzMSwgMTg1LCAxMiwgMTUsIAotICAgIDIzMSwgMTg0LCAxMiwgMTUsIDIzMSwgMTgzLCAxMiwgMTUsIDIzMSwgMTgyLCAxMiwgMTUsIDIzMSwgMTgxLCAxMiwgMTUsIAotICAgIDIzMSwgMTgwLCAxMiwgMTUsIDIzMSwgMTc5LCAxMiwgMTUsIDIzMSwgMTc4LCAxMiwgMTUsIDIzMSwgMTc3LCAxMiwgMTUsIAotICAgIDIzMSwgMTc2LCAxMiwgMTUsIDIzMSwgMTc1LCAxMiwgMTUsIDIzMSwgMTc0LCAxMiwgMTUsIDIzMSwgMTczLCAxMiwgMTUsIAotICAgIDIzMSwgMTcyLCAxMiwgMTUsIDIzMSwgMTcxLCAxMiwgMTUsIDIzMSwgMTcwLCAxMiwgMTUsIDIzMSwgMTY5LCAxMiwgMTUsIAotICAgIDIzMSwgMTY4LCAxMiwgMTUsIDIzMSwgMTY3LCAxMiwgMTUsIDIzMSwgMTY2LCAxMiwgMTUsIDIzMSwgMTY1LCAxMiwgMTUsIAotICAgIDIzMSwgMTY0LCAxMiwgMTUsIDIzMSwgMTYzLCAxMiwgMTUsIDIzMSwgMTYyLCAxMiwgMTUsIDIzMSwgMTYxLCAxMiwgMTUsIAotICAgIDIzMSwgMTYwLCAxMiwgMTUsIDIzMSwgMTU5LCAxMiwgMTUsIDIzMSwgMTU4LCAxMiwgMTUsIDIzMSwgMTU3LCAxMiwgMTUsIAotICAgIDIzMSwgMTU2LCAxMiwgMTUsIDIzMSwgMTU1LCAxMiwgMTUsIDIzMSwgMTU0LCAxMiwgMTUsIDIzMSwgMTUzLCAxMiwgMTUsIAotICAgIDIzMSwgMTUyLCAxMiwgMTUsIDIzMSwgMTUxLCAxMiwgMTUsIDIzMSwgMTUwLCAxMiwgMTUsIDIzMSwgMTQ5LCAxMiwgMTUsIAotICAgIDIzMSwgMTQ4LCAxMiwgMTUsIDIzMSwgMTQ3LCAxMiwgMTUsIDIzMSwgMTQ2LCAxMiwgMTUsIDIzMSwgMTQ1LCAxMiwgMTUsIAotICAgIDIzMSwgMTQ0LCAxMiwgMTUsIDIzMSwgMTQzLCAxMiwgMTUsIDIzMSwgMTQyLCAxMiwgMTUsIDIzMSwgMTQxLCAxMiwgMTUsIAotICAgIDIzMSwgMTQwLCAxMiwgMTUsIDIzMSwgMTM5LCAxMiwgMTUsIDIzMSwgMTM4LCAxMiwgMTUsIDIzMSwgMTM3LCAxMiwgMTUsIAotICAgIDIzMSwgMTM2LCAxMiwgMTUsIDIzMSwgMTM1LCAxMiwgMTUsIDIzMSwgMTM0LCAxMiwgMTUsIDIzMSwgMTMzLCAxMiwgMTUsIAotICAgIDIzMSwgMTMyLCAxMiwgMTUsIDIzMSwgMTMxLCAxMiwgMTUsIDIzMSwgMTMwLCAxMiwgMTUsIDIzMSwgMTI5LCAxMiwgMTUsIAotICAgIDIzMSwgMTI4LCAxMiwgMTUsIDIzMSwgMTI3LCAxMiwgMTUsIDIzMSwgMTI2LCAxMiwgMTUsIDIzMSwgMTI1LCAxMiwgMTUsIAotICAgIDIzMSwgMTI0LCAxMiwgMTUsIDIzMSwgMTIzLCAxMiwgMTUsIDIzMSwgMTIyLCAxMiwgMTUsIDIzMSwgMTIxLCAxMiwgMTUsIAotICAgIDIzMSwgMTIwLCAxMiwgMTUsIDIzMSwgMTE5LCAxMiwgMTUsIDIzMSwgMTE4LCAxMiwgMTUsIDIzMSwgMTE3LCAxMiwgMTUsIAotICAgIDIzMSwgMTE2LCAxMiwgMTUsIDIzMSwgMTE1LCA4LCA1LCAzMiwgMjQwLCAzMCwgOCwgNSwgMzIsIDI0MCwgMjYsIDgsIDUsIAotICAgIDMyLCAyMzksIDIyOCwgOCwgNSwgMzIsIDI0MCwgMjksIDgsIDUsIDMyLCAyNDAsIDI4LCA4LCA1LCAzMiwgMTYzLCAyMTUsIAotICAgIDk0LCAyMTAsIDY5LCA4LCA1LCAzMiwgMjExLCAxMDgsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMjEsIDE1MiwgMTc4LCA1LCAKLSAgICAzMiwgMjI0LCAyNDEsIDI0MSwgMTY3LCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjMxLCAxOSwgMTc4LCA1LCAzMiwgMjA1LCAKLSAgICAyMzUsIDIyMSwgMTUyLCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjAzLCAxNzQsIDExMCwgMSwgMjAyLCAyMzcsIDMsIDIzNiwgCi0gICAgMjMyLCAxMTAsIDIxOCwgNjMsIDIzMCwgODEsIDIwNiwgNjcsIDExMCwgMzIsIDIwMywgOSwgMjAyLCAyMzcsIDIwMiwgMjM3LCAKLSAgICAyMTksIDU0LCAxMTAsIDEsIDI1MCwgMjUwLCAyNTAsIDMsIDExMCwgMSwgMjA0LCAyNywgMjUxLCAzMCwgMTEwLCAxLCAyMDQsIAotICAgIDI3LCAyNDQsIDE3OCwgMTEwLCAxLCAyMDQsIDI3LCAyMzcsIDY3LCAxMTAsIDEsIDIwNCwgMjcsIDIzMCwgMjIsIDExMCwgMSwgCi0gICAgMjA0LCAyNywgMjI4LCAyMCwgMTEwLCAxLCAyMDQsIDI3LCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjA0LCAyNywgMjE2LCAKLSAgICA5MSwgMTEwLCAxLCAyMDQsIDI3LCAyMDksIDIwMywgMTEwLCAxLCAyNTAsIDI1MCwgOTEsIDU0LCAxMTAsIDEsIDIxMywgMCwgCi0gICAgMywgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjEyLCAxMjQsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAKLSAgICAzLCAyNDQsIDE5OCwgMjUsIDIxMywgMCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIDMsIDI0NCwgMTk4LCAyNSwgMjEyLCAKLSAgICAxMjQsIDI0MywgODUsIDExMCwgMSwgMTM3LCAzLCAyMTksIDU0LCAxMTAsIDEsIDEzNywgMywgMjE3LCAxMTQsIDExMCwgMSwgCi0gICAgMTM3LCAzLCAyMjUsIDEwNSwgMTEwLCAxLCAyNDgsIDEwOSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM4LCA2OCwgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjQ0LCAxNzksIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIzNywgNjgsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIAotICAgIDIwNiwgNjAsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgOTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwOSwgMTMzLCAzLCAKLSAgICAyNDQsIDE5NywgMTEwLCAxLCAyMDIsIDIzNywgMywgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIzMCwgMjMsIDMsIDI0NCwgCi0gICAgMTk3LCAxMTAsIDEsIDIzMCwgMjMsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyOCwgMjEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIAotICAgIDIyNCwgMjQ4LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMjEsIDQxLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTQsIDI1MCwgMywgCi0gICAgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAKLSAgICAxMTAsIDEsIDIwOCwgMTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNywgNzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNiwgCi0gICAgOTIsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAyMDQsIDMsIDI0NCwgCi0gICAgMTk3LCAxMTAsIDEsIDIwNiwgNjAsIDMsIDIzNiwgMTI4LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAKLSAgICAyMzAsIDIzLCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAyMTksIDM1LCAzLCAyMTYsIDIwMCwgMTEwLCAzMiwgMTM3LCAyMjgsIAotICAgIDIwLCAxMCwgMSwgMTM3LCAyMDQsIDg4LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDQ2LCAxOCwgMTAsIDEsIDI0OCwgCi0gICAgMTQ5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxNDksIDgxLCAxOCwgMTAsIDEsIAotICAgIDI0OCwgMTQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNjQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjE5LCAxNywgODEsIDE4LCAxMCwgMSwgMjE5LCAxNywgMTc0LCAxOCwgMTAsIDEsIDI0OCwgMTM3LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyNDgsIDEzNywgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDgxLCAxOCwgMTAsIDEsIDI0OCwgMTM3LCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjA3LCAyMzIsIDY0LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzMiwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjA3LCAyMzIsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIwOSwgMTY4LCA4MSwgMTgsIDEwLCAxLCAyMDksIDE2OCwgMTc0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgNDYsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIDgxLCAxOCwgMTAsIDEsIDIwNywgCi0gICAgMjM0LCAxNzQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNjQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNDYsIDE4LCAxMCwgMSwgMjA2LCAKLSAgICA0OSwgODEsIDE4LCAxMCwgMSwgMjA2LCA0OSwgMTc0LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDY0LCAxOCwgMTAsIDEsIDIxOSwgCi0gICAgMTUsIDQ2LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDgxLCAxOCwgMTAsIDEsIDIxOSwgMTUsIDE3NCwgMTgsIDEwLCAxLCAyNDIsIAotICAgIDYsIDY0LCAxOCwgMTAsIDEsIDI0MiwgNiwgNDYsIDE4LCAxMCwgMSwgMjQyLCA2LCA4MSwgMTgsIDEwLCAxLCAyNDIsIDYsIAotICAgIDE3NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNjQsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDQ2LCAxOCwgMTAsIDEsIDIyMCwgCi0gICAgMjU1LCA4MSwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTkyLCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMDksIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTkyLCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjA5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MCwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTgsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDI0NCwgMTkyLCA2NCwgMTgsIDEwLCAxLCAyNDQsIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjQyLCAzNCwgNjQsIAotICAgIDE4LCAxMCwgMSwgMjQyLCAzNCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTE2LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNjQsIDE4LCAxMCwgMSwgMjMwLCAxNTYsIDQ2LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMTUsIDE3OCwgNDYsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCi0gICAgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgODEsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAKLSAgICAyMzgsIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIzOCwgMjUyLCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyMzgsIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA2NCwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjM3LCAyMTgsIDgxLCAxOCwgMTAsIDEsIDIzNywgMjE4LCAxNzQsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDY0LCAKLSAgICAxOCwgMTAsIDEsIDIyMiwgMTI3LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDEyNywgODEsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIAotICAgIDE3NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDIzOCwgODYsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIxNSwgMjMxLCA2NCwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgNDYsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIAotICAgIDgxLCAxOCwgMTAsIDEsIDIxNSwgMjMxLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMywgODksIDg3LCA2NCwgMTgsIDEwLCAKLSAgICAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIzNywgNDQsIDIzOCwgMzcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDgxLCAxOCwgMTAsIDEsIDIzNywgCi0gICAgNDQsIDIzOCwgMzcsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDExMCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCi0gICAgMjQzLCAxMTAsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA4MSwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIAotICAgIDExMCwgMTc0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA0NiwgMTgsIAotICAgIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDE2LCA3MCwgNTUsIDEwLCAxNiwgNzAsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAKLSAgICA1NSwgMTAsIDE2LCAxMjAsIDE4NywgNTYsIDEwLCAxNiwgMTI2LCAxODcsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCA1NiwgMTAsIAotICAgIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NSwgMTAsIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NiwgMTAsIAotICAgIDE2LCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDE2LCAyMzksIDE0NywgMTg3LCA1NiwgMTAsIDE2LCA1MiwgODAsIDI0OCwgCi0gICAgMjMxLCA1NiwgMTAsIDE2LCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTYsIAotICAgIDEwLCAxNiwgMjE1LCAyNTIsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU1LCAxMCwgMTYsIDUsIDIwOSwgMjUyLCA1NiwgMTAsIAotICAgIDEsIDIyMiwgMjA2LCA2NCwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgNDYsIDE4LCAxMCwgMSwgMjIyLCAyMDYsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIyMiwgMjA2LCAxNzQsIDE4LCAxMCwgMSwgMTA2LCA2NCwgMTgsIDEwLCAxLCAxMDYsIDQ2LCAxOCwgMTAsIDEsIAotICAgIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIyOSwgNzYsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAyMjksIAotICAgIDc2LCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTg4LCA2NCwgMTgsIDEwLCAxLCAxODgsIDQ2LCAxOCwgMTAsIDEsIDE4OCwgCi0gICAgODEsIDE4LCAxMCwgMSwgMTg4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAKLSAgICAxMzAsIDgxLCAxOCwgMTAsIDEsIDIwNywgMTYsIDIyOSwgMjA1LCAyMjksIDc2LCAxMzcsIDIyNSwgMTMwLCAxNzQsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIAotICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTEwLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICAyMDQsIDcxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjA0LCA3MSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAKLSAgICAyMTQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgODEsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAotICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKLSAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCi0gICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgODEsIDE4LCAxMCwgMSwgMjQwLCA3NSwgCi0gICAgODksIDY0LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA0NiwgMTgsIDEwLCAxLCAyNDAsIDc1LCA4OSwgODEsIDE4LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgODMsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDE4NCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIwOSwgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgODksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAxODQsIAotICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxNTEsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyMjksIDE0MSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE0LCAxNjIsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIxNCwgMTYyLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgCi0gICAgMjksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCi0gICAgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjAyLCAxMTEsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjM4LCAxMTUsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQwLCAKLSAgICA0OCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAotICAgIDQ4LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyNDAsIDQ4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIAotICAgIDEyMCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIxNywgMTIwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCi0gICAgMjMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIAotICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIAotICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCi0gICAgMjMsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODMsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCi0gICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIAotICAgIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCi0gICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMTg0LCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxMDEsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAyMTYsIDEyMywgCi0gICAgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDEzNywgMjI1LCAxMzAsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDIyOSwgMjI4LCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQwLCA3MiwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgCi0gICAgMTczLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAKLSAgICAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjE2LCAxMjMsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIAotICAgIDEyOCwgODcsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIxLCAxNzksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDIzNywgMTI4LCA4NywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyNDgsIDEzOSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyNDgsIDEzOSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTM3LCAyMjUsIDEzMCwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMTYsIDEyMywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgCi0gICAgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIAotICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIAotICAgIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMzAsIDIzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAKLSAgICAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIAotICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMTYsIDEyMywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgCi0gICAgMywgMjEwLCAxOTksIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjEsIDE3OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgCi0gICAgNDQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4MywgODEsIAotICAgIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyNDQsIDIwOCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjQ0LCAyMDgsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwMiwgCi0gICAgMTExLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIAotICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMTcsIDEyMCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIAotICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgMjEwLCAKLSAgICAxOTksIDEzNywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIAotICAgIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCAKLSAgICAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgCi0gICAgMjEzLCA4MSwgMywgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTM3LCAyMjUsIDEzMCwgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDEzNywgMjI1LCAKLSAgICAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIAotICAgIDQwLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCi0gICAgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAKLSAgICAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgCi0gICAgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjUxLCA2MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjM4LCAxMTUsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDE3NCwgMTgsIAotICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjAyLCAxMTEsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDEzNywgMywgMjQwLCA3MCwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDEzNywgMywgMjQwLCA3MCwgNjQsIDE4LCAyMTksIDIzMSwgNDksIDIxOSwgNzYsIDIxOSwgMjMxLCA1MCwgMjE5LCA3NiwgCi0gICAgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIAotICAgIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAKLSAgICAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgCi0gICAgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgMywgCi0gICAgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAKLSAgICAxNjIsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAKLSAgICA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIAotICAgIDE2MiwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCAzLCAxNTEsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAzLCAKLSAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgCi0gICAgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAotICAgIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIAotICAgIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyNTEsIDYwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgCi0gICAgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIAotICAgIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAKLSAgICAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMjgsIDI5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIAotICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCA4MywgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgMTUxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDE4NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAKLSAgICAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIAotICAgIDQ0LCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKLSAgICAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIAotICAgIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIAotICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIAotICAgIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgCi0gICAgMTcwLCAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIAotICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTM3LCAyMjUsIAotICAgIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCi0gICAgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAotICAgIDIwOCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDgzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjIxLCAxNzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODksIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIyOCwgMjksIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAzLCAxNTEsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAKLSAgICAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIAotICAgIDE3OSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgNCwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAKLSAgICAyMTEsIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMTYsIDIwNiwgMTg4LCAyNTAsIDgyLCAyMjgsIDI1NCwgMjExLCAKLSAgICA2MiwgMiwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgMTMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDQ0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjI0LCA1NywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNSwgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTc0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjUxLCAzMywgNjQsIDE4LCAxMCwgMzIsIDIwNCwgOTAsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODksIDEwLCAzMiwgMjMwLCAxNzIsIDIxNiwgNTYsIDU0LCAxMCwgMzIsIDI0OCwgCi0gICAgNTMsIDI1MCwgMTQyLCAyNTAsIDE0MywgNTcsIDIxNCwgMTQ5LCA1NywgMjE0LCAzOCwgNTcsIDIxMywgMjI2LCA1NywgMjEzLCAKLSAgICAyMTUsIDU3LCAyMTMsIDIwNCwgNTcsIDIxMywgMTkzLCA1NywgMjEzLCAxODIsIDU3LCAyMTMsIDE3MSwgNTcsIDIxMywgCi0gICAgMTYwLCA1NywgMjE0LCAxNDgsIDU3LCAyMTQsIDEzNywgNTcsIDIxNCwgMTI2LCA1NywgMjE0LCAxMTUsIDU3LCAyMTQsIAotICAgIDEwNCwgNTcsIDIxNCwgOTMsIDU3LCAyMTQsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyMzMsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIDI0NSwgMjMzLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMTM5LCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0NSwgMjQyLCAyMTcsIDI0MSwgMjM5LCAKLSAgICAxNTksIDM1LCA4MCwgMjEzLCAxNDMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDAsIDIxMiwgODIsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMTcsIDQ3LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgCi0gICAgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjI3LCAxODUsIDI0NywgMjI1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjM2LCAxMDYsIDI0MSwgMTA4LCAzOSwgMzIsIDQ5LCAyMzcsIDEzNywgMzksIAotICAgIDMyLCA1MCwgMjM3LCAxMzcsIDM5LCA1MiwgMjA4LCAyMjgsIDQ5LCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNTAsIAotICAgIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDQ5LCAyMzcsIDEzNywgMzksIDIyNSwgMTcxLCA1MCwgMjM3LCAxMzcsIDM5LCAKLSAgICAyNDUsIDIwNiwgMjI1LCAxNzAsIDM5LCAzMiwgNDksIDE2MiwgNTYsIDM5LCAzMiwgNTAsIDE2MiwgNTYsIDM5LCAyMDgsIAotICAgIDIyOCwgNDksIDE2MiwgNTYsIDM5LCAyMDgsIDIyOCwgNTAsIDE2MiwgNTYsIDM5LCAyMjUsIDE3MSwgNDksIDE2MiwgNTYsIAotICAgIDM5LCAyMjUsIDE3MSwgNTAsIDE2MiwgNTYsIDM5LCAyNDUsIDIwNiwgMjI1LCAxNzEsIDU2LCAzOSwgMzYsIDIwOCwgMTk4LCAKLSAgICA0OSwgMjM3LCAxMzcsIDM5LCAzNiwgMjA4LCAxOTgsIDUwLCAyMzcsIDEzNywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAotICAgIDEyMCwgNzAsIDIyNywgMjMyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCAxMDQsIDI0NCwgMTQ0LCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCA5MywgMjQ0LCAxNDQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAKLSAgICAxMjQsIDIyNywgMTE0LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMTksIDc2LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIxOSwgCi0gICAgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCAKLSAgICA4MCwgNTAsIDI0NSwgOTMsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgCi0gICAgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDIxNywgMjQxLCAKLSAgICAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgCi0gICAgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgCi0gICAgMzUsIDgwLCA0OSwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyNTAsIDIxOCwgMTU1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDI0NSwgMTY2LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAotICAgIDgwLCA1MCwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgMjQ1LCAxNjYsIDE1NSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgMjEzLCAxMjEsIDI0MywgODUsIDYxLCAKLSAgICAyMTMsIDEyMSwgMjQzLCA4NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MSwgMTU1LCAyMTcsIDI0MSwgCi0gICAgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDUxLCAxNTUsIDI0NCwgMTQzLCAyMTksIDE5OCwgMjQ2LCAyMTQsIDIxOSwgMTk4LCAKLSAgICAyMDQsIDcyLCAyMTksIDE5OCwgNTIsIDIwNCwgNzIsIDIxOSwgMTk4LCAyNDQsIDE0MywgMTI0LCAyMjcsIDExNCwgMjQ2LCAKLSAgICAyMTQsIDEyNCwgMjI3LCAxMTQsIDIwNCwgNzIsIDEyNCwgMjI3LCAxMTQsIDUsIDI0NSwgMjMzLCA1LCAxMzksIDI0NSwgCi0gICAgMjMzLCA1LCAyMzksIDEwMiwgMjExLCA2MSwgNSwgMjEzLCAxNDMsIDUsIDI0NSwgMjQyLCA1LCAyMTcsIDQ3LCA4MiwgNSwgCi0gICAgMjQwLCAyMTIsIDgyLCA1LCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDUsIDQ5LCAyMTksIDc2LCA1LCA1MCwgMjE5LCA3NiwgNSwgCi0gICAgNDksIDI0NSwgOTMsIDE1NSwgNSwgNTAsIDI0NSwgOTMsIDE1NSwgNSwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIAotICAgIDUwLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1LCA0MiwgNTQsIDUsIDI1MCwgMjM1LCA1LCAyNTAsIDU5LCA1LCA5MSwgCi0gICAgNTQsIDUsIDIzNSwgMjE5LCA1LCAyMjcsIDE3OSwgNTQsIDUsIDIzNywgMjQ3LCA1NCwgNSwgMjQxLCAzNSwgNTQsIDUsIAotICAgIDIxNiwgNzQsIDIxMiwgMCwgNSwgMjQzLCA5NywgNTQsIDUsIDIxOCwgMjQ2LCA1NCwgNSwgMjQ1LCAyMzEsIDI1MCwgNDksIAotICAgIDEwLCAyNDAsIDcwLCA2NCwgMTgsIDEwLCAyMDksIDIxMCwgMywgMjQwLCA3MCwgNTUsIDEwLCAyNDQsIDE3MSwgNjQsIDE4LCAKLSAgICAxMCwgMjA5LCAyNDksIDIzOSwgMTM3LCAxMCwgMjI5LCAyMjgsIDY0LCAxOCwgMTAsIDI0MCwgNzIsIDY0LCAxOCwgMTAsIAotICAgIDI0MCwgNzIsIDE3NCwgMTgsIDEwLCAyNDQsIDE3MywgNjQsIDE4LCAxMCwgMjQ0LCAxNzMsIDE3NCwgMTgsIDEwLCAyMjksIAotICAgIDIzMCwgNjQsIDE4LCAxMCwgMjI5LCAyMzAsIDE3NCwgMTgsIDEwLCAyMTMsIDgxLCA2NCwgMTgsIDEwLCAyMTMsIDgxLCAKLSAgICAxNzQsIDE4LCAxMCwgMjEwLCAyMjMsIDY0LCAxOCwgMTAsIDIxMCwgMjIzLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAxMjgsIAotICAgIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgCi0gICAgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgCi0gICAgMTI4LCA4NywgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDEsIDEzNywgCi0gICAgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA4MSwgMTgsIDEwLCAxLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAxNzQsIDE4LCAxMCwgMSwgMTM3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDQ2LCAxOCwgMTAsIAotICAgIDEsIDI0OCwgMTM5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzksIDgxLCAxOCwgCi0gICAgMTAsIDEsIDI0OCwgMTM5LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDY0LCAxOCwgMTAsIDEsIDIwOSwgCi0gICAgMTcwLCAyMjUsIDk5LCA0NiwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIwOSwgMTcwLCA4MSwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgODksIDY0LCAKLSAgICAxOCwgMTAsIDEsIDIwOSwgODksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgODksIDgxLCAxOCwgMTAsIDEsIDIwOSwgODksIDE3NCwgCi0gICAgMTgsIDEwLCAxLCAxODQsIDY0LCAxOCwgMTAsIDEsIDE4NCwgNDYsIDE4LCAxMCwgMSwgMTg0LCA4MSwgMTgsIDEwLCAxLCAKLSAgICAxODQsIDE3NCwgMTgsIDEwLCAxLCAxNTEsIDY0LCAxOCwgMTAsIDEsIDE1MSwgNDYsIDE4LCAxMCwgMSwgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAxLCAxNTEsIDE3NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTg1LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyNDQsIDE4NSwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTAxLCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMSwgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgCi0gICAgMTA4LCA2NCwgMTgsIDEwLCAxLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIxNCwgMTYyLCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgODEsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMTMsIDQwLCA2NCwgMTgsIDEwLCAxLCAyMTMsIDQwLCA0NiwgMTgsIDEwLCAxLCAyMTMsIDQwLCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyMTMsIDQwLCAxNzQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNjQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNDYsIDE4LCAxMCwgCi0gICAgMSwgMjE1LCAyOSwgODEsIDE4LCAxMCwgMSwgMjE1LCAyOSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMjA4LCA2NCwgMTgsIDEwLCAKLSAgICAxLCAyNDQsIDIwOCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDgxLCAxOCwgMTAsIDEsIDI0NCwgMjA4LCAxNzQsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAyNTIsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDI1MiwgODEsIAotICAgIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDE3NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgNjQsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA4MSwgMTgsIDEwLCAxLCAyMDIsIDExMSwgMTc0LCAxOCwgMTAsIDEsIDI1MSwgCi0gICAgNjAsIDY0LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDQ2LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDgxLCAxOCwgMTAsIDEsIDI1MSwgCi0gICAgNjAsIDE3NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNjQsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDQ2LCAxOCwgMTAsIDEsIAotICAgIDIzOCwgMTE1LCA4MSwgMTgsIDEwLCAxLCAyMzgsIDExNSwgMTc0LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDY0LCAxOCwgMTAsIAotICAgIDEsIDI0MCwgNDgsIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDgxLCAxOCwgMTAsIDEsIDI0MCwgNDgsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMTcsIDEyMCwgNjQsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDQ2LCAxOCwgMTAsIDEsIDIxNywgMTIwLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMTcsIDEyMCwgMTc0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDY0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIzMCwgMjMsIDgxLCAxOCwgMTAsIDEsIDIzMCwgMjMsIDE3NCwgMTgsIDEwLCAxLCAyMjgsIDI5LCA2NCwgMTgsIAotICAgIDEwLCAxLCAyMjgsIDI5LCA0NiwgMTgsIDEwLCAxLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMjgsIDI5LCAxNzQsIDE4LCAKLSAgICAxMCwgMSwgODMsIDY0LCAxOCwgMTAsIDEsIDgzLCA0NiwgMTgsIDEwLCAxLCA4MywgODEsIDE4LCAxMCwgMSwgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICA4MSwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDY0LCAxOCwgMTAsIDEsIDIzNywgNDQsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAxLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAxLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAxLCA4OSwgNjQsIDE4LCAxMCwgMSwgODksIDQ2LCAxOCwgMTAsIDEsIDg5LCA4MSwgCi0gICAgMTgsIDEwLCAxLCA4OSwgMTc0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDQ2LCAxOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAxNTQsIDI0MCwgMjEyLCA4MiwgMTU0LCAyMTcsIDMxLCA4MiwgMTU0LCA0MiwgNTQsIDE1NCwgMjQzLCA5NywgNTQsIAotICAgIDE1NCwgMjE4LCAyNDYsIDU0LCAxNTQsIDI1MCwgMjM1LCAxNTQsIDI1MCwgMTYwLCAxNTQsIDQ5LCAyMTksIDc2LCAxNTQsIAotICAgIDUwLCAyMTksIDc2LCAxNTQsIDI1MCwgNTksIDE1NCwgOTEsIDU0LCAxNTQsIDI0NSwgMjMzLCAxNTQsIDIzNSwgMjE5LCAKLSAgICAxNTQsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNTQsIDIxMiwgMCwgMTU0LCAxNywgMjAyLCA4NCwgMTU0LCAxNywgMTA1LCAxNTQsIAotICAgIDE3LCAxMDgsIDE1NCwgMTcsIDE0NywgMTU0LCAxNywgMTQ5LCAxNTQsIDE3LCAxNzAsIDE1NCwgMTcsIDE5NSwgMTU0LCAxNywgCi0gICAgMjEzLCAxMTEsIDE1NCwgMTcsIDE5OSwgMTU0LCAxNywgMjIyLCA2MywgMTU0LCAyNDUsIDI0MiwgMTU0LCAyMTMsIDE0MywgCi0gICAgMTU0LCAyMjcsIDE3OSwgNTQsIDE1NCwgMjQxLCAzNSwgNTQsIDE1NCwgMjM3LCAyNDcsIDU0LCAxNTQsIDIxNywgNDcsIDgyLCAKLSAgICAxNTQsIDI0NSwgMjMxLCAyNTAsIDQ5LCAxNTQsIDgsIDYsIDEsIDYzLCAxNTQsIDgsIDYsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIAotICAgIDYsIDEsIDI0NywgMTI1LCAxNTQsIDgsIDYsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNiwgMSwgNzQsIDE1NCwgOCwgNiwgMSwgCi0gICAgMjQwLCAxNzQsIDE1NCwgOCwgNiwgMSwgMjM5LCA3NSwgMTU0LCA4LCA2LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA2LCAxLCAKLSAgICA3NSwgMTU0LCA4LCA2LCAxLCAyMzAsIDE4NCwgMTU0LCA4LCA2LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDYsIDEsIDE1OSwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMjYsIDE4NSwgMTU0LCA4LCA2LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA2LCAxLCA3OCwgMTU0LCA4LCAKLSAgICA2LCAxLCAyMTksIDE4NCwgMTU0LCA4LCA2LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA2LCAxLCAxNDYsIDE1NCwgOCwgNiwgMSwgCi0gICAgMTk0LCAxNTQsIDgsIDYsIDEsIDIxMCwgNjksIDE1NCwgOCwgNiwgMSwgNjgsIDE1NCwgOCwgNiwgMSwgMjA2LCAxNjQsIAotICAgIDE1NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDE1NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNiwgMSwgMjAzLCAxMjQsIAotICAgIDE1NCwgOCwgNiwgMSwgMjAyLCAxNTksIDE1NCwgNDksIDUxLCAxNTUsIDE1NCwgMjE2LCA3NCwgMjEyLCAwLCAxNTQsIDUwLCAKLSAgICA1MSwgMTU1LCAxNTQsIDI0NiwgNTMsIDI1MSwgMTM4LCAxNTQsIDEyNCwgMjI3LCAxMTQsIDE1NCwgMjM3LCAyNTQsIDI1MSwgCi0gICAgMTM4LCAxNTQsIDgsIDUsIDEsIDYzLCAxNTQsIDgsIDUsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIDUsIDEsIDI0NywgMTI1LCAKLSAgICAxNTQsIDgsIDUsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNSwgMSwgNzQsIDE1NCwgOCwgNSwgMSwgMjQwLCAxNzQsIDE1NCwgOCwgCi0gICAgNSwgMSwgMjM5LCA3NSwgMTU0LCA4LCA1LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA1LCAxLCA3NSwgMTU0LCA4LCA1LCAxLCAKLSAgICAyMzAsIDE4NCwgMTU0LCA4LCA1LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDUsIDEsIDE1OSwgMTU0LCA4LCA1LCAxLCAyMjYsIAotICAgIDE4NSwgMTU0LCA4LCA1LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA1LCAxLCA3OCwgMTU0LCA4LCA1LCAxLCAyMTksIDE4NCwgCi0gICAgMTU0LCA4LCA1LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA1LCAxLCAxNDYsIDE1NCwgOCwgNSwgMSwgMTk0LCAxNTQsIDgsIDUsIAotICAgIDEsIDIxMCwgNjksIDE1NCwgOCwgNSwgMSwgNjgsIDE1NCwgOCwgNSwgMSwgMjA2LCAxNjQsIDE1NCwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDQsIDE1NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNSwgMSwgMjAzLCAxMjQsIDE1NCwgOCwgNSwgMSwgMjAyLCAKLSAgICAxNTksIDE1NCwgNDksIDI0NSwgOTMsIDE1NSwgMTU0LCA4MCwgMjI3LCAxMTQsIDE1NCwgNTAsIDI0NSwgOTMsIDE1NSwgCi0gICAgMTU0LCAyMDgsIDIyNywgMTU0LCA0OSwgNjEsIDIxOSwgNzYsIDE1NCwgNTAsIDYxLCAyMTksIDc2LCAxMjcsIDEzOSwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDEyNywgNDksIDI0NSwgMTY2LCAxNTUsIDEyNywgNTAsIDI0NSwgMTY2LCAxNTUsIDEyNywgMTM5LCAKLSAgICAyNDUsIDIzMywgMTI3LCA2NywgMTAxLCAyNDMsIDg1LCAxMjcsIDY3LCAxLCAyMDQsIDAsIDEyNywgNjcsIDEsIDUsIDYzLCAKLSAgICAxMjcsIDY3LCAxLCA1LCA3NSwgMTI3LCA2NywgMSwgNSwgNjgsIDEyNywgNjcsIDEsIDUsIDc0LCAxMjcsIDY3LCAxLCA1LCAKLSAgICA3OCwgMTI3LCA2NywgMSwgNSwgMTk4LCAxMjcsIDY3LCAxLCA1LCAyMDIsIDIxMywgMTI3LCA2NywgMSwgNSwgMjAyLCAyNDcsIAotICAgIDEyNywgNjcsIDEsIDUsIDIwNywgMjAzLCAxMjcsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAyNDEsIDgyLCAxMjcsIDY3LCAKLSAgICAxLCA2MywgMTI3LCA2NywgMSwgNzUsIDEyNywgNjcsIDEsIDY4LCAxMjcsIDY3LCAxLCA3NCwgMTI3LCA2NywgMSwgNzgsIAotICAgIDEyNywgNjcsIDEsIDE3MywgMTI3LCA2NywgMSwgMjI5LCAxMDAsIDEyNywgNjcsIDEsIDIyOCwgMjA5LCAxMjcsIDY3LCAxLCAKLSAgICAyMjksIDIwMSwgMTI3LCA2NywgMSwgMjI5LCAyNiwgMTI3LCA2NywgMSwgMjE1LCAzNiwgMTI3LCA2NywgMSwgMjEyLCAxNjIsIAotICAgIDEyNywgNjcsIDEsIDIxMSwgMTAsIDEyNywgNjcsIDEsIDIxNCwgMTc3LCAxMjcsIDY3LCAxLCAyMTIsIDEzLCAxMjcsIDY3LCAKLSAgICAxLCAyMTAsIDIyLCAxMjcsIDY3LCAxLCAyMDksIDIsIDEyNywgNjcsIDEsIDIwNywgMjAzLCAxMjcsIDY3LCAxLCAyMDksIAotICAgIDE4NywgMTI3LCA2NywgMSwgMTM1LCAxMjcsIDY3LCAxLCAyMDEsIDIwMSwgMTI3LCA2NywgMSwgMjIyLCAxMDAsIDEyNywgCi0gICAgNjcsIDEsIDIyMSwgODQsIDEyNywgNjcsIDEsIDIyMiwgMjQwLCAxMjcsIDY3LCAxLCAyMjEsIDE5MSwgMTI3LCA2NywgMSwgCi0gICAgMTUyLCAxMjcsIDY3LCAxLCAyMzcsIDMsIDEyNywgNjcsIDEsIDIzNiwgMjYsIDEyNywgNjcsIDEsIDIzNywgNjcsIDEyNywgCi0gICAgNjcsIDEsIDIzNiwgMTM2LCAxMjcsIDY3LCAxLCAxOTIsIDEyNywgNjcsIDEsIDIyNCwgMTU1LCAxMjcsIDY3LCAxLCAyMjMsIAotICAgIDI0NiwgMTI3LCA2NywgMSwgMjI1LCAyMCwgMTI3LCA2NywgMSwgMjI0LCA4MiwgMTI3LCA2NywgMSwgMTk4LCAxMjcsIDY3LCAKLSAgICAxLCAyMDIsIDIxMywgMTI3LCA2NywgMSwgMjAyLCAyNDcsIDEyNywgNjcsIDEsIDIxNiwgMjIwLCAxMjcsIDY3LCAxLCAyMTYsIAotICAgIDU3LCAxMjcsIDY3LCAxLCAyMTUsIDE0NSwgMTI3LCA2NywgMSwgMjE2LCAxNTgsIDEyNywgNjcsIDEsIDIxNSwgMjI3LCAKLSAgICAxMjcsIDY3LCAxLCAyMDQsIDExMSwgMTI3LCA2NywgMSwgMjIzLCAxNjMsIDEyNywgNjcsIDIwNSwgMTg2LCAyMTEsIDI0MSwgCi0gICAgODIsIDEyNywgNjcsIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDEyNywgMjgsIDI0MCwgNywgMTI3LCAyOCwgMSwgMjI5LCAKLSAgICA1OSwgMTI3LCAyOCwgMSwgMjExLCAxNTYsIDEyNywgMjgsIDEsIDIyOSwgNTIsIDEyNywgMjgsIDEsIDIyMiwgOTMsIDEyNywgCi0gICAgMjgsIDEsIDIyMiwgOTEsIDEyNywgMjgsIDEsIDIyMiwgOTAsIDEyNywgMjgsIDEsIDIwOCwgMjQwLCAxMjcsIDI4LCAxLCAKLSAgICAyMTEsIDE0NSwgMTI3LCAyOCwgMSwgMjE2LCA0NywgMTI3LCAyOCwgMSwgMjE2LCA0MiwgMTI3LCAyOCwgMSwgMjE2LCAzOSwgCi0gICAgMTI3LCAyOCwgMSwgMjE2LCAzMiwgMTI3LCAyOCwgMSwgMjE2LCAyNywgMTI3LCAyOCwgMSwgMjE2LCAyMiwgMTI3LCAyOCwgCi0gICAgMSwgMjE2LCAzMywgMTI3LCAyOCwgMSwgMjE2LCA0NSwgMTI3LCAyOCwgMSwgMjI0LCAxNDEsIDEyNywgMjgsIDEsIDIxOCwgCi0gICAgMTUzLCAxMjcsIDI4LCAxLCAyMTEsIDE1MywgMTI3LCAyOCwgMSwgMjE4LCAxNDIsIDEyNywgMjgsIDEsIDIxMiwgMTExLCAKLSAgICAxMjcsIDI4LCAxLCAyMTEsIDE1MCwgMTI3LCAyOCwgMSwgMjMxLCAxMDYsIDEyNywgMjgsIDEsIDI0NiwgNzQsIDEyNywgMjgsIAotICAgIDEsIDIxMSwgMTYwLCAxMjcsIDI4LCAxLCAyNDYsIDEzOCwgMTI3LCAyOCwgMSwgMjI5LCAxMjAsIDEyNywgMjgsIDEsIDIwOSwgCi0gICAgNjYsIDEyNywgMjgsIDEsIDIxOCwgMTkwLCAxMjcsIDI4LCAxLCAyMzYsIDI1MSwgMTI3LCAyOCwgMSwgNjMsIDEyNywgMjgsIAotICAgIDEsIDI1MSwgMTA5LCAxMjcsIDI4LCAxLCAxOTgsIDEyNywgMjgsIDEsIDIwMywgOTksIDEyNywgMjgsIDEsIDI0MSwgNTUsIAotICAgIDEyNywgMjgsIDEsIDc0LCAxMjcsIDI4LCAxLCAyMDMsIDM5LCAxMjcsIDI4LCAxLCAyMDMsIDUyLCAxMjcsIDI4LCAxLCA3OCwgCi0gICAgMTI3LCAyOCwgMSwgMjA0LCAxMTEsIDEyNywgMjgsIDEsIDIwNCwgMTA3LCAxMjcsIDI4LCAxLCAyMjAsIDczLCAxMjcsIDI4LCAKLSAgICAxLCAyMDIsIDI0NywgMTI3LCAyOCwgMSwgNjgsIDEyNywgMjgsIDEsIDIwNCwgNDgsIDEyNywgMjgsIDEsIDIwNCwgNjIsIAotICAgIDEyNywgMjgsIDEsIDIwNCwgMzAsIDEyNywgMjgsIDEsIDIwMiwgMjEzLCAxMjcsIDI4LCAxLCAyNDAsIDIzOCwgMTI3LCAyOCwgCi0gICAgMSwgMjAzLCAxMSwgMTI3LCAyOCwgMSwgNzUsIDE1NCwgMjQ2LCAyMjAsIDU0LCAxNTQsIDIxOCwgMjAsIDU0LCAxNTQsIAotICAgIDIyMSwgMTY2LCA1NCwgMTU0LCAyMjUsIDE3MCwgMTU0LCAyNDcsIDIwMywgMTQyLCAxNTQsIDIwMywgNDMsIDU0LCAxNTQsIAotICAgIDIwMywgMjQ2LCA1NCwgMTI3LCAyMzksIDE1NiwgMTU3LCAyMDYsIDM4LCAxMjcsIDk2LCA0NywgMTI3LCAxNzcsIDQ3LCAKLSAgICAxMjcsIDg2LCA0NywgMTI3LCAxODMsIDQ3LCAxMjcsIDYyLCAyMTEsIDE3NywgMTI3LCA2MSwgMjQ2LCA2MSwgMjMwLCAyNTEsIAotICAgIDI1MCwgMjA1LCAyNTAsIDIyOCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAyMTMsIDEzMCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAKLSAgICAyMDksIDEzOCwgMjIwLCA5MCwgMjE2LCA5NiwgMjQ2LCAxODIsIDIxNiwgOTYsIDI0NiwgMTgyLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjM5LCA2MywgMjksIDY2LCA0LCAyNDksIDIwOCwgNzQsIDI5LCA2NiwgNCwgMjQ5LCAyMTcsIDc1LCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMTg1LCA3OCwgMjksIDY2LCA0LCAyNDksIDIzNSwgNjgsIDI5LCA2NiwgNCwgMjQ5LCAyNTQsIDI0NCwgMjEyLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjAxLCAyNDQsIDc1LCAyOSwgNjYsIDQsIDI0OSwgMjQxLCAyNDMsIDIzMywgMjksIDY2LCA0LCAyNDksIAotICAgIDIzMSwgMjQzLCAxMTMsIDI5LCA2NiwgNCwgMjQ5LCAxOTUsIDI0MiwgNDIsIDI5LCA2NiwgNCwgMjQ5LCAxODksIDIzMCwgCi0gICAgMTgxLCAyOSwgNjYsIDQsIDI0OSwgMjAwLCAyMzAsIDE2MSwgMjksIDY2LCA0LCAyNDksIDIxMCwgMjMwLCAxMDEsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAxODEsIDIzMCwgODIsIDI5LCA2NiwgNCwgMjQ5LCAxNjksIDE3MywgMjksIDY2LCA0LCAyNDksIDIwMiwgCi0gICAgMjI5LCAyMDEsIDI5LCA2NiwgNCwgMjQ5LCAxNzksIDIyOSwgMTAwLCAyOSwgNjYsIDQsIDI0OSwgMTc2LCAyMjksIDI2LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMTY1LCAyMjgsIDIwOSwgMjksIDY2LCA0LCAyNDksIDE2NiwgMTkyLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjMyLCAyMjUsIDIwLCAyOSwgNjYsIDQsIDI0OSwgMTczLCAyMjQsIDE1NSwgMjksIDY2LCA0LCAyNDksIDIzMCwgMjI0LCAKLSAgICA4MiwgMjksIDY2LCA0LCAyNDksIDIyMiwgMjIzLCAyNDYsIDI5LCA2NiwgNCwgMjQ5LCAyNDMsIDIwMSwgMjAxLCAyOSwgNjYsIAotICAgIDQsIDI0OSwgMjIxLCAyMjIsIDI0MCwgMjksIDY2LCA0LCAyNDksIDIxNSwgMjIyLCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAxOTQsIDIyMSwgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMTkxLCAyMjEsIDg0LCAyOSwgNjYsIDQsIDI0OSwgMjUwLCAxODUsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAxNzQsIDIxOSwgMzQsIDI5LCA2NiwgNCwgMjQ5LCAyMDcsIDIxOCwgMTY3LCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjM0LCAyMTgsIDY5LCAyOSwgNjYsIDQsIDI0OSwgMTk2LCAyMTcsIDE5MSwgMjksIDY2LCA0LCAyNDksIDIyOSwgCi0gICAgMjE3LCAxMjYsIDI5LCA2NiwgNCwgMjQ5LCAxNjgsIDIxNywgMTA2LCAyOSwgNjYsIDQsIDI0OSwgMjI0LCAyMTcsIDg4LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjEzLCAyMTcsIDc3LCAyOSwgNjYsIDQsIDI0OSwgMTg2LCAyMTYsIDIyMCwgMjksIDY2LCA0LCAKLSAgICAyNDksIDIxOCwgMjE2LCAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxOTMsIDIxNiwgNTcsIDI5LCA2NiwgNCwgMjQ5LCAyNTIsIAotICAgIDIxNSwgMjI3LCAyOSwgNjYsIDQsIDI0OSwgMjE5LCAyMTUsIDE0NSwgMjksIDY2LCA0LCAyNDksIDIxNCwgMjE1LCAzNiwgCi0gICAgMjksIDY2LCA0LCAyNDksIDIzNywgMjE0LCAxNzcsIDI5LCA2NiwgNCwgMjQ5LCAyMDUsIDIxMiwgMTYyLCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjMzLCAyMTIsIDEzLCAyOSwgNjYsIDQsIDI0OSwgMTg4LCAyMTEsIDEwLCAyOSwgNjYsIDQsIDI0OSwgMTg3LCAKLSAgICAyMTAsIDIyLCAyOSwgNjYsIDQsIDI0OSwgMjQ4LCAyMDksIDE4NywgMjksIDY2LCA0LCAyNDksIDIwOSwgMjA5LCAyLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjQ2LCAxMzUsIDI5LCA2NiwgNCwgMjQ5LCAxNzcsIDIwNywgMjAzLCAyOSwgNjYsIDQsIDI0OSwgMTkyLCAKLSAgICAyMDQsIDExMSwgMjksIDY2LCA0LCAyNDksIDE3MSwgMjA0LCA2MiwgMjksIDY2LCA0LCAyNDksIDIwNiwgMjA0LCAzMCwgMjksIAotICAgIDY2LCA0LCAyNDksIDIwNCwgMjA0LCAwLCAyOSwgNjYsIDQsIDI0OSwgMjI4LCAyMDIsIDExNiwgMjksIDY2LCA0LCAyNDksIAotICAgIDE3MiwgMjAyLCA5MiwgMjksIDY2LCA0LCAyNDksIDIyNSwgMjAyLCAxNywgMjksIDY2LCA0LCAyNDksIDIyMCwgMjU0LCAzNCwgCi0gICAgMjksIDY2LCA0LCAyNDksIDIwMywgMjUzLCAxNzgsIDI5LCA2NiwgNCwgMjQ5LCAxNjIsIDI1MCwgMzQsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAxNzUsIDI0MiwgOSwgMjksIDY2LCA0LCAyNDksIDE1OCwgMjQyLCA4LCAyOSwgNjYsIDQsIDI0OSwgMTk4LCAyMjEsIAotICAgIDIwLCAyOSwgNjYsIDQsIDI0OSwgMjE2LCAyMTcsIDE4OSwgMjksIDY2LCA0LCAyNDksIDE4NCwgMjE3LCAxOTMsIDI5LCA2NiwgCi0gICAgNCwgMjQ5LCAxNzAsIDIxNiwgMjE4LCAyOSwgNjYsIDQsIDI0OSwgMjEyLCAyMTYsIDIxNywgMjksIDY2LCA0LCAyNDksIAotICAgIDE3OCwgMjE1LCAyMjYsIDI5LCA2NiwgNCwgMjQ5LCAxODAsIDIxMCwgMTksIDI5LCA2NiwgNCwgMjQ5LCAxNjAsIDIwNywgCi0gICAgMTU4LCAyOSwgNjYsIDQsIDI0OSwgMTU3LCAxMDgsIDI5LCA2NiwgMTYsIDI0OSwgMjI3LCAyOSwgNjYsIDE2LCAyNDksIAotICAgIDIyNiwgMjksIDY2LCAxNiwgMjQ5LCAyMjMsIDI5LCA2NiwgMTYsIDI0OSwgMjExLCAyOSwgNjYsIDE2LCAyNDksIDE5OSwgCi0gICAgMjksIDY2LCAxNiwgMjQ5LCAxOTcsIDI5LCA2NiwgMTYsIDI0OSwgMTkwLCAyOSwgNjYsIDE2LCAyNDksIDE4MywgMjksIDY2LCAKLSAgICAxNiwgMjQ5LCAxODIsIDI5LCA2NiwgMTYsIDI0OSwgMTY3LCAyOSwgNjYsIDE2LCAyNDksIDE2NCwgMjksIDY2LCAxNiwgCi0gICAgMjQ5LCAxNjMsIDI5LCA2NiwgMTYsIDI0OSwgMTYxLCAyOSwgNjYsIDE2LCAyNDksIDE1OSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTU2LCAyMjUsIDEyMiwgMjksIDY2LCAxMzMsIDI0OSwgMTU1LCAyMDMsIDI1MCwgMjksIDY2LCAxMzMsIDI0OSwgMTU0LCAKLSAgICAyNDQsIDU4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNTMsIDI0MSwgMzIsIDI5LCA2NiwgMTMzLCAyNDksIDE1MiwgMjI1LCA5MywgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgMTUxLCAyMTEsIDEwMSwgMjksIDY2LCAxMzMsIDI0OSwgMTUwLCAyNDAsIDIxOSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTQ5LCAyMTYsIDE4NCwgMjksIDY2LCAxMzMsIDI0OSwgMTQ4LCAyMTMsIDQyLCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxNDcsIDIzNywgNjYsIDI5LCA2NiwgMTMzLCAyNDksIDE0NiwgMjExLCAyMzUsIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDE0NSwgMjQ4LCAyMSwgMjksIDY2LCAxMzMsIDI0OSwgMTQ0LCAyNDUsIDE0OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQzLCAKLSAgICAyNDcsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQyLCAyMDQsIDM4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDEsIDI0OCwgCi0gICAgMjI3LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDAsIDIyMCwgNDEsIDI5LCA2NiwgMTMzLCAyNDksIDEzOSwgMjExLCAyMDcsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEzOCwgMjQ1LCA1OSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzNywgMjI5LCAyNDksIDI5LCA2NiwgCi0gICAgMjI0LCA0NSwgMjQ5LCAxMzYsIDIzMCwgMiwgMjksIDY2LCAxMzMsIDI0OSwgMTM1LCAyMjAsIDU1LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxMzQsIDIwNCwgMTIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMywgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMiwgMjUwLCAKLSAgICAxMTksIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzEsIDIyNCwgMjMyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzAsIDI0NywgCi0gICAgMjAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjksIDIzOCwgMzEsIDI5LCA2NiwgMTMzLCAyNDksIDEyOCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTI3LCAyMDMsIDI0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTI2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMjUsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDEyNCwgMjM2LCA1MywgMjksIDY2LCAxMzMsIDI0OSwgMTIzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjIsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEyMSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDExOSwgMjA3LCAxNzIsIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDExOCwgMjksIDY2LCAxMzMsIDI0OSwgMTE3LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTYsIDI0NiwgMTAsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDExNSwgMjksIDY2LCAxMzMsIDI0OSwgMTE0LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTMsIDIzOCwgMjIxLCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxMTIsIDI1MCwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTEsIDI5LCA2NiwgMTMzLCAyNDksIDExMCwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgMTA5LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDgsIDI5LCA2NiwgMTMzLCAyNDksIDEwNywgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDUsIDI5LCA2NiwgMTMzLCAyNDksIDEwNCwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTAzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMDIsIDIyNCwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDEwMSwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTAwLCAyMDgsIDk1LCAyOSwgNjYsIDEzMywgMjQ5LCA5OSwgMjksIDY2LCAxMzMsIDI0OSwgOTgsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDk3LCAyOSwgNjYsIDEzMywgMjQ5LCA5NiwgMjksIDY2LCAxMzMsIDI0OSwgOTUsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDk0LCAyOSwgNjYsIDEzMywgMjQ5LCA5MywgMjksIDY2LCAxMzMsIDI0OSwgOTIsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDkxLCAyOSwgNjYsIDEzMywgMjQ5LCA5MCwgMjksIDY2LCAxMzMsIDI0OSwgODksIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDg4LCAyMzcsIDM1LCAyOSwgNjYsIDEzMywgMjQ5LCA2NywgMjM5LCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDY0LCAyNDgsIAotICAgIDIwNCwgMjksIDY2LCAxMzMsIDI0OSwgNTksIDIxMSwgMjE0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OCwgNDcsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDU3LCAyOSwgNjYsIDEzMywgMjQ5LCA1NiwgMjEwLCAxNTUsIDI5LCA2NiwgMTMzLCAyNDksIDU1LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCA1NCwgMjksIDY2LCAxMzMsIDI0OSwgNTMsIDIwNCwgMzQsIDI0NiwgMTc5LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCA1MiwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAyNDksIDUxLCAyNDYsIDE4MCwgMjM5LCAxMzQsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDUwLCAyMDQsIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCA0OSwgMjksIDY2LCAxMzMsIDI0OSwgNDgsIDI5LCA2NiwgCi0gICAgMjI0LCA0NSwgMjQ5LCA0NywgMjQzLCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDQ2LCAyOSwgNjYsIDEzMywgMjQ5LCA0NSwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgNDMsIDI5LCA2NiwgMTMzLCAyNDksIDQyLCAyOSwgNjYsIDEzMywgMjQ5LCA0MSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgNDAsIDI0NCwgMTQ3LCAyOSwgNjYsIDEzMywgMjQ5LCAzOSwgMjksIDY2LCAxMzMsIDI0OSwgMzgsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDM3LCAyOSwgNjYsIDEzMywgMjQ5LCAzNiwgMjksIDY2LCAxMzMsIDI0OSwgMzUsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCAxMjAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NywgMjksIDY2LCAxMzMsIAotICAgIDIwNSwgMjQxLCAyNDksIDg2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODUsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgCi0gICAgMjQ5LCA4NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODIsIAotICAgIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgwLCAyOSwgNjYsIAotICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgNzksIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OCwgMjksIDY2LCAxMzMsIDIwNSwgCi0gICAgMjQxLCAyNDksIDc3LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAKLSAgICA3NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzMsIDI5LCAKLSAgICA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcxLCAyOSwgNjYsIDEzMywgCi0gICAgMjA1LCAyNDEsIDI0OSwgNzAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKLSAgICAyNDksIDY4LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NSwgCi0gICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjIsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYwLCAyOSwgNjYsIDEzMywgMjA1LCAKLSAgICAyNDEsIDI0OSwgNDQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAzNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIAotICAgIDEzMSwgMjI3LCAxMTQsIDI1MSwgMTAyLCAyMDMsIDIzOCwgMjEzLCAxMzEsIDI0MywgODUsIDI1MSwgMTAyLCAyNDYsIDE2OSwgCi0gICAgODIsIDI1MSwgMTAyLCA0MiwgMTA1LCAyNTEsIDEwMiwgNDIsIDEwOCwgMjUxLCAxMDIsIDQyLCAxNDcsIDI1MSwgMTAyLCAKLSAgICA0MiwgMTQ5LCAyNTEsIDEwMiwgNDIsIDE3MCwgMjUxLCAxMDIsIDQyLCAxOTUsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTEsIAotICAgIDI1MSwgMTAyLCA0MiwgMTk5LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjMsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTIsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTEsIDI1MSwgMTAyLCA0MiwgMjA5LCA1MywgMjUxLCAxMDIsIDQyLCAyMzksIDE1MywgMjUxLCAKLSAgICAxMDIsIDQyLCAyNDAsIDE4LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzQsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDUsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjQxLCAxMzQsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OCwgMjUxLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIAotICAgIDI1MSwgMTAyLCA0MiwgMTIwLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDEyNiwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAKLSAgICAyMzksIDE0NywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMTIsIAotICAgIDg4LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAKLSAgICAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTE4LCAyMDksIDM2LCAyNTEsIAotICAgIDEwMiwgNDIsIDEyMCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAxMjYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAKLSAgICAxNDcsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAyMzMsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEyLCA4OCwgCi0gICAgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDEsIDE0MywgMjA5LCAKLSAgICAzNiwgMjUxLCAxMDIsIDQyLCAyMjIsIDY0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyNTEsIAotICAgIDEwMiwgNDIsIDIwNywgMTUyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgCi0gICAgMjM5LCAxNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQwLCAxOSwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDc1LCAKLSAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTA2LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTM1LCAyMDksIAotICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNTksIDIwOSwgMzYsIDI1MSwgMTAyLCAyMDQsIDUxLCAyNDgsIDIxOSwgMjA2LCAKLSAgICAyMzUsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMTQsIDE3MSwgCi0gICAgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMDksIDYxLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgCi0gICAgMTQwLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDI0MiwgNDUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIAotICAgIDIyNywgOTUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIxNCwgMTcxLCAyMTAsIAotICAgIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIwOSwgNjEsIDIxMCwgMjQwLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgCi0gICAgMjE3LCA1NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNywgMTM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIAotICAgIDExOCwgMjQyLCA2NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxNzAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOCwgCi0gICAgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAotICAgIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgCi0gICAgMzYsIDIzOSwgMjMzLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjA5LCAyMzcsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzYsIAotICAgIDEyLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAyMzcsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAotICAgIDIzMywgMjA5LCAzNywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIxMSwgODgsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgCi0gICAgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMTEsIAotICAgIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDM3LCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgCi0gICAgMzYsIDI0MCwgMTksIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIyNCwgODUsIAotICAgIDMwLCAyNTEsIDEyOSwgMjM3LCAyOSwgMTE4LCAyMTgsIDg2LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDEwNSwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMzcsIDI1LCAxMDUsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTA4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIAotICAgIDEwOCwgMzAsIDI1MSwgMTI5LCAyNDUsIDU2LCAxMjAsIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTIwLCAKLSAgICAyNDIsIDY0LCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDE3MCwgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MiwgMzAsIAotICAgIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MywgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDIwOSwgCi0gICAgMTUyLCAzMCwgMjUxLCAxMjksIDIyNCwgMjIyLCAyMDksIDE1MiwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDE1MiwgCi0gICAgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDUzLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDI0MCwgMTgsIDMwLCAyNTEsIAotICAgIDEyOSwgMjA4LCA2MSwgMjQwLCAxOSwgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDI0MCwgMTgsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjA5LCA3NiwgMjQwLCAxOCwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMTgsIDIzNiwgMTEsIDMwLCAyNTEsIAotICAgIDEyOSwgMjA5LCA3NiwgMTI2LCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgCi0gICAgMjUxLCAxMjksIDIwOCwgNjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIzOSwgMjMzLCAKLSAgICAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0NywgMjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIyMywgNjAsIAotICAgIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAKLSAgICAyMDksIDc2LCAyMzksIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNDQsIDQwLCAyMzksIDIzMywgMjI0LCA4NSwgMzAsIAotICAgIDI1MSwgMTI5LCAyMTEsIDQ5LCAyNDAsIDE5LCAyMjQsIDg1LCAzMCwgMTE4LCAxNjIsIDU0LCAzMCwgMTE4LCAxNjIsIDIsIAotICAgIDI1MCwgMjU1LCAxOCwgMzAsIDEyMCwgMjA5LCA1OCwgNTQsIDMwLCAxMjYsIDIxNywgNTQsIDU0LCAzMCwgMjAzLCA1MCwgCi0gICAgNTQsIDMwLCAyMDksIDIzOCwgNTQsIDMwLCAyNDIsIDY2LCA1NCwgMzAsIDIyMCwgODcsIDU0LCAzMCwgMTIwLCAyMjAsIDg2LCAKLSAgICA1NCwgMzAsIDEyNiwgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDE0NywgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDIzMywgMjIwLCAKLSAgICA4NiwgNTQsIDMwLCAyMjQsIDIxNiwgNTQsIDMwLCAyMjgsIDEzOSwgMjQ4LCAyMTksIDU0LCAzMCwgMjI3LCA4OCwgNTQsIAotICAgIDMwLCAyMTksIDIxMywgNTQsIDMwLCAyMDMsIDE3MywgNTQsIDMwLCAyNTAsIDg3LCA1NCwgMzAsIDI1MCwgMTAyLCA1NCwgCi0gICAgMzAsIDIzOCwgNywgNTQsIDMwLCAyMDgsIDIzLCAyNDgsIDIxOSwgNTQsIDMwLCAyMDIsIDg1LCA1NCwgMzAsIDExOCwgMjE3LCAKLSAgICA1NiwgNTQsIDMwLCAyMTIsIDExMywgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMiwgNTQsIDIxNSwgMjEwLCAyMDYsIDI0OSwgNTQsIAotICAgIDIxNSwgMjEwLCAyMTMsIDEzNSwgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMCwgNTQsIDIxNSwgMjEwLCAyNDMsIDE4MywgMjEzLCAKLSAgICAxMDAsIDU0LCAyMTUsIDIxMCwgMjEyLCAxMzUsIDU0LCAyMTUsIDIxMCwgMjQ0LCAzNiwgNTQsIDIxNSwgMjEwLCAyMTcsIAotICAgIDM5LCA1NCwgMjE1LCAyMTAsIDIxMywgMTE5LCA1NCwgMjE1LCAyMTAsIDI0MiwgMjMsIDU0LCAyMTUsIDIxMCwgMjUwLCA4MiwgCi0gICAgNTQsIDIxNSwgMjEwLCAyNDYsIDIxMywgNTQsIDMwLCAxNiwgMjA5LCAyMDgsIDIxNiwgNTksIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjE5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTgsIDc4LCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDIwOSwgMjExLCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgNDIsIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjQ2LCAxMzMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjAzLCAyNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjM3LCAzNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzgsIDIxMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDksIDAsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgNDcsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAyNDAsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgMjEzLCA4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NiwgNCwgMjE4LCAyMDMsIDI0MywgMTYwLCAKLSAgICAyLCAyMjUsIDEyMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjUsIDY4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNCwgCi0gICAgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTQzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgNSwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI2LCAyMTgsIDkxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MywgOTgsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjQ1LCAyMzksIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjEyLCA0NiwgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyNDUsIDI0MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDE0NywgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyMTIsIDI1MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzYsIDUzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAotICAgIDIzNywgMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDE3NCwgMjI3LCAyMTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjQ3LCAxNywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTYsIDE4NCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDEsIAotICAgIDE4NiwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDIsIDcxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNywgMTg4LCAKLSAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTUwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgOTIsIDIwOCwgOTUsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA1LCAyMTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE5LCA5MiwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyMTUsIDIwMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjcsIDEyNywgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyMTksIDE5NCwgMjQ5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzksIDE5MywgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyMzcsIDI1NSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTEsIDUwLCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDUsIDI1MCwgOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDQsIDcyLCAyNDgsIDIzOCwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAzOSwgMjIwLCA4OSwgOTUsIDIyNiwgMTk3LCAxLCA2MywgMjI2LCAxOTcsIDEsIDc0LCAyMjYsIAotICAgIDE5NywgMSwgMjQ5LCAyNTUsIDIyNiwgMTk3LCAxLCAyNDgsIDk5LCAyMjYsIDE5NywgMSwgMjM5LCA3NSwgMjI2LCAxOTcsIAotICAgIDEsIDI0NSwgNTEsIDIyNiwgMTk3LCAxLCA3NSwgMjI2LCAxOTcsIDEsIDIwNCwgMTQ0LCAyMjYsIDE5NywgMSwgMjAyLCAKLSAgICAxNTksIDIyNiwgMTk3LCAxLCAyMDksIDExMCwgMjI2LCAxOTcsIDEsIDIzMCwgMTg0LCAyMjYsIDE5NywgMSwgMjMwLCA1NCwgCi0gICAgMjI2LCAxOTcsIDEsIDIxNywgMTM0LCAyMjYsIDE5NywgMSwgMTU5LCAyMjYsIDE5NywgMSwgMjI2LCAxODUsIDIyNiwgMTk3LCAKLSAgICAxLCAyMjMsIDE2MywgMjI2LCAxOTcsIDEsIDIyNCwgODcsIDIyNiwgMTk3LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTcsIDEsIAotICAgIDY4LCAyMjYsIDE5NywgMSwgMjE5LCAxODQsIDIyNiwgMTk3LCAxLCAyMjksIDQ4LCAyMjYsIDE5NywgMSwgMTQ2LCAyMjYsIAotICAgIDE5NywgMSwgMTk0LCAyMjYsIDE5NywgMSwgMjEwLCA2OSwgMjI2LCAxOTcsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NywgMSwgCi0gICAgMjUwLCAyMzEsIDIyNiwgMTk3LCAxLCAyNDEsIDkyLCAyMjYsIDE5NywgMSwgMjM3LCAxNzEsIDIyNiwgMTk3LCAxLCAyMDMsIAotICAgIDE5NiwgMjQ3LCAzMiwgMSwgNjMsIDI0NywgMzIsIDEsIDIxOSwgMTcwLCAyNDcsIDMyLCAxLCAyNDUsIDUxLCAyNDcsIDMyLCAKLSAgICAxLCAxNTksIDI0NywgMzIsIDEsIDIwNiwgMTc2LCAyNDcsIDMyLCAxLCAxNDYsIDI0NywgMzIsIDEsIDIyNywgMjM4LCAyNDcsIAotICAgIDMyLCAxLCAyNTQsIDM0LCAyNDcsIDMyLCAxLCAyMTcsIDEzNCwgMjQ3LCAzMiwgMSwgMjQ5LCAyNTUsIDI0NywgMzIsIDEsIAotICAgIDIyNiwgMTg1LCAyNDcsIDMyLCAxLCA3OCwgMjQ3LCAzMiwgMSwgMjQ0LCAyMTQsIDI0NywgMzIsIDEsIDIxMCwgNjksIDI0NywgCi0gICAgMzIsIDEsIDIxMywgOTIsIDI0NywgMzIsIDEsIDIxMywgOTEsIDI0NywgMzIsIDEsIDE5NCwgMjQ3LCAzMiwgMSwgMjQ3LCAKLSAgICAxMjQsIDI0NywgMzIsIDEsIDY4LCAyNDcsIDMyLCAxLCAyMjEsIDIyOCwgMjQ3LCAzMiwgMSwgMjAzLCAxOTYsIDI0NywgMzIsIAotICAgIDEsIDIyMywgMTYzLCAyNDcsIDMyLCAxLCAyMDcsIDI0MywgMjQ3LCAzMiwgMSwgMjE5LCAxODQsIDI0NywgMzIsIDEsIDIxMSwgCi0gICAgMTY3LCAyNDcsIDMyLCAxLCA3NSwgMjQ3LCAzMiwgMSwgNzQsIDI0NywgMzIsIDEsIDIwNiwgMTczLCAyNDcsIDMyLCAxLCAKLSAgICAyMzAsIDU0LCAyNDcsIDMyLCAxLCAyMzAsIDQ1LCAyNDcsIDMyLCAxLCAyMjMsIDI3LCAyNDcsIDMyLCAxLCAyMDYsIDE3OCwgCi0gICAgMjQ3LCAzMiwgMSwgMjM5LCA3NSwgMjQ3LCAzMiwgMSwgMjM5LCAxMCwgMjQ3LCAzMiwgMSwgMjExLCAxMDgsIDI0NywgMzIsIAotICAgIDEsIDIxMSwgMTA3LCAyNDcsIDMyLCAxLCAyMjIsIDIwNSwgMjQ3LCAzMiwgMSwgMjMxLCA4MywgMjQ3LCAzMiwgMSwgMjQ3LCAKLSAgICAxMjMsIDI0NywgMzIsIDEsIDIwNywgMjQ0LCAyNDcsIDMyLCAxLCAyMDYsIDE3NSwgMjQ3LCAzMiwgMSwgMjE1LCAxODYsIAotICAgIDI0NywgMzIsIDEsIDIyNSwgNTksIDI0NywgMzIsIDEsIDIyNSwgNTgsIDI0NywgMzIsIDEsIDIyNSwgNTcsIDI0NywgMzIsIAotICAgIDEsIDIyNSwgNTYsIDI0NywgMzIsIDEsIDIyNywgMjM3LCAyNDcsIDMyLCAxLCAyNDEsIDE5MCwgMjQ3LCAzMiwgMSwgMjA2LCAKLSAgICAxNzQsIDg0LCAyNDEsIDQ0LCAyMDksIDM1LCA4MiwgODQsIDI0MSwgNDQsIDE3LCAxMDUsIDg0LCAyNDEsIDQ0LCAxNywgCi0gICAgMTA4LCA4NCwgMjQxLCA0NCwgMTcsIDE0NywgODQsIDI0MSwgNDQsIDE3LCAxNDksIDg0LCAyNDEsIDQ0LCAxNywgMTcwLCAKLSAgICA4NCwgMjQxLCA0NCwgMTcsIDE5NSwgODQsIDI0MSwgNDQsIDE3LCAyMTMsIDExMSwgODQsIDI0MSwgNDQsIDE3LCAxOTksIAotICAgIDg0LCAyNDEsIDQ0LCAxNywgMjIyLCA2MywgODQsIDI0MSwgNDQsIDQyLCAyMDksIDE1MiwgODQsIDI0MSwgNDQsIDQyLCAKLSAgICAyMDcsIDE1MSwgODQsIDI0MSwgNDQsIDQyLCAyMDksIDUzLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTUzLCA4NCwgMjQxLCAKLSAgICA0NCwgNDIsIDI0MCwgMTgsIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA3NCwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDEwNSwgODQsIAotICAgIDI0MSwgNDQsIDQyLCAyNDEsIDEzNCwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDU4LCA4NCwgMjQxLCA0NCwgNDIsIDExOCwgCi0gICAgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjAsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMTI2LCAyMzYsIDExLCAKLSAgICA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAKLSAgICA4NCwgMjQxLCA0NCwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgCi0gICAgMzgsIDM3LCAxLCA2MywgMzgsIDM3LCAxLCAyNDgsIDE2MiwgMzgsIDM3LCAxLCAyMjksIDIwMSwgMzgsIDM3LCAxLCAyNDQsIAotICAgIDc1LCAzOCwgMzcsIDEsIDc0LCAzOCwgMzcsIDEsIDIwNiwgNTUsIDM4LCAzNywgMSwgMjAyLCA5MiwgMzgsIDM3LCAxLCAKLSAgICAyMzcsIDY3LCAzOCwgMzcsIDEsIDIwOSwgOTIsIDM4LCAzNywgMSwgNzUsIDM4LCAzNywgMSwgMTczLCAzOCwgMzcsIDEsIAotICAgIDI0MSwgMTIyLCAzOCwgMzcsIDEsIDI0MSwgMTAzLCAzOCwgMzcsIDEsIDI0MSwgOTIsIDM4LCAzNywgMSwgMjQxLCA3LCAzOCwgCi0gICAgMzcsIDEsIDc4LCAzOCwgMzcsIDEsIDIxOSwgMzQsIDM4LCAzNywgMSwgMjEzLCA0MywgMzgsIDM3LCAxLCAyMjgsIDIwOSwgCi0gICAgMzgsIDM3LCAxLCAyNDEsIDI4LCAzOCwgMzcsIDEsIDI0MSwgMTcsIDM4LCAzNywgMSwgMjA5LCAxODcsIDM4LCAzNywgMSwgCi0gICAgNjgsIDM4LCAzNywgMSwgMjQxLCAxMjUsIDM4LCAzNywgMSwgMjE4LCAxOTUsIDM4LCAzNywgMSwgMjI5LCAxMjksIDM4LCAKLSAgICAzNywgMSwgMjQxLCAxNTQsIDM4LCAzNywgMSwgMjQxLCAxOSwgMzgsIDM3LCAxLCAyNDYsIDE3MCwgMzgsIDM3LCAxLCAyMzEsIAotICAgIDgzLCAzOCwgMzcsIDEsIDIwNiwgMTc4LCAzOCwgMzcsIDEsIDI0MSwgMCwgMzgsIDM3LCAyMjEsIDQ0LCAxMDUsIDM4LCAzNywgCi0gICAgMjIxLCA0NCwgMTcwLCAzOCwgMzcsIDIyMSwgNDQsIDIwOSwgMTUyLCAzOCwgMzcsIDIyMSwgNDQsIDI0MCwgMTgsIDIzOCwgCi0gICAgMTcsIDEsIDI1MSwgNjcsIDIzOCwgMTcsIDEsIDI0OCwgMjU1LCAyMzgsIDE3LCAxLCAyMzgsIDc4LCAyMzgsIDE3LCAxLCAKLSAgICAyNDQsIDE5NCwgMjM4LCAxNywgMSwgMjUxLCA2MywgMjM4LCAxNywgMSwgMjE3LCAxMTcsIDIzOCwgMTcsIDEsIDIzMCwgCi0gICAgMTk2LCAyMzgsIDE3LCAxLCAyMzcsIDE1MCwgMjM4LCAxNywgMSwgMjA5LCA0OSwgMjM4LCAxNywgMSwgMjQxLCAxMzMsIAotICAgIDIzOCwgMTcsIDEsIDIyOCwgMTc2LCAyMzgsIDE3LCAxLCAyMjgsIDkwLCAyMzgsIDE3LCAxLCAyMjUsIDExNCwgMjM4LCAxNywgCi0gICAgMSwgMjIzLCA2MiwgMjM4LCAxNywgMSwgMjMwLCAxNTQsIDIzOCwgMTcsIDEsIDIwNiwgMTk2LCAyMzgsIDE3LCAxLCAyMTksIAotICAgIDE0NSwgMjM4LCAxNywgMSwgMjIyLCA1OCwgMjM4LCAxNywgMSwgMjE2LCAxOTYsIDIzOCwgMTcsIDEsIDIxNCwgMjE2LCAKLSAgICAyMzgsIDE3LCAxLCAyMDksIDE2NiwgMjM4LCAxNywgMSwgMjA0LCAxMCwgMjM4LCAxNywgMSwgMjQwLCA4OCwgMjM4LCAxNywgCi0gICAgMSwgMjMxLCA4NywgMjM4LCAxNywgMSwgMjM1LCAyNTIsIDIzOCwgMTcsIDEsIDIxOSwgMjIzLCAyMzgsIDE3LCAxLCAyMjIsIAotICAgIDY0LCAyMzYsIDExLCAzOCwgMjE4LCAyMzcsIDEsIDI1MCwgMjMxLCAzOCwgMjE4LCAyMzcsIDEsIDI0NywgMTYwLCAzOCwgCi0gICAgMjE4LCAyMzcsIDEsIDIzOCwgMjQ4LCAzOCwgMjE4LCAyMzcsIDEsIDI0MywgMTAxLCAzOCwgMjE4LCAyMzcsIDEsIDc0LCAKLSAgICAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgNjIsIDM4LCAyMTgsIDIzNywgMSwgMjQxLCAyNDcsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCA5OSwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NSwgMzgsIDIxOCwgMjM3LCAxLCA3NSwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMjksIDE1LCAzOCwgMjE4LCAyMzcsIDEsIDIyNywgMjA2LCAzOCwgMjE4LCAyMzcsIDEsIDIyNCwgMjM4LCAzOCwgMjE4LCAKLSAgICAyMzcsIDEsIDIyMiwgMjI4LCAzOCwgMjE4LCAyMzcsIDEsIDIwNSwgMTc1LCAzOCwgMjE4LCAyMzcsIDEsIDIxOSwgMjIsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjE2LCAxMjEsIDM4LCAyMTgsIDIzNywgMSwgMjEyLCAxNDIsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjA5LCAyNTAsIDM4LCAyMTgsIDIzNywgMSwgNjgsIDM4LCAyMTgsIDIzNywgMSwgMjQ2LCAxNTEsIDM4LCAyMTgsIDIzNywgCi0gICAgMSwgMjEyLCAyMzUsIDM4LCAyMTgsIDIzNywgMSwgMjEzLCA0NSwgMzgsIDIxOCwgMjM3LCAxLCAyMDIsIDIxNSwgMzgsIAotICAgIDIxOCwgMjM3LCAxLCAyMDMsIDMwLCAzOCwgMjE4LCAyMzcsIDEsIDc4LCAzOCwgMjE4LCAyMzcsIDEsIDIyMCwgMTgsIDM4LCAKLSAgICAyMTgsIDIzNywgMSwgMjQxLCAxNTQsIDM4LCAyMTgsIDIzNywgMSwgMTUyLCAzOCwgMjE4LCAyMzcsIDEsIDIwNywgMjU0LCAKLSAgICAzOCwgMjE4LCAyMzcsIDEsIDIwNiwgNDMsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCAzNCwgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIAotICAgIDMyLCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgNjYsIDM4LCAyMTgsIDIzNywgMSwgMjMxLCAxMTAsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCAyMTMsIDM4LCAyMTgsIDIzNywgMSwgMTk4LCAzOCwgMjE4LCAyMzcsIDEsIDIzNSwgMTcxLCAzOSwgMzgsIDIxOCwgCi0gICAgMjM3LCAxLCAyNTAsIDIzMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwMiwgOTksIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIyMiwgMjI4LCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgCi0gICAgMjA3LCAxOSwgMSwgMjUxLCA2LCAyMDcsIDE5LCAxLCAyNDgsIDEwNiwgMjA3LCAxOSwgMSwgMjM4LCAyMzYsIDIwNywgMTksIAotICAgIDEsIDIyOSwgMTQ0LCAyMDcsIDE5LCAxLCAyNDQsIDM3LCAyMDcsIDE5LCAxLCAyMzYsIDEzNiwgMjA3LCAxOSwgMSwgMjA0LCAKLSAgICAwLCAyMDcsIDE5LCAxLCAyMDIsIDgzLCAyMDcsIDE5LCAxLCAyMzYsIDQ1LCAyMDcsIDE5LCAxLCAyMDksIDEzMiwgMjA3LCAKLSAgICAxOSwgMSwgMjAyLCAyMzYsIDIwNywgMTksIDEsIDIzMCwgMjIsIDIwNywgMTksIDEsIDIxMiwgMjU1LCAyMDcsIDE5LCAxLCAKLSAgICAyMjgsIDI0LCAyMDcsIDE5LCAxLCAyMjQsIDI0NywgMjA3LCAxOSwgMSwgMjQzLCAyNTMsIDIwNywgMTksIDEsIDIyMSwgNDAsIAotICAgIDIwNywgMTksIDEsIDIwMiwgNiwgMjA3LCAxOSwgMSwgMjE0LCAyNDgsIDIwNywgMTksIDEsIDI1MSwgNTksIDIwNywgMTksIAotICAgIDEsIDIxNywgMTkxLCAyMDcsIDE5LCAxLCAyMTUsIDI3LCAyMDcsIDE5LCAxLCAyMTcsIDcwLCAyMDcsIDE5LCAxLCAyMTYsIAotICAgIDE3NSwgMjA3LCAxOSwgMSwgMjA5LCA5NiwgMjA3LCAxOSwgMSwgMjM4LCAxMTQsIDIwNywgMTksIDEsIDEzNSwgMjA3LCAxOSwgCi0gICAgMSwgNzUsIDIwNywgMTksIDEsIDY4LCAyMDcsIDE5LCAxLCAyMTEsIDExOSwgMjA3LCAxOSwgMjAzLCAyMzgsIDI0MywgMTQxLCAKLSAgICAzOCwgMjE4LCAyMzEsIDIsIDYzLCAzOCwgMjE4LCAyMzEsIDIsIDc1LCAzOCwgMjE4LCAyMzEsIDIsIDY4LCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDE3MywgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIDIwOSwgMzgsIDIxOCwgMjMxLCAyLCAyMzksIDgsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMjM3LCAyMzAsIDM4LCAyMTgsIDIzMSwgMiwgMjAzLCAxODIsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCA5MiwgCi0gICAgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE4MSwgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE0MSwgMzgsIDIxOCwgMjMxLCAyLCAKLSAgICAyMTAsIDIyLCAzOCwgMjE4LCAyMzEsIDIsIDIwNywgMjAzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMjEyLCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDI0MywgMjMzLCAzOCwgMjE4LCAyMzEsIDIsIDI0MiwgNDIsIDM4LCAyMTgsIDIzMSwgMiwgMjA5LCAxMDgsIAotICAgIDM4LCAyMTgsIDIzMSwgMiwgMTg1LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgMzIsIDM4LCAyMTgsIDIzMSwgMiwgMjQwLCAKLSAgICAxMDgsIDM4LCAyMTgsIDIzMSwgMiwgMjAxLCAyMDEsIDM4LCAyMTgsIDIzMSwgMiwgMjIxLCA4NCwgMzgsIDIxOCwgMjMxLCAKLSAgICAyLCAxOTIsIDM4LCAyMTgsIDIzMSwgMiwgMjI0LCAxNTUsIDM4LCAyMTgsIDIzMSwgMiwgMjIzLCAyNDYsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMTk4LCAzOCwgMjE4LCAyMzEsIDIsIDIwNiwgODYsIDM4LCAyMTgsIDIzMSwgMiwgMjA1LCAyMzAsIDM4LCAKLSAgICAyMTgsIDIzMSwgMiwgMjE2LCAyMjAsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAxNDUsIDM4LCAyMTgsIDIzMSwgMiwgMjI4LCAKLSAgICAxMTMsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAzNiwgMzgsIDIxOCwgMjMxLCAyLCAyMDIsIDExNiwgMzgsIDIxOCwgMjMxLCAKLSAgICAyLCAyMTMsIDkwLCAzOCwgMjE4LCAyMzEsIDIsIDIxMSwgMTY0LCAzOCwgMjE4LCAyMzEsIDIsIDE1MiwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAyNTAsIDI4LCAzOCwgMjE4LCAyMzEsIDIsIDI1MCwgMjcsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNiwgMzgsIAotICAgIDIxOCwgMjMxLCAyLCAyMDMsIDE1MywgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIDE5MCwgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIAotICAgIDE4OSwgMzgsIDIxOCwgMjMxLCAyLCAyNDksIDgsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCAxNDQsIDM4LCAyMTgsIDIzMSwgCi0gICAgMjAzLCAyMzgsIDI0MywgMTQxLCAzOCwgMjE4LCAyMzEsIDQyLCAxMDUsIDM4LCAyMTgsIDIzMSwgNDIsIDEwOCwgMzgsIAotICAgIDIxOCwgMjMxLCA0MiwgMjA5LCAxNTIsIDM4LCAyMTgsIDIzMSwgNDIsIDIwNywgMTUxLCAzOCwgMjE4LCAyMzEsIDQyLCAKLSAgICAyMzYsIDExLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc1LCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc0LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAxNjMsIDYzLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDI1MSwgNzMsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzgsIDI0NCwgMTcsIDYsIAotICAgIDEsIDE2MywgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDc1LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgCi0gICAgNzQsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCA2MywgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDI1MSwgNzMsIDI0NCwgCi0gICAgMTcsIDYsIDEsIDIxMiwgMjI4LCA3OCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDIyMCwgMTgsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI1MCwgOCwgMjQ0LCAxNywgNiwgMSwgMjE5LCAxOTUsIDI0NCwgMTcsIDYsIDEsIDIwMywgMjE3LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyMDMsIDQ5LCAyNDQsIDE3LCA2LCAxLCAyMzcsIDE3MSwgMjQ0LCAxNywgNiwgMSwgMjE5LCAyMywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQ4LCAxNTAsIDI0NCwgMTcsIDYsIDEsIDIwOSwgMTc2LCAyNDQsIDE3LCA2LCAxLCAyNDQsIDYxLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDYsIDE2NiwgMjQ0LCAxNywgNiwgMSwgMjMwLCAxNTksIDI0NCwgMTcsIDYsIDEsIDIyOSwgMjA4LCAyNDQsIDE3LCA2LCAKLSAgICAxLCAyMzgsIDIxMSwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxNTQsIDI0NCwgMTcsIDYsIDEsIDIwNiwgNTAsIDI0NCwgMTcsIDYsIAotICAgIDEsIDI0MCwgMjQzLCAyNDQsIDE3LCA2LCAxLCAyMDksIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE3LCAyNDQsIDE3LCA2LCAKLSAgICAxLCAyMDIsIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDcsIDI0NCwgMTcsIDYsIDEsIDIwMiwgNzAsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0MSwgMjgsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTIyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDEwMywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQxLCA5MiwgMjQ0LCAxNywgNiwgMSwgMjQxLCA3OCwgMjQ0LCAxNywgNiwgMSwgMjIwLCA1NywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQwLCAyMjAsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDUsIDEsIAotICAgIDE2MywgNjMsIDI0NCwgMTcsIDUsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNSwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAKLSAgICA3NCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKLSAgICAxNywgNSwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjUwLCA4LCAyNDQsIDE3LCA1LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNSwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDUsIDEsIAotICAgIDIwMywgNDksIDI0NCwgMTcsIDUsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA1LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNSwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDUsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA1LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNSwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDUsIAotICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNSwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDUsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDUsIAotICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNywgMjQ0LCAxNywgNSwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQxLCAyOCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDEsIDkyLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDAsIDIyMCwgMjEzLCA1MCwgMSwgMjE5LCAyMCwgMjEzLCA1MCwgMSwgMjA4LCAxMzEsIDIxMywgNTAsIDEsIDIyOSwgOTYsIAotICAgIDIxMywgNTAsIDEsIDI0MCwgNTMsIDIxMywgNTAsIDEsIDIwOSwgNjUsIDIxMywgNTAsIDEsIDIxMiwgMTMsIDIxMywgNTAsIAotICAgIDEsIDIxMCwgMTkwLCAyMTMsIDUwLCAxLCAyNDYsIDkwLCAyMTMsIDUwLCAxLCAyMDMsIDUxLCAyMTMsIDUwLCAxLCAyMzYsIAotICAgIDksIDIxMywgNTAsIDEsIDI0OCwgODUsIDIxMywgNTAsIDEsIDI0NCwgNzQsIDIxMywgNTAsIDEsIDIzOCwgMjUwLCAyMTMsIAotICAgIDUwLCAxLCAyMDUsIDE3MCwgMjEzLCA1MCwgMSwgMjA5LCA3MSwgMjEzLCA1MCwgMSwgMjAyLCAxNSwgMjEzLCA1MCwgMSwgCi0gICAgMjI1LCAxOCwgMjEzLCA1MCwgMSwgMjMwLCA4MCwgMjEzLCA1MCwgMSwgMjAzLCAyNTQsIDIxMywgNTAsIDEsIDIzNywgMTU5LCAKLSAgICAyMTMsIDUwLCAxLCAyMjcsIDMzLCAyMTMsIDUwLCAxLCAyMjQsIDExMSwgMjEzLCA1MCwgMSwgMjMxLCA5MCwgMjEzLCA1MCwgCi0gICAgMSwgMjQxLCAxNTIsIDIxMywgNTAsIDEsIDI1MCwgNzUsIDIxMywgNTAsIDEsIDI1MSwgMTEzLCAyMTMsIDUwLCAxLCAyMjAsIAotICAgIDMxLCAyMTMsIDUwLCAxLCAyMDMsIDI0MSwgMjEzLCA1MCwgMSwgMjE5LCAyMTEsIDIxMywgNTAsIDEsIDI1MSwgNzMsIDIxMywgCi0gICAgNTAsIDEsIDIxNSwgMjI0LCAyMTMsIDUwLCAxLCAyMjEsIDQwLCAyMTMsIDUwLCAxLCAyNDEsIDE3MiwgMjEzLCA1MCwgMSwgCi0gICAgMjUxLCA3OCwgMjEzLCA1MCwgMSwgMjM1LCAxNjIsIDIxMywgNTAsIDEsIDIwNiwgMjI0LCAyMTMsIDUwLCAxLCAyMjAsIDk1LCAKLSAgICAyMTMsIDUwLCAxLCAyMjAsIDEwLCAyMTMsIDUwLCAxLCAyMjAsIDU1LCAyMTMsIDUwLCAxLCAyNTAsIDExLCAyMTMsIDUwLCAKLSAgICAxLCAyNTAsIDEyMSwgMjEzLCA1MCwgMSwgMjE5LCAyNDQsIDIxMywgNTAsIDEsIDI1MSwgNTQsIDIxMywgNTAsIDEsIDI0MSwgCi0gICAgMjEsIDIxMywgNTAsIDEsIDI1MCwgOTksIDIxMywgNTAsIDEsIDI0MSwgMTgzLCAyMTMsIDUwLCAxLCAyMzUsIDE3MCwgMjEzLCAKLSAgICA1MCwgMSwgMjAzLCAxNiwgMjE5LCAyMjUsIDEsIDI1MSwgMzAsIDIxOSwgMjI1LCAxLCAyNDksIDMyLCAyMTksIDIyNSwgMSwgCi0gICAgMjEwLCAyMiwgMjE5LCAyMjUsIDEsIDIzMCwgMTgxLCAyMTksIDIyNSwgMSwgMjAzLCAxODIsIDIxOSwgMjI1LCAxLCAyMjksIAotICAgIDE0NCwgMjE5LCAyMjUsIDEsIDI0NCwgNjAsIDIxOSwgMjI1LCAxLCAyMTYsIDIyMCwgMjE5LCAyMjUsIDEsIDIxNSwgMzYsIAotICAgIDIxOSwgMjI1LCAxLCAyMTMsIDUsIDIxOSwgMjI1LCAxLCAyNDQsIDEsIDIxOSwgMjI1LCAxLCAyNDcsIDcsIDIxOSwgMjI1LCAKLSAgICAxLCAyMzksIDgsIDIxOSwgMjI1LCAxLCAyNDAsIDEwOCwgMjE5LCAyMjUsIDEsIDIxNywgMTI0LCAyMTksIDIyNSwgMSwgCi0gICAgMjMwLCAzOCwgMjE5LCAyMjUsIDEsIDIyOCwgMTA4LCAyMTksIDIyNSwgMSwgMjI0LCAxMjQsIDIxOSwgMjI1LCAxLCAyMjEsIAotICAgIDI0LCAyMTksIDIyNSwgMSwgMjA0LCA3MCwgMjE5LCAyMjUsIDEsIDE1MiwgMjE5LCAyMjUsIDEsIDE5OCwgMjE5LCAyMjUsIAotICAgIDEsIDYzLCAyMTksIDIyNSwgMSwgNzQsIDIxOSwgMjI1LCAxLCA3NSwgMjE5LCAyMjUsIDEsIDc4LCAyMTksIDIyNSwgMSwgCi0gICAgNjgsIDIxOSwgMjI1LCAxLCAyNTIsIDI1LCAyMTksIDIyNSwgMSwgMjQxLCAxNjEsIDIxOSwgMjI1LCAxLCAyMjAsIDE4LCAKLSAgICAyMTksIDIyNSwgMTcsIDIwMiwgODQsIDIxOSwgMjI1LCAxNywgMTA1LCAyMTksIDIyNSwgMTcsIDEwOCwgMjE5LCAyMjUsIAotICAgIDE3LCAxNDcsIDIxOSwgMjI1LCAxNywgMTQ5LCAyMTksIDIyNSwgMTcsIDE3MCwgMjE5LCAyMjUsIDE3LCAxOTUsIDIxOSwgCi0gICAgMjI1LCAxNywgMjEzLCAxMTEsIDIxOSwgMjI1LCAxNywgMTk5LCAyMTksIDIyNSwgMTcsIDIyMiwgNjMsIDI0MSwgMTE4LCAxLCAKLSAgICA2MywgMjQxLCAxMTgsIDEsIDI0OCwgMTYyLCAyNDEsIDExOCwgMSwgMjQ2LCAyMzgsIDI0MSwgMTE4LCAxLCAyNDYsIDE3MCwgCi0gICAgMjQxLCAxMTgsIDEsIDI0NCwgNzUsIDI0MSwgMTE4LCAxLCAyMjMsIDE3LCAyNDEsIDExOCwgMSwgMjQzLCAyNDgsIDI0MSwgCi0gICAgMTE4LCAxLCAyNDEsIDE0NSwgMjQxLCAxMTgsIDEsIDc0LCAyNDEsIDExOCwgMSwgMjQwLCA2MCwgMjQxLCAxMTgsIDEsIAotICAgIDIzOCwgMTkwLCAyNDEsIDExOCwgMSwgMjM4LCA1MiwgMjQxLCAxMTgsIDEsIDIzNywgNjcsIDI0MSwgMTE4LCAxLCA3NSwgCi0gICAgMjQxLCAxMTgsIDEsIDIzMCwgMTYxLCAyNDEsIDExOCwgMSwgMjI5LCAyMDEsIDI0MSwgMTE4LCAxLCAyMjcsIDIzNCwgMjQxLCAKLSAgICAxMTgsIDEsIDIyNywgNzMsIDI0MSwgMTE4LCAxLCAyMjUsIDIwLCAyNDEsIDExOCwgMSwgMjIyLCAyNDAsIDI0MSwgMTE4LCAKLSAgICAxLCAyMDEsIDIwMSwgMjQxLCAxMTgsIDEsIDIyMiwgNDEsIDI0MSwgMTE4LCAxLCA3OCwgMjQxLCAxMTgsIDEsIDIxOSwgMzQsIAotICAgIDI0MSwgMTE4LCAxLCAyMTcsIDEwNiwgMjQxLCAxMTgsIDEsIDIxNiwgMTU4LCAyNDEsIDExOCwgMSwgMjE1LCAxODAsIDI0MSwgCi0gICAgMTE4LCAxLCAyMTQsIDE3NywgMjQxLCAxMTgsIDEsIDIxMywgNDMsIDI0MSwgMTE4LCAxLCAyMDksIDE4NywgMjQxLCAxMTgsIAotICAgIDEsIDIwOSwgOTIsIDI0MSwgMTE4LCAxLCA2OCwgMjQxLCAxMTgsIDEsIDIwNiwgNTUsIDI0MSwgMTE4LCAxLCAyMDMsIDE3NiwgCi0gICAgMjQxLCAxMTgsIDEsIDIwMywgMTI0LCAyNDEsIDExOCwgMSwgMjAyLCA5MiwgMjQxLCAxMTgsIDEsIDIwMiwgNzEsIDI0MSwgCi0gICAgMTE4LCAxLCAyMzgsIDEwNSwgMjQxLCAxMTgsIDEsIDIzOCwgMTExLCAyNDEsIDExOCwgMSwgMjI5LCAxMjksIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDEsIDI1MSwgMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ4LCAxMDgsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAotICAgIDIzOCwgNjksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NCwgMTQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDE3MSwgCi0gICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgMTgzLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAxLCAyMDIsIDY1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDksIDIxMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjQ2LCAxOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgMjI0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDgwLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIyMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA5MCwgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMSwgMjI4LCAxNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAyMzUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAotICAgIDIwMywgMTcyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDIsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgMzksIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDI0MCwgMjQ3LCAxNCwgMjUxLCAKLSAgICAzMSwgMSwgMjI2LCAxOTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzNywgMTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNywgCi0gICAgMTA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNTAsIDE3NywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxMDcsIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDUsIDYzLCAyNDcsIDE0LCAyNTEsIDMxLCAKLSAgICAxLCAyMjUsIDEwMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAxMTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMSwgCi0gICAgMTUxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI0MCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA3MywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNjIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMCwgMzEsIDI0NywgMTQsIDI1MSwgMzEsIAotICAgIDEsIDIwNywgMTI1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDAsIDgzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI1MywgCi0gICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNzYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOSwgOSwgMjQ3LCAxNCwgMjUxLCAKLSAgICAzMSwgMSwgMjM4LCA5NSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE2LCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgCi0gICAgOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwNSwgMjMyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDgsIDE5MywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjEyLCAyMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTk0LCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyNDUsIDY0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDcsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMywgCi0gICAgNTYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOCwgMTAyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDYyLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAyNDYsIDQ5LCA4MiwgMjksIDM0LCAyLCAyNTEsIDIzMSwgMjksIDM0LCAyLCAyNTEsIDIzMCwgMjksIDM0LCAKLSAgICAyLCAyNTEsIDIyOSwgMjksIDM0LCAyLCAyNTEsIDIyOCwgMjksIDM0LCAyLCAyNTEsIDIyNywgMjksIDM0LCAyLCAyNTEsIAotICAgIDIyNiwgMjksIDM0LCAyLCAyNTEsIDIyNSwgMjksIDM0LCAyLCAyNTEsIDIyNCwgMjksIDM0LCAyLCAyNTEsIDIyMywgMjksIAotICAgIDM0LCAyLCAyNTEsIDIyMiwgMjksIDM0LCAyLCAyNTEsIDIyMSwgMjksIDM0LCAyLCAyNTEsIDIyMCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIxOSwgMjksIDM0LCAyLCAyNTEsIDIxOCwgMjksIDM0LCAyLCAyNTEsIDIxNywgMjksIDM0LCAyLCAyNTEsIDIxNiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIxNSwgMjksIDM0LCAyLCAyNTEsIDIxNCwgMjksIDM0LCAyLCAyNTEsIDIxMywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIxMiwgMjksIDM0LCAyLCAyNTEsIDIxMSwgMjksIDM0LCAyLCAyNTEsIDIxMCwgMjksIDM0LCAyLCAyNTEsIDIwOSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIwOCwgMjksIDM0LCAyLCAyNTEsIDIwNywgMjksIDM0LCAyLCAyNTEsIDIwNiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIwNSwgMjksIDM0LCAyLCAyNTQsIDIzOSwgMjksIDM0LCAyLCAyNTEsIDIwNCwgMjksIDM0LCAyLCAyNTEsIDIwMywgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIwMiwgMjksIDM0LCAyLCAyNTEsIDIwMSwgMjksIDM0LCAyLCAyNTEsIDIwMCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE5OSwgMjksIDM0LCAyLCAyNTEsIDE5OCwgMjksIDM0LCAyLCAyNTEsIDE5NywgMjksIDM0LCAyLCAyNTEsIDE5NiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE5NSwgMjksIDM0LCAyLCAyNTEsIDE5NCwgMjksIDM0LCAyLCAyNTEsIDE5MywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE5MiwgMjksIDM0LCAyLCAyNTEsIDE5MSwgMjksIDM0LCAyLCAyNTEsIDE5MCwgMjksIDM0LCAyLCAyNTEsIDE4OSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE4OCwgMjksIDM0LCAyLCAyNTEsIDE4NywgMjksIDM0LCAyLCAyNTEsIDE4NiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE4NSwgMjksIDM0LCAyLCAyNTEsIDE4NCwgMjksIDM0LCAyLCAyNTEsIDE4MywgMjksIDM0LCAyLCAyNTEsIDE4MiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE4MSwgMjksIDM0LCAyLCAyNTEsIDE4MCwgMjksIDM0LCAyLCAyNTEsIDE3OSwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE3OCwgMjksIDM0LCAyLCAyNTEsIDE3NywgMjksIDM0LCAyLCAyNTEsIDE3NiwgMjksIDM0LCAyLCAyNTEsIDE3NSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE3NCwgMjksIDM0LCAyLCAyNTEsIDE3MywgMjksIDM0LCAyLCAyNTEsIDE3MiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE3MSwgMjksIDM0LCAyLCAyNTEsIDE3MCwgMjksIDM0LCAyLCAyNTEsIDE2OSwgMjksIDM0LCAyLCAyNTEsIDE2OCwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE2NywgMjksIDM0LCAyLCAyNTEsIDE2NiwgMjksIDM0LCAyLCAyNTEsIDE2NSwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE2NCwgMjksIDM0LCAyLCAyNTEsIDE2MywgMjksIDM0LCAyLCAyNTEsIDE2MiwgMjksIDM0LCAyLCAyNTQsIDE1MiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE2MSwgMjksIDM0LCAyLCAyNTEsIDE2MCwgMjksIDM0LCAyLCAyNTQsIDExNywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE1OSwgMjksIDM0LCAyLCAyNTEsIDE1OCwgMjksIDM0LCAyLCAyNTEsIDE1NywgMjksIDM0LCAyLCAyNTEsIDE1NiwgCi0gICAgMjksIDM0LCAyLCAyNTQsIDEwNCwgMjksIDM0LCAyLCAyNTEsIDE1NSwgMjksIDM0LCAyLCAyNTEsIDE1NCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE1MywgMjksIDM0LCAyLCAyNTEsIDE1MiwgMjksIDM0LCAyLCAyNTEsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE3NiwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE3NSwgMjksIDM0LCAyLCAyNTMsIDE3NCwgMjksIDM0LCAyLCAyNTMsIDE3MywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE3MiwgMjksIDM0LCAyLCAyNTMsIDE3MSwgMjksIDM0LCAyLCAyNTMsIDE3MCwgMjksIDM0LCAyLCAyNTMsIDE2OSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE2NywgMjksIDM0LCAyLCAyNTMsIDE2NiwgMjksIDM0LCAyLCAyNTMsIDE2NSwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE2NCwgMjksIDM0LCAyLCAyNTMsIDE2MywgMjksIDM0LCAyLCAyNTMsIDE2MiwgMjksIDM0LCAyLCAyNTMsIDE2MCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE1OSwgMjksIDM0LCAyLCAyNTMsIDE1OCwgMjksIDM0LCAyLCAyNTMsIDE1NywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE1NiwgMjksIDM0LCAyLCAyNTMsIDE1NSwgMjksIDM0LCAyLCAyNTMsIDE1NCwgMjksIDM0LCAyLCAyNTMsIDE1MywgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE1MiwgMjksIDM0LCAyLCAyNTMsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE1MCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE0OSwgMjksIDM0LCAyLCAyNTMsIDE0OCwgMjksIDM0LCAyLCAyNTMsIDE0NywgMjksIDM0LCAyLCAyNTMsIDE0NiwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE0NSwgMjksIDM0LCAyLCAyNTMsIDE0NCwgMjksIDM0LCAyLCAyNTMsIDE0MywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE0MiwgMjksIDM0LCAyLCAyNTMsIDE0MCwgMjksIDM0LCAyLCAyNTMsIDEzOSwgMjksIDM0LCAyLCAyNTMsIDEzOCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEzNCwgMjksIDM0LCAyLCAyNTMsIDEzMywgMjksIDM0LCAyLCAyNTMsIDEzMiwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEzMSwgMjksIDM0LCAyLCAyNTMsIDEyNywgMjksIDM0LCAyLCAyNTMsIDEyNiwgMjksIDM0LCAyLCAyNTMsIDEyNSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEyNCwgMjksIDM0LCAyLCAyNTMsIDEyMywgMjksIDM0LCAyLCAyNTMsIDEyMiwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEyMSwgMjksIDM0LCAyLCAyNTMsIDEyMCwgMjksIDM0LCAyLCAyNTMsIDExOSwgMjksIDM0LCAyLCAyNTMsIDExOCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDExNywgMjksIDM0LCAyLCAyNTMsIDExNiwgMjksIDM0LCAyLCAyNTMsIDExNSwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDExNCwgMjksIDM0LCAyLCAyNTMsIDExMywgMjksIDM0LCAyLCAyNTMsIDExMiwgMjksIDM0LCAyLCAyNTMsIDExMSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDExMCwgMjksIDM0LCAyLCAyNTMsIDEwOSwgMjksIDM0LCAyLCAyNTMsIDEwOCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEwNywgMjksIDM0LCAyLCAyNTMsIDEwNiwgMjksIDM0LCAyLCAyNTMsIDEwNSwgMjksIDM0LCAyLCAyNTMsIDEwMywgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEwMiwgMjksIDM0LCAyLCAyNTMsIDEwMSwgMjksIDM0LCAyLCAyNTMsIDEwMCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDk5LCAyOSwgMzQsIDIsIDI1MywgOTcsIDI5LCAzNCwgMiwgMjUzLCA5NiwgMjksIDM0LCAyLCAyNTMsIDk1LCAyOSwgCi0gICAgMzQsIDIsIDI1MywgOTQsIDI5LCAzNCwgMiwgMjUzLCA5MiwgMjksIDM0LCAyLCAyNTMsIDkxLCAyOSwgMzQsIDIsIDI1MywgCi0gICAgOTAsIDI5LCAzNCwgMiwgMjUzLCA1NiwgMjksIDM0LCAyLCAyNTMsIDU0LCAyOSwgMzQsIDIsIDI1MywgNTIsIDI5LCAzNCwgCi0gICAgMiwgMjUzLCA1MCwgMjksIDM0LCAyLCAyNTMsIDQ4LCAyOSwgMzQsIDIsIDI1MywgNDYsIDI5LCAzNCwgMiwgMjUzLCA0NCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDQyLCAyOSwgMzQsIDIsIDI1MywgNDAsIDI5LCAzNCwgMiwgMjUzLCAzOCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDM2LCAyOSwgMzQsIDIsIDI1MywgMzMsIDI5LCAzNCwgMiwgMjUzLCAzMSwgMjksIDM0LCAyLCAyNTMsIDI5LCAyOSwgCi0gICAgMzQsIDIsIDI1MywgMjcsIDI5LCAzNCwgMiwgMjUzLCAyNSwgMjksIDM0LCAyLCAyNTMsIDIzLCAyOSwgMzQsIDIsIDI1MywgCi0gICAgMjEsIDI5LCAzNCwgMiwgMjUzLCAxOSwgMjksIDM0LCAyLCAyNTIsIDE5MywgMjksIDM0LCAyLCAyNTIsIDE5MiwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDE5MSwgMjksIDM0LCAyLCAyNTIsIDE5MCwgMjksIDM0LCAyLCAyNTIsIDE4OSwgMjksIDM0LCAyLCAyNTIsIAotICAgIDE4OCwgMjksIDM0LCAyLCAyNTIsIDE4NiwgMjksIDM0LCAyLCAyNTIsIDE4NSwgMjksIDM0LCAyLCAyNTIsIDE4NCwgMjksIAotICAgIDM0LCAyLCAyNTIsIDE4MywgMjksIDM0LCAyLCAyNTIsIDE4MiwgMjksIDM0LCAyLCAyNTIsIDE4MSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE3OSwgMjksIDM0LCAyLCAyNTIsIDE3OCwgMjksIDM0LCAyLCAyNTIsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDE3MywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDE3MCwgMjksIDM0LCAyLCAyNTIsIDE2OSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE2OCwgMjksIDM0LCAyLCAyNTIsIDE2NywgMjksIDM0LCAyLCAyNTIsIDE2NiwgMjksIDM0LCAyLCAyNTIsIDE2NSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE2NCwgMjksIDM0LCAyLCAyNTIsIDE2MywgMjksIDM0LCAyLCAyNTIsIDE2MiwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE2MSwgMjksIDM0LCAyLCAyNTIsIDE2MCwgMjksIDM0LCAyLCAyNTIsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDE1OCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE1NywgMjksIDM0LCAyLCAyNTIsIDE1NiwgMjksIDM0LCAyLCAyNTIsIDE1NSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE1NCwgMjksIDM0LCAyLCAyNTIsIDE1MywgMjksIDM0LCAyLCAyNTIsIDE1MiwgMjksIDM0LCAyLCAyNTIsIDE1MSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE1MCwgMjksIDM0LCAyLCAyNTIsIDE0OSwgMjksIDM0LCAyLCAyNTIsIDE0OCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE0NywgMjksIDM0LCAyLCAyNTIsIDE0NiwgMjksIDM0LCAyLCAyNTIsIDE0NSwgMjksIDM0LCAyLCAyNTIsIDE0NCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE0MywgMjksIDM0LCAyLCAyNTIsIDE0MiwgMjksIDM0LCAyLCAyNTIsIDE0MSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE0MCwgMjksIDM0LCAyLCAyNTIsIDEzOSwgMjksIDM0LCAyLCAyNTIsIDEzOCwgMjksIDM0LCAyLCAyNTIsIDEzNywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEzNiwgMjksIDM0LCAyLCAyNTIsIDEzNSwgMjksIDM0LCAyLCAyNTIsIDEzNCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEzMywgMjksIDM0LCAyLCAyNTIsIDEzMiwgMjksIDM0LCAyLCAyNTIsIDEzMSwgMjksIDM0LCAyLCAyNTIsIDEzMCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEyOSwgMjksIDM0LCAyLCAyNTIsIDEyOCwgMjksIDM0LCAyLCAyNTIsIDEyNywgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEyNiwgMjksIDM0LCAyLCAyNTIsIDEyNSwgMjksIDM0LCAyLCAyNTIsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDEyMywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEyMiwgMjksIDM0LCAyLCAyNTIsIDEyMSwgMjksIDM0LCAyLCAyNTIsIDEyMCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDExOSwgMjksIDM0LCAyLCAyNTIsIDExOCwgMjksIDM0LCAyLCAyNTIsIDExNywgMjksIDM0LCAyLCAyNTIsIDExNiwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDExNSwgMjksIDM0LCAyLCAyNTIsIDExNCwgMjksIDM0LCAyLCAyNTIsIDExMywgMjksIDM0LCAyLCAKLSAgICAyNTIsIDExMiwgMjksIDM0LCAyLCAyNTIsIDExMSwgMjksIDM0LCAyLCAyNTIsIDExMCwgMjksIDM0LCAyLCAyNTIsIDEwOSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEwOCwgMjksIDM0LCAyLCAyNTIsIDEwNywgMjksIDM0LCAyLCAyNTIsIDEwNiwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEwNSwgMjksIDM0LCAyLCAyNTIsIDEwNCwgMjksIDM0LCAyLCAyNTIsIDEwMywgMjksIDM0LCAyLCAyNTIsIDEwMiwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEwMSwgMjksIDM0LCAyLCAyNTIsIDEwMCwgMjksIDM0LCAyLCAyNTIsIDk5LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgOTgsIDI5LCAzNCwgMiwgMjUyLCA5NywgMjksIDM0LCAyLCAyNTIsIDk2LCAyOSwgMzQsIDIsIDI1MiwgOTUsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA5NCwgMjksIDM0LCAyLCAyNTIsIDkzLCAyOSwgMzQsIDIsIDI1MiwgOTIsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA5MSwgMjksIDM0LCAyLCAyNTIsIDkwLCAyOSwgMzQsIDIsIDI1MiwgODksIDI5LCAzNCwgMiwgMjUyLCA4OCwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDg3LCAyOSwgMzQsIDIsIDI1MiwgODYsIDI5LCAzNCwgMiwgMjUyLCA4NSwgMjksIDM0LCAyLCAyNTIsIDg0LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgODMsIDI5LCAzNCwgMiwgMjUyLCA4MiwgMjksIDM0LCAyLCAyNTIsIDgxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgODAsIDI5LCAzNCwgMiwgMjUyLCA3OSwgMjksIDM0LCAyLCAyNTIsIDc4LCAyOSwgMzQsIDIsIDI1MiwgNzcsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA3NiwgMjksIDM0LCAyLCAyNTIsIDc1LCAyOSwgMzQsIDIsIDI1MiwgNzQsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA3MywgMjksIDM0LCAyLCAyNTIsIDcyLCAyOSwgMzQsIDIsIDI1MiwgNzEsIDI5LCAzNCwgMiwgMjUyLCA3MCwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDY5LCAyOSwgMzQsIDIsIDI1MiwgNjgsIDI5LCAzNCwgMiwgMjUyLCA2NywgMjksIDM0LCAyLCAyNTIsIDY2LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgNjUsIDI5LCAzNCwgMiwgMjUyLCA2NCwgMjksIDM0LCAyLCAyNTIsIDYzLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgNjIsIDI5LCAzNCwgMiwgMjUyLCA2MSwgMjksIDM0LCAyLCAyNTIsIDYwLCAyOSwgMzQsIDIsIDI1MiwgNTksIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA1OCwgMjksIDM0LCAyLCAyNTIsIDU3LCAyOSwgMzQsIDIsIDI1MiwgNTYsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA1NSwgNjMsIDI5LCAzNCwgMiwgMjUyLCA1NCwgMjQ5LCAyNTUsIDI5LCAzNCwgMiwgMjUyLCA1MywgMjQ1LCA1MSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIDUxLCAyNDAsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDUwLCAKLSAgICAyMzcsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDQ5LCAyMzAsIDE4NCwgMjksIDM0LCAyLCAyNTIsIDQ4LCAyMzAsIDU0LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNDcsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDQ2LCAyMjgsIDExOCwgMjksIDM0LCAyLCAyNTIsIDQ1LCAKLSAgICAyMjgsIDExNywgMjksIDM0LCAyLCAyNTIsIDQ0LCAyMjgsIDExNiwgMjksIDM0LCAyLCAyNTIsIDQzLCAyMjgsIDExNSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDQyLCAyMDQsIDE0NCwgMjksIDM0LCAyLCAyNTIsIDQxLCAyMDMsIDE5NiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDQwLCAyMDMsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDM5LCAyMjAsIDM2LCAyOSwgMzQsIDIsIDI1MiwgMzgsIDI1MSwgMTQ3LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMzcsIDI0OCwgMTk5LCAyOSwgMzQsIDIsIDI1MiwgMzYsIDI0NCwgMTIyLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMzUsIDI0MCwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMzQsIDIzMCwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMzMsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCAzMiwgMjksIDM0LCAyLCAyNTIsIDMxLCAyOSwgMzQsIDIsIDI1MiwgMzAsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICAyOSwgMjksIDM0LCAyLCAyNTIsIDI4LCAyOSwgMzQsIDIsIDI1MiwgMjcsIDI5LCAzNCwgMiwgMjUyLCAyNiwgMjQ1LCA1OCwgCi0gICAgNCwgNjMsIDI0NSwgNTgsIDQsIDc0LCAyNDUsIDU4LCA0LCA3NSwgMjQ1LCA1OCwgNCwgNzgsIDI0NSwgNTgsIDQsIDY4LCAKLSAgICAyNDUsIDU4LCA0LCAyMzAsIDE4MSwgMjQ1LCA1OCwgNCwgMjMwLCAxMDEsIDI0NSwgNTgsIDQsIDE3MywgMjQ1LCA1OCwgNCwgCi0gICAgMjI5LCAyMDEsIDI0NSwgNTgsIDQsIDIyOSwgMTAwLCAyNDUsIDU4LCA0LCAyMjksIDI2LCAyNDUsIDU4LCA0LCAyMjgsIAotICAgIDIwOSwgMjQ1LCA1OCwgNCwgMjI4LCAxMTMsIDI0NSwgNTgsIDQsIDIyNywgMjM0LCAyNDUsIDU4LCA0LCAyMjcsIDE0OCwgCi0gICAgMjQ1LCA1OCwgNCwgMjI3LCA0OSwgMjQ1LCA1OCwgNCwgMjI2LCAyMzksIDI0NSwgNTgsIDQsIDE5MiwgMjQ1LCA1OCwgNCwgCi0gICAgMjI1LCAyMCwgMjQ1LCA1OCwgNCwgMjI0LCAxNTUsIDI0NSwgNTgsIDQsIDIyNCwgODIsIDI0NSwgNTgsIDQsIDIyMywgMjQ2LCAKLSAgICAyNDUsIDU4LCA0LCAyMDEsIDIwMSwgMjQ1LCA1OCwgNCwgMjIyLCAyNDAsIDI0NSwgNTgsIDQsIDIyMiwgMTAwLCAyNDUsIAotICAgIDU4LCA0LCAyMjEsIDE5MSwgMjQ1LCA1OCwgNCwgMjIxLCA4NCwgMjQ1LCA1OCwgNCwgMTg1LCAyNDUsIDU4LCA0LCAyMTksIAotICAgIDM0LCAyNDUsIDU4LCA0LCAyMTgsIDE2NywgMjQ1LCA1OCwgNCwgMjE4LCA2OSwgMjQ1LCA1OCwgNCwgMjE3LCAxOTEsIDI0NSwgCi0gICAgNTgsIDQsIDIxNiwgMjIwLCAyNDUsIDU4LCA0LCAyMTYsIDE1OCwgMjQ1LCA1OCwgNCwgMjE2LCA1NywgMjQ1LCA1OCwgNCwgCi0gICAgMjE1LCAyMjcsIDI0NSwgNTgsIDQsIDIxNSwgMTQ1LCAyNDUsIDU4LCA0LCAyMTUsIDM2LCAyNDUsIDU4LCA0LCAyMTQsIAotICAgIDE3NywgMjQ1LCA1OCwgNCwgMjEyLCAxNjIsIDI0NSwgNTgsIDQsIDIxMiwgMTMsIDI0NSwgNTgsIDQsIDIxMSwgMTAsIDI0NSwgCi0gICAgNTgsIDQsIDIxMCwgMjIsIDI0NSwgNTgsIDQsIDIwOSwgMTg3LCAyNDUsIDU4LCA0LCAyMDksIDIsIDI0NSwgNTgsIDQsIAotICAgIDEzNSwgMjQ1LCA1OCwgNCwgMjA3LCAyMDMsIDI0NSwgNTgsIDQsIDIwNCwgMTExLCAyNDUsIDU4LCA0LCAyMDQsIDYyLCAKLSAgICAyNDUsIDU4LCA0LCAyMDQsIDMwLCAyNDUsIDU4LCA0LCAyMDQsIDAsIDI0NSwgNTgsIDQsIDIwMywgMTgyLCAyNDUsIDU4LCAKLSAgICA0LCAyMDMsIDE3NiwgMjQ1LCA1OCwgNCwgMjAyLCAxMTYsIDI0NSwgNTgsIDQsIDIwMiwgMTcsIDIzMSwgNTEsIDI1MCwgCi0gICAgMTMwLCAxLCAyNTEsIDI4LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ4LCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKLSAgICAyMzgsIDY3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ0LCAxNzcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMzcsIDY3LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA0LCA3MCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwMiwgOTUsIDIzMSwgNTEsIAotICAgIDI1MCwgMTMwLCAxLCAyMzcsIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAxMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAKLSAgICAxLCAyMDIsIDIzNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyOSwgMjUwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI4LCAKLSAgICAxOSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyNCwgMjQ3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjIxLCA0MCwgMjMxLCAKLSAgICA1MSwgMjUwLCAxMzAsIDEsIDIxNCwgMjQ5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjUwLCAzLCAyMzEsIDUxLCAyNTAsIAotICAgIDEzMCwgMSwgMjE5LCAzNCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxNSwgMjYsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKLSAgICAyMTcsIDY5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE2LCA5MSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxMiwgMjU1LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAyMDEsIDIzMSwgNTEsIDI1MCwgMTMwLCAyMTQsIDE2OCwgNTQsIDIzMSwgNTEsIAotICAgIDI1MCwgMTMwLCA0MiwgMTA1LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDEwOCwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAKLSAgICAxNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA5LCAxNTIsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA3LCAxNTEsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDExOCwgMjA5LCAzNiwgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMjE5LCAxMzQsIDEsIDI1MSwgMjgsIDIxOSwgMTM0LCAKLSAgICAxLCAyNDgsIDEwNSwgMjE5LCAxMzQsIDEsIDIzOCwgNjcsIDIxOSwgMTM0LCAxLCAyNDQsIDE3NywgMjE5LCAxMzQsIDEsIAotICAgIDIzNywgNjcsIDIxOSwgMTM0LCAxLCAyMDQsIDcwLCAyMTksIDEzNCwgMSwgMjAyLCA5NSwgMjE5LCAxMzQsIDEsIDIzNywgCi0gICAgMTksIDIxOSwgMTM0LCAxLCAyMDksIDEyOCwgMjE5LCAxMzQsIDEsIDIwMiwgMjM1LCAyMTksIDEzNCwgMSwgMjI5LCAyNTAsIAotICAgIDIxOSwgMTM0LCAxLCAyMjgsIDE5LCAyMTksIDEzNCwgMSwgMjI0LCAyNDcsIDIxOSwgMTM0LCAxLCA0NiwgMjIxLCA0MCwgCi0gICAgMjE5LCAxMzQsIDEsIDIyMSwgNDAsIDIxOSwgMTM0LCAxLCAyMTQsIDI0OSwgMjE5LCAxMzQsIDEsIDI1MCwgMywgMjE5LCAKLSAgICAxMzQsIDEsIDIxOSwgMzQsIDIxOSwgMTM0LCAxLCAyMTUsIDI2LCAyMTksIDEzNCwgMSwgMjE3LCA2OSwgMjE5LCAxMzQsIDEsIAotICAgIDIxNiwgOTEsIDIxOSwgMTM0LCAxLCAyMTIsIDI1NSwgMjE5LCAxMzQsIDEsIDIwOSwgMjAxLCAyMTksIDEzNCwgMjI3LCAKLSAgICAyMTcsIDIzOSwgMjEyLCAyMTksIDEzNCwgMjE2LCAxMSwgMjM5LCAyMTIsIDIxOSwgMTM0LCA0MiwgMTA1LCAyMTksIDEzNCwgCi0gICAgNDIsIDEwOCwgMjE5LCAxMzQsIDQyLCAxNDcsIDIxOSwgMTM0LCA0MiwgMTQ5LCAyMTksIDEzNCwgNDIsIDE3MCwgMjE5LCAKLSAgICAxMzQsIDQyLCAyMDksIDE1MiwgMjE5LCAxMzQsIDQyLCAyMDcsIDE1MSwgMjIzLCAxMDIsIDEsIDQ2LCAyNTEsIDI4LCAyMjMsIAotICAgIDEwMiwgMSwgMjUxLCAyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyNDgsIDEwNSwgMjIzLCAxMDIsIDEsIDI0OCwgMTA1LCAyMjMsIAotICAgIDEwMiwgMSwgMjM4LCA2NywgMjIzLCAxMDIsIDEsIDI0NCwgMTc3LCAyMjMsIDEwMiwgMSwgNDYsIDIzNywgNjcsIDIyMywgCi0gICAgMTAyLCAxLCAyMzcsIDY3LCAyMjMsIDEwMiwgMSwgMjA0LCA3MCwgMjIzLCAxMDIsIDEsIDIwMiwgOTUsIDIyMywgMTAyLCAxLCAKLSAgICAyMzcsIDE5LCAyMjMsIDEwMiwgMSwgMjA5LCAxMjgsIDIyMywgMTAyLCAxLCA0NiwgMjAyLCAyMzUsIDIyMywgMTAyLCAxLCAKLSAgICAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIDQ2LCAyMjksIDI1MCwgMjIzLCAxMDIsIDEsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgCi0gICAgNDYsIDIyOCwgMTksIDIyMywgMTAyLCAxLCAyMjgsIDE5LCAyMjMsIDEwMiwgMSwgNDYsIDIyNCwgMjQ3LCAyMjMsIDEwMiwgCi0gICAgMSwgMjI0LCAyNDcsIDIyMywgMTAyLCAxLCA0NiwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIDIyMSwgNDAsIDIyMywgMTAyLCAxLCAKLSAgICAyMTQsIDI0OSwgMjIzLCAxMDIsIDEsIDI1MCwgMywgMjIzLCAxMDIsIDEsIDIxOSwgMzQsIDIyMywgMTAyLCAxLCAyMTUsIAotICAgIDI2LCAyMjMsIDEwMiwgMSwgMjE3LCA2OSwgMjIzLCAxMDIsIDEsIDIxNiwgOTEsIDIyMywgMTAyLCAxLCA0NiwgMjEyLCAKLSAgICAyNTUsIDIyMywgMTAyLCAxLCAyMTIsIDI1NSwgMjIzLCAxMDIsIDEsIDIwOSwgMjAxLCAyMjMsIDEwMiwgNDIsIDEwNSwgCi0gICAgMjIzLCAxMDIsIDQyLCAxMDgsIDIyMywgMTAyLCA0MiwgMTQ3LCAyMjMsIDEwMiwgNDIsIDE0OSwgMjIzLCAxMDIsIDI0NSwgCi0gICAgMTE2LCA0MiwgMTQ5LCAyMjMsIDEwMiwgNDIsIDE3MCwgMjIzLCAxMDIsIDQyLCAyMDksIDE1MiwgMjIzLCAxMDIsIDQyLCAKLSAgICAyMDcsIDE1MSwgMjIzLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIDIzNywgNzgsIDEsIDI1MSwgMjgsIDIzNywgNzgsIDEsIAotICAgIDI0OCwgMTA1LCAyMzcsIDc4LCAxLCAyMzgsIDY3LCAyMzcsIDc4LCAxLCAyNDQsIDE3NiwgMjM3LCA3OCwgMSwgMjM3LCA2NywgCi0gICAgMjM3LCA3OCwgMSwgMjA0LCA3MCwgMjM3LCA3OCwgMSwgMjAyLCA5NCwgMjM3LCA3OCwgMSwgMjM3LCAxOSwgMjM3LCA3OCwgCi0gICAgMSwgMjA5LCAxMjgsIDIzNywgNzgsIDEsIDIwMiwgMjM1LCAyMzcsIDc4LCAxLCAyMjksIDI1MCwgMjM3LCA3OCwgMSwgMjI4LCAKLSAgICAxOSwgMjM3LCA3OCwgMSwgMjI0LCAyNDcsIDIzNywgNzgsIDEsIDIyMSwgNDAsIDIzNywgNzgsIDEsIDIxNCwgMjQ5LCAyMzcsIAotICAgIDc4LCAxLCAyNTAsIDIsIDIzNywgNzgsIDEsIDIxOSwgMzQsIDIzNywgNzgsIDEsIDIxNSwgMjYsIDIzNywgNzgsIDEsIDIxNywgCi0gICAgNjksIDIzNywgNzgsIDEsIDIxMiwgMjU1LCAyMzcsIDc4LCAxLCAyMDksIDIwMSwgMjM3LCA3OCwgNDIsIDEwNSwgMjM3LCAKLSAgICA3OCwgNDIsIDE3MCwgMjM3LCA3OCwgNDIsIDIwOSwgMTUyLCAyMzcsIDc4LCA0MiwgMjA3LCAxNTEsIDIzNywgNzgsIDQyLCAKLSAgICAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCAxLCAyNTEsIDI1LCAyMTgsIDE3OCwgMSwgMjQ4LCAxMDgsIDIxOCwgMTc4LCAxLCAKLSAgICAyMzgsIDIzNywgMjE4LCAxNzgsIDEsIDI0NCwgMzksIDIxOCwgMTc4LCAxLCAyMzcsIDY3LCAyMTgsIDE3OCwgMSwgMjA0LCAKLSAgICA3NywgMjE4LCAxNzgsIDEsIDIwMiwgMTA5LCAyMTgsIDE3OCwgMSwgMjM3LCAyMSwgMjE4LCAxNzgsIDEsIDIwOSwgMTMyLCAKLSAgICAyMTgsIDE3OCwgMSwgMjAyLCAyMzYsIDIxOCwgMTc4LCAxLCAyMzAsIDIyLCAyMTgsIDE3OCwgMSwgMjI4LCAyNSwgMjE4LCAKLSAgICAxNzgsIDEsIDIyNCwgMjQ3LCAyMTgsIDE3OCwgMSwgMjIxLCA0MCwgMjE4LCAxNzgsIDEsIDIxMywgMTM3LCAyMTgsIDE3OCwgCi0gICAgMSwgMjUxLCA1OSwgMjE4LCAxNzgsIDEsIDIxOSwgMzQsIDIxOCwgMTc4LCAxLCAyMTUsIDI3LCAyMTgsIDE3OCwgMSwgMjE3LCAKLSAgICA3NCwgMjE4LCAxNzgsIDEsIDIxNSwgMjAwLCAyMTgsIDE3OCwgMSwgMjEyLCAyNTUsIDIxOCwgMTc4LCAxLCAyMDksIDIwNywgCi0gICAgMjE4LCAxNzgsIDQyLCAxMDUsIDIxOCwgMTc4LCA0MiwgMjA5LCAxNTIsIDIxOCwgMTc4LCA0MiwgMjA3LCAxNTEsIDIxOCwgCi0gICAgMTc4LCA0MiwgMTE4LCAyMzYsIDExLCAyMTgsIDE3OCwgNDIsIDEwOCwgMjE4LCAxNzgsIDQyLCAxNDcsIDIxOCwgMTc4LCAKLSAgICAyMDMsIDIzOCwgMjEzLCAxMzAsIDIyNiwgMTk2LCAxLCA2MywgMjI2LCAxOTYsIDEsIDI0OSwgMjU1LCAyMjYsIDE5NiwgMSwgCi0gICAgMjM5LCA3NSwgMjI2LCAxOTYsIDEsIDI0NSwgNTEsIDIyNiwgMTk2LCAxLCA3NCwgMjI2LCAxOTYsIDEsIDIwNiwgMTY0LCAKLSAgICAyMjYsIDE5NiwgMSwgNzUsIDIyNiwgMTk2LCAxLCAyMDMsIDEyNCwgMjI2LCAxOTYsIDEsIDIzMCwgNTQsIDIyNiwgMTk2LCAKLSAgICAxLCAxNTksIDIyNiwgMTk2LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTYsIDEsIDIyMywgMTYzLCAyMjYsIDE5NiwgMSwgNzgsIAotICAgIDIyNiwgMTk2LCAxLCAxNDYsIDIyNiwgMTk2LCAxLCAyMTEsIDE2NywgMjI2LCAxOTYsIDEsIDIxMCwgNjksIDIyNiwgMTk2LCAKLSAgICAxLCA2OCwgMjI2LCAxOTYsIDEsIDI0MCwgMTc0LCAyMjYsIDE5NiwgMSwgMjE3LCAxMzQsIDIyNiwgMTk2LCAxLCAxOTQsIAotICAgIDIyNiwgMTk2LCAxLCAyMDcsIDI0NCwgMjI2LCAxOTYsIDEsIDI1MCwgMjMxLCAyMjYsIDE5NiwgMSwgMjQxLCA5MiwgMjI2LCAKLSAgICAxOTYsIDEsIDIyNiwgMTk5LCAyMjYsIDE5NiwgMSwgMjIxLCAyMjgsIDIyNiwgMTk2LCAxLCAyNDcsIDEyNSwgMjI2LCAxOTYsIAotICAgIDIwOCwgODIsIDgyLCAxMjksIDIzNiwgMjUzLCAxLCA2MywgMTI5LCAyMzYsIDI1MywgMSwgNzQsIDEyOSwgMjM2LCAyNTMsIAotICAgIDEsIDc1LCAxMjksIDIzNiwgMjUzLCAxLCA3OCwgMTI5LCAyMzYsIDI1MywgMSwgMTk4LCAxMjksIDIzNiwgMjUzLCAxLCAKLSAgICAyMDQsIDExMSwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMiwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMSwgMTI5LCAyMzYsIAotICAgIDI1MywgMSwgMTg1LCAxMjksIDIzNiwgMjUzLCAxLCAxOTIsIDEyOSwgMjM2LCAyNTMsIDEsIDIwMSwgMjAxLCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAyMjMsIDExMCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyNDAsIDEyOSwgMjM2LCAyNTMsIDEsIDIyMiwgMjM5LCAKLSAgICAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIyMCwgMTI5LCAyMzYsIDI1MywgMSwgMjE2LCAyMTksIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIyOCwgMTEzLCAxMjksIDIzNiwgMjUzLCAxLCAyMjksIDE0NCwgMTI5LCAyMzYsIDI1MywgMSwgMjM3LCAxMiwgMTI5LCAKLSAgICAyMzYsIDI1MywgMSwgMjE1LCAzNiwgMTI5LCAyMzYsIDI1MywgMSwgMjE1LCAzNSwgMTI5LCAyMzYsIDI1MywgMSwgMjE0LCAKLSAgICAxNzcsIDEyOSwgMjM2LCAyNTMsIDEsIDE3MywgMTI5LCAyMzYsIDI1MywgMSwgMjE3LCAxMjYsIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIxMCwgMjIsIDEyOSwgMjM2LCAyNTMsIDEsIDIxMCwgMjEsIDEyOSwgMjM2LCAyNTMsIDEsIDIwOSwgMTg3LCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAyMDksIDE4NiwgMTI5LCAyMzYsIDI1MywgMSwgMTM1LCAxMjksIDIzNiwgMjUzLCAxLCAyNDQsIDIxMiwgMTI5LCAKLSAgICAyMzYsIDI1MywgMTYsIDIwNSwgMjI0LCAxMjksIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjMsIDEyOSwgMTkxLCAxLCA2MywgCi0gICAgMTI5LCAxOTEsIDEsIDc0LCAxMjksIDE5MSwgMSwgNzUsIDEyOSwgMTkxLCAxLCA3OCwgMTI5LCAxOTEsIDEsIDE5OCwgMTI5LCAKLSAgICAxOTEsIDEsIDIwNCwgMTExLCAxMjksIDE5MSwgMSwgMjQ5LCAzMiwgMTI5LCAxOTEsIDEsIDE4NSwgMTI5LCAxOTEsIDEsIAotICAgIDE5MiwgMTI5LCAxOTEsIDEsIDIwMSwgMjAxLCAxMjksIDE5MSwgMSwgMjIyLCAyNDAsIDEyOSwgMTkxLCAxLCAyMTYsIDIyMCwgCi0gICAgMTI5LCAxOTEsIDEsIDIyOCwgMTEzLCAxMjksIDE5MSwgMSwgMjI5LCAxNDQsIDEyOSwgMTkxLCAxLCAyMzcsIDEyLCAxMjksIAotICAgIDE5MSwgMSwgMjE1LCAzNiwgMTI5LCAxOTEsIDEsIDI1MCwgMTI2LCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjE0LCAxNzcsIAotICAgIDEyOSwgMTkxLCAxLCAxNzMsIDEyOSwgMTkxLCAxLCAyMTcsIDEyNiwgMTI5LCAxOTEsIDEsIDIxMCwgMjIsIDEyOSwgMTkxLCAKLSAgICAxLCAyMDksIDE4NywgMTI5LCAxOTEsIDEsIDEzNSwgMTI5LCAxOTEsIDEsIDI0NCwgMjEyLCAxMjksIDE5MSwgMjM5LCAxMzgsIAotICAgIDI0MSwgMTEzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxMjksIDE5MSwgMjI3LCAzNiwgCi0gICAgMjE1LCAyMzMsIDEyOSwgMTkxLCAyMjcsIDM2LCAyMzEsIDU2LCAxMjksIDE5MSwgNDIsIDEwNSwgMTI5LCAxOTEsIDQyLCAKLSAgICAxMDgsIDEyOSwgMTkxLCA0MiwgMTQ3LCAxMjksIDE5MSwgNDIsIDE0OSwgMTI5LCAxOTEsIDQyLCAxNzAsIDEyOSwgMTkxLCAKLSAgICA0MiwgMTk1LCAxMjksIDE5MSwgNDIsIDIxMywgMTExLCAxMjksIDE5MSwgNDIsIDE5OSwgMTI5LCAxOTEsIDQyLCAyMjIsIAotICAgIDYzLCAxMjksIDE5MSwgNDIsIDIwOSwgMTUyLCAxMjksIDE5MSwgNDIsIDIwNywgMTUxLCAxMjksIDE5MSwgNDIsIDIwOSwgCi0gICAgNTMsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNTMsIDEyOSwgMTkxLCA0MiwgMjQwLCAxOCwgMTI5LCAxOTEsIDQyLCAyMTIsIDc0LCAKLSAgICAxMjksIDE5MSwgNDIsIDIxMywgMTA1LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjAsIAotICAgIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCAKLSAgICAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDEyOSwgCi0gICAgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDEyOSwgMTkxLCAKLSAgICA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMTgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAyMDksIAotICAgIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE0NywgMjA5LCAzNiwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTIsIDg4LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIAotICAgIDIxMywgMTEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgCi0gICAgNjQsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTIsIAotICAgIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE1NCwgMjA5LCAzNiwgCi0gICAgMTI5LCAxOTEsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgNzUsIDIwOSwgMzYsIDEyOSwgMTkxLCAKLSAgICA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxMzUsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCi0gICAgMjIyLCA1OSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAKLSAgICAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIAotICAgIDE0NywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMTIsIDg4LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMywgMTEyLCAyMzYsIDEyLCAyMDksIAotICAgIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgNjQsIDIzNiwgCi0gICAgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTE4LCAyMDcsIDE1NywgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMjAsIAotICAgIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyNiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAKLSAgICAxNDcsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIzOSwgMjMzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgCi0gICAgMTM4LCAyMTIsIDg4LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAKLSAgICAyMzksIDEzOCwgMjQxLCAxNDMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIyMiwgNjQsIDIwNywgMTU2LCAxMjksIAotICAgIDE5MSwgMjM5LCAxMzgsIDIwOSwgMTUzLCAyMDcsIDE1NiwgMjI5LCAxMzEsIDEsIDYzLCAyMjksIDEzMSwgMjIsIDIsIDc1LCAKLSAgICAyMjksIDEzMSwgMjIsIDIsIDY4LCAyMjksIDEzMSwgMjIsIDIsIDEyNSwgMTQ2LCAyMjksIDEzMSwgMjIsIDIsIDc0LCAyMjksIAotICAgIDEzMSwgMjIsIDIsIDc4LCAyMjksIDEzMSwgMjIsIDIyNywgMTk2LCA4MiwgMjI5LCAxMzEsIDIsIDUyLCAyMTUsIDI1MywgCi0gICAgNTYsIDIyOSwgMTMxLCAyLCAyNTAsIDE4MCwgMjI5LCAxMzEsIDIsIDIwNSwgMTk5LCAyMjksIDEzMSwgMSwgMTczLCAyMjksIAotICAgIDEzMSwgMSwgMjI5LCAxNDQsIDIyOSwgMTMxLCAxLCAyMzksIDgsIDIyOSwgMTMxLCAxLCAyMzgsIDExOSwgMjI5LCAxMzEsIAotICAgIDEsIDI0NywgOTIsIDIyOSwgMTMxLCAxLCAyNDYsIDE5OSwgMjI5LCAxMzEsIDEsIDIzMCwgMTgxLCAyMjksIDEzMSwgMSwgCi0gICAgMjIxLCAxMSwgMjI5LCAxMzEsIDEsIDIwNywgMjQxLCAyMjksIDEzMSwgMSwgMjA3LCAyMjksIDIyOSwgMTMxLCAxLCAyNDQsIAotICAgIDEyMCwgMjI5LCAxMzEsIDEsIDI0NCwgMTA0LCAyMjksIDEzMSwgMSwgMjIxLCAyMjcsIDIyOSwgMTMxLCAxLCAyMTAsIDIyLCAKLSAgICAyMjksIDEzMSwgMSwgMjA5LCAxMDgsIDIyOSwgMTMxLCAxLCAyNDQsIDIxMiwgMjI5LCAxMzEsIDEsIDI0NCwgMSwgMjI5LCAKLSAgICAxMzEsIDEsIDIwMSwgMjAxLCAyMjksIDEzMSwgMSwgMTg1LCAyMjksIDEzMSwgMSwgMjE4LCAyMDgsIDIyOSwgMTMxLCAxLCAKLSAgICAyNDksIDMyLCAyMjksIDEzMSwgMSwgMjQ4LCA5OCwgMjI5LCAxMzEsIDEsIDE5MiwgMjI5LCAxMzEsIDEsIDE5OCwgMjI5LCAKLSAgICAxMzEsIDEsIDIxNiwgMjIwLCAyMjksIDEzMSwgMSwgMjI4LCAxMTMsIDIyOSwgMTMxLCAxLCAyMDYsIDg2LCAyMjksIDEzMSwgCi0gICAgMSwgMjEzLCA5MCwgMjI5LCAxMzEsIDEsIDIxMSwgMTY0LCAyMjksIDEzMSwgMSwgMjE1LCAzNiwgMjI5LCAxMzEsIDEsIAotICAgIDIwMiwgMTE2LCAyMjksIDEzMSwgMSwgMTUyLCAyMjksIDEzMSwgMSwgMjI5LCA0NywgMjI5LCAxMzEsIDEsIDIwNywgMjA5LCAKLSAgICAyMjksIDEzMSwgMiwgMjQ4LCAyMzEsIDU1LCAyMjksIDEzMSwgMiwgMjQ3LCAxMywgMjI5LCAxMzEsIDIsIDcwLCA1NiwgCi0gICAgMjI5LCAxMzEsIDIwNSwgMjA0LCAyMjksIDEzMSwgMTcsIDEwNSwgMjI5LCAxMzEsIDE3LCAxMDgsIDIyOSwgMTMxLCAxNywgCi0gICAgMTQ3LCAyMjksIDEzMSwgMTcsIDE0OSwgMjI5LCAxMzEsIDQyLCAyMDksIDE1MiwgMjI5LCAxMzEsIDQyLCAyMDcsIDE1MSwgCi0gICAgMjI5LCAxMzEsIDQyLCAxMTgsIDIzNiwgMTEsIDIyOSwgMTMxLCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDEzMSwgMjE3LCAKLSAgICAxNzksIDI0MywgODUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgNSwgMjQ2LCA2MSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDYsIAotICAgIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjI1LCAxMTYsIDIyOSwgCi0gICAgMTMxLCAyMTcsIDE3OSwgMjI3LCA1LCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIAotICAgIDUyLCAyNDQsIDE2NiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjcsIDEwOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM3LCA2NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI4LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM3LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI0LCAyNDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNywgNjksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwNCwgNzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxMiwgMjU1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMTYsIDkxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNDgsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAyMDEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNCwgMjI1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDI1MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjIxLCA0MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI5LCAxMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNSwgMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNCwgMjQ5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNDAsIDYwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNTEsIDMwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNTAsIDIsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjU0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzgsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDQsIDE3NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM4LCAxMDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgMTI4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMDIsIDk0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDMsIDI1MSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjAyLCAyMzUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIwOSwgNzMsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAxMDUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAKLSAgICAyNDAsIDE4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxNDEsIDIzMSwgMzEsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzcsIAotICAgIDQzLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjI4LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgMTQ4LCAzOCwgCi0gICAgMTUzLCAyNTAsIDE0MSwgMSwgMjI1LCA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjE3LCAxMTksIDM4LCAxNTMsIDI1MCwgCi0gICAgMTQxLCAxLCAyMDQsIDcwLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIAotICAgIDIxNiwgMTIyLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQ4LCAxMzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDE2OSwgCi0gICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTYsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzAsIDIyLCAzOCwgMTUzLCAKLSAgICAyNTAsIDE0MSwgMSwgMjIxLCAxNzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjksIDE0MCwgMzgsIDE1MywgMjUwLCAxNDEsIAotICAgIDEsIDIxNSwgMjgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQwLCA0NywgCi0gICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNTEsIDU5LCAzOCwgMTUzLCAKLSAgICAyNTAsIDE0MSwgMSwgMjQ0LCAyMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDE4MSwgMzgsIDE1MywgMjUwLCAxNDEsIAotICAgIDEsIDI0NCwgMTg0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM4LCAxMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIAotICAgIDI1MSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwMiwgMTA3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAxMDAsIDM4LCAKLSAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMDMsIDQ3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCA4OCwgMzgsIDE1MywgMjUwLCAKLSAgICAxNDEsIDEsIDIwMiwgMTEwLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDksIAotICAgIDE1MiwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDcsIDE1MSwgMjI1LCAxMTUsIDEsIDI1MSwgMjgsIDIyNSwgMTE1LCAxLCAKLSAgICAyNDgsIDEwNSwgMjI1LCAxMTUsIDEsIDI0OCwgOTIsIDIyNSwgMTE1LCAxLCAyMzgsIDY3LCAyMjUsIDExNSwgMSwgMjM4LCAKLSAgICA5MiwgMjI1LCAxMTUsIDEsIDI0NCwgMTc3LCAyMjUsIDExNSwgMSwgMjM3LCA2NywgMjI1LCAxMTUsIDEsIDIwNCwgNzAsIAotICAgIDIyNSwgMTE1LCAyLCAyMDcsIDI5LCAyMjUsIDExNSwgMSwgMjAyLCA5NSwgMjI1LCAxMTUsIDEsIDIwMiwgNzMsIDIyNSwgCi0gICAgMTE1LCAxLCAyMzAsIDE2MywgMjI1LCAxMTUsIDEsIDIzMCwgMTQ1LCAyMjUsIDExNSwgMSwgMjM3LCAxOSwgMjI1LCAxMTUsIAotICAgIDEsIDIwOSwgMTI4LCAyMjUsIDExNSwgMSwgMjAyLCAyMzUsIDIyNSwgMTE1LCAxLCAyMjksIDI1MCwgMjI1LCAxMTUsIDEsIAotICAgIDIwMywgMTc5LCAyMjUsIDExNSwgMSwgMjI5LCAxMzMsIDIyNSwgMTE1LCAxLCAyMjgsIDE5LCAyMjUsIDExNSwgMSwgMjQzLCAKLSAgICAyNTAsIDIyNSwgMTE1LCAxLCAyMDksIDk5LCAyMjUsIDExNSwgMSwgMjI0LCAyNDcsIDIyNSwgMTE1LCAxLCAyMjEsIDQwLCAKLSAgICAyMjUsIDExNSwgMSwgMjE0LCAyNDksIDIyNSwgMTE1LCAxLCAyNTAsIDMsIDIyNSwgMTE1LCAxLCAyNTEsIDIzNCwgMjI1LCAKLSAgICAxMTUsIDEsIDIxOSwgMzQsIDIyNSwgMTE1LCAxLCAyNDAsIDYwLCAyMjUsIDExNSwgMSwgMjE1LCAyNiwgMjI1LCAxMTUsIDEsIAotICAgIDIxNywgNjksIDIyNSwgMTE1LCAxLCAyMDMsIDE1NywgMjI1LCAxMTUsIDEsIDIxNywgOTUsIDIyNSwgMTE1LCAxLCAyMTYsIAotICAgIDkxLCAyMjUsIDExNSwgMSwgMjEyLCAyNTUsIDIyNSwgMTE1LCAxLCAyMTEsIDEzMywgMjI1LCAxMTUsIDEsIDIwOSwgMjAxLCAKLSAgICAyMjUsIDExNSwgMjUxLCAxNDYsIDEzMSwgNTUsIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NiwgMjI1LCAxMTUsIDQyLCAKLSAgICAxMDUsIDIyNSwgMTE1LCA0MiwgMTcwLCAyMjUsIDExNSwgNDIsIDIwOSwgMTUyLCAyMjUsIDExNSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMjUsIDExNSwgNDIsIDExOCwgMjM2LCAxMSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyMTEsIDk0LCAyMjUsIDExNSwgMjE3LCAKLSAgICAxNzksIDIzOSwgMjEyLCAyMjUsIDExNSwgMjE3LCAxNzksIDUyLCA3MCwgMjA0LCA1LCAyNDMsIDg1LCAyMjUsIDExNSwgCi0gICAgMjE3LCAxNzksIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjQzLCA4NSwgMjI1LCAxMTUsIAotICAgIDIxNywgMTc5LCAxMjAsIDI0MywgODMsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjI3LCAxMTUsIDI0MCwgNywgMjUwLCAxNCwgMSwgCi0gICAgNjMsIDI1MCwgMTQsIDEsIDI1MiwgMjUsIDI1MCwgMTQsIDEsIDI1MCwgMTc4LCAyNTAsIDE0LCAxLCAyNTEsIDI0MCwgMjUwLCAKLSAgICAxNCwgMSwgMjUwLCAyMzEsIDI1MCwgMTQsIDEsIDI1MSwgMjQxLCAyNTAsIDE0LCAxLCAyNTEsIDEwOSwgMjUwLCAxNCwgMSwgCi0gICAgMjUxLCAxMDUsIDI1MCwgMTQsIDEsIDc0LCAyNTAsIDE0LCAxLCAyNDEsIDE2MSwgMjUwLCAxNCwgMSwgNzgsIDI1MCwgMTQsIAotICAgIDEsIDIyMCwgMTgsIDI1MCwgMTQsIDEsIDc1LCAyNTAsIDE0LCAxLCAyMzEsIDgzLCAyNTAsIDE0LCAxLCA2OCwgMjUwLCAxNCwgCi0gICAgMSwgMjA2LCAxNzgsIDI1MCwgMTQsIDEsIDIyOSwgMjAxLCAyNTAsIDE0LCAxLCAyMDMsIDE3NiwgMjUwLCAxNCwgMSwgMjAzLCAKLSAgICAxMzgsIDI1MCwgMTQsIDEsIDIwMywgMTQ4LCAyNTAsIDE0LCAxLCAyMzgsIDE5MCwgMjUwLCAxNCwgMSwgMjM4LCAxNTAsIAotICAgIDI1MCwgMTQsIDEsIDIzOCwgMTA1LCAyNTAsIDE0LCAxLCAyNDYsIDIzOCwgMjUwLCAxNCwgMSwgMjMwLCAxNjEsIDI1MCwgCi0gICAgMTQsIDEsIDIwOSwgMTg3LCAyNTAsIDE0LCAxLCAyMDksIDkyLCAyNTAsIDE0LCAxLCAyNDQsIDc1LCAyNTAsIDE0LCAxLCAKLSAgICAyNDMsIDI0OCwgMjUwLCAxNCwgMSwgMjA3LCAyMzYsIDI1MCwgMTQsIDEsIDIxOSwgMzQsIDI1MCwgMTQsIDEsIDI0MCwgNjAsIAotICAgIDI1MCwgMTQsIDEsIDI0OCwgMTYyLCAyNTAsIDE0LCAxLCAyNDgsIDk0LCAyNTAsIDE0LCAxLCAyMjIsIDE5MCwgMjUwLCAxNCwgCi0gICAgMSwgMjIyLCAxMDYsIDI1MCwgMTQsIDEsIDIyMiwgMTA3LCAyNTAsIDE0LCAxLCAyMjIsIDI0MCwgMjUwLCAxNCwgMSwgMjIxLCAKLSAgICAxLCAyNTAsIDE0LCAxLCAyMjEsIDIyMiwgMjUwLCAxNCwgMSwgMjI1LCAyMCwgMjUwLCAxNCwgMSwgMjM2LCAxODYsIDI1MCwgCi0gICAgMTQsIDEsIDIwMiwgMTY2LCAyNTAsIDE0LCAxLCAyMDMsIDUyLCAyNTAsIDE0LCAxLCAyMDYsIDU1LCAyNTAsIDE0LCAxLCAKLSAgICAyMTYsIDE1OCwgMjUwLCAxNCwgMSwgMjI3LCAyMzQsIDI1MCwgMTQsIDEsIDIxNCwgMTc3LCAyNTAsIDE0LCAxLCAyMDIsIAotICAgIDkyLCAyNTAsIDE0LCAxLCAyMTMsIDQzLCAyNTAsIDE0LCAxLCAyMDIsIDcxLCAyNTAsIDE0LCAxLCAyMTIsIDE2OSwgMjUwLCAKLSAgICAxNCwgMSwgMjExLCAxMzQsIDI1MCwgMTQsIDEsIDIzNywgNjcsIDI1MCwgMTQsIDI1MSwgMTQ2LCA4MiwgMjA4LCAyMTMsIAotICAgIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCA1LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgCi0gICAgMjI4LCA4LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgMjI4LCA4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAKLSAgICAyMTcsIDE3OCwgMjI4LCA4LCAxMjAsIDIxNSwgMjUwLCAxMTUsIDExOCwgMjE1LCAyNTMsIDIxNywgMTc4LCAyMjgsIDgsIAotICAgIDExOCwgMjE1LCAyNTMsIDExNSwgMTIwLCAyMTUsIDI1MCwgMjE3LCAxNzgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI1MSwgCi0gICAgMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI0OCwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAKLSAgICAyMTksIDcwLCAxLCAyNDQsIDE3NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCA2NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgCi0gICAgMjA0LCA3MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCAxOSwgMjMxLCAKLSAgICAxMCwgMjE5LCA3MCwgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIAotICAgIDcwLCAxLCAyMjksIDI1MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI0LCAKLSAgICAyNDcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyMSwgNDAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNCwgMjQ5LCAyMzEsIAotICAgIDEwLCAyMTksIDcwLCAxLCAyNTAsIDMsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxOSwgMzQsIDIzMSwgMTAsIDIxOSwgNzAsIAotICAgIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNywgNjksIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNiwgOTEsIAotICAgIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDksIDIwMSwgMjMxLCAxMCwgCi0gICAgMjE5LCA3MCwgNDIsIDEwNSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0NywgCi0gICAgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIAotICAgIDcwLCA0MiwgMjA3LCAxNTEsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgNzAsIAotICAgIDQyLCAxMTgsIDIwOSwgMzYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNTEsIDI4LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgCi0gICAgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjQ0LCAxNzcsIAotICAgIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjMxLCAxMCwgCi0gICAgMjE5LCAxNDksIDEsIDIwMiwgOTUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgCi0gICAgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDIsIDIzNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyOSwgCi0gICAgMjUwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyNCwgMjQ2LCAyMzEsIAotICAgIDEwLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMzEsIDEwLCAyMTksIAotICAgIDE0OSwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKLSAgICAyMTIsIDI1NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwNSwgCi0gICAgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMDgsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMzEsIDEwLCAyMTksIAotICAgIDE0OSwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKLSAgICAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgCi0gICAgMTE4LCAyMDksIDM2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjQ4LCAKLSAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM4LCA2NywgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCi0gICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIwNCwgNjksIDIxNywgMjAzLCAKLSAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDEsIDIwMiwgMjM1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOSwgMjUwLCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOCwgCi0gICAgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjE3LCAKLSAgICAyMDMsIDIxOSwgMTQ5LCAxLCAyMTQsIDI0OSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTksIDM0LCAyMTcsIDIwMywgCi0gICAgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjEyLCAyNTUsIDIxNywgMjAzLCAyMTksIAotICAgIDE0OSwgMSwgMjA5LCAyMDEsIDIxNywgMjAzLCAyMTksIDE0OSwgMjE0LCAxNjgsIDgyLCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDIwNywgMTc0LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQ1LCAxMzAsIAotICAgIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQzLCA4NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgCi0gICAgMTA1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxMDgsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDE0NywgMjE3LCAyMDMsIAotICAgIDIxOSwgMTQ5LCA0MiwgMTQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKLSAgICA0MiwgMjA3LCAxNTEsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAKLSAgICAxMDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc1LCAzOCwgCi0gICAgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCA3OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjIwLCA3MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgODEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwNywgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTAsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgNzEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAzOSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCAxMDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDIzMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDcwLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgODksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA1NiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgMjIzLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgOTcsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgOSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjM1LCAxNjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUwLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUwLCA3NSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjQxLCA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCAyNTAsIDQ5LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDI1MSwgOTEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgMjE5LCAyMjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0OCwgMjE1LCAzOCwgMTQ1LCA2LCAxLCA2MywgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjUyLCAyNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjQyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjYsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY1LCAzOCwgMTQ1LCA2LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNiwgMSwgNzQsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0NiwgMTcsIDc0LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTQsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKLSAgICAxNDcsIDM4LCAxNDUsIDYsIDEsIDc1LCAzOCwgMTQ1LCA2LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEzMiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMjksIDM4LCAxNDUsIDYsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMjMyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyMiwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDYsIDEsIDI0MSwgCi0gICAgMTAzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDkyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA2LCAxLCA3OCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjIwLCAxOCwgMzgsIDE0NSwgNiwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgCi0gICAgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIDYsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNDYsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDYsIDEsIDIxMiwgMjI4LCAyNDEsIAotICAgIDI4LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNiwgMSwgMjQwLCAKLSAgICAyNTAsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNzAsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAotICAgIDE2NywgMzgsIDE0NSwgNiwgMSwgNjgsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAKLSAgICAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyMTUsIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMjYsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA2OSwgNTQsIAotICAgIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTkzLCAzOCwgMTQ1LCA1LCAxLCA2MywgMzgsIDE0NSwgNSwgMSwgMjUyLCAyNSwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjQyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2OSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY1LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgNzQsIDM4LCAxNDUsIDUsIDEsIDI0NiwgMTcsIDc0LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNTQsIDM4LCAxNDUsIDUsIDEsIDI0MSwgCi0gICAgMTUzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNDcsIDM4LCAxNDUsIDUsIDEsIDc1LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEzMiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMjksIAotICAgIDM4LCAxNDUsIDUsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMjMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyMiwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTAzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDkyLCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA1LCAxLCA3OCwgMzgsIDE0NSwgNSwgMSwgMjIwLCAxOCwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNSwgMSwgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIAotICAgIDUsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNDYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIAotICAgIDUsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDIxMiwgMjI4LCAyNDEsIDI4LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE3LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyNTAsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNzAsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NywgMzgsIDE0NSwgNSwgMSwgNjgsIDM4LCAKLSAgICAxNDUsIDUsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyMTUsIAotICAgIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMjYsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCAKLSAgICA1LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA2OSwgNTQsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMTkzLCAzOCwgCi0gICAgMTQ1LCA0MiwgMTA1LCAzOCwgMTQ1LCA0MiwgMTcwLCAzOCwgMTQ1LCA0MiwgMjA5LCAxNTIsIDM4LCAxNDUsIDQyLCAyNDAsIAotICAgIDE4LCAzOCwgMTQ1LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMTQ1LCA0MiwgMTE4LCAyMDksIDM2LCAyMTUsIDEyOSwgMTcsIAotICAgIDEwNSwgMjE1LCAxMjksIDE3LCAxMDgsIDIxNSwgMTI5LCAxNywgMTQ3LCAyMTUsIDEyOSwgMTcsIDE0OSwgMjE1LCAxMjksIAotICAgIDE3LCAxNzAsIDIxNSwgMTI5LCAxNywgMTk1LCAyMTUsIDEyOSwgMTcsIDIxMywgMTExLCAyMTUsIDEyOSwgMTcsIDE5OSwgCi0gICAgMjE1LCAxMjksIDE3LCAyMjIsIDYzLCAyMTUsIDEyOSwgNDIsIDIwOSwgMTUyLCAyMTUsIDEyOSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMTUsIDEyOSwgNDIsIDIwOSwgNTMsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNTMsIDIxNSwgMTI5LCA0MiwgMjQwLCAxOCwgCi0gICAgMjE1LCAxMjksIDQyLCAyMTIsIDc0LCAyMTUsIDEyOSwgNDIsIDIxMywgMTA1LCAyMTUsIDEyOSwgNDIsIDI0MSwgMTM0LCAKLSAgICAyMTUsIDEyOSwgNDIsIDIyMiwgNTgsIDIxNSwgMTI5LCA0MiwgMTE4LCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyMCwgCi0gICAgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAxMjYsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAotICAgIDIxNSwgMTI5LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMjE1LCAKLSAgICAxMjksIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMjE1LCAxMjksIAotICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIxNSwgMTI5LCAyMzksIAotICAgIDEzOCwgMTE4LCAyMTcsIDU1LCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjA5LCA2MCwgMjE1LCAxMjksIDIzOSwgMTM4LCAKLSAgICAxMjAsIDIwOSwgNTcsIDE0NCwgMiwgMjQ3LCA1MiwgMTQ0LCAyLCAyNTAsIDE4MCwgMTQ0LCAyLCAyMDUsIDE5OSwgMTQ0LCAKLSAgICAyLCAyMzAsIDEzNSwgMTQ0LCAyLCAyMDYsIDIyMiwgMTQ0LCAxLCA2MywgMTQ0LCAxLCAyNTIsIDI1LCAxNDQsIDEsIDc1LCAKLSAgICAxNDQsIDEsIDIzMSwgODMsIDE0NCwgMSwgNjgsIDE0NCwgMSwgMjA2LCAxNzgsIDE0NCwgMSwgMTI1LCAxNDYsIDE0NCwgMSwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMTQ0LCAxLCAxMjUsIDE1OSwgMTQ0LCAxLCAxMjUsIDIyNywgNzgsIDE0NCwgMSwgNzQsIDE0NCwgCi0gICAgMSwgMjUxLCA2NCwgMTQ0LCAxLCA3OCwgMTQ0LCAxLCAyNTAsIDM0LCAxNDQsIDEsIDE3MywgMTQ0LCAxLCAyMjksIDE0NCwgCi0gICAgMTQ0LCAxLCAyMzksIDgsIDE0NCwgMSwgMjM4LCAxMTksIDE0NCwgMSwgMjIyLCAyMDMsIDE0NCwgMSwgMjQ3LCA5MiwgMTQ0LCAKLSAgICAxLCAyNDYsIDE5OSwgMTQ0LCAxLCAyMzAsIDE4MSwgMTQ0LCAxLCAyMzAsIDE0OSwgMTQ0LCAxLCAyMjEsIDExLCAxNDQsIDEsIAotICAgIDIwNywgMjQxLCAxNDQsIDEsIDIwNywgMjI5LCAxNDQsIDEsIDI0NCwgMTIwLCAxNDQsIDEsIDI0NCwgMTA0LCAxNDQsIDEsIAotICAgIDIyMSwgMjI3LCAxNDQsIDEsIDIxMCwgMjIsIDE0NCwgMSwgMjA5LCAxMDgsIDE0NCwgMSwgMjQ0LCAyMTIsIDE0NCwgMSwgCi0gICAgMjQ0LCAxLCAxNDQsIDEsIDIwMSwgMjAxLCAxNDQsIDEsIDE4NSwgMTQ0LCAxLCAyMTgsIDIwOCwgMTQ0LCAxLCAyNDksIDMyLCAKLSAgICAxNDQsIDEsIDI0OCwgOTgsIDE0NCwgMSwgMTkyLCAxNDQsIDEsIDE5OCwgMTQ0LCAxLCAyMTYsIDIyMCwgMTQ0LCAxLCAyMjgsIAotICAgIDExMywgMTQ0LCAxLCAyMDYsIDg2LCAxNDQsIDEsIDIxMywgOTAsIDE0NCwgMSwgMjExLCAxNjQsIDE0NCwgMSwgMjE1LCAzNiwgCi0gICAgMTQ0LCAxLCAxNTIsIDE0NCwgMSwgMjI3LCA3NywgMTQ0LCAxLCAzOCwgNDQsIDIyNywgNjgsIDE0NCwgMSwgMzgsIDQ0LCAKLSAgICAyMTUsIDE4NSwgMTQ0LCAxLCAzOCwgNDQsIDIyMSwgMjA5LCAxNDQsIDIyLCAyLCAyNTIsIDI1LCAxNDQsIDIyLCAyLCAyNDgsIAotICAgIDk1LCAyNTIsIDI1LCAxNDQsIDIyLCAyLCA3NSwgMTQ0LCAyMiwgMiwgMjMxLCA4MywgMTQ0LCAyMiwgMiwgNjgsIDE0NCwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAxNDQsIDIyLCAyLCAxMjUsIDE0NiwgMTQ0LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTQ0LCAKLSAgICAyMiwgMiwgMTI1LCAxNTksIDE0NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTQ0LCAyMiwgMiwgNzQsIDE0NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDE0NCwgMjIsIDIsIDc4LCAxNDQsIDIyLCAyLCAyNTAsIDM0LCAxNDQsIDIwNSwgMjA0LCAxNDQsIDI0NCwgCi0gICAgMTY2LCAxNDQsIDUyLCAyNDQsIDE2NiwgMTQ0LCAyMTcsIDE3OSwgMjQzLCA4NSwgMTQ0LCAyMTcsIDE3OSwgNTIsIDI0MywgCi0gICAgODUsIDE0NCwgMjE3LCAxNzksIDIyNywgMTE0LCAxNDQsIDIxNywgMTc5LCAyNDUsIDEzOSwgMTQyLCAxNDQsIDIxNywgMTc5LCAKLSAgICAyMjcsIDUsIDE0NCwgNDIsIDEwNSwgMTQ0LCA0MiwgMTA4LCAxNDQsIDQyLCAxNDcsIDE0NCwgNDIsIDE0OSwgMTQ0LCA0MiwgCi0gICAgMTcwLCAxNDQsIDQyLCAxOTUsIDE0NCwgNDIsIDIxMywgMTExLCAxNDQsIDQyLCAxOTksIDE0NCwgNDIsIDIyMiwgNjMsIAotICAgIDE0NCwgNDIsIDIwOSwgMTUyLCAxNDQsIDQyLCAyMDcsIDE1MSwgMTQ0LCA0MiwgMjA5LCA1MywgMTQ0LCA0MiwgMjM5LCAKLSAgICAxNTMsIDE0NCwgNDIsIDI0MCwgMTgsIDE0NCwgNDIsIDIxMiwgNzQsIDE0NCwgNDIsIDIxMywgMTA1LCAxNDQsIDQyLCAyNDEsIAotICAgIDEzNCwgMTQ0LCA0MiwgMjIyLCA1OCwgMTQ0LCA0MiwgMTE4LCAyMzYsIDExLCAxNDQsIDQyLCAxMTgsIDIwOSwgMzYsIDE0NCwgCi0gICAgMTcsIDIwMiwgODQsIDE0NCwgMTcsIDEwNSwgMTQ0LCAxNywgMTA4LCAxNDQsIDE3LCAxNDcsIDE0NCwgMTcsIDE0OSwgMTQ0LCAKLSAgICAxNywgMTcwLCAxNDQsIDE3LCAxOTUsIDE0NCwgMTcsIDIxMywgMTExLCAxNDQsIDE3LCAxOTksIDE0NCwgMTcsIDIyMiwgNjMsIAotICAgIDE0NCwgNDIsIDIzMCwgOTYsIDIzMCwgMTUsIDIsIDI0NywgNTIsIDIzMCwgMTUsIDIsIDI1MCwgMTgwLCAyMzAsIDE1LCAyLCAKLSAgICAyMDUsIDE5OSwgMjMwLCAxNSwgMSwgNjMsIDIzMCwgMTUsIDEsIDI1MiwgMjUsIDIzMCwgMTUsIDEsIDc1LCAyMzAsIDE1LCAKLSAgICAxLCAyMzEsIDgzLCAyMzAsIDE1LCAxLCA2OCwgMjMwLCAxNSwgMSwgMjA2LCAxNzgsIDIzMCwgMTUsIDEsIDc0LCAyMzAsIAotICAgIDE1LCAxLCAyNTEsIDY0LCAyMzAsIDE1LCAxLCA3OCwgMjMwLCAxNSwgMSwgMjUwLCAzNCwgMjMwLCAxNSwgMSwgMTczLCAKLSAgICAyMzAsIDE1LCAxLCAyMjksIDE0NCwgMjMwLCAxNSwgMSwgMjM5LCA4LCAyMzAsIDE1LCAxLCAyMzgsIDExOSwgMjMwLCAxNSwgCi0gICAgMSwgMjIyLCAyMDMsIDIzMCwgMTUsIDEsIDI0NywgOTIsIDIzMCwgMTUsIDEsIDI0NiwgMTk5LCAyMzAsIDE1LCAxLCAyMzAsIAotICAgIDE4MSwgMjMwLCAxNSwgMSwgMjMwLCAxNDksIDIzMCwgMTUsIDEsIDIyMSwgMTEsIDIzMCwgMTUsIDEsIDIwNywgMjQxLCAKLSAgICAyMzAsIDE1LCAxLCAyMDcsIDIyOSwgMjMwLCAxNSwgMSwgMjQ0LCAxMjAsIDIzMCwgMTUsIDEsIDI0NCwgMTA5LCAyMzAsIAotICAgIDE1LCAxLCAyNDQsIDEwNCwgMjMwLCAxNSwgMSwgMjE2LCA2MSwgMjMwLCAxNSwgMSwgMjIxLCAyMjcsIDIzMCwgMTUsIDEsIAotICAgIDIxMCwgMjIsIDIzMCwgMTUsIDEsIDIwOSwgMTA4LCAyMzAsIDE1LCAxLCAyNDQsIDIxMiwgMjMwLCAxNSwgMSwgMjQ0LCAxLCAKLSAgICAyMzAsIDE1LCAxLCAyMDEsIDIwMSwgMjMwLCAxNSwgMSwgMTg1LCAyMzAsIDE1LCAxLCAyMTgsIDIwOCwgMjMwLCAxNSwgMSwgCi0gICAgMjQ5LCAzMiwgMjMwLCAxNSwgMSwgMjQ4LCA5OCwgMjMwLCAxNSwgMSwgMTkyLCAyMzAsIDE1LCAxLCAxOTgsIDIzMCwgMTUsIAotICAgIDEsIDIxNiwgMjIwLCAyMzAsIDE1LCAxLCAyMjgsIDExMywgMjMwLCAxNSwgMSwgMjA2LCA4NiwgMjMwLCAxNSwgMSwgMjEzLCAKLSAgICA5MCwgMjMwLCAxNSwgMSwgMjExLCAxNjQsIDIzMCwgMTUsIDEsIDIxNSwgMzYsIDIzMCwgMTUsIDEsIDE1MiwgMjMwLCAxNSwgCi0gICAgMjIsIDIsIDI1MiwgMjUsIDIzMCwgMTUsIDIyLCAyLCA3NSwgMjMwLCAxNSwgMjIsIDIsIDIzMSwgODMsIDIzMCwgMTUsIDIyLCAKLSAgICAyLCA2OCwgMjMwLCAxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMzAsIDE1LCAyMiwgMiwgNzQsIDIzMCwgMTUsIDIyLCAyLCAyNTEsIAotICAgIDY0LCAyMzAsIDE1LCAyMiwgMiwgNzgsIDIzMCwgMTUsIDIyLCAyLCAyNTAsIDM0LCAyMzAsIDE1LCAyLCAyMDUsIDIwNCwgCi0gICAgMjMwLCAxNSwgMiwgMjIxLCA1MSwgMjMwLCAxNSwgMjUxLCAxNDYsIDU0LCAyMzAsIDE1LCAyNDEsIDU5LCA1NCwgMjMwLCAKLSAgICAxNSwgNDIsIDU0LCAyMzAsIDE1LCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIDUyLCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIAotICAgIDI0NCwgMTY2LCAyMzAsIDE1LCA1MiwgMjQ0LCAxNjYsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE1LCAxOSwgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDksIDI1MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDksIDUsIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjQ3LCA4MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDQsIDE5MywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKLSAgICAyMzgsIDI0OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE0OCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjIsIAotICAgIDIwMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjgsIDg5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMywgOTMsIDIxMSwgCi0gICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA2LCA4MiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTksIDE1MCwgMjExLCAyNDYsIAotICAgIDIxMSwgMjU0LCAxLCAyMDMsIDkxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxNiwgMTk5LCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDEsIDIzNywgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIzMCwgMjAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgCi0gICAgMjMwLCAxNzUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIxLCA4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI1MSwgNzMsIAotICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQxLCAxNTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMxLCA4NCwgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDcsIDE4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMCwgNjAsIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjQxLCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI1LCAxNjEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgCi0gICAgMTcsIDIwMiwgODQsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDEwNSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA4LCAKLSAgICAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0OSwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxNywgMTcwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIxMywgCi0gICAgMTExLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIyMiwgNjMsIDI0NiwgCi0gICAgMTkzLCAyLCAyNDcsIDUyLCAyNDYsIDE5MywgMiwgMjUwLCAxODAsIDI0NiwgMTkzLCAyLCAyMDUsIDE5OSwgMjQ2LCAxOTMsIAotICAgIDEsIDI1MiwgMjUsIDI0NiwgMTkzLCAxLCA3NSwgMjQ2LCAxOTMsIDEsIDY4LCAyNDYsIDE5MywgMSwgNzQsIDI0NiwgMTkzLCAKLSAgICAxLCAyMzAsIDQxLCAyNDYsIDE5MywgMSwgMjI5LCAxNDMsIDI0NiwgMTkzLCAxLCAyMzksIDUsIDI0NiwgMTkzLCAxLCAyMzgsIAotICAgIDExOCwgMjQ2LCAxOTMsIDEsIDIyMiwgMjAyLCAyNDYsIDE5MywgMSwgMjQ3LCA5MSwgMjQ2LCAxOTMsIDEsIDI0NiwgMTk4LCAKLSAgICAyNDYsIDE5MywgMSwgMjMwLCAxODAsIDI0NiwgMTkzLCAxLCAyMzAsIDE0OCwgMjQ2LCAxOTMsIDEsIDIyMSwgMTAsIDI0NiwgCi0gICAgMTkzLCAxLCAyMDcsIDI0MCwgMjQ2LCAxOTMsIDEsIDIwNywgMjI4LCAyNDYsIDE5MywgMSwgMjQ0LCAxMTksIDI0NiwgMTkzLCAKLSAgICAxLCAyNDQsIDEwMywgMjQ2LCAxOTMsIDEsIDIyMSwgMjI2LCAyNDYsIDE5MywgMSwgMjEwLCAxOCwgMjQ2LCAxOTMsIDEsIAotICAgIDIwOSwgMTA3LCAyNDYsIDE5MywgMSwgMjQ0LCAyMTEsIDI0NiwgMTkzLCAxLCAyNDQsIDAsIDI0NiwgMTkzLCAxLCAyMjMsIAotICAgIDEwNiwgMjQ2LCAxOTMsIDEsIDIxOSwgMTY4LCAyNDYsIDE5MywgMSwgMjE4LCAyMDcsIDI0NiwgMTkzLCAxLCAyNDksIDMwLCAKLSAgICAyNDYsIDE5MywgMSwgMjQ4LCA5NywgMjQ2LCAxOTMsIDEsIDIyNSwgMTc1LCAyNDYsIDE5MywgMSwgMjAyLCAxNjcsIDI0NiwgCi0gICAgMTkzLCAxLCAyMDMsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNiwgMjE2LCAyNDYsIDE5MywgMSwgMjI4LCAxMTIsIDI0NiwgMTkzLCAKLSAgICAxLCAyMDQsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNSwgMzMsIDI0NiwgMTkzLCAxLCAyMzcsIDE1NywgMjQ2LCAxOTMsIDIyLCAKLSAgICAyLCA2MywgMjQ2LCAxOTMsIDIyLCAyLCA3NSwgMjQ2LCAxOTMsIDIyLCAyLCAyMzEsIDgzLCAyNDYsIDE5MywgMjIsIDIsIAotICAgIDY4LCAyNDYsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAyNDYsIDE5MywgMjIsIDIsIDc0LCAyNDYsIDE5MywgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDI0NiwgMTkzLCAyMiwgMiwgNzgsIDI0NiwgMTkzLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTMsIDIyLCAyLCAyMjAsIAotICAgIDU3LCAyNDYsIDE5MywgMTU4LCA4MiwgMjQ2LCAxOTMsIDI1MCwgMzUsIDgyLCAyNDYsIDE5MywgMjA1LCAyMDQsIDI0NiwgCi0gICAgMTkzLCAyMjUsIDE3MywgMjQ2LCAxOTMsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MywgMTcsIDEwNSwgMjQ2LCAxOTMsIDE3LCAKLSAgICAxMDgsIDI0NiwgMTkzLCAxNywgMTQ3LCAyNDYsIDE5MywgMTcsIDE0OSwgMjQ2LCAxOTMsIDE3LCAxNzAsIDI0NiwgMTkzLCAKLSAgICAxNywgMTk1LCAyNDYsIDE5MywgMTcsIDIxMywgMTExLCAyNDYsIDE5MywgMTcsIDE5OSwgMjQ2LCAxOTMsIDE3LCAyMjIsIAotICAgIDYzLCAyNDYsIDE5MywgMjE0LCAxNjgsIDgyLCAyNDYsIDE5MywgMjQ0LCAxNjYsIDI0NiwgMTkzLCA1MiwgMjQ0LCAxNjYsIAotICAgIDI0NiwgMTkzLCAyMTcsIDQ3LCA4MiwgMjI1LCAxNDYsIDEsIDYzLCAyMjUsIDE0NiwgMSwgNzUsIDIyNSwgMTQ2LCAxLCA2OCwgCi0gICAgMjI1LCAxNDYsIDEsIDc0LCAyMjUsIDE0NiwgMSwgNzgsIDIyNSwgMTQ2LCAxLCAxNzMsIDIyNSwgMTQ2LCAxLCAyMjksIAotICAgIDE0NCwgMjI1LCAxNDYsIDEsIDIzOSwgOCwgMjI1LCAxNDYsIDEsIDIzOCwgMTE5LCAyMjUsIDE0NiwgMSwgMjQ3LCA5MiwgCi0gICAgMjI1LCAxNDYsIDEsIDI0NiwgMTk5LCAyMjUsIDE0NiwgMSwgMjMwLCAxODEsIDIyNSwgMTQ2LCAxLCAyMzAsIDE0OSwgMjI1LCAKLSAgICAxNDYsIDEsIDIyMSwgMTEsIDIyNSwgMTQ2LCAxLCAyMDcsIDI0MSwgMjI1LCAxNDYsIDEsIDIwNywgMjI5LCAyMjUsIDE0NiwgCi0gICAgMSwgMjQ0LCAxMjAsIDIyNSwgMTQ2LCAxLCAyNDQsIDEwNCwgMjI1LCAxNDYsIDEsIDIyMSwgMjI3LCAyMjUsIDE0NiwgMSwgCi0gICAgMjEwLCAyMiwgMjI1LCAxNDYsIDEsIDIwOSwgMTA4LCAyMjUsIDE0NiwgMSwgMjQ0LCAyMTIsIDIyNSwgMTQ2LCAxLCAyNDQsIAotICAgIDEsIDIyNSwgMTQ2LCAxLCAyMDEsIDIwMSwgMjI1LCAxNDYsIDEsIDE4NSwgMjI1LCAxNDYsIDEsIDIxOCwgMjA4LCAyMjUsIAotICAgIDE0NiwgMSwgMjQ5LCAzMiwgMjI1LCAxNDYsIDEsIDI0OCwgOTgsIDIyNSwgMTQ2LCAxLCAxOTIsIDIyNSwgMTQ2LCAxLCAKLSAgICAyMTYsIDIyMCwgMjI1LCAxNDYsIDEsIDIyOCwgMTEzLCAyMjUsIDE0NiwgMSwgMjA2LCA4NiwgMjI1LCAxNDYsIDEsIDIxNSwgCi0gICAgMzYsIDIyNSwgMTQ2LCAxLCAxNTIsIDIyNSwgMTQ2LCAxLCAyMTUsIDE4NSwgMjI1LCAxNDYsIDIsIDIyMSwgNTEsIDIyNSwgCi0gICAgMTQ2LCAyNTEsIDE0NiwgNTQsIDIyNSwgMTQ2LCAyMTQsIDE2OCwgODIsIDIyNSwgMTQ2LCAzMiwgMjEyLCAyMDYsIDE4MSwgCi0gICAgMiwgMjQ3LCA1MiwgMTgxLCAyLCAyNTAsIDE4MCwgMTgxLCAyLCAyMDUsIDE5OSwgMTgxLCAxLCA2MywgMTgxLCAxLCAyNTIsIAotICAgIDI1LCAxODEsIDEsIDc1LCAxODEsIDEsIDIzMSwgODMsIDE4MSwgMSwgNjgsIDE4MSwgMSwgMjA2LCAxNzgsIDE4MSwgMSwgCi0gICAgMTI1LCAxNDYsIDE4MSwgMSwgMTI1LCAyMTUsIDE4NiwgMTgxLCAxLCAxMjUsIDE1OSwgMTgxLCAxLCAxMjUsIDIyNywgNzgsIAotICAgIDE4MSwgMSwgNzQsIDE4MSwgMSwgMjUxLCA2NCwgMTgxLCAxLCA3OCwgMTgxLCAxLCAyNTAsIDM0LCAxODEsIDEsIDE3MywgCi0gICAgMTgxLCAxLCAyMjksIDE0NCwgMTgxLCAxLCAyMzksIDgsIDE4MSwgMSwgMjM4LCAxMTksIDE4MSwgMSwgMjIyLCAyMDMsIAotICAgIDE4MSwgMSwgMjQ3LCA5MiwgMTgxLCAxLCAyNDYsIDE5OSwgMTgxLCAxLCAyMzAsIDE4MSwgMTgxLCAxLCAyMzAsIDE0OSwgCi0gICAgMTgxLCAxLCAyMjEsIDExLCAxODEsIDEsIDIwNywgMjQxLCAxODEsIDEsIDIwNywgMjI5LCAxODEsIDEsIDI0NCwgMTIwLCAKLSAgICAxODEsIDEsIDI0NCwgMTA0LCAxODEsIDEsIDIyMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDE4MSwgMSwgMjA5LCAxMDgsIAotICAgIDE4MSwgMSwgMjQ0LCAyMTIsIDE4MSwgMSwgMjQ0LCAxLCAxODEsIDEsIDIwMSwgMjAxLCAxODEsIDEsIDE4NSwgMTgxLCAxLCAKLSAgICAyMTgsIDIwOCwgMTgxLCAxLCAyNDksIDMyLCAxODEsIDEsIDI0OCwgOTgsIDE4MSwgMSwgMTkyLCAxODEsIDEsIDE5OCwgCi0gICAgMTgxLCAxLCAyMTYsIDIyMCwgMTgxLCAxLCAyMjgsIDExMywgMTgxLCAxLCAyMjcsIDc3LCAxODEsIDEsIDIwNiwgODYsIAotICAgIDE4MSwgMSwgMjEzLCA5MCwgMTgxLCAxLCAyMTEsIDE2NCwgMTgxLCAxLCAyMTUsIDM2LCAxODEsIDEsIDE1MiwgMTgxLCAyMiwgCi0gICAgMiwgMjUyLCAyNSwgMTgxLCAyMiwgMiwgNzUsIDE4MSwgMjIsIDIsIDIzMSwgODMsIDE4MSwgMjIsIDIsIDY4LCAxODEsIDIyLCAKLSAgICAyLCAyMDYsIDE3OCwgMTgxLCAyMiwgMiwgMTI1LCAxNDYsIDE4MSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4MSwgMjIsIDIsIAotICAgIDEyNSwgMTU5LCAxODEsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE4MSwgMjIsIDIsIDc0LCAxODEsIDIyLCAyLCAyNTEsIDY0LCAKLSAgICAxODEsIDIyLCAyLCA3OCwgMTgxLCAyMiwgMiwgMjUwLCAzNCwgMTgxLCAyLCAyMDUsIDIwNCwgMTgxLCAyLCAyNTAsIDE3LCAKLSAgICAxODEsIDIsIDIzMCwgMTM1LCAxODEsIDIsIDIwNiwgMjIyLCAxODEsIDIyMCwgMzksIDE4MSwgMjQ0LCAxNjYsIDE4MSwgNTIsIAotICAgIDI0NCwgMTY2LCAxODEsIDI1MSwgMTQ2LCA1NCwgMTgxLCAyMTMsIDEzMCwgMTgxLCAyMTQsIDIzOSwgODIsIDE4MSwgMiwgCi0gICAgMjIxLCA1MSwgMTgxLCAyMiwgNjUsIDgyLCAxODEsIDI0MCwgMTk5LCAyMTIsIDIyOCwgMjIsIDgyLCAxODEsIDIxMCwgMTgwLCAKLSAgICA4MiwgMTgxLCAxNywgMjAyLCA4NCwgMTgxLCAxNywgMTA1LCAxODEsIDE3LCAxMDgsIDE4MSwgMTcsIDE0NywgMTgxLCAxNywgCi0gICAgMTQ5LCAxODEsIDE3LCAxNzAsIDE4MSwgMTcsIDE5NSwgMTgxLCAxNywgMjEzLCAxMTEsIDE4MSwgMTcsIDE5OSwgMTgxLCAKLSAgICAxNywgMjIyLCA2MywgMTgxLCAyNDEsIDEyOCwgMTgxLCAyLCAyMTIsIDE1NywgMTgxLCAyMzcsIDU4LCAxODEsIDI0NSwgCi0gICAgMTkxLCA1NCwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MiwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MSwgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDEwNSwgMTQwLCAyNTAsIDEyNiwgMTcsIDEwOCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE0NywgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDE0OSwgMTQwLCAyNTAsIDEyNiwgMTcsIDE3MCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE5NSwgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDIxMywgMTExLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk5LCAxNDAsIDI1MCwgMTI2LCAxNywgMjIyLCA2MywgMTQwLCAKLSAgICAyNTAsIDEyNiwgNDIsIDIwOSwgMTUyLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjA3LCAxNTEsIDE0MCwgMjUwLCAxMjYsIDQyLCAKLSAgICAyMDksIDUzLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjM5LCAxNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyNDAsIDE4LCAxNDAsIAotICAgIDI1MCwgMTI2LCA0MiwgMjEyLCA3NCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIxMywgMTA1LCAxNDAsIDI1MCwgMTI2LCA0MiwgCi0gICAgMjQxLCAxMzQsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMjIsIDU4LCAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMzYsIDExLCAKLSAgICAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDExNCwgMSwgNjMsIDIyOSwgMTE0LCAxLCAyNTIsIDI1LCAKLSAgICAyMjksIDExNCwgMSwgNzUsIDIyOSwgMTE0LCAxLCA2OCwgMjI5LCAxMTQsIDEsIDc0LCAyMjksIDExNCwgMSwgMjUxLCA2NCwgCi0gICAgMjI5LCAxMTQsIDEsIDc4LCAyMjksIDExNCwgMSwgMjUwLCAzNCwgMjI5LCAxMTQsIDEsIDE3MywgMjI5LCAxMTQsIDEsIAotICAgIDIyOSwgMTQ0LCAyMjksIDExNCwgMSwgMjM5LCA4LCAyMjksIDExNCwgMSwgMjM4LCAxNTUsIDIyOSwgMTE0LCAxLCAyMzgsIAotICAgIDExOSwgMjI5LCAxMTQsIDEsIDIyMiwgMjAzLCAyMjksIDExNCwgMSwgMjQ3LCA5MiwgMjI5LCAxMTQsIDEsIDI0NiwgMTk5LCAKLSAgICAyMjksIDExNCwgMSwgMjMwLCAxODEsIDIyOSwgMTE0LCAxLCAyMzAsIDEyOSwgMjI5LCAxMTQsIDEsIDIyMSwgMTEsIDIyOSwgCi0gICAgMTE0LCAxLCAyMDcsIDI0MSwgMjI5LCAxMTQsIDEsIDIwNywgMjI5LCAyMjksIDExNCwgMSwgMjQ0LCAxMjAsIDIyOSwgMTE0LCAKLSAgICAxLCAyNDQsIDEwNCwgMjI5LCAxMTQsIDEsIDIyMSwgMjI3LCAyMjksIDExNCwgMSwgMjEwLCAyMiwgMjI5LCAxMTQsIDEsIAotICAgIDIwOSwgMTA4LCAyMjksIDExNCwgMSwgMjQ0LCAyMTIsIDIyOSwgMTE0LCAxLCAyNDQsIDExMCwgMjI5LCAxMTQsIDEsIDI0NCwgCi0gICAgMSwgMjI5LCAxMTQsIDEsIDIwMSwgMjAxLCAyMjksIDExNCwgMSwgMTg1LCAyMjksIDExNCwgMSwgMjE4LCAyMDgsIDIyOSwgCi0gICAgMTE0LCAxLCAyNDksIDMyLCAyMjksIDExNCwgMSwgMjQ4LCAxOTgsIDIyOSwgMTE0LCAxLCAyNDgsIDk4LCAyMjksIDExNCwgCi0gICAgMSwgMTkyLCAyMjksIDExNCwgMSwgMTk4LCAyMjksIDExNCwgMSwgMjE2LCAyMjAsIDIyOSwgMTE0LCAxLCAyMjgsIDExMywgCi0gICAgMjI5LCAxMTQsIDEsIDIwNiwgODYsIDIyOSwgMTE0LCAxLCAyMTUsIDM2LCAyMjksIDExNCwgMSwgMTUyLCAyMjksIDExNCwgCi0gICAgMSwgMjI3LCA3NywgMjI5LCAxMTQsIDIyLCAyLCAyNTIsIDI1LCAyMjksIDExNCwgMjIsIDIsIDc1LCAyMjksIDExNCwgMjIsIAotICAgIDIsIDIzMSwgODMsIDIyOSwgMTE0LCAyMiwgMiwgNjgsIDIyOSwgMTE0LCAyMiwgMiwgNzQsIDIyOSwgMTE0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMjI5LCAxMTQsIDIyLCAyLCA3OCwgMjI5LCAxMTQsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDExNCwgMiwgMjUwLCAKLSAgICAxODAsIDIyOSwgMTE0LCAyLCAyMDUsIDIwNCwgMjI5LCAxMTQsIDIsIDIyMSwgNTEsIDIyOSwgMTE0LCAyLCAyMTMsIDgwLCAKLSAgICAyMjksIDExNCwgMjQ0LCAxNjYsIDIyOSwgMTE0LCA1MiwgMjQ0LCAxNjYsIDIyOSwgMTE0LCAyMDMsIDIzOCwgMjEzLCAxMzAsIAotICAgIDIyOSwgMTE0LCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCA1MiwgMjE0LCAxNjgsIDgyLCAyMjksIDExNCwgMjUxLCAxNDYsIAotICAgIDU0LCAyMjMsIDIzMCwgMSwgNjMsIDIyMywgMjMwLCAxLCA3NSwgMjIzLCAyMzAsIDEsIDY4LCAyMjMsIDIzMCwgMSwgNzQsIAotICAgIDIyMywgMjMwLCAxLCAxNzMsIDIyMywgMjMwLCAxLCAyMjksIDE0NCwgMjIzLCAyMzAsIDEsIDIzOSwgOCwgMjIzLCAyMzAsIAotICAgIDEsIDIzOCwgMTE5LCAyMjMsIDIzMCwgMSwgMjQ3LCA5MiwgMjIzLCAyMzAsIDEsIDI0NiwgMTk5LCAyMjMsIDIzMCwgMSwgCi0gICAgMjMwLCAxODEsIDIyMywgMjMwLCAxLCAyMzAsIDEyOSwgMjIzLCAyMzAsIDEsIDIyMSwgMTEsIDIyMywgMjMwLCAxLCAyMDcsIAotICAgIDI0MSwgMjIzLCAyMzAsIDEsIDIwNywgMjI5LCAyMjMsIDIzMCwgMSwgMjQ0LCAxMjAsIDIyMywgMjMwLCAxLCAyNDQsIDExMCwgCi0gICAgMjIzLCAyMzAsIDEsIDI0NCwgMTA0LCAyMjMsIDIzMCwgMSwgMjIxLCAyMjcsIDIyMywgMjMwLCAxLCAyMTAsIDIyLCAyMjMsIAotICAgIDIzMCwgMSwgMjA5LCAxMDgsIDIyMywgMjMwLCAxLCAyNDQsIDIxMiwgMjIzLCAyMzAsIDEsIDI0NCwgMSwgMjIzLCAyMzAsIAotICAgIDEsIDIwMSwgMjAxLCAyMjMsIDIzMCwgMSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE4LCAyMDgsIDIyMywgMjMwLCAxLCAyNDksIAotICAgIDMyLCAyMjMsIDIzMCwgMSwgMjQ4LCA5OCwgMjIzLCAyMzAsIDEsIDE5MiwgMjIzLCAyMzAsIDEsIDE5OCwgMjIzLCAyMzAsIAotICAgIDEsIDIxNiwgMjIwLCAyMjMsIDIzMCwgMSwgMjI4LCAxMTMsIDIyMywgMjMwLCAxLCAyMDYsIDg2LCAyMjMsIDIzMCwgMSwgCi0gICAgMjE1LCAzNiwgMjIzLCAyMzAsIDEsIDE1MiwgMjIzLCAyMzAsIDEsIDIxNSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE2LCA2MSwgCi0gICAgMjIzLCAyMzAsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMDYsIDEsIDYzLCAyMjksIDEwNiwgMSwgMjUyLCAyNSwgMjI5LCAxMDYsIAotICAgIDEsIDc1LCAyMjksIDEwNiwgMSwgMjMxLCA4MywgMjI5LCAxMDYsIDEsIDY4LCAyMjksIDEwNiwgMSwgMjA2LCAxNzgsIDIyOSwgCi0gICAgMTA2LCAxLCA3NCwgMjI5LCAxMDYsIDEsIDI1MSwgNjQsIDIyOSwgMTA2LCAxLCA3OCwgMjI5LCAxMDYsIDEsIDI1MCwgMzQsIAotICAgIDIyOSwgMTA2LCAxLCAxNzMsIDIyOSwgMTA2LCAxLCAyMjksIDE0NCwgMjI5LCAxMDYsIDEsIDIzOSwgOCwgMjI5LCAxMDYsIAotICAgIDEsIDIzOCwgMTU1LCAyMjksIDEwNiwgMSwgMjM4LCAxMTksIDIyOSwgMTA2LCAxLCAyMjIsIDIwMywgMjI5LCAxMDYsIDEsIAotICAgIDI0NywgOTIsIDIyOSwgMTA2LCAxLCAyNDYsIDE5OSwgMjI5LCAxMDYsIDEsIDIzMCwgMTgxLCAyMjksIDEwNiwgMSwgMjMwLCAKLSAgICAxMjksIDIyOSwgMTA2LCAxLCAyMzAsIDE0OSwgMjI5LCAxMDYsIDEsIDIyMSwgMTEsIDIyOSwgMTA2LCAxLCAyMDcsIDI0MSwgCi0gICAgMjI5LCAxMDYsIDEsIDIwNywgMjI5LCAyMjksIDEwNiwgMSwgMjQ0LCAxMjAsIDIyOSwgMTA2LCAxLCAyNDQsIDExMCwgMjI5LCAKLSAgICAxMDYsIDEsIDIxNSwgMTg1LCAyMjksIDEwNiwgMSwgMjQ0LCAxMDQsIDIyOSwgMTA2LCAxLCAyMjEsIDIyNywgMjI5LCAxMDYsIAotICAgIDEsIDIxMCwgMjIsIDIyOSwgMTA2LCAxLCAyMDksIDEwOCwgMjI5LCAxMDYsIDEsIDI0NCwgMjEyLCAyMjksIDEwNiwgMSwgCi0gICAgMjQ0LCAxLCAyMjksIDEwNiwgMSwgMjAxLCAyMDEsIDIyOSwgMTA2LCAxLCAxODUsIDIyOSwgMTA2LCAxLCAyMTgsIDIwOCwgCi0gICAgMjI5LCAxMDYsIDEsIDI0OSwgMzIsIDIyOSwgMTA2LCAxLCAyNDgsIDE5OCwgMjI5LCAxMDYsIDEsIDI0OCwgOTgsIDIyOSwgCi0gICAgMTA2LCAxLCAxOTIsIDIyOSwgMTA2LCAxLCAxOTgsIDIyOSwgMTA2LCAxLCAyMTYsIDIyMCwgMjI5LCAxMDYsIDEsIDIyOCwgCi0gICAgMTEzLCAyMjksIDEwNiwgMSwgMjA2LCA4NiwgMjI5LCAxMDYsIDEsIDIxMywgOTAsIDIyOSwgMTA2LCAxLCAyMTUsIDM2LCAKLSAgICAyMjksIDEwNiwgMSwgMTUyLCAyMjksIDEwNiwgMiwgMjUwLCAxODAsIDIyOSwgMTA2LCAyMiwgMiwgMjUyLCAyNSwgMjI5LCAKLSAgICAxMDYsIDIyLCAyLCA3NSwgMjI5LCAxMDYsIDIyLCAyLCAyMzEsIDgzLCAyMjksIDEwNiwgMjIsIDIsIDY4LCAyMjksIDEwNiwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAyMjksIDEwNiwgMjIsIDIsIDc0LCAyMjksIDEwNiwgMjIsIDIsIDI1MSwgNjQsIDIyOSwgMTA2LCAKLSAgICAyMiwgMiwgNzgsIDIyOSwgMTA2LCAyMiwgMiwgMjUwLCAzNCwgMjI5LCAxMDYsIDIsIDIyMSwgNTEsIDIyOSwgMTA2LCAyLCAKLSAgICAyMDUsIDIwNCwgMjI5LCAxMDYsIDE3LCAyMDIsIDg0LCAyMjksIDEwNiwgMTcsIDEwNSwgMjI5LCAxMDYsIDE3LCAxMDgsIAotICAgIDIyOSwgMTA2LCAxNywgMTQ3LCAyMjksIDEwNiwgMTcsIDE0OSwgMjI5LCAxMDYsIDE3LCAxNzAsIDIyOSwgMTA2LCAxNywgCi0gICAgMTk1LCAyMjksIDEwNiwgMTcsIDIxMywgMTExLCAyMjksIDEwNiwgMTcsIDE5OSwgMjI5LCAxMDYsIDE3LCAyMjIsIDYzLCAKLSAgICAyMzgsIDYsIDIsIDM5LCAyNTAsIDE4MSwgNTUsIDIzOCwgNiwgMiwgMjQ3LCA1MiwgMjM4LCA2LCAyLCAyNTAsIDE4MCwgCi0gICAgMjM4LCA2LCAyLCAyMDUsIDE5OSwgMjM4LCA2LCAxLCA2MywgMjM4LCA2LCAxLCAyNTIsIDI1LCAyMzgsIDYsIDEsIDc1LCAKLSAgICAyMzgsIDYsIDEsIDIzMSwgODMsIDIzOCwgNiwgMSwgNjgsIDIzOCwgNiwgMSwgMjA2LCAxNzgsIDIzOCwgNiwgMSwgMTI1LCAKLSAgICAxNDYsIDIzOCwgNiwgMSwgMTI1LCAxNTksIDIzOCwgNiwgMSwgMjQxLCAxNjEsIDIzOCwgNiwgMSwgMjUxLCA2NCwgMjM4LCAKLSAgICA2LCAxLCAyMjAsIDE4LCAyMzgsIDYsIDEsIDI1MCwgMzQsIDIzOCwgNiwgMSwgMTczLCAyMzgsIDYsIDEsIDIyOSwgMTQ0LCAKLSAgICAyMzgsIDYsIDEsIDIzOSwgOCwgMjM4LCA2LCAxLCAyMzgsIDExOSwgMjM4LCA2LCAxLCAyMjIsIDIwMywgMjM4LCA2LCAxLCAKLSAgICAyNDcsIDkyLCAyMzgsIDYsIDEsIDI0NiwgMTk5LCAyMzgsIDYsIDEsIDIzMCwgMTgxLCAyMzgsIDYsIDEsIDIzMCwgMTQ5LCAKLSAgICAyMzgsIDYsIDEsIDIyMSwgMTEsIDIzOCwgNiwgMSwgMjA3LCAyNDEsIDIzOCwgNiwgMSwgMjA3LCAyMjksIDIzOCwgNiwgMSwgCi0gICAgMjQ0LCAxMjAsIDIzOCwgNiwgMSwgMjQ0LCAxMDQsIDIzOCwgNiwgMSwgMjIxLCAyMjcsIDIzOCwgNiwgMSwgMjEwLCAyMiwgCi0gICAgMjM4LCA2LCAxLCAyMDksIDEwOCwgMjM4LCA2LCAxLCAyNDQsIDIxMiwgMjM4LCA2LCAxLCAyNDQsIDEsIDIzOCwgNiwgMSwgCi0gICAgMjAxLCAyMDEsIDIzOCwgNiwgMSwgMTg1LCAyMzgsIDYsIDEsIDIxOCwgMjA4LCAyMzgsIDYsIDEsIDI0OSwgMzIsIDIzOCwgCi0gICAgNiwgMSwgMjQ4LCA5OCwgMjM4LCA2LCAxLCAxOTIsIDIzOCwgNiwgMSwgMTk4LCAyMzgsIDYsIDEsIDIxNiwgMjIwLCAyMzgsIAotICAgIDYsIDEsIDIyOCwgMTEzLCAyMzgsIDYsIDEsIDIyNywgNzcsIDIzOCwgNiwgMSwgMjA2LCA4NiwgMjM4LCA2LCAxLCAyMTMsIAotICAgIDkwLCAyMzgsIDYsIDEsIDIxMSwgMTY0LCAyMzgsIDYsIDEsIDIxNSwgMzYsIDIzOCwgNiwgMSwgMTUyLCAyMzgsIDYsIDIsIAotICAgIDIyMSwgNTEsIDIzOCwgNiwgMiwgMjUwLCAxNywgMjM4LCA2LCAyMiwgMiwgMjUyLCAyNSwgMjM4LCA2LCAyMiwgMiwgNzUsIAotICAgIDIzOCwgNiwgMjIsIDIsIDIzMSwgODMsIDIzOCwgNiwgMjIsIDIsIDY4LCAyMzgsIDYsIDIyLCAyLCAyMDYsIDE3OCwgMjM4LCAKLSAgICA2LCAyMiwgMiwgMTI1LCAxNDYsIDIzOCwgNiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMjIsIDIsIDI0MSwgCi0gICAgMTYxLCAyMzgsIDYsIDIyLCAyLCAyNTEsIDY0LCAyMzgsIDYsIDIyLCAyLCAyMjAsIDE4LCAyMzgsIDYsIDIyLCAyLCAyNTAsIAotICAgIDM0LCAyMzgsIDYsIDIsIDIwNSwgMjA0LCAyMzgsIDYsIDIyMCwgMzksIDIzOCwgNiwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAKLSAgICAyMzgsIDYsIDIsIDIxOCwgNzQsIDIzOCwgNiwgMSwgMjA2LCA1MiwgMjUwLCAxODAsIDIzOCwgNiwgMSwgMjA2LCA1MiwgNTIsIAotICAgIDI1MCwgMTgwLCAyMzgsIDYsIDEsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMSwgMTI1LCAyMjcsIDc4LCAyMzgsIDYsIDIyLCAKLSAgICAyLCAxMjUsIDE1OSwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAzOSwgMjM4LCA2LCAxNywgMjAyLCA4NCwgMzksIAotICAgIDIzOCwgNiwgMTcsIDEwNSwgMzksIDIzOCwgNiwgMTcsIDEwOCwgMzksIDIzOCwgNiwgMTcsIDE0NywgMzksIDIzOCwgNiwgCi0gICAgMTcsIDE0OSwgMzksIDIzOCwgNiwgMTcsIDE3MCwgMzksIDIzOCwgNiwgMTcsIDE5NSwgMzksIDIzOCwgNiwgMSwgNjMsIDM5LCAKLSAgICAyMzgsIDYsIDEsIDE3MywgMzksIDIzOCwgNiwgMSwgMjAxLCAyMDEsIDM5LCAyMzgsIDYsIDEsIDIwNSwgMjMwLCAzOSwgCi0gICAgMjM4LCA2LCAxLCAxODUsIDIwOCwgMjA0LCAyNTAsIDIwOSwgMjA4LCAyMDQsIDEsIDYzLCAyMDgsIDIwNCwgMSwgMjUyLCAKLSAgICAyNSwgMjA4LCAyMDQsIDEsIDc1LCAyMDgsIDIwNCwgMSwgMjMxLCA4MywgMjA4LCAyMDQsIDEsIDY4LCAyMDgsIDIwNCwgMSwgCi0gICAgMjA2LCAxNzgsIDIwOCwgMjA0LCAxLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDEsIDEyNSwgMjE1LCAxODYsIDIwOCwgMjA0LCAxLCAKLSAgICAxMjUsIDE1OSwgMjA4LCAyMDQsIDEsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIDEsIDc0LCAyMDgsIDIwNCwgMSwgMjUxLCAKLSAgICA2NCwgMjA4LCAyMDQsIDEsIDc4LCAyMDgsIDIwNCwgMSwgMjUwLCAzNCwgMjA4LCAyMDQsIDEsIDE3MywgMjA4LCAyMDQsIDEsIAotICAgIDIyOSwgMTQ0LCAyMDgsIDIwNCwgMSwgMjM5LCA4LCAyMDgsIDIwNCwgMSwgMjM4LCAxMTksIDIwOCwgMjA0LCAxLCAyMjIsIAotICAgIDIwMywgMjA4LCAyMDQsIDEsIDI0NywgOTIsIDIwOCwgMjA0LCAxLCAyNDYsIDE5OSwgMjA4LCAyMDQsIDEsIDIzMCwgMTgxLCAKLSAgICAyMDgsIDIwNCwgMSwgMjMwLCAxNDksIDIwOCwgMjA0LCAxLCAyMjEsIDExLCAyMDgsIDIwNCwgMSwgMjA3LCAyNDEsIDIwOCwgCi0gICAgMjA0LCAxLCAyMDcsIDIyOSwgMjA4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMDgsIDIwNCwgMSwgMjQ0LCAxMDQsIDIwOCwgMjA0LCAKLSAgICAxLCAyMjEsIDIyNywgMjA4LCAyMDQsIDEsIDIxMCwgMjIsIDIwOCwgMjA0LCAxLCAyMDksIDEwOCwgMjA4LCAyMDQsIDEsIAotICAgIDI0NCwgMjEyLCAyMDgsIDIwNCwgMSwgMjQ0LCAxLCAyMDgsIDIwNCwgMSwgMjAxLCAyMDEsIDIwOCwgMjA0LCAxLCAxODUsIAotICAgIDIwOCwgMjA0LCAxLCAyMTgsIDIwOCwgMjA4LCAyMDQsIDEsIDI0OSwgMzIsIDIwOCwgMjA0LCAxLCAyNDgsIDk4LCAyMDgsIAotICAgIDIwNCwgMSwgMTkyLCAyMDgsIDIwNCwgMSwgMTk4LCAyMDgsIDIwNCwgMSwgMjE2LCAyMjAsIDIwOCwgMjA0LCAxLCAyMjgsIAotICAgIDExMywgMjA4LCAyMDQsIDEsIDIwNiwgODYsIDIwOCwgMjA0LCAxLCAyMTMsIDkwLCAyMDgsIDIwNCwgMSwgMjExLCAxNjQsIAotICAgIDIwOCwgMjA0LCAxLCAyMTUsIDM2LCAyMDgsIDIwNCwgMSwgMTUyLCAyMDgsIDIwNCwgMjIsIDIsIDI1MiwgMjUsIDIwOCwgCi0gICAgMjA0LCAyMiwgMiwgNzUsIDIwOCwgMjA0LCAyMiwgMiwgMjMxLCA4MywgMjA4LCAyMDQsIDIyLCAyLCA2OCwgMjA4LCAyMDQsIAotICAgIDIyLCAyLCAyMDYsIDE3OCwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDIxNSwgCi0gICAgMTg2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTU5LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIAotICAgIDIyLCAyLCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzQsIDIwOCwgMjA0LCAyMiwgMiwgMjUxLCA2NCwgMjA4LCAKLSAgICAyMDQsIDIyLCAyLCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzgsIDIwOCwgMjA0LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgMjA4LCAyMDQsIDIsIDI0NywgNTIsIDIwOCwgMjA0LCAyLCAyNTAsIDE4MCwgMjA4LCAyMDQsIDIsIDIwNSwgMTk5LCAyMDgsIAotICAgIDIwNCwgMiwgMjA1LCAyMDQsIDIwOCwgMjA0LCAyLCAyMjEsIDUxLCAyMDgsIDIwNCwgMiwgMjUwLCAxNywgMjA4LCAyMDQsIAotICAgIDIzNywgMTkxLCAyMDgsIDIwNCwgMjUxLCAxNDYsIDU0LCAyMDgsIDIwNCwgMjIwLCAzOSwgMjA4LCAyMDQsIDE3LCAyMDIsIAotICAgIDg0LCAyMDgsIDIwNCwgMTcsIDEwNSwgMjA4LCAyMDQsIDE3LCAxMDgsIDIwOCwgMjA0LCAxNywgMTQ3LCAyMDgsIDIwNCwgCi0gICAgMTcsIDE0OSwgMjA4LCAyMDQsIDE3LCAxNzAsIDIwOCwgMjA0LCAxNywgMTk1LCAyMDgsIDIwNCwgMTcsIDIxMywgMTExLCAKLSAgICAyMDgsIDIwNCwgMTcsIDE5OSwgMjA4LCAyMDQsIDE3LCAyMjIsIDYzLCAxODYsIDEsIDYzLCAxODYsIDEsIDI1MiwgMjUsIAotICAgIDE4NiwgMSwgNzUsIDE4NiwgMSwgMjMxLCA4MywgMTg2LCAxLCA2OCwgMTg2LCAxLCAyMDYsIDE3OCwgMTg2LCAxLCAxMjUsIAotICAgIDE0NiwgMTg2LCAxLCAxMjUsIDIxNSwgMTg2LCAxODYsIDEsIDEyNSwgMTU5LCAxODYsIDEsIDEyNSwgMjI3LCA3OCwgMTg2LCAKLSAgICAxLCA3NCwgMTg2LCAxLCAyNTEsIDY0LCAxODYsIDEsIDc4LCAxODYsIDEsIDI1MCwgMzQsIDE4NiwgMSwgMTczLCAxODYsIDEsIAotICAgIDIyOSwgMTQ0LCAxODYsIDEsIDIzOSwgOCwgMTg2LCAxLCAyMzgsIDExOSwgMTg2LCAxLCAyMjIsIDIwMywgMTg2LCAxLCAKLSAgICAyNDcsIDkyLCAxODYsIDEsIDI0NiwgMTk5LCAxODYsIDEsIDIzMCwgMTgxLCAxODYsIDEsIDIzMCwgMTQ5LCAxODYsIDEsIAotICAgIDIyMSwgMTEsIDE4NiwgMSwgMjA3LCAyNDEsIDE4NiwgMSwgMjA3LCAyMjksIDE4NiwgMSwgMjQ0LCAxMjAsIDE4NiwgMSwgCi0gICAgMjQ0LCAxMDQsIDE4NiwgMSwgMjIxLCAyMjcsIDE4NiwgMSwgMjEwLCAyMiwgMTg2LCAxLCAyMDksIDEwOCwgMTg2LCAxLCAKLSAgICAyNDQsIDIxMiwgMTg2LCAxLCAyNDQsIDEsIDE4NiwgMSwgMjAxLCAyMDEsIDE4NiwgMSwgMTg1LCAxODYsIDEsIDIxOCwgCi0gICAgMjA4LCAxODYsIDEsIDI0OSwgMzIsIDE4NiwgMSwgMjQ4LCA5OCwgMTg2LCAxLCAxOTIsIDE4NiwgMSwgMTk4LCAxODYsIDEsIAotICAgIDIxNiwgMjIwLCAxODYsIDEsIDIyOCwgMTEzLCAxODYsIDEsIDIwNiwgODYsIDE4NiwgMSwgMjEzLCA5MCwgMTg2LCAxLCAKLSAgICAyMTEsIDE2NCwgMTg2LCAxLCAyMTUsIDM2LCAxODYsIDEsIDE1MiwgMTg2LCAyMiwgMiwgMjUyLCAyNSwgMTg2LCAyMiwgMiwgCi0gICAgNzUsIDE4NiwgMjIsIDIsIDIzMSwgODMsIDE4NiwgMjIsIDIsIDY4LCAxODYsIDIyLCAyLCAyMDYsIDE3OCwgMTg2LCAyMiwgCi0gICAgMiwgMTI1LCAxNDYsIDE4NiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4NiwgMjIsIDIsIDc0LCAxODYsIDIyLCAyLCAyNTEsIAotICAgIDY0LCAxODYsIDIyLCAyLCA3OCwgMTg2LCAyMiwgMiwgMjUwLCAzNCwgMTg2LCAyLCAyNDcsIDUyLCAxODYsIDIsIDI1MCwgCi0gICAgMTgwLCAxODYsIDIsIDIwNSwgMTk5LCAxODYsIDIsIDIwNSwgMjA0LCAxODYsIDIsIDIyMSwgNTEsIDE4NiwgMiwgMjEyLCAKLSAgICAxNTcsIDE4NiwgMjQ0LCAxNjYsIDE4NiwgNTIsIDI0NCwgMTY2LCAxODYsIDIxMywgMTMxLCAyNDMsIDg1LCAxODYsIDIxMywgCi0gICAgMTMxLCAxNDIsIDE4NiwgMjE2LCA5OCwgMjI1LCA5MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkxLCAxODYsIDIxNiwgOTgsIAotICAgIDIyNSwgOTAsIDE4NiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEzLCA4MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAKLSAgICAyNSwgMjA3LCA5MiwgMjE5LCAyMzIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA4MCwgMjUsIDI0MiwgODMsIDI0NSwgCi0gICAgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgMjQ1LCAxMzcsIDE4NiwgMjE0LCAKLSAgICAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgCi0gICAgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAKLSAgICAyNTIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgNTIsIDIxNSwgMjUzLCAzLCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAKLSAgICAzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA3MCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIAotICAgIDEzMSwgMywgMjE3LCA1OCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjEzLCAxMjgsIDI0NSwgMTM3LCAKLSAgICAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIAotICAgIDU5LCAyNSwgMTIwLCAyNDEsIDg2LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMzksIDE0NywgMjQxLCAKLSAgICA4NiwgMTg2LCAxLCAyMDksIDMyLCAyNTAsIDI1NSwgNzUsIDE4NiwgMSwgMjA3LCAxMzYsIDI1MCwgMjU1LCA3NSwgMTg2LCAKLSAgICAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDIzMSwgODMsIDE4NiwgMSwgMjUwLCAyNTUsIDY4LCAxODYsIDIyLCAyLCAyNTAsIAotICAgIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgMjU1LCAyMDYsIDE3OCwgMjI0LCA3NCwgMSwgNjMsIDIyNCwgNzQsIDEsIDI1MiwgCi0gICAgMjUsIDIyNCwgNzQsIDEsIDc1LCAyMjQsIDc0LCAxLCAyMzEsIDgzLCAyMjQsIDc0LCAxLCA2OCwgMjI0LCA3NCwgMSwgMjA2LCAKLSAgICAxNzgsIDIyNCwgNzQsIDEsIDEyNSwgMTQ2LCAyMjQsIDc0LCAxLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAxLCAxMjUsIAotICAgIDE1OSwgMjI0LCA3NCwgMSwgMTI1LCAyMjcsIDc4LCAyMjQsIDc0LCAxLCA3NCwgMjI0LCA3NCwgMSwgMjUxLCA2NCwgMjI0LCAKLSAgICA3NCwgMSwgNzgsIDIyNCwgNzQsIDEsIDI1MCwgMzQsIDIyNCwgNzQsIDEsIDE3MywgMjI0LCA3NCwgMSwgMjI5LCAxNDQsIAotICAgIDIyNCwgNzQsIDEsIDIzOSwgOCwgMjI0LCA3NCwgMSwgMjM4LCAxMTksIDIyNCwgNzQsIDEsIDIyMiwgMjAzLCAyMjQsIDc0LCAKLSAgICAxLCAyNDcsIDkyLCAyMjQsIDc0LCAxLCAyNDYsIDE5OSwgMjI0LCA3NCwgMSwgMjMwLCAxODEsIDIyNCwgNzQsIDEsIDIzMCwgCi0gICAgMTQ5LCAyMjQsIDc0LCAxLCAyMjEsIDExLCAyMjQsIDc0LCAxLCAyMDcsIDI0MSwgMjI0LCA3NCwgMSwgMjA3LCAyMjksIAotICAgIDIyNCwgNzQsIDEsIDI0NCwgMTIwLCAyMjQsIDc0LCAxLCAyNDQsIDEwNCwgMjI0LCA3NCwgMSwgMjIxLCAyMjcsIDIyNCwgCi0gICAgNzQsIDEsIDIxMCwgMjIsIDIyNCwgNzQsIDEsIDIwOSwgMTA4LCAyMjQsIDc0LCAxLCAyNDQsIDIxMiwgMjI0LCA3NCwgMSwgCi0gICAgMjQ0LCAxLCAyMjQsIDc0LCAxLCAyMDEsIDIwMSwgMjI0LCA3NCwgMSwgMTg1LCAyMjQsIDc0LCAxLCAyMTgsIDIwOCwgMjI0LCAKLSAgICA3NCwgMSwgMjQ5LCAzMiwgMjI0LCA3NCwgMSwgMjQ4LCA5OCwgMjI0LCA3NCwgMSwgMTkyLCAyMjQsIDc0LCAxLCAxOTgsIAotICAgIDIyNCwgNzQsIDEsIDIxNiwgMjIwLCAyMjQsIDc0LCAxLCAyMjgsIDExMywgMjI0LCA3NCwgMSwgMjA2LCA4NiwgMjI0LCA3NCwgCi0gICAgMSwgMjEzLCA5MCwgMjI0LCA3NCwgMSwgMjExLCAxNjQsIDIyNCwgNzQsIDEsIDIxNSwgMzYsIDIyNCwgNzQsIDEsIDE1MiwgCi0gICAgMjI0LCA3NCwgMSwgMjI3LCA3NywgMjI0LCA3NCwgMjIsIDIsIDI1MiwgMjUsIDIyNCwgNzQsIDIyLCAyLCA3NSwgMjI0LCAKLSAgICA3NCwgMjIsIDIsIDIzMSwgODMsIDIyNCwgNzQsIDIyLCAyLCA2OCwgMjI0LCA3NCwgMjIsIDIsIDIwNiwgMTc4LCAyMjQsIAotICAgIDc0LCAyMiwgMiwgMTI1LCAxNDYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDIyLCAyLCA3NCwgMjI0LCA3NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDIyNCwgNzQsIDIyLCAyLCA3OCwgMjI0LCA3NCwgMjIsIDIsIDI1MCwgMzQsIDIyNCwgNzQsIDIsIDI1MCwgCi0gICAgMTgwLCAyMjQsIDc0LCAyLCAyMDUsIDE5OSwgMjI0LCA3NCwgMiwgMjA1LCAyMDQsIDIyNCwgNzQsIDIsIDI1MCwgMTIzLCAKLSAgICAyMjQsIDc0LCAyNDQsIDE2NiwgMjI0LCA3NCwgNTIsIDI0NCwgMTY2LCAyMjQsIDc0LCAyNTEsIDE0NiwgNTQsIDIyNCwgNzQsIAotICAgIDIsIDIzNiwgMCwgMjI0LCA3NCwgMTcsIDIwMiwgODQsIDIyNCwgNzQsIDE3LCAxMDUsIDIyNCwgNzQsIDE3LCAxMDgsIDIyNCwgCi0gICAgNzQsIDE3LCAxNDcsIDIyNCwgNzQsIDE3LCAxNDksIDIyNCwgNzQsIDE3LCAxNzAsIDIyNCwgNzQsIDE3LCAxOTUsIDIyNCwgCi0gICAgNzQsIDE3LCAyMTMsIDExMSwgMjI0LCA3NCwgMTcsIDE5OSwgMjI0LCA3NCwgMTcsIDIyMiwgNjMsIDIwOSwgMjM5LCAxLCAKLSAgICA2MywgMjA5LCAyMzksIDEsIDI1MiwgMjUsIDIwOSwgMjM5LCAxLCA3NSwgMjA5LCAyMzksIDEsIDIzMSwgODMsIDIwOSwgCi0gICAgMjM5LCAxLCA2OCwgMjA5LCAyMzksIDEsIDIwNiwgMTc4LCAyMDksIDIzOSwgMSwgNzQsIDIwOSwgMjM5LCAxLCAyNTEsIDY0LCAKLSAgICAyMDksIDIzOSwgMSwgNzgsIDIwOSwgMjM5LCAxLCAyNTAsIDM0LCAyMDksIDIzOSwgMSwgMTczLCAyMDksIDIzOSwgMSwgCi0gICAgMjI5LCAxNDQsIDIwOSwgMjM5LCAxLCAyMzksIDgsIDIwOSwgMjM5LCAxLCAyMzgsIDExOSwgMjA5LCAyMzksIDEsIDIyMiwgCi0gICAgMjAzLCAyMDksIDIzOSwgMSwgMjQ3LCA5MiwgMjA5LCAyMzksIDEsIDI0NiwgMTk5LCAyMDksIDIzOSwgMSwgMjMwLCAxODEsIAotICAgIDIwOSwgMjM5LCAxLCAyMzAsIDE0OSwgMjA5LCAyMzksIDEsIDIyMSwgMTEsIDIwOSwgMjM5LCAxLCAyMDcsIDI0MSwgMjA5LCAKLSAgICAyMzksIDEsIDIwNywgMjI5LCAyMDksIDIzOSwgMSwgMjQ0LCAxMjAsIDIwOSwgMjM5LCAxLCAyNDQsIDEwNCwgMjA5LCAyMzksIAotICAgIDEsIDIyMSwgMjI3LCAyMDksIDIzOSwgMSwgMjEwLCAyMiwgMjA5LCAyMzksIDEsIDIwOSwgMTA4LCAyMDksIDIzOSwgMSwgCi0gICAgMjQ0LCAyMTIsIDIwOSwgMjM5LCAxLCAyNDQsIDEsIDIwOSwgMjM5LCAxLCAyMDEsIDIwMSwgMjA5LCAyMzksIDEsIDE4NSwgCi0gICAgMjA5LCAyMzksIDEsIDIxOCwgMjA4LCAyMDksIDIzOSwgMSwgMjQ5LCAzMiwgMjA5LCAyMzksIDEsIDI0OCwgOTgsIDIwOSwgCi0gICAgMjM5LCAxLCAxOTIsIDIwOSwgMjM5LCAxLCAxOTgsIDIwOSwgMjM5LCAxLCAyMTYsIDIyMCwgMjA5LCAyMzksIDEsIDIyOCwgCi0gICAgMTEzLCAyMDksIDIzOSwgMSwgMjA2LCA4NiwgMjA5LCAyMzksIDEsIDIxMywgOTAsIDIwOSwgMjM5LCAxLCAyMTUsIDM2LCAKLSAgICAyMDksIDIzOSwgMSwgMTUyLCAyMDksIDIzOSwgMSwgMjE1LCAxODUsIDIwOSwgMjM5LCAyLCAyNTAsIDE4MCwgMjA5LCAyMzksIAotICAgIDIsIDIwNSwgMTk5LCAyMDksIDIzOSwgMjIsIDIsIDI1MiwgMjUsIDIwOSwgMjM5LCAyMiwgMiwgNzUsIDIwOSwgMjM5LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgMjA5LCAyMzksIDIyLCAyLCA2OCwgMjA5LCAyMzksIDIyLCAyLCAyMDYsIDE3OCwgMjA5LCAyMzksIDIyLCAKLSAgICAyLCA3NCwgMjA5LCAyMzksIDIyLCAyLCAyNTEsIDY0LCAyMDksIDIzOSwgMjIsIDIsIDc4LCAyMDksIDIzOSwgMjIsIDIsIAotICAgIDI1MCwgMzQsIDIwOSwgMjM5LCAyLCAyMDUsIDIwNCwgMjA5LCAyMzksIDIsIDIyMSwgNTEsIDIwOSwgMjM5LCAxNywgMjAyLCAKLSAgICA4NCwgMjA5LCAyMzksIDE3LCAxMDUsIDIwOSwgMjM5LCAxNywgMTA4LCAyMDksIDIzOSwgMTcsIDE0NywgMjA5LCAyMzksIAotICAgIDE3LCAxNDksIDIwOSwgMjM5LCAxNywgMTcwLCAyMDksIDIzOSwgMTcsIDE5NSwgMjA5LCAyMzksIDE3LCAyMTMsIDExMSwgCi0gICAgMjA5LCAyMzksIDE3LCAxOTksIDIwOSwgMjM5LCAxNywgMjIyLCA2MywgMjUxLCA2OCwgMSwgMTczLCAyNTEsIDY4LCAxLCAKLSAgICAyMjksIDE0NCwgMjUxLCA2OCwgMSwgMjIyLCAyMDMsIDI1MSwgNjgsIDEsIDIwMSwgMjAxLCAyNTEsIDY4LCAxLCAyMTAsIAotICAgIDIyLCAyNTEsIDY4LCAxLCAyNTAsIDI1NSwgMjEwLCAyMiwgMjUxLCA2OCwgMSwgMTg1LCAyNTEsIDY4LCAxLCAyMTgsIDIwOCwgCi0gICAgMjUxLCA2OCwgMSwgMjQ5LCAzMiwgMjUxLCA2OCwgMSwgMTkyLCAyNTEsIDY4LCAxLCAyMzAsIDE4MSwgMjUxLCA2OCwgMSwgCi0gICAgMjQ2LCAxOTksIDI1MSwgNjgsIDEsIDIwOSwgMTA4LCAyNTEsIDY4LCAxLCAyMTYsIDIyMCwgMjUxLCA2OCwgMSwgMjI4LCAKLSAgICAxMTMsIDI1MSwgNjgsIDEsIDIxNSwgMzYsIDI1MSwgNjgsIDEsIDIyMSwgMTEsIDI1MSwgNjgsIDEsIDE1MiwgMjUxLCA2OCwgCi0gICAgMSwgNjMsIDI1MSwgNjgsIDEsIDI0NCwgMjEyLCAyNTEsIDY4LCAxLCAyNDQsIDEsIDI1MSwgNjgsIDEsIDIzOSwgOCwgMjUxLCAKLSAgICA2OCwgMSwgMjUwLCAyNTUsIDIzOSwgOCwgMjUxLCA2OCwgMSwgMjM4LCAxMTksIDI1MSwgNjgsIDEsIDI0OCwgOTgsIDI1MSwgCi0gICAgNjgsIDEsIDIzMCwgMTQ5LCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAKLSAgICAyMTYsIDIyMCwgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIDIyNywgMTM1LCAyMTYsIDIyMCwgMjUxLCA2OCwgMjIsIDIsIDYzLCAKLSAgICAyNTEsIDY4LCAyMiwgMiwgMjUyLCAyNSwgMjUxLCA2OCwgMjIsIDIsIDc1LCAyNTEsIDY4LCAyMiwgMiwgMjMxLCA4MywgCi0gICAgMjUxLCA2OCwgMjIsIDIsIDY4LCAyNTEsIDY4LCAyMiwgMiwgMjA2LCAxNzgsIDI1MSwgNjgsIDIyLCAyLCA3NCwgMjUxLCAKLSAgICA2OCwgMjIsIDIsIDI1MCwgMTMsIDI1MSwgNjgsIDIyLCAyLCA3OCwgMjUxLCA2OCwgMjIsIDIsIDI1MSwgNjQsIDI1MSwgNjgsIAotICAgIDIyLCAyLCAyNTAsIDI0NywgMjUxLCA2OCwgMiwgMjI5LCA4NiwgMjUxLCA2OCwgMTcsIDIwMiwgODQsIDI1MSwgNjgsIDE3LCAKLSAgICAxMDUsIDI1MSwgNjgsIDE3LCAxMDgsIDI1MSwgNjgsIDE3LCAxNDcsIDI1MSwgNjgsIDE3LCAxNDksIDI1MSwgNjgsIDE3LCAKLSAgICAxNzAsIDI1MSwgNjgsIDE3LCAxOTUsIDI1MSwgNjgsIDE3LCAyMTMsIDExMSwgMjUxLCA2OCwgMTcsIDE5OSwgMjUxLCA2OCwgCi0gICAgMTcsIDIyMiwgNjMsIDI1MSwgNjgsIDQyLCAyMDksIDE1MiwgMjUxLCA2OCwgNDIsIDIwNywgMTUxLCAyNTEsIDY4LCAyLCA1LCAKLSAgICAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE0LCAxNjcsIDI1MSwgNjgsIDIsIDIxNSwgMTM2LCAyNTEsIDY4LCAxNiwgMjA1LCAKLSAgICAyMzAsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMiwgMjAyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA2MywgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA0LCAzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyMTMsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDYsIDEsIDE5OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIAotICAgIDYsIDEsIDIzMSwgODMsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNiwgMTc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAKLSAgICA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjIzLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzksIDgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyOSwgMjYsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDYsIDEsIDI0MSwgNTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMTk3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKLSAgICAxLCAyMDcsIDMxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDEsIDc1LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjAsIAotICAgIDc2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDcsIDIzNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIxLCAzNywgCi0gICAgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQ0LCAyMTIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgNDksIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDcsIDE5MywgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNiwgMSwgMjE3LCAxOTEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIzNiwgMjI4LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA2LCAxLCAyMzYsIDEyNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCA1MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgCi0gICAgMSwgMjM3LCA5MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjExLCAxMTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAotICAgIDIxMiwgMTQyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDUsIDE5MCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIyLCAKLSAgICAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDQsIDMwLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCi0gICAgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA3OCwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyMjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzOSwgOCwgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNSwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNSwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAotICAgIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMCwgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgCi0gICAgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjEsIDM3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDQsIDIxMiwgCi0gICAgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCA0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyNDcsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNSwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKLSAgICAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIAotICAgIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjAyLCA4NCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDEwNSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgMTcsIDEwOCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE0NywgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIAotICAgIDE0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE3MCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE5NSwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgMTcsIDIxMywgMTExLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjIyLCAKLSAgICA2MywgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgMTUyLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA3LCAxNTEsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDQyLCAyMDksIDUzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjM5LCAxNTMsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDQyLCAyNDAsIDE4LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjEyLCA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIAotICAgIDIxMywgMTA1LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjQxLCAxMzQsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMjIsIDU4LCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCAyMjAsIDM5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxODUsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE3MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjI4LCAxMTMsIDIxOSwgCi0gICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE5MiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ0LCAyMTIsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwMiwgMTE2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICAyMDYsIDg2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjIsIDIwMywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgMTUyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMzksIDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDIyOSwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTUsIDM2LCAyMTksIDQ5LCAyNDYsIDY2LCAKLSAgICAyMzcsIDc3LCAxLCAyNDksIDMyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDcsIDkyLCAyMTksIDQ5LCAyNDYsIAotICAgIDY2LCAyMzcsIDc3LCAxLCAyMTAsIDIyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDksIDEwOCwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAxLCAyMDEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxOCwgMjA4LCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTYsIDIyMCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgMjQwLCAxMDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NiwgMTk5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCA2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNzQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDEsIDc1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwNywgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDIzNSwgMTcxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjE5LCAxODQsIDIxOSwgNDksIDI0NiwgNjYsIAotICAgIDIzNywgNzcsIDEsIDQ2LCAyMzAsIDU0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjEwLCA2OSwgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyNiwgMTg1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgCi0gICAgMjIzLCAxNjMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAxNTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDQ2LCAyMDQsIDE0NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyMiwgMjA1LCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjAzLCAxMjQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAKLSAgICAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAyMDgsIDE2MSwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIxNSwgMjQ1LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgMTQzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAyNDAsIDUsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDIxNCwgMjM5LCAyMDgsIDE2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMTYzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCAKLSAgICA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIAotICAgIDYyLCAyMDYsIDY4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAyMjYsIDI1NCwgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMjA4LCAxNjEsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIyNiwgMjU0LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMTQzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgOSwgMiwgNjMsIDksIAotICAgIDIsIDM0LCAyMywgNjMsIDksIDIsIDM0LCAyMywgMjQ5LCAxNSwgOSwgMiwgMzQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIAotICAgIDksIDIsIDM0LCAyMywgMTUyLCA5LCAyLCAzNCwgMjMsIDIzMSwgODUsIDksIDIsIDM0LCAyMywgMjI4LCA5MywgMjM3LCAKLSAgICAyMDgsIDksIDIsIDM0LCAyMywgMjIzLCAxOTksIDksIDIsIDM0LCAyMywgMjE1LCAyMiwgOSwgMiwgMjU0LCAzNCwgOSwgMiwgCi0gICAgMjUxLCAyMzIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjUwLCA3MywgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNDIsIDMwLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDI0NiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDI1MSwgMjMzLCAyMywgMTUyLCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyNTEsIDIzMywgMjMsIDIzMSwgNTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjI4LCA5NCwgOSwgMiwgMjUxLCAyMzMsIAotICAgIDIzLCAyMTMsIDI3LCA5LCAyLCAyNTEsIDIzMywgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyNTEsIDIzMywgCi0gICAgMjM3LCAyMDgsIDksIDIsIDI1MSwgMTQ5LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyNTEsIDE1MCwgCi0gICAgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCi0gICAgMjUxLCAxNTAsIDIzLCAyMTMsIDg4LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNTEsIDEyMiwgOSwgCi0gICAgMiwgMjUxLCA0NywgOSwgMiwgMjUxLCA0OCwgMjMsIDI0MSwgMjIsIDksIDIsIDI1MSwgNDgsIDIzLCAyMTIsIDI0NSwgOTEsIAotICAgIDIzOCwgNTUsIDksIDIsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAyNTEsIDM5LCA5LCAyLCAyNTEsIDQwLCAyMywgCi0gICAgMjQzLCAxODYsIDksIDIsIDI1MSwgNDAsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNTEsIDQwLCAyMywgMTUyLCA5LCAyLCAyNTEsIAotICAgIDQwLCAyMywgMjMwLCAyNywgOSwgMiwgMjUxLCA0MCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyNTEsIDQwLCAyMywgMjEzLCA0MywgCi0gICAgOSwgMiwgMjUxLCA0MCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyNTEsIDM2LCA5LCAyLCAyNTEsIDI4LCA5LCAyLCAyNTAsIAotICAgIDI0MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDExNSwgCi0gICAgMjUwLCAyMzEsIDksIDIsIDI1MCwgMjMyLCAxMjYsIDIwOCwgMjE5LCA5LCAyLCAyNTAsIDIzMiwgOTEsIDIyMywgOTcsIAotICAgIDIxOSwgMjUxLCAyNTAsIDIzMiwgOTEsIDIyMywgOTYsIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgMjExLCAxNzYsIAotICAgIDksIDIsIDI1MCwgMjAwLCA5LCAyLCAyNTAsIDE3MCwgOSwgMiwgMjUwLCAxMzgsIDksIDIsIDI1MCwgMTM5LCAyMywgMjI4LCAKLSAgICAxODMsIDksIDIsIDI1MCwgMTEwLCA5LCAyLCAyNTAsIDgwLCA5LCAyLCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAyMDIsIAotICAgIDM1LCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMjMwLCAzMSwgMjA5LCAxNDEsIDksIDIsIDI1MCwgNzYsIDExNSwgMjUwLCAKLSAgICA3NiwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIwNywgMTk4LCAxMTUsIDIwNywgMTk4LCAyMTksIDk2LCA5LCAyLCAyNTAsIAotICAgIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgCi0gICAgNzYsIDI0NSwgMTI0LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3MywgOSwgMiwgCi0gICAgMjUwLCA2OSwgOSwgMiwgMjQ5LCAzMiwgOSwgMiwgMjQ5LCAxNSwgOSwgMiwgMjQ5LCA5LCA5LCAyLCAyNDksIDMsIDksIDIsIAotICAgIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1NCwgMTE1LCAyNDgsIDI1MywgOSwgMiwgMjQ4LCAyNTIsIDksIDIsIDE0MiwgOSwgMiwgCi0gICAgMjQ4LCAyMzAsIDksIDIsIDI0OCwgODYsIDksIDIsIDI0OCwgODcsIDIzLCA2MywgOSwgMiwgMjQ4LCA4NywgMjMsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyNDgsIDg3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0NywgMTkzLCA5LCAyLCAyNDcsIAotICAgIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjUxLCAyMzIsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMDYsIDI1NSwgOSwgCi0gICAgMiwgMjQ3LCAxOTQsIDI0NSwgMTI0LCAyNDcsIDE5MywgOSwgMiwgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTcyLCAxMTUsIAotICAgIDI0NywgMTcxLCA5LCAyLCAyNDcsIDE2MCwgOSwgMiwgMjQ3LCAxNTksIDksIDIsIDI0NCwgMjEyLCA5LCAyLCAyNDQsIDIwMywgCi0gICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAzNCwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKLSAgICAyMywgMjUwLCAyNDMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjQ4LCAyNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIAotICAgIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzksIDgsIDksIDIsIDI0NCwgMjA0LCAKLSAgICAyMjksIDY5LCAyMywgMjM5LCA5LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzgsIDgxLCAKLSAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM3LCAKLSAgICAyMTksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMTUyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgCi0gICAgMjI0LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgMjI1LCA5MSwgMjI2LCAyMzksIDksIDIsIDI0NCwgMjA0LCAKLSAgICAyMjksIDY5LCAyMywgMjMwLCAxMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjgsIDExMywgOSwgMiwgMjQ0LCAKLSAgICAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDI0MCwgOTEsIAotICAgIDIyNSwgNzgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyMjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKLSAgICAyMywgMjIyLCAyNDAsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIAotICAgIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjEyLCAxNjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA5LCAyNDIsIAotICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA3LCA0MSwgOTEsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIAotICAgIDY5LCAyMywgMjA2LCAxODYsIDksIDIsIDI0NCwgMTc1LCA5LCAyLCAyNDQsIDE1NCwgOSwgMiwgMjQ0LCAxNTMsIDksIDIsIAotICAgIDI0NCwgMTUyLCA5LCAyLCAyNDMsIDIzMywgOSwgMiwgMjQzLCAyMTUsIDksIDIsIDI0MywgMTg4LCA5LCAyLCAyNDMsIDE4OSwgCi0gICAgMjMsIDIxMywgNDMsIDksIDIsIDI0MywgMTg2LCA5LCAyLCAyNDMsIDE3NiwgOSwgMiwgMjQzLCAxNzcsIDIyOSwgMjMyLCAKLSAgICAxMDYsIDIzNywgMjA5LCAyNDMsIDE1NiwgOSwgMiwgMjQzLCAxNTYsIDksIDIsIDI0MiwgNDIsIDksIDIsIDI0MiwgNDMsIAotICAgIDExNSwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgMjM3LCAyMDgsIDksIDIsIDI0MiwgNDMsIDIxMywgMjQsIDksIDIsIDI0MiwgCi0gICAgNDAsIDksIDIsIDI0MiwgNDEsIDIzLCAyNDEsIDQsIDksIDIsIDI0MiwgMzksIDksIDIsIDI0MiwgMzcsIDksIDIsIDI0MiwgCi0gICAgMzYsIDksIDIsIDI0MiwgMzUsIDksIDIsIDI0MiwgMzEsIDksIDIsIDI0MiwgMjksIDksIDIsIDI0MiwgMzAsIDIzNywgMjA4LCAKLSAgICA5LCAyLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMjgsIDksIDIsIDI0MiwgMjEsIDksIDIsIAotICAgIDc0LCA5LCAyLCAxODgsIDIzLCAyMTksIDk2LCA5LCAyLCAxODgsIDExNSwgMTg4LCAyMjEsIDQxLCAxMTUsIDIyMSwgNDAsIAotICAgIDksIDIsIDI0MSwgMTkwLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDM0LCA5MSwgMjM3LCAxNjAsIDkxLCAyNDQsIDIxMiwgOSwgMiwgCi0gICAgMjQxLCAxOTEsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQxLCAxOTEsIDIzLCAKLSAgICAyMTUsIDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQxLCAxOTEsIDIzLCA2OCwgOSwgMiwgMjQxLCAKLSAgICAxNjMsIDksIDIsIDI0MSwgMTUxLCA5LCAyLCAyNDEsIDEyMiwgOSwgMiwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjMsIAotICAgIDIzOCwgMjMyLCA5LCAyLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNDEsIDkzLCAyMywgMjI1LCAKLSAgICAyMCwgOSwgMiwgMjQxLCA5MywgMjQ1LCAxMjQsIDI0MSwgOTIsIDksIDIsIDI0MSwgOTMsIDIxOSwgMjUxLCAyNDEsIDkyLCAKLSAgICA5LCAyLCAyNDEsIDkzLCAyMTEsIDE3NiwgOSwgMiwgMjQxLCAyNSwgOSwgMiwgMjQxLCAyMiwgOSwgMiwgMjQxLCA0LCA5LCAKLSAgICAyLCAyNDAsIDE3OSwgOSwgMiwgMjQwLCAxODAsIDIzLCA2MywgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzAsIAotICAgIDksIDIsIDI0MCwgMTgwLCAyMywgMzQsIDkxLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAyNTAsIDIzMSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDksIDE1LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAxNTIsIDksIDIsIDI0MCwgMTgwLCAyMywgMjM3LCAxNjAsIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzMSwgODYsIAotICAgIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMyLCAKLSAgICAyMTEsIDE3NiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDExMywgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjcsIDE0OCwgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyNDAsIDE4MCwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIzOSwgOCwgOSwgMiwgMjM5LCA5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA2LCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDE1MiwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAyLCAyMzksIDcsIDIzLCAyNTEsIDE1MCwgMjA5LCAxNDIsIDkxLCAKLSAgICAyMTAsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjUwLCA3NCwgOTEsIDIzOCwgMjQ2LCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyNDgsIDIzMSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDcsIDE2MCwgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjQ3LCAxNjEsIDkxLCAyMTYsIDIyMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ0LCAyMTIsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDI0MywgMjMzLCA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgCi0gICAgNDAsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDEyMywgOTEsIDIyOCwgMTEzLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI0LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDc5LCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIAotICAgIDgwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNjQsIDkxLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyMzcsIDE2MCwgOTEsIDIyNiwgMjQwLCA5MSwgMjQxLCA0LCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDE0MCwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjM3LCAxNDEsIDkxLCAyMjgsIDExMywgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCA0LCA5MSwgMjI3LCAKLSAgICAxNDgsIDksIDIsIDIzOSwgNywgMjMsIDIzNiwgMjEsIDksIDIsIDIzOSwgNywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMzAsIDIxMCwgOTEsIDIzNiwgMjcsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzAsIAotICAgIDEyLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjI5LCA5NCwgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjI5LCA5NSwgOTEsIDIyOCwgMzAsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjA4LCA5MSwgMjUwLCAyMzEsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDAsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDEsIAotICAgIDExNSwgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMTg1LCA5LCAyLCAyMzksIDcsIDIzLCAyMTUsIDgsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQ0LCAKLSAgICA5MSwgMjA3LCAxODEsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgOSwgOSwgMiwgMjM5LCA3LCAyMywgMjEwLCAyMjAsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzksIDcsIDIzLCA2OCwgOSwgMiwgMjM5LCA3LCAyMywgMjA3LCAyOSwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMjA3LCAzMCwgOTEsIDI0MiwgNDIsIDksIDIsIDIzOSwgNywgMTE1LCAyMzksIDYsIDksIDIsIAotICAgIDIzOSwgMSwgOSwgMiwgMjM5LCAyLCAyNDUsIDEyNCwgMjM5LCAxLCA5LCAyLCAyMzgsIDI1NSwgOSwgMiwgMjM5LCAwLCAKLSAgICAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ2LCA5LCAyLCAyMzgsIDI0NywgCi0gICAgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ1LCA5LCAyLCAyMzgsIAotICAgIDI0MywgOSwgMiwgMjM4LCAyMzQsIDksIDIsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOCwgCi0gICAgMjMzLCAxMTUsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjQ1LCAxMjQsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIyNCwgCi0gICAgOSwgMiwgMjM4LCAyMjMsIDksIDIsIDIzOCwgMjE4LCA5LCAyLCAyMzgsIDE2MiwgOSwgMiwgMjM4LCAxNjMsIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjM4LCA4MSwgOSwgMiwgMjM4LCA4MiwgMjMsIDc0LCA5LCAyLCAyMzgsIDgyLCAyMywgNjgsIDksIDIsIAotICAgIDIzOCwgODIsIDI0NSwgMTI0LCAyMzgsIDgxLCA5LCAyLCAyMzgsIDc5LCA5LCAyLCAyMzgsIDgwLCAxMTUsIDIzOCwgNzksIAotICAgIDksIDIsIDIzOCwgODAsIDI0NSwgMTI0LCAyMzgsIDc5LCA5LCAyLCAyMzgsIDc2LCA5LCAyLCAyMzgsIDYzLCA5LCAyLCAKLSAgICAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgMjM4LCA2MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDM0LCA5MSwgMjMxLCA4NSwgOSwgCi0gICAgMiwgMjM4LCA2MiwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDIzMSwgODUsIDksIDIsIAotICAgIDIzOCwgNjIsIDIzLCAyMjYsIDI0MCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOCwgNjIsIDIzLCAxODUsIDksIDIsIDIzOCwgCi0gICAgNTcsIDksIDIsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzgsIDU2LCAyMywgCi0gICAgMjQ5LCAxNSwgOSwgMiwgMjM4LCA1NiwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjM3LCAKLSAgICAyMzAsIDksIDIsIDIzNywgMjMxLCAyNDUsIDEyNCwgMjM3LCAyMzAsIDksIDIsIDIzNywgMjI4LCA5LCAyLCAyMzcsIDIyOSwgCi0gICAgMjMsIDIzMCwgMTIsIDksIDIsIDIzNywgMjI5LCAyMywgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyMzcsIDIyOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIzNywgMjI5LCAyMywgMjE1LCA5LCA5MSwgMjA3LCAxOTcsIDksIDIsIAotICAgIDIzNywgMjI5LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAyMTksIDksIDIsIDIzNywgMjIwLCAyMywgMzQsIDkxLCAyMjgsIDE4MywgCi0gICAgOSwgMiwgMjM3LCAyMjAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM3LCAyMjAsIDExNSwgMjM3LCAyMjAsIDIyNiwgMjMwLCA5LCAKLSAgICAyLCAyMzcsIDIxMiwgOSwgMiwgMjM3LCAyMTAsIDksIDIsIDIzNywgMjExLCAyMywgMjEzLCA0MywgOSwgMiwgMjM3LCAyMDIsIAotICAgIDksIDIsIDIzNywgMjAxLCA5LCAyLCAyMzcsIDE5NywgOSwgMiwgMjM3LCAxOTYsIDksIDIsIDE1MiwgOSwgMiwgMjM3LCAKLSAgICAxNjAsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDIzNywgMTQwLCA5LCAyLCAyMzcsIDMsIDksIAotICAgIDIsIDIzNywgNCwgMjMsIDI1MCwgNzUsIDksIDIsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIzNywgNCwgMjMsIDI0OSwgCi0gICAgMTUsIDksIDIsIDIzNywgNCwgMjMsIDI0MywgMTU2LCA5LCAyLCAyMzcsIDQsIDIzLCAyMzgsIDI1NSwgOSwgMiwgMjM3LCA0LCAKLSAgICAyMywgMjI5LCA4NCwgOSwgMiwgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCA0LCAyMywgMjEzLCA0MywgOSwgMiwgCi0gICAgMjM3LCA0LCAyMywgNjgsIDksIDIsIDIzNiwgMjYsIDksIDIsIDIzNiwgMjEsIDksIDIsIDIzNiwgMjIsIDIzLCAyNTAsIAotICAgIDIzMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDIzNywgMTQwLCA5LCAyLCAyMzYsIDIyLCAyMywgMjI5LCAyMzEsIDksIDIsIDIzNiwgCi0gICAgMjIsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMzYsIDIyLCAyMywgMjA3LCAyOSwgOSwgMiwgMjM2LCAxNywgOSwgMiwgNzUsIDksIAotICAgIDIsIDIzNSwgMjA2LCA2MywgOSwgMiwgMjM1LCAxNjYsIDksIDIsIDIzMSwgMTEzLCA5LCAyLCAyMzEsIDExNCwgMTE1LCAKLSAgICAyMzEsIDExNCwgMjQ3LCAxNjAsIDksIDIsIDIzMSwgMTE0LCAxMTUsIDIzMSwgMTE0LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCAKLSAgICA4OCwgOSwgMiwgMjMxLCA4NSwgOSwgMiwgMjMxLCA4NiwgMjQzLCAyMTUsIDksIDIsIDIzMSwgODYsIDIxNiwgNTcsIDksIDIsIAotICAgIDIzMSwgODYsIDExNSwgMjMxLCA4NiwgMjEyLCAyNDksIDExNSwgMjEyLCAyNDksIDIwNywgMzAsIDExNSwgMjA3LCAyOSwgOSwgCi0gICAgMiwgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzMSwgNzcsIDksIDIsIDIzMSwgNzgsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIzMSwgNzYsIDksIDIsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIzLCAyMDksIDI0MiwgOSwgMiwgCi0gICAgMjMxLCA2NywgMjQ1LCAxMjQsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIxOSwgMjUxLCAyMzEsIDY2LCA5LCAyLCAyMzEsIAotICAgIDY3LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCA1OSwgOSwgMiwgMjMxLCA0OSwgOSwgMiwgMjMwLCAyMjQsIDksIDIsIDIzMCwgCi0gICAgMjA5LCA5LCAyLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MSwgMTIyLCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjUxLCAxMjMsIDkxLCAyMjgsIDIwNywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MCwgNzMsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ4LCAyNTIsIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAxNDIsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQxLCAyMiwgOSwgMiwgMjMwLCAKLSAgICA0NCwgMjMsIDI0MSwgNCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOSwgOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjQ2LCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMjQsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMzgsIDIyNSwgOTEsIDIxMywgODksIDkxLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgODEsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgOTEsIDIxNCwgMjMwLCA5LCAKLSAgICAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIzMCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjAxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjMwLCA0NCwgCi0gICAgMjMsIDIzMSwgNjYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI5LCAxMDAsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI3LCAxNDgsIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAyMjYsIDIzOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIxLCA5MSwgCi0gICAgMjQyLCA0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAyMzgsIDgxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAKLSAgICAyMSwgOTEsIDIwOSwgMTg3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIAotICAgIDE1NiwgOTEsIDIyMSwgMzUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMSwgCi0gICAgNDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNSwgMTQ1LCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjE1LCAzNiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA5MCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgNDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDksIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAyMTIsIDE5OSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgMTQ5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEwLCAyMjksIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMDksIDIxOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDY4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMjksIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwMiwgMzksIDksIDIsIDIzMCwgNDIsIDksIDIsIAotICAgIDIzMCwgNDMsIDI0NSwgMTI0LCAyMzAsIDQyLCA5LCAyLCAyMzAsIDMyLCA5LCAyLCAyMzAsIDI5LCA5LCAyLCAyMzAsIDI3LCAKLSAgICA5LCAyLCAyMzAsIDI2LCA5LCAyLCAyMzAsIDI0LCA5LCAyLCAyMzAsIDI1LCAxMTUsIDIzMCwgMjQsIDksIDIsIDIzMCwgMTIsIAotICAgIDksIDIsIDIzMCwgMTMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMwLCA4LCA5LCAyLCAyMzAsIDksIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMzAsIDksIDI0NSwgMTI0LCAyMzAsIDgsIDksIDIsIDIzMCwgNiwgOSwgMiwgMjMwLCA1LCA5LCAKLSAgICAyLCAyMjksIDIzMSwgOSwgMiwgMjI5LCAyMzIsIDIyOCwgOTUsIDIzLCAxMDYsIDExNSwgMjI4LCA5NSwgMjMsIDY4LCA5LCAKLSAgICAyLCAyMjksIDIzMiwgMTE1LCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIDIsIAotICAgIDIyOSwgMTcxLCA5LCAyLCAyMjksIDEwMCwgOSwgMiwgMjI5LCAxMDEsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjksIDEwMSwgCi0gICAgMjMsIDY4LCA5LCAyLCAyMjksIDEwMSwgMjMsIDIwNywgMjksIDksIDIsIDIyOSwgOTQsIDksIDIsIDIyOSwgODQsIDksIDIsIAotICAgIDIyOSwgNzEsIDksIDIsIDIyOSwgNzAsIDksIDIsIDIyOSwgNjgsIDksIDIsIDIyOSwgNjksIDExNSwgMjI5LCA2OCwgOSwgMiwgCi0gICAgMjI4LCAyMDksIDksIDIsIDIyOCwgMjEwLCAxMTUsIDIzNywgNCwgMjMsIDI1MCwgNzQsIDIyOCwgMjEwLCAxMTUsIDIzNywgCi0gICAgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDIwNSwgOSwgMiwgMjI4LCAyMDYsIDIwNiwgNjksIAotICAgIDE4LCA5LCAyLCAyMjgsIDIwNCwgOSwgMiwgMjI4LCAxOTYsIDksIDIsIDIyOCwgMTk3LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICAxOTUsIDksIDIsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE4NCwgMjE5LCAyNTEsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE3NywgCi0gICAgOSwgMiwgMjI4LCAxNTUsIDksIDIsIDIyOCwgMTEzLCA5LCAyLCAyMjgsIDk0LCA5LCAyLCAyMjgsIDk1LCAyMywgNjMsIDksIAotICAgIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MSwgMzksIAotICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgNzYsIDIwMiwgMzUsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0OCwgODYsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyNDQsIDE1NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0MSwgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzksIDgsIAotICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAKLSAgICAyMywgMjM3LCAyMjAsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIAotICAgIDIzNywgMTQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgCi0gICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAKLSAgICAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY3LCA5MSwgMjI2LCAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjksIAotICAgIDEwMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgODQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIyOCwgMTk2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI4LCAxOTcsIDkxLCAyMzcsIDQsIDkxLCA2MywgOSwgMiwgCi0gICAgMjI4LCA5NSwgMjMsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI2LCAKLSAgICAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNSwgMjAsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyMywgMTk5LCA5LCAyLCAyMjgsIDk1LCAKLSAgICAyMywgMjIyLCAyNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMTIsIDI0NSwgOTEsIDIzOCwgNTYsIDkxLCAyNDEsIDIyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAyNDUsIDkxLCAKLSAgICAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAKLSAgICAxOTgsIDkxLCAyMTIsIDE5NywgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAKLSAgICAyNTUsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMTg4LCA5MSwgMzQsIAotICAgIDkxLCAyMTEsIDExLCA5MSwgMjAxLCAyMDEsIDksIDIsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDEwNiwgCi0gICAgOTEsIDYzLCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDcsIAotICAgIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgOTUsIDIzLCAyMDYsIDE4NiwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjExLCAxNzYsIDksIDIsIDIyOCwgOTIsIDksIDIsIDIyOCwgOTMsIDIzLCAyMTMsIDQzLCA5LCAyLCAKLSAgICAyMjgsIDkzLCAyMywgMjEzLCA0NCwgOTEsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDkzLCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICA5MywgMjM3LCAyMDksIDExNSwgMjI4LCA5MywgMjM3LCAyMDksIDIxMywgNDMsIDksIDIsIDIyOCwgODgsIDksIDIsIDIyOCwgCi0gICAgMzAsIDksIDIsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDI4LCA5LCAyLCAyMjgsIDI5LCAyMywgMjI4LCAKLSAgICAxODMsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIDE4NCwgOTEsIDIxNSwgMTQ1LCA5LCAyLCAyMjcsIDE0OCwgOSwgMiwgCi0gICAgMjI3LCAxMjksIDksIDIsIDIyNywgMTE3LCA5LCAyLCAyMjcsIDkyLCA5LCAyLCAyMjYsIDIzOSwgOSwgMiwgMjI2LCAyNDAsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNTEsIDM5LCA5LCAyLCAyMjYsIDIzOCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MSwgNSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzNywgNCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI5LCA5LCAKLSAgICAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjcsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyOCwgOTEsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjI5LCAxMDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI4LCAxMTQsIDkxLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIyOCwgOTQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjIyLCAyNDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjIxLCA4NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAKLSAgICAyMTIsIDE2MywgOTEsIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxNDEsIDkxLCAyNDcsIDE5MywgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMDcsIDE5NywgOSwgMiwgMjI2LCAyMzgsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjQ1LCAKLSAgICAxMjQsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjE5LCAyNTEsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjExLCAKLSAgICAxNzYsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI0LCA5LCAyLCAyMjYsIDIzNiwgOSwgMiwgMjI2LCAyMzAsIDksIDIsIDIyNiwgCi0gICAgMjMxLCAxMTUsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgMjE5LCAyNTEsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgCi0gICAgMjEzLCAyNCwgOSwgMiwgMjI2LCAyMjcsIDksIDIsIDIyNiwgMjI0LCA5LCAyLCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIAotICAgIDExNSwgMjI2LCAyMjIsIDksIDIsIDIyNiwgMjIzLCAxMTUsIDIyNiwgMjIzLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgCi0gICAgMiwgMTkyLCA5LCAyLCAyMjUsIDE3NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjUsIDE3NywgMjM3LCAyMDgsIDksIDIsIAotICAgIDIyNSwgMTc2LCA5LCAyLCAyMjUsIDE0OCwgOSwgMiwgMjI1LCAxMDAsIDksIDIsIDIyNSwgNzksIDksIDIsIDIyNSwgNzgsIAotICAgIDksIDIsIDIyNSwgMjAsIDksIDIsIDIyNCwgMjI4LCA5LCAyLCAyMjQsIDE1NSwgOSwgMiwgMjI0LCAxMTAsIDksIDIsIDIyMywgCi0gICAgMjQ2LCA5LCAyLCAyMjMsIDI0NywgMTE1LCAyMjMsIDI0NiwgOSwgMiwgMjIzLCAyMzUsIDksIDIsIDIyMywgMjM2LCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjIzLCAyMTcsIDksIDIsIDIyMywgMjAzLCA5LCAyLCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDIzLCAKLSAgICA2MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCi0gICAgMjIzLCAyMDAsIDExNSwgMjIzLCAxOTksIDksIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMzQsIDkxLCAyMDEsIAotICAgIDIwMSwgOSwgMiwgMjIzLCAyMDAsIDI0NSwgMTI0LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAxOTcsIDksIDIsIDIyMywgMTk4LCAKLSAgICAyMywgNjMsIDksIDIsIDIyMywgMTk4LCAyMywgMzQsIDkxLCAyNDMsIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzLCAyNDMsIAotICAgIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzNywgMjA4LCA5LCAyLCAyMDEsIDIwMSwgOSwgMiwgMjIzLCAxMDksIDksIDIsIDIyMywgCi0gICAgOTYsIDksIDIsIDIyMywgOTcsIDIzMCwgMjM4LCA5LCAyLCAyMjMsIDk3LCAyMywgMjEyLCAyMDAsIDIwOSwgMTQxLCA5LCAyLCAKLSAgICAyMjMsIDk3LCAyMTksIDI1MSwgMjIzLCA5NiwgOSwgMiwgMjIzLCA5NSwgOSwgMiwgMjIzLCA4OCwgMjIxLCAyNiwgOSwgMiwgCi0gICAgMjIzLCA4NywgOSwgMiwgMjIzLCA4NiwgOSwgMiwgMjIyLCAyNDAsIDksIDIsIDIyMiwgMjQxLCAyMywgNjMsIDksIDIsIAotICAgIDIyMiwgMjQxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjIyLCAyNDEsIDIxMywgMjQsIDksIDIsIDIyMiwgMTAwLCA5LCAyLCAKLSAgICAyMjIsIDEwMSwgMjMsIDc0LCA5LCAyLCAyMjIsIDk5LCA5LCAyLCAyMjIsIDY5LCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAKLSAgICAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAyMjUsIDkxLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIAotICAgIDIyMiwgNjUsIDksIDIsIDIyMiwgNjYsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjE5LCA5LCAyLCAKLSAgICAyMjIsIDY2LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyMiwgCi0gICAgMjQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIxLCA0MCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDMsIDksIDIsIDIyMiwgCi0gICAgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMzQsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0NCwgOTEsIDI1MCwgCi0gICAgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCA3NiwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIAotICAgIDIzLCAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjIsIDUzLCA5LCAKLSAgICAyLCAyMjEsIDg0LCA5LCAyLCAyMjEsIDU2LCA5LCAyLCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgCi0gICAgMjM4LCAyMjQsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMjUsIDc5LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAKLSAgICAyMywgMjE1LCA4LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjE1LCA5LCAxMTUsIDIyMSwgNDEsIDIyOCwgOTMsIAotICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjIxLCA0MSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgOSwgMiwgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDAsIDksIDIsIAotICAgIDIyMSwgNDEsIDI0NSwgMTI0LCAyMjEsIDQxLCAyMjgsIDkzLCAxMTUsIDIyOCwgOTIsIDksIDIsIDIyMSwgMzUsIDksIDIsIAotICAgIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNDgsIDg2LCA5LCAKLSAgICAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0MiwgMzcsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjM3LCAyMTksIAotICAgIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAKLSAgICAyMywgMjMwLCAyNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMjgsIDExMywgOSwgMiwgMjIxLCAzNiwgMjUxLCAKLSAgICAxNTAsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMTIsIDEzOCwgOSwgMiwgMjIxLCAzNiwgCi0gICAgMjUxLCAxNTAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjEsIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjIxLCAKLSAgICAzNiwgMjI5LCA2OSwgMjMsIDI0OCwgODcsIDY4LCA5LCAyLCAxODUsIDksIDIsIDIxOSwgMTU5LCA5LCAyLCAyMTksIDEyMiwgCi0gICAgOSwgMiwgMjE5LCA5NiwgOSwgMiwgMjE4LCAyMjIsIDksIDIsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDYzLCA5LCAKLSAgICAyLCAyMTgsIDE2OCwgMjMsIDI1MSwgMjMyLCA5LCAyLCAyMTgsIDE2OCwgMjMsIDI0OCwgODYsIDksIDIsIDIxOCwgMTY4LCAKLSAgICAyMywgMjQ3LCAxOTMsIDksIDIsIDIxOCwgMTY4LCAyMywgNzQsIDksIDIsIDIxOCwgMTY4LCAyMywgNzUsIDksIDIsIDIxOCwgCi0gICAgMTY4LCAyMywgMjM1LCAxNjYsIDksIDIsIDIxOCwgMTY4LCAyMywgNjgsIDksIDIsIDIxOCwgMTY4LCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjE4LCAxNjgsIDI0NSwgMTI0LCAyMTgsIDE2NywgOSwgMiwgMjE4LCAxMDksIDksIDIsIDIxOCwgMTEwLCAyMywgCi0gICAgMjMwLCA4LCA5LCAyLCAyMTgsIDExMCwgMjMsIDIwNywgMjksIDksIDIsIDIxOCwgMTEwLCAyMywgMjAyLCAxMTYsIDksIDIsIAotICAgIDIxOCwgMTEwLCAyMTksIDI1MSwgMjE4LCAxMDksIDksIDIsIDIxNiwgMjIwLCA5LCAyLCAyMTYsIDIxNCwgOSwgMiwgMjE2LCAKLSAgICA1NywgOSwgMiwgMjE1LCAxNDUsIDksIDIsIDIxNSwgMzYsIDksIDIsIDIxNSwgMjMsIDIyMSwgMjYsIDksIDIsIDIxNSwgMjIsIAotICAgIDksIDIsIDIxNSwgMjMsIDIzLCA2MywgOSwgMiwgMjE1LCAyMywgMjMsIDI0MiwgNDIsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyNDIsIDQwLCA5LCAyLCAyMTUsIDIzLCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjMwLCAxMiwgOSwgMiwgMjE1LCAKLSAgICAyMywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjI2LCAyMjIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjQsIAotICAgIDE1NSwgOSwgMiwgMjE1LCAyMywgMjMsIDIyMSwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMTUsIDgsIDksIDIsIDIxNSwgCi0gICAgMjMsIDIzLCAyMTMsIDksIDksIDIsIDIxNSwgMjMsIDIzLCAyMTAsIDEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgMzUsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDYsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyMDYsIDIxMCwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMTUsIDIzLCAxMTUsIDIxNSwgMjIsIDksIDIsIAotICAgIDIxNSwgMjMsIDIzNywgMjA4LCA5LCAyLCAyMTUsIDgsIDksIDIsIDIxNSwgOSwgMjI4LCA5NSwgMjMsIDI1MCwgNzMsIDksIAotICAgIDIsIDIxNCwgMjM4LCA5LCAyLCAyMTQsIDIzMCwgOSwgMiwgMjEzLCA5MCwgOSwgMiwgMjEzLCA4OCwgOSwgMiwgMjEzLCA4OSwgCi0gICAgMjMsIDYzLCA5LCAyLCAyMTMsIDg5LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjEzLCA4OSwgMjMsIDIzOCwgNTUsIDksIDIsIAotICAgIDIxMywgODksIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjEzLCA4OSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMTMsIDg5LCAyMywgCi0gICAgMjA3LCAxODEsIDksIDIsIDIxMywgODksIDIzLCA2OCwgOSwgMiwgMjEzLCA4OSwgMjMsIDEwNiwgOTEsIDYzLCA5LCAyLCAKLSAgICAyMTMsIDg2LCA5LCAyLCAyMTMsIDg0LCA5LCAyLCAyMTMsIDU5LCA5LCAyLCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCAyMzYsIAotICAgIDI2LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjM4LCAyMjUsIDExNSwgCi0gICAgMjM4LCAyMjQsIDksIDIsIDIxMywgMzYsIDksIDIsIDIxMywgMzEsIDksIDIsIDIxMywgMjcsIDksIDIsIDIxMywgMjYsIDksIAotICAgIDIsIDIxMywgMjMsIDksIDIsIDIxMywgOSwgOSwgMiwgMjEzLCAxMCwgMjMsIDYzLCA5LCAyLCAyMTMsIDEwLCAyMywgMjMxLCAKLSAgICA2NiwgOSwgMiwgMjEzLCAzLCA5LCAyLCAyMTMsIDQsIDIzLCA2MywgOSwgMiwgMjEzLCA0LCAyMywgMjQ4LCAyNTMsIDksIDIsIAotICAgIDIxMywgNCwgMjMsIDI0NywgMTcxLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDMsIDE3NiwgOSwgMiwgMjEzLCA0LCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODUsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyMTMsIDQsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjEzLCA0LCAyMywgMjI2LCAyMjQsIDksIDIsIDIxMywgNCwgMjMsIAotICAgIDIyMywgMjM1LCA5LCAyLCAyMTMsIDQsIDIzLCAyMTUsIDgsIDksIDIsIDIxMiwgMjUzLCA5LCAyLCAyMTIsIDI0OCwgOSwgMiwgCi0gICAgMjEyLCAyNDksIDIwOSwgMTQxLCA5LCAyLCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKLSAgICAxNjAsIDksIDIsIDIxMiwgMjQ0LCA5LCAyLCAyMTIsIDE5OSwgOSwgMiwgMjEyLCAyMDAsIDExNSwgMjMwLCAyMzksIDIxMiwgCi0gICAgMTk5LCA5LCAyLCAyMTIsIDE5NywgOSwgMiwgMjEyLCAxOTYsIDksIDIsIDIxMiwgMTYyLCA5LCAyLCAyMTIsIDE2MywgMjM3LCAKLSAgICAyMDgsIDksIDIsIDIxMiwgMTQ5LCA5LCAyLCAyMTIsIDE0NywgOSwgMiwgMjEyLCAxNDgsIDExNSwgMjEyLCAxNDgsIDIxMiwgCi0gICAgMTk3LCA5LCAyLCAyMTIsIDE0MCwgOSwgMiwgMjEyLCAxMzgsIDksIDIsIDIxMSwgMTAsIDksIDIsIDIxMSwgMTEsIDExNSwgCi0gICAgMjExLCAxMCwgOSwgMiwgMjEwLCAyMzIsIDksIDIsIDIxMCwgMjMxLCA5LCAyLCAyMTAsIDIyOSwgOSwgMiwgMjEwLCAyMjAsIAotICAgIDksIDIsIDIxMCwgMjE5LCA5LCAyLCAyMTAsIDE5MywgOSwgMiwgMjEwLCAxOTIsIDksIDIsIDIxMCwgMjIsIDksIDIsIDIxMCwgCi0gICAgMjMsIDI1MCwgNTksIDksIDIsIDIxMCwgMjMsIDIzLCAyMzcsIDMsIDksIDIsIDIxMCwgMjMsIDIzLCAyMjQsIDE1NSwgOSwgCi0gICAgMiwgMjEwLCAyMywgMjM3LCAyMDgsIDksIDIsIDIxMCwgMTAsIDksIDIsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjIyLCAKLSAgICAxMDEsIDExNSwgMjIyLCAxMDEsIDI0MywgMTU3LCAxMTUsIDI0MywgMTU2LCA5LCAyLCAyMTAsIDExLCAyMTEsIDE3NiwgOSwgCi0gICAgMiwgMjA5LCAyNTUsIDksIDIsIDE2MCwgMjMsIDI0OCwgODYsIDksIDIsIDE2MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAxNjAsIAotICAgIDIzLCAyMTMsIDQzLCA5LCAyLCAxNjAsIDIzLCAyMTIsIDE5OSwgOSwgMiwgMTYwLCAyMywgMjA3LCAxOTcsIDksIDIsIDE2MCwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDIxOCwgOSwgMiwgMjA5LCAxODcsIDksIDIsIDIwOSwgCi0gICAgMTg4LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAyLCA5LCAyLCAyMDksIDMsIDIwOSwgMTQxLCA5LCAyLCAyMDgsIDIyOSwgOSwgCi0gICAgMiwgMjA4LCAyMDYsIDksIDIsIDIwOCwgMjA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA2LCAKLSAgICA5LCAyLCAyMDgsIDIwNywgMTE1LCAyMDgsIDIwNywgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIwNywgMjAzLCA5LCAyLCAyMDcsIDE5NywgOSwgMiwgMjA3LCAxOTUsIDksIDIsIDIwNywgMTkxLCA5LCAKLSAgICAyLCAyMDcsIDE4MSwgOSwgMiwgMjA3LCAxODIsIDExNSwgMjA3LCAxODIsIDIwMiwgMTE3LCAxMTUsIDIwMiwgMTE2LCA5LCAKLSAgICAyLCA2OCwgOSwgMiwgMTA2LCAyMzcsIDIxOSwgOSwgMiwgMTA2LCAxMDYsIDY4LCA5LCAyLCAxMDYsIDExNSwgMTA2LCAyMTksIAotICAgIDE2OSwgMTE1LCAyMTksIDE2OSwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxMCwgCi0gICAgMTk0LCAxMTUsIDIxMCwgMTkzLCA5LCAyLCAxMDYsIDExNSwgMTA2LCAxMDYsIDIxNiwgNzMsIDExNSwgMTA2LCAyMTYsIDcyLCAKLSAgICA5LCAyLCAyMDcsIDQwLCA5LCAyLCAyMDcsIDM1LCA5LCAyLCAyMDcsIDI5LCA5LCAyLCAyMDcsIDMwLCAyMjgsIDE3NywgOSwgCi0gICAgMiwgMjA3LCAzMCwgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMzAsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjA3LCAzMCwgMjMsIAotICAgIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMDcsIDMwLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgMTA2LCAyMzcsIDIwOCwgCi0gICAgOSwgMiwgMjA3LCAzMCwgMjM3LCAyMDgsIDksIDIsIDIwNywgMzAsIDIxMywgMjQsIDksIDIsIDIwNywgMzAsIDIxMywgMjUsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMDcsIDI1LCA5LCAyLCAyMDcsIDYsIDksIDIsIDIwNywgNywgMjMsIDIyOCwgOTQsIDksIAotICAgIDIsIDIwNywgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDQsIDIxMiwgOSwgMiwgMjA3LCA3LCAyMywgMjEzLCA4OCwgOSwgMiwgCi0gICAgMjA3LCA3LCAyMywgNjgsIDksIDIsIDIwNywgNSwgOSwgMiwgMjA3LCAxLCA5LCAyLCAyMDcsIDIsIDIzLCAyMjksIDIzMSwgCi0gICAgOSwgMiwgMjA3LCAyLCAyMywgMTg1LCA5LCAyLCAyMDYsIDI1NSwgOSwgMiwgMjA3LCAwLCAyMzcsIDIwOCwgOSwgMiwgMjA2LCAKLSAgICAyMTAsIDksIDIsIDIwNiwgMjExLCAyNDUsIDEyNCwgMjA2LCAyMTAsIDksIDIsIDIwNiwgMjExLCAyMTMsIDI0LCA5LCAyLCAKLSAgICAyMDYsIDIwOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIDE1MiwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIAotICAgIDIwMSwgMjAxLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDI1MSwgMzksIDksIDIsIDIwNiwgMjA5LCAyMywgMTUyLCA5LCAyLCAKLSAgICAyMDYsIDIwOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAKLSAgICAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQxLCA5MSwgMjQ4LCA4NiwgOSwgMiwgCi0gICAgMjA2LCAyMDcsIDksIDIsIDIwNiwgMjA0LCA5LCAyLCAyMDYsIDIwMywgOSwgMiwgMjA2LCAxOTksIDksIDIsIDIwNiwgMjAwLCAKLSAgICAyMywgNjMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxNDIsIDksIDIsIDIwNiwgCi0gICAgMjAwLCAyMywgMjQyLCAzMSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzksIDgsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKLSAgICAyNDYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzNywgMjMwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE1MiwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzMSwgNjYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMwLCAKLSAgICAyMDksIDksIDIsIDIwNiwgMjAwLCAyMywgMjI5LCAxMDAsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMjIsIDksIDIsIAotICAgIDIwNiwgMjAwLCAyMywgMjI0LCAxMTAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIxMywgCi0gICAgNDMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEyLCAxNDcsIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyMDMsIDksIDIsIAotICAgIDIwNiwgMjAwLCAyMywgMTA2LCA5MSwgMjM3LCAyMTksIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTcsIDksIDIsIDIwNiwgMTk4LCAyMywgNjgsIDksIDIsIDIwNiwgCi0gICAgMTg2LCA5LCAyLCAyMDYsIDE4NywgMjMsIDYzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIyOCwgMjA5LCA5LCAyLCAyMDYsIAotICAgIDE4NywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDYsIDE4MiwgOSwgMiwgCi0gICAgMjA2LCAxODUsIDksIDIsIDIwNiwgMTgzLCA5LCAyLCAyMDYsIDE3OSwgOSwgMiwgMjA2LCAxNjcsIDksIDIsIDIwNiwgMTY4LCAKLSAgICAyMywgMjI5LCAyMzEsIDksIDIsIDIwNiwgMTY2LCA5LCAyLCAyMDIsIDExNiwgOSwgMiwgMjAyLCAxMTcsIDIwOSwgMTQxLCAKLSAgICA5LCAyLCAyMDIsIDExNywgMTAzLCAyMywgMjI4LCAxODMsIDksIDIsIDIwMiwgMTEyLCA5LCAyLCAyMDIsIDEwNSwgOSwgMiwgCi0gICAgMjAyLCA5MSwgOSwgMiwgMjAyLCAzOSwgOSwgMiwgMjAyLCA0MCwgMTE1LCAyMDIsIDM5LCA5LCAyLCAyMDIsIDM4LCA5LCAyLCAKLSAgICAyMDIsIDM2LCA5LCAyLCAyMDIsIDM3LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjAyLCAzMSwgOSwgMiwgMjAyLCAyMiwgCi0gICAgOSwgMiwgMjAyLCA2LCA5LCAyLCAyMDIsIDQsIDksIDIsIDIwMiwgNSwgMjMsIDYzLCA5LCAyLCAyMDIsIDMsIDksIDIsIAotICAgIDIwMiwgMiwgOSwgMiwgMjI5LCAyNTQsIDI0MSwgMTE5LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyMSwgNDAsIDksIDIsIDI1MSwgCi0gICAgMTUwLCAyMywgNjMsIDksIDIsIDI1MCwgMjQ0LCAyMywgMjI4LCAxOTgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgCi0gICAgMjA3LCA0MSwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjAyLCA5LCAyLCAyNDMsIDE1NywgOTEsIDIxMiwgMTk5LCA5LCAyLCAKLSAgICAyNDIsIDQxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMiwgOTEsIDIzMCwgMTMsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjUwLCA3MywgOSwgMiwgMjM4LCAxODksIDksIDIsIDIzOCwgNzEsIDksIDIsIDIzNiwgMywgOSwgMiwgMjMwLCA0NCwgCi0gICAgMjMsIDI1MCwgMjAwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTUsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjMwLCA0NCwgMjMsIDE4NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgCi0gICAgMTkyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyMDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDYsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIzOCwgODEsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIAotICAgIDIzLCAyNDEsIDUsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAyMjQsIDIyNywgOSwgCi0gICAgMiwgMjIzLCAxOTgsIDIzLCAyMDIsIDExNiwgOSwgMiwgMjIzLCAxMDgsIDksIDIsIDIyMiwgNjgsIDksIDIsIDIyMiwgNjcsIAotICAgIDksIDIsIDIyMiwgNjYsIDIzLCAyNDgsIDI1MywgOSwgMiwgMjIyLCA2NiwgMjMsIDIzOCwgODEsIDksIDIsIDIyMSwgNTcsIAotICAgIDIxNSwgMTk4LCAyMjIsIDU5LCAyNDQsIDU0LCA5LCAyLCAyMTgsIDIyMywgMjUwLCA1OSwgOSwgMiwgMjE4LCAxMTMsIDksIAotICAgIDIsIDIxNSwgMjMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAxLCA5LCAyLCAyMDcsIDcsIDIzLCAyMjUsIAotICAgIDIwLCA5LCAyLCAxMDYsIDY4LCA5LCAxNDEsIDIsIDEyMCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzUsIDksIAotICAgIDE0MSwgMiwgMjM5LCAxNDcsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjEyLCAKLSAgICA4OCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjUwLCA3NSwgCi0gICAgOSwgMTQxLCAyLCAyMjIsIDY0LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAKLSAgICAxNDcsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyNDMsIAotICAgIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDI0MywgMTU2LCA5LCAKLSAgICAxNDEsIDIsIDIyMiwgNjQsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCA2OCwgOSwgMTQxLCAyLCAyMzksIDIzMywgCi0gICAgNjgsIDksIDE0MSwgMiwgMjEyLCA4OCwgNjgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDY4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAKLSAgICA2OCwgOSwgMTQxLCAyLCAyMjIsIDY0LCA2OCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDEyMCwgCi0gICAgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTI2LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjQsIDksIAotICAgIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMiwgODgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMywgCi0gICAgMTEyLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjM4LCAKLSAgICAxNjQsIDksIDE0MSwgMiwgMTE4LCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAxMjAsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyNiwgCi0gICAgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMzgsIDE2MSwgCi0gICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKLSAgICA2MCwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTksIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCi0gICAgNTksIDksIDE0MSwgMiwgMjEyLCA4OCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjEzLCA1OSwgOSwgMTQxLCAyLCAKLSAgICAyNDEsIDE0MywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDExOCwgMjEzLCA1NCwgCi0gICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU0LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKLSAgICA1NSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTQsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCi0gICAgNTQsIDksIDE0MSwgMiwgMjEzLCA2MCwgMjMsIDIzOCwgMjQ3LCA5MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjEzLCA2MCwgCi0gICAgMjMsIDIzOCwgMjQ3LCA5MSwgMjI0LCAxMTAsIDksIDE0MSwgMiwgMTE4LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIAotICAgIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyNiwgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NywgMjA2LCA2OSwgCi0gICAgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDcsIDE1NiwgOSwgMTQxLCAKLSAgICAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAyNDEsIDYsIDksIDE0MSwgMiwgMTI2LCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgMjQxLCAzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTgsIDksIDE0MSwgMiwgMjM5LCAKLSAgICAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExNiwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIAotICAgIDIyNywgMTE5LCA2MywgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE5LCAyNDksIDI1NSwgCi0gICAgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMDYsIDY5LCAyMzksIDE1OSwgMjUwLCA3MSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCAKLSAgICA2OSwgMjM5LCAxNTksIDIzMSwgNTgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDYwLCAKLSAgICA2MywgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIDI0OSwgMjU1LCA5LCAxNDEsIDIsIAotICAgIDI0MSwgMTQzLCAyMDYsIDY5LCAyMzksIDE1OSwgMjA2LCAxODEsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgCi0gICAgMTU5LCAyMDYsIDE4MCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NCwgOSwgMTQxLCAyLCAKLSAgICAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3MywgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIAotICAgIDE1OSwgMjMxLCA3MiwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NSwgNjMsIDksIDE0MSwgCi0gICAgMiwgMTIwLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIAotICAgIDIzOSwgMTQ3LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NiwgMjA5LCAxNDEsIDksIAotICAgIDE0MSwgMiwgMjEyLCA4OCwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMTE4LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAKLSAgICAxMjAsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIDEyNiwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQwLCAKLSAgICA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgCi0gICAgMjQwLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjIyLCA3NywgOSwgCi0gICAgMTQxLCAyLCAyMjIsIDc4LCA5LCAxNDEsIDIsIDExOCwgMjQxLCAyLCA5LCAxNDEsIDIsIDEyMCwgMjQxLCAyLCA5LCAxNDEsIAotICAgIDIsIDExOCwgMjA5LCA2MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAKLSAgICAyMzksIDIzMywgMjEyLCA3NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTE4LCAyMDksIDYxLCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgNjMsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyMDYsIDY5LCAyMzksIDE1OSwgNjMsIDksIDE0MSwgMiwgMTE4LCAyNDEsIAotICAgIDEzOSwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMTgsIDIxNywgNTYsIDI1MCwgNzUsIDksIDE0MSwgMiwgMzgsIDI1MCwgNjIsIAotICAgIDExOCwgMjEyLCA3OCwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgMTE4LCAyMTcsIDU1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCAKLSAgICA1NiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMTE4LCAxNjIsIDIzNywgMjAyLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAxMTgsIAotICAgIDIwOSwgNjAsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDEyMCwgMjA5LCA1NywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjM5LCAKLSAgICAxNTMsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDI0MCwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDEwNiwgMjA2LCA2OSwgMTgsIAotICAgIDksIDE0MSwgMiwgMjM5LCAyMzMsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjEyLCA4OCwgMTA2LCAyMDYsIDY5LCAKLSAgICAxOCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMTA2LCAyMDYsIAotICAgIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAxMDYsIDIwNiwgNjksIDE4LCA5LCAyMTcsIDE3OSwgMiwgMzgsIDI1MCwgCi0gICAgNjIsIDIwMywgMjM4LCAyNDMsIDE0MSwgOSwgMjE3LCAxNzksIDIsIDgwLCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIAotICAgIDI0MywgMjI4LCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIDI0MywgMjI4LCAyMDgsIDgxLCA5LCAyMTcsIDE3OSwgMiwgCi0gICAgMjQzLCAyMjgsIDIxNywgNjEsIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MSwgMjA5LCAxNDEsIDksIDIsIDI1MSwgMjMzLCAKLSAgICAyMywgMjEyLCAxOTcsIDksIDIsIDI1MSwgMTIzLCAyMywgMjQxLCA0LCA5LCAyLCAyNDksIDE2LCAyMywgMjQzLCAxNTcsIAotICAgIDIwOSwgMTQxLCA5LCAyLCAyNDksIDQsIDIzLCAyNTEsIDE0OSwgOSwgMiwgMjQ5LCA0LCAyMywgMjIyLCAxMDAsIDksIDIsIAotICAgIDI0OSwgNCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyNDcsIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjMsIDIyMywgMTA5LCA5LCAyLCAKLSAgICAyNDQsIDIxMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNDQsIDIwNCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDMsIDE4OSwgMjMsIAotICAgIDIzMSwgODUsIDksIDIsIDI0MywgMTg5LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyNDMsIDE4NywgMjMsIDIwNywgMjksIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyNTAsIDIwMCwgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgNzUsIDksIDIsIDI0MiwgMzgsIAotICAgIDIzLCAyNTAsIDc2LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyNDIsIAotICAgIDM4LCAyMywgMjQyLCAzMSwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MSwgMjIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzksIDgsIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDgxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM4LCA2NCwgMjM3LCAyMDgsIDksIDIsIAotICAgIDI0MiwgMzgsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMTUyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM3LCAzLCAKLSAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjksIDIzMSwgOSwgMiwgCi0gICAgMjQyLCAzOCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCAxNzcsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjgsIDE3OCwgOTEsIDIyOSwgMjMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCA4MiwgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyOCwgMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDI5LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjYsIDIyOCwgOTEsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjUsIDc5LCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI0LCAyMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAKLSAgICAyNDIsIDM4LCAyMywgMjE4LCAxNjcsIDksIDIsIDI0MiwgMzgsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjEyLCAxNjMsIDIzNywgMjA4LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIAotICAgIDIxOSwgOTYsIDksIDIsIDI0MSwgMjMsIDIwMywgMTk2LCA5LCAyLCAyNDEsIDUsIDI0NSwgMTI0LCAyNDEsIDQsIDksIDIsIAotICAgIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzcsIDMsIDksIAotICAgIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgCi0gICAgMjI4LCAxMTMsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIAotICAgIDIzLCAyMjUsIDIwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIyNCwgMjI4LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAKLSAgICAyNSwgMjMsIDIxMSwgMTAsIDksIDIsIDI0MCwgMTgwLCAyMywgMjExLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ5LCAzLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgMzgsIDIzLCAyMzEsIAotICAgIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyNDEsIDI1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzksIDgsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjQzLCAKLSAgICAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjIyLCAyNDAsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgCi0gICAgMTYwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDIyOCwgMjgsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM5LCA3LCAyMywgMjI2LCAKLSAgICAyMjcsIDksIDIsIDIzOSwgNywgMjMsIDIyMywgMTk5LCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjIyLCAyNDEsIDkxLCAyNDEsIDE5MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIyLCAyNDEsIDkxLCAyMzgsIDgxLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDMsIDksIDIsIDIzOSwgNywgMjMsIDIwMiwgMjIsIDksIDIsIDIzOSwgMiwgMjE1LCAKLSAgICAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIzOCwgMTYzLCAyMywgNjgsIDksIDIsIDIzOCwgNTYsIDIzLCAyMzgsIAotICAgIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAKLSAgICAyMjAsIDkxLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzNywgMTYwLCAyMDksIDE0MiwgMjM3LCAyMDgsIDksIDIsIAotICAgIDIzNywgNCwgMjMsIDI1MCwgNzYsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0NywgCi0gICAgMTkzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTczLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjA2LCAyMTAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDIsIDcsIDExNSwgMjAyLCA2LCA5LCAyLCAyMjgsIDgzLCAKLSAgICA5LCAyLCAyMjgsIDgxLCA5LCAyLCAyMjgsIDgwLCA5LCAyLCAyMjgsIDc5LCA5LCAyLCAyMjgsIDc4LCA5LCAyLCAyMjgsIAotICAgIDc3LCA5LCAyLCAyMjgsIDc2LCA5LCAyLCAyMjgsIDc1LCAxMTUsIDIyOCwgNzUsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDc0LCAKLSAgICA5LCAyLCAyMjgsIDczLCAxMTUsIDIyOCwgNzIsIDksIDIsIDIyOCwgNzEsIDksIDIsIDIyOCwgNzAsIDksIDIsIDIyOCwgNjksIAotICAgIDksIDIsIDIyOCwgNjgsIDksIDIsIDIyOCwgNjcsIDksIDIsIDIyOCwgNjYsIDksIDIsIDIyOCwgNjUsIDksIDIsIDIyOCwgCi0gICAgNjQsIDksIDIsIDIyOCwgNjMsIDksIDIsIDIyOCwgNjIsIDksIDIsIDIyOCwgNjEsIDksIDIsIDIyOCwgNjAsIDksIDIsIAotICAgIDIyOCwgNTksIDksIDIsIDIyOCwgNTgsIDksIDIsIDIyOCwgNTcsIDksIDIsIDIyOCwgNTYsIDksIDIsIDIyOCwgNTUsIDksIAotICAgIDIsIDIyOCwgNTQsIDksIDIsIDIyOCwgNTIsIDksIDIsIDIyOCwgNTMsIDIzLCAyMzcsIDIzMCwgOSwgMiwgMjI4LCA1MywgCi0gICAgMjMsIDIzMSwgODUsIDksIDIsIDIyOCwgNTMsIDIzLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAKLSAgICAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIDUzLCAyMywgMjA3LCA0MSwgOTEsIDI0OSwgCi0gICAgMzIsIDksIDIsIDIyOCwgNTEsIDksIDIsIDIyOCwgNTAsIDksIDIsIDIyOCwgNDksIDksIDIsIDIyOCwgNDgsIDksIDIsIAotICAgIDIyOCwgNDcsIDksIDIsIDIyOCwgNDYsIDksIDIsIDIyOCwgNDUsIDksIDIsIDIyOCwgNDQsIDksIDIsIDIyOCwgNDMsIDksIAotICAgIDIsIDIyOCwgNDIsIDksIDIsIDIyOCwgNDAsIDksIDIsIDIyOCwgNDEsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDQxLCAyMywgCi0gICAgMjQ5LCAxNSwgOSwgMiwgMjI4LCA0MSwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA0MSwgCi0gICAgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjI4LCAxMTMsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDksIDIxOCwgCi0gICAgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMTg3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjA3LCA0MCwgOSwgMiwgMjI4LCA0MSwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgNDEsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzOSwgOSwgMiwgMjI4LCAzNywgCi0gICAgOSwgMiwgMjI4LCAzOCwgMjMsIDI0MiwgNDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzksIDgsIDksIDIsIDIyOCwgMzgsIDIzLCAKLSAgICAyMzEsIDg1LCA5LCAyLCAyMjgsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgMzgsIDIzLCAyMjIsIAotICAgIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgCi0gICAgMzgsIDIzLCAyMTMsIDI4LCA5MSwgMjI5LCAxMDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDM4LCAKLSAgICAyMywgMjA2LCAxOTcsIDksIDIsIDIyOCwgMzUsIDksIDIsIDIyOCwgMzQsIDksIDIsIDIyNiwgMjM4LCAyMzcsIDIwOSwgMjMsIAotICAgIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQzLCAxNTYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCAxNDAsIDksIAotICAgIDIsIDIyNiwgMjM4LCAyMywgMjE5LCA5NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIAotICAgIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjQsIDE1NiwgOTEsIDIwMiwgMTE1LCA5LCAKLSAgICAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIAotICAgIDIzLCAyMzAsIDEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjQzLCAxODksIDIzNywgMjA4LCA5LCAyLCAyMjIsIDY2LCAyMywgCi0gICAgMjM4LCA1NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAzLCA5LCAyLCAKLSAgICAyMjIsIDY2LCAyMywgMjI5LCAxNzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjgsIDc4LCA5LCAyLCAyMjIsIDY2LCAyMywgCi0gICAgMjI1LCA3OSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk2LCA5LCAyLCAyMjIsIDY2LCAyMywgNjgsIAotICAgIDksIDIsIDIyMiwgNjYsIDIzLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMTUsIAotICAgIDIzLCAyMzcsIDIwOSwgMjMsIDE1MiwgOSwgMiwgMjE1LCAyMywgMjMsIDI0MSwgOTIsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyMTMsIDQ0LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMTMsIDg3LCAKLSAgICAyMDksIDE0MSwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCA5MSwgMjM2LCAyMSwgOSwgMiwgCi0gICAgMjEzLCA0NCwgOTEsIDIyMywgODYsIDksIDIsIDIxMywgNDQsIDkxLCAyMTQsIDIzMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAKLSAgICAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIDIxMiwgMTk4LCA5MSwgMjQxLCAxOTEsIDIzLCAyNTAsIDIzMSwgOSwgMiwgCi0gICAgMjEyLCAxNjMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA5LCAyNDMsIDkxLCAyMTUsIDIyLCA5LCAyLCAyMDcsIDE5MiwgMjMsIAotICAgIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjA3LCAxOTIsIDIzLCAxMjYsIDI0MywgMTU2LCA5LCAyLCAyMDYsIDIwOSwgCi0gICAgMjMwLCAyMzgsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNDQsIDE1MywgOSwgCi0gICAgMiwgMjA2LCAyMDAsIDIzLCAyMjgsIDM2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyNiwgMjM2LCA5LCAyLCAyMDIsIDExNSwgCi0gICAgOSwgMiwgMjAyLCA3LCAxMTUsIDIwMiwgNywgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMDIsIDUsIDIzLCAxMjYsIDI0MywgMTU3LCAKLSAgICAyMDksIDE0MSwgMTQsIDcsIDI1NSwgMTgsIDE0LCA3LCAyNTUsIDE3LCAxNCwgNywgMjU1LCAxNiwgMTQsIDcsIDI1NSwgMTUsIAotICAgIDE0LCA3LCAyNTUsIDE0LCAxNCwgNywgMjU1LCAxMywgMTQsIDcsIDI1NSwgMTIsIDE0LCA3LCAyNTUsIDExLCAxNCwgNywgCi0gICAgMjU1LCAxMCwgMTQsIDcsIDI1NSwgOSwgMTQsIDcsIDI1NSwgOCwgMTQsIDcsIDI1NSwgNywgMTQsIDcsIDI1NSwgNiwgMTQsIAotICAgIDcsIDI1NSwgNCwgMTQsIDcsIDI1NSwgMywgMTQsIDcsIDI1NSwgMiwgMTQsIDcsIDI1NSwgMSwgMTQsIDcsIDI1NSwgMCwgCi0gICAgMTQsIDcsIDI1NCwgMjU1LCAxNCwgNywgMjU0LCAyNTQsIDE0LCA3LCAyNTQsIDI1MywgMTQsIDcsIDI1NCwgMjUyLCAxNCwgCi0gICAgNywgMjU0LCAyNTEsIDE0LCA3LCAyNTQsIDI1MCwgMTQsIDcsIDI1NCwgMjQ5LCAxNCwgNywgMjU0LCAyNDgsIDE0LCA3LCAKLSAgICAyNTQsIDI0NywgMTQsIDcsIDI1NCwgMjQ2LCAxNCwgNywgMjU0LCAyNDUsIDE0LCA3LCAyNTQsIDI0NCwgMTQsIDcsIDI1NCwgCi0gICAgMjQzLCAxNCwgNywgMjU0LCAyNDEsIDE0LCA3LCAyNTQsIDI0MCwgMTQsIDcsIDI1NCwgMjM4LCAxNCwgNywgMjU0LCAyMzcsIAotICAgIDE0LCA3LCAyNTQsIDIzNiwgMTQsIDcsIDI1NCwgMjM1LCAxNCwgNywgMjU0LCAyMzQsIDE0LCA3LCAyNTQsIDIzMywgMTQsIAotICAgIDcsIDI1NCwgMjMyLCAxNCwgNywgMjU0LCAyMzEsIDE0LCA3LCAyNTQsIDIzMCwgMTQsIDcsIDI1NCwgMjI5LCAxNCwgNywgCi0gICAgMjU0LCAyMjgsIDE0LCA3LCAyNTQsIDIyNywgMTQsIDcsIDI1NCwgMjI1LCAxNCwgNywgMjU0LCAyMjQsIDE0LCA3LCAyNTQsIAotICAgIDIyMywgMTQsIDcsIDI1NCwgMjIxLCAxNCwgNywgMjU0LCAyMjAsIDE0LCA3LCAyNTQsIDIxOSwgMTQsIDcsIDI1NCwgMjE4LCAKLSAgICAxNCwgNywgMjU0LCAyMTcsIDE0LCA3LCAyNTQsIDIxNiwgMTQsIDcsIDI1NCwgMjE1LCAxNCwgNywgMjU0LCAyMTQsIDE0LCAKLSAgICA3LCAyNTQsIDIxMSwgMTQsIDcsIDI1NCwgMjEwLCAxNCwgNywgMjU0LCAyMDksIDE0LCA3LCAyNTQsIDIwOCwgMTQsIDcsIAotICAgIDI1NCwgMjA3LCAxNCwgNywgMjU0LCAyMDYsIDE0LCA3LCAyNTQsIDIwNSwgMTQsIDcsIDI1NCwgMjA0LCAxNCwgNywgMjU0LCAKLSAgICAyMDMsIDE0LCA3LCAyNTQsIDIwMiwgMTQsIDcsIDI1NCwgMjAxLCAxNCwgNywgMjU0LCAyMDAsIDE0LCA3LCAyNTQsIDE5OSwgCi0gICAgMTQsIDcsIDI1NCwgMTk4LCAxNCwgNywgMjU0LCAxOTcsIDE0LCA3LCAyNTQsIDE5NiwgMTQsIDcsIDI1NCwgMTk1LCAxNCwgCi0gICAgNywgMjU0LCAxOTQsIDE0LCA3LCAyNTQsIDE5MywgMTQsIDcsIDI1NCwgMTkyLCAxNCwgNywgMjU0LCAxODgsIDE0LCA3LCAKLSAgICAyNTQsIDE4NywgMTQsIDcsIDI1NCwgMTg2LCAxNCwgNywgMjU0LCAxODUsIDE0LCA3LCAyNDksIDI1MywgMTQsIDcsIDI0OSwgCi0gICAgMjUxLCAxNCwgNywgMjQ5LCAyNDksIDE0LCA3LCAyNDksIDI0NywgMTQsIDcsIDI0OSwgMjQ1LCAxNCwgNywgMjQ5LCAyNDQsIAotICAgIDE0LCA3LCAyNDksIDI0MiwgMTQsIDcsIDI0OSwgMjQwLCAxNCwgNywgMjQ5LCAyMzgsIDE0LCA3LCAyNDksIDIzNiwgMTQsIAotICAgIDcsIDI0NywgMTIxLCAxNCwgNywgMjQ3LCAxMjAsIDE0LCA3LCAyNDcsIDExOSwgMTQsIDcsIDI0NywgMTE4LCAxNCwgNywgCi0gICAgMjQ3LCAxMTcsIDE0LCA3LCAyNDcsIDExNiwgMTQsIDcsIDI0NywgMTE1LCAxNCwgNywgMjQ3LCAxMTQsIDE0LCA3LCAyNDcsIAotICAgIDExMywgMTQsIDcsIDI0NywgMTEyLCAxNCwgNywgMjQ3LCAxMTEsIDE0LCA3LCAyNDcsIDExMCwgMTQsIDcsIDI0NywgMTA5LCAKLSAgICAxNCwgNywgMjQ3LCAxMDgsIDE0LCA3LCAyNDcsIDEwNywgMTQsIDcsIDI0NywgMTA2LCAxNCwgNywgMjQ3LCAxMDUsIDE0LCAKLSAgICA3LCAyNDcsIDEwNCwgMTQsIDcsIDI0NywgMTAzLCAxNCwgNywgMjQ3LCAxMDIsIDE0LCA3LCAyNDcsIDEwMSwgMTQsIDcsIAotICAgIDI0NywgMTAwLCAxNCwgNywgMjQ3LCA5OSwgMTQsIDcsIDI0NywgOTgsIDE0LCA3LCAyNDcsIDk3LCAxNCwgNywgMjQ3LCA5NiwgCi0gICAgMTQsIDcsIDI0NywgOTUsIDE0LCA3LCAyNDcsIDk0LCAxNCwgNywgMjQ1LCA1MCwgMTQsIDcsIDI0NSwgNDksIDE0LCA3LCAKLSAgICAyNDUsIDQ4LCAxNCwgNywgMjQ1LCA0NywgMTQsIDcsIDI0NSwgNDYsIDE0LCA3LCAyNDUsIDQ1LCAxNCwgNywgMjQ1LCA0NCwgCi0gICAgMTQsIDcsIDI0NSwgNDMsIDE0LCA3LCAyNDUsIDQyLCAxNCwgNywgMjQ1LCA0MSwgMTQsIDcsIDI0NSwgNDAsIDE0LCA3LCAKLSAgICAyNDUsIDM5LCAxNCwgNywgMjQ1LCAzOCwgMTQsIDcsIDI0NSwgMzcsIDE0LCA3LCAyNDUsIDM2LCAxNCwgNywgMjQ1LCAzNSwgCi0gICAgMTQsIDcsIDI0NSwgMzQsIDE0LCA3LCAyNDUsIDMzLCAxNCwgNywgMjQ1LCAzMiwgMTQsIDcsIDI0NSwgMzEsIDE0LCA3LCAKLSAgICAyNDUsIDMwLCAxNCwgNywgMjQ1LCAyOSwgMTQsIDcsIDI0NSwgMjgsIDE0LCA3LCAyNDUsIDI3LCAxNCwgNywgMjQ1LCAyNiwgCi0gICAgMTQsIDcsIDI0NSwgMjUsIDE0LCA3LCAyNDUsIDI0LCAxNCwgNywgMjQ1LCAyMywgMTQsIDcsIDI0NSwgMjIsIDE0LCA3LCAKLSAgICAyNDUsIDIxLCAxNCwgNywgMjQ1LCAyMCwgMTQsIDcsIDI0NSwgMTksIDE0LCA3LCAyNDUsIDE4LCAxNCwgNywgMjQ1LCAxNywgCi0gICAgMTQsIDcsIDI0NSwgMTYsIDE0LCA3LCAyNDUsIDE1LCAxNCwgNywgMjQ1LCAxNCwgMTQsIDcsIDI0NSwgMTMsIDE0LCA3LCAKLSAgICAyNDUsIDEyLCAxNCwgNywgMjQ1LCAxMSwgMTQsIDcsIDI0NSwgMTAsIDE0LCA3LCAyNDUsIDksIDE0LCA3LCAyNDUsIDgsIAotICAgIDE0LCA3LCAyNDUsIDcsIDE0LCA3LCAyNDUsIDYsIDE0LCA3LCAyNDUsIDUsIDE0LCA3LCAyNDUsIDQsIDE0LCA3LCAyNDUsIAotICAgIDMsIDE0LCA3LCAyNDUsIDIsIDE0LCA3LCAyNDUsIDEsIDE0LCA3LCAyNDUsIDAsIDE0LCA3LCAyNDQsIDI1NSwgMTQsIDcsIAotICAgIDI0NCwgMjU0LCAxNCwgNywgMjQ0LCAyNTMsIDE0LCA3LCAyNDQsIDI1MiwgMTQsIDcsIDI0NCwgMjUxLCAxNCwgNywgMjQ0LCAKLSAgICAyNTAsIDE0LCA3LCAyNDQsIDI0OSwgMTQsIDcsIDI0NCwgMjQ4LCAxNCwgNywgMjQ0LCAyNDcsIDE0LCA3LCAyNDQsIDI0NiwgCi0gICAgMTQsIDcsIDI0NCwgMjQ1LCAxNCwgNywgMjQ0LCAyNDQsIDE0LCA3LCAyNDQsIDI0MywgMTQsIDcsIDI0NCwgMjQyLCAxNCwgCi0gICAgNywgMjQ0LCAyNDEsIDE0LCA3LCAyNDQsIDI0MCwgMTQsIDcsIDI0NCwgMjM5LCAxNCwgNywgMjQ0LCAyMzgsIDE0LCA3LCAKLSAgICAyNDQsIDIzNywgMTQsIDcsIDI0NCwgMjM2LCAxNCwgNywgMjQ0LCAyMzUsIDE0LCA3LCAyNDQsIDIzNCwgMTQsIDcsIDI0NCwgCi0gICAgMjMzLCAxNCwgNywgMjQ0LCAyMzIsIDE0LCA3LCAyNDQsIDIzMSwgMTQsIDcsIDI0NCwgMjMwLCAxNCwgNywgMjQ0LCAyMjksIAotICAgIDE0LCA3LCAyNDQsIDIyOCwgMTQsIDcsIDI0NCwgMjI3LCAxNCwgNywgMjQ0LCAyMjYsIDE0LCA3LCAyNDQsIDIyNSwgMTQsIAotICAgIDcsIDI0NCwgMjI0LCAxNCwgNywgMjQ0LCAyMjMsIDE0LCA3LCAyNDQsIDIyMiwgMTQsIDcsIDI0NCwgMjIxLCAxNCwgNywgCi0gICAgMjQ0LCAyMjAsIDE0LCA3LCAyNDQsIDIxOSwgMTQsIDcsIDI0NCwgMjE4LCAxNCwgNywgMjQ0LCAyMTcsIDE0LCA3LCAyNDQsIAotICAgIDIxNiwgMTQsIDcsIDI0NCwgMjE1LCAxNCwgNywgMjQxLCAyMzUsIDE0LCA3LCAyNDEsIDIzNCwgMTQsIDcsIDI0MSwgMjMzLCAKLSAgICAxNCwgNywgMjQxLCAyMzIsIDE0LCA3LCAyNDEsIDIzMSwgMTQsIDcsIDI0MSwgMjMwLCAxNCwgNywgMjQxLCAyMjksIDE0LCAKLSAgICA3LCAyNDEsIDIyOCwgMTQsIDcsIDI0MSwgMjI3LCAxNCwgNywgMjQxLCAyMjYsIDE0LCA3LCAyNDEsIDIyNSwgMTQsIDcsIAotICAgIDI0MSwgMjI0LCAxNCwgNywgMjQxLCAyMjMsIDE0LCA3LCAyNDEsIDIyMiwgMTQsIDcsIDI0MSwgMjIxLCAxNCwgNywgMjQxLCAKLSAgICAyMjAsIDE0LCA3LCAyNDEsIDIxOSwgMTQsIDcsIDI0MSwgMjE4LCAxNCwgNywgMjQxLCAyMTcsIDE0LCA3LCAyNDEsIDIxNiwgCi0gICAgMTQsIDcsIDI0MSwgMjE1LCAxNCwgNywgMjQxLCAyMTQsIDE0LCA3LCAyNDEsIDIxMywgMTQsIDcsIDI0MSwgMjEyLCAxNCwgCi0gICAgNywgMjQxLCAyMTEsIDE0LCA3LCAyNDEsIDIxMCwgMTQsIDcsIDI0MSwgMjA5LCAxNCwgNywgMjQxLCAyMDgsIDE0LCA3LCAKLSAgICAyNDEsIDIwNywgMTQsIDcsIDI0MSwgMjA2LCAxNCwgNywgMjQxLCAyMDUsIDE0LCA3LCAyNDEsIDIwNCwgMTQsIDcsIDI0MSwgCi0gICAgMjAzLCAxNCwgNywgMjQxLCAyMDIsIDE0LCA3LCAyNDEsIDIwMSwgMTQsIDcsIDI0MSwgMjAwLCAxNCwgNywgMjQxLCAxOTksIAotICAgIDE0LCA3LCAyNDEsIDE5OCwgMTQsIDcsIDI0MSwgMTk3LCAxNCwgNywgMjQxLCAxOTYsIDE0LCA3LCAyNDEsIDE5NSwgMTQsIAotICAgIDcsIDI0MSwgMTk0LCAxNCwgNywgMjQxLCAxOTMsIDE0LCA3LCAyNDEsIDE5MiwgMTQsIDcsIDI0MCwgMTczLCAxNCwgNywgCi0gICAgMjQwLCAxNzIsIDE0LCA3LCAyNDAsIDE3MSwgMTQsIDcsIDI0MCwgMTcwLCAxNCwgNywgMjQwLCAxNjksIDE0LCA3LCAyNDAsIAotICAgIDE2OCwgMTQsIDcsIDI0MCwgMTY3LCAxNCwgNywgMjQwLCAxNjYsIDE0LCA3LCAyNDAsIDE2NSwgMTQsIDcsIDI0MCwgMTY0LCAKLSAgICAxNCwgNywgMjQwLCAxNjMsIDE0LCA3LCAyNDAsIDE2MiwgMTQsIDcsIDI0MCwgMTYxLCAxNCwgNywgMjQwLCAxNjAsIDE0LCAKLSAgICA3LCAyNDAsIDE1OSwgMTQsIDcsIDI0MCwgMTU4LCAxNCwgNywgMjQwLCAxNTcsIDE0LCA3LCAyNDAsIDE1NiwgMTQsIDcsIAotICAgIDI0MCwgMTU1LCAxNCwgNywgMjQwLCAxNTQsIDE0LCA3LCAyNDAsIDE1MywgMTQsIDcsIDI0MCwgMTUyLCAxNCwgNywgMjQwLCAKLSAgICAxNTEsIDE0LCA3LCAyNDAsIDE1MCwgMTQsIDcsIDI0MCwgMTQ5LCAxNCwgNywgMjQwLCAxNDgsIDE0LCA3LCAyNDAsIDE0NywgCi0gICAgMTQsIDcsIDI0MCwgMTQ2LCAxNCwgNywgMjQwLCAxNDUsIDE0LCA3LCAyNDAsIDE0NCwgMTQsIDcsIDI0MCwgMTQzLCAxNCwgCi0gICAgNywgMjQwLCAxNDIsIDE0LCA3LCAyNDAsIDE0MSwgMTQsIDcsIDI0MCwgMTQwLCAxNCwgNywgMjQwLCAxMzksIDE0LCA3LCAKLSAgICAyNDAsIDEzOCwgMTQsIDcsIDI0MCwgMTM3LCAxNCwgNywgMjQwLCAxMzYsIDE0LCA3LCAyNDAsIDEzNSwgMTQsIDcsIDI0MCwgCi0gICAgMTM0LCAxNCwgNywgMjQwLCAxMzMsIDE0LCA3LCAyNDAsIDEzMiwgMTQsIDcsIDI0MCwgMTMxLCAxNCwgNywgMjQwLCAxMzAsIAotICAgIDE0LCA3LCAyNDAsIDEyOSwgMTQsIDcsIDI0MCwgMTI4LCAxNCwgNywgMjQwLCAxMjcsIDE0LCA3LCAyNDAsIDEyNiwgMTQsIAotICAgIDcsIDI0MCwgMTI1LCAxNCwgNywgMjQwLCAxMjQsIDE0LCA3LCAyNDAsIDEyMywgMTQsIDcsIDI0MCwgMTIyLCAxNCwgNywgCi0gICAgMjQwLCAxMjEsIDE0LCA3LCAyNDAsIDEyMCwgMTQsIDcsIDI0MCwgMTE5LCAxNCwgNywgMjQwLCAxMTgsIDE0LCA3LCAyNDAsIAotICAgIDExNywgMTQsIDcsIDI0MCwgMTE2LCAxNCwgNywgMjQwLCAxMTUsIDE0LCA3LCAyNDAsIDExNCwgMTQsIDcsIDI0MCwgMTEzLCAKLSAgICAxNCwgNywgMjQwLCAxMTIsIDE0LCA3LCAyNDAsIDExMSwgMTQsIDcsIDI0MCwgMTEwLCAxNCwgNywgMjQwLCAxMDksIDE0LCAKLSAgICA3LCAyMzksIDc0LCAxNCwgNywgMjM5LCA3MywgMTQsIDcsIDIzOSwgNzIsIDE0LCA3LCAyMzksIDcxLCAxNCwgNywgMjM5LCAKLSAgICA3MCwgMTQsIDcsIDIzOSwgNjksIDE0LCA3LCAyMzksIDY4LCAxNCwgNywgMjM5LCA2NywgMTQsIDcsIDIzOSwgNjYsIDE0LCAKLSAgICA3LCAyMzksIDY1LCAxNCwgNywgMjM5LCA2NCwgMTQsIDcsIDIzOSwgNjMsIDE0LCA3LCAyMzksIDYyLCAxNCwgNywgMjM5LCAKLSAgICA2MSwgMTQsIDcsIDIzOSwgNjAsIDE0LCA3LCAyMzksIDU5LCAxNCwgNywgMjM5LCA1OCwgMTQsIDcsIDIzOSwgNTcsIDE0LCAKLSAgICA3LCAyMzksIDU2LCAxNCwgNywgMjM5LCA1NSwgMTQsIDcsIDIzOSwgNTQsIDE0LCA3LCAyMzksIDUzLCAxNCwgNywgMjM5LCAKLSAgICA1MiwgMTQsIDcsIDIzOSwgNTEsIDE0LCA3LCAyMzksIDUwLCAxNCwgNywgMjM5LCA0OSwgMTQsIDcsIDIzOSwgNDgsIDE0LCAKLSAgICA3LCAyMzksIDQ3LCAxNCwgNywgMjM5LCA0NiwgMTQsIDcsIDIzOSwgNDUsIDE0LCA3LCAyMzksIDQ0LCAxNCwgNywgMjM5LCAKLSAgICA0MywgMTQsIDcsIDIzOSwgNDIsIDE0LCA3LCAyMzksIDQxLCAxNCwgNywgMjM5LCA0MCwgMTQsIDcsIDIzOSwgMzksIDE0LCAKLSAgICA3LCAyMzksIDM4LCAxNCwgNywgMjM5LCAzNywgMTQsIDcsIDIzOSwgMzYsIDE0LCA3LCAyMzksIDM1LCAxNCwgNywgMjM5LCAKLSAgICAzNCwgMTQsIDcsIDIzOSwgMzMsIDE0LCA3LCAyMzksIDMyLCAxNCwgNywgMjM5LCAzMSwgMTQsIDcsIDIzOSwgMzAsIDE0LCAKLSAgICA3LCAyMzksIDI5LCAxNCwgNywgMjM5LCAyOCwgMTQsIDcsIDIzOSwgMjcsIDE0LCA3LCAyMzksIDI2LCAxNCwgNywgMjM5LCAKLSAgICAyNSwgMTQsIDcsIDIzOSwgMjQsIDE0LCA3LCAyMzksIDIzLCAxNCwgNywgMjM5LCAyMiwgMTQsIDcsIDIzOSwgMjEsIDE0LCAKLSAgICA3LCAyMzksIDIwLCAxNCwgNywgMjM5LCAxOSwgMTQsIDcsIDIzOSwgMTgsIDE0LCA3LCAyMzksIDE3LCAxNCwgNywgMjM5LCAKLSAgICAxNiwgMTQsIDcsIDIzOSwgMTUsIDE0LCA3LCAyMzksIDE0LCAxNCwgNywgMjM5LCAxMywgMTQsIDcsIDIzOSwgMTIsIDE0LCAKLSAgICA3LCAyMzksIDExLCAxNCwgNywgMjM3LCAxNjksIDE0LCA3LCAyMzcsIDE2OCwgMTQsIDcsIDIzNywgMTY3LCAxNCwgNywgCi0gICAgMjM3LCAxNjYsIDE0LCA3LCAyMzcsIDE2NSwgMTQsIDcsIDIzNywgMTY0LCAxNCwgNywgMjM3LCAxNjMsIDE0LCA3LCAyMzcsIAotICAgIDE2MiwgMTQsIDcsIDIzNywgMTYxLCAxNCwgNywgMjM1LCAxOTAsIDE0LCA3LCAyMzUsIDE4OSwgMTQsIDcsIDIzNSwgMTg4LCAKLSAgICAxNCwgNywgMjM1LCAxODcsIDE0LCA3LCAyMzUsIDE4NiwgMTQsIDcsIDIzNSwgMTg1LCAxNCwgNywgMjM1LCAxODQsIDE0LCAKLSAgICA3LCAyMzUsIDE4MywgMTQsIDcsIDIzNSwgMTgyLCAxNCwgNywgMjM1LCAxODEsIDE0LCA3LCAyMzUsIDE4MCwgMTQsIDcsIAotICAgIDIzNSwgMTc5LCAxNCwgNywgMjM1LCAxNzgsIDE0LCA3LCAyMzUsIDE3NywgMTQsIDcsIDIzNSwgMTc2LCAxNCwgNywgMjM1LCAKLSAgICAxNzUsIDE0LCA3LCAyMzUsIDE3NCwgMTQsIDcsIDIzNSwgMTczLCAxNCwgNywgMjM1LCAxNzIsIDE0LCA3LCAyMzAsIDUzLCAKLSAgICAxNCwgNywgMjMwLCA1MiwgMTQsIDcsIDIzMCwgNTEsIDE0LCA3LCAyMzAsIDUwLCAxNCwgNywgMjMwLCA0OSwgMTQsIDcsIAotICAgIDIzMCwgNDgsIDE0LCA3LCAyMzAsIDQ3LCAxNCwgNywgMjMwLCA0NiwgMTQsIDcsIDIyOCwgMTI4LCAxNCwgNywgMjI4LCAKLSAgICAxMjcsIDE0LCA3LCAyMjgsIDEyNiwgMTQsIDcsIDIyOCwgMTI1LCAxNCwgNywgMjI4LCAxMjQsIDE0LCA3LCAyMjgsIDEyMywgCi0gICAgMTQsIDcsIDIyOCwgMTIyLCAxNCwgNywgMjI4LCAxMjEsIDE0LCA3LCAyMjgsIDEyMCwgMTQsIDcsIDIyOCwgMTE5LCAxNCwgCi0gICAgNywgMjI2LCAxODMsIDE0LCA3LCAyMjYsIDE4MiwgMTQsIDcsIDIyNiwgMTgxLCAxNCwgNywgMjI2LCAxNzksIDE0LCA3LCAKLSAgICAyMjYsIDE3NywgMTQsIDcsIDIyNiwgMTc2LCAxNCwgNywgMjI2LCAxNzQsIDE0LCA3LCAyMjYsIDE3MiwgMTQsIDcsIDIyNiwgCi0gICAgMTcwLCAxNCwgNywgMjI2LCAxNjgsIDE0LCA3LCAyMjYsIDE2NiwgMTQsIDcsIDIyNiwgMTY0LCAxNCwgNywgMjI2LCAxNjIsIAotICAgIDE0LCA3LCAyMjYsIDE2MSwgMTQsIDcsIDIyNiwgMTU5LCAxNCwgNywgMjI2LCAxNTcsIDE0LCA3LCAyMjYsIDE1NiwgMTQsIAotICAgIDcsIDIyNiwgMTU1LCAxNCwgNywgMjI2LCAxNTQsIDE0LCA3LCAyMjYsIDE1MywgMTQsIDcsIDIyNiwgMTUyLCAxNCwgNywgCi0gICAgMjI2LCAxNTEsIDE0LCA3LCAyMjYsIDE1MCwgMTQsIDcsIDIyNiwgMTQ5LCAxNCwgNywgMjI2LCAxNDcsIDE0LCA3LCAyMjYsIAotICAgIDE0NSwgMTQsIDcsIDIyNiwgMTQzLCAxNCwgNywgMjI2LCAxNDIsIDE0LCA3LCAyMjYsIDE0MCwgMTQsIDcsIDIyNiwgMTM5LCAKLSAgICAxNCwgNywgMjI2LCAxMzcsIDE0LCA3LCAyMjYsIDEzNiwgMTQsIDcsIDIyNiwgMTM0LCAxNCwgNywgMjI2LCAxMzIsIDE0LCAKLSAgICA3LCAyMjYsIDEzMCwgMTQsIDcsIDIyNiwgMTI4LCAxNCwgNywgMjI2LCAxMjYsIDE0LCA3LCAyMjYsIDEyNSwgMTQsIDcsIAotICAgIDIyNiwgMTIzLCAxNCwgNywgMjI2LCAxMjEsIDE0LCA3LCAyMjYsIDEyMCwgMTQsIDcsIDIyNiwgMTE4LCAxNCwgNywgMjI2LCAKLSAgICAxMTYsIDE0LCA3LCAyMjYsIDExNCwgMTQsIDcsIDIyNiwgMTEyLCAxNCwgNywgMjI2LCAxMTEsIDE0LCA3LCAyMjYsIDEwOSwgCi0gICAgMTQsIDcsIDIyNiwgMTA3LCAxNCwgNywgMjI2LCAxMDUsIDE0LCA3LCAyMjYsIDEwNCwgMTQsIDcsIDIyNiwgMTAyLCAxNCwgCi0gICAgNywgMjI2LCAxMDAsIDE0LCA3LCAyMjYsIDk5LCAxNCwgNywgMjI2LCA5OCwgMTQsIDcsIDIyNiwgOTYsIDE0LCA3LCAyMjYsIAotICAgIDk0LCAxNCwgNywgMjI2LCA5MiwgMTQsIDcsIDIyNiwgOTAsIDE0LCA3LCAyMjYsIDg4LCAxNCwgNywgMjI2LCA4NiwgMTQsIAotICAgIDcsIDIyNiwgODQsIDE0LCA3LCAyMjYsIDgzLCAxNCwgNywgMjI2LCA4MSwgMTQsIDcsIDIyNiwgNzksIDE0LCA3LCAyMjYsIAotICAgIDc3LCAxNCwgNywgMjI2LCA3NSwgMTQsIDcsIDIyMywgMTYwLCAxNCwgNywgMjIzLCAxNTksIDE0LCA3LCAyMjMsIDE1OCwgCi0gICAgMTQsIDcsIDIyMywgMTU3LCAxNCwgNywgMjIzLCAxNTYsIDE0LCA3LCAyMjMsIDE1NSwgMTQsIDcsIDIyMywgMTU0LCAxNCwgCi0gICAgNywgMjIzLCAxNTMsIDE0LCA3LCAyMjMsIDE1MiwgMTQsIDcsIDIyMywgMTUxLCAxNCwgNywgMjIzLCAxNTAsIDE0LCA3LCAKLSAgICAyMjMsIDE0OSwgMTQsIDcsIDIyMywgMTQ4LCAxNCwgNywgMjIzLCAxNDcsIDE0LCA3LCAyMjMsIDE0NiwgMTQsIDcsIDIyMywgCi0gICAgMTQ1LCAxNCwgNywgMjIzLCAxNDQsIDE0LCA3LCAyMjMsIDE0MywgMTQsIDcsIDIyMywgMTQyLCAxNCwgNywgMjIzLCAxNDEsIAotICAgIDE0LCA3LCAyMjMsIDE0MCwgMTQsIDcsIDIyMywgMTM5LCAxNCwgNywgMjIzLCAxMzgsIDE0LCA3LCAyMjMsIDEzNywgMTQsIAotICAgIDcsIDIyMywgMTM2LCAxNCwgNywgMjIzLCAxMzUsIDE0LCA3LCAyMjMsIDEzNCwgMTQsIDcsIDIyMywgMTMzLCAxNCwgNywgCi0gICAgMjIzLCAxMzIsIDE0LCA3LCAyMjMsIDEzMSwgMTQsIDcsIDIyMywgMTMwLCAxNCwgNywgMjIzLCAxMjksIDE0LCA3LCAyMjMsIAotICAgIDEyOCwgMTQsIDcsIDIyMywgMTI3LCAxNCwgNywgMjIzLCAxMjYsIDE0LCA3LCAyMjMsIDEyNSwgMTQsIDcsIDIyMywgMTI0LCAKLSAgICAxNCwgNywgMjIzLCAxMjMsIDE0LCA3LCAyMjMsIDEyMiwgMTQsIDcsIDIyMywgMTIxLCAxNCwgNywgMjIzLCAxMjAsIDE0LCAKLSAgICA3LCAyMjMsIDExOSwgMTQsIDcsIDIyMywgMTE4LCAxNCwgNywgMjIzLCAxMTcsIDE0LCA3LCAyMjMsIDExNiwgMTQsIDcsIAotICAgIDIyMywgMTE1LCAxNCwgNywgMjIzLCAxMTQsIDE0LCA3LCAyMjMsIDExMywgMTQsIDcsIDIyMywgMTEyLCAxNCwgNywgMjIxLCAKLSAgICAyNTIsIDE0LCA3LCAyMjEsIDI1MSwgMTQsIDcsIDIyMSwgMjUwLCAxNCwgNywgMjIxLCAyNDksIDE0LCA3LCAyMjEsIDI0OCwgCi0gICAgMTQsIDcsIDIyMSwgMjQ3LCAxNCwgNywgMjIxLCAyNDYsIDE0LCA3LCAyMjEsIDI0NSwgMTQsIDcsIDIyMSwgMjQ0LCAxNCwgCi0gICAgNywgMjIxLCAyNDMsIDE0LCA3LCAyMjEsIDI0MiwgMTQsIDcsIDIyMSwgMjQxLCAxNCwgNywgMjIxLCAyNDAsIDE0LCA3LCAKLSAgICAyMjEsIDIzOSwgMTQsIDcsIDIyMSwgMjM4LCAxNCwgNywgMjIxLCAyMzcsIDE0LCA3LCAyMjEsIDIzNiwgMTQsIDcsIDIyMSwgCi0gICAgMjM1LCAxNCwgNywgMjIxLCAyMzQsIDE0LCA3LCAyMjEsIDIzMywgMTQsIDcsIDIyMSwgMjMyLCAxNCwgNywgMjIxLCAyMzEsIAotICAgIDE0LCA3LCAyMjEsIDgzLCAxNCwgNywgMjIxLCA4MiwgMTQsIDcsIDIyMSwgODEsIDE0LCA3LCAyMjEsIDgwLCAxNCwgNywgCi0gICAgMjIxLCA3OSwgMTQsIDcsIDIyMSwgNzgsIDE0LCA3LCAyMjEsIDc3LCAxNCwgNywgMjIxLCA3NiwgMTQsIDcsIDIyMSwgNzUsIAotICAgIDE0LCA3LCAyMjEsIDc0LCAxNCwgNywgMjIxLCA3MywgMTQsIDcsIDIyMSwgNzIsIDE0LCA3LCAyMjEsIDcxLCAxNCwgNywgCi0gICAgMjIxLCA3MCwgMTQsIDcsIDIyMSwgNjksIDE0LCA3LCAyMjEsIDY4LCAxNCwgNywgMjIxLCA2NywgMTQsIDcsIDIyMSwgNjYsIAotICAgIDE0LCA3LCAyMjEsIDY1LCAxNCwgNywgMjIxLCA2NCwgMTQsIDcsIDIyMSwgNjMsIDE0LCA3LCAyMjEsIDYyLCAxNCwgNywgCi0gICAgMjIxLCA2MSwgMTQsIDcsIDIyMSwgNjAsIDE0LCA3LCAyMjEsIDU5LCAxNCwgNywgMjIxLCA1OCwgMTQsIDcsIDIyMCwgMTczLCAKLSAgICAxNCwgNywgMjIwLCAxNzIsIDE0LCA3LCAyMjAsIDE3MSwgMTQsIDcsIDIyMCwgMTcwLCAxNCwgNywgMjIwLCAxNjksIDE0LCAKLSAgICA3LCAyMjAsIDE2OCwgMTQsIDcsIDIyMCwgMTY3LCAxNCwgNywgMjIwLCAxNjYsIDE0LCA3LCAyMjAsIDE2NSwgMTQsIDcsIAotICAgIDIyMCwgMTY0LCAxNCwgNywgMjIwLCAxNjMsIDE0LCA3LCAyMjAsIDE2MiwgMTQsIDcsIDIyMCwgMTYxLCAxNCwgNywgMjIwLCAKLSAgICAxNjAsIDE0LCA3LCAyMjAsIDE1OSwgMTQsIDcsIDIyMCwgMTU4LCAxNCwgNywgMjIwLCAxNTcsIDE0LCA3LCAyMjAsIDE1NiwgCi0gICAgMTQsIDcsIDIyMCwgMTU1LCAxNCwgNywgMjIwLCAxNTQsIDE0LCA3LCAyMjAsIDE1MywgMTQsIDcsIDIyMCwgMTUyLCAxNCwgCi0gICAgNywgMjIwLCAxNTEsIDE0LCA3LCAyMjAsIDE1MCwgMTQsIDcsIDIyMCwgMTQ5LCAxNCwgNywgMjIwLCAxNDgsIDE0LCA3LCAKLSAgICAyMjAsIDE0NywgMTQsIDcsIDIyMCwgMTQ2LCAxNCwgNywgMjIwLCAxNDUsIDE0LCA3LCAyMjAsIDE0NCwgMTQsIDcsIDIyMCwgCi0gICAgMTQzLCAxNCwgNywgMjIwLCAxNDIsIDE0LCA3LCAyMjAsIDE0MSwgMTQsIDcsIDIyMCwgMTQwLCAxNCwgNywgMjIwLCAxMzksIAotICAgIDE0LCA3LCAyMjAsIDEzOCwgMTQsIDcsIDIyMCwgMTM3LCAxNCwgNywgMjIwLCAxMzYsIDE0LCA3LCAyMjAsIDEzNSwgMTQsIAotICAgIDcsIDIyMCwgMTM0LCAxNCwgNywgMjIwLCAxMzMsIDE0LCA3LCAyMjAsIDEzMiwgMTQsIDcsIDIyMCwgMTMxLCAxNCwgNywgCi0gICAgMjIwLCAxMzAsIDE0LCA3LCAyMjAsIDEyOSwgMTQsIDcsIDIyMCwgMTI4LCAxNCwgNywgMjIwLCAxMjcsIDE0LCA3LCAyMjAsIAotICAgIDEyNiwgMTQsIDcsIDIyMCwgMTI1LCAxNCwgNywgMjIwLCAxMjQsIDE0LCA3LCAyMjAsIDEyMywgMTQsIDcsIDIyMCwgMTIyLCAKLSAgICAxNCwgNywgMjIwLCAxMjEsIDE0LCA3LCAyMjAsIDEyMCwgMTQsIDcsIDIyMCwgMTE5LCAxNCwgNywgMjIwLCAxMTgsIDE0LCAKLSAgICA3LCAyMjAsIDExNywgMTQsIDcsIDIyMCwgMTE2LCAxNCwgNywgMjIwLCAxMTUsIDE0LCA3LCAyMjAsIDExNCwgMTQsIDcsIAotICAgIDIyMCwgMTEzLCAxNCwgNywgMjIwLCAxMTIsIDE0LCA3LCAyMjAsIDExMSwgMTQsIDcsIDIyMCwgMTEwLCAxNCwgNywgMjIwLCAKLSAgICAxMDksIDE0LCA3LCAyMjAsIDEwOCwgMTQsIDcsIDIyMCwgMTA3LCAxNCwgNywgMjIwLCAxMDYsIDE0LCA3LCAyMjAsIDEwNSwgCi0gICAgMTQsIDcsIDIyMCwgMTA0LCAxNCwgNywgMjIwLCAxMDMsIDE0LCA3LCAyMjAsIDEwMiwgMTQsIDcsIDIyMCwgMTAxLCAxNCwgCi0gICAgNywgMjIwLCAxMDAsIDE0LCA3LCAyMjAsIDk5LCAxNCwgNywgMjE5LCAxODMsIDE0LCA3LCAyMTksIDE4MiwgMTQsIDcsIAotICAgIDIxOSwgMTgxLCAxNCwgNywgMjE5LCAxODAsIDE0LCA3LCAyMTksIDE3OSwgMTQsIDcsIDIxOSwgMTc4LCAxNCwgNywgMjE5LCAKLSAgICAxNzcsIDE0LCA3LCAyMTksIDE3NiwgMTQsIDcsIDIxOSwgMTc1LCAxNCwgNywgMjE5LCAxNzQsIDE0LCA3LCAyMTksIDE3MywgCi0gICAgMTQsIDcsIDIxOSwgMTcyLCAxNCwgNywgMjE5LCAxNzEsIDE0LCA3LCAyMTcsIDEzMywgMTQsIDcsIDIxNywgMTMyLCAxNCwgCi0gICAgNywgMjE3LCAxMzEsIDE0LCA3LCAyMTcsIDEzMCwgMTQsIDcsIDIxNywgMTI5LCAxNCwgNywgMjE3LCAxMjgsIDE0LCA3LCAKLSAgICAyMTcsIDEyNywgMTQsIDcsIDIxNiwgMjU1LCAxNCwgNywgMjE2LCAyNTQsIDE0LCA3LCAyMTYsIDI1MywgMTQsIDcsIDIxNiwgCi0gICAgMjUyLCAxNCwgNywgMjE2LCAyNTEsIDE0LCA3LCAyMTYsIDI1MCwgMTQsIDcsIDIxNiwgMjQ5LCAxNCwgNywgMjE2LCAyNDgsIAotICAgIDE0LCA3LCAyMTYsIDI0NywgMTQsIDcsIDIxNiwgMjQ2LCAxNCwgNywgMjE2LCAyNDUsIDE0LCA3LCAyMTYsIDI0NCwgMTQsIAotICAgIDcsIDIxNiwgMjQzLCAxNCwgNywgMjE2LCAyNDIsIDE0LCA3LCAyMTYsIDI0MSwgMTQsIDcsIDIxNiwgMjQwLCAxNCwgNywgCi0gICAgMjE2LCAyMzksIDE0LCA3LCAyMTYsIDIzOCwgMTQsIDcsIDIxNiwgMjM3LCAxNCwgNywgMjE2LCAyMzYsIDE0LCA3LCAyMTYsIAotICAgIDIzNSwgMTQsIDcsIDIxNiwgMjM0LCAxNCwgNywgMjE2LCAyMzMsIDE0LCA3LCAyMTYsIDIzMiwgMTQsIDcsIDIxNiwgMjMxLCAKLSAgICAxNCwgNywgMjE2LCAyMzAsIDE0LCA3LCAyMTYsIDIyOSwgMTQsIDcsIDIxNiwgMjI4LCAxNCwgNywgMjE2LCAyMjcsIDE0LCAKLSAgICA3LCAyMTYsIDIyNiwgMTQsIDcsIDIxNiwgMjI1LCAxNCwgNywgMjE2LCAyMjQsIDE0LCA3LCAyMTYsIDIyMywgMTQsIDcsIAotICAgIDIxNiwgMjIyLCAxNCwgNywgMjE1LCA5MSwgMTQsIDcsIDIxNSwgOTAsIDE0LCA3LCAyMTUsIDg5LCAxNCwgNywgMjE1LCA4OCwgCi0gICAgMTQsIDcsIDIxNSwgODcsIDE0LCA3LCAyMTUsIDg2LCAxNCwgNywgMjE1LCA4NSwgMTQsIDcsIDIxNSwgODQsIDE0LCA3LCAKLSAgICAyMTUsIDgzLCAxNCwgNywgMjE1LCA4MiwgMTQsIDcsIDIxNSwgODEsIDE0LCA3LCAyMTUsIDgwLCAxNCwgNywgMjE1LCA3OSwgCi0gICAgMTQsIDcsIDIxNSwgNzgsIDE0LCA3LCAyMTUsIDc3LCAxNCwgNywgMjE1LCA3NiwgMTQsIDcsIDIxNSwgNzUsIDE0LCA3LCAKLSAgICAyMTUsIDc0LCAxNCwgNywgMjE1LCA3MywgMTQsIDcsIDIxNSwgNzIsIDE0LCA3LCAyMTUsIDcxLCAxNCwgNywgMjE1LCA3MCwgCi0gICAgMTQsIDcsIDIxNSwgNjksIDE0LCA3LCAyMTUsIDY4LCAxNCwgNywgMjE1LCA2NywgMTQsIDcsIDIxNSwgNjYsIDE0LCA3LCAKLSAgICAyMTUsIDY1LCAxNCwgNywgMjE1LCA2NCwgMTQsIDcsIDIxNSwgNjMsIDE0LCA3LCAyMTUsIDYyLCAxNCwgNywgMjE1LCA2MSwgCi0gICAgMTQsIDcsIDIxNSwgNjAsIDE0LCA3LCAyMTUsIDU5LCAxNCwgNywgMjE1LCA1OCwgMTQsIDcsIDIxNSwgNTcsIDE0LCA3LCAKLSAgICAyMTUsIDU2LCAxNCwgNywgMjE1LCA1NSwgMTQsIDcsIDIxNSwgNTQsIDE0LCA3LCAyMTUsIDUzLCAxNCwgNywgMjE1LCA1MiwgCi0gICAgMTQsIDcsIDIxNSwgNTEsIDE0LCA3LCAyMTUsIDUwLCAxNCwgNywgMjE1LCA0OSwgMTQsIDcsIDIxNSwgNDgsIDE0LCA3LCAKLSAgICAyMTUsIDQ3LCAxNCwgNywgMjE1LCA0NiwgMTQsIDcsIDIxNSwgNDUsIDE0LCA3LCAyMTUsIDQ0LCAxNCwgNywgMjE1LCA0MywgCi0gICAgMTQsIDcsIDIxNSwgNDIsIDE0LCA3LCAyMTUsIDQxLCAxNCwgNywgMjE1LCA0MCwgMTQsIDcsIDIxNSwgMzksIDE0LCA3LCAKLSAgICAyMTUsIDM4LCAxNCwgNywgMjEwLCA2NywgMTQsIDcsIDIxMCwgNjYsIDE0LCA3LCAyMTAsIDY1LCAxNCwgNywgMjEwLCA2NCwgCi0gICAgMTQsIDcsIDIxMCwgNjMsIDE0LCA3LCAyMTAsIDYyLCAxNCwgNywgMjEwLCA2MSwgMTQsIDcsIDIxMCwgNjAsIDE0LCA3LCAKLSAgICAyMTAsIDU5LCAxNCwgNywgMjEwLCA1OCwgMTQsIDcsIDIxMCwgNTcsIDE0LCA3LCAyMTAsIDU2LCAxNCwgNywgMjEwLCA1NSwgCi0gICAgMTQsIDcsIDIxMCwgNTQsIDE0LCA3LCAyMTAsIDUzLCAxNCwgNywgMjEwLCA1MiwgMTQsIDcsIDIxMCwgNTEsIDE0LCA3LCAKLSAgICAyMTAsIDUwLCAxNCwgNywgMjEwLCA0OSwgMTQsIDcsIDIxMCwgNDgsIDE0LCA3LCAyMTAsIDQ3LCAxNCwgNywgMjEwLCA0NiwgCi0gICAgMTQsIDcsIDIxMCwgNDUsIDE0LCA3LCAyMTAsIDQ0LCAxNCwgNywgMjEwLCA0MywgMTQsIDcsIDIxMCwgNDIsIDE0LCA3LCAKLSAgICAyMTAsIDQxLCAxNCwgNywgMjEwLCA0MCwgMTQsIDcsIDIxMCwgMzksIDE0LCA3LCAyMTAsIDM4LCAxNCwgNywgMjEwLCAzNywgCi0gICAgMTQsIDcsIDIxMCwgMzYsIDE0LCA3LCAyMTAsIDM1LCAxNCwgNywgMjEwLCAzNCwgMTQsIDcsIDIxMCwgMzMsIDE0LCA3LCAKLSAgICAyMTAsIDMyLCAxNCwgNywgMjEwLCAzMSwgMTQsIDcsIDIxMCwgMzAsIDE0LCA3LCAyMTAsIDI5LCAxNCwgNywgMjEwLCAyOCwgCi0gICAgMTQsIDcsIDIxMCwgMjcsIDE0LCA3LCAyMTAsIDI2LCAxNCwgNywgMjEwLCAyNSwgMTQsIDcsIDIxMCwgMjQsIDE0LCA3LCAKLSAgICAyMDcsIDg4LCAxNCwgNywgMjA3LCA4NywgMTQsIDcsIDIwNywgODYsIDE0LCA3LCAyMDcsIDg1LCAxNCwgNywgMjA3LCA4NCwgCi0gICAgMTQsIDcsIDIwNywgODMsIDE0LCA3LCAyMDcsIDgyLCAxNCwgNywgMjA3LCA4MSwgMTQsIDcsIDIwNywgODAsIDE0LCA3LCAKLSAgICAyMDcsIDc5LCAxNCwgNywgMjA3LCA3OCwgMTQsIDcsIDIwNywgNzcsIDE0LCA3LCAyMDcsIDc2LCAxNCwgNywgMjA3LCA3NSwgCi0gICAgMTQsIDcsIDIwNywgNzQsIDE0LCA3LCAyMDcsIDczLCAxNCwgNywgMjA3LCA3MiwgMTQsIDcsIDIwNywgNzEsIDE0LCA3LCAKLSAgICAyMDcsIDcwLCAxNCwgNywgMjA3LCA2OSwgMTQsIDcsIDIwNywgNjgsIDE0LCA3LCAyMDcsIDY3LCAxNCwgNywgMjA3LCA2NiwgCi0gICAgMTQsIDcsIDIwNywgNjUsIDE0LCA3LCAyMDcsIDY0LCAxNCwgNywgMjA3LCA2MywgMTQsIDcsIDIwNywgNjIsIDE0LCA3LCAKLSAgICAyMDcsIDYxLCAxNCwgNywgMjA3LCA2MCwgMTQsIDcsIDIwNywgNTksIDE0LCA3LCAyMDcsIDU4LCAxNCwgNywgMjA3LCA1NywgCi0gICAgMTQsIDcsIDIwNywgNTYsIDE0LCA3LCAyMDcsIDU1LCAxNCwgNywgMjA3LCA1NCwgMTQsIDcsIDIwNywgNTMsIDE0LCA3LCAKLSAgICAyMDcsIDUyLCAxNCwgNywgMjA3LCA1MSwgMTQsIDcsIDIwNywgNTAsIDE0LCA3LCAyMDcsIDQ5LCAxNCwgNywgMjA3LCA0OCwgCi0gICAgMTQsIDcsIDIwNywgNDcsIDE0LCA3LCAyMDcsIDQ2LCAxNCwgNywgMjA3LCA0NSwgMTQsIDcsIDIwNywgNDQsIDE0LCA3LCAKLSAgICAyMDcsIDQzLCAxNCwgNywgMjA3LCA0MiwgMTQsIDcsIDIwNiwgMTYzLCAxNCwgNywgMjA2LCAxNjIsIDE0LCA3LCAyMDYsIAotICAgIDE2MSwgMTQsIDcsIDIwNiwgMTYwLCAxNCwgNywgMjA2LCAxNTksIDE0LCA3LCAyMDYsIDE1OCwgMTQsIDcsIDIwNiwgMTU3LCAKLSAgICAxNCwgNywgMjA2LCAxNTYsIDE0LCA3LCAyMDYsIDE1NSwgMTQsIDcsIDIwNiwgMTU0LCAxNCwgNywgMjA2LCAxNTMsIDE0LCAKLSAgICA3LCAyMDYsIDE1MiwgMTQsIDcsIDIwNiwgMTUxLCAxNCwgNywgMjA2LCAxNTAsIDE0LCA3LCAyMDYsIDE0OSwgMTQsIDcsIAotICAgIDIwNiwgMTQ4LCAxNCwgNywgMjA2LCAxNDcsIDE0LCA3LCAyMDYsIDE0NiwgMTQsIDcsIDIwNiwgMTQ1LCAxNCwgNywgMjA2LCAKLSAgICAxNDQsIDE0LCA3LCAyMDYsIDE0MywgMTQsIDcsIDIwNiwgMTQyLCAxNCwgNywgMjA2LCAxNDEsIDE0LCA3LCAyMDYsIDE0MCwgCi0gICAgMTQsIDcsIDIwNiwgMTM5LCAxNCwgNywgMjA2LCAxMzgsIDE0LCA3LCAyMDYsIDEzNywgMTQsIDcsIDIwNiwgMTM2LCAxNCwgCi0gICAgNywgMjA2LCAxMzUsIDE0LCA3LCAyMDYsIDEzNCwgMTQsIDcsIDIwNiwgMTMzLCAxNCwgNywgMjA2LCAxMzIsIDE0LCA3LCAKLSAgICAyMDYsIDEzMSwgMTQsIDcsIDIwNiwgMTMwLCAxNCwgNywgMjA2LCAxMjksIDE0LCA3LCAyMDYsIDEyOCwgMTQsIDcsIDIwNiwgCi0gICAgMTI3LCAxNCwgNywgMjA2LCAxMjYsIDE0LCA3LCAyMDYsIDEyNSwgMTQsIDcsIDIwNiwgMTI0LCAxNCwgNywgMjA2LCAxMjMsIAotICAgIDE0LCA3LCAyMDYsIDEyMiwgMTQsIDcsIDIwNiwgMTIxLCAxNCwgNywgMjA2LCAxMjAsIDE0LCA3LCAyMDYsIDExOSwgMTQsIAotICAgIDcsIDIwNiwgMTE4LCAxNCwgNywgMjA2LCAxMTcsIDE0LCA3LCAyMDYsIDExNiwgMTQsIDcsIDIwNiwgMTE1LCAxNCwgNywgCi0gICAgMjA2LCAxMTQsIDE0LCA3LCAyMDYsIDExMywgMTQsIDcsIDIwNiwgMTEyLCAxNCwgNywgMjA2LCAxMTEsIDE0LCA3LCAyMDYsIAotICAgIDExMCwgMTQsIDcsIDIwNiwgMTA5LCAxNCwgNywgMjA2LCAxMDgsIDE0LCA3LCAyMDYsIDEwNywgMTQsIDcsIDIwNiwgMTA2LCAKLSAgICAxNCwgNywgMjA2LCAxMDUsIDE0LCA3LCAyMDYsIDEwNCwgMTQsIDcsIDIwNiwgMTAzLCAxNCwgNywgMjA2LCAxMDIsIDE0LCAKLSAgICA3LCAyMDYsIDEwMSwgMTQsIDcsIDIwNiwgMTAwLCAxNCwgNywgMjA2LCA5OSwgMTQsIDcsIDIwNiwgOTgsIDE0LCA3LCAyMDYsIAotICAgIDk3LCAxNCwgNywgMjA2LCA5NiwgMTQsIDcsIDIwNiwgOTUsIDE0LCA3LCAyMDYsIDk0LCAxNCwgNywgMjA2LCA5MywgMTQsIAotICAgIDcsIDIwNiwgOTIsIDE0LCA3LCAyMDYsIDkxLCAxNCwgNywgMjA2LCA5MCwgMTQsIDcsIDIwNiwgODksIDE0LCA3LCAyMDYsIAotICAgIDg4LCAxNCwgNywgMjA2LCA4NywgMTQsIDcsIDIwNCwgMTQzLCAxNCwgNywgMjA0LCAxNDIsIDE0LCA3LCAyMDQsIDE0MSwgCi0gICAgMTQsIDcsIDIwNCwgMTQwLCAxNCwgNywgMjA0LCAxMzksIDE0LCA3LCAyMDQsIDEzOCwgMTQsIDcsIDIwNCwgMTM3LCAxNCwgCi0gICAgNywgMjA0LCAxMzYsIDE0LCA3LCAyMDQsIDEzNSwgMTQsIDcsIDIwNCwgMTM0LCAxNCwgNywgMjA0LCAxMzMsIDE0LCA3LCAKLSAgICAyMDQsIDEzMiwgMTQsIDcsIDIwNCwgMTMxLCAxNCwgNywgMjA0LCAxMzAsIDE0LCA3LCAyMDQsIDEyOSwgMTQsIDcsIDIwNCwgCi0gICAgMTI4LCAxNCwgNywgMjA0LCAxMjcsIDE0LCA3LCAyMDQsIDEyNiwgMTQsIDcsIDIwNCwgMTI1LCAxNCwgNywgMjA0LCAxMjQsIAotICAgIDE0LCA3LCAyMDQsIDEyMywgMTQsIDcsIDIwNCwgMTIyLCAxNCwgNywgMjA0LCAxMjEsIDE0LCA3LCAyMDQsIDEyMCwgMTQsIAotICAgIDcsIDIwNCwgMTE5LCAxNCwgNywgMjA0LCAxMTgsIDE0LCA3LCAyMDQsIDExNywgMTQsIDcsIDIwNCwgMTE2LCAxNCwgNywgCi0gICAgMjA0LCAxMTUsIDE0LCA3LCAyMDQsIDExNCwgMTQsIDcsIDIwNCwgMTEzLCAxNCwgNywgMjA0LCAxMTIsIDE0LCA3LCAyMDMsIAotICAgIDE5NCwgMTQsIDcsIDIwMywgMTkzLCAxNCwgNywgMjAzLCAxOTIsIDE0LCA3LCAyMDMsIDE5MSwgMTQsIDcsIDIwMywgMTkwLCAKLSAgICAxNCwgNywgMjAzLCAxODksIDE0LCA3LCAyMDMsIDE4OCwgMTQsIDcsIDIwMywgMTg3LCAxNCwgNywgMjAzLCAxODYsIDE0LCAKLSAgICA3LCAyMDMsIDE4NSwgMTQsIDcsIDIwMywgMTg0LCAxNCwgNywgMjAzLCAxODMsIDE0LCA3LCAyMDMsIDEyMiwgMTQsIDcsIAotICAgIDIwMywgMTIxLCAxNCwgNywgMjAzLCAxMjAsIDE0LCA3LCAyMDMsIDExOSwgMTQsIDcsIDIwMywgMTE4LCAxNCwgNywgMjAzLCAKLSAgICAxMTcsIDE0LCA3LCAyMDMsIDExNiwgMTQsIDcsIDIwMywgMTE1LCAxNCwgNywgMjAzLCAxMTQsIDE0LCA3LCAyMDIsIDE1OCwgCi0gICAgMTQsIDcsIDIwMiwgMTU3LCAxNCwgNywgMjAyLCAxNTYsIDE0LCA3LCAyMDIsIDE1NSwgMTQsIDcsIDIwMiwgMTU0LCAxNCwgCi0gICAgNywgMjAyLCAxNTMsIDE0LCA3LCAyMDIsIDE1MiwgMTQsIDcsIDIwMiwgMTUxLCAxNCwgNywgMjAyLCAxNTAsIDE0LCA3LCAKLSAgICAyMDIsIDE0OSwgMTQsIDcsIDIwMiwgMTQ4LCAxNCwgNywgMjAyLCAxNDcsIDE0LCA3LCAyMDIsIDE0NiwgMTQsIDcsIDIwMiwgCi0gICAgMTQ1LCAxNCwgNywgMjAyLCAxNDQsIDE0LCA3LCAyMDIsIDE0MywgMTQsIDcsIDIwMiwgMTQyLCAxNCwgNywgMjAyLCAxNDEsIAotICAgIDE0LCA3LCAyMDIsIDE0MCwgMTQsIDcsIDIwMiwgMTM5LCAxNCwgNywgMjAyLCAxMzgsIDE0LCA3LCAyMDIsIDEzNywgMTQsIAotICAgIDcsIDIwMiwgMTM2LCAxNCwgNywgMjAyLCAxMzUsIDE0LCA3LCAyMDIsIDEzNCwgMTQsIDcsIDIwMiwgMTMzLCAxNCwgNywgCi0gICAgMjAyLCAxMzIsIDE0LCA3LCAyMDIsIDEzMSwgMTQsIDcsIDIwMiwgMTMwLCAxNCwgNywgMjAyLCAxMjksIDE0LCA3LCAyMDIsIAotICAgIDEyOCwgMTQsIDcsIDIwMiwgMTI3LCAxNCwgNywgMjAyLCAxMjYsIDE0LCA3LCAyMDIsIDEyNSwgMTQsIDcsIDIwMiwgMTI0LCAKLSAgICAxNCwgNywgMjAyLCAxMjMsIDE0LCA3LCAyMDIsIDEyMiwgMTQsIDcsIDIwMiwgMTIxLCAxNCwgNywgMjAyLCAxMjAsIDE0LCAKLSAgICA3LCAyMDIsIDExOSwgMTQsIDcsIDIwMiwgMTE4LCAxNCwgNywgMjUyLCAyNCwgMTQsIDcsIDI1MiwgMjMsIDE0LCA3LCAyNTIsIAotICAgIDIyLCAxNCwgNywgMjUyLCAyMSwgMTQsIDcsIDI1MiwgMjAsIDE0LCA3LCAyNTIsIDE5LCAxNCwgNywgMjUyLCAxOCwgMTQsIAotICAgIDcsIDI1MiwgMTcsIDE0LCA3LCAyNTIsIDE2LCAxNCwgNywgMjUyLCAxNSwgMTQsIDcsIDI1MiwgMTQsIDE0LCA3LCAyNTIsIAotICAgIDEzLCAxNCwgNywgMjUyLCAxMiwgMTQsIDcsIDI1MiwgMTEsIDE0LCA3LCAyNTIsIDEwLCAxNCwgNywgMjUyLCA5LCAxNCwgNywgCi0gICAgMjUyLCA4LCAxNCwgNywgMjUyLCA3LCAxNCwgNywgMjUyLCA2LCAxNCwgNywgMjUyLCA1LCAxNCwgNywgMjUyLCA0LCAxNCwgCi0gICAgNywgMjUyLCAzLCAxNCwgNywgMjUyLCAyLCAxNCwgNywgMjUyLCAxLCAxNCwgNywgMjUyLCAwLCAxNCwgNywgMjUxLCAyNTUsIAotICAgIDE0LCA3LCAyNTEsIDI1NCwgMTQsIDcsIDI1MSwgMjUzLCAxNCwgNywgMjUxLCAyNTIsIDE0LCA3LCAyNTEsIDI1MSwgMTQsIAotICAgIDcsIDI1MSwgMjUwLCAxNCwgNywgMjUxLCAyNDksIDE0LCA3LCAyNTEsIDI0OCwgMTQsIDcsIDI1MSwgMjQ3LCAyNywgNywgCi0gICAgMjU1LCAxOCwgMjcsIDcsIDI1NSwgMTcsIDI3LCA3LCAyNTUsIDE2LCAyNywgNywgMjU1LCAxNSwgMjcsIDcsIDI1NSwgMTQsIAotICAgIDI3LCA3LCAyNTUsIDEyLCAyNywgNywgMjU1LCA5LCAyNywgNywgMjU1LCA4LCAyNywgNywgMjU1LCA3LCAyNywgNywgMjU1LCAKLSAgICA2LCAyNywgNywgMjU1LCA1LCAyNywgNywgMjU1LCA0LCAyNywgNywgMjU1LCAzLCAyNywgNywgMjU1LCAyLCAyNywgNywgCi0gICAgMjU1LCAxLCAyNywgNywgMjU0LCAyNTUsIDI3LCA3LCAyNTQsIDI1NCwgMjcsIDcsIDI1NCwgMjUzLCAyNywgNywgMjU0LCAKLSAgICAyNTEsIDI3LCA3LCAyNTQsIDI1MCwgMjcsIDcsIDI1NCwgMjQ5LCAyNywgNywgMjU0LCAyNDgsIDI3LCA3LCAyNTQsIDI0NywgCi0gICAgMjcsIDcsIDI1NCwgMjQ2LCAyNywgNywgMjU0LCAyNDUsIDI3LCA3LCAyNTQsIDI0NCwgMjcsIDcsIDI1NCwgMjQzLCAyNywgCi0gICAgNywgMjU0LCAyNDIsIDI3LCA3LCAyNTQsIDI0MSwgMjcsIDcsIDI1NCwgMjQwLCAyNywgNywgMjU0LCAyMzgsIDI3LCA3LCAKLSAgICAyNTQsIDIzNywgMjcsIDcsIDI1NCwgMjM2LCAyNywgNywgMjU0LCAyMzUsIDI3LCA3LCAyNTQsIDIzMywgMjcsIDcsIDI1NCwgCi0gICAgMjMyLCAyNywgNywgMjU0LCAyMzEsIDI3LCA3LCAyNTQsIDIzMCwgMjcsIDcsIDI1NCwgMjI5LCAyNywgNywgMjU0LCAyMjgsIAotICAgIDI3LCA3LCAyNTQsIDIyNywgMjcsIDcsIDI1NCwgMjI2LCAyNywgNywgMjU0LCAyMjUsIDI3LCA3LCAyNTQsIDIyMywgMjcsIAotICAgIDcsIDI1NCwgMjIyLCAyNywgNywgMjU0LCAyMjEsIDI3LCA3LCAyNTQsIDIxOSwgMjcsIDcsIDI1NCwgMjE3LCAyNywgNywgCi0gICAgMjU0LCAyMTYsIDI3LCA3LCAyNTQsIDIxNSwgMjcsIDcsIDI1NCwgMjE0LCAyNywgNywgMjU0LCAyMTMsIDI3LCA3LCAyNTQsIAotICAgIDIxMiwgMjcsIDcsIDI1NCwgMjExLCAyNywgNywgMjU0LCAyMTAsIDI3LCA3LCAyNTQsIDIwOSwgMjcsIDcsIDI1NCwgMjA4LCAKLSAgICAyNywgNywgMjU0LCAyMDcsIDI3LCA3LCAyNTQsIDIwNiwgMjcsIDcsIDI1NCwgMjA1LCAyNywgNywgMjU0LCAyMDQsIDI3LCAKLSAgICA3LCAyNTQsIDIwMywgMjcsIDcsIDI1NCwgMjAyLCAyNywgNywgMjU0LCAyMDEsIDI3LCA3LCAyNTQsIDIwMCwgMjcsIDcsIAotICAgIDI1NCwgMTk5LCAyNywgNywgMjU0LCAxOTgsIDI3LCA3LCAyNTQsIDE5NywgMjcsIDcsIDI1NCwgMTk2LCAyNywgNywgMjU0LCAKLSAgICAxOTUsIDI3LCA3LCAyNTQsIDE5NCwgMjcsIDcsIDI1NCwgMTkzLCAyNywgNywgMjU0LCAxOTIsIDI3LCA3LCAyNTQsIDE5MSwgCi0gICAgMjcsIDcsIDI1NCwgMTkwLCAyNywgNywgMjU0LCAxODksIDI3LCA3LCAyNTQsIDE4OCwgMjcsIDcsIDI1NCwgMTg3LCAyNywgCi0gICAgNywgMjU0LCAxODYsIDI3LCA3LCAyNTQsIDE4NSwgMjcsIDcsIDI1NCwgMTg0LCAyNywgNywgMjU0LCAxODMsIDI3LCA3LCAKLSAgICAyNTQsIDE4MiwgMjcsIDcsIDI1NCwgMTgxLCAyNywgNywgMjU0LCAxODAsIDI3LCA3LCAyNTQsIDE3OSwgMjcsIDcsIDI1NCwgCi0gICAgMTc4LCAyNywgNywgMjU0LCAxNzcsIDI3LCA3LCAyNTQsIDE3NiwgMjcsIDcsIDI1NCwgMTc1LCAyNywgNywgMjU0LCAxNzQsIAotICAgIDI3LCA3LCAyNTQsIDE3MywgMjcsIDcsIDI1NCwgMTcyLCAyNywgNywgMjU0LCAxNzEsIDI3LCA3LCAyNTQsIDE3MCwgMjcsIAotICAgIDcsIDI1NCwgMTY5LCAyNywgNywgMjU0LCAxNjgsIDI3LCA3LCAyNTQsIDE2NywgMjcsIDcsIDI1NCwgMTY2LCAyNywgNywgCi0gICAgMjU0LCAxNjUsIDI3LCA3LCAyNTQsIDE2NCwgMjcsIDcsIDI1NCwgMTYzLCAyNywgNywgMjU0LCAxNjIsIDI3LCA3LCAyNTQsIAotICAgIDE2MSwgMjcsIDcsIDI1NCwgMTYwLCAyNywgNywgMjU0LCAxNTksIDI3LCA3LCAyNTQsIDE1OCwgMjcsIDcsIDI1NCwgMTU3LCAKLSAgICAyNywgNywgMjU0LCAxNTYsIDI3LCA3LCAyNTQsIDE1NSwgMjcsIDcsIDI1NCwgMTU0LCAyNywgNywgMjU0LCAxNTMsIDI3LCAKLSAgICA3LCAyNTQsIDE1MSwgMjcsIDcsIDI1NCwgMTUwLCAyNywgNywgMjU0LCAxNDksIDI3LCA3LCAyNTQsIDE0OCwgMjcsIDcsIAotICAgIDI1NCwgMTQ3LCAyNywgNywgMjU0LCAxNDYsIDI3LCA3LCAyNTQsIDE0NSwgMjcsIDcsIDI1NCwgMTQ0LCAyNywgNywgMjU0LCAKLSAgICAxNDMsIDI3LCA3LCAyNTQsIDE0MiwgMjcsIDcsIDI1NCwgMTQxLCAyNywgNywgMjU0LCAxNDAsIDI3LCA3LCAyNTQsIDEzOSwgCi0gICAgMjcsIDcsIDI1NCwgMTM4LCAyNywgNywgMjU0LCAxMzcsIDI3LCA3LCAyNTQsIDEzNiwgMjcsIDcsIDI1NCwgMTM1LCAyNywgCi0gICAgNywgMjU0LCAxMzQsIDI3LCA3LCAyNTQsIDEzMywgMjcsIDcsIDI1NCwgMTMyLCAyNywgNywgMjU0LCAxMzEsIDI3LCA3LCAKLSAgICAyNTQsIDEzMCwgMjcsIDcsIDI1NCwgMTI5LCAyNywgNywgMjU0LCAxMjgsIDI3LCA3LCAyNTQsIDEyNywgMjcsIDcsIDI1NCwgCi0gICAgMTI2LCAyNywgNywgMjU0LCAxMjUsIDI3LCA3LCAyNTQsIDEyNCwgMjcsIDcsIDI1NCwgMTIzLCAyNywgNywgMjU0LCAxMjIsIAotICAgIDI3LCA3LCAyNTQsIDEyMSwgMjcsIDcsIDI1NCwgMTIwLCAyNywgNywgMjU0LCAxMTksIDI3LCA3LCAyNTQsIDExOCwgMjcsIAotICAgIDcsIDI1NCwgMTE2LCAyNywgNywgMjU0LCAxMTUsIDI3LCA3LCAyNTQsIDExNCwgMjcsIDcsIDI1NCwgMTEzLCAyNywgNywgCi0gICAgMjU0LCAxMTIsIDI3LCA3LCAyNTQsIDExMSwgMjcsIDcsIDI1NCwgMTEwLCAyNywgNywgMjU0LCAxMDksIDI3LCA3LCAyNTQsIAotICAgIDEwOCwgMjcsIDcsIDI1NCwgMTA3LCAyNywgNywgMjU0LCAxMDYsIDI3LCA3LCAyNTQsIDEwNSwgMjcsIDcsIDI1NCwgMTAzLCAKLSAgICAyNywgNywgMjU0LCAxMDIsIDI3LCA3LCAyNTQsIDEwMSwgMjcsIDcsIDI1NCwgMTAwLCAyNywgNywgMjU0LCA5OSwgMjcsIDcsIAotICAgIDI1NCwgOTgsIDI3LCA3LCAyNTQsIDk3LCAyNywgNywgMjU0LCA5NiwgMjcsIDcsIDI1NCwgOTUsIDI3LCA3LCAyNTQsIDk0LCAKLSAgICAyNywgNywgMjU0LCA5MywgMjcsIDcsIDI1NCwgOTIsIDI3LCA3LCAyNTQsIDkxLCAyNywgNywgMjU0LCA5MCwgMjcsIDcsIAotICAgIDI1NCwgODksIDI3LCA3LCAyNTQsIDg4LCAyNywgNywgMjU0LCA4NywgMjcsIDcsIDI1NCwgODYsIDI3LCA3LCAyNTQsIDg1LCAKLSAgICAyNywgNywgMjU0LCA4NCwgMjcsIDcsIDI1NCwgODMsIDI3LCA3LCAyNTQsIDgyLCAyNywgNywgMjU0LCA4MSwgMjcsIDcsIAotICAgIDI1NCwgODAsIDI3LCA3LCAyNTQsIDc5LCAyNywgNywgMjU0LCA3OCwgMjcsIDcsIDI1NCwgNzcsIDI3LCA3LCAyNTQsIDc2LCAKLSAgICAyNywgNywgMjU0LCA3NSwgMjcsIDcsIDI1NCwgNzQsIDI3LCA3LCAyNTQsIDczLCAyNywgNywgMjU0LCA3MiwgMjcsIDcsIAotICAgIDI1NCwgNzEsIDI3LCA3LCAyNTQsIDcwLCAyNywgNywgMjU0LCA2OSwgMjcsIDcsIDI1NCwgNjgsIDI3LCA3LCAyNTQsIDY3LCAKLSAgICAyNywgNywgMjU0LCA2NiwgMjcsIDcsIDI1NCwgNjUsIDI3LCA3LCAyNTQsIDY0LCAyNywgNywgMjU0LCA2MywgMjcsIDcsIAotICAgIDI1NCwgNjIsIDI3LCA3LCAyNTQsIDYxLCAyNywgNywgMjU0LCA2MCwgMjcsIDcsIDI1NCwgNTksIDI3LCA3LCAyNTQsIDU4LCAKLSAgICAyNywgNywgMjU0LCA1NywgMjcsIDcsIDI1NCwgNTYsIDI3LCA3LCAyNTQsIDU1LCAyNywgNywgMjU0LCA1NCwgMjcsIDcsIAotICAgIDI1NCwgNTMsIDI3LCA3LCAyNTQsIDUyLCAyNywgNywgMjU0LCA1MSwgMjcsIDcsIDI1NCwgNTAsIDI3LCA3LCAyNTQsIDQ5LCAKLSAgICAyNywgNywgMjU0LCA0OCwgMjcsIDcsIDI1NCwgNDcsIDI3LCA3LCAyNTQsIDQ2LCAyNywgNywgMjU0LCA0NSwgMjcsIDcsIAotICAgIDI1NCwgNDQsIDI3LCA3LCAyNTQsIDQzLCAyNywgNywgMjU0LCA0MiwgMjcsIDcsIDI1NCwgNDEsIDI3LCA3LCAyNTQsIDQwLCAKLSAgICAyNywgNywgMjU0LCAzOSwgMjcsIDcsIDI1NCwgMzgsIDI3LCA3LCAyNTQsIDM3LCAyNywgNywgMjU0LCAzNiwgMjcsIDcsIAotICAgIDI1NCwgMzUsIDI3LCA3LCAyNTQsIDMzLCAyNywgNywgMjU0LCAzMiwgMjcsIDcsIDI1NCwgMzEsIDI3LCA3LCAyNTQsIDMwLCAKLSAgICAyNywgNywgMjU0LCAyOSwgMjcsIDcsIDI1NCwgMjgsIDI3LCA3LCAyNTQsIDI3LCAyNywgNywgMjU0LCAyNiwgMjcsIDcsIAotICAgIDI1NCwgMjUsIDI3LCA3LCAyNTQsIDI0LCAyNywgNywgMjU0LCAyMywgMjcsIDcsIDI1NCwgMjIsIDI3LCA3LCAyNTQsIDIxLCAKLSAgICAyNywgNywgMjU0LCAyMCwgMjcsIDcsIDI1NCwgMTksIDI3LCA3LCAyNTQsIDE4LCAyNywgNywgMjU0LCAxNywgMjcsIDcsIAotICAgIDI1NCwgMTYsIDI3LCA3LCAyNTQsIDE1LCAyNywgNywgMjU0LCAxNCwgMjcsIDcsIDI1NCwgMTMsIDI3LCA3LCAyNTQsIDEyLCAKLSAgICAyNywgNywgMjU0LCAxMSwgMjcsIDcsIDI1NCwgMTAsIDI3LCA3LCAyNTQsIDksIDI3LCA3LCAyNTQsIDgsIDI3LCA3LCAyNTQsIAotICAgIDcsIDI3LCA3LCAyNTQsIDYsIDI3LCA3LCAyNTQsIDUsIDI3LCA3LCAyNTQsIDQsIDI3LCA3LCAyNTQsIDMsIDI3LCA3LCAKLSAgICAyNTQsIDIsIDI3LCA3LCAyNTQsIDEsIDI3LCA3LCAyNTQsIDAsIDI3LCA3LCAyNTMsIDI1NSwgMjcsIDcsIDI1MywgMjU0LCAKLSAgICAyNywgNywgMjUzLCAyNTMsIDI3LCA3LCAyNTMsIDI1MiwgMjcsIDcsIDI1MywgMjUxLCAyNywgNywgMjUzLCAyNTAsIDI3LCAKLSAgICA3LCAyNTMsIDI0OSwgMjcsIDcsIDI1MywgMjQ4LCAyNywgNywgMjUzLCAyNDcsIDI3LCA3LCAyNTMsIDI0NiwgMjcsIDcsIAotICAgIDI1MywgMjQ1LCAyNywgNywgMjUzLCAyNDQsIDI3LCA3LCAyNTMsIDI0MywgMjcsIDcsIDI1MywgMjQyLCAyNywgNywgMjUzLCAKLSAgICAyNDEsIDI3LCA3LCAyNTMsIDI0MCwgMjcsIDcsIDI1MywgMjM5LCAyNywgNywgMjUzLCAyMzgsIDI3LCA3LCAyNTMsIDIzNywgCi0gICAgMjcsIDcsIDI1MywgMjM2LCAyNywgNywgMjUzLCAyMzUsIDI3LCA3LCAyNTMsIDIzNCwgMjcsIDcsIDI1MywgMjMzLCAyNywgCi0gICAgNywgMjUzLCAyMzIsIDI3LCA3LCAyNTMsIDIzMSwgMjcsIDcsIDI1MywgMjMwLCAyNywgNywgMjUzLCAyMjksIDI3LCA3LCAKLSAgICAyNTMsIDIyOCwgMjcsIDcsIDI1MywgMjI3LCAyNywgNywgMjUzLCAyMjYsIDI3LCA3LCAyNTMsIDIyNSwgMjcsIDcsIDI1MywgCi0gICAgMjI0LCAyNywgNywgMjUzLCAyMjMsIDI3LCA3LCAyNTMsIDIyMiwgMjcsIDcsIDI1MywgMjIxLCAyNywgNywgMjUzLCAyMjAsIAotICAgIDI3LCA3LCAyNTMsIDIxOSwgMjcsIDcsIDI1MywgMjE4LCAyNywgNywgMjUzLCAyMTcsIDI3LCA3LCAyNTMsIDIxNiwgMjcsIAotICAgIDcsIDI1MywgMjE1LCAyNywgNywgMjUzLCAyMTQsIDI3LCA3LCAyNTMsIDIxMywgMjcsIDcsIDI1MywgMjEyLCAyNywgNywgCi0gICAgMjUzLCAyMTEsIDI3LCA3LCAyNTMsIDIxMCwgMjcsIDcsIDI1MywgMjA5LCAyNywgNywgMjUzLCAyMDgsIDI3LCA3LCAyNTMsIAotICAgIDIwNywgMjcsIDcsIDI1MywgMjA2LCAyNywgNywgMjUzLCAyMDUsIDI3LCA3LCAyNTMsIDIwNCwgMjcsIDcsIDI1MywgMjAzLCAKLSAgICAyNywgNywgMjUzLCAyMDIsIDI3LCA3LCAyNTMsIDIwMSwgMjcsIDcsIDI1MywgMjAwLCAyNywgNywgMjUzLCAxOTksIDI3LCAKLSAgICA3LCAyNTMsIDE5OCwgMjcsIDcsIDI1MywgMTk3LCAyNywgNywgMjUzLCAxOTYsIDI3LCA3LCAyNTMsIDE5NSwgMjcsIDcsIAotICAgIDI1MywgMTk0LCAyNywgNywgMjUzLCAxOTMsIDI3LCA3LCAyNTMsIDE5MiwgMjcsIDcsIDI1MywgMTkxLCAyNywgNywgMjUzLCAKLSAgICAxOTAsIDI3LCA3LCAyNTMsIDE4OSwgMjcsIDcsIDI1MywgMTg4LCAyNywgNywgMjUzLCAxODcsIDI3LCA3LCAyNTMsIDE4NiwgCi0gICAgMjcsIDcsIDI1MywgMTg1LCAyNywgNywgMjUzLCAxODQsIDI3LCA3LCAyNTMsIDE4MywgMjcsIDcsIDI1MywgMTgyLCAyNywgCi0gICAgNywgMjUzLCAxODEsIDI3LCA3LCAyNTMsIDE4MCwgMjcsIDcsIDI1MywgMTc5LCAyNywgNywgMjUzLCAxNzcsIDI3LCA3LCAKLSAgICAyNTMsIDE3NiwgMjcsIDcsIDI1MywgMTc1LCAyNywgNywgMjUzLCAxNzQsIDI3LCA3LCAyNTMsIDE3MywgMjcsIDcsIDI1MywgCi0gICAgMTcyLCAyNywgNywgMjUzLCAxNzEsIDI3LCA3LCAyNTMsIDE3MCwgMjcsIDcsIDI1MywgMTY5LCAyNywgNywgMjUzLCAxNjgsIAotICAgIDI3LCA3LCAyNTMsIDE2NywgMjcsIDcsIDI1MywgMTY0LCAyNywgNywgMjUzLCAxNjMsIDI3LCA3LCAyNTMsIDE2MiwgMjcsIAotICAgIDcsIDI1MywgMTYxLCAyNywgNywgMjUzLCAxNTcsIDI3LCA3LCAyNTMsIDE1NiwgMjcsIDcsIDI1MywgMTU1LCAyNywgNywgCi0gICAgMjUzLCAxNTQsIDI3LCA3LCAyNTMsIDE1MywgMjcsIDcsIDI1MywgMTUyLCAyNywgNywgMjUzLCAxNTEsIDI3LCA3LCAyNTMsIAotICAgIDE1MCwgMjcsIDcsIDI1MywgMTQ5LCAyNywgNywgMjUzLCAxNDgsIDI3LCA3LCAyNTMsIDE0NywgMjcsIDcsIDI1MywgMTQ2LCAKLSAgICAyNywgNywgMjUzLCAxNDUsIDI3LCA3LCAyNTMsIDE0NCwgMjcsIDcsIDI1MywgMTQzLCAyNywgNywgMjUzLCAxNDIsIDI3LCAKLSAgICA3LCAyNTMsIDE0MSwgMjcsIDcsIDI1MywgMTQwLCAyNywgNywgMjUzLCAxMzksIDI3LCA3LCAyNTMsIDEzNywgMjcsIDcsIAotICAgIDI1MywgMTM2LCAyNywgNywgMjUzLCAxMzUsIDI3LCA3LCAyNTMsIDEzNCwgMjcsIDcsIDI1MywgMTMzLCAyNywgNywgMjUzLCAKLSAgICAxMzIsIDI3LCA3LCAyNTMsIDEzMSwgMjcsIDcsIDI1MywgMTMwLCAyNywgNywgMjUzLCAxMjksIDI3LCA3LCAyNTMsIDEyOCwgCi0gICAgMjcsIDcsIDI1MywgMTI3LCAyNywgNywgMjUzLCAxMjYsIDI3LCA3LCAyNTMsIDEyNSwgMjcsIDcsIDI1MywgMTI0LCAyNywgCi0gICAgNywgMjUzLCAxMjMsIDI3LCA3LCAyNTMsIDEyMiwgMjcsIDcsIDI1MywgMTIxLCAyNywgNywgMjUzLCAxMjAsIDI3LCA3LCAKLSAgICAyNTMsIDExOSwgMjcsIDcsIDI1MywgMTE4LCAyNywgNywgMjUzLCAxMTcsIDI3LCA3LCAyNTMsIDExNiwgMjcsIDcsIDI1MywgCi0gICAgMTE1LCAyNywgNywgMjUzLCAxMTQsIDI3LCA3LCAyNTMsIDExMywgMjcsIDcsIDI1MywgMTEyLCAyNywgNywgMjUzLCAxMTEsIAotICAgIDI3LCA3LCAyNTMsIDExMCwgMjcsIDcsIDI1MywgMTA5LCAyNywgNywgMjUzLCAxMDgsIDI3LCA3LCAyNTMsIDEwNywgMjcsIAotICAgIDcsIDI1MywgMTA2LCAyNywgNywgMjUzLCAxMDUsIDI3LCA3LCAyNTMsIDEwNCwgMjcsIDcsIDI1MywgMTAzLCAyNywgNywgCi0gICAgMjUzLCAxMDIsIDI3LCA3LCAyNTMsIDEwMSwgMjcsIDcsIDI1MywgMTAwLCAyNywgNywgMjUzLCA5OSwgMjcsIDcsIDI1MywgCi0gICAgOTgsIDI3LCA3LCAyNTMsIDk3LCAyNywgNywgMjUzLCA5NiwgMjcsIDcsIDI1MywgOTUsIDI3LCA3LCAyNTMsIDk0LCAyNywgCi0gICAgNywgMjUzLCA5MywgMjcsIDcsIDI1MywgOTIsIDI3LCA3LCAyNTMsIDkxLCAyNywgNywgMjUzLCA5MCwgMjcsIDcsIDI1MywgCi0gICAgODksIDI3LCA3LCAyNTMsIDg4LCAyNywgNywgMjUzLCA4NywgMjcsIDcsIDI1MywgODYsIDI3LCA3LCAyNTMsIDg1LCAyNywgCi0gICAgNywgMjUzLCA4NCwgMjcsIDcsIDI1MywgODMsIDI3LCA3LCAyNTMsIDgyLCAyNywgNywgMjUzLCA4MSwgMjcsIDcsIDI1MywgCi0gICAgODAsIDI3LCA3LCAyNTMsIDc5LCAyNywgNywgMjUzLCA3OCwgMjcsIDcsIDI1MywgNzcsIDI3LCA3LCAyNTMsIDc2LCAyMTYsIAotICAgIDIyMSwgMjE5LCAyNDUsIDIxNiwgNTcsIDI3LCA3LCAyNTMsIDc1LCAyNywgNywgMjUzLCA3NCwgMjcsIDcsIDI1MywgNzMsIAotICAgIDI3LCA3LCAyNTMsIDcyLCAyNywgNywgMjUzLCA3MSwgMjcsIDcsIDI1MywgNzAsIDI3LCA3LCAyNTMsIDY5LCAyNywgNywgCi0gICAgMjUzLCA2OCwgMjcsIDcsIDI1MywgNjcsIDI3LCA3LCAyNTMsIDY2LCAyNywgNywgMjUzLCA2NSwgMjcsIDcsIDI1MywgNjQsIAotICAgIDE5OSwgMjcsIDcsIDI1MywgNjMsIDI3LCA3LCAyNTMsIDYyLCAyNywgNywgMjUzLCA2MSwgMjcsIDcsIDI1MywgNjAsIDI3LCAKLSAgICA3LCAyNTMsIDU5LCAyNywgNywgMjUzLCA1OCwgMjcsIDcsIDI1MywgNTcsIDI3LCA3LCAyNTMsIDU1LCAyNywgNywgMjUzLCAKLSAgICA1MywgMjcsIDcsIDI1MywgNTEsIDI3LCA3LCAyNTMsIDQ5LCAyNywgNywgMjUzLCA0NywgMjcsIDcsIDI1MywgNDUsIDI3LCAKLSAgICA3LCAyNTMsIDQzLCAyNywgNywgMjUzLCA0MSwgMjcsIDcsIDI1MywgMzksIDI3LCA3LCAyNTMsIDM3LCAyNDgsIDE0MiwgCi0gICAgMjI3LCAzNiwgODIsIDI3LCA3LCAyNTMsIDM1LCAyNDEsIDg0LCAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzQsIDI3LCA3LCAKLSAgICAyNTMsIDMyLCAyNywgNywgMjUzLCAzMCwgMjcsIDcsIDI1MywgMjgsIDI3LCA3LCAyNTMsIDI2LCAyNywgNywgMjUzLCAyNCwgCi0gICAgMjcsIDcsIDI1MywgMjIsIDI3LCA3LCAyNTMsIDIwLCAyNywgNywgMjUzLCAxOCwgMjcsIDcsIDI1MywgMTcsIDI3LCA3LCAKLSAgICAyNTMsIDE2LCAyNywgNywgMjUzLCAxNSwgMjcsIDcsIDI1MywgMTQsIDI3LCA3LCAyNTMsIDEzLCAyNywgNywgMjUzLCAxMiwgCi0gICAgMjcsIDcsIDI1MywgMTEsIDI3LCA3LCAyNTMsIDEwLCAyNywgNywgMjUzLCA5LCAyNywgNywgMjUzLCA4LCAyNywgNywgMjUzLCAKLSAgICA3LCAyNywgNywgMjUzLCA2LCAyNywgNywgMjUzLCA1LCAyNywgNywgMjUzLCA0LCAyNywgNywgMjUzLCAzLCAyNywgNywgCi0gICAgMjUzLCAyLCAyNywgNywgMjUzLCAxLCAyNywgNywgMjUzLCAwLCAyNywgNywgMjUyLCAyNTUsIDI3LCA3LCAyNTIsIDI1NCwgCi0gICAgMjcsIDcsIDI1MiwgMjUzLCAyNywgNywgMjUyLCAyNTIsIDI3LCA3LCAyNTIsIDI1MSwgMjcsIDcsIDI1MiwgMjUwLCAyNywgCi0gICAgNywgMjUyLCAyNDksIDI3LCA3LCAyNTIsIDI0OCwgMjcsIDcsIDI1MiwgMjQ3LCAyNywgNywgMjUyLCAyNDYsIDI3LCA3LCAKLSAgICAyNTIsIDI0NSwgMjcsIDcsIDI1MiwgMjQ0LCAyNywgNywgMjUyLCAyNDMsIDI3LCA3LCAyNTIsIDI0MiwgMjcsIDcsIDI1MiwgCi0gICAgMjQxLCAyNywgNywgMjUyLCAyNDAsIDI3LCA3LCAyNTIsIDIzOSwgMjcsIDcsIDI1MiwgMjM4LCAyNywgNywgMjUyLCAyMzcsIAotICAgIDI3LCA3LCAyNTIsIDIzNiwgMjcsIDcsIDI1MiwgMjM1LCAyNywgNywgMjUyLCAyMzQsIDI3LCA3LCAyNTIsIDIzMywgMjcsIAotICAgIDcsIDI1MiwgMjMyLCAyNywgNywgMjUyLCAyMzEsIDI3LCA3LCAyNTIsIDIzMCwgMjcsIDcsIDI1MiwgMjI5LCAyNywgNywgCi0gICAgMjUyLCAyMjgsIDI3LCA3LCAyNTIsIDIyNywgMjcsIDcsIDI1MiwgMjI2LCAyNywgNywgMjUyLCAyMjUsIDI3LCA3LCAyNTIsIAotICAgIDIyNCwgMjcsIDcsIDI1MiwgMjIzLCAyNywgNywgMjUyLCAyMjIsIDI3LCA3LCAyNTIsIDIyMSwgMjcsIDcsIDI1MiwgMjIwLCAKLSAgICAyNywgNywgMjUyLCAyMTksIDI3LCA3LCAyNTIsIDIxOCwgMjcsIDcsIDI1MiwgMjE3LCAyNywgNywgMjUyLCAyMTYsIDI3LCAKLSAgICA3LCAyNTIsIDIxNSwgMjcsIDcsIDI1MiwgMjE0LCAyNywgNywgMjUyLCAyMTMsIDI3LCA3LCAyNTIsIDIxMiwgMjcsIDcsIAotICAgIDI1MiwgMjExLCAyNywgNywgMjUyLCAyMTAsIDI3LCA3LCAyNTIsIDIwOSwgMjcsIDcsIDI1MiwgMjA4LCAyNywgNywgMjUyLCAKLSAgICAyMDcsIDI3LCA3LCAyNTIsIDIwNiwgMjcsIDcsIDI1MiwgMjA1LCAyNywgNywgMjUyLCAyMDQsIDI3LCA3LCAyNTIsIDIwMywgCi0gICAgMjcsIDcsIDI1MiwgMjAyLCAyNywgNywgMjUyLCAyMDEsIDI3LCA3LCAyNTIsIDIwMCwgMjcsIDcsIDI1MiwgMTk5LCAyNywgCi0gICAgNywgMjUyLCAxOTgsIDI3LCA3LCAyNTIsIDE5NywgMjcsIDcsIDI1MiwgMTk2LCAyNywgNywgMjUyLCAxOTUsIDI3LCA3LCAKLSAgICAyNTIsIDE5NCwgMjcsIDcsIDI1MiwgMTkzLCAyNywgNywgMjUyLCAxOTIsIDI3LCA3LCAyNTIsIDE5MSwgMjcsIDcsIDI1MiwgCi0gICAgMTkwLCAyNywgNywgMjUyLCAxODksIDI3LCA3LCAyNTIsIDE4OCwgMjcsIDcsIDI1MiwgMTg3LCAyNywgNywgMjUyLCAxODYsIAotICAgIDI3LCA3LCAyNTIsIDE4NSwgMjcsIDcsIDI1MiwgMTg0LCAyNywgNywgMjUyLCAxODMsIDI3LCA3LCAyNTIsIDE4MiwgMjcsIAotICAgIDcsIDI1MiwgMTgxLCAyNywgNywgMjUyLCAxODAsIDI3LCA3LCAyNTIsIDE3OSwgMjcsIDcsIDI1MiwgMTc4LCAyNywgNywgCi0gICAgMjUyLCAxNzcsIDI3LCA3LCAyNTIsIDE3NiwgMjcsIDcsIDI1MiwgMTc1LCAyNywgNywgMjUyLCAxNzQsIDI3LCA3LCAyNTIsIAotICAgIDE3MywgMjcsIDcsIDI1MiwgMTcyLCAyNywgNywgMjUyLCAxNzEsIDI3LCA3LCAyNTIsIDE3MCwgMjcsIDcsIDI1MiwgMTY5LCAKLSAgICAyNywgNywgMjUyLCAxNjgsIDI3LCA3LCAyNTIsIDE2NywgMjcsIDcsIDI1MiwgMTY2LCAyNywgNywgMjUyLCAxNjUsIDI3LCAKLSAgICA3LCAyNTIsIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDEzNiwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAKLSAgICAxOTgsIDIzOSwgMTc4LCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMTgsIDQ3LCAyMjQsIDE5OCwgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxMDcsIDIyNCwgMTk3LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTk1LCAyNCwgMSwgMjE4LCAxOTgsIDIwOCwgMTk5LCAyMjQsIDE5NywgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMjAsIDIxNSwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyNTQsIDIxOSwgMTY5LCAyMjIsIAotICAgIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMTgsIDQ3LCAyMTksIDE2OSwgMjIyLCAzMywgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTYsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjA3LCAyMDQsIDIyNSwgMTU3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTk3LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNSwgMTUzLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTExLCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMTg2LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIxMywgMTE0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKLSAgICAxNjMsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMCwgMTc5LCAyNCwgMSwgMjE4LCAxOTgsIAotICAgIDIyMiwgMTM1LCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAxNzYsIDIyOCwgMTc1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjQsIDIwNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE2MCwgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMTksIDYyLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTI1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgNTUsIDIyMiwgMTcwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMTk2LCAyMjQsIDIwOCwgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAxMDYsIDIwMiwgMTg4LCAyMjMsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIDEwMSwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjEsIDEwMSwgMjIxLCAxMDIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCA5MSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjQsIDE5MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDMxLCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIzMCwgMjEsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxNjksIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMywgMjYsIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgMjE5LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgCi0gICAgMTU0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNzQsIDI0LCAxLCAyMTgsIDE5OCwgMjE3LCAxNzIsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjA3LCAyMDEsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNTEsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjA5LCAxMTcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKLSAgICAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAyMiwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDE4OCwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjQsIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTkxLCAyNCwgMSwgMjE4LCAxOTgsIDIyNywgMjksIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjM5LCAyNDYsIDI0LCAxLCAyMTgsIDE5OCwgMjE1LCAyMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAyMzMsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMDcsIDIxOCwgMTU3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIxMiwgMjQ3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMjMwLCAKLSAgICAyMjEsIDExMSwgMjAyLCAxOTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyMzcsIDIyNCwgNTEsIDI0LCAxLCAyMTgsIDE5OCwgCi0gICAgMjE5LCAxNjQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyLCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgMjMxLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMiwgMTczLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNDQsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjI1LCA0OSwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMDksIAotICAgIDEyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2NSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjEsIDExNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1OCwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI0OCwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjksIDI0MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk4LCAyMDYsIAotICAgIDUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNiwgMjM5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMjMwLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMywgNzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCA0OCwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDExMywgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjI1LCAxNTUsIDI0LCAxLCAyMTgsIDE5NywgMjEyLCAxNTIsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEzLCAxMTgsIDIwNywgMjAzLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMzEsIDIyMSwgOTcsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjI1LCA1NSwgMjI1LCAxNTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCA5MiwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDE4LCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNTAsIDI0LCAxLCAyMTgsIDE5NywgMjMwLCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgCi0gICAgMTksIDI0LCAxLCAyMTgsIDE5NywgMjAzLCA5NiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5NywgMjI4LCAyOSwgMjIxLCAKLSAgICAxMTEsIDIyMSwgNiwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDk0LCAyMTMsIDE3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgCi0gICAgMjQ5LCAyMjIsIDQ3LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTgsIDI0LCAxLCAyMTgsIDE5NywgMjE4LCAxMDUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjA3LCAyMDQsIDIyMSwgMTA5LCAyNCwgMSwgMjE4LCAxOTcsIDIxMywgMjIsIDIyMiwgNDIsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjEzLCAxOCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDE5OCwgMjA5LCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjI1LCAzNywgMjI1LCA1MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjAsIDI0OSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjksIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMzgsIDk5LCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTU1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyOCwgMTA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgNjUsIDI0LCAxLCAyMTgsIDE5NywgMjA1LCAyMzcsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMzcsIDIyMywgMTg0LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTcyLCAyMjUsIDMzLCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMjE1LCAyNCwgMSwgMjE4LCAxOTcsIDIxNSwgMTIsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEwLCAxNCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIxMCwgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDE1NiwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMjIsIDE1NywgMjI4LCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjAwLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIxMCwgMjMwLCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNDEsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAzNiwgMjQsIDEsIDIxOCwgCi0gICAgMTk3LCAyMjEsIDksIDI0LCAxLCAyMTgsIDE5NywgMjE3LCAxNzYsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDksIDIyMiwgCi0gICAgMTc0LCAyNCwgMSwgMjE4LCAxOTcsIDI0MCwgMzEsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAyOCwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyNDAsIDUzLCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTY3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDM2LCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDEyLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMTc1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyMiwgMTgwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTIwLCAyNCwgMSwgMjE4LCAxOTcsIDE5MiwgMjQsIAotICAgIDEsIDIxOCwgMTk3LCAyMjksIDc3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTI1LCAyNCwgMSwgMTY4LCAyMjIsIDEzNiwgCi0gICAgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyMCwgMjE0LCAyNCwgMSwgMTY4LCAyMDIsIDE5NiwgMjQsIDEsIDE2OCwgMjA0LCAKLSAgICA5NSwgMjQsIDEsIDE2OCwgMjIyLCAxNzMsIDI0LCAxLCAxNjgsIDIyMywgMTQsIDI0LCAxLCAxNjgsIDIyMiwgMTQzLCAyNCwgCi0gICAgMSwgMTY4LCAyMzgsIDEwOCwgMjQsIDEsIDE2OCwgMjI1LCA0NSwgMjQsIDEsIDE2OCwgMjM4LCAyMDUsIDI0LCAxLCAxNjgsIAotICAgIDIyMCwgMjM5LCAyMjQsIDkxLCAyMjQsIDIxMiwgMjQsIDEsIDE2OCwgMjIxLCA4OSwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCA0MiwgMjQsIDEsIDE2OCwgMjE4LCAxMTEsIDI0LCAxLCAxNjgsIDIyMiwgMjU1LCAyNCwgMSwgMTY4LCAyMjUsIDUzLCAKLSAgICAyNDcsIDg4LCAyNCwgMSwgMTY4LCAyMjksIDE1NywgMjQsIDEsIDE2OCwgMjM4LCAxMDksIDI0LCAxLCAxNjgsIDIyOSwgCi0gICAgMTY0LCAyNCwgMSwgMTY4LCAyMDIsIDIxNCwgMjIzLCAyMTUsIDI0LCAxLCAxNjgsIDIyMCwgMjA4LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDMwLCAyNCwgMSwgMTY4LCAyMjEsIDExOSwgMjQsIDEsIDE2OCwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgMjAzLCAxOSwgCi0gICAgMjQsIDEsIDE2OCwgMjI4LCAyNDEsIDI0LCAxLCAxNjgsIDIzMCwgNDEsIDI0LCAxLCAxNjgsIDIxMywgMTEzLCAyNCwgMSwgCi0gICAgMTY4LCAyMjMsIDgsIDI0LCAxLCAxNjgsIDIxMCwgMTIsIDI0LCAxLCAxNjgsIDIyMiwgMTYsIDI0LCAxLCAxNjgsIDIwOCwgCi0gICAgMTk5LCAyMDIsIDE5OSwgMjQsIDEsIDE2OCwgMjExLCA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MywgMjIxLCA2LCAyNCwgMSwgCi0gICAgMTY4LCAyMDUsIDIzNiwgMjQsIDEsIDE2OCwgMjIzLCA3OCwgMjQsIDEsIDE2OCwgMjI1LCAxNzcsIDIyOSwgMTY2LCAyNCwgCi0gICAgMSwgMTY4LCAyMjEsIDEwMiwgMjQsIDEsIDE2OCwgMjIyLCAxNTgsIDI0LCAxLCAxNjgsIDIyOCwgMTEsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgMzgsIDI0LCAxLCAxNjgsIDIyNCwgMTg5LCAyNCwgMSwgMTY4LCAyMjEsIDk2LCAyNCwgMSwgMTY4LCAyMDksIDExNiwgCi0gICAgMjQsIDEsIDE2OCwgMjIyLCAxNjAsIDI0LCAxLCAxNjgsIDIzOSwgMTA2LCAyNCwgMSwgMTY4LCAyMjMsIDEzLCAyNCwgMSwgCi0gICAgMTY4LCAyMjEsIDEyMSwgMjQsIDEsIDE2OCwgMjIxLCAxMTcsIDI0LCAxLCAxNjgsIDI0NywgMTY5LCAyNCwgMSwgMTY4LCAKLSAgICAyMDUsIDIzOCwgMjQsIDEsIDE2OCwgMjI1LCA0MywgMjQsIDEsIDE2OCwgMjE1LCAxNDUsIDI0LCAxLCAxNjgsIDIyMiwgNDYsIAotICAgIDI0LCAxLCAxNjgsIDIyOCwgMjgsIDI0LCAxLCAxNjgsIDIwOCwgMTk2LCAyNCwgMSwgMTY4LCAyMjEsIDEwMywgMjIyLCAKLSAgICAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMzgsIDI0LCAxLCAxNjgsIDIyOSwgMTcwLCAyNCwgMSwgMTY4LCAyMjIsIDE2NSwgMjQsIAotICAgIDEsIDE2OCwgMjI1LCAxNTAsIDI0LCAxLCAxNjgsIDIyNSwgMzEsIDI0LCAxLCAxNjgsIDIyNiwgMjM5LCAyNCwgMSwgMTY4LCAKLSAgICAyMjgsIDE3NSwgMjQsIDEsIDE2OCwgMjIyLCA0NCwgMjQsIDEsIDE2OCwgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIwMywgCi0gICAgMjA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MSwgMjQsIDEsIDE2OCwgMjIxLCAxMDYsIDI0LCAxLCAxNjgsIDIyMSwgOTgsIDI0LCAKLSAgICAxLCAxNjgsIDIyOCwgMTkwLCAyMjIsIDIsIDI0LCAxLCAxNjgsIDIyMSwgMTA0LCAyNCwgMSwgMTY4LCAyMjMsIDIxLCAyNCwgCi0gICAgMSwgMTY4LCAyMjUsIDE3NywgMjIxLCAxMDksIDI0LCAxLCAxNjgsIDIwMywgMTEwLCAyNCwgMSwgMTY4LCAyMjMsIDIwLCAKLSAgICAyNCwgMSwgMTY4LCAyMTIsIDE5NCwgMjQsIDEsIDE2OCwgMjEzLCAxMTYsIDI0LCAxLCAxNjgsIDIyNSwgMzksIDI0LCAxLCAKLSAgICAxNjgsIDIyNSwgMTU3LCAyNCwgMSwgMTY4LCAyMjUsIDQ5LCAyNCwgMSwgMTY4LCAyMjksIDE1OCwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCA0MCwgMjQsIDEsIDE2OCwgMjI5LCAxNjIsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIDIxOCwgMTYyLCAyNCwgMSwgMTY4LCAKLSAgICAyMDIsIDE3OSwgMjQsIDEsIDE2OCwgMjIyLCAzNCwgMjQsIDEsIDE2OCwgMjI0LCAxNDQsIDI0LCAxLCAxNjgsIDIyMywgCi0gICAgMjQ0LCAyNCwgMSwgMTY4LCAyMTIsIDI1MCwgMjQsIDEsIDE2OCwgMjI5LCAxODEsIDIyNywgMjQ2LCAyNCwgMSwgMTY4LCAKLSAgICAyMjksIDE4MSwgMjQwLCA2NiwgMjQsIDEsIDE2OCwgMjIyLCAxOTUsIDI0LCAxLCAxNjgsIDIyMywgNzUsIDI0LCAxLCAxNjgsIAotICAgIDIyNywgOTYsIDI0LCAxLCAxNjgsIDIxOCwgMTIzLCAyNCwgMSwgMTY4LCAyMTksIDksIDI0LCAxLCAxNjgsIDIwOSwgMTMyLCAKLSAgICAyNCwgMSwgMTM0LCAyMjUsIDI5LCAyNCwgMSwgMTM0LCAyMDQsIDkzLCAyNCwgMSwgMTM0LCAyMjIsIDMyLCAyNCwgMSwgCi0gICAgMTM0LCAyMjQsIDE5NywgMjQsIDEsIDEzNCwgMjIyLCAzMCwgMjQsIDEsIDEzNCwgMjI3LCAxNDEsIDI0LCAxLCAxMzQsIAotICAgIDIyMiwgMzUsIDI0LCAxLCAxMzQsIDIyMSwgMTE2LCAyNCwgMSwgMTM0LCAyMjIsIDE3OSwgMjQsIDEsIDEzNCwgMjIxLCA2LCAKLSAgICAyNCwgMSwgMTM0LCAyMDMsIDIxNiwgMjQsIDEsIDEzNCwgMjIyLCAxMzMsIDI0LCAxLCAxMzQsIDIxMywgNDEsIDI0LCAxLCAKLSAgICAxMzQsIDIyMiwgMTQ0LCAyNCwgMSwgMTM0LCAyMjksIDE2NSwgMjQsIDEsIDEzNCwgMjA5LCAxMTgsIDI0LCAxLCAxMzQsIAotICAgIDIxMywgMjAsIDI0LCAxLCAxMzQsIDIyMiwgNDMsIDI0LCAxLCAxMzQsIDIxMCwgMjMwLCAyNCwgMSwgMTM0LCAyMjksIDE3MCwgCi0gICAgMjQsIDEsIDEzNCwgMjAzLCA5OCwgMjQsIDEsIDEzNCwgMjI4LCAxOTEsIDI0LCAxLCAxMzQsIDIxNCwgMjMzLCAyNCwgMSwgCi0gICAgMTM0LCAyMjQsIDIwMiwgMjQsIDEsIDEzNCwgMjIzLCAxMiwgMjQsIDEsIDEzNCwgMjI1LCAxMjUsIDI0LCAxLCAxMzQsIAotICAgIDIyNCwgMjA4LCAyNCwgMSwgMTM0LCAyMTMsIDExNSwgMjQsIDEsIDEzNCwgMjAzLCA0MiwgMjQsIDEsIDEzNCwgMjIyLCAzNywgCi0gICAgMjQsIDEsIDEzNCwgMjI5LCAxNjEsIDIyNSwgMzIsIDI0LCAxLCAxMzQsIDIyMiwgMTQwLCAyNCwgMSwgMTM0LCAyMDcsIAotICAgIDIwMywgMjQsIDEsIDEzNCwgMjM4LCAxMTgsIDI0LCAxLCAxMzQsIDIyMiwgMTMwLCAyNCwgMSwgMTM0LCAyNDAsIDMyLCAyNCwgCi0gICAgMSwgMTM0LCAyMjMsIDE2LCAyNCwgMSwgMTM0LCAyMjQsIDE4MSwgMjQsIDEsIDEzNCwgMjI3LCAxNjksIDI0LCAxLCAxMzQsIAotICAgIDIyMiwgMjU0LCAyNCwgMSwgMTM0LCAyMjQsIDUwLCAyNCwgMSwgMTM0LCAyMjQsIDE4NSwgMjQsIDEsIDEzNCwgMjE3LCAKLSAgICAxNTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgzLCAyNCwgMSwgMTM0LCAyMjQsIDE5OSwgMjQsIDEsIDEzNCwgMjI2LCAyMjIsIAotICAgIDI0LCAxLCAxMzQsIDIyMSwgMTA4LCAyNCwgMSwgMTM0LCAyMjUsIDUyLCAyNCwgMSwgMTM0LCAyMjgsIDE2NSwgMjQsIDEsIAotICAgIDEzNCwgMjIwLCAyNTEsIDI0LCAxLCAxMzQsIDIwOSwgMTIxLCAyNCwgMSwgMTM0LCAyMTEsIDI0NCwgMjQsIDEsIDEzNCwgCi0gICAgMjAyLCAxNzksIDI0LCAxLCAxMzQsIDIyOSwgMTYyLCAyNCwgMSwgMTM0LCAyMTYsIDIwMSwgMjQsIDEsIDEzNCwgMjA5LCAKLSAgICAxNzUsIDI0LCAxLCAxMzQsIDIyMiwgMTQxLCAyNCwgMSwgMTM0LCAyMjQsIDIwNCwgMjQsIDEsIDEzNCwgMjIxLCAxMDcsIAotICAgIDI0LCAxLCAxMzQsIDIyOSwgMTYwLCAyNCwgMSwgMTM0LCAyMTgsIDExNywgMjQsIDEsIDEzNCwgMjE4LCAyMTMsIDI0LCAxLCAKLSAgICAxMzQsIDIyMCwgMjI1LCAyNCwgMSwgMTM0LCAyMjcsIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxODAsIDI0LCAxLCAxMzQsIAotICAgIDIyNCwgMjAxLCAyNCwgMSwgMTM0LCAyMjIsIDE1MywgMjQsIDEsIDEzNCwgMjAyLCAxOTMsIDI0LCAxLCAxMzQsIDIxOSwgCi0gICAgOTYsIDI0LCAxLCAxMzQsIDIwMiwgMTkyLCAyNCwgMSwgMTM0LCAyMjMsIDIxLCAyNCwgMSwgMTM0LCAyMjEsIDk3LCAyNCwgCi0gICAgMSwgMTM0LCAyMTEsIDcsIDI0LCAxLCAxMzQsIDIyOCwgMTk1LCAyNCwgMSwgMTM0LCAyMjIsIDE2OSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAxMzgsIDI0LCAxLCAxMzQsIDIwNywgMTg1LCAyNCwgMSwgMTM0LCAyMjQsIDIxMiwgMjQsIDEsIDEzNCwgMjI4LCAKLSAgICAxODUsIDI0LCAxLCAxMzQsIDIyMSwgMTA1LCAyNCwgMSwgMTM0LCAyMDksIDExOSwgMjQsIDEsIDEzNCwgMjI1LCAxNTIsIAotICAgIDI0LCAxLCAxMzQsIDIyMiwgMTc4LCAyNCwgMSwgMTM0LCAyMjcsIDE2OCwgMjQsIDEsIDEzNCwgMjIyLCAxNTksIDI0LCAxLCAKLSAgICAxMzQsIDIyMSwgMTEwLCAyNCwgMSwgMTM0LCAyMjIsIDE2LCAyNCwgMSwgMTM0LCAyMzgsIDEwMiwgMjQsIDEsIDEzNCwgCi0gICAgMjI4LCAyMDksIDI0LCAxLCAxMzQsIDIxNiwgMTA4LCAyMjAsIDQ1LCAyNCwgMSwgMTM0LCAyMTAsIDEsIDI0LCAxLCAxMzQsIAotICAgIDIwOCwgMTQxLCAyNCwgMSwgMTM0LCAyMjAsIDI0OCwgMjQsIDEsIDEzNCwgMjE2LCAzLCAyNCwgMSwgMTM0LCAyMjcsIDIyNSwgCi0gICAgMjQsIDEsIDEzNCwgMjI1LCA3LCAyNCwgMSwgMTM0LCAyMjYsIDE4NSwgMjQsIDEsIDEzNCwgMjEwLCAxNzksIDI0LCAxLCAKLSAgICAxMzQsIDIyMywgMjQ2LCAyNCwgMSwgMTM0LCAyMTMsIDYsIDI0LCAxLCAxMzQsIDIxMywgMTYsIDI0LCAxLCAxMzQsIDIyOCwgCi0gICAgMTM3LCAyNCwgMSwgMTM0LCAyMjEsIDg0LCAyNCwgMSwgMTM0LCAyMTIsIDE5OSwgMjQsIDEsIDEzNCwgMjIxLCA5OSwgMjQsIAotICAgIDEsIDEzNCwgMjE5LCAyMywgMjQsIDEsIDEzNCwgMjIyLCAxMDAsIDI0LCAxLCAxMzQsIDIxMiwgMjI5LCAyNCwgMSwgMTM0LCAKLSAgICAyMTcsIDE3MSwgMjQsIDEsIDEzNCwgMjIzLCAxODQsIDI0LCAxLCAxMzQsIDIyNywgMTAsIDI0LCAxLCAxMzQsIDIxNiwgCi0gICAgMTA4LCAyMjMsIDIzOSwgMjQsIDEsIDEzNCwgMjA5LCAyLCAyNCwgMSwgMTM0LCAyMjEsIDg2LCAyNCwgMSwgMTM0LCAyMjUsIAotICAgIDUzLCAyMTMsIDExMSwgMjQsIDEsIDEzNCwgMjE0LCAyMzEsIDI0LCAxLCAxMzQsIDI0MCwgMTA3LCAyNCwgMSwgOTMsIDIyMywgCi0gICAgMjAsIDI0LCAxLCA5MywgMjA4LCAxNDcsIDI0LCAxLCA5MywgMjI1LCA0MiwgMjQsIDEsIDkzLCAyMjgsIDExLCAyNCwgMSwgCi0gICAgOTMsIDIwNSwgMTc3LCAyNCwgMSwgOTMsIDIyNywgMTYsIDI0LCAxLCA5MywgMjE5LCAxNjgsIDI0LCAxLCA5MywgMjExLCAKLSAgICAyNTUsIDI0LCAxLCA5MywgMjE2LCAxNzYsIDI0LCAxLCA5MywgMjIxLCAxMTIsIDI0LCAxLCA5MywgMjIyLCAyNDcsIDI0LCAKLSAgICAxLCA5MywgMjE3LCAxODgsIDI0LCAxLCA5MywgMjA5LCAyMzIsIDI0LCAxLCA5MywgMjIyLCAxNDYsIDI0LCAxLCA5MywgCi0gICAgMjI4LCAyMzcsIDI0LCAxLCA5MywgMjAzLCAyMDgsIDI0LCAxLCA5MywgMjE0LCAxNjUsIDI0LCAxLCA5MywgMjIyLCAxNzAsIAotICAgIDI0LCAxLCA5MywgMjE5LCAxNjUsIDI0LCAxLCA5MywgMjA4LCAxNDgsIDI0LCAxLCA5MywgMjI4LCAxODksIDI0LCAxLCA5MywgCi0gICAgMjI3LCAzMCwgMjQsIDEsIDkzLCAyMjEsIDExNSwgMjQsIDEsIDkzLCAyMjIsIDEyMiwgMjQsIDEsIDkzLCAyMjUsIDE1OCwgCi0gICAgMjQsIDEsIDkzLCAyMjIsIDEzOSwgMjQsIDEsIDkzLCAyMjIsIDEyMSwgMjQsIDEsIDkzLCAyMjEsIDExNCwgMjQsIDEsIDkzLCAKLSAgICAyMTYsIDAsIDI0LCAxLCA5MywgMjIyLCAzNCwgMjQsIDEsIDkzLCAyMTksIDIxLCAyNCwgMSwgOTMsIDIxNSwgMzMsIDI0LCAKLSAgICAxLCA5MywgMjIyLCAxNTQsIDI0LCAxLCA5MywgMjI0LCAxOTEsIDI0LCAxLCA5MywgMjM4LCA5NiwgMjQsIDEsIDkzLCAyMjIsIAotICAgIDE0MiwgMjQsIDEsIDkzLCAyMjIsIDQ1LCAyNCwgMSwgOTMsIDIyNSwgMTA2LCAyNCwgMSwgOTMsIDIyNywgMTIsIDI0LCAxLCAKLSAgICA5MywgMjIyLCAxNzUsIDI0LCAxLCA5MywgMjIzLCA0LCAyNCwgMSwgOTMsIDIxMCwgMCwgMjIxLCA5NywgMjQsIDEsIDkzLCAKLSAgICAyMTMsIDExNywgMjQsIDEsIDkzLCAyMTcsIDE4MSwgMjQsIDEsIDkzLCAyMjMsIDI0LCAyMTIsIDYsIDI0LCAxLCA5MywgCi0gICAgMjIyLCAxNjIsIDIyMSwgNiwgMjQsIDEsIDkzLCAyMDMsIDcsIDI0LCAxLCA5MywgMjM4LCA5NywgMjQsIDEsIDkzLCAyMDcsIAotICAgIDIwMiwgMjQsIDEsIDkzLCAyMDMsIDIyLCAyNCwgMSwgOTMsIDIxOCwgNjksIDI0LCAxLCA5MywgMjA3LCAxOTAsIDI0LCAxLCAKLSAgICA5MywgMjI5LCAxNjgsIDI0LCAxLCA5MywgMjExLCA2LCAyNCwgMSwgOTMsIDIwOSwgMTIwLCAyNCwgMSwgOTMsIDIwNSwgCi0gICAgMjM5LCAyNCwgMSwgOTMsIDIwNCwgNDMsIDI0LCAxLCA5MywgMjI4LCAxMTAsIDI0LCAxLCA5MywgMjE3LCAxOTEsIDI0LCAxLCAKLSAgICA5MywgMjEwLCAxMywgMjQsIDEsIDkzLCAyMzgsIDExNywgMjQsIDEsIDkzLCAyMjIsIDE4NSwgMjQsIDEsIDkzLCAyMTMsIAotICAgIDE5LCAyNCwgMSwgOTMsIDIyNCwgMTg2LCAyNCwgMSwgOTMsIDIyNSwgNDYsIDI0LCAxLCA5MywgMjIwLCAyMTIsIDI0LCAxLCAKLSAgICA5MywgMjIxLCAyNTQsIDI0LCAxLCA5MywgMjM4LCAyMDEsIDI0LCAxLCA5MywgMjA3LCAxOTEsIDI0LCAxLCA5MywgMjI4LCAKLSAgICAxOTksIDI0LCAxLCA5MywgMjAzLCA3NCwgMjQsIDEsIDkzLCAyMjAsIDI0OSwgMjQ2LCAzMiwgMjQsIDEsIDkzLCAyMDIsIAotICAgIDI1MywgMjQsIDEsIDkzLCAyMjQsIDIwMywgMjQsIDEsIDkzLCAyMjMsIDksIDI0LCAxLCA5MywgMjE4LCAxNTgsIDI0LCAxLCAKLSAgICA5MywgMjAyLCAxOTgsIDI0LCAxLCA5MywgMjI3LCAxNzAsIDI0LCAxLCA5MywgMjM5LCAxMDYsIDI0LCAxLCA5MywgMjM4LCAKLSAgICAyMDAsIDI0LCAxLCA5MywgMjIyLCAxMzIsIDI0LCAxLCA5MywgMjI5LCAxNzAsIDI0LCAxLCA5MywgMjI1LCAxNjEsIDI0LCAKLSAgICAxLCA5MywgMjIyLCAxNDUsIDI0LCAxLCA5MywgMjM4LCAxMDMsIDI0LCAxLCA5MywgMjQwLCAxMDgsIDI0LCAxLCA5MywgCi0gICAgMjIxLCA4NywgMjQsIDEsIDkzLCAyMTgsIDIxNCwgMjQsIDEsIDkzLCAyMDMsIDIwLCAyNCwgMSwgOTMsIDIyMiwgMTcxLCAKLSAgICAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDgsIDEwMywgMjQsIDEsIDkzLCAyMjAsIDE5MiwgMjQsIDEsIDkzLCAyMTgsIDQzLCAKLSAgICAyNCwgMSwgOTMsIDIyNCwgMTQ0LCAyNCwgMSwgOTMsIDIzOSwgMTA0LCAyNCwgMSwgOTMsIDIyMywgMTAwLCAyNCwgMSwgOTMsIAotICAgIDIyMywgMjQ0LCAyNCwgMSwgOTMsIDIzOCwgMTAyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCA3NSwgMjQsIDEsIDkzLCAyMjMsIAotICAgIDE4NSwgMjQsIDEsIDkzLCAyMTcsIDE4NywgMjQsIDEsIDkzLCAyMjIsIDEzNCwgMjQsIDEsIDkzLCAyMjgsIDE3NSwgMjQsIAotICAgIDEsIDkzLCAyMTgsIDE1NSwgMjQsIDEsIDkzLCAyMjEsIDEwMCwgMjQsIDEsIDkzLCAyMDMsIDIxLCAyNCwgMSwgOTMsIDIyMiwgCi0gICAgMTU1LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIDI1MiwgMjQsIDEsIDkzLCAyMzksIDEwOSwgMjQ3LCA3MSwgMjQsIDEsIAotICAgIDkzLCAyMzksIDE3OSwgMjQsIDEsIDkzLCAyMjIsIDM5LCAyNCwgMSwgOTMsIDYzLCAyNCwgMSwgOTMsIDIwOCwgMTQxLCAyNCwgCi0gICAgMSwgOTMsIDc4LCAyNCwgMSwgOTMsIDc1LCAyNCwgMSwgOTMsIDIyOCwgOSwgMjQsIDEsIDkzLCAyMTksIDE2OSwgMjE4LCAKLSAgICA3NywgMjQsIDEsIDkzLCAyMTAsIDE4LCAyNCwgMSwgOTMsIDIwOSwgMjE5LCAyNCwgMSwgOTMsIDIyMywgMjQsIDIyMywgCi0gICAgMTcyLCAyMzYsIDM4LCAyNCwgMSwgOTMsIDIxMiwgMjUwLCAyNCwgMSwgOTMsIDIwMywgMTcsIDI0LCAxLCA5MywgMjIyLCAKLSAgICAxMTUsIDI0LCAxLCA5MywgMjAyLCAyMDMsIDI0LCAxLCA5MywgMjAyLCAyMzAsIDIxMCwgMTU5LCAyNCwgMSwgOTMsIDIwMiwgCi0gICAgMjMwLCAyNDUsIDE1MSwgMjQsIDEsIDkzLCAyMDIsIDE4NywgMjQsIDEsIDkzLCAyMDIsIDE5NSwgMjQsIDEsIDkzLCAyMjksIAotICAgIDE1NiwgMjQsIDEsIDkzLCAyMTgsIDIxMiwgMjQsIDEsIDkzLCAyMjIsIDQwLCAyNDEsIDM5LCAyNCwgMSwgOTMsIDIxNywgCi0gICAgMTgzLCAyNCwgMSwgOTMsIDIwMywgMjE0LCAyNCwgMSwgOTMsIDI0MCwgNTMsIDI0LCAxLCA5MywgMjA2LCA1MCwgMjQsIDEsIAotICAgIDkzLCAyMjYsIDIzOSwgMjQsIDEsIDkzLCAyMjQsIDE1NSwgMjQsIDEsIDkzLCAyMTYsIDc1LCAyNCwgMSwgOTMsIDIxNiwgCi0gICAgMjAyLCAyNCwgMSwgOTMsIDIyMiwgMTE0LCAyNCwgMSwgOTMsIDIyMiwgMjAzLCAyNCwgMSwgOTMsIDIxMiwgMjQyLCAyNCwgCi0gICAgMSwgOTMsIDIxMiwgMjI5LCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyMTYsIDExMSwgMjQsIDEsIDkzLCAyMDEsIDIwMSwgMjQsIAotICAgIDEsIDkzLCAyMTgsIDE2NywgMjQsIDEsIDkzLCAyMjcsIDEwLCAyNCwgMSwgOTMsIDIyOSwgMjYsIDI0LCAxLCA5MywgMjI0LCAKLSAgICAyNDAsIDI0LCAxLCA5MywgMTkyLCAyNCwgMSwgOTMsIDIyNSwgMTAzLCAyNCwgMSwgOTMsIDIwOSwgMTIyLCAyNCwgMSwgOTMsIAotICAgIDIyOSwgMTAwLCAyNCwgMSwgOTMsIDIyNCwgNTQsIDI0LCAxLCA5MywgMjA5LCAxNTIsIDI0LCAxLCA5MywgMjQwLCA3NywgCi0gICAgMjQsIDEsIDkzLCAyMzgsIDkwLCAyNCwgMSwgMjE4LCAxOTYsIDE3MywgMjQsIDEsIDIxOCwgMTk2LCA2OCwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjgsIDIwOSwgMjQsIDEsIDIxOCwgMTk2LCAyNDEsIDE2MSwgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEzNSwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDEsIDI0LCAxLCAyMTgsIDE5NiwgMjIwLCAyNDgsIDI0LCAxLCAyMTgsIDE5NiwgMjI4LCAKLSAgICAxMTMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAzLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNTAsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjI1LCA3LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjIzLCAyMywgMjQsIDEsIDIxOCwgCi0gICAgMTk2LCAyMjIsIDQ2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNiwgMTg1LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTc5LCAyNCwgCi0gICAgMSwgMjE4LCAxOTYsIDIxMywgNiwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE2MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTMsIAotICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIDEzNywgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDE3MCwgMjQsIDEsIDIxOCwgCi0gICAgMTk2LCAyMjEsIDU1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMSwgODQsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxNywgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMDIsIDIyOSwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE5OSwgMjQsIDEsIDIxOCwgMTk2LCAxOTgsIDI0LCAKLSAgICAxLCAyMTgsIDE5NiwgMjIxLCAxMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjE4LCAyMTIsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCAKLSAgICA5OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDMsIDIxNCwgMjQsIDEsIDIxOCwgMTk2LCAyMTksIDIzLCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIxNSwgMTQ1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTAwLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNzUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjI5LCAxODAsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMzEsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxODIsIAotICAgIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAyNDIsIDI0LCAxLCAyMTgsIDE5NiwgMjE3LCAxODgsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjM5LCAxNzksIDI0LCAxLCAyMTgsIDE5NiwgMjA0LCAxMTEsIDI0LCAxLCAyMTgsIDE5NiwgMjI3LCAxNDgsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjI3LCAxMCwgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDI2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNSwgNDQsIAotICAgIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAxMDcsIDI0LCAxLCAyMTgsIDE5NiwgMTkyLCAyNCwgMSwgMjE4LCAxOTYsIDIyNCwgCi0gICAgODIsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA1MiwgMjQsIDEsIDIxOCwgMTk2LCAyMDksIDEzMiwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMjgsIDI0NCwgMjQsIDEsIDIxOCwgMTk2LCAyMTQsIDI1MSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDE2MiwgMjIzLCAyNDksIAotICAgIDEsIDIxMCwgMjIsIDIyMywgMjQ5LCAxLCAyMjIsIDE1MSwgMjIzLCAyNDksIDEsIDIwMiwgMjQ3LCAyMjMsIDI0OSwgMSwgCi0gICAgMjI0LCAxMTIsIDIyMywgMjQ5LCAxLCAyNDksIDMyLCAyMjMsIDI0OSwgMSwgMjQ0LCAyMTIsIDIyMywgMjQ5LCAxLCA2MywgCi0gICAgMjIzLCAyNDksIDEsIDIxOCwgMTkyLCAyMjMsIDI0OSwgMSwgMjI5LCAxMzksIDIyMywgMjQ5LCAxLCAyMzcsIDk1LCAyMjMsIAotICAgIDI0OSwgMSwgMjQ0LCAxODgsIDIyMywgMjQ5LCAxLCAyNDYsIDk4LCAyMjMsIDI0OSwgMSwgMjI5LCAyMDAsIDIyMywgMjQ5LCAKLSAgICAxLCAyMjAsIDQ2LCAyMjMsIDI0OSwgMSwgMjI1LCAxNTgsIDIyMywgMjQ5LCAxLCAyMjIsIDY4LCAyMjMsIDI0OSwgMSwgCi0gICAgMTg1LCAyMjMsIDI0OSwgMSwgMjIwLCAxOCwgMjIzLCAyNDksIDEsIDc4LCAyMjMsIDI0OSwgMSwgMjE1LCAyMjcsIDIyMywgCi0gICAgMjQ5LCAxLCAyMTMsIDExLCAyMjMsIDI0OSwgMSwgMjA5LCA5MSwgMjIzLCAyNDksIDEsIDI0MSwgMTg5LCAyMjMsIDI0OSwgCi0gICAgMSwgMjA0LCAxMTEsIDIyMywgMjQ5LCAxLCA3NCwgMjIzLCAyNDksIDEsIDIyOSwgMjYsIDIyMywgMjQ5LCAxLCAyMjgsIDE3LCAKLSAgICAyMjMsIDI0OSwgMSwgMjI4LCAxMTMsIDIyMywgMjQ5LCAxLCAyMzcsIDE0NywgMjIzLCAyNDksIDEsIDIxNiwgNTcsIDIyMywgCi0gICAgMjQ5LCAxLCAyMDksIDE2NSwgMjIzLCAyNDksIDE3LCAyMDIsIDg0LCAyMjMsIDI0OSwgMTcsIDEwNSwgMjIzLCAyNDksIDE3LCAKLSAgICAxMDgsIDIyMywgMjQ5LCAxNywgMTQ3LCAyMjMsIDI0OSwgMTcsIDE0OSwgMjIzLCAyNDksIDE3LCAxNzAsIDIyMywgMjQ5LCAKLSAgICAxNywgMTk1LCAyMjMsIDI0OSwgMTcsIDIxMywgMTExLCAyMjMsIDI0OSwgMTcsIDE5OSwgMjIzLCAyNDksIDE3LCAyMjIsIAotICAgIDYzLCAyMjMsIDI0OSwgMjQ0LCAxNjYsIDIyMywgMjQ5LCA1MiwgMjQ0LCAxNjYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAyNDEsIDc0LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMTczLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjE0LCAxNzcsIDI0OCwgCi0gICAgMjEyLCAyMDYsIDgzLCAxLCAyNDAsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyNSwgNDcsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDMsIDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDI0OSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0MywgCi0gICAgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI4LCAyNDMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzAsIDEwMSwgMjQ4LCAKLSAgICAyMTIsIDIwNiwgODMsIDEsIDIzNSwgMjUzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMTEsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDIsIDE3LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjM4LCAxOTQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAyNDMsIDExMywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0NiwgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA2LCAxNzEsIAotICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxMzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDksIDMyLCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgMjA0LCAxNjMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDMsIDQ2LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCi0gICAgMTg1LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA2MywgMjQ4LCAyMTIsIAotICAgIDIwNiwgODMsIDEsIDc4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjIwLCAxOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDY4LCAKLSAgICAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQxLCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA3NCwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDc1LCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDEzOCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgCi0gICAgMTI0LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAyMjQsIDE1MCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAzOSwgMjI2LCAyNTMsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIzNiwgMjQyLCAyMDgsIDE2MSwgCi0gICAgMjQ4LCAyMTIsIDIwNiwgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxMTksIDExNywgMjIsIDIyOSwgMTk3LCAxMTksIDExNywgCi0gICAgMjIsIDIyOSwgMTkzLCAxMTksIDExNywgMjIsIDIyOSwgOTcsIDExOSwgMTE3LCAyMiwgMjI5LCA2MywgMTE5LCAxMTcsIDIyLCAKLSAgICAyMjksIDIxOCwgMTE5LCAxMTcsIDIyLCAyMjksIDIxNSwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMCwgMTE5LCAxMTcsIDIyLCAKLSAgICAyMjgsIDE3MiwgMTE5LCAxMTcsIDIyLCAyMjksIDE5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDE1NCwgMTE5LCAxMTcsIDIyLCAKLSAgICAyMzAsIDE3LCAxMTksIDExNywgMjIsIDIzMCwgMTQsIDExOSwgMTE3LCAyMiwgMjI5LCA1LCAxMTksIDExNywgMjIsIDIyOSwgCi0gICAgMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMCwgMTE5LCAxMTcsIDIyLCAyMjgsIAotICAgIDIwMiwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMSwgMTE5LCAxMTcsIDIyLCAyMjksIDIzLCAxMTksIDExNywgMjIsIDIyOCwgCi0gICAgMjQ3LCAxMTksIDExNywgMjIsIDIyOSwgOTksIDExOSwgMTE3LCAyMiwgMjI5LCA5OCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMyLCAKLSAgICAxMTksIDExNywgMjIsIDIyOSwgMjE0LCAxMTksIDExNywgMjIsIDIyOCwgMTYzLCAxMTksIDExNywgMjIsIDIyOCwgMTU0LCAKLSAgICAxMTksIDExNywgMjIsIDIzMCwgNDAsIDExOSwgMTE3LCAyMiwgMjMwLCAzMywgMTE5LCAxMTcsIDEwOSwgMjA2LCA2MSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIxLCA5MCwgMTE5LCAxMTcsIDEwOSwgMjI3LCAyNTEsIDExOSwgMTE3LCAxMDksIDIzNywgNzYsIAotICAgIDExOSwgMTE3LCAxMDksIDIyMSwgMjMwLCAxMTksIDExNywgMTA5LCAyMTYsIDE2NywgMTE5LCAxMTcsIDEwOSwgMjIyLCAxLCAKLSAgICAxMTksIDExNywgMTA5LCAyMTcsIDEwMCwgMTE5LCAxMTcsIDEwOSwgMjAzLCA2MiwgMTE5LCAxMTcsIDEwOSwgMjM2LCAyMjEsIAotICAgIDExOSwgMTE3LCAxMDksIDIyNSwgNjcsIDExOSwgMTE3LCAxMDksIDI0NiwgMTc0LCAxMTksIDExNywgMTA5LCAyMjMsIDI4LCAKLSAgICAxMTksIDExNywgMTA5LCAyMzYsIDE1NywgMTE5LCAxMTcsIDEwOSwgMjE4LCA4NSwgMTE5LCAxMTcsIDEwOSwgMjIxLCA5NSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIzLCA2NSwgMTE5LCAxMTcsIDEwOSwgMjUwLCAzNCwgMTE5LCAxMTcsIDEwOSwgMjAzLCAxNzgsIAotICAgIDExOSwgMTE3LCAxMDksIDI0NywgMTUsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwNywgMTk5LCAxMTksIDExNywgMTMxLCAKLSAgICAyNDYsIDY3LCAyMTIsIDEzLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMjksIDE3MiwgMTE5LCAxMTcsIDEzMSwgMjQ2LCAKLSAgICA2NywgMjI5LCAxMzAsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIxMSwgNCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgCi0gICAgMjM2LCAxMjMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwOSwgMjA2LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgCi0gICAgNDQsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA4LCA5LCAyNDYsIDIyOSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NiwgCi0gICAgMTYzLCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgNjksIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjQwLCA1MCwgMTE5LCAKLSAgICAxMTcsIDIsIDIwMywgMTM2LCAyMjEsIDg1LCAxMTksIDExNywgMiwgMjAzLCAxMzYsIDIxNiwgNTksIDExOSwgMTE3LCAyLCAKLSAgICAyMDMsIDEzNiwgMjA4LCAxMjQsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjQwLCA4OSwgMTE5LCAxMTcsIDIsIDIwNSwgCi0gICAgMTczLCAyMTQsIDE1OSwgMTE5LCAxMTcsIDIsIDIyNSwgNiwgMjExLCA4LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyMSwgCi0gICAgMTM0LCAxMTksIDExNywgMiwgMjM1LCAxNjcsIDIwMywgODEsIDExOSwgMTE3LCAyLCAyMDMsIDE3NywgMTE5LCAxMTcsIDIsIAotICAgIDI0NiwgNjcsIDIwNywgMjUyLCAyMTUsIDIxNiwgMTE5LCAxMTcsIDE3LCAyMDIsIDg0LCAxMTksIDExNywgMTcsIDEwNSwgCi0gICAgMTE5LCAxMTcsIDE3LCAxMDgsIDExOSwgMTE3LCAxNywgMTQ3LCAxMTksIDExNywgMTcsIDE0OSwgMTE5LCAxMTcsIDE3LCAKLSAgICAxNzAsIDExOSwgMTE3LCAxNywgMTk1LCAxMTksIDExNywgMTcsIDIxMywgMTExLCAxMTksIDExNywgMTcsIDE5OSwgMTE5LCAKLSAgICAxMTcsIDE3LCAyMjIsIDYzLCAxMTksIDExNywgNDIsIDIwOSwgMTQ3LCAxMTksIDExNywgNDIsIDIzNiwgMTAsIDExOSwgCi0gICAgMTE3LCA0MiwgMjA5LCAxNTMsIDIwOSwgMzQsIDExOSwgMTE3LCA0MiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjM2LCAKLSAgICAxMiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNTMsIDI0OCwgNjgsIDExOSwgMTE3LCA0MiwgMjA4LCA3MiwgCi0gICAgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMjYsIDIzNCwgMTE5LCAxMTcsIDIsIDIwMywgMTMzLCAxMTksIDExNywgMiwgMjM2LCAKLSAgICAyMTYsIDExOSwgMTE3LCAyLCAyMDksIDU5LCAyMzYsIDIxNiwgMTE5LCAxMTcsIDIsIDIwMSwgMjQ3LCAyMDksIDEwMiwgCi0gICAgMTE5LCAxMTcsIDIsIDIzNiwgMTQxLCAxMTksIDExNywgMiwgMjIxLCAxNDgsIDExOSwgMTE3LCAyLCAyMDMsIDE2OSwgMTE5LCAKLSAgICAxMTcsIDIsIDIyMSwgODgsIDExOSwgMTE3LCAyLCAyNTAsIDE4LCAxMTksIDExNywgMiwgMjA3LCAxMjksIDI0NiwgMjI4LCAKLSAgICAxMTksIDExNywgMiwgMjI1LCA2LCAyMDgsIDEyLCAxMTksIDExNywgMiwgMjA5LCAyMDcsIDExOSwgMTE3LCAyLCAyMjcsIDcsIAotICAgIDExOSwgMTE3LCAyLCAyMjMsIDIwMSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIzNywgMTQzLCAyMjYsIDIxMiwgMjIxLCA5MywgCi0gICAgMjIxLCA5MiwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NSwgMTA5LCAyMDgsIDMsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKLSAgICAyMDcsIDEyNywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIwNywgMTI4LCAyNDYsIDg2LCAxMTksIDExNywgMiwgMjQ2LCA2NywgCi0gICAgMjE3LCAxODYsIDI0NCwgMTM1LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjIxLCAxNDEsIDIwOCwgMTMyLCAxMTksIDExNywgCi0gICAgMjQ2LCAzOSwgMiwgMjA4LCA3LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA0OCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIAotICAgIDIyNywgOTMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjcsIDI1MCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgMTMyLCAKLSAgICAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCA2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCA3MywgMTE5LCAxMTcsIAotICAgIDI0NiwgMzksIDIsIDIyMywgMjQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjA5LCA0NSwgMTE5LCAxMTcsIDI0NiwgMzksIAotICAgIDIsIDIwOCwgMTcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMTgsIDIwNSwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOSwgCi0gICAgMTQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCAxMzMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDYsIDgwLCAxMTksIAotICAgIDExNywgMjQ2LCAzOSwgMiwgMjQwLCA4NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgODgsIDExOSwgMTE3LCAyNDYsIAotICAgIDM5LCAyLCAyMDcsIDI0NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOCwgMTU4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCi0gICAgMjA0LCAxNTMsIDExMSwgMSwgMTg1LCAxMTEsIDEsIDI0OSwgMzIsIDExMSwgMSwgMTEsIDE4NSwgMTExLCAxLCAyMTgsIDk4LCAKLSAgICAxMTEsIDEsIDE5MiwgMTExLCAxLCAyMjQsIDE1OCwgMTExLCAxLCAyNTAsIDEyNiwgMTkyLCAxMTEsIDEsIDI0MCwgMTA4LCAKLSAgICAxMTEsIDEsIDIwNiwgODYsIDExMSwgMSwgMjA1LCAyMzEsIDExMSwgMSwgMjEwLCAyMiwgMTExLCAxLCAyNDQsIDIxMiwgCi0gICAgMTExLCAxLCAxMSwgMjA3LCAyNDEsIDExMSwgMSwgMTEsIDIxMCwgMjIsIDExMSwgMSwgMjA3LCAyNDEsIDExMSwgMSwgMjQ0LCAKLSAgICAxMjAsIDExMSwgMSwgMjAxLCAyMDEsIDExMSwgMSwgMjIyLCAxMDQsIDExMSwgMSwgMTEsIDIyMSwgMjI3LCAxMTEsIDEsIAotICAgIDI1MCwgMTI2LCAyMDEsIDIwMSwgMTExLCAxLCAyMjEsIDIyNywgMTExLCAxLCAyMjEsIDIxMywgMTExLCAxLCAyMjgsIDExMywgCi0gICAgMTExLCAxLCAyMjYsIDE5OCwgMTExLCAxLCAyMjcsIDE2MSwgMTExLCAxLCAyMjcsIDE1MCwgMTExLCAxLCAyMDgsIDE4NywgCi0gICAgMTExLCAxLCAyNDMsIDEyMSwgMTExLCAxLCAyMDgsIDE3OSwgMTExLCAxLCAyNDMsIDEyMCwgMTExLCAxLCAxNzMsIDExMSwgCi0gICAgMSwgMjM5LCA4LCAxMTEsIDEsIDExLCAxNzMsIDExMSwgMSwgMjE3LCAxMjYsIDExMSwgMSwgMjE3LCAxMDMsIDExMSwgMSwgCi0gICAgMjIyLCAyMDMsIDExMSwgMSwgMjIyLCAxNTIsIDExMSwgMSwgMjUwLCAxMjYsIDIyMiwgMjAzLCAxMTEsIDEsIDE1MiwgMTExLCAKLSAgICAxLCAyMDMsIDE4MiwgMTExLCAxLCAyMzgsIDExOSwgMTExLCAxLCAyMzgsIDk0LCAxMTEsIDEsIDIwNywgMjUxLCAxMTEsIDEsIAotICAgIDI0MSwgMjM5LCAxMTEsIDEsIDIyMSwgMTEsIDExMSwgMSwgMjIwLCAyNTAsIDExMSwgMSwgMjA4LCAxMCwgMTExLCAxLCAKLSAgICAyNDEsIDI0OSwgMTExLCAxLCAxMSwgMjA4LCAxMCwgMTExLCAxLCAxMSwgMjQxLCAyNDksIDExMSwgMSwgMjE2LCAxMzMsIAotICAgIDIwOCwgMTAsIDExMSwgMSwgMjEzLCA5MCwgMTExLCAxLCAyMTEsIDE2NCwgMTExLCAxLCAyMDIsIDgwLCAxMTEsIDEsIDIwMiwgCi0gICAgOCwgMTExLCAxLCAyMDgsIDIwLCAxMTEsIDEsIDI0MSwgMjU1LCAxMTEsIDEsIDExLCAyMDgsIDIwLCAxMTEsIDEsIDIxNSwgCi0gICAgMzYsIDExMSwgMSwgMjAyLCAxMTYsIDExMSwgMSwgMjAyLCA5LCAxMTEsIDEsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjE1LCAKLSAgICAxMTEsIDEsIDI1MCwgMTI2LCAyMDEsIDIzNSwgMTExLCAxLCAyMDEsIDIwNywgMTExLCAxLCAyMDEsIDIxNCwgMTExLCAxLCAKLSAgICAyMDQsIDExMSwgMTExLCAxLCAyNTEsIDczLCAxMTEsIDEsIDIzNywgMTIsIDExMSwgMSwgMjIzLCA3MCwgMTExLCAyLCAyNTAsIAotICAgIDY1LCAxMTEsIDIsIDIxNiwgMTMzLCAyMDUsIDE4NCwgMTExLCAyLCAyMTYsIDEzMywgMjUwLCA2NSwgMTExLCAyMiwgMiwgCi0gICAgNjMsIDExMSwgMjIsIDIsIDI1MiwgMjUsIDExMSwgMjIsIDIsIDI1MSwgNjksIDExMSwgMjIsIDIsIDI1MCwgMjMxLCAxMTEsIAotICAgIDIyLCAyLCAyNTAsIDIyMywgMTExLCAyMiwgMiwgNzgsIDExMSwgMjIsIDIsIDIyMCwgMTgsIDExMSwgMjIsIDIsIDIwNCwgMCwgCi0gICAgMTExLCAyMiwgMiwgMjA0LCAxNDQsIDExMSwgMjIsIDIsIDc0LCAxMTEsIDIyLCAyLCAyNDEsIDkyLCAxMTEsIDIyLCAyLCAKLSAgICAyNDEsIDc4LCAxMTEsIDIyLCAyLCAyMjAsIDcwLCAxMTEsIDIyLCAyLCA3NSwgMTExLCAyMiwgMiwgMjM1LCAxNzEsIDExMSwgCi0gICAgMjIsIDIsIDIzNSwgMTcwLCAxMTEsIDIyLCAyLCAyMzUsIDE2OSwgMTExLCAyMiwgMiwgMjMwLCAyMzQsIDExMSwgMjIsIDIsIAotICAgIDIzMSwgMTEwLCAxMTEsIDIyLCAyLCAyMzEsIDgzLCAxMTEsIDIyLCAyLCAyMzAsIDE5NywgMTExLCAyMiwgMiwgMjMxLCAyNCwgCi0gICAgMTExLCAyMiwgMiwgNjgsIDExMSwgMjIsIDIsIDIwNywgMzksIDExMSwgMjIsIDIsIDIwNywgMzgsIDExMSwgMjIsIDIsIAotICAgIDIwNywgMzcsIDExMSwgMjIsIDIsIDIwNiwgMTc4LCAxMTEsIDIyLCAyLCAyMDcsIDIxLCAxMTEsIDIyLCAyLCAyMDYsIDI0MSwgCi0gICAgMTExLCAyMiwgMiwgMjAzLCAxMjQsIDExMSwgMjIsIDIsIDIwMywgMTEsIDExMSwgMjIsIDIsIDI1MSwgMTA5LCAxMTEsIDIyLCAKLSAgICAyLCAyNTEsIDEwNSwgMTExLCAyMiwgMiwgMjQxLCAyMSwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjEsIDExMSwgMjIsIAotICAgIDIsIDI0MSwgMjgsIDExMSwgMjIsIDIsIDIxNSwgMTg5LCAyNDEsIDI4LCAxMTEsIDIyLCAyLCAyNTEsIDY0LCAxMTEsIDIyLCAKLSAgICAyLCAyNDEsIDE0NSwgMTExLCAyMiwgMiwgMjUwLCAzNCwgMTExLCAyMiwgMiwgMjE5LCAyMTYsIDExMSwgMjIsIDIsIDIyMywgCi0gICAgMTYzLCAxMTEsIDIyLCAyLCAyMjIsIDIwNSwgMTExLCAxNDMsIDIxNiwgMTYsIDExMSwgMTQzLCAyMDgsIDE0NSwgMjE2LCAKLSAgICAxNiwgMTExLCAxNDMsIDU1LCAxMTEsIDE0MywgNTYsIDExMSwgMSwgMjA4LCAxNTksIDExMSwgMSwgMjA4LCAxNTgsIDExMSwgCi0gICAgMSwgMjA4LCAxNTcsIDExMSwgMSwgMjA4LCAxNTYsIDExMSwgMSwgMjA4LCAxNTUsIDExMSwgMSwgMjA4LCAxNTQsIDExMSwgCi0gICAgMSwgMjA4LCAxNTMsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTYwLCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1OSwgMTExLCAKLSAgICAxLCAyMTYsIDEzMywgMjA4LCAxNTcsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU2LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIAotICAgIDE1NSwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTMsIDY3LCAxLCAyNTAsIDEyNiwgNzQsIDE3MiwgMSwgMjUwLCAxMjYsIAotICAgIDIwMywgNTIsIDEwMCwgMSwgMjM3LCAxNzEsIDEwMCwgMSwgMjAzLCAxOTYsIDEwMCwgMSwgMjE5LCAxODQsIDEwMCwgMSwgCi0gICAgMjEwLCA2OSwgMTAwLCAxLCAyNDAsIDE3NCwgMTAwLCAxLCAyMzAsIDU0LCAxMDAsIDEsIDE1OSwgMTAwLCAxLCAyNDksIAotICAgIDI1NSwgMTAwLCAxLCAyNDUsIDUxLCAxMDAsIDEsIDIwNiwgMTY0LCAxMDAsIDEsIDIzOSwgNzUsIDEwMCwgMSwgMTQ2LCAKLSAgICAxMDAsIDEsIDIxOSwgMTg1LCAyMjMsIDE2MywgMTAwLCAxLCAyNDUsIDUyLCAxOTQsIDEwMCwgMSwgMjQwLCAxNzUsIDIyMywgCi0gICAgMTYzLCAxMDAsIDEsIDIzMCwgNTUsIDIyNiwgMTg1LCAxMDAsIDEsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIwOSwgMTEwLCAKLSAgICAxMDAsIDEsIDIxMiwgNDUsIDI0NCwgMiwgMTAwLCAxLCAyNDQsIDIsIDEwMCwgMSwgMjI5LCA0OCwgMTAwLCAxLCAyMTIsIAotICAgIDQ1LCAyMzAsIDE4NCwgMTAwLCAxLCAyMzYsIDIyNSwgMTAwLCAxLCAyMjcsIDE2MiwgMTAwLCAxLCAyMTYsIDYyLCAxMDAsIAotICAgIDEsIDIyNiwgMTg1LCAxMDAsIDEsIDIyMywgMTYzLCAxMDAsIDEsIDIzMCwgMTg0LCAxMDAsIDEsIDE5NCwgMTAwLCAxLCAKLSAgICAyMjYsIDE4NiwgMjIzLCAxNjMsIDEwMCwgMSwgMjIzLCAxNjQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjYsIAotICAgIDE4NSwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDE4NCwgMTAwLCAxLCAyMjYsIDE4NiwgMywgMjQzLCA4NSwgMTAwLCAxLCAKLSAgICAyMjMsIDE2NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgCi0gICAgMTg3LCAyMzEsIDcsIDI1LCA1NSwgMTAwLCAxLCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDcwLCAKLSAgICA1NiwgMTAwLCAxLCAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDE5NCwgCi0gICAgMTAwLCAxLCAyMTUsIDk0LCAxOTQsIDEwMCwgMSwgMjI2LCAxODYsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIAotICAgIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCAKLSAgICAxODUsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjE1LCA5NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjMwLCAxODUsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjEwLCA2OSwgMTAwLCAxLCAKLSAgICAyMTUsIDk0LCAyMTAsIDcwLCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAxODQsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAKLSAgICAxODUsIDE0NiwgMTAwLCAxLCAyMTAsIDcwLCAxOTQsIDEwMCwgMSwgMjEwLCA3MCwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCi0gICAgMjA0LCAxNDQsIDEwMCwgMSwgMjA0LCA0MCwgMTAwLCAxLCAyMDQsIDE0NSwgMTQ2LCAxMDAsIDEsIDIxNSwgOTQsIDIyMywgCi0gICAgMTYzLCAxMDAsIDEsIDIxNSwgOTQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgNTUsIDIxNywgMSwgMTk0LCAxMDAsIDEsIAotICAgIDIzOSwgNzYsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgNTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NSwgCi0gICAgMTQ2LCAxMDAsIDEsIDYzLCAxMDAsIDEsIDIxMiwgNDUsIDIxOSwgMTk1LCAxMDAsIDEsIDIyMCwgOTcsIDEwMCwgMSwgNzgsIAotICAgIDEwMCwgMSwgMjUwLCAxNzYsIDEwMCwgMSwgNzUsIDEwMCwgMSwgNzQsIDEwMCwgMSwgMjMxLCAxMTAsIDEwMCwgMSwgMjEyLCAKLSAgICAyMjgsIDc1LCAxMDAsIDEsIDIwNywgMTcsIDEwMCwgMSwgMjQxLCAxNjEsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNDcsIAotICAgIDEwMCwgMSwgMjE1LCAyMDksIDc1LCAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgMTYxLCAxMDAsIDEsIDE2MywgNzUsIDEwMCwgMSwgCi0gICAgMjAzLCA1MiwgMTAwLCAxLCA2OCwgMTAwLCAxLCAyNDAsIDIzOCwgMTAwLCAxLCAyMDMsIDE0NywgMTAwLCAxLCAxMDYsIAotICAgIDIyMywgMTYzLCAxMDAsIDEsIDE2MywgNjgsIDEwMCwgMSwgMjE1LCAyMDksIDY4LCAxMDAsIDEsIDIwNywgMTgsIDEwMCwgMSwgCi0gICAgMjEyLCA0NSwgNjgsIDEwMCwgMSwgMjIwLCAxNSwgMTAwLCAxLCAyMTksIDE5NSwgMTAwLCAxLCAyMTksIDIxNiwgMTAwLCAxLCAKLSAgICAyMDQsIDExMSwgMTAwLCAxLCAyMDQsIDAsIDEwMCwgMSwgMjA0LCAzMCwgMTAwLCAxLCAyMDQsIDUzLCAxMDAsIDEsIDIwMywgCi0gICAgMjMwLCAxMDAsIDEsIDIyMywgNzIsIDY4LCAxMDAsIDEsIDIyMywgNzIsIDc4LCAxMDAsIDEsIDIyMywgNzIsIDc1LCAxMDAsIAotICAgIDEsIDIyMywgNzIsIDYzLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTgsIDIzNSwgMjUwLCAyNDcsIAotICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCA5MiwgMTAwLCAxLCAyMTIsIDQ1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTIsIDQ1LCAKLSAgICAyMjAsIDMxLCAxMDAsIDEsIDEyNSwgMjI2LCAxODUsIDEwMCwgMjUxLCA4OCwgNDksIDIzNiwgMTA2LCAyMTQsIDE3MiwgCi0gICAgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgMjM2LCAxMDYsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDUwLCAyMzYsIDEwNiwgCi0gICAgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMTI0LCA4MCwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjI0LCAxNTAsIDgwLCAKLSAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMzgsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMTQsIAotICAgIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMjcsIDIxMywgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgCi0gICAgMjA5LCAyMjYsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjA5LCAyNDgsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMTg4LCAKLSAgICAxMTMsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjM1LCAyMDYsIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIAotICAgIDIyNywgMTEzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTY1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAKLSAgICAyNTEsIDg4LCAxMzgsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAKLSAgICAxMzgsIDI0MywgODUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEzOCwgMjI3LCAxMTQsIAotICAgIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDQsIDc1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAKLSAgICAxMjQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwOCwgMjQ0LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMzcsIDI1MywgCi0gICAgMTAwLCAyNTEsIDg4LCAxMjQsIDE2MywgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTI0LCAyNDMsIDg1LCAxMDAsIDI1MSwgCi0gICAgODgsIDEyNCwgMjQ2LCA2MSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIyNywgMTE0LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA0LCAKLSAgICA3NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwNiwgMzgsIDEwMCwgMjUxLCA4OCwgMTI0LCA0NywgMTAwLCAyLCAxNTgsIDMsIAotICAgIDI0NSwgMTMwLCAxMDAsIDIwOSwgNjgsIDEsIDIxNCwgMTUwLCAxMDAsIDUyLCA4MiwgMTAwLCAyMTcsIDE3OSwgMjQ2LCAKLSAgICAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAKLSAgICAxNTgsIDI0NSwgMTkwLCAyMTksIDIwMSwgMjEyLCAyMTUsIDIzOSwgMTU4LCAxMjEsIDIxMSwgNzUsIDIxMiwgMjE1LCAyMzksIAotICAgIDE1OCwgMTEyLCAyMTEsIDc1LCA2MCwgMzEsIDE2LCAyMTcsIDE5NSwgNjAsIDMxLCAxNiwgMjQ0LCAxNDYsIDYwLCAzMSwgCi0gICAgMTYsIDIxOCwgMjM5LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDMsIAotICAgIDE3MSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDI0MywgMTcxLCA2MCwgCi0gICAgMzEsIDE2LCAyMjksIDIyMSwgNjAsIDMxLCAxNiwgMjEwLCA4NiwgNjAsIDMxLCAxNiwgMjE5LCA4MywgNjAsIDMxLCAxNiwgCi0gICAgMjAyLCAyMTksIDYwLCAzMSwgMTYsIDIwMiwgMjIwLCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjI4LCAyMjYsIDYwLCAzMSwgCi0gICAgMTYsIDI1MCwgMTcxLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjQwLCAyMDYsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMDksIAotICAgIDE2MywgNjAsIDMxLCAxNiwgMjI5LCAxNzYsIDYwLCAzMSwgMTYsIDI1MCwgMTYxLCA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgCi0gICAgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDIxMCwgOTMsIDYwLCAzMSwgMTYsIDIwOSwgNTAsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzgsIDIzLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE3LCAxOTQsIDYwLCAzMSwgCi0gICAgMTYsIDI0NiwgMTkwLCA2MCwgMzEsIDE2LCAyMDYsIDYyLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjUwLCAxMjQsIDYwLCAKLSAgICAzMSwgMTYsIDIyOSwgMTc4LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKLSAgICAyMTQsIDIxMCwgNjAsIDMxLCAxNiwgMjE5LCA3MywgNjAsIDMxLCAxNiwgMjExLCA4NCwgMjUwLCAxNjQsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgMTkxLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA2LCA3MiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNTksIDYwLCAzMSwgMTYsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIxNiwgNjksIAotICAgIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA4LCAyMTcsIDYwLCAzMSwgMTYsIDI1MCwgCi0gICAgMjI5LCA2MCwgMzEsIDE2LCAyMTQsIDE1MywgNjAsIDMxLCAxNiwgMjEwLCA5NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIxMCwgOTcsIDIyNCwgMjIxLCAyMTEsIDgyLCA2MCwgMzEsIDE2LCAyMTksIDE4NiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIwOSwgODYsIDYwLCAzMSwgMTYsIDIyNywgMjAwLCA2MCwgMzEsIDE2LCAyNDIsIDIsIDYwLCAzMSwgMTYsIDIwOCwgODcsIAotICAgIDYwLCAzMSwgMTYsIDIwOSwgMTM0LCA2MCwgMzEsIDE2LCAyMjgsIDIyOSwgNjAsIDMxLCAxNiwgMjUwLCAxNzEsIDI0MCwgCi0gICAgMjA2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzEsIDYyLCA2MCwgCi0gICAgMzEsIDE2LCAyMDgsIDU3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAyMjQsIDIwOCwgNTYsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgMTEsIDYwLCAzMSwgMTYsIDIxNywgMTk5LCA2MCwgMzEsIDE2LCAyMjksIDcsIDYwLCAzMSwgMTYsIDI0NiwgMTEwLCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE2LCAxNzcsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDI1MCwgMTI0LCA2MCwgMzEsIAotICAgIDE2LCAyMTksIDg0LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjM1LCAxNjAsIDYwLCAzMSwgMTYsIDIyMywgODIsIDYwLCAzMSwgCi0gICAgMTYsIDIxOCwgMjE3LCA2MCwgMzEsIDE2LCAyMjksIDgsIDI1MSwgOSwgNjAsIDMxLCAxNiwgMjA4LCA1NywgMjUxLCA5LCAKLSAgICA2MCwgMzEsIDE2LCAyMTEsIDU1LCA2MCwgMzEsIDE2LCAyMzcsIDI0MCwgNjAsIDMxLCAxNiwgMjMwLCAyMDYsIDIyMiwgCi0gICAgMjI2LCA2MCwgMzEsIDE2LCAyMjAsIDQyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDIyMiwgMjI2LCA2MCwgCi0gICAgMzEsIDE2LCAyMTgsIDIxNiwgNjAsIDMxLCAxNiwgMjI4LCAyNDgsIDYwLCAzMSwgMTYsIDIxOCwgMjE1LCA2MCwgMzEsIDE2LCAKLSAgICAyMjgsIDIyOCwgNjAsIDMxLCAxNiwgMjE5LCAxMiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgCi0gICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIyOSwgMTc4LCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIwMiwgMjE3LCAKLSAgICA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI1MCwgMTYzLCAyMTAsIDk0LCAyMjIsIDIyNiwgCi0gICAgNjAsIDMxLCAxNiwgMjAyLCAyMTgsIDYwLCAzMSwgMTYsIDIyOCwgMjI3LCA2MCwgMzEsIDE2LCAyNDEsIDEyMSwgNjAsIDMxLCAKLSAgICAxNiwgMjQ2LCAxOTEsIDYwLCAzMSwgMTYsIDIyNCwgMTIyLCAyMzAsIDIwNSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjIyLCAKLSAgICAyMjYsIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE3LCAyMDAsIDIyMiwgMjI2LCA2MCwgCi0gICAgMzEsIDE2LCAyMjAsIDM4LCA2MCwgMzEsIDE2LCAyNTAsIDE4OSwgNjAsIDMxLCAxNiwgMjI2LCAxOTUsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgODQsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIAotICAgIDIxOSwgODUsIDYwLCAzMSwgMTYsIDIyOCwgMTM1LCA2MCwgMzEsIDE2LCAyNTAsIDE5MCwgNjAsIDMxLCAxNiwgMjA4LCA1NywgCi0gICAgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgMTI0LCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyMjIsIDIyNiwgNjAsIDMxLCAKLSAgICAxNiwgMjEwLCA4NywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDEsIDQzLCA2MCwgMzEsIAotICAgIDE2LCAyMTQsIDE1NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwMywgMTYzLCAyMjksIDM4LCA2MCwgMzEsIDE2LCAyMDgsIAotICAgIDU0LCA2MCwgMzEsIDE2LCAyMTcsIDIwMSwgNjAsIDMxLCAxNiwgMjA4LCA1OCwgNjAsIDMxLCAxNiwgMjA4LCA1NSwgNjAsIAotICAgIDMxLCAxNiwgMjE3LCAxOTgsIDYwLCAzMSwgMTYsIDIwOCwgNTMsIDYwLCAzMSwgMTYsIDIxNywgMTk3LCA2MCwgMzEsIDE2LCAKLSAgICAyMzgsIDIyLCA2MCwgMzEsIDE2LCAyNTAsIDExNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIDI1MCwgMTE2LCA2MCwgMzEsIAotICAgIDE2LCAyMTksIDE4NiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwOSwgODUsIDI0MSwgMSwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgCi0gICAgMjQwLCAyMDUsIDYwLCAzMSwgMTYsIDIwOSwgODcsIDI1MCwgMTY2LCA2MCwgMzEsIDE2LCAyMDksIDc5LCAyMzAsIDE5LCAKLSAgICAyNTAsIDE1OCwgNjAsIDMxLCAxNiwgMjI5LCAyMjMsIDYwLCAzMSwgMTYsIDI0MSwgODAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIAotICAgIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMDMsIDE0LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjExLCA4MywgNjAsIDMxLCAxNiwgCi0gICAgMjI5LCAzOSwgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjIyLCAyMjYsIAotICAgIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjcsIDYwLCAzMSwgMTYsIDI0MywgCi0gICAgMTcxLCA2MCwgMzEsIDE2LCAyMDgsIDY4LCA2MCwgMzEsIDE2LCAyMDksIDEyNSwgNjAsIDMxLCAxNiwgMjI4LCAyNTIsIDYwLCAKLSAgICAzMSwgMTYsIDIyNywgMjA1LCAyNDEsIDczLCAyNDYsIDEwMCwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDI0MiwgMywgMjQ2LCAKLSAgICAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMDgsIDcxLCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOSwgCi0gICAgMTM2LCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIzMSwgNTcsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMzgsIAotICAgIDIzLCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI1MCwgMTEyLCA2MCwgMzEsIAotICAgIDE2LCAyMzgsIDIzLCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDI0MywgMTk2LCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgCi0gICAgMjE5LCA3NCwgMjUwLCAxMTMsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjUwLCAxMTMsIAotICAgIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjQ0LCA2LCA2MCwgMzEsIDE2LCAyMDgsIDc2LCA2MCwgCi0gICAgMzEsIDE2LCAyNTAsIDExNywgNjAsIDMxLCAxNiwgMjMxLCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTksIDYwLCAzMSwgMTYsIAotICAgIDI1MSwgNzUsIDIxOCwgNTIsIDI1MCwgMTE4LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyNTAsIDExNSwgNjAsIDMxLCAxNiwgCi0gICAgMjUxLCA3NSwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIyNCwgMjE1LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAKLSAgICAyMjQsIDIyNiwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyMSwgNjAsIAotICAgIDMxLCAxNiwgMjUxLCA3NSwgMjE4LCA1MiwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDcsIDIzNSwgCi0gICAgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyNTEsIDExLCAyMTcsIDIwNywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgCi0gICAgODQsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAKLSAgICAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNjMsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMDgsIDc3LCA2MCwgMzEsIAotICAgIDE2LCAyMjUsIDg0LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMjcsIDIwOSwgCi0gICAgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIyNywgMjA5LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCi0gICAgMjE4LCA5NSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzMCwgMjEzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIAotICAgIDI1MCwgMTYzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIDI0MCwgODAsIDIwOSwgMTI3LCA2MCwgMzEsIDE2LCAKLSAgICAyNDAsIDgwLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDgwLCAyNDMsIDIwMiwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCi0gICAgMjA2LCA2NiwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIxNywgMjA2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgCi0gICAgMjI1LCA4NCwgMjE4LCA5NSwgMjA5LCAxMzAsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzgsIDE5LCAyMjMsIDE2NCwgMjUwLCAKLSAgICAxNjYsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNDMsIDE3MCwgNjAsIDMxLCAxNiwgMjQxLCA5MCwgMjMwLCAKLSAgICAxOSwgMjM5LCAxMTAsIDIwNSwgMTcxLCA2MCwgMzEsIDE2LCAyMzEsIDYzLCA2MCwgMzEsIDE2LCAyMzEsIDYxLCA2MCwgMzEsIAotICAgIDE2LCAyMzksIDExMCwgMjUwLCAxMjUsIDI0NCwgNCwgMjM1LCAxNTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgCi0gICAgMTg1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMywgODIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjMsIAotICAgIDc3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAKLSAgICAxMTAsIDIxMiwgNjQsIDI0MywgMjE2LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjksIAotICAgIDIwMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMDIsIDE3LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAKLSAgICAyMTcsIDIyMiwgMTAxLCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjIsIDEwMSwgMjUwLCAKLSAgICAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMzksIAotICAgIDExMCwgMjI1LCAxMjgsIDI0NiwgMTAyLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDI3LCAyMTIsIDY0LCAyNDYsIDEwMiwgCi0gICAgMjA2LCA2NSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMTAsIDk4LCA2MCwgMzEsIDE2LCAKLSAgICAyMzksIDExMCwgMjIyLCAyMjksIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMDEsIDI0MSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIAotICAgIDIyOSwgMzcsIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMTEsIDIxOSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIzNSwgMjA2LCAKLSAgICAyMDMsIDEzLCAyMDksIDEzMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MSwgOTEsIDI1MCwgMTkxLCA2MCwgMzEsIDE2LCAKLSAgICAyMDMsIDEzLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIAotICAgIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIAotICAgIDI0MywgMjEwLCAyMjQsIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNDMsIDE5MywgCi0gICAgMjQwLCAyMTgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAKLSAgICAzMSwgMTYsIDIwMywgMTMsIDI1MCwgMTY4LCAyNDIsIDMsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyMjQsIAotICAgIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDI0MywgMTkzLCAyNDAsIDIxOCwgMjQzLCAKLSAgICAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIwOCwgNzQsIDIyMCwgNDgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMzgsIAotICAgIDE3NSwgMjQzLCAyMDksIDYwLCAzMSwgMTYsIDIzOCwgMTc1LCAyMDMsIDEyLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAKLSAgICAxNjgsIDIyNCwgMTIzLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAxNjgsIDIyNCwgMjU1LCA2MCwgMzEsIDE2LCAyNDMsIAotICAgIDIxOCwgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyMDksIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKLSAgICA3NywgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKLSAgICA3OCwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDIwOSwgMTIzLCA2MCwgMzEsIDE2LCAyMTIsIAotICAgIDEzMCwgMjUwLCA4OCwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIAotICAgIDEzMCwgMjUwLCA4OSwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDIwOSwgMTIzLCA2MCwgMzEsIAotICAgIDE2LCAyNDMsIDE5NCwgMjM4LCAxNTYsIDYwLCAzMSwgMTYsIDI0MywgMjAxLCAyMTksIDIxNiwgNjAsIDMxLCAxNiwgMjExLCAKLSAgICA3MSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDE4NSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwNSwgMTcxLCA2MCwgMzEsIAotICAgIDE2LCAyNTAsIDEwOSwgMjM5LCA4LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDI1MCwgCi0gICAgMTA5LCAyMjksIDIwMSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMjIsIAotICAgIDEwMCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgCi0gICAgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAKLSAgICAxNzgsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAzOSwgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMjMsIDIyMiwgMjI3LCAyMjksIDIyMCwgMzEsIDE2LCAyMTIsIDEyMCwgMjQ4LCAyMjYsIDMxLCAxNiwgNTIsIDI0OCwgMjI2LCAKLSAgICAzMSwgMTYsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyMTYsIDc0LCA0NiwgMjQ4LCAyMjYsIDMxLCAxNiwgMjQ0LCAxNDMsIAotICAgIDI0OCwgMjI2LCAzMSwgMTYsIDIxMiwgMjI4LCAyNDgsIDIyNiwgMzEsIDE2LCA0OSwgMjE2LCAxMDEsIDU0LCAzMSwgMTYsIAotICAgIDUwLCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgMjE2LCAxMDEsIDI0MywgODMsIDMxLCAxNiwgMjQ0LCAxODUsIDIxNCwgMTU3LCAKLSAgICAzMSwgMTYsIDI0NCwgMjEzLCAyNDcsIDQ1LCAzMSwgMTYsIDIxNCwgMTU3LCAzMSwgMTYsIDI0NSwgMjUwLCAzMSwgMTYsIAotICAgIDIxNiwgOTksIDI0MCwgMTUsIDMxLCAxNiwgMjE2LCA5OSwgMjQwLCAxNCwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDEzLCAzMSwgCi0gICAgMTYsIDI0MCwgMzYsIDMxLCAxNiwgMjQwLCAzNywgNTYsIDMxLCAxNiwgMjQ3LCAyMTYsIDgyLCAzMSwgMTYsIDI0NywgODIsIAotICAgIDMxLCAxNiwgMjQ3LCAyMjgsIDMxLCAxNiwgMTU1LCAzMSwgMTYsIDIyMCwgMjgsIDIxMSwgMTAyLCAzMSwgMTYsIDIwNywgCi0gICAgMTMzLCAyMTEsIDEwMiwgMzEsIDE2LCAyMDksIDI5LCAyMTEsIDEwMiwgMzEsIDE2LCAyMzksIDE0NiwgMjExLCAxMDIsIDMxLCAKLSAgICAxNiwgMjM5LCAyMzIsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODcsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODUsIDIzOSwgCi0gICAgMTI3LCAzMSwgMTYsIDIzOSwgMTQ0LCAyMzksIDEyNywgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMwLCAzMSwgMTYsIDIzOSwgCi0gICAgNzYsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjM5LCA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI0OCwgCi0gICAgMjExLCAzMSwgMTYsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgCi0gICAgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjUxLCAwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKLSAgICAyMTEsIDMxLCAxNiwgMjQyLCA0NywgMjQ2LCAyOSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI4LCAzMSwgMTYsIDIyMywgCi0gICAgMjI2LCAyMjUsIDE5LCAyMTYsIDg1LCAzMSwgMTYsIDUyLCAyMTMsIDU2LCAzMSwgMTYsIDUyLCAyMzksIDIxNiwgMzEsIDE2LCAKLSAgICAyMzksIDIxNywgMjA2LCAyMjQsIDMxLCAxNiwgMjM5LCAyMTcsIDI0MiwgNzAsIDMxLCAxNiwgMjIzLCA2NiwgMjA2LCAyMjQsIAotICAgIDMxLCAxNiwgMjIzLCA2NiwgMjQyLCA3MCwgMzEsIDE2LCAyMTMsIDU3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTMsIDU3LCAKLSAgICAyNDIsIDcwLCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjEzLCA1NiwgMzEsIDE2LCAyMTcsIDU2LCAxNDMsIDIzOSwgMjE2LCAKLSAgICAzMSwgMTYsIDI0NSwgMjMwLCAyMDgsIDIyMSwgMzEsIDE2LCAyNDUsIDc4LCAyMDgsIDIyMSwgMzEsIDE2LCAyMTksIDIxOCwgCi0gICAgMjUxLCAwLCAzMSwgMTYsIDIxOSwgMjE4LCAyNDgsIDIxMSwgMzEsIDE2LCAyMTcsIDM3LCAyNTEsIDAsIDMxLCAxNiwgMjE3LCAKLSAgICAzNywgMjQ4LCAyMTEsIDMxLCAxNiwgMjIzLCAyMjksIDIxNiwgODUsIDMxLCAxNiwgMjA0LCAzMSwgMjE2LCA4NSwgMzEsIAotICAgIDE2LCAxNjIsIDIxNiwgODUsIDMxLCAxNiwgMjE3LCA1NiwgMjE2LCA4NSwgMzEsIDE2LCAyNDEsIDEzOSwgMjE2LCA4NSwgCi0gICAgMzEsIDE2LCAyMTIsIDgxLCAyMTYsIDg1LCAzMSwgMTYsIDIwOSwgNTEsIDIxNiwgODUsIDMxLCAxNiwgMjEyLCA3MywgMjE2LCAKLSAgICA4NSwgMzEsIDE2LCAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMTYsIDg1LCAzMSwgMTYsIDIwMywgMTk3LCAyMjEsIDE1NiwgCi0gICAgMzEsIDE2LCA5MSwgMjIxLCAxNTYsIDMxLCAxNiwgMjQ2LCA2MiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAzMSwgMTYsIDUxLCAKLSAgICAyMjEsIDE1NywgMjA0LCAzMywgMzEsIDE2LCA1MSwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAKLSAgICAxNTcsIDExMiwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgCi0gICAgODYsIDIyMSwgMTU3LCA0OSwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNDksIDI0OCwgNDMsIDMxLCAKLSAgICAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA1MCwgMjQ4LCAKLSAgICA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAKLSAgICAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCAKLSAgICA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAKLSAgICAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4MywgMjIxLCAxNTcsIDEyMSwgMjA0LCAzMywgCi0gICAgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyNDgsIDQzLCAzMSwgMTYsIDIxOSwgNzcsIDIyMSwgMTU2LCAzMSwgCi0gICAgMTYsIDIwNSwgMTgzLCAyMjEsIDE1NiwgMzEsIDE2LCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMjEsIDQ5LCAyMjEsIAotICAgIDE1NiwgMzEsIDE2LCAyNDYsIDEsIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDI0OCwgCi0gICAgNDMsIDMxLCAxNiwgMjQ3LCAyMTQsIDMxLCAxNiwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgMTYyLCAyMjEsIDE2MCwgCi0gICAgMzEsIDE2LCAyMTcsIDU2LCAyMjEsIDE2MCwgMzEsIDE2LCAyNDEsIDEzOSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA4MSwgCi0gICAgMjIxLCAxNjAsIDMxLCAxNiwgMjA5LCA1MSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA3MywgMjIxLCAxNjAsIDMxLCAxNiwgCi0gICAgMTE4LCAyMzYsIDEyLCAyMDcsIDE0OSwgMjIxLCAxNjAsIDMxLCAxNiwgMzksIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIxMSwgCi0gICAgMTg0LCAyMTEsIDc3LCAzMSwgMTYsIDM5LCAyMDgsIDk0LCAzMSwgMTYsIDM5LCAyMDgsIDkzLCAzMSwgMTYsIDM5LCAyMDgsIAotICAgIDkyLCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5NCwgMzEsIDE2LCAyNDAsIDAsIDIwOCwgOTMsIDMxLCAxNiwgMjQwLCAwLCAKLSAgICAyMDgsIDkyLCAzMSwgMTYsIDM5LCAyNTAsIDMxLCAyNDMsIDg1LCAzMSwgMTYsIDM5LCAyMzksIDIyNCwgMzEsIDE2LCAzOSwgCi0gICAgMjM5LCAyMjMsIDMxLCAxNiwgMzksIDIzOSwgMjIyLCAzMSwgMTYsIDM5LCAyMzksIDIyMSwgMzEsIDE2LCAzOSwgMjM5LCAKLSAgICAyMjAsIDMxLCAxNiwgMjQ4LCAxNDIsIDI0OCwgMTU5LCAzMSwgMTYsIDI0MSwgODQsIDI0OCwgMTU5LCAzMSwgMTYsIDI0OCwgCi0gICAgMTQyLCAyMDgsIDI1MCwgMzEsIDE2LCAyNDEsIDg0LCAyMDgsIDI1MCwgMzEsIDE2LCAyNDgsIDE0MiwgMjEyLCAzNywgMzEsIAotICAgIDE2LCAyNDEsIDg0LCAyMTIsIDM3LCAzMSwgMTYsIDI0OCwgMTQyLCAyMTgsIDE3NCwgMzEsIDE2LCAyNDEsIDg0LCAyMTgsIAotICAgIDE3NCwgMzEsIDE2LCAzOSwgMjUxLCAxMzgsIDMxLCAxNiwgMzksIDIxMSwgMTA1LCAzMSwgMTYsIDM5LCAyMDksIDE0MCwgCi0gICAgMzEsIDE2LCAzOSwgMjExLCAxMDYsIDMxLCAxNiwgMzksIDIyNSwgOTYsIDMxLCAxNiwgMzksIDIyNSwgOTUsIDMxLCAxNiwgCi0gICAgMzksIDI1MSwgMTM3LCAzMSwgMTYsIDM5LCAyMjcsIDIsIDMxLCAxNiwgMjUwLCAxMDAsIDIwNiwgMjI0LCAzMSwgMTYsIAotICAgIDI1MCwgMTAwLCAyNDIsIDcwLCAzMSwgMTYsIDM5LCAyNDMsIDEwMCwgMzEsIDE2LCAzOSwgMjE1LCAyNDksIDMxLCAxNiwgCi0gICAgMzksIDIzOSwgMjA2LCAzMSwgMTYsIDM5LCAyMTIsIDMzLCAzMSwgMTYsIDM5LCAyNDgsIDEyMCwgMzEsIDE2LCAzOSwgNTIsIAotICAgIDIwOCwgMTUwLCAzMSwgMTYsIDM5LCAyMDgsIDcwLCAyMDgsIDE1MCwgMzEsIDE2LCAyMTUsIDI1NCwgMzEsIDE2LCAyMTEsIAotICAgIDAsIDMxLCAxNiwgMjAyLCAxNTksIDMxLCAxNiwgMjE4LCAxNjYsIDMxLCAxNiwgMjI0LCAyMDYsIDMxLCAxNiwgMjM5LCAKLSAgICAxNTUsIDMxLCAxNiwgMjQ1LCAxNDAsIDMxLCAxNiwgMjQ0LCA2MiwgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjEyLCAKLSAgICA1NywgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjIxLCAxOTIsIDIxMiwgNTcsIDMxLCAxNiwgMjA4LCAxMjAsIDMxLCAKLSAgICAxNiwgMjA3LCAxNzUsIDMxLCAxNiwgMjMwLCAyMzksIDIwNywgMTc1LCAzMSwgMTYsIDIwNywgMTc2LCAyMTIsIDU3LCAzMSwgCi0gICAgMTYsIDIwNywgMTc2LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAzMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKLSAgICAyOCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNywgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNiwgMzEsIDE2LCAyMTksIAotICAgIDIzNCwgMjExLCAyNSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMywgMzEsIAotICAgIDE2LCAyMTksIDIzNCwgMjExLCAyMiwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKLSAgICAzMCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyOSwgMzEsIDE2LCAyMzcsIDc1LCAzMSwgMTYsIDIyMiwgMjM4LCAzMSwgMTYsIAotICAgIDI0MSwgODQsIDc2LCAyMTEsIDY3LCAzMSwgMTYsIDI0NCwgNTUsIDIxMiwgNTcsIDMxLCAxNiwgMzksIDEyMSwgMjQ3LCAKLSAgICAyNDAsIDMxLCAxNiwgMzksIDExMiwgMjQ3LCAyNDAsIDMxLCAxNiwgMzksIDIzNywgODgsIDMxLCAxNiwgMzksIDIxMiwgMjMsIAotICAgIDIxOCwgOTksIDMxLCAxNiwgMjE5LCAyOCwgODIsIDMxLCAxNiwgMjE5LCAyOCwgMTEyLCA4MiwgMzEsIDE2LCAxNjIsIDIxOSwgCi0gICAgMjgsIDgyLCAzMSwgMTYsIDIzOCwgNDcsIDIwNiwgMjI0LCAzMSwgMTYsIDIzOCwgNDcsIDI0MiwgNzAsIDMxLCAxNiwgMywgCi0gICAgMjM5LCAyNTUsIDMxLCAxNiwgMjQ0LCAxNjgsIDMxLCAxNiwgMjQ0LCAxNjksIDI1MSwgMTQsIDMxLCAxNiwgMjI1LCA2NSwgCi0gICAgMzEsIDE2LCAyMjcsIDIwLCAzMSwgMTYsIDI0NywgMjExLCAzMSwgMTYsIDIxMywgMTQ3LCAyMDQsIDMzLCAzMSwgMTYsIAotICAgIDIxMywgMTQ3LCAyNDgsIDQzLCAzMSwgMTYsIDIyNCwgMTA2LCAzMSwgMTYsIDIyNCwgMTA3LCAyNDgsIDQzLCAzMSwgMTYsIAotICAgIDIxMywgMTQxLCAyMDQsIDMzLCAzMSwgMTYsIDIxMywgMTQxLCAyNDgsIDQzLCAzMSwgMTYsIDIzOSwgOTMsIDIwNCwgMzMsIAotICAgIDMxLCAxNiwgMjM5LCA5MywgMjQ4LCA0MywgMzEsIDE2LCAyMjcsIDIxLCAyMTgsIDI0NCwgMjE2LCA4NSwgMzEsIDE2LCAKLSAgICAyMjcsIDIxLCAyMzEsIDU0LCAyMTYsIDg1LCAzMSwgMTYsIDI0NywgMjEyLCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQ3LCAKLSAgICAyMTYsIDg1LCAzMSwgMTYsIDIyNCwgMTA3LCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQxLCAyMTYsIDg1LCAzMSwgMTYsIAotICAgIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMTgsIDI0MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAKLSAgICAyNDIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAyNDIsIDI0NSwgMTA0LCAKLSAgICAyMTcsIDIxNiwgMjE4LCAyNDQsIDI0MywgMTgxLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAKLSAgICAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTMsIAotICAgIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODEsIDMxLCAxNiwgCi0gICAgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODAsIDMxLCAxNiwgMjA5LCAKLSAgICAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxNzksIDMxLCAxNiwgMjQ1LCAxMzMsIAotICAgIDMxLCAxNiwgMjM3LCAyNDMsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDIzNywgMjQzLCAyNDAsIDE3NSwgMjQ2LCAzMCwgCi0gICAgMzEsIDE2LCA1MSwgMjQ5LCAyNTUsIDMxLCAxNiwgMjA1LCAyMDMsIDMxLCAxNiwgMjE4LCA2NiwgMzEsIDE2LCAyNDYsIDIxLCAKLSAgICAzMSwgMTYsIDIxNCwgMjAwLCAzMSwgMTYsIDI0NiwgMjUsIDMxLCAxNiwgMjA4LCAxMzgsIDMxLCAxNiwgMjE4LCAzNiwgMzEsIAotICAgIDE2LCAyMTgsIDM3LCAyMzksIDIwOSwgMzEsIDE2LCAyMTQsIDIwMSwgMjM5LCAyMDksIDMxLCAxNiwgMjA4LCAxMzksIDIxNiwgCi0gICAgODIsIDMxLCAxNiwgMjE4LCAyMjUsIDIxMCwgMjQ3LCAzMSwgMTYsIDIyOSwgOTAsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgCi0gICAgMTYsIDIyOSwgOTAsIDI0MSwgODQsIDc2LCAyMTgsIDE1OSwgMzEsIDE2LCAyMjksIDkwLCA0NiwgMjIxLCAxNjAsIDMxLCAKLSAgICAxNiwgMjI5LCA5MCwgMjE2LCAxNTAsIDgyLCAzMSwgMTYsIDIyOSwgOTAsIDIwNCwgMzEsIDIyMSwgMTYwLCAzMSwgMTYsIAotICAgIDIyOSwgOTAsIDE2MiwgMjIxLCAxNjAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDI0MiwgCi0gICAgNzAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgCi0gICAgOTAsIDI0MSwgMTM5LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCA3MCwgMzEsIDE2LCAyMjksIDkwLCAyNDEsIDEzOSwgMjIxLCAKLSAgICAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgOTAsIDIzOSwgMjE3LCA1NCwgMzAsIDIwNSwgMTg4LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEyNywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTEyLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDUsIAotICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwMywgMzAsIAotICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ2LCAzMCwgMjA1LCAKLSAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDQsIDMwLCAyMDUsIDE4OCwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTQzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0MiwgMzAsIDIwNSwgMTg4LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQwLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEzOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTM2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzQsIAotICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzMiwgMzAsIAotICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTEwLCAzMCwgMjA1LCAKLSAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDgsIDMwLCAyMDUsIDE4OCwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTA3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEzNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTIsIAotICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjMxLCAKLSAgICA1LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIzMSwgNSwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTQ0LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIAotICAgIDE0MCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTM5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAKLSAgICAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgMjMxLCA1LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxMzEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTI5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNiwgCi0gICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjQsIDMwLCAyMzEsIAotICAgIDUsIDIyMSwgMTY0LCAyMTAsIDEyMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIyLCAzMCwgMjMxLCA1LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxMjEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTE4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNiwgMzAsIAotICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTQsIDMwLCAyMzEsIDUsIAotICAgIDIyMSwgMTY0LCAyMTAsIDExMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTExLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMTAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA4LCAKLSAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDcsIDM5LCAzMCwgMzEsIDIwOCwgNjYsIDM5LCAzMCwgMzEsIDIwOSwgCi0gICAgMTI0LCAzOSwgMzAsIDMxLCAyMTgsIDI1MywgMzAsIDMxLCAyMjcsIDIwNCwgMjI0LCA0NSwgMzUsIDI0MSwgMTc5LCAyNDMsIAotICAgIDE5NSwgMzUsIDIzNywgNTAsIDI0MSwgMTc5LCAyNDMsIDE5NSwgMzUsIDIzNiwgMTYsIDI0MSwgMTc5LCAyNDMsIDE5NSwgCi0gICAgMzUsIDI0MSwgMTc4LCAyMzcsIDUxLCAyNDMsIDE5NSwgMzUsIDI0MSwgMTc4LCAyMzYsIDE1LCAyNDMsIDE5NSwgMzUsIAotICAgIDI0MSwgMTc5LCAyMDksIDEyNiwgMzUsIDI0NiwgMjE3LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAyLCAyNDYsIDYxLCAyMDksIAotICAgIDEyNiwgMzUsIDIyNCwgOTgsIDIwOSwgMTI2LCAzNSwgMjQ4LCAyMjEsIDIwOSwgMTI2LCAzNSwgMjI5LCAxOTUsIDIxMiwgCi0gICAgMzYsIDIwOSwgMTI2LCAzNSwgMjQ1LCAxODUsIDIwOSwgMTI2LCAzNSwgMjUwLCA3NywgMjA5LCAxMjYsIDM1LCAyMTksIAotICAgIDI1MCwgMjA5LCAxMjYsIDM1LCAyNDcsIDIyMSwgMjE5LCAyMTEsIDIwOSwgMTI2LCAzNSwgMjQ0LCA1NywgMjE5LCAyNDUsIAotICAgIDI0MywgMTQ4LCAyMDksIDEyNiwgMzUsIDI0MywgMTQ1LCAyMDksIDEyNiwgMzUsIDIwMiwgMjI1LCAyMDksIDEyNiwgMzUsIAotICAgIDIzMSwgNDAsIDIwOSwgMTI2LCAzNSwgMjE5LCA3LCAyMDksIDEyNiwgMzUsIDIxNiwgMTU3LCAyMDksIDEyNiwgMzUsIDI0NSwgCi0gICAgMTk3LCAyMDksIDEyNiwgMzUsIDIzNiwgMTI3LCAyNDksIDI1LCAyMDksIDEyNiwgMzUsIDIwNCwgMTAzLCAyMDksIDEyNiwgCi0gICAgMzUsIDIzOSwgMTgxLCAyMDksIDEyNiwgMzUsIDI1MSwgMTEyLCAyMDksIDEyNiwgMzUsIDIxNiwgMTE0LCAyMDksIDEyNiwgCi0gICAgMzUsIDIxNiwgODksIDIwOSwgMTI2LCAzNSwgMjQxLCAxNzcsIDIwOSwgMTI2LCAzNSwgMjMwLCA4NSwgMjA5LCAxMjYsIDM1LCAKLSAgICAyNDUsIDE5MiwgMjA5LCAxMjYsIDM1LCAyNDEsIDgzLCAyMDksIDEyNiwgMzUsIDI0MiwgMTUsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjQ2LCAxODYsIDIwOSwgMTI2LCAzNSwgMjQ0LCA2NywgMjA5LCAxMjYsIDM1LCAyNiwgMjE2LCA4OCwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMTksIDE2MCwgMjA5LCAxMjYsIDM1LCAyMjcsIDIwOCwgMjA5LCAxMjYsIDM1LCAyNDYsIDE0LCAyMDksIDEyNiwgMzUsIAotICAgIDIyOSwgODAsIDIwOSwgMTI2LCAzNSwgMjM4LCAyMTQsIDIwOSwgMTI2LCAzNSwgMjExLCA0MywgMjA5LCAxMjYsIDM1LCAKLSAgICAyMTcsIDE2OCwgMjA5LCAxMjYsIDM1LCAyMzksIDEwMSwgMjA5LCAxMjYsIDM1LCAyMTYsIDkwLCAyMDksIDEyNiwgMzUsIAotICAgIDIyNywgMjQ3LCAyMTksIDI0NSwgMjI0LCA3OCwgMjA5LCAxMjYsIDM1LCAyMTYsIDg2LCAyMDksIDEyNiwgMzUsIDIzOCwgCi0gICAgMzMsIDIwOCwgMTczLCAyMjUsIDMsIDIwOSwgMTI2LCAzNSwgMjQxLCA4NSwgMjA5LCAxMjYsIDM1LCAyMTEsIDU2LCAyMDksIAotICAgIDEyNiwgMzUsIDIzNywgMjQ1LCAyMDksIDEyNiwgMzUsIDI0MSwgNzYsIDIwOSwgMTI2LCAzNSwgMjE5LCA1MCwgMjA5LCAKLSAgICAxMjYsIDM1LCAyMTUsIDI0MiwgMjA5LCAxMjYsIDM1LCAyMzksIDIwNywgMjA5LCAxMjYsIDM1LCAyMDYsIDY0LCAyMTksIAotICAgIDI0NSwgMjA0LCA4NCwgMjA5LCAxMjYsIDM1LCAyNDUsIDIwMiwgMjA5LCAxMjYsIDM1LCAyMjUsIDE4LCAyMDksIDEyNiwgCi0gICAgMzUsIDI0MCwgMjQ1LCAyMDksIDEyNiwgMzUsIDIwNiwgMjM0LCAyMDksIDEyNiwgMzUsIDI0MywgMTgyLCAyMDksIDEyNiwgCi0gICAgMzUsIDI0NiwgMTYsIDIyNCwgNywgMjA5LCAxMjYsIDM1LCAyMzcsIDIyMiwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNSwgMjMxLCAKLSAgICA0OSwgMjA5LCAxMjYsIDM1LCAyMjUsIDczLCAyMDksIDEyNiwgMzUsIDI1MSwgMTMzLCAyMDksIDEyNiwgMzUsIDI0MSwgCi0gICAgMTAxLCAyMDksIDEyNiwgMzUsIDI0MiwgNzQsIDIwOSwgMTI2LCAzNSwgMjA0LCA4MiwgMjA5LCAxMjYsIDM1LCAyMTIsIAotICAgIDExNSwgMjA5LCAxMjYsIDM1LCAyMzEsIDE0LCAyMDksIDEyNiwgMzUsIDI0NCwgMjUsIDIwOSwgMTI2LCAzNSwgMjQ0LCAKLSAgICAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNzgsIDIwOSwgMTI2LCAzNSwgMjQwLCAyMDksIDIwOSwgMTI2LCAzNSwgMjEzLCAKLSAgICAxMDQsIDIwOSwgMTI2LCAzNSwgMjExLCA2MCwgMjA5LCAxMjYsIDM1LCAyMzcsIDkwLCAyMDksIDEyNiwgMzUsIDI0NSwgCi0gICAgMjI2LCAyMDksIDEyNiwgMzUsIDI0NiwgMTEsIDIwOSwgMTI2LCAzNSwgMjQwLCA4NywgMjA5LCAxMjYsIDM1LCAyNTEsIDc2LCAKLSAgICAyMDksIDEyNiwgMzUsIDI0NSwgMjI1LCAyMDksIDEyNiwgMzUsIDIyMCwgMzIsIDIwOSwgOTMsIDIwNiwgNDEsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjQzLCAyMDQsIDIwOSwgMTI2LCAzNSwgMjI4LCAxMDEsIDIwOSwgMTI2LCAzNSwgMjM5LCAxNTAsIDI0NSwgCi0gICAgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDgsIAotICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAKLSAgICAxNDksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIAotICAgIDE3LCAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAKLSAgICAyMDYsIDIzNiwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIyMiwgNjMsIDI0NSwgMTUzLCAKLSAgICAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDgsIDI0NSwgCi0gICAgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDksIAotICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAKLSAgICAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIAotICAgIDE0OCwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIyMiwgNjMsIDEzLCAyNiwgNiwgNjMsIAotICAgIDEzLCAyNiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgNiwgMjQ1LCA1MSwgMTMsIDI2LCA2LCAKLSAgICA3NCwgMTMsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCA2LCAyMzksIDc1LCAxMywgMjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIAotICAgIDYsIDc1LCAxMywgMjYsIDYsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgNiwgMTU5LCAxMywgMjYsIAotICAgIDYsIDIyNiwgMTg1LCAxMywgMjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDYsIDc4LCAxMywgMjYsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDYsIDE0NiwgMTMsIDI2LCA2LCAxOTQsIDEzLCAyNiwgNiwgMjEwLCA2OSwgMTMsIAotICAgIDI2LCA2LCA2OCwgMTMsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCA2LCAyMDMsIDE5NiwgCi0gICAgMTMsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCA1LCA2MywgMTMsIDI2LCA1LCAyNDksIAotICAgIDI1NSwgMTMsIDI2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCA1LCAyNDUsIDUxLCAxMywgMjYsIDUsIDc0LCAxMywgMjYsIDUsIAotICAgIDI0MCwgMTc0LCAxMywgMjYsIDUsIDIzOSwgNzUsIDEzLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCAyNiwgNSwgNzUsIDEzLCAyNiwgCi0gICAgNSwgMjMwLCAxODQsIDEzLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDI2LCA1LCAxNTksIDEzLCAyNiwgNSwgMjI2LCAxODUsIDEzLCAKLSAgICAyNiwgNSwgMjIzLCAxNjMsIDEzLCAyNiwgNSwgNzgsIDEzLCAyNiwgNSwgMjE5LCAxODQsIDEzLCAyNiwgNSwgMjE3LCAxMzQsIAotICAgIDEzLCAyNiwgNSwgMTQ2LCAxMywgMjYsIDUsIDE5NCwgMTMsIDI2LCA1LCAyMTAsIDY5LCAxMywgMjYsIDUsIDY4LCAxMywgCi0gICAgMjYsIDUsIDIwNiwgMTY0LCAxMywgMjYsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDUsIAotICAgIDIwMywgMTI0LCAxMywgMjYsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDYsIDYzLCAxMywgMzcsIDYsIDI0OSwgMjU1LCAxMywgCi0gICAgMzcsIDYsIDI0NywgMTI1LCAxMywgMzcsIDYsIDI0NSwgNTEsIDEzLCAzNywgNiwgNzQsIDEzLCAzNywgNiwgMjQwLCAxNzQsIAotICAgIDEzLCAzNywgNiwgMjM5LCA3NSwgMTMsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDM3LCA2LCA3NSwgMTMsIDM3LCA2LCAyMzAsIAotICAgIDE4NCwgMTMsIDM3LCA2LCAyMzAsIDU0LCAxMywgMzcsIDYsIDE1OSwgMTMsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDM3LCA2LCAKLSAgICAyMjMsIDE2MywgMTMsIDM3LCA2LCA3OCwgMTMsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIAotICAgIDM3LCA2LCAxNDYsIDEzLCAzNywgNiwgMTk0LCAxMywgMzcsIDYsIDIxMCwgNjksIDEzLCAzNywgNiwgNjgsIDEzLCAzNywgNiwgCi0gICAgMjA2LCAxNjQsIDEzLCAzNywgNiwgMjA0LCAxNDQsIDEzLCAzNywgNiwgMjAzLCAxOTYsIDEzLCAzNywgNiwgMjAzLCAxMjQsIAotICAgIDEzLCAzNywgNiwgMjAyLCAxNTksIDEzLCAzNywgNSwgNjMsIDEzLCAzNywgNSwgMjQ5LCAyNTUsIDEzLCAzNywgNSwgMjQ3LCAKLSAgICAxMjUsIDEzLCAzNywgNSwgMjQ1LCA1MSwgMTMsIDM3LCA1LCA3NCwgMTMsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDM3LCA1LCAKLSAgICAyMzksIDc1LCAxMywgMzcsIDUsIDc1LCAxMywgMzcsIDUsIDIzMCwgMTg0LCAxMywgMzcsIDUsIDIzMCwgNTQsIDEzLCAzNywgCi0gICAgNSwgMTU5LCAxMywgMzcsIDUsIDIyNiwgMTg1LCAxMywgMzcsIDUsIDIyMywgMTYzLCAxMywgMzcsIDUsIDc4LCAxMywgMzcsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgMzcsIDUsIDIxNywgMTM0LCAxMywgMzcsIDUsIDE0NiwgMTMsIDM3LCA1LCAxOTQsIDEzLCAzNywgCi0gICAgNSwgMjEwLCA2OSwgMTMsIDM3LCA1LCA2OCwgMTMsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIAotICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAzNywgNiwgCi0gICAgNjMsIDEzLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAzNywgNiwgMjQ1LCAKLSAgICA1MSwgMTMsIDI2LCAzNywgNiwgNzQsIDEzLCAyNiwgMzcsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDM3LCA2LCAyMzksIDc1LCAKLSAgICAxMywgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNiwgNzUsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA2LCAxNTksIDEzLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgMjYsIAotICAgIDM3LCA2LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNiwgNzgsIDEzLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgMjYsIDM3LCAKLSAgICA2LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNiwgMTQ2LCAxMywgMjYsIDM3LCA2LCAxOTQsIDEzLCAyNiwgMzcsIDYsIDIxMCwgCi0gICAgNjksIDEzLCAyNiwgMzcsIDYsIDY4LCAxMywgMjYsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCAzNywgNiwgMjA0LCAxNDQsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCAzNywgNiwgMjAyLCAKLSAgICAxNTksIDEzLCAyNiwgMzcsIDUsIDYzLCAxMywgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIAotICAgIDEzLCAyNiwgMzcsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMzcsIDUsIDc0LCAxMywgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDI2LCAzNywgNSwgMjM5LCA3NSwgMTMsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCAyNiwgMzcsIDUsIDc1LCAxMywgMjYsIAotICAgIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDI2LCAzNywgNSwgMTU5LCAxMywgMjYsIDM3LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCAyNiwgMzcsIDUsIDc4LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMTksIDE4NCwgMTMsIDI2LCAzNywgNSwgMjE3LCAxMzQsIDEzLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDI2LCAzNywgNSwgCi0gICAgMTk0LCAxMywgMjYsIDM3LCA1LCAyMTAsIDY5LCAxMywgMjYsIDM3LCA1LCA2OCwgMTMsIDI2LCAzNywgNSwgMjA2LCAxNjQsIAotICAgIDEzLCAyNiwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAzNywgNSwgMjAzLCAKLSAgICAxMjQsIDEzLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMTMyLCA2LCA2MywgMTMsIDEzMiwgNiwgMjQ3LCAxMjUsIDEzLCAKLSAgICAxMzIsIDYsIDI0NSwgNTEsIDEzLCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAxMzIsIDYsIDIzMCwgMTg0LCAxMywgMTMyLCA2LCAKLSAgICAyMzAsIDU0LCAxMywgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDEzMiwgNiwgNzgsIDEzLCAxMzIsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDEzMiwgNiwgMTk0LCAxMywgMTMyLCA2LCAyMTAsIDY5LCAxMywgMTMyLCA2LCA2OCwgCi0gICAgMTMsIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAxMzIsIDYsIDIwNCwgMTQ0LCAxMywgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAxMzIsIDYsIDIwMiwgMTU5LCAxMywgMTMyLCA1LCA2MywgMTMsIDEzMiwgNSwgMjQ5LCAKLSAgICAyNTUsIDEzLCAxMzIsIDUsIDI0NywgMTI1LCAxMywgMTMyLCA1LCAyNDUsIDUxLCAxMywgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDEzMiwgNSwgMjM3LCAxNzEsIDEzLCAxMzIsIDUsIDc1LCAxMywgMTMyLCA1LCAyMzAsIDE4NCwgMTMsIDEzMiwgNSwgMjMwLCAKLSAgICA1NCwgMTMsIDEzMiwgNSwgMTU5LCAxMywgMTMyLCA1LCAyMjYsIDE4NSwgMTMsIDEzMiwgNSwgMjIzLCAxNjMsIDEzLCAxMzIsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDEzMiwgNSwgMTQ2LCAxMywgMTMyLCA1LCAxOTQsIDEzLCAKLSAgICAxMzIsIDUsIDIxMCwgNjksIDEzLCAxMzIsIDUsIDY4LCAxMywgMTMyLCA1LCAyMDYsIDE2NCwgMTMsIDEzMiwgNSwgMjA0LCAKLSAgICAxNDQsIDEzLCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMTMyLCA1LCAyMDMsIDEyNCwgMTMsIDEzMiwgNSwgMjAyLCAxNTksIAotICAgIDEzLCAyNiwgMTMyLCA2LCA2MywgMTMsIDI2LCAxMzIsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNiwgMjQ3LCAxMjUsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyNDUsIDUxLCAxMywgMjYsIDEzMiwgNiwgNzQsIDEzLCAyNiwgMTMyLCA2LCAyNDAsIDE3NCwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAyNiwgMTMyLCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDYsIDc1LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNiwgMTU5LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjI2LCAxODUsIDEzLCAyNiwgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDYsIDc4LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDYsIDE0NiwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDE5NCwgMTMsIDI2LCAxMzIsIDYsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA2LCA2OCwgMTMsIDI2LCAKLSAgICAxMzIsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDI2LCAxMzIsIDYsIDIwMywgMTI0LCAxMywgMjYsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgMTMyLCA1LCA2MywgMTMsIAotICAgIDI2LCAxMzIsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgMTMyLCA1LCAyNDUsIDUxLCAKLSAgICAxMywgMjYsIDEzMiwgNSwgNzQsIDEzLCAyNiwgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIDI2LCAxMzIsIDUsIDIzOSwgNzUsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDUsIDc1LCAxMywgMjYsIDEzMiwgNSwgMjMwLCAxODQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNSwgMTU5LCAxMywgMjYsIDEzMiwgNSwgMjI2LCAxODUsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDUsIDc4LCAxMywgMjYsIDEzMiwgNSwgMjE5LCAxODQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDUsIDE0NiwgMTMsIDI2LCAxMzIsIDUsIDE5NCwgMTMsIAotICAgIDI2LCAxMzIsIDUsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA1LCA2OCwgMTMsIDI2LCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTI0LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjAyLCAxNTksIDEzLCAxNjYsIDYsIDYzLCAxMywgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDE2NiwgCi0gICAgNiwgMjQ1LCA1MSwgMTMsIDE2NiwgNiwgNzQsIDEzLCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMTY2LCA2LCAyMzksIDc1LCAKLSAgICAxMywgMTY2LCA2LCAyMzAsIDE4NCwgMTMsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDE2NiwgNiwgMTU5LCAxMywgMTY2LCA2LCAKLSAgICAyMjYsIDE4NSwgMTMsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAxNjYsIDYsIDc4LCAxMywgMTY2LCA2LCAyMTksIDE4NCwgMTMsIAotICAgIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAxNjYsIDYsIDE5NCwgMTMsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDE2NiwgNiwgNjgsIAotICAgIDEzLCAxNjYsIDYsIDIwNiwgMTY0LCAxMywgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAKLSAgICAxNjYsIDYsIDIwMywgMTI0LCAxMywgMTY2LCA1LCA2MywgMTMsIDE2NiwgNSwgMjQ5LCAyNTUsIDEzLCAxNjYsIDUsIDI0NywgCi0gICAgMTI1LCAxMywgMTY2LCA1LCAyNDUsIDUxLCAxMywgMTY2LCA1LCA3NCwgMTMsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAxNjYsIAotICAgIDUsIDIzOSwgNzUsIDEzLCAxNjYsIDUsIDIzNywgMTcxLCAxMywgMTY2LCA1LCA3NSwgMTMsIDE2NiwgNSwgMjMwLCAxODQsIAotICAgIDEzLCAxNjYsIDUsIDIzMCwgNTQsIDEzLCAxNjYsIDUsIDE1OSwgMTMsIDE2NiwgNSwgMjI2LCAxODUsIDEzLCAxNjYsIDUsIAotICAgIDIyMywgMTYzLCAxMywgMTY2LCA1LCA3OCwgMTMsIDE2NiwgNSwgMjE5LCAxODQsIDEzLCAxNjYsIDUsIDIxNywgMTM0LCAxMywgCi0gICAgMTY2LCA1LCAxNDYsIDEzLCAxNjYsIDUsIDE5NCwgMTMsIDE2NiwgNSwgMjEwLCA2OSwgMTMsIDE2NiwgNSwgNjgsIDEzLCAKLSAgICAxNjYsIDUsIDIwNiwgMTY0LCAxMywgMTY2LCA1LCAyMDQsIDE0NCwgMTMsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAxNjYsIDUsIAotICAgIDIwMywgMTI0LCAxMywgMTY2LCA1LCAyMDIsIDE1OSwgMTMsIDE2OSwgNiwgNjMsIDEzLCAxNjksIDYsIDI0OSwgMjU1LCAxMywgCi0gICAgMTY5LCA2LCAyNDUsIDUxLCAxMywgMTY5LCA2LCA3NCwgMTMsIDE2OSwgNiwgMjQwLCAxNzQsIDEzLCAxNjksIDYsIDIzOSwgCi0gICAgNzUsIDEzLCAxNjksIDYsIDc1LCAxMywgMTY5LCA2LCAyMzAsIDE4NCwgMTMsIDE2OSwgNiwgMjMwLCA1NCwgMTMsIDE2OSwgCi0gICAgNiwgMTU5LCAxMywgMTY5LCA2LCAyMjYsIDE4NSwgMTMsIDE2OSwgNiwgNzgsIDEzLCAxNjksIDYsIDE5NCwgMTMsIDE2OSwgCi0gICAgNiwgMjEwLCA2OSwgMTMsIDE2OSwgNiwgNjgsIDEzLCAxNjksIDYsIDIwNiwgMTY0LCAxMywgMTY5LCA2LCAyMDQsIDE0NCwgCi0gICAgMTMsIDE2OSwgNiwgMjAzLCAxOTYsIDEzLCAxNjksIDYsIDIwMywgMTI0LCAxMywgMTY5LCA1LCA2MywgMTMsIDE2OSwgNSwgCi0gICAgMjQ5LCAyNTUsIDEzLCAxNjksIDUsIDI0NywgMTI1LCAxMywgMTY5LCA1LCAyNDUsIDUxLCAxMywgMTY5LCA1LCA3NCwgMTMsIAotICAgIDE2OSwgNSwgMjQwLCAxNzQsIDEzLCAxNjksIDUsIDIzOSwgNzUsIDEzLCAxNjksIDUsIDIzNywgMTcxLCAxMywgMTY5LCA1LCAKLSAgICA3NSwgMTMsIDE2OSwgNSwgMjMwLCAxODQsIDEzLCAxNjksIDUsIDIzMCwgNTQsIDEzLCAxNjksIDUsIDE1OSwgMTMsIDE2OSwgCi0gICAgNSwgMjI2LCAxODUsIDEzLCAxNjksIDUsIDIyMywgMTYzLCAxMywgMTY5LCA1LCA3OCwgMTMsIDE2OSwgNSwgMjE5LCAxODQsIAotICAgIDEzLCAxNjksIDUsIDIxNywgMTM0LCAxMywgMTY5LCA1LCAxNDYsIDEzLCAxNjksIDUsIDE5NCwgMTMsIDE2OSwgNSwgMjEwLCAKLSAgICA2OSwgMTMsIDE2OSwgNSwgNjgsIDEzLCAxNjksIDUsIDIwNiwgMTY0LCAxMywgMTY5LCA1LCAyMDQsIDE0NCwgMTMsIDE2OSwgCi0gICAgNSwgMjAzLCAxOTYsIDEzLCAxNjksIDUsIDIwMywgMTI0LCAxMywgMTY5LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDYzLCAxMywgMjYsIDE2NiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCA2LCA3NCwgMTMsIDI2LCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNiwgNzUsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA2LCAxNTksIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNiwgNzgsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNiwgMTQ2LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMTk0LCAxMywgMjYsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxNjYsIDYsIDY4LCAxMywgMjYsIDE2NiwgNiwgMjA2LCAKLSAgICAxNjQsIDEzLCAyNiwgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxNjYsIDYsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDYzLCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCAKLSAgICA1LCA3NCwgMTMsIDI2LCAxNjYsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNSwgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNSwgNzUsIDEzLCAyNiwgMTY2LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA1LCAxNTksIDEzLCAyNiwgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNSwgNzgsIDEzLCAyNiwgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNSwgMTQ2LCAxMywgMjYsIDE2NiwgNSwgMTk0LCAxMywgMjYsIDE2NiwgNSwgMjEwLCAKLSAgICA2OSwgMTMsIDI2LCAxNjYsIDUsIDY4LCAxMywgMjYsIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgMTY2LCA1LCAyMDQsIAotICAgIDE0NCwgMTMsIDI2LCAxNjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMDIsIDE1OSwgMTMsIDQxLCA2LCA2MywgMTMsIDQxLCA2LCAyNDksIDI1NSwgMTMsIDQxLCA2LCAyNDcsIDEyNSwgMTMsIAotICAgIDQxLCA2LCAyNDUsIDUxLCAxMywgNDEsIDYsIDc0LCAxMywgNDEsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDYsIDIzOSwgNzUsIAotICAgIDEzLCA0MSwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgNiwgNzUsIDEzLCA0MSwgNiwgMjMwLCAxODQsIDEzLCA0MSwgNiwgMjMwLCAKLSAgICA1NCwgMTMsIDQxLCA2LCAxNTksIDEzLCA0MSwgNiwgMjI2LCAxODUsIDEzLCA0MSwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgNiwgCi0gICAgNzgsIDEzLCA0MSwgNiwgMjE5LCAxODQsIDEzLCA0MSwgNiwgMjE3LCAxMzQsIDEzLCA0MSwgNiwgMTQ2LCAxMywgNDEsIDYsIAotICAgIDE5NCwgMTMsIDQxLCA2LCAyMTAsIDY5LCAxMywgNDEsIDYsIDY4LCAxMywgNDEsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDYsIAotICAgIDIwNCwgMTQ0LCAxMywgNDEsIDYsIDIwMywgMTk2LCAxMywgNDEsIDYsIDIwMywgMTI0LCAxMywgNDEsIDYsIDIwMiwgMTU5LCAKLSAgICAxMywgNDEsIDUsIDYzLCAxMywgNDEsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDUsIDI0NywgMTI1LCAxMywgNDEsIDUsIDI0NSwgCi0gICAgNTEsIDEzLCA0MSwgNSwgNzQsIDEzLCA0MSwgNSwgMjQwLCAxNzQsIDEzLCA0MSwgNSwgMjM5LCA3NSwgMTMsIDQxLCA1LCAKLSAgICAyMzcsIDE3MSwgMTMsIDQxLCA1LCA3NSwgMTMsIDQxLCA1LCAyMzAsIDE4NCwgMTMsIDQxLCA1LCAyMzAsIDU0LCAxMywgNDEsIAotICAgIDUsIDE1OSwgMTMsIDQxLCA1LCAyMjYsIDE4NSwgMTMsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDQxLCA1LCA3OCwgMTMsIDQxLCAKLSAgICA1LCAyMTksIDE4NCwgMTMsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDQxLCA1LCAxNDYsIDEzLCA0MSwgNSwgMTk0LCAxMywgNDEsIAotICAgIDUsIDIxMCwgNjksIDEzLCA0MSwgNSwgNjgsIDEzLCA0MSwgNSwgMjA2LCAxNjQsIDEzLCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAKLSAgICA0MSwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgNSwgMjAzLCAxMjQsIDEzLCA0MSwgNSwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDYsIAotICAgIDYzLCAxMywgNDEsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDYsIDI0NSwgCi0gICAgNTEsIDEzLCA0MSwgMjYsIDYsIDc0LCAxMywgNDEsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDQxLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDYsIDc1LCAxMywgNDEsIDI2LCA2LCAyMzAsIDE4NCwgMTMsIAotICAgIDQxLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNiwgMTU5LCAxMywgNDEsIDI2LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDYsIDc4LCAxMywgNDEsIDI2LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAyNiwgCi0gICAgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDYsIDE0NiwgMTMsIDQxLCAyNiwgNiwgMTk0LCAxMywgNDEsIDI2LCA2LCAyMTAsIAotICAgIDY5LCAxMywgNDEsIDI2LCA2LCA2OCwgMTMsIDQxLCAyNiwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgMjYsIDYsIDIwNCwgMTQ0LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMjYsIDYsIDIwMiwgCi0gICAgMTU5LCAxMywgNDEsIDI2LCA1LCA2MywgMTMsIDQxLCAyNiwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDUsIDI0NywgMTI1LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCA1LCA3NCwgMTMsIDQxLCAyNiwgNSwgMjQwLCAxNzQsIDEzLCAKLSAgICA0MSwgMjYsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDUsIDIzNywgMTcxLCAxMywgNDEsIDI2LCA1LCA3NSwgMTMsIDQxLCAKLSAgICAyNiwgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDUsIDE1OSwgMTMsIDQxLCAyNiwgCi0gICAgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDUsIDIyMywgMTYzLCAxMywgNDEsIDI2LCA1LCA3OCwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDUsIDIxNywgMTM0LCAxMywgNDEsIDI2LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDUsIAotICAgIDE5NCwgMTMsIDQxLCAyNiwgNSwgMjEwLCA2OSwgMTMsIDQxLCAyNiwgNSwgNjgsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMTY0LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDUsIDIwMywgCi0gICAgMTI0LCAxMywgNDEsIDI2LCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNiwgNjMsIDEzLCA0MSwgMzcsIDYsIDI0OSwgMjU1LCAKLSAgICAxMywgNDEsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAzNywgNiwgNzQsIDEzLCAKLSAgICA0MSwgMzcsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAotICAgIDQxLCAzNywgNiwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMzAsIDU0LCAxMywgNDEsIAotICAgIDM3LCA2LCAxNTksIDEzLCA0MSwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAzNywgCi0gICAgNiwgNzgsIDEzLCA0MSwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAzNywgNiwgCi0gICAgMTQ2LCAxMywgNDEsIDM3LCA2LCAxOTQsIDEzLCA0MSwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMzcsIDYsIDY4LCAxMywgCi0gICAgNDEsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMzcsIDYsIDIwMywgMTk2LCAKLSAgICAxMywgNDEsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMzcsIDUsIDYzLCAxMywgCi0gICAgNDEsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMzcsIDUsIDI0NSwgNTEsIDEzLCAKLSAgICA0MSwgMzcsIDUsIDc0LCAxMywgNDEsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAzNywgNSwgMjM5LCA3NSwgMTMsIDQxLCAKLSAgICAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMzcsIDUsIDc1LCAxMywgNDEsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAzNywgCi0gICAgNSwgMjMwLCA1NCwgMTMsIDQxLCAzNywgNSwgMTU5LCAxMywgNDEsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDQxLCAzNywgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCA0MSwgMzcsIDUsIDc4LCAxMywgNDEsIDM3LCA1LCAyMTksIDE4NCwgMTMsIDQxLCAzNywgNSwgMjE3LCAKLSAgICAxMzQsIDEzLCA0MSwgMzcsIDUsIDE0NiwgMTMsIDQxLCAzNywgNSwgMTk0LCAxMywgNDEsIDM3LCA1LCAyMTAsIDY5LCAxMywgCi0gICAgNDEsIDM3LCA1LCA2OCwgMTMsIDQxLCAzNywgNSwgMjA2LCAxNjQsIDEzLCA0MSwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIAotICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAzNywgNSwgMjAzLCAxMjQsIDEzLCA0MSwgMzcsIDUsIDIwMiwgMTU5LCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NywgCi0gICAgMTI1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDYsIDc0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjM3LCAxNzEsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAKLSAgICA1NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIAotICAgIDI2LCAzNywgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAxOTQsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCAyMTAsIDY5LCAxMywgNDEsIDI2LCAzNywgNiwgNjgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIAotICAgIDE2NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgNjMsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NywgMTI1LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc0LCAxMywgNDEsIDI2LCAzNywgNSwgMjQwLCAxNzQsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDM3LCA1LCA3NSwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA1LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjE3LCAxMzQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTAsIAotICAgIDY5LCAxMywgNDEsIDI2LCAzNywgNSwgNjgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDEyNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgNjMsIDEzLCAyMjQsIDQxLCA2LCAyNDksIAotICAgIDI1NSwgMTMsIDIyNCwgNDEsIDYsIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNiwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDc0LCAxMywgMjI0LCA0MSwgNiwgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA2LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCA2LCA3NSwgMTMsIDIyNCwgNDEsIDYsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDYsIDE1OSwgMTMsIDIyNCwgNDEsIDYsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA2LCA3OCwgMTMsIDIyNCwgNDEsIDYsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA2LCAxNDYsIDEzLCAyMjQsIDQxLCA2LCAxOTQsIDEzLCAyMjQsIDQxLCA2LCAyMTAsIAotICAgIDY5LCAxMywgMjI0LCA0MSwgNiwgNjgsIDEzLCAyMjQsIDQxLCA2LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDYsIDIwNCwgCi0gICAgMTQ0LCAxMywgMjI0LCA0MSwgNiwgMjAzLCAxOTYsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNSwgNjMsIDEzLCAyMjQsIDQxLCA1LCAyNDksIDI1NSwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNSwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDUsIDc0LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA1LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNSwgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCAKLSAgICA1LCA3NSwgMTMsIDIyNCwgNDEsIDUsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDE1OSwgMTMsIDIyNCwgNDEsIDUsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNSwgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICA3OCwgMTMsIDIyNCwgNDEsIDUsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAxNDYsIDEzLCAyMjQsIDQxLCA1LCAxOTQsIDEzLCAyMjQsIDQxLCA1LCAyMTAsIDY5LCAxMywgMjI0LCA0MSwgNSwgNjgsIAotICAgIDEzLCAyMjQsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDUsIDIwNCwgMTQ0LCAxMywgMjI0LCA0MSwgNSwgMjAzLCAKLSAgICAxOTYsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDUsIDI0MywgCi0gICAgODQsIDc1LCAxMywgMzcsIDUsIDI0MywgODQsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDI1MSwgMiwgMTMsIDI2LCA2LCAyNDgsIAotICAgIDEwNiwgMTMsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDI2LCA2LCAyNDQsIDM3LCAxMywgMjYsIDYsIDI0MSwgMzcsIDEzLCAyNiwgCi0gICAgNiwgMjAyLCA4MywgMTMsIDI2LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCA2LCAyMDksIDc0LCAxMywgMjYsIDYsIDIzMCwgMjMwLCAKLSAgICAxMywgMjYsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDYsIDIyOCwgMjQsIDEzLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCAyNiwgNiwgCi0gICAgMjIxLCA4NCwgMTMsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDI2LCA2LCAyMjAsIDM0LCAxMywgMjYsIDYsIDIxOCwgMTY3LCAKLSAgICAxMywgMjYsIDYsIDIxNiwgNTksIDEzLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAyNiwgNiwgMjEyLCAxNDQsIDEzLCAyNiwgCi0gICAgNiwgMjA5LCAyMDcsIDEzLCAyNiwgNiwgMjA2LCAyMTYsIDEzLCAyNiwgNiwgMjE4LCAxOTIsIDEzLCAyNiwgNiwgMjQ2LCAKLSAgICAxNDIsIDEzLCAyNiwgNiwgMjE3LCAyMDIsIDEzLCAyNiwgNiwgMjIwLCAzNiwgMTMsIDI2LCAyMjMsIDEwMSwgMTMsIDI2LCAKLSAgICA1LCAyNTEsIDIsIDEzLCAyNiwgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCAyNiwgNSwgMjQ0LCAzNywgCi0gICAgMTMsIDI2LCA1LCAyNDEsIDM3LCAxMywgMjYsIDUsIDIwMiwgODMsIDEzLCAyNiwgNSwgMjQwLCAyNDgsIDEzLCAyNiwgNSwgCi0gICAgMjA5LCA3NCwgMTMsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDI2LCA1LCAyMjksIDI0NywgMTMsIDI2LCA1LCAyMjgsIDI0LCAKLSAgICAxMywgMjYsIDUsIDIyMywgMjQ2LCAxMywgMjYsIDUsIDIyMSwgODQsIDEzLCAyNiwgNSwgMjAzLCAxNzAsIDEzLCAyNiwgNSwgCi0gICAgMjIwLCAzNCwgMTMsIDI2LCA1LCAyMTgsIDE2NywgMTMsIDI2LCA1LCAyMTYsIDU5LCAxMywgMjYsIDUsIDQ2LCAyMTIsIAotICAgIDE0NCwgMTMsIDI2LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCA1LCAyMDksIDIwNywgMTMsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIAotICAgIDI2LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDI2LCA1LCAKLSAgICAyMjAsIDM2LCAxMywgMjYsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDI0MSwgMzgsIDk3LCAxMywgMjYsIDIwOSwgNzUsIAotICAgIDk3LCAxMywgMjYsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAyMTgsIDE5MywgOTcsIDEzLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCAKLSAgICAyNiwgMjE4LCAxNjgsIDk3LCAxMywgMzcsIDYsIDI1MSwgMiwgMTMsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDM3LCA2LCAyMzgsIAotICAgIDIzNSwgMTMsIDM3LCA2LCAyNDQsIDM3LCAxMywgMzcsIDYsIDI0MSwgMzcsIDEzLCAzNywgNiwgMjAyLCA4MywgMTMsIDM3LCAKLSAgICA2LCAyNDAsIDI0OCwgMTMsIDM3LCA2LCAyMDksIDc0LCAxMywgMzcsIDYsIDIzMCwgMjMwLCAxMywgMzcsIDYsIDIyOSwgCi0gICAgMjQ3LCAxMywgMzcsIDYsIDIyOCwgMjQsIDEzLCAzNywgNiwgMjIzLCAyNDYsIDEzLCAzNywgNiwgMjIxLCA4NCwgMTMsIDM3LCAKLSAgICA2LCAyMDMsIDE3MCwgMTMsIDM3LCA2LCAyMjAsIDM0LCAxMywgMzcsIDYsIDIxOCwgMTY3LCAxMywgMzcsIDYsIDIxNiwgNTksIAotICAgIDEzLCAzNywgNiwgMjA5LCA3NSwgOTcsIDEzLCAzNywgNiwgMjEyLCAxNDQsIDEzLCAzNywgNiwgMjA5LCAyMDcsIDEzLCAzNywgCi0gICAgNiwgMjA2LCAyMTYsIDEzLCAzNywgNiwgMjE4LCAxOTIsIDEzLCAzNywgNiwgMjQ2LCAxNDIsIDEzLCAzNywgNiwgMjE3LCAKLSAgICAyMDIsIDEzLCAzNywgNiwgMjIwLCAzNiwgMTMsIDM3LCAyMjMsIDEwMSwgMTMsIDM3LCA1LCAyNTEsIDIsIDEzLCAzNywgNSwgCi0gICAgMjQ4LCAxMDYsIDEzLCAzNywgNSwgMjM4LCAyMzUsIDEzLCAzNywgNSwgMjQ0LCAzNywgMTMsIDM3LCA1LCAyNDEsIDM3LCAKLSAgICAxMywgMzcsIDUsIDIwMiwgODMsIDEzLCAzNywgNSwgMjQwLCAyNDgsIDEzLCAzNywgNSwgMjA5LCA3NCwgMTMsIDM3LCA1LCAKLSAgICAyMzAsIDIzMCwgMTMsIDM3LCA1LCAyMjksIDI0NywgMTMsIDM3LCA1LCAyMjgsIDI0LCAxMywgMzcsIDUsIDIyMywgMjQ2LCAKLSAgICAxMywgMzcsIDUsIDIyMSwgODQsIDEzLCAzNywgNSwgMjAzLCAxNzAsIDEzLCAzNywgNSwgMjIwLCAzNCwgMTMsIDM3LCA1LCAKLSAgICAyMTgsIDE2NywgMTMsIDM3LCA1LCAyMTYsIDU5LCAxMywgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDM3LCA1LCAyMTIsIAotICAgIDE0NCwgMTMsIDM3LCA1LCAyMDksIDIwNywgMTMsIDM3LCA1LCAyMDYsIDIxNiwgMTMsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIAotICAgIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDM3LCA1LCAyMjAsIDM2LCAxMywgMzcsIDIxOSwgCi0gICAgNjksIDI0MywgMjA1LCAxMywgMzcsIDI0MSwgMzgsIDk3LCAxMywgMzcsIDIwOSwgNzUsIDk3LCAxMywgMzcsIDIyOSwgMjQ4LCAKLSAgICA5NywgMTMsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCAzNywgMjE2LCA2MCwgOTcsIDEzLCAzNywgMjE4LCAxNjgsIDk3LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNTEsIDIsIDEzLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA2LCAyMzgsIDIzNSwgMTMsIAotICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDI2LCAzNywgNiwgMjAyLCA4MywgMTMsIAotICAgIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMjMwLCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDI2LCAzNywgNiwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNiwgMjIzLCAyNDYsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA2LCAyMjAsIDM0LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NSwgOTcsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNiwgMjA2LCAKLSAgICAyMTYsIDEzLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNiwgCi0gICAgMjE3LCAyMDIsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNTEsIDIsIDEzLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjQ0LCAzNywgMTMsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDI2LCAzNywgNSwgCi0gICAgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDUsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMjksIDI0NywgMTMsIDI2LCAzNywgNSwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIyMSwgODQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMTgsIDE2NywgMTMsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMjYsIAotICAgIDM3LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCAyNiwgMzcsIDUsIDIwNiwgMjE2LCAxMywgCi0gICAgMjYsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIDEzLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAKLSAgICAxMywgMjYsIDM3LCA1LCAyMjAsIDM2LCAxMywgMjYsIDM3LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDI2LCAzNywgMjQxLCAKLSAgICAzOCwgOTcsIDEzLCAyNiwgMzcsIDIwOSwgNzUsIDk3LCAxMywgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCAyNiwgMzcsIAotICAgIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAzNywgMjE2LCA2MCwgOTcsIDEzLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjUxLCAyLCAxMywgNDEsIDI2LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDYsIDIwMiwgODMsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIDYsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDYsIDIyMywgMjQ2LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjEsIDg0LCAxMywgNDEsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNiwgMjIwLCAzNCwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzUsIDk3LCAxMywgCi0gICAgNDEsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDYsIDIwNiwgMjE2LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDYsIDIxNywgCi0gICAgMjAyLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMjMsIDEwMSwgMTMsIDQxLCAyNiwgNSwgMjUxLCAyLCAKLSAgICAxMywgNDEsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDUsIDI0NCwgMzcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDUsIDI0MCwgMjQ4LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDksIDc0LCAxMywgNDEsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgNSwgMjI5LCAyNDcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCA1LCAyMjEsIDg0LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgNSwgMjE4LCAxNjcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjEyLCAKLSAgICAxNDQsIDEzLCA0MSwgMjYsIDUsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDUsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgCi0gICAgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCA0MSwgMjYsIDI0MSwgMzgsIDk3LCAxMywgCi0gICAgNDEsIDI2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE5MywgOTcsIAotICAgIDEzLCA0MSwgMjYsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCA2LCAKLSAgICAyNTEsIDIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgNDEsIAotICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDIsIAotICAgIDgzLCAxMywgNDEsIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCAKLSAgICAzNywgNiwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOCwgMjQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIDIxNiwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAyMjMsIDEwMSwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDUsIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNSwgCi0gICAgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwOSwgCi0gICAgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAKLSAgICAzNywgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNSwgMjIxLCA4NCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIxOCwgMTY3LCAxMywgNDEsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMzcsIDI0MSwgMzgsIDk3LCAxMywgNDEsIDI2LCAzNywgMjA5LCA3NSwgCi0gICAgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDI2LCA2LCAyNDMsIDE5OSwgCi0gICAgMTMsIDI2LCA1LCAyNDMsIDE5OSwgMTMsIDI2LCAxNywgMjAyLCA4NCwgMTMsIDI2LCAxNywgMTA1LCAxMywgMjYsIDE3LCAKLSAgICAxMDgsIDEzLCAyNiwgMTcsIDE0NywgMTMsIDI2LCAxNywgMTQ5LCAxMywgMjYsIDE3LCAxNzAsIDEzLCAyNiwgMTcsIDE5NSwgCi0gICAgMTMsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCAyNiwgMTcsIDE5OSwgMTMsIDI2LCAxNywgMjIyLCA2MywgMTMsIDE2OSwgMTcsIAotICAgIDIwMiwgODQsIDEzLCAxNjksIDE3LCAxMDUsIDEzLCAxNjksIDE3LCAxMDgsIDEzLCAxNjksIDE3LCAxNDcsIDEzLCAxNjksIAotICAgIDE3LCAxNDksIDEzLCAxNjksIDE3LCAxNzAsIDEzLCAxNjksIDE3LCAxOTUsIDEzLCAxNjksIDE3LCAyMTMsIDExMSwgMTMsIAotICAgIDE2OSwgMTcsIDE5OSwgMTMsIDE2OSwgMTcsIDIyMiwgNjMsIDEzLCA0MSwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMTcsIDEwNSwgCi0gICAgMTMsIDQxLCAxNywgMTA4LCAxMywgNDEsIDE3LCAxNDcsIDEzLCA0MSwgMTcsIDE0OSwgMTMsIDQxLCAxNywgMTcwLCAxMywgCi0gICAgNDEsIDE3LCAxOTUsIDEzLCA0MSwgMTcsIDIxMywgMTExLCAxMywgNDEsIDE3LCAxOTksIDEzLCA0MSwgMTcsIDIyMiwgNjMsIAotICAgIDEzLCA0MSwgMjYsIDE3LCAyMDIsIDg0LCAxMywgNDEsIDI2LCAxNywgMTA1LCAxMywgNDEsIDI2LCAxNywgMTA4LCAxMywgCi0gICAgNDEsIDI2LCAxNywgMTQ3LCAxMywgNDEsIDI2LCAxNywgMTQ5LCAxMywgNDEsIDI2LCAxNywgMTcwLCAxMywgNDEsIDI2LCAKLSAgICAxNywgMTk1LCAxMywgNDEsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMjYsIDE3LCAxOTksIDEzLCA0MSwgMjYsIDE3LCAKLSAgICAyMjIsIDYzLCAxMywgMjI0LCA0MSwgMTcsIDIwMiwgODQsIDEzLCAyMjQsIDQxLCAxNywgMTA1LCAxMywgMjI0LCA0MSwgMTcsIAotICAgIDEwOCwgMTMsIDIyNCwgNDEsIDE3LCAxNDcsIDEzLCAyMjQsIDQxLCAxNywgMTQ5LCAxMywgMjI0LCA0MSwgMTcsIDE3MCwgCi0gICAgMTMsIDIyNCwgNDEsIDE3LCAxOTUsIDEzLCAyMjQsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCAyMjQsIDQxLCAxNywgMTk5LCAKLSAgICAxMywgMjI0LCA0MSwgMTcsIDIyMiwgNjMsIDIxLCAxMjgsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMCwgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTE2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDUsIDIzMSwgMzUsIDIxLCAyMzcsIDEwOSwgMjMxLCAzNSwgMjEsIDIzNywgCi0gICAgMTIyLCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKLSAgICAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAKLSAgICAxMjgsIDEyMiwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMjI3LCAKLSAgICAwLCAyMSwgMjM3LCAxMjAsIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMCwgCi0gICAgMTIyLCAyMjQsIDE0OCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE2LCAxODgsIAotICAgIDIyOSwgMjgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzUsIAotICAgIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzYsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwNywgMjEsIAotICAgIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEwMSwgCi0gICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgCi0gICAgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyNDUsIAotICAgIDEyNywgMjEsIDEyOCwgMTAxLCAyNDgsIDExOCwgMTE1LCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE4LCAxMTUsIAotICAgIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjA5LCAyMSwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjA5LCAyMSwgCi0gICAgMjEsIDEyOCwgMTIyLCAxMDEsIDIxMSwgNTMsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDgsIDExOCwgCi0gICAgMTQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgCi0gICAgMjM2LCAyMTEsIDE4NiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDIzNiwgCi0gICAgMjM2LCAxMDEsIDExMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDExMiwgMjExLCAxODYsIDE0OCwgMjM5LCAKLSAgICAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NiwgNjAsIAotICAgIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMTE0LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyMzYsIDIzNSwgMjEsIAotICAgIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAxMDEsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgCi0gICAgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDEyOCwgMTAxLCAxNDgsIDIzNiwgMTE1LCAKLSAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgCi0gICAgMTAxLCAyNDUsIDIwOCwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEyOCwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMjQ1LCAyMDgsIDI0NSwgOTgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNDUsIDk4LCAxMjIsIDIwNiwgCi0gICAgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA5OCwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDQzLCAKLSAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKLSAgICAyNTAsIDIxNiwgMjE5LCAyMTIsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNTAsIDIxNiwgMjMxLCA1MCwgCi0gICAgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDQzLCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMTQ4LCAyNDUsIDIwOCwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMSwgMjEsIAotICAgIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTUsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgCi0gICAgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgMjQ1LCAxMjcsIDIxLCAxMjgsIAotICAgIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDIzNiwgMTE1LCAxMDEsIDIzNiwgCi0gICAgMjM1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1MywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIAotICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjM2LCAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAKLSAgICAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA4LCAyMTEsIAotICAgIDE5MywgMjEsIDIzNywgMTE4LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMzksIDE0NywgMjM5LCAKLSAgICAyNTQsIDI0NSwgMjA4LCAyNDgsIDExNywgMjEsIDIzNywgMTA5LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgCi0gICAgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIAotICAgIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM5LCAxNDcsIAotICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAKLSAgICAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgCi0gICAgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAKLSAgICAyMTEsIDE4NSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIAotICAgIDEwOSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjIwLCA4LCAyMSwgMjM3LCAxMDUsIDIzOSwgMjMzLCAyMzksIAotICAgIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzUsIDIxLCAKLSAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIAotICAgIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAKLSAgICAxMTAsIDIxLCAyMzcsIDExMSwgMjQ4LCAxMDQsIDIxOSwgMTM1LCAyNDAsIDk0LCAyMSwgMjM3LCAxMTEsIDIzNywgNDUsIAotICAgIDIxLCAyMzcsIDExMSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAxNDgsIDIxMiwgMTU1LCAyMSwgCi0gICAgMjM3LCAxMTEsIDE0OCwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTExLCAyMTEsIAotICAgIDE5NCwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyNDYsIDIxNywgMjEsIDIzNywgMTExLCAKLSAgICAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE4LCAxNDgsIAotICAgIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjI3LCA4NSwgMjEsIDIzNywgMTE3LCAyMSwgCi0gICAgMjM3LCAxMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExOCwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDExOCwgCi0gICAgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTA3LCAyNDUsIDk0LCAyMSwgMjM3LCAxMDYsIDIxLCAyMzcsIDExNiwgMjIwLCA4LCAKLSAgICAyMSwgMjM3LCAxMTUsIDIxLCAyMzcsIDExNiwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTYsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAyMzcsIDExNiwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE2LCAyMjEsIDE5MiwgMjA5LCAKLSAgICAyMSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMzksIDE1MSwgMjEsIAotICAgIDIzNywgMTE0LCAyMjAsIDgsIDIxLCAyMzcsIDExMywgMjEsIDIzNywgMTE5LCAyMSwgMjM3LCAxMDQsIDIxLCAyMzcsIDEwNSwgCi0gICAgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTA1LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA1LCAxNDgsIDIzOSwgCi0gICAgMTUxLCAyMSwgMjM3LCAxMDksIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIAotICAgIDEwOCwgMjEsIDIzNywgMTA5LCAyMTIsIDM2LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCi0gICAgMTA5LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDksIDE3MSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCi0gICAgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMTQ4LCAyMTIsIDE1NiwgMjA4LCAxMjcsIDIzMSwgMzUsIDIxLCAKLSAgICAyMzcsIDEwOSwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTIxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMjE1LCAyNTIsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIAotICAgIDI1MiwgMjEsIDIzNywgMTIyLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NSwgMjEsIDEyOCwgCi0gICAgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDUsIDIwNywgMjEsIAotICAgIDIzNywgMTA5LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDIsIDcwLCAyMSwgCi0gICAgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAKLSAgICAyNDUsIDg1LCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxOSwgMjIwLCAyNDYsIDYwLCAyMSwgMTI4LCAyMjcsIDg2LCAyMDYsIAotICAgIDIyNCwgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMCwgMjI3LCA4NiwgCi0gICAgMjA2LCAyMjQsIDIxLCAyMzcsIDEwNSwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMiwgMjI3LCA4NiwgMjA2LCAKLSAgICAyMjQsIDIxLCAxMjgsIDIyNywgODYsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMjI3LCA4NiwgMjA4LCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCi0gICAgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDIyNywgODYsIAotICAgIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAxMjIsIDE0OCwgMTIyLCAxNDgsIDIxOSwgMjExLCAyMSwgCi0gICAgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIzMSwgMzUsIDIxLCAKLSAgICAyMzcsIDEyMCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMjIsIAotICAgIDIyNywgODYsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAKLSAgICAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDIxNSwgMjUyLCAyMSwgCi0gICAgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAKLSAgICAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgMTMxLCAyMjcsIDg1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjQyLCA3MCwgMjEsIAotICAgIDIzNywgMTA5LCAyMTUsIDI1MywgMTIxLCAxMjIsIDE0OCwgMjM2LCAxMTYsIDIyNCwgMTQ4LCAyMSwgMjM3LCAxMjIsIDIxNSwgCi0gICAgMjUzLCAxMjEsIDEwMSwgMTQ4LCAxMjIsIDI0NSwgMTMwLCAyMSwgMTI4LCAyMTUsIDI1MywgMjA2LCAyMjQsIDIxLCAxMjgsIAotICAgIDIxNSwgMjUzLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgCi0gICAgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwNSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMjE1LCAKLSAgICAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMjQsIDE0OCwgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjQ1LCAKLSAgICAyMDcsIDIxLCAxMjgsIDIxNSwgMjUzLCAxMDEsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgMTI4LCAyMTUsIDI1MywgMjMxLCAKLSAgICAzNSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAyMzcsIDEwNywgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAxMjgsIAotICAgIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCi0gICAgMTE0LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgCi0gICAgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIAotICAgIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjA2LCAyNDcsIDIxLCAyMzcsIDExNiwgMTIyLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NSwgMjEsIDIzNywgMTA5LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIAotICAgIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgCi0gICAgMjQyLCA3MCwgMjEsIDIzNywgMTA5LCAyMjQsIDE0OCwgMjEsIDEyOCwgMTAxLCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAKLSAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAxMDEsIDExMiwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDIzNywgMTA3LCAxMDEsIDIwOSwgMjEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyMjcsIDg1LCAyMSwgCi0gICAgMTI4LCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTAxLCAKLSAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTE0LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgCi0gICAgMjM3LCAxMTYsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgCi0gICAgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgCi0gICAgMjUzLCAyMjcsIDg2LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIAotICAgIDEyMCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NiwgMjQ1LCAyMDcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxMiwgMTU1LCAKLSAgICAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMTksIDIxMSwgMjEsIDIzNywgMTA3LCAKLSAgICAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjMxLCA0OSwgMjEsIDIzNywgMTA3LCAxMDEsIDIxNSwgMjUzLCAKLSAgICAyMjcsIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTA5LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDE0OCwgCi0gICAgMjQzLCAyMjcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAyNDUsIDIwNywgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDIxMiwgMTU2LCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKLSAgICAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMjQ3LCAyNTEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIAotICAgIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzksIDE1MiwgMTIyLCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIAotICAgIDE0OCwgMjM5LCAxNTIsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAxMTMsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKLSAgICAyNDUsIDk0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAyMzcsIDExOCwgMTIyLCAxNDgsIAotICAgIDI0NSwgODgsIDE0OCwgMjMxLCA2LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMDYsIDI0NywgMjEsIDEyOCwgCi0gICAgMTIyLCAxNDgsIDI0NiwgNjEsIDIxLCAyMzcsIDExNiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDEyMiwgMTQ4LCAKLSAgICAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjI4LCA3LCAKLSAgICAyMSwgMjM3LCAxMDksIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAzNiwgMjEsIDIzNywgCi0gICAgMTIyLCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAxNDgsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgCi0gICAgMTIyLCAyMDksIDIxLCAyMSwgMTI4LCAyMDksIDIxLCAyMSwgMTI4LCAxNDgsIDIzNywgNDUsIDIxLCAxMjgsIDE0OCwgMjEyLCAKLSAgICAxNTYsIDI0MywgMjI3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgMTQ4LCAyMTIsIDE1NiwgCi0gICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEyMiwgMjI0LCAxNDgsIAotICAgIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEwMSwgMjE1LCAyNTIsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDIxNSwgMjUzLCAKLSAgICAyMjcsIDg1LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjAsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMTIwLCAKLSAgICAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTI2LCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgCi0gICAgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMjM5LCAxNDcsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgCi0gICAgMjM3LCAxMTIsIDIxLCAxMjgsIDIzNywgNDUsIDIxLCAyMDgsIDEyOSwgMjEyLCAxMTksIDIxLCAyMDgsIDEyOSwgMjIzLCAKLSAgICAyMjUsIDIxLCAyMDgsIDEyOSwgMjQ4LCAxMDMsIDIxLCAyMzgsIDIsIDIxMiwgMTE5LCAyMSwgMjM4LCAyLCAyMjMsIDIyNSwgCi0gICAgMjEsIDIzOCwgMiwgMjQ4LCAxMDMsIDIxLCAyMTEsIDM3LCAyMTIsIDExOSwgMjEsIDIxMSwgMzcsIDIyMywgMjI1LCAyMSwgCi0gICAgMjExLCAzNywgMjQ4LCAxMDMsIDIxLCAyNDcsIDIwMSwgMjEyLCAxMTksIDIxLCAyNDcsIDIwMSwgMjIzLCAyMjUsIDIxLCAKLSAgICAyNDcsIDIwMSwgMjQ4LCAxMDMsIDIxLCAyMTUsIDE0MywgMjEyLCAxMTksIDIxLCAyMTUsIDE0MywgMjIzLCAyMjUsIDIxLCAKLSAgICAyMTUsIDE0MywgMjQ4LCAxMDMsIDIxLCAyMTAsIDE4OSwgMjEwLCAxMDIsIDIxLCAyMTAsIDE4OSwgMjQ4LCAxMDMsIDIxLCAKLSAgICAyMTEsIDE3MywgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCA1LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCAyMjgsIAotICAgIDgsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDUsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDIxMywgMTI2LCAyMSwgMjM5LCAKLSAgICAyMDgsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgNSwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgMjI4LCA4LCAKLSAgICAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCA1LCAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCAyMTMsIDEyNiwgMjEsIDIxMSwgCi0gICAgMTczLCAyMzksIDIwOCwgMjUwLCAyNTIsIDIxLCAyMjQsIDAsIDExMiwgMTIxLCAyMjgsIDcsIDIxLCAyMjQsIDAsIDExMiwgCi0gICAgMTIxLCAyMTIsIDM2LCAyMSwgMjI0LCAwLCAxMTIsIDIxMywgMTI2LCAyMSwgMjI0LCAwLCAxMjEsIDIxMywgMTI2LCAyMSwgCi0gICAgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDI1MCwgMjUzLCAyMTIsIAotICAgIDM2LCAyMSwgMjI0LCAwLCAyMTIsIDE1NiwgMjA4LCAxNzMsIDIxMiwgMTU2LCAyMTQsIDE5MCwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAKLSAgICAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgCi0gICAgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA1LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgNTIsIDIxMSwgNTIsIDIxLCAKLSAgICAyMjMsIDI1NSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjUwLCAyNTIsIDIxLCAyMjMsIAotICAgIDI1NSwgNTIsIDI1MCwgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ1LCAxMzAsIDIxLCAyMjMsIAotICAgIDI1NSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDIwMywgMjIxLCAyMzksIDIxMSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MiwgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MywgMjAzLCAKLSAgICAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAKLSAgICAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjEyLCAzNiwgCi0gICAgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjMsIAotICAgIDI1NSwgMjQ1LCAxNjYsIDIxNSwgMTk2LCAyMSwgMjIzLCAyNTUsIDI0NiwgMTY5LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NiwgMTY5LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIyOCwgNywgMjEsIDIyMywgMjU1LCA5OCwgMjEyLCAKLSAgICAzNiwgMjEsIDIyMywgMjU1LCA5OCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjAyLCAzMCwgCi0gICAgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI1LCA5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIyOCwgNywgMjEsIDIwOCwgOTksIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIwOCwgCi0gICAgOTksIDIxNSwgMTk0LCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCA5OSwgMjE1LCAKLSAgICAxOTUsIDIxMiwgMTE5LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgCi0gICAgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTMsIDcxLCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyMTIsIAotICAgIDExOSwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAyMTEsIDIwMiwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAKLSAgICAyMTEsIDIwMiwgMjA4LCA2OSwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgCi0gICAgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNSwgMjEsIAotICAgIDIyNCwgMiwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIDIsIDIwOCwgCi0gICAgMTIzLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAKLSAgICAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgCi0gICAgMjUwLCAxMiwgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgMjI0LCAyLCAyNDgsIAotICAgIDEwNCwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI1LCA5LCAyMSwgMjI0LCAKLSAgICAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjgsIDUsIAotICAgIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgCi0gICAgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCAKLSAgICA1MywgMjI4LCA1LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgCi0gICAgMjExLCA1MiwgMjEsIDIyNCwgMSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgNTIsIDI1MCwgMjUyLCAKLSAgICAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgMjQ1LCAxMzAsIDIxLCAKLSAgICAyMjQsIDEsIDIwOCwgNzAsIDIxMSwgNTMsIDIyNCwgMywgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgCi0gICAgMjExLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIDI1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIAotICAgIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDgsIDEyMCwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjQsIAotICAgIDEsIDI0NiwgMTY4LCAyMSwgMjI0LCAxLCA5OCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgOTgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgCi0gICAgOTgsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjI1LCA5LCAKLSAgICAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIAotICAgIDIxOSwgMzAsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAKLSAgICAyMTIsIDExOSwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjUwLCAKLSAgICAyNTIsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNDIsIDc4LCAKLSAgICAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNTAsIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NSwgODgsIDIxNywgNTYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI1LCA5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjgsIAotICAgIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAxMzYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAKLSAgICAxMzYsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgCi0gICAgODgsIDIzNywgMTM2LCAyMjgsIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjA5LCAyNywgMjQ2LCA2MiwgMjEyLCAzNiwgCi0gICAgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgCi0gICAgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjI4LCA3LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjI1LCA5LCAyMSwgMjIzLCAKLSAgICAyNTUsIDIyNywgMTUsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCA1LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIAotICAgIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMjUsIAotICAgIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKLSAgICAyNDUsIDg4LCAyMDgsIDcwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyNSwgCi0gICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCAyMDgsIDcwLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKLSAgICA4OCwgMjA5LCA4NCwgMjExLCA1MiwgMjEsIDIyMywgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjEyLCAzNiwgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjI1LCA5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjE1LCAxOTQsIAotICAgIDI0MiwgNzgsIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTQsIDIxLCAyMjMsIDI1NSwgMjEzLCA3MSwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDUsIDg4LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIAotICAgIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjEyLCAKLSAgICAxMjAsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCA1MiwgMjM2LCAyMjksIDIzOSwgMTE5LCAKLSAgICAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIAotICAgIDI1NSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIAotICAgIDE0OSwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCi0gICAgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIAotICAgIDE5NCwgNTIsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMTQ5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0MywgMjI4LCAyMTksIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAotICAgIDI0MywgMjI4LCAyMTksIDUyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIyOCwgCi0gICAgNywgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAKLSAgICAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIAotICAgIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgCi0gICAgMjI3LCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDIxMiwgCi0gICAgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAotICAgIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIAotICAgIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAKLSAgICAyMSwgMjE1LCAxOTUsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMTUsIDE5NSwgNTIsIDIzNiwgMjI5LCAKLSAgICAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMjI2LCAyMSwgMjI0LCAxLCAyNDUsIAotICAgIDg4LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgCi0gICAgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAotICAgIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIAotICAgIDIyOSwgMjM5LCAyMDUsIDIwOCwgNzAsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIAotICAgIDIwNSwgMjA4LCA3MCwgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIAotICAgIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjEyLCAxMTksIAotICAgIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgCi0gICAgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIAotICAgIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDcsIDIxLCAyMTUsIAotICAgIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIDIzOSwgMjA0LCAKLSAgICAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAyMDQsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIxMiwgMzYsIAotICAgIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAKLSAgICAyNDUsIDg4LCAyMjgsIDUsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDI0NSwgMjM3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMTIsIAotICAgIDM2LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMTIsIDI0LCAyMSwgMjI0LCAKLSAgICAxLCAyMDQsIDc2LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMjgsIDcsIDIxLCAyMTUsIDE5NSwgMjEyLCAxMTksIAotICAgIDIxLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MiwgMjEsIDIyNCwgMSwgMjEzLCA3MiwgMjE5LCAKLSAgICA4MSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgNSwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIAotICAgIDI0NiwgNjIsIDIyNSwgMTAsIDIxMiwgMTE5LCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyNDIsIDc4LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMjUsIDEwLCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgCi0gICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAKLSAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIAotICAgIDIyOSwgMjA0LCAxMDAsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAKLSAgICAxMDAsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIAotICAgIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyMDMsIDIyMSwgMjQ2LCA2MiwgMjM5LCAxMTksIDIxMiwgMTE5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIAotICAgIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIwMywgMjIxLCAyNDYsIDYyLCAKLSAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgMjQwLCAzLCAyNDYsIDU5LCAyMTIsIDExOSwgMjEsIAotICAgIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ2LCA1OSwgMjM2LCAKLSAgICAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIDIyOSwgMjA0LCAxMDAsIAotICAgIDI0MiwgNzgsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIxMiwgMzYsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIyOCwgNywgMjEsIAotICAgIDI0MiwgNCwgMjQwLCA3NCwgMjEsIDI0MiwgNCwgMjEyLCAzOSwgMjEsIDI0MiwgNCwgMjA5LCAxNDUsIDIxLCAyNDIsIDQsIAotICAgIDIxNiwgMTE1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNSwgMjEsIDI0MiwgNCwgMjEyLCAxMjYsIDI1MCwgMjUyLCAyMSwgMjQyLCAKLSAgICA0LCAyNDAsIDIyMSwgMjE5LCAyMjEsIDIwOCwgMjIxLCAyMSwgMjQyLCA0LCAyMzgsIDEyLCAyMSwgMjM3LCA2NCwgMjEsIAotICAgIDIzNywgNjUsIDIxNiwgMSwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIAotICAgIDIwOCwgMjI0LCAyMSwgMjM3LCA2NSwgMjI0LCAxLCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDI0NSwgODcsIAotICAgIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDI0NSwgODcsIDIxLCAyMzcsIDY1LCAyMjQsIDQsIDI0NiwgNjEsIDIxLCAyNDAsIDEwMywgCi0gICAgMjQzLCAxNjYsIDIxOCwgMzQsIDIyMSwgMTY4LCAyMzksIDE1MiwgMjA4LCAyMjIsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIAotICAgIDIxOCwgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAyNDIsIDcwLCAyMSwgMjQwLCAxMDMsIDI0MywgMTY2LCAyMTgsIAotICAgIDM0LCAyMjEsIDE2OCwgMTEyLCAyMTksIDI0NSwgMTIxLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMDYsIAotICAgIDIyNCwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMjIsIDIxNSwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyNDIsIDcwLCAyMSwgCi0gICAgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgMjE2LCAyNDIsIDcwLCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDEyMSwgMjIyLCAKLSAgICAyMTUsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTEyLCAyMjIsIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAyMjIsIAotICAgIDIxNiwgMjA2LCAyMjQsIDIxLCAyMzksIDE2NCwgMjIyLCAyMTUsIDIxLCAyMzksIDE2NCwgMjQ1LCAxOTcsIDIxLCAyMzksIAotICAgIDE2NCwgMjAzLCAyMjQsIDIxLCAyNDAsIDE4NSwgMjIwLCA4LCAyMSwgMjQwLCAxODUsIDIxMSwgMTcyLCAyMSwgMjQwLCAKLSAgICAxODUsIDI0NiwgMTUsIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgMjEyLCAxMTksIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgCi0gICAgMjIzLCAyMjUsIDIxLCAyNDAsIDE4NSwgMTYyLCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjA0LCAyNywgMjIwLCA4LCAyMSwgCi0gICAgMjQwLCAxODUsIDE2MiwgMjQ2LCAxNSwgMjEsIDI0MCwgMTg1LCAyMDQsIDI1LCAyMjQsIDMsIDIxLCAyNDAsIDE5MiwgMjA0LCAKLSAgICA5LCAyMSwgMjQwLCAxODYsIDIwNiwgMjI0LCAyMSwgMjQwLCAxODYsIDI0MiwgNzAsIDIxLCAyNDAsIDE4NiwgMjM5LCAxOTEsIAotICAgIDIxLCAyNDAsIDE4OCwgMjExLCA1MiwgMjEsIDI0MCwgMTg4LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgMjQwLCAxODgsIDIxMSwgCi0gICAgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODksIDIxMSwgNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MywgMjQyLCA3OCwgMjEsIAotICAgIDI0MCwgMTg5LCAyMTEsIDUzLCAyNTAsIDI1MiwgMjEsIDI0MCwgMTg4LCAyNDUsIDg1LCAyMSwgMjQwLCAxODksIDI0NSwgCi0gICAgODUsIDIxLCAyNDAsIDE4OCwgMjQ2LCA1NiwgMjEsIDI0NiwgMTY0LCAyMTcsIDE4MiwgMjEsIDI0NiwgMTY0LCAyMjIsIAotICAgIDIxNSwgMjEsIDI0NiwgMTY0LCAyMTAsIDIzNCwgMjEsIDIwOSwgMTQ2LCAyNDYsIDE2NCwgMjM2LCAyNDQsIDIxLCAyMDksIAotICAgIDE0NiwgMjQ2LCAxNjQsIDIyNCwgMTQ4LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMjcsIDAsIDIxLCAyNDEsIDE4MSwgCi0gICAgMjEsIDIyMSwgMTY4LCAyMjIsIDIxNSwgMjEsIDIyMSwgMTY4LCAyNDUsIDE5NywgMjEsIDIyMSwgMTY4LCAyMDMsIDIyMiwgCi0gICAgMjEsIDIyMSwgMTY4LCAyMDQsIDIyLCAyMSwgMjUxLCA1NSwgMjQ4LCAyNywgMjE5LCAyMTEsIDIxLCAyNTEsIDU1LCAyMTAsIAotICAgIDIzMywgMjMxLCA0OSwgMjEsIDI1MSwgNTUsIDI0OCwgMjksIDUsIDIxNSwgMTkzLCAyMSwgMjUxLCA1NSwgMjEwLCAyMzUsIAotICAgIDUsIDIxNSwgMTkzLCAyMSwgMjQ3LCAyMTYsIDIzMSwgMjIsIDIxLCAyNDcsIDIxNiwgMjQwLCAyMTAsIDIxLCAyMjQsIDgsIAotICAgIDI0NiwgMTYsIDIyMiwgMjE1LCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjQ2LCAxNiwgCi0gICAgMjQ1LCAxOTcsIDIxLCAyMjQsIDgsIDIxMiwgMzEsIDIxLCAyMjQsIDgsIDIxMiwgMzIsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAKLSAgICAyMTIsIDMyLCAyMjAsIDgsIDIxLCAyMjQsIDgsIDIzOSwgMTE1LCAyMSwgMjI0LCA4LCAyMzksIDExNiwgMjAzLCAyMjQsIAotICAgIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMjAsIDgsIDIxLCAyMjQsIDgsIDE3MSwgMjQ2LCA2MSwgMjEsIDIyNCwgOCwgMTcxLCAKLSAgICAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMTcxLCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNCwgMjEsIDIyNCwgCi0gICAgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgMjE5LCAyMDUsIDIwMywgNTksIDIxLCAyMjQsIAotICAgIDgsIDE3MSwgMjE2LCAxNDMsIDIxLCAyMjQsIDgsIDE3MSwgMjE2LCAxNDQsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIAotICAgIDIxNiwgMTQ0LCAyMDMsIDU5LCAyMSwgMjI0LCA4LCAyMjksIDY2LCAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMzksIDE1MSwgCi0gICAgMjEsIDIyNCwgOCwgMjI5LCA2NywgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDIwOSwgMTQ1LCAyMSwgMjI0LCA4LCAyMDksIAotICAgIDE0NiwgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDIwOSwgMTQ2LCAyMTAsIDIzNCwgMjEsIDIyNywgOTksIDIxNywgMjM5LCAKLSAgICAyMDgsIDE2OSwgMjEsIDIyNywgMTAxLCAyMjYsIDI1MSwgMTE1LCAyMDYsIDIyMCwgMjEsIDIyNywgMTAxLCAyMDYsIDIyMSwgCi0gICAgMTE1LCAyMjYsIDI1MCwgMjEsIDIyNCwgOCwgMjQ1LCAxNjQsIDIxLCAyMjQsIDgsIDIwMywgMjIzLCAyMTIsIDExOSwgMjEsIAotICAgIDIyNCwgOCwgMjAzLCAyMjMsIDI0MiwgNzgsIDIxLCAyMDgsIDE1MSwgMjExLCA3MiwgMjE5LCAyMTIsIDI0MCwgNzYsIDIxLCAKLSAgICAyMDgsIDE1MSwgMjI3LCAxNDQsIDIyNywgOTgsIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDI0OCwgMTA0LCAyMjcsIDk4LCAKLSAgICAyMSwgMjA4LCAxNTEsIDIwOCwgMjExLCAyMDgsIDEyNywgMjMxLCA3LCAyMjQsIDcsIDIxLCAyMDgsIDE1MSwgMjMxLCA3LCAKLSAgICAyMjQsIDgsIDIxNiwgMTE1LCAyMSwgMjA4LCAxNTEsIDIyMywgMjU0LCAyNTEsIDc5LCAyNDYsIDE2NSwgMjEsIDIwOCwgCi0gICAgMTUxLCAyNDYsIDIxOCwgMjExLCA3MiwgMjE5LCAyMTEsIDIxLCAyMDgsIDE1MSwgMjQ2LCAyMTgsIDIzMSwgNywgMjI0LCA3LCAKLSAgICAyMSwgMjA5LCAxNzIsIDIxLCAyMDksIDE3MywgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUwLCAyMSwgCi0gICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUxLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjI3LCA5OCwgMjEsIAotICAgIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk5LCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjQ4LCA1MCwgMjI3LCA5OCwgMjEsIAotICAgIDIyMywgMjU1LCAyMzAsIDE2NSwgMjEsIDIyNCwgMSwgMjMwLCAxNjUsIDIxLCAyMjIsIDIzNywgMjEsIDIzNywgMTQ1LCAyMSwgCi0gICAgMjQwLCAyMTMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxMSwgMjAzLCAyMSwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMTgsIAotICAgIDMzLCAyMSwgMjA0LCA5OCwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMjQsIDYsIDIxLCAyMzksIDIwMywgMjEyLCAyMTEsIDIzNiwgCi0gICAgMjM0LCAyMjQsIDYsIDIxLCAyMTIsIDIxMSwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMDQsIDEwNCwgMjEsIDIwOCwgMTM0LCAKLSAgICAyMTEsIDUzLCAyMTEsIDQxLCAyMSwgMjA4LCAxMzQsIDI0NSwgODYsIDI0OCwgMTIwLCAyMSwgMjA4LCAxMzUsIDIwNywgCi0gICAgMTM3LCAyMSwgMjA2LCAyMjEsIDI0OCwgMTgsIDIwOCwgMjIzLCAyMzksIDEyMCwgMjM2LCAyMzQsIDIzMCwgOTUsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjQ1LCAyMzgsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTUsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTQsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjI3LCAxOTMsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTIsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTEsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjI3LCAxOTAsIDIxLCAyMjcsIDEyNiwgMjI3LCAxODksIDIxLCAyNDAsIDIsIDIxLCAyMjcsIDQ1LCAyMTEsIAotICAgIDIyOCwgMjEsIDIyNywgNDYsIDIxMSwgMjI4LCAyMSwgMjI3LCA0NywgMjM3LCA0MSwgMjEsIDIyNywgNDcsIDIwNCwgMjMsIAotICAgIDIxLCAyMjcsIDQ3LCAyNDQsIDI0LCAyMSwgMjI3LCA0NywgMjM3LCA2NSwgMjIyLCAyMzcsIDIxLCAyMjcsIDQ3LCAyMDgsIAotICAgIDEzNiwgMjEsIDIyNywgNDcsIDIyNywgMTI1LCAyNDMsIDE5OCwgMjEsIDI0NSwgMjMzLCAyMSwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDIxLCAyMTMsIDE0MywgMjEsIDI0NSwgMjQyLCAyMSwgMjE5LCA3NiwgMjEsIDI0MCwgMTAsIDIyNCwgNjYsIDIxLCAKLSAgICAyNDAsIDEwLCAyMjQsIDY1LCAyMSwgMjQwLCAxMCwgMjI0LCA2NCwgMjEsIDI0MCwgMTAsIDIyNCwgNjMsIDIxLCAyNDAsIAotICAgIDEwLCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjYsIDIxLCAyMTUsIDE5NywgMjI0LCA2NSwgMjEsIDIxNSwgMTk3LCAKLSAgICAyMjQsIDY0LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjMsIDIxLCAyMTUsIDE5NywgMjI0LCA2MiwgMjEsIDIxNSwgMTk3LCAyMjQsIAotICAgIDYxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjAsIDIxLCAyMTUsIDE5NywgMjI0LCA1OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDczLCAKLSAgICAyMSwgMjE1LCAxOTcsIDIyNCwgNzIsIDIxLCAyMTUsIDE5NywgMjI0LCA3MSwgMjEsIDIxNSwgMTk3LCAyMjQsIDcwLCAyMSwgCi0gICAgMjE1LCAxOTcsIDIyNCwgNjksIDIxLCAyMTUsIDE5NywgMjI0LCA2OCwgMjEsIDIxNSwgMTk3LCAyMjQsIDY3LCA3MywgNzIsIAotICAgIDQsIDIyNiwgMTg0LCAyMjksIDEwMCwgNzMsIDcyLCA0LCAyMjYsIDE4MCwgMTczLCA3MywgNzIsIDQsIDIyNiwgMTc4LCAKLSAgICAyMjgsIDIwOSwgNzMsIDcyLCA0LCAyMjYsIDU0LCAyMjksIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDI0LCAyMjksIDIwMSwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDQzLCAyMjksIDYsIDczLCA3MiwgNCwgMjI2LCA3MSwgMjI5LCAyNiwgNzMsIDcyLCA0LCAyMjUsIDE5NiwgCi0gICAgMjI4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxNzUsIDIwNCwgMzAsIDczLCA3MiwgNCwgMjI2LCAxNzMsIDIwNCwgMTExLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTcxLCAyMDMsIDIxNywgNzMsIDcyLCA0LCAyMjUsIDI0OSwgMjA0LCA1NSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDEsIDIwNCwgNjIsIDczLCA3MiwgNCwgMjI2LCA1LCAyMDMsIDI0NCwgNzMsIDcyLCA0LCAyMjYsIDc0LCAyMDQsIDAsIAotICAgIDczLCA3MiwgNCwgMjI1LCAxODEsIDIwMywgMjEzLCA3MywgNzIsIDQsIDIyNSwgMjMyLCAyMDQsIDUzLCA3MywgNzIsIDQsIAotICAgIDIyNiwgNTgsIDIwMywgMjAxLCA3MywgNzIsIDQsIDIyNiwgNzAsIDIwMywgMjAzLCA3MywgNzIsIDQsIDIyNSwgMjM2LCAKLSAgICAyMDMsIDIwMiwgNzMsIDcyLCA0LCAyMjYsIDE2OSwgMjI0LCAxMTAsIDczLCA3MiwgNCwgMjI2LCAxNjcsIDIyNSwgMTIyLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTY1LCAyMjMsIDIxOSwgNzMsIDcyLCA0LCAyMjYsIDYwLCAyMjQsIDI0MCwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDI1LCAyMjQsIDU0LCA3MywgNzIsIDQsIDIyNSwgMjIxLCAyMjMsIDI0MywgNzMsIDcyLCA0LCAyMjUsIDE4NiwgCi0gICAgMjIzLCAyMzcsIDczLCA3MiwgNCwgMjI2LCAxNjMsIDI0OCwgODYsIDczLCA3MiwgNCwgMjI2LCAxNjAsIDI0OSwgMzIsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxNTgsIDI0NywgMTkzLCA3MywgNzIsIDQsIDIyNSwgMjI1LCAyNDgsIDE1MCwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDIyLCAyNDgsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDE2LCAyNDgsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjM3LCAyNDgsIDIzLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTQ4LCA3NSwgNzMsIDcyLCA0LCAyMjYsIDE0NiwgNjMsIDczLCA3MiwgNCwgMjI2LCAxNDQsIAotICAgIDY4LCA3MywgNzIsIDQsIDIyNSwgMjEyLCAyNDEsIDE2MSwgNzMsIDcyLCA0LCAyMjYsIDE5LCA3NCwgNzMsIDcyLCA0LCAKLSAgICAyMjUsIDIxMCwgMjIwLCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyOCwgNzgsIDczLCA3MiwgNCwgMjI1LCAyMzgsIDI0MSwgCi0gICAgMTQ1LCA3MywgNzIsIDQsIDIyNSwgMjQ0LCAyMzEsIDQ5LCA3MywgNzIsIDQsIDIyNSwgMjQwLCAyMzEsIDQ5LCA3MywgNzIsIAotICAgIDQsIDIyNSwgMTgwLCAyNTAsIDIzMSwgNzMsIDcyLCA0LCAyMjUsIDE5NywgMjQxLCA5MiwgNzMsIDcyLCA0LCAyMjYsIDEzMywgCi0gICAgMjEyLCAxNjIsIDczLCA3MiwgNCwgMjI2LCAxMzEsIDIxNSwgMzYsIDczLCA3MiwgNCwgMjI2LCAxMjksIDIxMSwgMTAsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTMsIDIxNCwgMTY1LCA3MywgNzIsIDQsIDIyNiwgMywgMjE0LCAxNzcsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMzksIDIxMSwgMjUwLCA3MywgNzIsIDQsIDIyNiwgNDAsIDIxMiwgMTMsIDczLCA3MiwgNCwgMjI1LCAxNzksIDIxMiwgCi0gICAgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTE5LCAyMjcsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDExNywgMjI4LCAxMTMsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxMTUsIDIyNiwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMzUsIDIyNywgMjI2LCA3MywgNzIsIDQsIDIyNiwgCi0gICAgNDYsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgNjUsIDIyNywgMTgsIDczLCA3MiwgNCwgMjI1LCAyMjIsIDIyNywgNDksIAotICAgIDczLCA3MiwgNCwgMjI2LCA5LCAxNjMsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgMTQxLCAyNDMsIDIzMywgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDEzOCwgMjQ0LCAyMTIsIDczLCA3MiwgNCwgMjI2LCAxMzUsIDI0MiwgNDIsIDczLCA3MiwgNCwgMjI2LCAzMCwgCi0gICAgMjQ0LCA2MSwgNzMsIDcyLCA0LCAyMjUsIDE5NSwgMjQzLCA5MCwgNzMsIDcyLCA0LCAyMjUsIDE5NCwgMjQzLCAxMTMsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxMjcsIDIwOSwgMiwgNzMsIDcyLCA0LCAyMjYsIDEyNCwgMjEwLCAyMiwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDEyMiwgMjA3LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAyOCwgMjA5LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA2NCwgMjA5LCAKLSAgICAxODcsIDczLCA3MiwgNCwgMjI2LCAxNSwgMjA4LCAxNDgsIDczLCA3MiwgNCwgMjI2LCA1MCwgMTM1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgMTEzLCAyMzAsIDE0MSwgNzMsIDcyLCA0LCAyMjYsIDExMCwgMjMwLCAxODEsIDczLCA3MiwgNCwgMjI2LCAxMDgsIAotICAgIDIzMCwgODIsIDczLCA3MiwgNCwgMjI1LCAyMTgsIDIzMCwgMTU5LCA3MywgNzIsIDQsIDIyNiwgNiwgMjMwLCAxNjEsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTUsIDIzMCwgOTEsIDczLCA3MiwgNCwgMjI2LCA1NiwgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMDAsIDE2MywgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI2LCAxMDYsIDIwMywgMTEsIDczLCA3MiwgNCwgMjI2LCAxMDMsIAotICAgIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDEwMSwgMjAyLCAyMTMsIDczLCA3MiwgNCwgMjI2LCAxMCwgMjAzLCA0OSwgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDM5LCAyMDMsIDUyLCA3MywgNzIsIDQsIDIyNSwgMjM0LCAyMDIsIDIzMiwgNzMsIDcyLCA0LCAyMjUsIDI1NCwgCi0gICAgMjAyLCAyNDcsIDczLCA3MiwgNCwgMjI2LCA5NywgMjQwLCAyNiwgNzMsIDcyLCA0LCAyMjYsIDk1LCAyNDAsIDEwOCwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDkzLCAyMzksIDEwOCwgNzMsIDcyLCA0LCAyMjYsIDQxLCAyNDAsIDUzLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgNDQsIDI0MCwgNjAsIDczLCA3MiwgNCwgMjI1LCAyNDIsIDIzOSwgMTc1LCA3MywgNzIsIDQsIDIyNiwgMzEsIDIzOSwgMTg2LCAKLSAgICA3MywgNzIsIDQsIDIyNSwgMTc4LCAyMzksIDEwNywgNzMsIDcyLCA0LCAyMjYsIDE4LCAyNDAsIDgxLCA3MywgNzIsIDQsIAotICAgIDIyNiwgOTEsIDIyMiwgNjgsIDczLCA3MiwgNCwgMjI2LCA4OSwgMjIzLCA4MywgNzMsIDcyLCA0LCAyMjYsIDg3LCAyMjEsIAotICAgIDQwLCA3MywgNzIsIDQsIDIyNiwgMiwgMjIyLCAyMzAsIDczLCA3MiwgNCwgMjI1LCAyMDYsIDIyMSwgMTg1LCA3MywgNzIsIAotICAgIDQsIDIyNSwgMTk5LCAyMzcsIDMsIDczLCA3MiwgNCwgMjI2LCA4MiwgMTUyLCA3MywgNzIsIDQsIDIyNSwgMTg5LCAyMzYsIAotICAgIDI2LCA3MywgNzIsIDQsIDIyNiwgODUsIDIzNywgNDgsIDczLCA3MiwgNCwgMjI2LCAyMywgMjM3LCA2NywgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDgwLCAyMzYsIDExNywgNzMsIDcyLCA0LCAyMjUsIDIzNSwgMjM2LCAxMzYsIDczLCA3MiwgNCwgMjI2LCAzNiwgCi0gICAgMjM3LCA0NywgNzMsIDcyLCA0LCAyMjUsIDI0NywgMjM2LCAxMTAsIDczLCA3MiwgNCwgMjI2LCA2NiwgMjM2LCAyMzgsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyNDUsIDIzNywgMTI2LCA3MywgNzIsIDQsIDIyNiwgMzIsIDIzNiwgMTMsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA2NywgMjM3LCAzMywgNzMsIDcyLCA0LCAyMjUsIDE4MiwgMjM2LCAxMjAsIDczLCA3MiwgNCwgMjI2LCA3MywgMjM2LCAyNSwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDI5LCAyMjIsIDE2OCwgNzMsIDcyLCA0LCAyMjYsIDc4LCAyMjIsIDE4MiwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDM3LCAyMjIsIDE2NSwgNzMsIDcyLCA0LCAyMjYsIDQsIDIyMiwgMTc2LCA3MywgNzIsIDQsIDIyNSwgMjI5LCAyMjIsIAotICAgIDE3NywgNzMsIDcyLCA0LCAyMjUsIDIxOSwgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAyNTUsIDIyMiwgMTY3LCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjE2LCAyMjIsIDE4MSwgNzMsIDcyLCA0LCAyMjUsIDI0OCwgMjIyLCAxNjQsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAzMywgMTYzLCAyMjIsIDE3NywgNzMsIDcyLCA0LCAyMjYsIDEzLCAxNjMsIDIyMiwgMTY2LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMTkyLCAxNjMsIDIyMiwgMTY3LCA3MywgNzIsIDQsIDIyNSwgMjIwLCAyMzgsIDgxLCA3MywgNzIsIDQsIDIyNiwgOCwgMjM5LCAKLSAgICA4LCA3MywgNzIsIDQsIDIyNSwgMjA3LCAyMzcsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE4NSwgMjM4LCAxODIsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyMDksIDIzNywgMjE2LCA3MywgNzIsIDQsIDIyNSwgMjA4LCAyMzcsIDIyNiwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDE5MSwgMjIyLCAxODcsIDczLCA3MiwgNCwgMjI2LCA2MiwgMjIyLCAxMjQsIDczLCA3MiwgNCwgMjI1LCAxOTgsIDIyMiwgCi0gICAgMTEzLCA3MywgNzIsIDQsIDIyNiwgNTEsIDIxOCwgMTY3LCA3MywgNzIsIDQsIDIyNiwgMjAsIDE4NSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDY5LCAyMTcsIDE5MSwgNzMsIDcyLCA0LCAyMjYsIDM4LCAyMTksIDIzLCA3MywgNzIsIDQsIDIyNiwgNjgsIDIxOSwgCi0gICAgMzQsIDczLCA3MiwgNCwgMjI2LCAxNywgMjE4LCA0NSwgNzMsIDcyLCA0LCAyMjYsIDUzLCAyMTgsIDY5LCA3MywgNzIsIDQsIAotICAgIDIyNSwgMjMwLCAyMjUsIDM5LCA3MywgNzIsIDQsIDIyNiwgNTcsIDIyNSwgNTQsIDczLCA3MiwgNCwgMjI1LCAyNTMsIDIyNSwgCi0gICAgMzMsIDczLCA3MiwgNCwgMjI2LCA3MiwgMjI1LCA0NiwgNzMsIDcyLCA0LCAyMjUsIDE4NywgMjI1LCA0NiwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDQ3LCAyMjUsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjAzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjAxLCAyMjUsIAotICAgIDM1LCA3MywgNzIsIDQsIDIyNSwgMTg4LCAyMjUsIDI3LCA3MywgNzIsIDQsIDIyNSwgMjE0LCAxNjMsIDIyNSwgNDcsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxNCwgMTYzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjMzLCAxNjMsIDIyNSwgMzUsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyNDMsIDIyOCwgMjM2LCA3MywgNzIsIDQsIDIyNiwgMjcsIDIyOCwgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNDUsIAotICAgIDIyOCwgMjMyLCA3MywgNzIsIDQsIDIyNiwgNzYsIDIyOCwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMTEsIDIyOCwgMjQwLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgNywgMjI4LCAyMzQsIDczLCA3MiwgNCwgMjI1LCAyMTcsIDIyOCwgMjM1LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjUxLCAyMzgsIDE5OSwgNzMsIDcyLCA0LCAyMjYsIDYzLCAyMzgsIDIwNywgNzMsIDcyLCA0LCAyMjUsIDIyNywgMjM4LCAKLSAgICAxOTQsIDczLCA3MiwgNCwgMjI2LCAyNiwgMjM4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxMiwgMjM4LCAyMDQsIDczLCA3MiwgCi0gICAgNCwgMjI2LCA0OCwgMjM4LCAxOTUsIDczLCA3MiwgNCwgMjI2LCA0OSwgMjM4LCAxOTcsIDczLCA3MiwgNCwgMjI1LCAyMDQsIAotICAgIDIxNiwgMjIwLCA3MywgNzIsIDQsIDIyNSwgMjUyLCAyMjMsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjQ2LCAyMjMsIDI1LCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjUwLCAyMjIsIDI0OCwgNzMsIDcyLCA0LCAyMjUsIDE4NCwgMjIzLCAxNiwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDAsIDIyMywgMTcsIDczLCA3MiwgNCwgMjI2LCA1MiwgMjIyLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1NSwgMjIzLCAxLCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjIzLCAyMjIsIDQ4LCA3MywgNzIsIDQsIDIyNSwgMTgzLCAyMjIsIDE4LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjI2LCAyMjIsIDM5LCA3MywgNzIsIDQsIDIyNSwgMjQxLCAyMjIsIDIyLCA3MywgNzIsIDQsIDIyNSwgMTkzLCAyMDUsIAotICAgIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE5MCwgMjA2LCA4NiwgNzMsIDcyLCA0LCAyMjUsIDIyNCwgMjA0LCAxNjMsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyMDIsIDIwNiwgNTAsIDczLCA3MiwgNCwgMjI2LCAzNCwgMjA2LCA1NSwgNzMsIDcyLCA0LCAyMjUsIDIzMSwgCi0gICAgMjA1LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA0MiwgMjA1LCAxODksIDczLCA3MiwgNCwgMjI1LCAyMTEsIDIyMCwgMjQyLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgNjEsIDIyMSwgNSwgNzMsIDcyLCA0LCAyMjUsIDIwNSwgMjIwLCAyMjQsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAyMSwgMjIwLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1OSwgMjIwLCAyMzEsIDczLCA3MiwgMTcsIDEwNSwgNzMsIDcyLCAKLSAgICAxNywgMTA4LCA3MywgNzIsIDE3LCAxNDcsIDczLCA3MiwgMTcsIDE0OSwgNzMsIDcyLCAxNywgMTcwLCA3MywgNzIsIDE3LCAKLSAgICAxOTUsIDczLCA3MiwgMTcsIDIxMywgMTExLCA3MywgNzIsIDE3LCAxOTksIDczLCA3MiwgMTcsIDIyMiwgNjMsIDczLCA3MiwgCi0gICAgMzksIDQyLCAyMDksIDE3NCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTQ3LCA3MywgNzIsIDM5LCA0MiwgMjM2LCAxMCwgNzMsIAotICAgIDcyLCAzOSwgNDIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIAotICAgIDIzNiwgMTIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMjQsIDExMywgMTAsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDI0OCwgCi0gICAgMTM4LCAxMCwgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjAyLCAKLSAgICAxMDcsIDEwLCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjAzLCA0NywgMTAsIDEzLCAyMzAsIAotICAgIDIyLCAxMCwgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyMSwgMTc4LCAxMCwgMTMsIDIxNCwgMTYxLCAKLSAgICAxMCwgMTMsIDI1MSwgNTksIDEwLCAxMywgMjQwLCA0NywgMTAsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIxNywgMTE5LCAxMCwgCi0gICAgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIxMywgMzksIDEwLCAxMywgMjA5LCAxNjksIDEwLCAxMywgMjA5LCA4OCwgMTAsIDEzLCAKLSAgICAyMjksIDE0MCwgMTAsIDEzLCAyMDksIDEwMCwgMTAsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKLSAgICAyMzgsIDExNCwgMTAsIDEzLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEzLCAyNDMsIDg0LCAyMjEsIDE3OCwgMTAsIDEzLCAKLSAgICAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMTMsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDgxLCAyNDgsIDEzOCwgMTAsIAotICAgIDEzLCA4MSwgMjMwLCAxNTgsIDEwLCAxMywgODEsIDIzNywgNDMsIDEwLCAxMywgODEsIDIzNywgMTQ4LCAxMCwgMTMsIDgxLCAKLSAgICAyMDMsIDQ3LCAxMCwgMTMsIDgxLCAyMzAsIDIyLCAxMCwgMTMsIDgxLCAyMjgsIDI4LCAxMCwgMTMsIDgxLCAyMjUsIDUsIAotICAgIDEwLCAxMywgODEsIDIyMSwgMTc4LCAxMCwgMTMsIDgxLCAyMTQsIDE2MSwgMTAsIDEzLCA4MSwgMjUxLCA1OSwgMTAsIDEzLCAKLSAgICA4MSwgMjQwLCA0NywgMTAsIDEzLCA4MSwgMjE1LCAyOCwgMTAsIDEzLCA4MSwgMjE3LCAxMTksIDEwLCAxMywgODEsIDIxMywgCi0gICAgMzksIDEwLCAxMywgODEsIDIwOSwgMTY5LCAxMCwgMTMsIDgxLCAyMDksIDg4LCAxMCwgMTMsIDgxLCAyMjksIDE0MCwgMTAsIAotICAgIDEzLCA4MSwgMjQ0LCAyMDcsIDEwLCAxMywgODEsIDIzOCwgMTE0LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzAsIDE1OCwgMTAsIAotICAgIDEzLCAyMDksIDI0NywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNDcsIDIwMywgNDcsIDEwLCAxMywgMjA5LCAyNDcsIDIyOCwgCi0gICAgMjgsIDEwLCAxMywgMjA5LCAyNDcsIDIyMSwgMTc4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTQsIDE2MSwgMTAsIDEzLCAyMDksIAotICAgIDI0NywgMjUxLCA1OSwgMTAsIDEzLCAyMDksIDI0NywgMjE1LCAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjE3LCAxMTksIDEwLCAKLSAgICAxMywgMjA5LCAyNDcsIDIxMywgMzksIDEwLCAxMywgMjA5LCAyNDcsIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMjQ3LCAyNDQsIAotICAgIDIwNywgMTAsIDEzLCAyMDksIDI0NywgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgCi0gICAgMTMsIDIwOSwgMjQ3LCAyNDMsIDg0LCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyNDgsIDEzOCwgMTAsIDEzLCAyMTEsIAotICAgIDQwLCAyMzAsIDE1OCwgMTAsIDEzLCAyMTEsIDQwLCAyMzcsIDQzLCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgMTQ4LCAxMCwgCi0gICAgMTMsIDIxMSwgNDAsIDIwOSwgMjUxLCAxMCwgMTMsIDIxMSwgNDAsIDIwMywgNDcsIDEwLCAxMywgMjExLCA0MCwgMjMwLCAKLSAgICAyMiwgMTAsIDEzLCAyMTEsIDQwLCAyMjUsIDUsIDEwLCAxMywgMjExLCA0MCwgMjIxLCAxNzgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjE0LCAxNjEsIDEwLCAxMywgMjExLCA0MCwgMjUxLCA1OSwgMTAsIDEzLCAyMTEsIDQwLCAyNDAsIDQ3LCAxMCwgMTMsIAotICAgIDIxMSwgNDAsIDIxNSwgMjgsIDEwLCAxMywgMjExLCA0MCwgMjE3LCAxMTksIDEwLCAxMywgMjExLCA0MCwgMjEzLCAzOSwgCi0gICAgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDE2OSwgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDg4LCAxMCwgMTMsIDIxMSwgNDAsIAotICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIxMSwgNDAsIDI0NCwgMjA3LCAxMCwgMTMsIDIxMSwgNDAsIDIwMiwgMTEwLCAxMCwgMTMsIAotICAgIDIxMSwgNDAsIDIzOCwgMTE0LCAxMCwgMTMsIDIxMSwgNDAsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgNDAsIAotICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjUxLCAzMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDgsIDEzOCwgCi0gICAgMTAsIDEzLCAyMjcsIDEzLCAyMzAsIDE1OCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDE4NCwgMTAsIDEzLCAyMjcsIDEzLCAKLSAgICAyMzcsIDQzLCAxMCwgMTMsIDIyNywgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMDcsIDEwLCAxMywgCi0gICAgMjI3LCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjI3LCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjI3LCAxMywgMjAzLCA0NywgCi0gICAgMTAsIDEzLCAyMjcsIDEzLCAyMjgsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIyNSwgNSwgMTAsIDEzLCAyMjcsIDEzLCAyMjEsIAotICAgIDE3OCwgMTAsIDEzLCAyMjcsIDEzLCAyMTQsIDE2MSwgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDU5LCAxMCwgMTMsIDIyNywgCi0gICAgMTMsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjE1LCAyOCwgMTAsIDEzLCAyMjcsIDEzLCAyMTcsIDExOSwgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMTYsIDEyMiwgMTAsIDEzLCAyMjcsIDEzLCAyMTMsIDM5LCAxMCwgMTMsIDIyNywgMTMsIDIwOSwgMTY5LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIwOSwgODgsIDEwLCAxMywgMjI3LCAxMywgMjI5LCAxNDAsIDEwLCAxMywgMjI3LCAxMywgCi0gICAgMjA5LCAxMDAsIDEwLCAxMywgMjI3LCAxMywgMjQ0LCAyMDcsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMTAsIDEwLCAxMywgCi0gICAgMjI3LCAxMywgMjM4LCAxMTQsIDEwLCAxMywgMTY5LCAyNDgsIDEzOCwgMTAsIDEzLCAxNjksIDIzMCwgMTU4LCAxMCwgMTMsIAotICAgIDE2OSwgMjQ0LCAxODQsIDEwLCAxMywgMTY5LCAyMDQsIDcwLCAxMCwgMTMsIDE2OSwgMjAyLCAxMDcsIDEwLCAxMywgMTY5LCAKLSAgICAyMzcsIDE0OCwgMTAsIDEzLCAxNjksIDIwOSwgMjUxLCAxMCwgMTMsIDE2OSwgMjAzLCA0NywgMTAsIDEzLCAxNjksIDIyOCwgCi0gICAgMjgsIDEwLCAxMywgMTY5LCAyMjUsIDUsIDEwLCAxMywgMTY5LCAyMjEsIDE3OCwgMTAsIDEzLCAxNjksIDIxNCwgMTYxLCAKLSAgICAxMCwgMTMsIDE2OSwgMjUxLCA1OSwgMTAsIDEzLCAxNjksIDI0MCwgNDcsIDEwLCAxMywgMTY5LCAyMTUsIDI4LCAxMCwgMTMsIAotICAgIDE2OSwgMjE3LCAxMTksIDEwLCAxMywgMTY5LCAyMTYsIDEyMiwgMTAsIDEzLCAxNjksIDIxMywgMzksIDEwLCAxMywgMTY5LCAKLSAgICAyMDksIDE2OSwgMTAsIDEzLCAxNjksIDIwOSwgODgsIDEwLCAxMywgMTY5LCAyMjksIDE0MCwgMTAsIDEzLCAxNjksIDIwOSwgCi0gICAgMTAwLCAxMCwgMTMsIDE2OSwgMjQ0LCAyMDcsIDEwLCAxMywgMTY5LCAyMDIsIDExMCwgMTAsIDEzLCAxNjksIDIzOCwgMTE0LCAKLSAgICAxMCwgMTMsIDIxOSwgMjU1LCA4MywgMywgMTUxLCAzLCAyMDksIDIwOSwgMTAsIDEzLCAyMTksIDI1NSwgMTUxLCAzLCAyNDQsIAotICAgIDE4NCwgMjI1LCAxNDIsIDk5LCAyNDEsIDE3NiwgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAyMTEsIDIzOCwgMjA0LCAxNiwgCi0gICAgMjI1LCAxNDIsIDk5LCAyMDQsIDQ2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDE1MywgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAKLSAgICAyMTYsIDEzOCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAyMzcsIDI0NCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCA2MSwgCi0gICAgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDYsIAotICAgIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0NiwgCi0gICAgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIAotICAgIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIAotICAgIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgCi0gICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ4LCAKLSAgICAyNDMsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIAotICAgIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgCi0gICAgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjIyLCAKLSAgICA2NCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgCi0gICAgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0NiwgCi0gICAgNTgsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTgsIDc5LCAyMjUsIDE0MiwgCi0gICAgOTksIDIxOSwgMjQyLCAyMjUsIDE0MiwgOTksIDI0OCwgMjQ0LCAyMjUsIDE0MiwgOTksIDI0NiwgOTksIDIyNSwgMTQyLCAKLSAgICA5OSwgMjExLCAxODMsIDIyNSwgMTQyLCA5OSwgMjEwLCAyMTYsIDIyNSwgMTQyLCA5OSwgMjUwLCAyMSwgMjI1LCAxNDIsIAotICAgIDk5LCAyMDQsIDcsIDIyNSwgMTQyLCA5OSwgMjMwLCA5NCwgMjI1LCAxNDIsIDk5LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIAotICAgIDEwNiwgMjQ5LCAyNSwgMTYxLCA5OSwgMjM2LCAxMDQsIDE2MSwgOTksIDIzNiwgMTAzLCAxNjEsIDk5LCAyMzYsIDEwMiwgCi0gICAgMTYxLCA5OSwgMjM2LCAxMDEsIDE2MSwgOTksIDIzNiwgMTAwLCAxNjEsIDk5LCAyMzYsIDk5LCAxNjEsIDk5LCAyMzYsIDk4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDk3LCAxNjEsIDk5LCAyMzYsIDk2LCAxNjEsIDk5LCAyMzYsIDk1LCAxNjEsIDk5LCAyMzYsIDk0LCAKLSAgICAxNjEsIDk5LCAyMzYsIDkzLCAxNjEsIDk5LCAyMzYsIDkyLCAxNjEsIDk5LCAyMzYsIDkxLCAxNjEsIDk5LCAyMzYsIDkwLCAKLSAgICAxNjEsIDk5LCAyMzYsIDg5LCAxNjEsIDk5LCAyMzYsIDg4LCAxNjEsIDk5LCAyMzYsIDg3LCAxNjEsIDk5LCAyMzYsIDg2LCAKLSAgICAxNjEsIDk5LCAyMzYsIDg1LCAxNjEsIDk5LCAyMzYsIDg0LCAxNjEsIDk5LCAyMzYsIDgzLCAxNjEsIDk5LCAyMzYsIDgyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDgxLCAxNjEsIDk5LCAyMzYsIDgwLCAxNjEsIDk5LCAyMzYsIDc5LCAxNjEsIDk5LCAyMzYsIDc4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDc3LCAxNjEsIDk5LCAyMzYsIDc2LCAxNjEsIDk5LCAyMzYsIDc1LCAxNjEsIDk5LCAyMzYsIDc0LCAKLSAgICAxNjEsIDk5LCAyMzYsIDczLCAxNjEsIDk5LCAyMzYsIDcyLCAxNjEsIDk5LCAyMzYsIDcxLCAxNjEsIDk5LCAyMzYsIDcwLCAKLSAgICAxNjEsIDk5LCAyMzYsIDY5LCAxNjEsIDk5LCAyMzYsIDY4LCAxNjEsIDk5LCAyMzYsIDY3LCAxNjEsIDk5LCAyMzYsIDY2LCAKLSAgICAxNjEsIDk5LCAyMzYsIDY1LCAxNjEsIDk5LCAyMzYsIDY0LCAxNjEsIDk5LCAyMzYsIDYzLCAxNjEsIDk5LCAyMzYsIDYyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDYxLCAxNjEsIDk5LCAyMzYsIDYwLCAxNjEsIDk5LCAyMzYsIDU5LCAxNjEsIDk5LCAyMzYsIDU4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDU3LCAxNjEsIDk5LCAyMzYsIDU2LCAxNjEsIDk5LCA4MCwgMjQ5LCAyNSwgMTYxLCA5OSwgMjA2LCAKLSAgICAzNywgMTYxLCA5OSwgMjA2LCAzNiwgMTYxLCA5OSwgMjA2LCAzNSwgMTYxLCA5OSwgMjA2LCAzNCwgMTYxLCA5OSwgMjA2LCAKLSAgICAzMywgMTYxLCA5OSwgMjA2LCAzMiwgMTYxLCA5OSwgMjA2LCAzMSwgMTYxLCA5OSwgMjA2LCAzMCwgMTYxLCA5OSwgMjA2LCAKLSAgICAyOSwgMTYxLCA5OSwgMjA2LCAyOCwgMTYxLCA5OSwgMjA2LCAyNywgMTYxLCA5OSwgMjA2LCAyNiwgMTYxLCA5OSwgMjA2LCAKLSAgICAyNSwgMTYxLCA5OSwgMjA2LCAyNCwgMTYxLCA5OSwgMjA2LCAyMywgMTYxLCA5OSwgMjA2LCAyMiwgMTYxLCA5OSwgMjA2LCAKLSAgICAyMSwgMTYxLCA5OSwgMjA2LCAyMCwgMTYxLCA5OSwgMjA2LCAxOSwgMTYxLCA5OSwgMjA2LCAxOCwgMTYxLCA5OSwgMjA2LCAKLSAgICAxNywgMTYxLCA5OSwgMjA2LCAxNiwgMTYxLCA5OSwgMjA2LCAxNSwgMTYxLCA5OSwgMjA2LCAxNCwgMTYxLCA5OSwgMjA2LCAKLSAgICAxMywgMTYxLCA5OSwgMjA2LCAxMiwgMTYxLCA5OSwgMjA2LCAxMSwgMTYxLCA5OSwgMjA2LCAxMCwgMTYxLCA5OSwgMjA2LCAKLSAgICA5LCAxNjEsIDk5LCAyMDYsIDgsIDE2MSwgOTksIDIwNiwgNywgMTYxLCA5OSwgMjA2LCA2LCAxNjEsIDk5LCAyMDYsIDUsIAotICAgIDE2MSwgOTksIDIwNiwgNCwgMTYxLCA5OSwgMjA2LCAzLCAxNjEsIDk5LCAyMDYsIDIsIDE2MSwgOTksIDIwNiwgMSwgMTYxLCAKLSAgICA5OSwgMjA2LCAwLCAxNjEsIDk5LCAyMDUsIDI1NSwgMTYxLCA5OSwgMjA1LCAyNTQsIDE2MSwgOTksIDIwNSwgMjUzLCAxNjEsIAotICAgIDk5LCAyMDUsIDI1MiwgMTYxLCA5OSwgMjA1LCAyNTEsIDE2MSwgOTksIDIwNSwgMjUwLCAxNjEsIDk5LCAyMDUsIDI0OSwgCi0gICAgMTYxLCA5OSwgMjA1LCAyNDgsIDE2MSwgOTksIDIwNSwgMjQ3LCAxNjEsIDk5LCAyMDUsIDI0NiwgMTYxLCA5OSwgMjA1LCAKLSAgICAyNDUsIDIxOCwgODgsIDI0NywgMzgsIDI0OSwgMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjExLCAyMjUsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAKLSAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIAotICAgIDExMiwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjExLCAyMjUsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAKLSAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIAotICAgIDgyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMTIwLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMjM5LCAxNDcsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIDIzNywgNTMsIDIxOCwgCi0gICAgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDIzNywgCi0gICAgNTMsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgCi0gICAgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjMwLCAxNzksIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyMzcsIDUzLCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMTYsIDEzOCwgMjMwLCA5NCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDMsIAotICAgIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0MywgCi0gICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIAotICAgIDIzMywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgCi0gICAgMzgsIDIxMywgMTEyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjQzLCAyMjAsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAKLSAgICAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjI5LCAzMiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgNjIsIDIzMCwgOTQsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDYsIDIsIDIxOCwgCi0gICAgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyNDYsIDIsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgCi0gICAgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAKLSAgICAxNDMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOSwgMTUzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDI0NiwgMiwgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgNjEsIDIzMCwgOTQsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIzOSwgMTczLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM3LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMzLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDMyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMwLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMDgsIDI5LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDI4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ3LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ2LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ1LCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDQ0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQyLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMDgsIDQxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM5LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM2LCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDM1LCAxNywgMjAyLCA4NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMDIsIDg1LCAyNDUsIDIzMywgMTcsIDExOCwgCi0gICAgMjQ1LCAyMzMsIDE3LCAxMjAsIDI0NSwgMjMzLCAxNywgMTI2LCAyNDUsIDIzMywgMTcsIDIzOSwgMTQ3LCAyNDUsIDIzMywgCi0gICAgMTcsIDIzOSwgMjMzLCAyNDUsIDIzMywgMTcsIDIxMiwgODgsIDI0NSwgMjMzLCAxNywgMjEzLCAxMTIsIDI0NSwgMjMzLCAKLSAgICAxNywgMjQxLCAxNDMsIDI0NSwgMjMzLCAxNywgMjIyLCA2NCwgMjQ1LCAyMzMsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMDIsIAotICAgIDg0LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMDIsIDg0LCAxMDIsIDgsIDYsIDEsIDYzLCAxMDIsIDgsIDYsIDEsIAotICAgIDI0OSwgMjU1LCAxMDIsIDgsIDYsIDEsIDI0NywgMTI1LCAxMDIsIDgsIDYsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNiwgMSwgCi0gICAgNzQsIDEwMiwgOCwgNiwgMSwgMjQwLCAxNzQsIDEwMiwgOCwgNiwgMSwgMjM5LCA3NSwgMTAyLCA4LCA2LCAxLCAyMzcsIAotICAgIDE3MSwgMTAyLCA4LCA2LCAxLCA3NSwgMTAyLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA2LCAxLCAyMzAsIDU0LCAKLSAgICAxMDIsIDgsIDYsIDEsIDE1OSwgMTAyLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA2LCAxLCAyMjMsIDE2MywgMTAyLCAKLSAgICA4LCA2LCAxLCA3OCwgMTAyLCA4LCA2LCAxLCAyMTksIDE4NCwgMTAyLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA2LCAKLSAgICAxLCAxNDYsIDEwMiwgOCwgNiwgMSwgMTk0LCAxMDIsIDgsIDYsIDEsIDIxMCwgNjksIDEwMiwgOCwgNiwgMSwgNjgsIDEwMiwgCi0gICAgOCwgNiwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgNiwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNiwgMSwgMjAzLCAxOTYsIDEwMiwgCi0gICAgOCwgNiwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgNiwgMSwgMjAyLCAxNTksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgCi0gICAgOCwgNiwgMSwgMTk0LCA0MywgMzcsIDgsIDYsIDEsIDI0NywgMTI1LCA0MywgMzcsIDgsIDYsIDEsIDE0NiwgNDMsIDI0NiwgCi0gICAgMjM5LCA0MywgMjAzLCAxOTgsIDEwMywgOCwgNiwgMSwgNjMsIDEwMywgOCwgNiwgMSwgMjQ5LCAyNTUsIDEwMywgOCwgNiwgCi0gICAgMSwgMjQ3LCAxMjUsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTAzLCA4LCA2LCAxLCA3NCwgMTAzLCA4LCA2LCAxLCAyNDAsIAotICAgIDE3NCwgMTAzLCA4LCA2LCAxLCAyMzksIDc1LCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxMDMsIDgsIDYsIDEsIDc1LCAKLSAgICAxMDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDEwMywgOCwgNiwgMSwgMTU5LCAxMDMsIDgsIAotICAgIDYsIDEsIDIyNiwgMTg1LCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDMsIDgsIDYsIDEsIDc4LCAxMDMsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg0LCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDMsIDgsIDYsIDEsIDE0NiwgMTAzLCA4LCA2LCAxLCAxOTQsIAotICAgIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTAzLCA4LCA2LCAxLCA2OCwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTAzLCA4LCAKLSAgICA2LCAxLCAyMDQsIDE0NCwgMTAzLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTAzLCA4LCAKLSAgICA2LCAxLCAyMDIsIDE1OSwgMTAzLCAyMzUsIDI1NSwgMTAzLCAyMjMsIDE4NywgMTAzLCAyMTQsIDE3OSwgMTAzLCAyMTEsIAotICAgIDE2NywgMTAzLCAyMTgsIDEwLCAxMDMsIDIwNCwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDYzLCAxODIsIDQzLCA4LCA2LCAxLCAKLSAgICAyNDksIDI1NSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ3LCAxMjUsIDE4MiwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgNDMsIAotICAgIDgsIDYsIDEsIDc0LCAxODIsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTgyLCA0MywgOCwgNiwgMSwgMjM5LCA3NSwgMTgyLCAKLSAgICA0MywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgNDMsIDgsIDYsIDEsIDc1LCAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDE4NCwgCi0gICAgMTgyLCA0MywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCA0MywgOCwgNiwgMSwgMTU5LCAxODIsIDQzLCA4LCA2LCAxLCAyMjYsIAotICAgIDE4NSwgMTgyLCA0MywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDc4LCAxODIsIDQzLCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NCwgMTgyLCA0MywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgNDMsIDgsIDYsIDEsIDE0NiwgMTgyLCA0MywgOCwgCi0gICAgNiwgMSwgMTk0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIDQzLCA4LCA2LCAxLCA2OCwgMTgyLCA0MywgOCwgCi0gICAgNiwgMSwgMjA2LCAxNjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDE5NiwgCi0gICAgMTgyLCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMiwgMTU5LCAyMTYsIDE4OCwgMjI1LCAKLSAgICAyNiwgNTQsIDIxNiwgMTg4LCAyMjUsIDIzLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDYzLCAxODIsIDEwMywgOCwgNiwgMSwgCi0gICAgMjQ5LCAyNTUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgCi0gICAgMTAzLCA4LCA2LCAxLCA3NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjM5LCAKLSAgICA3NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxODIsIDEwMywgOCwgNiwgMSwgNzUsIDE4MiwgMTAzLCA4LCA2LCAKLSAgICAxLCAyMzAsIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAxNTksIDE4MiwgCi0gICAgMTAzLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxODIsIDEwMywgOCwgNiwgMSwgCi0gICAgNzgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxODIsIDEwMywgCi0gICAgOCwgNiwgMSwgMTQ2LCAxODIsIDEwMywgOCwgNiwgMSwgMTk0LCAxODIsIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDY4LCAxODIsIDEwMywgOCwgNiwgMSwgMjA2LCAxNjQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDQsIAotICAgIDE0NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgMTAzLCAKLSAgICA4LCA2LCAxLCAyMDIsIDE1OSwgMjQ1LCAxMjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDIzNSwgCi0gICAgMTY0LCAxODIsIDEwMywgMTg1LCAxODIsIDEwMywgMjE1LCAzNiwgMTgyLCAxMDMsIDI1MSwgMjMyLCAxODIsIDEwMywgMjA0LCAKLSAgICA2MywgNTEsIDI0MywgMTMyLCAxMDMsIDI0NiwgNDIsIDEwMywgMjQ1LCAxNzYsIDEwMywgMjM5LCAxMjksIDEwMywgMjM1LCAKLSAgICAxNTUsIDEwMywgMjIyLCAyMTMsIDEwMywgMjIyLCAyMDUsIDEwMywgMjIwLCA1MSwgMTAzLCAyMTEsIDI0NSwgMTAzLCAxMTIsIAotICAgIDMsIDI0MCwgMjEyLCA4MiwgMTAzLCAyMDUsIDE2NiwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA2MywgMjE2LCAxMzAsIAotICAgIDIzMSwgMzIsIDE2LCAxLCAyNDksIDI1NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyNDcsIDEyNSwgMjE2LCAxMzAsIAotICAgIDIzMSwgMzIsIDE2LCAxLCAyNDUsIDUxLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgCi0gICAgMTYsIDEsIDI0MCwgMTc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIzOSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAKLSAgICAxNiwgMSwgMjM3LCAxNzEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgCi0gICAgMjMwLCAxODQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjMwLCA1NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKLSAgICAxNTksIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjI2LCAxODUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjIzLCAKLSAgICAxNjMsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE5LCAxODQsIAotICAgIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE3LCAxMzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTQ2LCAyMTYsIAotICAgIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDE5NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTAsIDY5LCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDY4LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwNiwgMTY0LCAyMTYsIDEzMCwgMjMxLCAKLSAgICAzMiwgMTYsIDEsIDIwNCwgMTQ0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMywgMTk2LCAyMTYsIDEzMCwgMjMxLCAKLSAgICAzMiwgMTYsIDEsIDIwMywgMTI0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMiwgMTU5LCA1MSwgMTcyLCAyMzYsIAotICAgIDEzMCwgMTAzLCA2NywgMjI5LCAxNCwgMTAzLCA2NywgMjE1LCAzNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTAwLCAKLSAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMiwgMTAzLCA2NywgMjQ0LCAKLSAgICA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDYsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDc4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDExOCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg1LCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA5NCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMDEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExNywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTMsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDExNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDg0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA3LCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCAxMDksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICA5OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMiwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgMTIxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTAyLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMjAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMSwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgOTcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICA5OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgwLCAxMDMsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCAxMTAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MCwgCi0gICAgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgzLCAxMDMsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCAxMTQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwOCwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKLSAgICAxMiwgMjA2LCAyMzksIDIzMywgODksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDEyMSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAyMDgsIDEzMywgMjEzLCAKLSAgICAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDMsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDg2LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA5OSwgCi0gICAgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgODIsIDIwOCwgMTMzLCAyMTMsIDMzLCAKLSAgICAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDExMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAKLSAgICAyMzksIDIzMywgOTUsIDQzLCAxODksIDI1MSwgMTExLCA0MywgMTg5LCAyNTEsIDEzNiwgMjQ1LCA2MiwgMjM5LCAxODQsIAotICAgIDI0NiwgMTYsIDIwNywgMywgMjIyLCA4MCwgMywgMjExLCA5MSwgMjEwLCAyMDksIDExNSwgMjI0LCAxMSwgMjEwLCAyMDgsIAotICAgIDI0NiwgNDYsIDI1MCwgNTAsIDI0MiwgMTcsIDIxMCwgMjA3LCAxMTUsIDI0NywgMTgyLCAyMTYsIDE4OSwgMjQ3LCAyMDgsIAotICAgIDI1MCwgNTAsIDIyMiwgNzksIDIwNCwgODEsIDIwNCwgNzUsIDIwNSwgMTgxLCAyMjQsIDExOCwgMjA0LCA2NSwgMjQxLCAKLSAgICAxODAsIDIzOCwgNDYsIDI0MCwgMjI4LCAyNDEsIDE4MCwgMjM4LCA0NiwgMjUwLCAyMzgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAKLSAgICAyNTAsIDY4LCAyMzgsIDQ2LCAzLCAyMjQsIDIzMSwgMjIyLCAyMTQsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyNDUsIDEzOSwgCi0gICAgMjI0LCAzMCwgOTcsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA2NywgMjM4LCA3NywgMjI0LCAzMCwgCi0gICAgOTcsIDIzOSwgMTAyLCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjM4LCA3NywgMjI0LCAzMCwgOTcsIDIyOCwgMSwgMjE3LCAKLSAgICA1NiwgMjI0LCAzMCwgOTcsIDIwNCwgOTQsIDI0NSwgMTM5LCAyMjQsIDMwLCA5NywgMjQ1LCAxMzksIDIyNCwgMjksIDIyMiwgCi0gICAgMjE0LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMjgsIAotICAgIDEsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDEwMiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIxMCwgCi0gICAgMjE1LCAzLCAyNDAsIDEwMiwgMjM4LCA0NCwgMjExLCA5NCwgMjEyLCAyMzMsIDIxMSwgOTQsIDIwOSwgODAsIDYyLCAyNDIsIAotICAgIDQ5LCA2MSwgMjEwLCAyMTQsIDYxLCAyMTAsIDIxNSwgMywgNSwgMjQ2LCA3LCA2MSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAKLSAgICAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgOCwgMywgMjE2LCAxOTAsIDI0NiwgOCwgMywgMjE2LCAxOTAsIAotICAgIDI0NiwgOCwgMywgMjEyLCAxOSwgMjQ2LCA4LCAzLCAyMjcsIDEzMSwgMjQ2LCA4LCAzLCAyMDgsIDEzNywgMjM5LCAxODUsIAotICAgIDIwNCwgMTcsIDI0OCwgMjcsIDI0MCwgMTAyLCAyMzYsIDQ3LCAyNDMsIDEwMiwgMjEwLCAyLCAyNDcsIDE1OCwgMjQ2LCAKLSAgICAxNDgsIDIxNCwgMTYzLCAyNDAsIDIyMiwgMjA4LCA5NSwgMjQ0LCA2OSwgMjA4LCA5NSwgMjE5LCAxMzUsIDIwOCwgOTUsIAotICAgIDI0NywgODUsIDIzNiwgNDcsIDIxOCwgMjQ4LCAyMDcsIDE5MywgMjQ2LCAxNTIsIDI0OCwgMzAsIDIxNSwgMjAyLCAyMzcsIAotICAgIDIsIDIxMCwgMjEyLCAyNDgsIDMwLCAyNDEsIDE4NCwgNzYsIDIyNSwgMTMxLCAyNDEsIDE4NCwgNzYsIDIxNiwgNTIsIDIzNywgCi0gICAgMjgsIDIzOSwgMTQ3LCAyMjcsIDIzMCwgMjQ2LCA2LCAyMjUsIDEwNCwgMjI3LCAyMjksIDI0MCwgODUsIDIyNywgMjI5LCAKLSAgICAyMjcsIDIzMCwgMjM5LCAxOTIsIDIzMSwgNTAsIDIwNCwgMTYsIDIyMywgMTk2LCAyMDgsIDE2NSwgMjUwLCAzMywgMjM4LCAKLSAgICA1LCAyMjQsIDI0OSwgMjA0LCA3OSwgMjA5LCAyMjUsIDIyNywgMTk5LCAyNDgsIDIzOSwgMjE4LCAxMjAsIDIxNiwgMTM4LCAKLSAgICAyNTAsIDE1NywgMjM3LCAyNDQsIDI1MCwgMTU3LCAyMTksIDI5LCAyMTksIDMxLCAyNDYsIDE1MywgMjExLCA0NSwgMjM3LCAKLSAgICAxMzIsIDIxMiwgNTEsIDc2LCAyMTgsIDEwMCwgMjI1LCAxNiwgMjIwLCAzMiwgMjQ4LCAxMSwgMjE4LCAyMSwgMjI3LCAyMTAsIAotICAgIDIxNiwgNTMsIDI0NSwgMTQ1LCAyMTYsIDUzLCAyNDgsIDI1MSwgMjQ1LCAxNzksIDIxNiwgNTIsIDI0NSwgODksIDI1LCAKLSAgICAyMTYsIDUyLCAyMTEsIDc5LCAyNDcsIDIzNywgMjExLCAyMjQsIDI0NywgMjE5LCAyMzksIDEyOCwgMjM5LCAxMjQsIDIxNSwgCi0gICAgMjIzLCAyMTAsIDE2NSwgMjE4LCAyMywgMjQ0LCAxNjMsIDIyMCwgNzUsIDIxMCwgMTgzLCAyMzksIDEyNSwgMjEyLCAyMDQsIAotICAgIDIzOSwgMjQ0LCAyNDcsIDc5LCAzLCAyMTAsIDE1OCwgMjQ0LCAxMywgMjEyLCA3LCAyMzUsIDE2MywgMjQ1LCAxNDMsIDIxMywgCi0gICAgNTEsIDIzNSwgMTYyLCAyMzUsIDE2MywgMjQ1LCAxNDMsIDI0MiwgNzMsIDI0NSwgMTc4LCAyNDYsIDExNCwgMTQyLCAyNDcsIAotICAgIDUxLCAyMjcsIDMyLCAyNDUsIDgxLCAyMzYsIDExOSwgMjE4LCAyNSwgMjEyLCAyMTcsIDI0OCwgMTE2LCAyNDcsIDIzMywgCi0gICAgMjE4LCAyNiwgNzYsIDIzOSwgMTc0LCAyNDUsIDE3NywgMjM5LCAxNjMsIDI1LCAyMjksIDMzLCAyMDksIDE4NCwgMjA0LCAzLCAKLSAgICAyMzcsIDEwMiwgMjE1LCAxMywgMjQ3LCAyNTAsIDI1LCAyNDUsIDk5LCAyMDQsIDEzLCAyMzgsIDQ5LCAyNDUsIDI1MSwgCi0gICAgMjM4LCA0OSwgMjA4LCA1MSwgMjQyLCA1NCwgMjQ4LCAxNDYsIDIyMywgMjM1LCAyNDYsIDIzLCAyNDgsIDE0NiwgMjIzLCAKLSAgICAyMzQsIDI0OSwgMjgsIDI0NywgMjQ5LCAyMzksIDE2MywgMjUsIDIyOSwgMzQsIDMsIDIxOCwgODksIDI0NywgMjUwLCAzLCAKLSAgICAyMTgsIDM4LCAyNDUsIDE2NywgMjE4LCA0MCwgMjE2LCA1NCwgMjAzLCAyMjcsIDIxNywgMjQyLCAyNDgsIDU4LCAyNDcsIAotICAgIDc4LCAyMzAsIDE3OCwgMjQ2LCAxMDYsIDIwOCwgOTUsIDI0MCwgNjgsIDI0NiwgMTA1LCAyMzksIDI0NywgMjM5LCAyNDgsIAotICAgIDIxMSwgMjIyLCAyNDgsIDI1MCwgMjE5LCA2NiwgMjE4LCAzOSwgMjQ1LCAyMTUsIDI0OCwgMjUxLCAyMDksIDIyOSwgMjA4LCAKLSAgICA5NSwgMjQ1LCAxMjgsIDIzOSwgMjE5LCAyMTgsIDEyMSwgMjQ0LCA2NiwgMjMwLCAxNjksIDI0MywgOTYsIDI0NywgMjcsIAotICAgIDIxMSwgNDQsIDIwNCwgMTcsIDI0NiwgMTMwLCAyMjQsIDMwLCAyMDUsIDIxNywgMjQ2LCAyMDQsIDIxNCwgMTk2LCAyMTQsIAotICAgIDIyMywgMjM4LCAxMSwgMjQ3LCA0OCwgMjM3LCA1NiwgMywgMjA4LCAyMTEsIDIyMCwgMzIsIDIwOSwgOTMsIDIyNywgMjIyLCAKLSAgICAyNDcsIDI0MywgNzYsIDIzOSwgMTk2LCAyMjQsIDExOSwgMjI1LCAxMywgMjE2LCAxMTAsIDIxNiwgNTQsIDMxLCAyMjksIAotICAgIDE1MCwgMywgMjMwLCAxNzcsIDIxMSwgMTUsIDIyNCwgMTUyLCAyMjcsIDE2NywgMjEyLCA0OSwgMjQ1LCAxODQsIDIyOSwgCi0gICAgMzAsIDI0OCwgMTU4LCAyNTAsIDc4LCAzMSwgMjIxLCAxNTUsIDI0OCwgMTU4LCAyNDQsIDE5LCAzMSwgMjIxLCAxNTUsIAotICAgIDI0MCwgNiwgMjM5LCAxMzMsIDI1MSwgMTE0LCAyMDgsIDI1MiwgMjQ3LCAyOCwgMjM2LCA0OSwgMjQwLCAzNSwgMjA0LCAzNiwgCi0gICAgMjE1LCAyMTMsIDI0NSwgMjUyLCAyMzksIDIzOSwgMjE4LCA1NCwgMjUsIDIzOSwgMjQzLCAyMjQsIDE1MiwgMjIzLCAyNTMsIAotICAgIDI0NywgNjUsIDI0NiwgNjUsIDIzNywgNjAsIDI1MCwgODUsIDIxOSwgMTM4LCAyMDgsIDE0NSwgMjM3LCA4MywgMjQ2LCA1MSwgCi0gICAgMjA5LCAxNDQsIDIwOCwgMjUzLCAyNDYsIDM3LCAyNDgsIDIwLCAyMTgsIDI0MSwgMjUwLCA4NCwgMjA1LCAyMjYsIDIzOCwgCi0gICAgMjM4LCAyNDMsIDE2NywgMjM2LCAyMzAsIDIxMiwgNDIsIDIyNSwgMTcyLCAyNDgsIDY5LCAyMzgsIDIzOSwgMjQzLCAyMTMsIAotICAgIDI0NywgMjM2LCAyMzksIDE5OCwgMjE4LCA4OCwgMjQ3LCAzNiwgMzEsIDIyMSwgMTYwLCAyMjMsIDIyNiwgMzEsIDIyMSwgCi0gICAgMTU1LCAyMTQsIDIwOSwgMjM3LCAyMTQsIDMxLCAyMjksIDE0OSwgMjA4LCAyNywgMjA1LCAyMDYsIDMxLCAyMTQsIDE4OSwgCi0gICAgMjE1LCAxMjYsIDIxMiwgMjQ2LCAzLCAyMTQsIDIyNiwgMjA5LCAxNDksIDIxNiwgMjA5LCAyNSwgMjQ4LCAyNTEsIDIxMiwgCi0gICAgNjcsIDI1LCAyMTIsIDY3LCAyNDgsIDQsIDI0OCwgMjEzLCAyNSwgMjM2LCAxMTIsIDI0NiwgMTU0LCAyMzksIDIyNSwgMjEyLCAKLSAgICAxOCwgMjE1LCAxMjcsIDIxMCwgMTg4LCAyMTEsIDE4OSwgMjI1LCAxMywgMjA4LCA1MiwgMjM2LCA1MCwgMjE2LCAyMTAsIAotICAgIDI1MCwgMjM5LCAyMzksIDE3MSwgMjE1LCAxMzksIDIzOSwgMTcxLCAyMTAsIDE2MCwgMjA0LCA1MSwgMjI3LCAxMzYsIDIzOCwgCi0gICAgMzAsIDIxNiwgMjExLCAyMjQsIDE4LCAyMTYsIDIxMSwgMjQ3LCAzOSwgMjQ1LCAxMzYsIDI0OCwgMjEwLCAyNSwgMjQ4LCAKLSAgICAyNTEsIDIwNSwgMTgwLCAyNDAsIDI1LCAyMzYsIDEzMywgMjExLCA3MywgMjUsIDI0OCwgMjUxLCAyMzUsIDE2MywgMjM2LCAKLSAgICAxMzMsIDIxMSwgNzMsIDI1LCAyMTcsIDE4NCwgMjEwLCA5LCAyMDksIDE0OSwgMjE5LCAxNTYsIDI1LCAyNDgsIDI1MSwgCi0gICAgMjEyLCAyMCwgMjQ3LCA0NCwgMjI0LCAxMiwgMjQ3LCA2MywgMjQ4LCAxNjEsIDMsIDIwNywgMywgMjQ3LCAxODQsIDI0NSwgCi0gICAgMTk4LCAyMzYsIDM5LCAyNDcsIDE4MiwgMjQ2LCA0NSwgMjQ0LCAyMywgMjM2LCAzOSwgMjQ3LCAxODMsIDI0NiwgMzUsIAotICAgIDI0NywgMTgzLCAyNDQsIDE1LCAyNDQsIDE2LCAyMzAsIDIwOCwgMjIzLCA2NywgMjE5LCA3MiwgMjExLCAxMDQsIDIzNiwgCi0gICAgMzksIDI0NywgMTgzLCAyMzYsIDM5LCAzLCAyMzgsIDIyMiwgMjIwLCA2NywgMjQ3LCAxODMsIDIzMCwgMTY5LCAyMTgsIDMxLCAKLSAgICAyMjAsIDY2LCAyNDAsIDIyNywgMjE4LCAzMSwgMjIwLCA2NiwgMjM2LCA0OCwgMjQ4LCAyMzUsIDI1MCwgMjMsIDIwOSwgCi0gICAgMTU3LCAyMjUsIDE3MiwgMjM2LCA0NCwgMjI3LCAxLCAyMzYsIDQ0LCAyNDUsIDE4MiwgMjExLCA1NywgMjE0LCAxOTUsIAotICAgIDI0NCwgMjYsIDIxMSwgNTcsIDI0MCwgOTEsIDIzMCwgMTg5LCAyMjgsIDEzLCAyMzAsIDE2OSwgMjQ3LCAxOSwgMjQwLCAKLSAgICAyMjcsIDI0NywgMTksIDYxLCAyMTksIDMsIDYyLCAyMTksIDMsIDIwNCwgNzMsIDYxLCAyMzksIDIyNSwgMjA0LCA3MywgNjIsIAotICAgIDIzOSwgMjI1LCAyMTUsIDIwMSwgNjIsIDIxNSwgMjAxLCAyMjgsIDEwNSwgMjQ5LCAxMiwgMjE2LCAyMDksIDI1LCAyMTIsIAotICAgIDE4MywgMjQ3LCAyNDEsIDI1LCA0NywgMjUwLCAyMzQsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTksIDI0MSwgCi0gICAgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTYsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTQsIDI0MSwgOTgsIDY1LCAKLSAgICAyMzksIDIzNCwgMjA3LCAxMTIsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTAsIDIxNiwgMTcyLCAyMjQsIDksIAotICAgIDIxOSwgMTkzLCAyMDQsIDgxLCAyNDcsIDE4OCwgMjQ1LCAxNDksIDIwOCwgMjQ1LCAyMjcsIDE4MywgMjE2LCAyMTIsIDI0NywgCi0gICAgMTcsIDI0MiwgNjEsIDI0NSwgMTM1LCAyMDQsIDM5LCAyMTIsIDI2LCAyMTIsIDI0LCAyMzYsIDQ5LCAyMTYsIDE4NCwgMjM4LCAKLSAgICAzNSwgMjEzLCAzNywgMjI0LCA0OCwgMjE1LCAyMDUsIDI0NiwgMTQwLCAyNDMsIDEwMiwgMjE4LCAxMzEsIDI0OCwgMjEsIAotICAgIDI0MSwgMTE0LCAyMjAsIDc4LCAyMTEsIDIwMiwgMjEzLCAzMiwgMjQ3LCAxODcsIDI1MCwgMTk4LCAyMzYsIDExOCwgMjI4LCAKLSAgICA5OCwgMjQ4LCAxNDQsIDIzOSwgMjQzLCAyMDgsIDUxLCAyMzksIDI0MywgMjQ4LCAyOCwgMjA3LCAxNzEsIDIzNywgODEsIAotICAgIDI0NiwgMTQxLCAyNDksIDI4LCAyNDYsIDE0MSwgMjM5LCAxMTgsIDI0OSwgMjgsIDI0NiwgMTQxLCAyNDgsIDYwLCAyMTksIAotICAgIDUsIDIyOSwgMjQsIDIxOCwgNDQsIDI0MiwgNTEsIDI0NywgNjcsIDI0OSwgMTcsIDI0NywgNjcsIDI0MywgOTUsIDIyNCwgCi0gICAgMTAsIDI0MCwgMTAyLCAyNDUsIDE1MCwgMjQwLCAxMDIsIDIwOCwgMjQ2LCAyNDAsIDEwMiwgMjE2LCAyMTMsIDI0MCwgMTAyLCAKLSAgICAyNDcsIDE4LCAyNDAsIDEwMiwgMjQyLCA2MiwgMjQwLCAxMDIsIDIxMSwgMTg3LCAyMDQsIDM5LCAyMzYsIDUwLCAyNDAsIAotICAgIDEwMiwgMjI0LCA0OSwgMjQwLCAxMDIsIDI0MywgMTAzLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDI0MCwgMTAyLCAyMzksIDEyMiwgCi0gICAgMjQwLCAxMDIsIDIzNywgMTI5LCAyNDAsIDEwMiwgMjAzLCAyNTMsIDI0MCwgMTAyLCAyNDgsIDE1NiwgMjQwLCAxMDIsIAotICAgIDIxOSwgMTIwLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDIyMSwgMTY3LCAyMTksIDQ2LCAyMTcsIDIzMCwgMjQ2LCAxMjUsIDI0MCwgCi0gICAgMTg0LCAyNDAsIDE5MSwgMjQxLCAxODMsIDIyMSwgMTY3LCAyMjQsIDcsIDIwOCwgMTUwLCA2MSwgMTEyLCAyMTgsIDU5LCAKLSAgICAyNDksIDIzLCAyMzEsIDM1LCA2MSwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCA2MSwgNDksIDIxOCwgNTksIAotICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjM5LCAyMzcsIDIzNywgMTI0LCAKLSAgICA1NCwgMjA0LCA3MywgMjM3LCAxMjQsIDU0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIDIwOSwgMjAsIDExMiwgNTQsIDIwOSwgCi0gICAgMjAsIDEyMSwgNTQsIDI0NiwgMzYsIDIzNywgMTAwLCA1NCwgMTcxLCAyMzcsIDEwMCwgNTQsIDI0NSwgMTIyLCAyMDMsIAotICAgIDI0OSwgMjM3LCA4MywgMjQwLCAxODcsIDIyMiwgMjM2LCAyMTAsIDY4LCAyMzAsIDE2MCwgMjQyLCA1NiwgMjI5LCA4NSwgCi0gICAgMjQ4LCA3MSwgMjAzLCAyNDksIDI0NiwgOSwgMjE3LCAxNjUsIDIzNywgMTAzLCAyMTgsIDIyLCAyMjUsIDExMiwgMjEyLCAKLSAgICAyMzksIDI1MCwgNDYsIDIxMiwgMjM5LCAyMzYsIDI0MywgMjEyLCAyMzksIDIwMywgMjQ5LCAyMTQsIDI0MCwgMjAzLCAyNDksIAotICAgIDI0OCwgMywgMjM5LCAxNjksIDI0NywgMTUwLCAyMzEsIDUwLCAyMTIsIDEzNiwgMjQ3LCAxNDksIDIzMSwgNTAsIDIxMiwgCi0gICAgMTM2LCAyNDcsIDIzMiwgMjM4LCA2MCwgMjI1LCAxMjIsIDIwMywgMjUwLCAyNDAsIDgyLCAyMjUsIDEyMywgMjUsIDIwMywgCi0gICAgMjUxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMjQsIDI0MSwgMjM2LCAxMjcsIDIzNywgOTksIDEyMCwgMjAzLCAyNDgsIAotICAgIDIzNiwgMTI3LCAyMzcsIDk5LCAyMTgsIDUxLCAyMjAsIDY1LCAyMDMsIDI1MSwgMywgMjQ3LCAxNjgsIDI0MSwgMTgxLCAKLSAgICAyNDcsIDIwOSwgMywgMjA2LCA0NiwgMjE4LCAyMzAsIDMsIDI0OCwgMzIsIDIzNywgMTQ1LCAyMjUsIDEyMywgMywgMjM3LCAKLSAgICAyMjcsIDIxOCwgMTY4LCAyMjUsIDEwOCwgMjI1LCAxMjMsIDMsIDIwNywgMTgwLCAyMjAsIDQ0LCAyMjUsIDEyMiwgMjIwLCAKLSAgICA0NCwgMjAzLCAyNTAsIDI0OSwgMjcsIDI0NSwgMTk5LCAyMDMsIDIzNCwgMjE3LCAyMzUsIDIzMCwgMTY5LCAyMjAsIDYxLCAKLSAgICAyMzAsIDE2OSwgMjM4LCAzNCwgMjM4LCA4OSwgMjQ5LCAyOCwgMjUwLCAyMjEsIDI0MCwgMTk2LCAyNTEsIDIwLCAyNTEsIAotICAgIDIxLCAyMjQsIDM5LCAyMzEsIDU1LCAyMTIsIDYyLCAyMzEsIDI1LCAyNDQsIDEyLCAyMTgsIDIyOSwgMjM3LCAyMjEsIDI0NCwgCi0gICAgMTY3LCAyMjcsIDk3LCAyMjMsIDkxLCAyMTgsIDUwLCAyNDAsIDEwMywgMjI1LCA3NCwgMjM3LCAxNDQsIDI0OCwgMjI5LCAKLSAgICAyMTgsIDUzLCAyMTAsIDg4LCAyMTgsIDEyNCwgMjI5LCA2NywgODIsIDIyNywgMSwgMjI3LCAxNzQsIDIxNSwgMjUyLCAyMzgsIAotICAgIDE4MCwgMjExLCA2MywgMjI5LCA2NiwgMjQ3LCAyNDIsIDI0NSwgMTUyLCAzLCAyMzcsIDU1LCAyMDQsIDU4LCAyNDgsIDE1NCwgCi0gICAgMjM3LCA1NSwgMjQ3LCAyMDMsIDIzNywgNTUsIDEyMCwgMjM3LCA1MywgMjExLCAyMjAsIDIzNywgNTUsIDIzNywgMjM3LCAKLSAgICAyMzcsIDU1LCAyMzcsIDU2LCAzLCA0NywgMjQ4LCAyNiwgMjM3LCA1NSwgMjM3LCAyNDQsIDIzNywgNTUsIDIwMywgNDUsIAotICAgIDIzNywgNTUsIDIxNywgMTY2LCAyMzcsIDU1LCAyMzcsIDU2LCAzLCAyMTYsIDU0LCAyMTYsIDY3LCAyMzcsIDUzLCAyMzcsIAotICAgIDU2LCAyNDQsIDY2LCAyNDMsIDIyMiwgMjEzLCA2MywgMywgMzQsIDcwLCAyMzEsIDYsIDI0MSwgMTE3LCAxNTcsIDI0NywgCi0gICAgMTgwLCAyNTAsIDIyMCwgOTcsIDI0OCwgMTIsIDIxMiwgNTQsIDk3LCAyNDUsIDI0NCwgOTcsIDIxMSwgMTk2LCAyMTAsIAotICAgIDE2NywgOTcsIDI0MiwgNDksIDI0NCwgMTQ1LCA5NywgMjE4LCAxMjUsIDc2LCAyMTgsIDQ1LCAyMzksIDIxMCwgMjQ4LCA4MywgCi0gICAgMjQzLCAxMzMsIDk3LCAyMTEsIDIxMiwgMjQ4LCAyNTAsIDIwOSwgMzgsIDI0OCwgMjUwLCA2MSwgMjM5LCAxOTcsIDIzNiwgCi0gICAgMTIsIDIxOCwgNTcsIDk3LCAyMjQsIDUzLCAyNDksIDEwLCAyNDUsIDkyLCAyNDAsIDIxNCwgNzksIDI0MywgOTcsIDU0LCAKLSAgICAyNDUsIDE0MSwgMjQ3LCAzNywgMjQ4LCAyMzQsIDMsIDIwMywgNDMsIDU0LCAyNDgsIDIzNCwgMywgMjQzLCA5NywgNTQsIAotICAgIDI0OCwgMjM0LCAzLCAyNDAsIDIzMCwgNTQsIDI0OCwgMjM0LCAzLCAyMTgsIDIwLCA1NCwgMjI0LCA1MywgMywgMjA0LCAxMSwgCi0gICAgMjQ2LCAxNzgsIDMsIDE3NywgMjA4LCA5MSwgMjUsIDIwMywgNDMsIDU0LCAyMTQsIDE3NCwgMjE4LCAyMjgsIDI0NSwgMjIwLCAKLSAgICAyNDcsIDIwNywgMjI0LCAxMDgsIDIzOSwgMjAyLCAyNDMsIDE1NCwgMjE5LCAyNDgsIDI0MywgMTU5LCAyNDIsIDEyLCAyNDAsIAotICAgIDExLCAyMzksIDE4MiwgMTcxLCAyNDAsIDExLCAyMzksIDE4MiwgMjE5LCAxNTQsIDMsIDI0NSwgOTUsIDIxOSwgMTU0LCAKLSAgICAyNDAsIDk1LCAyMDYsIDIyNCwgMjQ3LCA3MiwgMjA5LCAxODMsIDI0NywgNzIsIDI0NywgMzgsIDIzMSwgMzUsIDI0NiwgCi0gICAgMTc4LCAzLCAxNzcsIDIwOCwgOTAsIDI0NiwgMTc4LCAzLCAxODMsIDIwOCwgOTAsIDI0OCwgMjMxLCAyNDYsIDE3NywgMjQ2LCAKLSAgICAyMiwgMjE3LCAxNjEsIDIxNSwgMTkxLCAyMTcsIDE2MSwgMjE5LCA5NCwgMjExLCA1MywgMjE1LCAxMzMsIDIwOCwgODIsIAotICAgIDIxNSwgMTMzLCAyNDgsIDgsIDIxMCwgNywgMjI3LCAyMjcsIDIyMSwgMTU4LCAyMjEsIDE1OSwgMywgMjQ0LCA2NSwgMjQ1LCAKLSAgICAxNTEsIDI0NiwgMTYsIDI0OCwgOSwgMTcxLCAyNDgsIDksIDIzNywgMjQ0LCAyNDgsIDksIDI0OCwgMjYsIDI0OCwgOSwgCi0gICAgMjE5LCAyNDMsIDI0OCwgOSwgMjQ4LCA2LCAyMjMsIDg1LCAyNDksIDE0LCAyMTQsIDE4MiwgMjI0LCAyNDIsIDIwOSwgMTYyLCAKLSAgICAyMTYsIDE1MiwgMjE5LCAxNTIsIDI0MCwgNjUsIDIyNSwgMTcyLCAyMTQsIDIyMiwgMjUwLCAxOTUsIDIxNywgMTg1LCAyNTEsIAotICAgIDExOSwgMjI3LCAzLCAyNDYsIDE2MiwgMjI0LCAyNTQsIDIxOSwgMjEwLCAyMDgsIDk4LCAyMzEsIDQ2LCAyMDgsIDk4LCAKLSAgICAyMTksIDE2MSwgMjQxLCAyMzYsIDk3LCAyMzEsIDQzLCAyNDEsIDU3LCAyNDEsIDU4LCAzLCAxODMsIDUzLCA1NSwgMjQ2LCAKLSAgICAxNiwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAyMzksIDIyNSwgMjQ2LCAxNiwgMjI1LCAxMzcsIDMsIDIxNiwgMTg4LCAyMzksIAotICAgIDIyNSwgMTcxLCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMjYsIDI0OSwgCi0gICAgMjM5LCAyMjUsIDIxOCwgMjgsIDIxOCwgMjksIDIzNiwgNTMsIDIyMiwgMjEwLCAyMjQsIDgwLCAyMTgsIDE3NiwgMjI0LCAKLSAgICA4MCwgMjE4LCAxNzcsIDMsIDg2LCA1MywgMjUwLCA1MCwgMjI3LCAyMjIsIDIwNSwgMjI5LCAyMjQsIDc5LCAyMjQsIDgwLCAKLSAgICAyMTgsIDE3NywgMjIwLCA2OCwgMjIxLCAxOTIsIDIyNCwgODAsIDIxOCwgMTc1LCAyNTAsIDE5NiwgMywgMjQ4LCAyMjAsIAotICAgIDI0NywgNjUsIDI0NywgNjYsIDMsIDIzOSwgMjE4LCAyMDUsIDIyNiwgMjQ3LCA2NSwgMjA5LCAxNTksIDIxNiwgMjA0LCAKLSAgICAyMDUsIDIyNSwgMjQwLCA2LCAyMTcsIDIxNywgMjE4LCAzNSwgMjExLCA3NCwgMjE3LCAyNTQsIDI0OCwgMTYwLCAyMDcsIAotICAgIDEzOCwgODYsIDI1MCwgOTEsIDI0NiwgMTgsIDg2LCAyNSwgOTYsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjQ2LCAxOCwgCi0gICAgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkyLCAzLCA0MywgMTE4LCAyMTksIDE5OSwgMjQ2LCAxOCwgMTgzLCAKLSAgICAyNSwgMTc3LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTEsIDI1MCwgMTk0LCAxODMsIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgCi0gICAgMjUwLCA5MSwgMTI0LCAyNDcsIDIwNiwgOTcsIDEzOCwgMjQ3LCAyMDYsIDk3LCAyMTEsIDIxNywgMywgMjQ3LCA1OCwgOTUsIAotICAgIDIxMSwgMjE2LCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgMjExLCAyMTcsIDMsIDEyNiwgMjExLCAKLSAgICAyNDEsIDIwNCwgNzQsIDI0OCwgMjAzLCAyNDEsIDExNywgMjE4LCA4MSwgMjI3LCAyMTcsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAKLSAgICAyMTYsIDExLCAyMjUsIDE0OSwgMjM4LCA0OSwgMjI3LCA0MywgMywgMjMxLCAxNywgMjE5LCA5LCAyNDYsIDE2LCAyMjcsIAotICAgIDQzLCAzLCAyMjksIDE1MSwgMjI5LCAxNTEsIDIyNywgNDIsIDE3MSwgMjI3LCA0MiwgMjQ4LCAxMjgsIDI0OCwgMTI5LCAzLCAKLSAgICAyNDcsIDU4LCA5NSwgMjQ4LCA3LCAyMjcsIDEwNSwgOTcsIDIxNiwgMjA1LCAyNDcsIDE0NSwgMjQ5LCAyNiwgMywgOTYsIAotICAgIDUzLCA1NSwgMjQxLCA4NCwgMywgOTYsIDUzLCA1NSwgMjIwLCAzMiwgMywgMjQwLCAyMTIsIDEzMSwgMywgNDksIDUwLCA1MywgCi0gICAgNTUsIDIxMSwgMjQ5LCAzLCA4NiwgNTMsIDU1LCAyMDgsIDE0NSwgMywgMTc3LCA1MywgNTUsIDIyMSwgMTkyLCAxMTgsIAotICAgIDIwNiwgMjQ4LCAyNDEsIDE0MSwgOTcsIDIyOSwgMTQ4LCAyMDksIDE1MiwgMjMxLCAxMSwgMTYsIDM1LCA4LCA2LCAyMjcsIAotICAgIDE3MywgMjMxLCAxMSwgMTYsIDM1LCA4LCA1LCAyMjcsIDE3MywgMjMxLCAxMSwgMTYsIDM1LCAyMjEsIDQ1LCAyMzEsIDExLCAKLSAgICAxNiwgMzUsIDIxMCwgMTAyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDIyNywgMTczLCAyMzksIDI0OSwgMjQxLCAxMTcsIDIwOCwgCi0gICAgMTQwLCAyMDMsIDIyNSwgMjM3LCAxMzAsIDIyMSwgMjgsIDI1LCAyNDgsIDE0LCAyMzYsIDEzNCwgMjE4LCAxMDYsIDIyNCwgCi0gICAgMTUxLCAyMDksIDE2MCwgMjQ1LCAxMTIsIDI0OCwgMjUxLCAyMTIsIDg4LCAyMTgsIDYxLCAyMTEsIDk1LCAzLCAxMDEsIAotICAgIDI0MywgODUsIDIzMCwgMTY5LCAxNiwgMzUsIDI0OCwgMTQxLCAyMDgsIDgwLCAyNDEsIDEwMCwgNjIsIDUxLCAyNDcsIDE0NSwgCi0gICAgNjEsIDUxLCAyNDcsIDE0NSwgMjI4LCA4LCAyMTYsIDEzOCwgMjQ2LCA2MSwgMjI4LCA4LCAyNDgsIDI2LCAyNDYsIDYxLCAKLSAgICAyMjgsIDgsIDIxOSwgMjQzLCAyNDMsIDIyMSwgMjI4LCA4LCAyNDgsIDI2LCAyNDMsIDIyMSwgNSwgMjE5LCAyNDMsIDI0MywgCi0gICAgMjIxLCA1LCAyNDgsIDI2LCAyNDMsIDIyMSwgMjA2LCAyMjMsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCAyMTYsIAotICAgIDEzOCwgMjA4LCA4NSwgMjA2LCAyMjMsIDUsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCA1LCAyMTYsIDEzOCwgMjA4LCAKLSAgICA4NSwgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCAKLSAgICA2MSwgNDMsIDI0NSwgMTMxLCAyMTgsIDQ4LCAyNDUsIDEzMSwgMjE4LCA0OSwgMywgMjM3LCAxMzYsIDU2LCAyNDUsIDEzMSwgCi0gICAgMjE4LCA0OCwgMjIxLCAxNjIsIDQ5LCAyMTMsIDE0NiwgMywgMTI2LCAyNDMsIDgzLCAyMjEsIDE2MiwgNTAsIDIxMywgMTQ2LCAKLSAgICAzLCAxMjYsIDI0MywgODMsIDE2LCAzNSwgMjI1LCA4NywgMjQ2LCAxODQsIDYxLCA4LCAyNDUsIDEzMCwgNzksIDgsIDI0NSwgCi0gICAgMTMwLCAyNDYsIDIyMiwgMjQ1LCAxMzAsIDIyMCwgNDAsIDk3LCAyNDIsIDcyLCA3NiwgMjE5LCAzMiwgMjMwLCAzOSwgMjI0LCAKLSAgICAyMiwgMjEwLCA5NiwgMjI0LCAyMzcsIDMsIDIyMiwgNjQsIDI0NywgMjIyLCAyNDcsIDIzOCwgNzYsIDIzNSwgMjIyLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMTE4LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMTIwLCAyMjAsIDgzLCAyNDYsIDIwLCAKLSAgICAyNDAsIDEwMywgMTI2LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjM5LCAxNDcsIDIyMCwgODMsIDI0NiwgMjAsIAotICAgIDI0MCwgMTAzLCAyMzksIDIzMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMiwgODgsIDIyMCwgODMsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAyMTMsIDExMiwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTQzLCAyMjAsIDgzLCAKLSAgICAyNDYsIDIwLCAyNDAsIDEwMywgMjIyLCA2NCwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwOSwgMTUzLCAyMjAsIAotICAgIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxMTMsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDE1NSwgCi0gICAgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMCwgMjcsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDEzMiwgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDIwOSwgMjYsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0MywgMjQ2LCAyMCwgMjQwLCAxMDMsIAotICAgIDIzOSwgMjMxLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4NCwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMywgMTEwLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMjQxLCAxNDIsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDYyLCAyNDYsIDIwLCAyNDAsIDEwMywgCi0gICAgMjA5LCAxNTEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTUzLCA1MCwgCi0gICAgMjExLCAyMTYsIDUwLCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgNTAsIDIxMSwgMjE3LCAzLCAxMjYsIAotICAgIDIxMSwgMjQxLCAyMDQsIDc0LCAyNDcsIDE3NSwgMjQ3LCAxNzYsIDMsIDIxMSwgMjQxLCAyMDQsIDc0LCAyMTUsIDI1MSwgCi0gICAgMjQ4LCAxMjgsIDI0OCwgOSwgMjQ3LCA1NiwgMjI1LCAxMDksIDI0NiwgMTksIDYyLCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIAotICAgIDIyMSwgMTkyLCAyMTgsIDExMiwgMjM2LCAxMjYsIDIyNSwgMTIzLCAyMzEsIDUwLCAyNDcsIDE1MiwgMjEwLCAyMjgsIDIyNywgCi0gICAgMTY2LCAyMTIsIDUyLCAyMTksIDI0NSwgMjExLCAxNzgsIDI0NCwgMTUwLCAyMTAsIDIxMCwgMjExLCAyMDUsIDIxMSwgMjA2LCAKLSAgICAyMDQsIDU5LCAyMzAsIDgzLCA0OSwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgMjA5LCAxNjIsIDIxNiwgMTUzLCAKLSAgICAzLCAyMTksIDE1MywgNTAsIDIzNywgMTI0LCAyMDksIDE2MiwgMjE2LCAxNTIsIDYxLCAyMDgsIDEyNiwgMjA5LCAxNjEsIAotICAgIDYyLCAyMDgsIDEyNiwgMjA5LCAxNjEsIDIwOSwgMTYyLCAyMjAsIDMyLCAyMDgsIDE0NSwgNzYsIDIyNCwgNzYsIDI0NiwgCi0gICAgNDAsIDIyNCwgODAsIDIxOCwgMTc2LCAyNDksIDI2LCA3NiwgMjQxLCA1NywgMjExLCAxMDAsIDI0MSwgNTcsIDI0MSwgNTgsIAotICAgIDMsIDIyNywgMTMxLCAyMzksIDE4OSwgMjQxLCA1NywgMjE5LCAxMCwgMTE1LCAyMTEsIDEwMCwgMjQxLCA1NywgMjI3LCAKLSAgICAxMDQsIDIxOSwgOTMsIDYyLCAyMTcsIDE2MSwgMjI2LCAyNTEsIDQ5LCAyMTksIDgsIDIyNiwgMjUxLCA0OSwgMjQ4LCAyNDYsIAotICAgIDIxOSwgOSwgMjI2LCAyNTEsIDQ5LCAyMzksIDE0OSwgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIxOSwgMTQ3LCAyMjYsIDI1MSwgCi0gICAgNDksIDI0NSwgMTQ0LCA0OSwgMjAzLCAyMjAsIDIzNywgMTIzLCAyMDcsIDE3NCwgMjIwLCA1MiwgMjM3LCAxMjQsIDU0LCAKLSAgICAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjE2LCAxODgsIDIzNywgMTI0LCAKLSAgICAzLCAyMzksIDI1NCwgMjExLCAxOTUsIDIxNiwgNzMsIDIwOSwgMjAsIDExMiwgNTQsIDIxNiwgNzMsIDIwOSwgMjAsIDEyMSwgCi0gICAgNTQsIDIxNiwgNzMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjE2LCA3MywgMjM3LCAxMjQsIDMsIDEwMSwgMjQwLCAzLCAyNDAsIAotICAgIDIwMSwgMjE2LCAxODgsIDIzNywgMTI0LCAzLCAyMTksIDcxLCAyNDgsIDEwNCwgMTAxLCAyNSwgMjE1LCAyNTMsIDIzOSwgCi0gICAgMjUzLCA2MSwgMTIxLCAyMTgsIDU5LCA0OSwgMjM3LCAxMjQsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNDksIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNDksIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYyLCA0OSwgMjE4LCA1OSwgMjQ5LCAyMywgCi0gICAgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDExMiwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTEyLCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDExMiwgMjE4LCA1OSwgMjQ5LCAyMywgCi0gICAgMjMxLCAzNSwgNjIsIDEyMSwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjQ0LCAxMSwgMjQ1LCAyMjAsIDIyOSwgMTUwLCAKLSAgICAyNSwgMjI0LCA5LCAxMjYsIDIyMiwgMjE4LCAyNDUsIDIxOSwgMjE3LCAyMzEsIDIxOCwgNjcsIDI0NywgNzQsIDYyLCAyMzcsIAotICAgIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDYxLCAyMzcsIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAKLSAgICAxNTQsIDIxMiwgNywgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgMTU0LCAyMDksIDIyMSwgMjQ3LCAyMiwgMjA0LCA2LCAyMjksIAotICAgIDE0OSwgMTE4LCAyNDcsIDE0NiwgMjI0LCA5LCAxMjAsIDI0NywgMTQ2LCAyMjQsIDksIDEyNiwgMjQ3LCAxNDYsIDIyNCwgOSwgCi0gICAgMjA4LCAxMTcsIDM4LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIDIzNywgOTEsIDI0MywgMTU0LCAyMTQsIDE4NCwgMjE3LCAyMzIsIAotICAgIDIzNSwgMTU2LCAyNDAsIDY1LCAyMzUsIDE1NiwgMjE5LCAyNDgsIDI0MywgMTYwLCAyMzUsIDE1NiwgMjQzLCAxMDcsIDMsIAotICAgIDIwOSwgMTEyLCAyNDMsIDEwNywgMywgMjA5LCAxMTMsIDI1LCAyMTgsIDE2MSwgMjQzLCAxMDcsIDMsIDIxOCwgMTYxLCAKLSAgICAyMzksIDEzNSwgMywgMjE4LCAxNjEsIDIzOSwgMTM1LCAzLCAyMDgsIDIyNSwgMjM5LCAxMzUsIDMsIDI1MCwgMjMyLCAyMDMsIAotICAgIDE5NiwgNjIsIDIzOSwgMTgyLCAyMzksIDE4MiwgMTcxLCAyMzksIDE4MiwgMjQ3LCAzOCwgMTIyLCAyNDMsIDE0MCwgMjQ3LCAKLSAgICAzOCwgMjQwLCAxMSwgMjQ3LCAyMzMsIDI0MCwgMTEsIDI0NywgODcsIDI0MSwgOTQsIDIyMSwgMTYwLCAyNDEsIDk0LCAyMjEsIAotICAgIDE2MSwgMjE5LCAxNTMsIDI0MSwgOTQsIDIyMSwgMTYxLCAyMTksIDE1OSwgMjIxLCAxNjAsIDIyMSwgMTYxLCAyMTksIDE1MywgCi0gICAgMjIxLCAxNjEsIDIxOSwgMTU5LCAyNDEsIDk0LCAyNDMsIDEwNiwgMjQxLCA5NCwgMjE5LCAxNTMsIDI0MSwgOTQsIDIxOSwgCi0gICAgMTUxLCAyNDMsIDEwNiwgMjE5LCAxNTMsIDIxOSwgMTUxLCAyMDQsIDg1LCAyMTEsIDIwMiwgMjIxLCAxNjEsIDIxOSwgMTU5LCAKLSAgICAyMTEsIDIwMiwgMjQ3LCA3MywgMjE5LCAxNTksIDI0NCwgMTEsIDIwNCwgMTUsIDIyNCwgMTA1LCAyMjUsIDY0LCAyMTksIAotICAgIDIwMSwgMjQ2LCAxOCwgNTAsIDI1LCA0OSwgMjEzLCAxNDYsIDI1MCwgOTEsIDI0NywgNTgsIDIwMywgMTk2LCAyMzEsIDQxLCAKLSAgICAyMzksIDE3NiwgMjEyLCA3MiwgOTcsIDI0NCwgNjQsIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ1LCAyMjEsIDM4LCAyMjksIAotICAgIDE1MSwgMjE1LCAyMTQsIDIyMiwgMjEwLCAyMTksIDE1NCwgMywgNDMsIDIwOSwgMTEyLCAyMTEsIDY1LCAyNDYsIDE3NywgCi0gICAgMjQ0LCAxOTYsIDIyOSwgMzMsIDIyNywgOTgsIDIxMSwgMjE1LCAyMzcsIDY1LCAyMzEsIDUwLCAyMTIsIDEzNiwgMTI2LCAKLSAgICAyMTYsIDE2MywgNTUsIDEyNiwgMjE2LCAxNjMsIDU2LCAxMjYsIDIxNiwgMTYzLCAyMjcsIDIyMiwgMTI2LCAyMTYsIDE2MywgCi0gICAgMjE2LCAxNiwgNDksIDIxMSwgMjEyLCAyNDcsIDE5MiwgNTAsIDIxMSwgMjEyLCAyNDcsIDE5MiwgMTIwLCAyMTEsIDIxMiwgCi0gICAgMjQ3LCAxOTEsIDEyNiwgMjExLCAyMTIsIDI0NywgMTkxLCA0OSwgMjA5LCAzOCwgMjQ3LCAxOTIsIDUwLCAyMDksIDM4LCAKLSAgICAyNDcsIDE5MiwgNDksIDI1MCwgMjIwLCAyNDcsIDE5MiwgNTAsIDI1MCwgMjIwLCAyNDcsIDE5MiwgMjI0LCAzNCwgMjQ3LCAKLSAgICAxOTIsIDIyNywgMTMyLCAyMjQsIDM0LCAyNDcsIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzMsIDI0OCwgMjQ4LCA5OCwgMywgCi0gICAgMjQ4LCAyNDcsIDI0OCwgMjQ4LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDEzMiwgMjAzLCAxOTYsIDI0OCwgCi0gICAgMjQ4LCAyNiwgMTMyLCAyMDMsIDE5NiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMTMyLCAyMDMsIDE5NiwgMTU3LCAyNDYsIAotICAgIDE2OSwgODIsIDI0OCwgMjQ4LCA5OCwgMywgMjYsIDI0NiwgMTY4LCAyMDMsIDIzMywgMjI1LCAxMDYsIDIyNCwgMTQsIDIzOSwgCi0gICAgMTAzLCAyMDgsIDE2NywgMjA4LCAxMjIsIDIxMSwgODYsIDc2LCAyMjcsIDE0NiwgMjEyLCAxMzcsIDc2LCAyMzAsIDE3MCwgCi0gICAgMjIzLCAyNTEsIDIzNywgMjQxLCAyNDAsIDEwMiwgMjM3LCAyNDEsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgCi0gICAgMjQwLCAxMDMsIDMsIDIwOSwgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAKLSAgICAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyMTIsIDMwLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAKLSAgICAxMDMsIDMsIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAKLSAgICAyMjQsIDgsIDI1LCAyMDgsIDI0MywgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDEzNSwgMjEyLCAzMCwgCi0gICAgMjQwLCAxMDMsIDMsIDIzNiwgNTIsIDIwNCwgOCwgMjQwLCAxMDIsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAKLSAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDIxNCwgMjE0LCAyNDQsIDQ1LCAyMzksIDE3NCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMTIsIAotICAgIDMwLCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTAsIDIxMCwgMjEyLCAKLSAgICAyOSwgMjQwLCAxMDIsIDIyMiwgMjE2LCAyNDAsIDEwMiwgMjQwLCAyMDMsIDI0MCwgMTAyLCAyMDYsIDI1MywgMjQwLCAxMDIsIAotICAgIDI0MCwgMTAzLCAzLCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxOSwgMSwgMjQwLCAxMDIsIDI0NSwgMjEyLCAyNDAsIDEwMiwgCi0gICAgMjQ1LCAyMTMsIDI0MCwgMTAyLCAyMjksIDY1LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwOSwgMjMsIDM0LCAyMjksIDY2LCAKLSAgICAyMjksIDY1LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAKLSAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUwLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIAotICAgIDI1LCAyMDQsIDgsIDI0MCwgMTkxLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIDI1LCAyMDgsIDI0MywgMjQwLCAKLSAgICAxODQsIDI0MywgMTYxLCAyNDAsIDEwMiwgMjAzLCAyMzIsIDI0MCwgMTAyLCAyNTAsIDIxNCwgMjQwLCAxMDIsIDIxOCwgMTksIAotICAgIDI0MCwgMTAyLCAyNDUsIDExNCwgMjQwLCAxMDIsIDIxOCwgMjMyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDIyNywgMTcsIAotICAgIDc2LCAyMDgsIDYyLCAyNDMsIDE2MSwgMjQ3LCAxNDgsIDIxNiwgMTEzLCAyNDAsIDEwMiwgMjM5LCAxMTQsIDI0MCwgMTAzLCAKLSAgICAzLCAxNzEsIDIyNCwgNywgMjUwLCAyMTIsIDI0MCwgMTAyLCAyNDAsIDU4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQwLCAxMDIsIAotICAgIDIxMiwgNTMsIDI0MCwgMTAyLCAyMDgsIDIwNSwgMjQwLCAxMDIsIDIzNywgMjQyLCAyNDAsIDEwMiwgMjI3LCA0LCAyNDUsIAotICAgIDExNCwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjM2LCAyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAotICAgIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyNDAsIDEwMywgMjE0LCAxODYsIDIzMSwgNTAsIDI0MCwgCi0gICAgNTksIDI1MCwgNTYsIDI0MCwgMTAyLCAyMzksIDE5NCwgMjQwLCAxMDIsIDIxMiwgNTQsIDI0MCwgMTAyLCAyNDMsIDEzMywgCi0gICAgMjQwLCAxMDIsIDI0MCwgMTAzLCAyMDQsIDMsIDIyNCwgNywgMjQwLCAxMDMsIDMsIDIyNSwgMTIsIDIyNSwgNzYsIDIzNywgCi0gICAgMjQxLCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDksIAotICAgIDE3OSwgNzYsIDIzMCwgODUsIDIxMiwgMzAsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjEyLCAzMCwgCi0gICAgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIzNywgNTQsIDI0MCwgMTg0LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjAzLCAyMTgsIAotICAgIDIxMiwgMzEsIDIyOSwgNjUsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAyNDAsIDE4NCwgMjE4LCAxOSwgMjQ3LCAKLSAgICAxOCwgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDcsIDE4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQ3LCAxOCwgMjQwLCAxMDIsIAotICAgIDIxMiwgNDcsIDIzOSwgMTE0LCAyNDAsIDEwMiwgMjEyLCA0NywgMjEyLCAzMCwgMjQwLCAxMDIsIDIwNiwgMjE4LCAyNDAsIAotICAgIDEwMiwgMjQwLCAxMDMsIDMsIDIxNSwgMjEyLCAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIyMSwgMTkyLCAyMzgsIDI3LCAKLSAgICAyMzgsIDE2MCwgMjQwLCAxMDMsIDMsIDIyMCwgNTIsIDIzOCwgMTYwLCAyMTgsIDIzMCwgMjQ3LCAyMzksIDI0NCwgNTksIAotICAgIDIxNCwgMTY0LCAyMjQsIDQ4LCAyMzcsIDU3LCAyMjQsIDQ4LCAyMTEsIDIxOCwgMjI0LCA0OCwgMjM3LCA5MywgMjE4LCAKLSAgICAyMzAsIDIxNiwgMTg3LCAxMTgsIDIzNywgMTIzLCAyMTgsIDIzMCwgMjE2LCAxODcsIDI0NywgMjUxLCAyMzcsIDEwMCwgCi0gICAgMjMxLCA1MCwgMjQ2LCAyMjQsIDIxOCwgMjMwLCAyMzksIDExMywgMjE4LCAyMzAsIDMsIDIxOCwgMTksIDI0MCwgMTAyLCAKLSAgICAyMTgsIDIzMCwgMywgMjM5LCAxODMsIDIzNywgOTksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCi0gICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCi0gICAgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgCi0gICAgMjI5LCAyMDcsIDE3NCwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMTUzLCAyNDEsIAotICAgIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAKLSAgICAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIAotICAgIDIwNSwgMjEyLCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAKLSAgICAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIAotICAgIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCAKLSAgICA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjA0LCAKLSAgICA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjQxLCAKLSAgICAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDIxMSwgCi0gICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAKLSAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIAotICAgIDIzMywgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAyMTIsIDIsIDIxNywgCi0gICAgNDAsIDUxLCAyMTksIDIzMywgMjEyLCAyLCAyMTcsIDQwLCA1MSwgMjE5LCAyMzQsIDIzMSwgNTAsIDYyLCAyMTEsIDE3NywgCi0gICAgOTYsIDIxNSwgMjE4LCAxNzcsIDIxNSwgMjE4LCA4NiwgMjE1LCAyMTgsIDE4MywgMjE1LCAyMTgsIDEzMiwgMzIsIDI0MCwgCi0gICAgMjUxLCAyMTksIDIzMywgNzksIDEzMiwgMzIsIDI0MCwgMjUxLCAyMTksIDIzMywgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgCi0gICAgMjMzLCA3OSwgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgMjMzLCA3OSwgMjUwLCAyMzYsIDIxOSwgMjMzLCAyMTAsIDE2OSwgCi0gICAgMjUwLCAyMzYsIDIxOSwgMjMzLCA0MSwgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDQxLCA3OSwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA0MSwgNzksIDEyNCwgNTIsIDI0NSwgCi0gICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjMwLCAyNDgsIDIxOSwgMjMzLCA0MSwgMjMwLCAyNDgsIDIxOSwgCi0gICAgMjMzLCA3OSwgNDEsIDIzMCwgMjQ4LCAyMTksIDIzMywgMjA1LCAyNDIsIDc5LCAyMTIsIDAsIDIwNSwgMjQyLCA3OSwgMjE2LCAKLSAgICA3NCwgMjEyLCAwLCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE2LCA3NCwgMjQ2LCAxNjcsIDI0OCwgMjAsIDIxNSwgMjE4LCAyMzcsIAotICAgIDM4LCAyMTEsIDgxLCAyMjcsIDQwLCAyMTYsIDE5MywgMjQ3LCAzOSwgMjM2LCAyNDAsIDIwOCwgMTEwLCAyMzYsIDI0MCwgCi0gICAgMjA4LCAxMTEsIDMsIDI0NywgMTc4LCAyMjEsIDE2NywgMjA4LCAxMTAsIDIyNCwgMjEzLCAxNTcsIDIxNiwgMTk0LCAyMTEsIAotICAgIDg3LCAyMDgsIDEwOCwgMjA4LCAxMDksIDI0NywgMzksIDI0NywgMTUzLCAyMjAsIDI5LCAyNDcsIDE1MywgMjA4LCA1OSwgCi0gICAgMjQ3LCAxNTQsIDIxMSwgNjEsIDIyNCwgMTA5LCAyNTAsIDI0MCwgMjM5LCAyNTAsIDI0MSwgNzcsIDIxOCwgNTEsIDI0NywgCi0gICAgMzksIDIyMCwgMjksIDIxOCwgNTEsIDI0NywgMzksIDIwOSwgMTk3LCAyMjAsIDI5LCAyMDksIDE5NywgMjUwLCAyMiwgMjIwLCAKLSAgICAyOSwgMjUwLCAyMiwgMjE2LCAxNDUsIDIwNiwgNDcsIDI0NCwgNDEsIDIwOCwgNTAsIDI1MCwgODYsIDIyNywgOCwgMjA4LCAKLSAgICAxMTYsIDIyNCwgNDIsIDIyNCwgMTMsIDIxNiwgMTkyLCAyMTAsIDE4MiwgMjE2LCAxOTIsIDIyNCwgMTMsIDI0NywgODYsIAotICAgIDI1MSwgOTUsIDIwOCwgMTA3LCAyMTIsIDI1MSwgMjE1LCAxODgsIDIxMSwgMjEwLCAyMzYsIDEwNiwgMjA4LCAxMTQsIDIyNywgCi0gICAgMTM0LCA4MCwgMjA4LCAxMTQsIDIyNywgMTM0LCAyNDUsIDE5OSwgNTQsIDIxOCwgNTEsIDI0NywgMjQsIDIxNiwgNjcsIAotICAgIDIyNywgMTM0LCAyMDgsIDgyLCAyMzksIDIyNiwgMjIwLCAzMiwgMjE4LCAzMCwgMjQzLCA4OCwgMjIxLCAxOTIsIDI0MSwgCi0gICAgNjMsIDU0LCAyMTIsIDI4LCA5NywgMjIxLCAxOTIsIDIxMiwgMjgsIDk3LCAyMTcsIDE2MCwgMjI3LCA4NywgMjMxLCA1MCwgCi0gICAgMjMwLCAxOTgsIDIxOCwgOTcsIDk3LCAyNDMsIDExNCwgMjIxLCAxNjYsIDIyNywgODcsIDk3LCAyMTgsIDI0LCAyMDQsIDgxLCAKLSAgICA5NywgMjIxLCAxODIsIDIwNCwgODEsIDk3LCAyNDgsIDgyLCAyMjEsIDE5MiwgMjQ4LCA4MSwgMjQ4LCA4MCwgMjI0LCAxMywgCi0gICAgMjQ4LCA4MCwgMjE5LCAyNSwgMjIxLCAxOTIsIDIxOSwgMjQsIDI0NiwgMTMyLCAyNDUsIDEyMywgMjI0LCAyMzYsIDk3LCAKLSAgICAyMDMsIDI0NywgOTcsIDIxNiwgODMsIDI0OSwgMjgsIDk3LCAyMDgsIDE2OCwgMjA0LCA4MSwgMjQ2LCAxMywgMjEyLCAyMDksIAotICAgIDI0OCwgMjA2LCAyNDgsIDIwNCwgMjE5LCA1NywgMjQ1LCAxODMsIDI0NSwgNzksIDI0OSwgNywgMjQ2LCA0MSwgNDksIDIyNiwgCi0gICAgMjI5LCAyMDgsIDg2LCAzLCAyMTUsIDE4OSwgMjQ1LCAxNjQsIDIxNywgMjIwLCA1NCwgNDMsIDIzMSwgMjUsIDIxMSwgMjM5LCAKLSAgICAyNDcsIDIzMSwgOTcsIDIzOCwgNTksIDk3LCAyNDUsIDE1NywgMjUsIDIyOCwgMTgsIDIxMiwgNTQsIDI1MSwgMTM1LCAyMTIsIAotICAgIDIzMSwgMjQ5LCA2LCAyNDgsIDEyNywgMjQ4LCAxMjgsIDI0OCwgMTUxLCAyMTgsIDk3LCA3NiwgMjAzLCAyMzEsIDIzNywgCi0gICAgMTMxLCAyNSwgMjAzLCAyMjUsIDIxMywgOCwgMjIwLCA1NiwgMjQyLCA0NiwgMjI0LCAxNywgMjE2LCAxOTMsIDIwOCwgMTE4LCAKLSAgICAyMjQsIDE5LCAyNDgsIDE5LCAyMDYsIDIyMywgMjI0LCAxMTksIDI1MSwgNTIsIDIwNiwgMjIzLCAyNTEsIDUyLCAyMDYsIAotICAgIDIyMywgNSwgMjUxLCA1MiwgNSwgMjUxLCA1MiwgMjIxLCAxNzEsIDI1MSwgNTIsIDI1MSwgNTMsIDI0NCwgMjUsIDI1MSwgCi0gICAgNTMsIDI1MCwgOTcsIDIxNCwgMjIxLCAyMjAsIDI5LCAyMzksIDI1MCwgMjQxLCA3NywgMjQzLCAyMTEsIDIyNywgNDAsIAotICAgIDIxOSwgNjAsIDIxMiwgMjUxLCAxMzYsIDE2LCAzNSwgMjE3LCAzNiwgMTM2LCAxNiwgMzUsIDI1MSwgNTQsIDEzNiwgMTYsIAotICAgIDM1LCAyMzksIDI0OSwgMTM2LCAxNiwgMzUsIDI0MSwgMTc5LCAxMzYsIDE2LCAzNSwgMjA0LCA4MCwgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgMTQ2LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgMTMyLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgCi0gICAgMTMxLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk1LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk0LCAKLSAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMDksIDEzNiwgMTYsIDM1LCAyMDUsIDIwOCwgMTM2LCAxNiwgMzUsIDIwNSwgMjA3LCAxMzYsIAotICAgIDE2LCAzNSwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCAyMTgsIDE4NCwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCA2MiwgMjEwLCAKLSAgICAyMjEsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTIsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTEsIAotICAgIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTAsIDEzNiwgMTYsIDM1LCAyNDYsIDY0LCAxMzYsIDE2LCAzNSwgMjE1LCAKLSAgICAxLCAxMzYsIDE2LCAzNSwgMjIyLCA1MSwgMTM2LCAxNiwgMzUsIDIwNSwgMTkzLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTIsIAotICAgIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAxLCAxMzYsIDE2LCAzNSwgMjE1LCAyMTksIDIxNSwgMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIzOCwgMzEsIDEzNiwgMTYsIDM1LCAyMTIsIDEzMywgMTM2LCAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOSwgMTM2LCAKLSAgICAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIAotICAgIDM1LCAyMTYsIDEyOCwgNzYsIDIzMCwgMjIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxNzQsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgCi0gICAgMjMwLCAyMTksIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIAotICAgIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAyNDUsIDEzNCwgNzYsIDI0NSwgMTcyLCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAzNSwgMjE1LCAyLCA3NiwgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAKLSAgICAzNSwgMjEwLCAyNTMsIDc2LCAyMTUsIDIsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDIwNiwgNDIsIDEzNiwgMTYsIAotICAgIDM1LCAyMDgsIDIxOCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMjcsIDIzMywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKLSAgICAyNTAsIDE4NywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgCi0gICAgMjE1LCAyLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI1MCwgMTg2LCAKLSAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMTAsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODYsIAotICAgIDEzNiwgMTYsIDM1LCAyMTYsIDEyOCwgNzYsIDI1MCwgMTg1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjcsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTYsIDEyNiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjQsIDEzNiwgMTYsIDM1LCAyNTEsIAotICAgIDE3LCAxMzYsIDE2LCAzNSwgMjUxLCAxNiwgMTM2LCAxNiwgMzUsIDIyNSwgOTcsIDEzNiwgMTYsIDM1LCAyMTUsIDcsIDEzNiwgCi0gICAgMTYsIDM1LCAyNTAsIDkwLCAxMzYsIDE2LCAzNSwgMjE2LCAxNTUsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NCwgMTM2LCAxNiwgCi0gICAgMzUsIDI1MCwgMjUsIDEzNiwgMTYsIDM1LCAyNDgsIDUyLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIwOSwgMjE2LCAxMzYsIAotICAgIDE2LCAzNSwgMjA5LCAyMTUsIDEzNiwgMTYsIDM1LCAyMTcsIDQyLCAyMjcsIDEyMywgMTM2LCAxNiwgMzUsIDI0OCwgMCwgCi0gICAgMTM2LCAxNiwgMzUsIDI0NywgMjU1LCAxMzYsIDE2LCAzNSwgMjQ3LCAyNTQsIDEzNiwgMTYsIDM1LCAyNTAsIDI0OSwgMTM2LCAKLSAgICAxNiwgMzUsIDIyMCwgNTUsIDEzNiwgMTYsIDM1LCAyMTEsIDE5OCwgMTM2LCAxNiwgMzUsIDIwOCwgMjE2LCAxMzYsIDE2LCAKLSAgICAzNSwgMjM3LCAyMTAsIDEzNiwgMTYsIDM1LCAyMDQsIDY4LCAxMzYsIDE2LCAzNSwgMjE4LCAxOCwgMTM2LCAxNiwgMzUsIAotICAgIDI0NywgNzAsIDEzNiwgMTYsIDM1LCAyMDcsIDE2NiwgMTM2LCAxNiwgMzUsIDI0NywgNDEsIDIyNCwgMjMsIDEzNiwgMTYsIAotICAgIDM1LCAyMTQsIDE5OSwgNzYsIDIzMCwgODcsIDEzNiwgMTYsIDM1LCAyNDcsIDgzLCAxMzYsIDE2LCAzNSwgMjA4LCA3OSwgCi0gICAgMTM2LCAxNiwgMzUsIDIxMSwgOTIsIDIwOCwgNzksIDEzNiwgMTYsIDM1LCAyMjcsIDM5LCAxMzYsIDE2LCAzNSwgMjEyLCAKLSAgICAxMSwgMTM2LCAxNiwgMzUsIDIwNiwgMjAyLCAxMzYsIDE2LCAzNSwgMjM2LCA1MCwgMjQyLCAyNywgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyMTgsIDI2LCAyNTAsIDcwLCAxMzYsIDE2LCAzNSwgMjQ3LCAyMTAsIDEzNiwgMTYsIAotICAgIDM1LCAyMTgsIDE3LCAyNDcsIDIxMCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ2LCAxMzYsIDE2LCAzNSwgMjExLCA0OCwgMjEwLCAKLSAgICAyMDIsIDIxMSwgNDcsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIDIwMiwgMjExLCA0NiwgMTM2LCAxNiwgMzUsIDIxMCwgCi0gICAgMjQ5LCAxMzYsIDE2LCAzNSwgMjE3LCAyNDcsIDEzNiwgMTYsIDM1LCAyNDMsIDE1MCwgMTM2LCAxNiwgMzUsIDI0MywgMTUyLCAKLSAgICAxMzYsIDE2LCAzNSwgMjQzLCAxNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDE2OSwgMTM2LCAxNiwgMzUsIDIxNywgMTU4LCAxMzYsIAotICAgIDE2LCAzNSwgMjQ1LCAxMjEsIDEzNiwgMTYsIDM1LCAyNDUsIDEyMCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE5LCAxMzYsIDE2LCAKLSAgICAzNSwgMjQ1LCAxMTgsIDEzNiwgMTYsIDM1LCAyNDUsIDExNywgMTM2LCAxNiwgMzUsIDI1MSwgMjksIDEzNiwgMTYsIDM1LCAKLSAgICAyNDgsIDIwNywgNzYsIDIyNSwgODEsIDEzNiwgMTYsIDM1LCAyNDgsIDIwNywgNzYsIDIwNiwgNzQsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTYsIDgxLCAxMzYsIDE2LCAzNSwgMjM2LCA0MiwgMTM2LCAxNiwgMzUsIDIyMiwgNzksIDEzNiwgMTYsIDM1LCAyNDQsIAotICAgIDEzMiwgMTM2LCAxNiwgMzUsIDIyNCwgMzcsIDEzNiwgMTYsIDM1LCAxNjIsIDI0MiwgNTksIDEzNiwgMTYsIDM1LCAxNjIsIAotICAgIDIxOSwgMjE0LCA2MiwgMjI3LCAyMTcsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCAyMzAsIDIwNCwgCi0gICAgNTAsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMzAsIDIwNCwgNTAsIDIwOCwgODUsIDYyLCAyNDIsIDY5LCAyMzAsIDIwNCwgCi0gICAgNTAsIDIwOCwgODUsIDYyLCAyMTIsIDQ3LCA1LCAyNDYsIDYxLCAyMjUsIDEwLCAyNiwgNjEsIDI0NiwgNjEsIDI2LCA2MSwgCi0gICAgMjQ2LCA2MSwgNzksIDYxLCAyNDYsIDYxLCAyMDUsIDI0MiwgNzksIDYxLCAyNDYsIDYxLCAyNDAsIDE5NSwgNzksIDYxLCAKLSAgICAyNDYsIDYxLCA2MSwgMjQ2LCA2MiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDYsIDYxLCAyMTUsIDE5MSwgMjA5LCAyMTcsIDYyLCAKLSAgICAyMDgsIDIxMywgMjExLCAxNzcsIDYyLCAyMTIsIDQ3LCA1LCAyMTEsIDE3NywgMTU3LCA2MSwgMjExLCAxNzcsIDIyNSwgMTAsIAotICAgIDYxLCAyMTEsIDE3NywgMjYsIDYxLCAyMTEsIDE3NywgNzksIDYxLCAyMTEsIDE3NywgMjA1LCAyNDIsIDc5LCA2MSwgMjExLCAKLSAgICAxNzcsIDI0MCwgMTk1LCA3OSwgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDIxMSwgCi0gICAgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjI1LCAxMCwgMjExLCAxNzcsIDUxLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAKLSAgICAyNDMsIDIyMSwgNjIsIDIwNSwgMjQyLCA1LCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAKLSAgICAyMjIsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgCi0gICAgMjI1LCAxMCwgMjQzLCAyMjEsIDI0MywgMjIyLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAyMjYsIDI0NiwgNjIsIDIwNSwgCi0gICAgMjQyLCA1LCAyMjYsIDI0NiwgNjIsIDIyNSwgMTAsIDUsIDIyNiwgMjQ2LCA2MSwgMjI2LCAyNDcsIDI0NSwgMTk1LCA2MiwgCi0gICAgNSwgMjI2LCAyNDYsIDIwOSwgNjMsIDMwLCAyNDUsIDEzMCwgMTU3LCAzMCwgMjQ1LCAxMzAsIDIyNSwgMTAsIDMwLCAyNDUsIAotICAgIDEzMCwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDI2LCAzMCwgMjQ1LCAxMzAsIDIwNSwgMjQyLCA3OSwgMzAsIDI0NSwgCi0gICAgMTMwLCAyNDAsIDE5NSwgNzksIDMwLCAyNDUsIDEzMCwgMjA5LCA2MywgMjE0LCAyNTQsIDE1NywgMjE0LCAyNTQsIDIyNSwgCi0gICAgMTAsIDIxNCwgMjU0LCAyNiwgMjE0LCAyNTQsIDc5LCAyMTQsIDI1NCwgMjA1LCAyNDIsIDc5LCAyMTQsIDI1NCwgMjQwLCAKLSAgICAxOTUsIDc5LCAyMTQsIDI1NCwgMTU3LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIDIzOSwgMjMzLCAKLSAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIDIzOSwgMjMzLCAyMTEsIAotICAgIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCA3OSwgCi0gICAgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAxNTcsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIDEwLCAKLSAgICAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjEyLCA4OCwgCi0gICAgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCAKLSAgICA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIAotICAgIDEwLCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAKLSAgICAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAKLSAgICAxNTcsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDEyNiwgCi0gICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjM5LCAKLSAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIzOSwgCi0gICAgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAKLSAgICAyMTYsIDc0LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIDIzMywgMjE4LCAKLSAgICA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMzksIDIzMywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIxMiwgODgsIAotICAgIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODgsIDIxOCwgCi0gICAgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMjUsIDEwLCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIAotICAgIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAKLSAgICA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgCi0gICAgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCAyMTgsIAotICAgIDExOCwgMjExLCA5NCwgOTYsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCA1LCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCA4NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIAotICAgIDk2LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCAKLSAgICA5NCwgODYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI4LCA4LCAyMDgsIAotICAgIDg2LCAyNTAsIDk0LCA4NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjI4LCA4LCAKLSAgICAyMDgsIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgCi0gICAgOTYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA4NiwgNTMsIDMsIAotICAgIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA5NiwgNTMsIDMsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIAotICAgIDk0LCA3OSwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA3OSwgMTc3LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyMjgsIDgsIAotICAgIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCAxODMsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDk2LCAyMDgsIDg0LCAKLSAgICA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA5NiwgCi0gICAgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCAKLSAgICA3NSwgOTYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCA5NiwgCi0gICAgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDk2LCAyMDgsIDg0LCAKLSAgICA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgCi0gICAgNzksIDIxMywgNzUsIDk2LCAyNDAsIDEsIDQ3LCAxNzcsIDI0MCwgMSwgNDcsIDg2LCAyNDAsIDEsIDQ3LCAxODMsIDI0MCwgCi0gICAgMSwgNDcsIDk2LCAxMDMsIDQ3LCAxNzcsIDEwMywgNDcsIDg2LCAxMDMsIDQ3LCAxODMsIDEwMywgNDcsIDk2LCAyNDUsIAotICAgIDIyMiwgNDcsIDE3NywgMjQ1LCAyMjIsIDQ3LCA4NiwgMjQ1LCAyMjIsIDQ3LCAxODMsIDI0NSwgMjIyLCA0NywgOTYsIDc5LCAKLSAgICAyNDUsIDIyMiwgNDcsIDE3NywgNzksIDI0NSwgMjIyLCA0NywgODYsIDc5LCAyNDUsIDIyMiwgNDcsIDE4MywgNzksIDI0NSwgCi0gICAgMjIyLCA0NywgOTYsIDc5LCA0NywgMTc3LCA3OSwgNDcsIDg2LCA3OSwgNDcsIDE4MywgNzksIDQ3LCA5NiwgNDEsIDQ3LCAKLSAgICAxNzcsIDQxLCA0NywgODYsIDQxLCA0NywgMTgzLCA0MSwgNDcsIDE1MywgMjA0LCA0NiwgNDEsIDQ3LCAxNTMsIDI0MSwgCi0gICAgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDEsIDQ3LCA0OSwgCi0gICAgNTAsIDQxLCA0NywgMTEyLCAxMjEsIDQxLCA0NywgMjA0LCAyNiwgOTYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKLSAgICAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTU3LCAxNTAsIDQ3LCAyMDQsIAotICAgIDI2LCAxNTMsIDIwNCwgNDYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIAotICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAxNTMsIDI0MSwgMTc2LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDIxMSwgMjM4LCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKLSAgICAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMjUsIDEwLCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIAotICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMjExLCAyMzgsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMTc3LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgODYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDc5LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgCi0gICAgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIDIwNSwgMjQyLCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgODYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMDUsIDI0MiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgCi0gICAgMTc2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA1LCAyNDIsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCA5NiwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgMTc3LCAyMDgsIDg2LCAyNTAsIDk0LCA4NiwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCAyMDgsIDg2LCAyNTAsIAotICAgIDk0LCA5NiwgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDg2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA2MSwgNTMsIDIwNCwgNSwgMjA4LCAKLSAgICA4NiwgMjUwLCA5NCwgOTYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE3NywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIAotICAgIDI0OCwgODYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE4MywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgNzksIAotICAgIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCA3OSwgCi0gICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDExOCwgMjM3LCAxMzcsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMDksIAotICAgIDYwLCA5NiwgMjQ3LCAyNDUsIDYxLCA0NywgODYsIDI0NywgMjQ4LCAyMTMsIDc4LCA2MSwgNDcsIDk2LCAyMDgsIDE0NSwgCi0gICAgMjEzLCA3OCwgNjEsIDQ3LCA4NiwgMjA4LCAxNDUsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIyNywgMjE2LCA2MSwgNDcsIDg2LCAKLSAgICAyMTYsIDEwLCA2MSwgNDcsIDk2LCAyMTYsIDEwLCA2MSwgNDcsIDg2LCAyMjcsIDIxNiwgNjEsIDQ3LCA5NiwgMjQ5LCAyNCwgCi0gICAgMjEzLCA3NywgNjEsIDQ3LCA4NiwgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDQ3LCA5NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCAKLSAgICA0NywgODYsIDIzOSwgMTE3LCAyMTMsIDc3LCA2MSwgNDcsIDYxLCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTA1LCA2MSwgNTMsIAotICAgIDIxMywgNzYsIDIwNCwgMjQsIDEyMCwgMjA5LCA1NywgMjAyLCAyNiwgMjQwLCAxMDIsIDIyNCwgNTIsIDI0MCwgMTAyLCAKLSAgICAyNDAsIDEwMywgMywgMjA5LCA4MCwgMjIyLCAyMjIsIDI0MCwgMTAyLCAyMDksIDYyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAotICAgIDIzNywgNjMsIDIxNSwgMjIxLCAyNDAsIDEwMiwgMjM2LCAyMCwgMjQwLCAxMDIsIDIsIDc2LCAyMDksIDkzLCAyMzYsIDUyLCAKLSAgICAyNDUsIDE0NiwgMjI3LCAxMDIsIDI0MCwgMTAyLCAyMTQsIDE4OCwgMjA3LCAxNzksIDIwNiwgMjQwLCAyNDAsIDEwMiwgCi0gICAgMjQ2LCAxNjEsIDIwNCwgNTcsIDEyLCAxNSwgMjM1LCAxNTIsIDEyLCAxNSwgMjM1LCAxNTEsIDEyLCAxNSwgMjM1LCAxNTAsIAotICAgIDEyLCAxNSwgMjM1LCAxNDksIDEyLCAxNSwgMjM1LCAxNDgsIDEyLCAxNSwgMjM1LCAxNDcsIDEyLCAxNSwgMjM1LCAxNDYsIAotICAgIDEyLCAxNSwgMjM1LCAxNDUsIDEyLCAxNSwgMjM1LCAxNDQsIDEyLCAxNSwgMjM1LCAxNDMsIDEyLCAxNSwgMjM1LCAxNDIsIAotICAgIDEyLCAxNSwgMjM1LCAxNDEsIDEyLCAxNSwgMjM1LCAxNDAsIDEyLCAxNSwgMjM1LCAxMzksIDEyLCAxNSwgMjM1LCAxMzgsIAotICAgIDEyLCAxNSwgMjM1LCAxMzcsIDEyLCAxNSwgMjM1LCAxMzYsIDEyLCAxNSwgMjM1LCAxMzUsIDEyLCAxNSwgMjM1LCAxMzQsIAotICAgIDEyLCAxNSwgMjM1LCAxMzMsIDEyLCAxNSwgMjM1LCAxMzIsIDEyLCAxNSwgMjM1LCAxMzEsIDEyLCAxNSwgMjM1LCAxMzAsIAotICAgIDEyLCAxNSwgMjM1LCAxMjksIDEyLCAxNSwgMjM1LCAxMjgsIDEyLCAxNSwgMjM1LCAxMjcsIDEyLCAxNSwgMjM1LCAxMjYsIAotICAgIDEyLCAxNSwgMjM1LCAxMjUsIDEyLCAxNSwgMjM1LCAxMjQsIDEyLCAxNSwgMjM1LCAxMjMsIDEyLCAxNSwgMjM1LCAxMjIsIAotICAgIDEyLCAxNSwgMjM1LCAxMjEsIDEyLCAxNSwgMjM1LCAxMjAsIDEyLCAxNSwgMjM1LCAxMTksIDEyLCAxNSwgMjM1LCAxMTgsIAotICAgIDEyLCAxNSwgMjM1LCAxMTcsIDEyLCAxNSwgMjM1LCAxMTYsIDEyLCAxNSwgMjM1LCAxMTUsIDEyLCAxNSwgMjM1LCAxMTQsIAotICAgIDEyLCAxNSwgMjM1LCAxMTMsIDEyLCAxNSwgMjM1LCAxMTIsIDEyLCAxNSwgMjM1LCAxMTEsIDEyLCAxNSwgMjM1LCAxMTAsIAotICAgIDEyLCAxNSwgMjM1LCAxMDksIDEyLCAxNSwgMjM1LCAxMDgsIDEyLCAxNSwgMjM1LCAxMDcsIDEyLCAxNSwgMjM1LCAxMDYsIAotICAgIDEyLCAxNSwgMjM1LCAxMDUsIDEyLCAxNSwgMjM1LCAxMDQsIDEyLCAxNSwgMjM1LCAxMDMsIDEyLCAxNSwgMjM1LCAxMDIsIAotICAgIDEyLCAxNSwgMjM1LCAxMDEsIDEyLCAxNSwgMjM1LCAxMDAsIDEyLCAxNSwgMjM1LCA5OSwgMTIsIDE1LCAyMzUsIDk4LCAxMiwgCi0gICAgMTUsIDIzNSwgOTcsIDEyLCAxNSwgMjM1LCA5NiwgMTIsIDE1LCAyMzUsIDk1LCAxMiwgMTUsIDIzNSwgOTQsIDEyLCAxNSwgCi0gICAgMjM1LCA5MywgMTIsIDE1LCAyMzUsIDkyLCAxMiwgMTUsIDIzNSwgOTEsIDEyLCAxNSwgMjM1LCA5MCwgMTIsIDE1LCAyMzUsIAotICAgIDg5LCAxMiwgMTUsIDIzNSwgODgsIDEyLCAxNSwgMjM1LCA4NywgMTIsIDE1LCAyMzUsIDg2LCAxMiwgMTUsIDIzNSwgODUsIAotICAgIDEyLCAxNSwgMjM1LCA4NCwgMTIsIDE1LCAyMzUsIDgzLCAxMiwgMTUsIDIzNSwgODIsIDEyLCAxNSwgMjM1LCA4MSwgMTIsIAotICAgIDE1LCAyMzUsIDgwLCAxMiwgMTUsIDIzNSwgNzksIDEyLCAxNSwgMjM1LCA3OCwgMTIsIDE1LCAyMzUsIDc3LCAxMiwgMTUsIAotICAgIDIzNSwgNzYsIDEyLCAxNSwgMjM1LCA3NSwgMTIsIDE1LCAyMzUsIDc0LCAxMiwgMTUsIDIzNSwgNzMsIDEyLCAxNSwgMjM1LCAKLSAgICA3MiwgMTIsIDE1LCAyMzUsIDcxLCAxMiwgMTUsIDIzNSwgNzAsIDEyLCAxNSwgMjM1LCA2OSwgMTIsIDE1LCAyMzUsIDY4LCAKLSAgICAxMiwgMTUsIDIzNSwgNjcsIDEyLCAxNSwgMjM1LCA2NiwgMTIsIDE1LCAyMzUsIDY1LCAxMiwgMTUsIDIzNSwgNjQsIDEyLCAKLSAgICAxNSwgMjM1LCA2MywgMTIsIDE1LCAyMzUsIDYyLCAxMiwgMTUsIDIzNSwgNjEsIDEyLCAxNSwgMjM1LCA2MCwgMTIsIDE1LCAKLSAgICAyMzUsIDU5LCAxMiwgMTUsIDIzNSwgNTgsIDEyLCAxNSwgMjM1LCA1NywgMTIsIDE1LCAyMzUsIDU2LCAxMiwgMTUsIDIzNSwgCi0gICAgNTUsIDEyLCAxNSwgMjM1LCA1NCwgMTIsIDE1LCAyMzUsIDUzLCAxMiwgMTUsIDIzNSwgNTIsIDEyLCAxNSwgMjM1LCA1MSwgCi0gICAgMTIsIDE1LCAyMzUsIDUwLCAxMiwgMTUsIDIzNSwgNDksIDEyLCAxNSwgMjM1LCA0OCwgMTIsIDE1LCAyMzUsIDQ3LCAxMiwgCi0gICAgMTUsIDIzNSwgNDYsIDEyLCAxNSwgMjM1LCA0NSwgMTIsIDE1LCAyMzUsIDQ0LCAxMiwgMTUsIDIzNSwgNDMsIDEyLCAxNSwgCi0gICAgMjM1LCA0MiwgMTIsIDE1LCAyMzUsIDQxLCAxMiwgMTUsIDIzNSwgNDAsIDEyLCAxNSwgMjM1LCAzOSwgMTIsIDE1LCAyMzUsIAotICAgIDM4LCAxMiwgMTUsIDIzNSwgMzcsIDEyLCAxNSwgMjM1LCAzNiwgMTIsIDE1LCAyMzUsIDM1LCAxMiwgMTUsIDIzNSwgMzQsIAotICAgIDEyLCAxNSwgMjM1LCAzMywgMTIsIDE1LCAyMzUsIDMyLCAxMiwgMTUsIDIzNSwgMzEsIDEyLCAxNSwgMjM1LCAzMCwgMTIsIAotICAgIDE1LCAyMzUsIDI5LCAxMiwgMTUsIDIzNSwgMjgsIDEyLCAxNSwgMjM1LCAyNywgMTIsIDE1LCAyMzUsIDI2LCAxMiwgMTUsIAotICAgIDIzNSwgMjUsIDEyLCAxNSwgMjM1LCAyNCwgMTIsIDE1LCAyMzUsIDIzLCAxMiwgMTUsIDIzNSwgMjIsIDEyLCAxNSwgMjM1LCAKLSAgICAyMSwgMTIsIDE1LCAyMzUsIDIwLCAxMiwgMTUsIDIzNSwgMTksIDEyLCAxNSwgMjM1LCAxOCwgMTIsIDE1LCAyMzUsIDE3LCAKLSAgICAxMiwgMTUsIDIzNSwgMTYsIDEyLCAxNSwgMjM1LCAxNSwgMTIsIDE1LCAyMzUsIDE0LCAxMiwgMTUsIDIzNSwgMTMsIDEyLCAKLSAgICAxNSwgMjM1LCAxMiwgMTIsIDE1LCAyMzUsIDExLCAxMiwgMTUsIDIzNSwgMTAsIDEyLCAxNSwgMjM1LCA5LCAxMiwgMTUsIAotICAgIDIzNSwgOCwgMTIsIDE1LCAyMzUsIDcsIDEyLCAxNSwgMjM1LCA2LCAxMiwgMTUsIDIzNSwgNSwgMTIsIDE1LCAyMzUsIDQsIAotICAgIDEyLCAxNSwgMjM1LCAzLCAxMiwgMTUsIDIzNSwgMiwgMTIsIDE1LCAyMzUsIDEsIDEyLCAxNSwgMjM1LCAwLCAxMiwgMTUsIAotICAgIDIzNCwgMjU1LCAxMiwgMTUsIDIzNCwgMjU0LCAxMiwgMTUsIDIzNCwgMjUzLCAxMiwgMTUsIDIzNCwgMjUyLCAxMiwgMTUsIAotICAgIDIzNCwgMjUxLCAxMiwgMTUsIDIzNCwgMjUwLCAxMiwgMTUsIDIzNCwgMjQ5LCAxMiwgMTUsIDIzNCwgMjQ4LCAxMiwgMTUsIAotICAgIDIzNCwgMjQ3LCAxMiwgMTUsIDIzNCwgMjQ2LCAxMiwgMTUsIDIzNCwgMjQ1LCAxMiwgMTUsIDIzNCwgMjQ0LCAxMiwgMTUsIAotICAgIDIzNCwgMjQzLCAxMiwgMTUsIDIzNCwgMjQyLCAxMiwgMTUsIDIzNCwgMjQxLCAxMiwgMTUsIDIzNCwgMjQwLCAxMiwgMTUsIAotICAgIDIzNCwgMjM5LCAxMiwgMTUsIDIzNCwgMjM4LCAxMiwgMTUsIDIzNCwgMjM3LCAxMiwgMTUsIDIzNCwgMjM2LCAxMiwgMTUsIAotICAgIDIzNCwgMjM1LCAxMiwgMTUsIDIzNCwgMjM0LCAxMiwgMTUsIDIzNCwgMjMzLCAxMiwgMTUsIDIzNCwgMjMyLCAxMiwgMTUsIAotICAgIDIzNCwgMjMxLCAxMiwgMTUsIDIzNCwgMjMwLCAxMiwgMTUsIDIzNCwgMjI5LCAxMiwgMTUsIDIzNCwgMjI4LCAxMiwgMTUsIAotICAgIDIzNCwgMjI3LCAxMiwgMTUsIDIzNCwgMjI2LCAxMiwgMTUsIDIzNCwgMjI1LCAxMiwgMTUsIDIzNCwgMjI0LCAxMiwgMTUsIAotICAgIDIzNCwgMjIzLCAxMiwgMTUsIDIzNCwgMjIyLCAxMiwgMTUsIDIzNCwgMjIxLCAxMiwgMTUsIDIzNCwgMjIwLCAxMiwgMTUsIAotICAgIDIzNCwgMjE5LCAxMiwgMTUsIDIzNCwgMjE4LCAxMiwgMTUsIDIzNCwgMjE3LCAxMiwgMTUsIDIzNCwgMjE2LCAxMiwgMTUsIAotICAgIDIzNCwgMjE1LCAxMiwgMTUsIDIzNCwgMjE0LCAxMiwgMTUsIDIzNCwgMjEzLCAxMiwgMTUsIDIzNCwgMjEyLCAxMiwgMTUsIAotICAgIDIzNCwgMjExLCAxMiwgMTUsIDIzNCwgMjEwLCAxMiwgMTUsIDIzNCwgMjA5LCAxMiwgMTUsIDIzNCwgMjA4LCAxMiwgMTUsIAotICAgIDIzNCwgMjA3LCAxMiwgMTUsIDIzNCwgMjA2LCAxMiwgMTUsIDIzNCwgMjA1LCAxMiwgMTUsIDIzNCwgMjA0LCAxMiwgMTUsIAotICAgIDIzNCwgMjAzLCAxMiwgMTUsIDIzNCwgMjAyLCAxMiwgMTUsIDIzNCwgMjAxLCAxMiwgMTUsIDIzNCwgMjAwLCAxMiwgMTUsIAotICAgIDIzNCwgMTk5LCAxMiwgMTUsIDIzNCwgMTk4LCAxMiwgMTUsIDIzNCwgMTk3LCAxMiwgMTUsIDIzNCwgMTk2LCAxMiwgMTUsIAotICAgIDIzNCwgMTk1LCAxMiwgMTUsIDIzNCwgMTk0LCAxMiwgMTUsIDIzNCwgMTkzLCAxMiwgMTUsIDIzNCwgMTkyLCAxMiwgMTUsIAotICAgIDIzNCwgMTkxLCAxMiwgMTUsIDIzNCwgMTkwLCAxMiwgMTUsIDIzNCwgMTg5LCAxMiwgMTUsIDIzNCwgMTg4LCAxMiwgMTUsIAotICAgIDIzNCwgMTg3LCAxMiwgMTUsIDIzNCwgMTg2LCAxMiwgMTUsIDIzNCwgMTg1LCAxMiwgMTUsIDIzNCwgMTg0LCAxMiwgMTUsIAotICAgIDIzNCwgMTgzLCAxMiwgMTUsIDIzNCwgMTgyLCAxMiwgMTUsIDIzNCwgMTgxLCAxMiwgMTUsIDIzNCwgMTgwLCAxMiwgMTUsIAotICAgIDIzNCwgMTc5LCAxMiwgMTUsIDIzNCwgMTc4LCAxMiwgMTUsIDIzNCwgMTc3LCAxMiwgMTUsIDIzNCwgMTc2LCAxMiwgMTUsIAotICAgIDIzNCwgMTc1LCAxMiwgMTUsIDIzNCwgMTc0LCAxMiwgMTUsIDIzNCwgMTczLCAxMiwgMTUsIDIzNCwgMTcyLCAxMiwgMTUsIAotICAgIDIzNCwgMTcxLCAxMiwgMTUsIDIzNCwgMTcwLCAxMiwgMTUsIDIzNCwgMTY5LCAxMiwgMTUsIDIzNCwgMTY4LCAxMiwgMTUsIAotICAgIDIzNCwgMTY3LCAxMiwgMTUsIDIzNCwgMTY2LCAxMiwgMTUsIDIzNCwgMTY1LCAxMiwgMTUsIDIzNCwgMTY0LCAxMiwgMTUsIAotICAgIDIzNCwgMTYzLCAxMiwgMTUsIDIzNCwgMTYyLCAxMiwgMTUsIDIzNCwgMTYxLCAxMiwgMTUsIDIzNCwgMTYwLCAxMiwgMTUsIAotICAgIDIzNCwgMTU5LCAxMiwgMTUsIDIzNCwgMTU4LCAxMiwgMTUsIDIzNCwgMTU3LCAxMiwgMTUsIDIzNCwgMTU2LCAxMiwgMTUsIAotICAgIDIzNCwgMTU1LCAxMiwgMTUsIDIzNCwgMTU0LCAxMiwgMTUsIDIzNCwgMTUzLCAxMiwgMTUsIDIzNCwgMTUyLCAxMiwgMTUsIAotICAgIDIzNCwgMTUxLCAxMiwgMTUsIDIzNCwgMTUwLCAxMiwgMTUsIDIzNCwgMTQ5LCAxMiwgMTUsIDIzNCwgMTQ4LCAxMiwgMTUsIAotICAgIDIzNCwgMTQ3LCAxMiwgMTUsIDIzNCwgMTQ2LCAxMiwgMTUsIDIzNCwgMTQ1LCAxMiwgMTUsIDIzNCwgMTQ0LCAxMiwgMTUsIAotICAgIDIzNCwgMTQzLCAxMiwgMTUsIDIzNCwgMTQyLCAxMiwgMTUsIDIzNCwgMTQxLCAxMiwgMTUsIDIzNCwgMTQwLCAxMiwgMTUsIAotICAgIDIzNCwgMTM5LCAxMiwgMTUsIDIzNCwgMTM4LCAxMiwgMTUsIDIzNCwgMTM3LCAxMiwgMTUsIDIzNCwgMTM2LCAxMiwgMTUsIAotICAgIDIzNCwgMTM1LCAxMiwgMTUsIDIzNCwgMTM0LCAxMiwgMTUsIDIzNCwgMTMzLCAxMiwgMTUsIDIzNCwgMTMyLCAxMiwgMTUsIAotICAgIDIzNCwgMTMxLCAxMiwgMTUsIDIzNCwgMTMwLCAxMiwgMTUsIDIzNCwgMTI5LCAxMiwgMTUsIDIzNCwgMTI4LCAxMiwgMTUsIAotICAgIDIzNCwgMTI3LCAxMiwgMTUsIDIzNCwgMTI2LCAxMiwgMTUsIDIzNCwgMTI1LCAxMiwgMTUsIDIzNCwgMTI0LCAxMiwgMTUsIAotICAgIDIzNCwgMTIzLCAxMiwgMTUsIDIzNCwgMTIyLCAxMiwgMTUsIDIzNCwgMTIxLCAxMiwgMTUsIDIzNCwgMTIwLCAxMiwgMTUsIAotICAgIDIzNCwgMTE5LCAxMiwgMTUsIDIzNCwgMTE4LCAxMiwgMTUsIDIzNCwgMTE3LCAxMiwgMTUsIDIzNCwgMTE2LCAxMiwgMTUsIAotICAgIDIzNCwgMTE1LCAxMiwgMTUsIDIzNCwgMTE0LCAxMiwgMTUsIDIzNCwgMTEzLCAxMiwgMTUsIDIzNCwgMTEyLCAxMiwgMTUsIAotICAgIDIzNCwgMTExLCAxMiwgMTUsIDIzNCwgMTEwLCAxMiwgMTUsIDIzNCwgMTA5LCAxMiwgMTUsIDIzNCwgMTA4LCAxMiwgMTUsIAotICAgIDIzNCwgMTA3LCAxMiwgMTUsIDIzNCwgMTA2LCAxMiwgMTUsIDIzNCwgMTA1LCAxMiwgMTUsIDIzNCwgMTA0LCAxMiwgMTUsIAotICAgIDIzNCwgMTAzLCAxMiwgMTUsIDIzNCwgMTAyLCAxMiwgMTUsIDIzNCwgMTAxLCAxMiwgMTUsIDIzNCwgMTAwLCAxMiwgMTUsIAotICAgIDIzNCwgOTksIDEyLCAxNSwgMjM0LCA5OCwgMTIsIDE1LCAyMzQsIDk3LCAxMiwgMTUsIDIzNCwgOTYsIDEyLCAxNSwgMjM0LCAKLSAgICA5NSwgMTIsIDE1LCAyMzQsIDk0LCAxMiwgMTUsIDIzNCwgOTMsIDEyLCAxNSwgMjM0LCA5MiwgMTIsIDE1LCAyMzQsIDkxLCAKLSAgICAxMiwgMTUsIDIzNCwgOTAsIDEyLCAxNSwgMjM0LCA4OSwgMTIsIDE1LCAyMzQsIDg4LCAxMiwgMTUsIDIzNCwgODcsIDEyLCAKLSAgICAxNSwgMjM0LCA4NiwgMTIsIDE1LCAyMzQsIDg1LCAxMiwgMTUsIDIzNCwgODQsIDEyLCAxNSwgMjM0LCA4MywgMTIsIDE1LCAKLSAgICAyMzQsIDgyLCAxMiwgMTUsIDIzNCwgODEsIDEyLCAxNSwgMjM0LCA4MCwgMTIsIDE1LCAyMzQsIDc5LCAxMiwgMTUsIDIzNCwgCi0gICAgNzgsIDEyLCAxNSwgMjM0LCA3NywgMTIsIDE1LCAyMzQsIDc2LCAxMiwgMTUsIDIzNCwgNzUsIDEyLCAxNSwgMjM0LCA3NCwgCi0gICAgMTIsIDE1LCAyMzQsIDczLCAxMiwgMTUsIDIzNCwgNzIsIDEyLCAxNSwgMjM0LCA3MSwgMTIsIDE1LCAyMzQsIDcwLCAxMiwgCi0gICAgMTUsIDIzNCwgNjksIDEyLCAxNSwgMjM0LCA2OCwgMTIsIDE1LCAyMzQsIDY3LCAxMiwgMTUsIDIzNCwgNjYsIDEyLCAxNSwgCi0gICAgMjM0LCA2NSwgMTIsIDE1LCAyMzQsIDY0LCAxMiwgMTUsIDIzNCwgNjMsIDEyLCAxNSwgMjM0LCA2MiwgMTIsIDE1LCAyMzQsIAotICAgIDYxLCAxMiwgMTUsIDIzNCwgNjAsIDEyLCAxNSwgMjM0LCA1OSwgMTIsIDE1LCAyMzQsIDU4LCAxMiwgMTUsIDIzNCwgNTcsIAotICAgIDEyLCAxNSwgMjM0LCA1NiwgMTIsIDE1LCAyMzQsIDU1LCAxMiwgMTUsIDIzNCwgNTQsIDEyLCAxNSwgMjM0LCA1MywgMTIsIAotICAgIDE1LCAyMzQsIDUyLCAxMiwgMTUsIDIzNCwgNTEsIDEyLCAxNSwgMjM0LCA1MCwgMTIsIDE1LCAyMzQsIDQ5LCAxMiwgMTUsIAotICAgIDIzNCwgNDgsIDEyLCAxNSwgMjM0LCA0NywgMTIsIDE1LCAyMzQsIDQ2LCAxMiwgMTUsIDIzNCwgNDUsIDEyLCAxNSwgMjM0LCAKLSAgICA0NCwgMTIsIDE1LCAyMzQsIDQzLCAxMiwgMTUsIDIzNCwgNDIsIDEyLCAxNSwgMjM0LCA0MSwgMTIsIDE1LCAyMzQsIDQwLCAKLSAgICAxMiwgMTUsIDIzNCwgMzksIDEyLCAxNSwgMjM0LCAzOCwgMTIsIDE1LCAyMzQsIDM3LCAxMiwgMTUsIDIzNCwgMzYsIDEyLCAKLSAgICAxNSwgMjM0LCAzNSwgMTIsIDE1LCAyMzQsIDM0LCAxMiwgMTUsIDIzNCwgMzMsIDEyLCAxNSwgMjM0LCAzMiwgMTIsIDE1LCAKLSAgICAyMzQsIDMxLCAxMiwgMTUsIDIzNCwgMzAsIDEyLCAxNSwgMjM0LCAyOSwgMTIsIDE1LCAyMzQsIDI4LCAxMiwgMTUsIDIzNCwgCi0gICAgMjcsIDEyLCAxNSwgMjM0LCAyNiwgMTIsIDE1LCAyMzQsIDI1LCAxMiwgMTUsIDIzNCwgMjQsIDEyLCAxNSwgMjM0LCAyMywgCi0gICAgMTIsIDE1LCAyMzQsIDIyLCAxMiwgMTUsIDIzNCwgMjEsIDEyLCAxNSwgMjM0LCAyMCwgMTIsIDE1LCAyMzQsIDE5LCAxMiwgCi0gICAgMTUsIDIzNCwgMTgsIDEyLCAxNSwgMjM0LCAxNywgMTIsIDE1LCAyMzQsIDE2LCAxMiwgMTUsIDIzNCwgMTUsIDEyLCAxNSwgCi0gICAgMjM0LCAxNCwgMTIsIDE1LCAyMzQsIDEzLCAxMiwgMTUsIDIzNCwgMTIsIDEyLCAxNSwgMjM0LCAxMSwgMTIsIDE1LCAyMzQsIAotICAgIDEwLCAxMiwgMTUsIDIzNCwgOSwgMTIsIDE1LCAyMzQsIDgsIDEyLCAxNSwgMjM0LCA3LCAxMiwgMTUsIDIzNCwgNiwgMTIsIAotICAgIDE1LCAyMzQsIDUsIDEyLCAxNSwgMjM0LCA0LCAxMiwgMTUsIDIzNCwgMywgMTIsIDE1LCAyMzQsIDIsIDEyLCAxNSwgMjM0LCAKLSAgICAxLCAxMiwgMTUsIDIzNCwgMCwgMTIsIDE1LCAyMzMsIDI1NSwgMTIsIDE1LCAyMzMsIDI1NCwgMTIsIDE1LCAyMzMsIDI1MywgCi0gICAgMTIsIDE1LCAyMzMsIDI1MiwgMTIsIDE1LCAyMzMsIDI1MSwgMTIsIDE1LCAyMzMsIDI1MCwgMTIsIDE1LCAyMzMsIDI0OSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0OCwgMTIsIDE1LCAyMzMsIDI0NywgMTIsIDE1LCAyMzMsIDI0NiwgMTIsIDE1LCAyMzMsIDI0NSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0NCwgMTIsIDE1LCAyMzMsIDI0MywgMTIsIDE1LCAyMzMsIDI0MiwgMTIsIDE1LCAyMzMsIDI0MSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0MCwgMTIsIDE1LCAyMzMsIDIzOSwgMTIsIDE1LCAyMzMsIDIzOCwgMTIsIDE1LCAyMzMsIDIzNywgCi0gICAgMTIsIDE1LCAyMzMsIDIzNiwgMTIsIDE1LCAyMzMsIDIzNSwgMTIsIDE1LCAyMzMsIDIzNCwgMTIsIDE1LCAyMzMsIDIzMywgCi0gICAgMTIsIDE1LCAyMzMsIDIzMiwgMTIsIDE1LCAyMzMsIDIzMSwgMTIsIDE1LCAyMzMsIDIzMCwgMTIsIDE1LCAyMzMsIDIyOSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyOCwgMTIsIDE1LCAyMzMsIDIyNywgMTIsIDE1LCAyMzMsIDIyNiwgMTIsIDE1LCAyMzMsIDIyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyNCwgMTIsIDE1LCAyMzMsIDIyMywgMTIsIDE1LCAyMzMsIDIyMiwgMTIsIDE1LCAyMzMsIDIyMSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyMCwgMTIsIDE1LCAyMzMsIDIxOSwgMTIsIDE1LCAyMzMsIDIxOCwgMTIsIDE1LCAyMzMsIDIxNywgCi0gICAgMTIsIDE1LCAyMzMsIDIxNiwgMTIsIDE1LCAyMzMsIDIxNSwgMTIsIDE1LCAyMzMsIDIxNCwgMTIsIDE1LCAyMzMsIDIxMywgCi0gICAgMTIsIDE1LCAyMzMsIDIxMiwgMTIsIDE1LCAyMzMsIDIxMSwgMTIsIDE1LCAyMzMsIDIxMCwgMTIsIDE1LCAyMzMsIDIwOSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwOCwgMTIsIDE1LCAyMzMsIDIwNywgMTIsIDE1LCAyMzMsIDIwNiwgMTIsIDE1LCAyMzMsIDIwNSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwNCwgMTIsIDE1LCAyMzMsIDIwMywgMTIsIDE1LCAyMzMsIDIwMiwgMTIsIDE1LCAyMzMsIDIwMSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwMCwgMTIsIDE1LCAyMzMsIDE5OSwgMTIsIDE1LCAyMzMsIDE5OCwgMTIsIDE1LCAyMzMsIDE5NywgCi0gICAgMTIsIDE1LCAyMzMsIDE5NiwgMTIsIDE1LCAyMzMsIDE5NSwgMTIsIDE1LCAyMzMsIDE5NCwgMTIsIDE1LCAyMzMsIDE5MywgCi0gICAgMTIsIDE1LCAyMzMsIDE5MiwgMTIsIDE1LCAyMzMsIDE5MSwgMTIsIDE1LCAyMzMsIDE5MCwgMTIsIDE1LCAyMzMsIDE4OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4OCwgMTIsIDE1LCAyMzMsIDE4NywgMTIsIDE1LCAyMzMsIDE4NiwgMTIsIDE1LCAyMzMsIDE4NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4NCwgMTIsIDE1LCAyMzMsIDE4MywgMTIsIDE1LCAyMzMsIDE4MiwgMTIsIDE1LCAyMzMsIDE4MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4MCwgMTIsIDE1LCAyMzMsIDE3OSwgMTIsIDE1LCAyMzMsIDE3OCwgMTIsIDE1LCAyMzMsIDE3NywgCi0gICAgMTIsIDE1LCAyMzMsIDE3NiwgMTIsIDE1LCAyMzMsIDE3NSwgMTIsIDE1LCAyMzMsIDE3NCwgMTIsIDE1LCAyMzMsIDE3MywgCi0gICAgMTIsIDE1LCAyMzMsIDE3MiwgMTIsIDE1LCAyMzMsIDE3MSwgMTIsIDE1LCAyMzMsIDE3MCwgMTIsIDE1LCAyMzMsIDE2OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2OCwgMTIsIDE1LCAyMzMsIDE2NywgMTIsIDE1LCAyMzMsIDE2NiwgMTIsIDE1LCAyMzMsIDE2NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2NCwgMTIsIDE1LCAyMzMsIDE2MywgMTIsIDE1LCAyMzMsIDE2MiwgMTIsIDE1LCAyMzMsIDE2MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2MCwgMTIsIDE1LCAyMzMsIDE1OSwgMTIsIDE1LCAyMzMsIDE1OCwgMTIsIDE1LCAyMzMsIDE1NywgCi0gICAgMTIsIDE1LCAyMzMsIDE1NiwgMTIsIDE1LCAyMzMsIDE1NSwgMTIsIDE1LCAyMzMsIDE1NCwgMTIsIDE1LCAyMzMsIDE1MywgCi0gICAgMTIsIDE1LCAyMzMsIDE1MiwgMTIsIDE1LCAyMzMsIDE1MSwgMTIsIDE1LCAyMzMsIDE1MCwgMTIsIDE1LCAyMzMsIDE0OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0OCwgMTIsIDE1LCAyMzMsIDE0NywgMTIsIDE1LCAyMzMsIDE0NiwgMTIsIDE1LCAyMzMsIDE0NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0NCwgMTIsIDE1LCAyMzMsIDE0MywgMTIsIDE1LCAyMzMsIDE0MiwgMTIsIDE1LCAyMzMsIDE0MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0MCwgMTIsIDE1LCAyMzMsIDEzOSwgMTIsIDE1LCAyMzMsIDEzOCwgMTIsIDE1LCAyMzMsIDEzNywgCi0gICAgMTIsIDE1LCAyMzMsIDEzNiwgMTIsIDE1LCAyMzMsIDEzNSwgMTIsIDE1LCAyMzMsIDEzNCwgMTIsIDE1LCAyMzMsIDEzMywgCi0gICAgMTIsIDE1LCAyMzMsIDEzMiwgMTIsIDE1LCAyMzMsIDEzMSwgMTIsIDE1LCAyMzMsIDEzMCwgMTIsIDE1LCAyMzMsIDEyOSwgCi0gICAgMTIsIDE1LCAyMzMsIDEyOCwgMTIsIDE1LCAyMzMsIDEyNywgMTIsIDE1LCAyMzMsIDEyNiwgMTIsIDE1LCAyMzMsIDEyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDEyNCwgMTIsIDE1LCAyMzMsIDEyMywgMjI4LCAxNCwgMjA5LCAyNTUsIDE2MCwgMjExLCAyMjgsIAotICAgIDE2MCwgMjQwLCAyMTIsIDgyLCAxNjAsIDIxNywgMzEsIDgyLCAxNjAsIDQyLCA1NCwgMTYwLCAyNDMsIDk3LCA1NCwgMTYwLCAKLSAgICAyMTgsIDI0NiwgNTQsIDE2MCwgMjUwLCAyMzUsIDE2MCwgMjUwLCAxNjAsIDE2MCwgNDksIDIxOSwgNzYsIDE2MCwgNTAsIAotICAgIDIxOSwgNzYsIDE2MCwgMjUwLCA1OSwgMTYwLCA5MSwgNTQsIDE2MCwgMjQ1LCAyMzMsIDE2MCwgMjM1LCAyMTksIDE2MCwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE2MCwgMjEyLCAwLCAxNjAsIDE3LCAyMDIsIDg0LCAxNjAsIDE3LCAxMDUsIDE2MCwgMTcsIAotICAgIDEwOCwgMTYwLCAxNywgMTQ3LCAxNjAsIDE3LCAxNDksIDE2MCwgMTcsIDE3MCwgMTYwLCAxNywgMTk1LCAxNjAsIDE3LCAKLSAgICAyMTMsIDExMSwgMTYwLCAxNywgMTk5LCAxNjAsIDE3LCAyMjIsIDYzLCAxNjAsIDI0NSwgMjQyLCAxNjAsIDIxMywgMTQzLCAKLSAgICAxNjAsIDIyNywgMTc5LCA1NCwgMTYwLCAyNDEsIDM1LCA1NCwgMTYwLCAyMzcsIDI0NywgNTQsIDE2MCwgMjE3LCA0NywgODIsIAotICAgIDE2MCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE2MCwgOCwgNiwgMSwgNjMsIDE2MCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgCi0gICAgNiwgMSwgMjQ3LCAxMjUsIDE2MCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA2LCAxLCA3NCwgMTYwLCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3NCwgMTYwLCA4LCA2LCAxLCAyMzksIDc1LCAxNjAsIDgsIDYsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDYsIDEsIAotICAgIDc1LCAxNjAsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNjAsIDgsIDYsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNiwgMSwgMTU5LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNjAsIDgsIDYsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDYsIDEsIDc4LCAxNjAsIDgsIAotICAgIDYsIDEsIDIxOSwgMTg0LCAxNjAsIDgsIDYsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDYsIDEsIDE0NiwgMTYwLCA4LCA2LCAxLCAKLSAgICAxOTQsIDE2MCwgOCwgNiwgMSwgMjEwLCA2OSwgMTYwLCA4LCA2LCAxLCA2OCwgMTYwLCA4LCA2LCAxLCAyMDYsIDE2NCwgCi0gICAgMTYwLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTYwLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA2LCAxLCAyMDMsIDEyNCwgCi0gICAgMTYwLCA4LCA2LCAxLCAyMDIsIDE1OSwgMTYwLCA0OSwgNTEsIDE1NSwgMTYwLCAyMTYsIDc0LCAyMTIsIDAsIDE2MCwgNTAsIAotICAgIDUxLCAxNTUsIDE2MCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE2MCwgMTI0LCAyMjcsIDExNCwgMTYwLCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDE2MCwgOCwgNSwgMSwgNjMsIDE2MCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAotICAgIDE2MCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA1LCAxLCA3NCwgMTYwLCA4LCA1LCAxLCAyNDAsIDE3NCwgMTYwLCA4LCAKLSAgICA1LCAxLCAyMzksIDc1LCAxNjAsIDgsIDUsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDUsIDEsIDc1LCAxNjAsIDgsIDUsIDEsIAotICAgIDIzMCwgMTg0LCAxNjAsIDgsIDUsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNSwgMSwgMTU5LCAxNjAsIDgsIDUsIDEsIDIyNiwgCi0gICAgMTg1LCAxNjAsIDgsIDUsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDUsIDEsIDc4LCAxNjAsIDgsIDUsIDEsIDIxOSwgMTg0LCAKLSAgICAxNjAsIDgsIDUsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDUsIDEsIDE0NiwgMTYwLCA4LCA1LCAxLCAxOTQsIDE2MCwgOCwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMTYwLCA4LCA1LCAxLCA2OCwgMTYwLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTYwLCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NCwgMTYwLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTYwLCA4LCA1LCAxLCAyMDIsIAotICAgIDE1OSwgMTYwLCA0OSwgMjQ1LCA5MywgMTU1LCAxNjAsIDgwLCAyMjcsIDExNCwgMTYwLCA1MCwgMjQ1LCA5MywgMTU1LCAKLSAgICAxNjAsIDIwOCwgMjI3LCAyNDcsIDYwLCAyMDksIDI1NSwgNTcsIDIxNCwgNzEsIDU3LCAyMTQsIDYwLCA1NywgMjE0LCA0OSwgCi0gICAgNTcsIDIxNCwgMzcsIDU3LCAyMTQsIDI2LCA1NywgMjE0LCAxNSwgNTcsIDIxNCwgNCwgNTcsIDIxMywgMjQ5LCA1NywgMjEzLCAKLSAgICAyMzgsIDU3LCAyMTMsIDIzMCwgNTcsIDIxMywgMjI5LCA1NywgMjEzLCAyMjgsIDU3LCAyMTMsIDIyNywgNTcsIDIxMywgCi0gICAgMjI1LCA1NywgMjEzLCAyMjQsIDU3LCAyMTMsIDIyMywgNTcsIDIxMywgMjIyLCA1NywgMjEzLCAyMjEsIDU3LCAyMTMsIAotICAgIDIyMCwgNTcsIDIxMywgMjE5LCA1NywgMjEzLCAyMTgsIDU3LCAyMTMsIDIxNywgNTcsIDIxMywgMjE2LCA1NywgMjEzLCAKLSAgICAyMTQsIDU3LCAyMTMsIDIxMywgNTcsIDIxMywgMjEyLCA1NywgMjEzLCAyMTEsIDU3LCAyMTMsIDIxMCwgNTcsIDIxMywgCi0gICAgMjA5LCA1NywgMjEzLCAyMDgsIDU3LCAyMTMsIDIwNywgNTcsIDIxMywgMjA2LCA1NywgMjEzLCAyMDUsIDU3LCAyMTMsIAotICAgIDIwMywgNTcsIDIxMywgMjAyLCA1NywgMjEzLCAyMDEsIDU3LCAyMTMsIDIwMCwgNTcsIDIxMywgMTk5LCA1NywgMjEzLCAKLSAgICAxOTgsIDU3LCAyMTMsIDE5NywgNTcsIDIxMywgMTk2LCA1NywgMjEzLCAxOTUsIDU3LCAyMTMsIDE5NCwgNTcsIDIxMywgCi0gICAgMTkyLCA1NywgMjEzLCAxOTEsIDU3LCAyMTMsIDE5MCwgNTcsIDIxMywgMTg5LCA1NywgMjEzLCAxODgsIDU3LCAyMTMsIAotICAgIDE4NywgNTcsIDIxMywgMTg2LCA1NywgMjEzLCAxODUsIDU3LCAyMTMsIDE4NCwgNTcsIDIxMywgMTgzLCA1NywgMjEzLCAKLSAgICAxODEsIDU3LCAyMTMsIDE4MCwgNTcsIDIxMywgMTc5LCA1NywgMjEzLCAxNzgsIDU3LCAyMTMsIDE3NywgNTcsIDIxMywgCi0gICAgMTc2LCA1NywgMjEzLCAxNzUsIDU3LCAyMTMsIDE3NCwgNTcsIDIxMywgMTczLCA1NywgMjEzLCAxNzIsIDU3LCAyMTMsIAotICAgIDE3MCwgNTcsIDIxMywgMTY5LCA1NywgMjEzLCAxNjgsIDU3LCAyMTMsIDE2NywgNTcsIDIxMywgMTY2LCA1NywgMjEzLCAKLSAgICAxNjUsIDU3LCAyMTMsIDE2NCwgNTcsIDIxMywgMTYzLCA1NywgMjEzLCAxNjIsIDU3LCAyMTMsIDE2MSwgNTcsIDIxMywgCi0gICAgMTU5LCA1NywgMjEzLCAxNTgsIDU3LCAyMTMsIDE1NywgNTcsIDIxMywgMTU2LCA1NywgMjEzLCAxNTUsIDU3LCAyMTMsIAotICAgIDE1NCwgNTcsIDIxMywgMTUzLCA1NywgMjEzLCAxNTIsIDU3LCAyMTMsIDE1MSwgNTcsIDIxMywgMTUwLCA1NywgMjE0LCAKLSAgICAxNDcsIDU3LCAyMTQsIDE0NiwgNTcsIDIxNCwgMTQ1LCA1NywgMjE0LCAxNDQsIDU3LCAyMTQsIDE0MywgNTcsIDIxNCwgCi0gICAgMTQyLCA1NywgMjE0LCAxNDEsIDU3LCAyMTQsIDE0MCwgNTcsIDIxNCwgMTM5LCA1NywgMjE0LCAxMzgsIDU3LCAyMTQsIAotICAgIDEzNiwgNTcsIDIxNCwgMTM1LCA1NywgMjE0LCAxMzQsIDU3LCAyMTQsIDEzMywgNTcsIDIxNCwgMTMyLCA1NywgMjE0LCAKLSAgICAxMzEsIDU3LCAyMTQsIDEzMCwgNTcsIDIxNCwgMTI5LCA1NywgMjE0LCAxMjgsIDU3LCAyMTQsIDEyNywgNTcsIDIxNCwgCi0gICAgMTI1LCA1NywgMjE0LCAxMjQsIDU3LCAyMTQsIDEyMywgNTcsIDIxNCwgMTIyLCA1NywgMjE0LCAxMjEsIDU3LCAyMTQsIAotICAgIDEyMCwgNTcsIDIxNCwgMTE5LCA1NywgMjE0LCAxMTgsIDU3LCAyMTQsIDExNywgNTcsIDIxNCwgMTE2LCA1NywgMjE0LCAKLSAgICAxMTQsIDU3LCAyMTQsIDExMywgNTcsIDIxNCwgMTEyLCA1NywgMjE0LCAxMTEsIDU3LCAyMTQsIDExMCwgNTcsIDIxNCwgCi0gICAgMTA5LCA1NywgMjE0LCAxMDgsIDU3LCAyMTQsIDEwNywgNTcsIDIxNCwgMTA2LCA1NywgMjE0LCAxMDUsIDU3LCAyMTQsIAotICAgIDEwMywgNTcsIDIxNCwgMTAyLCA1NywgMjE0LCAxMDEsIDU3LCAyMTQsIDEwMCwgNTcsIDIxNCwgOTksIDU3LCAyMTQsIDk4LCAKLSAgICA1NywgMjE0LCA5NywgNTcsIDIxNCwgOTYsIDU3LCAyMTQsIDk1LCA1NywgMjE0LCA5NCwgNTcsIDIxNCwgOTIsIDU3LCAyMTQsIAotICAgIDkxLCA1NywgMjE0LCA5MCwgNTcsIDIxNCwgODksIDU3LCAyMTQsIDg4LCA1NywgMjE0LCA4NywgNTcsIDIxNCwgODYsIDU3LCAKLSAgICAyMTQsIDg1LCA1NywgMjE0LCA4NCwgNTcsIDIxNCwgODMsIDU3LCAyMTQsIDgxLCA1NywgMjE0LCA4MCwgNTcsIDIxNCwgNzksIAotICAgIDU3LCAyMTQsIDc4LCA1NywgMjE0LCA3NywgNTcsIDIxNCwgNzYsIDU3LCAyMTQsIDc1LCA1NywgMjE0LCA3NCwgNTcsIDIxNCwgCi0gICAgNzMsIDU3LCAyMTQsIDcyLCA1NywgMjE0LCA3MCwgNTcsIDIxNCwgNjksIDU3LCAyMTQsIDY4LCA1NywgMjE0LCA2NywgNTcsIAotICAgIDIxNCwgNjYsIDU3LCAyMTQsIDY1LCA1NywgMjE0LCA2NCwgNTcsIDIxNCwgNjMsIDU3LCAyMTQsIDYyLCA1NywgMjE0LCA2MSwgCi0gICAgNTcsIDIxNCwgNTksIDU3LCAyMTQsIDU4LCA1NywgMjE0LCA1NywgNTcsIDIxNCwgNTYsIDU3LCAyMTQsIDU1LCA1NywgMjE0LCAKLSAgICA1NCwgNTcsIDIxNCwgNTMsIDU3LCAyMTQsIDUyLCA1NywgMjE0LCA1MSwgNTcsIDIxNCwgNTAsIDU3LCAyMTQsIDQ4LCA1NywgCi0gICAgMjE0LCA0NywgNTcsIDIxNCwgNDYsIDU3LCAyMTQsIDQ1LCA1NywgMjE0LCA0NCwgNTcsIDIxNCwgNDMsIDU3LCAyMTQsIDQyLCAKLSAgICA1NywgMjE0LCA0MSwgNTcsIDIxNCwgNDAsIDU3LCAyMTQsIDM5LCA1NywgMjE0LCAzNiwgNTcsIDIxNCwgMzUsIDU3LCAyMTQsIAotICAgIDM0LCA1NywgMjE0LCAzMywgNTcsIDIxNCwgMzIsIDU3LCAyMTQsIDMxLCA1NywgMjE0LCAzMCwgNTcsIDIxNCwgMjksIDU3LCAKLSAgICAyMTQsIDI4LCA1NywgMjE0LCAyNywgNTcsIDIxNCwgMjUsIDU3LCAyMTQsIDI0LCA1NywgMjE0LCAyMywgNTcsIDIxNCwgMjIsIAotICAgIDU3LCAyMTQsIDIxLCA1NywgMjE0LCAyMCwgNTcsIDIxNCwgMTksIDU3LCAyMTQsIDE4LCA1NywgMjE0LCAxNywgNTcsIDIxNCwgCi0gICAgMTYsIDU3LCAyMTQsIDE0LCA1NywgMjE0LCAxMywgNTcsIDIxNCwgMTIsIDU3LCAyMTQsIDExLCA1NywgMjE0LCAxMCwgNTcsIAotICAgIDIxNCwgOSwgNTcsIDIxNCwgOCwgNTcsIDIxNCwgNywgNTcsIDIxNCwgNiwgNTcsIDIxNCwgNSwgNTcsIDIxNCwgMywgNTcsIAotICAgIDIxNCwgMiwgNTcsIDIxNCwgMSwgNTcsIDIxNCwgMCwgNTcsIDIxMywgMjU1LCA1NywgMjEzLCAyNTQsIDU3LCAyMTMsIDI1MywgCi0gICAgNTcsIDIxMywgMjUyLCA1NywgMjEzLCAyNTEsIDU3LCAyMTMsIDI1MCwgNTcsIDIxMywgMjQ4LCA1NywgMjEzLCAyNDcsIDU3LCAKLSAgICAyMTMsIDI0NiwgNTcsIDIxMywgMjQ1LCA1NywgMjEzLCAyNDQsIDU3LCAyMTMsIDI0MywgNTcsIDIxMywgMjQyLCA1NywgCi0gICAgMjEzLCAyNDEsIDU3LCAyMTMsIDI0MCwgNTcsIDIxMywgMjM5LCA1NywgMjEzLCAyMzcsIDU3LCAyMTMsIDIzNiwgNTcsIAotICAgIDIxMywgMjM1LCA1NywgMjEzLCAyMzQsIDU3LCAyMTMsIDIzMywgNTcsIDIxMywgMjMyLCA1NywgMjEzLCAyMzEsIDIyMSwgCi0gICAgNDgsIDIyMSwgNTAsIDIxMSwgOTAsIDc2LCAyMzcsIDYxLCAyMTIsIDMsIDIxMSwgOTAsIDc2LCAyMDksIDExMiwgMjExLCAKLSAgICAxMiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAyNDAsIDI0MCwgMjQxLCA4NCwgNzYsIDIwOCwgMTA1LCAyNDEsIDQ3LCAyNDEsIAotICAgIDcxLCAyNDEsIDcyLCAyNTEsIDEzMCwgMjUxLCAxMzEsIDI1MSwgMjcsIDI0OCwgMTMxLCAyNDksIDE5LCAyNDcsIDE5OSwgCi0gICAgMTY3LCAyMTAsIDUsIDIzNiwgMTA2LCAyMTAsIDUsIDIzNiwgMzEsIDIxMCwgMTAsIDIyNywgMTE1LCAyNDAsIDUxLCAyMjIsIAotICAgIDIxNCwgMjI3LCAxMTQsIDI0MSwgODQsIDc2LCAyMjcsIDExNCwgMjI3LCAxNjMsIDIyMSwgMjUzLCAyNDEsIDUwLCAyMjcsIAotICAgIDExNSwgMjEwLCA1LCA4MCwgMjEwLCA1LCAyMDQsIDE2NSwgMjM5LCAxNTksIDI0MCwgNTEsIDI0MCwgMzAsIDI0NywgMjUsIAotICAgIDIxNiwgNzcsIDI0NSwgMTQ3LCAyMTMsIDcsIDIxOSwgMjExLCAyMjcsIDQxLCAxMDUsIDIxMiwgMTMsIDIxMywgNywgMjMxLCAKLSAgICA0OSwgMjI3LCA0MSwgMjAyLCA4NCwgMjEyLCAxNjIsIDI0NCwgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAyNDMsIDEyMywgCi0gICAgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAyNDQsIDEyOCwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA4LCAyNDQsIDEyNywgMjQ0LCA4LCAKLSAgICAyNDUsIDE4NCwgMTQ3LCAyNDQsIDEyNiwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ5LCAyNDQsIDEyNSwgMTgyLCAyNTEsIDEzMCwgCi0gICAgMjIzLCA4OSwgMjEwLCA5NSwgMjMxLCAxMTIsIDIxMCwgOTksIDI0MSwgODQsIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMjQwLCAKLSAgICAyNDcsIDI0NywgNTksIDI0NywgNjEsIDI0MSwgODQsIDc2LCAyMjUsIDksIDI0MSwgNDgsIDIxMCwgMjQyLCAyMTEsIDMsIAotICAgIDI0MSwgOSwgMjQxLCAxMCwgMjMxLCAyNSwgMjEzLCAxMzEsIDE0OSwgMjQwLCAxMSwgMjEzLCAxMzAsIDIzOSwgMTEyLCAKLSAgICAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ3LCAyMzcsIDIzOCwgMjEzLCAxMzAsIDIzNywgMjM1LCAyMzEsIDI1LCAyMTMsIDEzMSwgCi0gICAgMTA4LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDIxNSwgMTUwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTA1LCAyMDYsIDIzNiwgMjEzLCAKLSAgICAxMzAsIDIwNiwgMTkzLCAyMTEsIDIzMSwgMjQ0LCA0NiwgMjQ0LCA0OCwgMjE5LCAxNTcsIDI0NiwgMTgyLCAyMTksIDE1OSwgCi0gICAgMTM4LCAyMjAsIDgwLCAyMTcsIDI0MCwgMjM2LCAxMDksIDI0NywgMjE4LCAyMTgsIDIzNiwgMjM3LCAyNywgMjQ3LCAyMzAsIAotICAgIDIyMSwgMTkyLCAyNDcsIDIxOCwgMjM3LCAyNywgMjIzLCA1MywgMjMxLCAzNSwgMjMxLCAzNywgMjIyLCAyMDgsIDIyNywgCi0gICAgMTE0LCAyMjIsIDIzMSwgMjExLCA5MCwgNzYsIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjExLCAxNjQsIDI0MSwgODQsIDc2LCAKLSAgICAyMTQsIDE1MiwgMjUwLCAxMjAsIDI0MSwgMTIsIDE2NywgMjEwLCA2LCAyMTMsIDExNywgMjM2LCAxMDYsIDIxMCwgNiwgCi0gICAgMjEzLCAxMTcsIDIzNiwgMjgsIDE2NywgMjEwLCA2LCAzLCAyMzAsIDY2LCAyMzYsIDEwNiwgMjEwLCA2LCAzLCAyMzAsIDY2LCAKLSAgICAyMzYsIDI5LCAyMjcsIDExNSwgMjEwLCA2LCAyMTMsIDExNywgODAsIDIxMCwgNiwgMjEzLCAxMTcsIDIwNCwgMTY0LCAyMTksIAotICAgIDY5LCAyMjcsIDExNSwgMjM5LCAxNTEsIDIxOSwgNjksIDIyNywgMTE1LCAyNDIsIDcwLCAyMTgsIDg3LCAyMTksIDY5LCAKLSAgICAyMjcsIDExNSwgMjQ5LCAxOCwgMjE5LCA2OSwgMjI3LCAxMTUsIDIwNiwgMjI0LCAyMTgsIDgyLCAyMTYsIDc0LCAyMjcsIAotICAgIDExNSwgMjQwLCA1MSwgMjE2LCA3NCwgMjMxLCAzNSwgMjE2LCA1NywgMjEyLCAxMjAsIDIxMywgNywgMTA4LCAyMTIsIDExNywgCi0gICAgMjExLCAxNjYsIDIxMiwgMTIwLCAyMTMsIDcsIDE0NywgMjEyLCAxMTYsIDIxMSwgMTY1LCAyNDQsIDgsIDI0NSwgMTg0LCAKLSAgICAyMTEsIDM0LCAyNDQsIDEyMywgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDUsIDIxNywgMjI3LCAyMDYsIDE5MCwgMjE3LCAxOTAsIAotICAgIDIxNywgMjI3LCAyMDYsIDE5MiwgMTA4LCAyMTcsIDIyNywgMjA2LCAxODksIDIxNywgMTg5LCAyMTMsIDExOCwgMjA4LCAKLSAgICAxMDQsIDIxMSwgODksIDIxMSwgMTcsIDI0NywgNjAsIDI0NiwgMTgyLCAyNDcsIDEsIDIyNCwgMjI0LCAyMDQsIDEwMywgCi0gICAgMjIzLCAxODEsIDIxMSwgOTAsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDIxMSwgOTAsIDc2LCAyMTcsIDIwOCwgMjUwLCAKLSAgICAxMjAsIDIxMSwgMjMwLCAyNDEsIDg0LCA3NiwgMjM3LCAyMjMsIDI1MCwgMTIwLCAyNDEsIDg0LCA3NiwgMjE3LCAyMDgsIAotICAgIDI1MCwgMTIwLCAyNDEsIDQ1LCAyMTEsIDkwLCA3NiwgMjExLCAzNCwgMjExLCAyNDUsIDIxMiwgMTIwLCAyMzgsIDMsIDE2NywgCi0gICAgMjMwLCAyNDEsIDIxMywgOTUsIDIxMiwgMTIwLCAxNjcsIDIzMCwgMjQxLCAyMTQsIDE5MSwgMjQ1LCAxODQsIDIxMywgMTI3LCAKLSAgICAyMzAsIDI0MSwgMjQ1LCAxMTEsIDIxMSwgMzUsIDIwOSwgMTM4LCAyMTEsIDEwOCwgMjIwLCAwLCAyMTAsIDg0LCAyNDUsIAotICAgIDIzMiwgMjE5LCAyMjYsIDIxNywgMjI4LCAyMjQsIDIyMywgMjE4LCA3MiwgMjUwLCAxNTYsIDIxNywgMjIyLCAyNDUsIDIzMiwgCi0gICAgMjUwLCAxNzIsIDIyMywgNDEsIDIxMiwgMTcxLCA4LCA2LCAxLCAyMzgsIDExOSwgOCwgNSwgMSwgMjM4LCAxMTksIDI0NiwgCi0gICAgMjAxLCAyNTEsIDgsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIwMCwgMSwgMjI3LCAKLSAgICA2OCwgMjI4LCAxMiwgMSwgMjM5LCAxODcsIDIzOSwgMTc4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjQwLCA2MywgMjI4LCAKLSAgICAxMiwgMSwgMjE1LCAyMjcsIDIyOCwgMTIsIDEsIDIyNywgNDksIDc3LCAxMzEsIDI0OCwgNDUsIDIxMiwgMjM4LCAyMzgsIAotICAgIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgMjM5LCA4OSwgMjM5LCA4OCwgMjM5LCA4NywgMjIzLCAxODMsIDIwMSwgMjQzLCAKLSAgICAyMDEsIDI0NCwgMjAxLCAyNDYsIDIyNiwgMjQzLCAyMTUsIDIzNSwgMjI2LCAyNDUsIDIxNSwgMjM3LCAyMTksIDM3LCAyMjYsIAotICAgIDI0MiwgMjE1LCAyMzQsIDIyMSwgMjIzLCAyMjQsIDg2LCAyMDQsIDIsIDIyNiwgMjQ0LCAyMTUsIDIzNiwgMjM5LCAxMTEsIAotICAgIDIxOSwgMzYsIDIwNCwgNTIsIDI0MSwgMTA3LCAyMzksIDk5LCAyMjQsIDE1NCwgMjIwLCAzMiwgMjA2LCAxOTQsIDk3LCAKLSAgICAyMjQsIDE1NCwgMjQ0LCAxNDUsIDk3LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCAyMDgsIDg0LCA1MywgCi0gICAgMywgNTIsIDgwLCA5NSwgMTEsIDQsIDIzMCwgMTk5LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgCi0gICAgMjI3LCAxODUsIDE1NSwgMjA1LCAxNjUsIDIwNSwgNTQsIDIwNCwgMjQyLCAyMDQsIDIzMSwgMjA0LCAyMjAsIDIwNCwgMjA5LCAKLSAgICAyMDQsIDE5OCwgMjA0LCAxODcsIDIwNCwgMTc2LCAyMDUsIDE2NCwgMjA1LCAxNTMsIDIwNSwgMTQyLCAyMDUsIDEzMSwgCi0gICAgMjA1LCAxMjAsIDIwNSwgMTA5LCAyMDUsIDk4LCAyNDcsIDEzMCwgMjE5LCAyNDEsIDgyLCAyNDgsIDEzLCAyMDEsIDI0NSwgCi0gICAgOSwgMiwgMjIxLCA1NywgMjA5LCAxNDEsIDksIDIsIDIyMSwgNTcsIDExNSwgMjIxLCA1NywgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKLSAgICAxNjAsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMTIsIDY0LCAyNDYsIDEwMiwgMjA2LCA2NSwgMjA1LCA4NywgMjA1LCA3NiwgCi0gICAgMjA1LCA2NSwgMjA1LCA1MywgMjA1LCA0MiwgMjA1LCAzMSwgMjA1LCAyMCwgMjA1LCA5LCAyMDQsIDI1NCwgMjA0LCAyNDYsIAotICAgIDIwNCwgMjQ1LCAyMDQsIDI0NCwgMjA0LCAyNDMsIDIwNCwgMjQxLCAyMDQsIDI0MCwgMjA0LCAyMzksIDIwNCwgMjM4LCAKLSAgICAyMDQsIDIzNywgMjA0LCAyMzYsIDIwNCwgMjM1LCAyMDQsIDIzNCwgMjA0LCAyMzMsIDIwNCwgMjMyLCAyMDQsIDIzMCwgCi0gICAgMjA0LCAyMjksIDIwNCwgMjI4LCAyMDQsIDIyNywgMjA0LCAyMjYsIDIwNCwgMjI1LCAyMDQsIDIyNCwgMjA0LCAyMjMsIAotICAgIDIwNCwgMjIyLCAyMDQsIDIyMSwgMjA0LCAyMTksIDIwNCwgMjE4LCAyMDQsIDIxNywgMjA0LCAyMTYsIDIwNCwgMjE1LCAKLSAgICAyMDQsIDIxNCwgMjA0LCAyMTMsIDIwNCwgMjEyLCAyMDQsIDIxMSwgMjA0LCAyMTAsIDIwNCwgMjA4LCAyMDQsIDIwNywgCi0gICAgMjA0LCAyMDYsIDIwNCwgMjA1LCAyMDQsIDIwNCwgMjA0LCAyMDMsIDIwNCwgMjAyLCAyMDQsIDIwMSwgMjA0LCAyMDAsIAotICAgIDIwNCwgMTk5LCAyMDQsIDE5NywgMjA0LCAxOTYsIDIwNCwgMTk1LCAyMDQsIDE5NCwgMjA0LCAxOTMsIDIwNCwgMTkyLCAKLSAgICAyMDQsIDE5MSwgMjA0LCAxOTAsIDIwNCwgMTg5LCAyMDQsIDE4OCwgMjA0LCAxODYsIDIwNCwgMTg1LCAyMDQsIDE4NCwgCi0gICAgMjA0LCAxODMsIDIwNCwgMTgyLCAyMDQsIDE4MSwgMjA0LCAxODAsIDIwNCwgMTc5LCAyMDQsIDE3OCwgMjA0LCAxNzcsIAotICAgIDIwNCwgMTc1LCAyMDQsIDE3NCwgMjA0LCAxNzMsIDIwNCwgMTcyLCAyMDQsIDE3MSwgMjA0LCAxNzAsIDIwNCwgMTY5LCAKLSAgICAyMDQsIDE2OCwgMjA0LCAxNjcsIDIwNCwgMTY2LCAyMDUsIDE2MywgMjA1LCAxNjIsIDIwNSwgMTYxLCAyMDUsIDE2MCwgCi0gICAgMjA1LCAxNTksIDIwNSwgMTU4LCAyMDUsIDE1NywgMjA1LCAxNTYsIDIwNSwgMTU1LCAyMDUsIDE1NCwgMjA1LCAxNTIsIAotICAgIDIwNSwgMTUxLCAyMDUsIDE1MCwgMjA1LCAxNDksIDIwNSwgMTQ4LCAyMDUsIDE0NywgMjA1LCAxNDYsIDIwNSwgMTQ1LCAKLSAgICAyMDUsIDE0NCwgMjA1LCAxNDMsIDIwNSwgMTQxLCAyMDUsIDE0MCwgMjA1LCAxMzksIDIwNSwgMTM4LCAyMDUsIDEzNywgCi0gICAgMjA1LCAxMzYsIDIwNSwgMTM1LCAyMDUsIDEzNCwgMjA1LCAxMzMsIDIwNSwgMTMyLCAyMDUsIDEzMCwgMjA1LCAxMjksIAotICAgIDIwNSwgMTI4LCAyMDUsIDEyNywgMjA1LCAxMjYsIDIwNSwgMTI1LCAyMDUsIDEyNCwgMjA1LCAxMjMsIDIwNSwgMTIyLCAKLSAgICAyMDUsIDEyMSwgMjA1LCAxMTksIDIwNSwgMTE4LCAyMDUsIDExNywgMjA1LCAxMTYsIDIwNSwgMTE1LCAyMDUsIDExNCwgCi0gICAgMjA1LCAxMTMsIDIwNSwgMTEyLCAyMDUsIDExMSwgMjA1LCAxMTAsIDIwNSwgMTA4LCAyMDUsIDEwNywgMjA1LCAxMDYsIAotICAgIDIwNSwgMTA1LCAyMDUsIDEwNCwgMjA1LCAxMDMsIDIwNSwgMTAyLCAyMDUsIDEwMSwgMjA1LCAxMDAsIDIwNSwgOTksIDIwNSwgCi0gICAgOTcsIDIwNSwgOTYsIDIwNSwgOTUsIDIwNSwgOTQsIDIwNSwgOTMsIDIwNSwgOTIsIDIwNSwgOTEsIDIwNSwgOTAsIDIwNSwgCi0gICAgODksIDIwNSwgODgsIDIwNSwgODYsIDIwNSwgODUsIDIwNSwgODQsIDIwNSwgODMsIDIwNSwgODIsIDIwNSwgODEsIDIwNSwgCi0gICAgODAsIDIwNSwgNzksIDIwNSwgNzgsIDIwNSwgNzcsIDIwNSwgNzUsIDIwNSwgNzQsIDIwNSwgNzMsIDIwNSwgNzIsIDIwNSwgCi0gICAgNzEsIDIwNSwgNzAsIDIwNSwgNjksIDIwNSwgNjgsIDIwNSwgNjcsIDIwNSwgNjYsIDIwNSwgNjQsIDIwNSwgNjMsIDIwNSwgCi0gICAgNjIsIDIwNSwgNjEsIDIwNSwgNjAsIDIwNSwgNTksIDIwNSwgNTgsIDIwNSwgNTcsIDIwNSwgNTYsIDIwNSwgNTUsIDIwNSwgCi0gICAgNTIsIDIwNSwgNTEsIDIwNSwgNTAsIDIwNSwgNDksIDIwNSwgNDgsIDIwNSwgNDcsIDIwNSwgNDYsIDIwNSwgNDUsIDIwNSwgCi0gICAgNDQsIDIwNSwgNDMsIDIwNSwgNDEsIDIwNSwgNDAsIDIwNSwgMzksIDIwNSwgMzgsIDIwNSwgMzcsIDIwNSwgMzYsIDIwNSwgCi0gICAgMzUsIDIwNSwgMzQsIDIwNSwgMzMsIDIwNSwgMzIsIDIwNSwgMzAsIDIwNSwgMjksIDIwNSwgMjgsIDIwNSwgMjcsIDIwNSwgCi0gICAgMjYsIDIwNSwgMjUsIDIwNSwgMjQsIDIwNSwgMjMsIDIwNSwgMjIsIDIwNSwgMjEsIDIwNSwgMTksIDIwNSwgMTgsIDIwNSwgCi0gICAgMTcsIDIwNSwgMTYsIDIwNSwgMTUsIDIwNSwgMTQsIDIwNSwgMTMsIDIwNSwgMTIsIDIwNSwgMTEsIDIwNSwgMTAsIDIwNSwgCi0gICAgOCwgMjA1LCA3LCAyMDUsIDYsIDIwNSwgNSwgMjA1LCA0LCAyMDUsIDMsIDIwNSwgMiwgMjA1LCAxLCAyMDUsIDAsIDIwNCwgCi0gICAgMjU1LCAyMDQsIDI1MywgMjA0LCAyNTIsIDIwNCwgMjUxLCAyMDQsIDI1MCwgMjA0LCAyNDksIDIwNCwgMjQ4LCAyMDQsIAotICAgIDI0NywgOCwgNiwgMSwgMzQsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDE4OCwgMywgODAsIAotICAgIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIAotICAgIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAKLSAgICAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgCi0gICAgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgCi0gICAgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAKLSAgICAxNjUsIDgsIDUsIDEsIDIyMiwgMjA2LCAzLCAyMDgsIDIyOCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKLSAgICA1NiwgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgCi0gICAgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAKLSAgICAyNTMsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCAKLSAgICA4LCA1LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIyMCwgCi0gICAgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MywgCi0gICAgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAzNCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKLSAgICAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAKLSAgICAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgCi0gICAgNjMsIDI1LCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIAotICAgIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjI2LCAxODYsIDMsIAotICAgIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIAotICAgIDgsIDUsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIAotICAgIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMDgsIDIyNywgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjM3LCAyNTMsIAotICAgIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIwNiwgMTY1LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY1LCAzLCAxNjUsIDgsIDUsIDEsIAotICAgIDIxNCwgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE0LCAxOTMsIDMsIDE2NSwgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgCi0gICAgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgMTkzLCAzLCAxNjUsIDEwLCAyMTMsIDEyNywgODksIAotICAgIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAzMCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIAotICAgIDcwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMjksIDEwLCAyMTMsIDEyNywgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3MywgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICA2OCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxMywgMTAsIDIxMywgMTI3LCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCA3NCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDEwOSwgMTAsIAotICAgIDIxMywgMTI3LCAyMjEsIDE3OSwgMywgMjI5LCAxODksIDE3OSwgMSwgMjI5LCAxMTksIDQ0LCAxMDksIDIzMCwgNTQsIDQ0LCAKLSAgICAxMDksIDIyMiwgMjA1LCA0NCwgMTA5LCAyNDcsIDEyNSwgNDQsIDEwOSwgMjIxLCAxMywgNDQsIDEwOSwgMjA3LCAyNDQsIAotICAgIDQ0LCAxMDksIDIyMSwgMjI4LCA0NCwgMTA5LCAyMTAsIDY5LCA0NCwgMTA5LCAyMjMsIDE2MywgNDQsIDEwOSwgMjE5LCAKLSAgICAxODQsIDQ0LCAxMDksIDIyNiwgMTg1LCA0NCwgMTA5LCAyMDMsIDEyNCwgNDQsIDEwOSwgMTQ2LCA0NCwgMTA5LCAxNTksIAotICAgIDQ0LCAxMDksIDIwNiwgMTY0LCA0NCwgMTA5LCAyMjcsIDY5LCA0NCwgMTA5LCAyMjcsIDc4LCA0NCwgMTA5LCAyMTUsIDE4NiwgCi0gICAgNDQsIDEwOSwgMjIxLCAyMTAsIDQ0LCAxMDksIDIzMCwgMTg0LCA0NCwgMTA5LCAyMTMsIDkyLCA0NCwgMTA5LCAyMTEsIAotICAgIDE2NywgNDQsIDEwOSwgMTk0LCA0NCwgMTA5LCAyMzcsIDE3MSwgNDQsIDEwOSwgMjI4LCAyMjQsIDQ0LCA0LCAyMzAsIDQxLCAKLSAgICA0NCwgNCwgMjI5LCAxMDAsIDQ0LCA0LCAyMjksIDg3LCA0NCwgNCwgMjI4LCAyMDksIDQ0LCA0LCAyMjgsIDE3NCwgNDQsIDQsIAotICAgIDIyOSwgMjAxLCA0NCwgNCwgMjI5LCAxOTgsIDQ0LCA0LCAyMzAsIDE4LCA0NCwgNCwgMjI5LCAyNiwgNDQsIDQsIDIyOSwgNiwgCi0gICAgNDQsIDQsIDIyOSwgMjE5LCA0NCwgNCwgMjIyLCAyMDIsIDQ0LCA0LCAyMjIsIDE1MSwgNDQsIDQsIDIyMiwgMTQ3LCA0NCwgCi0gICAgNCwgMjIyLCAxMTYsIDQ0LCA0LCAyMjIsIDEwOCwgNDQsIDQsIDIyMiwgMTkwLCA0NCwgNCwgMjIyLCAxODgsIDQ0LCA0LCAKLSAgICAyMjIsIDE5OSwgNDQsIDQsIDIyMiwgMTI4LCA0NCwgNCwgMjIyLCAxMjMsIDQ0LCA0LCAyMjIsIDE5MiwgNDQsIDQsIDI0NywgCi0gICAgOTEsIDQ0LCA0LCAyNDYsIDc5LCA0NCwgNCwgMjQ2LCA2OSwgNDQsIDQsIDI0NSwgMTEwLCA0NCwgNCwgMjQ1LCA3NiwgNDQsIAotICAgIDQsIDI0NiwgMjM4LCA0NCwgNCwgMjQ2LCAyMzAsIDQ0LCA0LCAyNDcsIDgwLCA0NCwgNCwgMjQ1LCAyNTQsIDQ0LCA0LCAKLSAgICAyNDUsIDE4MCwgNDQsIDQsIDI0NywgMTUsIDQ0LCA0LCAyMjEsIDEwLCA0NCwgNCwgMjIwLCAyNDgsIDQ0LCA0LCAyMjAsIAotICAgIDI0MywgNDQsIDQsIDIyMCwgMjI2LCA0NCwgNCwgMjIwLCAyMTgsIDQ0LCA0LCAyMjEsIDEsIDQ0LCA0LCAyMjEsIDAsIDQ0LCAKLSAgICA0LCAyMjEsIDcsIDQ0LCA0LCAyMjAsIDIzMywgNDQsIDQsIDIyMCwgMjMwLCA0NCwgNCwgMjIxLCA0LCA0NCwgNCwgMjA3LCAKLSAgICAyNDAsIDQ0LCA0LCAyMDcsIDIyMCwgNDQsIDQsIDIwNywgMjE5LCA0NCwgNCwgMjA3LCAyMDgsIDQ0LCA0LCAyMDcsIDIwNSwgCi0gICAgNDQsIDQsIDIwNywgMjM2LCA0NCwgNCwgMjA3LCAyMzUsIDQ0LCA0LCAyMDcsIDIzOSwgNDQsIDQsIDIwNywgMjE4LCA0NCwgCi0gICAgNCwgMjA3LCAyMTcsIDQ0LCA0LCAyMDcsIDIzOCwgNDQsIDQsIDIyMSwgMjI2LCA0NCwgNCwgMjIxLCAyMTIsIDQ0LCA0LCAKLSAgICAyMjEsIDIxMSwgNDQsIDQsIDIyMSwgMTk1LCA0NCwgNCwgMjIxLCAxOTQsIDQ0LCA0LCAyMjEsIDIyMiwgNDQsIDQsIDIyMSwgCi0gICAgMjIxLCA0NCwgNCwgMjIxLCAyMjUsIDQ0LCA0LCAyMjEsIDE5NywgNDQsIDQsIDIyMSwgMTk2LCA0NCwgNCwgMjIxLCAyMjQsIAotICAgIDQ0LCA0LCAyMTAsIDE4LCA0NCwgNCwgMjA5LCAyLCA0NCwgNCwgMjA4LCAyNDIsIDQ0LCA0LCAyMDcsIDIwMywgNDQsIDQsIAotICAgIDIwNywgMTY1LCA0NCwgNCwgMjA5LCAxODcsIDQ0LCA0LCAyMDksIDE3NiwgNDQsIDQsIDIwOSwgMjUwLCA0NCwgNCwgMTM1LCAKLSAgICA0NCwgNCwgMjA4LCAxNDgsIDQ0LCA0LCAyMDksIDIwNywgNDQsIDQsIDIyMywgMTA2LCA0NCwgNCwgMjIyLCAxMDAsIDQ0LCAKLSAgICA0LCAyMjIsIDc1LCA0NCwgNCwgMjIxLCA4NCwgNDQsIDQsIDIyMSwgMjUsIDQ0LCA0LCAyMjIsIDI0MCwgNDQsIDQsIDIyMiwgCi0gICAgMjM1LCA0NCwgNCwgMjIzLCA5MiwgNDQsIDQsIDIyMSwgMTkxLCA0NCwgNCwgMjIxLCAxODAsIDQ0LCA0LCAyMjMsIDY1LCAKLSAgICA0NCwgNCwgMjE5LCAxNjgsIDQ0LCA0LCAyMTgsIDE2NywgNDQsIDQsIDIxOCwgMTI5LCA0NCwgNCwgMjE3LCAxOTEsIDQ0LCAKLSAgICA0LCAyMTcsIDE1NywgNDQsIDQsIDIxOSwgMzQsIDQ0LCA0LCAyMTksIDIzLCA0NCwgNCwgMjE5LCAxNDgsIDQ0LCA0LCAyMTgsIAotICAgIDY5LCA0NCwgNCwgMjE4LCA0NSwgNDQsIDQsIDIxOSwgNDgsIDQ0LCA0LCAyMjUsIDE3NSwgNDQsIDQsIDIyNCwgMTU1LCA0NCwgCi0gICAgNCwgMjI0LCAxMjUsIDQ0LCA0LCAyMjMsIDI0NiwgNDQsIDQsIDIyMywgMTkyLCA0NCwgNCwgMjI1LCAyMCwgNDQsIDQsIAotICAgIDIyNSwgOCwgNDQsIDQsIDIyNSwgMTQwLCA0NCwgNCwgMjI0LCA4MiwgNDQsIDQsIDIyNCwgMzUsIDQ0LCA0LCAyMjUsIDY3LCAKLSAgICA0NCwgNCwgMjAzLCAxMTAsIDQ0LCA0LCAyMDMsIDExLCA0NCwgNCwgMjAzLCAyLCA0NCwgNCwgMjAyLCAyMTMsIDQ0LCA0LCAKLSAgICAyMDIsIDE4MSwgNDQsIDQsIDIwMywgNTIsIDQ0LCA0LCAyMDMsIDQ5LCA0NCwgNCwgMjAzLCA4OSwgNDQsIDQsIDIwMiwgCi0gICAgMjQ3LCA0NCwgNCwgMjAyLCAyMzIsIDQ0LCA0LCAyMDMsIDYyLCA0NCwgNCwgMjE2LCAyMTYsIDQ0LCA0LCAyMTYsIDU3LCAKLSAgICA0NCwgNCwgMjE2LCAzLCA0NCwgNCwgMjE1LCAxNDUsIDQ0LCA0LCAyMTUsIDExNCwgNDQsIDQsIDIxNiwgMTU4LCA0NCwgNCwgCi0gICAgMjE2LCAxMzUsIDQ0LCA0LCAyMTYsIDE5NywgNDQsIDQsIDIxNSwgMjI3LCA0NCwgNCwgMjE1LCAyMDgsIDQ0LCA0LCAyMTYsIAotICAgIDE2NywgNDQsIDQsIDIyOCwgMTEyLCA0NCwgNCwgMjI3LCAxNDgsIDQ0LCA0LCAyMjcsIDEzMCwgNDQsIDQsIDIyNiwgMjM5LCAKLSAgICA0NCwgNCwgMjI2LCAyMTAsIDQ0LCA0LCAyMjcsIDIzNCwgNDQsIDQsIDIyNywgMjI2LCA0NCwgNCwgMjI4LCA4NiwgNDQsIDQsIAotICAgIDIyNywgNDksIDQ0LCA0LCAyMjcsIDE4LCA0NCwgNCwgMjI3LCAyNTEsIDQ0LCA0LCAyMDYsIDg1LCA0NCwgNCwgMjA1LCAKLSAgICAyMzAsIDQ0LCA0LCAyMDUsIDIxNSwgNDQsIDQsIDIwNCwgMTYzLCA0NCwgNCwgMjA0LCAxNTYsIDQ0LCA0LCAyMDYsIDU1LCAKLSAgICA0NCwgNCwgMjA2LCA1MCwgNDQsIDQsIDIwNiwgODEsIDQ0LCA0LCAyMDUsIDE4OSwgNDQsIDQsIDIwNSwgMTc2LCA0NCwgNCwgCi0gICAgMjA2LCA2MSwgNDQsIDQsIDIyNywgNjcsIDQ0LCA0LCAyMjcsIDYyLCA0NCwgNCwgMjI3LCA2MSwgNDQsIDQsIDIyNywgNTgsIAotICAgIDQ0LCA0LCAyMjcsIDU3LCA0NCwgNCwgMjI3LCA2NCwgNDQsIDQsIDIyNywgNjMsIDQ0LCA0LCAyMjcsIDY2LCA0NCwgNCwgCi0gICAgMjI3LCA2MCwgNDQsIDQsIDIyNywgNTksIDQ0LCA0LCAyMjcsIDY1LCA0NCwgNCwgMjI3LCA3NiwgNDQsIDQsIDIyNywgNzEsIAotICAgIDQ0LCA0LCAyMjcsIDcwLCA0NCwgNCwgMjI3LCA1NCwgNDQsIDQsIDIyNywgNTMsIDQ0LCA0LCAyMjcsIDczLCA0NCwgNCwgCi0gICAgMjI3LCA3MiwgNDQsIDQsIDIyNywgNzUsIDQ0LCA0LCAyMjcsIDU2LCA0NCwgNCwgMjI3LCA1NSwgNDQsIDQsIDIyNywgNzQsIAotICAgIDQ0LCA0LCAyMTUsIDE4NCwgNDQsIDQsIDIxNSwgMTczLCA0NCwgNCwgMjE1LCAxNzIsIDQ0LCA0LCAyMTUsIDE2NSwgNDQsIAotICAgIDQsIDIxNSwgMTU4LCA0NCwgNCwgMjE1LCAxODAsIDQ0LCA0LCAyMTUsIDE3OSwgNDQsIDQsIDIxNSwgMTgzLCA0NCwgNCwgCi0gICAgMjE1LCAxNzEsIDQ0LCA0LCAyMTUsIDE3MCwgNDQsIDQsIDIxNSwgMTgyLCA0NCwgNCwgMjIxLCAyMDgsIDQ0LCA0LCAyMjEsIAotICAgIDIwMywgNDQsIDQsIDIyMSwgMjAyLCA0NCwgNCwgMjIxLCAxOTksIDQ0LCA0LCAyMjEsIDE5OCwgNDQsIDQsIDIyMSwgMjA1LCAKLSAgICA0NCwgNCwgMjIxLCAyMDQsIDQ0LCA0LCAyMjEsIDIwNywgNDQsIDQsIDIyMSwgMjAxLCA0NCwgNCwgMjIxLCAyMDAsIDQ0LCAKLSAgICA0LCAyMjEsIDIwNiwgNDQsIDQsIDIzMCwgMTgwLCA0NCwgNCwgMjMwLCAxNDEsIDQ0LCA0LCAyMzAsIDEzNCwgNDQsIDQsIAotICAgIDIzMCwgODIsIDQ0LCA0LCAyMzAsIDY0LCA0NCwgNCwgMjMwLCAxNjEsIDQ0LCA0LCAyMzAsIDE1OSwgNDQsIDQsIDIzMCwgCi0gICAgMTc0LCA0NCwgNCwgMjMwLCAxMDEsIDQ0LCA0LCAyMzAsIDkxLCA0NCwgNCwgMjMwLCAxNjcsIDQ0LCA0LCAyMTMsIDg1LCAKLSAgICA0NCwgNCwgMjEzLCAxMSwgNDQsIDQsIDIxMywgNiwgNDQsIDQsIDIxMiwgMTk5LCA0NCwgNCwgMjEyLCAxODIsIDQ0LCA0LCAKLSAgICAyMTMsIDQzLCA0NCwgNCwgMjEzLCA0MSwgNDQsIDQsIDIxMywgNzQsIDQ0LCA0LCAyMTIsIDI0MiwgNDQsIDQsIDIxMiwgCi0gICAgMjM2LCA0NCwgNCwgMjEzLCA1MiwgNDQsIDQsIDIxMSwgMTYzLCA0NCwgNCwgMjExLCAxMzIsIDQ0LCA0LCAyMTEsIDEyOCwgCi0gICAgNDQsIDQsIDIxMSwgMTE5LCA0NCwgNCwgMjExLCAxMTYsIDQ0LCA0LCAyMTEsIDEzOCwgNDQsIDQsIDIxMSwgMTM3LCA0NCwgCi0gICAgNCwgMjExLCAxNjIsIDQ0LCA0LCAyMTEsIDEyNCwgNDQsIDQsIDIxMSwgMTIzLCA0NCwgNCwgMjExLCAxNDAsIDQ0LCA0LCAKLSAgICAyMTUsIDMzLCA0NCwgNCwgMjEyLCAxNjIsIDQ0LCA0LCAyMTIsIDE0MiwgNDQsIDQsIDIxMSwgMTAsIDQ0LCA0LCAyMTAsIAotICAgIDE3OSwgNDQsIDQsIDIxNCwgMTc3LCA0NCwgNCwgMjE0LCAxNjUsIDQ0LCA0LCAyMTUsIDE4LCA0NCwgNCwgMjEyLCAxMywgCi0gICAgNDQsIDQsIDIxMSwgMjUwLCA0NCwgNCwgMjE0LCAyMTcsIDQ0LCA0LCAyMzcsIDE1NywgNDQsIDQsIDIzNywgMywgNDQsIDQsIAotICAgIDIzNiwgMjM5LCA0NCwgNCwgMjM2LCAyNiwgNDQsIDQsIDIzNiwgMSwgNDQsIDQsIDIzNywgNjcsIDQ0LCA0LCAyMzcsIDQ4LCAKLSAgICA0NCwgNCwgMjM3LCAxNDcsIDQ0LCA0LCAyMzYsIDEzNiwgNDQsIDQsIDIzNiwgMTE3LCA0NCwgNCwgMjM3LCA3NiwgNDQsIDQsIAotICAgIDIyOCwgMjIzLCA0NCwgNCwgMjI4LCAyMjIsIDQ0LCA0LCAyMjgsIDIxNywgNDQsIDQsIDIyOCwgMjE2LCA0NCwgNCwgMjI4LCAKLSAgICAyMTMsIDQ0LCA0LCAyMjgsIDIxMiwgNDQsIDQsIDIyOCwgMjE5LCA0NCwgNCwgMjI4LCAyMTgsIDQ0LCA0LCAyMjgsIDIyMSwgCi0gICAgNDQsIDQsIDIyOCwgMjE1LCA0NCwgNCwgMjI4LCAyMTQsIDQ0LCA0LCAyMjgsIDIyMCwgNDQsIDQsIDIxMiwgMjA1LCAxNDAsIAotICAgIDEwOSwgMiwgMjAzLCA3NSwgMTQwLCAxMDksIDIsIDIxNiwgMTg2LCAxNDAsIDEwOSwgMiwgMjE2LCAxMDIsIDExNCwgMSwgCi0gICAgMjA3LCA5NSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDE3MywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTQ0LCA4NSwgCi0gICAgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAyNiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTE1LCA4NSwgMTA5LCAyLCAKLSAgICAyNDUsIDI0OSwgMjIyLCAxMjgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDcsIDkyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgCi0gICAgMjQ2LCAxOTksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDUsIDI1NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NiwgMTE2LCAKLSAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIwLCAyMzMsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDQsIDIxMiwgODUsIDEwOSwgCi0gICAgMiwgMjQ1LCAyNDksIDIwNywgMjI5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQzLCAxMTMsIDg1LCAxMDksIDIsIDI0NSwgCi0gICAgMjQ5LCAyMDcsIDIyNCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwMSwgMjAxLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjEwLCAKLSAgICAyMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwOSwgMTA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTM1LCA4NSwgMTA5LCAKLSAgICAyLCAyNDUsIDI0OSwgMjA5LCA0NywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyMSwgMTkxLCA4NSwgMTA5LCAyLCAyNDUsIAotICAgIDI0OSwgMjQ5LCAzMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMjA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAKLSAgICA2OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMTgwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI0LCA4MiwgODUsIAotICAgIDEwOSwgMiwgMjQ1LCAyNDksIDIwMiwgMjQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE1LCAyMjcsIDg1LCAxMDksIDIsIAotICAgIDI0NSwgMjQ5LCAyMjcsIDQ5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA1LCAxODksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKLSAgICAyMTMsIDkwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjExLCAxNjQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDM2LCAKLSAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTUyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI4LCAxMTMsIDg1LCAyMiwgMiwgCi0gICAgMjQ1LCAyNDksIDIxNywgMTI2LCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDY1LCA4NSwgMjMxLCAzNiwgCi0gICAgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE1LCA5NSwgODUsIAotICAgIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE3LCAxMDYsIDg1LCAyMiwgMiwgMjIwLCAzOSwgODUsIDIyLCAyLCAyNTEsIAotICAgIDI0MiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDIwMywgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgMTcyLCAxLCAyNDgsIAotICAgIDc5LCAyMjIsIDExNiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE5MCwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIAotICAgIDEsIDI0OCwgNzksIDIyMiwgMjAzLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxNTEsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDExNiwgCi0gICAgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxMjgsIDY3LCAxLCAyNTEsIDU3LCAyNDYsIAotICAgIDIzOCwgNjcsIDEsIDI1MSwgNTcsIDIwNywgMjAzLCA2NywgMSwgMjUxLCA1NywgMTM1LCA2NywgMSwgMjUxLCA1NywgMjE5LCAKLSAgICAxODQsIDY1LCAxLCAyNDAsIDE5OCwgMjQwLCAxOTcsIDI0NSwgMTg4LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDAsIAotICAgIDE5OCwgMjQ1LCAxODgsIDE0MywgMTQyLCAKKyAgICAwLCAyMDgsIDI0NCwgMjM4LCA0MywgODEsIDIxNCwgNjMsIDgxLCA0MSwgNTQsIDI0MCwgMTk0LCA1NCwgMjE2LCAyNywgNTQsIAorICAgIDI1MSwgODksIDI1MSwgMTMsIDQ5LCAyMTYsIDExNSwgNTEsIDIxNiwgMTE1LCAyNTAsIDE2NSwgOTMsIDU0LCAyNDYsIDcwLCAKKyAgICAyMzMsIDMyLCAyMzYsIDE4MywgMjA4LCA3NiwgMjA5LCAxNiwgMTcsIDE5OSwgODEsIDE3LCAxMDIsIDE3LCAxMDUsIDE3LCAKKyAgICAxNDcsIDE3LCAxNDksIDE3LCAxNjQsIDE3LCAxODcsIDE3LCAyMTAsIDEzNSwgMTcsIDE5MiwgMTcsIDIxOSwgMTEzLCAyNDYsIAorICAgIDc5LCAyMTAsIDE2NywgMjI0LCAyNDEsIDU0LCAyMzgsIDEyMiwgNTQsIDIzNSwgNjcsIDU0LCAyMTQsIDc5LCA4MSwgMjQ2LCAKKyAgICA2OCwgMjUwLCAxNTUsIDgsIDYsIDEsIDYyLCA4LCA2LCAxLCAyNTAsIDEwMywgOCwgNiwgMSwgMjQ3LCAyMjMsIDgsIDYsIDEsIAorICAgIDI0MiwgMTUzLCA4LCA2LCAxLCA3MiwgOCwgNiwgMSwgMjM4LCA1LCA4LCA2LCAxLCAyMzYsIDE1NiwgOCwgNiwgMSwgMjM0LCAKKyAgICAyNDcsIDgsIDYsIDEsIDcwLCA4LCA2LCAxLCAyMjcsIDI1MSwgOCwgNiwgMSwgMjI3LCAxMTgsIDgsIDYsIDEsIDE1NiwgOCwgCisgICAgNiwgMSwgMjIzLCAyNDMsIDgsIDYsIDEsIDIyMCwgMjE0LCA4LCA2LCAxLCA3NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDgsIDYsIAorICAgIDEsIDIxNCwgMTY3LCA4LCA2LCAxLCAxNDYsIDgsIDYsIDEsIDIxMiwgMTIyLCA4LCA2LCAxLCAyMDcsIDgzLCA4LCA2LCAxLCAKKyAgICA2NiwgOCwgNiwgMSwgMjAzLCAxNjgsIDgsIDYsIDEsIDIwMSwgMTQ3LCA4LCA2LCAxLCAyMDAsIDE5NSwgOCwgNiwgMSwgCisgICAgMjAwLCAxMjMsIDgsIDYsIDEsIDE5OSwgMTU3LCA0OSwgNTIsIDE1OSwgMjEzLCAxMDYsIDIwOSwgMTYsIDUxLCA1MiwgMTU5LCAKKyAgICAyNDYsIDE0NywgMjUxLCAyNTEsIDEyOCwgMjI0LCAxNzYsIDIzNSwgNzQsIDI1MSwgMjUxLCA4LCA0LCAxLCA2MiwgOCwgNCwgCisgICAgMSwgMjUwLCAxMDMsIDgsIDQsIDEsIDI0NywgMjIzLCA4LCA0LCAxLCAyNDIsIDE1MywgOCwgNCwgMSwgNzIsIDgsIDQsIDEsIAorICAgIDIzOCwgNSwgOCwgNCwgMSwgMjM2LCAxNTYsIDgsIDQsIDEsIDIzNCwgMjQ3LCA4LCA0LCAxLCA3MCwgOCwgNCwgMSwgMjI3LCAKKyAgICAyNTEsIDgsIDQsIDEsIDIyNywgMTE4LCA4LCA0LCAxLCAxNTYsIDgsIDQsIDEsIDIyMywgMjQzLCA4LCA0LCAxLCAyMjAsIAorICAgIDIxNCwgOCwgNCwgMSwgNzQsIDgsIDQsIDEsIDIxNiwgMjI2LCA4LCA0LCAxLCAyMTQsIDE2NywgOCwgNCwgMSwgMTQ2LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMiwgOCwgNCwgMSwgMjA3LCA4MywgOCwgNCwgMSwgNjYsIDgsIDQsIDEsIDIwMywgMTY4LCA4LCA0LCAKKyAgICAxLCAyMDEsIDE0NywgOCwgNCwgMSwgMjAwLCAxOTUsIDgsIDQsIDEsIDIwMCwgMTIzLCA4LCA0LCAxLCAxOTksIDE1NywgNDksIAorICAgIDI0MiwgMTk2LCAxNTksIDgzLCAyMjQsIDE3NiwgNTEsIDI0MiwgMTk2LCAxNTksIDIwNSwgMjQwLCAyMTgsIDI0MCwgMjA4LCAKKyAgICAyNDQsIDIyOCwgNTAsIDIzOCwgNDMsIDgxLCAyNDcsIDU4LCA1NCwgMjE1LCA1NiwgNTQsIDI0MiwgMTk1LCA1NCwgMjAwLCAKKyAgICA0MiwgNTQsIDI0OCwgNDYsIDE0OCwgMjExLCAxOTMsIDU0LCAyNDEsIDc0LCAyNDMsIDE5LCA1NCwgMjM3LCAxMjgsIDIxNywgCisgICAgMjksIDIyOCwgOTksIDIyNSwgMjMsIDUzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjE4LCAyMTUsIDU0LCAyMDksIDIzLCAKKyAgICAyMzMsIDMzLCAyMTMsIDE2MSwgNTQsIDIyMiwgMjI4LCAyNDEsIDE1NSwgNTQsIDIxNSwgMTEyLCA1NCwgMjA3LCAyMTMsIAorICAgIDEwNSwgMjA3LCAyMTMsIDE0NywgMjUxLCAyMzksIDI1MSwgMjUxLCAyMjEsIDIwOSwgNTQsIDIxNSwgMTYzLCA1NCwgMTAxLCAKKyAgICAyNDAsIDE4MiwgMjQ3LCA2OSwgMjA3LCAyMTMsIDEwMiwgMjIyLCAxMzYsIDIxNywgMjksIDIyOCwgOTksIDIxMywgNDEsIAorICAgIDUzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDIwMSwgMTY0LCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDIyOCwgNTAsIDIxNCwgCisgICAgNzksIDgxLCA4LCA2LCAxLCAzNSwgMywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDE2OSwgOCwgNiwgMSwgMzUsIDMsIAorICAgIDI0NiwgMTQ2LCA4LCA2LCAxLCAzNSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAzNSwgCisgICAgMywgMjEzLCAyNywgNTYsIDgsIDYsIDEsIDI1MSwgMjIxLCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCA2OSwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIDMsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NiwgOCwgCisgICAgNiwgMSwgMTk3LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAxNjksIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc0LCA4LCA2LCAKKyAgICAxLCAyMzgsIDc0LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjM1LCA3MywgOCwgCisgICAgNiwgMSwgMTYzLCAzLCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDAsIAorICAgIDgsIDYsIDEsIDE2MywgMywgMjQxLCA3NCwgMjIxLCAxOSwgNTQsIDgsIDYsIDEsIDE2MywgMywgOTcsIDgsIDYsIDEsIDEwOCwgCisgICAgMywgMjM1LCA3MywgOCwgNiwgMSwgMTA4LCAzLCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIAorICAgIDEwOCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDE2OSwgOCwgNiwgMSwgMjA2LCA1NCwgOCwgNCwgMSwgCisgICAgMjEwLCA3OSwgMjEyLCAxMjIsIDgsIDQsIDEsIDM1LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgMywgMTY5LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDM1LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIDI0MSwgNzQsIDgsIDQsIAorICAgIDEsIDM1LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMjUxLCAyMjEsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgCisgICAgMTQ2LCA4LCA0LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIAorICAgIDIzMywgMTksIDMsIDE2OSwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0MSwgCisgICAgNzQsIDgsIDQsIDEsIDIzOCwgNzQsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAyNDAsIDIzNSwgNTQsIDgsIDQsIDEsIDE2MywgMywgOTcsIAorICAgIDgsIDQsIDEsIDEwOCwgMywgMjM1LCA3MywgOCwgNCwgMSwgMTA4LCAzLCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjQ2LCAKKyAgICAxNDYsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDE2OSwgOCwgNCwgMSwgMjA2LCAKKyAgICA1NCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDM1LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1NywgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTcsIDgsIDYsIDEsIAorICAgIDM1LCAzLCAyMTcsIDExMCwgOCwgNCwgMSwgMzUsIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTY5LCA4LCAKKyAgICA0LCAxLCAyNDcsIDIyNCwgMywgMTY5LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDI0NywgCisgICAgMjI0LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAxMjUsIDgsIDYsIAorICAgIDEsIDI0MiwgMTU0LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgOTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCA5NywgOCwgNiwgMSwgMTk3LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMTk3LCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMTk3LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0OCwgNTcsIDgsIAorICAgIDYsIDEsIDE5NywgMywgNzMsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMCwgCisgICAgOCwgNCwgMSwgMTk3LCAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMTk3LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk3LCAzLCAKKyAgICAyNDcsIDEyNSwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ2LCAxNDYsIAorICAgIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ4LCA1NywgOCwgNiwgMSwgCisgICAgMjM2LCAxNTcsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgMjQ2LCAxNDYsIAorICAgIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDk3LCA4LCA0LCAxLCAyMzQsIAorICAgIDI0OCwgMywgOTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAyMTcsIDExMCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDIzMywgMTksIDMsIDczLCA1NiwgOCwgCisgICAgNCwgMSwgMjQwLCAxODEsIDcwLCA4LCA2LCAzMywgMjI4LCAxNDksIDgsIDQsIDMzLCAyMjgsIDE0OSwgOCwgNiwgMSwgMjI3LCAKKyAgICAyNTIsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAKKyAgICAyNDcsIDY5LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjI2LCAzNywgOCwgNiwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDE2OSwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDE2OSwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDI0NywgNjksIDgsIAorICAgIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDEwMSwgMjQwLCAxODIsIDgsIDQsIDEsIDIyNSwgMTkzLCAKKyAgICAzLCAxMDEsIDI0MCwgMTgyLCA4LCA2LCAxLCAyMjUsIDE5MywgMywgOTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCA5NywgOCwgCisgICAgNiwgMSwgMjIwLCAyMTUsIDMsIDE2OSwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDE2OSwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjQ3LCAxMjUsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjIwLCAyMTUsIDIxNSwgMzAsIDI0NywgMjM1LCAKKyAgICAyNTEsIDEzLCA4LCA2LCAxLCAyMzgsIDE2NSwgOCwgNCwgMSwgMjM4LCAxNjUsIDgsIDYsIDEsIDE2MywgMywgMjIyLCAyMjgsIAorICAgIDgsIDQsIDEsIDE2MywgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgMjQ4LCA1NywgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyNDgsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDUzLCAxNjksIDgsIDQsIDEsIDE2MywgMywgNTMsIDE2OSwgOCwgNiwgMzMsIAorICAgIDIxNywgMTIxLCA4LCA0LCAzMywgMjE3LCAxMjEsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDE2OSwgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMTY5LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDY5LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIxMiwgCisgICAgMTIzLCAzLCAxNjksIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxNjksIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ3LCA2OSwgOCwgNCwgMSwgCisgICAgMjEyLCAxMjMsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjEyLCAxMjMsIAorICAgIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIAorICAgIDIwNywgODQsIDMsIDk3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCA5NywgOCwgNiwgMSwgMTA4LCAzLCAyMDUsIDI0MCwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMTA4LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIAorICAgIDIyOCwgOCwgNiwgMSwgMTA4LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0OCwgNTcsIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjEzLCAyNywgNTYsIDgsIDYsIDEsIDEwOCwgMywgNTMsIDE2OSwgOCwgCisgICAgNCwgMSwgMTA4LCAzLCA1MywgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTEwLCA4LCA0LCAxLCAxMDgsIDMsIDIxNywgCisgICAgMTEwLCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyNDYsIDE0NiwgOCwgCisgICAgNiwgMSwgMjAwLCAxMjQsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIAorICAgIDIwMCwgMTI0LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMTY5LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgCisgICAgMTY5LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgNzMsIDU2LCA4LCA2LCAxLCAKKyAgICAxOTksIDE1OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTY4LCAyMTIsIAorICAgIDEyMiwgOCwgNCwgMSwgNjgsIDMsIDk3LCA4LCA2LCAxLCA2OCwgMywgMTE3LCA4LCA2LCAxLCA2OCwgMywgMjA1LCAxNTUsIAorICAgIDgsIDQsIDEsIDY4LCAzLCAyMDUsIDE1NSwgOCwgNiwgMSwgMTUwLCAxODcsIDgsIDQsIDEsIDE1MCwgMTg3LCA4LCA2LCAxLCAKKyAgICAxNzYsIDc0LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTE3LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMTE3LCA4LCA2LCAxLCAKKyAgICAyNTEsIDE5NiwgMjQyLCAxNTMsIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAxMTcsIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAyMDUsIAorICAgIDE1NSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIwNSwgMTU1LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjQxLCAxMzYsIDgsIDYsIAorICAgIDEsIDIxMywgMTA1LCA3MiwgOCwgNiwgMSwgMjExLCAyMTgsIDgsIDYsIDEsIDE3NiwgNzIsIDgsIDYsIDEsIDIzOCwgNiwgMywgCisgICAgMTE3LCA4LCA0LCAxLCAyMzgsIDYsIDMsIDExNywgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDExNywgOCwgNiwgMSwgMjM2LCAKKyAgICA2MCwgOCwgNCwgMSwgMjMzLCA2OSwgOCwgNiwgMSwgMjI4LCA0MSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgOTcsIDgsIDYsIDEsIAorICAgIDIyNywgMTE5LCAzLCAxMTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAxMTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAxNDgsIAorICAgIDgsIDQsIDEsIDIyNSwgODksIDMsIDk3LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjIzLCAyNDMsIDgsIDYsIDEsIDIyMCwgMjE1LCAKKyAgICAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTY4LCA1MSwgMjI1LCAxNiwgOCwgNiwgMSwgMTYzLCAzLCAxMDEsIAorICAgIDIwNSwgMjQwLCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI0LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI0LCA4LCA2LCAxLCAKKyAgICAyMTcsIDEwNSwgOCwgNCwgMSwgMjE3LCAxMDUsIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAxMTcsIDgsIDQsIDEsIDIxNiwgCisgICAgMjI3LCAzLCAxMTcsIDgsIDEsIDE5OSwgMjE0LCA4LCA2LCAxLCAxNTAsIDEwNSwgOCwgNCwgMSwgMTUwLCAxMDUsIDgsIDYsIAorICAgIDEsIDIzOCwgOTQsIDgsIDEsIDIxMywgMTA1LCAyMzgsIDk1LCAyMjQsIDc0LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyMTYsIAorICAgIDE4NCwgMTE3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAxMTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDExNywgOCwgNiwgMSwgCisgICAgMjA3LCA4NCwgMywgMjEzLCAxMTEsIDExNywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNCwgOCwgNCwgMSwgMTA4LCAzLCAKKyAgICAyMzMsIDEyNCwgOCwgNiwgMSwgMjAzLCAyMjAsIDgsIDYsIDEsIDIwMywgMTY5LCAzLCAxMTcsIDgsIDYsIDEsIDIwMCwgCisgICAgMTI0LCAzLCAxMTcsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAxMTcsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMTk5LCAxNTgsIDMsIDk3LCA4LCA2LCAxLCAyMzgsIDgsIDgsIDYsIDEsIDIzOCwgOSwgMjEzLCAxMDQsIDgsIDQsIDEsIAorICAgIDIzOCwgOSwgMjEzLCAxMDQsIDgsIDQsIDEsIDIzOCwgOSwgMywgMjA3LCA2LCA4LCAxLCAxMjAsIDMsIDk3LCA4LCA2LCAxLCAKKyAgICAxNTAsIDE2NCwgOCwgNCwgMSwgMTUwLCAxNjQsIDgsIDEsIDIyOCwgNTAsIDIzNSwgMTIzLCAyMDgsIDc3LCAzLCA5NywgOCwgCisgICAgMSwgMjAwLCAxOTgsIDgsIDEsIDI0MSwgMTI5LCAyNDYsIDEyMSwgOCwgMSwgMjI1LCA2MSwgMjQ2LCAxMjEsIDgsIDEsIAorICAgIDI1MSwgMTAyLCAyNDYsIDEyMSwgOCwgMSwgMjEzLCAxMTEsIDI0NiwgMTIxLCA4LCA2LCAxLCAyMzksIDk1LCAzLCAyNDcsIAorICAgIDEyNSwgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDQsIDEsIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjM5LCA5NSwgCisgICAgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyNCwgMTQyLCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNCwgMSwgMjI3LCAyNTEsIDgsIAorICAgIDQsIDEsIDIyNCwgMTQyLCA4LCA2LCAxLCAyMTksIDk5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgNCwgMSwgMjI3LCAyNTEsIAorICAgIDgsIDQsIDEsIDIxOSwgOTksIDgsIDYsIDEsIDM1LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMzUsIDMsIDI0NywgMTI1LCA4LCAKKyAgICA2LCAxLCAyMzMsIDE5LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDE2MywgCisgICAgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE2MywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDEwOCwgMywgMjQ3LCAxMjUsIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMTY5LCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDI0NywgMTI1LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjM1LCAKKyAgICA3MywgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjA0LCAxODUsIDcyLCA4LCA2LCAKKyAgICAxLCAzNSwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAzNSwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCAKKyAgICA4LCA2LCAxLCAzNSwgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDM1LCAzLCA3MywgODgsIDI2LCAyMjIsIAorICAgIDIyOCwgOCwgNiwgMSwgMjUxLCAyMjIsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAyNTEsIDIyMiwgMywgMjIyLCAyMjgsIDgsIAorICAgIDYsIDEsIDIzNiwgMTU3LCAzLCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDk3LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDI0NywgMTI1LCAKKyAgICA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDE2MywgMywgMjE3LCAxMTAsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDE2MywgMywgMjE3LCAxMTEsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyMTcsIDExMSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMzgsIDksIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzgsIDksIDMsIAorICAgIDI0NywgMTI1LCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIzOSwgOTQsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCA0LCAxLCAxOTksIDE1NywgOCwgNCwgMSwgMjM5LCA5NCwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDE2OSwgOCwgCisgICAgNCwgMSwgMjM2LCAxNTcsIDMsIDE2OSwgOCwgNiwgMSwgMjMzLCA2NiwgOCwgNiwgMSwgMjAwLCAxOTgsIDgsIDYsIDEsIAorICAgIDIyMCwgMjE1LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDIxMywgCisgICAgMjcsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjEzLCAyNywgODgsIDI2LCAxNjksIDgsIDYsIDEsIDI1MSwgMjIyLCAKKyAgICAzLCAxNjksIDgsIDQsIDEsIDI1MSwgMjIyLCAzLCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjA4LCA0NywgMjYsIDE2OSwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCAyMDgsIDQ3LCAyNiwgMTY5LCA4LCA2LCAxLCAzNSwgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDM1LCAzLCAyMjgsIAorICAgIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDUzLCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAxOTcsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgCisgICAgNiwgMSwgMjMzLCAxOSwgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTksIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCAKKyAgICA2LCAxLCAxNjMsIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDE2MywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMjE0LCAzMywgMywgCisgICAgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMjgsIAorICAgIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDUzLCAKKyAgICAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAxMDgsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIAorICAgIDgsIDQsIDEsIDEwOCwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgNzEsIDU3LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMywgMywgMjQ2LCA3MSwgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NiwgNzEsIDU3LCA4LCA0LCAKKyAgICAxLCAyMDcsIDg0LCAzLCAyNDYsIDcxLCA1NywgOCwgNiwgMSwgMTk5LCAyMzIsIDgsIDQsIDEsIDE5OSwgMjMyLCA4LCA2LCAKKyAgICAxLCAyMzQsIDI0OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjIwLCAKKyAgICAyMTUsIDMsIDE2OCwgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDIsIDE5OCwgOCwgNiwgMSwgMjE3LCAKKyAgICAzLCA4LCA0LCAxLCAyMTcsIDMsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAxMTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAxMTcsIAorICAgIDgsIDYsIDEsIDM1LCAzLCA3MywgNTYsIDgsIDQsIDEsIDM1LCAzLCA3MywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjQ3LCA2OSwgCisgICAgOCwgNCwgMSwgMTk3LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAxNjMsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNCwgCisgICAgMSwgMTYzLCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyMjIsIAorICAgIDIyOCwgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxNjMsIDMsIDczLCA1NiwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCA3MywgNTYsIDgsIDYsIDEsIDE2MywgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDE2MywgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIyMCwgMjE1LCAKKyAgICAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDI0MCwgMTgxLCAyMjcsIDI1MSwgCisgICAgOCwgNCwgMSwgMjQxLCAyMzAsIDI0MSwgMzQsIDgsIDQsIDEsIDIxNCwgOTgsIDI0MSwgMzQsIDgsIDYsIDEsIDM1LCAzLCAKKyAgICA5NywgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDk3LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgOTcsIDgsIDYsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxNDgsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjA3LCAKKyAgICAxODMsIDIwNywgNiwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDIwNywgMTgzLCAyMDcsIDYsIDgsIDYsIDEsIDIzNSwgMTIzLCAKKyAgICAyMDgsIDc2LCA4LCA0LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgOCwgNiwgMSwgNjgsIDMsIDk3LCA4LCA2LCAxLCAxMDgsIAorICAgIDE0OCwgOCwgNiwgMSwgMjA0LCAxODUsIDIwMywgMTY4LCA4LCA2LCAxLCAxOTcsIDMsIDk3LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDk3LCA4LCA2LCAxLCAyMjcsIDI1MiwgMywgOTcsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCA5NywgOCwgNiwgMSwgNCwgMjE0LCAKKyAgICAxNjgsIDMsIDIzMywgMTg3LCAyMDcsIDYsIDgsIDQsIDEsIDIxNCwgMTY4LCAzLCAyMzMsIDE4NywgMjA3LCA2LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCA5NywgOCwgNCwgMSwgMjE0LCAzMywgMywgOTcsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCA5NywgOCwgCisgICAgNCwgMSwgMjAwLCAxMjQsIDMsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgNjIsIDgsIDQsIDEsIDI1MSwgMTEyLCA4LCA0LCAxLCAKKyAgICAyMDQsIDE4NSwgMjUxLCAxMTIsIDgsIDQsIDEsIDY4LCAzLCAxMTcsIDgsIDQsIDEsIDE3NiwgNzQsIDgsIDQsIDEsIDI0NywgCisgICAgMjI0LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIwNywgNiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIAorICAgIDExNywgOCwgNCwgMSwgMjEzLCAxMDUsIDcyLCA4LCA0LCAxLCAyMTEsIDIxOCwgOCwgNCwgMSwgMjExLCAyMTksIDMsIDExNywgCisgICAgOCwgNCwgMSwgMTc2LCA3MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDE3NiwgNzIsIDgsIDQsIDEsIDIxMywgMTA1LCAxNzYsIAorICAgIDE5NywgMywgMTE3LCA4LCA0LCAxLCAyNDYsIDExMCwgMjEzLCAxMDUsIDE3NiwgNzIsIDgsIDQsIDEsIDI0MCwgMTgxLCAKKyAgICAyMjcsIDI1MiwgMywgOTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAxMTcsIDgsIDQsIDEsIDEzNSwgMjM2LCAxNTYsIDgsIDEsIAorICAgIDQsIDYsIDIzNiwgMTU2LCA4LCA0LCAxLCAyMzYsIDYwLCA4LCA0LCAxLCAyMTMsIDIxNCwgMjMzLCAxMjQsIDgsIDQsIDEsIAorICAgIDIwNCwgMTg1LCAyMzQsIDI0NywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDExNywgOCwgNCwgMSwgMjM0LCAxMDQsIDMsIDExNywgCisgICAgOCwgNCwgMSwgMjMzLCAxOSwgMywgOTcsIDgsIDQsIDEsIDIyOCwgNDEsIDgsIDEsIDQsIDYsIDcwLCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDI0OCwgMjI2LCA4LCA0LCAxLCAyMjUsIDE5MywgCisgICAgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjI0LCAyMjYsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgNCwgCisgICAgMSwgMjA0LCAxODUsIDIyMywgMjQ0LCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAxMTcsIDgsIDQsIAorICAgIDEsIDIyMCwgMjE1LCAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjEzLCAxMTEsIDExNywgOCwgMSwgNCwgNiwgCisgICAgMjIwLCAyMTQsIDgsIDQsIDEsIDI0OSwgNzEsIDc0LCA4LCAxLCA0LCA2LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjQ2LCAxMTAsIAorICAgIDIxNywgODMsIDgsIDQsIDEsIDIxNSwgMjI5LCA4LCA0LCAxLCAyMDQsIDE4NSwgMTQ2LCA4LCA0LCAxLCAyMDQsIDE4NSwgCisgICAgMjE0LCAzMywgMywgMTY4LCAyMjUsIDE2LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE0LCAzMywgMywgMTE3LCA4LCA0LCAxLCAKKyAgICAyMTQsIDMzLCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIwNywgNiwgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMjM3LCA2OCwgOCwgNCwgMSwgMjEzLCAxMDUsIDIxNCwgMzMsIDMsIDIzNywgNjgsIDgsIDEsIDQsIDYsIDE0NiwgOCwgCisgICAgMSwgNCwgNiwgMjI4LCA1MCwgMTQ2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMTE3LCA4LCA0LCAxLCAyMzgsIDk0LCA4LCA0LCAKKyAgICAxLCAyNDAsIDE4MSwgMjI3LCAyNTIsIDMsIDIwOCwgNDcsIDI2LCAxMTcsIDgsIDQsIDEsIDIwOCwgMTkwLCAyMTMsIDEwNSwgCisgICAgMjM4LCA5NCwgOCwgNCwgMSwgMjM4LCA5NSwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDcsIDgzLCA4LCA0LCAKKyAgICAxLCAyMDcsIDg0LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAxMDgsIDE0OCwgOCwgNCwgMSwgMjAzLCAyMjAsIDgsIDQsIAorICAgIDEsIDIwMywgMTY5LCAzLCAxMTcsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDMsIDE2OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIwMSwgCisgICAgMTQ3LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAwLCAxMjMsIDgsIDEsIDQsIDYsIDIwMCwgMTIzLCA4LCA0LCAxLCAxOTksIAorICAgIDE1OCwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMzgsIDgsIAorICAgIDgsIDQsIDEsIDIzOCwgOSwgMywgMjQyLCAxOTgsIDgsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCAxLCAyMTUsIDIzNiwgCisgICAgMjAyLCAxODksIDIzNiwgMjA3LCA4LCAxLCAyMjgsIDUwLCAyMzUsIDEyMywgMjA4LCA3NiwgOCwgMSwgMjA4LCA1NSwgMjQ3LCAKKyAgICAyMjMsIDgsIDEsIDI0OCwgMTcyLCAyNDYsIDEyMSwgOCwgMSwgNCwgNiwgMjUwLCAxMDMsIDgsIDQsIDEsIDI0NiwgMTEwLCAKKyAgICAxNzYsIDcyLCA4LCAxLCA0LCA2LCAyMzYsIDE1NywgMywgMTE3LCA4LCAxLCA0LCA2LCAyMzQsIDI0NywgOCwgNCwgMSwgCisgICAgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjI3LCAxMTgsIDgsIDEsIDQsIDYsIDE1NiwgOCwgCisgICAgNCwgMSwgMjE0LCAxNjgsIDMsIDExNywgOCwgMSwgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCAxLCAyMTMsIDEwNSwgCisgICAgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCA0LCAxLCAyMzksIDk1LCAyNDEsIDM0LCA4LCA0LCAxLCAyNDEsIDEwMiwgCisgICAgMjQxLCAzNCwgOCwgNCwgMSwgMjM5LCA5NSwgMjQxLCAzNSwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIwNSwgMzQsIDI0MSwgCisgICAgMzQsIDgsIDQsIDEsIDIwNiwgMTUxLCAyNDEsIDM0LCA4LCA0LCAxLCAyMDYsIDIwOCwgMjQxLCAzNSwgMywgMjQyLCAxOTgsIAorICAgIDgsIDQsIDEsIDIzNywgMTI1LCAyNDEsIDM0LCA4LCA0LCAxLCAyMjQsIDQ0LCAyNDEsIDM0LCA4LCA0LCAxLCAyMjMsIDI0NSwgCisgICAgMjQxLCAzNCwgOCwgMSwgMjQ4LCAxNzIsIDIxNiwgMjYsIDgsIDEsIDI0OCwgMTgwLCAyMTYsIDI2LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMjM0LCAyNDgsIDMsIDIzNywgNjgsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMzQsIDI0OCwgMywgMjM3LCA2OSwgMjYsIAorICAgIDIwNywgNiwgNjcsIDEsIDQsIDIzNCwgMjQ3LCA2NywgMSwgNCwgMjM0LCAyNDgsIDMsIDExNywgNjcsIDEsIDQsIDIyNywgCisgICAgMjUxLCA2NywgMSwgNCwgMTQ2LCA2NywgMSwgNCwgMjA0LCAxODUsIDE0NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMTQsIDMzLCAKKyAgICAzLCAxMTcsIDY3LCAxLCA0LCA2LCAyMjgsIDUwLCAxNDYsIDY3LCAxLCA0LCAyMDEsIDE0NywgNjcsIDEsIDQsIDIwMCwgCisgICAgMTIzLCA2NywgMSwgMjE1LCAxNCwgNjcsIDEsIDUzLCAyMTUsIDE0LCA2NywgMSwgMjA0LCAxODUsIDI0NiwgNzAsIDY3LCAxLCAKKyAgICAyNTEsIDEzLCA2NywgMSwgMjEzLCAxMDUsIDI0NiwgNzAsIDY3LCAxLCA1MSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgNDksIAorICAgIDE2NywgMjEzLCAyNiwgNjcsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA2NywgMSwgMjEzLCAxMDUsIDIzNSwgMTIzLCAyMDgsIAorICAgIDc2LCA2NywgMSwgNDksIDI1MCwgMjAyLCA2NywgMSwgNTEsIDI1MCwgMjAyLCA2NywgMSwgMTE1LCAyNTAsIDIwMiwgNjcsIAorICAgIDEsIDEyNywgMjUwLCAyMDIsIDY3LCAxLCAyNDYsIDE0NywgMjUxLCAyNTEsIDI0NywgMTI1LCA2NywgMSwgODMsIDIyNCwgCisgICAgMTc2LCA2NywgMSwgMjIyLCAyMjgsIDY3LCAxLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAyMzUsIDc0LCAyNTEsIAorICAgIDI1MSwgNjcsIDEsIDEyOCwgODMsIDIyNCwgMTc2LCA2NywgMSwgMTI4LCAyMjIsIDIyOCwgNjcsIDEsIDEyOCwgMjM1LCA3NCwgCisgICAgMjUxLCAyNTEsIDY3LCAxLCAxMjgsIDI1MSwgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDIwNSwgOTUsIDI0NiwgNzksIDY3LCAxLCAKKyAgICAxNjcsIDIwNSwgOTUsIDI0NiwgNzksIDY3LCAxLCAyNDcsIDU0LCA1MSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgMjQ3LCA1NCwgCisgICAgNDksIDE2NywgMjEzLCAyNiwgNjcsIDEsIDExNSwgMjA3LCAxNywgNjcsIDEsIDEyNywgMjA3LCAxNywgNjcsIDEsIDkzLCAKKyAgICA1NCwgNjcsIDEsIDIyMSwgMTU3LCA1NCwgMjQ4LCA1NywgNzMsIDU2LCAyMTMsIDI3LCA1NiwgMjE3LCAxMTAsIDQsIDIwNSwgCisgICAgMjQwLCA1MywgMjUxLCAyMzksIDI1MSwgMjUxLCA2NywgMSwgMjEzLCA4OSwgMTE3LCA2NywgMSwgMjQyLCAyMzUsIDI1MSwgCisgICAgMjUxLCA2NywgMSwgNCwgMjM2LCA2MCwgNjcsIDEsIDQsIDE1NiwgNjcsIDEsIDQsIDIxMiwgMTIyLCA2NywgMSwgNCwgMjAwLCAKKyAgICAxOTUsIDY3LCAxLCA0LCAyMTMsIDEwNSwgMjM1LCAxMjMsIDIwOCwgNzYsIDY3LCAxLCAyMzgsIDI5LCAxNTAsIDE0OCwgNjcsIAorICAgIDEsIDEyMiwgMTUwLCAxNDgsIDY3LCAxLCAyMjEsIDIwNiwgMTUwLCAxNDgsIDY3LCAxLCAxMjgsIDE1MCwgMTQ4LCA2NywgMSwgCisgICAgMjM4LCAyOCwgMTUwLCAxNDgsIDY3LCAxLCAxOTksIDI1NSwgMjQxLCAxMjYsIDE1MCwgODEsIDY3LCAxLCAyMDAsIDc2LCAKKyAgICAyNDEsIDEyNiwgMTUwLCA4MSwgNjcsIDEsIDIwMiwgMTg3LCA2NywgMSwgMjA0LCAxLCA2NywgMSwgNTMsIDI1MSwgMTMsIAorICAgIDY3LCAxLCAxMjgsIDEyNywgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDExNSwgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDQ5LCAKKyAgICAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgNTEsIDI1MCwgMjAyLCA2NywgMSwgMTI4LCAyMTMsIDI2LCA2NywgMSwgMTAxLCAyMzUsIAorICAgIDc0LCAyNTEsIDI1MSwgNjcsIDEsIDEwMSwgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCA2NywgMSwgMTAxLCA1MywgMjUxLCAKKyAgICAyMzksIDI1MSwgMjUxLCA2NywgMSwgMTI4LCAyMDUsIDI0MCwgNjcsIDEsIDIxMywgMjIwLCAyNDYsIDc5LCA2NywgMSwgCisgICAgMjQ4LCAyNDQsIDEyMiwgMjA1LCAxNzQsIDY3LCAxLCAyMzgsIDE3MSwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDI0OCwgMjQ0LCAKKyAgICAxMjgsIDIwNSwgMTc0LCA2NywgMSwgMjM4LCAxNzEsIDEyOCwgMjA1LCAxNzQsIDY3LCAxLCAyMTAsIDU2LCA2NywgMSwgCisgICAgMTc2LCAyMTAsIDU2LCA2NywgMSwgMTI4LCA0OSwgNDgsIDM4LCAyMzUsIDc0LCAyNTEsIDI1MSwgMzgsIDI1MSwgMjM5LCAKKyAgICAyNTEsIDI1MSwgMzgsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMzgsIDIwNSwgMjQwLCAzOCwgMjIyLCAyMjgsIDM4LCAyMTYsIAorICAgIDI0MSwgMzgsIDI0OCwgNTcsIDM4LCA3MywgNTYsIDM4LCAyNDEsIDc0LCAzOCwgMjMzLCAxODcsIDU2LCAzOCwgMjEzLCAyNywgCisgICAgNTYsIDM4LCA1MywgMjUxLCAyMzksIDI1MSwgMjUxLCAzOCwgMjQ3LCAxMjUsIDM4LCA4MywgMjI0LCAxNzcsIDU2LCAzOCwgCisgICAgNTMsIDgzLCAyMjQsIDE3NywgNTYsIDM4LCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDM4LCAyNDcsIDE0OSwgMzgsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDM4LCAyMDQsIDE4NSwgMjQ2LCA3MSwgNTYsIDM4LCAyNDYsIDcxLCA1NiwgMzgsIDIxMywgMTA1LCAKKyAgICAyNDYsIDcxLCA1NiwgMzgsIDI0NiwgNzEsIDg4LCAyMTMsIDQ2LCAzOCwgMjM1LCA3NCwgMjUxLCAyNTIsIDU3LCAzOCwgCisgICAgMjUxLCAyMzksIDI1MSwgMjUyLCA1NywgMzgsIDQ5LCAyMDcsIDE4LCA1NywgMzgsIDUxLCAyMDcsIDE4LCA1NywgMzgsIDQ5LCAKKyAgICAyNTEsIDcxLCA1NiwgMzgsIDIzMywgMTI0LCAzOCwgNDksIDE2NywgMjEzLCAyNywgNTcsIDM4LCAxMTUsIDIwNywgMTgsIAorICAgIDU3LCAzOCwgMTI3LCAyMDcsIDE4LCA1NywgMzgsIDkzLCAyLCA1NywgMzgsIDIyMSwgMTU3LCAyLCA1NywgMzgsIDIxNiwgCisgICAgMTgyLCAyMzMsIDE4NywgNTcsIDM4LCAyMTMsIDExMSwgMjMzLCAxODcsIDU3LCAzOCwgNzMsIDU3LCAzOCwgMjQxLCA3NSwgCisgICAgNTcsIDM4LCAyMTMsIDI3LCA1NywgMzgsIDI0NiwgNzEsIDU3LCAzOCwgMjQ3LCA2OSwgMzgsIDIxNywgMTEwLCAzOCwgODMsIAorICAgIDIyNCwgMTc3LCA1NywgMzgsIDI0OCwgNTEsIDU3LCAzOCwgMjI4LCA1MCwgNTMsIDI1MCwgMjM1LCA1NywgMzgsIDI0NywgCisgICAgMTI2LCA1NywgMzgsIDI0NiwgMTQ3LCAyNTEsIDI1MiwgNTcsIDM4LCAyNDgsIDU4LCA1NywgMzgsIDIyOCwgNTAsIDI0OCwgCisgICAgNTgsIDU3LCAzOCwgMjA1LCAyNDEsIDU3LCAzOCwgMjIyLCAyMjksIDU3LCAzOCwgMTI4LCAyMjQsIDE3NiwgMzgsIDUzLCAKKyAgICAxMjgsIDIyNCwgMTc2LCAzOCwgMjA1LCAyNDEsIDIxNiwgMjQyLCAzOCwgMjA5LCAyNTAsIDIwOCwgNDcsIDIxNiwgMjQyLCAKKyAgICAzOCwgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgMzgsIDIwOSwgMjUwLCAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDE2OCwgCisgICAgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCA1MSwgMTY3LCAyMTMsIDI3LCA1NywgMzgsIDIyOCwgNTAsIDI0OCwgNTEsIDU3LCAKKyAgICAzOCwgNTIsIDU3LCAzOCwgMjExLCAyMDEsIDU3LCAzOCwgMjAwLCAxOTYsIDU2LCAzOCwgODMsIDIwNSwgMjQwLCAzOCwgNTMsIAorICAgIDIxNiwgMjQxLCAzOCwgMjM1LCA3NCwgMTUwLCA4MSwgMzgsIDI1MSwgMjM5LCAxNTAsIDgxLCAzOCwgMzEsIDIxNiwgMjAsIAorICAgIDM4LCAzMSwgMjI2LCA1OCwgMzgsIDMxLCAyNDEsIDY4LCAyMDUsIDE2MiwgMzgsIDMxLCAxOTksIDIxOSwgMzgsIDI0OCwgCisgICAgNTEsIDU2LCAzOCwgMjM4LCAxMjIsIDIsIDU3LCAzOCwgNTMsIDgzLCAyMjQsIDE3NywgNTcsIDM4LCA0OSwgMjUxLCA3MSwgCisgICAgNTcsIDM4LCAyMTgsIDIxNSwgMjA1LCAyNDEsIDU2LCAzOCwgMjMzLCAxOTMsIDU2LCAzOCwgMjUxLCAxMTcsIDE2MCwgMjA1LCAKKyAgICAxODYsIDU2LCAzOCwgNDksIDUxLCA1NSwgNTcsIDM4LCAxODIsIDU1LCA1NywgMzgsIDIzNSwgODAsIDIyNywgMTYxLCAzOCwgCisgICAgNTEsIDI1MCwgMjAzLCA1NiwgMzgsIDQ5LCAxNjcsIDIxMywgMjcsIDU2LCAzOCwgMjM3LCAxMjIsIDM4LCAyMDAsIDE5NiwgCisgICAgNTcsIDM4LCA0OSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDI1MCwgMjAzLCA1NywgMzgsIDUxLCAyNTAsIDIwMywgMjYsIAorICAgIDExNSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDE2NywgMjEzLCAyNywgNTYsIDM4LCA3MywgODgsIDIxMywgNDYsIDM4LCAKKyAgICAyNTAsIDE2NiwgNTcsIDM4LCA1MywgMjEzLCAyNywgNTcsIDM4LCAxOTksIDI3LCA1NiwgMzgsIDUzLCAyNDgsIDU4LCA1NywgCisgICAgMzgsIDUzLCAyNDgsIDU3LCAzOCwgNTMsIDIyMiwgMjI4LCAzOCwgNTMsIDIyMiwgMjI5LCA1NywgMzgsIDUzLCAyMDUsIAorICAgIDI0MCwgMzgsIDUzLCAyMjgsIDUwLCAyNDgsIDU3LCAzOCwgNTMsIDg3LCA1NSwgNTcsIDM4LCA4LCA0LCAxLCA2MiwgMzgsIAorICAgIDgsIDQsIDEsIDcyLCAzOCwgOCwgNCwgMSwgNzAsIDM4LCA4LCA0LCAxLCA3NCwgMzgsIDgsIDQsIDEsIDY2LCAzOCwgOCwgNCwgCisgICAgMSwgMjQ3LCAyMjMsIDM4LCA4LCA0LCAxLCAyNDIsIDE1MywgMzgsIDgsIDQsIDEsIDIzNCwgMjQ3LCAzOCwgOCwgNCwgMSwgCisgICAgMjIzLCAyNDMsIDM4LCA4LCA0LCAxLCAxNDYsIDM4LCA4LCA0LCAxLCAyMDcsIDgzLCAzOCwgOCwgNCwgMSwgMjAzLCAxNjgsIAorICAgIDM4LCA4LCA0LCAxLCAyMDAsIDE5NSwgMzEsIDYsIDEsIDIzNCwgOTIsIDMxLCA0LCAxLCAyMzQsIDkyLCAzMSwgNiwgMSwgCisgICAgMjUwLCAyMzQsIDIxMiwgMTYsIDMxLCA0LCAxLCAyNTAsIDIzNCwgMjEyLCAxNiwgMzEsIDIxOCwgOTMsIDU0LCAzMSwgMjI0LCAKKyAgICA1NCwgMjE4LCA5MywgNTQsIDMxLCA2LCAxLCAyMTYsIDE2NywgMjQxLCA0MiwgMzEsIDQsIDEsIDIxNiwgMTY3LCAyNDEsIAorICAgIDQyLCAzMSwgMTk5LCAyMTksIDMxLCA0LCAyMTMsIDEwNSwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNCwgMjM5LCAKKyAgICAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDQsIDIxMywgMTA1LCAyMzksIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIAorICAgIDk5LCAzMSwgMjE0LCA3OSwgODEsIDMxLCA2LCAxLCAxOTksIDIyNSwgMzEsIDIwNSwgMTYyLCAzMSwgMjQxLCA2OCwgMjA1LCAKKyAgICAxNjIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjA1LCAxNjIsIDMxLCAyNTEsIDU2LCAyMDYsIDE3NywgMzEsIDYsIDEsIAorICAgIDIzOCwgMTI1LCAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjI4LCA0MiwgCisgICAgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyMDUsIAorICAgIDE2MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgMjYsIAorICAgIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjUxLCAxMTIsIDMxLCA2LCAxLCAyNDgsIDIwOCwgMzEsIDYsIDEsIDIzNiwgNjAsIDMxLCAKKyAgICA2LCAxLCAyNDEsIDEzNiwgMzEsIDYsIDEsIDIzOCwgMTI0LCAzMSwgNiwgMSwgMTk5LCA4MCwgMzEsIDYsIDEsIDIzOCwgNzksIAorICAgIDMxLCA2LCAxLCAyMDYsIDg4LCAzMSwgNiwgMSwgMjI4LCA0MSwgMzEsIDYsIDEsIDIyNywgNTQsIDMxLCA2LCAxLCAyMjUsIAorICAgIDg3LCAzMSwgNiwgMSwgMjIxLCA0MSwgMzEsIDYsIDEsIDIxOCwgMTMzLCAzMSwgNiwgMSwgMjAwLCAxNjksIDMxLCA2LCAxLCAKKyAgICAyMTcsIDgxLCAzMSwgNiwgMSwgMjE1LCAyMDQsIDMxLCA2LCAxLCAyMTMsIDkwLCAzMSwgNiwgMSwgMjA5LCAxNjMsIDMxLCAKKyAgICA2LCAxLCAyMDYsIDIyMSwgMzEsIDYsIDEsIDIwMywgMjIwLCAzMSwgNiwgMSwgMjE1LCAyMjksIDMxLCA2LCAxLCAyNDYsIAorICAgIDIzNiwgMzEsIDYsIDEsIDIxNCwgMjM1LCAzMSwgNiwgMSwgMjE3LCA4MywgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgCisgICAgNjcsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2NywgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDUsIDE2MiwgMzEsIAorICAgIDQsIDEsIDIzOCwgMTI1LCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgCisgICAgMjI4LCA0MiwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2OCwgMjYsIDIwNSwgMTYyLCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTIsIDMxLCA0LCAxLCAyNDgsIDIwOCwgMzEsIDQsIDEsIDIzNiwgNjAsIDMxLCA0LCAxLCAyNDEsIAorICAgIDEzNiwgMzEsIDQsIDEsIDIzOCwgMTI0LCAzMSwgNCwgMSwgMTk5LCA4MCwgMzEsIDQsIDEsIDIzOCwgNzksIDMxLCA0LCAxLCAKKyAgICAyMDYsIDg4LCAzMSwgNCwgMSwgMjI4LCA0MSwgMzEsIDQsIDEsIDIyNywgNTQsIDMxLCA0LCAxLCAyMjUsIDg3LCAzMSwgNCwgCisgICAgMSwgMjIxLCA0MSwgMzEsIDQsIDEsIDIxOCwgMTMzLCAzMSwgNCwgMSwgMjAwLCAxNjksIDMxLCA0LCAxLCAyMTcsIDgxLCAKKyAgICAzMSwgNCwgMSwgMjE1LCAyMDQsIDMxLCA0LCAxLCAyMTMsIDkwLCAzMSwgNCwgMSwgNDcsIDIwOSwgMTYzLCAzMSwgNCwgMSwgCisgICAgMjA5LCAxNjMsIDMxLCA0LCAxLCAyMDYsIDIyMSwgMzEsIDQsIDEsIDIwMywgMjIwLCAzMSwgNCwgMSwgMjE1LCAyMjksIDMxLCAKKyAgICA0LCAxLCAyNDYsIDIzNiwgMzEsIDQsIDEsIDIxNCwgMjM1LCAzMSwgNCwgMSwgMjE3LCA4MywgMzEsIDQsIDEsIDIyOCwgNDIsIAorICAgIDMsIDI0MSwgNjcsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2NywgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIwNSwgCisgICAgMTYyLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjA1LCAxNjIsIDMxLCAKKyAgICA2LCAyMjcsIDgzLCA5OSwgMzEsIDI0OCwgMjA5LCA5OSwgMzEsIDIwNiwgODksIDk5LCAzMSwgMjAzLCAyMjEsIDMsIDIzMywgCisgICAgMTg3LCA5OSwgMzEsIDIwMywgMjIxLCAzLCAyNTEsIDIzOSwgMjYsIDIzMywgMTg3LCA5OSwgMzEsIDIwMywgMjIxLCAzLCAKKyAgICAyNDEsIDc1LCAyNiwgMjMzLCAxODcsIDk5LCAzMSwgMjE1LCAyMzAsIDk5LCAzMSwgMjE1LCAyMDUsIDk5LCAzMSwgMjI3LCAKKyAgICA4MywgOTksIDMxLCAxLCAyNTAsIDIzNCwgMjI2LCA2MiwgMzEsIDQsIDEsIDI1MCwgMjM0LCAyMjYsIDYyLCAzMSwgMSwgCisgICAgMjA4LCA4NiwgMzEsIDQsIDEsIDIwOCwgODYsIDMxLCAxLCAyNDEsIDQyLCAzMSwgNCwgMSwgMjQxLCA0MiwgMzEsIDEsIAorICAgIDIyNiwgNjIsIDMxLCA0LCAxLCAyMjYsIDYyLCAzMSwgMSwgMjEyLCAxNiwgMzEsIDQsIDEsIDIxMiwgMTYsIDg1LCA2LCAxLCAKKyAgICAyMTAsIDU3LCA4NSwgNCwgMSwgMjEwLCA1NywgODUsIDYsIDEsIDIzNywgMTMyLCA4NSwgNCwgMSwgMjM3LCAxMzIsIDg1LCAKKyAgICA2LCAxLCAyMjYsIDE5MCwgODUsIDQsIDEsIDIyNiwgMTkwLCA4NSwgNiwgMSwgMjMzLCAxNzgsIDg1LCA0LCAxLCAyMzMsIAorICAgIDE3OCwgODUsIDYsIDEsIDIzNiwgNTUsIDg1LCA0LCAxLCAyMzYsIDU1LCA4NSwgNiwgMSwgMjEwLCAyMywgODUsIDQsIDEsIAorICAgIDIxMCwgMjMsIDg1LCA2LCAxLCAyNDEsIDE1MiwgODUsIDQsIDEsIDI0MSwgMTUyLCAzMSwgMjI3LCA1NSwgOTksIDMxLCAKKyAgICAyMTMsIDkxLCA5OSwgMzEsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDEsIDE5OSwgMjI1LCAzMSwgNiwgMjA2LCA4OSwgCisgICAgOTksIDMxLCAyMjQsIDI0LCAyMzgsIDEyNSwgOTksIDMxLCAyMTMsIDEwNSwgMjI0LCAyNCwgMjM4LCAxMjUsIDk5LCAzMSwgCisgICAgNiwgMSwgMjEwLCA4LCAzMSwgNCwgMSwgMjEwLCA4LCAzMSwgNiwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNiwgMSwgCisgICAgMjEyLCAxMywgMzEsIDQsIDEsIDIxMiwgMTMsIDMxLCAyMTMsIDkxLCAzLCAyMDgsIDQ3LCA5OSwgMzEsIDYsIDIxMywgMTA1LCAKKyAgICAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAyMzksIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNiwgCisgICAgMjEzLCAxMDUsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDM3LCA2LCAxLCAyMjgsIDE3OSwgMywgMjM1LCAKKyAgICA3MywgMzcsIDYsIDEsIDIyOCwgNDUsIDM3LCA2LCAxLCAyNDAsIDIyOCwgMzcsIDYsIDEsIDIzNSwgMTMyLCAzNywgNiwgMSwgCisgICAgMjA0LCAxNywgMjI4LCAxNzgsIDM3LCA2LCAxLCAyMzksIDkwLCAzNywgNiwgMSwgMjQ3LCAyMzMsIDcwLCAzNywgNiwgMSwgCisgICAgMjAwLCA5LCAzNywgNiwgMSwgMjI3LCAyMjcsIDM3LCA2LCAxLCAyMjQsIDE0MSwgMzcsIDYsIDEsIDIxOSwgOTEsIDM3LCA2LCAKKyAgICAxLCAyMDUsIDIwLCAzNywgNiwgMSwgMjI2LCAxMTEsIDM3LCA2LCAxLCAyMzMsIDE5LCAzLCAyMzUsIDczLCAzNywgNiwgMSwgCisgICAgMjA5LCAyNTAsIDY2LCAzNywgNiwgMSwgMjM5LCA4NiwgMzcsIDYsIDEsIDYyLCAzNywgNiwgMSwgMjQ5LCA4LCAzNywgNiwgCisgICAgMSwgMjAzLCA1OSwgMzcsIDYsIDEsIDIzNSwgMTg1LCAzNywgNiwgMSwgMjQxLCAxNzUsIDM3LCA2LCAxLCAyMjgsIDE3OCwgCisgICAgMzcsIDYsIDEsIDE5OSwgNjgsIDM3LCA2LCAxLCAxOTksIDg5LCAzNywgNiwgMSwgNzAsIDM3LCA2LCAxLCAyMDksIDI1MCwgCisgICAgNzAsIDM3LCA2LCAxLCAxNjEsIDM3LCA2LCAxLCAyMzgsIDIwOSwgMzcsIDYsIDEsIDIzOCwgMTkwLCAzNywgNiwgMSwgMjM4LCAKKyAgICAxNzksIDM3LCA2LCAxLCA3NCwgMzcsIDYsIDEsIDIxNiwgNzMsIDM3LCA2LCAxLCAyMzgsIDExNSwgMzcsIDYsIDEsIDIzOCwgCisgICAgMTA0LCAzNywgNiwgMSwgMjA2LCAyMDEsIDM3LCA2LCAxLCA2NiwgMzcsIDYsIDEsIDIzOCwgMjQ4LCAzNywgNiwgMSwgMTQ0LCAKKyAgICAzNywgNiwgMSwgMjA1LCAyNiwgMzcsIDYsIDEsIDI0NywgOCwgMzcsIDYsIDEsIDIxMCwgMTE0LCAzNywgNiwgMSwgMjEwLCAKKyAgICA2OCwgMzcsIDYsIDEsIDIzNCwgMTY1LCA1NCwgMzcsIDYsIDEsIDIwMCwgMjksIDM3LCA2LCAxLCAyMDksIDIzLCA1NCwgMzcsIAorICAgIDYsIDEsIDcyLCAzNywgNiwgMSwgMTk5LCAyMTEsIDM3LCA2LCAxLCAxODMsIDM3LCA0LCAxLCA2MiwgMzcsIDQsIDEsIDI0OSwgCisgICAgOCwgMzcsIDQsIDEsIDIwMywgNTksIDM3LCA0LCAxLCAyMzUsIDE4NSwgMzcsIDQsIDEsIDI0MSwgMTc1LCAzNywgNCwgMSwgCisgICAgMjI4LCAxNzgsIDM3LCA0LCAxLCAxOTksIDY4LCAzNywgNCwgMSwgMTk5LCA4OSwgMzcsIDQsIDEsIDcwLCAzNywgNCwgMSwgCisgICAgMjA5LCAyNTAsIDcwLCAzNywgNCwgMSwgMTYxLCAzNywgNCwgMSwgMjM4LCAyMDksIDM3LCA0LCAxLCAyMzgsIDE5MCwgMzcsIAorICAgIDQsIDEsIDIzOCwgMTc5LCAzNywgNCwgMSwgNzQsIDM3LCA0LCAxLCAyMTYsIDczLCAzNywgNCwgMSwgMjM4LCAxMTUsIDM3LCAKKyAgICA0LCAxLCAyMzgsIDEwNCwgMzcsIDQsIDEsIDIwNiwgMjAxLCAzNywgNCwgMSwgNjYsIDM3LCA0LCAxLCAyMzgsIDI0OCwgMzcsIAorICAgIDQsIDEsIDE0NCwgMzcsIDQsIDEsIDIwNSwgMjYsIDM3LCA0LCAxLCAyNDcsIDgsIDM3LCA0LCAxLCAyMTAsIDExNCwgMzcsIAorICAgIDQsIDEsIDIxMCwgNjgsIDM3LCA0LCAxLCAyMzQsIDE2NSwgNTQsIDM3LCA0LCAxLCAyMDAsIDI5LCAzNywgNCwgMSwgMjA5LCAKKyAgICAyMywgNTQsIDM3LCA0LCAxLCA3MiwgMzcsIDQsIDEsIDE5OSwgMjExLCAzNywgNCwgMSwgMTgzLCAzNywgNCwgMSwgMjI4LCAKKyAgICAxNzksIDMsIDIzNSwgNzMsIDM3LCA0LCAxLCAyMjgsIDQ1LCAzNywgNCwgMSwgMjQwLCAyMjgsIDM3LCA0LCAxLCAyMzUsIAorICAgIDEzMiwgMzcsIDQsIDEsIDIwNCwgMTcsIDIyOCwgMTc4LCAzNywgNCwgMSwgMjM5LCA5MCwgMzcsIDQsIDEsIDI0NywgMjMzLCAKKyAgICA3MCwgMzcsIDQsIDEsIDIwMCwgOSwgMzcsIDQsIDEsIDIyNywgMjI3LCAzNywgNCwgMSwgMjI0LCAxNDEsIDM3LCA0LCAxLCAKKyAgICAyMTksIDkxLCAzNywgNCwgMSwgMjA1LCAyMCwgMzcsIDQsIDEsIDIyNiwgMTExLCAzNywgNCwgMSwgMjMzLCAxOSwgMywgCisgICAgMjM1LCA3MywgMzcsIDQsIDEsIDIwOSwgMjUwLCA2NiwgMzcsIDQsIDEsIDIzOSwgODYsIDM3LCA2LCAxLCAyMTcsIDgzLCAKKyAgICAzNywgNCwgMSwgMjE3LCA4MywgMzcsIDYsIDEsIDIwMCwgNjUsIDM3LCA0LCAxLCAyMDAsIDY1LCAzNywgNiwgMSwgMjI4LCAKKyAgICAzOSwgNzIsIDM3LCA0LCAxLCAyMjgsIDM5LCA3MiwgMzcsIDYsIDEsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIAorICAgIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDIyOCwgMzksIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgCisgICAgMzksIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzcsIDQsIDEsIDI0OCwgMTc1LCAKKyAgICAxOTksIDE4MSwgMzcsIDYsIDEsIDIyOCwgMzksIDI0OCwgMTc1LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgMzksIDI0OCwgCisgICAgMTc1LCAxOTksIDE4MSwgMzcsIDYsIDEsIDIyNiwgMzEsIDM3LCA0LCAxLCAyMjYsIDMxLCAzNywgNiwgMSwgMjE0LCAyMzUsIAorICAgIDM3LCA0LCAxLCAyMTQsIDIzNSwgMzcsIDYsIDEsIDIzNywgNjMsIDM3LCA0LCAxLCAyMzcsIDYzLCAzNywgNiwgMSwgMjI3LCAKKyAgICAyNTMsIDM3LCA0LCAxLCAyMjcsIDI1MywgMzcsIDYsIDEsIDIyNywgMjU0LCAzLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIAorICAgIDM3LCA0LCAxLCAyMjcsIDI1NCwgMywgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCAzNywgNiwgMSwgMjA0LCAyMCwgMzcsIDQsIAorICAgIDEsIDIwNCwgMjAsIDM3LCA2LCAxLCAyMTIsIDIyMSwgMjE3LCA4MywgMzcsIDQsIDEsIDIxMiwgMjIxLCAyMTcsIDgzLCAzNywgCisgICAgNiwgMSwgMjE3LCA4NCwgMywgMjA1LCAyMTAsIDM3LCA0LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDIxMCwgMzcsIDYsIDEsIAorICAgIDIxNywgMTEsIDM3LCA0LCAxLCAyMTcsIDExLCAzNywgNiwgMSwgMjI2LCA2MiwgMzcsIDQsIDEsIDIyNiwgNjIsIDM3LCAKKyAgICAyMDYsIDQ5LCA1NCwgMzgsIDM3LCAyMDUsIDIxMCwgMzgsIDM3LCAyMTYsIDE4MywgMzgsIDM3LCAyNDEsIDI0MiwgMjE1LCAKKyAgICAxMDgsIDM4LCAzNywgMjE0LCAyMjksIDIxNSwgMTA4LCAzOCwgMzcsIDIxNSwgOTIsIDM4LCAzNywgMjMzLCA4MywgMjA2LCAKKyAgICA0OSwgNTQsIDM4LCAzNywgMjIxLCAxNjgsIDU0LCAzNywgNiwgMSwgMjA5LCAyNTAsIDIzMywgMTksIDMsIDIwNywgNiwgMzcsIAorICAgIDQsIDEsIDIwOSwgMjUwLCAyMzMsIDE5LCAzLCAyMDcsIDYsIDM3LCA2LCAxLCAyMTAsIDE2MywgNTQsIDM3LCA0LCAxLCAKKyAgICAyMTAsIDE2MywgNTQsIDM3LCA2LCAxLCAyMzgsIDExNiwgMywgMjA2LCAxMSwgMzcsIDQsIDEsIDIzOCwgMTE2LCAzLCAyMDYsIAorICAgIDExLCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIDIwMywgMjE5LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDIwMywgMjE5LCAzNywgCisgICAgNiwgMSwgMjM1LCAxODYsIDMsIDk3LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDk3LCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIAorICAgIDEwMSwgMTE3LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQxLCAKKyAgICAxMTksIDM3LCA0LCAxLCAxOTksIDY5LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDE5OSwgOTAsIDMsIDI0MSwgMTE5LCAzNywgCisgICAgNCwgMSwgMTk5LCA5MCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMjcsIDEwOCwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAKKyAgICAyMjcsIDEwOCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMjcsIDEwOCwgMywgODMsIDk3LCAzNywgNCwgMSwgMjI3LCAxMDgsIAorICAgIDMsIDgzLCA5NywgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCA5NywgMzcsIDQsIDEsIDIyNywgMTA4LCAzLCA5NywgMzcsIDYsIAorICAgIDEsIDI0OSwgNjAsIDE2MSwgMzcsIDQsIDEsIDI0OSwgNjAsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAyNDEsIDExOSwgCisgICAgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAyNDEsIDExOSwgMzcsIDYsIDMzLCAyMzgsIDE4MCwgMjM1LCAxODUsIDM3LCA0LCAKKyAgICAzMywgMjM4LCAxODAsIDIzNSwgMTg1LCAzNywgNiwgMSwgMjE2LCA3NCwgMywgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMTYsIAorICAgIDc0LCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDI1MiwgMiwgMTQ0LCAzNywgNCwgMSwgMjUyLCAyLCAxNDQsIDM3LCA2LCAxLCAKKyAgICAyMzgsIDEwNSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzgsIDEwNSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMDYsIAorICAgIDIwMiwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMDYsIDIwMiwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMDgsIDY4LCA2NiwgCisgICAgMzcsIDQsIDEsIDIwOCwgNjgsIDY2LCAzNywgNiwgMSwgMjA4LCA2OCwgMTA4LCAzLCA5NywgMzcsIDQsIDEsIDIwOCwgNjgsIAorICAgIDEwOCwgMywgOTcsIDM3LCA2LCAxLCAyMzQsIDIzNiwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzQsIDIzNiwgMywgMjQxLCAKKyAgICAxMTksIDM3LCA2LCAzMywgMjA2LCAyMDIsIDIwNSwgMjYsIDM3LCA0LCAzMywgMjA2LCAyMDIsIDIwNSwgMjYsIDM3LCA2LCAKKyAgICAxLCAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDI0NywgOSwgCisgICAgMywgODMsIDk3LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCA4MywgOTcsIDM3LCA2LCAxLCAyMTAsIDM0LCAzNywgNCwgMSwgMjEwLCAKKyAgICAzNCwgMzcsIDYsIDEsIDI1MiwgMiwgMjQ3LCA4LCAzNywgNCwgMSwgMjUyLCAyLCAyNDcsIDgsIDM3LCA2LCAxLCAyNTIsIDIsIAorICAgIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyNTIsIDIsIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCAxLCAyMTYsIAorICAgIDE3NCwgMzcsIDYsIDEsIDE5OSwgNjksIDMsIDI0OCwgNTcsIDM3LCA0LCAxLCAxOTksIDY5LCAzLCAyNDgsIDU3LCAzNywgNiwgCisgICAgMSwgMjI3LCAxMDgsIDMsIDExNywgMzcsIDQsIDEsIDIyNywgMTA4LCAzLCAxMTcsIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgCisgICAgMjA3LCA2LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAxMTcsIDM3LCA0LCAKKyAgICAxLCAyMzgsIDE4MCwgMywgMTE3LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDIwNywgNiwgMzcsIDQsIDEsIDIzOCwgMTgwLCAKKyAgICAzLCAyMDcsIDYsIDM3LCA2LCAxLCAyMjYsIDIwMSwgMjQ3LCA4LCAzNywgNCwgMSwgMjI2LCAyMDEsIDI0NywgOCwgMzcsIDYsIAorICAgIDEsIDIzOCwgMTkxLCAzLCAyMDcsIDYsIDM3LCA0LCAxLCAyMzgsIDE5MSwgMywgMjA3LCA2LCAzNywgNCwgMSwgMjE2LCAKKyAgICAxNzQsIDM3LCA2LCAxLCAzNSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDM1LCAzLCAyNDgsIDU3LCAzNywgNiwgMSwgMzUsIDMsIAorICAgIDI0MSwgNzQsIDM3LCA0LCAxLCAzNSwgMywgMjQxLCA3NCwgMzcsIDYsIDMzLCAzNSwgMjI4LCAxNzgsIDM3LCA0LCAzMywgCisgICAgMzUsIDIyOCwgMTc4LCAzNywgNiwgMSwgMjI4LCAxNzksIDMsIDI0OCwgNTcsIDM3LCA0LCAxLCAyMjgsIDE3OSwgMywgMjQ4LCAKKyAgICA1NywgMzcsIDYsIDEsIDIxMSwgMjE4LCAzNywgNCwgMSwgMjExLCAyMTgsIDM3LCA2LCAxLCAyMTEsIDIxOSwgMywgMjQxLCAKKyAgICA3NCwgMzcsIDQsIDEsIDIxMSwgMjE5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQxLCA3NCwgMzcsIDQsIAorICAgIDEsIDE5OSwgNjksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxOTksIDkwLCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMTk5LCA5MCwgCisgICAgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDI1MiwgMiwgMjM5LCA5MCwgMzcsIDQsIDEsIDI1MiwgMiwgMjM5LCA5MCwgMzcsIDYsIAorICAgIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCAzNywgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDM3LCA2LCAxLCAyMzMsIAorICAgIDE5LCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDE2MywgMywgMjQxLCA3NCwgCisgICAgMzcsIDQsIDEsIDE2MywgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDI0OSwgNzEsIDc0LCAzNywgNCwgMSwgMjQ5LCA3MSwgNzQsIAorICAgIDM3LCA2LCAxLCAyNDksIDcxLCAxNjMsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyNDksIDcxLCAxNjMsIDMsIDI0MSwgNzQsIAorICAgIDM3LCA2LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI4LCAzNywgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOCwgMzcsIDYsIDEsIDEwOCwgMywgMjQxLCA3NCwgMzcsIDQsIAorICAgIDEsIDEwOCwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDEwOCwgMywgNTMsIDE2OSwgMzcsIDQsIDEsIDEwOCwgMywgNTMsIDE2OSwgCisgICAgMzcsIDYsIDEsIDI0NywgOSwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDI0NywgOSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIAorICAgIDIzNSwgMTg2LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwMCwgCisgICAgMzAsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyMDAsIDMwLCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIAorICAgIDIwOCwgNDcsIDI2LCAxMTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMjA4LCA0NywgMjYsIDExNywgMzcsIDYsIDEsIDIzNCwgCisgICAgMjM2LCAzLCAxMTcsIDM3LCA0LCAxLCAyMzQsIDIzNiwgMywgMTE3LCAzNywgNiwgMSwgMjM0LCAyMzYsIDMsIDk3LCAzNywgCisgICAgNCwgMSwgMjM0LCAyMzYsIDMsIDk3LCAzNywgNiwgMSwgMjI2LCA3MiwgMjQxLCAxNzUsIDM3LCA0LCAxLCAyMjYsIDcyLCAKKyAgICAyNDEsIDE3NSwgMzcsIDYsIDEsIDIyNiwgNzIsIDI0MCwgMjI4LCAzNywgNCwgMSwgMjI2LCA3MiwgMjQwLCAyMjgsIDM3LCAKKyAgICA2LCAxLCAyMjYsIDcyLCAxOTksIDE4LCAzNywgNCwgMSwgMjI2LCA3MiwgMTk5LCAxOCwgMzcsIDYsIDEsIDIyNiwgNzIsIAorICAgIDIzOSwgODIsIDM3LCA0LCAxLCAyMjYsIDcyLCAyMzksIDgyLCAzNywgNiwgMSwgMjI2LCA3MiwgMjI0LCAxNDEsIDM3LCA0LCAKKyAgICAxLCAyMjYsIDcyLCAyMjQsIDE0MSwgMzcsIDYsIDEsIDIyNiwgNzIsIDIxOSwgOTEsIDM3LCA0LCAxLCAyMjYsIDcyLCAyMTksIAorICAgIDkxLCAzNywgNiwgMSwgMjI2LCA3MiwgMjA5LCA4OSwgMzcsIDQsIDEsIDIyNiwgNzIsIDIwOSwgODksIDM3LCA2LCAxLCAKKyAgICAyMjYsIDcyLCAyMDUsIDIwNCwgMzcsIDQsIDEsIDIyNiwgNzIsIDIwNSwgMjA0LCAzNywgNiwgMSwgMjEzLCAxMDUsIDE5OSwgCisgICAgODksIDM3LCA0LCAxLCAyMTMsIDEwNSwgMTk5LCA4OSwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAxMTcsIDM3LCA0LCAxLCAKKyAgICAyMzgsIDIxMCwgMywgMTE3LCAzNywgNiwgMSwgMjI0LCAyMjMsIDM3LCA0LCAxLCAyMjQsIDIyMywgMzcsIDYsIDEsIDIxMywgCisgICAgOTMsIDM3LCA0LCAxLCAyMTMsIDkzLCAzNywgNiwgMSwgMjAwLCA5OCwgMzcsIDQsIDEsIDIwMCwgOTgsIDM3LCA2LCAxLCAKKyAgICAyMTQsIDE1OSwgMzcsIDQsIDEsIDIxNCwgMTU5LCAzNywgNiwgMSwgMjAxLCA2NCwgMzcsIDQsIDEsIDIwMSwgNjQsIDM3LCAKKyAgICA2LCAxLCAyNTEsIDEzOCwgMTYxLCAzNywgNCwgMSwgMjUxLCAxMzgsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAxMDEsIAorICAgIDExNywgMzcsIDQsIDEsIDIzOCwgMjEwLCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAxMDEsIDExNywgCisgICAgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDIxNiwgNzQsIDMsIDI0MSwgMTE5LCAzNywgNCwgCisgICAgMSwgMjE2LCA3NCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMTAsIDM1LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIxMCwgCisgICAgMzUsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDQ5LCAxMTcsIDM3LCA0LCAxLCAyMzgsIDE4MCwgMywgCisgICAgNDksIDExNywgMzcsIDYsIDEsIDIzOSwgNzUsIDM3LCA0LCAxLCAyMzksIDc1LCAzNywgNiwgMSwgMjQxLCAyMjQsIDM3LCA0LCAKKyAgICAxLCAyNDEsIDIyNCwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzOCwgMjEwLCAzLCAyNDEsIAorICAgIDExOSwgMTg0LCA2LCAxLCAyNTAsIDEwOSwgMTg0LCA2LCAxLCAyNDgsIDIyNCwgMTg0LCA2LCAxLCAyMzUsIDE0OSwgMTg0LCAKKyAgICA2LCAxLCAyNDIsIDU4LCAxODQsIDYsIDEsIDIzOSwgNSwgMTg0LCA2LCAxLCAxOTksIDExNCwgMTg0LCA2LCAxLCAyMzgsIAorICAgIDI0MSwgMTg0LCA2LCAxLCAyMzgsIDgxLCAxODQsIDYsIDEsIDEzOCwgMTg0LCA2LCAxLCAxOTksIDY4LCAxODQsIDYsIDEsIAorICAgIDIyOCwgODYsIDE4NCwgNiwgMSwgMjI0LCAxNDUsIDE4NCwgNiwgMSwgMjAwLCAxNzMsIDE4NCwgNiwgMSwgMjQ3LCAxOTAsIAorICAgIDE4NCwgNiwgMSwgMjI2LCAyNDMsIDE4NCwgNiwgMSwgMjMzLCAyMDcsIDE4NCwgNiwgMSwgMjI3LCAyNDgsIDE4NCwgNiwgMSwgCisgICAgMjM1LCAxOTYsIDE4NCwgNiwgMSwgMjQ2LCAyNTQsIDE4NCwgNiwgMSwgMjIyLCA0MCwgMTg0LCA2LCAxLCAyMDAsIDksIAorICAgIDE4NCwgNiwgMSwgMjE4LCAyMDEsIDE4NCwgNiwgMSwgMjEwLCAxMTQsIDE4NCwgNiwgMSwgMjAyLCAxOTMsIDE4NCwgNiwgMSwgCisgICAgMjQ3LCAzNywgMTg0LCA2LCAxLCAyMTYsIDU0LCAxODQsIDYsIDEsIDIyNywgMjEwLCAxODQsIDYsIDEsIDIxMywgMjUyLCAKKyAgICAxODQsIDYsIDEsIDIxMSwgMTgwLCAxODQsIDYsIDEsIDIwMiwgMjM4LCAxODQsIDYsIDEsIDIwNSwgMjA3LCAxODQsIDYsIDEsIAorICAgIDIxMywgMTU0LCAxODQsIDYsIDEsIDI0NiwgOTEsIDE4NCwgNiwgMSwgMTk5LCAyNTAsIDE4NCwgNiwgMSwgMjE1LCAxMzksIAorICAgIDE4NCwgNiwgMSwgMjI2LCAyNTQsIDE4NCwgNiwgMSwgMjE3LCAxMDgsIDE4NCwgNiwgMSwgMjM3LCAxMzQsIDE4NCwgNjcsIAorICAgIDEsIDQ5LCAxNjcsIDIxMywgMjYsIDE4NCwgMjUxLCAxMywgMTg0LCAyMzgsIDE4MywgODEsIDE4NCwgMjM4LCA0MywgODEsIAorICAgIDE4NCwgMjQ2LCA3MCwgMTg0LCAyMTQsIDc5LCA4MSwgMTg0LCAyNTIsIDMsIDgxLCAxODQsIDQsIDEsIDI1MCwgMTA5LCAKKyAgICAxODQsIDQsIDEsIDI0OCwgMjI0LCAxODQsIDQsIDEsIDIzNSwgMTQ5LCAxODQsIDQsIDEsIDI0MiwgNTgsIDE4NCwgNCwgMSwgCisgICAgMjM5LCA1LCAxODQsIDQsIDEsIDE5OSwgMTE0LCAxODQsIDQsIDEsIDIzOCwgMjQxLCAxODQsIDQsIDEsIDIzOCwgODEsIAorICAgIDE4NCwgNCwgMSwgMTM4LCAxODQsIDQsIDEsIDE5OSwgNjgsIDE4NCwgNCwgMSwgMjI4LCA4NiwgMTg0LCA0LCAxLCAyMjQsIAorICAgIDE0NSwgMTg0LCA0LCAxLCAyMDAsIDE3MywgMTg0LCA0LCAxLCAyNDcsIDE5MCwgMTg0LCA0LCAxLCAyMjYsIDI0MywgMTg0LCAKKyAgICA0LCAxLCAyMzMsIDIwNywgMTg0LCA0LCAxLCAyMjcsIDI0OCwgMTg0LCA0LCAxLCAyMzUsIDE5NiwgMTg0LCA0LCAxLCAyNDYsIAorICAgIDI1NCwgMTg0LCA0LCAxLCAyMjIsIDQwLCAxODQsIDQsIDEsIDIwMCwgOSwgMTg0LCA0LCAxLCAyMTgsIDIwMSwgMTg0LCA0LCAKKyAgICAxLCAyMTAsIDExNCwgMTg0LCA0LCAxLCAyMDIsIDE5MywgMTg0LCA0LCAxLCAyNDcsIDM3LCAxODQsIDQsIDEsIDIxNiwgNTQsIAorICAgIDE4NCwgNCwgMSwgMjI3LCAyMTAsIDE4NCwgNCwgMSwgMjEzLCAyNTIsIDE4NCwgNCwgMSwgMjExLCAxODAsIDE4NCwgNCwgMSwgCisgICAgMjAyLCAyMzgsIDE4NCwgNCwgMSwgMjA1LCAyMDcsIDE4NCwgNCwgMSwgMjEzLCAxNTQsIDE4NCwgNCwgMSwgMjQ2LCA5MSwgCisgICAgMTg0LCA0LCAxLCAxOTksIDI1MCwgMTg0LCA0LCAxLCAyMTUsIDEzOSwgMTg0LCA0LCAxLCAyMjYsIDI1NCwgMTg0LCA0LCAxLCAKKyAgICAyMTcsIDEwOCwgMTg0LCA0LCAxLCAyMzcsIDEzNCwgMTg0LCA0LCAzMywgMjM5LCA2LCAxOTksIDI1MCwgMTg0LCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMTg0LCAyMzMsIDMzLCAyMTMsIDQ1LCAxODQsIDIzOCwgNzcsIDU0LCAyMjUsIDI3LCAxODQsIDIzOCwgCisgICAgNzcsIDU0LCAxODQsIDIzOSwgMTU3LCA1NCwgMTEzLCAyNTEsIDI1MiwgMjM4LCA3MiwgMTEzLCAyNTEsIDI1MiwgMjExLCAKKyAgICAxODEsIDExMywgMjUxLCAyNTIsIDIxMCwgOTIsIDExMywgMjUxLCAyNTIsIDE5OSwgMTAwLCAyMTQsIDE0MiwgMTEzLCAyNTEsIAorICAgIDI1MiwgMTk5LCAxMDAsIDIzNiwgNzksIDExMywgMjUxLCAyNTIsIDIwNSwgMjIyLCAxMTMsIDI1MSwgMjUyLCAyMTMsIDEwMiwgCisgICAgMTEzLCAyNTEsIDI1MiwgMTk5LCA5OCwgMTEzLCAyNTEsIDI1MiwgMjE2LCAxMDAsIDExMywgMjUxLCAyNTIsIDIwMCwgMjIsIAorICAgIDExMywgMjUxLCAyNTIsIDIwNiwgMTI5LCAxMTMsIDI1MSwgMjUyLCAyMzUsIDI0NywgMTEzLCAyNTEsIDI1MiwgMjM1LCAKKyAgICAyNDgsIDIyMSwgMywgMTEzLCAyNTEsIDI1MiwgMjM1LCAyNDUsIDExMywgMjUxLCAyNTIsIDIxNCwgMTQzLCAyMTYsIDEyOSwgCisgICAgMTEzLCAyNTEsIDI1MiwgMjA2LCAxNzIsIDIzNiwgOCwgMTEzLCAyNTEsIDI1MiwgMjE2LCA3OSwgMTEzLCAyNTEsIDI1MiwgCisgICAgMjUwLCAxNDgsIDIzNCwgMjI4LCAxMTMsIDI1MSwgMjUyLCAyMjEsIDEzLCAxMTMsIDI1MSwgMjUyLCAyMjIsIDIwMywgMTEzLCAKKyAgICAyNTEsIDI1MiwgMjIyLCAyOSwgMTEzLCAyNTEsIDI1MiwgMjIyLCAzMCwgMjI2LCAyNTUsIDExMywgMjUxLCAyNTIsIDI0MSwgCisgICAgMjUxLCAxMTMsIDI1MSwgMjUyLCAyMTQsIDE1NCwgMTEzLCAyNTEsIDI1MiwgMjA2LCAxNzIsIDIxNCwgMTM3LCAxMTMsIAorICAgIDI1MSwgMjUyLCAyMDAsIDMyLCAyNDgsIDIyNSwgMTk5LCAyMzEsIDExMywgMjUxLCAyNTIsIDIxNywgOTAsIDExMywgMjUxLCAKKyAgICAyNTIsIDIyOCwgMTM3LCAxMTMsIDI1MSwgMjUyLCAyNDEsIDE1MywgMTEzLCAyNTEsIDI1MiwgMTk5LCAyNSwgMTEzLCAxMzQsIAorICAgIDIyMiwgMTMxLCAyNDYsIDE1NSwgMTEzLCAyMTUsIDEwMCwgMjEwLCAzNywgMTEzLCAyMTUsIDEwMCwgMjM0LCAxNTYsIDIxMSwgCisgICAgMTgxLCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjE2LCA5MywgMTEzLCAyMTUsIDEwMCwgMjM0LCAxNTYsIDIxNCwgMTQ3LCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMzQsIDQ3LCAxMTMsIDIxNSwgMTAwLCAyMDUsIDIzLCAxMTMsIDIxNSwgMTAwLCAyMTEsIDE4MSwgCisgICAgMTEzLCAyMTUsIDEwMCwgMjE2LCA5MywgMTEzLCAyMTUsIDEwMCwgMjE0LCAxNDcsIDExMywgMjE1LCAxMDAsIDIzMywgMTk5LCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMzMsIDIwMCwgMjM0LCAxNTgsIDM2LCAyMDMsIDYzLCAxMTMsIDIxNSwgMTAwLCAyMTQsIDgzLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyNDIsIDQzLCAyMTcsIDM0LCAyMjIsIDE2MywgMTEzLCAyMTUsIDEwMCwgMjIyLCAxOSwgMTEzLCAKKyAgICAyMTQsIDIxMiwgMjIyLCAxNjAsIDExMywgMjE1LCAxMDAsIDIxMywgMjMyLCAxMTMsIDIxNCwgMjEyLCAyMTYsIDEwMiwgCisgICAgMTEzLCAyMTUsIDEwMCwgMjEwLCAyMiwgMjQwLCAxODIsIDExMywgMjE1LCAxMDAsIDIwOSwgMTQzLCAyNDAsIDE4MiwgMTEzLCAKKyAgICAyMTQsIDIxMiwgMjA5LCAyNCwgMjE2LCA5NSwgMTEzLCAxMzQsIDIwMywgMjI1LCAyNDAsIDE4MiwgMTEzLCAxMzQsIDIyNCwgCisgICAgNTQsIDI0MCwgMTgyLCAxMTMsIDIxNCwgMjEyLCAyMTgsIDkwLCAyMzQsIDIyNywgMTEzLCAyMTUsIDEwMCwgMjE0LCAxNDgsIAorICAgIDIxNCwgMTQyLCAxMTMsIDEsIDI1MSwgMTQyLCAxMTMsIDEsIDI0OCwgMjEwLCAxMTMsIDEsIDIzNSwgMTQ3LCAxMTMsIDEsIAorICAgIDI0MiwgMjMsIDExMywgMSwgMjM0LCAxMzksIDExMywgMSwgMjAzLCA2MywgMTEzLCAxLCAxOTksIDkyLCAxMTMsIDEsIDIzNCwgCisgICAgOTMsIDExMywgMSwgMjA2LCAxNDYsIDExMywgMSwgMTk5LCAyMzQsIDExMywgMSwgNDcsIDIyNywgODYsIDExMywgMSwgMjI3LCAKKyAgICA4NiwgMTEzLCAxLCAyMjUsIDgzLCAxMTMsIDEsIDQ3LCAyMjIsIDQ3LCAxMTMsIDEsIDIyMiwgNDcsIDExMywgMSwgNDcsIAorICAgIDIxOCwgODksIDExMywgMSwgMjE4LCA4OSwgMTEzLCAxLCAyMTIsIDE5LCAxMTMsIDEsIDI1MCwgMTA3LCAxMTMsIDEsIDQ3LCAKKyAgICAyMTYsIDczLCAxMTMsIDEsIDIxNiwgNzMsIDExMywgMSwgNDcsIDIwNSwgMjcsIDExMywgMSwgMjA1LCAyNywgMTEzLCAxLCAKKyAgICAyMTQsIDEwNiwgMTEzLCAxLCAyMTMsIDEyMywgMTEzLCAxLCAyMTAsIDIxLCAxMTMsIDEsIDIwNiwgMjE3LCAxMTMsIDMzLCAKKyAgICAyMDAsIDcsIDUzLCAyMDMsIDYzLCAxMTMsIDMzLCAyMDAsIDcsIDIwMywgNjQsIDE5OSwgMjM0LCAxMTMsIDMzLCAyMDAsIDcsIAorICAgIDUzLCAxOTksIDIzNCwgMTEzLCAyMTQsIDIxMiwgMjM1LCAyNDcsIDExMywgMjE0LCAyMTIsIDIzNSwgMjQ1LCA5LCA0MSwgCisgICAgNTQsIDksIDIsIDIxMiwgMTIsIDksIDIzNiwgMjUzLCAyMjIsIDE0NSwgOSwgMiwgMjEyLCA1MiwgOSwgMiwgMjEyLCAxNSwgCisgICAgOSwgNDEsIDEzNCwgNTYsIDI1MCwgMjQ4LCAyNDIsIDIxMCwgMjEyLCAyMzQsIDI1MCwgMjQ4LCAyMzYsIDIyMiwgMjEyLCAKKyAgICAyMzQsIDksIDIxMywgMTk3LCAyNTAsIDI0OCwgMjE2LCAyOCwgMjIxLCAxNzAsIDU0LCAyNTAsIDI0OCwgMjE2LCAyOCwgCisgICAgMjA2LCAxNjcsIDIwNiwgNTEsIDU0LCAyNTEsIDE5OCwgNTQsIDksIDI0NiwgNzAsIDksIDI0MSwgMjM4LCAyMTAsIDE1NCwgCisgICAgOSwgMjE1LCAxMDIsIDIwMywgNDQsIDU0LCA5LCAyLCAyMjEsIDE0OSwgOSwgMiwgMjEyLCAyOSwgMjUxLCAxNDUsIDIwMSwgCisgICAgODgsIDksIDIsIDI1MSwgMTQ1LCAyNTAsIDE3MCwgOSwgMiwgMjEzLCAyMzAsIDI1MSwgMTQ0LCA5LCAyLCAyMTMsIDIzOCwgCisgICAgMjUxLCAxMjIsIDI1MSwgNjMsIDksIDIsIDIwNiwgMjU0LCA5LCA0LCAxMjIsIDIwNywgOSwgOSwgNCwgMTIyLCAzMywgMTQwLCAKKyAgICAzLCAyMjUsIDkyLCAzLCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDE5OSwgMTA1LCA5LCA0LCAyMzcsIDE1OCwgOSwgNCwgMjQyLCAKKyAgICAxNywgOSwgNCwgMjI3LCAzNiwgOSwgMjEwLCAxNjcsIDksIDEsIDgxLCA5LCAyMDUsIDgzLCA3MywgMjE0LCAyMTIsIDgxLCAKKyAgICA5LCAyMTQsIDc5LCA4MSwgOSwgMSwgMjI3LCA0MCwgMjAwLCA0NiwgOSwgMSwgMjM0LCAyMDMsIDksIDEsIDE0MCwgMywgCisgICAgMjIyLCAyMjQsIDU2LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDU2LCAKKyAgICA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA1NywgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjUxLCAxNDIsIDksIAorICAgIDEsIDI0OCwgMjQwLCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTYsIDksIDEsIDIwNiwgMTgzLCA5LCAxLCAyMDYsIDEwMiwgOSwgCisgICAgMSwgMjI3LCAyMjQsIDksIDEsIDIzNCwgMjI0LCA5LCAxLCAyMjYsIDIwMywgOSwgMSwgMjQyLCAyOSwgOSwgMSwgMjA2LCAKKyAgICAxMTQsIDksIDEsIDIxMywgMTU0LCA5LCAxLCAxOTksIDEwNSwgOSwgMSwgMjExLCAxODYsIDksIDEsIDIxMCwgNjEsIDksIDEsIAorICAgIDIxMiwgNTYsIDksIDEsIDI0MiwgNTIsIDksIDEsIDIwNywgOSwgOSwgMSwgMTk5LCAxMDgsIDksIDEsIDI1MSwgMTcxLCA5LCAKKyAgICAxLCAyMzUsIDE5NCwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgCisgICAgMTkwLCA1NywgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAKKyAgICAxMjAsIDE5MCwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMTI2LCAxOTAsIDU2LCA5LCAyMDYsIDIyMywgOSwgMSwgCisgICAgMjM3LCAxMzQsIDksIDEsIDIxNCwgMTUyLCA5LCAxLCAyMjcsIDg2LCA5LCAxLCAyMjUsIDkxLCA5LCAxLCAyMjIsIDYxLCA5LCAKKyAgICAxLCAyMTgsIDIyNywgOSwgMSwgMjM0LCAxMTUsIDksIDEsIDIwMSwgNzIsIDksIDEsIDE0MCwgMjIyLCAxODcsIDksIDEsIAorICAgIDIwMCwgNDYsIDksIDIzNywgMTU2LCA5LCAyNDIsIDE1LCA5LCAyMjcsIDM0LCA5LCAyMzcsIDE1OCwgOSwgMjQyLCAxNywgOSwgCisgICAgMjI3LCAzNiwgOSwgMjEwLCAxMDQsIDksIDIwNywgMjM2LCA5LCAyMjIsIDIyMiwgNTYsIDksIDIzNCwgMjA0LCA1NiwgOSwgCisgICAgMjM0LCAyMDQsIDU3LCA5LCAyMDgsIDQsIDI1MSwgMTQyLCA5LCAyMjgsIDUwLCAyNDIsIDE3LCA5LCAxMzQsIDIxOCwgMjI4LCAKKyAgICAyMzUsIDE2NSwgOSwgMTk4LCAyNDUsIDksIDIyLCAyLCA0LCAyMDMsIDE2OSwgNTYsIDksIDIyLCAyLCAyMjgsIDUwLCA0LCAKKyAgICAyMDMsIDE2OSwgNTYsIDksIDIyLCAyLCA3MywgNTcsIDksIDIxMywgMTA1LCAyNDIsIDE3LCA5LCAyMzcsIDE1OSwgMywgCisgICAgMTIwLCAyNDAsIDE4MCwgOSwgMjAxLCA3NCwgMjM0LCAyMDQsIDU3LCAyNTAsIDI0OCwgMTcsIDE5OSwgODEsIDI1MCwgMjQ4LCAKKyAgICAxNywgMTAyLCAyNTAsIDI0OCwgMTcsIDEwNSwgMjUwLCAyNDgsIDE3LCAxNDcsIDI1MCwgMjQ4LCAxNywgMTQ5LCAyNTAsIAorICAgIDI0OCwgMTcsIDE2NCwgMjUwLCAyNDgsIDE3LCAxODcsIDI1MCwgMjQ4LCAxNywgMjEwLCAxMzUsIDI1MCwgMjQ4LCAxNywgCisgICAgMTkyLCAyNTAsIDI0OCwgMTcsIDIxOSwgMTEzLCA5LCAyMTYsIDI3LCA1NCwgOSwgMjQxLCAxNjgsIDIxMCwgMTU0LCA5LCAKKyAgICAyMDYsIDQ5LCAyMTAsIDE1NCwgOSwgMjM3LCA2MSwgMjE1LCA5OCwgMjA4LCAxMDksIDksIDEsIDI0MCwgMTgxLCAyNDgsIAorICAgIDI0MCwgOSwgMSwgMjQwLCAxODEsIDIxNCwgMTUyLCA5LCAxLCAyMDcsIDIxMywgMjUxLCAxNDIsIDksIDEsIDE0MCwgMjAxLCAKKyAgICA4OSwgOSwgMSwgMTQwLCAzLCAyMDEsIDc0LCAyMzQsIDIwNCwgNTYsIDksIDEsIDE0MCwgMywgMjAxLCA3NCwgMjM0LCAyMDQsIAorICAgIDU3LCA5LCAxLCAxMjIsIDIzNCwgMjAzLCA5LCAxLCAxMjIsIDIzNCwgMjA0LCAyNTEsIDE0MiwgOSwgMSwgMTIyLCAyMzQsIAorICAgIDIwNCwgMjAxLCA3MiwgOSwgMSwgMTA4LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDEyMiwgMjM0LCAyMDQsIDIwMCwgNDYsIAorICAgIDksIDEsIDIwNCwgMjQ1LCA5LCAxLCAyMDQsIDI0MywgOSwgMSwgMjQ4LCAyNTAsIDksIDEsIDIwNiwgMTg0LCAzLCAyMTMsIAorICAgIDI2LCA5LCAxLCAyMDYsIDE4NCwgMywgMTI2LCAxOTAsIDg4LCAyMzksIDE2NSwgOSwgMSwgMjE2LCA1NCwgOSwgMSwgMjA2LCAKKyAgICAxODEsIDksIDEsIDI0OCwgMjM4LCA5LCAxLCAxNTUsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTU1LCAzLCAxMjAsIDE5MCwgCisgICAgODMsIDU2LCA5LCAxLCAyMTgsIDQ3LCA5LCAxLCAyMzksIDk5LCA5LCAxLCAxNTUsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjA2LCAyMDUsIDksIDEsIDIwNiwgMjAzLCA5LCAxLCAyNDEsIDIxNSwgOSwgMSwgMjQyLCAzMCwgMywgMjEzLCAyNiwgOSwgCisgICAgMSwgMjQyLCAzMCwgMywgNzMsIDU3LCA5LCAxLCAyNDIsIDMwLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA0LCAyMDcsIDksIDksIAorICAgIDEsIDI0MiwgMzYsIDksIDEsIDI0MSwgMjE3LCA5LCAxLCAyMzksIDEyNywgOSwgMSwgMjQyLCAzMCwgMywgMTI2LCAxOTAsIAorICAgIDg4LCAyMzksIDE2NSwgOSwgMSwgMjQyLCAzMCwgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIDEsIDIxMiwgMjA3LCA5LCAxLCAKKyAgICAyMTMsIDE1NSwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDIxMywgMTU1LCAzLCAyMTMsIDI2LCA5LCAxLCAyMTMsIDE1NSwgMywgCisgICAgNzMsIDU3LCA5LCAxLCAyMTMsIDE1NSwgMywgNCwgMjAzLCAxNjksIDU3LCA5LCAxLCAyMTMsIDE1NSwgMywgNzMsIDI0OCwgCisgICAgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMjcsIDIyMSwgOSwgMSwgCisgICAgMjEzLCAxNTUsIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIAorICAgIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTEsIDE4NywgMywgMTI2LCAxOTAsIDI0OCwgCisgICAgMjI4LCAyNiwgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMTIsIDU3LCAzLCAxMjAsIDE5MCwgNTcsIDksIDEsIDIxMiwgNTcsIDMsIAorICAgIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjA3LCAxMCwgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAKKyAgICAxOTAsIDU2LCA5LCAxLCAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEsIDIzNywgMTM1LCAzLCA3MywgMjIxLCA1NiwgNTcsIDksIAorICAgIDEsIDIzNywgMTM1LCAzLCA3MywgNTcsIDksIDEsIDIwMywgNTIsIDksIDEsIDIzNywgMTM1LCAzLCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDEsIDIxNiwgNTIsIDksIDEsIDIxNCwgMTUzLCAzLCA3MywgNTYsIDksIDEsIDIxNCwgMTUzLCAzLCAxMjYsIDE5MCwgCisgICAgNTYsIDksIDEsIDIyNiwgMjUyLCA5LCAxLCAyMDcsIDE4MywgMjI3LCA4NiwgOSwgMSwgMjI3LCA4NywgMywgMjEzLCAyNiwgCisgICAgOSwgMSwgMjI3LCA4NywgMywgNzMsIDU2LCA5LCAxLCAyMTksIDI1NSwgOSwgMSwgMjI3LCA4NywgMywgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxLCAyMzYsIDc2LCA5LCAxLCAyMzYsIDc3LCAzLCAyMTMsIDI2LCA5LCAxLCAyMTksIDE3NiwgOSwgMSwgMjM2LCA3NywgCisgICAgMywgMTIwLCAxOTAsIDU3LCA5LCAxLCAyMzUsIDM3LCA5LCAxLCAyMzYsIDc3LCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIAorICAgIDIyNSwgOTIsIDMsIDQsIDIwMywgMTY4LCA5LCAxLCAyMjUsIDkyLCAzLCA3MywgNTYsIDksIDEsIDIyNSwgOTIsIDMsIDEyNiwgCisgICAgMTkwLCA1NiwgOSwgMSwgMjI1LCA5MiwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTgsIDIyOCwgMywgNzMsIDU3LCA5LCAxLCAKKyAgICAyMTgsIDIyOCwgMjM1LCAxNjUsIDksIDEsIDIxMywgNCwgOSwgMSwgMjE4LCAyMjgsIDMsIDIxMywgMjYsIDksIDEsIDIxOCwgCisgICAgMjI4LCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwNywgOSwgMSwgMjA2LCAyMDYsIDMsIDczLCAKKyAgICA1NiwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCA1NiwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTEzLCA5LCAxLCAyMzQsIDExNiwgCisgICAgMjM1LCAxMTQsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjA2LCAxODQsIDIyMiwgMTU3LCAyMzUsIDExMywgOSwgMSwgMjAxLCAKKyAgICA3MywgMywgMjEzLCAyNiwgOSwgMSwgMjI2LCAxMzksIDIxNywgMTIxLCA5LCAxLCAyMTcsIDEyMSwgOSwgMSwgNjYsIDksIDEsIAorICAgIDE5OSwgMjExLCA5LCAxLCAyMjYsIDEzOSwgMTk5LCAyMTEsIDksIDEsIDIwMSwgNzMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjAzLCA1OSwgOSwgMSwgMjM3LCAxNjIsIDIwMCwgNDYsIDksIDEsIDkwLCAzLCAyMDcsIDYsIDksIDEsIDkwLCAzLCA0LCAKKyAgICAyMDMsIDE2OCwgOSwgMSwgMjAxLCA3MywgMywgNzMsIDU2LCA5LCAxLCA3MiwgOSwgMSwgOTAsIDMsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMSwgOTAsIDI0OSwgNjksIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzQsIDIwNCwgNTYsIDksIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCA5LCAxLCAyNTEsIDIyMSwgOSwgNCwgMTIyLCAzMywgMjEyLCA1NywgMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4NywgCisgICAgOSwgNCwgMTIyLCAzMywgMjE0LCAxNTMsIDMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODcsIDksIDQsIDEyMiwgODQsIDgyLCAKKyAgICAxOSwgOSwgNCwgMTIyLCAyMjUsIDkyLCAyNTEsIDE0MiwgOSwgNCwgMTIyLCAyMjcsIDIyNCwgOSwgNCwgMTIyLCAxMjYsIAorICAgIDI0MCwgMTgwLCA5LCA0LCAxMjIsIDIxMSwgMTg2LCA5LCAyMzgsIDE3MSwgNzYsIDI1MCwgMTExLCA5LCAyMDgsIDEwNSwgCisgICAgNzYsIDIxMiwgMTczLCAyMzgsIDIxMCwgMjM0LCA0MiwgOSwgNCwgMTIyLCAyMTIsIDIxOSwgMTk5LCA4MSwgOSwgNCwgMTIyLCAKKyAgICAyMDMsIDIyMywgMjEzLCAxNzQsIDE5OSwgODEsIDksIDQsIDEyMiwgMjQwLCAxODEsIDIzNCwgMTM3LCA3NiwgMjI2LCAyMDMsIAorICAgIDksIDQsIDEyMiwgODQsIDY1LCAxOSwgOSwgNCwgMTI4LCAyMTEsIDE4NiwgOSwgNCwgMTIyLCAyMjIsIDIyMywgOSwgNCwgCisgICAgMjAxLCA3MiwgOSwgNCwgMjAwLCA0NiwgOSwgNCwgMTIyLCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDIxOCwgMjI3LCA5LCAyMTUsIAorICAgIDEzNCwgNzYsIDIxMiwgNDIsIDksIDIzOCwgMTgxLCAyNDcsIDU2LCAxMjgsIDIwOCwgNzYsIDksIDIzOCwgMTgxLCAyNDcsIAorICAgIDU2LCAxMjIsIDIwOCwgNzYsIDksIDIxMiwgMjE5LCAxMjIsIDIwOCwgNzcsIDMsIDIzNywgOTQsIDI0NywgNTUsIDksIDQsIAorICAgIDEyOCwgMjIyLCA2MSwgOSwgMSwgMjQyLCAzMCwgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDksIDEsIDIxMywgMTU1LCAzLCAKKyAgICAyMjgsIDUwLCAyMDMsIDE2OCwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxOTksIDgxLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIAorICAgIDEwMiwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMDUsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTQ3LCAyMzgsIDMzLCAKKyAgICAyNTAsIDI0OCwgMTcsIDE0OSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxNjQsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgCisgICAgMTg3LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDIxMCwgMTM1LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE5MiwgMjM4LCAKKyAgICAzMywgMjUwLCAyNDgsIDE3LCAyMTksIDExMywgOSwgMSwgMjEwLCA2MiwgMywgNzMsIDU3LCA5LCAxLCAyNDIsIDUzLCAzLCAKKyAgICA3MywgNTcsIDksIDEsIDIzNSwgMTk1LCAzLCA3MywgNTcsIDksIDIsIDIwOSwgMTQyLCAyNTEsIDg5LCA5LCAyLCAyMDksIAorICAgIDE0MiwgMjE1LCA2MywgMjIyLCA0MCwgOSwgMSwgMjM0LCAxMTYsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCAyMDcsIDEwMywgCisgICAgMjM4LCAxNzEsIDc2LCAyMTYsIDEyNywgMjA3LCAxMDMsIDIwNywgMjA5LCAyMzYsIDE4MywgMjA4LCA3NiwgMjA3LCAxMDMsIAorICAgIDIwOCwgNiwgMjM2LCAxODMsIDIwOCwgNzYsIDIwNywgMTAzLCAyMDcsIDIwOSwgMjQ2LCA3OSwgMjA3LCAxMDMsIDIwOCwgNiwgCisgICAgMjQ2LCA3OSwgMjA3LCAxMDMsIDIzMywgMTc3LCAyNDYsIDc5LCAyMDcsIDEwMywgMjQ2LCA4MCwgMjA5LCA4NiwgMjI1LCAKKyAgICAyOCwgMjA3LCAxMDMsIDI0NiwgODAsIDIwOSwgODYsIDIxMywgNDYsIDIwNywgMTAzLCAyMDcsIDIwOSwgMjQ2LCA4MCwgCisgICAgMjA5LCA4NiwgMjI1LCAyOCwgMjA3LCAxMDMsIDIwOCwgNiwgMjQ2LCA4MCwgMjA5LCA4NiwgMjEzLCA0NiwgMjA3LCAxMDMsIAorICAgIDI0MywgMzYsIDIwNywgMTAzLCAyMzQsIDE2MywgMjE3LCAxNDAsIDIwNywgMTAzLCAyMzQsIDE2MywgMjIyLCAxNywgMjA3LCAKKyAgICAxMDMsIDIzNCwgMTYzLCAyNTAsIDE2NywgMjA3LCAxMDMsIDI1MiwgMywgODEsIDIwNywgMTAzLCAxLCAyNTEsIDE0NywgCisgICAgMjA3LCAxMDMsIDEsIDIwNywgMjEzLCAyNTEsIDE0NywgMjA3LCAxMDMsIDEsIDI0OCwgMjA3LCAyMDcsIDEwMywgMSwgMjM2LCAKKyAgICA2NiwgMjA3LCAxMDMsIDEsIDIzNiwgNjcsIDIzNiwgNDQsIDIwNywgMTAzLCAxLCAyNDIsIDI2LCAyMDcsIDEwMywgMSwgCisgICAgMjQwLCAxODEsIDI0MiwgMjcsIDIxMywgMjAsIDIwNywgMTAzLCAxLCAyMzQsIDEzOSwgMjA3LCAxMDMsIDEsIDIwMSwgNzIsIAorICAgIDIwNywgMTAzLCAxLCAxOTksIDEwNSwgMjA3LCAxMDMsIDEsIDIzNCwgOTEsIDIwNywgMTAzLCAxLCAyMDYsIDE0MiwgMjA3LCAKKyAgICAxMDMsIDEsIDIwNiwgMTQzLCAyMzYsIDQ0LCAyMDcsIDEwMywgMSwgMTk5LCAxOTgsIDIwNywgMTAzLCAxLCAxOTksIDE5OSwgCisgICAgMjM0LCAxMzksIDIwNywgMTAzLCAxLCAyMjcsIDU3LCAyMDcsIDEwMywgMSwgMjI1LCA5MCwgMjA3LCAxMDMsIDEsIDIyMSwgCisgICAgMTY2LCAyMDcsIDEwMywgMSwgMjE4LCA4OSwgMjA3LCAxMDMsIDEsIDIxMCwgMTYwLCAyMDcsIDEwMywgMSwgNDcsIDIxMCwgCisgICAgMTYwLCAyMDcsIDEwMywgMSwgNzIsIDIwNywgMTAzLCAxLCAyMTYsIDczLCAyMDcsIDEwMywgMSwgMjEzLCAxMDUsIDIxNiwgCisgICAgNzMsIDIwNywgMTAzLCAxLCAyMTIsIDU0LCAyMDcsIDEwMywgMSwgMjE0LCAxNDYsIDIwNywgMTAzLCAxLCAyMTMsIDIwLCAKKyAgICAyMDcsIDEwMywgMSwgMjEwLCAyMSwgMjA3LCAxMDMsIDEsIDIwNiwgMjE1LCAyMDcsIDEwMywgMSwgMjE2LCAxMiwgMjQ4LCAKKyAgICAxOTQsIDIwNywgMTAzLCAxLCAyMTYsIDEyLCAyMzUsIDE5MiwgMjA3LCAxMDMsIDEsIDIxNiwgMTIsIDI0MSwgOTUsIDIwNywgCisgICAgMTAzLCAyMTQsIDIyNSwgNTYsIDIwNywgMTAzLCAyMTQsIDIyNSwgNTcsIDIwNywgMTAzLCAyMTQsIDIyNSwgMjM5LCAxNzksIAorICAgIDIwNywgMTAzLCAxOTksIDgsIDU2LCAyMDcsIDEwMywgMTk5LCA4LCA1NywgMjA3LCAxMDMsIDE5OSwgOCwgMjM5LCAxNzksIAorICAgIDIwNywgMTAzLCAyMTMsIDE5MywgNTYsIDIwNywgMTAzLCAyMTMsIDE5MywgNTcsIDIwNywgMTAzLCAyMzksIDE4MCwgMTk5LCAKKyAgICAxNSwgMjMzLCAxNzYsIDIwNywgMTAzLCAyMzksIDE4MCwgMTk5LCAxNSwgMjUxLCA2NCwgMjA3LCAxMDMsIDIzNCwgMTQ0LCAKKyAgICA1NiwgMjA3LCAxMDMsIDIzNCwgMTQ0LCA1NywgMjA3LCAxMDMsIDIzNCwgMTQzLCAyMzksIDE3OSwgMjA3LCAxMDMsIDIzOCwgCisgICAgOTgsIDU2LCAyMDcsIDEwMywgMjM4LCA5OCwgNTcsIDIwNywgMTAzLCAyMTIsIDEzOCwgMjA3LCAxMDMsIDIzNywgMTI4LCAKKyAgICAyNDAsIDE4MiwgMjA3LCAxMDMsIDIxNCwgNTcsIDIwNywgMTAzLCAyMTIsIDE2NywgMjA3LCAxMDMsIDEyMCwgODMsIDE5MCwgCisgICAgNTYsIDIwNywgMTAzLCAxMjAsIDgzLCAxOTAsIDU3LCAyMDcsIDEwMywgMTI2LCAxOTAsIDU2LCAyMDcsIDEwMywgMTI2LCAKKyAgICAxOTAsIDU3LCAyMDcsIDEwMywgMjE3LCAxMzgsIDIyNCwgMTc3LCA1NiwgMjA3LCAxMDMsIDIxNywgMTM4LCAyMjQsIDE3NywgCisgICAgNTcsIDIwNywgMTAzLCAyMjAsIDI0NSwgMjA3LCAxMDMsIDI0OSwgNjgsIDIwNywgMTAzLCAxLCAyMDksIDIwLCAxOTksIDc1LCAKKyAgICAyMDcsIDEwMywgMSwgMjA5LCAyMCwgMjI2LCAxOTYsIDIwNywgMTAzLCAxLCAyMDksIDIwLCAyMzcsIDE0NywgOSwgMSwgCisgICAgMjQ4LCAyNDEsIDMsIDEyNiwgMTkwLCAyMzMsIDEyNiwgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAKKyAgICAxMjYsIDE5MCwgNTYsIDksIDEsIDI0OCwgMjQxLCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgMjQ4LCAKKyAgICAyNDEsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDI0OCwgMjI4LCAyNiwgMTIwLCAxOTAsIDU2LCA5LCAxLCAyNDgsIAorICAgIDI0MSwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyNDgsIDI0MSwgMywgMjI4LCA1MCwgNCwgCisgICAgMjAzLCAxNjksIDU3LCA5LCAxLCAyNDgsIDI0MSwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDE1NSwgMywgMTIwLCAxOTAsIDU2LCAKKyAgICA5LCAxLCAxNTUsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCAyNDIsIDMwLCAzLCAxMjAsIDE5MCwgCisgICAgMjAyLCAyNDgsIDI0OCwgMjI4LCAyNiwgNCwgMjA3LCA5LCA5LCAxLCAyNDIsIDMwLCAzLCAyMjgsIDUwLCA0LCAyMDMsIAorICAgIDE2OSwgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA5NywgOSwgMSwgMjExLCAxODcsIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAKKyAgICAxLCAyNTEsIDE3MiwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE5MSwgCisgICAgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU2LCA5LCAxLCAyMzcsIDEzNSwgMywgMTIwLCAKKyAgICAxOTAsIDU3LCA5LCAxLCAyMzcsIDEzNSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDIyNiwgMjUzLCAKKyAgICAzLCA3MywgNTYsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjYsIDE5MCwgCisgICAgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgODQsIDMsIDczLCA1NiwgOSwgMSwgODQsIDMsIDczLCA1NywgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDMsIDEyMCwgMTkwLCA1NywgOSwgMSwgMjE4LCAyMjgsIDMsIDQsIDIwNywgOSwgOSwgMSwgMjE4LCAyMjgsIDMsIDQsIAorICAgIDIwMywgMTY4LCA5LCAxLCAyMjUsIDkyLCAzLCAxNDgsIDksIDEsIDIxMywgMTU1LCAzLCAxMjAsIDE5MCwgMjAyLCAyNDgsIAorICAgIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMTIwLCAxOTAsIDIwMiwgCisgICAgMjQ4LCA1NiwgOSwgMSwgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIDEwLCA1NywgOSwgMSwgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIAorICAgIDEwLCAyNiwgMTIwLCAyNDAsIDE4MCwgOSwgMSwgMjExLCAxODcsIDMsIDQsIDksIDEsIDIwNywgMTAsIDI2LCAxMjAsIDI0MCwgCisgICAgMTgwLCA5LCAxLCAyMTMsIDE1NSwgMywgNCwgOSwgMSwgMjA3LCAxMCwgMjYsIDEyMCwgMjQwLCAxODAsIDksIDEsIDE1NSwgCisgICAgMywgNCwgOSwgMSwgMjA3LCAxMCwgNTYsIDksIDEsIDE0MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIDU2LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMzgsIAorICAgIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAKKyAgICAxMjYsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjM2LCAyMjksIDU3LCA5LCAKKyAgICAxLCAyMDEsIDczLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIDEsIDIwMSwgNzMsIDMsIDIzOCwgMzMsIAorICAgIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCAKKyAgICA1NiwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgMTU1LCAzLCAKKyAgICAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDIzNiwgMjI5LCA1NywgOSwgMSwgMjExLCAxODcsIDMsIDIzOCwgMzMsIDI1MCwgCisgICAgMjQ4LCAxNywgMjM2LCAyMjksIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDksIDEsIDIyNywgCisgICAgODcsIDMsIDEyMCwgMTkwLCA1NiwgMjA2LCAxMTksIDEsIDIzNCwgMjMzLCAyMDYsIDExOSwgMSwgMjEwLCA3MSwgMjA2LCAKKyAgICAxMTksIDEsIDIxOCwgMjI2LCAyMDYsIDExOSwgMSwgMjEzLCAyNDgsIDIwNiwgMTE5LCAxLCAyNDksIDEzNCwgMjA2LCAxMTksIAorICAgIDEsIDIyNCwgMjIwLCAyMDYsIDExOSwgMSwgMjI3LCAxMDEsIDIwNiwgMTE5LCAxLCAyNTEsIDEyOSwgMjA2LCAxMTksIDEsIAorICAgIDIwMywgODgsIDIwNiwgMTE5LCAxLCAyMjIsIDYwLCAyMDYsIDExOSwgMSwgMjM3LCAxOTMsIDIwNiwgMTE5LCAxLCAyNDEsIAorICAgIDk4LCAyMDYsIDExOSwgMSwgMjA2LCAxMjEsIDIwNiwgMTE5LCAxLCAyMjUsIDE3MiwgMjA2LCAxMTksIDEsIDIzNiwgODUsIAorICAgIDIwNiwgMTE5LCAxLCAyMzUsIDExOSwgMjA2LCAxMTksIDEsIDIxMSwgMTg1LCAyMDYsIDExOSwgMSwgMjQxLCAyMzYsIDIwNiwgCisgICAgMTE5LCAxLCAxOTksIDk1LCAyMDYsIDExOSwgMSwgMjA2LCAyMTYsIDIwNiwgMTE5LCAxLCAyMDAsIDEwOSwgMjA2LCAxMTksIAorICAgIDEsIDIxNiwgODYsIDIwNiwgMTE5LCAxLCAyMjcsIDIzMiwgMjA2LCAxMTksIDEsIDI0NywgMTEsIDIwNiwgMTE5LCAxLCAKKyAgICAyMDQsIDI1MiwgMjA2LCAxMTksIDEsIDIzNCwgODMsIDIwNiwgMTE5LCAxLCAyMjYsIDIwNiwgMjA2LCAxMTksIDEsIDIwNiwgCisgICAgMTIwLCAyMDYsIDExOSwgMSwgMTk5LCAxMTIsIDIwNiwgMTE5LCAxLCAyMTAsIDYwLCAyMDYsIDExOSwgMSwgMjEyLCA2MCwgCisgICAgMjA2LCAxMTksIDEsIDI0MiwgNTYsIDIwNiwgMTE5LCAxLCAxMzgsIDIwNiwgMTE5LCAxLCAxOTksIDE0LCAyMDYsIDExOSwgCisgICAgMSwgMjUxLCAxNjgsIDIwNiwgMTE5LCAxLCAyMzUsIDE5MywgMjA2LCAxMTksIDEsIDIxNCwgMTU2LCAyMDYsIDExOSwgMSwgCisgICAgMjAxLCAxMTIsIDIwNiwgMTE5LCAyNTIsIDUsIDIwNiwgMTE5LCAyNTIsIDEwMywgMjA2LCAxMTksIDIzMiwgMjM0LCAyMDYsIAorICAgIDExOSwgMjM4LCAyNTQsIDIwNiwgMTE5LCAyMDQsIDM5LCAyMDYsIDExOSwgMjE3LCA2MiwgMjA2LCAxMTksIDIzOSwgOCwgCisgICAgMjA2LCAxMTksIDIzOCwgMjQsIDIwNiwgMTE5LCAyMTcsIDEzNywgMjA2LCAxMTksIDIxNywgMTQ1LCAyMDYsIDExOSwgMjA3LCAKKyAgICAyMzYsIDIwNiwgMTE5LCAxLCAyMjAsIDE1NywgMjE5LCA0OSwgMTcsIDE5OSwgODEsIDIxOSwgNDksIDE3LCAxMDIsIDIxOSwgCisgICAgNDksIDE3LCAxMDUsIDIxOSwgNDksIDE3LCAxNDcsIDIxOSwgNDksIDE3LCAxNDksIDIxOSwgNDksIDE3LCAxNjQsIDIxOSwgCisgICAgNDksIDE3LCAxODcsIDIxOSwgNDksIDE3LCAyMTAsIDEzNSwgMjE5LCA0OSwgMTcsIDE5MiwgMjE5LCA0OSwgMTcsIDIxOSwgCisgICAgMTEzLCAyMTksIDQ5LCAxLCA2MiwgMjE5LCA0OSwgMSwgMjM4LCAyNTUsIDIxOSwgNDksIDEsIDcwLCAyMTksIDQ5LCAxLCAKKyAgICA3MiwgMjE5LCA0OSwgMSwgNjYsIDIxOSwgNDksIDEsIDIxNywgNjMsIDIxOSwgNDksIDEsIDc0LCAyMTksIDQ5LCAxLCAyNDIsIAorICAgIDQ0LCAyMTksIDQ5LCAxLCAyMjAsIDIxNCwgMjE5LCA0OSwgMSwgMjQ5LCAxMzYsIDIxOSwgNDksIDEsIDE3MiwgMjE5LCA0OSwgCisgICAgMSwgMjA3LCAzNiwgMjE5LCA0OSwgMSwgMjI3LCAyNDgsIDIxOSwgNDksIDEsIDI0NywgMzcsIDIxOSwgNDksIDEsIDI0MiwgCisgICAgNTgsIDIxOSwgNDksIDEsIDIxMywgMjUyLCAyMTksIDQ5LCAxLCAyMTIsIDIxNSwgMjE5LCA0OSwgMSwgMjEyLCA2NCwgMjE5LCAKKyAgICA0OSwgMSwgMjM2LCAzMiwgMjE5LCA0OSwgMSwgMjM3LCAxOTUsIDIxOSwgNDksIDEsIDE2MSwgMjE5LCA0OSwgMSwgMTk0LCAKKyAgICAyMTksIDQ5LCAxLCAyMjAsIDE2MiwgMjAwLCAyNTIsIDIxOSwgNDksIDEsIDE3OCwgMjE5LCA0OSwgMSwgMjE4LCA2MCwgCisgICAgMjE5LCA0OSwgMSwgMTg4LCAyMTksIDQ5LCAxLCAxNDQsIDIxOSwgNDksIDEsIDIwMSwgMTE0LCAyMTksIDQ5LCAxLCAxODMsIAorICAgIDIxOSwgNDksIDEsIDIxOCwgNjEsIDIwMCwgMjUyLCAyMTksIDQ5LCAxLCAyMjcsIDE1OCwgMjI3LCAyNDgsIDIxOSwgNDksIAorICAgIDEsIDIyNywgMTU4LCAyNDcsIDM3LCAyMTksIDQ5LCAxLCAyMjcsIDE1OCwgMjEzLCAyNTIsIDIxOSwgNDksIDM4LCAyMDksIAorICAgIDI1MCwgMTIyLCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDIwOSwgMjUwLCAxMjgsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgCisgICAgMjA5LCAyNTAsIDIxMywgMTksIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMTY4LCAyNDEsIDExOCwgMjA1LCAxNzQsIDIxOSwgCisgICAgNDksIDM4LCAxNjgsIDEyMiwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAxNjgsIDEyOCwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAKKyAgICAxNjgsIDIxMywgMTksIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMjIwLCAxMjIsIDgxLCAyMTksIDQ5LCAzOCwgNTMsIDczLCAKKyAgICA1NiwgMjE5LCA0OSwgMTIyLCAxNTAsIDI1MSwgMTMsIDIxOSwgNDksIDEyOCwgMTUwLCAyNTEsIDEzLCAyMTksIDQ5LCAxNiwgCisgICAgMjE3LCA2NCwgMjQxLCAxMzIsIDIxOSwgNDksIDE2LCAyMzYsIDMxLCAyMTksIDQ5LCAyNDYsIDcwLCAyMTksIDQ5LCAyMzgsIAorICAgIDQzLCA4MSwgMjE5LCA0OSwgMjI1LCAxNDcsIDIxMiwgMjIsIDEsIDI1MSwgMTQ5LCAyMTIsIDIyLCAxLCAyNDgsIDE1MiwgCisgICAgMjEyLCAyMiwgMSwgMjM2LCA2NSwgMjEyLCAyMiwgMSwgMjQyLCAyOCwgMjEyLCAyMiwgMSwgMjI4LCAzLCAyMTIsIDIyLCAxLCAKKyAgICAyNDksIDEzNCwgMjEyLCAyMiwgMSwgMTk5LCA4NCwgMjEyLCAyMiwgMSwgMjI4LCAxMiwgMjEyLCAyMiwgMSwgMjA1LCAyMTMsIAorICAgIDIxMiwgMjIsIDEsIDE5OSwgMTgwLCAyMTIsIDIyLCAxLCAyMjcsIDEwMiwgMjEyLCAyMiwgMSwgMjI1LCAxNjksIDIxMiwgCisgICAgMjIsIDEsIDIyMSwgMTY2LCAyMTIsIDIyLCAxLCAyMTgsIDg5LCAyMTIsIDIyLCAxLCAyMDksIDE0MCwgMjEyLCAyMiwgMSwgCisgICAgMjI4LCAxMTcsIDIxMiwgMjIsIDEsIDIzNywgMTEyLCAyMTIsIDIyLCAxLCAyMDUsIDMwLCAyMTIsIDIyLCAxLCAyMTQsIDc2LCAKKyAgICAyMTIsIDIyLCAxLCAyMTMsIDIwLCAyMTIsIDIyLCAxLCAyMTAsIDg5LCAyMTIsIDIyLCAxLCAyMDcsIDMxLCAyMTIsIDIyLCAKKyAgICAxMzQsIDIyOCwgMTE3LCAyMTIsIDIyLCAxMzQsIDIyOCwgMTE2LCAyMTIsIDIyLCAxMzQsIDIxNywgMTMzLCAyMTIsIDIyLCAKKyAgICAxMzQsIDI0MiwgNDIsIDIxMiwgMjIsIDY3LCAxLCAyMzgsIDEyOSwgMTk5LCAxODAsIDIxMiwgMjIsIDEzNCwgMjM4LCAxMjksIAorICAgIDE5OSwgMTgwLCAyMTIsIDIyLCAyMiwgMiwgMTY4LCA3MiwgMjEyLCAyMiwgMjIsIDIsIDcyLCAyMTIsIDIyLCAyMiwgMiwgCisgICAgMjE2LCAyNDAsIDI1MiwgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMTY4LCAyNTIsIDEzOCwgMjEyLCAyMiwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMjE2LCAyNDAsIDYyLCAyMTIsIDIyLCAyMiwgMiwgMTY4LCA2MiwgMjEyLCAyMiwgMjIsIAorICAgIDIsIDYyLCAyMTIsIDIyLCA2NywgMSwgMjA5LCAyNTAsIDYyLCAyMTIsIDIyLCAyMiwgMiwgMjA5LCAyNTAsIDYyLCAyMTIsIAorICAgIDIyLCAyMiwgMiwgMTY4LCA2NiwgMjEyLCAyMiwgMjIsIDIsIDY2LCAyMTIsIDIyLCA2NywgMSwgNzAsIDIxMiwgMjIsIDIyLCAKKyAgICAyLCAxNjgsIDcwLCAyMTIsIDIyLCAyMiwgMiwgNzAsIDIxMiwgMjIsIDIyLCAyLCA3NCwgMjEyLCAyMiwgMjIsIDIsIDIwNywgCisgICAgMjM2LCAyMTIsIDIyLCAxMzQsIDIyMCwgMTcsIDIxMiwgMjIsIDIxNCwgMjEyLCAyMjAsIDE3LCAyMTIsIDIyLCAyMTQsIAorICAgIDIxMiwgMjUxLCAxOTUsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTEsIDc1LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjQ5LCA0OCwgCisgICAgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MCwgMTQ5LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjEwLCA5LCAyMTIsIDIyLCAyNTIsIDMsIAorICAgIDgxLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjIyLCA1MCwgMjE0LCAxMTIsIDIxMiwgMjIsIDIxNCwgMjEyLCAxOTksIDIyLCAKKyAgICAyMTIsIDIyLCAyMTQsIDIxMiwgMjE0LCAxMTIsIDIxMiwgMjIsIDIxNCwgMjEyLCAxOTksIDExMSwgMjEyLCAyMiwgMjE0LCAKKyAgICAyMTIsIDIwNCwgMTgxLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjUwLCAyMTksIDIxMiwgMjIsIDIxNCwgMjEyLCAyMDksIDI0LCAKKyAgICAyMjIsIDEzMywgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MSwgNTksIDIyMiwgMTc2LCAxLCAyMzQsIDIxMCwgMjIyLCAxNzYsIDEsIAorICAgIDI1MiwgODksIDIyMiwgMTc2LCAxLCAyNTEsIDE5MywgMjIyLCAxNzYsIDEsIDI1MSwgMjM1LCAyMjIsIDE3NiwgMSwgMjUxLCAKKyAgICAxODUsIDIyMiwgMTc2LCAxLCAyMDMsIDE4OCwgMjIyLCAxNzYsIDEsIDI1MCwgMTA1LCAyMjIsIDE3NiwgMSwgMjI4LCAxMiwgCisgICAgMjIyLCAxNzYsIDEsIDI1MCwgMTQ2LCAyMjIsIDE3NiwgMSwgMjUxLCAxNTQsIDIyMiwgMTc2LCAxLCAyNTEsIDE1OSwgMjIyLCAKKyAgICAxNzYsIDEsIDI1MSwgMTUxLCAyMjIsIDE3NiwgMSwgMjUxLCAxMDEsIDIyMiwgMTc2LCAxLCAyNTEsIDg1LCAyMjIsIDE3NiwgCisgICAgMSwgMjUwLCAxODgsIDIyMiwgMTc2LCAxLCAyMjgsIDExNywgMjIyLCAxNzYsIDEsIDI1MSwgMjgsIDIyMiwgMTc2LCAxLCAKKyAgICAyNTAsIDE1NywgMjIyLCAxNzYsIDEsIDI1MSwgMSwgMjIyLCAxNzYsIDEsIDI1MCwgMjUzLCAyMjIsIDE3NiwgMSwgMjUwLCAKKyAgICAxODEsIDIyMiwgMTc2LCAxLCAyNTAsIDE1NSwgMjIyLCAxNzYsIDEsIDIzOSwgMTEyLCAyMjIsIDE3NiwgMSwgMjI3LCA5NCwgCisgICAgMjIyLCAxNzYsIDEsIDI1MSwgMTcxLCAyMjIsIDE3NiwgMjUxLCAxOTksIDgxLCAyMjIsIDE3NiwgMjAyLCAxOTEsIDgxLCAKKyAgICAyMjIsIDE3NiwgMjM2LCAzLCA4MSwgMjIyLCAxNzYsIDIxNCwgMjExLCA5LCAxLCAyNDgsIDI0MSwgMywgNCwgMjAzLCAxNjksIAorICAgIDU3LCA5LCAxLCAyNDgsIDI0MSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAxOTMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjA3LCAxMCwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMzcsIDEzNSwgMywgNzMsIDI0OCwgMjI4LCAyNiwgMTI2LCAxOTAsIAorICAgIDU2LCA5LCAxLCAyMTQsIDE1MywgMywgNzMsIDU3LCA5LCAxLCAyMjUsIDkyLCAzLCA1MywgMTQ4LCA5LCAxLCA4NCwgMywgCisgICAgMTI2LCAxOTAsIDU2LCA5LCAxLCA5MCwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgMjM0LCAyMDQsIDU2LCA5LCAxLCAKKyAgICA5MCwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMjI0LCA3NCwgOSwgMSwgCisgICAgMjAxLCA3MywgMywgNzMsIDIwMSwgNCwgOSwgMSwgMjEyLCAyNDUsIDIwMCwgNDYsIDksIDEsIDEyOCwgMjUxLCAxNDIsIDksIAorICAgIDEsIDI0MiwgMzAsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjEyLCA1NywgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMzYsIAorICAgIDc3LCAzLCAyMjgsIDUwLCA5NywgOSwgMSwgMjA4LCA2OCwgMjAxLCA3MiwgOSwgMSwgMTk5LCAxMDYsIDMsIDIyOCwgNTAsIAorICAgIDIwMywgMTY5LCA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjI3LCA4NywgMywgNzMsIDU3LCAKKyAgICA5LCAxLCAyNDgsIDI0MSwgMywgNCwgODQsIDU2LCA5LCAxLCAyMTYsIDU1LCAzLCA0LCA4NCwgNTYsIDksIDEsIDIwNiwgCisgICAgMTg0LCAzLCA0LCAyMDYsIDE4NCwgNTYsIDksIDEsIDIxMywgMTU1LCAzLCA0LCAyMTgsIDIyOCwgNTYsIDksIDEsIDkwLCAzLCAKKyAgICAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA0LCAyMTgsIDIyOCwgNTYsIDksIDEsIDI1MSwgMTk2LCAyMzcsIDEzNCwgOSwgMSwgCisgICAgMjUxLCAxOTYsIDIxNCwgMTUyLCA5LCAxLCAyNTEsIDE5NiwgMjE4LCAyMjcsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDI1MCwgCisgICAgMjUwLCA5LCA0LCAxMjIsIDIxMiwgNTYsIDksIDQsIDEyMiwgMjUxLCAxNzEsIDksIDQsIDEyMiwgMjE0LCAxNTIsIDksIDQsIAorICAgIDEyMiwgMjE4LCAyMjgsIDMsIDIyNywgMzYsIDksIDQsIDEyOCwgMjE4LCAyMjgsIDMsIDIyNywgMzYsIDksIDQsIDEyMiwgCisgICAgMjAwLCAyMzgsIDI1MCwgMTU0LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyNTAsIDE4NywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgCisgICAgMjUxLCA4NCwgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjEyLCAzNywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjE0LCAxMTYsIDksIAorICAgIDQsIDEyMiwgMjAwLCAyMzgsIDIwMSwgOTUsIDksIDQsIDEyMiwgMjM2LCAyNTMsIDIyMiwgMTQ1LCA5LCA0LCAxMjIsIDIsIAorICAgIDIxMiwgNTIsIDksIDI0MCwgMjUxLCAyMzgsIDE3MSwgNzYsIDI1MCwgMTExLCA5LCAyMDQsIDE4NSwgMjQyLCAxOCwgNTcsIAorICAgIDksIDI0MiwgMTk2LCAyMzcsIDE1OCwgOSwgMjQyLCAxOTYsIDI0MiwgMTcsIDksIDI0MiwgMTk2LCAyMjcsIDM2LCA5LCAKKyAgICAyNDIsIDE5NiwgMjM3LCAxNTYsIDksIDI0MiwgMTk2LCAyNDIsIDE1LCA5LCAyNDIsIDE5NiwgMjI3LCAzNCwgOSwgMTUwLCAKKyAgICAxMTIsIDczLCA1NiwgOSwgMTUwLCAxMjAsIDE5MCwgNTYsIDksIDE1MCwgMjI0LCA3NSwgNTYsIDksIDE1MCwgMTEyLCA3MywgCisgICAgNTcsIDksIDE1MCwgMTIwLCAxOTAsIDU3LCA5LCAxNTAsIDIyNCwgNzUsIDU3LCA5LCAxNzYsIDIzNywgMTU2LCA5LCAxNzYsIAorICAgIDI0MiwgMTUsIDksIDE3NiwgMjI3LCAzNCwgOSwgNCwgMTIyLCAyMDEsIDcyLCA5LCAyMzcsIDE1OSwgMywgMjEzLCAyNiwgOSwgCisgICAgMjM3LCAxNTksIDMsIDczLCA1NiwgOSwgMjI3LCAzNywgMywgNzMsIDU3LCA5LCA0OSwgMjUwLCAyMDMsIDU2LCA5LCA1MSwgCisgICAgMjUwLCAyMDMsIDU2LCA5LCA0OSwgMjUwLCAyMDMsIDU3LCA5LCA1MSwgMjUwLCAyMDMsIDU3LCA5LCA1MywgNTEsIDI1MCwgCisgICAgMjAzLCA1NiwgOSwgNTMsIDUxLCAyNTAsIDIwMywgODgsIDMsIDI0MCwgMTgyLCA5LCA1MSwgMjUwLCAyMDMsIDg4LCAzLCAKKyAgICAyNDAsIDE4MiwgOSwgMjQyLCAxOCwgMywgMjQwLCAxODIsIDksIDEzNCwgMjA5LCAxNzMsIDIxOCwgMjI4LCAyMzUsIDE2NSwgCisgICAgOTQsIDIsIDIyOCwgNTAsIDI0NywgMTQ5LCA5NCwgMiwgMjQ3LCAxNDksIDk0LCAyLCAyNTEsIDMzLCA5NCwgMiwgMjAyLCAKKyAgICAyMDMsIDk0LCAxLCAyMDksIDI1MCwgNjIsIDk0LCAxLCA2MiwgOTQsIDEsIDI1MiwgMTM4LCA5NCwgMSwgNzAsIDk0LCAxLCAKKyAgICAyMjgsIDE1MSwgOTQsIDEsIDY2LCA5NCwgMSwgMjAzLCAxODIsIDk0LCAxLCAxMDksIDE0NiwgOTQsIDEsIDEwOSwgMTU2LCAKKyAgICA5NCwgMSwgMjQ3LCAxNTIsIDcyLCA5NCwgMSwgMjA5LCAyNTAsIDcyLCA5NCwgMSwgNzIsIDk0LCAxLCAyNTEsIDE3NiwgOTQsIAorICAgIDEsIDI0NywgMTUyLCA3NCwgOTQsIDEsIDIwOSwgMjUwLCA3NCwgOTQsIDEsIDc0LCA5NCwgMSwgMjUwLCAxMzksIDk0LCAxLCAKKyAgICAxNjEsIDk0LCAxLCAyMjYsIDIwNywgOTQsIDEsIDIzNiwgODksIDk0LCAxLCAyMzUsIDE5OSwgOTQsIDEsIDIxOSwgMjUzLCAKKyAgICA5NCwgMSwgMjQ3LCAxOTAsIDk0LCAxLCAyNDcsIDM3LCA5NCwgMSwgMjI3LCAyNDgsIDk0LCAxLCAyMjcsIDIxNSwgOTQsIDEsIAorICAgIDIxOCwgNjAsIDk0LCAxLCAyMDQsIDI1MywgOTQsIDEsIDIwNCwgMjQxLCA5NCwgMSwgMjQxLCAyMjAsIDk0LCAxLCAyNDEsIAorICAgIDIwNCwgOTQsIDEsIDIxOSwgMjEsIDk0LCAxLCAyMDcsIDM2LCA5NCwgMSwgMjA2LCAxMjIsIDk0LCAxLCAyNDIsIDU4LCA5NCwgCisgICAgMSwgMjQxLCAxMDAsIDk0LCAxLCAxODgsIDk0LCAxLCAyMTksIDMsIDk0LCAxLCAxNzIsIDk0LCAxLCAyMTUsIDI0NSwgOTQsIAorICAgIDEsIDI0OSwgMTM2LCA5NCwgMSwgMjQ4LCAyMDAsIDk0LCAxLCAxNzgsIDk0LCAxLCAxODMsIDk0LCAxLCAyMTMsIDI1MiwgCisgICAgOTQsIDEsIDIxMiwgMjE1LCA5NCwgMSwgMTk0LCA5NCwgMSwgMjI0LCAxMzgsIDk0LCAxLCAyMjQsIDEyOSwgOTQsIDEsIAorICAgIDIwMywgOTAsIDk0LCAxLCAyMTAsIDExNCwgOTQsIDEsIDIwOCwgMTc5LCA5NCwgMSwgMjEyLCA2NCwgOTQsIDEsIDE0NCwgCisgICAgOTQsIDIyLCAyLCAyMTcsIDEyMSwgOTQsIDIyLCAyLCAyMTcsIDYxLCA5NCwgMiwgMjE4LCAxMDAsIDk0LCAyLCAyNTAsIAorICAgIDEyMiwgOTQsIDIyLCAyLCAyNTIsIDEzOCwgOTQsIDIyLCAyLCA3MCwgOTQsIDIyLCAyLCAyMjgsIDE1MSwgOTQsIDIyLCAyLCAKKyAgICA2NiwgOTQsIDIyLCAyLCAyMDMsIDE4MiwgOTQsIDIyLCAyLCAxMDksIDE0NiwgOTQsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAKKyAgICA5NCwgMjIsIDIsIDI0NywgMTUyLCA3MiwgOTQsIDIyLCAyLCAyMDksIDI1MCwgNzIsIDk0LCAyMiwgMiwgNzIsIDk0LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDk0LCAyMiwgMiwgMjQ3LCAxNTIsIDc0LCA5NCwgMjIsIDIsIDIwOSwgMjUwLCA3NCwgOTQsIDIyLCAyLCAKKyAgICA3NCwgOTQsIDIyLCAyLCAyNTAsIDEzOSwgOTQsIDIsIDIwMiwgMjA4LCA5NCwgMjIsIDIsIDIxNSwgNiwgNzIsIDk0LCAyMiwgCisgICAgMiwgMjUwLCAxMTcsIDk0LCAyMTcsIDg2LCA5NCwgMjA4LCA1NywgMiwgMjA0LCAzMywgOTQsIDIwOCwgNTcsIDIsIDI1MSwgCisgICAgMzUsIDk0LCAyMzUsIDc0LCAyNTEsIDI1MSwgOTQsIDI1MSwgMjM5LCAyNTEsIDI1MSwgOTQsIDIyLCAyLCAyNDcsIDE1MiwgCisgICAgMTY4LCA3MiwgOTQsIDIyLCAyLCAyMDQsIDMxLCA5NCwgMjIsIDIsIDIwMywgMTgxLCA5NCwgMSwgMjE0LCAxNTksIDk0LCAxLCAKKyAgICAyMjYsIDE4OCwgOTQsIDEsIDIzNSwgMTc0LCA5NCwgMSwgMTk5LCAxMTQsIDk0LCAxLCAyNDEsIDIwOSwgOTQsIDEsIDIxMywgCisgICAgOTMsIDk0LCAxLCAyMzcsIDE5NSwgOTQsIDEsIDE5OSwgMTY2LCA5NCwgMSwgMTA5LCAyMTIsIDIxNiwgOTQsIDEsIDEwOSwgCisgICAgMjI0LCAxMzksIDk0LCAyMiwgMiwgMTA5LCAxNTYsIDk0LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgOTQsIDI0MiwgMTAsIDk0LCAKKyAgICA1MywgMjQyLCAxMCwgOTQsIDE3LCAxOTksIDgxLCA5NCwgMTcsIDEwMiwgOTQsIDE3LCAxMDUsIDk0LCAxNywgMTQ3LCA5NCwgCisgICAgMTcsIDE0OSwgOTQsIDE3LCAxNjQsIDk0LCAxNywgMTg3LCA5NCwgMTcsIDIxMCwgMTM1LCA5NCwgMTcsIDE5MiwgOTQsIDE3LCAKKyAgICAyMTksIDExMywgOTQsIDI1MiwgMywgNTQsIDk0LCAyLCAxMjIsIDIwOCwgMjQzLCAyNDAsIDE4MiwgOTQsIDEsIDI0NywgCisgICAgMTUyLCA2MiwgOTQsIDEsIDIxNywgMTIxLCA5NCwgMSwgMjE3LCA2MSwgOTQsIDEsIDI1MCwgMTE3LCA5NCwgMSwgMjA0LCAKKyAgICAzMSwgOTQsIDEsIDIwMywgMTgxLCA5NCwgMSwgMjIyLCAxMzgsIDI0MSwgMjIwLCA5NCwgMSwgMTk5LCA3NywgOTQsIDEsIAorICAgIDgwLCAxODMsIDk0LCAxLCAyMzUsIDIzNSwgOTQsIDEsIDIyNywgMTk0LCA5NCwgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDk0LCAKKyAgICAxLCAyNDEsIDIxMCwgOTQsIDEsIDI0OSwgNDQsIDE4NSwgMjUxLCA2MiwgMTg1LCAyLCAyNDcsIDE0OSwgMTg1LCAyLCAyNTEsIAorICAgIDMzLCAxODUsIDIsIDIwMiwgMjAzLCAxODUsIDEsIDYyLCAxODUsIDEsIDI1MiwgMTM4LCAxODUsIDEsIDcwLCAxODUsIDEsIAorICAgIDIyOCwgMTUxLCAxODUsIDEsIDY2LCAxODUsIDEsIDIwMywgMTgyLCAxODUsIDEsIDEwOSwgMTQ2LCAxODUsIDEsIDEwOSwgCisgICAgMTU2LCAxODUsIDEsIDcyLCAxODUsIDEsIDI1MSwgMTc2LCAxODUsIDEsIDc0LCAxODUsIDEsIDI1MCwgMTM5LCAxODUsIDEsIAorICAgIDE2MSwgMTg1LCAxLCAyMjYsIDIwNywgMTg1LCAxLCAyMzYsIDg5LCAxODUsIDEsIDIzNSwgMTk5LCAxODUsIDEsIDIxOSwgCisgICAgMjUzLCAxODUsIDEsIDI0NywgMTkwLCAxODUsIDEsIDI0NywgMzcsIDE4NSwgMSwgMjI3LCAyNDgsIDE4NSwgMSwgMjI3LCAKKyAgICAyMTUsIDE4NSwgMSwgMjE4LCA2MCwgMTg1LCAxLCAyMDQsIDI1MywgMTg1LCAxLCAyMDQsIDI0MSwgMTg1LCAxLCAyNDEsIAorICAgIDIyMCwgMTg1LCAxLCAyNDEsIDIwNCwgMTg1LCAxLCAyMTksIDIxLCAxODUsIDEsIDIwNywgMzYsIDE4NSwgMSwgMjA2LCAKKyAgICAxMjIsIDE4NSwgMSwgMjQyLCA1OCwgMTg1LCAxLCAyNDEsIDEwMCwgMTg1LCAxLCAxODgsIDE4NSwgMSwgMTcyLCAxODUsIDEsIAorICAgIDIxNSwgMjQ1LCAxODUsIDEsIDI0OSwgMTM2LCAxODUsIDEsIDI0OCwgMjAwLCAxODUsIDEsIDE3OCwgMTg1LCAxLCAxODMsIAorICAgIDE4NSwgMSwgMjEzLCAyNTIsIDE4NSwgMSwgMTk0LCAxODUsIDEsIDIxMCwgMTE0LCAxODUsIDEsIDIwOCwgMTc5LCAxODUsIAorICAgIDEsIDIxMiwgNjQsIDE4NSwgMSwgMTQ0LCAxODUsIDIsIDIxOCwgMTAwLCAxODUsIDIsIDI1MCwgMTIyLCAxODUsIDIyLCAyLCAKKyAgICAyNTIsIDEzOCwgMTg1LCAyMiwgMiwgNzAsIDE4NSwgMjIsIDIsIDIyOCwgMTUxLCAxODUsIDIyLCAyLCA2NiwgMTg1LCAyMiwgCisgICAgMiwgMjAzLCAxODIsIDE4NSwgMjIsIDIsIDEwOSwgMTQ2LCAxODUsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODUsIDIyLCAyLCAKKyAgICA3MiwgMTg1LCAyMiwgMiwgMjUxLCAxNzYsIDE4NSwgMjIsIDIsIDc0LCAxODUsIDIyLCAyLCAyNTAsIDEzOSwgMTg1LCAyLCAKKyAgICAyMDIsIDIwOCwgMTg1LCAxLCAyMjYsIDE5OCwgMjA3LCAzNiwgMTg1LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMTg1LCAxLCAKKyAgICAyMTIsIDIxNSwgMTg1LCAxLCAyMTMsIDkzLCAxODUsIDEsIDE5OSwgMTY2LCAxODUsIDEsIDEwOSwgMjEyLCAyMTYsIDE4NSwgCisgICAgMSwgMTA5LCAyMjQsIDEzOSwgMTg1LCAyMiwgMiwgMTA5LCAxNTYsIDE4NSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE4NSwgCisgICAgMTcsIDE5OSwgODEsIDE4NSwgMTcsIDEwMiwgMTg1LCAxNywgMTA1LCAxODUsIDE3LCAxNDcsIDE4NSwgMTcsIDE0OSwgMTg1LCAKKyAgICAxNywgMTY0LCAxODUsIDE3LCAxODcsIDE4NSwgMTcsIDIxMCwgMTM1LCAxODUsIDE3LCAxOTIsIDE4NSwgMTcsIDIxOSwgCisgICAgMTEzLCAxODUsIDEsIDIxMywgMjUzLCAzLCAxMDEsIDI0MSwgNzAsIDE4NSwgMSwgMjEzLCAyNTMsIDMsIDIyNCwgNTQsIAorICAgIDI0MSwgNzAsIDE4NSwgMjEyLCAxNDksIDgxLCAxODUsIDIxMiwgMTQ5LCA1NCwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgCisgICAgMTAyLCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAxMDUsIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDE0NywgMTg1LCAyNDIsIAorICAgIDE5NSwgMjE4LCA5MiwgMTQ5LCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAxMTIsIDIyNCwgMjQyLCAyMDYsIDExMiwgMjA2LCAKKyAgICAxMDcsIDI0MSwgMTMwLCAxODUsIDI0MiwgMTk1LCAyNDEsIDEzMSwgMjA5LCAxMDAsIDE4NSwgMjI4LCAxMywgMTg1LCAyMzYsIAorICAgIDU2LCA4MSwgMjM1LCAxOCwgMiwgMjUxLCAyMzQsIDI0OCwgMTY4LCAyMzUsIDE4LCAyLCAyNDgsIDE2OCwgMjM1LCAxOCwgMiwgCisgICAgMjAyLCAyMDMsIDIzNSwgMTgsIDEsIDYyLCAyMzUsIDE4LCAxLCAyNTIsIDEzOCwgMjM1LCAxOCwgMSwgNzAsIDIzNSwgMTgsIAorICAgIDEsIDIyOCwgMTUxLCAyMzUsIDE4LCAxLCA2NiwgMjM1LCAxOCwgMSwgMjAzLCAxODIsIDIzNSwgMTgsIDEsIDIzOCwgMjU1LCAKKyAgICAyMzUsIDE4LCAxLCAyNTEsIDE3NiwgMjM1LCAxOCwgMSwgMjE3LCA2MywgMjM1LCAxOCwgMSwgMjUwLCAxMzksIDIzNSwgMTgsIAorICAgIDEsIDE2MSwgMjM1LCAxOCwgMSwgMjI2LCAyMDcsIDIzNSwgMTgsIDEsIDIzNiwgODksIDIzNSwgMTgsIDEsIDIzNSwgMTk5LCAKKyAgICAyMzUsIDE4LCAxLCAyMTksIDI1MywgMjM1LCAxOCwgMSwgMjQ3LCAxOTAsIDIzNSwgMTgsIDEsIDI0NywgMzcsIDIzNSwgMTgsIAorICAgIDEsIDIyNywgMjQ4LCAyMzUsIDE4LCAxLCAyMjcsIDIxNSwgMjM1LCAxOCwgMSwgMjE4LCA2MCwgMjM1LCAxOCwgMSwgMjA0LCAKKyAgICAyNTMsIDIzNSwgMTgsIDEsIDIwNCwgMjQxLCAyMzUsIDE4LCAxLCAyNDEsIDIyMCwgMjM1LCAxOCwgMSwgMjQxLCAyMDQsIAorICAgIDIzNSwgMTgsIDEsIDIxOSwgMjEsIDIzNSwgMTgsIDEsIDIwNywgMzYsIDIzNSwgMTgsIDEsIDIwNiwgMTIyLCAyMzUsIDE4LCAKKyAgICAxLCAyNDIsIDU4LCAyMzUsIDE4LCAxLCAyNDEsIDEwMCwgMjM1LCAxOCwgMSwgMTg4LCAyMzUsIDE4LCAxLCAxNzIsIDIzNSwgCisgICAgMTgsIDEsIDIxNSwgMjQ1LCAyMzUsIDE4LCAxLCAyNDksIDEzNiwgMjM1LCAxOCwgMSwgMjQ4LCAyMDAsIDIzNSwgMTgsIDEsIAorICAgIDE3OCwgMjM1LCAxOCwgMSwgMTgzLCAyMzUsIDE4LCAxLCAyMTMsIDI1MiwgMjM1LCAxOCwgMSwgMTk0LCAyMzUsIDE4LCAxLCAKKyAgICAyMjQsIDEzOCwgMjM1LCAxOCwgMSwgMjAzLCA5MCwgMjM1LCAxOCwgMSwgMjEwLCAxMTQsIDIzNSwgMTgsIDEsIDIxMiwgNjQsIAorICAgIDIzNSwgMTgsIDEsIDE0NCwgMjM1LCAxOCwgMiwgMjE4LCAxMDAsIDIzNSwgMTgsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCAxOCwgCisgICAgMjIsIDIsIDcwLCAyMzUsIDE4LCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgMTgsIDIyLCAyLCA2NiwgMjM1LCAxOCwgMjIsIDIsIAorICAgIDIwMywgMTgyLCAyMzUsIDE4LCAyMiwgMiwgMjM4LCAyNTUsIDIzNSwgMTgsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCAxOCwgCisgICAgMjIsIDIsIDIxNywgNjMsIDIzNSwgMTgsIDIyLCAyLCAyNTAsIDEzOSwgMjM1LCAxOCwgMiwgMjAyLCAyMDgsIDIzNSwgMTgsIAorICAgIDIsIDIwNCwgMzUsIDIzNSwgMTgsIDEsIDIyNiwgMTg4LCAyMzUsIDE4LCAxLCAyMzUsIDE3NCwgMjM1LCAxOCwgMSwgMTk5LCAKKyAgICAxMTQsIDIzNSwgMTgsIDEsIDIxMiwgMjE1LCAyMzUsIDE4LCAxLCAyMzcsIDE5NSwgMjM1LCAxOCwgMTcsIDE5OSwgODEsIAorICAgIDIzNSwgMTgsIDE3LCAxMDIsIDIzNSwgMTgsIDE3LCAxMDUsIDIzNSwgMTgsIDE3LCAxNDcsIDIzNSwgMTgsIDE3LCAxNDksIAorICAgIDIzNSwgMTgsIDE3LCAxNjQsIDIzNSwgMTgsIDE3LCAxODcsIDIzNSwgMTgsIDE3LCAyMTAsIDEzNSwgMjM1LCAxOCwgMTcsIAorICAgIDE5MiwgMjM1LCAxOCwgMTcsIDIxOSwgMTEzLCAyMzUsIDE4LCAyMDUsIDIyMSwgMjM1LCAxOCwgMjUxLCAyMzMsIDIzNSwgCisgICAgMTgsIDIyOCwgMzMsIDIzNSwgMTgsIDIwMywgMjEwLCAyMzUsIDE4LCAyMzgsIDIxNywgMjE3LCA2OCwgMjM1LCAxOCwgMiwgCisgICAgMjAwLCA4NCwgMjM1LCAzMywgMiwgMjQ3LCAxNDksIDIzNSwgMzMsIDIsIDI1MSwgMzMsIDIzNSwgMzMsIDIsIDIwMiwgMjAzLCAKKyAgICAyMzUsIDMzLCAxLCA2MiwgMjM1LCAzMywgMSwgMjUyLCAxMzgsIDIzNSwgMzMsIDEsIDcwLCAyMzUsIDMzLCAxLCAyMjgsIAorICAgIDE1MSwgMjM1LCAzMywgMSwgNjYsIDIzNSwgMzMsIDEsIDIwMywgMTgyLCAyMzUsIDMzLCAxLCAxMDksIDE0NiwgMjM1LCAzMywgCisgICAgMSwgMTA5LCAxNTYsIDIzNSwgMzMsIDIyLCAyNDcsIDE1MiwgNzIsIDIzNSwgMzMsIDEsIDcyLCAyMzUsIDMzLCAxLCAyNTEsIAorICAgIDE3NiwgMjM1LCAzMywgMjIsIDI0NywgMTUyLCA3NCwgMjM1LCAzMywgMSwgNzQsIDIzNSwgMzMsIDEsIDI1MCwgMTM5LCAKKyAgICAyMzUsIDMzLCAxLCAxNjEsIDIzNSwgMzMsIDEsIDIyNiwgMjA3LCAyMzUsIDMzLCAxLCAyMzYsIDg5LCAyMzUsIDMzLCAxLCAKKyAgICAyMzUsIDE5OSwgMjM1LCAzMywgMSwgMjE5LCAyNTMsIDIzNSwgMzMsIDEsIDI0NywgMTkwLCAyMzUsIDMzLCAxLCAyNDcsIAorICAgIDM3LCAyMzUsIDMzLCAxLCAyMjcsIDI0OCwgMjM1LCAzMywgMSwgMjI3LCAyMTUsIDIzNSwgMzMsIDEsIDIxOCwgNjAsIDIzNSwgCisgICAgMzMsIDEsIDIwNCwgMjUzLCAyMzUsIDMzLCAxLCAyMDQsIDI0MSwgMjM1LCAzMywgMSwgMjQxLCAyMjAsIDIzNSwgMzMsIDEsIAorICAgIDI0MSwgMjA0LCAyMzUsIDMzLCAxLCAyMTksIDIxLCAyMzUsIDMzLCAxLCAyMDcsIDM2LCAyMzUsIDMzLCAxLCAyMDYsIDEyMiwgCisgICAgMjM1LCAzMywgMSwgMjQyLCA1OCwgMjM1LCAzMywgMSwgMjQxLCAxMDAsIDIzNSwgMzMsIDEsIDE4OCwgMjM1LCAzMywgMSwgCisgICAgMTcyLCAyMzUsIDMzLCAxLCAyMTUsIDI0NSwgMjM1LCAzMywgMSwgMjQ5LCAxMzYsIDIzNSwgMzMsIDEsIDI0OCwgMjAwLCAKKyAgICAyMzUsIDMzLCAxLCAxNzgsIDIzNSwgMzMsIDEsIDE4MywgMjM1LCAzMywgMSwgMjEzLCAyNTIsIDIzNSwgMzMsIDEsIDE5NCwgCisgICAgMjM1LCAzMywgMSwgMjI0LCAxMzgsIDIzNSwgMzMsIDEsIDIwMywgOTAsIDIzNSwgMzMsIDEsIDIxMCwgMTE0LCAyMzUsIDMzLCAKKyAgICAxLCAyMDgsIDE3OSwgMjM1LCAzMywgMSwgMjEyLCA2NCwgMjM1LCAzMywgMSwgMTQ0LCAyMzUsIDMzLCAyLCAyMTgsIDEwMCwgCisgICAgMjM1LCAzMywgMiwgMjUwLCAxMjIsIDIzNSwgMzMsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCAzMywgMjIsIDIsIDcwLCAyMzUsIAorICAgIDMzLCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgMzMsIDIyLCAyLCA2NiwgMjM1LCAzMywgMjIsIDIsIDIwMywgMTgyLCAyMzUsIAorICAgIDMzLCAyMiwgMiwgMTA5LCAxNDYsIDIzNSwgMzMsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMzUsIDMzLCAyMiwgMiwgMjQ3LCAKKyAgICAxNTIsIDcyLCAyMzUsIDMzLCAyMiwgMiwgNzIsIDIzNSwgMzMsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCAzMywgMjIsIDIsIAorICAgIDI0NywgMTUyLCA3NCwgMjM1LCAzMywgMjIsIDIsIDc0LCAyMzUsIDMzLCAyMiwgMiwgMjUwLCAxMzksIDIzNSwgMzMsIDIsIAorICAgIDIwMiwgMjA4LCAyMzUsIDMzLCAyMTcsIDg2LCAyMzUsIDMzLCAxLCAxMDksIDIxMiwgMjE2LCAyMzUsIDMzLCAxLCAxMDksIAorICAgIDIyNCwgMTM5LCAyMzUsIDMzLCAyMiwgMiwgMTA5LCAxNTYsIDIzNSwgMzMsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMzUsIAorICAgIDMzLCAxNywgMTk5LCA4MSwgMjM1LCAzMywgMTcsIDEwMiwgMjM1LCAzMywgMTcsIDEwNSwgMjM1LCAzMywgMTcsIDE0NywgCisgICAgMjM1LCAzMywgMTcsIDE0OSwgMjM1LCAzMywgMTcsIDE2NCwgMjM1LCAzMywgMTcsIDE4NywgMjM1LCAzMywgMTcsIDIxMCwgCisgICAgMTM1LCAyMzUsIDMzLCAxNywgMTkyLCAyMzUsIDMzLCAxNywgMjE5LCAxMTMsIDIzNSwgMzMsIDI1MiwgMywgNTQsIDIzNSwgCisgICAgMzMsIDIxMiwgMTQ5LCA1NCwgMjM1LCAzMywgMSwgMTk5LCA3NywgMjE3LCAyNCwgMiwgMjQ3LCAxNDksIDIxNywgMjQsIDIsIAorICAgIDI1MSwgMzMsIDIxNywgMjQsIDIsIDIwMiwgMjAzLCAyMTcsIDI0LCAxLCA2MiwgMjE3LCAyNCwgMSwgMjUyLCAxMzgsIDIxNywgCisgICAgMjQsIDEsIDcwLCAyMTcsIDI0LCAxLCAyMjgsIDE1MSwgMjE3LCAyNCwgMSwgNjYsIDIxNywgMjQsIDEsIDIwMywgMTgyLCAKKyAgICAyMTcsIDI0LCAxLCAxMDksIDE0NiwgMjE3LCAyNCwgMSwgMTA5LCAxNTYsIDIxNywgMjQsIDEsIDcyLCAyMTcsIDI0LCAxLCAKKyAgICAyNTEsIDE3NiwgMjE3LCAyNCwgMSwgNzQsIDIxNywgMjQsIDEsIDI1MCwgMTM5LCAyMTcsIDI0LCAxLCAxNjEsIDIxNywgMjQsIAorICAgIDEsIDIyNiwgMjA3LCAyMTcsIDI0LCAxLCAyMzYsIDg5LCAyMTcsIDI0LCAxLCAyMzUsIDE5OSwgMjE3LCAyNCwgMSwgMjE5LCAKKyAgICAyNTMsIDIxNywgMjQsIDEsIDI0NywgMTkwLCAyMTcsIDI0LCAxLCAyNDcsIDM3LCAyMTcsIDI0LCAxLCAyMjcsIDI0OCwgCisgICAgMjE3LCAyNCwgMSwgMjI3LCAyMTUsIDIxNywgMjQsIDEsIDIxOCwgNjAsIDIxNywgMjQsIDEsIDIwNCwgMjUzLCAyMTcsIDI0LCAKKyAgICAxLCAyMDQsIDI0MSwgMjE3LCAyNCwgMSwgMjQxLCAyMjAsIDIxNywgMjQsIDEsIDI0MSwgMjA0LCAyMTcsIDI0LCAxLCAyMTksIAorICAgIDIxLCAyMTcsIDI0LCAxLCAyMDcsIDM2LCAyMTcsIDI0LCAxLCAyMDYsIDEyMiwgMjE3LCAyNCwgMSwgMjQyLCA1OCwgMjE3LCAKKyAgICAyNCwgMSwgMjQxLCAxMDAsIDIxNywgMjQsIDEsIDE4OCwgMjE3LCAyNCwgMSwgMTcyLCAyMTcsIDI0LCAxLCAyMTUsIDI0NSwgCisgICAgMjE3LCAyNCwgMSwgMjQ5LCAxMzYsIDIxNywgMjQsIDEsIDI0OCwgMjAwLCAyMTcsIDI0LCAxLCAxNzgsIDIxNywgMjQsIDEsIAorICAgIDE4MywgMjE3LCAyNCwgMSwgMjEzLCAyNTIsIDIxNywgMjQsIDEsIDE5NCwgMjE3LCAyNCwgMSwgMjI0LCAxMzgsIDIxNywgCisgICAgMjQsIDEsIDIwMywgOTAsIDIxNywgMjQsIDEsIDIxMCwgMTE0LCAyMTcsIDI0LCAxLCAyMDgsIDE3OSwgMjE3LCAyNCwgMSwgCisgICAgMjEyLCA2NCwgMjE3LCAyNCwgMSwgMTQ0LCAyMTcsIDI0LCAyLCAyMTgsIDEwMCwgMjE3LCAyNCwgMiwgMjUwLCAxMjIsIAorICAgIDIxNywgMjQsIDIyLCAyLCAyNTIsIDEzOCwgMjE3LCAyNCwgMjIsIDIsIDcwLCAyMTcsIDI0LCAyMiwgMiwgMjI4LCAxNTEsIAorICAgIDIxNywgMjQsIDIyLCAyLCA2NiwgMjE3LCAyNCwgMjIsIDIsIDIwMywgMTgyLCAyMTcsIDI0LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDIxNywgMjQsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMTcsIDI0LCAyMiwgMiwgNzIsIDIxNywgMjQsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjE3LCAyNCwgMjIsIDIsIDc0LCAyMTcsIDI0LCAyMiwgMiwgMjUwLCAxMzksIDIxNywgMjQsIDIsIDIwMiwgMjA4LCAKKyAgICAyMTcsIDI0LCAyNTEsIDE3NywgMjI1LCAyLCA4MSwgMjE3LCAyNCwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDIxNywgMjQsIDEsIAorICAgIDIxMiwgMjE1LCAyMTcsIDI0LCAxLCAyMTMsIDkzLCAyMTcsIDI0LCAxLCAxOTksIDE2NiwgMjE3LCAyNCwgMSwgMTA5LCAKKyAgICAyMTIsIDIxNiwgMjE3LCAyNCwgMSwgMTA5LCAyMjQsIDEzOSwgMjE3LCAyNCwgMjIsIDIsIDEwOSwgMTU2LCAyMTcsIDI0LCAKKyAgICAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMjE3LCAyNCwgMTcsIDE5OSwgODEsIDIxNywgMjQsIDE3LCAxMDIsIDIxNywgMjQsIAorICAgIDE3LCAxMDUsIDIxNywgMjQsIDE3LCAxNDcsIDIxNywgMjQsIDE3LCAxNDksIDIxNywgMjQsIDE3LCAxNjQsIDIxNywgMjQsIAorICAgIDE3LCAxODcsIDIxNywgMjQsIDE3LCAyMTAsIDEzNSwgMjE3LCAyNCwgMTcsIDE5MiwgMjE3LCAyNCwgMTcsIDIxOSwgMTEzLCAKKyAgICAyMTcsIDI0LCAyMjgsIDEzLCAyMTcsIDI0LCAxLCAyMDEsIDExNCwgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgCisgICAgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDIxNywgMjQsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDIxNywgCisgICAgMjQsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIDIxNywgMjQsIDIzNiwgMjE5LCAxMTIsIDIzOCwgMjI3LCAyMTcsIDI0LCAKKyAgICAyMzYsIDIxOSwgMTI2LCAyMDksIDk3LCA0NSwgMiwgMjUxLCAzMywgNDUsIDIsIDIwMiwgMjAzLCA0NSwgMSwgNjIsIDQ1LCAKKyAgICAxLCAyNTIsIDEzOCwgNDUsIDEsIDcwLCA0NSwgMSwgMjI4LCAxNTEsIDQ1LCAxLCA2NiwgNDUsIDEsIDIwMywgMTgyLCA0NSwgCisgICAgMSwgNzIsIDQ1LCAxLCAyMzgsIDI1NSwgNDUsIDEsIDI1MSwgMTc2LCA0NSwgMSwgNzQsIDQ1LCAxLCAyMTcsIDYzLCA0NSwgCisgICAgMSwgMjUwLCAxMzksIDQ1LCAxLCAxNjEsIDQ1LCAxLCAyMTksIDI1MywgNDUsIDEsIDI0NywgMTkwLCA0NSwgMSwgMjI3LCAKKyAgICAyNDgsIDQ1LCAxLCAyMTgsIDYwLCA0NSwgMSwgMjA0LCAyNTMsIDQ1LCAxLCAyMTksIDIxLCA0NSwgMSwgMjA3LCAzNiwgNDUsIAorICAgIDEsIDE4OCwgNDUsIDEsIDIxOSwgMywgNDUsIDEsIDE3MiwgNDUsIDEsIDE3OCwgNDUsIDEsIDE4MywgNDUsIDEsIDIxMywgCisgICAgMjUyLCA0NSwgMSwgMjEyLCAyMTUsIDQ1LCAxLCAxOTQsIDQ1LCAxLCAyMjQsIDEzOCwgNDUsIDEsIDIyNCwgMTI5LCA0NSwgCisgICAgMSwgMjAzLCA5MCwgNDUsIDEsIDIxMCwgMTE0LCA0NSwgMSwgMjA4LCAxNzksIDQ1LCAxLCAyMTIsIDY0LCA0NSwgMSwgMTQ0LCAKKyAgICA0NSwgMjIsIDIsIDI1MiwgMTM4LCA0NSwgMjIsIDIsIDcwLCA0NSwgMjIsIDIsIDIyOCwgMTUxLCA0NSwgMjIsIDIsIDY2LCAKKyAgICA0NSwgMjIsIDIsIDIwMywgMTgyLCA0NSwgMjIsIDIsIDcyLCA0NSwgMjIsIDIsIDIzOCwgMjU1LCA0NSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCA0NSwgMjIsIDIsIDc0LCA0NSwgMjIsIDIsIDIxNywgNjMsIDQ1LCAyMiwgMiwgMjUwLCAxMzksIDQ1LCAyLCAyMDIsIAorICAgIDIwOCwgNDUsIDIxNywgODYsIDQ1LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgNDUsIDE3LCAxOTksIDgxLCA0NSwgMTcsIDEwMiwgCisgICAgNDUsIDE3LCAxMDUsIDQ1LCAxNywgMTQ3LCA0NSwgMTcsIDE0OSwgNDUsIDE3LCAxNjQsIDQ1LCAxNywgMTg3LCA0NSwgMTcsIAorICAgIDIxMCwgMTM1LCA0NSwgMTcsIDE5MiwgNDUsIDE3LCAyMTksIDExMywgNDUsIDQxLCAyMDYsIDE2NiwgNDUsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDQ1LCA0MSwgMTEyLCAyMDYsIDUwLCA0NSwgMjQxLCAyMzMsIDU0LCA0NSwgMjIxLCA5MCwgNTQsIDQ1LCAKKyAgICAyMDAsIDQ5LCA1NCwgNDUsIDI0MSwgMTcyLCA1NCwgNDUsIDI0MiwgMjQ2LCA1NCwgNDUsIDI1MCwgMTg5LCA4OCwgNTQsIAorICAgIDQ1LCAyMTIsIDE0OSwgNTQsIDQ1LCA0MSwgNTQsIDE4MCwgMiwgMzgsIDI0NywgMTUwLCA1NiwgMTgwLCAyLCAyNDcsIDE0OSwgCisgICAgMTgwLCAyLCAyNTEsIDMzLCAxODAsIDIsIDIwMiwgMjAzLCAxODAsIDEsIDYyLCAxODAsIDEsIDI1MiwgMTM4LCAxODAsIDEsIAorICAgIDcwLCAxODAsIDEsIDIyOCwgMTUxLCAxODAsIDEsIDY2LCAxODAsIDEsIDIwMywgMTgyLCAxODAsIDEsIDEwOSwgMTQ2LCAKKyAgICAxODAsIDEsIDEwOSwgMTU2LCAxODAsIDEsIDcyLCAxODAsIDEsIDIzOCwgMjU1LCAxODAsIDEsIDI1MSwgMTc2LCAxODAsIDEsIAorICAgIDc0LCAxODAsIDEsIDIxNywgNjMsIDE4MCwgMSwgMjUwLCAxMzksIDE4MCwgMSwgMTYxLCAxODAsIDEsIDIyNiwgMjA3LCAKKyAgICAxODAsIDEsIDIzNiwgODksIDE4MCwgMSwgMjM1LCAxOTksIDE4MCwgMSwgMjE5LCAyNTMsIDE4MCwgMSwgMjQ3LCAxOTAsIAorICAgIDE4MCwgMSwgMjQ3LCAzNywgMTgwLCAxLCAyMjcsIDI0OCwgMTgwLCAxLCAyMjcsIDIxNSwgMTgwLCAxLCAyMTgsIDYwLCAKKyAgICAxODAsIDEsIDIwNCwgMjUzLCAxODAsIDEsIDIwNCwgMjQxLCAxODAsIDEsIDI0MSwgMjIwLCAxODAsIDEsIDI0MSwgMjA0LCAKKyAgICAxODAsIDEsIDIxOSwgMjEsIDE4MCwgMSwgMjA3LCAzNiwgMTgwLCAxLCAyMDYsIDEyMiwgMTgwLCAxLCAyNDIsIDU4LCAxODAsIAorICAgIDEsIDI0MSwgMTAwLCAxODAsIDEsIDE4OCwgMTgwLCAxLCAxNzIsIDE4MCwgMSwgMjE1LCAyNDUsIDE4MCwgMSwgMjQ5LCAKKyAgICAxMzYsIDE4MCwgMSwgMjQ4LCAyMDAsIDE4MCwgMSwgMTc4LCAxODAsIDEsIDE4MywgMTgwLCAxLCAyMTMsIDI1MiwgMTgwLCAKKyAgICAxLCAyMTIsIDIxNSwgMTgwLCAxLCAxOTQsIDE4MCwgMSwgMjI0LCAxMzgsIDE4MCwgMSwgMjI0LCAxMjksIDE4MCwgMSwgCisgICAgMjAzLCA5MCwgMTgwLCAxLCAyMTAsIDExNCwgMTgwLCAxLCAyMDgsIDE3OSwgMTgwLCAxLCAyMTIsIDY0LCAxODAsIDEsIAorICAgIDE0NCwgMTgwLCAyLCAyNTAsIDEyMiwgMTgwLCAyMiwgMiwgMjUyLCAxMzgsIDE4MCwgMjIsIDIsIDcwLCAxODAsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTgwLCAyMiwgMiwgNjYsIDE4MCwgMjIsIDIsIDIwMywgMTgyLCAxODAsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTgwLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTgwLCAyMiwgMiwgNzIsIDE4MCwgMjIsIDIsIDIzOCwgMjU1LCAxODAsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTgwLCAyMiwgMiwgNzQsIDE4MCwgMjIsIDIsIDIxNywgNjMsIDE4MCwgMjIsIDIsIDI1MCwgMTM5LCAKKyAgICAxODAsIDIsIDIwMiwgMjA4LCAxODAsIDIyNSwgMiwgODEsIDE4MCwgMjUxLCAxNzcsIDIyNSwgMiwgODEsIDE4MCwgMSwgCisgICAgMjA1LCAzMiwgMTgwLCAxLCAyMzksIDkzLCAxODAsIDEsIDIxMiwgMTk2LCAxODAsIDEsIDEwOSwgMjEyLCAyMTYsIDE4MCwgCisgICAgMSwgMTA5LCAyMjQsIDEzOSwgMTgwLCAyMiwgMiwgMTA5LCAxNTYsIDE4MCwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE4MCwgCisgICAgMTcsIDE5OSwgODEsIDE4MCwgMTcsIDEwMiwgMTgwLCAxNywgMTA1LCAxODAsIDE3LCAxNDcsIDE4MCwgMTcsIDE0OSwgMTgwLCAKKyAgICAxNywgMTY0LCAxODAsIDE3LCAxODcsIDE4MCwgMTcsIDIxMCwgMTM1LCAxODAsIDE3LCAxOTIsIDE4MCwgMTcsIDIxOSwgCisgICAgMTEzLCAxODAsIDIzNiwgMjE5LCAxNywgMTk5LCA4MiwgMzYsIDIxNywgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIAorICAgIDIzNiwgMjE5LCAxNywgMTEyLCAzNiwgMjE3LCAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAKKyAgICAxMjAsIDM2LCAyMTcsIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIDEyNiwgMzYsIDIxNywgCisgICAgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTEyLCAzNiwgMjM4LCA1NiwgMjE1LCA1MCwgNzYsIAorICAgIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIDEyMCwgMzYsIDIzOCwgNTYsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAKKyAgICAyMTksIDE3LCAxMjYsIDM2LCAyMzgsIDU2LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIsIDIwNCwgMTc1LCAyMjcsIDYzLCAKKyAgICAyLCAyMDgsIDI0MywgMjQ3LCAxNDksIDIyNywgNjMsIDIsIDI0NywgMTQ5LCAyMjcsIDYzLCAyLCAyNTEsIDMzLCAyMjcsIAorICAgIDYzLCAyLCAyMDIsIDIwMywgMjI3LCA2MywgMSwgNjIsIDIyNywgNjMsIDEsIDI1MiwgMTM4LCAyMjcsIDYzLCAxLCA3MCwgCisgICAgMjI3LCA2MywgMSwgMjI4LCAxNTEsIDIyNywgNjMsIDEsIDY2LCAyMjcsIDYzLCAxLCAyMDMsIDE4MiwgMjI3LCA2MywgMSwgCisgICAgMTA5LCAxNDYsIDIyNywgNjMsIDEsIDEwOSwgMTU2LCAyMjcsIDYzLCAxLCA3MiwgMjI3LCA2MywgMSwgMjM4LCAyNTUsIAorICAgIDIyNywgNjMsIDEsIDI1MSwgMTc2LCAyMjcsIDYzLCAxLCA3NCwgMjI3LCA2MywgMSwgMjE3LCA2MywgMjI3LCA2MywgMSwgCisgICAgMjUwLCAxMzksIDIyNywgNjMsIDEsIDE2MSwgMjI3LCA2MywgMSwgMjI2LCAyMDcsIDIyNywgNjMsIDEsIDIzNiwgODksIAorICAgIDIyNywgNjMsIDEsIDIzNSwgMTk5LCAyMjcsIDYzLCAxLCAyMTksIDI1MywgMjI3LCA2MywgMSwgMjQ3LCAxOTAsIDIyNywgCisgICAgNjMsIDEsIDI0NywgMzcsIDIyNywgNjMsIDEsIDIyNywgMjQ4LCAyMjcsIDYzLCAxLCAyMjcsIDIxNSwgMjI3LCA2MywgMSwgCisgICAgMjE4LCA2MCwgMjI3LCA2MywgMSwgMjA0LCAyNTMsIDIyNywgNjMsIDEsIDIwNCwgMjQxLCAyMjcsIDYzLCAxLCAyNDEsIAorICAgIDIyMCwgMjI3LCA2MywgMSwgMjQxLCAyMDQsIDIyNywgNjMsIDEsIDIxOSwgMjEsIDIyNywgNjMsIDEsIDIwNywgMzYsIDIyNywgCisgICAgNjMsIDEsIDIwNiwgMTIyLCAyMjcsIDYzLCAxLCAyNDIsIDU4LCAyMjcsIDYzLCAxLCAyNDEsIDEwMCwgMjI3LCA2MywgMSwgCisgICAgMTg4LCAyMjcsIDYzLCAxLCAxNzIsIDIyNywgNjMsIDEsIDIxNSwgMjQ1LCAyMjcsIDYzLCAxLCAyNDksIDEzNiwgMjI3LCAKKyAgICA2MywgMSwgMjQ4LCAyMDAsIDIyNywgNjMsIDEsIDE3OCwgMjI3LCA2MywgMSwgMTgzLCAyMjcsIDYzLCAxLCAyMTMsIDI1MiwgCisgICAgMjI3LCA2MywgMSwgMjEyLCAyMTUsIDIyNywgNjMsIDEsIDE5NCwgMjI3LCA2MywgMSwgMjI0LCAxMzgsIDIyNywgNjMsIDEsIAorICAgIDIwMywgOTAsIDIyNywgNjMsIDEsIDIxMCwgMTE0LCAyMjcsIDYzLCAxLCAyMDgsIDE3OSwgMjI3LCA2MywgMSwgMjEyLCA2NCwgCisgICAgMjI3LCA2MywgMSwgMTQ0LCAyMjcsIDYzLCAyLCAyMTgsIDEwMCwgMjI3LCA2MywgMiwgMjUwLCAxMjIsIDIyNywgNjMsIDIyLCAKKyAgICAyLCAyNTIsIDEzOCwgMjI3LCA2MywgMjIsIDIsIDcwLCAyMjcsIDYzLCAyMiwgMiwgMjI4LCAxNTEsIDIyNywgNjMsIDIyLCAKKyAgICAyLCA2NiwgMjI3LCA2MywgMjIsIDIsIDIwMywgMTgyLCAyMjcsIDYzLCAyMiwgMiwgMTA5LCAxNDYsIDIyNywgNjMsIDIyLCAKKyAgICAyLCAxMDksIDIxMiwgMjE2LCAyMjcsIDYzLCAyMiwgMiwgNzIsIDIyNywgNjMsIDIyLCAyLCAyMzgsIDI1NSwgMjI3LCA2MywgCisgICAgMjIsIDIsIDI1MSwgMTc2LCAyMjcsIDYzLCAyMiwgMiwgNzQsIDIyNywgNjMsIDIyLCAyLCAyMTcsIDYzLCAyMjcsIDYzLCAKKyAgICAyMiwgMiwgMjUwLCAxMzksIDIyNywgNjMsIDIsIDIwMiwgMjA4LCAyMjcsIDYzLCAyMjUsIDIsIDgxLCAyMjcsIDYzLCAyNTEsIAorICAgIDE3NywgMjI1LCAyLCA4MSwgMjI3LCA2MywgMSwgMjM3LCAxOTUsIDIyNywgNjMsIDEsIDEwOSwgMjEyLCAyMTYsIDIyNywgCisgICAgNjMsIDEsIDEwOSwgMjI0LCAxMzksIDIyNywgNjMsIDIyLCAyLCAxMDksIDE1NiwgMjI3LCA2MywgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDIyNywgNjMsIDE3LCAxOTksIDgxLCAyMjcsIDYzLCAxNywgMTAyLCAyMjcsIDYzLCAxNywgMTA1LCAyMjcsIDYzLCAKKyAgICAxNywgMTQ3LCAyMjcsIDYzLCAxNywgMTQ5LCAyMjcsIDYzLCAxNywgMTY0LCAyMjcsIDYzLCAxNywgMTg3LCAyMjcsIDYzLCAKKyAgICAxNywgMjEwLCAxMzUsIDIyNywgNjMsIDE3LCAxOTIsIDIyNywgNjMsIDE3LCAyMTksIDExMywgMjI3LCA2MywgMiwgMjI3LCAKKyAgICAyMDEsIDIyNywgNjMsIDIsIDIwMywgMjI2LCAxNDIsIDIsIDI0NywgMTQ5LCAxNDIsIDIsIDI1MSwgMzMsIDE0MiwgMiwgCisgICAgMjAyLCAyMDMsIDE0MiwgMSwgNjIsIDE0MiwgMSwgMjUyLCAxMzgsIDE0MiwgMSwgNzAsIDE0MiwgMSwgMjI4LCAxNTEsIAorICAgIDE0MiwgMSwgNjYsIDE0MiwgMSwgMjAzLCAxODIsIDE0MiwgMSwgMTA5LCAxNDYsIDE0MiwgMSwgMTA5LCAxNTYsIDE0MiwgMSwgCisgICAgNzIsIDE0MiwgMSwgMjM4LCAyNTUsIDE0MiwgMSwgMjUxLCAxNzYsIDE0MiwgMSwgNzQsIDE0MiwgMSwgMjE3LCA2MywgMTQyLCAKKyAgICAxLCAyNTAsIDEzOSwgMTQyLCAxLCAxNjEsIDE0MiwgMSwgMjI2LCAyMDcsIDE0MiwgMSwgMjM2LCA4OSwgMTQyLCAxLCAyMzUsIAorICAgIDE5OSwgMTQyLCAxLCAyMTksIDI1MywgMTQyLCAxLCAyNDcsIDE5MCwgMTQyLCAxLCAyNDcsIDM3LCAxNDIsIDEsIDIyNywgCisgICAgMjQ4LCAxNDIsIDEsIDIyNywgMjE1LCAxNDIsIDEsIDIxOCwgNjAsIDE0MiwgMSwgMjA0LCAyNTMsIDE0MiwgMSwgMjA0LCAKKyAgICAyNDEsIDE0MiwgMSwgMjQxLCAyMjAsIDE0MiwgMSwgMjQxLCAyMDQsIDE0MiwgMSwgMjE5LCAyMSwgMTQyLCAxLCAyMDcsIAorICAgIDM2LCAxNDIsIDEsIDIwNiwgMTIyLCAxNDIsIDEsIDI0MiwgNTgsIDE0MiwgMSwgMjQxLCAxMDAsIDE0MiwgMSwgMTg4LCAKKyAgICAxNDIsIDEsIDIxOSwgMywgMTQyLCAxLCAxNzIsIDE0MiwgMSwgMjE1LCAyNDUsIDE0MiwgMSwgMjQ5LCAxMzYsIDE0MiwgMSwgCisgICAgMjQ4LCAyMDAsIDE0MiwgMSwgMTc4LCAxNDIsIDEsIDE4MywgMTQyLCAxLCAyMTMsIDI1MiwgMTQyLCAxLCAyMTIsIDIxNSwgCisgICAgMTQyLCAxLCAxOTQsIDE0MiwgMSwgMjI0LCAxMzgsIDE0MiwgMSwgMjI0LCAxMjksIDE0MiwgMSwgMjAzLCA5MCwgMTQyLCAxLCAKKyAgICAyMTAsIDExNCwgMTQyLCAxLCAyMDgsIDE3OSwgMTQyLCAxLCAyMTIsIDY0LCAxNDIsIDEsIDE0NCwgMTQyLCAxLCAyMDQsIAorICAgIDIyMiwgMTQyLCAyLCAyNTAsIDEyMiwgMTQyLCAyMiwgMiwgMjUyLCAxMzgsIDE0MiwgMjIsIDIsIDcwLCAxNDIsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTQyLCAyMiwgMiwgNjYsIDE0MiwgMjIsIDIsIDIwMywgMTgyLCAxNDIsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTQyLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTQyLCAyMiwgMiwgNzIsIDE0MiwgMjIsIDIsIDIzOCwgMjU1LCAxNDIsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTQyLCAyMiwgMiwgNzQsIDE0MiwgMjIsIDIsIDIxNywgNjMsIDE0MiwgMjIsIDIsIDI1MCwgMTM5LCAKKyAgICAxNDIsIDIsIDIwMiwgMjA4LCAxNDIsIDEsIDczLCAyMTMsIDEyOSwgMTQyLCAyLCAyMTYsIDEyOSwgMTQyLCAxLCAyNDYsIAorICAgIDIyNSwgMjIzLCAyNDMsIDE0MiwgMSwgMjQ2LCAyMjUsIDIwMCwgMTIzLCAxNDIsIDEsIDI0NiwgMjI1LCAyMjQsIDEzMCwgCisgICAgMTQyLCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMTcsIDc0LCAxNDIsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIzNiwgMjM3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIzOCwgMjI0LCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwNCwgCisgICAgMTYyLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwNiwgMTU3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIwNCwgMTYxLCAxNDIsIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNywgMTA3LCAxNDIsIDEsIDI1MCwgMjM0LCAyMjgsIDE1MSwgMTQyLCAxLCAxMDksIDIxMiwgCisgICAgMjE2LCAxNDIsIDEsIDEwOSwgMjI0LCAxMzksIDE0MiwgMjIsIDIsIDEwOSwgMTU2LCAxNDIsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCAxNDIsIDE3LCAxOTksIDgxLCAxNDIsIDE3LCAxMDIsIDE0MiwgMTcsIDEwNSwgMTQyLCAxNywgMTQ3LCAxNDIsIDE3LCAKKyAgICAxNDksIDE0MiwgMTcsIDE2NCwgMTQyLCAxNywgMTg3LCAxNDIsIDE3LCAyMTAsIDEzNSwgMTQyLCAxNywgMTkyLCAxNDIsIAorICAgIDE3LCAyMTksIDExMywgMTQyLCA0MSwgMjA2LCAxNjYsIDE0MiwgNDEsIDExMiwgMjMzLCA4MiwgMTQyLCA0MSwgMTEyLCAKKyAgICAyMDYsIDUwLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDE0MiwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDE0MiwgCisgICAgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMDksIDk4LCAxNDIsIDIzNiwgMjE5LCAxMTIsIAorICAgIDIzOCwgMjI3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIwOSwgOTcsIDE0MiwgMjQxLCAyMzgsIDgxLCAxNDIsIDEsIDI0NiwgCisgICAgMjI1LCAyMTksIDIyLCAxNDIsIDEsIDI0NiwgMjI1LCAyMjAsIDIxNCwgMTQyLCAxLCAyNDYsIDIyNSwgMjEyLCAyMTYsIAorICAgIDE0MiwgMSwgMjQ2LCAyMjUsIDE1NiwgMTQyLCAxLCAyNDYsIDIyNSwgMjI0LCAxMzksIDE0MiwgMSwgMjQ2LCAyMjUsIDIyNywgCisgICAgMTE4LCAxNDMsIDIsIDI1MSwgMzIsIDE0MywgMiwgMjAyLCAyMDIsIDE0MywgMSwgMjUwLCAxMTAsIDE0MywgMSwgMjUyLCAKKyAgICA5MiwgMTQzLCAxLCAyNTEsIDIwMSwgMTQzLCAxLCAyNTEsIDIxNiwgMTQzLCAxLCAyMjgsIDIsIDE0MywgMSwgMjI4LCAxNTAsIAorICAgIDE0MywgMSwgMjAzLCAxNzMsIDE0MywgMSwgMjAzLCAxNzYsIDE0MywgMSwgMjI4LCAyOCwgMTQzLCAxLCAyMjgsIDI5LCAKKyAgICAxNDMsIDEsIDIyOCwgMTM2LCAxNDMsIDEsIDIyOCwgMTM4LCAxNDMsIDEsIDIzOCwgMjUsIDE0MywgMSwgMjM4LCAyNTAsIAorICAgIDE0MywgMSwgMjUxLCAxNjEsIDE0MywgMSwgMjE2LCAyMjksIDE0MywgMSwgMjE3LCA1NiwgMTQzLCAxLCAyNTAsIDEyNSwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjI3LCAxMywgMTQzLCAxLCAyMjIsIDIwNSwgMjI3LCAxMywgMTQzLCAxLCAyNTEsIDExNSwgCisgICAgMjM2LCAzNSwgMTQzLCAxLCAyMjIsIDIwNSwgMjM2LCAzNSwgMTQzLCAxLCAyMjcsIDYyLCAyMjAsIDE1NCwgMTQzLCAxLCAKKyAgICAyMTIsIDUsIDIzNiwgMzUsIDE0MywgMSwgMjUxLCAxMTUsIDI0NywgMTAyLCAxNDMsIDEsIDIyMiwgMjA1LCAyNDcsIDEwMiwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjI3LCAyMzAsIDE0MywgMSwgMjIyLCAyMDUsIDIyNywgMjMwLCAxNDMsIDEsIDIwNywgMjksIAorICAgIDIyMCwgMTU0LCAxNDMsIDEsIDIwNywgMjksIDIxMiwgNCwgMjIwLCAxNTUsIDE0MywgMSwgMjEyLCA1LCAyMjcsIDIzMCwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjA0LCAyNDksIDE0MywgMSwgMjIyLCAyMDUsIDIwNCwgMjQ5LCAxNDMsIDEsIDI1MSwgMTE1LCAKKyAgICAyNDEsIDIxMSwgMTQzLCAxLCAyMjIsIDIwNSwgMjQxLCAyMTEsIDE0MywgMSwgMjIwLCAyNDIsIDIyMCwgMTA4LCAxNDMsIDEsIAorICAgIDIxMiwgNSwgMjQxLCAyMTEsIDE0MywgMSwgMjUxLCAxMTUsIDIwNiwgMjA5LCAxNDMsIDEsIDIyMiwgMjA1LCAyMDYsIDIwOSwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjQxLCAyMzEsIDE0MywgMSwgMjIyLCAyMDUsIDI0MSwgMjMxLCAxNDMsIDEsIDI0MiwgNiwgCisgICAgMjIwLCAxMDgsIDE0MywgMSwgMjEyLCA1LCAyNDEsIDIzMSwgMTQzLCAxLCAyNTEsIDExNSwgMjE2LCA4MSwgMTQzLCAxLCAKKyAgICAyMjIsIDIwNSwgMjE2LCA4MSwgMTQzLCAxLCAyNTEsIDExNSwgMjQ5LCA0NiwgMTQzLCAxLCAyMjIsIDIwNSwgMjQ5LCA0NiwgCisgICAgMTQzLCAxLCAyMjIsIDExOCwgMTQzLCAxLCAyNTEsIDk1LCAyNDksIDQ2LCAxNDMsIDEsIDIwMCwgNTYsIDE0MywgMSwgMjEzLCAKKyAgICAxOTYsIDE0MywgMSwgMjQyLCA2LCAyMjUsIDQ5LCAxNDMsIDEsIDIwMywgNjEsIDE0MywgMSwgMjA3LCAyOSwgMjExLCAyMzMsIAorICAgIDE0MywgMSwgMjIwLCAyNDIsIDIxMSwgMjMzLCAxNDMsIDEsIDI0MiwgNiwgMjExLCAyMzMsIDE0MywgMSwgMjM0LCAxNDUsIAorICAgIDE0MywgMSwgMjIwLCAyNDIsIDIyNSwgNDksIDE0MywgMSwgMjM3LCAxNDksIDE0MywgMiwgMjUxLCAxNTAsIDE0MywgMjIsIAorICAgIDIsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAyMjYsIDIzMiwgMjUxLCAyMTgsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDI1MSwgCisgICAgMjE4LCAxNDMsIDIyLCAyLCAyMjYsIDIzMiwgMjI4LCAyNSwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjI4LCAyNSwgMTQzLCAKKyAgICAyMiwgMiwgMjI2LCAyMzIsIDIxNiwgMjA5LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMTYsIDIwOSwgMTQzLCAyMiwgMiwgCisgICAgMjM2LCA3OCwgMTQzLCAyMiwgMiwgMjI2LCA3MywgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjI2LCA3MywgMTQzLCAyMiwgMiwgCisgICAgMjI2LCA3NSwgMjQxLCAxNTAsIDE0MywgMjIsIDIsIDIyNiwgNzQsIDIzNCwgMjM0LCAyNTEsIDIxMSwgMTQzLCAyMiwgMiwgCisgICAgMjI2LCA3NCwgMjM0LCAyMzQsIDI0MSwgNDMsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAyMjYsIDc0LCAyMzQsIDIzNCwgMjM2LCAKKyAgICAzNCwgMTQzLCAyMiwgMiwgMjM2LCAzNCwgMTQzLCAyMjQsIDE1MSwgMTcsIDE5OSwgODEsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAxMDIsIDE0MywgMjI0LCAxNTEsIDE3LCAxMDUsIDE0MywgMjI0LCAxNTEsIDE3LCAxNDcsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAxNDksIDE0MywgMjI0LCAxNTEsIDE3LCAxNjQsIDE0MywgMjI0LCAxNTEsIDE3LCAxODcsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAyMTAsIDEzNSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE5MiwgMTQzLCAyMjQsIDE1MSwgMTcsIDIxOSwgMTEzLCAxNDMsIDIyLCAKKyAgICAyLCAyNDEsIDQzLCAyMzYsIDc4LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMzYsIDM0LCAxNDMsIDIxNCwgMjEyLCAyMjYsIDAsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIyNiwgODksIDIyNywgODIsIDIwNiwgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDIwMiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMTcxLCAyMDYsIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAxNjYsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDE3NSwgMjA2LCAxMTcsIDE3MSwgMjI2LCAxNzksIDIxMywgMjE3LCAyMDYsIAorICAgIDExNywgMTcxLCAyMTksIDE3OSwgMjE5LCAxNjYsIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDcsIDI2LCAyMDYsIDExNywgCisgICAgMTcxLCAyNDYsIDIxMSwgMjQ2LCAyMjEsIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDcsIDI1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMDksIDMwLCAyMDksIDI5LCAyMDYsIDExNywgMTcxLCAyNDYsIDIxMSwgMjQ2LCAyMDcsIDIwNiwgMTE3LCAxNzEsIDE5OSwgCisgICAgMjQ2LCAxOTksIDI1MywgMjA2LCAxMTcsIDE3MSwgMjQwLCAyMTIsIDI0NywgMzQsIDIwNiwgMTE3LCAxNzEsIDIwNSwgMTg2LCAKKyAgICAyMTYsIDkyLCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDExMSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjIwLCAKKyAgICAxMzEsIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIxNSwgMjA3LCAyMDYsIDExNywgMTcxLCAyMTgsIDI0MiwgMjIwLCAyNCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjQwLCAyMTIsIDI0MSwgMTUxLCAyMDYsIDExNywgMTcxLCAyMDUsIDE4NiwgMjA2LCAyMzcsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMjksIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMTE4LCAyMDYsIAorICAgIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDU3LCAyMDYsIDExNywgMTcxLCAyMTgsIDI0MiwgMjE4LCAxMzMsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDI0OCwgMTI1LCAyNDksIDEwMiwgMjA2LCAxMTcsIDE3MSwgMjE1LCAxMDcsIDIxNSwgMTM1LCAyMDYsIDExNywgCisgICAgMTcxLCAyMTUsIDIxOCwgMjE1LCAyMDksIDIwNiwgMTE3LCAxNzEsIDIzNywgMTQsIDIzNywgMTk1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMTUsIDIxOCwgMjE1LCAyMzgsIDIwNiwgMTE3LCAxNzEsIDIzNywgMTQsIDIzNywgMTY4LCAyMDYsIDExNywgMTcxLCAyMTUsIAorICAgIDIxOCwgMjEyLCAxNywgMjA2LCAxMTcsIDE3MSwgMjIxLCAxMzcsIDE3OCwgMjA2LCAxMTcsIDE3MSwgMTk5LCAyNDYsIDIwMCwgCisgICAgODUsIDIwNiwgMTE3LCAxNzEsIDIxMywgMiwgMjEyLCAxNzQsIDIwNiwgMTE3LCAxNzEsIDIxMiwgMTc1LCAyMDYsIDExNywgCisgICAgMTcxLCAyMjQsIDExMSwgMjI0LCAxNjksIDIwNiwgMTE3LCAxNzEsIDIyNCwgNDIsIDIwNiwgMTE3LCAxNzEsIDIwMSwgMSwgCisgICAgMjAxLCAxMDksIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIxMiwgMzMsIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIxMiwgCisgICAgMTQ1LCAyMDYsIDExNywgMTcxLCAyMDksIDMwLCAyMDgsIDIzLCAyMDYsIDExNywgMTcxLCAyMzMsIDIwOCwgMjM0LCA0OCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjI0LCAxMTEsIDI0NiwgMTkxLCAyMDYsIDExNywgMTcxLCAxNjMsIDI1MSwgNzYsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIzMywgMjA4LCAyMTgsIDIzNywgMjA2LCAxMTcsIDE3MSwgMjE2LCAxODYsIDIwNiwgMTE3LCAxNzEsIDIxMSwgCisgICAgMjU1LCA2MiwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIzNCwgMjAxLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUyLCAKKyAgICAxMzgsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTEsIDEwMSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDcwLCAyMDYsIAorICAgIDExNywgMTcxLCAyMTEsIDI1NSwgMjI4LCAxNTEsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyMDQsIDMxLCAyMDYsIDExNywgCisgICAgMTcxLCAyMTEsIDI1NSwgMjA0LCAyOSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDY2LCAyMDYsIDExNywgMTcxLCAyMTEsIAorICAgIDI1NSwgMjAzLCAxODIsIDIwNiwgMTE3LCAxNzEsIDIxNSwgMjIwLCAyMDYsIDExNywgMjQyLCAxOTUsIDE2LCAyNDksIDEwMywgCisgICAgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDcyLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUxLCAyMjEsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxMSwgMjU1LCA3NCwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MSwgMTc3LCAyMjIsIDE5MywgMjA2LCAxMTcsIAorICAgIDE3MSwgMjExLCAyNTUsIDI1MSwgMTc3LCAyMjIsIDE5NCwgMjA2LCAxMTcsIDE3MSwgMjI1LCA5NSwgMjA2LCAxMTcsIDE3MSwgCisgICAgMjIyLCAxOTAsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTkxLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjM4LCAyMTYsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMDYsIDYxLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjA1LCAxMDEsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyMiwgMTk5LCAyNDcsIDEzLCAyMDYsIDExNywgMTcxLCAyMDYsIDEwOSwgMjA2LCAxMTcsIDE3MSwgMjE5LCAKKyAgICAxMjIsIDIwNiwgMTE3LCAxNzEsIDIwMCwgNzksIDIwNiwgMTE3LCAxNzEsIDIzNywgNCwgMjA2LCAxMTcsIDE3LCAxOTksIAorICAgIDgxLCAyMDYsIDExNywgMTcsIDEwMiwgMjA2LCAxMTcsIDE3LCAxMDUsIDIwNiwgMTE3LCAxNywgMTQ3LCAyMDYsIDExNywgCisgICAgMTcsIDE0OSwgMjA2LCAxMTcsIDE3LCAxNjQsIDIwNiwgMTE3LCAxNywgMTg3LCAyMDYsIDExNywgMTcsIDIxMCwgMTM1LCAKKyAgICAyMDYsIDExNywgMTcsIDE5MiwgMjA2LCAxMTcsIDE3LCAyMTksIDExMywgMjA2LCAxMTcsIDE3MSwgMjUxLCA3MiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzYsIDIyNSwgNzUsIDEsIDIyNiwgODgsIDIyNSwgNzUsIDEsIDIyNiwgMTc5LCAyMDcsIDIyNSwgCisgICAgMjI1LCA3NSwgMSwgMjI2LCAxNzksIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMTksIDE3OCwgMjI1LCA3NSwgMSwgMjQ2LCAKKyAgICA5MSwgMjI1LCA3NSwgMSwgMjA5LCAzMCwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIxOCwgMjYsIDIyNSwgNzUsIDEsIDI0MCwgCisgICAgMjExLCAyMjUsIDc1LCAxLCAxMzgsIDIyNSwgNzUsIDEsIDIwNiwgNjIsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAyMDYsIDYyLCAKKyAgICAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjE4LCAyNDEsIDIyNSwgNzUsIDEsIDI0OCwgMTI0LCAyMjUsIDc1LCAxLCAyMTUsIAorICAgIDEwNiwgMjI1LCA3NSwgMSwgMjE1LCAyMTgsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMDYsIDI0NiwgMjI1LCAKKyAgICA3NSwgMSwgMjE1LCAyMTgsIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgCisgICAgMjIxLCAxMzYsIDIyNSwgNzUsIDEsIDE5OSwgMjQ1LCAyMjUsIDc1LCAxLCAyMjQsIDExMSwgMjI0LCAxNjksIDIyNSwgNzUsIAorICAgIDEsIDIyNCwgMTExLCAyMjQsIDcyLCAyMjUsIDc1LCAxLCAyMDEsIDAsIDIyNSwgNzUsIDEsIDIwOSwgMzAsIDIwNywgMjI1LCAKKyAgICAyMjUsIDc1LCAxLCAyMzMsIDIwOCwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDc0LCAyMjUsIDc1LCAxLCAyMzMsIDIwOCwgCisgICAgMjA2LCAyNDYsIDIyNSwgNzUsIDIzOCwgMTk1LCAyMjUsIDc1LCAyMiwgMiwgNjIsIDIyNSwgNzUsIDIyLCAyLCAyMjIsIAorICAgIDE5OSwgMjI3LCA2OCwgMjI1LCA3NSwgMjIsIDIsIDI1MiwgMTM4LCAyMjUsIDc1LCAyMiwgMiwgMjUxLCAxMDEsIDIyNSwgCisgICAgNzUsIDIyLCAyLCA3MCwgMjI1LCA3NSwgMjIsIDIsIDIyOCwgMTUxLCAyMjUsIDc1LCAyMiwgMiwgMjAwLCAxMjMsIDIyNSwgCisgICAgNzUsIDIyLCAyLCAxOTksIDE2NywgMjI1LCA3NSwgMjIsIDIsIDY2LCAyMjUsIDc1LCAyMiwgMiwgMjAzLCAxODIsIDIyNSwgCisgICAgNzUsIDIyLCAyLCAyMjIsIDE5OSwgMjI2LCA3MSwgMjI1LCA3NSwgMjEwLCAxNjIsIDIsIDIyNCwgMTEwLCAyMjUsIDc1LCAKKyAgICAyMTAsIDE2MiwgMiwgMjE4LCAyNiwgMjI1LCA3NSwgMjIsIDIsIDcyLCAyMjUsIDc1LCAyMiwgMiwgMjM4LCAyMzQsIDIyNSwgCisgICAgNzUsIDIyLCAyLCA3NCwgMjI1LCA3NSwgMjIsIDIsIDI1MCwgMTEyLCAyMjUsIDc1LCAyMiwgMiwgMjUxLCAxNzYsIDIyNSwgCisgICAgNzUsIDIyNiwgODksIDE5NCwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgMjM4LCAyMTYsIDIyNSwgNzUsIDE1MCwgMjIyLCAKKyAgICAxOTksIDIwNiwgNjEsIDIyNSwgNzUsIDE1MCwgMjIyLCAxOTksIDIwNiwgMTUsIDIyNSwgNzUsIDE1MCwgMjIyLCAxOTksIAorICAgIDI0NywgMTEwLCAyMjUsIDc1LCAyNDcsIDE1NSwgODEsIDIyNSwgNzUsIDIxOSwgMTMxLCAyMjUsIDc1LCAxNywgMTk5LCA4MSwgCisgICAgMjI1LCA3NSwgMTcsIDEwMiwgMjI1LCA3NSwgMTcsIDEwNSwgMjI1LCA3NSwgMTcsIDE0NywgMjI1LCA3NSwgMTcsIDE0OSwgCisgICAgMjI1LCA3NSwgMTcsIDE2NCwgMjI1LCA3NSwgMTcsIDE4NywgMjI1LCA3NSwgMTcsIDIxMCwgMTM1LCAyMjUsIDc1LCAxNywgCisgICAgMTkyLCAyMjUsIDc1LCAxNywgMjE5LCAxMTMsIDIyNSwgNzUsIDIzMywgMjA4LCAyMTgsIDI0MSwgMjI1LCA3NSwgMjMzLCAKKyAgICAyMDgsIDIyMSwgMTM2LCAyMjUsIDc1LCAxLCAyMjYsIDE4MCwgMjM1LCAxMTYsIDIyNSwgNzUsIDEsIDIyNiwgMTgwLCAyMTgsIAorICAgIDI2LCA3OSwgNSwgMjE3LCA4NiwgNzksIDEzNCwgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjA1LCAzOCwgNjIsIDc5LCAKKyAgICAxMzQsIDIzNSwgNTIsIDIwMCwgMSwgMjIxLCAyMjksIDI1NSwgMTM1LCAyMTMsIDYsIDI0OSwgMTAsIDE3OCwgNzksIDEzNCwgCisgICAgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjU1LCAxMzUsIDIzNSwgNTIsIDIwNSwgMTgsIDE3OCwgNzksIDEzNCwgODIsIAorICAgIDIwMCwgMSwgMjIxLCAyMjksIDIyMiwgNzgsIDE3OCwgNzksIDEzNCwgMjQ2LCAxMDYsIDIwMCwgMSwgMjIxLCAyMjksIDIxMCwgCisgICAgMTIxLCAxNzgsIDc5LCAxMzQsIDI0NywgMTMwLCAyMDAsIDEsIDIyMSwgMjI5LCAyMTUsIDIwOCwgMjEwLCAxMDcsIDE3OCwgCisgICAgNzksIDEzNCwgMjAwLCAxLCAyMjEsIDIyOSwgMjA1LCAxOCwgMjEwLCAxMDcsIDE3OCwgNzksIDEzNCwgMjExLCAyMzEsIAorICAgIDIxMCwgMTA2LCA3OSwgMTM0LCAyNDgsIDM5LCAyMDAsIDEsIDIyMSwgMjI4LCA3OSwgMTM0LCAyNDgsIDE0NiwgMjEwLCA0LCAKKyAgICAyMDAsIDEsIDIyMSwgMjI4LCA3OSwgMTM0LCAyMjgsIDU0LCAyMDUsIDE3LCA3OSwgMTM0LCAyNDEsIDE0MywgMjA1LCAxOCwgCisgICAgMjQ4LCAzOCwgNzksIDEzNCwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxOCwgMzEsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMDUsIDE4LCAKKyAgICAyMTAsIDEwNiwgNzksIDEzNCwgMjE4LCAzMSwgMjA1LCAxOCwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxMywgMjksIDI0NiwgCisgICAgMjUwLCAyMDgsIDE5NiwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxMywgOTcsIDIzNSwgODUsIDIxMCwgMTA2LCA3OSwgMTM0LCAKKyAgICAyNDcsIDEzMCwgMjU1LCAxMzksIDIxMiwgMTc5LCAyMjIsIDc3LCAxNjgsIDI0NywgMTU4LCA3OSwgMTM0LCAyMzUsIDUyLCAKKyAgICAyMDUsIDE3LCA3OSwgMjI0LCA5NiwgMiwgMjQ3LCAzNSwgMjEyLCAxNzgsIDc5LCAyMjQsIDk2LCAyLCAyMjQsIDIyMSwgCisgICAgMjEyLCAxNzgsIDc5LCAyNTAsIDE2MSwgMiwgMjEwLCAxMTcsIDIzNiwgMTgsIDI1NSwgMTQwLCAyMTIsIDE3OCwgNzksIAorICAgIDI1MCwgMTYxLCAyLCAyNTUsIDEzNywgMTcyLCA3OSwgMjUwLCAxNjEsIDIsIDIxMSwgMjAzLCAyMDUsIDEyLCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzYsIDE3LCA3OSwgMiwgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzUsIDExOCwgNzksIDIsIAorICAgIDIxMywgMTkyLCAyNDAsIDIyNSwgMjM1LCA1MywgNzksIDIsIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM2LCAxNywgNzksIDIsIAorICAgIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM1LCAxMTgsIDc5LCAyLCAyMTMsIDE5MiwgMjQwLCAyMjUsIDIxMywgMTkyLCAyMjAsIAorICAgIDE0OSwgNzksIDE3LCAxOTksIDgxLCA3OSwgMTcsIDEwMiwgNzksIDE3LCAxMDUsIDc5LCAxNywgMTQ3LCA3OSwgMTcsIDE0OSwgCisgICAgNzksIDE3LCAxNjQsIDc5LCAxNywgMTg3LCA3OSwgMTcsIDIxMCwgMTM1LCA3OSwgMTcsIDE5MiwgNzksIDE3LCAyMTksIAorICAgIDExMywgNzksIDE3LCAxNjcsIDEwMiwgNzksIDE3LCAxNjcsIDEwNSwgNzksIDE3LCAxNjcsIDE0NywgNzksIDE3LCAxNjcsIAorICAgIDE0OSwgNzksIDE3LCAxNjcsIDE2NCwgNzksIDE3LCAxNjcsIDE4NywgNzksIDE3LCAxNjcsIDIxMCwgMTM1LCA3OSwgMTcsIAorICAgIDE2NywgMTkyLCA3OSwgMTcsIDE2NywgMjE5LCAxMTMsIDc5LCAxNywgMTY3LCAxOTksIDgxLCA3OSwgMTM0LCAyNDgsIDQxLCAKKyAgICAyMTIsIDE3OCwgNzksIDEzNCwgMjE5LCAyNDQsIDI0NywgMjI1LCAyMTgsIDQyLCAxOTksIDE2LCA3OSwgMTM0LCAyNDcsIAorICAgIDEzMCwgMjU1LCAxMzksIDIxMiwgMTc5LCAyNDcsIDIyNiwgMjIxLCAxODIsIDI0NywgMTU4LCA3OSwgMTM0LCAyMTksIDI0NCwgCisgICAgMjQ3LCAyMjUsIDIxMCwgMTE4LCAyMTIsIDE3OCwgNzksIDEzNCwgMjQ3LCA5LCAyMjEsIDIyOCwgNzksIDEzNCwgMjA1LCAKKyAgICAzMywgMjU1LCAxMzYsIDc5LCAxMzQsIDIzNSwgMzUsIDIxMiwgMTc5LCAyMzQsIDI1MCwgNzksIDEzNCwgMjM1LCAzNSwgCisgICAgMjEyLCAxNzksIDIzNSwgMCwgNzksIDEzNCwgMjUxLCA3NywgMjI2LCAxOTcsIDIzNCwgMjUwLCA3OSwgMTM0LCAyNTEsIDc3LCAKKyAgICAyMjYsIDE5NywgMjM1LCAwLCA3OSwgMiwgMjAwLCA3MSwgMjA1LCAxNiwgNzksIDIsIDIyMiwgMTU5LCAyMDUsIDE2LCA3OSwgCisgICAgMSwgMTYxLCA3OSwgMSwgMjI2LCAyMDcsIDc5LCAxLCAyMzYsIDg5LCA3OSwgMSwgMjM1LCAxOTksIDc5LCAxLCAyMTksIAorICAgIDI1MywgNzksIDEsIDI0NywgMTkwLCA3OSwgMSwgMjQ3LCAzNywgNzksIDEsIDIyNywgMjQ4LCA3OSwgMSwgMjE4LCA2MCwgCisgICAgNzksIDEsIDIwNCwgMjUzLCA3OSwgMSwgMjA0LCAyNDEsIDc5LCAxLCAyNDEsIDIyMCwgNzksIDEsIDI0MSwgMjA0LCA3OSwgCisgICAgMSwgMjE5LCAyMSwgNzksIDEsIDIwNywgMzYsIDc5LCAxLCAyMDYsIDEyMiwgNzksIDEsIDI0MiwgNTgsIDc5LCAxLCAyNDEsIAorICAgIDEwMCwgNzksIDEsIDE4OCwgNzksIDEsIDE3MiwgNzksIDEsIDIxNSwgMjQ1LCA3OSwgMSwgMjQ5LCAxMzYsIDc5LCAxLCAKKyAgICAyNDgsIDIwMCwgNzksIDEsIDE3OCwgNzksIDEsIDIwNSwgMzIsIDc5LCAxLCAyMDUsIDIyLCA3OSwgMSwgMjM5LCA5MywgNzksIAorICAgIDEsIDIzOSwgODcsIDc5LCAxLCAyMDEsIDExNCwgNzksIDEsIDE5OSwgNzcsIDc5LCAxLCAxOTksIDExNCwgNzksIDEsIDI1NSwgCisgICAgMTQyLCA3OSwgMSwgMTgzLCA3OSwgMSwgMjEzLCAyNTIsIDc5LCAxLCAxOTQsIDc5LCAxLCAyMTAsIDExNCwgNzksIDEsIAorICAgIDIwOCwgMTc5LCA3OSwgMSwgMjEyLCA2NCwgNzksIDEsIDE0NCwgNzksIDEsIDYyLCA3OSwgMSwgMjI2LCAyOSwgNzksIDEsIAorICAgIDIzNywgNTcsIDIxMywgMjUyLCA3OSwgMSwgMjI2LCAxMDksIDc5LCAxLCAyMTIsIDIxNSwgNzksIDIyLCAyLCAyNTIsIDEzOCwgCisgICAgNzksIDIyLCAyLCA3MCwgNzksIDIyLCAyLCAyMjgsIDE1MSwgNzksIDIyLCAyLCA2NiwgNzksIDIyLCAyLCAyMDMsIDE4MiwgCisgICAgNzksIDIyLCAyLCAxMDksIDE0NiwgNzksIDIyLCAyLCAxMDksIDIxMiwgMjE2LCA3OSwgMjIsIDIsIDEwOSwgMTU2LCA3OSwgCisgICAgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDc5LCAyMiwgMiwgNzIsIDc5LCAyMiwgMiwgMjM4LCAyNTUsIDc5LCAyMiwgMiwgNzQsIAorICAgIDc5LCAyMiwgMiwgMjE3LCA2MywgNzksIDIsIDIxMywgMTIsIDIwOCwgMjUsIDIxOSwgMjU0LCAyMTMsIDEsIDc5LCAyLCAKKyAgICAyMTMsIDYsIDI0OSwgOSwgNzksIDIyLCAyLCAyMTMsIDEwNSwgNzAsIDc5LCAyMiwgMiwgMjEzLCAxMDUsIDIyOCwgMTUxLCAKKyAgICA3OSwgMiwgMjE4LCA0MiwgMTk5LCAxNywgMjIwLCAxNTgsIDI0MiwgNTgsIDc5LCAyLCAyMDksIDQ0LCAyMjUsIDQyLCA3OSwgCisgICAgMTM0LCAyMzQsIDIxNSwgNzksIDEzNCwgMjE2LCAxNzMsIDc5LCAyLCAyMjUsIDQ1LCAyMTIsIDE3OCwgNzksIDIsIDIwMCwgCisgICAgNzYsIDIxMiwgMTc4LCA3OSwgMiwgMjI1LCA0NiwgMjA1LCAzMywgMjQ3LCAxNTgsIDc5LCAyLCAyMjIsIDgwLCAyNDcsIAorICAgIDE1OCwgNzksIDIsIDIzNSwgNTYsIDI0NywgMTU5LCAyMTMsIDk1LCA3OSwgMiwgMjM1LCA1NiwgMjIyLCA3MCwgMjEzLCA5NSwgCisgICAgNzksIDIsIDIyOCwgNTAsIDIyMiwgODAsIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMiwgMjI1LCA0NiwgMjA1LCAzMywgMjQ3LCAKKyAgICAxNTgsIDc5LCAyMDgsIDEyLCAyLCAyMjIsIDgwLCAyNDcsIDE1OCwgNzksIDIwOCwgMTIsIDIsIDIyOCwgNTAsIDIyMiwgODAsIAorICAgIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMSwgMTYxLCA3OSwgMjA4LCAxMiwgMSwgMjI2LCAyMDcsIDc5LCAyMDgsIDEyLCAxLCAKKyAgICAyMzYsIDg5LCA3OSwgMjA4LCAxMiwgMSwgMjM1LCAxOTksIDc5LCAyMDgsIDEyLCAxLCAyMTksIDI1MywgNzksIDIwOCwgMTIsIAorICAgIDEsIDI0NywgMTkwLCA3OSwgMjA4LCAxMiwgMSwgMjQ3LCAzNywgNzksIDIwOCwgMTIsIDEsIDIyNywgMjQ4LCA3OSwgMjA4LCAKKyAgICAxMiwgMSwgMjE4LCA2MCwgNzksIDIwOCwgMTIsIDEsIDIwNCwgMjUzLCA3OSwgMjA4LCAxMiwgMSwgMjA0LCAyNDEsIDc5LCAKKyAgICAyMDgsIDEyLCAxLCAyNDEsIDIyMCwgNzksIDIwOCwgMTIsIDEsIDI0MSwgMjA0LCA3OSwgMjA4LCAxMiwgMSwgMjE5LCAyMSwgCisgICAgNzksIDIwOCwgMTIsIDEsIDIwNywgMzYsIDc5LCAyMDgsIDEyLCAxLCAyMDYsIDEyMiwgNzksIDIwOCwgMTIsIDEsIDI0MiwgCisgICAgNTgsIDc5LCAyMDgsIDEyLCAxLCAyNDEsIDEwMCwgNzksIDIwOCwgMTIsIDEsIDE4OCwgNzksIDIwOCwgMTIsIDEsIDE3MiwgCisgICAgNzksIDIwOCwgMTIsIDEsIDIxNSwgMjQ1LCA3OSwgMjA4LCAxMiwgMSwgMjQ5LCAxMzYsIDc5LCAyMDgsIDEyLCAxLCAyNDgsIAorICAgIDIwMCwgNzksIDIwOCwgMTIsIDEsIDE3OCwgNzksIDIwOCwgMTIsIDEsIDIwNSwgMzIsIDc5LCAyMDgsIDEyLCAxLCAyMDUsIAorICAgIDIyLCA3OSwgMjA4LCAxMiwgMSwgMjM5LCA5MywgNzksIDIwOCwgMTIsIDEsIDIzOSwgODcsIDc5LCAyMDgsIDEyLCAxLCAKKyAgICAyMDEsIDExNCwgNzksIDIwOCwgMTIsIDEsIDE5OSwgNzcsIDc5LCAyMDgsIDEyLCAxLCAxOTksIDExNCwgNzksIDIwOCwgMTIsIAorICAgIDEsIDI1NSwgMTQyLCA3OSwgMjA4LCAxMiwgMSwgMTgzLCA3OSwgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAxOTQsIDc5LCAyMDgsIDEyLCAxLCAyMTAsIDExNCwgNzksIDIwOCwgMTIsIDEsIDIwOCwgMTc5LCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjEyLCA2NCwgNzksIDIwOCwgMTIsIDEsIDE0NCwgNzksIDIwOCwgMTIsIDEsIDYyLCA3OSwgMjA4LCAxMiwgMSwgMjI2LCAKKyAgICAyOSwgNzksIDIwOCwgMTIsIDEsIDIzNywgNTcsIDIwMSwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMjM3LCA1NywgMTgzLCA3OSwgCisgICAgMjA4LCAxMiwgMSwgMjM3LCA1NywgMjEzLCAyNTIsIDc5LCAyMjYsIDE2LCAyMTIsIDE3NiwgMjI2LCAyMDcsIDc5LCAyMjYsIAorICAgIDE2LCAyMTIsIDE3NiwgMjI2LCAyMDgsIDI0NywgMjI2LCAyMjEsIDE4MiwgMjQ3LCAxNTgsIDc5LCAyNDcsIDE0NSwgMiwgCisgICAgODAsIDI0OSwgMSwgNzksIDI0NywgMTQ1LCAyLCAxNjIsIDI0OSwgMSwgNzksIDI0NywgMTQ1LCAyLCAyNDcsIDE0NywgMjA2LCAKKyAgICAxOTksIDc5LCAyNDcsIDE0NSwgMiwgMjExLCAyMzAsIDI1NSwgMTQxLCA3OSwgMTYsIDIzOSwgMTUyLCAyNDgsIDM2LCA3OSwgCisgICAgMTYsIDIxMywgMTkxLCAyMTMsIDEzLCA3OSwgMTYsIDIxNiwgMTk3LCAyMzYsIDE2LCA3OSwgMTYsIDIxMywgMTkxLCAyMTMsIAorICAgIDE0LCAyMTMsIDk3LCAyMzUsIDg0LCA3OSwgMTYsIDIxNSwgMjA4LCAxNzIsIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzYsIAorICAgIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzcsIDIxOCwgMzEsIDI1NSwgMTM4LCA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM3LCAKKyAgICAyMzUsIDU0LCAyNTUsIDEzOCwgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNywgMjQ3LCAyMjYsIDI1NSwgMTM4LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMTMsIDE5MiwgMjQwLCAyMjQsIDc5LCAyLCAyMTMsIDE5MiwgMjIwLCAxNTAsIDIzNSwgCisgICAgNTMsIDc5LCAxMzQsIDI0OCwgNDAsIDIxMCwgNCwgMjM1LCAxNjIsIDIyMSwgMjI5LCAyMTMsIDk2LCA3OSwgMTM0LCAyMjEsIAorICAgIDEzOCwgMjAwLCAxLCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDc5LCAxMzQsIDIxOCwgMzEsIDIwNSwgMTcsIDc5LCAKKyAgICAxMzQsIDgyLCAyNDgsIDYzLCAyMTMsIDMsIDIwMCwgMSwgMjIxLCAyMjksIDIyMiwgNzgsIDE3OCwgNzksIDEzNCwgMjQ2LCAKKyAgICAxMDYsIDI0OCwgNjMsIDIxMywgMywgMjAwLCAxLCAyMjEsIDIyOSwgMjEwLCAxMjEsIDE3OCwgMjEzLCA0NSwgMjA3LCAxODgsIAorICAgIDU0LCAyMjUsIDI3LCAyMDcsIDE4OCwgNTQsIDIxMywgNDUsIDIwNywgMTg4LCAyLCAzLCAyNDAsIDE4MCwgMjI1LCAyNywgCisgICAgMjA3LCAxODgsIDIsIDMsIDI0MCwgMTgwLCA3OSwgMTM0LCAyMjUsIDM3LCAyMjIsIDgxLCAyMTIsIDE3OCwgNzksIDEzNCwgCisgICAgMjA1LCAxMjUsIDIyMiwgODEsIDIxMiwgMTc4LCA3MSwgMSwgMTYxLCA3MSwgMSwgMjI2LCAyMDcsIDcxLCAxLCAyMzYsIDg5LCAKKyAgICA3MSwgMSwgMjM1LCAxOTksIDcxLCAxLCAyMTksIDI1MywgNzEsIDEsIDI0NywgMTkwLCA3MSwgMSwgMjQ3LCAzNywgNzEsIDEsIAorICAgIDIyNywgMjQ4LCA3MSwgMSwgMjI3LCAyMTUsIDcxLCAxLCAyMTgsIDYwLCA3MSwgMSwgMjE4LCAyNDMsIDcxLCAxLCAyMDQsIAorICAgIDI1MywgNzEsIDEsIDIwNCwgMjQxLCA3MSwgMSwgMjQxLCAyMjAsIDcxLCAxLCAyNDEsIDIwNCwgNzEsIDEsIDIxOSwgMjEsIAorICAgIDcxLCAxLCAyMDcsIDM2LCA3MSwgMSwgMjA2LCAxMjIsIDcxLCAxLCAyNDIsIDU4LCA3MSwgMSwgMjQxLCAxMDAsIDcxLCAxLCAKKyAgICAxODgsIDcxLCAxLCAxNzIsIDcxLCAxLCAyMTUsIDI0NSwgNzEsIDEsIDI0OSwgMTM2LCA3MSwgMSwgMjQ4LCAyMDAsIDcxLCAKKyAgICAxLCAxNzgsIDcxLCAxLCAxODMsIDcxLCAxLCAyMTMsIDI1MiwgNzEsIDEsIDE5NCwgNzEsIDEsIDIwMSwgMTE0LCA3MSwgMSwgCisgICAgMjEyLCA2NCwgNzEsIDEsIDE0NCwgNzEsIDEsIDIyNCwgMTM4LCA3MSwgMSwgNjIsIDcxLCAxLCAyMTAsIDkwLCA2MiwgNzEsIAorICAgIDEsIDcwLCA3MSwgMSwgMjI4LCAxNTEsIDcxLCAxLCA2NiwgNzEsIDEsIDIwMywgMTgyLCA3MSwgMSwgNzIsIDcxLCAxLCAKKyAgICAyMjEsIDEwNywgNzIsIDcxLCAxLCA3NCwgNzEsIDEsIDI1MCwgMTM5LCA3MSwgMjIsIDIsIDIwNiwgMjQ4LCAyNTIsIDEzOCwgCisgICAgNzEsIDIyLCAyLCAyNTIsIDEzOCwgNzEsIDIyLCAyLCA3MCwgNzEsIDIyLCAyLCAyMjgsIDE1MSwgNzEsIDIyLCAyLCA2NiwgCisgICAgNzEsIDIyLCAyLCAyMDMsIDE4MiwgNzEsIDIyLCAyLCA3MiwgNzEsIDIyLCAyLCAyNTEsIDE3NiwgNzEsIDIyLCAyLCAyMjEsIAorICAgIDEwNywgMjI4LCAxNTEsIDcxLCAyMiwgMiwgMjIxLCAxMDcsIDc0LCA3MSwgMjIsIDIsIDE5NywgNTYsIDcxLCAyLCAyNTEsIAorICAgIDMzLCA3MSwgMiwgNzMsIDU3LCA3MSwgMiwgMjAyLCAyMDMsIDcxLCAyLCAyMDIsIDIwOCwgNzEsIDIsIDI1MCwgMTg1LCA3MSwgCisgICAgMTExLCAyLCAxNzksIDE4MywgNzEsIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgNzEsIDExMSwgMiwgMTc5LCAyMDEsIDExNCwgCisgICAgNzEsIDExMSwgMiwgMTc5LCAxNDQsIDcxLCAxLCAyMzUsIDY5LCAyMTIsIDY0LCA3MSwgMTcsIDE5OSwgODEsIDcxLCAxNywgCisgICAgMTAyLCA3MSwgMTcsIDEwNSwgNzEsIDE3LCAxNDcsIDcxLCAxNywgMTQ5LCA3MSwgMTcsIDE2NCwgNzEsIDE3LCAxODcsIDcxLCAKKyAgICAxNywgMjEwLCAxMzUsIDcxLCAxNywgMTkyLCA3MSwgMTcsIDIxOSwgMTEzLCA3MSwgMiwgMjI0LCAxNDgsIDIxMSwgMTkyLCAKKyAgICA3MSwgMiwgMjExLCAxOTIsIDcxLCAxNiwgMjI0LCAxMDUsIDcxLCAxNiwgMjQ2LCA2NCwgNzEsIDE2LCAyNTEsIDE5NywgNzEsIAorICAgIDE2LCAyMzUsIDI1NCwgNzEsIDEsIDIxMCwgMTE0LCA3MSwgMSwgMjA4LCAxNzksIDcxLCAxLCAxMDksIDE0NiwgNzEsIDEsIAorICAgIDEwOSwgMjEyLCAyMTYsIDcxLCAxLCAxMDksIDE1NiwgNzEsIDEsIDEwOSwgMjI0LCAxMzksIDcxLCAyMiwgMiwgMTA5LCAKKyAgICAxNDYsIDcxLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgNzEsIDIyLCAyLCAxMDksIDE1NiwgNzEsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCA3MSwgMSwgMjIxLCAxMDcsIDIxOSwgMjUzLCA3MSwgMSwgMjIxLCAxMDcsIDIyNywgMjE1LCA3MSwgMSwgMjIxLCAKKyAgICAxMDcsIDI0OSwgNDQsIDcxLCAxLCAyMjEsIDEwNywgMjQ5LCAzOSwgNzEsIDExMSwgMiwgMjIxLCAxMDcsIDE3OSwgMTg4LCAKKyAgICA3MSwgMTExLCAyLCAyMjEsIDEwNywgMTc5LCAxNzgsIDcxLCAxMTEsIDIsIDIyMSwgMTA3LCAxNzksIDE5NCwgNzEsIDEsIAorICAgIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMTAsIDExNCwgNzEsIDIyLCAyLCAyMTAsIDEyMCwgMjI3LCA0NCwgMjM4LCA2OSwgNzEsIAorICAgIDE1MCwgMTM0LCAyMTAsIDEyMCwgMjI3LCA0NCwgMjM0LCAxNTMsIDcxLCAxNTAsIDEzNCwgMjEwLCAxMjAsIDIyNywgNDQsIAorICAgIDIyNywgOSwgMjE1LCAyMTcsIDcxLCAxLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA2LCAxMjIsIDcxLCAxLCAKKyAgICAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjE0LCAxODUsIDcxLCAyMiwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgCisgICAgNDQsIDIzOCwgNjksIDcxLCAyMiwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNCwgMzEsIDcxLCAyLCAyMDEsIAorICAgIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzMsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAKKyAgICAxNzIsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzEsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIAorICAgIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzAsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNjksIDcxLCAKKyAgICAxLCAyMzksIDEyLCAyMTQsIDE3OSwgMjI3LCA0NCwgMjE5LCAyMSwgNzEsIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIAorICAgIDQ0LCAxOTksIDE3NCwgNzEsIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMzUsIDE2NCwgNzEsIDIyLCAyLCAKKyAgICAyMzYsIDExLCAyMjcsIDQ0LCA3MCwgNzEsIDIyLCAyLCAyMjcsIDE0LCAyMTcsIDEyMSwgNzEsIDIyLCAyLCAyMjcsIDE0LCAKKyAgICA2NiwgNzEsIDIyLCAyLCAyMjcsIDE0LCAyMzgsIDI1NSwgNzEsIDEsIDIxMCwgOTAsIDE2MSwgNzEsIDEsIDIxMCwgOTAsIAorICAgIDIyNiwgMjA3LCA3MSwgMSwgMjEwLCA5MCwgMjM2LCA4OSwgNzEsIDEsIDIxMCwgOTAsIDI0NywgMTkwLCA3MSwgMSwgMjEwLCAKKyAgICA5MCwgMTk5LCAxMTQsIDcxLCAxLCAyMTAsIDkwLCAyMTgsIDYwLCA3MSwgMSwgMjEwLCA5MCwgMjQyLCA1OCwgNzEsIDEsIAorICAgIDIxMCwgOTAsIDE4OCwgNzEsIDEsIDIxMCwgOTAsIDIxNSwgMjQ1LCA3MSwgMSwgMjEwLCA5MCwgMjM3LCAxOTUsIDcxLCAxLCAKKyAgICAyMTAsIDkwLCAyNDksIDEzNiwgNzEsIDEsIDIxMCwgOTAsIDIwNiwgMTIyLCA3MSwgMSwgMjEwLCA5MCwgMTQ0LCA3MSwgCisgICAgMTExLCAyLCAyMTAsIDkwLCAxNzksIDIwMSwgMTE0LCA3MSwgMjIsIDIsIDIxMCwgOTAsIDI1MiwgMTM4LCA3MSwgMjIsIDIsIAorICAgIDIxMCwgOTAsIDcyLCA3MSwgMjIsIDIsIDIxMCwgOTAsIDE5NywgNTYsIDcxLCAyMiwgMiwgMjEwLCA5MCwgNDcsIDIwMCwgCisgICAgMTIzLCA3MSwgMiwgMjEwLCA5MCwgMjA1LCAxNzIsIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE3MSwgNzEsIDIsIDIxMCwgOTAsIAorICAgIDIwNSwgMTY5LCA3MSwgMiwgMjEwLCA5MCwgMjA1LCAxNjgsIDcxLCAyLCAyMTAsIDkwLCAyNDMsIDYsIDIwNSwgMTcyLCA3MSwgCisgICAgMiwgMjEwLCA5MCwgMjQzLCA2LCAyMDUsIDE3MSwgNzEsIDIsIDIxMCwgOTAsIDI0MywgNiwgMjM4LCAxODIsIDIwNSwgMTc0LCAKKyAgICA3MSwgMSwgMjEyLCAxNjAsIDIxNiwgMTgxLCAyMzcsIDE5NSwgNzEsIDIsIDIxMiwgMTYwLCAyMTYsIDE4MSwgMjA1LCAxNjksIAorICAgIDcxLCAyMTAsIDkwLCAxNywgMTk5LCA4MSwgNzEsIDIxMCwgOTAsIDE3LCAxMDIsIDcxLCAyMTAsIDkwLCAxNywgMTA1LCA3MSwgCisgICAgMjEwLCA5MCwgMTcsIDE0NywgNzEsIDIxMCwgOTAsIDE3LCAxNDksIDcxLCAyMTAsIDkwLCAxNywgMTY0LCA3MSwgMjEwLCAKKyAgICA5MCwgMTcsIDE4NywgNzEsIDIxMCwgOTAsIDE3LCAyMTAsIDEzNSwgNzEsIDIxMCwgOTAsIDE3LCAxOTIsIDcxLCAyMTAsIAorICAgIDkwLCAxNywgMjE5LCAxMTMsIDcxLCAyLCAyMjYsIDIwMCwgMjA1LCAxNzMsIDcxLCAyLCAyMjYsIDIwMCwgMjA1LCAxNzEsIAorICAgIDcxLCAyMiwgMiwgMjUxLCAxNjMsIDYyLCA3MSwgMjIsIDIsIDI1MSwgMTYzLCAyNTEsIDE3NiwgNzEsIDE2LCAyMTAsIDkwLCAKKyAgICAxMDIsIDcxLCAxNiwgMjEwLCA5MCwgMjM4LCA0MiwgMTE4LCA2LCAxLCAyNTEsIDg1LCAxMTgsIDYsIDEsIDI0OSwgODgsIAorICAgIDExOCwgNiwgMSwgMjM2LCA1OSwgMTE4LCA2LCAxLCAyNDAsIDE5MCwgMTE4LCA2LCAxLCAyMzgsIDE3OSwgMTE4LCA2LCAxLCAKKyAgICAyMDIsIDIxNywgMTE4LCA2LCAxLCAxOTksIDg0LCAxMTgsIDYsIDEsIDIwNiwgMjQ0LCAxMTgsIDYsIDEsIDIyOCwgMTE3LCAKKyAgICAxMTgsIDYsIDEsIDIyNywgNjgsIDExOCwgNiwgMSwgMjI1LCA2NSwgMTE4LCA2LCAxLCAyMjIsIDE4MCwgMTE4LCA2LCAxLCAKKyAgICAyMjAsIDEyNSwgMTE4LCA2LCAxLCAyMTcsIDc4LCAxMTgsIDYsIDEsIDIxNiwgMTMwLCAxMTgsIDYsIDEsIDE5OSwgNzMsIAorICAgIDExOCwgNiwgMSwgMjEzLCAyMzQsIDExOCwgNiwgMSwgMjEyLCAxMywgMTE4LCA2LCAxLCAyMDYsIDIzMiwgMTE4LCA2LCAxLCAKKyAgICAyMDQsIDUsIDExOCwgNiwgMSwgMjE1LCAyMzcsIDExOCwgNiwgMSwgMjI2LCAxOTUsIDExOCwgNiwgMSwgMjM1LCAxOTAsIAorICAgIDExOCwgNiwgMSwgMjE0LCAxNDQsIDExOCwgNiwgMSwgMjEwLCAyMSwgMTE4LCA2LCAxLCAyNDYsIDIyMywgMTE4LCA2LCAxLCAKKyAgICAyNDcsIDE1OCwgMTE4LCA2LCAxLCAyMjcsIDE5OCwgMTE4LCA2LCAxLCAyNDYsIDE2MiwgMTE4LCA2LCAxLCAyNDcsIDIxLCAKKyAgICAxMTgsIDYsIDEsIDIwMCwgMTc5LCAxMTgsIDYsIDEsIDIyNywgMjEyLCAxMTgsIDYsIDEsIDIzNCwgMjMwLCAxMTgsIDYsIDEsIAorICAgIDIzNCwgMTM5LCAxMTgsIDYsIDEsIDIzNCwgNjksIDExOCwgNiwgMSwgMjAxLCA2NCwgMTE4LCA2LCAxLCAyMzQsIDE2NiwgCisgICAgMTE4LCA2LCAxLCAyMzMsIDIwMywgMTE4LCA2LCAxLCAxOTksIDI0NywgMTE4LCA2LCAxLCAyNTEsIDIxMCwgMTE4LCAxLCAKKyAgICAyNTEsIDg1LCAxMTgsIDEsIDI0OSwgODgsIDExOCwgMSwgMjM2LCA1OSwgMTE4LCAxLCAyNDAsIDE5MCwgMTE4LCAxLCAyMzgsIAorICAgIDE3OSwgMTE4LCAxLCAyMDIsIDIxNywgMTE4LCAxLCAxOTksIDg0LCAxMTgsIDEsIDIwNiwgMjQ0LCAxMTgsIDEsIDIyOCwgCisgICAgMTE3LCAxMTgsIDEsIDIyNywgNjgsIDExOCwgMSwgMjI1LCA2NSwgMTE4LCAxLCAyMjIsIDE4MCwgMTE4LCAxLCAyMjAsIAorICAgIDEyNSwgMTE4LCAxLCAyMTcsIDc4LCAxMTgsIDEsIDIxNiwgMTMwLCAxMTgsIDEsIDE5OSwgNzMsIDExOCwgMSwgMjEzLCAKKyAgICAyMzQsIDExOCwgMSwgMjEyLCAxMywgMTE4LCAxLCAyMDYsIDIzMiwgMTE4LCAxLCAyMDQsIDUsIDExOCwgMSwgMjE1LCAyMzcsIAorICAgIDExOCwgMSwgMjI2LCAxOTUsIDExOCwgMSwgMjM1LCAxOTAsIDExOCwgMSwgMjE0LCAxNDQsIDExOCwgMSwgMjEwLCAyMSwgCisgICAgMTE4LCAxLCAyNDYsIDIyMywgMTE4LCAxLCAyNDcsIDE1OCwgMTE4LCAxLCAyMjcsIDE5OCwgMTE4LCAxLCAyNDYsIDE2MiwgCisgICAgMTE4LCAxLCAyNDcsIDIxLCAxMTgsIDEsIDIwMCwgMTc5LCAxMTgsIDEsIDIyNywgMjEyLCAxMTgsIDEsIDIzNCwgMjMwLCAKKyAgICAxMTgsIDEsIDIzNCwgMTM5LCAxMTgsIDEsIDIzNCwgNjksIDExOCwgMSwgMjAxLCA2NCwgMTE4LCAxLCAyMzQsIDE2NiwgCisgICAgMTE4LCAxLCAyMzMsIDIwMywgMTE4LCAxLCAyMzcsIDExMiwgMTE4LCAxLCAxOTksIDI0NywgMTE4LCAxLCAyMzgsIDE5NywgCisgICAgMTE4LCAxLCAyMDQsIDE4NSwgMjM2LCA1OSwgMTE4LCAxLCAyNTEsIDE3MSwgMTE4LCAyMTYsIDEyOCwgMjEwLCAxNTQsIDY3LCAKKyAgICAxLCAxMTgsIDIyMCwgMTI1LCAxMTgsIDEsIDI1MSwgMjEwLCAxMTgsIDEsIDIzNCwgMTY1LCA1NCwgMTE4LCAxLCAyMjUsIAorICAgIDE2NywgNTQsIDI5LCAxMjksIDIyNiwgMTIxLCAyOSwgMTI5LCAyMDgsIDE3MSwgMjksIDEyOSwgMjE5LCAxNDMsIDI5LCAKKyAgICAxMjksIDIwNSwgMjUzLCAyOSwgMTI5LCAyMDgsIDE2MCwgMjksIDEyOSwgMjEzLCA3OCwgMjksIDEyOSwgMjIxLCAxOTcsIAorICAgIDI5LCAxMjksIDIxNSwgMTkwLCAyOSwgMTI5LCAyMDgsIDE2OCwgMjksIDEyOSwgMjA5LCAxMjksIDI5LCAxMjksIDIwOCwgCisgICAgMTY1LCAyOSwgMTI5LCAyMjgsIDE3NCwgMjksIDEyOSwgMjQ2LCAxNjgsIDI5LCAxMjksIDIwOCwgMTc1LCAyOSwgMTI5LCAKKyAgICAyNDYsIDIzMiwgMjksIDEyOSwgMjI2LCAxODMsIDI5LCAxMjksIDIwNiwgODAsIDI5LCAxMjksIDIxNSwgMjI3LCAyOSwgCisgICAgMTI5LCAyMzQsIDY2LCAyOSwgMTI5LCAyMTksIDEzOSwgMjksIDEyOSwgMjA4LCAxNjksIDI5LCAxMjksIDIxOSwgMTMzLCAKKyAgICAyOSwgMTI5LCAyMTksIDEzNywgMjksIDEyOSwgMjA1LCAyNTAsIDI5LCAxMjksIDIxMywgNjYsIDI5LCAxMjksIDIwOCwgCisgICAgMTY3LCAyOSwgMTI5LCAyMTMsIDc2LCAyOSwgMTI5LCAyMjcsIDUwLCAyOSwgMTI5LCAyMjEsIDE5MCwgMjksIDEyOSwgMjI3LCAKKyAgICA1MywgMjksIDEyOSwgMjE1LCAxODUsIDI5LCAxMjksIDIxNSwgMTgzLCAyOSwgMTI5LCAyMTUsIDE3MSwgMjksIDEyOSwgCisgICAgMjE1LCAxNzksIDI5LCAxMjksIDIxNSwgMTc3LCAyOSwgMTI5LCAyMTUsIDE3NCwgMjksIDEyOSwgMjE1LCAxNzYsIDI5LCAKKyAgICAxMjksIDIxNSwgMTczLCAyOSwgMTI5LCAyMTUsIDE3OCwgMjksIDEyOSwgMjE1LCAxODgsIDI5LCAxMjksIDIxNSwgMTg5LCAKKyAgICAyOSwgMTI5LCAyMTUsIDE3MiwgMjksIDEyOSwgMjE1LCAxODIsIDI5LCAxMjksIDIyNywgNTEsIDI5LCAxMjksIDIyNywgNDksIAorICAgIDI5LCAxMjksIDIwOSwgMTIyLCAyOSwgMTI5LCAyMDksIDEyMCwgMjksIDEyOSwgMjA5LCAxMTIsIDI5LCAxMjksIDIwOSwgCisgICAgMTE1LCAyOSwgMTI5LCAyMDksIDEyMSwgMjksIDEyOSwgMjA5LCAxMTcsIDI5LCAxMjksIDIwOSwgMTE2LCAyOSwgMTI5LCAKKyAgICAyMDksIDExNCwgMjksIDEyOSwgMjA5LCAxMjUsIDI5LCAxMjksIDIwOSwgMTI3LCAyOSwgMTI5LCAyMDksIDEyOCwgMjksIAorICAgIDEyOSwgMjA5LCAxMjMsIDI5LCAxMjksIDIwOSwgMTEzLCAyOSwgMTI5LCAyMDksIDExOCwgMjksIDEyOSwgMjA5LCAxMjYsIAorICAgIDI5LCAxMjksIDI0NiwgMjE0LCAyOSwgMTI5LCAyNDYsIDIxMiwgMjksIDEyOSwgMjQ3LCA0OCwgMjksIDEyOSwgMjQ3LCA0NiwgCisgICAgMjksIDEyOSwgMjE2LCAxNDYsIDI5LCAxMjksIDIyOCwgMTY5LCAyOSwgMTI5LCAyMjgsIDE2MCwgMjksIDEyOSwgMjI4LCAKKyAgICAxNjgsIDI5LCAxMjksIDIyOCwgMTY1LCAyOSwgMTI5LCAyMjgsIDE2MywgMjksIDEyOSwgMjI4LCAxNjcsIDI5LCAxMjksIAorICAgIDIwOCwgMTcyLCAyOSwgMTI5LCAyMjgsIDE3MiwgMjksIDEyOSwgMjI4LCAxNzMsIDI5LCAxMjksIDIyOCwgMTYxLCAyOSwgCisgICAgMTI5LCAyMjgsIDE2NiwgMjksIDEyOSwgMjAwLCAyOCwgMjksIDEyOSwgMjQ2LCAxNjcsIDI5LCAxMjksIDI0NiwgMjE1LCAKKyAgICAyOSwgMTI5LCAyNDYsIDIxMywgMjksIDEyOSwgMjQ3LCA0OSwgMjksIDEyOSwgMjQ3LCA0NywgMjksIDEyOSwgMjQ2LCAyMzAsIAorICAgIDI5LCAxMjksIDI0NiwgMjMxLCAyOSwgMTI5LCAyNDYsIDIxNiwgMjksIDEyOSwgMjQ3LCA1MCwgMjksIDEyOSwgMjE1LCAKKyAgICAyMjUsIDI5LCAxMjksIDIyNywgNTIsIDI5LCAxMjksIDIwOCwgMTczLCAyOSwgMTI5LCAyMDAsIDM0LCAyOSwgMTI5LCAyMjYsIAorICAgIDExMiwgMjksIDEyOSwgMjE5LCAxMzUsIDI5LCAxMjksIDIxOSwgMTQxLCAyOSwgMTI5LCAyMTksIDE0MCwgMjksIDEyOSwgCisgICAgMjA1LCAyNDcsIDI5LCAxMjksIDIzNywgOTMsIDI5LCAxODEsIDIzNywgOTMsIDI5LCAxODEsIDYyLCAyOSwgMTgxLCAyNTEsIAorICAgIDIyMSwgMjksIDE4MSwgMTgzLCAyOSwgMTgxLCAyMDAsIDk4LCAyOSwgMTgxLCAyMzgsIDE0MiwgMjksIDE4MSwgNzIsIDI5LCAKKyAgICAxODEsIDIwMCwgMzgsIDI5LCAxODEsIDIwMCwgNTEsIDI5LCAxODEsIDc0LCAyOSwgMTgxLCAyMDEsIDExNCwgMjksIDE4MSwgCisgICAgMjAxLCAxMTAsIDI5LCAxODEsIDIxNywgMTIxLCAyOSwgMTgxLCAxOTksIDI0NSwgMjksIDE4MSwgNjYsIDI5LCAxODEsIAorICAgIDIwMSwgNTAsIDI5LCAxODEsIDIwMSwgNjQsIDI5LCAxODEsIDIwMSwgMzEsIDI5LCAxODEsIDE5OSwgMjExLCAyOSwgMTgxLCAKKyAgICAyMzgsIDY5LCAyOSwgMTgxLCAyMDAsIDksIDI5LCAxODEsIDcwLCAyOSwgMTgxLCAyNTUsIDEzMywgMjksIDE4MSwgMjU1LCAKKyAgICAxMzIsIDI5LCAxODEsIDIwMCwgMTEyLCAyOSwgMTgxLCAyMDAsIDExMCwgMjksIDE4MSwgMjM4LCAxNDAsIDI5LCAxODEsIAorICAgIDIzOCwgMTM5LCAyOSwgMTgxLCAyMzgsIDE0MSwgMjksIDE4MSwgMjAwLCAzNywgMjksIDE4MSwgMjAwLCAzNiwgMjksIDE4MSwgCisgICAgMjE3LCAyMzAsIDI5LCAxODEsIDIxNywgMjMxLCAyOSwgMTgxLCAyMTcsIDIyNCwgMjksIDE4MSwgMjE3LCAyMjksIDI5LCAKKyAgICAxODEsIDIxNywgMjI3LCAyOSwgMTgxLCAxOTksIDIzOSwgMjksIDE4MSwgMTk5LCAyMzgsIDI5LCAxODEsIDE5OSwgMjM3LCAKKyAgICAyOSwgMTgxLCAxOTksIDI0MCwgMjksIDE4MSwgMTk5LCAyNDEsIDI5LCAxODEsIDIwNCwgMTA0LCAyOSwgMTgxLCAyMDQsIAorICAgIDEwMywgMjksIDE4MSwgMjA0LCAxMDEsIDI5LCAxODEsIDIwNCwgOTcsIDI5LCAxODEsIDIwNCwgOTgsIDI5LCAxODEsIDE5OSwgCisgICAgMjEwLCAyOSwgMTgxLCAxOTksIDIwNywgMjksIDE4MSwgMTk5LCAyMDgsIDI5LCAxODEsIDE5OSwgMjAyLCAyOSwgMTgxLCAKKyAgICAxOTksIDIwMywgMjksIDE4MSwgMTk5LCAyMDQsIDI5LCAxODEsIDE5OSwgMjA2LCAyOSwgMTgxLCAyMzgsIDYzLCAyOSwgCisgICAgMTgxLCAyMzgsIDY1LCAyOSwgMTgxLCAyMDAsIDgsIDI5LCAxODEsIDIzMywgMTgsIDI5LCAxODEsIDIzMywgMTAsIDI5LCAKKyAgICAxODEsIDIzMywgMTMsIDI5LCAxODEsIDIzMywgMTEsIDI5LCAxODEsIDIzMywgMTUsIDI5LCAxODEsIDIzMywgMTcsIDI5LCAKKyAgICAxODEsIDI1MCwgMjQ1LCAyOSwgMTgxLCAyNTAsIDI0MiwgMjksIDE4MSwgMjUwLCAyNDAsIDI5LCAxODEsIDI1MCwgMjQxLCAKKyAgICAyOSwgMTgxLCAyMDgsIDE3NiwgMjksIDE4MSwgMjU1LCAxMzQsIDI5LCAxODEsIDIwMCwgMTExLCAyOSwgMTgxLCAyMDAsIAorICAgIDM1LCAyOSwgMTgxLCAyMTcsIDIyNiwgMjksIDE4MSwgMjE3LCAyMjUsIDI5LCAxMTAsIDIyNiwgMTIxLCAyOSwgMTEwLCAKKyAgICAyMDgsIDE3MSwgMjksIDExMCwgMjI2LCAxMTQsIDI5LCAxMTAsIDIxOSwgMTQzLCAyOSwgMTEwLCAyMTksIDE0MSwgMjksIAorICAgIDExMCwgMjE5LCAxNDAsIDI5LCAxMTAsIDIwNSwgMjUzLCAyOSwgMTEwLCAyMTMsIDc4LCAyOSwgMTEwLCAyMTMsIDczLCAyOSwgCisgICAgMTEwLCAyMTMsIDcwLCAyOSwgMTEwLCAyMTMsIDYzLCAyOSwgMTEwLCAyMTMsIDU4LCAyOSwgMTEwLCAyMTMsIDUzLCAyOSwgCisgICAgMTEwLCAyMTMsIDY0LCAyOSwgMTEwLCAyMTMsIDc2LCAyOSwgMTEwLCAyMjEsIDE5NywgMjksIDExMCwgMjE1LCAxOTAsIDI5LCAKKyAgICAxMTAsIDIxNSwgMTc5LCAyOSwgMTEwLCAyMDksIDEyOSwgMjksIDExMCwgMjA4LCAxNjUsIDI5LCAxMTAsIDIyOCwgMTc0LCAKKyAgICAyOSwgMTEwLCAyNDYsIDE2OCwgMjksIDExMCwgMjQ2LCAyMzIsIDI5LCAxMTAsIDIyNiwgMTgzLCAyOSwgMTEwLCAyMDYsIAorICAgIDgwLCAyOSwgMTEwLCAyMTUsIDIyNywgMjksIDExMCwgMjM0LCA2NiwgMjksIDExMCwgMjI2LCAxMTUsIDI5LCAxMTAsIDIyNiwgCisgICAgMTEzLCAyOSwgMTEwLCAyMTksIDEzOSwgMjksIDExMCwgMjE5LCAxMzMsIDI5LCAxMTAsIDIxOSwgMTM1LCAyOSwgMTEwLCAKKyAgICAyMTksIDEzOCwgMjksIDExMCwgMjE5LCAxMzQsIDI5LCAxMTAsIDIwNSwgMjUwLCAyOSwgMTEwLCAyMDUsIDI0NywgMjksIAorICAgIDExMCwgMjEzLCA3MSwgMjksIDExMCwgMjEzLCA2NiwgMjksIDExMCwgMjEzLCA1MiwgMjksIDExMCwgMjEzLCA1MSwgMjksIAorICAgIDExMCwgMjA4LCAxNjcsIDI5LCAxMTAsIDIxMywgNjgsIDI5LCAxMTAsIDIxMywgNjcsIDI5LCAxMTAsIDIxMywgNjAsIDI5LCAKKyAgICAxMTAsIDIxMywgNjIsIDI5LCAxMTAsIDIxMywgNzUsIDI5LCAxMTAsIDIxMywgNTUsIDI5LCAxMTAsIDIxMywgNjUsIDI5LCAKKyAgICAxMTAsIDIxMywgNzQsIDI5LCAxMTAsIDIxMywgNTAsIDI5LCAxMTAsIDIyMSwgMTkzLCAyOSwgMTEwLCAyMjEsIDE4OCwgMjksIAorICAgIDExMCwgMjIxLCAxOTAsIDI5LCAxMTAsIDIyMSwgMTg3LCAyOSwgMTEwLCAyMjEsIDE4NSwgMjksIDExMCwgMjIxLCAxOTEsIAorICAgIDI5LCAxMTAsIDIyMSwgMTk2LCAyOSwgMTEwLCAyMjEsIDE5NCwgMjksIDExMCwgMjI3LCA1MywgMjksIDExMCwgMjE1LCAKKyAgICAxODEsIDI5LCAxMTAsIDIxNSwgMTgyLCAyOSwgMTEwLCAyMTUsIDE4NywgMjksIDExMCwgMjI3LCA1MSwgMjksIDExMCwgCisgICAgMjA5LCAxMjIsIDI5LCAxMTAsIDIwOSwgMTEyLCAyOSwgMTEwLCAyMDksIDExNSwgMjksIDExMCwgMjA5LCAxMTcsIDI5LCAKKyAgICAxMTAsIDIxNiwgMTQ2LCAyOSwgMTEwLCAyMjgsIDE2OSwgMjksIDExMCwgMjI4LCAxNjIsIDI5LCAxMTAsIDIwOCwgMTcyLCAKKyAgICAyOSwgMTEwLCAyMjgsIDE3MCwgMjksIDExMCwgMjAwLCAyOCwgMjksIDExMCwgMjAwLCAyNCwgMjksIDExMCwgMjAwLCAyNSwgCisgICAgMjksIDExMCwgMjE1LCAyMjUsIDI5LCAxMTAsIDIyNywgNTIsIDI5LCAxMTAsIDIzNCwgNjQsIDI5LCAxMTAsIDIzNCwgNjIsIAorICAgIDI5LCAxMTAsIDIzNCwgNjUsIDI5LCAxMTAsIDIzNCwgNjMsIDI5LCAxMTAsIDIwMCwgMzQsIDI5LCAxMTAsIDIyNiwgMTE3LCAKKyAgICAyOSwgMTEwLCAyMjYsIDExNiwgMjksIDExMCwgMjI2LCAxMjAsIDI5LCAxMTAsIDIyNiwgMTE4LCAyOSwgMTEwLCAyMjYsIAorICAgIDExOSwgMjksIDExMCwgMjA4LCAxNjksIDM0LCA1LCAxNDQsIDM0LCA1LCAyMzMsIDk3LCAzNCwgNSwgMjM0LCA3NSwgMzQsIAorICAgIDUsIDIzNCwgMjMzLCAzNCwgNSwgMjM0LCAxMjAsIDM0LCA1LCAyMzQsIDEzOSwgMzQsIDUsIDIzMywgMjA3LCAzNCwgNSwgCisgICAgMjMzLCAyMDYsIDM0LCA1LCAxOTQsIDM0LCA1LCAyMjQsIDQyLCAzNCwgNSwgMjI0LCAyMTAsIDM0LCA1LCAyMjUsIDE3NSwgCisgICAgMzQsIDUsIDIyNSwgMzIsIDM0LCA1LCAyMjUsIDQwLCAzNCwgNSwgMjI0LCAxMTAsIDM0LCA1LCAyMjQsIDEwLCAzNCwgNSwgCisgICAgMjM0LCA4NCwgMzQsIDUsIDIzNCwgNzgsIDM0LCA1LCAyMzQsIDgwLCAzNCwgNSwgMjM0LCA4MywgMzQsIDUsIDIzNCwgODEsIAorICAgIDM0LCA1LCAyMzQsIDgyLCAzNCwgNSwgMjM0LCA3OSwgMzQsIDUsIDIzNCwgNzcsIDM0LCA1LCAxNzgsIDM0LCA1LCAyMjEsIAorICAgIDQxLCAzNCwgNSwgMjIxLCAyMTEsIDM0LCA1LCAyMjIsIDIzMywgMzQsIDUsIDIyMiwgNjQsIDM0LCA1LCAyMjIsIDc2LCAzNCwgCisgICAgNSwgMjIxLCAxMzYsIDM0LCA1LCAyMjAsIDIzMSwgMzQsIDUsIDIwNywgOTQsIDM0LCA1LCAyMDcsIDg4LCAzNCwgNSwgMjA3LCAKKyAgICA5MCwgMzQsIDUsIDIwNywgOTMsIDM0LCA1LCAyMDcsIDkxLCAzNCwgNSwgMjA3LCA5MiwgMzQsIDUsIDIwNywgODksIDM0LCAKKyAgICA1LCAyMDcsIDg3LCAzNCwgNSwgMjEzLCAyNTIsIDM0LCA1LCAyMTIsIDE3NSwgMzQsIDUsIDIxMywgODgsIDM0LCA1LCAyMTMsIAorICAgIDI0OCwgMzQsIDUsIDIxMywgMTY3LCAzNCwgNSwgMjEzLCAxOTAsIDM0LCA1LCAyMTMsIDEsIDM0LCA1LCAyMTIsIDE0MCwgCisgICAgMzQsIDUsIDIxMiwgNjQsIDM0LCA1LCAyMDgsIDI0LCAzNCwgNSwgMjA5LCAxODIsIDM0LCA1LCAyMTIsIDYxLCAzNCwgNSwgCisgICAgMjExLCAxOTAsIDM0LCA1LCAyMTEsIDIwMiwgMzQsIDUsIDIwOSwgMjksIDM0LCA1LCAyMDcsIDE4NiwgMzQsIDUsIDIxMCwgCisgICAgMTE0LCAzNCwgNSwgMjA5LCAyMjAsIDM0LCA1LCAyMTAsIDMzLCAzNCwgNSwgMjEwLCAxMDksIDM0LCA1LCAyMTAsIDYzLCAKKyAgICAzNCwgNSwgMjEwLCA2NSwgMzQsIDUsIDIxMCwgOCwgMzQsIDUsIDIwOSwgMjAwLCAzNCwgNSwgMjE0LCAxNTksIDM0LCA1LCAKKyAgICAyMTQsIDk3LCAzNCwgNSwgMjE0LCAxMjEsIDM0LCA1LCAyMTQsIDE1OCwgMzQsIDUsIDIxNCwgMTM4LCAzNCwgNSwgMjE0LCAKKyAgICAxMzksIDM0LCA1LCAyMTQsIDEwOSwgMzQsIDUsIDIxNCwgMTA4LCAzNCwgNSwgMjE0LCA1MSwgMzQsIDUsIDIxNCwgNDcsIAorICAgIDM0LCA1LCAyMTQsIDUwLCAzNCwgNSwgMjE0LCA0OCwgMzQsIDUsIDIxNCwgNDksIDM0LCA1LCAyMTQsIDEzNSwgMzQsIDUsIAorICAgIDIxNCwgMTI3LCAzNCwgNSwgMjE0LCAxMzAsIDM0LCA1LCAyMTQsIDEzNCwgMzQsIDUsIDIxNCwgMTMxLCAzNCwgNSwgMjE0LCAKKyAgICAxMzIsIDM0LCA1LCAyMTQsIDEyOSwgMzQsIDUsIDIxNCwgMTI2LCAzNCwgNSwgMjE0LCAxMjIsIDM0LCA1LCAyMTQsIDEyNSwgCisgICAgMzQsIDUsIDIxNCwgMTIzLCAzNCwgNSwgMjE0LCAxMjQsIDM0LCA1LCAyNDksIDEzNiwgMzQsIDUsIDI0OCwgMzYsIDM0LCA1LCAKKyAgICAyNDgsIDE4OCwgMzQsIDUsIDI0OSwgMTM0LCAzNCwgNSwgMjQ4LCAyNTIsIDM0LCA1LCAyNDksIDgsIDM0LCA1LCAyNDgsIAorICAgIDEyNCwgMzQsIDUsIDI0NywgMjQwLCAzNCwgNSwgMjAzLCA5MCwgMzQsIDUsIDIwMSwgMTY2LCAzNCwgNSwgMjAyLCAyMzQsIAorICAgIDM0LCA1LCAyMDMsIDg5LCAzNCwgNSwgMjAzLCA1NCwgMzQsIDUsIDIwMywgNTksIDM0LCA1LCAyMDIsIDE5MywgMzQsIDUsIAorICAgIDIwMSwgMTU3LCAzNCwgNSwgMjA3LCAzNiwgMzQsIDUsIDIwNCwgMjE1LCAzNCwgNSwgMjA2LCAxNSwgMzQsIDUsIDIwNywgCisgICAgMzIsIDM0LCA1LCAyMDYsIDE5MCwgMzQsIDUsIDIwNiwgMjAxLCAzNCwgNSwgMTM4LCAzNCwgNSwgMjA0LCAxNzAsIDM0LCA1LCAKKyAgICAyNDcsIDE5MCwgMzQsIDUsIDI0MiwgMjE0LCAzNCwgNSwgMjQ2LCAxNzMsIDM0LCA1LCAyNDcsIDE4OSwgMzQsIDUsIDI0NywgCisgICAgNjgsIDM0LCA1LCAyNDcsIDc2LCAzNCwgNSwgMjQ2LCA5MSwgMzQsIDUsIDI0MiwgMTc2LCAzNCwgNSwgMjAwLCAxODEsIDM0LCAKKyAgICA1LCAyMDAsIDE1MSwgMzQsIDUsIDIwMCwgMTY5LCAzNCwgNSwgMjAwLCAxODAsIDM0LCA1LCAyMDAsIDE3NCwgMzQsIDUsIAorICAgIDIwMCwgMTc1LCAzNCwgNSwgMjAwLCAxNTksIDM0LCA1LCAyMDAsIDE1OCwgMzQsIDUsIDIwMCwgMTQ1LCAzNCwgNSwgMjAwLCAKKyAgICAxNDEsIDM0LCA1LCAyMDAsIDE0NCwgMzQsIDUsIDIwMCwgMTQyLCAzNCwgNSwgMjAwLCAxNDMsIDM0LCA1LCAxODgsIDM0LCAKKyAgICA1LCAyMTgsIDEzMywgMzQsIDUsIDIxOSwgMTUwLCAzNCwgNSwgMjIwLCAxNTcsIDM0LCA1LCAyMjAsIDI5LCAzNCwgNSwgCisgICAgMjIwLCAzNCwgMzQsIDUsIDIxOCwgMjQxLCAzNCwgNSwgMjE4LCA2OSwgMzQsIDUsIDIxOCwgNjAsIDM0LCA1LCAyMTgsIDE5LCAKKyAgICAzNCwgNSwgMjE4LCA0MSwgMzQsIDUsIDIxOCwgNTksIDM0LCA1LCAyMTgsIDQ5LCAzNCwgNSwgMjE4LCA1MCwgMzQsIDUsIAorICAgIDIxOCwgMjYsIDM0LCA1LCAyMTgsIDksIDM0LCA1LCAyMzUsIDEyMywgNjIsIDM0LCA1LCAyMzUsIDEyMywgNjYsIDM0LCA1LCAKKyAgICAyMzUsIDEyMywgNzAsIDM0LCA1LCAyMzUsIDEyMywgMjUyLCAxMzgsIDM0LCA1LCAyMzUsIDEyMywgMjM4LCAyNTUsIDM0LCAKKyAgICA1LCAyMzUsIDEyMywgNzIsIDM0LCA1LCAyMzUsIDEyMywgNzQsIDM0LCA1LCAyMzUsIDEyMywgMjAxLCAxMTQsIDM0LCA1LCAKKyAgICAxNjEsIDM0LCA1LCAyMjYsIDE1LCAzNCwgNSwgMjI2LCAxNjMsIDM0LCA1LCAyMjcsIDEwNSwgMzQsIDUsIDIyNywgNSwgMzQsIAorICAgIDUsIDIyNywgOCwgMzQsIDUsIDIyNiwgODgsIDM0LCA1LCAyMjYsIDg3LCAzNCwgNSwgMjI1LCAyMjksIDM0LCA1LCAyMjUsIAorICAgIDIyMiwgMzQsIDUsIDIyNSwgMjI4LCAzNCwgNSwgMjI1LCAyMjMsIDM0LCA1LCAyMjUsIDIyNCwgMzQsIDUsIDIyNSwgMjE1LCAKKyAgICAzNCwgNSwgMjI1LCAyMDksIDM0LCA1LCAyMjUsIDIxMSwgMzQsIDUsIDIyNSwgMjE0LCAzNCwgNSwgMjI1LCAyMTIsIDM0LCAKKyAgICA1LCAyMjUsIDIxMywgMzQsIDUsIDIyNSwgMjEwLCAzNCwgNSwgMjI1LCAyMDgsIDM0LCA1LCAyMjUsIDIwNCwgMzQsIDUsIAorICAgIDIyNSwgMjA3LCAzNCwgNSwgMjI1LCAyMDUsIDM0LCA1LCAyMjUsIDIwNiwgMzQsIDUsIDIwMSwgMTE0LCAzNCwgNSwgMjAwLCAKKyAgICAyMTYsIDM0LCA1LCAyMDEsIDMxLCAzNCwgNSwgMjAxLCAxMTMsIDM0LCA1LCAyMDEsIDU3LCAzNCwgNSwgMjAxLCA2NCwgMzQsIAorICAgIDUsIDIwMSwgMCwgMzQsIDUsIDIwMCwgMjU1LCAzNCwgNSwgMjE1LCAyMzYsIDYyLCAzNCwgNSwgMjE1LCAyMzYsIDY2LCAzNCwgCisgICAgNSwgMjE1LCAyMzYsIDcwLCAzNCwgNSwgMjE1LCAyMzYsIDI1MiwgMTM4LCAzNCwgNSwgMjE1LCAyMzYsIDIzOCwgMjU1LCAKKyAgICAzNCwgNSwgMjE1LCAyMzYsIDcyLCAzNCwgNSwgMjE1LCAyMzYsIDc0LCAzNCwgNSwgMTk5LCAxMTQsIDM0LCA1LCAxOTksIDMsIAorICAgIDM0LCA1LCAxOTksIDM2LCAzNCwgNSwgMTk5LCAxMTIsIDM0LCA1LCAxOTksIDg3LCAzNCwgNSwgMTk5LCA4OSwgMzQsIDUsIAorICAgIDE5OSwgMTQsIDM0LCA1LCAxOTgsIDI0NiwgMzQsIDUsIDE5OSwgNzcsIDM0LCA1LCAxOTksIDU0LCAzNCwgNSwgMTk5LCA2MywgCisgICAgMzQsIDUsIDE5OSwgNzYsIDM0LCA1LCAxOTksIDY3LCAzNCwgNSwgMTk5LCA2OCwgMzQsIDUsIDE5OSwgNjAsIDM0LCA1LCAKKyAgICAxOTksIDQ1LCAzNCwgNSwgMTgzLCAzNCwgNSwgMTk5LCAyMTEsIDM0LCA1LCAyMDAsIDksIDM0LCA1LCAyMDAsIDEwOSwgMzQsIAorICAgIDUsIDIwMCwgNDgsIDM0LCA1LCAyMDAsIDUxLCAzNCwgNSwgMTk5LCAyNDUsIDM0LCA1LCAxOTksIDIzNiwgMzQsIDUsIDI0MiwgCisgICAgNTgsIDM0LCA1LCAyMzksIDEzNywgMzQsIDUsIDI0MSwgNzYsIDM0LCA1LCAyNDIsIDU3LCAzNCwgNSwgMjQxLCAxNjEsIDM0LCAKKyAgICA1LCAyNDEsIDE3NSwgMzQsIDUsIDI0MCwgMjExLCAzNCwgNSwgMjM5LCAxMDQsIDM0LCA1LCAyNDEsIDIyMCwgMzQsIDUsIAorICAgIDI0MSwgMTg1LCAzNCwgNSwgMjQxLCAxOTcsIDM0LCA1LCAyNDEsIDIxOSwgMzQsIDUsIDI0MSwgMjA3LCAzNCwgNSwgMjQxLCAKKyAgICAyMDgsIDM0LCA1LCAyNDEsIDE5MCwgMzQsIDUsIDI0MSwgMTc2LCAzNCwgNSwgMjI3LCAyNDgsIDM0LCA1LCAyMjcsIDE0NywgCisgICAgMzQsIDUsIDIyNywgMjA3LCAzNCwgNSwgMjI3LCAyNDcsIDM0LCA1LCAyMjcsIDIyNSwgMzQsIDUsIDIyNywgMjI3LCAzNCwgCisgICAgNSwgMjI3LCAxNjYsIDM0LCA1LCAyMjcsIDEyNiwgMzQsIDUsIDIzNiwgODksIDM0LCA1LCAyMzUsIDUwLCAzNCwgNSwgMjM1LCAKKyAgICAxNjEsIDM0LCA1LCAyMzYsIDg2LCAzNCwgNSwgMjM2LCA3LCAzNCwgNSwgMjM2LCAxNSwgMzQsIDUsIDIzNSwgMTE2LCAzNCwgCisgICAgNSwgMjM1LCAxMTUsIDM0LCA1LCAyMzUsIDEwLCAzNCwgNSwgMjM1LCA2LCAzNCwgNSwgMjM1LCA5LCAzNCwgNSwgMjM1LCA3LCAKKyAgICAzNCwgNSwgMjM1LCA4LCAzNCwgNSwgMjM1LCAyMzUsIDM0LCA1LCAyMzUsIDIxNSwgMzQsIDUsIDIzNSwgMjI1LCAzNCwgNSwgCisgICAgMjM1LCAyMzQsIDM0LCA1LCAyMzUsIDIyOSwgMzQsIDUsIDIzNSwgMjMwLCAzNCwgNSwgMjM1LCAyMTksIDM0LCA1LCAyMzUsIAorICAgIDIwNCwgMzQsIDUsIDIwNiwgMTIyLCAzNCwgNSwgMjA2LCAzNSwgMzQsIDUsIDIwNiwgODQsIDM0LCA1LCAyMDYsIDEyMSwgCisgICAgMzQsIDUsIDIwNiwgMTA0LCAzNCwgNSwgMjA2LCAxMDYsIDM0LCA1LCAyMDYsIDYxLCAzNCwgNSwgMjA2LCAyNiwgMzQsIDUsIAorICAgIDI0NywgMzcsIDM0LCA1LCAyNDYsIDE5MiwgMzQsIDUsIDI0NiwgMjM2LCAzNCwgNSwgMjQ3LCAzNiwgMzQsIDUsIDI0NywgNCwgCisgICAgMzQsIDUsIDI0NywgOCwgMzQsIDUsIDI0NiwgMjEwLCAzNCwgNSwgMjQ2LCAxODEsIDM0LCA1LCAyMTUsIDI0NSwgMzQsIDUsIAorICAgIDIxNSwgMjEwLCAzNCwgNSwgMjE1LCAyMjksIDM0LCA1LCAyMTUsIDI0NCwgMzQsIDUsIDIxNSwgMjMxLCAzNCwgNSwgMjE1LCAKKyAgICAyMzIsIDM0LCA1LCAyMTUsIDIxNywgMzQsIDUsIDIxNSwgMjA2LCAzNCwgNSwgMjA1LCAzMiwgMzQsIDUsIDIwNSwgNSwgMzQsIAorICAgIDUsIDIwNSwgMTEsIDM0LCA1LCAyMDUsIDMxLCAzNCwgNSwgMjA1LCAyNSwgMzQsIDUsIDIwNSwgMjYsIDM0LCA1LCAyMDUsIAorICAgIDksIDM0LCA1LCAyMDUsIDMsIDM0LCA1LCAyMDQsIDExMywgMzQsIDUsIDIwNCwgMTA1LCAzNCwgNSwgMjA0LCAxMDksIDM0LCAKKyAgICA1LCAyMDQsIDExMiwgMzQsIDUsIDIwNCwgMTEwLCAzNCwgNSwgMjA0LCAxMTEsIDM0LCA1LCAyMDQsIDEwNywgMzQsIDUsIAorICAgIDIwNCwgMTA2LCAzNCwgNSwgMjM3LCAxOTUsIDM0LCA1LCAyMzYsIDE4OSwgMzQsIDUsIDIzNywgMTEyLCAzNCwgNSwgMjM3LCAKKyAgICAxOTQsIDM0LCA1LCAyMzcsIDE0MCwgMzQsIDUsIDIzNywgMTQ3LCAzNCwgNSwgMjM3LCAxMywgMzQsIDUsIDIzNiwgMTY3LCAKKyAgICAzNCwgNSwgMTcyLCAzNCwgNSwgMjE0LCAyMjQsIDM0LCA1LCAyMTUsIDIwNCwgMzQsIDUsIDIxNiwgMjEwLCAzNCwgNSwgCisgICAgMjE2LCA2MSwgMzQsIDUsIDIxNiwgNzMsIDM0LCA1LCAyMTUsIDEwNiwgMzQsIDUsIDIxNCwgMTg1LCAzNCwgNSwgMjEyLCAKKyAgICAxMzAsIDM0LCA1LCAyMjAsIDIyMCwgMzQsIDUsIDIzNiwgMTYxLCAzNCwgMzgsIDIzNiwgMywgMjYsIDIyLCAyMjUsIDIsIAorICAgIDgxLCAzNCwgMzgsIDIyLCAyMjUsIDIsIDgxLCAzNCwgMzgsIDIzNiwgMywgODEsIDM0LCAyMTEsIDE5MywgODEsIDM0LCAKKyAgICAyMDAsIDIzNywgMzQsIDIzNiwgMTgzLCAyMDgsIDc2LCAzNCwgMjQ2LCA3MCwgMzQsIDIxMCwgMTY3LCAzNCwgMjQ2LCA3OSwgCisgICAgMzQsIDIxNSwgMjUsIDI0NiwgNzksIDM0LCAyMTQsIDc5LCA4MSwgMzQsIDIxNiwgMTI4LCAyMTAsIDE1NCwgMzQsIDE3LCAKKyAgICAxMDIsIDM0LCAxNywgMTA1LCAzNCwgMTcsIDE0NywgMzQsIDE3LCAxNDksIDM0LCAxNywgMTY0LCAzNCwgMTcsIDE4NywgMzQsIAorICAgIDE3LCAyMTAsIDEzNSwgMzQsIDE3LCAxOTIsIDM0LCAxNywgMjE5LCAxMTMsIDM0LCA0MSwgMjA2LCAxNjYsIDM0LCA0MSwgCisgICAgMjA0LCAxNTksIDM0LCA0MSwgMjA2LCA2NywgMzQsIDQxLCAyMzYsIDIzNSwgMzQsIDQxLCAyMzcsIDEwNCwgMzQsIDQxLCAKKyAgICAyMDksIDkyLCAzNCwgNDEsIDIxMCwgMTI5LCAzNCwgNDEsIDIzOCwgMjIyLCAzNCwgNDEsIDIxOSwgMTA4LCAzNCwgNDEsIAorICAgIDIzMywgODIsIDM0LCA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDM0LCA1LCAyMTEsIDE5OCwgMjIwLCAyMzEsIDM0LCA1LCAKKyAgICAyMjAsIDIyNywgMzQsIDUsIDIyMCwgMjI4LCAzNCwgNSwgMjIwLCAyMjksIDM0LCA1LCAyMTEsIDE5OCwgMjQ3LCAyNDAsIAorICAgIDM0LCA1LCAyNDcsIDIzNywgMzQsIDUsIDI0NywgMjM4LCAzNCwgNSwgMjQ3LCAyMzksIDM0LCA1LCAyMTEsIDE5OCwgMjM2LCAKKyAgICAxNjcsIDM0LCA1LCAyMzYsIDE2MywgMzQsIDUsIDIzNiwgMTY0LCAzNCwgNSwgMjM2LCAxNjUsIDM0LCA1LCAyMTEsIDE5OCwgCisgICAgMjE0LCAxODUsIDM0LCA1LCAyMTQsIDE4MSwgMzQsIDUsIDIxNCwgMTgyLCAzNCwgNSwgMjE0LCAxODMsIDM0LCAyMDUsIAorICAgIDE3NSwgMTM0LCAxOTksIDI0OCwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0MSwgMTIxLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjEzLCAKKyAgICAzMiwgMzQsIDIwNSwgMTc1LCAxMzQsIDIwOSwgMjUwLCAyMTMsIDMyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCA1MCwgMzQsIAorICAgIDIwNSwgMTc1LCAxMzQsIDIyNiwgMjQyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQ2LCAyMTgsIDM0LCAyMDUsIDE3NSwgMTM0LCAKKyAgICAyMzQsIDcxLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCAxMjAsIDM0LCAyMDUsIDE3NSwgMTM0LCAyMjUsIDI0MywgOTEsIDEsIAorICAgIDYyLCA5MSwgMSwgNzIsIDkxLCAxLCA3MCwgOTEsIDEsIDc0LCA5MSwgMSwgNjYsIDkxLCAxLCAyMDMsIDE2OCwgOTEsIDEsIAorICAgIDIzNiwgODksIDkxLCAxLCAxNjEsIDkxLCAxLCAyMzYsIDE1LCA5MSwgMSwgMjM1LCAxNjEsIDkxLCAxLCAyMzUsIDExNiwgCisgICAgOTEsIDEsIDIzNSwgNTAsIDkxLCAxLCAyMzUsIDEyLCA5MSwgMSwgMTQ0LCA5MSwgMSwgMjM0LCAxMzksIDkxLCAxLCAyMzQsIAorICAgIDc1LCA5MSwgMSwgMjMzLCAyMDcsIDkxLCAxLCAyMzMsIDk3LCA5MSwgMSwgMjMzLCA2OSwgOTEsIDEsIDE5NCwgOTEsIDEsIAorICAgIDIyNSwgNDAsIDkxLCAxLCAyMjQsIDIxMCwgOTEsIDEsIDIyNCwgMTEwLCA5MSwgMSwgMjI0LCA0MiwgOTEsIDEsIDIyNCwgCisgICAgMTEsIDkxLCAxLCAxNzgsIDkxLCAxLCAyMjIsIDc2LCA5MSwgMSwgMjIxLCAyMTEsIDkxLCAxLCAyMjEsIDEzNiwgOTEsIDEsIAorICAgIDIyMSwgNDEsIDkxLCAxLCAxODgsIDkxLCAxLCAyMzMsIDIzMSwgOTEsIDEsIDIyMCwgMTQ0LCA5MSwgMSwgMjIwLCAzNCwgCisgICAgOTEsIDEsIDIxOSwgMTUwLCA5MSwgMSwgMjE4LCAyNDEsIDkxLCAxLCAyMTgsIDEzMywgOTEsIDEsIDIxOCwgNzEsIDkxLCAxLCAKKyAgICAyMTQsIDk2LCA5MSwgMSwgMjE0LCA4MiwgOTEsIDEsIDIxNCwgNzUsIDkxLCAxLCAyMTQsIDY2LCA5MSwgMSwgMjE0LCA1NSwgCisgICAgOTEsIDEsIDIxNCwgNTMsIDkxLCAxLCAyMTIsIDY0LCA5MSwgMSwgMjEyLCAxMjIsIDkxLCAxLCAyMTEsIDIwMiwgOTEsIDEsIAorICAgIDIwOSwgMTgyLCA5MSwgMSwgMjA5LCAyOSwgOTEsIDEsIDIwOCwgMjQsIDkxLCAxLCAyMDcsIDE5MSwgOTEsIDEsIDI0MiwgCisgICAgNTgsIDkxLCAxLCAyMDcsIDM2LCA5MSwgMSwgMjQxLCAxNzUsIDkxLCAxLCAyMDYsIDIwMSwgOTEsIDEsIDI0MSwgNzYsIDkxLCAKKyAgICAxLCAyMDYsIDE1LCA5MSwgMSwgMjQwLCAyMTEsIDkxLCAxLCAyMzksIDEzNywgOTEsIDEsIDIzOSwgMTA3LCA5MSwgMSwgCisgICAgMjQwLCAyMjIsIDkxLCAxLCAyMDUsIDIwMywgOTEsIDEsIDIwNSwgMjAyLCA5MSwgMSwgMjA1LCAxOTEsIDkxLCAxLCAyMDUsIAorICAgIDE5MCwgOTEsIDEsIDIwNSwgMTg5LCA5MSwgMSwgMjA1LCAxODgsIDkxLCAxLCAyMDUsIDMyLCA5MSwgMSwgMjA1LCAyNiwgCisgICAgOTEsIDEsIDIwNSwgMTEsIDkxLCAxLCAyMDUsIDksIDkxLCAxLCAyMDUsIDUsIDkxLCAxLCAyMDUsIDQsIDkxLCAxLCAyMDEsIAorICAgIDExNCwgOTEsIDEsIDIwMSwgNjQsIDkxLCAxLCAyMDEsIDMxLCA5MSwgMSwgMjAxLCAwLCA5MSwgMSwgMjAwLCAyMTYsIDkxLCAKKyAgICAxLCAyMDAsIDIwMywgOTEsIDEsIDE4MywgOTEsIDEsIDIwMCwgNTEsIDkxLCAxLCAyMDAsIDksIDkxLCAxLCAxOTksIDI0NSwgCisgICAgOTEsIDEsIDE5OSwgMjExLCA5MSwgMSwgMTk5LCAxNzUsIDkxLCAxLCAyMjAsIDIzOCwgOTEsIDQsIDEsIDIwMCwgNTEsIDkxLCAKKyAgICA0LCAxLCAyMDAsIDksIDkxLCA0LCAxLCAxOTksIDI0NSwgOTEsIDQsIDEsIDE5OSwgMjExLCA5MSwgNCwgMSwgMTk5LCAxNzUsIAorICAgIDkxLCA0LCAxLCAyMjAsIDIzOCwgMjAsIDIxLCAyMzMsIDMzLCAyMCwgMjEsIDcyLCAyMCwgMjEsIDI1MiwgMTAyLCAyMCwgCisgICAgMjEsIDcwLCAyMCwgMjEsIDIyOCwgMTUxLCAyMCwgMjEsIDc0LCAyMCwgMjEsIDIxNywgNjMsIDIwLCAyMSwgMjAwLCAxMjIsIAorICAgIDIxNywgNjMsIDIwLCAyMSwgODksIDIzOCwgMjU1LCAyMCwgMjEsIDg5LCA3MCwgMjAsIDIxLCA2MiwgMjAsIDIxLCAyNTIsIAorICAgIDEzOCwgMjAsIDIxLCAyMDEsIDY0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgNjQsIDIwLCAyMSwgMjAxLCAzMSwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMDEsIDMxLCAyMCwgMjEsIDIwMSwgMjAsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAyMCwgMjAsIDIxLCAyMDEsIAorICAgIDAsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAwLCAyMCwgMjEsIDIwMCwgMjQ0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMCwgMjQ0LCAKKyAgICAyMCwgMjEsIDIyMCwgMTE5LCAyMDAsIDI0NCwgMjAsIDIxLCAyMDEsIDExNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDExNCwgCisgICAgMjAsIDIxLCAyMDEsIDExMywgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDExMywgMjAsIDIxLCAyMjAsIDExOSwgMjAxLCAxMTMsIAorICAgIDIwLCAyMSwgMjUxLCAxNzYsIDIwLCAyMSwgMjAwLCAxMjIsIDIwMSwgMTQ3LCAyMCwgMjEsIDIzNSwgMTIzLCAyMDgsIDc2LCAKKyAgICAyMCwgMjEsIDQ3LCAxNjksIDIwLCAyMSwgNDcsIDIzNSwgNzMsIDIwLCAyMSwgNDcsIDI0OCwgOTMsIDE2NywgMjEzLCAyNiwgCisgICAgMjAsIDIxLCA0NywgMjA1LCAxNTgsIDE2NywgMjEzLCAyNiwgMjAsIDIxLCA0NywgNTEsIDE2NywgMjEzLCAyNiwgMjAsIDIxLCAKKyAgICA0NywgMjEzLCAyNiwgMjAsIDIxLCA0NywgNTMsIDE2OSwgMjAsIDIxLCA0NywgNTMsIDIwOSwgMjUwLCA4MywgMjA4LCAzNCwgCisgICAgMjAsIDIxLCA0NywgMTAxLCAyNDAsIDE4MiwgMjAsIDIxLCA0NywgMjA5LCAyNTAsIDIzMywgMTc3LCA5NywgMjAsIDIxLCAKKyAgICA0NywgMjE1LCAxMTMsIDIwLCAyMSwgNDcsIDEyNywgMjA3LCAxNywgMjAsIDIxLCAyMzgsIDE3OSwgMjAsIDIxLCAyMjgsIAorICAgIDExNywgMjAsIDIxLCAyMTcsIDc4LCAyMCwgMjEsIDI1MSwgODUsIDIwLCAyMSwgMjE2LCA3MywgMjAsIDIxLCAyMTYsIDIwOCwgCisgICAgMjAsIDIxLCAyMTUsIDIwNCwgMjAsIDIxLCAyMTUsIDE2NiwgMjAsIDIxLCAyMTUsIDEwNiwgMjAsIDIxLCAyMTUsIDgxLCAKKyAgICAyMCwgMjEsIDIwMCwgMTIyLCAyMTUsIDgxLCAyMCwgMjEsIDg5LCAyMzQsIDEyMCwgMjAsIDIxLCA4OSwgMjM0LCA3NSwgMjAsIAorICAgIDIxLCAxNzIsIDIwLCAyMSwgMjE2LCAyMTAsIDIwLCAyMSwgMjE0LCAxODMsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODMsIAorICAgIDIwLCAyMSwgMjE0LCAxODEsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODEsIDIwLCAyMSwgMjE0LCAxODAsIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjE0LCAxODAsIDIwLCAyMSwgMjE0LCAxNzgsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxNzgsIDIwLCAyMSwgCisgICAgMjE0LCAxNzcsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxNzcsIDIwLCAyMSwgMjE0LCAxODUsIDIwLCAyMSwgMjAxLCA0NiwgCisgICAgMjE0LCAxODUsIDIwLCAyMSwgMjE0LCAxODQsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODQsIDIwLCAyMSwgMjAwLCAxMjIsIAorICAgIDIxNCwgMTg0LCAyMCwgMjEsIDIxNiwgMjI2LCAyMCwgMjEsIDIwMSwgNDYsIDIxNiwgMjI2LCAyMCwgMjEsIDg5LCAyMzQsIAorICAgIDI0NywgMjAsIDIxLCAyMDYsIDIwMSwgMjAsIDIxLCAyMDcsIDMwLCAyMCwgMjEsIDIwNiwgMTUsIDIwLCAyMSwgMjA1LCAKKyAgICAyNTUsIDIwLCAyMSwgMTM4LCAyMCwgMjEsIDIwNSwgMTYxLCAyMCwgMjEsIDIwMCwgMTIyLCAyMDUsIDE2MSwgMjAsIDIxLCAKKyAgICA4OSwgMjQxLCAxNjEsIDIwLCAyMSwgODksIDI0MSwgNzYsIDIwLCAyMSwgMjA3LCAzNiwgMjAsIDIxLCAyMDcsIDMyLCAyMCwgCisgICAgMjEsIDIwNCwgMTY4LCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTY4LCAyMCwgMjEsIDIwNCwgMTQ3LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwNCwgMTQ3LCAyMCwgMjEsIDIwNCwgMTQ2LCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTQ2LCAyMCwgMjEsIDEwNSwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAxMDUsIDIwLCAyMSwgMjA0LCAxMzcsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxMzcsIDIwLCAKKyAgICAyMSwgMjA0LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNzAsIDIwLCAyMSwgMjA0LCAxNjksIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA0LCAxNjksIDIwLCAyMSwgMjIwLCAxMTksIDIwNCwgMTY5LCAyMCwgMjEsIDIwNywgODMsIDIwLCAyMSwgMjA0LCAKKyAgICAyNDgsIDIwLCAyMSwgMjA0LCAyMzIsIDIwLCAyMSwgMjA0LCAyMzAsIDIwLCAyMSwgMjA0LCAyNTMsIDIwLCAyMSwgMjI3LCAKKyAgICA4LCAyMCwgMjEsIDIyNywgMTAwLCAyMCwgMjEsIDIyNiwgMTYzLCAyMCwgMjEsIDIyNiwgMTUwLCAyMCwgMjEsIDIyNiwgODgsIAorICAgIDIwLCAyMSwgMjI2LCA2OCwgMjAsIDIxLCAyMDAsIDEyMiwgMjI2LCA2OCwgMjAsIDIxLCAxNjEsIDIwLCAyMSwgMjI3LCAKKyAgICAxMDUsIDIwLCAyMSwgMjI1LCAyMjQsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjQsIDIwLCAyMSwgMjI1LCAyMjIsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjI1LCAyMjIsIDIwLCAyMSwgMjI1LCAyMjEsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjEsIDIwLCAKKyAgICAyMSwgMjI1LCAyMTksIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMTksIDIwLCAyMSwgMjI1LCAyMTgsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjI1LCAyMTgsIDIwLCAyMSwgMjI1LCAyMjksIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjksIDIwLCAyMSwgMjI1LCAKKyAgICAyMjgsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjgsIDIwLCAyMSwgMjIwLCAxMTksIDIyNSwgMjI4LCAyMCwgMjEsIDIyNywgCisgICAgMTE4LCAyMCwgMjEsIDIyNSwgMjMwLCAyMCwgMjEsIDIwOCwgMjUzLCAyMjYsIDI1NCwgMjAsIDIxLCAyMDgsIDI1MywgMjI2LCAKKyAgICAxNTEsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNiwgODIsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNywgODQsIDIwLCAyMSwgMjQ3LCAKKyAgICA3NiwgMjAsIDIxLCAyNDcsIDE4OCwgMjAsIDIxLCAyNDYsIDE3MywgMjAsIDIxLCAyNDYsIDE2MywgMjAsIDIxLCAyNDYsIAorICAgIDkxLCAyMCwgMjEsIDI0MywgMzAsIDIwLCAyMSwgMjAwLCAxMjIsIDI0MywgMzAsIDIwLCAyMSwgMjQ3LCAxOTAsIDIwLCAyMSwgCisgICAgMjQ3LCAxODksIDIwLCAyMSwgMjQyLCAxNzQsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzQsIDIwLCAyMSwgMjQyLCAxNzIsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzIsIDIwLCAyMSwgMjQyLCAxNzEsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzEsIAorICAgIDIwLCAyMSwgMjQyLCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzAsIDIwLCAyMSwgMjQyLCAxNjksIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjQyLCAxNjksIDIwLCAyMSwgMjQyLCAxNzYsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzYsIDIwLCAyMSwgCisgICAgMjQyLCAxNzUsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzUsIDIwLCAyMSwgMjIwLCAxMTksIDI0MiwgMTc1LCAyMCwgMjEsIAorICAgIDI0NywgMjIzLCAyMCwgMjEsIDIxMSwgMjMyLCAyMDYsIDEyNCwgMjAsIDIxLCAyMjIsIDc2LCAyMCwgMjEsIDIyMiwgMjMyLCAKKyAgICAyMCwgMjEsIDIyMSwgMjExLCAyMCwgMjEsIDIyMSwgMTgxLCAyMCwgMjEsIDIyMSwgMTM2LCAyMCwgMjEsIDIyMSwgODcsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIyMSwgODcsIDIwLCAyMSwgMTc4LCAyMCwgMjEsIDIyMiwgMjMzLCAyMCwgMjEsIDIyMCwgCisgICAgMjI5LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI5LCAyMCwgMjEsIDIyMCwgMjI3LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgCisgICAgMjI3LCAyMCwgMjEsIDIyMCwgMjI2LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI2LCAyMCwgMjEsIDIyMCwgMjI1LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIyMCwgMjI1LCAyMCwgMjEsIDIyMCwgMjI0LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI0LCAyMCwgCisgICAgMjEsIDIyMCwgMjMxLCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjMxLCAyMCwgMjEsIDIyMCwgMjMwLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyMCwgMjMwLCAyMCwgMjEsIDIyMCwgMTE5LCAyMjAsIDIzMCwgMjAsIDIxLCAyMjMsIDI0MywgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjMsIDI0MywgMjAsIDIxLCAyMjEsIDIxNSwgMjAsIDIxLCAyNTAsIDE1MywgMjIzLCAyNDMsIDIwLCAyMSwgMjExLCAKKyAgICAyMzIsIDIyMywgMjQzLCAyMCwgMjEsIDIyMCwgMzQsIDIwLCAyMSwgMjIwLCAxNTYsIDIwLCAyMSwgMjE5LCAxNTAsIDIwLCAKKyAgICAyMSwgMjE5LCAxMjUsIDIwLCAyMSwgMjE4LCAyNDEsIDIwLCAyMSwgMjE4LCAyMjksIDIwLCAyMSwgMjAwLCAxMjIsIDIxOCwgCisgICAgMjI5LCAyMCwgMjEsIDE4OCwgMjAsIDIxLCAyMjAsIDE1NywgMjAsIDIxLCAyMTgsIDY3LCAyMCwgMjEsIDIwMSwgNDYsIAorICAgIDIxOCwgNjcsIDIwLCAyMSwgMjE4LCA2OSwgMjAsIDIxLCAyMDEsIDQ2LCAyMTgsIDY5LCAyMCwgMjEsIDIxOCwgNjgsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjE4LCA2OCwgMjAsIDIxLCAyMjAsIDExOSwgMjE4LCA2OCwgMjAsIDIxLCAyMjAsIDIxNCwgMjAsIAorICAgIDIxLCA4OSwgMjE5LCAyNTUsIDIwLCAyMSwgMjE5LCAxNTUsIDIwLCAyMSwgMjI1LCA0MCwgMjAsIDIxLCAyMjUsIDE3NCwgCisgICAgMjAsIDIxLCAyMjQsIDIxMCwgMjAsIDIxLCAyMjQsIDE5MiwgMjAsIDIxLCAyMjQsIDExMCwgMjAsIDIxLCAyMjQsIDc4LCAKKyAgICAyMCwgMjEsIDIwMCwgMTIyLCAyMjQsIDc4LCAyMCwgMjEsIDE5NCwgMjAsIDIxLCAyMjUsIDE3NSwgMjAsIDIxLCAyMjQsIDgsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA4LCAyMCwgMjEsIDIyNCwgNywgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDcsIDIwLCAyMSwgCisgICAgMjI0LCA2LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNiwgMjAsIDIxLCAyMjQsIDUsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA1LCAKKyAgICAyMCwgMjEsIDIyNCwgNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDQsIDIwLCAyMSwgMjI0LCAxMCwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjQsIDEwLCAyMCwgMjEsIDIyNCwgOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDksIDIwLCAyMSwgMTU2LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDE1NiwgMjAsIDIxLCAxNzksIDE1NiwgMjAsIDIxLCAyMTEsIDIwMiwgMjAsIDIxLCAyMTIsIDU5LCAKKyAgICAyMCwgMjEsIDIwOSwgMTgyLCAyMCwgMjEsIDIwOSwgMTYxLCAyMCwgMjEsIDIwOSwgMjksIDIwLCAyMSwgMjA5LCAxMCwgMjAsIAorICAgIDIxLCAyMDAsIDEyMiwgMjA5LCAxMCwgMjAsIDIxLCAyMTIsIDY0LCAyMCwgMjEsIDIxMiwgNjEsIDIwLCAyMSwgMjA3LCAKKyAgICAxODIsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxODIsIDIwLCAyMSwgMjA3LCAxNzYsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAKKyAgICAxNzYsIDIwLCAyMSwgMjA3LCAxNzUsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxNzUsIDIwLCAyMSwgMjA3LCAxNzEsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjA3LCAxNzEsIDIwLCAyMSwgMjA3LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxNzAsIDIwLCAKKyAgICAyMSwgMjA3LCAxODYsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxODYsIDIwLCAyMSwgMjA3LCAxODUsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA3LCAxODUsIDIwLCAyMSwgMjIwLCAxMTksIDIwNywgMTg1LCAyMCwgMjEsIDIxMiwgMTIyLCAyMCwgMjEsIDI1MCwgCisgICAgMTUzLCAyMTIsIDEyMiwgMjAsIDIxLCAyMDcsIDE4NywgMjAsIDIxLCAyNDgsIDE0MSwgMjEyLCAxMjIsIDIwLCAyMSwgMjIxLCAKKyAgICA4MCwgMjA5LCA4OCwgMjAsIDIxLCAyMjAsIDExOSwgMjA5LCA3OSwgMjAsIDIxLCAyMjAsIDExOSwgMjEyLCAxMjAsIDIwLCAKKyAgICAyMSwgMjIwLCAxMTksIDIwOCwgMTk1LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDgsIDI3LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDksIAorICAgIDc4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTEsIDIwNSwgMjAsIDIxLCAyMTAsIDY1LCAyMCwgMjEsIDIxMCwgMzMsIDIwLCAyMSwgCisgICAgMjEwLCAyOCwgMjAsIDIxLCAyMTAsIDgsIDIwLCAyMSwgMjEwLCAyLCAyMCwgMjEsIDIxMCwgMTE0LCAyMCwgMjEsIDIxMCwgCisgICAgMTA5LCAyMCwgMjEsIDIwOSwgMTk3LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk3LCAyMCwgMjEsIDIwOSwgMTk2LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIwOSwgMTk2LCAyMCwgMjEsIDIwOSwgMTk1LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk1LCAyMCwgCisgICAgMjEsIDIwOSwgMTk0LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk0LCAyMCwgMjEsIDIwOSwgMTkzLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwOSwgMTkzLCAyMCwgMjEsIDIwOSwgMjAwLCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMjAwLCAyMCwgMjEsIDIwOSwgCisgICAgMTk5LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk5LCAyMCwgMjEsIDIxMCwgMTE2LCAyMCwgMjEsIDIwMCwgNTEsIDIwLCAKKyAgICAyMSwgMjAwLCAxMDcsIDIwLCAyMSwgMjAwLCA5LCAyMCwgMjEsIDIwMCwgMCwgMjAsIDIxLCAxOTksIDI0NSwgMjAsIDIxLCAKKyAgICAxOTksIDIzMCwgMjAsIDIxLCAyMDAsIDEyMiwgMTk5LCAyMzAsIDIwLCAyMSwgMTgzLCAyMCwgMjEsIDIwMCwgMTA5LCAyMCwgCisgICAgMjEsIDE5OSwgMTcyLCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTcyLCAyMCwgMjEsIDE5OSwgMTcxLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDE5OSwgMTcxLCAyMCwgMjEsIDE5OSwgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTcwLCAyMCwgMjEsIDE5OSwgCisgICAgMTY5LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTY5LCAyMCwgMjEsIDE5OSwgMTY4LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgCisgICAgMTY4LCAyMCwgMjEsIDE5OSwgMTc0LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTc0LCAyMCwgMjEsIDE5OSwgMTczLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDE5OSwgMTczLCAyMCwgMjEsIDIyMCwgMTE5LCAxOTksIDE3MywgMjAsIDIxLCAyMDAsIDEyMywgMjAsIAorICAgIDIxLCAyNDgsIDE4NiwgMjAwLCAxMjMsIDIwLCAyMSwgMjAxLCA0NiwgMjAwLCAxMjMsIDIwLCAyMSwgMjExLCAyMzIsIDIwMCwgCisgICAgOSwgMjAsIDIxLCAyMTMsIDE5MCwgMjAsIDIxLCAyMTQsIDMyLCAyMTMsIDE5MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDQwLCAKKyAgICAyMCwgMjEsIDIxMywgMjQ3LCAyMCwgMjEsIDIxMywgODgsIDIwLCAyMSwgMjEzLCAzMywgMjAsIDIxLCAyMTMsIDEsIDIwLCAKKyAgICAyMSwgMjEyLCAyMzgsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCAxMTAsIDIwLCAyMSwgMjEzLCAyNTIsIDIwLCAyMSwgMjEzLCAKKyAgICAyNDgsIDIwLCAyMSwgMjAxLCA0NiwgMTk0LCAyMCwgMjEsIDIxMiwgMTM5LCAyMCwgMjEsIDIwMSwgNDYsIDIxMiwgMTM5LCAKKyAgICAyMCwgMjEsIDE0NiwgMjAsIDIxLCAyMDEsIDQ2LCAxNDYsIDIwLCAyMSwgMTc5LCAxNDYsIDIwLCAyMSwgMjM3LCAxNDcsIAorICAgIDIwLCAyMSwgMjM3LCAxOTIsIDIwLCAyMSwgMjM3LCAxMTIsIDIwLCAyMSwgMjM3LCA5OCwgMjAsIDIxLCAyMzcsIDEzLCAyMCwgCisgICAgMjEsIDIzNywgMiwgMjAsIDIxLCAyMzcsIDE5NSwgMjAsIDIxLCAyMzcsIDE5NCwgMjAsIDIxLCAyMzYsIDE2NiwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMzYsIDE2NiwgMjAsIDIxLCAyMzgsIDUsIDIwLCAyMSwgMjA2LCAxMDYsIDIwLCAyMSwgMjIwLCAyMTIsIAorICAgIDIwNiwgMTA2LCAyMCwgMjEsIDIwNiwgODQsIDIwLCAyMSwgMjIwLCAyMTIsIDIwNiwgODQsIDIwLCAyMSwgMjA2LCA3OCwgCisgICAgMjAsIDIxLCAyMjAsIDIxMiwgMjA2LCA3OCwgMjAsIDIxLCAyMDYsIDYxLCAyMCwgMjEsIDIwNiwgNTYsIDIwLCAyMSwgMjA2LCAKKyAgICAxMjIsIDIwLCAyMSwgMjA2LCAxMjEsIDIwLCAyMSwgMjA2LCAyNSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDYsIDI1LCAyMCwgMjEsIAorICAgIDIwNiwgMTI0LCAyMCwgMjEsIDIwNCwgMjM5LCAyMCwgMjEsIDIwNCwgMjM3LCAyMCwgMjEsIDIwNCwgMjM2LCAyMCwgMjEsIAorICAgIDIwNCwgMjQxLCAyMCwgMjEsIDIwNCwgMjQyLCAyMCwgMjEsIDIwNCwgMTMxLCAyMCwgMjEsIDIwNCwgMTMwLCAyMCwgMjEsIAorICAgIDIwNCwgMTI5LCAyMCwgMjEsIDIwNCwgMTMzLCAyMCwgMjEsIDIxOCwgODgsIDIzNCwgMTM5LCAyMCwgMjEsIDIxOCwgODgsIAorICAgIDIzNCwgNzUsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCA1NCwgMjAsIDIxLCAyMTgsIDg4LCAyMzMsIDIwNywgMjAsIDIxLCAKKyAgICAyMTgsIDg4LCAyMzMsIDE4OCwgMjAsIDIxLCAyMTgsIDg4LCAxNDQsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCAyMzMsIDIwLCAKKyAgICAyMSwgMjE4LCA4OCwgMjM0LCAyNDcsIDIwLCAyMSwgMjE4LCA4NywgMjM0LCAyNDcsIDIwLCAyMSwgMjM0LCA0MSwgMjAsIAorICAgIDIxLCAyMTQsIDE1NSwgMjAsIDIxLCAyMTQsIDEyMSwgMjAsIDIxLCAyMTQsIDExNSwgMjAsIDIxLCAyMTQsIDEwOSwgMjAsIAorICAgIDIxLCAyMTQsIDEwNCwgMjAsIDIxLCAyMTQsIDE1OSwgMjAsIDIxLCAyMTQsIDE1OCwgMjAsIDIxLCAyMTQsIDE2NywgMjAsIAorICAgIDIxLCAyMDUsIDE5OSwgMjAsIDIxLCAyMDUsIDE5NywgMjAsIDIxLCAyMDUsIDE5NiwgMjAsIDIxLCAyMDUsIDIwMCwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMTMsIDE5MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTMsIDg4LCAyMCwgMjEsIDIwMSwgNDYsIDIxMywgMSwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyMTMsIDI1MiwgMjAsIDIxLCAyMTksIDI1MSwgMjAsIDIxLCAyMTksIDIwMSwgMjAsIDIxLCAKKyAgICAyMTksIDE5NywgMjAsIDIxLCAyMTksIDE3OCwgMjAsIDIxLCAyMTksIDE3MywgMjAsIDIxLCAyMTksIDI1MywgMjAsIDIxLCAKKyAgICAyMTksIDI1MiwgMjAsIDIxLCAyMTksIDI1NSwgMjAsIDIxLCAyMTksIDE0LCAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDY1LCAKKyAgICAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDMzLCAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDgsIDIwLCAyMSwgMjExLCAyMzIsIAorICAgIDIxMCwgMTE0LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDEwNiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCA4NCwgMjAsIDIxLCAKKyAgICAyMDAsIDI0MiwgMjA2LCA2MSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAxMjIsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgCisgICAgMTI0LCAyMCwgMjEsIDIyNCwgMjE3LCAyMCwgMjEsIDIyNCwgMjE2LCAyMCwgMjEsIDIyNCwgMjE1LCAyMCwgMjEsIDIyNCwgCisgICAgMjE0LCAyMCwgMjEsIDIyNCwgMjIzLCAyMCwgMjEsIDIyNCwgMjIyLCAyMCwgMjEsIDIyNCwgMjI0LCAyMCwgMjEsIDIwNiwgCisgICAgMTIzLCAyMDYsIDEwNiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA4NCwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA3OCwgMjAsIAorICAgIDIxLCAyMDYsIDEyMywgMjA2LCA2MSwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA1NiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCAKKyAgICAxMjIsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgMTIxLCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDEyNCwgMjAsIDIxLCAyNTEsIAorICAgIDE2MiwgMjUwLCAxMDMsIDIwLCAyMSwgMjQ4LCAxNDEsIDcyLCAyMCwgMjEsIDI0OCwgMTQxLCA3MCwgMjAsIDIxLCAyNDgsIAorICAgIDE0MSwgNzQsIDIwLCAyMSwgMjQ4LCAxNDEsIDYyLCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDY0LCAyMCwgMjEsIDI0OCwgCisgICAgMTQxLCAyMDEsIDMxLCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDAsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMTE0LCAyMCwgCisgICAgMjEsIDI0OCwgMTQxLCAyMjAsIDM0LCAyMCwgMjEsIDI0OCwgMTQxLCAyMTksIDE1MCwgMjAsIDIxLCAyNDgsIDE0MSwgMjE4LCAKKyAgICAyNDEsIDIwLCAyMSwgMjQ4LCAxNDEsIDE4OCwgMjAsIDIxLCAyNDgsIDE0MSwgMjI3LCA4LCAyMCwgMjEsIDI0OCwgMTQxLCAKKyAgICAyMjYsIDE2MywgMjAsIDIxLCAyNDgsIDE0MSwgMjI2LCA4OCwgMjAsIDIxLCAyNDgsIDE0MSwgMTYxLCAyMCwgMjEsIDIxMSwgCisgICAgMjMyLCAyMzQsIDEzOSwgMjAsIDIxLCAyMTEsIDIzMiwgMjM0LCA3NSwgMjAsIDIxLCAyMTEsIDIzMiwgMjMzLCAyMDcsIDIwLCAKKyAgICAyMSwgMjExLCAyMzIsIDE0NCwgMjAsIDIxLCA4OSwgMjM1LCAxNjcsIDIwLCAyMSwgODksIDIzNSwgMTcxLCAyMCwgMjEsIAorICAgIDg5LCAyMzUsIDE4NSwgMjAsIDIxLCA4OSwgMjM1LCAxODQsIDIwLCAyMSwgODksIDIzNSwgMTczLCAyMCwgMjEsIDg5LCAKKyAgICAyMzUsIDE5OSwgMjAsIDIxLCA4OSwgMjEyLCAxNzUsIDIwLCAyMSwgODksIDIxMywgMSwgMjAsIDIxLCA4OSwgMjEzLCAxOTAsIAorICAgIDIwLCAyMSwgODksIDIxMywgMTY3LCAyMCwgMjEsIDg5LCAyMTMsIDg4LCAyMCwgMjEsIDg5LCAyMTMsIDI1MiwgMjAsIDIxLCAKKyAgICA4OSwgMjAwLCAyMTYsIDIwLCAyMSwgODksIDIwMSwgMCwgMjAsIDIxLCA4OSwgMjAxLCA2NCwgMjAsIDIxLCA4OSwgMjAxLCAKKyAgICA1NywgMjAsIDIxLCA4OSwgMjAxLCAzMSwgMjAsIDIxLCA4OSwgMjAxLCAxMTQsIDIwLCAyMSwgODksIDIzMywgNjEsIDIwLCAKKyAgICAyMSwgODksIDIzMywgNjIsIDIwLCAyMSwgODksIDIzMywgNjUsIDIwLCAyMSwgODksIDIzMywgNjQsIDIwLCAyMSwgODksIAorICAgIDIzMywgNjMsIDIwLCAyMSwgODksIDIzMywgNjgsIDIwLCAyMSwgODksIDIwNiwgMzUsIDIwLCAyMSwgODksIDIwNiwgNjEsIAorICAgIDIwLCAyMSwgODksIDIwNiwgMTA2LCAyMCwgMjEsIDg5LCAyMDYsIDEwNCwgMjAsIDIxLCA4OSwgMjA2LCA4NCwgMjAsIDIxLCAKKyAgICA4OSwgMjA2LCAxMjIsIDIwLCAyMSwgODksIDIwNCwgMjIwLCAyMCwgMjEsIDg5LCAyMDQsIDIzMCwgMjAsIDIxLCA4OSwgCisgICAgMjA0LCAyNDgsIDIwLCAyMSwgODksIDIwNCwgMjQ3LCAyMCwgMjEsIDg5LCAyMDQsIDIzMiwgMjAsIDIxLCA4OSwgMjA0LCAKKyAgICAyNTMsIDIwLCAyMSwgODksIDIxNCwgMjI0LCAyMCwgMjEsIDg5LCAyMTUsIDEwNiwgMjAsIDIxLCA4OSwgMjE2LCA3MywgMjAsIAorICAgIDIxLCA4OSwgMjE2LCA2MSwgMjAsIDIxLCA4OSwgMjE1LCAyMDQsIDIwLCAyMSwgODksIDE3MiwgMjAsIDIxLCA4OSwgMjE2LCAKKyAgICAyMjYsIDIwLCAyMSwgODksIDIzNSwgNTAsIDIwLCAyMSwgODksIDIzNSwgMTE2LCAyMCwgMjEsIDg5LCAyMzYsIDE1LCAyMCwgCisgICAgMjEsIDg5LCAyMzYsIDcsIDIwLCAyMSwgODksIDIzNSwgMTYxLCAyMCwgMjEsIDg5LCAyMzYsIDg5LCAyMCwgMjEsIDg5LCAKKyAgICAyMjYsIDE3MiwgMjAsIDIxLCA4OSwgMjI2LCAxNzgsIDIwLCAyMSwgODksIDIyNiwgMTkyLCAyMCwgMjEsIDg5LCAyMjYsIAorICAgIDE5MSwgMjAsIDIxLCA4OSwgMjI2LCAxODUsIDIwLCAyMSwgODksIDIyNiwgMjA3LCAyMCwgMjEsIDg5LCAyMjYsIDEwNCwgCisgICAgMjAsIDIxLCA4OSwgMjI2LCAxMDUsIDIwLCAyMSwgODksIDIyNiwgMTA4LCAyMCwgMjEsIDg5LCAyMjYsIDEwNywgMjAsIDIxLCAKKyAgICA4OSwgMjI2LCAxMDYsIDIwLCAyMSwgODksIDIyNiwgMTA5LCAyMCwgMjEsIDg5LCAyMjYsIDExMCwgMjAsIDIxLCA4OSwgCisgICAgMjE4LCAxMzMsIDIwLCAyMSwgODksIDIxOCwgMjQxLCAyMCwgMjEsIDg5LCAyMjAsIDM0LCAyMCwgMjEsIDg5LCAyMjAsIDI5LCAKKyAgICAyMCwgMjEsIDg5LCAyMTksIDE1MCwgMjAsIDIxLCA4OSwgMTg4LCAyMCwgMjEsIDg5LCAyMjEsIDQxLCAyMCwgMjEsIDg5LCAKKyAgICAyMjEsIDEzNiwgMjAsIDIxLCA4OSwgMjIyLCA3NiwgMjAsIDIxLCA4OSwgMjIyLCA2NCwgMjAsIDIxLCA4OSwgMjIxLCAyMTEsIAorICAgIDIwLCAyMSwgODksIDE3OCwgMjAsIDIxLCA4OSwgMTk5LCAyMTEsIDIwLCAyMSwgODksIDE5OSwgMjQ1LCAyMCwgMjEsIDg5LCAKKyAgICAyMDAsIDUxLCAyMCwgMjEsIDg5LCAyMDAsIDQ4LCAyMCwgMjEsIDg5LCAyMDAsIDksIDIwLCAyMSwgODksIDE4MywgMjAsIAorICAgIDIxLCA4OSwgMjI3LCAxNDcsIDIwLCAyMSwgMjExLCAyMzIsIDIyNywgMTQ3LCAyMCwgMjEsIDg5LCAyMjcsIDE2NiwgMjAsIAorICAgIDIxLCA4OSwgMjI3LCAyMjcsIDIwLCAyMSwgODksIDIyNywgMjI1LCAyMCwgMjEsIDg5LCAyMjcsIDIwNywgMjAsIDIxLCAKKyAgICAyMTEsIDIzMiwgMjI3LCAyMDcsIDIwLCAyMSwgODksIDIyNywgMjQ4LCAyMCwgMjEsIDg5LCAyMjcsIDE3OSwgMjAsIDIxLCAKKyAgICA4OSwgMjI3LCAxODMsIDIwLCAyMSwgODksIDIyNywgMTkzLCAyMCwgMjEsIDg5LCAyMjcsIDE5MiwgMjAsIDIxLCA4OSwgCisgICAgMjI3LCAxOTEsIDIwLCAyMSwgODksIDIyNywgMTk0LCAyMCwgMjEsIDg5LCAyMjQsIDQyLCAyMCwgMjEsIDg5LCAyMjQsIAorICAgIDExMCwgMjAsIDIxLCA4OSwgMjI1LCA0MCwgMjAsIDIxLCA4OSwgMjI1LCAzMiwgMjAsIDIxLCA4OSwgMjI0LCAyMTAsIDIwLCAKKyAgICAyMSwgODksIDE5NCwgMjAsIDIxLCA4OSwgMjQwLCAyMTUsIDIwLCAyMSwgODksIDI0MCwgMjE2LCAyMCwgMjEsIDg5LCAyNDAsIAorICAgIDIyMSwgMjAsIDIxLCA4OSwgMjQwLCAyMjAsIDIwLCAyMSwgODksIDI0MCwgMjE3LCAyMCwgMjEsIDg5LCAyNDAsIDIyMiwgCisgICAgMjAsIDIxLCA4OSwgMjI0LCAyMTMsIDIwLCAyMSwgODksIDIyNCwgMjE1LCAyMCwgMjEsIDg5LCAyMjQsIDIxOSwgMjAsIDIxLCAKKyAgICA4OSwgMjI0LCAyMTgsIDIwLCAyMSwgODksIDIyNCwgMjE3LCAyMCwgMjEsIDg5LCAyMjQsIDIyMywgMjAsIDIxLCA4OSwgCisgICAgMjA1LCAxOTQsIDIwLCAyMSwgODksIDIwNSwgMTk2LCAyMCwgMjEsIDg5LCAyMDUsIDE5OSwgMjAsIDIxLCA4OSwgMjA1LCAKKyAgICAxOTgsIDIwLCAyMSwgODksIDIwNSwgMTk3LCAyMCwgMjEsIDg5LCAyMDUsIDIwMCwgMjAsIDIxLCA4OSwgMjA1LCAxODksIAorICAgIDIwLCAyMSwgODksIDIwNSwgMTkwLCAyMCwgMjEsIDg5LCAyMDUsIDIwMiwgMjAsIDIxLCA4OSwgMjA1LCAyMDEsIDIwLCAyMSwgCisgICAgODksIDIwNSwgMTkxLCAyMCwgMjEsIDg5LCAyMDUsIDIwMywgMjAsIDIxLCA4OSwgMTk5LCAzLCAyMCwgMjEsIDg5LCAxOTksIAorICAgIDE0LCAyMCwgMjEsIDg5LCAxOTksIDg5LCAyMCwgMjEsIDg5LCAxOTksIDg3LCAyMCwgMjEsIDg5LCAxOTksIDM2LCAyMCwgCisgICAgMjEsIDg5LCAxOTksIDExNCwgMjAsIDIxLCA4OSwgMTk5LCAxNTcsIDIwLCAyMSwgODksIDgyLCAxOTksIDE1NywgMjAsIDIxLCAKKyAgICA4OSwgMjM5LCA4MCwgMjAsIDIxLCA4OSwgMjM5LCA4MSwgMjAsIDIxLCA4OSwgMjM5LCA5MCwgMjAsIDIxLCA4OSwgMjM5LCAKKyAgICA4OSwgMjAsIDIxLCA4OSwgMjM5LCA4NCwgMjAsIDIxLCA4OSwgMjM5LCA5MywgMjAsIDIxLCA4OSwgMjA4LCAyNCwgMjAsIAorICAgIDIxLCA4OSwgMjA5LCAyOSwgMjAsIDIxLCA4OSwgMjExLCAyMDIsIDIwLCAyMSwgODksIDIxMSwgMTkwLCAyMCwgMjEsIDg5LCAKKyAgICAyMDksIDE4MiwgMjAsIDIxLCA4OSwgMjEyLCA2NCwgMjAsIDIxLCA4OSwgMjA5LCAyMjAsIDIwLCAyMSwgODksIDIxMCwgOCwgCisgICAgMjAsIDIxLCA4OSwgMjEwLCA2NSwgMjAsIDIxLCA4OSwgMjEwLCA2MywgMjAsIDIxLCA4OSwgMjEwLCAzMywgMjAsIDIxLCAKKyAgICA4OSwgMjEwLCAxMTQsIDIwLCAyMSwgODksIDIxMCwgMTE2LCAyMCwgMjEsIDg5LCAyMDUsIDUsIDIwLCAyMSwgODksIDIwNSwgCisgICAgOSwgMjAsIDIxLCA4OSwgMjA1LCAyNiwgMjAsIDIxLCA4OSwgMjA1LCAyNSwgMjAsIDIxLCA4OSwgMjA1LCAxMSwgMjAsIDIxLCAKKyAgICA4OSwgMjA1LCAzMiwgMjAsIDIxLCA4OSwgMjQ2LCAxOTIsIDIwLCAyMSwgODksIDI0NiwgMjEwLCAyMCwgMjEsIDg5LCAyNDcsIAorICAgIDgsIDIwLCAyMSwgODksIDI0NywgNCwgMjAsIDIxLCA4OSwgMjQ2LCAyMzYsIDIwLCAyMSwgODksIDI0NywgMzcsIDIwLCAyMSwgCisgICAgODksIDIwNCwgMjIzLCAyMCwgMjEsIDg5LCAyMDQsIDIyNCwgMjAsIDIxLCA4OSwgMjA0LCAyMjcsIDIwLCAyMSwgODksIAorICAgIDIwNCwgMjI2LCAyMCwgMjEsIDg5LCAyMDQsIDIyNSwgMjAsIDIxLCA4OSwgMjA0LCAyMjgsIDIwLCAyMSwgMjQ2LCAyMzcsIAorICAgIDU0LCAyMCwgMjEsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMCwgMjEsIDIxNCwgMTUxLCAyMCwgMjEsIDIxOSwgMjQ5LCAyMCwgCisgICAgMjEsIDIxOSwgMTEsIDIwLCAyMSwgMjE5LCAxMCwgMjAsIDIxLCAyMTksIDksIDIwLCAyMSwgMjE5LCA4LCAyMCwgMjEsIAorICAgIDIxOSwgMTMsIDIwLCAyMSwgMjE5LCAxMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMywgMjAsIDIxLCAyMDAsIDI0MiwgCisgICAgMjA2LCAyMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMCwgMjAsIDIxLCAKKyAgICAyMDAsIDI0MiwgMjA2LCAxOSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyNiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyNSwgCisgICAgMjAsIDIxLCAyMDAsIDI0MiwgNDcsIDIwNiwgMTI0LCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDE0NywgMjE3LCAxMTIsIAorICAgIDIwOCwgMjQ1LCA4MSwgMjE3LCAxMTIsIDEsIDI0OCwgMjM0LCAyMTcsIDExMiwgMSwgMjI0LCAyOCwgMjE3LCAxMTIsIDEsIAorICAgIDIzNywgMTQ0LCAyMTcsIDExMiwgMSwgMjEyLCA0NCwgMjE3LCAxMTIsIDEsIDIxOSwgMTA2LCAyMTcsIDExMiwgMSwgMjA0LCAKKyAgICA0MywgMjE3LCAxMTIsIDEsIDI0MiwgMzEsIDIxNywgMTEyLCAxLCAyMDUsIDIyNywgMjE3LCAxMTIsIDEsIDI0NiwgODIsIAorICAgIDIxNywgMTEyLCAxLCAyNDcsIDYzLCAyMTcsIDExMiwgMSwgMjIxLCAyOCwgMjE3LCAxMTIsIDEsIDIzNSwgOTYsIDIxNywgCisgICAgMTEyLCAxLCAyMTksIDIzOSwgMjE3LCAxMTIsIDEsIDIwOCwgNjksIDIxNywgMTEyLCAxLCAyMTIsIDE2OCwgMjE3LCAxMTIsIAorICAgIDEsIDI1MSwgMTczLCAyMTcsIDExMiwgMSwgMjE3LCA2NywgMjE3LCAxMTIsIDEsIDIwMywgMjE0LCAyMTcsIDExMiwgMSwgCisgICAgMjM5LCAyNSwgMjE3LCAxMTIsIDEsIDIyOCwgNDQsIDIxNywgMTEyLCAxLCAyMzksIDI2LCAyMTcsIDExMiwgMSwgMjE3LCAKKyAgICAzMywgMjE3LCAxMTIsIDEsIDIwNCwgMjEsIDIxNywgMTEyLCAxLCAyMjgsIDE1NywgMjE3LCAxMTIsIDEsIDIzOSwgMjMsIAorICAgIDIxNywgMTEyLCAxLCAyMTYsIDUxLCAyMTcsIDExMiwgMjM3LCAxNDMsIDgxLCAyMTcsIDExMiwgMjEzLCAxMDUsIDIzNywgCisgICAgMTQzLCA4MSwgMjEyLCAxNTcsIDEsIDIzNywgMTMzLCAyMzcsIDEyNCwgMjM3LCAxNDgsIDIzOCwgNSwgMjEyLCAxNTcsIDEsIAorICAgIDIwMywgMTY4LCAyMTIsIDE1NywgMSwgMjAzLCAxOTksIDIwMywgMjE1LCA2NiwgMjEyLCAxNTcsIDEsIDE5OSwgMjE0LCAKKyAgICAyMTIsIDE1NywgMSwgMjAwLCAxMjMsIDIxMiwgMTU3LCAxLCAyMDEsIDE0NywgMjEyLCAxNTcsIDEsIDIwNiwgMjgsIDIwNiwgCisgICAgMjcsIDIwNiwgNTQsIDIxMiwgMTU3LCAxLCAyMzgsIDc0LCAyMTIsIDE1NywgMSwgMjUxLCA1MiwgNjIsIDIxMiwgMTU3LCAxLCAKKyAgICAyMTcsIDE2LCA3NCwgMjEyLCAxNTcsIDEsIDI1MSwgMjU1LCA2MiwgMjEyLCAxNTcsIDEsIDI1MSwgMjA1LCAyMTIsIDE1NywgCisgICAgMSwgMjI0LCA4NSwgNzQsIDIxMiwgMTU3LCAxLCAyMDksIDI0MywgNzQsIDIxMiwgMTU3LCAxLCA3NCwgMjEyLCAxNTcsIDEsIAorICAgIDIxNywgMTIxLCAyMTIsIDE1NywgMSwgMjE3LCA3OCwgMjEyLCAxNTcsIDEsIDIxMywgMjI3LCAyMTMsIDI0MCwgMjEzLCAKKyAgICAxNTIsIDE0NiwgMjEyLCAxNTcsIDEsIDIyNywgMjMsIDIxMiwgMTU3LCAxLCAyNDcsIDU5LCAyMTIsIDE1NywgMSwgMjI3LCAKKyAgICAyNCwgMjI3LCAxMTgsIDIxMiwgMTU3LCAxLCAyMzYsIDE1NiwgMjEyLCAxNTcsIDEsIDIzOCwgMTY1LCAyMTIsIDE1NywgMSwgCisgICAgMjM2LCAxMCwgMjM0LCAyNTMsIDIzNiwgMTU2LCAyMTIsIDE1NywgMSwgMjM2LCA0OSwgMjEyLCAxNTcsIDEsIDIwMCwgMjA4LCAKKyAgICAyMDAsIDE5OSwgMjAxLCAxNDcsIDIxMiwgMTU3LCAxLCAyMzQsIDIyNSwgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMzQsIAorICAgIDIyOSwgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMjQsIDg3LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIwOSwgMjQ2LCAKKyAgICAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIyMCwgMTE0LCAyMTgsIDUxLCAyMjAsIDExNSwgMjIwLCAyMTQsIDIxMiwgMTU3LCAKKyAgICAxLCAyMDksIDI0NCwgMjIwLCAyMTQsIDIxMiwgMTU3LCAxLCAyMzksIDE3NywgMjEyLCAxNTcsIDEsIDIyOCwgMjMsIDIyOCwgCisgICAgMjcsIDIyOCwgMTQsIDcwLCAyMTIsIDE1NywgMSwgNzIsIDIxMiwgMTU3LCAxLCAyMjcsIDIxOCwgMjI3LCAyNTEsIDIxMiwgCisgICAgMTU3LCAxLCAyMzUsIDI0OSwgMjEyLCAxNTcsIDEsIDIyNCwgODgsIDI1MSwgMjIxLCAyMTIsIDE1NywgMSwgMjA5LCAyNDgsIAorICAgIDYyLCAyMTIsIDE1NywgMSwgMjI4LCA2LCAyMzgsIDEzOCwgMjEyLCAxNTcsIDEsIDIxNiwgNywgMjE2LCAzMiwgMjE2LCAKKyAgICAyMjYsIDIxMiwgMTU3LCAxLCAyNTEsIDEzNSwgMjM4LCAxMzYsIDIxMiwgMTU3LCAxLCAyMDgsIDI1MCwgMjEyLCAxMjIsIAorICAgIDIxMiwgMTU3LCAxLCAyMDksIDE2NSwgMjI0LCA4NCwgMjEyLCAxMjIsIDIxMiwgMTU3LCAxLCAyMDksIDI0MiwgMjEyLCAKKyAgICAxMjIsIDIxMiwgMTU3LCAxLCAyNDcsIDIyMywgMjEyLCAxNTcsIDEsIDE5OSwgMTU3LCAyMTIsIDE1NywgMSwgMjA1LCAyMDgsIAorICAgIDIwNSwgMjIwLCAyMDQsIDExNSwgMjA3LCA4MywgMjEyLCAxNTcsIDEsIDIwOSwgMjQxLCAyMDcsIDgzLCAyMTIsIDE1NywgMSwgCisgICAgMjQyLCAxNTMsIDIxMiwgMTU3LCAxLCAyNDgsIDIxMywgMjQ4LCAyMTYsIDI0OCwgMTQ3LCAyNTAsIDEwMywgMjEyLCAxNTcsIAorICAgIDEsIDIwOSwgMjQ3LCAyNTAsIDEwMywgMjEyLCAxNTcsIDEsIDIzOSwgMTc2LCAyMTIsIDE1NywgMSwgMjE3LCA0NywgMjEyLCAKKyAgICAxNTcsIDEsIDIzOCwgMjM1LCAyMzgsIDI0MiwgNzIsIDIxMiwgMTU3LCAxLCAyMjIsIDE3MSwgMjIyLCAxODEsIDIyMywgCisgICAgMjQzLCAyMTIsIDE1NywgMSwgMjI0LCA4NiwgMjIzLCAyNDMsIDIxMiwgMTU3LCAxLCAyMDksIDI0NSwgMjIzLCAyNDMsIAorICAgIDIxMiwgMTU3LCAxLCAyMjUsIDU1LCAyMjUsIDE1NCwgMjI0LCA5NSwgMTU2LCAyMTIsIDE1NywgMSwgMjM5LCAxNzgsIDIxMiwgCisgICAgMTU3LCAxLCAyMjgsIDkwLCAyMTIsIDE1NywgMSwgMjI4LCA5MSwgMjEyLCAxNTcsIDEsIDI0MiwgNDUsIDI0MiwgNTEsIAorICAgIDI0MiwgMTUzLCAyMTIsIDE1NywgMSwgMjE3LCA5LCAyMzgsIDczLCA3NCwgMjEyLCAxNTcsIDEsIDIzOSwgMjEsIDIxMiwgCisgICAgMTU3LCAxLCAyMjgsIDQzLCAyMTIsIDE1NywgMSwgMjQyLCAxNzMsIDIxMiwgMTU3LCAxLCAyNDcsIDE3MywgMjEyLCAxNTcsIAorICAgIDEsIDI0NywgNzUsIDIxMiwgMTU3LCAxLCAyMDgsIDExNCwgMjEyLCAxNTcsIDEsIDIyNCwgODMsIDIxMiwgMTU3LCAxLCAKKyAgICAyMDksIDI0MCwgMjEyLCAxNTcsIDEsIDIzMiwgMjMwLCAyMTIsIDE1NywgMSwgMjE0LCAxNjcsIDIxMiwgMTU3LCAxLCAyMDAsIAorICAgIDE5NSwgMjEyLCAxNTcsIDIwOSwgMTM5LCAyMTQsIDIxMSwgMjEyLCAxNTcsIDIyMSwgMjEsIDIxNCwgMjExLCAyMTIsIDE1NywgCisgICAgMjQyLCAyMzUsIDIxNCwgMjExLCAyMTIsIDE1NywgMjUwLCAyMTYsIDk5LCAyMTIsIDE1NywgMjA0LCAxNzIsIDk5LCAyMTIsIAorICAgIDE1NywgMjQ4LCAyMzIsIDk5LCAyMTIsIDE1NywgMSwgMjI3LCAxMTgsIDIxMiwgMTU3LCAxLCAyMTAsIDExNiwgMjEyLCAKKyAgICAxNTcsIDEsIDIxNywgNjMsIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIxNywgMTUsIDIxMiwgMTU3LCAxLCAKKyAgICAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIyOCwgMjYsIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIzOCwgMjQxLCAKKyAgICAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgMTE0LCAyNTEsIDI1NCwgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIAorICAgIDExNCwgMjUxLCAyMDUsIDIwNywgMTIsIDEsIDYyLCAyMDcsIDEyLCAxLCA3MCwgMjA3LCAxMiwgMSwgNjYsIDIwNywgMTIsIAorICAgIDEsIDE2MSwgMjA3LCAxMiwgMSwgMjM2LCA4OSwgMjA3LCAxMiwgMSwgMjE5LCAyNTMsIDIwNywgMTIsIDEsIDIwNywgMzYsIAorICAgIDIwNywgMTIsIDEsIDI0MiwgNTgsIDIwNywgMTIsIDEsIDE4OCwgMjA3LCAxMiwgMSwgMTcyLCAyMDcsIDEyLCAxLCAyNDksIAorICAgIDEzNiwgMjA3LCAxMiwgMSwgMTc4LCAyMDcsIDEyLCAxLCAxODMsIDIwNywgMTIsIDEsIDE5NCwgMjA3LCAxMiwgMSwgMjAxLCAKKyAgICAxMTQsIDIwNywgMTIsIDEsIDIxMiwgNjQsIDIwNywgMTIsIDEsIDE0NCwgMjA3LCAxMiwgMjIsIDIsIDcwLCAyMDcsIDEyLCAKKyAgICAyMiwgMiwgNjYsIDIwNywgMTIsIDIsIDIwMiwgMjA4LCAyMzQsIDE3MCwgMSwgNjIsIDIzNCwgMTcwLCAxLCA3MCwgMjM0LCAKKyAgICAxNzAsIDEsIDY2LCAyMzQsIDE3MCwgMSwgMTYxLCAyMzQsIDE3MCwgMSwgMjM2LCA4OSwgMjM0LCAxNzAsIDEsIDIxOSwgCisgICAgMjUzLCAyMzQsIDE3MCwgMSwgMjA3LCAzNiwgMjM0LCAxNzAsIDEsIDI0MiwgNTgsIDIzNCwgMTcwLCAxLCAxODgsIDIzNCwgCisgICAgMTcwLCAxLCAxNzIsIDIzNCwgMTcwLCAxLCAyNDksIDEzNiwgMjM0LCAxNzAsIDEsIDE3OCwgMjM0LCAxNzAsIDEsIDE4MywgCisgICAgMjM0LCAxNzAsIDEsIDIxMywgMjUyLCAyMzQsIDE3MCwgMSwgMTk0LCAyMzQsIDE3MCwgMSwgMjAxLCAxMTQsIDIzNCwgMTcwLCAKKyAgICAxLCAyMTIsIDY0LCAyMzQsIDE3MCwgMSwgMTQ0LCAyMzQsIDE3MCwgMjIsIDIsIDcwLCAyMzQsIDE3MCwgMjIsIDIsIDY2LCAKKyAgICAyMzQsIDE3MCwgMiwgMjE2LCAxNjUsIDIxNSwgMjIyLCAyMDksIDEzOSwgMjE0LCAyMTEsIDIxNSwgMjIyLCA1MywgMjE0LCAKKyAgICAyMTEsIDI0OCwgMjgsIDEsIDYyLCAyNDgsIDI4LCAxLCA3MCwgMjQ4LCAyOCwgMSwgNjYsIDI0OCwgMjgsIDEsIDE2MSwgCisgICAgMjQ4LCAyOCwgMSwgMjM2LCA4OSwgMjQ4LCAyOCwgMSwgMjE5LCAyNTMsIDI0OCwgMjgsIDEsIDIwNywgMzYsIDI0OCwgMjgsIAorICAgIDEsIDI0MiwgNTgsIDI0OCwgMjgsIDEsIDE4OCwgMjQ4LCAyOCwgMSwgMTcyLCAyNDgsIDI4LCAxLCAyNDksIDEzNiwgMjQ4LCAKKyAgICAyOCwgMSwgMTc4LCAyNDgsIDI4LCAxLCAxODMsIDI0OCwgMjgsIDEsIDIxMywgMjUyLCAyNDgsIDI4LCAxLCAxOTQsIDI0OCwgCisgICAgMjgsIDEsIDIwMSwgMTE0LCAyNDgsIDI4LCAxLCAyMTIsIDY0LCAyNDgsIDI4LCAxLCAxNDQsIDI0OCwgMjgsIDIyLCAyLCAKKyAgICA3MCwgMjQ4LCAyOCwgMjIsIDIsIDY2LCAyMDcsIDExLCAxLCA2MiwgMjA3LCAxMSwgMSwgNzAsIDIwNywgMTEsIDEsIDY2LCAKKyAgICAyMDcsIDExLCAxLCAxNjEsIDIwNywgMTEsIDEsIDIzNiwgODksIDIwNywgMTEsIDEsIDIxOSwgMjUzLCAyMDcsIDExLCAxLCAKKyAgICAyMDcsIDM2LCAyMDcsIDExLCAxLCAyNDIsIDU4LCAyMDcsIDExLCAxLCAxODgsIDIwNywgMTEsIDEsIDE3MiwgMjA3LCAxMSwgCisgICAgMSwgMjQ5LCAxMzYsIDIwNywgMTEsIDEsIDE3OCwgMjA3LCAxMSwgMSwgMTgzLCAyMDcsIDExLCAxLCAxOTQsIDIwNywgMTEsIAorICAgIDEsIDIwMSwgMTE0LCAyMDcsIDExLCAxLCAyMTIsIDY0LCAyMDcsIDExLCAyMiwgMiwgNzAsIDIwNywgMTEsIDIyLCAyLCA2NiwgCisgICAgODYsIDEsIDE2MSwgODYsIDEsIDIyNiwgMjA3LCA4NiwgMSwgMjI2LCA4OCwgODYsIDEsIDIyNiwgMTc4LCA4NiwgMSwgMjE5LCAKKyAgICAxNzgsIDg2LCAxLCAyNDcsIDE5MCwgODYsIDEsIDI0NywgMzcsIDg2LCAxLCAyNDYsIDkxLCA4NiwgMSwgMjQ2LCAyMTAsIAorICAgIDg2LCAxLCAyMTgsIDI2LCA4NiwgMSwgMjQyLCA1OCwgODYsIDEsIDIwNCwgMjQxLCA4NiwgMSwgMjQwLCAyMTEsIDg2LCAxLCAKKyAgICAyMDQsIDIzNiwgODYsIDEsIDIxOCwgMjQ3LCA4NiwgMSwgMjA3LCAzNiwgODYsIDEsIDIwNiwgMTIyLCA4NiwgMSwgMTM4LCAKKyAgICA4NiwgMSwgMjA2LCA2MSwgODYsIDEsIDIxOCwgMjQxLCA4NiwgMSwgMjQ5LCAxMzYsIDg2LCAxLCAyMTUsIDI0NSwgODYsIDEsIAorICAgIDIxNSwgMTA2LCA4NiwgMSwgMjE1LCAyMTcsIDg2LCAxLCAyMjEsIDEzNiwgODYsIDEsIDE5OSwgMjQ1LCA4NiwgMSwgMjEzLCAKKyAgICAxLCA4NiwgMSwgMjI0LCAxMTAsIDg2LCAxLCAyMDIsIDE5MywgODYsIDEsIDIxMCwgMTE0LCA4NiwgMSwgMjA4LCAxMzksIAorICAgIDg2LCAxLCAyMTIsIDY0LCA4NiwgMSwgMTQ0LCA4NiwgMSwgMTk0LCA4NiwgMSwgMjE0LCAxNTksIDg2LCAyMjgsIDEwNCwgCisgICAgMjIsIDIxNCwgMTQ1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDE1OCwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMjEsIDg2LCAKKyAgICAyMjgsIDEwNCwgMjIsIDIxNCwgMTE1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDk3LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIAorICAgIDY3LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDU1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDU0LCA4NiwgMjI4LCAxMDQsIAorICAgIDIyLCAyMTIsIDEzMSwgODYsIDIyOCwgMTA0LCAyMiwgMjEyLCAxMjQsIDg2LCAyMjgsIDEwNCwgMjIsIDIyNCwgMiwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMjIzLCAyNDYsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTM5LCA4NiwgMjI4LCAxMDQsIDIyLCAKKyAgICAyMTQsIDE1MSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMDUsIDIwNCwgMTI4LCAxMDIsIDg2LCAyMjgsIDEwNCwgMjIsIAorICAgIDIxNCwgMTA1LCAyMDQsIDEyOCwgMTA1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDE0MSwgODYsIDIyLCAyMjgsIDg4LCAKKyAgICAyNTEsIDEsIDg2LCAyMiwgMjI4LCA4OCwgMjUyLCAxMzgsIDg2LCAyMiwgMiwgMjUyLCAxMzgsIDg2LCAyMiwgMiwgNzAsIAorICAgIDg2LCAyMiwgMiwgMjI4LCAxNTEsIDg2LCAyMiwgMiwgMjAwLCAxMjMsIDg2LCAyMiwgMiwgMTk5LCAxNjcsIDg2LCAyMiwgMiwgCisgICAgNjYsIDg2LCAyMiwgMiwgMjAzLCAxODIsIDg2LCAyMiwgMiwgMjA0LCA0NiwgODYsIDIyLCAyLCAyMTcsIDEyMSwgODYsIDIyLCAKKyAgICAyLCAxODMsIDg2LCAyMiwgMiwgMjI4LCAxNzgsIDg2LCAyMiwgMiwgNzIsIDg2LCAyMiwgMiwgMjUxLCAyMjEsIDg2LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDg2LCAyMiwgMiwgMjE3LCA2MywgODYsIDIyLCAyLCAyNTAsIDEzOSwgODYsIDIsIDIxOSwgMTIzLCAKKyAgICA4NiwgMiwgMjEzLCAxODgsIDg2LCAyLCAxOTksIDE3OCwgODYsIDIsIDIyMCwgMjQxLCA4NiwgMiwgMjA1LCA4NiwgODYsIDIsIAorICAgIDI0OSwgNzksIDg2LCAyLCAyMTIsIDI1MiwgODYsIDIsIDIwNSwgMTg0LCA4NiwgMiwgMjI3LCA3NSwgODYsIDIsIDI1MSwgCisgICAgMTc4LCA4NiwgMiwgMjEyLCAxNCwgMjEyLCA3LCA4NiwgMiwgMjAyLCAyMDUsIDg2LCAyLCAyNDYsIDg1LCA4NiwgMiwgMjQ5LCAKKyAgICA1MSwgODYsIDIsIDIyNiwgMTk5LCA4NiwgMiwgMjQ5LCA3NCwgODYsIDIsIDI0NywgMTYxLCAyMTUsIDE2NywgMjI1LCAyMzUsIAorICAgIDg2LCAyLCAyMjUsIDksIDIwNSwgMTYxLCA4NiwgMiwgMjQ4LCAyMDIsIDg2LCAyLCAyMTUsIDIxOSwgMjIxLCAzOCwgODYsIAorICAgIDIsIDIyNiwgNjYsIDg2LCAyNDIsIDE5NSwgMTYsIDIxMywgODAsIDg2LCAyLCAyNTAsIDEyMSwgODYsIDIsIDI1MCwgMTQyLCAKKyAgICA4NiwgMTcsIDE5OSwgODEsIDg2LCAxNywgMTAyLCA4NiwgMTcsIDEwNSwgODYsIDE3LCAxNDcsIDg2LCAxNywgMTQ5LCA4NiwgCisgICAgMTcsIDE2NCwgODYsIDE3LCAxODcsIDg2LCAxNywgMjEwLCAxMzUsIDg2LCAxNywgMTkyLCA4NiwgMTcsIDIxOSwgMTEzLCAKKyAgICA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIwOSwgMTMsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjIxLCA1LCA4NiwgCisgICAgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMTY2LCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDI0OCwgMjM1LCA4NiwgCisgICAgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDI0OCwgOCwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDQyLCA4NiwgMTYsIAorICAgIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMzYsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzNCwgODYsIDE2LCAKKyAgICAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDQwLCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMzgsIDkyLCAyNDgsIAorICAgIDE2MCwgOTIsIDIzOCwgMTk1LCA5MiwgMjQ2LCA3MCwgOTIsIDIzNiwgMTgzLCAyMDgsIDc2LCA5MiwgMjQ2LCA3OSwgOTIsIAorICAgIDIzNiwgMjI5LCAyNDAsIDE4MCwgOTIsIDIwNSwgMTgzLCAyMDksIDIzLCAyMzMsIDMzLCA5MiwgMjA5LCAxODAsIDUsIDI0OCwgCisgICAgODksIDIyMiwgMTQ1LCA5MiwgMjIyLCAxNzcsIDI0NiwgNzAsIDkyLCAyMjIsIDE3NywgMjM2LCAxODMsIDIwOCwgNzYsIDkyLCAKKyAgICAyMTksIDEwNCwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIDEwMiwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIAorICAgIDEwNSwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIDE0NywgOTIsIDIyLCAyMTAsIDE1NCwgOTIsIDE3LCAxOTksIDgxLCAKKyAgICA5MiwgMTcsIDEwMiwgOTIsIDE3LCAxMDUsIDkyLCAxNywgMTQ3LCA5MiwgMTcsIDE0OSwgOTIsIDE3LCAxNjQsIDkyLCAxNywgCisgICAgMTg3LCA5MiwgMTcsIDIxMCwgMTM1LCA5MiwgMTcsIDE5MiwgOTIsIDE3LCAyMTksIDExMywgOTIsIDEsIDYyLCA5MiwgMSwgCisgICAgNzIsIDkyLCAxLCA3MCwgOTIsIDEsIDc0LCA5MiwgMSwgNjYsIDkyLCAxLCAyMTcsIDEyMSwgOTIsIDEsIDIwNCwgMzEsIDkyLCAKKyAgICAxLCAyMzgsIDI1NSwgOTIsIDEsIDE4OCwgOTIsIDEsIDI1MSwgNzYsIDkyLCAxLCAyNDksIDEzNiwgOTIsIDEsIDE3MiwgOTIsIAorICAgIDEsIDIxNCwgMTU5LCA5MiwgMSwgMjM2LCA4OSwgOTIsIDEsIDE3OCwgOTIsIDEsIDE5NCwgOTIsIDEsIDIxMiwgNjQsIDkyLCAKKyAgICAxLCAyMTAsIDExNCwgOTIsIDEsIDIwNywgMzYsIDkyLCAxLCAyNDIsIDU4LCA5MiwgMSwgMjQ3LCAzNywgOTIsIDEsIDIyNywgCisgICAgMjQ4LCA5MiwgMSwgMTgzLCA5MiwgMSwgMjEzLCAyNTIsIDkyLCAxLCAyMDEsIDExNCwgOTIsIDEsIDIzNywgMTk1LCA5MiwgCisgICAgMSwgMTYxLCA5MiwgMSwgMjI2LCAyMDcsIDkyLCAxLCAyMDUsIDMyLCA5MiwgMSwgMTk5LCAxMTQsIDkyLCAxLCAyMzQsIAorICAgIDIzMywgOTIsIDEsIDE5OSwgNywgOTIsIDEsIDIyNCwgMjIzLCA5MiwgMSwgMTk5LCA2MywgOTIsIDEsIDI0NiwgMjM2LCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDE2OCwgMjIsIDU0LCA5MiwgMSwgMjA1LCAxODMsIDcyLCA5MiwgMSwgMjA1LCAxODMsIDcwLCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDc0LCA5MiwgMSwgMjA1LCAxODMsIDY2LCA5MiwgMSwgMjA1LCAxODMsIDIxNywgMTIxLCA5MiwgMSwgCisgICAgMjA1LCAxODMsIDIwNCwgMzEsIDkyLCAxLCAyMDUsIDE4MywgMjUxLCA3NiwgOTIsIDEsIDIwNSwgMTgzLCAyNDksIDEzNiwgCisgICAgOTIsIDEsIDIwNSwgMTgzLCAxNzIsIDkyLCAxLCAyMDUsIDE4MywgMjE0LCAxNTksIDkyLCAxLCAyMDUsIDE4MywgMjM2LCAKKyAgICA4OSwgOTIsIDEsIDIwNSwgMTgzLCAxNzgsIDkyLCAxLCAyMDUsIDE4MywgMjA3LCAzNiwgOTIsIDEsIDIwNSwgMTgzLCAyNDIsIAorICAgIDU4LCA5MiwgMSwgMjA1LCAxODMsIDI0NywgMzcsIDkyLCAxLCAyMDUsIDE4MywgMjI3LCAyNDgsIDkyLCAxLCAyMDUsIDE4MywgCisgICAgMjA1LCAzMiwgOTIsIDEsIDIwNSwgMTgzLCAxODMsIDkyLCAxLCAyMDUsIDE4MywgMjAxLCAxMTQsIDkyLCAxLCAyMDUsIAorICAgIDE4MywgMTYxLCA5MiwgMSwgMjA1LCAxODMsIDIzNiwgODYsIDkyLCAxLCAyMDUsIDE4MywgMjM0LCAyMzMsIDkyLCAxLCAKKyAgICAyMDUsIDE4MywgMjI3LCAyMDYsIDkyLCAxLCAyMDUsIDE4MywgMjE5LCAxNDgsIDkyLCAxLCAyMDUsIDE4MywgMjM5LCA5MywgCisgICAgOTIsIDEsIDIwOSwgMTgwLCA3MiwgOTIsIDEsIDIwOSwgMTgwLCA3MCwgOTIsIDEsIDIwOSwgMTgwLCAyMjgsIDMsIDkyLCAxLCAKKyAgICAyMDksIDE4MCwgMjA0LCAzMSwgOTIsIDEsIDIwOSwgMTgwLCA2NiwgOTIsIDEsIDIwOSwgMTgwLCAyNTEsIDc2LCA5MiwgMSwgCisgICAgMjA5LCAxODAsIDE2MSwgOTIsIDEsIDIwOSwgMTgwLCAyMzYsIDg5LCA5MiwgMSwgMjA5LCAxODAsIDE0NCwgOTIsIDEsIAorICAgIDIwOSwgMTgwLCAxNzIsIDkyLCAxLCAyMDksIDE4MCwgMjEwLCAxMTQsIDkyLCAxLCAyMDksIDE4MCwgMjA3LCAzNiwgOTIsIAorICAgIDEsIDIwOSwgMTgwLCAyNDIsIDU4LCA5MiwgMSwgMjA5LCAxODAsIDIyNywgMjQ4LCA5MiwgMSwgMjA5LCAxODAsIDIzNywgCisgICAgMTk1LCA5MiwgMSwgMjA5LCAxODAsIDIzNiwgODYsIDkyLCAxLCAyMDksIDE4MCwgMjM0LCAyMzMsIDkyLCAxLCAyMDksIAorICAgIDE4MCwgMjA1LCAzMiwgOTIsIDEsIDIwOSwgMTgwLCAxOTksIDExNCwgOTIsIDEsIDIwOSwgMTgwLCAyMTMsIDI0OCwgOTIsIAorICAgIDEsIDIwOSwgMTgwLCAyNDcsIDM3LCA5MiwgMSwgMjA5LCAxODAsIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgNzAsIDkyLCAKKyAgICAxLCAyMjIsIDE3NywgMTYxLCA5MiwgMSwgMjIyLCAxNzcsIDIxMywgMjUyLCA5MiwgMSwgMjIyLCAxNzcsIDIzNywgMTk1LCAKKyAgICA5MiwgMSwgMjIyLCAxNzcsIDE5OSwgNzcsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjUxLCAzNCwgMTAyLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIwMiwgMjA0LCAxMDIsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQyLCAxOSwgOTIsIAorICAgIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDQxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIyOCwgNTAsIDIwNCwgCisgICAgNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ5LCA5MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxMjYsIAorICAgIDI0OSwgOTEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgNjIsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgNzAsIDkyLCAKKyAgICAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTYxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIxOSwgMjUzLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0NywgMTkwLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgMjUzLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgMjQxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMjIwLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIxOSwgMjEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA3LCAzNiwgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDIsIDU4LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE3MiwgOTIsIDEsIDI1MSwgCisgICAgMTM0LCAyMzYsIDY5LCAyMTUsIDI0NSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDgsIDE3OSwgOTIsIDEsIDI1MSwgCisgICAgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgMTE0LCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDI1MSwgMTg1LCA5MiwgMSwgMjA1LCAxODMsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDI1MSwgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIAorICAgIDY5LCAyMzUsIDE5OSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyNTMsIDkyLCAxLCAyMjIsIAorICAgIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0NywgMTkwLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAKKyAgICAyMjcsIDIxNSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNTMsIDkyLCAxLCAyMjIsIDE3NywgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMjA0LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCAKKyAgICA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDEsIDEwMCwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgCisgICAgMjM2LCA2OSwgMjA4LCAxNzksIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0MiwgMTY3LCA5MiwgMSwgCisgICAgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAKKyAgICAxOTksIDExNCwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxNjcsIDY2LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDE2NywgMTgzLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDgsIDIwMCwgOTIsIDEsIDI1MSwgMTM0LCAKKyAgICAyMzYsIDY5LCAyNDIsIDQ2LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMjQsIDIyMywgMjAsIDIxLCAKKyAgICAyMTYsIDIzMCwgMjAsIDIxLCAyNTAsIDExMiwgMjAsIDIxLCAyNTIsIDkzLCAyMCwgMjEsIDIwMSwgNjcsIDIwLCAyMSwgCisgICAgMjE1LCA0OCwgMjAsIDIxLCAyMTYsIDgyLCAyMCwgMjEsIDIxNCwgMTc2LCAyMCwgMjEsIDIwNiwgMjEwLCAyMCwgMjEsIAorICAgIDIyNywgMTUsIDIwLCAyMSwgMjI1LCAyMjYsIDIwLCAyMSwgMjIyLCAxMTksIDIwLCAyMSwgMjE4LCAxOTgsIDIwLCAyMSwgCisgICAgMjIwLCAxMDksIDIwLCAyMSwgMjI1LCA1MCwgMjAsIDIxLCAyMDgsIDI0OCwgMjAsIDIxLCAyMTEsIDIzNCwgMjAsIDIxLCAKKyAgICAyMDksIDIyOSwgMjAsIDIxLCAyMTAsIDY5LCAyMCwgMjEsIDIwOSwgMTkyLCAyMCwgMjEsIDE5OSwgMjIwLCAyMCwgMjEsIAorICAgIDIwMCwgNTcsIDIwLCAyMSwgMjEzLCAxOTcsIDIwLCAyMSwgMjE4LCA2NiwgMjAsIDIxLCAyMTcsIDEwMCwgMjE4LCA2NiwgCisgICAgMjAsIDIxLCAyMTgsIDY1LCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDY1LCAyMCwgMjEsIDIxOCwgNjQsIDIwLCAyMSwgMjE3LCAKKyAgICAxMDAsIDIxOCwgNjQsIDIwLCAyMSwgMjE4LCA2MywgMjAsIDIxLCAyMTcsIDEwMCwgMjE4LCA2MywgMjAsIDIxLCAyMTIsIAorICAgIDEzNiwgMjAsIDIxLCAyMTIsIDEzNSwgMjAsIDIxLCAyMTIsIDEzNCwgMjAsIDIxLCAyMTIsIDEzMywgMjAsIDIxLCAyMTIsIAorICAgIDEzMiwgMjAsIDIxLCAyMTIsIDE0MCwgMjAsIDIxLCAyMTcsIDEwMCwgMjE2LCAyMjYsIDIwLCAyMSwgMjE3LCAxMDAsIDIwNywgCisgICAgODMsIDIwLCAyMSwgMjE3LCAxMDAsIDIyNywgMTE4LCAyMCwgMjEsIDIxNywgMTAwLCAyNDcsIDIyMywgMjAsIDIxLCAyMTcsIAorICAgIDEwMCwgMjIzLCAyNDMsIDIwLCAyMSwgMjE3LCAxMDAsIDIyMCwgMjE0LCAyMCwgMjEsIDIxNywgMTAwLCAyMTIsIDEyMiwgCisgICAgMjAsIDIxLCAyMTcsIDEwMCwgMjEwLCAxMTYsIDIwLCAyMSwgMjM5LCAxMiwgMjAxLCAxNDcsIDIwLCAyMSwgMjAxLCA0NSwgCisgICAgMjAxLCAxNDcsIDIwLCAyMSwgNDcsIDQsIDIxMywgMjYsIDIwLCAyMSwgNDcsIDIxMywgMjIwLCAyNDAsIDE4MiwgMjAsIDIxLCAKKyAgICAyMTQsIDMyLCAyMTIsIDEzNywgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDc4LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMTc1LCAKKyAgICAyMCwgMjEsIDIwNiwgMjQsIDIwLCAyMSwgMjA2LCAyNiwgMjAsIDIxLCAyMDQsIDIzMywgMjAsIDIxLCAyMDQsIDIzNSwgMjAsIAorICAgIDIxLCAyMDQsIDI0MCwgMjAsIDIxLCAyMDUsIDE5MywgMjAsIDIxLCAyMDUsIDE5NSwgMjAsIDIxLCAyMTEsIDIzMiwgMjA5LCAKKyAgICAxOTcsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgMiwgMjAsIDIxLCAyMTEsIDIzMiwgMjMzLCAxODgsIDIwLCAyMSwgODksIAorICAgIDIzNSwgNSwgMjAsIDIxLCA4OSwgMjQxLCAxMzQsIDIzNiwgNywgMjAsIDIxLCA4OSwgMjM2LCA4NiwgMjAsIDIxLCA4OSwgCisgICAgMjM1LCAxMCwgMjAsIDIxLCAyMTEsIDIzMiwgMjI3LCAxMjgsIDIwLCAyMSwgODksIDIyNywgMTI2LCAyMCwgMjEsIDI0OCwgCisgICAgMjU1LCAyNDEsIDEzNCwgMTU2LCAyMCwgMjEsIDI0OCwgMjU1LCAyNDEsIDEzNCwgMTQ2LCAyMCwgMjEsIDg5LCAyNDEsIAorICAgIDEyOSwgMjEyLCAxMjIsIDIyNCwgMTg2LCAyMDIsIDE3MiwgMjI0LCAyMzYsIDIyNCwgMTg2LCAxLCAxNjEsIDIyNCwgMTg2LCAKKyAgICAxLCAyMjYsIDIwNywgMjI0LCAxODYsIDEsIDIzNiwgODksIDIyNCwgMTg2LCAxLCAyMzUsIDE5OSwgMjI0LCAxODYsIDEsIAorICAgIDIxOSwgMjUzLCAyMjQsIDE4NiwgMSwgMjQ3LCAxOTAsIDIyNCwgMTg2LCAxLCAyNDcsIDM3LCAyMjQsIDE4NiwgMSwgMjI3LCAKKyAgICAyNDgsIDIyNCwgMTg2LCAxLCAyMjcsIDIxNSwgMjI0LCAxODYsIDEsIDIwMCwgNzcsIDIyNCwgMTg2LCAxLCAyMDcsIDM2LCAKKyAgICAyMjQsIDE4NiwgMSwgMjA2LCAxMjIsIDIyNCwgMTg2LCAxLCAyNDIsIDU4LCAyMjQsIDE4NiwgMSwgMjQxLCAxMDAsIDIyNCwgCisgICAgMTg2LCAxLCAxODgsIDIyNCwgMTg2LCAxLCAxNzIsIDIyNCwgMTg2LCAxLCAyMTUsIDI0NSwgMjI0LCAxODYsIDEsIDI0OSwgCisgICAgMTM2LCAyMjQsIDE4NiwgMSwgMjQ4LCAyMDAsIDIyNCwgMTg2LCAxLCAxNzgsIDIyNCwgMTg2LCAxLCAxODMsIDIyNCwgMTg2LCAKKyAgICAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDEsIDE5NCwgMjI0LCAxODYsIDEsIDIwMSwgMTE0LCAyMjQsIDE4NiwgMSwgMjEwLCAKKyAgICAxMTQsIDIyNCwgMTg2LCAxLCAyMDgsIDE3OSwgMjI0LCAxODYsIDEsIDIxMiwgNjQsIDIyNCwgMTg2LCAxLCAxNDQsIDIyNCwgCisgICAgMTg2LCAxLCAyMzUsIDEsIDIyNCwgMTg2LCAxLCAyMDUsIDEzMiwgMjI0LCAxODYsIDIyLCAyLCA2MiwgMjI0LCAxODYsIDIyLCAKKyAgICAyLCA3MCwgMjI0LCAxODYsIDIyLCAyLCA2NiwgMjI0LCAxODYsIDIyLCAyLCAyMzgsIDI1NSwgMjI0LCAxODYsIDIyLCAyLCAKKyAgICAyNTEsIDE3NiwgMjI0LCAxODYsIDIyLCAyLCAyMTcsIDYzLCAyMjQsIDE4NiwgMjIsIDIsIDI1MCwgMTM5LCAyMjQsIDE4NiwgCisgICAgMjIsIDIsIDcyLCAyMjQsIDE4NiwgMjIsIDIsIDc0LCAyMjQsIDE4NiwgMjA4LCAxMiwgMSwgMTgzLCAyMjQsIDE4NiwgMjA4LCAKKyAgICAxMiwgMSwgMjEzLCAyNTIsIDIyNCwgMTg2LCAyMDgsIDEyLCAxLCAyMDEsIDExNCwgMjI0LCAxODYsIDQsIDEsIDE2MSwgCisgICAgMjI0LCAxODYsIDQsIDEsIDIxOSwgMjUzLCAyMjQsIDE4NiwgNCwgMSwgMjUxLCAzMywgMjI0LCAxODYsIDQsIDEsIDIwNywgCisgICAgMzYsIDIyNCwgMTg2LCA0LCAxLCAxODgsIDIyNCwgMTg2LCA0LCAxLCAxNzIsIDIyNCwgMTg2LCA0LCAxLCAxNzgsIDIyNCwgCisgICAgMTg2LCA0LCAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDQsIDEsIDE5NCwgMjI0LCAxODYsIDIsIDIyMSwgMjYsIDIyNCwgMTg2LCAKKyAgICAyLCAyMjYsIDI0OSwgMjI0LCAxODYsIDIsIDIxMiwgNjIsIDIyNCwgMTg2LCAyLCAyMjQsIDc4LCAyMjQsIDE4NiwgMjM4LCAKKyAgICA0MywgODEsIDIyNCwgMTg2LCAyMTQsIDc5LCA4MSwgMjI0LCAxODYsIDE3LCAxOTksIDgxLCAyMjQsIDE4NiwgMTcsIDEwMiwgCisgICAgMjI0LCAxODYsIDE3LCAxMDUsIDIyNCwgMTg2LCAxNywgMTQ3LCAyMjQsIDE4NiwgMTcsIDE0OSwgMjI0LCAxODYsIDE3LCAKKyAgICAxNjQsIDIyNCwgMTg2LCAxNywgMTg3LCAyMjQsIDE4NiwgMTcsIDIxMCwgMTM1LCAyMjQsIDE4NiwgMTcsIDE5MiwgMjI0LCAKKyAgICAxODYsIDE3LCAyMTksIDExMywgNDYsIDIyNSwgNDEsIDEsIDE2MSwgNDYsIDIyNSwgNDEsIDEsIDIwMCwgMTgxLCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMjE5LCAyNTMsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDMyLCA0NiwgMjI1LCA0MSwgMSwgMjEyLCA2NCwgCisgICAgNDYsIDIyNSwgNDEsIDEsIDE4MywgNDYsIDIyNSwgNDEsIDEsIDIwNywgMzYsIDQ2LCAyMjUsIDQxLCAxLCAyMDYsIDEyMiwgCisgICAgNDYsIDIyNSwgNDEsIDEsIDE5NCwgNDYsIDIyNSwgNDEsIDEsIDE3MiwgNDYsIDIyNSwgNDEsIDEsIDIxNSwgMjQ1LCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMTc4LCA0NiwgMjI1LCA0MSwgMSwgMjM3LCAxOTUsIDQ2LCAyMjUsIDQxLCAxLCAyMDMsIDkwLCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMTQ0LCA0NiwgMjI1LCA0MSwgMSwgMjE0LCAxNTksIDQ2LCAyMjUsIDQxLCAxLCAyMjYsIDIwNywgNDYsIAorICAgIDIyNSwgNDEsIDEsIDIwNSwgMjIsIDQ2LCAyMjUsIDQxLCAxLCAxODgsIDQ2LCAyMjUsIDQxLCAxLCA2MiwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDcwLCA0NiwgMjI1LCA0MSwgMSwgMjM4LCAyNTUsIDQ2LCAyMjUsIDQxLCAxLCAyMzgsIDI0MSwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDY2LCA0NiwgMjI1LCA0MSwgMSwgMjE3LCA2MywgNDYsIDIyNSwgNDEsIDEsIDc0LCA0NiwgMjI1LCA0MSwgMSwgCisgICAgMjA0LCAzMSwgNDYsIDIyNSwgNDEsIDEsIDcyLCA0NiwgMjI1LCA0MSwgMSwgMjUwLCAxMzcsIDQ2LCAyMjUsIDQxLCAxLCAKKyAgICAyNTEsIDE3NiwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTcyLCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNzEsIDQ2LCAyMjUsIAorICAgIDQxLCAxLCAyMDUsIDE3MCwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTY5LCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNjgsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjE0LCAxNTksIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjE0LCAxNTksIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTYxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwMCwgMTgxLCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIxOSwgMjUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDE2MSwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDAsIDE4MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTksIAorICAgIDI1MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDUsIDMyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIAorICAgIDIxMiwgNjQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTgzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIAorICAgIDIwNSwgMzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjEyLCA2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxODMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjA3LCAzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyMDYsIDEyMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxODgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMjA3LCAzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDYsIDEyMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAxODgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTcyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIxNSwgMjQ1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE3OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjE1LCAyNDUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMTc4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIzNywgMTk1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIwMywgOTAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTk0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDIzNywgMTk1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwMywgOTAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMTk0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE0NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyNDIsIDU4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDI0OSwgMTM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDE0NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyNDIsIDU4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDI0OSwgMTM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIyNSwgMjMxLCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxLCAxMjIsIDIwMCwgMTQ4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIyNSwgMjMxLCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxLCAxMjgsIDIwMCwgMTQ4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwOCwgMjMsIDIyMCwgOCwgCisgICAgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjA4LCAyMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIyLCAyMDksIDIzOCwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MiwgMTM4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjI4LCAKKyAgICAxNTEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCA2NiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyNTEsIAorICAgIDIyMSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDc0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjE3LCAKKyAgICAxNDYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMDQsIDMxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgCisgICAgMjUwLCAxMTIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyNTIsIDkzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgCisgICAgMiwgMjAzLCAxNzQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMTYsIDIzMCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMjIsIDIsIDIxNywgMTQzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjA0LCAyNywgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMjIsIDIsIDIyOCwgMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDIwMywgMTY4LCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxLCA0NywgMjE5LCAyNTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyMjAsIDIxNCwgMjIwLCA4LCA0NiwgCisgICAgMjI0LCAzNiwgMSwgNDcsIDIyMywgMjQzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjI3LCAxMTgsIDIyMCwgOCwgCisgICAgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyNDIsIDE1MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDI1MCwgMTAzLCAyMjAsIAorICAgIDgsIDQ2LCAyMjQsIDM2LCAxNTAsIDIyMiwgMTQ5LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNTAsIDIyMiwgMTQ4LCAyMjAsIAorICAgIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTk5LCA4MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDEwMiwgMjIwLCA4LCA0NiwgCisgICAgMjI0LCAzNiwgMTcsIDEwNSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE0NywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIAorICAgIDE0OSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE4NywgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMTcsIDIxMCwgMTM1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTkyLCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxNywgMjE5LCAxMTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEwNywgMTcsIDEwMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMiwgMjI1LCAxNjAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIsIDIyNSwgMTU5LCA4NiwgMTYsIDIxNiwgOTAsIDg2LCAxNiwgCisgICAgMjIxLCA2LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMTY3LCAyMjYsIDg0LCA4NiwgMTYsIDI0OCwgMjM2LCAyMjYsIDg0LCAKKyAgICA4NiwgMTYsIDI0OCwgOSwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDQzLCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMzcsIDIyNiwgCisgICAgODQsIDg2LCAxNiwgMjE1LCAzNSwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDQxLCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMzksIAorICAgIDIyNiwgODQsIDg2LCAxNiwgMjQyLCA1LCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgMSwgMjI2LCA4NCwgODYsIDE2LCAyNDIsIAorICAgIDAsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAzLCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgMiwgMjI2LCA4NCwgODYsIDE2LCAKKyAgICAyNDEsIDI1NSwgMjI2LCA4NCwgODYsIDE2LCAyMDQsIDE3OCwgODYsIDE2LCAyMjEsIDYsIDIxMiwgMjUwLCA4NiwgMTYsIAorICAgIDIxNSwgMTY3LCAyMTIsIDI1MCwgODYsIDE2LCAyNDgsIDIzNiwgMjEyLCAyNTAsIDg2LCAxNiwgMjQ4LCA5LCAyMTIsIDI1MCwgCisgICAgODYsIDE2LCAyMTUsIDQzLCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM3LCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM1LCAKKyAgICAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDQxLCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM5LCAyMTIsIDI1MCwgODYsIDE2LCAKKyAgICAyNDIsIDUsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MiwgMSwgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAwLCAyMTIsIDI1MCwgODYsIAorICAgIDE2LCAyNDIsIDMsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MiwgMiwgMjEyLCAyNTAsIDg2LCAxNiwgMjQxLCAyNTUsIDIxMiwgCisgICAgMjUwLCAyNDgsIDI5LCAxLCAxNjEsIDI0OCwgMjksIDEsIDIzNiwgODksIDI0OCwgMjksIDEsIDIxOSwgMjUzLCAyNDgsIDI5LCAKKyAgICAxLCAyMTksIDE5NiwgMjQ4LCAyOSwgMSwgMTcyLCAyNDgsIDI5LCAxLCAyNDksIDEzNiwgMjQ4LCAyOSwgMSwgMTc4LCAyNDgsIAorICAgIDI5LCAxLCAyMjEsIDQ1LCAyNDgsIDI5LCAxLCAyMDcsIDM2LCAyNDgsIDI5LCAxLCAyNDIsIDU4LCAyNDgsIDI5LCAxLCAKKyAgICAxODgsIDI0OCwgMjksIDEsIDIxOCwgMTk2LCAyNDgsIDI5LCAxLCAyNDcsIDE5MCwgMjQ4LCAyOSwgMSwgMjI3LCAyNDgsIAorICAgIDI0OCwgMjksIDEsIDIxOCwgNjAsIDI0OCwgMjksIDEsIDIxOCwgNTIsIDI0OCwgMjksIDEsIDE4MywgMjQ4LCAyOSwgMSwgCisgICAgMjEzLCAyNTIsIDI0OCwgMjksIDEsIDE5NCwgMjQ4LCAyOSwgMSwgMjAzLCA5MCwgMjQ4LCAyOSwgMSwgMjEyLCA2NCwgMjQ4LCAKKyAgICAyOSwgMSwgNjIsIDI0OCwgMjksIDEsIDE0NCwgMjQ4LCAyOSwgMjIsIDIsIDcwLCAyNDgsIDI5LCAyMiwgMiwgNjYsIDI0OCwgCisgICAgMjksIDIyLCAyLCA3MiwgMjQ4LCAyOSwgMjIsIDIsIDc0LCAyNDgsIDI5LCAyMiwgMiwgMjUxLCAyMjEsIDI0OCwgMjksIAorICAgIDIxNiwgMTc4LCAyNDgsIDI5LCAyMzgsIDE3MSwgNzYsIDIxMSwgMTkyLCA0NiwgMTA3LCAxLCAxMjIsIDE2MSwgNDYsIDEwNywgCisgICAgMSwgMTIyLCAyMjYsIDIwNywgNDYsIDEwNywgMSwgMTIyLCAyMjUsIDIxNSwgNDYsIDEwNywgMSwgMTI4LCAxNjEsIDQ2LCAKKyAgICAxMDcsIDEsIDEyOCwgMjI1LCAyMTUsIDQ2LCAxMDcsIDEsIDEyOCwgMjI2LCAyMDcsIDQ2LCAxMDcsIDEsIDIxOSwgMjUzLCAKKyAgICA0NiwgMTA3LCAxLCAxMjIsIDI0NywgMTkwLCA0NiwgMTA3LCAxLCAxMjIsIDI0NywgMzcsIDQ2LCAxMDcsIDEsIDEyOCwgCisgICAgMjQ3LCAxOTAsIDQ2LCAxMDcsIDEsIDEyOCwgMjEyLCA2NCwgNDYsIDEwNywgMSwgMTI4LCAyNDcsIDM3LCA0NiwgMTA3LCAxLCAKKyAgICAyMTgsIDYwLCA0NiwgMTA3LCAxLCAyMTMsIDIwMywgNDYsIDEwNywgMSwgMTIyLCAyMTMsIDIwMSwgNDYsIDEwNywgMSwgCisgICAgMjQyLCA1OCwgNDYsIDEwNywgMSwgMTI4LCAyMTMsIDIwMSwgNDYsIDEwNywgMSwgMjEzLCAyMTIsIDQ2LCAxMDcsIDEsIAorICAgIDEyMiwgMjA3LCAzNiwgNDYsIDEwNywgMSwgMTIyLCAyMDYsIDEyMiwgNDYsIDEwNywgMSwgMTI4LCAyMDcsIDM2LCA0NiwgCisgICAgMTA3LCAxLCAxMjgsIDIwNiwgMTIyLCA0NiwgMTA3LCAxLCAxODgsIDQ2LCAxMDcsIDEsIDI0OSwgMTM2LCA0NiwgMTA3LCAxLCAKKyAgICAxMjIsIDE3MiwgNDYsIDEwNywgMSwgMTIyLCAyMTUsIDI0NSwgNDYsIDEwNywgMSwgMTIyLCAyMzcsIDE5NSwgNDYsIDEwNywgCisgICAgMSwgMTI4LCAxNzIsIDQ2LCAxMDcsIDEsIDEyOCwgMjM3LCAxOTUsIDQ2LCAxMDcsIDEsIDEyOCwgMjE1LCAyNDUsIDQ2LCAKKyAgICAxMDcsIDEsIDE3OCwgNDYsIDEwNywgMSwgMTI4LCAxODMsIDQ2LCAxMDcsIDEsIDEyMiwgMTgzLCA0NiwgMTA3LCAxLCAyMTMsIAorICAgIDI1MiwgNDYsIDEwNywgMSwgMjEyLCAxNzAsIDQ2LCAxMDcsIDEsIDE5NCwgNDYsIDEwNywgMSwgMjI0LCAzNSwgNDYsIDEwNywgCisgICAgMSwgMjAxLCAxMTQsIDQ2LCAxMDcsIDEsIDEyMiwgMjEwLCAxMTQsIDQ2LCAxMDcsIDEsIDEyMiwgMjA4LCAxNzksIDQ2LCAKKyAgICAxMDcsIDEsIDEyMiwgMjEyLCA2NCwgNDYsIDEwNywgMSwgMTIyLCAxNDQsIDQ2LCAxMDcsIDEsIDIyNCwgMTM4LCA0NiwgCisgICAgMTA3LCAxLCA2MiwgNDYsIDEwNywgMSwgMTI4LCAxNDQsIDQ2LCAxMDcsIDEsIDcwLCA0NiwgMTA3LCAxLCAyMjgsIDE1MSwgCisgICAgNDYsIDEwNywgMSwgNjYsIDQ2LCAxMDcsIDEsIDIwMywgMTgyLCA0NiwgMTA3LCAxLCAyMzgsIDI1NSwgNDYsIDEwNywgMSwgCisgICAgMjE3LCA2MywgNDYsIDEwNywgMSwgMjI1LCAxNjAsIDQ2LCAxMDcsIDEsIDIzNSwgNjksIDIxMiwgNjQsIDQ2LCAxMDcsIAorICAgIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgNDYsIDEwNywgMTExLCAyLCAxNzksIDE5NCwgNDYsIDEwNywgMTExLCAyLCAyMjUsIAorICAgIDE3NiwgMjA2LCAyNDIsIDIyNSwgMTQ5LCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgMjI3LCA2NSwgMjI1LCAxNDksIDQ2LCAKKyAgICAxMDcsIDExMSwgMiwgNDcsIDIxOSwgMjUzLCA0NiwgMTA3LCAxMTEsIDIsIDEyOCwgMTcyLCA0NiwgMTA3LCAxMTEsIDIsIAorICAgIDEyMiwgMjEzLCAyMDIsIDIxNywgMzQsIDEyOCwgMTcyLCA0NiwgMTA3LCAxMTEsIDIsIDE3OCwgNDYsIDEwNywgMTExLCAyLCAKKyAgICAyNDksIDEzNiwgNDYsIDEwNywgMTExLCAyLCAyMTIsIDY0LCA0NiwgMTA3LCAyLCAyMTIsIDM4LCA0NiwgMTA3LCAyMiwgMiwgCisgICAgNjIsIDQ2LCAxMDcsIDIyLCAyLCAyMjIsIDE5OSwgMjExLCAyNTEsIDQ2LCAxMDcsIDIyLCAyLCAyNTIsIDEzOCwgNDYsIAorICAgIDEwNywgMjIsIDIsIDIwNiwgMjQ4LCAyNTIsIDEzOCwgNDYsIDEwNywgMjIsIDIsIDcwLCA0NiwgMTA3LCAyMiwgMiwgMjI4LCAKKyAgICAxNTEsIDQ2LCAxMDcsIDIyLCAyLCAyMDQsIDMxLCA0NiwgMTA3LCAyMiwgMiwgMjAzLCAxODEsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICA2NiwgNDYsIDEwNywgMjIsIDIsIDIwMywgMTgyLCA0NiwgMTA3LCAyMiwgMiwgNzQsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIAorICAgIDE0NywgNTcsIDQ2LCAxMDcsIDIyLCAyLCAyMTYsIDIzMCwgNDYsIDEwNywgMjIsIDIsIDcyLCA0NiwgMTA3LCAyMiwgMiwgCisgICAgMjUxLCAyMjEsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIDYzLCA0NiwgMTA3LCAyMiwgMiwgMjUxLCAxNzYsIDQ2LCAxMDcsIDIyLCAKKyAgICAyLCAxMDcsIDI1MSwgMTc2LCA0NiwgMTA3LCAyMiwgMiwgMjE3LCAxNDcsIDU2LCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgCisgICAgMjI3LCA2NCwgNDYsIDEwNywgMiwgMjA1LCAxNzMsIDQ2LCAxMDcsIDIsIDIwNSwgMTcyLCA0NiwgMTA3LCAyLCAyMjYsIAorICAgIDE2OCwgMjA1LCAxNzEsIDQ2LCAxMDcsIDIsIDIyNiwgMTY4LCAyMDUsIDE3MCwgNDYsIDEwNywgMiwgMjI2LCAxNjgsIDIwNSwgCisgICAgMTY5LCA0NiwgMTA3LCAyLCAyMTMsIDI1MywgMjM0LCAyMzIsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMTIsIDIzLCA0NiwgCisgICAgMTA3LCAyLCAyMjYsIDE2NywgMjI3LCA0NiwgNDYsIDEwNywgMzgsIDI0MiwgMjE3LCAyNDAsIDE4MiwgNDYsIDEwNywgMjMzLCAKKyAgICAxNzksIDE3LCAxOTksIDgxLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDEwMiwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxMDUsIAorICAgIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTQ3LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE0OSwgNDYsIDEwNywgMjMzLCAKKyAgICAxNzksIDE3LCAxNjQsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTg3LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDIxMCwgCisgICAgMTM1LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE5MiwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAyMTksIDExMywgNDYsIAorICAgIDEwNywgMTA3LCAxNywgMTk5LCA4MSwgNDYsIDEwNywgMTA3LCAxNywgMTAyLCA0NiwgMTA3LCAxMDcsIDE3LCAxMDUsIDQ2LCAKKyAgICAxMDcsIDEwNywgMTcsIDE0NywgNDYsIDEwNywgMTA3LCAxNywgMTQ5LCA0NiwgMTA3LCAxMDcsIDE3LCAxNjQsIDQ2LCAxMDcsIAorICAgIDEwNywgMTcsIDE4NywgNDYsIDEwNywgMTA3LCAxNywgMjEwLCAxMzUsIDQ2LCAxMDcsIDEwNywgMTcsIDE5MiwgNDYsIDEwNywgCisgICAgMTA3LCAxNywgMjE5LCAxMTMsIDQ2LCAxMDcsIDIsIDIwMSwgMzAsIDQ2LCAxMDcsIDIsIDIwMSwgMjksIDQ2LCAxMDcsIDIsIAorICAgIDIxMSwgMjM4LCA0NiwgMTA3LCAyLCAyMjYsIDIzOCwgNDYsIDEwNywgMiwgMjMzLCAxMDcsIDQ2LCAxMDcsIDIsIDI0MCwgCisgICAgMTk2LCA0NiwgMTA3LCAyLCAyMTMsIDEwNSwgMjEyLCAyMjgsIDIxMywgMjEyLCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgMjAwLCAKKyAgICA3OCwgNDYsIDEwNywgMiwgMjI3LCA5OSwgNDYsIDEwNywgMiwgMjI3LCA5OCwgNDYsIDEwNywgMiwgMjExLCAyNDYsIDQ2LCAKKyAgICAxMDcsIDIsIDIxMSwgMjQ1LCA0NiwgMTA3LCAyLCAyMzQsIDE3MiwgNDYsIDEwNywgMiwgMjQ3LCAxODcsIDM4LCAyMzksIAorICAgIDE3MiwgMjQ2LCAxNDcsIDI1MSwgMjUxLCAzOCwgMjQxLCA3MywgMzgsIDIyOCwgOTQsIDM4LCAxOTEsIDQ4LCAzOCwgMjA1LCAKKyAgICA4MywgMjQwLCAxODIsIDM4LCAyMDAsIDE5NCwgNTcsIDM4LCAyMDEsIDIyLCAyMjQsIDE3NywgNTcsIDM4LCAxNzYsIDEzNCwgCisgICAgNTcsIDM4LCA1MywgMTc2LCAxMzQsIDU3LCAzOCwgMTYyLCAyNDcsIDU3LCAyMDgsIDQ3LCA1NywgMzgsIDIwOCwgMzMsIAorICAgIDI0NywgNTcsIDIwOCwgNDcsIDU3LCAzOCwgMjE2LCAxMTcsIDU2LCAzOCwgNTMsIDIxNiwgMTE3LCA1NiwgMzgsIDIxNiwgCisgICAgMTE3LCA1NywgMzgsIDIxNiwgMTE3LCAyMTYsIDI0MiwgMTMzLCAyLCAyMDQsIDE1LCAyMTMsIDgyLCAxMzMsIDIsIDIwNCwgCisgICAgMTUsIDI0NywgMTUxLCAxMzMsIDIsIDI0NywgNzIsIDEzMywgMiwgMjA3LCAyMDUsIDEzMywgMiwgMjQ4LCAxNTcsIDEzMywgCisgICAgMSwgMjUxLCAxNTcsIDEzMywgMSwgMjUxLCAxNTgsIDIwNiwgMTkyLCAxMzMsIDEsIDIyOCwgMTQ3LCAxMzMsIDEsIDIyOCwgCisgICAgMTQ4LCAyMDYsIDE5MiwgMTMzLCAxLCAyMDQsIDE4LCAxMzMsIDEsIDIwNCwgMTksIDIwNiwgMTkyLCAxMzMsIDEsIDIxMywgCisgICAgMjUzLCAyMTMsIDEzNSwgMTMzLCAxLCAyMTMsIDI1MywgMjEzLCAxMzYsIDIwNiwgMTkyLCAxMzMsIDEsIDIyNSwgMTc2LCAKKyAgICAyMjUsIDMsIDEzMywgMSwgMjI1LCAxNzYsIDIyNSwgNCwgMjA2LCAxOTIsIDEzMywgMSwgMjM4LCAyMTQsIDEzMywgMSwgCisgICAgMjUxLCAxNzQsIDEzMywgMSwgMjE3LCA5NiwgMTMzLCAxLCAyMTcsIDk3LCAyMDYsIDE5MiwgMTMzLCAxLCAxNjEsIDEzMywgCisgICAgMSwgMjI3LCAxMDgsIDIyMiwgMjAyLCAxMzMsIDEsIDIzNiwgODksIDEzMywgMSwgMjM2LCA5MCwgMjM1LCAxMDIsIDEzMywgCisgICAgMSwgMjE5LCAyNTMsIDEzMywgMSwgMjQ3LCAxOTAsIDEzMywgMSwgMjQ3LCAxOTEsIDIyNSwgMTYzLCAxMzMsIDEsIDIyNywgCisgICAgMjQ4LCAxMzMsIDEsIDIyNywgMjQ5LCAyMjcsIDIxOSwgMTMzLCAxLCAyMTgsIDYwLCAxMzMsIDEsIDIwNywgMzcsIDIyNSwgCisgICAgNjAsIDEzMywgMSwgMjA3LCAzNywgMjIxLCAxLCAyMjIsIDIwMiwgMTMzLCAxLCAyNDIsIDU5LCAyMjEsIDEsIDI1MSwgMTE0LCAKKyAgICAxMzMsIDEsIDI0MiwgNTksIDIyMSwgMSwgMjIyLCAyMDIsIDEzMywgMSwgMjIwLCAxNjIsIDIxMywgMjE1LCAxMzMsIDEsIAorICAgIDIwNywgMzYsIDEzMywgMSwgMjA3LCAzNywgMjA2LCAyMTQsIDEzMywgMSwgMjQyLCA1OCwgMTMzLCAxLCAyNDIsIDU5LCAKKyAgICAyMjIsIDIyMSwgMTMzLCAxLCAxODgsIDEzMywgMSwgMTcyLCAxMzMsIDEsIDIxNiwgMjExLCAyMjcsIDU4LCAxMzMsIDEsIAorICAgIDI0OSwgMTM2LCAxMzMsIDEsIDI0OSwgMTM3LCAyMjYsIDI1MCwgMTMzLCAxLCAxNzgsIDEzMywgMSwgMTgzLCAxMzMsIDEsIAorICAgIDIxMywgMjUyLCAxMzMsIDEsIDE5NCwgMTMzLCAxLCAyMDEsIDExNCwgMTMzLCAxLCAyMTIsIDY1LCAyMTIsIDQ5LCAxMzMsIAorICAgIDEsIDIxMiwgNjUsIDIxMiwgMiwgMTMzLCAxLCAyMTIsIDY0LCAxMzMsIDEsIDE0NCwgMTMzLCAyLCAyMTMsIDEyNiwgMTMzLCAKKyAgICAyMiwgMiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIwNCwgMTQsIDEzMywgMjIsIDIsIDIwNCwgMTUsIDIxMSwgMjU0LCAxMzMsIAorICAgIDIyLCAyLCAyMDcsIDIzOCwgMTMzLCAyMiwgMiwgMjA3LCAyMzksIDIyOCwgMTM5LCAxMzMsIDIyLCAyLCAyMTMsIDI1MywgCisgICAgMjEzLCAxMzUsIDEzMywgMjIsIDIsIDIxMywgMjUzLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIyNSwgMTc2LCAKKyAgICAyMjUsIDMsIDEzMywgMjIsIDIsIDIyNSwgMTc2LCAyMjUsIDQsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMDYsIDI0OSwgCisgICAgMTMzLCAyMiwgMiwgMjA2LCAyNTAsIDIxMywgMTM1LCAxMzMsIDIyLCAyLCAyMDYsIDI1MCwgMjA2LCAxOTIsIDEzMywgMjIsIAorICAgIDIsIDIwNiwgMjUwLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIxNiwgMzAsIDEzMywgMjIsIDIsIDIxNiwgCisgICAgMzEsIDIwNiwgMTkyLCAxMzMsIDI1MSwgMjMwLCAyNTEsIDIyOSwgMTMzLCAxLCAyMjcsIDg3LCAyMTEsIDI1MywgMTMzLCAxLCAKKyAgICAyMjYsIDE3NCwgMjExLCAyNTMsIDEzMywgMSwgMjA0LCAxMDgsIDIxMSwgMjUzLCAxMzMsIDEsIDIzOCwgMjQ5LCAyMTEsIAorICAgIDI1MywgMTMzLCAxLCAyMDMsIDYwLCAyMTEsIDI1MywgMTMzLCAxLCAxOTksIDEwNCwgMjExLCAyNTMsIDEzMywgMSwgMjUwLCAKKyAgICAxNTgsIDIxMSwgMjUzLCAxMzMsIDE3LCAxOTksIDgxLCAxMzMsIDE3LCAxMDIsIDEzMywgMTcsIDEwNSwgMTMzLCAxNywgCisgICAgMTQ3LCAxMzMsIDE3LCAxNDksIDEzMywgMTcsIDE2NCwgMTMzLCAxNywgMTg3LCAxMzMsIDE3LCAyMTAsIDEzNSwgMTMzLCAKKyAgICAxNywgMTkyLCAxMzMsIDE3LCAyMTksIDExMywgMTMzLCAyMTYsIDE0MywgMTMzLCAyMTYsIDE3MSwgMTMzLCAyMDEsIDE0LCAKKyAgICAxMzMsIDI0NywgMTI3LCAyMTYsIDE2NCwgMTMzLCAyNDcsIDEyNywgMjA5LCAxNTgsIDEzMywgMjQ3LCAxMjcsIDIxNiwgCisgICAgMTE0LCAxMzMsIDIxNiwgMTcwLCAxMzMsIDMyLCAxNiwgMjQwLCAxODgsIDEzMywgMzIsIDE2LCAyNDEsIDEzMywgMTMzLCAKKyAgICAzMiwgMTYsIDIzOSwgMTIxLCAxMzMsIDMyLCAxNiwgMjQyLCA4LCAxMzMsIDMyLCAxNiwgMjQyLCA5LCAyMDcsIDIwNSwgCisgICAgMTMzLCAzMiwgMTYsIDI0MSwgMTgsIDEzMywgMzIsIDE2LCAyNDIsIDUwLCAxMzMsIDMyLCAxNiwgMjQxLCAxMDksIDEzMywgCisgICAgMzIsIDE2LCAyNDIsIDMyLCAxMzMsIDMyLCAxNiwgMjQyLCA5LCAyMzYsIDksIDEzMywgMzIsIDE2LCAzOCwgMjA2LCAxODUsIAorICAgIDEzMywgMzIsIDE2LCAzOCwgMjM4LCAxNjksIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDUsIDEzMywgMzIsIDE2LCAzOCwgCisgICAgMjI2LCAyNDcsIDEzMywgMzIsIDE2LCAzOCwgMjI3LCAyMjMsIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDYsIDMsIDIyNywgCisgICAgMjIzLCAxMzMsIDMyLCAxNiwgMzgsIDIyNiwgMjQ4LCAzLCAyMjcsIDIyMywgMTMzLCAzMiwgMTYsIDM4LCAyNDgsIDIyMSwgCisgICAgMTMzLCAzMiwgMTYsIDM4LCAyMzUsIDEwNiwgMTMzLCAzMiwgMTYsIDIxMywgNDQsIDE3NiwgMjM5LCAxMzEsIDEzMywgMzIsIAorICAgIDE2LCAyMTMsIDQ0LCAxNzYsIDI0MiwgNDgsIDEzMywgMzIsIDE2LCAyMTMsIDQ0LCAyNDYsIDExMCwgMjA0LCAyMDcsIDEzMywgCisgICAgMzIsIDE2LCAyMTMsIDQ0LCAyNDYsIDExMCwgMjA3LCAyLCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMTc2LCAyMTYsIDE1NywgCisgICAgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDE3NiwgMjE0LCAyMTAsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAyNDYsIDExMCwgMjE1LCAKKyAgICAxMzEsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAyNDYsIDExMCwgMjE1LCAxMTcsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAxNzYsIAorICAgIDIxNSwgMTU2LCAyMDcsIDIyNywgMiwgMjE2LCAxNDAsIDIwNywgMjI3LCAyLCAyMTYsIDE1MywgMjA3LCAyMjcsIDIsIDIxNiwgCisgICAgMTQ5LCAyMDcsIDIyNywgMSwgNjIsIDIwNywgMjI3LCAxLCA3MCwgMjA3LCAyMjcsIDEsIDY2LCAyMDcsIDIyNywgMSwgMjUxLCAKKyAgICAyMjEsIDIwNywgMjI3LCAxLCA3NCwgMjA3LCAyMjcsIDEsIDcyLCAyMDcsIDIyNywgMSwgMjM4LCA2OSwgMjA3LCAyMjcsIDEsIAorICAgIDE2MSwgMjA3LCAyMjcsIDEsIDIxNCwgMTU5LCAyMDcsIDIyNywgMSwgMjM2LCA4OSwgMjA3LCAyMjcsIDEsIDIxOSwgMjUzLCAKKyAgICAyMDcsIDIyNywgMSwgMjQ3LCAxOTAsIDIwNywgMjI3LCAxLCAyMjcsIDI0OCwgMjA3LCAyMjcsIDEsIDE5OSwgMTE0LCAyMDcsIAorICAgIDIyNywgMSwgMjE4LCA2MCwgMjA3LCAyMjcsIDEsIDIwNywgMzYsIDIwNywgMjI3LCAxLCAyNDIsIDU4LCAyMDcsIDIyNywgMSwgCisgICAgMTg4LCAyMDcsIDIyNywgMSwgMTcyLCAyMDcsIDIyNywgMSwgMjM3LCAxOTUsIDIwNywgMjI3LCAxLCAyMDMsIDkwLCAyMDcsIAorICAgIDIyNywgMSwgMjQ5LCAxMzYsIDIwNywgMjI3LCAxLCAxNzgsIDIwNywgMjI3LCAxLCAxODMsIDIwNywgMjI3LCAxLCAyMTMsIAorICAgIDI1MiwgMjA3LCAyMjcsIDEsIDE5NCwgMjA3LCAyMjcsIDEsIDIwMSwgMTE0LCAyMDcsIDIyNywgMSwgMjEyLCA2NCwgMjA3LCAKKyAgICAyMjcsIDEsIDIwMCwgMTgxLCAyMDcsIDIyNywgMSwgMTQ0LCAyMDcsIDIyNywgMTExLCAyLCAyMTYsIDE2OCwgMjA3LCAyMjcsIAorICAgIDExMSwgMiwgMjE2LCAxNDIsIDIwNywgMjI3LCAxMTEsIDIsIDIxNiwgMTM5LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTU2LCAKKyAgICAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTM4LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTYxLCAyMDcsIDIyNywgMjIsIDIsIAorICAgIDIxNiwgMTQ4LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTY5LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTU4LCAyMDcsIDIyNywgCisgICAgMiwgMjE2LCAxNzIsIDIwNywgMjI3LCAyLCAyMDIsIDIwOCwgMjA3LCAyMjcsIDExMSwgMiwgMjE2LCAxMDMsIDE3OCwgMjA3LCAKKyAgICAyMjcsIDExMSwgMiwgMjE2LCAxMDMsIDIwMSwgMTE0LCAyMDcsIDIyNywgMSwgMjI2LCAyMDcsIDIwNywgMjI3LCAxLCAyMDcsIAorICAgIDE2NCwgMjA3LCAyMjcsIDE3LCAxOTksIDgxLCAyMDcsIDIyNywgMTcsIDEwMiwgMjA3LCAyMjcsIDE3LCAxMDUsIDIwNywgCisgICAgMjI3LCAxNywgMTQ3LCAyMDcsIDIyNywgMTcsIDE0OSwgMjA3LCAyMjcsIDE3LCAxNjQsIDIwNywgMjI3LCAxNywgMTg3LCAKKyAgICAyMDcsIDIyNywgMTcsIDIxMCwgMTM1LCAyMDcsIDIyNywgMTcsIDE5MiwgMjA3LCAyMjcsIDE3LCAyMTksIDExMywgMjA3LCAKKyAgICAyMjcsIDI1MCwgMTIyLCAyMDcsIDIyNywgMSwgMjEzLCAxMDgsIDIwNywgMjI3LCAxLCAyMjQsIDIzMywgMjA3LCAyMjcsIDEsIAorICAgIDI0OCwgMjAwLCAyMDcsIDIyNywgMSwgNDcsIDIyNywgMTE4LCAyMDcsIDIyNywgMSwgNDcsIDIyMywgMjQzLCAyNDksIDU0LCAKKyAgICAxLCA2MiwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDYyLCAyNDksIDU0LCAxLCAxNDQsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAKKyAgICAxNDQsIDI0OSwgNTQsIDEsIDIyMiwgMTc1LCAxNDQsIDI0OSwgNTQsIDEsIDI0OSwgMTM2LCAyNDksIDU0LCAxLCAyMjcsIAorICAgIDQzLCAyNDksIDEzNiwgMjQ5LCA1NCwgMSwgMTcyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMTcyLCAyNDksIDU0LCAxLCAKKyAgICAxODgsIDI0OSwgNTQsIDEsIDIyMiwgMTc1LCAxODgsIDI0OSwgNTQsIDEsIDIwMSwgMTE0LCAyNDksIDU0LCAxLCAyMDksIAorICAgIDE1MCwgMjAxLCAxMTQsIDI0OSwgNTQsIDEsIDIxNiwgMTg1LCAyMDEsIDExNCwgMjQ5LCA1NCwgMSwgMjM2LCA4OSwgMjQ5LCAKKyAgICA1NCwgMSwgMjA5LCAxNTAsIDIzNiwgODksIDI0OSwgNTQsIDEsIDIyNywgMjQ4LCAyNDksIDU0LCAxLCAyNDIsIDU4LCAyNDksIAorICAgIDU0LCAxLCAyMTMsIDI1MiwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDIxMywgMjUyLCAyNDksIDU0LCAxLCAxNzgsIDI0OSwgCisgICAgNTQsIDEsIDIwOSwgMTUwLCAxNzgsIDI0OSwgNTQsIDEsIDIwOCwgMjUyLCAyMDcsIDM2LCAyNDksIDU0LCAxLCAyMTgsIAorICAgIDIxOSwgMjA3LCAzNiwgMjQ5LCA1NCwgMSwgMjEyLCA2NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDIxMiwgNjQsIDI0OSwgCisgICAgNTQsIDEsIDIyMiwgMTc1LCAyMTIsIDY0LCAyNDksIDU0LCAxLCAxODMsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxODMsIAorICAgIDI0OSwgNTQsIDEsIDIxOSwgMjUzLCAyNDksIDU0LCAxLCAxOTQsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxOTQsIDI0OSwgCisgICAgNTQsIDEsIDIxOCwgNjAsIDI0OSwgNTQsIDEsIDI0NywgMTkwLCAyNDksIDU0LCAxLCAyMjAsIDc1LCAyNDksIDU0LCAxLCAKKyAgICAyMjIsIDExMCwgMjQ5LCA1NCwgMSwgNzAsIDI0OSwgNTQsIDEsIDY2LCAyNDksIDU0LCAyLCAyMDUsIDE3NywgMjQ5LCA1NCwgCisgICAgMjIsIDIsIDcyLCAyNDksIDU0LCAyMiwgMiwgMjE2LCAxODUsIDcyLCAyNDksIDU0LCAyMiwgMiwgMjM4LCAyNTUsIDI0OSwgCisgICAgNTQsIDIyLCAyLCA3MCwgMjQ5LCA1NCwgMjIsIDIsIDIyNywgNDMsIDcwLCAyNDksIDU0LCAyMiwgMiwgNzQsIDI0OSwgNTQsIAorICAgIDIyLCAyLCAyMjcsIDQzLCA3NCwgMjQ5LCA1NCwgMjIsIDIsIDY2LCAyNDksIDU0LCAyMiwgMiwgMTA4LCAzNiwgMjA5LCAKKyAgICAxNTAsIDIxMiwgNjQsIDI0OSwgNTQsIDExMSwgMiwgMjE5LCAyNTUsIDI0OSwgNTQsIDExMSwgMiwgMjM0LCAyNDcsIDI0OSwgCisgICAgNTQsIDIxNiwgMTUxLCAyNDksIDU0LCAyMTYsIDE0NywgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMjAsIDE2MiwgMjIyLCAKKyAgICAxOCwgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMTUsIDE1OSwgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMjcsIDE0NCwgCisgICAgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMTYsIDE1MSwgMjI0LCAyNDMsIDEsIDE2MSwgMjI0LCAyNDMsIDEsIDIyNiwgMTAyLCAKKyAgICAyMjQsIDI0MywgMSwgMjI2LCAyMDcsIDIyNCwgMjQzLCAxLCAyMzYsIDg5LCAyMjQsIDI0MywgMSwgMjM1LCAxMzEsIDIyNCwgCisgICAgMjQzLCAxLCAyMTksIDI1MywgMjI0LCAyNDMsIDEsIDI0NywgMTkwLCAyMjQsIDI0MywgMSwgMjQ3LCAzNywgMjI0LCAyNDMsIAorICAgIDEsIDIyNywgMjQ4LCAyMjQsIDI0MywgMSwgMjE4LCA2MCwgMjI0LCAyNDMsIDEsIDIwNywgMzYsIDIyNCwgMjQzLCAxLCAKKyAgICAyMDYsIDEyMiwgMjI0LCAyNDMsIDEsIDI0MiwgNTgsIDIyNCwgMjQzLCAxLCAxODgsIDIyNCwgMjQzLCAxLCAxNzIsIDIyNCwgCisgICAgMjQzLCAxLCAyMTUsIDEzNSwgMjI0LCAyNDMsIDEsIDIxNSwgMjQ1LCAyMjQsIDI0MywgMSwgMjM3LCAxOTUsIDIyNCwgMjQzLCAKKyAgICAxLCAyMzcsIDU1LCAyMjQsIDI0MywgMSwgMjQ5LCAxMzYsIDIyNCwgMjQzLCAxLCAyNDgsIDE0NSwgMjI0LCAyNDMsIDEsIAorICAgIDE3OCwgMjI0LCAyNDMsIDEsIDIyMSwgMTQzLCAyMjQsIDI0MywgMSwgMjA1LCAzMiwgMjI0LCAyNDMsIDEsIDIwNSwgMjIsIAorICAgIDIyNCwgMjQzLCAxLCAyMzksIDkzLCAyMjQsIDI0MywgMSwgMTgzLCAyMjQsIDI0MywgMSwgMjEzLCAyNTIsIDIyNCwgMjQzLCAKKyAgICAxLCAxOTQsIDIyNCwgMjQzLCAxLCAxNDQsIDIyNCwgMjQzLCAxLCAyMzQsIDM5LCAyMjQsIDI0MywgMSwgMjAzLCA5MCwgCisgICAgMjI0LCAyNDMsIDEsIDIxMiwgNjQsIDIyNCwgMjQzLCAxLCAyMTAsIDExNCwgMjI0LCAyNDMsIDEsIDIwMSwgMTE0LCAyMjQsIAorICAgIDI0MywgMSwgNjIsIDIyNCwgMjQzLCAyMDgsIDEyLCAxLCAxODMsIDIyNCwgMjQzLCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgCisgICAgMjI0LCAyNDMsIDIyLCAyLCAyNTIsIDEzOCwgMjI0LCAyNDMsIDIyLCAyLCA3MCwgMjI0LCAyNDMsIDIyLCAyLCA3NCwgMjI0LCAKKyAgICAyNDMsIDIyLCAyLCAyMTcsIDYzLCAyMjQsIDI0MywgMjIsIDIsIDY2LCAyMjQsIDI0MywgMjIsIDIsIDIwMywgMTgyLCAyMjQsIAorICAgIDI0MywgMjIsIDIsIDcyLCAyMjQsIDI0MywgMTExLCAyLCAyMjcsIDExOCwgMjI0LCAyNDMsIDExMSwgMiwgMjIzLCAyNDMsIAorICAgIDIyNCwgMjQzLCAxMTEsIDIsIDE1NiwgMjI0LCAyNDMsIDExMSwgMiwgMjIwLCAyMTQsIDIyNCwgMjQzLCAxMTEsIDIsIDIxNiwgCisgICAgMjI2LCAyMjQsIDI0MywgMTExLCAyLCAxNDYsIDIyNCwgMjQzLCAxMTEsIDIsIDIwNywgODMsIDIyNCwgMjQzLCAxMTEsIDIsIAorICAgIDIxOCwgMzQsIDIyNCwgMjQzLCAxMTEsIDIsIDIyNywgNjQsIDIyNCwgMjQzLCAyLCAyMTMsIDIxMywgMjI0LCAyNDMsIDIsIAorICAgIDIxOCwgMTAwLCAyMjQsIDI0MywgMjE0LCAyMTIsIDIwNywgMzQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjE4LCA0NSwgMjA2LCAKKyAgICAxOCwgMjA3LCAzNCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyNDcsIDQ0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDIwNSwgMTQsIAorICAgIDI0NywgNDQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA1LCAxMywgMjI0LCAyNDMsIDE3LCAxOTksIDgxLCAyMjQsIDI0MywgCisgICAgMTcsIDEwMiwgMjI0LCAyNDMsIDE3LCAxMDUsIDIyNCwgMjQzLCAxNywgMTQ3LCAyMjQsIDI0MywgMTcsIDE0OSwgMjI0LCAKKyAgICAyNDMsIDE3LCAxNjQsIDIyNCwgMjQzLCAxNywgMTg3LCAyMjQsIDI0MywgMTcsIDIxMCwgMTM1LCAyMjQsIDI0MywgMTcsIAorICAgIDE5MiwgMjI0LCAyNDMsIDE3LCAyMTksIDExMywgMjI0LCAyNDMsIDEsIDIwNCwgMjUzLCAyMjQsIDI0MywgMSwgMjA0LCAKKyAgICAyNDEsIDIyNCwgMjQzLCAxLCAyNDEsIDIyMCwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxOTksIDgxLCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMTcsIDEwMiwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxMDUsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTQ3LCAKKyAgICAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE0OSwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxNjQsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxNywgMTg3LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDIxMCwgMTM1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIAorICAgIDE5MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAyMTksIDExMywgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDE5NCwgMjE3LCA5NCwgCisgICAgMjQ2LCAyMjksIDEsIDI1MCwgMTU1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUxLCAxOTMsIDIxNywgOTQsIDI0NiwgMjI5LCAKKyAgICAxLCAyNTEsIDc2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUxLCAxNTEsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjUsIAorICAgIDE3NSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgMTAwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCAxMDEsIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDk5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCA5NCwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDEsIDIyNCwgMjEwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCAyNiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIAorICAgIDIyOCwgMTUyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCA0NywgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyOCwgMzUsIAorICAgIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjQsIDQyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjA0LCAzOCwgMjE3LCA5NCwgCisgICAgMjQ2LCAyMjksIDEsIDIwNCwgMzYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMDMsIDIzMywgMjE3LCA5NCwgMjQ2LCAyMjksIAorICAgIDEsIDIwMywgMTc0LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI1LCA0MCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIzOCwgCisgICAgMTMzLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM5LCAyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM4LCAxNzksIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAxLCAyMzgsIDEwOCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNCwgMTEwLCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMSwgMjE3LCA2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjE3LCAxNDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAKKyAgICAyMTYsIDI0OSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIxNywgMTA4LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjIxLCA0MiwgCisgICAgMjA0LCAyMTgsIDIxNywgOTQsIDI0NiwgMjI5LCAyMzYsIDg0LCAyMDQsIDIxOSwgMjE3LCA5NCwgMjQ2LCAyMjksIDIyMSwgCisgICAgNDAsIDIwNCwgMjE5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjEzLCAxNTAsIDIxNywgOTQsIDI0NiwgMjI5LCAyMTUsIDI0MywgCisgICAgMjE3LCA5NCwgMjQ2LCAyMjksIDI1MSwgMTg0LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjE0LCAyMTIsIDIyMSwgMzYsIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAyMTQsIDIxMiwgNTMsIDIyMSwgMzYsIDM3LCA0LCAxLCAyMTIsIDIxOSwgMjAzLCA1OSwgMzcsIDQsIAorICAgIDEsIDIyNCwgODIsIDI0MSwgMTc1LCAzNywgNCwgMSwgMjIwLCAxMjQsIDc0LCAzNywgNCwgMSwgMjAxLCAyOCwgMjM4LCAKKyAgICAxMDQsIDM3LCA0LCAxLCAyMDYsIDI0OCwgMjA2LCAyMDEsIDM3LCA0LCAxLCAyMDYsIDQzLCAyMDYsIDIwMSwgMzcsIDQsIDEsIAorICAgIDIwNiwgMjQ4LCAyMzQsIDE2NSwgNTQsIDM3LCA0LCAxLCAyMDYsIDI0OCwgMjAwLCA2NSwgMzcsIDQsIDEsIDIwNCwgMCwgCisgICAgMjA0LCAyMCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjA3LCAxOTgsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAKKyAgICAxNjYsIDIxNiwgMTUyLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMTQsIDIwMCwgMjA3LCAyMjcsIDIxNCwgCisgICAgMjEyLCAyNDgsIDE2NiwgMjQ3LCAxNzUsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIyNCwgMjM0LCAyMTEsIAorICAgIDI1MCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjI3LCAxMDgsIDIxMSwgMjUwLCAyMDcsIDIyNywgMjE0LCAKKyAgICAyMTIsIDI0OCwgMTY2LCAyNDIsIDU5LCAyMTEsIDI1MCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjQ5LCAxMzcsIAorICAgIDIxMSwgMjUwLCAyMDMsIDU2LCAxNTAsIDIyNywgNDEsIDIwMywgNTYsIDE1MCwgMjEwLCA4MSwgMjAzLCA1NiwgMTUwLCAKKyAgICAyMTUsIDIzLCAyMDMsIDU2LCAyLCAyMTksIDEyNiwgMjAzLCA1NiwgMiwgMjAwLCA4NiwgMjIxLCAyMDIsIDIwNywgMTg5LCAKKyAgICAyMDMsIDU2LCAxNTAsIDIwMCwgODYsIDI1MSwgMTg5LCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjAwLCAKKyAgICA4NiwgMjI4LCAxMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIwMCwgODYsIDIyNywgMjksIDIyOCwgMTA0LCAyMDcsIAorICAgIDE4OSwgMjAzLCA1NiwgMTUwLCAyNDcsIDE1MiwgNTcsIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjI3LCAyOSwgMjI4LCAKKyAgICAxMDQsIDIwNywgMTkwLCAyMTEsIDIyMCwgMjAzLCA1NiwgMTUwLCA1MywgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjA1LCAKKyAgICA4MywgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjI3LCAyOSwgMjUxLCAzNSwgMjAzLCA1NiwgMTUwLCA3MywgNTcsIDIwMywgCisgICAgNTYsIDE1MCwgMTIwLCAxOTAsIDU3LCAyMDMsIDU2LCAxNTAsIDEyNiwgMTkwLCA1NywgMjAzLCA1NiwgMTUwLCAyMTMsIDM0LCAKKyAgICAyMjcsIDQwLCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjUwLCAxNTIsIDIyOCwgMTA0LCAyMDcsIDE4OSwgCisgICAgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA0LCAzMywgMjAzLCA1NiwgCisgICAgMiwgMjEzLCAxMDUsIDIwMiwgMjA0LCAyMDQsIDMzLCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjUxLCAzNSwgMjAzLCA1NiwgCisgICAgMiwgMjEzLCAxMDUsIDIwMiwgMjA0LCAyNTEsIDM1LCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA0LCAzNCwgMywgMjA3LCA2LCAKKyAgICAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjUxLCAzNiwgMywgMjA3LCA2LCAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyNTEsIDUwLCAKKyAgICAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyNDksIDEwNCwgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjAzLCA4MSwgMjAzLCA1NiwgMiwgCisgICAgMjUxLCAzNCwgMjAzLCA4MiwgMywgMjA3LCA2LCAyMDMsIDU2LCAyLCAyMDUsIDIxNCwgMjAzLCA1NiwgMiwgMjM0LCA4NywgCisgICAgMTY4LCAyNTEsIDMzLCAyMDMsIDU2LCAyLCAxNjgsIDI1MSwgMzMsIDIwMywgNTYsIDIsIDIxMiwgMTc3LCAxNjgsIDI1MSwgCisgICAgMzMsIDIwMywgNTYsIDIsIDI1MSwgMzQsIDIwNCwgNDAsIDIyMSwgMjcsIDIwMywgNTYsIDIsIDI1MCwgMjMwLCAyMDMsIDU2LCAKKyAgICAyLCAyMTIsIDIyOCwgMjUwLCAyMzAsIDIwMywgNTYsIDE1MCwgMjQ3LCAxNTIsIDU2LCAyMDMsIDU2LCAyLCAyMjcsIDIwMSwgCisgICAgMjAzLCA1NiwgMiwgMjAzLCAyMjYsIDIwMywgNTYsIDE1MCwgMjEzLCAyNywgNTYsIDIwMywgNTYsIDE1MCwgNTMsIDIxMywgCisgICAgMjcsIDU2LCA4LCAxLCA0LCA2LCA2MiwgOCwgMSwgNCwgNiwgMjUxLCAyMjEsIDgsIDQsIDEsIDIwNCwgMTg1LCAyNTEsIAorICAgIDIyMSwgOCwgMSwgNCwgNiwgMjQ5LCA3MSwgMjUwLCAxMDMsIDgsIDEsIDQsIDYsIDI0NywgMjIzLCA4LCAxLCA0LCA2LCAKKyAgICAyNDIsIDE1MywgOCwgMSwgNCwgNiwgMjM4LCA3NCwgOCwgMSwgNCwgNiwgNzIsIDgsIDQsIDEsIDIwNCwgMTg1LCAxNzYsIAorICAgIDcyLCA4LCA0LCAxLCAyMDQsIDE4NSwgNzAsIDgsIDEsIDQsIDYsIDIyNywgMjUxLCA4LCAxLCA0LCA2LCAyMjcsIDExOCwgOCwgCisgICAgMSwgNCwgNiwgMjI1LCAxOTMsIDMsIDk3LCA4LCAxLCA0LCA2LCAyMjMsIDI0MywgOCwgMSwgNCwgNiwgMjEzLCAxMDUsIAorICAgIDIyMCwgMjE0LCA4LCAxLCA0LCA2LCA3NCwgOCwgMSwgNCwgNiwgMTc2LCA3NCwgOCwgNCwgMSwgMjA5LCAxNzMsIDc0LCA4LCAKKyAgICA0LCAxLCAyMDksIDE3MywgMTc2LCA3NCwgOCwgNCwgMSwgMjA5LCAxNzMsIDE2MywgMywgOTcsIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAyMTcsIDEyMSwgOCwgMSwgNCwgNiwgMjE3LCAzLCA4LCA0LCAxLCAyMDUsIDE1OCwgMTY3LCA3NCwgOCwgNCwgMSwgCisgICAgMjQ4LCA5MywgMTY3LCA3NCwgOCwgMSwgNCwgNiwgMjE2LCAyMjYsIDgsIDEsIDQsIDYsIDIxMywgMTA1LCAxNDYsIDgsIDEsIAorICAgIDQsIDYsIDIwNCwgMTg1LCAxNDYsIDgsIDEsIDQsIDYsIDIwNywgODMsIDgsIDEsIDQsIDYsIDY2LCA4LCA0LCAxLCAyMDksIAorICAgIDE3MywgNjYsIDgsIDQsIDEsIDIwOSwgMTczLCAyNDEsIDcyLCA2NiwgOCwgNCwgMSwgMjA5LCAxNzMsIDIwNCwgMTg1LCAKKyAgICAyMjMsIDI0MywgOCwgMSwgNCwgNiwgMjAzLCAxNjgsIDgsIDEsIDQsIDYsIDIwMSwgMTQ3LCA4LCAxLCA0LCA2LCAxOTksIAorICAgIDE1NywgOCwgMSwgNCwgNiwgMjM4LCA4LCA4LCAxLCAyMDIsIDE4OSwgMjI1LCA2NiwgMjA4LCAyMTYsIDgsIDEsIDI1MSwgCisgICAgMTcxLCAzMSwgMSwgNCwgNiwgMjM2LCA2MCwgMzEsIDEsIDQsIDYsIDIyNSwgODcsIDMxLCAxLCA0LCA2LCAyMTUsIDIwNCwgCisgICAgMzEsIDEsIDQsIDYsIDIxMywgOTAsIDMxLCAxLCA0LCA2LCAyMTQsIDIzNSwgMzcsIDEsIDQsIDYsIDIzOCwgMjA5LCA2NywgCisgICAgMSwgNiwgNjIsIDY3LCAxLCA2LCAyNTEsIDIyMSwgNjcsIDEsIDYsIDI1MCwgMTAzLCA2NywgMSwgNiwgMjQ5LCA3MSwgMjUwLCAKKyAgICAxMDMsIDY3LCAxLCA2LCAyNDIsIDE1MywgNjcsIDEsIDYsIDcyLCA2NywgMSwgNiwgMjEzLCAxMDUsIDcyLCA2NywgMSwgNiwgCisgICAgMjM2LCAxNTYsIDY3LCAxLCA2LCAyMzQsIDI0NywgNjcsIDEsIDYsIDcwLCA2NywgMSwgNiwgMjI3LCAyNTEsIDY3LCAxLCA2LCAKKyAgICAyMjcsIDExOCwgNjcsIDEsIDYsIDE1NiwgNjcsIDEsIDYsIDIyMywgMjQzLCA2NywgMSwgNiwgMjIwLCAyMTQsIDY3LCAxLCAKKyAgICA2LCAyMTMsIDEwNSwgMjIwLCAyMTQsIDY3LCAxLCA2LCA3NCwgNjcsIDEsIDYsIDIxNywgMywgNjcsIDEsIDYsIDIxNiwgCisgICAgMjI2LCA2NywgMSwgNiwgMTQ2LCA2NywgMSwgNiwgMjA3LCA4MywgNjcsIDEsIDYsIDY2LCA2NywgMSwgNiwgMjAxLCAxNDcsIAorICAgIDY3LCAxLCA0LCA2MiwgNjcsIDEsIDQsIDIwNCwgMTg1LCA2MiwgNjcsIDEsIDQsIDI1MSwgMTEyLCA2NywgMSwgNCwgMjA0LCAKKyAgICAxODUsIDI1MSwgMjIxLCA2NywgMSwgNCwgMjUwLCAxMDMsIDY3LCAxLCA0LCAyNDIsIDE1MywgNjcsIDEsIDQsIDcyLCA2NywgCisgICAgMSwgNCwgMjExLCAyMTgsIDY3LCAxLCA0LCAxNzYsIDcyLCA2NywgMSwgNCwgMjA0LCAxODUsIDE3NiwgNzIsIDY3LCAxLCA0LCAKKyAgICAyMzYsIDE1NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCA3MCwgNjcsIDEsIDQsIDIyNywgMTE4LCA2NywgMSwgNCwgMjIzLCAyNDMsIAorICAgIDY3LCAxLCA0LCAyMzgsIDE2NSwgNjcsIDEsIDQsIDc0LCA2NywgMSwgNCwgMTc2LCA3NCwgNjcsIDEsIDQsIDIwNSwgMTU4LCAKKyAgICAxNjcsIDc0LCA2NywgMSwgNCwgMjQ4LCA5MywgMTY3LCA3NCwgNjcsIDEsIDQsIDIxNiwgMjI2LCA2NywgMSwgNCwgMjA3LCAKKyAgICA4MywgNjcsIDEsIDQsIDY2LCA2NywgMSwgNCwgMjA5LCAxNzMsIDY2LCA2NywgMSwgNCwgMjA0LCAxODUsIDIyMywgMjQzLCAKKyAgICA2NywgMSwgNCwgMjAzLCAxNjgsIDY3LCAxLCA0LCAyNTEsIDE3MSwgNjcsIDEsIDQsIDI0OCwgMjA4LCA2NywgMSwgNCwgMzEsIAorICAgIDIzNiwgNjAsIDY3LCAxLCA0LCAyNDEsIDEzNiwgNjcsIDEsIDQsIDMxLCAyMTUsIDIyOSwgNjcsIDEsIDQsIDI0NiwgMjM2LCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDcwLCA4LCAyMDgsIDQsIDQsIDEsIDE0NiwgOCwgMjA4LCA0LCA0LCAxLCA2NiwgOCwgMjA4LCAKKyAgICA0LCA0LCAxLCAyMDMsIDE2OCwgMzEsIDIwOCwgNCwgNCwgMSwgMjQ4LCAyMDgsIDMxLCAyMDgsIDQsIDQsIDEsIDIzNiwgNjAsIAorICAgIDMxLCAyMDgsIDQsIDQsIDEsIDIxMywgOTAsIDMxLCAyMDgsIDQsIDQsIDEsIDIxNSwgMjI5LCAzMSwgMjA4LCA0LCA0LCAxLCAKKyAgICAyNDYsIDIzNiwgOCwgNCwgMSwgMjA0LCAzMSwgOCwgNCwgMSwgNjgsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDI0MiwgCisgICAgMTU0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzgsIDYsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMywgCisgICAgMjQ0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE2LCAKKyAgICAyMjcsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgCisgICAgMzMsIDMsIDIzNywgNjksIDI2LCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMTAxLCAyMDUsIDI0MCwgCisgICAgOCwgNCwgMSwgMjA3LCA4NCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDEwMSwgMjA1LCAyNDAsIAorICAgIDgsIDQsIDEsIDIwNCwgMTg1LCAyMzYsIDE1NiwgNjcsIDEsIDM3LCAyMzgsIDE3OSwgOCwgNCwgMSwgMjI4LCA3MSwgMjM2LCAKKyAgICAxNTYsIDgsIDQsIDEsIDIwNiwgMTI1LCAzLCAyMDgsIDUxLCA4LCA0LCA2LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNCwgMSwgCisgICAgMjI4LCA0MiwgMywgOTcsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCA5NywgOCwgNCwgNiwgMSwgMTA4LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDk3LCA4LCA0LCAxLCA2OCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzOCwgNiwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjE0LCAzMywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzOCwgOTUsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDM1LCAzLCAyMTMsIAorICAgIDExMSwgMTE3LCA4LCA0LCAxLCAyNTEsIDExMywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIzMywgCisgICAgMTg3LCAyNiwgMjA3LCA2LCA4LCA0LCAxLCAxOTcsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDE3NiwgMTk3LCAzLCAKKyAgICAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMTMsIDEwNSwgMTc2LCAxOTcsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIAorICAgIDIxMSwgMjE5LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAKKyAgICAxNzYsIDE2MywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjM4LCA5NSwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgCisgICAgMTA4LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzgsIDksIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAyMDQsIAorICAgIDE4NSwgMjUxLCAxMTIsIDY3LCAxLCA0LCAyNDcsIDIyMywgNjcsIDEsIDQsIDI0NywgMjI0LCAzLCAyNDIsIDE5OCwgNjcsIAorICAgIDEsIDQsIDIzOCwgNzQsIDY3LCAxLCA0LCAyMTMsIDEwNSwgMTc2LCA3MiwgNjcsIDEsIDQsIDIzOCwgNSwgNjcsIDEsIDQsIAorICAgIDI0MCwgMTgxLCAyMjcsIDI1MiwgMywgOTcsIDY3LCAxLCA0LCAxMzUsIDIzNiwgMTU2LCA2NywgMSwgNCwgMjA0LCAxODUsIAorICAgIDIzNCwgMjQ3LCA2NywgMSwgNCwgMjMzLCAxOSwgMywgOTcsIDY3LCAxLCA0LCAyMjgsIDQxLCA2NywgMSwgNCwgNiwgNzAsIAorICAgIDY3LCAxLCA0LCA2LCAyMzMsIDE5LCAzLCA5NywgNjcsIDEsIDQsIDIyNywgMjUyLCAzLCAyNDIsIDIzMCwgNjcsIDEsIDQsIAorICAgIDIyNSwgMTkzLCAzLCAyMTMsIDExMSwgMTE3LCA2NywgMSwgNCwgMjI1LCAxOTMsIDMsIDIxNiwgMTg0LCAxMTcsIDY3LCAxLCAKKyAgICA0LCA2LCAxNTYsIDY3LCAxLCA0LCAyMjMsIDI0NCwgMywgMTE3LCA2NywgMSwgNCwgMjA0LCAxODUsIDIyMywgMjQ0LCAzLCAKKyAgICAxNjgsIDIyNSwgMTYsIDY3LCAxLCA0LCAyMjAsIDIxNSwgMywgNDksIDExNywgNjcsIDEsIDQsIDIyMCwgMjE1LCAzLCAyMTMsIAorICAgIDExMSwgMTE3LCA2NywgMSwgNCwgNiwgMjIwLCAyMTQsIDY3LCAxLCA0LCAyNDksIDcxLCA3NCwgNjcsIDEsIDQsIDIxNSwgCisgICAgMjI5LCA2NywgMSwgNCwgMjEyLCAxMjMsIDMsIDExNywgNjcsIDEsIDQsIDIzOCwgOTQsIDY3LCAxLCA0LCAyMDcsIDg0LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA2NywgMSwgNCwgMTA4LCAxNDgsIDY3LCAxLCA0LCAyMDMsIDIyMCwgNjcsIDEsIDQsIDYsIDY2LCAKKyAgICA2NywgMSwgNCwgMjAzLCAxNjksIDMsIDExNywgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMDMsIDE2OCwgNjcsIDEsIDQsIDE5OSwgCisgICAgMTU3LCA2NywgMSwgNCwgMTk5LCAxNTgsIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAxOTksIDE1OCwgMywgMjQyLCAKKyAgICAxOTgsIDY3LCAxLCA0LCAyMzgsIDgsIDY3LCAxLCA0LCAyMDYsIDg4LCAzOCwgMjM5LCAxODAsIDIzNSwgNzQsIDI1MSwgCisgICAgMjUxLCAzOCwgMjM5LCAxODAsIDI1MSwgMjM5LCAyNTEsIDI1MSwgMzgsIDIwOSwgNDIsIDU3LCAzOCwgMjA3LCAxOTYsIDgxLCAKKyAgICAzOCwgMjIyLCAyMjcsIDM4LCAyMzUsIDcxLCAzOCwgMjIyLCAyMjUsIDM4LCAyNTEsIDIzNywgMzgsIDIzNSwgNzIsIDM4LCAKKyAgICAyNTEsIDIzOCwgMzgsIDgsIDQsIDEsIDIxNCwgMzMsIDU3LCAzOCwgMjQ4LCA1NiwgMzgsIDIyMiwgMjI2LCAzOCwgNTMsIAorICAgIDI0NiwgMTQ3LCA1NiwgMzgsIDIxNywgMTExLCA1NiwgMzgsIDE5OSwgMjcsIDU3LCAzOCwgMjI4LCAyNywgNTcsIDM4LCAKKyAgICAyMDMsIDIxNSwgNTYsIDM4LCAyMDMsIDE5OCwgNTYsIDM4LCA4LCA0LCAxLCAyMzcsIDQxLCAxNzYsIDM1LCA1NiwgMzgsIDgsIAorICAgIDQsIDEsIDI1MSwgMjIxLCAzOCwgOCwgNCwgMSwgMjUxLCAzMSwgMzgsIDgsIDQsIDEsIDI1MCwgMTIzLCAzOCwgOCwgNCwgMSwgCisgICAgMjQ3LCAyMjQsIDI0NywgNjksIDM4LCA4LCA0LCAxLCAyMjgsIDcxLCAyNDIsIDE1MywgMzgsIDgsIDQsIDEsIDIzOCwgNzQsIAorICAgIDM4LCA4LCA0LCAxLCAyMzYsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDIzNiwgMTU2LCAzOCwgOCwgNCwgMSwgMjI3LCAxMTgsIAorICAgIDM4LCA4LCA0LCAxLCAxNTYsIDM4LCA4LCAxLCA0LCA2LCAxNTYsIDM4LCA4LCAxLCA0LCA2LCAyMjMsIDI0MywgMzgsIDgsIAorICAgIDQsIDEsIDIyMCwgMjE0LCAzOCwgOCwgMSwgNCwgNiwgMjIwLCAyMTQsIDM4LCA4LCAxLCA0LCA2LCAxNDYsIDM4LCA4LCA0LCAKKyAgICAxLCAyMTQsIDMzLCAyMTIsIDIyMiwgMzgsIDgsIDQsIDEsIDIxMiwgMTIyLCAzOCwgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMiwgCisgICAgMzgsIDgsIDQsIDEsIDE5OSwgMTU3LCAzOCwgOCwgNCwgMSwgMjUxLCAxMTIsIDM4LCA4LCA0LCAxLCAyNTAsIDEwMywgMzgsIAorICAgIDgsIDQsIDEsIDI0OCwgMjA4LCAzOCwgOCwgNCwgMSwgMjExLCAyMTgsIDM4LCA4LCA0LCAxLCAyMzgsIDUsIDM4LCA4LCA0LCAKKyAgICAxLCAyMjUsIDE5MywgMywgNTMsIDEwMSwgMjA1LCAyNDAsIDM4LCA4LCA0LCAxLCAxNjMsIDMsIDE2MiwgMjQ3LCA1NywgOTcsIAorICAgIDM4LCA4LCA0LCAxLCAyMTYsIDIyNiwgMzgsIDgsIDQsIDEsIDIzOCwgOTQsIDM4LCA4LCA0LCAxLCAxMDgsIDMsIDE2MiwgCisgICAgMjQ3LCA1NywgOTcsIDM4LCA4LCA0LCAxLCAyMDEsIDE0NywgMzgsIDgsIDQsIDEsIDM1LCAzLCAyNDEsIDc0LCAzOCwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAzOCwgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc0LCAzOCwgMTE1LCAyMDcsIDE4LCAKKyAgICA1NiwgMzgsIDI0MSwgMTQ1LCA4MSwgMzgsIDUzLCAyMjgsIDUwLCAyNDgsIDU4LCA1NywgMzgsIDI1MSwgMTE3LCAxNjAsIAorICAgIDIwNSwgMTg2LCA1NywgMzgsIDQ5LCAyNTAsIDIwMywgNTYsIDM4LCA1MSwgMjUwLCAyMDMsIDI2LCAxMjcsIDI1MCwgMjAzLCAKKyAgICA1NywgOCwgNiwgMSwgMzUsIDMsIDIxMywgMjcsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjEzLCAyNywgNTcsIDgsIDYsIDEsIAorICAgIDY4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDY4LCAzLCA3MywgNTYsIDgsIDYsIDEsIDY4LCAzLCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDY4LCAzLCA3MywgNTcsIDgsIDYsIDEsIDY4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDY4LCAzLCAyMjQsIDE3NywgCisgICAgNTcsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDcwLCAyNiwgMTY5LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAKKyAgICA3MCwgMjYsIDE2OSwgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NiwgCisgICAgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDI0NywgNjksIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIyMiwgCisgICAgMjI5LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgCisgICAgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDYsIDEsIDE5NywgCisgICAgMywgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyMDUsIAorICAgIDI0MSwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDI0NywgNzAsIDI2LCAKKyAgICAyNDgsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0NywgNzAsIDI2LCAyNDgsIDU3LCA4LCA2LCAxLCAyMzgsIDYsIDMsIDczLCAKKyAgICA1NiwgOCwgNCwgMSwgMjM4LCA2LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMjM2LCAxNTcsIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMzQsIDI0OCwgCisgICAgMywgNzMsIDU2LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU3LCA4LCAKKyAgICA2LCAxLCAyMzQsIDI0OCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIzNCwgCisgICAgMjQ4LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIAorICAgIDI0OCwgNTgsIDU3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ4LCA1OCwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIwNSwgCisgICAgMjQxLCA1NywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc1LCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc1LCAyNiwgMTY5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgCisgICAgMTY5LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMTY5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAyMjcsIDExOSwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMjcsIAorICAgIDExOSwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNzMsIDU3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgCisgICAgNzMsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNzMsIDI0OCwgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDIyNCwgMTc3LCA1NywgCisgICAgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDI0NiwgMTQ3LCA1NywgCisgICAgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDE2OSwgOCwgNCwgMSwgCisgICAgMjIzLCAyNDQsIDMsIDE2OSwgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NywgOCwgNiwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDczLCA1NywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDczLCA1NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDIyNCwgMTc3LCA1NywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDI0NiwgMTQ3LCA1NywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgCisgICAgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDI0MSwgCisgICAgNzQsIDgsIDQsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyNDEsIDc0LCA4LCA2LCAxLCAxNjMsIDMsIDIyMiwgMjI5LCAKKyAgICAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjIyLCAyMjksIDI2LCAxNjksIDgsIDQsIDEsIDE2MywgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDYsIDEsIDIxNiwgMjI3LCAKKyAgICAzLCAxNjksIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAxNjksIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCA3MywgNTYsIDgsIDQsIDEsIAorICAgIDIxNiwgMjI3LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjE0LCAzMywgMywgCisgICAgNzMsIDU2LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDczLCA1NywgOCwgNiwgCisgICAgMSwgMjE0LCAzMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDczLCAyNDgsIAorICAgIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIAorICAgIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgOCwgNiwgMSwgCisgICAgMjEyLCAxMjMsIDMsIDI1MSwgMjM5LCAyNiwgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjUxLCAyMzksIDI2LCAKKyAgICA3MywgNTYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDEyNiwgMjYsIDczLCA1NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIAorICAgIDI0NywgMTI2LCAyNiwgNzMsIDU2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCA3MywgNTYsIAorICAgIDgsIDQsIDEsIDIwNywgODQsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjA3LCA4NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDcsIAorICAgIDg0LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgCisgICAgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIAorICAgIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc1LCA1NywgCisgICAgOCwgNiwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAKKyAgICAxMDgsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjA1LCAyNDEsIDI2LCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjA1LCAyNDEsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjksIDI2LCAyNDEsIDc0LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjQxLCA3NCwgOCwgNiwgMSwgCisgICAgMjAzLCAxNjksIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDIwMywgMTY5LCAKKyAgICAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMjM1LCA3MywgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDE2OSwgOCwgNCwgMSwgMjAxLCAKKyAgICAxNDgsIDMsIDE2OSwgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyNDEsIAorICAgIDc0LCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU2LCA4LCA2LCAxLCAKKyAgICAyMDEsIDE0OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDAsIDE5NiwgMywgCisgICAgNzMsIDU2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMDAsIDE5NiwgMywgMjQxLCA3NCwgOCwgCisgICAgNCwgMSwgMjAwLCAxOTYsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIwMCwgCisgICAgMTI0LCAzLCA3MywgNTYsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIAorICAgIDI0NiwgMTQ2LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgNzMsIDU3LCA4LCAKKyAgICA2LCAxLCAxOTksIDE1OCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjI0LCAxNzcsIDU3LCA4LCAKKyAgICA0LCAxLCAyMzQsIDI0OCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAKKyAgICAyMDEsIDE0OCwgMywgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDUxLCAxNjcsIDIxMywgMjYsIDgsIDQsIDEsIDE2OCwgMjEyLCAxMjMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMTY4LCAKKyAgICAyMTIsIDEyMywgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDE2OCwgMjEyLCAxMjMsIDMsIDEyMiwgOTcsIDgsIDYsIDEsIAorICAgIDIxMCwgNzksIDIxMiwgMTIyLCA4LCA0LCAxLCAyNDEsIDEzNiwgOCwgNiwgMSwgMzUsIDMsIDczLCA1NywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDczLCA1NywgOCwgNiwgMSwgMzUsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMzUsIDMsIDIzMywgMTg3LCAKKyAgICA1NiwgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAxNjksIAorICAgIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgCisgICAgNzMsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAKKyAgICAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIAorICAgIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0OCwgNTgsIDI2LCAxNjksIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzMywgMTg3LCA1NiwgCisgICAgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgCisgICAgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAKKyAgICAyNiwgNzMsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDczLCA1NywgOCwgNiwgMSwgMTk3LCAzLCA3MywgNTcsIAorICAgIDgsIDQsIDEsIDE5NywgMywgNzMsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTk3LCAzLCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgMywgMjA1LCAyNDAsIDgsIDYsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDYsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgCisgICAgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIAorICAgIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDQsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgCisgICAgMSwgMjMzLCAxOSwgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIzMywgCisgICAgMTksIDMsIDczLCA1NywgOCwgNiwgMSwgMTYzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDE2MywgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAxNjMsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgCisgICAgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIzMywgCisgICAgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgCisgICAgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDE2MywgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCA4LCA0LCAKKyAgICAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgCisgICAgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIAorICAgIDE2MywgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDEwOCwgMywgNzMsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDczLCA1NywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDE4NywgCisgICAgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDEwOCwgCisgICAgMywgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA2LCAKKyAgICAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCAKKyAgICA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIAorICAgIDIwMCwgMTI0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAKKyAgICAyMDUsIDI0MCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMjEsIDIwMywgMjI0LCAxMzksIDgsIAorICAgIDQsIDEsIDIyMSwgMjAzLCAyMjQsIDEzOSwgOCwgNiwgMSwgMjIxLCAyMDMsIDIwMywgMTY4LCA4LCA0LCAxLCAyMjEsIDIwMywgCisgICAgMjAzLCAxNjgsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMjQsIDc0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjI0LCA3NCwgCisgICAgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MSwgMzEsIDQsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAKKyAgICAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjUxLCAKKyAgICAxMTMsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjgsIAorICAgIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgCisgICAgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAKKyAgICAyMzEsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDEsIAorICAgIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgCisgICAgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgCisgICAgMjQxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgNCwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIAorICAgIDIyOCwgNDIsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgCisgICAgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgCisgICAgMjAsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDI0MSwgMjQxLCAzMSwgCisgICAgNCwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgCisgICAgODIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIAorICAgIDIxNywgODIsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgCisgICAgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIAorICAgIDIyMSwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDQsIDEsIDIwMywgMjIxLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MSwgCisgICAgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAKKyAgICAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCAKKyAgICA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIzMSwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIxNiwgMjMxLCAzMSwgCisgICAgNCwgMSwgMjM4LCA4MCwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgCisgICAgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIwMywgNzQsIAorICAgIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgCisgICAgMjE3LCA4NCwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAxOTksIDIxOSwgMzEsIAorICAgIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgCisgICAgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCAKKyAgICA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAKKyAgICAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgCisgICAgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIAorICAgIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgCisgICAgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAKKyAgICAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIAorICAgIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA0LCAxLCAKKyAgICAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAKKyAgICAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgCisgICAgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAKKyAgICAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIAorICAgIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAKKyAgICAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIAorICAgIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgCisgICAgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAKKyAgICAyMTQsIDI0MiwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIAorICAgIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIAorICAgIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNCwgMjQyLCAKKyAgICAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgCisgICAgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAKKyAgICAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAKKyAgICAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwMiwgMTcwLCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTMsIDMsIDIyMiwgMjI4LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwMywgNzUsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIDIzMiwgCisgICAgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAKKyAgICAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDIyMiwgMjI4LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE2LCAKKyAgICAyMzEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyNDIsIDMxLCAyMjYsIDU4LCAzMSwgMjE0LCAyNDIsIDMxLCAyMTQsIAorICAgIDIyOCwgMzEsIDIxNiwgMjAsIDMxLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIwMywgCisgICAgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgCisgICAgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDgwLCAKKyAgICAzLCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgCisgICAgMTI1LCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjQyLCAzMSwgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIAorICAgIDIwMiwgMTcwLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAKKyAgICAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIAorICAgIDIyOCwgNDIsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjIyLCAyMjgsIDMxLCA2LCAxLCAyMjgsIDQyLCAKKyAgICAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE2LCAyMzEsIDMxLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIAorICAgIDMxLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjAzLCAKKyAgICAyMjEsIDMsIDIwMiwgMTcwLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIyMiwgMjI4LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIAorICAgIDI0MSwgNjgsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDQsIDEsIDIxMywgOTEsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjEzLCA5MSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAKKyAgICAyMDMsIDIyMSwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDYsIAorICAgIDEsIDIwMywgMjIxLCAzLCAyMDIsIDE3MCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyMjIsIDIyOCwgMzEsIDYsIDEsIDIwMywgCisgICAgMjIxLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjEzLCA5MSwgMywgCisgICAgMjQxLCAyNDEsIDMxLCAyNDEsIDY4LCAyNiwgMjAzLCA3NCwgMzEsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgCisgICAgMjE3LCA4MiwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgCisgICAgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAKKyAgICAyNDIsIDMxLCAyMTYsIDIzMSwgMzEsIDI0MSwgMjQxLCAyMzgsIDE4MCwgMjE0LCA5NCwgMjM4LCAxOTEsIDIxNCwgOTQsIAorICAgIDIzOCwgMTgwLCAyMDgsIDI0NCwgMjM4LCAxOTEsIDIwOCwgMjQ0LCAyMDYsIDQxLCAyMDgsIDI0NCwgMjM2LCAyMjcsIDIwOCwgCisgICAgMjQ0LCAyMDksIDEwNCwgMjA4LCAyNDQsIDIzNywgMTAyLCAyMDgsIDI0NCwgMjE0LCAyMTIsIDIwOCwgMjQ0LCAyMDYsIDc3LCAKKyAgICAyMDgsIDI0NCwgMjM0LCAyMjIsIDIwOCwgMjQ0LCAxOTksIDgyLCAyMDEsIDI1LCAyMDgsIDI0NCwgMTk5LCA4MiwgMjAxLCAKKyAgICAyNSwgMjE4LCAyMzIsIDE5OSwgODIsIDIwMSwgMjUsIDIyNywgMTYxLCAyMjUsIDE5LCA4MSwgMjEzLCAzNywgODEsIDIzMywgCisgICAgMzMsIDIxOCwgMjMzLCAyMzMsIDMzLCAyMzcsIDEwMiwgMjQxLCAyNDQsIDIzOCwgMTgwLCAyNDEsIDI0NCwgMjM4LCAxOTEsIAorICAgIDI0MSwgMjQ0LCAyMzMsIDE3NywgMTQ4LCA1MywgODMsIDIyNCwgMTc2LCA1MywgMTI4LCAyMjQsIDE3NiwgNDksIDIwOSwgCisgICAgMTM5LCAyMTQsIDYzLCA4MSwgNTEsIDIwOSwgMTM5LCAyMTQsIDYzLCA4MSwgMjA5LCAxMzksIDIyNCwgNTgsIDIxNCwgNjMsIAorICAgIDgxLCAyMDksIDEzOSwgMjM0LCA1NiwgMjE0LCA2MywgODEsIDQ5LCA1MywgMjE0LCA2MywgODEsIDUxLCA1MywgMjE0LCA2MywgCisgICAgODEsIDUzLCAyMjQsIDU4LCAyMTQsIDYzLCA4MSwgNTMsIDIzNCwgNTYsIDIxNCwgNjMsIDgxLCAyNDIsIDQwLCA1MywgMjQyLCAKKyAgICA0MCwgMjQ4LCAyMCwgMjA1LCA5NSwgMjQ4LCAyMCwgMTEyLCA3MywgMjI1LCAzOCwgMTIwLCA3MywgMjI1LCAzOCwgMjMzLCAKKyAgICAxNzcsIDIzOCwgMTk1LCAyMzMsIDMxLCAyMTUsIDk5LCAyMjQsIDE3NywgMjEwLCAxNTQsIDIxNiwgMTI4LCAyMTAsIDE1NCwgCisgICAgMjI1LCAxOSwgMjM4LCAxODksIDIxMywgMzcsIDIzOCwgMTg5LCAyMTUsIDc4LCAyNDEsIDgsIDIzNiwgMjQwLCAyMjUsIDE5LCAKKyAgICAyMTYsIDIzOSwgMjEzLCAzNywgMjE2LCAyMzksIDIyMCwgMTI0LCAyMTgsIDI0MCwgMjA4LCAyNDQsIDIxNiwgMjgsIDIyMSwgCisgICAgMTcwLCA1NCwgMjE2LCAyOCwgMjA2LCAxNjcsIDIwNiwgNTEsIDU0LCAyMTUsIDE0LCA1MywgMjE1LCAxNCwgMjA1LCA4MywgCisgICAgMjE1LCAxNCwgMjEzLCAxMDUsIDIxNSwgMTQsIDIxMywgMTA1LCA1MywgMjE1LCAxNCwgMjEzLCAxMDUsIDIwNSwgODMsIAorICAgIDIxNSwgMTQsIDI0NywgMTI5LCAyMDksIDEzOSwgMjI1LCAyMywgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIwOSwgMTM5LCAKKyAgICAyMTMsIDQxLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjEzLCAxNjYsIDgxLCA1MywgMjM4LCA0MywgODEsIDIyOCwgNTgsIAorICAgIDIxNiwgMjQxLCAyMDMsIDI0OCwgMTcxLCAyMDYsIDcsIDI0NywgMTMwLCAyMjgsIDc1LCAyMTUsIDk5LCAyNTAsIDE2MywgCisgICAgMjMzLCAzNCwgMjQ4LCAyMCwgMjM2LCAyMTksIDIwOSwgNzUsIDQ5LCA1MiwgMjQ4LCA3MCwgMywgMjE0LCA3MywgNTEsIDUyLCAKKyAgICAyNDgsIDcwLCAzLCAyMTQsIDczLCA1MywgMjE0LCA3OSwgODEsIDIxNCwgNzksIDIzOCwgNDMsIDgxLCAyMzgsIDQzLCAyMTQsIAorICAgIDc5LCA4MSwgMjA1LCAyMTYsIDIsIDIzOCwgODEsIDIxMywgMTA1LCAyMTUsIDE2MywgNTQsIDYzLCA5OCwgMjQ4LCAyMCwgCisgICAgNjMsIDg3LCAyNDgsIDIwLCAxMjgsIDI1MCwgMTY1LCAyMTMsIDEwNSwgMjEwLCAxNjcsIDI0NiwgMTExLCAyMDMsIDIyOCwgCisgICAgMTIwLCAyNTAsIDE2NCwgMjUxLCAxMjgsIDIwMiwgMjQ3LCAyNDYsIDY4LCAyMjEsIDE1NywgNTQsIDIwNywgMTY3LCAyNDEsIAorICAgIDI0NCwgMjI4LCA1MCwgMjAzLCAyNDgsIDIzNywgMjUsIDIxNCwgMjEyLCA4MSwgMTI2LCA3MywgMjE0LCAyMTEsIDIxNCwgCisgICAgOTAsIDIxNSwgMTQsIDIzNiwgMjI5LCA3MywgMjE0LCAyMTEsIDIzNywgNjEsIDczLCAyMTQsIDIxMSwgMTIwLCA3MywgMjE0LCAKKyAgICAyMTEsIDIzNiwgMjI5LCA3MywgODEsIDIzOSwgMTgwLCAyNDIsIDIzNCwgMjA1LCA5NCwgODMsIDIzNiwgMjI5LCAyNDAsIAorICAgIDE4MCwgMjIyLCA2NiwgMTMsIDIwOCwgMjQ0LCAyMDAsIDIzOCwgMjI3LCAxNjEsIDIzNiwgMTgxLCAyNTEsIDgsIDIyOCwgCisgICAgNDgsIDIwNSwgMjMyLCAyMjgsIDQ4LCAyMTAsIDE1NCwgMjI4LCA0OCwgMjE1LCAxMTMsIDIyNSwgMTksIDIyOCwgMTgsIAorICAgIDIxMywgMzcsIDIyOCwgMTgsIDIzNywgNzMsIDIwOCwgMzMsIDIyOCwgMTgsIDIxNSwgNzgsIDI0MSwgOCwgMjI4LCAxOCwgCisgICAgMjI4LCA4NywgMjA3LCAxMTUsIDIwNywgMTg0LCAyNTEsIDI0MSwgMjA3LCAxMTUsIDIwNywgMTg0LCAyMjgsIDg3LCA5LCAKKyAgICAyMzYsIDI0MiwgMjEwLCA4NCwgMjUxLCAyNDEsIDksIDIzNiwgMjQyLCAyMTAsIDg0LCAyMjAsIDExOCwgMTcsIDIxMCwgODUsIAorICAgIDIxOCwgMjM2LCAxNywgMjEwLCA4NSwgMjA3LCAyMTMsIDE5OSwgODEsIDIwNywgMjEzLCA4LCA0LCAxLCA3MCwgMjA3LCAKKyAgICAyMTMsIDE0OSwgMjA3LCAyMTMsIDE2NCwgMjA3LCAyMTMsIDE4NywgMjA3LCAyMTMsIDIxMCwgMTM1LCAyMDcsIDIxMywgCisgICAgMTkyLCAyMDcsIDIxMywgMjE5LCAxMTMsIDIwNywgMjEzLCA5MywgNTQsIDIwNywgMjEzLCAyMjEsIDE1NiwgMjA3LCAyMTMsIAorICAgIDIzOCwgMTIyLCA1NCwgMjA3LCAyMTMsIDQ5LCAyMTYsIDExNSwgMjA3LCAyMTMsIDUxLCAyMTYsIDExNSwgMjA3LCAyMTMsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE0LCAyMDgsIDQsIDE5OSwgODEsIDIwOCwgNCwgMTAyLCAyMDgsIDQsIDEwNSwgMjA4LCA0LCAKKyAgICAxNDcsIDIwOCwgNCwgMTQ5LCAyMDgsIDQsIDE2NCwgMjA4LCA0LCAxODcsIDIwOCwgNCwgMjEwLCAxMzUsIDIwOCwgNCwgCisgICAgMTkyLCAyMDgsIDQsIDIxOSwgMTEzLCAyMDgsIDQsIDkzLCA1NCwgMjA4LCA0LCAyMjEsIDE1NiwgMjA4LCA0LCAyMzgsIAorICAgIDEyMiwgNTQsIDIwOCwgNCwgNDksIDIxNiwgMTE1LCAyMDgsIDQsIDUxLCAyMTYsIDExNSwgOCwgMjA4LCA0LCA0LCAxLCA2MiwgCisgICAgOCwgMjA4LCA0LCA0LCAxLCA3MiwgOCwgMjA4LCA0LCA0LCAxLCA3NCwgOCwgMjA4LCA0LCA0LCAxLCAyMDAsIDE5NSwgOCwgCisgICAgMjA4LCA0LCA0LCAxLCAyMTEsIDIxOCwgOCwgMjA4LCA0LCA0LCAxLCAyMzQsIDI0NywgOCwgMjA4LCA0LCA0LCAxLCAyMjcsIAorICAgIDExOCwgOCwgMjA4LCA0LCA0LCAxLCAxNTYsIDgsIDIwOCwgNCwgNCwgMSwgMjIzLCAyNDMsIDgsIDIwOCwgNCwgNCwgMSwgCisgICAgMjIwLCAyMTQsIDgsIDIwOCwgNCwgNCwgMSwgMjE2LCAyMjYsIDgsIDIwOCwgNCwgNCwgMSwgMjEyLCAxMjIsIDgsIDIwOCwgCisgICAgNCwgNCwgMSwgMjA3LCA4MywgMjM4LCA2MCwgNTQsIDI0NiwgODAsIDU0LCAyNDIsIDIxOSwgNTQsIDIzNiwgMjA5LCAyMzYsIAorICAgIDIxMywgNTQsIDIyNCwgMTU2LCA1NCwgMjIxLCAxNzEsIDU0LCAyMjAsIDE0MSwgNTQsIDIxNiwgNSwgNTQsIDIxMiwgMTQ5LCAKKyAgICA1NCwgMjAwLCAyNDYsIDU0LCAyMjAsIDgsIDIxMCwgNTEsIDU0LCAyNDAsIDE4OSwgNTQsIDIzOCwgNjEsIDU0LCAyMjYsIAorICAgIDE0MiwgNTQsIDIwNCwgMjA4LCA1NCwgMjM5LCAxNjMsIDU0LCAyMzUsIDI0NiwgMjE2LCA0MCwgNTQsIDIxNiwgMiwgNTQsIAorICAgIDIzNSwgNDUsIDU0LCAyNTAsIDEyOSwgNTQsIDIzMywgMTAzLCA1NCwgMjQ3LCA3MSwgNTQsIDIyNCwgMTQ2LCAyMDUsIDEzOCwgCisgICAgNTQsIDIwOCwgMjI1LCA1NCwgMjA2LCAxNjQsIDU0LCAyMjgsIDEwMiwgMjEyLCAxNDksIDU0LCAyMDQsIDE4OCwgMjI0LCAKKyAgICAxNTYsIDU0LCAyMTgsIDIyMiwgMTM0LCA1NCwgMjIyLCAxNzgsIDU0LCAyMTIsIDE3MiwgNTQsIDIyNSwgNjcsIDU0LCAzOCwgCisgICAgNDksIDIzNCwgMTYxLCA1NiwgMzgsIDUxLCAyMzQsIDE2MSwgNTYsIDM4LCAxNjgsIDgzLCAyMjQsIDE3NywgMjE2LCAyNDIsIAorICAgIDM4LCAyMDksIDI1MCwgODMsIDIyNCwgMTc3LCAyMTYsIDI0MiwgMzgsIDI1MSwgNDcsIDU1LCA1NiwgMzgsIDI0NiwgMTEyLCAKKyAgICA1NSwgNTYsIDM4LCA0OSwgNTUsIDU2LCAzOCwgNTEsIDU1LCA1NiwgMzgsIDIxMywgMjcsIDIxNiwgMjQyLCAzOCwgMjQ2LCAKKyAgICAxMTIsIDIxMywgMjcsIDIxNiwgMjQyLCAzOCwgMjUxLCA0NywgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAxMjYsIDE5MCwgNTYsIAorICAgIDM4LCAyMzYsIDIyOSwgMTkwLCA1NiwgMzgsIDIzOCwgMTc1LCAyNDYsIDE1NSwgMzgsIDIzOCwgMTc1LCAyMDgsIDE5MywgCisgICAgMzgsIDIzOCwgMTc1LCAyNDEsIDY0LCAzOCwgMjM4LCAxNzUsIDI0NiwgMTU2LCAyNDksIDEyNCwgMzgsIDQ5LCA1MSwgNTUsIAorICAgIDU2LCAzOCwgMjM4LCAxNzUsIDIxMSwgMjA5LCAzOCwgMjM4LCAxNzUsIDIyNiwgMjEwLCAzOCwgMjM4LCAxNzUsIDIwMywgCisgICAgMjE4LCAyMTUsIDk2LCAyMDUsIDk4LCAzOCwgMjEzLCAxMDYsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgNTMsIDgzLCAyMDgsIAorICAgIDQ3LCAyMTYsIDI0MiwgMzgsIDI1MSwgNTcsIDk5LCAzOCwgMjA1LCA4MywgMjAzLCAyNTAsIDM4LCAyMDEsIDI4LCAyNDgsIAorICAgIDUxLCA1NiwgMzgsIDk4LCA1NSwgMjE2LCAyNDIsIDM4LCAxNjgsIDUzLCAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDg3LCAKKyAgICAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NSwgMzgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NSwgMzgsIDQ5LCAKKyAgICA1NSwgNTcsIDM4LCA1MSwgNTUsIDU3LCAzOCwgMjUwLCAxNjYsIDU2LCAyNTEsIDI0NywgMjE3LCAxMTcsIDI1MSwgMjMxLCAKKyAgICAyMDUsIDE4NiwgMjA2LCAxMDcsIDIwOCwgMTMsIDE3NSwgNiwgMjQ3LCAyMjMsIDI0MSwgMTU1LCAyNDcsIDYxLCAyNDcsIAorICAgIDU2LCAyMjQsIDE3NywgOTksIDI0NywgMTMxLCAyMTcsIDExNywgMjQ3LCAxODIsIDIwNCwgNCwgMjM4LCA2MiwgMjQzLCA1MCwgCisgICAgMjExLCAyMDYsIDI0MSwgMTU1LCAyMzcsIDE3NywgMTM1LCA0LCAyMzYsIDE1NiwgMTM1LCA2LCAyMzQsIDI0NywgMjQ4LCAKKyAgICAxNDIsIDYsIDIzNCwgMjQ3LCAxNzUsIDYsIDIzNCwgMjQ3LCAyMTUsIDEzMCwgMjQzLCA1MCwgMjE1LCAxMzAsIDI0MywgNTEsIAorICAgIDExOSwgMTIwLCAyMTUsIDIwNCwgMTM1LCA2LCA3MCwgMjQ4LCAxNDIsIDYsIDcwLCAxMzUsIDYsIDE1NiwgMTM1LCA0LCAKKyAgICAxNTYsIDIyNSwgMTkzLCA2OCwgMjQ5LCA3NywgOTksIDE3NSwgNiwgMjIwLCAyMTQsIDIxOCwgOTEsIDU0LCAyMDksIDEsIAorICAgIDIxMywgMTc4LCAyNDMsIDE4LCAxMzUsIDYsIDIxNiwgMjI2LCAxNzUsIDYsIDIxNiwgMjI2LCAxNzUsIDYsIDIxNCwgMTY3LCAKKyAgICAxMzUsIDYsIDE0NiwgMjQ4LCAxNDIsIDYsIDE0NiwgMTc1LCA2LCAxNDYsIDIxNSwgMjEsIDIwNiwgMjU1LCAyMTMsIDExOCwgCisgICAgMjEwLCAxNDYsIDgxLCAyMDYsIDE3NiwgNTQsIDIwNSwgMTI4LCAxMzQsIDU0LCAyMDMsIDQzLCAxNzUsIDYsIDE5OSwgMTU3LCAKKyAgICAyMTcsIDIsIDU0LCAyMTcsIDEwNywgNTQsIDIyOCwgNTAsIDIxNywgMTA3LCA1NCwgMjQ4LCAxNDIsIDYsIDE5OSwgMTU3LCAKKyAgICAyMDQsIDE4NSwgMzEsIDQsIDEsIDIyOCwgNDEsIDIyNiwgMjUxLCA1NCwgMjUxLCA2NiwgNTQsIDEzNSwgNiwgMjUwLCAxMDMsIAorICAgIDI0OCwgMTQyLCA2LCAyNDcsIDIyMywgMjM4LCA4NiwgOTksIDEzNSwgNCwgNzIsIDEzNSwgNiwgNzIsIDEzNSwgNiwgMjM4LCAKKyAgICA1LCAyMDQsIDE4NSwgNiwgMjM4LCA1LCAxMzUsIDYsIDIyMywgMjQzLCAxMzUsIDQsIDc0LCAxNDAsIDk5LCAyNDgsIDIxMSwgCisgICAgOTksIDIzNSwgMTQ4LCA5OSwgMjQyLCAyNCwgOTksIDIyOCwgOTIsIDIwOCwgMjU1LCAyMTIsIDIyOCwgNiwgMjE0LCAxNjcsIAorICAgIDIzNywgMTgwLCA1NCwgMTc1LCA0LCAyMTUsIDIwNCwgMTc1LCA0LCAyMzYsIDYwLCAxNzUsIDYsIDIzNiwgNjAsIDE3NSwgNiwgCisgICAgMjE1LCAyMDQsIDE3NSwgMjIwLCAyMTMsIDIwNywgMjMxLCAyMDQsIDE4NSwgNDMsIDYsIDIzNiwgMTU2LCAyMDQsIDE4NSwgCisgICAgNDMsIDYsIDE1NiwgMjEzLCAxMDUsIDQzLCA2LCAxNTYsIDIwNCwgMTg1LCA0MywgNiwgMjAwLCAxMjMsIDE3NSwgMzksIDYsIAorICAgIDI0MiwgMTUzLCAxNzUsIDM5LCA0LCAyNDIsIDE1MywgMTc1LCAzOSwgNCwgNzIsIDE3NSwgMzksIDQsIDcwLCAxNzUsIDM5LCAKKyAgICA0LCAyMjcsIDI1MSwgMjE0LCAyNDUsIDIyNCwgMTc2LCAyMDQsIDE4NSwgMjUxLCA4OSwgMjE2LCAyOCwgNTQsIDI1MSwgCisgICAgMTUzLCAyMDQsIDE4NSwgNCwgMjM4LCA1LCAxNiwgMzYsIDIxMiwgMjIsIDIwOCwgMjU1LCAyMDEsIDE2NCwgMjM2LCAyMTksIAorICAgIDExMiwgMjEwLCAxMzEsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMTksIDEwNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIwNiwgMTU3LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjA2LCA3NCwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjAsIAorICAgIDIwNiwgNzEsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMzcsIDEwNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjAsIDIzNywgCisgICAgMTA2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyNiwgMjM3LCAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjM2LCAyMjksIAorICAgIDIzNywgMTA2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjA5LCA5NiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzcsIDYxLCAKKyAgICAyMDksIDk0LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTI2LCAyMzgsIAorICAgIDIyNSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzcsIDYxLCAyMzgsIDIyNSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMTAsIDEzNiwgCisgICAgMjM4LCAyMjUsIDIzNiwgMjE5LCAyMTgsIDkyLCAxMDIsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDIsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxMDUsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDcsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDksIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxNjQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxODcsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMTAsIDEzNSwgMjEyLCAyNDAsIAorICAgIDIxOCwgOTMsIDE5MiwgMjEyLCAyNDAsIDIxOCwgOTMsIDIxOSwgMTEzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjA2LCAxNjYsIAorICAgIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzgsIDE5OSwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNCwgMTY0LCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMjM3LCAxMDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODIsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIAorICAgIDYxLCAyMzMsIDgyLCAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUwLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTAyLCAKKyAgICA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTA1LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTQ3LCA0LCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMTQ5LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTY0LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTg3LCA0LCAyMTIsIAorICAgIDI0MCwgMjE4LCA5MywgMjEwLCAxMzUsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxOTIsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAKKyAgICAyMTksIDExMywgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNiwgMTY2LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM4LCAxOTksIAorICAgIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDQsIDE2NCwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgMTA0LCA0LCAyMTIsIAorICAgIDI0MCwgMjE4LCA5MywgMTEyLCAyMzMsIDgyLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCA2MSwgMjMzLCA4MiwgNCwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjA2LCA1MCwgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjA2LCA1MSwgMjQ3LCAKKyAgICAyMjQsIDI0MiwgMTUzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCA2MSwgMjA2LCA1MCwgMjEyLCAyNDAsIDIxOCwgOTMsIAorICAgIDIwNiwgMTY3LCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgMjEzLCAxMDUsIDExMiwgMjMzLCA4MiwgOCwgNCwgMSwgCisgICAgMjEzLCAxMDUsIDI0NywgMjIzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjA5LCAxMDYsIDIyNSwgNjIsIDE5LCAyMTIsIDI0MCwgCisgICAgMjE4LCA5MywgMjM3LCAxMDUsIDIzOSwgMjAsIDE5LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCAxMDUsIDIwNiwgNTAsIAorICAgIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODMsIDIwNiwgNTAsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTk5LCA4MiwgCisgICAgMjA2LCA3MSwgMjA0LCAxODUsIDE3LCAxMDUsIDIwNCwgMTg1LCAxNywgMTQ3LCA5OCwgNDgsIDE4MiwgNDgsIDg3LCA0OCwgCisgICAgMTkxLCA0OCwgNDksIDUxLCA0OCwgMTE1LCAxMjcsIDQ4LCAxNTcsIDIwMSwgNDgsIDQ4LCAxNTcsIDIzOSwgMTQsIDQ4LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0OCwgOTgsIDU1LCAzLCA5NywgODcsIDU1LCAzLCAKKyAgICA5NywgOTgsIDIwMSwgNzgsIDQ4LCA4NywgMjAxLCA3OCwgNDgsIDk4LCAxMjAsIDIzNCwgMTM0LCA0OCwgMTgyLCAxMjAsIAorICAgIDIzNCwgMTM0LCA0OCwgODcsIDEyMCwgMjM0LCAxMzQsIDQ4LCAxOTEsIDEyMCwgMjM0LCAxMzQsIDQ4LCA5OCwgNTUsIDMsIAorICAgIDIwNywgNiwgODcsIDU1LCAzLCAyMDcsIDYsIDk4LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTgyLCA1NSwgMjM2LCAyMDEsIDE0OCwgCisgICAgODcsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxOTEsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxMTUsIDEyNywgNTUsIDMsIDI0OSwgNjQsIAorICAgIDk4LCA1NSwgMywgMTE3LCA4NywgNTUsIDMsIDExNywgOTgsIDU1LCAzLCAyMjQsIDc0LCA4NywgNTUsIDMsIDIyNCwgNzQsIAorICAgIDQ5LCA1MSwgMjAxLCA3OCwgNDgsIDQ5LCA1MSwgNTUsIDMsIDk3LCAxOTEsIDE5OSwgMjcsIDQ4LCAxODIsIDU1LCAzLCAKKyAgICAyMDUsIDIyNCwgMjI1LCAxOCwgMTgyLCA1NSwgMywgMjA1LCAyMjQsIDIxMywgMzUsIDE5MSwgNTUsIDMsIDIwNSwgMjI0LCAKKyAgICAyMjUsIDE4LCAxOTEsIDU1LCAzLCAyMDUsIDIyNCwgMjEzLCAzNSwgODcsIDU1LCAzLCAyNDMsIDE2LCAyMzksIDE2NSwgCisgICAgMTkxLCA1NSwgMywgMjQzLCAxNiwgMjI1LCAxOCwgMjUxLCA0NywgMjA1LCAxNTgsIDIxMCwgMTcwLCA0OCwgMjQ2LCAxMTIsIAorICAgIDIwNSwgMTU4LCAyMTAsIDE3MCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIDIwNSwgMTg2LCAxNjgsIDE0OCwgOTgsIDU1LCAKKyAgICAyMDUsIDE4NiwgMjQ5LCA3NywgMTE5LCA4NywgNTUsIDIwNSwgMTg2LCAxNDgsIDI1MSwgNDcsIDE3NiwgMjQ2LCAxNTYsIAorICAgIDQ4LCAyNDYsIDExMiwgMTc2LCAyNDYsIDE1NiwgNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAyMDMsIDIxNiwgOTgsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgMzUsIDE4MiwgMjM0LCAxNjEsIDMsIAorICAgIDE1NCwgMjI1LCAxOCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjE2LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAKKyAgICAxNjUsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCAzNSwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMjUsIDE4LCA4NywgCisgICAgNTUsIDExOSwgOTgsIDQ4LCAxODIsIDU1LCA5OCwgNzYsIDE5MSwgNDgsIDk4LCA1NSwgMTE5LCA4NywgNDgsIDk4LCAyMTYsIAorICAgIDE4OCwgMjUwLCAxOTksIDE4MiwgMjE2LCAxODgsIDI1MCwgMTk5LCA4NywgMjE2LCAxODgsIDI1MCwgMTk5LCAxOTEsIDIxNiwgCisgICAgMTg4LCAyNTAsIDE5OSwgOTgsIDIzNCwgMTYxLCAxMTksIDg3LCAyMzQsIDE2MCwgODcsIDIzNCwgMTYxLCAxMTksIDk4LCAKKyAgICAyMzQsIDE2MCwgOTgsIDUzLCA1NSwgMywgOTcsIDQ5LCA1MSwgNTMsIDU1LCAzLCA5NywgODcsIDUzLCA1NSwgMywgOTcsIAorICAgIDk4LCA1MywgNDgsIDE4MiwgNTMsIDQ4LCA4NywgNTMsIDQ4LCAxOTEsIDUzLCA0OCwgNDksIDUxLCA1MywgNDgsIDExNSwgCisgICAgMTI3LCA1MywgNDgsIDE1NywgMjAxLCA0OCwgNTMsIDQ4LCAxNTcsIDIzOSwgMTQsIDUzLCA0OCwgMjA4LCAyNTQsIDIzOSwgCisgICAgMTQsIDUzLCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDUzLCA0OCwgOTgsIDIwNSwgODMsIDQ4LCA4NywgMjA1LCA4MywgNDgsIAorICAgIDk4LCAyMDgsIDE4NiwgNDgsIDg3LCAyMDgsIDE4NiwgNDgsIDE4MiwgNTUsIDMsIDUzLCA5NywgMTkxLCA1NSwgMywgNTMsIAorICAgIDk3LCA5OCwgMjQxLCAyNDMsIDQ4LCAxODIsIDI0MSwgMjQzLCA0OCwgODcsIDI0MSwgMjQzLCA0OCwgMTkxLCAyNDEsIDI0MywgCisgICAgNDgsIDk4LCA1NSwgMjA1LCAxODYsIDE0OCwgODcsIDU1LCAyMDUsIDE4NiwgMTQ4LCA5OCwgNjQsIDQ4LCAxODIsIDY0LCAKKyAgICA0OCwgODcsIDY0LCA0OCwgMTkxLCA2NCwgNDgsIDE4MiwgNjQsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDY0LCA1NSwgCisgICAgMjE3LCA3OSwgMjE2LCA2NCwgMTgyLCA2NCwgNTUsIDIxNywgNzksIDIxNiwgNjUsIDMsIDIzMywgMTc3LCAxNDgsIDE4MiwgCisgICAgNjQsIDU1LCAyMTcsIDc5LCAyMTYsIDY1LCAzLCA4MywgMTQ4LCAxODIsIDY0LCA1MywgNDgsIDE4MiwgNjQsIDUzLCA1NSwgCisgICAgMjE3LCA3OSwgMjE2LCA2NCwgODcsIDY0LCA1NSwgMjM2LCAyMDEsIDIwMSwgMTAyLCAxNTcsIDIwMSwgNDgsIDU1LCAyMDUsIAorICAgIDE4NiwgMjQzLCAxNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAyMDUsIDE4NiwgMjQzLCAxNSwgMTE1LCAxMjcsIDY0LCA0OCwgCisgICAgNTEsIDU1LCAzLCA0LCAyNDYsIDE1NSwgMTkxLCA1NSwgOTgsIDc2LCAxODIsIDQ4LCAxMjYsIDg3LCAyNTAsIDE5OSwgOTgsIAorICAgIDU1LCAzLCA4MywgOTcsIDg3LCA1NSwgMywgODMsIDk3LCA0OSwgNTEsIDU1LCAzLCA4MywgOTcsIDk4LCA1NSwgMywgNTMsIAorICAgIDgzLCA5NywgODcsIDU1LCAzLCA1MywgODMsIDk3LCA0OSwgNTEsIDU1LCAzLCA1MywgODMsIDk3LCA5OCwgMjE3LCA1MSwgCisgICAgNDgsIDg3LCAyMTcsIDUxLCA0OCwgNDksIDUxLCAyMTcsIDUxLCA0OCwgMzYsIDI1MSwgMTI0LCAyNDYsIDY1LCAyMTYsIAorICAgIDEwOCwgMjQxLCA0OCwgMjA2LCA5NywgMjM4LCAzOCwgMjA2LCA5NywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMzgsIDM5LCAKKyAgICAyMzgsIDE4MSwgMjEwLCAxNDEsIDIyOCwgMTA2LCAyMjAsIDE1MiwgMjM4LCAyMDIsIDIxNywgMTE3LCAyMTgsIDIxNSwgCisgICAgMjUxLCA4NiwgMjM4LCAyMDIsIDIxNywgMTE3LCA0LCAyMzgsIDIwMiwgMjE3LCAxMTcsIDI0MywgNDQsIDI1MCwgMTg5LCAKKyAgICAyMjIsIDQ0LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MywgNDYsIDI1MCwgMTg5LCAyMjIsIDQ0LCA0LCAyNDMsIDQ0LCAyNTAsIAorICAgIDE4OSwgMjIyLCA0NCwgMjM4LCAxNzEsIDc2LCAyMTQsIDI0NywgMjIwLCAyMTMsIDIxNSwgMSwgMjIwLCAyMTMsIDI0MywgCisgICAgMjEsIDIyMCwgMjEzLCAyMDcsIDIzMSwgMjIxLCAxNTcsIDU0LCAyMjEsIDE1NSwgNTQsIDczLCAyMTUsIDExMywgMjQwLCAKKyAgICAyMzUsIDIwOSwgNzUsIDIxMCwgMTQyLCAyMjEsIDE1NiwgMjUwLCAxNjYsIDIxNywgNDMsIDIxMywgMjcsIDIxNywgNDMsIAorICAgIDI0OCwgMjEsIDIxNywgNDMsIDUyLCAyMTIsIDIzNCwgMjQyLCAyMTAsIDIxMiwgMjM0LCAyMzYsIDIyMiwgMjEyLCAyMzQsIAorICAgIDIxNCwgMjQzLCAxMzgsIDIyOCwgOTQsIDUxLCAyNTEsIDcwLCAyNTEsIDcwLCAyMjIsIDczLCAyNTEsIDcwLCAyMDgsIDIyNCwgCisgICAgMjUxLCA3MCwgMjQwLCAyMzcsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQwLCAyNDEsIDIxNiwgMTIxLCAxMzgsIDIxOCwgMjE1LCAKKyAgICAyMTYsIDEyMSwgMTM4LCAyMjQsIDk4LCAyNTEsIDc5LCAyMjQsIDk4LCAyMTcsIDMzLCAyMjgsIDU1LCAyMDMsIDI0MSwgCisgICAgMjI4LCA2OSwgNTMsIDIyOCwgNjksIDIwNSwgODMsIDIyOCwgNjksIDI0MywgMzgsIDIyOCwgNjksIDIwNywgMjAzLCAyMjgsIAorICAgIDY5LCAyMDIsIDE4MSwgMjI4LCA2OSwgMjQ2LCAxMTIsIDIyOCwgNjksIDI0NiwgMTEyLCAyNDMsIDM4LCAyMjgsIDY5LCAKKyAgICAyNTEsIDQ3LCAyNDMsIDM4LCAyMjgsIDY5LCAyMDYsIDk2LCAyNDgsIDI1NCwgMjEzLCAyMDAsIDIxNCwgMjQ0LCA3MywgCisgICAgMjIxLCAxNTYsIDIzOCwgNDYsIDIzNSwgMjUyLCAyMTQsIDI0NCwgMjMzLCAxOTIsIDIwNSwgMjQxLCAyMTcsIDQzLCAyMTMsIAorICAgIDEwNSwgMjA1LCAyNDAsIDIyOCwgNTAsIDIyNSwgNDcsIDIxMiwgMTIyLCAyMDksIDE0MSwgMjAxLCA3NywgMjAwLCAyMjYsIAorICAgIDIxNSwgMSwgMjE4LCAyMTUsIDIwNSwgMjQwLCAyMjEsIDE1NywgMjA1LCAyNDAsIDI1MCwgMTU5LCAxNjAsIDEzOCwgMjE4LCAKKyAgICAyMTUsIDI1MCwgMTU5LCAxNjAsIDEzOCwgMjUxLCA0LCAxNjAsIDEzOCwgMjUxLCA0LCAyNDcsIDI0NywgMjE4LCAyMTUsIAorICAgIDI1MSwgMjQwLCAxNjAsIDEzOCwgMjIwLCAyNiwgMjUxLCA0LCAyMTgsIDIyNCwgMjUxLCAyNDAsIDE2MCwgMTM4LCAyNTEsIAorICAgIDExNywgMTYwLCAxMzgsIDIxOCwgMjE1LCAyNTEsIDExNywgMTYwLCAxMzgsIDI1MSwgMTE3LCAxNjAsIDIxNywgMzQsIDE2MCwgCisgICAgMTM4LCAyMDUsIDgzLCAyMDUsIDI0MCwgMjUxLCAxMjUsIDE2MCwgMTM4LCAyMzgsIDExNywgMTM4LCAyMzUsIDI1MSwgMjM4LCAKKyAgICAxMTcsIDEzOCwgMjQxLCA0OSwgMjQ4LCAyMDUsIDI1MSwgNiwgMjA2LCAxMDcsIDIyNCwgMTg0LCAyMzUsIDI1MSwgMTYwLCAKKyAgICAxMzgsIDI1MSwgNCwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjA2LCAxMDcsIDIyOCwgMTMzLCAyMTcsIDExNywgMjI4LCAKKyAgICAxMzMsIDc2LCAyMTcsIDM0LCAyNTEsIDQsIDE2MCwgMTM4LCAyNDYsIDgwLCAyMzgsIDEyMSwgMjM4LCAxMjIsIDI0NiwgNzksIAorICAgIDIxMywgMjcsIDIyOCwgMTE4LCAxNjAsIDEzOCwgMjEzLCAyNywgMTYwLCAxMzgsIDI0MywgOSwgMTM4LCAyMzgsIDg1LCAKKyAgICAyMzgsIDEyMCwgMTM4LCAyMDgsIDExMCwgMjM4LCAxMjEsIDI0MSwgMTM3LCAxNjAsIDEzOCwgMTYwLCAyMDUsIDE4NiwgCisgICAgMjQ3LCAyMzUsIDI0MSwgMTU2LCAyMjIsIDczLCAyNDcsIDIzNCwgMjE0LCA3NywgMTYwLCAxMzgsIDIxOCwgMjE1LCAxNjAsIAorICAgIDEzOCwgMjMyLCAyMjMsIDEzOCwgMjE4LCAyMTUsIDIzMiwgMjIzLCAxMzgsIDIwOCwgNTQsIDIzOCwgMTE3LCAxMzgsIDIyNCwgCisgICAgMjQxLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMTYwLCAxMzgsIDIyNCwgMjQxLCAxMTksIDE2MCwgCisgICAgMTM4LCAyMzUsIDY3LCAxMTksIDE2MCwgMTM4LCAyMjQsIDI0MSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjM1LCAKKyAgICA2NywgMjQ3LCAyNDcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjIxLCAzNSwgMjI0LCAyNDAsIDIyMSwgMzUsIDIzNSwgNjYsIAorICAgIDI0OCwgMjA1LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjE4LCAyMTUsIDIyNCwgMjQwLCAyMTgsIDIxNSwgMjM1LCA2NiwgCisgICAgMjIwLCAyNiwgMjI0LCAyNDEsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMjM1LCA2NywgMjE4LCAyMjQsIDE2MCwgCisgICAgMTM4LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgCisgICAgMjIwLCAyNiwgMjI0LCAyNDEsIDIxOCwgMjI0LCAyMzgsIDExNywgMTM4LCAyMjAsIDI2LCAyMzUsIDY3LCAyMTgsIDIyNCwgCisgICAgMjM4LCAxMTcsIDEzOCwgMjI0LCAyNDEsIDIxNywgMzQsIDIzNSwgNjYsIDIzNSwgNjcsIDIxNywgMzQsIDIyNCwgMjQwLCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDIzNSwgNjYsIDIyMCwgMjYsIDIzNSwgNjcsIDIxOCwgMjI0LCAyMjQsIAorICAgIDI0MCwgMjE1LCAyOCwgMjA3LCAyNTAsIDIxNSwgMjksIDIxNywgMzQsIDE2MCwgMTM4LCAyMDcsIDI1MSwgMjE3LCAzNCwgCisgICAgMTYwLCAxMzgsIDIxNSwgMjksIDIxNywgMzQsIDIzOCwgMTE3LCAxMzgsIDIwNywgMjUxLCAyMTcsIDM0LCAyMzgsIDExNywgCisgICAgMTM4LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNSwgMzEsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjA3LCAyNTIsIDIwOCwgMywgCisgICAgMjE3LCAxMTcsIDIwNywgMjEyLCAyMTcsIDExNywgMjE4LCAyMTUsIDM1LCAyMDgsIDMsIDIxNywgMTE3LCAyMTgsIDIxNSwgCisgICAgMzUsIDIwNywgMjEyLCAyMTcsIDExNywgMjA4LCAzLCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgMjE3LCAKKyAgICAzNCwgMTYwLCAxMzgsIDIyMCwgMjYsIDM1LCAyMDgsIDMsIDc2LCAyMTgsIDIyNCwgMTYwLCAxMzgsIDIyMCwgMjYsIDM1LCAKKyAgICAyMDcsIDIxMiwgNzYsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjA4LCAzLCA3NiwgMywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIAorICAgIDIxMiwgNzYsIDMsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjIxLCAxNiwgMjIxLCAxNywgMjIxLCAxOCwgMjIxLCAxNywgMjAzLCAKKyAgICAyNDEsIDUyLCAyMjgsIDEzMywgMjE3LCAxMTcsIDUyLCAyMTcsIDI1LCAyMTcsIDExNywgNTIsIDIyOCwgMTMzLCA3NiwgCisgICAgMjE3LCAzNCwgMTYwLCAxMzgsIDUyLCAyMTcsIDI1LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDUyLCAyNDcsIDE0NCwgNTIsIAorICAgIDI0MiwgMjAyLCA0NCwgMjE1LCAxMTMsIDQ0LCAyMjEsIDE1NiwgNDQsIDIwNSwgMjMyLCA0NCwgMjQwLCAyMzUsIDIwOSwgCisgICAgNzUsIDQ0LCA3MywgMjE3LCA0MywgNDQsIDIxMywgMjcsIDIxNywgNDMsIDQ0LCAyNTAsIDE2NiwgMjE3LCA0MywgNDQsIAorICAgIDIzOCwgMTIxLCA0NCwgMjQxLCAyNDQsIDk1LCAyMTUsIDExMywgOTUsIDIyMSwgMTU2LCA5NSwgMjA1LCAyMzIsIDk1LCA3MywgCisgICAgMjE3LCA0MywgNTEsIDIwNywgMTcsIDQ5LCAyMDcsIDE3LCAxMjcsIDIwNywgMTcsIDExNSwgMjA3LCAxNywgMjUwLCAxNjksIAorICAgIDIyMSwgMTMxLCAyMDUsIDYxLCAyMzYsIDI0OCwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDUxLCAyMDQsIDE4NCwgNTMsIDgzLCAKKyAgICAyNDksIDc3LCA1MywgNTEsIDIwNCwgMTg0LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNCwgMjM4LCAyMTgsIDIxNSwgMjA1LCAKKyAgICA2MSwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMzYsIDI0OSwgMjIwLCAyOCwgNTMsIDgzLCAyNDksIDc3LCA1MywgNTEsIDIwNCwgCisgICAgMTg0LCAyMTUsIDI5LCAyMDMsIDI1MywgMjEzLCAxNDksIDIwNywgMjUxLCAyMDMsIDI1MywgMjEzLCAxNDksIDIxOCwgMjIxLCAKKyAgICAyMDgsIDE2LCAyMTcsIDExNywgMjQzLCA0NCwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE1LCAyMTgsIDIyMSwgMjA4LCAKKyAgICAxNiwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDMsIDQ0LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTYsIDIxNywgMzQsIAorICAgIDE2MCwgMTM4LCAyMTcsIDI1LCAyMTcsIDExNywgMjI4LCAxMzMsIDIxNywgMTE3LCAyMjEsIDIzLCAyMzQsIDk2LCAyNDMsIAorICAgIDU1LCAyMjIsIDEyNSwgMjI4LCA2NiwgMjAwLCAxNTUsIDIyMCwgMTMyLCAyMTgsIDIyMywgNTEsIDI1MSwgNzEsIDMsIDI1MCwgCisgICAgMjM2LCA1MSwgMjA1LCA5OCwgMjIwLCAyMTMsIDIyNCwgOTgsIDI1MSwgNzksIDIyMCwgMjEzLCAyMjQsIDk4LCAyMTcsIDMzLCAKKyAgICAyMjAsIDIxMywgMjI4LCA1NSwgMjIwLCAyMTMsIDIwMywgMjQxLCAyNDEsIDY1LCAyMTcsIDQzLCA3MywgMjE3LCA0MywgCisgICAgMjA4LCAxMTAsIDIxNywgNDMsIDI0MCwgMjM1LCAyMDUsIDIzMiwgMjQ4LCA3OSwgNDksIDIxOCwgMjIxLCAyMzcsIDE3OSwgCisgICAgMjEwLCAxNjYsIDIxNSwgMSwgNTEsIDIxOCwgMjIxLCAyMzcsIDE3OSwgMjEwLCAxNjYsIDIxNSwgMSwgNDksIDIxMCwgMTY2LCAKKyAgICAyMTUsIDEsIDUxLCAyMTAsIDE2NiwgMjE1LCAxLCAyMTMsIDEwNSwgMjA1LCAyNDEsIDIzOCwgMTIxLCAyNDIsIDE5NiwgCisgICAgMjI0LCA5OCwgMjE3LCAzMywgMjQyLCAxOTYsIDIyNCwgOTgsIDI1MSwgNzksIDUzLCAyMDgsIDIsIDUzLCAyMDcsIDIxMSwgCisgICAgNTMsIDIyOCwgNTUsIDUzLCAyMDMsIDI0MSwgMjE1LCAxNDAsIDE2MCwgMjYsIDIxNiwgMTIxLCAxMzgsIDIyNCwgMjQxLCAzLCAKKyAgICAyNDAsIDE4MiwgMjM1LCA2NywgMywgMjQwLCAxODIsIDIwMiwgMjQ2LCAyMjEsIDM1LCAyMjQsIDI0MCwgMjAyLCAyNDYsIAorICAgIDIyMSwgMzUsIDIzNSwgNjYsIDIyNCwgMjQxLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAyMzUsIDY3LCAKKyAgICAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDE2MCwgCisgICAgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIxNSwgMjgsIDE2MCwgMjA1LCAKKyAgICAxODYsIDIxNywgMzQsIDIwNywgMjUwLCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNSwgMzIsIDIxNywgMzQsIDIzOCwgMTIzLCAKKyAgICAyNDAsIDIwMiwgMjE4LCAyMTUsIDIwNywgMjUzLCAyMTcsIDM0LCAyMzgsIDEyMywgMjE4LCAyMTUsIDUyLCAyMjgsIDEzMywgCisgICAgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyMTgsIDIxNSwgNTIsIDIxNywgMjUsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIAorICAgIDIyOCwgMTMzLCA3NiwgMjE3LCAzNCwgMjE4LCAyMTUsIDE2MCwgMTM4LCA1MiwgMjE3LCAyNSwgNzYsIDIxNywgMzQsIDIxOCwgCisgICAgMjE1LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjM1LCA2NywgMjQ3LCAKKyAgICAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMTUsIDI5LCAyNDcsIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIAorICAgIDIwNywgMjUxLCAyNDcsIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIxOCwgMjE1LCAyMTgsIDIyMSwgMjA4LCAxNiwgCisgICAgMjE3LCAxMTcsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQzLCA0NiwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE1LCAyMTgsIAorICAgIDIxNSwgMjE4LCAyMjEsIDIwOCwgMTYsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDMsIAorICAgIDQ2LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTYsIDIxNywgMzQsIDIzOCwgMTIzLCA4MywgMjM4LCAxOTUsIDIyMSwgCisgICAgMjAyLCAyMzMsIDE3NywgMjM4LCAxOTUsIDExNSwgNTEsIDI0MSwgNzEsIDIzOCwgMTk1LCAxMjcsIDUxLCAyNDEsIDcxLCAKKyAgICAyMzgsIDE5NSwgMjM4LCAyMDIsIDc2LCAzLCAxNjgsIDIzMywgMTc3LCA5NywgMjM4LCAyMDIsIDc2LCAzLCA4MywgMjQ5LCAKKyAgICA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCA0LCAyMzgsIDIwMiwgNzYsIDMsIDgzLCAyNDksIAorICAgIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDIzOCwgMjAyLCA3NiwgMywgNzMsIDU2LCAyMzgsIAorICAgIDIwMiwgNzYsIDMsIDIxNiwgMjQ2LCA0LCAyMzgsIDIwMiwgNzYsIDMsIDIxNiwgMjQ2LCAyMzgsIDIwMiwgNzYsIDMsIDIwMywgCisgICAgMjUxLCAyMzgsIDIwMiwgNzYsIDMsIDEyMCwgMjMzLCAxNzcsIDIwOCwgMzQsIDI0MywgNDQsIDMsIDE2OCwgMjMzLCAxNzcsIAorICAgIDk3LCAyNDMsIDQ0LCAzLCA4MywgMjQ5LCA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCA0LCAKKyAgICAyNDMsIDQ0LCAzLCA4MywgMjQ5LCA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCAyNDMsIDQ0LCAKKyAgICAzLCAyMTYsIDI0NiwgNCwgMjQzLCA0NCwgMywgMjE2LCAyNDYsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjQ5LCAxMTQsIDIyMiwgCisgICAgNDMsIDI0MSwgNjYsIDU0LCAyMzgsIDIwNCwgNDgsIDIzMywgMTA5LCAxMTUsIDI1MCwgMjAyLCAxMjcsIDI1MCwgMjAyLCAKKyAgICAyMTQsIDI1MSwgMjE2LCA4LCAyMDEsIDc0LCAyMjQsIDE3NiwgNDksIDI0NywgNjQsIDUxLCAyNDcsIDY0LCA0OSwgMjM3LCAKKyAgICAzMSwgNTEsIDIzNywgMzEsIDI0OCwgOTMsIDUxLCAyNDIsIDIzNiwgMjQ4LCA5MywgNDksIDI0MiwgMjM2LCAyMDUsIDE1OCwgCisgICAgNTEsIDI0MiwgMjM2LCAyMDUsIDE1OCwgNDksIDI0MiwgMjM2LCAyMTMsIDEwNSwgMjE4LCAyMTUsIDU0LCA1MiwgMjI0LCAKKyAgICA0OSwgMjUwLCAyMzYsIDIxMSwgMTgzLCAyMTEsIDE5MSwgMjA2LCAxNzYsIDIxMywgMTc5LCAyMTUsIDcwLCAyMjgsIDk5LCAKKyAgICAyMDIsIDIyMiwgMjA4LCAxOTMsIDIxNSwgMTM0LCA3NiwgMjI4LCA2NSwgNTQsIDIwNCwgMTg1LCAyMTgsIDIxNSwgNTQsIAorICAgIDIwMSwgODQsIDIzMywgMTExLCAyMDUsIDE1OCwgNDksIDI0MywgMTUsIDIwNSwgMTU4LCA1MSwgMjQzLCAxNSwgMjQ4LCA5MywgCisgICAgNDksIDI0MywgMTUsIDI0OCwgOTMsIDUxLCAyNDMsIDE1LCAyMDUsIDE1OCwgMTY3LCAyMjgsIDY5LCAyNDgsIDkzLCAxNjcsIAorICAgIDIyOCwgNjksIDIzNiwgMTk2LCAyMDksIDQ4LCAxMTUsIDI1MCwgMjAzLCAyNDgsIDIwNiwgMTIwLCAyMzMsIDE3NywgMjQ5LCAKKyAgICA2NiwgMjE3LCAzNiwgMjI2LCAyMTQsIDIzOCwgMTEzLCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIxMywgNDYsIDIwMCwgMTk2LCAKKyAgICAyMjgsIDExOCwgMzUsIDIxMywgMTc2LCAyNDgsIDc4LCAyMjYsIDIxMiwgMjI1LCAyMywgMjUxLCA3MSwgMTU5LCAyMTMsIAorICAgIDQxLCAyNTEsIDcxLCAxNTksIDIzOCwgMTEzLCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIyNSwgMjgsIDI0OCwgMjE3LCAyMTMsIAorICAgIDI2LCAyNDIsIDE2MywgMjUxLCAxMjUsIDI1MCwgMjExLCAyMDcsIDExNCwgMjA1LCAxNDMsIDIxMiwgMTU0LCAyNDEsIDI4LCAKKyAgICAyMTcsIDI2LCAyNDMsIDU5LCAyMDYsIDIzNCwgMjA5LCA2MSwgMjQzLCA1LCAyNDMsIDQsIDI1MSwgMjIsIDIzNiwgMTc5LCAKKyAgICAxNiwgMjMzLCAxNiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMDgsIDE4NCwgMjE0LCA5NCwgMjUxLCAyMiwgMjM2LCAxNzksIAorICAgIDE2LCAyMTQsIDk1LCAyMzgsIDEyMywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDAsIDI0MSwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDEsIDY0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIyNywgMTUzLCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0NiwgMTU1LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgCisgICAgMTU2LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyMjcsIDE1MywgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyMDksIDc2LCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ5LCAxMjUsIDE0OCwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMDksIDc1LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0OSwgMTI0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIyNCwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIAorICAgIDIzNSwgNjYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgOTgsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgODcsIAorICAgIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgOTgsIDQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDg3LCA0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjQ5LCAxMjQsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMTI3LCAyMDcsIDE4LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDEzNywgMjA4LCAKKyAgICA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAxMjcsIDI0NywgMTI5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDI0MSwgMTM2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgMjA3LCAxOCwgMjI3LCAxNTMsIDI1MSwgCisgICAgMjIsIDIzNiwgMTc5LCAxNiwgMTgyLCAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDE4MiwgNDgsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMDcsIDE4LCAyMTYsIDI0NiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyNDEsIDE0OSwgMjA4LCA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAxMTUsIDI0NywgMTI5LCAyNTEsIAorICAgIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MSwgMTQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgMjA3LCAxOCwgCisgICAgMjI3LCAxNTMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTkxLCAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDE5MSwgNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA2MiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjQxLCAxMzcsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgNjUsIDIwMywgMjUxLCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyNywgMTU0LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIAorICAgIDE1NiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMTAsIDYsIDIyNywgMTUzLCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgNjIsIDIxNCwgOTQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDIwOCwgCisgICAgMTA5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0NiwgNzksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAKKyAgICAyMDcsIDE4LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgMTQ5LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDIwOCwgMTEwLCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyNywgMTU0LCAyNDEsIDc0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgCisgICAgMjEwLCA2LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDQ5LCAyMTAsIDYsIDIwOCwgODQsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjA1LCAyNDEsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjM1LCA2NywgMjQxLCA3NCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDcxLCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCAxNDksIAorICAgIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDE5OSwgMjYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjA4LCA4NSwgCisgICAgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjEwLCAxNjgsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgCisgICAgMTYsIDIxNCwgOTUsIDIxOCwgMjE1LCAyMzgsIDEyMywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMTQsIDc4LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgMjQ3LCAxMzAsIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDExNSwgMjQ3LCAxMzAsIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyOCwgNDEsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjEzLCA5MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTcsIDgzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDI1MSwgMTEzLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMzgsIDEyNSwgMjAzLCAyNTEsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjI4LCA0MiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE3LCA4NCwgMjAzLCAKKyAgICAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjUxLCAxMTIsIDIxOCwgMjE1LCAyNDcsIDcsIDgxLCA1MSwgMjUxLCA3MSwgCisgICAgMywgMTkxLCAxOTksIDI3LCA0OCwgMjA5LCAyMzIsIDE3NiwgMjQ4LCA3OCwgMjQ4LCAyMzEsIDk5LCA4MywgMjI0LCAxNzcsIAorICAgIDMsIDEwMSwgMjQwLCAxODIsIDIyOCwgNzUsIDk5LCAyNDMsIDM5LCAyMDMsIDI0OSwgOTksIDI0MSwgMSwgMjAzLCAyNDksIAorICAgIDk5LCAyMzgsIDE4MywgOTksIDI0MywgNzQsIDk5LCA2NCwgNTIsIDMsIDI0NywgNTYsIDgzLCAyMjQsIDE3NiwgMjM4LCAKKyAgICAxNTUsIDk5LCAyNTEsIDEwNCwgMjI2LCAyMTUsIDk5LCAyMzQsIDEwOSwgOTksIDQ0LCAyMzMsIDE3NywgMjQ5LCA3NywgMywgCisgICAgMjE4LCAyMTIsIDQ0LCAyMDUsIDk5LCAyMzksIDE2NywgMjQ4LCA0NiwgMjQ2LCAxNTYsIDMsIDIxOCwgMjE4LCA0OCwgMjAzLCAKKyAgICAyNDcsIDk5LCAyMjEsIDkyLCA5OSwgMjMzLCAyOSwgOTksIDIxNywgNTIsIDIzNCwgMjQ2LCA5OSwgMjE3LCA1MiwgMjI1LCAKKyAgICAxOTEsIDk5LCAyMTYsIDk4LCA5OSwgMjE2LCA5NywgOTksIDI0MSwgMTAsIDI0MiwgMTk0LCAxNiwgMjM2LCAyNDIsIDEwNSwgCisgICAgMjA5LCAyMSwgOTksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NCwgMjQxLCAxNjgsIDIxMCwgMTU1LCAyMjYsIAorICAgIDIxNSwgOTksIDIxNSwgMTYsIDIxNiwgMTk1LCAyMjAsIDIsIDIxNiwgMTk1LCAyMTUsIDExLCAyMTEsIDIxMCwgOTksIDI0NiwgCisgICAgMTI3LCAyMTEsIDIxMCwgOTksIDQ5LCAyMTYsIDExNiwgMjAzLCAyMjUsIDExNywgNDksIDIxNiwgMTE2LCAyMzgsIDMxLCAKKyAgICA0OSwgMjE2LCAxMTYsIDIyNCwgNTQsIDExNywgNTEsIDIxNiwgMTE2LCAyMDMsIDIyNSwgMTE3LCA1MSwgMjE2LCAxMTYsIAorICAgIDIzOCwgMzEsIDUxLCAyMTYsIDExNiwgMjI0LCA1NCwgMTE3LCA0OSwgNTIsIDI0OCwgNzAsIDIwMywgMjI1LCAyNDMsIDE1LCAKKyAgICA0OSwgNTIsIDI0OCwgNzAsIDIzOCwgMzEsIDQ5LCA1MiwgMjQ4LCA3MCwgMjI0LCA1NCwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIAorICAgIDcwLCAyMDMsIDIyNSwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAyMzgsIDMxLCA1MSwgNTIsIDI0OCwgNzAsIDIyNCwgCisgICAgNTQsIDI0MywgMTUsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDExNywgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAKKyAgICAxMDEsIDIxNSwgMTk2LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIyNCwgNTQsIDExNywgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDIzOCwgMzEsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDExNywgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAKKyAgICAxMDEsIDIxNSwgMTk2LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIyNCwgNTQsIDExNywgMjI4LCA3MCwgMjM4LCAzMSwgCisgICAgMjMzLCAxNzcsIDIyNCwgMTc3LCAyMzgsIDMxLCAyMDMsIDIyNSwgNDksIDIxNywgMzQsIDIyNCwgNTQsIDUxLCAyNDIsIAorICAgIDE5NiwgMjQ4LCA3MCwgMjExLCAxOTIsIDIwMywgMjI1LCA1MSwgMjE3LCAzNCwgMjI0LCA1NCwgNDksIDI0MiwgMTk2LCAKKyAgICAyNDgsIDcwLCAyMTEsIDE5MiwgMjA3LCAyMzIsIDIwNSwgMTU3LCAyMDcsIDIzMiwgMjQ4LCA5MiwgMjA1LCAxNTgsIDUyLCAKKyAgICAxNTksIDI0OCwgOTMsIDUyLCAxNTksIDI0OCwgOTMsIDUyLCAyNDgsIDcwLCAxMTksIDIwNSwgMTU4LCA1MiwgMTU5LCA0MiwgCisgICAgMTYsIDI0OCwgOTIsIDQ5LCA4MywgMTAwLCAyMjQsIDE3NiwgNTEsIDgzLCAxMDAsIDIyNCwgMTc2LCAyMzMsIDE3NywgMjExLCAKKyAgICAyMjgsIDIyNCwgMTc1LCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgMTc0LCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgCisgICAgMTczLCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgMTcyLCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDUsIDE1OCwgCisgICAgMjEzLCA0NiwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjQ4LCA5MywgMjEzLCA0NiwgMjQxLCAxMjgsIDE2LCAxNjIsIAorICAgIDgzLCAzLCAyNDYsIDE1NSwgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc3LCAzLCAyNDYsIDE1NSwgMjQxLCAKKyAgICAxMjgsIDE2LCAxNjIsIDExNSwgMjYsIDIzMywgMTc3LCAzLCAyNDYsIDE1NSwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAzLCAKKyAgICAyMDUsIDk4LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDIwNSwgOTgsIDI0MSwgMTI4LCAxNiwgCisgICAgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NywgMywgMjA1LCA5OCwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjAxLCA3NywgCisgICAgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc3LCAzLCAyMDEsIDc3LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTE1LCAKKyAgICAyNiwgMjMzLCAxNzcsIDMsIDIwMSwgNzcsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NiwgMjQxLCAxMjgsIAorICAgIDE2LCAxNjIsIDExNSwgMjYsIDIzMywgMTc2LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDUsIDE1OCwgMjI1LCAyOCwgCisgICAgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjQ4LCA5MywgMjI1LCAyOCwgNTIsIDIzNiwgMjU1LCAyMTMsIDExMCwgOTksIAorICAgIDIzOCwgMjE4LCA5OSwgODMsIDIyNCwgMTc3LCAyMzgsIDMxLCAyMjIsIDE0LCAyNDgsIDU3LCAyMjIsIDE0LCAxNjgsIDExOSwgCisgICAgMjA5LCAyNDksIDIyMiwgMTQsIDIwOSwgMjUwLCAxMTksIDIyNCwgODksIDIyMiwgMTQsIDE2OCwgMTE5LCAxMjAsIDIwOSwgCisgICAgMjM1LCAyMjIsIDE0LCAxMjAsIDIwOSwgMjM2LCAxMTksIDIyNCwgODksIDIyMiwgMTQsIDEyMCwgMjA5LCAyMzYsIDIyNywgCisgICAgMTYyLCAyMjIsIDE0LCAyMDUsIDc5LCAyMjIsIDE0LCAyMDYsIDEzOCwgMjIyLCAxNCwgMjE2LCAzNSwgMjM5LCAxOCwgMjM1LCAKKyAgICA1OSwgMjM2LCAxNzMsIDIwNSwgMTU4LCAyMTYsIDExNSwgMjQ4LCA5MywgMjE2LCAxMTUsIDIwNSwgMTU4LCAyNDIsIDE5NiwgCisgICAgMTU5LCAyNDgsIDkzLCAyNDIsIDE5NiwgMTU5LCAyMDUsIDE1OCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMjQ4LCA5MywgCisgICAgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNjQsIDIwNSwgMTE0LCAyNDgsIDIxNywgMjEzLCAyNywgMywgMjQ2LCAxNTUsIAorICAgIDIwOCwgNjYsIDIzNywgNDIsIDI1MSwgMjU1LCAyNDIsIDE5MywgMjM4LCAyMDMsIDIyOCwgNTUsIDI0MSwgMTY4LCAyMzgsIAorICAgIDM1LCA5OSwgNjMsIDIxMywgNDEsIDUzLCAyMDUsIDk4LCA2MywgMjI1LCAyMywgNTMsIDIwNSwgOTgsIDYzLCAyMDMsIDIyNywgCisgICAgNTMsIDIwNSwgOTgsIDYzLCAyMzksIDE2NiwgNTMsIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCA1MywgMjA1LCA5OSwgMywgODMsIAorICAgIDE0OCwgNjMsIDIyNSwgMjMsIDUzLCAyMDUsIDk5LCAzLCA4MywgMTQ4LCA2MywgMjEzLCA0MSwgMjA1LCA5OSwgMywgNTMsIAorICAgIDgzLCAxNDgsIDI1MSwgMTQ2LCAyNDYsIDExMywgMjA4LCA3MywgMjA1LCAyMzMsIDI0NiwgMTEzLCAyMzMsIDExMiwgMywgCisgICAgMjM3LCAyMiwgMjEyLCAxMSwgNjMsIDIyMiwgNjYsIDIyNSwgMjMsIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMTMsIDQxLCAKKyAgICAyMDUsIDk4LCA2MywgMjIyLCA2NiwgMjAzLCAyMjcsIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMzksIDE2NiwgMjA1LCA5OCwgCisgICAgNTMsIDgzLCAxNDgsIDYzLCA1MiwgMzYsIDIwOCwgNzYsIDYzLCAyNDYsIDE1NiwgMzYsIDIxMywgMTgwLCAyMTUsIDUyLCAKKyAgICA5OSwgMjE1LCA1MiwgMjE3LCA3NywgOTksIDIxNSwgNTIsIDIxNywgNzksIDk5LCAyMTUsIDUyLCAyMDksIDcyLCA5OSwgMTYsIAorICAgIDM2LCAyMTgsIDk3LCAxNiwgMzYsIDIwOCwgMTA1LCA3NiwgMjM0LCAxMzMsIDE2LCAzNiwgMjA4LCAxMDUsIDc2LCAyMDYsIAorICAgIDEyNiwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIwNiwgMTI2LCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjA1LCAxMTgsIDE2LCAKKyAgICAzNiwgMjM4LCAxNTgsIDE2LCAzNiwgMjUxLCAyNDMsIDE2LCAzNiwgMjQ4LCAyMzAsIDE2LCAzNiwgMjQ5LCAxMjMsIDE2LCAKKyAgICAzNiwgMjMzLCAxNzcsIDIwNywgMTksIDE2LCAzNiwgMjI0LCAxNzcsIDIzNywgMTM4LCAxNiwgMzYsIDgzLCAyMDcsIDE5LCAKKyAgICAxNiwgMzYsIDIzNiwgMjQyLCAyMzcsIDEzOCwgMTYsIDM2LCAyNDcsIDEyMSwgMjEzLCAxMDksIDE2LCAzNiwgMjEwLCAyOSwgCisgICAgMjE2LCAyNTQsIDE2LCAzNiwgMjEwLCAyOSwgMjI4LCAxMTcsIDE2LCAzNiwgMjQxLCAyMzksIDIyNCwgMTY3LCAyMzgsIDk2LCAKKyAgICAxNiwgMzYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDIsIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDEwNSwgMTYsIDM2LCAKKyAgICAyNDEsIDEwNywgMjQzLCAzNCwgMTQ3LCAxNiwgMzYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDksIDE2LCAzNiwgMTg5LCAyNTEsIAorICAgIDI0MywgMTYsIDM2LCAyMDcsIDEwOSwgMjI4LCAxODAsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMDUsIDExOSwgMjQ4LCAKKyAgICAxMzQsIDE2LCAzNiwgMjQ3LCAxNTYsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMjIsIDY1LCAxNiwgMzYsIDIwOCwgMCwgMTYsIAorICAgIDM2LCAyMzgsIDk2LCAxNiwgMzYsIDIzNywgOTcsIDIxMCwgMTU0LCAxNiwgMzYsIDIzNSwgNTgsIDIxMCwgMTU0LCAxNiwgCisgICAgMzYsIDIxMywgMTgxLCAyMTAsIDE1NCwgMTYsIDM2LCAyMDMsIDI0MCwgMjEwLCAxNTQsIDE2LCAzNiwgMjA4LCAyNDQsIDE2LCAKKyAgICAzNiwgMjQxLCAxNDYsIDI0OCwgMTM4LCA5OSwgMTc2LCAyNDgsIDc4LCAxNiwgMzYsIDIyMCwgNSwgMTYsIDM2LCAyNDEsIAorICAgIDE0NywgMjM2LCAyNDIsIDEwNSwgMTYsIDM2LCAyMDgsIDEsIDIzNiwgMjQyLCAxMDUsIDIxNywgMTMxLCAxMTcsIDIxNywgCisgICAgMTMxLCAyNDcsIDMyLCAyMTcsIDEzMSwgMjM2LCAyNDUsIDIxNywgMTMxLCAyMjgsIDUwLCAyMzYsIDI0NSwgMjE3LCAxMzEsIAorICAgIDI0OCwgMjI3LCAyNDgsIDMzLCAyMTcsIDEzMSwgMjQ4LCA4NiwgMjA2LCA3LCAyMTcsIDEzMSwgMjQ4LCA2NywgMjQ5LCA4MiwgCisgICAgMjMyLCAyMjIsIDIxNywgMTMxLCAyNTEsIDkxLCA3NiwgMjQ3LCA2LCAyMTcsIDEzMSwgMjQxLCAyNDQsIDIxNywgMTMxLCAKKyAgICAyNDIsIDE4MiwgMjUxLCAyNDcsIDIxOCwgOTUsIDIxNywgMTMxLCA1MywgMjQ5LCAxMjQsIDQ0LCAxNywgMTAyLCA0NCwgMTcsIAorICAgIDEwNSwgNDQsIDE3LCAxNDcsIDQ0LCAxNywgMTQ5LCA0NCwgMTcsIDE2NCwgNDQsIDE3LCAxODcsIDQ0LCAxNywgMjEwLCAKKyAgICAxMzUsIDQ0LCAxNywgMTkyLCA0NCwgMTcsIDIxOSwgMTEzLCA0NCwgNDEsIDIwNiwgMTY2LCA0NCwgNDEsIDIzOCwgMTk5LCAKKyAgICA0NCwgNDEsIDIwNCwgMTY0LCA0NCwgNDEsIDIwNiwgNjksIDQ0LCA0MSwgMjM2LCAyMjMsIDQ0LCA0MSwgMjM3LCAxMDgsIAorICAgIDQ0LCA0MSwgMjA5LCAxMDAsIDQ0LCA0MSwgMjEwLCAxMzIsIDQ0LCA0MSwgMjM4LCAyMjksIDQ0LCA0MSwgMjE5LCAxMTAsIAorICAgIDQ0LCA0MSwgMjA0LCAxNTksIDEwNiwgMTcsIDEwMiwgMTA2LCAxNywgMTA1LCAxMDYsIDE3LCAxNDcsIDEwNiwgMTcsIDE0OSwgCisgICAgMTA2LCAxNywgMTY0LCAxMDYsIDE3LCAxODcsIDEwNiwgMTcsIDIxMCwgMTM1LCAxMDYsIDE3LCAxOTIsIDEwNiwgMTcsIAorICAgIDIxOSwgMTEzLCAxMDYsIDQxLCAyMDYsIDE2NiwgMTA2LCA0MSwgMjM4LCAxOTksIDEwNiwgNDEsIDIwNCwgMTY0LCAxMDYsIAorICAgIDQxLCAyMDYsIDY5LCAxMDYsIDQxLCAyMzYsIDIyMywgMTA2LCA0MSwgMjM3LCAxMDgsIDEwNiwgNDEsIDIwOSwgMTAwLCAKKyAgICAxMDYsIDQxLCAyMTAsIDEzMiwgMTA2LCA0MSwgMjM4LCAyMjksIDEwNiwgNDEsIDIxOSwgMTEwLCAxMDYsIDQxLCAyMDQsIAorICAgIDE1OSwgMTcsIDExMiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAxMjAsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMTI2LCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIzNiwgMjI5LCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIzNywgNjEsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAxNywgMjA5LCAxMDYsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjEwLCAxMzYsIDIzNiwgMTgzLCAKKyAgICAyMDgsIDc2LCAxNywgMjM4LCAyMzIsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjE5LCAxMTQsIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCA0MSwgMjA2LCAxNjcsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM4LCAyMDAsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgCisgICAgMjA0LCAxNjUsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjA2LCA3MCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzYsIAorICAgIDIyNCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzcsIDEwOSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDksIDEwMSwgCisgICAgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMTAsIDEzMywgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzgsIDIzMCwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDQxLCAyMTksIDExMSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDQsIDE2MCwgMjM2LCAxODMsIAorICAgIDIwOCwgNzYsIDEwNiwgOCwgNCwgMSwgNjIsIDEwNiwgOCwgNCwgMSwgMjUwLCAxMDMsIDEwNiwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjMsIDEwNiwgOCwgNCwgMSwgMjQyLCAxNTMsIDEwNiwgOCwgNCwgMSwgNzIsIDEwNiwgOCwgNCwgMSwgMjM4LCA1LCAxMDYsIAorICAgIDgsIDQsIDEsIDIzNiwgMTU2LCAxMDYsIDgsIDQsIDEsIDIzNCwgMjQ3LCAxMDYsIDgsIDQsIDEsIDcwLCAxMDYsIDgsIDQsIAorICAgIDEsIDIyNywgMjUxLCAxMDYsIDgsIDQsIDEsIDIyNywgMTE4LCAxMDYsIDgsIDQsIDEsIDE1NiwgMTA2LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0MywgMTA2LCA4LCA0LCAxLCAyMjAsIDIxNCwgMTA2LCA4LCA0LCAxLCA3NCwgMTA2LCA4LCA0LCAxLCAyMTYsIAorICAgIDIyNiwgMTA2LCA4LCA0LCAxLCAyMTQsIDE2NywgMTA2LCA4LCA0LCAxLCAxNDYsIDEwNiwgOCwgNCwgMSwgMjEyLCAxMjIsIAorICAgIDEwNiwgOCwgNCwgMSwgMjA3LCA4MywgMTA2LCA4LCA0LCAxLCA2NiwgMTA2LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTA2LCA4LCAKKyAgICA0LCAxLCAyMDEsIDE0NywgMTA2LCA4LCA0LCAxLCAyMDAsIDE5NSwgMTA2LCA4LCA0LCAxLCAyMDAsIDEyMywgMTA2LCA4LCAKKyAgICA0LCAxLCAxOTksIDE1NywgNDQsIDgsIDYsIDEsIDYyLCA0NCwgOCwgNiwgMSwgMjUwLCAxMDMsIDQ0LCA4LCA2LCAxLCAyNDcsIAorICAgIDIyMywgNDQsIDgsIDYsIDEsIDI0MiwgMTUzLCA0NCwgOCwgNiwgMSwgNzIsIDQ0LCA4LCA2LCAxLCAyMzgsIDUsIDQ0LCA4LCAKKyAgICA2LCAxLCAyMzYsIDE1NiwgNDQsIDgsIDYsIDEsIDIzNCwgMjQ3LCA0NCwgOCwgNiwgMSwgNzAsIDQ0LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MSwgNDQsIDgsIDYsIDEsIDIyNywgMTE4LCA0NCwgOCwgNiwgMSwgMTU2LCA0NCwgOCwgNiwgMSwgMjIzLCAyNDMsIDQ0LCAKKyAgICA4LCA2LCAxLCAyMjAsIDIxNCwgNDQsIDgsIDYsIDEsIDc0LCA0NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDQ0LCA4LCA2LCAxLCAKKyAgICAyMTQsIDE2NywgNDQsIDgsIDYsIDEsIDE0NiwgNDQsIDgsIDYsIDEsIDIxMiwgMTIyLCA0NCwgOCwgNiwgMSwgMjA3LCA4MywgCisgICAgNDQsIDgsIDYsIDEsIDY2LCA0NCwgOCwgNiwgMSwgMjAzLCAxNjgsIDQ0LCA4LCA2LCAxLCAyMDEsIDE0NywgNDQsIDgsIDYsIAorICAgIDEsIDIwMCwgMTk1LCA0NCwgOCwgNiwgMSwgMjAwLCAxMjMsIDQ0LCA4LCA2LCAxLCAxOTksIDE1NywgNDQsIDgsIDQsIDEsIAorICAgIDYyLCA0NCwgOCwgNCwgMSwgMjUwLCAxMDMsIDQ0LCA4LCA0LCAxLCAyNDcsIDIyMywgNDQsIDgsIDQsIDEsIDI0MiwgMTUzLCAKKyAgICA0NCwgOCwgNCwgMSwgNzIsIDQ0LCA4LCA0LCAxLCAyMzgsIDUsIDQ0LCA4LCA0LCAxLCAyMzYsIDE1NiwgNDQsIDgsIDQsIDEsIAorICAgIDIzNCwgMjQ3LCA0NCwgOCwgNCwgMSwgNzAsIDQ0LCA4LCA0LCAxLCAyMjcsIDI1MSwgNDQsIDgsIDQsIDEsIDIyNywgMTE4LCAKKyAgICA0NCwgOCwgNCwgMSwgMTU2LCA0NCwgOCwgNCwgMSwgMjIzLCAyNDMsIDQ0LCA4LCA0LCAxLCAyMjAsIDIxNCwgNDQsIDgsIDQsIAorICAgIDEsIDc0LCA0NCwgOCwgNCwgMSwgMjE2LCAyMjYsIDQ0LCA4LCA0LCAxLCAyMTQsIDE2NywgNDQsIDgsIDQsIDEsIDE0NiwgCisgICAgNDQsIDgsIDQsIDEsIDIxMiwgMTIyLCA0NCwgOCwgNCwgMSwgMjA3LCA4MywgNDQsIDgsIDQsIDEsIDY2LCA0NCwgOCwgNCwgCisgICAgMSwgMjAzLCAxNjgsIDQ0LCA4LCA0LCAxLCAyMDEsIDE0NywgNDQsIDgsIDQsIDEsIDIwMCwgMTk1LCA0NCwgOCwgNCwgMSwgCisgICAgMjAwLCAxMjMsIDQ0LCA4LCA0LCAxLCAxOTksIDE1NywgNDQsIDE3LCAxOTksIDgxLCAxODksIDQ0LCA0MSwgMjM4LCAxOTksIAorICAgIDE4OSwgNDQsIDQxLCAyMDQsIDE2NCwgMTg5LCA0NCwgNDEsIDIwNiwgNjksIDE4OSwgNDQsIDQxLCAyMzYsIDIyMywgMTg5LCAKKyAgICA0NCwgNDEsIDIzNywgMTA4LCAxODksIDQ0LCA0MSwgMjA5LCAxMDAsIDE4OSwgNDQsIDQxLCAyMTAsIDEzMiwgMTg5LCA0NCwgCisgICAgNDEsIDIzOCwgMjI5LCAxODksIDQ0LCA0MSwgMjE5LCAxMTAsIDE4OSwgNDQsIDQxLCAyMDQsIDE1OSwgNTMsIDQ0LCAxNywgCisgICAgMTAyLCA1MywgNDQsIDE3LCAxMDUsIDUzLCA0NCwgMTcsIDE0NywgNTMsIDQ0LCAxNywgMTQ5LCA1MywgNDQsIDE3LCAxNjQsIAorICAgIDUzLCA0NCwgMTcsIDE4NywgNTMsIDQ0LCAxNywgMjEwLCAxMzUsIDUzLCA0NCwgMTcsIDE5MiwgNTMsIDQ0LCAxNywgMjE5LCAKKyAgICAxMTMsIDUzLCA0NCwgNDEsIDIwNiwgMTY2LCAxODksIDQ0LCAxNywgMTk5LCA4MSwgMTAwLCAxMjEsIDE2MiwgMjMzLCAxNzYsIAorICAgIDEwMCwgMTIxLCA4MCwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgMjAzLCA0MiwgCisgICAgMTAwLCAxMjEsIDE2MiwgMjA1LCA4MywgMjQxLCAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgODAsIDIwNSwgODMsIDI0MSwgCisgICAgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjA1LCA4MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgCisgICAgMjA1LCA4MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCAxNjIsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDgwLCAyMTQsIDkwLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDIxNCwgOTAsIDI0MSwgCisgICAgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgMTYyLCAKKyAgICAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMjcsIAorICAgIDgwLCAyNiwgNTEsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODAsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDEyNywgCisgICAgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDEyNywgODAsIDI2LCAKKyAgICA0OSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MCwgMTI3LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgCisgICAgMjEzLCA0NiwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgNTEsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDUxLCAKKyAgICAyMjQsIDE5NiwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAyMjUsIAorICAgIDI4LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCA0OSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNDksIDIyNCwgCisgICAgMTk2LCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDgzLCAyNiwgMjEzLCA0NiwgMTAwLCAKKyAgICAxMjEsIDgzLCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNTEsIDEyNywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgNTEsIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgODAsIDI2LCA1MSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDUxLCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCAKKyAgICA1MSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDgzLCAyNiwgCisgICAgMjI1LCAyOCwgMTAwLCAxMjEsIDgzLCAxNjIsIDI2LCA0OSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNDksIAorICAgIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgNDksIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgCisgICAgODAsIDI2LCA0OSwgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDQ5LCAxMTUsIDIzNCwgMTIxLCAxMDAsIAorICAgIDEyMSwgMTE1LCAxNjIsIDI2LCA0OSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIyNSwgMjgsIDEwMCwgCisgICAgMTIxLCAxNjIsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgNDksIDgwLCAyNiwgNTEsIDEyNywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCA1MSwgODAsIDI2LCA0OSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgMjMzLCAKKyAgICAxNzcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCAKKyAgICAxNjIsIDI2LCA0OSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDQ5LCAxNjIsIDI2LCA1MSwgMTI3LCAyMzQsIDEyMSwgCisgICAgMTAwLCAxMjEsIDgwLCAxMjcsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzYsIDEwMCwgCisgICAgMTIxLCA0OSwgODAsIDI2LCA1MSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCA4MCwgMjYsIDQ5LCAxMTUsIDIyNCwgCisgICAgMTk2LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgCisgICAgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDE2MiwgMjYsIDQ5LCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgCisgICAgNDksIDE2MiwgMjYsIDUxLCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIzMywgMTc2LCAxMDAsIAorICAgIDEyMSwgMTYyLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgNDksIDgwLCAyNiwgNTEsIDgzLCAyMjQsIDE5NiwgMTAwLCAKKyAgICAxMjEsIDUxLCA4MCwgMjYsIDQ5LCA4MywgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgMTYyLCAyNiwgMjMzLCAxNzcsIDIzNCwgCisgICAgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDEyNywgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCA4MCwgCisgICAgMjYsIDExNSwgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIDgwLCAyNiwgMjMzLCAxNzcsIDIyNCwgMTk2LCAKKyAgICAxMDAsIDEyMSwgNDksIDExNSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCAxMTUsIDgwLCAyNiwgCisgICAgNDksIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCA0OSwgMTI3LCA4MCwgMjYsIDUxLCAxMTUsIDIyNCwgMTk2LCAxMDAsIAorICAgIDEyMSwgNTEsIDEyNywgODAsIDI2LCA0OSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgMTE1LCAKKyAgICAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDEyNywgMjMzLCAxNzcsIDIzNCwgMTIxLCAxMDAsIAorICAgIDEyMSwgNTEsIDE2MiwgMjYsIDQ5LCA4MywgMjM0LCAxMjEsIDEwMCwgMTIxLCA0OSwgMTYyLCAyNiwgNTEsIDgzLCAyMzQsIAorICAgIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCA1MywgMjQxLCAyNDUsIDIzMywgCisgICAgMTc2LCAxMDAsIDEyMSwgODAsIDUzLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDUzLCAyNDEsIDI0NSwgCisgICAgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCA1MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA1MywgMjMzLCAxNzYsIAorICAgIDEwMCwgMTIxLCA1MywgMjAzLCA0MiwgMTAwLCAxMjEsIDEyNywgMjA5LCAxMzksIDI2LCA1MSwgMjM5LCAxNzUsIDEwMCwgCisgICAgMTIxLCAxMjcsIDUzLCAyNiwgNTEsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAKKyAgICAxMjcsIDIwOSwgMTM5LCAyNiwgNDksIDIzOSwgMTc1LCAxMDAsIDEyMSwgMTI3LCA1MywgMjYsIDQ5LCAyMDksIDEzOCwgCisgICAgMTAwLCAxMjEsIDUzLCAxMjcsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDUxLCAyMzksIAorICAgIDE3NSwgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjEzLCA0NiwgCisgICAgMTAwLCAxMjEsIDExNSwgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMTUsIDUzLCAyNiwgNDksIAorICAgIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDExNSwgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCA1MSwgCisgICAgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMTMsIAorICAgIDQ2LCAxMDAsIDEyMSwgODMsIDIwOSwgMTM5LCAyNiwgNDksIDIzOSwgMTc1LCAxMDAsIDEyMSwgODMsIDUzLCAyNiwgNDksIAorICAgIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDgzLCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDEyNywgMjA5LCAxMzksIDI2LCAKKyAgICAyMzMsIDE3NywgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMjcsIDUzLCAyNiwgMjMzLCAxNzcsIDIwOSwgMTM4LCAxMDAsIDEyMSwgCisgICAgNTMsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDIzMywgMTc3LCAyMzksIDE3NSwgCisgICAgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjMzLCAKKyAgICAxNzYsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCAyMzMsIDE3NywgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIAorICAgIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgCisgICAgMjUwLCAyMzcsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDI1MCwgMjM3LCAxMjcsIDI2LCAyMjUsIDI4LCAKKyAgICAxMDAsIDEyMSwgMTYyLCAyNTAsIDIzNywgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMjUwLCAyMzcsIDExNSwgCisgICAgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDIwMywgMjI1LCA1MSwgMjA1LCAxODYsIDIyNCwgNTQsIAorICAgIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDIwMywgMjI1LCA0OSwgMjA1LCAxODYsIDIyNCwgNTQsIDIxMywgCisgICAgNDYsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDI0MiwgMjM0LCAxMDAsIDEyMSwgMTYyLCAyMjUsIDI4LCAxMDAsIDEyMSwgCisgICAgMTYyLCAyMDMsIDIyOCwgMTAwLCAxMjEsIDE2MiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjM5LCAxNjcsIDEwMCwgMTIxLCAKKyAgICA4MCwgMjI1LCAyOCwgMTAwLCAxMjEsIDgwLCAyMDMsIDIyOCwgMTAwLCAxMjEsIDgwLCAyMTMsIDQ2LCAxMDAsIDEyMSwgODAsIAorICAgIDIzOSwgMTY3LCAxMDAsIDEyMSwgMTYyLCA0OSwgMjYsIDgwLCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCA4MCwgCisgICAgMjM5LCAxNjcsIDEwMCwgMTIxLCA4MCwgNDksIDI2LCAxNjIsIDIxMywgNDYsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMTYyLCAKKyAgICAyMzksIDE2NywgMjAzLCAyMjUsIDE2NywgMjQ4LCAxMzQsIDIyNCwgNTQsIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCAyMjQsIAorICAgIDU0LCAxMTIsIDIxNCwgODgsIDI0OCwgMTM0LCAyMjQsIDU0LCAxMjYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgMjI0LCA1NCwgCisgICAgMTY3LCAyNDgsIDEzNCwgMjI0LCA1NCwgMjM3LCA2MSwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMjQsIDU0LCAxMjYsIDIxNCwgCisgICAgODYsIDI0OCwgMTM0LCAyMjQsIDU0LCAyMTAsIDEzNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMzYsIDE4MywgMjQ4LCAxMzQsIAorICAgIDQ5LCAyMTAsIDEzNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCA0OSwgMTI2LCAyMTQsIDg2LCAyNDgsIDEzNCwgNDksIDIzNywgCisgICAgNjEsIDIzOCwgMjI2LCAyNDgsIDEzNCwgNDksIDE2NywgMjQ4LCAxMzQsIDQ5LCAxMjYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgCisgICAgNDksIDExMiwgMjE0LCA4OCwgMjQ4LCAxMzQsIDQ5LCAxMTIsIDIzOCwgMjI4LCAyNDgsIDEzNCwgNTEsIDE2NywgMjQ4LCAKKyAgICAxMzQsIDE2MiwgMjEwLCAxMDMsIDIyMiwgNjYsIDIxMCwgMTAzLCAyNDEsIDI1MCwgMjEwLCAxMDMsIDIwMywgMjI1LCAxMTIsIAorICAgIDIzOCwgMjI4LCAyNDgsIDEzNCwgNTEsIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCAyMTQsIDkyLCAyMjQsIDU0LCAyMjUsIAorICAgIDI4LCAyMTQsIDkyLCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgMjI1LCAyOCwgMjE0LCA5MiwgMjAzLCAKKyAgICAyMjUsIDQ5LCAyNiwgMjI0LCA1NCwgNDksIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIAorICAgIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIDI2LCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIAorICAgIDU0LCAyMjUsIDI4LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIDI2LCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCAyMTMsIAorICAgIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCA1NCwgMjI1LCAKKyAgICAyOCwgMjE0LCA5MiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCA1NCwgNDksIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCA2MywgCisgICAgMjA4LCAxOTMsIDY0LCAyMDgsIDE5MywgNjQsIDUyLCAzLCAyMTIsIDIxOSwgMjQzLCAxNCwgNjQsIDUyLCAyNDMsIDQ1LCAKKyAgICA2MywgNCwgMjA4LCAxOTMsIDUyLCAzLCAyMzMsIDE3NywgMjM3LCA5NSwgNTIsIDMsIDgzLCAyMzcsIDk1LCA1MiwgMywgCisgICAgMjE3LCAxNywgMjQyLCAyMjksIDIzNywgOTUsIDUyLCAzLCAyMDMsIDIyNSwgNDksIDIwNSwgMTg2LCAyMjQsIDU0LCA1MSwgCisgICAgMjM3LCA5NSwgNTIsIDMsIDIwMywgMjI1LCA1MSwgMjA1LCAxODYsIDIyNCwgNTQsIDQ5LCAyMzcsIDk1LCA1MiwgMywgMjQxLCAKKyAgICA3MSwgMjQyLCAyMjksIDIzNywgOTUsIDYzLCA0LCAyMDgsIDE5MywgNjQsIDQsIDIwOCwgMTkzLCA2MywgMjEzLCAxNzUsIAorICAgIDY0LCAyMTMsIDE3NSwgNjMsIDgzLCAyMTMsIDE3NSwgNjQsIDgzLCAyMTMsIDE3NSwgNjMsIDIxNiwgMTE5LCA2NCwgMjE2LCAKKyAgICAxMTksIDYzLCAyMDMsIDIyNywgMjA1LCA5OCwgNjQsIDIwMywgMjI3LCAyMDUsIDk4LCA2MywgMjAzLCAyMjcsIDQsIDIwNSwgCisgICAgOTgsIDY0LCAyMDMsIDIyNywgNCwgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIwNSwgOTgsIDY0LCAyMTMsIDQxLCAyMDUsIDk4LCAKKyAgICA2MywgMjEzLCA0MSwgNCwgMjA1LCA5OCwgNjQsIDIxMywgNDEsIDQsIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCAyMTUsIDk3LCAKKyAgICA2NCwgMjEzLCA0MSwgMjE1LCA5NywgNjMsIDIzOSwgMTY2LCAyMDUsIDk4LCA2NCwgMjM5LCAxNjYsIDIwNSwgOTgsIDYzLCAKKyAgICAyMzksIDE2NiwgNCwgMjA1LCA5OCwgNjQsIDIzOSwgMTY2LCA0LCAyMDUsIDk4LCA2MywgMjI1LCAyMywgMjA1LCA5OCwgNjQsIAorICAgIDIyNSwgMjMsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCA0LCAyMDUsIDk4LCA2NCwgMjI1LCAyMywgNCwgMjA1LCA5OCwgNjMsIAorICAgIDIyNSwgMjMsIDIxNSwgOTcsIDY0LCAyMjUsIDIzLCAyMTUsIDk3LCA2MywgMjQxLCA2NCwgNjQsIDI0MSwgNjQsIDY0LCAKKyAgICAyNDEsIDY1LCAyNDMsIDQ1LCA2MywgNCwgMjQxLCA2NCwgMjM3LCA3MCwgMjI0LCA0OSwgNjQsIDI0NiwgMTU1LCAyMzksIAorICAgIDE4MCwgMjQ2LCAxNTUsIDI0NiwgMTU2LCAzLCA4MywgMjM3LCA5NSwgMjQ4LCAxNiwgNjMsIDI0NiwgMTU1LCAyNDYsIDE1NiwgCisgICAgMywgNDksIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDIyNCwgCisgICAgNTQsIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIAorICAgIDIwMywgMjI1LCA1MSwgMjE0LCA5MiwgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAyNTEsIDEyNSwgMjQ3LCAyNDcsIDIwMywgCisgICAgMjI1LCA0OSwgMjE0LCA5MiwgMjQ4LCAxNDQsIDQ5LCAxNjcsIDYzLCAyNDYsIDE1NSwgNTEsIDE2NywgNjMsIDI0NiwgMTU1LCAKKyAgICAyMjgsIDUxLCAyNDgsIDIwLCAyMjgsIDUxLCA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCAxNjcsIDIyOCwgNTEsIDY0LCAyNDYsIAorICAgIDE1NSwgMjI0LCA1NCwgMTY3LCAyMjgsIDUxLCA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCA0OSwgMjE0LCA5MiwgMjQ2LCAKKyAgICAxNDksIDI1MCwgMjM2LCAyMDMsIDIyNSwgNTEsIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgMjI0LCA1NCwgNTEsIAorICAgIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgMjI0LCA1NCwgNDksIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgCisgICAgMjAzLCAyMjUsIDE2NywgMjQ2LCAxNTUsIDIyNCwgNTQsIDE2NywgMjQ2LCAxNTUsIDYzLCAyMjQsIDU0LCA1MSwgMjA1LCAKKyAgICA5OCwgNjMsIDIyNCwgNTQsIDQ5LCAyMDUsIDk4LCA2MywgMjAzLCAyMjUsIDQ5LCAyMDUsIDk4LCA2MywgMjAzLCAyMjUsIAorICAgIDUxLCAyMDUsIDk4LCA2NCwgMjQ4LCAyMCwgNTIsIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgNTEsIDE2NywgMjQ4LCAKKyAgICAxNDQsIDUyLCAzLCAyMDMsIDIyNSwgNDksIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAyMjQsIDU0LCA1MSwgCisgICAgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgNjQsIDUyLCAzLCA4MywgMjQ4LCAxNTYsIDIyNCwgMTc2LCA2NCwgMjAzLCAyMjcsIAorICAgIDIwNSwgOTksIDMsIDI0MCwgMTgyLCAyMDMsIDIyNywgMjA1LCA5OSwgMywgNDksIDE2NywgMjQ4LCAxNDQsIDIwMywgMjI3LCAKKyAgICAyMDUsIDk5LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjI1LCA3MSwgMjQ2LCAxNTUsIDY0LCA1MiwgMywgMjAzLCAyMjUsIAorICAgIDQ5LCAyMTQsIDkxLCA2NCwgNTIsIDMsIDIyNCwgNTQsIDQ5LCAyMTQsIDkxLCA2NCwgNTIsIDMsIDIyNCwgNTQsIDUxLCAKKyAgICAyMTQsIDkxLCA2NCwgNTIsIDMsIDIwMywgMjI1LCA1MSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgNDksIAorICAgIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjI0LCA1NCwgNDksIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjI0LCA1NCwgCisgICAgNTEsIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjAzLCAyMjUsIDUxLCAyMTQsIDkxLCAyMDMsIDIyNSwgNDksIDIwNSwgCisgICAgOTgsIDIwMywgMjI1LCA1MSwgMjA1LCA5OCwgMjI0LCA1NCwgNDksIDIwNSwgOTgsIDY0LCAyMjIsIDY2LCAyMDgsIDE5MywgCisgICAgNjMsIDIyMiwgNjYsIDIwOCwgMTkzLCA2NCwgMjIyLCA2NiwgNCwgMjA4LCAxOTMsIDYzLCAyMjIsIDY2LCA0LCAyMDgsIAorICAgIDE5MywgMjI0LCA1NCwgNTEsIDIwNSwgOTgsIDYzLCAyMDcsIDIyOSwgMywgMjEzLCAxOTQsIDI0NiwgMTAxLCAyMDQsIDksIAorICAgIDIwOSwgMzEsIDI0NiwgNzMsIDYzLCAyMDgsIDEwOSwgNjQsIDIwOCwgMTA5LCAyMjQsIDE5MywgMjA2LCAzMCwgMjA3LCAKKyAgICAyMjgsIDI1MCwgMTg0LCAyMTgsIDIzOCwgMjQxLCAxMTgsIDIxOCwgMjM4LCAyNDMsIDU0LCAyMTcsIDM5LCA2MywgMjA2LCAKKyAgICAxNzUsIDY0LCAyMDYsIDE3NSwgMjQ5LCA5NCwgMjQ4LCA3OCwgMjQ5LCA5NCwgMTAwLCAzLCAyNDcsIDYsIDI0OSwgOTQsIAorICAgIDEwMCwgMywgMjAwLCAxOTUsIDIxMiwgMjQsIDIwNCwgMTAsIDMsIDIxMywgMjIzLCAyMzksIDE0NCwgMjMzLCAxMTgsIDI0OCwgCisgICAgMjA0LCA2NCwgMjEwLCAzLCAyMTUsIDE5NiwgNjMsIDIxMCwgMywgMjE1LCAxOTYsIDIxMCwgOTEsIDIxMywgMTA1LCAyMTIsIAorICAgIDIyOCwgMjM3LCAyOCwgMjM0LCAxMjgsIDI0OCwgMjAsIDYzLCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDYzLCA1MSwgMjE1LCAKKyAgICA5NiwgMjI4LCAxMDMsIDY0LCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAxMTUsIDIxNSwgOTYsIDIyOCwgMTAzLCA2NCwgCisgICAgNTEsIDIxNSwgOTYsIDIyOCwgMTAzLCA2NCwgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCA4MSwgMjYsIDI0MiwgMjMzLCAKKyAgICAyNDcsIDEwNSwgNTQsIDIxMywgMjM1LCA1NCwgMjQ4LCAxNjQsIDU0LCAyNDcsIDE4MSwgMjUxLCA2MSwgMjE3LCAxOCwgCisgICAgMjQyLCAyMzQsIDI0NiwgMjM3LCAyMTMsIDkwLCAyNDIsIDIzNSwgNzYsIDIyNCwgNjksIDI0MiwgMjM1LCA3NiwgMjI3LCAKKyAgICAyMTcsIDIwOCwgMTEwLCAyNiwgMjQyLCAyNDMsIDIzNywgMTYyLCA5OSwgMjUxLCAyMjgsIDIxMCwgOTQsIDIzNCwgMjA3LCAKKyAgICAyNiwgMjA5LCAxNzksIDIxNiwgNzIsIDk5LCAxOTksIDI1NSwgMjAwLCA3NSwgMjA1LCA4OCwgMzYsIDIzNCwgMTIzLCAyMDUsIAorICAgIDg4LCAzNiwgMjI1LCA5NiwgMjA1LCA4OCwgMzYsIDIzNywgNzcsIDIwNSwgODgsIDM2LCAyMDYsIDMxLCAyMDUsIDg4LCAzNiwgCisgICAgMjAxLCAxNiwgMjA1LCA4OCwgMzYsIDIwMSwgODIsIDIwNSwgODgsIDM2LCAyMjEsIDYzLCAyMDUsIDg4LCAzNiwgMjM5LCAKKyAgICAxNywgMjAxLCAzOCwgNzYsIDI0MSwgOTIsIDY0LCAyMzYsIDE5NSwgMjM3LCAxODksIDY0LCAyMDksIDQ3LCAyMzcsIDE4OSwgCisgICAgNjMsIDIwOSwgNDcsIDIzNywgMTg5LCA2NCwgMjA3LCAyMjksIDMsIDIxMywgMTk0LCAyMzcsIDczLCAyMTQsIDg4LCAyMjEsIAorICAgIDgxLCAyMjUsIDY0LCAyMTQsIDg4LCAyMjEsIDgxLCAyMjIsIDM0LCAyMzcsIDEzMCwgNTQsIDIzOSwgMTcsIDIyMiwgMTg1LCAKKyAgICA1NCwgMjI3LCAxMzMsIDIxMSwgMjQ0LCAyMDMsIDIwOSwgMjIwLCAxOCwgMjE1LCAxMTAsIDI1MCwgMjIyLCAyMDYsIDIxOSwgCisgICAgMjM2LCAyLCAyNDcsIDE1NCwgMjI0LCAyNDYsIDIwMiwgMjA2LCAyMjQsIDIwNywgMjExLCAyMTIsIDIxMiwgNDgsIDI0NywgCisgICAgMTM5LCAyNTAsIDI1NCwgMjE1LCAxNDUsIDY0LCAyNDYsIDI0NCwgMjI2LCAxNDQsIDY0LCAyNDYsIDI0NCwgMjE0LCA4MCwgCisgICAgNjQsIDI0NiwgMjQ0LCAyMTIsIDIzNiwgNjQsIDI0NiwgMjQ0LCAyNDgsIDE1NSwgNjQsIDI0NiwgMjQ0LCAyMjYsIDkzLCAKKyAgICA2NCwgMjQ2LCAyNDQsIDIxNiwgODQsIDYzLCAyNDYsIDI0NCwgMjI2LCAxNDQsIDYzLCAyNDYsIDI0NCwgMjE0LCA4MCwgNjMsIAorICAgIDI0NiwgMjQ0LCAyMTIsIDIzNiwgNjMsIDI0NiwgMjQ0LCAyNDgsIDE1NSwgNjMsIDI0NiwgMjQ0LCAyMjYsIDkzLCA2MywgCisgICAgMjQ2LCAyNDQsIDIxNiwgODQsIDYzLCAyMDgsIDI0MiwgMjA3LCAyNDEsIDY0LCAyMzQsIDEyOCwgMjA3LCAyNDEsIDY0LCAKKyAgICAyNDEsIDY1LCAyMDcsIDI0MSwgNjMsIDI0NiwgOTgsIDIwNywgMjQxLCA2NCwgMjA4LCAyNDIsIDIwNywgMjQxLCA2MywgCisgICAgMjM0LCAxMjgsIDIwNywgMjQxLCA2MywgMjQxLCA2NSwgMjA3LCAyNDEsIDY0LCAyNDYsIDk4LCAyMDcsIDI0MSwgMjMzLCAKKyAgICAxMTgsIDIwOCwgMTk4LCAyMTQsIDg4LCAyMTgsIDIwOSwgMjM4LCAyMjgsIDIxOCwgMjA5LCAyNDksIDQsIDIzOCwgMjI4LCAKKyAgICAyMTgsIDIwNCwgMjQ5LCA0LCAyMDksIDk5LCAyMTgsIDIwNCwgMjIwLCAyNDYsIDIzNywgNDUsIDU0LCAyMjAsIDI0NiwgCisgICAgMjIwLCAxMTcsIDU0LCAyMjAsIDI0NiwgMjEwLCA3OSwgNTQsIDIwMSwgNDgsIDIwNywgMTAzLCAyNDIsIDIzNCwgMjM5LCAKKyAgICAxNCwgMjA3LCAxMDMsIDI0MiwgMjM0LCAyMDMsIDIzNywgMjEzLCAxNzEsIDk5LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIAorICAgIDEyNywgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgMTI1LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgCisgICAgMjA0LCAxMjQsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIDEyMiwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgCisgICAgMzYsIDIwNCwgMTIwLCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAxMTgsIDIxNSwgMTI3LCAyMTMsIDE3MSwgCisgICAgMTYsIDM2LCAyMDQsIDExNiwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIzNiwgMCwgMjIyLCAxMjYsIDYzLCAyMDMsIAorICAgIDIzNywgMjEzLCAxNzEsIDk5LCAyMTMsIDE3MiwgMjE2LCAxMzQsIDk5LCAyMTYsIDEwNywgMjE2LCAxMzQsIDk5LCAyMTYsIAorICAgIDE5LCAyMTYsIDEzNCwgNTQsIDIwMSwgMzYsIDk5LCAyNDEsIDU3LCAyMzcsIDE4OCwgMjQxLCA1NywgMjM3LCAxODcsIDI0MSwgCisgICAgNTcsIDIzNywgMTg2LCAyNDEsIDU3LCAyMzcsIDE4NSwgMjQxLCA1NywgMjM3LCAxODQsIDI0MSwgNTcsIDIzNywgMTgzLCAKKyAgICA2NCwgMjQ2LCAxNTYsIDMsIDczLCAyMTMsIDQ2LCA2NCwgMjQ2LCAxNTYsIDMsIDEyMCwgMjQwLCAxODAsIDYzLCAyNDYsIAorICAgIDE1NiwgMywgNjQsIDczLCAyMTMsIDQ2LCA2MywgMjQ2LCAxNTYsIDMsIDEyMCwgNjQsIDI0MCwgMTgwLCAyMjEsIDk3LCAzNiwgCisgICAgMjAwLCA3NSwgMjIxLCA5NywgMzYsIDE5OSwgMjU0LCAyNDEsIDM4LCAzNiwgMjM1LCA2OCwgMjAwLCA3NSwgMjQxLCAzOCwgCisgICAgMzYsIDIyNCwgMjM5LCAxOTksIDI1NCwgMjQxLCAzOCwgMzYsIDIyNCwgMjM5LCAyMDAsIDc1LCAyNDEsIDM4LCAzNiwgMjM1LCAKKyAgICA2OCwgMTk5LCAyNTQsIDY0LCAyMzcsIDUzLCA2MywgMjM3LCA1MywgMjM0LCAyMDcsIDI2LCAyMTUsIDIwMCwgMjUxLCA4MSwgCisgICAgMjQyLCAyMzIsIDIwNywgMTY4LCAyMDgsIDExOCwgNzYsIDI1MSwgMjA0LCAyMTEsIDIyOSwgMjUxLCAxNDEsIDIzNywgMjQsIAorICAgIDIzNiwgMTIsIDIwOCwgMTE4LCA3NiwgMjM0LCA5OCwgMjUwLCAxNDcsIDk5LCAyMzcsIDQwLCAyMTYsIDI1MCwgNjQsIDIwOCwgCisgICAgMTA5LCAxMjYsIDIyNCwgMTcxLCAyNDMsIDMxLCAyMTMsIDQ2LCAxMjYsIDIyNCwgMTcxLCAyNDMsIDMxLCAyMjUsIDI4LCAKKyAgICAyMDEsIDkzLCA1NCwgMTIyLCAyMDIsIDE4MiwgNTQsIDIzOSwgMTcyLCAyMzcsIDEzMCwgNTQsIDIzOSwgMTcyLCAyMjIsIAorICAgIDE4NSwgNTQsIDIyOCwgNjEsIDIzNywgMTMwLCAyNiwgMjIyLCAxODUsIDU0LCAyMjIsIDE4NSwgMjYsIDIzNywgMTMwLCA1NCwgCisgICAgMjIyLCAxODUsIDMsIDIwOCwgNDcsIDU0LCAyMjIsIDE4NSwgMywgMjA4LCA0NywgMjYsIDIyMiwgMTg1LCAyNiwgMjM3LCAKKyAgICAxMzAsIDU0LCA4MywgMjIyLCAxODUsIDMsIDIwOCwgNDcsIDU0LCAyMzMsIDE3NywgMjIyLCAxODUsIDMsIDIwOCwgNDcsIAorICAgIDU0LCAyMjIsIDY2LCA2NCwgMjQ2LCAxNTUsIDIyMiwgNjYsIDYzLCAyNDYsIDE1NSwgMjIyLCA2NiwgNCwgNjQsIDI0NiwgCisgICAgMTU1LCAyMjIsIDE0MywgOTksIDI0MCwgMjMzLCA5OSwgMjAzLCAyMzQsIDIxNiwgMTA2LCA5OSwgMjQ2LCA4NCwgMjM2LCAKKyAgICAxNzgsIDIwMywgMjA1LCAyMjAsIDExLCAyNDcsIDQxLCAyMTYsIDE3OSwgMjI3LCAxMzksIDIwMiwgMjQ0LCAyNDYsIDIxNywgCisgICAgNjMsIDIyMSwgODIsIDIyNCwgMTkwLCAyMTAsIDEyNSwgMjEwLCAxNjQsIDIxNCwgNzAsIDIxMCwgMTQ0LCAyMDksIDI2LCAKKyAgICAyNDksIDk3LCAyNDksIDYzLCA5NSwgMjI2LCAyMTQsIDY0LCAyMzksIDE1NSwgMjIyLCAxODAsIDY0LCAyMzksIDE1NSwgCisgICAgMjI2LCAxNDQsIDYzLCAyMzksIDE1NSwgMjIyLCAxODAsIDYzLCAyMzksIDE1NSwgMjI2LCAxNDQsIDIwOSwgMzIsIDIwMSwgCisgICAgMywgMjA5LCAzNSwgMjA3LCAyMjksIDI0OCwgMjM3LCAyNDYsIDEwMSwgMjEzLCAyMjIsIDYzLCAyMDksIDMxLCAyMDYsIDMyLCAKKyAgICAyNDYsIDEwMiwgMjYsIDIxMywgMjIyLCAyMDQsIDE4NSwgNjQsIDIxMCwgMywgMjE1LCAxOTYsIDIwNCwgMTg1LCA2MywgCisgICAgMjEwLCAzLCAyMTUsIDE5NiwgNjQsIDI0MSwgNjUsIDIyOCwgMTE4LCAyMDgsIDE5MywgMjQyLCAyMjgsIDIyNSwgNzgsIAorICAgIDI0MSwgNSwgMjQ3LCAxMzUsIDIxNywgNDIsIDIxNSwgMjAwLCAyNDcsIDEzNiwgMjA5LCA2NSwgMjM0LCAxMDgsIDMsIDY0LCAKKyAgICAyNDIsIDIzNCwgNDQsIDI0MiwgMjI4LCAyMjUsIDc4LCAyNDcsIDMzLCAyMTgsIDI0MiwgMjM4LCAxNDksIDI1MSwgMTA5LCAKKyAgICAyMTcsIDcxLCA0OSwgMjAxLCA2OCwgMjA1LCAxMjYsIDYzLCAyMDQsIDEzOCwgNDksIDIwMSwgNjgsIDIwNSwgMTI2LCA2NCwgCisgICAgMjA0LCAxMzgsIDQ5LCAyMDEsIDY4LCAyMDUsIDEyNiwgNjMsIDQ5LCAyMjUsIDc5LCAyMjIsIDMzLCA2NCwgNDksIDIyNSwgCisgICAgNzksIDIyMiwgMzMsIDIzOSwgMTUwLCAyMDksIDU3LCA1NCwgODAsIDY0LCAyMzksIDE2NiwgMjA1LCA5OCwgNDksIDI0NiwgCisgICAgMTEwLCAyMzgsIDE0OSwgOTUsIDIxMiwgMjQsIDIzNywgMTcxLCAyNDEsIDcxLCAyMjgsIDExOCwgNjQsIDI0NiwgMTU2LCAKKyAgICAyMjgsIDExOCwgNjMsIDIwOCwgMTkzLCA2MywgMjA1LCA2MiwgMjEzLCAxMTYsIDQ5LCAyMzgsIDE0OCwgMjEzLCAxMTYsIAorICAgIDQ5LCAyMzgsIDE0NywgMjUwLCAxNjAsIDE2LCAzNiwgMjAzLCAyMDksIDgwLCAyNDYsIDE1NiwgMywgMjA4LCA0NywgMjYsIAorICAgIDEyMCwgMTkwLCA1NiwgMjE2LCAzNiwgMjEzLCA0MywgMjI4LCA2MywgMjE2LCAzNiwgMjI1LCAyNSwgMjI4LCA2MywgMjE2LCAKKyAgICAzNiwgMjI4LCA1MCwgMjE2LCAzNiwgNjMsIDI0MiwgMjM1LCAyMTcsIDc5LCAyMTAsIDMwLCAyMTAsIDE4LCAyMDksIDIyNSwgCisgICAgMjQ2LCAxODQsIDI0NywgMTEzLCAyMzQsIDQ2LCAyMDksIDEwNywgMjM2LCAxMywgMjAxLCAzLCAyMzMsIDk0LCAyMzYsIDEzLCAKKyAgICAzLCAyMzQsIDE3NiwgMjIyLCAxNjUsIDE2LCAzNiwgMjI0LCAxOTUsIDIyMSwgNjMsIDIwNCwgMTAsIDIxNywgNzksIDIzNSwgCisgICAgNTksIDIzNiwgMjMwLCAyMzcsIDU0LCAyMjgsIDExOCwgMjMzLCAxOTcsIDIzNywgMTIwLCAyMTIsIDQzLCA1MiwgMjM2LCAKKyAgICAyMjksIDI0MywgMTQsIDIwOSwgODQsIDIzMiwgMjMyLCAyMDksIDg3LCAyMTYsIDExLCAzLCAyNDksIDk3LCAyMDYsIDE1OCwgCisgICAgMjI3LCAyMzYsIDI0OSwgODIsIDk5LCAyMzQsIDEzMSwgMjM1LCA3MCwgOTksIDIzNiwgMTg2LCAyMTQsIDIxMywgMjQyLCAKKyAgICAyMDMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNjQsIDIzNywgNTQsIDMsIDIzMywgMTc3LCAxMDEsIDYzLCAyMDgsIDQ4LCAKKyAgICA2MywgMjEyLCA1MywgMjExLCAyMTYsIDIwMywgMjI1LCAyNDgsIDEzOSwgMjExLCAyMTYsIDYzLCAyMTEsIDIxNiwgMjI0LCAKKyAgICA1NCwgMjQ4LCAxMzksIDIxMSwgMjE2LCA2NCwgMjExLCAyMTYsIDY0LCA4MCwgMjQ3LCA3LCA4MSwgMjA2LCAxNzYsIDIyNCwgCisgICAgMTA4LCA1NCwgMjA2LCAyMzUsIDIzOSwgMTQ5LCAyNTEsIDE2NCwgMjM4LCAxNDQsIDIxMywgMjIwLCAyMzcsIDY2LCAyMTMsIAorICAgIDIyMCwgMjM0LCAxOTksIDIwMiwgMjMyLCAyMzQsIDE5OSwgMjAwLCAyMTksIDIzNCwgMTk5LCAyMjQsIDU0LCA1MSwgMjE2LCAKKyAgICA0NiwgMjE2LCA0NiwgMjAzLCAyMjUsIDUxLCAyMTYsIDQ2LCA2NCwgMjE5LCAxNDcsIDYzLCAyMTksIDE0NywgMjQ3LCA3LCAKKyAgICA4MSwgODAsIDI0NywgNywgODEsIDIyMSwgMTksIDIwMCwgMTk1LCA4MCwgMjIxLCAxOSwgMjAwLCAxOTUsIDI0OSwgOTQsIAorICAgIDIwMCwgMTk1LCA4MCwgMjQ5LCA5NCwgMjAwLCAxOTUsIDIxNiwgMjUwLCAzMSwgMjQyLCAyMzQsIDgwLCAzMSwgMjQyLCAKKyAgICAyMzQsIDE3NiwgMjQ3LCA1NiwgMjQyLCAyMzQsIDgwLCAxNzYsIDI0NywgNTYsIDI0MiwgMjM0LCA4LCAyNDIsIDIzNCwgCisgICAgMjEwLCAxMDEsIDY0LCA4LCAyNDIsIDIzNCwgMjE2LCAyNTAsIDgsIDI0MiwgMjM0LCAyMjIsIDE4MiwgMjQyLCAyMzQsIAorICAgIDIwOCwgMTEwLCA3NiwgMjQxLCAyMzcsIDIzNiwgMjI5LCAyMDYsIDE5NCwgMjUwLCAxNjUsIDIzNiwgMjI5LCAyNDksIDk1LCAKKyAgICAyNTAsIDE2NSwgODAsIDIzNiwgMjI5LCAyNDksIDk1LCAyNTAsIDE2NSwgMjM2LCAyMjksIDI0NiwgOTYsIDI1MCwgMTY1LCAKKyAgICA2MywgMjM2LCAyMjksIDIxNSwgOTgsIDIwOCwgMTA5LCA2NCwgMjM2LCAyMjksIDIxNSwgOTgsIDIwOCwgMTA5LCAyMDgsIAorICAgIDIzNywgMjA4LCA1NywgMjE2LCAyNTAsIDY0LCAyMDgsIDEwOSwgNDQsIDY0LCAyMDgsIDEwOSwgMTc2LCAyNDcsIDU2LCA2MywgCisgICAgMjA4LCAxMDksIDYzLCAyNDcsIDU2LCA2NCwgMjA4LCAxMDksIDIxNiwgMjUwLCA2MywgMjA4LCAxMDksIDgwLCAyMTYsIAorICAgIDI1MCwgNjMsIDIwOCwgMTA5LCAyMTUsIDE1NSwgMjA4LCAxMDksIDIxMCwgMTAxLCA2NCwgMjA4LCAxMDksIDgwLCAyNTAsIAorICAgIDE2NSwgMTc2LCAyNDcsIDU2LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjA5LCAxMDYsIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxMywgMTczLCA2MywgMjA4LCAxMDksIDgwLCAyMzgsIAorICAgIDIzMiwgMjE1LCA5OCwgMjEzLCAxNzMsIDYzLCAyMDgsIDEwOSwgMjA0LCAxNjUsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgCisgICAgMjA5LCAxMDEsIDIxNSwgOTgsIDI1MCwgMTY1LCAyMDYsIDE5NCwgMjUwLCAxNjUsIDE3NiwgMjQ3LCA1NiwgMjA2LCAxOTQsIAorICAgIDI1MCwgMTY1LCA4MCwgMjA2LCAxOTQsIDI1MCwgMTY1LCAyMDksIDEwNiwgMjE1LCAyNTUsIDYzLCAyNiwgNjQsIDIzNywgCisgICAgMjcsIDYzLCAyMzcsIDI3LCA2NCwgMjM3LCAyNywgMjM4LCAyMzIsIDIxNSwgMjU1LCAyMTYsIDI1MCwgNjMsIDIzNywgMjcsIAorICAgIDQ0LCAxNzYsIDI0NywgNTYsIDIzOCwgMjMyLCAyMTUsIDk4LCAyMDgsIDEwOSwgODAsIDIwNiwgMTk0LCAyMTUsIDE1NSwgCisgICAgMjUwLCAxNjUsIDIwOSwgMzMsIDIwNiwgMSwgMjA1LCA5MSwgMjA5LCAzMywgODAsIDI0NiwgMjQwLCAyMDksIDMzLCAyMDgsIAorICAgIDIzOSwgODAsIDIwOCwgMjM5LCAyNDksIDk1LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIwNiwgMTk0LCAyMTQsIDI0NiwgMjUwLCAKKyAgICAxNjUsIDgwLCAyMzgsIDIzMiwgMjA2LCAxOTQsIDIxNCwgMjQ2LCAyNTAsIDE2NSwgMjQyLCAyMzUsIDgxLCAyMTAsIDEwMSwgCisgICAgNjQsIDI0NiwgMTU1LCAxODksIDk1LCAyNDIsIDIzNSwgODEsIDIyNCwgNTQsIDUxLCAyMzksIDE0NiwgNjQsIDIwOCwgMTkzLCAKKyAgICAyMDMsIDIyNSwgNTEsIDIzOSwgMTQ2LCA2NCwgMjA4LCAxOTMsIDIyNCwgNTQsIDUxLCAyMTAsIDEwMSwgNjQsIDIwOCwgCisgICAgMTkzLCAyMDMsIDIyNSwgNTEsIDIxMCwgMTAxLCA2NCwgMjA4LCAxOTMsIDYzLCAyMTQsIDc5LCAxMzQsIDIxNywgMjEsIDY0LCAKKyAgICAyMTQsIDc5LCAxMzQsIDIxNywgMjEsIDY0LCAyMzgsIDQzLCAxMzQsIDIxNywgMjEsIDYzLCAyNDEsIDY1LCAyMjEsIDE1NywgCisgICAgNjQsIDIwMCwgMTk1LCA4MCwgMjM4LCA0MywgMTM0LCA5OSwgMTYyLCA4MywgMTQ4LCAyMjIsIDY2LCA4MywgMTQ4LCA4MCwgCisgICAgODMsIDE0OCwgODAsIDIwOSwgMTM5LCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjA5LCAKKyAgICAxMzksIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDUzLCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgCisgICAgMTM0LCAyMTcsIDIxLCA4MCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDEyOCwgMjA5LCAxMzksIAorICAgIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDEyOCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAKKyAgICAyMSwgMjQyLCAxODgsIDIwOCwgOTMsIDIxNiwgMTI4LCAyLCAyMTcsIDIxLCA4MCwgMjM4LCA0MywgMTM0LCAyMTcsIDIxLCAKKyAgICA4MCwgMjM0LCAxMjgsIDIzOCwgNDMsIDEzNCwgMjE3LCAyMSwgODAsIDYzLCAyMzQsIDEyNywgMjEyLCAyMjgsIDgwLCA2MywgCisgICAgMjM0LCAxMjgsIDI0OCwgMjAsIDIzNywgMjgsIDIzNCwgMTI3LCAyMTIsIDIyOCwgMjM3LCAyOCwgMjM0LCAxMjgsIDI0OCwgCisgICAgMjAsIDIyMiwgNjYsIDQ5LCAyMTYsIDExNiwgMjE3LCAyMSwgMjIyLCA2NiwgNTEsIDIxNiwgMTE2LCAyMTcsIDIxLCAyMjIsIAorICAgIDY2LCAyMzcsIDQxLCA0OSwgMjE2LCAxMTYsIDIxNywgMjEsIDIyMiwgNjYsIDIzNywgNDEsIDUxLCAyMTYsIDExNiwgMjE3LCAKKyAgICAyMSwgMjIyLCA2NiwgMjI1LCAyMywgMjUxLCA3MSwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCA2NiwgMjEzLCA0MSwgMjUxLCAKKyAgICA3MSwgMjQ4LCA3MCwgMjE3LCAyMSwgODAsIDIyNSwgMjMsIDI1MSwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIAorICAgIDIxMywgNDEsIDI1MSwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDIyNSwgMjMsIDI1MSwgNzEsIDI0OCwgNzAsIAorICAgIDIxNywgMjEsIDgwLCAyMTMsIDQxLCAyNTEsIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCAxNjIsIDQ5LCAyMDUsIDE0NiwgMjEwLCAKKyAgICA1NSwgMjQ4LCA3MCwgMjE3LCAyMSwgMTYyLCA1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNzAsIDIxNywgMjEsIDIyMiwgCisgICAgNjYsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCA2NiwgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAyMTcsIAorICAgIDIxLCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTAyLCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTA1LCAyNDEsIDE3LCAxODksIAorICAgIDQ0LCAxNywgMTQ3LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTQ5LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTY0LCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCAxNywgMTg3LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMjEwLCAxMzUsIDI0MSwgMTcsIDE4OSwgNDQsIAorICAgIDE3LCAxOTIsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAyMTksIDExMywgMjQxLCAxNywgMTg5LCA0NCwgNDEsIDIwNiwgMTY2LCAKKyAgICAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxMDIsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDEwNSwgMjQxLCAxNywgNDQsIDQzLCAxNywgCisgICAgMTQ3LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxNDksIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE2NCwgMjQxLCAxNywgNDQsIDQzLCAKKyAgICAxNywgMTg3LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTkyLCAyNDEsIAorICAgIDE3LCA0NCwgNDMsIDE3LCAyMTksIDExMywgMjQxLCAxNywgNDQsIDQzLCA0MSwgMjA2LCAxNjYsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDQzLCAxNywgMTAyLCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDEwNSwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAKKyAgICAxNDcsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTQ5LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDE2NCwgMjQxLCAKKyAgICAxNywgMTg5LCA0NCwgNDMsIDE3LCAxODcsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMjEwLCAxMzUsIDI0MSwgMTcsIAorICAgIDE4OSwgNDQsIDQzLCAxNywgMTkyLCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCAxODksIAorICAgIDQ0LCA0MywgNDEsIDIwNiwgMTY2LCA4MCwgMjAxLCAyNywgODcsIDQ4LCA4MCwgOTMsIDU0LCA4MCwgMjIxLCAxNTcsIDU0LCAKKyAgICA4MCwgMjQwLCAyMzUsIDU0LCA4MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCA4MCwgODcsIDQ4LCA4MCwgMTU3LCAyMzksIAorICAgIDE0LCA0OCwgMjM5LCAxNjAsIDIxNSwgMTAwLCA4NywgNDgsIDgwLCAyMTIsIDIyMCwgODcsIDQ4LCAyMDUsIDk3LCA4NywgCisgICAgNDgsIDgwLCAyMDUsIDk3LCA4NywgNDgsIDI0MSwgMjQzLCAyMDUsIDk3LCA4NywgNDgsIDgwLCAyNDEsIDI0MywgMjA1LCAKKyAgICA5NywgODcsIDQ4LCA2MywgODcsIDQ4LCAyMDYsIDQ1LCAyMDUsIDE1NiwgODcsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyNDgsIAorICAgIDkxLCA4NywgMjUwLCAyMDIsIDYzLCA4NywgMjUwLCAyMDIsIDgwLCA2MywgMjQyLCAxODgsIDE5MSwgMjYsIDg3LCA0OCwgCisgICAgODAsIDYzLCAyNDIsIDE4OCwgMTgyLCAyNiwgODcsIDQ4LCAyMDgsIDE5MCwgNjMsIDg3LCA0OCwgODAsIDI0MywgNjcsIDYzLCAKKyAgICA4NywgNDgsIDIxMywgNDAsIDY0LCA4NywgNDgsIDIyNSwgMjIsIDY0LCA4NywgNDgsIDI0OSwgMTI4LCAyMTAsIDEwMSwgNjQsIAorICAgIDg3LCA0OCwgMjM2LCAxOTgsIDIxMCwgMTAxLCA2NCwgODcsIDQ4LCA4MCwgMjI0LCA1NCwgMjEzLCAzOSwgNjQsIDg3LCA0OCwgCisgICAgODAsIDIwMywgMjI1LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCAyMTgsIDIxMSwgMjI0LCA1NCwgMjEzLCAzOSwgNjQsIDg3LCAKKyAgICA0OCwgMjQyLCAxOTYsIDIyNCwgNzQsIDIxOCwgMjExLCAyMDMsIDIyNSwgMjEzLCAzOSwgNjQsIDg3LCA0OCwgNDQsIDgwLCAKKyAgICA2NCwgODcsIDQ4LCAyMDEsIDMzLCA4NywgNDgsIDI0OCwgMTQzLCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDI0OCwgMTQzLCAKKyAgICA4NywgNDgsIDI0OCwgMTQzLCAxNTcsIDIzOSwgMTQsIDQ4LCA4MCwgMjQ4LCAxNDMsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgCisgICAgODAsIDI0OCwgMTQzLCA4NywgNDgsIDgwLCAyNDgsIDE0MywgMTU3LCAyMzksIDE0LCA0OCwgMjA2LCAxOTYsIDg3LCA0OCwgCisgICAgODAsIDIwNiwgMTk1LCA4NywgNDgsIDIwMSwgNTgsIDg3LCA0OCwgODAsIDIwMSwgNTgsIDg3LCA0OCwgMjE3LCA0OCwgODcsIAorICAgIDQ4LCA1MywgMjQyLCAxOTYsIDIyNCwgNzQsIDEyNiwgMjQxLCAyNywgMjUxLCA3MCwgNjQsIDIwNSwgOTksIDI0MywgNDUsIAorICAgIDQsIDY0LCAyMDUsIDk4LCAyMTYsIDE0LCAxNzYsIDIwOCwgMiwgMTc2LCAyMDcsIDIxMSwgNDksIDIxMiwgMTIxLCAyNDksIAorICAgIDExNCwgMjQxLCAxNDIsIDUxLCAyMTIsIDEyMSwgMjQ5LCAxMTQsIDI0MSwgMTQyLCAyMTcsIDM0LCAzLCA3MywgMjI4LCA3MywgCisgICAgMjEzLCAxMDYsIDIwOSwgMTcsIDIxNSwgMjcsIDIwOCwgMiwgMjA3LCAyMTIsIDIxNSwgMjcsIDIwOSwgMTYsIDgzLCAyNDksIAorICAgIDc3LCAzLCAyMzMsIDE3NywgOTcsIDEzLCAyMTMsIDE5LCAyNDEsIDcwLCAxNjgsIDI0MCwgMjM0LCAxMywgMjM3LCAxNzEsIAorICAgIDI0MSwgNzAsIDk1LCAyMjQsIDk4LCAyNTEsIDc5LCA5NSwgMjI0LCA5OCwgMjE3LCAzMywgNjQsIDI0MSwgNjUsIDMsIDI0NywgCisgICAgNTQsIDI0MCwgMTgyLCAyNiwgMywgMjQwLCAxODIsIDIzOCwgMjAyLCA3NiwgMjE3LCA0NiwgMjAzLCAyMTYsIDIyNCwgNTQsIAorICAgIDUxLCAyNDMsIDE2LCAzLCAyNDAsIDE4MiwgMjAzLCAyMjUsIDQ5LCAyNDMsIDE2LCAzLCAyNDAsIDE4MiwgNDksIDIxNiwgCisgICAgMjUyLCAyMjcsIDE2NCwgNTEsIDIxNiwgMjUyLCAyMjcsIDE2NCwgMjM2LCAxODMsIDIxNiwgMjUyLCAyMjcsIDE2NCwgMjI1LCAKKyAgICA3MSwgMTE1LCAyMDcsIDE3LCAyMjUsIDcxLCAxMjcsIDIwNywgMTcsIDQ5LCAyNiwgNTEsIDUzLCAyMDQsIDE4NCwgNDksIAorICAgIDI2LCA1MSwgMjA3LCAxNywgNDksIDIyMSwgMjMsIDE2OCwgNTEsIDIwNywgMTcsIDE2OCwgNDksIDIwNywgMTcsIDExNSwgCisgICAgMjA3LCAxOCwgMywgMjQ2LCAxNTYsIDU2LCAyMjQsIDUwLCAyNDAsIDI0MCwgMjQ3LCAyMzUsIDIzMywgMTc3LCAyMTIsIAorICAgIDE2NSwgNjQsIDI0MywgNjYsIDI0MSwgNjQsIDY0LCAyNDMsIDY2LCAyNDEsIDY1LCAzLCA5OCwgMjA2LCAxMSwgNjQsIDI0MywgCisgICAgNjYsIDI0MSwgNjUsIDMsIDg3LCAyMDYsIDExLCA2NCwgNTIsIDMsIDk4LCAyMDYsIDExLCA2NCwgNTIsIDMsIDg3LCAyMDYsIAorICAgIDExLCAxMywgNDksIDY0LCA1MiwgMTU5LCAxMywgNTEsIDY0LCA1MiwgMTU5LCAxMywgNDksIDI1MSwgNzEsIDE1OSwgMTMsIAorICAgIDUxLCAyNTEsIDcxLCAxNTksIDEzLCA0OSwgNTMsIDI1MSwgNzEsIDE1OSwgMTMsIDUxLCA1MywgMjUxLCA3MSwgMTU5LCAxMywgCisgICAgNDksIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAxMywgNTEsIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAxMywgCisgICAgNDksIDIzNywgNDEsIDIxNiwgMTE1LCAxMywgNTEsIDIzNywgNDEsIDIxNiwgMTE1LCAxODIsIDIxNCwgOTAsIDQ4LCAxOTEsIAorICAgIDIxNCwgOTAsIDQ4LCAyNTEsIDQ3LCAyMzYsIDUxLCAyNDYsIDE1NiwgNDgsIDI0NiwgMTEyLCAyMzYsIDUxLCAyNDYsIDE1NiwgCisgICAgNDgsIDUxLCA1NSwgMywgNDQsIDIxNSwgMTEzLCAxNjgsIDk4LCA0OCwgMTY4LCA4NywgNDgsIDE2OCwgNDksIDUxLCA0OCwgCisgICAgMTY4LCA5OCwgNTMsIDQ4LCAxNjgsIDg3LCA1MywgNDgsIDE2OCwgNDksIDUxLCA1MywgNDgsIDE2OCwgOTgsIDU1LCAyMzYsIAorICAgIDIwMSwgMTQ4LCAxNjgsIDg3LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTY4LCA5OCwgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICAxNjgsIDg3LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDE2OCwgODcsIDIwOCwgMTg2LCA0OCwgNTksIDYwLCAyNDgsIDEzNywgCisgICAgNTksIDYwLCAyNDAsIDE3OSwgNTksIDYwLCAyNDAsIDUxLCA1OSwgNjAsIDI0MCwgMTc4LCA1OSwgNjAsIDIzOSwgMjQzLCAKKyAgICA1OSwgNjAsIDI0MCwgMTE0LCA1OSwgNjAsIDI0MCwgNTAsIDU5LCA2MCwgMjQwLCAxNzcsIDU5LCA2MCwgMjM5LCAyMTEsIAorICAgIDU5LCA2MCwgMjQwLCA4MiwgNTksIDYwLCAyNDAsIDE4LCA1OSwgNjAsIDI0MCwgMTQ1LCA1OSwgNjAsIDIzOSwgMjQyLCA1OSwgCisgICAgNjAsIDI0MCwgMTEzLCA1OSwgNjAsIDI0MCwgNDksIDU5LCA2MCwgMjQwLCAxNzYsIDU5LCA2MCwgMjM5LCAxOTUsIDU5LCAKKyAgICA2MCwgMjQwLCA2NiwgNTksIDYwLCAyNDAsIDIsIDU5LCA2MCwgMjQwLCAxMjksIDU5LCA2MCwgMjM5LCAyMjYsIDU5LCA2MCwgCisgICAgMjQwLCA5NywgNTksIDYwLCAyNDAsIDMzLCA1OSwgNjAsIDI0MCwgMTYwLCA1OSwgNjAsIDIzOSwgMjEwLCA1OSwgNjAsIAorICAgIDI0MCwgODEsIDU5LCA2MCwgMjQwLCAxNywgNTksIDYwLCAyNDAsIDE0NCwgNTksIDYwLCAyMzksIDI0MSwgNTksIDYwLCAKKyAgICAyNDAsIDExMiwgNTksIDYwLCAyNDAsIDQ4LCA1OSwgNjAsIDI0MCwgMTc1LCA1OSwgNjAsIDIzOSwgMTg3LCA1OSwgNjAsIAorICAgIDI0MCwgNTgsIDU5LCA2MCwgMjM5LCAyNTAsIDU5LCA2MCwgMjQwLCAxMjEsIDU5LCA2MCwgMjM5LCAyMTgsIDU5LCA2MCwgCisgICAgMjQwLCA4OSwgNTksIDYwLCAyNDAsIDI1LCA1OSwgNjAsIDI0MCwgMTUyLCA1OSwgNjAsIDIzOSwgMjAyLCA1OSwgNjAsIAorICAgIDI0MCwgNzMsIDU5LCA2MCwgMjQwLCA5LCA1OSwgNjAsIDI0MCwgMTM2LCA1OSwgNjAsIDIzOSwgMjMzLCA1OSwgNjAsIDI0MCwgCisgICAgMTA0LCA1OSwgNjAsIDI0MCwgNDAsIDU5LCA2MCwgMjQwLCAxNjcsIDU5LCA2MCwgMjM5LCAxOTQsIDU5LCA2MCwgMjQwLCAKKyAgICA2NSwgNTksIDYwLCAyNDAsIDEsIDU5LCA2MCwgMjQwLCAxMjgsIDU5LCA2MCwgMjM5LCAyMjUsIDU5LCA2MCwgMjQwLCA5NiwgCisgICAgNTksIDYwLCAyNDAsIDMyLCA1OSwgNjAsIDI0MCwgMTU5LCA1OSwgNjAsIDIzOSwgMjA5LCA1OSwgNjAsIDI0MCwgODAsIDU5LCAKKyAgICA2MCwgMjQwLCAxNiwgNTksIDYwLCAyNDAsIDE0MywgNTksIDYwLCAyMzksIDI0MCwgNTksIDYwLCAyNDAsIDExMSwgNTksIAorICAgIDYwLCAyNDAsIDQ3LCA1OSwgNjAsIDI0MCwgMTc0LCA1OSwgNjAsIDIzOSwgMTgzLCA1OSwgNjAsIDI0MCwgNTQsIDU5LCA2MCwgCisgICAgMjM5LCAyNDYsIDU5LCA2MCwgMjQwLCAxMTcsIDU5LCA2MCwgMjM5LCAyMTQsIDU5LCA2MCwgMjQwLCA4NSwgNTksIDYwLCAKKyAgICAyNDAsIDIxLCA1OSwgNjAsIDI0MCwgMTQ4LCA1OSwgNjAsIDIzOSwgMTk4LCA1OSwgNjAsIDI0MCwgNjksIDU5LCA2MCwgCisgICAgMjQwLCA1LCA1OSwgNjAsIDI0MCwgMTMyLCA1OSwgNjAsIDIzOSwgMjI5LCA1OSwgNjAsIDI0MCwgMTAwLCA1OSwgNjAsIAorICAgIDI0MCwgMzYsIDU5LCA2MCwgMjQwLCAxNjMsIDU5LCA2MCwgMjM5LCAxOTAsIDU5LCA2MCwgMjQwLCA2MSwgNTksIDYwLCAKKyAgICAyMzksIDI1MywgNTksIDYwLCAyNDAsIDEyNCwgNTksIDYwLCAyMzksIDIyMSwgNTksIDYwLCAyNDAsIDkyLCA1OSwgNjAsIAorICAgIDI0MCwgMjgsIDU5LCA2MCwgMjQwLCAxNTUsIDU5LCA2MCwgMjM5LCAyMDUsIDU5LCA2MCwgMjQwLCA3NiwgNTksIDYwLCAKKyAgICAyNDAsIDEyLCA1OSwgNjAsIDI0MCwgMTM5LCA1OSwgNjAsIDIzOSwgMjM2LCA1OSwgNjAsIDI0MCwgMTA3LCA1OSwgNjAsIAorICAgIDI0MCwgNDMsIDU5LCA2MCwgMjQwLCAxNzAsIDU5LCA2MCwgMjM5LCAxODYsIDU5LCA2MCwgMjQwLCA1NywgNTksIDYwLCAKKyAgICAyMzksIDI0OSwgNTksIDYwLCAyNDAsIDEyMCwgNTksIDYwLCAyMzksIDIxNywgNTksIDYwLCAyNDAsIDg4LCA1OSwgNjAsIAorICAgIDI0MCwgMjQsIDU5LCA2MCwgMjQwLCAxNTEsIDU5LCA2MCwgMjM5LCAyMDEsIDU5LCA2MCwgMjQwLCA3MiwgNTksIDYwLCAKKyAgICAyNDAsIDgsIDU5LCA2MCwgMjQwLCAxMzUsIDU5LCA2MCwgMjM5LCAyMzIsIDU5LCA2MCwgMjQwLCAxMDMsIDU5LCA2MCwgCisgICAgMjQwLCAzOSwgNTksIDYwLCAyNDAsIDE2NiwgNTksIDYwLCAyMzksIDE5MywgNTksIDYwLCAyNDAsIDY0LCA1OSwgNjAsIAorICAgIDI0MCwgMCwgNTksIDYwLCAyNDAsIDEyNywgNTksIDYwLCAyMzksIDIyNCwgNTksIDYwLCAyNDAsIDk1LCA1OSwgNjAsIDI0MCwgCisgICAgMzEsIDU5LCA2MCwgMjQwLCAxNTgsIDU5LCA2MCwgMjM5LCAyMDgsIDU5LCA2MCwgMjQwLCA3OSwgNTksIDYwLCAyNDAsIDE1LCAKKyAgICA1OSwgNjAsIDI0MCwgMTQyLCA1OSwgNjAsIDIzOSwgMjM5LCA1OSwgNjAsIDI0MCwgMTEwLCA1OSwgNjAsIDI0MCwgNDYsIAorICAgIDU5LCA2MCwgMjQwLCAxNzMsIDU5LCA2MCwgMjM5LCAxODEsIDU5LCA2MCwgMjQwLCA1MiwgNTksIDYwLCAyMzksIDI0NCwgCisgICAgNTksIDYwLCAyNDAsIDExNSwgNTksIDYwLCAyMzksIDIxMiwgNTksIDYwLCAyNDAsIDgzLCA1OSwgNjAsIDI0MCwgMTksIDU5LCAKKyAgICA2MCwgMjQwLCAxNDYsIDU5LCA2MCwgMjM5LCAxOTYsIDU5LCA2MCwgMjQwLCA2NywgNTksIDYwLCAyNDAsIDMsIDU5LCA2MCwgCisgICAgMjQwLCAxMzAsIDU5LCA2MCwgMjM5LCAyMjcsIDU5LCA2MCwgMjQwLCA5OCwgNTksIDYwLCAyNDAsIDM0LCA1OSwgNjAsIAorICAgIDI0MCwgMTYxLCA1OSwgNjAsIDIzOSwgMTg4LCA1OSwgNjAsIDI0MCwgNTksIDU5LCA2MCwgMjM5LCAyNTEsIDU5LCA2MCwgCisgICAgMjQwLCAxMjIsIDU5LCA2MCwgMjM5LCAyMTksIDU5LCA2MCwgMjQwLCA5MCwgNTksIDYwLCAyNDAsIDI2LCA1OSwgNjAsIAorICAgIDI0MCwgMTUzLCA1OSwgNjAsIDIzOSwgMjAzLCA1OSwgNjAsIDI0MCwgNzQsIDU5LCA2MCwgMjQwLCAxMCwgNTksIDYwLCAKKyAgICAyNDAsIDEzNywgNTksIDYwLCAyMzksIDIzNCwgNTksIDYwLCAyNDAsIDEwNSwgNTksIDYwLCAyNDAsIDQxLCA1OSwgNjAsIAorICAgIDI0MCwgMTY4LCA1OSwgNjAsIDIzOSwgMTg0LCA1OSwgNjAsIDI0MCwgNTUsIDU5LCA2MCwgMjM5LCAyNDcsIDU5LCA2MCwgCisgICAgMjQwLCAxMTgsIDU5LCA2MCwgMjM5LCAyMTUsIDU5LCA2MCwgMjQwLCA4NiwgNTksIDYwLCAyNDAsIDIyLCA1OSwgNjAsIAorICAgIDI0MCwgMTQ5LCA1OSwgNjAsIDIzOSwgMTk5LCA1OSwgNjAsIDI0MCwgNzAsIDU5LCA2MCwgMjQwLCA2LCA1OSwgNjAsIDI0MCwgCisgICAgMTMzLCA1OSwgNjAsIDIzOSwgMjMwLCA1OSwgNjAsIDI0MCwgMTAxLCA1OSwgNjAsIDI0MCwgMzcsIDU5LCA2MCwgMjQwLCAKKyAgICAxNjQsIDU5LCA2MCwgMjM5LCAxOTEsIDU5LCA2MCwgMjQwLCA2MiwgNTksIDYwLCAyMzksIDI1NCwgNTksIDYwLCAyNDAsIAorICAgIDEyNSwgNTksIDYwLCAyMzksIDIyMiwgNTksIDYwLCAyNDAsIDkzLCA1OSwgNjAsIDI0MCwgMjksIDU5LCA2MCwgMjQwLCAKKyAgICAxNTYsIDU5LCA2MCwgMjM5LCAyMDYsIDU5LCA2MCwgMjQwLCA3NywgNTksIDYwLCAyNDAsIDEzLCA1OSwgNjAsIDI0MCwgCisgICAgMTQwLCA1OSwgNjAsIDIzOSwgMjM3LCA1OSwgNjAsIDI0MCwgMTA4LCA1OSwgNjAsIDI0MCwgNDQsIDU5LCA2MCwgMjQwLCAKKyAgICAxNzEsIDU5LCA2MCwgMjM5LCAxODIsIDU5LCA2MCwgMjQwLCA1MywgNTksIDYwLCAyMzksIDI0NSwgNTksIDYwLCAyNDAsIAorICAgIDExNiwgNTksIDYwLCAyMzksIDIxMywgNTksIDYwLCAyNDAsIDg0LCA1OSwgNjAsIDI0MCwgMjAsIDU5LCA2MCwgMjQwLCAKKyAgICAxNDcsIDU5LCA2MCwgMjM5LCAxOTcsIDU5LCA2MCwgMjQwLCA2OCwgNTksIDYwLCAyNDAsIDQsIDU5LCA2MCwgMjQwLCAxMzEsIAorICAgIDU5LCA2MCwgMjM5LCAyMjgsIDU5LCA2MCwgMjQwLCA5OSwgNTksIDYwLCAyNDAsIDM1LCA1OSwgNjAsIDI0MCwgMTYyLCA1OSwgCisgICAgNjAsIDIzOSwgMTg5LCA1OSwgNjAsIDI0MCwgNjAsIDU5LCA2MCwgMjM5LCAyNTIsIDU5LCA2MCwgMjQwLCAxMjMsIDU5LCAKKyAgICA2MCwgMjM5LCAyMjAsIDU5LCA2MCwgMjQwLCA5MSwgNTksIDYwLCAyNDAsIDI3LCA1OSwgNjAsIDI0MCwgMTU0LCA1OSwgNjAsIAorICAgIDIzOSwgMjA0LCA1OSwgNjAsIDI0MCwgNzUsIDU5LCA2MCwgMjQwLCAxMSwgNTksIDYwLCAyNDAsIDEzOCwgNTksIDYwLCAKKyAgICAyMzksIDIzNSwgNTksIDYwLCAyNDAsIDEwNiwgNTksIDYwLCAyNDAsIDQyLCA1OSwgNjAsIDI0MCwgMTY5LCA1OSwgNjAsIAorICAgIDIzOSwgMTg1LCA1OSwgNjAsIDI0MCwgNTYsIDU5LCA2MCwgMjM5LCAyNDgsIDU5LCA2MCwgMjQwLCAxMTksIDU5LCA2MCwgCisgICAgMjM5LCAyMTYsIDU5LCA2MCwgMjQwLCA4NywgNTksIDYwLCAyNDAsIDIzLCA1OSwgNjAsIDI0MCwgMTUwLCA1OSwgNjAsIAorICAgIDIzOSwgMjAwLCA1OSwgNjAsIDI0MCwgNzEsIDU5LCA2MCwgMjQwLCA3LCA1OSwgNjAsIDI0MCwgMTM0LCA1OSwgNjAsIDIzOSwgCisgICAgMjMxLCA1OSwgNjAsIDI0MCwgMTAyLCA1OSwgNjAsIDI0MCwgMzgsIDU5LCA2MCwgMjQwLCAxNjUsIDU5LCA2MCwgMjM5LCAKKyAgICAxOTIsIDU5LCA2MCwgMjQwLCA2MywgNTksIDYwLCAyMzksIDI1NSwgNTksIDYwLCAyNDAsIDEyNiwgNTksIDYwLCAyMzksIAorICAgIDIyMywgNTksIDYwLCAyNDAsIDk0LCA1OSwgNjAsIDI0MCwgMzAsIDU5LCA2MCwgMjQwLCAxNTcsIDU5LCA2MCwgMjM5LCAKKyAgICAyMDcsIDU5LCA2MCwgMjQwLCA3OCwgNTksIDYwLCAyNDAsIDE0LCA1OSwgNjAsIDI0MCwgMTQxLCA1OSwgNjAsIDIzOSwgCisgICAgMjM4LCA1OSwgNjAsIDI0MCwgMTA5LCA1OSwgNjAsIDI0MCwgNDUsIDU5LCA2MCwgMjQwLCAxNzIsIDg3LCAyMDQsIDE0MSwgCisgICAgNTUsIDMsIDgzLCA5NywgODcsIDIwNCwgMTQxLCA1NSwgMywgNTMsIDgzLCA5NywgOTgsIDUzLCA1NSwgMywgODMsIDk3LCAKKyAgICA4NywgNTMsIDU1LCAzLCA4MywgOTcsIDQ5LCA1MSwgNTMsIDU1LCAzLCA4MywgOTcsIDg3LCAyMDQsIDE0MSwgNTUsIDIzNiwgCisgICAgMjAxLCAxNDgsIDk4LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDg3LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDE5MSwgNTUsIAorICAgIDMsIDIzMywgMTc3LCA5NywgMTgyLCA1NSwgMywgMjMzLCAxNzcsIDk3LCAxODIsIDIwNSwgODMsIDQ4LCAxOTEsIDIwNSwgCisgICAgODMsIDQ4LCA5OCwgNTMsIDI0MSwgMjQ1LCA0OCwgODcsIDUzLCAyNDEsIDI0NSwgNDgsIDk4LCAyMDUsIDgzLCAyNDEsIAorICAgIDI0NSwgNDgsIDg3LCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIDg3LCAyMDQsIDE0MSwgMjA1LCA4MywgMjQxLCAyNDUsIDQ4LCAKKyAgICA4NywgNTUsIDMsIDIzOSwgMTgwLCAyMDgsIDkyLCAxODIsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDU1LCAyMDUsIDE4NiwgCisgICAgMTQ4LCA4NywgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA4NywgNTUsIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgODcsIAorICAgIDIwNCwgMTQxLCA1NSwgMywgMjA3LCA2LCA4NywgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgODcsIDIwNCwgCisgICAgMTQxLCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgMjUwLCAyMDQsIDg3LCAyNTAsIDIwNCwgOTgsIDUzLCAKKyAgICAyNTAsIDIwNCwgODcsIDUzLCAyNTAsIDIwNCwgOTgsIDU1LCAyMDUsIDE4NiwgNjMsIDI0MSwgNjQsIDg3LCA1NSwgMjA1LCAKKyAgICAxODYsIDYzLCAyNDEsIDY0LCA5OCwgNTUsIDIzNiwgMjAxLCAyNDksIDc3LCAyMDUsIDE4NiwgNjMsIDI0MSwgNjQsIDg3LCAKKyAgICA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgMTU3LCAyMDEsIDQ4LCAyNiwgMjA4LCAyNTQsIAorICAgIDIzOSwgMTQsIDQ4LCAxNTcsIDIzOSwgMTQsIDI2LCAyMDgsIDI1NCwgMjAxLCA0OCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIAorICAgIDMsIDExNywgMTU3LCAyMzksIDE0LCA1NSwgMywgMTE3LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDMsIDExNywgMjA4LCAKKyAgICAyNTQsIDIwMSwgNDgsIDU1LCAzLCAxMTcsIDE1NywgMjAxLCA0OCwgNTUsIDI2LCAxNTcsIDIzOSwgMTQsIDQ4LCAxNTcsIAorICAgIDIzOSwgMTQsIDU1LCAyNiwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDI2LCAyMDgsIAorICAgIDI1NCwgMjAxLCA0OCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA1NSwgMjYsIDE1NywgMjAxLCA0OCwgNDgsIDIxMywgMTksIAorICAgIDI0MSwgNzEsIDI0MiwgMjI4LCAyMzcsIDE3MSwgMjQxLCA3MCwgMjM3LCAxNzEsIDI0MSwgNzEsIDI0MiwgMjI4LCAyMTMsIAorICAgIDE5LCAyNDEsIDcwLCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDI0MiwgMjI4LCAxNTcsIDIzOSwgMTQsIDQ4LCAxNTcsIDIzOSwgCisgICAgMTQsIDU1LCAyNDIsIDIyOCwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyMzcsIDE3MSwgMjQxLCA3MSwgMjQyLCAyMjgsIAorICAgIDE1NywgMjM5LCAxNCwgNDgsIDIxMywgMTksIDI0MSwgNzEsIDI0MiwgMjI4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDE1NywgCisgICAgMjM5LCAxNCwgNTUsIDI0MiwgMjI4LCAxNTcsIDIwMSwgNDgsIDQ4LCAxNTcsIDIwMSwgNDgsIDU1LCAyNDIsIDIyOCwgMTU3LCAKKyAgICAyMzksIDE0LCA0OCwgMjAxLCA3OCwgNTUsIDIxNSwgOTYsIDI0MSwgNywgMjEzLCA0NiwgNTUsIDIxNSwgOTYsIDg3LCAyMDYsIAorICAgIDk4LCAyNDIsIDE4NiwgMjAzLCAyMTYsIDU1LCAyMTUsIDk2LCA4NywgMjA2LCA5OCwgMjQyLCAxODYsIDIzOSwgMTY1LCA1NSwgCisgICAgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAyNDIsIDE4NiwgMjI1LCAxOCwgNTUsIDIxNSwgOTYsIDE5MSwgMjA2LCA5OCwgMjQyLCAKKyAgICAxODYsIDIxMywgMzUsIDIxMywgMzgsIDI1MCwgMjM3LCAyNDYsIDExMiwgNDgsIDIyNSwgMjEsIDI1MCwgMjM3LCAyNTEsIAorICAgIDQ3LCA0OCwgMjA1LCAxNTgsIDI1MCwgMjM3LCAyNTEsIDQ3LCA0OCwgMjQ4LCA5MywgMjUwLCAyMzcsIDI1MSwgNDcsIDQ4LCAKKyAgICAyMDUsIDE1OCwgMjUwLCAyMzcsIDI0NiwgMTEyLCA1NSwgMywgMjIxLCAxNTYsIDIwNSwgMTU4LCAyNTAsIDIzNywgMjUxLCAKKyAgICA0NywgNTUsIDMsIDIxNSwgMTEzLCAyMjQsIDU0LCA1MSwgMjEwLCAxNjksIDI0NiwgMTEyLCA0OCwgMjI0LCA1NCwgNDksIAorICAgIDIxMCwgMTY5LCAyNTEsIDQ3LCA0OCwgMjUxLCA0NywgMjQ2LCAxMTAsIDI0NiwgMTU2LCA0OCwgMjQ2LCAxMTIsIDI0NiwgCisgICAgMTEwLCAyNDYsIDE1NiwgNDgsIDg3LCA1NSwgODgsIDIwOSwgMjUwLCA5OCwgNDgsIDk4LCA1NSwgODgsIDIwOSwgMjUwLCAKKyAgICA4NywgNDgsIDIwOSwgMjUwLCA4NywgNTUsIDg4LCA5OCwgNDgsIDg3LCA1NSwgMywgOTMsIDU3LCA5OCwgNTUsIDMsIDkzLCAKKyAgICA1NywgODcsIDU1LCAyMDYsIDM4LCAyMDAsIDE5NSwgNDksIDUxLCA1NSwgMjA2LCAzOCwgNCwgMjQ2LCAxNTUsIDE4MiwgCisgICAgMjA0LCAxNDEsIDU1LCAyMzYsIDIwMSwgNCwgMjQ2LCAxNTUsIDQ5LCAxNTQsIDExNSwgNTEsIDE1NCwgMTI3LCAyMzQsIAorICAgIDE2MCwgNDksIDE1NCwgMTI3LCA1MSwgMTU0LCAxMTUsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNTEsIDEyNywgMTU0LCA0OSwgCisgICAgMjM0LCAxNjAsIDExNSwgMTU0LCA0OSwgMTI3LCAxNTQsIDUxLCAyMzQsIDE2MCwgNDksIDE1NCwgMTE1LCA1MSwgMTU0LCAKKyAgICAxMTUsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNTEsIDEyNywgMTU0LCA1MSwgMjM0LCAxNjAsIDQ5LCAxNTQsIDEyNywgNTEsIAorICAgIDE1NCwgMTI3LCAyMzQsIDE2MCwgMTE1LCAxNTQsIDQ5LCAxMjcsIDE1NCwgNDksIDIzNCwgMTYwLCA5OCwgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMTE1LCAyMDUsIDE4NiwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMDUsIDE4NiwgMTQ4LCAKKyAgICAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMDUsIAorICAgIDE4NiwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyMDUsIDE4NiwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMTI3LCAyMDUsIDE4NiwgMTQ4LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDQ5LCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyMDUsIDE4NiwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMzYsIAorICAgIDIwMSwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMzYsIDIwMSwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMTI3LCAyMzYsIDIwMSwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyMzYsIDIwMSwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDQ5LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA4NywgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMTE1LCA4OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDQ5LCAyNDgsIDIxMiwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAKKyAgICA4OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjI4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCA4OCwgODcsIAorICAgIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgOTgsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDIwMywgMjI4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCA4OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDIzOSwgMTY3LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgMTY4LCAyNDEsIDI0NCwgOTgsIDIzNCwgMTYxLCAzLCAKKyAgICAxNTQsIDEyNywgMjQ4LCAyMjgsIDE2OCwgMjQxLCAyNDQsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCAxNjgsIAorICAgIDI0MSwgMjQ0LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyNDgsIDIyOCwgMTY4LCAyNDEsIDI0NCwgMTgyLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjQ4LCAyMTIsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgMTkxLCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCA0OSwgMjQ4LCAyMTIsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgNTEsIDUzLCA1NSwgMywgMjEyLCAKKyAgICAyMTksIDIzNCwgMTM2LCAyMzgsIDEyMiwgMiwgODgsIDg3LCA0OCwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA4NywgNDgsIAorICAgIDk4LCA1NSwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgODcsIDU1LCA4OCwgCisgICAgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMjQsIDI0MSwgODgsIDk4LCA0OCwgOTgsIDU1LCAyMDYsIDM4LCAyMjQsIDI0MCwgMjM1LCAKKyAgICA2NywgODgsIDg3LCA0OCwgMjA4LCAzLCA4OCwgODcsIDQ4LCA5OCwgNTUsIDIwNiwgMzgsIDIwOCwgMiwgMjA3LCAyMTIsIAorICAgIDg4LCA5OCwgNDgsIDQ5LCAyMzcsIDcyLCAyMDcsIDYsIDUxLCAyMzcsIDcyLCAyMDcsIDYsIDExNSwgMjM3LCA3MiwgMjA3LCAKKyAgICA2LCAxMjcsIDIzNywgNzIsIDIwNywgNiwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDI0MSwgMTQyLCAxOTksIDE1OCwgMjE4LCAKKyAgICAyMTMsIDIwOCwgMjA0LCAxOTksIDE1OCwgMjE4LCAyMTMsIDIwNCwgMTI4LCAyNDYsIDc5LCA0OSwgNjQsIDI0MiwgMTk2LCAKKyAgICAxNTksIDUxLCA2NCwgMjQyLCAxOTYsIDE1OSwgNDksIDY0LCAyMTYsIDExNSwgNTEsIDY0LCAyMTYsIDExNSwgMTk5LCAxNTgsIAorICAgIDIxOCwgMjEzLCA0OSwgMjI4LCAxMzMsIDE1OSwgMTk5LCAxNTgsIDIxOCwgMjEzLCA1MSwgMjI4LCAxMzMsIDE1OSwgMTk5LCAKKyAgICAxNTgsIDIxOCwgMjEzLCA0OSwgMjQ4LCAxNjcsIDE1OSwgMTk5LCAxNTgsIDIxOCwgMjEzLCA1MSwgMjQ4LCAxNjcsIDE1OSwgCisgICAgNDksIDUyLCAyNDgsIDcwLCAzLCAyMDMsIDI1MSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDMsIDI1MSwgNDksIDUyLCAyNDgsIAorICAgIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjA1LCAxNTgsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgCisgICAgMjI4LCAxMTgsIDI0OCwgOTMsIDI0MywgMTUsIDQ5LCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgMjI4LCAxMTgsIDI0OCwgCisgICAgOTMsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgMjI4LCAxMTgsIDIwNSwgMTU4LCAyNDMsIDE1LCAKKyAgICA0OSwgMjUxLCA3MSwgMjQ4LCA3MCwgMywgMjQwLCAxODIsIDUxLCAyNTEsIDcxLCAyNDgsIDcwLCAzLCAyNDAsIDE4MiwgNDksIAorICAgIDI1MCwgMjM3LCAyMjQsIDI0MSwgMTU5LCA1MSwgMjUwLCAyMzcsIDIzNSwgNjcsIDE1OSwgNTMsIDQ5LCAyNTAsIDIzNywgCisgICAgMjM1LCA2NywgMTU5LCA1MywgNTEsIDI1MCwgMjM3LCAyMjQsIDI0MSwgMTU5LCA0OSwgNjMsIDIwNSwgMTQ2LCAyMTAsIDU1LCAKKyAgICAxNTksIDUxLCA2MywgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMjM5LCAxODAsIDIzNywgMTI3LCA4MywgMTk5LCAyNywgCisgICAgMjI0LCAxNzYsIDIyMiwgNzMsIDI1MSwgNzEsIDIxNywgNDYsIDIyNSwgMjgsIDUxLCAyNTEsIDcxLCAyMDMsIDczLCAzLCAKKyAgICAyMDgsIDE5MywgMjIyLCA3MywgNTEsIDI1MSwgNzEsIDMsIDI0MCwgMTgyLCAyNTEsIDcxLCAzLCAyMTIsIDEyMywgMjI4LCAKKyAgICA3MywgMjUxLCAyMzksIDI1MSwgNzAsIDIwOCwgMjI0LCAyNTEsIDcxLCAyMTcsIDQ2LCAyMjUsIDI4LCAyMDgsIDIyNCwgCisgICAgMjUxLCA3MSwgMjE3LCA0NiwgMjAzLCAyMjgsIDIwNCwgMTg1LCAyNTEsIDcwLCAyMTMsIDEwNSwgMjUxLCA3MCwgMjUxLCAKKyAgICA3MSwgMywgMjAzLCAyNTEsIDIxMywgMTA1LCAyNTEsIDcxLCAzLCAyMDMsIDI1MSwgMjE3LCAxMzgsIDI1MSwgNzEsIDIxNywgCisgICAgNDYsIDIwMywgMjI4LCAyMTcsIDEzOCwgMjUxLCA3MSwgMjE3LCA0NiwgMjM5LCAxNjcsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIAorICAgIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDExNSwgMjYsIDIxMywgNDYsIDIyMiwgCisgICAgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDExNSwgMjYsIAorICAgIDIyNSwgMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgCisgICAgOTYsIDEyNywgMjYsIDIxMywgNDYsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIAorICAgIDExOCwgNTUsIDIxNSwgOTYsIDEyNywgMjYsIDIyNSwgMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIAorICAgIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDUxLCAyNiwgMjAzLCAyMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIAorICAgIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDQ5LCAyNiwgMjAzLCAyMjgsIDIyMiwgCisgICAgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDUxLCAyNiwgCisgICAgMjM5LCAxNjcsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIAorICAgIDIxNSwgOTYsIDQ5LCAyNiwgMjM5LCAxNjcsIDIxMywgMTA1LCAyMzgsIDE4MSwgMjEwLCAxNDEsIDIzOCwgMTgxLCAyMTAsIAorICAgIDE0MiwgMywgMjE2LCAyNDYsIDIzOCwgMTgxLCAyMTAsIDE0MiwgMywgNCwgMjQ2LCAxNTYsIDU2LCAyMzgsIDE4MSwgMjEwLCAKKyAgICAxNDIsIDMsIDUxLCA1NSwgNTYsIDIzOCwgMTgxLCAyMTAsIDE0MiwgMywgNDksIDU1LCA1NiwgMjQ2LCAxNTYsIDMsIDIzMywgCisgICAgMTc3LCAxNDgsIDQ0LCA4MywgMTQ4LCA0NCwgMjE2LCAxMjAsIDQ0LCAyMTMsIDEwNiwgMjA5LCAxNiwgNDQsIDIxNiwgMTQsIAorICAgIDI0NiwgMTU2LCAyNDAsIDI0MCwgMjQ3LCAyMzUsIDIzMywgMTc3LCAyNDksIDc3LCAyNiwgMjA1LCAxNTgsIDE2NywgMjQwLCAKKyAgICAyNDAsIDI0NywgMjM1LCA4MywgMTQ4LCAyNDYsIDE1NiwgMywgMjA3LCAyMTQsIDIwMCwgMTk1LCA0NCwgMjUxLCA0NSwgCisgICAgMjQwLCAyMzUsIDU0LCAxMTUsIDU1LCAyMDYsIDM4LCAyNDYsIDE1NSwgNDQsIDY0LCAyNDgsIDIwLCA0NCwgMjQ4LCAyMCwgCisgICAgNDQsIDIyNCwgMjQwLCA0NCwgMjM1LCA2NiwgMjQ2LCAxNTYsIDMsIDQsIDI0NiwgMTU2LCAyMDUsIDE4NiwgMjA2LCAxMDcsIAorICAgIDIxMywgNDYsIDI0NiwgMTU2LCAzLCAxMjAsIDIzMywgMTc3LCAyMDgsIDM1LCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIxMywgCisgICAgNDYsIDk1LCAyMTMsIDE5LCAyNDEsIDcxLCAyMDksIDc1LCA5NSwgMjM3LCAxNzEsIDI0MSwgNzEsIDIwOSwgNzUsIDk1LCAKKyAgICAyNTAsIDE2NSwgOTUsIDQsIDI0NiwgMTU1LCA5NSwgMjA4LCAxOTMsIDEyMCwgMjI3LCAxNjMsIDIwOCwgMTkxLCAyMDUsIAorICAgIDk5LCAzLCA3MywgNTYsIDIwNSwgOTksIDMsIDIwMywgMjUxLCAyMTIsIDEyMywgMjI4LCAxMTgsIDIwNSwgOTgsIDIwNSwgCisgICAgOTksIDMsIDIxMCwgMTQ4LCAyNTAsIDE1NiwgMjQ4LCA5MiwgNTEsIDIwNSwgOTksIDg4LCA0OSwgMjA1LCA5OCwgNDksIAorICAgIDIwNSwgOTksIDI0OCwgMjEyLCA4MywgMTQ4LCA4MywgMjQ5LCA3NywgMjQ4LCAyMTIsIDUxLCAyMDUsIDk4LCAyNDgsIDgwLCAKKyAgICAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjQ4LCA4MCwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDYzLCAyNDgsIDc5LCAyNCwgMywgCisgICAgNDksIDE2NywgMjQ4LCAxNDQsIDI0LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjQsIDIzMywgMTExLCA2MywgMjMzLCAxMTEsIAorICAgIDQ5LCAyMDEsIDIyLCAyMzcsIDEyNywgNTEsIDIwMSwgMjIsIDIzNywgMTI3LCA0OSwgNTMsIDIwMSwgMjIsIDIzNywgMTI3LCAKKyAgICA1MSwgNTMsIDIwMSwgMjIsIDIzNywgMTI3LCAyMjgsIDExMCwgMjI4LCA5NCwgMjA2LCA4LCAxMTksIDIyOCwgOTQsIDIyOCwgCisgICAgOTUsIDIyMCwgMjgsIDMsIDgzLCAxNDgsIDIzOSwgMTc0LCAyMjEsIDIzLCA1MiwgMywgMjQzLCAzNywgMjE2LCAyNTEsIAorICAgIDIyOCwgMTA3LCAyNTAsIDE4OCwgMjA5LCAyMTQsIDIxNSwgMSwgMjM4LCAxMjIsIDIsIDI2LCAyMDksIDc3LCAyMTYsIDEyMCwgCisgICAgMjM4LCAxMjIsIDIsIDI2LCAyMDksIDc3LCAyMTYsIDEyMSwgMywgMjA1LCAyNDEsIDU2LCAyMzIsIDIyMywgMjA1LCAxODYsIAorICAgIDI2LCAyMDksIDc3LCAyMTYsIDEyMCwgMjM1LCAxMjYsIDIwOCwgMTA4LCAyMDYsIDk1LCAyMzksIDE2NiwgMjA1LCA5OSwgMywgCisgICAgNDksIDE2NywgMjQ4LCAxNDQsIDIzOSwgMTY2LCAyMDUsIDk5LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjMsIDI0MSwgNjUsIAorICAgIDMsIDEyNywgNDgsIDYzLCAyMjQsIDQ5LCA2NCwgMjQ2LCAxNTYsIDMsIDEyNywgNDgsIDYzLCAyNDYsIDE1NiwgMywgMTI3LCAKKyAgICA0OCwgMjM4LCAxMDcsIDY0LCAyMDgsIDE5MywgMjM4LCAxMDcsIDYzLCAyMDgsIDE5MywgMjM4LCAxMDcsIDY0LCAyNDEsIAorICAgIDY0LCAyMzgsIDEwNywgNjMsIDI0MSwgNjQsIDIzOCwgMTA3LCA2NCwgMjQ2LCAxNTUsIDIzOCwgMTA3LCA2MywgMjQ2LCAKKyAgICAxNTUsIDIxMiwgMTY0LCAyMTMsIDEwNiwgMjA5LCAxNywgMjE3LCA0MywgMjA5LCAxNywgMywgMjE2LCAyNDYsIDIxMywgCisgICAgMTA2LCAyMDksIDE3LCAzLCAyMzMsIDE3NywgOTcsIDI0OCwgMTc1LCAyMDksIDE2LCAyNDgsIDE3NSwgMjEzLCAxMDYsIAorICAgIDIwOSwgMTYsIDUzLCAyMTUsIDExMywgMjA1LCA4MywgMjE1LCAxMTMsIDIyNSwgMjMsIDI0MiwgMTg4LCAyNTEsIDcxLCAKKyAgICAxNTksIDIxMywgNDEsIDI0MiwgMTg4LCAyNTEsIDcxLCAxNTksIDIwNSwgMjI1LCAyMjEsIDE1NCwgMjIwLCAyMTMsIDQ0LCAKKyAgICA3MywgMjE3LCA0MywgMjIwLCAyMTMsIDQ0LCA5MywgMjE3LCA0MywgMjIwLCAyMTMsIDQ0LCAyNCwgMjE3LCA0MywgMjIwLCAKKyAgICAyMTMsIDIwMywgMjQyLCAyMTcsIDQ0LCAzLCAyNDAsIDE4MiwgMjIwLCAyMTMsIDIwMywgMjQyLCAyMTcsIDQ0LCAzLCAyMTUsIAorICAgIDExMywgMjIwLCAyMTMsIDUyLCAyMjgsIDU2LCAyMTcsIDQzLCAyMjAsIDIxMywgNTIsIDIwMywgMjQyLCAyMTcsIDQzLCAKKyAgICAxMjAsIDIyNCwgOTgsIDI2LCAyMTcsIDQzLCAxMjAsIDIyNCwgOTgsIDIxNywgMzQsIDIxNywgNDMsIDIyMCwgMjEzLCAyNCwgCisgICAgMjE3LCA0MywgMjIxLCAxMTAsIDEyMCwgMjA3LCAyMzQsIDIwNywgMjMyLCAzLCAyMjgsIDY5LCAyMTQsIDkwLCAyMjgsIDcwLCAKKyAgICAyMTcsIDQzLCAyMzcsIDgwLCAyMTYsIDExMCwgMjI4LCA2OSwgMjI4LCA3MCwgMywgNTMsIDk3LCAyMjgsIDcwLCAyNTAsIAorICAgIDEyMCwgMywgMjA5LCA3NSwgMjQ2LCAxNDgsIDIzNiwgMTgwLCAyNTEsIDQ3LCAyMjgsIDY3LCAyMjQsIDE3NywgMjI4LCA2OCwgCisgICAgMywgMjEzLCAxNzQsIDIxNiwgOTEsIDI1MCwgMjEyLCAyMTUsIDkwLCAyMjQsIDE3NywgMjI4LCA2OCwgMywgMjEwLCAxNjksIAorICAgIDIxNiwgOTEsIDI1MCwgMjEyLCAyMTUsIDkwLCAyMjQsIDE3NywgMjI4LCA2OCwgMjE4LCAyMTUsIDIyOCwgMTEyLCAyMDYsIAorICAgIDEwNywgMjE1LCA5MCwgMjI4LCA3MCwgMjUwLCAyMTIsIDM1LCAyMTUsIDEwMCwgMjE3LCA0MywgMjE0LCA4NCwgMjI4LCA3MCwgCisgICAgMjE3LCA0MywgMjI4LCA3MCwgMywgOTgsIDU1LCAzLCAxMTcsIDIyOCwgNzAsIDMsIDI0LCA1NCwgMjI4LCA3MCwgMywgMjI4LCAKKyAgICA1NSwgMjI4LCA3MCwgMywgMjAzLCAyNDEsIDIyOCwgNzAsIDMsIDIxNiwgMjQ2LCAyMjgsIDcwLCAzLCAyMDMsIDI1MSwgCisgICAgMjI3LCAxNjQsIDIyNSwgNzEsIDQ5LCAyMDUsIDk5LCAyMTcsIDQzLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgMjI0LCAKKyAgICAyNDMsIDczLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgMjI0LCAyMTUsIDE1MSwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTEsIAorICAgIDIyNCwgMjE0LCAyNTIsIDkzLCAyLCAzLCA0LCAyNDYsIDE1NiwgNTYsIDkzLCAyLCAzLCAyNDYsIDE0NywgMjUxLCAyNTIsIAorICAgIDU2LCA5MywgMiwgMywgMjA1LCAyNDEsIDU2LCA5MywgMiwgMywgNzMsIDU3LCA5MywgMiwgMywgMjA1LCAyNDEsIDU3LCA5MywgCisgICAgMiwgMywgMjA4LCA0LCAxMDUsIDkzLCAyLCAzLCA2MywgMjA1LCA5OCwgMjIxLCAxNTcsIDIsIDMsIDI0NiwgNzEsIDU2LCAKKyAgICAyMjEsIDE1NywgMiwgMywgNzMsIDU3LCAyMjEsIDE1NywgMiwgMywgMjM3LCAxNzEsIDI0MCwgMTgwLCAyMjEsIDE1NywgMiwgCisgICAgMywgMjEzLCAxOSwgMjQwLCAxODAsIDkzLCAyLCAyMjgsIDExOCwgNDksIDE2NywgMjQ2LCAxNTUsIDkzLCAyLCAyMjgsIAorICAgIDExOCwgNTEsIDE2NywgMjQ2LCAxNTUsIDIwMywgNTgsIDIxNywgMzQsIDI0MiwgMjM1LCAyMTUsIDEsIDIyMSwgMTksIDIsIAorICAgIDMsIDczLCA1NiwgMjIxLCAxOSwgMiwgMywgMjAzLCAyNTEsIDIxMCwgMTY2LCAyMTUsIDIsIDMsIDI0OCwgOTMsIDI0NiwgCisgICAgMTA5LCAyMDksIDUxLCAyMTUsIDEsIDIyMSwgMTksIDIsIDIyOCwgMTE4LCA0OSwgMTY3LCAyNDYsIDE1NSwgMjIxLCAxOSwgCisgICAgMiwgMjI4LCAxMTgsIDUxLCAxNjcsIDI0NiwgMTU1LCA0NCwgMjIxLCAxOSwgMiwgMywgMjQ2LCAxNDcsIDI1MSwgMjUxLCAKKyAgICAyMjEsIDE5LCAyLCAyMjgsIDExOCwgNTMsIDI0NiwgMTU1LCA0NCwgMjQwLCAyMzUsIDU0LCA5MywgMiwgMjI4LCAxMTgsIAorICAgIDIwNSwgOTgsIDIyMSwgMTU3LCAyLCAyMjgsIDExOCwgMjA1LCA5OCwgMjIxLCAxOSwgMiwgMjI4LCAxMTgsIDIwNSwgOTgsIAorICAgIDIyOCwgNjQsIDIxNSwgMSwgMjEzLCAzNiwgMjI4LCA2NCwgMjE1LCAxLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMywgMTQ4LCAKKyAgICAyNDMsIDczLCAyNTEsIDk5LCAyMTcsIDM0LCAyNDMsIDIxLCAyMjgsIDU2LCAzLCAyNDAsIDE4MiwgMjAzLCAyNDIsIDMsIAorICAgIDIyMSwgMTU3LCA1NCwgMjAzLCAyNDIsIDMsIDIxNiwgMjQ2LCAyMjgsIDU2LCAzLCAyMTYsIDI0NiwgMjI4LCA1NiwgMywgCisgICAgMjI0LCA5OCwgMjUxLCA3OSwgMjAzLCAyNDIsIDMsIDIyNCwgOTgsIDIxNywgMzMsIDIwMywgMjQyLCA4OCwgMjI4LCA1NSwgCisgICAgMjI4LCA1NiwgODgsIDIwMywgMjQxLCAyMDMsIDI0MiwgODgsIDI0OSwgNzcsIDg4LCAyMjgsIDU1LCAyMjgsIDU2LCA4OCwgCisgICAgMjQ5LCA3NywgODgsIDIwMywgMjQxLCAyMDMsIDI0MiwgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMywgMjAzLCAyNDEsIAorICAgIDIyOCwgNTYsIDI0OCwgMjEyLCAyNiwgMjI3LCAxNjMsIDMsIDIyOCwgNTUsIDI0NiwgMTEwLCAyMDMsIDI0MiwgMywgMjEwLCAKKyAgICAxNDcsIDI0NiwgMTEwLCAyMjgsIDU2LCAzLCAyMTAsIDE0NywgNTMsIDUyLCAyMjgsIDU1LCA1MywgNTIsIDIwMywgMjQxLCAKKyAgICAyNDYsIDExMCwgMjAzLCAyNDIsIDMsIDIxMCwgMTQ4LCAyNiwgMjA5LCA1MSwgMjE1LCAxLCAyMjQsIDk4LCAyNiwgMywgNzMsIAorICAgIDU2LCAyMjQsIDk4LCAyMTcsIDM0LCAzLCA3MywgNTYsIDUzLCAyMjQsIDk4LCAyNTEsIDc5LCA1MywgMjI0LCA5OCwgMjE3LCAKKyAgICAzMywgMTIwLCAyMjgsIDU3LCAyMjQsIDk4LCAyNTEsIDc5LCAxMjAsIDIyOCwgNTcsIDIyNCwgOTgsIDIxNywgMzMsIDIwOSwgCisgICAgNjAsIDIyNSwgNzEsIDIxNywgMzMsIDIwOSwgNjAsIDIyNSwgNzEsIDI1MSwgNzksIDIyNCwgOTgsIDIxNywgMzQsIDIxNiwgCisgICAgMjQzLCAyMjQsIDk4LCAyNTEsIDc5LCAyMjQsIDk4LCAyNiwgMywgMTAxLCAyMDgsIDkyLCAyMjQsIDk4LCAyMTcsIDM0LCAzLCAKKyAgICAxMDEsIDIwOCwgOTIsIDIyNCwgOTgsIDI2LCAzLCAyMzMsIDE3NywgMjQxLCAyNDQsIDIyNCwgOTgsIDIxNywgMzQsIDMsIAorICAgIDIzMywgMTc3LCAyNDEsIDI0NCwgMjI0LCA5OCwgMjYsIDMsIDUzLCAyMTYsIDI0NiwgMjI0LCA5OCwgMjYsIDMsIDIwMywgCisgICAgMjUxLCAyMjQsIDk4LCAyNiwgMywgNTMsIDIwMywgMjUxLCA0LCAyMDMsIDU1LCAzLCAyMDMsIDI1MSwgMjI0LCA5OCwgMjE3LCAKKyAgICAzNCwgMywgNTMsIDIxNiwgMjQ2LCAyMjQsIDk4LCAyMTcsIDM0LCAzLCA1MywgMjAzLCAyNTEsIDE5OSwgMTU4LCAyMTgsIAorICAgIDIxMywgMjQwLCAxOTEsIDI1MSwgMzcsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjEzLCAyMTEsIDI1MSwgMzcsIDIzOCwgMTIyLCAKKyAgICAyLCAzLCA3MywgNTcsIDIzMiwgMjIzLCAzLCA3MywgNTYsIDIwNSwgODMsIDIzMywgMTc3LCAyNDksIDc3LCAzLCA1MywgODMsIAorICAgIDk3LCAyMDUsIDgzLCAyMzMsIDE3NywgMjQ5LCA3NywgMywgMjA1LCA4MywgODMsIDk3LCAyMDUsIDI0MSwgMjE3LCA0NCwgMywgCisgICAgNzMsIDU2LCAyMDUsIDI0MSwgMjE3LCA0NCwgMywgMjEzLCAxOSwgMjQwLCAxODAsIDIwOSwgMTQ4LCAyMjEsIDE1NywgMjA5LCAKKyAgICAxNDcsIDI0MywgNjAsIDMsIDczLCA1NiwgMjM4LCAxMjIsIDMsIDI1MCwgMTY1LCAyNTEsIDExNywgMTYwLCAyMDUsIDE4NiwgCisgICAgMywgMjQ2LCAxNDcsIDI1MSwgMjUxLCAyNTEsIDQsIDE2MCwgMjE3LCAzNCwgMTYwLCAxMzgsIDIzOCwgMTIyLCAyLCA4OCwgCisgICAgOTMsIDU0LCA5MywgMiwgODgsIDIzOCwgMTIyLCA1NCwgMjM4LCAxMjIsIDIsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgNTMsIAorICAgIDI0NiwgODAsIDIzOCwgMTIzLCAxMjAsIDI0MywgNTMsIDIzOCwgMTIyLCAyMDksIDE2MiwgMTI2LCAyNDMsIDUzLCAyMzgsIAorICAgIDEyMiwgMjA5LCAxNjIsIDIzOCwgMTIyLCAyLCAzLCAxMjAsIDE5MCwgODgsIDI2LCAxMjAsIDE5MCwgNTcsIDIzOCwgMTE3LCAKKyAgICAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgMjI0LCAyNDEsIDMsIDI0NiwgMTU2LCAyMjgsIDczLCAyMzUsIDY3LCAzLCAyNDYsIAorICAgIDE1NiwgMjI4LCA3MywgMjI0LCAyNDEsIDMsIDIxNCwgNzksIDEzNCwgNTYsIDIzNSwgNjcsIDMsIDIxNCwgNzksIDEzNCwgCisgICAgNTYsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAKKyAgICAxMzgsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgMjI4LCA3MywgMjM1LCA2NywgCisgICAgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDIyOCwgNzMsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIAorICAgIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgNTYsIDIzNSwgNjcsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIAorICAgIDMsIDczLCA1NiwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA4OCwgMjEzLCA0NiwgCisgICAgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDg4LCAyMjUsIDI4LCAyMjQsIDI0MSwgCisgICAgMjE3LCAzNCwgMjUxLCA1LCAyMzUsIDY3LCAyMTcsIDM0LCAyNTEsIDUsIDIyNCwgMjQxLCAyNiwgMjA5LCAxMzcsIDIxOCwgCisgICAgMjE1LCAxNjAsIDEzOCwgMjM1LCA2NywgMjYsIDIwOSwgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIyNCwgMjQxLCAyNiwgCisgICAgMjE4LCAyMTUsIDI1MSwgNSwgMjM1LCA2NywgMjYsIDIxOCwgMjE1LCAyNTEsIDUsIDIyNCwgMjQxLCA4OCwgMjM5LCAxNzMsIAorICAgIDE2MCwgODgsIDIzNSwgNjYsIDIzNSwgNjcsIDg4LCAyMzksIDE3MywgMTYwLCA4OCwgMjI0LCAyNDAsIDIyNCwgMjQxLCA4OCwgCisgICAgMjA5LCAxNDgsIDIxNywgMzQsIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjA5LCAxNDgsIDIxNywgMzQsIDIzOCwgMTIzLCAKKyAgICAyMjQsIDI0MSwgODgsIDIwOSwgMTQ4LCA4OCwgMjM1LCA2NiwgMjM1LCA2NywgODgsIDIwOSwgMTQ4LCA4OCwgMjI0LCAyNDAsIAorICAgIDIyNCwgMjQxLCA4OCwgMjM1LCA2NywgODgsIDIzOSwgMTczLCAyMzgsIDEyMywgMjM1LCA2NywgODgsIDIyNCwgMjQxLCA4OCwgCisgICAgMjM5LCAxNzMsIDIzOCwgMTIzLCAyMjQsIDI0MSwgODgsIDIwOSwgNzcsIDE2MCwgODgsIDIzNSwgNjcsIDg4LCAyMDksIDc3LCAKKyAgICAyMzgsIDEyMywgMjM1LCA2NywgODgsIDIwOSwgNzcsIDE2MCwgODgsIDIyNCwgMjQxLCA4OCwgMjA5LCA3NywgMjM4LCAxMjMsIAorICAgIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIAorICAgIDM0LCAyMzUsIDY2LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MSwgMywgNzMsIDIyOCwgNzMsIAorICAgIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjcsIDMsIDczLCAyMjgsIDczLCAyMzksIDE3MywgMTYwLCAKKyAgICAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIzOSwgMTczLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAKKyAgICAyMzksIDE3MywgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIzOSwgMTczLCAyMDksIDc3LCAKKyAgICAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAyMDksIDE0OCwgMjE3LCAzNCwgMjI0LCAyNDAsIDIwOSwgMTQ4LCAKKyAgICAyMTcsIDM0LCAyMzUsIDY2LCAyMDksIDE0OCwgODgsIDIyNCwgMjQxLCA4OCwgMjM4LCAxMjIsIDU0LCAyMDksIDE0OCwgODgsIAorICAgIDIzNSwgNjcsIDg4LCAyMzgsIDEyMiwgNTQsIDUzLCAyMjAsIDE1LCAyMjQsIDI0MCwgNTMsIDIyMCwgMTUsIDIzNSwgNjYsIAorICAgIDUzLCAyMjAsIDE1LCAyMjQsIDI0MSwgMywgMjAzLCAyNTEsIDIzNSwgNjcsIDIxNiwgMjQzLCAyMjQsIDI0MCwgMjM1LCA2NywgCisgICAgMjQ4LCAyMTIsIDIyNCwgMjQwLCAyMjQsIDI0MSwgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE4OSwgMjM1LCA2NywgMjQ2LCAKKyAgICAxMTAsIDI0NywgMjM1LCAyNDIsIDE4OSwgMjI0LCAyNDEsIDI0NiwgMTEwLCAyNDcsIDIzNSwgMjQyLCAxOTAsIDg4LCAyMDksIAorICAgIDc3LCAyMzgsIDEyMywgMjM1LCA2NywgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE5MCwgODgsIDIwOSwgNzcsIDIzOCwgCisgICAgMTIzLCAyMDksIDUyLCAyMDYsIDExMSwgMjI1LCA2OSwgMjA2LCAxMTEsIDIwOSwgNTIsIDIwNiwgMTEyLCAyMTcsIDM0LCAKKyAgICAxNjAsIDEzOCwgMjI1LCA2OSwgMjA2LCAxMTIsIDIxNywgMzQsIDE2MCwgMTM4LCAyMzgsIDEyMiwgMiwgMywgMjQ4LCAxMywgCisgICAgNTYsIDIxNSwgMjksIDg4LCAyMDksIDEzNywgMjM4LCAxMjIsIDU0LCAyMDcsIDI1MSwgODgsIDIwOSwgMTM3LCAyMzgsIAorICAgIDEyMiwgNTQsIDIxNSwgMjksIDg4LCAyMDksIDEzNywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIwOSwgCisgICAgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIxNSwgMjksIDg4LCAyMzgsIDEyMiwgNTQsIDIwNywgMjUxLCA4OCwgMjM4LCAKKyAgICAxMjIsIDU0LCAyMTUsIDI5LCA4OCwgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIxOCwgMjE1LCAxNjAsIAorICAgIDEzOCwgMjE1LCAyOSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIAorICAgIDIxNSwgMjksIDg4LCAyMTgsIDIxNSwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIxOCwgMjE1LCAyNTEsIAorICAgIDExNywgMTYwLCAxMzgsIDUzLCAyMTUsIDI4LCA1MywgMjA3LCAyNTAsIDIwOCwgMywgMywgMjQwLCAxODIsIDIwNywgMjEyLCAKKyAgICAzLCAyNDAsIDE4MiwgMjA4LCAzLCAzLCA5MywgMiwgNTcsIDIwNywgMjEyLCAzLCA5MywgMiwgNTcsIDIwOCwgMywgMywgCisgICAgMjIxLCAxOSwgMiwgNTcsIDIwNywgMjEyLCAzLCAyMjEsIDE5LCAyLCA1NywgMjA4LCAzLCA3NiwgMjE3LCAzNCwgMTYwLCAKKyAgICAyMDUsIDE4NiwgMywgNzMsIDU2LCAyMDcsIDIxMiwgNzYsIDIxNywgMzQsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA1NiwgCisgICAgMjA4LCAzLCA3NiwgODgsIDIzOCwgMTIyLCA1NCwgMjA3LCAyMTIsIDc2LCA4OCwgMjM4LCAxMjIsIDU0LCAyMDgsIDMsIDc2LCAKKyAgICA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDIwNywgMjEyLCA3NiwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCAyMDgsIDMsIDc2LCAKKyAgICA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDIxMiwgNzYsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgODgsIDIxOCwgMjE1LCAxNjAsIDEzOCwgNTIsIDQ5LCAKKyAgICAxNzYsIDEwMCwgMjE3LCA0MywgNTIsIDUxLCAxNzYsIDEwMCwgMjE3LCA0MywgMjQ2LCAxMTAsIDIwOCwgMiwgMjQ2LCAxMTAsIAorICAgIDIwNywgMjExLCAyNDYsIDExMCwgMjA4LCAzLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjQ2LCAxMTAsIDIwNywgMjEyLCAyMTcsIAorICAgIDM0LCAxNjAsIDEzOCwgMjA4LCAzLCA4OCwgMjA3LCAyMTEsIDIwNywgMjEyLCA4OCwgMjA4LCAyLCAyMDgsIDMsIDg4LCAKKyAgICAyMDgsIDIsIDIwNywgMjEyLCA4OCwgMjA3LCAyMTEsIDIwNywgMjEyLCAyNDgsIDIxMiwgMjA4LCAyLCAyMDcsIDIxMiwgCisgICAgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMjQ3LCAyMzUsIDI0MSwgMjQ1LCAzLCAyMDgsIDIsIDIzOCwgMjAyLCA3NiwgMjE3LCAKKyAgICA0NiwgMjM5LCAxNjUsIDIxNSwgMTQxLCAzLCAyMDYsIDE5MSwgMjA1LCAxNTcsIDIwNSwgMTE1LCAyMjgsIDU1LCAyMzYsIAorICAgIDI0MywgMjE4LCAyMzAsIDIwOSwgMjUwLCA0OSwgMjA3LCAxNywgMjA5LCAyNTAsIDEyNywgMjA3LCAxNywgMjA5LCAyNTAsIAorICAgIDExNSwgMjA3LCAxNywgMjE2LCAxNSwgMywgMjEyLCAxMjIsIDgzLCAyNDksIDc3LCAyMDUsIDgzLCA1MSwgMjA0LCAxODQsIAorICAgIDUzLCA4MywgMjQ5LCA3NywgNDksIDIwNCwgMTg0LCA4MywgMjQ5LCA3NywgNTMsIDQ5LCAyMDQsIDE4NCwgNTMsIDgzLCAKKyAgICAyNDksIDc3LCA1MywgNDksIDIwNCwgMTg0LCAxNjgsIDI0MSwgMjQ1LCAyMzYsIDIwMSwgNDksIDIyMiwgNDUsIDc2LCA1MywgCisgICAgMjAzLCA0MiwgMjA5LCAyNTAsIDEyNywgMjA3LCAxOCwgMywgMjE2LCAyNDYsIDIwOSwgMjUwLCAxMTUsIDIwNywgMTgsIDMsIAorICAgIDIwMywgMjUxLCAyMDksIDI1MCwgMTE1LCAyMDcsIDE4LCA4OCwgMjA5LCAyNTAsIDEyNywgMjA3LCAxNywgNTMsIDEyNywgCisgICAgMjA3LCAxNywgNTMsIDExNSwgMjA3LCAxNywgNTMsIDIwOCwgNDcsIDIxOCwgMjE1LCA1NCwgMjEzLCAxMDUsIDUzLCAyMDgsIAorICAgIDQ3LCAyMTgsIDIxNSwgNTQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQwLCAyNDIsIDMsIDIxMywgMTA1LCAyMjAsIDI3LCAKKyAgICAyMDksIDc1LCA4MywgMjI0LCAxNzcsIDMsIDI0NiwgMTU2LCA1NiwgODMsIDIyNCwgMTc3LCAzLCAyNDYsIDE1NiwgNTcsIAorICAgIDEyNywgMjA3LCAxOCwgMywgMjQ2LCAxNTYsIDU3LCAyMTYsIDEyMSwgMywgMjMzLCAxNzcsIDk3LCAyMTYsIDEyMSwgMywgCisgICAgMjA1LCAyNDEsIDIxNywgNDMsIDIwNSwgODMsIDgzLCAyNDksIDc3LCAyNDgsIDE2OSwgMjEzLCAxNDksIDIwNSwgODMsIDgzLCAKKyAgICAyNDksIDc3LCAzLCAyMzMsIDE3NywgOTcsIDIwNSwgODMsIDI0NiwgODAsIDIxNywgNDMsIDIwNSwgODMsIDIyMCwgMTUsIAorICAgIDIyNCwgMjQwLCAyMDUsIDgzLCAyMjAsIDE1LCAyMzUsIDY2LCAyMzksIDE3MywgMjA5LCA3NywgMjI0LCAyNDEsIDIxNywgCisgICAgMzQsIDE2MCwgMTM4LCAyMzksIDE3MywgMjA5LCA3NywgMjM1LCA2NywgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNSwgODMsIAorICAgIDIwOSwgMTcsIDI0OCwgMTY5LCAyMTMsIDE0OSwgMjI1LCA3MSwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDIxNywgNDMsIDUzLCAKKyAgICAyMDksIDE3LCAyMTcsIDQzLCA2NCwgODMsIDE0OCwgMjIwLCAyMTMsIDY0LCA4MywgMTQ4LCAxNTcsIDIzOSwgMTQsIDY0LCAKKyAgICA0OCwgMTU3LCAyMDEsIDQ4LCA2NCwgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCA2NCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICA2NCwgNDgsIDQ5LCA1MSwgNjQsIDQ4LCA5OCwgNjMsIDQ4LCAxODIsIDYzLCA0OCwgMTkxLCA2MywgNDgsIDE1NywgMjM5LCAKKyAgICAxNCwgNjMsIDQ4LCAxNTcsIDIwMSwgNDgsIDYzLCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDYzLCA0OCwgMjA4LCAyNTQsIAorICAgIDIwMSwgNDgsIDYzLCA0OCwgNDksIDUxLCA2MywgNDgsIDExNSwgMTI3LCA2MywgNDgsIDg3LCA1NSwgMywgMjA1LCAyMjQsIAorICAgIDIzOSwgMTY1LCA4NywgNTUsIDMsIDIwNSwgMjI0LCAyMDMsIDIxNiwgOTgsIDU1LCAzLCAyMDUsIDIyNCwgMjM5LCAxNjUsIAorICAgIDk4LCA1NSwgMywgMjA1LCAyMjQsIDIwMywgMjE2LCA1MiwgMywgMjA1LCAxNTgsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAKKyAgICAyNDgsIDkzLCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCA1MiwgCisgICAgMywgMjI0LCA1NCwgNDksIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDI0MSwgNjUsIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAKKyAgICAyNDEsIDY1LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjQxLCA2NSwgMywgMjA1LCAxNTgsIDE2NywgMjQ4LCAxNDQsIDI0MSwgCisgICAgNjUsIDMsIDI0OCwgOTMsIDE2NywgMjQ4LCAxNDQsIDIzOSwgMTgwLCAyMDgsIDE5MywgNjMsIDIyNSwgNzEsIDIwOCwgMTkzLCAKKyAgICA2NCwgMjI1LCA3MSwgMjA4LCAxOTMsIDYzLCAyMDIsIDI0NiwgNCwgMjA4LCAxOTMsIDY0LCAyMDIsIDI0NiwgNCwgMjA4LCAKKyAgICAxOTMsIDYzLCAyMTYsIDM3LCA2NCwgMjE2LCAzNywgNjQsIDIzNCwgODksIDYzLCAyMzQsIDg5LCAyMzMsIDE3NywgNjMsIAorICAgIDIzNCwgODksIDYzLCAyMjUsIDcxLCAyNDYsIDE1NSwgNjMsIDIyMiwgNjYsIDI0MSwgNjQsIDY0LCAyMjIsIDY2LCAyNDEsIAorICAgIDY0LCA2MywgMjIyLCA2NiwgMjI0LCA0OSwgNjQsIDIyMiwgNjYsIDIyNCwgNDksIDYzLCA0LCAyNDEsIDY0LCA2MywgNCwgCisgICAgMjI0LCA0OSwgNjQsIDQsIDIyNCwgNDksIDYzLCAyMzMsIDE3NywgMjM4LCAxOTYsIDY0LCAyMzMsIDE3NywgMjM4LCAxOTYsIAorICAgIDYzLCA4MywgMjM4LCAxOTYsIDY0LCA4MywgMjM4LCAxOTYsIDQ5LCA1NSwgMywgNCwgMjQ2LCAxNTUsIDEyNiwgOTgsIDI1MCwgCisgICAgMTk5LCA0OSwgNTUsIDMsIDQ0LCAyMTUsIDExMywgMTY4LCA5OCwgMjA4LCAxODYsIDQ4LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCAKKyAgICA4MywgOTcsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDUzLCA4MywgOTcsIDk4LCAyMDQsIDE0MSwgNTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDk4LCAyMDQsIDE0MSwgMjA1LCA4MywgMjQxLCAyNDUsIDQ4LCA5OCwgNTUsIDMsIDIzOSwgMTgwLCAyMDgsIDkyLCA5OCwgCisgICAgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA5OCwgNTUsIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCAKKyAgICA1NSwgMywgMjA3LCA2LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgCisgICAgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgNTUsIDIwNiwgMzgsIDIwMCwgMTk1LCAyMDEsIDc4LCA1NSwgMjE1LCAKKyAgICA5NiwgMjQxLCA3LCAyMjUsIDI4LCAyMzgsIDEyMiwgMiwgODgsIDk4LCA0OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAyMTcsIAorICAgIDQ0LCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDg4LCAyMTMsIDEwNiwgMjUxLCAxMTcsIDE2MCwgMTM4LCA4NywgNTUsIDIwNiwgCisgICAgMzgsIDIzNSwgNjYsIDg3LCA1NSwgMjA2LCAzOCwgMjA3LCAyMTEsIDk4LCAyMTQsIDkwLCA0OCwgODcsIDIxNCwgOTAsIDQ4LCAKKyAgICAyMTMsIDEwNiwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA4NywgNDgsIDg3LCA1NSwgODgsIDIxMywgMTA2LCAyNTEsIDExNywgCisgICAgMTYwLCAxMzgsIDIwNSwgMjQxLCAyMTcsIDQ0LCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIAorICAgIDk4LCA1NSwgODgsIDIxMywgMTA2LCAyMDUsIDI0MSwgMjE3LCA0MywgODcsIDU1LCA4OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAKKyAgICAyMTcsIDQzLCAxOTEsIDIwNSwgOTcsIDE5OSwgMjcsIDQ4LCAyMDksIDI1MCwgMjA5LCA3NywgMTU3LCA0OCwgMjA5LCAyNTAsIAorICAgIDI0OSwgMTI2LCAyMDgsIDI1NCwgNDgsIDY0LCAyMjIsIDY2LCAyMDgsIDEwOSwgNjMsIDQsIDIwOCwgMTA5LCA2NCwgNCwgCisgICAgMjA4LCAxMDksIDYzLCAyMTMsIDQxLCAyMTYsIDM3LCA2NCwgMjEzLCA0MSwgMjE2LCAzNywgODAsIDIyNSwgNzEsIDI0NiwgCisgICAgMTU1LCA4MCwgMjE2LCAyNDgsIDMsIDIxNiwgMjQ4LCAyMjgsIDczLCA4MCwgMjQ2LCAxNTYsIDMsIDI0NiwgMTU2LCAyMjgsIAorICAgIDczLCA4MCwgMjQ2LCAxNTUsIDgwLCA0NCwgMjEyLCAyNCwgMjA5LCA3NywgMTU3LCA1NSwgMywgMjMzLCAxODYsIDIzNCwgCisgICAgMTM2LCAyNDksIDEyNiwgMjA4LCAyNTQsIDU1LCAzLCAyMzMsIDE4NiwgMjA3LCA2LCAyMDksIDc3LCAxNTcsIDU1LCAzLCAKKyAgICAyMzMsIDE3NywgMjA3LCA2LCAyNDksIDEyNiwgMjA4LCAyNTQsIDU1LCAzLCAyMzMsIDE3NywgMjA3LCA2LCAyNDgsIDIyMCwgCisgICAgNTUsIDIxNSwgOTYsIDE5MSwgMjA2LCA5OCwgMTU3LCAyMzksIDEzLCAyMDksIDI1MCwgMjQ4LCAyMjAsIDU1LCAyMTUsIDk2LCAKKyAgICAxOTEsIDIwNiwgOTgsIDE1NywgMjM5LCAxMywgOTgsIDIwNSwgOTcsIDQ4LCAxODIsIDIwNSwgOTcsIDQ4LCA4NywgMjA1LCAKKyAgICA5NywgNDgsIDE5MSwgMjA1LCA5NywgNDgsIDQ5LCA1MSwgMjA1LCA5NywgNDgsIDExNSwgMTI3LCAyMDUsIDk3LCA0OCwgCisgICAgMTU3LCAyMDEsIDQ4LCAyMDUsIDk3LCA0OCwgMTU3LCAyMzksIDE0LCAyMDUsIDk3LCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIAorICAgIDIwNSwgOTcsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjA1LCA5NywgNDgsIDk4LCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIAorICAgIDE4MiwgMjA1LCA5NywgMjQxLCAyNDMsIDQ4LCA4NywgMjA1LCA5NywgMjQxLCAyNDMsIDQ4LCAxOTEsIDIwNSwgOTcsIDI0MSwgCisgICAgMjQzLCA0OCwgMjQ2LCAxMTIsIDIwNSwgOTcsIDE3NiwgMjQ2LCAxNTYsIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCAxNzYsIAorICAgIDI0NiwgMTU2LCA0OCwgOTgsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxODIsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgCisgICAgMTQ4LCA4NywgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIAorICAgIDE1NywgMjAxLCA0OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE1NywgMjM5LCAxNCwgMjA1LCA5NywgNTUsIDIwNSwgCisgICAgMTg2LCAxNDgsIDIwOCwgMjU0LCAyMzksIDE0LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMjA4LCAyNTQsIDIwMSwgCisgICAgNDgsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCA5OCwgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgOTcsIAorICAgIDE4MiwgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgOTcsIDg3LCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCAKKyAgICA5NywgMTkxLCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgMjMzLCAxNzcsIDIwNywgMjUsIDIyNiwgMjE0LCAKKyAgICA4MywgMjA3LCAyNSwgMjI2LCAyMTQsIDk4LCAyMDUsIDk3LCA1NSwgMTE5LCA4NywgMjA1LCA5NywgNDgsIDE4MiwgMjA1LCAKKyAgICA5NywgNTUsIDk4LCA3NiwgMTkxLCAyMDUsIDk3LCA0OCwgODcsIDIwNSwgOTcsIDU1LCAxMTksIDk4LCAyMDUsIDk3LCA0OCwgCisgICAgMTkxLCAyMDUsIDk3LCA1NSwgOTgsIDc2LCAxODIsIDIwNSwgOTcsIDQ4LCA5OCwgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgCisgICAgMTk5LCAxODIsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgODcsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgCisgICAgMTkxLCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAxOTksIDk4LCA2MywgNDQsIDY0LCA0OCwgMTgyLCA2MywgNDQsIDY0LCAKKyAgICA0OCwgODcsIDYzLCA0NCwgNjQsIDQ4LCAxOTEsIDYzLCA0NCwgNjQsIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCA1MSwgMjA0LCAKKyAgICA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDI0OCwgOTMsIDIwNCwgOTksIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCA0OSwgCisgICAgMjA0LCA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDIwNSwgMTU4LCAyMDQsIDk5LCA0OCwgMjEzLCAxMTAsIDIyNSwgMjgsIAorICAgIDIxMywgMTEwLCAyMTMsIDQ2LCAyMjAsIDYsIDIyNSwgMjgsIDIyMCwgNiwgMjEzLCA0NiwgMjM2LCAyMjksIDI0MywgMTYsIAorICAgIDI1MCwgMjAwLCAyNDYsIDE1MSwgMjUxLCA0NiwgODcsIDYzLCA0OCwgMjA2LCA0NSwgMjA1LCAxNTYsIDk4LCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDIwNiwgNDUsIDIxMywgNDIsIDE4MiwgMjM4LCAxMTgsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyMDUsIDE1NiwgCisgICAgODcsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMjA2LCA0NSwgMjI1LCAyNCwgMTkxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCAKKyAgICA5OCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA2MywgMTgyLCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCA4NywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA2MywgMTkxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDE5MSwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAKKyAgICAyMjQsIDIyNSwgMTgsIDE5MSwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIxMywgMzUsIDE4MiwgMjA1LCA5NywgCisgICAgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIyNSwgMTgsIDE4MiwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIxMywgCisgICAgMzUsIDk4LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjAzLCAyMTYsIDg3LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAKKyAgICAyMDUsIDIyNCwgMjAzLCAyMTYsIDk4LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjM5LCAxNjUsIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjM5LCAxNjUsIDYzLCAyNDIsIDE4OCwgMTkxLCAyNiwgOTgsIDQ4LCA2MywgCisgICAgMjQyLCAxODgsIDE5MSwgMjYsIDg3LCA0OCwgNjMsIDI0MiwgMTg4LCAxODIsIDI2LCA5OCwgNDgsIDYzLCAyNDIsIDE4OCwgCisgICAgMTgyLCAyNiwgODcsIDQ4LCA2MywgMjQyLCAxODgsIDk4LCAyNiwgMTgyLCA0OCwgNjMsIDI0MiwgMTg4LCA4NywgMjYsIAorICAgIDE4MiwgNDgsIDYzLCAyNDIsIDE4OCwgOTgsIDI2LCAxOTEsIDQ4LCA2MywgMjQyLCAxODgsIDg3LCAyNiwgMTkxLCA0OCwgCisgICAgMjEzLCA4NiwgNTUsIDEyNywgMjI1LCAyOCwgMjEzLCA4NiwgNTUsIDEyNywgMjEzLCA0NiwgMjEzLCA4NiwgNTUsIDExNSwgCisgICAgMjI1LCAyOCwgMjEzLCA4NiwgNTUsIDExNSwgMjEzLCA0NiwgMjEzLCA4NiwgNTUsIDQ5LCAyMDMsIDIyOCwgMjEzLCA4NiwgCisgICAgNTUsIDUxLCAyMDMsIDIyOCwgMjEzLCA4NiwgNTUsIDQ5LCAyMzksIDE2NywgMjEzLCA4NiwgNTUsIDUxLCAyMzksIDE2NywgCisgICAgMTgyLCA2NCwgNTUsIDIzNiwgMjAxLCAyNDksIDc3LCAzLCAyMzMsIDE3NywgMTQ4LCAxMTUsIDI1MCwgMjAzLCAyMjgsIAorICAgIDExOCwgMzUsIDIxMywgMTc2LCAyNDgsIDc4LCAyNDksIDk0LCAxMDAsIDMsIDE2MiwgMjAwLCAxOTUsIDQ0LCAyMDAsIDE5NSwgCisgICAgNDQsIDI3LCAyMDAsIDE5NSwgNjMsIDUyLCAyNDcsIDUzLCA2MywgMjQxLCA2NSwgMjQ3LCA1MywgMjA0LCAxODUsIDYzLCAKKyAgICAyMTYsIDM3LCAyMzMsIDE3NywgNjMsIDIxNywgMTMwLCA2MywgMjE3LCAxMzAsIDYzLCAyMjIsIDY2LCAyMDMsIDIyNywgCisgICAgMjA1LCA5OSwgMjQ3LCA1MywgNjMsIDIyMiwgNjYsIDIzOSwgMTY2LCAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgCisgICAgMjI1LCAyMywgMjA1LCA5OSwgMjQ3LCA1MywgNjMsIDIyMiwgNjYsIDIxMywgNDEsIDIwNSwgOTksIDI0NywgNTMsIDIwNSwgCisgICAgMTU4LCAxNjcsIDYzLCAyNDYsIDE1NSwgMjQ4LCA5MywgMTY3LCA2MywgMjQ2LCAxNTUsIDE2MiwgMjM2LCAyMjksIDIxNSwgCisgICAgOTgsIDYzLCAyNDIsIDE4NCwgMjEyLCAyMjgsIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIDYzLCAyNDIsIDE4NCwgNjQsIAorICAgIDIzNiwgMjI5LCAyMTUsIDk4LCAyNDIsIDE4NCwgMjEyLCAyMjgsIDY0LCAyMzYsIDIyOSwgMjE1LCA5OCwgMjQyLCAxODQsIAorICAgIDUyLCAyMTUsIDcwLCAyMjgsIDk5LCAyMDMsIDI1NSwgNTQsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgOTksIDI1MCwgCisgICAgMjAxLCAxODIsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAyMDEsIDg3LCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgCisgICAgOTksIDI1MCwgMjAxLCAxOTEsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAyMDEsIDExNiwgNiwgMSwgMjUwLCAKKyAgICAxMDQsIDExNiwgNiwgMSwgMjQ4LCAyNCwgMTE2LCA2LCAxLCAyMDMsIDU3LCAxMTYsIDYsIDEsIDIzNSwgMTMwLCAxMTYsIDYsIAorICAgIDEsIDI0MCwgMjA2LCAxMTYsIDYsIDEsIDIwMCwgMjMsIDExNiwgNiwgMSwgMTk5LCA2MSwgMTE2LCA2LCAxLCAyMzksIDg4LCAKKyAgICAxMTYsIDYsIDEsIDE5OSwgODYsIDExNiwgNiwgMSwgMjI3LCAyNTUsIDExNiwgNiwgMSwgODIsIDIyNywgMjU1LCAxMTYsIDYsIAorICAgIDEsIDcwLCAxMTYsIDYsIDEsIDI0MCwgMjI2LCAxMTYsIDYsIDEsIDIyNywgNzQsIDExNiwgNiwgMSwgMjI0LCAxNDAsIDExNiwgCisgICAgNiwgMSwgMjIwLCAyMTgsIDExNiwgNiwgMSwgMjIwLCAxMjAsIDExNiwgNiwgMSwgMjE3LCA2NSwgMTE2LCA2LCAxLCAyMTUsIAorICAgIDkzLCAxMTYsIDYsIDEsIDIxMywgMTgsIDExNiwgNiwgMSwgMjA5LCA1OCwgMTE2LCA2LCAxLCAyMDQsIDE3MSwgMTE2LCA2LCAKKyAgICAxLCAyMDQsIDE2LCAxMTYsIDYsIDEsIDIzNiwgMjA0LCAxMTYsIDYsIDEsIDIzNCwgOTUsIDExNiwgNiwgMSwgMjE3LCA0LCAKKyAgICAxMTYsIDYsIDEsIDIxNiwgNzMsIDExNiwgNiwgMSwgMjA5LCAyMjMsIDExNiwgNiwgMSwgMjA1LCAxMSwgMTE2LCA2LCAxLCAKKyAgICAyNDYsIDE5OCwgMTE2LCA2LCAxLCAyMTAsIDExNCwgMTE2LCA2LCAxLCAyMDAsIDI5LCAxMTYsIDYsIDEsIDIwMCwgMzEsIAorICAgIDExNiwgNiwgMSwgMjAwLCA2MywgMTE2LCA2LCAxLCAyMDgsIDIyMCwgMTQ0LCAxMTYsIDYsIDEsIDE5OSwgMjExLCAxMTYsIAorICAgIDYsIDEsIDQsIDE5OSwgMTgxLCAxMTYsIDYsIDEsIDQsIDE5OSwgMTgyLCAzLCAyMDcsIDYsIDExNiwgNiwgMSwgMTk5LCAKKyAgICAyNDUsIDExNiwgNiwgMSwgMjI4LCA0MCwgNCwgMTk5LCAxODEsIDExNiwgNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIAorICAgIDYsIDEsIDIyOCwgNDAsIDI0OCwgMTc1LCAxOTksIDE4MSwgMTE2LCA2LCAxLCAyMzcsIDYzLCAxMTYsIDYsIDEsIDIyNywgCisgICAgMjUzLCAxMTYsIDYsIDEsIDIwOSwgMjIyLCAxMTYsIDYsIDEsIDIwNSwgNzMsIDYyLCAxMTYsIDYsIDEsIDIyNSwgNTksIAorICAgIDIyMCwgMjE4LCAxMTYsIDQsIDEsIDI1MCwgMTA0LCAxMTYsIDQsIDEsIDI0OCwgMjQsIDExNiwgNCwgMSwgMjAzLCA1NywgCisgICAgMTE2LCA0LCAxLCAyMzUsIDEzMCwgMTE2LCA0LCAxLCAyNDAsIDIwNiwgMTE2LCA0LCAxLCAyMDAsIDIzLCAxMTYsIDQsIDEsIAorICAgIDE5OSwgNjEsIDExNiwgNCwgMSwgMjM5LCA4OCwgMTE2LCA0LCAxLCAxOTksIDg2LCAxMTYsIDQsIDEsIDIyNywgMjU1LCAKKyAgICAxMTYsIDQsIDEsIDgyLCAyMjcsIDI1NSwgMTE2LCA0LCAxLCA3MCwgMTE2LCA0LCAxLCAyNDAsIDIyNiwgMTE2LCA0LCAxLCAKKyAgICAyMjcsIDc0LCAxMTYsIDQsIDEsIDIyNCwgMTQwLCAxMTYsIDQsIDEsIDIyMCwgMjE4LCAxMTYsIDQsIDEsIDIyMCwgMTIwLCAKKyAgICAxMTYsIDQsIDEsIDIxNywgNjUsIDExNiwgNCwgMSwgMjE1LCA5MywgMTE2LCA0LCAxLCAyMTMsIDE4LCAxMTYsIDQsIDEsIAorICAgIDIwOSwgNTgsIDExNiwgNCwgMSwgMjA0LCAxNzEsIDExNiwgNCwgMSwgMjA0LCAxNiwgMTE2LCA0LCAxLCAyMzYsIDIwNCwgCisgICAgMTE2LCA0LCAxLCAyMzQsIDk1LCAxMTYsIDQsIDEsIDIxNywgNCwgMTE2LCA0LCAxLCAyMTYsIDczLCAxMTYsIDQsIDEsIAorICAgIDIwOSwgMjIzLCAxMTYsIDQsIDEsIDIwNSwgMTEsIDExNiwgNCwgMSwgMjQ2LCAxOTgsIDExNiwgNCwgMSwgMjEwLCAxMTQsIAorICAgIDExNiwgNCwgMSwgMjAwLCAyOSwgMTE2LCA0LCAxLCAyMDAsIDMxLCAxMTYsIDQsIDEsIDIwMCwgNjMsIDExNiwgNCwgMSwgCisgICAgMjA4LCAyMjAsIDE0NCwgMTE2LCA0LCAxLCAxOTksIDIxMSwgMTE2LCA0LCAxLCA0LCAxOTksIDE4MSwgMTE2LCA0LCAxLCA0LCAKKyAgICAxOTksIDE4MiwgMywgMjA3LCA2LCAxMTYsIDQsIDEsIDE5OSwgMjQ1LCAxMTYsIDQsIDEsIDIyOCwgNDAsIDQsIDE5OSwgCisgICAgMTgxLCAxMTYsIDQsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMTE2LCA0LCAxLCAyMjgsIDQwLCAyNDgsIDE3NSwgMTk5LCAKKyAgICAxODEsIDExNiwgNCwgMSwgMjM3LCA2MywgMTE2LCA0LCAxLCAyMjcsIDI1MywgMTE2LCA0LCAxLCAyMDksIDIyMiwgMTE2LCAKKyAgICA0LCAxLCAyMDUsIDczLCA2MiwgMTE2LCA0LCAxLCAyMjUsIDU5LCAyMjAsIDIxOCwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDUzLCAxNDgsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCA1MywgMTQ4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyMDUsIAorICAgIDI0MCwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDk3LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMDcsIDYsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCA5NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDExOSwgCisgICAgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjQxLCAxMTksIDgsIDQsIDEsIAorICAgIDIyNywgMTE5LCAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDI0MSwgMTE5LCA4LCA0LCAxLCAxOTksIDE1OCwgCisgICAgMywgMjQxLCAxMTksIDgsIDYsIDEsIDI1MSwgMTEyLCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgMTE3LCA4LCA2LCAxLCAyMDQsIAorICAgIDE4NSwgNjIsIDgsIDYsIDEsIDIwNCwgMTg1LCAyNTEsIDExMiwgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDUxLCAxMTcsIDgsIAorICAgIDYsIDEsIDIwMSwgMTQ4LCAzLCAxMTcsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAxMTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAKKyAgICAyNDIsIDE5OCwgOCwgNiwgMSwgMTY3LCAyMzQsIDI0NywgOCwgNCwgMSwgMTY3LCAyMzQsIDI0NywgOCwgNCwgMSwgMjA3LCAKKyAgICA0LCAyMTUsIDIyOSwgOCwgNCwgMSwgMTk3LCAzLCAyMTgsIDIxMiwgOCwgNCwgMSwgMjA0LCAxODUsIDIxNCwgMzMsIDMsIAorICAgIDIwNywgNiwgOCwgNCwgMSwgMTYzLCAzLCAxMjgsIDIxMywgMjcsIDIyOCwgNzMsIDgsIDEsIDQsIDYsIDIwNCwgMTg1LCA3MiwgCisgICAgOCwgMjA4LCA0LCA0LCAxLCAyMjcsIDI1MSwgNjcsIDEsIDYsIDIwMywgMTY4LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjA3LCAKKyAgICAxODMsIDIwNywgNiwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDIwNywgMTgzLCAyMDcsIDYsIDg1LCA2LCAxLCAyNTEsIDEzNiwgCisgICAgODUsIDQsIDEsIDI1MSwgMTM2LCA4NSwgNiwgMSwgMjAyLCAyMzEsIDg1LCA0LCAxLCAyMDIsIDIzMSwgODUsIDYsIDEsIAorICAgIDIzNiwgNjAsIDg1LCA0LCAxLCAyMzYsIDYwLCA4NSwgNiwgMSwgMjQyLCAyNSwgODUsIDQsIDEsIDI0MiwgMjUsIDg1LCA2LCAKKyAgICAxLCAyMzgsIDIzMywgODUsIDQsIDEsIDIzOCwgMjMzLCA4NSwgNiwgMSwgMjA5LCAzLCA4NSwgNCwgMSwgMjA5LCAzLCA4NSwgCisgICAgNiwgMSwgMTk5LCA5NiwgODUsIDQsIDEsIDE5OSwgOTYsIDg1LCA2LCAxLCAyMzQsIDE1NCwgODUsIDQsIDEsIDIzNCwgMTU0LCAKKyAgICA4NSwgNiwgMSwgMjA2LCA4NiwgODUsIDQsIDEsIDIwNiwgODYsIDg1LCA2LCAxLCAyMzIsIDIzNywgODUsIDQsIDEsIDIzMiwgCisgICAgMjM3LCA4NSwgNiwgMSwgMjI3LCA1OSwgODUsIDQsIDEsIDIyNywgNTksIDg1LCA2LCAxLCAyMjUsIDU0LCA4NSwgNCwgMSwgCisgICAgMjI1LCA1NCwgODUsIDYsIDEsIDIyMSwgMjExLCA4NSwgNCwgMSwgMjIxLCAyMTEsIDg1LCA2LCAxLCAyMTksIDE1MCwgODUsIAorICAgIDQsIDEsIDIxOSwgMTUwLCA4NSwgNiwgMSwgMjI2LCAzMSwgODUsIDQsIDEsIDIyNiwgMzEsIDg1LCA2LCAxLCA3NCwgODUsIAorICAgIDQsIDEsIDc0LCA4NSwgNiwgMSwgMjE1LCAyMDQsIDg1LCA0LCAxLCAyMTUsIDIwNCwgODUsIDYsIDEsIDIxMywgMSwgODUsIAorICAgIDQsIDEsIDIxMywgMSwgODUsIDYsIDEsIDIwOSwgMTUxLCA4NSwgNCwgMSwgMjA5LCAxNTEsIDg1LCA2LCAxLCAyMDYsIDIyMSwgCisgICAgODUsIDQsIDEsIDIwNiwgMjIxLCA4NSwgNiwgMSwgMjA0LCA0NiwgODUsIDQsIDEsIDIwNCwgNDYsIDg1LCA2LCAxLCAyMzcsIAorICAgIDExMiwgODUsIDQsIDEsIDIzNywgMTEyLCA4NSwgNiwgMSwgMjI2LCAxODUsIDg1LCA0LCAxLCAyMjYsIDE4NSwgODUsIDYsIAorICAgIDEsIDIxNCwgMjM1LCA4NSwgNCwgMSwgMjE0LCAyMzUsIDg1LCA2LCAxLCAyMTcsIDU3LCA4NSwgNCwgMSwgMjE3LCA1NywgCisgICAgODUsIDYsIDEsIDI0MSwgNjksIDI1MSwgMTQyLCA4NSwgNCwgMSwgMjQxLCA2OSwgMjUxLCAxNDIsIDg1LCA2LCAxLCA0MCwgCisgICAgODUsIDI1MSwgMTcxLCA4NSwgNCwgMSwgNDAsIDg1LCAyNTEsIDE3MSwgODUsIDYsIDEsIDI0MiwgMjE3LCAyMzgsIDIzMywgCisgICAgODUsIDQsIDEsIDI0MiwgMjE3LCAyMzgsIDIzMywgODUsIDYsIDEsIDI0MSwgNjksIDIyNywgNTksIDg1LCA0LCAxLCAyNDEsIAorICAgIDY5LCAyMjcsIDU5LCA4NSwgNiwgMSwgMjQxLCA2OSwgMjE5LCAxNTAsIDg1LCA0LCAxLCAyNDEsIDY5LCAyMTksIDE1MCwgCisgICAgODUsIDYsIDEsIDI0MiwgMjE3LCAyMTksIDE1MCwgODUsIDQsIDEsIDI0MiwgMjE3LCAyMTksIDE1MCwgODUsIDYsIDEsIDQwLCAKKyAgICA4NSwgMjE3LCA1NywgODUsIDQsIDEsIDQwLCA4NSwgMjE3LCA1NywgODUsIDYsIDEsIDIxMiwgMTYsIDg1LCA0LCAxLCAyMTIsIAorICAgIDE2LCA4NSwgNiwgMSwgMjQyLCAyMzIsIDIxMCwgNTcsIDg1LCA0LCAxLCAyNDIsIDIzMiwgMjEwLCA1NywgODUsIDYsIDEsIAorICAgIDQwLCA4NSwgMjEwLCA1NywgODUsIDQsIDEsIDQwLCA4NSwgMjEwLCA1NywgODUsIDYsIDEsIDQwLCA4NSwgMjM4LCA5NCwgCisgICAgODUsIDQsIDEsIDQwLCA4NSwgMjM4LCA5NCwgODUsIDYsIDEsIDI1MSwgMTU1LCAyMjYsIDE5MCwgODUsIDQsIDEsIDI1MSwgCisgICAgMTU1LCAyMjYsIDE5MCwgODUsIDYsIDEsIDI0MSwgNjksIDIzMywgMTc4LCA4NSwgNCwgMSwgMjQxLCA2OSwgMjMzLCAxNzgsIAorICAgIDg1LCA2LCAxLCA0MCwgODUsIDIzMywgMTc4LCA4NSwgNCwgMSwgNDAsIDg1LCAyMzMsIDE3OCwgODUsIDYsIDEsIDQwLCA4NSwgCisgICAgMTQ0LCA4NSwgNCwgMSwgNDAsIDg1LCAxNDQsIDg1LCA2LCAxLCAyMjUsIDE5MiwgMTQ0LCA4NSwgNCwgMSwgMjI1LCAxOTIsIAorICAgIDE0NCwgODUsIDYsIDEsIDQwLCA4NSwgMjM0LCAxMTQsIDg1LCA0LCAxLCA0MCwgODUsIDIzNCwgMTE0LCA4NSwgNiwgMSwgCisgICAgNDAsIDg1LCAyMzQsIDE1NywgODUsIDQsIDEsIDQwLCA4NSwgMjM0LCAxNTcsIDg1LCA2LCAxLCA0MCwgODUsIDIzNiwgNTUsIAorICAgIDg1LCA0LCAxLCA0MCwgODUsIDIzNiwgNTUsIDg1LCA2LCAxLCA0MCwgODUsIDI0MCwgMjI5LCA4NSwgNCwgMSwgNDAsIDg1LCAKKyAgICAyNDAsIDIyOSwgODUsIDYsIDEsIDQwLCA4NSwgMjEwLCAyMywgODUsIDQsIDEsIDQwLCA4NSwgMjEwLCAyMywgODUsIDYsIDEsIAorICAgIDQwLCAyMTgsIDEwMywgMjEwLCAyMywgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjEwLCAyMywgODUsIDYsIDEsIDQwLCAKKyAgICAyMTgsIDEwMywgMjE5LCAyMDEsIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIxOSwgMjAxLCA4NSwgNiwgMSwgNDAsIDIxOCwgCisgICAgMTAzLCAyMTgsIDQxLCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMTgsIDQxLCA4NSwgNiwgMSwgNDAsIDIxOCwgMTAzLCAKKyAgICAyMDEsIDc5LCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMDEsIDc5LCA4NSwgMTYsIDIyNywgODIsIDg1LCAxNiwgMjIxLCAKKyAgICAyMTIsIDIxMywgMSwgODUsIDE2LCAyMTUsIDIwNSwgMjEzLCAxLCA4NSwgMTYsIDIwOCwgMTAwLCA4NSwgMTYsIDIwNiwgCisgICAgMjIyLCAyMTMsIDEsIDg1LCAxNiwgMjI2LCAxODYsIDIxMywgMSwgODUsIDE2LCAyMTAsIDI0LCAyMDksIDE1MSwgODUsIDYsIAorICAgIDEsIDI0MiwgMjE3LCAyMTAsIDU3LCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIxMCwgNTcsIDg1LCA2LCAxLCAyNDIsIDIxNywgCisgICAgMjM2LCA1NSwgODUsIDQsIDEsIDI0MiwgMjE3LCAyMzYsIDU1LCA4NSwgMzgsIDIxOSwgMTUxLCA1NiwgODUsIDM4LCAyMDgsIAorICAgIDIxMywgMjUwLCAxNzMsIDg1LCAzOCwgMjA4LCAyMTMsIDIyNCwgMjQ4LCA4NSwgNiwgMSwgMjQ4LCAxMTcsIDIyNiwgMTkwLCAKKyAgICA4NSwgNCwgMSwgMjQ4LCAxMTcsIDIyNiwgMTkwLCA4NSwgNDAsIDIxOCwgMTAzLCAyMzYsIDE4MywgMjA4LCA3NiwgODUsIAorICAgIDQwLCAyMTgsIDEwMywgMjQxLCAxMCwgMjE0LCA3OSwgODEsIDg1LCA0MCwgMjE4LCAxMDMsIDIyOCwgOTcsIDIxNCwgNzksIAorICAgIDgxLCA4NSwgNDAsIDIxOCwgMTAzLCAyMDMsIDQ0LCAyNDAsIDIzOSwgODUsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCA4NSwgCisgICAgMjM2LCAxODMsIDIwOCwgNzYsIDg1LCAyMjEsIDc3LCAyNDAsIDIzOSwgMTE4LCA0LCAxLCAyNTEsIDg1LCAxMTgsIDQsIDEsIAorICAgIDI0OSwgODgsIDExOCwgNCwgMSwgMjM2LCA1OSwgMTE4LCA0LCAxLCAyNDAsIDE5MCwgMTE4LCA0LCAxLCAyMzgsIDE3OSwgCisgICAgMTE4LCA0LCAxLCAyMDIsIDIxNywgMTE4LCA0LCAxLCAxOTksIDg0LCAxMTgsIDQsIDEsIDIwNiwgMjQ0LCAxMTgsIDQsIDEsIAorICAgIDIyOCwgMTE3LCAxMTgsIDQsIDEsIDIyNywgNjgsIDExOCwgNCwgMSwgMjI1LCA2NSwgMTE4LCA0LCAxLCAyMjIsIDE4MCwgCisgICAgMTE4LCA0LCAxLCAyMjAsIDEyNSwgMTE4LCA0LCAxLCAyMTcsIDc4LCAxMTgsIDQsIDEsIDIxNiwgMTMwLCAxMTgsIDQsIDEsIAorICAgIDE5OSwgNzMsIDExOCwgNCwgMSwgMjEzLCAyMzQsIDExOCwgNCwgMSwgMjEyLCAxMywgMTE4LCA0LCAxLCAyMDYsIDIzMiwgCisgICAgMTE4LCA0LCAxLCAyMDQsIDUsIDExOCwgNCwgMSwgMjE1LCAyMzcsIDExOCwgNCwgMSwgMjI2LCAxOTUsIDExOCwgNCwgMSwgCisgICAgMjM1LCAxOTAsIDExOCwgNCwgMSwgMjE0LCAxNDQsIDExOCwgNCwgMSwgMjEwLCAyMSwgMTE4LCA0LCAxLCAyNDYsIDIyMywgCisgICAgMTE4LCA0LCAxLCAyNDcsIDE1OCwgMTE4LCA0LCAxLCAyMjcsIDE5OCwgMTE4LCA0LCAxLCAyNDYsIDE2MiwgMTE4LCA0LCAxLCAKKyAgICAyNDcsIDIxLCAxMTgsIDQsIDEsIDIwMCwgMTc5LCAxMTgsIDQsIDEsIDIyNywgMjEyLCAxMTgsIDQsIDEsIDIzNCwgMjMwLCAKKyAgICAxMTgsIDQsIDEsIDIzNCwgMTM5LCAxMTgsIDQsIDEsIDIzNCwgNjksIDExOCwgNCwgMSwgMjAxLCA2NCwgMTE4LCA0LCAxLCAKKyAgICAyMzQsIDE2NiwgMTE4LCA0LCAxLCAyMzMsIDIwMywgMTE4LCA0LCAxLCAxOTksIDI0NywgMTE4LCA0LCAxLCAyNTEsIDIxMCwgCisgICAgMjA2LCA0LCAxLCAxODMsIDIwNiwgNCwgMSwgMjAwLCAxMDUsIDIwNiwgNCwgMSwgMjAwLCAxMDQsIDIwNiwgNCwgMSwgMjAwLCAKKyAgICA5NCwgMjA2LCA0LCAxLCAyMDAsIDkyLCAyMDYsIDQsIDEsIDI0OCwgMjE0LCAyNTEsIDI1MywgMjAwLCA4NywgMjA2LCA0LCAKKyAgICAxLCAyMDAsIDg3LCAyMDYsIDQsIDEsIDIwMCwgMTAyLCAyMDYsIDQsIDEsIDIwMCwgOTksIDIwNiwgNCwgMSwgMjAwLCAxMDEsIAorICAgIDIwNiwgNCwgMSwgMjAwLCAxMDAsIDIwNiwgNCwgMSwgMjAwLCAxNCwgMjA2LCA0LCAxLCAyMDAsIDk2LCAyMDYsIDQsIDEsIAorICAgIDIwMCwgODUsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgODUsIDIwNiwgNCwgMSwgMjAwLCA4MiwgMjA2LCA0LCAxLCAKKyAgICAyMDAsIDkwLCAyMDYsIDQsIDEsIDI0OCwgMjE0LCAyNTEsIDI1MywgMjAwLCA5MCwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA5MCwgMjA2LCA0LCAxLCAyMDAsIDg5LCAyMDYsIDQsIDEsIDIwMCwgMTA5LCAyMDYsIDQsIDEsIDIwMCwgODMsIAorICAgIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgODMsIDIwNiwgNCwgMSwgMjAwLCA3MiwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA3MiwgMjA2LCA0LCAxLCAyMDAsIDksIDIwNiwgNCwgMSwgMjAwLCA1MywgMjA2LCA0LCAxLCAyNTEsIDE4MywgMjAwLCAKKyAgICA1MywgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA1MywgMjA2LCA0LCAxLCAyMDAsIDgxLCAyMDYsIDQsIDEsIDIwMCwgODAsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA3NywgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA5MSwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA3NSwgMjA2LCA0LCAxLCAyMDAsIDczLCAyMDYsIDQsIDEsIDE5OSwgMjExLCAyMDYsIDQsIDEsIDIwMCwgNzAsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA2OSwgMjA2LCA0LCAxLCAyMDAsIDkzLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDkzLCAKKyAgICAyMDYsIDQsIDEsIDI1MCwgMTA4LCAyMDAsIDkzLCAyMDYsIDQsIDEsIDIwMCwgNjgsIDIwNiwgNCwgMSwgMjAwLCA2NiwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDY3LCAyMDYsIDQsIDEsIDIwMCwgNjUsIDIwNiwgNCwgMSwgMjAwLCA2NCwgMjA2LCA0LCAxLCAKKyAgICAyMDAsIDEwMywgMjA2LCA0LCAxLCAyMDAsIDYyLCAyMDYsIDQsIDEsIDIwMCwgNjAsIDIwNiwgNCwgMSwgMjAwLCA1OSwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDU3LCAyMDYsIDQsIDEsIDIwMCwgNTQsIDIwNiwgNCwgMSwgMjA2LCAyMTMsIDIwMCwgNTQsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA1MiwgMjA2LCA0LCAxLCAyMDAsIDUxLCAyMDYsIDQsIDEsIDE5OSwgMjQ1LCAyMDYsIDQsIDY3LCAKKyAgICAxLCAyMjUsIDE2NiwgODEsIDIwNiwgNCwgMjEwLCAxNTUsIDgxLCAyMDYsIDQsIDExMSwgMjI3LCAxNjEsIDM0LCA1LCAyMjQsIAorICAgIDEwOSwgMzQsIDUsIDIyMSwgMTM1LCAzNCwgNSwgMjEyLCAyNTUsIDM0LCA1LCAyMDksIDI4LCAzNCwgNSwgMjEwLCA3LCAzNCwgCisgICAgNSwgMjQ4LCAxMjMsIDM0LCA1LCAyMDUsIDE4NSwgMzQsIDUsIDI0NiwgOTAsIDM0LCA1LCAyMTgsIDIzOSwgMzQsIDUsIAorICAgIDIxOCwgMjUsIDM0LCA1LCAyMzUsIDEyMywgMjE3LCAxNDYsIDM0LCA1LCAxOTksIDEzLCAzNCwgNSwgMjQwLCAyMDksIDM0LCAKKyAgICA1LCAyNDEsIDE4OSwgMzQsIDUsIDIyNywgMTY1LCAzNCwgNSwgMjA2LCA2MCwgMzQsIDUsIDI0NiwgMjA5LCAzNCwgNSwgCisgICAgMjE1LCAyMTYsIDM0LCA1LCAyMTUsIDEwNSwgMzQsIDUsIDIzNSwgMjA1LCAzNCwgNSwgMjM1LCAyMDEsIDM0LCA1LCAyMzUsIAorICAgIDIwMiwgMzQsIDUsIDIzNSwgMjAzLCAzNCwgNSwgMjA4LCAxNzksIDM0LCA1LCAyMDgsIDEzNCwgMzQsIDUsIDIwOCwgMTQ3LCAKKyAgICAzNCwgNSwgMjA4LCAxNzgsIDM0LCA1LCAyMDgsIDE1MiwgMzQsIDUsIDIwOCwgMTUzLCAzNCwgNSwgMjA4LCAxMzksIDM0LCAKKyAgICA1LCAyNDcsIDk5LCAzNCwgNSwgMjQ3LCA3OCwgMzQsIDUsIDI0NywgODAsIDM0LCA1LCAyNDcsIDk4LCAzNCwgNSwgMjQ3LCAKKyAgICA5NiwgMzQsIDUsIDI0NywgOTcsIDM0LCA1LCAyNDcsIDc5LCAzNCwgNSwgMTk4LCAyMzIsIDM0LCA1LCAxOTgsIDIxMCwgMzQsIAorICAgIDUsIDE5OCwgMjIzLCAzNCwgNSwgMTk4LCAyMzEsIDM0LCA1LCAxOTgsIDIyNiwgMzQsIDUsIDE5OCwgMjI3LCAzNCwgNSwgCisgICAgMTk4LCAyMTUsIDM0LCA1LCAyNDcsIDk0LCAzNCwgNSwgMjQ3LCA4MSwgMzQsIDUsIDI0NywgODMsIDM0LCA1LCAyNDcsIDkzLCAKKyAgICAzNCwgNSwgMjQ3LCA5MSwgMzQsIDUsIDI0NywgOTIsIDM0LCA1LCAyNDcsIDgyLCAzNCwgNSwgMjE0LCA0NSwgMzQsIDUsIAorICAgIDIxNCwgMzUsIDM0LCA1LCAyMTQsIDQxLCAzNCwgNSwgMjE0LCA0NCwgMzQsIDUsIDIxNCwgNDIsIDM0LCA1LCAyMTQsIDQzLCAKKyAgICAzNCwgNSwgMjE0LCA0MCwgMzQsIDUsIDIyNSwgMjAzLCAzNCwgNSwgMjI1LCAxOTUsIDM0LCA1LCAyMjUsIDE5OCwgMzQsIDUsIAorICAgIDIyNSwgMjAyLCAzNCwgNSwgMjI1LCAxOTksIDM0LCA1LCAyMjUsIDIwMCwgMzQsIDUsIDIyNSwgMTk2LCAzNCwgNSwgMjAwLCAKKyAgICAxMzksIDM0LCA1LCAyMDAsIDEyNiwgMzQsIDUsIDIwMCwgMTM0LCAzNCwgNSwgMjAwLCAxMzgsIDM0LCA1LCAyMDAsIDEzNiwgCisgICAgMzQsIDUsIDIwMCwgMTM3LCAzNCwgNSwgMjAwLCAxMzMsIDM0LCA1LCAyMzUsIDMsIDM0LCA1LCAyMzQsIDI0OSwgMzQsIDUsIAorICAgIDIzNCwgMjUyLCAzNCwgNSwgMjM1LCAyLCAzNCwgNSwgMjM0LCAyNTQsIDM0LCA1LCAyMzQsIDI1NSwgMzQsIDUsIDIzNCwgCisgICAgMjUxLCAzOCwgMzcsIDEsIDI0OSwgOCwgMzgsIDM3LCAxLCAyMDMsIDU5LCAzOCwgMzcsIDEsIDIzNSwgMTg1LCAzOCwgMzcsIAorICAgIDEsIDI0MSwgMTc1LCAzOCwgMzcsIDEsIDE5OSwgNjgsIDM4LCAzNywgMSwgMTk5LCA4OSwgMzgsIDM3LCAxLCAxNjEsIDM4LCAKKyAgICAzNywgMSwgMjM4LCAyMDksIDM4LCAzNywgMSwgMjM4LCAxOTAsIDM4LCAzNywgMSwgMjM4LCAxNzksIDM4LCAzNywgMSwgNzQsIAorICAgIDM4LCAzNywgMSwgMjE2LCA3MywgMzgsIDM3LCAxLCAyMzgsIDExNSwgMzgsIDM3LCAxLCAyMzgsIDEwNCwgMzgsIDM3LCAxLCAKKyAgICAyMDYsIDIwMSwgMzgsIDM3LCAxLCAxNDQsIDM4LCAzNywgMSwgMjA1LCAyNiwgMzgsIDM3LCAxLCAyNDcsIDgsIDM4LCAzNywgCisgICAgMSwgMjEwLCAxMTQsIDM4LCAzNywgMSwgMjEwLCA2OCwgMzgsIDM3LCAxLCAyMzcsIDYzLCAzOCwgMzcsIDEsIDIzOCwgMTAwLCAKKyAgICAzOCwgMzcsIDEsIDYyLCAzOCwgMzcsIDEsIDIyOCwgMTc4LCAzOCwgMzcsIDEsIDI0MCwgMjI3LCAzOCwgMzcsIDEsIDIyMSwgCisgICAgOTUsIDIwNCwgMjAsIDM4LCAzNywgMSwgMjAwLCA2NSwgMzgsIDM3LCAxLCAxOTksIDIxMSwgMzgsIDM3LCAxLCAyMjgsIDM5LCAKKyAgICA2MiwgMzgsIDM3LCAxLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM4LCAzNywgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgMzcsIAorICAgIDEsIDIyOCwgMzksIDI0OCwgMTc1LCAxOTksIDE4MSwgNTEsIDI1MSwgNzEsIDIwNywgMjU1LCAyMjIsIDE0NSwgNTEsIDI1MSwgCisgICAgNzEsIDIzOSwgMTgwLCAyMDcsIDI1NSwgMjIyLCAxNDUsIDQ5LCAyMDcsIDI1NSwgMTU5LCA1MSwgMjA3LCAyNTUsIDE1OSwgCisgICAgNDksIDIzOSwgMTgwLCAyMDcsIDI1NSwgMTU5LCA1MSwgMjM5LCAxODAsIDIwNywgMjU1LCAxNTksIDIxMywgMjIwLCAyMjgsIAorICAgIDYwLCAyMjIsIDE0NSwgMjEzLCAyMjAsIDIzOSwgMTgwLCAyMjgsIDYwLCAyMjIsIDE0NSwgMjM5LCAxODAsIDIwNSwgMTE2LCAKKyAgICAyMjIsIDE0NSwgNDksIDIwNSwgMTE2LCAxNTksIDUxLCAyMDUsIDExNiwgMTU5LCAyMTMsIDIyMCwgMjA4LCAxOTMsIDQ5LCAKKyAgICAyMTMsIDIyMCwgMjE3LCA4MCwgMTU5LCA1MSwgMjEzLCAyMjAsIDIxNywgODAsIDE1OSwgMjM5LCAwLCAyNDMsIDEzLCAyMTYsIAorICAgIDEyNiwgMjM2LCAyNDQsIDIxNiwgMTI2LCAyMTMsIDEwNSwgMjM2LCAyNDQsIDIxNiwgMTI2LCAyMzMsIDMwLCAyMzksIDE4MCwgCisgICAgMjE3LCAxNDEsIDE5MSwgMjUxLCA4MCwgMTgyLCAyNTEsIDgwLCAyMzksIDE4MCwgMjEzLCA0MSwgMjUxLCA3MCwgNTMsIAorICAgIDIxNywgMTM4LCAyMzMsIDMzLCAyMjgsIDUwLCAyMjgsIDU4LCAyMTYsIDE3NywgMjQ4LCA2NiwgMjMzLCAzNCwgMywgMjQxLCAKKyAgICA3NCwgMjA1LCAyNDEsIDMsIDIxMywgMjcsIDU2LCA0OSwgMTI4LCAyMTYsIDExOCwgMTU5LCA1MSwgMTI4LCAyMTYsIDExOCwgCisgICAgMTU5LCAyMDUsIDI0MSwgMywgNzMsIDU2LCAyMDUsIDI0MSwgMywgNzMsIDU3LCA0OSwgODMsIDI0OSwgNzcsIDMsIDIxNCwgCisgICAgNzMsIDUxLCA4MywgMjQ5LCA3NywgMywgMjE0LCA3MywgMjA1LCAxNTgsIDQ5LCAxNjcsIDE1OSwgMjA1LCAxNTgsIDUxLCAKKyAgICAxNjcsIDE1OSwgMjQ4LCA5MywgNDksIDE2NywgMTU5LCAyNDgsIDkzLCA1MSwgMTY3LCAxNTksIDQ5LCAyMDksIDE3MywgCisgICAgMTA4LCAxNTksIDUxLCAyMDksIDE3MywgMTA4LCAxNTksIDQ5LCA1MywgMjE2LCAxMTUsIDUxLCA1MywgMjE2LCAxMTUsIAorICAgIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCAxMTIsIDczLCAxMTksIDEyMCwgMTkwLCAyMTQsIDIxMSwgOTUsIAorICAgIDIzNiwgMjI5LCA3MywgMjE0LCAyMTEsIDIzNywgNjEsIDczLCA4MSwgMjEzLCAxMDUsIDIxNCwgNzksIDgxLCA4MywgMjA1LCAKKyAgICAyNDAsIDIxMywgMjcsIDIxNSwgOTksIDIwMCwgMjM4LCAyMTAsIDE1NSwgMTAxLCAyNDAsIDE4MiwgMjA0LCAxODUsIDI0NiwgCisgICAgNzAsIDIxMywgMjIwLCAyNDAsIDE4MiwgMjEzLCAyMjAsIDI0NiwgNzAsIDIwNCwgMTg1LCAyMTAsIDE2NywgMjQyLCA0MSwgCisgICAgMywgNDksIDIzNSwgNDQsIDI0MiwgNDEsIDMsIDUxLCAyMzUsIDQ0LCAyMDQsIDE4NSwgMjQyLCA0MCwgMjA1LCAxNTgsIAorICAgIDE2NywgMjExLCAxOTMsIDU0LCAyMDQsIDE0MiwgMjQxLCAyNDQsIDIwNiwgNDQsIDI0MSwgMjQ0LCAyMDgsIDkxLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgODMsIDIwOSwgMTA2LCAyNDAsIDE4MCwgMjAxLCAyMiwgODMsIDIyNCwgMTc2LCAyNDcsIDE0MiwgCisgICAgNTMsIDIzMywgMzMsIDIxMywgMTA1LCAyNDYsIDcwLCA1MywgMjI0LCA1NSwgMjE0LCA2MywgODEsIDI0MSwgMjQ1LCAzLCAKKyAgICA0OSwgMjAzLCAyMTksIDUzLCAyMDcsIDE5NiwgODEsIDEyLCA0MiwgMjEzLCAxMzIsIDEyLCA0MiwgMjQ2LCAxMjAsIDEyLCAKKyAgICA0MiwgMjExLCAxOTYsIDEwMiwgMTIsIDQyLCAyMTEsIDE5NiwgMTA1LCAxMiwgNDIsIDIxMSwgMTk2LCAxNDcsIDEyLCA0MiwgCisgICAgMjE2LCAxMCwgMTIsIDQyLCAyNDgsIDc4LCAxMiwgNDIsIDIwNywgMjIsIDEyLCA0MiwgMjI2LCA5NiwgMTAyLCAxMiwgNDIsIAorICAgIDIyNiwgOTYsIDEwNSwgMTIsIDQyLCAyNDAsIDIzNiwgMTIsIDQyLCAyMTEsIDIwMCwgMTIsIDQyLCA0LCAxMDIsIDEyLCA0MiwgCisgICAgNCwgMTA1LCAxMiwgNDIsIDIyNSwgODYsIDEwMiwgMTIsIDQyLCAyMjUsIDg2LCAxMDUsIDEyLCA0MiwgMjI1LCA4NiwgMTQ3LCAKKyAgICAxMiwgNDIsIDIyNSwgODYsIDE0OSwgMTIsIDQyLCAyMDksIDQxLCAxMiwgNDIsIDIwNiwgNDcsIDEyLCA0MiwgMjA5LCAzOCwgCisgICAgMTAyLCAxMiwgNDIsIDIwOSwgMzgsIDEwNSwgMTIsIDQyLCAyMzQsIDEyOCwgMTAyLCAxMiwgNDIsIDIzNCwgMTI4LCAxMDUsIAorICAgIDEyLCA0MiwgMjM0LCAxOTksIDEyLCA0MiwgMjEzLCAyMTAsIDEyLCA0MiwgMjQ2LCAyMDYsIDEyLCA0MiwgMjA3LCAyMjgsIAorICAgIDEyLCA0MiwgMjIxLCA4MSwgMTIsIDQyLCAyNDEsIDE3MywgMTIsIDQyLCAyMjEsIDcxLCAxMiwgNDIsIDI0NiwgMTM4LCAxMiwgCisgICAgNDIsIDIwMSwgODMsIDEwMiwgMTIsIDQyLCAyMDEsIDgzLCAxMDUsIDEyLCA0MiwgMjM3LCA3NywgMTIsIDQyLCAyMTYsIDg1LCAKKyAgICAxMDIsIDEyLCA0MiwgMjE2LCA4NSwgMTA1LCAxMiwgNDIsIDIwOSwgMTQ2LCAxNjcsIDIwNSwgMTA5LCAyMDUsIDM3LCAxMiwgCisgICAgNDIsIDI0MiwgMjU1LCAxMiwgNDIsIDI0MCwgMjAwLCAxMiwgNDIsIDIyNywgMjQzLCAxMiwgNDIsIDI0OCwgMTE2LCA3NiwgCisgICAgMjQ2LCAxMDQsIDEyLCA0MiwgMjM4LCAyMiwgMTIsIDQyLCAyMDgsIDIxNSwgMTAyLCAxMiwgNDIsIDIwOCwgMjE1LCAxMDUsIAorICAgIDEyLCA0MiwgMjQ5LCA5MCwgMTIsIDQyLCAyMDksIDE1MywgMTIsIDQyLCAyNDcsIDIyMCwgMjA5LCAxNTMsIDEyLCA0MiwgCisgICAgMjIwLCAxNCwgMTAyLCAxMiwgNDIsIDIyMCwgMTQsIDEwNSwgMTIsIDQyLCAyMjAsIDE0LCAxNDcsIDEyLCA0MiwgMjIwLCAKKyAgICAxNCwgMTQ5LCAxMiwgNDIsIDIyMiwgMjcsIDEyLCA0MiwgMjEwLCA1OSwgMTIsIDQyLCAyMTMsIDIxNiwgMTIsIDQyLCAyMzgsIAorICAgIDUwLCAxMiwgNDIsIDIxNywgOTIsIDEyLCA0MiwgMjQ4LCA0NCwgMTAyLCAxMiwgNDIsIDI0OCwgNDQsIDEwNSwgMTIsIDQyLCAKKyAgICAyMjIsIDcxLCAxMiwgNDIsIDIyMSwgNzYsIDEyLCA0MiwgMjM1LCA3NywgMTAyLCAxMiwgNDIsIDIzNSwgNzcsIDEwNSwgMTIsIAorICAgIDQyLCAyMzUsIDc3LCAxNDcsIDEyLCA0MiwgMjA2LCAyLCAxMiwgNDIsIDI0NiwgMTAzLCAxMiwgNDIsIDIwMSwgNDgsIDEwMiwgCisgICAgMTIsIDQyLCAyMDEsIDQ4LCAxMDUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMSwgMTkwLCAxMiwgNDIsIDIwOSwgMTQ2LCAyMzMsIAorICAgIDEyNCwgMTIsIDQyLCAyMzMsIDEyNCwgMTIsIDQyLCAyNDcsIDIyMCwgMjA4LCAyMjcsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMCwgCisgICAgNTQsIDEyLCA0MiwgMjM2LCAyNTUsIDEyLCA0MiwgMjQ3LCAyMjAsIDI0NywgMTE4LCAxMiwgNDIsIDIwOSwgMTQ2LCAyMDEsIAorICAgIDEwNCwgMTIsIDQyLCAyMDEsIDEwNSwgMTAyLCAxMiwgNDIsIDIwMSwgMTA1LCAxMDUsIDEyLCA0MiwgMjQ2LCAxNDEsIDEyLCAKKyAgICA0MiwgMjQ3LCAyMjAsIDIzNSwgMTA4LCAxMiwgNDIsIDE2OCwgMTAyLCAxMiwgNDIsIDE2OCwgMTA1LCAxMiwgNDIsIDI0NywgCisgICAgMjIwLCAyMjQsIDg5LCAxMiwgNDIsIDI0NywgMjIwLCAyMzYsIDQxLCAxMiwgNDIsIDIyMSwgNjcsIDEwMiwgMTIsIDQyLCAKKyAgICAyMjEsIDY3LCAxMDUsIDEyLCA0MiwgMjEzLCAyMjIsIDEyLCA0MiwgMjQ4LCAxMjYsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwNiwgCisgICAgMjM4LCAyMjUsIDM0LCAxMiwgNDIsIDI0NywgMjIwLCAyMjUsIDM1LCAxMiwgNDIsIDI0NywgMjIwLCAyMDEsIDE2LCAxMiwgCisgICAgNDIsIDI0NywgMjIwLCAyMzcsIDE3LCAxMiwgNDIsIDIzOSwgMTEsIDEwMiwgMTIsIDQyLCAyMzksIDExLCAxMDUsIDEyLCAKKyAgICA0MiwgMjM5LCAxMSwgMTQ3LCAxMiwgNDIsIDI0NywgMjIwLCAyMzksIDEwLCAxMiwgNDIsIDIzNCwgMTM2LCAxMiwgNDIsIAorICAgIDI0NywgMjIwLCAyMzMsIDEyMCwgMTIsIDQyLCAyNDgsIDExMiwgMTIsIDQyLCAyMzUsIDE2OSwgMTIsIDQyLCAyNDcsIDIyMCwgCisgICAgMjM3LCA3MSwgMTIsIDQyLCAyNDcsIDIyMCwgMjQ4LCAxNjIsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMiwgMjcsIDEyLCA0MiwgCisgICAgMjA5LCAxNDYsIDIwMSwgMzksIDEyLCA0MiwgMjA5LCAxNDYsIDIwMCwgNDMsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzNiwgMjAyLCAKKyAgICAxMiwgNDIsIDIyNywgMjUwLCAyMzgsIDU1LCAxMiwgNDIsIDI0NywgMjIwLCAyMzgsIDU1LCAxMiwgNDIsIDIyNywgMjUwLCAKKyAgICAyMDUsIDE1OSwgMTIsIDQyLCAyNDcsIDIyMCwgMjA1LCAxNTksIDEyLCA0MiwgMjI3LCAyNTAsIDIzOSwgMTU4LCAxMiwgNDIsIAorICAgIDI0NywgMjIwLCAyMzksIDE1OCwgMTIsIDQyLCAyMDQsIDE4MiwgMTIsIDQyLCAyMjcsIDI1MCwgMjA0LCAxODIsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIwNCwgMTgyLCA3NSwgNDIsIDEwMiwgNzUsIDQyLCAyMjQsIDE3NiwgNzUsIDQyLCAyNDAsIDE4MiwgNzUsIAorICAgIDQyLCAyMDksIDc1LCA3NSwgNDIsIDIxMSwgMTk1LCA3NSwgNDIsIDExNywgNzUsIDQyLCAxMDUsIDc1LCA0MiwgMjI0LCAKKyAgICAyMDUsIDc1LCA0MiwgMjIyLCAxODAsIDc1LCA0MiwgMjI1LCAxMywgNzUsIDQyLCAyMzgsIDE1NCwgNzUsIDQyLCAxOTIsIAorICAgIDc1LCA0MiwgMTI3LCAyNDgsIDc4LCA3NSwgNDIsIDI0MywgMSwgNzUsIDQyLCAyMzIsIDIzMSwgNzUsIDQyLCAyMDcsIDIyLCAKKyAgICA3NSwgNDIsIDE3NiwgMjQ4LCA3OCwgNzUsIDQyLCAyMjYsIDk1LCA3NSwgNDIsIDIxNSwgNTEsIDc1LCA0MiwgMjAwLCAyMjgsIAorICAgIDc1LCA0MiwgMjA4LCAyMDYsIDc1LCA0MiwgNTEsIDE3NiwgMjQ4LCA3OCwgNzUsIDQyLCAyMzQsIDcwLCAyMzgsIDE3NCwgCisgICAgNzUsIDQyLCAyMDYsIDE2NiwgNzUsIDQyLCAyNDAsIDIzNiwgNzUsIDQyLCAyMTEsIDIwMCwgNzUsIDQyLCAyNDYsIDEyMCwgCisgICAgNzUsIDQyLCAyMTUsIDMsIDc1LCA0MiwgMjUxLCAxOTIsIDc1LCA0MiwgMjIxLCA1OCwgNzUsIDQyLCAyMzgsIDE3NCwgNzUsIAorICAgIDQyLCAyMzksIDE3LCA3NSwgNDIsIDIxMSwgMjIzLCA3NSwgNDIsIDIzNSwgMTE2LCA3NSwgNDIsIDIzNSwgMTE3LCAyMDksIAorICAgIDU1LCA3NSwgNDIsIDIzOCwgNTQsIDc1LCA0MiwgMjQ4LCAxNzQsIDc1LCA0MiwgMjAwLCAyNTAsIDc1LCA0MiwgMjQ2LCAKKyAgICAyMjcsIDc1LCA0MiwgMjEyLCAyMzcsIDc1LCA0MiwgMjI4LCAxMTMsIDc1LCA0MiwgMjA5LCA1MywgNzUsIDQyLCAyMjUsIAorICAgIDg1LCA3NSwgNDIsIDI0MywgMTEsIDc1LCA0MiwgMjA4LCAxOTcsIDc1LCA0MiwgMjIxLCA2MywgNzUsIDQyLCAyMTMsIDE1LCAKKyAgICA3NSwgNDIsIDIwMCwgMjM1LCA3NSwgNDIsIDIxNywgNzAsIDc1LCA0MiwgMjA0LCAxOTEsIDc1LCA0MiwgMjM5LCAxMzksIAorICAgIDc1LCA0MiwgMjA5LCAyNTAsIDIwNiwgNDcsIDc1LCA0MiwgMjM5LCAxODAsIDI0NiwgMTIwLCA3NSwgNDIsIDE2OCwgMjA4LCAKKyAgICA1MywgNzUsIDQyLCAxMjAsIDIzNCwgMTc0LCA3NSwgNDIsIDIxMCwgMCwgNzUsIDQyLCAyNDgsIDg1LCA3NSwgNDIsIDIwOSwgCisgICAgMzcsIDc1LCA0MiwgMjQ4LCA0OCwgNzUsIDQyLCAyMDgsIDkwLCA3NSwgNDIsIDIzNCwgMTI3LCA3NSwgNDIsIDIzNCwgMjE0LCAKKyAgICA3NSwgNDIsIDI0MCwgMTg1LCA3NSwgNDIsIDIzNCwgMTk5LCA3NSwgNDIsIDI0OCwgNjYsIDc1LCA0MiwgMjEzLCAyMTAsIAorICAgIDc1LCA0MiwgMjExLCAyMDgsIDc1LCA0MiwgMjQxLCAxMiwgNzUsIDQyLCAyNTAsIDExMywgNzUsIDQyLCAyMDgsIDE5MywgCisgICAgNzUsIDQyLCAyMTgsIDIxNCwgNzUsIDQyLCAyMDcsIDIyOCwgNzUsIDQyLCAyMTEsIDIzNCwgNzUsIDQyLCAyMjEsIDgxLCAKKyAgICA3NSwgNDIsIDIwNSwgMTA4LCA3NSwgNDIsIDIyNSwgMTYyLCA3NSwgNDIsIDIwOCwgNzYsIDc1LCA0MiwgMjQxLCAxNzMsIAorICAgIDc1LCA0MiwgMjAxLCA2MywgNzUsIDQyLCAyNDAsIDIxMiwgMjE4LCAyMTQsIDc1LCA0MiwgMjQ2LCA2NiwgNzUsIDQyLCAKKyAgICAyMzYsIDE3NiwgNzUsIDQyLCAyNDYsIDEzMiwgNzUsIDQyLCAyMDgsIDk1LCA3NSwgNDIsIDIwMSwgODIsIDc1LCA0MiwgCisgICAgMjM3LCA3NywgNzUsIDQyLCAyNDYsIDEyOCwgNzUsIDQyLCAyMzcsIDE1NCwgNzUsIDQyLCA1MywgMjAwLCAxOTUsIDc1LCAKKyAgICA0MiwgMTY3LCAyMDUsIDEwOSwgMjA1LCAzNywgNzUsIDQyLCAyMDksIDY3LCA3NSwgNDIsIDIzNywgMTY2LCA3NSwgNDIsIAorICAgIDI0MiwgMjU1LCA3NSwgNDIsIDI0MCwgMjAwLCA3NSwgNDIsIDIxNSwgMCwgNzUsIDQyLCAyMjcsIDI0MywgNzUsIDQyLCAKKyAgICAyMjIsIDQ5LCA3NSwgNDIsIDIwNSwgMjM5LCA3NSwgNDIsIDIwNywgMTc4LCA3NSwgNDIsIDIyNCwgMTk5LCA3NSwgNDIsIAorICAgIDIwMywgMTk1LCA3NSwgNDIsIDIzNywgMTEwLCA3NSwgNDIsIDI0OCwgMTE2LCA3NiwgMjQ2LCAxMDQsIDc1LCA0MiwgMjA5LCAKKyAgICAxNzgsIDc1LCA0MiwgMjM5LCAxODAsIDIwNiwgMTU4LCA3NSwgNDIsIDIwMSwgMzQsIDc1LCA0MiwgMjA5LCA4MywgNzUsIAorICAgIDQyLCAyNDAsIDI1NSwgNzUsIDQyLCAyMzgsIDIyLCA3NSwgNDIsIDIwOCwgMjMwLCA3NSwgNDIsIDQ4LCA3NSwgNDIsIDIwOCwgCisgICAgNzgsIDc1LCA0MiwgMjA4LCAyMTQsIDc1LCA0MiwgMjA1LCAxMzEsIDc1LCA0MiwgMjM1LCA4NiwgNzUsIDQyLCAyNDcsIAorICAgIDEwNCwgNzUsIDQyLCAyMDgsIDExMywgNzUsIDQyLCAyNDksIDkwLCA3NSwgNDIsIDIxMywgODMsIDc1LCA0MiwgMjA5LCAKKyAgICAxNTMsIDc1LCA0MiwgMjI3LCAyMzUsIDc1LCA0MiwgMjIwLCAxMywgNzUsIDQyLCAyMTAsIDU5LCA3NSwgNDIsIDIzNywgCisgICAgMTQyLCA3NSwgNDIsIDIxNywgOTIsIDc1LCA0MiwgMjUxLCA3OSwgNzUsIDQyLCAyMTUsIDEyMCwgNzUsIDQyLCAyMzksIDIxLCAKKyAgICA3NSwgNDIsIDI0OCwgNDMsIDc1LCA0MiwgMjIyLCA3MSwgNzUsIDQyLCAyMjEsIDE1OCwgNzUsIDQyLCAyMTAsIDE3NCwgNzUsIAorICAgIDQyLCAyNTAsIDIwNiwgNzUsIDQyLCAyMjEsIDc2LCA3NSwgNDIsIDIwNSwgMTYzLCA3NSwgNDIsIDIxNywgNDEsIDc1LCA0MiwgCisgICAgMjQ4LCAxMjAsIDc1LCA0MiwgMjA4LCA3NCwgNzUsIDQyLCAyNDYsIDc4LCA3NSwgNDIsIDIzNSwgNzYsIDc1LCA0MiwgMjA2LCAKKyAgICAyLCA3NSwgNDIsIDIyOCwgNzYsIDc1LCA0MiwgMjQ4LCAxMzIsIDc1LCA0MiwgMjAxLCAxMDUsIDIzOCwgMTc0LCA3NSwgNDIsIAorICAgIDI0NiwgMTAzLCA3NSwgNDIsIDIwMSwgNDcsIDc1LCA0MiwgMjExLCAxOTAsIDc1LCA0MiwgMjMzLCAxMjQsIDc1LCA0MiwgCisgICAgMjA4LCAyMjcsIDc1LCA0MiwgMjAzLCA4MywgNzUsIDQyLCAyNDksIDMsIDc1LCA0MiwgMjE1LCAxNjgsIDc1LCA0MiwgMjQ5LCAKKyAgICAxMTYsIDc1LCA0MiwgMjEwLCA1NCwgNzUsIDQyLCAyMTMsIDE2OSwgNzUsIDQyLCAyMTIsIDE1OCwgNzUsIDQyLCAyMzYsIAorICAgIDI1NSwgNzUsIDQyLCAyNDgsIDExOCwgNzUsIDQyLCAyNDcsIDExOCwgNzUsIDQyLCAyNDgsIDE0OSwgNzUsIDQyLCAyMjEsIAorICAgIDc4LCA3NSwgNDIsIDIwMSwgMTA0LCA3NSwgNDIsIDI0NiwgMTQxLCA3NSwgNDIsIDIwMSwgMTIsIDc1LCA0MiwgMjQwLCAKKyAgICAyNDcsIDc1LCA0MiwgMjAyLCAyMTgsIDc1LCA0MiwgMjM1LCAxMDgsIDc1LCA0MiwgMjI0LCA4OSwgNzUsIDQyLCAyMzYsIAorICAgIDQxLCA3NSwgNDIsIDIyMSwgNjYsIDc1LCA0MiwgMjA5LCA3NCwgNzUsIDQyLCAyMDksIDI1MCwgMjA3LCA1LCAyNDgsIDE2MiwgCisgICAgNzUsIDQyLCAyMTMsIDIyMiwgNzUsIDQyLCAyNDgsIDEyNiwgNzUsIDQyLCAyMDAsIDIxOCwgNzUsIDQyLCAyMzcsIDE4OSwgCisgICAgNzUsIDQyLCAyMjUsIDM0LCA3NSwgNDIsIDIwNiwgMjM4LCAyMjUsIDM0LCA3NSwgNDIsIDIyNSwgMzAsIDc1LCA0MiwgMjA5LCAKKyAgICAwLCA3NSwgNDIsIDIyNSwgMzUsIDc1LCA0MiwgMjAxLCAxNiwgNzUsIDQyLCAyMzcsIDE3LCA3NSwgNDIsIDIzOSwgMTAsIAorICAgIDc1LCA0MiwgMjM0LCAxMzYsIDc1LCA0MiwgMjM2LCAyMTcsIDc1LCA0MiwgMjMzLCAxMjAsIDc1LCA0MiwgMjQ4LCAxMTIsIAorICAgIDc1LCA0MiwgMjA2LCAyNDcsIDc1LCA0MiwgMjM0LCAyMjEsIDc1LCA0MiwgMjM3LCAxMDMsIDc1LCA0MiwgMjEyLCA1OCwgCisgICAgMjAxLCAxMiwgNzUsIDQyLCAyNDcsIDEwNiwgNzUsIDQyLCAyMzUsIDE2OSwgNzUsIDQyLCAyMzcsIDcxLCA3NSwgNDIsIAorICAgIDI0OCwgMTYyLCA3NSwgNDIsIDIxMiwgMjcsIDc1LCA0MiwgMjQxLCAxNTgsIDc1LCA0MiwgMjAxLCAzOSwgNzUsIDQyLCAKKyAgICAyMzQsIDEwNiwgNzUsIDQyLCAyMDAsIDQzLCA3NSwgNDIsIDIyMSwgMTY5LCA3NSwgNDIsIDI0OCwgMTQ0LCA3NSwgNDIsIAorICAgIDIzOCwgMTg2LCA3NSwgNDIsIDIzNiwgMjAyLCA3NSwgNDIsIDIwNSwgODAsIDc1LCA0MiwgMjM5LCAxNDIsIDc1LCA0MiwgCisgICAgMjEzLCAyMDQsIDc1LCA0MiwgMjE4LCAyMTYsIDc1LCA0MiwgMjM4LCA1NSwgNzUsIDQyLCAyMDUsIDE1OSwgNzUsIDQyLCAKKyAgICAyMzksIDE1OCwgNzUsIDQyLCAyMDQsIDE4MiwgNzUsIDQyLCAyMzcsIDIwLCAxNDEsIDI0MSwgMTE3LCAxNzEsIDQ5LCAyMDUsIAorICAgIDE4NiwgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCA4OCwgMjA1LCAxODYsIDU3LCAxNDEsIDI0MSwgMTE3LCAxNzEsIAorICAgIDQ5LCAyMDUsIDE4NiwgMTAxLCAyNiwgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCA4OCwgMjA1LCAxODYsIDEwMSwgCisgICAgMjYsIDU3LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIzNiwgMTgzLCAyMDcsIDIwMCwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIAorICAgIDIwMSwgMjM2LCAyMDEsIDU2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgNTcsIDE0MSwgMjQxLCAKKyAgICAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCAyMjUsIDI4LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIAorICAgIDIwMSwgMjAzLCAyMjUsIDIyNSwgMjgsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCAyMDMsIDIyNSwgCisgICAgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIyNCwgNTQsIDIyNSwgMjgsIDE0MSwgCisgICAgMjQxLCAxMTcsIDE3MSwgMjE2LCAyNDUsIDE0MSwgMjA4LCAyNDQsIDE0MSwgMjQ2LCA3MCwgMTQxLCAyMzYsIDE4MywgMjA4LCAKKyAgICA3NiwgMjQwLCAyNDQsIDgxLCAyMjcsIDIzNiwgMjI4LCA5NiwgMjA4LCAxMTIsIDk5LCAxNDEsIDIyOCwgMTAsIDgxLCAxNDEsIAorICAgIDI0NiwgMTA2LCA4MSwgMTQxLCA0MSwgMTk5LCA4MSwgNDksIDI1MSwgNzEsIDE1OSwgNTEsIDI1MSwgNzEsIDE1OSwgNDksIAorICAgIDUzLCAyNTEsIDcxLCAxNTksIDUxLCA1MywgMjUxLCA3MSwgMTU5LCA0OSwgMjQzLCAxNiwgMTU5LCA1MSwgMjQzLCAxNiwgCisgICAgMTU5LCA0OSwgNjQsIDI0MywgMTYsIDE1OSwgNTEsIDY0LCAyNDMsIDE2LCAxNTksIDQ5LCA2MywgMjI0LCAyNDcsIDE1OSwgCisgICAgNTEsIDYzLCAyMjQsIDI0NywgMTU5LCAyMTUsIDY1LCA4MSwgMjM1LCAyMzgsIDgxLCA0OSwgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDE1OSwgNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDQ5LCA2NCwgMjI0LCAyNDcsIDE1OSwgNTEsIDY0LCAyMjQsIDI0NywgCisgICAgMTU5LCA0OSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDUxLCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNDksIAorICAgIDY0LCA1MiwgMTU5LCA1MSwgNjQsIDUyLCAxNTksIDIwMSwgNzgsIDI0MSwgMjQ0LCAyMTMsIDEwNSwgNTMsIDIxNSwgMTUsIAorICAgIDIxNCwgNjMsIDgxLCA1MywgMjE1LCAxNSwgMjE0LCA2MywgODEsIDEyOCwgNTMsIDIxNSwgMTUsIDIxNCwgNjMsIDgxLCAKKyAgICAyMTUsIDY1LCAxMzQsIDIzNywgMTg5LCAyMzQsIDE3MSwgMjE4LCA5MywgMTAyLCAyMzQsIDE3MSwgMjE4LCA5MywgMTA1LCAKKyAgICAyMzQsIDE3MSwgMjE4LCA5MywgMTQ3LCAyMzQsIDE3MSwgMjE4LCA5MywgMTQ5LCAyMzQsIDE3MSwgMjE4LCA5MywgMTY0LCAKKyAgICAyMzQsIDE3MSwgMjE4LCA5MywgMTg3LCAyMzQsIDE3MSwgMjE4LCA5MywgMjEwLCAxMzUsIDIzNCwgMTcxLCAyMTgsIDkzLCAKKyAgICAxOTIsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMTksIDExMywgMTQxLCAyMjQsIDIyOSwgMTUwLCA4MSwgMTQxLCAyMTMsIDE5LCAKKyAgICAxNTAsIDgxLCAxNDEsIDI0MSwgMTI2LCAxNTAsIDgxLCAxNDEsIDIzOCwgMTUzLCAxNTAsIDgxLCAyOSwgMjA5LCAxMzksIAorICAgIDczLCAxNTAsIDgxLCAyOSwgNTMsIDczLCAxNTAsIDgxLCAyMDEsIDc0LCAyNDEsIDI0NCwgODMsIDIyNywgNjcsIDIxMywgCisgICAgMTMzLCA4MSwgODMsIDIyNywgNjcsIDIxMywgMTMzLCAzLCAyMDIsIDE4OSwgMjA5LCAxLCA4MSwgODMsIDIyNywgNjcsIAorICAgIDIxMywgMTMzLCAxMzQsIDIwMywgMjI1LCAyMzQsIDIxMywgODMsIDIyNywgNjcsIDIxMywgMTMzLCAzLCAyMDIsIDE4OSwgCisgICAgMjA5LCAxLCAxMzQsIDIwMywgMjI1LCAyMzQsIDIxMywgODMsIDIyNywgNjcsIDIxMywgMTMzLCAxMzQsIDIyNCwgNTQsIAorICAgIDIzNCwgMjEzLCA0NCwgMjE1LCA2NSwgODEsIDE0MSwgMjA2LCAxNzgsIDIyNCwgMTc3LCAyMzcsIDEzOSwgMjEwLCAxNTUsIAorICAgIDk5LCAyMzQsIDE3MSwgMjE4LCA5MywgMjA2LCAxNjYsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMDQsIDE1OSwgMjM0LCAxNzEsIAorICAgIDIxOCwgOTMsIDIwNiwgNjcsIDgzLCAxNDEsIDIyOCwgMTAsIDgxLCAyMjIsIDEyOCwgODEsIDIxNiwgMTEwLCAyNTEsIDEwNSwgCisgICAgODEsIDE0MSwgNTgsIDIyOCwgOTksIDE0MSwgMTY3LCAyMzcsIDk2LCAyMDgsIDI0NCwgMTc3LCAxLCA0LCA2MiwgMTc3LCAxLCAKKyAgICA2MiwgMTc3LCAxLCA0LCA3MCwgMTc3LCAxLCA3MCwgMTc3LCAxLCA0LCA2NiwgMTc3LCAxLCA2NiwgMTc3LCAxLCA0LCA3MiwgCisgICAgMTc3LCAxLCA3MiwgMTc3LCAxLCA0LCA3NCwgMTc3LCAxLCA3NCwgMTc3LCAxLCAxNjEsIDE3NywgMSwgMjM2LCA4OSwgMTc3LCAKKyAgICAxLCAyMjYsIDE2MywgMTc3LCAxLCAyMzUsIDE2MSwgMTc3LCAxLCAyMjYsIDE1LCAxNzcsIDEsIDIzNSwgNTAsIDE3NywgMSwgCisgICAgMjI3LCA4LCAxNzcsIDEsIDIzNiwgMTUsIDE3NywgMSwgMjI2LCA4OCwgMTc3LCAxLCAyMzUsIDExNiwgMTc3LCAxLCAyMTIsIAorICAgIDY0LCAxNzcsIDEsIDE5OSwgMTE0LCAxNzcsIDEsIDIwOSwgMTgyLCAxNzcsIDEsIDE5OSwgMzYsIDE3NywgMSwgMjA4LCAyNCwgCisgICAgMTc3LCAxLCAxOTksIDMsIDE3NywgMSwgMjExLCAyMDIsIDE3NywgMSwgMTk5LCA4OSwgMTc3LCAxLCAyMDksIDI5LCAxNzcsIAorICAgIDEsIDE5OSwgMTQsIDE3NywgMSwgMjA3LCAzNiwgMTc3LCAxLCAyNDIsIDU4LCAxNzcsIDEsIDIwNiwgMTUsIDE3NywgMSwgCisgICAgMjQxLCA3NiwgMTc3LCAxLCA0LCAyMDQsIDIxNSwgMTc3LCAxLCAyMDQsIDIxNSwgMTc3LCAxLCAyMzksIDEzNywgMTc3LCAxLCAKKyAgICAyMDYsIDIwMSwgMTc3LCAxLCAyNDEsIDE3NSwgMTc3LCAxLCAxMzgsIDE3NywgMSwgMjQwLCAyMTEsIDE3NywgMSwgMTg4LCAKKyAgICAxNzcsIDEsIDIxOSwgMTUwLCAxNzcsIDEsIDIxOCwgMTMzLCAxNzcsIDEsIDIyMCwgMzQsIDE3NywgMSwgMjE4LCAyNDEsIAorICAgIDE3NywgMSwgMTQ0LCAxNzcsIDEsIDI0OSwgMTM2LCAxNzcsIDEsIDE3MiwgMTc3LCAxLCAyMzQsIDc1LCAxNzcsIDEsIDI0OCwgCisgICAgMTg4LCAxNzcsIDEsIDIxNSwgMjA0LCAxNzcsIDEsIDIzMywgOTcsIDE3NywgMSwgMjQ4LCAzNiwgMTc3LCAxLCAyMTQsIAorICAgIDIyNCwgMTc3LCAxLCAyMzQsIDEzOSwgMTc3LCAxLCAyNDksIDgsIDE3NywgMSwgMjE2LCA3MywgMTc3LCAxLCAyMzMsIDIwNywgCisgICAgMTc3LCAxLCAyNDgsIDEyNCwgMTc3LCAxLCAyMTUsIDEwNiwgMTc3LCAxLCAxNzgsIDE3NywgMSwgMjIxLCAyMTEsIDE3NywgCisgICAgMSwgMjIxLCA0MSwgMTc3LCAxLCAyMjIsIDc2LCAxNzcsIDEsIDIyMSwgMTM2LCAxNzcsIDEsIDQsIDE4MywgMTc3LCAxLCAKKyAgICAxODMsIDE3NywgMSwgNCwgMTk5LCAyMTEsIDE3NywgMSwgMTk5LCAyMTEsIDE3NywgMSwgNCwgMTk5LCAyNDUsIDE3NywgMSwgCisgICAgMTk5LCAyNDUsIDE3NywgMSwgMjEzLCAyNTIsIDE3NywgMSwgMjEzLCA4OCwgMTc3LCAxLCAyMTIsIDE3NSwgMTc3LCAxLCAKKyAgICAyMTMsIDE5MCwgMTc3LCAxLCAyMTMsIDEsIDE3NywgMSwgNCwgMjAxLCAxMTQsIDE3NywgMSwgMjAxLCAxMTQsIDE3NywgMSwgCisgICAgMjAxLCAzMSwgMTc3LCAxLCAyMDEsIDY0LCAxNzcsIDEsIDIwMSwgMCwgMTc3LCAxLCAyMjAsIDIxNCwgMTc3LCAxLCAyMDEsIAorICAgIDE2NiwgMTc3LCAxLCA0LCAxNjEsIDE3NywgMSwgNCwgMjI3LCA4LCAzOCwgMjI3LCAzMiwgMjAyLCAxODksIDIwOSwgMSwgCisgICAgODEsIDM4LCAyMjcsIDMyLCAyMTAsIDE3MiwgMjA5LCAxLCA4MSwgMjI3LCAzMiwgMjAyLCAxODksIDIwOSwgMSwgODEsIAorICAgIDIyNywgMzIsIDIxMCwgMTcyLCAyMDksIDEsIDgxLCAxNzcsIDIyOCwgMTAsIDgxLCAxNzcsIDIwMiwgMTg5LCAyMjgsIDEwLCAKKyAgICA4MSwgMTc3LCAyNDEsIDM1LCAxOTksIDIyNiwgMjI3LCAzMiwgNTMsIDIzMywgMzMsIDY5LCAxLCA0LCA2MiwgNjksIDEsIAorICAgIDYyLCA2OSwgMSwgNCwgNzAsIDY5LCAxLCA3MCwgNjksIDEsIDQsIDY2LCA2OSwgMSwgNjYsIDY5LCAxLCA0LCA3MiwgNjksIAorICAgIDEsIDcyLCA2OSwgMSwgNCwgNzQsIDY5LCAxLCA3NCwgNjksIDEsIDE2MSwgNjksIDEsIDIzNiwgODksIDY5LCAxLCAyMjYsIAorICAgIDE2MywgNjksIDEsIDIzNSwgMTYxLCA2OSwgMSwgMjI2LCAxNSwgNjksIDEsIDIzNSwgNTAsIDY5LCAxLCAyMjcsIDgsIDY5LCAKKyAgICAxLCAyMzYsIDE1LCA2OSwgMSwgMjI2LCA4OCwgNjksIDEsIDIzNSwgMTE2LCA2OSwgMSwgMjEyLCA2NCwgNjksIDEsIDE5OSwgCisgICAgMTE0LCA2OSwgMSwgMjA5LCAxODIsIDY5LCAxLCAxOTksIDM2LCA2OSwgMSwgMjA4LCAyNCwgNjksIDEsIDE5OSwgMywgNjksIAorICAgIDEsIDIxMSwgMjAyLCA2OSwgMSwgMTk5LCA4OSwgNjksIDEsIDIwOSwgMjksIDY5LCAxLCAxOTksIDE0LCA2OSwgMSwgMjA3LCAKKyAgICAzNiwgNjksIDEsIDI0MiwgNTgsIDY5LCAxLCAyMDYsIDE1LCA2OSwgMSwgMjQxLCA3NiwgNjksIDEsIDQsIDIwNCwgMjE1LCAKKyAgICA2OSwgMSwgMjA0LCAyMTUsIDY5LCAxLCAyMzksIDEzNywgNjksIDEsIDIwNiwgMjAxLCA2OSwgMSwgMjQxLCAxNzUsIDY5LCAKKyAgICAxLCAxMzgsIDY5LCAxLCAyNDAsIDIxMSwgNjksIDEsIDE4OCwgNjksIDEsIDIxOSwgMTUwLCA2OSwgMSwgMjE4LCAxMzMsIAorICAgIDY5LCAxLCAyMjAsIDM0LCA2OSwgMSwgMjE4LCAyNDEsIDY5LCAxLCAxNDQsIDY5LCAxLCAyNDksIDEzNiwgNjksIDEsIDE3MiwgCisgICAgNjksIDEsIDIzNCwgNzUsIDY5LCAxLCAyNDgsIDE4OCwgNjksIDEsIDIxNSwgMjA0LCA2OSwgMSwgMjMzLCA5NywgNjksIDEsIAorICAgIDI0OCwgMzYsIDY5LCAxLCAyMTQsIDIyNCwgNjksIDEsIDIzNCwgMTM5LCA2OSwgMSwgMjQ5LCA4LCA2OSwgMSwgMjE2LCA3MywgCisgICAgNjksIDEsIDIzMywgMjA3LCA2OSwgMSwgMjQ4LCAxMjQsIDY5LCAxLCAyMTUsIDEwNiwgNjksIDEsIDE3OCwgNjksIDEsIAorICAgIDIyMSwgMjExLCA2OSwgMSwgMjIxLCA0MSwgNjksIDEsIDIyMiwgNzYsIDY5LCAxLCAyMjEsIDEzNiwgNjksIDEsIDQsIDE4MywgCisgICAgNjksIDEsIDE4MywgNjksIDEsIDQsIDE5OSwgMjExLCA2OSwgMSwgMTk5LCAyMTEsIDY5LCAxLCA0LCAxOTksIDI0NSwgNjksIAorICAgIDEsIDE5OSwgMjQ1LCA2OSwgMSwgMjEzLCAyNTIsIDY5LCAxLCAyMTMsIDg4LCA2OSwgMSwgMjEyLCAxNzUsIDY5LCAxLCAKKyAgICAyMTMsIDE5MCwgNjksIDEsIDIxMywgMSwgNjksIDEsIDQsIDIwMSwgMTE0LCA2OSwgMSwgMjAxLCAxMTQsIDY5LCAxLCAyMDEsIAorICAgIDMxLCA2OSwgMSwgMjAxLCA2NCwgNjksIDEsIDIwMSwgMCwgNjksIDEsIDIyMCwgMjE0LCA2OSwgMSwgMjAxLCAxNjYsIDY5LCAKKyAgICAxLCA0LCAxNjEsIDY5LCAxLCA0LCAyMjcsIDgsIDY5LCAxLCAyMDMsIDkwLCA2OSwgMSwgMjAyLCAyMzQsIDY5LCAxLCAyMDMsIAorICAgIDU5LCA2OSwgMSwgMjAyLCAxOTMsIDY5LCAxMDEsIDI0MCwgMTgyLCAyMjcsIDMyLCAyMTQsIDI0OCwgMjA5LCAxLCA4MSwgCisgICAgNjksIDIyOCwgMTAsIDgxLCA2OSwgMjAyLCAxODksIDIyOCwgMTAsIDgxLCA2OSwgMjQxLCAzNSwgMjI2LCA1NSwgMjQ4LCAKKyAgICAxMDIsIDEsIDI1MCwgMTAzLCAyNDgsIDEwMiwgMSwgMjE2LCAyMjYsIDI0OCwgMTAyLCAxLCAyMjMsIDI0MywgMjQ4LCAxMDIsIAorICAgIDEsIDIzOCwgNSwgMjQ4LCAxMDIsIDEsIDI0MiwgMTUzLCAyNDgsIDEwMiwgMSwgMjA3LCA4MywgMjQ4LCAxMDIsIDEsIDIyMCwgCisgICAgMjE0LCAyNDgsIDEwMiwgMSwgMTU2LCAyNDgsIDEwMiwgMSwgMjM2LCAxNTYsIDI0OCwgMTAyLCAxLCAyMjcsIDExOCwgMjQ4LCAKKyAgICAxMDIsIDEsIDIzNCwgMjQ3LCAyNDgsIDEwMiwgMSwgMjI3LCAyNTEsIDI0OCwgMTAyLCAxLCAyMTQsIDE2NywgMjQ4LCAxMDIsIAorICAgIDEsIDIwMCwgMTk1LCAyNDgsIDEwMiwgMSwgMTk5LCA3OCwgMjQ4LCAxMDIsIDEsIDI0NywgMzgsIDI0OCwgMTAyLCAxLCAKKyAgICAyMTAsIDExNiwgMjQ4LCAxMDIsIDEsIDE0NiwgMjQ4LCAxMDIsIDEsIDE5OSwgMTU3LCAyNDgsIDEwMiwgMSwgMjQ3LCAyMjMsIAorICAgIDI0OCwgMTAyLCAxLCAyMTIsIDEyMiwgMjQ4LCAxMDIsIDEsIDYyLCAyNDgsIDEwMiwgMSwgNzQsIDI0OCwgMTAyLCAxLCA3MiwgCisgICAgMjQ4LCAxMDIsIDEsIDIzOCwgMjQxLCAyNDgsIDEwMiwgMSwgMjUxLCAxNzYsIDI0OCwgMTAyLCAxLCAyMzgsIDIzNCwgMjQ4LCAKKyAgICAxMDIsIDEsIDI1MCwgMTM5LCAyNDgsIDEwMiwgMSwgMjE3LCAzLCAyNDgsIDEwMiwgMSwgMjUxLCA4NSwgMjQ4LCAxMDIsIDEsIAorICAgIDIzOCwgMTc5LCAyNDgsIDEwMiwgMSwgMjUxLCA3NiwgMjQ4LCAxMDIsIDEsIDIzOCwgMTY1LCAyNDgsIDEwMiwgMSwgMjM4LCAKKyAgICAxMTUsIDI0OCwgMTAyLCAxLCA3MCwgMjQ4LCAxMDIsIDEsIDY2LCAyNDgsIDEwMiwgMSwgMjI4LCA4LCAyNDgsIDEwMiwgMSwgCisgICAgMjAzLCAxNjgsIDI0OCwgMTAyLCAxLCAyMTksIDI1NSwgMjQ4LCAxMDIsIDEsIDIzNSwgMTIwLCAyNDgsIDEwMiwgMSwgMjI4LCAKKyAgICAxNTIsIDI5LCAxLCAyMjYsIDEyMSwgMjksIDEsIDIwOCwgMTcxLCAyOSwgMSwgMjI2LCAxMTQsIDI5LCAxLCAyMTksIDE0MywgCisgICAgMjksIDEsIDIxOSwgMTQxLCAyOSwgMSwgMjE5LCAxNDAsIDI5LCAxLCAyMDUsIDI1MywgMjksIDEsIDIwOCwgMTYwLCAyOSwgCisgICAgMSwgMjEzLCA3OCwgMjksIDEsIDIxMywgNzMsIDI5LCAxLCAyMTMsIDcwLCAyOSwgMSwgMjEzLCA2MywgMjksIDEsIDIxMywgCisgICAgNTgsIDI5LCAxLCAyMTMsIDUzLCAyOSwgMSwgMjEzLCA2NCwgMjksIDEsIDIxMywgNzYsIDI5LCAxLCAyMjEsIDE5NywgMjksIAorICAgIDEsIDIxNSwgMTkwLCAyOSwgMSwgMjA4LCAxNjgsIDI5LCAxLCAyMTUsIDE3OSwgMjksIDEsIDIwOSwgMTI5LCAyOSwgMSwgCisgICAgMjA4LCAxNjUsIDI5LCAxLCAyMjgsIDE3NCwgMjksIDEsIDI0NiwgMTY4LCAyOSwgMSwgMjA4LCAxNzUsIDI5LCAxLCAyNDYsIAorICAgIDIzMiwgMjksIDEsIDIyNiwgMTgzLCAyOSwgMSwgMjA2LCA4MCwgMjksIDEsIDIxNSwgMjI3LCAyOSwgMSwgMjM0LCA2NiwgCisgICAgMjksIDEsIDYyLCAyOSwgMSwgMjUxLCAyMjEsIDI5LCAxLCAxODMsIDI5LCAxLCAyMDAsIDk4LCAyOSwgMSwgMjM4LCAxNDIsIAorICAgIDI5LCAxLCA3MiwgMjksIDEsIDIwMCwgMzgsIDI5LCAxLCAyMDAsIDUxLCAyOSwgMSwgNzQsIDI5LCAxLCAyMDEsIDExNCwgCisgICAgMjksIDEsIDIwMSwgMTEwLCAyOSwgMSwgMjE3LCAxMjEsIDI5LCAxLCAxOTksIDI0NSwgMjksIDEsIDY2LCAyOSwgMSwgMjAxLCAKKyAgICA1MCwgMjksIDEsIDIwMSwgNjQsIDI5LCAxLCAyMDEsIDMxLCAyOSwgMSwgMTk5LCAyMTEsIDI5LCAxLCAyMzgsIDY5LCAyOSwgCisgICAgMSwgMjAwLCA5LCAyOSwgMSwgNzAsIDI5LCAyMzcsIDkzLCAyOSwgMSwgMjA4LCAxNjksIDI5LCAxLCAyMTksIDEzMywgMjksIAorICAgIDEsIDIxOSwgMTM1LCAyOSwgMSwgMjE5LCAxMzgsIDI5LCAxLCAyMTMsIDcxLCAyOSwgMSwgMjEzLCA1MiwgMjksIDEsIDIxMywgCisgICAgNjAsIDI5LCAxLCAyMTMsIDY1LCAyOSwgMSwgMjEzLCA1MCwgMjksIDEsIDIyMSwgMTkwLCAyOSwgMSwgMjIxLCAxODcsIDI5LCAKKyAgICAxLCAyMjEsIDE5MSwgMjksIDEsIDIyNywgNTMsIDI5LCAxLCAyMTUsIDE4NSwgMjksIDEsIDIxNSwgMTcxLCAyOSwgMSwgCisgICAgMjE1LCAxNzcsIDI5LCAxLCAyMTUsIDE3NCwgMjksIDEsIDIxNSwgMTg4LCAyOSwgMSwgMjE1LCAxNzIsIDI5LCAxLCAyMjcsIAorICAgIDUxLCAyOSwgMSwgMjI3LCA0OSwgMjksIDEsIDIwOSwgMTIyLCAyOSwgMSwgMjA5LCAxMjAsIDI5LCAxLCAyMDksIDExMiwgCisgICAgMjksIDEsIDIwOSwgMTE3LCAyOSwgMSwgMjA5LCAxMjcsIDI5LCAxLCAyMTYsIDE0NiwgMjksIDEsIDIwOCwgMTcyLCAyOSwgCisgICAgMSwgMjAwLCAyOCwgMjksIDEsIDIwMCwgMjQsIDI5LCAxLCAyMDAsIDI1LCAyOSwgMSwgMjI3LCA1MiwgMjksIDEsIDIwOCwgCisgICAgMTczLCAyOSwgMSwgMjAwLCAzNCwgMjksIDEsIDE5OSwgMjM5LCAyOSwgMSwgMTk5LCAyMzgsIDI5LCAxLCAxOTksIDI0MSwgCisgICAgMjksIDEsIDE5OSwgMjAyLCAyOSwgMSwgMTk5LCAyMDMsIDI5LCAxLCAxOTksIDIwNiwgMjksIDEsIDI1MCwgMjQ1LCAyOSwgCisgICAgMSwgMjUwLCAyMzksIDE0MSwgMjUxLCA1OCwgMjI0LCAxNjUsIDgxLCAxNDEsIDI1MSwgNTgsIDIxMywgMTA2LCA4MSwgMTQxLCAKKyAgICAyNTEsIDU4LCAxMTIsIDgxLCAxNDEsIDI1MSwgNTgsIDEyMCwgODEsIDE0MSwgMjUxLCA1OCwgMTI2LCA4MSwgMTQxLCAyNTEsIAorICAgIDU4LCAyMzYsIDIyOSwgODEsIDE0MSwgMjUxLCA1OCwgMjA1LCAxNTgsIDgxLCAxNDEsIDI1MSwgNTgsIDEwMSwgODEsIDE0MSwgCisgICAgMjUxLCA1OCwgMjQ4LCA5MywgODEsIDE0MSwgMjUxLCA1OCwgMjM3LCA3MywgODEsIDE0MSwgMjUxLCA1OCwgMjExLCAxOTYsIAorICAgIDgxLCAxNDEsIDI1MSwgNTgsIDIwNiwgNzUsIDgxLCAxNDEsIDI1MSwgNTgsIDIzNiwgMjIyLCA4MSwgMTQxLCAyNTEsIDU4LCAKKyAgICAyMzQsIDEyNCwgODEsIDE0MSwgMjUxLCA1OCwgMjM5LCAxOCwgODEsIDE0MSwgMjUxLCA1OCwgMjIyLCAxODEsIDgxLCAyNDgsIAorICAgIDEwMiwgMSwgMjQ4LCAzNiwgMjQ4LCAxMDIsIDEsIDE5OSwgMzYsIDI0OCwgMTAyLCAxLCAyMjcsIDIwNywgMjQ4LCAxMDIsIAorICAgIDEsIDIzNSwgNTAsIDI0OCwgMTAyLCAxLCAyMzgsIDI1NSwgMjQ4LCAxMDIsIDEsIDIzOCwgMTYyLCAyNDgsIDEwMiwgMSwgCisgICAgMjE3LCA2MywgMjQ4LCAxMDIsIDEsIDIxNywgNjcsIDI0OCwgMTAyLCAxLCAyMjgsIDM1LCAyNDgsIDEwMiwgMSwgMjUxLCAKKyAgICA2MCwgMjQ4LCAxMDIsIDEsIDIyOCwgODMsIDI0OCwgMTAyLCAxLCAyMDMsIDIzMywgMjQ4LCAxMDIsIDEsIDIyOCwgMTM0LCAKKyAgICAyNDgsIDEwMiwgMSwgMjE5LCAyMzMsIDI0OCwgMTAyLCAxLCAyNTEsIDE3MCwgMjQ4LCAxMDIsIDEsIDI1MCwgMTM0LCAyNDgsIAorICAgIDEwMiwgMSwgMjUxLCAxMDEsIDI0OCwgMTAyLCAxLCAyMTcsIDg2LCAyNDgsIDEwMiwgMSwgMjE3LCA2OSwgMjQ4LCAxMDIsIAorICAgIDEsIDIyOCwgODAsIDI0OCwgMTAyLCA0NywgMSwgMjE2LCAyMjYsIDI0OCwgMTAyLCA0NywgMSwgMjA3LCA4MywgMjQ4LCAKKyAgICAxMDIsIDQ3LCAxLCAyMjcsIDExOCwgMjQ4LCAxMDIsIDQ3LCAxLCAyMzQsIDI0NywgMjQ4LCAxMDIsIDEsIDIzNSwgMjAwLCAKKyAgICAyNDgsIDEwMiwgMSwgMjI0LCAyMjQsIDI0OCwgMTAyLCAxLCAxOTgsIDIzOSwgMTIsIDIwOCwgNDcsIDIwNywgODMsIDEyLCAKKyAgICAyMDgsIDQ3LCAyMDEsIDQyLCAxMiwgMjA4LCA0NywgMjAwLCAxNzAsIDEyLCAyMDgsIDQ3LCAyNDcsIDIzNiwgMTIsIDIwOCwgCisgICAgNDcsIDIwNywgMTg3LCAxMiwgMjA4LCA0NywgMjMzLCAyMywgMTIsIDIwOCwgNDcsIDIzMywgMjcsIDEyLCAyMDgsIDQ3LCAKKyAgICAyMzMsIDEwNiwgMTIsIDIwOCwgNDcsIDIzMywgMjQsIDEyLCAyMDgsIDQ3LCAyMDcsIDg2LCAxMiwgMjA4LCA0NywgMjMzLCAKKyAgICAyNiwgMTIsIDIwOCwgNDcsIDIzMywgMjIsIDEyLCAyMDgsIDQ3LCAyMzMsIDEwNCwgMTIsIDIwOCwgNDcsIDIzMywgMjUsIAorICAgIDEyLCAyMDgsIDQ3LCAyMzMsIDIxLCAxMiwgMjA4LCA0NywgMjIwLCAyMTQsIDEyLCAyMDgsIDQ3LCAyMzQsIDI0NywgMTIsIAorICAgIDIwOCwgNDcsIDIxMiwgMTIyLCAxMiwgMjA4LCA0NywgMjE2LCAyMjYsIDEyLCAyMDgsIDQ3LCAyMDgsIDI0NywgMTIsIDIwOCwgCisgICAgNDcsIDI0MiwgMTUzLCAxMiwgMjA4LCA0NywgMjMzLCAyOCwgMTIsIDIwOCwgNDcsIDIzNCwgODUsIDEyLCAyMDgsIDQ3LCAKKyAgICAyMDcsIDk1LCAxMiwgMjA4LCA0NywgMjA3LCAxNjYsIDEyLCAyMDgsIDQ3LCAyMDgsIDEyMywgMTIsIDIwOCwgNDcsIDIxMCwgCisgICAgMTIyLCAxMiwgMjA4LCA0NywgMjE2LCA3NywgMTIsIDIwOCwgNDcsIDIxNCwgMTY5LCAxMiwgMjA4LCA0NywgMjA1LCAxODcsIAorICAgIDEyLCAyMDgsIDQ3LCAyMDcsIDg1LCAxMiwgMjA4LCA0NywgMjA3LCAxNzcsIDEyLCAyMDgsIDQ3LCAyMzMsIDM3LCAxMiwgCisgICAgMjA4LCA0NywgMjMzLCAyMCwgMTIsIDIwOCwgNDcsIDIxNSwgMjQ3LCAxMiwgMjA4LCA0NywgMjE0LCAxNjcsIDY5LCAxLCA0LCAKKyAgICAyMjYsIDE1LCA2OSwgMSwgNCwgMjA5LCAxODIsIDY5LCAxLCA0LCAyMDgsIDI0LCA2OSwgMSwgNCwgMTM4LCA2OSwgMSwgNCwgCisgICAgMjE4LCAxMzMsIDY5LCAxLCA0LCAxNDQsIDY5LCAxLCA0LCAyMzQsIDc1LCA2OSwgMSwgNCwgMjMzLCA5NywgNjksIDEsIDQsIAorICAgIDIzNCwgMTM5LCA2OSwgMSwgNCwgMjMzLCAyMDcsIDY5LCAxLCA0LCAyMjEsIDQxLCA2OSwgMSwgNCwgMjEzLCAyNTIsIDY5LCAKKyAgICAxLCA0LCAyMTMsIDg4LCA2OSwgMSwgNCwgMjEyLCAxNzUsIDY5LCAxLCA0LCAyMTMsIDE5MCwgNjksIDEsIDQsIDIxMywgMSwgCisgICAgMTA2LCAyOSwgMjI2LCAxMjEsIDEwNiwgMjksIDIxOSwgMTQzLCAxMDYsIDI5LCAyMDUsIDI1MywgMTA2LCAyOSwgMjEzLCAKKyAgICA3OCwgMTA2LCAyOSwgMjIxLCAxOTcsIDEwNiwgMjksIDIxNSwgMTkwLCAxMDYsIDI5LCAyMDksIDEyOSwgMTA2LCAyOSwgCisgICAgMjI4LCAxNzQsIDEwNiwgMjksIDI0NiwgMTY4LCAxMDYsIDI5LCAyNDYsIDIzMiwgMTA2LCAyOSwgMjI2LCAxODMsIDEwNiwgCisgICAgMjksIDIwNiwgODAsIDEwNiwgMjksIDIxNSwgMjI3LCAxMDYsIDI5LCAyMzQsIDY2LCAxMDYsIDI5LCAyMjYsIDEyMiwgNjIsIAorICAgIDEwNiwgMjksIDIxOSwgMTQ0LCA2MiwgMTA2LCAyOSwgMjA1LCAyNTQsIDYyLCAxMDYsIDI5LCAyMTMsIDc5LCA2MiwgMTA2LCAKKyAgICAyOSwgMjIxLCAxOTgsIDYyLCAxMDYsIDI5LCAyMTUsIDE5MSwgNjIsIDEwNiwgMjksIDIwOSwgMTMwLCA2MiwgMTA2LCAyOSwgCisgICAgMjI4LCAxNzUsIDYyLCAxMDYsIDI5LCAyNDYsIDE2OSwgNjIsIDEwNiwgMjksIDI0NiwgMjMzLCA2MiwgMTA2LCAyOSwgMjI2LCAKKyAgICAxODQsIDYyLCAxMDYsIDI5LCAyMDYsIDgxLCA2MiwgMTA2LCAyOSwgMjE1LCAyMjgsIDYyLCAxMDYsIDI5LCAyMzQsIDY3LCAKKyAgICA2MiwgMTA2LCAyOSwgMjQ2LCAxNjksIDY2LCAxMDYsIDIyNiwgNTksIDE3MSwgMjE3LCAxMDEsIDEwNiwgMjI2LCA1OSwgCisgICAgMTcxLCAxNjMsIDIzMywgOTcsIDEwNiwgMTk4LCAxOTgsIDEwMiwgMTA2LCAxOTgsIDE5OCwgMTA1LCAxMDYsIDE5OCwgMTk4LCAKKyAgICAxNDcsIDEwNiwgMTk4LCAxOTgsIDE0OSwgMTA2LCAxOTgsIDE5OCwgMTY0LCAxMDYsIDE5OCwgMTk4LCAxODcsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIxMCwgMTM1LCAxMDYsIDE5OCwgMTk4LCAxOTIsIDEwNiwgMTk4LCAxOTgsIDIxOSwgMTEzLCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMDYsIDE2NiwgMTA2LCAxOTgsIDE5OCwgMjIxLCA4MSwgMTA2LCAxOTgsIDE5OCwgMjM3LCA3NywgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjAxLCA4MiwgMTA2LCAxOTgsIDE5OCwgMjAwLCAyNDMsIDEwNiwgMTk4LCAxOTgsIDIyMiwgMjAsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIzOSwgMTcsIDEwNiwgMTk4LCAxOTgsIDIwNywgMjI4LCAxMDYsIDE5OCwgMTk4LCAyMDgsIDc5LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMzQsIDE0OCwgMTA2LCAxOTgsIDE5OCwgMjA5LCAyNSwgMTA2LCAxOTgsIDE5OCwgMjIwLCAxMzUsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIwOCwgMjI5LCAxMDYsIDE5OCwgMTk4LCAyMzcsIDg4LCAxMDYsIDE5OCwgMTk4LCAyNDMsIDYxLCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMjUsIDE2NSwgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMjcsIDEwNiwgMTk4LCAxOTgsIDI0NywgMTY4LCAKKyAgICAxMDYsIDE5OCwgMTk4LCAyMDgsIDI5LCAxMDYsIDE5OCwgMTk4LCAyMDcsIDIxMCwgMTA2LCAxOTgsIDE5OCwgMjM4LCAxNTIsIAorICAgIDEwNiwgMTk4LCAxOTgsIDIxMywgMTE5LCAxMDYsIDE5OCwgMTk4LCAyNTEsIDEyMCwgMTA2LCAxOTgsIDE5OCwgMjM3LCAKKyAgICAxMTksIDEwNiwgMTk4LCAxOTgsIDIxMywgMTE3LCAxMDYsIDE5OCwgMTk4LCAyMTAsIDE3NCwgMTA2LCAxOTgsIDE5OCwgCisgICAgMjEzLCAxODksIDQ0LCAxOTgsIDE5OCwgMjE0LCA3OCwgNDQsIDE5OCwgMTk4LCAyMjYsIDE0NiwgNDQsIDE5OCwgMTk4LCAKKyAgICAyMTEsIDIyMSwgNDQsIDE5OCwgMTk4LCAyMjYsIDU1LCA0NCwgNDEsIDIwNiwgMTY3LCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIAorICAgIDQ0LCA0MSwgMjA0LCAxNjAsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMDYsIDY4LCAyMTcsIDc5LCA2MywgCisgICAgMjA4LCAxOTMsIDQ0LCA0MSwgMjM2LCAyMzYsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMzcsIDEwNSwgMjE3LCAKKyAgICA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIwOSwgOTMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMTAsIAorICAgIDEzMCwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIzOCwgMjIzLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDIxNiwgCisgICAgMTA2LCA1NCwgNDQsIDQxLCAyMDQsIDE2MCwgMTAyLCA0NCwgNDEsIDIwNCwgMTYwLCAxMDUsIDQ0LCA0MSwgMjA0LCAxNjAsIAorICAgIDE0NywgNDQsIDQxLCAyMDQsIDE2MCwgMTQ5LCA0NCwgNDEsIDIwNCwgMTYwLCAxNjQsIDQ0LCA0MSwgMjA0LCAxNjAsIDE4NywgCisgICAgNDQsIDQxLCAyMDQsIDE2MCwgMjEwLCAxMzUsIDQ0LCA0MSwgMjA0LCAxNjAsIDE5MiwgNDQsIDQxLCAyMDQsIDE2MCwgMjE5LCAKKyAgICAxMTMsIDQ0LCA0MSwgMjA2LCA2NywgNDQsIDQxLCAyMDYsIDY4LCAxMDIsIDQ0LCA0MSwgMjA2LCA2OCwgMTA1LCA0NCwgNDEsIAorICAgIDIwNiwgNjgsIDE0NywgNDQsIDQxLCAyMDYsIDY4LCAxNDksIDQ0LCA0MSwgMjA2LCA2OCwgMTY0LCA0NCwgMjksIDIyNiwgCisgICAgMTIxLCA0NCwgMjksIDIxOSwgMTQzLCA0NCwgMjksIDIwNSwgMjUzLCA0NCwgMjksIDIxMywgNzgsIDQ0LCAyOSwgMjIxLCAKKyAgICAxOTcsIDQ0LCAyOSwgMjE1LCAxOTAsIDQ0LCAyOSwgMjA5LCAxMjksIDQ0LCAyOSwgMjI4LCAxNzQsIDQ0LCAyOSwgMjQ2LCAKKyAgICAxNjgsIDQ0LCAyOSwgMjQ2LCAyMzIsIDQ0LCAyOSwgMjI2LCAxODMsIDQ0LCAyOSwgMjA2LCA4MCwgNDQsIDI5LCAyMTUsIAorICAgIDIyNywgNDQsIDI5LCAyMzQsIDY2LCA0NCwgMjksIDIyNiwgMTIyLCA2MiwgNDQsIDI5LCAyMTksIDE0NCwgNjIsIDQ0LCAyOSwgCisgICAgMjA1LCAyNTQsIDYyLCA0NCwgMjksIDIxMywgNzksIDYyLCA0NCwgMjksIDIyMSwgMTk4LCA2MiwgNDQsIDI5LCAyMTUsIAorICAgIDE5MSwgNjIsIDQ0LCAyOSwgMjA5LCAxMzAsIDYyLCA0NCwgMjksIDIyOCwgMTc1LCA2MiwgNDQsIDI5LCAyNDYsIDE2OSwgCisgICAgNjIsIDQ0LCAyOSwgMjQ2LCAyMzMsIDYyLCA0NCwgMjksIDIyNiwgMTg0LCA2MiwgNDQsIDI5LCAyMDYsIDgxLCA2MiwgNDQsIAorICAgIDI5LCAyMTUsIDIyOCwgNjIsIDQ0LCAyOSwgMjM0LCA2NywgNjIsIDQ0LCAyMjYsIDU5LCAxNzEsIDI0NywgMjcsIDQ0LCAKKyAgICAyMjYsIDU5LCAxNzEsIDIyNywgMTQzLCA0NCwgMjksIDIyOCwgMTc1LCA2NiwgMjI2LCA1OSwgMjA4LCAxMTIsIDk5LCA0NCwgCisgICAgMTk4LCAxOTgsIDEwMiwgNDQsIDE5OCwgMTk4LCAxMDUsIDQ0LCAxOTgsIDE5OCwgMTQ3LCA0NCwgMTk4LCAxOTgsIDE0OSwgCisgICAgNDQsIDE5OCwgMTk4LCAxNjQsIDQ0LCAxOTgsIDE5OCwgMTg3LCA0NCwgMTk4LCAxOTgsIDIxMCwgMTM1LCA0NCwgMTk4LCAKKyAgICAxOTgsIDE5MiwgNDQsIDE5OCwgMTk4LCAyMTksIDExMywgNDQsIDE5OCwgMTk4LCAyMDYsIDE2NiwgNDQsIDE5OCwgMTk4LCAKKyAgICAyMjEsIDgxLCA0NCwgMTk4LCAxOTgsIDIzNywgNzcsIDQ0LCAxOTgsIDE5OCwgMjAxLCA4MiwgNDQsIDE5OCwgMTk4LCAyMDAsIAorICAgIDI0MywgNDQsIDE5OCwgMTk4LCAyMjIsIDIwLCA0NCwgMTk4LCAxOTgsIDIzOSwgMTcsIDQ0LCAxOTgsIDE5OCwgMjA3LCAKKyAgICAyMjgsIDQ0LCAxOTgsIDE5OCwgMjA4LCA3OSwgNDQsIDE5OCwgMTk4LCAyMzQsIDE0OCwgNDQsIDE5OCwgMTk4LCAyMDksIAorICAgIDI1LCA0NCwgMTk4LCAxOTgsIDIyMCwgMTM1LCA0NCwgMTk4LCAxOTgsIDIwOCwgMjI5LCA0NCwgMTk4LCAxOTgsIDIzNywgCisgICAgODgsIDQ0LCAxOTgsIDE5OCwgMjQzLCA2MSwgNDQsIDE5OCwgMTk4LCAyMjUsIDE2NSwgNDQsIDE5OCwgMTk4LCAyMTEsIAorICAgIDE5NCwgNDQsIDE5OCwgMTk4LCAyMjIsIDE4NCwgNDQsIDE5OCwgMTk4LCAyMzcsIDEyOSwgNDQsIDE5OCwgMTk4LCAyMDcsIAorICAgIDI0MCwgNDQsIDE5OCwgMTk4LCAyMzgsIDQ3LCA0NCwgMTk4LCAxOTgsIDIxNSwgMTAsIDQ0LCAxOTgsIDE5OCwgMjUwLCAKKyAgICAxNDMsIDQ0LCAxOTgsIDE5OCwgMjI4LCAxMSwgNDQsIDE5OCwgMTk4LCAyMTMsIDExNywgNDQsIDE5OCwgMTk4LCAyNDMsIAorICAgIDIwLCA0NCwgMTk4LCAxOTgsIDI0MywgMTAsIDQ0LCAxOTgsIDE5OCwgMjM0LCA1OSwgNDQsIDE5OCwgMTk4LCAyNDcsIDU1LCAKKyAgICA0NCwgMTk4LCAxOTgsIDIyNCwgNTksIDQ0LCAxOTgsIDE5OCwgMjI1LCAyOCwgNDQsIDE5OCwgMTk4LCAyMTMsIDQ2LCA0NCwgCisgICAgMTk4LCAxOTgsIDIyMiwgNjcsIDQ0LCAxOTgsIDE5OCwgMjEzLCAxNDQsIDQ0LCAxOTgsIDE5OCwgMjA4LCAyOSwgNDQsIAorICAgIDE5OCwgMTk4LCAyMDcsIDIxMCwgNDQsIDE5OCwgMTk4LCAyMzgsIDE1MiwgNDQsIDE5OCwgMTk4LCAyMTMsIDExOSwgNDQsIAorICAgIDE5OCwgMTk4LCAyNTEsIDEyMCwgNDQsIDE5OCwgMTk4LCAyMTksIDEyOSwgNDQsIDQxLCAyMDYsIDY4LCAxODcsIDQ0LCA0MSwgCisgICAgMjA2LCA2OCwgMjEwLCAxMzUsIDQ0LCA0MSwgMjA2LCA2OCwgMTkyLCA0NCwgNDEsIDIwNiwgNjgsIDIxOSwgMTEzLCA0NCwgCisgICAgNDEsIDIzNiwgMjM1LCA0NCwgNDEsIDIzNiwgMjM2LCAxMDIsIDQ0LCA0MSwgMjM2LCAyMzYsIDEwNSwgNDQsIDQxLCAyMzYsIAorICAgIDIzNiwgMTQ3LCA0NCwgNDEsIDIzNiwgMjM2LCAxNDksIDQ0LCA0MSwgMjM2LCAyMzYsIDE2NCwgNDQsIDQxLCAyMzYsIDIzNiwgCisgICAgMTg3LCA0NCwgNDEsIDIzNiwgMjM2LCAyMTAsIDEzNSwgNDQsIDQxLCAyMzYsIDIzNiwgMTkyLCA0NCwgNDEsIDIzNiwgMjM2LCAKKyAgICAyMTksIDExMywgNDQsIDQxLCAyMzcsIDEwNCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjcsIDIzOCwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzcsIDE0MSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjIsIDE1MiwgMTQxLCAyMDYsIDE3OCwgCisgICAgMTYsIDM2LCAyNTEsIDMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjIyLCAxMTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjI3LCAxNDAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjI3LCAxNDEsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjUwLCAKKyAgICAxMzUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjEwLCAxNTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjE3LCAxMjcsIAorICAgIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjE4LCAyMDIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAxNzAsIDUyLCAKKyAgICAyMzQsIDg1LCA1MiwgMjM4LCAxMTEsIDUyLCAyMzgsIDU3LCAyMjQsIDE4MiwgMjI0LCAyMDksIDU0LCA0NCwgNjksIDYyLCAKKyAgICA0NCwgNjksIDcwLCA0NCwgNjksIDY2LCA0NCwgNjksIDcyLCA0NCwgNjksIDc0LCA0NCwgNjksIDE2MSwgNDQsIDY5LCAyMjYsIAorICAgIDE2MywgNDQsIDY5LCAyMjYsIDE1LCA0NCwgNjksIDIyNywgOCwgNDQsIDY5LCAyMjYsIDg4LCA0NCwgNjksIDIxMiwgNjQsIAorICAgIDQ0LCA2OSwgMjA5LCAxODIsIDQ0LCA2OSwgMjA4LCAyNCwgNDQsIDY5LCAyMTEsIDIwMiwgNDQsIDY5LCAyMDksIDI5LCA0NCwgCisgICAgNjksIDIwNywgMzYsIDQ0LCA2OSwgMjA2LCAxNSwgNDQsIDY5LCAyMDQsIDIxNSwgNDQsIDY5LCAyMDYsIDIwMSwgNDQsIDY5LCAKKyAgICAxMzgsIDQ0LCA2OSwgMTg4LCA0NCwgNjksIDIxOSwgMTUwLCA0NCwgNjksIDIxOCwgMTMzLCA0NCwgNjksIDIyMCwgMzQsIAorICAgIDQ0LCA2OSwgMjE4LCAyNDEsIDQ0LCA2OSwgMTQ0LCA0NCwgNjksIDIzNCwgNzUsIDQ0LCA2OSwgMjMzLCA5NywgNDQsIDY5LCAKKyAgICAyMzQsIDEzOSwgNDQsIDY5LCAyMzMsIDIwNywgNDQsIDY5LCAxNzgsIDQ0LCA2OSwgMjIxLCAyMTEsIDQ0LCA2OSwgMjIxLCAKKyAgICA0MSwgNDQsIDY5LCAyMjIsIDc2LCA0NCwgNjksIDIyMSwgMTM2LCA0NCwgNjksIDE4MywgNDQsIDY5LCAxOTksIDIxMSwgNDQsIAorICAgIDY5LCAxOTksIDI0NSwgNDQsIDY5LCAyMTMsIDI1MiwgNDQsIDY5LCAyMTMsIDg4LCA0NCwgNjksIDIxMiwgMTc1LCA0NCwgCisgICAgNjksIDIxMywgMTkwLCA0NCwgNjksIDIxMywgMSwgNDQsIDY5LCAyMDEsIDExNCwgNDQsIDY5LCAyMDEsIDMxLCA0NCwgNjksIAorICAgIDIwMSwgNjQsIDQ0LCA2OSwgMjAxLCAwLCA1MiwgMjUxLCAyNywgNTIsIDI1MCwgMTkwLCA1MiwgMjUxLCA1NCwgNTIsIDI1MiwgCisgICAgOTYsIDUyLCAyMjgsIDg1LCA1MiwgMjI4LCA1MywgNTIsIDIwMywgMjMxLCA1MiwgMjM4LCA4NCwgNTIsIDIzOCwgMjUyLCAKKyAgICA1MiwgMjE3LCA2NiwgNTIsIDIxNywgNTksIDUyLCAyMjcsIDgwLCA1MiwgMjI3LCA0NSwgNTIsIDIyNywgNDIsIDUyLCAyMzYsIAorICAgIDQ1LCA1MiwgMjM2LCA1NCwgNTIsIDIzNSwgMTUwLCA1MiwgMjM1LCAxNDYsIDUyLCAyMjUsIDE5NCwgNTIsIDIzNSwgMTM4LCAKKyAgICA1MiwgMjI2LCAxMzgsIDUyLCAyMjYsIDEzNywgNTIsIDIyNiwgMTM2LCA1MiwgMjI2LCAxMzUsIDUyLCAyMzUsIDIwLCA1MiwgCisgICAgMjM1LCAxOSwgNTIsIDIyNSwgMjQyLCA1MiwgMjI1LCAyNDQsIDUyLCAyMjcsIDEsIDUyLCAyMjYsIDU3LCA1MiwgMjI2LCAKKyAgICA2NSwgNTIsIDIxMiwgNDUsIDUyLCAyMTIsIDYsIDUyLCAyMDksIDExMCwgNTIsIDIxMCwgMTU4LCA1MiwgMjEwLCAxNTcsIAorICAgIDUyLCAyNDIsIDU0LCA1MiwgMjQxLCAxMTMsIDUyLCAyNDAsIDE4MywgNTIsIDIwNSwgMTc2LCA1MiwgMjIwLCAxMzAsIDUyLCAKKyAgICAyMTgsIDIwMywgNTIsIDIzNCwgMjE4LCA1MiwgMjE2LCAyMDUsIDUyLCAyMTYsIDIwNCwgNTIsIDI0OSwgMTMzLCA1MiwgCisgICAgMjE1LCAyMDEsIDUyLCAyMTUsIDE2NCwgNTIsIDIxNSwgMTY1LCA1MiwgMjQ4LCAxNTgsIDUyLCAyMzMsIDk1LCA1MiwgMjMzLCAKKyAgICA5MCwgNTIsIDI0NywgMjUwLCA1MiwgMjMzLCA3NCwgNTIsIDIzNCwgMTExLCA1MiwgMjE2LCAxLCA1MiwgMjE2LCA0MiwgNTIsIAorICAgIDIzNCwgOTQsIDUyLCAyMTYsIDM4LCA1MiwgMjE2LCA1NiwgNTIsIDI0OCwgMjQ3LCA1MiwgMjE1LCA5NSwgNTIsIDI0OCwgCisgICAgOTgsIDUyLCAyMzMsIDE5MSwgNTIsIDIxNSwgODIsIDUyLCAyMzMsIDE4MiwgNTIsIDIzMywgMTg0LCA1MiwgMjIyLCAxOTYsIAorICAgIDUyLCAyMjIsIDE5MiwgNTIsIDIyMiwgMjAxLCA1MiwgMjIyLCAxMzksIDUyLCAyMjIsIDE2OCwgNTIsIDIyMSwgMTc2LCA1MiwgCisgICAgMjIxLCAxNTEsIDUyLCAyMjEsIDE1MCwgNTIsIDIyMiwgNTYsIDUyLCAyMjIsIDUzLCA1MiwgMjIyLCA1NywgNTIsIDIwMCwgCisgICAgMTA4LCA1MiwgMjAwLCAxMDYsIDUyLCAxOTksIDIwMCwgNTIsIDIxMywgMTcsIDUyLCAyMTMsIDIxLCA1MiwgMjEyLCAxNDgsIAorICAgIDUyLCAyMTIsIDE0MiwgNTIsIDIxMywgMTQxLCA1MiwgMjEzLCAxMzgsIDUyLCAyMDEsIDgwLCAxNDEsIDIwNiwgMTc4LCAxNiwgCisgICAgMzYsIDIzMywgMTE0LCAxOTksIDgxLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxMDIsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDEwNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTQ3LCAxNDEsIAorICAgIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxNDksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE2NCwgCisgICAgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTg3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAKKyAgICAyMTAsIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTkyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMTksIDExMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA2LCAxNjYsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzOCwgMTk5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIAorICAgIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA2LCA2OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjM2LCAyMjMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzNywgMTA4LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDksIDEwMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjEwLCAKKyAgICAxMzIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzOCwgMjI5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMTksIDExMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTksIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgMTUzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIAorICAgIDE0OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIwNCwgMTU1LCA1MiwgMjMzLCAxMDUsIDUyLCAyNDIsIDU4LCA1MiwgMjUwLCAxMzksIDUyLCAxNDgsIDUyLCAKKyAgICAyMTYsIDI0OSwgNTIsIDIxNiwgNzgsIDUyLCAyNDAsIDIxMywgNTIsIDI0MCwgMjE0LCAyMDgsIDE5MiwgNTIsIDI0MCwgCisgICAgMjE0LCAyNDIsIDIwOSwgNTIsIDIyOCwgOCwgNTIsIDIzOCwgMTE0LCAyMjAsIDEzNiwgMjM0LCAxMTIsIDUyLCAyMzgsIAorICAgIDExNCwgMjIwLCAxMzYsIDIwNywgMTA2LCA1MiwgMjM4LCAxMTQsIDIyMCwgMTM2LCAyMDcsIDMsIDUyLCAyMzgsIDExNCwgCisgICAgMjIwLCAxMzYsIDIyMiwgNTIsIDUyLCAyNDMsIDEyLCA1MiwgMjE2LCAyMTEsIDI1MSwgODcsIDUyLCAxODgsIDUyLCAyMjEsIAorICAgIDQyLCA2MiwgNTIsIDE3OCwgNTIsIDE2MSwgNTIsIDIyNywgMTEsIDUyLCAyMjIsIDExNSwgNTIsIDIzNiwgMzMsIDUyLCAKKyAgICAyNDcsIDE3NCwgNTIsIDIyNywgMTAsIDUyLCAyMTUsIDI0OCwgNTIsIDIyMCwgMSwgNTIsIDIyMSwgNDIsIDIzOCwgNSwgNTIsIAorICAgIDIyMSwgNDIsIDIzNiwgMTU2LCA1MiwgMjIxLCAyNTIsIDUyLCAyMjYsIDIwOSwgNTIsIDIzMywgMjgsIDUyLCAyMjYsIDE2NSwgCisgICAgNTIsIDIyMSwgMjEzLCA1MiwgMjM1LCAxNjMsIDUyLCAyMDYsIDE3LCA1MiwgMjIxLCA0MiwgMTU2LCA1MiwgMjIxLCAxNDQsIAorICAgIDUyLCAyNDAsIDIyMywgNTIsIDIyNiwgMTAzLCA1MiwgMjM3LCAxNSwgNTIsIDIxOSwgMjMsIDUyLCAyMjEsIDQyLCAyMjMsIAorICAgIDI0MywgNTIsIDIyMSwgMTQxLCA1MiwgMjQ2LCA5MiwgNTIsIDIyNiwgOTcsIDUyLCAyMjEsIDE0MiwgMjA4LCAxOTIsIDUyLCAKKyAgICAyNDYsIDkzLCAyMDgsIDE5MiwgNTIsIDIyMywgMjQ0LCAyMDgsIDE5MiwgNTIsIDIyNiwgOTgsIDIwOCwgMTkyLCA1MiwgCisgICAgMjIxLCAxNDIsIDI0MiwgMjA5LCA1MiwgMjQ2LCA5MywgMjQyLCAyMDksIDUyLCAyMjMsIDI0NCwgMjQyLCAyMDksIDUyLCAKKyAgICAyMjYsIDk4LCAyNDIsIDIwOSwgNTIsIDIyMywgMjQ0LCAxMTksIDIxMiwgMTIyLCA1MiwgMjIzLCAyNDQsIDExOSwgMjEyLCAKKyAgICAxMjMsIDIwOCwgMTkyLCA1MiwgMTcyLCA1MiwgMjI2LCA1MCwgNTIsIDIyMSwgNDUsIDUyLCAyMzUsIDkxLCA1MiwgMjEzLCAKKyAgICAyMzksIDUyLCAyMTMsIDI0MCwgMTE5LCAyMTIsIDEyMiwgNTIsIDIxMywgMjQwLCAxMTksIDIxMiwgMTIzLCAyMDgsIDE5MiwgCisgICAgNTIsIDIxNCwgMjM3LCA1MiwgMjE4LCAxNzEsIDUyLCAyMjEsIDQyLCAyMTIsIDEyMiwgNTIsIDIyMSwgNDMsIDUyLCAyMTQsIAorICAgIDE4NywgNTIsIDIxOCwgNzEsIDUyLCAyMjEsIDQyLCAyMDMsIDE2OCwgNTIsIDIyMCwgMjM4LCA1MiwgMjI1LCAyMzIsIDUyLCAKKyAgICAyMjAsIDIzOSwgMjIyLCA1NiwgNTIsIDIxNCwgMTg2LCA1MiwgMjE4LCA3MCwgNTIsIDIyMSwgNDIsIDIwMSwgMTQ3LCA1MiwgCisgICAgMjIwLCAyMzIsIDUyLCAyMjUsIDIzMCwgNTIsIDIyMCwgMjMzLCAyMjIsIDU2LCA1MiwgMjI3LCAxMTksIDIxNywgMTA2LCAKKyAgICA1MiwgMjIzLCAyNDQsIDIxNywgMTA2LCA1MiwgMjUxLCAxMDEsIDUyLCAyNDgsIDczLCA1MiwgMjQ3LCAxMDAsIDUyLCAyNDcsIAorICAgIDc3LCA1MiwgMjQ3LCAyMjQsIDExOSwgMjI2LCAyMDksIDUyLCAyNDYsIDkxLCA1MiwgMjQxLCAyMjksIDUyLCAyMzUsIDQsIAorICAgIDUyLCAxNDQsIDUyLCAyMzMsIDEwNiwgNTIsIDIyOCwgMTE3LCA1MiwgMjI2LCAxMTAsIDUyLCAyMjYsIDk4LCAyNDcsIDE0MywgCisgICAgNTIsIDIyNiwgMTcsIDUyLCAyMjQsIDExMywgNTIsIDIyNCwgMTEyLCA1MiwgMjI0LCA5OSwgNTIsIDIyNCwgMywgNTIsIAorICAgIDIyMiwgMTE2LCAyMDksIDUzLCA1MiwgMjIxLCAxNzUsIDUyLCAyMjEsIDEwOCwgNTIsIDIxNSwgMjQ2LCA1MiwgMjE1LCAKKyAgICAxMDksIDUyLCAyMTUsIDQ2LCA1MiwgMjE1LCA0NCwgNTIsIDIwOCwgMTgzLCA1MiwgMjA3LCAxOTEsIDUyLCAyMDEsIDY2LCAKKyAgICA1MiwgMjAzLCAxNjksIDExOSwgMjIzLCAyNDMsIDUyLCAzNSwgMTE5LCAyMjMsIDI0MywgMTQxLCAyMDYsIDE3OCwgMTYsIAorICAgIDM2LCAyNDEsIDIzMywgMTAyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxMDUsIDE0MSwgMjA2LCAxNzgsIAorICAgIDE2LCAzNiwgMjQxLCAyMzMsIDE0NywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTQ5LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxNjQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDE4NywgMTQxLCAKKyAgICAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjEwLCAxMzUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIAorICAgIDE5MiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjE5LCAxMTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNiwgMTY2LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMzgsIDE5OSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNjQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNiwgCisgICAgNjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzNiwgMjIzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMzcsIDEwOCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA5LCAxMDAsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxMCwgMTMyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMzgsIAorICAgIDIyOSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjE5LCAxMTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNCwgMTU5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1MywgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNDgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgCisgICAgMTUwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1NSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA0LCAxNTYsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUxLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1MiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAKKyAgICAxNTgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTU0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDYsIDY3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDYsIDY2LCA1MiwgMjM2LCA3MSwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNDIsIDI0NywgMjM0LCAxMjMsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjEzLCAKKyAgICAxODMsIDIzOSwgMTcsIDIzNCwgODgsIDM2LCAyNDEsIDQ2LCAyNTAsIDE1NiwgMjA2LCAxMDcsIDI0OCwgMjQyLCAyMzQsIAorICAgIDg4LCAzNiwgMTk5LCAyMjQsIDIzNywgNywgMjM0LCA4OCwgMzYsIDIwMSwgMTA2LCAyMzQsIDg4LCAzNiwgMjQzLCA2NCwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTAsIDIxMywgMjM0LCA4OCwgMzYsIDIzMywgMTk4LCAyMDUsIDE4MiwgMjM0LCAKKyAgICA4OCwgMzYsIDQsIDIwNiwgMjQ1LCAyMzQsIDg4LCAzNiwgMjA1LCAxMTAsIDIzNCwgODgsIDM2LCAyMTYsIDcxLCAyMzQsIAorICAgIDg4LCAzNiwgMjA4LCAxMTEsIDIzNCwgODgsIDM2LCAyMzcsIDEzMSwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIxNSwgNjgsIAorICAgIDIzNCwgODgsIDM2LCAyMjEsIDEyOCwgMjM0LCA4OCwgMzYsIDIzOCwgMTUxLCAyMzQsIDg4LCAzNiwgMjM3LCA4LCAyMzQsIAorICAgIDg4LCAzNiwgMjAwLCAyMzYsIDIxNywgNzksIDIwNiwgMTA3LCAyNDEsIDE3MSwgMjM0LCA4OCwgMzYsIDI1MSwgNywgMjM0LCAKKyAgICA4OCwgMzYsIDI0MywgNDMsIDIzNCwgODgsIDM2LCAyNDgsIDE1MCwgMjA2LCAzNywgMjM0LCA4OCwgMzYsIDIzNSwgODksIAorICAgIDIzNCwgODgsIDM2LCAyMDgsIDIwOCwgMjUxLCAyNiwgMjM0LCA4OCwgMzYsIDIxMywgMTA5LCAyMzQsIDg4LCAzNiwgMjI4LCAKKyAgICA3OSwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIwNiwgMjQ1LCAyMzQsIDg4LCAzNiwgMjIxLCA1OSwgMjQzLCAxNCwgMjM0LCAKKyAgICA4OCwgMzYsIDIzNSwgNjksIDIxNSwgMjIsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjUyLCAwLCAyMDEsIDgyLCAyMzQsIAorICAgIDg4LCAzNiwgMjA2LCAxMDcsIDI0NiwgMTE4LCAyMzcsIDc3LCAyMzQsIDg4LCAzNiwgMjI4LCA5MywgMjM0LCA4OCwgMzYsIAorICAgIDIzOSwgMTE0LCAyMzQsIDg4LCAzNiwgMjEzLCAxMTIsIDIzNCwgODgsIDM2LCAyMzUsIDY5LCAyMTUsIDUxLCAyMzQsIDg4LCAKKyAgICAzNiwgMjE0LCAyNTQsIDIzNCwgODgsIDM2LCAyNDEsIDI0OSwgNzYsIDIwNiwgMTA3LCAyMjQsIDE5NiwgMjM0LCA4OCwgMzYsIAorICAgIDIwNiwgMTA3LCAyMzcsIDE2OSwgMjM0LCA4OCwgMzYsIDIxNywgMzksIDIzNCwgODgsIDM2LCAyMTcsIDEzNCwgMjM0LCA4OCwgCisgICAgMzYsIDI0MSwgMTQxLCAyMzQsIDg4LCAzNiwgMjQxLCAxNjMsIDIzNCwgODgsIDM2LCAyMjgsIDEwOCwgMjM0LCA4OCwgMzYsIAorICAgIDI0OCwgNjAsIDIzNCwgODgsIDM2LCAyNDYsIDcyLCAyMDUsIDE4NiwgMjIyLCA1OSwgMjM0LCA4OCwgMzYsIDIzNiwgNDAsIAorICAgIDIwNSwgMTgyLCAyMzQsIDg4LCAzNiwgMjE0LCAxOTYsIDIwMywgMjE3LCAyMzQsIDg4LCAzNiwgMjE3LCAzOCwgMjM0LCA4OCwgCisgICAgMzYsIDIwNiwgMTA3LCAyMDEsIDUyLCAyMzQsIDg4LCAzNiwgMjEzLCAxMDAsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjQ3LCAKKyAgICAxMDYsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjUwLCAyMDksIDIwNiwgMzEsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgCisgICAgMjI3LCAyLCAyMDgsIDgzLCAyMjEsIDYzLCAyMzQsIDg4LCAzNiwgMjQxLCAxMDgsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgCisgICAgMjIyLCAxNDIsIDIyMiwgMTk3LCAyMzQsIDg4LCAzNiwgMjUyLCAxLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIwMSwgOTksIAorICAgIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjM1LCAyNTMsIDIwMSwgMTYsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjI3LCAKKyAgICAxNDksIDIyNSwgOTYsIDIzNCwgODgsIDM2LCAyNDAsIDI1MiwgMjM0LCA4OCwgMzYsIDIyNCwgMTgzLCAyMzQsIDg4LCAzNiwgCisgICAgMjI4LCA4MiwgMjA1LCAzNiwgMjM0LCA4OCwgMzYsIDQsIDIxNSwgMjIsIDIzNCwgODgsIDM2LCAyNTEsIDE5NCwgMjQ2LCAKKyAgICA2MywgMjM0LCA4OCwgMzYsIDI0OCwgMjQ1LCAyNDYsIDYzLCAxMSwgNSwgMjI4LCAxMiwgMTEsIDUsIDIyOCwgNCwgMTEsIDUsIAorICAgIDcwLCAxMSwgNSwgMjI4LCAzOCwgMTEsIDUsIDIyOCwgMTc2LCAxMSwgNSwgMjI4LCAxNTksIDExLCA1LCAyMjgsIDE3OCwgCisgICAgMTEsIDUsIDIyOCwgMTc3LCAxMSwgNSwgMjUwLCAxNTUsIDExLCA1LCAyNTAsIDExNCwgMTEsIDUsIDYyLCAxMSwgNSwgMjUxLCAKKyAgICAyOCwgMTEsIDUsIDIwMywgMjI5LCAxMSwgNSwgMjAzLCAyMzIsIDExLCA1LCAyMDMsIDIzMCwgMTEsIDUsIDIxNywgMTEsIAorICAgIDExLCA1LCAyMTYsIDIzNSwgMTEsIDUsIDc0LCAxMSwgNSwgMjE3LCA1NCwgMTEsIDUsIDIzOCwgNDgsIDExLCA1LCA3MiwgCisgICAgMTEsIDUsIDIwMCwgMjE2LCAxMSwgNSwgMjQ4LCAxNTIsIDExLCA1LCAyNDgsIDE0OCwgMTEsIDUsIDI0OCwgMTg4LCAxMSwgCisgICAgNSwgMjQ4LCAxNjMsIDExLCA1LCAyNDgsIDE3NywgMTEsIDUsIDI0OCwgMTc2LCAxMSwgNSwgMjQ4LCAxNzksIDExLCA1LCAKKyAgICAyNDgsIDE3OCwgMTEsIDUsIDI0OSwgNTUsIDExLCA1LCAyNDksIDQ3LCAxMSwgNSwgMjQ5LCAxMzYsIDExLCA1LCAyNDksIAorICAgIDc4LCAxMSwgNSwgMjQ4LCA2LCAxMSwgNSwgMjQ4LCAxMCwgMTEsIDUsIDI0OCwgNywgMTEsIDUsIDI0OCwgOTcsIDExLCA1LCAKKyAgICAyNDgsIDc4LCAxMSwgNSwgMjQ4LCAxMjQsIDExLCA1LCAyNDgsIDEwMywgMTEsIDUsIDI0OCwgMjAzLCAxMSwgNSwgMjQ5LCAKKyAgICA4LCAxMSwgNSwgMjQ4LCAyMTUsIDExLCA1LCAyNDcsIDI0NiwgMTEsIDUsIDI0NywgMjQxLCAxMSwgNSwgMjQ4LCAzNiwgMTEsIAorICAgIDUsIDI0OCwgNSwgMTEsIDUsIDI0NywgMjU0LCAxMSwgNSwgMjQ4LCAzLCAxMSwgNSwgMjQ3LCAyMjksIDExLCA1LCAyNDcsIAorICAgIDIyNywgMTEsIDUsIDI0NywgMjM0LCAxMSwgNSwgMjQ3LCAyMzIsIDExLCA1LCAyNDcsIDIzMCwgMTEsIDUsIDI0NywgMjMxLCAKKyAgICAxMSwgNSwgMjE1LCAxNDIsIDExLCA1LCAyMTUsIDEzOCwgMTEsIDUsIDIxNSwgMjA0LCAxMSwgNSwgMjE1LCAxNTQsIDExLCAKKyAgICA1LCAyMTUsIDE3MCwgMTEsIDUsIDIxNSwgMTk3LCAxMSwgNSwgMjE1LCAxOTMsIDExLCA1LCAyMTYsIDk0LCAxMSwgNSwgCisgICAgMjE2LCA4MywgMTEsIDUsIDE3MiwgMTEsIDUsIDIxNiwgMTM1LCAxMSwgNSwgMjE0LCAyMDYsIDExLCA1LCAyMTQsIDIwOCwgCisgICAgMTEsIDUsIDIxNCwgMjA3LCAxMSwgNSwgMjE1LCA2MSwgMTEsIDUsIDIxNSwgNDksIDExLCA1LCAyMTUsIDEwNiwgMTEsIDUsIAorICAgIDIxNSwgNzcsIDExLCA1LCAyMTQsIDE5MiwgMTEsIDUsIDIxNCwgMTg4LCAxMSwgNSwgMjE0LCAyMjQsIDExLCA1LCAyMTQsIAorICAgIDIwNSwgMTEsIDUsIDIxNCwgMTk3LCAxMSwgNSwgMjE0LCAyMDMsIDExLCA1LCAyMTQsIDE3MSwgMTEsIDUsIDIxNCwgMTcwLCAKKyAgICAxMSwgNSwgMjE0LCAxNzUsIDExLCA1LCAyMTQsIDE3NCwgMTEsIDUsIDIxNCwgMTcyLCAxMSwgNSwgMjE0LCAxNzMsIDExLCAKKyAgICA1LCAyNDksIDI5LCAxMSwgNSwgMjQ5LCAyOCwgMTEsIDUsIDI0OSwgMzUsIDExLCA1LCAyNDksIDMwLCAxMSwgNSwgMjQ5LCAKKyAgICAzMiwgMTEsIDUsIDI0OSwgMzEsIDExLCA1LCAyNDksIDM0LCAxMSwgNSwgMjQ5LCAzMywgMTEsIDUsIDI0OSwgNDEsIDExLCAKKyAgICA1LCAyNDksIDQwLCAxMSwgNSwgMjQ5LCA0NCwgMTEsIDUsIDI0OSwgNDIsIDExLCA1LCAyNDksIDIwLCAxMSwgNSwgMjQ5LCAKKyAgICAyMiwgMTEsIDUsIDI0OSwgMjEsIDExLCA1LCAyNDksIDI1LCAxMSwgNSwgMjQ5LCAyNCwgMTEsIDUsIDI0OSwgMjcsIDExLCAKKyAgICA1LCAyNDksIDI2LCAxMSwgNSwgMjQ5LCAzNiwgMTEsIDUsIDI0OSwgMzksIDExLCA1LCAyNDksIDM3LCAxMSwgNSwgMjQ5LCAKKyAgICAxNiwgMTEsIDUsIDI0OSwgMTUsIDExLCA1LCAyNDksIDIzLCAxMSwgNSwgMjQ5LCAxOSwgMTEsIDUsIDI0OSwgMTcsIDExLCAKKyAgICA1LCAyNDksIDE4LCAxMSwgNSwgMjQ5LCAxMiwgMTEsIDUsIDI0OSwgMTEsIDExLCA1LCAyNDksIDE0LCAxMSwgNSwgMjQ5LCAKKyAgICAxMywgMTEsIDUsIDIyMCwgOTcsIDExLCA1LCAyMjAsIDk2LCAxMSwgNSwgMjIwLCAxMDIsIDExLCA1LCAyMjAsIDk4LCAxMSwgCisgICAgNSwgMjIwLCA5OSwgMTEsIDUsIDIyMCwgMTAxLCAxMSwgNSwgMjIwLCAxMDAsIDExLCA1LCAyMjAsIDEwNSwgMTEsIDUsIAorICAgIDIyMCwgMTA0LCAxMSwgNSwgMjIwLCAxMDcsIDExLCA1LCAyMjAsIDEwNiwgMTEsIDUsIDIyMCwgOTMsIDExLCA1LCAyMjAsIAorICAgIDkyLCAxMSwgNSwgMjIwLCA5NSwgMTEsIDUsIDIyMCwgOTQsIDExLCA1LCAyMjAsIDg2LCAxMSwgNSwgMjIwLCA4NSwgMTEsIAorICAgIDUsIDIyMCwgOTAsIDExLCA1LCAyMjAsIDg5LCAxMSwgNSwgMjIwLCA4NywgMTEsIDUsIDIyMCwgODgsIDExLCA1LCAyMjAsIAorICAgIDgwLCAxMSwgNSwgMjIwLCA3OSwgMTEsIDUsIDIyMCwgODQsIDExLCA1LCAyMjAsIDgzLCAxMSwgNSwgMjIwLCA4MSwgMTEsIAorICAgIDUsIDIyMCwgODIsIDExLCA1LCAyMzMsIDI1MSwgMTEsIDUsIDIzMywgMjUwLCAxMSwgNSwgMjM0LCAwLCAxMSwgNSwgMjMzLCAKKyAgICAyNTIsIDExLCA1LCAyMzMsIDI1MywgMTEsIDUsIDIzMywgMjU1LCAxMSwgNSwgMjMzLCAyNTQsIDExLCA1LCAyMzQsIDMsIAorICAgIDExLCA1LCAyMzQsIDIsIDExLCA1LCAyMzQsIDUsIDExLCA1LCAyMzQsIDQsIDExLCA1LCAyMzMsIDI0MiwgMTEsIDUsIDIzMywgCisgICAgMjQ0LCAxMSwgNSwgMjMzLCAyNDMsIDExLCA1LCAyMzMsIDI0NywgMTEsIDUsIDIzMywgMjQ2LCAxMSwgNSwgMjMzLCAyNDksIAorICAgIDExLCA1LCAyMzMsIDI0OCwgMTEsIDUsIDIzMywgMjM4LCAxMSwgNSwgMjMzLCAyMzcsIDExLCA1LCAyMzMsIDI0NSwgMTEsIAorICAgIDUsIDIzMywgMjQxLCAxMSwgNSwgMjMzLCAyMzksIDExLCA1LCAyMzMsIDI0MCwgMTEsIDUsIDIzMywgMjMyLCAxMSwgNSwgCisgICAgMjMzLCAyMzYsIDExLCA1LCAyMzMsIDIzNSwgMTEsIDUsIDIzMywgMjMzLCAxMSwgNSwgMjMzLCAyMzQsIDExLCA1LCAyMjEsIAorICAgIDE0NywgMTEsIDUsIDIyMSwgMTQ2LCAxMSwgNSwgMjIxLCAyMTEsIDExLCA1LCAyMjEsIDE1MywgMTEsIDUsIDIyMSwgMTgzLCAKKyAgICAxMSwgNSwgMjIxLCAyMDEsIDExLCA1LCAyMjEsIDE5OSwgMTEsIDUsIDIyMiwgMTI3LCAxMSwgNSwgMjIyLCAxMjIsIDExLCAKKyAgICA1LCAxNzgsIDExLCA1LCAyMjIsIDE2NCwgMTEsIDUsIDIyMSwgOCwgMTEsIDUsIDIyMSwgNywgMTEsIDUsIDIyMSwgMTEsIAorICAgIDExLCA1LCAyMjEsIDksIDExLCA1LCAyMjEsIDczLCAxMSwgNSwgMjIxLCA0NywgMTEsIDUsIDIyMSwgMTM2LCAxMSwgNSwgCisgICAgMjIxLCA3OSwgMTEsIDUsIDIyMiwgNywgMTEsIDUsIDIyMiwgNzYsIDExLCA1LCAyMjAsIDI0NCwgMTEsIDUsIDIyMCwgMjQwLCAKKyAgICAxMSwgNSwgMjIxLCA0MSwgMTEsIDUsIDIyMSwgNCwgMTEsIDUsIDIyMCwgMjUzLCAxMSwgNSwgMjIxLCAyLCAxMSwgNSwgCisgICAgMjIwLCAyMTcsIDExLCA1LCAyMjAsIDIxNiwgMTEsIDUsIDIyMCwgMjIyLCAxMSwgNSwgMjIwLCAyMTksIDExLCA1LCAyMzcsIAorICAgIDY0LCAxMSwgNSwgMjM3LCA1OCwgMTEsIDUsIDIzNywgMTEyLCAxMSwgNSwgMjM3LCA3OSwgMTEsIDUsIDIzNywgMTYwLCAxMSwgCisgICAgNSwgMjM3LCAxNTEsIDExLCA1LCAyMzcsIDE5NSwgMTEsIDUsIDIzNywgMTY1LCAxMSwgNSwgMjM2LCAyMjAsIDExLCA1LCAKKyAgICAyMzcsIDEzLCAxMSwgNSwgMjM2LCAyNTAsIDExLCA1LCAyMzYsIDE3MiwgMTEsIDUsIDIzNiwgMTcxLCAxMSwgNSwgMjM2LCAKKyAgICAxODksIDExLCA1LCAyMzYsIDE3NywgMTEsIDUsIDIzNiwgMTc1LCAxMSwgNSwgMjM2LCAxNzYsIDExLCA1LCAyMzYsIDE1OSwgCisgICAgMTEsIDUsIDIzNiwgMTU4LCAxMSwgNSwgMjM2LCAxNjIsIDExLCA1LCAyMzYsIDE2MCwgMTEsIDUsIDIwMiwgMjAwLCAxMSwgCisgICAgNSwgMjAyLCAxOTUsIDExLCA1LCAyMDIsIDIzNCwgMTEsIDUsIDIwMiwgMjA5LCAxMSwgNSwgMjAyLCAyMjMsIDExLCA1LCAKKyAgICAyMDIsIDIyMCwgMTEsIDUsIDIwMiwgMjI2LCAxMSwgNSwgMjAyLCAyMjUsIDExLCA1LCAyMDMsIDY3LCAxMSwgNSwgMjAzLCAKKyAgICA2MiwgMTEsIDUsIDIwMywgOTAsIDExLCA1LCAyMDMsIDc5LCAxMSwgNSwgMjAyLCAxNzUsIDExLCA1LCAyMDIsIDE3MSwgMTEsIAorICAgIDUsIDIwMiwgMTkzLCAxMSwgNSwgMjAyLCAxNzcsIDExLCA1LCAyMDIsIDIzNywgMTEsIDUsIDIwMywgNDgsIDExLCA1LCAKKyAgICAyMDEsIDE2MCwgMTEsIDUsIDIwMSwgMTU4LCAxMSwgNSwgMjAxLCAxNjYsIDExLCA1LCAyMDEsIDE2MywgMTEsIDUsIDIwMSwgCisgICAgMTYxLCAxMSwgNSwgMjAxLCAxNjIsIDExLCA1LCAyMDEsIDE1MSwgMTEsIDUsIDIwMSwgMTUwLCAxMSwgNSwgMjAxLCAxNTUsIAorICAgIDExLCA1LCAyMDEsIDE1NCwgMTEsIDUsIDIwMSwgMTUyLCAxMSwgNSwgMjAxLCAxNTMsIDExLCA1LCAyNDAsIDI0NSwgMTEsIAorICAgIDUsIDI0MCwgMjMyLCAxMSwgNSwgMjQxLCA3NiwgMTEsIDUsIDI0MSwgMTYsIDExLCA1LCAyNDEsIDUxLCAxMSwgNSwgMjQxLCAKKyAgICA1NiwgMTEsIDUsIDI0MSwgNTUsIDExLCA1LCAyNDEsIDI0MCwgMTEsIDUsIDI0MSwgMjM0LCAxMSwgNSwgMjQyLCA1OCwgMTEsIAorICAgIDUsIDI0MiwgNCwgMTEsIDUsIDIzOSwgMTE5LCAxMSwgNSwgMjM5LCAxMjAsIDExLCA1LCAyNDAsIDE4MiwgMTEsIDUsIDIzOSwgCisgICAgMTY0LCAxMSwgNSwgMjQwLCAyMTEsIDExLCA1LCAyNDAsIDE4NCwgMTEsIDUsIDI0MSwgMTA2LCAxMSwgNSwgMjQxLCAxNzUsIAorICAgIDExLCA1LCAyNDEsIDEyNywgMTEsIDUsIDIzOSwgMTEwLCAxMSwgNSwgMjM5LCAxMDgsIDExLCA1LCAyMzksIDEzNywgMTEsIAorICAgIDUsIDIzOSwgMTE4LCAxMSwgNSwgMjM5LCAxMTMsIDExLCA1LCAyMzksIDExNiwgMTEsIDUsIDIwNSwgMjEzLCAxMSwgNSwgCisgICAgMjA1LCAyMDUsIDExLCA1LCAyMDYsIDE1LCAxMSwgNSwgMjA1LCAyMjMsIDExLCA1LCAyMDYsIDUsIDExLCA1LCAyMDYsIDcsIAorICAgIDExLCA1LCAyMDYsIDYsIDExLCA1LCAyMDYsIDIyNiwgMTEsIDUsIDIwNiwgMjEyLCAxMSwgNSwgMjA3LCAzNiwgMTEsIDUsIAorICAgIDIwNiwgMjM2LCAxMSwgNSwgMjA0LCAxOTYsIDExLCA1LCAyMDQsIDE5NSwgMTEsIDUsIDIwNCwgMTk4LCAxMSwgNSwgMjA0LCAKKyAgICAxOTcsIDExLCA1LCAyMDUsIDE0NCwgMTEsIDUsIDIwNSwgMTM0LCAxMSwgNSwgMTM4LCAxMSwgNSwgMjA1LCAxNTcsIDExLCAKKyAgICA1LCAyMDYsIDEyOCwgMTEsIDUsIDIwNiwgMjAxLCAxMSwgNSwgMjA2LCAxNTMsIDExLCA1LCAyMDQsIDE3OSwgMTEsIDUsIAorICAgIDIwNCwgMTc0LCAxMSwgNSwgMjA0LCAyMTUsIDExLCA1LCAyMDQsIDE5NCwgMTEsIDUsIDIwNCwgMTgwLCAxMSwgNSwgMjA0LCAKKyAgICAxOTIsIDExLCA1LCAyNDEsIDE5MiwgMTEsIDUsIDI0MSwgMTkxLCAxMSwgNSwgMjQxLCAxOTcsIDExLCA1LCAyNDEsIDE5MywgCisgICAgMTEsIDUsIDI0MSwgMTk0LCAxMSwgNSwgMjQxLCAxOTYsIDExLCA1LCAyNDEsIDE5NSwgMTEsIDUsIDI0MSwgMjEzLCAxMSwgCisgICAgNSwgMjQxLCAyMTIsIDExLCA1LCAyNDEsIDIyMCwgMTEsIDUsIDI0MSwgMjE0LCAxMSwgNSwgMjQxLCAxODIsIDExLCA1LCAKKyAgICAyNDEsIDE4NCwgMTEsIDUsIDI0MSwgMTgzLCAxMSwgNSwgMjQxLCAxODcsIDExLCA1LCAyNDEsIDE4NiwgMTEsIDUsIDI0MSwgCisgICAgMTkwLCAxMSwgNSwgMjQxLCAxODgsIDExLCA1LCAyNDEsIDIwNSwgMTEsIDUsIDI0MSwgMjA4LCAxMSwgNSwgMjQxLCAyMDYsIAorICAgIDExLCA1LCAyNDEsIDE3OCwgMTEsIDUsIDI0MSwgMTc3LCAxMSwgNSwgMjQxLCAxODUsIDExLCA1LCAyNDEsIDE4MSwgMTEsIAorICAgIDUsIDI0MSwgMTc5LCAxMSwgNSwgMjQxLCAxODAsIDExLCA1LCAyMjAsIDUzLCAxMSwgNSwgMjIwLCA1MiwgMTEsIDUsIDIyMCwgCisgICAgNjAsIDExLCA1LCAyMjAsIDU1LCAxMSwgNSwgMjIwLCA1NiwgMTEsIDUsIDIyMCwgNTcsIDExLCA1LCAyMjAsIDY5LCAxMSwgCisgICAgNSwgMjIwLCA2OCwgMTEsIDUsIDIyMCwgNzUsIDExLCA1LCAyMjAsIDcwLCAxMSwgNSwgMjIwLCA0NSwgMTEsIDUsIDIyMCwgCisgICAgNDQsIDExLCA1LCAyMjAsIDUxLCAxMSwgNSwgMjIwLCA0NiwgMTEsIDUsIDIyMCwgNjEsIDExLCA1LCAyMjAsIDY3LCAxMSwgCisgICAgNSwgMjIwLCA2NSwgMTEsIDUsIDIyMCwgMzcsIDExLCA1LCAyMjAsIDM2LCAxMSwgNSwgMjIwLCA0MiwgMTEsIDUsIDIyMCwgCisgICAgNDAsIDExLCA1LCAyMjAsIDM4LCAxMSwgNSwgMjIwLCAzOSwgMTEsIDUsIDIzMywgMjE3LCAxMSwgNSwgMjMzLCAyMTYsIDExLCAKKyAgICA1LCAyMzMsIDIyMywgMTEsIDUsIDIzMywgMjE4LCAxMSwgNSwgMjMzLCAyMjAsIDExLCA1LCAyMzMsIDIxOSwgMTEsIDUsIAorICAgIDIzMywgMjIyLCAxMSwgNSwgMjMzLCAyMjEsIDExLCA1LCAyMzMsIDIyOSwgMTEsIDUsIDIzMywgMjI3LCAxMSwgNSwgMjMzLCAKKyAgICAyMzEsIDExLCA1LCAyMzMsIDIzMCwgMTEsIDUsIDIzMywgMjEwLCAxMSwgNSwgMjMzLCAyMTEsIDExLCA1LCAyMzMsIDIxNCwgCisgICAgMTEsIDUsIDIzMywgMjEzLCAxMSwgNSwgMjMzLCAyMTUsIDExLCA1LCAyMzMsIDIyNCwgMTEsIDUsIDIzMywgMjI2LCAxMSwgCisgICAgNSwgMjMzLCAyMjUsIDExLCA1LCAyMzMsIDIwOSwgMTEsIDUsIDIxOSwgMTAyLCAxMSwgNSwgMjE5LCAxMDAsIDExLCA1LCAKKyAgICAyMTksIDE1MCwgMTEsIDUsIDIxOSwgMTA1LCAxMSwgNSwgMjE5LCAxMzIsIDExLCA1LCAyMTksIDE0NiwgMTEsIDUsIDIxOSwgCisgICAgMTQ1LCAxMSwgNSwgMjIwLCAxMTEsIDExLCA1LCAxODgsIDExLCA1LCAyMjAsIDEyNywgMTEsIDUsIDIxOCwgODEsIDExLCA1LCAKKyAgICAyMTgsIDgzLCAxMSwgNSwgMjE4LCA4MiwgMTEsIDUsIDIxOCwgMjE0LCAxMSwgNSwgMjE4LCAxOTksIDExLCA1LCAyMTgsIAorICAgIDI0MSwgMTEsIDUsIDIxOCwgMjI1LCAxMSwgNSwgMjIwLCAzLCAxMSwgNSwgMjIwLCAzNCwgMTEsIDUsIDIyMCwgMTksIDExLCAKKyAgICA1LCAyMTgsIDc2LCAxMSwgNSwgMjE4LCA3MiwgMTEsIDUsIDIxOCwgMTMzLCAxMSwgNSwgMjE4LCA4MCwgMTEsIDUsIDIxOCwgCisgICAgNzgsIDExLCA1LCAyMTgsIDc5LCAxMSwgNSwgMjM0LCAyNiwgMTEsIDUsIDIzNCwgMjUsIDExLCA1LCAyMzQsIDMxLCAxMSwgCisgICAgNSwgMjM0LCAyNywgMTEsIDUsIDIzNCwgMjgsIDExLCA1LCAyMzQsIDMwLCAxMSwgNSwgMjM0LCAyOSwgMTEsIDUsIDIzNCwgCisgICAgMzcsIDExLCA1LCAyMzQsIDM1LCAxMSwgNSwgMjM0LCAzOSwgMTEsIDUsIDIzNCwgMzgsIDExLCA1LCAyMzQsIDE4LCAxMSwgCisgICAgNSwgMjM0LCAyMCwgMTEsIDUsIDIzNCwgMTksIDExLCA1LCAyMzQsIDIyLCAxMSwgNSwgMjM0LCAyNCwgMTEsIDUsIDIzNCwgCisgICAgMjMsIDExLCA1LCAyMzQsIDMyLCAxMSwgNSwgMjM0LCAzNCwgMTEsIDUsIDIzNCwgMzMsIDExLCA1LCAyMzQsIDE0LCAxMSwgCisgICAgNSwgMjM0LCAxMywgMTEsIDUsIDIzNCwgMjEsIDExLCA1LCAyMzQsIDE3LCAxMSwgNSwgMjM0LCAxNSwgMTEsIDUsIDIzNCwgCisgICAgMTYsIDExLCA1LCAyMzQsIDgsIDExLCA1LCAyMzQsIDcsIDExLCA1LCAyMzQsIDEyLCAxMSwgNSwgMjM0LCAxMSwgMTEsIDUsIAorICAgIDIzNCwgOSwgMTEsIDUsIDIzNCwgMTAsIDExLCA1LCAyMjQsIDE1MiwgMTEsIDUsIDIyNCwgMTQ0LCAxMSwgNSwgMjI0LCAKKyAgICAyMTAsIDExLCA1LCAyMjQsIDE2MiwgMTEsIDUsIDIyNCwgMjAxLCAxMSwgNSwgMjI0LCAyMDAsIDExLCA1LCAyMjQsIDIwNCwgCisgICAgMTEsIDUsIDIyNCwgMjAyLCAxMSwgNSwgMjI1LCA2MywgMTEsIDUsIDIyNSwgNTEsIDExLCA1LCAxOTQsIDExLCA1LCAyMjUsIAorICAgIDc0LCAxMSwgNSwgMjI0LCAyMCwgMTEsIDUsIDIyNCwgMTksIDExLCA1LCAyMjQsIDIyLCAxMSwgNSwgMjI0LCAyMSwgMTEsIAorICAgIDUsIDIyNCwgNjUsIDExLCA1LCAyMjQsIDUxLCAxMSwgNSwgMjI0LCAxMTAsIDExLCA1LCAyMjQsIDcxLCAxMSwgNSwgMjI0LCAKKyAgICAyMjcsIDExLCA1LCAyMjUsIDQwLCAxMSwgNSwgMjI0LCAyNDQsIDExLCA1LCAyMjQsIDE0LCAxMSwgNSwgMjI0LCAxMiwgMTEsIAorICAgIDUsIDIyNCwgNDIsIDExLCA1LCAyMjQsIDE4LCAxMSwgNSwgMjI0LCAxNiwgMTEsIDUsIDIyNCwgMTcsIDExLCA1LCAyMjMsIAorICAgIDI0OCwgMTEsIDUsIDIyMywgMjQ3LCAxMSwgNSwgMjI0LCAyLCAxMSwgNSwgMjIzLCAyNTEsIDExLCA1LCAyMjMsIDI0OSwgCisgICAgMTEsIDUsIDIyMywgMjUwLCAxMSwgNSwgMjM1LCAxMzQsIDExLCA1LCAyMzUsIDEzMywgMTEsIDUsIDIzNSwgMTYxLCAxMSwgCisgICAgNSwgMjM1LCAxNDUsIDExLCA1LCAyMzUsIDE1MywgMTEsIDUsIDIzNSwgMTUyLCAxMSwgNSwgMjM1LCAxNTUsIDExLCA1LCAKKyAgICAyMzUsIDE1NCwgMTEsIDUsIDIzNiwgNDIsIDExLCA1LCAyMzYsIDM3LCAxMSwgNSwgMjM2LCA4OSwgMTEsIDUsIDIzNiwgNTIsIAorICAgIDExLCA1LCAyMzUsIDI1LCAxMSwgNSwgMjM1LCAyNCwgMTEsIDUsIDIzNSwgMjcsIDExLCA1LCAyMzUsIDI2LCAxMSwgNSwgCisgICAgMjM1LCA5NCwgMTEsIDUsIDIzNSwgOTIsIDExLCA1LCAyMzUsIDExNiwgMTEsIDUsIDIzNSwgMTAzLCAxMSwgNSwgMjM1LCAKKyAgICAyMzksIDExLCA1LCAyMzUsIDIzNywgMTEsIDUsIDIzNiwgMTUsIDExLCA1LCAyMzUsIDI1MCwgMTEsIDUsIDIzNSwgMTQsIAorICAgIDExLCA1LCAyMzUsIDEzLCAxMSwgNSwgMjM1LCA1MCwgMTEsIDUsIDIzNSwgMjMsIDExLCA1LCAyMzUsIDE1LCAxMSwgNSwgCisgICAgMjM1LCAyMiwgMTEsIDUsIDIyNiwgMTI3LCAxMSwgNSwgMjI2LCAxMjMsIDExLCA1LCAyMjYsIDE2MywgMTEsIDUsIDIyNiwgCisgICAgMTQxLCAxMSwgNSwgMjI2LCAxNTIsIDExLCA1LCAyMjYsIDE1NiwgMTEsIDUsIDIyNiwgMTU0LCAxMSwgNSwgMjI3LCAzMywgCisgICAgMTEsIDUsIDIyNywgMTYsIDExLCA1LCAxNjEsIDExLCA1LCAyMjcsIDYwLCAxMSwgNSwgMjI1LCAyNDksIDExLCA1LCAyMjUsIAorICAgIDI1NCwgMTEsIDUsIDIyNSwgMjUxLCAxMSwgNSwgMjI2LCA1NiwgMTEsIDUsIDIyNiwgNTEsIDExLCA1LCAyMjYsIDg4LCAxMSwgCisgICAgNSwgMjI2LCA2MywgMTEsIDUsIDIyNiwgMjMzLCAxMSwgNSwgMjI2LCAyMTYsIDExLCA1LCAyMjcsIDgsIDExLCA1LCAyMjYsIAorICAgIDIzNywgMTEsIDUsIDIyNSwgMjM3LCAxMSwgNSwgMjI1LCAyMzMsIDExLCA1LCAyMjYsIDE1LCAxMSwgNSwgMjI1LCAyNDgsIAorICAgIDExLCA1LCAyMjUsIDI0MSwgMTEsIDUsIDIyNSwgMjQ1LCAxMSwgNSwgMjM1LCAyMjEsIDExLCA1LCAyMzUsIDIyMCwgMTEsIAorICAgIDUsIDIzNSwgMjI1LCAxMSwgNSwgMjM1LCAyMjIsIDExLCA1LCAyMzUsIDIyNCwgMTEsIDUsIDIzNSwgMjIzLCAxMSwgNSwgCisgICAgMjM1LCAyMzIsIDExLCA1LCAyMzUsIDIzMSwgMTEsIDUsIDIzNSwgMjM1LCAxMSwgNSwgMjM1LCAyMzMsIDExLCA1LCAyMzUsIAorICAgIDIxMiwgMTEsIDUsIDIzNSwgMjExLCAxMSwgNSwgMjM1LCAyMTQsIDExLCA1LCAyMzUsIDIxMywgMTEsIDUsIDIzNSwgMjE3LCAKKyAgICAxMSwgNSwgMjM1LCAyMTYsIDExLCA1LCAyMzUsIDIxOSwgMTEsIDUsIDIzNSwgMjE4LCAxMSwgNSwgMjM1LCAyMjcsIDExLCAKKyAgICA1LCAyMzUsIDIyNiwgMTEsIDUsIDIzNSwgMjMwLCAxMSwgNSwgMjM1LCAyMjgsIDExLCA1LCAyMzUsIDIwNywgMTEsIDUsIAorICAgIDIzNSwgMjA2LCAxMSwgNSwgMjM1LCAyMTUsIDExLCA1LCAyMzUsIDIxMCwgMTEsIDUsIDIzNSwgMjA4LCAxMSwgNSwgMjM1LCAKKyAgICAyMDksIDExLCA1LCAyMjEsIDIzMCwgMTEsIDUsIDIyMSwgMjMxLCAxMSwgNSwgMjIxLCAyNDksIDExLCA1LCAyMjEsIDI0OCwgCisgICAgMTEsIDUsIDIyMSwgMjUxLCAxMSwgNSwgMjIxLCAyNTAsIDExLCA1LCAyMjEsIDIyMSwgMTEsIDUsIDIyMSwgMjIzLCAxMSwgCisgICAgNSwgMjIxLCAyMjIsIDExLCA1LCAyMjEsIDIyNiwgMTEsIDUsIDIyMSwgMjI1LCAxMSwgNSwgMjIxLCAyMjgsIDExLCA1LCAKKyAgICAyMjEsIDIyNywgMTEsIDUsIDIyMSwgMjMyLCAxMSwgNSwgMjIxLCAyMzQsIDExLCA1LCAyMjEsIDIzMywgMTEsIDUsIDIyMSwgCisgICAgMjE3LCAxMSwgNSwgMjIxLCAyMTYsIDExLCA1LCAyMjEsIDIyNCwgMTEsIDUsIDIyMSwgMjIwLCAxMSwgNSwgMjIxLCAyMTgsIAorICAgIDExLCA1LCAyMjEsIDIxOSwgMTEsIDUsIDIzMywgNDcsIDExLCA1LCAyMzMsIDQ2LCAxMSwgNSwgMjMzLCA1MywgMTEsIDUsIAorICAgIDIzMywgNDgsIDExLCA1LCAyMzMsIDUwLCAxMSwgNSwgMjMzLCA0OSwgMTEsIDUsIDIzMywgNTIsIDExLCA1LCAyMzMsIDUxLCAKKyAgICAxMSwgNSwgMjMzLCA1OCwgMTEsIDUsIDIzMywgNTcsIDExLCA1LCAyMzMsIDYwLCAxMSwgNSwgMjMzLCA1OSwgMTEsIDUsIAorICAgIDIzMywgMzksIDExLCA1LCAyMzMsIDM4LCAxMSwgNSwgMjMzLCA0MSwgMTEsIDUsIDIzMywgNDAsIDExLCA1LCAyMzMsIDQzLCAKKyAgICAxMSwgNSwgMjMzLCA0MiwgMTEsIDUsIDIzMywgNDUsIDExLCA1LCAyMzMsIDQ0LCAxMSwgNSwgMjMzLCA1NCwgMTEsIDUsIAorICAgIDIzMywgNTYsIDExLCA1LCAyMzMsIDU1LCAxMSwgNSwgMjE5LCAxOTgsIDExLCA1LCAyMTksIDIwMCwgMTEsIDUsIDIxOSwgCisgICAgMTk5LCAxMSwgNSwgMjE5LCAyNDMsIDExLCA1LCAyMTksIDI0MSwgMTEsIDUsIDIxOSwgMjUzLCAxMSwgNSwgMjE5LCAyNDYsIAorICAgIDExLCA1LCAyMTksIDE2MCwgMTEsIDUsIDIxOSwgMTU5LCAxMSwgNSwgMjE5LCAxNjEsIDExLCA1LCAyMTksIDE3MCwgMTEsIAorICAgIDUsIDIxOSwgMTY3LCAxMSwgNSwgMjE5LCAxNzgsIDExLCA1LCAyMTksIDE3MiwgMTEsIDUsIDIxOSwgMjM0LCAxMSwgNSwgCisgICAgMjE5LCAyNDAsIDExLCA1LCAyMTksIDIzNiwgMTEsIDUsIDIzNCwgNDUsIDExLCA1LCAyMzQsIDYwLCAxMSwgNSwgMjM0LCAKKyAgICA2OSwgMTEsIDUsIDIzNCwgMTU3LCAxMSwgNSwgMjM0LCAxNDYsIDExLCA1LCAxNDQsIDExLCA1LCAyMzQsIDE2OCwgMTEsIDUsIAorICAgIDIzMywgNzYsIDExLCA1LCAyMzMsIDc1LCAxMSwgNSwgMjMzLCA3OCwgMTEsIDUsIDIzMywgNzcsIDExLCA1LCAyMzMsIDExNywgCisgICAgMTEsIDUsIDIzMywgMTA4LCAxMSwgNSwgMjMzLCAyMDcsIDExLCA1LCAyMzMsIDE4MCwgMTEsIDUsIDIzNCwgOTAsIDExLCA1LCAKKyAgICAyMzQsIDEzOSwgMTEsIDUsIDIzNCwgMTAyLCAxMSwgNSwgMjAxLCA4NSwgMTEsIDUsIDIwMSwgNzAsIDExLCA1LCAyMDEsIAorICAgIDExNCwgMTEsIDUsIDIwMSwgOTYsIDExLCA1LCAyMDAsIDIwNSwgMTEsIDUsIDIwMCwgMjA3LCAxMSwgNSwgMjAwLCAyMDYsIAorICAgIDExLCA1LCAyMDAsIDIyOSwgMTEsIDUsIDIwMSwgMCwgMTEsIDUsIDIwMCwgMjM5LCAxMSwgNSwgMjAxLCA0MywgMTEsIDUsIAorICAgIDIwMSwgNjQsIDExLCA1LCAyMDEsIDQ5LCAxMSwgNSwgMTk5LCAyMSwgMTEsIDUsIDE5OSwgMjAsIDExLCA1LCAxOTksIDM2LCAKKyAgICAxMSwgNSwgMTk5LCAyNCwgMTEsIDUsIDE5OSwgMjksIDExLCA1LCAxOTksIDMxLCAxMSwgNSwgMTk5LCAzMCwgMTEsIDUsIAorICAgIDE5OSwgOTcsIDExLCA1LCAxOTksIDk0LCAxMSwgNSwgMTk5LCAxMTQsIDExLCA1LCAxOTksIDEwMSwgMTEsIDUsIDE5OCwgCisgICAgMjUyLCAxMSwgNSwgMTk4LCAyNTQsIDExLCA1LCAxOTgsIDI1MywgMTEsIDUsIDE5OSwgMTAsIDExLCA1LCAxOTksIDksIDExLCAKKyAgICA1LCAxOTksIDE0LCAxMSwgNSwgMTk5LCAxMSwgMTEsIDUsIDE5OSwgNzksIDExLCA1LCAxOTksIDg5LCAxMSwgNSwgMTk5LCAKKyAgICA4MywgMTEsIDUsIDE5OCwgMjQ4LCAxMSwgNSwgMTk4LCAyNDcsIDExLCA1LCAxOTksIDMsIDExLCA1LCAxOTgsIDI1MSwgMTEsIAorICAgIDUsIDE5OCwgMjQ5LCAxMSwgNSwgMTk4LCAyNTAsIDExLCA1LCAxOTgsIDIzNCwgMTEsIDUsIDE5OCwgMjMzLCAxMSwgNSwgCisgICAgMTk4LCAyMzksIDExLCA1LCAxOTgsIDIzNywgMTEsIDUsIDE5OCwgMjM1LCAxMSwgNSwgMTk4LCAyMzYsIDExLCA1LCAyNDYsIAorICAgIDE0NCwgMTEsIDUsIDI0NiwgMTM3LCAxMSwgNSwgMjQ2LCAxNzMsIDExLCA1LCAyNDYsIDE1NywgMTEsIDUsIDI0NiwgMTcwLCAKKyAgICAxMSwgNSwgMjQ2LCAxNjQsIDExLCA1LCAyNDYsIDE3MiwgMTEsIDUsIDI0NiwgMTcxLCAxMSwgNSwgMjQ3LCAxMTEsIDExLCAKKyAgICA1LCAyNDcsIDEwMywgMTEsIDUsIDI0NywgMTkwLCAxMSwgNSwgMjQ3LCAxNDQsIDExLCA1LCAyNDIsIDIwNCwgMTEsIDUsIAorICAgIDI0MiwgMjA2LCAxMSwgNSwgMjQyLCAyMDUsIDExLCA1LCAyNDMsIDgsIDExLCA1LCAyNDIsIDI1MywgMTEsIDUsIDI0NiwgCisgICAgOTEsIDExLCA1LCAyNDMsIDI1LCAxMSwgNSwgMjQ3LCA0MCwgMTEsIDUsIDI0NywgNzYsIDExLCA1LCAyNDcsIDQ1LCAxMSwgCisgICAgNSwgMjQyLCAxNzksIDExLCA1LCAyNDIsIDE3NywgMTEsIDUsIDI0MiwgMjE0LCAxMSwgNSwgMjQyLCAyMDIsIDExLCA1LCAKKyAgICAyNDIsIDE4NSwgMTEsIDUsIDI0MiwgMTk5LCAxMSwgNSwgMjQyLCAxNTYsIDExLCA1LCAyNDIsIDE1NSwgMTEsIDUsIDI0MiwgCisgICAgMTY4LCAxMSwgNSwgMjQyLCAxNjIsIDExLCA1LCAyNDIsIDE1NywgMTEsIDUsIDI0MiwgMTU5LCAxMSwgNSwgMTk4LCAyMTcsIAorICAgIDExLCA1LCAxOTgsIDIxNiwgMTEsIDUsIDE5OCwgMjIzLCAxMSwgNSwgMTk4LCAyMTgsIDExLCA1LCAxOTgsIDIyMCwgMTEsIAorICAgIDUsIDE5OCwgMjE5LCAxMSwgNSwgMTk4LCAyMjIsIDExLCA1LCAxOTgsIDIyMSwgMTEsIDUsIDE5OCwgMjI5LCAxMSwgNSwgCisgICAgMTk4LCAyMjgsIDExLCA1LCAxOTgsIDIzMiwgMTEsIDUsIDE5OCwgMjMwLCAxMSwgNSwgMTk4LCAyMTMsIDExLCA1LCAxOTgsIAorICAgIDIxNSwgMTEsIDUsIDE5OCwgMjE0LCAxMSwgNSwgMTk4LCAyMjQsIDExLCA1LCAxOTgsIDIyNywgMTEsIDUsIDE5OCwgMjI1LCAKKyAgICAxMSwgNSwgMTk4LCAyMDYsIDExLCA1LCAxOTgsIDIxMCwgMTEsIDUsIDE5OCwgMjA5LCAxMSwgNSwgMTk4LCAyMDcsIDExLCAKKyAgICA1LCAxOTgsIDIwOCwgMTEsIDUsIDE5OCwgMjAwLCAxMSwgNSwgMTk4LCAxOTksIDExLCA1LCAxOTgsIDIwNSwgMTEsIDUsIAorICAgIDE5OCwgMjAzLCAxMSwgNSwgMTk4LCAyMDEsIDExLCA1LCAxOTgsIDIwMiwgMTEsIDUsIDIxNywgMjUwLCAxMSwgNSwgMjE3LCAKKyAgICAyNDksIDExLCA1LCAyMTcsIDI1NSwgMTEsIDUsIDIxNywgMjUxLCAxMSwgNSwgMjE3LCAyNTIsIDExLCA1LCAyMTcsIDI1NCwgCisgICAgMTEsIDUsIDIxNywgMjUzLCAxMSwgNSwgMjE4LCA0LCAxMSwgNSwgMjE4LCAzLCAxMSwgNSwgMjE4LCA3LCAxMSwgNSwgMjE4LCAKKyAgICA2LCAxMSwgNSwgMjE3LCAyNDMsIDExLCA1LCAyMTcsIDI0NCwgMTEsIDUsIDIxNywgMjQ3LCAxMSwgNSwgMjE3LCAyNDgsIAorICAgIDExLCA1LCAyMTgsIDAsIDExLCA1LCAyMTgsIDIsIDExLCA1LCAyMTcsIDIzOCwgMTEsIDUsIDIxNywgMjQ2LCAxMSwgNSwgCisgICAgMjE3LCAyNDIsIDExLCA1LCAyMTcsIDIzOSwgMTEsIDUsIDIxNywgMjQwLCAxMSwgNSwgMjE3LCAyMzMsIDExLCA1LCAyMTcsIAorICAgIDIzMiwgMTEsIDUsIDIxNywgMjM3LCAxMSwgNSwgMjE3LCAyMzYsIDExLCA1LCAyMTcsIDIzNCwgMTEsIDUsIDIxNywgMjM1LCAKKyAgICAxMSwgNSwgMjA5LCAxMDgsIDExLCA1LCAxODcsIDExLCA1LCAyMDksIDE4MiwgMTEsIDUsIDIwOSwgMTExLCAxMSwgNSwgCisgICAgMjA5LCAxNjksIDExLCA1LCAyMDksIDE3MiwgMTEsIDUsIDIwOSwgMTcwLCAxMSwgNSwgMjExLCAyNTEsIDExLCA1LCAyMTEsIAorICAgIDIzNywgMTEsIDUsIDIxMiwgNjQsIDExLCA1LCAyMTIsIDMsIDExLCA1LCAyMDcsIDIxOCwgMTEsIDUsIDIwNywgMjIwLCAxMSwgCisgICAgNSwgMjA3LCAyMTksIDExLCA1LCAyMDksIDQsIDExLCA1LCAyMDgsIDI0OSwgMTEsIDUsIDIwOSwgMjksIDExLCA1LCAyMDksIAorICAgIDgsIDExLCA1LCAyMTAsIDEyNywgMTEsIDUsIDIxMSwgMjAyLCAxMSwgNSwgMjEwLCAxNTYsIDExLCA1LCAyMDcsIDE5NSwgCisgICAgMTEsIDUsIDIwNywgMTkyLCAxMSwgNSwgMjA4LCAyNCwgMTEsIDUsIDIwNywgMjE3LCAxMSwgNSwgMjA3LCAxOTksIDExLCA1LCAKKyAgICAyMDcsIDIwNywgMTEsIDUsIDIwNywgOTcsIDExLCA1LCAyMDcsIDk2LCAxMSwgNSwgMjA3LCAxNjUsIDExLCA1LCAyMDcsIAorICAgIDEwNSwgMTEsIDUsIDIwNywgOTksIDExLCA1LCAyMDcsIDEwNCwgMTEsIDUsIDIwOCwgMTQxLCAxMSwgNSwgMjA4LCAxNDAsIAorICAgIDExLCA1LCAyMDgsIDE0NywgMTEsIDUsIDIwOCwgMTQyLCAxMSwgNSwgMjA4LCAxNDQsIDExLCA1LCAyMDgsIDE0NiwgMTEsIAorICAgIDUsIDIwOCwgMTQ1LCAxMSwgNSwgMjA4LCAxNTYsIDExLCA1LCAyMDgsIDE1NCwgMTEsIDUsIDIwOCwgMTc5LCAxMSwgNSwgCisgICAgMjA4LCAxNTcsIDExLCA1LCAyMDgsIDEzNiwgMTEsIDUsIDIwOCwgMTM1LCAxMSwgNSwgMjA4LCAxMzksIDExLCA1LCAyMDgsIAorICAgIDEzNywgMTEsIDUsIDIwOCwgMTUwLCAxMSwgNSwgMjA4LCAxNTMsIDExLCA1LCAyMDgsIDE1MSwgMTEsIDUsIDIwOCwgMTMyLCAKKyAgICAxMSwgNSwgMjA4LCAxMzAsIDExLCA1LCAyMDgsIDEzNCwgMTEsIDUsIDIwOCwgMTMzLCAxMSwgNSwgMjA4LCAxMjUsIDExLCAKKyAgICA1LCAyMDgsIDEyNCwgMTEsIDUsIDIwOCwgMTI5LCAxMSwgNSwgMjA4LCAxMjgsIDExLCA1LCAyMDgsIDEyNiwgMTEsIDUsIAorICAgIDIwOCwgMTI3LCAxMSwgNSwgMTk5LCA3MiwgMTEsIDUsIDE5OSwgNzEsIDExLCA1LCAxOTksIDc3LCAxMSwgNSwgMTk5LCA3NCwgCisgICAgMTEsIDUsIDE5OSwgNTEsIDExLCA1LCAxOTksIDUzLCAxMSwgNSwgMTk5LCA1MiwgMTEsIDUsIDE5OSwgNTYsIDExLCA1LCAKKyAgICAxOTksIDU1LCAxMSwgNSwgMTk5LCA2MCwgMTEsIDUsIDE5OSwgNTcsIDExLCA1LCAxOTksIDY1LCAxMSwgNSwgMTk5LCA2NCwgCisgICAgMTEsIDUsIDE5OSwgNjgsIDExLCA1LCAxOTksIDY2LCAxMSwgNSwgMTk5LCA0NywgMTEsIDUsIDE5OSwgNDYsIDExLCA1LCAKKyAgICAxOTksIDU0LCAxMSwgNSwgMTk5LCA1MCwgMTEsIDUsIDE5OSwgNDgsIDExLCA1LCAxOTksIDQ5LCAxMSwgNSwgMTk5LCAzOSwgCisgICAgMTEsIDUsIDE5OSwgMzgsIDExLCA1LCAxOTksIDQzLCAxMSwgNSwgMTk5LCA0MiwgMTEsIDUsIDE5OSwgNDAsIDExLCA1LCAKKyAgICAxOTksIDQxLCAxMSwgNSwgMjQ3LCAxNCwgMTEsIDUsIDI0NywgMTAsIDExLCA1LCAyNDcsIDM3LCAxMSwgNSwgMjQ3LCAyMywgCisgICAgMTEsIDUsIDI0NiwgMTg4LCAxMSwgNSwgMjQ2LCAxODcsIDExLCA1LCAyNDYsIDE5MCwgMTEsIDUsIDI0NiwgMTg5LCAxMSwgCisgICAgNSwgMjQ2LCAyMDMsIDExLCA1LCAyNDYsIDIwMiwgMTEsIDUsIDI0NiwgMjEwLCAxMSwgNSwgMjQ2LCAyMDUsIDExLCA1LCAKKyAgICAyNDYsIDI0MSwgMTEsIDUsIDI0NiwgMjM5LCAxMSwgNSwgMjQ3LCA4LCAxMSwgNSwgMjQ2LCAyNDksIDExLCA1LCAyNDYsIAorICAgIDE4MiwgMTEsIDUsIDI0NiwgMTkyLCAxMSwgNSwgMjQ2LCAxODYsIDExLCA1LCAyNDYsIDE4MywgMTEsIDUsIDI0NiwgMTg1LCAKKyAgICAxMSwgNSwgMjQ2LCAxNzUsIDExLCA1LCAyNDYsIDE3NCwgMTEsIDUsIDI0NiwgMTc5LCAxMSwgNSwgMjQ2LCAxNzgsIDExLCAKKyAgICA1LCAyNDYsIDE3NiwgMTEsIDUsIDI0NiwgMTc3LCAxMSwgNSwgMjEyLCAyMTEsIDExLCA1LCAyMTIsIDIxNSwgMTEsIDUsIAorICAgIDIxMiwgMTkzLCAxMSwgNSwgMjEyLCAxOTQsIDExLCA1LCAyMTIsIDE5OCwgMTEsIDUsIDIxMiwgMTk3LCAxMSwgNSwgMjEyLCAKKyAgICAyMDEsIDExLCA1LCAyMTIsIDE5OSwgMTEsIDUsIDIxMiwgMjA1LCAxMSwgNSwgMjEyLCAyMDQsIDExLCA1LCAyMTIsIDIxMCwgCisgICAgMTEsIDUsIDIxMiwgMjA2LCAxMSwgNSwgMjEyLCAxODksIDExLCA1LCAyMTIsIDE4NywgMTEsIDUsIDIxMiwgMTk1LCAxMSwgCisgICAgNSwgMjEyLCAxOTIsIDExLCA1LCAyMTIsIDE5MCwgMTEsIDUsIDIxMiwgMTkxLCAxMSwgNSwgMjEyLCAxODIsIDExLCA1LCAKKyAgICAyMTIsIDE4MSwgMTEsIDUsIDIxMiwgMTg2LCAxMSwgNSwgMjEyLCAxODUsIDExLCA1LCAyMTIsIDE4MywgMTEsIDUsIDIxMiwgCisgICAgMTg0LCAxMSwgNSwgMjE4LCAxOTQsIDExLCA1LCAyMTgsIDE5MywgMTEsIDUsIDIxOCwgMTk2LCAxMSwgNSwgMjE4LCAxOTUsIAorICAgIDExLCA1LCAyMTgsIDE4NSwgMTEsIDUsIDIxOCwgMTg3LCAxMSwgNSwgMjE4LCAxODYsIDExLCA1LCAyMTgsIDE4OSwgMTEsIAorICAgIDUsIDIxOCwgMTg4LCAxMSwgNSwgMjE4LCAxOTIsIDExLCA1LCAyMTgsIDE5MSwgMTEsIDUsIDIxOCwgMTc5LCAxMSwgNSwgCisgICAgMjE4LCAxNzgsIDExLCA1LCAyMTgsIDE4NCwgMTEsIDUsIDIxOCwgMTgyLCAxMSwgNSwgMjE4LCAxODAsIDExLCA1LCAyMTgsIAorICAgIDE4MSwgMTEsIDUsIDIxOCwgMTczLCAxMSwgNSwgMjE4LCAxNzIsIDExLCA1LCAyMTgsIDE3NywgMTEsIDUsIDIxOCwgMTc2LCAKKyAgICAxMSwgNSwgMjE4LCAxNzQsIDExLCA1LCAyMTgsIDE3NSwgMTEsIDUsIDIxMCwgNzUsIDExLCA1LCAyMTAsIDcwLCAxMSwgNSwgCisgICAgMjEwLCAxMTQsIDExLCA1LCAyMTAsIDg3LCAxMSwgNSwgMjA5LCAyMDksIDExLCA1LCAyMDksIDIxMSwgMTEsIDUsIDIwOSwgCisgICAgMjEwLCAxMSwgNSwgMjA5LCAyMzQsIDExLCA1LCAyMDksIDIzMCwgMTEsIDUsIDIxMCwgOCwgMTEsIDUsIDIwOSwgMjU0LCAKKyAgICAxMSwgNSwgMjEwLCA0MywgMTEsIDUsIDIxMCwgMzYsIDExLCA1LCAyMTAsIDY1LCAxMSwgNSwgMjEwLCA1MiwgMTEsIDUsIAorICAgIDIwOSwgMjA1LCAxMSwgNSwgMjA5LCAyMDIsIDExLCA1LCAyMDksIDIyMCwgMTEsIDUsIDIwOSwgMjA4LCAxMSwgNSwgMjA5LCAKKyAgICAyMDYsIDExLCA1LCAyMDksIDIwNywgMTEsIDUsIDIwOSwgMTg1LCAxMSwgNSwgMjA5LCAxODQsIDExLCA1LCAyMDksIDE5MSwgCisgICAgMTEsIDUsIDIwOSwgMTg4LCAxMSwgNSwgMjA5LCAxODYsIDExLCA1LCAyMDksIDE4NywgMTEsIDUsIDIxMywgMjA0LCAxMSwgCisgICAgNSwgMjEzLCAxOTgsIDExLCA1LCAyMTMsIDI1MiwgMTEsIDUsIDIxMywgMjEwLCAxMSwgNSwgMjEyLCAxNTEsIDExLCA1LCAKKyAgICAyMTIsIDE1MywgMTEsIDUsIDIxMiwgMTUyLCAxMSwgNSwgMjEyLCAyMjksIDExLCA1LCAyMTIsIDIxNywgMTEsIDUsIDIxMywgCisgICAgMSwgMTEsIDUsIDIxMiwgMjMzLCAxMSwgNSwgMjEzLCA5OCwgMTEsIDUsIDIxMywgMTkwLCAxMSwgNSwgMjEzLCAxMzcsIDExLCAKKyAgICA1LCAyMTIsIDE0NCwgMTEsIDUsIDIxMiwgMTQxLCAxMSwgNSwgMjEyLCAxNzUsIDExLCA1LCAyMTIsIDE1MCwgMTEsIDUsIAorICAgIDIxMiwgMTQ2LCAxMSwgNSwgMjEyLCAxNDcsIDExLCA1LCAyMTIsIDEyNiwgMTEsIDUsIDIxMiwgMTI1LCAxMSwgNSwgMjEyLCAKKyAgICAxMzEsIDExLCA1LCAyMTIsIDEyOSwgMTEsIDUsIDIxMiwgMTI3LCAxMSwgNSwgMjEyLCAxMjgsIDExLCA1LCAyMjcsIDE5NiwgCisgICAgMTEsIDUsIDIyNywgMTk1LCAxMSwgNSwgMjI3LCAyMDcsIDExLCA1LCAyMjcsIDE5NywgMTEsIDUsIDIyNywgMjAzLCAxMSwgCisgICAgNSwgMjI3LCAyMDIsIDExLCA1LCAyMjcsIDIwNSwgMTEsIDUsIDIyNywgMjA0LCAxMSwgNSwgMjI3LCAxMzYsIDExLCA1LCAKKyAgICAyMjcsIDEzNSwgMTEsIDUsIDIyNywgMTM4LCAxMSwgNSwgMjI3LCAxMzcsIDExLCA1LCAyMjcsIDE1MywgMTEsIDUsIDIyNywgCisgICAgMTUxLCAxMSwgNSwgMjI3LCAxNjYsIDExLCA1LCAyMjcsIDE1NSwgMTEsIDUsIDIyNywgMTI5LCAxMSwgNSwgMjI3LCAxMjcsIAorICAgIDExLCA1LCAyMjcsIDE0NywgMTEsIDUsIDIyNywgMTM0LCAxMSwgNSwgMjI3LCAxMzEsIDExLCA1LCAyMjcsIDEzMiwgMTEsIAorICAgIDUsIDIyNywgMTIxLCAxMSwgNSwgMjI3LCAxMjAsIDExLCA1LCAyMjcsIDEyNSwgMTEsIDUsIDIyNywgMTI0LCAxMSwgNSwgCisgICAgMjI3LCAxMjIsIDExLCA1LCAyMjcsIDEyMywgMTEsIDUsIDIxNCwgMTEzLCAxMSwgNSwgMjE0LCAxMTEsIDExLCA1LCAyMTQsIAorICAgIDEyMSwgMTEsIDUsIDIxNCwgMTE0LCAxMSwgNSwgMjE0LCAxMTgsIDExLCA1LCAyMTQsIDExNywgMTEsIDUsIDIxNCwgMTIwLCAKKyAgICAxMSwgNSwgMjE0LCAxMTksIDExLCA1LCAyMTQsIDY0LCAxMSwgNSwgMjE0LCA2MSwgMTEsIDUsIDIxNCwgNjYsIDExLCA1LCAKKyAgICAyMTQsIDY1LCAxMSwgNSwgMjE0LCAxMDAsIDExLCA1LCAyMTQsIDk5LCAxMSwgNSwgMjE0LCAxMDksIDExLCA1LCAyMTQsIAorICAgIDEwMywgMTEsIDUsIDIxNCwgNTYsIDExLCA1LCAyMTQsIDUyLCAxMSwgNSwgMjE0LCA5NywgMTEsIDUsIDIxNCwgNjAsIDExLCAKKyAgICA1LCAyMTQsIDU4LCAxMSwgNSwgMjE0LCA1OSwgMTEsIDUsIDIxNCwgMzYsIDExLCA1LCAyMTQsIDM0LCAxMSwgNSwgMjE0LCAKKyAgICA0NiwgMTEsIDUsIDIxNCwgMzksIDExLCA1LCAyMTQsIDM3LCAxMSwgNSwgMjE0LCAzOCwgMTEsIDUsIDIyNywgMTg1LCAxMSwgCisgICAgNSwgMjI3LCAxODQsIDExLCA1LCAyMjcsIDE5MSwgMTEsIDUsIDIyNywgMTg2LCAxMSwgNSwgMjI3LCAxODgsIDExLCA1LCAKKyAgICAyMjcsIDE4NywgMTEsIDUsIDIyNywgMTkwLCAxMSwgNSwgMjI3LCAxODksIDExLCA1LCAyMjcsIDE3NiwgMTEsIDUsIDIyNywgCisgICAgMTc4LCAxMSwgNSwgMjI3LCAxNzcsIDExLCA1LCAyMjcsIDE4MSwgMTEsIDUsIDIyNywgMTgwLCAxMSwgNSwgMjI3LCAxODMsIAorICAgIDExLCA1LCAyMjcsIDE4MiwgMTEsIDUsIDIyNywgMTcyLCAxMSwgNSwgMjI3LCAxNzEsIDExLCA1LCAyMjcsIDE3OSwgMTEsIAorICAgIDUsIDIyNywgMTc1LCAxMSwgNSwgMjI3LCAxNzMsIDExLCA1LCAyMjcsIDE3NCwgMTEsIDUsIDIyNywgMTY4LCAxMSwgNSwgCisgICAgMjI3LCAxNjcsIDExLCA1LCAyMjcsIDE3MCwgMTEsIDUsIDIyNywgMTY5LCAxMSwgNSwgMjE5LCA3NSwgMTEsIDUsIDIxOSwgCisgICAgNzQsIDExLCA1LCAyMTksIDgyLCAxMSwgNSwgMjE5LCA3NiwgMTEsIDUsIDIxOSwgNzgsIDExLCA1LCAyMTksIDc3LCAxMSwgCisgICAgNSwgMjE5LCA4MSwgMTEsIDUsIDIxOSwgNzksIDExLCA1LCAyMTksIDY0LCAxMSwgNSwgMjE5LCA2NSwgMTEsIDUsIDIxOSwgCisgICAgNzAsIDExLCA1LCAyMTksIDY5LCAxMSwgNSwgMjE5LCA3MywgMTEsIDUsIDIxOSwgNzEsIDExLCA1LCAyMTksIDU5LCAxMSwgCisgICAgNSwgMjE5LCA2OCwgMTEsIDUsIDIxOSwgNjMsIDExLCA1LCAyMTksIDYwLCAxMSwgNSwgMjE5LCA2MSwgMTEsIDUsIDIxOSwgCisgICAgNTQsIDExLCA1LCAyMTksIDUzLCAxMSwgNSwgMjE5LCA1OCwgMTEsIDUsIDIxOSwgNTcsIDExLCA1LCAyMTksIDU1LCAxMSwgCisgICAgNSwgMjE5LCA1NiwgMTEsIDUsIDIxOCwgMjksIDExLCA1LCAyMTgsIDI4LCAxMSwgNSwgMjE4LCA0MSwgMTEsIDUsIDIxOCwgCisgICAgMzMsIDExLCA1LCAyMTgsIDM4LCAxMSwgNSwgMjE4LCAzNywgMTEsIDUsIDIxOCwgNDAsIDExLCA1LCAyMTgsIDM5LCAxMSwgCisgICAgNSwgMjE4LCAxNCwgMTEsIDUsIDIxOCwgMTYsIDExLCA1LCAyMTgsIDE1LCAxMSwgNSwgMjE4LCAyMSwgMTEsIDUsIDIxOCwgCisgICAgMjAsIDExLCA1LCAyMTgsIDI2LCAxMSwgNSwgMjE4LCAyMiwgMTEsIDUsIDIxOCwgMTIsIDExLCA1LCAyMTgsIDEwLCAxMSwgCisgICAgNSwgMjE4LCAxOSwgMTEsIDUsIDIxOCwgMTMsIDExLCA1LCAyMDAsIDE2MSwgMTEsIDUsIDIwMCwgMTYwLCAxMSwgNSwgMjAwLCAKKyAgICAxNjksIDExLCA1LCAyMDAsIDE2MywgMTEsIDUsIDIwMCwgMTY1LCAxMSwgNSwgMjAwLCAxNjQsIDExLCA1LCAyMDAsIDE2NywgCisgICAgMTEsIDUsIDIwMCwgMTY2LCAxMSwgNSwgMjAwLCAxNDksIDExLCA1LCAyMDAsIDE1MCwgMTEsIDUsIDIwMCwgMTU0LCAxMSwgCisgICAgNSwgMjAwLCAxNTMsIDExLCA1LCAyMDAsIDE1OSwgMTEsIDUsIDIwMCwgMTU3LCAxMSwgNSwgMjAwLCAxMjcsIDExLCA1LCAKKyAgICAyMDAsIDEyNSwgMTEsIDUsIDIwMCwgMTQwLCAxMSwgNSwgMjAwLCAxMzAsIDExLCA1LCAyMDAsIDEyOCwgMTEsIDUsIDIwMCwgCisgICAgMTI5LCAxMSwgNSwgMTk5LCAyNTEsIDExLCA1LCAxOTksIDI0OSwgMTEsIDUsIDIwMCwgOSwgMTEsIDUsIDE5OSwgMjUyLCAKKyAgICAxMSwgNSwgMjAwLCAzLCAxMSwgNSwgMjAwLCAyLCAxMSwgNSwgMjAwLCA2LCAxMSwgNSwgMjAwLCA0LCAxMSwgNSwgMTk5LCAKKyAgICAxODksIDExLCA1LCAxOTksIDE4OCwgMTEsIDUsIDE5OSwgMTkyLCAxMSwgNSwgMTk5LCAxOTAsIDExLCA1LCAxOTksIDIyNSwgCisgICAgMTEsIDUsIDE5OSwgMjIxLCAxMSwgNSwgMTk5LCAyNDUsIDExLCA1LCAxOTksIDIyOSwgMTEsIDUsIDE5OSwgMTgwLCAxMSwgCisgICAgNSwgMTk5LCAxNzYsIDExLCA1LCAxOTksIDIxMSwgMTEsIDUsIDE5OSwgMTg3LCAxMSwgNSwgMTk5LCAxODMsIDExLCA1LCAKKyAgICAxOTksIDE4NCwgMTEsIDUsIDE5OSwgMTYwLCAxMSwgNSwgMTk5LCAxNTksIDExLCA1LCAxOTksIDE2NywgMTEsIDUsIDE5OSwgCisgICAgMTYzLCAxMSwgNSwgMTk5LCAxNjEsIDExLCA1LCAxOTksIDE2MiwgMTEsIDQyLCAyMTQsIDEwMCwgMTEsIDQyLCAyMjQsIAorICAgIDIxMCwgMTEsIDQyLCAyMjYsIDEyNywgMTEsIDQyLCAyMTgsIDMzLCAxMSwgNDIsIDI0MiwgMTYyLCAxMSwgNDIsIDIwOCwgCisgICAgMTQ3LCAxMSwgNDIsIDIzNSwgMjE4LCAxMSwgNDIsIDIzNSwgMjUwLCAxMSwgNDIsIDIyMSwgMjExLCAxMSwgNDIsIDIzMywgCisgICAgNDcsIDExLCA0MiwgMjIzLCAyNTAsIDExLCA0MiwgMjQ5LCAxNiwgMTEsIDQyLCAyMjEsIDc5LCAxMSwgNDIsIDE5OSwgMjQ1LCAKKyAgICAxMSwgNDIsIDIxNCwgMTkyLCAxMSwgNDIsIDIzMywgNDEsIDExLCA0MiwgMjA2LCAyMjYsIDExLCA0MiwgMjM2LCA4OSwgMTEsIAorICAgIDQyLCAxOTgsIDI1MSwgMTEsIDQyLCAyNDIsIDE1NiwgMTEsIDQyLCAyNDEsIDE4MCwgMTEsIDQyLCAyNDgsIDMsIDExLCA0MiwgCisgICAgMjM1LCAyMTQsIDExLCA0MiwgMjE4LCAyMiwgMTEsIDQyLCAyMDQsIDIxNSwgMTEsIDQyLCAyMTcsIDU0LCAxMSwgNDIsIAorICAgIDIyNywgMTcyLCAxMSwgNDIsIDE5OSwgMTAsIDExLCA0MiwgMjE0LCAxNzEsIDExLCA0MiwgMjMzLCAyNDksIDExLCA0MiwgCisgICAgMTk5LCAyNTEsIDExLCA0MiwgMjAxLCAxNjIsIDExLCA0MiwgMjA5LCAxOTEsIDExLCA0MiwgMjAzLCA0OCwgMTEsIDQyLCAKKyAgICAxOTksIDExNCwgMTEsIDQyLCAyMjcsIDE2NiwgMTEsIDQyLCAyMTcsIDI0MiwgMTEsIDQyLCAyMjcsIDE3MCwgMTEsIDQyLCAKKyAgICAyMzUsIDk0LCAxMSwgNDIsIDIyNywgMTkwLCAxMSwgNDIsIDIwMSwgMCwgMTEsIDQyLCAyMzksIDEzNywgMTEsIDQyLCAyMDksIAorICAgIDIwNywgMTEsIDQyLCAyMjQsIDIwNCwgMTEsIDQyLCAyNDIsIDE2OCwgMTEsIDQyLCAyNDIsIDIwNSwgMTEsIDQyLCAyNDYsIAorICAgIDE1NywgMTEsIDQyLCAyMzMsIDQ0LCAxMSwgNDIsIDIxMCwgNzUsIDExLCA0MiwgMTk4LCAyNTAsIDExLCA0MiwgMjA5LCAKKyAgICAyNTQsIDExLCA0MiwgMjQ3LCA4LCAxMSwgNDIsIDE5OCwgMjIwLCAxMSwgNDIsIDIyMCwgMTAxLCAxMSwgNDIsIDIyNywgOCwgCisgICAgMjI0LCAxNTMsIDEsIDI0OSwgMTM2LCAyMjQsIDE1MywgMSwgMTcyLCAyMjQsIDE1MywgMSwgMjE1LCAyNDUsIDIyNCwgMTUzLCAKKyAgICAxLCAyNDIsIDU4LCAyMjQsIDE1MywgMSwgMjA3LCAzNiwgMjI0LCAxNTMsIDEsIDIwNiwgMTIyLCAyMjQsIDE1MywgMSwgCisgICAgMjM2LCA4OSwgMjI0LCAxNTMsIDEsIDE2MSwgMjI0LCAxNTMsIDEsIDIyNiwgMjA3LCAyMjQsIDE1MywgMSwgMjI3LCAyNDgsIAorICAgIDIyNCwgMTUzLCAxLCAyNDcsIDE5MCwgMjI0LCAxNTMsIDEsIDI0NywgMzcsIDIyNCwgMTUzLCAxLCAyMzksIDkzLCAyMjQsIAorICAgIDE1MywgMSwgMjA1LCAzMiwgMjI0LCAxNTMsIDEsIDIwNSwgMjIsIDIyNCwgMTUzLCAxLCAxNzgsIDIyNCwgMTUzLCAxLCAKKyAgICAxODgsIDIyNCwgMTUzLCAxLCAxOTQsIDIyNCwgMTUzLCAxLCAyMTIsIDY0LCAyMjQsIDE1MywgMSwgMTk5LCA3NywgMjI0LCAKKyAgICAxNTMsIDEsIDE5OSwgMTE0LCAyMjQsIDE1MywgMSwgMjE5LCAyNTMsIDIyNCwgMTUzLCAxLCAxNDQsIDIyNCwgMTUzLCAxLCAKKyAgICAyMDAsIDE4MSwgMjI0LCAxNTMsIDEsIDIzNCwgODQsIDIyNCwgMTUzLCAxLCAyMzcsIDE5NSwgMjI0LCAxNTMsIDEsIDIwMSwgCisgICAgMTE0LCAyMjQsIDE1MywgMSwgMjEwLCAxMTQsIDIyNCwgMTUzLCAxLCAxODMsIDIyNCwgMTUzLCAxLCAyMzUsIDE5OSwgMjI0LCAKKyAgICAxNTMsIDEsIDYyLCAyMjQsIDE1MywgMSwgMjUxLCAyMjEsIDIyNCwgMTUzLCAxLCA3MiwgMjI0LCAxNTMsIDEsIDIzOCwgNjksIAorICAgIDIyNCwgMTUzLCAxLCA3MCwgMjI0LCAxNTMsIDEsIDc0LCAyMjQsIDE1MywgMSwgNjYsIDIyNCwgMTUzLCAxLCAyMDQsIDMxLCAKKyAgICAyMjQsIDE1MywgMSwgMjA0LCAyNSwgMjI0LCAxNTMsIDEsIDIxNywgMTIxLCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDIyMSwgCisgICAgMjA2LCAxNSwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAxNjIsIDIxNSwgMTA2LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIAorICAgIDIyMSwgMjQyLCAxNjcsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMjIxLCAyNDgsIDEyNCwgMjI0LCAxNTMsIDEsIDE1MCwgCisgICAgMjIwLCAyMjEsIDE4OCwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAyMjEsIDIyNywgMjE2LCAyMjQsIDE1MywgMjE0LCAyMTIsIAorICAgIDI0NiwgNzAsIDIyNCwgMTUzLCAyMTQsIDIxMiwgMjM2LCAxODMsIDIwOCwgNzYsIDUwLCA1LCAyMzgsIDI1NSwgNTAsIDUsIAorICAgIDIzOCwgMjUxLCA1MCwgNSwgMjM0LCAxMjAsIDUwLCA1LCAyMDEsIDU3LCA1MCwgNSwgMjAxLCA1NiwgNTAsIDUsIDIxNiwgCisgICAgNjEsIDUwLCA1LCAyNDgsIDE5NSwgNTAsIDUsIDI0OCwgMjUyLCA1MCwgNSwgMjIyLCAxMDIsIDUwLCA1LCAyMjYsIDQ1LCAKKyAgICA1MCwgNSwgMjIxLCAyNDMsIDUwLCA1LCAyMzYsIDI4LCA1MCwgNSwgMjM3LCAxNDAsIDUwLCA1LCAyMDMsIDU0LCA1MCwgNSwgCisgICAgMjA2LCAxOTAsIDUwLCA1LCAyMDYsIDEwNCwgNTAsIDUsIDI0MSwgOTAsIDUwLCA1LCAyNDEsIDg3LCA1MCwgNSwgMjI1LCAKKyAgICAzMiwgNTAsIDUsIDIxMywgMTY3LCA1MCwgNSwgMjQxLCAxNjEsIDUwLCA1LCAyMjAsIDY2LCA1MCwgNSwgMjExLCAxOTAsIAorICAgIDUwLCA1LCAyMTAsIDYzLCA1MCwgNSwgMTk5LCA4NywgNTAsIDUsIDE5OSwgNjcsIDUwLCA1LCAyNDcsIDY4LCA1MCwgNSwgCisgICAgMjI3LCAyMjUsIDUwLCA1LCAyMTksIDg5LCA1MCwgNSwgMjAwLCA0OCwgNTAsIDUsIDIyNywgNSwgNTAsIDUsIDIxOSwgMjI2LCAKKyAgICA1MCwgNSwgMjM2LCA3LCA1MCwgNSwgMjIyLCA2NCwgNTAsIDUsIDIyMCwgMjksIDUwLCA1LCAyMTgsIDQ5LCA1MCwgNSwgNzAsIAorICAgIDUwLCA1LCAyMjgsIDExNywgNTAsIDUsIDIzNCwgNzUsIDUwLCA1LCAyMzQsIDUzLCA1MCwgNSwgMjAxLCAzMSwgNTAsIDUsIAorICAgIDIwMSwgMTgsIDUwLCA1LCAyMTUsIDIwNCwgNTAsIDUsIDI0OCwgMTkzLCA1MCwgNSwgMjQ4LCAxODgsIDUwLCA1LCAyMjIsIAorICAgIDk1LCA1MCwgNSwgMjI2LCA0MiwgNTAsIDUsIDIyMSwgMjQwLCA1MCwgNSwgMjM2LCAyNCwgNTAsIDUsIDIzNywgMTEyLCA1MCwgCisgICAgNSwgMjAyLCAyMzQsIDUwLCA1LCAyMDYsIDE1LCA1MCwgNSwgMjA2LCA4NCwgNTAsIDUsIDI0MSwgODIsIDUwLCA1LCAyNDEsIAorICAgIDg2LCA1MCwgNSwgMjI0LCAyMTAsIDUwLCA1LCAyMTMsIDg4LCA1MCwgNSwgMjQxLCA3NiwgNTAsIDUsIDIyMCwgNjAsIDUwLCAKKyAgICA1LCAyMDksIDE4MiwgNTAsIDUsIDIxMCwgMzMsIDUwLCA1LCAxOTksIDM2LCA1MCwgNSwgMTk5LCA2MywgNTAsIDUsIDI0NiwgCisgICAgMTczLCA1MCwgNSwgMjI3LCAyMDcsIDUwLCA1LCAyMTksIDgyLCA1MCwgNSwgMjAwLCA5LCA1MCwgNSwgMjI2LCAxNjMsIDUwLCAKKyAgICA1LCAyMTksIDIxOCwgNTAsIDUsIDIzNSwgMTYxLCA1MCwgNSwgMjIxLCAyMTEsIDUwLCA1LCAyMTksIDE1MCwgNTAsIDUsIAorICAgIDIxOCwgNDEsIDUwLCA1LCA2MiwgNTAsIDUsIDI1MSwgODUsIDUwLCA1LCAyMTksIDI0OCwgNTAsIDUsIDE0NCwgNTAsIDUsIAorICAgIDIzNCwgMjAyLCA1MCwgNSwgMjAxLCAxMTQsIDUwLCA1LCAyMDEsIDEwMCwgNTAsIDUsIDE3MiwgNTAsIDUsIDI0OCwgMjAwLCAKKyAgICA1MCwgNSwgMjQ5LCAxMzYsIDUwLCA1LCAyMjIsIDExMCwgNTAsIDUsIDIyNiwgNTAsIDUwLCA1LCAyMjYsIDQ4LCA1MCwgNSwgCisgICAgMjIxLCAyNDcsIDUwLCA1LCAyMzYsIDMyLCA1MCwgNSwgMjM3LCAxOTUsIDUwLCA1LCAyMDMsIDkwLCA1MCwgNSwgMjA3LCAKKyAgICAzNiwgNTAsIDUsIDIwNiwgMTIyLCA1MCwgNSwgMjQxLCAxMDAsIDUwLCA1LCAyNDEsIDg5LCA1MCwgNSwgMTk0LCA1MCwgNSwgCisgICAgMjEzLCAyNTIsIDUwLCA1LCAyNDIsIDU4LCA1MCwgNSwgMjIwLCA3NSwgNTAsIDUsIDIxMiwgNjQsIDUwLCA1LCAyMTAsIAorICAgIDExNCwgNTAsIDUsIDE5OSwgMTE0LCA1MCwgNSwgMTk5LCA3NywgNTAsIDUsIDI0NywgMTkwLCA1MCwgNSwgMjI3LCAyNDgsIAorICAgIDUwLCA1LCAyMTksIDk4LCA1MCwgNSwgMTgzLCA1MCwgNSwgMTYxLCA1MCwgNSwgMjI3LCA2OCwgNTAsIDUsIDIxOSwgMjMyLCAKKyAgICA1MCwgNSwgMjM2LCA4OSwgNTAsIDUsIDE3OCwgNTAsIDUsIDE4OCwgNTAsIDUsIDIxOCwgNjAsIDUwLCA1LCAyMTcsIDYzLCAKKyAgICA1MCwgNSwgMjE3LCA1OCwgNTAsIDUsIDIzMywgMTg4LCA1MCwgNSwgMjAwLCAyNDQsIDUwLCA1LCAyMDAsIDI0MCwgNTAsIDUsIAorICAgIDIxNSwgODEsIDUwLCA1LCAyNDgsIDE5MSwgNTAsIDUsIDI0OCwgMTExLCA1MCwgNSwgMjIyLCA5MCwgNTAsIDUsIDIyNiwgCisgICAgNDAsIDUwLCA1LCAyMjEsIDIzNiwgNTAsIDUsIDIzNiwgMjAsIDUwLCA1LCAyMzcsIDIsIDUwLCA1LCAyMDIsIDE3OSwgNTAsIAorICAgIDUsIDIwNSwgMTYxLCA1MCwgNSwgMjA2LCA1NiwgNTAsIDUsIDI0MSwgNzksIDUwLCA1LCAyNDEsIDg0LCA1MCwgNSwgMjI0LCAKKyAgICA3OCwgNTAsIDUsIDIxMiwgMjM4LCA1MCwgNSwgMjQwLCAxODcsIDUwLCA1LCAyMjAsIDQ3LCA1MCwgNSwgMjA5LCAxMCwgNTAsIAorICAgIDUsIDIxMCwgMiwgNTAsIDUsIDE5OSwgMTIsIDUwLCA1LCAxOTksIDU4LCA1MCwgNSwgMjQzLCAzMCwgNTAsIDUsIDIyNywgCisgICAgMTU2LCA1MCwgNSwgMjE5LCA3MiwgNTAsIDUsIDE5OSwgMjMwLCA1MCwgNSwgMjI2LCA2OCwgNTAsIDUsIDIxOSwgMjE2LCAKKyAgICA1MCwgNSwgMjM1LCAxMDUsIDUwLCA1LCAyMjEsIDg3LCA1MCwgNSwgMjE4LCAyMjksIDUwLCA1LCAyMTgsIDIzLCA1MCwgNSwgCisgICAgNjYsIDUwLCA1LCAyMDQsIDUsIDUwLCA1LCAyMzMsIDk3LCA1MCwgNSwgMjMzLCA4NCwgNTAsIDUsIDIwMCwgMjE2LCA1MCwgCisgICAgNSwgMjAwLCAyMDksIDUwLCA1LCAyMTQsIDIyNCwgNTAsIDUsIDI0OCwgMTkwLCA1MCwgNSwgMjQ4LCAzNiwgNTAsIDUsIAorICAgIDIyMiwgODksIDUwLCA1LCAyMjYsIDM4LCA1MCwgNSwgMjIxLCAyMzUsIDUwLCA1LCAyMzYsIDE5LCA1MCwgNSwgMjM2LCAKKyAgICAxODksIDUwLCA1LCAyMDEsIDE2NiwgNTAsIDUsIDIwNCwgMjE1LCA1MCwgNSwgMjA2LCAzNSwgNTAsIDUsIDI0MSwgNzcsIAorICAgIDUwLCA1LCAyNDEsIDgzLCA1MCwgNSwgMjI0LCA0MiwgNTAsIDUsIDIxMiwgMTc1LCA1MCwgNSwgMjM5LCAxMzcsIDUwLCA1LCAKKyAgICAyMjAsIDQyLCA1MCwgNSwgMjA4LCAyNCwgNTAsIDUsIDIwOSwgMjIwLCA1MCwgNSwgMTk5LCAzLCA1MCwgNSwgMTk5LCA1NCwgCisgICAgNTAsIDUsIDI0MiwgMjE0LCA1MCwgNSwgMjI3LCAxNDcsIDUwLCA1LCAyMTksIDY4LCA1MCwgNSwgMTk5LCAyMTEsIDUwLCA1LCAKKyAgICAyMjYsIDE1LCA1MCwgNSwgMjE5LCAyMTUsIDUwLCA1LCAyMzUsIDUwLCA1MCwgNSwgMjIxLCA0MSwgNTAsIDUsIDIxOCwgCisgICAgMTMzLCA1MCwgNSwgMjE4LCAxOSwgNTAsIDUsIDc0LCA1MCwgNSwgMjE3LCA3OCwgNTAsIDUsIDIxOSwgMTc0LCA1MCwgNSwgCisgICAgMjMzLCAyMDcsIDUwLCA1LCAyMzMsIDE5MSwgNTAsIDUsIDIwMSwgMCwgNTAsIDUsIDIwMCwgMjQ1LCA1MCwgNSwgMjE1LCAKKyAgICAxMDYsIDUwLCA1LCAyNDgsIDE5MiwgNTAsIDUsIDI0OCwgMTI0LCA1MCwgNSwgMjIyLCA5MSwgNTAsIDUsIDIyNiwgNDEsIAorICAgIDUwLCA1LCAyMjEsIDIzOCwgNTAsIDUsIDIzNiwgMjIsIDUwLCA1LCAyMzYsIDIxLCA1MCwgNSwgMjM3LCAxMywgNTAsIDUsIAorICAgIDIwMiwgMTkzLCA1MCwgNSwgMTM4LCA1MCwgNSwgMjA2LCA2MSwgNTAsIDUsIDI0MSwgODAsIDUwLCA1LCAyNDEsIDg1LCA1MCwgCisgICAgNSwgMjI0LCAxMTAsIDUwLCA1LCAyMTMsIDEsIDUwLCA1LCAyNDAsIDIxMSwgNTAsIDUsIDIyMCwgNTEsIDUwLCA1LCAyMDksIAorICAgIDI5LCA1MCwgNSwgMjEwLCA4LCA1MCwgNSwgMTk5LCAxNCwgNTAsIDUsIDE5OSwgNjAsIDUwLCA1LCAyNDYsIDkxLCA1MCwgNSwgCisgICAgMjI3LCAxNjYsIDUwLCA1LCAyMTksIDczLCA1MCwgNSwgMTk5LCAyNDUsIDUwLCA1LCAyMjYsIDg4LCA1MCwgNSwgMjE5LCAKKyAgICAyMTcsIDUwLCA1LCAyMzUsIDExNiwgNTAsIDUsIDIyMSwgMTM2LCA1MCwgNSwgMjE4LCAyNDEsIDUwLCA1LCAyMTgsIDI2LCAKKyAgICA1MCwgNSwgNzIsIDUwLCA1LCAyMzgsIDE3OSwgNTAsIDUsIDIxOSwgMjM3LCA1MCwgNSwgMjM0LCAxMzksIDUwLCA1LCAyMzQsIAorICAgIDEwNSwgNTAsIDUsIDIwMSwgNjQsIDUwLCA1LCAyMDEsIDUxLCA1MCwgNSwgMjE2LCA3MywgNTAsIDUsIDI0OCwgMTk2LCA1MCwgCisgICAgNSwgMjQ5LCA4LCA1MCwgNSwgMjIyLCAxMDMsIDUwLCA1LCAyMjYsIDQ2LCA1MCwgNSwgMjI2LCA0NCwgNTAsIDUsIDIyMSwgCisgICAgMjQ0LCA1MCwgNSwgMjM2LCAyOSwgNTAsIDUsIDIzNiwgMjcsIDUwLCA1LCAyMzcsIDE0NywgNTAsIDUsIDIwMywgNTksIDUwLCAKKyAgICA1LCAyMDYsIDIwMSwgNTAsIDUsIDIwNiwgMTA2LCA1MCwgNSwgMjQxLCA5MSwgNTAsIDUsIDI0MSwgODgsIDUwLCA1LCAyMjUsIAorICAgIDQwLCA1MCwgNSwgMjEzLCAxOTAsIDUwLCA1LCAyNDEsIDE3NSwgNTAsIDUsIDIyMCwgNjcsIDUwLCA1LCAyMTEsIDIwMiwgCisgICAgNTAsIDUsIDIxMCwgNjUsIDUwLCA1LCAxOTksIDg5LCA1MCwgNSwgMTk5LCA2OCwgNTAsIDUsIDI0NywgNzYsIDUwLCA1LCAKKyAgICAyMjcsIDIyNywgNTAsIDUsIDIxOSwgOTEsIDUwLCA1LCAyMDAsIDUxLCA1MCwgNSwgMjI3LCA4LCA1MCwgNSwgMjE5LCAyMjcsIAorICAgIDUwLCA1LCAyMTksIDIyMywgNTAsIDUsIDIzNiwgMTUsIDUwLCA1LCAyMzYsIDEsIDUwLCA1LCAyMjIsIDc2LCA1MCwgNSwgCisgICAgMjIwLCAzNCwgNTAsIDUsIDIxOCwgNTAsIDUwLCA1LCAyMTksIDI1NSwgNTAsIDUsIDIyNCwgMjUwLCA1MCwgMjQ2LCA3MCwgCisgICAgNTAsIDIzNiwgMTgzLCAyMDgsIDc2LCA1MCwgMjE0LCA3OSwgODEsIDUwLCA1LCAyMjAsIDUwLCAyMzcsIDE5NSwgNTAsIDUsIAorICAgIDIyMCwgNTAsIDE2MSwgNTAsIDUsIDIyMCwgNTAsIDIwOSwgMTAsIDUwLCAxNiwgMjM3LCAxMzYsIDUwLCAxNiwgMjI3LCAzLCAKKyAgICA1MCwgMTYsIDIwNSwgMjI4LCA1MCwgMTYsIDIxOSwgMTI1LCA1MCwgMTYsIDI0OSwgODMsIDUwLCAxNiwgMjM3LCAxOTQsIAorICAgIDUwLCAxNiwgMjA3LCAzMiwgNTAsIDE2LCAyNDIsIDgsIDUwLCAxNiwgMjQwLCAxODYsIDUwLCAxNiwgMjI1LCAyNTUsIDUwLCAKKyAgICAxNiwgMjA1LCAxNjUsIDUwLCAxNiwgMjQwLCAyMTAsIDUwLCAxNiwgMjI3LCAxNTcsIDUwLCAxNywgMTk5LCA4MSwgNTAsIAorICAgIDE3LCAxMDIsIDUwLCAxNywgMTA1LCA1MCwgMTcsIDE0NywgNTAsIDE3LCAxNDksIDUwLCAxNywgMTY0LCA1MCwgMTcsIDE4NywgCisgICAgNTAsIDE3LCAyMTAsIDEzNSwgNTAsIDE3LCAxOTIsIDUwLCAxNywgMjE5LCAxMTMsIDUwLCA1LCAyMjAsIDUwLCAxNzgsIDUwLCAKKyAgICA1LCAyMjAsIDUwLCAyNDAsIDIxMSwgMzcsIDYsIDEsIDE5OSwgODUsIDM3LCA0LCAxLCAxOTksIDg1LCAzNywgNiwgMSwgCisgICAgMjM5LCA4OCwgMzcsIDQsIDEsIDIzOSwgODgsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMjM5LCA5MCwgMzcsIDQsIDEsIDIxMywgCisgICAgMTA1LCAyMzksIDkwLCAzNywgNiwgMSwgMjI4LCA0MSwgMzcsIDQsIDEsIDIyOCwgNDEsIDM3LCA2LCAxLCAyNDAsIDIyNywgCisgICAgMzcsIDQsIDEsIDI0MCwgMjI3LCAzNywgNiwgMSwgMjIxLCA5NSwgMjA0LCAyMCwgMzcsIDQsIDEsIDIyMSwgOTUsIDIwNCwgCisgICAgMjAsIDM3LCA2LCAxLCAyNDgsIDQ3LCAyMTcsIDgzLCAzNywgNCwgMSwgMjQ4LCA0NywgMjE3LCA4MywgMzcsIDYsIDEsIAorICAgIDIyMCwgMTAsIDIwMCwgMzMsIDM3LCA0LCAxLCAyMjAsIDEwLCAyMDAsIDMzLCAzNywgNiwgMSwgMjAwLCAzMCwgMywgMjQ5LCAKKyAgICAxMzAsIDIwMCwgMzMsIDM3LCA0LCAxLCAyMDAsIDMwLCAzLCAyNDksIDEzMCwgMjAwLCAzMywgMzcsIDYsIDEsIDIyOCwgMzksIAorICAgIDIwMCwgNjUsIDM3LCA0LCAxLCAyMjgsIDM5LCAyMDAsIDY1LCAzNywgNiwgMSwgMjEzLCAxMDUsIDE5OSwgMjExLCAzNywgNCwgCisgICAgMSwgMjEzLCAxMDUsIDE5OSwgMjExLCAzNywgNiwgMSwgMjI4LCAzOSwgNjIsIDM3LCA0LCAxLCAyMjgsIDM5LCA2MiwgMzcsIAorICAgIDYsIDEsIDI0NiwgMTEwLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAyNDYsIDExMCwgMjI0LCAxNDgsIDE5OSwgCisgICAgMTgxLCAzNywgNiwgMSwgMjQ4LCAxMzYsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjQ4LCAxMzYsIDE5OSwgMTgxLCAzNywgNiwgCisgICAgMSwgMjI4LCAzOSwgMjQ2LCAxMTAsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgMzksIDI0NiwgMTEwLCAKKyAgICAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA2LCAxLCAxOTksIDI0NywgMzcsIDQsIDEsIDE5OSwgMjQ3LCAzNywgNiwgMSwgCisgICAgMjEzLCAxMDUsIDIwNSwgMjYsIDM3LCA0LCAxLCAyMTMsIDEwNSwgMjA1LCAyNiwgMzcsIDYsIDEsIDIwOSwgMjMsIDI0MSwgCisgICAgMTc1LCAzNywgNCwgMSwgMjA5LCAyMywgMjQxLCAxNzUsIDM3LCA2LCAxLCAyMDksIDIzLCAyMzgsIDIwOSwgMzcsIDQsIDEsIAorICAgIDIwOSwgMjMsIDIzOCwgMjA5LCAzNywgNiwgMSwgMjA5LCAyMywgMjM4LCAxOTAsIDM3LCA0LCAxLCAyMDksIDIzLCAyMzgsIAorICAgIDE5MCwgMzcsIDYsIDEsIDIyMSwgOTksIDc0LCAzNywgNCwgMSwgMjIxLCA5OSwgNzQsIDM3LCA2LCAxLCAyNDgsIDE2NSwgCisgICAgNzQsIDM3LCA0LCAxLCAyNDgsIDE2NSwgNzQsIDM3LCA2LCAxLCA1MywgMjIxLCA5OSwgNzQsIDM3LCA0LCAxLCA1MywgMjIxLCAKKyAgICA5OSwgNzQsIDM3LCAxLCAyMjEsIDIyLCA3NCwgMzgsIDM3LCAyMDEsIDE0OSwgMzgsIDM3LCAyMDYsIDE2NywgMjIxLCAxNjgsIAorICAgIDU0LCAzOCwgMzcsIDIzMywgODMsIDIyMSwgMTY4LCA1NCwgMzgsIDM3LCAyMDYsIDUxLCAyMjEsIDE2OCwgNTQsIDIwOSwgCisgICAgNzMsIDI1MCwgMTY1LCAzOCwgMzcsIDEsIDIwNCwgMTcsIDIyOCwgMTc4LCAzOCwgMzcsIDEsIDcwLCAzOCwgMzcsIDEsIAorICAgIDIwMCwgOSwgMzgsIDM3LCAxLCA2NiwgMzgsIDM3LCAxLCAyMzQsIDE2NSwgNTQsIDM4LCAzNywgMSwgMjAwLCAyOSwgMzgsIAorICAgIDM3LCAxLCAyMDksIDIzLCA1NCwgMzgsIDM3LCAxLCAyMTcsIDgzLCAzOCwgMzcsIDIyNywgMjAsIDM4LCAzNywgMjE2LCA4MCwgCisgICAgMzcsIDIyNywgMjAsIDM3LCAyMTYsIDgwLCAzNywgNiwgMSwgMjM5LCAxMDMsIDM3LCA0LCAxLCAyMzksIDEwMywgMzcsIDYsIAorICAgIDEsIDIzOSwgNzksIDM3LCA0LCAxLCAyMzksIDc5LCAzNywgNiwgMSwgMTk5LCA0NCwgMzcsIDQsIDEsIDE5OSwgNDQsIDM3LCAKKyAgICA2LCAxLCAyNDcsIDkyLCAzNywgNCwgMSwgMjQ3LCA5MiwgMzcsIDYsIDEsIDIzOSwgNzYsIDM3LCA0LCAxLCAyMzksIDc2LCAKKyAgICAzNywgNiwgMSwgMjA2LCAyMDIsIDMsIDEwMSwgMTE3LCAzNywgNCwgMSwgMjA2LCAyMDIsIDMsIDEwMSwgMTE3LCAzNywgNiwgCisgICAgMSwgMjA0LCAxNjgsIDM3LCA0LCAxLCAyMDQsIDE2OCwgMzcsIDYsIDEsIDIwNSwgMSwgMzcsIDQsIDEsIDIwNSwgMSwgMzcsIAorICAgIDYsIDEsIDIwNSwgNiwgMzcsIDQsIDEsIDIwNSwgNiwgMzcsIDYsIDEsIDIwNiwgMjA3LCAzNywgNCwgMSwgMjA2LCAyMDcsIAorICAgIDM3LCA2LCAxLCAyMzMsIDY1LCAzNywgNCwgMSwgMjMzLCA2NSwgMzcsIDYsIDEsIDIwOSwgMTk3LCAzNywgNCwgMSwgMjA5LCAKKyAgICAxOTcsIDM3LCA2LCAxLCA1MywgNzQsIDM3LCA0LCAxLCA1MywgNzQsIDM3LCA2LCAxLCAyNDIsIDIzMiwgNzQsIDM3LCA0LCAKKyAgICAxLCAyNDIsIDIzMiwgNzQsIDY3LCAxLCAzNywgMjM0LCAxNjUsIDU0LCA2NywgMSwgMzcsIDIwOSwgMjMsIDU0LCAzOCwgMzcsIAorICAgIDEsIDIzOCwgMjQ4LCAzOCwgMzcsIDEsIDIyOCwgMzksIDcyLCAyNSwgMSwgNjIsIDI1LCAxLCAxNjEsIDI1LCAxLCA2NiwgCisgICAgMjUsIDEsIDIyNiwgMTUsIDI1LCAxLCAyMzgsIDI1NSwgMjUsIDEsIDIxMywgMTY3LCAyNSwgMSwgMjA3LCAxNSwgMjUsIDEsIAorICAgIDc0LCAyNSwgMSwgMjE4LCA0MSwgMjUsIDEsIDcwLCAyNSwgMSwgMTk0LCAyNSwgMSwgMTcyLCAyNSwgMSwgMjEzLCAzMywgCisgICAgMjUsIDEsIDIxMywgODEsIDI1LCAxLCAyMjUsIDMxLCAyNSwgMSwgMjIyLCA2MywgMjUsIDEsIDIwNywgMzIsIDI1LCAxLCAKKyAgICAyMjAsIDczLCAyNSwgMSwgMjE5LCA5NiwgMjUsIDEsIDIyMywgMjQzLCAyNSwgMSwgMjA3LCAxOTMsIDI1LCAxLCAyMjEsIAorICAgIDQxLCAyNSwgMSwgMjEwLCAyOCwgMjUsIDEsIDIwOSwgMTgyLCAyNSwgMSwgMjEwLCAzOCwgMjUsIDEsIDIxMCwgMTM3LCAyNSwgCisgICAgMSwgMjI1LCAxOTksIDI1LCAxLCAyMjYsIDIzMywgMjUsIDEsIDIxOCwgMTA0LCAyNSwgMSwgMjE4LCAxMzMsIDI1LCAxLCAKKyAgICAyMTksIDY3LCAyNSwgMSwgMTk5LCAyMjcsIDI1LCAxLCAyMDksIDIyMCwgMjUsIDEsIDE5OSwgMTg1LCAyNSwgMSwgMTgzLCAKKyAgICAyNSwgMSwgMjE4LCAxNjcsIDI1LCAxLCAyMjYsIDIxOSwgMjUsIDEsIDIxNSwgMjQ5LCAyNSwgMSwgMjE5LCA4OSwgMjUsIDEsIAorICAgIDIxOCwgMTQ4LCAyNSwgMSwgMjE0LCAyMTYsIDI1LCAxLCAyMDAsIDIxMywgMjUsIDEsIDIxNiwgNjEsIDI1LCAxLCAyMzcsIAorICAgIDE0MCwgMjUsIDEsIDIxMiwgMTc1LCAyNSwgMSwgMjI0LCA0MiwgMjUsIDEsIDIyMSwgMjExLCAyNSwgMSwgMjE5LCAxNTAsIAorICAgIDI1LCAxLCAyMTMsIDEwNywgMjUsIDEsIDIxMywgMjM0LCAyNSwgMSwgMjI2LCAyNDMsIDI1LCAxLCAyMTksIDE4MSwgMjUsIAorICAgIDEsIDIxOSwgMjMyLCAyNSwgMSwgMjE5LCAyNTMsIDI1LCAxLCAyMTAsIDgsIDI1LCAxLCAyMTQsIDIyMSwgMjUsIDEsIDIzNiwgCisgICAgMTg5LCAyNSwgMSwgMjM3LCA2LCAyNSwgMSwgMjAxLCAxMTQsIDI1LCAxLCAxODgsIDI1LCAxLCAyMjQsIDIxMCwgMjUsIDEsIAorICAgIDIxNSwgMjA0LCAyNSwgMSwgMjI0LCA3MCwgMjUsIDEsIDIyNiwgODgsIDI1LCAxLCAyMjIsIDEwMCwgMjUsIDEsIDIxMywgCisgICAgMTM5LCAyNSwgMSwgMjIyLCA0MCwgMjUsIDEsIDE3OCwgMjUsIDEsIDIwNiwgMTUsIDI1LCAxLCAyMjYsIDE2MywgMjUsIDEsIAorICAgIDIyMSwgMTM2LCAyNSwgMSwgMjIyLCAxMDgsIDI1LCAxLCAyMDYsIDE0NiwgMjUsIDEsIDIyNiwgNTAsIDI1LCAxLCAyMDYsIAorICAgIDE2NiwgMjUsIDEsIDIxOCwgMTM1LCAyNSwgMSwgMjEyLCAyMSwgMjUsIDEsIDIzNywgMTkxLCAyNSwgMSwgMjI2LCA1MiwgCisgICAgMjUsIDEsIDIyNiwgODMsIDI1LCAzOCwgMTM0LCAyMjYsIDYxLCAyNSwgMzgsIDEzNCwgMjA0LCAyMDYsIDI1LCAyMTksIDk1LCAKKyAgICAyNSwgMjM2LCAxODMsIDIwOCwgNzYsIDI1LCAyNDYsIDc5LCAyNSwgMjQ2LCA3MCwgMjUsIDIxMCwgMTY3LCAyNSwgMjE0LCAKKyAgICA3OSwgODEsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjE1LCAxNTYsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAKKyAgICAyMDAsIDc2LCAyMTUsIDE1NiwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTAsIDg4LCA2NywgMSwgMjQ2LCAKKyAgICAyMjIsIDE1MCwgMjAwLCA3NiwgMjEwLCA4OCwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTQsIDk3LCA2NywgCisgICAgMSwgMjQ2LCAyMjIsIDE1MCwgMjAwLCA3NiwgMjE0LCA5NywgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTIsIAorICAgIDE3NSwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDIwMCwgNzYsIDIxMiwgMTc1LCA2NywgMSwgMjM4LCAyOSwgMjM5LCAxODAsIAorICAgIDE1MCwgMTQ4LCA2NywgMSwgMTIyLCAyMzksIDE4MCwgMTUwLCAxNDgsIDY3LCAxLCAyMjEsIDIwNiwgMjM5LCAxODAsIDE1MCwgCisgICAgMTQ4LCA2NywgMSwgMTI4LCAyMzksIDE4MCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIDI4LCAyMzksIDE4MCwgMTUwLCAxNDgsIAorICAgIDY3LCAxLCAyMzgsIDI5LCAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIzOSwgMTgwLCAyMjUsIAorICAgIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjgsIAorICAgIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgMjgsIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgCisgICAgNjcsIDEsIDIzOCwgMjksIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTIyLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIAorICAgIDIyMSwgMjA2LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIAorICAgIDI4LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDczLCA4MywgMTQ4LCA2NywgMSwgNzMsIDIwOSwgNzUsIDY3LCAxLCA3MywgCisgICAgMjMzLCAxNzcsIDE0OCwgNjcsIDEsIDIyNCwgNTQsIDUxLCAyNDMsIDE2LCAyNTEsIDcwLCA2NywgMSwgMjEzLCAyMjAsIAorICAgIDExNSwgNDgsIDY3LCAxLCAyMTMsIDIyMCwgMTI3LCA0OCwgNjcsIDEsIDIxMywgMjIwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIAorICAgIDIxMywgMjIwLCAyMjgsIDUwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIDEyOCwgMjI4LCA1MCwgMjM4LCA0MywgODEsIDY3LCAxLCAKKyAgICAyMDgsIDU3LCAyNiwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDIwOCwgNTcsIDI2LCAxMjgsIDIwNSwgMTc0LCA4LCA2LCAxLCAKKyAgICAyMzgsIDI0MywgMjUxLCAxNDIsIDgsIDQsIDEsIDIzOCwgMjQzLCAyNTEsIDE0MiwgOCwgNiwgMSwgMjM4LCAyNDMsIDI1MSwgCisgICAgMTcxLCA4LCA0LCAxLCAyMzgsIDI0MywgMjUxLCAxNzEsIDgsIDYsIDEsIDIzNCwgMTAzLCA4LCA0LCAxLCAyMzQsIDEwMywgCisgICAgOCwgNiwgMSwgMjA0LCAxMTQsIDgsIDQsIDEsIDIwNCwgMTE0LCA4LCA2LCAxLCAyMDUsIDEwMiwgOCwgNCwgMSwgMjA1LCAKKyAgICAxMDIsIDgsIDYsIDEsIDI0MiwgMjExLCA4LCA0LCAxLCAyNDIsIDIxMSwgOCwgNiwgMSwgMjQyLCAyMTIsIDMsIDI0NiwgNzAsIAorICAgIDgsIDQsIDEsIDI0MiwgMjEyLCAzLCAyNDYsIDcwLCA4LCAxLCA0LCA2LCAyMzgsIDUsIDgsIDEsIDQsIDYsIDIxMiwgMTIyLCAKKyAgICA4LCA2LCAxLCAyNTIsIDEzOCwgOCwgNCwgMSwgMjUyLCAxMzgsIDgsIDYsIDEsIDI1MSwgMzEsIDgsIDQsIDEsIDI1MSwgMzEsIAorICAgIDgsIDYsIDEsIDI1MCwgMTM5LCA4LCA0LCAxLCAyNTAsIDEzOSwgOCwgNiwgMSwgMjUwLCAxMjMsIDgsIDQsIDEsIDI1MCwgCisgICAgMTIzLCA4LCA2LCAxLCAyNTAsIDEyNCwgMywgMjMzLCAxNzcsIDE0OCwgOCwgNCwgMSwgMjUwLCAxMjQsIDMsIDIzMywgMTc3LCAKKyAgICAxNDgsIDgsIDYsIDEsIDI1MCwgMTEyLCA4LCA0LCAxLCAyNTAsIDExMiwgOCwgNiwgMSwgMjEzLCAxMDUsIDI0NywgMjI0LCAKKyAgICAzLCAyNDAsIDE4MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDI0NywgMjI0LCAzLCAyNDAsIDE4MiwgOCwgNiwgMSwgMjI3LCAxMTksIAorICAgIDMsIDk3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgCisgICAgMSwgMjI3LCAxMTksIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjA4LCA0NywgMjYsIDI0MSwgNzEsIAorICAgIDk3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjA4LCA0NywgMjYsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyNDgsIDQ2LCAKKyAgICAxNTYsIDgsIDQsIDEsIDI0OCwgNDYsIDE1NiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDEyMiwgOTcsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxMjIsIDk3LCA4LCA2LCAxLCAxNjMsIDMsIDE2OCwgMjA4LCA0NywgMjE2LCAyNDIsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgOCwgNiwgMSwgMTYzLCAzLCAyMjQsIDc0LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIyNCwgNzQsIDgsIDYsIDEsIDIxNywgNjMsIDgsIDQsIDEsIDIxNywgNjMsIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAyMDgsIAorICAgIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCAKKyAgICA4LCA2LCAxLCAyMTYsIDIyNywgMywgMjM3LCAyNiwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIzNywgMjYsIDgsIDYsIDEsIAorICAgIDIxNiwgMjI3LCAzLCAyMDgsIDE4NSwgMjA3LCA2LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjA4LCAxODUsIDIwNywgNiwgOCwgCisgICAgNiwgMSwgMjE0LCAxNjgsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMTQsIDE2OCwgMywgMjA4LCAKKyAgICA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDYsIDEsIDIxNCwgMTY4LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMjE0LCAKKyAgICAxNjgsIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyMTQsIDMzLCAyMTIsIDIyMiwgOCwgNCwgMSwgMjE0LCAzMywgMjEyLCAKKyAgICAyMjIsIDgsIDYsIDEsIDIxMiwgMTYyLCAyMTIsIDIyMiwgOCwgNCwgMSwgMjEyLCAxNjIsIDIxMiwgMjIyLCA4LCA2LCAxLCAKKyAgICAyMDMsIDE2OSwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgCisgICAgMjAxLCAxNTUsIDgsIDQsIDEsIDIwMSwgMTU1LCA4LCA2LCAxLCAyMDIsIDIwMSwgMTk5LCAxNTcsIDgsIDQsIDEsIDIwMiwgCisgICAgMjAxLCAxOTksIDE1NywgOCwgNiwgMSwgMjA2LCA1NSwgMywgOTcsIDgsIDQsIDEsIDIwNiwgNTUsIDMsIDk3LCA4LCA2LCAxLCAKKyAgICAyMDYsIDU1LCAzLCAyMDgsIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNCwgMSwgMjA2LCA1NSwgMywgMjA4LCA0NywgCisgICAgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDYsIDEsIDIwMywgNDksIDgsIDQsIDEsIDIwMywgNDksIDgsIDYsIDEsIDIzOCwgODEsIAorICAgIDgsIDQsIDEsIDIzOCwgODEsIDgsIDYsIDEsIDIyOCwgMjYsIDgsIDQsIDEsIDIyOCwgMjYsIDgsIDYsIDEsIDI0MywgNjgsIAorICAgIDgsIDQsIDEsIDI0MywgNjgsIDY3LCAxLCAyMDMsIDE5NywgOCwgNCwgMSwgMjM5LCAxMjYsIDgsIDQsIDEsIDIyNCwgMjUsIAorICAgIDgsIDQsIDEsIDIyMSwgMTUsIDgsIDQsIDEsIDIxOCwgOTYsIDgsIDQsIDEsIDIxMiwgMTYxLCA4LCAxLCA0LCA2LCAyMTIsIAorICAgIDE2MSwgOCwgNCwgMSwgMjA0LCAyMDMsIDgsIDQsIDEsIDIwNCwgMTIsIDgsIDYsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCA4LCAKKyAgICA0LCAxLCAyMjgsIDcxLCAyNDIsIDE1MywgOCwgNiwgMSwgMjI4LCA3MSwgMjM4LCA1LCA4LCA0LCAxLCAyMjgsIDcxLCAyMzgsIAorICAgIDUsIDgsIDYsIDEsIDIyOCwgNzEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjI4LCA3MSwgMjM2LCAxNTYsIDgsIAorICAgIDQsIDEsIDIwNCwgMTg1LCAyMjgsIDcxLCAyMzYsIDE1NiwgOCwgNiwgMSwgMjA0LCAxODUsIDE1NiwgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDE1NiwgOCwgNiwgMSwgMjI4LCA3MSwgMTQ2LCA4LCA0LCAxLCAyMjgsIDcxLCAxNDYsIDgsIDYsIDEsIDIyOCwgNzEsIAorICAgIDIxMiwgMTIyLCA4LCA0LCAxLCAyMjgsIDcxLCAyMTIsIDEyMiwgOCwgNiwgMSwgMjI4LCA3MSwgMjA3LCA4MywgOCwgNCwgMSwgCisgICAgMjI4LCA3MSwgMjA3LCA4MywgNjcsIDEsIDEyOCwgMjQ2LCAxNDcsIDI1MSwgMjUxLCA2NywgMSwgMjQ2LCA3OSwgNjcsIDEsIAorICAgIDIwOSwgMjUwLCAyMzgsIDEyMiwgNTQsIDgsIDYsIDEsIDIxMiwgMjUsIDgsIDQsIDEsIDIxMiwgMjUsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCAyMzQsIDI0NywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIxMywgMTExLCAyMzMsIDE4NywgMjYsIDI0OCwgMjI2LCA4LCAKKyAgICAxLCAyMDksIDEzMiwgMjQwLCAxODIsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyNDEsIDExOSwgOCwgNCwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTQ4LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMTQ4LCA4LCA0LCAKKyAgICAxLCAyNDcsIDIyNCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDYsIAorICAgIDEsIDY4LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCA2OCwgMywgMjM3LCAyNiwgOCwgNiwgMSwgMjM4LCA2LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMjM4LCA2LCAzLCA5NywgOCwgNiwgMSwgMjAyLCAxODUsIDI1MSwgMjIxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjUxLCAKKyAgICAyMjEsIDgsIDYsIDEsIDIwMiwgMTg1LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjAyLCAxODUsIDIxNywgMTIxLCA4LCA2LCAxLCAKKyAgICAyMDIsIDE4NSwgMjA0LCAzMSwgOCwgNCwgMSwgMjAyLCAxODUsIDIwNCwgMzEsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjE0LCAzMywgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgMTE3LCAKKyAgICA4LCA2LCAxLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNiwgMSwgMTM1LCAyMzYsIDE1NiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDI0OCwgMjI2LCA4LCA2LCAxLCA0LCA2LCA3MCwgOCwgNiwgMSwgMjA0LCAxODUsIDIyNywgMTE4LCA4LCA2LCAxLCAyMDQsIAorICAgIDE4NSwgMjA3LCA4MywgOCwgNiwgMSwgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA4LCA2LCAxLCAyNDYsIDIzNiwgOCwgNiwgMSwgCisgICAgMjQ4LCAyMDgsIDgsIDQsIDEsIDI0OCwgMjA4LCA4LCA2LCAxLCAyMTcsIDgzLCA4LCA0LCAxLCAyMTcsIDgzLCA4LCAyMzgsIAorICAgIDEyNywgMSwgMjA5LCAxNzMsIDcwLCA2NywgMSwgNiwgMjM0LCAyNDgsIDMsIDk3LCA2NywgMSwgNCwgMzMsIDIxNywgMTIxLCAKKyAgICA4LCAxLCA0LCA2LCAyMDQsIDE4NSwgMjIzLCAyNDMsIDgsIDIzOCwgMTI3LCAxLCAyMTMsIDEwNSwgMjM4LCA1LCA4LCAyMzgsIAorICAgIDEyNywgMSwgMjEzLCAxMDUsIDIxNiwgMjI2LCA4LCAyMzgsIDEyNywgMSwgMjI4LCA1MCwgMjIzLCAyNDMsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMzMsIDE5LCAyMjQsIDgwLCA4LCAyMzgsIDEyNywgMSwgMjUwLCAyMzQsIDIyMywgMjQzLCAyMDcsIDE2MywgCisgICAgMjIwLCAxNDUsIDEsIDYyLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDcwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIsIDIzOSwgCisgICAgMTA1LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDY2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDcyLCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDEsIDc0LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIsIDIzNCwgMTU5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNiwgCisgICAgODgsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI2LCAxNzgsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjM1LCAxMTYsIAorICAgIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjM1LCAxNzEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjUxLCAzMywgMjA3LCAKKyAgICAxNjMsIDIyMCwgMTQ1LCAxLCAyNDYsIDkxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0NiwgMjEwLCAyMDcsIDE2MywgCisgICAgMjIwLCAxNDUsIDEsIDIyNywgMTY2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNywgMjA5LCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDEsIDIwNCwgMjMwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwNCwgMjM2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIAorICAgIDI0MSwgMTkwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0MSwgMTk5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDEzOCwgCisgICAgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMDYsIDYxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0MCwgMjExLCAyMDcsIAorICAgIDE2MywgMjIwLCAxNDUsIDEsIDI0MSwgODAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjE4LCAyNDEsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgMjE1LCAxMDYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjE1LCAyMTcsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgMjQ4LCAxMjQsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQ4LCAxOTIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgCisgICAgMjIxLCAxMzYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjEzLCAxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNCwgMTEwLCAKKyAgICAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxMiwgMjAxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwOSwgMjksIDIwNywgCisgICAgMTYzLCAyMjAsIDE0NSwgMSwgMjMzLCAyMDcsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIDYyLCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDIyLCAyLCA3MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIAorICAgIDcyLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCAyMTcsIDYzLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAKKyAgICAyMjIsIDE0OSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMTUsIDEwMSwgMjIyLCAxNDgsIDIwNywgMTYzLCAyMjAsIDE0NSwgCisgICAgMjE1LCAxMDEsIDIyMiwgMTQ3LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAyMjIsIDE0NiwgMTU3LCAyMjgsIAorICAgIDEwMSwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDE1NywgCisgICAgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIAorICAgIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMTIsIDIzOCwgMjI3LCAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTI2LCAKKyAgICAyMDksIDk3LCAxNTcsIDIyOCwgMTAxLCAyMTQsIDg4LCA4MSwgMTU3LCAyMjgsIDEwMSwgMjE1LCAxMzMsIDgxLCAxNTcsIAorICAgIDIyOCwgMTAxLCAyMTIsIDE0OSwgODEsIDE1NywgMjI4LCAxMDEsIDIxNCwgODksIDgxLCAyMTUsIDI0MSwgMSwgMTYxLCAKKyAgICAyMTUsIDI0MSwgMSwgMjI2LCAyMDcsIDIxNSwgMjQxLCAxLCAyMzYsIDg5LCAyMTUsIDI0MSwgMSwgMjE5LCAyNTMsIDIxNSwgCisgICAgMjQxLCAxLCAyNDcsIDE5MCwgMjE1LCAyNDEsIDEsIDI0NywgMzcsIDIxNSwgMjQxLCAxLCAyMjcsIDI0OCwgMjE1LCAyNDEsIAorICAgIDEsIDIxOCwgNjAsIDIxNSwgMjQxLCAxLCAyMDcsIDM2LCAyMTUsIDI0MSwgMSwgMjA2LCAxMjIsIDIxNSwgMjQxLCAxLCAKKyAgICAyNDIsIDU4LCAyMTUsIDI0MSwgMSwgMTg4LCAyMTUsIDI0MSwgMSwgMTcyLCAyMTUsIDI0MSwgMSwgMjE1LCAyNDUsIDIxNSwgCisgICAgMjQxLCAxLCAyNDksIDEzNiwgMjE1LCAyNDEsIDEsIDE3OCwgMjE1LCAyNDEsIDEsIDIwNSwgMzIsIDIxNSwgMjQxLCAxLCAKKyAgICAyMDUsIDIyLCAyMTUsIDI0MSwgMSwgMjM5LCA5MywgMjE1LCAyNDEsIDEsIDIwMSwgMTE0LCAyMTUsIDI0MSwgMSwgMTk5LCAKKyAgICA3NywgMjE1LCAyNDEsIDEsIDE5OSwgMTE0LCAyMTUsIDI0MSwgMSwgNCwgNjIsIDIxNSwgMjQxLCAxLCAxODMsIDIxNSwgCisgICAgMjQxLCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDEsIDE5NCwgMjE1LCAyNDEsIDEsIDIxMCwgMTE0LCAyMTUsIDI0MSwgMSwgCisgICAgMjEyLCA2NCwgMjE1LCAyNDEsIDEsIDE0NCwgMjE1LCAyNDEsIDEsIDYyLCAyMTUsIDI0MSwgMSwgNzAsIDIxNSwgMjQxLCAxLCAKKyAgICA2NiwgMjE1LCAyNDEsIDEsIDcyLCAyMTUsIDI0MSwgMSwgNzQsIDIxNSwgMjQxLCAxLCAyMTQsIDE1OSwgMjE1LCAyNDEsIDEsIAorICAgIDIwMCwgMTgxLCAyMTUsIDI0MSwgMSwgMjM3LCAxOTUsIDIxNSwgMjQxLCAxLCAyMzUsIDIzNSwgMjE1LCAyNDEsIDEsIDIzOCwgCisgICAgMjU1LCAyMTUsIDI0MSwgMjA4LCAxMiwgMSwgMjAxLCAxMTQsIDIxNSwgMjQxLCAyMDgsIDEyLCAxLCAxODMsIDIxNSwgMjQxLCAKKyAgICAxLCAyMDQsIDI1MywgMjE1LCAyNDEsIDEsIDIwNCwgMjQxLCAyMTUsIDI0MSwgMSwgMjQxLCAyMjAsIDIxNSwgMjQxLCAxLCAKKyAgICAyMTksIDIxLCAyMTUsIDI0MSwgMSwgMjUxLCAxMDksIDE4MywgMjE1LCAyNDEsIDEsIDIwMiwgMTg4LCAyMTAsIDExNCwgCisgICAgMjE1LCAyNDEsIDEsIDIwMiwgMTg5LCAxNDQsIDIxNSwgMjQxLCAxLCAyNTAsIDE3MiwgMjM3LCAxOTUsIDIxNSwgMjQxLCAKKyAgICAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDIwNywgMjE1LCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDEsIDI0NywgCisgICAgMTQ5LCAyMTUsIDI0MSwgMjA5LCAxMzksIDIzNCwgMTM3LCA4MSwgMjE1LCAyNDEsIDUzLCAyMzQsIDEzNywgODEsIDIxNSwgCisgICAgMjQxLCAxMzQsIDIxMCwgMTA2LCAyMTUsIDI0MSwgMTM0LCA1MywgMjEwLCAxMDYsIDIxMSwgMjQxLCAyLCAyNTEsIDMzLCAKKyAgICAyMTEsIDI0MSwgMiwgMjAyLCAyMDMsIDIxMSwgMjQxLCAxLCA2MiwgMjExLCAyNDEsIDEsIDI1MiwgMTM4LCAyMTEsIDI0MSwgCisgICAgMSwgNzAsIDIxMSwgMjQxLCAxLCAyMjgsIDE1MSwgMjExLCAyNDEsIDEsIDY2LCAyMTEsIDI0MSwgMSwgMjAzLCAxODIsIAorICAgIDIxMSwgMjQxLCAxLCAxMDksIDE0NiwgMjExLCAyNDEsIDEsIDEwOSwgMjEyLCAyMTYsIDIxMSwgMjQxLCAxLCAxMDksIDE1NiwgCisgICAgMjExLCAyNDEsIDEsIDEwOSwgMjI0LCAxMzksIDIxMSwgMjQxLCAxLCA3MiwgMjExLCAyNDEsIDEsIDIzOCwgMjU1LCAyMTEsIAorICAgIDI0MSwgMSwgMjUxLCAxNzYsIDIxMSwgMjQxLCAxLCA3NCwgMjExLCAyNDEsIDEsIDIxNywgNjMsIDIxMSwgMjQxLCAxLCAKKyAgICAyNTAsIDEzOSwgMjExLCAyNDEsIDEsIDE2MSwgMjExLCAyNDEsIDEsIDIyNiwgMjA3LCAyMTEsIDI0MSwgMSwgMjM2LCA4OSwgCisgICAgMjExLCAyNDEsIDEsIDIzNSwgMTk5LCAyMTEsIDI0MSwgMSwgMjE5LCAyNTMsIDIxMSwgMjQxLCAxLCAyNDcsIDE5MCwgMjExLCAKKyAgICAyNDEsIDEsIDI0NywgMzcsIDIxMSwgMjQxLCAxLCAyMjcsIDI0OCwgMjExLCAyNDEsIDEsIDIyNywgMjE1LCAyMTEsIDI0MSwgCisgICAgMSwgMjE4LCA2MCwgMjExLCAyNDEsIDEsIDIwNCwgMjUzLCAyMTEsIDI0MSwgMSwgMjA0LCAyNDEsIDIxMSwgMjQxLCAxLCAKKyAgICAyNDEsIDIyMCwgMjExLCAyNDEsIDEsIDI0MSwgMjA0LCAyMTEsIDI0MSwgMSwgMjE5LCAyMSwgMjExLCAyNDEsIDEsIDIwNywgCisgICAgMzYsIDIxMSwgMjQxLCAxLCAyMDYsIDEyMiwgMjExLCAyNDEsIDEsIDI0MiwgNTgsIDIxMSwgMjQxLCAxLCAyNDEsIDEwMCwgCisgICAgMjExLCAyNDEsIDEsIDE4OCwgMjExLCAyNDEsIDEsIDE3MiwgMjExLCAyNDEsIDEsIDIxNSwgMjQ1LCAyMTEsIDI0MSwgMSwgCisgICAgMjQ5LCAxMzYsIDIxMSwgMjQxLCAxLCAyNDgsIDIwMCwgMjExLCAyNDEsIDEsIDE3OCwgMjExLCAyNDEsIDEsIDE4MywgMjExLCAKKyAgICAyNDEsIDEsIDIxMywgMjUyLCAyMTEsIDI0MSwgMSwgMTk0LCAyMTEsIDI0MSwgMSwgMjAzLCA5MCwgMjExLCAyNDEsIDEsIAorICAgIDIxMCwgMTE0LCAyMTEsIDI0MSwgMSwgMjA4LCAxNzksIDIxMSwgMjQxLCAxLCAyMTIsIDY0LCAyMTEsIDI0MSwgMSwgMTQ0LCAKKyAgICAyMTEsIDI0MSwgMSwgMjI0LCAxMzgsIDIxMSwgMjQxLCAxMTEsIDIsIDIzNCwgMjMxLCAyMTEsIDI0MSwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMTEsIDI0MSwgMjIsIDIsIDcwLCAyMTEsIDI0MSwgMjIsIDIsIDIyOCwgMTUxLCAyMTEsIDI0MSwgMjIsIDIsIDY2LCAKKyAgICAyMTEsIDI0MSwgMjIsIDIsIDIwMywgMTgyLCAyMTEsIDI0MSwgMjIsIDIsIDEwOSwgMTQ2LCAyMTEsIDI0MSwgMjIsIDIsIAorICAgIDEwOSwgMjEyLCAyMTYsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAxNTYsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgCisgICAgMjExLCAyNDEsIDIyLCAyLCA3MiwgMjExLCAyNDEsIDIyLCAyLCAyMzgsIDI1NSwgMjExLCAyNDEsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjExLCAyNDEsIDIyLCAyLCA3NCwgMjExLCAyNDEsIDIyLCAyLCAyMTcsIDYzLCAyMTEsIDI0MSwgMjIsIDIsIDI1MCwgCisgICAgMTM5LCAyMTEsIDI0MSwgMiwgMjAyLCAyMDgsIDIxMSwgMjQxLCAyLCAyNDcsIDE0OSwgMjExLCAyNDEsIDI0MiwgMTAsIAorICAgIDIxMSwgMjQxLCA1MywgMjQyLCAxMCwgMjExLCAyNDEsIDE3LCAxOTksIDgxLCAyMTEsIDI0MSwgMTcsIDEwMiwgMjExLCAKKyAgICAyNDEsIDE3LCAxMDUsIDIxMSwgMjQxLCAxNywgMTQ3LCAyMTEsIDI0MSwgMTcsIDE0OSwgMjExLCAyNDEsIDE3LCAxNjQsIAorICAgIDIxMSwgMjQxLCAxNywgMTg3LCAyMTEsIDI0MSwgMTcsIDIxMCwgMTM1LCAyMTEsIDI0MSwgMTcsIDE5MiwgMjExLCAyNDEsIAorICAgIDE3LCAyMTksIDExMywgMzgsIDk0LCAxNywgMTk5LCA4MSwgMzgsIDk0LCAxNywgMTAyLCAzOCwgOTQsIDE3LCAxMDUsIDM4LCAKKyAgICA5NCwgMTcsIDE0NywgMzgsIDk0LCAxNywgMTQ5LCAzOCwgOTQsIDE3LCAxNjQsIDM4LCA5NCwgMTcsIDE4NywgMzgsIDk0LCAKKyAgICAxNywgMjEwLCAxMzUsIDM4LCA5NCwgMTcsIDE5MiwgMzgsIDk0LCAxNywgMjE5LCAxMTMsIDM4LCA5NCwgMSwgNjIsIDM4LCAKKyAgICA5NCwgMSwgNjYsIDM4LCA5NCwgMSwgMTYxLCAzOCwgOTQsIDEsIDE4OCwgMzgsIDk0LCAxLCAxNzIsIDM4LCA5NCwgMSwgCisgICAgMjEzLCAyNTIsIDM4LCA5NCwgMSwgMjAyLCAyMzQsIDM4LCA5NCwgMiwgMjUwLCAxMjIsIDk0LCAyLCAyMDgsIDI0MywgMjQ3LCAKKyAgICAxNDksIDk0LCAyLCAyNDcsIDE1MCwgMjAyLCAyMDgsIDk0LCAyLCA1MywgMjQ3LCAxNTAsIDIwMiwgMjA4LCA5NCwgMiwgCisgICAgMjQ3LCAxNTAsIDEwNSwgOTQsIDIsIDI0NywgMTUwLCAxNDcsIDk0LCAyLCAyNDcsIDE1MCwgMjUwLCAxMjIsIDk0LCAyLCAKKyAgICAyMTQsIDE5NSwgOTQsIDIzNiwgNTMsIDIzNywgOTMsIDk0LCAyNDcsIDEyOSwgOTQsIDIzNCwgMTMwLCA5NCwgMiwgMjA5LCAKKyAgICAxNzcsIDk0LCAyMjcsIDI0MCwgMjE3LCA4NiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxOTksIDgxLCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMTcsIDEwMiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxMDUsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTQ3LCAKKyAgICAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE0OSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxNjQsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxNywgMTg3LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDIxMCwgMTM1LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIAorICAgIDE5MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAyMTksIDExMywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE2MSwgMjI3LCAxNCwgCisgICAgMjI0LCAyMTEsIDEsIDIyNiwgMjA3LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjM2LCA4OSwgMjI3LCAxNCwgMjI0LCAyMTEsIAorICAgIDEsIDIxOSwgMjUzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjEyLCA2NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxMCwgCisgICAgMTE0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTk5LCAxMTQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTgsIDYwLCAyMjcsIAorICAgIDE0LCAyMjQsIDIxMSwgMSwgMjA3LCAzNiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIzMywgMTAxLCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMSwgMTg4LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTcyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjE1LCAyNDUsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNzgsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyNDIsIDU4LCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMSwgMjQ5LCAxMzYsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTMsIDI1MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIAorICAgIDE4MywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE5NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIwMSwgMTE0LCAyMjcsIDE0LCAKKyAgICAyMjQsIDIxMSwgMSwgMjA2LCAxMjIsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNDQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAKKyAgICAyMDMsIDkwLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjQ3LCAxOTAsIDIyNywgMTQsIDIyNCwgMjExLCAxLCA2MiwgMjI3LCAKKyAgICAxNCwgMjI0LCAyMTEsIDEsIDIxNywgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgNzAsIDIyNywgMTQsIDIyNCwgMjExLCAKKyAgICAxLCAyMTcsIDYzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDIwNCwgMzEsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgNzIsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgNjYsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgMjM4LCAyNTUsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAyMiwgNzQsIDIyNywgMTQsIDIyNCwgMjExLCAxNTAsIDIxNSwgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTUwLCAKKyAgICAyNDcsIDE2NSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE1MCwgMjQ3LCAxNjYsIDIxNSwgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgCisgICAgMiwgMjQyLCAxNzIsIDIyNywgMTQsIDIyNCwgMjExLCAyLCAyMDksIDE5MCwgMjEzLCAxNTEsIDEsIDE2MSwgMjEzLCAxNTEsIAorICAgIDEsIDIzNiwgODksIDIxMywgMTUxLCAxLCAyMTksIDI1MywgMjEzLCAxNTEsIDEsIDIwNywgMzYsIDIxMywgMTUxLCAxLCAKKyAgICAyNDIsIDU4LCAyMTMsIDE1MSwgMSwgMTg4LCAyMTMsIDE1MSwgMSwgMTcyLCAyMTMsIDE1MSwgMSwgMjQ5LCAxMzYsIDIxMywgCisgICAgMTUxLCAxLCAxNzgsIDIxMywgMTUxLCAxLCAyNDcsIDE5MCwgMjEzLCAxNTEsIDEsIDIyNywgMjQ4LCAyMTMsIDE1MSwgMSwgCisgICAgMjE4LCA2MCwgMjEzLCAxNTEsIDEsIDIxMiwgNjQsIDIxMywgMTUxLCAxLCAyMTMsIDI1MiwgMjEzLCAxNTEsIDEsIDE5NCwgCisgICAgMjEzLCAxNTEsIDEsIDE4MywgMjEzLCAxNTEsIDEsIDIwMSwgMTE0LCAyMTMsIDE1MSwgMSwgMTQ0LCAyMTMsIDE1MSwgMSwgCisgICAgMjIyLCAxMTAsIDIxMywgMTUxLCAxLCAyMTksIDIzMiwgMjEzLCAxNTEsIDEsIDIyMCwgNzUsIDIxMywgMTUxLCAxLCAyMTgsIAorICAgIDI3LCAyMTMsIDE1MSwgMSwgNjIsIDIxMywgMTUxLCAyMiwgMiwgNzAsIDIxMywgMTUxLCAyMiwgMiwgNjYsIDIxMywgMTUxLCAKKyAgICAyMiwgMiwgNzIsIDIxMywgMTUxLCAyMiwgMiwgMjUxLCAxNzYsIDIxMywgMTUxLCAyMiwgMiwgNzQsIDIxMywgMTUxLCAyMiwgCisgICAgMiwgMjUwLCAxMzksIDIxMywgMTUxLCAyMiwgMiwgMjM4LCA2OSwgMjEzLCAxNTEsIDIyLCAyLCAyMzksIDI3LCAyMTMsIAorICAgIDE1MSwgMTExLCAyLCAyMTksIDI1NSwgMjEzLCAxNTEsIDExMSwgMiwgMjIwLCAyMTQsIDIxMywgMTUxLCAxMTEsIDIsIDE0NiwgCisgICAgMjEzLCAxNTEsIDExMSwgMiwgMjM0LCAyNDcsIDIxMywgMTUxLCAyMDIsIDIwOCwgMjEzLCAxNTEsIDIxMSwgMTkzLCA4MSwgCisgICAgMjksIDEyOSwgMjA1LCAyNDksIDI5LCAxMjksIDIwNSwgMjQ4LCAyOSwgMTI5LCAyMDUsIDI0NiwgMjksIDEyOSwgMjA1LCAKKyAgICAyNTEsIDI5LCAxMjksIDIxMywgNzMsIDI5LCAxMjksIDIxMywgNTcsIDI5LCAxMjksIDIxMywgNTIsIDI5LCAxMjksIDIxMywgCisgICAgNTQsIDI5LCAxMjksIDIxMywgNzAsIDI5LCAxMjksIDIxMywgNjMsIDI5LCAxMjksIDIxMywgNTYsIDI5LCAxMjksIDIxMywgCisgICAgNzUsIDI5LCAxMjksIDIxMywgNTgsIDI5LCAxMjksIDIxMywgNzcsIDI5LCAxMjksIDIxMywgNzQsIDI5LCAxMjksIDIyMSwgCisgICAgMTkzLCAyOSwgMTI5LCAyMjEsIDE4NCwgMjksIDEyOSwgMjIxLCAxODcsIDI5LCAxMjksIDIxNSwgMTc1LCAyOSwgMTI5LCAKKyAgICAyMTUsIDE4NiwgMjksIDEyOSwgMjE1LCAxODcsIDI5LCAxMjksIDIwOCwgMTYzLCAyOSwgMTI5LCAyMjgsIDE2NCwgMjksIAorICAgIDEyOSwgMjI4LCAxNzEsIDI5LCAxMjksIDIwOCwgMTc0LCAyOSwgMTI5LCAyMDgsIDE2MSwgMjksIDEyOSwgMjE1LCAyMjYsIAorICAgIDI5LCAxMjksIDIzNCwgNjEsIDI5LCAxMjksIDIwOCwgMTU4LCAyMjcsIDIzMywgMiwgMjE2LCAxNDEsIDIyNywgMjMzLCAyLCAKKyAgICAyNDcsIDczLCAyMjcsIDIzMywgMiwgMjI1LCA0OCwgMjI3LCAyMzMsIDIsIDIwMSwgMjEsIDIyNywgMjMzLCAxLCA2MiwgCisgICAgMjI3LCAyMzMsIDEsIDIzMywgMTksIDIyNywgMTgsIDIyNywgMjMzLCAxLCA3MCwgMjI3LCAyMzMsIDEsIDIyOCwgMTUxLCAKKyAgICAyMjcsIDIzMywgMSwgNjYsIDIyNywgMjMzLCAxLCAyMTYsIDIxMSwgMjQ3LCA0MywgMjI3LCAyMzMsIDEsIDIxOSwgMjU0LCAKKyAgICAyMjUsIDcsIDIyNywgMjMzLCAxLCAyMTksIDI1NCwgMjI1LCA4LCAyMTMsIDIwNSwgMjI3LCAyMzMsIDEsIDcyLCAyMjcsIAorICAgIDIzMywgMSwgMjUxLCAxNzYsIDIyNywgMjMzLCAxLCA3NCwgMjI3LCAyMzMsIDEsIDE2MSwgMjI3LCAyMzMsIDEsIDIyNywgCisgICAgMTA4LCAyMTEsIDI1MywgMjI3LCAyMzMsIDEsIDIyNywgMTA4LCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMzYsIDg5LCAyMjcsIAorICAgIDIzMywgMSwgMjM2LCA5MCwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjE5LCAyNTMsIDIyNywgMjMzLCAxLCAyNDcsIDE5MCwgCisgICAgMjI3LCAyMzMsIDEsIDI0NywgMTkxLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMjcsIDI0OCwgMjI3LCAyMzMsIDEsIDIxOCwgCisgICAgNjEsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIyNywgMjQ5LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDIxOCwgNjAsIDIyNywgCisgICAgMjMzLCAxLCAyMDQsIDI1MywgMjI3LCAyMzMsIDEsIDIwNCwgMjU0LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDI0MSwgMjIwLCAKKyAgICAyMjcsIDIzMywgMSwgMjQxLCAyMjEsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjIwLCAxNjIsIDIyMSwgMCwgMjI3LCAyMzMsIAorICAgIDEsIDIwNywgMzYsIDIyNywgMjMzLCAxLCAyMDcsIDM3LCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyNDIsIDU4LCAyMjcsIDIzMywgCisgICAgMSwgMjQyLCA1OSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAxODgsIDIyNywgMjMzLCAxLCAxNzIsIDIyNywgMjMzLCAxLCAKKyAgICAyMTYsIDIxMSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjQ5LCAxMzYsIDIyNywgMjMzLCAxLCAyNDksIDEzNywgMjIxLCAwLCAKKyAgICAyMjcsIDIzMywgMSwgMTc4LCAyMjcsIDIzMywgMSwgMTgzLCAyMjcsIDIzMywgMSwgMjEzLCAyNTIsIDIyNywgMjMzLCAxLCAKKyAgICAyMTMsIDI1MywgMjUxLCAxODYsIDIyNywgMjMzLCAxLCAxOTQsIDIyNywgMjMzLCAxLCAyMDEsIDExNCwgMjI3LCAyMzMsIDEsIAorICAgIDIxMiwgNjUsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIxMiwgNjUsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjEyLCA2NCwgCisgICAgMjI3LCAyMzMsIDEsIDE0NCwgMjI3LCAyMzMsIDIsIDI0NywgNzQsIDIwNiwgMTY5LCAyMjcsIDIzMywgMjIsIDIsIDIwNiwgCisgICAgMjI4LCAyMjcsIDIzMywgMjIsIDIsIDIwNSwgMTc5LCAyMjcsIDIzMywgMjIsIDIsIDIwMCwgMjEwLCAyMjcsIDIzMywgMjIsIAorICAgIDIsIDIwMCwgMjExLCAyMjIsIDUxLCAyMjcsIDIzMywgMjIsIDIsIDIwNywgMjM4LCAyMjcsIDIzMywgMjIsIDIsIDIwNywgCisgICAgMjM5LCAyMjIsIDM5LCAyMjcsIDIzMywgMjIsIDIsIDIwNiwgMjQ5LCAyMjcsIDIzMywgMjIsIDIsIDI0MSwgNiwgMjIwLCAKKyAgICAyNTUsIDIyNywgMjMzLCAyMiwgMiwgMjE2LCAzMCwgMjI3LCAyMzMsIDExMSwgMiwgMjI2LCAyMzYsIDIyNywgMjMzLCAxMTEsIAorICAgIDIsIDIxNiwgNDQsIDIyNywgMjMzLCAxMTEsIDIsIDI0NywgMTc1LCAyMjcsIDIzMywgMjE2LCAxNTQsIDIyNywgMjMzLCA0OSwgCisgICAgMjEzLCAxMjUsIDIyNywgMjMzLCA1MSwgMjEzLCAxMjUsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjUxLCA3OCwgMjI3LCAyMzMsIAorICAgIDIxNiwgMjAwLCAyMjIsIDIyMCwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMjQsIDI5LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIwMSwgCisgICAgMTQsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjE2LCAxNTUsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjI0LCAxNjgsIDIyNywgMjMzLCAKKyAgICAyMTYsIDIwMCwgMjI0LCAyMywgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIDIyOSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIAorICAgIDIzMCwgMjUxLCAyMjksIDIyNywgMjMzLCAyMTYsIDIwMCwgMjE1LCAxNDQsIDIyNywgMjMzLCAyMDQsIDE4NSwgMjE2LCAKKyAgICAyMDAsIDIxNSwgMTQ0LCAyMjcsIDIzMywgMjE2LCAxNTAsIDIyNywgMjMzLCAxNywgMTk5LCA4MSwgMjI3LCAyMzMsIDE3LCAKKyAgICAxMDIsIDIyNywgMjMzLCAxNywgMTA1LCAyMjcsIDIzMywgMTcsIDE0NywgMjI3LCAyMzMsIDE3LCAxNDksIDIyNywgMjMzLCAKKyAgICAxNywgMTY0LCAyMjcsIDIzMywgMTcsIDE4NywgMjI3LCAyMzMsIDE3LCAyMTAsIDEzNSwgMjI3LCAyMzMsIDE3LCAxOTIsIAorICAgIDIyNywgMjMzLCAxNywgMjE5LCAxMTMsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjA1LCAyMTUsIDIwNCwgMjAwLCAyMjcsIDIzMywgCisgICAgMjE2LCAyMDAsIDIyOCwgMjIsIDcxLCAxLCAyMTAsIDkwLCAyMzUsIDE5OSwgNzEsIDEsIDIxMCwgOTAsIDI0NywgMzcsIDcxLCAKKyAgICAxLCAyMTAsIDkwLCAyMjcsIDIxNSwgNzEsIDEsIDIxMCwgOTAsIDIxOSwgMjEsIDcxLCAxLCAyMTAsIDkwLCAyNDgsIDIwMCwgCisgICAgNzEsIDIsIDIxMCwgOTAsIDIxMSwgMjM5LCA3MSwgNjcsIDEsIDIxMCwgOTAsIDIxMywgMTY4LCA3MSwgMSwgNDYsIDIyNSwgCisgICAgMTQ4LCAyMTgsIDYwLCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzcsIDE5NSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjM2LCAKKyAgICA4OSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjM1LCAxOTksIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIyNywgMjQ4LCA3MSwgMSwgCisgICAgNDYsIDIyNSwgMTQ4LCAyMjcsIDIxNSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQxLCAyMjAsIDcxLCAxLCA0NiwgMjI1LCAKKyAgICAxNDgsIDI0MSwgMjA0LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMTksIDIxLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTk5LCAKKyAgICA4MSwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDEwMiwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDEwNSwgNzEsIDQ2LCAyMjUsIAorICAgIDE0OCwgMTcsIDE0NywgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDE0OSwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDE2NCwgNzEsIAorICAgIDQ2LCAyMjUsIDE0OCwgMTcsIDE4NywgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDIxMCwgMTM1LCA3MSwgNDYsIDIyNSwgMTQ4LCAKKyAgICAxNywgMTkyLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMjE5LCAxMTMsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIyNCwgMTM4LCAKKyAgICA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDIsIDU4LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDEsIDEwMCwgNzEsIDEsIDQ2LCAKKyAgICAyMjUsIDE0OCwgMjQ5LCAxMzYsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0OCwgMjAwLCAyNDcsIDMwLCAxLCA2MiwgMjQ3LCAKKyAgICAzMCwgMSwgNzAsIDI0NywgMzAsIDEsIDY2LCAyNDcsIDMwLCAxLCA3MiwgMjQ3LCAzMCwgMSwgMjUxLCAxNzYsIDI0NywgMzAsIAorICAgIDEsIDc0LCAyNDcsIDMwLCAxLCAxNjEsIDI0NywgMzAsIDEsIDIyNiwgMjA3LCAyNDcsIDMwLCAxLCAyMzYsIDg5LCAyNDcsIAorICAgIDMwLCAxLCAyMzUsIDE5OSwgMjQ3LCAzMCwgMSwgMjE5LCAxNjIsIDI0NywgMzAsIDEsIDIxOSwgMjUzLCAyNDcsIDMwLCAxLCAKKyAgICAyNDcsIDM3LCAyNDcsIDMwLCAxLCAyNDYsIDIzOCwgMjQ3LCAzMCwgMSwgMjI3LCAyNDgsIDI0NywgMzAsIDEsIDIyNywgCisgICAgMjE1LCAyNDcsIDMwLCAxLCAyMTksIDE1MiwgMjQ3LCAzMCwgMSwgMjE5LCAxNTQsIDI0NywgMzAsIDEsIDIxOSwgMTUzLCAKKyAgICAyNDcsIDMwLCAxLCAyMDcsIDM2LCAyNDcsIDMwLCAxLCAyMDYsIDEyMiwgMjQ3LCAzMCwgMSwgMjQyLCA1OCwgMjQ3LCAzMCwgCisgICAgMSwgMjQxLCAxMDAsIDI0NywgMzAsIDEsIDIxOCwgMTAyLCAyNDcsIDMwLCAxLCAxODgsIDI0NywgMzAsIDEsIDI0MSwgMjIwLCAKKyAgICAyNDcsIDMwLCAxLCAxNzIsIDI0NywgMzAsIDEsIDIxNSwgNDcsIDI0NywgMzAsIDEsIDIxNSwgMjQ1LCAyNDcsIDMwLCAxLCAKKyAgICAyNDksIDEzNiwgMjQ3LCAzMCwgMSwgMjQ4LCAyMDAsIDI0NywgMzAsIDEsIDIyMSwgMzMsIDI0NywgMzAsIDEsIDE3OCwgCisgICAgMjQ3LCAzMCwgMSwgMjQ5LCA0NCwgMjQ3LCAzMCwgMSwgMTgzLCAyNDcsIDMwLCAxLCAyMTMsIDI1MiwgMjQ3LCAzMCwgMSwgCisgICAgMTk0LCAyNDcsIDMwLCAxLCAyMDMsIDkwLCAyNDcsIDMwLCAxLCAyMDgsIDE3OSwgMjQ3LCAzMCwgMSwgMjEyLCA2NCwgMjQ3LCAKKyAgICAzMCwgMSwgMTQ0LCAyNDcsIDMwLCAyMiwgMiwgMjUyLCAxMzgsIDI0NywgMzAsIDIyLCAyLCA3MCwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAyNDcsIDMwLCAyMiwgMiwgMjM4LCAyMzQsIDI0NywgMzAsIDIyLCAyLCA2NiwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDIxNywgMTIxLCAyNDcsIDMwLCAyMiwgMiwgNzQsIDI0NywgMzAsIDIyLCAyLCAyNTEsIDE3NiwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDI1MCwgMTM5LCAyNDcsIDMwLCAyMiwgMiwgMjA0LCAzMSwgMjQ3LCAzMCwgMTExLCAyLCAxODMsIDI0NywgMzAsIDExMSwgMiwgCisgICAgMjEzLCAyNTIsIDI0NywgMzAsIDExMSwgMiwgMTk0LCAyNDcsIDMwLCAxMTEsIDIsIDIwMSwgMTE0LCAyNDcsIDMwLCAxLCAKKyAgICA0NywgMjI3LCAxMTgsIDI0NywgMzAsIDEsIDQ3LCAyMzYsIDE1NiwgMjQ3LCAzMCwgMSwgNDcsIDIxOSwgMjU1LCAyNDcsIAorICAgIDMwLCAxMTEsIDIsIDQ3LCAyMTksIDI1NSwgMjQ3LCAzMCwgMSwgNDcsIDI0NywgMzgsIDI0NywgMzAsIDEsIDQ3LCAyMDcsIAorICAgIDgzLCAyNDcsIDMwLCAxLCA0NywgMjIwLCAyMTQsIDI0NywgMzAsIDEsIDQ3LCAyMTYsIDIyNiwgMjQ3LCAzMCwgMSwgNDcsIAorICAgIDIwMCwgMTIzLCAyNDcsIDMwLCAxLCA0NywgMTQ2LCAyNDcsIDMwLCAxLCA0NywgMTU2LCAyNDcsIDMwLCAxLCA0NywgMjA4LCAKKyAgICAxODIsIDI0NywgMzAsIDExMSwgMiwgNDcsIDIyMywgMjQzLCAyNDcsIDMwLCAxMTEsIDIsIDQ3LCAyMzQsIDI0NywgMjQ3LCAKKyAgICAzMCwgMTcsIDE5OSwgODEsIDI0NywgMzAsIDE3LCAxMDIsIDI0NywgMzAsIDE3LCAxMDUsIDI0NywgMzAsIDE3LCAxNDcsIAorICAgIDI0NywgMzAsIDE3LCAxNDksIDI0NywgMzAsIDE3LCAxNjQsIDI0NywgMzAsIDE3LCAxODcsIDI0NywgMzAsIDE3LCAyMTAsIAorICAgIDEzNSwgMjQ3LCAzMCwgMTcsIDE5MiwgMjQ3LCAzMCwgMTcsIDIxOSwgMTEzLCAyNDcsIDMwLCAyMTQsIDIxMiwgMjA4LCAKKyAgICAyMTcsIDI0NywgMzAsIDIxNCwgMjEyLCAyNDIsIDEwLCAyNDcsIDMwLCAyMTQsIDIxMiwgNTMsIDI0MiwgMTAsIDI0NywgMzAsIAorICAgIDIxNCwgMjEyLCAyMDUsIDgzLCAyNDIsIDEwLCA3MSwgMSwgMjI2LCAyMDAsIDIzNiwgODksIDcxLCAxLCAyMjYsIDIwMCwgCisgICAgMjQ3LCAxOTAsIDcxLCAxLCAyMjYsIDIwMCwgMjQ3LCAzNywgNzEsIDEsIDIyNiwgMjAwLCAyMjcsIDI0OCwgNzEsIDEsIAorICAgIDIyNiwgMjAwLCAyMjcsIDIxNSwgNzEsIDEsIDIyNiwgMjAwLCAyMTgsIDYwLCA3MSwgMSwgMjI2LCAyMDAsIDIwNCwgMjUzLCAKKyAgICA3MSwgMSwgMjI2LCAyMDAsIDIwNCwgMjQxLCA3MSwgMSwgMjI2LCAyMDAsIDI0MSwgMjIwLCA3MSwgMSwgMjI2LCAyMDAsIAorICAgIDI0MSwgMjA0LCA3MSwgMSwgMjI2LCAyMDAsIDI0MSwgMTAwLCA3MSwgMSwgMjI2LCAyMDAsIDE4OCwgNzEsIDEsIDIyNiwgCisgICAgMjAwLCAyMTIsIDY0LCA3MSwgMSwgMjI2LCAyMDAsIDE0NCwgNzEsIDEsIDIyNiwgMjAwLCAyMzQsIDg0LCA3MSwgMSwgMjI2LCAKKyAgICAyMDAsIDIzNywgMTk1LCA3MSwgNjcsIDEsIDIyNiwgMjAwLCAyMTMsIDE2OCwgNzEsIDEsIDIyNiwgMjAwLCAyMDAsIDE4MSwgCisgICAgNzEsIDEsIDIyNiwgMjAwLCAxOTksIDExNCwgNzEsIDEsIDIyNiwgMjAwLCAyMTMsIDI1MiwgNzEsIDIyNCwgOTcsIDIyNiwgCisgICAgMjAwLCAyMTcsIDE0MywgNzEsIDIyNCwgOTcsIDIyNiwgMjAwLCAyMTQsIDExMCwgNzEsIDIyNCwgOTcsIDIyNiwgMjAwLCAKKyAgICAyMzQsIDYsIDcxLCAxNiwgMjUxLCAxNjMsIDIzOCwgNDIsIDcxLCAxNiwgMjUxLCAxNjMsIDEwMiwgNzEsIDE2LCAyNTEsIAorICAgIDE2MywgMTA1LCA3MSwgMSwgMjUxLCAxNjMsIDIxMywgMjUyLCA3MSwgMiwgMjE2LCAxMzcsIDIyNywgNDQsIDIwNSwgMTc0LCAKKyAgICA3MSwgMiwgNDYsIDIyNSwgMTQ4LCAyMDUsIDE3MiwgNzEsIDIsIDQ2LCAyMjUsIDE0OCwgMjA1LCAxNjksIDcxLCAxLCAyMDksIAorICAgIDE5OCwgMjE2LCAxODEsIDI0NywgMzcsIDcxLCAxLCAyMDksIDE5OCwgMjE2LCAxODEsIDIxMCwgMTE0LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgMjI2LCA4OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgODgsIDQ2LCAyMDIsIDIyNCwgMSwgCisgICAgMTI4LCAyMjYsIDE3OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjI2LCAKKyAgICAxODcsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjYsIDE4NywgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIzNSwgMTE2LCA0NiwgCisgICAgMjAyLCAyMjQsIDEsIDEyMiwgMjM1LCAxMTYsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTksIDE3OCwgNDYsIDIwMiwgMjI0LCAKKyAgICAxLCAxMjIsIDIxOSwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjQ2LCA5MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIAorICAgIDI0NiwgOTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDYsIDIxMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDI0NiwgMjEwLCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjA5LCAyOSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIwOSwgMjksIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCAyMTgsIDI2LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjE4LCAyNiwgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDI0MCwgMjExLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQwLCAyMTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAxMzgsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAxMzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjA2LCA2MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxOCwgMjQxLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgCisgICAgMjE4LCAyNDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDgsIDEyNCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDI0OCwgMTI0LCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjE1LCAxMDYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTUsIDEwNiwgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDIxNSwgMjE3LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjE1LCAyMTcsIDQ2LCAyMDIsIDIyNCwgMSwgCisgICAgMTI4LCAyMzcsIDEzLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjM3LCAxMywgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIyMSwgCisgICAgMTM2LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjIxLCAxMzYsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAxOTksIDI0NSwgNDYsIAorICAgIDIwMiwgMjI0LCAxLCAxMjIsIDE5OSwgMjQ1LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjEzLCAxLCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjEzLCAxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjI0LCAxMTAsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAKKyAgICAyMjQsIDExMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIwMiwgMTkzLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjAyLCAxOTMsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMzMsIDIwNywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIzMywgMjA3LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgNzQsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCA3NCwgNDYsIDIwMiwgMjI0LCAyMjIsIDE5OSwgMjI3LCAKKyAgICA2NCwgNDYsIDIwMiwgMjI0LCAyMiwgMjUyLCAxMzgsIDQ2LCAyMDIsIDIyNCwgMjIsIDcwLCA0NiwgMjAyLCAyMjQsIDIyLCAKKyAgICAyMDQsIDMxLCA0NiwgMjAyLCAyMjQsIDIyLCA2NiwgNDYsIDIwMiwgMjI0LCAyMiwgNzIsIDQ2LCAyMDIsIDIyNCwgMjIsIAorICAgIDc0LCA0NiwgMjAyLCAyMjQsIDIyMiwgMTk5LCAyMjYsIDE4MSwgNDYsIDIwMiwgMjI0LCAyMiwgMjMyLCAyNDAsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMjIsIDIwNCwgMzAsIDQ2LCAyMDIsIDIyNCwgMjIsIDIwNCwgNDYsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MCwgCisgICAgMTM3LCA0NiwgMjAyLCAyMjQsIDIyLCAyNTAsIDExMiwgNDYsIDIwMiwgMjI0LCAyMiwgMjUxLCA4NSwgNDYsIDIwMiwgMjI0LCAKKyAgICAyMiwgMjUxLCAxMDEsIDQ2LCAyMDIsIDIyNCwgMTUwLCAyMjIsIDE5OSwgMjM4LCAyMTYsIDQ2LCAyMDIsIDIyNCwgMTUwLCAKKyAgICAyMjIsIDE5OSwgMjE4LCAxMDEsIDQ2LCAyMDIsIDIyNCwgMTUwLCAyMjIsIDE5OSwgMjA2LCA2MSwgNDYsIDIwMiwgMjI0LCAKKyAgICAxNTAsIDIyMiwgMTk5LCAyMDksIDEyLCA0NiwgMjAyLCAyMjQsIDE2LCAyMjYsIDcxLCA0NiwgMjAyLCAyMjQsIDE2LCAyMTgsIAorICAgIDEwMSwgNDYsIDIwMiwgMjI0LCAxNiwgMjEyLCAyMywgNDYsIDIwMiwgMjI0LCAxNiwgMjMzLCAyMDgsIDIzMywgMjAyLCA0NiwgCisgICAgMjAyLCAyMjQsIDE2LCAyMjYsIDgxLCAyMjYsIDgwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgNzIsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCA3NCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0NywgMzcsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTgsIDYwLCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA0LCAyNTMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDQsIDI0MSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDEsIDI0MSwgMjIwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCAyMDQsIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyMTksIDIxLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEwLCAxMTQsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDgsIAorICAgIDE3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMjgsIDE1MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDMsIAorICAgIDE4MiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTIsIDEwMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTAsIAorICAgIDEzOSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTIsIDk1LCAyMjIsIDU4LCAyMjIsIDExNywgMjQ2LCAyNTMsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAyNTEsIDE4MiwgMjI2LCAxNzAsIDIyMiwgNTgsIDIyMiwgMTE3LCAyNTEsIDYyLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgNSwgMjEzLCAxMzAsIDgxLCAyMjIsIDU4LCAyMjIsIDExNywgMjAwLCAyMzgsIDIxMywgMTMwLCA4MSwgCisgICAgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDIsIDIwMywgMjIyLCA1OCwgMjIyLCAxMTcsIDIwMiwgMjA4LCAzNCwgNSwgCisgICAgMjA0LCAyMzQsIDM0LCA1LCAyMDQsIDIzNywgMzQsIDUsIDIwNCwgMjQwLCAzNCwgNSwgMjA0LCAyMzgsIDM0LCA1LCAyMDQsIAorICAgIDIzOSwgMzQsIDUsIDIwNCwgMjM2LCAzNCwgNSwgMjQxLCAxOTgsIDM0LCA1LCAyNDEsIDIwMCwgMzQsIDUsIDI0MSwgMjAzLCAKKyAgICAzNCwgNSwgMjQxLCAyMDEsIDM0LCA1LCAyNDEsIDIwMiwgMzQsIDUsIDI0MSwgMTk5LCAzNCwgNSwgMjM5LCA4MCwgMzQsIDUsIAorICAgIDIzOSwgODQsIDM0LCA1LCAyMzksIDkyLCAzNCwgNSwgMjM5LCA4OSwgMzQsIDUsIDIzOSwgOTAsIDM0LCA1LCAyMzksIDgxLCAKKyAgICAzNCwgNSwgMjQ3LCA5MCwgMzQsIDUsIDI0NywgODQsIDM0LCA1LCAyNDcsIDg2LCAzNCwgNSwgMjQ3LCA4OSwgMzQsIDUsIAorICAgIDI0NywgODcsIDM0LCA1LCAyNDcsIDg4LCAzNCwgNSwgMjQ3LCA4NSwgMzQsIDUsIDI0OSwgNDQsIDM0LCA1LCAyNDksIDIzLCAKKyAgICAzNCwgNSwgMjQ5LCAzNSwgMzQsIDUsIDI0OSwgNDMsIDM0LCA1LCAyNDksIDM4LCAzNCwgNSwgMjQ5LCAzOSwgMzQsIDUsIAorICAgIDI0OSwgMjcsIDgsIDQsIDEsIDI0OSwgNzEsIDI1MSwgMTEyLCA4LCA0LCAxLCAzNSwgMjEzLCAxMDMsIDgsIDQsIDEsIDI0OCwgCisgICAgMTQwLCA3MiwgOCwgNCwgMSwgMjQ5LCA3MSwgNzIsIDgsIDQsIDEsIDE5NywgMywgMjM3LCAyNiwgOCwgNCwgMSwgMjI0LCAKKyAgICAyNDksIDIzOCwgNSwgOCwgNCwgMSwgMTM1LCAyMzYsIDE1NywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICAyMjgsIDUwLCAyMjUsIDQ3LCAyMTIsIDEyMiwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDUzLCAxMDEsIDIwNSwgMjQwLCA4LCAKKyAgICA0LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyMTMsIDI2LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIAorICAgIDIyMCwgMjE1LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjM4LCAxNjYsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyNDgsIDE0MCwgCisgICAgNzQsIDgsIDQsIDEsIDI0OCwgMTQwLCAxNjMsIDMsIDk3LCA4LCA0LCAxLCAxNzYsIDE2MywgMywgOTcsIDgsIDQsIDEsIAorICAgIDIyOCwgNTAsIDIxNywgMTIxLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE3LCAxMjIsIDMsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgCisgICAgMjE3LCAxMjIsIDMsIDIzMywgMTc3LCA5NywgOCwgNCwgMSwgMjA0LCAxODUsIDE2MywgMjE3LCA0OSwgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDE2MywgMjE3LCA1MCwgMywgOTcsIDgsIDQsIDEsIDIwOCwgODEsIDE0NiwgOCwgMSwgNCwgNiwgMjE0LCAzMywgMywgCisgICAgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDIxNCwgMzMsIDIwMSwgMywgMjM0LCAxNzcsIDgsIDQsIDEsIDUzLCAxNDYsIDgsIDQsIAorICAgIDEsIDIxNCwgMzMsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCA1MywgMjE0LCAzMywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDEzNSwgCisgICAgMTQ2LCA4LCA0LCAxLCAxMzUsIDIxNCwgMzMsIDMsIDIxMywgMjYsIDgsIDQsIDEsIDI0OSwgNjIsIDIzOCwgOTQsIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjA5LCAyNTAsIDUxLCAyMjUsIDE2LCA4LCA0LCAxLCAxMDgsIDI0OSwgNzcsIDMsIDIwOSwgMjUwLCA1MSwgCisgICAgMjI1LCAxNiwgOCwgNCwgMSwgMjA0LCAyMywgOCwgNCwgMSwgMjA0LCAxODUsIDIwNCwgMjMsIDgsIDQsIDEsIDEwOCwgMywgCisgICAgNDksIDExNywgOCwgNCwgMSwgMjQ2LCAyMzYsIDgsIDQsIDEsIDI0NiwgMjM3LCAzLCAxMjgsIDUxLCAyMTMsIDI2LCA4LCA0LCAKKyAgICAxLCAyNDYsIDIzNywgMywgMTI4LCA0OSwgMjEwLCAxNDksIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxMjgsIDUxLCAyMTMsIAorICAgIDI2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCA0OSwgMjI1LCAxNiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDE2OCwgCisgICAgNDksIDIyNSwgMTcsIDI2LCAxMjgsIDUxLCAyMTMsIDI2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCA0OSwgMjI1LCAKKyAgICAxNywgMywgMjEwLCAxNDksIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMDksIDI1MCwgNTEsIDIyNSwgMTYsIDY3LCAyNDgsIAorICAgIDU4LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA2NywgMSwgNCwgMjM0LCAxMDMsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMjI4LCAKKyAgICA1MCwgMjI1LCA0NywgMjEyLCAxMjIsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMTAxLCAyMDUsIDI0MCwgNjcsIDEsIDQsIAorICAgIDEwOCwgMywgNDksIDExNywgOCwgNCwgMSwgMjEyLCAzOSwgMjAwLCA2NSwgOCwgNCwgMSwgMjI4LCAzOSwgNzIsIDgsIDQsIAorICAgIDEsIDE3NiwgMjE3LCAxMjEsIDgsIDQsIDEsIDIwMywgMjMyLCA4LCA0LCAxLCAyMjgsIDUwLCAyNTEsIDExMiwgMzEsIDEsIAorICAgIDQsIDYsIDIxNywgODMsIDkxLCA0LCAxLCA2MiwgOTEsIDQsIDEsIDcyLCA5MSwgNCwgMSwgNzAsIDkxLCA0LCAxLCA3NCwgCisgICAgOTEsIDQsIDEsIDY2LCA5MSwgNCwgMSwgMjAzLCAxNjgsIDkxLCA0LCAxLCAyMzYsIDg5LCA5MSwgNCwgMSwgMTYxLCA5MSwgCisgICAgNCwgMSwgMjM2LCAxNSwgOTEsIDQsIDEsIDIzNSwgMTYxLCA5MSwgNCwgMSwgMjM1LCAxMTYsIDkxLCA0LCAxLCAyMzUsIDUwLCAKKyAgICA5MSwgNCwgMSwgMjM1LCAxMiwgOTEsIDQsIDEsIDE0NCwgOTEsIDQsIDEsIDIzNCwgMTM5LCA5MSwgNCwgMSwgMjM0LCA3NSwgCisgICAgOTEsIDQsIDEsIDIzMywgMjA3LCA5MSwgNCwgMSwgMjMzLCA5NywgOTEsIDQsIDEsIDIzMywgNjksIDkxLCA0LCAxLCAxOTQsIAorICAgIDkxLCA0LCAxLCAyMjUsIDQwLCA5MSwgNCwgMSwgMjI0LCAyMTAsIDkxLCA0LCAxLCAyMjQsIDExMCwgOTEsIDQsIDEsIDIyNCwgCisgICAgNDIsIDkxLCA0LCAxLCAyMjQsIDExLCA5MSwgNCwgMSwgMTc4LCA5MSwgNCwgMSwgMjIyLCA3NiwgOTEsIDQsIDEsIDIyMSwgCisgICAgMjExLCA5MSwgNCwgMSwgMjIxLCAxMzYsIDkxLCA0LCAxLCAyMjEsIDQxLCA5MSwgNCwgMSwgMTg4LCA5MSwgNCwgMSwgMjMzLCAKKyAgICAyMzEsIDkxLCA0LCAxLCAyMjAsIDE0NCwgOTEsIDQsIDEsIDIyMCwgMzQsIDkxLCA0LCAxLCAyMTksIDE1MCwgOTEsIDQsIDEsIAorICAgIDIxOCwgMjQxLCA5MSwgNCwgMSwgMjE4LCAxMzMsIDkxLCA0LCAxLCAyMTgsIDcxLCA5MSwgNCwgMSwgMjE0LCA5NiwgOTEsIAorICAgIDQsIDEsIDIxNCwgODIsIDkxLCA0LCAxLCAyMTQsIDc1LCA5MSwgNCwgMSwgMjE0LCA2NiwgOTEsIDQsIDEsIDIxNCwgNTUsIAorICAgIDkxLCA0LCAxLCAyMTQsIDUzLCA5MSwgNCwgMSwgMjEyLCA2NCwgOTEsIDQsIDEsIDIxMiwgMTIyLCA5MSwgNCwgMSwgMjExLCAKKyAgICAyMDIsIDkxLCA0LCAxLCAyMDksIDE4MiwgOTEsIDQsIDEsIDIwOSwgMjksIDkxLCA0LCAxLCAyMDgsIDI0LCA5MSwgNCwgMSwgCisgICAgMjA3LCAxOTEsIDkxLCA0LCAxLCAyNDIsIDU4LCA5MSwgNCwgMSwgMjA3LCAzNiwgOTEsIDQsIDEsIDI0MSwgMTc1LCA5MSwgCisgICAgNCwgMSwgMjA2LCAyMDEsIDkxLCA0LCAxLCAyNDEsIDc2LCA5MSwgNCwgMSwgMjA2LCAxNSwgOTEsIDQsIDEsIDI0MCwgMjExLCAKKyAgICA5MSwgNCwgMSwgMjM5LCAxMzcsIDkxLCA0LCAxLCAyMzksIDEwNywgOTEsIDQsIDEsIDI0MCwgMjIyLCA5MSwgNCwgMSwgCisgICAgMjA1LCAyMDMsIDkxLCA0LCAxLCAyMDUsIDIwMiwgOTEsIDQsIDEsIDIwNSwgMTkxLCA5MSwgNCwgMSwgMjA1LCAxOTAsIDkxLCAKKyAgICA0LCAxLCAyMDUsIDE4OSwgOTEsIDQsIDEsIDIwNSwgMTg4LCA5MSwgNCwgMSwgMjA1LCAzMiwgOTEsIDQsIDEsIDIwNSwgMjYsIAorICAgIDkxLCA0LCAxLCAyMDUsIDExLCA5MSwgNCwgMSwgMjA1LCA5LCA5MSwgNCwgMSwgMjA1LCA1LCA5MSwgNCwgMSwgMjA1LCA0LCAKKyAgICA5MSwgNCwgMSwgMjAxLCAxMTQsIDkxLCA0LCAxLCAyMDEsIDY0LCA5MSwgNCwgMSwgMjAxLCAzMSwgOTEsIDQsIDEsIDIwMSwgCisgICAgMCwgOTEsIDQsIDEsIDIwMCwgMjE2LCA5MSwgNCwgMSwgMjAwLCAyMDMsIDkxLCA0LCAxLCAxODMsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCAyMjYsIDc4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEyLCAyMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIAorICAgIDIyNSwgMTQ5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjIxLCAxNDcsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAxNzIsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAxODgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDYsIDIyOCwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDIwNSwgMjQyLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjI2LCAxNzMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTksIAorICAgIDE2OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNiwgNTMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDEsIDEwOCwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDIwMCwgNzUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzMsIDg5LCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMSwgMjA0LCA1LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgNzAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTUsIDIzOSwgCisgICAgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI1MCwgMTUwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjM1LCAxMDksIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAxLCAyMjcsIDIxMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxMywgMjI5LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjQ5LCAxMzYsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjcsIDE5OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0MSwgCisgICAgMzMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzUsIDE2OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0MSwgNzgsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAyNDgsIDE5OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyNiwgNzksIDIyNCwgNzksIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAyMjUsIDE1MCwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyMSwgMTQ4LCAyMjQsIAorICAgIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE2LCAyMTEsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjAsIAorICAgIDE2MiwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNSwgMjQzLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjE5LCAxNjksIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzMsIDE5LCAyMjQsIDc5LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMjIsIDIsIDIxNywgNzYsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjI4LCAxMTUsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjUxLCA4MywgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDAsIDQwLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMjIsIDIsIDIwOSwgMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDQsIDIsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAyMiwgMiwgMjQ2LCAyNTEsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjE4LCA4NiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDI0NiwgMjUyLCAyMjIsIDU4LCAyMjIsIDExNywgMjI0LCAyNiwgMjI4LCAxLCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMjUxLCAyLCAyMjgsIDEsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTk5LCA4MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAKKyAgICAxMDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTA1LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE0NywgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDE3LCAxNDksIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTY0LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIAorICAgIDE4NywgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAyMTAsIDEzNSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxOTIsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxNywgMjE5LCAxMTMsIDI5LCAxODEsIDIxNywgMjIzLCAyOSwgMTgxLCAyMTcsIDIyOCwgMjksIAorICAgIDE4MSwgMTk5LCAyNDQsIDI5LCAxODEsIDE5OSwgMjQzLCAyOSwgMTgxLCAxOTksIDI0MiwgMjksIDE4MSwgMjA0LCA5NiwgCisgICAgMjksIDE4MSwgMjA0LCAxMDAsIDI5LCAxODEsIDE5OSwgMjA5LCAyOSwgMTgxLCAxOTksIDIwNSwgMjksIDE4MSwgMjM4LCAKKyAgICA2OCwgMjksIDE4MSwgMjM4LCA2NiwgMjksIDE4MSwgMjM4LCA2NywgMjksIDE4MSwgMjM4LCA2NCwgMjksIDE4MSwgMjMzLCAKKyAgICA5LCAyOSwgMTgxLCAyMzMsIDgsIDI5LCAxODEsIDIzMywgNiwgMjksIDE4MSwgMjMzLCA3LCAyOSwgMTgxLCAyMzMsIDEyLCAKKyAgICAyOSwgMTgxLCAyMzMsIDUsIDI5LCAxODEsIDIzMywgNCwgMjksIDE4MSwgMjMzLCAxNCwgMjksIDE4MSwgMjUwLCAyNDQsIAorICAgIDI5LCAxODEsIDI1MCwgMjQzLCAyOSwgMTEwLCAyMTksIDEzNiwgMjksIDExMCwgMjE5LCAxNDIsIDI5LCAxMTAsIDIwOCwgCisgICAgMTYwLCAyOSwgMTEwLCAyMDgsIDE1OSwgMjksIDExMCwgMjA1LCAyNDgsIDI5LCAxMTAsIDIwNSwgMjQ2LCAyOSwgMTEwLCAKKyAgICAyMDUsIDI0NSwgMjksIDExMCwgMjA1LCAyNTEsIDI5LCAxMTAsIDIwNSwgMjUyLCAyOSwgMTEwLCAyMDUsIDI0NCwgMjksIAorICAgIDExMCwgMjEzLCA1NywgMjksIDExMCwgMjEzLCA3MiwgMjksIDExMCwgMjA4LCAxNjYsIDI5LCAxMTAsIDIxMywgNjksIDI5LCAKKyAgICAxMTAsIDIxMywgNTksIDI5LCAxMTAsIDIxMywgNjEsIDI5LCAxMTAsIDIxMywgNDgsIDI5LCAxMTAsIDIxMywgNDksIDI5LCAKKyAgICAxMTAsIDIyNywgNTAsIDI5LCAxMTAsIDIyMSwgMTkyLCAyOSwgMTEwLCAyMjEsIDE4NiwgMjksIDExMCwgMjA4LCAxNzAsIAorICAgIDI5LCAxMTAsIDIyMSwgMTg5LCAyOSwgMTEwLCAyMjEsIDE5NSwgMjksIDExMCwgMjE1LCAxNzEsIDI5LCAxMTAsIDIxNSwgCisgICAgMTgwLCAyOSwgMTEwLCAyMTUsIDE4NCwgMjksIDExMCwgMjA4LCAxNjgsIDI5LCAxMTAsIDIxNSwgMTc0LCAyOSwgMTEwLCAKKyAgICAyMTUsIDE4OCwgMjksIDExMCwgMjE1LCAxODksIDI5LCAxMTAsIDIwOSwgMTIxLCAyOSwgMTEwLCAyMDksIDEyNCwgMjksIAorICAgIDExMCwgMjA4LCAxNjQsIDI5LCAxMTAsIDIwOCwgMTYyLCAyOSwgMTEwLCAyMDksIDExOSwgMjksIDExMCwgMjA5LCAxMjcsIAorICAgIDI5LCAxMTAsIDIwOSwgMTI4LCAyOSwgMTEwLCAyMDksIDExMywgMjksIDExMCwgMjA5LCAxMjYsIDI5LCAxMTAsIDIxNiwgCisgICAgMTQ0LCAyOSwgMTEwLCAyMTYsIDE0NSwgMjksIDExMCwgMjAwLCAyNiwgMjksIDExMCwgMjAwLCAyNywgMjksIDExMCwgMjQ2LCAKKyAgICAxNjYsIDI5LCAxMTAsIDI0NiwgMTY1LCAyOSwgMTEwLCAyMDgsIDE3NSwgMjksIDExMCwgMjE1LCAyMjQsIDI5LCAxMTAsIAorICAgIDIxNSwgMjIzLCAxMiwgMTUsIDIzMCwgMTQyLCAxMiwgMTUsIDIzMCwgMTQxLCAxMiwgMTUsIDIzMCwgMTQwLCAxMiwgMTUsIAorICAgIDIzMCwgMTM5LCAxMiwgMTUsIDIzMCwgMTM4LCAxMiwgMTUsIDIzMCwgMTM3LCAxMiwgMTUsIDIzMCwgMTM2LCAxMiwgMTUsIAorICAgIDIzMCwgMTM1LCAxMiwgMTUsIDIzMCwgMTM0LCAxMiwgMTUsIDIzMCwgMTMzLCAxMiwgMTUsIDIzMCwgMTMyLCAxMiwgMTUsIAorICAgIDIzMCwgMTMxLCAxMiwgMTUsIDIzMCwgMTMwLCAxMiwgMTUsIDIzMCwgMTI5LCAxMiwgMTUsIDIzMCwgMTI4LCAxMiwgMTUsIAorICAgIDIzMCwgMTI3LCAxMiwgMTUsIDIzMCwgMTI2LCAxMiwgMTUsIDIzMCwgMTI1LCAxMiwgMTUsIDIzMCwgMTI0LCAxMiwgMTUsIAorICAgIDIzMCwgMTIzLCAxMiwgMTUsIDIzMCwgMTIyLCAxMiwgMTUsIDIzMCwgMTIxLCAxMiwgMTUsIDIzMCwgMTIwLCAxMiwgMTUsIAorICAgIDIzMCwgMTE5LCAxMiwgMTUsIDIzMCwgMTE4LCAxMiwgMTUsIDIzMCwgMTE3LCAxMiwgMTUsIDIzMCwgMTE2LCAxMiwgMTUsIAorICAgIDIzMCwgMTE1LCAxMiwgMTUsIDIzMCwgMTE0LCAxMiwgMTUsIDIzMCwgMTEzLCAxMiwgMTUsIDIzMCwgMTEyLCAxMiwgMTUsIAorICAgIDIzMCwgMTExLCAxMiwgMTUsIDIzMCwgMTEwLCAxMiwgMTUsIDIzMCwgMTA5LCAxMiwgMTUsIDIzMCwgMTA4LCAxMiwgMTUsIAorICAgIDIzMCwgMTA3LCAxMiwgMTUsIDIzMCwgMTA2LCAxMiwgMTUsIDIzMCwgMTA1LCAxMiwgMTUsIDIzMCwgMTA0LCAxMiwgMTUsIAorICAgIDIzMCwgMTAzLCAxMiwgMTUsIDIzMCwgMTAyLCAxMiwgMTUsIDIzMCwgMTAxLCAxMiwgMTUsIDIzMCwgMTAwLCAxMiwgMTUsIAorICAgIDIzMCwgOTksIDEyLCAxNSwgMjMwLCA5OCwgMTIsIDE1LCAyMzAsIDk3LCAxMiwgMTUsIDIzMCwgOTYsIDEyLCAxNSwgMjMwLCAKKyAgICA5NSwgMTIsIDE1LCAyMzAsIDk0LCAxMiwgMTUsIDIzMCwgOTMsIDEyLCAxNSwgMjMwLCA5MiwgMTIsIDE1LCAyMzAsIDkxLCAKKyAgICAxMiwgMTUsIDIzMCwgOTAsIDEyLCAxNSwgMjMwLCA4OSwgMTIsIDE1LCAyMzAsIDg4LCAxMiwgMTUsIDIzMCwgODcsIDEyLCAKKyAgICAxNSwgMjMwLCA4NiwgMTIsIDE1LCAyMzAsIDg1LCAxMiwgMTUsIDIzMCwgODQsIDEyLCAxNSwgMjMwLCA4MywgMTIsIDE1LCAKKyAgICAyMzAsIDgyLCAxMiwgMTUsIDIzMCwgODEsIDEyLCAxNSwgMjMwLCA4MCwgMTIsIDE1LCAyMzAsIDc5LCAxMiwgMTUsIDIzMCwgCisgICAgNzgsIDEyLCAxNSwgMjMwLCA3NywgMTIsIDE1LCAyMzAsIDc2LCAxMiwgMTUsIDIzMCwgNzUsIDEyLCAxNSwgMjMwLCA3NCwgCisgICAgMTIsIDE1LCAyMzAsIDczLCAxMiwgMTUsIDIzMCwgNzIsIDEyLCAxNSwgMjMwLCA3MSwgMTIsIDE1LCAyMzAsIDcwLCAxMiwgCisgICAgMTUsIDIzMCwgNjksIDEyLCAxNSwgMjMwLCA2OCwgMTIsIDE1LCAyMzAsIDY3LCAxMiwgMTUsIDIzMCwgNjYsIDEyLCAxNSwgCisgICAgMjMwLCA2NSwgMTIsIDE1LCAyMzAsIDY0LCAxMiwgMTUsIDIzMCwgNjMsIDEyLCAxNSwgMjMwLCA2MiwgMTIsIDE1LCAyMzAsIAorICAgIDYxLCAxMiwgMTUsIDIzMCwgNjAsIDEyLCAxNSwgMjMwLCA1OSwgMTIsIDE1LCAyMzAsIDU4LCAxMiwgMTUsIDIzMCwgNTcsIAorICAgIDEyLCAxNSwgMjMwLCA1NiwgMTIsIDE1LCAyMzAsIDU1LCAxMiwgMTUsIDIzMCwgNTQsIDEyLCAxNSwgMjMwLCA1MywgMTIsIAorICAgIDE1LCAyMzAsIDUyLCAxMiwgMTUsIDIzMCwgNTEsIDEyLCAxNSwgMjMwLCA1MCwgMTIsIDE1LCAyMzAsIDQ5LCAxMiwgMTUsIAorICAgIDIzMCwgNDgsIDEyLCAxNSwgMjMwLCA0NywgMTIsIDE1LCAyMzAsIDQ2LCAxMiwgMTUsIDIzMCwgNDUsIDEyLCAxNSwgMjMwLCAKKyAgICA0NCwgMTIsIDE1LCAyMzAsIDQzLCAxMiwgMTUsIDIzMCwgNDIsIDEyLCAxNSwgMjMwLCA0MSwgMTIsIDE1LCAyMzAsIDQwLCAKKyAgICAxMiwgMTUsIDIzMCwgMzksIDEyLCAxNSwgMjMwLCAzOCwgMTIsIDE1LCAyMzAsIDM3LCAxMiwgMTUsIDIzMCwgMzYsIDEyLCAKKyAgICAxNSwgMjMwLCAzNSwgMTIsIDE1LCAyMzAsIDM0LCAxMiwgMTUsIDIzMCwgMzMsIDEyLCAxNSwgMjMwLCAzMiwgMTIsIDE1LCAKKyAgICAyMzAsIDMxLCAxMiwgMTUsIDIzMCwgMzAsIDEyLCAxNSwgMjMwLCAyOSwgMTIsIDE1LCAyMzAsIDI4LCAxMiwgMTUsIDIzMCwgCisgICAgMjcsIDEyLCAxNSwgMjMwLCAyNiwgMTIsIDE1LCAyMzAsIDI1LCAxMiwgMTUsIDIzMCwgMjQsIDEyLCAxNSwgMjMwLCAyMywgCisgICAgMTIsIDE1LCAyMzAsIDIyLCAxMiwgMTUsIDIzMCwgMjEsIDEyLCAxNSwgMjMwLCAyMCwgMTIsIDE1LCAyMzAsIDE5LCAxMiwgCisgICAgMTUsIDIzMCwgMTgsIDEyLCAxNSwgMjMwLCAxNywgMTIsIDE1LCAyMzAsIDE2LCAxMiwgMTUsIDIzMCwgMTUsIDEyLCAxNSwgCisgICAgMjMwLCAxNCwgMTIsIDE1LCAyMzAsIDEzLCAxMiwgMTUsIDIzMCwgMTIsIDEyLCAxNSwgMjMwLCAxMSwgMTIsIDE1LCAyMzAsIAorICAgIDEwLCAxMiwgMTUsIDIzMCwgOSwgMTIsIDE1LCAyMzAsIDgsIDEyLCAxNSwgMjMwLCA3LCAxMiwgMTUsIDIzMCwgNiwgMTIsIAorICAgIDE1LCAyMzAsIDUsIDEyLCAxNSwgMjMwLCA0LCAxMiwgMTUsIDIzMCwgMywgMTIsIDE1LCAyMzAsIDIsIDEyLCAxNSwgMjMwLCAKKyAgICAxLCAxMiwgMTUsIDIzMCwgMCwgMTIsIDE1LCAyMjksIDI1NSwgMTIsIDE1LCAyMjksIDI1NCwgMTIsIDE1LCAyMjksIDI1MywgCisgICAgMTIsIDE1LCAyMjksIDI1MiwgMTIsIDE1LCAyMjksIDI1MSwgMTIsIDE1LCAyMjksIDI1MCwgMTIsIDE1LCAyMjksIDI0OSwgCisgICAgMTIsIDE1LCAyMjksIDI0OCwgMTIsIDE1LCAyMjksIDI0NywgMTIsIDE1LCAyMjksIDI0NiwgMTIsIDE1LCAyMjksIDI0NSwgCisgICAgMTIsIDE1LCAyMjksIDI0NCwgMTIsIDE1LCAyMjksIDI0MywgMTIsIDE1LCAyMjksIDI0MiwgMTIsIDE1LCAyMjksIDI0MSwgCisgICAgMTIsIDE1LCAyMjksIDI0MCwgMTIsIDE1LCAyMjksIDIzOSwgMTIsIDE1LCAyMjksIDIzOCwgMTIsIDE1LCAyMjksIDIzNywgCisgICAgMTIsIDE1LCAyMjksIDIzNiwgMTIsIDE1LCAyMjksIDIzNSwgMTIsIDE1LCAyMjksIDIzNCwgMTIsIDE1LCAyMjksIDIzMywgCisgICAgMTIsIDE1LCAyMjksIDIzMiwgMTIsIDE1LCAyMjksIDIzMSwgMTIsIDE1LCAyMjksIDIzMCwgMTIsIDE1LCAyMjksIDIyOSwgCisgICAgMTIsIDE1LCAyMjksIDIyOCwgMTIsIDE1LCAyMjksIDIyNywgMTIsIDE1LCAyMjksIDIyNiwgMTIsIDE1LCAyMjksIDIyNSwgCisgICAgMTIsIDE1LCAyMjksIDIyNCwgMTIsIDE1LCAyMjksIDIyMywgMTIsIDE1LCAyMjksIDIyMiwgMTIsIDE1LCAyMjksIDIyMSwgCisgICAgMTIsIDE1LCAyMjksIDIyMCwgMTIsIDE1LCAyMjksIDIxOSwgMTIsIDE1LCAyMjksIDIxOCwgMTIsIDE1LCAyMjksIDIxNywgCisgICAgMTIsIDE1LCAyMjksIDIxNiwgMTIsIDE1LCAyMjksIDIxNSwgMTIsIDE1LCAyMjksIDIxNCwgMTIsIDE1LCAyMjksIDIxMywgCisgICAgMTIsIDE1LCAyMjksIDIxMiwgMTIsIDE1LCAyMjksIDIxMSwgMTIsIDE1LCAyMjksIDIxMCwgMTIsIDE1LCAyMjksIDIwOSwgCisgICAgMTIsIDE1LCAyMjksIDIwOCwgMTIsIDE1LCAyMjksIDIwNywgMTIsIDE1LCAyMjksIDIwNiwgMTIsIDE1LCAyMjksIDIwNSwgCisgICAgMTIsIDE1LCAyMjksIDIwNCwgMTIsIDE1LCAyMjksIDIwMywgMTIsIDE1LCAyMjksIDIwMiwgMTIsIDE1LCAyMjksIDIwMSwgCisgICAgMTIsIDE1LCAyMjksIDIwMCwgMTIsIDE1LCAyMjksIDE5OSwgMTIsIDE1LCAyMjksIDE5OCwgMTIsIDE1LCAyMjksIDE5NywgCisgICAgMTIsIDE1LCAyMjksIDE5NiwgMTIsIDE1LCAyMjksIDE5NSwgMTIsIDE1LCAyMjksIDE5NCwgMTIsIDE1LCAyMjksIDE5MywgCisgICAgMTIsIDE1LCAyMjksIDE5MiwgMTIsIDE1LCAyMjksIDE5MSwgMTIsIDE1LCAyMjksIDE5MCwgMTIsIDE1LCAyMjksIDE4OSwgCisgICAgMTIsIDE1LCAyMjksIDE4OCwgMTIsIDE1LCAyMjksIDE4NywgMTIsIDE1LCAyMjksIDE4NiwgMTIsIDE1LCAyMjksIDE4NSwgCisgICAgMTIsIDE1LCAyMjksIDE4NCwgMTIsIDE1LCAyMjksIDE4MywgMTIsIDE1LCAyMjksIDE4MiwgMTIsIDE1LCAyMjksIDE4MSwgCisgICAgMTIsIDE1LCAyMjksIDE4MCwgMTIsIDE1LCAyMjksIDE3OSwgMTIsIDE1LCAyMjksIDE3OCwgMTIsIDE1LCAyMjksIDE3NywgCisgICAgMTIsIDE1LCAyMjksIDE3NiwgMTIsIDE1LCAyMjksIDE3NSwgMTIsIDE1LCAyMjksIDE3NCwgMTIsIDE1LCAyMjksIDE3MywgCisgICAgMTIsIDE1LCAyMjksIDE3MiwgMTIsIDE1LCAyMjksIDE3MSwgMTIsIDE1LCAyMjksIDE3MCwgMTIsIDE1LCAyMjksIDE2OSwgCisgICAgMTIsIDE1LCAyMjksIDE2OCwgMTIsIDE1LCAyMjksIDE2NywgMTIsIDE1LCAyMjksIDE2NiwgMTIsIDE1LCAyMjksIDE2NSwgCisgICAgMTIsIDE1LCAyMjksIDE2NCwgMTIsIDE1LCAyMjksIDE2MywgMTIsIDE1LCAyMjksIDE2MiwgMTIsIDE1LCAyMjksIDE2MSwgCisgICAgMTIsIDE1LCAyMjksIDE2MCwgMTIsIDE1LCAyMjksIDE1OSwgMTIsIDE1LCAyMjksIDE1OCwgMTIsIDE1LCAyMjksIDE1NywgCisgICAgMTIsIDE1LCAyMjksIDE1NiwgMTIsIDE1LCAyMjksIDE1NSwgMTIsIDE1LCAyMjksIDE1NCwgMTIsIDE1LCAyMjksIDE1MywgCisgICAgMTIsIDE1LCAyMjksIDE1MiwgMTIsIDE1LCAyMjksIDE1MSwgMTIsIDE1LCAyMjksIDE1MCwgMTIsIDE1LCAyMjksIDE0OSwgCisgICAgMTIsIDE1LCAyMjksIDE0OCwgMTIsIDE1LCAyMjksIDE0NywgMTIsIDE1LCAyMjksIDE0NiwgMTIsIDE1LCAyMjksIDE0NSwgCisgICAgMTIsIDE1LCAyMjksIDE0NCwgMTIsIDE1LCAyMjksIDE0MywgMTIsIDE1LCAyMjksIDE0MiwgMTIsIDE1LCAyMjksIDE0MSwgCisgICAgMTIsIDE1LCAyMjksIDE0MCwgMTIsIDE1LCAyMjksIDEzOSwgMTIsIDE1LCAyMjksIDEzOCwgMTIsIDE1LCAyMjksIDEzNywgCisgICAgMTIsIDE1LCAyMjksIDEzNiwgMTIsIDE1LCAyMjksIDEzNSwgMTIsIDE1LCAyMjksIDEzNCwgMTIsIDE1LCAyMjksIDEzMywgCisgICAgMTIsIDE1LCAyMjksIDEzMiwgMTIsIDE1LCAyMjksIDEzMSwgMTIsIDE1LCAyMjksIDEzMCwgMTIsIDE1LCAyMjksIDEyOSwgCisgICAgMTIsIDE1LCAyMjksIDEyOCwgMTIsIDE1LCAyMjksIDEyNywgMTIsIDE1LCAyMjksIDEyNiwgMTIsIDE1LCAyMjksIDEyNSwgCisgICAgMTIsIDE1LCAyMjksIDEyNCwgMTIsIDE1LCAyMjksIDEyMywgMTIsIDE1LCAyMjksIDEyMiwgMTIsIDE1LCAyMjksIDEyMSwgCisgICAgMTIsIDE1LCAyMjksIDEyMCwgMTIsIDE1LCAyMjksIDExOSwgMTIsIDE1LCAyMjksIDExOCwgMTIsIDE1LCAyMjksIDExNywgCisgICAgMTIsIDE1LCAyMjksIDExNiwgMTIsIDE1LCAyMjksIDExNSwgMTIsIDE1LCAyMjksIDExNCwgMTIsIDE1LCAyMjksIDExMywgCisgICAgMTIsIDE1LCAyMjksIDExMiwgMTIsIDE1LCAyMjksIDExMSwgMTIsIDE1LCAyMjksIDExMCwgMTIsIDE1LCAyMjksIDEwOSwgCisgICAgMTIsIDE1LCAyMjksIDEwOCwgMTIsIDE1LCAyMjksIDEwNywgMTIsIDE1LCAyMjksIDEwNiwgMTIsIDE1LCAyMjksIDEwNSwgCisgICAgMTIsIDE1LCAyMjksIDEwNCwgMTIsIDE1LCAyMjksIDEwMywgMTIsIDE1LCAyMjksIDEwMiwgMTIsIDE1LCAyMjksIDEwMSwgCisgICAgMTIsIDE1LCAyMjksIDEwMCwgMTIsIDE1LCAyMjksIDk5LCAxMiwgMTUsIDIyOSwgOTgsIDEyLCAxNSwgMjI5LCA5NywgMTIsIAorICAgIDE1LCAyMjksIDk2LCAxMiwgMTUsIDIyOSwgOTUsIDEyLCAxNSwgMjI5LCA5NCwgMTIsIDE1LCAyMjksIDkzLCAxMiwgMTUsIAorICAgIDIyOSwgOTIsIDEyLCAxNSwgMjI5LCA5MSwgMTIsIDE1LCAyMjksIDkwLCAxMiwgMTUsIDIyOSwgODksIDEyLCAxNSwgMjI5LCAKKyAgICA4OCwgMTIsIDE1LCAyMjksIDg3LCAxMiwgMTUsIDIyOSwgODYsIDEyLCAxNSwgMjI5LCA4NSwgMTIsIDE1LCAyMjksIDg0LCAKKyAgICAxMiwgMTUsIDIyOSwgODMsIDEyLCAxNSwgMjI5LCA4MiwgMTIsIDE1LCAyMjksIDgxLCAxMiwgMTUsIDIyOSwgODAsIDEyLCAKKyAgICAxNSwgMjI5LCA3OSwgMTIsIDE1LCAyMjksIDc4LCAxMiwgMTUsIDIyOSwgNzcsIDEyLCAxNSwgMjI5LCA3NiwgMTIsIDE1LCAKKyAgICAyMjksIDc1LCAxMiwgMTUsIDIyOSwgNzQsIDEyLCAxNSwgMjI5LCA3MywgMTIsIDE1LCAyMjksIDcyLCAxMiwgMTUsIDIyOSwgCisgICAgNzEsIDEyLCAxNSwgMjI5LCA3MCwgMTIsIDE1LCAyMjksIDY5LCAxMiwgMTUsIDIyOSwgNjgsIDEyLCAxNSwgMjI5LCA2NywgCisgICAgMTIsIDE1LCAyMjksIDY2LCAxMiwgMTUsIDIyOSwgNjUsIDEyLCAxNSwgMjI5LCA2NCwgMTIsIDE1LCAyMjksIDYzLCAxMiwgCisgICAgMTUsIDIyOSwgNjIsIDEyLCAxNSwgMjI5LCA2MSwgMTIsIDE1LCAyMjksIDYwLCAxMiwgMTUsIDIyOSwgNTksIDEyLCAxNSwgCisgICAgMjI5LCA1OCwgMTIsIDE1LCAyMjksIDU3LCAxMiwgMTUsIDIyOSwgNTYsIDEyLCAxNSwgMjI5LCA1NSwgMTIsIDE1LCAyMjksIAorICAgIDU0LCAxMiwgMTUsIDIyOSwgNTMsIDEyLCAxNSwgMjI5LCA1MiwgMTIsIDE1LCAyMjksIDUxLCAxMiwgMTUsIDIyOSwgNTAsIAorICAgIDEyLCAxNSwgMjI5LCA0OSwgMTIsIDE1LCAyMjksIDQ4LCAxMiwgMTUsIDIyOSwgNDcsIDEyLCAxNSwgMjI5LCA0NiwgMTIsIAorICAgIDE1LCAyMjksIDQ1LCAxMiwgMTUsIDIyOSwgNDQsIDEyLCAxNSwgMjI5LCA0MywgMTIsIDE1LCAyMjksIDQyLCAxMiwgMTUsIAorICAgIDIyOSwgNDEsIDEyLCAxNSwgMjI5LCA0MCwgMTIsIDE1LCAyMjksIDM5LCAxMiwgMTUsIDIyOSwgMzgsIDEyLCAxNSwgMjI5LCAKKyAgICAzNywgMTIsIDE1LCAyMjksIDM2LCAxMiwgMTUsIDIyOSwgMzUsIDEyLCAxNSwgMjI5LCAzNCwgMTIsIDE1LCAyMjksIDMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMzIsIDEyLCAxNSwgMjI5LCAzMSwgMTIsIDE1LCAyMjksIDMwLCAxMiwgMTUsIDIyOSwgMjksIDEyLCAKKyAgICAxNSwgMjI5LCAyOCwgMTIsIDE1LCAyMjksIDI3LCAxMiwgMTUsIDIyOSwgMjYsIDEyLCAxNSwgMjI5LCAyNSwgMTIsIDE1LCAKKyAgICAyMjksIDI0LCAxMiwgMTUsIDIyOSwgMjMsIDEyLCAxNSwgMjI5LCAyMiwgMTIsIDE1LCAyMjksIDIxLCAxMiwgMTUsIDIyOSwgCisgICAgMjAsIDEyLCAxNSwgMjI5LCAxOSwgMTIsIDE1LCAyMjksIDE4LCAxMiwgMTUsIDIyOSwgMTcsIDEyLCAxNSwgMjI5LCAxNiwgCisgICAgMTIsIDE1LCAyMjksIDE1LCAxMiwgMTUsIDIyOSwgMTQsIDEyLCAxNSwgMjI5LCAxMywgMTIsIDE1LCAyMjksIDEyLCAxMiwgCisgICAgMTUsIDIyOSwgMTEsIDEyLCAxNSwgMjI5LCAxMCwgMTIsIDE1LCAyMjksIDksIDEyLCAxNSwgMjI5LCA4LCAxMiwgMTUsIAorICAgIDIyOSwgNywgMTIsIDE1LCAyMjksIDYsIDEyLCAxNSwgMjI5LCA1LCAxMiwgMTUsIDIyOSwgNCwgMTIsIDE1LCAyMjksIDMsIAorICAgIDEyLCAxNSwgMjI5LCAyLCAxMiwgMTUsIDIyOSwgMSwgMTIsIDE1LCAyMjksIDAsIDEyLCAxNSwgMjI4LCAyNTUsIDEyLCAxNSwgCisgICAgMjI4LCAyNTQsIDEyLCAxNSwgMjI4LCAyNTMsIDEyLCAxNSwgMjI4LCAyNTIsIDEyLCAxNSwgMjI4LCAyNTEsIDEyLCAxNSwgCisgICAgMjI4LCAyNTAsIDEyLCAxNSwgMjI4LCAyNDksIDEyLCAxNSwgMjI4LCAyNDgsIDEyLCAxNSwgMjI4LCAyNDcsIDEyLCAxNSwgCisgICAgMjI4LCAyNDYsIDEyLCAxNSwgMjI4LCAyNDUsIDEyLCAxNSwgMjI4LCAyNDQsIDEyLCAxNSwgMjI4LCAyNDMsIDEyLCAxNSwgCisgICAgMjI4LCAyNDIsIDEyLCAxNSwgMjI4LCAyNDEsIDEyLCAxNSwgMjI4LCAyNDAsIDEyLCAxNSwgMjI4LCAyMzksIDEyLCAxNSwgCisgICAgMjI4LCAyMzgsIDEyLCAxNSwgMjI4LCAyMzcsIDEyLCAxNSwgMjI4LCAyMzYsIDEyLCAxNSwgMjI4LCAyMzUsIDEyLCAxNSwgCisgICAgMjI4LCAyMzQsIDEyLCAxNSwgMjI4LCAyMzMsIDEyLCAxNSwgMjI4LCAyMzIsIDEyLCAxNSwgMjI4LCAyMzEsIDEyLCAxNSwgCisgICAgMjI4LCAyMzAsIDEyLCAxNSwgMjI4LCAyMjksIDEyLCAxNSwgMjI4LCAyMjgsIDEyLCAxNSwgMjI4LCAyMjcsIDEyLCAxNSwgCisgICAgMjI4LCAyMjYsIDEyLCAxNSwgMjI4LCAyMjUsIDEyLCAxNSwgMjI4LCAyMjQsIDEyLCAxNSwgMjI4LCAyMjMsIDEyLCAxNSwgCisgICAgMjI4LCAyMjIsIDEyLCAxNSwgMjI4LCAyMjEsIDEyLCAxNSwgMjI4LCAyMjAsIDEyLCAxNSwgMjI4LCAyMTksIDEyLCAxNSwgCisgICAgMjI4LCAyMTgsIDEyLCAxNSwgMjI4LCAyMTcsIDEyLCAxNSwgMjI4LCAyMTYsIDEyLCAxNSwgMjI4LCAyMTUsIDEyLCAxNSwgCisgICAgMjI4LCAyMTQsIDEyLCAxNSwgMjI4LCAyMTMsIDEyLCAxNSwgMjI4LCAyMTIsIDEyLCAxNSwgMjI4LCAyMTEsIDEyLCAxNSwgCisgICAgMjI4LCAyMTAsIDEyLCAxNSwgMjI4LCAyMDksIDEyLCAxNSwgMjI4LCAyMDgsIDEyLCAxNSwgMjI4LCAyMDcsIDEyLCAxNSwgCisgICAgMjI4LCAyMDYsIDEyLCAxNSwgMjI4LCAyMDUsIDEyLCAxNSwgMjI4LCAyMDQsIDEyLCAxNSwgMjI4LCAyMDMsIDEyLCAxNSwgCisgICAgMjI4LCAyMDIsIDEyLCAxNSwgMjI4LCAyMDEsIDEyLCAxNSwgMjI4LCAyMDAsIDEyLCAxNSwgMjI4LCAxOTksIDEyLCAxNSwgCisgICAgMjI4LCAxOTgsIDEyLCAxNSwgMjI4LCAxOTcsIDEyLCAxNSwgMjI4LCAxOTYsIDEyLCAxNSwgMjI4LCAxOTUsIDEyLCAxNSwgCisgICAgMjI4LCAxOTQsIDEyLCAxNSwgMjI4LCAxOTMsIDEyLCAxNSwgMjI4LCAxOTIsIDEyLCAxNSwgMjI4LCAxOTEsIDEyLCAxNSwgCisgICAgMjI4LCAxOTAsIDEyLCAxNSwgMjI4LCAxODksIDEyLCAxNSwgMjI4LCAxODgsIDEyLCAxNSwgMjI4LCAxODcsIDEyLCAxNSwgCisgICAgMjI4LCAxODYsIDEyLCAxNSwgMjI4LCAxODUsIDEyLCAxNSwgMjI4LCAxODQsIDEyLCAxNSwgMjI4LCAxODMsIDgsIDQsIDMzLCAKKyAgICAyMzcsIDExNiwgOCwgNCwgMzMsIDIzNywgMTEyLCA4LCA0LCAzMywgMjM3LCA1NiwgOCwgNCwgMzMsIDIzNywgMTE1LCA4LCAKKyAgICA0LCAzMywgMjM3LCAxMTQsIDgsIDQsIDMzLCAxNjgsIDIxMiwgMTIzLCAyMDcsIDgzLCA4LCA0LCAzMywgMjA4LCAxMjMsIAorICAgIDE4NCwgNCwgMzMsIDIyMiwgNDEsIDIxOCwgMjAxLCAxODQsIDQsIDMzLCAyMjIsIDQxLCAyMzksIDUsIDE4NCwgNCwgMzMsIAorICAgIDIyMiwgNDEsIDIyOCwgODYsIDE4NCwgNCwgMzMsIDIwMiwgMjM5LCAyMTgsIDIwMSwgMTg0LCA0LCAzMywgMjIyLCA0MSwgCisgICAgMjAwLCAxNzMsIDExMywgMSwgMTk5LCAyMzUsIDMsIDIzNCwgNDcsIDExMywgMjE1LCAxMDAsIDIyNywgMTQ2LCAyMDMsIDcxLCAKKyAgICAxMTMsIDMzLCAyMDAsIDcsIDE5OSwgMjM1LCAxOTksIDIzNSwgMjE2LCA5MywgMTEzLCAxLCAyNTEsIDEwNCwgMjUwLCAxMDcsIAorICAgIDExMywgMSwgMjAxLCAyOCwgMjUxLCAxNDIsIDExMywgMSwgMjAxLCAyOCwgMjQyLCAyMywgMTEzLCAxLCAyMDEsIDI4LCAKKyAgICAyMzQsIDEzOSwgMTEzLCAxLCAyMDEsIDI4LCAyMjcsIDg2LCAxMTMsIDEsIDIwMSwgMjgsIDIyNSwgODMsIDExMywgMSwgCisgICAgMjAxLCAyOCwgNDcsIDIyMiwgNDcsIDExMywgMSwgMjAxLCAyOCwgMjEzLCAxMjMsIDExMywgMSwgMjAxLCAyOCwgMjA2LCAKKyAgICAyMTcsIDExMywgMSwgMjUxLCAxMDQsIDkzLCA1NCwgMTEzLCAxLCAyMTAsIDIyLCAzLCAyMTAsIDIyLCAyNDAsIDE4MiwgCisgICAgMTEzLCAxLCAyMTAsIDIyLCAzLCAyMDksIDE0MywgMjQwLCAxODIsIDExMywgMSwgMjEwLCAyMiwgMywgMjQyLCA0MywgMjYsIAorICAgIDIxMCwgMjIsIDI0MCwgMTgyLCAxMTMsIDEsIDIxMCwgMjIsIDMsIDI0MiwgNDMsIDI2LCAyMDksIDE0MywgMjQwLCAxODIsIAorICAgIDExMywgMSwgMTQwLCAzLCAyMTYsIDkzLCAxMTMsIDEsIDE0MCwgMywgMjE0LCAxNDcsIDExMywgMSwgMTQwLCAzLCAyMjIsIAorICAgIDE2MywgMTEzLCAxLCAyNDgsIDIxMSwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMzUsIDE0OCwgMywgMjQyLCA0MiwgMTEzLCAxLCAKKyAgICAyNDIsIDI0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIzNCwgMTQwLCAzLCAyMjIsIDE2MywgMTEzLCAxLCAyMDMsIDY0LCAzLCAKKyAgICAyNDIsIDQyLCAxMTMsIDEsIDE5OSwgOTMsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA2LCAxNDcsIDMsIDI0MiwgNDIsIDExMywgCisgICAgMSwgMTk5LCAyMzUsIDMsIDI0MiwgNDIsIDExMywgMSwgNDcsIDIyNywgODcsIDMsIDI0MiwgNDIsIDExMywgMSwgMjI3LCAKKyAgICA4NywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMjUsIDg0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIyMiwgNDgsIDMsIDI0MiwgNDIsIAorICAgIDExMywgMSwgMjE4LCA5MCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMTIsIDIwLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDQ3LCAKKyAgICAyMTYsIDc0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxNiwgNzQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA1LCAyOCwgMywgCisgICAgMjQyLCA0MiwgMTEzLCAxLCAyMTQsIDEwNywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMTMsIDEyNCwgMywgMjQyLCA0MiwgMTEzLCAKKyAgICAxLCAyMTAsIDIyLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwNiwgMjE4LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwMywgNjQsIDMsIAorICAgIDIzMywgMTk5LCAxMTMsIDEsIDI0OCwgMjExLCAzLCAyMTMsIDIzMiwgMTEzLCAxLCAyMjcsIDg3LCAzLCAyMTMsIDIzMiwgCisgICAgMTEzLCAxLCAyMTYsIDc0LCAzLCAyMTMsIDIzMiwgMTEzLCAzMywgMTQwLCAyMjUsIDgzLCA5LCAxLCAxNDAsIDIwMSwgOTAsIAorICAgIDY1LCAxOSwgOSwgMSwgMTQwLCAyMDEsIDkwLCA0NywgMTksIDksIDEsIDI0OCwgMjUxLCA2NSwgMTksIDksIDEsIDI0OCwgCisgICAgMjUxLCA0NywgMTksIDksIDEsIDI0OCwgMjUxLCA4MiwgMTksIDksIDEsIDI0OCwgMjUxLCAxNzksIDE5LCA5LCAxLCAyMTYsIAorICAgIDU1LCA2NSwgMTksIDksIDEsIDIxNiwgNTUsIDQ3LCAxOSwgOSwgMSwgMjE2LCA1NSwgODIsIDE5LCA5LCAxLCAyMTYsIDU1LCAKKyAgICAxNzksIDE5LCA5LCAxLCAyNDgsIDIzOSwgNjUsIDE5LCA5LCAxLCAyNDgsIDIzOSwgNDcsIDE5LCA5LCAxLCAyNDgsIDIzOSwgCisgICAgODIsIDE5LCA5LCAxLCAyNDgsIDIzOSwgMTc5LCAxOSwgOSwgMSwgMjA0LCAyNDQsIDY1LCAxOSwgOSwgMSwgMjA0LCAyNDQsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjA0LCAyNDQsIDgyLCAxOSwgOSwgMSwgMjA0LCAyNDQsIDE3OSwgMTksIDksIDEsIDIwNiwgMTgyLCAKKyAgICA2NSwgMTksIDksIDEsIDIwNiwgMTgyLCA0NywgMTksIDksIDEsIDIwNiwgMTgyLCA4MiwgMTksIDksIDEsIDIwNiwgMTgyLCAKKyAgICAxNzksIDE5LCA5LCAxLCAyMDQsIDI0NiwgNjUsIDE5LCA5LCAxLCAyMDQsIDI0NiwgNDcsIDE5LCA5LCAxLCAyMDQsIDI0NiwgCisgICAgODIsIDE5LCA5LCAxLCAyMDQsIDI0NiwgMTc5LCAxOSwgOSwgMSwgMjAzLCA1MywgNjUsIDE5LCA5LCAxLCAyMDMsIDUzLCAKKyAgICA0NywgMTksIDksIDEsIDIwMywgNTMsIDgyLCAxOSwgOSwgMSwgMjAzLCA1MywgMTc5LCAxOSwgOSwgMSwgMjE2LCA1MywgNjUsIAorICAgIDE5LCA5LCAxLCAyMTYsIDUzLCA0NywgMTksIDksIDEsIDIxNiwgNTMsIDgyLCAxOSwgOSwgMSwgMjE2LCA1MywgMTc5LCAxOSwgCisgICAgOSwgMSwgMjM5LCAxMDAsIDY1LCAxOSwgOSwgMSwgMjM5LCAxMDAsIDQ3LCAxOSwgOSwgMSwgMjM5LCAxMDAsIDgyLCAxOSwgCisgICAgOSwgMSwgMjM5LCAxMDAsIDE3OSwgMTksIDksIDEsIDIxOCwgNDgsIDY1LCAxOSwgOSwgMSwgMjE4LCA0OCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMTgsIDQ4LCA4MiwgMTksIDksIDEsIDIxOCwgNDgsIDE3OSwgMTksIDksIDEsIDIwNiwgMjA2LCA2NSwgMTksIDksIDEsIAorICAgIDIwNiwgMjA2LCA0NywgMTksIDksIDEsIDIwNiwgMjA2LCA4MiwgMTksIDksIDEsIDIwNiwgMjA2LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMDYsIDIwNCwgNjUsIDE5LCA5LCAxLCAyMDYsIDIwNCwgNDcsIDE5LCA5LCAxLCAyMDYsIDIwNCwgODIsIDE5LCA5LCAxLCAKKyAgICAyMDYsIDIwNCwgMTc5LCAxOSwgOSwgMSwgMjQxLCAyMTgsIDY1LCAxOSwgOSwgMSwgMjQxLCAyMTgsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjQyLCAzNywgNjUsIDE5LCA5LCAxLCAyNDIsIDM3LCA0NywgMTksIDksIDEsIDIzOSwgMTI4LCA2NSwgMTksIDksIDEsIAorICAgIDIzOSwgMTI4LCA0NywgMTksIDksIDEsIDI0MSwgMjE2LCA2NSwgMTksIDksIDEsIDI0MSwgMjE2LCA0NywgMTksIDksIDEsIAorICAgIDIyNywgMjIyLCA2NSwgMTksIDksIDEsIDIyNywgMjIyLCA0NywgMTksIDksIDEsIDIxMiwgMjA4LCA2NSwgMTksIDksIDEsIAorICAgIDIxMiwgMjA4LCA0NywgMTksIDksIDEsIDIyNiwgMjUzLCA2NSwgMTksIDksIDEsIDIyNiwgMjUzLCA0NywgMTksIDksIDEsIAorICAgIDIyNiwgMjUzLCA4MiwgMTksIDksIDEsIDIyNiwgMjUzLCAxNzksIDE5LCA5LCAxLCAyMzYsIDc3LCA2NSwgMTksIDksIDEsIAorICAgIDIzNiwgNzcsIDQ3LCAxOSwgOSwgMSwgMjM2LCA3NywgODIsIDE5LCA5LCAxLCAyMzYsIDc3LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMzUsIDM4LCA2NSwgMTksIDksIDEsIDIzNSwgMzgsIDQ3LCAxOSwgOSwgMSwgMjM1LCAzOCwgODIsIDE5LCA5LCAxLCAyMzUsIAorICAgIDM4LCAxNzksIDE5LCA5LCAxLCAyMTksIDE3NywgNjUsIDE5LCA5LCAxLCAyMTksIDE3NywgNDcsIDE5LCA5LCAxLCAyMTksIAorICAgIDE3NywgODIsIDE5LCA5LCAxLCAyMTksIDE3NywgMTc5LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDIzNSwgMTY2LCA2NSwgMTksIAorICAgIDksIDEsIDIxOCwgMjI4LCAyMzUsIDE2NiwgNDcsIDE5LCA5LCAxLCAyMTMsIDUsIDY1LCAxOSwgOSwgMSwgMjEzLCA1LCA0NywgCisgICAgMTksIDksIDEsIDIxMywgNSwgODIsIDE5LCA5LCAxLCAyMTMsIDUsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCAzLCA5MCwgCisgICAgODgsIDY1LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCA4OCwgNDcsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIAorICAgIDY1LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCA0NywgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgODIsIAorICAgIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwOCwgNjUsIDE5LCAKKyAgICA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDgsIDQ3LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA4LCA4MiwgMTksIDksIDEsIAorICAgIDIzNCwgMTE2LCAyNDAsIDIwOCwgMTc5LCAxOSwgOSwgMSwgOTAsIDI0OSwgNzAsIDY1LCAxOSwgOSwgMSwgOTAsIDI0OSwgCisgICAgNzAsIDQ3LCAxOSwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAxLCA5MCwgMjQ5LCAKKyAgICA3MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDE2LCA3MywgNTYsIDksIDE2LCA3MywgNTcsIDksIDE2LCAxMjAsIAorICAgIDE5MCwgNTYsIDksIDE2LCAxMjAsIDE5MCwgNTcsIDksIDE2LCAxMjYsIDE5MCwgNTYsIDksIDE2LCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDE2LCAxMjYsIDE5MCwgMjE1LCA5NiwgMTkxLCA1NiwgOSwgMTYsIDEyNiwgMTkwLCAyMTUsIDk2LCAxOTEsIDU3LCA5LCAKKyAgICAxNiwgMjM2LCAyMjksIDE5MCwgNTYsIDksIDE2LCAyMzYsIDIyOSwgMTkwLCA1NywgOSwgMTYsIDUzLCA4MywgMjQ5LCA3NywgCisgICAgNTcsIDksIDE2LCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU2LCA5LCAxNiwgMTIwLCAxOTAsIDIwMiwgMjQ4LCA1NywgOSwgMTYsIAorICAgIDIxMywgMjYsIDksIDE2LCA0LCAyMDcsIDEwLCA1NiwgOSwgMTYsIDQsIDIwNywgMTAsIDU3LCA5LCAxLCAyMjAsIDAsIDY1LCAKKyAgICAxOSwgOSwgMSwgMjIwLCAwLCA0NywgMTksIDksIDEsIDIyMCwgMCwgODIsIDE5LCA5LCAxLCAyMjAsIDAsIDE3OSwgMTksIDksIAorICAgIDEsIDEwOCwgNjUsIDE5LCA5LCAxLCAxMDgsIDQ3LCAxOSwgOSwgMSwgMjE3LCAxMjIsIDY1LCAxOSwgOSwgMSwgMjE3LCAKKyAgICAxMjIsIDQ3LCAxOSwgOSwgMSwgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMSwgMTk5LCAyMTIsIDQ3LCAxOSwgOSwgMSwgMTA4LCAKKyAgICAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgMSwgMjAzLCA2MCwgNjUsIDE5LCA5LCAxLCAyMDMsIDYwLCA0NywgMTksIDksIAorICAgIDEsIDIyNiwgMTM5LCAyMTcsIDEyMiwgNjUsIDE5LCA5LCAxLCAyMjYsIDEzOSwgMjE3LCAxMjIsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI2LCAxMzksIDE5OSwgMjEyLCA2NSwgMTksIDksIDEsIDIyNiwgMTM5LCAxOTksIDIxMiwgNDcsIDE5LCA5LCAxLCAxOTcsIAorICAgIDY1LCAxOSwgOSwgMSwgMTk3LCA0NywgMTksIDksIDEsIDE5NywgODIsIDE5LCA5LCAxLCAxOTcsIDE3OSwgMTksIDksIDEsIAorICAgIDIwNCwgMjIsIDIyNywgMTIsIDIyNiwgMTM5LCAxNDAsIDIyMiwgMTg4LCA4MiwgMTksIDksIDEsIDIwNCwgMjIsIDIyNywgCisgICAgMTIsIDIyNiwgMTM5LCAxNDAsIDIyMiwgMTg4LCAxNzksIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAKKyAgICA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIAorICAgIDIwNCwgODgsIDMsIDI1MSwgMjIyLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyNTEsIDIyMiwgCisgICAgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MywgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTA4LCA2NSwgCisgICAgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxMDgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDMsIDIxNywgMTIyLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMTcsIDEyMiwgNDcsIDE5LCAKKyAgICA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDMsIDE5OSwgMjEyLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTcsIDY1LCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5NywgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgCisgICAgMTk3LCA4MiwgMTksIDksIDMzLCAyMDQsIDIyLCAyMjYsIDEzOSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA0LCAyMiwgMjI2LCAxMzksIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNCwgMjIsIDIyNiwgMTM5LCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA4MiwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgNjUsIDE5LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjM3LCAxNjIsIDkwLCA4MiwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgMTc5LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIAorICAgIDIwNCwgODgsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTU1LCA2NSwgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgCisgICAgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDI0OCwgCisgICAgMjQxLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyNDgsIAorICAgIDI0MSwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMDYsIDE4NCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDE4NCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjA2LCAKKyAgICAxODQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjA2LCAxMDMsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDEwMywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAxOTMsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMTU1LCAzLCAxOTMsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIyNiwgMjA0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgCisgICAgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE5MywgNjUsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjQyLCA1MywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgCisgICAgMywgODQsIDY1LCAxOSwgOSwgMzMsIDE5OSwgMTA5LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgCisgICAgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTkzLCA2NSwgMTksIAorICAgIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIzNywgMTM1LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjM3LCAxMzUsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTQsIAorICAgIDE1MywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTQsIDE1MywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgCisgICAgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNiwgCisgICAgMjA0LCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIDkyLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgCisgICAgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgOTAsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCA2NSwgMTksIAorICAgIDksIDMzLCAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDkwLCA2NSwgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA4NCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCA4NCwgMywgMjI2LCAKKyAgICAyMDQsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDg0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjE4LCAyMjgsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTgsIDIyOCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIzNCwgCisgICAgMTE2LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIzNCwgMTE2LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDE1NSwgCisgICAgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCA5MCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDkwLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCA5MCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTE1LCAKKyAgICAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMTMsIDE1NSwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMTQwLCAyMjIsIDE4OCwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDI0MiwgMTYsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyMjcsIDM1LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjM3LCAKKyAgICAxNTksIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyNDIsIDE4LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgCisgICAgMjI3LCAzNywgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTksIAorICAgIDEwNiwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIAorICAgIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAKKyAgICAyNDEsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTk5LCAxMDYsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIDMzLCAKKyAgICAyNDgsIDI0MSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTksIDEwNiwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgOTAsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDE5OSwgMTA2LCA0NywgCisgICAgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMTgsIDIyOCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxMDMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAKKyAgICA5MCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIDkyLCAKKyAgICA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCAyMjIsIDE4OCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCA0NywgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgODQsIDMsIDE0MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgCisgICAgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTksIDEwNiwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIAorICAgIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDMsIDIwNywgMjEzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgOTAsIAorICAgIDMsIDE5OSwgMTA2LCA0NywgMTksIDksIDMzLCA5MCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMTgsIDIyOCwgCisgICAgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCA5MCwgCisgICAgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjM0LCAxMTYsIAorICAgIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDgyLCAxOSwgCisgICAgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyNDgsIDI0MSwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIwNiwgMTAzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE5MywgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAxNTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMjYsIDIwNCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgCisgICAgMTg3LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAKKyAgICAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDgyLCAxOSwgOSwgCisgICAgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgCisgICAgMjA3LCAxMCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAxOTksIDEwOSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAKKyAgICAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE5MywgCisgICAgODIsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTkzLCA4MiwgMTksIAorICAgIDksIDMzLCAyMzcsIDEzNSwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIzNywgMTM1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjE0LCAKKyAgICAxNTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgCisgICAgOTIsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAKKyAgICAzMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDMzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjE4LCAyMjgsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIzNCwgMTE2LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjM0LCAKKyAgICAxMTYsIDMsIDIwNywgMjEzLCAxNDAsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCAxNzksIDE5LCAKKyAgICA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCAKKyAgICA5MiwgMTc5LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDE3OSwgCisgICAgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgODQsIDE3OSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjM0LCAxMTYsIDE3OSwgCisgICAgMTksIDksIDMzLCA5MCwgMywgODQsIDE3OSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAKKyAgICAyMTAsIDEwNSwgMywgMjM3LCAxNTksIDE3OSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjQyLCAxOCwgMTc5LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgMTA1LCAzLCAyMjcsIDM3LCAxNzksIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIAorICAgIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgCisgICAgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxNDAsIDIyMiwgMTg4LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIAorICAgIDY1LCAxOSwgOSwgMzMsIDE1NSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDE5MywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCAKKyAgICA5LCAzMywgMTkzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNiwgMjA0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjEyLCA1NywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDI0MiwgNTMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIAorICAgIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgCisgICAgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNywgCisgICAgMTAsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjUxLCAKKyAgICAxNzIsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjM1LCAxOTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjExLCAxODcsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAKKyAgICAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgCisgICAgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjYsIDIwNCwgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTkzLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIyNiwgMjA0LCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMTMsIDE1NSwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIxMywgMTU1LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgODIsIDE5LCAKKyAgICA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIzNCwgMTE2LCA4MiwgMTksIAorICAgIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMSwgMTg3LCAzLCAxNTUsIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjI2LCAyMDQsIDE3OSwgMTksIDksIDMzLCAKKyAgICAyMTAsIDYyLCAzLCAxOTMsIDE3OSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDE3OSwgMTksIDksIDMzLCAyMTAsIAorICAgIDYyLCAzLCAyMjYsIDIwNCwgMTc5LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMTk5LCAKKyAgICAxMDksIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMTQwLCAzLCAyMzcsIDE1NywgNDcsIDE5LCA5LCAzMywgMTQwLCAzLCAyMzcsIAorICAgIDE1NywgNjUsIDE5LCAyMTcsIDE5LCA0OSwgMjE2LCAxMTUsIDIxNywgMTksIDUxLCAyMTYsIDExNSwgOSwgMzMsIDIwNiwgCisgICAgMTg0LCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCAzLCAxOTMsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE1NSwgMywgODQsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgCisgICAgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIAorICAgIDMsIDg0LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAKKyAgICAxOTMsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxNTUsIAorICAgIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIxMSwgMTg3LCAzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMywgMTQwLCAKKyAgICAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgCisgICAgMTg3LCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAKKyAgICAzMywgMjExLCAxODcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIAorICAgIDE1NSwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCAyMjYsIDIwNCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjEwLCA2MiwgMywgODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgODQsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTU1LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDE1NSwgNDcsIAorICAgIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxOTMsIDMsIAorICAgIDg0LCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgCisgICAgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIAorICAgIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgODQsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgCisgICAgMywgMTkzLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgMTkzLCA0NywgMTksIDksIDMzLCAKKyAgICAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDE1NSwgODIsIAorICAgIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIDIwNCwgMywgMTkzLCA4MiwgCisgICAgMTksIDksIDMzLCA4NCwgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCAyMjYsIAorICAgIDIwNCwgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCAKKyAgICA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIAorICAgIDIyOCwgMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCA4NCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIAorICAgIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDIxOCwgMjI4LCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDIyNiwgMjA0LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTMsIAorICAgIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIAorICAgIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAxOTMsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDE5MywgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIAorICAgIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjEwLCA2MiwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTU1LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCAKKyAgICA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAKKyAgICAyMjYsIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIyNywgODcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA4NCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgMTU1LCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDE1NSwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIzNywgMTM1LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxOTMsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIAorICAgIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTIsIAorICAgIDMwLCAyMDMsIDE5MiwgMjUwLCAxODksIDIyNiwgNjAsIDIwOCwgNzcsIDIsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTQ5LCAKKyAgICAyMDMsIDE5MiwgMjUwLCAxODksIDIyNiwgNjAsIDIwOCwgNzcsIDIsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTIzLCA2NSwgMTksIAorICAgIDksIDMzLCAyNTEsIDE1NiwgNjUsIDE5LCA5LCAzMywgMjIxLCAxMDksIDY1LCAxOSwgOSwgMzMsIDIxMiwgMzEsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIxMywgMjA2LCA2NSwgMTksIDksIDMzLCAyNTEsIDE0NSwgNjUsIDE5LCA5LCAzMywgMjAxLCA5MiwgNjUsIDE5LCAKKyAgICA5LCAzMywgMjEyLCAzMCwgNjUsIDE5LCA5LCAzMywgMjEyLCAyOSwgMjUxLCAxNDUsIDIwMSwgOTEsIDksIDMzLCAyMjcsIAorICAgIDIzOSwgMjEzLCA4NywgNTQsIDksIDMzLCAyNDgsIDE1NCwgMjUwLCAyNTEsIDI1MCwgMjUyLCA1OCwgMjExLCAxNzQsIDU4LCAKKyAgICAyMTEsIDYzLCA1OCwgMjEwLCAyNTEsIDU4LCAyMTAsIDI0MCwgNTgsIDIxMCwgMjI5LCA1OCwgMjEwLCAyMTgsIDU4LCAyMTAsIAorICAgIDIwNywgNTgsIDIxMCwgMTk2LCA1OCwgMjEwLCAxODUsIDU4LCAyMTEsIDE3MywgNTgsIDIxMSwgMTYyLCA1OCwgMjExLCAKKyAgICAxNTEsIDU4LCAyMTEsIDE0MCwgNTgsIDIxMSwgMTI5LCA1OCwgMjExLCAxMTgsIDU4LCAyMTEsIDEwNywgMjE1LCAxOSwgCisgICAgMjM2LCAyNDIsIDM2LCA4MywgMjQ2LCA3MCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMTQxLCAyNDYsIDcwLCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAxNDEsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAKKyAgICAyNDYsIDc5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMTAsIDE2NywgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgCisgICAgMjM4LCA0MywgODEsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIxNCwgNzksIDgxLCAyMTUsIDE5LCAyMzYsIDI0MiwgCisgICAgMzYsIDgzLCA0OSwgNjQsIDIyNCwgMjQ3LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA2NCwgMjI0LCAKKyAgICAyNDcsIDI0OCwgNjgsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzMywgMTc3LCAyMzgsIDE5NSwgMzgsIDMzLCA0OSwgCisgICAgMjM0LCAyMTMsIDM4LCAzMywgNTEsIDIzNCwgMjEzLCAzOCwgNTMsIDIwNSwgMjQxLCA0OSwgMjM0LCAyMTMsIDM4LCA1MywgCisgICAgMjA1LCAyNDEsIDUxLCAyMzQsIDIxMywgMzgsIDIyMiwgMjI5LCA0OSwgMjM0LCAyMTMsIDM4LCAyMjIsIDIyOSwgNTEsIAorICAgIDIzNCwgMjEzLCAzOCwgMjQzLCA1NiwgMjIyLCAyMjgsIDM4LCAzMywgNDksIDE2NywgNTcsIDM4LCAzMywgNTEsIDE2NywgCisgICAgNTcsIDM4LCAyMDUsIDI0MSwgNDksIDE2NywgNTcsIDM4LCAyMDUsIDI0MSwgNTEsIDE2NywgNTcsIDM4LCAyMjIsIDIyOSwgCisgICAgNDksIDE2NywgNTcsIDM4LCAyMjIsIDIyOSwgNTEsIDE2NywgNTcsIDM4LCAyNDMsIDU2LCAyMjIsIDIyOSwgNTcsIDM4LCAKKyAgICAzNywgMjA1LCAyMTEsIDQ5LCAyMzQsIDIxMywgMzgsIDM3LCAyMDUsIDIxMSwgNTEsIDIzNCwgMjEzLCAyMTUsIDE5LCAyMzYsIAorICAgIDI0MiwgMzYsIDgzLCAxMjAsIDczLCAyMjUsIDM4LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMzgsIDE5MSwgMjQxLCAKKyAgICAyNDQsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzOCwgMTgwLCAyNDEsIDI0NCwgMjE1LCAxOSwgMjM2LCAyNDIsIAorICAgIDM2LCA4MywgMTI4LCAyMjQsIDE3NiwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjAxLCA3NCwgMTI4LCAyMjQsIDE3NiwgCisgICAgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDIxNiwgMTE1LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgCisgICAgMjE2LCAxMTUsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyNDIsIDE5NiwgMTU5LCAyMTUsIDE5LCAyMzYsIAorICAgIDI0MiwgMzYsIDgzLCA1MSwgMjQyLCAxOTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDIwNSwgMTQ2LCAKKyAgICAyMTAsIDU1LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNjMsIDIyNCwgMjQ3LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIAorICAgIDUxLCA2MywgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDUzLCAyNTEsIDcxLCAxNTksIAorICAgIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA1MywgMjUxLCA3MSwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIAorICAgIDgzLCA0OSwgMjUxLCA3MSwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgMjUxLCA3MSwgMTU5LCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgCisgICAgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNjQsIDI0MywgMTYsIDE1OSwgMjE1LCAxOSwgCisgICAgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyNDMsIDE2LCAxNTksIDIxMCwgMTQ1LCAyNDAsIDE4MiwgNjQsIDIxMCwgMTQ1LCAKKyAgICAyNDAsIDE4MiwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDUyLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgCisgICAgODMsIDUxLCA1MiwgMTU5LCAyNDEsIDI0MywgMjE2LCAyNDEsIDI0NywgNTIsIDIxNiwgMjQxLCAyMDEsIDc0LCAyMTYsIAorICAgIDI0MSwgNTMsIDIwMSwgNzQsIDIxNiwgMjQxLCAyNDEsIDI0MywgMTI4LCAyMjQsIDE3NiwgMjQ3LCA1MiwgMTI4LCAyMjQsIAorICAgIDE3NiwgMjAxLCA3NCwgMTI4LCAyMjQsIDE3NiwgNCwgMjQ2LCA3MCwgNCwgMTQxLCAyNDYsIDcwLCA0LCAyMzYsIDE4MywgCisgICAgMjA4LCA3NiwgNCwgMjEwLCAxNjcsIDQsIDI0NiwgNzksIDQsIDIxNCwgNzksIDgxLCA0LCAyMzgsIDQzLCA4MSwgNCwgMjM4LCAKKyAgICAxOTEsIDI0MSwgMjQ0LCA0LCA0OSwgMjE2LCAxMTUsIDQsIDUxLCAyMTYsIDExNSwgNCwgNDksIDI0MiwgMTk2LCAxNTksIDQsIAorICAgIDUxLCAyNDIsIDE5NiwgMTU5LCA0LCA0OSwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNCwgNTEsIDIwNSwgMTQ2LCAyMTAsIAorICAgIDU1LCAxNTksIDQsIDQxLCA1NCwgNCwgMjUxLCA4OSwgNCwgMjUwLCAxNjUsIDQsIDkzLCA1NCwgNCwgMjMzLCAzMiwgNCwgCisgICAgMjI0LCAyNDEsIDU0LCA0LCAyMzUsIDY3LCA1NCwgNCwgMjM4LCAxMjIsIDU0LCA0LCAyMTMsIDEwNiwgMjA5LCAxNiwgNCwgCisgICAgMjQwLCAxOTQsIDU0LCA0LCAyMTYsIDI3LCA1NCwgNCwgMjQ2LCA2OCwgMjUwLCAxNTUsIDksIDIzNywgMTU3LCA2NSwgMTksIAorICAgIDksIDIwNiwgMjI0LCAzLCAyMzcsIDE1NywgNTYsIDksIDI0MiwgMTYsIDY1LCAxOSwgOSwgMjA3LCA3LCAyMzYsIDIxOCwgOSwgCisgICAgMjI3LCAzNSwgNjUsIDE5LCA5LCAyMzcsIDE1OSwgNjUsIDE5LCA5LCAyMzcsIDE1OSwgMTc5LCAxOSwgOSwgMjQyLCAxOCwgCisgICAgNjUsIDE5LCA5LCAyNDIsIDE4LCAxNzksIDE5LCA5LCAyMjcsIDM3LCA2NSwgMTksIDksIDIyNywgMzcsIDE3OSwgMTksIDksIAorICAgIDIxMCwgMTA1LCA2NSwgMTksIDksIDIxMCwgMTA1LCAxNzksIDE5LCA5LCAyMDcsIDIzNywgNjUsIDE5LCA5LCAyMDcsIDIzNywgCisgICAgMTc5LCAxOSwgOSwgMSwgMjM0LCAyMDQsIDY1LCAxOSwgOSwgMSwgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMSwgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDQ3LCAxOSwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMSwgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIAorICAgIDksIDEsIDIwMSwgNzMsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIDIyOCwgCisgICAgNjUsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIDIyOCwgNDcsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIAorICAgIDg4LCA2NSwgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgCisgICAgODIsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAxNzksIDE5LCA5LCAxLCAxNDAsIDY1LCAxOSwgOSwgMSwgMTQwLCAKKyAgICA0NywgMTksIDksIDEsIDI0OCwgMjQxLCA2NSwgMTksIDksIDEsIDI0OCwgMjQxLCA0NywgMTksIDksIDEsIDI0OCwgMjQxLCAKKyAgICA4MiwgMTksIDksIDEsIDI0OCwgMjQxLCAxNzksIDE5LCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTcsIDY1LCAxOSwgOSwgMSwgCisgICAgMjA2LCAxODQsIDIyMiwgMTU3LCA0NywgMTksIDksIDEsIDIwNiwgMTg0LCA2NSwgMTksIDksIDEsIDIwNiwgMTg0LCA0NywgCisgICAgMTksIDksIDEsIDIwNiwgMTg0LCA4MiwgMTksIDksIDEsIDIwNiwgMTg0LCAxNzksIDE5LCA5LCAxLCAyMDYsIDEwMywgNjUsIAorICAgIDE5LCA5LCAxLCAyMDYsIDEwMywgNDcsIDE5LCA5LCAxLCAyMDYsIDEwMywgODIsIDE5LCA5LCAxLCAyMDYsIDEwMywgMTc5LCAKKyAgICAxOSwgOSwgMSwgMTkzLCA2NSwgMTksIDksIDEsIDE5MywgNDcsIDE5LCA5LCAxLCAxOTMsIDgyLCAxOSwgOSwgMSwgMTkzLCAKKyAgICAxNzksIDE5LCA5LCAxLCAxNTUsIDY1LCAxOSwgOSwgMSwgMTU1LCA0NywgMTksIDksIDEsIDE1NSwgODIsIDE5LCA5LCAxLCAKKyAgICAxNTUsIDE3OSwgMTksIDksIDEsIDIyNiwgMjA0LCA2NSwgMTksIDksIDEsIDIyNiwgMjA0LCA0NywgMTksIDksIDEsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDEsIDIyNiwgMjA0LCAxNzksIDE5LCA5LCAxLCAyNDIsIDMwLCA2NSwgMTksIDksIDEsIDI0MiwgCisgICAgMzAsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxMTUsIDY1LCAxOSwgOSwgMSwgMjA2LCAxMTUsIDQ3LCAxOSwgOSwgMSwgMjEzLCAKKyAgICAxNTUsIDY1LCAxOSwgOSwgMSwgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMSwgMTk5LCAxMDYsIDY1LCAxOSwgOSwgMSwgMTk5LCAKKyAgICAxMDYsIDQ3LCAxOSwgOSwgMSwgMjExLCAxODcsIDY1LCAxOSwgOSwgMSwgMjExLCAxODcsIDQ3LCAxOSwgOSwgMSwgMjExLCAKKyAgICAxODcsIDgyLCAxOSwgOSwgMSwgMjExLCAxODcsIDE3OSwgMTksIDksIDEsIDIxMCwgNjIsIDY1LCAxOSwgOSwgMSwgMjEwLCAKKyAgICA2MiwgNDcsIDE5LCA5LCAxLCAyMTAsIDYyLCA4MiwgMTksIDksIDEsIDIxMCwgNjIsIDE3OSwgMTksIDksIDEsIDIxMiwgNTcsIAorICAgIDY1LCAxOSwgOSwgMSwgMjEyLCA1NywgNDcsIDE5LCA5LCAxLCAyMTIsIDU3LCA4MiwgMTksIDksIDEsIDIxMiwgNTcsIDE3OSwgCisgICAgMTksIDksIDEsIDI0MiwgNTMsIDY1LCAxOSwgOSwgMSwgMjQyLCA1MywgNDcsIDE5LCA5LCAxLCAyNDIsIDUzLCA4MiwgMTksIAorICAgIDksIDEsIDI0MiwgNTMsIDE3OSwgMTksIDksIDEsIDIwNywgMTAsIDY1LCAxOSwgOSwgMSwgMjA3LCAxMCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMDcsIDEwLCA4MiwgMTksIDksIDEsIDIwNywgMTAsIDE3OSwgMTksIDksIDEsIDE5OSwgMTA5LCA2NSwgMTksIDksIDEsIAorICAgIDE5OSwgMTA5LCA0NywgMTksIDksIDEsIDE5OSwgMTA5LCA4MiwgMTksIDksIDEsIDE5OSwgMTA5LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyNTEsIDE3MiwgNjUsIDE5LCA5LCAxLCAyNTEsIDE3MiwgNDcsIDE5LCA5LCAxLCAyNTEsIDE3MiwgODIsIDE5LCA5LCAxLCAKKyAgICAyNTEsIDE3MiwgMTc5LCAxOSwgOSwgMSwgMjM1LCAxOTUsIDY1LCAxOSwgOSwgMSwgMjM1LCAxOTUsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjM1LCAxOTUsIDgyLCAxOSwgOSwgMSwgMjM1LCAxOTUsIDE3OSwgMTksIDksIDEsIDIzNywgMTM1LCA2NSwgMTksIDksIDEsIAorICAgIDIzNywgMTM1LCA0NywgMTksIDksIDEsIDIzNywgMTM1LCA4MiwgMTksIDksIDEsIDIzNywgMTM1LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMTQsIDE1MywgNjUsIDE5LCA5LCAxLCAyMTQsIDE1MywgNDcsIDE5LCA5LCAxLCAyMTQsIDE1MywgODIsIDE5LCA5LCAxLCAKKyAgICAyMTQsIDE1MywgMTc5LCAxOSwgOSwgMSwgMjI3LCA4NywgNjUsIDE5LCA5LCAxLCAyMjcsIDg3LCA0NywgMTksIDksIDEsIAorICAgIDIyNywgODcsIDgyLCAxOSwgOSwgMSwgMjI3LCA4NywgMTc5LCAxOSwgOSwgMSwgMjI1LCA5MiwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMjUsIDkyLCA0NywgMTksIDksIDEsIDIyNSwgOTIsIDgyLCAxOSwgOSwgMSwgMjI1LCA5MiwgMTc5LCAxOSwgOSwgMSwgODQsIAorICAgIDY1LCAxOSwgOSwgMSwgODQsIDQ3LCAxOSwgOSwgMSwgODQsIDgyLCAxOSwgOSwgMSwgODQsIDE3OSwgMTksIDksIDEsIDIxOCwgCisgICAgMjI4LCA2NSwgMTksIDksIDEsIDIxOCwgMjI4LCA0NywgMTksIDksIDEsIDIxOCwgMjI4LCA4MiwgMTksIDksIDEsIDIxOCwgCisgICAgMjI4LCAxNzksIDE5LCA5LCAxLCAyMzQsIDExNiwgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgNDcsIDE5LCA5LCAxLCAyMzQsIAorICAgIDExNiwgODIsIDE5LCA5LCAxLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMSwgMjAxLCA3MywgNjUsIDE5LCA5LCAxLCAyMDEsIAorICAgIDczLCA0NywgMTksIDksIDEsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMSwgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAxLCA5MCwgNjUsIDE5LCA5LCAxLCA5MCwgNDcsIDE5LCA5LCAxLCA5MCwgODIsIDE5LCA5LCAxLCA5MCwgMTc5LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjIyLCAyMjQsIDg4LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIAorICAgIDIyMiwgMjI0LCA4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIAorICAgIDIzNCwgMjA0LCAyNDgsIDIyOCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgMjQ4LCAKKyAgICAyMjgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCA0NywgCisgICAgMTksIDE5OSwgODIsIDIwMSwgMjUsIDIxOCwgMjQwLCAyMDgsIDI0NCwgMTU4LCAyMzgsIDQzLCA4MSwgMTU4LCAyMTQsIDYzLCAKKyAgICA4MSwgMTU4LCA0MSwgNTQsIDE1OCwgMjQwLCAxOTQsIDU0LCAxNTgsIDIxNiwgMjcsIDU0LCAxNTgsIDI1MSwgODksIDE1OCwgCisgICAgMjUxLCAxMywgMTU4LCA0OSwgMjE2LCAxMTUsIDE1OCwgNTEsIDIxNiwgMTE1LCAxNTgsIDI1MCwgMTY1LCAxNTgsIDkzLCAKKyAgICA1NCwgMTU4LCAyNDYsIDcwLCAxNTgsIDIzMywgMzIsIDE1OCwgMjM2LCAxODMsIDIwOCwgNzYsIDE1OCwgMjA5LCAxNiwgCisgICAgMTU4LCAxNywgMTk5LCA4MSwgMTU4LCAxNywgMTAyLCAxNTgsIDE3LCAxMDUsIDE1OCwgMTcsIDE0NywgMTU4LCAxNywgMTQ5LCAKKyAgICAxNTgsIDE3LCAxNjQsIDE1OCwgMTcsIDE4NywgMTU4LCAxNywgMjEwLCAxMzUsIDE1OCwgMTcsIDE5MiwgMTU4LCAxNywgCisgICAgMjE5LCAxMTMsIDE1OCwgMjQ2LCA3OSwgMTU4LCAyMTAsIDE2NywgMTU4LCAyMjQsIDI0MSwgNTQsIDE1OCwgMjM4LCAxMjIsIAorICAgIDU0LCAxNTgsIDIzNSwgNjcsIDU0LCAxNTgsIDIxNCwgNzksIDgxLCAxNTgsIDI0NiwgNjgsIDI1MCwgMTU1LCAxNTgsIDgsIAorICAgIDYsIDEsIDYyLCAxNTgsIDgsIDYsIDEsIDI1MCwgMTAzLCAxNTgsIDgsIDYsIDEsIDI0NywgMjIzLCAxNTgsIDgsIDYsIDEsIAorICAgIDI0MiwgMTUzLCAxNTgsIDgsIDYsIDEsIDcyLCAxNTgsIDgsIDYsIDEsIDIzOCwgNSwgMTU4LCA4LCA2LCAxLCAyMzYsIDE1NiwgCisgICAgMTU4LCA4LCA2LCAxLCAyMzQsIDI0NywgMTU4LCA4LCA2LCAxLCA3MCwgMTU4LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTU4LCA4LCAKKyAgICA2LCAxLCAyMjcsIDExOCwgMTU4LCA4LCA2LCAxLCAxNTYsIDE1OCwgOCwgNiwgMSwgMjIzLCAyNDMsIDE1OCwgOCwgNiwgMSwgCisgICAgMjIwLCAyMTQsIDE1OCwgOCwgNiwgMSwgNzQsIDE1OCwgOCwgNiwgMSwgMjE2LCAyMjYsIDE1OCwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDE1OCwgOCwgNiwgMSwgMTQ2LCAxNTgsIDgsIDYsIDEsIDIxMiwgMTIyLCAxNTgsIDgsIDYsIDEsIDIwNywgODMsIAorICAgIDE1OCwgOCwgNiwgMSwgNjYsIDE1OCwgOCwgNiwgMSwgMjAzLCAxNjgsIDE1OCwgOCwgNiwgMSwgMjAxLCAxNDcsIDE1OCwgOCwgCisgICAgNiwgMSwgMjAwLCAxOTUsIDE1OCwgOCwgNiwgMSwgMjAwLCAxMjMsIDE1OCwgOCwgNiwgMSwgMTk5LCAxNTcsIDE1OCwgNDksIAorICAgIDUyLCAxNTksIDE1OCwgMjEzLCAxMDYsIDIwOSwgMTYsIDE1OCwgNTEsIDUyLCAxNTksIDE1OCwgMjQ2LCAxNDcsIDI1MSwgCisgICAgMjUxLCAxNTgsIDEyOCwgMjI0LCAxNzYsIDE1OCwgMjM1LCA3NCwgMjUxLCAyNTEsIDE1OCwgOCwgNCwgMSwgNjIsIDE1OCwgCisgICAgOCwgNCwgMSwgMjUwLCAxMDMsIDE1OCwgOCwgNCwgMSwgMjQ3LCAyMjMsIDE1OCwgOCwgNCwgMSwgMjQyLCAxNTMsIDE1OCwgCisgICAgOCwgNCwgMSwgNzIsIDE1OCwgOCwgNCwgMSwgMjM4LCA1LCAxNTgsIDgsIDQsIDEsIDIzNiwgMTU2LCAxNTgsIDgsIDQsIDEsIAorICAgIDIzNCwgMjQ3LCAxNTgsIDgsIDQsIDEsIDcwLCAxNTgsIDgsIDQsIDEsIDIyNywgMjUxLCAxNTgsIDgsIDQsIDEsIDIyNywgCisgICAgMTE4LCAxNTgsIDgsIDQsIDEsIDE1NiwgMTU4LCA4LCA0LCAxLCAyMjMsIDI0MywgMTU4LCA4LCA0LCAxLCAyMjAsIDIxNCwgCisgICAgMTU4LCA4LCA0LCAxLCA3NCwgMTU4LCA4LCA0LCAxLCAyMTYsIDIyNiwgMTU4LCA4LCA0LCAxLCAyMTQsIDE2NywgMTU4LCA4LCAKKyAgICA0LCAxLCAxNDYsIDE1OCwgOCwgNCwgMSwgMjEyLCAxMjIsIDE1OCwgOCwgNCwgMSwgMjA3LCA4MywgMTU4LCA4LCA0LCAxLCAKKyAgICA2NiwgMTU4LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTU4LCA4LCA0LCAxLCAyMDEsIDE0NywgMTU4LCA4LCA0LCAxLCAyMDAsIAorICAgIDE5NSwgMTU4LCA4LCA0LCAxLCAyMDAsIDEyMywgMTU4LCA4LCA0LCAxLCAxOTksIDE1NywgMTU4LCA0OSwgMjQyLCAxOTYsIAorICAgIDE1OSwgMTU4LCA4MywgMjI0LCAxNzYsIDE1OCwgNTEsIDI0MiwgMTk2LCAxNTksIDE1OCwgMjA1LCAyNDAsIDE1OCwgNDksIAorICAgIDY0LCAyMTYsIDExNSwgMTU4LCA1MSwgNjQsIDIxNiwgMTE1LCAxMzAsIDE0MSwgMjM2LCAxODMsIDIwOCwgNzYsIDEzMCwgCisgICAgNDksIDI0MywgMTYsIDE1OSwgMTMwLCA1MSwgMjQzLCAxNiwgMTU5LCAxMzAsIDE0MSwgMjQ2LCA3MCwgMTMwLCA2OSwgMTAxLCAKKyAgICAyNDAsIDE4MiwgMTMwLCA2OSwgMSwgMjAxLCAwLCAxMzAsIDY5LCAxLCA0LCA2MiwgMTMwLCA2OSwgMSwgNCwgNzAsIDEzMCwgCisgICAgNjksIDEsIDQsIDY2LCAxMzAsIDY5LCAxLCA0LCA3MiwgMTMwLCA2OSwgMSwgNCwgNzQsIDEzMCwgNjksIDEsIDQsIDE4MywgCisgICAgMTMwLCA2OSwgMSwgNCwgMTk5LCAyMTEsIDEzMCwgNjksIDEsIDQsIDE5OSwgMjQ1LCAxMzAsIDY5LCAxLCA0LCAyMDQsIAorICAgIDIxNSwgMTMwLCAyMjcsIDMyLCAyMTQsIDI0OCwgMjA5LCAxLCA4MSwgMTMwLCA2OSwgMSwgNjIsIDEzMCwgNjksIDEsIDcwLCAKKyAgICAxMzAsIDY5LCAxLCA2NiwgMTMwLCA2OSwgMSwgNzIsIDEzMCwgNjksIDEsIDc0LCAxMzAsIDY5LCAxLCAxNjEsIDEzMCwgNjksIAorICAgIDEsIDIyNiwgMTYzLCAxMzAsIDY5LCAxLCAyMjYsIDE1LCAxMzAsIDY5LCAxLCAyMjcsIDgsIDEzMCwgNjksIDEsIDIyNiwgCisgICAgODgsIDEzMCwgNjksIDEsIDIxMiwgNjQsIDEzMCwgNjksIDEsIDIwOSwgMTgyLCAxMzAsIDY5LCAxLCAyMDgsIDI0LCAxMzAsIAorICAgIDY5LCAxLCAyMTEsIDIwMiwgMTMwLCA2OSwgMSwgMjA5LCAyOSwgMTMwLCA2OSwgMSwgMjA3LCAzNiwgMTMwLCA2OSwgMSwgCisgICAgMjA2LCAxNSwgMTMwLCA2OSwgMSwgMjA0LCAyMTUsIDEzMCwgNjksIDEsIDIwNiwgMjAxLCAxMzAsIDY5LCAxLCAxMzgsIAorICAgIDEzMCwgNjksIDEsIDE4OCwgMTMwLCA2OSwgMSwgMjE5LCAxNTAsIDEzMCwgNjksIDEsIDIxOCwgMTMzLCAxMzAsIDY5LCAxLCAKKyAgICAyMjAsIDM0LCAxMzAsIDY5LCAxLCAyMTgsIDI0MSwgMTMwLCA2OSwgMSwgMTQ0LCAxMzAsIDY5LCAxLCAyMzQsIDc1LCAxMzAsIAorICAgIDY5LCAxLCAyMzMsIDk3LCAxMzAsIDY5LCAxLCAyMzQsIDEzOSwgMTMwLCA2OSwgMSwgMjMzLCAyMDcsIDEzMCwgNjksIDEsIAorICAgIDE3OCwgMTMwLCA2OSwgMSwgMjIxLCAyMTEsIDEzMCwgNjksIDEsIDIyMSwgNDEsIDEzMCwgNjksIDEsIDIyMiwgNzYsIDEzMCwgCisgICAgNjksIDEsIDIyMSwgMTM2LCAxMzAsIDY5LCAxLCAxODMsIDEzMCwgNjksIDEsIDE5OSwgMjExLCAxMzAsIDY5LCAxLCAxOTksIAorICAgIDI0NSwgMTMwLCA2OSwgMSwgMjEzLCAyNTIsIDEzMCwgNjksIDEsIDIxMywgODgsIDEzMCwgNjksIDEsIDIxMiwgMTc1LCAKKyAgICAxMzAsIDY5LCAxLCAyMTMsIDE5MCwgMTMwLCA2OSwgMSwgMjEzLCAxLCAxMzAsIDY5LCAxLCAyMDEsIDExNCwgMTMwLCA2OSwgCisgICAgMSwgMjIwLCAyMTQsIDEzMCwgNjksIDIwMiwgMTg5LCAyMDksIDEsIDgxLCAxMzAsIDY5LCAyMTAsIDE3MiwgMjA5LCAxLCAKKyAgICA4MSwgMTMwLCAyOSwgMjM3LCA5MywgMTMwLCAyOSwgMSwgMjI2LCAxMjEsIDEzMCwgMjksIDEsIDIwOCwgMTcxLCAxMzAsIAorICAgIDI5LCAxLCAyMjYsIDExNCwgMTMwLCAyOSwgMSwgMjE5LCAxNDMsIDEzMCwgMjksIDEsIDIxOSwgMTQxLCAxMzAsIDI5LCAxLCAKKyAgICAyMTksIDE0MCwgMTMwLCAyOSwgMSwgMjA1LCAyNTMsIDEzMCwgMjksIDEsIDIwOCwgMTYwLCAxMzAsIDI5LCAxLCAyMTMsIAorICAgIDc4LCAxMzAsIDI5LCAxLCAyMTMsIDczLCAxMzAsIDI5LCAxLCAyMTMsIDcwLCAxMzAsIDI5LCAxLCAyMTMsIDYzLCAxMzAsIAorICAgIDI5LCAxLCAyMTMsIDU4LCAxMzAsIDI5LCAxLCAyMTMsIDUzLCAxMzAsIDI5LCAxLCAyMTMsIDY0LCAxMzAsIDI5LCAxLCAKKyAgICAyMTMsIDc2LCAxMzAsIDI5LCAxLCAyMjEsIDE5NywgMTMwLCAyOSwgMSwgMjE1LCAxOTAsIDEzMCwgMjksIDEsIDIwOCwgCisgICAgMTY4LCAxMzAsIDI5LCAxLCAyMTUsIDE3OSwgMTMwLCAyOSwgMSwgMjA5LCAxMjksIDEzMCwgMjksIDEsIDIwOCwgMTY1LCAKKyAgICAxMzAsIDI5LCAxLCAyMjgsIDE3NCwgMTMwLCAyOSwgMSwgMjQ2LCAxNjgsIDEzMCwgMjksIDEsIDIwOCwgMTc1LCAxMzAsIAorICAgIDI5LCAxLCAyNDYsIDIzMiwgMTMwLCAyOSwgMSwgMjI2LCAxODMsIDEzMCwgMjksIDEsIDIwNiwgODAsIDEzMCwgMjksIDEsIAorICAgIDIxNSwgMjI3LCAxMzAsIDI5LCAxLCAyMzQsIDY2LCAxMzAsIDI5LCAxLCA2MiwgMTMwLCAyOSwgMSwgMjUxLCAyMjEsIDEzMCwgCisgICAgMjksIDEsIDE4MywgMTMwLCAyOSwgMSwgMjAwLCA5OCwgMTMwLCAyOSwgMSwgMjM4LCAxNDIsIDEzMCwgMjksIDEsIDcyLCAKKyAgICAxMzAsIDI5LCAxLCAyMDAsIDM4LCAxMzAsIDI5LCAxLCAyMDAsIDUxLCAxMzAsIDI5LCAxLCA3NCwgMTMwLCAyOSwgMSwgCisgICAgMjAxLCAxMTQsIDEzMCwgMjksIDEsIDIwMSwgMTEwLCAxMzAsIDI5LCAxLCAyMTcsIDEyMSwgMTMwLCAyOSwgMSwgMTk5LCAKKyAgICAyNDUsIDEzMCwgMjksIDEsIDY2LCAxMzAsIDI5LCAxLCAyMDEsIDUwLCAxMzAsIDI5LCAxLCAyMDEsIDY0LCAxMzAsIDI5LCAKKyAgICAxLCAyMDEsIDMxLCAxMzAsIDI5LCAxLCAxOTksIDIxMSwgMTMwLCAyOSwgMSwgMjM4LCA2OSwgMTMwLCAyOSwgMSwgMjAwLCAKKyAgICA5LCAxMzAsIDI5LCAxLCA3MCwgMTU4LCAyNDcsIDU4LCA1NCwgMTU4LCAyMTUsIDU2LCA1NCwgMTU4LCAyMTgsIDIxNSwgNTQsIAorICAgIDE1OCwgMjIyLCAyMjgsIDE1OCwgMjQ4LCA0NiwgMTQ4LCAxNTgsIDIwMCwgNDIsIDU0LCAxNTgsIDIwMCwgMjQ2LCA1NCwgCisgICAgMTMwLCAyMzYsIDIzOSwgMTYyLCAyMDMsIDQyLCAxMzAsIDk4LCA0OCwgMTMwLCAxODIsIDQ4LCAxMzAsIDg3LCA0OCwgMTMwLCAKKyAgICAxOTEsIDQ4LCAxMzAsIDYzLCAyMDgsIDE5MywgMTMwLCA2NCwgMjQ2LCAxNTUsIDIyOCwgNjIsIDI1MSwgNTgsIDI1MSwgODEsIAorICAgIDIyOCwgNjIsIDI1MSwgNTgsIDIxMCwgMTU0LCAyMjgsIDYyLCAyNTEsIDU4LCAyMDYsIDE1MiwgMjE3LCAxMzksIDIxMywgCisgICAgMTI4LCAyNDcsIDIwLCAyMTMsIDEyOCwgMjQ3LCAyMCwgMzAsIDY4LCA1LCAyNTAsIDg3LCA2MiwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDU2LCA3MiwgMzAsIDY4LCA1LCAyNTAsIDY1LCA3MCwgMzAsIDY4LCA1LCAyNTAsIDMzLCA3NCwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDgzLCA2NiwgMzAsIDY4LCA1LCAyNTAsIDEwMiwgMjQyLCA1OCwgMzAsIDY4LCA1LCAyNTAsIDQ5LCAyNDEsIDE3NSwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDg5LCAyNDEsIDc2LCAzMCwgNjgsIDUsIDI1MCwgNzksIDI0MCwgMjExLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgNDMsIDIzOSwgMTM3LCAzMCwgNjgsIDUsIDI1MCwgMzcsIDIyNywgMjQ4LCAzMCwgNjgsIDUsIDI1MCwgNDgsIDIyNywgMjI3LCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgNTgsIDIyNywgMTY2LCAzMCwgNjgsIDUsIDI1MCwgMjksIDIyNywgMTQ3LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgMTcsIDE2MSwgMzAsIDY4LCA1LCAyNTAsIDUwLCAyMjcsIDgsIDMwLCA2OCwgNSwgMjUwLCAyNywgMjI2LCAxNjMsIAorICAgIDMwLCA2OCwgNSwgMjUwLCAyNCwgMjI2LCA4OCwgMzAsIDY4LCA1LCAyNTAsIDEzLCAyMjYsIDE1LCAzMCwgNjgsIDUsIDI1MCwgCisgICAgMTQsIDE3OCwgMzAsIDY4LCA1LCAyNTAsIDgwLCAyMjIsIDc2LCAzMCwgNjgsIDUsIDI1MCwgMjEsIDIyMSwgMjExLCAzMCwgCisgICAgNjgsIDUsIDI1MCwgNzgsIDIyMSwgMTM2LCAzMCwgNjgsIDUsIDI1MCwgNzAsIDIyMSwgNDEsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA5MSwgMTg4LCAzMCwgNjgsIDUsIDI1MCwgNjksIDIyMCwgMzQsIDMwLCA2OCwgNSwgMjUwLCA2MywgMjE5LCAxNTAsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA0MiwgMjE4LCAyNDEsIDMwLCA2OCwgNSwgMjUwLCAzOSwgMjE4LCAxMzMsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA5OCwgMTcyLCAzMCwgNjgsIDUsIDI1MCwgMjIsIDIxNiwgNzMsIDMwLCA2OCwgNSwgMjUwLCA1NSwgMjE1LCAyMDQsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA4MiwgMjE1LCAxMDYsIDMwLCA2OCwgNSwgMjUwLCA0NCwgMjE0LCAyMjQsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA3NywgMjE0LCAxNTksIDMwLCA2OCwgNSwgMjUwLCAxNiwgMjE0LCAxMzksIDMwLCA2OCwgNSwgMjUwLCA3MiwgMjE0LCAxMjEsIAorICAgIDMwLCA2OCwgNSwgMjUwLCA2MSwgMjE0LCAxMDksIDMwLCA2OCwgNSwgMjUwLCAzNCwgMjEzLCAyNTIsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA2NiwgMjEzLCAxOTAsIDMwLCA2OCwgNSwgMjUwLCA0MSwgMjEzLCA4OCwgMzAsIDY4LCA1LCAyNTAsIDEwMCwgMjEzLCAKKyAgICAxLCAzMCwgNjgsIDUsIDI1MCwgNjcsIDIxMiwgMTc1LCAzMCwgNjgsIDUsIDI1MCwgNjIsIDIxMiwgNjQsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA4NSwgMjExLCAyMDIsIDMwLCA2OCwgNSwgMjUwLCA1MywgMjA5LCAxODIsIDMwLCA2OCwgNSwgMjUwLCA4MSwgMjA5LCAKKyAgICAyOSwgMzAsIDY4LCA1LCAyNTAsIDM2LCAyMDgsIDI0LCAzMCwgNjgsIDUsIDI1MCwgMzUsIDIwNywgMzYsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA5NiwgMjA2LCAyMDEsIDMwLCA2OCwgNSwgMjUwLCA1NywgMjA2LCAxNSwgMzAsIDY4LCA1LCAyNTAsIDk0LCAxMzgsIAorICAgIDMwLCA2OCwgNSwgMjUwLCAyNSwgMjA0LCAyMTUsIDMwLCA2OCwgNSwgMjUwLCA0MCwgMjAxLCAxMTQsIDMwLCA2OCwgNSwgCisgICAgMjUwLCAxOSwgMjAxLCA2NCwgMzAsIDY4LCA1LCAyNTAsIDU0LCAyMDEsIDMxLCAzMCwgNjgsIDUsIDI1MCwgNTIsIDIwMSwgCisgICAgMCwgMzAsIDY4LCA1LCAyNTAsIDc2LCAxOTksIDExNCwgMzAsIDY4LCA1LCAyNTAsIDIwLCAxOTksIDg5LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgNzMsIDE5OSwgMTQsIDMwLCA2OCwgNSwgMjUwLCA2OCwgMjU0LCAxNDcsIDMwLCA2OCwgNSwgMjUwLCA1MSwgMjU0LCAKKyAgICAzNSwgMzAsIDY4LCA1LCAyNTAsIDEwLCAyNTAsIDEzOSwgMzAsIDY4LCA1LCAyNTAsIDIzLCAyMzksIDEwMywgMzAsIDY4LCAKKyAgICA1LCAyNTAsIDYsIDIzOSwgMTAyLCAzMCwgNjgsIDUsIDI1MCwgNDYsIDIxOCwgNjksIDMwLCA2OCwgNSwgMjUwLCA2NCwgCisgICAgMjE0LCAyMjIsIDMwLCA2OCwgNSwgMjUwLCAzMiwgMjE0LCAyMjYsIDMwLCA2OCwgNSwgMjUwLCAxOCwgMjEzLCAyNTAsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA2MCwgMjEzLCAyNDksIDMwLCA2OCwgNSwgMjUwLCAyNiwgMjEzLCAwLCAzMCwgNjgsIDUsIDI1MCwgMjgsIAorICAgIDIwNywgMzMsIDMwLCA2OCwgNSwgMjUwLCA4LCAyMDQsIDE2OCwgMzAsIDY4LCA1LCAyNTAsIDUsIDEwNSwgMzAsIDY4LCAxNiwgCisgICAgMjUwLCA3NSwgMzAsIDY4LCAxNiwgMjUwLCA3NCwgMzAsIDY4LCAxNiwgMjUwLCA3MSwgMzAsIDY4LCAxNiwgMjUwLCA1OSwgCisgICAgMzAsIDY4LCAxNiwgMjUwLCA0NywgMzAsIDY4LCAxNiwgMjUwLCA0NSwgMzAsIDY4LCAxNiwgMjUwLCAzOCwgMzAsIDY4LCAKKyAgICAxNiwgMjUwLCAzMSwgMzAsIDY4LCAxNiwgMjUwLCAzMCwgMzAsIDY4LCAxNiwgMjUwLCAxNSwgMzAsIDY4LCAxNiwgMjUwLCAKKyAgICAxMiwgMzAsIDY4LCAxNiwgMjUwLCAxMSwgMzAsIDY4LCAxNiwgMjUwLCA5LCAzMCwgNjgsIDE2LCAyNTAsIDcsIDMwLCA2OCwgCisgICAgMTM2LCAyNTAsIDQsIDIyMiwgMTgwLCAzMCwgNjgsIDEzNiwgMjUwLCAzLCAyMDAsIDI1MCwgMzAsIDY4LCAxMzYsIDI1MCwgCisgICAgMiwgMjQxLCAxNTgsIDMwLCA2OCwgMTM2LCAyNTAsIDEsIDIzOCwgMTE5LCAzMCwgNjgsIDEzNiwgMjUwLCAwLCAyMjIsIAorICAgIDE1MCwgMzAsIDY4LCAxMzYsIDI0OSwgMjU1LCAyMDgsIDExNiwgMzAsIDY4LCAxMzYsIDI0OSwgMjU0LCAyMzgsIDUwLCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyNTMsIDIxMywgMjE2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTIsIDIxMCwgNjQsIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDI1MSwgMjM0LCAxMzgsIDMwLCA2OCwgMTM2LCAyNDksIDI1MCwgMjA4LCAyNTEsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDI0OSwgMjQ4LCAxMjIsIDMwLCA2OCwgMTM2LCAyNDksIDI0OCwgMjQyLCAyNTUsIDMwLCA2OCwgMTM2LCAyNDksIDI0NywgCisgICAgMjQ4LCAyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ2LCAyMDEsIDM5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDUsIDI0OSwgNzMsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDI0NCwgMjE3LCA4OCwgMzAsIDY4LCAxMzYsIDI0OSwgMjQzLCAyMDgsIDIyMywgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjQyLCAyNDIsIDE2MSwgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDI0MSwgMjI3LCA1NiwgMzAsIDY4LCAyMjEsIAorICAgIDk3LCAyNDksIDI0MCwgMjI3LCA2NiwgMzAsIDY4LCAxMzYsIDI0OSwgMjM5LCAyMTcsIDEwMywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjM4LCAyMDEsIDEyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzcsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMzYsIDI1MCwgMjI3LCAKKyAgICAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjM1LCAyMjIsIDMyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzQsIDI0OCwgNDUsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIzMywgMjM1LCAxMDgsIDMwLCA2OCwgMTM2LCAyNDksIDIzMiwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjMxLCAyMDAsIDI0MSwgMzAsIDY4LCAxMzYsIDI0OSwgMjMwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjksIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDIyOCwgMjMzLCAxMjQsIDMwLCA2OCwgMTM2LCAyNDksIDIyNywgMzAsIDY4LCAxMzYsIDI0OSwgMjI2LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyMjUsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMjMsIDIwNCwgMTgzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMjIsIDMwLCA2OCwgMTM2LCAyNDksIDIyMSwgMzAsIDY4LCAxMzYsIDI0OSwgMjIwLCAyNDYsIDEwNCwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjE5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTgsIDMwLCA2OCwgMTM2LCAyNDksIDIxNywgMjM2LCA0NiwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjE2LCAyNTAsIDIxNCwgMzAsIDY4LCAxMzYsIDI0OSwgMjE1LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTQsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDIxMywgMzAsIDY4LCAxMzYsIDI0OSwgMjEyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTEsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIxMCwgMzAsIDY4LCAxMzYsIDI0OSwgMjA5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDgsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDIwNywgMzAsIDY4LCAxMzYsIDI0OSwgMjA2LCAyMjEsIDg5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDUsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIwNCwgMjA1LCAxMDgsIDMwLCA2OCwgMTM2LCAyNDksIDIwMywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjAyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDEsIDMwLCA2OCwgMTM2LCAyNDksIDIwMCwgMzAsIDY4LCAxMzYsIDI0OSwgMTk5LCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAxOTgsIDMwLCA2OCwgMTM2LCAyNDksIDE5NywgMzAsIDY4LCAxMzYsIDI0OSwgMTk2LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAxOTUsIDMwLCA2OCwgMTM2LCAyNDksIDE5NCwgMzAsIDY4LCAxMzYsIDI0OSwgMTkzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxOTIsIDIzNCwgMTA3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNzEsIDIzNiwgMjUxLCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAxNjgsIDI0OSwgNTAsIDMwLCA2OCwgMTM2LCAyNDksIDE2MywgMjA4LCAyMzAsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDE2MiwgNDgsIDMwLCA2OCwgMTM2LCAyNDksIDE2MSwgMzAsIDY4LCAxMzYsIDI0OSwgMTYwLCAyMDcsIDE2OSwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMTU5LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTgsIDMwLCA2OCwgMTM2LCAyNDksIDE1NywgMjAxLCAzNSwgCisgICAgMjQ3LCAxNywgMzAsIDY4LCAxMzYsIDI0OSwgMTU2LCAyNDcsIDE3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTUsIDI0NywgMTgsIAorICAgIDIzNiwgMjE1LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTQsIDIwMSwgMzcsIDMwLCA2OCwgMTM2LCAyNDksIDE1MywgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMTUyLCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMTUxLCAyNDEsIDExLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTAsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDE0OSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQ3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDYsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDE0NSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQ0LCAyNDEsIDI0NywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMTQzLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDIsIDMwLCA2OCwgMTM2LCAyNDksIDE0MSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQwLCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAxMzksIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAyMjQsIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxOTEsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxOTAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgCisgICAgMjQ5LCAxODksIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAKKyAgICAxODcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODYsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODUsIAorICAgIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODQsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODMsIDMwLCA2OCwgCisgICAgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODIsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODEsIDMwLCA2OCwgMTM2LCAKKyAgICAyMDIsIDI0NSwgMjQ5LCAxODAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzksIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxNzgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgCisgICAgMjQ5LCAxNzYsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzUsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAKKyAgICAxNzQsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzMsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzIsIAorICAgIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjksIDMwLCA2OCwgCisgICAgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjYsIDMwLCA2OCwgMTM2LCAKKyAgICAyMDIsIDI0NSwgMjQ5LCAxNjUsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjQsIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxNDgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxMzgsIDI1MSwgMjE0LCAyMDAsIDIzOCwgMjEwLCAKKyAgICAxNTUsIDIyNCwgMTc2LCAyNTEsIDIxNCwgMjAwLCAyMzgsIDIxMCwgMTU1LCAyNDAsIDE4MiwgMjUxLCAyMTQsIDI0NywgNywgCisgICAgODEsIDI1MSwgMjE0LCA0MSwgMTAyLCAyNTEsIDIxNCwgNDEsIDEwNSwgMjUxLCAyMTQsIDQxLCAxNDcsIDI1MSwgMjE0LCAKKyAgICA0MSwgMTQ5LCAyNTEsIDIxNCwgNDEsIDE2NCwgMjUxLCAyMTQsIDQxLCAxODcsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzUsIAorICAgIDI1MSwgMjE0LCA0MSwgMTkyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTEzLCAyNTEsIDIxNCwgNDEsIDIwNiwgMTY2LCAyNTEsIAorICAgIDIxNCwgNDEsIDIwNCwgMTU5LCAyNTEsIDIxNCwgNDEsIDIwNiwgNjcsIDI1MSwgMjE0LCA0MSwgMjM2LCAyMzUsIDI1MSwgCisgICAgMjE0LCA0MSwgMjM3LCAxMDQsIDI1MSwgMjE0LCA0MSwgMjA5LCA5MiwgMjUxLCAyMTQsIDQxLCAyMTAsIDEyOSwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzgsIDIyMiwgMjUxLCAyMTQsIDQxLCAyMTksIDEwOCwgMjUxLCAyMTQsIDQxLCAxMTIsIDIzMywgODIsIAorICAgIDI1MSwgMjE0LCA0MSwgMTIwLCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDEyNiwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAKKyAgICAyMzYsIDIyOSwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIwOSwgCisgICAgMTA2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIzOCwgMjMyLCAKKyAgICAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDExMiwgMjA2LCA1MCwgCisgICAgMjUxLCAyMTQsIDQxLCAxMjAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMTI2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIAorICAgIDIzNiwgMjI5LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzNywgNjEsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA5LCAKKyAgICAxMDYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM4LCAyMzIsIAorICAgIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTQsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA2LCAxNjcsIDIwNiwgCisgICAgNTAsIDI1MSwgMjE0LCA0MSwgMjA0LCAxNjAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA2LCA2OCwgMjA2LCA1MCwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzYsIDIzNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgMjUxLCAyMTQsIAorICAgIDQxLCAyMDksIDkzLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTMwLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzOCwgCisgICAgMjIzLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTA5LCAyMDYsIDUwLCAyNTEsIDIxNCwgMjAxLCA1MywgMjQ5LCAKKyAgICA2NSwgMjAzLCAyMzksIDI1MSwgMjE0LCAyMDEsIDUzLCAyMzcsIDczLCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIwMSwgNTMsIAorICAgIDIxMSwgMTk2LCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIwMSwgNTMsIDIwNiwgNzUsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCAKKyAgICA1MywgMjM2LCAyMjIsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjM5LCAxNDAsIDIyMiwgNzUsIDIzNywgNzMsIDIwNywgMjU0LCAKKyAgICAyNTEsIDIxNCwgMjI0LCAxNTcsIDIyMiwgNzUsIDIzNywgNzMsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjIyLCA3NSwgMjExLCAKKyAgICAxOTYsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjIyLCA3NSwgMjA2LCA3NSwgMjA3LCAyNTQsIDMxLCAyNTEsIDI0MiwgMjUwLCAKKyAgICAxNDEsIDExMiwgMjE0LCA4NywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMzQsIDIxMywgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMTEyLCAyMzksIDE2MiwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTY0LCAzMSwgMjUxLCAyNDIsIDI1MCwgCisgICAgMTQxLCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCA1MCwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgNTAsIAorICAgIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIAorICAgIDE2NywgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMTEyLCAyMzMsIDgzLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCAKKyAgICA4MywgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDExMiwgMjA2LCA1MSwgMjA2LCAyNTEsIDMxLCAyNTEsIAorICAgIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIwNiwgNTEsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIAorICAgIDYxLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAxNjcsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDExMiwgMjMzLCA4MywgMjA4LCAKKyAgICAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIzMywgODMsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIwNiwgNTEsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjA2LCAKKyAgICA1MSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDYsIDUxLCAyMDgsIDEwMywgMzEsIAorICAgIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAxNjcsIDIyMSwgMTM5LCAzMSwgMjUxLCAyNDIsIDIzNCwgMTAxLCAxMTIsIDIxNSwgCisgICAgMTIzLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDEwMiwgMzEsIDI1MSwgMjQyLCAyMzQsIDk3LCAxMDIsIDMxLCAyNTEsIAorICAgIDI0MiwgMjM4LCAxMjgsIDEwNSwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMDUsIDMxLCAyNTEsIDI0MiwgMjQyLCAxNTgsIAorICAgIDEyMCwgMjM5LCAxNjEsIDMxLCAyNTEsIDI0MiwgMjM4LCAxMjgsIDEyMCwgMjM5LCAxNjEsIDMxLCAyNTEsIDI0MiwgMjA1LCAKKyAgICA3NCwgMTY0LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIwNiwgCisgICAgMTY3LCAyNTEsIDEwOSwgMTksIDMxLCAyNTEsIDI0MiwgMjM0LCA5NywgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjIyLCAKKyAgICAyMiwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgCisgICAgMjA2LCA2NywgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMzcsIAorICAgIDEwNSwgMjUxLCAxMDksIDE5LCAzMSwgMjUxLCAyNDIsIDIzNCwgOTcsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNiwgCisgICAgOTAsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDExMiwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAKKyAgICAxMjYsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjM4LCAxMjgsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgCisgICAgMjA1LCA3NCwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgCisgICAgMjUxLCAyNDIsIDI0NywgMTE1LCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIyMCwgMTEwLCAyMzcsIDYxLCAKKyAgICAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDExMiwgMjA2LCA1MCwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMzcsIAorICAgIDYxLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDI0MSwgMTM5LCAyMzcsIDYxLCAyMjEsIDEzOSwgMzEsIDI1MSwgMjQyLCAKKyAgICAyMDgsIDY0LCAyMzcsIDEwNSwgMjIxLCAxMzksIDMxLCAxMTIsIDE2NywgNTQsIDMxLCAxMTIsIDE2NywgMiwgMjUxLCAxMDksIAorICAgIDE5LCAzMSwgMTIwLCAyMDYsIDcyLCA1NCwgMzEsIDEyNiwgMjE0LCA4NiwgNTQsIDMxLCAyMDAsIDQ5LCA1NCwgMzEsIDIwNiwgCisgICAgMjUyLCA1NCwgMzEsIDIzOSwgMTYzLCA1NCwgMzEsIDIxNywgMTM2LCA1NCwgMzEsIDEyMCwgMjE3LCAxMzUsIDU0LCAzMSwgCisgICAgMTI2LCAyMTcsIDEzNSwgNTQsIDMxLCAyMzYsIDIyOSwgMjE3LCAxMzUsIDU0LCAzMSwgMjM3LCA2MSwgMjE3LCAxMzUsIDU0LCAKKyAgICAzMSwgMjIyLCAxNiwgNTQsIDMxLCAyMjUsIDIwMSwgMjQ5LCA2NSwgNTQsIDMxLCAyMjQsIDE1MCwgNTQsIDMxLCAyMTcsIDAsIAorICAgIDU0LCAzMSwgMjAwLCAxNzIsIDU0LCAzMSwgMjUwLCAxOTUsIDU0LCAzMSwgMjUwLCAyMTAsIDU0LCAzMSwgMjM1LCA4MywgCisgICAgNTQsIDMxLCAyMDUsIDM1LCAyNDksIDY1LCA1NCwgMzEsIDE5OSwgODIsIDU0LCAzMSwgMTEyLCAyMTQsIDg4LCA1NCwgMzEsIAorICAgIDIwOSwgMTMxLCA1NCwgMzEsIDIyOCwgOTgsIDU0LCAyMTgsIDIzNSwgNTQsIDIxMiwgMjQwLCAyMTAsIDEyNiwgNTQsIDIxMiwgCisgICAgMjQwLCAyMDMsIDI1NCwgNTQsIDIxMiwgMjQwLCAyMTAsIDE1OSwgNTQsIDIxMiwgMjQwLCAyMTAsIDEyNCwgNTQsIDIxMiwgCisgICAgMjQwLCAyNDEsIDI2LCAyMTAsIDEyNCwgNTQsIDIxMiwgMjQwLCAyMDksIDE1NCwgNTQsIDIxMiwgMjQwLCAyNDEsIDEzNSwgCisgICAgNTQsIDIxMiwgMjQwLCAyMTQsIDcxLCA1NCwgMjEyLCAyNDAsIDIxMCwgMTQzLCA1NCwgMjEyLCAyNDAsIDIzOSwgMTE3LCAKKyAgICA1NCwgMjEyLCAyNDAsIDI1MCwgMTg5LCA1NCwgMjEyLCAyNDAsIDI0NywgNTEsIDU0LCAzMSwgMTYsIDIwNiwgMjIyLCAyMTMsIAorICAgIDkwLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDYzLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTUsIDExNSwgMjM0LCAKKyAgICAxMzYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwNiwgMjI1LCAyMzQsIDEzNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ3LCAKKyAgICAxMzgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NiwgMjI3LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDAsIDI1MCwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjM0LCAxMDcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzNiwgMzgsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDIwNiwgMTMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDQ4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDg1LCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyMTAsIDMwLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDYsIDk3LCAyMTUsIDI0MCwgMjQxLCAzLCAKKyAgICAyLCAyMjIsIDE3OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjIyLCAxMjQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxMSwgCisgICAgMjM5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMjQsIDIwNSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAxMDYsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDI0NywgMTIyLCAyMTUsIDEyOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQwLCAxOTUsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDI0NiwgNzYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwOSwgNjMsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDI0NiwgNzcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgMjQ5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTAsIDE3LCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzMsIDEyNCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM0LCA3MiwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjQ4LCAxNywgMjI1LCAxNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ3LCAxMTEsIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIxMywgMjE2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzksIDI0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAKKyAgICAyMzksIDE2OCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA0LCAxOTksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgMjUyLCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTUsIDEyOSwgMjA1LCAxMDgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMiwgMjE1LCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDEzMSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjEyLCAyMzEsIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIyNCwgMTg5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDIzNiwgMjQ5LCAxMjksIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIzNywgMjAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzNSwgNzUsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIAorICAgIDIwOCwgNjUsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDQsIDI1MCwgMTEzLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDEsIDc0LCAKKyAgICAyNDksIDg0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAzOCwgMjE3LCAxMzgsIDk3LCAyMjQsIDAsIDEsIDYyLCAyMjQsIDAsIDEsIAorICAgIDcyLCAyMjQsIDAsIDEsIDI1MCwgMTAzLCAyMjQsIDAsIDEsIDI0OCwgMjAxLCAyMjQsIDAsIDEsIDIzNiwgMTU2LCAyMjQsIAorICAgIDAsIDEsIDI0MiwgMTUzLCAyMjQsIDAsIDEsIDcwLCAyMjQsIDAsIDEsIDIwMSwgMTQ3LCAyMjQsIDAsIDEsIDE5OSwgMTU3LCAKKyAgICAyMjQsIDAsIDEsIDIwNiwgMTI0LCAyMjQsIDAsIDEsIDIyNywgMjUxLCAyMjQsIDAsIDEsIDIyNywgMTE4LCAyMjQsIDAsIDEsIAorICAgIDIxNCwgMTY3LCAyMjQsIDAsIDEsIDE1NiwgMjI0LCAwLCAxLCAyMjMsIDI0MywgMjI0LCAwLCAxLCAyMjAsIDIxNCwgMjI0LCAKKyAgICAwLCAxLCAyMjEsIDE0MSwgMjI0LCAwLCAxLCAyMTksIDIyLCAyMjQsIDAsIDEsIDY2LCAyMjQsIDAsIDEsIDIxNiwgMjI2LCAKKyAgICAyMjQsIDAsIDEsIDIyNiwgMTEwLCAyMjQsIDAsIDEsIDE0NiwgMjI0LCAwLCAxLCAyMTIsIDEyMiwgMjI0LCAwLCAxLCAyMDcsIAorICAgIDgzLCAyMjQsIDAsIDEsIDIwNSwgMCwgMjI0LCAwLCAxLCAyNTEsIDg1LCAyMjQsIDAsIDEsIDIzOCwgMTc5LCAyMjQsIDAsIAorICAgIDEsIDIzNCwgMjQ3LCAyMjQsIDAsIDEsIDIwMCwgMTk1LCAyNDcsIDEyOCwgMSwgNjIsIDI0NywgMTI4LCAxLCAyMTYsIDIxMiwgCisgICAgMjQ3LCAxMjgsIDEsIDI0MiwgMTUzLCAyNDcsIDEyOCwgMSwgMTU2LCAyNDcsIDEyOCwgMSwgMjAzLCAxODAsIDI0NywgMTI4LCAKKyAgICAxLCAxNDYsIDI0NywgMTI4LCAxLCAyMjUsIDQ0LCAyNDcsIDEyOCwgMSwgMjU0LCAxNDcsIDI0NywgMTI4LCAxLCAyMTQsIAorICAgIDE2NywgMjQ3LCAxMjgsIDEsIDI1MCwgMTAzLCAyNDcsIDEyOCwgMSwgMjIzLCAyNDMsIDI0NywgMTI4LCAxLCA3NCwgMjQ3LCAKKyAgICAxMjgsIDEsIDI0MiwgNjAsIDI0NywgMTI4LCAxLCAyMDcsIDgzLCAyNDcsIDEyOCwgMSwgMjEwLCAxMTYsIDI0NywgMTI4LCAKKyAgICAxLCAyMTAsIDExNSwgMjQ3LCAxMjgsIDEsIDIxMiwgMTIyLCAyNDcsIDEyOCwgMSwgMjQ3LCAyMjIsIDI0NywgMTI4LCAxLCAKKyAgICA2NiwgMjQ3LCAxMjgsIDEsIDIxOSwgMjIsIDI0NywgMTI4LCAxLCAyMDAsIDE5NSwgMjQ3LCAxMjgsIDEsIDIyMCwgMjE0LCAKKyAgICAyNDcsIDEyOCwgMSwgMjA0LCAyNTUsIDI0NywgMTI4LCAxLCAyMTYsIDIyNiwgMjQ3LCAxMjgsIDEsIDIwOCwgMTgyLCAyNDcsIAorICAgIDEyOCwgMSwgNzAsIDI0NywgMTI4LCAxLCA3MiwgMjQ3LCAxMjgsIDEsIDIwMywgMTc3LCAyNDcsIDEyOCwgMSwgMjI3LCAKKyAgICAxMTgsIDI0NywgMTI4LCAxLCAyMjcsIDEwOSwgMjQ3LCAxMjgsIDEsIDIyMCwgNzcsIDI0NywgMTI4LCAxLCAyMDMsIDE4MiwgCisgICAgMjQ3LCAxMjgsIDEsIDIzNiwgMTU2LCAyNDcsIDEyOCwgMSwgMjM2LCA5MSwgMjQ3LCAxMjgsIDEsIDIwOCwgMTIzLCAyNDcsIAorICAgIDEyOCwgMSwgMjA4LCAxMjIsIDI0NywgMTI4LCAxLCAyMTksIDI1NSwgMjQ3LCAxMjgsIDEsIDIyOCwgMTUxLCAyNDcsIDEyOCwgCisgICAgMSwgMjQ3LCAyMjEsIDI0NywgMTI4LCAxLCAyMDUsIDAsIDI0NywgMTI4LCAxLCAyMDMsIDE3OSwgMjQ3LCAxMjgsIDEsIAorICAgIDIxMiwgMjE2LCAyNDcsIDEyOCwgMSwgMjIyLCAxMTUsIDI0NywgMTI4LCAxLCAyMjIsIDExNCwgMjQ3LCAxMjgsIDEsIDIyMiwgCisgICAgMTEzLCAyNDcsIDEyOCwgMSwgMjIyLCAxMTIsIDI0NywgMTI4LCAxLCAyMjUsIDQzLCAyNDcsIDEyOCwgMSwgMjM5LCAyOCwgCisgICAgMjQ3LCAxMjgsIDEsIDIwMywgMTc4LCA4NSwgMjM4LCAxMzEsIDIwNiwgNDksIDgxLCA4NSwgMjM4LCAxMzEsIDE3LCAxMDIsIAorICAgIDg1LCAyMzgsIDEzMSwgMTcsIDEwNSwgODUsIDIzOCwgMTMxLCAxNywgMTQ3LCA4NSwgMjM4LCAxMzEsIDE3LCAxNDksIDg1LCAKKyAgICAyMzgsIDEzMSwgMTcsIDE2NCwgODUsIDIzOCwgMTMxLCAxNywgMTg3LCA4NSwgMjM4LCAxMzEsIDE3LCAyMTAsIDEzNSwgODUsIAorICAgIDIzOCwgMTMxLCAxNywgMTkyLCA4NSwgMjM4LCAxMzEsIDE3LCAyMTksIDExMywgODUsIDIzOCwgMTMxLCA0MSwgMjA2LCAKKyAgICAxNjYsIDg1LCAyMzgsIDEzMSwgNDEsIDIwNCwgMTU5LCA4NSwgMjM4LCAxMzEsIDQxLCAyMDYsIDY3LCA4NSwgMjM4LCAxMzEsIAorICAgIDQxLCAyMzYsIDIzNSwgODUsIDIzOCwgMTMxLCA0MSwgMjM3LCAxMDQsIDg1LCAyMzgsIDEzMSwgNDEsIDIwOSwgOTIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIxMCwgMTI5LCA4NSwgMjM4LCAxMzEsIDQxLCAyMzgsIDIyMiwgODUsIDIzOCwgMTMxLCA0MSwgCisgICAgMjE5LCAxMDgsIDg1LCAyMzgsIDEzMSwgNDEsIDExMiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMTIwLCAyMzMsIDgyLCAKKyAgICA4NSwgMjM4LCAxMzEsIDQxLCAxMjYsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAyMDksIDEwNiwgMjMzLCA4MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIzOCwgMjMyLCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgNDAsIDM5LCAxLCA2MiwgNDAsIDM5LCAxLCAyNDksIDgsIDQwLCAKKyAgICAzOSwgMSwgMjI3LCA4LCA0MCwgMzksIDEsIDI0MSwgMTc1LCA0MCwgMzksIDEsIDcyLCA0MCwgMzksIDEsIDIwMywgNTksIAorICAgIDQwLCAzOSwgMSwgMTk5LCA4OSwgNDAsIDM5LCAxLCAyMzQsIDEzOSwgNDAsIDM5LCAxLCAyMDYsIDEwNiwgNDAsIDM5LCAxLCAKKyAgICA3MCwgNDAsIDM5LCAxLCAxNjEsIDQwLCAzOSwgMSwgMjM4LCAyMDksIDQwLCAzOSwgMSwgMjM4LCAxOTAsIDQwLCAzOSwgMSwgCisgICAgMjM4LCAxNzksIDQwLCAzOSwgMSwgMjM4LCA5NCwgNDAsIDM5LCAxLCA3NCwgNDAsIDM5LCAxLCAyMTYsIDczLCA0MCwgMzksIAorICAgIDEsIDIxMCwgNjUsIDQwLCAzOSwgMSwgMjI2LCAxNSwgNDAsIDM5LCAxLCAyMzgsIDExNSwgNDAsIDM5LCAxLCAyMzgsIDEwNCwgCisgICAgNDAsIDM5LCAxLCAyMDYsIDIwMSwgNDAsIDM5LCAxLCA2NiwgNDAsIDM5LCAxLCAyMzgsIDIxMiwgNDAsIDM5LCAxLCAyMTUsIAorICAgIDIzMiwgNDAsIDM5LCAxLCAyMjYsIDE5MiwgNDAsIDM5LCAxLCAyMzgsIDI0OCwgNDAsIDM5LCAxLCAyMzgsIDEwNiwgNDAsIAorICAgIDM5LCAxLCAyNDcsIDgsIDQwLCAzOSwgMSwgMjI4LCAxNTEsIDQwLCAzOSwgMSwgMjAzLCAxODIsIDQwLCAzOSwgMSwgMjM4LCAKKyAgICA4NywgNDAsIDM5LCAyMTgsIDkzLCAxMDIsIDQwLCAzOSwgMjE4LCA5MywgMTY0LCA0MCwgMzksIDIxOCwgOTMsIDIwNiwgCisgICAgMTY2LCA0MCwgMzksIDIxOCwgOTMsIDIzNywgMTA0LCAyMzUsIDkzLCAxLCAyNTEsIDE3OSwgMjM1LCA5MywgMSwgMjQ5LCAKKyAgICAxMDEsIDIzNSwgOTMsIDEsIDIzNSwgMTU4LCAyMzUsIDkzLCAxLCAyNDIsIDM5LCAyMzUsIDkzLCAxLCAyNTEsIDE3NSwgCisgICAgMjM1LCA5MywgMSwgMjE0LCAxNTAsIDIzNSwgOTMsIDEsIDIyOCwgNywgMjM1LCA5MywgMSwgMjM0LCAyMjYsIDIzNSwgOTMsIAorICAgIDEsIDIwNiwgNjMsIDIzNSwgOTMsIDEsIDIzOCwgMjIwLCAyMzUsIDkzLCAxLCAyMjUsIDIzOCwgMjM1LCA5MywgMSwgMjI1LCAKKyAgICAxNTMsIDIzNSwgOTMsIDEsIDIyMiwgMTcyLCAyMzUsIDkzLCAxLCAyMjAsIDExMiwgMjM1LCA5MywgMSwgMjI3LCAyMjAsIAorICAgIDIzNSwgOTMsIDEsIDIwMywgMjAwLCAyMzUsIDkzLCAxLCAyMTYsIDE4NywgMjM1LCA5MywgMSwgMjE5LCAxMDgsIDIzNSwgCisgICAgOTMsIDEsIDIxMywgMjI4LCAyMzUsIDkzLCAxLCAyMTEsIDI0MiwgMjM1LCA5MywgMSwgMjA2LCAxODAsIDIzNSwgOTMsIDEsIAorICAgIDIwMSwgMTAsIDIzNSwgOTMsIDEsIDIzNywgMTc1LCAyMzUsIDkzLCAxLCAyMjgsIDE1NSwgMjM1LCA5MywgMSwgMjMzLCA2NiwgCisgICAgMjM1LCA5MywgMSwgMjE3LCAxMCwgMjM1LCA5MywgMSwgMjE5LCAxMTQsIDIzMywgODIsIDQwLCAyMTYsIDE4LCAxLCAyNTEsIAorICAgIDg1LCA0MCwgMjE2LCAxOCwgMSwgMjQ4LCAzLCA0MCwgMjE2LCAxOCwgMSwgMjM2LCA3MywgNDAsIDIxNiwgMTgsIDEsIDI0MCwgCisgICAgMTk5LCA0MCwgMjE2LCAxOCwgMSwgNzIsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDU5LCA0MCwgMjE2LCAxOCwgMSwgMjM5LCAKKyAgICA4NSwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgOTYsIDQwLCAyMTYsIDE4LCAxLCAyMzksIDgzLCA0MCwgMjE2LCAxOCwgMSwgNzAsIAorICAgIDQwLCAyMTYsIDE4LCAxLCAyMjYsIDc3LCA0MCwgMjE2LCAxOCwgMSwgMjI1LCAxMiwgNDAsIDIxNiwgMTgsIDEsIDIyMiwgCisgICAgMzgsIDQwLCAyMTYsIDE4LCAxLCAyMjAsIDIyLCA0MCwgMjE2LCAxOCwgMSwgMjAyLCAxNzgsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMTYsIDYwLCA0MCwgMjE2LCAxOCwgMSwgMjEzLCAxNTMsIDQwLCAyMTYsIDE4LCAxLCAyMDksIDE2MSwgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIwNywgOCwgNDAsIDIxNiwgMTgsIDEsIDY2LCA0MCwgMjE2LCAxOCwgMSwgMjQ2LCAyNDUsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMTAsIDEsIDQwLCAyMTYsIDE4LCAxLCAyMTAsIDY3LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCAyMTMsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMDAsIDI5LCA0MCwgMjE2LCAxOCwgMSwgNzQsIDQwLCAyMTYsIDE4LCAxLCAyMTcsIDYzLCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjM4LCAyNDgsIDQwLCAyMTYsIDE4LCAxLCAxNDQsIDQwLCAyMTYsIDE4LCAxLCAyMDUsIDEwLCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjAzLCA0NywgNDAsIDIxNiwgMTgsIDEsIDIwMCwgMzMsIDQwLCAyMTYsIDE4LCAxLCAyMDAsIDMxLCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjAwLCA2NSwgNDAsIDIxNiwgMTgsIDEsIDIyOCwgMTc4LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCAyMTEsIDQwLCAyMTYsIAorICAgIDE4LCAxLCAxODMsIDQwLCAyMTYsIDE4LCAxLCAyMzIsIDI0MCwgMzgsIDQwLCAyMTYsIDE4LCAxLCAyNTEsIDg1LCAzOCwgCisgICAgNDAsIDIxNiwgMTgsIDEsIDI0MCwgMTk5LCAzOCwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgOTYsIDM4LCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjIwLCAyMiwgMzgsIDQwLCAyMTYsIDE4LCAxLCAyMDksIDE2MSwgMjA0LCAyNiwgMSwgMjUxLCAxMTYsIDIwNCwgMjYsIAorICAgIDEsIDI0OCwgMjA4LCAyMDQsIDI2LCAxLCAyMzYsIDYxLCAyMDQsIDI2LCAxLCAyMjYsIDIwNywgMjA0LCAyNiwgMSwgMjQxLCAKKyAgICAxMzYsIDIwNCwgMjYsIDEsIDIzMywgMjA3LCAyMDQsIDI2LCAxLCAyMDEsIDAsIDIwNCwgMjYsIDEsIDE5OSwgODAsIDIwNCwgCisgICAgMjYsIDEsIDIzMywgMTE2LCAyMDQsIDI2LCAxLCAyMDYsIDE0NiwgMjA0LCAyNiwgMSwgMTk5LCAyMzQsIDIwNCwgMjYsIDEsIAorICAgIDIyNywgODYsIDIwNCwgMjYsIDEsIDIxMCwgMjEsIDIwNCwgMjYsIDEsIDIyNSwgODcsIDIwNCwgMjYsIDEsIDIyMiwgNDcsIAorICAgIDIwNCwgMjYsIDEsIDI0MSwgOTYsIDIwNCwgMjYsIDEsIDIxOCwgODksIDIwNCwgMjYsIDEsIDE5OSwgMywgMjA0LCAyNiwgMSwgCisgICAgMjEyLCAxOCwgMjA0LCAyNiwgMSwgMjUxLCAxNzEsIDIwNCwgMjYsIDEsIDIxNCwgMjI0LCAyMDQsIDI2LCAxLCAyMTIsIDU1LCAKKyAgICAyMDQsIDI2LCAxLCAyMTQsIDEwMiwgMjA0LCAyNiwgMSwgMjEzLCAyMDcsIDIwNCwgMjYsIDEsIDIwNiwgMTEwLCAyMDQsIAorICAgIDI2LCAxLCAyMzUsIDE5NCwgMjA0LCAyNiwgMSwgMTM4LCAyMDQsIDI2LCAxLCA3MCwgMjA0LCAyNiwgMSwgNjYsIDIwNCwgCisgICAgMjYsIDEsIDIwOCwgMTM0LCAyMDQsIDI2LCAyMDAsIDIzOCwgMjQwLCAyMzksIDQwLCAyMTYsIDEyLCAyLCA2MiwgNDAsIAorICAgIDIxNiwgMTIsIDIsIDcwLCA0MCwgMjE2LCAxMiwgMiwgNjYsIDQwLCAyMTYsIDEyLCAyLCAxNjEsIDQwLCAyMTYsIDEyLCAyLCAKKyAgICAyMjYsIDE1LCA0MCwgMjE2LCAxMiwgMiwgMjM2LCA4OSwgNDAsIDIxNiwgMTIsIDIsIDIzNSwgNTAsIDQwLCAyMTYsIDEyLCAKKyAgICAyLCAyMDAsIDE4MSwgNDAsIDIxNiwgMTIsIDIsIDI0NywgMTkwLCA0MCwgMjE2LCAxMiwgMiwgMjI3LCAyNDgsIDQwLCAyMTYsIAorICAgIDEyLCAyLCAyMjcsIDIwNywgNDAsIDIxNiwgMTIsIDIsIDIwNywgMzYsIDQwLCAyMTYsIDEyLCAyLCAyMDQsIDIxNSwgNDAsIAorICAgIDIxNiwgMTIsIDIsIDI0MiwgNTgsIDQwLCAyMTYsIDEyLCAyLCAyNDEsIDc2LCA0MCwgMjE2LCAxMiwgMiwgMjM5LCAxMzcsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMDYsIDEyMiwgNDAsIDIxNiwgMTIsIDIsIDE3MiwgNDAsIDIxNiwgMTIsIDIsIDI0OSwgMTM2LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjM3LCAxOTUsIDQwLCAyMTYsIDEyLCAyLCAxODgsIDQwLCAyMTYsIDEyLCAyLCAyMTgsIDEzMywgCisgICAgNDAsIDIxNiwgMTIsIDIsIDE3OCwgNDAsIDIxNiwgMTIsIDIsIDIyMSwgMjExLCA0MCwgMjE2LCAxMiwgMiwgMjIxLCA0MSwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDE4MywgNDAsIDIxNiwgMTIsIDIsIDIwMywgOTAsIDQwLCAyMTYsIDEyLCAyLCAyMDIsIDIzNCwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIxMywgMjUyLCA0MCwgMjE2LCAxMiwgMiwgMjEyLCAxNzUsIDQwLCAyMTYsIDEyLCAyLCAxOTQsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMTIsIDY0LCA0MCwgMjE2LCAxMiwgMiwgMTk5LCAxMTQsIDQwLCAyMTYsIDEyLCAyLCAyMTAsIAorICAgIDExNCwgNDAsIDIxNiwgMTIsIDIsIDIwOCwgMTc5LCA0MCwgMjE2LCAxMiwgMiwgMTQ0LCA0MCwgMjE2LCAxMiwgMiwgMjUwLCAKKyAgICAxMzMsIDQwLCAyMTYsIDEyLCAyLCAyNTAsIDEzMiwgNDAsIDIxNiwgMTIsIDIsIDI1MCwgMTMxLCA0MCwgMjE2LCAxMiwgMiwgCisgICAgMjAwLCAxNTIsIDQwLCAyMTYsIDEyLCAyLCAyNDIsIDM1LCA0MCwgMjE2LCAxMiwgMiwgMjQyLCAzNCwgNDAsIDIxNiwgMTIsIAorICAgIDIsIDI0OSwgMTExLCA0MCwgMjE2LCAxMiwgMiwgMjQ3LCAyNDIsIDQwLCAyMTYsIDEyLCAyMDAsIDIzOCwgMjQwLCAyMzksIAorICAgIDQwLCAyMTYsIDEyLCA0MSwgMTAyLCA0MCwgMjE2LCAxMiwgNDEsIDEwNSwgNDAsIDIxNiwgMTIsIDQxLCAyMDYsIDE2NiwgCisgICAgNDAsIDIxNiwgMTIsIDQxLCAyMDQsIDE1OSwgNDAsIDIxNiwgMTIsIDQxLCAyMzMsIDgyLCAyNDEsIDExNiwgNiwgMSwgMTY4LCAKKyAgICA3MCwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNzIsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDYyLCAyNDEsIDExNiwgNiwgMSwgCisgICAgMTY4LCAyNTEsIDE4NSwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNzQsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDIxNywgNjMsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgNzAsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgNzIsIDI0MSwgMTE2LCA2LCAKKyAgICAxLCAyMDksIDI1MCwgNjIsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgMjUxLCAxODUsIDI0MSwgMTE2LCA2LCAxLCAyMDksIAorICAgIDI1MCwgNzQsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgMjE3LCA2MywgMjQxLCAxMTYsIDYsIDEsIDI1MCwgMTEyLCAKKyAgICAyNDEsIDExNiwgNiwgMSwgMjE2LCAyMzgsIDI0MSwgMTE2LCA2LCAxLCAyMDAsIDIxNiwgMjQxLCAxMTYsIDYsIDEsIDIwMCwgCisgICAgNDgsIDI0MSwgMTE2LCA2LCAxLCAyMzQsIDI0NywgMjQxLCAxMTYsIDYsIDEsIDIxNiwgNjEsIDI0MSwgMTE2LCA2LCAxLCAKKyAgICAyNDgsIDI1MiwgMjQxLCAxMTYsIDYsIDEsIDIwNiwgMTkwLCAyNDEsIDExNiwgNiwgMSwgMjQxLCAxNjEsIDI0MSwgMTE2LCAKKyAgICA2LCAxLCAyNDcsIDQsIDI0MSwgMTE2LCA2LCAxLCAyMjcsIDIyNSwgMjQxLCAxMTYsIDYsIDEsIDIyNywgMTUsIDI0MSwgCisgICAgMTE2LCA2LCAxLCAyMzYsIDM2LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAyNDgsIDI0MSwgMTE2LCA2LCAxLCAyMDMsIDU0LCAKKyAgICAyNDEsIDExNiwgNiwgMSwgMjM4LCA3NCwgMjQxLCAxMTYsIDYsIDEsIDIwNiwgMTA0LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAKKyAgICAxMDQsIDI0MSwgMTE2LCA2LCAxLCAxOTksIDg3LCAyNDEsIDExNiwgNiwgMSwgMjM4LCA5NCwgMjQxLCAxMTYsIDYsIDEsIAorICAgIDE5OSwgNjcsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDExNSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMjA5LCAyNDEsIDExNiwgNiwgCisgICAgMSwgMjM4LCAxOTAsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDE3OSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTY1LCAyNDEsIAorICAgIDExNiwgNiwgMSwgMjE3LCAxMDUsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDUxLCAyNDEsIDExNiwgNCwgMSwgMTY4LCA3MCwgCisgICAgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNzIsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDYyLCAyNDEsIDExNiwgNCwgMSwgMTY4LCAKKyAgICAyNTEsIDE4NSwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNzQsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDIxNywgNjMsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMDksIDI1MCwgNzAsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgNzIsIDI0MSwgMTE2LCA0LCAxLCAKKyAgICAyMDksIDI1MCwgNjIsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgMjUxLCAxODUsIDI0MSwgMTE2LCA0LCAxLCAyMDksIAorICAgIDI1MCwgNzQsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgMjE3LCA2MywgMjQxLCAxMTYsIDQsIDEsIDI1MCwgMTEyLCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMjE2LCAyMzgsIDI0MSwgMTE2LCA0LCAxLCAyMDAsIDIxNiwgMjQxLCAxMTYsIDQsIDEsIDIwMCwgCisgICAgNDgsIDI0MSwgMTE2LCA0LCAxLCAyMzQsIDI0NywgMjQxLCAxMTYsIDQsIDEsIDIxNiwgNjEsIDI0MSwgMTE2LCA0LCAxLCAKKyAgICAyNDgsIDI1MiwgMjQxLCAxMTYsIDQsIDEsIDIwNiwgMTkwLCAyNDEsIDExNiwgNCwgMSwgMjQxLCAxNjEsIDI0MSwgMTE2LCAKKyAgICA0LCAxLCAyNDcsIDQsIDI0MSwgMTE2LCA0LCAxLCAyMjcsIDIyNSwgMjQxLCAxMTYsIDQsIDEsIDIyNywgMTUsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMzYsIDM2LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAyNDgsIDI0MSwgMTE2LCA0LCAxLCAyMDMsIDU0LCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMjM4LCA3NCwgMjQxLCAxMTYsIDQsIDEsIDIwNiwgMTA0LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAKKyAgICAxMDQsIDI0MSwgMTE2LCA0LCAxLCAxOTksIDg3LCAyNDEsIDExNiwgNCwgMSwgMjM4LCA5NCwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDE5OSwgNjcsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDExNSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMjA5LCAyNDEsIDExNiwgNCwgCisgICAgMSwgMjM4LCAxOTAsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDE3OSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTY1LCAyNDEsIAorICAgIDExNiwgNCwgMSwgMjE3LCAxMDUsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDUxLCAyMTAsIDcyLCAxLCAyMTYsIDU4LCAyMTAsIAorICAgIDcyLCAxLCAyMDUsIDE0NCwgMjEwLCA3MiwgMSwgMjI2LCAxNTksIDIxMCwgNzIsIDEsIDIzNywgMTQwLCAyMTAsIDcyLCAxLCAKKyAgICAyMDYsIDc5LCAyMTAsIDcyLCAxLCAyMDksIDI5LCAyMTAsIDcyLCAxLCAyMDcsIDIwNCwgMjEwLCA3MiwgMSwgMjQ2LCAxODQsIAorICAgIDIxMCwgNzIsIDEsIDIwMCwgNTAsIDIxMCwgNzIsIDEsIDIzMywgNzksIDIxMCwgNzIsIDEsIDI0OCwgMTg3LCAyMTAsIDcyLCAKKyAgICAxLCAyNDEsIDE3NCwgMjEwLCA3MiwgMSwgMjM2LCA3NSwgMjEwLCA3MiwgMSwgMjAyLCAxNzMsIDIxMCwgNzIsIDEsIDIwNiwgCisgICAgODUsIDIxMCwgNzIsIDEsIDE5OSwgMTIsIDIxMCwgNzIsIDEsIDIyMiwgNzQsIDIxMCwgNzIsIDEsIDIyNywgMTQ1LCAyMTAsIAorICAgIDcyLCAxLCAyMDAsIDI1NCwgMjEwLCA3MiwgMSwgMjM0LCAyMzUsIDIxMCwgNzIsIDEsIDIyNCwgOTQsIDIxMCwgNzIsIDEsIAorICAgIDIyMSwgMTY1LCAyMTAsIDcyLCAxLCAyMjgsIDE1OCwgMjEwLCA3MiwgMSwgMjM4LCAyNDYsIDIxMCwgNzIsIDEsIDI1MCwgCisgICAgMTgxLCAyMTAsIDcyLCAxLCAyNTEsIDIyNSwgMjEwLCA3MiwgMSwgMjE3LCA3OCwgMjEwLCA3MiwgMSwgMjAwLCAyNDEsIAorICAgIDIxMCwgNzIsIDEsIDIxNiwgMjU0LCAyMTAsIDcyLCAxLCAyNTEsIDE4NSwgMjEwLCA3MiwgMSwgMjEyLCAyNTQsIDIxMCwgCisgICAgNzIsIDEsIDIxOCwgODksIDIxMCwgNzIsIDEsIDIzOSwgMTAsIDIxMCwgNzIsIDEsIDI1MSwgMTkwLCAyMTAsIDcyLCAxLCAKKyAgICAyMzIsIDIzMSwgMjEwLCA3MiwgMSwgMjAzLCAyMjgsIDIxMCwgNzIsIDEsIDIxNywgMTQ0LCAyMTAsIDcyLCAxLCAyMTcsIAorICAgIDU1LCAyMTAsIDcyLCAxLCAyMTcsIDEwMywgMjEwLCA3MiwgMSwgMjUwLCAxMTUsIDIxMCwgNzIsIDEsIDI1MCwgMjI5LCAKKyAgICAyMTAsIDcyLCAxLCAyMTcsIDMzLCAyMTAsIDcyLCAxLCAyNTEsIDE2NiwgMjEwLCA3MiwgMSwgMjM4LCAxMDgsIDIxMCwgNzIsIAorICAgIDEsIDI1MCwgMjA3LCAyMTAsIDcyLCAxLCAyMzksIDIxLCAyMTAsIDcyLCAxLCAyMzIsIDIzOSwgMjEwLCA3MiwgMSwgMjAwLCAKKyAgICAxNSwgMjE3LCAxMiwgMSwgMjUxLCAxNDIsIDIxNywgMTIsIDEsIDI0OSwgMTM2LCAyMTcsIDEyLCAxLCAyMDcsIDM2LCAyMTcsIAorICAgIDEyLCAxLCAyMjcsIDI0OCwgMjE3LCAxMiwgMSwgMjAwLCAxODEsIDIxNywgMTIsIDEsIDIyNiwgMjA3LCAyMTcsIDEyLCAxLCAKKyAgICAyNDEsIDE2MCwgMjE3LCAxMiwgMSwgMjEzLCAyNTIsIDIxNywgMTIsIDEsIDIxMiwgNjQsIDIxNywgMTIsIDEsIDIxMCwgMjcsIAorICAgIDIxNywgMTIsIDEsIDI0MSwgMTAwLCAyMTcsIDEyLCAxLCAyNDcsIDEwMSwgMjE3LCAxMiwgMSwgMjM2LCA4OSwgMjE3LCAxMiwgCisgICAgMSwgMjM3LCAxOTUsIDIxNywgMTIsIDEsIDIxNCwgMTU3LCAyMTcsIDEyLCAxLCAyMjcsIDEwMiwgMjE3LCAxMiwgMSwgMjI1LCAKKyAgICAxNzEsIDIxNywgMTIsIDEsIDIyMSwgMTc5LCAyMTcsIDEyLCAxLCAyMTgsIDczLCAyMTcsIDEyLCAxLCAyMDEsIDcyLCAyMTcsIAorICAgIDEyLCAxLCAxNDQsIDIxNywgMTIsIDEsIDE4MywgMjE3LCAxMiwgMSwgNjIsIDIxNywgMTIsIDEsIDcyLCAyMTcsIDEyLCAxLCAKKyAgICA3MCwgMjE3LCAxMiwgMSwgNzQsIDIxNywgMTIsIDEsIDY2LCAyMTcsIDEyLCAxLCAyNTIsIDEzOCwgMjE3LCAxMiwgMSwgCisgICAgMjM4LCAyNTUsIDIxNywgMTIsIDEsIDIxNywgNjMsIDIxNywgMTIsIDE3LCAxOTksIDgxLCAyMTcsIDEyLCAxNywgMTAyLCAKKyAgICAyMTcsIDEyLCAxNywgMTA1LCAyMTcsIDEyLCAxNywgMTQ3LCAyMTcsIDEyLCAxNywgMTQ5LCAyMTcsIDEyLCAxNywgMTY0LCAKKyAgICAyMTcsIDEyLCAxNywgMTg3LCAyMTcsIDEyLCAxNywgMjEwLCAxMzUsIDIxNywgMTIsIDE3LCAxOTIsIDIxNywgMTIsIDE3LCAKKyAgICAyMTksIDExMywgMjE3LCAxNCwgNiwgMSwgNjIsIDIxNywgMTQsIDYsIDEsIDI1MSwgMTc2LCAyMTcsIDE0LCA2LCAxLCAyNTEsIAorICAgIDE3MSwgMjE3LCAxNCwgNiwgMSwgMjUxLCAxODUsIDIxNywgMTQsIDYsIDEsIDI0OCwgNzIsIDIxNywgMTQsIDYsIDEsIDI0NywgCisgICAgMzcsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjQwLCAyMTcsIDE0LCA2LCAxLCA3MiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMjEsIAorICAgIDIxNywgMTQsIDYsIDEsIDE0NCwgMjE3LCAxNCwgNiwgMSwgMjMzLCAzNiwgMjE3LCAxNCwgNiwgMSwgNzAsIDIxNywgMTQsIAorICAgIDYsIDEsIDE2MSwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzksIDIxNywgMTQsIDYsIDEsIDIyNSwgMjAzLCAyMTcsIDE0LCA2LCAKKyAgICAxLCAxOTQsIDIxNywgMTQsIDYsIDEsIDE3OCwgMjE3LCAxNCwgNiwgMSwgMTg4LCAyMTcsIDE0LCA2LCAxLCA3NCwgMjE3LCAKKyAgICAxNCwgNiwgMSwgMjE3LCAxMDIsIDIxNywgMTQsIDYsIDEsIDE3MiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzgsIDIxNywgMTQsIAorICAgIDYsIDEsIDIxMiwgNjQsIDIxNywgMTQsIDYsIDEsIDIxMCwgMTE0LCAyMTcsIDE0LCA2LCAxLCAyMDcsIDM2LCAyMTcsIDE0LCAKKyAgICA2LCAxLCAyMzgsIDIzNywgMjE3LCAxNCwgNiwgMSwgMjA1LCAzMiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzYsIDIxNywgMTQsIAorICAgIDYsIDEsIDIwNSwgMjIsIDIxNywgMTQsIDYsIDEsIDI0MSwgMTAwLCAyMTcsIDE0LCA2LCAxLCA2NiwgMjE3LCAxNCwgNiwgMSwgCisgICAgMjAxLCAxMTQsIDIxNywgMTQsIDYsIDEsIDIyNiwgMjA3LCAyMTcsIDE0LCA2LCAxLCAyMzUsIDE5OSwgMjE3LCAxNCwgNiwgCisgICAgMSwgMTk5LCAxMTQsIDIxNywgMTQsIDYsIDEsIDE5OSwgNzcsIDIxNywgMTQsIDQsIDEsIDYyLCAyMTcsIDE0LCA0LCAxLCAKKyAgICAyNTEsIDE3NiwgMjE3LCAxNCwgNCwgMSwgMjUxLCAxNzEsIDIxNywgMTQsIDQsIDEsIDI1MSwgMTg1LCAyMTcsIDE0LCA0LCAKKyAgICAxLCAyNDgsIDcyLCAyMTcsIDE0LCA0LCAxLCAyNDcsIDM3LCAyMTcsIDE0LCA0LCAxLCAyMzgsIDI0MCwgMjE3LCAxNCwgNCwgCisgICAgMSwgNzIsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjIxLCAyMTcsIDE0LCA0LCAxLCAxNDQsIDIxNywgMTQsIDQsIDEsIDIzMywgCisgICAgMzYsIDIxNywgMTQsIDQsIDEsIDcwLCAyMTcsIDE0LCA0LCAxLCAxNjEsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM5LCAyMTcsIAorICAgIDE0LCA0LCAxLCAyMjUsIDIwMywgMjE3LCAxNCwgNCwgMSwgMTk0LCAyMTcsIDE0LCA0LCAxLCAxNzgsIDIxNywgMTQsIDQsIAorICAgIDEsIDE4OCwgMjE3LCAxNCwgNCwgMSwgNzQsIDIxNywgMTQsIDQsIDEsIDIxNywgMTAyLCAyMTcsIDE0LCA0LCAxLCAxNzIsIAorICAgIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM4LCAyMTcsIDE0LCA0LCAxLCAyMTIsIDY0LCAyMTcsIDE0LCA0LCAxLCAyMTAsIDExNCwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjA3LCAzNiwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzcsIDIxNywgMTQsIDQsIDEsIDIwNSwgMzIsIAorICAgIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM2LCAyMTcsIDE0LCA0LCAxLCAyMDUsIDIyLCAyMTcsIDE0LCA0LCAxLCAyNDEsIDEwMCwgCisgICAgMjE3LCAxNCwgNCwgMSwgNjYsIDIxNywgMTQsIDQsIDEsIDIwMSwgMTE0LCAyMTcsIDE0LCA0LCAxLCAyMjYsIDIwNywgMjE3LCAKKyAgICAxNCwgNCwgMSwgMjM1LCAxOTksIDIxNywgMTQsIDQsIDEsIDE5OSwgMTE0LCAyMTcsIDE0LCA0LCAxLCAxOTksIDc3LCAyMzgsIAorICAgIDIwNSwgMSwgNjIsIDIzOCwgMjA1LCAxLCAyNDksIDgsIDIzOCwgMjA1LCAxLCAyNDcsIDc2LCAyMzgsIDIwNSwgMSwgMjQ3LCAKKyAgICA4LCAyMzgsIDIwNSwgMSwgMjQxLCAxNzUsIDIzOCwgMjA1LCAxLCAyMjAsIDY3LCAyMzgsIDIwNSwgMSwgMjQxLCA5MSwgCisgICAgMjM4LCAyMDUsIDEsIDIzOCwgMjM0LCAyMzgsIDIwNSwgMSwgNzIsIDIzOCwgMjA1LCAxLCAyMzcsIDE0NywgMjM4LCAyMDUsIAorICAgIDEsIDIzNiwgMTUsIDIzOCwgMjA1LCAxLCAyMzUsIDEzMiwgMjM4LCAyMDUsIDEsIDIzNCwgMTM5LCAyMzgsIDIwNSwgMSwgCisgICAgNzAsIDIzOCwgMjA1LCAxLCAyMjcsIDIyNywgMjM4LCAyMDUsIDEsIDIyNywgOCwgMjM4LCAyMDUsIDEsIDIyNSwgNDAsIAorICAgIDIzOCwgMjA1LCAxLCAyMjQsIDEzNCwgMjM4LCAyMDUsIDEsIDIyMiwgNzYsIDIzOCwgMjA1LCAxLCAyMjAsIDM0LCAyMzgsIAorICAgIDIwNSwgMSwgMTg4LCAyMzgsIDIwNSwgMSwgMjE5LCA5MSwgMjM4LCAyMDUsIDEsIDc0LCAyMzgsIDIwNSwgMSwgMjE2LCA3MywgCisgICAgMjM4LCAyMDUsIDEsIDIxNCwgMTM5LCAyMzgsIDIwNSwgMSwgMjEzLCAxOTAsIDIzOCwgMjA1LCAxLCAyMTIsIDIxMCwgMjM4LCAKKyAgICAyMDUsIDEsIDIxMSwgMjAyLCAyMzgsIDIwNSwgMSwgMjEwLCA2NSwgMjM4LCAyMDUsIDEsIDIwNiwgMjAxLCAyMzgsIDIwNSwgCisgICAgMSwgMjA2LCAxMDYsIDIzOCwgMjA1LCAxLCA2NiwgMjM4LCAyMDUsIDEsIDIwMywgNTksIDIzOCwgMjA1LCAxLCAyMDAsIAorICAgIDE3NSwgMjM4LCAyMDUsIDEsIDIwMCwgMTIzLCAyMzgsIDIwNSwgMSwgMTk5LCA4OSwgMjM4LCAyMDUsIDEsIDE5OSwgNjgsIAorICAgIDIzOCwgMjA1LCAxLCAyMzUsIDE4NSwgMjM4LCAyMDUsIDEsIDIzNSwgMTkxLCAyMzgsIDIwNSwgMSwgMjI2LCAxOTIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjUxLCAxMTEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ4LCAyMTAsIDI0NywgMTA4LCAKKyAgICAyNTEsIDE0MywgMSwgMjM1LCAxNDksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQxLCAyNDAsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjM5LCA5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgOTksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjM4LCAxNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDYyLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwNiwgMjI3LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMzcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCAyMjIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCA3NywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjgsIDM0LCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDIxMCwgMTE0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNSwgODAsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjI4LCA0NiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDAsIDE3MSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzksIAorICAgIDEwMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDcsIDEzNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDIwOCwgCisgICAgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDQ3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyMywgMjUyLCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDIzNCwgODYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE0LCAxNDAsIDI0NywgMTA4LCAKKyAgICAyNTEsIDE0MywgMSwgMjUxLCAzMCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDYsIDIwMSwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyNDYsIDIzNiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDIsIDE2NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMjIsIDE2MSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTQsIDE0NCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTgsIAorICAgIDIwMCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzksIDc4LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMCwgOTcsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjI3LCAyMjgsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE3LCA3OCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyMDQsIDEzMiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzcsIDE3MCwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyMzksIDkxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMTQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjE2LCA0NywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzUsIDE3NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTMsIAorICAgIDIwNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTAsIDEyMywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDIsIDIzNiwgCisgICAgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDUsIDIwNiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDksIDIyOSwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyMjgsIDUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQyLCAxNjYsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjQ3LCAxMDEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjAwLCA1NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMTUsIDEzOSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjYsIDEyNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAyNDYsIDE0MywgCisgICAgODEsIDMwLCAzNSwgMiwgMjUyLCA4OCwgMzAsIDM1LCAyLCAyNTIsIDg3LCAzMCwgMzUsIDIsIDI1MiwgODYsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA4NSwgMzAsIDM1LCAyLCAyNTIsIDg0LCAzMCwgMzUsIDIsIDI1MiwgODMsIDMwLCAzNSwgMiwgMjUyLCA4MiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDgxLCAzMCwgMzUsIDIsIDI1MiwgODAsIDMwLCAzNSwgMiwgMjUyLCA3OSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDc4LCAzMCwgMzUsIDIsIDI1MiwgNzcsIDMwLCAzNSwgMiwgMjUyLCA3NiwgMzAsIDM1LCAyLCAyNTIsIDc1LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgNzQsIDMwLCAzNSwgMiwgMjUyLCA3MywgMzAsIDM1LCAyLCAyNTIsIDcyLCAzMCwgMzUsIDIsIDI1MiwgCisgICAgNzEsIDMwLCAzNSwgMiwgMjUyLCA3MCwgMzAsIDM1LCAyLCAyNTIsIDY5LCAzMCwgMzUsIDIsIDI1MiwgNjgsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA2NywgMzAsIDM1LCAyLCAyNTIsIDY2LCAzMCwgMzUsIDIsIDI1MiwgNjUsIDMwLCAzNSwgMiwgMjUyLCA2NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDYzLCAzMCwgMzUsIDIsIDI1MiwgNjIsIDMwLCAzNSwgMiwgMjU1LCA5NiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDYxLCAzMCwgMzUsIDIsIDI1MiwgNjAsIDMwLCAzNSwgMiwgMjUyLCA1OSwgMzAsIDM1LCAyLCAyNTIsIDU4LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgNTcsIDMwLCAzNSwgMiwgMjUyLCA1NiwgMzAsIDM1LCAyLCAyNTIsIDU1LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgNTQsIDMwLCAzNSwgMiwgMjUyLCA1MywgMzAsIDM1LCAyLCAyNTIsIDUyLCAzMCwgMzUsIDIsIDI1MiwgNTEsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA1MCwgMzAsIDM1LCAyLCAyNTIsIDQ5LCAzMCwgMzUsIDIsIDI1MiwgNDgsIDMwLCAzNSwgMiwgMjUyLCA0NywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDQ2LCAzMCwgMzUsIDIsIDI1MiwgNDUsIDMwLCAzNSwgMiwgMjUyLCA0NCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDQzLCAzMCwgMzUsIDIsIDI1MiwgNDIsIDMwLCAzNSwgMiwgMjUyLCA0MSwgMzAsIDM1LCAyLCAyNTIsIDQwLCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMzksIDMwLCAzNSwgMiwgMjUyLCAzOCwgMzAsIDM1LCAyLCAyNTIsIDM3LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMzYsIDMwLCAzNSwgMiwgMjUyLCAzNSwgMzAsIDM1LCAyLCAyNTIsIDM0LCAzMCwgMzUsIDIsIDI1MiwgMzMsIDMwLCAzNSwgCisgICAgMiwgMjUyLCAzMiwgMzAsIDM1LCAyLCAyNTIsIDMxLCAzMCwgMzUsIDIsIDI1MiwgMzAsIDMwLCAzNSwgMiwgMjUyLCAyOSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDI4LCAzMCwgMzUsIDIsIDI1MiwgMjcsIDMwLCAzNSwgMiwgMjUyLCAyNiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI1LCAzMCwgMzUsIDIsIDI1MiwgMjQsIDMwLCAzNSwgMiwgMjUyLCAyMywgMzAsIDM1LCAyLCAyNTIsIDIyLCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMjEsIDMwLCAzNSwgMiwgMjUyLCAyMCwgMzAsIDM1LCAyLCAyNTIsIDE5LCAzMCwgMzUsIDIsIDI1NSwgCisgICAgOSwgMzAsIDM1LCAyLCAyNTIsIDE4LCAzMCwgMzUsIDIsIDI1MiwgMTcsIDMwLCAzNSwgMiwgMjU0LCAyMzAsIDMwLCAzNSwgCisgICAgMiwgMjUyLCAxNiwgMzAsIDM1LCAyLCAyNTIsIDE1LCAzMCwgMzUsIDIsIDI1MiwgMTQsIDMwLCAzNSwgMiwgMjUyLCAxMywgCisgICAgMzAsIDM1LCAyLCAyNTQsIDIxNywgMzAsIDM1LCAyLCAyNTIsIDEyLCAzMCwgMzUsIDIsIDI1MiwgMTEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxMCwgMzAsIDM1LCAyLCAyNTIsIDksIDMwLCAzNSwgMiwgMjUyLCA4LCAzMCwgMzUsIDIsIDI1NCwgMzMsIDMwLCAKKyAgICAzNSwgMiwgMjU0LCAzMiwgMzAsIDM1LCAyLCAyNTQsIDMxLCAzMCwgMzUsIDIsIDI1NCwgMzAsIDMwLCAzNSwgMiwgMjU0LCAKKyAgICAyOSwgMzAsIDM1LCAyLCAyNTQsIDI4LCAzMCwgMzUsIDIsIDI1NCwgMjcsIDMwLCAzNSwgMiwgMjU0LCAyNiwgMzAsIDM1LCAKKyAgICAyLCAyNTQsIDI0LCAzMCwgMzUsIDIsIDI1NCwgMjMsIDMwLCAzNSwgMiwgMjU0LCAyMiwgMzAsIDM1LCAyLCAyNTQsIDIxLCAKKyAgICAzMCwgMzUsIDIsIDI1NCwgMjAsIDMwLCAzNSwgMiwgMjU0LCAxOSwgMzAsIDM1LCAyLCAyNTQsIDE3LCAzMCwgMzUsIDIsIAorICAgIDI1NCwgMTYsIDMwLCAzNSwgMiwgMjU0LCAxNSwgMzAsIDM1LCAyLCAyNTQsIDE0LCAzMCwgMzUsIDIsIDI1NCwgMTMsIDMwLCAKKyAgICAzNSwgMiwgMjU0LCAxMiwgMzAsIDM1LCAyLCAyNTQsIDExLCAzMCwgMzUsIDIsIDI1NCwgMTAsIDMwLCAzNSwgMiwgMjU0LCAKKyAgICA5LCAzMCwgMzUsIDIsIDI1NCwgOCwgMzAsIDM1LCAyLCAyNTQsIDcsIDMwLCAzNSwgMiwgMjU0LCA2LCAzMCwgMzUsIDIsIAorICAgIDI1NCwgNSwgMzAsIDM1LCAyLCAyNTQsIDQsIDMwLCAzNSwgMiwgMjU0LCAzLCAzMCwgMzUsIDIsIDI1NCwgMiwgMzAsIDM1LCAKKyAgICAyLCAyNTQsIDEsIDMwLCAzNSwgMiwgMjU0LCAwLCAzMCwgMzUsIDIsIDI1MywgMjU1LCAzMCwgMzUsIDIsIDI1MywgMjUzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjUyLCAzMCwgMzUsIDIsIDI1MywgMjUxLCAzMCwgMzUsIDIsIDI1MywgMjQ3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjQ2LCAzMCwgMzUsIDIsIDI1MywgMjQ1LCAzMCwgMzUsIDIsIDI1MywgMjQ0LCAzMCwgMzUsIDIsIDI1MywgMjQwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjM5LCAzMCwgMzUsIDIsIDI1MywgMjM4LCAzMCwgMzUsIDIsIDI1MywgMjM3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjM2LCAzMCwgMzUsIDIsIDI1MywgMjM1LCAzMCwgMzUsIDIsIDI1MywgMjM0LCAzMCwgMzUsIDIsIDI1MywgMjMzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjMyLCAzMCwgMzUsIDIsIDI1MywgMjMxLCAzMCwgMzUsIDIsIDI1MywgMjMwLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjI5LCAzMCwgMzUsIDIsIDI1MywgMjI4LCAzMCwgMzUsIDIsIDI1MywgMjI3LCAzMCwgMzUsIDIsIDI1MywgMjI2LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjI1LCAzMCwgMzUsIDIsIDI1MywgMjI0LCAzMCwgMzUsIDIsIDI1MywgMjIzLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjIyLCAzMCwgMzUsIDIsIDI1MywgMjIxLCAzMCwgMzUsIDIsIDI1MywgMjIwLCAzMCwgMzUsIDIsIDI1MywgMjE5LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjE4LCAzMCwgMzUsIDIsIDI1MywgMjE2LCAzMCwgMzUsIDIsIDI1MywgMjE1LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjE0LCAzMCwgMzUsIDIsIDI1MywgMjEzLCAzMCwgMzUsIDIsIDI1MywgMjEyLCAzMCwgMzUsIDIsIDI1MywgMjEwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjA5LCAzMCwgMzUsIDIsIDI1MywgMjA4LCAzMCwgMzUsIDIsIDI1MywgMjA3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjA1LCAzMCwgMzUsIDIsIDI1MywgMjA0LCAzMCwgMzUsIDIsIDI1MywgMjAzLCAzMCwgMzUsIDIsIDI1MywgMTY5LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTY3LCAzMCwgMzUsIDIsIDI1MywgMTY1LCAzMCwgMzUsIDIsIDI1MywgMTYzLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTYxLCAzMCwgMzUsIDIsIDI1MywgMTU5LCAzMCwgMzUsIDIsIDI1MywgMTU3LCAzMCwgMzUsIDIsIDI1MywgMTU1LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTUzLCAzMCwgMzUsIDIsIDI1MywgMTUxLCAzMCwgMzUsIDIsIDI1MywgMTQ5LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTQ2LCAzMCwgMzUsIDIsIDI1MywgMTQ0LCAzMCwgMzUsIDIsIDI1MywgMTQyLCAzMCwgMzUsIDIsIDI1MywgMTQwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTM4LCAzMCwgMzUsIDIsIDI1MywgMTM2LCAzMCwgMzUsIDIsIDI1MywgMTM0LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTMyLCAzMCwgMzUsIDIsIDI1MywgNTAsIDMwLCAzNSwgMiwgMjUzLCA0OSwgMzAsIDM1LCAyLCAyNTMsIDQ4LCAzMCwgCisgICAgMzUsIDIsIDI1MywgNDcsIDMwLCAzNSwgMiwgMjUzLCA0NiwgMzAsIDM1LCAyLCAyNTMsIDQ1LCAzMCwgMzUsIDIsIDI1MywgCisgICAgNDMsIDMwLCAzNSwgMiwgMjUzLCA0MiwgMzAsIDM1LCAyLCAyNTMsIDQxLCAzMCwgMzUsIDIsIDI1MywgNDAsIDMwLCAzNSwgCisgICAgMiwgMjUzLCAzOSwgMzAsIDM1LCAyLCAyNTMsIDM4LCAzMCwgMzUsIDIsIDI1MywgMzYsIDMwLCAzNSwgMiwgMjUzLCAzNSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDMxLCAzMCwgMzUsIDIsIDI1MywgMzAsIDMwLCAzNSwgMiwgMjUzLCAyOCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDI3LCAzMCwgMzUsIDIsIDI1MywgMjYsIDMwLCAzNSwgMiwgMjUzLCAyNSwgMzAsIDM1LCAyLCAyNTMsIDI0LCAzMCwgCisgICAgMzUsIDIsIDI1MywgMjMsIDMwLCAzNSwgMiwgMjUzLCAyMiwgMzAsIDM1LCAyLCAyNTMsIDIxLCAzMCwgMzUsIDIsIDI1MywgCisgICAgMjAsIDMwLCAzNSwgMiwgMjUzLCAxOSwgMzAsIDM1LCAyLCAyNTMsIDE4LCAzMCwgMzUsIDIsIDI1MywgMTcsIDMwLCAzNSwgCisgICAgMiwgMjUzLCAxNiwgMzAsIDM1LCAyLCAyNTMsIDE1LCAzMCwgMzUsIDIsIDI1MywgMTQsIDMwLCAzNSwgMiwgMjUzLCAxMywgCisgICAgMzAsIDM1LCAyLCAyNTMsIDEyLCAzMCwgMzUsIDIsIDI1MywgMTEsIDMwLCAzNSwgMiwgMjUzLCAxMCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDksIDMwLCAzNSwgMiwgMjUzLCA4LCAzMCwgMzUsIDIsIDI1MywgNywgMzAsIDM1LCAyLCAyNTMsIDYsIDMwLCAzNSwgCisgICAgMiwgMjUzLCA1LCAzMCwgMzUsIDIsIDI1MywgNCwgMzAsIDM1LCAyLCAyNTMsIDMsIDMwLCAzNSwgMiwgMjUzLCAyLCAzMCwgCisgICAgMzUsIDIsIDI1MywgMSwgMzAsIDM1LCAyLCAyNTMsIDAsIDMwLCAzNSwgMiwgMjUyLCAyNTUsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAyNTQsIDMwLCAzNSwgMiwgMjUyLCAyNTMsIDMwLCAzNSwgMiwgMjUyLCAyNTIsIDMwLCAzNSwgMiwgMjUyLCAyNTEsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAyNTAsIDMwLCAzNSwgMiwgMjUyLCAyNDksIDMwLCAzNSwgMiwgMjUyLCAyNDgsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyNDcsIDMwLCAzNSwgMiwgMjUyLCAyNDYsIDMwLCAzNSwgMiwgMjUyLCAyNDUsIDMwLCAzNSwgMiwgMjUyLCAyNDQsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyNDMsIDMwLCAzNSwgMiwgMjUyLCAyNDIsIDMwLCAzNSwgMiwgMjUyLCAyNDEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyNDAsIDMwLCAzNSwgMiwgMjUyLCAyMzksIDMwLCAzNSwgMiwgMjUyLCAyMzgsIDMwLCAzNSwgMiwgMjUyLCAyMzcsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMzYsIDMwLCAzNSwgMiwgMjUyLCAyMzUsIDMwLCAzNSwgMiwgMjUyLCAyMzQsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMzMsIDMwLCAzNSwgMiwgMjUyLCAyMzIsIDMwLCAzNSwgMiwgMjUyLCAyMzEsIDMwLCAzNSwgMiwgMjUyLCAyMzAsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMjksIDMwLCAzNSwgMiwgMjUyLCAyMjgsIDMwLCAzNSwgMiwgMjUyLCAyMjcsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMjYsIDMwLCAzNSwgMiwgMjUyLCAyMjUsIDMwLCAzNSwgMiwgMjUyLCAyMjQsIDMwLCAzNSwgMiwgMjUyLCAyMjMsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMjIsIDMwLCAzNSwgMiwgMjUyLCAyMjEsIDMwLCAzNSwgMiwgMjUyLCAyMjAsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMTksIDMwLCAzNSwgMiwgMjUyLCAyMTgsIDMwLCAzNSwgMiwgMjUyLCAyMTcsIDMwLCAzNSwgMiwgMjUyLCAyMTYsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMTUsIDMwLCAzNSwgMiwgMjUyLCAyMTQsIDMwLCAzNSwgMiwgMjUyLCAyMTMsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMTIsIDMwLCAzNSwgMiwgMjUyLCAyMTEsIDMwLCAzNSwgMiwgMjUyLCAyMTAsIDMwLCAzNSwgMiwgMjUyLCAyMDksIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMDgsIDMwLCAzNSwgMiwgMjUyLCAyMDcsIDMwLCAzNSwgMiwgMjUyLCAyMDYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMDUsIDMwLCAzNSwgMiwgMjUyLCAyMDQsIDMwLCAzNSwgMiwgMjUyLCAyMDMsIDMwLCAzNSwgMiwgMjUyLCAyMDIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMDEsIDMwLCAzNSwgMiwgMjUyLCAyMDAsIDMwLCAzNSwgMiwgMjUyLCAxOTksIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxOTgsIDMwLCAzNSwgMiwgMjUyLCAxOTcsIDMwLCAzNSwgMiwgMjUyLCAxOTYsIDMwLCAzNSwgMiwgMjUyLCAxOTUsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxOTQsIDMwLCAzNSwgMiwgMjUyLCAxOTMsIDMwLCAzNSwgMiwgMjUyLCAxOTIsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxOTEsIDMwLCAzNSwgMiwgMjUyLCAxOTAsIDMwLCAzNSwgMiwgMjUyLCAxODksIDMwLCAzNSwgMiwgMjUyLCAxODgsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxODcsIDMwLCAzNSwgMiwgMjUyLCAxODYsIDMwLCAzNSwgMiwgMjUyLCAxODUsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxODQsIDMwLCAzNSwgMiwgMjUyLCAxODMsIDMwLCAzNSwgMiwgMjUyLCAxODIsIDMwLCAzNSwgMiwgMjUyLCAxODEsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxODAsIDMwLCAzNSwgMiwgMjUyLCAxNzksIDMwLCAzNSwgMiwgMjUyLCAxNzgsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNzcsIDMwLCAzNSwgMiwgMjUyLCAxNzYsIDMwLCAzNSwgMiwgMjUyLCAxNzUsIDMwLCAzNSwgMiwgMjUyLCAxNzQsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNzMsIDMwLCAzNSwgMiwgMjUyLCAxNzIsIDMwLCAzNSwgMiwgMjUyLCAxNzEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNzAsIDMwLCAzNSwgMiwgMjUyLCAxNjksIDMwLCAzNSwgMiwgMjUyLCAxNjgsIDYyLCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMTY3LCAyNTAsIDEwMywgMzAsIDM1LCAyLCAyNTIsIDE2NiwgMjQyLCAxNTMsIDMwLCAzNSwgMiwgMjUyLCAxNjUsIDcyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTY0LCAyMzgsIDUsIDMwLCAzNSwgMiwgMjUyLCAxNjMsIDIzNCwgMjQ3LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTYyLCAyMjcsIDI1MSwgMzAsIDM1LCAyLCAyNTIsIDE2MSwgMjI3LCAxMTgsIDMwLCAzNSwgMiwgMjUyLCAxNjAsIAorICAgIDE1NiwgMzAsIDM1LCAyLCAyNTIsIDE1OSwgMjI1LCAxODAsIDMwLCAzNSwgMiwgMjUyLCAxNTgsIDIyNSwgMTc5LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMTU3LCAyMjUsIDE3OCwgMzAsIDM1LCAyLCAyNTIsIDE1NiwgMjI1LCAxNzcsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAxNTUsIDIwMSwgMTQ3LCAzMCwgMzUsIDIsIDI1MiwgMTU0LCAyMDAsIDE5NSwgMzAsIDM1LCAyLCAyNTIsIDE1MywgMjAwLCAKKyAgICAxMjMsIDMwLCAzNSwgMiwgMjUyLCAxNTIsIDIxNywgODMsIDMwLCAzNSwgMiwgMjUyLCAxNTEsIDI1MiwgNCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDE1MCwgMjQ5LCA0NSwgMzAsIDM1LCAyLCAyNTIsIDE0OSwgMjQxLCAyMjIsIDMwLCAzNSwgMiwgMjUyLCAxNDgsIAorICAgIDIzOCwgMTMsIDMwLCAzNSwgMiwgMjUyLCAxNDcsIDIyNywgMjI3LCAzMCwgMzUsIDIsIDI1MiwgMTQ2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTQ1LCAzMCwgMzUsIDIsIDI1MiwgMTQ0LCAzMCwgMzUsIDIsIDI1MiwgMTQzLCAzMCwgMzUsIDIsIDI1MiwgMTQyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTQxLCAzMCwgMzUsIDIsIDI1MiwgMTQwLCAzMCwgMzUsIDIsIDI1MiwgMTM5LCAyNDIsIDE2MCwgCisgICAgNSwgNjIsIDI0MiwgMTYwLCA1LCA3MiwgMjQyLCAxNjAsIDUsIDcwLCAyNDIsIDE2MCwgNSwgNzQsIDI0MiwgMTYwLCA1LCAKKyAgICA2NiwgMjQyLCAxNjAsIDUsIDIyNywgMjQ4LCAyNDIsIDE2MCwgNSwgMjI3LCAxNjYsIDI0MiwgMTYwLCA1LCAxNjEsIDI0MiwgCisgICAgMTYwLCA1LCAyMjcsIDgsIDI0MiwgMTYwLCA1LCAyMjYsIDE2MywgMjQyLCAxNjAsIDUsIDIyNiwgODgsIDI0MiwgMTYwLCA1LCAKKyAgICAyMjYsIDE1LCAyNDIsIDE2MCwgNSwgMTk0LCAyNDIsIDE2MCwgNSwgMjI1LCA0MCwgMjQyLCAxNjAsIDUsIDIyNCwgMjEwLCAKKyAgICAyNDIsIDE2MCwgNSwgMjI0LCAxMTAsIDI0MiwgMTYwLCA1LCAyMjQsIDQyLCAyNDIsIDE2MCwgNSwgMTc4LCAyNDIsIDE2MCwgCisgICAgNSwgMjIyLCA3NiwgMjQyLCAxNjAsIDUsIDIyMSwgMjExLCAyNDIsIDE2MCwgNSwgMjIxLCAxMzYsIDI0MiwgMTYwLCA1LCAKKyAgICAyMjEsIDQxLCAyNDIsIDE2MCwgNSwgMTg4LCAyNDIsIDE2MCwgNSwgMjIwLCAzNCwgMjQyLCAxNjAsIDUsIDIxOSwgMTUwLCAKKyAgICAyNDIsIDE2MCwgNSwgMjE4LCAyNDEsIDI0MiwgMTYwLCA1LCAyMTgsIDEzMywgMjQyLCAxNjAsIDUsIDE3MiwgMjQyLCAxNjAsIAorICAgIDUsIDIxNiwgNzMsIDI0MiwgMTYwLCA1LCAyMTUsIDIwNCwgMjQyLCAxNjAsIDUsIDIxNSwgMTA2LCAyNDIsIDE2MCwgNSwgCisgICAgMjE0LCAyMjQsIDI0MiwgMTYwLCA1LCAyMTMsIDI1MiwgMjQyLCAxNjAsIDUsIDIxMywgMTkwLCAyNDIsIDE2MCwgNSwgMjEzLCAKKyAgICA4OCwgMjQyLCAxNjAsIDUsIDIxMywgMSwgMjQyLCAxNjAsIDUsIDIxMiwgMTc1LCAyNDIsIDE2MCwgNSwgMjEyLCA2NCwgCisgICAgMjQyLCAxNjAsIDUsIDIxMSwgMjAyLCAyNDIsIDE2MCwgNSwgMjA5LCAxODIsIDI0MiwgMTYwLCA1LCAyMDksIDI5LCAyNDIsIAorICAgIDE2MCwgNSwgMjA4LCAyNCwgMjQyLCAxNjAsIDUsIDIwNywgMzYsIDI0MiwgMTYwLCA1LCAyMDYsIDIwMSwgMjQyLCAxNjAsIAorICAgIDUsIDIwNiwgMTUsIDI0MiwgMTYwLCA1LCAxMzgsIDI0MiwgMTYwLCA1LCAyMDQsIDIxNSwgMjQyLCAxNjAsIDUsIDIwMSwgCisgICAgMTE0LCAyNDIsIDE2MCwgNSwgMjAxLCA2NCwgMjQyLCAxNjAsIDUsIDIwMSwgMzEsIDI0MiwgMTYwLCA1LCAyMDEsIDAsIAorICAgIDI0MiwgMTYwLCA1LCAyMDAsIDE4MSwgMjQyLCAxNjAsIDUsIDIwMCwgMTc1LCAyNDIsIDE2MCwgNSwgMTk5LCAxMTQsIDI0MiwgCisgICAgMTYwLCA1LCAxOTksIDE0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDI1MSwgMTQwLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIAorICAgIDI0OCwgMjA3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIzNSwgMTQ3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDI0MiwgCisgICAgMjIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM0LCAxMzksIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjAxLCA3MiwgMjI4LCAKKyAgICAxMTksIDI1MCwgMjM4LCAxLCAxOTksIDkyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIzNCwgOTEsIDIyOCwgMTE5LCAyNTAsIAorICAgIDIzOCwgMSwgMjA2LCAxNDIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMTk5LCAyMzMsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgCisgICAgMjI3LCA1NywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMjUsIDgyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIyMiwgNDcsIAorICAgIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjE4LCA4OSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTIsIDE5LCAyMjgsIDExOSwgCisgICAgMjUwLCAyMzgsIDEsIDI1MCwgMTA3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxNiwgNzMsIDIyOCwgMTE5LCAyNTAsIAorICAgIDIzOCwgMSwgMjEyLCA1NCwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTQsIDEwMSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAKKyAgICAyMTMsIDEyMywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTAsIDIxLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIwNiwgCisgICAgMjE1LCAyMjgsIDExOSwgMjUwLCAyMzgsIDIxMSwgMTkzLCA1NCwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTAyLCAyMjgsIAorICAgIDExOSwgMjUwLCAyMzgsIDQxLCAxMDUsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDE0NywgMjI4LCAxMTksIDI1MCwgMjM4LCAKKyAgICA0MSwgMjA2LCAxNjYsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDIwNCwgMTU5LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAKKyAgICAxMTIsIDIzMywgODIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDExMiwgMjA2LCA1MCwgMjI4LCAxMTksIDI1MCwgMjM4LCAKKyAgICA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDIxNiwgMTc1LCAxLCAyNTEsIDE0MCwgMjE2LCAxNzUsIDEsIDI0OCwgMjA3LCAyMTYsIAorICAgIDE3NSwgMSwgMjM1LCAxNDcsIDIxNiwgMTc1LCAxLCAyNDIsIDIyLCAyMTYsIDE3NSwgMSwgMjM0LCAxMzksIDIxNiwgMTc1LCAKKyAgICAxLCAyMDEsIDcyLCAyMTYsIDE3NSwgMSwgMTk5LCA5MiwgMjE2LCAxNzUsIDEsIDIzNCwgOTEsIDIxNiwgMTc1LCAxLCAyMDYsIAorICAgIDE0MiwgMjE2LCAxNzUsIDEsIDE5OSwgMjMzLCAyMTYsIDE3NSwgMSwgMjI3LCA1NywgMjE2LCAxNzUsIDEsIDIyNSwgODIsIAorICAgIDIxNiwgMTc1LCAxLCAyMjIsIDQ3LCAyMTYsIDE3NSwgMSwgNDcsIDIxOCwgODksIDIxNiwgMTc1LCAxLCAyMTgsIDg5LCAKKyAgICAyMTYsIDE3NSwgMSwgMjEyLCAxOSwgMjE2LCAxNzUsIDEsIDI1MCwgMTA3LCAyMTYsIDE3NSwgMSwgMjE2LCA3MywgMjE2LCAKKyAgICAxNzUsIDEsIDIxMiwgNTQsIDIxNiwgMTc1LCAxLCAyMTQsIDEwMSwgMjE2LCAxNzUsIDEsIDIxMywgMTIzLCAyMTYsIDE3NSwgCisgICAgMSwgMjEwLCAyMSwgMjE2LCAxNzUsIDEsIDIwNiwgMjE1LCAyMTYsIDE3NSwgMjI1LCAyMywgMjM3LCAzOSwgMjE2LCAxNzUsIAorICAgIDIxMywgNDEsIDIzNywgMzksIDIxNiwgMTc1LCA0MSwgMTAyLCAyMTYsIDE3NSwgNDEsIDEwNSwgMjE2LCAxNzUsIDQxLCAKKyAgICAxNDcsIDIxNiwgMTc1LCA0MSwgMTQ5LCAyMTYsIDE3NSwgNDEsIDE2NCwgMjE2LCAxNzUsIDQxLCAyMDYsIDE2NiwgMjE2LCAKKyAgICAxNzUsIDQxLCAyMDQsIDE1OSwgMjIwLCAxNTMsIDEsIDQ3LCAyNTEsIDE0MCwgMjIwLCAxNTMsIDEsIDI1MSwgMTQwLCAyMjAsIAorICAgIDE1MywgMSwgNDcsIDI0OCwgMjA3LCAyMjAsIDE1MywgMSwgMjQ4LCAyMDcsIDIyMCwgMTUzLCAxLCAyMzUsIDE0NywgMjIwLCAKKyAgICAxNTMsIDEsIDI0MiwgMjIsIDIyMCwgMTUzLCAxLCA0NywgMjM0LCAxMzksIDIyMCwgMTUzLCAxLCAyMzQsIDEzOSwgMjIwLCAKKyAgICAxNTMsIDEsIDIwMSwgNzIsIDIyMCwgMTUzLCAxLCAxOTksIDkyLCAyMjAsIDE1MywgMSwgMjM0LCA5MSwgMjIwLCAxNTMsIDEsIAorICAgIDIwNiwgMTQyLCAyMjAsIDE1MywgMSwgNDcsIDE5OSwgMjMzLCAyMjAsIDE1MywgMSwgMTk5LCAyMzMsIDIyMCwgMTUzLCAxLCAKKyAgICA0NywgMjI3LCA1NywgMjIwLCAxNTMsIDEsIDIyNywgNTcsIDIyMCwgMTUzLCAxLCA0NywgMjI1LCA4MiwgMjIwLCAxNTMsIDEsIAorICAgIDIyNSwgODIsIDIyMCwgMTUzLCAxLCA0NywgMjIyLCA0NywgMjIwLCAxNTMsIDEsIDIyMiwgNDcsIDIyMCwgMTUzLCAxLCA0NywgCisgICAgMjE4LCA4OSwgMjIwLCAxNTMsIDEsIDIxOCwgODksIDIyMCwgMTUzLCAxLCAyMTIsIDE5LCAyMjAsIDE1MywgMSwgMjUwLCAKKyAgICAxMDcsIDIyMCwgMTUzLCAxLCAyMTYsIDczLCAyMjAsIDE1MywgMSwgMjEyLCA1NCwgMjIwLCAxNTMsIDEsIDIxNCwgMTAxLCAKKyAgICAyMjAsIDE1MywgMSwgMjEzLCAxMjMsIDIyMCwgMTUzLCAxLCA0NywgMjEwLCAyMSwgMjIwLCAxNTMsIDEsIDIxMCwgMjEsIAorICAgIDIyMCwgMTUzLCAxLCAyMDYsIDIxNSwgMjIwLCAxNTMsIDQxLCAxMDIsIDIyMCwgMTUzLCA0MSwgMTA1LCAyMjAsIDE1MywgCisgICAgNDEsIDE0NywgMjIwLCAxNTMsIDQxLCAxNDksIDIyMCwgMTUzLCAyNDIsIDIyMCwgNDEsIDE0OSwgMjIwLCAxNTMsIDQxLCAKKyAgICAxNjQsIDIyMCwgMTUzLCA0MSwgMjA2LCAxNjYsIDIyMCwgMTUzLCA0MSwgMjA0LCAxNTksIDIyMCwgMTUzLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCAyMzQsIDE1MiwgMSwgMjUxLCAxNDAsIDIzNCwgMTUyLCAxLCAyNDgsIDIwNywgMjM0LCAxNTIsIDEsIDIzNSwgCisgICAgMTQ3LCAyMzQsIDE1MiwgMSwgMjQyLCAyMSwgMjM0LCAxNTIsIDEsIDIzNCwgMTM5LCAyMzQsIDE1MiwgMSwgMjAxLCA3MiwgCisgICAgMjM0LCAxNTIsIDEsIDE5OSwgOTEsIDIzNCwgMTUyLCAxLCAyMzQsIDkxLCAyMzQsIDE1MiwgMSwgMjA2LCAxNDIsIDIzNCwgCisgICAgMTUyLCAxLCAxOTksIDIzMywgMjM0LCAxNTIsIDEsIDIyNywgNTcsIDIzNCwgMTUyLCAxLCAyMjUsIDgyLCAyMzQsIDE1MiwgCisgICAgMSwgMjIyLCA0NywgMjM0LCAxNTIsIDEsIDIxOCwgODksIDIzNCwgMTUyLCAxLCAyMTIsIDE5LCAyMzQsIDE1MiwgMSwgMjUwLCAKKyAgICAxMDYsIDIzNCwgMTUyLCAxLCAyMTYsIDczLCAyMzQsIDE1MiwgMSwgMjEyLCA1NCwgMjM0LCAxNTIsIDEsIDIxNCwgMTAxLCAKKyAgICAyMzQsIDE1MiwgMSwgMjEwLCAyMSwgMjM0LCAxNTIsIDEsIDIwNiwgMjE1LCAyMzQsIDE1MiwgNDEsIDEwMiwgMjM0LCAxNTIsIAorICAgIDQxLCAxNjQsIDIzNCwgMTUyLCA0MSwgMjA2LCAxNjYsIDIzNCwgMTUyLCA0MSwgMjA0LCAxNTksIDIzNCwgMTUyLCA0MSwgCisgICAgMTEyLCAyMzMsIDgyLCAyMTUsIDIxNSwgMSwgMjUxLCAxMzcsIDIxNSwgMjE1LCAxLCAyNDgsIDIxMCwgMjE1LCAyMTUsIDEsIAorICAgIDIzNiwgNjIsIDIxNSwgMjE1LCAxLCAyNDEsIDEzOCwgMjE1LCAyMTUsIDEsIDIzNCwgMTM5LCAyMTUsIDIxNSwgMSwgMjAxLCAKKyAgICA3OSwgMjE1LCAyMTUsIDEsIDE5OSwgMTA3LCAyMTUsIDIxNSwgMSwgMjM0LCA5MywgMjE1LCAyMTUsIDEsIDIwNiwgMTQ2LCAKKyAgICAyMTUsIDIxNSwgMSwgMTk5LCAyMzQsIDIxNSwgMjE1LCAxLCAyMjcsIDg2LCAyMTUsIDIxNSwgMSwgMjI1LCA4OCwgMjE1LCAKKyAgICAyMTUsIDEsIDIyMiwgNDcsIDIxNSwgMjE1LCAxLCAyMTgsIDg5LCAyMTUsIDIxNSwgMSwgMjEwLCAxNjEsIDIxNSwgMjE1LCAKKyAgICAxLCAyNTEsIDE3MSwgMjE1LCAyMTUsIDEsIDIxNiwgNzMsIDIxNSwgMjE1LCAxLCAyMTIsIDU1LCAyMTUsIDIxNSwgMSwgCisgICAgMjE0LCAxMDYsIDIxNSwgMjE1LCAxLCAyMTIsIDIzMCwgMjE1LCAyMTUsIDEsIDIxMCwgMjEsIDIxNSwgMjE1LCAxLCAyMDYsIAorICAgIDIyMSwgMjE1LCAyMTUsIDQxLCAxMDIsIDIxNSwgMjE1LCA0MSwgMjA2LCAxNjYsIDIxNSwgMjE1LCA0MSwgMjA0LCAxNTksIAorICAgIDIxNSwgMjE1LCA0MSwgMTEyLCAyMzMsIDgyLCAyMTUsIDIxNSwgNDEsIDEwNSwgMjE1LCAyMTUsIDQxLCAxNDcsIDIxNSwgCisgICAgMjE1LCAyMDAsIDIzOCwgMjEwLCAxNTQsIDIyMywgMjU1LCAxLCA2MiwgMjIzLCAyNTUsIDEsIDI1MCwgMTAzLCAyMjMsIAorICAgIDI1NSwgMSwgMjM2LCAxNTYsIDIyMywgMjU1LCAxLCAyNDIsIDE1MywgMjIzLCAyNTUsIDEsIDcyLCAyMjMsIDI1NSwgMSwgCisgICAgMjAzLCAxNjgsIDIyMywgMjU1LCAxLCA3MCwgMjIzLCAyNTUsIDEsIDIwMCwgMTIzLCAyMjMsIDI1NSwgMSwgMjI3LCAxMTgsIAorICAgIDIyMywgMjU1LCAxLCAxNTYsIDIyMywgMjU1LCAxLCAyMjMsIDI0MywgMjIzLCAyNTUsIDEsIDIyMCwgMjE0LCAyMjMsIDI1NSwgCisgICAgMSwgNzQsIDIyMywgMjU1LCAxLCAxNDYsIDIyMywgMjU1LCAxLCAyMDgsIDE4MiwgMjIzLCAyNTUsIDEsIDIwNywgODMsIAorICAgIDIyMywgMjU1LCAxLCA2NiwgMjIzLCAyNTUsIDEsIDIzOCwgNSwgMjIzLCAyNTUsIDEsIDIxNCwgMTY3LCAyMjMsIDI1NSwgMSwgCisgICAgMjEyLCAxMjIsIDIyMywgMjU1LCAxLCAyMDUsIDAsIDIyMywgMjU1LCAxLCAyNTEsIDg1LCAyMjMsIDI1NSwgMSwgMjM4LCAKKyAgICAxNzksIDIyMywgMjU1LCAxLCAyMjQsIDIsIDIyMywgMjU1LCAxLCAyMTksIDIyLCAyMjMsIDI1NSwgMSwgMjQ3LCAyMjMsIAorICAgIDIyMywgMjU1LCAyMDUsIDk1LCA4MSwgMTMyLCAyMzQsIDY4LCAxLCA2MiwgMTMyLCAyMzQsIDY4LCAxLCA3MiwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCA3MCwgMTMyLCAyMzQsIDY4LCAxLCA3NCwgMTMyLCAyMzQsIDY4LCAxLCAxODMsIDEzMiwgMjM0LCA2OCwgCisgICAgMSwgMjAxLCAxMTQsIDEzMiwgMjM0LCA2OCwgMSwgMjQ5LCAxMzYsIDEzMiwgMjM0LCA2OCwgMSwgMjQ5LCAxMzUsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgMTcyLCAxMzIsIDIzNCwgNjgsIDEsIDE3OCwgMTMyLCAyMzQsIDY4LCAxLCAxODgsIDEzMiwgMjM0LCAKKyAgICA2OCwgMSwgMjIwLCAxNjEsIDEzMiwgMjM0LCA2OCwgMSwgMjIwLCAzNCwgMTMyLCAyMzQsIDY4LCAxLCAyMjAsIDMzLCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDIxMywgMjUyLCAxMzIsIDIzNCwgNjgsIDEsIDIxMywgMjUxLCAxMzIsIDIzNCwgNjgsIDEsIDE5NCwgCisgICAgMTMyLCAyMzQsIDY4LCAxLCAyMjYsIDIwNywgMTMyLCAyMzQsIDY4LCAxLCAyMzQsIDg0LCAxMzIsIDIzNCwgNjgsIDEsIAorICAgIDIxMiwgNjQsIDEzMiwgMjM0LCA2OCwgMSwgMjEyLCA2MywgMTMyLCAyMzQsIDY4LCAxLCAyMTEsIDIwMiwgMTMyLCAyMzQsIAorICAgIDY4LCAxLCAxNjEsIDEzMiwgMjM0LCA2OCwgMSwgMjE0LCAxNTksIDEzMiwgMjM0LCA2OCwgMSwgMjA3LCAzNiwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCAyMDcsIDM1LCAxMzIsIDIzNCwgNjgsIDEsIDIwNiwgMjAxLCAxMzIsIDIzNCwgNjgsIDEsIDIwNiwgCisgICAgMjAwLCAxMzIsIDIzNCwgNjgsIDEsIDEzOCwgMTMyLCAyMzQsIDY4LCAxLCAyNDIsIDU4LCAxMzIsIDIzNCwgNjgsIDE2LCAKKyAgICAyMDIsIDIyOCwgMTMyLCAyMzQsIDY4LCAxNiwgMjAyLCAyMjcsIDEzMiwgMjQyLCAxOTEsIDEsIDYyLCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCA3MiwgMTMyLCAyNDIsIDE5MSwgMSwgNzAsIDEzMiwgMjQyLCAxOTEsIDEsIDc0LCAxMzIsIDI0MiwgMTkxLCAxLCAKKyAgICAxODMsIDEzMiwgMjQyLCAxOTEsIDEsIDIwMSwgMTE0LCAxMzIsIDI0MiwgMTkxLCAxLCAyNDksIDEzNiwgMTMyLCAyNDIsIAorICAgIDE5MSwgMSwgMTcyLCAxMzIsIDI0MiwgMTkxLCAxLCAxNzgsIDEzMiwgMjQyLCAxOTEsIDEsIDE4OCwgMTMyLCAyNDIsIDE5MSwgCisgICAgMSwgMjIwLCAzNCwgMTMyLCAyNDIsIDE5MSwgMSwgMjEzLCAyNTIsIDEzMiwgMjQyLCAxOTEsIDEsIDE5NCwgMTMyLCAyNDIsIAorICAgIDE5MSwgMSwgMjI2LCAyMDcsIDEzMiwgMjQyLCAxOTEsIDEsIDIzNCwgODQsIDEzMiwgMjQyLCAxOTEsIDEsIDIxMiwgNjQsIAorICAgIDEzMiwgMjQyLCAxOTEsIDEsIDI1MCwgMjM0LCAyMTIsIDY0LCAxMzIsIDI0MiwgMTkxLCAxLCAyMTEsIDIwMiwgMTMyLCAKKyAgICAyNDIsIDE5MSwgMSwgMTYxLCAxMzIsIDI0MiwgMTkxLCAxLCAyMTQsIDE1OSwgMTMyLCAyNDIsIDE5MSwgMSwgMjA3LCAzNiwgCisgICAgMTMyLCAyNDIsIDE5MSwgMSwgMjA2LCAyMDEsIDEzMiwgMjQyLCAxOTEsIDEsIDEzOCwgMTMyLCAyNDIsIDE5MSwgMSwgMjQyLCAKKyAgICA1OCwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzOCwgMjAwLCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIAorICAgIDExMiwgMjM0LCAyMTMsIDEzMiwgMjQyLCAxOTEsIDIyNCwgOTcsIDIxMywgNywgMTMyLCAyNDIsIDE5MSwgMjI0LCA5NywgCisgICAgMjI4LCAxMjQsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMDIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMDUsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAxNDcsIDEzMiwgMjQyLCAxOTEsIDQxLCAxNDksIDEzMiwgMjQyLCAxOTEsIDQxLCAxNjQsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAxODcsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzNSwgMTMyLCAyNDIsIDE5MSwgNDEsIDE5MiwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIxOSwgMTEzLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDQsIAorICAgIDE1OSwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgNjcsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIzNSwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIzNywgMTA0LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCA5MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgCisgICAgMTI5LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTEyLCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTIwLCAyMzMsIDgyLCAKKyAgICAxMzIsIDI0MiwgMTkxLCA0MSwgMTI2LCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM2LCAyMjksIDIzMywgODIsIAorICAgIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCAxMDYsIDIzMywgCisgICAgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjMyLCAKKyAgICAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIwNiwgCisgICAgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIyOSwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgCisgICAgMTM2LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAKKyAgICAyMTksIDExNCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgMTY3LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMjA0LCAxNjAsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDY4LCAyMDYsIDUwLCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjM2LCAyMzYsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgMTMyLCAKKyAgICAyNDIsIDE5MSwgNDEsIDIwOSwgOTMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzMCwgMjA2LCA1MCwgCisgICAgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjIzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjE5LCAxMDksIDIwNiwgCisgICAgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIAorICAgIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMzYsIDIyOSwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIDIzMywgODMsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDIxMCwgMTM2LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIDIzMywgODMsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDExNCwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgCisgICAgMjM2LCAyMTksIDExMiwgMjA0LCAxNjcsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAxMjAsIDIwNCwgMTY2LCAxMzIsIAorICAgIDI0MiwgMTkxLCAyMzYsIDIxOSwgMTI2LCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzNiwgMjI5LCAKKyAgICAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzNywgNjEsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIAorICAgIDIxOSwgMjA5LCAxMDYsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjEwLCAxMzYsIDIwNCwgMTY2LCAKKyAgICAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM4LCAyMzIsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgCisgICAgMjE5LCAxMTQsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjA2LCAxNjcsIDIwNCwgMTY2LCAyMjYsIAorICAgIDE5NCwgMSwgNjIsIDIyNiwgMTk0LCAyMiwgMiwgNzAsIDIyNiwgMTk0LCAyMiwgMiwgNjYsIDIyNiwgMTk0LCAyMiwgMiwgCisgICAgMTA5LCAxNDYsIDIyNiwgMTk0LCAyMiwgMiwgNzIsIDIyNiwgMTk0LCAyMiwgMiwgNzQsIDIyNiwgMTk0LCAyMiwgMjI1LCAyLCAKKyAgICA4MSwgMjI2LCAxOTQsIDIsIDUzLCAyMTMsIDI3LCA1NywgMjI2LCAxOTQsIDIsIDI1MSwgMzMsIDIyNiwgMTk0LCAyLCAyMDIsIAorICAgIDIwMywgMjI2LCAxOTQsIDEsIDE2MSwgMjI2LCAxOTQsIDEsIDIyNiwgMjA3LCAyMjYsIDE5NCwgMSwgMjM2LCA4OSwgMjI2LCAKKyAgICAxOTQsIDEsIDIzNSwgMTk5LCAyMjYsIDE5NCwgMSwgMjQ3LCAxOTAsIDIyNiwgMTk0LCAxLCAyNDcsIDM3LCAyMjYsIDE5NCwgCisgICAgMSwgMjI3LCAyNDgsIDIyNiwgMTk0LCAxLCAyMTgsIDYwLCAyMjYsIDE5NCwgMSwgMjA0LCAyNTMsIDIyNiwgMTk0LCAxLCAKKyAgICAyMDQsIDI0MSwgMjI2LCAxOTQsIDEsIDI0MSwgMjIwLCAyMjYsIDE5NCwgMSwgMjQxLCAyMDQsIDIyNiwgMTk0LCAxLCAyMTksIAorICAgIDIxLCAyMjYsIDE5NCwgMSwgMjA3LCAzNiwgMjI2LCAxOTQsIDEsIDIwNiwgMTIyLCAyMjYsIDE5NCwgMSwgMjQyLCA1OCwgCisgICAgMjI2LCAxOTQsIDEsIDI0MSwgMTAwLCAyMjYsIDE5NCwgMSwgMTg4LCAyMjYsIDE5NCwgMSwgMTcyLCAyMjYsIDE5NCwgMSwgCisgICAgMjE1LCAyNDUsIDIyNiwgMTk0LCAxLCAyNDksIDEzNiwgMjI2LCAxOTQsIDEsIDI0OCwgMjAwLCAyMjYsIDE5NCwgMSwgMTc4LCAKKyAgICAyMjYsIDE5NCwgMSwgMTgzLCAyMjYsIDE5NCwgMSwgMjEzLCAyNTIsIDIyNiwgMTk0LCAxLCAxOTQsIDIyNiwgMTk0LCAxLCAKKyAgICAyMDMsIDkwLCAyMjYsIDE5NCwgMSwgMjEwLCAxMTQsIDIyNiwgMTk0LCAxLCAyMDgsIDE3OSwgMjI2LCAxOTQsIDEsIDIxMiwgCisgICAgNjQsIDIyNiwgMTk0LCAxLCAxOTksIDExNCwgMjI2LCAxOTQsIDEsIDE0NCwgMjI2LCAxOTQsIDEsIDIyNiwgMTA5LCAyMjYsIAorICAgIDE5NCwgMSwgMjA0LCAyMjEsIDIyNiwgMTk0LCAyLCAyNDksIDc3LCA1NiwgMjI2LCAxOTQsIDIsIDI0NywgMTA3LCAyMjYsIAorICAgIDE5NCwgMiwgNzMsIDU3LCAyMjYsIDE5NCwgMjAyLCAyMDgsIDIyNiwgMTk0LCAxNywgMTAyLCAyMjYsIDE5NCwgMTcsIDEwNSwgCisgICAgMjI2LCAxOTQsIDE3LCAxNDcsIDIyNiwgMTk0LCAxNywgMTQ5LCAyMjYsIDE5NCwgNDEsIDIwNiwgMTY2LCAyMjYsIDE5NCwgCisgICAgNDEsIDIwNCwgMTU5LCAyMjYsIDE5NCwgNDEsIDExMiwgMjMzLCA4MiwgMjI2LCAxOTQsIDQxLCAxMTIsIDIwNiwgNTAsIAorICAgIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQwLCAxODIsIDIyNiwgMTk0LCAyMTQsIDIxMiwgNCwgMjQ2LCAxNTUsIDIyNiwgMTk0LCAKKyAgICAyMTQsIDIxMiwgMjQ2LCAxNTUsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQyLCAyNDQsIDE0OCwgMjI2LCAxOTQsIDIxNCwgCisgICAgMjEyLCAyMjIsIDE3NCwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyMjQsIDY0LCAyMjYsIDE5NCwgMjE0LCAyMTIsIDI0MiwgMTAsIAorICAgIDIyNiwgMTk0LCAyMTQsIDIxMiwgNTMsIDI0MiwgMTAsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjI0LCAxNzAsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNCwgMTM5LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjUsIDgyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzQsIDkxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjIsIDQ3LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTQsIDEwMSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjAxLCA3MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjEwLCAyMSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjEzLCAxMjMsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDI0OCwgMjA3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDIxNSwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjExLCAyNTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNywgNTcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxOCwgODksIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNiwgMTg5LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTIsIDU0LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMTIsIDE5LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzcsIDE0NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjUxLCAxNDIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDI1MCwgMTA2LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDEsIDk3LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzUsIDE0NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjQyLCAyMiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM1LCAxODcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgMTQyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAxOTksIDkxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDEsIDk0LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAxOTksIDIzMywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCAxMDgsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgODcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDQxLCAxMDIsIDQwLCAyMDgsIDI1NCwgCisgICAgMjUwLCAyNDksIDQxLCAyMzcsIDEwNCwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMTQ1LCAyMjgsIDk5LCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjM0LCAxMTUsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMjUsIDkxLCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjM0LCAyMjQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMjIsIDYxLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjE0LCAKKyAgICAxNTIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDEsIDcyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM4LCAxMDIsIDQwLCAKKyAgICAxNTcsIDI1MCwgMjQ5LCAxLCAyMTMsIDE1NCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI0OCwgMjQwLCA0MCwgMTU3LCAyNTAsIAorICAgIDI0OSwgMSwgMjA2LCAxODMsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzgsIDEwMywgNDAsIDE1NywgMjUwLCAyNDksIDEsIAorICAgIDIyNywgODYsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTgsIDIyNywgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyNiwgMjAzLCAKKyAgICA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjEyLCA1NiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzOCwgMTAxLCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjM3LCAxMzQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNTEsIDE0MiwgNDAsIDE1NywgMjUwLCAyNDksIAorICAgIDEsIDI1MSwgMTcxLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQyLCA1MiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzNiwgNiwgCisgICAgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI0MiwgMjksIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzUsIDE5NCwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDEsIDIwNywgOSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDE5OSwgMTA1LCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjA2LCAxMTQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDAsIDQ2LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjA2LCAKKyAgICAxMDIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAxOTksIDEwOCwgNDAsIDE1NywgMjUwLCAyNDksIDQxLCAxMDIsIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCA0MSwgMjA2LCAxNjYsIDQwLCAxNTcsIDI1MCwgMjQ5LCA0MSwgMjA0LCAxNTksIDIyMiwgMTczLCAxLCAKKyAgICAyNTEsIDE0MCwgMjIyLCAxNzMsIDEsIDI0OCwgMjA3LCAyMjIsIDE3MywgMSwgMjQ4LCAxOTQsIDIyMiwgMTczLCAxLCAyMzUsIAorICAgIDE0NywgMjIyLCAxNzMsIDEsIDIzNSwgMTcyLCAyMjIsIDE3MywgMSwgMjQyLCAyMiwgMjIyLCAxNzMsIDEsIDIzNCwgMTM5LCAKKyAgICAyMjIsIDE3MywgMSwgMjAxLCA3MiwgMjIyLCAxNzMsIDIsIDIwNCwgMzYsIDIyMiwgMTczLCAxLCAxOTksIDkyLCAyMjIsIAorICAgIDE3MywgMSwgMTk5LCA3MCwgMjIyLCAxNzMsIDEsIDIyNywgMjI5LCAyMjIsIDE3MywgMSwgMjI3LCAyMTEsIDIyMiwgMTczLCAKKyAgICAxLCAyMzQsIDkxLCAyMjIsIDE3MywgMSwgMjA2LCAxNDIsIDIyMiwgMTczLCAxLCAxOTksIDIzMywgMjIyLCAxNzMsIDEsIAorICAgIDIyNywgNTcsIDIyMiwgMTczLCAxLCAyMDAsIDE3OCwgMjIyLCAxNzMsIDEsIDIyNiwgMTk2LCAyMjIsIDE3MywgMSwgMjI1LCAKKyAgICA4MiwgMjIyLCAxNzMsIDEsIDI0MSwgOTMsIDIyMiwgMTczLCAxLCAyMDYsIDExMywgMjIyLCAxNzMsIDEsIDIyMiwgNDcsIAorICAgIDIyMiwgMTczLCAxLCAyMTgsIDg5LCAyMjIsIDE3MywgMSwgMjEyLCAxOSwgMjIyLCAxNzMsIDEsIDI1MCwgMTA3LCAyMjIsIAorICAgIDE3MywgMSwgMjUyLCA5MSwgMjIyLCAxNzMsIDEsIDIxNiwgNzMsIDIyMiwgMTczLCAxLCAyMzcsIDE0NywgMjIyLCAxNzMsIAorICAgIDEsIDIxMiwgNTQsIDIyMiwgMTczLCAxLCAyMTQsIDEwMSwgMjIyLCAxNzMsIDEsIDIwMCwgMTU2LCAyMjIsIDE3MywgMSwgCisgICAgMjE0LCAxMjgsIDIyMiwgMTczLCAxLCAyMTMsIDEyMywgMjIyLCAxNzMsIDEsIDIxMCwgMjEsIDIyMiwgMTczLCAxLCAyMDgsIAorICAgIDE0OCwgMjIyLCAxNzMsIDEsIDIwNiwgMjE1LCAyMjIsIDE3MywgMjUyLCAzLCAxMzQsIDU2LCAyMjIsIDE3MywgMjUyLCAzLCAKKyAgICAxMzQsIDU3LCAyMjIsIDE3MywgNDEsIDEwMiwgMjIyLCAxNzMsIDQxLCAxNjQsIDIyMiwgMTczLCA0MSwgMjA2LCAxNjYsIAorICAgIDIyMiwgMTczLCA0MSwgMjA0LCAxNTksIDIyMiwgMTczLCA0MSwgMTEyLCAyMzMsIDgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIAorICAgIDIwOCwgMTA5LCAyMjIsIDE3MywgMjE0LCAyMTIsIDIzNywgMzksIDIyMiwgMTczLCAyMTQsIDIxMiwgNTMsIDczLCAyMDEsIAorICAgIDUsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIDczLCAyMDEsIDUsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAKKyAgICAyMTIsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIDEyMCwgMjQwLCAxODAsIDIyMiwgMTczLCAyMTQsIDIxMiwgCisgICAgMjI0LCAxNzcsIDIzNywgOTMsIDI1MCwgMTE5LCAxLCA2MiwgMjUwLCAxMTksIDEsIDI1MiwgMTM4LCAyNTAsIDExOSwgMSwgCisgICAgMjUxLCAzMSwgMjUwLCAxMTksIDEsIDI1MiwgOTcsIDI1MCwgMTE5LCAxLCAyNTEsIDg1LCAyNTAsIDExOSwgMSwgMjUyLCAKKyAgICA5OCwgMjUwLCAxMTksIDEsIDI1MSwgMjIxLCAyNTAsIDExOSwgMSwgMjUxLCAyMTcsIDI1MCwgMTE5LCAxLCA3MiwgMjUwLCAKKyAgICAxMTksIDEsIDIzOCwgMjU1LCAyNTAsIDExOSwgMSwgNzQsIDI1MCwgMTE5LCAxLCAyMTcsIDYzLCAyNTAsIDExOSwgMSwgNzAsIAorICAgIDI1MCwgMTE5LCAxLCAyMjgsIDE1MSwgMjUwLCAxMTksIDEsIDY2LCAyNTAsIDExOSwgMSwgMjAzLCAxODIsIDI1MCwgMTE5LCAKKyAgICAxLCAyMjcsIDgsIDI1MCwgMTE5LCAxLCAyMDAsIDE3NSwgMjUwLCAxMTksIDEsIDIwMCwgMTM3LCAyNTAsIDExOSwgMSwgCisgICAgMjAwLCAxNDcsIDI1MCwgMTE5LCAxLCAyMzYsIDE1LCAyNTAsIDExOSwgMSwgMjM1LCAyMzAsIDI1MCwgMTE5LCAxLCAyMzUsIAorICAgIDE4NSwgMjUwLCAxMTksIDEsIDI0NywgNzYsIDI1MCwgMTE5LCAxLCAyMjcsIDIyNywgMjUwLCAxMTksIDEsIDIwNiwgMjAxLCAKKyAgICAyNTAsIDExOSwgMSwgMjA2LCAxMDYsIDI1MCwgMTE5LCAxLCAyNDEsIDE3NSwgMjUwLCAxMTksIDEsIDI0MSwgOTEsIDI1MCwgCisgICAgMTE5LCAxLCAyMDQsIDI0OCwgMjUwLCAxMTksIDEsIDIxNiwgNzMsIDI1MCwgMTE5LCAxLCAyMzcsIDE0NywgMjUwLCAxMTksIAorICAgIDEsIDI0OSwgOCwgMjUwLCAxMTksIDEsIDI0OCwgMTk2LCAyNTAsIDExOSwgMSwgMjE5LCAyNDAsIDI1MCwgMTE5LCAxLCAKKyAgICAyMTksIDE1NiwgMjUwLCAxMTksIDEsIDIxOSwgMTU3LCAyNTAsIDExOSwgMSwgMjIwLCAzNCwgMjUwLCAxMTksIDEsIDIxOCwgCisgICAgNTAsIDI1MCwgMTE5LCAxLCAyMTksIDE2LCAyNTAsIDExOSwgMSwgMjIyLCA3NiwgMjUwLCAxMTksIDEsIDIzNCwgMSwgMjUwLCAKKyAgICAxMTksIDEsIDE5OSwgMTY0LCAyNTAsIDExOSwgMSwgMjAwLCA1MSwgMjUwLCAxMTksIDEsIDIwMywgNTksIDI1MCwgMTE5LCAKKyAgICAxLCAyMTMsIDE5MCwgMjUwLCAxMTksIDEsIDIyNSwgNDAsIDI1MCwgMTE5LCAxLCAyMTEsIDIwMiwgMjUwLCAxMTksIDEsIAorICAgIDE5OSwgODksIDI1MCwgMTE5LCAxLCAyMTAsIDY1LCAyNTAsIDExOSwgMSwgMTk5LCA2OCwgMjUwLCAxMTksIDEsIDIwOSwgCisgICAgMTg5LCAyNTAsIDExOSwgMSwgMjA4LCAxNDksIDI1MCwgMTE5LCAxLCAyMzQsIDEzOSwgMjUwLCAxMTksIDI1MiwgMywgODEsIAorICAgIDIwNSwgMjI2LCAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAyMTQsIDIxMSwgNCwgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgCisgICAgMjE0LCAyMTEsIDIyNSwgNzEsIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCAyMjUsIDcxLCAxMTIsIDczLCAKKyAgICAxMTksIDEyMCwgMTkwLCAyMTQsIDIxMSwgMjI1LCA3MSwgMTIwLCAyMTMsIDI0LCAxMTksIDExMiwgMjEzLCAyNywgMjE0LCAKKyAgICAyMTEsIDIyNSwgNzEsIDExMiwgMjEzLCAyNywgMTE5LCAxMjAsIDIxMywgMjQsIDIxNCwgMjExLCAyMjgsIDc3LCAyMTYsIAorICAgIDEwOSwgMSwgMjUxLCAxNDAsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNDgsIDIwNywgMjI4LCA3NywgMjE2LCAxMDksIDEsIAorICAgIDIzNSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjQyLCAyMiwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIzNCwgMTM5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjAxLCA3MiwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDE5OSwgOTIsIDIyOCwgNzcsIAorICAgIDIxNiwgMTA5LCAxLCAyMzQsIDkxLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjA2LCAxNDIsIDIyOCwgNzcsIDIxNiwgMTA5LCAKKyAgICAxLCAxOTksIDIzMywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIyNywgNTcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMjUsIAorICAgIDgyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjIyLCA0NywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxOCwgODksIDIyOCwgCisgICAgNzcsIDIxNiwgMTA5LCAxLCAyMTIsIDE5LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjUwLCAxMDcsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCAxLCAyMTYsIDczLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjEyLCA1NCwgMjI4LCA3NywgMjE2LCAxMDksIDEsIAorICAgIDIxNCwgMTAxLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjEzLCAxMjMsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTAsIDIxLCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjA2LCAyMTUsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTAyLCAyMjgsIDc3LCAyMTYsIAorICAgIDEwOSwgNDEsIDEwNSwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxNDcsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTQ5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDIwNiwgMTY2LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDIwNCwgMTU5LCAyMjgsIAorICAgIDc3LCAyMTYsIDEwOSwgNDEsIDExMiwgMjMzLCA4MiwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxMTIsIDIwNiwgNTAsIDIyOCwgCisgICAgNzcsIDIxNiwgMTkxLCAxLCAyNTEsIDE0MCwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDI0OCwgMjA3LCAyMjgsIDc3LCAyMTYsIAorICAgIDE5MSwgMSwgMjM1LCAxNDcsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyNDIsIDIyLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgCisgICAgMjM0LCAxMzksIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMDEsIDcxLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMTk5LCA5MiwgCisgICAgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIzNCwgOTEsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMDYsIDE0MiwgMjI4LCA3NywgCisgICAgMjE2LCAxOTEsIDEsIDE5OSwgMjMzLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjI3LCA1NywgMjI4LCA3NywgMjE2LCAxOTEsIAorICAgIDEsIDIyNSwgODIsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMjIsIDQ2LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjE4LCA4OSwgCisgICAgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxMiwgMTksIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTYsIDczLCAyMjgsIDc3LCAKKyAgICAyMTYsIDE5MSwgMSwgMjEyLCA1NCwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxMCwgMjEsIDIyOCwgNzcsIDIxNiwgMTkxLCAKKyAgICAxLCAyMDYsIDIxNSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMDIsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTA1LCAyMjgsIAorICAgIDc3LCAyMTYsIDE5MSwgNDEsIDE0NywgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxNDksIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgCisgICAgMjA2LCAxNjYsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMjA0LCAxNTksIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDExMiwgMjA2LCA1MCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNTEsIAorICAgIDE0MCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNDgsIDIwNywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMzUsIDE0NywgCisgICAgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNDIsIDIyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIzNCwgMTM5LCAyMTQsIAorICAgIDIzNiwgMjE2LCAxOTEsIDEsIDIwMSwgNzEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMTk5LCA5MiwgMjE0LCAyMzYsIDIxNiwgCisgICAgMTkxLCAxLCAyMzQsIDkxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDE5OSwgMjMzLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIAorICAgIDIyNywgNTcsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjI1LCA4MiwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMjIsIDQ2LCAKKyAgICAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIxOCwgODksIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjEyLCAxOSwgMjE0LCAyMzYsIAorICAgIDIxNiwgMTkxLCAxLCAyMTYsIDczLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIxMiwgNTQsIDIxNCwgMjM2LCAyMTYsIDE5MSwgCisgICAgMSwgMjEwLCAyMSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMDYsIDIxNSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMTEsIAorICAgIDE5MywgODEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMjA0LCAxODUsIDIxMSwgMTkzLCA4MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAKKyAgICAyMzYsIDIyOSwgMTkwLCAzLCAyNDIsIDIzNCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMzYsIDIyOSwgMTkwLCAzLCAyNDAsIAorICAgIDE4MiwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTAyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxMDUsIDIxNCwgMjM2LCAKKyAgICAyMTYsIDE5MSwgNDEsIDE0NywgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTQ5LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAKKyAgICAyMDYsIDE2NiwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMjA0LCAxNTksIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCA2MiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCA2MiwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCA3MCwgNDAsIDIwNCwgCisgICAgMTg5LCAxLCAyMDAsIDM5LCA3MCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCA3MiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIAorICAgIDIzLCA3NCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDEyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyMTcsIDEyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTIsIDg5LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MiwgODksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMjAsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMjAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMTUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMTUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMTksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxMiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MCwgMTEyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjAyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjAyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjEzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjEzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIxNywgMTE5LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIxNywgMTE5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMTUxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMTUxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTkzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTkwLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgODUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTAsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMTAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNTcsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNTcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNzYsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNzYsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNDMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNDMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCA3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDE2NSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIwOSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDEzMywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMTcsIDU0LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzMiwgMjMzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOSwgNywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzksIDcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAKKyAgICAxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMjgsIDM3LCAKKyAgICA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIyOCwgMzcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjE3LCAzNSwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMTcsIDM1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMjUzLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMjUzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjA4LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTg4LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjA2LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTgxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTgxLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgOTQsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCA5NCwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDE1NSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDE1NSwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIwMywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIwMywgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDExLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI0OSwgNjEsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDYyLCA0MCwgMTUyLCA2LCAxLCAyNTIsIDEzOCwgNDAsIDE1MiwgNiwgMSwgMjM5LCA5LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyNTEsIDk2LCA0MCwgMTUyLCA2LCAxLCAyMzksIDcsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTc2LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMzksIDQsIDQwLCAxNTIsIDYsIDEsIDIzOSwgMywgNDAsIDE1MiwgNiwgMSwgMjUxLCA3OSwgNDAsIDE1MiwgNiwgCisgICAgMSwgNzIsIDQwLCAxNTIsIDYsIDEsIDI0NiwgMTExLCA3MiwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyNTUsIDQwLCAxNTIsIDYsIAorICAgIDEsIDIzOCwgMjQ4LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI0NywgNDAsIDE1MiwgNiwgMSwgMjM4LCAyNDQsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOCwgMjQxLCA0MCwgMTUyLCA2LCAxLCA3MCwgNDAsIDE1MiwgNiwgMSwgMjI4LCAxNTEsIDQwLCAxNTIsIDYsIAorICAgIDEsIDIzOCwgMjE5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDIxNiwgNDAsIDE1MiwgNiwgMSwgMjUxLCAxNTksIDQwLCAxNTIsIAorICAgIDYsIDEsIDIwMywgMjM2LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDIwOSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxOTIsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDIzOCwgMTkwLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE3OSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNDMsIAorICAgIDQwLCAxNTIsIDYsIDEsIDc0LCA0MCwgMTUyLCA2LCAxLCAyMTcsIDYzLCA0MCwgMTUyLCA2LCAxLCAyMTksIDEyMSwgMjE3LCAKKyAgICAxMjEsIDQwLCAxNTIsIDYsIDEsIDIxMiwgMTcxLCAyMTcsIDEyMSwgNDAsIDE1MiwgNiwgMSwgMjE3LCAxMjAsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOCwgMTMzLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE4NCwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxMTUsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDIwOSwgMjUwLCAyMzgsIDExNSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxMDQsIDQwLCAxNTIsIDYsIDEsIAorICAgIDIzOCwgODMsIDQwLCAxNTIsIDYsIDEsIDIzOCwgODEsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTU3LCA0MCwgMTUyLCA2LCAxLCAKKyAgICAyMzgsIDcwLCA0MCwgMTUyLCA2LCAxLCAyMzksIDUsIDQwLCAxNTIsIDYsIDEsIDY2LCA0MCwgMTUyLCA2LCAxLCAyMDMsIAorICAgIDE4MiwgNDAsIDE1MiwgNiwgMSwgMjE5LCAxMjEsIDIwNCwgMzEsIDQwLCAxNTIsIDYsIDEsIDIxMiwgMTcxLCAyMDQsIDMxLCAKKyAgICA0MCwgMTUyLCA2LCAxLCAyMzgsIDU3LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDEyLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDcsIAorICAgIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTU2LCA1NCwgNDAsIDE1MiwgNiwgMSwgMjAzLCAxOTcsIDQwLCAxNTIsIDQsIDEsIDYyLCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyNTIsIDEzOCwgNDAsIDE1MiwgNCwgMSwgMjM5LCA5LCA0MCwgMTUyLCA0LCAxLCAyNTEsIDk2LCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzksIDcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTc2LCA0MCwgMTUyLCA0LCAxLCAyMzksIDQsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgMywgNDAsIDE1MiwgNCwgMSwgMjUxLCA3OSwgNDAsIDE1MiwgNCwgMSwgNzIsIDQwLCAKKyAgICAxNTIsIDQsIDEsIDI0NiwgMTExLCA3MiwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyNTUsIDQwLCAxNTIsIDQsIDEsIDIzOCwgCisgICAgMjQ4LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI0NywgNDAsIDE1MiwgNCwgMSwgMjM4LCAyNDQsIDQwLCAxNTIsIDQsIDEsIAorICAgIDIzOCwgMjQxLCA0MCwgMTUyLCA0LCAxLCA3MCwgNDAsIDE1MiwgNCwgMSwgMjI4LCAxNTEsIDQwLCAxNTIsIDQsIDEsIDIzOCwgCisgICAgMjE5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDIxNiwgNDAsIDE1MiwgNCwgMSwgMjUxLCAxNTksIDQwLCAxNTIsIDQsIDEsIAorICAgIDIwMywgMjM2LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDIwOSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxOTIsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIzOCwgMTkwLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE3OSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNDMsIDQwLCAxNTIsIAorICAgIDQsIDEsIDc0LCA0MCwgMTUyLCA0LCAxLCAyMTcsIDYzLCA0MCwgMTUyLCA0LCAxLCAyMTksIDEyMSwgMjE3LCAxMjEsIDQwLCAKKyAgICAxNTIsIDQsIDEsIDIxMiwgMTcxLCAyMTcsIDEyMSwgNDAsIDE1MiwgNCwgMSwgMjE3LCAxMjAsIDQwLCAxNTIsIDQsIDEsIAorICAgIDIzOCwgMTMzLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE4NCwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxMTUsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIwOSwgMjUwLCAyMzgsIDExNSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxMDQsIDQwLCAxNTIsIDQsIDEsIDIzOCwgODMsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOCwgODEsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTU3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDcwLCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzksIDUsIDQwLCAxNTIsIDQsIDEsIDY2LCA0MCwgMTUyLCA0LCAxLCAyMDMsIDE4MiwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjE5LCAxMjEsIDIwNCwgMzEsIDQwLCAxNTIsIDQsIDEsIDIxMiwgMTcxLCAyMDQsIDMxLCA0MCwgMTUyLCAKKyAgICA0LCAxLCAyMzgsIDU3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDEyLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDcsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIzOCwgMTU2LCA1NCwgNDAsIDE1MiwgNCwgMSwgMjAzLCAxOTcsIDQwLCAxNTIsIDQxLCAxMDIsIDQwLCAxNTIsIDQxLCAKKyAgICAxNjQsIDQwLCAxNTIsIDQxLCAyMDYsIDE2NiwgNDAsIDE1MiwgNDEsIDIzNywgMTA0LCA0MCwgMTUyLCA0MSwgMTEyLCAyMzMsIAorICAgIDgyLCA0MCwgMTUyLCA0MSwgMTEyLCAyMDYsIDUwLCAyMTIsIDE1OSwgMTcsIDEwMiwgMjEyLCAxNTksIDE3LCAxMDUsIDIxMiwgCisgICAgMTU5LCAxNywgMTQ3LCAyMTIsIDE1OSwgMTcsIDE0OSwgMjEyLCAxNTksIDE3LCAxNjQsIDIxMiwgMTU5LCAxNywgMTg3LCAKKyAgICAyMTIsIDE1OSwgMTcsIDIxMCwgMTM1LCAyMTIsIDE1OSwgMTcsIDE5MiwgMjEyLCAxNTksIDE3LCAyMTksIDExMywgMjEyLCAKKyAgICAxNTksIDQxLCAyMDYsIDE2NiwgMjEyLCAxNTksIDQxLCAyMDQsIDE1OSwgMjEyLCAxNTksIDQxLCAyMDYsIDY3LCAyMTIsIAorICAgIDE1OSwgNDEsIDIzNiwgMjM1LCAyMTIsIDE1OSwgNDEsIDIzNywgMTA0LCAyMTIsIDE1OSwgNDEsIDIwOSwgOTIsIDIxMiwgCisgICAgMTU5LCA0MSwgMjEwLCAxMjksIDIxMiwgMTU5LCA0MSwgMjM4LCAyMjIsIDIxMiwgMTU5LCA0MSwgMjE5LCAxMDgsIDIxMiwgCisgICAgMTU5LCA0MSwgMTEyLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDEyMCwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAxMjYsIAorICAgIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjM2LCAyMjksIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgCisgICAgMjEyLCAxNTksIDQxLCAyMDksIDEwNiwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgMjEyLCAKKyAgICAxNTksIDQxLCAyMzgsIDIzMiwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgMjEyLCAxNTksIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAyMTIsIDE1OSwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMjEyLCAxNTksIDIzNiwgCisgICAgMjE5LCAxMTIsIDIwNiwgNzQsIDIxMiwgMTU5LCAyMzYsIDIxOSwgMTIwLCAyMDYsIDcxLCAxNTEsIDIsIDI0NywgMTQ5LCAKKyAgICAxNTEsIDIsIDI1MSwgMzMsIDE1MSwgMiwgMjAyLCAyMDMsIDE1MSwgMiwgMjI3LCAyMDEsIDE1MSwgMiwgMjAzLCAyMjYsIAorICAgIDE1MSwgMSwgNjIsIDE1MSwgMSwgMjUyLCAxMzgsIDE1MSwgMSwgNzAsIDE1MSwgMSwgMjI4LCAxNTEsIDE1MSwgMSwgNjYsIAorICAgIDE1MSwgMSwgMjAzLCAxODIsIDE1MSwgMSwgMTA5LCAxNDYsIDE1MSwgMSwgMTA5LCAyMTIsIDIxNiwgMTUxLCAxLCAxMDksIAorICAgIDE1NiwgMTUxLCAxLCAxMDksIDIyNCwgMTM5LCAxNTEsIDEsIDcyLCAxNTEsIDEsIDI1MSwgMTc2LCAxNTEsIDEsIDc0LCAKKyAgICAxNTEsIDEsIDI1MCwgMTM5LCAxNTEsIDEsIDE2MSwgMTUxLCAxLCAyMjYsIDIwNywgMTUxLCAxLCAyMzYsIDg5LCAxNTEsIDEsIAorICAgIDIzNSwgMTk5LCAxNTEsIDEsIDIxOSwgMjUzLCAxNTEsIDEsIDI0NywgMTkwLCAxNTEsIDEsIDI0NywgMzcsIDE1MSwgMSwgCisgICAgMjI3LCAyNDgsIDE1MSwgMSwgMjI3LCAyMTUsIDE1MSwgMSwgMjE4LCA2MCwgMTUxLCAxLCAyMDQsIDI1MywgMTUxLCAxLCAKKyAgICAyMDQsIDI0MSwgMTUxLCAxLCAyNDEsIDIyMCwgMTUxLCAxLCAyNDEsIDIwNCwgMTUxLCAxLCAyMTksIDIxLCAxNTEsIDEsIAorICAgIDIwNywgMzYsIDE1MSwgMSwgMjA2LCAxMjIsIDE1MSwgMSwgMjQyLCA1OCwgMTUxLCAxLCAyNDEsIDEwMCwgMTUxLCAxLCAKKyAgICAxODgsIDE1MSwgMSwgMTcyLCAxNTEsIDEsIDIxNSwgMjQ1LCAxNTEsIDEsIDI0OSwgMTM2LCAxNTEsIDEsIDI0OCwgMjAwLCAKKyAgICAxNTEsIDEsIDE3OCwgMTUxLCAxLCAxODMsIDE1MSwgMSwgMjEzLCAyNTIsIDE1MSwgMSwgMTk0LCAxNTEsIDEsIDIwMywgOTAsIAorICAgIDE1MSwgMSwgMjEwLCAxMTQsIDE1MSwgMSwgMjA4LCAxNzksIDE1MSwgMSwgMjEyLCA2NCwgMTUxLCAxLCAxNDQsIDE1MSwgMSwgCisgICAgMjI0LCAxMzgsIDE1MSwgMSwgNDAsIDQ1LCAyMjQsIDEyOSwgMTUxLCAxLCA0MCwgNDUsIDIxMiwgMjE1LCAxNTEsIDEsIDQwLCAKKyAgICA0NSwgMjE5LCAzLCAxNTEsIDIyLCAyLCAyNTIsIDEzOCwgMTUxLCAyMiwgMiwgMjQ4LCAxOTcsIDI1MiwgMTM4LCAxNTEsIAorICAgIDIyLCAyLCA3MCwgMTUxLCAyMiwgMiwgMjI4LCAxNTEsIDE1MSwgMjIsIDIsIDY2LCAxNTEsIDIyLCAyLCAyMDMsIDE4MiwgCisgICAgMTUxLCAyMiwgMiwgMTA5LCAxNDYsIDE1MSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE1MSwgMjIsIDIsIDEwOSwgMTU2LCAKKyAgICAxNTEsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxNTEsIDIyLCAyLCA3MiwgMTUxLCAyMiwgMiwgMjUxLCAxNzYsIDE1MSwgMjIsIAorICAgIDIsIDc0LCAxNTEsIDIyLCAyLCAyNTAsIDEzOSwgMTUxLCAyMDIsIDIwOCwgMTUxLCAyNDIsIDEwLCAxNTEsIDUzLCAyNDIsIAorICAgIDEwLCAxNTEsIDIxNCwgMjEyLCAyNDAsIDE4MiwgMTUxLCAyMTQsIDIxMiwgNTMsIDI0MCwgMTgyLCAxNTEsIDIxNCwgMjEyLCAKKyAgICAyMjQsIDE3NiwgMTUxLCAyMTQsIDIxMiwgMjQyLCAyNDQsIDE0OCwgMTUxLCAyMTQsIDIxMiwgMjI0LCA2NCwgMTUxLCA0MSwgCisgICAgMTAyLCAxNTEsIDQxLCAxMDUsIDE1MSwgNDEsIDE0NywgMTUxLCA0MSwgMTQ5LCAxNTEsIDQxLCAxNjQsIDE1MSwgNDEsIAorICAgIDE4NywgMTUxLCA0MSwgMjEwLCAxMzUsIDE1MSwgNDEsIDE5MiwgMTUxLCA0MSwgMjE5LCAxMTMsIDE1MSwgNDEsIDIwNiwgCisgICAgMTY2LCAxNTEsIDQxLCAyMDQsIDE1OSwgMTUxLCA0MSwgMjA2LCA2NywgMTUxLCA0MSwgMjM2LCAyMzUsIDE1MSwgNDEsIAorICAgIDIzNywgMTA0LCAxNTEsIDQxLCAyMDksIDkyLCAxNTEsIDQxLCAyMTAsIDEyOSwgMTUxLCA0MSwgMjM4LCAyMjIsIDE1MSwgCisgICAgNDEsIDIxOSwgMTA4LCAxNTEsIDQxLCAxMTIsIDIzMywgODIsIDE1MSwgNDEsIDExMiwgMjA2LCA1MCwgMTUxLCAxNywgMTk5LCAKKyAgICA4MSwgMTUxLCAxNywgMTAyLCAxNTEsIDE3LCAxMDUsIDE1MSwgMTcsIDE0NywgMTUxLCAxNywgMTQ5LCAxNTEsIDE3LCAxNjQsIAorICAgIDE1MSwgMTcsIDE4NywgMTUxLCAxNywgMjEwLCAxMzUsIDE1MSwgMTcsIDE5MiwgMTUxLCAxNywgMjE5LCAxMTMsIDE1MSwgCisgICAgNDEsIDIyNywgMTYxLCAyMjcsIDc5LCAyLCAyNDcsIDE0OSwgMjI3LCA3OSwgMiwgMjUxLCAzMywgMjI3LCA3OSwgMiwgMjAyLCAKKyAgICAyMDMsIDIyNywgNzksIDEsIDYyLCAyMjcsIDc5LCAxLCAyNTIsIDEzOCwgMjI3LCA3OSwgMSwgNzAsIDIyNywgNzksIDEsIAorICAgIDIyOCwgMTUxLCAyMjcsIDc5LCAxLCA2NiwgMjI3LCA3OSwgMSwgMjAzLCAxODIsIDIyNywgNzksIDEsIDcyLCAyMjcsIDc5LCAKKyAgICAxLCAyNTEsIDE3NiwgMjI3LCA3OSwgMSwgNzQsIDIyNywgNzksIDEsIDI1MCwgMTM5LCAyMjcsIDc5LCAxLCAxNjEsIDIyNywgCisgICAgNzksIDEsIDIyNiwgMjA3LCAyMjcsIDc5LCAxLCAyMzYsIDg5LCAyMjcsIDc5LCAxLCAyMzUsIDE5OSwgMjI3LCA3OSwgMSwgCisgICAgMjE5LCAyNTMsIDIyNywgNzksIDEsIDI0NywgMTkwLCAyMjcsIDc5LCAxLCAyNDcsIDM3LCAyMjcsIDc5LCAxLCAyMjcsIAorICAgIDI0OCwgMjI3LCA3OSwgMSwgMjI3LCAyMTUsIDIyNywgNzksIDEsIDIxOCwgNjAsIDIyNywgNzksIDEsIDIwNCwgMjUzLCAKKyAgICAyMjcsIDc5LCAxLCAyMDQsIDI0MSwgMjI3LCA3OSwgMSwgMjQxLCAyMjAsIDIyNywgNzksIDEsIDI0MSwgMjA5LCAyMjcsIAorICAgIDc5LCAxLCAyNDEsIDIwNCwgMjI3LCA3OSwgMSwgMjEzLCA5MywgMjI3LCA3OSwgMSwgMjE5LCAyMSwgMjI3LCA3OSwgMSwgCisgICAgMjA3LCAzNiwgMjI3LCA3OSwgMSwgMjA2LCAxMjIsIDIyNywgNzksIDEsIDI0MiwgNTgsIDIyNywgNzksIDEsIDI0MSwgMTAwLCAKKyAgICAyMjcsIDc5LCAxLCAxODgsIDIyNywgNzksIDEsIDE3MiwgMjI3LCA3OSwgMSwgMjE1LCAyNDUsIDIyNywgNzksIDEsIDI0OSwgCisgICAgMTM2LCAyMjcsIDc5LCAxLCAyNDgsIDIwMCwgMjI3LCA3OSwgMSwgMTc4LCAyMjcsIDc5LCAxLCAxODMsIDIyNywgNzksIDEsIAorICAgIDIxMywgMjUyLCAyMjcsIDc5LCAxLCAxOTQsIDIyNywgNzksIDEsIDIwMywgOTAsIDIyNywgNzksIDEsIDIxMCwgMTE0LCAKKyAgICAyMjcsIDc5LCAxLCAyMDgsIDE3OSwgMjI3LCA3OSwgMSwgMjEyLCA2NCwgMjI3LCA3OSwgMSwgMTQ0LCAyMjcsIDc5LCAyMiwgCisgICAgMiwgMjUyLCAxMzgsIDIyNywgNzksIDIyLCAyLCA3MCwgMjI3LCA3OSwgMjIsIDIsIDIyOCwgMTUxLCAyMjcsIDc5LCAyMiwgCisgICAgMiwgNjYsIDIyNywgNzksIDIyLCAyLCAyMDMsIDE4MiwgMjI3LCA3OSwgMjIsIDIsIDcyLCAyMjcsIDc5LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIyNywgNzksIDIyLCAyLCA3NCwgMjI3LCA3OSwgMjIsIDIsIDI1MCwgMTM5LCAyMjcsIDc5LCAyLCAyMDIsIDIwOCwgCisgICAgMjI3LCA3OSwgMiwgMjE4LCAxMDAsIDIyNywgNzksIDI1MiwgMywgNTQsIDIyNywgNzksIDIzOCwgMTQ2LCA1NCwgMjI3LCAKKyAgICA3OSwgNDEsIDU0LCAyMjcsIDc5LCAyMTEsIDE5MywgODEsIDIyNywgNzksIDUzLCAyMTEsIDE5MywgODEsIDIyNywgNzksIAorICAgIDI0MiwgMTAsIDIyNywgNzksIDUzLCAyNDIsIDEwLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxMiwgNDcsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMSwgMjA3LCA5LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0OSwgMTA3LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0NywgCisgICAgMTc5LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0MiwgMzgsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM2LCA3NCwgMjA5LCA2LCAKKyAgICAyMDksIDE0LCAxLCAyMjIsIDIwNiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTksIDI1MCwgMjA5LCA2LCAyMDksIDE0LCAxLCAKKyAgICAyMjUsIDE1MiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjAsIDE0NCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMDMsIDg2LCAyMDksIAorICAgIDYsIDIwOSwgMTQsIDEsIDIxNiwgMTkyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIwMCwgOTAsIDIwOSwgNiwgMjA5LCAxNCwgMSwgCisgICAgMjEzLCAyMzEsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM0LCAyMjQsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjI3LCA4NCwgMjA5LCAKKyAgICA2LCAyMDksIDE0LCAxLCAyMjcsIDI0MiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTgsIDU3LCAyMDksIDYsIDIwOSwgMTQsIDEsIAorICAgIDI1MSwgMTg1LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIzOCwgMjUzLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyOCwgMTUyLCAKKyAgICAyMDksIDYsIDIwOSwgMTQsIDEsIDIwNCwgMjUsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjE3LCAxMDgsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMSwgMjM4LCAyNDEsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjIyLCAyMTksIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE5OSwgCisgICAgODEsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDEwMiwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTA1LCAyMDksIDYsIDIwOSwgMTQsIAorICAgIDE3LCAxNDcsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE0OSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTY0LCAyMDksIDYsIDIwOSwgCisgICAgMTQsIDE3LCAxODcsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDIxMCwgMTM1LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxOTIsIAorICAgIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDIxOSwgMTEzLCAyNDcsIDMxLCAyLCAyNDcsIDE0OSwgMjQ3LCAzMSwgMiwgMjUxLCAzMywgCisgICAgMjQ3LCAzMSwgMiwgMjAyLCAyMDMsIDI0NywgMzEsIDEsIDI1MiwgMTM4LCAyNDcsIDMxLCAxLCA3MCwgMjQ3LCAzMSwgMSwgCisgICAgNjYsIDI0NywgMzEsIDEsIDcyLCAyNDcsIDMxLCAxLCAyMjcsIDEwNSwgMjQ3LCAzMSwgMSwgMjI2LCAyMDYsIDI0NywgMzEsIAorICAgIDEsIDIzNiwgODYsIDI0NywgMzEsIDEsIDIzNSwgMTk4LCAyNDcsIDMxLCAxLCAyMTksIDI1MiwgMjQ3LCAzMSwgMSwgMjQ3LCAKKyAgICAxODksIDI0NywgMzEsIDEsIDI0NywgMzYsIDI0NywgMzEsIDEsIDIyNywgMjQ3LCAyNDcsIDMxLCAxLCAyMjcsIDIxNCwgCisgICAgMjQ3LCAzMSwgMSwgMjE4LCA1OSwgMjQ3LCAzMSwgMSwgMjA0LCAyNTIsIDI0NywgMzEsIDEsIDIwNCwgMjQwLCAyNDcsIDMxLCAKKyAgICAxLCAyNDEsIDIxOSwgMjQ3LCAzMSwgMSwgMjQxLCAyMDMsIDI0NywgMzEsIDEsIDIxOSwgMjAsIDI0NywgMzEsIDEsIDIwNywgCisgICAgMzIsIDI0NywgMzEsIDEsIDIwNiwgMTIxLCAyNDcsIDMxLCAxLCAyNDIsIDU3LCAyNDcsIDMxLCAxLCAyNDEsIDk5LCAyNDcsIAorICAgIDMxLCAxLCAyMjAsIDE1NywgMjQ3LCAzMSwgMSwgMjE2LCAyMTAsIDI0NywgMzEsIDEsIDIxNSwgMjQ0LCAyNDcsIDMxLCAxLCAKKyAgICAyNDksIDEzNCwgMjQ3LCAzMSwgMSwgMjQ4LCAxOTksIDI0NywgMzEsIDEsIDIyMiwgMjMzLCAyNDcsIDMxLCAxLCAxOTksIAorICAgIDE2NSwgMjQ3LCAzMSwgMSwgMjAwLCAxMDksIDI0NywgMzEsIDEsIDIxMywgMjQ4LCAyNDcsIDMxLCAxLCAyMjUsIDE3NSwgCisgICAgMjQ3LCAzMSwgMSwgMjAxLCAxMTMsIDI0NywgMzEsIDEsIDIxMiwgNjEsIDI0NywgMzEsIDEsIDIzNCwgMjMzLCAyNDcsIDMxLCAKKyAgICAyMiwgMiwgNjIsIDI0NywgMzEsIDIyLCAyLCA3MCwgMjQ3LCAzMSwgMjIsIDIsIDIyOCwgMTUxLCAyNDcsIDMxLCAyMiwgMiwgCisgICAgNjYsIDI0NywgMzEsIDIyLCAyLCAyMDMsIDE4MiwgMjQ3LCAzMSwgMjIsIDIsIDcyLCAyNDcsIDMxLCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDI0NywgMzEsIDIyLCAyLCA3NCwgMjQ3LCAzMSwgMjIsIDIsIDI1MCwgMTM5LCAyNDcsIDMxLCAyMiwgMiwgMjE3LCAKKyAgICAxMDUsIDI0NywgMzEsIDE2MywgODEsIDI0NywgMzEsIDI1MCwgMTQwLCA4MSwgMjQ3LCAzMSwgMjAyLCAyMDgsIDI0NywgMzEsIAorICAgIDIyMiwgMjMxLCAyNDcsIDMxLCAxNywgMTk5LCA4MSwgMjQ3LCAzMSwgMTcsIDEwMiwgMjQ3LCAzMSwgMTcsIDEwNSwgMjQ3LCAKKyAgICAzMSwgMTcsIDE0NywgMjQ3LCAzMSwgMTcsIDE0OSwgMjQ3LCAzMSwgMTcsIDE2NCwgMjQ3LCAzMSwgMTcsIDE4NywgMjQ3LCAKKyAgICAzMSwgMTcsIDIxMCwgMTM1LCAyNDcsIDMxLCAxNywgMTkyLCAyNDcsIDMxLCAxNywgMjE5LCAxMTMsIDI0NywgMzEsIDIxMSwgCisgICAgMTkzLCA4MSwgMjQ3LCAzMSwgMjQyLCAxMCwgMjQ3LCAzMSwgNTMsIDI0MiwgMTAsIDI0NywgMzEsIDIxNCwgNzksIDgxLCAKKyAgICAyMjIsIDIwNCwgMSwgNjIsIDIyMiwgMjA0LCAxLCA3MCwgMjIyLCAyMDQsIDEsIDY2LCAyMjIsIDIwNCwgMSwgNzIsIDIyMiwgCisgICAgMjA0LCAxLCA3NCwgMjIyLCAyMDQsIDEsIDE2MSwgMjIyLCAyMDQsIDEsIDIyNiwgMjA3LCAyMjIsIDIwNCwgMSwgMjM2LCAKKyAgICA4OSwgMjIyLCAyMDQsIDEsIDIzNSwgMTk5LCAyMjIsIDIwNCwgMSwgMjQ3LCAxOTAsIDIyMiwgMjA0LCAxLCAyNDcsIDM3LCAKKyAgICAyMjIsIDIwNCwgMSwgMjI3LCAyNDgsIDIyMiwgMjA0LCAxLCAyMjcsIDIxNSwgMjIyLCAyMDQsIDEsIDIxOCwgNjAsIDIyMiwgCisgICAgMjA0LCAxLCAyMDQsIDI1MywgMjIyLCAyMDQsIDEsIDIwNCwgMjQxLCAyMjIsIDIwNCwgMSwgMjQxLCAyMjAsIDIyMiwgMjA0LCAKKyAgICAxLCAyNDEsIDIwNCwgMjIyLCAyMDQsIDEsIDIxOSwgMjEsIDIyMiwgMjA0LCAxLCAyMDcsIDM2LCAyMjIsIDIwNCwgMSwgCisgICAgMjA2LCAxMjIsIDIyMiwgMjA0LCAxLCAyNDIsIDU4LCAyMjIsIDIwNCwgMSwgMjQxLCAxMDAsIDIyMiwgMjA0LCAxLCAxODgsIAorICAgIDIyMiwgMjA0LCAxLCAxNzIsIDIyMiwgMjA0LCAxLCAyMTUsIDI0NSwgMjIyLCAyMDQsIDEsIDI0OSwgMTM2LCAyMjIsIDIwNCwgCisgICAgMSwgMjQ4LCAyMDAsIDIyMiwgMjA0LCAxLCAxNzgsIDIyMiwgMjA0LCAxLCAyMTMsIDI1MiwgMjIyLCAyMDQsIDEsIDE5NCwgCisgICAgMjIyLCAyMDQsIDEsIDIwMywgOTAsIDIyMiwgMjA0LCAxLCAyMTIsIDY0LCAyMjIsIDIwNCwgMSwgMTQ0LCAyMjIsIDIwNCwgCisgICAgMSwgMjEyLCAyMTUsIDIyMiwgMjA0LCAyLCAyMTgsIDEwMCwgMjIyLCAyMDQsIDI1MiwgMywgNTQsIDIyMiwgMjA0LCAyMTEsIAorICAgIDE5MywgODEsIDIyMiwgMjA0LCAzMywgMjA5LCAyMjgsIDE4NiwgMiwgMjQ3LCAxNDksIDE4NiwgMiwgMjUxLCAzMywgMTg2LCAKKyAgICAyLCAyMDIsIDIwMywgMTg2LCAxLCA2MiwgMTg2LCAxLCAyNTIsIDEzOCwgMTg2LCAxLCA3MCwgMTg2LCAxLCAyMjgsIDE1MSwgCisgICAgMTg2LCAxLCA2NiwgMTg2LCAxLCAyMDMsIDE4MiwgMTg2LCAxLCAxMDksIDE0NiwgMTg2LCAxLCAxMDksIDIxMiwgMjE2LCAKKyAgICAxODYsIDEsIDEwOSwgMTU2LCAxODYsIDEsIDEwOSwgMjI0LCAxMzksIDE4NiwgMSwgNzIsIDE4NiwgMSwgMjUxLCAxNzYsIAorICAgIDE4NiwgMSwgNzQsIDE4NiwgMSwgMjUwLCAxMzksIDE4NiwgMSwgMTYxLCAxODYsIDEsIDIyNiwgMjA3LCAxODYsIDEsIDIzNiwgCisgICAgODksIDE4NiwgMSwgMjM1LCAxOTksIDE4NiwgMSwgMjE5LCAyNTMsIDE4NiwgMSwgMjQ3LCAxOTAsIDE4NiwgMSwgMjQ3LCAKKyAgICAzNywgMTg2LCAxLCAyMjcsIDI0OCwgMTg2LCAxLCAyMjcsIDIxNSwgMTg2LCAxLCAyMTgsIDYwLCAxODYsIDEsIDIwNCwgCisgICAgMjUzLCAxODYsIDEsIDIwNCwgMjQxLCAxODYsIDEsIDI0MSwgMjIwLCAxODYsIDEsIDI0MSwgMjA0LCAxODYsIDEsIDIxOSwgCisgICAgMjEsIDE4NiwgMSwgMjA3LCAzNiwgMTg2LCAxLCAyMDYsIDEyMiwgMTg2LCAxLCAyNDIsIDU4LCAxODYsIDEsIDI0MSwgMTAwLCAKKyAgICAxODYsIDEsIDE4OCwgMTg2LCAxLCAxNzIsIDE4NiwgMSwgMjE1LCAyNDUsIDE4NiwgMSwgMjQ5LCAxMzYsIDE4NiwgMSwgCisgICAgMjQ4LCAyMDAsIDE4NiwgMSwgMTc4LCAxODYsIDEsIDE4MywgMTg2LCAxLCAyMTMsIDI1MiwgMTg2LCAxLCAxOTQsIDE4NiwgCisgICAgMSwgMjI0LCAxMzgsIDE4NiwgMSwgMjAzLCA5MCwgMTg2LCAxLCAyMTAsIDExNCwgMTg2LCAxLCAyMDgsIDE3OSwgMTg2LCAxLCAKKyAgICAyMTIsIDY0LCAxODYsIDEsIDE0NCwgMTg2LCAyMiwgMiwgMjUyLCAxMzgsIDE4NiwgMjIsIDIsIDcwLCAxODYsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTg2LCAyMiwgMiwgNjYsIDE4NiwgMjIsIDIsIDIwMywgMTgyLCAxODYsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTg2LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTg2LCAyMiwgMiwgMTA5LCAxNTYsIDE4NiwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDE4NiwgMjIsIDIsIDcyLCAxODYsIDIyLCAyLCAyNTEsIDE3NiwgMTg2LCAyMiwgMiwgNzQsIDE4NiwgMjIsIDIsIAorICAgIDI1MCwgMTM5LCAxODYsIDIsIDIwMiwgMjA4LCAxODYsIDIsIDI1MCwgMTIyLCAxODYsIDIsIDIyNywgMjAxLCAxODYsIDIsIAorICAgIDIwMywgMjI2LCAxODYsIDIxNywgODYsIDE4NiwgMjQyLCAxMCwgMTg2LCA1MywgMjQyLCAxMCwgMTg2LCAyNTIsIDMsIDU0LCAKKyAgICAxODYsIDIxMCwgMTU0LCAxODYsIDIxMiwgOSwgODEsIDE4NiwgMiwgMjE4LCAxMDAsIDE4NiwgMjIsIDY3LCA4MSwgMTg2LCAKKyAgICAyMzgsIDMwLCAyMDksIDI1MCwgMjIsIDgxLCAxODYsIDIwNywgMTk0LCA4MSwgMTg2LCAxNywgMTk5LCA4MSwgMTg2LCAxNywgCisgICAgMTAyLCAxODYsIDE3LCAxMDUsIDE4NiwgMTcsIDE0NywgMTg2LCAxNywgMTQ5LCAxODYsIDE3LCAxNjQsIDE4NiwgMTcsIAorICAgIDE4NywgMTg2LCAxNywgMjEwLCAxMzUsIDE4NiwgMTcsIDE5MiwgMTg2LCAxNywgMjE5LCAxMTMsIDE4NiwgMjM4LCAyMTUsIAorICAgIDE4NiwgMiwgMjA5LCAxNzcsIDE4NiwgMjM0LCAxMzAsIDE4NiwgMjQzLCA0MSwgNTQsIDE4NiwgMjExLCAxOTMsIDIyMiwgCisgICAgMTQ5LCAxODYsIDIxMSwgMTkzLCAyMjIsIDE0OCwgMTQzLCAyNTAsIDIzNCwgMTcsIDEwMiwgMTQzLCAyNTAsIDIzNCwgMTcsIAorICAgIDEwNSwgMTQzLCAyNTAsIDIzNCwgMTcsIDE0NywgMTQzLCAyNTAsIDIzNCwgMTcsIDE0OSwgMTQzLCAyNTAsIDIzNCwgMTcsIAorICAgIDE2NCwgMTQzLCAyNTAsIDIzNCwgMTcsIDE4NywgMTQzLCAyNTAsIDIzNCwgMTcsIDIxMCwgMTM1LCAxNDMsIDI1MCwgMjM0LCAKKyAgICAxNywgMTkyLCAxNDMsIDI1MCwgMjM0LCAxNywgMjE5LCAxMTMsIDE0MywgMjUwLCAyMzQsIDQxLCAyMDYsIDE2NiwgMTQzLCAKKyAgICAyNTAsIDIzNCwgNDEsIDIwNCwgMTU5LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjA2LCA2NywgMTQzLCAyNTAsIDIzNCwgNDEsIAorICAgIDIzNiwgMjM1LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjM3LCAxMDQsIDE0MywgMjUwLCAyMzQsIDQxLCAyMDksIDkyLCAxNDMsIAorICAgIDI1MCwgMjM0LCA0MSwgMjEwLCAxMjksIDE0MywgMjUwLCAyMzQsIDQxLCAyMzgsIDIyMiwgMTQzLCAyNTAsIDIzNCwgNDEsIAorICAgIDIxOSwgMTA4LCAxNDMsIDI1MCwgMjM0LCA0MSwgMTEyLCAyMzMsIDgyLCAxNDMsIDI1MCwgMjM0LCA0MSwgMTEyLCAyMDYsIAorICAgIDUwLCAyMjYsIDE3NywgMSwgNjIsIDIyNiwgMTc3LCAxLCAyNTIsIDEzOCwgMjI2LCAxNzcsIDEsIDcwLCAyMjYsIDE3NywgMSwgCisgICAgNjYsIDIyNiwgMTc3LCAxLCA3MiwgMjI2LCAxNzcsIDEsIDI1MSwgMTc2LCAyMjYsIDE3NywgMSwgNzQsIDIyNiwgMTc3LCAxLCAKKyAgICAyNTAsIDEzOSwgMjI2LCAxNzcsIDEsIDE2MSwgMjI2LCAxNzcsIDEsIDIyNiwgMjA3LCAyMjYsIDE3NywgMSwgMjM2LCA4OSwgCisgICAgMjI2LCAxNzcsIDEsIDIzNSwgMjM1LCAyMjYsIDE3NywgMSwgMjM1LCAxOTksIDIyNiwgMTc3LCAxLCAyMTksIDI1MywgMjI2LCAKKyAgICAxNzcsIDEsIDI0NywgMTkwLCAyMjYsIDE3NywgMSwgMjQ3LCAzNywgMjI2LCAxNzcsIDEsIDIyNywgMjQ4LCAyMjYsIDE3NywgCisgICAgMSwgMjI3LCAxOTQsIDIyNiwgMTc3LCAxLCAyMTgsIDYwLCAyMjYsIDE3NywgMSwgMjA0LCAyNTMsIDIyNiwgMTc3LCAxLCAKKyAgICAyMDQsIDI0MSwgMjI2LCAxNzcsIDEsIDI0MSwgMjIwLCAyMjYsIDE3NywgMSwgMjQxLCAyMDQsIDIyNiwgMTc3LCAxLCAyMTksIAorICAgIDIxLCAyMjYsIDE3NywgMSwgMjA3LCAzNiwgMjI2LCAxNzcsIDEsIDIwNiwgMTIyLCAyMjYsIDE3NywgMSwgMjQyLCA1OCwgCisgICAgMjI2LCAxNzcsIDEsIDI0MSwgMjEwLCAyMjYsIDE3NywgMSwgMjQxLCAxMDAsIDIyNiwgMTc3LCAxLCAxODgsIDIyNiwgMTc3LCAKKyAgICAxLCAxNzIsIDIyNiwgMTc3LCAxLCAyMTUsIDI0NSwgMjI2LCAxNzcsIDEsIDI0OSwgMTM2LCAyMjYsIDE3NywgMSwgMjQ5LCAKKyAgICA0NCwgMjI2LCAxNzcsIDEsIDI0OCwgMjAwLCAyMjYsIDE3NywgMSwgMTc4LCAyMjYsIDE3NywgMSwgMTgzLCAyMjYsIDE3NywgCisgICAgMSwgMjEzLCAyNTIsIDIyNiwgMTc3LCAxLCAxOTQsIDIyNiwgMTc3LCAxLCAyMDMsIDkwLCAyMjYsIDE3NywgMSwgMjEyLCAKKyAgICA2NCwgMjI2LCAxNzcsIDEsIDE0NCwgMjI2LCAxNzcsIDEsIDIyNCwgMTM4LCAyMjYsIDE3NywgMjIsIDIsIDI1MiwgMTM4LCAKKyAgICAyMjYsIDE3NywgMjIsIDIsIDcwLCAyMjYsIDE3NywgMjIsIDIsIDIyOCwgMTUxLCAyMjYsIDE3NywgMjIsIDIsIDY2LCAyMjYsIAorICAgIDE3NywgMjIsIDIsIDcyLCAyMjYsIDE3NywgMjIsIDIsIDI1MSwgMTc2LCAyMjYsIDE3NywgMjIsIDIsIDc0LCAyMjYsIDE3NywgCisgICAgMjIsIDIsIDI1MCwgMTM5LCAyMjYsIDE3NywgMiwgMjUxLCAzMywgMjI2LCAxNzcsIDIsIDIwMiwgMjA4LCAyMjYsIDE3NywgCisgICAgMiwgMjE4LCAxMDAsIDIyNiwgMTc3LCAyLCAyMTAsIDEwNCwgMjI2LCAxNzcsIDI0MiwgMTAsIDIyNiwgMTc3LCA1MywgMjQyLCAKKyAgICAxMCwgMjI2LCAxNzcsIDIwMCwgMjM4LCAyMTAsIDE1NCwgMjI2LCAxNzcsIDIxMSwgMTkzLCA4MSwgMjI2LCAxNzcsIDUzLCAKKyAgICAyMTEsIDE5MywgODEsIDIyNiwgMTc3LCAyNTIsIDMsIDU0LCAyMjYsIDE3NywgMiwgMjA3LCAyMzYsIDIyMSwgMjUsIDEsIAorICAgIDYyLCAyMjEsIDI1LCAxLCA3MCwgMjIxLCAyNSwgMSwgNjYsIDIyMSwgMjUsIDEsIDcyLCAyMjEsIDI1LCAxLCAxNjEsIDIyMSwgCisgICAgMjUsIDEsIDIyNiwgMjA3LCAyMjEsIDI1LCAxLCAyMzYsIDg5LCAyMjEsIDI1LCAxLCAyMzUsIDE5OSwgMjIxLCAyNSwgMSwgCisgICAgMjQ3LCAxOTAsIDIyMSwgMjUsIDEsIDI0NywgMzcsIDIyMSwgMjUsIDEsIDIyNywgMjQ4LCAyMjEsIDI1LCAxLCAyMjcsIAorICAgIDE5NCwgMjIxLCAyNSwgMSwgMjE4LCA2MCwgMjIxLCAyNSwgMSwgMjA0LCAyNTMsIDIyMSwgMjUsIDEsIDIwNCwgMjQxLCAKKyAgICAyMjEsIDI1LCAxLCAyNDEsIDIyMCwgMjIxLCAyNSwgMSwgMjQxLCAyMTAsIDIyMSwgMjUsIDEsIDI0MSwgMjA0LCAyMjEsIAorICAgIDI1LCAxLCAyMTksIDIxLCAyMjEsIDI1LCAxLCAyMDcsIDM2LCAyMjEsIDI1LCAxLCAyMDYsIDEyMiwgMjIxLCAyNSwgMSwgCisgICAgMjQyLCA1OCwgMjIxLCAyNSwgMSwgMjQxLCAxMDAsIDIyMSwgMjUsIDEsIDE4OCwgMjIxLCAyNSwgMSwgMTcyLCAyMjEsIDI1LCAKKyAgICAxLCAyMTUsIDI0NSwgMjIxLCAyNSwgMSwgMjQ5LCAxMzYsIDIyMSwgMjUsIDEsIDI0OCwgMjAwLCAyMjEsIDI1LCAxLCAxNzgsIAorICAgIDIyMSwgMjUsIDEsIDE4MywgMjIxLCAyNSwgMSwgMjEzLCAyNTIsIDIyMSwgMjUsIDEsIDE5NCwgMjIxLCAyNSwgMSwgMjAzLCAKKyAgICA5MCwgMjIxLCAyNSwgMSwgMjEyLCA2NCwgMjIxLCAyNSwgMSwgMTQ0LCAyMjEsIDI1LCAxLCAyMTIsIDIxNSwgMjIxLCAyNSwgCisgICAgMSwgMjEzLCA5MywgMjIxLCAyNSwgMjExLCAxOTMsIDgxLCAyMjYsIDE2OSwgMSwgNjIsIDIyNiwgMTY5LCAxLCAyNTIsIAorICAgIDEzOCwgMjI2LCAxNjksIDEsIDcwLCAyMjYsIDE2OSwgMSwgMjI4LCAxNTEsIDIyNiwgMTY5LCAxLCA2NiwgMjI2LCAxNjksIAorICAgIDEsIDIwMywgMTgyLCAyMjYsIDE2OSwgMSwgNzIsIDIyNiwgMTY5LCAxLCAyNTEsIDE3NiwgMjI2LCAxNjksIDEsIDc0LCAKKyAgICAyMjYsIDE2OSwgMSwgMjUwLCAxMzksIDIyNiwgMTY5LCAxLCAxNjEsIDIyNiwgMTY5LCAxLCAyMjYsIDIwNywgMjI2LCAxNjksIAorICAgIDEsIDIzNiwgODksIDIyNiwgMTY5LCAxLCAyMzUsIDIzNSwgMjI2LCAxNjksIDEsIDIzNSwgMTk5LCAyMjYsIDE2OSwgMSwgCisgICAgMjE5LCAyNTMsIDIyNiwgMTY5LCAxLCAyNDcsIDE5MCwgMjI2LCAxNjksIDEsIDI0NywgMzcsIDIyNiwgMTY5LCAxLCAyMjcsIAorICAgIDI0OCwgMjI2LCAxNjksIDEsIDIyNywgMTk0LCAyMjYsIDE2OSwgMSwgMjI3LCAyMTUsIDIyNiwgMTY5LCAxLCAyMTgsIDYwLCAKKyAgICAyMjYsIDE2OSwgMSwgMjA0LCAyNTMsIDIyNiwgMTY5LCAxLCAyMDQsIDI0MSwgMjI2LCAxNjksIDEsIDI0MSwgMjIwLCAyMjYsIAorICAgIDE2OSwgMSwgMjQxLCAyMTAsIDIyNiwgMTY5LCAxLCAyMTIsIDIxNSwgMjI2LCAxNjksIDEsIDI0MSwgMjA0LCAyMjYsIDE2OSwgCisgICAgMSwgMjE5LCAyMSwgMjI2LCAxNjksIDEsIDIwNywgMzYsIDIyNiwgMTY5LCAxLCAyMDYsIDEyMiwgMjI2LCAxNjksIDEsIAorICAgIDI0MiwgNTgsIDIyNiwgMTY5LCAxLCAyNDEsIDEwMCwgMjI2LCAxNjksIDEsIDE4OCwgMjI2LCAxNjksIDEsIDE3MiwgMjI2LCAKKyAgICAxNjksIDEsIDIxNSwgMjQ1LCAyMjYsIDE2OSwgMSwgMjQ5LCAxMzYsIDIyNiwgMTY5LCAxLCAyNDksIDQ0LCAyMjYsIDE2OSwgCisgICAgMSwgMjQ4LCAyMDAsIDIyNiwgMTY5LCAxLCAxNzgsIDIyNiwgMTY5LCAxLCAxODMsIDIyNiwgMTY5LCAxLCAyMTMsIDI1MiwgCisgICAgMjI2LCAxNjksIDEsIDE5NCwgMjI2LCAxNjksIDEsIDIwMywgOTAsIDIyNiwgMTY5LCAxLCAyMTAsIDExNCwgMjI2LCAxNjksIAorICAgIDEsIDIxMiwgNjQsIDIyNiwgMTY5LCAxLCAxNDQsIDIyNiwgMTY5LCAyLCAyNTEsIDMzLCAyMjYsIDE2OSwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMjYsIDE2OSwgMjIsIDIsIDcwLCAyMjYsIDE2OSwgMjIsIDIsIDIyOCwgMTUxLCAyMjYsIDE2OSwgMjIsIDIsIDY2LCAKKyAgICAyMjYsIDE2OSwgMjIsIDIsIDIwMywgMTgyLCAyMjYsIDE2OSwgMjIsIDIsIDcyLCAyMjYsIDE2OSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMjYsIDE2OSwgMjIsIDIsIDc0LCAyMjYsIDE2OSwgMjIsIDIsIDI1MCwgMTM5LCAyMjYsIDE2OSwgMiwgMjE4LCAKKyAgICAxMDAsIDIyNiwgMTY5LCAyLCAyMDIsIDIwOCwgMjI2LCAxNjksIDE3LCAxOTksIDgxLCAyMjYsIDE2OSwgMTcsIDEwMiwgCisgICAgMjI2LCAxNjksIDE3LCAxMDUsIDIyNiwgMTY5LCAxNywgMTQ3LCAyMjYsIDE2OSwgMTcsIDE0OSwgMjI2LCAxNjksIDE3LCAKKyAgICAxNjQsIDIyNiwgMTY5LCAxNywgMTg3LCAyMjYsIDE2OSwgMTcsIDIxMCwgMTM1LCAyMjYsIDE2OSwgMTcsIDE5MiwgMjI2LCAKKyAgICAxNjksIDE3LCAyMTksIDExMywgMjM1LCA4MiwgMiwgMzgsIDI1MSwgMzQsIDU2LCAyMzUsIDgyLCAyLCAyNDcsIDE0OSwgCisgICAgMjM1LCA4MiwgMiwgMjUxLCAzMywgMjM1LCA4MiwgMiwgMjAyLCAyMDMsIDIzNSwgODIsIDEsIDYyLCAyMzUsIDgyLCAxLCAKKyAgICAyNTIsIDEzOCwgMjM1LCA4MiwgMSwgNzAsIDIzNSwgODIsIDEsIDIyOCwgMTUxLCAyMzUsIDgyLCAxLCA2NiwgMjM1LCA4MiwgCisgICAgMSwgMjAzLCAxODIsIDIzNSwgODIsIDEsIDEwOSwgMTQ2LCAyMzUsIDgyLCAxLCAxMDksIDE1NiwgMjM1LCA4MiwgMSwgMjM4LCAKKyAgICAyNTUsIDIzNSwgODIsIDEsIDI1MSwgMTc2LCAyMzUsIDgyLCAxLCAyMTcsIDYzLCAyMzUsIDgyLCAxLCAyNTAsIDEzOSwgCisgICAgMjM1LCA4MiwgMSwgMTYxLCAyMzUsIDgyLCAxLCAyMjYsIDIwNywgMjM1LCA4MiwgMSwgMjM2LCA4OSwgMjM1LCA4MiwgMSwgCisgICAgMjM1LCAxOTksIDIzNSwgODIsIDEsIDIxOSwgMjUzLCAyMzUsIDgyLCAxLCAyNDcsIDE5MCwgMjM1LCA4MiwgMSwgMjQ3LCAKKyAgICAzNywgMjM1LCA4MiwgMSwgMjI3LCAyNDgsIDIzNSwgODIsIDEsIDIyNywgMjE1LCAyMzUsIDgyLCAxLCAyMTgsIDYwLCAyMzUsIAorICAgIDgyLCAxLCAyMDQsIDI1MywgMjM1LCA4MiwgMSwgMjA0LCAyNDEsIDIzNSwgODIsIDEsIDI0MSwgMjIwLCAyMzUsIDgyLCAxLCAKKyAgICAyNDEsIDIwNCwgMjM1LCA4MiwgMSwgMjE5LCAyMSwgMjM1LCA4MiwgMSwgMjA3LCAzNiwgMjM1LCA4MiwgMSwgMjA2LCAxMjIsIAorICAgIDIzNSwgODIsIDEsIDI0MiwgNTgsIDIzNSwgODIsIDEsIDI0MSwgMTAwLCAyMzUsIDgyLCAxLCAxODgsIDIzNSwgODIsIDEsIAorICAgIDE3MiwgMjM1LCA4MiwgMSwgMjE1LCAyNDUsIDIzNSwgODIsIDEsIDI0OSwgMTM2LCAyMzUsIDgyLCAxLCAyNDgsIDIwMCwgCisgICAgMjM1LCA4MiwgMSwgMTc4LCAyMzUsIDgyLCAxLCAxODMsIDIzNSwgODIsIDEsIDIxMywgMjUyLCAyMzUsIDgyLCAxLCAxOTQsIAorICAgIDIzNSwgODIsIDEsIDIyNCwgMTM4LCAyMzUsIDgyLCAxLCAyMDMsIDkwLCAyMzUsIDgyLCAxLCAyMTAsIDExNCwgMjM1LCA4MiwgCisgICAgMSwgMjA4LCAxNzksIDIzNSwgODIsIDEsIDIxMiwgNjQsIDIzNSwgODIsIDEsIDE0NCwgMjM1LCA4MiwgMiwgMjE4LCAxMDAsIAorICAgIDIzNSwgODIsIDIsIDI1MCwgMTIyLCAyMzUsIDgyLCAyMiwgMiwgMjUyLCAxMzgsIDIzNSwgODIsIDIyLCAyLCA3MCwgMjM1LCAKKyAgICA4MiwgMjIsIDIsIDIyOCwgMTUxLCAyMzUsIDgyLCAyMiwgMiwgNjYsIDIzNSwgODIsIDIyLCAyLCAyMDMsIDE4MiwgMjM1LCAKKyAgICA4MiwgMjIsIDIsIDEwOSwgMTQ2LCAyMzUsIDgyLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjM1LCA4MiwgMjIsIDIsIDIzOCwgCisgICAgMjU1LCAyMzUsIDgyLCAyMiwgMiwgMjUxLCAxNzYsIDIzNSwgODIsIDIyLCAyLCAyMTcsIDYzLCAyMzUsIDgyLCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDIzNSwgODIsIDIsIDIwMiwgMjA4LCAyMzUsIDgyLCAyMTcsIDg2LCAyMzUsIDgyLCAyNTAsIDE0MCwgMjI1LCAKKyAgICAyLCA4MSwgMjM1LCA4MiwgMiwgMjE1LCAxMTEsIDIzNSwgODIsIDEsIDIwMywgNTYsIDI1MSwgMzMsIDIzNSwgODIsIDEsIAorICAgIDIwMywgNTYsIDUzLCAyNTEsIDMzLCAyMzUsIDgyLCAxLCAxMDksIDIxMiwgMjE2LCAyMzUsIDgyLCAxLCAxMDksIDIyNCwgCisgICAgMTM5LCAyMzUsIDgyLCAyMiwgMiwgMTA5LCAxNTYsIDIzNSwgODIsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAzOCwgMjM1LCAKKyAgICA4MiwgMTcsIDE5OSwgODEsIDM4LCAyMzUsIDgyLCAxNywgMTAyLCAzOCwgMjM1LCA4MiwgMTcsIDEwNSwgMzgsIDIzNSwgODIsIAorICAgIDE3LCAxNDcsIDM4LCAyMzUsIDgyLCAxNywgMTQ5LCAzOCwgMjM1LCA4MiwgMTcsIDE2NCwgMzgsIDIzNSwgODIsIDE3LCAKKyAgICAxODcsIDM4LCAyMzUsIDgyLCAxLCA2MiwgMzgsIDIzNSwgODIsIDEsIDE2MSwgMzgsIDIzNSwgODIsIDEsIDE4OCwgMzgsIAorICAgIDIzNSwgODIsIDEsIDIwMiwgMjM0LCAzOCwgMjM1LCA4MiwgMSwgMTcyLCAxOTUsIDEsIDYyLCAxOTUsIDEsIDI1MiwgMTM4LCAKKyAgICAxOTUsIDEsIDcwLCAxOTUsIDEsIDIyOCwgMTUxLCAxOTUsIDEsIDY2LCAxOTUsIDEsIDIwMywgMTgyLCAxOTUsIDEsIDEwOSwgCisgICAgMTQ2LCAxOTUsIDEsIDEwOSwgMjEyLCAyMTYsIDE5NSwgMSwgMTA5LCAxNTYsIDE5NSwgMSwgMTA5LCAyMjQsIDEzOSwgMTk1LCAKKyAgICAxLCA3MiwgMTk1LCAxLCAyNTEsIDE3NiwgMTk1LCAxLCA3NCwgMTk1LCAxLCAyNTAsIDEzOSwgMTk1LCAxLCAxNjEsIDE5NSwgCisgICAgMSwgMjI2LCAyMDcsIDE5NSwgMSwgMjM2LCA4OSwgMTk1LCAxLCAyMzUsIDE5OSwgMTk1LCAxLCAyMTksIDI1MywgMTk1LCAxLCAKKyAgICAyMTksIDIwMiwgMTk1LCAxLCAyNDcsIDE5MCwgMTk1LCAxLCAyNDcsIDM3LCAxOTUsIDEsIDIyNywgMjQ4LCAxOTUsIDEsIAorICAgIDIyNywgMjE1LCAxOTUsIDEsIDIxOCwgNjAsIDE5NSwgMSwgMjE4LCA0MywgMTk1LCAxLCAyMDQsIDI1MywgMTk1LCAxLCAKKyAgICAyMDQsIDI0MSwgMTk1LCAxLCAyNDEsIDIyMCwgMTk1LCAxLCAyNDEsIDIwNCwgMTk1LCAxLCAyMTksIDIxLCAxOTUsIDEsIAorICAgIDIwNywgMzYsIDE5NSwgMSwgMjA2LCAxMjIsIDE5NSwgMSwgMjQyLCA1OCwgMTk1LCAxLCAyNDEsIDEwMCwgMTk1LCAxLCAKKyAgICAxODgsIDE5NSwgMSwgMjE5LCAxNTQsIDE5NSwgMSwgMTcyLCAxOTUsIDEsIDIxNSwgMjQ1LCAxOTUsIDEsIDI0OSwgMTM2LCAKKyAgICAxOTUsIDEsIDI0OCwgMjAwLCAxOTUsIDEsIDE3OCwgMTk1LCAxLCAyMjEsIDIxNCwgMTk1LCAxLCAxODMsIDE5NSwgMSwgCisgICAgMjEzLCAyNTIsIDE5NSwgMSwgMjEzLCA5MywgMTk1LCAxLCAxOTQsIDE5NSwgMSwgMjI0LCAyMjMsIDE5NSwgMSwgMjAxLCAKKyAgICAxMTQsIDE5NSwgMSwgMjEwLCAxMTQsIDE5NSwgMSwgMjA4LCAxNzksIDE5NSwgMSwgMjEyLCA2NCwgMTk1LCAxLCAxNDQsIAorICAgIDE5NSwgMjIsIDIsIDI1MiwgMTM4LCAxOTUsIDIyLCAyLCA3MCwgMTk1LCAyMiwgMiwgMjI4LCAxNTEsIDE5NSwgMjIsIDIsIAorICAgIDY2LCAxOTUsIDIyLCAyLCAyMDMsIDE4MiwgMTk1LCAyMiwgMiwgMTA5LCAxNDYsIDE5NSwgMjIsIDIsIDEwOSwgMjEyLCAKKyAgICAyMTYsIDE5NSwgMjIsIDIsIDEwOSwgMTU2LCAxOTUsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxOTUsIDIyLCAyLCA3MiwgCisgICAgMTk1LCAyMiwgMiwgMjUxLCAxNzYsIDE5NSwgMjIsIDIsIDc0LCAxOTUsIDIyLCAyLCAyNTAsIDEzOSwgMTk1LCAyLCAyMDIsIAorICAgIDIwOCwgMTk1LCAyLCAyNDcsIDE0OSwgMTk1LCAyLCAyNTEsIDMzLCAxOTUsIDIsIDIwMiwgMjAzLCAxOTUsIDIsIDIxOCwgCisgICAgMTAwLCAxOTUsIDIsIDI1MCwgMTIyLCAxOTUsIDIsIDQ3LCAyNTEsIDMzLCAxOTUsIDIxNywgODYsIDE5NSwgMjA5LCAxNzYsIAorICAgIDE5NSwgMjQyLCAxMCwgMTk1LCA1MywgMjQyLCAxMCwgMTk1LCAyNDYsIDcwLCAxOTUsIDIzNiwgNTMsIDIzNywgOTMsIDE5NSwgCisgICAgMjUyLCAzLCA1NCwgMTk1LCAxNywgMTk5LCA4MSwgMTk1LCAxNywgMTAyLCAxOTUsIDE3LCAxMDUsIDE5NSwgMTcsIDE0NywgCisgICAgMTk1LCAxNywgMTQ5LCAxOTUsIDE3LCAxNjQsIDE5NSwgMTcsIDE4NywgMTk1LCAxNywgMjEwLCAxMzUsIDE5NSwgMTcsIAorICAgIDE5MiwgMTk1LCAxNywgMjE5LCAxMTMsIDE5NSwgMjE1LCAxMzMsIDgxLCAxOTUsIDIyOCwgNzUsIDU0LCAyMDUsIDIxNywgCisgICAgMjUxLCA2MiwgMjA1LCAyMTcsIDEsIDYyLCAyMDUsIDIxNywgMSwgMjUyLCAxMzgsIDIwNSwgMjE3LCAxLCA3MCwgMjA1LCAKKyAgICAyMTcsIDEsIDIyOCwgMTUxLCAyMDUsIDIxNywgMSwgNjYsIDIwNSwgMjE3LCAxLCAyMDMsIDE4MiwgMjA1LCAyMTcsIDEsIAorICAgIDEwOSwgMTQ2LCAyMDUsIDIxNywgMSwgMTA5LCAyMTIsIDIxNiwgMjA1LCAyMTcsIDEsIDEwOSwgMTU2LCAyMDUsIDIxNywgMSwgCisgICAgMTA5LCAyMjQsIDEzOSwgMjA1LCAyMTcsIDEsIDcyLCAyMDUsIDIxNywgMSwgMjUxLCAxNzYsIDIwNSwgMjE3LCAxLCA3NCwgCisgICAgMjA1LCAyMTcsIDEsIDI1MCwgMTM5LCAyMDUsIDIxNywgMSwgMTYxLCAyMDUsIDIxNywgMSwgMjI2LCAyMDcsIDIwNSwgMjE3LCAKKyAgICAxLCAyMzYsIDg5LCAyMDUsIDIxNywgMSwgMjM1LCAxOTksIDIwNSwgMjE3LCAxLCAyMTksIDI1MywgMjA1LCAyMTcsIDEsIAorICAgIDI0NywgMTkwLCAyMDUsIDIxNywgMSwgMjQ3LCAzNywgMjA1LCAyMTcsIDEsIDIyNywgMjQ4LCAyMDUsIDIxNywgMSwgMjI3LCAKKyAgICAyMTUsIDIwNSwgMjE3LCAxLCAyMTgsIDYwLCAyMDUsIDIxNywgMSwgMjA0LCAyNTMsIDIwNSwgMjE3LCAxLCAyMDQsIDI0MSwgCisgICAgMjA1LCAyMTcsIDEsIDI0MSwgMjIwLCAyMDUsIDIxNywgMSwgMjQxLCAyMDQsIDIwNSwgMjE3LCAxLCAyMTksIDIxLCAyMDUsIAorICAgIDIxNywgMSwgMjA3LCAzNiwgMjA1LCAyMTcsIDEsIDIwNiwgMTIyLCAyMDUsIDIxNywgMSwgMjQyLCA1OCwgMjA1LCAyMTcsIAorICAgIDEsIDI0MSwgMTAwLCAyMDUsIDIxNywgMSwgMTg4LCAyMDUsIDIxNywgMSwgMTcyLCAyMDUsIDIxNywgMSwgMjE1LCAyNDUsIAorICAgIDIwNSwgMjE3LCAxLCAyNDksIDEzNiwgMjA1LCAyMTcsIDEsIDI0OCwgMjAwLCAyMDUsIDIxNywgMSwgMTc4LCAyMDUsIDIxNywgCisgICAgMSwgMTgzLCAyMDUsIDIxNywgMSwgMjEzLCAyNTIsIDIwNSwgMjE3LCAxLCAxOTQsIDIwNSwgMjE3LCAxLCAyMDMsIDkwLCAKKyAgICAyMDUsIDIxNywgMSwgMjEwLCAxMTQsIDIwNSwgMjE3LCAxLCAyMDgsIDE3OSwgMjA1LCAyMTcsIDEsIDIxMiwgNjQsIDIwNSwgCisgICAgMjE3LCAxLCAxNDQsIDIwNSwgMjE3LCAyMiwgMiwgMjUyLCAxMzgsIDIwNSwgMjE3LCAyMiwgMiwgNzAsIDIwNSwgMjE3LCAKKyAgICAyMiwgMiwgMjI4LCAxNTEsIDIwNSwgMjE3LCAyMiwgMiwgNjYsIDIwNSwgMjE3LCAyMiwgMiwgMjAzLCAxODIsIDIwNSwgCisgICAgMjE3LCAyMiwgMiwgMTA5LCAxNDYsIDIwNSwgMjE3LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjA1LCAyMTcsIDIyLCAyLCAKKyAgICAxMDksIDE1NiwgMjA1LCAyMTcsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMDUsIDIxNywgMjIsIDIsIDcyLCAyMDUsIDIxNywgCisgICAgMjIsIDIsIDIwOSwgMjUwLCA3MiwgMjA1LCAyMTcsIDIyLCAyLCAyNTEsIDE3NiwgMjA1LCAyMTcsIDIyLCAyLCA3NCwgMjA1LCAKKyAgICAyMTcsIDIyLCAyLCAyMDksIDI1MCwgNzQsIDIwNSwgMjE3LCAyMiwgMiwgMjUwLCAxMzksIDIwNSwgMjE3LCAyLCAyNDcsIAorICAgIDE0OSwgMjA1LCAyMTcsIDIsIDI1MSwgMzMsIDIwNSwgMjE3LCAyLCAyMDIsIDIwMywgMjA1LCAyMTcsIDIsIDIwMiwgMjA4LCAKKyAgICAyMDUsIDIxNywgMiwgMjE4LCAxMDAsIDIwNSwgMjE3LCAyLCAyNTAsIDEyMiwgMjA1LCAyMTcsIDIzNSwgMTEsIDIwNSwgCisgICAgMjE3LCAyNTIsIDMsIDU0LCAyMDUsIDIxNywgMjE3LCA4NiwgMjA1LCAyMTcsIDE3LCAxOTksIDgxLCAyMDUsIDIxNywgMTcsIAorICAgIDEwMiwgMjA1LCAyMTcsIDE3LCAxMDUsIDIwNSwgMjE3LCAxNywgMTQ3LCAyMDUsIDIxNywgMTcsIDE0OSwgMjA1LCAyMTcsIAorICAgIDE3LCAxNjQsIDIwNSwgMjE3LCAxNywgMTg3LCAyMDUsIDIxNywgMTcsIDIxMCwgMTM1LCAyMDUsIDIxNywgMTcsIDE5MiwgCisgICAgMjA1LCAyMTcsIDE3LCAyMTksIDExMywgMTk2LCAxLCA2MiwgMTk2LCAxLCAyNTIsIDEzOCwgMTk2LCAxLCA3MCwgMTk2LCAxLCAKKyAgICAyMjgsIDE1MSwgMTk2LCAxLCA2NiwgMTk2LCAxLCAyMDMsIDE4MiwgMTk2LCAxLCAxMDksIDE0NiwgMTk2LCAxLCAxMDksIAorICAgIDIxMiwgMjE2LCAxOTYsIDEsIDEwOSwgMTU2LCAxOTYsIDEsIDEwOSwgMjI0LCAxMzksIDE5NiwgMSwgNzIsIDE5NiwgMSwgCisgICAgMjUxLCAxNzYsIDE5NiwgMSwgNzQsIDE5NiwgMSwgMjUwLCAxMzksIDE5NiwgMSwgMTYxLCAxOTYsIDEsIDIyNiwgMjA3LCAKKyAgICAxOTYsIDEsIDIzNiwgODksIDE5NiwgMSwgMjM1LCAxOTksIDE5NiwgMSwgMjE5LCAyNTMsIDE5NiwgMSwgMjQ3LCAxOTAsIAorICAgIDE5NiwgMSwgMjQ3LCAzNywgMTk2LCAxLCAyMjcsIDI0OCwgMTk2LCAxLCAyMjcsIDIxNSwgMTk2LCAxLCAyMTgsIDYwLCAKKyAgICAxOTYsIDEsIDIwNCwgMjUzLCAxOTYsIDEsIDIwNCwgMjQxLCAxOTYsIDEsIDI0MSwgMjIwLCAxOTYsIDEsIDI0MSwgMjA0LCAKKyAgICAxOTYsIDEsIDIxOSwgMjEsIDE5NiwgMSwgMjA3LCAzNiwgMTk2LCAxLCAyMDYsIDEyMiwgMTk2LCAxLCAyNDIsIDU4LCAxOTYsIAorICAgIDEsIDI0MSwgMTAwLCAxOTYsIDEsIDE4OCwgMTk2LCAxLCAxNzIsIDE5NiwgMSwgMjE1LCAyNDUsIDE5NiwgMSwgMjQ5LCAKKyAgICAxMzYsIDE5NiwgMSwgMjQ4LCAyMDAsIDE5NiwgMSwgMTc4LCAxOTYsIDEsIDE4MywgMTk2LCAxLCAyMTMsIDI1MiwgMTk2LCAKKyAgICAxLCAxOTQsIDE5NiwgMSwgMjAzLCA5MCwgMTk2LCAxLCAyMTAsIDExNCwgMTk2LCAxLCAyMDgsIDE3OSwgMTk2LCAxLCAyMTIsIAorICAgIDY0LCAxOTYsIDEsIDE0NCwgMTk2LCAyMiwgMiwgMjUyLCAxMzgsIDE5NiwgMjIsIDIsIDcwLCAxOTYsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgMTk2LCAyMiwgMiwgNjYsIDE5NiwgMjIsIDIsIDIwMywgMTgyLCAxOTYsIDIyLCAyLCAxMDksIDE0NiwgMTk2LCAyMiwgCisgICAgMiwgMTA5LCAyMTIsIDIxNiwgMTk2LCAyMiwgMiwgNzIsIDE5NiwgMjIsIDIsIDI1MSwgMTc2LCAxOTYsIDIyLCAyLCA3NCwgCisgICAgMTk2LCAyMiwgMiwgMjUwLCAxMzksIDE5NiwgMiwgMjQ3LCAxNDksIDE5NiwgMiwgMjUxLCAzMywgMTk2LCAyLCAyMDIsIAorICAgIDIwMywgMTk2LCAyLCAyMDIsIDIwOCwgMTk2LCAyLCAyMTgsIDEwMCwgMTk2LCAyLCAyMDksIDE3NywgMTk2LCAyNDIsIDEwLCAKKyAgICAxOTYsIDUzLCAyNDIsIDEwLCAxOTYsIDIxMCwgMTU1LCAyNDAsIDE4MiwgMTk2LCAyMTAsIDE1NSwgMTQ4LCAxOTYsIDIxMywgCisgICAgMTMwLCAyMjIsIDE0OSwgMTk2LCAyMTMsIDEzMCwgMjIyLCAxNDgsIDE5NiwgMjEzLCAxMzAsIDIyMiwgMTQ3LCAxOTYsIAorICAgIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjcsIDgxLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIwNSwgOTMsIDI2LCAyMDQsIDk5LCAKKyAgICAyMTcsIDIwLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIwNSwgOTMsIDI2LCAyMzksIDE4MCwgMjQyLCAyNDIsIDE5NiwgCisgICAgMjExLCAxOTMsIDEzNCwgMywgMjEzLCAxOTUsIDI2LCAyMzksIDE4MCwgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgCisgICAgMywgMjEzLCAxOTUsIDI2LCAyMzksIDE4MCwgNTMsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIxMywgMTk1LCAKKyAgICAyNiwgMjM5LCAxODAsIDIwNSwgODMsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDUzLCAyMTMsIDI2LCAxOTYsIAorICAgIDIxMSwgMTkzLCAxMzQsIDUzLCAyMTMsIDI3LCAzLCAyMTMsIDE5NCwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCA1MywgMjQyLCAKKyAgICAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA4MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgCisgICAgMjE0LCA5MCwgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjEwLCAxNTIsIDI0MiwgMjQyLCAxOTYsIDIxMSwgCisgICAgMTkzLCAxMzQsIDMsIDI0NiwgMTUzLCAyNiwgMjEzLCAxOTQsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAKKyAgICAxMjAsIDIzOCwgMTczLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDI0NiwgMTUzLCAyNiwgMjM2LCAyMjksIDIzOCwgMTczLCAKKyAgICAxOTYsIDEsIDIwNiwgNDYsIDI1MSwgMTA5LCA3MCwgMTk2LCAxLCAyMDQsIDE0MywgMjUxLCAxMDksIDcwLCAxOTYsIDEsIAorICAgIDIwNCwgMTQzLCAyNTEsIDEwOSwgMjI4LCAxNTEsIDE5NiwgMSwgMjUxLCAxMDksIDY2LCAxOTYsIDIyLCAyLCAyNTEsIDEwOSwgCisgICAgNjYsIDE5NiwgMjIsIDIsIDI1MSwgMTA5LCAyMDMsIDE4MiwgMjIxLCAxMjcsIDEsIDYyLCAyMjEsIDEyNywgMSwgMjUyLCAKKyAgICAxMzgsIDIyMSwgMTI3LCAxLCA3MCwgMjIxLCAxMjcsIDEsIDIyOCwgMTUxLCAyMjEsIDEyNywgMSwgNjYsIDIyMSwgMTI3LCAKKyAgICAxLCAyMDMsIDE4MiwgMjIxLCAxMjcsIDEsIDEwOSwgMTQ2LCAyMjEsIDEyNywgMSwgMTA5LCAyMTIsIDIxNiwgMjIxLCAxMjcsIAorICAgIDEsIDEwOSwgMTU2LCAyMjEsIDEyNywgMSwgMTA5LCAyMjQsIDEzOSwgMjIxLCAxMjcsIDEsIDcyLCAyMjEsIDEyNywgMSwgCisgICAgMjUxLCAxNzYsIDIyMSwgMTI3LCAxLCA3NCwgMjIxLCAxMjcsIDEsIDI1MCwgMTM5LCAyMjEsIDEyNywgMSwgMTYxLCAyMjEsIAorICAgIDEyNywgMSwgMjI2LCAyMDcsIDIyMSwgMTI3LCAxLCAyMzYsIDg5LCAyMjEsIDEyNywgMSwgMjM1LCAxOTksIDIyMSwgMTI3LCAKKyAgICAxLCAyMTksIDI1MywgMjIxLCAxMjcsIDEsIDI0NywgMTkwLCAyMjEsIDEyNywgMSwgMjQ3LCAzNywgMjIxLCAxMjcsIDEsIAorICAgIDIyNywgMjQ4LCAyMjEsIDEyNywgMSwgMjI3LCAyMTUsIDIyMSwgMTI3LCAxLCAyMTgsIDYwLCAyMjEsIDEyNywgMSwgMjA0LCAKKyAgICAyNTMsIDIyMSwgMTI3LCAxLCAyMDQsIDI0MSwgMjIxLCAxMjcsIDEsIDI0MSwgMjIwLCAyMjEsIDEyNywgMSwgMjQxLCAyMDQsIAorICAgIDIyMSwgMTI3LCAxLCAyMTksIDIxLCAyMjEsIDEyNywgMSwgMjA3LCAzNiwgMjIxLCAxMjcsIDEsIDIwNiwgMTIyLCAyMjEsIAorICAgIDEyNywgMSwgMjQyLCA1OCwgMjIxLCAxMjcsIDEsIDI0MSwgMTAwLCAyMjEsIDEyNywgMSwgMTg4LCAyMjEsIDEyNywgMSwgCisgICAgMTcyLCAyMjEsIDEyNywgMSwgMjE1LCAyNDUsIDIyMSwgMTI3LCAxLCAyNDksIDEzNiwgMjIxLCAxMjcsIDEsIDI0OCwgMjAwLCAKKyAgICAyMjEsIDEyNywgMSwgMTc4LCAyMjEsIDEyNywgMSwgMTgzLCAyMjEsIDEyNywgMSwgMjEzLCAyNTIsIDIyMSwgMTI3LCAxLCAKKyAgICAxOTQsIDIyMSwgMTI3LCAxLCAyMDMsIDkwLCAyMjEsIDEyNywgMSwgMjEwLCAxMTQsIDIyMSwgMTI3LCAxLCAyMDgsIDE3OSwgCisgICAgMjIxLCAxMjcsIDEsIDIxMiwgNjQsIDIyMSwgMTI3LCAxLCAxNDQsIDIyMSwgMTI3LCAxLCAyMjQsIDEzOCwgMjIxLCAxMjcsIAorICAgIDIyLCAyLCAyNTIsIDEzOCwgMjIxLCAxMjcsIDIyLCAyLCA3MCwgMjIxLCAxMjcsIDIyLCAyLCAyMjgsIDE1MSwgMjIxLCAKKyAgICAxMjcsIDIyLCAyLCA2NiwgMjIxLCAxMjcsIDIyLCAyLCAyMDMsIDE4MiwgMjIxLCAxMjcsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMjIxLCAxMjcsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMTU2LCAyMjEsIDEyNywgMjIsIAorICAgIDIsIDEwOSwgMjI0LCAxMzksIDIyMSwgMTI3LCAyMiwgMiwgNzIsIDIyMSwgMTI3LCAyMiwgMiwgMjUxLCAxNzYsIDIyMSwgCisgICAgMTI3LCAyMiwgMiwgNzQsIDIyMSwgMTI3LCAyMiwgMiwgMjUwLCAxMzksIDIyMSwgMTI3LCAyLCAyNTEsIDMzLCAyMjEsIAorICAgIDEyNywgMiwgMjAyLCAyMDMsIDIyMSwgMTI3LCAyLCAyMDIsIDIwOCwgMjIxLCAxMjcsIDIsIDI1MCwgMjMxLCAyMjEsIDEyNywgCisgICAgMjQyLCAxMCwgMjIxLCAxMjcsIDUzLCAyNDIsIDEwLCAyMjEsIDEyNywgMjUyLCAzLCA1NCwgMjIxLCAxMjcsIDIsIDIzMywgCisgICAgNzAsIDIyMSwgMTI3LCAxNywgMTk5LCA4MSwgMjIxLCAxMjcsIDE3LCAxMDIsIDIyMSwgMTI3LCAxNywgMTA1LCAyMjEsIAorICAgIDEyNywgMTcsIDE0NywgMjIxLCAxMjcsIDE3LCAxNDksIDIyMSwgMTI3LCAxNywgMTY0LCAyMjEsIDEyNywgMTcsIDE4NywgCisgICAgMjIxLCAxMjcsIDE3LCAyMTAsIDEzNSwgMjIxLCAxMjcsIDE3LCAxOTIsIDIyMSwgMTI3LCAxNywgMjE5LCAxMTMsIDkyLCAKKyAgICAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDIxMiwgMjI4LCAyNDgsIDE2MCwgOTIsIDUzLCAyNDgsIDE2MSwgMywgMjE3LCAKKyAgICAyMSwgOTIsIDIwNSwgODMsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgCisgICAgMjEyLCAyMjgsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjEyLCAyMjgsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgCisgICAgOTIsIDIyOCwgNTAsIDI0OCwgMTYwLCA5MiwgMjI4LCA1MCwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgMjA3LCAKKyAgICAxNzIsIDI0OCwgMTYwLCA5MiwgMjA3LCAxNzIsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjA3LCAxNzIsIDI0OCwgCisgICAgMTYxLCAzLCA1MywgMjE3LCAyMSwgOTIsIDIwNCwgMTg1LCAyMDcsIDE3MiwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCAKKyAgICAyMDYsIDI1MywgMSwgNjIsIDIwNiwgMjUzLCAxLCAyNTIsIDEzOCwgMjA2LCAyNTMsIDEsIDcwLCAyMDYsIDI1MywgMSwgCisgICAgMjI4LCAxNTEsIDIwNiwgMjUzLCAxLCA2NiwgMjA2LCAyNTMsIDEsIDIwMywgMTgyLCAyMDYsIDI1MywgMSwgNzIsIDIwNiwgCisgICAgMjUzLCAxLCAyNTEsIDE3NiwgMjA2LCAyNTMsIDEsIDc0LCAyMDYsIDI1MywgMSwgMjUwLCAxMzksIDIwNiwgMjUzLCAxLCAKKyAgICAxNjEsIDIwNiwgMjUzLCAxLCAyMjYsIDIwNywgMjA2LCAyNTMsIDEsIDIzNiwgODksIDIwNiwgMjUzLCAxLCAyMzUsIDE5OSwgCisgICAgMjA2LCAyNTMsIDEsIDIxOSwgMjUzLCAyMDYsIDI1MywgMSwgMjQ3LCAxOTAsIDIwNiwgMjUzLCAxLCAyNDcsIDM3LCAyMDYsIAorICAgIDI1MywgMSwgMjI3LCAyNDgsIDIwNiwgMjUzLCAxLCAyMjcsIDIxNSwgMjA2LCAyNTMsIDEsIDIxOCwgNjAsIDIwNiwgMjUzLCAKKyAgICAxLCAyMDQsIDI1MywgMjA2LCAyNTMsIDEsIDIwNCwgMjQxLCAyMDYsIDI1MywgMSwgMjQxLCAyMjAsIDIwNiwgMjUzLCAxLCAKKyAgICAyNDEsIDIwNCwgMjA2LCAyNTMsIDEsIDIxOSwgMjEsIDIwNiwgMjUzLCAxLCAyMDcsIDM2LCAyMDYsIDI1MywgMSwgMjA2LCAKKyAgICAxMjIsIDIwNiwgMjUzLCAxLCAyNDIsIDU4LCAyMDYsIDI1MywgMSwgMjQxLCAxMDAsIDIwNiwgMjUzLCAxLCAxODgsIDIwNiwgCisgICAgMjUzLCAxLCAxNzIsIDIwNiwgMjUzLCAxLCAyMTUsIDI0NSwgMjA2LCAyNTMsIDEsIDI0OSwgMTM2LCAyMDYsIDI1MywgMSwgCisgICAgMjQ4LCAyMDAsIDIwNiwgMjUzLCAxLCAxNzgsIDIwNiwgMjUzLCAxLCAxODMsIDIwNiwgMjUzLCAxLCAyMTMsIDI1MiwgMjA2LCAKKyAgICAyNTMsIDEsIDE5NCwgMjA2LCAyNTMsIDEsIDIwMywgOTAsIDIwNiwgMjUzLCAxLCAyMTAsIDExNCwgMjA2LCAyNTMsIDEsIAorICAgIDIxMiwgNjQsIDIwNiwgMjUzLCAxLCAxNDQsIDIwNiwgMjUzLCAxLCAyMTIsIDIxNSwgMjA2LCAyNTMsIDIsIDI1MSwgMzMsIAorICAgIDIwNiwgMjUzLCAyLCAyMDIsIDIwMywgMjA2LCAyNTMsIDIyLCAyLCAyNTIsIDEzOCwgMjA2LCAyNTMsIDIyLCAyLCA3MCwgCisgICAgMjA2LCAyNTMsIDIyLCAyLCAyMjgsIDE1MSwgMjA2LCAyNTMsIDIyLCAyLCA2NiwgMjA2LCAyNTMsIDIyLCAyLCAyMDMsIAorICAgIDE4MiwgMjA2LCAyNTMsIDIyLCAyLCA3MiwgMjA2LCAyNTMsIDIyLCAyLCAyNTEsIDE3NiwgMjA2LCAyNTMsIDIyLCAyLCA3NCwgCisgICAgMjA2LCAyNTMsIDIyLCAyLCAyNTAsIDEzOSwgMjA2LCAyNTMsIDIsIDIwMiwgMjA4LCAyMDYsIDI1MywgMiwgMjE4LCAxMDAsIAorICAgIDIwNiwgMjUzLCAxNywgMTk5LCA4MSwgMjA2LCAyNTMsIDE3LCAxMDIsIDIwNiwgMjUzLCAxNywgMTA1LCAyMDYsIDI1MywgCisgICAgMTcsIDE0NywgMjA2LCAyNTMsIDE3LCAxNDksIDIwNiwgMjUzLCAxNywgMTY0LCAyMDYsIDI1MywgMTcsIDE4NywgMjA2LCAKKyAgICAyNTMsIDE3LCAyMTAsIDEzNSwgMjA2LCAyNTMsIDE3LCAxOTIsIDIwNiwgMjUzLCAxNywgMjE5LCAxMTMsIDI1MSwgMTgwLCAKKyAgICAxLCAxNjEsIDI1MSwgMTgwLCAxLCAyMjYsIDIwNywgMjUxLCAxODAsIDEsIDIxOSwgMjUzLCAyNTEsIDE4MCwgMSwgMTg4LCAKKyAgICAyNTEsIDE4MCwgMSwgMjA3LCAzNiwgMjUxLCAxODAsIDEsIDI1MSwgMTA5LCAyMDcsIDM2LCAyNTEsIDE4MCwgMSwgMTcyLCAKKyAgICAyNTEsIDE4MCwgMSwgMjE1LCAyNDUsIDI1MSwgMTgwLCAxLCAyNDksIDEzNiwgMjUxLCAxODAsIDEsIDE3OCwgMjUxLCAxODAsIAorICAgIDEsIDIyNywgMjQ4LCAyNTEsIDE4MCwgMSwgMjQ3LCAzNywgMjUxLCAxODAsIDEsIDIwNiwgMTIyLCAyNTEsIDE4MCwgMSwgCisgICAgMjEzLCAyNTIsIDI1MSwgMTgwLCAxLCAxOTQsIDI1MSwgMTgwLCAxLCAyMTIsIDY0LCAyNTEsIDE4MCwgMSwgMjE4LCA2MCwgCisgICAgMjUxLCAxODAsIDEsIDE0NCwgMjUxLCAxODAsIDEsIDYyLCAyNTEsIDE4MCwgMSwgMjQyLCA1OCwgMjUxLCAxODAsIDEsIAorICAgIDI0MSwgMTAwLCAyNTEsIDE4MCwgMSwgMjM2LCA4OSwgMjUxLCAxODAsIDEsIDI1MSwgMTA5LCAyMzYsIDg5LCAyNTEsIDE4MCwgCisgICAgMSwgMjM1LCAxOTksIDI1MSwgMTgwLCAxLCAyNDgsIDIwMCwgMjUxLCAxODAsIDEsIDIyNywgMjE1LCAyNTEsIDE4MCwgMTExLCAKKyAgICAyLCAxNzksIDE5NCwgMjUxLCAxODAsIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgMjUxLCAxODAsIDExMSwgMiwgMTc5LCAyMjQsIAorICAgIDE5NywgMjEzLCAyNTIsIDI1MSwgMTgwLCAyMiwgMiwgNjIsIDI1MSwgMTgwLCAyMiwgMiwgMjUyLCAxMzgsIDI1MSwgMTgwLCAKKyAgICAyMiwgMiwgNzAsIDI1MSwgMTgwLCAyMiwgMiwgMjI4LCAxNTEsIDI1MSwgMTgwLCAyMiwgMiwgNjYsIDI1MSwgMTgwLCAyMiwgCisgICAgMiwgMjAzLCAxODIsIDI1MSwgMTgwLCAyMiwgMiwgNzIsIDI1MSwgMTgwLCAyMiwgMiwgMjUwLCAxMTcsIDI1MSwgMTgwLCAKKyAgICAyMiwgMiwgNzQsIDI1MSwgMTgwLCAyMiwgMiwgMjUxLCAxNzYsIDI1MSwgMTgwLCAyMiwgMiwgMjUxLCAxMDEsIDI1MSwgCisgICAgMTgwLCAyLCAyMjYsIDE0OSwgMjUxLCAxODAsIDE3LCAxOTksIDgxLCAyNTEsIDE4MCwgMTcsIDEwMiwgMjUxLCAxODAsIDE3LCAKKyAgICAxMDUsIDI1MSwgMTgwLCAxNywgMTQ3LCAyNTEsIDE4MCwgMTcsIDE0OSwgMjUxLCAxODAsIDE3LCAxNjQsIDI1MSwgMTgwLCAKKyAgICAxNywgMTg3LCAyNTEsIDE4MCwgMTcsIDIxMCwgMTM1LCAyNTEsIDE4MCwgMTcsIDE5MiwgMjUxLCAxODAsIDE3LCAyMTksIAorICAgIDExMywgMjUxLCAxODAsIDQxLCAyMDYsIDE2NiwgMjUxLCAxODAsIDQxLCAyMDQsIDE1OSwgMjUxLCAxODAsIDIsIDQsIDIxMSwgCisgICAgMTkyLCAyNTEsIDE4MCwgMiwgMjExLCAxOTIsIDI1MSwgMTgwLCAyLCAyMTIsIDE2NiwgMjUxLCAxODAsIDE2LCAyMDIsIAorICAgIDIzNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIxOSwgMjUyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgNjIsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDEsIDMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMTk5LCAyMTEsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCA2LCAxLCAxODMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDI0NSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDIyOCwgMTUxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjAzLCAxODIsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCA3MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDc0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjUxLCAKKyAgICA3NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzNiwgODksIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMjYsIDg4LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM4LCAxNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDE5NSwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwNCwgMzgsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzgsIDE2MiwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIxNywgMTI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjA0LCAyNDgsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCA2LCAxLCAyMTgsIDg2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjQyLCA1OCwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDI1MCwgMTU1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjUxLCAxMDEsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCAyNDgsIDM2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE0LCAyMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCAKKyAgICA2LCAxLCAyMzQsIDQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjMzLCAxOTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAKKyAgICAxLCAyMzMsIDEyMiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzNCwgMTY2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgCisgICAgMjA4LCAxMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDksIDE2MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIAorICAgIDIwMiwgMTk0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjE5LCAyNTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCA2MiwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwMSwgMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAxOTksIDIxMSwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE4MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMjQ1LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjI4LCAxNTEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDMsIDE4MiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDcyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgNzQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNTEsIAorICAgIDc2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM2LCA4OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIyNiwgODgsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzgsIDE0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMTk1LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjA0LCAzOCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzOCwgMTYyLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjE3LCAxMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDQsIDI0OCwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDQsIDEsIDIxOCwgODYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNDIsIDU4LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjUwLCAxNTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNTEsIDEwMSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDI0OCwgMzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTQsIDIyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIAorICAgIDQsIDEsIDIzNCwgNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzMsIDE5NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIAorICAgIDEsIDIzMywgMTIyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM0LCAxNjYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAKKyAgICAyMDgsIDEzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwOSwgMTYxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgCisgICAgMjAyLCAxOTQsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTk5LCA4MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxMDIsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTA1LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE0NywgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDE3LCAxNDksIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTY0LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE4NywgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAyMTAsIDEzNSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxOTIsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCAxNywgMjE5LCAxMTMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjA2LCAxNjYsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0MSwgMjA0LCAxNTksIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjA2LCA2NywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAKKyAgICAyMzYsIDIzNSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMzcsIDEwNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDksIAorICAgIDkyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIxMCwgMTI5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIzOCwgMjIyLCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIxOSwgMTA4LCAyMDEsIDk0LCAyNDYsIDE0MiwgMjE3LCA4NiwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNzIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTYxLCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE5NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNzgsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQyLCA1OCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxOTksIDExNCwgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDMsIDkwLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIAorICAgIDIxOSwgMjUzLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE0NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgCisgICAgMTUxLCAxLCAyMzYsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIyNiwgMjA3LCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDEsIDIxMiwgNjQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ5LCAxMzYsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ3LCAxOTAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjA3LCAKKyAgICAzNiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDYsIDEyMiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgCisgICAgMTUxLCAxLCAxODgsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjE1LCAyNDUsIDIxNiwgODgsIDI0NiwgMTYwLCAKKyAgICAyMzQsIDE1MSwgMSwgMjEzLCAyNTIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjM3LCAxOTUsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ3LCAzNywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA2MiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3MCwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA2NiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDQsIDQ2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIzMiwgCisgICAgMjQwLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMTYsIDIyNiwgMjE2LCA4OCwgMjQ2LCAxNjAsIAorICAgIDIzNCwgMTUxLCAxLCA0NywgMjI3LCAxMTgsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwNywgODMsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIyMywgMjQzLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDQ3LCAyMjAsIDIxNCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMTU2LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMDEsIDE0NywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgCisgICAgMjE5LCAyNTUsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwMCwgMTIzLCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMjI0LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTMsIAorICAgIDE5LCAyMDUsIDE3NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDIzNSwgMTIzLCAyMDgsIDc2LCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIAorICAgIDksIDIzNSwgMTIzLCAyMDgsIDc3LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMTUwLCAKKyAgICAyMjQsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMjA1LCAxNzQsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAxNTAsIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAKKyAgICAyMTIsIDksIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjEsIDIwNSwgMjA1LCAxNzQsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjM1LCAxMjMsIDIwOCwgNzcsIDIwMywgNzIsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjIxLCAyMDUsIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIAorICAgIDIyMSwgMjA1LCAxNTAsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAyMjQsIAorICAgIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDIwNSwgMTc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgCisgICAgMjM0LCAxNTEsIDIzNSwgMTIzLCAyMDgsIDc2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDE1MCwgCisgICAgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDE1MCwgMjM3LCA4OSwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMzUsIDEyMywgMjA4LCA3NywgMjM3LCA4OSwgMTc0LCAxLCA2MiwgMTc0LCAxLCAKKyAgICAyNTIsIDEzOCwgMTc0LCAxLCA3MCwgMTc0LCAxLCAyMjgsIDE1MSwgMTc0LCAxLCA2NiwgMTc0LCAxLCAyMDMsIDE4MiwgCisgICAgMTc0LCAxLCAxMDksIDE0NiwgMTc0LCAxLCAxMDksIDIxMiwgMjE2LCAxNzQsIDEsIDEwOSwgMTU2LCAxNzQsIDEsIDcyLCAKKyAgICAxNzQsIDEsIDI1MSwgMTc2LCAxNzQsIDEsIDc0LCAxNzQsIDEsIDI1MCwgMTM5LCAxNzQsIDEsIDE2MSwgMTc0LCAxLCAyMjYsIAorICAgIDIwNywgMTc0LCAxLCAyMzYsIDg5LCAxNzQsIDEsIDIzNSwgMTk5LCAxNzQsIDEsIDIxOSwgMjUzLCAxNzQsIDEsIDI0NywgCisgICAgMTkwLCAxNzQsIDEsIDI0NywgMzcsIDE3NCwgMSwgMjI3LCAyNDgsIDE3NCwgMSwgMjI3LCAyMTUsIDE3NCwgMSwgMjE4LCAKKyAgICA2MCwgMTc0LCAxLCAyMDQsIDI1MywgMTc0LCAxLCAyMDQsIDI0MSwgMTc0LCAxLCAyNDEsIDIyMCwgMTc0LCAxLCAyNDEsIAorICAgIDIwNCwgMTc0LCAxLCAyMTksIDIxLCAxNzQsIDEsIDIwNywgMzYsIDE3NCwgMSwgMjA2LCAxMjIsIDE3NCwgMSwgMjQyLCA1OCwgCisgICAgMTc0LCAxLCAyNDEsIDEwMCwgMTc0LCAxLCAxODgsIDE3NCwgMSwgMTcyLCAxNzQsIDEsIDIxNSwgMjQ1LCAxNzQsIDEsIAorICAgIDI0OSwgMTM2LCAxNzQsIDEsIDI0OCwgMjAwLCAxNzQsIDEsIDE3OCwgMTc0LCAxLCAxODMsIDE3NCwgMSwgMjEzLCAyNTIsIAorICAgIDE3NCwgMSwgMTk0LCAxNzQsIDEsIDIwMywgOTAsIDE3NCwgMSwgMjEwLCAxMTQsIDE3NCwgMSwgMjA4LCAxNzksIDE3NCwgMSwgCisgICAgMjEyLCA2NCwgMTc0LCAxLCAxNDQsIDE3NCwgMjIsIDIsIDI1MiwgMTM4LCAxNzQsIDIyLCAyLCA3MCwgMTc0LCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE3NCwgMjIsIDIsIDY2LCAxNzQsIDIyLCAyLCAyMDMsIDE4MiwgMTc0LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE3NCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE3NCwgMjIsIDIsIDEwOSwgMTU2LCAxNzQsIDIyLCAyLCA3MiwgMTc0LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDE3NCwgMjIsIDIsIDc0LCAxNzQsIDIyLCAyLCAyNTAsIDEzOSwgMTc0LCAyLCAyNDcsIDE0OSwgMTc0LCAKKyAgICAyLCAyNTEsIDMzLCAxNzQsIDIsIDIwMiwgMjAzLCAxNzQsIDIsIDIwMiwgMjA4LCAxNzQsIDIsIDI1MCwgMTIyLCAxNzQsIAorICAgIDI0MiwgMTAsIDE3NCwgNTMsIDI0MiwgMTAsIDE3NCwgMjAwLCAyMzgsIDIxMCwgMTU0LCAxNzQsIDIzNiwgNTMsIDIzNywgCisgICAgOTIsIDE3NCwgMjM2LCA1MywgMjM3LCA5MSwgMTc0LCAxNywgMTk5LCA4MSwgMTc0LCAxNywgMTAyLCAxNzQsIDE3LCAxMDUsIAorICAgIDE3NCwgMTcsIDE0NywgMTc0LCAxNywgMTQ5LCAxNzQsIDE3LCAxNjQsIDE3NCwgMTcsIDE4NywgMTc0LCAxNywgMjEwLCAKKyAgICAxMzUsIDE3NCwgMTcsIDE5MiwgMTc0LCAxNywgMjE5LCAxMTMsIDE3NCwgNDEsIDEwMiwgMTc0LCA0MSwgMTA1LCAxNzQsIAorICAgIDQxLCAxNDcsIDE3NCwgNDEsIDE0OSwgMTc0LCA0MSwgMTY0LCAxNzQsIDQxLCAxODcsIDE3NCwgNDEsIDIxMCwgMTM1LCAKKyAgICAxNzQsIDQxLCAxOTIsIDE3NCwgNDEsIDIxOSwgMTEzLCAxNzQsIDQxLCAyMDYsIDE2NiwgMTc0LCA0MSwgMjA0LCAxNTksIAorICAgIDE3NCwgNDEsIDIwNiwgNjcsIDE3NCwgNDEsIDIzNiwgMjM1LCAxNzQsIDQxLCAyMzcsIDEwNCwgMTc0LCA0MSwgMjA5LCA5MiwgCisgICAgMTc0LCA0MSwgMjEwLCAxMjksIDE3NCwgNDEsIDIzOCwgMjIyLCAxNzQsIDQxLCAyMTksIDEwOCwgMTc0LCAyMzMsIDgxLCAKKyAgICAyMDMsIDI0MCwgODEsIDIyMiwgMTUxLCAyMzQsIDEzNywgODEsIDIyMiwgMTUxLCAxMzQsIDIxMCwgMTA2LCAyMjIsIDE1MSwgCisgICAgMSwgMTYxLCAyMjIsIDE1MSwgMSwgMjI2LCAyMDcsIDIyMiwgMTUxLCAxLCAyMzYsIDg5LCAyMjIsIDE1MSwgMSwgMjE5LCAKKyAgICAyNTMsIDIyMiwgMTUxLCAxLCAyNDcsIDE5MCwgMjIyLCAxNTEsIDEsIDI0NywgMzcsIDIyMiwgMTUxLCAxLCAyMjcsIDI0OCwgCisgICAgMjIyLCAxNTEsIDEsIDIxOCwgNjAsIDIyMiwgMTUxLCAxLCAyMDcsIDM2LCAyMjIsIDE1MSwgMSwgMjA2LCAxMjIsIDIyMiwgCisgICAgMTUxLCAxLCAyNDIsIDU4LCAyMjIsIDE1MSwgMSwgMTg4LCAyMjIsIDE1MSwgMSwgMTcyLCAyMjIsIDE1MSwgMSwgMjE1LCAKKyAgICAyNDUsIDIyMiwgMTUxLCAxLCAyNDksIDEzNiwgMjIyLCAxNTEsIDEsIDE3OCwgMjIyLCAxNTEsIDEsIDIwNSwgMzIsIDIyMiwgCisgICAgMTUxLCAxLCAyMDUsIDIyLCAyMjIsIDE1MSwgMSwgMjM5LCA5MywgMjIyLCAxNTEsIDEsIDIwMSwgMTE0LCAyMjIsIDE1MSwgCisgICAgMSwgMTk5LCA3NywgMjIyLCAxNTEsIDEsIDE5OSwgMTE0LCAyMjIsIDE1MSwgMSwgMjU1LCAxNDIsIDIyMiwgMTUxLCAxLCAKKyAgICAxODMsIDIyMiwgMTUxLCAxLCAyMTMsIDI1MiwgMjIyLCAxNTEsIDEsIDE5NCwgMjIyLCAxNTEsIDEsIDIxMCwgMTE0LCAyMjIsIAorICAgIDE1MSwgMSwgMjEyLCA2NCwgMjIyLCAxNTEsIDEsIDE0NCwgMjIyLCAxNTEsIDEsIDYyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMTYxLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjI2LCAyMDcsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMzYsIDg5LCAyMjIsIAorICAgIDE1MSwgMjA4LCAxMiwgMSwgMjE5LCAyNTMsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDcsIDE5MCwgMjIyLCAxNTEsIDIwOCwgCisgICAgMTIsIDEsIDI0NywgMzcsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMjcsIDI0OCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIAorICAgIDIxOCwgNjAsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMDcsIDM2LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjA2LCAxMjIsIAorICAgIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDIsIDU4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTg4LCAyMjIsIDE1MSwgMjA4LCAKKyAgICAxMiwgMSwgMTcyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjE1LCAyNDUsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDksIAorICAgIDEzNiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE3OCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIwNSwgMzIsIDIyMiwgMTUxLCAKKyAgICAyMDgsIDEyLCAxLCAyMDUsIDIyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjM5LCA5MywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIAorICAgIDIwMSwgMTE0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTk5LCA3NywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE5OSwgMTE0LCAKKyAgICAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTgzLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIDIyMiwgMTUxLCAyMDgsIAorICAgIDEyLCAxLCAxOTQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTAsIDExNCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxMiwgCisgICAgNjQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxNDQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCA2MiwgMjIyLCAxNTEsIDIyLCAyLCAKKyAgICAyNTIsIDEzOCwgMjIyLCAxNTEsIDIyLCAyLCA3MCwgMjIyLCAxNTEsIDIyLCAyLCA2NiwgMjIyLCAxNTEsIDIyLCAyLCA3MiwgCisgICAgMjIyLCAxNTEsIDIyLCAyLCA3NCwgMjIyLCAxNTEsIDIsIDI1MSwgMzMsIDIyMiwgMTUxLCAyLCAyNDcsIDE0OSwgMTAsIDIsIAorICAgIDYyLCAxMCwgMiwgMzUsIDI0LCA2MiwgMTAsIDIsIDM1LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAzNSwgMjQsIDIzNiwgNTgsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMzUsIDI0LCAxNDQsIDEwLCAyLCAzNSwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMzUsIDI0LCAKKyAgICAyMjUsIDE1NiwgMjM1LCAyOCwgMTAsIDIsIDM1LCAyNCwgMjIwLCAyNTAsIDEwLCAyLCAzNSwgMjQsIDIxMiwgNTAsIDEwLCAKKyAgICAyLCAyNTQsIDE0NywgMTAsIDIsIDI1MiwgODksIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyNTIsIAorICAgIDkwLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjM2LCA3MSwgMTAsIDIsIDI1MiwgOTAsIAorICAgIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAxNDQsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI4LCAxMjcsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI1LCAxNTcsIAorICAgIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjEwLCA0OSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgCisgICAgMTAsIDIsIDI1MiwgOTAsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDYsIDEwLCAyLCAyNTIsIDcsIDI0LCAyNDksIDk4LCAxMCwgCisgICAgMiwgMjUyLCA3LCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyNTIsIDcsIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAKKyAgICAxNzksIDEwLCAyLCAyNTIsIDcsIDI0LCAyMTAsIDExMiwgMTAsIDIsIDI1MiwgNywgMjQsIDIwNywgMCwgMTAsIDIsIDI1MSwgCisgICAgMjM1LCAxMCwgMiwgMjUxLCAxNTksIDEwLCAyLCAyNTEsIDE2MCwgMjQsIDIzOCwgMTA5LCAxMCwgMiwgMjUxLCAxNjAsIDI0LCAKKyAgICAyMTAsIDExLCA5MywgMjM1LCAxMzUsIDEwLCAyLCAyNTEsIDE1MSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjUxLCAxNTEsIAorICAgIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDI0MSwgMjksIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjUxLCAKKyAgICAxNTIsIDI0LCAxNDQsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIyNywgOTEsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIyNiwgCisgICAgMTYzLCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMDMsIDE5MCwgMTAsIDIsIAorICAgIDI1MSwgMTQ4LCAxMCwgMiwgMjUxLCAxNDAsIDEwLCAyLCAyNTEsIDk3LCAxMCwgMiwgMjUxLCA5OCwgMjQsIDIxMCwgNjUsIAorICAgIDEwLCAyLCAyNTEsIDg1LCAxMCwgMiwgMjUxLCA4NiwgMTE5LCAyNTEsIDg1LCAxMCwgMiwgMjUxLCA4NiwgMTI2LCAyMDUsIAorICAgIDIzMiwgMTAsIDIsIDI1MSwgODYsIDkzLCAyMjAsIDE0OCwgMjE3LCA0MCwgMjUxLCA4NiwgOTMsIDIyMCwgMTQ3LCAxMCwgMiwgCisgICAgMjUxLCA4NiwgOTMsIDIyMCwgMTQ4LCAyMDgsIDE5MiwgMTAsIDIsIDI1MSwgNTMsIDEwLCAyLCAyNTEsIDIzLCAxMCwgMiwgCisgICAgMjUwLCAyNDYsIDEwLCAyLCAyNTAsIDI0NywgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjUwLCAyMTgsIDEwLCAyLCAyNTAsIAorICAgIDE4NiwgMTAsIDIsIDI1MCwgMTgxLCAxMCwgMiwgMjUwLCAxODIsIDE5OSwgMzIsIDIwNiwgMTU1LCAxMCwgMiwgMjUwLCAKKyAgICAxODIsIDIyNywgOTUsIDIwNiwgMTU1LCAxMCwgMiwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDIwNCwgMjEwLCAxMTksIAorICAgIDIwNCwgMjEwLCAyMDQsIDIxMCwgMTE5LCAyMDQsIDIxMCwgMjE2LCAxMzUsIDEwLCAyLCAyNTAsIDE4MiwgMTE5LCAyNTAsIAorICAgIDE4MiwgMTE5LCAyNTAsIDE4MSwgMTAsIDIsIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAyNDIsIAorICAgIDIyOCwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDExOSwgMjUwLCAxODEsIDEwLCAyLCAyNTAsIDE3OSwgMTAsIDIsIDI1MCwgCisgICAgMTc1LCAxMCwgMiwgMjQ5LCAxMzYsIDEwLCAyLCAyNDksIDExOCwgMTAsIDIsIDI0OSwgMTEyLCAxMCwgMiwgMjQ5LCAxMDUsIAorICAgIDEwLCAyLCAyNDksIDk5LCAxMCwgMiwgMjQ5LCAxMDAsIDExOSwgMjQ5LCA5OSwgMTAsIDIsIDI0OSwgOTgsIDEwLCAyLCAKKyAgICAxNDgsIDEwLCAyLCAyNDksIDc2LCAxMCwgMiwgMjQ4LCAxODgsIDEwLCAyLCAyNDgsIDE4OSwgMjQsIDYyLCAxMCwgMiwgCisgICAgMjQ4LCAxODksIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjQ4LCAxODksIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDI0OCwgMzYsIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgMzcsIDI1MiwgODksIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgCisgICAgMzcsIDIwNCwgNSwgMTAsIDIsIDI0OCwgMzcsIDI0MiwgMjI4LCAyNDgsIDM2LCAxMCwgMiwgMjQ4LCAxNCwgMTAsIDIsIAorICAgIDI0OCwgMTUsIDExOSwgMjQ4LCAxNCwgMTAsIDIsIDI0OCwgMywgMTAsIDIsIDI0OCwgMiwgMTAsIDIsIDI0MiwgNTgsIDEwLCAKKyAgICAyLCAyNDIsIDQ4LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAzNSwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCAKKyAgICA0OSwgMjI2LCAxMzIsIDI0LCAyNTEsIDk3LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyNDksIDk4LCAxMCwgMiwgCisgICAgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM2LCA4OSwgCisgICAgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM2LCA5MCwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAKKyAgICAxMzIsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM1LCAxNDMsIDEwLCAyLCAyNDIsIAorICAgIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNSwgMzksIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDE0NCwgMTAsIDIsIDI0MiwgCisgICAgNDksIDIyNiwgMTMyLCAyNCwgMjI4LCAzNSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI4LCAzNiwgOTMsIAorICAgIDIyNCwgNDIsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyNywgNzYsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgCisgICAgMjQsIDE5NCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI0LCA0MiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAKKyAgICAyNCwgMjI0LCA0MywgOTMsIDIyMiwgMTM0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjQsIDI1LCAxMCwgMiwgCisgICAgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMTYsIDEzNiwgCisgICAgOTMsIDIxNiwgMTM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDksIDE4MiwgMTAsIDIsIDI0MiwgNDksIAorICAgIDIyNiwgMTMyLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDQsIDQ4LCA5MywgMjM1LCAKKyAgICAxNDMsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwMywgMTkwLCAxMCwgMiwgMjQyLCAyMCwgMTAsIDIsIDI0MSwgCisgICAgMjU0LCAxMCwgMiwgMjQxLCAyNTMsIDEwLCAyLCAyNDEsIDI1MiwgMTAsIDIsIDI0MSwgNzYsIDEwLCAyLCAyNDEsIDU4LCAKKyAgICAxMCwgMiwgMjQxLCAzMSwgMTAsIDIsIDI0MSwgMzIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjQxLCAyOSwgMTAsIDIsIDI0MSwgCisgICAgMTksIDEwLCAyLCAyNDEsIDIwLCAyMjcsIDM5LCAxMDgsIDIzNSwgMjksIDI0MCwgMjU1LCAxMCwgMiwgMjQwLCAyNTUsIDEwLCAKKyAgICAyLCAyMzksIDEzNywgMTAsIDIsIDIzOSwgMTM4LCAxMTksIDIzOSwgMTM3LCAxMCwgMiwgMjM5LCAxMzgsIDIzNSwgMjgsIAorICAgIDEwLCAyLCAyMzksIDEzOCwgMjEwLCA0NiwgMTAsIDIsIDIzOSwgMTM1LCAxMCwgMiwgMjM5LCAxMzYsIDI0LCAyMzgsIDkxLCAKKyAgICAxMCwgMiwgMjM5LCAxMzQsIDEwLCAyLCAyMzksIDEzMSwgMTAsIDIsIDIzOSwgMTMwLCAxMCwgMiwgMjM5LCAxMjksIDEwLCAKKyAgICAyLCAyMzksIDEyNSwgMTAsIDIsIDIzOSwgMTIzLCAxMCwgMiwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyMzksIDEyNCwgCisgICAgMjM1LCAyOSwgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTIyLCAxMCwgMiwgMjM5LCAxMTUsIDEwLCAyLCA3MiwgMTAsIDIsIAorICAgIDE5NywgMjQsIDIxNiwgMTM1LCAxMCwgMiwgMTk3LCAxMTksIDE5NywgMjE4LCA5MCwgMTE5LCAyMTgsIDg5LCAxMCwgMiwgCisgICAgMjM5LCAyOCwgMTAsIDIsIDIzOSwgMjksIDI0LCAzNSwgOTMsIDIzNCwgMjM2LCA5MywgMjQyLCA1OCwgMTAsIDIsIDIzOSwgCisgICAgMjksIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIxMiwgCisgICAgMzUsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzOSwgMjksIDI0LCA2NiwgMTAsIDIsIDIzOSwgMSwgCisgICAgMTAsIDIsIDIzOCwgMjQ1LCAxMCwgMiwgMjM4LCAyMDksIDEwLCAyLCAyMzgsIDE3OSwgMTAsIDIsIDIzOCwgMTgwLCAyNCwgCisgICAgMjM2LCA1NywgMTAsIDIsIDIzOCwgMTgwLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzgsIDE4MCwgMjQsIAorICAgIDIyMiwgNzYsIDEwLCAyLCAyMzgsIDE4MCwgMjQyLCAyMjgsIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDIxNywgNDAsIAorICAgIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDIwOCwgMTkyLCAxMCwgMiwgMjM4LCAxMTIsIDEwLCAyLCAyMzgsIDEwOSwgCisgICAgMTAsIDIsIDIzOCwgOTEsIDEwLCAyLCAyMzgsIDEwLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDYyLCAxMCwgMiwgMjM4LCAxMSwgCisgICAgMjQsIDM1LCA5MywgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIDI0LCAzNSwgOTMsIDIyNSwgOTQsIDI0LCAyMjUsIDkzLCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjQsIDI1MSwgODUsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzgsIAorICAgIDExLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjksIDIzNSwgCisgICAgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMTQ0LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIzNCwgMjM2LCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjM4LCAxMSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMzgsIDExLCAyNCwgMjI3LCAzOSwgMjA4LCAxOTIsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI2LCAxMywgMTAsIDIsIDIzOCwgCisgICAgMTEsIDI0LCAxOTQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyNCwgMjI0LCAyMTAsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI0LCA0MiwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMDQsIDQ3LCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzYsIDg5LCAxMCwgMiwgMjM2LCA5MCwgMjM1LCAyOCwgMTAsIAorICAgIDIsIDIzNiwgODcsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMzUsIDkzLCAyNDIsIDU5LCA5MywgMTQ0LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDM1LCA5MywgMTQ0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDM1LCA5MywgMjI4LCAxNTMsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjUyLCA3LCAyMDYsIDE1NiwgOTMsIDIwNywgMjQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjUxLCA4NSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTAsIDE4MCwgOTMsIDIzNiwgNzEsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQ5LCA3NywgOTMsIDIxMywgMjUyLCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0OCwgMywgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDgsIDQsIDkzLCAyMTMsIDI1MiwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDIsIDU4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0MSwgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjQxLCAzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjM4LCAyMDksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAyMTAsIDkzLCAxOTQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAKKyAgICAxNzksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAxODAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIzNSwgMTYxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNSwgMTU5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNSwgMTYwLCA5MywgCisgICAgNjIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNDQsIDkzLCAyMDgsIDI0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNCwgCisgICAgMjM2LCA5MywgMjI0LCA0MywgOTMsIDIzOCwgOTEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCAyMTYsIDEwLCAyLCAyMzYsIAorICAgIDg4LCAyNCwgMjM0LCAyMTcsIDkzLCAxOTQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCA3NiwgOTMsIDIyNCwgMjEwLCAxMCwgCisgICAgMiwgMjM2LCA4OCwgMjQsIDIzMywgOTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI4LCAyMSwgOTMsIDIzMywgOTgsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjcsIAorICAgIDc2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI2LCAxNTcsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI2LCAxNTgsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNiwgMTQsIDkzLCAyNTEsIAorICAgIDg1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAxNzksIAorICAgIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNiwgCisgICAgODgsIDI0LCAyMTgsIDkwLCAxMTksIDIxOCwgODksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMTcyLCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEyLCAwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgNjUsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjEwLCA2NiwgOTMsIDIwNCwgMTkyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgMzEsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjA3LCAyMzQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDY2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA0LCAzNywgOTMsIDIzOSwgCisgICAgMTM3LCAxMCwgMiwgMjM2LCA4OCwgMTE5LCAyMzYsIDg3LCAxMCwgMiwgMjM2LCA4MiwgMTAsIDIsIDIzNiwgODMsIDI0MiwgCisgICAgMjI4LCAyMzYsIDgyLCAxMCwgMiwgMjM2LCA4MCwgMTAsIDIsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgMTE5LCAKKyAgICAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA3MSwgMTAsIDIsIDIzNiwgNzIsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgCisgICAgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA3MCwgMTAsIDIsIDIzNiwgNjgsIDEwLCAyLCAyMzYsIDU5LCAxMCwgMiwgMjM2LCAKKyAgICA1NywgMTAsIDIsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA1OCwgMTE5LCAyMzYsIDU3LCAxMCwgMiwgMjM2LCAKKyAgICA1OCwgMjQyLCAyMjgsIDIzNiwgNTcsIDEwLCAyLCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA0OCwgMTAsIDIsIDIzNiwgNDMsIAorICAgIDEwLCAyLCAyMzUsIDI0MiwgMTAsIDIsIDIzNSwgMjQzLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDE2MSwgMTAsIDIsIAorICAgIDIzNSwgMTYyLCAyNCwgNzIsIDEwLCAyLCAyMzUsIDE2MiwgMjQsIDY2LCAxMCwgMiwgMjM1LCAxNjIsIDI0MiwgMjI4LCAKKyAgICAyMzUsIDE2MSwgMTAsIDIsIDIzNSwgMTU5LCAxMCwgMiwgMjM1LCAxNjAsIDExOSwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIAorICAgIDE2MCwgMjQyLCAyMjgsIDIzNSwgMTU5LCAxMCwgMiwgMjM1LCAxNTYsIDEwLCAyLCAyMzUsIDE0MywgMTAsIDIsIDIzNSwgCisgICAgMTQ0LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCAxNDEsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDM1LCA5MywgMjI4LCAxNTMsIDEwLCAKKyAgICAyLCAyMzUsIDE0MiwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM1LCAxNDIsIDI0LCAyMjgsIDE1MywgMTAsIDIsIAorICAgIDIzNSwgMTQyLCAyNCwgMjI0LCA0MywgOTMsIDIyOCwgMTUzLCAxMCwgMiwgMjM1LCAxNDIsIDI0LCAxNzIsIDEwLCAyLCAKKyAgICAyMzUsIDEzNywgMTAsIDIsIDIzNSwgMTM1LCAxMCwgMiwgMjM1LCAxMzYsIDI0MiwgMjI4LCAyMzUsIDEzNSwgMTAsIDIsIAorICAgIDIzNSwgMTM2LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzUsIDEzNiwgMjQsIDIwNywgMCwgMTAsIDIsIDIzNSwgMTM2LCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDIzNSwgNTAsIDEwLCAyLCAyMzUsIDUxLCAyNDIsIDIyOCwgMjM1LCA1MCwgMTAsIDIsIDIzNSwgCisgICAgNDgsIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMjcsIDc3LCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMTIsIDM2LCAKKyAgICA5MywgMjA0LCAyMDksIDEwLCAyLCAyMzUsIDQ5LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCAzOSwgMTAsIDIsIDIzNSwgNDAsIAorICAgIDI0LCAzNSwgOTMsIDIyNSwgMjQ1LCAxMCwgMiwgMjM1LCA0MCwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM1LCA0MCwgMTE5LCAKKyAgICAyMzUsIDQwLCAyMjQsIDMzLCAxMCwgMiwgMjM1LCAzMiwgMTAsIDIsIDIzNSwgMzAsIDEwLCAyLCAyMzUsIDMxLCAyNCwgCisgICAgMjEwLCA2NSwgMTAsIDIsIDIzNSwgMjIsIDEwLCAyLCAyMzUsIDIxLCAxMCwgMiwgMjM1LCAxNywgMTAsIDIsIDIzNSwgMTYsIAorICAgIDEwLCAyLCAxNDQsIDEwLCAyLCAyMzQsIDIzNiwgMjA2LCAxNTUsIDEwLCAyLCAyMzQsIDIzNiwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzNCwgMjE2LCAxMCwgMiwgMjM0LCA3NSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzNCwgNzYsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNDAsIDI1NSwgCisgICAgMTAsIDIsIDIzNCwgNzYsIDI0LCAyMzYsIDgwLCAxMCwgMiwgMjM0LCA3NiwgMjQsIDIyNiwgMTQ3LCAxMCwgMiwgMjM0LCAKKyAgICA3NiwgMjQsIDIxOCwgODksIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzNCwgNzYsIDI0LCA2NiwgMTAsIAorICAgIDIsIDIzMywgOTcsIDEwLCAyLCAyMzMsIDkyLCAxMCwgMiwgMjMzLCA5MywgMjQsIDI1MSwgODUsIDEwLCAyLCAyMzMsIDkzLCAKKyAgICAyNCwgMjM0LCAyMTYsIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzMywgOTMsIDI0LCAyMjQsIDE1NCwgCisgICAgMTAsIDIsIDIzMywgOTMsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjMzLCA4OCwgMTAsIDIsIDcwLCAxMCwgMiwgMjMzLCAxOSwgCisgICAgNjIsIDEwLCAyLCAyMzIsIDIzNSwgMTAsIDIsIDIyOCwgMTgxLCAxMCwgMiwgMjI4LCAxODIsIDExOSwgMjI4LCAxODIsIAorICAgIDI0OCwgMywgMTAsIDIsIDIyOCwgMTgyLCAxMTksIDIyOCwgMTgyLCAyMDgsIDE5MiwgMTAsIDIsIDIyOCwgMTU2LCAxMCwgMiwgCisgICAgMjI4LCAxNTMsIDEwLCAyLCAyMjgsIDE1NCwgMjQxLCA1OCwgMTAsIDIsIDIyOCwgMTU0LCAyMTMsIDg4LCAxMCwgMiwgMjI4LCAKKyAgICAxNTQsIDExOSwgMjI4LCAxNTQsIDIxMCwgMTUsIDExOSwgMjEwLCAxNSwgMjA0LCAzNywgMTE5LCAyMDQsIDM2LCAxMCwgMiwgCisgICAgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjgsIDE0NSwgMTAsIDIsIDIyOCwgMTQ2LCAyNCwgMjM2LCA1OCwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMjgsIDE0NCwgMTAsIDIsIDIyOCwgMTM0LCAxMCwgMiwgMjI4LCAxMzUsIDI0LCAyMDcsIDAsIDEwLCAKKyAgICAyLCAyMjgsIDEzNSwgMjQyLCAyMjgsIDIyOCwgMTM0LCAxMCwgMiwgMjI4LCAxMzUsIDIxNywgNDAsIDIyOCwgMTM0LCAxMCwgCisgICAgMiwgMjI4LCAxMzUsIDIwOCwgMTkyLCAxMCwgMiwgMjI4LCAxMjcsIDEwLCAyLCAyMjgsIDExNywgMTAsIDIsIDIyOCwgMzUsIAorICAgIDEwLCAyLCAyMjgsIDIwLCAxMCwgMiwgMTYxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCA2MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjUxLCAyMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI1MSwgMjM2LCA5MywgMjI2LCAxMywgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDksIAorICAgIDk4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxNDgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMzgsIDEwOSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM4LCA5MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjM2LCA4OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA3MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA1OCwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNTAsIDkzLCAyMTAsIAorICAgIDExMywgOTMsIDYyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAKKyAgICAxNDMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMTM2LCA5MywgMjEyLCAwLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIAorICAgIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDUwLCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMzUsIDIxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI4LCAKKyAgICAxMzQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNiwgMTYzLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyMjYsIDE1NywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI0LCAyMTAsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIyNCwgNDIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMiwgNzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMiwgNzcsIAorICAgIDkzLCAyMzksIDEzNywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NywgOTMsIDIzNSwgMTYxLCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMjIsIDc3LCA5MywgMjA2LCAyMDEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMSwgMjExLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyMjEsIDIxMiwgOTMsIDIxOCwgODQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMCwgMzQsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIxOCwgODksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxNSwgMjA0LCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMTIsIDE3NSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEyLCA2NCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEyLCAwLCAKKyAgICAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTAsIDExNCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjEwLCAzMSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA5LCAyMjAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDIwOSwgMTY4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDcsIDI0MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA2LCAyMzIsIAorICAgIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDY2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDQsIDgsIDI0LCAxNzIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDIwMywgMTkwLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxOTksIDM2LCAxMCwgMiwgMjI3LCAxMDYsIDEwLCAyLCAyMjcsIDEwNywgCisgICAgMjQyLCAyMjgsIDIyNywgMTA2LCAxMCwgMiwgMjI3LCA5NiwgMTAsIDIsIDIyNywgOTMsIDEwLCAyLCAyMjcsIDkxLCAxMCwgCisgICAgMiwgMjI3LCA5MCwgMTAsIDIsIDIyNywgODgsIDEwLCAyLCAyMjcsIDg5LCAxMTksIDIyNywgODgsIDEwLCAyLCAyMjcsIDc2LCAKKyAgICAxMCwgMiwgMjI3LCA3NywgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjI3LCA3MiwgMTAsIDIsIDIyNywgNzMsIAorICAgIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNywgNzMsIDI0MiwgMjI4LCAyMjcsIDcyLCAxMCwgMiwgMjI3LCA3MCwgMTAsIDIsIAorICAgIDIyNywgNjksIDEwLCAyLCAyMjcsIDM4LCAxMCwgMiwgMjI3LCAzOSwgMjI1LCAxNTgsIDI0LCAxMDgsIDExOSwgMjI1LCAKKyAgICAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNywgMzksIDExOSwgMjI3LCAzOSwgMjI1LCAxNTgsIDI0LCAxMDgsIDExOSwgMjI1LCAKKyAgICAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNiwgMjM0LCAxMCwgMiwgMjI2LCAxNjMsIDEwLCAyLCAyMjYsIDE2NCwgMjQsIDI0OSwgCisgICAgMTE4LCAxMCwgMiwgMjI2LCAxNjQsIDI0LCA2NiwgMTAsIDIsIDIyNiwgMTY0LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNiwgCisgICAgMTU3LCAxMCwgMiwgMjI2LCAxNDcsIDEwLCAyLCAyMjYsIDEzNCwgMTAsIDIsIDIyNiwgMTMzLCAxMCwgMiwgMjI2LCAxMzEsIAorICAgIDEwLCAyLCAyMjYsIDEzMiwgMTE5LCAyMjYsIDEzMSwgMTAsIDIsIDIyNiwgMTUsIDEwLCAyLCAyMjYsIDE2LCAxMTksIDIzNCwgCisgICAgNzYsIDI0LCAyNTAsIDE4MCwgMjI2LCAxNiwgMTE5LCAyMzQsIDc2LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjYsIDEzLCAKKyAgICAxMCwgMiwgMjI2LCAxMSwgMTAsIDIsIDIyNiwgMTIsIDIwMywgNzMsIDE5LCAxMCwgMiwgMjI2LCAxMCwgMTAsIDIsIDIyNiwgCisgICAgMiwgMTAsIDIsIDIyNiwgMywgMjM1LCAyOCwgMTAsIDIsIDIyNiwgMSwgMTAsIDIsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCAKKyAgICAyNDYsIDIxNywgNDAsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCAyMzksIDEwLCAyLCAyMjUsIDIxNywgMTAsIDIsIDE5NCwgMTAsIAorICAgIDIsIDIyNSwgMTU3LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCA2MiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMzUsIDkzLCAyNDIsIAorICAgIDU5LCA5MywgMTQ0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAzNSwgOTMsIDIzNiwgNDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDM1LCA5MywgMjI1LCA5MywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUxLCAxNTEsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI1MSwgCisgICAgODUsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI1MCwgMTgyLCAxOTksIDMyLCAyMDYsIDE1NSwgMTAsIDIsIDIyNSwgMTU4LCAKKyAgICAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNDEsIAorICAgIDI1NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM4LCAxNzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNiwgODksIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDIzNSwgNDAsIDkzLCAyMzUsIDM5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAxNDQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNCwgCisgICAgMjE2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzQsIDc2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgMTM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIAorICAgIDEzNSwgOTMsIDE0NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAxMzUsIDkzLCAyMjQsIDQyLCAxMCwgMiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyMjYsIDE2MywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAxNDcsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDIyNiwgMTMsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNiwgMiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAzLCA5MywgCisgICAgMjM0LCA3NiwgOTMsIDYyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjUsIDE1NywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCAKKyAgICAxNTQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNCwgNDIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNCwgMjcsIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDIyMiwgNzYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjIwLCAyNTAsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMjUsIDE1OCwgCisgICAgMjQsIDIxMCwgNjYsIDkzLCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjEwLCAxMSwgOTMsIDIzNSwgMTM2LCAKKyAgICA5MywgMjM4LCAxMDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIxMCwgMTEsIDkzLCAyMzUsIDEzNiwgMjA2LCAxNTUsIDEwLCAKKyAgICAyLCAyMjUsIDE1OCwgMjQsIDIwOSwgMjE4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDksIDIxOSwgOTMsIDIwOSwgMjE4LCAKKyAgICAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA3LCAxMywgMTAsIDIsIDIyNSwgCisgICAgMTU4LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDYsIDIwMiwgOTMsIDM1LCA5MywgMjA4LCAyNSwgOTMsIAorICAgIDE4OCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgNjYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDEwOCwgOTMsIDYyLCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA0LCA0OCwgOTMsIAorICAgIDI1MCwgMTgxLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDMsIDE5MCwgCisgICAgMTAsIDIsIDIyNSwgMTU4LCAyMDgsIDE5MiwgMTAsIDIsIDIyNSwgMTU1LCAxMCwgMiwgMjI1LCAxNTYsIDI0LCAyMTAsIDY1LCAKKyAgICAxMCwgMiwgMjI1LCAxNTYsIDI0LCAyMTAsIDY2LCA5MywgMjA3LCAyMzQsIDEwLCAyLCAyMjUsIDE1NiwgMjM1LCAyOCwgMTAsIAorICAgIDIsIDIyNSwgMTU2LCAyMzUsIDI5LCAxMTksIDIyNSwgMTU2LCAyMzUsIDI5LCAyMTAsIDY1LCAxMCwgMiwgMjI1LCAxNTEsIAorICAgIDEwLCAyLCAyMjUsIDkzLCAxMCwgMiwgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMjUsIDkxLCAxMCwgMiwgMjI1LCAKKyAgICA5MiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCA5MiwgMjQsIDIyNSwgMjQ2LCA5MywgMjEyLCAxNzUsIDEwLCAyLCAyMjQsIAorICAgIDIxMCwgMTAsIDIsIDIyNCwgMTkxLCAxMCwgMiwgMjI0LCAxNzksIDEwLCAyLCAyMjQsIDE1NCwgMTAsIDIsIDIyNCwgNDIsIAorICAgIDEwLCAyLCAyMjQsIDQzLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQwLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDI1MSwgCisgICAgMTUxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzOCwgOTEsIDEwLCAyLCAKKyAgICAyMjQsIDQxLCAyNCwgMjM4LCA5MiwgMjA2LCAxNTUsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIAorICAgIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM0LCA3NiwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyOCwgMTM0LCAKKyAgICAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNywgOTMsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI3LCA5MSwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjcsIDkyLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI2LCAxNjMsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjI1LCAxNzYsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjUsIDE1NywgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAxNzksIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMTgsIDEzMywgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMDksIDE4MywgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIwOSwgMTYwLCA5MywgMjQ4LCAzNiwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMDQsIDIwOSwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMjI0LCA0MSwgMjQyLCAyMjgsIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyMTcsIDQwLCAKKyAgICAyMjQsIDQwLCAxMCwgMiwgMjI0LCA0MSwgMjA4LCAxOTIsIDEwLCAyLCAyMjQsIDQxLCAyMTAsIDQ2LCAxMCwgMiwgMjI0LCAKKyAgICAzOSwgMTAsIDIsIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAxMTksIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAyMTcsIAorICAgIDQwLCAyMjQsIDMzLCAxMCwgMiwgMjI0LCAzNCwgMjEwLCA0NiwgMTAsIDIsIDIyNCwgMzAsIDEwLCAyLCAyMjQsIDI3LCAxMCwgCisgICAgMiwgMjI0LCAyNSwgMTAsIDIsIDIyNCwgMjYsIDExOSwgMjI0LCAyNSwgMTAsIDIsIDIyNCwgMjYsIDExOSwgMjI0LCAyNiwgCisgICAgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMTc4LCAxMCwgMiwgMjIyLCAyMzUsIDI0LCAyMDcsIDAsIDEwLCAyLCAKKyAgICAyMjIsIDIzNSwgMjM1LCAyOCwgMTAsIDIsIDIyMiwgMjM0LCAxMCwgMiwgMjIyLCAyMDYsIDEwLCAyLCAyMjIsIDE1OCwgMTAsIAorICAgIDIsIDIyMiwgMTM1LCAxMCwgMiwgMjIyLCAxMzQsIDEwLCAyLCAyMjIsIDc2LCAxMCwgMiwgMjIyLCAyOCwgMTAsIDIsIDIyMSwgCisgICAgMjExLCAxMCwgMiwgMjIxLCAxNjQsIDEwLCAyLCAyMjEsIDQxLCAxMCwgMiwgMjIxLCA0MiwgMTE5LCAyMjEsIDQxLCAxMCwgCisgICAgMiwgMjIxLCAzMCwgMTAsIDIsIDIyMSwgMzEsIDIzNSwgMjgsIDEwLCAyLCAyMjEsIDEyLCAxMCwgMiwgMjIwLCAyNTQsIDEwLCAKKyAgICAyLCAyMjAsIDI1MCwgMTAsIDIsIDIyMCwgMjUxLCAyNCwgNjIsIDEwLCAyLCAyMjAsIDI1MSwgMjQsIDIyNSwgMjQ1LCAxMCwgCisgICAgMiwgMjIwLCAyNTEsIDI0LCAxOTksIDExNCwgMTAsIDIsIDIyMCwgMjUxLCAxMTksIDIyMCwgMjUwLCAxMCwgMiwgMjIwLCAKKyAgICAyNTEsIDExOSwgMjIwLCAyNTEsIDI0LCAzNSwgOTMsIDE4OCwgMTAsIDIsIDIyMCwgMjUxLCAyNDIsIDIyOCwgMjIwLCAyNTAsIAorICAgIDEwLCAyLCAyMjAsIDI0OCwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgNjIsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDM1LCA5MywgCisgICAgMjQxLCA3NiwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgMjQxLCA3NiwgMTAsIDIsIDIyMCwgMjQ5LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMTg4LCAxMCwgMiwgMjIwLCAxNjAsIDEwLCAyLCAyMjAsIDE0NywgMTAsIDIsIDIyMCwgMTQ4LCAyMjgsIDQ5LCAxMCwgMiwgCisgICAgMjIwLCAxNDgsIDI0LCAyMDksIDIyMSwgMjA2LCAxNTUsIDEwLCAyLCAyMjAsIDE0OCwgMjE3LCA0MCwgMjIwLCAxNDcsIDEwLCAKKyAgICAyLCAyMjAsIDE0NiwgMTAsIDIsIDIyMCwgMTM5LCAyMTgsIDc1LCAxMCwgMiwgMjIwLCAxMzgsIDEwLCAyLCAyMjAsIDEzNywgCisgICAgMTAsIDIsIDIyMCwgMzQsIDEwLCAyLCAyMjAsIDM1LCAyNCwgNjIsIDEwLCAyLCAyMjAsIDM1LCAyNCwgMjA0LCAzNiwgMTAsIAorICAgIDIsIDIyMCwgMzUsIDIxMCwgNDYsIDEwLCAyLCAyMTksIDE1MCwgMTAsIDIsIDIxOSwgMTUxLCAyNCwgNzIsIDEwLCAyLCAKKyAgICAyMTksIDE0OSwgMTAsIDIsIDIxOSwgMTE5LCAxMCwgMiwgMjE5LCAxMjAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIAorICAgIDIxOSwgMTIwLCAyNCwgMjM2LCA1MCwgOTMsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjE5LCAxMTUsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDI1MSwgODUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIAorICAgIDI0LCAyNTAsIDE4MiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyMjIsIDc3LCA5MywgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyMCwgMzQsIAorICAgIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxOCwgODksIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDIxMCwgNjYsIDkzLCAzNSwgMjUxLCA4NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjEwLCA2NiwgOTMsIDI1MCwgCisgICAgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTAsIDY2LCA5MywgMjUwLCAxODIsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjA0LCA0OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMDMsIDE5MCwgMTAsIAorICAgIDIsIDIxOSwgMTAzLCAxMCwgMiwgMjE4LCAxMzMsIDEwLCAyLCAyMTgsIDEwNSwgMTAsIDIsIDIxOCwgODksIDEwLCAyLCAKKyAgICAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIyMiwgMTM1LCAKKyAgICAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIAorICAgIDM2LCAxMTksIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjEyLCAzNSwgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgCisgICAgMjAzLCAxOTAsIDEwLCAyLCAyMTgsIDkwLCAyMDYsIDE1NSwgMTAsIDIsIDIxOCwgOTAsIDExOSwgMjE4LCA4OSwgMTAsIDIsIAorICAgIDIxOCwgOTAsIDI0MiwgMjI4LCAyMTgsIDg5LCAxMCwgMiwgMjE4LCA5MCwgMjQyLCAyMjgsIDIxOCwgOTAsIDIyNSwgMTU2LCAKKyAgICAxMTksIDIyNSwgMTU1LCAxMCwgMiwgMjE4LCA4NCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDI1MCwgMTc1LCAxMCwgCisgICAgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMzksIDEzMSwgCisgICAgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIzNSwgMzksIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyNywgOTEsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIAorICAgIDcsIDI0LCAxOTQsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAKKyAgICAyNCwgMjA5LCAxNTcsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgMjE4LCA4NSwgMjI2LCAKKyAgICAxMzIsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxOCwgODUsIDIyNiwgMTMyLCAyNCwgMjQ4LCAxODksIDY2LCAxMCwgMiwgCisgICAgMTcyLCAxMCwgMiwgMjE2LCAyMDEsIDEwLCAyLCAyMTYsIDE2MiwgMTAsIDIsIDIxNiwgMTM1LCAxMCwgMiwgMjE2LCAzLCAKKyAgICAxMCwgMiwgMjE1LCAyMDQsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDYyLCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNTIsIDg5LCAKKyAgICAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjQ4LCAzNiwgMTAsIDIsIDIxNSwgCisgICAgMjA1LCAyNCwgNzIsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDcwLCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyMzIsIDIzNSwgMTAsIAorICAgIDIsIDIxNSwgMjA1LCAyNCwgNjYsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMTUsIDIwNSwgMjQyLCAKKyAgICAyMjgsIDIxNSwgMjA0LCAxMCwgMiwgMjE1LCAxNDYsIDEwLCAyLCAyMTUsIDE0NywgMjQsIDIyNywgNzIsIDEwLCAyLCAyMTUsIAorICAgIDE0NywgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMTUsIDE0NywgMjQsIDE5OSwgMTE0LCAxMCwgMiwgMjE1LCAxNDcsIDIxNywgCisgICAgNDAsIDIxNSwgMTQ2LCAxMCwgMiwgMjEzLCAyNTIsIDEwLCAyLCAyMTMsIDI0NiwgMTAsIDIsIDIxMywgODgsIDEwLCAyLCAKKyAgICAyMTIsIDE3NSwgMTAsIDIsIDIxMiwgNjQsIDEwLCAyLCAyMTIsIDUxLCAyMTgsIDc1LCAxMCwgMiwgMjEyLCA1MCwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCA2MiwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzksIDEzNywgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzksIAorICAgIDEzNSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAxNDQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIxMiwgCisgICAgNTEsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjQsIDI1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyMSwgCisgICAgMjExLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIxOCwgODksIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjEyLCAzNSwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCAyMTAsIDMxLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNywgMjQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgCisgICAgMjA0LCA0NywgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDQsIDQyLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNCwgMTIsIDEwLCAyLCAKKyAgICAyMTIsIDUxLCAyNCwgMjAzLCAyMTQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjAzLCAxOTAsIDEwLCAyLCAyMTIsIDUxLCAxMTksIAorICAgIDIxMiwgNTAsIDEwLCAyLCAyMTIsIDUxLCAyMzUsIDI4LCAxMCwgMiwgMjEyLCAzNSwgMTAsIDIsIDIxMiwgMzYsIDIyNSwgCisgICAgMTU4LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMTIsIDgsIDEwLCAyLCAyMTIsIDAsIDEwLCAyLCAyMTAsIDExNCwgMTAsIDIsIAorICAgIDIxMCwgMTEyLCAxMCwgMiwgMjEwLCAxMTMsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAKKyAgICAyMTAsIDExMywgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjEwLCAxMTMsIAorICAgIDI0LCAyMDksIDIxOCwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgMjA0LCAxOTIsIDEwLCAyLCAyMTAsIDExMywgMjQsIDY2LCAxMCwgCisgICAgMiwgMjEwLCAxMTMsIDI0LCAxMDgsIDkzLCA2MiwgMTAsIDIsIDIxMCwgMTEwLCAxMCwgMiwgMjEwLCAxMDgsIDEwLCAyLCAKKyAgICAyMTAsIDgyLCAxMCwgMiwgMjEwLCA2NSwgMTAsIDIsIDIxMCwgNjYsIDIzMywgOTcsIDEwLCAyLCAyMTAsIDY2LCAxMTksIAorICAgIDIxMCwgNjYsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjEwLCA2NiwgCisgICAgMTE5LCAyMTAsIDY2LCAyMDcsIDI1LCAxMTksIDIwNywgMjUsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIxMCwgCisgICAgNTgsIDEwLCAyLCAyMTAsIDUzLCAxMCwgMiwgMjEwLCA0OSwgMTAsIDIsIDIxMCwgNDgsIDEwLCAyLCAyMTAsIDQ1LCAxMCwgCisgICAgMiwgMjEwLCAzMSwgMTAsIDIsIDIxMCwgMzIsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMzIsIDI0LCAyMjgsIDEzNCwgMTAsIDIsIAorICAgIDIxMCwgMjUsIDEwLCAyLCAyMTAsIDI2LCAyNCwgNjIsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjQ5LCA5OSwgMTAsIDIsIDIxMCwgCisgICAgMjYsIDI0LCAyNDgsIDE0LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDI0MSwgMTksIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjM2LCAKKyAgICA0OSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgCisgICAgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjUsIDIzOSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjQsIDI3LCAxMCwgMiwgMjEwLCAKKyAgICAyNiwgMjQsIDIyMSwgMzAsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjEyLCAzNSwgMTAsIDIsIDIxMCwgMTksIDEwLCAyLCAyMTAsIAorICAgIDE0LCAxMCwgMiwgMjEwLCAxNSwgMjA2LCAxNTUsIDEwLCAyLCAyMTAsIDE1LCAxMTksIDIxMCwgMTUsIDI0OCwgNCwgMTE5LCAKKyAgICAyNDgsIDMsIDEwLCAyLCAyMTAsIDEwLCAxMCwgMiwgMjA5LCAyMjAsIDEwLCAyLCAyMDksIDIyMSwgMTE5LCAyMjgsIDUwLCAKKyAgICAyMDksIDIyMCwgMTAsIDIsIDIwOSwgMjE4LCAxMCwgMiwgMjA5LCAyMTcsIDEwLCAyLCAyMDksIDE4MiwgMTAsIDIsIDIwOSwgCisgICAgMTgzLCAyMzUsIDI4LCAxMCwgMiwgMjA5LCAxNjgsIDEwLCAyLCAyMDksIDE2NiwgMTAsIDIsIDIwOSwgMTY3LCAxMTksIAorICAgIDIwOSwgMTY3LCAyMDksIDIxOCwgMTAsIDIsIDIwOSwgMTU5LCAxMCwgMiwgMjA5LCAxNTcsIDEwLCAyLCAyMDgsIDI0LCAxMCwgCisgICAgMiwgMjA4LCAyNSwgMTE5LCAyMDgsIDI0LCAxMCwgMiwgMjA3LCAyNDYsIDEwLCAyLCAyMDcsIDI0NSwgMTAsIDIsIDIwNywgCisgICAgMjQzLCAxMCwgMiwgMjA3LCAyMzQsIDEwLCAyLCAyMDcsIDIzMywgMTAsIDIsIDIwNywgMjA3LCAxMCwgMiwgMjA3LCAyMDYsIAorICAgIDEwLCAyLCAyMDcsIDM2LCAxMCwgMiwgMjA3LCAzNywgMjUwLCAxNjUsIDEwLCAyLCAyMDcsIDM3LCAyNCwgMjM0LCA3NSwgCisgICAgMTAsIDIsIDIwNywgMzcsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIwNywgMzcsIDIzNSwgMjgsIDEwLCAyLCAyMDcsIDI0LCAKKyAgICAxMCwgMiwgMjA3LCAyNSwgMTE5LCAyMDcsIDI1LCAyMTksIDE1MSwgMTE5LCAyMTksIDE1MSwgMjQxLCAwLCAxMTksIDI0MCwgCisgICAgMjU1LCAxMCwgMiwgMjA3LCAyNSwgMjA4LCAxOTIsIDEwLCAyLCAyMDcsIDEzLCAxMCwgMiwgMTY1LCAyNCwgMjQ4LCAxODgsIAorICAgIDEwLCAyLCAxNjUsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMTY1LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDE2NSwgMjQsIDIwOSwgCisgICAgMjIwLCAxMCwgMiwgMTY1LCAyNCwgMjA0LCAyMDksIDEwLCAyLCAxNjUsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjA3LCAwLCAKKyAgICAxMCwgMiwgMjA2LCAyMzIsIDEwLCAyLCAyMDYsIDIwMSwgMTAsIDIsIDIwNiwgMjAyLCAyMzUsIDI4LCAxMCwgMiwgMjA2LCAKKyAgICAxNSwgMTAsIDIsIDIwNiwgMTYsIDIwNiwgMTU1LCAxMCwgMiwgMjA1LCAyNDIsIDEwLCAyLCAyMDUsIDIxOSwgMTAsIDIsIAorICAgIDIwNSwgMjIwLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjA1LCAyMjAsIDExOSwgMjA1LCAyMTksIDEwLCAyLCAyMDUsIDIyMCwgCisgICAgMTE5LCAyMDUsIDIyMCwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAyMDQsIAorICAgIDIxNSwgMTAsIDIsIDIwNCwgMjA5LCAxMCwgMiwgMjA0LCAyMDcsIDEwLCAyLCAyMDQsIDIwMywgMTAsIDIsIDIwNCwgMTkyLCAKKyAgICAxMCwgMiwgMjA0LCAxOTMsIDExOSwgMjA0LCAxOTMsIDE5OSwgMTE1LCAxMTksIDE5OSwgMTE0LCAxMCwgMiwgNjYsIDEwLCAKKyAgICAyLCAxMDgsIDIzNSwgMzksIDEwLCAyLCAxMDgsIDEwOCwgNjYsIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAyMTYsIDIxMSwgCisgICAgMTE5LCAyMTYsIDIxMSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMTA4LCAxMTksIDEwOCwgMjA3LCAyMDgsIAorICAgIDExOSwgMjA3LCAyMDcsIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAxMDgsIDIxMywgMTA1LCAxMTksIDEwOCwgMjEzLCAxMDQsIAorICAgIDEwLCAyLCAyMDQsIDQ3LCAxMCwgMiwgMjA0LCA0MiwgMTAsIDIsIDIwNCwgMzYsIDEwLCAyLCAyMDQsIDM3LCAyMjUsIDIzOSwgCisgICAgMTAsIDIsIDIwNCwgMzcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIwNCwgMzcsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIwNCwgCisgICAgMzcsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgMTAsIDIsIDIwNCwgMzcsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCAxMDgsIAorICAgIDIzNSwgMjgsIDEwLCAyLCAyMDQsIDM3LCAyMzUsIDI4LCAxMCwgMiwgMjA0LCAzNywgMjEwLCA0NiwgMTAsIDIsIDIwNCwgCisgICAgMzcsIDIxMCwgNDcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIwNCwgMzIsIDEwLCAyLCAyMDQsIDEyLCAxMCwgMiwgMjA0LCAKKyAgICAxMywgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjA0LCAxMywgMjQsIDIyMiwgNzcsIDkzLCAyNDIsIDU4LCAxMCwgMiwgMjA0LCAKKyAgICAxMywgMjQsIDIxMCwgMTEyLCAxMCwgMiwgMjA0LCAxMywgMjQsIDY2LCAxMCwgMiwgMjA0LCAxMSwgMTAsIDIsIDIwNCwgNywgCisgICAgMTAsIDIsIDIwNCwgOCwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMDQsIDgsIDI0LCAxNzIsIDEwLCAyLCAyMDQsIDUsIDEwLCAyLCAKKyAgICAyMDQsIDYsIDIzNSwgMjgsIDEwLCAyLCAyMDMsIDIxNCwgMTAsIDIsIDIwMywgMjE1LCAyNDIsIDIyOCwgMjAzLCAyMTQsIAorICAgIDEwLCAyLCAyMDMsIDIxNSwgMjEwLCA0NiwgMTAsIDIsIDIwMywgMjEyLCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAzNSwgOTMsIAorICAgIDE0NCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMzUsIDkzLCAxODgsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDI1MSwgMTUxLCAxMCwgCisgICAgMiwgMjAzLCAyMTMsIDI0LCAxNDQsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDIxOCwgODksIDEwLCAyLCAyMDMsIDIxMywgMjQsIAorICAgIDIwNCwgNDcsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDIwNCwgNDgsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgCisgICAgMjA0LCA0OCwgOTMsIDI0OCwgMTg4LCAxMCwgMiwgMjAzLCAyMTEsIDEwLCAyLCAyMDMsIDIwOCwgMTAsIDIsIDIwMywgMjA3LCAKKyAgICAxMCwgMiwgMjAzLCAyMDMsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDYyLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyNTAsIDE3NSwgCisgICAgMTAsIDIsIDIwMywgMjA0LCAyNCwgMTQ4LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzksIDEyNSwgMTAsIDIsIDIwMywgMjA0LCAKKyAgICAyNCwgMjM2LCA4OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA3MSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA1OCwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNSwgNTAsIDEwLCAKKyAgICAyLCAyMDMsIDIwNCwgMjQsIDE0NCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIAorICAgIDIyOCwgMTM0LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjgsIDIwLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjYsIDE2MywgCisgICAgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI0LCAyNSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjIxLCAxNjQsIDEwLCAyLCAyMDMsIAorICAgIDIwNCwgMjQsIDE3MiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjA5LCAKKyAgICAxNjYsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwNCwgMjE1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAxMDgsIDkzLCAyMzUsIAorICAgIDM5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIAorICAgIDIwMywgMjAxLCAxMCwgMiwgMjAzLCAyMDIsIDI0LCA2NiwgMTAsIDIsIDIwMywgMTkwLCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAKKyAgICA2MiwgMTAsIDIsIDIwMywgMTkxLCAyNCwgMjI2LCAxNSwgMTAsIDIsIDIwMywgMTkxLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAKKyAgICAyMDMsIDE5MSwgMjQsIDIwNywgMCwgMTAsIDIsIDIwMywgMTg2LCAxMCwgMiwgMjAzLCAxODksIDEwLCAyLCAyMDMsIDE4NywgCisgICAgMTAsIDIsIDIwMywgMTgzLCAxMCwgMiwgMjAzLCAxNzEsIDEwLCAyLCAyMDMsIDE3MiwgMjQsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMDMsIDE3MCwgMTAsIDIsIDE5OSwgMTE0LCAxMCwgMiwgMTk5LCAxMTUsIDIwNiwgMTU1LCAxMCwgMiwgMTk5LCAxMTUsIAorICAgIDk1LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAxOTksIDExMCwgMTAsIDIsIDE5OSwgMTAyLCAxMCwgMiwgMTk5LCA4OCwgMTAsIAorICAgIDIsIDE5OSwgMzYsIDEwLCAyLCAxOTksIDM3LCAxMTksIDE5OSwgMzYsIDEwLCAyLCAxOTksIDM1LCAxMCwgMiwgMTk5LCAzMywgCisgICAgMTAsIDIsIDE5OSwgMzQsIDIyNywgOTUsIDIwNiwgMTU1LCAxMCwgMiwgMTk5LCAyOCwgMTAsIDIsIDE5OSwgMTksIDEwLCAyLCAKKyAgICAxOTksIDMsIDEwLCAyLCAxOTksIDEsIDEwLCAyLCAxOTksIDIsIDI0LCA2MiwgMTAsIDIsIDE5OSwgMCwgMTAsIDIsIDE5OCwgCisgICAgMjU1LCAxMCwgMiwgMjI3LCA2MSwgMjM4LCAyMDYsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDI1MiwgCisgICAgNywgMjQsIDYyLCAxMCwgMiwgMjUxLCA5OCwgMjQsIDIyNiwgNCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjA0LCAKKyAgICA0OCwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCA0NywgMTAsIDIsIDI0MSwgMCwgOTMsIDIwOSwgMjIwLCAxMCwgMiwgCisgICAgMjM5LCAxMzYsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMzgsIDExLCAyNCwgCisgICAgMjEwLCA2NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTEsIDg2LCA5MywgMjI3LCA3NywgOTMsIDYyLCAxMCwgMiwgMjM2LCAKKyAgICA4OCwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjM2LCAxNCwgMTAsIDIsIDIzNSwgMTUxLCAxMCwgMiwgMjMzLCA3MywgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjUxLCA1MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjUwLCAxNzgsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzQsIDc2LCAKKyAgICAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNCwgMjUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE3MiwgMTAsIAorICAgIDIsIDIyNywgMTA4LCAyNCwgMjA5LCAyMTMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgMjE1LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMDMsIDIxMiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMjQsIDQxLCAyMTAsIAorICAgIDQ3LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM4LCA5MiwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMjQsIAorICAgIDQxLCAyNCwgMjA5LCAyMjAsIDEwLCAyLCAyMjIsIDI3LCAxMCwgMiwgMjIwLCAyNDksIDI0LCAxOTksIDExNCwgMTAsIDIsIAorICAgIDIyMCwgMTU5LCAxMCwgMiwgMjE5LCAxMTgsIDEwLCAyLCAyMTksIDExNywgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjQ5LCA5OSwgCisgICAgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMTgsIDEwNiwgMjEyLCAyMjgsIDIxOSwgMTA5LCAyNDEsIAorICAgIDE1NCwgMTAsIDIsIDIxNiwgNCwgMjUwLCAxNjUsIDEwLCAyLCAyMTUsIDE1MCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIwNiwgMTQsIDEwLCAyLCAyMDQsIDEzLCAyNCwgMjIyLCA3NiwgMTAsIDIsIDEwOCwgCisgICAgNjYsIDEwLCAxNDUsIDIsIDEyMCwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDEyNiwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAKKyAgICAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjUwLCAxODEsIAorICAgIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMTI2LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIAorICAgIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyNDAsIDI1NSwgCisgICAgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgNjYsIDEwLCAxNDUsIDIsIAorICAgIDIzNywgNjEsIDY2LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgNjYsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCA2NiwgMTAsIDE0NSwgCisgICAgMiwgMjM4LCAyMzIsIDY2LCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgNjYsIDEwLCAxNDUsIDIsIDExMiwgMjM1LCAyNDQsIDEwLCAKKyAgICAxNDUsIDIsIDEyMCwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDEyNiwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAKKyAgICAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAyMzUsIDI0NCwgCisgICAgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjM1LCAyNDQsIDEwLCAxNDUsIAorICAgIDIsIDIxOSwgMTE0LCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMTEyLCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMTIwLCAyMzUsIAorICAgIDI0MSwgMTAsIDE0NSwgMiwgMTI2LCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIzNSwgMjQxLCAxMCwgMTQ1LCAKKyAgICAyLCAyMzcsIDYxLCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMTIwLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAxMjYsIDIxMCwgODIsIAorICAgIDEwLCAxNDUsIDIsIDEyNiwgMjEwLCA4MywgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMTAsIDgyLCAxMCwgCisgICAgMTQ1LCAyLCAyMzcsIDYxLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjEwLCAKKyAgICAxMzYsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjEwLCAKKyAgICA4MiwgMTAsIDE0NSwgMiwgMTEyLCAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAxMjAsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDEyNiwgCisgICAgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMTI2LCAyMTAsIDc3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIAorICAgIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDIxMCwgODMsIDI0LCAyMzYsIDcyLCAKKyAgICA5MywgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIxMCwgODMsIDI0LCAyMzYsIDcyLCA5MywgMjIxLCAxNjQsIDEwLCAxNDUsIDIsIAorICAgIDExMiwgMjQ3LCAyNTUsIDEwLCAxNDUsIDIsIDEyMCwgMjQ3LCAyNTUsIDEwLCAxNDUsIDIsIDEyNiwgMjQ3LCAyNTUsIDEwLCAKKyAgICAxNDUsIDIsIDEyNiwgMjQ4LCAwLCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI0NywgMjU1LCAxMCwgCisgICAgMTQ1LCAyLCAyMzcsIDYxLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTI2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjM4LCA5MywgCisgICAgMTAsIDE0NSwgMiwgMTI2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjM4LCA5MCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgCisgICAgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIAorICAgIDE3OCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MSwgNjIsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI0LCAxODEsIDI1MCwgMTAzLCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgCisgICAgMjAzLCA3MywgMjM2LCAyNDIsIDI1MCwgMTc3LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIAorICAgIDIyOCwgMTI2LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTI4LCA2MiwgMTAsIDE0NSwgCisgICAgMiwgMjEwLCAxMzYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDEyOCwgMjUwLCAxMDMsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAKKyAgICAyMDMsIDczLCAyMzYsIDI0MiwgMjAzLCAxODUsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMDMsIDczLCAyMzYsIDI0MiwgCisgICAgMjAzLCAxODQsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDIsIDEwLCAxNDUsIDIsIAorICAgIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDEsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAKKyAgICAyMzYsIDI0MiwgMjI4LCAxNDAsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDMsIAorICAgIDYyLCAxMCwgMTQ1LCAyLCAxMjAsIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMTI2LCAyNTAsIDE4MiwgMjA2LCAKKyAgICAxNTUsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyNTAsIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI1MCwgCisgICAgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMTEyLCAKKyAgICAyNDksIDg2LCAxMCwgMTQ1LCAyLCAxMjAsIDI0OSwgODYsIDEwLCAxNDUsIDIsIDEyNiwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI0OSwgODYsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyNDksIDg3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjM3LCA2MSwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjQ5LCA4NywgMjAzLCA3MywgMTksIDEwLCAxNDUsIAorICAgIDIsIDIxOSwgMTI3LCAxMCwgMTQ1LCAyLCAyMTksIDEyOCwgMTAsIDE0NSwgMiwgMTEyLCAyMzgsIDg5LCAxMCwgMTQ1LCAyLCAKKyAgICAxMjAsIDIzOCwgODksIDEwLCAxNDUsIDIsIDExMiwgMjA2LCA3NSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDEyMCwgMjA2LCAKKyAgICA3MiwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDIwOSwgOTUsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDIwNiwgNzUsIDIwMywgNzMsIDIzNiwgMjQyLCA2MiwgMTAsIDE0NSwgMiwgMTIwLCAyMDYsIDcyLCAyMDMsIDczLCAyMzYsIAorICAgIDI0MiwgNjIsIDEwLCAxNDUsIDIsIDExMiwgMjM4LCAyMjgsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAxMTIsIDIxNCwgODgsIAorICAgIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCA0MCwgMjUwLCAxNjgsIDExMiwgMjA5LCA5NiwgMTAsIDE0NSwgMiwgNDAsIDI1MCwgCisgICAgMTY4LCAxMTIsIDIxNCwgODcsIDEwLCAxNDUsIDIsIDExMiwgMjE0LCA4OCwgMjM1LCAyMiwgMTAsIDE0NSwgMiwgMTEyLCAKKyAgICAxNjcsIDIzNSwgMjIsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAxMTIsIDIwNiwgNzQsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAKKyAgICAxMjAsIDIwNiwgNzEsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAyMzYsIDIzNSwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDIzNywgCisgICAgMTA0LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMTA4LCAKKyAgICAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIxMCwgCisgICAgMTM2LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMTQsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAyMTQsIDIxMiwgMiwgNDAsIDI1MCwgMTY4LCAyMDAsIDIzOCwgCisgICAgMjQwLCAyMzksIDEwLCAyMTQsIDIxMiwgMiwgODMsIDI0NiwgNzksIDEwLCAyMTQsIDIxMiwgMiwgMjQxLCA3MSwgMjQ2LCAKKyAgICA3OSwgMTAsIDIxNCwgMjEyLCAyLCAyNDEsIDcxLCAyMDUsIDk0LCAxMCwgMjE0LCAyMTIsIDIsIDI0MSwgNzEsIDIxNCwgOTMsIAorICAgIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjE4LCA5MCwgMjA2LCAxNTUsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjA5LCAyMTgsIDEwLCAKKyAgICAyLCAyNTEsIDIzNiwgMjQsIDIzOCwgOTEsIDEwLCAyLCAyNDksIDExOSwgMjQsIDI0MSwgMCwgMjA2LCAxNTUsIDEwLCAyLCAKKyAgICAyNDksIDEwNiwgMjQsIDI1MiwgNiwgMTAsIDIsIDI0OSwgMTA2LCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyNDksIDEwNiwgMjQsIAorICAgIDE5OSwgMTE0LCAxMCwgMiwgMjQ4LCAzNywgMTE5LCAyNDgsIDM3LCAyNCwgMjIwLCAxNjAsIDEwLCAyLCAyNDIsIDU5LCAyNCwgCisgICAgMjA3LCAwLCAxMCwgMiwgMjQyLCA0OSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjQxLCAzMiwgMjQsIDIyOCwgMTUzLCAxMCwgCisgICAgMiwgMjQxLCAzMiwgMjQsIDEwOCwgMTA4LCA2NiwgMTAsIDIsIDI0MSwgMzAsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyNTEsIDUzLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjUwLCAxODIsIDI1MCwgMTU2LCAyMjUsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyNDEsIDE5LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyMzksIDEyNSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM4LCAxMDksIDEwLCAyLCAyMzksIDEzMiwgMjQsIAorICAgIDIzNiwgODksIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzUsIDE0NCwgCisgICAgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDE0NCwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyMzksIDEzMiwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAxMzIsIAorICAgIDI0LCAyMjUsIDIzOSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCAyNDAsIDkzLCAyMjcsIDM4LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyMjUsIDE0NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCA5MSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjI1LCA5MiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjQsIDMxLCA5MywgMjM1LCAxMzUsIDEwLCAyLCAKKyAgICAyMzksIDEzMiwgMjQsIDIyMiwgMTM1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjIsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIAorICAgIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIxNSwgCisgICAgMjA0LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMDksIDE4MywgMjM1LCAKKyAgICAyOCwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMTYsIDEzNSwgMTAsIDIsIAorICAgIDIzOCwgMTEwLCAyMDAsIDE5NSwgMTAsIDIsIDIzOCwgOTIsIDI0MiwgMjI4LCAyMzgsIDkxLCAxMCwgMiwgMjM4LCAxMSwgCisgICAgMjEwLCA0NywgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIzNCwgNzUsIDEwLCAyLCAyMzgsIAorICAgIDExLCAyMTAsIDQ3LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMTk0LCAxMCwgCisgICAgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjIyLCA3NiwgCisgICAgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMjIsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIwOCwgCisgICAgMjQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjA4LCAyNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDksIDEwNSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDEsIDMyLCAyMzUsIDI4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOSwgMTMyLCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzIsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIzOCwgMTEyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgODksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA1MCwgCisgICAgOTMsIDI0MSwgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA1MCwgOTMsIDIyMCwgMzQsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjM0LCAyMzYsIDkzLCA2MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjUsIDI0MCwgOTMsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI1LCA5MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjUsIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI0LCAzMCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMjAsIDM0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMCwgMzUsIDkzLCAyMzksIDI4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIyMCwgMzUsIDkzLCAyMzUsIDE2MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTAsIDI1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDE5OSwgMTksIDEwLCAyLCAyMzYsIDgzLCAyMTIsIDIyOCwgMjE5LCAxMDksIDI0MSwgMTU0LCAxMCwgMiwgMjM1LCAyNDMsIAorICAgIDI0LCA2NiwgMTAsIDIsIDIzNSwgMTM2LCAyNCwgMjM1LCAxMzYsIDI0MiwgMjI4LCAyMzUsIDEzNSwgMTAsIDIsIDIzNSwgCisgICAgNDksIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgNDAsIDkzLCAyMzUsIDEzNiwgMjQsIDIwNywgMCwgMTAsIAorICAgIDIsIDIzNCwgMjM2LCAyMDYsIDE1NiwgMjM1LCAyOCwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNTAsIDE4MiwgMTE5LCAyMzQsIAorICAgIDc2LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OCwgMzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE2MSwgCisgICAgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTA4LCAxMDgsIDY2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDMsIDIxNCwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMTk5LCA0LCAxMTksIDE5OSwgMywgMTAsIDIsIDIyNSwgMTQ2LCAxMCwgMiwgMjI1LCAxNDQsIDEwLCAKKyAgICAyLCAyMjUsIDE0MywgMTAsIDIsIDIyNSwgMTQyLCAxMCwgMiwgMjI1LCAxNDEsIDEwLCAyLCAyMjUsIDE0MCwgMTAsIDIsIAorICAgIDIyNSwgMTM5LCAxMCwgMiwgMjI1LCAxMzgsIDExOSwgMjI1LCAxMzgsIDIzNSwgMjgsIDEwLCAyLCAyMjUsIDEzNywgMTAsIAorICAgIDIsIDIyNSwgMTM2LCAxMTksIDIyNSwgMTM1LCAxMCwgMiwgMjI1LCAxMzQsIDEwLCAyLCAyMjUsIDEzMywgMTAsIDIsIDIyNSwgCisgICAgMTMyLCAxMCwgMiwgMjI1LCAxMzEsIDEwLCAyLCAyMjUsIDEzMCwgMTAsIDIsIDIyNSwgMTI5LCAxMCwgMiwgMjI1LCAxMjgsIAorICAgIDEwLCAyLCAyMjUsIDEyNywgMTAsIDIsIDIyNSwgMTI2LCAxMCwgMiwgMjI1LCAxMjUsIDEwLCAyLCAyMjUsIDEyNCwgMTAsIAorICAgIDIsIDIyNSwgMTIzLCAxMCwgMiwgMjI1LCAxMjIsIDEwLCAyLCAyMjUsIDEyMSwgMTAsIDIsIDIyNSwgMTIwLCAxMCwgMiwgCisgICAgMjI1LCAxMTksIDEwLCAyLCAyMjUsIDExOCwgMTAsIDIsIDIyNSwgMTE3LCAxMCwgMiwgMjI1LCAxMTUsIDEwLCAyLCAyMjUsIAorICAgIDExNiwgMjQsIDIzNSwgNTAsIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAKKyAgICAyMTYsIDEzNiwgOTMsIDIyNCwgMzksIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIxNiwgMTM2LCA5MywgMjE2LCAxMzYsIDkzLCAKKyAgICAyMjQsIDM5LCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAyMDQsIDQ4LCA5MywgMjQ5LCAxMzYsIDEwLCAyLCAyMjUsIDExNCwgMTAsIAorICAgIDIsIDIyNSwgMTEzLCAxMCwgMiwgMjI1LCAxMTIsIDEwLCAyLCAyMjUsIDExMSwgMTAsIDIsIDIyNSwgMTEwLCAxMCwgMiwgCisgICAgMjI1LCAxMDksIDEwLCAyLCAyMjUsIDEwOCwgMTAsIDIsIDIyNSwgMTA3LCAxMCwgMiwgMjI1LCAxMDYsIDEwLCAyLCAyMjUsIAorICAgIDEwNSwgMTAsIDIsIDIyNSwgMTAzLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgCisgICAgMjQ5LCAxMTgsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIzOSwgMTI0LCAyMzUsIDI5LCAyMzUsIDI4LCAxMCwgMiwgMjI1LCAKKyAgICAxMDQsIDI0LCAyMjYsIDEzLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAxOTQsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwNiwgCisgICAgMjMyLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDYsIDIwMSwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjA0LCA0NywgMTAsIDIsIAorICAgIDIyNSwgMTA0LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAyMjUsIDEwMiwgCisgICAgMTAsIDIsIDIyNSwgMTAwLCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMzksIDEzNSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjM2LCAKKyAgICA4OSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIyOCwgMTU0LCAyMzUsIAorICAgIDI4LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjE2LCAxMzYsIDkzLCAKKyAgICAyMTYsIDEzNiwgOTMsIDIyNCwgMzksIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIxMCwgNTAsIDkzLCAyMjYsIDE2MywgMTAsIDIsIAorICAgIDIyNSwgMTAxLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAyMjUsIDk4LCAxMCwgCisgICAgMiwgMjI1LCA5NywgMTAsIDIsIDIyNCwgNDEsIDIzNSwgMjksIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAKKyAgICAyNDAsIDI1NSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMTYsIDEzNSwgMTAsIAorICAgIDIsIDIyNCwgNDEsIDI0LCAyMTYsIDEzNiwgOTMsIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAKKyAgICAyMDcsIDAsIDEwLCAyLCAyMjEsIDIxMiwgOTMsIDE5OSwgMTEzLCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTEsIAorICAgIDI0LCAyMzYsIDg5LCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTEsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyNDEsIDMyLCAyMzUsIDI4LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjM1LCAzMiwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjI2LCAKKyAgICAyMzQsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyNSwgMTQxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjIsIDEzNSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjE2LCAxMzYsIDkzLCAyMTYsIDEzNSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgNjYsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIxMiwgNTEsIAorICAgIDIzNSwgMjksIDI0LCAxNDQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjM4LCAxNzksIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjEwLCAKKyAgICA2NiwgMjUwLCAxNTYsIDIyNSwgMjgsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjEwLCAxMTEsIDIwNiwgCisgICAgMTU1LCAxMCwgMiwgMjEwLCA2NiwgMTE5LCAyMTAsIDY1LCAxMCwgMiwgMjEwLCA2NiwgOTMsIDIzMywgOTIsIDEwLCAyLCAKKyAgICAyMTAsIDY2LCA5MywgMjIwLCAxMzcsIDEwLCAyLCAyMTAsIDY2LCA5MywgMjEyLCAwLCAxMCwgMiwgMjA5LCAyMTksIDkzLCAKKyAgICAyMzksIDEzMiwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjA5LCAyMTksIDkzLCAyMzksIDI5LCAyNCwgMjUxLCA4NSwgMTAsIDIsIAorICAgIDIwOSwgMTgzLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjA3LCAxLCA5MywgMjEyLCA1MCwgMTAsIDIsIDIwNCwgMjA0LCAyNCwgCisgICAgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMDQsIDIwNCwgMjQsIDEyNiwgMjQwLCAyNTUsIDEwLCAyLCAyMDMsIDIxMywgCisgICAgMjI4LCA0OSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjQxLCAyNTMsIDEwLCAKKyAgICAyLCAyMDMsIDIwNCwgMjQsIDIyNSwgOTksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyNCwgMzksIDEwLCAyLCAxOTksIDExMywgCisgICAgMTAsIDIsIDE5OSwgNCwgMTE5LCAxOTksIDQsIDkzLCAyMTIsIDAsIDEwLCAyLCAxOTksIDIsIDI0LCAxMjYsIDI0MSwgMCwgCisgICAgMjA2LCAxNTUsIDE0LCA3LCAyNTUsIDEzMSwgMTQsIDcsIDI1NSwgMTMwLCAxNCwgNywgMjU1LCAxMjksIDE0LCA3LCAyNTUsIAorICAgIDEyOCwgMTQsIDcsIDI1NSwgMTI3LCAxNCwgNywgMjU1LCAxMjYsIDE0LCA3LCAyNTUsIDEyNSwgMTQsIDcsIDI1NSwgMTI0LCAKKyAgICAxNCwgNywgMjU1LCAxMjMsIDE0LCA3LCAyNTUsIDEyMiwgMTQsIDcsIDI1NSwgMTIxLCAxNCwgNywgMjU1LCAxMjAsIDE0LCAKKyAgICA3LCAyNTUsIDExOSwgMTQsIDcsIDI1NSwgMTE3LCAxNCwgNywgMjU1LCAxMTYsIDE0LCA3LCAyNTUsIDExNSwgMTQsIDcsIAorICAgIDI1NSwgMTE0LCAxNCwgNywgMjU1LCAxMTMsIDE0LCA3LCAyNTUsIDExMiwgMTQsIDcsIDI1NSwgMTExLCAxNCwgNywgMjU1LCAKKyAgICAxMTAsIDE0LCA3LCAyNTUsIDEwOSwgMTQsIDcsIDI1NSwgMTA4LCAxNCwgNywgMjU1LCAxMDcsIDE0LCA3LCAyNTUsIDEwNiwgCisgICAgMTQsIDcsIDI1NSwgMTA1LCAxNCwgNywgMjU1LCAxMDQsIDE0LCA3LCAyNTUsIDEwMywgMTQsIDcsIDI1NSwgMTAyLCAxNCwgCisgICAgNywgMjU1LCAxMDEsIDE0LCA3LCAyNTUsIDEwMCwgMTQsIDcsIDI1NSwgOTgsIDE0LCA3LCAyNTUsIDk3LCAxNCwgNywgMjU1LCAKKyAgICA5NSwgMTQsIDcsIDI1NSwgOTQsIDE0LCA3LCAyNTUsIDkzLCAxNCwgNywgMjU1LCA5MiwgMTQsIDcsIDI1NSwgOTEsIDE0LCAKKyAgICA3LCAyNTUsIDkwLCAxNCwgNywgMjU1LCA4OSwgMTQsIDcsIDI1NSwgODgsIDE0LCA3LCAyNTUsIDg3LCAxNCwgNywgMjU1LCAKKyAgICA4NiwgMTQsIDcsIDI1NSwgODUsIDE0LCA3LCAyNTUsIDg0LCAxNCwgNywgMjU1LCA4MiwgMTQsIDcsIDI1NSwgODEsIDE0LCAKKyAgICA3LCAyNTUsIDgwLCAxNCwgNywgMjU1LCA3OCwgMTQsIDcsIDI1NSwgNzcsIDE0LCA3LCAyNTUsIDc2LCAxNCwgNywgMjU1LCAKKyAgICA3NSwgMTQsIDcsIDI1NSwgNzQsIDE0LCA3LCAyNTUsIDczLCAxNCwgNywgMjU1LCA3MiwgMTQsIDcsIDI1NSwgNzEsIDE0LCAKKyAgICA3LCAyNTUsIDY4LCAxNCwgNywgMjU1LCA2NywgMTQsIDcsIDI1NSwgNjYsIDE0LCA3LCAyNTUsIDY1LCAxNCwgNywgMjU1LCAKKyAgICA2NCwgMTQsIDcsIDI1NSwgNjMsIDE0LCA3LCAyNTUsIDYyLCAxNCwgNywgMjU1LCA2MSwgMTQsIDcsIDI1NSwgNjAsIDE0LCAKKyAgICA3LCAyNTUsIDU5LCAxNCwgNywgMjU1LCA1OCwgMTQsIDcsIDI1NSwgNTcsIDE0LCA3LCAyNTUsIDU2LCAxNCwgNywgMjU1LCAKKyAgICA1NSwgMTQsIDcsIDI1NSwgNTQsIDE0LCA3LCAyNTUsIDUzLCAxNCwgNywgMjU1LCA1MiwgMTQsIDcsIDI1NSwgNTEsIDE0LCAKKyAgICA3LCAyNTUsIDUwLCAxNCwgNywgMjU1LCA0OSwgMTQsIDcsIDI1NSwgNDUsIDE0LCA3LCAyNTUsIDQ0LCAxNCwgNywgMjU1LCAKKyAgICA0MywgMTQsIDcsIDI1NSwgNDIsIDE0LCA3LCAyNTAsIDEwMSwgMTQsIDcsIDI1MCwgOTksIDE0LCA3LCAyNTAsIDk3LCAxNCwgCisgICAgNywgMjUwLCA5NSwgMTQsIDcsIDI1MCwgOTMsIDE0LCA3LCAyNTAsIDkyLCAxNCwgNywgMjUwLCA5MCwgMTQsIDcsIDI1MCwgCisgICAgODgsIDE0LCA3LCAyNTAsIDg2LCAxNCwgNywgMjUwLCA4NCwgMTQsIDcsIDI0NywgMjE5LCAxNCwgNywgMjQ3LCAyMTgsIDE0LCAKKyAgICA3LCAyNDcsIDIxNywgMTQsIDcsIDI0NywgMjE2LCAxNCwgNywgMjQ3LCAyMTUsIDE0LCA3LCAyNDcsIDIxNCwgMTQsIDcsIAorICAgIDI0NywgMjEzLCAxNCwgNywgMjQ3LCAyMTIsIDE0LCA3LCAyNDcsIDIxMSwgMTQsIDcsIDI0NywgMjEwLCAxNCwgNywgMjQ3LCAKKyAgICAyMDksIDE0LCA3LCAyNDcsIDIwOCwgMTQsIDcsIDI0NywgMjA3LCAxNCwgNywgMjQ3LCAyMDYsIDE0LCA3LCAyNDcsIDIwNSwgCisgICAgMTQsIDcsIDI0NywgMjA0LCAxNCwgNywgMjQ3LCAyMDMsIDE0LCA3LCAyNDcsIDIwMiwgMTQsIDcsIDI0NywgMjAxLCAxNCwgCisgICAgNywgMjQ3LCAyMDAsIDE0LCA3LCAyNDcsIDE5OSwgMTQsIDcsIDI0NywgMTk4LCAxNCwgNywgMjQ3LCAxOTcsIDE0LCA3LCAKKyAgICAyNDcsIDE5NiwgMTQsIDcsIDI0NywgMTk1LCAxNCwgNywgMjQ3LCAxOTQsIDE0LCA3LCAyNDcsIDE5MywgMTQsIDcsIDI0NywgCisgICAgMTkyLCAxNCwgNywgMjQyLCAxNTIsIDE0LCA3LCAyNDIsIDE1MSwgMTQsIDcsIDI0MiwgMTUwLCAxNCwgNywgMjQyLCAxNDksIAorICAgIDE0LCA3LCAyNDIsIDE0OCwgMTQsIDcsIDI0MiwgMTQ3LCAxNCwgNywgMjQyLCAxNDYsIDE0LCA3LCAyNDIsIDE0NSwgMTQsIAorICAgIDcsIDI0MiwgMTQ0LCAxNCwgNywgMjQyLCAxNDMsIDE0LCA3LCAyNDIsIDE0MiwgMTQsIDcsIDI0MiwgMTQxLCAxNCwgNywgCisgICAgMjQyLCAxNDAsIDE0LCA3LCAyNDIsIDEzOSwgMTQsIDcsIDI0MiwgMTM4LCAxNCwgNywgMjQyLCAxMzcsIDE0LCA3LCAyNDIsIAorICAgIDEzNiwgMTQsIDcsIDI0MiwgMTM1LCAxNCwgNywgMjQyLCAxMzQsIDE0LCA3LCAyNDIsIDEzMywgMTQsIDcsIDI0MiwgMTMyLCAKKyAgICAxNCwgNywgMjQyLCAxMzEsIDE0LCA3LCAyNDIsIDEzMCwgMTQsIDcsIDI0MiwgMTI5LCAxNCwgNywgMjQyLCAxMjgsIDE0LCAKKyAgICA3LCAyNDIsIDEyNywgMTQsIDcsIDI0MiwgMTI2LCAxNCwgNywgMjQyLCAxMjUsIDE0LCA3LCAyNDIsIDEyNCwgMTQsIDcsIAorICAgIDI0MiwgMTIzLCAxNCwgNywgMjQyLCAxMjIsIDE0LCA3LCAyNDIsIDEyMSwgMTQsIDcsIDI0MiwgMTIwLCAxNCwgNywgMjQyLCAKKyAgICAxMTksIDE0LCA3LCAyNDIsIDExOCwgMTQsIDcsIDI0MiwgMTE3LCAxNCwgNywgMjQyLCAxMTYsIDE0LCA3LCAyNDIsIDExNSwgCisgICAgMTQsIDcsIDI0MiwgMTE0LCAxNCwgNywgMjQyLCAxMTMsIDE0LCA3LCAyNDIsIDExMiwgMTQsIDcsIDI0MiwgMTExLCAxNCwgCisgICAgNywgMjQyLCAxMTAsIDE0LCA3LCAyNDIsIDEwOSwgMTQsIDcsIDI0MiwgMTA4LCAxNCwgNywgMjQyLCAxMDcsIDE0LCA3LCAKKyAgICAyNDIsIDEwNiwgMTQsIDcsIDI0MiwgMTA1LCAxNCwgNywgMjQyLCAxMDQsIDE0LCA3LCAyNDIsIDEwMywgMTQsIDcsIDI0MiwgCisgICAgMTAyLCAxNCwgNywgMjQyLCAxMDEsIDE0LCA3LCAyNDIsIDEwMCwgMTQsIDcsIDI0MiwgOTksIDE0LCA3LCAyNDIsIDk4LCAKKyAgICAxNCwgNywgMjQyLCA5NywgMTQsIDcsIDI0MiwgOTYsIDE0LCA3LCAyNDIsIDk1LCAxNCwgNywgMjQyLCA5NCwgMTQsIDcsIAorICAgIDI0MiwgOTMsIDE0LCA3LCAyNDIsIDkyLCAxNCwgNywgMjQyLCA5MSwgMTQsIDcsIDI0MiwgOTAsIDE0LCA3LCAyNDIsIDg5LCAKKyAgICAxNCwgNywgMjQyLCA4OCwgMTQsIDcsIDI0MiwgODcsIDE0LCA3LCAyNDIsIDg2LCAxNCwgNywgMjQyLCA4NSwgMTQsIDcsIAorICAgIDI0MiwgODQsIDE0LCA3LCAyNDIsIDgzLCAxNCwgNywgMjQyLCA4MiwgMTQsIDcsIDI0MiwgODEsIDE0LCA3LCAyNDIsIDgwLCAKKyAgICAxNCwgNywgMjQyLCA3OSwgMTQsIDcsIDI0MiwgNzgsIDE0LCA3LCAyNDIsIDc3LCAxNCwgNywgMjQyLCA3NiwgMTQsIDcsIAorICAgIDI0MiwgNzUsIDE0LCA3LCAyNDIsIDc0LCAxNCwgNywgMjQyLCA3MywgMTQsIDcsIDI0MiwgNzIsIDE0LCA3LCAyNDIsIDcxLCAKKyAgICAxNCwgNywgMjQyLCA3MCwgMTQsIDcsIDI0MiwgNjksIDE0LCA3LCAyNDIsIDY4LCAxNCwgNywgMjQyLCA2NywgMTQsIDcsIAorICAgIDI0MiwgNjYsIDE0LCA3LCAyNDIsIDY1LCAxNCwgNywgMjQyLCA2NCwgMTQsIDcsIDI0MiwgNjMsIDE0LCA3LCAyNDIsIDYyLCAKKyAgICAxNCwgNywgMjQyLCA2MSwgMTQsIDcsIDIzOSwgNzMsIDE0LCA3LCAyMzksIDcyLCAxNCwgNywgMjM5LCA3MSwgMTQsIDcsIAorICAgIDIzOSwgNzAsIDE0LCA3LCAyMzksIDY5LCAxNCwgNywgMjM5LCA2OCwgMTQsIDcsIDIzOSwgNjcsIDE0LCA3LCAyMzksIDY2LCAKKyAgICAxNCwgNywgMjM5LCA2NSwgMTQsIDcsIDIzOSwgNjQsIDE0LCA3LCAyMzksIDYzLCAxNCwgNywgMjM5LCA2MiwgMTQsIDcsIAorICAgIDIzOSwgNjEsIDE0LCA3LCAyMzksIDYwLCAxNCwgNywgMjM5LCA1OSwgMTQsIDcsIDIzOSwgNTgsIDE0LCA3LCAyMzksIDU3LCAKKyAgICAxNCwgNywgMjM5LCA1NiwgMTQsIDcsIDIzOSwgNTUsIDE0LCA3LCAyMzksIDU0LCAxNCwgNywgMjM5LCA1MywgMTQsIDcsIAorICAgIDIzOSwgNTIsIDE0LCA3LCAyMzksIDUxLCAxNCwgNywgMjM5LCA1MCwgMTQsIDcsIDIzOSwgNDksIDE0LCA3LCAyMzksIDQ4LCAKKyAgICAxNCwgNywgMjM5LCA0NywgMTQsIDcsIDIzOSwgNDYsIDE0LCA3LCAyMzksIDQ1LCAxNCwgNywgMjM5LCA0NCwgMTQsIDcsIAorICAgIDIzOSwgNDMsIDE0LCA3LCAyMzksIDQyLCAxNCwgNywgMjM5LCA0MSwgMTQsIDcsIDIzOSwgNDAsIDE0LCA3LCAyMzksIDM5LCAKKyAgICAxNCwgNywgMjM5LCAzOCwgMTQsIDcsIDIzOSwgMzcsIDE0LCA3LCAyMzksIDM2LCAxNCwgNywgMjM5LCAzNSwgMTQsIDcsIAorICAgIDIzOSwgMzQsIDE0LCA3LCAyMzksIDMzLCAxNCwgNywgMjM5LCAzMiwgMTQsIDcsIDIzOSwgMzEsIDE0LCA3LCAyMzksIDMwLCAKKyAgICAxNCwgNywgMjM4LCA0LCAxNCwgNywgMjM4LCAzLCAxNCwgNywgMjM4LCAyLCAxNCwgNywgMjM4LCAxLCAxNCwgNywgMjM4LCAKKyAgICAwLCAxNCwgNywgMjM3LCAyNTUsIDE0LCA3LCAyMzcsIDI1NCwgMTQsIDcsIDIzNywgMjUzLCAxNCwgNywgMjM3LCAyNTIsIAorICAgIDE0LCA3LCAyMzcsIDI1MSwgMTQsIDcsIDIzNywgMjUwLCAxNCwgNywgMjM3LCAyNDksIDE0LCA3LCAyMzcsIDI0OCwgMTQsIAorICAgIDcsIDIzNywgMjQ3LCAxNCwgNywgMjM3LCAyNDYsIDE0LCA3LCAyMzcsIDI0NSwgMTQsIDcsIDIzNywgMjQ0LCAxNCwgNywgCisgICAgMjM3LCAyNDMsIDE0LCA3LCAyMzcsIDI0MiwgMTQsIDcsIDIzNywgMjQxLCAxNCwgNywgMjM3LCAyNDAsIDE0LCA3LCAyMzcsIAorICAgIDIzOSwgMTQsIDcsIDIzNywgMjM4LCAxNCwgNywgMjM3LCAyMzcsIDE0LCA3LCAyMzcsIDIzNiwgMTQsIDcsIDIzNywgMjM1LCAKKyAgICAxNCwgNywgMjM3LCAyMzQsIDE0LCA3LCAyMzcsIDIzMywgMTQsIDcsIDIzNywgMjMyLCAxNCwgNywgMjM3LCAyMzEsIDE0LCAKKyAgICA3LCAyMzcsIDIzMCwgMTQsIDcsIDIzNywgMjI5LCAxNCwgNywgMjM3LCAyMjgsIDE0LCA3LCAyMzcsIDIyNywgMTQsIDcsIAorICAgIDIzNywgMjI2LCAxNCwgNywgMjM3LCAyMjUsIDE0LCA3LCAyMzcsIDIyNCwgMTQsIDcsIDIzNywgMjIzLCAxNCwgNywgMjM3LCAKKyAgICAyMjIsIDE0LCA3LCAyMzcsIDIyMSwgMTQsIDcsIDIzNywgMjIwLCAxNCwgNywgMjM3LCAyMTksIDE0LCA3LCAyMzcsIDIxOCwgCisgICAgMTQsIDcsIDIzNywgMjE3LCAxNCwgNywgMjM3LCAyMTYsIDE0LCA3LCAyMzcsIDIxNSwgMTQsIDcsIDIzNywgMjE0LCAxNCwgCisgICAgNywgMjM3LCAyMTMsIDE0LCA3LCAyMzcsIDIxMiwgMTQsIDcsIDIzNywgMjExLCAxNCwgNywgMjM3LCAyMTAsIDE0LCA3LCAKKyAgICAyMzcsIDIwOSwgMTQsIDcsIDIzNywgMjA4LCAxNCwgNywgMjM3LCAyMDcsIDE0LCA3LCAyMzcsIDIwNiwgMTQsIDcsIDIzNywgCisgICAgMjA1LCAxNCwgNywgMjM3LCAyMDQsIDE0LCA3LCAyMzcsIDIwMywgMTQsIDcsIDIzNywgMjAyLCAxNCwgNywgMjM3LCAyMDEsIAorICAgIDE0LCA3LCAyMzcsIDIwMCwgMTQsIDcsIDIzNywgMTk5LCAxNCwgNywgMjM3LCAxOTgsIDE0LCA3LCAyMzcsIDE5NywgMTQsIAorICAgIDcsIDIzNywgMTk2LCAxNCwgNywgMjM2LCAxNTUsIDE0LCA3LCAyMzYsIDE1NCwgMTQsIDcsIDIzNiwgMTUzLCAxNCwgNywgCisgICAgMjM2LCAxNTIsIDE0LCA3LCAyMzYsIDE1MSwgMTQsIDcsIDIzNiwgMTUwLCAxNCwgNywgMjM2LCAxNDksIDE0LCA3LCAyMzYsIAorICAgIDE0OCwgMTQsIDcsIDIzNiwgMTQ3LCAxNCwgNywgMjM2LCAxNDYsIDE0LCA3LCAyMzYsIDE0NSwgMTQsIDcsIDIzNiwgMTQ0LCAKKyAgICAxNCwgNywgMjM2LCAxNDMsIDE0LCA3LCAyMzYsIDE0MiwgMTQsIDcsIDIzNiwgMTQxLCAxNCwgNywgMjM2LCAxNDAsIDE0LCAKKyAgICA3LCAyMzYsIDEzOSwgMTQsIDcsIDIzNiwgMTM4LCAxNCwgNywgMjM2LCAxMzcsIDE0LCA3LCAyMzYsIDEzNiwgMTQsIDcsIAorICAgIDIzNiwgMTM1LCAxNCwgNywgMjM2LCAxMzQsIDE0LCA3LCAyMzYsIDEzMywgMTQsIDcsIDIzNiwgMTMyLCAxNCwgNywgMjM2LCAKKyAgICAxMzEsIDE0LCA3LCAyMzYsIDEzMCwgMTQsIDcsIDIzNiwgMTI5LCAxNCwgNywgMjM2LCAxMjgsIDE0LCA3LCAyMzYsIDEyNywgCisgICAgMTQsIDcsIDIzNiwgMTI2LCAxNCwgNywgMjM2LCAxMjUsIDE0LCA3LCAyMzYsIDEyNCwgMTQsIDcsIDIzNiwgMTIzLCAxNCwgCisgICAgNywgMjM2LCAxMjIsIDE0LCA3LCAyMzYsIDEyMSwgMTQsIDcsIDIzNiwgMTIwLCAxNCwgNywgMjM2LCAxMTksIDE0LCA3LCAKKyAgICAyMzYsIDExOCwgMTQsIDcsIDIzNiwgMTE3LCAxNCwgNywgMjM2LCAxMTYsIDE0LCA3LCAyMzYsIDExNSwgMTQsIDcsIDIzNiwgCisgICAgMTE0LCAxNCwgNywgMjM2LCAxMTMsIDE0LCA3LCAyMzYsIDExMiwgMTQsIDcsIDIzNiwgMTExLCAxNCwgNywgMjM2LCAxMTAsIAorICAgIDE0LCA3LCAyMzYsIDEwOSwgMTQsIDcsIDIzNiwgMTA4LCAxNCwgNywgMjM2LCAxMDcsIDE0LCA3LCAyMzYsIDEwNiwgMTQsIAorICAgIDcsIDIzNiwgMTA1LCAxNCwgNywgMjM2LCAxMDQsIDE0LCA3LCAyMzYsIDEwMywgMTQsIDcsIDIzNiwgMTAyLCAxNCwgNywgCisgICAgMjM2LCAxMDEsIDE0LCA3LCAyMzYsIDEwMCwgMTQsIDcsIDIzNiwgOTksIDE0LCA3LCAyMzYsIDk4LCAxNCwgNywgMjM2LCAKKyAgICA5NywgMTQsIDcsIDIzNiwgOTYsIDE0LCA3LCAyMzYsIDk1LCAxNCwgNywgMjM2LCA5NCwgMTQsIDcsIDIzNiwgOTMsIDE0LCAKKyAgICA3LCAyMzYsIDkyLCAxNCwgNywgMjM0LCAyNDUsIDE0LCA3LCAyMzQsIDI0NCwgMTQsIDcsIDIzNCwgMjQzLCAxNCwgNywgCisgICAgMjM0LCAyNDIsIDE0LCA3LCAyMzQsIDI0MSwgMTQsIDcsIDIzNCwgMjQwLCAxNCwgNywgMjM0LCAyMzksIDE0LCA3LCAyMzQsIAorICAgIDIzOCwgMTQsIDcsIDIzNCwgMjM3LCAxNCwgNywgMjMzLCAzLCAxNCwgNywgMjMzLCAyLCAxNCwgNywgMjMzLCAxLCAxNCwgNywgCisgICAgMjMzLCAwLCAxNCwgNywgMjMyLCAyNTUsIDE0LCA3LCAyMzIsIDI1NCwgMTQsIDcsIDIzMiwgMjUzLCAxNCwgNywgMjMyLCAKKyAgICAyNTIsIDE0LCA3LCAyMzIsIDI1MSwgMTQsIDcsIDIzMiwgMjUwLCAxNCwgNywgMjMyLCAyNDksIDE0LCA3LCAyMzIsIDI0OCwgCisgICAgMTQsIDcsIDIzMiwgMjQ3LCAxNCwgNywgMjMyLCAyNDYsIDE0LCA3LCAyMzIsIDI0NSwgMTQsIDcsIDIzMiwgMjQ0LCAxNCwgCisgICAgNywgMjMyLCAyNDMsIDE0LCA3LCAyMzIsIDI0MiwgMTQsIDcsIDIzMiwgMjQxLCAxNCwgNywgMjI3LCAxMTcsIDE0LCA3LCAKKyAgICAyMjcsIDExNiwgMTQsIDcsIDIyNywgMTE1LCAxNCwgNywgMjI3LCAxMTQsIDE0LCA3LCAyMjcsIDExMywgMTQsIDcsIDIyNywgCisgICAgMTEyLCAxNCwgNywgMjI3LCAxMTEsIDE0LCA3LCAyMjcsIDExMCwgMTQsIDcsIDIyNSwgMTkwLCAxNCwgNywgMjI1LCAxODksIAorICAgIDE0LCA3LCAyMjUsIDE4OCwgMTQsIDcsIDIyNSwgMTg3LCAxNCwgNywgMjI1LCAxODYsIDE0LCA3LCAyMjUsIDE4NSwgMTQsIAorICAgIDcsIDIyNSwgMTg0LCAxNCwgNywgMjI1LCAxODMsIDE0LCA3LCAyMjUsIDE4MiwgMTQsIDcsIDIyNSwgMTgxLCAxNCwgNywgCisgICAgMjIzLCAyNDEsIDE0LCA3LCAyMjMsIDI0MCwgMTQsIDcsIDIyMywgMjM5LCAxNCwgNywgMjIzLCAyMzcsIDE0LCA3LCAyMjMsIAorICAgIDIzNSwgMTQsIDcsIDIyMywgMjM0LCAxNCwgNywgMjIzLCAyMzIsIDE0LCA3LCAyMjMsIDIzMCwgMTQsIDcsIDIyMywgMjI4LCAKKyAgICAxNCwgNywgMjIzLCAyMjYsIDE0LCA3LCAyMjMsIDIyNCwgMTQsIDcsIDIyMywgMjIyLCAxNCwgNywgMjIzLCAyMjAsIDE0LCAKKyAgICA3LCAyMjMsIDIxOSwgMTQsIDcsIDIyMywgMjE3LCAxNCwgNywgMjIzLCAyMTUsIDE0LCA3LCAyMjMsIDIxNCwgMTQsIDcsIAorICAgIDIyMywgMjEzLCAxNCwgNywgMjIzLCAyMTIsIDE0LCA3LCAyMjMsIDIxMSwgMTQsIDcsIDIyMywgMjEwLCAxNCwgNywgMjIzLCAKKyAgICAyMDksIDE0LCA3LCAyMjMsIDIwOCwgMTQsIDcsIDIyMywgMjA3LCAxNCwgNywgMjIzLCAyMDUsIDE0LCA3LCAyMjMsIDIwMywgCisgICAgMTQsIDcsIDIyMywgMjAxLCAxNCwgNywgMjIzLCAyMDAsIDE0LCA3LCAyMjMsIDE5OCwgMTQsIDcsIDIyMywgMTk3LCAxNCwgCisgICAgNywgMjIzLCAxOTUsIDE0LCA3LCAyMjMsIDE5NCwgMTQsIDcsIDIyMywgMTkyLCAxNCwgNywgMjIzLCAxOTAsIDE0LCA3LCAKKyAgICAyMjMsIDE4OCwgMTQsIDcsIDIyMywgMTg2LCAxNCwgNywgMjIzLCAxODQsIDE0LCA3LCAyMjMsIDE4MywgMTQsIDcsIDIyMywgCisgICAgMTgxLCAxNCwgNywgMjIzLCAxNzksIDE0LCA3LCAyMjMsIDE3OCwgMTQsIDcsIDIyMywgMTc2LCAxNCwgNywgMjIzLCAxNzQsIAorICAgIDE0LCA3LCAyMjMsIDE3MiwgMTQsIDcsIDIyMywgMTcwLCAxNCwgNywgMjIzLCAxNjksIDE0LCA3LCAyMjMsIDE2NywgMTQsIAorICAgIDcsIDIyMywgMTY1LCAxNCwgNywgMjIzLCAxNjMsIDE0LCA3LCAyMjMsIDE2MiwgMTQsIDcsIDIyMywgMTYwLCAxNCwgNywgCisgICAgMjIzLCAxNTgsIDE0LCA3LCAyMjMsIDE1NywgMTQsIDcsIDIyMywgMTU2LCAxNCwgNywgMjIzLCAxNTQsIDE0LCA3LCAyMjMsIAorICAgIDE1MiwgMTQsIDcsIDIyMywgMTUwLCAxNCwgNywgMjIzLCAxNDgsIDE0LCA3LCAyMjMsIDE0NiwgMTQsIDcsIDIyMywgMTQ0LCAKKyAgICAxNCwgNywgMjIzLCAxNDIsIDE0LCA3LCAyMjMsIDE0MSwgMTQsIDcsIDIyMywgMTM5LCAxNCwgNywgMjIzLCAxMzcsIDE0LCAKKyAgICA3LCAyMjMsIDEzNSwgMTQsIDcsIDIyMywgMTMzLCAxNCwgNywgMjIwLCAyMTEsIDE0LCA3LCAyMjAsIDIxMCwgMTQsIDcsIAorICAgIDIyMCwgMjA5LCAxNCwgNywgMjIwLCAyMDgsIDE0LCA3LCAyMjAsIDIwNywgMTQsIDcsIDIyMCwgMjA2LCAxNCwgNywgMjIwLCAKKyAgICAyMDUsIDE0LCA3LCAyMjAsIDIwNCwgMTQsIDcsIDIyMCwgMjAzLCAxNCwgNywgMjIwLCAyMDIsIDE0LCA3LCAyMjAsIDIwMSwgCisgICAgMTQsIDcsIDIyMCwgMjAwLCAxNCwgNywgMjIwLCAxOTksIDE0LCA3LCAyMjAsIDE5OCwgMTQsIDcsIDIyMCwgMTk3LCAxNCwgCisgICAgNywgMjIwLCAxOTYsIDE0LCA3LCAyMjAsIDE5NSwgMTQsIDcsIDIyMCwgMTk0LCAxNCwgNywgMjIwLCAxOTMsIDE0LCA3LCAKKyAgICAyMjAsIDE5MiwgMTQsIDcsIDIyMCwgMTkxLCAxNCwgNywgMjIwLCAxOTAsIDE0LCA3LCAyMjAsIDE4OSwgMTQsIDcsIDIyMCwgCisgICAgMTg4LCAxNCwgNywgMjIwLCAxODcsIDE0LCA3LCAyMjAsIDE4NiwgMTQsIDcsIDIyMCwgMTg1LCAxNCwgNywgMjIwLCAxODQsIAorICAgIDE0LCA3LCAyMjAsIDE4MywgMTQsIDcsIDIyMCwgMTgyLCAxNCwgNywgMjIwLCAxODEsIDE0LCA3LCAyMjAsIDE4MCwgMTQsIAorICAgIDcsIDIyMCwgMTc5LCAxNCwgNywgMjIwLCAxNzgsIDE0LCA3LCAyMjAsIDE3NywgMTQsIDcsIDIyMCwgMTc2LCAxNCwgNywgCisgICAgMjIwLCAxNzUsIDE0LCA3LCAyMjAsIDE3NCwgMTQsIDcsIDIyMCwgMTczLCAxNCwgNywgMjIwLCAxNzIsIDE0LCA3LCAyMjAsIAorICAgIDE3MSwgMTQsIDcsIDIyMCwgMTcwLCAxNCwgNywgMjIwLCAxNjksIDE0LCA3LCAyMjAsIDE2OCwgMTQsIDcsIDIyMCwgMTY3LCAKKyAgICAxNCwgNywgMjIwLCAxNjYsIDE0LCA3LCAyMjAsIDE2NSwgMTQsIDcsIDIyMCwgMTY0LCAxNCwgNywgMjIwLCAxNjMsIDE0LCAKKyAgICA3LCAyMTksIDQ2LCAxNCwgNywgMjE5LCA0NSwgMTQsIDcsIDIxOSwgNDQsIDE0LCA3LCAyMTksIDQzLCAxNCwgNywgMjE5LCAKKyAgICA0MiwgMTQsIDcsIDIxOSwgNDEsIDE0LCA3LCAyMTksIDQwLCAxNCwgNywgMjE5LCAzOSwgMTQsIDcsIDIxOSwgMzgsIDE0LCAKKyAgICA3LCAyMTksIDM3LCAxNCwgNywgMjE5LCAzNiwgMTQsIDcsIDIxOSwgMzUsIDE0LCA3LCAyMTksIDM0LCAxNCwgNywgMjE5LCAKKyAgICAzMywgMTQsIDcsIDIxOSwgMzIsIDE0LCA3LCAyMTksIDMxLCAxNCwgNywgMjE5LCAzMCwgMTQsIDcsIDIxOSwgMjksIDE0LCAKKyAgICA3LCAyMTksIDI4LCAxNCwgNywgMjE5LCAyNywgMTQsIDcsIDIxOSwgMjYsIDE0LCA3LCAyMTksIDI1LCAxNCwgNywgMjE4LCAKKyAgICAxMzIsIDE0LCA3LCAyMTgsIDEzMSwgMTQsIDcsIDIxOCwgMTMwLCAxNCwgNywgMjE4LCAxMjksIDE0LCA3LCAyMTgsIDEyOCwgCisgICAgMTQsIDcsIDIxOCwgMTI3LCAxNCwgNywgMjE4LCAxMjYsIDE0LCA3LCAyMTgsIDEyNSwgMTQsIDcsIDIxOCwgMTI0LCAxNCwgCisgICAgNywgMjE4LCAxMjMsIDE0LCA3LCAyMTgsIDEyMiwgMTQsIDcsIDIxOCwgMTIxLCAxNCwgNywgMjE4LCAxMjAsIDE0LCA3LCAKKyAgICAyMTgsIDExOSwgMTQsIDcsIDIxOCwgMTE4LCAxNCwgNywgMjE4LCAxMTcsIDE0LCA3LCAyMTgsIDExNiwgMTQsIDcsIDIxOCwgCisgICAgMTE1LCAxNCwgNywgMjE4LCAxMTQsIDE0LCA3LCAyMTgsIDExMywgMTQsIDcsIDIxOCwgMTEyLCAxNCwgNywgMjE4LCAxMTEsIAorICAgIDE0LCA3LCAyMTgsIDExMCwgMTQsIDcsIDIxOCwgMTA5LCAxNCwgNywgMjE4LCAxMDgsIDE0LCA3LCAyMTgsIDEwNywgMTQsIAorICAgIDcsIDIxNywgMjIyLCAxNCwgNywgMjE3LCAyMjEsIDE0LCA3LCAyMTcsIDIyMCwgMTQsIDcsIDIxNywgMjE5LCAxNCwgNywgCisgICAgMjE3LCAyMTgsIDE0LCA3LCAyMTcsIDIxNywgMTQsIDcsIDIxNywgMjE2LCAxNCwgNywgMjE3LCAyMTUsIDE0LCA3LCAyMTcsIAorICAgIDIxNCwgMTQsIDcsIDIxNywgMjEzLCAxNCwgNywgMjE3LCAyMTIsIDE0LCA3LCAyMTcsIDIxMSwgMTQsIDcsIDIxNywgMjEwLCAKKyAgICAxNCwgNywgMjE3LCAyMDksIDE0LCA3LCAyMTcsIDIwOCwgMTQsIDcsIDIxNywgMjA3LCAxNCwgNywgMjE3LCAyMDYsIDE0LCAKKyAgICA3LCAyMTcsIDIwNSwgMTQsIDcsIDIxNywgMjA0LCAxNCwgNywgMjE3LCAyMDMsIDE0LCA3LCAyMTcsIDIwMiwgMTQsIDcsIAorICAgIDIxNywgMjAxLCAxNCwgNywgMjE3LCAyMDAsIDE0LCA3LCAyMTcsIDE5OSwgMTQsIDcsIDIxNywgMTk4LCAxNCwgNywgMjE3LCAKKyAgICAxOTcsIDE0LCA3LCAyMTcsIDE5NiwgMTQsIDcsIDIxNywgMTk1LCAxNCwgNywgMjE3LCAxOTQsIDE0LCA3LCAyMTcsIDE5MywgCisgICAgMTQsIDcsIDIxNywgMTkyLCAxNCwgNywgMjE3LCAxOTEsIDE0LCA3LCAyMTcsIDE5MCwgMTQsIDcsIDIxNywgMTg5LCAxNCwgCisgICAgNywgMjE3LCAxODgsIDE0LCA3LCAyMTcsIDE4NywgMTQsIDcsIDIxNywgMTg2LCAxNCwgNywgMjE3LCAxODUsIDE0LCA3LCAKKyAgICAyMTcsIDE4NCwgMTQsIDcsIDIxNywgMTgzLCAxNCwgNywgMjE3LCAxODIsIDE0LCA3LCAyMTcsIDE4MSwgMTQsIDcsIDIxNywgCisgICAgMTgwLCAxNCwgNywgMjE3LCAxNzksIDE0LCA3LCAyMTcsIDE3OCwgMTQsIDcsIDIxNywgMTc3LCAxNCwgNywgMjE3LCAxNzYsIAorICAgIDE0LCA3LCAyMTcsIDE3NSwgMTQsIDcsIDIxNywgMTc0LCAxNCwgNywgMjE3LCAxNzMsIDE0LCA3LCAyMTcsIDE3MiwgMTQsIAorICAgIDcsIDIxNywgMTcxLCAxNCwgNywgMjE3LCAxNzAsIDE0LCA3LCAyMTcsIDE2OSwgMTQsIDcsIDIxNywgMTY4LCAxNCwgNywgCisgICAgMjE3LCAxNjcsIDE0LCA3LCAyMTcsIDE2NiwgMTQsIDcsIDIxNywgMTY1LCAxNCwgNywgMjE3LCAxNjQsIDE0LCA3LCAyMTcsIAorICAgIDE2MywgMTQsIDcsIDIxNywgMTYyLCAxNCwgNywgMjE3LCAxNjEsIDE0LCA3LCAyMTcsIDE2MCwgMTQsIDcsIDIxNywgMTU5LCAKKyAgICAxNCwgNywgMjE3LCAxNTgsIDE0LCA3LCAyMTcsIDE1NywgMTQsIDcsIDIxNywgMTU2LCAxNCwgNywgMjE3LCAxNTUsIDE0LCAKKyAgICA3LCAyMTcsIDE1NCwgMTQsIDcsIDIxNywgMTUzLCAxNCwgNywgMjE3LCAxNTIsIDE0LCA3LCAyMTcsIDE1MSwgMTQsIDcsIAorICAgIDIxNywgMTUwLCAxNCwgNywgMjE3LCAxNDksIDE0LCA3LCAyMTcsIDE0OCwgMTQsIDcsIDIxNiwgMjI1LCAxNCwgNywgMjE2LCAKKyAgICAyMjQsIDE0LCA3LCAyMTYsIDIyMywgMTQsIDcsIDIxNiwgMjIyLCAxNCwgNywgMjE2LCAyMjEsIDE0LCA3LCAyMTYsIDIyMCwgCisgICAgMTQsIDcsIDIxNiwgMjE5LCAxNCwgNywgMjE2LCAyMTgsIDE0LCA3LCAyMTYsIDIxNywgMTQsIDcsIDIxNiwgMjE2LCAxNCwgCisgICAgNywgMjE2LCAyMTUsIDE0LCA3LCAyMTYsIDIxNCwgMTQsIDcsIDIxNiwgMjEzLCAxNCwgNywgMjE0LCAxNjYsIDE0LCA3LCAKKyAgICAyMTQsIDE2NSwgMTQsIDcsIDIxNCwgMTY0LCAxNCwgNywgMjE0LCAxNjMsIDE0LCA3LCAyMTQsIDE2MiwgMTQsIDcsIDIxNCwgCisgICAgMTYxLCAxNCwgNywgMjE0LCAxNjAsIDE0LCA3LCAyMTQsIDMxLCAxNCwgNywgMjE0LCAzMCwgMTQsIDcsIDIxNCwgMjksIDE0LCAKKyAgICA3LCAyMTQsIDI4LCAxNCwgNywgMjE0LCAyNywgMTQsIDcsIDIxNCwgMjYsIDE0LCA3LCAyMTQsIDI1LCAxNCwgNywgMjE0LCAKKyAgICAyNCwgMTQsIDcsIDIxNCwgMjMsIDE0LCA3LCAyMTQsIDIyLCAxNCwgNywgMjE0LCAyMSwgMTQsIDcsIDIxNCwgMjAsIDE0LCAKKyAgICA3LCAyMTQsIDE5LCAxNCwgNywgMjE0LCAxOCwgMTQsIDcsIDIxNCwgMTcsIDE0LCA3LCAyMTQsIDE2LCAxNCwgNywgMjE0LCAKKyAgICAxNSwgMTQsIDcsIDIxNCwgMTQsIDE0LCA3LCAyMTQsIDEzLCAxNCwgNywgMjE0LCAxMiwgMTQsIDcsIDIxNCwgMTEsIDE0LCAKKyAgICA3LCAyMTQsIDEwLCAxNCwgNywgMjE0LCA5LCAxNCwgNywgMjE0LCA4LCAxNCwgNywgMjE0LCA3LCAxNCwgNywgMjE0LCA2LCAKKyAgICAxNCwgNywgMjE0LCA1LCAxNCwgNywgMjE0LCA0LCAxNCwgNywgMjE0LCAzLCAxNCwgNywgMjE0LCAyLCAxNCwgNywgMjE0LCAKKyAgICAxLCAxNCwgNywgMjE0LCAwLCAxNCwgNywgMjEzLCAyNTUsIDE0LCA3LCAyMTMsIDI1NCwgMTQsIDcsIDIxMiwgMTE5LCAxNCwgCisgICAgNywgMjEyLCAxMTgsIDE0LCA3LCAyMTIsIDExNywgMTQsIDcsIDIxMiwgMTE2LCAxNCwgNywgMjEyLCAxMTUsIDE0LCA3LCAKKyAgICAyMTIsIDExNCwgMTQsIDcsIDIxMiwgMTEzLCAxNCwgNywgMjEyLCAxMTIsIDE0LCA3LCAyMTIsIDExMSwgMTQsIDcsIDIxMiwgCisgICAgMTEwLCAxNCwgNywgMjEyLCAxMDksIDE0LCA3LCAyMTIsIDEwOCwgMTQsIDcsIDIxMiwgMTA3LCAxNCwgNywgMjEyLCAxMDYsIAorICAgIDE0LCA3LCAyMTIsIDEwNSwgMTQsIDcsIDIxMiwgMTA0LCAxNCwgNywgMjEyLCAxMDMsIDE0LCA3LCAyMTIsIDEwMiwgMTQsIAorICAgIDcsIDIxMiwgMTAxLCAxNCwgNywgMjEyLCAxMDAsIDE0LCA3LCAyMTIsIDk5LCAxNCwgNywgMjEyLCA5OCwgMTQsIDcsIDIxMiwgCisgICAgOTcsIDE0LCA3LCAyMTIsIDk2LCAxNCwgNywgMjEyLCA5NSwgMTQsIDcsIDIxMiwgOTQsIDE0LCA3LCAyMTIsIDkzLCAxNCwgCisgICAgNywgMjEyLCA5MiwgMTQsIDcsIDIxMiwgOTEsIDE0LCA3LCAyMTIsIDkwLCAxNCwgNywgMjEyLCA4OSwgMTQsIDcsIDIxMiwgCisgICAgODgsIDE0LCA3LCAyMTIsIDg3LCAxNCwgNywgMjEyLCA4NiwgMTQsIDcsIDIxMiwgODUsIDE0LCA3LCAyMTIsIDg0LCAxNCwgCisgICAgNywgMjEyLCA4MywgMTQsIDcsIDIxMiwgODIsIDE0LCA3LCAyMTIsIDgxLCAxNCwgNywgMjEyLCA4MCwgMTQsIDcsIDIxMiwgCisgICAgNzksIDE0LCA3LCAyMTIsIDc4LCAxNCwgNywgMjEyLCA3NywgMTQsIDcsIDIxMiwgNzYsIDE0LCA3LCAyMTIsIDc1LCAxNCwgCisgICAgNywgMjEyLCA3NCwgMTQsIDcsIDIxMiwgNzMsIDE0LCA3LCAyMTIsIDcyLCAxNCwgNywgMjEyLCA3MSwgMTQsIDcsIDIxMiwgCisgICAgNzAsIDE0LCA3LCAyMTIsIDY5LCAxNCwgNywgMjEyLCA2OCwgMTQsIDcsIDIxMiwgNjcsIDE0LCA3LCAyMTIsIDY2LCAxNCwgCisgICAgNywgMjA3LCA4MSwgMTQsIDcsIDIwNywgODAsIDE0LCA3LCAyMDcsIDc5LCAxNCwgNywgMjA3LCA3OCwgMTQsIDcsIDIwNywgCisgICAgNzcsIDE0LCA3LCAyMDcsIDc2LCAxNCwgNywgMjA3LCA3NSwgMTQsIDcsIDIwNywgNzQsIDE0LCA3LCAyMDcsIDczLCAxNCwgCisgICAgNywgMjA3LCA3MiwgMTQsIDcsIDIwNywgNzEsIDE0LCA3LCAyMDcsIDcwLCAxNCwgNywgMjA3LCA2OSwgMTQsIDcsIDIwNywgCisgICAgNjgsIDE0LCA3LCAyMDcsIDY3LCAxNCwgNywgMjA3LCA2NiwgMTQsIDcsIDIwNywgNjUsIDE0LCA3LCAyMDcsIDY0LCAxNCwgCisgICAgNywgMjA3LCA2MywgMTQsIDcsIDIwNywgNjIsIDE0LCA3LCAyMDcsIDYxLCAxNCwgNywgMjA3LCA2MCwgMTQsIDcsIDIwNywgCisgICAgNTksIDE0LCA3LCAyMDcsIDU4LCAxNCwgNywgMjA3LCA1NywgMTQsIDcsIDIwNywgNTYsIDE0LCA3LCAyMDcsIDU1LCAxNCwgCisgICAgNywgMjA3LCA1NCwgMTQsIDcsIDIwNywgNTMsIDE0LCA3LCAyMDcsIDUyLCAxNCwgNywgMjA3LCA1MSwgMTQsIDcsIDIwNywgCisgICAgNTAsIDE0LCA3LCAyMDcsIDQ5LCAxNCwgNywgMjA3LCA0OCwgMTQsIDcsIDIwNywgNDcsIDE0LCA3LCAyMDcsIDQ2LCAxNCwgCisgICAgNywgMjA3LCA0NSwgMTQsIDcsIDIwNywgNDQsIDE0LCA3LCAyMDcsIDQzLCAxNCwgNywgMjA3LCA0MiwgMTQsIDcsIDIwNywgCisgICAgNDEsIDE0LCA3LCAyMDcsIDQwLCAxNCwgNywgMjA3LCAzOSwgMTQsIDcsIDIwNywgMzgsIDE0LCA3LCAyMDQsIDk1LCAxNCwgCisgICAgNywgMjA0LCA5NCwgMTQsIDcsIDIwNCwgOTMsIDE0LCA3LCAyMDQsIDkyLCAxNCwgNywgMjA0LCA5MSwgMTQsIDcsIDIwNCwgCisgICAgOTAsIDE0LCA3LCAyMDQsIDg5LCAxNCwgNywgMjA0LCA4OCwgMTQsIDcsIDIwNCwgODcsIDE0LCA3LCAyMDQsIDg2LCAxNCwgCisgICAgNywgMjA0LCA4NSwgMTQsIDcsIDIwNCwgODQsIDE0LCA3LCAyMDQsIDgzLCAxNCwgNywgMjA0LCA4MiwgMTQsIDcsIDIwNCwgCisgICAgODEsIDE0LCA3LCAyMDQsIDgwLCAxNCwgNywgMjA0LCA3OSwgMTQsIDcsIDIwNCwgNzgsIDE0LCA3LCAyMDQsIDc3LCAxNCwgCisgICAgNywgMjA0LCA3NiwgMTQsIDcsIDIwNCwgNzUsIDE0LCA3LCAyMDQsIDc0LCAxNCwgNywgMjA0LCA3MywgMTQsIDcsIDIwNCwgCisgICAgNzIsIDE0LCA3LCAyMDQsIDcxLCAxNCwgNywgMjA0LCA3MCwgMTQsIDcsIDIwNCwgNjksIDE0LCA3LCAyMDQsIDY4LCAxNCwgCisgICAgNywgMjA0LCA2NywgMTQsIDcsIDIwNCwgNjYsIDE0LCA3LCAyMDQsIDY1LCAxNCwgNywgMjA0LCA2NCwgMTQsIDcsIDIwNCwgCisgICAgNjMsIDE0LCA3LCAyMDQsIDYyLCAxNCwgNywgMjA0LCA2MSwgMTQsIDcsIDIwNCwgNjAsIDE0LCA3LCAyMDQsIDU5LCAxNCwgCisgICAgNywgMjA0LCA1OCwgMTQsIDcsIDIwNCwgNTcsIDE0LCA3LCAyMDQsIDU2LCAxNCwgNywgMjA0LCA1NSwgMTQsIDcsIDIwNCwgCisgICAgNTQsIDE0LCA3LCAyMDQsIDUzLCAxNCwgNywgMjA0LCA1MiwgMTQsIDcsIDIwNCwgNTEsIDE0LCA3LCAyMDQsIDUwLCAxNCwgCisgICAgNywgMjA0LCA0OSwgMTQsIDcsIDIwMywgMTY3LCAxNCwgNywgMjAzLCAxNjYsIDE0LCA3LCAyMDMsIDE2NSwgMTQsIDcsIAorICAgIDIwMywgMTY0LCAxNCwgNywgMjAzLCAxNjMsIDE0LCA3LCAyMDMsIDE2MiwgMTQsIDcsIDIwMywgMTYxLCAxNCwgNywgMjAzLCAKKyAgICAxNjAsIDE0LCA3LCAyMDMsIDE1OSwgMTQsIDcsIDIwMywgMTU4LCAxNCwgNywgMjAzLCAxNTcsIDE0LCA3LCAyMDMsIDE1NiwgCisgICAgMTQsIDcsIDIwMywgMTU1LCAxNCwgNywgMjAzLCAxNTQsIDE0LCA3LCAyMDMsIDE1MywgMTQsIDcsIDIwMywgMTUyLCAxNCwgCisgICAgNywgMjAzLCAxNTEsIDE0LCA3LCAyMDMsIDE1MCwgMTQsIDcsIDIwMywgMTQ5LCAxNCwgNywgMjAzLCAxNDgsIDE0LCA3LCAKKyAgICAyMDMsIDE0NywgMTQsIDcsIDIwMywgMTQ2LCAxNCwgNywgMjAzLCAxNDUsIDE0LCA3LCAyMDMsIDE0NCwgMTQsIDcsIDIwMywgCisgICAgMTQzLCAxNCwgNywgMjAzLCAxNDIsIDE0LCA3LCAyMDMsIDE0MSwgMTQsIDcsIDIwMywgMTQwLCAxNCwgNywgMjAzLCAxMzksIAorICAgIDE0LCA3LCAyMDMsIDEzOCwgMTQsIDcsIDIwMywgMTM3LCAxNCwgNywgMjAzLCAxMzYsIDE0LCA3LCAyMDMsIDEzNSwgMTQsIAorICAgIDcsIDIwMywgMTM0LCAxNCwgNywgMjAzLCAxMzMsIDE0LCA3LCAyMDMsIDEzMiwgMTQsIDcsIDIwMywgMTMxLCAxNCwgNywgCisgICAgMjAzLCAxMzAsIDE0LCA3LCAyMDMsIDEyOSwgMTQsIDcsIDIwMywgMTI4LCAxNCwgNywgMjAzLCAxMjcsIDE0LCA3LCAyMDMsIAorICAgIDEyNiwgMTQsIDcsIDIwMywgMTI1LCAxNCwgNywgMjAzLCAxMjQsIDE0LCA3LCAyMDMsIDEyMywgMTQsIDcsIDIwMywgMTIyLCAKKyAgICAxNCwgNywgMjAzLCAxMjEsIDE0LCA3LCAyMDMsIDEyMCwgMTQsIDcsIDIwMywgMTE5LCAxNCwgNywgMjAzLCAxMTgsIDE0LCAKKyAgICA3LCAyMDMsIDExNywgMTQsIDcsIDIwMywgMTE2LCAxNCwgNywgMjAzLCAxMTUsIDE0LCA3LCAyMDMsIDExNCwgMTQsIDcsIAorICAgIDIwMywgMTEzLCAxNCwgNywgMjAzLCAxMTIsIDE0LCA3LCAyMDMsIDExMSwgMTQsIDcsIDIwMywgMTEwLCAxNCwgNywgMjAzLCAKKyAgICAxMDksIDE0LCA3LCAyMDMsIDEwOCwgMTQsIDcsIDIwMywgMTA3LCAxNCwgNywgMjAzLCAxMDYsIDE0LCA3LCAyMDMsIDEwNSwgCisgICAgMTQsIDcsIDIwMywgMTA0LCAxNCwgNywgMjAzLCAxMDMsIDE0LCA3LCAyMDMsIDEwMiwgMTQsIDcsIDIwMywgMTAxLCAxNCwgCisgICAgNywgMjAzLCAxMDAsIDE0LCA3LCAyMDMsIDk5LCAxNCwgNywgMjAzLCA5OCwgMTQsIDcsIDIwMywgOTcsIDE0LCA3LCAyMDMsIAorICAgIDk2LCAxNCwgNywgMjAzLCA5NSwgMTQsIDcsIDIwMywgOTQsIDE0LCA3LCAyMDMsIDkzLCAxNCwgNywgMjAzLCA5MiwgMTQsIAorICAgIDcsIDIwMywgOTEsIDE0LCA3LCAyMDEsIDE0NiwgMTQsIDcsIDIwMSwgMTQ1LCAxNCwgNywgMjAxLCAxNDQsIDE0LCA3LCAKKyAgICAyMDEsIDE0MywgMTQsIDcsIDIwMSwgMTQyLCAxNCwgNywgMjAxLCAxNDEsIDE0LCA3LCAyMDEsIDE0MCwgMTQsIDcsIDIwMSwgCisgICAgMTM5LCAxNCwgNywgMjAxLCAxMzgsIDE0LCA3LCAyMDEsIDEzNywgMTQsIDcsIDIwMSwgMTM2LCAxNCwgNywgMjAxLCAxMzUsIAorICAgIDE0LCA3LCAyMDEsIDEzNCwgMTQsIDcsIDIwMSwgMTMzLCAxNCwgNywgMjAxLCAxMzIsIDE0LCA3LCAyMDEsIDEzMSwgMTQsIAorICAgIDcsIDIwMSwgMTMwLCAxNCwgNywgMjAxLCAxMjksIDE0LCA3LCAyMDEsIDEyOCwgMTQsIDcsIDIwMSwgMTI3LCAxNCwgNywgCisgICAgMjAxLCAxMjYsIDE0LCA3LCAyMDEsIDEyNSwgMTQsIDcsIDIwMSwgMTI0LCAxNCwgNywgMjAxLCAxMjMsIDE0LCA3LCAyMDEsIAorICAgIDEyMiwgMTQsIDcsIDIwMSwgMTIxLCAxNCwgNywgMjAxLCAxMjAsIDE0LCA3LCAyMDEsIDExOSwgMTQsIDcsIDIwMSwgMTE4LCAKKyAgICAxNCwgNywgMjAxLCAxMTcsIDE0LCA3LCAyMDEsIDExNiwgMTQsIDcsIDIwMSwgMTE1LCAxNCwgNywgMjAwLCAxOTMsIDE0LCAKKyAgICA3LCAyMDAsIDE5MiwgMTQsIDcsIDIwMCwgMTkxLCAxNCwgNywgMjAwLCAxOTAsIDE0LCA3LCAyMDAsIDE4OSwgMTQsIDcsIAorICAgIDIwMCwgMTg4LCAxNCwgNywgMjAwLCAxODcsIDE0LCA3LCAyMDAsIDE4NiwgMTQsIDcsIDIwMCwgMTg1LCAxNCwgNywgMjAwLCAKKyAgICAxODQsIDE0LCA3LCAyMDAsIDE4MywgMTQsIDcsIDIwMCwgMTgyLCAxNCwgNywgMjAwLCAxMjEsIDE0LCA3LCAyMDAsIDEyMCwgCisgICAgMTQsIDcsIDIwMCwgMTE5LCAxNCwgNywgMjAwLCAxMTgsIDE0LCA3LCAyMDAsIDExNywgMTQsIDcsIDIwMCwgMTE2LCAxNCwgCisgICAgNywgMjAwLCAxMTUsIDE0LCA3LCAyMDAsIDExNCwgMTQsIDcsIDIwMCwgMTEzLCAxNCwgNywgMTk5LCAxNTYsIDE0LCA3LCAKKyAgICAxOTksIDE1NSwgMTQsIDcsIDE5OSwgMTU0LCAxNCwgNywgMTk5LCAxNTMsIDE0LCA3LCAxOTksIDE1MiwgMTQsIDcsIDE5OSwgCisgICAgMTUxLCAxNCwgNywgMTk5LCAxNTAsIDE0LCA3LCAxOTksIDE0OSwgMTQsIDcsIDE5OSwgMTQ4LCAxNCwgNywgMTk5LCAxNDcsIAorICAgIDE0LCA3LCAxOTksIDE0NiwgMTQsIDcsIDE5OSwgMTQ1LCAxNCwgNywgMTk5LCAxNDQsIDE0LCA3LCAxOTksIDE0MywgMTQsIAorICAgIDcsIDE5OSwgMTQyLCAxNCwgNywgMTk5LCAxNDEsIDE0LCA3LCAxOTksIDE0MCwgMTQsIDcsIDE5OSwgMTM5LCAxNCwgNywgCisgICAgMTk5LCAxMzgsIDE0LCA3LCAxOTksIDEzNywgMTQsIDcsIDE5OSwgMTM2LCAxNCwgNywgMTk5LCAxMzUsIDE0LCA3LCAxOTksIAorICAgIDEzNCwgMTQsIDcsIDE5OSwgMTMzLCAxNCwgNywgMTk5LCAxMzIsIDE0LCA3LCAxOTksIDEzMSwgMTQsIDcsIDE5OSwgMTMwLCAKKyAgICAxNCwgNywgMTk5LCAxMjksIDE0LCA3LCAxOTksIDEyOCwgMTQsIDcsIDE5OSwgMTI3LCAxNCwgNywgMTk5LCAxMjYsIDE0LCAKKyAgICA3LCAxOTksIDEyNSwgMTQsIDcsIDE5OSwgMTI0LCAxNCwgNywgMTk5LCAxMjMsIDE0LCA3LCAxOTksIDEyMiwgMTQsIDcsIAorICAgIDE5OSwgMTIxLCAxNCwgNywgMTk5LCAxMjAsIDE0LCA3LCAxOTksIDExOSwgMTQsIDcsIDE5OSwgMTE4LCAxNCwgNywgMTk5LCAKKyAgICAxMTcsIDE0LCA3LCAxOTksIDExNiwgMTQsIDcsIDI1MiwgMTM3LCAxNCwgNywgMjUyLCAxMzYsIDE0LCA3LCAyNTIsIDEzNSwgCisgICAgMTQsIDcsIDI1MiwgMTM0LCAxNCwgNywgMjUyLCAxMzMsIDE0LCA3LCAyNTIsIDEzMiwgMTQsIDcsIDI1MiwgMTMxLCAxNCwgCisgICAgNywgMjUyLCAxMzAsIDE0LCA3LCAyNTIsIDEyOSwgMTQsIDcsIDI1MiwgMTI4LCAxNCwgNywgMjUyLCAxMjcsIDE0LCA3LCAKKyAgICAyNTIsIDEyNiwgMTQsIDcsIDI1MiwgMTI1LCAxNCwgNywgMjUyLCAxMjQsIDE0LCA3LCAyNTIsIDEyMywgMTQsIDcsIDI1MiwgCisgICAgMTIyLCAxNCwgNywgMjUyLCAxMjEsIDE0LCA3LCAyNTIsIDEyMCwgMTQsIDcsIDI1MiwgMTE5LCAxNCwgNywgMjUyLCAxMTgsIAorICAgIDE0LCA3LCAyNTIsIDExNywgMTQsIDcsIDI1MiwgMTE2LCAxNCwgNywgMjUyLCAxMTUsIDE0LCA3LCAyNTIsIDExNCwgMTQsIAorICAgIDcsIDI1MiwgMTEzLCAxNCwgNywgMjUyLCAxMTIsIDE0LCA3LCAyNTIsIDExMSwgMTQsIDcsIDI1MiwgMTEwLCAxNCwgNywgCisgICAgMjUyLCAxMDksIDE0LCA3LCAyNTIsIDEwOCwgMTQsIDcsIDI1MiwgMTA3LCAxNCwgNywgMjUyLCAxMDYsIDE0LCA3LCAyNTIsIAorICAgIDEwNSwgMTQsIDcsIDI1MiwgMTA0LCAyOCwgNywgMjU1LCAxMzEsIDI4LCA3LCAyNTUsIDEzMCwgMjgsIDcsIDI1NSwgMTI5LCAKKyAgICAyOCwgNywgMjU1LCAxMjgsIDI4LCA3LCAyNTUsIDEyNywgMjgsIDcsIDI1NSwgMTI1LCAyOCwgNywgMjU1LCAxMjIsIDI4LCAKKyAgICA3LCAyNTUsIDEyMSwgMjgsIDcsIDI1NSwgMTIwLCAyOCwgNywgMjU1LCAxMTksIDI4LCA3LCAyNTUsIDExOCwgMjgsIDcsIAorICAgIDI1NSwgMTE3LCAyOCwgNywgMjU1LCAxMTYsIDI4LCA3LCAyNTUsIDExNSwgMjgsIDcsIDI1NSwgMTE0LCAyOCwgNywgMjU1LCAKKyAgICAxMTIsIDI4LCA3LCAyNTUsIDExMSwgMjgsIDcsIDI1NSwgMTEwLCAyOCwgNywgMjU1LCAxMDgsIDI4LCA3LCAyNTUsIDEwNywgCisgICAgMjgsIDcsIDI1NSwgMTA2LCAyOCwgNywgMjU1LCAxMDUsIDI4LCA3LCAyNTUsIDEwNCwgMjgsIDcsIDI1NSwgMTAzLCAyOCwgCisgICAgNywgMjU1LCAxMDIsIDI4LCA3LCAyNTUsIDEwMSwgMjgsIDcsIDI1NSwgMTAwLCAyOCwgNywgMjU1LCA5OSwgMjgsIDcsIAorICAgIDI1NSwgOTgsIDI4LCA3LCAyNTUsIDk3LCAyOCwgNywgMjU1LCA5NSwgMjgsIDcsIDI1NSwgOTQsIDI4LCA3LCAyNTUsIDkzLCAKKyAgICAyOCwgNywgMjU1LCA5MiwgMjgsIDcsIDI1NSwgOTAsIDI4LCA3LCAyNTUsIDg5LCAyOCwgNywgMjU1LCA4OCwgMjgsIDcsIAorICAgIDI1NSwgODcsIDI4LCA3LCAyNTUsIDg2LCAyOCwgNywgMjU1LCA4NSwgMjgsIDcsIDI1NSwgODQsIDI4LCA3LCAyNTUsIDgzLCAKKyAgICAyOCwgNywgMjU1LCA4MiwgMjgsIDcsIDI1NSwgODAsIDI4LCA3LCAyNTUsIDc5LCAyOCwgNywgMjU1LCA3OCwgMjgsIDcsIAorICAgIDI1NSwgNzYsIDI4LCA3LCAyNTUsIDc0LCAyOCwgNywgMjU1LCA3MywgMjgsIDcsIDI1NSwgNzIsIDI4LCA3LCAyNTUsIDcxLCAKKyAgICAyOCwgNywgMjU1LCA3MCwgMjgsIDcsIDI1NSwgNjksIDI4LCA3LCAyNTUsIDY4LCAyOCwgNywgMjU1LCA2NywgMjgsIDcsIAorICAgIDI1NSwgNjYsIDI4LCA3LCAyNTUsIDY1LCAyOCwgNywgMjU1LCA2NCwgMjgsIDcsIDI1NSwgNjMsIDI4LCA3LCAyNTUsIDYyLCAKKyAgICAyOCwgNywgMjU1LCA2MSwgMjgsIDcsIDI1NSwgNjAsIDI4LCA3LCAyNTUsIDU5LCAyOCwgNywgMjU1LCA1OCwgMjgsIDcsIAorICAgIDI1NSwgNTcsIDI4LCA3LCAyNTUsIDU2LCAyOCwgNywgMjU1LCA1NSwgMjgsIDcsIDI1NSwgNTQsIDI4LCA3LCAyNTUsIDUzLCAKKyAgICAyOCwgNywgMjU1LCA1MiwgMjgsIDcsIDI1NSwgNTEsIDI4LCA3LCAyNTUsIDUwLCAyOCwgNywgMjU1LCA0OSwgMjgsIDcsIAorICAgIDI1NSwgNDgsIDI4LCA3LCAyNTUsIDQ3LCAyOCwgNywgMjU1LCA0NiwgMjgsIDcsIDI1NSwgNDUsIDI4LCA3LCAyNTUsIDQ0LCAKKyAgICAyOCwgNywgMjU1LCA0MywgMjgsIDcsIDI1NSwgNDIsIDI4LCA3LCAyNTUsIDQxLCAyOCwgNywgMjU1LCA0MCwgMjgsIDcsIAorICAgIDI1NSwgMzksIDI4LCA3LCAyNTUsIDM4LCAyOCwgNywgMjU1LCAzNywgMjgsIDcsIDI1NSwgMzYsIDI4LCA3LCAyNTUsIDM1LCAKKyAgICAyOCwgNywgMjU1LCAzNCwgMjgsIDcsIDI1NSwgMzMsIDI4LCA3LCAyNTUsIDMyLCAyOCwgNywgMjU1LCAzMSwgMjgsIDcsIAorICAgIDI1NSwgMzAsIDI4LCA3LCAyNTUsIDI5LCAyOCwgNywgMjU1LCAyOCwgMjgsIDcsIDI1NSwgMjcsIDI4LCA3LCAyNTUsIDI2LCAKKyAgICAyOCwgNywgMjU1LCAyNSwgMjgsIDcsIDI1NSwgMjQsIDI4LCA3LCAyNTUsIDIzLCAyOCwgNywgMjU1LCAyMiwgMjgsIDcsIAorICAgIDI1NSwgMjEsIDI4LCA3LCAyNTUsIDIwLCAyOCwgNywgMjU1LCAxOSwgMjgsIDcsIDI1NSwgMTgsIDI4LCA3LCAyNTUsIDE3LCAKKyAgICAyOCwgNywgMjU1LCAxNiwgMjgsIDcsIDI1NSwgMTUsIDI4LCA3LCAyNTUsIDE0LCAyOCwgNywgMjU1LCAxMywgMjgsIDcsIAorICAgIDI1NSwgMTIsIDI4LCA3LCAyNTUsIDExLCAyOCwgNywgMjU1LCAxMCwgMjgsIDcsIDI1NSwgOCwgMjgsIDcsIDI1NSwgNywgCisgICAgMjgsIDcsIDI1NSwgNiwgMjgsIDcsIDI1NSwgNSwgMjgsIDcsIDI1NSwgNCwgMjgsIDcsIDI1NSwgMywgMjgsIDcsIDI1NSwgCisgICAgMiwgMjgsIDcsIDI1NSwgMSwgMjgsIDcsIDI1NSwgMCwgMjgsIDcsIDI1NCwgMjU1LCAyOCwgNywgMjU0LCAyNTQsIDI4LCA3LCAKKyAgICAyNTQsIDI1MywgMjgsIDcsIDI1NCwgMjUyLCAyOCwgNywgMjU0LCAyNTEsIDI4LCA3LCAyNTQsIDI1MCwgMjgsIDcsIDI1NCwgCisgICAgMjQ5LCAyOCwgNywgMjU0LCAyNDgsIDI4LCA3LCAyNTQsIDI0NywgMjgsIDcsIDI1NCwgMjQ2LCAyOCwgNywgMjU0LCAyNDUsIAorICAgIDI4LCA3LCAyNTQsIDI0NCwgMjgsIDcsIDI1NCwgMjQzLCAyOCwgNywgMjU0LCAyNDIsIDI4LCA3LCAyNTQsIDI0MSwgMjgsIAorICAgIDcsIDI1NCwgMjQwLCAyOCwgNywgMjU0LCAyMzksIDI4LCA3LCAyNTQsIDIzOCwgMjgsIDcsIDI1NCwgMjM3LCAyOCwgNywgCisgICAgMjU0LCAyMzYsIDI4LCA3LCAyNTQsIDIzNSwgMjgsIDcsIDI1NCwgMjM0LCAyOCwgNywgMjU0LCAyMzMsIDI4LCA3LCAyNTQsIAorICAgIDIzMiwgMjgsIDcsIDI1NCwgMjMxLCAyOCwgNywgMjU0LCAyMjksIDI4LCA3LCAyNTQsIDIyOCwgMjgsIDcsIDI1NCwgMjI3LCAKKyAgICAyOCwgNywgMjU0LCAyMjYsIDI4LCA3LCAyNTQsIDIyNSwgMjgsIDcsIDI1NCwgMjI0LCAyOCwgNywgMjU0LCAyMjMsIDI4LCAKKyAgICA3LCAyNTQsIDIyMiwgMjgsIDcsIDI1NCwgMjIxLCAyOCwgNywgMjU0LCAyMjAsIDI4LCA3LCAyNTQsIDIxOSwgMjgsIDcsIAorICAgIDI1NCwgMjE4LCAyOCwgNywgMjU0LCAyMTYsIDI4LCA3LCAyNTQsIDIxNSwgMjgsIDcsIDI1NCwgMjE0LCAyOCwgNywgMjU0LCAKKyAgICAyMTMsIDI4LCA3LCAyNTQsIDIxMiwgMjgsIDcsIDI1NCwgMjExLCAyOCwgNywgMjU0LCAyMTAsIDI4LCA3LCAyNTQsIDIwOSwgCisgICAgMjgsIDcsIDI1NCwgMjA4LCAyOCwgNywgMjU0LCAyMDcsIDI4LCA3LCAyNTQsIDIwNiwgMjgsIDcsIDI1NCwgMjA1LCAyOCwgCisgICAgNywgMjU0LCAyMDQsIDI4LCA3LCAyNTQsIDIwMywgMjgsIDcsIDI1NCwgMjAyLCAyOCwgNywgMjU0LCAyMDEsIDI4LCA3LCAKKyAgICAyNTQsIDIwMCwgMjgsIDcsIDI1NCwgMTk5LCAyOCwgNywgMjU0LCAxOTgsIDI4LCA3LCAyNTQsIDE5NywgMjgsIDcsIDI1NCwgCisgICAgMTk2LCAyOCwgNywgMjU0LCAxOTUsIDI4LCA3LCAyNTQsIDE5NCwgMjgsIDcsIDI1NCwgMTkzLCAyOCwgNywgMjU0LCAxOTIsIAorICAgIDI4LCA3LCAyNTQsIDE5MSwgMjgsIDcsIDI1NCwgMTkwLCAyOCwgNywgMjU0LCAxODksIDI4LCA3LCAyNTQsIDE4OCwgMjgsIAorICAgIDcsIDI1NCwgMTg3LCAyOCwgNywgMjU0LCAxODYsIDI4LCA3LCAyNTQsIDE4NSwgMjgsIDcsIDI1NCwgMTg0LCAyOCwgNywgCisgICAgMjU0LCAxODMsIDI4LCA3LCAyNTQsIDE4MiwgMjgsIDcsIDI1NCwgMTgxLCAyOCwgNywgMjU0LCAxODAsIDI4LCA3LCAyNTQsIAorICAgIDE3OSwgMjgsIDcsIDI1NCwgMTc4LCAyOCwgNywgMjU0LCAxNzcsIDI4LCA3LCAyNTQsIDE3NiwgMjgsIDcsIDI1NCwgMTc1LCAKKyAgICAyOCwgNywgMjU0LCAxNzQsIDI4LCA3LCAyNTQsIDE3MywgMjgsIDcsIDI1NCwgMTcyLCAyOCwgNywgMjU0LCAxNzEsIDI4LCAKKyAgICA3LCAyNTQsIDE3MCwgMjgsIDcsIDI1NCwgMTY5LCAyOCwgNywgMjU0LCAxNjgsIDI4LCA3LCAyNTQsIDE2NywgMjgsIDcsIAorICAgIDI1NCwgMTY2LCAyOCwgNywgMjU0LCAxNjUsIDI4LCA3LCAyNTQsIDE2NCwgMjgsIDcsIDI1NCwgMTYzLCAyOCwgNywgMjU0LCAKKyAgICAxNjIsIDI4LCA3LCAyNTQsIDE2MSwgMjgsIDcsIDI1NCwgMTYwLCAyOCwgNywgMjU0LCAxNTksIDI4LCA3LCAyNTQsIDE1OCwgCisgICAgMjgsIDcsIDI1NCwgMTU3LCAyOCwgNywgMjU0LCAxNTYsIDI4LCA3LCAyNTQsIDE1NSwgMjgsIDcsIDI1NCwgMTU0LCAyOCwgCisgICAgNywgMjU0LCAxNTMsIDI4LCA3LCAyNTQsIDE1MiwgMjgsIDcsIDI1NCwgMTUxLCAyOCwgNywgMjU0LCAxNTAsIDI4LCA3LCAKKyAgICAyNTQsIDE0OSwgMjgsIDcsIDI1NCwgMTQ4LCAyOCwgNywgMjU0LCAxNDYsIDI4LCA3LCAyNTQsIDE0NSwgMjgsIDcsIDI1NCwgCisgICAgMTQ0LCAyOCwgNywgMjU0LCAxNDMsIDI4LCA3LCAyNTQsIDE0MiwgMjgsIDcsIDI1NCwgMTQxLCAyOCwgNywgMjU0LCAxNDAsIAorICAgIDI4LCA3LCAyNTQsIDEzOSwgMjgsIDcsIDI1NCwgMTM4LCAyOCwgNywgMjU0LCAxMzcsIDI4LCA3LCAyNTQsIDEzNiwgMjgsIAorICAgIDcsIDI1NCwgMTM1LCAyOCwgNywgMjU0LCAxMzQsIDI4LCA3LCAyNTQsIDEzMywgMjgsIDcsIDI1NCwgMTMyLCAyOCwgNywgCisgICAgMjU0LCAxMzEsIDI4LCA3LCAyNTQsIDEzMCwgMjgsIDcsIDI1NCwgMTI5LCAyOCwgNywgMjU0LCAxMjgsIDI4LCA3LCAyNTQsIAorICAgIDEyNywgMjgsIDcsIDI1NCwgMTI2LCAyOCwgNywgMjU0LCAxMjUsIDI4LCA3LCAyNTQsIDEyNCwgMjgsIDcsIDI1NCwgMTIzLCAKKyAgICAyOCwgNywgMjU0LCAxMjIsIDI4LCA3LCAyNTQsIDEyMSwgMjgsIDcsIDI1NCwgMTIwLCAyOCwgNywgMjU0LCAxMTksIDI4LCAKKyAgICA3LCAyNTQsIDExOCwgMjgsIDcsIDI1NCwgMTE3LCAyOCwgNywgMjU0LCAxMTYsIDI4LCA3LCAyNTQsIDExNSwgMjgsIDcsIAorICAgIDI1NCwgMTE0LCAyOCwgNywgMjU0LCAxMTMsIDI4LCA3LCAyNTQsIDExMiwgMjgsIDcsIDI1NCwgMTExLCAyOCwgNywgMjU0LCAKKyAgICAxMTAsIDI4LCA3LCAyNTQsIDEwOSwgMjgsIDcsIDI1NCwgMTA4LCAyOCwgNywgMjU0LCAxMDcsIDI4LCA3LCAyNTQsIDEwNiwgCisgICAgMjgsIDcsIDI1NCwgMTA1LCAyOCwgNywgMjU0LCAxMDQsIDI4LCA3LCAyNTQsIDEwMywgMjgsIDcsIDI1NCwgMTAyLCAyOCwgCisgICAgNywgMjU0LCAxMDEsIDI4LCA3LCAyNTQsIDEwMCwgMjgsIDcsIDI1NCwgOTksIDI4LCA3LCAyNTQsIDk4LCAyOCwgNywgMjU0LCAKKyAgICA5NywgMjgsIDcsIDI1NCwgOTYsIDI4LCA3LCAyNTQsIDk1LCAyOCwgNywgMjU0LCA5NCwgMjgsIDcsIDI1NCwgOTMsIDI4LCAKKyAgICA3LCAyNTQsIDkyLCAyOCwgNywgMjU0LCA5MSwgMjgsIDcsIDI1NCwgOTAsIDI4LCA3LCAyNTQsIDg5LCAyOCwgNywgMjU0LCAKKyAgICA4OCwgMjgsIDcsIDI1NCwgODcsIDI4LCA3LCAyNTQsIDg2LCAyOCwgNywgMjU0LCA4NSwgMjgsIDcsIDI1NCwgODQsIDI4LCAKKyAgICA3LCAyNTQsIDgzLCAyOCwgNywgMjU0LCA4MiwgMjgsIDcsIDI1NCwgODEsIDI4LCA3LCAyNTQsIDgwLCAyOCwgNywgMjU0LCAKKyAgICA3OSwgMjgsIDcsIDI1NCwgNzgsIDI4LCA3LCAyNTQsIDc3LCAyOCwgNywgMjU0LCA3NiwgMjgsIDcsIDI1NCwgNzUsIDI4LCAKKyAgICA3LCAyNTQsIDc0LCAyOCwgNywgMjU0LCA3MywgMjgsIDcsIDI1NCwgNzIsIDI4LCA3LCAyNTQsIDcxLCAyOCwgNywgMjU0LCAKKyAgICA3MCwgMjgsIDcsIDI1NCwgNjksIDI4LCA3LCAyNTQsIDY4LCAyOCwgNywgMjU0LCA2NywgMjgsIDcsIDI1NCwgNjYsIDI4LCAKKyAgICA3LCAyNTQsIDY1LCAyOCwgNywgMjU0LCA2NCwgMjgsIDcsIDI1NCwgNjMsIDI4LCA3LCAyNTQsIDYyLCAyOCwgNywgMjU0LCAKKyAgICA2MSwgMjgsIDcsIDI1NCwgNjAsIDI4LCA3LCAyNTQsIDU5LCAyOCwgNywgMjU0LCA1OCwgMjgsIDcsIDI1NCwgNTcsIDI4LCAKKyAgICA3LCAyNTQsIDU2LCAyOCwgNywgMjU0LCA1NSwgMjgsIDcsIDI1NCwgNTQsIDI4LCA3LCAyNTQsIDUzLCAyOCwgNywgMjU0LCAKKyAgICA1MiwgMjgsIDcsIDI1NCwgNTEsIDI4LCA3LCAyNTQsIDUwLCAyOCwgNywgMjU0LCA0OSwgMjgsIDcsIDI1NCwgNDgsIDI4LCAKKyAgICA3LCAyNTQsIDQ3LCAyOCwgNywgMjU0LCA0NiwgMjgsIDcsIDI1NCwgNDUsIDI4LCA3LCAyNTQsIDQ0LCAyOCwgNywgMjU0LCAKKyAgICA0MywgMjgsIDcsIDI1NCwgNDIsIDI4LCA3LCAyNTQsIDQxLCAyOCwgNywgMjU0LCA0MCwgMjgsIDcsIDI1NCwgMzksIDI4LCAKKyAgICA3LCAyNTQsIDM4LCAyOCwgNywgMjU0LCAzNywgMjgsIDcsIDI1NCwgMzYsIDI4LCA3LCAyNTQsIDM0LCAyOCwgNywgMjU0LCAKKyAgICAzMywgMjgsIDcsIDI1NCwgMzIsIDI4LCA3LCAyNTQsIDMxLCAyOCwgNywgMjU0LCAzMCwgMjgsIDcsIDI1NCwgMjksIDI4LCAKKyAgICA3LCAyNTQsIDI4LCAyOCwgNywgMjU0LCAyNywgMjgsIDcsIDI1NCwgMjYsIDI4LCA3LCAyNTQsIDI1LCAyOCwgNywgMjU0LCAKKyAgICAyNCwgMjgsIDcsIDI1NCwgMjEsIDI4LCA3LCAyNTQsIDIwLCAyOCwgNywgMjU0LCAxOSwgMjgsIDcsIDI1NCwgMTgsIDI4LCAKKyAgICA3LCAyNTQsIDE0LCAyOCwgNywgMjU0LCAxMywgMjgsIDcsIDI1NCwgMTIsIDI4LCA3LCAyNTQsIDExLCAyOCwgNywgMjU0LCAKKyAgICAxMCwgMjgsIDcsIDI1NCwgOSwgMjgsIDcsIDI1NCwgOCwgMjgsIDcsIDI1NCwgNywgMjgsIDcsIDI1NCwgNiwgMjgsIDcsIAorICAgIDI1NCwgNSwgMjgsIDcsIDI1NCwgNCwgMjgsIDcsIDI1NCwgMywgMjgsIDcsIDI1NCwgMiwgMjgsIDcsIDI1NCwgMSwgMjgsIAorICAgIDcsIDI1NCwgMCwgMjgsIDcsIDI1MywgMjU1LCAyOCwgNywgMjUzLCAyNTQsIDI4LCA3LCAyNTMsIDI1MywgMjgsIDcsIDI1MywgCisgICAgMjUyLCAyOCwgNywgMjUzLCAyNTAsIDI4LCA3LCAyNTMsIDI0OSwgMjgsIDcsIDI1MywgMjQ4LCAyOCwgNywgMjUzLCAyNDcsIAorICAgIDI4LCA3LCAyNTMsIDI0NiwgMjgsIDcsIDI1MywgMjQ1LCAyOCwgNywgMjUzLCAyNDQsIDI4LCA3LCAyNTMsIDI0MywgMjgsIAorICAgIDcsIDI1MywgMjQyLCAyOCwgNywgMjUzLCAyNDEsIDI4LCA3LCAyNTMsIDI0MCwgMjgsIDcsIDI1MywgMjM5LCAyOCwgNywgCisgICAgMjUzLCAyMzgsIDI4LCA3LCAyNTMsIDIzNywgMjgsIDcsIDI1MywgMjM2LCAyOCwgNywgMjUzLCAyMzUsIDI4LCA3LCAyNTMsIAorICAgIDIzNCwgMjgsIDcsIDI1MywgMjMzLCAyOCwgNywgMjUzLCAyMzIsIDI4LCA3LCAyNTMsIDIzMSwgMjgsIDcsIDI1MywgMjMwLCAKKyAgICAyOCwgNywgMjUzLCAyMjksIDI4LCA3LCAyNTMsIDIyOCwgMjgsIDcsIDI1MywgMjI3LCAyOCwgNywgMjUzLCAyMjYsIDI4LCAKKyAgICA3LCAyNTMsIDIyNSwgMjgsIDcsIDI1MywgMjI0LCAyOCwgNywgMjUzLCAyMjMsIDI4LCA3LCAyNTMsIDIyMiwgMjgsIDcsIAorICAgIDI1MywgMjIxLCAyOCwgNywgMjUzLCAyMjAsIDI4LCA3LCAyNTMsIDIxOSwgMjgsIDcsIDI1MywgMjE4LCAyOCwgNywgMjUzLCAKKyAgICAyMTcsIDI4LCA3LCAyNTMsIDIxNiwgMjgsIDcsIDI1MywgMjE1LCAyOCwgNywgMjUzLCAyMTQsIDI4LCA3LCAyNTMsIDIxMywgCisgICAgMjgsIDcsIDI1MywgMjEyLCAyOCwgNywgMjUzLCAyMTEsIDI4LCA3LCAyNTMsIDIxMCwgMjgsIDcsIDI1MywgMjA5LCAyOCwgCisgICAgNywgMjUzLCAyMDgsIDI4LCA3LCAyNTMsIDIwNywgMjgsIDcsIDI1MywgMjA2LCAyOCwgNywgMjUzLCAyMDUsIDI4LCA3LCAKKyAgICAyNTMsIDIwNCwgMjgsIDcsIDI1MywgMjAzLCAyOCwgNywgMjUzLCAyMDIsIDI4LCA3LCAyNTMsIDIwMSwgMjgsIDcsIDI1MywgCisgICAgMjAwLCAyOCwgNywgMjUzLCAxOTksIDI4LCA3LCAyNTMsIDE5OCwgMjgsIDcsIDI1MywgMTk3LCAyOCwgNywgMjUzLCAxOTYsIAorICAgIDI4LCA3LCAyNTMsIDE5NSwgMjgsIDcsIDI1MywgMTk0LCAyOCwgNywgMjUzLCAxOTMsIDI4LCA3LCAyNTMsIDE5MiwgMjgsIAorICAgIDcsIDI1MywgMTkxLCAyOCwgNywgMjUzLCAxOTAsIDI4LCA3LCAyNTMsIDE4OSwgMjEzLCAyNTMsIDIxNywgMzQsIDIxMywgCisgICAgODgsIDI4LCA3LCAyNTMsIDE4OCwgMjgsIDcsIDI1MywgMTg3LCAyOCwgNywgMjUzLCAxODYsIDI4LCA3LCAyNTMsIDE4NSwgCisgICAgMjgsIDcsIDI1MywgMTg0LCAyOCwgNywgMjUzLCAxODMsIDI4LCA3LCAyNTMsIDE4MiwgMjgsIDcsIDI1MywgMTgxLCAyOCwgCisgICAgNywgMjUzLCAxODAsIDI4LCA3LCAyNTMsIDE3OSwgMjgsIDcsIDI1MywgMTc4LCAyOCwgNywgMjUzLCAxNzcsIDE5MiwgMjgsIAorICAgIDcsIDI1MywgMTc2LCAyOCwgNywgMjUzLCAxNzUsIDI4LCA3LCAyNTMsIDE3NCwgMjgsIDcsIDI1MywgMTczLCAyOCwgNywgCisgICAgMjUzLCAxNzIsIDI4LCA3LCAyNTMsIDE3MSwgMjgsIDcsIDI1MywgMTcwLCAyOCwgNywgMjUzLCAxNjgsIDI4LCA3LCAyNTMsIAorICAgIDE2NiwgMjgsIDcsIDI1MywgMTY0LCAyOCwgNywgMjUzLCAxNjIsIDI4LCA3LCAyNTMsIDE2MCwgMjgsIDcsIDI1MywgMTU4LCAKKyAgICAyOCwgNywgMjUzLCAxNTYsIDI4LCA3LCAyNTMsIDE1NCwgMjgsIDcsIDI1MywgMTUyLCAyOCwgNywgMjUzLCAxNTAsIDI0OCwgCisgICAgMjQ0LCAyMjQsIDk3LCA4MSwgMjgsIDcsIDI1MywgMTQ4LCAyMzgsIDE3MSwgMjI0LCA5NywgODEsIDI4LCA3LCAyNTMsIAorICAgIDE0NywgMjgsIDcsIDI1MywgMTQ1LCAyOCwgNywgMjUzLCAxNDMsIDI4LCA3LCAyNTMsIDE0MSwgMjgsIDcsIDI1MywgMTM5LCAKKyAgICAyOCwgNywgMjUzLCAxMzcsIDI4LCA3LCAyNTMsIDEzNSwgMjgsIDcsIDI1MywgMTMzLCAyOCwgNywgMjUzLCAxMzEsIDI4LCAKKyAgICA3LCAyNTMsIDEzMCwgMjgsIDcsIDI1MywgMTI5LCAyOCwgNywgMjUzLCAxMjgsIDI4LCA3LCAyNTMsIDEyNywgMjgsIDcsIAorICAgIDI1MywgMTI2LCAyOCwgNywgMjUzLCAxMjUsIDI4LCA3LCAyNTMsIDEyNCwgMjgsIDcsIDI1MywgMTIzLCAyOCwgNywgMjUzLCAKKyAgICAxMjIsIDI4LCA3LCAyNTMsIDEyMSwgMjgsIDcsIDI1MywgMTIwLCAyOCwgNywgMjUzLCAxMTksIDI4LCA3LCAyNTMsIDExOCwgCisgICAgMjgsIDcsIDI1MywgMTE3LCAyOCwgNywgMjUzLCAxMTYsIDI4LCA3LCAyNTMsIDExNSwgMjgsIDcsIDI1MywgMTE0LCAyOCwgCisgICAgNywgMjUzLCAxMTMsIDI4LCA3LCAyNTMsIDExMiwgMjgsIDcsIDI1MywgMTExLCAyOCwgNywgMjUzLCAxMTAsIDI4LCA3LCAKKyAgICAyNTMsIDEwOSwgMjgsIDcsIDI1MywgMTA4LCAyOCwgNywgMjUzLCAxMDcsIDI4LCA3LCAyNTMsIDEwNiwgMjgsIDcsIDI1MywgCisgICAgMTA1LCAyOCwgNywgMjUzLCAxMDQsIDI4LCA3LCAyNTMsIDEwMywgMjgsIDcsIDI1MywgMTAyLCAyOCwgNywgMjUzLCAxMDEsIAorICAgIDI4LCA3LCAyNTMsIDEwMCwgMjgsIDcsIDI1MywgOTksIDI4LCA3LCAyNTMsIDk4LCAyOCwgNywgMjUzLCA5NywgMjgsIDcsIAorICAgIDI1MywgOTYsIDI4LCA3LCAyNTMsIDk1LCAyOCwgNywgMjUzLCA5NCwgMjgsIDcsIDI1MywgOTMsIDI4LCA3LCAyNTMsIDkyLCAKKyAgICAyOCwgNywgMjUzLCA5MSwgMjgsIDcsIDI1MywgOTAsIDI4LCA3LCAyNTMsIDg5LCAyOCwgNywgMjUzLCA4OCwgMjgsIDcsIAorICAgIDI1MywgODcsIDI4LCA3LCAyNTMsIDg2LCAyOCwgNywgMjUzLCA4NSwgMjgsIDcsIDI1MywgODQsIDI4LCA3LCAyNTMsIDgzLCAKKyAgICAyOCwgNywgMjUzLCA4MiwgMjgsIDcsIDI1MywgODEsIDI4LCA3LCAyNTMsIDgwLCAyOCwgNywgMjUzLCA3OSwgMjgsIDcsIAorICAgIDI1MywgNzgsIDI4LCA3LCAyNTMsIDc3LCAyOCwgNywgMjUzLCA3NiwgMjgsIDcsIDI1MywgNzUsIDI4LCA3LCAyNTMsIDc0LCAKKyAgICAyOCwgNywgMjUzLCA3MywgMjgsIDcsIDI1MywgNzIsIDI4LCA3LCAyNTMsIDcxLCAyOCwgNywgMjUzLCA3MCwgMjgsIDcsIAorICAgIDI1MywgNjksIDI4LCA3LCAyNTMsIDY4LCAyOCwgNywgMjUzLCA2NywgMjgsIDcsIDI1MywgNjYsIDI4LCA3LCAyNTMsIDY1LCAKKyAgICAyOCwgNywgMjUzLCA2NCwgMjgsIDcsIDI1MywgNjMsIDI4LCA3LCAyNTMsIDYyLCAyOCwgNywgMjUzLCA2MSwgMjgsIDcsIAorICAgIDI1MywgNjAsIDI4LCA3LCAyNTMsIDU5LCAyOCwgNywgMjUzLCA1OCwgMjgsIDcsIDI1MywgNTcsIDI4LCA3LCAyNTMsIDU2LCAKKyAgICAyOCwgNywgMjUzLCA1NSwgMjgsIDcsIDI1MywgNTQsIDI4LCA3LCAyNTMsIDUzLCAyOCwgNywgMjUzLCA1MiwgMjgsIDcsIAorICAgIDI1MywgNTEsIDI4LCA3LCAyNTMsIDUwLCAyOCwgNywgMjUzLCA0OSwgMjgsIDcsIDI1MywgNDgsIDI4LCA3LCAyNTMsIDQ3LCAKKyAgICAyOCwgNywgMjUzLCA0NiwgMjgsIDcsIDI1MywgNDUsIDI4LCA3LCAyNTMsIDQ0LCAyOCwgNywgMjUzLCA0MywgMjgsIDcsIAorICAgIDI1MywgNDIsIDI4LCA3LCAyNTMsIDQxLCAyOCwgNywgMjUzLCA0MCwgMjgsIDcsIDI1MywgMzksIDI4LCA3LCAyNTMsIDM4LCAKKyAgICAyOCwgNywgMjUzLCAzNywgMjgsIDcsIDI1MywgMzYsIDI4LCA3LCAyNTMsIDM1LCAyOCwgNywgMjUzLCAzNCwgMjgsIDcsIAorICAgIDI1MywgMzMsIDI4LCA3LCAyNTMsIDMyLCAyOCwgNywgMjUzLCAzMSwgMjgsIDcsIDI1MywgMzAsIDI4LCA3LCAyNTMsIDI5LCAKKyAgICAyOCwgNywgMjUzLCAyOCwgMjgsIDcsIDI1MywgMjcsIDI4LCA3LCAyNTMsIDI2LCAyOCwgNywgMjUzLCAyNSwgMjgsIDcsIAorICAgIDI1MywgMjQsIDI4LCA3LCAyNTMsIDIzLCAyOCwgNywgMjUzLCAyMiwgMjgsIDcsIDI1MywgMjEsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE5LCAxODYsIDIyMSwgMjUzLCAyNSwgMSwgMjE1LCAyMzUsIDIzNiwgMjMsIDIzNywgNSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTUsIDgzLCAyMjEsIDI1NCwgMjE1LCAxNTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE1LCA4MywgMjIxLCAyNTQsIDIxNSwgCisgICAgMTUzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMTU4LCAyMjEsIDI1MywgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDIxNiwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDUsIDIxMiwgMjIxLCAyNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCA4LCAyMjEsIDI1MywgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMTAsIDIwLCAyMTYsIDIxMSwgMjE5LCA4MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMTYsIAorICAgIDIxMSwgMjE5LCA4MywgMjE1LCAxNTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE1LCA4MywgMjE2LCAyMTEsIDIxOSwgODMsIDIxNSwgCisgICAgMTUzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjE0LCAyNSwgMSwgMjE1LCAyMzUsIDIwNCwgMjE2LCAyMjIsIDIxNSwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMTksIDI0NywgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIAorICAgIDE2OSwgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDIzNywgMjUsIDEsIDIxNSwgMjM1LCAyMTAsIDEzOCwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMTgsIDE0MCwgMjUsIDEsIDIxNSwgMjM1LCAyMjYsIDIyNiwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDUwLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwNywgMTkzLCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMTg1LCAyNSwgMSwgMjE1LCAyMzUsIDIyNSwgCisgICAgNzMsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCAyMzgsIDIyNSwgMjM3LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTUwLCAyMjIsIAorICAgIDUsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTgsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAxMDEsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjM1LCAxODAsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAxNjYsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCAxMDcsIDIxOSwgMjIwLCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIxNywgMjQ1LCAyMjIsIDgsIDI1LCAxLCAyMTUsIDIzNSwgMTA4LCAxOTksIDE4NiwgMjIwLCAKKyAgICAxNTEsIDI1LCAxLCAyMTUsIDIzNSwgMjM1LCAxODEsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNTAsIDIxOCwgMTUxLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwOSwgMTA5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgMjQ2LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMTEsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCA4MywgMjUsIDEsIDIxNSwgMjM1LCAyMjcsIDg1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxNiwgMjExLCAyMjUsIDI5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgNzYsIDIyNSwgMjksIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE2LCAwLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjEyLCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMTI0LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxNCwgMjA1LCAyNSwgMSwgMjE1LCAyMzUsIDIwNCwgMjEzLCAyNSwgMSwgMjE1LCAyMzUsIDIyNCwgMzgsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA5LCAxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMDYsIDEzMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIAorICAgIDIwOSwgMjUsIDEsIDIxNSwgMjM1LCAyMjYsIDIzMywgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDcyLCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIyNSwgMjUwLCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgODQsIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCAyMTIsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjI0LCA5MCwgMjUsIDEsIDIxNSwgMjM1LCAyMzcsIDc0LCAyNSwgMSwgMjE1LCAyMzUsIDIxMiwgCisgICAgMjQxLCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMzksIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCA3LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIyMiwgMTY1LCAyMTUsIDE5NCwgMjUsIDEsIDIxNSwgMjM1LCAyMTAsIDEzLCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTQ5LCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgMjUyLCAyMTgsIDE2MCwgMTk5LCAxOTQsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAzMCwgCisgICAgMjIxLCAxMDMsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAyMDYsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCA1MiwgMjUsIDEsIAorICAgIDIxNSwgMjM1LCAyMDMsIDIzNSwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDIyMywgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIwOCwgCisgICAgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDk0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMTA1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxOCwgNDQsIDI1LCAxLCAyMTUsIDIzNSwgMjA2LCAxMzUsIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCA0LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxNiwgMjA3LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTY0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjE2LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxOCwgNDEsIDI1LCAxLCAyMTUsIDIzNSwgMjI3LCA0OCwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIAorICAgIDE2NywgMjUsIDEsIDIxNSwgMjM1LCAyMDMsIDU0LCAyNSwgMSwgMjE1LCAyMzUsIDIyNCwgNDIsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjIwLCAyNCwgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDEyNiwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDEwNCwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMTgsIDE2MiwgMjUsIDEsIDIxNSwgMjM0LCAyMDQsIDIxNiwgMjIyLCAyMTMsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjA5LCAxNzEsIDI1LCAxLCAyMTUsIDIzNCwgMjEwLCAxNDIsIDIwNCwgMjE1LCAyNSwgMSwgMjE1LCAyMzQsIDIyNCwgOTIsIAorICAgIDIxOCwgMTQ2LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTExLCAyMjIsIDIxNywgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDE1NSwgCisgICAgMjUsIDEsIDIxNSwgMjM0LCAyMDAsIDE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTA2LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIyNywgNzEsIDI1LCAxLCAyMTUsIDIzNCwgMjE2LCA1NywgMjUsIDEsIDIxNSwgMjM0LCAyMDAsIDk1LCAyMjUsIDI5LCAyNSwgCisgICAgMSwgMjE1LCAyMzQsIDIyNSwgOTIsIDIxOCwgMTYwLCAyMTgsIDU1LCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgMTQzLCAyMTAsIAorICAgIDM5LCAyNSwgMSwgMjE1LCAyMzQsIDIyMCwgNDMsIDIxOSwgOTcsIDI1LCAxLCAyMTUsIDIzNCwgMjM1LCAxNzgsIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjE1LCAxNDIsIDI1LCAxLCAyMTUsIDIzNCwgMjA0LCAyMTYsIDIxOCwgMTU4LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIxMCwgNDQsIDIxOSwgOTIsIDI1LCAxLCAyMTUsIDIzNCwgMjEwLCA0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMjEsIDI1NCwgCisgICAgMjA2LCAxMzQsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCA5MywgMjIyLCAxMDcsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCA0MiwgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAyMjIsIDI1LCAxLCAyMTUsIDIzNCwgMjM1LCAxNzksIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjI2LCAyMTgsIDI1LCAxLCAyMTUsIDIzNCwgMjI1LCAxNzAsIDI1LCAxLCAyMTUsIDIzNCwgMjE2LCAxMDQsIAorICAgIDI1LCAxLCAyMTUsIDIzNCwgMjAyLCAyNDEsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAxODcsIDIyMCwgMjM1LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIxOSwgMjIyLCAyMjIsIDg5LCAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgMjE0LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIxMiwgNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjA3LCAyOCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDEwLCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIxOSwgMjA2LCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMjA3LCAyMjUsIDcwLCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgCisgICAgMCwgMjUsIDEsIDIxNSwgMjM0LCAyMDcsIDI0NCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDk3LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIyMSwgODgsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCA1OCwgMjUsIDEsIDIxNSwgMjM0LCAyMTQsIDIwOSwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjIsIDksIDIxOSwgMjI0LCAyNSwgMSwgMjE1LCAyMzQsIDIzNywgMTE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgCisgICAgODQsIDI1LCAxLCAyMTUsIDIzNCwgMjM3LCAxNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAyMzAsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjIyLCAyMzUsIDIxOSwgODYsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAyMzUsIDIxOSwgNjIsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjI0LCAyMzcsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAyMzAsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCAxNjksIDI1LCAKKyAgICAxLCAyMTUsIDIzNCwgMTc4LCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMTQwLCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMTc1LCAKKyAgICAyNSwgMSwgMTczLCAyMTksIDE4NiwgMjIyLCAyMTUsIDI1LCAxLCAxNzMsIDIxOCwgNywgMjUsIDEsIDE3MywgMTk5LCAxOTQsIAorICAgIDI1LCAxLCAxNzMsIDIwMSwgOTgsIDI1LCAxLCAxNzMsIDIxOSwgMjIzLCAyNSwgMSwgMTczLCAyMjAsIDY0LCAyNSwgMSwgCisgICAgMTczLCAyMTksIDE5MywgMjUsIDEsIDE3MywgMjM1LCAxODgsIDI1LCAxLCAxNzMsIDIyMiwgMTAxLCAyNSwgMSwgMTczLCAKKyAgICAyMzYsIDMwLCAyNSwgMSwgMTczLCAyMTgsIDMyLCAyMjEsIDE0NSwgMjIyLCAxMiwgMjUsIDEsIDE3MywgMjE4LCAxMzgsIAorICAgIDIyMiwgOTIsIDI1LCAxLCAxNzMsIDIyMiwgOTgsIDI1LCAxLCAxNzMsIDIxNSwgMTQ4LCAyNSwgMSwgMTczLCAyMjAsIDQ5LCAKKyAgICAyNSwgMSwgMTczLCAyMjIsIDEwOSwgMjQ3LCAxODYsIDI1LCAxLCAxNzMsIDIyNiwgMjIwLCAyNSwgMSwgMTczLCAyMzUsIAorICAgIDE4OSwgMjUsIDEsIDE3MywgMjI2LCAyMjcsIDI1LCAxLCAxNzMsIDE5OSwgMjEyLCAyMjEsIDEwLCAyNSwgMSwgMTczLCAKKyAgICAyMTgsIDEsIDI1LCAxLCAxNzMsIDIyMiwgODYsIDI1LCAxLCAxNzMsIDIxOCwgMTY4LCAyNSwgMSwgMTczLCAyMjIsIDkyLCAKKyAgICAyNSwgMSwgMTczLCAyMDAsIDE4LCAyNSwgMSwgMTczLCAyMjYsIDQ3LCAyNSwgMSwgMTczLCAyMjcsIDEwNSwgMjUsIDEsIAorICAgIDE3MywgMjEwLCAxMzcsIDI1LCAxLCAxNzMsIDIyMCwgNTgsIDI1LCAxLCAxNzMsIDIwNywgMjYsIDI1LCAxLCAxNzMsIDIxOSwgCisgICAgNjYsIDI1LCAxLCAxNzMsIDIwNSwgMjEyLCAxOTksIDE5NywgMjUsIDEsIDE3MywgMjA4LCAxOSwgMjUsIDEsIDE3MywgMjE5LCAKKyAgICAyMTMsIDIxOCwgNTUsIDI1LCAxLCAxNzMsIDIwMiwgMjQwLCAyNSwgMSwgMTczLCAyMjAsIDEyOSwgMjUsIDEsIDE3MywgCisgICAgMjIyLCAyMzUsIDIyNiwgMjI5LCAyNSwgMSwgMTczLCAyMTgsIDE1MSwgMjUsIDEsIDE3MywgMjE5LCAyMDgsIDI1LCAxLCAKKyAgICAxNzMsIDIyNSwgNzQsIDI1LCAxLCAxNzMsIDIyMiwgOTQsIDI1LCAxLCAxNzMsIDIyMSwgMjQ1LCAyNSwgMSwgMTczLCAyMTgsIAorICAgIDE0NSwgMjUsIDEsIDE3MywgMjA2LCAxMzAsIDI1LCAxLCAxNzMsIDIxOSwgMjEwLCAyNSwgMSwgMTczLCAyMzYsIDE4NywgCisgICAgMjUsIDEsIDE3MywgMjIwLCA2MywgMjUsIDEsIDE3MywgMjE4LCAxNzAsIDI1LCAxLCAxNzMsIDIxOCwgMTY2LCAyNSwgMSwgCisgICAgMTczLCAyNDgsIDEyLCAyNSwgMSwgMTczLCAyMDIsIDI0MiwgMjUsIDEsIDE3MywgMjIyLCA5OSwgMjUsIDEsIDE3MywgMjEyLCAKKyAgICAxNzUsIDI1LCAxLCAxNzMsIDIxOSwgOTYsIDI1LCAxLCAxNzMsIDIyNSwgOTEsIDI1LCAxLCAxNzMsIDIwNSwgMjA5LCAyNSwgCisgICAgMSwgMTczLCAyMTgsIDE1MiwgMjE5LCAxNzUsIDI1LCAxLCAxNzMsIDIxOSwgODgsIDI1LCAxLCAxNzMsIDIyNiwgMjMzLCAKKyAgICAyNSwgMSwgMTczLCAyMTksIDIxNSwgMjUsIDEsIDE3MywgMjIyLCAyMDgsIDI1LCAxLCAxNzMsIDIyMiwgODcsIDI1LCAxLCAKKyAgICAxNzMsIDIyNCwgNDIsIDI1LCAxLCAxNzMsIDIyNSwgMjM3LCAyNSwgMSwgMTczLCAyMTksIDk0LCAyNSwgMSwgMTczLCAyMTksIAorICAgIDE3NSwgMjUsIDEsIDE3MywgMjAwLCAyMDQsIDI1LCAxLCAxNzMsIDIxOSwgMjExLCAyNSwgMSwgMTczLCAyMTgsIDE1NSwgCisgICAgMjUsIDEsIDE3MywgMjE4LCAxNDcsIDI1LCAxLCAxNzMsIDIyNSwgMjUyLCAyMTksIDUyLCAyNSwgMSwgMTczLCAyMTgsIAorICAgIDE1MywgMjUsIDEsIDE3MywgMjIwLCA3MSwgMjUsIDEsIDE3MywgMjIyLCAyMzUsIDIxOCwgMTU4LCAyNSwgMSwgMTczLCAKKyAgICAyMDAsIDEwOSwgMjUsIDEsIDE3MywgMjIwLCA3MCwgMjUsIDEsIDE3MywgMjA5LCAyMTUsIDI1LCAxLCAxNzMsIDIxMCwgCisgICAgMTQwLCAyNSwgMSwgMTczLCAyMjIsIDk1LCAyNSwgMSwgMTczLCAyMjIsIDIxNSwgMjUsIDEsIDE3MywgMjIyLCAxMDUsIDI1LCAKKyAgICAxLCAxNzMsIDIyNiwgMjIxLCAyNSwgMSwgMTczLCAyMjIsIDk2LCAyNSwgMSwgMTczLCAyMjYsIDIyNSwgMjUsIDEsIDE3MywgCisgICAgMjIyLCAxMDksIDIxNSwgMTk5LCAyNSwgMSwgMTczLCAxOTksIDE3NywgMjUsIDEsIDE3MywgMjE5LCA4NCwgMjUsIDEsIAorICAgIDE3MywgMjIxLCAyMDAsIDI1LCAxLCAxNzMsIDIyMSwgMzksIDI1LCAxLCAxNzMsIDIxMCwgMTYsIDI1LCAxLCAxNzMsIDIyNiwgCisgICAgMjQ0LCAyMjUsIDUyLCAyNSwgMSwgMTczLCAyMjYsIDI0NCwgMjM3LCAxNTMsIDI1LCAxLCAxNzMsIDIxOSwgMjQ1LCAyNSwgCisgICAgMSwgMTczLCAyMjAsIDEyNiwgMjUsIDEsIDE3MywgMjI0LCAxNTgsIDI1LCAxLCAxNzMsIDIxNSwgMTYwLCAyNSwgMSwgMTczLCAKKyAgICAyMTYsIDQ3LCAyNSwgMSwgMTczLCAyMDYsIDE0NiwgMjUsIDEsIDEzNywgMjIyLCA4NSwgMjUsIDEsIDEzNywgMjAxLCA5NiwgCisgICAgMjUsIDEsIDEzNywgMjE5LCA4MiwgMjUsIDEsIDEzNywgMjIxLCAyNTMsIDI1LCAxLCAxMzcsIDIxOSwgODAsIDI1LCAxLCAKKyAgICAxMzcsIDIyNCwgMjAzLCAyNSwgMSwgMTM3LCAyMTksIDg1LCAyNSwgMSwgMTM3LCAyMTgsIDE2NSwgMjUsIDEsIDEzNywgCisgICAgMjE5LCAyMjksIDI1LCAxLCAxMzcsIDIxOCwgNTUsIDI1LCAxLCAxMzcsIDIwMCwgMjE1LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDE4MywgMjUsIDEsIDEzNywgMjEwLCA2MywgMjUsIDEsIDEzNywgMjE5LCAxOTQsIDI1LCAxLCAxMzcsIDIyNiwgMjI4LCAyNSwgCisgICAgMSwgMTM3LCAyMDYsIDEzMiwgMjUsIDEsIDEzNywgMjEwLCA0MiwgMjUsIDEsIDEzNywgMjE5LCA5MywgMjUsIDEsIDEzNywgCisgICAgMjA3LCAyNDQsIDI1LCAxLCAxMzcsIDIyNiwgMjMzLCAyNSwgMSwgMTM3LCAyMDAsIDk3LCAyNSwgMSwgMTM3LCAyMjUsIAorICAgIDI1MywgMjUsIDEsIDEzNywgMjEyLCAzLCAyNSwgMSwgMTM3LCAyMjIsIDIsIDI1LCAxLCAxMzcsIDIyMCwgNjIsIDI1LCAxLCAKKyAgICAxMzcsIDIyMiwgMTgzLCAyNSwgMSwgMTM3LCAyMjIsIDgsIDI1LCAxLCAxMzcsIDIxMCwgMTM5LCAyNSwgMSwgMTM3LCAyMDAsIAorICAgIDQxLCAyNSwgMSwgMTM3LCAyMTksIDg3LCAyNSwgMSwgMTM3LCAyMjYsIDIyNCwgMjIyLCA4OCwgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAxOTAsIDI1LCAxLCAxMzcsIDIwNCwgMjE1LCAyNSwgMSwgMTM3LCAyMzUsIDE5OCwgMjUsIDEsIDEzNywgMjE5LCAxODAsIAorICAgIDI1LCAxLCAxMzcsIDIzNywgMTE4LCAyNSwgMSwgMTM3LCAyMjAsIDY2LCAyNSwgMSwgMTM3LCAyMjEsIDIzNywgMjUsIDEsIAorICAgIDEzNywgMjI0LCAyMzEsIDI1LCAxLCAxMzcsIDIyMCwgNDgsIDI1LCAxLCAxMzcsIDIyMSwgMTAyLCAyNSwgMSwgMTM3LCAKKyAgICAyMjEsIDI0MSwgMjUsIDEsIDEzNywgMjE0LCAxODksIDI1LCAxLCAxMzcsIDIyMSwgMjM5LCAyNSwgMSwgMTM3LCAyMjEsIAorICAgIDI1NSwgMjUsIDEsIDEzNywgMjI0LCAyNSwgMjUsIDEsIDEzNywgMjE4LCAxNTcsIDI1LCAxLCAxMzcsIDIyMiwgMTA4LCAyNSwgCisgICAgMSwgMTM3LCAyMjUsIDIyNywgMjUsIDEsIDEzNywgMjE4LCA0NCwgMjUsIDEsIDEzNywgMjA2LCAxMzUsIDI1LCAxLCAxMzcsIAorICAgIDIwOSwgNCwgMjUsIDEsIDEzNywgMTk5LCAxNzcsIDI1LCAxLCAxMzcsIDIyNiwgMjI1LCAyNSwgMSwgMTM3LCAyMTMsIDIzMywgCisgICAgMjUsIDEsIDEzNywgMjA2LCAxODksIDI1LCAxLCAxMzcsIDIxOSwgMTkxLCAyNSwgMSwgMTM3LCAyMjIsIDQsIDI1LCAxLCAKKyAgICAxMzcsIDIxOCwgMTU2LCAyNSwgMSwgMTM3LCAyMjYsIDIyMywgMjUsIDEsIDEzNywgMjE1LCAxNTQsIDI1LCAxLCAxMzcsIAorICAgIDIxNSwgMjUwLCAyNSwgMSwgMTM3LCAyMTgsIDE4LCAyNSwgMSwgMTM3LCAyMjQsIDIzNywgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAyMzAsIDI1LCAxLCAxMzcsIDIyMiwgMSwgMjUsIDEsIDEzNywgMjE5LCAyMDMsIDI1LCAxLCAxMzcsIDE5OSwgMTkxLCAyNSwgCisgICAgMSwgMTM3LCAyMTYsIDEzNSwgMjUsIDEsIDEzNywgMTk5LCAxOTAsIDI1LCAxLCAxMzcsIDIyMCwgNzEsIDI1LCAxLCAxMzcsIAorICAgIDIxOCwgMTQ2LCAyNSwgMSwgMTM3LCAyMDgsIDIxLCAyNSwgMSwgMTM3LCAyMjYsIDEsIDI1LCAxLCAxMzcsIDIxOSwgMjE5LCAKKyAgICAyNSwgMSwgMTM3LCAyMTksIDE4OCwgMjUsIDEsIDEzNywgMjA0LCAxOTYsIDI1LCAxLCAxMzcsIDIyMiwgMTIsIDI1LCAxLCAKKyAgICAxMzcsIDIyNSwgMjQ3LCAyNSwgMSwgMTM3LCAyMTgsIDE1NCwgMjUsIDEsIDEzNywgMjA2LCAxMzMsIDI1LCAxLCAxMzcsIAorICAgIDIyMiwgMjEwLCAyNSwgMSwgMTM3LCAyMTksIDIyOCwgMjUsIDEsIDEzNywgMjI0LCAyMzAsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMjA5LCAyNSwgMSwgMTM3LCAyMTgsIDE1OSwgMjUsIDEsIDEzNywgMjE5LCA2NiwgMjUsIDEsIDEzNywgMjM1LCAxODIsIDI1LCAKKyAgICAxLCAxMzcsIDIyNiwgMTUsIDI1LCAxLCAxMzcsIDIxMywgMTQwLCAyMTcsIDkyLCAyNSwgMSwgMTM3LCAyMDcsIDE1LCAyNSwgCisgICAgMSwgMTM3LCAyMDUsIDE1NCwgMjUsIDEsIDEzNywgMjE4LCA0MSwgMjUsIDEsIDEzNywgMjEzLCAzMywgMjUsIDEsIDEzNywgCisgICAgMjI1LCAzMSwgMjUsIDEsIDEzNywgMjIyLCA2MywgMjUsIDEsIDEzNywgMjIzLCAyNDMsIDI1LCAxLCAxMzcsIDIwNywgMTkzLCAKKyAgICAyNSwgMSwgMTM3LCAyMjEsIDQxLCAyNSwgMSwgMTM3LCAyMTAsIDI4LCAyNSwgMSwgMTM3LCAyMTAsIDM4LCAyNSwgMSwgCisgICAgMTM3LCAyMjUsIDE5OSwgMjUsIDEsIDEzNywgMjE4LCAxMzMsIDI1LCAxLCAxMzcsIDIwOSwgMjIwLCAyNSwgMSwgMTM3LCAKKyAgICAyMTgsIDE0OCwgMjUsIDEsIDEzNywgMjE2LCA2MSwgMjUsIDEsIDEzNywgMjE5LCAxNTAsIDI1LCAxLCAxMzcsIDIwOSwgCisgICAgMjUxLCAyNSwgMSwgMTM3LCAyMTQsIDIwNCwgMjUsIDEsIDEzNywgMjIwLCAyMzUsIDI1LCAxLCAxMzcsIDIyNCwgNzAsIDI1LCAKKyAgICAxLCAxMzcsIDIxMywgMTQwLCAyMjEsIDM0LCAyNSwgMSwgMTM3LCAyMDYsIDE1LCAyNSwgMSwgMTM3LCAyMTgsIDEzNSwgMjUsIAorICAgIDEsIDEzNywgMjIyLCAxMDksIDIxMCwgMTM1LCAyNSwgMSwgMTM3LCAyMTIsIDEsIDI1LCAxLCAxMzcsIDIzNywgMTk0LCAyNSwgCisgICAgMSwgOTYsIDIyMCwgNzAsIDI1LCAxLCA5NiwgMjA1LCAxNjAsIDI1LCAxLCA5NiwgMjIyLCA5OCwgMjUsIDEsIDk2LCAyMjUsIAorICAgIDc0LCAyNSwgMSwgOTYsIDIwMiwgMTgwLCAyNSwgMSwgOTYsIDIyNCwgNzYsIDI1LCAxLCA5NiwgMjE2LCAyMTAsIDI1LCAxLCAKKyAgICA5NiwgMjA5LCAxNSwgMjUsIDEsIDk2LCAyMTMsIDIwOCwgMjUsIDEsIDk2LCAyMTgsIDE2MSwgMjUsIDEsIDk2LCAyMjAsIAorICAgIDQxLCAyNSwgMSwgOTYsIDIxNCwgMjIxLCAyNSwgMSwgOTYsIDIwNiwgMjQ2LCAyNSwgMSwgOTYsIDIxOSwgMTk2LCAyNSwgMSwgCisgICAgOTYsIDIyNiwgNDMsIDI1LCAxLCA5NiwgMjAwLCAyMDcsIDI1LCAxLCA5NiwgMjExLCAxOTAsIDI1LCAxLCA5NiwgMjE5LCAKKyAgICAyMjAsIDI1LCAxLCA5NiwgMjE2LCAyMDcsIDI1LCAxLCA5NiwgMjA1LCAxNjEsIDI1LCAxLCA5NiwgMjI1LCAyNTEsIDI1LCAKKyAgICAxLCA5NiwgMjI0LCA5MSwgMjUsIDEsIDk2LCAyMTgsIDE2NCwgMjUsIDEsIDk2LCAyMTksIDE3MiwgMjUsIDEsIDk2LCAyMjIsIAorICAgIDIxNiwgMjUsIDEsIDk2LCAyMTksIDE4OSwgMjUsIDEsIDk2LCAyMTksIDE3MSwgMjUsIDEsIDk2LCAyMTgsIDE2MywgMjUsIAorICAgIDEsIDk2LCAyMTMsIDMwLCAyNSwgMSwgOTYsIDIxOSwgODQsIDI1LCAxLCA5NiwgMjE2LCA1OSwgMjUsIDEsIDk2LCAyMTIsIAorICAgIDYxLCAyNSwgMSwgOTYsIDIxOSwgMjA0LCAyNSwgMSwgOTYsIDIyMSwgMjQ3LCAyNSwgMSwgOTYsIDIzNSwgMTc2LCAyNSwgMSwgCisgICAgOTYsIDIxOSwgMTkyLCAyNSwgMSwgOTYsIDIxOSwgOTUsIDI1LCAxLCA5NiwgMjIyLCAxNjQsIDI1LCAxLCA5NiwgMjI0LCAKKyAgICA3MiwgMjUsIDEsIDk2LCAyMTksIDIyNSwgMjUsIDEsIDk2LCAyMjAsIDU0LCAyNSwgMSwgOTYsIDIwNywgMTQsIDIxOCwgCisgICAgMTQ2LCAyNSwgMSwgOTYsIDIxMCwgMTQxLCAyNSwgMSwgOTYsIDIxNCwgMjE0LCAyNSwgMSwgOTYsIDIyMCwgNzQsIDIwOSwgCisgICAgMjIsIDI1LCAxLCA5NiwgMjE5LCAyMTIsIDIxOCwgNTUsIDI1LCAxLCA5NiwgMjAwLCA1LCAyNSwgMSwgOTYsIDIzNSwgMTc3LCAKKyAgICAyNSwgMSwgOTYsIDIwNCwgMjE0LCAyNSwgMSwgOTYsIDIwMCwgMjEsIDI1LCAxLCA5NiwgMjE1LCAxMDYsIDI1LCAxLCA5NiwgCisgICAgMjA0LCAyMDIsIDI1LCAxLCA5NiwgMjI2LCAyMzEsIDI1LCAxLCA5NiwgMjA4LCAyMCwgMjUsIDEsIDk2LCAyMDYsIDEzNCwgCisgICAgMjUsIDEsIDk2LCAyMDIsIDI0MywgMjUsIDEsIDk2LCAyMDEsIDQ0LCAyNSwgMSwgOTYsIDIyNSwgMTczLCAyNSwgMSwgOTYsIAorICAgIDIxNCwgMjI0LCAyNSwgMSwgOTYsIDIwNywgMjcsIDI1LCAxLCA5NiwgMjM1LCAxOTcsIDI1LCAxLCA5NiwgMjE5LCAyMzUsIAorICAgIDI1LCAxLCA5NiwgMjEwLCA0MSwgMjUsIDEsIDk2LCAyMjEsIDI0MiwgMjUsIDEsIDk2LCAyMjIsIDEwMiwgMjUsIDEsIDk2LCAKKyAgICAyMTgsIDUsIDI1LCAxLCA5NiwgMjE5LCA0OCwgMjUsIDEsIDk2LCAyMzYsIDI2LCAyNSwgMSwgOTYsIDIwNCwgMjAzLCAyNSwgCisgICAgMSwgOTYsIDIyNiwgNSwgMjUsIDEsIDk2LCAyMDAsIDczLCAyNSwgMSwgOTYsIDIxOCwgNDIsIDI0NiwgMTI2LCAyNSwgMSwgCisgICAgOTYsIDE5OSwgMjUxLCAyNSwgMSwgOTYsIDIyMiwgMywgMjUsIDEsIDk2LCAyMjAsIDU5LCAyNSwgMSwgOTYsIDIxNSwgMTk1LCAKKyAgICAyNSwgMSwgOTYsIDE5OSwgMTk2LCAyNSwgMSwgOTYsIDIyNCwgMjMyLCAyNSwgMSwgOTYsIDIzNiwgMTg3LCAyNSwgMSwgOTYsIAorICAgIDIzNiwgMjUsIDI1LCAxLCA5NiwgMjE5LCAxODIsIDI1LCAxLCA5NiwgMjI2LCAyMzMsIDI1LCAxLCA5NiwgMjIyLCAyMTksIAorICAgIDI1LCAxLCA5NiwgMjE5LCAxOTUsIDI1LCAxLCA5NiwgMjM1LCAxODMsIDI1LCAxLCA5NiwgMjM3LCAxOTUsIDI1LCAxLCA5NiwgCisgICAgMjE4LCAxMzYsIDI1LCAxLCA5NiwgMjE1LCAyNTEsIDI1LCAxLCA5NiwgMjAwLCAxOSwgMjUsIDEsIDk2LCAyMTksIDIyMSwgCisgICAgMjUsIDEsIDk2LCAyMTgsIDQyLCAyNDgsIDIwNSwgMjUsIDEsIDk2LCAyMTcsIDI0MSwgMjUsIDEsIDk2LCAyMTUsIDc5LCAKKyAgICAyNSwgMSwgOTYsIDIyMSwgMjAwLCAyNSwgMSwgOTYsIDIzNiwgMTg1LCAyNSwgMSwgOTYsIDIyMCwgMTUxLCAyNSwgMSwgOTYsIAorICAgIDIyMSwgMzksIDI1LCAxLCA5NiwgMjM1LCAxODIsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDcwLCAyNSwgMSwgOTYsIDIyMCwgCisgICAgMjM2LCAyNSwgMSwgOTYsIDIxNCwgMjIwLCAyNSwgMSwgOTYsIDIxOSwgMTg0LCAyNSwgMSwgOTYsIDIyNSwgMjM3LCAyNSwgCisgICAgMSwgOTYsIDIxNSwgMTkyLCAyNSwgMSwgOTYsIDIxOCwgMTQ5LCAyNSwgMSwgOTYsIDIwMCwgMjAsIDI1LCAxLCA5NiwgMjE5LCAKKyAgICAyMDUsIDI1LCAxLCA5NiwgMjE2LCAyMTEsIDIxNiwgMzMsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDI0NywgMTY4LCAyNSwgMSwgCisgICAgOTYsIDIzNywgNiwgMjUsIDEsIDk2LCAyMTksIDg5LCAyNSwgMSwgOTYsIDYyLCAyNSwgMSwgOTYsIDIwNSwgMTU0LCAyNSwgCisgICAgMSwgOTYsIDc0LCAyNSwgMSwgOTYsIDcwLCAyNSwgMSwgOTYsIDIyNSwgNzIsIDI1LCAxLCA5NiwgMjE2LCAyMTEsIDIxNSwgCisgICAgMTE0LCAyNSwgMSwgOTYsIDIwNywgMzIsIDI1LCAxLCA5NiwgMjA2LCAyMzMsIDI1LCAxLCA5NiwgMjIwLCA3NCwgMjIwLCAKKyAgICAyMjMsIDIzMywgMTA5LCAyNSwgMSwgOTYsIDIxMCwgMTYsIDI1LCAxLCA5NiwgMjAwLCAxNiwgMjUsIDEsIDk2LCAyMTksIAorICAgIDE2NSwgMjUsIDEsIDk2LCAxOTksIDIwMSwgMjUsIDEsIDk2LCAxOTksIDIyOCwgMjA3LCAxNzMsIDI1LCAxLCA5NiwgMTk5LCAKKyAgICAyMjgsIDI0MywgMSwgMjUsIDEsIDk2LCAxOTksIDE4NSwgMjUsIDEsIDk2LCAxOTksIDE5MywgMjUsIDEsIDk2LCAyMjYsIAorICAgIDIxOSwgMjUsIDEsIDk2LCAyMTUsIDI0OSwgMjUsIDEsIDk2LCAyMTksIDkwLCAyMzgsIDEyNiwgMjUsIDEsIDk2LCAyMTQsIAorICAgIDIxNiwgMjUsIDEsIDk2LCAyMDAsIDIxMywgMjUsIDEsIDk2LCAyMzcsIDE0MCwgMjUsIDEsIDk2LCAyMDMsIDU0LCAyNSwgMSwgCisgICAgOTYsIDIyNCwgNDIsIDI1LCAxLCA5NiwgMjIxLCAyMTEsIDI1LCAxLCA5NiwgMjEzLCAxMDcsIDI1LCAxLCA5NiwgMjEzLCAKKyAgICAyMzQsIDI1LCAxLCA5NiwgMjE5LCAxNjQsIDI1LCAxLCA5NiwgMjE5LCAyNTMsIDI1LCAxLCA5NiwgMjEwLCA4LCAyNSwgMSwgCisgICAgOTYsIDIwOSwgMjUxLCAyNSwgMSwgOTYsIDIzNiwgMTkwLCAyMTMsIDE0MywgMjUsIDEsIDk2LCAxODgsIDI1LCAxLCA5NiwgCisgICAgMjE1LCAyMDQsIDI1LCAxLCA5NiwgMjI0LCA3MCwgMjUsIDEsIDk2LCAyMjYsIDg4LCAyNSwgMSwgOTYsIDIyMiwgNDAsIDI1LCAKKyAgICAxLCA5NiwgMTc4LCAyNSwgMSwgOTYsIDIyMiwgMTYxLCAyNSwgMSwgOTYsIDIwNiwgMTM2LCAyNSwgMSwgOTYsIDIyNiwgCisgICAgMTYzLCAyNSwgMSwgOTYsIDIyMSwgMTA2LCAyNSwgMSwgOTYsIDIwNiwgMTY2LCAyNSwgMSwgOTYsIDIzNywgMTY0LCAyNSwgCisgICAgMSwgOTYsIDIzNSwgMTcwLCAyNSwgMSwgMjE1LCAyMzMsIDE2MSwgMjUsIDEsIDIxNSwgMjMzLCA2NiwgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAyMjYsIDE1LCAyNSwgMSwgMjE1LCAyMzMsIDIzOCwgMjU1LCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgMTY3LCAyNSwgCisgICAgMSwgMjE1LCAyMzMsIDIwNywgMTUsIDI1LCAxLCAyMTUsIDIzMywgMjE4LCA0MSwgMjUsIDEsIDIxNSwgMjMzLCAxOTQsIDI1LCAKKyAgICAxLCAyMTUsIDIzMywgMjEzLCAzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTMsIDgxLCAyNSwgMSwgMjE1LCAyMzMsIDIyMiwgNjMsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjA3LCAzMiwgMjUsIDEsIDIxNSwgMjMzLCAyMjAsIDczLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgCisgICAgOTYsIDI1LCAxLCAyMTUsIDIzMywgMjIzLCAyNDMsIDI1LCAxLCAyMTUsIDIzMywgMjA3LCAxOTMsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMjEwLCAyOCwgMjUsIDEsIDIxNSwgMjMzLCAyMDksIDE4MiwgMjUsIDEsIDIxNSwgMjMzLCAyMTAsIDEzNywgMjUsIAorICAgIDEsIDIxNSwgMjMzLCAyMjUsIDE5OSwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDIzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIAorICAgIDEwNCwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDEzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDY3LCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDE5OSwgMjI3LCAyNSwgMSwgMjE1LCAyMzMsIDIwOSwgMjIwLCAyNSwgMSwgMjE1LCAyMzMsIDE4MywgMjUsIDEsIAorICAgIDIxNSwgMjMzLCAyMTgsIDE2NywgMjUsIDEsIDIxNSwgMjMzLCAyMTUsIDI0OSwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDE0OCwgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMDAsIDIxMywgMjUsIDEsIDIxNSwgMjMzLCAyMTYsIDYxLCAyNSwgMSwgMjE1LCAyMzMsIAorICAgIDIxMiwgMTc1LCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMTUwLCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgMTA3LCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIyNiwgMjQzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMTgxLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMjMyLCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIxMCwgOCwgMjUsIDEsIDIxNSwgMjMzLCAyMTQsIDIyMSwgMjUsIDEsIDIxNSwgMjMzLCAyMzcsIAorICAgIDYsIDI1LCAxLCAyMTUsIDIzMywgMjAxLCAxMTQsIDI1LCAxLCAyMTUsIDIzMywgMjI0LCAyMTAsIDI1LCAxLCAyMTUsIDIzMywgCisgICAgMjI0LCA3MCwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDg4LCAyNSwgMSwgMjE1LCAyMzMsIDIyMiwgMTAwLCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDIxMywgMTM5LCAyNSwgMSwgMjE1LCAyMzMsIDE3OCwgMjUsIDEsIDIxNSwgMjMzLCAyMjEsIDEzNiwgMjUsIDEsIAorICAgIDIxNSwgMjMzLCAyMjIsIDEwOCwgMjUsIDEsIDIxNSwgMjMzLCAyMDYsIDE0NiwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDUwLCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIxMiwgMjEsIDI1LCAxLCAyMTUsIDIzMywgMjAxLCAxNjUsIDIyMSwgNDQsIDEsIDIwNywgMzYsIAorICAgIDIyMSwgNDQsIDEsIDIxOSwgMjAxLCAyMjEsIDQ0LCAxLCAxOTksIDI0NSwgMjIxLCA0NCwgMSwgMjIxLCAxNjYsIDIyMSwgCisgICAgNDQsIDEsIDI0OSwgMTM2LCAyMjEsIDQ0LCAxLCAyNDIsIDU4LCAyMjEsIDQ0LCAxLCA2MiwgMjIxLCA0NCwgMSwgMjE1LCAKKyAgICAyMjksIDIyMSwgNDQsIDEsIDIyNiwgMjAyLCAyMjEsIDQ0LCAxLCAyMzQsIDE2OSwgMjIxLCA0NCwgMSwgMjQyLCAzMywgCisgICAgMjIxLCA0NCwgMSwgMjQ2LCAxOTIsIDIyMSwgNDQsIDEsIDIyNywgNywgMjIxLCA0NCwgMSwgMjE3LCA5MywgMjIxLCA0NCwgCisgICAgMSwgMjIyLCAyMTYsIDIyMSwgNDQsIDEsIDIxOSwgMTE4LCAyMjEsIDQ0LCAxLCAxNzIsIDIyMSwgNDQsIDEsIDIxNywgNjMsIAorICAgIDIyMSwgNDQsIDEsIDc0LCAyMjEsIDQ0LCAxLCAyMTMsIDEsIDIyMSwgNDQsIDEsIDIxMCwgMzMsIDIyMSwgNDQsIDEsIDIwNiwgCisgICAgMTA1LCAyMjEsIDQ0LCAxLCAyMzksIDI3LCAyMjEsIDQ0LCAxLCAyMDEsIDExNCwgMjIxLCA0NCwgMSwgNzIsIDIyMSwgNDQsIAorICAgIDEsIDIyNiwgODgsIDIyMSwgNDQsIDEsIDIyNSwgODAsIDIyMSwgNDQsIDEsIDE5NCwgMjIxLCA0NCwgMSwgMjM0LCAyMjMsIAorICAgIDIyMSwgNDQsIDEsIDIxMywgODgsIDIyMSwgNDQsIDEsIDIwNiwgMTc5LCAyMjEsIDQ0LCAxNywgMTk5LCA4MSwgMjIxLCA0NCwgCisgICAgMTcsIDEwMiwgMjIxLCA0NCwgMTcsIDEwNSwgMjIxLCA0NCwgMTcsIDE0NywgMjIxLCA0NCwgMTcsIDE0OSwgMjIxLCA0NCwgCisgICAgMTcsIDE2NCwgMjIxLCA0NCwgMTcsIDE4NywgMjIxLCA0NCwgMTcsIDIxMCwgMTM1LCAyMjEsIDQ0LCAxNywgMTkyLCAyMjEsIAorICAgIDQ0LCAxNywgMjE5LCAxMTMsIDIyMSwgNDQsIDI0MiwgMTAsIDIyMSwgNDQsIDUzLCAyNDIsIDEwLCAyNDksIDU4LCAyMDMsIAorICAgIDg3LCAxLCAyMzgsIDE2MSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMTYxLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMTEsIDIwMiwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM3LCAxOTUsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyMiwgMTAzLCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAyMDAsIDYsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzNiwgNzQsIDI0OSwgNTgsIDIwMywgODcsIDEsIAorICAgIDI0MSwgODEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyNiwgNDksIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyNywgMTY2LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzMsIDY3LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDEsIDExNCwgMjQ5LCA1OCwgCisgICAgMjAzLCA4NywgMSwgMTk5LCAxNCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM2LCAxOSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgCisgICAgMjQwLCAyMTEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDI0NywgNzYsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMywgMTc1LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAxMzgsIDI0OSwgNTgsIDIwMywgODcsIDEsIDI0OSwgMTM2LCAyNDksIDU4LCAyMDMsIAorICAgIDg3LCAxLCAyMDEsIDE2NiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAwLCA0NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMTcyLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDEsIDExMSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNjIsIDI0OSwgNTgsIDIwMywgODcsIAorICAgIDEsIDc0LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMTcsIDYzLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA2NiwgMjQ5LCA1OCwgCisgICAgMjAzLCA4NywgMSwgMjM4LCAyNTUsIDI0OSwgNTgsIDIwMywgODcsIDEsIDcyLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA3MCwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDEyMiwgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAxMjgsIDIwNSwgMTc0LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMjIxLCAyMDYsIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMjI0LCA1NiwgCisgICAgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMzQsIDU3LCAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDEyNSwgMTIzLCAyMiwgMjI3LCA0LCAxMjUsIDEyMywgMjIsIDIyNywgMCwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjYsIDE2MCwgMTI1LCAxMjMsIDIyLCAyMjYsIDEyNiwgMTI1LCAxMjMsIDIyLCAyMjcsIDI1LCAxMjUsIDEyMywgMjIsIAorICAgIDIyNywgMjIsIDEyNSwgMTIzLCAyMiwgMjI2LCA2LCAxMjUsIDEyMywgMjIsIDIyNSwgMjM0LCAxMjUsIDEyMywgMjIsIDIyNywgCisgICAgNiwgMTI1LCAxMjMsIDIyLCAyMjYsIDIxNywgMTI1LCAxMjMsIDIyLCAyMjcsIDgxLCAxMjUsIDEyMywgMjIsIDIyNywgNzgsIAorICAgIDEyNSwgMTIzLCAyMiwgMjI2LCA2NywgMTI1LCAxMjMsIDIyLCAyMjYsIDY0LCAxMjUsIDEyMywgMjIsIDIyNywgMTksIDEyNSwgCisgICAgMTIzLCAyMiwgMjI3LCAxNywgMTI1LCAxMjMsIDIyLCAyMjYsIDgsIDEyNSwgMTIzLCAyMiwgMjI2LCA3LCAxMjUsIDEyMywgCisgICAgMjIsIDIyNiwgODUsIDEyNSwgMTIzLCAyMiwgMjI2LCA1MywgMTI1LCAxMjMsIDIyLCAyMjYsIDE2MiwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjYsIDE2MSwgMTI1LCAxMjMsIDIyLCAyMjcsIDk2LCAxMjUsIDEyMywgMjIsIDIyNywgMjEsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI1LCAyMjUsIDEyNSwgMTIzLCAyMiwgMjI1LCAyMTYsIDEyNSwgMTIzLCAyMiwgMjI3LCAxMDQsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI3LCA5NywgMTI1LCAxMjMsIDExMSwgMjAzLCA2NSwgMTI1LCAxMjMsIDExMSwgMjE4LCAxMzksIDEyNSwgMTIzLCAxMTEsIAorICAgIDIyNSwgNTgsIDEyNSwgMTIzLCAxMTEsIDIzNCwgMTUwLCAxMjUsIDEyMywgMTExLCAyMTksIDI0LCAxMjUsIDEyMywgMTExLCAKKyAgICAyMTMsIDE5OSwgMTI1LCAxMjMsIDExMSwgMjE5LCA1MSwgMTI1LCAxMjMsIDExMSwgMjE0LCAxMzMsIDEyNSwgMTIzLCAxMTEsIAorICAgIDIwMCwgNjEsIDEyNSwgMTIzLCAxMTEsIDIzNCwgMzYsIDEyNSwgMTIzLCAxMTEsIDIyMiwgMTIzLCAxMjUsIDEyMywgMTExLCAKKyAgICAyNDcsIDEyLCAxMjUsIDEyMywgMTExLCAyMjAsIDc4LCAxMjUsIDEyMywgMTExLCAyMzMsIDIyOCwgMTI1LCAxMjMsIDExMSwgCisgICAgMjE1LCAxMjIsIDEyNSwgMTIzLCAxMTEsIDIxOCwgMTQ0LCAxMjUsIDEyMywgMTExLCAyMjAsIDExNiwgMTI1LCAxMjMsIAorICAgIDExMSwgMjUwLCAxMzksIDEyNSwgMTIzLCAxMTEsIDIwMCwgMTc3LCAxMjUsIDEyMywgMTExLCAyNDcsIDEwOSwgMTI1LCAKKyAgICAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIwNCwgMjExLCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjA5LCAyOSwgMTI1LCAxMjMsIAorICAgIDEzNCwgMjQ2LCAxNjEsIDIyNiwgMjM1LCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjI2LCAxOTMsIDEyNSwgMTIzLCAKKyAgICAxMzQsIDI0NiwgMTYxLCAyMDgsIDE4LCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjMzLCAxOTQsIDEyNSwgMTIzLCAxMzQsIAorICAgIDI0NiwgMTYxLCAyMDYsIDIyMCwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMDYsIDU4LCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIwNSwgMjEsIDI0NywgNjcsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjQ3LCAxLCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIwNiwgODMsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjM3LCAxMzcsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgCisgICAgMjE4LCAxMzQsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgMjEzLCA5MCwgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMDUsIAorICAgIDEzNywgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMzcsIDE3NiwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMTEsIDE4NCwgCisgICAgMTI1LCAxMjMsIDIsIDIyMiwgNjIsIDIwOCwgMjIsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjE4LCAxODMsIDEyNSwgMTIzLCAKKyAgICAyLCAyMzIsIDIzNiwgMjAwLCA4MCwgMTI1LCAxMjMsIDIsIDIwMCwgMTc2LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNSwgCisgICAgOCwgMjEyLCAyNDYsIDEyNSwgMTIzLCAxNywgMTk5LCA4MSwgMTI1LCAxMjMsIDE3LCAxMDIsIDEyNSwgMTIzLCAxNywgMTA1LCAKKyAgICAxMjUsIDEyMywgMTcsIDE0NywgMTI1LCAxMjMsIDE3LCAxNDksIDEyNSwgMTIzLCAxNywgMTY0LCAxMjUsIDEyMywgMTcsIAorICAgIDE4NywgMTI1LCAxMjMsIDE3LCAyMTAsIDEzNSwgMTI1LCAxMjMsIDE3LCAxOTIsIDEyNSwgMTIzLCAxNywgMjE5LCAxMTMsIAorICAgIDEyNSwgMTIzLCA0MSwgMjA2LCAxNjEsIDEyNSwgMTIzLCA0MSwgMjMzLCA4MCwgMTI1LCAxMjMsIDQxLCAyMDYsIDE2NywgCisgICAgMjA2LCA0OCwgMTI1LCAxMjMsIDQxLCAyMjEsIDE2NywgMTI1LCAxMjMsIDQxLCAyMzMsIDgzLCAyMjEsIDE2NywgMTI1LCAKKyAgICAxMjMsIDQxLCAyMDYsIDE2NywgMjQ4LCAxNzAsIDEyNSwgMTIzLCA0MSwgMjA1LCA4NSwgMTI1LCAxMjMsIDIsIDIwMiwgCisgICAgMTc2LCAyMjQsIDM3LCAxMjUsIDEyMywgMiwgMjAwLCAxMzIsIDEyNSwgMTIzLCAyLCAyMzQsIDMxLCAxMjUsIDEyMywgMiwgCisgICAgMjA2LCA3MywgMjM0LCAzMSwgMTI1LCAxMjMsIDIsIDE5OCwgMjQ0LCAyMDYsIDExNiwgMTI1LCAxMjMsIDIsIDIzMywgMjEyLCAKKyAgICAxMjUsIDEyMywgMiwgMjE4LCAxOTcsIDEyNSwgMTIzLCAyLCAyMDAsIDE2OCwgMTI1LCAxMjMsIDIsIDIxOCwgMTM3LCAxMjUsIAorICAgIDEyMywgMiwgMjUwLCAxMjMsIDEyNSwgMTIzLCAyLCAyMDQsIDEzNiwgMjQ3LCA2NiwgMTI1LCAxMjMsIDIsIDIyMiwgNjIsIAorICAgIDIwNSwgMjQsIDEyNSwgMTIzLCAyLCAyMDYsIDIyMSwgMTI1LCAxMjMsIDIsIDIyNCwgNjcsIDEyNSwgMTIzLCAyLCAyMjAsIAorICAgIDI1MiwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMzQsIDIxOSwgMjI0LCAxNSwgMjE4LCAxNDIsIDIxOCwgMTQxLCAxMjUsIAorICAgIDEyMywgMiwgMjQ2LCAxNjEsIDI0MiwgMjEzLCAyMDUsIDE1LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNCwgMTM0LCAKKyAgICAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNCwgMTM1LCAyNDYsIDE4MCwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMTQsIAorICAgIDIxOSwgMjQxLCAyMzUsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjE4LCAxOTAsIDIwNSwgMTQ1LCAxMjUsIDEyMywgMjQ2LCAKKyAgICAxMzMsIDIsIDIwNSwgMTksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjAwLCA0NywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAKKyAgICAyMjQsIDE1NSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjUsIDU2LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwMCwgCisgICAgMTMxLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNiwgNjgsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjM0LCAxNDcsIAorICAgIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjIxLCAzNywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDYsIDU5LCAxMjUsIDEyMywgCisgICAgMjQ2LCAxMzMsIDIsIDIwNSwgMjksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjE1LCAyNDIsIDEyNSwgMTIzLCAyNDYsIAorICAgIDEzMywgMiwgMjI2LCAyMDUsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjM0LCAyMDksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgCisgICAgMjAzLCA4NCwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzcsIDE3MywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDAsIDg3LCAKKyAgICAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwNSwgMiwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjUsIDIyMCwgMTI1LCAxMjMsIAorICAgIDI0NiwgMTMzLCAyLCAyMDEsIDE1NiwgMTE0LCAxLCAxNzIsIDExNCwgMSwgMjQ5LCAxMzYsIDExNCwgMSwgMTEsIDE3MiwgCisgICAgMTE0LCAxLCAyMTUsIDEzNSwgMTE0LCAxLCAxNzgsIDExNCwgMSwgMjIxLCAyMTQsIDExNCwgMSwgMjUwLCAyMzQsIDE3OCwgCisgICAgMTE0LCAxLCAyMzcsIDE5NSwgMTE0LCAxLCAyMDMsIDkwLCAxMTQsIDEsIDIwMiwgMjM1LCAxMTQsIDEsIDIwNywgMzYsIAorICAgIDExNCwgMSwgMjQyLCA1OCwgMTE0LCAxLCAxMSwgMjA0LCAyNTMsIDExNCwgMSwgMTEsIDIwNywgMzYsIDExNCwgMSwgMjA0LCAKKyAgICAyNTMsIDExNCwgMSwgMjQxLCAyMjAsIDExNCwgMSwgMTg4LCAxMTQsIDEsIDIxOSwgMTU0LCAxMTQsIDEsIDExLCAyMTksIAorICAgIDIxLCAxMTQsIDEsIDI1MCwgMjM0LCAxODgsIDExNCwgMSwgMjE5LCAyMSwgMTE0LCAxLCAyMTksIDcsIDExNCwgMSwgMTk0LCAKKyAgICAxMTQsIDEsIDIyNCwgMSwgMTE0LCAxLCAyMjQsIDIyMywgMTE0LCAxLCAyMjQsIDIxMiwgMTE0LCAxLCAyMDUsIDIwMCwgCisgICAgMTE0LCAxLCAyNDAsIDIxOSwgMTE0LCAxLCAyMDUsIDE5MiwgMTE0LCAxLCAyNDAsIDIxOCwgMTE0LCAxLCAxNjEsIDExNCwgCisgICAgMSwgMjM2LCA4OSwgMTE0LCAxLCAxMSwgMTYxLCAxMTQsIDEsIDIxNCwgMTU5LCAxMTQsIDEsIDIxNCwgMTM2LCAxMTQsIDEsIAorICAgIDIxOSwgMjUzLCAxMTQsIDEsIDIxOSwgMjAyLCAxMTQsIDEsIDI1MCwgMjM0LCAyMTksIDI1MywgMTE0LCAxLCAxNDQsIDExNCwgCisgICAgMSwgMjAwLCAxODEsIDExNCwgMSwgMjM1LCAxOTksIDExNCwgMSwgMjM1LCAxNzQsIDExNCwgMSwgMjA1LCA3LCAxMTQsIDEsIAorICAgIDIzOSwgNzcsIDExNCwgMSwgMjE4LCA2MCwgMTE0LCAxLCAyMTgsIDQzLCAxMTQsIDEsIDIwNSwgMjIsIDExNCwgMSwgMjM5LCAKKyAgICA4NywgMTE0LCAxLCAxMSwgMjA1LCAyMiwgMTE0LCAxLCAxMSwgMjM5LCA4NywgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAyMiwgCisgICAgMTE0LCAxLCAyMTAsIDExNCwgMTE0LCAxLCAyMDgsIDE3OSwgMTE0LCAxLCAxOTksIDc3LCAxMTQsIDEsIDE5OSwgNSwgMTE0LCAKKyAgICAxLCAyMDUsIDMyLCAxMTQsIDEsIDIzOSwgOTMsIDExNCwgMSwgMTEsIDIwNSwgMzIsIDExNCwgMSwgMjEyLCA2NCwgMTE0LCAKKyAgICAxLCAxOTksIDExNCwgMTE0LCAxLCAxOTksIDYsIDExNCwgMSwgMTk4LCAyMzIsIDExNCwgMSwgMTk4LCAyMTIsIDExNCwgMSwgCisgICAgMjUwLCAyMzQsIDE5OCwgMjMyLCAxMTQsIDEsIDE5OCwgMjA0LCAxMTQsIDEsIDE5OCwgMjExLCAxMTQsIDEsIDIwMSwgMTE0LCAKKyAgICAxMTQsIDEsIDI1MSwgMTg1LCAxMTQsIDEsIDIzNCwgODQsIDExNCwgMSwgMjIwLCAxMjEsIDExNCwgMiwgMjUwLCAxNzEsIAorICAgIDExNCwgMiwgMjEzLCAxNjUsIDIwMiwgMTg3LCAxMTQsIDIsIDIxMywgMTY1LCAyNTAsIDE3MSwgMTE0LCAyMiwgMiwgNjIsIAorICAgIDExNCwgMjIsIDIsIDI1MiwgMTM4LCAxMTQsIDIyLCAyLCAyNTEsIDE4MSwgMTE0LCAyMiwgMiwgMjUxLCA4NSwgMTE0LCAyMiwgCisgICAgMiwgMjUxLCA3NiwgMTE0LCAyMiwgMiwgNzQsIDExNCwgMjIsIDIsIDIxNywgNjMsIDExNCwgMjIsIDIsIDIwMSwgMCwgMTE0LCAKKyAgICAyMiwgMiwgMjAxLCAxNDcsIDExNCwgMjIsIDIsIDcyLCAxMTQsIDIyLCAyLCAyMzgsIDE3OSwgMTE0LCAyMiwgMiwgMjM4LCAKKyAgICAxNjUsIDExNCwgMjIsIDIsIDIxNywgMTE4LCAxMTQsIDIyLCAyLCA3MCwgMTE0LCAyMiwgMiwgMjMyLCAyNDAsIDExNCwgMjIsIAorICAgIDIsIDIzMiwgMjM5LCAxMTQsIDIyLCAyLCAyMzIsIDIzOCwgMTE0LCAyMiwgMiwgMjI4LCA0NSwgMTE0LCAyMiwgMiwgMjI4LCAKKyAgICAxNzgsIDExNCwgMjIsIDIsIDIyOCwgMTUxLCAxMTQsIDIyLCAyLCAyMjgsIDgsIDExNCwgMjIsIDIsIDIyOCwgOTEsIDExNCwgCisgICAgMjIsIDIsIDY2LCAxMTQsIDIyLCAyLCAyMDQsIDQ2LCAxMTQsIDIyLCAyLCAyMDQsIDQ1LCAxMTQsIDIyLCAyLCAyMDQsIDQ0LCAKKyAgICAxMTQsIDIyLCAyLCAyMDMsIDE4MiwgMTE0LCAyMiwgMiwgMjA0LCAyOCwgMTE0LCAyMiwgMiwgMjAzLCAyNDYsIDExNCwgMjIsIAorICAgIDIsIDIwMCwgMTIzLCAxMTQsIDIyLCAyLCAyMDAsIDksIDExNCwgMjIsIDIsIDI1MSwgMjIxLCAxMTQsIDIyLCAyLCAyNTEsIAorICAgIDIxNywgMTE0LCAyMiwgMiwgMjM4LCAxMDgsIDExNCwgMjIsIDIsIDIxMiwgMjE5LCAyMzgsIDEwOCwgMTE0LCAyMiwgMiwgCisgICAgMjM4LCAxMTUsIDExNCwgMjIsIDIsIDIxMiwgMjE5LCAyMzgsIDExNSwgMTE0LCAyMiwgMiwgMjUxLCAxNzYsIDExNCwgMjIsIAorICAgIDIsIDIzOCwgMjM0LCAxMTQsIDIyLCAyLCAyNTAsIDEzOSwgMTE0LCAyMiwgMiwgMjE3LCAzLCAxMTQsIDIyLCAyLCAyMjAsIAorICAgIDIxNCwgMTE0LCAyMiwgMiwgMjE5LCAyNTUsIDExNCwgMTUwLCAyMTMsIDQ2LCAxMTQsIDE1MCwgMjA1LCAxNTgsIDIxMywgCisgICAgNDYsIDExNCwgMTUwLCA1NiwgMTE0LCAxNTAsIDU3LCAxMTQsIDEsIDIwNSwgMTcyLCAxMTQsIDEsIDIwNSwgMTcxLCAxMTQsIAorICAgIDEsIDIwNSwgMTcwLCAxMTQsIDEsIDIwNSwgMTY5LCAxMTQsIDEsIDIwNSwgMTY4LCAxMTQsIDEsIDIwNSwgMTY3LCAxMTQsIAorICAgIDEsIDIwNSwgMTY2LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE3MywgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNzIsIDExNCwgCisgICAgMSwgMjEzLCAxNjUsIDIwNSwgMTcwLCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE2OSwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAKKyAgICAxNjgsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTY2LCAxOCwgMjI4LCAxMCwgODEsIDE4LCAyNDYsIDYxLCAxOCwgMjQ2LCAKKyAgICA2MCwgMTgsIDI0NiwgNTksIDE4LCAyNDYsIDU4LCAxOCwgMjQ2LCA1NywgMTgsIDI0NiwgNTYsIDE4LCAyNDYsIDU1LCAxOCwgCisgICAgMjQ2LCA1NCwgMTgsIDI0NiwgNTMsIDE4LCAyNDYsIDUyLCAxOCwgMjQ2LCA1MSwgMTgsIDI0NiwgNTAsIDE4LCAyNDYsIDQ5LCAKKyAgICAxOCwgMjQ2LCA0OCwgMTgsIDI0NiwgNDcsIDE4LCAyNDYsIDQ2LCAxOCwgMjQ2LCA0NSwgMTgsIDI0NiwgNDQsIDE4LCAyNDYsIAorICAgIDQzLCAxOCwgMjQ2LCA0MiwgMTgsIDI0NiwgNDEsIDE4LCAyNDYsIDQwLCAxOCwgMjQ2LCAzOSwgMTgsIDI0NiwgMzgsIDE4LCAKKyAgICAyNDYsIDM3LCAxOCwgMjQ2LCAzNiwgMTgsIDI0NiwgMzUsIDE4LCAyNDYsIDM0LCAxOCwgMjQ2LCAzMywgMTgsIDI0NiwgMzIsIAorICAgIDE4LCAyNDYsIDMxLCAxOCwgMjQ2LCAzMCwgMTgsIDI0NiwgMjksIDE4LCAyNDYsIDI4LCAxOCwgMjQ2LCAyNywgMTgsIDI0NiwgCisgICAgMjYsIDE4LCAyNDYsIDI1LCAxOCwgMjQ2LCAyNCwgMTgsIDI0NiwgMjMsIDE4LCAyNDYsIDIyLCAxOCwgMjQ2LCAyMSwgMTgsIAorICAgIDI0NiwgMjAsIDE4LCAyNDYsIDE5LCAxOCwgMjQ2LCAxOCwgMTgsIDI0NiwgMTcsIDE4LCAyNDYsIDE2LCAxOCwgMjQ2LCAxNSwgCisgICAgMTgsIDI0NiwgMTQsIDE4LCAyNDYsIDEzLCAxOCwgMjQ2LCAxMiwgMTgsIDI0NiwgMTEsIDE4LCAyNDYsIDEwLCAxOCwgMjQ2LCAKKyAgICA5LCAxOCwgMjQ2LCA4LCAxOCwgMjQ2LCA3LCAxOCwgMjQ2LCA2LCAxOCwgMjQ2LCA1LCAxOCwgMjQ2LCA0LCAxOCwgMjQ2LCAKKyAgICAzLCAxOCwgMjQ2LCAyLCAxOCwgMjQ2LCAxLCAxOCwgMjQ2LCAwLCAxOCwgMjQ1LCAyNTUsIDE4LCAyNDUsIDI1NCwgMTgsIAorICAgIDI0NSwgMjUzLCAxOCwgMjQ1LCAyNTIsIDE4LCAyNDUsIDI1MSwgMTgsIDI0NSwgMjUwLCAxOCwgMjQ1LCAyNDksIDE4LCAKKyAgICAyNDUsIDI0OCwgMTgsIDI0NSwgMjQ3LCAxOCwgMjQ1LCAyNDYsIDE4LCAyNDUsIDI0NSwgMTgsIDI0NSwgMjQ0LCAxOCwgCisgICAgMjQ1LCAyNDMsIDE4LCAyNDUsIDI0MiwgMTgsIDI0NSwgMjQxLCAxOCwgMjQ1LCAyNDAsIDE4LCAyNDUsIDIzOSwgMTgsIAorICAgIDI0NSwgMjM4LCAxOCwgMjQ1LCAyMzcsIDE4LCAyNDUsIDIzNiwgMTgsIDI0NSwgMjM1LCAxOCwgMjQ1LCAyMzQsIDE4LCAKKyAgICAyNDUsIDIzMywgMTgsIDI0NSwgMjMyLCAxOCwgMjQ1LCAyMzEsIDE4LCAyNDUsIDIzMCwgMTgsIDI0NSwgMjI5LCAxOCwgCisgICAgMjQ1LCAyMjgsIDE4LCAyNDUsIDIyNywgMTgsIDI0NSwgMjI2LCAxOCwgMjQ1LCAyMjUsIDE4LCAyNDUsIDIyNCwgMTgsIAorICAgIDI0NSwgMjIzLCAxOCwgMjQ1LCAyMjIsIDE4LCAyNDUsIDIyMSwgMTgsIDI0NSwgMjIwLCAxOCwgMjQ1LCAyMTksIDE4LCAKKyAgICAyNDUsIDIxOCwgMTgsIDI0NSwgMjE3LCAxOCwgMjQ1LCAyMTYsIDE4LCAyNDUsIDIxNSwgMTgsIDI0NSwgMjE0LCAxOCwgCisgICAgMjQ1LCAyMTMsIDE4LCAyNDUsIDIxMiwgMTgsIDI0NSwgMjExLCAxOCwgMjQ1LCAyMTAsIDE4LCAyNDUsIDIwOSwgMTgsIAorICAgIDI0NSwgMjA4LCAxOCwgMjQ1LCAyMDcsIDE4LCAyNDUsIDIwNiwgMTgsIDI0NSwgMjA1LCAxOCwgMjQ1LCAyMDQsIDE4LCAKKyAgICAyNDUsIDIwMywgMTgsIDI0NSwgMjAyLCAxOCwgMjQ1LCAyMDEsIDE4LCAyNDUsIDIwMCwgMTgsIDI0NSwgMTk5LCAxOCwgCisgICAgMjQ1LCAxOTgsIDE4LCAyNDUsIDE5NywgMTgsIDI0NSwgMTk2LCAxOCwgMjQ1LCAxOTUsIDE4LCAyNDUsIDE5NCwgMTgsIAorICAgIDI0NSwgMTkzLCAxOCwgMjQ1LCAxOTIsIDE4LCAyNDUsIDE5MSwgMTgsIDI0NSwgMTkwLCAxOCwgMjQ1LCAxODksIDE4LCAKKyAgICAyNDUsIDE4OCwgMTgsIDI0NSwgMTg3LCAxOCwgMjQ1LCAxODYsIDE4LCAyNDUsIDE4NSwgMTgsIDI0NSwgMTg0LCAxOCwgCisgICAgMjQ1LCAxODMsIDE4LCAyNDUsIDE4MiwgMTgsIDI0NSwgMTgxLCAxOCwgMjQ1LCAxODAsIDE4LCAyNDUsIDE3OSwgMTgsIAorICAgIDI0NSwgMTc4LCAxOCwgMjQ1LCAxNzcsIDE4LCAyNDUsIDE3NiwgMTgsIDI0NSwgMTc1LCAxOCwgMjQ1LCAxNzQsIDE4LCAKKyAgICAyNDUsIDE3MywgMTgsIDI0NSwgMTcyLCAxOCwgMjQ1LCAxNzEsIDE4LCAyNDUsIDE3MCwgMTgsIDI0NSwgMTY5LCAxOCwgCisgICAgMjQ1LCAxNjgsIDE4LCAyNDUsIDE2NywgMTgsIDI0NSwgMTY2LCAxOCwgMjQ1LCAxNjUsIDE4LCAyNDUsIDE2NCwgMTgsIAorICAgIDI0NSwgMTYzLCAxOCwgMjQ1LCAxNjIsIDE4LCAyNDUsIDE2MSwgMTgsIDI0NSwgMTYwLCAxOCwgMjQ1LCAxNTksIDE4LCAKKyAgICAyNDUsIDE1OCwgMTgsIDI0NSwgMTU3LCAxOCwgMjQ1LCAxNTYsIDE4LCAyNDUsIDE1NSwgMTgsIDI0NSwgMTU0LCAxOCwgCisgICAgMjQ1LCAxNTMsIDE4LCAyNDUsIDE1MiwgMTgsIDI0NSwgMTUxLCAxOCwgMjQ1LCAxNTAsIDE4LCAyNDUsIDE0OSwgMTgsIAorICAgIDI0NSwgMTQ4LCAxOCwgMjQ1LCAxNDcsIDE4LCAyNDUsIDE0NiwgMTgsIDI0NSwgMTQ1LCAxOCwgMjQ1LCAxNDQsIDE4LCAKKyAgICAyNDUsIDE0MywgMTgsIDI0NSwgMTQyLCAxOCwgMjQ1LCAxNDEsIDE4LCAyNDUsIDE0MCwgMTgsIDI0NSwgMTM5LCAxOCwgCisgICAgMjQ1LCAxMzgsIDE4LCAyNDUsIDEzNywgMTgsIDI0NSwgMTM2LCAxOCwgMjQ1LCAxMzUsIDE4LCAyNDUsIDEzNCwgMTgsIAorICAgIDI0NSwgMTMzLCAxOCwgMjQ1LCAxMzIsIDE4LCAyNDUsIDEzMSwgMTgsIDI0NSwgMTMwLCAxOCwgMjQ1LCAxMjksIDE4LCAKKyAgICAyNDUsIDEyOCwgMTgsIDI0NSwgMTI3LCAxOCwgMjQ1LCAxMjYsIDE4LCAyNDUsIDEyNSwgMTgsIDI0NSwgMTI0LCAxOCwgCisgICAgMjQ1LCAxMjMsIDE4LCAyNDUsIDEyMiwgMTgsIDI0NSwgMTIxLCAxOCwgMjQ1LCAxMjAsIDE4LCAyNDUsIDExOSwgMTgsIAorICAgIDI0NSwgMTE4LCAxOCwgMjQ1LCAxMTcsIDE4LCAyNDUsIDExNiwgMTgsIDI0NSwgMTE1LCAxOCwgMjQ1LCAxMTQsIDE4LCAKKyAgICAyNDUsIDExMywgMTgsIDI0NSwgMTEyLCAxOCwgMjQ1LCAxMTEsIDE4LCAyNDUsIDExMCwgMTgsIDI0NSwgMTA5LCAxOCwgCisgICAgMjQ1LCAxMDgsIDE4LCAyNDUsIDEwNywgMTgsIDI0NSwgMTA2LCAxOCwgMjQ1LCAxMDUsIDE4LCAyNDUsIDEwNCwgMTgsIAorICAgIDI0NSwgMTAzLCAxOCwgMjQ1LCAxMDIsIDE4LCAyNDUsIDEwMSwgMTgsIDI0NSwgMTAwLCAxOCwgMjQ1LCA5OSwgMTgsIDI0NSwgCisgICAgOTgsIDE4LCAyNDUsIDk3LCAxOCwgMjQ1LCA5NiwgMTgsIDI0NSwgOTUsIDE4LCAyNDUsIDk0LCAxOCwgMjQ1LCA5MywgMTgsIAorICAgIDI0NSwgOTIsIDE4LCAyNDUsIDkxLCAxOCwgMjQ1LCA5MCwgMTgsIDI0NSwgODksIDE4LCAyNDUsIDg4LCAxOCwgMjQ1LCA4NywgCisgICAgMTgsIDI0NSwgODYsIDE4LCAyNDUsIDg1LCAxOCwgMjQ1LCA4NCwgMTgsIDI0NSwgODMsIDE4LCAyNDUsIDgyLCAxOCwgMjQ1LCAKKyAgICA4MSwgMTgsIDI0NSwgODAsIDE4LCAyNDUsIDc5LCAxOCwgMjQ1LCA3OCwgMTgsIDI0NSwgNzcsIDE4LCAyNDUsIDc2LCAxOCwgCisgICAgMjQ1LCA3NSwgMTgsIDI0NSwgNzQsIDE4LCAyNDUsIDczLCAxOCwgMjQ1LCA3MiwgMTgsIDI0NSwgNzEsIDE4LCAyNDUsIDcwLCAKKyAgICAxOCwgMjQ1LCA2OSwgMTgsIDI0NSwgNjgsIDE4LCAyNDUsIDY3LCAxOCwgMjQ1LCA2NiwgMTgsIDI0NSwgNjUsIDE4LCAyNDUsIAorICAgIDY0LCAxOCwgMjQ1LCA2MywgMTgsIDI0NSwgNjIsIDE4LCAyNDUsIDYxLCAxOCwgMjQ1LCA2MCwgMTgsIDI0NSwgNTksIDE4LCAKKyAgICAyNDUsIDU4LCAxOCwgMjQ1LCA1NywgMTgsIDI0NSwgNTYsIDE4LCAyNDUsIDU1LCAxOCwgMjQ1LCA1NCwgMTgsIDI0NSwgNTMsIAorICAgIDE4LCAyNDUsIDUyLCAxOCwgMjQ1LCA1MSwgMTgsIDI0NSwgNTAsIDE4LCAyNDUsIDQ5LCAxOCwgMjQ1LCA0OCwgMTgsIDI0NSwgCisgICAgNDcsIDE4LCAyNDUsIDQ2LCAxOCwgMjQ1LCA0NSwgMTgsIDI0NSwgNDQsIDE4LCAyNDUsIDQzLCAxOCwgMjQ1LCA0MiwgMTgsIAorICAgIDI0NSwgNDEsIDE4LCAyNDUsIDQwLCAxOCwgMjQ1LCAzOSwgMTgsIDI0NSwgMzgsIDE4LCAyNDUsIDM3LCAxOCwgMjQ1LCAzNiwgCisgICAgMTgsIDI0NSwgMzUsIDE4LCAyNDUsIDM0LCAxOCwgMjQ1LCAzMywgMTgsIDI0NSwgMzIsIDE4LCAyNDUsIDMxLCAxOCwgMjQ1LCAKKyAgICAzMCwgMTgsIDI0NSwgMjksIDE4LCAyNDUsIDI4LCAxOCwgMjQ1LCAyNywgMTgsIDI0NSwgMjYsIDE4LCAyNDUsIDI1LCAxOCwgCisgICAgMjQ1LCAyNCwgMTgsIDI0NSwgMjMsIDE4LCAyNDUsIDIyLCAxOCwgMjQ1LCAyMSwgMTgsIDI0NSwgMjAsIDE4LCAyNDUsIDE5LCAKKyAgICAxOCwgMjQ1LCAxOCwgMTgsIDI0NSwgMTcsIDE4LCAyNDUsIDE2LCAxOCwgMjQ1LCAxNSwgMTgsIDI0NSwgMTQsIDE4LCAyNDUsIAorICAgIDEzLCAxOCwgMjQ1LCAxMiwgMTgsIDI0NSwgMTEsIDE4LCAyNDUsIDEwLCAxOCwgMjQ1LCA5LCAxOCwgMjQ1LCA4LCAxOCwgCisgICAgMjQ1LCA3LCAxOCwgMjQ1LCA2LCAxOCwgMjQ1LCA1LCAxOCwgMjQ1LCA0LCAxOCwgMjQ1LCAzLCAxOCwgMjQ1LCAyLCAxOCwgCisgICAgMjQ1LCAxLCAxOCwgMjQ1LCAwLCAxOCwgMjQ0LCAyNTUsIDE4LCAyNDQsIDI1NCwgMTgsIDI0NCwgMjUzLCAxOCwgMjQ0LCAKKyAgICAyNTIsIDE4LCAyNDQsIDI1MSwgMTgsIDI0NCwgMjUwLCAxOCwgMjQ0LCAyNDksIDE4LCAyNDQsIDI0OCwgMTgsIDI0NCwgCisgICAgMjQ3LCAxOCwgMjQ0LCAyNDYsIDE4LCAyNDQsIDI0NSwgMTgsIDI0NCwgMjQ0LCAxOCwgMjQ0LCAyNDMsIDE4LCAyNDQsIAorICAgIDI0MiwgMTgsIDI0NCwgMjQxLCAxOCwgMjQ0LCAyNDAsIDE4LCAyNDQsIDIzOSwgMTgsIDI0NCwgMjM4LCAxOCwgMjQ0LCAKKyAgICAyMzcsIDE4LCAyNDQsIDIzNiwgMTgsIDI0NCwgMjM1LCAxOCwgMjQ0LCAyMzQsIDE4LCAyNDQsIDIzMywgMTgsIDI0NCwgCisgICAgMjMyLCAxOCwgMjQ0LCAyMzEsIDE4LCAyNDQsIDIzMCwgMTgsIDI0NCwgMjI5LCAxOCwgMjQ0LCAyMjgsIDE4LCAyNDQsIAorICAgIDIyNywgMTgsIDI0NCwgMjI2LCAxOCwgMjQ0LCAyMjUsIDE4LCAyNDQsIDIyNCwgMTgsIDI0NCwgMjIzLCAxOCwgMjQ0LCAKKyAgICAyMjIsIDE4LCAyNDQsIDIyMSwgMTgsIDI0NCwgMjIwLCAxOCwgMjQ0LCAyMTksIDE4LCAyNDQsIDIxOCwgMTgsIDI0NCwgCisgICAgMjE3LCAxOCwgMjQ0LCAyMTYsIDE4LCAyNDQsIDIxNSwgMTgsIDI0NCwgMjE0LCAxOCwgMjQ0LCAyMTMsIDE4LCAyNDQsIAorICAgIDIxMiwgMTgsIDI0NCwgMjExLCAxOCwgMjQ0LCAyMTAsIDE4LCAyNDQsIDIwOSwgMTgsIDI0NCwgMjA4LCAxOCwgMjQ0LCAKKyAgICAyMDcsIDE4LCAyNDQsIDIwNiwgMTgsIDI0NCwgMjA1LCAxOCwgMjQ0LCAyMDQsIDE4LCAyNDQsIDIwMywgMTgsIDI0NCwgCisgICAgMjAyLCAxOCwgMjQ0LCAyMDEsIDE4LCAyNDQsIDIwMCwgMTgsIDI0NCwgMTk5LCAxOCwgMjQ0LCAxOTgsIDE4LCAyNDQsIAorICAgIDE5NywgMTgsIDI0NCwgMTk2LCAxOCwgMjQ0LCAxOTUsIDE4LCAyNDQsIDE5NCwgMTgsIDI0NCwgMTkzLCAxOCwgMjQ0LCAKKyAgICAxOTIsIDE4LCAyNDQsIDE5MSwgMTgsIDI0NCwgMTkwLCAxOCwgMjQ0LCAxODksIDE4LCAyNDQsIDE4OCwgMTgsIDI0NCwgCisgICAgMTg3LCAxOCwgMjQ0LCAxODYsIDE4LCAyNDQsIDE4NSwgMTgsIDI0NCwgMTg0LCAxOCwgMjQ0LCAxODMsIDE4LCAyNDQsIAorICAgIDE4MiwgMTgsIDI0NCwgMTgxLCAxOCwgMjQ0LCAxODAsIDE4LCAyNDQsIDE3OSwgMTgsIDI0NCwgMTc4LCAxOCwgMjQ0LCAKKyAgICAxNzcsIDE4LCAyNDQsIDE3NiwgMTgsIDI0NCwgMTc1LCAxOCwgMjQ0LCAxNzQsIDE4LCAyNDQsIDE3MywgMTgsIDI0NCwgCisgICAgMTcyLCAxOCwgMjQ0LCAxNzEsIDE4LCAyNDQsIDE3MCwgMTgsIDI0NCwgMTY5LCAxOCwgMjQ0LCAxNjgsIDE4LCAyNDQsIAorICAgIDE2NywgMTgsIDI0NCwgMTY2LCAxOCwgMjQ0LCAxNjUsIDE4LCAyNDQsIDE2NCwgMTgsIDI0NCwgMTYzLCAxOCwgMjQ0LCAKKyAgICAxNjIsIDE4LCAyNDQsIDE2MSwgMTgsIDI0NCwgMTYwLCAxOCwgMjQ0LCAxNTksIDE4LCAyNDQsIDE1OCwgMTgsIDI0NCwgCisgICAgMTU3LCAxOCwgMjQ0LCAxNTYsIDE4LCAyNDQsIDE1NSwgMTgsIDI0NCwgMTU0LCAxOCwgMjQ0LCAxNTMsIDE4LCAyNDQsIAorICAgIDE1MiwgMTgsIDI0NCwgMTUxLCAxOCwgMjQ0LCAxNTAsIDE4LCAyNDQsIDE0OSwgMTgsIDI0NCwgMTQ4LCAxOCwgMjQ0LCAKKyAgICAxNDcsIDE4LCAyNDQsIDE0NiwgMTgsIDI0NCwgMTQ1LCAxOCwgMjQ0LCAxNDQsIDE4LCAyNDQsIDE0MywgMTgsIDI0NCwgCisgICAgMTQyLCAxOCwgMjQ0LCAxNDEsIDE4LCAyNDQsIDE0MCwgMTgsIDI0NCwgMTM5LCAxOCwgMjQ0LCAxMzgsIDE4LCAyNDQsIAorICAgIDEzNywgMTgsIDI0NCwgMTM2LCAxOCwgMjQ0LCAxMzUsIDE4LCAyNDQsIDEzNCwgMTgsIDI0NCwgMTMzLCAxOCwgMjQ0LCAKKyAgICAxMzIsIDE4LCAyNDQsIDEzMSwgMTgsIDI0NCwgMTMwLCAxOCwgMjQ0LCAxMjksIDE4LCAyNDQsIDEyOCwgMTgsIDI0NCwgCisgICAgMTI3LCAxOCwgMjQ0LCAxMjYsIDE4LCAyNDQsIDEyNSwgMTgsIDI0NCwgMTI0LCAxOCwgMjQ0LCAxMjMsIDE4LCAyNDQsIAorICAgIDEyMiwgMTgsIDI0NCwgMTIxLCAxOCwgMjQ0LCAxMjAsIDE4LCAyNDQsIDExOSwgMTgsIDI0NCwgMTE4LCAxOCwgMjQ0LCAKKyAgICAxMTcsIDE4LCAyNDQsIDExNiwgMTgsIDI0NCwgMTE1LCAxOCwgMjQ0LCAxMTQsIDE4LCAyNDQsIDExMywgMTgsIDI0NCwgCisgICAgMTEyLCAxOCwgMjQ0LCAxMTEsIDE4LCAyNDQsIDExMCwgMTgsIDI0NCwgMTA5LCAxOCwgMjQ0LCAxMDgsIDE4LCAyNDQsIAorICAgIDEwNywgMTgsIDI0NCwgMTA2LCAxOCwgMjQ0LCAxMDUsIDE4LCAyNDQsIDEwNCwgMTgsIDI0NCwgMTAzLCAxOCwgMjQ0LCAKKyAgICAxMDIsIDE4LCAyNDQsIDEwMSwgMTgsIDI0NCwgMTAwLCAxOCwgMjQ0LCA5OSwgMTgsIDI0NCwgOTgsIDE4LCAyNDQsIDk3LCAKKyAgICAxOCwgMjQ0LCA5NiwgMTgsIDI0NCwgOTUsIDE4LCAyNDQsIDk0LCAxOCwgMjQ0LCA5MywgMTgsIDI0NCwgOTIsIDE4LCAyNDQsIAorICAgIDkxLCAxOCwgMjQ0LCA5MCwgMTgsIDI0NCwgODksIDE4LCAyNDQsIDg4LCAxOCwgMjQ0LCA4NywgMTgsIDI0NCwgODYsIDE4LCAKKyAgICAyNDQsIDg1LCAxOCwgMjQ0LCA4NCwgMTgsIDI0NCwgODMsIDE4LCAyNDQsIDgyLCAxOCwgMjQ0LCA4MSwgMTgsIDI0NCwgODAsIAorICAgIDE4LCAyNDQsIDc5LCAxOCwgMjQ0LCA3OCwgMTgsIDI0NCwgNzcsIDE4LCAyNDQsIDc2LCAxOCwgMjQ0LCA3NSwgMTgsIDI0NCwgCisgICAgNzQsIDE4LCAyNDQsIDczLCAxOCwgMjQ0LCA3MiwgMTgsIDI0NCwgNzEsIDE4LCAyNDQsIDcwLCAxOCwgMjQ0LCA2OSwgMTgsIAorICAgIDI0NCwgNjgsIDE4LCAyNDQsIDY3LCAxOCwgMjQ0LCA2NiwgMTgsIDI0NCwgNjUsIDE4LCAyNDQsIDY0LCAxOCwgMjQ0LCA2MywgCisgICAgMTgsIDI0NCwgNjIsIDE4LCAyNDQsIDYxLCAxOCwgMjQ0LCA2MCwgMTgsIDI0NCwgNTksIDE4LCAyNDQsIDU4LCAxOCwgMjQ0LCAKKyAgICA1NywgMTgsIDI0NCwgNTYsIDE4LCAyNDQsIDU1LCAxOCwgMjQ0LCA1NCwgMTgsIDI0NCwgNTMsIDE4LCAyNDQsIDUyLCAxOCwgCisgICAgMjQ0LCA1MSwgMTgsIDI0NCwgNTAsIDE4LCAyNDQsIDQ5LCAxOCwgMjQ0LCA0OCwgMTgsIDI0NCwgNDcsIDE4LCAyNDQsIDQ2LCAKKyAgICAxOCwgMjQ0LCA0NSwgMTgsIDI0NCwgNDQsIDE4LCAyNDQsIDQzLCAxOCwgMjQ0LCA0MiwgMTgsIDI0NCwgNDEsIDE4LCAyNDQsIAorICAgIDQwLCAxOCwgMjQ0LCAzOSwgMTgsIDI0NCwgMzgsIDE4LCAyNDQsIDM3LCAxOCwgMjQ0LCAzNiwgMTgsIDI0NCwgMzUsIDE4LCAKKyAgICAyNDQsIDM0LCAxOCwgMjQ0LCAzMywgMTgsIDI0NCwgMzIsIDE4LCAyNDQsIDMxLCAxOCwgMjQ0LCAzMCwgMTgsIDI0NCwgMjksIAorICAgIDE4LCAyNDQsIDI4LCAxOCwgMjQ0LCAyNywgMTgsIDI0NCwgMjYsIDE4LCAyNDQsIDI1LCAxOCwgMjQ0LCAyNCwgMTgsIDI0NCwgCisgICAgMjMsIDE4LCAyNDQsIDIyLCAxOCwgMjQ0LCAyMSwgMTgsIDI0NCwgMjAsIDE4LCAyNDQsIDE5LCAxOCwgMjQ0LCAxOCwgMTgsIAorICAgIDI0NCwgMTcsIDE4LCAyNDQsIDE2LCAxOCwgMjQ0LCAxNSwgMTgsIDI0NCwgMTQsIDE4LCAyNDQsIDEzLCAxOCwgMjQ0LCAxMiwgCisgICAgMTgsIDI0NCwgMTEsIDE4LCAyNDQsIDEwLCAxOCwgMjQ0LCA5LCAxOCwgMjQ0LCA4LCAxOCwgMjQ0LCA3LCAxOCwgMjQ0LCA2LCAKKyAgICAxOCwgMjQ0LCA1LCAxOCwgMjQ0LCA0LCAxOCwgMjQ0LCAzLCAxOCwgMjQ0LCAyLCAxOCwgMjQ0LCAxLCAxOCwgMjQ0LCAwLCAKKyAgICAxOCwgMjQzLCAyNTUsIDE4LCAyNDMsIDI1NCwgMTgsIDI0MywgMjUzLCAxOCwgMjQzLCAyNTIsIDE4LCAyNDMsIDI1MSwgMTgsIAorICAgIDI0MywgMjUwLCAxOCwgMjQzLCAyNDksIDE4LCAyNDMsIDI0OCwgMTgsIDI0MywgMjQ3LCAxOCwgMjQzLCAyNDYsIDE4LCAKKyAgICAyNDMsIDI0NSwgMTgsIDI0MywgMjQ0LCAxOCwgMjQzLCAyNDMsIDE4LCAyNDMsIDI0MiwgMTgsIDI0MywgMjQxLCAxOCwgCisgICAgMjQzLCAyNDAsIDE4LCAyNDMsIDIzOSwgMTgsIDI0MywgMjM4LCAxOCwgMjQzLCAyMzcsIDE4LCAyNDMsIDIzNiwgMTgsIAorICAgIDI0MywgMjM1LCAxOCwgMjQzLCAyMzQsIDE4LCAyNDMsIDIzMywgMTgsIDI0MywgMjMyLCAxOCwgMjQzLCAyMzEsIDE4LCAKKyAgICAyNDMsIDIzMCwgMTgsIDI0MywgMjI5LCAxOCwgMjQzLCAyMjgsIDE4LCAyNDMsIDIyNywgMTgsIDI0MywgMjI2LCAxOCwgCisgICAgMjQzLCAyMjUsIDE4LCAyNDMsIDIyNCwgMTgsIDI0MywgMjIzLCAxOCwgMjQzLCAyMjIsIDE4LCAyNDMsIDIyMSwgMTgsIAorICAgIDI0MywgMjIwLCAxOCwgMjQzLCAyMTksIDE4LCAyNDMsIDIxOCwgMTgsIDI0MywgMjE3LCAxOCwgMjQzLCAyMTYsIDE4LCAKKyAgICAyNDMsIDIxNSwgMTgsIDI0MywgMjE0LCAxOCwgMjQzLCAyMTMsIDE4LCAyNDMsIDIxMiwgMTgsIDI0MywgMjExLCAxOCwgCisgICAgMjQzLCAyMTAsIDE4LCAyNDMsIDIwOSwgMTgsIDI0MywgMjA4LCAxOCwgMjQzLCAyMDcsIDE4LCAyNDMsIDIwNiwgMTgsIAorICAgIDI0MywgMjA1LCAxOCwgMjQzLCAyMDQsIDE4LCAyNDMsIDIwMywgMTgsIDI0MywgMjAyLCAxOCwgMjQzLCAyMDEsIDE4LCAKKyAgICAyNDMsIDIwMCwgMTgsIDI0MywgMTk5LCAxOCwgMjQzLCAxOTgsIDE4LCAyNDMsIDE5NywgMTgsIDI0MywgMTk2LCAxOCwgCisgICAgMjQzLCAxOTUsIDE4LCAyNDMsIDE5NCwgMTgsIDI0MywgMTkzLCAxOCwgMjQzLCAxOTIsIDE4LCAyNDMsIDE5MSwgMTgsIAorICAgIDI0MywgMTkwLCAxOCwgMjQzLCAxODksIDE4LCAyNDMsIDE4OCwgMTgsIDI0MywgMTg3LCAxOCwgMjQzLCAxODYsIDE4LCAKKyAgICAyNDMsIDE4NSwgMTgsIDI0MywgMTg0LCAxOCwgMjQzLCAxODMsIDE4LCAyNDMsIDE4MiwgMTgsIDI0MywgMTgxLCAxOCwgCisgICAgMjQzLCAxODAsIDE4LCAyNDMsIDE3OSwgMTgsIDI0MywgMTc4LCAxOCwgMjQzLCAxNzcsIDE4LCAyNDMsIDE3NiwgMTgsIAorICAgIDI0MywgMTc1LCAxOCwgMjQzLCAxNzQsIDE4LCAyNDMsIDE3MywgMTgsIDI0MywgMTcyLCAxOCwgMjQzLCAxNzEsIDE4LCAKKyAgICAyNDMsIDE3MCwgMTgsIDI0MywgMTY5LCAxOCwgMjQzLCAxNjgsIDE4LCAyNDMsIDE2NywgMTgsIDI0MywgMTY2LCAxOCwgCisgICAgMjQzLCAxNjUsIDE4LCAyNDMsIDE2NCwgMTgsIDI0MywgMTYzLCAxOCwgMjQzLCAxNjIsIDE4LCAyNDMsIDE2MSwgMTgsIAorICAgIDI0MywgMTYwLCAxOCwgMjQzLCAxNTksIDE4LCAyNDMsIDE1OCwgMTgsIDI0MywgMTU3LCAxOCwgMjQzLCAxNTYsIDE4LCAKKyAgICAyNDMsIDE1NSwgMTgsIDI0MywgMTU0LCAxOCwgMjQzLCAxNTMsIDE4LCAyNDMsIDE1MiwgMTgsIDI0MywgMTUxLCAxOCwgCisgICAgMjQzLCAxNTAsIDE4LCAyNDMsIDE0OSwgMTgsIDI0MywgMTQ4LCAxOCwgMjQzLCAxNDcsIDE4LCAyNDMsIDE0NiwgMTgsIAorICAgIDI0MywgMTQ1LCAxOCwgMjQzLCAxNDQsIDE4LCAyNDMsIDE0MywgMTgsIDI0MywgMTQyLCAxOCwgMjQzLCAxNDEsIDE4LCAKKyAgICAyNDMsIDE0MCwgMTgsIDI0MywgMTM5LCAxOCwgMjQzLCAxMzgsIDE4LCAyNDMsIDEzNywgMTgsIDI0MywgMTM2LCAxOCwgCisgICAgMjQzLCAxMzUsIDE4LCAyNDMsIDEzNCwgMTgsIDI0MywgMTMzLCAxOCwgMjQzLCAxMzIsIDE4LCAyNDMsIDEzMSwgMTgsIAorICAgIDI0MywgMTMwLCAxOCwgMjQzLCAxMjksIDE4LCAyNDMsIDEyOCwgMTgsIDI0MywgMTI3LCAxOCwgMjQzLCAxMjYsIDE4LCAKKyAgICAyNDMsIDEyNSwgMTgsIDI0MywgMTI0LCAxOCwgMjQzLCAxMjMsIDE4LCAyNDMsIDEyMiwgMTgsIDI0MywgMTIxLCAxOCwgCisgICAgMjQzLCAxMjAsIDE4LCAyNDMsIDExOSwgMTgsIDI0MywgMTE4LCAxOCwgMjQzLCAxMTcsIDE4LCAyNDMsIDExNiwgMTgsIAorICAgIDI0MywgMTE1LCAxOCwgMjQzLCAxMTQsIDE4LCAyNDMsIDExMywgMTgsIDI0MywgMTEyLCAxOCwgMjQzLCAxMTEsIDE4LCAKKyAgICAyNDMsIDExMCwgMTgsIDI0MywgMTA5LCAxOCwgMjQzLCAxMDgsIDE4LCAyNDMsIDEwNywgMTgsIDI0MywgMTA2LCAxOCwgCisgICAgMjQzLCAxMDUsIDE4LCAyNDMsIDEwNCwgMTgsIDI0MywgMTAzLCAxOCwgMjQzLCAxMDIsIDE4LCAyNDMsIDEwMSwgMTgsIAorICAgIDI0MywgMTAwLCAxOCwgMjQzLCA5OSwgMTgsIDI0MywgOTgsIDE4LCAyNDMsIDk3LCAxOCwgMjQzLCA5NiwgMTgsIDI0MywgCisgICAgOTUsIDE4LCAyNDMsIDk0LCAxOCwgMjQzLCA5MywgMTgsIDI0MywgOTIsIDE4LCAyNDMsIDkxLCAxOCwgMjQzLCA5MCwgMTgsIAorICAgIDI0MywgODksIDE4LCAyNDMsIDg4LCAxOCwgMjQzLCA4NywgMTgsIDI0MywgODYsIDE4LCAyNDMsIDg1LCAxOCwgMjQzLCA4NCwgCisgICAgMTgsIDI0MywgODMsIDE4LCAyNDMsIDgyLCAxOCwgMjQzLCA4MSwgMTgsIDI0MywgODAsIDE4LCAyNDMsIDc5LCAxOCwgMjQzLCAKKyAgICA3OCwgMTgsIDI0MywgNzcsIDE4LCAyNDMsIDc2LCAxOCwgMjQzLCA3NSwgNjksIDEsIDI1MCwgMjM0LCA3MiwgMTc3LCAxLCAKKyAgICAyNTAsIDIzNCwgMjAwLCA1MSwgMTA0LCAxLCAyMzQsIDI0NywgMTA0LCAxLCAyMDAsIDE5NSwgMTA0LCAxLCAyMTYsIDIyNiwgCisgICAgMTA0LCAxLCAyMDcsIDgzLCAxMDQsIDEsIDIzOCwgNSwgMTA0LCAxLCAyMjcsIDExOCwgMTA0LCAxLCAxNTYsIDEwNCwgMSwgCisgICAgMjUwLCAxMDMsIDEwNCwgMSwgMjQyLCAxNTMsIDEwNCwgMSwgMjAzLCAxNjgsIDEwNCwgMSwgMjM2LCAxNTYsIDEwNCwgMSwgCisgICAgMTQ2LCAxMDQsIDEsIDIxNiwgMjI3LCAyMjAsIDIxNCwgMTA0LCAxLCAyNDIsIDE1NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjM4LCAKKyAgICA2LCAyMjAsIDIxNCwgMTA0LCAxLCAyMjcsIDExOSwgMjIzLCAyNDMsIDEwNCwgMSwgMjE0LCAzMywgMjEyLCAxMjIsIDEwNCwgCisgICAgMSwgMjA2LCAxMjQsIDEwNCwgMSwgMjA5LCA2MiwgMjQxLCAxMDEsIDEwNCwgMSwgMjQxLCAxMDEsIDEwNCwgMSwgMjI2LCAKKyAgICAxMTAsIDEwNCwgMSwgMjA5LCA2MiwgMjI3LCAyNTEsIDEwNCwgMSwgMjM0LCA0MCwgMTA0LCAxLCAyMjQsIDIyNCwgMTA0LCAKKyAgICAxLCAyMTMsIDk0LCAxMDQsIDEsIDIyMywgMjQzLCAxMDQsIDEsIDIyMCwgMjE0LCAxMDQsIDEsIDIyNywgMjUxLCAxMDQsIDEsIAorICAgIDIxMiwgMTIyLCAxMDQsIDEsIDIyMywgMjQ0LCAyMjAsIDIxNCwgMTA0LCAxLCAyMjAsIDIxNSwgMjIzLCAyNDMsIDEwNCwgMSwgCisgICAgMjI3LCAyNTIsIDIyMywgMjQzLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDI1MSwgMTA0LCAxLCAyMjMsIDI0NCwgMywgMjQwLCAKKyAgICAxODIsIDEwNCwgMSwgMjIwLCAyMTUsIDMsIDI0MCwgMTgyLCAxMDQsIDEsIDIyNywgMjUyLCAzLCAyNDAsIDE4MiwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMywgMTkwLCAyMjgsIDc0LCAyNiwgNTYsIDEwNCwgMSwgMjEyLCAxMjMsIDMsIDI0MCwgMTgyLCAxMDQsIAorICAgIDEsIDIxMiwgMTIzLCAzLCA3MywgNTcsIDEwNCwgMSwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIDEsIDIyMCwgMjE1LCAKKyAgICAyMTIsIDEyMiwgMTA0LCAxLCAyMjcsIDI1MiwgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIxMiwgMTIyLCAxMDQsIDEsIAorICAgIDIyMywgMjQ0LCAyMjAsIDIxNSwgMjEyLCAxMjIsIDEwNCwgMSwgMjIwLCAyMTUsIDIyMywgMjQ0LCAyMTIsIDEyMiwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDI1MiwgMjEyLCAxMjIsIAorICAgIDEwNCwgMSwgMjI3LCAyNTIsIDIxMiwgMTIzLCAzLCAyNDAsIDE4MiwgMTA0LCAxLCAyMjcsIDI1MiwgMjIwLCAyMTQsIDEwNCwgCisgICAgMSwgMjI3LCAyNTIsIDIyMCwgMjE1LCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjA3LCA4MywgMTA0LCAxLCAyMTIsIAorICAgIDEyMywgMjA3LCA4NCwgMTQ2LCAxMDQsIDEsIDIxMiwgMTIzLCAyMTYsIDIyNiwgMTA0LCAxLCAyMTIsIDEyMywgMjE2LCAKKyAgICAyMjcsIDE0NiwgMTA0LCAxLCAyMDcsIDg0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMDcsIDg0LCAyMTQsIDMzLCAyMTIsIDEyMiwgCisgICAgMTA0LCAxLCAyMDEsIDE0NywgMTA0LCAxLCAyMDEsIDQxLCAxMDQsIDEsIDIwMSwgMTQ4LCAxNDYsIDEwNCwgMSwgMjEyLCAKKyAgICAxMjMsIDIyMCwgMjE0LCAxMDQsIDEsIDIxMiwgMTIzLCAyMjMsIDI0MywgMTA0LCAxLCAyMjcsIDExOSwgMjE0LCAzMywgCisgICAgMjEyLCAxMjIsIDEwNCwgMSwgMjM2LCAxNTcsIDIxNCwgMzMsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIAorICAgIDExOCwgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAxMTksIDE0NiwgMTA0LCAxLCA2MiwgMTA0LCAxLCAyMDksIDYyLCAyMTYsIAorICAgIDIzOCwgMTA0LCAxLCAyMTcsIDE0NiwgMTA0LCAxLCA3NCwgMTA0LCAxLCAyNTEsIDI5LCAxMDQsIDEsIDcwLCAxMDQsIDEsIAorICAgIDcyLCAxMDQsIDEsIDIyOCwgMTc4LCAxMDQsIDEsIDIwOSwgMjUwLCA3MCwgMTA0LCAxLCAyMDQsIDIzLCAxMDQsIDEsIDIzOCwgCisgICAgMjU1LCAxMDQsIDEsIDIwOSwgNjIsIDIzOCwgMjQxLCAxMDQsIDEsIDIxMiwgMjM5LCA3MCwgMTA0LCAxLCAyMDksIDYyLCAKKyAgICAyMzgsIDI1NSwgMTA0LCAxLCAxNjgsIDcwLCAxMDQsIDEsIDIwMCwgNTEsIDEwNCwgMSwgNjYsIDEwNCwgMSwgMjM4LCA2OSwgCisgICAgMTA0LCAxLCAyMDAsIDE0NiwgMTA0LCAxLCAxMDgsIDIyMCwgMjE0LCAxMDQsIDEsIDE2OCwgNjYsIDEwNCwgMSwgMjEyLCAKKyAgICAyMzksIDY2LCAxMDQsIDEsIDIwNCwgMjUsIDEwNCwgMSwgMjA5LCA2MiwgNjYsIDEwNCwgMSwgMjE3LCA2MCwgMTA0LCAxLCAKKyAgICAyMTYsIDIzOCwgMTA0LCAxLCAyMTcsIDMsIDEwNCwgMSwgMjAxLCAxMTQsIDEwNCwgMSwgMjAxLCAwLCAxMDQsIDEsIDIwMSwgCisgICAgMzEsIDEwNCwgMSwgMjAxLCA1NSwgMTA0LCAxLCAyMDAsIDIzMCwgMTA0LCAxLCAyMjAsIDEyMywgNjYsIDEwNCwgMSwgMjIwLCAKKyAgICAxMjMsIDc0LCAxMDQsIDEsIDIyMCwgMTIzLCA3MCwgMTA0LCAxLCAyMjAsIDEyMywgNjIsIDEwNCwgMSwgMjE2LCAxNiwgCisgICAgMjUxLCA4NSwgMTA0LCAxLCAyMTYsIDE2LCAyNTEsIDEwMSwgMTA0LCAxLCAyMDksIDYyLCAyMzgsIDE3OSwgMTA0LCAxLCAKKyAgICAyMDksIDYyLCAyNTEsIDg1LCAxMDQsIDEsIDIwOSwgNjIsIDIxNywgNzgsIDEwNCwgMSwgMTA5LCAyMjMsIDI0MywgMTA0LCAKKyAgICAyNTEsIDIwMCwgNDksIDIzMywgMTc3LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjIxLCAyMDYsIDIzMywgMTc3LCAyMTEsIAorICAgIDE5NywgMTA0LCAyNTEsIDIwMCwgNTEsIDIzMywgMTc3LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMTI4LCA4MywgMjExLCAKKyAgICAxOTcsIDEwNCwgMjUxLCAyMDAsIDIyMSwgMjA2LCA4MywgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDEyMiwgODMsIDIxMSwgCisgICAgMTk3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMjUsIDE5LCAKKyAgICAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIwNiwgMjQwLCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgCisgICAgMjA3LCA2LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMTk3LCAxMTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMzMsIAorICAgIDE5LCAxMTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMDYsIDI0MSwgMTE3LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDE2OSwgCisgICAgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMDYsIDEsIDE2OSwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMzUsIDczLCAxMDQsIDI1MSwgCisgICAgMjAwLCAxMjIsIDE2OCwgMjM1LCA3MywgMTA0LCAyNTEsIDIwMCwgMTIyLCAyNDAsIDE4MiwgMTA0LCAyNTEsIDIwMCwgMTIyLCAKKyAgICAyNDYsIDE1NSwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMjQsIDE3NiwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMDEsIDc3LCAxMDQsIAorICAgIDI1MSwgMjAwLCAxMjIsIDIwMywgNDIsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIwNiwgCisgICAgMSwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIzNSwgNzMsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMTY4LCAyMzUsIDczLCAKKyAgICAxMDQsIDI1MSwgMjAwLCAxMjgsIDI0MCwgMTgyLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDI0NiwgMTU1LCAxMDQsIDI1MSwgCisgICAgMjAwLCAxMjgsIDIyNCwgMTc2LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIwMSwgNzcsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjAzLCAKKyAgICA0MiwgMTA0LCAyNTEsIDIwMCwgMTI4LCA0OCwgMTA0LCAyLCAxNjMsIDMsIDI0MiwgMjM0LCAxMDQsIDIwNiwgODIsIDEsIAorICAgIDIxMSwgMTc1LCAxMDQsIDUzLCA4MSwgMTA0LCAyMTQsIDIxMiwgMjQ2LCAyMjAsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDksIAorICAgIDIzNywgMjM2LCAyNDEsIDEsIDIxNiwgMjQ0LCAyMDksIDIzNywgMjM2LCAyNDEsIDI0MywgNDAsIDIxNiwgMjQ0LCAyMDksIAorICAgIDIzNywgMjM2LCAyNDEsIDEyNywgMjA4LCA5MCwgMjA5LCAyMzcsIDIzNiwgMjQxLCAxMTUsIDIwOCwgOTAsIDYxLCAzMiwgCisgICAgMTYsIDIxNCwgMjI4LCA2MSwgMzIsIDE2LCAyNDEsIDI0NiwgNjEsIDMyLCAxNiwgMjE2LCAyMCwgNjEsIDMyLCAxNiwgMjE2LCAKKyAgICAyMzQsIDIzOCwgMjEzLCA2MSwgMzIsIDE2LCAyMTYsIDIzNCwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjAzLCA3NywgMjM4LCAKKyAgICAyMTMsIDYxLCAzMiwgMTYsIDIwMywgNzcsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIyNywgMjgsIDYxLCAzMiwgMTYsIDIwNywgCisgICAgMTAwLCA2MSwgMzIsIDE2LCAyMTYsIDEyMiwgNjEsIDMyLCAxNiwgMTk5LCAyMTcsIDYxLCAzMiwgMTYsIDE5OSwgMjE4LCAKKyAgICAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMjYsIDMyLCA2MSwgMzIsIDE2LCAyNTEsIDI0LCAyMzgsIDIxMywgNjEsIDMyLCAxNiwgCisgICAgMjM4LCAzNywgMjM4LCAyMTMsIDYxLCAzMiwgMTYsIDIwNiwgMTc3LCA2MSwgMzIsIDE2LCAyMjYsIDIzOSwgNjEsIDMyLCAKKyAgICAxNiwgMjUxLCAxNCwgNjEsIDMyLCAxNiwgMjUxLCAxNSwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjA3LCAxMDcsIDYxLCAzMiwgCisgICAgMTYsIDIwNiwgNjQsIDYxLCAzMiwgMTYsIDIxNywgODksIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMzUsIDEwMCwgMjUwLCAKKyAgICAyMzIsIDYxLCAzMiwgMTYsIDIxNCwgMjI3LCA2MSwgMzIsIDE2LCAyNDcsIDI4LCA2MSwgMzIsIDE2LCAyMDMsIDY2LCA2MSwgCisgICAgMzIsIDE2LCAyMjgsIDE3LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCAyNDEsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAKKyAgICAyMjYsIDI0MCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIxMSwgMjM2LCA2MSwgMzIsIDE2LCAyMTYsIDExMiwgNjEsIDMyLCAKKyAgICAxNiwgMjA4LCA5OSwgMjUxLCAxNywgNjEsIDMyLCAxNiwgMjE2LCAyMzMsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDMsIAorICAgIDc2LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjUxLCAxOCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDI1MSwgMTIsIDYxLCAzMiwgCisgICAgMTYsIDIyNiwgMTAwLCA2MSwgMzIsIDE2LCAyMTMsIDEwMSwgNjEsIDMyLCAxNiwgMjE1LCAyMDIsIDI1MCwgMjMyLCA2MSwgCisgICAgMzIsIDE2LCAyMDUsIDIzMCwgNjEsIDMyLCAxNiwgMjUxLCA4MiwgNjEsIDMyLCAxNiwgMjExLCAxNzgsIDYxLCAzMiwgMTYsIAorICAgIDIwNywgMTExLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjA3LCAxMTEsIDIyMiwgMjEsIDIwOCwgOTcsIDYxLCAzMiwgMTYsIAorICAgIDIxNiwgMjI4LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjA2LCAxMDAsIDYxLCAzMiwgMTYsIDIyNSwgNiwgNjEsIDMyLCAxNiwgCisgICAgMjM5LCA5NiwgNjEsIDMyLCAxNiwgMjA1LCAxMDAsIDYxLCAzMiwgMTYsIDIwNiwgMTQ4LCA2MSwgMzIsIDE2LCAyMjYsIDM1LCAKKyAgICA2MSwgMzIsIDE2LCAyNTEsIDI0LCAyMzgsIDM3LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjUwLCAyMzIsIAorICAgIDYxLCAzMiwgMTYsIDIyOCwgMTMwLCA2MSwgMzIsIDE2LCAyMDUsIDY5LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI3LCAzMSwgCisgICAgMjA1LCA2OCwgNjEsIDMyLCAxNiwgMjE2LCA0OSwgNjEsIDMyLCAxNiwgMjE0LCAyMzIsIDYxLCAzMiwgMTYsIDIyNiwgNjksIAorICAgIDYxLCAzMiwgMTYsIDI0NiwgMjA0LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjEzLCAyMDksIDYxLCAzMiwgMTYsIDIxNiwgCisgICAgMTI1LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjE2LCAxMjMsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMzIsIDIyOSwgNjEsIAorICAgIDMyLCAxNiwgMjIwLCAxMzMsIDYxLCAzMiwgMTYsIDIxNSwgMjU0LCA2MSwgMzIsIDE2LCAyMjYsIDcwLCAyNTEsIDExOSwgCisgICAgNjEsIDMyLCAxNiwgMjA1LCA2OSwgMjUxLCAxMTksIDYxLCAzMiwgMTYsIDIwOCwgNzAsIDYxLCAzMiwgMTYsIDIzNSwgNjAsIAorICAgIDYxLCAzMiwgMTYsIDIyOCwgMTcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNywgODksIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIxNiwgMjM0LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTUsIDI1MywgNjEsIDMyLCAxNiwgMjI2LCA1NCwgNjEsIDMyLCAxNiwgCisgICAgMjE1LCAyNTIsIDYxLCAzMiwgMTYsIDIyNiwgMzQsIDYxLCAzMiwgMTYsIDIxNiwgNTAsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIyNiwgMjQwLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMjYsIDI0MSwgMjIwLCAyMSwgMjUxLCA1NSwgNjEsIAorICAgIDMyLCAxNiwgMTk5LCAyMTUsIDYxLCAzMiwgMTYsIDI1MSwgMTUsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMTYsIDIwNywgCisgICAgMTA4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAxOTksIDIxNiwgNjEsIDMyLCAxNiwgMjI2LCAzMywgNjEsIDMyLCAxNiwgMjM4LCAKKyAgICAyMDgsIDYxLCAzMiwgMTYsIDI0NywgMjksIDYxLCAzMiwgMTYsIDIyMSwgMTc3LCAyMjgsIDE2LCA2MSwgMzIsIDE2LCAyMDMsIAorICAgIDc3LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTUsIDIwMiwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE0LCAyMzMsIDIyMCwgCisgICAgMjAsIDYxLCAzMiwgMTYsIDIxNywgODUsIDYxLCAzMiwgMTYsIDI1MSwgNDIsIDYxLCAzMiwgMTYsIDIyMywgMjU0LCA2MSwgCisgICAgMzIsIDE2LCAyMTYsIDEyMywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE2LCAxMjUsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIzOCwgNzUsIDIxNiwgMTI0LCA2MSwgMzIsIDE2LCAyMjUsIDE5NywgNjEsIDMyLCAxNiwgMjUxLCA0MywgNjEsIDMyLCAxNiwgCisgICAgMjA1LCA2OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjM4LCAyMTEsIDYxLCAzMiwgMTYsIDIwNywgMTExLCAyMjAsIDIwLCAKKyAgICA2MSwgMzIsIDE2LCAyMDcsIDEwMSwgNjEsIDMyLCAxNiwgMjQ2LCAyMDQsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIzOCwgCisgICAgMTMwLCA2MSwgMzIsIDE2LCAyMTEsIDE3OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjAwLCAxNjIsIDIyNiwgMTAwLCA2MSwgCisgICAgMzIsIDE2LCAyMDUsIDY2LCA2MSwgMzIsIDE2LCAyMTQsIDIzNCwgNjEsIDMyLCAxNiwgMjA1LCA3MCwgNjEsIDMyLCAxNiwgCisgICAgMjA1LCA2NywgNjEsIDMyLCAxNiwgMjE0LCAyMzEsIDYxLCAzMiwgMTYsIDIwNSwgNjUsIDYxLCAzMiwgMTYsIDIxNCwgMjMwLCAKKyAgICA2MSwgMzIsIDE2LCAyMzUsIDk5LCA2MSwgMzIsIDE2LCAyNTAsIDIyNCwgNjEsIDMyLCAxNiwgMjM4LCA3NSwgMjUwLCAyMjQsIAorICAgIDYxLCAzMiwgMTYsIDIxNiwgMjI4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMDYsIDk5LCAyMzgsIDg4LCA2MSwgMzIsIDE2LCAKKyAgICAyMDYsIDk5LCAyMzgsIDM2LCA2MSwgMzIsIDE2LCAyMDYsIDEwMSwgMjUxLCAxOSwgNjEsIDMyLCAxNiwgMjA2LCA5MywgCisgICAgMjI3LCA4MywgMjUxLCAxMSwgNjEsIDMyLCAxNiwgMjI3LCAzMCwgNjEsIDMyLCAxNiwgMjM4LCAxNjcsIDYxLCAzMiwgMTYsIAorICAgIDIwMCwgMTMsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDIwMCwgMTMsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIwOCwgOTgsIDYxLCAKKyAgICAzMiwgMTYsIDIyNiwgMTAxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyNDEsIDE1LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgCisgICAgMjI2LCAzNiwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIyNiwgMzYsIDI1MSwgMTE5LCA2MSwgMzIsIDE2LCAyMjYsIDM2LCAKKyAgICAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyNTEsIDE4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyNTEsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDUsIDgxLCA2MSwgMzIsIDE2LCAyMDYsIDEzOSwgNjEsIDMyLCAxNiwgMjI2LCA1OCwgCisgICAgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjM4LCAxNjAsIDI0NiwgMTk0LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMzksIDk3LCAKKyAgICAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjA1LCA4NCwgMjQ2LCAxOTUsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIAorICAgIDIwNiwgMTUwLCAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjI4LCAxMjUsIDI0NiwgMTk0LCA2MSwgMzIsIDE2LCAKKyAgICAyMzUsIDEwMCwgMjIwLCAyMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjM1LCAxMDAsIDIxNiwgMTEzLCAyNTAsIDIyMCwgNjEsIAorICAgIDMyLCAxNiwgMjM1LCAxMDAsIDIxNiwgMTEzLCAyNDEsIDEwNSwgNjEsIDMyLCAxNiwgMjQxLCAzOSwgNjEsIDMyLCAxNiwgCisgICAgMjQxLCA0MCwgMjE2LCAxMTMsIDI1MCwgMjIxLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAyNDEsIDQwLCAyMTYsIDExMywgMjUwLCAKKyAgICAyMjEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDI0MSwgNDAsIDIxNiwgMTEzLCAyNDEsIDEwNSwgNjEsIDMyLCAxNiwgMjA1LCAKKyAgICA4OSwgNjEsIDMyLCAxNiwgMjUwLCAyMjUsIDYxLCAzMiwgMTYsIDIyOCwgMTMyLCA2MSwgMzIsIDE2LCAyNDEsIDYyLCA2MSwgCisgICAgMzIsIDE2LCAyNTEsIDE4NywgMjE1LCA4OSwgMjUwLCAyMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyNTAsIDIyMywgNjEsIAorICAgIDMyLCAxNiwgMjUxLCAxODcsIDI1MCwgMjI2LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjIyLCAxNSwgNjEsIDMyLCAxNiwgCisgICAgMjUxLCAxODcsIDIyMiwgMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMzUsIDEwMSwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIAorICAgIDIzNSwgOTgsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMTUsIDg5LCAyMzUsIDEwMSwgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIAorICAgIDIxNCwgMjQwLCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI1MSwgMTIxLCAyMTQsIDI0MCwgMjMyLCAyMjcsIAorICAgIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyNDEsIDEwNCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyNTEsIDEyMSwgCisgICAgMjQxLCAxMDQsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjA1LCA3NiwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIAorICAgIDIyMiwgMTQwLCAyMDUsIDkwLCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjA2LCAxNDQsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAKKyAgICAyMjIsIDE0MCwgMjA2LCAxNDQsIDIyNSwgMTUsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjI1LCAxNSwgCisgICAgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMTUsIDEzMiwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyOCwgMjQsIAorICAgIDIwNiwgMTcwLCAyMzIsIDIyOCwgNjEsIDMyLCAxNiwgMjUxLCAxNiwgMjA2LCAxNzAsIDIzMiwgMjI4LCA2MSwgMzIsIDE2LCAKKyAgICAyMzcsIDE2NywgMjA2LCAxNDEsIDYxLCAzMiwgMTYsIDIzNywgMTY3LCAyMjEsIDk4LCA2MSwgMzIsIDE2LCAyMzcsIDE2NywgCisgICAgMjQxLCA0NSwgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIwMywgNzAsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgCisgICAgMjE0LCAyMzksIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjE1LCAxMzIsIDIwNiwgMTQ0LCAyMzIsIDIyNywgCisgICAgNjEsIDMyLCAxNiwgMjM1LCA5NSwgMjIwLCAyMTUsIDI1MSwgMTksIDYxLCAzMiwgMTYsIDIzNSwgOTUsIDIyMCwgMjE1LCAKKyAgICAyNDEsIDEzLCA2MSwgMzIsIDE2LCAyMzgsIDE3NywgMjI3LCA4MywgMjM2LCAxOTEsIDIwMiwgMTc0LCA2MSwgMzIsIDE2LCAKKyAgICAyMjgsIDEzMSwgNjEsIDMyLCAxNiwgMjI4LCAxMjksIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNTAsIDIzMywgMjQxLCAxMDMsIAorICAgIDIzMiwgMjI2LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgMTcyLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCAKKyAgICA2MCwgMjIwLCAxMzMsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjAsIDEyOCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIzNiwgCisgICAgMTkxLCAyNDEsIDYwLCAyNDEsIDc2LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjA5LCA4MiwgMjQxLCA1OSwgMjQxLCA3NiwgCisgICAgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIDIyNywgOCwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIAorICAgIDE5OSwgMTQsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAyMTksIDE1MSwgMjI3LCAyNywgNjEsIDMyLCAxNiwgCisgICAgMjM2LCAxOTEsIDI0MSwgNjAsIDIxOSwgMTUxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIyLCAxODYsIAorICAgIDI0NiwgMTk2LCAyNDEsIDQ1LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIyLCAxODYsIDI0NiwgMTk2LCAyMjEsIDk4LCA2MSwgCisgICAgMzIsIDE2LCAyMzcsIDExMywgMjA5LCA4MiwgMjQ2LCAxOTYsIDIwMywgNjksIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMDksIAorICAgIDgyLCAyNDYsIDE5NiwgMjA3LCAxMTIsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjAsIDIzLCA2MSwgMzIsIDE2LCAyNDYsIAorICAgIDE5NywgMTk4LCAyMzgsIDYxLCAzMiwgMTYsIDI0NiwgMTk3LCAyMjYsIDk5LCA2MSwgMzIsIDE2LCAyNDYsIDE5NywgMjA4LCAKKyAgICAyMzUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMzMsIDE5LCAyMDAsIDEyLCAyMDYsIDE0NSwgNjEsIDMyLCAxNiwgMjM2LCAKKyAgICAxOTEsIDIzOCwgMTc4LCAyNTEsIDQ0LCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMDUsIDc3LCA2MSwgMzIsIDE2LCAyNDEsIAorICAgIDUzLCAyMDUsIDc3LCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyMDYsIDE0NSwgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjUxLCAyMSwgCisgICAgMjM5LCA5NywgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIyMSwgOTYsIDIwNiwgMTQ5LCAyNDAsIDIwMywgNjEsIAorICAgIDMyLCAxNiwgMjQxLCA1MywgMjQxLCAzNiwgMjM4LCA0OSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIwNSwgCisgICAgODcsIDIxNywgOTUsIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyNTEsIDIxLCAyMzksIDk3LCAyNDAsIDIwMywgCisgICAgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjIxLCA5NiwgMjA2LCAxNDksIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAKKyAgICAyNDEsIDM2LCAyMzgsIDQ5LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjA1LCA4NywgMjE3LCA5NSwgMjQwLCAKKyAgICAyMDMsIDYxLCAzMiwgMTYsIDIzNSwgMjU1LCAyNDEsIDUyLCA2MSwgMzIsIDE2LCAyMzUsIDI1NSwgMjAwLCAxMSwgNjEsIAorICAgIDMyLCAxNiwgMjQxLCA2MSwgMjUxLCAyMSwgMjIxLCAxNzgsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDI1MSwgMjEsIDIyMiwgCisgICAgNTUsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDIwNiwgOTEsIDYxLCAzMiwgCisgICAgMTYsIDIwOSwgMTQ5LCAyMDYsIDkxLCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjA2LCA5MiwgMjQwLCAyNTQsIDYxLCAzMiwgCisgICAgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyMDUsIDc4LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjA2LCA5MiwgMjA2LCAxMzcsIAorICAgIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NiwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk3LCAyNDAsIDI1NCwgCisgICAgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk3LCAyMDUsIDc4LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIAorICAgIDIwNiwgMTM3LCA2MSwgMzIsIDE2LCAyNDEsIDM3LCAyMzUsIDIzNiwgNjEsIDMyLCAxNiwgMjQxLCA0NCwgMjE3LCAzLCA2MSwgCisgICAgMzIsIDE2LCAyMDgsIDg2LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMTcyLCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMjAyLCAKKyAgICAxNzQsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyMzYsIDg5LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMjQxLCA3NiwgNjEsIAorICAgIDMyLCAxNiwgMjUwLCAyMTcsIDIyNywgOCwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDE5OSwgMTQsIDYxLCAzMiwgMTYsIDI1MCwgCisgICAgMjE3LCAyMTksIDE1MCwgNjEsIDMyLCAxNiwgMjI2LCAyNDAsIDIyMCwgMjEsIDIyMiwgMjUsIDYxLCAzMiwgMTYsIDIyNiwgCisgICAgMjQxLCAyMjAsIDIxLCAyMjIsIDI1LCA2MSwgMzIsIDE2LCAyMjYsIDI0MCwgMjIwLCAyMSwgMjI3LCAyNywgNjEsIDMyLCAKKyAgICAxNiwgMjI2LCAyNDEsIDIyMCwgMjEsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDIyNiwgMTAxLCAyMjcsIDI3LCA2MSwgMzIsIAorICAgIDE2LCAyMzUsIDEwMCwgMjIwLCAyMSwgMjI3LCAyNywgMzIsIDE2LCAyMDksIDEzOSwgMjQ5LCA3MiwgMzIsIDE2LCA1MywgCisgICAgMjQ5LCA3MiwgMzIsIDE2LCA0NywgMjQ5LCA3MiwgMzIsIDE2LCAyMTMsIDEwNiwgNDcsIDI0OSwgNzIsIDMyLCAxNiwgMjQxLCAKKyAgICAyNDMsIDI0OSwgNzIsIDMyLCAxNiwgMjA5LCAyNTAsIDI0OSwgNzIsIDMyLCAxNiwgNDksIDIxMywgMTMzLCA1NCwgMzIsIAorICAgIDE2LCA1MSwgMjEzLCAxMzMsIDU0LCAzMiwgMTYsIDIxMywgMTMzLCAyNDAsIDE4MCwgMzIsIDE2LCAyNDIsIDMwLCAyMTEsIAorICAgIDE4MiwgMzIsIDE2LCAyNDIsIDU5LCAyNDcsIDE0MSwgMzIsIDE2LCAyMTEsIDE4MiwgMzIsIDE2LCAyNDYsIDg3LCAzMiwgCisgICAgMTYsIDIxMywgMTMxLCAyMzcsIDEwMSwgMzIsIDE2LCAyMTMsIDEzMSwgMjM3LCAxMDAsIDMyLCAxNiwgMjEzLCAxMzEsIAorICAgIDIzNywgOTksIDMyLCAxNiwgMjM3LCAxMjIsIDMyLCAxNiwgMjM3LCAxMjMsIDU3LCAzMiwgMTYsIDI0OCwgNTksIDgxLCAzMiwgCisgICAgMTYsIDI0NywgMTgwLCAzMiwgMTYsIDI0OCwgNzEsIDMyLCAxNiwgMTU5LCAzMiwgMTYsIDIxNywgNzMsIDIwOCwgMTE3LCAKKyAgICAzMiwgMTYsIDIwNCwgMTQwLCAyMDgsIDExNywgMzIsIDE2LCAyMDYsIDQyLCAyMDgsIDExNywgMzIsIDE2LCAyMzYsIDIyOCwgCisgICAgMjA4LCAxMTcsIDMyLCAxNiwgMjM3LCA2MCwgMjA4LCAxMTcsIDMyLCAxNiwgMjA5LCAxMDUsIDIwOCwgMTE3LCAzMiwgMTYsIAorICAgIDIwOSwgMTAzLCAyMzYsIDIwOCwgMzIsIDE2LCAyMzYsIDIyNiwgMjM2LCAyMDgsIDMyLCAxNiwgMjM2LCAxNTcsIDI0NiwgCisgICAgMTI0LCAzMiwgMTYsIDIzNiwgMTU3LCAyNDYsIDEyNSwgMjE3LCA1LCAyNTEsIDExMCwgMzIsIDE2LCAyMzYsIDE1NywgMjQ2LCAKKyAgICAxMjUsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyNDcsIDIyNCwgMjQ2LCAxMjQsIDMyLCAxNiwgMjM4LCA2LCAyNDYsIAorICAgIDEyNCwgMzIsIDE2LCAyMzgsIDYsIDI0NiwgMTI1LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIzOCwgNiwgMjQ2LCAKKyAgICAxMjUsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyMzksIDE0MywgMjQ2LCAxMjMsIDMyLCAxNiwgMjM5LCAxNDMsIDI0NiwgCisgICAgMTIyLCAzMiwgMTYsIDIyMSwgMjEsIDIyMiwgNzUsIDIxMywgMTE3LCAzMiwgMTYsIDUzLCAyMTAsIDc4LCAzMiwgMTYsIDUzLCAKKyAgICAyMzcsIDQ0LCAzMiwgMTYsIDIzNywgNDUsIDIwMywgMjI4LCAzMiwgMTYsIDIzNywgNDUsIDIzOSwgMTY3LCAzMiwgMTYsIAorICAgIDIyMCwgMTE3LCAyMDMsIDIyOCwgMzIsIDE2LCAyMjAsIDExNywgMjM5LCAxNjcsIDMyLCAxNiwgMjEwLCA3OSwgMjAzLCAKKyAgICAyMjgsIDMyLCAxNiwgMjEwLCA3OSwgMjM5LCAxNjcsIDMyLCAxNiwgMjE0LCA4OCwgMTUwLCAyMTAsIDc4LCAzMiwgMTYsIAorICAgIDIxNCwgODgsIDE1MCwgMjM3LCA0NCwgMzIsIDE2LCAyNDYsIDY3LCAyMDUsIDIzNCwgMzIsIDE2LCAyNDIsIDE4MCwgMjA1LCAKKyAgICAyMzQsIDMyLCAxNiwgMjE3LCA1LCAyNTEsIDExMCwgMzIsIDE2LCAyMTcsIDUsIDI0OSwgNTcsIDMyLCAxNiwgMjE0LCA2OSwgCisgICAgMjUxLCAxMTAsIDMyLCAxNiwgMjE0LCA2OSwgMjQ5LCA1NywgMzIsIDE2LCAyMjEsIDI0LCAyMTMsIDExNywgMzIsIDE2LCAKKyAgICAyMDEsIDMyLCAyMTMsIDExNywgMzIsIDE2LCAxNjcsIDIxMywgMTE3LCAzMiwgMTYsIDIxNCwgODgsIDIxMywgMTE3LCAzMiwgCisgICAgMTYsIDIzOCwgMjI4LCAyMTMsIDExNywgMzIsIDE2LCAyMDksIDk5LCAyMTMsIDExNywgMzIsIDE2LCAyMDYsIDY1LCAyMTMsIAorICAgIDExNywgMzIsIDE2LCAyMDksIDkxLCAyMTMsIDExNywgMzIsIDE2LCAxMTIsIDIzMywgODMsIDIwNCwgMTU3LCAyMTMsIDExNywgCisgICAgMzIsIDE2LCAyMDAsIDE5NiwgMjE4LCAyMDUsIDMyLCAxNiwgOTMsIDIxOCwgMjA1LCAzMiwgMTYsIDI0NiwgMTU2LCAyMDAsIAorICAgIDE5NiwgMjE4LCAyMDUsIDMyLCAxNiwgNTIsIDIxOCwgMjA2LCAyMDEsIDM0LCAzMiwgMTYsIDUyLCAyMTgsIDIwNiwgMjQ4LCAKKyAgICAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgCisgICAgMTE1LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgNDksIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5OSwgCisgICAgMjE4LCAyMDYsIDQ5LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgNTEsIDIwMSwgMzQsIDMyLCAxNiwgCisgICAgMjA1LCA5OSwgMjE4LCAyMDYsIDUxLCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTI3LCAyMDEsIDM0LCAKKyAgICAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMjcsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMTUsIAorICAgIDUxLCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMTUsIDUxLCAyNDgsIDE0NCwgMzIsIDE2LCAyMjEsIAorICAgIDgyLCAyMTgsIDIwNiwgMjAxLCAzNCwgMzIsIDE2LCAyMjEsIDgyLCAyMTgsIDIwNiwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCAKKyAgICA5NiwgMjE4LCAyMDYsIDEyNywgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk2LCAyMTgsIDIwNiwgMTI3LCAyNDgsIDE0NCwgMzIsIAorICAgIDE2LCAyMTYsIDExNiwgMjE4LCAyMDUsIDMyLCAxNiwgMjAyLCAxODYsIDIxOCwgMjA1LCAzMiwgMTYsIDIxOCwgMjA2LCAKKyAgICAyNDgsIDE0NCwgMzIsIDE2LCAyMTgsIDk4LCAyMTgsIDIwNSwgMzIsIDE2LCAyNDYsIDk0LCAyMTgsIDIwNiwgMjAxLCAzNCwgCisgICAgMzIsIDE2LCAyNDYsIDk0LCAyMTgsIDIwNiwgMjQ4LCAxNDQsIDMyLCAxNiwgMjQ4LCA1NywgMzIsIDE2LCAyMDEsIDMyLCAKKyAgICAyMTgsIDIwOSwgMzIsIDE2LCAxNjcsIDIxOCwgMjA5LCAzMiwgMTYsIDIxNCwgODgsIDIxOCwgMjA5LCAzMiwgMTYsIDIzOCwgCisgICAgMjI4LCAyMTgsIDIwOSwgMzIsIDE2LCAyMDksIDk5LCAyMTgsIDIwOSwgMzIsIDE2LCAyMDYsIDY1LCAyMTgsIDIwOSwgMzIsIAorICAgIDE2LCAyMDksIDkxLCAyMTgsIDIwOSwgMzIsIDE2LCAxMTIsIDIzMywgODMsIDIwNCwgMTU3LCAyMTgsIDIwOSwgMzIsIDE2LCAKKyAgICAzOCwgMjA4LCA5MiwgMzIsIDE2LCAzOCwgMjA4LCAyMDAsIDIwOCwgOTIsIDMyLCAxNiwgMzgsIDIwNSwgMTA3LCAzMiwgMTYsIAorICAgIDM4LCAyMDUsIDEwNiwgMzIsIDE2LCAzOCwgMjA1LCAxMDUsIDMyLCAxNiwgMjM3LCA4NCwgMjA1LCAxMDcsIDMyLCAxNiwgCisgICAgMjM3LCA4NCwgMjA1LCAxMDYsIDMyLCAxNiwgMjM3LCA4NCwgMjA1LCAxMDUsIDMyLCAxNiwgMzgsIDI1MCwgMTM2LCAyNDAsIAorICAgIDE4MiwgMzIsIDE2LCAzOCwgMjM3LCA1MiwgMzIsIDE2LCAzOCwgMjM3LCA1MSwgMzIsIDE2LCAzOCwgMjM3LCA1MCwgMzIsIAorICAgIDE2LCAzOCwgMjM3LCA0OSwgMzIsIDE2LCAzOCwgMjM3LCA0OCwgMzIsIDE2LCAyNDgsIDI0NCwgMjQ5LCA1LCAzMiwgMTYsIAorICAgIDIzOCwgMTcxLCAyNDksIDUsIDMyLCAxNiwgMjQ4LCAyNDQsIDIwNiwgNywgMzIsIDE2LCAyMzgsIDE3MSwgMjA2LCA3LCAzMiwgCisgICAgMTYsIDI0OCwgMjQ0LCAyMDksIDU0LCAzMiwgMTYsIDIzOCwgMTcxLCAyMDksIDU0LCAzMiwgMTYsIDI0OCwgMjQ0LCAyMTUsIAorICAgIDIxMSwgMzIsIDE2LCAyMzgsIDE3MSwgMjE1LCAyMTEsIDMyLCAxNiwgMzgsIDI1MSwgMjUxLCAzMiwgMTYsIDM4LCAyMDgsIAorICAgIDEyMCwgMzIsIDE2LCAzOCwgMjA2LCAxNTQsIDMyLCAxNiwgMzgsIDIwOCwgMTIxLCAzMiwgMTYsIDM4LCAyMjIsIDE1NCwgCisgICAgMzIsIDE2LCAzOCwgMjIyLCAxNTMsIDMyLCAxNiwgMzgsIDI1MSwgMjUwLCAzMiwgMTYsIDM4LCAyMjQsIDYxLCAzMiwgMTYsIAorICAgIDI1MCwgMjA4LCAyMDMsIDIyOCwgMzIsIDE2LCAyNTAsIDIwOCwgMjM5LCAxNjcsIDMyLCAxNiwgMzgsIDI0MCwgMTk3LCAzMiwgCisgICAgMTYsIDM4LCAyMTMsIDIzLCAzMiwgMTYsIDM4LCAyMzcsIDMzLCAzMiwgMTYsIDM4LCAyMDksIDUwLCAzMiwgMTYsIDM4LCAKKyAgICAyNDgsIDIyMiwgMzIsIDE2LCAzOCwgNTMsIDIwNSwgMTYzLCAzMiwgMTYsIDM4LCAyMDUsIDgzLCAyMDUsIDE2MywgMzIsIAorICAgIDE2LCAyMTMsIDI4LCAzMiwgMTYsIDIwOCwgMTQsIDMyLCAxNiwgMTk5LCAxNTcsIDMyLCAxNiwgMjE1LCAyMDMsIDMyLCAxNiwgCisgICAgMjIyLCA2LCAzMiwgMTYsIDIzNiwgMjM4LCAzMiwgMTYsIDI0MiwgMjQ1LCAzMiwgMTYsIDI0MSwgMTYyLCAzMiwgMTYsIAorICAgIDIzNSwgOTAsIDIxOCwgMjEwLCAyMDksIDc1LCAzMiwgMTYsIDIzNSwgOTAsIDIxOCwgMjEwLCAyMTgsIDI0MiwgMjA5LCA3NSwgCisgICAgMzIsIDE2LCAyMDUsIDEzMywgMzIsIDE2LCAyMDQsIDE4NiwgMzIsIDE2LCAyMjgsIDUwLCAyMDQsIDE4NiwgMzIsIDE2LCAKKyAgICAyMDQsIDE4NywgMjA5LCA3NSwgMzIsIDE2LCAyMDQsIDE4NywgMjAzLCAyMjgsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0NiwgCisgICAgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQzLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDIsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAKKyAgICA0MSwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQwLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzksIDMyLCAxNiwgMjE3LCAyMiwgCisgICAgMjA4LCAzOCwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDM3LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzYsIDMyLCAxNiwgMjE3LCAKKyAgICAyMiwgMjA4LCA0NSwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQ0LCAzMiwgMTYsIDIzNCwgMTQ5LCAzMiwgMTYsIDIyMCwgMzIsIAorICAgIDMyLCAxNiwgMjM4LCAxNzEsIDc2LCAyMDgsIDgyLCAzMiwgMTYsIDI0MSwgMTU1LCAyMDksIDc1LCAzMiwgMTYsIDM4LCAKKyAgICAxMjcsIDI0OCwgODUsIDMyLCAxNiwgMzgsIDExNSwgMjQ4LCA4NSwgMzIsIDE2LCAzOCwgMjM0LCAxNjIsIDMyLCAxNiwgMzgsIAorICAgIDIwOSwgNDAsIDIxNSwgMTM2LCAzMiwgMTYsIDIxNiwgNjYsIDgxLCAzMiwgMTYsIDIxNiwgNjYsIDExNSwgODEsIDMyLCAxNiwgCisgICAgMTY3LCAyMTYsIDY2LCA4MSwgMzIsIDE2LCAyMzUsIDEyNSwgMjAzLCAyMjgsIDMyLCAxNiwgMjM1LCAxMjUsIDIzOSwgMTY3LCAKKyAgICAzMiwgMTYsIDMsIDIzNywgODMsIDMyLCAxNiwgMjQyLCAxMywgMzIsIDE2LCAyNDIsIDE0LCAyNTEsIDEyNCwgMzIsIDE2LCAKKyAgICAyMjIsIDEyMSwgMzIsIDE2LCAyMjQsIDgwLCAzMiwgMTYsIDI0OCwgNTQsIDMyLCAxNiwgMjEwLCAxNzEsIDIwMSwgMzQsIAorICAgIDMyLCAxNiwgMjEwLCAxNzEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyMSwgMTYwLCAzMiwgMTYsIDIyMSwgMTYxLCAyNDgsIDE0NCwgCisgICAgMzIsIDE2LCAyMTAsIDE2NSwgMjAxLCAzNCwgMzIsIDE2LCAyMTAsIDE2NSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjM2LCAxNzQsIAorICAgIDIwMSwgMzQsIDMyLCAxNiwgMjM2LCAxNzQsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyNCwgODEsIDIxNiwgMjUsIDIxMywgMTE3LCAKKyAgICAzMiwgMTYsIDIyNCwgODEsIDIyOCwgMTIyLCAyMTMsIDExNywgMzIsIDE2LCAyNDgsIDU1LCAyMTMsIDExNywgMzIsIDE2LCAKKyAgICAyMTAsIDE3MSwgMjEzLCAxMTcsIDMyLCAxNiwgMjIxLCAxNjEsIDIxMywgMTE3LCAzMiwgMTYsIDIxMCwgMTY1LCAyMTMsIAorICAgIDExNywgMzIsIDE2LCAyMDYsIDE2OCwgMjE2LCAyMywgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMTYsIDI0LCAzMiwgMTYsIDIwNiwgCisgICAgMTY4LCAyMTYsIDIzLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIxLCAzMiwgMTYsIDIwNiwgMTY4LCAyMTYsIDIzLCAKKyAgICAyNDIsIDIwNywgMjE0LCAyNDksIDIxNiwgMjUsIDI0MSwgMjQsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIAorICAgIDIwNywgMjE0LCAyNDksIDIxNiwgMjQsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIAorICAgIDIyOCwgMTIxLCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMiwgMjQxLCAKKyAgICAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjIsIDI0MSwgMjMsIAorICAgIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIyLCAyNDEsIDIyLCAzMiwgCisgICAgMTYsIDI0MiwgMjM3LCAzMiwgMTYsIDIzNSwgNjMsIDI0NywgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMzUsIDYzLCAyMzgsIAorICAgIDYsIDI0NiwgMTI0LCAzMiwgMTYsIDUyLCAyNTAsIDEwMywgMzIsIDE2LCAyMDIsIDIwNywgMzIsIDE2LCAyMTUsIDEwMywgCisgICAgMzIsIDE2LCAyNDYsIDExNSwgMzIsIDE2LCAyMTEsIDIyNiwgMzIsIDE2LCAyNDYsIDExOSwgMzIsIDE2LCAyMDUsIDE1MSwgCisgICAgMzIsIDE2LCAyMTUsIDcyLCAzMiwgMTYsIDIxNSwgNzMsIDIzNywgMzYsIDMyLCAxNiwgMjExLCAyMjcsIDIzNywgMzYsIDMyLCAKKyAgICAxNiwgMjA1LCAxNTIsIDIxMywgMTE0LCAzMiwgMTYsIDIxNiwgNiwgMjA4LCA1LCAzMiwgMTYsIDIyNiwgMTUzLCAyNDcsIAorICAgIDIyNCwgMjQ2LCAxMjQsIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMTcxLCA3NiwgMjE1LCAxOTYsIDMyLCAxNiwgMjI2LCAKKyAgICAxNTMsIDQ3LCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMjEzLCAxODIsIDgxLCAzMiwgMTYsIDIyNiwgMTUzLCAyMDEsIAorICAgIDMyLCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMTY3LCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMjE0LCA4OCwgCisgICAgMjE4LCAyMTAsIDIwOCwgOTMsIDIzOSwgMTY3LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTQsIDg4LCAyMTgsIDIxMCwgMjA4LCAKKyAgICA5MywgMjAzLCAyMjgsIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMjI4LCAyMTgsIDIxMCwgMjA4LCA5MywgMjM5LCAxNjcsIAorICAgIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMjI4LCAyMTgsIDIxMCwgMjA4LCA5MywgMjAzLCAyMjgsIDMyLCAxNiwgMjI2LCAKKyAgICAxNTMsIDIzNywgNDUsIDU0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MiwgMzEsIDIwMiwgMTkyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNTEsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQxLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDEzNCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTIwLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDExOSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMTgsIAorICAgIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTE3LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MSwgMzEsIAorICAgIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNjAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU5LCAzMSwgMjAyLCAKKyAgICAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1OCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTcsIDMxLCAyMDIsIDE5MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTU2LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1NSwgMzEsIDIwMiwgMTkyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNTQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTUzLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDE1MiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTQ5LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0OCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDcsIAorICAgIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQ2LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNSwgMzEsIAorICAgIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTIzLCAzMSwgMjAyLCAKKyAgICAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyMiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjEsIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNjIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTEsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxMzQsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjYsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxMTksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMTgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxNjAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTgsIAorICAgIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTQsIDMxLCAKKyAgICAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTIsIDMxLCAyMjgsIAorICAgIDcyLCAyMTgsIDIxMywgMjA3LCAxNDcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDYsIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNDUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDQsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNDMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxNDAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMzgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzYsIAorICAgIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzMsIDMxLCAKKyAgICAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzEsIDMxLCAyMjgsIAorICAgIDcyLCAyMTgsIDIxMywgMjA3LCAxMzAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjksIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxMjgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjcsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxMjUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjQsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxMjMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMjEsIDM4LCAzMSwgMzIsIDIwNSwgNzksIDM4LCAzMSwgMzIsIDIwNiwgMTM4LCAzOCwgMzEsIDMyLCAyMTYsIDM1LCAzMSwgCisgICAgMzIsIDIyNSwgMTAsIDIyMSwgOTcsIDM2LCAyMzksIDE3LCAyNDEsIDM4LCAzNiwgMjM0LCAxMjIsIDIzOSwgMTcsIDI0MSwgCisgICAgMzgsIDM2LCAyMzMsIDg3LCAyMzksIDE3LCAyNDEsIDM4LCAzNiwgMjM5LCAxNiwgMjM0LCAxMjMsIDI0MSwgMzgsIDM2LCAKKyAgICAyMzksIDE2LCAyMzMsIDg2LCAyNDEsIDM4LCAzNiwgMjM5LCAxNywgMjA2LCAxNDAsIDM2LCAyNDcsIDU1LCAyMDYsIDE0MCwgCisgICAgMzYsIDIzNiwgMTgzLCAyNDYsIDE1NSwgMjA2LCAxNDAsIDM2LCAyMjEsIDE1MiwgMjA2LCAxNDAsIDM2LCAyNDksIDY3LCAKKyAgICAyMDYsIDE0MCwgMzYsIDIyNywgMiwgMjA5LCA1MywgMjA2LCAxNDAsIDM2LCAyNDMsIDM1LCAyMDYsIDE0MCwgMzYsIDI1MCwgCisgICAgMTgzLCAyMDYsIDE0MCwgMzYsIDIxNywgMzksIDIwNiwgMTQwLCAzNiwgMjQ4LCA2NCwgMjE2LCAyNTQsIDIwNiwgMTQwLCAKKyAgICAzNiwgMjQxLCAxNTcsIDIxNywgMzQsIDI0MCwgMjQ2LCAyMDYsIDE0MCwgMzYsIDI0MCwgMjQzLCAyMDYsIDE0MCwgMzYsIAorICAgIDE5OSwgMjIzLCAyMDYsIDE0MCwgMzYsIDIyOCwgMTA4LCAyMDYsIDE0MCwgMzYsIDIxNiwgNDUsIDIwNiwgMTQwLCAzNiwgCisgICAgMjEzLCAxODksIDIwNiwgMTQwLCAzNiwgMjQzLCA0NywgMjA2LCAxNDAsIDM2LCAyMzMsIDE5OCwgMjQ5LCAxMjksIDIwNiwgCisgICAgMTQwLCAzNiwgMjAxLCAxMDYsIDIwNiwgMTQwLCAzNiwgMjM3LCA4LCAyMDYsIDE0MCwgMzYsIDI1MSwgMjI0LCAyMDYsIAorICAgIDE0MCwgMzYsIDIxMywgMTQ2LCAyMDYsIDE0MCwgMzYsIDIxMywgMTIxLCAyMDYsIDE0MCwgMzYsIDIzOSwgMTUsIDIwNiwgCisgICAgMTQwLCAzNiwgMjI3LCAxNTAsIDIwNiwgMTQwLCAzNiwgMjQzLCA0MiwgMjA2LCAxNDAsIDM2LCAyMzgsIDE3MCwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzksIDEwOSwgMjA2LCAxNDAsIDM2LCAyNDcsIDI0LCAyMDYsIDE0MCwgMzYsIDI0MSwgMTY3LCAyMDYsIAorICAgIDE0MCwgMzYsIDI3LCAyMTMsIDEyMCwgMjA2LCAxNDAsIDM2LCAyMTYsIDIwMiwgMjA2LCAxNDAsIDM2LCAyMjUsIDE0LCAKKyAgICAyMDYsIDE0MCwgMzYsIDI0NiwgMTA4LCAyMDYsIDE0MCwgMzYsIDIyNiwgMTQzLCAyMDYsIDE0MCwgMzYsIDIzNiwgMzksIAorICAgIDIwNiwgMTQwLCAzNiwgMjA4LCA1OCwgMjA2LCAxNDAsIDM2LCAyMTQsIDIwMSwgMjA2LCAxNDAsIDM2LCAyMzYsIDE4MiwgCisgICAgMjA2LCAxNDAsIDM2LCAyMTMsIDEyMiwgMjA2LCAxNDAsIDM2LCAyMjUsIDUzLCAyMTcsIDM0LCAyMjEsIDEzMiwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMTMsIDExOCwgMjA2LCAxNDAsIDM2LCAyMzUsIDExMCwgMjA1LCAxODYsIDIyMiwgNTksIDIwNiwgMTQwLCAKKyAgICAzNiwgMjM4LCAxNzIsIDIwNiwgMTQwLCAzNiwgMjA4LCA3MSwgMjA2LCAxNDAsIDM2LCAyMzUsIDY1LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzOCwgMTYzLCAyMDYsIDE0MCwgMzYsIDIxNiwgODksIDIwNiwgMTQwLCAzNiwgMjEzLCAxNiwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMzcsIDM0LCAyMDYsIDE0MCwgMzYsIDIwMywgNjgsIDIxNywgMzQsIDIwMSwgODYsIDIwNiwgMTQwLCAzNiwgMjQzLCA1MiwgCisgICAgMjA2LCAxNDAsIDM2LCAyMjIsIDc0LCAyMDYsIDE0MCwgMzYsIDIzOCwgNzYsIDIwNiwgMTQwLCAzNiwgMjAzLCAyMzgsIAorICAgIDIwNiwgMTQwLCAzNiwgMjQxLCAyNSwgMjA2LCAxNDAsIDM2LCAyNDYsIDExMCwgMjIxLCA1OCwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMzUsIDQyLCAyMDYsIDE0MCwgMzYsIDIzNiwgNDAsIDIyOCwgMTE3LCAyMDYsIDE0MCwgMzYsIDIyMiwgMTI5LCAyMDYsIAorICAgIDE0MCwgMzYsIDI1MSwgMjQ2LCAyMDYsIDE0MCwgMzYsIDIzOCwgMTg4LCAyMDYsIDE0MCwgMzYsIDIzOSwgMTcxLCAyMDYsIAorICAgIDE0MCwgMzYsIDIwMSwgODQsIDIwNiwgMTQwLCAzNiwgMjA5LCAxMzQsIDIwNiwgMTQwLCAzNiwgMjI4LCA4MSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyNDEsIDEyNCwgMjA2LCAxNDAsIDM2LCAyNDEsIDI0OCwgMjA2LCAxNDAsIDM2LCAyNDEsIDIxLCAyMDYsIAorICAgIDE0MCwgMzYsIDIzOCwgNDAsIDIwNiwgMTQwLCAzNiwgMjEwLCAxMjgsIDIwNiwgMTQwLCAzNiwgMjA4LCA3NSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzQsIDE2NCwgMjA2LCAxNDAsIDM2LCAyNDYsIDYzLCAyMDYsIDE0MCwgMzYsIDI0NiwgMTA1LCAyMDYsIAorICAgIDE0MCwgMzYsIDIzNywgMTc0LCAyMDYsIDE0MCwgMzYsIDI1MSwgMTg4LCAyMDYsIDE0MCwgMzYsIDI0NiwgNjIsIDIwNiwgCisgICAgMTQwLCAzNiwgMjE3LCA3OSwgMjA2LCAxMDcsIDIwMywgNDUsIDIwNiwgMTQwLCAzNiwgMjQxLCA0NywgMjA2LCAxNDAsIDM2LCAKKyAgICAyMjUsIDE2NCwgMjA2LCAxNDAsIDM2LCAyMzYsIDIzMiwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxMDIsIAorICAgIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTA1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE0NywgCisgICAgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxNDksIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTY0LCAKKyAgICAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE4NywgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAyMTAsIAorICAgIDEzNSwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxOTIsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgCisgICAgMjE5LCAxMTMsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMTAyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIAorICAgIDE2MiwgMTcsIDEwNSwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAxNDcsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgCisgICAgMTYyLCAxNywgMTQ5LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDE2NCwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAKKyAgICAxNjIsIDE3LCAxODcsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMjEwLCAxMzUsIDI0MywgMywgMjEyLCAyNDcsIAorICAgIDIwNiwgMTYyLCAxNywgMTkyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDIxOSwgMTEzLCAxMywgMjcsIDYsIAorICAgIDYyLCAxMywgMjcsIDYsIDI1MCwgMTAzLCAxMywgMjcsIDYsIDI0NywgMjIzLCAxMywgMjcsIDYsIDI0MiwgMTUzLCAxMywgCisgICAgMjcsIDYsIDcyLCAxMywgMjcsIDYsIDIzOCwgNSwgMTMsIDI3LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCA2LCAyMzQsIDI0NywgCisgICAgMTMsIDI3LCA2LCA3MCwgMTMsIDI3LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCA2LCAyMjcsIDExOCwgMTMsIDI3LCA2LCAxNTYsIAorICAgIDEzLCAyNywgNiwgMjIzLCAyNDMsIDEzLCAyNywgNiwgMjIwLCAyMTQsIDEzLCAyNywgNiwgNzQsIDEzLCAyNywgNiwgMjE2LCAKKyAgICAyMjYsIDEzLCAyNywgNiwgMjE0LCAxNjcsIDEzLCAyNywgNiwgMTQ2LCAxMywgMjcsIDYsIDIxMiwgMTIyLCAxMywgMjcsIDYsIAorICAgIDIwNywgODMsIDEzLCAyNywgNiwgNjYsIDEzLCAyNywgNiwgMjAzLCAxNjgsIDEzLCAyNywgNiwgMjAxLCAxNDcsIDEzLCAyNywgCisgICAgNiwgMjAwLCAxOTUsIDEzLCAyNywgNiwgMjAwLCAxMjMsIDEzLCAyNywgNiwgMTk5LCAxNTcsIDEzLCAyNywgNCwgNjIsIDEzLCAKKyAgICAyNywgNCwgMjUwLCAxMDMsIDEzLCAyNywgNCwgMjQ3LCAyMjMsIDEzLCAyNywgNCwgMjQyLCAxNTMsIDEzLCAyNywgNCwgNzIsIAorICAgIDEzLCAyNywgNCwgMjM4LCA1LCAxMywgMjcsIDQsIDIzNiwgMTU2LCAxMywgMjcsIDQsIDIzNCwgMjQ3LCAxMywgMjcsIDQsIAorICAgIDcwLCAxMywgMjcsIDQsIDIyNywgMjUxLCAxMywgMjcsIDQsIDIyNywgMTE4LCAxMywgMjcsIDQsIDE1NiwgMTMsIDI3LCA0LCAKKyAgICAyMjMsIDI0MywgMTMsIDI3LCA0LCAyMjAsIDIxNCwgMTMsIDI3LCA0LCA3NCwgMTMsIDI3LCA0LCAyMTYsIDIyNiwgMTMsIAorICAgIDI3LCA0LCAyMTQsIDE2NywgMTMsIDI3LCA0LCAxNDYsIDEzLCAyNywgNCwgMjEyLCAxMjIsIDEzLCAyNywgNCwgMjA3LCA4MywgCisgICAgMTMsIDI3LCA0LCA2NiwgMTMsIDI3LCA0LCAyMDMsIDE2OCwgMTMsIDI3LCA0LCAyMDEsIDE0NywgMTMsIDI3LCA0LCAyMDAsIAorICAgIDE5NSwgMTMsIDI3LCA0LCAyMDAsIDEyMywgMTMsIDI3LCA0LCAxOTksIDE1NywgMTMsIDM5LCA2LCA2MiwgMTMsIDM5LCA2LCAKKyAgICAyNTAsIDEwMywgMTMsIDM5LCA2LCAyNDcsIDIyMywgMTMsIDM5LCA2LCAyNDIsIDE1MywgMTMsIDM5LCA2LCA3MiwgMTMsIAorICAgIDM5LCA2LCAyMzgsIDUsIDEzLCAzOSwgNiwgMjM2LCAxNTYsIDEzLCAzOSwgNiwgMjM0LCAyNDcsIDEzLCAzOSwgNiwgNzAsIAorICAgIDEzLCAzOSwgNiwgMjI3LCAyNTEsIDEzLCAzOSwgNiwgMjI3LCAxMTgsIDEzLCAzOSwgNiwgMTU2LCAxMywgMzksIDYsIDIyMywgCisgICAgMjQzLCAxMywgMzksIDYsIDIyMCwgMjE0LCAxMywgMzksIDYsIDc0LCAxMywgMzksIDYsIDIxNiwgMjI2LCAxMywgMzksIDYsIAorICAgIDIxNCwgMTY3LCAxMywgMzksIDYsIDE0NiwgMTMsIDM5LCA2LCAyMTIsIDEyMiwgMTMsIDM5LCA2LCAyMDcsIDgzLCAxMywgCisgICAgMzksIDYsIDY2LCAxMywgMzksIDYsIDIwMywgMTY4LCAxMywgMzksIDYsIDIwMSwgMTQ3LCAxMywgMzksIDYsIDIwMCwgMTk1LCAKKyAgICAxMywgMzksIDYsIDIwMCwgMTIzLCAxMywgMzksIDYsIDE5OSwgMTU3LCAxMywgMzksIDQsIDYyLCAxMywgMzksIDQsIDI1MCwgCisgICAgMTAzLCAxMywgMzksIDQsIDI0NywgMjIzLCAxMywgMzksIDQsIDI0MiwgMTUzLCAxMywgMzksIDQsIDcyLCAxMywgMzksIDQsIAorICAgIDIzOCwgNSwgMTMsIDM5LCA0LCAyMzYsIDE1NiwgMTMsIDM5LCA0LCA3MCwgMTMsIDM5LCA0LCAyMjcsIDI1MSwgMTMsIDM5LCAKKyAgICA0LCAyMjcsIDExOCwgMTMsIDM5LCA0LCAxNTYsIDEzLCAzOSwgNCwgMjIzLCAyNDMsIDEzLCAzOSwgNCwgMjIwLCAyMTQsIAorICAgIDEzLCAzOSwgNCwgNzQsIDEzLCAzOSwgNCwgMjE2LCAyMjYsIDEzLCAzOSwgNCwgMjE0LCAxNjcsIDEzLCAzOSwgNCwgMTQ2LCAKKyAgICAxMywgMzksIDQsIDIxMiwgMTIyLCAxMywgMzksIDQsIDIwNywgODMsIDEzLCAzOSwgNCwgNjYsIDEzLCAzOSwgNCwgMjAzLCAKKyAgICAxNjgsIDEzLCAzOSwgNCwgMjAxLCAxNDcsIDEzLCAzOSwgNCwgMjAwLCAxOTUsIDEzLCAzOSwgNCwgMjAwLCAxMjMsIDEzLCAKKyAgICAzOSwgNCwgMTk5LCAxNTcsIDEzLCAyNywgMzksIDYsIDYyLCAxMywgMjcsIDM5LCA2LCAyNTAsIDEwMywgMTMsIDI3LCAzOSwgCisgICAgNiwgMjQ3LCAyMjMsIDEzLCAyNywgMzksIDYsIDI0MiwgMTUzLCAxMywgMjcsIDM5LCA2LCA3MiwgMTMsIDI3LCAzOSwgNiwgCisgICAgMjM4LCA1LCAxMywgMjcsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCAzOSwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMzksIDYsIAorICAgIDcwLCAxMywgMjcsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCAzOSwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMzksIDYsIDE1NiwgCisgICAgMTMsIDI3LCAzOSwgNiwgMjIzLCAyNDMsIDEzLCAyNywgMzksIDYsIDIyMCwgMjE0LCAxMywgMjcsIDM5LCA2LCA3NCwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE2LCAyMjYsIDEzLCAyNywgMzksIDYsIDIxNCwgMTY3LCAxMywgMjcsIDM5LCA2LCAxNDYsIDEzLCAyNywgCisgICAgMzksIDYsIDIxMiwgMTIyLCAxMywgMjcsIDM5LCA2LCAyMDcsIDgzLCAxMywgMjcsIDM5LCA2LCA2NiwgMTMsIDI3LCAzOSwgCisgICAgNiwgMjAzLCAxNjgsIDEzLCAyNywgMzksIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDI3LCAKKyAgICAzOSwgNiwgMjAwLCAxMjMsIDEzLCAyNywgMzksIDYsIDE5OSwgMTU3LCAxMywgMjcsIDM5LCA0LCA2MiwgMTMsIDI3LCAzOSwgCisgICAgNCwgMjUwLCAxMDMsIDEzLCAyNywgMzksIDQsIDI0NywgMjIzLCAxMywgMjcsIDM5LCA0LCAyNDIsIDE1MywgMTMsIDI3LCAKKyAgICAzOSwgNCwgNzIsIDEzLCAyNywgMzksIDQsIDIzOCwgNSwgMTMsIDI3LCAzOSwgNCwgMjM2LCAxNTYsIDEzLCAyNywgMzksIDQsIAorICAgIDIzNCwgMjQ3LCAxMywgMjcsIDM5LCA0LCA3MCwgMTMsIDI3LCAzOSwgNCwgMjI3LCAyNTEsIDEzLCAyNywgMzksIDQsIDIyNywgCisgICAgMTE4LCAxMywgMjcsIDM5LCA0LCAxNTYsIDEzLCAyNywgMzksIDQsIDIyMywgMjQzLCAxMywgMjcsIDM5LCA0LCAyMjAsIAorICAgIDIxNCwgMTMsIDI3LCAzOSwgNCwgNzQsIDEzLCAyNywgMzksIDQsIDIxNiwgMjI2LCAxMywgMjcsIDM5LCA0LCAyMTQsIDE2NywgCisgICAgMTMsIDI3LCAzOSwgNCwgMTQ2LCAxMywgMjcsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDI3LCAzOSwgNCwgMjA3LCA4MywgMTMsIAorICAgIDI3LCAzOSwgNCwgNjYsIDEzLCAyNywgMzksIDQsIDIwMywgMTY4LCAxMywgMjcsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDI3LCAKKyAgICAzOSwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMzksIDQsIDIwMCwgMTIzLCAxMywgMjcsIDM5LCA0LCAxOTksIDE1NywgMTMsIAorICAgIDEzNSwgNiwgNjIsIDEzLCAxMzUsIDYsIDI0NywgMjIzLCAxMywgMTM1LCA2LCAyNDIsIDE1MywgMTMsIDEzNSwgNiwgMjM2LCAKKyAgICAxNTYsIDEzLCAxMzUsIDYsIDIyNywgMjUxLCAxMywgMTM1LCA2LCAyMjcsIDExOCwgMTMsIDEzNSwgNiwgMjIwLCAyMTQsIAorICAgIDEzLCAxMzUsIDYsIDc0LCAxMywgMTM1LCA2LCAyMTYsIDIyNiwgMTMsIDEzNSwgNiwgMjE0LCAxNjcsIDEzLCAxMzUsIDYsIAorICAgIDIxMiwgMTIyLCAxMywgMTM1LCA2LCAyMDcsIDgzLCAxMywgMTM1LCA2LCA2NiwgMTMsIDEzNSwgNiwgMjAzLCAxNjgsIDEzLCAKKyAgICAxMzUsIDYsIDIwMSwgMTQ3LCAxMywgMTM1LCA2LCAyMDAsIDE5NSwgMTMsIDEzNSwgNiwgMjAwLCAxMjMsIDEzLCAxMzUsIDYsIAorICAgIDE5OSwgMTU3LCAxMywgMTM1LCA0LCA2MiwgMTMsIDEzNSwgNCwgMjUwLCAxMDMsIDEzLCAxMzUsIDQsIDI0NywgMjIzLCAxMywgCisgICAgMTM1LCA0LCAyNDIsIDE1MywgMTMsIDEzNSwgNCwgMjM4LCA1LCAxMywgMTM1LCA0LCAyMzQsIDI0NywgMTMsIDEzNSwgNCwgCisgICAgNzAsIDEzLCAxMzUsIDQsIDIyNywgMjUxLCAxMywgMTM1LCA0LCAyMjcsIDExOCwgMTMsIDEzNSwgNCwgMTU2LCAxMywgMTM1LCAKKyAgICA0LCAyMjMsIDI0MywgMTMsIDEzNSwgNCwgMjIwLCAyMTQsIDEzLCAxMzUsIDQsIDIxNiwgMjI2LCAxMywgMTM1LCA0LCAyMTQsIAorICAgIDE2NywgMTMsIDEzNSwgNCwgMTQ2LCAxMywgMTM1LCA0LCAyMTIsIDEyMiwgMTMsIDEzNSwgNCwgMjA3LCA4MywgMTMsIDEzNSwgCisgICAgNCwgNjYsIDEzLCAxMzUsIDQsIDIwMywgMTY4LCAxMywgMTM1LCA0LCAyMDEsIDE0NywgMTMsIDEzNSwgNCwgMjAwLCAxOTUsIAorICAgIDEzLCAxMzUsIDQsIDIwMCwgMTIzLCAxMywgMTM1LCA0LCAxOTksIDE1NywgMTMsIDI3LCAxMzUsIDYsIDYyLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjUwLCAxMDMsIDEzLCAyNywgMTM1LCA2LCAyNDcsIDIyMywgMTMsIDI3LCAxMzUsIDYsIDI0MiwgMTUzLCAxMywgCisgICAgMjcsIDEzNSwgNiwgNzIsIDEzLCAyNywgMTM1LCA2LCAyMzgsIDUsIDEzLCAyNywgMTM1LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIzNCwgMjQ3LCAxMywgMjcsIDEzNSwgNiwgNzAsIDEzLCAyNywgMTM1LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIyNywgMTE4LCAxMywgMjcsIDEzNSwgNiwgMTU2LCAxMywgMjcsIDEzNSwgNiwgMjIzLCAyNDMsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMjAsIDIxNCwgMTMsIDI3LCAxMzUsIDYsIDc0LCAxMywgMjcsIDEzNSwgNiwgMjE2LCAyMjYsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMTQsIDE2NywgMTMsIDI3LCAxMzUsIDYsIDE0NiwgMTMsIDI3LCAxMzUsIDYsIDIxMiwgMTIyLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjA3LCA4MywgMTMsIDI3LCAxMzUsIDYsIDY2LCAxMywgMjcsIDEzNSwgNiwgMjAzLCAxNjgsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMDEsIDE0NywgMTMsIDI3LCAxMzUsIDYsIDIwMCwgMTk1LCAxMywgMjcsIDEzNSwgNiwgMjAwLCAxMjMsIDEzLCAKKyAgICAyNywgMTM1LCA2LCAxOTksIDE1NywgMTMsIDI3LCAxMzUsIDQsIDYyLCAxMywgMjcsIDEzNSwgNCwgMjUwLCAxMDMsIDEzLCAKKyAgICAyNywgMTM1LCA0LCAyNDcsIDIyMywgMTMsIDI3LCAxMzUsIDQsIDI0MiwgMTUzLCAxMywgMjcsIDEzNSwgNCwgNzIsIDEzLCAKKyAgICAyNywgMTM1LCA0LCAyMzgsIDUsIDEzLCAyNywgMTM1LCA0LCAyMzYsIDE1NiwgMTMsIDI3LCAxMzUsIDQsIDIzNCwgMjQ3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNzAsIDEzLCAyNywgMTM1LCA0LCAyMjcsIDI1MSwgMTMsIDI3LCAxMzUsIDQsIDIyNywgMTE4LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMTU2LCAxMywgMjcsIDEzNSwgNCwgMjIzLCAyNDMsIDEzLCAyNywgMTM1LCA0LCAyMjAsIDIxNCwgCisgICAgMTMsIDI3LCAxMzUsIDQsIDc0LCAxMywgMjcsIDEzNSwgNCwgMjE2LCAyMjYsIDEzLCAyNywgMTM1LCA0LCAyMTQsIDE2NywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDE0NiwgMTMsIDI3LCAxMzUsIDQsIDIxMiwgMTIyLCAxMywgMjcsIDEzNSwgNCwgMjA3LCA4MywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDY2LCAxMywgMjcsIDEzNSwgNCwgMjAzLCAxNjgsIDEzLCAyNywgMTM1LCA0LCAyMDEsIDE0NywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDIwMCwgMTk1LCAxMywgMjcsIDEzNSwgNCwgMjAwLCAxMjMsIDEzLCAyNywgMTM1LCA0LCAxOTksIAorICAgIDE1NywgMTMsIDE3MCwgNiwgNjIsIDEzLCAxNzAsIDYsIDI1MCwgMTAzLCAxMywgMTcwLCA2LCAyNDIsIDE1MywgMTMsIDE3MCwgCisgICAgNiwgNzIsIDEzLCAxNzAsIDYsIDIzOCwgNSwgMTMsIDE3MCwgNiwgMjM2LCAxNTYsIDEzLCAxNzAsIDYsIDIyNywgMjUxLCAKKyAgICAxMywgMTcwLCA2LCAyMjcsIDExOCwgMTMsIDE3MCwgNiwgMTU2LCAxMywgMTcwLCA2LCAyMjMsIDI0MywgMTMsIDE3MCwgNiwgCisgICAgMjIwLCAyMTQsIDEzLCAxNzAsIDYsIDc0LCAxMywgMTcwLCA2LCAyMTYsIDIyNiwgMTMsIDE3MCwgNiwgMjE0LCAxNjcsIDEzLCAKKyAgICAxNzAsIDYsIDIxMiwgMTIyLCAxMywgMTcwLCA2LCAyMDcsIDgzLCAxMywgMTcwLCA2LCA2NiwgMTMsIDE3MCwgNiwgMjAzLCAKKyAgICAxNjgsIDEzLCAxNzAsIDYsIDIwMSwgMTQ3LCAxMywgMTcwLCA2LCAyMDAsIDE5NSwgMTMsIDE3MCwgNiwgMjAwLCAxMjMsIAorICAgIDEzLCAxNzAsIDQsIDYyLCAxMywgMTcwLCA0LCAyNTAsIDEwMywgMTMsIDE3MCwgNCwgMjQ3LCAyMjMsIDEzLCAxNzAsIDQsIAorICAgIDI0MiwgMTUzLCAxMywgMTcwLCA0LCA3MiwgMTMsIDE3MCwgNCwgMjM4LCA1LCAxMywgMTcwLCA0LCAyMzYsIDE1NiwgMTMsIAorICAgIDE3MCwgNCwgMjM0LCAyNDcsIDEzLCAxNzAsIDQsIDcwLCAxMywgMTcwLCA0LCAyMjcsIDI1MSwgMTMsIDE3MCwgNCwgMjI3LCAKKyAgICAxMTgsIDEzLCAxNzAsIDQsIDE1NiwgMTMsIDE3MCwgNCwgMjIzLCAyNDMsIDEzLCAxNzAsIDQsIDIyMCwgMjE0LCAxMywgCisgICAgMTcwLCA0LCA3NCwgMTMsIDE3MCwgNCwgMjE2LCAyMjYsIDEzLCAxNzAsIDQsIDIxNCwgMTY3LCAxMywgMTcwLCA0LCAxNDYsIAorICAgIDEzLCAxNzAsIDQsIDIxMiwgMTIyLCAxMywgMTcwLCA0LCAyMDcsIDgzLCAxMywgMTcwLCA0LCA2NiwgMTMsIDE3MCwgNCwgCisgICAgMjAzLCAxNjgsIDEzLCAxNzAsIDQsIDIwMSwgMTQ3LCAxMywgMTcwLCA0LCAyMDAsIDE5NSwgMTMsIDE3MCwgNCwgMjAwLCAKKyAgICAxMjMsIDEzLCAxNzAsIDQsIDE5OSwgMTU3LCAxMywgMTc1LCA2LCA2MiwgMTMsIDE3NSwgNiwgMjUwLCAxMDMsIDEzLCAxNzUsIAorICAgIDYsIDI0MiwgMTUzLCAxMywgMTc1LCA2LCA3MiwgMTMsIDE3NSwgNiwgMjM4LCA1LCAxMywgMTc1LCA2LCAyMzYsIDE1NiwgCisgICAgMTMsIDE3NSwgNiwgNzAsIDEzLCAxNzUsIDYsIDIyNywgMjUxLCAxMywgMTc1LCA2LCAyMjcsIDExOCwgMTMsIDE3NSwgNiwgCisgICAgMTU2LCAxMywgMTc1LCA2LCAyMjMsIDI0MywgMTMsIDE3NSwgNiwgNzQsIDEzLCAxNzUsIDYsIDIxMiwgMTIyLCAxMywgMTc1LCAKKyAgICA2LCAyMDcsIDgzLCAxMywgMTc1LCA2LCA2NiwgMTMsIDE3NSwgNiwgMjAzLCAxNjgsIDEzLCAxNzUsIDYsIDIwMSwgMTQ3LCAKKyAgICAxMywgMTc1LCA2LCAyMDAsIDE5NSwgMTMsIDE3NSwgNiwgMjAwLCAxMjMsIDEzLCAxNzUsIDQsIDYyLCAxMywgMTc1LCA0LCAKKyAgICAyNTAsIDEwMywgMTMsIDE3NSwgNCwgMjQ3LCAyMjMsIDEzLCAxNzUsIDQsIDI0MiwgMTUzLCAxMywgMTc1LCA0LCA3MiwgMTMsIAorICAgIDE3NSwgNCwgMjM4LCA1LCAxMywgMTc1LCA0LCAyMzYsIDE1NiwgMTMsIDE3NSwgNCwgMjM0LCAyNDcsIDEzLCAxNzUsIDQsIAorICAgIDcwLCAxMywgMTc1LCA0LCAyMjcsIDI1MSwgMTMsIDE3NSwgNCwgMjI3LCAxMTgsIDEzLCAxNzUsIDQsIDE1NiwgMTMsIDE3NSwgCisgICAgNCwgMjIzLCAyNDMsIDEzLCAxNzUsIDQsIDIyMCwgMjE0LCAxMywgMTc1LCA0LCA3NCwgMTMsIDE3NSwgNCwgMjE2LCAyMjYsIAorICAgIDEzLCAxNzUsIDQsIDIxNCwgMTY3LCAxMywgMTc1LCA0LCAxNDYsIDEzLCAxNzUsIDQsIDIxMiwgMTIyLCAxMywgMTc1LCA0LCAKKyAgICAyMDcsIDgzLCAxMywgMTc1LCA0LCA2NiwgMTMsIDE3NSwgNCwgMjAzLCAxNjgsIDEzLCAxNzUsIDQsIDIwMSwgMTQ3LCAxMywgCisgICAgMTc1LCA0LCAyMDAsIDE5NSwgMTMsIDE3NSwgNCwgMjAwLCAxMjMsIDEzLCAxNzUsIDQsIDE5OSwgMTU3LCAxMywgMjcsIAorICAgIDE3MCwgNiwgNjIsIDEzLCAyNywgMTcwLCA2LCAyNTAsIDEwMywgMTMsIDI3LCAxNzAsIDYsIDI0NywgMjIzLCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjQyLCAxNTMsIDEzLCAyNywgMTcwLCA2LCA3MiwgMTMsIDI3LCAxNzAsIDYsIDIzOCwgNSwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIzNiwgMTU2LCAxMywgMjcsIDE3MCwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMTcwLCA2LCA3MCwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIyNywgMjUxLCAxMywgMjcsIDE3MCwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMTcwLCA2LCAxNTYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMjMsIDI0MywgMTMsIDI3LCAxNzAsIDYsIDIyMCwgMjE0LCAxMywgMjcsIDE3MCwgNiwgNzQsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAxNzAsIDYsIDIxNCwgMTY3LCAxMywgMjcsIDE3MCwgNiwgMTQ2LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjEyLCAxMjIsIDEzLCAyNywgMTcwLCA2LCAyMDcsIDgzLCAxMywgMjcsIDE3MCwgNiwgNjYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMDMsIDE2OCwgMTMsIDI3LCAxNzAsIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDE3MCwgNiwgMjAwLCAxOTUsIDEzLCAKKyAgICAyNywgMTcwLCA2LCAyMDAsIDEyMywgMTMsIDI3LCAxNzAsIDYsIDE5OSwgMTU3LCAxMywgMjcsIDE3MCwgNCwgNjIsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyNTAsIDEwMywgMTMsIDI3LCAxNzAsIDQsIDI0NywgMjIzLCAxMywgMjcsIDE3MCwgNCwgMjQyLCAxNTMsIAorICAgIDEzLCAyNywgMTcwLCA0LCA3MiwgMTMsIDI3LCAxNzAsIDQsIDIzOCwgNSwgMTMsIDI3LCAxNzAsIDQsIDIzNiwgMTU2LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjM0LCAyNDcsIDEzLCAyNywgMTcwLCA0LCA3MCwgMTMsIDI3LCAxNzAsIDQsIDIyNywgMjUxLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjI3LCAxMTgsIDEzLCAyNywgMTcwLCA0LCAxNTYsIDEzLCAyNywgMTcwLCA0LCAyMjMsIDI0MywgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIyMCwgMjE0LCAxMywgMjcsIDE3MCwgNCwgNzQsIDEzLCAyNywgMTcwLCA0LCAyMTYsIDIyNiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIxNCwgMTY3LCAxMywgMjcsIDE3MCwgNCwgMTQ2LCAxMywgMjcsIDE3MCwgNCwgMjEyLCAxMjIsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMDcsIDgzLCAxMywgMjcsIDE3MCwgNCwgNjYsIDEzLCAyNywgMTcwLCA0LCAyMDMsIDE2OCwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIwMSwgMTQ3LCAxMywgMjcsIDE3MCwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMTcwLCA0LCAyMDAsIDEyMywgCisgICAgMTMsIDI3LCAxNzAsIDQsIDE5OSwgMTU3LCAxMywgNDMsIDYsIDYyLCAxMywgNDMsIDYsIDI1MCwgMTAzLCAxMywgNDMsIDYsIAorICAgIDI0NywgMjIzLCAxMywgNDMsIDYsIDI0MiwgMTUzLCAxMywgNDMsIDYsIDcyLCAxMywgNDMsIDYsIDIzOCwgNSwgMTMsIDQzLCAKKyAgICA2LCAyMzYsIDE1NiwgMTMsIDQzLCA2LCAyMzQsIDI0NywgMTMsIDQzLCA2LCA3MCwgMTMsIDQzLCA2LCAyMjcsIDI1MSwgMTMsIAorICAgIDQzLCA2LCAyMjcsIDExOCwgMTMsIDQzLCA2LCAxNTYsIDEzLCA0MywgNiwgMjIzLCAyNDMsIDEzLCA0MywgNiwgMjIwLCAKKyAgICAyMTQsIDEzLCA0MywgNiwgNzQsIDEzLCA0MywgNiwgMjE2LCAyMjYsIDEzLCA0MywgNiwgMjE0LCAxNjcsIDEzLCA0MywgNiwgCisgICAgMTQ2LCAxMywgNDMsIDYsIDIxMiwgMTIyLCAxMywgNDMsIDYsIDIwNywgODMsIDEzLCA0MywgNiwgNjYsIDEzLCA0MywgNiwgCisgICAgMjAzLCAxNjgsIDEzLCA0MywgNiwgMjAxLCAxNDcsIDEzLCA0MywgNiwgMjAwLCAxOTUsIDEzLCA0MywgNiwgMjAwLCAxMjMsIAorICAgIDEzLCA0MywgNiwgMTk5LCAxNTcsIDEzLCA0MywgNCwgNjIsIDEzLCA0MywgNCwgMjUwLCAxMDMsIDEzLCA0MywgNCwgMjQ3LCAKKyAgICAyMjMsIDEzLCA0MywgNCwgMjQyLCAxNTMsIDEzLCA0MywgNCwgNzIsIDEzLCA0MywgNCwgMjM4LCA1LCAxMywgNDMsIDQsIAorICAgIDIzNiwgMTU2LCAxMywgNDMsIDQsIDIzNCwgMjQ3LCAxMywgNDMsIDQsIDcwLCAxMywgNDMsIDQsIDIyNywgMjUxLCAxMywgCisgICAgNDMsIDQsIDIyNywgMTE4LCAxMywgNDMsIDQsIDE1NiwgMTMsIDQzLCA0LCAyMjMsIDI0MywgMTMsIDQzLCA0LCAyMjAsIAorICAgIDIxNCwgMTMsIDQzLCA0LCA3NCwgMTMsIDQzLCA0LCAyMTYsIDIyNiwgMTMsIDQzLCA0LCAyMTQsIDE2NywgMTMsIDQzLCA0LCAKKyAgICAxNDYsIDEzLCA0MywgNCwgMjEyLCAxMjIsIDEzLCA0MywgNCwgMjA3LCA4MywgMTMsIDQzLCA0LCA2NiwgMTMsIDQzLCA0LCAKKyAgICAyMDMsIDE2OCwgMTMsIDQzLCA0LCAyMDEsIDE0NywgMTMsIDQzLCA0LCAyMDAsIDE5NSwgMTMsIDQzLCA0LCAyMDAsIDEyMywgCisgICAgMTMsIDQzLCA0LCAxOTksIDE1NywgMTMsIDQzLCAyNywgNiwgNjIsIDEzLCA0MywgMjcsIDYsIDI1MCwgMTAzLCAxMywgNDMsIAorICAgIDI3LCA2LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgNiwgMjQyLCAxNTMsIDEzLCA0MywgMjcsIDYsIDcyLCAxMywgNDMsIDI3LCAKKyAgICA2LCAyMzgsIDUsIDEzLCA0MywgMjcsIDYsIDIzNiwgMTU2LCAxMywgNDMsIDI3LCA2LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgCisgICAgNiwgNzAsIDEzLCA0MywgMjcsIDYsIDIyNywgMjUxLCAxMywgNDMsIDI3LCA2LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgNiwgCisgICAgMTU2LCAxMywgNDMsIDI3LCA2LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgNiwgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDYsIDc0LCAKKyAgICAxMywgNDMsIDI3LCA2LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgNiwgMjE0LCAxNjcsIDEzLCA0MywgMjcsIDYsIDE0NiwgMTMsIAorICAgIDQzLCAyNywgNiwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDYsIDIwNywgODMsIDEzLCA0MywgMjcsIDYsIDY2LCAxMywgNDMsIAorICAgIDI3LCA2LCAyMDMsIDE2OCwgMTMsIDQzLCAyNywgNiwgMjAxLCAxNDcsIDEzLCA0MywgMjcsIDYsIDIwMCwgMTk1LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMDAsIDEyMywgMTMsIDQzLCAyNywgNiwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDQsIDYyLCAxMywgNDMsIAorICAgIDI3LCA0LCAyNTAsIDEwMywgMTMsIDQzLCAyNywgNCwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIDQsIDI0MiwgMTUzLCAxMywgCisgICAgNDMsIDI3LCA0LCA3MiwgMTMsIDQzLCAyNywgNCwgMjM4LCA1LCAxMywgNDMsIDI3LCA0LCAyMzYsIDE1NiwgMTMsIDQzLCAKKyAgICAyNywgNCwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIDQsIDcwLCAxMywgNDMsIDI3LCA0LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgCisgICAgNCwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIDQsIDE1NiwgMTMsIDQzLCAyNywgNCwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDQsIAorICAgIDIyMCwgMjE0LCAxMywgNDMsIDI3LCA0LCA3NCwgMTMsIDQzLCAyNywgNCwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDQsIDIxNCwgCisgICAgMTY3LCAxMywgNDMsIDI3LCA0LCAxNDYsIDEzLCA0MywgMjcsIDQsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgNDMsIDI3LCA0LCA2NiwgMTMsIDQzLCAyNywgNCwgMjAzLCAxNjgsIDEzLCA0MywgMjcsIDQsIDIwMSwgMTQ3LCAxMywgCisgICAgNDMsIDI3LCA0LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgNCwgMjAwLCAxMjMsIDEzLCA0MywgMjcsIDQsIDE5OSwgMTU3LCAKKyAgICAxMywgNDMsIDM5LCA2LCA2MiwgMTMsIDQzLCAzOSwgNiwgMjUwLCAxMDMsIDEzLCA0MywgMzksIDYsIDI0NywgMjIzLCAxMywgCisgICAgNDMsIDM5LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAzOSwgNiwgNzIsIDEzLCA0MywgMzksIDYsIDIzOCwgNSwgMTMsIDQzLCAKKyAgICAzOSwgNiwgMjM2LCAxNTYsIDEzLCA0MywgMzksIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDM5LCA2LCA3MCwgMTMsIDQzLCAzOSwgCisgICAgNiwgMjI3LCAyNTEsIDEzLCA0MywgMzksIDYsIDIyNywgMTE4LCAxMywgNDMsIDM5LCA2LCAxNTYsIDEzLCA0MywgMzksIDYsIAorICAgIDIyMywgMjQzLCAxMywgNDMsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIDQzLCAzOSwgNiwgNzQsIDEzLCA0MywgMzksIDYsIDIxNiwgCisgICAgMjI2LCAxMywgNDMsIDM5LCA2LCAyMTQsIDE2NywgMTMsIDQzLCAzOSwgNiwgMTQ2LCAxMywgNDMsIDM5LCA2LCAyMTIsIAorICAgIDEyMiwgMTMsIDQzLCAzOSwgNiwgMjA3LCA4MywgMTMsIDQzLCAzOSwgNiwgNjYsIDEzLCA0MywgMzksIDYsIDIwMywgMTY4LCAKKyAgICAxMywgNDMsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAzOSwgNiwgMjAwLCAxOTUsIDEzLCA0MywgMzksIDYsIDIwMCwgCisgICAgMTIzLCAxMywgNDMsIDM5LCA2LCAxOTksIDE1NywgMTMsIDQzLCAzOSwgNCwgNjIsIDEzLCA0MywgMzksIDQsIDI1MCwgMTAzLCAKKyAgICAxMywgNDMsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAzOSwgNCwgMjQyLCAxNTMsIDEzLCA0MywgMzksIDQsIDcyLCAxMywgCisgICAgNDMsIDM5LCA0LCAyMzgsIDUsIDEzLCA0MywgMzksIDQsIDIzNiwgMTU2LCAxMywgNDMsIDM5LCA0LCAyMzQsIDI0NywgMTMsIAorICAgIDQzLCAzOSwgNCwgNzAsIDEzLCA0MywgMzksIDQsIDIyNywgMjUxLCAxMywgNDMsIDM5LCA0LCAyMjcsIDExOCwgMTMsIDQzLCAKKyAgICAzOSwgNCwgMTU2LCAxMywgNDMsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDQzLCAzOSwgNCwgMjIwLCAyMTQsIDEzLCA0MywgMzksIAorICAgIDQsIDc0LCAxMywgNDMsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDQzLCAzOSwgNCwgMjE0LCAxNjcsIDEzLCA0MywgMzksIDQsIAorICAgIDE0NiwgMTMsIDQzLCAzOSwgNCwgMjEyLCAxMjIsIDEzLCA0MywgMzksIDQsIDIwNywgODMsIDEzLCA0MywgMzksIDQsIDY2LCAKKyAgICAxMywgNDMsIDM5LCA0LCAyMDMsIDE2OCwgMTMsIDQzLCAzOSwgNCwgMjAxLCAxNDcsIDEzLCA0MywgMzksIDQsIDIwMCwgCisgICAgMTk1LCAxMywgNDMsIDM5LCA0LCAyMDAsIDEyMywgMTMsIDQzLCAzOSwgNCwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICA2MiwgMTMsIDQzLCAyNywgMzksIDYsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAyNywgMzksIDYsIDcyLCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCA1LCAxMywgCisgICAgNDMsIDI3LCAzOSwgNiwgMjM2LCAxNTYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDcwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDE1NiwgMTMsIDQzLCAyNywgMzksIDYsIDIyMywgMjQzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCA3NCwgMTMsIDQzLCAyNywgMzksIDYsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE0LCAKKyAgICAxNjcsIDEzLCA0MywgMjcsIDM5LCA2LCAxNDYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgMzksIAorICAgIDYsIDIwNywgODMsIDEzLCA0MywgMjcsIDM5LCA2LCA2NiwgMTMsIDQzLCAyNywgMzksIDYsIDIwMywgMTY4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjAxLCAxNDcsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgMzksIDYsIDIwMCwgCisgICAgMTIzLCAxMywgNDMsIDI3LCAzOSwgNiwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDM5LCA0LCA2MiwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDIsIDE1MywgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDcyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCA1LCAxMywgNDMsIDI3LCAzOSwgNCwgMjM2LCAKKyAgICAxNTYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgMzksIDQsIDcwLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgMzksIDQsIDE1NiwgMTMsIDQzLCAKKyAgICAyNywgMzksIDQsIDIyMywgMjQzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDM5LCA0LCA3NCwgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE0LCAxNjcsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAxNDYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgMzksIDQsIDIwNywgODMsIDEzLCA0MywgCisgICAgMjcsIDM5LCA0LCA2NiwgMTMsIDQzLCAyNywgMzksIDQsIDIwMywgMTY4LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAxLCAxNDcsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTIzLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMTk5LCAxNTcsIDEzLCAyMjEsIDkzLCA2LCA2MiwgMTMsIDIyMSwgOTMsIDYsIDI1MCwgMTAzLCAxMywgMjIxLCA5MywgCisgICAgNiwgMjQ3LCAyMjMsIDEzLCAyMjEsIDkzLCA2LCAyNDIsIDE1MywgMTMsIDIyMSwgOTMsIDYsIDcyLCAxMywgMjIxLCA5MywgCisgICAgNiwgMjM4LCA1LCAxMywgMjIxLCA5MywgNiwgMjM2LCAxNTYsIDEzLCAyMjEsIDkzLCA2LCAyMzQsIDI0NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDcwLCAxMywgMjIxLCA5MywgNiwgMjI3LCAyNTEsIDEzLCAyMjEsIDkzLCA2LCAyMjcsIDExOCwgMTMsIDIyMSwgCisgICAgOTMsIDYsIDE1NiwgMTMsIDIyMSwgOTMsIDYsIDIyMywgMjQzLCAxMywgMjIxLCA5MywgNiwgMjIwLCAyMTQsIDEzLCAyMjEsIAorICAgIDkzLCA2LCA3NCwgMTMsIDIyMSwgOTMsIDYsIDIxNiwgMjI2LCAxMywgMjIxLCA5MywgNiwgMjE0LCAxNjcsIDEzLCAyMjEsIAorICAgIDkzLCA2LCAxNDYsIDEzLCAyMjEsIDkzLCA2LCAyMTIsIDEyMiwgMTMsIDIyMSwgOTMsIDYsIDIwNywgODMsIDEzLCAyMjEsIAorICAgIDkzLCA2LCA2NiwgMTMsIDIyMSwgOTMsIDYsIDIwMywgMTY4LCAxMywgMjIxLCA5MywgNiwgMjAxLCAxNDcsIDEzLCAyMjEsIAorICAgIDkzLCA2LCAyMDAsIDE5NSwgMTMsIDIyMSwgOTMsIDYsIDIwMCwgMTIzLCAxMywgMjIxLCA5MywgNiwgMTk5LCAxNTcsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCA2MiwgMTMsIDIyMSwgOTMsIDQsIDI1MCwgMTAzLCAxMywgMjIxLCA5MywgNCwgMjQ3LCAyMjMsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyNDIsIDE1MywgMTMsIDIyMSwgOTMsIDQsIDcyLCAxMywgMjIxLCA5MywgNCwgMjM4LCA1LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjM2LCAxNTYsIDEzLCAyMjEsIDkzLCA0LCAyMzQsIDI0NywgMTMsIDIyMSwgOTMsIDQsIDcwLCAxMywgCisgICAgMjIxLCA5MywgNCwgMjI3LCAyNTEsIDEzLCAyMjEsIDkzLCA0LCAyMjcsIDExOCwgMTMsIDIyMSwgOTMsIDQsIDE1NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIyMywgMjQzLCAxMywgMjIxLCA5MywgNCwgMjIwLCAyMTQsIDEzLCAyMjEsIDkzLCA0LCA3NCwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIxNiwgMjI2LCAxMywgMjIxLCA5MywgNCwgMjE0LCAxNjcsIDEzLCAyMjEsIDkzLCA0LCAxNDYsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMTIsIDEyMiwgMTMsIDIyMSwgOTMsIDQsIDIwNywgODMsIDEzLCAyMjEsIDkzLCA0LCA2NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIwMywgMTY4LCAxMywgMjIxLCA5MywgNCwgMjAxLCAxNDcsIDEzLCAyMjEsIDkzLCA0LCAyMDAsIDE5NSwgCisgICAgMTMsIDIyMSwgOTMsIDQsIDIwMCwgMTIzLCAxMywgMjIxLCA5MywgNCwgMTk5LCAxNTcsIDEzLCAzOSwgNCwgMjQwLCAxODEsIAorICAgIDcwLCAxMywgMzksIDQsIDI0MCwgMTgxLCAyMjcsIDI1MSwgMTMsIDI3LCA2LCAyNTEsIDExMiwgMTMsIDI3LCA2LCAyNDgsIAorICAgIDIwOCwgMTMsIDI3LCA2LCAyMzYsIDYwLCAxMywgMjcsIDYsIDI0MSwgMTM2LCAxMywgMjcsIDYsIDIzOCwgMTI0LCAxMywgCisgICAgMjcsIDYsIDE5OSwgODAsIDEzLCAyNywgNiwgMjM4LCA3OSwgMTMsIDI3LCA2LCAyMDYsIDg4LCAxMywgMjcsIDYsIDIyOCwgCisgICAgNDEsIDEzLCAyNywgNiwgMjI3LCA1NCwgMTMsIDI3LCA2LCAyMjUsIDg3LCAxMywgMjcsIDYsIDIyMSwgNDEsIDEzLCAyNywgCisgICAgNiwgMjE4LCAxMzMsIDEzLCAyNywgNiwgMjAwLCAxNjksIDEzLCAyNywgNiwgMjE3LCA4MSwgMTMsIDI3LCA2LCAyMTUsIAorICAgIDIwNCwgMTMsIDI3LCA2LCAyMTMsIDkwLCAxMywgMjcsIDYsIDIwNiwgODksIDk5LCAxMywgMjcsIDYsIDIwOSwgMTYzLCAxMywgCisgICAgMjcsIDYsIDIwNiwgMjIxLCAxMywgMjcsIDYsIDIwMywgMjIwLCAxMywgMjcsIDYsIDIxNSwgMjI5LCAxMywgMjcsIDYsIAorICAgIDI0NiwgMjM2LCAxMywgMjcsIDYsIDIxNCwgMjM1LCAxMywgMjcsIDYsIDIxNywgODMsIDEzLCAyNywgMjIwLCAxNTIsIDEzLCAKKyAgICAyNywgNCwgMjUxLCAxMTIsIDEzLCAyNywgNCwgMjQ4LCAyMDgsIDEzLCAyNywgNCwgMjM2LCA2MCwgMTMsIDI3LCA0LCAyNDEsIAorICAgIDEzNiwgMTMsIDI3LCA0LCAyMzgsIDEyNCwgMTMsIDI3LCA0LCAxOTksIDgwLCAxMywgMjcsIDQsIDIzOCwgNzksIDEzLCAyNywgCisgICAgNCwgMjA2LCA4OCwgMTMsIDI3LCA0LCAyMjgsIDQxLCAxMywgMjcsIDQsIDIyNywgNTQsIDEzLCAyNywgNCwgMjI1LCA4NywgCisgICAgMTMsIDI3LCA0LCAyMjEsIDQxLCAxMywgMjcsIDQsIDIxOCwgMTMzLCAxMywgMjcsIDQsIDIwMCwgMTY5LCAxMywgMjcsIDQsIAorICAgIDIxNywgODEsIDEzLCAyNywgNCwgMjE1LCAyMDQsIDEzLCAyNywgNCwgMjEzLCA5MCwgMTMsIDI3LCA0LCA0NywgMjA5LCAKKyAgICAxNjMsIDEzLCAyNywgNCwgMjA5LCAxNjMsIDEzLCAyNywgNCwgMjA2LCAyMjEsIDEzLCAyNywgNCwgMjAzLCAyMjAsIDEzLCAKKyAgICAyNywgNCwgMjE1LCAyMjksIDEzLCAyNywgNCwgMjQ2LCAyMzYsIDEzLCAyNywgNCwgMjE0LCAyMzUsIDEzLCAyNywgNCwgCisgICAgMjE3LCA4MywgMTMsIDI3LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDI3LCAyMzgsIDEyNSwgOTksIDEzLCAyNywgMjA2LCAKKyAgICA4OSwgOTksIDEzLCAyNywgMjI3LCA1NSwgOTksIDEzLCAyNywgMjE1LCAyMzAsIDk5LCAxMywgMjcsIDIxMywgOTEsIDk5LCAKKyAgICAxMywgMjcsIDIxNSwgMjA1LCA5OSwgMTMsIDM5LCA2LCAyNTEsIDExMiwgMTMsIDM5LCA2LCAyNDgsIDIwOCwgMTMsIDM5LCAKKyAgICA2LCAyMzYsIDYwLCAxMywgMzksIDYsIDI0MSwgMTM2LCAxMywgMzksIDYsIDIzOCwgMTI0LCAxMywgMzksIDYsIDE5OSwgODAsIAorICAgIDEzLCAzOSwgNiwgMjM4LCA3OSwgMTMsIDM5LCA2LCAyMDYsIDg4LCAxMywgMzksIDYsIDIyOCwgNDEsIDEzLCAzOSwgNiwgCisgICAgMjI3LCA1NCwgMTMsIDM5LCA2LCAyMjUsIDg3LCAxMywgMzksIDYsIDIyMSwgNDEsIDEzLCAzOSwgNiwgMjE4LCAxMzMsIDEzLCAKKyAgICAzOSwgNiwgMjAwLCAxNjksIDEzLCAzOSwgNiwgMjE3LCA4MSwgMTMsIDM5LCA2LCAyMTUsIDIwNCwgMTMsIDM5LCA2LCAyMTMsIAorICAgIDkwLCAxMywgMzksIDYsIDIwNiwgODksIDk5LCAxMywgMzksIDYsIDIwOSwgMTYzLCAxMywgMzksIDYsIDIwNiwgMjIxLCAxMywgCisgICAgMzksIDYsIDIwMywgMjIwLCAxMywgMzksIDYsIDIxNSwgMjI5LCAxMywgMzksIDYsIDI0NiwgMjM2LCAxMywgMzksIDYsIAorICAgIDIxNCwgMjM1LCAxMywgMzksIDYsIDIxNywgODMsIDEzLCAzOSwgMjIwLCAxNTIsIDEzLCAzOSwgNCwgMjUxLCAxMTIsIDEzLCAKKyAgICAzOSwgNCwgMjQ4LCAyMDgsIDEzLCAzOSwgNCwgMjM2LCA2MCwgMTMsIDM5LCA0LCAyNDEsIDEzNiwgMTMsIDM5LCA0LCAyMzgsIAorICAgIDEyNCwgMTMsIDM5LCA0LCAxOTksIDgwLCAxMywgMzksIDQsIDIzOCwgNzksIDEzLCAzOSwgNCwgMjA2LCA4OCwgMTMsIDM5LCAKKyAgICA0LCAyMjgsIDQxLCAxMywgMzksIDQsIDIyNywgNTQsIDEzLCAzOSwgNCwgMjI1LCA4NywgMTMsIDM5LCA0LCAyMjEsIDQxLCAKKyAgICAxMywgMzksIDQsIDIxOCwgMTMzLCAxMywgMzksIDQsIDIwMCwgMTY5LCAxMywgMzksIDQsIDIxNywgODEsIDEzLCAzOSwgNCwgCisgICAgMjE1LCAyMDQsIDEzLCAzOSwgNCwgMjEzLCA5MCwgMTMsIDM5LCA0LCA0NywgMjA5LCAxNjMsIDEzLCAzOSwgNCwgMjA5LCAKKyAgICAxNjMsIDEzLCAzOSwgNCwgMjA2LCAyMjEsIDEzLCAzOSwgNCwgMjAzLCAyMjAsIDEzLCAzOSwgNCwgMjE1LCAyMjksIDEzLCAKKyAgICAzOSwgNCwgMjQ2LCAyMzYsIDEzLCAzOSwgNCwgMjE0LCAyMzUsIDEzLCAzOSwgNCwgMjE3LCA4MywgMTMsIDM5LCAyMTYsIAorICAgIDEwOCwgMjQxLCA0OCwgMTMsIDM5LCAyMzgsIDEyNSwgOTksIDEzLCAzOSwgMjA2LCA4OSwgOTksIDEzLCAzOSwgMjI3LCA1NSwgCisgICAgOTksIDEzLCAzOSwgMjE1LCAyMzAsIDk5LCAxMywgMzksIDIxMywgOTEsIDk5LCAxMywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjUxLCAxMTIsIDEzLCAyNywgMzksIDYsIDI0OCwgMjA4LCAxMywgMjcsIDM5LCA2LCAyMzYsIDYwLCAxMywgCisgICAgMjcsIDM5LCA2LCAyNDEsIDEzNiwgMTMsIDI3LCAzOSwgNiwgMjM4LCAxMjQsIDEzLCAyNywgMzksIDYsIDE5OSwgODAsIDEzLCAKKyAgICAyNywgMzksIDYsIDIzOCwgNzksIDEzLCAyNywgMzksIDYsIDIwNiwgODgsIDEzLCAyNywgMzksIDYsIDIyOCwgNDEsIDEzLCAKKyAgICAyNywgMzksIDYsIDIyNywgNTQsIDEzLCAyNywgMzksIDYsIDIyNSwgODcsIDEzLCAyNywgMzksIDYsIDIyMSwgNDEsIDEzLCAKKyAgICAyNywgMzksIDYsIDIxOCwgMTMzLCAxMywgMjcsIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDI3LCAzOSwgNiwgMjE3LCA4MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE1LCAyMDQsIDEzLCAyNywgMzksIDYsIDIxMywgOTAsIDEzLCAyNywgMzksIDYsIDIwNiwgODksIDk5LCAKKyAgICAxMywgMjcsIDM5LCA2LCAyMDksIDE2MywgMTMsIDI3LCAzOSwgNiwgMjA2LCAyMjEsIDEzLCAyNywgMzksIDYsIDIwMywgCisgICAgMjIwLCAxMywgMjcsIDM5LCA2LCAyMTUsIDIyOSwgMTMsIDI3LCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCAyNywgMzksIDYsIAorICAgIDIxNCwgMjM1LCAxMywgMjcsIDM5LCA2LCAyMTcsIDgzLCAxMywgMjcsIDM5LCAyMjAsIDE1MiwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjUxLCAxMTIsIDEzLCAyNywgMzksIDQsIDI0OCwgMjA4LCAxMywgMjcsIDM5LCA0LCAyMzYsIDYwLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyNDEsIDEzNiwgMTMsIDI3LCAzOSwgNCwgMjM4LCAxMjQsIDEzLCAyNywgMzksIDQsIDE5OSwgODAsIDEzLCAyNywgMzksIDQsIAorICAgIDIzOCwgNzksIDEzLCAyNywgMzksIDQsIDIwNiwgODgsIDEzLCAyNywgMzksIDQsIDIyOCwgNDEsIDEzLCAyNywgMzksIDQsIAorICAgIDIyNywgNTQsIDEzLCAyNywgMzksIDQsIDIyNSwgODcsIDEzLCAyNywgMzksIDQsIDIyMSwgNDEsIDEzLCAyNywgMzksIDQsIAorICAgIDIxOCwgMTMzLCAxMywgMjcsIDM5LCA0LCAyMDAsIDE2OSwgMTMsIDI3LCAzOSwgNCwgMjE3LCA4MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjE1LCAyMDQsIDEzLCAyNywgMzksIDQsIDIxMywgOTAsIDEzLCAyNywgMzksIDQsIDQ3LCAyMDksIDE2MywgMTMsIDI3LCAKKyAgICAzOSwgNCwgMjA5LCAxNjMsIDEzLCAyNywgMzksIDQsIDIwNiwgMjIxLCAxMywgMjcsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIAorICAgIDI3LCAzOSwgNCwgMjE1LCAyMjksIDEzLCAyNywgMzksIDQsIDI0NiwgMjM2LCAxMywgMjcsIDM5LCA0LCAyMTQsIDIzNSwgCisgICAgMTMsIDI3LCAzOSwgNCwgMjE3LCA4MywgMTMsIDI3LCAzOSwgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCAyNywgMzksIDIzOCwgCisgICAgMTI1LCA5OSwgMTMsIDI3LCAzOSwgMjA2LCA4OSwgOTksIDEzLCAyNywgMzksIDIyNywgNTUsIDk5LCAxMywgMjcsIDM5LCAKKyAgICAyMTUsIDIzMCwgOTksIDEzLCAyNywgMzksIDIxMywgOTEsIDk5LCAxMywgMjcsIDM5LCAyMTUsIDIwNSwgOTksIDEzLCA0MywgCisgICAgMjcsIDYsIDI1MSwgMTEyLCAxMywgNDMsIDI3LCA2LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgNiwgMjM2LCA2MCwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjQxLCAxMzYsIDEzLCA0MywgMjcsIDYsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCA2LCAxOTksIDgwLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMzgsIDc5LCAxMywgNDMsIDI3LCA2LCAyMDYsIDg4LCAxMywgNDMsIDI3LCA2LCAyMjgsIDQxLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMjcsIDU0LCAxMywgNDMsIDI3LCA2LCAyMjUsIDg3LCAxMywgNDMsIDI3LCA2LCAyMjEsIDQxLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMTgsIDEzMywgMTMsIDQzLCAyNywgNiwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDYsIDIxNywgODEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIxNSwgMjA0LCAxMywgNDMsIDI3LCA2LCAyMTMsIDkwLCAxMywgNDMsIDI3LCA2LCAyMDYsIDg5LCA5OSwgMTMsIAorICAgIDQzLCAyNywgNiwgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDYsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCA2LCAyMDMsIDIyMCwgCisgICAgMTMsIDQzLCAyNywgNiwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDYsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCA2LCAyMTQsIAorICAgIDIzNSwgMTMsIDQzLCAyNywgNiwgMjE3LCA4MywgMTMsIDQzLCAyNywgMjIwLCAxNTIsIDEzLCA0MywgMjcsIDQsIDI1MSwgCisgICAgMTEyLCAxMywgNDMsIDI3LCA0LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgNCwgMjM2LCA2MCwgMTMsIDQzLCAyNywgNCwgMjQxLCAKKyAgICAxMzYsIDEzLCA0MywgMjcsIDQsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCA0LCAxOTksIDgwLCAxMywgNDMsIDI3LCA0LCAyMzgsIAorICAgIDc5LCAxMywgNDMsIDI3LCA0LCAyMDYsIDg4LCAxMywgNDMsIDI3LCA0LCAyMjgsIDQxLCAxMywgNDMsIDI3LCA0LCAyMjcsIAorICAgIDU0LCAxMywgNDMsIDI3LCA0LCAyMjUsIDg3LCAxMywgNDMsIDI3LCA0LCAyMjEsIDQxLCAxMywgNDMsIDI3LCA0LCAyMTgsIAorICAgIDEzMywgMTMsIDQzLCAyNywgNCwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDQsIDIxNywgODEsIDEzLCA0MywgMjcsIDQsIDIxNSwgCisgICAgMjA0LCAxMywgNDMsIDI3LCA0LCAyMTMsIDkwLCAxMywgNDMsIDI3LCA0LCA0NywgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDQsIAorICAgIDIwOSwgMTYzLCAxMywgNDMsIDI3LCA0LCAyMDYsIDIyMSwgMTMsIDQzLCAyNywgNCwgMjAzLCAyMjAsIDEzLCA0MywgMjcsIAorICAgIDQsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCA0LCAyNDYsIDIzNiwgMTMsIDQzLCAyNywgNCwgMjE0LCAyMzUsIDEzLCA0MywgCisgICAgMjcsIDQsIDIxNywgODMsIDEzLCA0MywgMjcsIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgNDMsIDI3LCAyMzgsIDEyNSwgOTksIAorICAgIDEzLCA0MywgMjcsIDIwNiwgODksIDk5LCAxMywgNDMsIDI3LCAyMjcsIDU1LCA5OSwgMTMsIDQzLCAyNywgMjE1LCAyMzAsIAorICAgIDk5LCAxMywgNDMsIDI3LCAyMTMsIDkxLCA5OSwgMTMsIDQzLCAyNywgMjE1LCAyMDUsIDk5LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgMjUxLCAxMTIsIDEzLCA0MywgMjcsIDM5LCA2LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgMzksIDYsIDIzNiwgNjAsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCAyNDEsIDEzNiwgMTMsIDQzLCAyNywgMzksIDYsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgMTk5LCA4MCwgMTMsIDQzLCAyNywgMzksIDYsIDIzOCwgNzksIDEzLCA0MywgMjcsIDM5LCA2LCAyMDYsIDg4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjI4LCA0MSwgMTMsIDQzLCAyNywgMzksIDYsIDIyNywgNTQsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjUsIAorICAgIDg3LCAxMywgNDMsIDI3LCAzOSwgNiwgMjIxLCA0MSwgMTMsIDQzLCAyNywgMzksIDYsIDIxOCwgMTMzLCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDM5LCA2LCAyMTcsIDgxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjE1LCAyMDQsIAorICAgIDEzLCA0MywgMjcsIDM5LCA2LCAyMTMsIDkwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjA2LCA4OSwgOTksIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDYsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjAzLCAKKyAgICAyMjAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgMzksIDYsIDI0NiwgMjM2LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjE0LCAyMzUsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTcsIDgzLCAxMywgNDMsIDI3LCAzOSwgMjIwLCAKKyAgICAxNTIsIDEzLCA0MywgMjcsIDM5LCA0LCAyNTEsIDExMiwgMTMsIDQzLCAyNywgMzksIDQsIDI0OCwgMjA4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNCwgMjM2LCA2MCwgMTMsIDQzLCAyNywgMzksIDQsIDI0MSwgMTM2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCAKKyAgICAxMjQsIDEzLCA0MywgMjcsIDM5LCA0LCAxOTksIDgwLCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCA3OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDQsIDIwNiwgODgsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjgsIDQxLCAxMywgNDMsIDI3LCAzOSwgNCwgMjI3LCA1NCwgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIyNSwgODcsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjEsIDQxLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjE4LCAxMzMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgMzksIDQsIDIxNywgODEsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA0LCAyMTUsIDIwNCwgMTMsIDQzLCAyNywgMzksIDQsIDIxMywgOTAsIDEzLCA0MywgMjcsIDM5LCA0LCAKKyAgICA0NywgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDQsIDIwNiwgMjIxLCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjAzLCAyMjAsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE0LCAyMzUsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTcsIDgzLCAxMywgCisgICAgNDMsIDI3LCAzOSwgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCA0MywgMjcsIDM5LCAyMzgsIDEyNSwgOTksIDEzLCA0MywgMjcsIAorICAgIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDQzLCAyNywgMzksIDIyNywgNTUsIDk5LCAxMywgNDMsIDI3LCAzOSwgMjE1LCAyMzAsIAorICAgIDk5LCAxMywgNDMsIDI3LCAzOSwgMjEzLCA5MSwgOTksIDEzLCA0MywgMjcsIDM5LCAyMTUsIDIwNSwgOTksIDEzLCAyNywgNiwgCisgICAgMjQxLCA0MiwgMTMsIDI3LCA0LCAyNDEsIDQyLCAxMywgMjcsIDE3LCAxOTksIDgxLCAxMywgMjcsIDE3LCAxMDIsIDEzLCAKKyAgICAyNywgMTcsIDEwNSwgMTMsIDI3LCAxNywgMTQ3LCAxMywgMjcsIDE3LCAxNDksIDEzLCAyNywgMTcsIDE2NCwgMTMsIDI3LCAKKyAgICAxNywgMTg3LCAxMywgMjcsIDE3LCAyMTAsIDEzNSwgMTMsIDI3LCAxNywgMTkyLCAxMywgMjcsIDE3LCAyMTksIDExMywgMTMsIAorICAgIDE3NSwgMTcsIDE5OSwgODEsIDEzLCAxNzUsIDE3LCAxMDIsIDEzLCAxNzUsIDE3LCAxMDUsIDEzLCAxNzUsIDE3LCAxNDcsIAorICAgIDEzLCAxNzUsIDE3LCAxNDksIDEzLCAxNzUsIDE3LCAxNjQsIDEzLCAxNzUsIDE3LCAxODcsIDEzLCAxNzUsIDE3LCAyMTAsIAorICAgIDEzNSwgMTMsIDE3NSwgMTcsIDE5MiwgMTMsIDE3NSwgMTcsIDIxOSwgMTEzLCAxMywgNDMsIDE3LCAxOTksIDgxLCAxMywgCisgICAgNDMsIDE3LCAxMDIsIDEzLCA0MywgMTcsIDEwNSwgMTMsIDQzLCAxNywgMTQ3LCAxMywgNDMsIDE3LCAxNDksIDEzLCA0MywgCisgICAgMTcsIDE2NCwgMTMsIDQzLCAxNywgMTg3LCAxMywgNDMsIDE3LCAyMTAsIDEzNSwgMTMsIDQzLCAxNywgMTkyLCAxMywgNDMsIAorICAgIDE3LCAyMTksIDExMywgMTMsIDQzLCAyNywgMTcsIDE5OSwgODEsIDEzLCA0MywgMjcsIDE3LCAxMDIsIDEzLCA0MywgMjcsIAorICAgIDE3LCAxMDUsIDEzLCA0MywgMjcsIDE3LCAxNDcsIDEzLCA0MywgMjcsIDE3LCAxNDksIDEzLCA0MywgMjcsIDE3LCAxNjQsIAorICAgIDEzLCA0MywgMjcsIDE3LCAxODcsIDEzLCA0MywgMjcsIDE3LCAyMTAsIDEzNSwgMTMsIDQzLCAyNywgMTcsIDE5MiwgMTMsIAorICAgIDQzLCAyNywgMTcsIDIxOSwgMTEzLCAxMywgMjIxLCA5MywgMTcsIDE5OSwgODEsIDEzLCAyMjEsIDkzLCAxNywgMTAyLCAxMywgCisgICAgMjIxLCA5MywgMTcsIDEwNSwgMTMsIDIyMSwgOTMsIDE3LCAxNDcsIDEzLCAyMjEsIDkzLCAxNywgMTQ5LCAxMywgMjIxLCAKKyAgICA5MywgMTcsIDE2NCwgMTMsIDIyMSwgOTMsIDE3LCAxODcsIDEzLCAyMjEsIDkzLCAxNywgMjEwLCAxMzUsIDEzLCAyMjEsIAorICAgIDkzLCAxNywgMTkyLCAxMywgMjIxLCA5MywgMTcsIDIxOSwgMTEzLCAyMywgMTMxLCAyMjgsIDEwMywgMjMsIDIzNCwgMTk2LCAKKyAgICAyMjgsIDEwMywgMjMsIDIzNCwgMTkyLCAyMjgsIDEwMywgMjMsIDIzNCwgMTgxLCAyMjgsIDEwMywgMjMsIDIzNCwgMTg1LCAKKyAgICAyMjgsIDEwMywgMjMsIDIzNCwgMTk4LCAyMjgsIDEwMywgMjMsIDEzMSwgMTI0LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTk2LCAKKyAgICAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDIxMywgCisgICAgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAxMjQsIDI0MiwgMjAwLCAyMywgMTMxLCAxMjQsIDIzNCwgNTAsIDIzLCAxMzEsIAorICAgIDEyNCwgMjM0LCA1MSwgMjI0LCA1OSwgMjMsIDIzNCwgMTk2LCAxMjQsIDIzNCwgNTIsIDIzLCAxMzEsIDEyNCwgMjIxLCAKKyAgICAyMDQsIDIzLCAyMzQsIDE5NiwgMTI0LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMjQsIDEwMSwgMjEzLCAyMjAsIDIyNiwgOTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIAorICAgIDExNSwgMTAxLCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIDIzNCwgNTEsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDMsIDU3LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MywgNTgsIDEwMSwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyNDIsIDIwMCwgMjMsIAorICAgIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDIsIDIzMSwgMjMsIDIzNCwgCisgICAgMTk2LCAxMjQsIDEwMSwgMjQyLCAyMzEsIDIzLCAxMzEsIDEwMSwgMjQ4LCAyMjAsIDExOSwgMjI4LCAxMDMsIDIzLCAxMzEsIAorICAgIDEyNCwgMjQ4LCAyMjAsIDExOSwgMjIxLCAyMDQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMDYsIDM0LCAyMywgMjM0LCAxOTYsIAorICAgIDEyNCwgMTAxLCAyMDYsIDM0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjA4LCA2OCwgMTUzLCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTI0LCAxMDEsIDI0OCwgMjIwLCAxNTMsIDIwOCwgNjcsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0OCwgMjE5LCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjM0LCA1MSwgMjA4LCAyMDIsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTE1LCAxMDEsIAorICAgIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTE1LCAxMDEsIDIzNCwgNTEsIDE1MywgMjQzLCA1NywgCisgICAgMjMsIDEzMSwgMTI0LCAyMzQsIDUxLCAxMDEsIDExNSwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDExNSwgCisgICAgMjA4LCAyMDIsIDE1MywgMjM2LCAyMzMsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0MiwgMjAwLCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMTUzLCAyNDYsIDE1NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjMzLCAxODUsIDIzLCAxMzEsIDEyNCwgMTAxLCAKKyAgICAxNTMsIDIzNCwgNTAsIDIzLCAxMzEsIDE1MywgMjQ4LCAyMDYsIDEyNCwgMTAxLCAyMDgsIDY3LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQzLCA1OCwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjA5LCAxNzUsIAorICAgIDI0MywgNTcsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxNTMsIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTAxLCAxNTMsIDIzMywgMTg2LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgMjMzLCAxODYsIDEwMSwgMjAzLCAKKyAgICAyMjgsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyMzQsIDUxLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQyLCAyMzIsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxNTMsIDIzNiwgMjMzLCAKKyAgICAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjQyLCAyMDEsIDE1MywgMjM2LCAyMzMsIDIzLCAxMzEsIDEwMSwgMTUzLCAKKyAgICAyNDIsIDIwMSwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgMjAxLCAxMDEsIDIwMywgMjI4LCAyMywgCisgICAgMTMxLCAxMDEsIDE1MywgNDQsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEwMSwgMTUzLCA0NCwgMTI0LCAyMzQsIDUwLCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjUxLCA2OSwgMjE2LCAyNTUsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAKKyAgICAyNTEsIDY5LCAyMjgsIDExOCwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIDQ0LCAxMDEsIDIwMywgMjI4LCAKKyAgICAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNDMsIDU4LCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNTEsIAorICAgIDY5LCAyMTYsIDI1NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjUxLCA2OCwgMjMsIDEzMSwgMTAxLCAxNTMsIDI1MSwgCisgICAgNjksIDIxNiwgMjU1LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMDEsIDE1MywgMjUxLCA2OSwgMjE2LCAyNTUsIDEyNCwgCisgICAgMjQyLCAyMzEsIDIzLCAxMzEsIDEwMSwgMTUzLCAyNTEsIDY5LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgCisgICAgMjMzLCAxODYsIDEwMSwgMjM0LCA1MCwgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MSwgMjMsIDIzNCwgMTg3LCAKKyAgICAyMzYsIDIyOSwgMjM3LCA4MiwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgODIsIDIzNCwgNTAsIAorICAgIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgODIsIDI0MywgNTcsIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgCisgICAgODIsIDI0MywgNTgsIDIwOCwgMjA5LCAyMywgMjM0LCAxOTQsIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDMsIDU3LCAyMywgMTMxLCAKKyAgICAyMzYsIDIyOSwgMjM3LCA4MiwgMjQzLCA1OCwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NSwgMjM2LCAyMjksIDIzNywgODIsIAorICAgIDI0MywgNTcsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM0LCAKKyAgICAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgCisgICAgMjAyLCAyMzYsIDIyOSwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgCisgICAgMjAyLCAyMzYsIDIyOSwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDI0OCwgCisgICAgMjE5LCAyMywgMjM0LCAxODcsIDIzNCwgMTE4LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjQ4LCAyMTksIDIzLCAKKyAgICAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE5MiwgMjM3LCAKKyAgICA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE5MiwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIxNywgNTMsIAorICAgIDIzLCAyMzQsIDE4NSwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIxNywgNTMsIDIzLCAyMzQsIDE4MSwgMjM3LCA2MSwgCisgICAgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTAsIDIzLCAKKyAgICAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIAorICAgIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTEsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAKKyAgICAxODYsIDIzLCAyMzQsIDE4NywgMjQ4LCAyMDYsIDIxNiwgMTc3LCAyMzcsIDE4MSwgMjMsIDIzNCwgMTg3LCAyMzQsIDExNywgCisgICAgMjMsIDIzNCwgMTg3LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIzNCwgMTE4LCAxNTMsIDIwOSwgMTc0LCAyMywgCisgICAgMjM0LCAxODcsIDE1MywgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTg3LCAyMDgsIAorICAgIDIxMCwgMTI0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyNDcsIDU1LCAyMywgMjM0LCAxODcsIAorICAgIDIwOCwgMjEwLCAyNDcsIDU2LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyNDcsIDU2LCAxNTMsIAorICAgIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMDgsIDIxMCwgMjI0LCAxNDcsIDIzLCAyMzQsIDE5MywgMjMsIAorICAgIDIzNCwgMTk0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxOTQsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxOTQsIAorICAgIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE4MywgMjQyLCAxOTcsIDIzLCAyMzQsIDE4MiwgMjMsIDIzNCwgMTkyLCAyMTcsIAorICAgIDUzLCAyMywgMjM0LCAxOTEsIDIzLCAyMzQsIDE5MiwgMTc2LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxOTIsIDE1MywgCisgICAgMjA5LCAxNzQsIDIzLCAyMzQsIDE5MiwgMTc2LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTkyLCAyMTgsIDI0MiwgCisgICAgMjA2LCAzNCwgMjMsIDIzNCwgMTkyLCAxNzYsIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE5MiwgMTUzLCAyMzYsIDIzMywgCisgICAgMjMsIDIzNCwgMTkwLCAyMTcsIDUzLCAyMywgMjM0LCAxODksIDIzLCAyMzQsIDE5NSwgMjMsIDIzNCwgMTgwLCAyMywgMjM0LCAKKyAgICAxODEsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MSwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE4MSwgMTUzLCAKKyAgICAyMzYsIDIzMywgMjMsIDIzNCwgMTg1LCAyMTcsIDUzLCAyMywgMjM0LCAxODUsIDE3NiwgMTUzLCAyMzYsIDIzMywgMjMsIAorICAgIDIzNCwgMTg0LCAyMywgMjM0LCAxODUsIDIwOSwgNTMsIDIzLCAyMzQsIDE4NSwgMTc2LCAxNTMsIDIwOSwgMTc0LCAyMywgCisgICAgMjM0LCAxODUsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NSwgMTc2LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgCisgICAgMTg1LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTg1LCAxNTMsIDIwOSwgMTc1LCAyMDUsIDE0MCwgMjI4LCAxMDMsIAorICAgIDIzLCAyMzQsIDE4NSwgMTUzLCAyNDgsIDIwNiwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxOTcsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxOTYsIDEyNCwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAKKyAgICAyMTMsIDI2LCAyMywgMjM0LCAxOTgsIDEyNCwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxODUsIDIyNCwgMTQ3LCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjEzLCAyNywgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDMsIDU3LCAKKyAgICAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDMsIDU3LCAyMywgMTMxLCAyMjQsIDE0OCwgMjM5LCAxNjcsIAorICAgIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxMywgMjIsIDIwOCwgNjcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxMywgCisgICAgMjIsIDI0MiwgMTg3LCAyMywgMTMxLCAyMjQsIDE0OCwgMTI3LCAyMTcsIDcsIDI0NiwgMTU0LCAyMywgMTMxLCAyMjQsIAorICAgIDE0OCwgMjAzLCAyMjgsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDIyNCwgMTQ4LCAyMDMsIDIyOCwgMjMsIDIzNCwgMTk2LCAKKyAgICAyMjQsIDE0OCwgMjAzLCAyMjgsIDIzLCAyMzQsIDE4MSwgMjI0LCAxNDgsIDIwMywgMjI4LCAyMywgMjM0LCAxOTgsIDIyNCwgCisgICAgMTQ4LCAyMDMsIDIyOCwgMjMsIDEzMSwgMjI0LCAxNDgsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAyMjQsIDE0OCwgCisgICAgMjQ4LCAyMTksIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMDUsIDE0MSwgMjA2LCAzNCwgMjMsIDEzMSwgMjI0LCAxNDgsIDIwNiwgCisgICAgMzQsIDIzLCAyMzQsIDE4NSwgMjI0LCAxNDgsIDIwNiwgMzQsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjQsIDIwNiwgMzQsIDIzLCAKKyAgICAyMzQsIDE4NSwgMjI0LCAxNDgsIDEyNCwgMjA2LCAzNCwgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMTI0LCAxNTMsIDEyNCwgCisgICAgMTUzLCAyMTYsIDI1NCwgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMTI0LCAxNTMsIDEyNCwgMjA2LCAzNCwgMjMsIDEzMSwgCisgICAgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMjM0LCAxOTYsIDIyNCwgMTQ4LCAyMjgsIDEwMywgMjMsIDIzNCwgMTg1LCAyMjQsIAorICAgIDE0OCwgMjI4LCAxMDMsIDIzLCAyMzQsIDE5OCwgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMTMxLCAxMjQsIDEwMSwgMjI0LCAKKyAgICAxNDcsIDIzLCAyMzQsIDE5NiwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAyMjQsIDE0NywgCisgICAgMjMsIDIzNCwgMTg1LCAyMTMsIDI2LCAyMywgMjM0LCAxOTgsIDEyNCwgMTAxLCAyMjQsIDE0NywgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MiwgMjM1LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDEwMSwgMjQyLCAyMzUsIDIyNCwgMTQ3LCAyMywgCisgICAgMTMxLCAyMTMsIDI3LCAyMzksIDE2NywgMjMsIDIzNCwgMTg1LCAyMTMsIDI3LCAxMjcsIDEyNCwgMTUzLCAyMzMsIDE4NywgCisgICAgMjIxLCAyMDQsIDIzLCAyMzQsIDE5OCwgMjEzLCAyNywgMTI3LCAxMDEsIDE1MywgMTI0LCAyNDIsIDIzNCwgMjMsIDEzMSwgCisgICAgMjEzLCAyNywgMjAzLCAyMjgsIDIzLCAxMzEsIDIxMywgMjcsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAyMTMsIDI3LCAKKyAgICAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTgxLCAyMTMsIDI3LCAyMjQsIAorICAgIDE0NywgMjMsIDIzNCwgMTk4LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDEzMSwgMjEzLCAyNywgMjIxLCAyMDQsIDIzLCAKKyAgICAxMzEsIDIxMywgMjcsIDEwMSwgMjQzLCA1NywgMjMsIDEzMSwgMjEzLCAyNywgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MCwgMjMsIAorICAgIDEzMSwgMjEzLCAyNywgMjI4LCAxMDMsIDIzLCAxMzEsIDIxMywgMjcsIDIwNiwgMzQsIDIzLCAyMzQsIDE4MywgMjEzLCAyNywgCisgICAgMjA2LCAzNCwgMjMsIDEzMSwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTAsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNywgNzgsIDIzLCAyMzQsIDE4MywgCisgICAgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE2LCAyNTQsIDIzLCAyMzQsIDE4MywgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgCisgICAgMjI4LCAxMTcsIDIzLCAyMzQsIDE4MywgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjAzLCAyNTIsIDIzLCAyMzQsIDE5MiwgCisgICAgMTI0LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTg1LCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAKKyAgICAxOTgsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDEyNCwgMjEzLCAyNywgMjI0LCAKKyAgICAxNDcsIDIzLCAxMzEsIDEwMSwgMjM5LCAxNjcsIDIzLCAyMzQsIDE4NSwgMjIxLCAyMDQsIDIzLCAxMzEsIDEwMSwgMjAzLCAKKyAgICAyMjgsIDIzLCAyMzQsIDE5NiwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MSwgMjMsIAorICAgIDEzMSwgMTAxLCAxMTUsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMDYsIDM0LCAyMywgMTMxLCAxMDEsIAorICAgIDE1MywgMjI0LCAxNDcsIDIzLCAxMzEsIDEwMSwgMjI0LCAxNDcsIDIzLCAxMzEsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDcsIAorICAgIDIzLCAyMzQsIDE5NiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTkwLCAxMDEsIDIxMywgMjcsIDIyNCwgCisgICAgMTQ4LCAyMTcsIDc4LCAyMywgMjM0LCAxOTIsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE4NSwgMTAxLCAKKyAgICAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTYsIDI1NCwgMjMsIAorICAgIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMjgsIDExNywgMjMsIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0OCwgMjE5LCAyMywgMjM0LCAxOTQsIAorICAgIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTcsIDIzLCAyMzQsIDE5NCwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgCisgICAgMjQzLCA1OCwgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1OCwgMjE2LCAKKyAgICAyNTQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1OCwgMjI4LCAxMTcsIDIzLCAyMzQsIAorICAgIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1NywgMjMsIDIzNCwgMTg1LCAxMjQsIDIzNCwgNTAsIDIzLCAKKyAgICAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg1LCAxMjQsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgCisgICAgMTUzLCAyMDksIDE3NSwgMTUzLCAyNDEsIDcwLCAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIDE1MywgMjQzLCA1NywgCisgICAgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAxNTMsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIAorICAgIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgMjQ4LCA5NiwgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEyNCwgMTUzLCAyMDksIDE3NSwgMTI0LCAyMzQsIDUyLCAyMywgMTMxLCAxMjQsIDE1MywgMjM2LCAyMzQsIDEyNCwgMjA4LCAKKyAgICA2NywgMjMsIDEzMSwgMTI0LCAxNTMsIDIzNiwgMjM0LCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDE1MywgMTE3LCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAxOTcsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIDE5MCwgMTUzLCAyMjgsIDczLCAKKyAgICAyMywgMjM0LCAxOTQsIDEyNCwgMTUzLCAyNDIsIDE5MCwgMTUzLCAyMjgsIDczLCAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAKKyAgICAxOTAsIDE1MywgMjAzLCAyNTIsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDYsIDE1NSwgMjMsIDIzNCwgMTkyLCAxMjQsIDIwNiwgCisgICAgMzQsIDIzLCAyMzQsIDE5MiwgMTI0LCAxNTMsIDIxNywgNTMsIDIzLCAyMzQsIDE4NSwgMTI0LCAxNTMsIDIxNywgNTMsIDIzLCAKKyAgICAyMzQsIDE4NSwgMTI0LCAxNTMsIDIyNSwgNzAsIDIzLCAyMzQsIDE4NSwgMTI0LCAyMDYsIDM0LCAyMywgMjM0LCAxODUsIAorICAgIDEyNCwgMTUzLCAyMDksIDUzLCAyMywgMjM0LCAxOTgsIDEyNCwgMTUzLCAyMTYsIDI1NCwgMjMsIDIzNCwgMTk4LCAxMjQsIAorICAgIDE1MywgMjI4LCAxMTcsIDIzLCAyMzQsIDE5OCwgMTI0LCAyMDYsIDM0LCAyMywgMTMxLCAyMDYsIDM0LCAyMywgMTMxLCAKKyAgICAxNTMsIDIzNCwgMTE3LCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAyNDEsIDcwLCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAKKyAgICAyNDMsIDU3LCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTUzLCAyMzYsIDIzMywgMjMsIAorICAgIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTI0LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTAxLCAyMTMsIDI2LCAKKyAgICAyMywgMTMxLCAxNTMsIDI0OCwgMjA2LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMTIwLCAKKyAgICAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDExOSwgMTIwLCAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjYsIAorICAgIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDIzNiwgMjI5LCAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDExOSwgCisgICAgMjM2LCAyMjksIDIxMywgMjIwLCAyMjYsIDkwLCAyMywgMjM0LCAxODgsIDIzLCAxMzEsIDIzNCwgMTE3LCAyMywgMjA1LCAKKyAgICAxNDIsIDIwOSwgMTM4LCAyMywgMjA1LCAxNDIsIDIyMSwgMjAsIDIzLCAyMDUsIDE0MiwgMjQ4LCAyMDUsIDIzLCAyMzUsIAorICAgIDc4LCAyMDksIDEzOCwgMjMsIDIzNSwgNzgsIDIyMSwgMjAsIDIzLCAyMzUsIDc4LCAyNDgsIDIwNSwgMjMsIDIwOCwgNTIsIAorICAgIDIwOSwgMTM4LCAyMywgMjA4LCA1MiwgMjIxLCAyMCwgMjMsIDIwOCwgNTIsIDI0OCwgMjA1LCAyMywgMjQ4LCA0NCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyNDgsIDQ0LCAyMjEsIDIwLCAyMywgMjQ4LCA0NCwgMjQ4LCAyMDUsIDIzLCAyMTIsIDE3MywgMjA5LCAxMzgsIAorICAgIDIzLCAyMTIsIDE3MywgMjIxLCAyMCwgMjMsIDIxMiwgMTczLCAyNDgsIDIwNSwgMjMsIDIwNywgMjAzLCAyMDcsIDExNiwgCisgICAgMjMsIDIwNywgMjAzLCAyNDgsIDIwNSwgMjMsIDIwOCwgMTg5LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIwOCwgMTg5LCA0LCAKKyAgICAyMDksIDEzOCwgMjMsIDIwOCwgMTg5LCAyMjUsIDcxLCAyMjEsIDIwLCAyMywgMjA4LCAxODksIDQsIDIyMSwgMjAsIDIzLCAKKyAgICAyMDgsIDE4OSwgMjEwLCAxNTAsIDIzLCAyMzcsIDM1LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIzNywgMzUsIDQsIDIwOSwgCisgICAgMTM4LCAyMywgMjM3LCAzNSwgMjI1LCA3MSwgMjIxLCAyMCwgMjMsIDIzNywgMzUsIDQsIDIyMSwgMjAsIDIzLCAyMzcsIDM1LCAKKyAgICAyMTAsIDE1MCwgMjMsIDIwOCwgMTg5LCAyMzcsIDM1LCAyNTEsIDEwNiwgMjMsIDIyMSwgNTEsIDExNSwgMTI3LCAyMjUsIAorICAgIDcwLCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDIwOSwgNTMsIDIzLCAyMjEsIDUxLCAxMTUsIDIxMCwgMTUwLCAyMywgMjIxLCAKKyAgICA1MSwgMTI3LCAyMTAsIDE1MCwgMjMsIDIyMSwgNTEsIDExNSwgMTI3LCAyNTEsIDEwNywgMjI1LCA3MCwgMjMsIDIyMSwgNTEsIAorICAgIDExNSwgMTI3LCAyNTEsIDEwNywgMjA5LCA1MywgMjMsIDIyMSwgNTEsIDIwOSwgMTc1LCAyMDUsIDE4NiwgMjA5LCAxNzUsIAorICAgIDIxMSwgMjE2LCAyMywgMjIxLCA1MCwgMjM3LCA4NywgMjQzLCA0NywgMjMsIDIyMSwgNTIsIDIzNywgODcsIDI0MywgNDcsIAorICAgIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjA4LCA2OCwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDgsIDY4LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgCisgICAgMjA4LCA2OCwgMjI1LCA2OCwgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIAorICAgIDUzLCAyMDgsIDY3LCAyMywgMjIxLCA1MCwgNTMsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgNTMsIDI1MSwgCisgICAgMTA2LCAyMywgMjIxLCA1MCwgNTMsIDI1MSwgMTA3LCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDI0MiwgMjM0LCAKKyAgICAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjA4LCA2OCwgMjIxLCA1NCwgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDIwMCwgMjIwLCAKKyAgICAyMzcsIDM4LCAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjUxLCAxMDYsIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyNTEsIDEwNywgCisgICAgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAyNDgsIDIyMywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0OCwgMjIzLCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQ4LCAyMjMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDMsIDE2LCAyMDksIDUzLCAKKyAgICAyMywgMjIxLCA1MCwgMjQzLCAxNiwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0MywgMTYsIDIyNSwgNzAsIDIzLCAyMjEsIAorICAgIDUwLCAyNDMsIDE2LCAyMTIsIDIyNiwgMjMsIDIyMSwgNTAsIDI0NywgNywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0NywgNywgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0NywgNywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDEwMCwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTAsIDEwMCwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDEwMCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDE5OSwgMjcsIAorICAgIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAxOTksIDI3LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMTk5LCAyNywgMjI1LCA3MCwgCisgICAgMjMsIDIyMSwgNTAsIDIxNiwgNjksIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMTYsIDY5LCAyMjIsIDY1LCAyMywgMjIxLCAKKyAgICA1MCwgMjE2LCA2OSwgMjI1LCA3MCwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNCwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMiwgCisgICAgMjEyLCAyMjQsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDIxMiwgMjI0LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEyLCAyMTIsIAorICAgIDIyNSwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjUsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDIxMiwgMjI1LCAKKyAgICAyNTEsIDEwNiwgMjMsIDIwNSwgMTEyLCAyMTAsIDk1LCAyMywgMjA1LCAxMTIsIDI1MCwgMjE1LCAyMDgsIDIxOCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyMDUsIDExMiwgMjUwLCAyMTUsIDIwOCwgMjE4LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEyLCAyNTAsIDIxNSwgCisgICAgMjA4LCAyMTgsIDIwNSwgODIsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjI1LCA2OCwgCisgICAgMjMsIDIyMSwgNTMsIDIwNSwgMTM2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIyMiwgNjUsIDIzLCAyMjEsIAorICAgIDUzLCAyMDUsIDEzNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIDIwNSwgMTM2LCAyMjUsIDY4LCAyMywgMjIxLCA1MywgMjQ4LCAKKyAgICAyMDYsIDI1MCwgMTE2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAKKyAgICAyMjUsIDY4LCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIAorICAgIDIwNSwgMTM2LCAyMjIsIDY1LCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgCisgICAgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMjUsIDY4LCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjUsIAorICAgIDcwLCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgNjgsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjAwLCAKKyAgICAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUyLCA1MywgMjA4LCA2NywgMjMsIDIyMSwgNTIsIDUzLCAyMDAsIDIyMCwgMjM3LCAKKyAgICAzOCwgMjMsIDIyMSwgNTIsIDUzLCAyNTEsIDEwNiwgMjMsIDIyMSwgNTIsIDUzLCAyNTEsIDEwNywgMjAwLCAyMjAsIDIzNywgCisgICAgMzgsIDIzLCAyMjEsIDUyLCAyNDIsIDIzNCwgMjMsIDIyMSwgNTIsIDIwNSwgODMsIDIwOCwgNjgsIDIyMSwgNTQsIDIzLCAKKyAgICAyMjEsIDUyLCAyMDUsIDgzLCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTIsIDIwNSwgODMsIDI1MSwgMTA3LCAyMjEsIAorICAgIDU0LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjUxLCAxMDcsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MiwgMjQ4LCAKKyAgICAyMjIsIDIzLCAyMjEsIDUyLCAyNDMsIDE2LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjQzLCAxNiwgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTIsIDI0MywgMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyNDcsIDYsIDIzLCAyMjEsIDUyLCAxMDAsIDIwOSwgCisgICAgNTMsIDIzLCAyMjEsIDUyLCAxMDAsIDIyMiwgNjUsIDIzLCAyMjEsIDUyLCAxMDAsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAKKyAgICAxOTksIDI3LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMTk5LCAyNywgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDE5OSwgMjcsIAorICAgIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyMTYsIDY5LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjE2LCA2OSwgMjIyLCA2NSwgCisgICAgMjMsIDIyMSwgNTIsIDIxNiwgNjksIDIyNSwgNzAsIDIzLCAyMDUsIDExMywgMjEyLCAyMjUsIDIwOSwgMTM4LCAyMywgMjA1LCAKKyAgICAxMTMsIDIxMiwgMjI1LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEzLCAyMTIsIDIyNSwgMjUxLCAxMDYsIDIzLCAyMDUsIDExMywgCisgICAgMjEyLCAyMjQsIDIwOSwgMTM4LCAyMywgMjA1LCAxMTMsIDIxMiwgMjI0LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEzLCAyMTIsIAorICAgIDIyNCwgMjUxLCAxMDYsIDIzLCAyMDUsIDExMywgMjEwLCA5NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMTQsIDg4LCAKKyAgICAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgCisgICAgMjE0LCA4OCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMTQsIDg4LCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgCisgICAgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMjIsIDY1LCAKKyAgICAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgCisgICAgMjEyLCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIwNiwgNDAsIDI0NiwgMTU2LCAyMDksIDUzLCAyMywgMjIxLCAKKyAgICA1MCwgMjQyLCAxOTAsIDIwNiwgNDAsIDI0NiwgMTU2LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjA5LCA1MywgCisgICAgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMjUsIDcwLCAyMywgMjIxLCAKKyAgICA1MCwgMjI0LCA3NSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIyNCwgNzUsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMjQsIAorICAgIDc1LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAKKyAgICAyNDIsIDE5MCwgNTMsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgNTMsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgNTMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgCisgICAgMjA1LCA4MywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCAyMDUsIDgzLCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDIwNSwgODMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjA2LCAKKyAgICA5OCwgMjA4LCA2NywgMjMsIDIyMSwgNTAsIDI0MiwgMTg4LCAyNDIsIDIzNSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0MiwgCisgICAgMTg4LCAyNDIsIDIzNSwgMjIyLCA2NSwgMjMsIDIxMiwgMjI0LCAyMDksIDEzOCwgMjMsIDIxMiwgMjI0LCAyMzksIDE3NSwgCisgICAgMjMsIDIxMiwgMjI0LCAyNTEsIDEwOCwgMjMsIDIyMSwgNTAsIDIxMCwgOTUsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgCisgICAgMTAyLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjAxLCAKKyAgICA3OCwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjEyLCAyMjQsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyMzYsIAorICAgIDIwMCwgMjAxLCAxMDIsIDIzLCAyMTIsIDIyNCwgNTMsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIxMiwgCisgICAgMjI0LCAyNTEsIDEwNywgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgCisgICAgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMjQsIAorICAgIDc1LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjEyLCAKKyAgICAyMjQsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIxMiwgMjI0LCA1MywgMjM0LCA0NCwgMjQ2LCAyNDMsIAorICAgIDIzLCAyMTIsIDIyNCwgMjUxLCAxMDcsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQxLCA3MSwgCisgICAgMjE2LCA5MSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MSwgNzEsIDIxNiwgOTEsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDEsIDcxLCAyMTYsIDkxLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgCisgICAgNDQsIDI0NywgNjUsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MCwgCisgICAgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCAKKyAgICA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAKKyAgICAyNDcsIDY1LCA0LCAyMDUsIDgyLCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgCisgICAgMjA1LCA4MiwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCAKKyAgICA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAKKyAgICAyMzQsIDQ0LCAyNDcsIDY1LCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDI0NywgNjUsIAorICAgIDIyNSwgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDIwMSwgNzgsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzAsIDIzLCAyMTIsIDIyNSwgMjA5LCAxMzksIDIzNCwgCisgICAgNDQsIDI0NywgNjQsIDIzLCAyMTIsIDIyNSwgNTMsIDIzNCwgNDQsIDI0NywgNjQsIDIzLCAyMTIsIDIyNSwgMjUxLCAxMDcsIAorICAgIDIzNCwgNDQsIDI0NywgNjQsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCA0NCwgMjM3LCAzMiwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCAKKyAgICA0NCwgMjM3LCAzMiwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIAorICAgIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIwNSwgODMsIDQsIDIwNSwgCisgICAgODIsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDUsIDgzLCAyMjUsIDcxLCAyMDUsIDgyLCAKKyAgICAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjM3LCAzMiwgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyMjQsIAorICAgIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIAorICAgIDIzNywgMzIsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MSwgCisgICAgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDksIDUzLCAyMywgMjIxLCA1MiwgCisgICAgMjAxLCA3OCwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOSwgMjM0LCA0NCwgMjM3LCAKKyAgICAzMSwgMjMsIDIxMiwgMjI1LCA1MywgMjM0LCA0NCwgMjM3LCAzMSwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNywgMjM0LCA0NCwgCisgICAgMjM3LCAzMSwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIyMiwgNjUsIAorICAgIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMjUsIDY4LCAyMywgMjIxLCAKKyAgICA1MiwgMjQyLCAxOTAsIDI0NiwgNzQsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjI0LCAKKyAgICA3NSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIwOSwgNDEsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMDksIAorICAgIDUzLCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOCwgMjMsIDIxMiwgMjI1LCAKKyAgICAyMzksIDE3NSwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNiwgMjMsIDIyMSwgNTIsIDIxMCwgOTYsIDIxNiwgMTIwLCAyMywgCisgICAgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgMTU2LCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjIyLCA2NiwgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDQsIDIzOSwgMTc1LCAyMywgCisgICAgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgMTU2LCAyMjIsIDY2LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAKKyAgICAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjIyLCA2NiwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgMTU2LCAKKyAgICAyMzQsIDQ0LCAyMDEsIDEwMywgMjIyLCA2NiwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIAorICAgIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjUsIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTAsIDIwMCwgMjIwLCAyNDYsIDE1NiwgCisgICAgMjM2LCAyMDAsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjAwLCAyMjAsIDI0NiwgMTU2LCAyMzYsIDIwMCwgMjM5LCAxNzUsIAorICAgIDIzLCAyMjEsIDUyLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMDksIDEzOCwgMjMsIDIyMSwgCisgICAgNTIsIDIwMCwgMjIwLCAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIzOSwgMTc1LCAyMywgMjIxLCA1MCwgMjM3LCAKKyAgICA4NywgMjQ2LCAxNTMsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjM3LCA4NywgMjQ2LCAxNTMsIDIzOSwgMTc1LCAyMywgCisgICAgMjIxLCA1MiwgMjM3LCA4NywgMjQ2LCAxNTMsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIAorICAgIDIzNywgODcsIDI0NiwgMTUzLCAyMzQsIDQ0LCAyMDEsIDEwMywgMjM5LCAxNzUsIDIzLCAyMzksIDk4LCAyNTAsIDIwMywgCisgICAgMjA5LCA1MywgMjMsIDIzOSwgOTgsIDI1MCwgMjAzLCAyMjUsIDcwLCAyMywgMjM5LCA5OCwgMjM3LCAxNjEsIDIzLCAyMzksIAorICAgIDk4LCAyMDksIDU2LCAyMywgMjM5LCA5OCwgMjA2LCAxNTksIDIzLCAyMzksIDk4LCAyMTMsIDE0NywgMjMsIDIzOSwgOTgsIAorICAgIDIwOSwgMTQ0LCAyMywgMjM5LCA5OCwgMjA5LCAxNDUsIDI1MSwgMTA2LCAyMywgMjM5LCA5OCwgMjM4LCA1MiwgMjE3LCA4LCAKKyAgICAyMDUsIDIzNCwgMjMsIDIzOSwgOTgsIDIzNSwgODgsIDIzLCAyMzQsIDEzNiwgMjMsIDIzNCwgMTM3LCAyMTMsIDMxLCAyMywgCisgICAgMjM0LCAxMzcsIDIyMSwgNTAsIDIwOCwgNjcsIDIzLCAyMzQsIDEzNywgMjIxLCA1MCwgMjA1LCAyMzcsIDIzLCAyMzQsIAorICAgIDEzNywgMjIxLCA1MiwgMjA4LCA2NywgMjMsIDIzNCwgMTM3LCAyMjEsIDUwLCAyNDIsIDE4OSwgMjMsIDIzNCwgMTM3LCAKKyAgICAyMjEsIDUyLCAyNDIsIDE4OSwgMjMsIDIzNCwgMTM3LCAyMjEsIDU1LCAyNDYsIDE1NSwgMjMsIDIzNywgMTkwLCAyNDEsIDksIAorICAgIDIxNSwgNzAsIDIxOCwgMjE3LCAyMzYsIDIzNCwgMjA1LCAyMzUsIDIzLCAyMzcsIDE5MCwgMjQxLCA5LCAyMTUsIDcwLCAKKyAgICAyMTgsIDIxNywgMTE1LCAyMTcsIDM0LCAyMzksIDE2NywgMjMsIDIzNywgMTkwLCAyNDEsIDksIDIxNSwgNzAsIDIxOCwgCisgICAgMjE3LCAxMTUsIDIxNywgMzQsIDEyNywgMjA1LCAyMzUsIDIzLCAyMzgsIDIxLCAyMDgsIDY4LCAyMDMsIDIyOCwgMjMsIAorICAgIDIzOCwgMjEsIDIwOCwgNjgsIDIyMCwgOSwgMjMsIDIzOCwgMjEsIDIwOCwgNjgsIDIzOSwgMTY3LCAyMywgMjM5LCAxNTQsIAorICAgIDIzOCwgMjEsIDIyMCwgMTAsIDIzOSwgMTY3LCAyMywgMjM5LCAxNTQsIDIzOCwgMjEsIDEyNywgMjIwLCA5LCAyMywgMjM5LCAKKyAgICAxNTQsIDIzOCwgMjEsIDExNSwgMjIwLCA5LCAyMywgMjM5LCAxNTQsIDIzOCwgMjEsIDIyMCwgMTAsIDIwMywgMjI4LCAyMywgCisgICAgMjM2LCAyNDcsIDIyMCwgOSwgMjMsIDIzNiwgMjQ3LCAyNDMsIDQ3LCAyMywgMjM2LCAyNDcsIDIwMCwgMjIzLCAyMywgMjM4LCAKKyAgICAxNiwgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDIwOCwgMTg4LCAyMywgMjM4LCAxNiwgMjQ2LCAxMDksIDIzLCAyMzgsIDIzLCAKKyAgICAyNDgsIDEzNSwgMjA5LCAxMzgsIDIzLCAyMzgsIDIzLCAyNDgsIDEzNSwgMjIxLCAyMCwgMjMsIDIzOCwgMTYsIDE2NywgCisgICAgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDIwMSwgMjgsIDIxNywgNTMsIDIzLCAyMzgsIDE2LCAxNjcsIDI0NiwgMTA5LCAyMywgCisgICAgMjM4LCAxNiwgMjAxLCAyNiwgMjIxLCA1NCwgMjMsIDIzOCwgMjMsIDIwMSwgOSwgMjMsIDIzOCwgMTcsIDIwMywgMjI4LCAKKyAgICAyMywgMjM4LCAxNywgMjM5LCAxNjcsIDIzLCAyMzgsIDE3LCAyMzcsIDE4LCAyMywgMjM4LCAxOSwgMjA4LCA2NywgMjMsIAorICAgIDIzOCwgMTksIDIwOCwgNjgsIDIzOSwgMTc1LCAyMywgMjM4LCAxOSwgMjA4LCA2OCwgMjUxLCAxMDYsIDIzLCAyMzgsIDIwLCAKKyAgICAyMDgsIDY3LCAyMywgMjM4LCAyMCwgMjA4LCA2OCwgMjM5LCAxNzUsIDIzLCAyMzgsIDIwLCAyMDgsIDY4LCAyNTEsIDEwNiwgCisgICAgMjMsIDIzOCwgMTksIDI0MiwgMTg3LCAyMywgMjM4LCAyMCwgMjQyLCAxODcsIDIzLCAyMzgsIDE5LCAyNDYsIDE1MCwgMjMsIAorICAgIDI0NywgMiwgMjE0LCAyMTUsIDIzLCAyNDcsIDIsIDIyMCwgOSwgMjMsIDI0NywgMiwgMjA3LCAyNDgsIDIzLCAyMDYsIDE2MCwgCisgICAgMjQ3LCAyLCAyMzQsIDU5LCAyMywgMjA2LCAxNjAsIDI0NywgMiwgMjIxLCAyMDQsIDIzLCAyMDYsIDE2MCwgMjQ3LCAyLCAKKyAgICAyMjQsIDU5LCAyMywgMjM5LCAxOSwgMjMsIDIxOCwgMjE3LCAyMjAsIDksIDIzLCAyMTgsIDIxNywgMjQzLCA0NywgMjMsIAorICAgIDIxOCwgMjE3LCAyMDAsIDIyMSwgMjMsIDIxOCwgMjE3LCAyMDEsIDIzLCAyMywgMjUxLCAxNjcsIDI0OCwgMTI4LCAyMTYsIAorICAgIDI1NCwgMjMsIDI1MSwgMTY3LCAyMDcsIDI0NywgMjI4LCAxMTcsIDIzLCAyNTEsIDE2NywgMjQ4LCAxMzAsIDQsIDIxMiwgCisgICAgMjIzLCAyMywgMjUxLCAxNjcsIDIwNywgMjQ5LCA0LCAyMTIsIDIyMywgMjMsIDI0OCwgNTksIDIyOCwgODksIDIzLCAyNDgsIAorICAgIDU5LCAyMzgsIDQxLCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDIyMCwgOSwgMjMsIDIyMSwgNTksIDI0NiwgMTEwLCAyMzYsIAorICAgIDIzMywgMjMsIDIyMSwgNTksIDI0NiwgMTEwLCAyNDMsIDQ3LCAyMywgMjIxLCA1OSwgMjA5LCA0OCwgMjMsIDIyMSwgNTksIAorICAgIDIwOSwgNDksIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjA5LCA0OSwgMjE3LCA1MywgMjMsIDIyMSwgNTksIDIzNiwgMTk2LCAKKyAgICAyMywgMjIxLCA1OSwgMjM2LCAxOTcsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjM2LCAxOTcsIDIxNywgNTMsIDIzLCAyMjEsIAorICAgIDU5LCAxNzYsIDI0NiwgMTU1LCAyMywgMjIxLCA1OSwgMTc2LCAyMzYsIDIzMywgMjMsIDIyMSwgNTksIDE3NiwgMjAwLCAKKyAgICAyMjMsIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ3LCAyMywgMjIxLCA1OSwgMTc2LCAyMTYsIDI0OCwgMjAwLCAyMjMsIAorICAgIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ4LCAyMDAsIDU4LCAyMywgMjIxLCA1OSwgMTc2LCAyMTMsIDE3NSwgMjMsIDIyMSwgCisgICAgNTksIDE3NiwgMjEzLCAxNzYsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMTc2LCAyMTMsIDE3NiwgMjAwLCA1OCwgMjMsIAorICAgIDIyMSwgNTksIDIyNiwgMTI5LCAyMywgMjIxLCA1OSwgMjI2LCAxMzAsIDIzNiwgMjMzLCAyMywgMjIxLCA1OSwgMjI2LCAKKyAgICAxMzAsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjA2LCAxNTksIDIzLCAyMjEsIDU5LCAyMDYsIDE2MCwgMjM2LCAyMzMsIAorICAgIDIzLCAyMjEsIDU5LCAyMDYsIDE2MCwgMjA3LCAyNDgsIDIzLCAyMjQsIDE2MSwgMjE1LCAxNywgMjA1LCAxODIsIDIzLCAKKyAgICAyMjQsIDE2MywgMjI0LCA1NCwgMTE5LCAyMDMsIDIyNCwgMjMsIDIyNCwgMTYzLCAyMDMsIDIyNSwgMTE5LCAyMjQsIDUzLCAKKyAgICAyMywgMjIxLCA1OSwgMjQzLCAxNCwgMjMsIDIyMSwgNTksIDIwMCwgMjIyLCAyMDksIDEzOCwgMjMsIDIyMSwgNTksIDIwMCwgCisgICAgMjIyLCAyMzksIDE3NSwgMjMsIDIwNSwgMTY0LCAyMDgsIDg3LCAyMTYsIDI1NSwgMjM3LCAxNjMsIDIzLCAyMDUsIDE2NCwgCisgICAgMjI0LCAyMDYsIDIyNCwgMTYwLCAyMywgMjA1LCAxNjQsIDIwNSwgMjI0LCAyNDgsIDIwNiwgMjI0LCAxNjAsIDIzLCAyMDUsIAorICAgIDE2NCwgMjA1LCAyMjQsIDIwNSwgMTQwLCAyMjgsIDc0LCAyMjEsIDU4LCAyMywgMjA1LCAxNjQsIDIyOCwgNzQsIDIyMSwgCisgICAgNTksIDIxMywgMTQ3LCAyMywgMjA1LCAxNjQsIDIyMSwgNDksIDI1MSwgMTkxLCAyNDcsIDMsIDIzLCAyMDUsIDE2NCwgMjQ3LCAKKyAgICA1NiwgMjA4LCA4NywgMjE2LCAyNTQsIDIzLCAyMDUsIDE2NCwgMjQ3LCA1NiwgMjI4LCA3NCwgMjIxLCA1OCwgMjMsIDIwNiwgCisgICAgMTg2LCAyMywgMjA2LCAxODcsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjE3LCA3OSwgMjA1LCAxNjMsIDIzLCAyMDYsIAorICAgIDE4NywgMjE3LCA3OSwgMjA1LCAxNjQsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjE3LCA3OSwgMjI0LCAxNjAsIDIzLCAKKyAgICAyMDYsIDE4NywgMjE3LCA3OSwgMjI0LCAxNjEsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjQ4LCAxNTEsIDIyNCwgMTYwLCAKKyAgICAyMywgMjIxLCA1MCwgMjI3LCAyMzEsIDIzLCAyMjEsIDUyLCAyMjcsIDIzMSwgMjMsIDIyMCwgMzEsIDIzLCAyMzQsIDIyMSwgCisgICAgMjMsIDIzOCwgNDQsIDIzLCAyMDksIDIzMywgMjM0LCA0OSwgMjA4LCAyMTksIDIzLCAyMDksIDIzMywgMjM0LCA0OSwgMjE1LCAKKyAgICA2OSwgMjMsIDIwMSwgMTAxLCAyMDksIDIzMywgMjM0LCA0OSwgMjIxLCA1NywgMjMsIDIzNywgMzAsIDIwOSwgMjMzLCAyMzQsIAorICAgIDQ5LCAyMjEsIDU3LCAyMywgMjA5LCAyMzMsIDIwNSwgMjM2LCAyMzYsIDIwMSwgMjAxLCAxMDcsIDIzLCAyMDUsIDE0NywgCisgICAgMjA4LCA2OCwgMjA4LCA1NiwgMjMsIDIwNSwgMTQ3LCAyNDIsIDE4OCwgMjQ4LCAyMjIsIDIzLCAyMDUsIDE0OCwgMjA0LCAKKyAgICAxNDQsIDIzLCAyMDMsIDIyNSwgMjQ4LCAxMTksIDIwNSwgMjM2LCAyMzYsIDIwMSwgMjM0LCA0OSwgMjI3LCAxNjAsIDIzLCAKKyAgICAyMjQsIDE4OCwgMjQ2LCA3NSwgMjMsIDIyNCwgMTg4LCAyMjUsIDEsIDIzLCAyMjQsIDE4OCwgMjI1LCAwLCAyMywgMjI0LCAKKyAgICAxODgsIDIyNCwgMjU1LCAyMywgMjI0LCAxODgsIDIyNCwgMjU0LCAyMywgMjI0LCAxODgsIDIyNCwgMjUzLCAyMywgMjI0LCAKKyAgICAxODgsIDIyNCwgMjUyLCAyMywgMjI0LCAxODgsIDIyNCwgMjUxLCAyMywgMjM3LCA4NiwgMjMsIDIyNCwgMTA2LCAyMDgsIAorICAgIDI0NCwgMjMsIDIyNCwgMTA3LCAyMDgsIDI0NCwgMjMsIDIyNCwgMTA4LCAyMzQsIDExMywgMjMsIDIyNCwgMTA4LCAyMDEsIAorICAgIDI0LCAyMywgMjI0LCAxMDgsIDI0MSwgMTIzLCAyMywgMjI0LCAxMDgsIDIzNCwgMTM3LCAyMjAsIDMxLCAyMywgMjI0LCAKKyAgICAxMDgsIDIwNSwgMTQ5LCAyMywgMjI0LCAxMDgsIDIyNCwgMTg3LCAyNDEsIDQxLCAyMywgMjQ2LCA3MCwgMjMsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAyMywgMjEwLCAxNjcsIDIzLCAyNDYsIDc5LCAyMywgMjE2LCAxMTUsIDIzLCAyMzcsIDk2LCAyMjEsIAorICAgIDExOCwgMjMsIDIzNywgOTYsIDIyMSwgMTE3LCAyMywgMjM3LCA5NiwgMjIxLCAxMTYsIDIzLCAyMzcsIDk2LCAyMjEsIDExNSwgCisgICAgMjMsIDIzNywgOTYsIDIyMSwgMTE0LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE4LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE3LCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTE2LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE1LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE0LCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTEzLCAyMywgMjEyLCAyMjcsIDIyMSwgMTEyLCAyMywgMjEyLCAyMjcsIDIyMSwgMTExLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTI1LCAyMywgMjEyLCAyMjcsIDIyMSwgMTI0LCAyMywgMjEyLCAyMjcsIDIyMSwgMTIzLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTIyLCAyMywgMjEyLCAyMjcsIDIyMSwgMTIxLCAyMywgMjEyLCAyMjcsIDIyMSwgMTIwLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTE5LCAzOCwgMTE2LCAxLCAyNTAsIDEwNCwgMzgsIDExNiwgMSwgMjQ4LCAyNCwgMzgsIAorICAgIDExNiwgMSwgMjAzLCA1NywgMzgsIDExNiwgMSwgMjM1LCAxMzAsIDM4LCAxMTYsIDEsIDI0MCwgMjA2LCAzOCwgMTE2LCAxLCAKKyAgICAyMDAsIDIzLCAzOCwgMTE2LCAxLCAxOTksIDYxLCAzOCwgMTE2LCAxLCAxOTksIDg2LCAzOCwgMTE2LCAxLCAyMjcsIDI1NSwgCisgICAgMzgsIDExNiwgMSwgODIsIDIyNywgMjU1LCAzOCwgMTE2LCAxLCA3MCwgMzgsIDExNiwgMSwgMjQwLCAyMjYsIDM4LCAxMTYsIAorICAgIDEsIDIyNywgNzQsIDM4LCAxMTYsIDEsIDIyNCwgMTQwLCAzOCwgMTE2LCAxLCAyMjAsIDIxOCwgMzgsIDExNiwgMSwgMjIwLCAKKyAgICAxMjAsIDM4LCAxMTYsIDEsIDIxNywgNjUsIDM4LCAxMTYsIDEsIDIxNSwgOTMsIDM4LCAxMTYsIDEsIDIxMywgMTgsIDM4LCAKKyAgICAxMTYsIDEsIDIwOSwgNTgsIDM4LCAxMTYsIDEsIDIwNCwgMTcxLCAzOCwgMTE2LCAxLCAyMDQsIDE2LCAzOCwgMTE2LCAxLCAKKyAgICAyMzYsIDIwNCwgMzgsIDExNiwgMSwgMjM0LCA5NSwgMzgsIDExNiwgMSwgMjA5LCAyMjMsIDM4LCAxMTYsIDEsIDIwNSwgMTEsIAorICAgIDM4LCAxMTYsIDEsIDI0NiwgMTk4LCAzOCwgMTE2LCAxLCAyMTAsIDExNCwgMzgsIDExNiwgMSwgMjAwLCAyOSwgMzgsIDExNiwgCisgICAgMSwgMjAwLCAzMSwgMzgsIDExNiwgMSwgMjAwLCA2MywgMzgsIDExNiwgMSwgMTk5LCAyMTEsIDM4LCAxMTYsIDEsIDQsIAorICAgIDE5OSwgMTgxLCAzOCwgMTE2LCAxLCAxOTksIDI0NSwgMzgsIDExNiwgMSwgMjI4LCA0MCwgNCwgMTk5LCAxODEsIDM4LCAKKyAgICAxMTYsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzgsIDExNiwgMSwgMjI4LCA0MCwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgCisgICAgMTE2LCAxLCAyMzcsIDYzLCA3OCwgNzcsIDUsIDIyMywgMjQyLCAyMjYsIDE2MywgNzgsIDc3LCA1LCAyMjMsIDIzOCwgMTYxLCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMjM2LCAyMjYsIDE1LCA3OCwgNzcsIDUsIDIyMywgMTEyLCAyMjcsIDUsIDc4LCA3NywgNSwgCisgICAgMjIzLCA4MiwgMjI3LCA4LCA3OCwgNzcsIDUsIDIyMywgMTAxLCAyMjYsIDY4LCA3OCwgNzcsIDUsIDIyMywgMTI5LCAyMjYsIAorICAgIDg4LCA3OCwgNzcsIDUsIDIyMiwgMjU0LCAyMjYsIDksIDc4LCA3NywgNSwgMjIzLCAyMzMsIDIwMSwgMzEsIDc4LCA3NywgNSwgCisgICAgMjIzLCAyMzEsIDIwMSwgMTE0LCA3OCwgNzcsIDUsIDIyMywgMjI5LCAyMDAsIDIxNiwgNzgsIDc3LCA1LCAyMjMsIDUxLCAKKyAgICAyMDEsIDU3LCA3OCwgNzcsIDUsIDIyMywgNTksIDIwMSwgNjQsIDc4LCA3NywgNSwgMjIzLCA2MywgMjAwLCAyNDQsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMzIsIDIwMSwgMCwgNzgsIDc3LCA1LCAyMjIsIDIzOSwgMjAwLCAyMTIsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAzNCwgMjAxLCA1NSwgNzgsIDc3LCA1LCAyMjMsIDExNiwgMjAwLCAyMDAsIDc4LCA3NywgNSwgMjIzLCAxMjgsIDIwMCwgCisgICAgMjAyLCA3OCwgNzcsIDUsIDIyMywgMzgsIDIwMCwgMjAxLCA3OCwgNzcsIDUsIDIyMywgMjI3LCAyMjEsIDE2NCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDIyNSwgMjIyLCAxODAsIDc4LCA3NywgNSwgMjIzLCAyMjMsIDIyMSwgMTQsIDc4LCA3NywgNSwgMjIzLCAxMTgsIAorICAgIDIyMiwgNDAsIDc4LCA3NywgNSwgMjIzLCA4MywgMjIxLCAxMDYsIDc4LCA3NywgNSwgMjIzLCAyMywgMjIxLCAzOCwgNzgsIAorICAgIDc3LCA1LCAyMjIsIDI0NCwgMjIxLCAzMiwgNzgsIDc3LCA1LCAyMjMsIDIyMSwgMjQ4LCAxODgsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAyMTgsIDI0OSwgMTM2LCA3OCwgNzcsIDUsIDIyMywgMjE2LCAyNDgsIDM2LCA3OCwgNzcsIDUsIDIyMywgMjcsIDI0OCwgCisgICAgMjUyLCA3OCwgNzcsIDUsIDIyMywgODAsIDI0OSwgOCwgNzgsIDc3LCA1LCAyMjMsIDc0LCAyNDgsIDExMSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDM5LCAyNDgsIDEyNCwgNzgsIDc3LCA1LCAyMjMsIDIwNiwgNzAsIDc4LCA3NywgNSwgMjIzLCAyMDQsIDYyLCA3OCwgCisgICAgNzcsIDUsIDIyMywgMjAyLCA2NiwgNzgsIDc3LCA1LCAyMjMsIDE0LCAyMzgsIDI1NSwgNzgsIDc3LCA1LCAyMjMsIDc3LCAKKyAgICA3MiwgNzgsIDc3LCA1LCAyMjMsIDEyLCAyMTcsIDYzLCA3OCwgNzcsIDUsIDIyMywgMzAsIDc0LCA3OCwgNzcsIDUsIDIyMywgCisgICAgNDAsIDIzOCwgMjM0LCA3OCwgNzcsIDUsIDIyMywgNDYsIDIyOCwgMTE3LCA3OCwgNzcsIDUsIDIyMywgNDIsIDIyOCwgMTE3LCAKKyAgICA3OCwgNzcsIDUsIDIyMiwgMjM4LCAyNTEsIDg1LCA3OCwgNzcsIDUsIDIyMiwgMjU1LCAyMzgsIDE3OSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDE5MSwgMjA5LCAxODIsIDc4LCA3NywgNSwgMjIzLCAxODksIDIxMiwgNjQsIDc4LCA3NywgNSwgMjIzLCAxODcsIAorICAgIDIwOCwgMjQsIDc4LCA3NywgNSwgMjIzLCAxNSwgMjExLCAxOTAsIDc4LCA3NywgNSwgMjIzLCA2MSwgMjExLCAyMDIsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA0MSwgMjA5LCAxMCwgNzgsIDc3LCA1LCAyMjMsIDk4LCAyMDksIDI5LCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjM3LCAyMDksIDE4MSwgNzgsIDc3LCA1LCAyMjMsIDE3NywgMjI0LCAyMTAsIDc4LCA3NywgNSwgMjIzLCAxNzUsIDE5NCwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDE3MywgMjI0LCA0MiwgNzgsIDc3LCA1LCAyMjMsIDkzLCAyMjUsIDMyLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMTA0LCAyMjUsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTIzLCAyMjQsIDc4LCA3OCwgNzcsIDUsIDIyMywgMjQsIDIyNCwgCisgICAgMTEwLCA3OCwgNzcsIDUsIDIyMywgNjcsIDE2OCwgMjI1LCA0MCwgNzgsIDc3LCA1LCAyMjMsIDE5OSwgMjQxLCA3NiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDE5NiwgMjQyLCA1OCwgNzgsIDc3LCA1LCAyMjMsIDE5MywgMjM5LCAxMzcsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA4OCwgMjQxLCAxNjEsIDc4LCA3NywgNSwgMjIyLCAyNTMsIDI0MCwgMTg3LCA3OCwgNzcsIDUsIDIyMiwgMjUyLCAyNDAsIAorICAgIDIxMSwgNzgsIDc3LCA1LCAyMjMsIDE4NSwgMjA2LCAxNSwgNzgsIDc3LCA1LCAyMjMsIDE4MiwgMjA3LCAzNiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDE4MCwgMjA0LCAyMTUsIDc4LCA3NywgNSwgMjIzLCA4NiwgMjA2LCAxOTAsIDc4LCA3NywgNSwgMjIzLCAxMjIsIAorICAgIDIwNiwgMjAxLCA3OCwgNzcsIDUsIDIyMywgNzMsIDIwNSwgMTYxLCA3OCwgNzcsIDUsIDIyMywgMTA4LCAxMzgsIDc4LCA3NywgCisgICAgNSwgMjIzLCAxNzEsIDIyNywgMjA3LCA3OCwgNzcsIDUsIDIyMywgMTY4LCAyMjcsIDI0OCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDE2NiwgMjI3LCAxNDcsIDc4LCA3NywgNSwgMjIzLCAyMCwgMjI3LCAyMjUsIDc4LCA3NywgNSwgMjIzLCA2NCwgMjI3LCAKKyAgICAyMjcsIDc4LCA3NywgNSwgMjIzLCAxNywgMjI3LCAxNTYsIDc4LCA3NywgNSwgMjIzLCAxMTQsIDIyNywgMTY2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMiwgMTY4LCAyMjcsIDE2NiwgNzgsIDc3LCA1LCAyMjMsIDE2NCwgMjAwLCA5LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTYxLCAxODMsIDc4LCA3NywgNSwgMjIzLCAxNTksIDE5OSwgMjExLCA3OCwgNzcsIDUsIDIyMywgNjgsIDIwMCwgNDgsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA5NywgMjAwLCA1MSwgNzgsIDc3LCA1LCAyMjMsIDM2LCAxOTksIDIzMCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDU2LCAxOTksIDI0NSwgNzgsIDc3LCA1LCAyMjMsIDE1NSwgMjM3LCAxMTIsIDc4LCA3NywgNSwgMjIzLCAxNTMsIDIzNywgCisgICAgMTk1LCA3OCwgNzcsIDUsIDIyMywgMTUxLCAyMzYsIDE4OSwgNzgsIDc3LCA1LCAyMjMsIDk5LCAyMzcsIDE0MCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDEwMiwgMjM3LCAxNDcsIDc4LCA3NywgNSwgMjIzLCA0NCwgMjM3LCAyLCA3OCwgNzcsIDUsIDIyMywgODksIAorICAgIDIzNywgMTMsIDc4LCA3NywgNSwgMjIyLCAyMzYsIDIzNiwgMTg4LCA3OCwgNzcsIDUsIDIyMywgNzYsIDIzNywgMTY4LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTQ5LCAyMTksIDExOCwgNzgsIDc3LCA1LCAyMjMsIDE0NywgMjIwLCAxMzQsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxNDUsIDIxOCwgODksIDc4LCA3NywgNSwgMjIzLCA2MCwgMjIwLCAyNCwgNzgsIDc3LCA1LCAyMjMsIDgsIDIxOCwgMjM0LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMSwgMjM0LCA3NSwgNzgsIDc3LCA1LCAyMjMsIDE0MCwgMTQ0LCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjQ3LCAyMzMsIDk3LCA3OCwgNzcsIDUsIDIyMywgMTQzLCAyMzQsIDEyMCwgNzgsIDc3LCA1LCAyMjMsIDgxLCAyMzQsIAorICAgIDEzOSwgNzgsIDc3LCA1LCAyMjMsIDEzOCwgMjMzLCAxODgsIDc4LCA3NywgNSwgMjIzLCAzNywgMjMzLCAyMDcsIDc4LCA3NywgCisgICAgNSwgMjIzLCA5NCwgMjM0LCAxMTksIDc4LCA3NywgNSwgMjIzLCA0OSwgMjMzLCAxODEsIDc4LCA3NywgNSwgMjIzLCAxMjQsIAorICAgIDIzNCwgNTMsIDc4LCA3NywgNSwgMjIzLCA0NywgMjM0LCAyMDIsIDc4LCA3NywgNSwgMjIzLCA5MCwgMjMzLCA4NCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEyNSwgMjM0LCAxMDUsIDc4LCA3NywgNSwgMjIyLCAyNDAsIDIzMywgMTkxLCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTMxLCAyMzMsIDk2LCA3OCwgNzcsIDUsIDIyMywgODcsIDIxOSwgMjE4LCA3OCwgNzcsIDUsIDIyMywgMTM2LCAyMTksIAorICAgIDIzMiwgNzgsIDc3LCA1LCAyMjMsIDk1LCAyMTksIDIxNSwgNzgsIDc3LCA1LCAyMjMsIDYyLCAyMTksIDIyNiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDMxLCAyMTksIDIyNywgNzgsIDc3LCA1LCAyMjMsIDIxLCAyMTksIDIxNiwgNzgsIDc3LCA1LCAyMjMsIDU3LCAKKyAgICAyMTksIDIxNywgNzgsIDc3LCA1LCAyMjMsIDE4LCAyMTksIDIzMSwgNzgsIDc3LCA1LCAyMjMsIDUwLCAyMTksIDIxNCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDkxLCAxNjgsIDIxOSwgMjI3LCA3OCwgNzcsIDUsIDIyMywgNzEsIDE2OCwgMjE5LCAyMTYsIDc4LCA3NywgCisgICAgNSwgMjIyLCAyNTAsIDE2OCwgMjE5LCAyMTcsIDc4LCA3NywgNSwgMjIzLCAyMiwgMjM1LCAxNjEsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA2NiwgMjM2LCA4OSwgNzgsIDc3LCA1LCAyMjMsIDksIDIzNSwgNTAsIDc4LCA3NywgNSwgMjIyLCAyNDMsIDIzNiwgNywgNzgsIAorICAgIDc3LCA1LCAyMjMsIDExLCAyMzUsIDM2LCA3OCwgNzcsIDUsIDIyMywgMTAsIDIzNSwgNDYsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNDksIDIxOSwgMjM3LCA3OCwgNzcsIDUsIDIyMywgMTIwLCAyMTksIDE3NCwgNzgsIDc3LCA1LCAyMjMsIDAsIDIxOSwgCisgICAgMTYzLCA3OCwgNzcsIDUsIDIyMywgMTA5LCAyMTUsIDIwNCwgNzgsIDc3LCA1LCAyMjMsIDc4LCAxNzIsIDc4LCA3NywgNSwgCisgICAgMjIzLCAxMjcsIDIxNCwgMjI0LCA3OCwgNzcsIDUsIDIyMywgOTYsIDIxNiwgNjEsIDc4LCA3NywgNSwgMjIzLCAxMjYsIAorICAgIDIxNiwgNzMsIDc4LCA3NywgNSwgMjIzLCA3NSwgMjE1LCA4MSwgNzgsIDc3LCA1LCAyMjMsIDExMSwgMjE1LCAxMDYsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAzMiwgMjIyLCA5NSwgNzgsIDc3LCA1LCAyMjMsIDExNSwgMjIyLCAxMTAsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA1NSwgMjIyLCA4OSwgNzgsIDc3LCA1LCAyMjMsIDEzMCwgMjIyLCAxMDIsIDc4LCA3NywgNSwgMjIyLCAyNDUsIDIyMiwgCisgICAgMTAyLCA3OCwgNzcsIDUsIDIyMywgMTA1LCAyMjIsIDEwMywgNzgsIDc3LCA1LCAyMjMsIDUsIDIyMiwgOTAsIDc4LCA3NywgCisgICAgNSwgMjIzLCAzLCAyMjIsIDkxLCA3OCwgNzcsIDUsIDIyMiwgMjQ2LCAyMjIsIDgzLCA3OCwgNzcsIDUsIDIyMywgMTYsIAorICAgIDE2OCwgMjIyLCAxMDMsIDc4LCA3NywgNSwgMjIzLCA3MiwgMTY4LCAyMjIsIDkwLCA3OCwgNzcsIDUsIDIyMywgMzUsIDE2OCwgCisgICAgMjIyLCA5MSwgNzgsIDc3LCA1LCAyMjMsIDQ1LCAyMjYsIDQyLCA3OCwgNzcsIDUsIDIyMywgODUsIDIyNiwgNTAsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMDMsIDIyNiwgMzgsIDc4LCA3NywgNSwgMjIzLCAxMzQsIDIyNiwgNDUsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA2OSwgMjI2LCA0NiwgNzgsIDc3LCA1LCAyMjMsIDY1LCAyMjYsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTksIDIyNiwgNDEsIAorICAgIDc4LCA3NywgNSwgMjIzLCA1MywgMjM2LCAyNCwgNzgsIDc3LCA1LCAyMjMsIDEyMSwgMjM2LCAzMiwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDI5LCAyMzYsIDE5LCA3OCwgNzcsIDUsIDIyMywgODQsIDIzNiwgMjgsIDc4LCA3NywgNSwgMjIzLCA3MCwgMjM2LCAKKyAgICAyOSwgNzgsIDc3LCA1LCAyMjMsIDEwNiwgMjM2LCAyMCwgNzgsIDc3LCA1LCAyMjMsIDEwNywgMjM2LCAyMiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDYsIDIxMywgMjUyLCA3OCwgNzcsIDUsIDIyMywgNTQsIDIyMCwgNjAsIDc4LCA3NywgNSwgMjIzLCA0OCwgCisgICAgMjIwLCA3NSwgNzgsIDc3LCA1LCAyMjMsIDUyLCAyMjAsIDQyLCA3OCwgNzcsIDUsIDIyMiwgMjQyLCAyMjAsIDY2LCA3OCwgCisgICAgNzcsIDUsIDIyMywgNTgsIDIyMCwgNjcsIDc4LCA3NywgNSwgMjIzLCAxMTAsIDIyMCwgNDcsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxMTMsIDIyMCwgNTEsIDc4LCA3NywgNSwgMjIzLCAyNSwgMjE5LCA5OCwgNzgsIDc3LCA1LCAyMjIsIDI0MSwgMjE5LCA2OCwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDI4LCAyMTksIDg5LCA3OCwgNzcsIDUsIDIyMywgNDMsIDIxOSwgNzIsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNTEsIDIwMiwgMjM0LCA3OCwgNzcsIDUsIDIyMiwgMjQ4LCAyMDMsIDkwLCA3OCwgNzcsIDUsIDIyMywgMjYsIDIwMSwgCisgICAgMTY2LCA3OCwgNzcsIDUsIDIyMywgNCwgMjAzLCA1NCwgNzgsIDc3LCA1LCAyMjMsIDkyLCAyMDMsIDU5LCA3OCwgNzcsIDUsIAorICAgIDIyMywgMzMsIDIwMiwgMTc5LCA3OCwgNzcsIDUsIDIyMywgMTAwLCAyMDIsIDE5MywgNzgsIDc3LCA1LCAyMjMsIDEzLCAKKyAgICAyMTgsIDM1LCA3OCwgNzcsIDUsIDIyMywgMTE5LCAyMTgsIDU0LCA3OCwgNzcsIDUsIDIyMywgNywgMjE4LCAxNywgNzgsIAorICAgIDc3LCA1LCAyMjMsIDc5LCAyMTgsIDQ2LCA3OCwgNzcsIDUsIDIyMywgMTE3LCAyMTgsIDI0LCA3OCwgNzcsIDE3LCAxMDIsIAorICAgIDc4LCA3NywgMTcsIDEwNSwgNzgsIDc3LCAxNywgMTQ3LCA3OCwgNzcsIDE3LCAxNDksIDc4LCA3NywgMTcsIDE2NCwgNzgsIAorICAgIDc3LCAxNywgMTg3LCA3OCwgNzcsIDE3LCAyMTAsIDEzNSwgNzgsIDc3LCAxNywgMTkyLCA3OCwgNzcsIDE3LCAyMTksIDExMywgCisgICAgNzgsIDc3LCAzOCwgNDEsIDIwNiwgMTg4LCA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxNjEsIDc4LCA3NywgMzgsIDQxLCAyMzMsIAorICAgIDgwLCA3OCwgNzcsIDM4LCA0MSwgMjA2LCA0OCwgNzgsIDc3LCAzOCwgNDEsIDIwNiwgMTY3LCAyMDYsIDQ4LCA3OCwgNzcsIAorICAgIDM4LCA0MSwgMjMzLCA4MywgMjA2LCA0OCwgNzgsIDc3LCAzOCwgNDEsIDIyMSwgMTY3LCAyNTEsIDIyNywgNiwgMSwgMjUxLCAKKyAgICAxMzAsIDI1MSwgMjI3LCA2LCAxLCAyNDIsIDU1LCAyNTEsIDIyNywgNiwgMSwgMjI1LCAxNzMsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMjEsIDE4MCwgMjUxLCAyMjcsIDYsIDEsIDI0OSwgMTM2LCAyNTEsIDIyNywgNiwgMSwgMjA5LCAxMzMsIDI1MSwgMjI3LCAKKyAgICA2LCAxLCAyMTYsIDczLCAyNTEsIDIyNywgNiwgMSwgMjQ4LCAxOTYsIDI1MSwgMjI3LCA2LCAxLCAyMTMsIDI1MiwgMjUxLCAKKyAgICAyMjcsIDYsIDEsIDcyLCAyNTEsIDIyNywgNiwgMSwgMjM3LCAxOTUsIDI1MSwgMjI3LCA2LCAxLCA3MCwgMjUxLCAyMjcsIDYsIAorICAgIDEsIDc0LCAyNTEsIDIyNywgNiwgMSwgMjQxLCAxMDAsIDI1MSwgMjI3LCA2LCAxLCAyMDAsIDEwLCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjAxLCA3MiwgMjUxLCAyMjcsIDYsIDEsIDIxOCwgODksIDI1MSwgMjI3LCA2LCAxLCAyMjcsIDg2LCAyNTEsIDIyNywgNiwgCisgICAgMSwgMTgzLCAyNTEsIDIyNywgNiwgMSwgNjYsIDI1MSwgMjI3LCA2LCAxLCAyMjcsIDE5OSwgMjUxLCAyMjcsIDYsIDEsIAorICAgIDI0NiwgMjM2LCAyNTEsIDIyNywgNiwgMSwgMTQ0LCAyNTEsIDIyNywgNiwgMSwgMjE0LCAxNTcsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMzYsIDg5LCAyNTEsIDIyNywgNiwgMSwgMjE4LCA2MCwgMjUxLCAyMjcsIDYsIDEsIDIwNCwgMjE1LCAyNTEsIDIyNywgNiwgCisgICAgMSwgMjE5LCAxNTQsIDI1MSwgMjI3LCA2LCAxLCAyMDMsIDkwLCAyNTEsIDIyNywgNiwgMSwgMjI2LCAyMDcsIDI1MSwgMjI3LCAKKyAgICA2LCAxLCAyMzYsIDI5LCAyNTEsIDIyNywgNiwgMSwgMTk5LCAxMDMsIDI1MSwgMjI3LCA2LCAxLCAyMjYsIDQxLCAyNTEsIAorICAgIDIyNywgNiwgMSwgMjEwLCAxMTQsIDI1MSwgMjI3LCA0LCAxLCAyNTEsIDEzMCwgMjUxLCAyMjcsIDQsIDEsIDI0MiwgNTUsIAorICAgIDI1MSwgMjI3LCA0LCAxLCAyMjUsIDE3MywgMjUxLCAyMjcsIDQsIDEsIDIyMSwgMTgwLCAyNTEsIDIyNywgNCwgMSwgMjQ5LCAKKyAgICAxMzYsIDI1MSwgMjI3LCA0LCAxLCAyMDksIDEzMywgMjUxLCAyMjcsIDQsIDEsIDIxNiwgNzMsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyNDgsIDE5NiwgMjUxLCAyMjcsIDQsIDEsIDIxMywgMjUyLCAyNTEsIDIyNywgNCwgMSwgNzIsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMzcsIDE5NSwgMjUxLCAyMjcsIDQsIDEsIDcwLCAyNTEsIDIyNywgNCwgMSwgNzQsIDI1MSwgMjI3LCA0LCAxLCAyNDEsIAorICAgIDEwMCwgMjUxLCAyMjcsIDQsIDEsIDIwMCwgMTAsIDI1MSwgMjI3LCA0LCAxLCAyMDEsIDcyLCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjE4LCA4OSwgMjUxLCAyMjcsIDQsIDEsIDIyNywgODYsIDI1MSwgMjI3LCA0LCAxLCAxODMsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICA2NiwgMjUxLCAyMjcsIDQsIDEsIDIyNywgMTk5LCAyNTEsIDIyNywgNCwgMSwgMjQ2LCAyMzYsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAxNDQsIDI1MSwgMjI3LCA0LCAxLCAyMTQsIDE1NywgMjUxLCAyMjcsIDQsIDEsIDIzNiwgODksIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMTgsIDYwLCAyNTEsIDIyNywgNCwgMSwgMjA0LCAyMTUsIDI1MSwgMjI3LCA0LCAxLCAyMTksIDE1NCwgMjUxLCAyMjcsIDQsIAorICAgIDEsIDIwMywgOTAsIDI1MSwgMjI3LCA0LCAxLCAyMjYsIDIwNywgMjUxLCAyMjcsIDQsIDEsIDIzNiwgMjksIDI1MSwgMjI3LCAKKyAgICA0LCAxLCAxOTksIDEwMywgMjUxLCAyMjcsIDQsIDEsIDIyNiwgNDEsIDI1MSwgMjI3LCA0LCAxLCAyMTAsIDExNCwgMjUxLCAKKyAgICAyMjcsIDI1MSwgMTMxLCAyMjQsIDI1MCwgMjUxLCAyMjcsIDIyLCAyMjQsIDI1MCwgMjUxLCAyMjcsIDIzNiwgMywgODEsIAorICAgIDI1MSwgMjI3LCAyMzQsIDIwMywgMjUxLCAyMjcsIDExMSwgMjIxLCAxMjYsIDI1MSwgMjI3LCAyMzYsIDQsIDExMSwgMjIxLCAKKyAgICAxMjYsIDI1MSwgMjI3LCAyMTgsIDEwMCwgMjUxLCAyMjcsIDE3LCAxOTksIDgxLCAyNTEsIDIyNywgMTcsIDEwMiwgMjUxLCAKKyAgICAyMjcsIDE3LCAxMDUsIDI1MSwgMjI3LCAxNywgMTQ3LCAyNTEsIDIyNywgMTcsIDE0OSwgMjUxLCAyMjcsIDE3LCAxNjQsIAorICAgIDI1MSwgMjI3LCAxNywgMTg3LCAyNTEsIDIyNywgMTcsIDIxMCwgMTM1LCAyNTEsIDIyNywgMTcsIDE5MiwgMjUxLCAyMjcsIAorICAgIDE3LCAyMTksIDExMywgMjUxLCAyMjcsIDgyLCAyMzgsIDQzLCA4MSwgMjUxLCAyMjcsIDgyLCAyMTQsIDc5LCA4MSwgOSwgCisgICAgMTMsIDI1MSwgMTQyLCA5LCAxMywgMjQ4LCAyNDAsIDksIDEzLCAyMjcsIDIyNCwgOSwgMTMsIDI0MiwgMjksIDksIDEzLCAKKyAgICAyMDEsIDcyLCA5LCAxMywgMTk5LCAxMDUsIDksIDEzLCAyMzQsIDIyNCwgOSwgMTMsIDIwNywgOSwgOSwgMTMsIDIwMCwgNDYsIAorICAgIDksIDEzLCAyMjcsIDg2LCA5LCAxMywgMjI1LCA5MSwgOSwgMTMsIDIyMiwgNjEsIDksIDEzLCAyMTgsIDIyNywgOSwgMTMsIAorICAgIDIxMSwgMTg2LCA5LCAxMywgMjUxLCAxNzEsIDksIDEzLCAyMzcsIDEzNCwgOSwgMTMsIDIxMiwgNTYsIDksIDEzLCAyMTQsIAorICAgIDE1MiwgOSwgMTMsIDIxMywgMTU0LCA5LCAxMywgMjEwLCA2MSwgOSwgMTMsIDIwNiwgMTgzLCA5LCAxMywgMjA2LCAxMDIsIAorICAgIDksIDEzLCAyMjYsIDIwMywgOSwgMTMsIDIwNiwgMTE0LCA5LCAxMywgMjQyLCA1MiwgOSwgMTMsIDE5OSwgMTA4LCA5LCAxMywgCisgICAgMjM1LCAxOTQsIDksIDEzLCAyNDAsIDE4MSwgMjQ4LCAyNDAsIDksIDEzLCAyNDAsIDE4MSwgMjE4LCAyMjcsIDksIDEzLCAKKyAgICAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEzLCAyNDAsIDE4MSwgMjE0LCAxNTIsIDksIDEzLCA4MiwgMjQ4LCAyNDAsIDksIAorICAgIDEzLCA4MiwgMjI3LCAyMjQsIDksIDEzLCA4MiwgMjM0LCAxMTUsIDksIDEzLCA4MiwgMjM0LCAyMjQsIDksIDEzLCA4MiwgCisgICAgMjAwLCA0NiwgOSwgMTMsIDgyLCAyMjcsIDg2LCA5LCAxMywgODIsIDIyNSwgOTEsIDksIDEzLCA4MiwgMjIyLCA2MSwgOSwgCisgICAgMTMsIDgyLCAyMTgsIDIyNywgOSwgMTMsIDgyLCAyMTEsIDE4NiwgOSwgMTMsIDgyLCAyNTEsIDE3MSwgOSwgMTMsIDgyLCAKKyAgICAyMzcsIDEzNCwgOSwgMTMsIDgyLCAyMTIsIDU2LCA5LCAxMywgODIsIDIxNCwgMTUyLCA5LCAxMywgODIsIDIxMCwgNjEsIDksIAorICAgIDEzLCA4MiwgMjA2LCAxODMsIDksIDEzLCA4MiwgMjA2LCAxMDIsIDksIDEzLCA4MiwgMjI2LCAyMDMsIDksIDEzLCA4MiwgCisgICAgMjQyLCA1MiwgOSwgMTMsIDgyLCAyMzUsIDE5NCwgOSwgMTMsIDIwNywgNSwgMjI3LCAyMjQsIDksIDEzLCAyMDcsIDUsIAorICAgIDIzNCwgMjI0LCA5LCAxMywgMjA3LCA1LCAyMDAsIDQ2LCA5LCAxMywgMjA3LCA1LCAyMjUsIDkxLCA5LCAxMywgMjA3LCA1LCAKKyAgICAyMTgsIDIyNywgOSwgMTMsIDIwNywgNSwgMjExLCAxODYsIDksIDEzLCAyMDcsIDUsIDI1MSwgMTcxLCA5LCAxMywgMjA3LCAKKyAgICA1LCAyMTIsIDU2LCA5LCAxMywgMjA3LCA1LCAyMTQsIDE1MiwgOSwgMTMsIDIwNywgNSwgMjEwLCA2MSwgOSwgMTMsIDIwNywgCisgICAgNSwgMjI2LCAyMDMsIDksIDEzLCAyMDcsIDUsIDI0MiwgNTIsIDksIDEzLCAyMDcsIDUsIDIzNSwgMTk0LCA5LCAxMywgMjA3LCAKKyAgICA1LCAyNDAsIDE4MSwgMjE4LCAyMjcsIDksIDEzLCAyMDcsIDUsIDI0MCwgMTgxLCAyMTQsIDE1MiwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDI0OCwgMjQwLCA5LCAxMywgMjA4LCA1NSwgMjI3LCAyMjQsIDksIDEzLCAyMDgsIDU1LCAyMzQsIDExNSwgOSwgMTMsIDIwOCwgCisgICAgNTUsIDIzNCwgMjI0LCA5LCAxMywgMjA4LCA1NSwgMjA3LCA5LCA5LCAxMywgMjA4LCA1NSwgMjAwLCA0NiwgOSwgMTMsIAorICAgIDIwOCwgNTUsIDIyNywgODYsIDksIDEzLCAyMDgsIDU1LCAyMjIsIDYxLCA5LCAxMywgMjA4LCA1NSwgMjE4LCAyMjcsIDksIAorICAgIDEzLCAyMDgsIDU1LCAyMTEsIDE4NiwgOSwgMTMsIDIwOCwgNTUsIDI1MSwgMTcxLCA5LCAxMywgMjA4LCA1NSwgMjM3LCAKKyAgICAxMzQsIDksIDEzLCAyMDgsIDU1LCAyMTIsIDU2LCA5LCAxMywgMjA4LCA1NSwgMjE0LCAxNTIsIDksIDEzLCAyMDgsIDU1LCAKKyAgICAyMTAsIDYxLCA5LCAxMywgMjA4LCA1NSwgMjA2LCAxODMsIDksIDEzLCAyMDgsIDU1LCAyMDYsIDEwMiwgOSwgMTMsIDIwOCwgCisgICAgNTUsIDIyNiwgMjAzLCA5LCAxMywgMjA4LCA1NSwgMjQyLCA1MiwgOSwgMTMsIDIwOCwgNTUsIDE5OSwgMTA4LCA5LCAxMywgCisgICAgMjA4LCA1NSwgMjM1LCAxOTQsIDksIDEzLCAyMDgsIDU1LCAyNDAsIDE4MSwgMjQ4LCAyNDAsIDksIDEzLCAyMDgsIDU1LCAKKyAgICAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEzLCAyMjQsIDczLCAyNTEsIDE0MiwgOSwgMTMsIDIyNCwgNzMsIDI0OCwgMjQwLCAKKyAgICA5LCAxMywgMjI0LCA3MywgMjI3LCAyMjQsIDksIDEzLCAyMjQsIDczLCAyNDIsIDI5LCA5LCAxMywgMjI0LCA3MywgMjM0LCAKKyAgICAxMTUsIDksIDEzLCAyMjQsIDczLCAyMDEsIDcyLCA5LCAxMywgMjI0LCA3MywgMTk5LCAxMDUsIDksIDEzLCAyMjQsIDczLCAKKyAgICAyMzQsIDIyNCwgOSwgMTMsIDIyNCwgNzMsIDIwNywgOSwgOSwgMTMsIDIyNCwgNzMsIDIwMCwgNDYsIDksIDEzLCAyMjQsIAorICAgIDczLCAyMjUsIDkxLCA5LCAxMywgMjI0LCA3MywgMjIyLCA2MSwgOSwgMTMsIDIyNCwgNzMsIDIxOCwgMjI3LCA5LCAxMywgCisgICAgMjI0LCA3MywgMjExLCAxODYsIDksIDEzLCAyMjQsIDczLCAyNTEsIDE3MSwgOSwgMTMsIDIyNCwgNzMsIDIzNywgMTM0LCA5LCAKKyAgICAxMywgMjI0LCA3MywgMjEyLCA1NiwgOSwgMTMsIDIyNCwgNzMsIDIxNCwgMTUyLCA5LCAxMywgMjI0LCA3MywgMjEzLCAxNTQsIAorICAgIDksIDEzLCAyMjQsIDczLCAyMTAsIDYxLCA5LCAxMywgMjI0LCA3MywgMjA2LCAxODMsIDksIDEzLCAyMjQsIDczLCAyMDYsIAorICAgIDEwMiwgOSwgMTMsIDIyNCwgNzMsIDIyNiwgMjAzLCA5LCAxMywgMjI0LCA3MywgMjA2LCAxMTQsIDksIDEzLCAyMjQsIDczLCAKKyAgICAyNDIsIDUyLCA5LCAxMywgMjI0LCA3MywgMTk5LCAxMDgsIDksIDEzLCAyMjQsIDczLCAyMzUsIDE5NCwgOSwgMTMsIDE3NSwgCisgICAgMjQ4LCAyNDAsIDksIDEzLCAxNzUsIDIyNywgMjI0LCA5LCAxMywgMTc1LCAyNDIsIDI5LCA5LCAxMywgMTc1LCAyMDEsIDcyLCAKKyAgICA5LCAxMywgMTc1LCAxOTksIDEwNSwgOSwgMTMsIDE3NSwgMjM0LCAyMjQsIDksIDEzLCAxNzUsIDIwNywgOSwgOSwgMTMsIAorICAgIDE3NSwgMjAwLCA0NiwgOSwgMTMsIDE3NSwgMjI1LCA5MSwgOSwgMTMsIDE3NSwgMjIyLCA2MSwgOSwgMTMsIDE3NSwgMjE4LCAKKyAgICAyMjcsIDksIDEzLCAxNzUsIDIxMSwgMTg2LCA5LCAxMywgMTc1LCAyNTEsIDE3MSwgOSwgMTMsIDE3NSwgMjM3LCAxMzQsIDksIAorICAgIDEzLCAxNzUsIDIxMiwgNTYsIDksIDEzLCAxNzUsIDIxNCwgMTUyLCA5LCAxMywgMTc1LCAyMTMsIDE1NCwgOSwgMTMsIDE3NSwgCisgICAgMjEwLCA2MSwgOSwgMTMsIDE3NSwgMjA2LCAxODMsIDksIDEzLCAxNzUsIDIwNiwgMTAyLCA5LCAxMywgMTc1LCAyMjYsIAorICAgIDIwMywgOSwgMTMsIDE3NSwgMjA2LCAxMTQsIDksIDEzLCAxNzUsIDI0MiwgNTIsIDksIDEzLCAxNzUsIDE5OSwgMTA4LCA5LCAKKyAgICAxMywgMTc1LCAyMzUsIDE5NCwgOSwgMTMsIDIxNywgNDQsIDg0LCAzLCAxNTUsIDMsIDIwNiwgMjIzLCA5LCAxMywgMjE3LCAKKyAgICA0NCwgMTU1LCAzLCAyNDIsIDI5LCAyMjIsIDIwMCwgMTAzLCAyMzksIDE0LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAyMDgsIAorICAgIDI1NCwgMjAxLCAxNiwgMjIyLCAyMDAsIDEwMywgMjAxLCA0OCwgMjAxLCAxNiwgMjIyLCAyMDAsIDEwMywgMTU3LCAyMDEsIAorICAgIDE2LCAyMjIsIDIwMCwgMTAzLCAyMTMsIDE3MCwgMjM5LCAxNTgsIDIyMiwgMjAwLCAxMDMsIDIzNSwgNjQsIDIzOSwgMTU4LCAKKyAgICAyMjIsIDIwMCwgMTAzLCA2NCwgMjM5LCAxNTgsIDIyMiwgMjAwLCAxMDMsIDExMiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDEyMCwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDEyNiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIAorICAgIDIzNiwgMjI5LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjM3LCA2MSwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIwOSwgMTA2LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjEwLCAxMzYsIDc2LCAyNDcsIDE5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAyMzgsIDIzMiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDIxOSwgMTE0LCA3NiwgMjQ3LCAxOSwgCisgICAgMjIyLCAyMDAsIDEwMywgMTEyLCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMTIwLCA3NiwgMjQ5LCA4OSwgMjIyLCAKKyAgICAyMDAsIDEwMywgMTI2LCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjM2LCAyMjksIDc2LCAyNDksIDg5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjA5LCAxMDYsIDc2LCAyNDksIDg5LCAKKyAgICAyMjIsIDIwMCwgMTAzLCAyMTAsIDEzNiwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ5LCAKKyAgICA4OSwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAxMTIsIDc2LCAyNDYsIAorICAgIDE1MiwgMjIyLCAyMDAsIDEwMywgMTIwLCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDEyNiwgNzYsIDI0NiwgMTUyLCAKKyAgICAyMjIsIDIwMCwgMTAzLCAyMzYsIDIyOSwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ2LCAKKyAgICAxNTIsIDIyMiwgMjAwLCAxMDMsIDIwOSwgMTA2LCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxMCwgMTM2LCA3NiwgCisgICAgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxOSwgMTE0LCAKKyAgICA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxNSwgMTE2LCAyMjIsIDIwMCwgMTAzLCAyMTcsIDMxLCAyMjIsIDIwMCwgCisgICAgMTAzLCAyNDksIDkwLCAyMjIsIDIwMCwgMTAzLCAyNDYsIDE5MywgMjIyLCAyMDAsIDEwMywgMjA4LCAxOTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIwNywgMjMwLCAyMjIsIDIwMCwgMTAzLCAyNTAsIDEyNiwgMjIyLCAyMDAsIDEwMywgMjAxLCA3LCAyMjIsIDIwMCwgCisgICAgMTAzLCAyMjcsIDE1OSwgMjIyLCAyMDAsIDEwMywgMjQ5LCAxMjksIDE2NiwgMTAzLCAyMzMsIDE3NywgMjQ5LCAxMjksIAorICAgIDE2NiwgMTAzLCAyMzMsIDE3NSwgMTY2LCAxMDMsIDIzMywgMTc0LCAxNjYsIDEwMywgMjMzLCAxNzMsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE3MiwgMTY2LCAxMDMsIDIzMywgMTcxLCAxNjYsIDEwMywgMjMzLCAxNzAsIDE2NiwgMTAzLCAyMzMsIDE2OSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTY4LCAxNjYsIDEwMywgMjMzLCAxNjcsIDE2NiwgMTAzLCAyMzMsIDE2NiwgMTY2LCAxMDMsIAorICAgIDIzMywgMTY1LCAxNjYsIDEwMywgMjMzLCAxNjQsIDE2NiwgMTAzLCAyMzMsIDE2MywgMTY2LCAxMDMsIDIzMywgMTYyLCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNjEsIDE2NiwgMTAzLCAyMzMsIDE2MCwgMTY2LCAxMDMsIDIzMywgMTU5LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNTgsIDE2NiwgMTAzLCAyMzMsIDE1NywgMTY2LCAxMDMsIDIzMywgMTU2LCAxNjYsIDEwMywgMjMzLCAxNTUsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE1NCwgMTY2LCAxMDMsIDIzMywgMTUzLCAxNjYsIDEwMywgMjMzLCAxNTIsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE1MSwgMTY2LCAxMDMsIDIzMywgMTUwLCAxNjYsIDEwMywgMjMzLCAxNDksIDE2NiwgMTAzLCAyMzMsIDE0OCwgCisgICAgMTY2LCAxMDMsIDIzMywgMTQ3LCAxNjYsIDEwMywgMjMzLCAxNDYsIDE2NiwgMTAzLCAyMzMsIDE0NSwgMTY2LCAxMDMsIAorICAgIDIzMywgMTQ0LCAxNjYsIDEwMywgMjMzLCAxNDMsIDE2NiwgMTAzLCAyMzMsIDE0MiwgMTY2LCAxMDMsIDIzMywgMTQxLCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNDAsIDE2NiwgMTAzLCAyMzMsIDEzOSwgMTY2LCAxMDMsIDIzMywgMTM4LCAxNjYsIDEwMywgCisgICAgMjMzLCAxMzcsIDE2NiwgMTAzLCAyMzMsIDEzNiwgMTY2LCAxMDMsIDIzMywgMTM1LCAxNjYsIDEwMywgMjMzLCAxMzQsIAorICAgIDE2NiwgMTAzLCAyMzMsIDEzMywgMTY2LCAxMDMsIDIzMywgMTMyLCAxNjYsIDEwMywgMjMzLCAxMzEsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDEzMCwgMTY2LCAxMDMsIDIzMywgMTI5LCAxNjYsIDEwMywgMjMzLCAxMjgsIDE2NiwgMTAzLCAyMzMsIDEyNywgCisgICAgMTY2LCAxMDMsIDgzLCAyNDksIDEyOSwgMTY2LCAxMDMsIDIwMywgNDEsIDE2NiwgMTAzLCAyMDMsIDQwLCAxNjYsIDEwMywgCisgICAgMjAzLCAzOSwgMTY2LCAxMDMsIDIwMywgMzgsIDE2NiwgMTAzLCAyMDMsIDM3LCAxNjYsIDEwMywgMjAzLCAzNiwgMTY2LCAKKyAgICAxMDMsIDIwMywgMzUsIDE2NiwgMTAzLCAyMDMsIDM0LCAxNjYsIDEwMywgMjAzLCAzMywgMTY2LCAxMDMsIDIwMywgMzIsIAorICAgIDE2NiwgMTAzLCAyMDMsIDMxLCAxNjYsIDEwMywgMjAzLCAzMCwgMTY2LCAxMDMsIDIwMywgMjksIDE2NiwgMTAzLCAyMDMsIAorICAgIDI4LCAxNjYsIDEwMywgMjAzLCAyNywgMTY2LCAxMDMsIDIwMywgMjYsIDE2NiwgMTAzLCAyMDMsIDI1LCAxNjYsIDEwMywgCisgICAgMjAzLCAyNCwgMTY2LCAxMDMsIDIwMywgMjMsIDE2NiwgMTAzLCAyMDMsIDIyLCAxNjYsIDEwMywgMjAzLCAyMSwgMTY2LCAKKyAgICAxMDMsIDIwMywgMjAsIDE2NiwgMTAzLCAyMDMsIDE5LCAxNjYsIDEwMywgMjAzLCAxOCwgMTY2LCAxMDMsIDIwMywgMTcsIAorICAgIDE2NiwgMTAzLCAyMDMsIDE2LCAxNjYsIDEwMywgMjAzLCAxNSwgMTY2LCAxMDMsIDIwMywgMTQsIDE2NiwgMTAzLCAyMDMsIAorICAgIDEzLCAxNjYsIDEwMywgMjAzLCAxMiwgMTY2LCAxMDMsIDIwMywgMTEsIDE2NiwgMTAzLCAyMDMsIDEwLCAxNjYsIDEwMywgCisgICAgMjAzLCA5LCAxNjYsIDEwMywgMjAzLCA4LCAxNjYsIDEwMywgMjAzLCA3LCAxNjYsIDEwMywgMjAzLCA2LCAxNjYsIDEwMywgCisgICAgMjAzLCA1LCAxNjYsIDEwMywgMjAzLCA0LCAxNjYsIDEwMywgMjAzLCAzLCAxNjYsIDEwMywgMjAzLCAyLCAxNjYsIDEwMywgCisgICAgMjAzLCAxLCAxNjYsIDEwMywgMjAzLCAwLCAxNjYsIDEwMywgMjAyLCAyNTUsIDE2NiwgMTAzLCAyMDIsIDI1NCwgMTY2LCAKKyAgICAxMDMsIDIwMiwgMjUzLCAxNjYsIDEwMywgMjAyLCAyNTIsIDE2NiwgMTAzLCAyMDIsIDI1MSwgMTY2LCAxMDMsIDIwMiwgCisgICAgMjUwLCAxNjYsIDEwMywgMjAyLCAyNDksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjQ5LCAxMjksIDIxNSwgMTI1LCAyNDcsIAorICAgIDEzNCwgMjUxLCAyNDUsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIDc2LCAyMDgsIDI0MSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAxMjYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIDIwOCwgCisgICAgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDksIAorICAgIDEwNiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTksIDExNCwgNzYsIDIwOCwgCisgICAgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI3LCAKKyAgICAyNDYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgMTQ1LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjUxLCAyNDUsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIAorICAgIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjYsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMzYsIDIyOSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyMzQsIDEyNSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDksIDEwNiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgCisgICAgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMTksIDExNCwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjM0LCAxMjUsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjI3LCAyNDYsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgCisgICAgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIyNiwgMTQ1LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEzLCAxNzAsIDIyNywgMTU5LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDI1MSwgMjQ1LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIDc2LCAyNDEsIDYzLCAKKyAgICAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM2LCAyMjksIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwOSwgMTA2LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIDI0MSwgNjMsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxOSwgMTE0LCA3NiwgCisgICAgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjI3LCAyNDYsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAyNDEsIDYzLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIxNCwgODEsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgMTQ1LCA3NiwgCisgICAgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCA2MywgMjI3LCAxNTksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjUxLCAyNDUsIAorICAgIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMTI2LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA5LCAxMDYsIDc2LCAyNDYsIAorICAgIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzgsIAorICAgIDIzMiwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE5LCAxMTQsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjcsIDI0NiwgNzYsIDI0NiwgCisgICAgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE0LCAKKyAgICA4MSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDY0LCAyMjcsIDE1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA2MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDYsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA0NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ0LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNDMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0MiwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQxLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDU4LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTcsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NiwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDU1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTQsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA1MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDUyLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTEsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA1MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ4LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNDcsIDE3LCAxOTksIDgyLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDE5OSwgODIsIDI0NiwgNzAsIDE3LCAxMTIsIAorICAgIDI0NiwgNzAsIDE3LCAxMjAsIDI0NiwgNzAsIDE3LCAxMjYsIDI0NiwgNzAsIDE3LCAyMzYsIDIyOSwgMjQ2LCA3MCwgMTcsIAorICAgIDIzNywgNjEsIDI0NiwgNzAsIDE3LCAyMDksIDEwNiwgMjQ2LCA3MCwgMTcsIDIxMCwgMTM2LCAyNDYsIDcwLCAxNywgMjM4LCAKKyAgICAyMzIsIDI0NiwgNzAsIDE3LCAyMTksIDExNCwgMjQ2LCA3MCwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTk5LCA4MSwgMjQxLCAKKyAgICAxNywgMTg5LCA0NCwgNDMsIDE3LCAxOTksIDgxLCAxMDYsIDgsIDYsIDEsIDYyLCAxMDYsIDgsIDYsIDEsIDI1MCwgMTAzLCAKKyAgICAxMDYsIDgsIDYsIDEsIDI0NywgMjIzLCAxMDYsIDgsIDYsIDEsIDI0MiwgMTUzLCAxMDYsIDgsIDYsIDEsIDcyLCAxMDYsIDgsIAorICAgIDYsIDEsIDIzOCwgNSwgMTA2LCA4LCA2LCAxLCAyMzYsIDE1NiwgMTA2LCA4LCA2LCAxLCAyMzQsIDI0NywgMTA2LCA4LCA2LCAKKyAgICAxLCA3MCwgMTA2LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTA2LCA4LCA2LCAxLCAyMjcsIDExOCwgMTA2LCA4LCA2LCAxLCAxNTYsIAorICAgIDEwNiwgOCwgNiwgMSwgMjIzLCAyNDMsIDEwNiwgOCwgNiwgMSwgMjIwLCAyMTQsIDEwNiwgOCwgNiwgMSwgNzQsIDEwNiwgOCwgCisgICAgNiwgMSwgMjE2LCAyMjYsIDEwNiwgOCwgNiwgMSwgMjE0LCAxNjcsIDEwNiwgOCwgNiwgMSwgMTQ2LCAxMDYsIDgsIDYsIDEsIAorICAgIDIxMiwgMTIyLCAxMDYsIDgsIDYsIDEsIDIwNywgODMsIDEwNiwgOCwgNiwgMSwgNjYsIDEwNiwgOCwgNiwgMSwgMjAzLCAKKyAgICAxNjgsIDEwNiwgOCwgNiwgMSwgMjAxLCAxNDcsIDEwNiwgOCwgNiwgMSwgMjAwLCAxOTUsIDEwNiwgOCwgNiwgMSwgMjAwLCAKKyAgICAxMjMsIDEwNiwgOCwgNiwgMSwgMTk5LCAxNTcsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCA4LCA2LCAxLCAyMTIsIAorICAgIDEyMiwgNDQsIDM5LCA4LCA2LCAxLCAyNDcsIDIyMywgNDQsIDM5LCA4LCA2LCAxLCAxNDYsIDQ0LCAyNDcsIDc3LCA0NCwgCisgICAgMjAwLCAxOTcsIDk1LCA4LCA2LCAxLCA2MiwgOTUsIDgsIDYsIDEsIDI1MCwgMTAzLCA5NSwgOCwgNiwgMSwgMjQ3LCAyMjMsIAorICAgIDk1LCA4LCA2LCAxLCAyNDIsIDE1MywgOTUsIDgsIDYsIDEsIDcyLCA5NSwgOCwgNiwgMSwgMjM4LCA1LCA5NSwgOCwgNiwgMSwgCisgICAgMjM2LCAxNTYsIDk1LCA4LCA2LCAxLCAyMzQsIDI0NywgOTUsIDgsIDYsIDEsIDcwLCA5NSwgOCwgNiwgMSwgMjI3LCAyNTEsIAorICAgIDk1LCA4LCA2LCAxLCAyMjcsIDExOCwgOTUsIDgsIDYsIDEsIDE1NiwgOTUsIDgsIDYsIDEsIDIyMywgMjQzLCA5NSwgOCwgNiwgCisgICAgMSwgMjIwLCAyMTQsIDk1LCA4LCA2LCAxLCA3NCwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCA5NSwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDk1LCA4LCA2LCAxLCAxNDYsIDk1LCA4LCA2LCAxLCAyMTIsIDEyMiwgOTUsIDgsIDYsIDEsIDIwNywgODMsIDk1LCAKKyAgICA4LCA2LCAxLCA2NiwgOTUsIDgsIDYsIDEsIDIwMywgMTY4LCA5NSwgOCwgNiwgMSwgMjAxLCAxNDcsIDk1LCA4LCA2LCAxLCAKKyAgICAyMDAsIDE5NSwgOTUsIDgsIDYsIDEsIDIwMCwgMTIzLCA5NSwgOCwgNiwgMSwgMTk5LCAxNTcsIDk1LCAyMzMsIDY5LCA5NSwgCisgICAgMjIwLCAyMzgsIDk1LCAyMTEsIDIwNCwgOTUsIDIwOCwgMTgyLCA5NSwgMjE1LCA0NSwgOTUsIDIwMSwgNjUsIDE4OSwgNDQsIAorICAgIDgsIDYsIDEsIDYyLCAxODksIDQ0LCA4LCA2LCAxLCAyNTAsIDEwMywgMTg5LCA0NCwgOCwgNiwgMSwgMjQ3LCAyMjMsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDI0MiwgMTUzLCAxODksIDQ0LCA4LCA2LCAxLCA3MiwgMTg5LCA0NCwgOCwgNiwgMSwgMjM4LCA1LCAKKyAgICAxODksIDQ0LCA4LCA2LCAxLCAyMzYsIDE1NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjM0LCAyNDcsIDE4OSwgNDQsIDgsIDYsIDEsIAorICAgIDcwLCAxODksIDQ0LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTg5LCA0NCwgOCwgNiwgMSwgMjI3LCAxMTgsIDE4OSwgNDQsIDgsIAorICAgIDYsIDEsIDE1NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjIzLCAyNDMsIDE4OSwgNDQsIDgsIDYsIDEsIDIyMCwgMjE0LCAxODksIAorICAgIDQ0LCA4LCA2LCAxLCA3NCwgMTg5LCA0NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDE4OSwgNDQsIDgsIDYsIDEsIDIxNCwgMTY3LCAKKyAgICAxODksIDQ0LCA4LCA2LCAxLCAxNDYsIDE4OSwgNDQsIDgsIDYsIDEsIDIxMiwgMTIyLCAxODksIDQ0LCA4LCA2LCAxLCAyMDcsIAorICAgIDgzLCAxODksIDQ0LCA4LCA2LCAxLCA2NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjAzLCAxNjgsIDE4OSwgNDQsIDgsIDYsIDEsIAorICAgIDIwMSwgMTQ3LCAxODksIDQ0LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTg5LCA0NCwgOCwgNiwgMSwgMjAwLCAxMjMsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDE5OSwgMTU3LCAyMTMsIDIyMCwgMjIyLCA4MiwgNTQsIDIxMywgMjIwLCAyMjIsIDc5LCA1NCwgMTg5LCAKKyAgICA5NSwgOCwgNiwgMSwgNjIsIDE4OSwgOTUsIDgsIDYsIDEsIDI1MCwgMTAzLCAxODksIDk1LCA4LCA2LCAxLCAyNDcsIDIyMywgCisgICAgMTg5LCA5NSwgOCwgNiwgMSwgMjQyLCAxNTMsIDE4OSwgOTUsIDgsIDYsIDEsIDcyLCAxODksIDk1LCA4LCA2LCAxLCAyMzgsIAorICAgIDUsIDE4OSwgOTUsIDgsIDYsIDEsIDIzNiwgMTU2LCAxODksIDk1LCA4LCA2LCAxLCAyMzQsIDI0NywgMTg5LCA5NSwgOCwgNiwgCisgICAgMSwgNzAsIDE4OSwgOTUsIDgsIDYsIDEsIDIyNywgMjUxLCAxODksIDk1LCA4LCA2LCAxLCAyMjcsIDExOCwgMTg5LCA5NSwgCisgICAgOCwgNiwgMSwgMTU2LCAxODksIDk1LCA4LCA2LCAxLCAyMjMsIDI0MywgMTg5LCA5NSwgOCwgNiwgMSwgMjIwLCAyMTQsIAorICAgIDE4OSwgOTUsIDgsIDYsIDEsIDc0LCAxODksIDk1LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA5NSwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDE4OSwgOTUsIDgsIDYsIDEsIDE0NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjEyLCAxMjIsIDE4OSwgOTUsIDgsIDYsIDEsIAorICAgIDIwNywgODMsIDE4OSwgOTUsIDgsIDYsIDEsIDY2LCAxODksIDk1LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTg5LCA5NSwgOCwgNiwgCisgICAgMSwgMjAxLCAxNDcsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMCwgMTk1LCAxODksIDk1LCA4LCA2LCAxLCAyMDAsIDEyMywgMTg5LCAKKyAgICA5NSwgOCwgNiwgMSwgMTk5LCAxNTcsIDI0MiwgMjMyLCAxODksIDk1LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA5NSwgCisgICAgMjMyLCAyMzMsIDE4OSwgOTUsIDE3MiwgMTg5LCA5NSwgMjEyLCA2NCwgMTg5LCA5NSwgMjUyLCA4OSwgMTg5LCA5NSwgMjAxLCAKKyAgICA2NSwgNTIsIDI0MCwgMjMwLCA5NSwgMjQ2LCAxMzYsIDk1LCAyNDMsIDI2LCA5NSwgMjM2LCAyMTAsIDk1LCAyMzIsIDIyNCwgCisgICAgOTUsIDIyMCwgNywgOTUsIDIxOSwgMjU1LCA5NSwgMjE3LCA5OCwgOTUsIDIwOSwgNSwgOTUsIDExNSwgMywgMjM4LCA0MywgCisgICAgODEsIDk1LCAyMDIsIDE2OSwgOTUsIDEyNiwgMjQyLCAxNTMsIDk1LCAyMTEsIDE5NiwgMjExLCAyMDksIDk1LCAxMjAsIAorICAgIDIyNywgMTE4LCA5NSwgMjM2LCAyMjksIDIyNywgMTE4LCA5NSwgMjM4LCAyMzIsIDIyNywgMTE4LCA5NSwgMjM3LCA2MSwgCisgICAgMjE1LCAxMDAsIDEwMiwgOTUsIDIxMCwgMTM2LCAyMTUsIDEwMCwgMTAyLCA5NSwgMjA0LCAxNDksIDIxNSwgMTAwLCAxMDUsIAorICAgIDk1LCAyMDksIDkzLCAyMTYsIDIyNiwgOTUsIDExMiwgMjMzLCA4MywgMjA0LCAxNjAsIDIxNiwgMjI2LCA5NSwgOCwgNCwgMSwgCisgICAgMjQyLCAxNTMsIDk1LCAyMzQsIDE0MiwgOTUsIDIzNCwgMTQxLCA5NSwgMjM0LCA3NCwgOTUsIDIyNCwgNjYsIDk1LCAyMDksIAorICAgIDIwMSwgOTUsIDIwNCwgMjQsIDk1LCAyMDIsIDE5MCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNjIsIDIxMywgMTYyLCAKKyAgICAyMjgsIDEwMCwgMTYsIDEsIDI1MCwgMTAzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyNDcsIDIyMywgMjEzLCAxNjIsIAorICAgIDIyOCwgMTAwLCAxNiwgMSwgMjQyLCAxNTMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDcyLCAyMTMsIDE2MiwgMjI4LCAKKyAgICAxMDAsIDE2LCAxLCAyMzgsIDUsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIzNiwgMTU2LCAyMTMsIDE2MiwgMjI4LCAKKyAgICAxMDAsIDE2LCAxLCAyMzQsIDI0NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzAsIDIxMywgMTYyLCAyMjgsIDEwMCwgCisgICAgMTYsIDEsIDIyNywgMjUxLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMjcsIDExOCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAKKyAgICAxNiwgMSwgMTU2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMjMsIDI0MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgCisgICAgMSwgMjIwLCAyMTQsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDc0LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAKKyAgICAyMTYsIDIyNiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjE0LCAxNjcsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIAorICAgIDE0NiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjEyLCAxMjIsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwNywgCisgICAgODMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDY2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDMsIDE2OCwgCisgICAgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAxLCAxNDcsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMCwgMTk1LCAKKyAgICAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDAsIDEyMywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMTk5LCAxNTcsIAorICAgIDUyLCAxNzcsIDIzMywgMjAxLCA5NSwgNjksIDIyNiwgNzYsIDk1LCA2OSwgMjEyLCA2NCwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxNjksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTczLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MSwgOTUsIDY5LCAKKyAgICAyNDEsIDE3NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc1LCA5NSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE0NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzQsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgCisgICAgMTg3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTQsIDk1LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTYzLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzAsIAorICAgIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MiwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxODUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1MywgOTUsIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNDYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIAorICAgIDE3OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY3LCA5NSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE2NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxOTEsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTkwLCAKKyAgICA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzEsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTg5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjYsIDk1LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTQ1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAKKyAgICAxNTAsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3OSwgOTUsIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNTcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTU5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MCwgCisgICAgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTIsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgzLCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE3NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDMsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTU4LCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE5MCwgCisgICAgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxODgsIDIwNSwgMTQ2LCAyMTAsIDU1LCAKKyAgICAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTcyLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE1NSwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjgsIDIwNSwgCisgICAgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCAKKyAgICA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MiwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxNjQsIDQ0LCAxOTgsIDE5OCwgMjUxLCAyMjMsIDQ0LCAxOTgsIDE5OCwgMjUxLCAyNDksIDI0MiwgMTY0LCAyMzcsIAorICAgIDExLCAyNDYsIDExMCwgMjA0LCA5LCAyMTksIDEzMCwgMywgMjA4LCAxMDYsIDIwNywgMjIzLCAxMTksIDIyMSwgNjIsIDIwNywgCisgICAgMjIyLCAyNDYsIDE0MCwgMjUwLCAxNTYsIDIzOSwgMTExLCAyMDcsIDIyMSwgMTE5LCAyNDgsIDI1LCAyMTMsIDIyMSwgMjQ4LCAKKyAgICA1MSwgMjUwLCAxNTYsIDIxOSwgMTI5LCAyMDEsIDgzLCAyMDEsIDc3LCAyMDIsIDE4NCwgMjIxLCAxNzIsIDIwMSwgNjcsIAorICAgIDIzOSwgMTgsIDIzNSwgMTI0LCAyMzgsIDU5LCAyMzksIDE4LCAyMzUsIDEyNCwgMjUxLCA5MiwgMjM5LCAxOCwgMjM1LCAKKyAgICAxMjQsIDI1MCwgMTc0LCAyMzUsIDEyNCwgMywgMjIyLCAzMSwgMjIwLCA4LCAyMjEsIDgyLCA5OSwgMjAxLCA2OSwgMjQyLCAKKyAgICAyNDQsIDIyMSwgODIsIDk5LCAyMzcsIDczLCAyMTQsIDg4LCAyMjEsIDgyLCA5OSwgMjAxLCA2OSwgMjM1LCAxNTcsIDIyMSwgCisgICAgODIsIDk5LCAyMzYsIDE4MywgMjIxLCA4MiwgOTksIDIwMSwgOTcsIDIzNSwgMTU3LCAyMjEsIDgyLCA5OSwgMjI1LCA2NCwgCisgICAgMjE0LCA4OCwgMjIxLCA4MiwgOTksIDIwMSwgOTcsIDI0MiwgMjQ0LCAyMjEsIDgyLCA5OSwgMjQyLCAyNDQsIDIyMSwgODEsIAorICAgIDIyMCwgOCwgMjIxLCA4MiwgMywgMjM3LCAxODksIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAKKyAgICAyMjUsIDY0LCAyMTQsIDg4LCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgMjM2LCAxODMsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAKKyAgICAyMDcsIDIyOSwgMywgMjM3LCAxODksIDIzNSwgMTIxLCAyMDgsIDEwOSwgMjA5LCAyNTUsIDIwOCwgMTA5LCAyMDYsIDk0LCAKKyAgICA2MywgMjM5LCAxNDUsIDY0LCAyMDcsIDIyOCwgNjQsIDIwNywgMjI5LCAzLCA0LCAyNDYsIDEwMSwgNjQsIDIwNywgMjI5LCAKKyAgICAyNDgsIDIzNywgMjQ2LCAxMDEsIDY0LCAyMDcsIDIyOSwgMjQ4LCAyMzcsIDI0NiwgMTAyLCAzLCAyMTMsIDIyMiwgMjQ2LCAKKyAgICAxMDIsIDMsIDIxMywgMjIyLCAyNDYsIDEwMiwgMywgMjA5LCAzNSwgMjQ2LCAxMDIsIDMsIDIyNCwgMTkzLCAyNDYsIDEwMiwgCisgICAgMywgMjA1LCAxNTAsIDIzNywgMTIsIDIwMSwgMTcsIDI0OCwgMTI4LCAyMzcsIDE4OSwgMjMzLCAxMTgsIDI0MCwgMjAwLCAKKyAgICAyMDcsIDE2LCAyNDgsIDEsIDI0NiwgMjQyLCAyMTEsIDE4OCwgMjM4LCA1MywgMjA1LCAxMDgsIDI0MSwgMTY5LCAyMDUsIAorICAgIDEwOCwgMjE2LCAxNzcsIDIwNSwgMTA4LCAyNDcsIDE4MywgMjMzLCAxMTgsIDIxNiwgMjksIDIwNCwgMjA1LCAyNDYsIDI0NiwgCisgICAgMjQ4LCAxMzEsIDIxMiwgMjMyLCAyMzQsIDczLCAyMDcsIDIyNiwgMjQ4LCAxMzEsIDIzOSwgMjIsIDc2LCAyMjIsIDE4OSwgCisgICAgMjM5LCAyMiwgNzYsIDIxMywgODMsIDIzNCwgMTAwLCAyMzYsIDIyOSwgMjI1LCAzNiwgMjQ2LCAxMDAsIDIyMiwgMTYyLCAKKyAgICAyMjUsIDM1LCAyMzcsIDE3MiwgMjI1LCAzNSwgMjI1LCAzNiwgMjM3LCAxOSwgMjI4LCAxMTgsIDIwMSwgMTYsIDIyMCwgCisgICAgMjQ3LCAyMDUsIDE3OCwgMjUwLCAxMzgsIDIzNSwgODEsIDIyMiwgNDksIDIwMSwgODEsIDIwNiwgMjM5LCAyMjUsIDUsIAorICAgIDI0OSwgODUsIDIxNSwgMTU3LCAyMTMsIDE3MCwgMjUxLCAxMCwgMjM1LCA2NCwgMjUxLCAxMCwgMjE2LCA2NywgMjE2LCA3MCwgCisgICAgMjQ2LCAyNDcsIDIwOCwgNjAsIDIzNCwgMjA4LCAyMDksIDY4LCA3NiwgMjE1LCAxMzcsIDIyMiwgNzIsIDIxNywgNzksIAorICAgIDI0OCwgMTEyLCAyMTUsIDU3LCAyMjUsIDE2LCAyMTMsIDg0LCAyNDIsIDI1MCwgMjEzLCA4NCwgMjQ5LCA5NywgMjQzLCAyOSwgCisgICAgMjEzLCA4MywgMjQyLCAxOTIsIDI2LCAyMTMsIDgzLCAyMDgsIDk0LCAyNDgsIDgyLCAyMDgsIDI0MCwgMjQ4LCA2MiwgMjM2LCAKKyAgICAyMDksIDIzNiwgMjA1LCAyMTIsIDI1MywgMjA3LCAxNzksIDIxNSwgNTksIDI0MiwgNywgMjE3LCAxMjMsIDIwNywgMTk3LCAKKyAgICAyMzYsIDIwNiwgMjA5LCAyMjYsIDIzNywgNzIsIDI0NywgMTc3LCAzLCAyMDcsIDE3MiwgMjQxLCAxMTIsIDIwOSwgMjMsIAorICAgIDIzMiwgMjMyLCAyNDIsIDI0OCwgMjEwLCA3MywgMjMyLCAyMzEsIDIzMiwgMjMyLCAyNDIsIDI0OCwgMjM5LCAxNzAsIDI0MywgCisgICAgMjgsIDI0NiwgMjA4LCAxNDgsIDI0NywgMTQ4LCAyMjQsIDkzLCAyNDIsIDE4MywgMjMzLCAxOTAsIDIxNSwgNjEsIDIwOSwgCisgICAgMjM5LCAyNDgsIDIxOCwgMjQ4LCA3OCwgMjE1LCA2MiwgNzYsIDIzNywgMSwgMjQzLCAyNywgMjM2LCAyNDYsIDI2LCAyMjYsIAorICAgIDk1LCAyMDYsIDE5OCwgMjAxLCAzLCAyMzQsIDE3NywgMjEyLCA0MSwgMjQ4LCA5NSwgMjYsIDI0MiwgMjAyLCAyMDEsIDEzLCAKKyAgICAyMzUsIDEyOCwgMjQ2LCA4OCwgMjM1LCAxMjgsIDIwNSwgNjMsIDIzOSwgMTUxLCAyNDgsIDI0OCwgMjIxLCAzMCwgMjQ2LCAKKyAgICAxMTcsIDI0OCwgMjQ4LCAyMjEsIDI5LCAyNDksIDEzMiwgMjQ4LCA5NCwgMjM2LCAyNDYsIDI2LCAyMjYsIDk2LCAzLCAyMTUsIAorICAgIDEyNiwgMjQ4LCA5NSwgMywgMjE1LCA3NCwgMjQzLCAxNywgMjE1LCA3NiwgMjEzLCA4NSwgMjAwLCAyMjcsIDIxNSwgMjAsIAorICAgIDI0OCwgMTU5LCAyNDcsIDE3NiwgMjI3LCAyNDUsIDI0NiwgMjAwLCAyMDUsIDEwOCwgMjM3LCAxNTUsIDI0NiwgMTk5LCAKKyAgICAyMzcsIDc1LCAyMzcsIDc2LCAyMDgsIDIzOCwgMjQ5LCA5NiwgMjE2LCAxMDUsIDIxNSwgNzUsIDI0MywgNjUsIDI0OSwgOTcsIAorICAgIDIwNiwgMjQzLCAyMDUsIDEwOCwgMjQyLCAyMzIsIDIzNywgNDcsIDIxNSwgMTU4LCAyNDEsIDE2NiwgMjI3LCAyMzYsIDI0MCwgCisgICAgMTkzLCAyNDcsIDEyMywgMjA4LCA1OSwgMjAxLCAxNywgMjQ2LCAyMjQsIDIyMSwgODIsIDIwMiwgMjIxLCAyNDcsIDQyLCAKKyAgICAyMTEsIDIyMiwgMjExLCAyNDksIDIzNSwgODcsIDI0NywgMTQ0LCAyMzQsIDEyOCwgMywgMjA1LCAyMjQsIDIxNywgNzksIAorICAgIDIwNiwgMTA3LCAyMjUsIDI4LCAyNDgsIDg4LCA3NiwgMjM3LCAyMywgMjIxLCAxNzQsIDIyMiwgNjksIDIxMywgMTQyLCAKKyAgICAyMTMsIDg1LCAzMiwgMjI2LCAyMTMsIDMsIDIyNywgMjQ0LCAyMDgsIDMwLCAyMjEsIDIwOCwgMjI0LCAyMjksIDIwOSwgNjYsIAorICAgIDI0MywgMzQsIDIyNiwgOTIsIDI0OSwgNCwgMjUwLCAxODQsIDMyLCAyMTgsIDIwNCwgMjQ5LCA0LCAyNDEsIDExOCwgMzIsIAorICAgIDIxOCwgMjA0LCAyMzcsIDkwLCAyMzYsIDIxNCwgMjUxLCAyMjYsIDIwNiwgOSwgMjQ3LCAxMjQsIDIzMywgMTIwLCAyMzcsIAorICAgIDEyMSwgMjAxLCAzNywgMjEyLCAyNDMsIDI0NiwgODksIDIzNywgNjcsIDIxNSwgOTEsIDI2LCAyMzcsIDcxLCAyMjEsIDIwOCwgCisgICAgMjIxLCA0OCwgMjQ3LCAxNjIsIDI0NiwgMTU5LCAyMzQsIDEzMiwgMjUwLCAxOTMsIDIxNiwgMTgwLCAyMDUsIDE1OCwgMjM0LCAKKyAgICAxNTcsIDI0NiwgMTQ1LCAyMDYsIDE1OCwgMjA2LCAxMCwgMjQ2LCAxMzEsIDI0OCwgMTIxLCAyMTYsIDIyLCAyNTAsIDE5MSwgCisgICAgMjAyLCAyMzAsIDIzNiwgNjMsIDI0MSwgMTAsIDIzNCwgNDUsIDIwOSwgNTksIDIyMiwgMjMwLCAyNDgsIDE3MSwgMjM2LCAKKyAgICA2NCwgMjQxLCA1NiwgMjQ4LCA4MSwgMjM3LCAyNSwgMjE1LCAxMjUsIDI0NywgMTMyLCAzMiwgMjE4LCAyMDksIDIyMSwgMjEsIAorICAgIDMyLCAyMTgsIDIwNCwgMjExLCAyMzUsIDIzNSwgMzQsIDMyLCAyMjYsIDIxMiwgMjA1LCAzOSwgMjAyLCAyMTAsIDMyLCAKKyAgICAyMTEsIDIxNCwgMjEyLCAxNTUsIDIxMCwgMTIsIDMsIDIxMSwgMjUyLCAyMDYsIDE2MywgMjEzLCAyNDEsIDI2LCAyNDksIAorICAgIDk3LCAyMDksIDg1LCAyNiwgMjA5LCA4NSwgMjQ4LCAxMDUsIDI0OSwgNTksIDI2LCAyMzMsIDE4MywgMjQ2LCAyNDgsIDIzNywgCisgICAgNTMsIDIwOSwgMzQsIDIxMiwgMTU2LCAyMDcsIDIwMiwgMjA4LCAyMDUsIDIyMiwgNjksIDIwNSwgNjQsIDIzMywgMTIxLCAKKyAgICAyMTMsIDI0MiwgMjUxLCA5MywgMjM2LCAyNTQsIDIxMiwgMTY5LCAyMzYsIDI1NCwgMjA3LCAxNzQsIDIwMSwgNTMsIDIyNCwgCisgICAgMTk4LCAyMzUsIDEwNywgMjEzLCAyNDMsIDIyMSwgNjksIDIxMywgMjQzLCAyNDcsIDEzNSwgMjQyLCAyNDEsIDI0OSwgNTYsIAorICAgIDI2LCAyNDksIDk3LCAyMDIsIDE4MywgMjM3LCAxMTEsIDIzMywgMjA0LCAyMDgsIDg4LCAyNiwgMjQ5LCA5NywgMjMyLCAKKyAgICAyMzIsIDIzMywgMjA0LCAyMDgsIDg4LCAyNiwgMjE0LCAyMTcsIDIwNywgMjMsIDIwNiwgMTYzLCAyMTYsIDE5OCwgMjYsIAorICAgIDI0OSwgOTcsIDIwOSwgMzYsIDI0NywgMTQwLCAyMjEsIDYzLCAyNDcsIDE2MCwgMjQ5LCA3LCAzLCAyMDQsIDksIDI0OCwgCisgICAgMjcsIDI0MywgNDgsIDIzMywgMTEwLCAyNDgsIDI1LCAyNDYsIDEzOSwgMjQxLCAxMjIsIDIzMywgMTEwLCAyNDgsIDI2LCAKKyAgICAyNDYsIDEyOSwgMjQ4LCAyNiwgMjQxLCAxMTQsIDI0MSwgMTE1LCAyMjgsIDE5LCAyMjAsIDExOCwgMjE2LCAxMTEsIDIwOCwgCisgICAgMTE5LCAyMzMsIDExMCwgMjQ4LCAyNiwgMjMzLCAxMTAsIDMsIDIzNiwgNDcsIDIxNywgMTE1LCAyNDgsIDI2LCAyMjcsIAorICAgIDIzNiwgMjE1LCA2NywgMjE3LCAxMTQsIDIzOCwgNTgsIDIxNSwgNjcsIDIxNywgMTE0LCAyMzMsIDExOSwgMjQ5LCA4MSwgCisgICAgMjUwLCAxMjgsIDIwNiwgMTcxLCAyMjIsIDIzMCwgMjMzLCAxMTUsIDIyNCwgNjAsIDIzMywgMTE1LCAyNDMsIDMyLCAyMDgsIAorICAgIDcyLCAyMTEsIDIyMSwgMjQxLCAxMjUsIDIwOCwgNzIsIDIzNywgMTc4LCAyMjgsIDAsIDIyNSwgNzYsIDIyNywgMjM2LCAKKyAgICAyNDcsIDExMywgMjM4LCA1OCwgMjQ3LCAxMTMsIDY0LCAyMTYsIDQxLCA2MywgMjE2LCA0MSwgMjAxLCA3NSwgNjQsIDIzNywgCisgICAgNTMsIDIwMSwgNzUsIDYzLCAyMzcsIDUzLCAyMTIsIDIzMSwgNjMsIDIxMiwgMjMxLCAyMjUsIDE2OCwgMjQ5LCAxMTUsIAorICAgIDIxMywgMjQxLCAyNiwgMjA5LCAyMDQsIDI0OCwgODYsIDI2LCA0OCwgMjUxLCA4OCwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAKKyAgICAyMDQsIDEyNiwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDEyMywgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIAorICAgIDEyMSwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDExOSwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDExNywgCisgICAgMjEzLCAyMDQsIDIyMSwgNjAsIDIxNiwgMjM1LCAyMDEsIDgzLCAyNDgsIDMxLCAyNDIsIDI1NSwgMjA2LCAyLCAyMjQsIAorICAgIDI0NSwgMjEzLCAyNDQsIDI0NywgMTExLCAyMzksIDE1OCwgMjQyLCAyNDAsIDIwMSwgNDAsIDIwOSwgNDMsIDIwOSwgNDEsIAorICAgIDIzMywgMTIwLCAyMTMsIDIxNiwgMjM1LCAxMTIsIDIxMCwgNTksIDIyMSwgMTAwLCAyMTIsIDIzNSwgMjQ2LCAyMzQsIDI0MCwgCisgICAgMjAwLCAyMTUsIDE2OCwgMjQ4LCAxMjIsIDIzOCwgMjAxLCAyMTcsIDEyNiwgMjA4LCAyMTgsIDIxMCwgNTQsIDI0OCwgMzAsIAorICAgIDI1MSwgNTEsIDIzMywgMTg5LCAyMjUsIDE2MSwgMjQ4LCAyNDYsIDIzNywgNzEsIDIwNSwgNjMsIDIzNywgNzEsIDI0OCwgCisgICAgMTI5LCAyMDQsIDE4MiwgMjM0LCAxNTUsIDI0NiwgMjM1LCAyNDksIDEzMiwgMjQ2LCAyMzUsIDIzNiwgMTk5LCAyNDksIAorICAgIDEzMiwgMjQ2LCAyMzUsIDI0OCwgMTYyLCAyMTYsIDQzLCAyMjYsIDg2LCAyMTUsIDgwLCAyMzksIDE0OCwgMjQ3LCAxNjQsIAorICAgIDI0OSwgMTIwLCAyNDcsIDE2NCwgMjQwLCAxOTIsIDIyMSwgNjEsIDIzNywgMTg5LCAyNDMsIDAsIDIzNywgMTg5LCAyMDYsIAorICAgIDMsIDIzNywgMTg5LCAyMTMsIDI0NSwgMjM3LCAxODksIDI0NywgMTEyLCAyMzcsIDE4OSwgMjM5LCAxNTksIDIzNywgMTg5LCAKKyAgICAyMDgsIDIwMywgMjAxLCA0MCwgMjMzLCAxMjEsIDIzNywgMTg5LCAyMjEsIDEwMSwgMjM3LCAxODksIDI0MCwgMjAxLCAyMzcsIAorICAgIDE4OSwgMjE1LCAxNjksIDIzNywgMTg5LCAyMzYsIDIwMywgMjM3LCAxODksIDIzNCwgMjA1LCAyMzcsIDE4OSwgMjAwLCAKKyAgICAyNTMsIDIzNywgMTg5LCAyNDksIDIsIDIzNywgMTg5LCAyMTYsIDE1OSwgMjM3LCAxODksIDIxNSwgMTY5LCAyMTgsIDIxNiwgCisgICAgMjE2LCA4NSwgMjE1LCA3LCAyNDYsIDIxOSwgMjM4LCAxNSwgMjM4LCAyMiwgMjM5LCAyMSwgMjE4LCAyMTYsIDIyMSwgNTgsIAorICAgIDIwNSwgMTYzLCA2NCwgMTE1LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDY0LCAxMjcsIDIxNSwgOTYsIDI0OSwgCisgICAgMTI3LCAyMjgsIDEwMywgNjQsIDQ5LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDY0LCA1MSwgMjE1LCA5NiwgMjQ5LCAKKyAgICAxMjcsIDIyOCwgMTAzLCAyMzcsIDY1LCAyMzQsIDIwMCwgNTQsIDIwMSwgNzUsIDIzNCwgMjAwLCA1NCwgMjE3LCA5OSwgCisgICAgMjM0LCAyMDAsIDU0LCAyMDYsIDMzLCAxMTUsIDU0LCAyMDYsIDMzLCAxMjcsIDU0LCAyNDYsIDEzMCwgMjM0LCAxNzUsIDU0LCAKKyAgICAxNzYsIDIzNCwgMTc1LCA1NCwgMjQyLCAyMjYsIDIwMCwgMjQ5LCAyMzQsIDE1NywgMjM4LCAxOCwgMjIwLCAzMCwgMjA3LCAKKyAgICA4MiwgMjI3LCAyMjYsIDIzOSwgMTUzLCAyMjYsIDE0OCwgMjQ4LCAxNzMsIDIwMCwgMjQ5LCAyNDYsIDEwMywgMjE0LCAxOTgsIAorICAgIDIzNCwgMTc5LCAyMTUsIDU4LCAyMjIsIDE3MCwgMjEwLCA1LCAyNTAsIDE1MSwgMjEwLCA1LCAyMzQsIDU4LCAyMTAsIDUsIAorICAgIDIwMCwgMjQ5LCAyMTIsIDEwLCAyMDAsIDI0OSwgMjQ4LCAxMDQsIDIzNiwgMjUyLCAyNDcsIDI0OSwgMjI4LCAxMTgsIDIwOSwgCisgICAgMTU1LCAyNDcsIDI0OCwgMjI4LCAxMTgsIDIwOSwgMTU1LCAyNDgsIDc2LCAyMzUsIDE0MCwgMjIyLCAxODAsIDIwMCwgMjUwLCAKKyAgICAyMzcsIDE2OSwgMjIyLCAxODEsIDI2LCAyMDAsIDI1MSwgMjMzLCAxOTgsIDIzNCwgMTc0LCAxMjAsIDIyMiwgNDEsIDIzMywgCisgICAgMTk4LCAyMzQsIDE3NCwgMTIwLCAyMDAsIDI0OCwgMjMzLCAxOTgsIDIzNCwgMTc0LCAyMTUsIDg4LCAyMTcsIDExMywgMjAwLCAKKyAgICAyNTEsIDMsIDI0OCwgMTEsIDIzOSwgMTksIDI0OCwgNTIsIDMsIDIwMywgNTAsIDIxNiwgMTEsIDMsIDI0OCwgMTMzLCAyMzQsIAorICAgIDIyMSwgMjIyLCAxODEsIDMsIDIzNSwgNDcsIDIxNSwgMjA1LCAyMjIsIDE2NiwgMjIyLCAxODEsIDMsIDIwNCwgMTkxLCAKKyAgICAyMTcsIDkxLCAyMjIsIDE4MCwgMjE3LCA5MSwgMjAwLCAyNTAsIDI0OSwgMTMxLCAyNDMsIDQ5LCAyMDAsIDIzNCwgMjE1LCAKKyAgICAxMiwgMjI3LCAyMzYsIDIxNywgMTA5LCAyMjcsIDIzNiwgMjM1LCAxMTEsIDIzNSwgMTY5LCAyNDksIDEzMiwgMjUxLCA3NCwgCisgICAgMjM4LCAyNywgMjUxLCAxMzIsIDI1MSwgMTMzLCAyMjEsIDkxLCAyMjgsIDEyMywgMjA5LCA4MCwgMjI4LCA5MiwgMjQxLCAKKyAgICAxMTEsIDIxNiwgMTAsIDIzNSwgNDEsIDI0MiwgMTIsIDIyNCwgMTU5LCAyMjAsIDE0MiwgMjE1LCA4NywgMjM3LCAxOTAsIAorICAgIDIyMiwgMTMwLCAyMzQsIDIyMCwgMjQ5LCA3NSwgMjE1LCA5MCwgMjA3LCAxMDIsIDIxNSwgMTYxLCAyMjYsIDEzMCwgODEsIAorICAgIDIyNCwgNjAsIDIyNCwgMjM2LCAyMTMsIDI2LCAyMzYsIDUsIDIwOCwgNzgsIDIyNiwgMTI5LCAyNDgsIDg3LCAyNDMsIDIsIAorICAgIDMsIDIzNCwgMTI3LCAyMDEsIDYwLCAyNDksIDAsIDIzNCwgMTI3LCAyNDgsIDQ2LCAyMzQsIDEyNywgMTIwLCAyMzQsIDEyNSwgCisgICAgMjA4LCAyMzYsIDIzNCwgMTI3LCAyMzUsIDU3LCAyMzQsIDEyNywgMjM0LCAxMjgsIDMsIDQ4LCAyNDgsIDEyNywgMjM0LCAKKyAgICAxMjcsIDIzNSwgNjQsIDIzNCwgMTI3LCAyMDAsIDQ0LCAyMzQsIDEyNywgMjE0LCAxOTksIDIzNCwgMTI3LCAyMzQsIDEyOCwgCisgICAgMywgMjEzLCA4NSwgMjEzLCA5OSwgMjM0LCAxMjUsIDIzNCwgMTI4LCAyNDEsIDE2NiwgMjQxLCA2NSwgMjEwLCA4NiwgMywgCisgICAgMzUsIDczLCAyMjgsIDczLCAyMzgsIDIwNCwgMTYyLCAyNDgsIDIzLCAyNTEsIDczLCA5OSwgMjQ4LCAxMTMsIDIwOSwgNzEsIAorICAgIDk5LCAyNDYsIDgxLCA5OSwgMjA4LCAyMTIsIDIwNywgMTgxLCA5OSwgMjM5LCAxNDUsIDI0MSwgMjQ1LCA5OSwgMjE1LCAKKyAgICAxNjIsIDc2LCAyMTUsIDgxLCAyMzcsIDM3LCAyNDgsIDE4NSwgMjQwLCAyMzEsIDk5LCAyMDgsIDIyOCwgMjQ5LCA5NiwgCisgICAgMjA2LCA1MiwgMjQ5LCA5NiwgNjQsIDIzNywgMjQsIDIzMywgODMsIDIxNSwgOTQsIDk5LCAyMjEsIDEwNSwgMjQ5LCAxMTMsIAorICAgIDI0MiwgMTk1LCAyMzgsIDQ1LCA4MCwgMjQwLCAxOTQsIDU0LCAyNDIsIDI0NiwgMjQ3LCAxMzMsIDI0OSwgODAsIDMsIDIwMCwgCisgICAgNDIsIDU0LCAyNDksIDgwLCAzLCAyNDAsIDE5NCwgNTQsIDI0OSwgODAsIDMsIDIzOCwgNjEsIDU0LCAyNDksIDgwLCAzLCAKKyAgICAyMTUsIDU2LCA1NCwgMjIxLCAxMDUsIDMsIDIwMSwgMTEsIDI0NywgMTYsIDMsIDE4MiwgMjA1LCAxMDQsIDI2LCAyMDAsIAorICAgIDQyLCA1NCwgMjExLCAxOTksIDIxNiwgOSwgMjQzLCA3MCwgMjQ4LCA1MCwgMjIxLCAxNjIsIDIzNywgMjksIDI0MCwgMjUzLCAKKyAgICAyMTcsIDM3LCAyNDEsIDIsIDIzOSwgMTA2LCAyMzcsIDk3LCAyMzcsIDksIDE3NiwgMjM3LCA5NywgMjM3LCA5LCAyMTYsIAorICAgIDE5NiwgMywgMjQyLCAxOTgsIDIxNiwgMTk2LCAyMzcsIDE4MiwgMjAzLCAyMjgsIDI0NywgMTcwLCAyMDYsIDE5NywgMjQ3LCAKKyAgICAxNzAsIDI0NywgMTM0LCAyMjgsIDEwMywgMjQ3LCAxNiwgMywgMTgyLCAyMDUsIDEwMywgMjQ3LCAxNiwgMywgMTkxLCAyMDUsIAorICAgIDEwMywgMjQ5LCA3NywgMjQ3LCAxNSwgMjQ2LCAxMTYsIDIxNCwgMTk0LCAyMTIsIDIyMSwgMjE0LCAxOTQsIDIxNiwgMTMzLCAKKyAgICAyMDgsIDY4LCAyMTIsIDE2MywgMjA1LCA5NSwgMjEyLCAxNjMsIDI0OCwgMTA5LCAyMDcsIDIxLCAyMjUsIDMzLCAyMTgsIAorICAgIDIwNywgMjE4LCAyMDgsIDMsIDI0MSwgMTY1LCAyNDMsIDEsIDI0NiwgMTEwLCAyNDgsIDExMCwgMTc2LCAyNDgsIDExMCwgCisgICAgMjM1LCA2NCwgMjQ4LCAxMTAsIDI0OCwgMTI3LCAyNDgsIDExMCwgMjE3LCAzMiwgMjQ4LCAxMTAsIDI0OCwgMTA3LCAyMjAsIAorICAgIDEzNiwgMjQ5LCAxMTcsIDIxMSwgMjA3LCAyMjIsIDQyLCAyMDYsIDE3NiwgMjEzLCAxODQsIDIxNiwgMTk0LCAyMzcsIDE1MiwgCisgICAgMjIyLCAyMzAsIDIxMSwgMjQ4LCAyNTEsIDQ4LCAyMTQsIDIxOCwgMjUxLCAyMzIsIDIyNCwgNjIsIDI0NywgMCwgMjIyLCAKKyAgICA1NCwgMjE2LCAyNTMsIDIwNSwgMTExLCAyMjgsIDExNCwgMjA1LCAxMTEsIDIxNiwgMjAzLCAyMzksIDc0LCA5OSwgMjI4LCAKKyAgICAxMTEsIDIzOCwgMTQ0LCAyMzgsIDE0NSwgMywgMTkxLCA1NSwgNTYsIDI0NiwgMTEwLCAyMjIsIDE5NSwgMywgMjI0LCA1MiwgCisgICAgMjM3LCA1MywgMjQ2LCAxMTAsIDIyMiwgMTk1LCAzLCAyMTMsIDIyMCwgMjM3LCA1MywgMTc2LCAyMjIsIDE5NSwgMywgMjEzLCAKKyAgICAyMjAsIDIzNywgNTMsIDE3NiwgMjIyLCAxOTUsIDMsIDIyNCwgNTIsIDIzNywgNTMsIDIxNSwgNjQsIDIxNSwgNjUsIDIzMywgCisgICAgMTI0LCAyMjAsIDQsIDIyMSwgMTM0LCAyMTUsIDIxMywgMjIxLCAxMzQsIDIxNSwgMjE0LCAzLCA4NywgNTUsIDI1MCwgMTU2LCAKKyAgICAyMjUsIDI4LCAyMDIsIDIzMywgMjIxLCAxMzMsIDIyMSwgMTM0LCAyMTUsIDIxNCwgMjE3LCAxMTYsIDIxOCwgMjQyLCAyMjEsIAorICAgIDEzNCwgMjE1LCAyMTIsIDI1MSwgNDksIDMsIDI0OSwgNjYsIDI0NywgMTYyLCAyNDcsIDE2MywgMywgMjM3LCA0NiwgMjAyLCAKKyAgICAyMzAsIDI0NywgMTYyLCAyMDYsIDE3MywgMjEzLCAyMzYsIDIwMiwgMjI5LCAyMzcsIDkwLCAyMTQsIDI1MCwgMjE1LCA3MSwgCisgICAgMjA4LCA4OSwgMjE1LCAzMywgMjQ5LCA2LCAyMDQsIDE0NSwgODcsIDI1MCwgMTk5LCAyNDYsIDExMiwgODcsIDI2LCA5OCwgCisgICAgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIDI0NiwgMTEyLCA4NywgMjYsIDk4LCAxNzYsIDI0NiwgMTU2LCAyNTAsIDIwMCwgCisgICAgMywgNDQsIDExMiwgMjE2LCAyNDIsIDI0NiwgMTEyLCAxOTEsIDI2LCAxODIsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMTk5LCAKKyAgICAyNTEsIDQ3LCAxOTEsIDI2LCAxODIsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMTk5LCAxMjgsIDI0OCwgNDksIDk5LCAxMjIsIAorICAgIDI0OCwgNDksIDk5LCAyMDgsIDIzMywgMywgMjQ3LCAxNTUsIDk3LCAyMDgsIDIzMiwgMjA4LCAyMzMsIDMsIDExMiwgMjA5LCAKKyAgICAxLCAyMDEsIDc3LCAyMDgsIDIzMywgMywgMTI2LCAyMDksIDEsIDIwMSwgNzYsIDI0OSwgNDksIDIzOCwgMjA0LCAyMTUsIAorICAgIDExOCwgMjI1LCAyMywgMjIyLCAyMDcsIDIzNSwgMTI4LCAyMTMsIDQxLCAyMjIsIDIwNywgMjM1LCAxMjgsIDIyNCwgMTA0LCAKKyAgICAzLCAyMjgsIDg0LCAyMTYsIDQ3LCAyNDYsIDExMCwgMjI0LCAxMDQsIDMsIDIyNiwgMjE0LCAyMjYsIDIxNCwgMjI0LCAxMDMsIAorICAgIDE3NiwgMjI0LCAxMDMsIDI0OCwgMjMwLCAyNDgsIDIzMSwgMywgMjQ3LCAxNTUsIDk3LCAyNDgsIDEwOCwgMjI0LCAxNjcsIAorICAgIDk5LCAyMTMsIDIzNywgMjQ3LCAyNDMsIDI0OSwgMTMwLCAzLCA5OCwgNTUsIDU2LCAyMzgsIDE3MSwgMywgOTgsIDU1LCA1NiwgCisgICAgMjE3LCA3OSwgMywgMjM4LCA0MywgMTM0LCAzLCA0OSwgNTEsIDU1LCA1NiwgMjA5LCA5LCAzLCA4NywgNTUsIDU2LCAyMDUsIAorICAgIDE1OCwgMywgMTgyLCA1NSwgNTYsIDIxOCwgMjQyLCAxMTIsIDIwMywgMjUzLCAyMzgsIDIzMCwgOTksIDIyNiwgMjExLCAKKyAgICAyMDYsIDE2NiwgMjI4LCA3OCwgMTYsIDM2LCA4LCA2LCAyMjQsIDIzNSwgMjI4LCA3OCwgMTYsIDM2LCA4LCA0LCAyMjQsIAorICAgIDIzNSwgMjI4LCA3OCwgMTYsIDM2LCAyMTgsIDk0LCAyMjgsIDc4LCAxNiwgMzYsIDIwNywgMTE2LCAyMjgsIDc4LCAxNiwgCisgICAgMzYsIDgsIDIyNCwgMjM1LCAyMzcsIDc3LCAyMzgsIDIwNCwgMjA1LCAxNTMsIDIwMCwgMjI1LCAyMzQsIDIwNiwgMjE4LCAKKyAgICA3NywgMjYsIDI0OCwgMTE1LCAyMzMsIDIwNSwgMjE1LCAxNDMsIDIyMSwgMjA3LCAyMDYsIDE3NCwgMjQyLCAyMTYsIDI0OSwgCisgICAgOTcsIDIwOSwgMTA2LCAyMTUsIDk4LCAyMDgsIDExMCwgMywgMTAxLCAyNDAsIDE4MiwgMjI3LCAyMzYsIDE2LCAzNiwgMjQ4LCAKKyAgICAyNDMsIDIwNSwgOTMsIDIzOCwgMTg3LCA2MywgNTIsIDI0NywgMjQzLCA2NCwgNTIsIDI0NywgMjQzLCAyMjUsIDcxLCAyMTMsIAorICAgIDE3MCwgMjQ2LCAxNTUsIDIyNSwgNzEsIDI0OCwgMTI3LCAyNDYsIDE1NSwgMjI1LCA3MSwgMjE3LCAzMiwgMjQxLCA2NCwgCisgICAgMjI1LCA3MSwgMjQ4LCAxMjcsIDI0MSwgNjQsIDQsIDIxNywgMzIsIDI0MSwgNjQsIDQsIDI0OCwgMTI3LCAyNDEsIDY0LCAKKyAgICAyMDMsIDIyNywgMjEzLCAxNzAsIDIwNSwgOTgsIDIzOSwgMTY2LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjAzLCAyMjcsIDQsIAorICAgIDIxMywgMTcwLCAyMDUsIDk4LCAyMzksIDE2NiwgNCwgMjEzLCAxNzAsIDIwNSwgOTgsIDIyNCwgNTQsIDUxLCAyMTAsIDEwMSwgCisgICAgNjQsIDI0NiwgMTU1LCAyMDMsIDIyNSwgNTEsIDIxMCwgMTAxLCA2NCwgMjQ2LCAxNTUsIDQ0LCAyNDIsIDIzNSwgMjE1LCAKKyAgICA4NCwgMjQyLCAyMzUsIDIxNSwgODUsIDMsIDIzNCwgMjEyLCA1NywgMjQyLCAyMzUsIDIxNSwgODQsIDIxOCwgMjExLCA0OSwgCisgICAgMjEwLCAxNzAsIDMsIDEyNiwgMjQwLCAxODAsIDIxOCwgMjExLCA1MSwgMjEwLCAxNzAsIDMsIDEyNiwgMjQwLCAxODAsIDE2LCAKKyAgICAzNiwgMjIyLCAxNDQsIDI0NywgMjIsIDY0LCA4LCAyNDIsIDIzNCwgODAsIDgsIDI0MiwgMjM0LCAyNDcsIDYwLCAyNDIsIAorICAgIDIzNCwgMjE3LCA4NywgOTksIDIzOSwgMTY5LCA3NiwgMjE2LCA3MSwgMjI3LCAxMDMsIDIyMSwgNzQsIDIwNywgMTEwLCAKKyAgICAyMjIsIDM3LCAzLCAyMTksIDExNCwgMjQ4LCA2NSwgMjQ4LCA4MywgNzYsIDIzMywgMzUsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMTEyLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAxMjAsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIAorICAgIDEyNiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM2LCAyMjksIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAKKyAgICAxOTAsIDIzNywgNjEsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwOSwgMTA2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIAorICAgIDIzNywgMTkwLCAyMTAsIDEzNiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAyMzIsIDIxNywgMTMyLCAKKyAgICAyNDYsIDExNCwgMjM3LCAxOTAsIDIxOSwgMTE0LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDYsIDE2NywgCisgICAgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAyMDAsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIAorICAgIDIwNCwgMTY1LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTcsIDcyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNCwgCisgICAgMTM5LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNiwgMzksIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM2LCAyMjUsIDI0NiwgMTE0LCAKKyAgICAyMzcsIDE5MCwgMjM3LCA1OSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDksIDEwMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTAsIAorICAgIDEzNCwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIzMSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTksIDExMiwgMjQ2LCAKKyAgICAxMTQsIDIzNywgMTkwLCAyMDYsIDE2NSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDE5OCwgMjQ2LCAxMTQsIDIzNywgCisgICAgMTkwLCAyMDQsIDE2MywgNTEsIDIwOCwgMjMyLCA1MSwgMjA4LCAyMzMsIDMsIDExMiwgMjA5LCAxLCAyMDEsIDc3LCA1MSwgCisgICAgMjA4LCAyMzMsIDMsIDEyNiwgMjA5LCAxLCAyMDEsIDc2LCAyNDgsIDE4LCAyNDgsIDE5LCAzLCAyMDksIDEsIDIwMSwgNzYsIAorICAgIDIxMywgMjUsIDI0OCwgMjMwLCAyNDgsIDExMCwgMjQ3LCAxNTMsIDIyMiwgMTY3LCAyNDYsIDExMywgNjMsIDIwOSwgODEsIAorICAgIDI2LCAyNDIsIDIzMywgMjE4LCAyNDIsIDIxNSwgMTQ5LCAyMzMsIDE5NywgMjIyLCAxODEsIDIyOCwgMTE4LCAyNDcsIDI1MSwgCisgICAgMjA3LCAyNDIsIDIyNCwgMjI4LCAyMDksIDY5LCAyMTcsIDM0LCAyMDgsIDE5NCwgMjQxLCAyNTAsIDIwNywgMjI0LCAyMDgsIAorICAgIDIyMSwgMjA4LCAyMjIsIDIwMSwgNjEsIDIyNywgMTQ4LCAyMjIsIDE4MSwgMjQyLCAxMSwgNDksIDIzNCwgMjAwLCAyMDYsIAorICAgIDE3NiwgMjEzLCAxODQsIDIwNiwgMTc2LCAyMTMsIDE4NSwgMywgMjE2LCAxOTUsIDUxLCAyMzQsIDIwMCwgMjA2LCAxNzYsIAorICAgIDIxMywgMTg0LCA2NCwgMjA1LCAxMzksIDIwNiwgMTc1LCA2MywgMjA1LCAxMzksIDIwNiwgMTc1LCAyMDYsIDE3NiwgMjE3LCAKKyAgICA3OSwgMjA1LCAxNTgsIDc2LCAyMjEsIDEzMCwgMjQ2LCAxMzQsIDIyMSwgMTM0LCAyMTUsIDIxMywgMjQ5LCAxMzAsIDc2LCAKKyAgICAyMzgsIDE0NCwgMjA4LCAxMTUsIDIzOCwgMTQ0LCAyMzgsIDE0NSwgMywgMjI0LCAxOTMsIDIzNywgMTYsIDIzOCwgMTQ0LCAKKyAgICAyMTYsIDQ4LCAxMTksIDIwOCwgMTE1LCAyMzgsIDE0NCwgMjI0LCAxNjYsIDIxNiwgMTMyLCA2MywgMjE0LCAxOTQsIDIyNCwgCisgICAgNTQsIDQ5LCAyMTYsIDQ2LCAyMjQsIDU0LCA0OSwgMjQ5LCA5MiwgMjE2LCA0NywgMjI0LCA1NCwgNDksIDIzNiwgMjMxLCAKKyAgICAyMTYsIDQ3LCAyMjQsIDU0LCA0OSwgMjE2LCAxODksIDIyNCwgNTQsIDQ5LCAyNDIsIDI0OSwgNDksIDIwMCwgMjE5LCAyMzQsIAorICAgIDE5OSwgMjA0LCAxODUsIDIxNywgOTksIDIzNCwgMjAwLCA1NCwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAyMzcsIDgyLCAKKyAgICAyMDgsIDIxMSwgMjEzLCAxMDUsIDIxMywgMjIwLCAyMzQsIDIwMCwgMywgMjM3LCA4MiwgMjA4LCAyMTEsIDIxMywgMTA1LCAKKyAgICAyMDYsIDMzLCAxMTUsIDU0LCAyMTMsIDEwNSwgMjA2LCAzMywgMTI3LCA1NCwgMjEzLCAxMDUsIDIwMiwgMjMyLCAyMzQsIAorICAgIDE5OSwgMjEzLCAxMDUsIDIzNCwgMjAwLCAzLCAxMDEsIDIzNywgODcsIDIzOCwgMzIsIDIxMywgMjIwLCAyMzQsIDIwMCwgMywgCisgICAgMjE2LCAxMTAsIDI0OCwgMjA2LCAxMDEsIDI2LCAyMTMsIDI3LCAyMzcsIDgxLCA2NCwgMTI3LCAyMTUsIDk2LCA0OSwgMjM0LCAKKyAgICAyMDAsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCA1MSwgCisgICAgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2MywgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjMsIDUxLCAKKyAgICAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDQ5LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDYzLCA1MSwgMjE1LCA5NiwgCisgICAgMjQ5LCAxMjcsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgCisgICAgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDYzLCAxMTUsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgCisgICAgNjMsIDEyNywgMjE1LCA5NiwgMjI4LCAxMDMsIDYzLCAxMTUsIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjMsIAorICAgIDEyNywgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2MywgMjM0LCAxMjcsIDI0MSwgMTEwLCAyNDMsIDcwLCAyMjYsIAorICAgIDIxMywgMjYsIDIyMSwgNjAsIDEyNiwgMjIwLCAxMiwgMjQzLCA2OSwgMjE1LCA4LCAyMTUsIDEwNCwgMjQ3LCAxNzIsIDYzLCAKKyAgICAyMzQsIDE2NSwgMjEwLCA1NSwgMjM3LCAyOSwgMjQwLCAyNTMsIDY0LCAyMzQsIDE2NSwgMjEwLCA1NSwgMjM3LCAyOSwgCisgICAgMjQwLCAyNTMsIDIwOSwgMjMsIDIxMCwgNTUsIDIzNywgMjksIDI0MCwgMjUzLCAyMDYsIDIzNSwgMjQ3LCAxMTcsIDIwMSwgCisgICAgNiwgMjI2LCAyMTIsIDExMiwgMjQ3LCAyNDQsIDIyMSwgNjAsIDEyMCwgMjQ3LCAyNDQsIDIyMSwgNjAsIDEyNiwgMjQ3LCAKKyAgICAyNDQsIDIyMSwgNjAsIDIwNSwgMTMwLCA0MCwgMjE2LCA5LCAyNDMsIDcwLCAyMzQsIDE2NSwgMjQwLCAyNTMsIDIxMSwgCisgICAgMjA5LCAyMTUsIDksIDIzMiwgMjI1LCAyMzcsIDE1MiwgMjMyLCAyMjUsIDIxNywgMzcsIDI0MSwgMywgMjMyLCAyMjUsIAorICAgIDI0MCwgMjA1LCAzLCAyMDYsIDEyNiwgMjQwLCAyMDUsIDMsIDIwNiwgMTI3LCAyNiwgMjE1LCAxOTgsIDI0MCwgMjA1LCAzLCAKKyAgICAyMTUsIDE5OCwgMjM2LCAyMTYsIDMsIDIxNSwgMTk4LCAyMzYsIDIxNiwgMywgMjA1LCAyMzgsIDIzNiwgMjE2LCAzLCAyNTEsIAorICAgIDg2LCAyMDAsIDE5NSwgNjMsIDIzNywgOSwgMjM3LCA5LCAxNzYsIDIzNywgOSwgMjQ3LCAxMzQsIDEyNCwgMjQwLCAyMzgsIAorICAgIDI0NywgMTM0LCAyMzcsIDk3LCAyNDgsIDc4LCAyMzcsIDk3LCAyNDcsIDE4NSwgMjM4LCAxODEsIDIxOCwgMjA5LCAyMzgsIAorICAgIDE4MSwgMjE4LCAyMTAsIDIxNiwgMTk1LCAyMzgsIDE4MSwgMjE4LCAyMTAsIDIxNiwgMjAxLCAyMTgsIDIwOSwgMjE4LCAKKyAgICAyMTAsIDIxNiwgMTk1LCAyMTgsIDIxMCwgMjE2LCAyMDEsIDIzOCwgMTgxLCAyNDAsIDIwNCwgMjM4LCAxODEsIDIxNiwgCisgICAgMTk1LCAyMzgsIDE4MSwgMjE2LCAxOTMsIDI0MCwgMjA0LCAyMTYsIDE5NSwgMjE2LCAxOTMsIDIwMSwgODcsIDIwOCwgMjE4LCAKKyAgICAyMTgsIDIxMCwgMjE2LCAyMDEsIDIwOCwgMjE4LCAyNDcsIDE3MSwgMjE2LCAyMDEsIDI0MSwgMTEwLCAyMDEsIDE1LCAyMjEsIAorICAgIDE1OSwgMjIyLCAxMjAsIDIxNiwgMjQ0LCAyNDYsIDExMiwgNTEsIDI2LCA0OSwgMjEwLCAxNzAsIDI1MCwgMTk5LCAyNDcsIAorICAgIDE1NSwgMjAwLCAxOTUsIDIyOCwgMTA5LCAyMzcsIDMsIDIwOSwgOTAsIDk5LCAyNDEsIDE2NCwgMjM3LCAzLCAyMDksIDkwLCAKKyAgICA5OSwgMjQzLCA3MSwgNDAsIDIyNiwgMjE0LCAyMTIsIDI0NCwgMjIwLCA0LCAyMTYsIDE5NiwgMywgNDQsIDIwNiwgMTI2LCAKKyAgICAyMDgsIDgwLCAyNDcsIDE1LCAyNDIsIDQxLCAyMjYsIDk1LCAyMjQsIDE2MCwgMjA4LCAyMzEsIDIzNCwgMTM3LCAyMjgsIAorICAgIDExOCwgMjA5LCAxNTUsIDEyNiwgMjEzLCAxOTUsIDU2LCAxMjYsIDIxMywgMTk1LCA1NywgMTI2LCAyMTMsIDE5NSwgMjI1LCAKKyAgICAyOCwgMTI2LCAyMTMsIDE5NSwgMjEzLCA0NiwgNDksIDIwOCwgMjI4LCAyNDgsIDM1LCA1MSwgMjA4LCAyMjgsIDI0OCwgMzUsIAorICAgIDEyMCwgMjA4LCAyMjgsIDI0OCwgMzQsIDEyNiwgMjA4LCAyMjgsIDI0OCwgMzQsIDQ5LCAyMDYsIDUyLCAyNDgsIDM1LCA1MSwgCisgICAgMjA2LCA1MiwgMjQ4LCAzNSwgNDksIDI1MSwgNzMsIDI0OCwgMzUsIDUxLCAyNTEsIDczLCAyNDgsIDM1LCAyMjEsIDg2LCAKKyAgICAyNDgsIDM1LCAyMjQsIDE5NCwgMjIxLCA4NiwgMjQ4LCAzNSwgMjI0LCAxOTQsIDIyMSwgODUsIDI0OSwgOTQsIDEwMCwgMywgCisgICAgMjQ5LCA5MywgMjQ5LCA5NCwgMTM1LCAyMDAsIDE5NSwgMjQ5LCA5NCwgMTAwLCAzLCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAKKyAgICAyNywgMTM1LCAyMDAsIDE5NSwgMjQ5LCA5NCwgMTAwLCAzLCAyNywgMTM1LCAyMDAsIDE5NSwgMTYyLCAyNDcsIDcsIDgxLCAKKyAgICAyNDksIDk0LCAxMDAsIDMsIDI3LCAyNDcsIDYsIDIwMCwgMjMzLCAyMjIsIDE2NCwgMjIxLCA2NSwgMjM2LCAxODQsIDIwNSwgCisgICAgMTgwLCAyMDUsIDEzNSwgMjA4LCAxMDEsIDc2LCAyMjQsIDIwOCwgMjA5LCAxNTYsIDc2LCAyMjcsIDIzNywgMjIxLCA0NiwgCisgICAgMjM1LCA2MSwgMjM3LCAxODksIDIzNSwgNjEsIDIzNywgMTkwLCAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyMzcsIDE5MCwgMywgCisgICAgMjA2LCAxOTMsIDc2LCAyMjcsIDE1MCwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjA5LCA0NywgMjM3LCAKKyAgICAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIDIwOSwgNDcsIDIzOCwgMTUsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAxNzYsIAorICAgIDIyMSwgNTksIDI2LCAyNDYsIDgzLCAyMDcsIDE4MCwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIAorICAgIDIwNiwgMCwgMjM4LCAxNSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDIzNCwgMjExLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgCisgICAgMjMzLCAxMjMsIDIwMSwgOCwgMjM3LCAxODksIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyMzcsIAorICAgIDE5MCwgMjExLCAyNDAsIDI0MSwgMTQ0LCAyMzcsIDEsIDIxMywgMTQ1LCAyMzcsIDE4OSwgMjA5LCA0NywgMjM3LCAxOTAsIAorICAgIDMsIDIzNCwgMTI2LCAyMzgsIDE1LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMjA3LCAyMjQsIDIwOSwgNDYsIDIzNywgMTg5LCAKKyAgICAyMjAsIDEwLCAyMzcsIDE4OSwgMjM4LCAzNCwgMjM3LCAxODksIDIwNCwgMywgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyNDYsIAorICAgIDgzLCAyMDcsIDE4MCwgMjE2LCAzOSwgMjM3LCAxODksIDI0MywgNjIsIDIzNywgMTg5LCAyNDMsIDYzLCAyMzcsIDE4OSwgCisgICAgMjI2LCAxMjgsIDIzNywgMTg5LCAyMzcsIDE5MCwgMjA2LCAzNiwgMzUsIDIyNiwgMTI5LCAyMjYsIDEyOCwgMjM3LCAxOTAsIAorICAgIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIyNiwgMTI4LCAyMzcsIDE5MCwgMywgMjQ2LCAxMTAsIDIzOCwgMTUsIDIzNywgMTkwLCAKKyAgICAzLCAyMDgsIDMxLCAyMDUsIDE2MywgMjM3LCAxOTAsIDMsIDIwOCwgMzEsIDIwNSwgMTY0LCAyNiwgMjAxLCA4LCAyMzgsIAorICAgIDIyLCAyMzcsIDE5MCwgMywgMjA4LCAzMSwgMjA1LCAxNjQsIDI2LCAyMDYsIDAsIDIzOCwgMTUsIDI0MSwgNCwgMjM3LCAKKyAgICAxODksIDIwMCwgMjMyLCAyMzcsIDE4OSwgMjUxLCA2NywgMjM3LCAxODksIDIxNSwgNTUsIDIzNywgMTg5LCAyNDIsIDIxOCwgCisgICAgMjM3LCAxODksIDIxNiwgMTMsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjI0LCA3NywgNzYsIDIwNSwgNzUsIDI0MSwgNCwgCisgICAgMjQ3LCAyNDcsIDIxMywgMTQ1LCAyMzcsIDE4OSwgMjM2LCAxOTUsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDI1MSwgCisgICAgNjUsIDIzNywgMTg5LCAyMzcsIDE0NSwgMjM3LCAxODksIDIwMSwgNjIsIDIzNywgMTg5LCAyMDksIDcwLCAyMzcsIDE4OSwgCisgICAgMjA1LCAyMTgsIDIzNywgMTg5LCAyMzUsIDYyLCAyMzcsIDE4OSwgMjI0LCA2MywgMjQyLCAyMTgsIDIzNywgMTg5LCAyMzcsIAorICAgIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyMzMsIDcyLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIAorICAgIDI0NiwgODMsIDIwNywgMTgwLCAyMzcsIDE5MCwgMjExLCAyMTEsIDIyOCwgMTE4LCAyMzcsIDE0NiwgMjUwLCAxNjIsIDIzNywgCisgICAgMTg5LCAyMzcsIDIxLCAyMzcsIDE4OSwgMjA5LCA3MSwgMjM3LCAxODksIDI0MCwgMjMxLCAyMzcsIDE4OSwgMjM3LCAxOTAsIAorICAgIDIwMSwgMywgMjIxLCA1OCwgMjM3LCAxOTAsIDMsIDIyMiwgNjgsIDIyMiwgMTMyLCAyMzUsIDYxLCAyNDcsIDExMiwgMjM3LCAKKyAgICAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjA2LCAxOTMsIDc2LCAyMjcsIDE1MCwgCisgICAgMjA5LCA0NywgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDIwOSwgNDcsIDI0NywgMTEyLCAyMzcsIAorICAgIDE5MCwgMywgMjM0LCAxMjYsIDIzOCwgMTUsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjAwLCAyMTcsIDIwOSwgNDgsIDIyNiwgCisgICAgMTI4LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDI0NiwgMTEwLCAyMzgsIDE1LCAyMTUsIDU1LCAyNDcsIDExMiwgMjM3LCAKKyAgICAxODksIDI0MiwgMjE4LCAyNDcsIDExMiwgMjM3LCAxODksIDIwMSwgNjIsIDI0NywgMTEyLCAyMzcsIDE4OSwgMjA5LCA2NCwgCisgICAgMjM2LCAxOTUsIDIzNywgMTg5LCAyMDksIDY0LCAyMDksIDQ3LCAyMzcsIDE4OSwgMjAzLCAyMjIsIDIzNywgMTg5LCAyMzcsIAorICAgIDE5MCwgMywgMjEyLCAyNDIsIDIzOCwgMTUsIDIzNywgMTkwLCAzLCAyMTgsIDI0MiwgMjM1LCAxMDQsIDIzNSwgMjQwLCAKKyAgICAyMzcsIDE5MCwgMywgMjE3LCA5OSwgMjM1LCAyNDAsIDIxNiwgMTEsIDI0OCwgODQsIDI0MSwgMTU5LCAyMTEsIDE4OSwgCisgICAgMjIxLCAxMDAsIDIzNCwgMTI5LCAyMjEsIDEwMCwgMjA4LCAyMzQsIDIyMSwgMTAwLCAyMzQsIDE2NywgMjE2LCAxMSwgMjEzLCAKKyAgICAyMTksIDExMiwgMjM0LCAxOTksIDIxNiwgMTEsIDIxMywgMjE5LCAyNDgsIDk2LCAyMzQsIDE3NSwgMjI4LCAxMTgsIDI0NywgCisgICAgNjIsIDIxNiwgMTEsIDIzNiwgMTk0LCAyMTYsIDExLCAzLCAyMTUsIDU1LCAyMzcsIDE4OSwgMjE2LCAxMSwgMywgMjM3LCAKKyAgICAxMCwgMjM0LCAxNzQsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIAorICAgIDIyNSwgMzUsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgCisgICAgMzUsIDIwNCwgMTg1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIyNSwgMzUsIDIwNCwgMTg1LCAyMDgsIDI1NCwgMjAxLCAKKyAgICA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIwMiwgMjE2LCAKKyAgICAyMjUsIDM1LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDE1NywgMjM5LCAxNCwgCisgICAgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAKKyAgICAzNSwgODAsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDgwLCAyMDgsIDI1NCwgMjAxLCA0OCwgCisgICAgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDgwLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAKKyAgICA4MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIAorICAgIDI0OCwgMzIsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAyNDgsIDMyLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDI0OCwgCisgICAgMzIsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyNDgsIDMyLCA4MCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyNDgsIAorICAgIDMyLCA4MCwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgMzIsIDgwLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIAorICAgIDI0OCwgMzIsIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjQ4LCAzMiwgMjMzLCAxOTYsIDIxNCwgNzIsIDUyLCAKKyAgICAyMTcsIDIxLCAyMzMsIDE5NiwgMjE0LCA3MiwgNTIsIDIxNywgMjIsIDIyOCwgMTE4LCA2MywgMjA4LCAxOTMsIDIwOSwgMTgsIAorICAgIDIxNCwgNzIsIDUyLCAyMTcsIDIxLCAyMDksIDE4LCAyMTQsIDcyLCA1MiwgMjE3LCAyMiwgMjI4LCAxMTgsIDYzLCAyMDgsIAorICAgIDE5MywgOTgsIDIxMiwgMjQ4LCAxODIsIDIxMiwgMjQ4LCA4NywgMjEyLCAyNDgsIDE5MSwgMjEyLCAyNDgsIDEzNSwgMzMsIAorICAgIDIzOCwgODIsIDIxNywgMjEsIDgwLCAxMzUsIDMzLCAyMzgsIDgyLCAyMTcsIDIxLCAzMywgMTc2LCAyMzgsIDgyLCAyMTcsIAorICAgIDIxLCA4MCwgMzMsIDE3NiwgMjM4LCA4MiwgMjE3LCAyMSwgODAsIDI1MSwgOTAsIDIxNywgMjEsIDIwNywgMTgzLCAyNTEsIAorICAgIDkwLCAyMTcsIDIxLCA0MywgODAsIDUzLCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA0MywgCisgICAgODAsIDUzLCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDQzLCA4MCwgMTI4LCA1MywgMjQ2LCA3MSwgMjE0LCAKKyAgICA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjI4LCA1OSwgMjE3LCAyMSwgNDMsIDIyOCwgNTksIDIxNywgMjEsIDgwLCA0MywgCisgICAgMjI4LCA1OSwgMjE3LCAyMSwgMjAyLCAyNDYsIDgwLCAyMDksIDE2LCAyMDIsIDI0NiwgODAsIDIxMywgMTA2LCAyMDksIDE2LCAKKyAgICAyNDcsIDUsIDI0OCwgMTIxLCAyMTMsIDEwNiwgMjQ3LCA1LCAyNDgsIDEyMSwgMjEyLCAyNDgsIDIzNCwgMTEwLCAyMDgsIAorICAgIDk2LCAyMjQsIDEwMSwgMjEzLCAyMjUsIDI0NywgMTM1LCAyMzQsIDU1LCAyMDUsIDEyMywgMjM0LCA1NSwgMjA1LCAxMjQsIAorICAgIDMsIDI0OCwgMjEsIDIxOCwgMjE2LCAyMDUsIDEyMywgMjIyLCAxMywgMTYyLCAyMTMsIDIyNiwgMjA4LCAxMDIsIDIwNSwgCisgICAgMTIxLCAyMDUsIDEyMiwgMjQ3LCAxMzUsIDI0NywgMjUyLCAyMTcsIDc1LCAyNDcsIDI1MiwgMjA1LCA3MSwgMjQ3LCAyNTMsIAorICAgIDIwOCwgNzYsIDIyMSwgMTYzLCAyNTEsIDk0LCAyMzcsIDc4LCAyMzgsIDE2NCwgMjE1LCA4OCwgMjQ3LCAxMzUsIDIxNywgCisgICAgNzUsIDIxNSwgODgsIDI0NywgMTM1LCAyMDYsIDIxMSwgMjE3LCA3NSwgMjA2LCAyMTEsIDI1MCwgMTI3LCAyMTcsIDc1LCAKKyAgICAyNTAsIDEyNywgMjEzLCAxNzcsIDIwMywgNTEsIDI0MSwgMTQwLCAyMDUsIDYyLCAyNTAsIDE5NCwgMjI0LCA2OCwgMjA1LCAKKyAgICAxMjksIDIyMSwgOTQsIDIyMSwgNjQsIDIxMywgMjI0LCAyMDcsIDE5NiwgMjEzLCAyMjQsIDIyMSwgNjQsIDI0NywgMTg0LCAKKyAgICAyNTEsIDIwNywgMjA1LCAxMjAsIDIxMCwgMTcsIDIxMiwgMjE4LCAyMDgsIDIyNiwgMjMzLCAxNzcsIDIwNSwgMTI3LCAyMjQsIAorICAgIDE5NiwgODMsIDIwNSwgMTI3LCAyMjQsIDE5NiwgMjQzLCA0OSwgNTQsIDIxNSwgODgsIDI0NywgMTE5LCAyMTMsIDk5LCAKKyAgICAyMjQsIDE5NiwgMjA1LCA5NSwgMjM3LCA1NCwgMjE3LCA3OSwgMjE1LCA2NiwgMjQwLCAxODUsIDIxOCwgMjQyLCAyMzgsIAorICAgIDE1MCwgNTQsIDIwOSwgNDUsIDk5LCAyMTgsIDI0MiwgMjA5LCA0NSwgOTksIDIxNCwgMTkzLCAyMjQsIDE0OSwgMjI4LCAKKyAgICAxMTgsIDIyOCwgOSwgMjE1LCAxMzQsIDk5LCAyNDAsIDIxMiwgMjE4LCAyMTUsIDIyNCwgMTQ5LCA5OSwgMjE1LCA2MCwgCisgICAgMjAxLCA4MywgOTksIDIxOCwgMjMxLCAyMDEsIDgzLCA5OSwgMjQ4LCAxODQsIDIxOCwgMjQyLCAyNDgsIDE4MywgMjQ4LCAKKyAgICAxODIsIDIyMSwgNjQsIDI0OCwgMTgyLCAyMTYsIDYzLCAyMTgsIDI0MiwgMjE2LCA2MiwgMjQ2LCAyMjYsIDI0MiwgMjI3LCAKKyAgICAyMjIsIDM2LCA5OSwgMjAwLCAyNDcsIDk5LCAyMTMsIDExNSwgMjQ5LCAxMzIsIDk5LCAyMDUsIDE4MSwgMjAxLCA4MywgCisgICAgMjQ2LCAxMDcsIDIwOSwgMjMxLCAyNDksIDUyLCAyNDksIDUwLCAyMTYsIDk2LCAyNDMsIDMzLCAyNDIsIDE4MSwgMjQ5LCAKKyAgICAxMTAsIDI0NiwgMTM1LCA0OSwgMjI0LCAzMiwgMjA1LCA5OSwgMywgMjEyLCAyMTksIDI0MywgMTQsIDIxNCwgMjUzLCA1NCwgCisgICAgNDQsIDIyOCwgOTIsIDIwOCwgMjU1LCAyNDgsIDc1LCA5OSwgMjM1LCAxMzksIDk5LCAyNDMsIDcsIDI2LCAyMjUsIDgxLCAKKyAgICAyMDksIDcxLCAyNTEsIDI0OCwgMjA5LCAyNTMsIDI0OSwgMTA5LCAyNDgsIDIyOSwgMjQ4LCAyMzAsIDI0OCwgMjUzLCAyMTUsIAorICAgIDEzNCwgNzYsIDIwMCwgMjMxLCAyMTcsIDEyOSwgNTQsIDIwOSwgMjUzLCAyMDUsIDcyLCAyMzQsIDIwNywgMjYsIDIwMCwgCisgICAgMjI1LCAyMTAsIDMwLCAyMTcsIDEwNCwgMjM5LCAxNDIsIDIyMSwgNjgsIDIxMywgMjI1LCAyMDUsIDEzMSwgMjIxLCA3MCwgCisgICAgMjQ4LCAxMjAsIDIwMywgMjI3LCAyMjEsIDE3NCwgMjUxLCAxNjQsIDIwMywgMjI3LCAyNTEsIDE2NCwgMjAzLCAyMjcsIDQsIAorICAgIDI1MSwgMTY0LCA0LCAyNTEsIDE2NCwgMjE4LCAyMjAsIDI1MSwgMTY0LCAyNTEsIDE2NSwgMjQxLCAxMjQsIDI1MSwgMTY1LCAKKyAgICAyNTAsIDIwNSwgMjExLCAyNDcsIDIxNywgNzUsIDIzNywgNzgsIDIzOCwgMTY0LCAyNDEsIDU0LCAyMjQsIDEwMSwgMjE2LCAKKyAgICA5OSwgMjEwLCAxNywgMjExLCAyMTUsIDIyMSwgNzAsIDIxMSwgMjE1LCAyNDcsIDE0NiwgMTM5LCAxNiwgMzYsIDIxNCwgNjgsIAorICAgIDEzOSwgMTYsIDM2LCAyNTEsIDE2NiwgMTM5LCAxNiwgMzYsIDIzNywgNzcsIDEzOSwgMTYsIDM2LCAyMzksIDE3LCAxMzksIAorICAgIDE2LCAzNiwgMjAxLCA4MiwgMTM5LCAxNiwgMzYsIDI1MCwgMjU1LCAxMzksIDE2LCAzNiwgMjUxLCAwLCAyMTMsIDE2NCwgCisgICAgMTM5LCAxNiwgMzYsIDI1MSwgMCwgMjEzLCAxNjMsIDEzOSwgMTYsIDM2LCAyNTEsIDAsIDIwMiwgMTk5LCAxMzksIDE2LCAKKyAgICAzNiwgMjUxLCAwLCAyMDIsIDE5OCwgMTM5LCAxNiwgMzYsIDIwMiwgMjEzLCAxMzksIDE2LCAzNiwgMjAyLCAyMTIsIDEzOSwgCisgICAgMTYsIDM2LCAyMDIsIDIxMSwgMTM5LCAxNiwgMzYsIDIwNywgMjM1LCAxMzksIDE2LCAzNiwgMjE1LCAyMjEsIDIwNywgMjM1LCAKKyAgICAxMzksIDE2LCAzNiwgNjMsIDIwNywgMjM1LCAxMzksIDE2LCAzNiwgMjIyLCAzNSwgMjA4LCAxMCwgMTM5LCAxNiwgMzYsIAorICAgIDIyMiwgMzUsIDIwOCwgOSwgMTM5LCAxNiwgMzYsIDIyMiwgMzUsIDIwOCwgOCwgMTM5LCAxNiwgMzYsIDI0NiwgMTU4LCAKKyAgICAxMzksIDE2LCAzNiwgMjEyLCAyNywgMTM5LCAxNiwgMzYsIDIxOSwgMTAxLCAxMzksIDE2LCAzNiwgMjAyLCAxOTcsIDEzOSwgCisgICAgMTYsIDM2LCAyMDIsIDE5NiwgMTM5LCAxNiwgMzYsIDIxMiwgMjQ5LCAyMTIsIDI3LCAxMzksIDE2LCAzNiwgMjEyLCAyNDksIAorICAgIDIxMiwgMjYsIDEzOSwgMTYsIDM2LCAyMzUsIDEwOCwgMTM5LCAxNiwgMzYsIDIwOSwgMTUyLCAxMzksIDE2LCAzNiwgMjI4LCAKKyAgICAzMiwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIyOCwgMzIsIDIxNywgMjcsIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIAorICAgIDIyOCwgMzEsIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDIyOCwgMzEsIDEzOSwgMTYsIDM2LCAyNDMsIDI0LCAyMTcsIAorICAgIDI4LCAxMzksIDE2LCAzNiwgMjI4LCAzMCwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyNDMsIDIzLCAKKyAgICAxMzksIDE2LCAzNiwgMjQyLCAyMzksIDc2LCAyNDMsIDIzLCAxMzksIDE2LCAzNiwgMjQyLCAyMzksIDc2LCAyNDMsIDIyLCAKKyAgICAxMzksIDE2LCAzNiwgMjQzLCAyNCwgMjUxLCA0MSwgMTM5LCAxNiwgMzYsIDIxMiwgMjgsIDc2LCAyNDMsIDI0LCAyNTEsIAorICAgIDQxLCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDIxMiwgMjgsIDc2LCAyNDMsIDIzLCAxMzksIDE2LCAzNiwgMjAzLCA0NiwgCisgICAgMTM5LCAxNiwgMzYsIDIwNSwgMjMxLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjI1LCAzOSwgMjE3LCAyOCwgMTM5LCAxNiwgCisgICAgMzYsIDI1MSwgNDAsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjUxLCAzOSwgMTM5LCAxNiwgMzYsIAorICAgIDIxMiwgMjgsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDIxMiwgMjgsIDc2LCAyNTEsIDM5LCAKKyAgICAxMzksIDE2LCAzNiwgMjAyLCAyMTQsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgMjEzLCAxNjAsIDc2LCAyNTEsIDM5LCAKKyAgICAxMzksIDE2LCAzNiwgMjEzLCAxNjAsIDc2LCAyNTEsIDM4LCAxMzksIDE2LCAzNiwgMjEzLCAxNTksIDEzOSwgMTYsIDM2LCAKKyAgICAyMTMsIDE1OCwgMTM5LCAxNiwgMzYsIDIxMywgMTU3LCAxMzksIDE2LCAzNiwgMjEzLCAxNTYsIDEzOSwgMTYsIDM2LCAyNTEsIAorICAgIDEyNywgMTM5LCAxNiwgMzYsIDI1MSwgMTI2LCAxMzksIDE2LCAzNiwgMjIyLCAxNTUsIDEzOSwgMTYsIDM2LCAyMTIsIDM0LCAKKyAgICAxMzksIDE2LCAzNiwgMjUwLCAxOTgsIDEzOSwgMTYsIDM2LCAyMTMsIDE4NywgMTM5LCAxNiwgMzYsIDIxMywgMTg2LCAxMzksIAorICAgIDE2LCAzNiwgMjUwLCAxMzAsIDEzOSwgMTYsIDM2LCAyNDgsIDE1MywgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwNiwgMjMwLCAKKyAgICAxMzksIDE2LCAzNiwgMjA2LCAyMjksIDEzOSwgMTYsIDM2LCAyMTQsIDc0LCAyMjQsIDE4NSwgMTM5LCAxNiwgMzYsIDI0OCwgCisgICAgMTAxLCAxMzksIDE2LCAzNiwgMjQ4LCAxMDAsIDEzOSwgMTYsIDM2LCAyNDgsIDk5LCAxMzksIDE2LCAzNiwgMjUxLCAxMDMsIAorICAgIDEzOSwgMTYsIDM2LCAyMTcsIDEwMywgMTM5LCAxNiwgMzYsIDIwOCwgMjE0LCAxMzksIDE2LCAzNiwgMjA1LCAyMjksIDEzOSwgCisgICAgMTYsIDM2LCAyMzUsIDMwLCAxMzksIDE2LCAzNiwgMjAxLCA3MCwgMTM5LCAxNiwgMzYsIDIxNSwgNTQsIDEzOSwgMTYsIDM2LCAKKyAgICAyNDcsIDE2NywgMTM5LCAxNiwgMzYsIDIwNCwgMTc3LCAxMzksIDE2LCAzNiwgMjQ3LCAxMzcsIDIyMSwgNzUsIDEzOSwgMTYsIAorICAgIDM2LCAyMTEsIDIyNSwgNzYsIDIyNywgMTUyLCAxMzksIDE2LCAzNiwgMjQ3LCAxODEsIDEzOSwgMTYsIDM2LCAyMDUsIDkyLCAKKyAgICAxMzksIDE2LCAzNiwgMjA4LCAxMDcsIDIwNSwgOTIsIDEzOSwgMTYsIDM2LCAyMjQsIDEwMCwgMTM5LCAxNiwgMzYsIDIwOSwgCisgICAgMjcsIDEzOSwgMTYsIDM2LCAyMDMsIDIwNiwgMTM5LCAxNiwgMzYsIDIzMywgMTIxLCAyMzksIDEyMSwgMTM5LCAxNiwgMzYsIAorICAgIDI1MCwgMTc2LCAxMzksIDE2LCAzNiwgMjE1LCA2MiwgMjUwLCAxNzYsIDEzOSwgMTYsIDM2LCAyNDgsIDUzLCAxMzksIDE2LCAKKyAgICAzNiwgMjE1LCA1MywgMjQ4LCA1MywgMTM5LCAxNiwgMzYsIDI1MSwgMTAwLCAxMzksIDE2LCAzNiwgMjA4LCA2MywgMjA3LCAKKyAgICAyMTYsIDIwOCwgNjIsIDEzOSwgMTYsIDM2LCAyMDgsIDYzLCAyMDcsIDIxNiwgMjA4LCA2MSwgMTM5LCAxNiwgMzYsIDIwOCwgCisgICAgNywgMTM5LCAxNiwgMzYsIDIxNSwgMjYsIDEzOSwgMTYsIDM2LCAyNDAsIDI0OCwgMTM5LCAxNiwgMzYsIDI0MCwgMjUwLCAKKyAgICAxMzksIDE2LCAzNiwgMjQwLCAyNDksIDEzOSwgMTYsIDM2LCAyMTQsIDIwMiwgMTM5LCAxNiwgMzYsIDIxNCwgMTkxLCAxMzksIAorICAgIDE2LCAzNiwgMjQyLCAyMjUsIDEzOSwgMTYsIDM2LCAyNDIsIDIyNCwgMTM5LCAxNiwgMzYsIDI0MiwgMjIzLCAxMzksIDE2LCAKKyAgICAzNiwgMjQyLCAyMjIsIDEzOSwgMTYsIDM2LCAyNDIsIDIyMSwgMTM5LCAxNiwgMzYsIDI1MSwgMTQxLCAxMzksIDE2LCAzNiwgCisgICAgMjQ5LCA1MywgNzYsIDIyMiwgMTM3LCAxMzksIDE2LCAzNiwgMjQ5LCA1MywgNzYsIDIwMywgNzgsIDEzOSwgMTYsIDM2LCAKKyAgICAyMTMsIDExMywgMTM5LCAxNiwgMzYsIDIzMywgMTEzLCAxMzksIDE2LCAzNiwgMjE5LCAxMjksIDEzOSwgMTYsIDM2LCAyNDEsIAorICAgIDIzMiwgMTM5LCAxNiwgMzYsIDIyMSwgODksIDEzOSwgMTYsIDM2LCAxNjcsIDIzOSwgMTU2LCAxMzksIDE2LCAzNiwgMTY3LCAKKyAgICAyMTcsIDEsIDYzLCAyMjUsIDIzLCAyMjgsIDE1LCA1MSwgMjA1LCA5OCwgNjMsIDIwMywgMjI3LCAyMjgsIDE1LCA1MSwgCisgICAgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIyOCwgMTUsIDUxLCAyMDUsIDk4LCA2MywgMjM5LCAxNjYsIDIyOCwgMTUsIDUxLCAKKyAgICAyMDUsIDk4LCA2MywgMjA5LCA2NCwgNCwgMjQ2LCAxNTUsIDIyMiwgNjYsIDI3LCA2NCwgMjQ2LCAxNTUsIDI3LCA2NCwgCisgICAgMjQ2LCAxNTUsIDgwLCA2NCwgMjQ2LCAxNTUsIDIwMiwgMjQ2LCA4MCwgNjQsIDI0NiwgMTU1LCAyMzgsIDI2LCA4MCwgNjQsIAorICAgIDI0NiwgMTU1LCA2NCwgMjQ2LCAxNTYsIDI0MywgNDUsIDYzLCA0LCAyNDYsIDE1NSwgMjEyLCAyMjEsIDIwNiwgMjMxLCA2MywgCisgICAgMjA1LCAyMjYsIDIwOCwgMTkzLCA2MywgMjA5LCA2NCwgNCwgMjA4LCAxOTMsIDE2MiwgNjQsIDIwOCwgMTkzLCAyMjIsIDY2LCAKKyAgICA2NCwgMjA4LCAxOTMsIDI3LCA2NCwgMjA4LCAxOTMsIDgwLCA2NCwgMjA4LCAxOTMsIDIwMiwgMjQ2LCA4MCwgNjQsIDIwOCwgCisgICAgMTkzLCAyMzgsIDI2LCA4MCwgNjQsIDIwOCwgMTkzLCA2NCwgNTIsIDI0MywgNDUsIDYzLCAyMDIsIDI0NiwgNCwgMjA4LCAKKyAgICAxOTMsIDY0LCA1MiwgMjQzLCA0NSwgNjMsIDIyMiwgNjYsIDIwOCwgMTkzLCA1MiwgMjA2LCAyMzEsIDYzLCAyMDUsIDIyNiwgCisgICAgMjQxLCA2NCwgNjMsIDIwMiwgMjQ2LCA0LCAyNDEsIDY0LCA2MywgMjIyLCA2NiwgNCwgMjQxLCA2NCwgNjQsIDI0MSwgNjUsIAorICAgIDI0MywgNDUsIDYzLCAyMDIsIDI0NiwgNCwgMjQxLCA2NCwgNjQsIDI0MSwgNjUsIDI0MywgNDUsIDYzLCAyMjIsIDY2LCAKKyAgICAyNDEsIDY0LCAyNDEsIDY1LCAyMDYsIDIzMSwgNjMsIDIwNSwgMjI2LCAyMjQsIDQ5LCA2MywgMjAyLCAyNDYsIDQsIDIyNCwgCisgICAgNDksIDYzLCAyMjIsIDY2LCA0LCAyMjQsIDQ5LCA2NCwgMjI0LCA1MCwgMjQzLCA0NSwgNjMsIDQsIDIyNCwgNDksIDIwNiwgCisgICAgNzcsIDMxLCAyNDIsIDIzNCwgMTYyLCAzMSwgMjQyLCAyMzQsIDIyMiwgNjYsIDMxLCAyNDIsIDIzNCwgMjcsIDMxLCAyNDIsIAorICAgIDIzNCwgMjAyLCAyNDYsIDI3LCAzMSwgMjQyLCAyMzQsIDIwMiwgMjQ2LCA4MCwgMzEsIDI0MiwgMjM0LCAyMzgsIDI2LCA4MCwgCisgICAgMzEsIDI0MiwgMjM0LCAyMDYsIDc3LCAyMTIsIDI0LCAxNjIsIDIxMiwgMjQsIDIyMiwgNjYsIDIxMiwgMjQsIDI3LCAyMTIsIAorICAgIDI0LCA4MCwgMjEyLCAyNCwgMjAyLCAyNDYsIDgwLCAyMTIsIDI0LCAyMzgsIDI2LCA4MCwgMjEyLCAyNCwgMTYyLCAyMzcsIAorICAgIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIyMiwgNjYsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjcsIDIzNywgCisgICAgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgODAsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjAyLCAyNDYsIDgwLCAKKyAgICAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIzOCwgMjYsIDgwLCAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIAorICAgIDE2MiwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgCisgICAgMjcsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDgwLCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMDIsIAorICAgIDI0NiwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDIzOCwgMjYsIDgwLCAyMDksIDEwNiwgMjA4LCAyMDcsIAorICAgIDI1MCwgMTY1LCAxNjIsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIyMiwgNjYsIDIzOCwgMjMyLCAyMDgsIDIwNywgCisgICAgMjUwLCAxNjUsIDI3LCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCA4MCwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIAorICAgIDE2NSwgMjAyLCAyNDYsIDgwLCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAxNjIsIDEyNiwgMjE1LCA5OCwgNjMsIAorICAgIDIwOCwgMTA5LCAyMjIsIDY2LCAxMjYsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMTI2LCAyMTUsIDk4LCA2MywgMjA4LCAKKyAgICAxMDksIDIyMiwgNjYsIDEyNiwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAxNjIsIDIzNiwgMjI5LCAyMTUsIDk4LCAKKyAgICA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIzNiwgMjI5LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIzNiwgMjI5LCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDIxMywgCisgICAgMTA2LCAxNjIsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjM3LCA2MSwgMjE1LCA5OCwgCisgICAgNjMsIDIwOCwgMTA5LCA4MCwgMjM3LCA2MSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMDksIDEwNiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCA4MCwgMjA5LCAxMDYsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjA5LCAxMDYsIDIxNSwgOTgsIAorICAgIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM4LCAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgODAsIDIzOCwgCisgICAgMjMyLCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIwMiwgMjQ2LCA4MCwgMjM4LCAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIAorICAgIDEwOSwgODAsIDIzOCwgMjMyLCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjA0LCAxNjUsIDIxNSwgOTgsIAorICAgIDYzLCAyMDgsIDEwOSwgODAsIDIwNCwgMTY1LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDgwLCAyMDQsIDE2NSwgMjE1LCA5OCwgCisgICAgMjE1LCAxNTUsIDIwOCwgMTA5LCA5OCwgNTUsIDMsIDQsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIDU1LCAzLCA0LCAyMDUsIAorICAgIDk5LCAyNTAsIDIwMiwgODcsIDU1LCAzLCA0LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCA1NSwgMywgNCwgMjA1LCA5OSwgCisgICAgMjUwLCAyMDIsIDk4LCA1NSwgMywgMjIyLCA2NiwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgNTUsIDMsIDIyMiwgNjYsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgNTUsIDMsIDIyMiwgNjYsIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCAKKyAgICAyMjIsIDY2LCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCAKKyAgICA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIAorICAgIDE5MSwgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgCisgICAgMTgyLCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4NywgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCAKKyAgICA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTgyLCA1NSwgMywgCisgICAgMjM4LCAxMTgsIDI1MCwgMjAyLCA4NywgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCA1NSwgMywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA4MCwgOTgsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCAxODIsIDU1LCAzLCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDgwLCA4NywgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDE5MSwgNTUsIDMsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgODAsIDk4LCA1NSwgMywgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgMTgyLCA1NSwgMywgCisgICAgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgODcsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIAorICAgIDgwLCAxOTEsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDk4LCAyMDUsIDk3LCA1NSwgMywgMjIwLCAKKyAgICAxMjQsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDIyMCwgMTI0LCAyMTAsIDk5LCA4NywgMjA1LCA5NywgNTUsIDMsIAorICAgIDIyMCwgMTI0LCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyMjAsIDEyNCwgMjEwLCA5OSwgOTgsIDIwNSwgOTcsIAorICAgIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDk4LCAKKyAgICAyMDUsIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgOTgsIDIwNSwgOTcsIAorICAgIDU1LCAzLCA4MCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgODAsIDIxMCwgOTksIDg3LCAyMDUsIDk3LCA1NSwgMywgCisgICAgODAsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDgwLCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgNTUsIDMsIDIwMiwgCisgICAgMjQ2LCA4MCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDIwMiwgMjQ2LCA4MCwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIAorICAgIDk5LCA5OCwgMjM3LCA4NSwgNDgsIDE4MiwgMjM3LCA4NSwgNDgsIDg3LCAyMzcsIDg1LCA0OCwgMTkxLCAyMzcsIDg1LCA0OCwgCisgICAgOTgsIDk1LCA0OCwgMTgyLCA5NSwgNDgsIDg3LCA5NSwgNDgsIDE5MSwgOTUsIDQ4LCA5OCwgMjQzLCA3MiwgNDgsIDE4MiwgCisgICAgMjQzLCA3MiwgNDgsIDg3LCAyNDMsIDcyLCA0OCwgMTkxLCAyNDMsIDcyLCA0OCwgOTgsIDgwLCAyNDMsIDcyLCA0OCwgMTgyLCAKKyAgICA4MCwgMjQzLCA3MiwgNDgsIDg3LCA4MCwgMjQzLCA3MiwgNDgsIDE5MSwgODAsIDI0MywgNzIsIDQ4LCA5OCwgODAsIDQ4LCAKKyAgICAxODIsIDgwLCA0OCwgODcsIDgwLCA0OCwgMTkxLCA4MCwgNDgsIDk4LCA0MywgNDgsIDE4MiwgNDMsIDQ4LCA4NywgNDMsIAorICAgIDQ4LCAxOTEsIDQzLCA0OCwgMTU3LCAyMDEsIDQ4LCA0MywgNDgsIDE1NywgMjM5LCAxNCwgNDMsIDQ4LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgNDMsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNDMsIDQ4LCA0OSwgNTEsIDQzLCA0OCwgMTE1LCAxMjcsIDQzLCAKKyAgICA0OCwgMjAxLCAyNywgOTgsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAKKyAgICAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDE2MiwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMzksIDE0LCAKKyAgICAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDk4LCAxNTQsIAorICAgIDQ4LCAyMDEsIDI3LCAxODIsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAxNTQsIDQ4LCAyMDEsIDI3LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDk4LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAyMjIsIAorICAgIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMjIyLCAKKyAgICA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDIyMiwgNjYsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDk4LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDgwLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDgwLCAxNTQsIDQ4LCAKKyAgICAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjM5LCAxNCwgODAsIDE1NCwgCisgICAgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgOTgsIDIwMiwgMjQ2LCA4MCwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAyMDIsIDI0NiwgODAsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDIwMiwgCisgICAgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDk4LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNjQsIDU1LCAyMDEsIDUsIDIwNSwgOTksIAorICAgIDI1MCwgMjAyLCAxODIsIDY0LCA1NSwgMjAxLCA1LCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIDY0LCA1NSwgMjAxLCA1LCAKKyAgICAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCA2NCwgNTUsIDIwMSwgNSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA1NSwgMywgCisgICAgMjE4LCAyMTEsIDIwNywgNiwgMTgyLCA1NSwgMywgMjE4LCAyMTEsIDIwNywgNiwgODcsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCAKKyAgICA2LCAxOTEsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCA2LCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMDIsIDgwLCA1NSwgCisgICAgMjEwLCAxMDAsIDIwMSwgMjUsIDEyMCwgMjA2LCA3MSwgODAsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTEyLCAyMzQsIAorICAgIDIxMywgODAsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTEyLCAyMDYsIDc0LCA5OCwgMjQ4LCA5MCwgNjQsIDQ4LCA4NywgCisgICAgMjQ4LCA5MywgMjEwLCAxMDIsIDY0LCA0OCwgOTgsIDIwNSwgMTU4LCAyMTAsIDEwMiwgNjQsIDQ4LCA4NywgMjA1LCAxNTgsIAorICAgIDIxMCwgMTAyLCA2NCwgNDgsIDk4LCAyMjUsIDIyLCA2NCwgNDgsIDg3LCAyMTMsIDQwLCA2NCwgNDgsIDk4LCAyMTMsIDQwLCAKKyAgICA2NCwgNDgsIDg3LCAyMjUsIDIyLCA2NCwgNDgsIDk4LCAyNDksIDEyOCwgMjEwLCAxMDEsIDY0LCA0OCwgODcsIDI0OSwgCisgICAgMTI4LCAyMTAsIDEwMSwgNjQsIDQ4LCA5OCwgMjM2LCAxOTgsIDIxMCwgMTAxLCA2NCwgNDgsIDg3LCAyMzYsIDE5OCwgMjEwLCAKKyAgICAxMDEsIDY0LCA0OCwgNjQsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTAyLCA2NCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAKKyAgICAxMjAsIDIwNiwgNzEsIDE5OSwgMjMsIDIzNywgMTg5LCAyMjEsIDEwNCwgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMDYsIAorICAgIDk0LCAyMjAsIDE2LCAyMzcsIDE4OSwgMjA2LCA3NiwgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMzQsIDEzNSwgMjEyLCAKKyAgICAyNTEsIDIzNywgMTg5LCAyMzMsIDkxLCAyMzcsIDE4OSwgMiwgNzYsIDIwNiwgMTA3LCAyMzMsIDEyMywgMjQ3LCAxNjksIAorICAgIDIyMiwgNzcsIDIzNCwgMTk5LCAyMTMsIDIyMCwgMjQ5LCAxMzAsIDc2LCAyMzQsIDE5OSwgMjI1LCAyNywgMjM3LCA2NiwgCisgICAgMjEzLCA0NSwgMjM3LCA2NiwgMjM0LCAxNzMsIDIzNCwgMjAwLCAzLCAxMjQsIDI2LCAxMDEsIDIzNywgODIsIDI0MiwgMjMxLCAKKyAgICAyMzcsIDE5MCwgMywgMjQyLCAyNTQsIDIzNCwgMTU3LCAyNDYsIDk5LCAyMzcsIDE4OSwgMjIwLCAxMTMsIDIzNywgMTg5LCAKKyAgICAyMTIsIDI0MiwgMjE3LCA3OSwgMjA2LCAxMDcsIDIzNywgMzIsIDIyNSwgNTcsIDIzOSwgMTQ3LCAyMzcsIDE4OSwgMjIzLCAKKyAgICAyNTMsIDIzNywgMTg5LCAyMzcsIDE5MCwgMjE2LCAxNzYsIDIwOSwgMzksIDIzNywgMTg5LCAyMTUsIDI0LCAyMDAsIDI1MCwgCisgICAgMjEwLCAxNzMsIDIxNSwgMTMsIDIyMiwgMTgxLCAyMjgsIDExOCwgMjA0LCAxNzMsIDIyMSwgNzIsIDI0NiwgMTk5LCAyMDksIAorICAgIDIyNCwgMjE2LCAxMSwgMjQwLCAxOTgsIDI0NywgMTE2LCAyMjcsIDE0MiwgMjM3LCAxMjYsIDIyMSwgMTI5LCAyMTYsIDM0LCAKKyAgICAyMDAsIDIyNCwgMjAxLCA4MywgMjE1LCA4NiwgMjM0LCAxNzgsIDIwMSwgMTksIDIzNywgMjQsIDIzOSwgMTQzLCAzLCAyMzksIAorICAgIDE0MSwgMjQ2LCAxMTcsIDIzNSwgMTI3LCAyMDQsIDIwMSwgMjM1LCAxMjgsIDIwOCwgMjA2LCAyMzUsIDExNCwgMjIwLCAxMywgCisgICAgMjEzLCA0NywgMjM3LCA3MywgMjE1LCAxMzQsIDIyMiwgNjksIDIxMSwgMTk2LCAyMTUsIDEzNCwgMjIyLCA2OSwgMjA2LCAKKyAgICA3NSwgMjE1LCAxMzQsIDIyMiwgNjksIDI0OCwgNzcsIDIzNSwgMTIyLCAyMjIsIDE0MSwgMjUwLCAxOTIsIDIwMywgMjQzLCAKKyAgICAyNDIsIDIzOCwgMjUwLCAxMTgsIDI0MiwgMjA4LCAyNDksIDEyMSwgMjE1LCA1OSwgMjQ3LCAxMjAsIDI0OSwgMTA4LCAyNDgsIAorICAgIDYyLCAyMzUsIDY0LCAyMTIsIDMyLCAyMTAsIDkzLCAyMTYsIDE2MywgNzYsIDIzNywgMSwgMjA4LCAyOCwgMjM3LCA0MywgCisgICAgMjM4LCAyNDYsIDIzNSwgMTI5LCA3NiwgMjIxLCAxNzMsIDIxNiwgNjgsIDIyNiwgMTI0LCAyMTYsIDE2MCwgMjQyLCAyNTEsIAorICAgIDIyNCwgMTY0LCAyMzcsIDE4OSwgMjExLCAyMTMsIDIwNCwgMTkwLCAyMDMsIDI0NSwgMjM3LCAxODksIDIzOSwgMjQsIDIzOSwgCisgICAgMTMzLCAyNDksIDU1LCAyMTAsIDgwLCAyMTYsIDIzNywgMjM2LCAyMjEsIDIzNywgMTg5LCAyNDcsIDI0NSwgMjQxLCAxNTgsIAorICAgIDIzNSwgOTcsIDIyNCwgMTQzLCAyMTMsIDkyLCAyMDksIDIyNiwgMjA4LCAxODcsIDI0NiwgMjU1LCAyMDEsIDU5LCAxMiwgCisgICAgMTUsIDIzMiwgMjIxLCAxMiwgMTUsIDIzMiwgMjIwLCAxMiwgMTUsIDIzMiwgMjE5LCAxMiwgMTUsIDIzMiwgMjE4LCAxMiwgCisgICAgMTUsIDIzMiwgMjE3LCAxMiwgMTUsIDIzMiwgMjE2LCAxMiwgMTUsIDIzMiwgMjE1LCAxMiwgMTUsIDIzMiwgMjE0LCAxMiwgCisgICAgMTUsIDIzMiwgMjEzLCAxMiwgMTUsIDIzMiwgMjEyLCAxMiwgMTUsIDIzMiwgMjExLCAxMiwgMTUsIDIzMiwgMjEwLCAxMiwgCisgICAgMTUsIDIzMiwgMjA5LCAxMiwgMTUsIDIzMiwgMjA4LCAxMiwgMTUsIDIzMiwgMjA3LCAxMiwgMTUsIDIzMiwgMjA2LCAxMiwgCisgICAgMTUsIDIzMiwgMjA1LCAxMiwgMTUsIDIzMiwgMjA0LCAxMiwgMTUsIDIzMiwgMjAzLCAxMiwgMTUsIDIzMiwgMjAyLCAxMiwgCisgICAgMTUsIDIzMiwgMjAxLCAxMiwgMTUsIDIzMiwgMjAwLCAxMiwgMTUsIDIzMiwgMTk5LCAxMiwgMTUsIDIzMiwgMTk4LCAxMiwgCisgICAgMTUsIDIzMiwgMTk3LCAxMiwgMTUsIDIzMiwgMTk2LCAxMiwgMTUsIDIzMiwgMTk1LCAxMiwgMTUsIDIzMiwgMTk0LCAxMiwgCisgICAgMTUsIDIzMiwgMTkzLCAxMiwgMTUsIDIzMiwgMTkyLCAxMiwgMTUsIDIzMiwgMTkxLCAxMiwgMTUsIDIzMiwgMTkwLCAxMiwgCisgICAgMTUsIDIzMiwgMTg5LCAxMiwgMTUsIDIzMiwgMTg4LCAxMiwgMTUsIDIzMiwgMTg3LCAxMiwgMTUsIDIzMiwgMTg2LCAxMiwgCisgICAgMTUsIDIzMiwgMTg1LCAxMiwgMTUsIDIzMiwgMTg0LCAxMiwgMTUsIDIzMiwgMTgzLCAxMiwgMTUsIDIzMiwgMTgyLCAxMiwgCisgICAgMTUsIDIzMiwgMTgxLCAxMiwgMTUsIDIzMiwgMTgwLCAxMiwgMTUsIDIzMiwgMTc5LCAxMiwgMTUsIDIzMiwgMTc4LCAxMiwgCisgICAgMTUsIDIzMiwgMTc3LCAxMiwgMTUsIDIzMiwgMTc2LCAxMiwgMTUsIDIzMiwgMTc1LCAxMiwgMTUsIDIzMiwgMTc0LCAxMiwgCisgICAgMTUsIDIzMiwgMTczLCAxMiwgMTUsIDIzMiwgMTcyLCAxMiwgMTUsIDIzMiwgMTcxLCAxMiwgMTUsIDIzMiwgMTcwLCAxMiwgCisgICAgMTUsIDIzMiwgMTY5LCAxMiwgMTUsIDIzMiwgMTY4LCAxMiwgMTUsIDIzMiwgMTY3LCAxMiwgMTUsIDIzMiwgMTY2LCAxMiwgCisgICAgMTUsIDIzMiwgMTY1LCAxMiwgMTUsIDIzMiwgMTY0LCAxMiwgMTUsIDIzMiwgMTYzLCAxMiwgMTUsIDIzMiwgMTYyLCAxMiwgCisgICAgMTUsIDIzMiwgMTYxLCAxMiwgMTUsIDIzMiwgMTYwLCAxMiwgMTUsIDIzMiwgMTU5LCAxMiwgMTUsIDIzMiwgMTU4LCAxMiwgCisgICAgMTUsIDIzMiwgMTU3LCAxMiwgMTUsIDIzMiwgMTU2LCAxMiwgMTUsIDIzMiwgMTU1LCAxMiwgMTUsIDIzMiwgMTU0LCAxMiwgCisgICAgMTUsIDIzMiwgMTUzLCAxMiwgMTUsIDIzMiwgMTUyLCAxMiwgMTUsIDIzMiwgMTUxLCAxMiwgMTUsIDIzMiwgMTUwLCAxMiwgCisgICAgMTUsIDIzMiwgMTQ5LCAxMiwgMTUsIDIzMiwgMTQ4LCAxMiwgMTUsIDIzMiwgMTQ3LCAxMiwgMTUsIDIzMiwgMTQ2LCAxMiwgCisgICAgMTUsIDIzMiwgMTQ1LCAxMiwgMTUsIDIzMiwgMTQ0LCAxMiwgMTUsIDIzMiwgMTQzLCAxMiwgMTUsIDIzMiwgMTQyLCAxMiwgCisgICAgMTUsIDIzMiwgMTQxLCAxMiwgMTUsIDIzMiwgMTQwLCAxMiwgMTUsIDIzMiwgMTM5LCAxMiwgMTUsIDIzMiwgMTM4LCAxMiwgCisgICAgMTUsIDIzMiwgMTM3LCAxMiwgMTUsIDIzMiwgMTM2LCAxMiwgMTUsIDIzMiwgMTM1LCAxMiwgMTUsIDIzMiwgMTM0LCAxMiwgCisgICAgMTUsIDIzMiwgMTMzLCAxMiwgMTUsIDIzMiwgMTMyLCAxMiwgMTUsIDIzMiwgMTMxLCAxMiwgMTUsIDIzMiwgMTMwLCAxMiwgCisgICAgMTUsIDIzMiwgMTI5LCAxMiwgMTUsIDIzMiwgMTI4LCAxMiwgMTUsIDIzMiwgMTI3LCAxMiwgMTUsIDIzMiwgMTI2LCAxMiwgCisgICAgMTUsIDIzMiwgMTI1LCAxMiwgMTUsIDIzMiwgMTI0LCAxMiwgMTUsIDIzMiwgMTIzLCAxMiwgMTUsIDIzMiwgMTIyLCAxMiwgCisgICAgMTUsIDIzMiwgMTIxLCAxMiwgMTUsIDIzMiwgMTIwLCAxMiwgMTUsIDIzMiwgMTE5LCAxMiwgMTUsIDIzMiwgMTE4LCAxMiwgCisgICAgMTUsIDIzMiwgMTE3LCAxMiwgMTUsIDIzMiwgMTE2LCAxMiwgMTUsIDIzMiwgMTE1LCAxMiwgMTUsIDIzMiwgMTE0LCAxMiwgCisgICAgMTUsIDIzMiwgMTEzLCAxMiwgMTUsIDIzMiwgMTEyLCAxMiwgMTUsIDIzMiwgMTExLCAxMiwgMTUsIDIzMiwgMTEwLCAxMiwgCisgICAgMTUsIDIzMiwgMTA5LCAxMiwgMTUsIDIzMiwgMTA4LCAxMiwgMTUsIDIzMiwgMTA3LCAxMiwgMTUsIDIzMiwgMTA2LCAxMiwgCisgICAgMTUsIDIzMiwgMTA1LCAxMiwgMTUsIDIzMiwgMTA0LCAxMiwgMTUsIDIzMiwgMTAzLCAxMiwgMTUsIDIzMiwgMTAyLCAxMiwgCisgICAgMTUsIDIzMiwgMTAxLCAxMiwgMTUsIDIzMiwgMTAwLCAxMiwgMTUsIDIzMiwgOTksIDEyLCAxNSwgMjMyLCA5OCwgMTIsIDE1LCAKKyAgICAyMzIsIDk3LCAxMiwgMTUsIDIzMiwgOTYsIDEyLCAxNSwgMjMyLCA5NSwgMTIsIDE1LCAyMzIsIDk0LCAxMiwgMTUsIDIzMiwgCisgICAgOTMsIDEyLCAxNSwgMjMyLCA5MiwgMTIsIDE1LCAyMzIsIDkxLCAxMiwgMTUsIDIzMiwgOTAsIDEyLCAxNSwgMjMyLCA4OSwgCisgICAgMTIsIDE1LCAyMzIsIDg4LCAxMiwgMTUsIDIzMiwgODcsIDEyLCAxNSwgMjMyLCA4NiwgMTIsIDE1LCAyMzIsIDg1LCAxMiwgCisgICAgMTUsIDIzMiwgODQsIDEyLCAxNSwgMjMyLCA4MywgMTIsIDE1LCAyMzIsIDgyLCAxMiwgMTUsIDIzMiwgODEsIDEyLCAxNSwgCisgICAgMjMyLCA4MCwgMTIsIDE1LCAyMzIsIDc5LCAxMiwgMTUsIDIzMiwgNzgsIDEyLCAxNSwgMjMyLCA3NywgMTIsIDE1LCAyMzIsIAorICAgIDc2LCAxMiwgMTUsIDIzMiwgNzUsIDEyLCAxNSwgMjMyLCA3NCwgMTIsIDE1LCAyMzIsIDczLCAxMiwgMTUsIDIzMiwgNzIsIAorICAgIDEyLCAxNSwgMjMyLCA3MSwgMTIsIDE1LCAyMzIsIDcwLCAxMiwgMTUsIDIzMiwgNjksIDEyLCAxNSwgMjMyLCA2OCwgMTIsIAorICAgIDE1LCAyMzIsIDY3LCAxMiwgMTUsIDIzMiwgNjYsIDEyLCAxNSwgMjMyLCA2NSwgMTIsIDE1LCAyMzIsIDY0LCAxMiwgMTUsIAorICAgIDIzMiwgNjMsIDEyLCAxNSwgMjMyLCA2MiwgMTIsIDE1LCAyMzIsIDYxLCAxMiwgMTUsIDIzMiwgNjAsIDEyLCAxNSwgMjMyLCAKKyAgICA1OSwgMTIsIDE1LCAyMzIsIDU4LCAxMiwgMTUsIDIzMiwgNTcsIDEyLCAxNSwgMjMyLCA1NiwgMTIsIDE1LCAyMzIsIDU1LCAKKyAgICAxMiwgMTUsIDIzMiwgNTQsIDEyLCAxNSwgMjMyLCA1MywgMTIsIDE1LCAyMzIsIDUyLCAxMiwgMTUsIDIzMiwgNTEsIDEyLCAKKyAgICAxNSwgMjMyLCA1MCwgMTIsIDE1LCAyMzIsIDQ5LCAxMiwgMTUsIDIzMiwgNDgsIDEyLCAxNSwgMjMyLCA0NywgMTIsIDE1LCAKKyAgICAyMzIsIDQ2LCAxMiwgMTUsIDIzMiwgNDUsIDEyLCAxNSwgMjMyLCA0NCwgMTIsIDE1LCAyMzIsIDQzLCAxMiwgMTUsIDIzMiwgCisgICAgNDIsIDEyLCAxNSwgMjMyLCA0MSwgMTIsIDE1LCAyMzIsIDQwLCAxMiwgMTUsIDIzMiwgMzksIDEyLCAxNSwgMjMyLCAzOCwgCisgICAgMTIsIDE1LCAyMzIsIDM3LCAxMiwgMTUsIDIzMiwgMzYsIDEyLCAxNSwgMjMyLCAzNSwgMTIsIDE1LCAyMzIsIDM0LCAxMiwgCisgICAgMTUsIDIzMiwgMzMsIDEyLCAxNSwgMjMyLCAzMiwgMTIsIDE1LCAyMzIsIDMxLCAxMiwgMTUsIDIzMiwgMzAsIDEyLCAxNSwgCisgICAgMjMyLCAyOSwgMTIsIDE1LCAyMzIsIDI4LCAxMiwgMTUsIDIzMiwgMjcsIDEyLCAxNSwgMjMyLCAyNiwgMTIsIDE1LCAyMzIsIAorICAgIDI1LCAxMiwgMTUsIDIzMiwgMjQsIDEyLCAxNSwgMjMyLCAyMywgMTIsIDE1LCAyMzIsIDIyLCAxMiwgMTUsIDIzMiwgMjEsIAorICAgIDEyLCAxNSwgMjMyLCAyMCwgMTIsIDE1LCAyMzIsIDE5LCAxMiwgMTUsIDIzMiwgMTgsIDEyLCAxNSwgMjMyLCAxNywgMTIsIAorICAgIDE1LCAyMzIsIDE2LCAxMiwgMTUsIDIzMiwgMTUsIDEyLCAxNSwgMjMyLCAxNCwgMTIsIDE1LCAyMzIsIDEzLCAxMiwgMTUsIAorICAgIDIzMiwgMTIsIDEyLCAxNSwgMjMyLCAxMSwgMTIsIDE1LCAyMzIsIDEwLCAxMiwgMTUsIDIzMiwgOSwgMTIsIDE1LCAyMzIsIAorICAgIDgsIDEyLCAxNSwgMjMyLCA3LCAxMiwgMTUsIDIzMiwgNiwgMTIsIDE1LCAyMzIsIDUsIDEyLCAxNSwgMjMyLCA0LCAxMiwgCisgICAgMTUsIDIzMiwgMywgMTIsIDE1LCAyMzIsIDIsIDEyLCAxNSwgMjMyLCAxLCAxMiwgMTUsIDIzMiwgMCwgMTIsIDE1LCAyMzEsIAorICAgIDI1NSwgMTIsIDE1LCAyMzEsIDI1NCwgMTIsIDE1LCAyMzEsIDI1MywgMTIsIDE1LCAyMzEsIDI1MiwgMTIsIDE1LCAyMzEsIAorICAgIDI1MSwgMTIsIDE1LCAyMzEsIDI1MCwgMTIsIDE1LCAyMzEsIDI0OSwgMTIsIDE1LCAyMzEsIDI0OCwgMTIsIDE1LCAyMzEsIAorICAgIDI0NywgMTIsIDE1LCAyMzEsIDI0NiwgMTIsIDE1LCAyMzEsIDI0NSwgMTIsIDE1LCAyMzEsIDI0NCwgMTIsIDE1LCAyMzEsIAorICAgIDI0MywgMTIsIDE1LCAyMzEsIDI0MiwgMTIsIDE1LCAyMzEsIDI0MSwgMTIsIDE1LCAyMzEsIDI0MCwgMTIsIDE1LCAyMzEsIAorICAgIDIzOSwgMTIsIDE1LCAyMzEsIDIzOCwgMTIsIDE1LCAyMzEsIDIzNywgMTIsIDE1LCAyMzEsIDIzNiwgMTIsIDE1LCAyMzEsIAorICAgIDIzNSwgMTIsIDE1LCAyMzEsIDIzNCwgMTIsIDE1LCAyMzEsIDIzMywgMTIsIDE1LCAyMzEsIDIzMiwgMTIsIDE1LCAyMzEsIAorICAgIDIzMSwgMTIsIDE1LCAyMzEsIDIzMCwgMTIsIDE1LCAyMzEsIDIyOSwgMTIsIDE1LCAyMzEsIDIyOCwgMTIsIDE1LCAyMzEsIAorICAgIDIyNywgMTIsIDE1LCAyMzEsIDIyNiwgMTIsIDE1LCAyMzEsIDIyNSwgMTIsIDE1LCAyMzEsIDIyNCwgMTIsIDE1LCAyMzEsIAorICAgIDIyMywgMTIsIDE1LCAyMzEsIDIyMiwgMTIsIDE1LCAyMzEsIDIyMSwgMTIsIDE1LCAyMzEsIDIyMCwgMTIsIDE1LCAyMzEsIAorICAgIDIxOSwgMTIsIDE1LCAyMzEsIDIxOCwgMTIsIDE1LCAyMzEsIDIxNywgMTIsIDE1LCAyMzEsIDIxNiwgMTIsIDE1LCAyMzEsIAorICAgIDIxNSwgMTIsIDE1LCAyMzEsIDIxNCwgMTIsIDE1LCAyMzEsIDIxMywgMTIsIDE1LCAyMzEsIDIxMiwgMTIsIDE1LCAyMzEsIAorICAgIDIxMSwgMTIsIDE1LCAyMzEsIDIxMCwgMTIsIDE1LCAyMzEsIDIwOSwgMTIsIDE1LCAyMzEsIDIwOCwgMTIsIDE1LCAyMzEsIAorICAgIDIwNywgMTIsIDE1LCAyMzEsIDIwNiwgMTIsIDE1LCAyMzEsIDIwNSwgMTIsIDE1LCAyMzEsIDIwNCwgMTIsIDE1LCAyMzEsIAorICAgIDIwMywgMTIsIDE1LCAyMzEsIDIwMiwgMTIsIDE1LCAyMzEsIDIwMSwgMTIsIDE1LCAyMzEsIDIwMCwgMTIsIDE1LCAyMzEsIAorICAgIDE5OSwgMTIsIDE1LCAyMzEsIDE5OCwgMTIsIDE1LCAyMzEsIDE5NywgMTIsIDE1LCAyMzEsIDE5NiwgMTIsIDE1LCAyMzEsIAorICAgIDE5NSwgMTIsIDE1LCAyMzEsIDE5NCwgMTIsIDE1LCAyMzEsIDE5MywgMTIsIDE1LCAyMzEsIDE5MiwgMTIsIDE1LCAyMzEsIAorICAgIDE5MSwgMTIsIDE1LCAyMzEsIDE5MCwgMTIsIDE1LCAyMzEsIDE4OSwgMTIsIDE1LCAyMzEsIDE4OCwgMTIsIDE1LCAyMzEsIAorICAgIDE4NywgMTIsIDE1LCAyMzEsIDE4NiwgMTIsIDE1LCAyMzEsIDE4NSwgMTIsIDE1LCAyMzEsIDE4NCwgMTIsIDE1LCAyMzEsIAorICAgIDE4MywgMTIsIDE1LCAyMzEsIDE4MiwgMTIsIDE1LCAyMzEsIDE4MSwgMTIsIDE1LCAyMzEsIDE4MCwgMTIsIDE1LCAyMzEsIAorICAgIDE3OSwgMTIsIDE1LCAyMzEsIDE3OCwgMTIsIDE1LCAyMzEsIDE3NywgMTIsIDE1LCAyMzEsIDE3NiwgMTIsIDE1LCAyMzEsIAorICAgIDE3NSwgMTIsIDE1LCAyMzEsIDE3NCwgMTIsIDE1LCAyMzEsIDE3MywgMTIsIDE1LCAyMzEsIDE3MiwgMTIsIDE1LCAyMzEsIAorICAgIDE3MSwgMTIsIDE1LCAyMzEsIDE3MCwgMTIsIDE1LCAyMzEsIDE2OSwgMTIsIDE1LCAyMzEsIDE2OCwgMTIsIDE1LCAyMzEsIAorICAgIDE2NywgMTIsIDE1LCAyMzEsIDE2NiwgMTIsIDE1LCAyMzEsIDE2NSwgMTIsIDE1LCAyMzEsIDE2NCwgMTIsIDE1LCAyMzEsIAorICAgIDE2MywgMTIsIDE1LCAyMzEsIDE2MiwgMTIsIDE1LCAyMzEsIDE2MSwgMTIsIDE1LCAyMzEsIDE2MCwgMTIsIDE1LCAyMzEsIAorICAgIDE1OSwgMTIsIDE1LCAyMzEsIDE1OCwgMTIsIDE1LCAyMzEsIDE1NywgMTIsIDE1LCAyMzEsIDE1NiwgMTIsIDE1LCAyMzEsIAorICAgIDE1NSwgMTIsIDE1LCAyMzEsIDE1NCwgMTIsIDE1LCAyMzEsIDE1MywgMTIsIDE1LCAyMzEsIDE1MiwgMTIsIDE1LCAyMzEsIAorICAgIDE1MSwgMTIsIDE1LCAyMzEsIDE1MCwgMTIsIDE1LCAyMzEsIDE0OSwgMTIsIDE1LCAyMzEsIDE0OCwgMTIsIDE1LCAyMzEsIAorICAgIDE0NywgMTIsIDE1LCAyMzEsIDE0NiwgMTIsIDE1LCAyMzEsIDE0NSwgMTIsIDE1LCAyMzEsIDE0NCwgMTIsIDE1LCAyMzEsIAorICAgIDE0MywgMTIsIDE1LCAyMzEsIDE0MiwgMTIsIDE1LCAyMzEsIDE0MSwgMTIsIDE1LCAyMzEsIDE0MCwgMTIsIDE1LCAyMzEsIAorICAgIDEzOSwgMTIsIDE1LCAyMzEsIDEzOCwgMTIsIDE1LCAyMzEsIDEzNywgMTIsIDE1LCAyMzEsIDEzNiwgMTIsIDE1LCAyMzEsIAorICAgIDEzNSwgMTIsIDE1LCAyMzEsIDEzNCwgMTIsIDE1LCAyMzEsIDEzMywgMTIsIDE1LCAyMzEsIDEzMiwgMTIsIDE1LCAyMzEsIAorICAgIDEzMSwgMTIsIDE1LCAyMzEsIDEzMCwgMTIsIDE1LCAyMzEsIDEyOSwgMTIsIDE1LCAyMzEsIDEyOCwgMTIsIDE1LCAyMzEsIAorICAgIDEyNywgMTIsIDE1LCAyMzEsIDEyNiwgMTIsIDE1LCAyMzEsIDEyNSwgMTIsIDE1LCAyMzEsIDEyNCwgMTIsIDE1LCAyMzEsIAorICAgIDEyMywgMTIsIDE1LCAyMzEsIDEyMiwgMTIsIDE1LCAyMzEsIDEyMSwgMTIsIDE1LCAyMzEsIDEyMCwgMTIsIDE1LCAyMzEsIAorICAgIDExOSwgMTIsIDE1LCAyMzEsIDExOCwgMTIsIDE1LCAyMzEsIDExNywgMTIsIDE1LCAyMzEsIDExNiwgMTIsIDE1LCAyMzEsIAorICAgIDExNSwgMTIsIDE1LCAyMzEsIDExNCwgMTIsIDE1LCAyMzEsIDExMywgMTIsIDE1LCAyMzEsIDExMiwgMTIsIDE1LCAyMzEsIAorICAgIDExMSwgMTIsIDE1LCAyMzEsIDExMCwgMTIsIDE1LCAyMzEsIDEwOSwgMTIsIDE1LCAyMzEsIDEwOCwgMTIsIDE1LCAyMzEsIAorICAgIDEwNywgMTIsIDE1LCAyMzEsIDEwNiwgMTIsIDE1LCAyMzEsIDEwNSwgMTIsIDE1LCAyMzEsIDEwNCwgMTIsIDE1LCAyMzEsIAorICAgIDEwMywgMTIsIDE1LCAyMzEsIDEwMiwgMTIsIDE1LCAyMzEsIDEwMSwgMTIsIDE1LCAyMzEsIDEwMCwgMTIsIDE1LCAyMzEsIAorICAgIDk5LCAxMiwgMTUsIDIzMSwgOTgsIDEyLCAxNSwgMjMxLCA5NywgMTIsIDE1LCAyMzEsIDk2LCAxMiwgMTUsIDIzMSwgOTUsIAorICAgIDEyLCAxNSwgMjMxLCA5NCwgMTIsIDE1LCAyMzEsIDkzLCAxMiwgMTUsIDIzMSwgOTIsIDEyLCAxNSwgMjMxLCA5MSwgMTIsIAorICAgIDE1LCAyMzEsIDkwLCAxMiwgMTUsIDIzMSwgODksIDEyLCAxNSwgMjMxLCA4OCwgMTIsIDE1LCAyMzEsIDg3LCAxMiwgMTUsIAorICAgIDIzMSwgODYsIDEyLCAxNSwgMjMxLCA4NSwgMTIsIDE1LCAyMzEsIDg0LCAxMiwgMTUsIDIzMSwgODMsIDEyLCAxNSwgMjMxLCAKKyAgICA4MiwgMTIsIDE1LCAyMzEsIDgxLCAxMiwgMTUsIDIzMSwgODAsIDEyLCAxNSwgMjMxLCA3OSwgMTIsIDE1LCAyMzEsIDc4LCAKKyAgICAxMiwgMTUsIDIzMSwgNzcsIDEyLCAxNSwgMjMxLCA3NiwgMTIsIDE1LCAyMzEsIDc1LCAxMiwgMTUsIDIzMSwgNzQsIDEyLCAKKyAgICAxNSwgMjMxLCA3MywgMTIsIDE1LCAyMzEsIDcyLCAxMiwgMTUsIDIzMSwgNzEsIDEyLCAxNSwgMjMxLCA3MCwgMTIsIDE1LCAKKyAgICAyMzEsIDY5LCAxMiwgMTUsIDIzMSwgNjgsIDEyLCAxNSwgMjMxLCA2NywgMTIsIDE1LCAyMzEsIDY2LCAxMiwgMTUsIDIzMSwgCisgICAgNjUsIDEyLCAxNSwgMjMxLCA2NCwgMTIsIDE1LCAyMzEsIDYzLCAxMiwgMTUsIDIzMSwgNjIsIDEyLCAxNSwgMjMxLCA2MSwgCisgICAgMTIsIDE1LCAyMzEsIDYwLCAxMiwgMTUsIDIzMSwgNTksIDEyLCAxNSwgMjMxLCA1OCwgMTIsIDE1LCAyMzEsIDU3LCAxMiwgCisgICAgMTUsIDIzMSwgNTYsIDEyLCAxNSwgMjMxLCA1NSwgMTIsIDE1LCAyMzEsIDU0LCAxMiwgMTUsIDIzMSwgNTMsIDEyLCAxNSwgCisgICAgMjMxLCA1MiwgMTIsIDE1LCAyMzEsIDUxLCAxMiwgMTUsIDIzMSwgNTAsIDEyLCAxNSwgMjMxLCA0OSwgMTIsIDE1LCAyMzEsIAorICAgIDQ4LCAxMiwgMTUsIDIzMSwgNDcsIDEyLCAxNSwgMjMxLCA0NiwgMTIsIDE1LCAyMzEsIDQ1LCAxMiwgMTUsIDIzMSwgNDQsIAorICAgIDEyLCAxNSwgMjMxLCA0MywgMTIsIDE1LCAyMzEsIDQyLCAxMiwgMTUsIDIzMSwgNDEsIDEyLCAxNSwgMjMxLCA0MCwgMTIsIAorICAgIDE1LCAyMzEsIDM5LCAxMiwgMTUsIDIzMSwgMzgsIDEyLCAxNSwgMjMxLCAzNywgMTIsIDE1LCAyMzEsIDM2LCAxMiwgMTUsIAorICAgIDIzMSwgMzUsIDEyLCAxNSwgMjMxLCAzNCwgMTIsIDE1LCAyMzEsIDMzLCAxMiwgMTUsIDIzMSwgMzIsIDEyLCAxNSwgMjMxLCAKKyAgICAzMSwgMTIsIDE1LCAyMzEsIDMwLCAxMiwgMTUsIDIzMSwgMjksIDEyLCAxNSwgMjMxLCAyOCwgMTIsIDE1LCAyMzEsIDI3LCAKKyAgICAxMiwgMTUsIDIzMSwgMjYsIDEyLCAxNSwgMjMxLCAyNSwgMTIsIDE1LCAyMzEsIDI0LCAxMiwgMTUsIDIzMSwgMjMsIDEyLCAKKyAgICAxNSwgMjMxLCAyMiwgMTIsIDE1LCAyMzEsIDIxLCAxMiwgMTUsIDIzMSwgMjAsIDEyLCAxNSwgMjMxLCAxOSwgMTIsIDE1LCAKKyAgICAyMzEsIDE4LCAxMiwgMTUsIDIzMSwgMTcsIDEyLCAxNSwgMjMxLCAxNiwgMTIsIDE1LCAyMzEsIDE1LCAxMiwgMTUsIDIzMSwgCisgICAgMTQsIDEyLCAxNSwgMjMxLCAxMywgMTIsIDE1LCAyMzEsIDEyLCAxMiwgMTUsIDIzMSwgMTEsIDEyLCAxNSwgMjMxLCAxMCwgCisgICAgMTIsIDE1LCAyMzEsIDksIDEyLCAxNSwgMjMxLCA4LCAxMiwgMTUsIDIzMSwgNywgMTIsIDE1LCAyMzEsIDYsIDEyLCAxNSwgCisgICAgMjMxLCA1LCAxMiwgMTUsIDIzMSwgNCwgMTIsIDE1LCAyMzEsIDMsIDEyLCAxNSwgMjMxLCAyLCAxMiwgMTUsIDIzMSwgMSwgCisgICAgMTIsIDE1LCAyMzEsIDAsIDEyLCAxNSwgMjMwLCAyNTUsIDEyLCAxNSwgMjMwLCAyNTQsIDEyLCAxNSwgMjMwLCAyNTMsIDEyLCAKKyAgICAxNSwgMjMwLCAyNTIsIDEyLCAxNSwgMjMwLCAyNTEsIDEyLCAxNSwgMjMwLCAyNTAsIDEyLCAxNSwgMjMwLCAyNDksIDEyLCAKKyAgICAxNSwgMjMwLCAyNDgsIDEyLCAxNSwgMjMwLCAyNDcsIDEyLCAxNSwgMjMwLCAyNDYsIDEyLCAxNSwgMjMwLCAyNDUsIDEyLCAKKyAgICAxNSwgMjMwLCAyNDQsIDEyLCAxNSwgMjMwLCAyNDMsIDEyLCAxNSwgMjMwLCAyNDIsIDEyLCAxNSwgMjMwLCAyNDEsIDEyLCAKKyAgICAxNSwgMjMwLCAyNDAsIDEyLCAxNSwgMjMwLCAyMzksIDEyLCAxNSwgMjMwLCAyMzgsIDEyLCAxNSwgMjMwLCAyMzcsIDEyLCAKKyAgICAxNSwgMjMwLCAyMzYsIDEyLCAxNSwgMjMwLCAyMzUsIDEyLCAxNSwgMjMwLCAyMzQsIDEyLCAxNSwgMjMwLCAyMzMsIDEyLCAKKyAgICAxNSwgMjMwLCAyMzIsIDEyLCAxNSwgMjMwLCAyMzEsIDEyLCAxNSwgMjMwLCAyMzAsIDEyLCAxNSwgMjMwLCAyMjksIDEyLCAKKyAgICAxNSwgMjMwLCAyMjgsIDEyLCAxNSwgMjMwLCAyMjcsIDEyLCAxNSwgMjMwLCAyMjYsIDEyLCAxNSwgMjMwLCAyMjUsIDEyLCAKKyAgICAxNSwgMjMwLCAyMjQsIDEyLCAxNSwgMjMwLCAyMjMsIDEyLCAxNSwgMjMwLCAyMjIsIDEyLCAxNSwgMjMwLCAyMjEsIDEyLCAKKyAgICAxNSwgMjMwLCAyMjAsIDEyLCAxNSwgMjMwLCAyMTksIDEyLCAxNSwgMjMwLCAyMTgsIDEyLCAxNSwgMjMwLCAyMTcsIDEyLCAKKyAgICAxNSwgMjMwLCAyMTYsIDEyLCAxNSwgMjMwLCAyMTUsIDEyLCAxNSwgMjMwLCAyMTQsIDEyLCAxNSwgMjMwLCAyMTMsIDEyLCAKKyAgICAxNSwgMjMwLCAyMTIsIDEyLCAxNSwgMjMwLCAyMTEsIDEyLCAxNSwgMjMwLCAyMTAsIDEyLCAxNSwgMjMwLCAyMDksIDEyLCAKKyAgICAxNSwgMjMwLCAyMDgsIDEyLCAxNSwgMjMwLCAyMDcsIDEyLCAxNSwgMjMwLCAyMDYsIDEyLCAxNSwgMjMwLCAyMDUsIDEyLCAKKyAgICAxNSwgMjMwLCAyMDQsIDEyLCAxNSwgMjMwLCAyMDMsIDEyLCAxNSwgMjMwLCAyMDIsIDEyLCAxNSwgMjMwLCAyMDEsIDEyLCAKKyAgICAxNSwgMjMwLCAyMDAsIDEyLCAxNSwgMjMwLCAxOTksIDEyLCAxNSwgMjMwLCAxOTgsIDEyLCAxNSwgMjMwLCAxOTcsIDEyLCAKKyAgICAxNSwgMjMwLCAxOTYsIDEyLCAxNSwgMjMwLCAxOTUsIDEyLCAxNSwgMjMwLCAxOTQsIDEyLCAxNSwgMjMwLCAxOTMsIDEyLCAKKyAgICAxNSwgMjMwLCAxOTIsIDIyNSwgNzcsIDIwNywgMTMsIDE2NSwgMjA4LCAyNDQsIDE2NSwgMjM4LCA0MywgODEsIDE2NSwgCisgICAgMjE0LCA2MywgODEsIDE2NSwgNDEsIDU0LCAxNjUsIDI0MCwgMTk0LCA1NCwgMTY1LCAyMTYsIDI3LCA1NCwgMTY1LCAyNTEsIAorICAgIDg5LCAxNjUsIDI1MSwgMTMsIDE2NSwgNDksIDIxNiwgMTE1LCAxNjUsIDUxLCAyMTYsIDExNSwgMTY1LCAyNTAsIDE2NSwgCisgICAgMTY1LCA5MywgNTQsIDE2NSwgMjQ2LCA3MCwgMTY1LCAyMzMsIDMyLCAxNjUsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNjUsIAorICAgIDIwOSwgMTYsIDE2NSwgMTcsIDE5OSwgODEsIDE2NSwgMTcsIDEwMiwgMTY1LCAxNywgMTA1LCAxNjUsIDE3LCAxNDcsIDE2NSwgCisgICAgMTcsIDE0OSwgMTY1LCAxNywgMTY0LCAxNjUsIDE3LCAxODcsIDE2NSwgMTcsIDIxMCwgMTM1LCAxNjUsIDE3LCAxOTIsIAorICAgIDE2NSwgMTcsIDIxOSwgMTEzLCAxNjUsIDI0NiwgNzksIDE2NSwgMjEwLCAxNjcsIDE2NSwgMjI0LCAyNDEsIDU0LCAxNjUsIAorICAgIDIzOCwgMTIyLCA1NCwgMTY1LCAyMzUsIDY3LCA1NCwgMTY1LCAyMTQsIDc5LCA4MSwgMTY1LCAyNDYsIDY4LCAyNTAsIDE1NSwgCisgICAgMTY1LCA4LCA2LCAxLCA2MiwgMTY1LCA4LCA2LCAxLCAyNTAsIDEwMywgMTY1LCA4LCA2LCAxLCAyNDcsIDIyMywgMTY1LCA4LCAKKyAgICA2LCAxLCAyNDIsIDE1MywgMTY1LCA4LCA2LCAxLCA3MiwgMTY1LCA4LCA2LCAxLCAyMzgsIDUsIDE2NSwgOCwgNiwgMSwgCisgICAgMjM2LCAxNTYsIDE2NSwgOCwgNiwgMSwgMjM0LCAyNDcsIDE2NSwgOCwgNiwgMSwgNzAsIDE2NSwgOCwgNiwgMSwgMjI3LCAKKyAgICAyNTEsIDE2NSwgOCwgNiwgMSwgMjI3LCAxMTgsIDE2NSwgOCwgNiwgMSwgMTU2LCAxNjUsIDgsIDYsIDEsIDIyMywgMjQzLCAKKyAgICAxNjUsIDgsIDYsIDEsIDIyMCwgMjE0LCAxNjUsIDgsIDYsIDEsIDc0LCAxNjUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxNjUsIDgsIAorICAgIDYsIDEsIDIxNCwgMTY3LCAxNjUsIDgsIDYsIDEsIDE0NiwgMTY1LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTY1LCA4LCA2LCAxLCAKKyAgICAyMDcsIDgzLCAxNjUsIDgsIDYsIDEsIDY2LCAxNjUsIDgsIDYsIDEsIDIwMywgMTY4LCAxNjUsIDgsIDYsIDEsIDIwMSwgCisgICAgMTQ3LCAxNjUsIDgsIDYsIDEsIDIwMCwgMTk1LCAxNjUsIDgsIDYsIDEsIDIwMCwgMTIzLCAxNjUsIDgsIDYsIDEsIDE5OSwgCisgICAgMTU3LCAxNjUsIDQ5LCA1MiwgMTU5LCAxNjUsIDIxMywgMTA2LCAyMDksIDE2LCAxNjUsIDUxLCA1MiwgMTU5LCAxNjUsIAorICAgIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMTY1LCAxMjgsIDIyNCwgMTc2LCAxNjUsIDIzNSwgNzQsIDI1MSwgMjUxLCAxNjUsIDgsIAorICAgIDQsIDEsIDYyLCAxNjUsIDgsIDQsIDEsIDI1MCwgMTAzLCAxNjUsIDgsIDQsIDEsIDI0NywgMjIzLCAxNjUsIDgsIDQsIDEsIAorICAgIDI0MiwgMTUzLCAxNjUsIDgsIDQsIDEsIDcyLCAxNjUsIDgsIDQsIDEsIDIzOCwgNSwgMTY1LCA4LCA0LCAxLCAyMzYsIDE1NiwgCisgICAgMTY1LCA4LCA0LCAxLCAyMzQsIDI0NywgMTY1LCA4LCA0LCAxLCA3MCwgMTY1LCA4LCA0LCAxLCAyMjcsIDI1MSwgMTY1LCA4LCAKKyAgICA0LCAxLCAyMjcsIDExOCwgMTY1LCA4LCA0LCAxLCAxNTYsIDE2NSwgOCwgNCwgMSwgMjIzLCAyNDMsIDE2NSwgOCwgNCwgMSwgCisgICAgMjIwLCAyMTQsIDE2NSwgOCwgNCwgMSwgNzQsIDE2NSwgOCwgNCwgMSwgMjE2LCAyMjYsIDE2NSwgOCwgNCwgMSwgMjE0LCAKKyAgICAxNjcsIDE2NSwgOCwgNCwgMSwgMTQ2LCAxNjUsIDgsIDQsIDEsIDIxMiwgMTIyLCAxNjUsIDgsIDQsIDEsIDIwNywgODMsIAorICAgIDE2NSwgOCwgNCwgMSwgNjYsIDE2NSwgOCwgNCwgMSwgMjAzLCAxNjgsIDE2NSwgOCwgNCwgMSwgMjAxLCAxNDcsIDE2NSwgOCwgCisgICAgNCwgMSwgMjAwLCAxOTUsIDE2NSwgOCwgNCwgMSwgMjAwLCAxMjMsIDE2NSwgOCwgNCwgMSwgMTk5LCAxNTcsIDE2NSwgNDksIAorICAgIDI0MiwgMTk2LCAxNTksIDE2NSwgODMsIDIyNCwgMTc2LCAxNjUsIDUxLCAyNDIsIDE5NiwgMTU5LCAxNjUsIDIwNSwgMjQwLCAKKyAgICAyNDcsIDE1NywgMjA3LCAxMywgNTgsIDIxMSwgOTYsIDU4LCAyMTEsIDg1LCA1OCwgMjExLCA3NCwgNTgsIDIxMSwgNjIsIAorICAgIDU4LCAyMTEsIDUxLCA1OCwgMjExLCA0MCwgNTgsIDIxMSwgMjksIDU4LCAyMTEsIDE4LCA1OCwgMjExLCA3LCA1OCwgMjEwLCAKKyAgICAyNTUsIDU4LCAyMTAsIDI1NCwgNTgsIDIxMCwgMjUzLCA1OCwgMjEwLCAyNTIsIDU4LCAyMTAsIDI1MCwgNTgsIDIxMCwgCisgICAgMjQ5LCA1OCwgMjEwLCAyNDgsIDU4LCAyMTAsIDI0NywgNTgsIDIxMCwgMjQ2LCA1OCwgMjEwLCAyNDUsIDU4LCAyMTAsIAorICAgIDI0NCwgNTgsIDIxMCwgMjQzLCA1OCwgMjEwLCAyNDIsIDU4LCAyMTAsIDI0MSwgNTgsIDIxMCwgMjM5LCA1OCwgMjEwLCAKKyAgICAyMzgsIDU4LCAyMTAsIDIzNywgNTgsIDIxMCwgMjM2LCA1OCwgMjEwLCAyMzUsIDU4LCAyMTAsIDIzNCwgNTgsIDIxMCwgCisgICAgMjMzLCA1OCwgMjEwLCAyMzIsIDU4LCAyMTAsIDIzMSwgNTgsIDIxMCwgMjMwLCA1OCwgMjEwLCAyMjgsIDU4LCAyMTAsIAorICAgIDIyNywgNTgsIDIxMCwgMjI2LCA1OCwgMjEwLCAyMjUsIDU4LCAyMTAsIDIyNCwgNTgsIDIxMCwgMjIzLCA1OCwgMjEwLCAKKyAgICAyMjIsIDU4LCAyMTAsIDIyMSwgNTgsIDIxMCwgMjIwLCA1OCwgMjEwLCAyMTksIDU4LCAyMTAsIDIxNywgNTgsIDIxMCwgCisgICAgMjE2LCA1OCwgMjEwLCAyMTUsIDU4LCAyMTAsIDIxNCwgNTgsIDIxMCwgMjEzLCA1OCwgMjEwLCAyMTIsIDU4LCAyMTAsIAorICAgIDIxMSwgNTgsIDIxMCwgMjEwLCA1OCwgMjEwLCAyMDksIDU4LCAyMTAsIDIwOCwgNTgsIDIxMCwgMjA2LCA1OCwgMjEwLCAKKyAgICAyMDUsIDU4LCAyMTAsIDIwNCwgNTgsIDIxMCwgMjAzLCA1OCwgMjEwLCAyMDIsIDU4LCAyMTAsIDIwMSwgNTgsIDIxMCwgCisgICAgMjAwLCA1OCwgMjEwLCAxOTksIDU4LCAyMTAsIDE5OCwgNTgsIDIxMCwgMTk3LCA1OCwgMjEwLCAxOTUsIDU4LCAyMTAsIAorICAgIDE5NCwgNTgsIDIxMCwgMTkzLCA1OCwgMjEwLCAxOTIsIDU4LCAyMTAsIDE5MSwgNTgsIDIxMCwgMTkwLCA1OCwgMjEwLCAKKyAgICAxODksIDU4LCAyMTAsIDE4OCwgNTgsIDIxMCwgMTg3LCA1OCwgMjEwLCAxODYsIDU4LCAyMTAsIDE4NCwgNTgsIDIxMCwgCisgICAgMTgzLCA1OCwgMjEwLCAxODIsIDU4LCAyMTAsIDE4MSwgNTgsIDIxMCwgMTgwLCA1OCwgMjEwLCAxNzksIDU4LCAyMTAsIAorICAgIDE3OCwgNTgsIDIxMCwgMTc3LCA1OCwgMjEwLCAxNzYsIDU4LCAyMTAsIDE3NSwgNTgsIDIxMSwgMTcyLCA1OCwgMjExLCAKKyAgICAxNzEsIDU4LCAyMTEsIDE3MCwgNTgsIDIxMSwgMTY5LCA1OCwgMjExLCAxNjgsIDU4LCAyMTEsIDE2NywgNTgsIDIxMSwgCisgICAgMTY2LCA1OCwgMjExLCAxNjUsIDU4LCAyMTEsIDE2NCwgNTgsIDIxMSwgMTYzLCA1OCwgMjExLCAxNjEsIDU4LCAyMTEsIAorICAgIDE2MCwgNTgsIDIxMSwgMTU5LCA1OCwgMjExLCAxNTgsIDU4LCAyMTEsIDE1NywgNTgsIDIxMSwgMTU2LCA1OCwgMjExLCAKKyAgICAxNTUsIDU4LCAyMTEsIDE1NCwgNTgsIDIxMSwgMTUzLCA1OCwgMjExLCAxNTIsIDU4LCAyMTEsIDE1MCwgNTgsIDIxMSwgCisgICAgMTQ5LCA1OCwgMjExLCAxNDgsIDU4LCAyMTEsIDE0NywgNTgsIDIxMSwgMTQ2LCA1OCwgMjExLCAxNDUsIDU4LCAyMTEsIAorICAgIDE0NCwgNTgsIDIxMSwgMTQzLCA1OCwgMjExLCAxNDIsIDU4LCAyMTEsIDE0MSwgNTgsIDIxMSwgMTM5LCA1OCwgMjExLCAKKyAgICAxMzgsIDU4LCAyMTEsIDEzNywgNTgsIDIxMSwgMTM2LCA1OCwgMjExLCAxMzUsIDU4LCAyMTEsIDEzNCwgNTgsIDIxMSwgCisgICAgMTMzLCA1OCwgMjExLCAxMzIsIDU4LCAyMTEsIDEzMSwgNTgsIDIxMSwgMTMwLCA1OCwgMjExLCAxMjgsIDU4LCAyMTEsIAorICAgIDEyNywgNTgsIDIxMSwgMTI2LCA1OCwgMjExLCAxMjUsIDU4LCAyMTEsIDEyNCwgNTgsIDIxMSwgMTIzLCA1OCwgMjExLCAKKyAgICAxMjIsIDU4LCAyMTEsIDEyMSwgNTgsIDIxMSwgMTIwLCA1OCwgMjExLCAxMTksIDU4LCAyMTEsIDExNywgNTgsIDIxMSwgCisgICAgMTE2LCA1OCwgMjExLCAxMTUsIDU4LCAyMTEsIDExNCwgNTgsIDIxMSwgMTEzLCA1OCwgMjExLCAxMTIsIDU4LCAyMTEsIAorICAgIDExMSwgNTgsIDIxMSwgMTEwLCA1OCwgMjExLCAxMDksIDU4LCAyMTEsIDEwOCwgNTgsIDIxMSwgMTA2LCA1OCwgMjExLCAKKyAgICAxMDUsIDU4LCAyMTEsIDEwNCwgNTgsIDIxMSwgMTAzLCA1OCwgMjExLCAxMDIsIDU4LCAyMTEsIDEwMSwgNTgsIDIxMSwgCisgICAgMTAwLCA1OCwgMjExLCA5OSwgNTgsIDIxMSwgOTgsIDU4LCAyMTEsIDk3LCA1OCwgMjExLCA5NSwgNTgsIDIxMSwgOTQsIDU4LCAKKyAgICAyMTEsIDkzLCA1OCwgMjExLCA5MiwgNTgsIDIxMSwgOTEsIDU4LCAyMTEsIDkwLCA1OCwgMjExLCA4OSwgNTgsIDIxMSwgODgsIAorICAgIDU4LCAyMTEsIDg3LCA1OCwgMjExLCA4NiwgNTgsIDIxMSwgODQsIDU4LCAyMTEsIDgzLCA1OCwgMjExLCA4MiwgNTgsIDIxMSwgCisgICAgODEsIDU4LCAyMTEsIDgwLCA1OCwgMjExLCA3OSwgNTgsIDIxMSwgNzgsIDU4LCAyMTEsIDc3LCA1OCwgMjExLCA3NiwgNTgsIAorICAgIDIxMSwgNzUsIDU4LCAyMTEsIDczLCA1OCwgMjExLCA3MiwgNTgsIDIxMSwgNzEsIDU4LCAyMTEsIDcwLCA1OCwgMjExLCA2OSwgCisgICAgNTgsIDIxMSwgNjgsIDU4LCAyMTEsIDY3LCA1OCwgMjExLCA2NiwgNTgsIDIxMSwgNjUsIDU4LCAyMTEsIDY0LCA1OCwgMjExLCAKKyAgICA2MSwgNTgsIDIxMSwgNjAsIDU4LCAyMTEsIDU5LCA1OCwgMjExLCA1OCwgNTgsIDIxMSwgNTcsIDU4LCAyMTEsIDU2LCA1OCwgCisgICAgMjExLCA1NSwgNTgsIDIxMSwgNTQsIDU4LCAyMTEsIDUzLCA1OCwgMjExLCA1MiwgNTgsIDIxMSwgNTAsIDU4LCAyMTEsIDQ5LCAKKyAgICA1OCwgMjExLCA0OCwgNTgsIDIxMSwgNDcsIDU4LCAyMTEsIDQ2LCA1OCwgMjExLCA0NSwgNTgsIDIxMSwgNDQsIDU4LCAyMTEsIAorICAgIDQzLCA1OCwgMjExLCA0MiwgNTgsIDIxMSwgNDEsIDU4LCAyMTEsIDM5LCA1OCwgMjExLCAzOCwgNTgsIDIxMSwgMzcsIDU4LCAKKyAgICAyMTEsIDM2LCA1OCwgMjExLCAzNSwgNTgsIDIxMSwgMzQsIDU4LCAyMTEsIDMzLCA1OCwgMjExLCAzMiwgNTgsIDIxMSwgMzEsIAorICAgIDU4LCAyMTEsIDMwLCA1OCwgMjExLCAyOCwgNTgsIDIxMSwgMjcsIDU4LCAyMTEsIDI2LCA1OCwgMjExLCAyNSwgNTgsIDIxMSwgCisgICAgMjQsIDU4LCAyMTEsIDIzLCA1OCwgMjExLCAyMiwgNTgsIDIxMSwgMjEsIDU4LCAyMTEsIDIwLCA1OCwgMjExLCAxOSwgNTgsIAorICAgIDIxMSwgMTcsIDU4LCAyMTEsIDE2LCA1OCwgMjExLCAxNSwgNTgsIDIxMSwgMTQsIDU4LCAyMTEsIDEzLCA1OCwgMjExLCAxMiwgCisgICAgNTgsIDIxMSwgMTEsIDU4LCAyMTEsIDEwLCA1OCwgMjExLCA5LCA1OCwgMjExLCA4LCA1OCwgMjExLCA2LCA1OCwgMjExLCA1LCAKKyAgICA1OCwgMjExLCA0LCA1OCwgMjExLCAzLCA1OCwgMjExLCAyLCA1OCwgMjExLCAxLCA1OCwgMjExLCAwLCAyMTgsIDk3LCAyMTgsIAorICAgIDk5LCAyMDgsIDEwNSwgNzYsIDIzNCwgMTMzLCAyMDksIDE5LCAyMDgsIDEwNSwgNzYsIDIwNiwgMTI2LCAyMDgsIDI2LCAKKyAgICAyMzgsIDE3MSwgNzYsIDIwNiwgMTI2LCAyMzgsIDcxLCAyMzgsIDE3MSwgNzYsIDIwNSwgMTE4LCAyMzgsIDEzNCwgMjM4LCAKKyAgICAxNTgsIDIzOCwgMTU5LCAyNTEsIDI0MywgMjUxLCAyNDQsIDI1MSwgMTM5LCAyNDgsIDIzMywgMjQ5LCAxMjMsIDI0OCwgNDIsIAorICAgIDE3MSwgMjA3LCAxOSwgMjMzLCAxNzcsIDIwNywgMTksIDIzMywgMTAyLCAyMDcsIDI0LCAyMjQsIDE3NywgMjM3LCAxMzgsIAorICAgIDIyMCwgOCwgMjI0LCAxNzYsIDIzOCwgMTcxLCA3NiwgMjI0LCAxNzYsIDIyNCwgMjI1LCAyMTksIDQ3LCAyMzgsIDEzNywgCisgICAgMjI0LCAxNzcsIDIwNywgMTksIDgzLCAyMDcsIDE5LCAyMDEsIDE2OCwgMjM2LCAyNDIsIDIzNywgMTM4LCAyMzcsIDExNiwgCisgICAgMjQ3LCAxMjEsIDIxMywgMTA5LCAyNDIsIDI1MiwgMjEwLCAyOSwgMjE2LCAyNTQsIDIyNCwgMTAyLCAxMDIsIDIwOSwgMjksIAorICAgIDIxMCwgMjksIDIyOCwgMTE3LCAyMjQsIDEwMiwgMTk5LCA4MSwgMjA5LCAxODIsIDI0MSwgMjM5LCAyMjQsIDE2NywgMjM4LCAKKyAgICA5NiwgMjQwLCAyMjEsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDIsIDI0MSwgMjI4LCAyNDEsIDEwNywgMjQzLCAzNCwgMTA1LCAKKyAgICAyNDEsIDIyNywgMjQxLCAxMDcsIDI0MywgMzQsIDE0NywgMjQxLCAyMjYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDksIDI0MSwgCisgICAgMjI1LCAxODksIDI1MSwgMjQzLCAyMjAsIDE0MCwgMjA3LCAxMDksIDIyOCwgMTgwLCAyMDcsIDExMywgMjM4LCAxNzEsIDc2LCAKKyAgICAyMDUsIDExOSwgMjQ4LCAxMzQsIDIzOCwgNzgsIDI0NywgMTU2LCAyNDcsIDE1OCwgMjM4LCAxNzEsIDc2LCAyMjIsIDY1LCAKKyAgICAyMzgsIDEzNSwgMjA4LCAwLCAyMDgsIDE3LCAyMzgsIDk2LCAyMzgsIDk3LCAyMjgsIDkyLCAyMTAsIDE1NSwgMTQ5LCAyMzcsIAorICAgIDk3LCAyMTAsIDE1NCwgMjM2LCAxOTMsIDIyOCwgOTIsIDIxMCwgMTU1LCAxNDcsIDIzNSwgNTgsIDIxMCwgMTU0LCAyMzUsIAorICAgIDU1LCAyMjgsIDkyLCAyMTAsIDE1NSwgMTA1LCAyMTMsIDE4MSwgMjEwLCAxNTQsIDIxMiwgMTgwLCAyMjgsIDkyLCAyMTAsIAorICAgIDE1NSwgMTAyLCAyMDMsIDI0MCwgMjEwLCAxNTQsIDIwMywgMTk3LCAyMDgsIDI0NywgMjQxLCAxNDYsIDI0MSwgMTQ4LCAKKyAgICAyMTYsIDE5OSwgMjQ3LCAyMCwgMjE2LCAyMDEsIDEyMiwgMjE3LCAxMjgsIDIxNSwgMTgsIDIzMywgMTgwLCAyNDgsIDYxLCAKKyAgICAyMTYsIDE3LCAyMzQsIDk5LCAyNDgsIDc0LCAyMTgsIDI0MiwgMjQ4LCA2MSwgMjM0LCA5OSwgMjIwLCAxMDMsIDIyOCwgCisgICAgMTAzLCAyMjgsIDEwNSwgMjIwLCAyLCAyMjQsIDE3NiwgMjIwLCAyNSwgMjA4LCAxMDUsIDc2LCAyMTEsIDE3NywgMjUwLCAKKyAgICAyMjgsIDIwOCwgMTc5LCAyMzgsIDE3MSwgNzYsIDIxMSwgMTc3LCAyNTAsIDIyOCwgMjM4LCA5OSwgMTcxLCAyMDcsIDIwLCAKKyAgICAyMTAsIDE0MSwgMjMzLCAxNzcsIDIwNywgMjAsIDIxMCwgMTQxLCAyMzMsIDk5LCAxNzEsIDIwNywgMjAsIDMsIDIyNywgCisgICAgMTMwLCAyMzMsIDE3NywgMjA3LCAyMCwgMywgMjI3LCAxMzAsIDIzMywgMTAwLCAyMjQsIDE3NywgMjA3LCAyMCwgMjEwLCAKKyAgICAxNDEsIDgzLCAyMDcsIDIwLCAyMTAsIDE0MSwgMjAxLCAxNjcsIDIxNiwgMTA4LCAyMjQsIDE3NywgMjM2LCAyMzMsIDIxNiwgCisgICAgMTA4LCAyMjQsIDE3NywgMjM5LCAxNjcsIDIxNSwgMTI0LCAyMTYsIDEwOCwgMjI0LCAxNzcsIDI0OSwgMTIyLCAyMTYsIAorICAgIDEwOCwgMjI0LCAxNzcsIDIwMywgMjI4LCAyMTUsIDExOSwgMjEzLCAxMDYsIDIyNCwgMTc3LCAyMzcsIDEzOCwgMjEzLCAKKyAgICAxMDYsIDIyOCwgMTAzLCAyMTMsIDg4LCAyMDksIDEzOSwgMjEwLCAyOSwgMTA1LCAyMDksIDEzNiwgMjA4LCAxODEsIDIwOSwgCisgICAgMTM5LCAyMTAsIDI5LCAxNDcsIDIwOSwgMTM1LCAyMDgsIDE4MCwgMjQxLCAxMDcsIDI0MywgMzQsIDIwOCwgNDksIDI0MSwgCisgICAgMjIzLCAyMTUsIDQsIDIwMywgMTk2LCAxMDIsIDIxNSwgNCwgMjAzLCAxOTQsIDIxNCwgMjIzLCAyMTUsIDQsIDIwMywgMTk2LCAKKyAgICAxMDUsIDIxNSwgNCwgMjAzLCAxOTMsIDIxNCwgMjIyLCAyMTAsIDE0MiwgMjA1LCAxMTcsIDIwOCwgMTA0LCAyMDgsIDMyLCAKKyAgICAyNDcsIDE1NywgMjQ3LCAyMCwgMjQ3LCA5NSwgMjIyLCAyNCwgMjAxLCAxMDYsIDIyMCwgMjMyLCAyMDgsIDEwNSwgNzYsIAorICAgIDIzNSwgNDMsIDI1MCwgMjI4LCAyMDgsIDEwNSwgNzYsIDIxNCwgMjQxLCAyNTAsIDIyOCwgMjA4LCAyNDYsIDIzOCwgMTcxLCAKKyAgICA3NiwgMjM1LCA0MywgMjUwLCAyMjgsIDIzOCwgMTcxLCA3NiwgMjE0LCAyNDEsIDI1MCwgMjI4LCAyMzgsIDEzMiwgMjA4LCAKKyAgICAxMDUsIDc2LCAyMDgsIDQ5LCAyMDksIDUsIDIwOSwgMTM5LCAyMzUsIDc5LCAxNzEsIDIyOCwgNTIsIDIxMCwgMTE5LCAyMDksIAorICAgIDEzOSwgMTcxLCAyMjgsIDUyLCAyMTEsIDIxNywgMjQzLCAzNCwgMjEwLCAxNTEsIDIyOCwgNTIsIDI0MiwgMjE1LCAyMDgsIAorICAgIDUwLCAyMDYsIDE1MiwgMjA4LCAxMjMsIDIxNywgNDUsIDIwNywgOTgsIDI0NiwgNjksIDIxNywgMTMsIDIxNSwgNSwgMjIyLCAKKyAgICAyMywgMjE1LCAxMDksIDI1MSwgOSwgMjE0LCAyNTUsIDI0NiwgNjksIDI1MSwgMjUsIDIyMCwgOTEsIDIwOSwgMTkxLCA4LCAKKyAgICA2LCAxLCAyMzUsIDE5OSwgOCwgNCwgMSwgMjM1LCAxOTksIDI0NywgMzksIDI1MSwgMTE4LCAyMDcsIDEwMywgMjA4LCA2LCAKKyAgICAyNDYsIDgwLCAyMDksIDg2LCAyMjUsIDI4LCAyMjcsIDYzLCAxLCAyMjQsIDEyOSwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgCisgICAgMjM3LCA1LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMzcsIDE1MCwgMjI1LCA3NSwgMSwgMjEzLCAxLCAyMjUsIDc1LCAxLCAKKyAgICAyMjQsIDExMCwgNzksIDEzNCwgMjQ4LCAxNDYsIDIxMCwgNCwgMjM1LCAxNjIsIDIyMSwgMjI5LCAyMTMsIDk2LCAyMzYsIAorICAgIDE3MCwgMjM2LCAxNjksIDIzNiwgMTY4LCAyMjAsIDIzNCwgMTk4LCAyNDAsIDE5OCwgMjQxLCAxOTgsIDI0MywgMjI0LCA0NiwgCisgICAgMjEzLCA5LCAyMjQsIDQ4LCAyMTMsIDExLCAyMTYsIDc2LCAyMjQsIDQ1LCAyMTMsIDgsIDIxOSwgMTcsIDIyMSwgMTQwLCAKKyAgICAyMDEsIDIsIDIyNCwgNDcsIDIxMywgMTAsIDIzNiwgMTkyLCAyMTYsIDc1LCAyMDEsIDU0LCAyMzgsIDE5NCwgMjM2LCAxODAsIAorICAgIDIyMSwgMjEwLCAyMTcsIDc5LCAyMDMsIDE5OCwgOTksIDIyMSwgMjEwLCAyNDEsIDI0NSwgOTksIDk4LCAyMDUsIDk3LCA1NSwgCisgICAgMywgNTMsIDgzLCA5NywgODcsIDIwNSwgOTcsIDU1LCAzLCA1MywgODMsIDk3LCAxMSwgNSwgMjI4LCAxMCwgODEsIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA2NCwgMjI0LCAyNDcsIDE1OSwgMjAyLCAxNjgsIDIwMiwgNTcsIDIwMSwgMjQ1LCAKKyAgICAyMDEsIDIzNCwgMjAxLCAyMjMsIDIwMSwgMjEyLCAyMDEsIDIwMSwgMjAxLCAxOTAsIDIwMSwgMTc5LCAyMDIsIDE2NywgCisgICAgMjAyLCAxNTYsIDIwMiwgMTQ1LCAyMDIsIDEzNCwgMjAyLCAxMjMsIDIwMiwgMTEyLCAyMDIsIDEwMSwgMjQ3LCAyMjgsIAorICAgIDIxNywgMzAsIDgxLCAyNDgsIDExNCwgMTk4LCAyNDIsIDEwLCAyLCAyMTgsIDEwNiwgMjA2LCAxNTUsIDEwLCAyLCAyMTgsIAorICAgIDEwNiwgMTE5LCAyMTgsIDEwNiwgMjQ4LCA0LCAxMTksIDI0OCwgMywgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIwOSwgODIsIAorICAgIDI0NiwgMTk2LCAyMDMsIDY5LCAyMDIsIDkwLCAyMDIsIDc5LCAyMDIsIDY4LCAyMDIsIDU2LCAyMDIsIDQ1LCAyMDIsIDM0LCAKKyAgICAyMDIsIDIzLCAyMDIsIDEyLCAyMDIsIDEsIDIwMSwgMjQ5LCAyMDEsIDI0OCwgMjAxLCAyNDcsIDIwMSwgMjQ2LCAyMDEsIAorICAgIDI0NCwgMjAxLCAyNDMsIDIwMSwgMjQyLCAyMDEsIDI0MSwgMjAxLCAyNDAsIDIwMSwgMjM5LCAyMDEsIDIzOCwgMjAxLCAKKyAgICAyMzcsIDIwMSwgMjM2LCAyMDEsIDIzNSwgMjAxLCAyMzMsIDIwMSwgMjMyLCAyMDEsIDIzMSwgMjAxLCAyMzAsIDIwMSwgCisgICAgMjI5LCAyMDEsIDIyOCwgMjAxLCAyMjcsIDIwMSwgMjI2LCAyMDEsIDIyNSwgMjAxLCAyMjQsIDIwMSwgMjIyLCAyMDEsIAorICAgIDIyMSwgMjAxLCAyMjAsIDIwMSwgMjE5LCAyMDEsIDIxOCwgMjAxLCAyMTcsIDIwMSwgMjE2LCAyMDEsIDIxNSwgMjAxLCAKKyAgICAyMTQsIDIwMSwgMjEzLCAyMDEsIDIxMSwgMjAxLCAyMTAsIDIwMSwgMjA5LCAyMDEsIDIwOCwgMjAxLCAyMDcsIDIwMSwgCisgICAgMjA2LCAyMDEsIDIwNSwgMjAxLCAyMDQsIDIwMSwgMjAzLCAyMDEsIDIwMiwgMjAxLCAyMDAsIDIwMSwgMTk5LCAyMDEsIAorICAgIDE5OCwgMjAxLCAxOTcsIDIwMSwgMTk2LCAyMDEsIDE5NSwgMjAxLCAxOTQsIDIwMSwgMTkzLCAyMDEsIDE5MiwgMjAxLCAKKyAgICAxOTEsIDIwMSwgMTg5LCAyMDEsIDE4OCwgMjAxLCAxODcsIDIwMSwgMTg2LCAyMDEsIDE4NSwgMjAxLCAxODQsIDIwMSwgCisgICAgMTgzLCAyMDEsIDE4MiwgMjAxLCAxODEsIDIwMSwgMTgwLCAyMDEsIDE3OCwgMjAxLCAxNzcsIDIwMSwgMTc2LCAyMDEsIAorICAgIDE3NSwgMjAxLCAxNzQsIDIwMSwgMTczLCAyMDEsIDE3MiwgMjAxLCAxNzEsIDIwMSwgMTcwLCAyMDEsIDE2OSwgMjAyLCAKKyAgICAxNjYsIDIwMiwgMTY1LCAyMDIsIDE2NCwgMjAyLCAxNjMsIDIwMiwgMTYyLCAyMDIsIDE2MSwgMjAyLCAxNjAsIDIwMiwgCisgICAgMTU5LCAyMDIsIDE1OCwgMjAyLCAxNTcsIDIwMiwgMTU1LCAyMDIsIDE1NCwgMjAyLCAxNTMsIDIwMiwgMTUyLCAyMDIsIAorICAgIDE1MSwgMjAyLCAxNTAsIDIwMiwgMTQ5LCAyMDIsIDE0OCwgMjAyLCAxNDcsIDIwMiwgMTQ2LCAyMDIsIDE0NCwgMjAyLCAKKyAgICAxNDMsIDIwMiwgMTQyLCAyMDIsIDE0MSwgMjAyLCAxNDAsIDIwMiwgMTM5LCAyMDIsIDEzOCwgMjAyLCAxMzcsIDIwMiwgCisgICAgMTM2LCAyMDIsIDEzNSwgMjAyLCAxMzMsIDIwMiwgMTMyLCAyMDIsIDEzMSwgMjAyLCAxMzAsIDIwMiwgMTI5LCAyMDIsIAorICAgIDEyOCwgMjAyLCAxMjcsIDIwMiwgMTI2LCAyMDIsIDEyNSwgMjAyLCAxMjQsIDIwMiwgMTIyLCAyMDIsIDEyMSwgMjAyLCAKKyAgICAxMjAsIDIwMiwgMTE5LCAyMDIsIDExOCwgMjAyLCAxMTcsIDIwMiwgMTE2LCAyMDIsIDExNSwgMjAyLCAxMTQsIDIwMiwgCisgICAgMTEzLCAyMDIsIDExMSwgMjAyLCAxMTAsIDIwMiwgMTA5LCAyMDIsIDEwOCwgMjAyLCAxMDcsIDIwMiwgMTA2LCAyMDIsIAorICAgIDEwNSwgMjAyLCAxMDQsIDIwMiwgMTAzLCAyMDIsIDEwMiwgMjAyLCAxMDAsIDIwMiwgOTksIDIwMiwgOTgsIDIwMiwgOTcsIAorICAgIDIwMiwgOTYsIDIwMiwgOTUsIDIwMiwgOTQsIDIwMiwgOTMsIDIwMiwgOTIsIDIwMiwgOTEsIDIwMiwgODksIDIwMiwgODgsIAorICAgIDIwMiwgODcsIDIwMiwgODYsIDIwMiwgODUsIDIwMiwgODQsIDIwMiwgODMsIDIwMiwgODIsIDIwMiwgODEsIDIwMiwgODAsIAorICAgIDIwMiwgNzgsIDIwMiwgNzcsIDIwMiwgNzYsIDIwMiwgNzUsIDIwMiwgNzQsIDIwMiwgNzMsIDIwMiwgNzIsIDIwMiwgNzEsIAorICAgIDIwMiwgNzAsIDIwMiwgNjksIDIwMiwgNjcsIDIwMiwgNjYsIDIwMiwgNjUsIDIwMiwgNjQsIDIwMiwgNjMsIDIwMiwgNjIsIAorICAgIDIwMiwgNjEsIDIwMiwgNjAsIDIwMiwgNTksIDIwMiwgNTgsIDIwMiwgNTUsIDIwMiwgNTQsIDIwMiwgNTMsIDIwMiwgNTIsIAorICAgIDIwMiwgNTEsIDIwMiwgNTAsIDIwMiwgNDksIDIwMiwgNDgsIDIwMiwgNDcsIDIwMiwgNDYsIDIwMiwgNDQsIDIwMiwgNDMsIAorICAgIDIwMiwgNDIsIDIwMiwgNDEsIDIwMiwgNDAsIDIwMiwgMzksIDIwMiwgMzgsIDIwMiwgMzcsIDIwMiwgMzYsIDIwMiwgMzUsIAorICAgIDIwMiwgMzMsIDIwMiwgMzIsIDIwMiwgMzEsIDIwMiwgMzAsIDIwMiwgMjksIDIwMiwgMjgsIDIwMiwgMjcsIDIwMiwgMjYsIAorICAgIDIwMiwgMjUsIDIwMiwgMjQsIDIwMiwgMjIsIDIwMiwgMjEsIDIwMiwgMjAsIDIwMiwgMTksIDIwMiwgMTgsIDIwMiwgMTcsIAorICAgIDIwMiwgMTYsIDIwMiwgMTUsIDIwMiwgMTQsIDIwMiwgMTMsIDIwMiwgMTEsIDIwMiwgMTAsIDIwMiwgOSwgMjAyLCA4LCAKKyAgICAyMDIsIDcsIDIwMiwgNiwgMjAyLCA1LCAyMDIsIDQsIDIwMiwgMywgMjAyLCAyLCAyMDIsIDAsIDIwMSwgMjU1LCAyMDEsIAorICAgIDI1NCwgMjAxLCAyNTMsIDIwMSwgMjUyLCAyMDEsIDI1MSwgMjAxLCAyNTAsIDgsIDYsIDEsIDM1LCAzLCAyMjIsIDIyOSwgCisgICAgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgODMsIAorICAgIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDgzLCAKKyAgICAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIAorICAgIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIAorICAgIDIyMiwgMjI4LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAKKyAgICAxNDcsIDI2LCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDI0NywgMTI1LCA4LCA2LCAxLCAyMzMsIAorICAgIDE5LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNCwgMSwgMjMzLCAxOSwgMywgNzMsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAyMjAsIDAsIDMsIDIwNSwgMjQxLCA1NiwgCisgICAgOCwgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIAorICAgIDYsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgODMsIAorICAgIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgCisgICAgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMTY5LCA4LCA2LCAxLCAyMTIsIAorICAgIDEyMywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDYsIAorICAgIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNiwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIAorICAgIDYsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAyMDUsIAorICAgIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIAorICAgIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE5NywgMywgNzMsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDczLCA4OCwgCisgICAgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAzLCA3MywgODgsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgNzMsIDg4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgCisgICAgMywgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyMTcsIDExMSwgMjYsIDczLCA4OCwgMjYsIDE2OSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIDI2LCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgCisgICAgNiwgMSwgMjI3LCAyNTIsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIAorICAgIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAKKyAgICAyMjMsIDI0NCwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMjE0LCAzMywgCisgICAgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAxMTEsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIAorICAgIDI1MSwgMjIyLCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxNzYsIDE2MywgMywgMjM1LCA3MywgOCwgNCwgMSwgMTc2LCAxNjMsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjA0LCAxODUsIDIwMywgMTY5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAzLCAKKyAgICAxNjksIDMsIDE2OSwgOCwgNCwgMSwgMjExLCAyMTksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIxMSwgMjE5LCAzLCAxNjksIDgsIAorICAgIDQsIDEsIDIzMywgMTg2LCAyMTEsIDIxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxODYsIDIxMSwgMjE5LCAzLCAKKyAgICAxNjksIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyNTEsIDE0MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIwMSwgNzIsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg3LCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjE3LCAxMjEsIDksIDIxMCwgMTUxLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCA2NiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5OSwgMjExLCA5LCAKKyAgICAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgNzIsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAKKyAgICAzLCAyNTEsIDIyMSwgOSwgMjEwLCAxNTEsIDIxOCwgMjI4LCAzLCAyMjYsIDI1MiwgMTg1LCAxLCAyMjYsIDE4MiwgNDUsIAorICAgIDExMSwgMjI3LCAxMTgsIDQ1LCAxMTEsIDIxOSwgMjU1LCA0NSwgMTExLCAyNDcsIDIyMywgNDUsIDExMSwgMjE4LCA2MiwgCisgICAgNDUsIDExMSwgMjA1LCAwLCA0NSwgMTExLCAyMTksIDIyLCA0NSwgMTExLCAyMDcsIDgzLCA0NSwgMTExLCAyMjAsIDIxNCwgCisgICAgNDUsIDExMSwgMjE2LCAyMjYsIDQ1LCAxMTEsIDIyMywgMjQzLCA0NSwgMTExLCAyMDAsIDEyMywgNDUsIDExMSwgMTQ2LCAKKyAgICA0NSwgMTExLCAxNTYsIDQ1LCAxMTEsIDIwMywgMTY4LCA0NSwgMTExLCAyMjQsIDEzMCwgNDUsIDExMSwgMjI0LCAxMzksIAorICAgIDQ1LCAxMTEsIDIxMiwgMjE2LCA0NSwgMTExLCAyMTksIDQsIDQ1LCAxMTEsIDIyNywgMjUxLCA0NSwgMTExLCAyMTAsIDExNiwgCisgICAgNDUsIDExMSwgMjA4LCAxODIsIDQ1LCAxMTEsIDIxMiwgMTIyLCA0NSwgMTExLCAyMzQsIDI0NywgNDUsIDExMSwgMjI2LCAKKyAgICAzMCwgNDUsIDUsIDIyNywgMTA1LCA0NSwgNSwgMjI2LCAxNjMsIDQ1LCA1LCAyMjYsIDE1MCwgNDUsIDUsIDIyNiwgMTUsIAorICAgIDQ1LCA1LCAyMjUsIDIzNiwgNDUsIDUsIDIyNywgOCwgNDUsIDUsIDIyNywgNSwgNDUsIDUsIDIyNywgODIsIDQ1LCA1LCAKKyAgICAyMjYsIDg4LCA0NSwgNSwgMjI2LCA2OCwgNDUsIDUsIDIyNywgMjYsIDQ1LCA1LCAyMTksIDI1MiwgNDUsIDUsIDIxOSwgCisgICAgMjAxLCA0NSwgNSwgMjE5LCAxOTcsIDQ1LCA1LCAyMTksIDE2NiwgNDUsIDUsIDIxOSwgMTU4LCA0NSwgNSwgMjE5LCAyNDAsIAorICAgIDQ1LCA1LCAyMTksIDIzOCwgNDUsIDUsIDIxOSwgMjQ5LCA0NSwgNSwgMjE5LCAxNzgsIDQ1LCA1LCAyMTksIDE3MywgNDUsIAorICAgIDUsIDIxOSwgMjQyLCA0NSwgNSwgMjQ3LCAxODksIDQ1LCA1LCAyNDYsIDE3MywgNDUsIDUsIDI0NiwgMTYzLCA0NSwgNSwgCisgICAgMjQyLCAyMTQsIDQ1LCA1LCAyNDIsIDE3OCwgNDUsIDUsIDI0NywgNzYsIDQ1LCA1LCAyNDcsIDY4LCA0NSwgNSwgMjQ3LCAKKyAgICAxNzgsIDQ1LCA1LCAyNDYsIDkxLCA0NSwgNSwgMjQzLCAzMCwgNDUsIDUsIDI0NywgMTA5LCA0NSwgNSwgMjE4LCA1OSwgNDUsIAorICAgIDUsIDIxOCwgNDEsIDQ1LCA1LCAyMTgsIDM2LCA0NSwgNSwgMjE4LCAxOSwgNDUsIDUsIDIxOCwgMTEsIDQ1LCA1LCAyMTgsIAorICAgIDUwLCA0NSwgNSwgMjE4LCA0OSwgNDUsIDUsIDIxOCwgNTYsIDQ1LCA1LCAyMTgsIDI2LCA0NSwgNSwgMjE4LCAyMywgNDUsIAorICAgIDUsIDIxOCwgNTMsIDQ1LCA1LCAyMDQsIDI1MiwgNDUsIDUsIDIwNCwgMjMyLCA0NSwgNSwgMjA0LCAyMzEsIDQ1LCA1LCAKKyAgICAyMDQsIDIyMCwgNDUsIDUsIDIwNCwgMjE3LCA0NSwgNSwgMjA0LCAyNDgsIDQ1LCA1LCAyMDQsIDI0NywgNDUsIDUsIDIwNCwgCisgICAgMjUxLCA0NSwgNSwgMjA0LCAyMzAsIDQ1LCA1LCAyMDQsIDIyOSwgNDUsIDUsIDIwNCwgMjUwLCA0NSwgNSwgMjE5LCAyMCwgCisgICAgNDUsIDUsIDIxOSwgNiwgNDUsIDUsIDIxOSwgNSwgNDUsIDUsIDIxOCwgMjQ1LCA0NSwgNSwgMjE4LCAyNDQsIDQ1LCA1LCAKKyAgICAyMTksIDE2LCA0NSwgNSwgMjE5LCAxNSwgNDUsIDUsIDIxOSwgMTksIDQ1LCA1LCAyMTgsIDI0NywgNDUsIDUsIDIxOCwgCisgICAgMjQ2LCA0NSwgNSwgMjE5LCAxOCwgNDUsIDUsIDIwNywgMzIsIDQ1LCA1LCAyMDYsIDE1LCA0NSwgNSwgMjA1LCAyNTUsIDQ1LCAKKyAgICA1LCAyMDQsIDIxNSwgNDUsIDUsIDIwNCwgMTc2LCA0NSwgNSwgMjA2LCAyMDEsIDQ1LCA1LCAyMDYsIDE5MCwgNDUsIDUsIAorICAgIDIwNywgOCwgNDUsIDUsIDEzOCwgNDUsIDUsIDIwNSwgMTYxLCA0NSwgNSwgMjA2LCAyMjEsIDQ1LCA1LCAyMjAsIDE1NywgCisgICAgNDUsIDUsIDIxOSwgMTUwLCA0NSwgNSwgMjE5LCAxMjUsIDQ1LCA1LCAyMTgsIDEzMywgNDUsIDUsIDIxOCwgNzQsIDQ1LCA1LCAKKyAgICAyMjAsIDM0LCA0NSwgNSwgMjIwLCAyOSwgNDUsIDUsIDIyMCwgMTQzLCA0NSwgNSwgMjE4LCAyNDEsIDQ1LCA1LCAyMTgsIAorICAgIDIyOSwgNDUsIDUsIDIyMCwgMTE2LCA0NSwgNSwgMjE2LCAyMTAsIDQ1LCA1LCAyMTUsIDIwNCwgNDUsIDUsIDIxNSwgMTY2LCAKKyAgICA0NSwgNSwgMjE0LCAyMjQsIDQ1LCA1LCAyMTQsIDE5MCwgNDUsIDUsIDIxNiwgNzMsIDQ1LCA1LCAyMTYsIDYxLCA0NSwgNSwgCisgICAgMjE2LCAxOTAsIDQ1LCA1LCAyMTUsIDEwNiwgNDUsIDUsIDIxNSwgODEsIDQ1LCA1LCAyMTYsIDg3LCA0NSwgNSwgMjIyLCAKKyAgICAyMzMsIDQ1LCA1LCAyMjEsIDIxMSwgNDUsIDUsIDIyMSwgMTgxLCA0NSwgNSwgMjIxLCA0MSwgNDUsIDUsIDIyMCwgMjQzLCAKKyAgICA0NSwgNSwgMjIyLCA3NiwgNDUsIDUsIDIyMiwgNjQsIDQ1LCA1LCAyMjIsIDE5OCwgNDUsIDUsIDIyMSwgMTM2LCA0NSwgNSwgCisgICAgMjIxLCA4NywgNDUsIDUsIDIyMiwgMTIzLCA0NSwgNSwgMjAwLCAxMDksIDQ1LCA1LCAyMDAsIDksIDQ1LCA1LCAyMDAsIDAsIAorICAgIDQ1LCA1LCAxOTksIDIxMSwgNDUsIDUsIDE5OSwgMTc5LCA0NSwgNSwgMjAwLCA1MSwgNDUsIDUsIDIwMCwgNDgsIDQ1LCA1LCAKKyAgICAyMDAsIDg4LCA0NSwgNSwgMTk5LCAyNDUsIDQ1LCA1LCAxOTksIDIzMCwgNDUsIDUsIDIwMCwgNjEsIDQ1LCA1LCAyMTMsIAorICAgIDI0OCwgNDUsIDUsIDIxMywgODgsIDQ1LCA1LCAyMTMsIDMzLCA0NSwgNSwgMjEyLCAxNzUsIDQ1LCA1LCAyMTIsIDE0MywgCisgICAgNDUsIDUsIDIxMywgMTkwLCA0NSwgNSwgMjEzLCAxNjcsIDQ1LCA1LCAyMTMsIDIyOSwgNDUsIDUsIDIxMywgMSwgNDUsIDUsIAorICAgIDIxMiwgMjM4LCA0NSwgNSwgMjEzLCAxOTksIDQ1LCA1LCAyMjUsIDE3NSwgNDUsIDUsIDIyNCwgMjEwLCA0NSwgNSwgMjI0LCAKKyAgICAxOTIsIDQ1LCA1LCAyMjQsIDQyLCA0NSwgNSwgMjI0LCAxMywgNDUsIDUsIDIyNSwgNDAsIDQ1LCA1LCAyMjUsIDMyLCA0NSwgCisgICAgNSwgMjI1LCAxNDksIDQ1LCA1LCAyMjQsIDExMCwgNDUsIDUsIDIyNCwgNzgsIDQ1LCA1LCAyMjUsIDU4LCA0NSwgNSwgMjAzLCAKKyAgICA4OSwgNDUsIDUsIDIwMiwgMjM0LCA0NSwgNSwgMjAyLCAyMTksIDQ1LCA1LCAyMDEsIDE2NiwgNDUsIDUsIDIwMSwgMTU5LCAKKyAgICA0NSwgNSwgMjAzLCA1OSwgNDUsIDUsIDIwMywgNTQsIDQ1LCA1LCAyMDMsIDg1LCA0NSwgNSwgMjAyLCAxOTMsIDQ1LCA1LCAKKyAgICAyMDIsIDE3OSwgNDUsIDUsIDIwMywgNjUsIDQ1LCA1LCAyMjQsIDEyOCwgNDUsIDUsIDIyNCwgMTIzLCA0NSwgNSwgMjI0LCAKKyAgICAxMjIsIDQ1LCA1LCAyMjQsIDExOSwgNDUsIDUsIDIyNCwgMTE4LCA0NSwgNSwgMjI0LCAxMjUsIDQ1LCA1LCAyMjQsIDEyNCwgCisgICAgNDUsIDUsIDIyNCwgMTI3LCA0NSwgNSwgMjI0LCAxMjEsIDQ1LCA1LCAyMjQsIDEyMCwgNDUsIDUsIDIyNCwgMTI2LCA0NSwgCisgICAgNSwgMjI0LCAxMzcsIDQ1LCA1LCAyMjQsIDEzMiwgNDUsIDUsIDIyNCwgMTMxLCA0NSwgNSwgMjI0LCAxMTUsIDQ1LCA1LCAKKyAgICAyMjQsIDExNCwgNDUsIDUsIDIyNCwgMTM0LCA0NSwgNSwgMjI0LCAxMzMsIDQ1LCA1LCAyMjQsIDEzNiwgNDUsIDUsIDIyNCwgCisgICAgMTE3LCA0NSwgNSwgMjI0LCAxMTYsIDQ1LCA1LCAyMjQsIDEzNSwgNDUsIDUsIDIxMiwgMjE0LCA0NSwgNSwgMjEyLCAyMDMsIAorICAgIDQ1LCA1LCAyMTIsIDIwMiwgNDUsIDUsIDIxMiwgMTk1LCA0NSwgNSwgMjEyLCAxODgsIDQ1LCA1LCAyMTIsIDIxMCwgNDUsIAorICAgIDUsIDIxMiwgMjA5LCA0NSwgNSwgMjEyLCAyMTMsIDQ1LCA1LCAyMTIsIDIwMSwgNDUsIDUsIDIxMiwgMjAwLCA0NSwgNSwgCisgICAgMjEyLCAyMTIsIDQ1LCA1LCAyMTksIDIsIDQ1LCA1LCAyMTgsIDI1MywgNDUsIDUsIDIxOCwgMjUyLCA0NSwgNSwgMjE4LCAKKyAgICAyNDksIDQ1LCA1LCAyMTgsIDI0OCwgNDUsIDUsIDIxOCwgMjU1LCA0NSwgNSwgMjE4LCAyNTQsIDQ1LCA1LCAyMTksIDEsIAorICAgIDQ1LCA1LCAyMTgsIDI1MSwgNDUsIDUsIDIxOCwgMjUwLCA0NSwgNSwgMjE5LCAwLCA0NSwgNSwgMjI3LCAyNDcsIDQ1LCA1LCAKKyAgICAyMjcsIDIwNywgNDUsIDUsIDIyNywgMjAwLCA0NSwgNSwgMjI3LCAxNDcsIDQ1LCA1LCAyMjcsIDEyOCwgNDUsIDUsIDIyNywgCisgICAgMjI3LCA0NSwgNSwgMjI3LCAyMjUsIDQ1LCA1LCAyMjcsIDI0MSwgNDUsIDUsIDIyNywgMTY2LCA0NSwgNSwgMjI3LCAxNTYsIAorICAgIDQ1LCA1LCAyMjcsIDIzNCwgNDUsIDUsIDIxMCwgMTA5LCA0NSwgNSwgMjEwLCAzMywgNDUsIDUsIDIxMCwgMjgsIDQ1LCA1LCAKKyAgICAyMDksIDIyMCwgNDUsIDUsIDIwOSwgMjAzLCA0NSwgNSwgMjEwLCA2NSwgNDUsIDUsIDIxMCwgNjMsIDQ1LCA1LCAyMTAsIAorICAgIDk4LCA0NSwgNSwgMjEwLCA4LCA0NSwgNSwgMjEwLCAyLCA0NSwgNSwgMjEwLCA3NCwgNDUsIDUsIDIwOCwgMTc4LCA0NSwgNSwgCisgICAgMjA4LCAxNDcsIDQ1LCA1LCAyMDgsIDE0MywgNDUsIDUsIDIwOCwgMTM0LCA0NSwgNSwgMjA4LCAxMzEsIDQ1LCA1LCAyMDgsIAorICAgIDE1MywgNDUsIDUsIDIwOCwgMTUyLCA0NSwgNSwgMjA4LCAxNzcsIDQ1LCA1LCAyMDgsIDEzOSwgNDUsIDUsIDIwOCwgMTM4LCAKKyAgICA0NSwgNSwgMjA4LCAxNTUsIDQ1LCA1LCAyMTIsIDYxLCA0NSwgNSwgMjA5LCAxODIsIDQ1LCA1LCAyMDksIDE2MSwgNDUsIDUsIAorICAgIDIwOCwgMjQsIDQ1LCA1LCAyMDcsIDE5MywgNDUsIDUsIDIxMSwgMjAyLCA0NSwgNSwgMjExLCAxOTAsIDQ1LCA1LCAyMTIsIAorICAgIDQ2LCA0NSwgNSwgMjA5LCAyOSwgNDUsIDUsIDIwOSwgMTAsIDQ1LCA1LCAyMTEsIDI0MywgNDUsIDUsIDIzNCwgMjMzLCA0NSwgCisgICAgNSwgMjM0LCA3NSwgNDUsIDUsIDIzNCwgNTQsIDQ1LCA1LCAyMzMsIDk3LCA0NSwgNSwgMjMzLCA3MSwgNDUsIDUsIDIzNCwgCisgICAgMTM5LCA0NSwgNSwgMjM0LCAxMjAsIDQ1LCA1LCAyMzQsIDIyMywgNDUsIDUsIDIzMywgMjA3LCA0NSwgNSwgMjMzLCAxODgsIAorICAgIDQ1LCA1LCAyMzQsIDE1MCwgNDUsIDUsIDIyNiwgMjksIDQ1LCA1LCAyMjYsIDI4LCA0NSwgNSwgMjI2LCAyMywgNDUsIDUsIAorICAgIDIyNiwgMjIsIDQ1LCA1LCAyMjYsIDE5LCA0NSwgNSwgMjI2LCAxOCwgNDUsIDUsIDIyNiwgMjUsIDQ1LCA1LCAyMjYsIDI0LCAKKyAgICA0NSwgNSwgMjI2LCAyNywgNDUsIDUsIDIyNiwgMjEsIDQ1LCA1LCAyMjYsIDIwLCA0NSwgNSwgMjI2LCAyNiwgNDUsIDUsIAorICAgIDIwOSwgMjI3LCAxNDMsIDExMSwgMiwgMjAwLCA3NCwgMTQzLCAxMTEsIDIsIDIxMywgMjE4LCAxNDMsIDExMSwgMiwgMjEzLCAKKyAgICAxMzQsIDExOCwgMSwgMjA0LCAxMDIsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE2MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjI2LCAyMDcsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNiwgODgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNiwgMTc4LCAKKyAgICA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTksIDE3OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ3LCAxOTAsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDI0NywgMzcsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0NiwgOTEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0NiwgCisgICAgMjEwLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTgsIDI2LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDIsIDU4LCA4NiwgMTExLCAKKyAgICAyLCAyNDYsIDg2LCAyMDQsIDI0MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQwLCAyMTEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDIwNCwgMjM2LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxODgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIwNywgMzYsIDg2LCAKKyAgICAxMTEsIDIsIDI0NiwgODYsIDIwNiwgMTIyLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxMzgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDIwNiwgNjEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOCwgMjQxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDksIDEzNiwgCisgICAgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE1LCAyNDUsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxNSwgMTA2LCA4NiwgMTExLCAyLCAKKyAgICAyNDYsIDg2LCAyMTUsIDIxNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjIxLCAxMzYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDE5OSwgMjQ1LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTMsIDEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNCwgMTEwLCA4NiwgCisgICAgMTExLCAyLCAyNDYsIDg2LCAyMDIsIDE5MywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjEwLCAxMTQsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDIwOCwgMTc5LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTIsIDY0LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAxNDQsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE5NCwgODYsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIDE1OSwgODYsIDIyOCwgCisgICAgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjE0LCA5NywgODYsIDIyOCwgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjEyLCAxMzEsIDg2LCAKKyAgICAyMjgsIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxMiwgMTI0LCA4NiwgMjI4LCAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIAorICAgIDEzOSwgODYsIDIyLCAyLCAyMTcsIDg2LCA4NiwgMjIsIDIsIDI1MiwgOTksIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMjUzLCAKKyAgICAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDIwMSwgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAxNjYsIDE3NywgMSwgMjQ4LCAxODEsIAorICAgIDIxOSwgMjQwLCAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDE3OCwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDI1MywgNjksIDEsIAorICAgIDI0OCwgMTgxLCAyMTksIDIwMSwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDE2NiwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDI0MCwgCisgICAgNjksIDEsIDI0OCwgMTgxLCAyMTksIDE3OCwgNjksIDEsIDI1MSwgMTY5LCAyNDcsIDc2LCA2OSwgMSwgMjUxLCAxNjksIAorICAgIDIwNCwgMjE1LCA2OSwgMSwgMjUxLCAxNjksIDEzOCwgNjksIDEsIDI1MSwgMTY5LCAyMTYsIDIyNiwgNjcsIDEsIDIzOCwgCisgICAgMjksIDIzOCwgMjgsIDI0MywgMzgsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAyOCwgMjM4LCAyOSwgMjQzLCAzOCwgMTUwLCAKKyAgICAxNDgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va19vZmZzZXQxW10gPSB7CkBAIC0xNjUzMywyMCArMTc2NDksMjAgQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAKICAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDUyLCA4NywgNTIsIDg4LCAKLSAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDUyLCA5NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA5OCwgOTksIDEwMCwgCi0gICAgMTAxLCAxMDIsIDEwMywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwNCwgMTA1LCAxMDYsIAotICAgIDEwNywgMTA4LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICAxMDksIDExMCwgMTExLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgNTIsIDk3LCA1MiwgOTgsIDUyLCA1MiwgNTIsIDk5LCAxMDAsIDEwMSwgCisgICAgMTAyLCAxMDMsIDEwNCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwNSwgMTA2LCAxMDcsIAorICAgIDEwOCwgMTA5LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICAxMTAsIDExMSwgMTEyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCAxMTIsIDExMywgMTE0LCAxMTUsIDUyLCA1MiwgNTIsIDExNiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgMTEzLCAxMTQsIDExNSwgMTE2LCA1MiwgNTIsIDUyLCAxMTcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOCwgMTE5LCAKKyAgICAxMjAsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCAxMTcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE4LCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE5LCAxMjAsIAotICAgIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzAsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTMxLCA1MiwgMTMyLCAxMzMsIDEzNCwgCi0gICAgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDEyMSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMjIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMjMsIDEyNCwgCisgICAgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzQsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzUsIDEzNiwgNTIsIDUyLCA1MiwgNTIsIDEzNywgNTIsIDEzOCwgMTM5LCAxNDAsIAorICAgIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjU2MCw3ICsxNzY3Niw3IEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDIsIDE0MywgMTQ0LCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0OCwgMTQ5LCAxNTAsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3MTcsNyArMTc4MzMsNyBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDUsIDE0NiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE1MSwgMTUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NzMxLDggKzE3ODQ3LDggQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NywgMTQ4LCAxNDksIAotICAgIDE1MCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE1MywgMTU0LCAxNTUsIAorICAgIDE1NiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NzY4LDEyMTQgKzE3ODg0LDEyMTcgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAzLCA2LCA5LCAxMSwgMTQsIDE3LCAxOSwgMjEsIDI0LCAyNywgMjksIDMxLCAKICAgICAzMywgMzUsIDM5LCA0MSwgNDQsIDQ2LCA0OCwgNTAsIDUyLCA1NCwgNTYsIDU5LCA2MSwgNjQsIDY2LCA2OCwgNzEsIDc0LCAKICAgICA3NywgODAsIDg0LCA4OCwgOTMsIDk4LCAxMDMsIDEwNywgMTEyLCAxMTcsIDEyMiwgMTI2LCAxMzEsIDEzNiwgMTQwLCAxNDUsIAotICAgIDE1MCwgMTU0LCAxNTksIDE2NCwgMTY4LCAxNzIsIDE3NywgMTgxLCAxODYsIDE5MSwgMTk2LCAyMDEsIDIwNiwgMjA5LCAKLSAgICAyMTMsIDIxNiwgMjIwLCAyMjMsIDIyNywgMjMxLCAyMzYsIDI0MSwgMjQ2LCAyNTAsIDI1NSwgMjYwLCAyNjUsIDI2OSwgCi0gICAgMjc0LCAyNzksIDI4MywgMjg4LCAyOTMsIDI5NywgMzAyLCAzMDcsIDMxMSwgMzE1LCAzMjAsIDMyNCwgMzI5LCAzMzQsIAotICAgIDMzOSwgMzQ0LCAzNDksIDM1MywgMzU2LCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MiwgMzY2LCAzNzEsIAotICAgIDM3NCwgMzc3LCAzODAsIDM4MywgMzg2LCAzODksIDM5MSwgMzk0LCA0MDAsIDQwOCwgNDExLCA0MTUsIDQxOCwgNDIwLCAKLSAgICA0MjMsIDQyNiwgNDI5LCA0MzIsIDQzNiwgNDM5LCA0NDIsIDQ0NSwgNDQ3LCA0NTAsIDQ1NiwgNDY0LCA0NzEsIDQ3OCwgCi0gICAgNDg1LCA0OTAsIDQ5NywgNTAzLCA1MTAsIDUxNywgNTI0LCA1MzIsIDUzNywgNTQ1LCA1NTIsIDU1OCwgNTY1LCA1NzIsIAotICAgIDU4MCwgNTg3LCA1OTUsIDYwMywgNjA4LCA2MTYsIDYyMywgNjI5LCA2MzYsIDY0MywgNjUwLCA2NTMsIDY1OSwgNjY2LCAKLSAgICA2NzIsIDY3OSwgNjg2LCA2OTMsIDY5OCwgNzA0LCA3MTEsIDcxNywgNzI0LCA3MzEsIDczOCwgNzQ2LCA3NTEsIDc1OSwgCi0gICAgNzY2LCA3NzIsIDc3OSwgNzg2LCA3OTQsIDgwMSwgODA5LCA4MTcsIDgyMiwgODMwLCA4MzcsIDg0MywgODUwLCA4NTcsIAotICAgIDg2NCwgODY3LCA4NzMsIDg4MCwgODg2LCA4OTMsIDkwMCwgOTA3LCA5MTIsIDkyMCwgOTI3LCA5MzQsIDk0MSwgOTQ4LCAKLSAgICA5NTUsIDk2MiwgOTY5LCA5NzYsIDk4NCwgOTkyLCAxMDAwLCAxMDA4LCAxMDE2LCAxMDI0LCAxMDMyLCAxMDQwLCAxMDQ3LCAKLSAgICAxMDU0LCAxMDYxLCAxMDY4LCAxMDc1LCAxMDgyLCAxMDg5LCAxMDk2LCAxMTAzLCAxMTEwLCAxMTE3LCAxMTI0LCAxMTMyLCAKLSAgICAxMTQwLCAxMTQ4LCAxMTU2LCAxMTY0LCAxMTcyLCAxMTgwLCAxMTg4LCAxMTk2LCAxMjA0LCAxMjExLCAxMjE4LCAxMjI2LCAKLSAgICAxMjM0LCAxMjQyLCAxMjUwLCAxMjU4LCAxMjY2LCAxMjc0LCAxMjgyLCAxMjkwLCAxMjk2LCAxMzAxLCAxMzA2LCAxMzE0LCAKLSAgICAxMzIyLCAxMzMwLCAxMzM4LCAxMzQzLCAxMzUwLCAxMzU3LCAxMzY1LCAxMzczLCAxMzgxLCAxMzg5LCAxMzk4LCAxNDA3LCAKLSAgICAxNDE0LCAxNDIxLCAxNDI4LCAxNDM1LCAxNDQzLCAxNDUxLCAxNDU5LCAxNDY3LCAxNDc4LCAxNDgzLCAxNDg4LCAxNDk1LCAKLSAgICAxNTAyLCAxNTA5LCAxNTE2LCAxNTIzLCAxNTMwLCAxNTM1LCAxNTQwLCAxNTQ3LCAxNTU0LCAxNTYyLCAxNTcwLCAxNTc4LCAKLSAgICAxNTg2LCAxNTkzLCAxNjAwLCAxNjA4LCAxNjE2LCAxNjI0LCAxNjMyLCAxNjQwLCAxNjQ4LCAxNjU2LCAxNjY0LCAxNjcyLCAKLSAgICAxNjgwLCAxNjg3LCAxNjk0LCAxNzAxLCAxNzA4LCAxNzE1LCAxNzIyLCAxNzI5LCAxNzM2LCAxNzQ0LCAxNzUyLCAxNzU5LCAKLSAgICAxNzY2LCAxNzczLCAxNzgwLCAxNzg4LCAxNzk2LCAxODA0LCAxODEyLCAxODIwLCAxODI3LCAxODM0LCAxODQyLCAxODUwLCAKLSAgICAxODU4LCAxODY2LCAxODcxLCAxODc3LCAxODgzLCAxODkwLCAxODk3LCAxOTAyLCAxOTA3LCAxOTEyLCAxOTE5LCAxOTI2LCAKLSAgICAxOTMzLCAxOTQwLCAxOTQ4LCAxOTU2LCAxOTYzLCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg2LCAxOTkzLCAyMDAwLCAyMDA1LCAKLSAgICAyMDEwLCAyMDE1LCAyMDIyLCAyMDI5LCAyMDM2LCAyMDQzLCAyMDUwLCAyMDU3LCAyMDY1LCAyMDc1LCAyMDgzLCAyMDkwLCAKLSAgICAyMDk3LCAyMTAyLCAyMTA3LCAyMTE0LCAyMTIxLCAyMTI1LCAyMTMwLCAyMTM1LCAyMTQwLCAyMTQ4LCAyMTU3LCAyMTY0LCAKLSAgICAyMTcxLCAyMTgwLCAyMTg3LCAyMTk0LCAyMTk5LCAyMjA2LCAyMjEzLCAyMjIwLCAyMjI3LCAyMjM0LCAyMjM5LCAyMjQ2LCAKLSAgICAyMjUzLCAyMjYxLCAyMjY2LCAyMjcxLCAyMjc2LCAyMjg2LCAyMjkwLCAyMjk2LCAyMzAyLCAyMzA4LCAyMzE0LCAyMzIyLCAKLSAgICAyMzM1LCAyMzQzLCAyMzQ4LCAyMzU4LCAyMzYzLCAyMzY4LCAyMzc4LCAyMzgzLCAyMzkwLCAyMzk3LCAyNDA1LCAyNDEzLCAKLSAgICAyNDIwLCAyNDI3LCAyNDM0LCAyNDQxLCAyNDUxLCAyNDYxLCAyNDcwLCAyNDc5LCAyNDg5LCAyNDk5LCAyNTA5LCAyNTE5LCAKLSAgICAyNTI1LCAyNTM1LCAyNTQ1LCAyNTU1LCAyNTY1LCAyNTczLCAyNTgxLCAyNTg4LCAyNTk1LCAyNjAzLCAyNjExLCAyNjE5LCAKLSAgICAyNjI3LCAyNjM0LCAyNjQxLCAyNjUxLCAyNjYxLCAyNjY5LCAyNjc3LCAyNjg1LCAyNjkwLCAyNzAwLCAyNzA1LCAyNzEyLCAKLSAgICAyNzE5LCAyNzI0LCAyNzI5LCAyNzM3LCAyNzQ1LCAyNzU1LCAyNzY1LCAyNzcyLCAyNzc5LCAyNzg4LCAyNzk3LCAyODA1LCAKLSAgICAyODEzLCAyODIyLCAyODMxLCAyODM5LCAyODQ3LCAyODU2LCAyODY1LCAyODc0LCAyODgzLCAyODkzLCAyOTAzLCAyOTExLCAKLSAgICAyOTE5LCAyOTI4LCAyOTM3LCAyOTQ2LCAyOTU1LCAyOTY1LCAyOTc1LCAyOTgzLCAyOTkxLCAzMDAwLCAzMDA5LCAzMDE4LCAKLSAgICAzMDI3LCAzMDM2LCAzMDQ1LCAzMDUwLCAzMDU1LCAzMDYzLCAzMDcxLCAzMDgxLCAzMDg5LCAzMDk0LCAzMDk5LCAzMTA2LCAKLSAgICAzMTEzLCAzMTIwLCAzMTI3LCAzMTM0LCAzMTQxLCAzMTUxLCAzMTYxLCAzMTcxLCAzMTgxLCAzMTg4LCAzMTk1LCAzMjA1LCAKLSAgICAzMjE1LCAzMjIzLCAzMjMxLCAzMjM5LCAzMjQ3LCAzMjU1LCAzMjYyLCAzMjY5LCAzMjc2LCAzMjgyLCAzMjg5LCAzMjk2LCAKLSAgICAzMzAzLCAzMzEyLCAzMzIyLCAzMzMyLCAzMzM5LCAzMzQ2LCAzMzUyLCAzMzU3LCAzMzY0LCAzMzcwLCAzMzc2LCAzMzgzLCAKLSAgICAzMzkwLCAzNDAxLCAzNDExLCAzNDE4LCAzNDI1LCAzNDMyLCAzNDM5LCAzNDQ1LCAzNDUwLCAzNDU3LCAzNDYzLCAzNDY4LCAKLSAgICAzNDc2LCAzNDg0LCAzNDkxLCAzNDk3LCAzNTAyLCAzNTA5LCAzNTE0LCAzNTIxLCAzNTMwLCAzNTM5LCAzNTQ4LCAzNTU1LCAKLSAgICAzNTYxLCAzNTY3LCAzNTcyLCAzNTc5LCAzNTg2LCAzNTkzLCAzNjAwLCAzNjA3LCAzNjEyLCAzNjE3LCAzNjI2LCAzNjM0LCAKLSAgICAzNjQzLCAzNjQ4LCAzNjU1LCAzNjY2LCAzNjczLCAzNjgxLCAzNjkwLCAzNjk2LCAzNzAyLCAzNzA4LCAzNzE1LCAzNzIwLCAKLSAgICAzNzI2LCAzNzM3LCAzNzQ2LCAzNzU1LCAzNzYzLCAzNzcxLCAzNzgxLCAzNzg2LCAzNzkzLCAzODAwLCAzODA1LCAzODE3LCAKLSAgICAzODI2LCAzODM0LCAzODQxLCAzODUwLCAzODU1LCAzODYwLCAzODY3LCAzODc0LCAzODgxLCAzODg4LCAzODk0LCAzOTAzLCAKLSAgICAzOTExLCAzOTE2LCAzOTI0LCAzOTMwLCAzOTM4LCAzOTQ2LCAzOTUyLCAzOTU4LCAzOTY0LCAzOTcxLCAzOTc5LCAzOTg1LCAKLSAgICAzOTkzLCA0MDAwLCA0MDA1LCA0MDEyLCA0MDIwLCA0MDMwLCA0MDM3LCA0MDQ0LCA0MDU0LCA0MDYxLCA0MDY4LCA0MDc4LCAKLSAgICA0MDg1LCA0MDkyLCA0MDk5LCA0MTA1LCA0MTExLCA0MTIxLCA0MTM0LCA0MTM5LCA0MTQ2LCA0MTUxLCA0MTU1LCA0MTYxLCAKLSAgICA0MTcwLCA0MTc3LCA0MTgyLCA0MTg3LCA0MTkxLCA0MTk2LCA0MjAyLCA0MjA2LCA0MjEyLCA0MjE4LCA0MjI0LCA0MjMwLCAKLSAgICA0MjM4LCA0MjQzLCA0MjQ4LCA0MjUzLCA0MjU4LCA0MjY0LCA0MjY2LCA0MjcxLCA0Mjc1LCA0MjgxLCA0Mjg3LCA0MjkzLCAKLSAgICA0Mjk4LCA0MzA1LCA0MzEyLCA0MzE4LCA0MzI1LCA0MzMzLCA0MzQxLCA0MzQ2LCA0MzUxLCA0MzU1LCA0MzYwLCA0MzYyLCAKLSAgICA0MzY0LCA0MzY3LCA0MzY5LCA0MzcyLCA0Mzc3LCA0MzgyLCA0Mzg4LCA0MzkzLCA0Mzk3LCA0NDAxLCA0NDA2LCA0NDE1LCAKLSAgICA0NDIxLCA0NDI2LCA0NDMyLCA0NDM3LCA0NDQzLCA0NDUxLCA0NDU5LCA0NDYzLCA0NDY3LCA0NDcyLCA0NDc4LCA0NDg0LCAKLSAgICA0NDkwLCA0NDk2LCA0NTAxLCA0NTA4LCA0NTE2LCA0NTI0LCA0NTI5LCA0NTM1LCA0NTQyLCA0NTQ5LCA0NTU2LCA0NTYzLCAKLSAgICA0NTY3LCA0NTcyLCA0NTc3LCA0NTgyLCA0NTg3LCA0NTkyLCA0NTk1LCA0NTk4LCA0NjAxLCA0NjA0LCA0NjA3LCA0NjEwLCAKLSAgICA0NjE0LCA0NjE4LCA0NjI0LCA0NjI3LCA0NjMyLCA0NjM4LCA0NjQ0LCA0NjQ3LCA0NjUyLCA0NjU4LCA0NjYyLCA0NjY4LCAKLSAgICA0Njc0LCA0NjgwLCA0Njg2LCA0NjkxLCA0Njk2LCA0NzAxLCA0NzA0LCA0NzEwLCA0NzE1LCA0NzIwLCA0NzI0LCA0NzI5LCAKLSAgICA0NzM1LCA0NzQxLCA0NzQ0LCA0NzQ4LCA0NzUyLCA0NzU2LCA0NzU5LCA0NzYyLCA0NzY3LCA0NzcxLCA0Nzc4LCA0NzgyLCAKLSAgICA0Nzg4LCA0NzkyLCA0Nzk4LCA0ODAyLCA0ODA2LCA0ODEwLCA0ODE1LCA0ODIwLCA0ODI3LCA0ODMzLCA0ODQwLCA0ODQ2LCAKLSAgICA0ODUyLCA0ODU4LCA0ODYxLCA0ODY1LCA0ODY5LCA0ODczLCA0ODc3LCA0ODgyLCA0ODg3LCA0ODkxLCA0ODk1LCA0OTAxLCAKLSAgICA0OTA1LCA0OTA5LCA0OTE0LCA0OTIwLCA0OTI1LCA0OTMxLCA0OTM1LCA0OTQyLCA0OTQ3LCA0OTUxLCA0OTU2LCA0OTYxLCAKLSAgICA0OTY3LCA0OTcwLCA0OTc0LCA0OTc5LCA0OTg0LCA0OTkzLCA0OTk5LCA1MDA0LCA1MDA4LCA1MDEzLCA1MDE3LCA1MDIyLCAKLSAgICA1MDI2LCA1MDMwLCA1MDM1LCA1MDM5LCA1MDQ1LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcwLCA1MDc1LCA1MDgxLCAKLSAgICA1MDg3LCA1MDkzLCA1MDk5LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI3LCA1MTMyLCA1MTM5LCA1MTQ2LCA1MTUwLCAKLSAgICA1MTU2LCA1MTYzLCAwLCAwLCA1MTcwLCA1MTczLCA1MTgyLCA1MTkxLCA1MjAyLCA1MjA2LCAwLCAwLCAwLCAwLCA1MjExLCAKLSAgICA1MjE0LCA1MjE5LCA1MjI3LCA1MjMyLCA1MjQwLCA1MjQ4LCAwLCA1MjU2LCAwLCA1MjY0LCA1MjcyLCA1MjgwLCA1MjkxLCAKLSAgICA1Mjk2LCA1MzAxLCA1MzA2LCA1MzExLCA1MzE2LCA1MzIxLCA1MzI2LCA1MzMxLCA1MzM2LCA1MzQxLCA1MzQ2LCA1MzUxLCAKLSAgICA1MzU2LCA1MzYxLCA1MzY2LCA1MzcxLCAwLCA1Mzc2LCA1MzgxLCA1Mzg2LCA1MzkxLCA1Mzk2LCA1NDAxLCA1NDA2LCAKLSAgICA1NDExLCA1NDE5LCA1NDI3LCA1NDM1LCA1NDQzLCA1NDUxLCA1NDU5LCA1NDcwLCA1NDc1LCA1NDgwLCA1NDg1LCA1NDkwLCAKLSAgICA1NDk1LCA1NTAwLCA1NTA1LCA1NTEwLCA1NTE1LCA1NTIwLCA1NTI1LCA1NTMwLCA1NTM1LCA1NTQwLCA1NTQ1LCA1NTUwLCAKLSAgICA1NTU1LCA1NTYxLCA1NTY2LCA1NTcxLCA1NTc2LCA1NTgxLCA1NTg2LCA1NTkxLCA1NTk2LCA1NjA0LCA1NjEyLCA1NjIwLCAKLSAgICA1NjI4LCA1NjM2LCA1NjQxLCA1NjQ1LCA1NjQ5LCA1NjU2LCA1NjY2LCA1Njc2LCA1NjgwLCA1Njg0LCA1Njg4LCA1Njk0LCAKLSAgICA1NzAxLCA1NzA1LCA1NzEwLCA1NzE0LCA1NzE5LCA1NzIzLCA1NzI4LCA1NzMyLCA1NzM3LCA1NzQyLCA1NzQ3LCA1NzUyLCAKLSAgICA1NzU3LCA1NzYyLCA1NzY3LCA1NzcyLCA1Nzc3LCA1NzgyLCA1Nzg3LCA1NzkyLCA1Nzk3LCA1ODAyLCA1ODA3LCA1ODExLCAKLSAgICA1ODE1LCA1ODIxLCA1ODI1LCA1ODMwLCA1ODM2LCA1ODQ0LCA1ODQ5LCA1ODU0LCA1ODYxLCA1ODY2LCA1ODcxLCA1ODc4LCAKLSAgICA1ODg3LCA1ODk2LCA1OTA3LCA1OTE1LCA1OTIwLCA1OTI1LCA1OTMwLCA1OTM3LCA1OTQyLCA1OTQ4LCA1OTUzLCA1OTU4LCAKLSAgICA1OTYzLCA1OTY4LCA1OTczLCA1OTc4LCA1OTg2LCA1OTkyLCA1OTk3LCA2MDAxLCA2MDA2LCA2MDExLCA2MDE2LCA2MDIxLCAKLSAgICA2MDI2LCA2MDMxLCA2MDM2LCA2MDQwLCA2MDQ2LCA2MDUwLCA2MDU1LCA2MDYwLCA2MDY1LCA2MDY5LCA2MDc0LCA2MDc5LCAKLSAgICA2MDg0LCA2MDg5LCA2MDkzLCA2MDk4LCA2MTAyLCA2MTA3LCA2MTEyLCA2MTE3LCA2MTIyLCA2MTI4LCA2MTMzLCA2MTM5LCAKLSAgICA2MTQzLCA2MTQ4LCA2MTUyLCA2MTU2LCA2MTYxLCA2MTY2LCA2MTcxLCA2MTc2LCA2MTgxLCA2MTg2LCA2MTkxLCA2MTk1LCAKLSAgICA2MjAxLCA2MjA1LCA2MjEwLCA2MjE1LCA2MjIwLCA2MjI0LCA2MjI5LCA2MjM0LCA2MjM5LCA2MjQ0LCA2MjQ4LCA2MjUzLCAKLSAgICA2MjU3LCA2MjYyLCA2MjY3LCA2MjcyLCA2Mjc3LCA2MjgzLCA2Mjg4LCA2Mjk0LCA2Mjk4LCA2MzAzLCA2MzA3LCA2MzE1LCAKLSAgICA2MzIwLCA2MzI1LCA2MzMwLCA2MzM3LCA2MzQyLCA2MzQ4LCA2MzUzLCA2MzU4LCA2MzYzLCA2MzY4LCA2MzczLCA2Mzc4LCAKLSAgICA2Mzg2LCA2MzkyLCA2Mzk3LCA2NDAyLCA2NDA3LCA2NDEyLCA2NDE3LCA2NDIzLCA2NDI5LCA2NDM2LCA2NDQzLCA2NDUyLCAKLSAgICA2NDYxLCA2NDY4LCA2NDc1LCA2NDg0LCA2NDkzLCA2NDk4LCA2NTAzLCA2NTA4LCA2NTEzLCA2NTE4LCA2NTIzLCA2NTI4LCAKLSAgICA2NTMzLCA2NTQ0LCA2NTU1LCA2NTYwLCA2NTY1LCA2NTcyLCA2NTc5LCA2NTg3LCA2NTk1LCA2NjAwLCA2NjA1LCA2NjEwLCAKLSAgICA2NjE1LCA2NjE5LCA2NjIzLCA2NjI3LCA2NjMzLCA2NjM5LCA2NjQzLCA2NjUwLCA2NjU1LCA2NjY1LCA2Njc1LCA2NjgxLCAKLSAgICA2Njg3LCA2Njk1LCA2NzAzLCA2NzExLCA2NzE5LCA2NzI2LCA2NzMzLCA2NzQxLCA2NzQ5LCA2NzU3LCA2NzY1LCA2NzczLCAKLSAgICA2NzgxLCA2Nzg5LCA2Nzk3LCA2ODA1LCA2ODEzLCA2ODIwLCA2ODI3LCA2ODMzLCA2ODM5LCA2ODQ3LCA2ODU1LCA2ODYyLCAKLSAgICA2ODY5LCA2ODc3LCA2ODg1LCA2ODkxLCA2ODk3LCA2OTA1LCA2OTEzLCA2OTIxLCA2OTI5LCA2OTM1LCA2OTQxLCA2OTQ5LCAKLSAgICA2OTU3LCA2OTY1LCA2OTczLCA2OTgwLCA2OTg3LCA2OTk1LCA3MDAzLCA3MDExLCA3MDE5LCA3MDI0LCA3MDI5LCA3MDM2LCAKLSAgICA3MDQzLCA3MDUzLCA3MDYzLCA3MDY3LCA3MDc1LCA3MDgzLCA3MDkwLCA3MDk3LCA3MTA1LCA3MTEzLCA3MTIwLCA3MTI3LCAKLSAgICA3MTM1LCA3MTQzLCA3MTUwLCA3MTU3LCA3MTY1LCA3MTczLCA3MTc4LCA3MTg1LCA3MTkyLCA3MTk5LCA3MjA2LCA3MjEyLCAKLSAgICA3MjE4LCA3MjI2LCA3MjM0LCA3MjM5LCA3MjQ0LCA3MjUyLCA3MjYwLCA3MjY4LCA3Mjc2LCA3Mjg0LCA3MjkyLCA3Mjk5LCAKLSAgICA3MzA2LCA3MzE0LCA3MzIyLCA3MzMwLCA3MzM4LCA3MzQ1LCA3MzUyLCA3MzU4LCA3MzY0LCA3MzczLCA3MzgyLCA3Mzg5LCAKLSAgICA3Mzk2LCA3NDAzLCA3NDEwLCA3NDE3LCA3NDI0LCA3NDMxLCA3NDM4LCA3NDQ2LCA3NDU0LCA3NDYyLCA3NDcwLCA3NDc4LCAKLSAgICA3NDg2LCA3NDk2LCA3NTA2LCA3NTEzLCA3NTIwLCA3NTI3LCA3NTM0LCA3NTQxLCA3NTQ4LCA3NTU1LCA3NTYyLCA3NTY5LCAKLSAgICA3NTc2LCA3NTgzLCA3NTkwLCA3NTk3LCA3NjA0LCA3NjExLCA3NjE4LCA3NjI1LCA3NjMyLCA3NjM5LCA3NjQ2LCA3NjUzLCAKLSAgICA3NjYwLCA3NjY3LCA3Njc0LCA3Njc5LCA3Njg0LCA3Njg5LCA3Njk0LCA3Njk5LCA3NzA0LCA3NzA5LCA3NzE0LCA3NzE5LCAKLSAgICA3NzI0LCA3NzMwLCA3NzM2LCA3NzQ0LCA3NzUyLCA3NzYwLCA3NzY4LCA3Nzc2LCA3Nzg0LCA3NzkyLCA3ODAwLCA3ODA4LCAKLSAgICA3ODE2LCA3ODIxLCA3ODI2LCA3ODMxLCA3ODM2LCA3ODQ0LCAwLCA3ODUyLCA3ODU3LCA3ODYyLCA3ODY3LCA3ODcyLCAKLSAgICA3ODc3LCA3ODgyLCA3ODg3LCA3ODkyLCA3ODk2LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMxLCAKLSAgICA3OTM2LCA3OTQxLCA3OTQ2LCA3OTUxLCA3OTU2LCA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg2LCA3OTkxLCAKLSAgICA3OTk2LCA4MDAxLCA4MDA2LCA4MDExLCA4MDE2LCA4MDIxLCA4MDI2LCA4MDMxLCA4MDM2LCAwLCAwLCA4MDQxLCA4MDQ4LCAKLSAgICA4MDUxLCA4MDU1LCA4MDU5LCA4MDYyLCA4MDY2LCAwLCA4MDcwLCA4MDc1LCA4MDgwLCA4MDg1LCA4MDkwLCA4MDk1LCAKLSAgICA4MTAwLCA4MTA1LCA4MTEwLCA4MTE0LCA4MTE5LCA4MTI0LCA4MTI5LCA4MTM0LCA4MTM5LCA4MTQ0LCA4MTQ5LCA4MTU0LCAKLSAgICA4MTU5LCA4MTY0LCA4MTY5LCA4MTc0LCA4MTc5LCA4MTg0LCA4MTg5LCA4MTk0LCA4MTk5LCA4MjA0LCA4MjA5LCA4MjE0LCAKLSAgICA4MjE5LCA4MjI0LCA4MjI5LCA4MjM0LCA4MjM5LCA4MjQ0LCA4MjQ5LCA4MjU0LCA4MjU5LCAwLCA4MjY2LCA4MjcxLCAwLCAKLSAgICAwLCA4Mjc0LCA4MjgwLCA4Mjg2LCAwLCA4MjkwLCA4Mjk1LCA4MzAwLCA4MzA1LCA4MzEyLCA4MzE5LCA4MzI0LCA4MzI5LCAKLSAgICA4MzM0LCA4MzM5LCA4MzQ0LCA4MzQ5LCA4MzU0LCA4MzYxLCA4MzY2LCA4MzczLCA4MzgwLCA4Mzg1LCA4MzkyLCA4Mzk3LCAKLSAgICA4NDAyLCA4NDA3LCA4NDE0LCA4NDE5LCA4NDI0LCA4NDMxLCA4NDQwLCA4NDQ1LCA4NDUwLCA4NDU1LCA4NDYwLCA4NDY2LCAKLSAgICA4NDcxLCA4NDc4LCA4NDg1LCA4NDkyLCA4NDk3LCA4NTAyLCA4NTA3LCA4NTEyLCA4NTE3LCA4NTIyLCA4NTMyLCA4NTM3LCAKLSAgICA4NTQ2LCA4NTUxLCA4NTU2LCA4NTYxLCA4NTY2LCA4NTczLCA4NTgwLCA4NTg3LCA4NTkzLCA4NTk5LCA4NjA2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA4NjEzLCA4NjE3LCA4NjIxLCA4NjI1LCA4NjI5LCA4NjMzLCA4NjM3LCA4NjQxLCA4NjQ1LCAKLSAgICA4NjQ5LCA4NjUzLCA4NjU4LCA4NjYyLCA4NjY2LCA4NjcxLCA4Njc1LCA4NjgwLCA4Njg0LCA4Njg4LCA4NjkyLCA4Njk3LCAKLSAgICA4NzAxLCA4NzA2LCA4NzEwLCA4NzE0LCA4NzE4LCA4NzIyLCAwLCAwLCAwLCAwLCAwLCA4NzI2LCA4NzMzLCA4NzQxLCAKLSAgICA4NzQ4LCA4NzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzU4LCA4NzYxLCA4NzY1LCA4NzcwLCAKLSAgICA4Nzc0LCA4Nzc4LCA4NzgyLCA4Nzg4LCA4Nzk0LCA4Nzk3LCA4ODA0LCA4ODEzLCA4ODE2LCA4ODE5LCA4ODI0LCA4ODMwLCAKLSAgICA4ODM0LCA4ODQyLCA4ODQ4LCA4ODU0LCA4ODYyLCA4ODY2LCA4ODcxLCA4ODgyLCA4ODg3LCA4ODkxLCA4ODk1LCA4ODk5LCAKLSAgICA4OTAyLCAwLCA4OTA1LCA4OTEyLCA4OTE2LCA4OTIyLCA4OTI2LCA4OTMzLCA4OTQwLCA4OTQ4LCA4OTU1LCA4OTYyLCAKLSAgICA4OTY2LCA4OTcwLCA4OTc2LCA4OTgwLCA4OTg0LCA4OTg4LCA4OTkyLCA4OTk2LCA5MDAwLCA5MDA0LCA5MDA4LCA5MDEyLCAKLSAgICA5MDE2LCA5MDIwLCA5MDI0LCA5MDI4LCA5MDMyLCA5MDM2LCA5MDQwLCA5MDQ0LCA5MDUyLCA5MDYwLCA5MDcwLCA5MDc5LCAKLSAgICA5MDg4LCA5MDkxLCA5MDk1LCA5MDk5LCA5MTAzLCA5MTA3LCA5MTExLCA5MTE1LCA5MTE5LCA5MTIzLCA5MTI4LCA5MTMyLCAKLSAgICA5MTM1LCA5MTM4LCA5MTQxLCA5MTQ0LCA5MTQ3LCA5MTUwLCA5MTUzLCA5MTU2LCA5MTYwLCA5MTY0LCA5MTY4LCA5MTczLCAKLSAgICA5MTc4LCA5MTg0LCA5MTg3LCA5MTk0LCA5MjAzLCA5MjA4LCA5MjEzLCA5MjIwLCA5MjI2LCA5MjMxLCA5MjM1LCA5MjM5LCAKLSAgICA5MjQzLCA5MjQ3LCA5MjUxLCA5MjU1LCA5MjYwLCA5MjY0LCA5MjY5LCA5MjczLCA5Mjc4LCA5MjgzLCA5MjkwLCA5Mjk2LCAKLSAgICA5MzAyLCA5MzA4LCA5MzEzLCA5MzIyLCA5MzMxLCA5MzM2LCA5MzQzLCA5MzUwLCA5MzU3LCA5MzY0LCA5MzY4LCA5MzcyLCAKLSAgICA5Mzc2LCA5MzgzLCA5MzkzLCA5Mzk3LCA5NDAxLCA5NDA1LCA5NDEyLCA5NDIwLCA5NDI0LCA5NDI4LCA5NDM1LCA5NDM5LCAKLSAgICA5NDQzLCA5NDQ3LCA5NDU0LCA5NDYxLCA5NDczLCA5NDc3LCA5NDgxLCA5NDg1LCA5NDk1LCA5NTA0LCA5NTA4LCA5NTE2LCAKLSAgICA5NTIzLCA5NTMwLCA5NTM5LCA5NTUwLCA5NTU4LCA5NTYyLCA5NTcxLCA5NTgyLCA5NTkwLCA5NjAzLCA5NjExLCA5NjE5LCAKLSAgICA5NjI3LCA5NjM1LCA5NjQxLCA5NjUwLCA5NjU3LCA5NjYxLCA5NjY5LCA5NjczLCA5NjgwLCA5Njg4LCA5NjkyLCA5Njk4LCAKLSAgICA5NzA1LCA5NzEyLCA5NzE2LCA5NzI0LCA5NzI4LCA5NzM1LCA5NzM5LCA5NzQ3LCA5NzUxLCA5NzU5LCA5NzY3LCA5Nzc0LCAKLSAgICA5NzgyLCA5NzkwLCA5Nzk3LCA5ODAzLCA5ODA3LCA5ODE0LCA5ODIyLCA5ODI4LCA5ODM1LCA5ODQyLCA5ODQ4LCA5ODU4LCAKLSAgICA5ODY2LCA5ODczLCA5ODc5LCA5ODgzLCA5ODg2LCA5ODkwLCA5ODk2LCA5OTA0LCA5OTA4LCA5OTE0LCA5OTIwLCA5OTI3LCAKLSAgICA5OTM0LCA5OTM3LCA5OTQ0LCA5OTQ5LCA5OTU4LCA5OTYzLCA5OTY3LCA5OTgwLCA5OTkzLCA5OTk5LCAxMDAwNiwgMTAwMTEsIAotICAgIDEwMDE3LCAxMDAyMiwgMTAwMjgsIDEwMDM4LCAxMDA0NSwgMTAwNTQsIDEwMDY0LCAxMDA3MCwgMTAwNzUsIDEwMDgwLCAKLSAgICAxMDA4NCwgMTAwODgsIDEwMDkzLCAxMDA5OCwgMTAxMDQsIDEwMTEyLCAxMDEyMCwgMTAxMzEsIDEwMTM2LCAxMDE0NSwgCi0gICAgMTAxNTQsIDEwMTYxLCAxMDE2NywgMTAxNzMsIDEwMTc5LCAxMDE4NSwgMTAxOTEsIDEwMTk3LCAxMDIwNCwgMTAyMTAsIAotICAgIDEwMjE3LCAxMDIyNCwgMTAyMzEsIDEwMjM4LCAxMDI0NCwgMTAyNTIsIDEwMjYxLCAxMDI2OCwgMTAyNzYsIDEwMjg0LCAKLSAgICAxMDI5MCwgMTAyOTYsIDEwMzAyLCAxMDMxMCwgMTAzMTgsIDEwMzI4LCAxMDMzOCwgMTAzNDIsIDEwMzQ4LCAxMDM1NCwgMCwgCi0gICAgMTAzNjAsIDEwMzY1LCAxMDM3MCwgMTAzNzcsIDEwMzgyLCAxMDM4NywgMTAzOTQsIDEwMzk5LCAxMDQwOCwgMTA0MTMsIAotICAgIDEwNDE4LCAxMDQyMywgMTA0MjgsIDEwNDMzLCAxMDQ0MCwgMTA0NDUsIDEwNDUyLCAxMDQ1NywgMTA0NjIsIDEwNDY3LCAKLSAgICAxMDQ3MiwgMTA0NzcsIDEwNDgzLCAxMDQ4NywgMTA0OTIsIDEwNDk5LCAxMDUwNCwgMTA1MDksIDEwNTE0LCAxMDUxOSwgCi0gICAgMTA1MjQsIDEwNTMxLCAxMDUzOCwgMTA1NDUsIDEwNTUwLCAxMDU1NSwgMTA1NjEsIDEwNTY2LCAxMDU3MSwgMTA1NzcsIAotICAgIDEwNTgyLCAxMDU4NywgMTA1OTUsIDEwNjAzLCAxMDYwOCwgMTA2MTMsIDEwNjE5LCAxMDYyNCwgMTA2MjksIDEwNjMzLCAKLSAgICAxMDYzOSwgMTA2NDMsIDEwNjQ3LCAxMDY1MywgMTA2NTksIDEwNjY0LCAxMDY2OSwgMTA2NzYsIDEwNjgzLCAxMDY4NywgMCwgCi0gICAgMCwgMTA2OTEsIDEwNjk4LCAxMDcwNSwgMTA3MTIsIDEwNzIyLCAxMDczNCwgMTA3NDUsIDEwNzYxLCAxMDc3MywgMTA3ODQsIAotICAgIDEwNzkyLCAxMDc5OSwgMTA4MDksIDEwODI0LCAxMDgzNSwgMTA4NDEsIDEwODUwLCAxMDg1OCwgMTA4NjksIDEwODc5LCAKLSAgICAxMDg4NywgMTA4OTgsIDEwOTA1LCAxMDkxMywgMTA5MjQsIDEwOTMwLCAxMDkzNiwgMTA5NDQsIDEwOTUyLCAxMDk2MCwgCi0gICAgMTA5NjYsIDEwOTc2LCAxMDk4NCwgMTA5OTQsIDExMDA0LCAxMTAxNywgMTEwMzEsIDExMDQ1LCAxMTA1NSwgMTEwNjYsIAotICAgIDExMDc3LCAxMTA5MCwgMTExMDMsIDExMTE3LCAxMTEyOSwgMTExNDEsIDExMTU0LCAxMTE2NywgMTExNzksIDExMTkyLCAKLSAgICAxMTIwMSwgMTEyMDksIDExMjE0LCAxMTIxOSwgMTEyMjQsIDExMjI5LCAxMTIzNCwgMTEyMzksIDExMjQ0LCAxMTI0OSwgCi0gICAgMTEyNTQsIDExMjU5LCAxMTI2NCwgMTEyNjksIDExMjc0LCAxMTI3OSwgMTEyODQsIDExMjg5LCAxMTI5NCwgMTEyOTksIAotICAgIDExMzA0LCAxMTMwOSwgMTEzMTQsIDExMzE5LCAxMTMyNCwgMTEzMjksIDExMzM0LCAxMTMzOSwgMTEzNDQsIDExMzQ5LCAKLSAgICAxMTM1NCwgMTEzNTksIDExMzY0LCAxMTM2OSwgMTEzNzMsIDExMzc4LCAxMTM4MywgMTEzODgsIDExMzkzLCAxMTM5OCwgCi0gICAgMTE0MDIsIDExNDA2LCAxMTQxMCwgMTE0MTQsIDExNDE4LCAxMTQyMiwgMTE0MjYsIDExNDMwLCAxMTQzNCwgMTE0MzgsIAotICAgIDExNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ0NywgMTE0NTIsIDExNDU2LCAKLSAgICAxMTQ2MCwgMTE0NjQsIDExNDY4LCAxMTQ3MiwgMTE0NzYsIDExNDgxLCAxMTQ4NSwgMTE0OTAsIDExNDk0LCAxMTQ5OSwgCi0gICAgMTE1MDMsIDExNTA3LCAxMTUxMSwgMTE1MTYsIDExNTIwLCAxMTUyNSwgMTE1MzAsIDExNTM1LCAxMTUzOSwgMTE1NDQsIAotICAgIDExNTQ5LCAxMTU1NCwgMTE1NTksIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc5LCAxMTU4NCwgMTE1ODgsIDExNTkzLCAKLSAgICAxMTYwMCwgMTE2MDQsIDExNjA5LCAxMTYxNCwgMTE2MTgsIDExNjIzLCAxMTYyNywgMTE2MzQsIDExNjQxLCAxMTY0OCwgCi0gICAgMTE2NTUsIDExNjYzLCAxMTY3MSwgMTE2ODAsIDExNjg4LCAxMTY5NSwgMTE3MDIsIDExNzEwLCAxMTcxNiwgMTE3MjIsIAotICAgIDExNzI4LCAxMTczNCwgMTE3NDEsIDExNzQ2LCAxMTc1MCwgMTE3NTUsIDAsIDAsIDAsIDAsIDAsIDExNzU5LCAxMTc2NCwgCi0gICAgMTE3NjksIDExNzc0LCAxMTc3OSwgMTE3ODQsIDExNzg5LCAxMTc5NCwgMTE3OTksIDExODA0LCAxMTgwOSwgMTE4MTQsIAotICAgIDExODE5LCAxMTgyNCwgMTE4MjksIDExODM0LCAxMTgzOSwgMTE4NDQsIDExODQ5LCAxMTg1NCwgMTE4NTksIDExODY0LCAKLSAgICAxMTg2OSwgMTE4NzQsIDExODc5LCAxMTg4NCwgMTE4ODksIDExODk3LCAxMTkwNCwgMTE5MTAsIDExOTE1LCAxMTkyMywgCi0gICAgMTE5MzAsIDExOTM2LCAxMTk0MywgMTE5NDksIDExOTU0LCAxMTk2MSwgMTE5NjgsIDExOTc0LCAxMTk3OSwgMTE5ODQsIAotICAgIDExOTkwLCAxMTk5NSwgMTIwMDAsIDEyMDA2LCAwLCAwLCAxMjAxMSwgMTIwMTcsIDEyMDIzLCAxMjAyOSwgMTIwMzUsIAotICAgIDEyMDQxLCAxMjA0NywgMTIwNTIsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc4LCAxMjA4NCwgMTIwOTAsIDEyMDk4LCAwLCAKLSAgICAxMjEwNCwgMTIxMDksIDEyMTE0LCAxMjExOSwgMTIxMjQsIDEyMTI5LCAxMjEzNCwgMTIxMzksIDEyMTQ0LCAxMjE0OSwgCi0gICAgMTIxNTQsIDEyMTU5LCAxMjE2NCwgMTIxNjksIDEyMTc0LCAxMjE3OSwgMTIxODQsIDEyMTg5LCAxMjE5NCwgMTIxOTksIAotICAgIDEyMjA0LCAxMjIwOSwgMTIyMTQsIDEyMjE5LCAxMjIyNCwgMTIyMjksIDEyMjM0LCAxMjIzOSwgMCwgMCwgMTIyNDQsIDAsIAorICAgIDE1MCwgMTU0LCAxNTksIDE2NCwgMTY4LCAxNzMsIDE3OCwgMTgyLCAxODcsIDE5MiwgMTk3LCAyMDIsIDIwNywgMjEwLCAKKyAgICAyMTQsIDIxNywgMjIxLCAyMjQsIDIyOCwgMjMyLCAyMzcsIDI0MiwgMjQ3LCAyNTEsIDI1NiwgMjYxLCAyNjYsIDI3MCwgCisgICAgMjc1LCAyODAsIDI4NCwgMjg5LCAyOTQsIDI5OCwgMzAzLCAzMDgsIDMxMiwgMzE3LCAzMjIsIDMyNiwgMzMxLCAzMzYsIAorICAgIDM0MSwgMzQ2LCAzNTEsIDM1NSwgMzU4LCAzNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NCwgMzY4LCAzNzMsIAorICAgIDM3NiwgMzc5LCAzODIsIDM4NSwgMzg4LCAzOTEsIDM5MywgMzk2LCA0MDIsIDQxMCwgNDEzLCA0MTcsIDQyMCwgNDIyLCAKKyAgICA0MjUsIDQyOCwgNDMxLCA0MzQsIDQzOCwgNDQxLCA0NDQsIDQ0NywgNDQ5LCA0NTIsIDQ1OCwgNDY2LCA0NzMsIDQ4MCwgCisgICAgNDg3LCA0OTIsIDQ5OSwgNTA1LCA1MTIsIDUxOSwgNTI2LCA1MzQsIDUzOSwgNTQ3LCA1NTQsIDU2MCwgNTY3LCA1NzQsIAorICAgIDU4MiwgNTg5LCA1OTcsIDYwNSwgNjEwLCA2MTgsIDYyNSwgNjMxLCA2MzgsIDY0NSwgNjUyLCA2NTUsIDY2MSwgNjY4LCAKKyAgICA2NzQsIDY4MSwgNjg4LCA2OTUsIDcwMCwgNzA3LCA3MTQsIDcyMCwgNzI3LCA3MzQsIDc0MSwgNzQ5LCA3NTQsIDc2MiwgCisgICAgNzY5LCA3NzUsIDc4MiwgNzg5LCA3OTcsIDgwNCwgODEyLCA4MjAsIDgyNSwgODMzLCA4NDAsIDg0NiwgODUzLCA4NjAsIAorICAgIDg2NywgODcwLCA4NzYsIDg4MywgODg5LCA4OTYsIDkwMywgOTEwLCA5MTUsIDkyMywgOTMwLCA5MzcsIDk0NCwgOTUxLCAKKyAgICA5NTgsIDk2NSwgOTcyLCA5NzksIDk4NywgOTk1LCAxMDAzLCAxMDExLCAxMDE5LCAxMDI3LCAxMDM1LCAxMDQzLCAxMDUwLCAKKyAgICAxMDU3LCAxMDY0LCAxMDcxLCAxMDc4LCAxMDg1LCAxMDkyLCAxMDk5LCAxMTA2LCAxMTEzLCAxMTIwLCAxMTI3LCAxMTM1LCAKKyAgICAxMTQzLCAxMTUxLCAxMTU5LCAxMTY3LCAxMTc1LCAxMTgzLCAxMTkxLCAxMTk5LCAxMjA3LCAxMjE0LCAxMjIxLCAxMjI5LCAKKyAgICAxMjM3LCAxMjQ1LCAxMjUzLCAxMjYxLCAxMjY5LCAxMjc3LCAxMjg1LCAxMjkzLCAxMjk5LCAxMzA0LCAxMzA5LCAxMzE3LCAKKyAgICAxMzI1LCAxMzMzLCAxMzQxLCAxMzQ2LCAxMzUzLCAxMzYwLCAxMzY4LCAxMzc2LCAxMzg0LCAxMzkyLCAxNDAxLCAxNDEwLCAKKyAgICAxNDE3LCAxNDI0LCAxNDMxLCAxNDM4LCAxNDQ2LCAxNDU0LCAxNDYyLCAxNDcwLCAxNDgxLCAxNDg2LCAxNDkxLCAxNDk4LCAKKyAgICAxNTA1LCAxNTEyLCAxNTE5LCAxNTI2LCAxNTMzLCAxNTM4LCAxNTQzLCAxNTUwLCAxNTU3LCAxNTY1LCAxNTczLCAxNTgxLCAKKyAgICAxNTg5LCAxNTk2LCAxNjAzLCAxNjExLCAxNjE5LCAxNjI3LCAxNjM1LCAxNjQzLCAxNjUxLCAxNjU5LCAxNjY3LCAxNjc1LCAKKyAgICAxNjgzLCAxNjkwLCAxNjk3LCAxNzA0LCAxNzExLCAxNzE4LCAxNzI1LCAxNzMyLCAxNzM5LCAxNzQ3LCAxNzU1LCAxNzYyLCAKKyAgICAxNzY5LCAxNzc2LCAxNzgzLCAxNzkxLCAxNzk5LCAxODA3LCAxODE1LCAxODIzLCAxODMwLCAxODM3LCAxODQ1LCAxODUzLCAKKyAgICAxODYxLCAxODY5LCAxODc1LCAxODgxLCAxODg3LCAxODk0LCAxOTAxLCAxOTA2LCAxOTExLCAxOTE2LCAxOTIzLCAxOTMwLCAKKyAgICAxOTM3LCAxOTQ0LCAxOTUyLCAxOTYwLCAxOTY3LCAxOTczLCAxOTc4LCAxOTgzLCAxOTkwLCAxOTk3LCAyMDA0LCAyMDA5LCAKKyAgICAyMDE0LCAyMDE5LCAyMDI2LCAyMDMzLCAyMDQwLCAyMDQ3LCAyMDU0LCAyMDYxLCAyMDY5LCAyMDc5LCAyMDg3LCAyMDk0LCAKKyAgICAyMTAxLCAyMTA2LCAyMTExLCAyMTE4LCAyMTI1LCAyMTI5LCAyMTM0LCAyMTM5LCAyMTQ0LCAyMTUyLCAyMTYxLCAyMTY4LCAKKyAgICAyMTc1LCAyMTg0LCAyMTkxLCAyMTk4LCAyMjAzLCAyMjEwLCAyMjE3LCAyMjI0LCAyMjMxLCAyMjM4LCAyMjQzLCAyMjUwLCAKKyAgICAyMjU3LCAyMjY1LCAyMjcwLCAyMjc1LCAyMjgwLCAyMjkwLCAyMjk0LCAyMzAwLCAyMzA2LCAyMzEyLCAyMzE4LCAyMzI2LCAKKyAgICAyMzM5LCAyMzQ3LCAyMzUyLCAyMzYyLCAyMzY3LCAyMzcyLCAyMzgyLCAyMzg3LCAyMzk0LCAyNDAxLCAyNDA5LCAyNDE3LCAKKyAgICAyNDI0LCAyNDMxLCAyNDM4LCAyNDQ1LCAyNDU1LCAyNDY1LCAyNDc0LCAyNDgzLCAyNDkzLCAyNTAzLCAyNTEzLCAyNTIzLCAKKyAgICAyNTI5LCAyNTM5LCAyNTQ5LCAyNTU5LCAyNTY5LCAyNTc3LCAyNTg1LCAyNTkyLCAyNTk5LCAyNjA3LCAyNjE1LCAyNjIzLCAKKyAgICAyNjMxLCAyNjM4LCAyNjQ1LCAyNjU1LCAyNjY1LCAyNjczLCAyNjgxLCAyNjg5LCAyNjk0LCAyNzA0LCAyNzA5LCAyNzE2LCAKKyAgICAyNzIzLCAyNzI4LCAyNzMzLCAyNzQxLCAyNzQ5LCAyNzU5LCAyNzY5LCAyNzc2LCAyNzgzLCAyNzkyLCAyODAxLCAyODA5LCAKKyAgICAyODE3LCAyODI2LCAyODM1LCAyODQzLCAyODUxLCAyODYwLCAyODY5LCAyODc4LCAyODg3LCAyODk3LCAyOTA3LCAyOTE1LCAKKyAgICAyOTIzLCAyOTMyLCAyOTQxLCAyOTUwLCAyOTU5LCAyOTY5LCAyOTc5LCAyOTg3LCAyOTk1LCAzMDA0LCAzMDEzLCAzMDIyLCAKKyAgICAzMDMxLCAzMDQwLCAzMDQ5LCAzMDU0LCAzMDU5LCAzMDY3LCAzMDc1LCAzMDg1LCAzMDkzLCAzMDk4LCAzMTAzLCAzMTEwLCAKKyAgICAzMTE3LCAzMTI0LCAzMTMxLCAzMTM4LCAzMTQ1LCAzMTU1LCAzMTY1LCAzMTc1LCAzMTg1LCAzMTkyLCAzMTk5LCAzMjA5LCAKKyAgICAzMjE5LCAzMjI3LCAzMjM1LCAzMjQzLCAzMjUxLCAzMjU5LCAzMjY2LCAzMjczLCAzMjgwLCAzMjg2LCAzMjkzLCAzMzAwLCAKKyAgICAzMzA3LCAzMzE2LCAzMzI2LCAzMzM2LCAzMzQzLCAzMzUwLCAzMzU2LCAzMzYxLCAzMzY4LCAzMzc0LCAzMzgwLCAzMzg3LCAKKyAgICAzMzk0LCAzNDA1LCAzNDE1LCAzNDIyLCAzNDI5LCAzNDM2LCAzNDQzLCAzNDQ5LCAzNDU0LCAzNDYxLCAzNDY3LCAzNDcyLCAKKyAgICAzNDgwLCAzNDg4LCAzNDk1LCAzNTAxLCAzNTA2LCAzNTEzLCAzNTE4LCAzNTI1LCAzNTM0LCAzNTQzLCAzNTUyLCAzNTU5LCAKKyAgICAzNTY1LCAzNTcxLCAzNTc2LCAzNTgzLCAzNTkwLCAzNTk3LCAzNjA0LCAzNjExLCAzNjE2LCAzNjIxLCAzNjMwLCAzNjM4LCAKKyAgICAzNjQ3LCAzNjUyLCAzNjU5LCAzNjcwLCAzNjc3LCAzNjg1LCAzNjk0LCAzNzAwLCAzNzA2LCAzNzEyLCAzNzE5LCAzNzI0LCAKKyAgICAzNzMwLCAzNzQxLCAzNzUwLCAzNzU5LCAzNzY3LCAzNzc1LCAzNzg1LCAzNzkwLCAzNzk3LCAzODA0LCAzODA5LCAzODIxLCAKKyAgICAzODMwLCAzODM4LCAzODQ1LCAzODU0LCAzODU5LCAzODY0LCAzODcxLCAzODc4LCAzODg1LCAzODkyLCAzODk4LCAzOTA3LCAKKyAgICAzOTE1LCAzOTIwLCAzOTI4LCAzOTM0LCAzOTQyLCAzOTUwLCAzOTU2LCAzOTYyLCAzOTY4LCAzOTc1LCAzOTgzLCAzOTg5LCAKKyAgICAzOTk3LCA0MDA0LCA0MDA5LCA0MDE2LCA0MDI0LCA0MDM0LCA0MDQxLCA0MDQ4LCA0MDU4LCA0MDY1LCA0MDcyLCA0MDgyLCAKKyAgICA0MDg5LCA0MDk2LCA0MTAzLCA0MTA5LCA0MTE1LCA0MTI1LCA0MTM4LCA0MTQzLCA0MTUwLCA0MTU1LCA0MTU5LCA0MTY1LCAKKyAgICA0MTc0LCA0MTgxLCA0MTg2LCA0MTkxLCA0MTk1LCA0MjAwLCA0MjA2LCA0MjEwLCA0MjE2LCA0MjIyLCA0MjI4LCA0MjM0LCAKKyAgICA0MjQyLCA0MjQ3LCA0MjUyLCA0MjU3LCA0MjYyLCA0MjY4LCA0MjcwLCA0Mjc1LCA0Mjc5LCA0Mjg1LCA0MjkxLCA0Mjk3LCAKKyAgICA0MzAyLCA0MzA5LCA0MzE2LCA0MzIyLCA0MzI5LCA0MzM3LCA0MzQ1LCA0MzUwLCA0MzU1LCA0MzU5LCA0MzY0LCA0MzY2LCAKKyAgICA0MzY4LCA0MzcxLCA0MzczLCA0Mzc2LCA0MzgxLCA0Mzg2LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA2LCA0NDExLCA0NDIwLCAKKyAgICA0NDI2LCA0NDMxLCA0NDM3LCA0NDQyLCA0NDQ4LCA0NDU2LCA0NDY0LCA0NDY4LCA0NDcyLCA0NDc3LCA0NDgzLCA0NDg5LCAKKyAgICA0NDk1LCA0NTAxLCA0NTA2LCA0NTEzLCA0NTIxLCA0NTI5LCA0NTM0LCA0NTQwLCA0NTQ3LCA0NTU0LCA0NTYxLCA0NTY4LCAKKyAgICA0NTcyLCA0NTc3LCA0NTgyLCA0NTg3LCA0NTkyLCA0NTk3LCA0NjAwLCA0NjAzLCA0NjA2LCA0NjA5LCA0NjEyLCA0NjE1LCAKKyAgICA0NjE5LCA0NjIzLCA0NjI5LCA0NjMyLCA0NjM3LCA0NjQzLCA0NjQ5LCA0NjUyLCA0NjU3LCA0NjYzLCA0NjY3LCA0NjczLCAKKyAgICA0Njc5LCA0Njg1LCA0NjkxLCA0Njk2LCA0NzAxLCA0NzA2LCA0NzA5LCA0NzE1LCA0NzIwLCA0NzI1LCA0NzI5LCA0NzM0LCAKKyAgICA0NzQwLCA0NzQ2LCA0NzQ5LCA0NzUzLCA0NzU3LCA0NzYxLCA0NzY0LCA0NzY3LCA0NzcyLCA0Nzc2LCA0NzgzLCA0Nzg3LCAKKyAgICA0NzkzLCA0Nzk3LCA0ODAzLCA0ODA3LCA0ODExLCA0ODE1LCA0ODIwLCA0ODI1LCA0ODMyLCA0ODM4LCA0ODQ1LCA0ODUxLCAKKyAgICA0ODU3LCA0ODYzLCA0ODY2LCA0ODcwLCA0ODc0LCA0ODc4LCA0ODgyLCA0ODg3LCA0ODkyLCA0ODk2LCA0OTAwLCA0OTA2LCAKKyAgICA0OTEwLCA0OTE0LCA0OTE5LCA0OTI1LCA0OTMwLCA0OTM2LCA0OTQwLCA0OTQ3LCA0OTUyLCA0OTU2LCA0OTYxLCA0OTY2LCAKKyAgICA0OTcyLCA0OTc1LCA0OTc5LCA0OTg0LCA0OTg5LCA0OTk4LCA1MDA0LCA1MDA5LCA1MDEzLCA1MDE4LCA1MDIyLCA1MDI3LCAKKyAgICA1MDMxLCA1MDM1LCA1MDQwLCA1MDQ0LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcwLCA1MDc1LCA1MDgwLCA1MDg2LCAKKyAgICA1MDkyLCA1MDk4LCA1MTA0LCA1MTA5LCA1MTE1LCA1MTIxLCA1MTI3LCA1MTMyLCA1MTM3LCA1MTQ0LCA1MTUxLCA1MTU1LCAKKyAgICA1MTYxLCA1MTY4LCAwLCAwLCA1MTc1LCA1MTc4LCA1MTg3LCA1MTk2LCA1MjA3LCA1MjExLCAwLCAwLCAwLCAwLCA1MjE2LCAKKyAgICA1MjE5LCA1MjI0LCA1MjMyLCA1MjM3LCA1MjQ1LCA1MjUzLCAwLCA1MjYxLCAwLCA1MjY5LCA1Mjc3LCA1Mjg1LCA1Mjk2LCAKKyAgICA1MzAxLCA1MzA2LCA1MzExLCA1MzE2LCA1MzIxLCA1MzI2LCA1MzMxLCA1MzM2LCA1MzQxLCA1MzQ2LCA1MzUxLCA1MzU2LCAKKyAgICA1MzYxLCA1MzY2LCA1MzcxLCA1Mzc2LCAwLCA1MzgxLCA1Mzg2LCA1MzkxLCA1Mzk2LCA1NDAxLCA1NDA2LCA1NDExLCAKKyAgICA1NDE2LCA1NDI0LCA1NDMyLCA1NDQwLCA1NDQ4LCA1NDU2LCA1NDY0LCA1NDc1LCA1NDgwLCA1NDg1LCA1NDkwLCA1NDk1LCAKKyAgICA1NTAwLCA1NTA1LCA1NTEwLCA1NTE1LCA1NTIwLCA1NTI1LCA1NTMwLCA1NTM1LCA1NTQwLCA1NTQ1LCA1NTUwLCA1NTU1LCAKKyAgICA1NTYwLCA1NTY2LCA1NTcxLCA1NTc2LCA1NTgxLCA1NTg2LCA1NTkxLCA1NTk2LCA1NjAxLCA1NjA5LCA1NjE3LCA1NjI1LCAKKyAgICA1NjMzLCA1NjQxLCA1NjQ2LCA1NjUwLCA1NjU0LCA1NjYxLCA1NjcxLCA1NjgxLCA1Njg1LCA1Njg5LCA1NjkzLCA1Njk5LCAKKyAgICA1NzA2LCA1NzEwLCA1NzE1LCA1NzE5LCA1NzI0LCA1NzI4LCA1NzMzLCA1NzM3LCA1NzQyLCA1NzQ3LCA1NzUyLCA1NzU3LCAKKyAgICA1NzYyLCA1NzY3LCA1NzcyLCA1Nzc3LCA1NzgyLCA1Nzg3LCA1NzkyLCA1Nzk3LCA1ODAyLCA1ODA3LCA1ODEyLCA1ODE2LCAKKyAgICA1ODIwLCA1ODI2LCA1ODMwLCA1ODM1LCA1ODQxLCA1ODQ5LCA1ODU0LCA1ODU5LCA1ODY2LCA1ODcxLCA1ODc2LCA1ODgzLCAKKyAgICA1ODkyLCA1OTAxLCA1OTEyLCA1OTIwLCA1OTI1LCA1OTMwLCA1OTM1LCA1OTQyLCA1OTQ3LCA1OTUzLCA1OTU4LCA1OTYzLCAKKyAgICA1OTY4LCA1OTczLCA1OTc4LCA1OTgzLCA1OTkxLCA1OTk3LCA2MDAyLCA2MDA2LCA2MDExLCA2MDE2LCA2MDIxLCA2MDI2LCAKKyAgICA2MDMxLCA2MDM2LCA2MDQxLCA2MDQ1LCA2MDUxLCA2MDU1LCA2MDYwLCA2MDY1LCA2MDcwLCA2MDc0LCA2MDc5LCA2MDg0LCAKKyAgICA2MDg5LCA2MDk0LCA2MDk4LCA2MTAzLCA2MTA3LCA2MTEyLCA2MTE3LCA2MTIyLCA2MTI3LCA2MTMzLCA2MTM4LCA2MTQ0LCAKKyAgICA2MTQ4LCA2MTUzLCA2MTU3LCA2MTYxLCA2MTY2LCA2MTcxLCA2MTc2LCA2MTgxLCA2MTg2LCA2MTkxLCA2MTk2LCA2MjAwLCAKKyAgICA2MjA2LCA2MjEwLCA2MjE1LCA2MjIwLCA2MjI1LCA2MjI5LCA2MjM0LCA2MjM5LCA2MjQ0LCA2MjQ5LCA2MjUzLCA2MjU4LCAKKyAgICA2MjYyLCA2MjY3LCA2MjcyLCA2Mjc3LCA2MjgyLCA2Mjg4LCA2MjkzLCA2Mjk5LCA2MzAzLCA2MzA4LCA2MzEyLCA2MzIwLCAKKyAgICA2MzI1LCA2MzMwLCA2MzM1LCA2MzQyLCA2MzQ3LCA2MzUzLCA2MzU4LCA2MzYzLCA2MzY4LCA2MzczLCA2Mzc4LCA2MzgzLCAKKyAgICA2MzkxLCA2Mzk3LCA2NDAyLCA2NDA3LCA2NDEyLCA2NDE3LCA2NDIyLCA2NDI4LCA2NDM0LCA2NDQxLCA2NDQ4LCA2NDU3LCAKKyAgICA2NDY2LCA2NDczLCA2NDgwLCA2NDg5LCA2NDk4LCA2NTAzLCA2NTA4LCA2NTEzLCA2NTE4LCA2NTIzLCA2NTI4LCA2NTMzLCAKKyAgICA2NTM4LCA2NTQ5LCA2NTYwLCA2NTY1LCA2NTcwLCA2NTc3LCA2NTg0LCA2NTkyLCA2NjAwLCA2NjA1LCA2NjEwLCA2NjE1LCAKKyAgICA2NjIwLCA2NjI0LCA2NjI4LCA2NjMyLCA2NjM4LCA2NjQ0LCA2NjQ4LCA2NjU1LCA2NjYwLCA2NjcwLCA2NjgwLCA2Njg2LCAKKyAgICA2NjkyLCA2NzAwLCA2NzA4LCA2NzE2LCA2NzI0LCA2NzMxLCA2NzM4LCA2NzQ2LCA2NzU0LCA2NzYyLCA2NzcwLCA2Nzc4LCAKKyAgICA2Nzg2LCA2Nzk0LCA2ODAyLCA2ODEwLCA2ODE4LCA2ODI1LCA2ODMyLCA2ODM4LCA2ODQ0LCA2ODUyLCA2ODYwLCA2ODY3LCAKKyAgICA2ODc0LCA2ODgyLCA2ODkwLCA2ODk2LCA2OTAyLCA2OTEwLCA2OTE4LCA2OTI2LCA2OTM0LCA2OTQwLCA2OTQ2LCA2OTU0LCAKKyAgICA2OTYyLCA2OTcwLCA2OTc4LCA2OTg1LCA2OTkyLCA3MDAwLCA3MDA4LCA3MDE2LCA3MDI0LCA3MDI5LCA3MDM0LCA3MDQxLCAKKyAgICA3MDQ4LCA3MDU4LCA3MDY4LCA3MDcyLCA3MDgwLCA3MDg4LCA3MDk1LCA3MTAyLCA3MTEwLCA3MTE4LCA3MTI1LCA3MTMyLCAKKyAgICA3MTQwLCA3MTQ4LCA3MTU1LCA3MTYyLCA3MTcwLCA3MTc4LCA3MTgzLCA3MTkwLCA3MTk3LCA3MjA0LCA3MjExLCA3MjE3LCAKKyAgICA3MjIzLCA3MjMxLCA3MjM5LCA3MjQ0LCA3MjQ5LCA3MjU3LCA3MjY1LCA3MjczLCA3MjgxLCA3Mjg5LCA3Mjk3LCA3MzA0LCAKKyAgICA3MzExLCA3MzE5LCA3MzI3LCA3MzM1LCA3MzQzLCA3MzUwLCA3MzU3LCA3MzYzLCA3MzY5LCA3Mzc4LCA3Mzg3LCA3Mzk0LCAKKyAgICA3NDAxLCA3NDA4LCA3NDE1LCA3NDIyLCA3NDI5LCA3NDM2LCA3NDQzLCA3NDUxLCA3NDU5LCA3NDY3LCA3NDc1LCA3NDgzLCAKKyAgICA3NDkxLCA3NTAxLCA3NTExLCA3NTE4LCA3NTI1LCA3NTMyLCA3NTM5LCA3NTQ2LCA3NTUzLCA3NTYwLCA3NTY3LCA3NTc0LCAKKyAgICA3NTgxLCA3NTg4LCA3NTk1LCA3NjAyLCA3NjA5LCA3NjE2LCA3NjIzLCA3NjMwLCA3NjM3LCA3NjQ0LCA3NjUxLCA3NjU4LCAKKyAgICA3NjY1LCA3NjcyLCA3Njc5LCA3Njg0LCA3Njg5LCA3Njk0LCA3Njk5LCA3NzA0LCA3NzA5LCA3NzE0LCA3NzE5LCA3NzI0LCAKKyAgICA3NzI5LCA3NzM1LCA3NzQxLCA3NzQ5LCA3NzU3LCA3NzY1LCA3NzczLCA3NzgxLCA3Nzg5LCA3Nzk3LCA3ODA1LCA3ODEzLCAKKyAgICA3ODIxLCA3ODI2LCA3ODMxLCA3ODM2LCA3ODQxLCA3ODQ5LCAwLCA3ODU3LCA3ODYyLCA3ODY3LCA3ODcyLCA3ODc3LCAKKyAgICA3ODgyLCA3ODg3LCA3ODkyLCA3ODk3LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMxLCA3OTM2LCAKKyAgICA3OTQxLCA3OTQ2LCA3OTUxLCA3OTU2LCA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg2LCA3OTkxLCA3OTk2LCAKKyAgICA4MDAxLCA4MDA2LCA4MDExLCA4MDE2LCA4MDIxLCA4MDI2LCA4MDMxLCA4MDM2LCA4MDQxLCAwLCAwLCA4MDQ2LCA4MDUzLCAKKyAgICA4MDU2LCA4MDYwLCA4MDY0LCA4MDY3LCA4MDcxLCAwLCA4MDc1LCA4MDgwLCA4MDg1LCA4MDkwLCA4MDk1LCA4MTAwLCAKKyAgICA4MTA1LCA4MTEwLCA4MTE1LCA4MTE5LCA4MTI0LCA4MTI5LCA4MTM0LCA4MTM5LCA4MTQ0LCA4MTQ5LCA4MTU0LCA4MTU5LCAKKyAgICA4MTY0LCA4MTY5LCA4MTc0LCA4MTc5LCA4MTg0LCA4MTg5LCA4MTk0LCA4MTk5LCA4MjA0LCA4MjA5LCA4MjE0LCA4MjE5LCAKKyAgICA4MjI0LCA4MjI5LCA4MjM0LCA4MjM5LCA4MjQ0LCA4MjQ5LCA4MjU0LCA4MjU5LCA4MjY0LCAwLCA4MjcxLCA4Mjc2LCAwLCAKKyAgICAwLCA4Mjc5LCA4Mjg1LCA4MjkxLCAwLCA4Mjk1LCA4MzAwLCA4MzA1LCA4MzEwLCA4MzE3LCA4MzI0LCA4MzI5LCA4MzM0LCAKKyAgICA4MzM5LCA4MzQ0LCA4MzQ5LCA4MzU0LCA4MzU5LCA4MzY2LCA4MzcxLCA4Mzc4LCA4Mzg1LCA4MzkwLCA4Mzk3LCA4NDAyLCAKKyAgICA4NDA3LCA4NDEyLCA4NDE5LCA4NDI0LCA4NDI5LCA4NDM2LCA4NDQ1LCA4NDUwLCA4NDU1LCA4NDYwLCA4NDY1LCA4NDcxLCAKKyAgICA4NDc2LCA4NDgzLCA4NDkwLCA4NDk3LCA4NTAyLCA4NTA3LCA4NTEyLCA4NTE3LCA4NTIyLCA4NTI3LCA4NTM3LCA4NTQyLCAKKyAgICA4NTUxLCA4NTU2LCA4NTYxLCA4NTY2LCA4NTcxLCA4NTc4LCA4NTg1LCA4NTkyLCA4NTk4LCA4NjA0LCA4NjExLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4NjE4LCA4NjIyLCA4NjI2LCA4NjMwLCA4NjM0LCA4NjM4LCA4NjQyLCA4NjQ2LCA4NjUwLCAKKyAgICA4NjU0LCA4NjU4LCA4NjYzLCA4NjY3LCA4NjcxLCA4Njc2LCA4NjgwLCA4Njg1LCA4Njg5LCA4NjkzLCA4Njk3LCA4NzAyLCAKKyAgICA4NzA2LCA4NzExLCA4NzE1LCA4NzE5LCA4NzIzLCA4NzI3LCAwLCAwLCAwLCAwLCAwLCA4NzMxLCA4NzM4LCA4NzQ2LCAKKyAgICA4NzUzLCA4NzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzYzLCA4NzY2LCA4NzcwLCA4Nzc1LCAKKyAgICA4Nzc5LCA4NzgzLCA4Nzg3LCA4NzkzLCA4Nzk5LCA4ODAyLCA4ODA5LCA4ODE4LCA4ODIxLCA4ODI0LCA4ODI5LCA4ODM1LCAKKyAgICA4ODM5LCA4ODQ3LCA4ODUzLCA4ODU5LCA4ODY3LCA4ODcxLCA4ODc2LCA4ODg3LCA4ODkyLCA4ODk2LCA4OTAwLCA4OTA0LCAKKyAgICA4OTA3LCAwLCA4OTEwLCA4OTE3LCA4OTIxLCA4OTI3LCA4OTMxLCA4OTM4LCA4OTQ1LCA4OTUzLCA4OTYwLCA4OTY3LCAKKyAgICA4OTcxLCA4OTc1LCA4OTgxLCA4OTg1LCA4OTg5LCA4OTkzLCA4OTk3LCA5MDAxLCA5MDA1LCA5MDA5LCA5MDEzLCA5MDE3LCAKKyAgICA5MDIxLCA5MDI1LCA5MDI5LCA5MDMzLCA5MDM3LCA5MDQxLCA5MDQ1LCA5MDQ5LCA5MDU3LCA5MDY1LCA5MDc1LCA5MDg0LCAKKyAgICA5MDkzLCA5MDk2LCA5MTAwLCA5MTA0LCA5MTA4LCA5MTEyLCA5MTE2LCA5MTIwLCA5MTI0LCA5MTI4LCA5MTMzLCA5MTM3LCAKKyAgICA5MTQwLCA5MTQzLCA5MTQ2LCA5MTQ5LCA5MTUyLCA5MTU1LCA5MTU4LCA5MTYxLCA5MTY1LCA5MTY5LCA5MTczLCA5MTc4LCAKKyAgICA5MTgzLCA5MTg5LCA5MTkyLCA5MTk5LCA5MjA4LCA5MjEzLCA5MjE4LCA5MjI1LCA5MjMxLCA5MjM2LCA5MjQwLCA5MjQ0LCAKKyAgICA5MjQ4LCA5MjUyLCA5MjU2LCA5MjYwLCA5MjY1LCA5MjY5LCA5Mjc0LCA5Mjc4LCA5MjgzLCA5Mjg4LCA5Mjk1LCA5MzAxLCAKKyAgICA5MzA3LCA5MzEzLCA5MzE4LCA5MzI3LCA5MzM2LCA5MzQxLCA5MzQ4LCA5MzU1LCA5MzYyLCA5MzY5LCA5MzczLCA5Mzc3LCAKKyAgICA5MzgxLCA5Mzg4LCA5Mzk4LCA5NDAyLCA5NDA2LCA5NDEwLCA5NDE3LCA5NDI1LCA5NDI5LCA5NDMzLCA5NDQwLCA5NDQ0LCAKKyAgICA5NDQ4LCA5NDUyLCA5NDU5LCA5NDY2LCA5NDc4LCA5NDgyLCA5NDg2LCA5NDkwLCA5NTAwLCA5NTA5LCA5NTEzLCA5NTIxLCAKKyAgICA5NTI4LCA5NTM1LCA5NTQ0LCA5NTU1LCA5NTYzLCA5NTY3LCA5NTc2LCA5NTg3LCA5NTk1LCA5NjA4LCA5NjE2LCA5NjI0LCAKKyAgICA5NjMyLCA5NjQwLCA5NjQ2LCA5NjU1LCA5NjYyLCA5NjY2LCA5Njc0LCA5Njc4LCA5Njg1LCA5NjkzLCA5Njk3LCA5NzAzLCAKKyAgICA5NzEwLCA5NzE3LCA5NzIxLCA5NzI5LCA5NzMzLCA5NzQwLCA5NzQ0LCA5NzUyLCA5NzU2LCA5NzY0LCA5NzcyLCA5Nzc5LCAKKyAgICA5Nzg3LCA5Nzk1LCA5ODAyLCA5ODA4LCA5ODEyLCA5ODE5LCA5ODI3LCA5ODMzLCA5ODQwLCA5ODQ3LCA5ODUzLCA5ODYzLCAKKyAgICA5ODcxLCA5ODc4LCA5ODg0LCA5ODg4LCA5ODkxLCA5ODk1LCA5OTAxLCA5OTA5LCA5OTEzLCA5OTE5LCA5OTI1LCA5OTMyLCAKKyAgICA5OTM5LCA5OTQyLCA5OTQ5LCA5OTU0LCA5OTYzLCA5OTY4LCA5OTcyLCA5OTg1LCA5OTk4LCAxMDAwNCwgMTAwMTEsIAorICAgIDEwMDE2LCAxMDAyMiwgMTAwMjcsIDEwMDMzLCAxMDA0MywgMTAwNTAsIDEwMDU5LCAxMDA2OSwgMTAwNzUsIDEwMDgwLCAKKyAgICAxMDA4NSwgMTAwODksIDEwMDkzLCAxMDA5OCwgMTAxMDMsIDEwMTA5LCAxMDExNywgMTAxMjUsIDEwMTM2LCAxMDE0MSwgCisgICAgMTAxNTAsIDEwMTU5LCAxMDE2NiwgMTAxNzIsIDEwMTc4LCAxMDE4NCwgMTAxOTAsIDEwMTk2LCAxMDIwMiwgMTAyMDksIAorICAgIDEwMjE1LCAxMDIyMiwgMTAyMjksIDEwMjM2LCAxMDI0MywgMTAyNDksIDEwMjU3LCAxMDI2NiwgMTAyNzMsIDEwMjgxLCAKKyAgICAxMDI4OSwgMTAyOTUsIDEwMzAxLCAxMDMwNywgMTAzMTUsIDEwMzIzLCAxMDMzMywgMTAzNDMsIDEwMzQ3LCAxMDM1MywgCisgICAgMTAzNTksIDAsIDEwMzY1LCAxMDM3MCwgMTAzNzUsIDEwMzgyLCAxMDM4NywgMTAzOTIsIDEwMzk5LCAxMDQwNCwgMTA0MTMsIAorICAgIDEwNDE4LCAxMDQyMywgMTA0MjgsIDEwNDMzLCAxMDQzOCwgMTA0NDUsIDEwNDUwLCAxMDQ1NywgMTA0NjIsIDEwNDY3LCAKKyAgICAxMDQ3MiwgMTA0NzcsIDEwNDgyLCAxMDQ4OCwgMTA0OTIsIDEwNDk3LCAxMDUwNCwgMTA1MDksIDEwNTE0LCAxMDUxOSwgCisgICAgMTA1MjQsIDEwNTI5LCAxMDUzNiwgMTA1NDMsIDEwNTUwLCAxMDU1NSwgMTA1NjAsIDEwNTY2LCAxMDU3MSwgMTA1NzYsIAorICAgIDEwNTgyLCAxMDU4NywgMTA1OTIsIDEwNjAwLCAxMDYwOCwgMTA2MTMsIDEwNjE4LCAxMDYyNCwgMTA2MjksIDEwNjM0LCAKKyAgICAxMDYzOCwgMTA2NDQsIDEwNjQ4LCAxMDY1MiwgMTA2NTgsIDEwNjY0LCAxMDY2OSwgMTA2NzQsIDEwNjgxLCAxMDY4OCwgCisgICAgMTA2OTIsIDAsIDAsIDEwNjk2LCAxMDcwMywgMTA3MTAsIDEwNzE3LCAxMDcyNywgMTA3MzksIDEwNzUwLCAxMDc2NiwgCisgICAgMTA3NzgsIDEwNzg5LCAxMDc5NywgMTA4MDQsIDEwODE0LCAxMDgyOSwgMTA4NDAsIDEwODQ2LCAxMDg1NSwgMTA4NjMsIAorICAgIDEwODc0LCAxMDg4NCwgMTA4OTIsIDEwOTAzLCAxMDkxMCwgMTA5MTgsIDEwOTI5LCAxMDkzNSwgMTA5NDEsIDEwOTQ5LCAKKyAgICAxMDk1NywgMTA5NjUsIDEwOTcxLCAxMDk4MSwgMTA5ODksIDEwOTk5LCAxMTAwOSwgMTEwMjIsIDExMDM2LCAxMTA1MCwgCisgICAgMTEwNjAsIDExMDcxLCAxMTA4MiwgMTEwOTUsIDExMTA4LCAxMTEyMiwgMTExMzQsIDExMTQ2LCAxMTE1OSwgMTExNzIsIAorICAgIDExMTg0LCAxMTE5NywgMTEyMDYsIDExMjE0LCAxMTIxOSwgMTEyMjQsIDExMjI5LCAxMTIzNCwgMTEyMzksIDExMjQ0LCAKKyAgICAxMTI0OSwgMTEyNTQsIDExMjU5LCAxMTI2NCwgMTEyNjksIDExMjc0LCAxMTI3OSwgMTEyODQsIDExMjg5LCAxMTI5NCwgCisgICAgMTEyOTksIDExMzA0LCAxMTMwOSwgMTEzMTQsIDExMzE5LCAxMTMyNCwgMTEzMjksIDExMzM0LCAxMTMzOSwgMTEzNDQsIAorICAgIDExMzQ5LCAxMTM1NCwgMTEzNTksIDExMzY0LCAxMTM2OSwgMTEzNzQsIDExMzc4LCAxMTM4MywgMTEzODgsIDExMzkzLCAKKyAgICAxMTM5OCwgMTE0MDMsIDExNDA3LCAxMTQxMSwgMTE0MTUsIDExNDE5LCAxMTQyMywgMTE0MjcsIDExNDMxLCAxMTQzNSwgCisgICAgMTE0MzksIDExNDQzLCAxMTQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0NTIsIAorICAgIDExNDU3LCAxMTQ2MSwgMTE0NjUsIDExNDY5LCAxMTQ3MywgMTE0NzcsIDExNDgxLCAxMTQ4NiwgMTE0OTAsIDExNDk1LCAKKyAgICAxMTQ5OSwgMTE1MDQsIDExNTA4LCAxMTUxMiwgMTE1MTYsIDExNTIxLCAxMTUyNSwgMTE1MzAsIDExNTM1LCAxMTU0MCwgCisgICAgMTE1NDQsIDExNTQ5LCAxMTU1NCwgMTE1NTksIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc5LCAxMTU4NCwgMTE1ODksIAorICAgIDExNTkzLCAxMTU5NywgMTE2MDQsIDExNjA4LCAxMTYxMywgMTE2MTcsIDExNjIxLCAxMTYyNiwgMTE2MzAsIDExNjM3LCAKKyAgICAxMTY0NCwgMTE2NTEsIDExNjU4LCAxMTY2NiwgMTE2NzQsIDExNjgzLCAxMTY5MSwgMTE2OTgsIDExNzA1LCAxMTcxMywgCisgICAgMTE3MTksIDExNzI1LCAxMTczMSwgMTE3MzcsIDExNzQ0LCAxMTc0OSwgMTE3NTMsIDExNzU4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTc2MiwgMTE3NjcsIDExNzcyLCAxMTc3NywgMTE3ODIsIDExNzg3LCAxMTc5MiwgMTE3OTcsIDExODAyLCAxMTgwNywgCisgICAgMTE4MTIsIDExODE3LCAxMTgyMiwgMTE4MjcsIDExODMyLCAxMTgzNywgMTE4NDIsIDExODQ3LCAxMTg1MiwgMTE4NTcsIAorICAgIDExODYyLCAxMTg2NywgMTE4NzIsIDExODc3LCAxMTg4MiwgMTE4ODcsIDExODkyLCAxMTkwMCwgMTE5MDcsIDExOTEzLCAKKyAgICAxMTkxOCwgMTE5MjYsIDExOTMzLCAxMTkzOSwgMTE5NDYsIDExOTUyLCAxMTk1NywgMTE5NjQsIDExOTcxLCAxMTk3NywgCisgICAgMTE5ODIsIDExOTg3LCAxMTk5MywgMTE5OTgsIDEyMDAzLCAxMjAwOSwgMCwgMCwgMTIwMTQsIDEyMDIwLCAxMjAyNiwgCisgICAgMTIwMzIsIDEyMDM4LCAxMjA0NCwgMTIwNTAsIDEyMDU1LCAxMjA2MywgMTIwNjksIDEyMDc1LCAxMjA4MSwgMTIwODcsIAorICAgIDEyMDkzLCAxMjEwMSwgMCwgMTIxMDcsIDEyMTEyLCAxMjExNywgMTIxMjIsIDEyMTI3LCAxMjEzMiwgMTIxMzcsIDEyMTQyLCAKKyAgICAxMjE0NywgMTIxNTIsIDEyMTU3LCAxMjE2MiwgMTIxNjcsIDEyMTcyLCAxMjE3NywgMTIxODIsIDEyMTg3LCAxMjE5MiwgCisgICAgMTIxOTcsIDEyMjAyLCAxMjIwNywgMTIyMTIsIDEyMjE3LCAxMjIyMiwgMTIyMjcsIDEyMjMyLCAxMjIzNywgMTIyNDIsIDAsIAorICAgIDAsIDEyMjQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI1MSwgMTIyNjAsIAorICAgIDEyMjY4LCAxMjI3NSwgMTIyODMsIDEyMjk1LCAxMjMwMiwgMTIzMDksIDEyMzE2LCAxMjMyOCwgMTIzMzksIDEyMzQ2LCAKKyAgICAxMjM1NCwgMTIzNjAsIDEyMzY1LCAxMjM3MywgMTIzODEsIDEyMzg5LCAxMjM5NSwgMTI0MDUsIDEyNDEzLCAwLCAxMjQyMCwgCisgICAgMTI0MjgsIDEyNDM2LCAxMjQ0NSwgMTI0NTQsIDEyNDY3LCAxMjQ3MywgMTI0NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDg1LCAxMjQ5MiwgMTI0OTcsIDEyNTAyLCAKKyAgICAxMjUwNywgMTI1MTUsIDEyNTIzLCAxMjUzMCwgMTI1MzcsIDEyNTQ0LCAxMjU1MSwgMTI1NTgsIDEyNTY1LCAxMjU3MiwgCisgICAgMTI1NzgsIDEyNTg2LCAxMjU5MiwgMTI1OTcsIDEyNjAyLCAxMjYwNywgMTI2MTIsIDEyNjE3LCAxMjYyMiwgMTI2MjcsIAorICAgIDEyNjMyLCAxMjYzNywgMTI2NDIsIDEyNjQ3LCAxMjY1MiwgMTI2NTYsIDEyNjYwLCAxMjY2NCwgMTI2NjksIDEyNjc1LCAKKyAgICAxMjY4MSwgMTI2ODcsIDEyNjkyLCAxMjY5NywgMTI3MDIsIDEyNzA3LCAxMjcxMywgMTI3MjIsIDEyNzMwLCAxMjczNiwgCisgICAgMTI3NDQsIDEyNzUwLCAxMjc1NCwgMTI3NTgsIDEyNzYyLCAxMjc2NywgMTI3NzAsIDEyNzc0LCAxMjc3NywgMTI3ODEsIAorICAgIDEyNzg0LCAxMjc4OCwgMTI3OTIsIDEyNzk2LCAxMjgwMSwgMTI4MDYsIDEyODA5LCAxMjgxMywgMTI4MTgsIDEyODIzLCAKKyAgICAxMjgyNiwgMTI4MzAsIDEyODMzLCAxMjgzNywgMTI4NDEsIDEyODQ1LCAxMjg0OSwgMTI4NTMsIDEyODU3LCAxMjg2MSwgCisgICAgMTI4NjUsIDEyODY5LCAxMjg3MywgMTI4NzcsIDEyODgxLCAxMjg4NSwgMTI4ODksIDEyODkzLCAxMjg5NywgMTI5MDEsIAorICAgIDEyOTA1LCAxMjkwOCwgMTI5MTIsIDEyOTE1LCAxMjkxOSwgMTI5MjMsIDEyOTI3LCAxMjkzMCwgMTI5MzMsIDEyOTM3LCAKKyAgICAxMjk0MSwgMTI5NDQsIDEyOTQ4LCAxMjk1MiwgMTI5NTYsIDEyOTYwLCAxMjk2NCwgMTI5NjgsIDEyOTcxLCAxMjk3NiwgCisgICAgMTI5ODEsIDEyOTg1LCAxMjk4OSwgMTI5OTQsIDEyOTk4LCAxMzAwMywgMTMwMDcsIDEzMDEyLCAxMzAxNywgMTMwMjMsIAorICAgIDEzMDI5LCAxMzAzNSwgMTMwMzksIDEzMDQ0LCAxMzA1MCwgMTMwNTYsIDEzMDYwLCAxMzA2NSwgMTMwNjksIDEzMDc1LCAKKyAgICAxMzA4MCwgMTMwODMsIDEzMDg5LCAxMzA5NSwgMTMxMDAsIDEzMTA1LCAxMzExMiwgMTMxMTcsIDEzMTIyLCAxMzEyNiwgCisgICAgMTMxMzAsIDEzMTM0LCAxMzEzOCwgMTMxNDIsIDEzMTQ2LCAxMzE1MCwgMTMxNTQsIDEzMTU5LCAxMzE2NCwgMTMxNjksIAorICAgIDEzMTc1LCAxMzE3OCwgMTMxODIsIDEzMTg2LCAxMzE4OSwgMTMxOTIsIDEzMTk1LCAxMzE5OCwgMTMyMDEsIDEzMjA0LCAKKyAgICAxMzIwOCwgMTMyMTEsIDEzMjE1LCAxMzIxOSwgMTMyMjYsIDEzMjMxLCAxMzIzNSwgMTMyMzksIDEzMjQzLCAxMzI0NywgCisgICAgMTMyNTEsIDEzMjU3LCAxMzI2MSwgMTMyNjUsIDEzMjY5LCAxMzI3MywgMTMyNzksIDEzMjgzLCAxMzI4NywgMTMyOTAsIAorICAgIDEzMjk0LCAxMzI5OCwgMCwgMTMzMDIsIDEzMzA1LCAxMzMwOSwgMTMzMTIsIDEzMzE2LCAxMzMxOSwgMTMzMjMsIDEzMzI3LCAKKyAgICAwLCAwLCAxMzMzMSwgMTMzMzQsIDAsIDAsIDEzMzM4LCAxMzM0MSwgMTMzNDUsIDEzMzQ4LCAxMzM1MiwgMTMzNTYsIAorICAgIDEzMzYwLCAxMzM2NCwgMTMzNjgsIDEzMzcyLCAxMzM3NiwgMTMzODAsIDEzMzg0LCAxMzM4OCwgMTMzOTIsIDEzMzk2LCAKKyAgICAxMzQwMCwgMTM0MDQsIDEzNDA4LCAxMzQxMiwgMTM0MTYsIDEzNDIwLCAwLCAxMzQyMywgMTM0MjYsIDEzNDMwLCAxMzQzNCwgCisgICAgMTM0MzgsIDEzNDQxLCAxMzQ0NCwgMCwgMTM0NDgsIDAsIDAsIDAsIDEzNDUxLCAxMzQ1NSwgMTM0NTksIDEzNDYzLCAwLCAwLCAKKyAgICAxMzQ2NiwgMTM0NzAsIDEzNDc0LCAxMzQ3OSwgMTM0ODMsIDEzNDg4LCAxMzQ5MiwgMTM0OTcsIDEzNTAyLCAwLCAwLCAKKyAgICAxMzUwOCwgMTM1MTIsIDAsIDAsIDEzNTE3LCAxMzUyMSwgMTM1MjYsIDEzNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUzNiwgMCwgMCwgMCwgMCwgMTM1NDIsIDEzNTQ2LCAwLCAxMzU1MCwgMTM1NTQsIDEzNTU5LCAxMzU2NCwgMTM1NjksIDAsIAorICAgIDAsIDEzNTc1LCAxMzU3OSwgMTM1ODIsIDEzNTg1LCAxMzU4OCwgMTM1OTEsIDEzNTk0LCAxMzU5NywgMTM2MDEsIDEzNjA0LCAKKyAgICAxMzYwOCwgMTM2MTYsIDEzNjI1LCAxMzYyOSwgMTM2MzMsIDEzNjM5LCAxMzY0NSwgMTM2NTEsIDEzNjU3LCAxMzY3MSwgCisgICAgMTM2NzgsIDEzNjgxLCAwLCAwLCAwLCAwLCAwLCAxMzY4NSwgMTM2OTIsIDEzNjk3LCAwLCAxMzcwMiwgMTM3MDYsIDEzNzExLCAKKyAgICAxMzcxNSwgMTM3MjAsIDEzNzI0LCAwLCAwLCAwLCAwLCAxMzcyOSwgMTM3MzQsIDAsIDAsIDEzNzM5LCAxMzc0NCwgMTM3NDksIAorICAgIDEzNzUzLCAxMzc1OCwgMTM3NjMsIDEzNzY4LCAxMzc3MywgMTM3NzgsIDEzNzgzLCAxMzc4OCwgMTM3OTMsIDEzNzk4LCAKKyAgICAxMzgwMywgMTM4MDgsIDEzODEzLCAxMzgxOCwgMTM4MjMsIDEzODI4LCAxMzgzMywgMTM4MzgsIDEzODQzLCAwLCAxMzg0NywgCisgICAgMTM4NTEsIDEzODU2LCAxMzg2MSwgMTM4NjYsIDEzODcwLCAxMzg3NCwgMCwgMTM4NzksIDEzODgzLCAwLCAxMzg4OCwgCisgICAgMTM4OTMsIDAsIDEzODk4LCAxMzkwMywgMCwgMCwgMTM5MDcsIDAsIDEzOTEyLCAxMzkxOCwgMTM5MjMsIDEzOTI5LCAKKyAgICAxMzkzNCwgMCwgMCwgMCwgMCwgMTM5NDAsIDEzOTQ2LCAwLCAwLCAxMzk1MiwgMTM5NTgsIDEzOTY0LCAwLCAwLCAwLCAKKyAgICAxMzk2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5NzQsIDEzOTc5LCAxMzk4NCwgMTM5ODksIDAsIDEzOTk0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzk5OSwgMTQwMDQsIDE0MDA4LCAxNDAxMiwgMTQwMTYsIDE0MDIwLCAxNDAyNCwgMTQwMjgsIAorICAgIDE0MDMzLCAxNDAzNywgMTQwNDIsIDE0MDQ2LCAxNDA1MCwgMTQwNTQsIDE0MDU4LCAxNDA2NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQwNjksIDE0MDc0LCAxNDA3OSwgMCwgMTQwODQsIDE0MDg4LCAxNDA5MywgMTQwOTcsIDE0MTAyLCAKKyAgICAxNDEwNiwgMTQxMTEsIDE0MTE2LCAxNDEyMSwgMCwgMTQxMjcsIDE0MTMxLCAxNDEzNiwgMCwgMTQxNDIsIDE0MTQ2LCAKKyAgICAxNDE1MSwgMTQxNTUsIDE0MTYwLCAxNDE2NSwgMTQxNzAsIDE0MTc1LCAxNDE4MCwgMTQxODUsIDE0MTkwLCAxNDE5NSwgCisgICAgMTQyMDAsIDE0MjA1LCAxNDIxMCwgMTQyMTUsIDE0MjIwLCAxNDIyNSwgMTQyMzAsIDE0MjM1LCAxNDI0MCwgMTQyNDUsIDAsIAorICAgIDE0MjQ5LCAxNDI1MywgMTQyNTgsIDE0MjYzLCAxNDI2OCwgMTQyNzIsIDE0Mjc2LCAwLCAxNDI4MSwgMTQyODUsIDAsIAorICAgIDE0MjkwLCAxNDI5NSwgMTQzMDAsIDE0MzA1LCAxNDMxMCwgMCwgMCwgMTQzMTQsIDE0MzE5LCAxNDMyNCwgMTQzMzAsIAorICAgIDE0MzM1LCAxNDM0MSwgMTQzNDYsIDE0MzUyLCAxNDM1OCwgMTQzNjUsIDAsIDE0MzcyLCAxNDM3NywgMTQzODMsIDAsIAorICAgIDE0MzkwLCAxNDM5NSwgMTQ0MDEsIDAsIDAsIDE0NDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNDQxMCwgMTQ0MTYsIDE0NDIyLCAxNDQyOCwgMCwgMCwgMTQ0MzUsIDE0NDQwLCAxNDQ0NCwgMTQ0NDgsIAorICAgIDE0NDUyLCAxNDQ1NiwgMTQ0NjAsIDE0NDY0LCAxNDQ2OSwgMTQ0NzMsIDE0NDc4LCAxNDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTQ0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDkzLCAxNDQ5OCwgMTQ1MDMsIDAsIDE0NTA4LCAxNDUxMiwgCisgICAgMTQ1MTcsIDE0NTIxLCAxNDUyNiwgMTQ1MzAsIDE0NTM1LCAxNDU0MCwgMCwgMCwgMTQ1NDUsIDE0NTQ5LCAwLCAwLCAKKyAgICAxNDU1NCwgMTQ1NTgsIDE0NTYzLCAxNDU2NywgMTQ1NzIsIDE0NTc3LCAxNDU4MiwgMTQ1ODcsIDE0NTkyLCAxNDU5NywgCisgICAgMTQ2MDIsIDE0NjA3LCAxNDYxMiwgMTQ2MTcsIDE0NjIyLCAxNDYyNywgMTQ2MzIsIDE0NjM3LCAxNDY0MiwgMTQ2NDcsIAorICAgIDE0NjUyLCAxNDY1NywgMCwgMTQ2NjEsIDE0NjY1LCAxNDY3MCwgMTQ2NzUsIDE0NjgwLCAxNDY4NCwgMTQ2ODgsIDAsIAorICAgIDE0NjkzLCAxNDY5NywgMCwgMTQ3MDIsIDE0NzA3LCAxNDcxMiwgMTQ3MTcsIDE0NzIyLCAwLCAwLCAxNDcyNiwgMTQ3MzEsIAorICAgIDE0NzM2LCAxNDc0MiwgMTQ3NDcsIDE0NzUzLCAxNDc1OCwgMTQ3NjQsIDE0NzcwLCAwLCAwLCAxNDc3NywgMTQ3ODIsIDAsIAorICAgIDAsIDE0Nzg4LCAxNDc5MywgMTQ3OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODA0LCAxNDgxMSwgMCwgMCwgMCwgMCwgCisgICAgMTQ4MTgsIDE0ODIzLCAwLCAxNDgyOCwgMTQ4MzMsIDE0ODM5LCAxNDg0NSwgMTQ4NTEsIDAsIDAsIDE0ODU4LCAxNDg2MywgCisgICAgMTQ4NjcsIDE0ODcxLCAxNDg3NSwgMTQ4NzksIDE0ODgzLCAxNDg4NywgMTQ4OTIsIDE0ODk2LCAxNDkwMSwgMTQ5MDUsIAorICAgIDE0OTEwLCAxNDkxNywgMTQ5MjQsIDE0OTMxLCAxNDkzOCwgMTQ5NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0OTUyLCAxNDk1NiwgMCwgMTQ5NjAsIDE0OTYzLCAxNDk2NywgMTQ5NzAsIDE0OTc0LCAxNDk3NywgMCwgMCwgMCwgCisgICAgMTQ5ODEsIDE0OTg0LCAxNDk4OCwgMCwgMTQ5OTIsIDE0OTk1LCAxNDk5OSwgMTUwMDMsIDAsIDAsIDAsIDE1MDA2LCAKKyAgICAxNTAxMCwgMCwgMTUwMTQsIDAsIDE1MDE4LCAxNTAyMiwgMCwgMCwgMCwgMTUwMjYsIDE1MDMwLCAwLCAwLCAwLCAxNTAzNCwgCisgICAgMTUwMzcsIDE1MDQxLCAwLCAwLCAwLCAxNTA0NCwgMTUwNDcsIDE1MDUwLCAxNTA1NCwgMTUwNTgsIDE1MDYxLCAxNTA2NSwgCisgICAgMTUwNjksIDE1MDczLCAxNTA3NywgMTUwODEsIDE1MDg1LCAwLCAwLCAwLCAwLCAxNTA4OCwgMTUwOTMsIDE1MDk3LCAKKyAgICAxNTEwMiwgMTUxMDYsIDAsIDAsIDAsIDE1MTExLCAxNTExNSwgMTUxMjAsIDAsIDE1MTI1LCAxNTEyOSwgMTUxMzQsIAorICAgIDE1MTM5LCAwLCAwLCAxNTE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMTUxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE1MTUyLCAxNTE1NiwgMTUxNTksIDE1MTYyLCAxNTE2NSwgMTUxNjgsIDE1MTcxLCAxNTE3NCwgCisgICAgMTUxNzgsIDE1MTgxLCAxNTE4NSwgMTUxODksIDE1MTk0LCAxNTE5OSwgMTUyMDMsIDE1MjA3LCAxNTIxMSwgMTUyMTUsIAorICAgIDE1MjE5LCAxNTIyNCwgMTUyMjgsIDAsIDAsIDAsIDAsIDAsIDE1MjMxLCAxNTIzNywgMTUyNDEsIDE1MjQ1LCAwLCAxNTI0OSwgCisgICAgMTUyNTIsIDE1MjU2LCAxNTI1OSwgMTUyNjMsIDE1MjY2LCAxNTI3MCwgMTUyNzQsIDAsIDE1Mjc4LCAxNTI4MSwgMTUyODUsIAorICAgIDAsIDE1Mjg5LCAxNTI5MiwgMTUyOTYsIDE1MzAwLCAxNTMwMywgMTUzMDcsIDE1MzExLCAxNTMxNSwgMTUzMTksIDE1MzIzLCAKKyAgICAxNTMyNywgMTUzMzEsIDE1MzM1LCAxNTMzOSwgMTUzNDMsIDE1MzQ3LCAxNTM1MSwgMTUzNTUsIDE1MzU5LCAxNTM2MywgCisgICAgMTUzNjcsIDE1MzcxLCAxNTM3NSwgMCwgMTUzNzgsIDE1MzgxLCAxNTM4NSwgMTUzODksIDE1MzkzLCAxNTM5NiwgMTUzOTksIAorICAgIDE1NDAzLCAxNTQwNywgMTU0MTAsIDE1NDE0LCAxNTQxOCwgMTU0MjIsIDE1NDI2LCAxNTQzMCwgMTU0MzQsIDAsIDAsIDAsIAorICAgIDE1NDM3LCAxNTQ0MSwgMTU0NDYsIDE1NDUwLCAxNTQ1NSwgMTU0NTksIDE1NDY0LCAxNTQ2OSwgMCwgMTU0NzUsIDE1NDc5LCAKKyAgICAxNTQ4NCwgMCwgMTU0ODksIDE1NDkzLCAxNTQ5OCwgMTU1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTA3LCAxNTUxMSwgCisgICAgMCwgMTU1MTcsIDE1NTIxLCAxNTUyNSwgMCwgMCwgMCwgMCwgMCwgMTU1MjksIDE1NTM0LCAxNTUzOSwgMTU1NDQsIDAsIDAsIAorICAgIDE1NTUwLCAxNTU1NCwgMTU1NTcsIDE1NTYwLCAxNTU2MywgMTU1NjYsIDE1NTY5LCAxNTU3MiwgMTU1NzYsIDE1NTc5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU4MywgMTU1OTYsIDE1NjA4LCAxNTYyMCwgMTU2MzIsIDE1NjQ0LCAxNTY1NiwgCisgICAgMTU2NjgsIDE1NjcyLCAxNTY3OSwgMTU2ODQsIDE1Njg5LCAwLCAxNTY5NCwgMTU2OTgsIDE1NzAzLCAxNTcwNywgMTU3MTIsIAorICAgIDE1NzE2LCAxNTcyMSwgMTU3MjYsIDAsIDE1NzMxLCAxNTczNSwgMTU3NDAsIDAsIDE1NzQ1LCAxNTc0OSwgMTU3NTQsIAorICAgIDE1NzU5LCAxNTc2MywgMTU3NjgsIDE1NzczLCAxNTc3OCwgMTU3ODMsIDE1Nzg4LCAxNTc5MywgMTU3OTgsIDE1ODAzLCAKKyAgICAxNTgwOCwgMTU4MTMsIDE1ODE4LCAxNTgyMywgMTU4MjgsIDE1ODMzLCAxNTgzOCwgMTU4NDMsIDE1ODQ4LCAxNTg1MywgMCwgCisgICAgMTU4NTcsIDE1ODYxLCAxNTg2NiwgMTU4NzEsIDE1ODc2LCAxNTg4MCwgMTU4ODQsIDE1ODg5LCAxNTg5NCwgMTU4OTgsIDAsIAorICAgIDE1OTAzLCAxNTkwOCwgMTU5MTMsIDE1OTE4LCAxNTkyMywgMCwgMCwgMTU5MjcsIDE1OTMyLCAxNTkzNywgMTU5NDMsIAorICAgIDE1OTQ4LCAxNTk1NCwgMTU5NTksIDE1OTY1LCAxNTk3MSwgMCwgMTU5NzgsIDE1OTgzLCAxNTk4OSwgMCwgMTU5OTUsIAorICAgIDE2MDAwLCAxNjAwNiwgMTYwMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDE3LCAxNjAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTYwMjksIDAsIDE2MDM0LCAxNjA0MCwgMTYwNDYsIDE2MDUyLCAwLCAwLCAxNjA1OSwgMTYwNjQsIDE2MDY4LCAKKyAgICAxNjA3MiwgMTYwNzYsIDE2MDgwLCAxNjA4NCwgMTYwODgsIDE2MDkzLCAxNjA5NywgMCwgMTYxMDIsIDE2MTA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjExMiwgMTYxMTYsIDE2MTIwLCAwLCAxNjEyNCwgMTYxMjcsIAorICAgIDE2MTMxLCAxNjEzNCwgMTYxMzgsIDE2MTQxLCAxNjE0NSwgMTYxNDksIDAsIDE2MTUzLCAxNjE1NiwgMTYxNjAsIDAsIAorICAgIDE2MTY0LCAxNjE2NywgMTYxNzEsIDE2MTc1LCAxNjE3OCwgMTYxODIsIDE2MTg2LCAxNjE5MCwgMTYxOTQsIDE2MTk4LCAKKyAgICAxNjIwMiwgMTYyMDYsIDE2MjEwLCAxNjIxNCwgMTYyMTgsIDE2MjIyLCAxNjIyNiwgMTYyMzAsIDE2MjM0LCAxNjIzOCwgCisgICAgMTYyNDIsIDE2MjQ2LCAxNjI1MCwgMTYyNTMsIDE2MjU3LCAxNjI2MCwgMTYyNjQsIDE2MjY4LCAxNjI3MiwgMTYyNzUsIAorICAgIDE2Mjc4LCAxNjI4MiwgMTYyODYsIDE2Mjg5LCAxNjI5MywgMTYyOTcsIDE2MzAxLCAxNjMwNSwgMTYzMDksIDE2MzEzLCAKKyAgICAxNjMxNiwgMCwgMCwgMTYzMjAsIDE2MzI0LCAxNjMyOSwgMTYzMzMsIDE2MzM4LCAxNjM0MiwgMTYzNDcsIDE2MzUyLCAwLCAKKyAgICAxNjM1OCwgMTYzNjIsIDE2MzY3LCAwLCAxNjM3MiwgMTYzNzYsIDE2MzgxLCAxNjM4NiwgMTYzOTAsIDE2Mzk1LCAwLCAwLCAKKyAgICAwLCAwLCAxNjM5OSwgMTY0MDUsIDE2NDExLCAxNjQxNywgMTY0MjMsIDE2NDI5LCAxNjQzNSwgMTY0NDEsIDE2NDQ3LCAKKyAgICAxNjQ1MywgMTY0NTksIDE2NDY1LCAxNjQ3MSwgMTY0NzYsIDE2NDgxLCAxNjQ4NiwgMCwgMCwgMTY0OTIsIDE2NDk2LCAKKyAgICAxNjQ5OSwgMTY1MDIsIDE2NTA1LCAxNjUwOCwgMTY1MTEsIDE2NTE0LCAxNjUxOCwgMTY1MjEsIDE2NTI1LCAxNjUyOSwgCisgICAgMTY1MzQsIDE2NTM5LCAxNjU0NSwgMTY1NTEsIDE2NTU3LCAxNjU2MywgMTY1NjksIDE2NTc1LCAxNjU3OSwgMTY1ODUsIAorICAgIDE2NTkxLCAxNjU5NywgMTY2MDIsIDE2NjA4LCAwLCAwLCAxNjYxNCwgMTY2MTgsIDAsIDE2NjIyLCAxNjYyNiwgMTY2MzAsIAorICAgIDE2NjM0LCAxNjYzOCwgMTY2NDIsIDE2NjQ2LCAxNjY1MCwgMTY2NTQsIDE2NjU4LCAxNjY2MiwgMTY2NjYsIDE2NjcwLCAKKyAgICAxNjY3NCwgMTY2NzgsIDE2NjgyLCAxNjY4NiwgMTY2OTAsIDAsIDAsIDAsIDE2Njk0LCAxNjcwMCwgMTY3MDYsIDE2NzEyLCAKKyAgICAxNjcxOCwgMTY3MjQsIDE2NzMwLCAxNjczNiwgMTY3NDIsIDE2NzQ4LCAxNjc1NCwgMTY3NjAsIDE2NzY4LCAxNjc3NCwgCisgICAgMTY3ODAsIDE2Nzg2LCAxNjc5MiwgMTY3OTgsIDE2ODA0LCAxNjgxMCwgMTY4MTYsIDE2ODIyLCAxNjgyOCwgMTY4MzQsIDAsIAorICAgIDE2ODQwLCAxNjg0NiwgMTY4NTIsIDE2ODU4LCAxNjg2NCwgMTY4NzAsIDE2ODc0LCAxNjg4MCwgMTY4ODQsIDAsIDE2ODg4LCAKKyAgICAwLCAwLCAxNjg5NCwgMTY4OTgsIDE2OTA0LCAxNjkxMCwgMTY5MTYsIDE2OTIwLCAxNjkyNiwgMCwgMCwgMCwgMTY5MzAsIDAsIAorICAgIDAsIDAsIDAsIDE2OTM0LCAxNjkzOSwgMTY5NDYsIDE2OTUzLCAxNjk2MCwgMTY5NjcsIDAsIDE2OTc0LCAwLCAxNjk4MSwgCisgICAgMTY5ODYsIDE2OTkxLCAxNjk5OCwgMTcwMDUsIDE3MDE0LCAxNzAyNSwgMTcwMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MDM5LCAKKyAgICAxNzA0NSwgMTcwNTAsIDE3MDU1LCAxNzA2MCwgMTcwNjUsIDE3MDcwLCAxNzA3NSwgMTcwODEsIDE3MDg2LCAwLCAwLCAKKyAgICAxNzA5MiwgMTcwOTksIDE3MTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzExMSwgMTcxMTgsIAorICAgIDE3MTI1LCAxNzEzMiwgMTcxMzksIDE3MTQ2LCAxNzE1MywgMTcxNjAsIDE3MTY3LCAxNzE3NCwgMTcxODEsIDE3MTg4LCAKKyAgICAxNzE5NSwgMTcyMDIsIDE3MjA5LCAxNzIxNiwgMTcyMjMsIDE3MjMwLCAxNzIzNywgMTcyNDQsIDE3MjUxLCAxNzI1OCwgCisgICAgMTcyNjUsIDE3MjcyLCAxNzI3OSwgMTcyODYsIDE3MjkzLCAxNzMwMCwgMTczMDcsIDE3MzE0LCAxNzMyMSwgMTczMjgsIAorICAgIDE3MzM1LCAxNzM0MSwgMTczNDgsIDE3MzU1LCAxNzM2MCwgMTczNjcsIDE3MzcyLCAxNzM3OSwgMTczODYsIDE3MzkzLCAKKyAgICAxNzQwMCwgMTc0MDcsIDE3NDE0LCAxNzQyMCwgMTc0MjcsIDE3NDMyLCAxNzQzOCwgMTc0NDUsIDE3NDUyLCAxNzQ1OSwgCisgICAgMTc0NjUsIDE3NDcyLCAxNzQ3OSwgMTc0ODYsIDE3NDkyLCAxNzQ5OSwgMCwgMCwgMCwgMCwgMTc1MDQsIDE3NTExLCAKKyAgICAxNzUxNywgMTc1MjQsIDE3NTMwLCAxNzUzOSwgMTc1NDgsIDE3NTUzLCAxNzU1OCwgMTc1NjMsIDE3NTcwLCAxNzU3NywgCisgICAgMTc1ODQsIDE3NTkxLCAxNzU5NiwgMTc2MDEsIDE3NjA2LCAxNzYxMSwgMTc2MTYsIDE3NjIwLCAxNzYyNCwgMTc2MjgsIAorICAgIDE3NjMyLCAxNzYzNiwgMTc2NDAsIDE3NjQ1LCAxNzY0OSwgMTc2NTQsIDE3NjU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNzY2NCwgMTc2NjksIDAsIDE3Njc2LCAwLCAwLCAxNzY4MywgMTc2ODgsIDAsIDE3NjkzLCAwLCAKKyAgICAwLCAxNzcwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc3MDUsIDE3NzEwLCAxNzcxNCwgMTc3MjEsIDAsIDE3NzI4LCAxNzczMywgCisgICAgMTc3MzgsIDE3NzQzLCAxNzc1MCwgMTc3NTcsIDE3NzY0LCAwLCAxNzc3MSwgMTc3NzYsIDE3NzgxLCAwLCAxNzc4OCwgMCwgCisgICAgMTc3OTUsIDAsIDAsIDE3ODAwLCAxNzgwNywgMCwgMTc4MTQsIDE3ODE4LCAxNzgyNSwgMTc4MjksIDE3ODM0LCAxNzg0MiwgCisgICAgMTc4NDgsIDE3ODU0LCAxNzg1OSwgMTc4NjUsIDE3ODcxLCAxNzg3NywgMTc4ODIsIDAsIDE3ODg4LCAxNzg5NiwgMTc5MDMsIAorICAgIDAsIDAsIDE3OTEwLCAxNzkxNSwgMTc5MjEsIDE3OTI2LCAxNzkzMiwgMCwgMTc5MzgsIDAsIDE3OTQzLCAxNzk1MCwgCisgICAgMTc5NTcsIDE3OTY0LCAxNzk3MSwgMTc5NzYsIDAsIDAsIDE3OTgwLCAxNzk4NSwgMTc5ODksIDE3OTkzLCAxNzk5NywgCisgICAgMTgwMDEsIDE4MDA1LCAxODAwOSwgMTgwMTQsIDE4MDE4LCAwLCAwLCAxODAyMywgMTgwMjksIDE4MDM1LCAxODA0MiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwNDksIDE4MDUzLCAxODA2NCwgMTgwNzksIDE4MDk0LCAxODEwNCwgMTgxMTUsIAorICAgIDE4MTI4LCAxODEzOSwgMTgxNDUsIDE4MTUzLCAxODE2MywgMTgxNjksIDE4MTc3LCAxODE4MSwgMTgxODcsIDE4MTkzLCAKKyAgICAxODIwMSwgMTgyMTEsIDE4MjE5LCAxODIzMiwgMTgyMzgsIDE4MjQ2LCAxODI1NCwgMTgyNjYsIDE4MjczLCAxODI4MSwgCisgICAgMTgyODksIDE4Mjk3LCAxODMwNSwgMTgzMTMsIDE4MzIxLCAxODMzMSwgMTgzMzUsIDE4MzM4LCAxODM0MSwgMTgzNDQsIAorICAgIDE4MzQ3LCAxODM1MCwgMTgzNTMsIDE4MzU3LCAxODM2MCwgMTgzNjQsIDE4MzY4LCAxODM3MiwgMTgzNzYsIDE4MzgwLCAKKyAgICAxODM4NCwgMTgzODgsIDE4MzkzLCAxODM5NywgMTg0MDIsIDE4NDA3LCAxODQxMywgMTg0MjMsIDE4NDM3LCAxODQ0NywgCisgICAgMTg0NTMsIDE4NDU5LCAxODQ2NywgMTg0NzUsIDE4NDgzLCAxODQ5MSwgMTg0OTcsIDE4NTAzLCAxODUwNiwgMTg1MTAsIAorICAgIDE4NTE0LCAxODUxOCwgMTg1MjIsIDE4NTI2LCAxODUzMCwgMCwgMTg1MzQsIDE4NTM4LCAxODU0MiwgMTg1NDYsIDE4NTUwLCAKKyAgICAxODU1NCwgMTg1NTgsIDE4NTYyLCAxODU2NiwgMTg1NzAsIDE4NTc0LCAxODU3NywgMTg1ODAsIDE4NTg0LCAxODU4OCwgCisgICAgMTg1OTIsIDE4NTk1LCAxODU5OSwgMTg2MDMsIDE4NjA3LCAxODYxMSwgMTg2MTUsIDE4NjE5LCAxODYyMywgMTg2MjcsIAorICAgIDE4NjMwLCAxODYzNCwgMTg2MzcsIDE4NjQxLCAxODY0NSwgMTg2NDksIDE4NjUyLCAxODY1NSwgMTg2NTksIDE4NjY1LCAKKyAgICAxODY2OSwgMCwgMCwgMCwgMCwgMTg2NzMsIDE4Njc4LCAxODY4MiwgMTg2ODcsIDE4NjkxLCAxODY5NiwgMTg3MDEsIAorICAgIDE4NzA3LCAxODcxMiwgMTg3MTgsIDE4NzIyLCAxODcyNywgMTg3MzEsIDE4NzM2LCAxODc0NiwgMTg3NTIsIDE4NzU4LCAKKyAgICAxODc2NSwgMTg3NzUsIDE4NzgxLCAxODc4NSwgMTg3ODksIDE4Nzk1LCAxODgwMSwgMTg4MDksIDE4ODE1LCAxODgyMywgCisgICAgMTg4MzEsIDE4ODM5LCAxODg0OSwgMTg4NTcsIDE4ODY3LCAxODg3MiwgMTg4NzgsIDE4ODg0LCAxODg5MCwgMTg4OTYsIAorICAgIDE4OTAyLCAxODkwOCwgMCwgMTg5MTQsIDE4OTIwLCAxODkyNiwgMTg5MzIsIDE4OTM4LCAxODk0NCwgMTg5NTAsIDE4OTU2LCAKKyAgICAxODk2MiwgMTg5NjgsIDE4OTc0LCAxODk3OSwgMTg5ODQsIDE4OTkwLCAxODk5NiwgMTkwMDIsIDE5MDA3LCAxOTAxMywgCisgICAgMTkwMTksIDE5MDI1LCAxOTAzMSwgMTkwMzcsIDE5MDQzLCAxOTA0OSwgMTkwNTUsIDE5MDYwLCAxOTA2NiwgMTkwNzEsIAorICAgIDE5MDc3LCAxOTA4MywgMTkwODksIDE5MDk0LCAxOTA5OSwgMTkxMDUsIDE5MTEzLCAxOTEyMCwgMCwgMTkxMjgsIDE5MTM1LCAKKyAgICAxOTE0OCwgMTkxNTUsIDE5MTYyLCAxOTE3MCwgMTkxNzgsIDE5MTg0LCAxOTE5MCwgMTkxOTYsIDE5MjA2LCAxOTIxMSwgCisgICAgMTkyMTcsIDE5MjI3LCAxOTIzNywgMCwgMTkyNDcsIDE5MjU3LCAxOTI2NSwgMTkyNzcsIDE5Mjg5LCAxOTI5NSwgMTkzMDksIAorICAgIDE5MzI0LCAxOTMyOSwgMTkzMzQsIDE5MzQyLCAxOTM1MCwgMTkzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5MzY2LCAxOTM2OSwgMTkzNzMsIDE5Mzc3LCAxOTM4MSwgMTkzODUsIDE5Mzg5LCAxOTM5MywgMTkzOTcsIAorICAgIDE5NDAxLCAxOTQwNSwgMTk0MDksIDE5NDEzLCAxOTQxNywgMTk0MjEsIDE5NDI1LCAxOTQyOSwgMTk0MzMsIDE5NDM3LCAKKyAgICAxOTQ0MSwgMTk0NDUsIDE5NDQ4LCAxOTQ1MSwgMTk0NTUsIDE5NDU5LCAxOTQ2MywgMTk0NjYsIDE5NDY5LCAxOTQ3MywgCisgICAgMTk0NzYsIDE5NDgwLCAxOTQ4NCwgMTk0ODcsIDE5NDkxLCAxOTQ5NCwgMTk0OTksIDE5NTAyLCAxOTUwNiwgMTk1MDksIAorICAgIDE5NTEzLCAxOTUxNiwgMTk1MjEsIDE5NTI0LCAxOTUyOCwgMTk1MzUsIDE5NTQwLCAxOTU0NCwgMTk1NDksIDE5NTUzLCAKKyAgICAxOTU1OCwgMTk1NjIsIDE5NTY3LCAxOTU3NCwgMTk1ODAsIDE5NTg1LCAxOTU4OSwgMTk1OTMsIDE5NTk3LCAxOTYwMSwgCisgICAgMTk2MDUsIDE5NjEwLCAxOTYxNiwgMTk2MjIsIDE5NjI3LCAxOTYzMywgMTk2MzcsIDE5NjQwLCAxOTY0MywgMTk2NDYsIAorICAgIDE5NjQ5LCAxOTY1MiwgMTk2NTUsIDE5NjU5LCAxOTY2MiwgMTk2NjYsIDE5NjcyLCAxOTY3NiwgMTk2ODAsIDE5Njg0LCAKKyAgICAxOTY4OCwgMTk2OTIsIDE5Njk2LCAxOTcwMCwgMTk3MDQsIDE5NzA5LCAxOTcxMywgMTk3MTgsIDE5NzIzLCAxOTcyOSwgCisgICAgMTk3MzQsIDE5NzQwLCAxOTc0NiwgMTk3NTIsIDE5NzU4LCAxOTc2NCwgMTk3NzEsIDE5Nzc4LCAxOTc4NSwgMTk3OTMsIAorICAgIDE5ODAyLCAxOTgxMSwgMTk4MjIsIDE5ODMyLCAxOTg0MiwgMTk4NTMsIDE5ODY0LCAxOTg3NCwgMTk4ODQsIDE5ODk0LCAKKyAgICAxOTkwNCwgMTk5MTQsIDE5OTI0LCAxOTkzNCwgMTk5NDQsIDE5OTUyLCAxOTk1OSwgMTk5NjUsIDE5OTcyLCAxOTk3NywgCisgICAgMTk5ODMsIDE5OTg5LCAxOTk5NSwgMjAwMDEsIDIwMDA3LCAyMDAxMywgMjAwMTgsIDIwMDI0LCAyMDAzMCwgMjAwMzYsIAorICAgIDIwMDQyLCAyMDA0NywgMjAwNTUsIDIwMDYyLCAyMDA2OCwgMjAwNzUsIDIwMDgzLCAyMDA4OSwgMjAwOTUsIDIwMTAxLCAKKyAgICAyMDEwNywgMjAxMTUsIDIwMTIzLCAyMDEzMywgMjAxNDEsIDIwMTQ5LCAyMDE1NSwgMjAxNjAsIDIwMTY1LCAyMDE3MCwgCisgICAgMjAxNzUsIDIwMTgwLCAyMDE4NSwgMjAxOTEsIDIwMTk2LCAyMDIwMiwgMjAyMDgsIDIwMjE0LCAyMDIyMCwgMjAyMjcsIAorICAgIDIwMjMyLCAyMDIzOCwgMjAyNDMsIDIwMjQ4LCAyMDI1MywgMjAyNTgsIDIwMjYzLCAyMDI2OCwgMjAyNzMsIDIwMjc4LCAKKyAgICAyMDI4MywgMjAyODgsIDIwMjkzLCAyMDI5OCwgMjAzMDMsIDIwMzA4LCAyMDMxMywgMjAzMTgsIDIwMzIzLCAyMDMyOCwgCisgICAgMjAzMzMsIDIwMzM4LCAyMDM0MywgMjAzNDgsIDIwMzUzLCAyMDM1OCwgMjAzNjMsIDIwMzY4LCAyMDM3MywgMjAzNzgsIAorICAgIDIwMzgzLCAyMDM4OCwgMjAzOTMsIDIwMzk4LCAyMDQwMywgMjA0MDgsIDIwNDEzLCAyMDQxOCwgMjA0MjMsIDAsIDIwNDI4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMDQzMywgMCwgMCwgMjA0MzgsIDIwNDQyLCAyMDQ0NiwgMjA0NTAsIDIwNDU0LCAyMDQ1OCwgCisgICAgMjA0NjIsIDIwNDY2LCAyMDQ3MCwgMjA0NzQsIDIwNDc4LCAyMDQ4MiwgMjA0ODYsIDIwNDkwLCAyMDQ5NCwgMjA0OTgsIAorICAgIDIwNTAyLCAyMDUwNiwgMjA1MTAsIDIwNTE0LCAyMDUxOCwgMjA1MjIsIDIwNTI2LCAyMDUzMCwgMjA1MzQsIDIwNTM4LCAKKyAgICAyMDU0MiwgMjA1NDYsIDIwNTUwLCAyMDU1NCwgMjA1NTgsIDIwNTYyLCAyMDU2NiwgMjA1NzAsIDIwNTc0LCAyMDU3OCwgCisgICAgMjA1ODIsIDIwNTg2LCAyMDU5MCwgMjA1OTQsIDIwNTk4LCAyMDYwMiwgMjA2MDgsIDIwNjEyLCAyMDYxNywgMjA2MjIsIAorICAgIDIwNjI2LCAyMDYzMSwgMjA2MzYsIDIwNjQwLCAyMDY0NCwgMjA2NDgsIDIwNjUyLCAyMDY1NiwgMjA2NjAsIDIwNjY0LCAKKyAgICAyMDY2OCwgMjA2NzIsIDIwNjc2LCAyMDY4MCwgMjA2ODQsIDIwNjg4LCAyMDY5MiwgMjA2OTYsIDIwNzAwLCAyMDcwNCwgCisgICAgMjA3MDgsIDIwNzEyLCAyMDcxNiwgMjA3MjAsIDIwNzI0LCAyMDcyOCwgMjA3MzIsIDIwNzM2LCAyMDc0MCwgMjA3NDQsIAorICAgIDIwNzQ4LCAyMDc1MiwgMjA3NTYsIDIwNzYwLCAyMDc2NCwgMjA3NjgsIDIwNzcyLCAyMDc3NiwgMjA3ODAsIDIwNzg0LCAKKyAgICAyMDc4OCwgMjA3OTIsIDIwNzk2LCAyMDgwMCwgMjA4MDQsIDIwODA4LCAyMDgxMiwgMjA4MTYsIDIwODIwLCAyMDgyNCwgCisgICAgMjA4MjgsIDIwODMyLCAyMDgzNiwgMjA4NDAsIDIwODQ0LCAyMDg0OCwgMjA4NTIsIDIwODU2LCAyMDg2MCwgMjA4NjQsIAorICAgIDIwODY4LCAyMDg3MiwgMjA4NzYsIDIwODgwLCAyMDg4NCwgMjA4ODgsIDIwODkyLCAyMDg5NiwgMjA5MDAsIDIwOTA0LCAKKyAgICAyMDkwOCwgMjA5MTIsIDIwOTE2LCAyMDkyMCwgMjA5MjQsIDIwOTI4LCAyMDkzMiwgMjA5MzYsIDIwOTQwLCAyMDk0NCwgCisgICAgMjA5NDgsIDIwOTUyLCAyMDk1NiwgMjA5NjAsIDIwOTY0LCAyMDk2OCwgMjA5NzIsIDIwOTc2LCAyMDk4MCwgMjA5ODQsIAorICAgIDIwOTg4LCAyMDk5MiwgMjA5OTYsIDIxMDAwLCAyMTAwNCwgMjEwMDgsIDIxMDEyLCAyMTAxNiwgMjEwMjAsIDIxMDI0LCAKKyAgICAyMTAyNywgMjEwMzEsIDIxMDM0LCAyMTAzOCwgMjEwNDIsIDIxMDQ1LCAyMTA0OSwgMjEwNTMsIDIxMDU2LCAyMTA2MCwgCisgICAgMjEwNjQsIDIxMDY4LCAyMTA3MiwgMjEwNzUsIDIxMDc5LCAyMTA4MywgMjEwODcsIDIxMDkxLCAyMTA5NSwgMjEwOTksIAorICAgIDIxMTAyLCAyMTEwNiwgMjExMTAsIDIxMTE0LCAyMTExOCwgMjExMjIsIDIxMTI2LCAyMTEzMCwgMjExMzQsIDIxMTM4LCAKKyAgICAyMTE0MiwgMjExNDYsIDIxMTUwLCAyMTE1NCwgMjExNTgsIDIxMTYyLCAyMTE2NiwgMjExNzAsIDIxMTc0LCAyMTE3OCwgCisgICAgMjExODIsIDIxMTg2LCAyMTE5MCwgMjExOTQsIDIxMTk4LCAyMTIwMiwgMjEyMDYsIDIxMjEwLCAyMTIxNCwgMjEyMTgsIAorICAgIDIxMjIyLCAyMTIyNiwgMjEyMzAsIDIxMjM0LCAyMTIzOCwgMjEyNDIsIDIxMjQ2LCAyMTI1MCwgMjEyNTQsIDIxMjU4LCAKKyAgICAyMTI2MiwgMjEyNjYsIDIxMjcwLCAyMTI3NCwgMjEyNzgsIDIxMjgyLCAyMTI4NiwgMjEyOTAsIDIxMjk0LCAyMTI5OCwgCisgICAgMjEzMDIsIDIxMzA2LCAyMTMxMCwgMjEzMTQsIDIxMzE4LCAyMTMyMiwgMjEzMjYsIDIxMzMwLCAyMTMzNCwgMjEzMzgsIAorICAgIDIxMzQyLCAyMTM0NiwgMjEzNTAsIDIxMzU0LCAyMTM1OCwgMjEzNjIsIDIxMzY2LCAyMTM3MCwgMjEzNzQsIDIxMzc4LCAKKyAgICAyMTM4MiwgMjEzODYsIDIxMzkwLCAyMTM5NCwgMjEzOTgsIDIxNDAyLCAyMTQwNiwgMjE0MTAsIDIxNDE0LCAyMTQxOCwgCisgICAgMjE0MjIsIDIxNDI2LCAyMTQzMCwgMjE0MzQsIDIxNDM4LCAyMTQ0MiwgMjE0NDYsIDIxNDUwLCAyMTQ1NCwgMjE0NTgsIAorICAgIDIxNDYyLCAyMTQ2NiwgMjE0NzAsIDIxNDc0LCAyMTQ3OCwgMjE0ODIsIDIxNDg2LCAyMTQ5MCwgMjE0OTQsIDIxNDk4LCAKKyAgICAyMTUwMiwgMjE1MDYsIDIxNTEwLCAyMTUxNCwgMjE1MTgsIDIxNTIyLCAyMTUyNiwgMjE1MzAsIDIxNTM0LCAyMTUzOCwgCisgICAgMjE1NDIsIDIxNTQ2LCAyMTU1MCwgMjE1NTQsIDIxNTU4LCAyMTU2MiwgMjE1NjYsIDIxNTcwLCAyMTU3NCwgMjE1NzgsIAorICAgIDIxNTgyLCAyMTU4NiwgMjE1OTAsIDIxNTk0LCAyMTU5OCwgMjE2MDIsIDIxNjA2LCAyMTYxMCwgMjE2MTQsIDIxNjE4LCAKKyAgICAyMTYyMiwgMjE2MjYsIDIxNjMwLCAyMTYzNCwgMjE2MzgsIDIxNjQyLCAyMTY0NiwgMjE2NTAsIDIxNjU0LCAyMTY1NywgCisgICAgMjE2NjEsIDIxNjY1LCAyMTY2OSwgMjE2NzMsIDIxNjc3LCAyMTY4MSwgMjE2ODUsIDIxNjg4LCAyMTY5MiwgMjE2OTYsIAorICAgIDIxNzAwLCAyMTcwNCwgMjE3MDgsIDIxNzEyLCAyMTcxNiwgMjE3MjAsIDIxNzI0LCAyMTcyOCwgMjE3MzIsIDIxNzM2LCAKKyAgICAyMTc0MCwgMjE3NDQsIDIxNzQ4LCAyMTc1MSwgMjE3NTUsIDIxNzU5LCAyMTc2MywgMjE3NjcsIDIxNzcxLCAyMTc3NSwgCisgICAgMjE3NzksIDIxNzgzLCAyMTc4NywgMjE3OTEsIDIxNzk1LCAyMTc5OSwgMjE4MDMsIDIxODA3LCAyMTgxMSwgMjE4MTUsIAorICAgIDIxODE5LCAyMTgyMywgMjE4MjcsIDIxODMxLCAyMTgzNSwgMjE4MzksIDIxODQzLCAyMTg0NywgMjE4NTEsIDIxODU1LCAKKyAgICAyMTg1OSwgMjE4NjMsIDIxODY3LCAyMTg3MSwgMjE4NzUsIDIxODc5LCAyMTg4MywgMjE4ODcsIDIxODkxLCAyMTg5NSwgCisgICAgMjE4OTksIDIxOTAzLCAyMTkwNywgMjE5MTEsIDIxOTE1LCAyMTkxOSwgMjE5MjMsIDIxOTI3LCAyMTkzMSwgMjE5MzUsIAorICAgIDIxOTM5LCAwLCAyMTk0MywgMjE5NDcsIDIxOTUxLCAyMTk1NSwgMCwgMCwgMjE5NTksIDIxOTYzLCAyMTk2NywgMjE5NzEsIAorICAgIDIxOTc1LCAyMTk3OSwgMjE5ODMsIDAsIDIxOTg3LCAwLCAyMTk5MSwgMjE5OTUsIDIxOTk5LCAyMjAwMywgMCwgMCwgCisgICAgMjIwMDcsIDIyMDExLCAyMjAxNSwgMjIwMTksIDIyMDIzLCAyMjAyNywgMjIwMzEsIDIyMDM1LCAyMjAzOSwgMjIwNDMsIAorICAgIDIyMDQ3LCAyMjA1MSwgMjIwNTUsIDIyMDU5LCAyMjA2MywgMjIwNjcsIDIyMDcxLCAyMjA3NSwgMjIwNzksIDIyMDgzLCAKKyAgICAyMjA4NywgMjIwOTEsIDIyMDk1LCAyMjA5OCwgMjIxMDIsIDIyMTA2LCAyMjExMCwgMjIxMTQsIDIyMTE4LCAyMjEyMiwgCisgICAgMjIxMjYsIDIyMTMwLCAyMjEzNCwgMjIxMzgsIDIyMTQyLCAyMjE0NiwgMjIxNTAsIDIyMTU0LCAyMjE1OCwgMjIxNjIsIAorICAgIDIyMTY2LCAwLCAyMjE3MCwgMjIxNzQsIDIyMTc4LCAyMjE4MiwgMCwgMCwgMjIxODYsIDIyMTg5LCAyMjE5MywgMjIxOTcsIAorICAgIDIyMjAxLCAyMjIwNSwgMjIyMDksIDIyMjEzLCAyMjIxNywgMjIyMjEsIDIyMjI1LCAyMjIyOSwgMjIyMzMsIDIyMjM3LCAKKyAgICAyMjI0MSwgMjIyNDUsIDIyMjQ5LCAyMjI1NCwgMjIyNTksIDIyMjY0LCAyMjI3MCwgMjIyNzYsIDIyMjgxLCAyMjI4NiwgCisgICAgMjIyOTIsIDIyMjk1LCAyMjI5OSwgMjIzMDMsIDIyMzA3LCAyMjMxMSwgMjIzMTUsIDIyMzE5LCAyMjMyMywgMCwgMjIzMjcsIAorICAgIDIyMzMxLCAyMjMzNSwgMjIzMzksIDAsIDAsIDIyMzQzLCAyMjM0NywgMjIzNTEsIDIyMzU1LCAyMjM1OSwgMjIzNjMsIAorICAgIDIyMzY3LCAwLCAyMjM3MSwgMCwgMjIzNzUsIDIyMzc5LCAyMjM4MywgMjIzODcsIDAsIDAsIDIyMzkxLCAyMjM5NSwgCisgICAgMjIzOTksIDIyNDAzLCAyMjQwNywgMjI0MTEsIDIyNDE1LCAyMjQxOSwgMjI0MjMsIDIyNDI4LCAyMjQzMywgMjI0MzgsIAorICAgIDIyNDQ0LCAyMjQ1MCwgMjI0NTUsIDAsIDIyNDYwLCAyMjQ2NCwgMjI0NjgsIDIyNDcyLCAyMjQ3NiwgMjI0ODAsIDIyNDg0LCAKKyAgICAyMjQ4OCwgMjI0OTIsIDIyNDk2LCAyMjUwMCwgMjI1MDQsIDIyNTA4LCAyMjUxMiwgMjI1MTYsIDIyNTIwLCAyMjUyNCwgCisgICAgMjI1MjcsIDIyNTMxLCAyMjUzNSwgMjI1MzksIDIyNTQzLCAyMjU0NywgMjI1NTEsIDIyNTU1LCAyMjU1OSwgMjI1NjMsIAorICAgIDIyNTY3LCAyMjU3MSwgMjI1NzUsIDIyNTc5LCAyMjU4MywgMjI1ODcsIDIyNTkxLCAyMjU5NSwgMjI1OTksIDIyNjAzLCAKKyAgICAyMjYwNywgMjI2MTEsIDIyNjE1LCAyMjYxOSwgMjI2MjMsIDIyNjI3LCAyMjYzMSwgMjI2MzUsIDIyNjM5LCAyMjY0MywgCisgICAgMjI2NDcsIDIyNjUxLCAyMjY1NSwgMjI2NTksIDIyNjYzLCAyMjY2NywgMjI2NzEsIDIyNjc1LCAyMjY3OSwgMjI2ODMsIDAsIAorICAgIDIyNjg3LCAyMjY5MSwgMjI2OTUsIDIyNjk5LCAwLCAwLCAyMjcwMywgMjI3MDcsIDIyNzExLCAyMjcxNSwgMjI3MTksIAorICAgIDIyNzIzLCAyMjcyNywgMjI3MzEsIDIyNzM1LCAyMjczOSwgMjI3NDMsIDIyNzQ3LCAyMjc1MSwgMjI3NTUsIDIyNzU5LCAKKyAgICAyMjc2MywgMjI3NjcsIDIyNzcxLCAyMjc3NSwgMjI3NzksIDIyNzgzLCAyMjc4NywgMjI3OTEsIDIyNzk1LCAyMjc5OSwgCisgICAgMjI4MDMsIDIyODA3LCAyMjgxMSwgMjI4MTUsIDIyODE5LCAyMjgyMywgMjI4MjcsIDIyODMxLCAyMjgzNSwgMjI4MzksIAorICAgIDIyODQzLCAyMjg0NywgMjI4NTEsIDIyODU1LCAyMjg1OSwgMjI4NjMsIDIyODY3LCAyMjg3MSwgMjI4NzUsIDIyODc5LCAKKyAgICAyMjg4MywgMjI4ODcsIDIyODkxLCAyMjg5NSwgMjI4OTksIDIyOTAzLCAyMjkwNywgMjI5MTEsIDIyOTE1LCAyMjkxOSwgCisgICAgMjI5MjMsIDIyOTI3LCAyMjkzMCwgMjI5MzQsIDIyOTM4LCAyMjk0MiwgMjI5NDYsIDIyOTUwLCAyMjk1NCwgMjI5NTgsIAorICAgIDIyOTYyLCAyMjk2NiwgMCwgMCwgMjI5NzAsIDIyOTc5LCAyMjk4NSwgMjI5OTAsIDIyOTk0LCAyMjk5NywgMjMwMDIsIAorICAgIDIzMDA1LCAyMzAwOCwgMjMwMTEsIDIzMDE2LCAyMzAyMCwgMjMwMjUsIDIzMDI4LCAyMzAzMSwgMjMwMzQsIDIzMDM3LCAKKyAgICAyMzA0MCwgMjMwNDMsIDIzMDQ3LCAyMzA1MCwgMjMwNTQsIDIzMDU4LCAyMzA2MiwgMjMwNjYsIDIzMDcwLCAyMzA3NCwgCisgICAgMjMwNzgsIDIzMDgyLCAyMzA4NiwgMjMwOTAsIDIzMDk0LCAwLCAwLCAwLCAyMzEwMCwgMjMxMDYsIDIzMTEwLCAyMzExNCwgCisgICAgMjMxMTgsIDIzMTI0LCAyMzEyOCwgMjMxMzIsIDIzMTM2LCAyMzE0MiwgMjMxNDYsIDIzMTUwLCAyMzE1NCwgMjMxNjAsIAorICAgIDIzMTY0LCAyMzE2OCwgMjMxNzIsIDIzMTc4LCAyMzE4NCwgMjMxOTAsIDIzMTk4LCAyMzIwNCwgMjMyMTAsIDIzMjE2LCAKKyAgICAyMzIyMiwgMjMyMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMjM0LCAyMzIzNywgMjMyNDAsIDIzMjQzLCAyMzI0NiwgMjMyNDksIAorICAgIDIzMjUzLCAyMzI1NywgMjMyNjAsIDIzMjY0LCAyMzI2OCwgMjMyNzIsIDIzMjc2LCAyMzI4MCwgMjMyODMsIDIzMjg3LCAKKyAgICAyMzI5MSwgMjMyOTUsIDIzMjk5LCAyMzMwMywgMjMzMDYsIDIzMzEwLCAyMzMxNCwgMjMzMTgsIDIzMzIyLCAyMzMyNiwgCisgICAgMjMzMjksIDIzMzMzLCAyMzMzNywgMjMzNDEsIDIzMzQ1LCAyMzM0OCwgMjMzNTIsIDIzMzU2LCAyMzM2MCwgMjMzNjQsIAorICAgIDIzMzY4LCAyMzM3MiwgMjMzNzYsIDIzMzgwLCAyMzM4NCwgMjMzODgsIDIzMzkyLCAyMzM5NiwgMjM0MDAsIDIzNDA0LCAKKyAgICAyMzQwOCwgMjM0MTIsIDIzNDE2LCAyMzQyMCwgMjM0MjQsIDIzNDI4LCAyMzQzMiwgMjM0MzYsIDIzNDQwLCAyMzQ0NCwgCisgICAgMjM0NDgsIDIzNDUyLCAyMzQ1NiwgMjM0NjAsIDIzNDY0LCAyMzQ2OCwgMjM0NzIsIDIzNDc2LCAyMzQ4MCwgMjM0ODQsIAorICAgIDIzNDg4LCAyMzQ5MiwgMjM0OTYsIDIzNTAwLCAyMzUwNCwgMjM1MDgsIDIzNTEyLCAyMzUxNiwgMjM1MjAsIDIzNTI0LCAKKyAgICAyMzUyOCwgMjM1MzIsIDIzNTM2LCAyMzU0MCwgMjM1NDMsIDIzNTQ3LCAyMzU1MSwgMjM1NTUsIDIzNTU5LCAyMzU2MywgMCwgCisgICAgMCwgMjM1NjcsIDIzNTcyLCAyMzU3NywgMjM1ODIsIDIzNTg3LCAyMzU5MiwgMCwgMCwgMjM1OTcsIDIzNjAxLCAyMzYwNCwgCisgICAgMjM2MDgsIDIzNjExLCAyMzYxNSwgMjM2MTgsIDIzNjIyLCAyMzYyOCwgMjM2MzMsIDIzNjM3LCAyMzY0MCwgMjM2NDQsIAorICAgIDIzNjQ4LCAyMzY1NCwgMjM2NTgsIDIzNjY0LCAyMzY2OCwgMjM2NzQsIDIzNjc4LCAyMzY4NCwgMjM2ODgsIDIzNjk0LCAKKyAgICAyMzcwMCwgMjM3MDQsIDIzNzEwLCAyMzcxNCwgMjM3MjAsIDIzNzI2LCAyMzczMCwgMjM3MzYsIDIzNzQyLCAyMzc0NiwgCisgICAgMjM3NTEsIDIzNzU5LCAyMzc2NywgMjM3NzQsIDIzNzc5LCAyMzc4NCwgMjM3OTMsIDIzNzk5LCAyMzgwNywgMjM4MTIsIAorICAgIDIzODE4LCAyMzgyMiwgMjM4MjYsIDIzODMwLCAyMzgzNCwgMjM4MzgsIDIzODQyLCAyMzg0NiwgMjM4NTAsIDIzODU0LCAKKyAgICAyMzg1OCwgMjM4NjQsIDIzODY5LCAyMzg3NCwgMjM4NzcsIDIzODgxLCAyMzg4NSwgMjM4OTEsIDIzODk1LCAyMzkwMSwgCisgICAgMjM5MDUsIDIzOTExLCAyMzkxNSwgMjM5MjEsIDIzOTI1LCAyMzkzMSwgMjM5MzUsIDIzOTQxLCAyMzk0NSwgMjM5NTEsIAorICAgIDIzOTU3LCAyMzk2MSwgMjM5NjcsIDIzOTcyLCAyMzk3NiwgMjM5ODAsIDIzOTg0LCAyMzk4OCwgMjM5OTEsIDIzOTk1LCAKKyAgICAyNDAwMSwgMjQwMDYsIDI0MDExLCAyNDAxNSwgMjQwMTksIDI0MDIzLCAyNDAyOSwgMjQwMzMsIDI0MDM5LCAyNDA0MywgCisgICAgMjQwNDksIDI0MDUyLCAyNDA1NywgMjQwNjEsIDI0MDY3LCAyNDA3MSwgMjQwNzcsIDI0MDgxLCAyNDA4NywgMjQwOTMsIAorICAgIDI0MDk3LCAyNDEwMSwgMjQxMDUsIDI0MTA5LCAyNDExMywgMjQxMTcsIDI0MTIxLCAyNDEyNSwgMjQxMjksIDI0MTMzLCAKKyAgICAyNDEzNywgMjQxNDMsIDI0MTQ2LCAyNDE1MCwgMjQxNTQsIDI0MTYwLCAyNDE2NCwgMjQxNzAsIDI0MTc0LCAyNDE4MCwgCisgICAgMjQxODQsIDI0MTkwLCAyNDE5NCwgMjQyMDAsIDI0MjA0LCAyNDIxMCwgMjQyMTQsIDI0MjIwLCAyNDIyNiwgMjQyMzAsIAorICAgIDI0MjM0LCAyNDI0MCwgMjQyNDYsIDI0MjUyLCAyNDI1OCwgMjQyNjIsIDI0MjY2LCAyNDI3MCwgMjQyNzQsIDI0Mjc4LCAKKyAgICAyNDI4MiwgMjQyODgsIDI0MjkyLCAyNDI5NiwgMjQzMDAsIDI0MzA2LCAyNDMxMCwgMjQzMTYsIDI0MzIwLCAyNDMyNiwgCisgICAgMjQzMzAsIDI0MzM2LCAyNDM0MCwgMjQzNDYsIDI0MzUwLCAyNDM1NiwgMjQzNjAsIDI0MzY2LCAyNDM3MiwgMjQzNzYsIAorICAgIDI0MzgyLCAyNDM4NiwgMjQzOTAsIDI0Mzk0LCAyNDM5OCwgMjQ0MDIsIDI0NDA2LCAyNDQxMiwgMjQ0MTUsIDI0NDE5LCAKKyAgICAyNDQyMywgMjQ0MjksIDI0NDMzLCAyNDQzOSwgMjQ0NDMsIDI0NDQ5LCAyNDQ1MywgMjQ0NTksIDI0NDYzLCAyNDQ2OSwgCisgICAgMjQ0NzMsIDI0NDc5LCAyNDQ4MywgMjQ0ODksIDI0NDk1LCAyNDQ5OSwgMjQ1MDUsIDI0NTA5LCAyNDUxNSwgMjQ1MjEsIAorICAgIDI0NTI1LCAyNDUyOSwgMjQ1MzMsIDI0NTM3LCAyNDU0MSwgMjQ1NDUsIDI0NTUxLCAyNDU1NCwgMjQ1NTgsIDI0NTYyLCAKKyAgICAyNDU2OCwgMjQ1NzIsIDI0NTc4LCAyNDU4MiwgMjQ1ODgsIDI0NTk0LCAyNDU5OCwgMjQ2MDMsIDI0NjA3LCAyNDYxMSwgCisgICAgMjQ2MTUsIDI0NjE5LCAyNDYyMywgMjQ2MjcsIDI0NjMxLCAyNDYzNywgMjQ2NDAsIDI0NjQ0LCAyNDY0OCwgMjQ2NTQsIAorICAgIDI0NjU4LCAyNDY2NCwgMjQ2NjgsIDI0Njc0LCAyNDY3OCwgMjQ2ODQsIDI0Njg4LCAyNDY5NCwgMjQ2OTgsIDI0NzA0LCAKKyAgICAyNDcwOCwgMjQ3MTQsIDI0NzE3LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3MzgsIDI0NzQyLCAyNDc0NiwgCisgICAgMjQ3NTAsIDI0NzU2LCAyNDc2MCwgMjQ3NjQsIDI0NzY4LCAyNDc3NCwgMjQ3NzgsIDI0Nzg0LCAyNDc4OCwgMjQ3OTQsIAorICAgIDI0Nzk4LCAyNDgwNCwgMjQ4MDgsIDI0ODE0LCAyNDgxOCwgMjQ4MjQsIDI0ODI4LCAyNDgzNCwgMjQ4NDAsIDI0ODQ0LCAKKyAgICAyNDg1MCwgMjQ4NTQsIDI0ODYwLCAyNDg2NiwgMjQ4NzIsIDI0ODc4LCAyNDg4NCwgMjQ4OTAsIDI0ODk2LCAyNDkwMiwgCisgICAgMjQ5MDYsIDI0OTEwLCAyNDkxNCwgMjQ5MTgsIDI0OTIyLCAyNDkyNiwgMjQ5MzAsIDI0OTM0LCAyNDk0MCwgMjQ5NDQsIAorICAgIDI0OTUwLCAyNDk1NCwgMjQ5NjAsIDI0OTY0LCAyNDk3MCwgMjQ5NzQsIDI0OTgwLCAyNDk4NCwgMjQ5OTAsIDI0OTk0LCAKKyAgICAyNTAwMCwgMjUwMDQsIDI1MDA4LCAyNTAxMiwgMjUwMTYsIDI1MDIwLCAyNTAyNCwgMjUwMjgsIDI1MDM0LCAyNTAzNywgCisgICAgMjUwNDEsIDI1MDQ1LCAyNTA1MSwgMjUwNTUsIDI1MDYxLCAyNTA2NSwgMjUwNzEsIDI1MDc1LCAyNTA4MSwgMjUwODUsIAorICAgIDI1MDkxLCAyNTA5NSwgMjUxMDEsIDI1MTA1LCAyNTExMSwgMjUxMTcsIDI1MTIxLCAyNTEyNywgMjUxMzMsIDI1MTM5LCAKKyAgICAyNTE0MywgMjUxNDksIDI1MTU1LCAyNTE1OSwgMjUxNjMsIDI1MTY3LCAyNTE3MSwgMjUxNzUsIDI1MTgxLCAyNTE4NSwgCisgICAgMjUxODksIDI1MTk0LCAyNTE5OCwgMjUyMDQsIDI1MjA3LCAyNTIxMiwgMjUyMTYsIDI1MjIwLCAyNTIyNCwgMjUyMjgsIAorICAgIDI1MjMyLCAyNTIzNiwgMjUyNDAsIDI1MjQ0LCAyNTI0OCwgMjUyNTIsIDI1MjU4LCAyNTI2MiwgMjUyNjYsIDI1MjcyLCAKKyAgICAyNTI3NiwgMjUyODIsIDI1Mjg2LCAyNTI5MiwgMjUyOTYsIDI1MzAwLCAyNTMwNCwgMjUzMDgsIDI1MzEyLCAyNTMxOCwgCisgICAgMjUzMjIsIDI1MzI2LCAyNTMzMCwgMjUzMzQsIDI1MzM4LCAyNTM0MiwgMjUzNDYsIDI1MzUwLCAyNTM1NCwgMjUzNTgsIAorICAgIDI1MzY0LCAyNTM3MCwgMjUzNzYsIDI1MzgyLCAyNTM4OCwgMjUzOTMsIDI1Mzk5LCAyNTQwNSwgMjU0MTEsIDI1NDE1LCAKKyAgICAyNTQxOSwgMjU0MjMsIDI1NDI3LCAyNTQzMSwgMjU0MzUsIDI1NDM5LCAyNTQ0MywgMjU0NDcsIDI1NDUxLCAyNTQ1NSwgCisgICAgMjU0NTksIDI1NDYzLCAyNTQ2OSwgMjU0NzUsIDI1NDgxLCAyNTQ4NywgMjU0OTEsIDI1NDk1LCAyNTQ5OSwgMjU1MDMsIAorICAgIDI1NTA3LCAyNTUxMSwgMjU1MTUsIDI1NTE5LCAyNTUyMywgMjU1MjksIDI1NTM1LCAyNTU0MSwgMjU1NDcsIDI1NTUzLCAKKyAgICAyNTU1OSwgMjU1NjUsIDI1NTcxLCAyNTU3NywgMjU1ODEsIDI1NTg1LCAyNTU4OSwgMjU1OTMsIDI1NTk3LCAyNTYwMSwgCisgICAgMjU2MDUsIDI1NjExLCAyNTYxNywgMjU2MjMsIDI1NjI5LCAyNTYzNSwgMjU2NDEsIDI1NjQ3LCAyNTY1MywgMjU2NTksIAorICAgIDI1NjY0LCAyNTY2OSwgMjU2NzQsIDI1Njc5LCAyNTY4NSwgMjU2OTEsIDI1Njk3LCAyNTcwMywgMjU3MDksIDI1NzE1LCAKKyAgICAyNTcyMSwgMjU3MjYsIDI1NzMyLCAyNTczOCwgMjU3NDQsIDI1NzQ5LCAyNTc1NSwgMjU3NjEsIDI1NzY3LCAyNTc3MiwgCisgICAgMjU3NzcsIDI1NzgyLCAyNTc4NywgMjU3OTIsIDI1Nzk3LCAyNTgwMiwgMjU4MDcsIDI1ODEyLCAyNTgxNywgMjU4MjIsIAorICAgIDI1ODI3LCAyNTgzMiwgMjU4MzcsIDI1ODQyLCAyNTg0NywgMjU4NTIsIDI1ODU3LCAyNTg2MiwgMjU4NjcsIDI1ODcyLCAKKyAgICAyNTg3NywgMjU4ODIsIDI1ODg3LCAyNTg5MiwgMjU4OTcsIDI1OTAyLCAyNTkwNywgMjU5MTIsIDI1OTE3LCAyNTkyMiwgCisgICAgMjU5MjcsIDI1OTMyLCAyNTkzNywgMjU5NDIsIDI1OTQ3LCAyNTk1MiwgMjU5NTcsIDI1OTYyLCAyNTk2NywgMjU5NzIsIAorICAgIDI1OTc3LCAyNTk4MSwgMjU5ODYsIDI1OTkxLCAyNTk5NiwgMjYwMDEsIDI2MDA2LCAyNjAxMSwgMjYwMTYsIDI2MDIxLCAKKyAgICAyNjAyNiwgMjYwMzEsIDI2MDM2LCAyNjA0MSwgMjYwNDYsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MSwgCisgICAgMjYwNzYsIDI2MDgxLCAyNjA4NiwgMjYwOTEsIDI2MDk2LCAyNjEwMSwgMjYxMDYsIDI2MTEwLCAyNjExNSwgMjYxMjAsIAorICAgIDI2MTI1LCAyNjEzMCwgMjYxMzUsIDI2MTM5LCAyNjE0NCwgMjYxNDksIDI2MTU0LCAyNjE1OSwgMjYxNjQsIDI2MTY4LCAKKyAgICAyNjE3MywgMjYxNzksIDI2MTg0LCAyNjE4OSwgMjYxOTQsIDI2MTk5LCAyNjIwNSwgMjYyMTAsIDI2MjE1LCAyNjIyMCwgCisgICAgMjYyMjUsIDI2MjMwLCAyNjIzNSwgMjYyNDAsIDI2MjQ1LCAyNjI1MCwgMjYyNTUsIDI2MjYwLCAyNjI2NSwgMjYyNjksIAorICAgIDI2Mjc0LCAyNjI3OSwgMjYyODQsIDI2Mjg5LCAyNjI5NCwgMjYyOTksIDI2MzA0LCAyNjMwOSwgMjYzMTQsIDI2MzE5LCAKKyAgICAyNjMyNCwgMjYzMjksIDI2MzM0LCAyNjMzOSwgMjYzNDQsIDI2MzQ5LCAyNjM1NCwgMjYzNTksIDI2MzY0LCAyNjM2OSwgCisgICAgMjYzNzQsIDI2Mzc5LCAyNjM4NCwgMjYzODksIDI2Mzk0LCAyNjM5OSwgMjY0MDQsIDI2NDA5LCAyNjQxNCwgMjY0MTksIAorICAgIDI2NDI0LCAyNjQzMCwgMjY0MzUsIDI2NDQwLCAyNjQ0NSwgMjY0NTAsIDI2NDU1LCAyNjQ2MCwgMjY0NjUsIDI2NDcwLCAKKyAgICAyNjQ3NSwgMjY0ODAsIDI2NDg1LCAyNjQ5MCwgMjY0OTUsIDI2NTAwLCAyNjUwNSwgMjY1MTAsIDI2NTE1LCAyNjUyMCwgCisgICAgMjY1MjUsIDI2NTMwLCAyNjUzNSwgMjY1NDAsIDI2NTQ1LCAyNjU1MCwgMjY1NTUsIDI2NTYwLCAyNjU2NSwgMjY1NzAsIAorICAgIDI2NTc1LCAyNjU4MCwgMjY1ODUsIDI2NTkwLCAyNjU5NSwgMjY2MDAsIDI2NjA1LCAyNjYxMCwgMjY2MTUsIDI2NjIwLCAKKyAgICAyNjYyNiwgMjY2MzAsIDI2NjM0LCAyNjYzOCwgMjY2NDIsIDI2NjQ2LCAyNjY1MCwgMjY2NTQsIDI2NjU4LCAyNjY2NCwgCisgICAgMjY2NzAsIDI2Njc2LCAyNjY4MiwgMjY2ODgsIDI2Njk0LCAyNjcwMCwgMjY3MDcsIDI2NzEzLCAyNjcxOCwgMjY3MjMsIAorICAgIDI2NzI4LCAyNjczMywgMjY3MzgsIDI2NzQzLCAyNjc0OCwgMjY3NTMsIDI2NzU4LCAyNjc2MywgMjY3NjgsIDI2NzczLCAKKyAgICAyNjc3OCwgMjY3ODMsIDI2Nzg4LCAyNjc5MywgMjY3OTgsIDI2ODAzLCAyNjgwOCwgMjY4MTMsIDI2ODE4LCAyNjgyMywgCisgICAgMjY4MjgsIDI2ODMzLCAyNjgzOCwgMjY4NDMsIDI2ODQ4LCAyNjg1MywgMCwgMCwgMCwgMjY4NjAsIDI2ODcxLCAyNjg3NiwgCisgICAgMjY4ODQsIDI2ODg5LCAyNjg5NCwgMjY4OTksIDI2OTA4LCAyNjkxMywgMjY5MTksIDI2OTI1LCAyNjkzMSwgMjY5MzYsIAorICAgIDI2OTQyLCAyNjk0OCwgMjY5NTIsIDI2OTU3LCAyNjk2MiwgMjY5NzIsIDI2OTc3LCAyNjk4MiwgMjY5ODksIDI2OTk0LCAKKyAgICAyNjk5OSwgMjcwMDgsIDI3MDEzLCAyNzAyMiwgMjcwMjksIDI3MDM2LCAyNzA0MywgMjcwNTAsIDI3MDYxLCAyNzA2OCwgCisgICAgMjcwNzMsIDI3MDgzLCAyNzA4NywgMjcwOTQsIDI3MDk5LCAyNzEwNiwgMjcxMTIsIDI3MTE5LCAyNzEyOCwgMjcxMzUsIAorICAgIDI3MTQyLCAyNzE1MSwgMjcxNTgsIDI3MTYzLCAyNzE2OCwgMjcxNzksIDI3MTg2LCAyNzE5MSwgMjcyMDIsIDI3MjA5LCAKKyAgICAyNzIxNCwgMjcyMTksIDI3MjI3LCAyNzIzNiwgMjcyNDMsIDI3MjUwLCAyNzI2MCwgMjcyNjUsIDI3MjcwLCAyNzI3NSwgCisgICAgMjcyODQsIDI3MjkyLCAyNzI5NywgMjczMDIsIDI3MzA3LCAyNzMxMiwgMjczMTcsIDI3MzIyLCAyNzMyNywgMjczMzIsIAorICAgIDI3MzM3LCAyNzM0MiwgMjczNDcsIDI3MzUzLCAyNzM1OSwgMjczNjUsIDI3MzcwLCAyNzM3NSwgMjczODAsIDI3Mzg1LCAKKyAgICAyNzM5MCwgMjczOTUsIDI3NDA0LCAyNzQxMywgMjc0MjIsIDI3NDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzQ0MCwgCisgICAgMjc0NDQsIDI3NDQ4LCAyNzQ1MiwgMjc0NTYsIDI3NDYxLCAyNzQ2NiwgMjc0NzEsIDI3NDc2LCAyNzQ4MCwgMjc0ODQsIAorICAgIDI3NDg5LCAyNzQ5MywgMCwgMjc0OTcsIDI3NTAxLCAyNzUwNiwgMjc1MTEsIDI3NTE1LCAyNzUyMCwgMjc1MjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NTMwLCAyNzUzNCwgMjc1MzgsIDI3NTQyLCAyNzU0NiwgMjc1NTEsIAorICAgIDI3NTU2LCAyNzU2MSwgMjc1NjYsIDI3NTcwLCAyNzU3NCwgMjc1NzksIDI3NTgzLCAyNzU4NywgMjc1OTIsIDI3NTk2LCAKKyAgICAyNzYwMSwgMjc2MDYsIDI3NjEwLCAyNzYxNSwgMjc2MjAsIDI3NjI1LCAyNzYzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjc2MzYsIDI3NjQwLCAyNzY0NCwgMjc2NDgsIDI3NjUyLCAyNzY1NywgMjc2NjIsIDI3NjY3LCAyNzY3MiwgMjc2NzYsIAorICAgIDI3NjgwLCAyNzY4NSwgMjc2ODksIDI3NjkzLCAyNzY5OCwgMjc3MDIsIDI3NzA3LCAyNzcxMiwgMjc3MTYsIDI3NzIxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcyNiwgMjc3MzAsIDI3NzM0LCAyNzczOCwgMjc3NDIsIAorICAgIDI3NzQ3LCAyNzc1MiwgMjc3NTcsIDI3NzYyLCAyNzc2NiwgMjc3NzAsIDI3Nzc1LCAyNzc3OSwgMCwgMjc3ODMsIDI3Nzg3LCAKKyAgICAyNzc5MiwgMCwgMjc3OTcsIDI3ODAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzgwNywgMjc4MTAsIAorICAgIDI3ODE0LCAyNzgxOCwgMjc4MjIsIDI3ODI2LCAyNzgzMCwgMjc4MzQsIDI3ODM4LCAyNzg0MiwgMjc4NDYsIDI3ODUwLCAKKyAgICAyNzg1NCwgMjc4NTgsIDI3ODYyLCAyNzg2NiwgMjc4NzAsIDI3ODc0LCAyNzg3NywgMjc4ODEsIDI3ODg1LCAyNzg4OSwgCisgICAgMjc4OTMsIDI3ODk3LCAyNzkwMSwgMjc5MDUsIDI3OTA5LCAyNzkxMywgMjc5MTcsIDI3OTIxLCAyNzkyNSwgMjc5MjksIAorICAgIDI3OTMzLCAyNzkzNiwgMjc5MzksIDI3OTQzLCAyNzk0OSwgMjc5NTUsIDI3OTYxLCAyNzk2NywgMjc5NzMsIDI3OTc5LCAKKyAgICAyNzk4NSwgMjc5OTEsIDI3OTk3LCAyODAwMywgMjgwMDksIDI4MDE1LCAyODAyMSwgMjgwMjcsIDI4MDM2LCAyODA0NSwgCisgICAgMjgwNTEsIDI4MDU3LCAyODA2MywgMjgwNjgsIDI4MDcyLCAyODA3NywgMjgwODIsIDI4MDg3LCAyODA5MSwgMjgwOTYsIAorICAgIDI4MTAxLCAyODEwNiwgMjgxMTAsIDI4MTE1LCAyODExOSwgMjgxMjQsIDI4MTI5LCAyODEzNCwgMjgxMzksIDI4MTQzLCAKKyAgICAyODE0NywgMjgxNTEsIDI4MTU1LCAyODE1OSwgMjgxNjMsIDI4MTY3LCAyODE3MSwgMjgxNzUsIDI4MTc5LCAyODE4NSwgCisgICAgMjgxODksIDI4MTkzLCAyODE5NywgMjgyMDEsIDI4MjA1LCAyODIxMywgMjgyMTksIDI4MjIzLCAyODIyOSwgMjgyMzMsIAorICAgIDI4MjM5LCAyODI0MywgMCwgMCwgMjgyNDcsIDI4MjUxLCAyODI1NCwgMjgyNTcsIDI4MjYwLCAyODI2MywgMjgyNjYsIAorICAgIDI4MjY5LCAyODI3MywgMjgyNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MjgwLCAyODI4OCwgMjgyOTYsIDI4MzA0LCAyODMxMiwgCisgICAgMjgzMjAsIDI4MzI4LCAyODMzNiwgMjgzNDQsIDI4MzUyLCAwLCAwLCAwLCAwLCAwLCAwLCAyODM2MCwgMjgzNjMsIDI4MzY2LCAKKyAgICAyODM2OSwgMjgzNzQsIDI4Mzc3LCAyODM4MiwgMjgzODksIDI4Mzk3LCAyODQwMiwgMjg0MDksIDI4NDEyLCAyODQxOSwgCisgICAgMjg0MjYsIDI4NDMzLCAwLCAyODQzNywgMjg0NDEsIDI4NDQ0LCAyODQ0NywgMjg0NTAsIDI4NDUzLCAyODQ1NiwgMjg0NTksIAorICAgIDI4NDYzLCAyODQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjg0NzAsIDI4NDczLCAyODQ3NiwgMjg0NzksIDI4NDgyLCAyODQ4NSwgCisgICAgMjg0ODksIDI4NDkzLCAyODQ5NywgMjg1MDAsIDI4NTA0LCAyODUwOCwgMjg1MTEsIDI4NTE1LCAyODUxOSwgMjg1MjIsIAorICAgIDI4NTI1LCAyODUyOSwgMjg1MzMsIDI4NTM3LCAyODU0MSwgMjg1NDUsIDI4NTQ5LCAyODU1MiwgMjg1NTYsIDI4NTYwLCAKKyAgICAyODU2NCwgMjg1NjcsIDI4NTcxLCAyODU3NSwgMjg1NzksIDI4NTgzLCAyODU4NywgMjg1OTEsIDI4NTk1LCAyODU5OSwgCisgICAgMjg2MDYsIDI4NjExLCAyODYxNiwgMjg2MjEsIDI4NjI2LCAyODYzMiwgMjg2MzgsIDI4NjQ0LCAyODY1MCwgMjg2NTUsIAorICAgIDI4NjYxLCAyODY2NywgMjg2NzIsIDI4Njc4LCAyODY4NCwgMjg2OTAsIDI4Njk2LCAyODcwMiwgMjg3MDcsIDI4NzEzLCAKKyAgICAyODcxOCwgMjg3MjQsIDI4NzMwLCAyODczNiwgMjg3NDIsIDI4NzQ4LCAyODc1MywgMjg3NTgsIDI4NzY0LCAyODc3MCwgCisgICAgMjg3NzUsIDI4NzgxLCAyODc4NiwgMjg3OTIsIDI4Nzk3LCAyODgwMiwgMjg4MDgsIDI4ODE0LCAyODgyMCwgMjg4MjYsIAorICAgIDI4ODMyLCAyODgzOCwgMjg4NDQsIDI4ODUwLCAyODg1NiwgMjg4NjIsIDI4ODY4LCAyODg3NCwgMjg4NzksIDI4ODg0LCAKKyAgICAyODg5MCwgMjg4OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OTAyLCAyODkxMSwgMjg5MjAsIDI4OTI4LCAyODkzNiwgCisgICAgMjg5NDYsIDI4OTU0LCAyODk2MywgMjg5NzAsIDI4OTc3LCAyODk4NCwgMjg5OTIsIDI5MDAwLCAyOTAwOCwgMjkwMTYsIAorICAgIDI5MDI0LCAyOTAzMiwgMjkwNDAsIDI5MDQ4LCAyOTA1NSwgMjkwNjMsIDI5MDcxLCAyOTA3OSwgMjkwODcsIDI5MDk1LCAKKyAgICAyOTEwNSwgMjkxMTUsIDI5MTI1LCAyOTEzNSwgMjkxNDUsIDI5MTU1LCAyOTE2NSwgMjkxNzUsIDI5MTg1LCAyOTE5NSwgCisgICAgMjkyMDUsIDI5MjE1LCAyOTIyNSwgMjkyMzUsIDI5MjQzLCAyOTI1MSwgMjkyNjEsIDI5MjY5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyOTI3OSwgMjkyODMsIDI5Mjg3LCAyOTI5MSwgMjkyOTUsIDI5Mjk5LCAyOTMwMywgMjkzMDcsIDI5MzExLCAyOTMxNSwgCisgICAgMjkzMTksIDI5MzIzLCAyOTMyNywgMjkzMzEsIDI5MzM1LCAyOTMzOSwgMjkzNDMsIDI5MzQ3LCAyOTM1MSwgMjkzNTUsIAorICAgIDI5MzU5LCAyOTM2MywgMjkzNjcsIDI5MzcxLCAyOTM3NywgMjkzODEsIDI5Mzg3LCAyOTM5MSwgMjkzOTcsIDI5NDAxLCAKKyAgICAyOTQwNywgMjk0MTEsIDI5NDE1LCAyOTQxOSwgMjk0MjMsIDI5NDI3LCAyOTQzMSwgMjk0MzcsIDI5NDQzLCAyOTQ0OSwgCisgICAgMjk0NTUsIDI5NDYxLCAyOTQ2NywgMjk0NzMsIDI5NDc5LCAyOTQ4NSwgMjk0OTEsIDI5NDk3LCAyOTUwNCwgMjk1MTAsIAorICAgIDI5NTE2LCAyOTUyMiwgMjk1MjYsIDI5NTMwLCAyOTUzNCwgMjk1MzgsIDI5NTQyLCAyOTU0NiwgMjk1NTAsIDI5NTU2LCAKKyAgICAyOTU2MiwgMjk1NjgsIDI5NTczLCAyOTU4MCwgMjk1ODUsIDI5NTkwLCAyOTU5NiwgMjk2MDEsIDI5NjA4LCAyOTYxNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2MjIsIDI5NjI4LCAyOTYzMiwgMjk2MzcsIDI5NjQyLCAyOTY0NywgCisgICAgMjk2NTIsIDI5NjU3LCAyOTY2MiwgMjk2NjcsIDI5NjcyLCAyOTY3NywgMjk2ODIsIDI5Njg3LCAyOTY5MiwgMjk2OTcsIAorICAgIDI5NzAxLCAyOTcwNSwgMjk3MTAsIDI5NzE1LCAyOTcyMCwgMjk3MjQsIDI5NzI4LCAyOTczMywgMjk3MzcsIDI5NzQyLCAKKyAgICAyOTc0NywgMjk3NTIsIDI5NzU3LCAyOTc2MSwgMjk3NjYsIDAsIDI5NzcxLCAyOTc3NiwgMjk3ODEsIDI5Nzg2LCAyOTc5MiwgCisgICAgMjk3OTgsIDI5ODA0LCAyOTgxMCwgMjk4MTUsIDI5ODIwLCAyOTgyNiwgMjk4MzMsIDAsIDAsIDAsIDAsIDI5ODQwLCAKKyAgICAyOTg0NSwgMjk4NTEsIDI5ODU3LCAyOTg2MywgMjk4NjgsIDI5ODczLCAyOTg3OCwgMjk4ODQsIDI5ODg5LCAyOTg5NCwgCisgICAgMjk4OTksIDAsIDAsIDAsIDAsIDI5OTA0LCAwLCAwLCAwLCAyOTkwOSwgMjk5MTQsIDI5OTE5LCAyOTkyNCwgMjk5MjgsIAorICAgIDI5OTMyLCAyOTkzNiwgMjk5NDAsIDI5OTQ0LCAyOTk0OCwgMjk5NTMsIDI5OTU3LCAyOTk2MiwgMjk5NjcsIDI5OTczLCAKKyAgICAyOTk3OSwgMjk5ODUsIDI5OTkxLCAyOTk5NiwgMzAwMDIsIDMwMDA4LCAzMDAxMywgMzAwMTgsIDMwMDI0LCAzMDAyOSwgCisgICAgMzAwMzUsIDMwMDQxLCAzMDA0NiwgMzAwNTIsIDMwMDU4LCAzMDA2NCwgMzAwNjksIDMwMDc0LCAzMDA3OSwgMzAwODUsIAorICAgIDMwMDkxLCAzMDA5NiwgMzAxMDIsIDMwMTA3LCAzMDExMywgMzAxMTgsIDMwMTI0LCAwLCAwLCAzMDEzMCwgMzAxMzYsIAorICAgIDMwMTQyLCAzMDE0OCwgMzAxNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMTYwLCAzMDE2OSwgCisgICAgMzAxNzgsIDMwMTg2LCAzMDE5NSwgMzAyMDQsIDMwMjEyLCAzMDIyMSwgMzAyMzAsIDMwMjM5LCAzMDI0OCwgMzAyNTYsIAorICAgIDMwMjY1LCAzMDI3NCwgMzAyODIsIDMwMjkxLCAzMDMwMCwgMzAzMDgsIDMwMzE3LCAzMDMyNiwgMzAzMzQsIDMwMzQyLCAKKyAgICAzMDM1MSwgMzAzNTksIDMwMzY3LCAzMDM3NiwgMzAzODQsIDMwMzkzLCAzMDQwMiwgMzA0MTAsIDMwNDE5LCAzMDQyOCwgCisgICAgMzA0MzYsIDMwNDQ0LCAzMDQ1MywgMzA0NjIsIDMwNDcwLCAzMDQ3OSwgMzA0ODgsIDMwNDk3LCAzMDUwNiwgMzA1MTUsIAorICAgIDMwNTI0LCAzMDUzMywgMCwgMCwgMCwgMCwgMzA1NDIsIDMwNTUyLCAzMDU2MSwgMzA1NzAsIDMwNTc4LCAzMDU4NywgCisgICAgMzA1OTUsIDMwNjA0LCAzMDYxMiwgMzA2MjEsIDMwNjMwLCAzMDYzOSwgMzA2NDgsIDMwNjU3LCAzMDY2NiwgMzA2NzUsIAorICAgIDMwNjg0LCAzMDY5MywgMzA3MDIsIDMwNzExLCAzMDcyMCwgMzA3MjksIDMwNzM4LCAzMDc0NywgMzA3NTYsIDMwNzY0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMDc3MiwgMzA3ODAsIDMwNzg3LCAzMDc5NCwgMzA4MDEsIDMwODA4LCAzMDgxNSwgMzA4MjIsIAorICAgIDMwODMwLCAzMDgzNywgMzA4NDUsIDAsIDAsIDAsIDMwODUzLCAzMDg2MSwgMzA4NjksIDMwODczLCAzMDg3OSwgMzA4ODUsIAorICAgIDMwODkxLCAzMDg5NywgMzA5MDMsIDMwOTA5LCAzMDkxNSwgMzA5MjEsIDMwOTI3LCAzMDkzMywgMzA5MzksIDMwOTQ1LCAKKyAgICAzMDk1MSwgMzA5NTcsIDMwOTYzLCAzMDk2NywgMzA5NzMsIDMwOTc5LCAzMDk4NSwgMzA5OTEsIDMwOTk3LCAzMTAwMywgCisgICAgMzEwMDksIDMxMDE1LCAzMTAyMSwgMzEwMjcsIDMxMDMzLCAzMTAzOSwgMzEwNDUsIDMxMDUxLCAzMTA1NywgMzEwNjEsIAorICAgIDMxMDY2LCAzMTA3MSwgMzEwNzYsIDMxMDgwLCAzMTA4NSwgMzEwODksIDMxMDk0LCAzMTA5OSwgMzExMDQsIDMxMTA4LCAKKyAgICAzMTExMywgMzExMTgsIDMxMTIzLCAzMTEyOCwgMzExMzMsIDMxMTM3LCAzMTE0MiwgMzExNDYsIDMxMTUxLCAzMTE1NiwgCisgICAgMzExNjAsIDMxMTY0LCAzMTE2OSwgMzExNzQsIDMxMTc5LCAzMTE4NCwgMCwgMCwgMzExOTAsIDMxMTk0LCAzMTIwMSwgCisgICAgMzEyMDYsIDMxMjEyLCAzMTIxOCwgMzEyMjMsIDMxMjI5LCAzMTIzNSwgMzEyNDAsIDMxMjQ2LCAzMTI1MiwgMzEyNTgsIAorICAgIDMxMjY0LCAzMTI3MCwgMzEyNzUsIDMxMjgwLCAzMTI4NiwgMzEyOTEsIDMxMjk3LCAzMTMwMiwgMzEzMDgsIDMxMzE0LCAKKyAgICAzMTMyMCwgMzEzMjYsIDMxMzMwLCAzMTMzNSwgMzEzNDAsIDMxMzQ2LCAzMTM1MiwgMzEzNTcsIDMxMzYzLCAzMTM2OSwgCisgICAgMzEzNzMsIDMxMzc4LCAzMTM4MywgMzEzODgsIDMxMzkzLCAzMTM5NywgMzE0MDIsIDMxNDA3LCAzMTQxMywgMzE0MTksIAorICAgIDMxNDI1LCAzMTQzMCwgMzE0MzUsIDMxNDM5LCAzMTQ0NCwgMzE0NDgsIDMxNDUzLCAzMTQ1NywgMzE0NjIsIDMxNDY3LCAKKyAgICAzMTQ3MiwgMzE0NzcsIDMxNDg0LCAzMTQ5MSwgMzE0OTcsIDMxNTA3LCAzMTUxNiwgMzE1MjMsIDMxNTI5LCAzMTU0MCwgCisgICAgMzE1NDUsIDMxNTUxLCAwLCAzMTU1NywgMzE1NjIsIDMxNTY3LCAzMTU3NSwgMzE1ODEsIDMxNTg5LCAzMTU5NCwgMzE2MDAsIAorICAgIDMxNjA2LCAzMTYxMiwgMzE2MTcsIDMxNjIzLCAzMTYyOCwgMzE2MzUsIDMxNjQxLCAzMTY0NiwgMzE2NTIsIDMxNjU4LCAKKyAgICAzMTY2NCwgMzE2NzEsIDMxNjc4LCAzMTY4NSwgMzE2OTAsIDMxNjk1LCAzMTcwMiwgMzE3MDksIDMxNzE2LCAzMTcyMywgCisgICAgMzE3MzAsIDAsIDAsIDMxNzM3LCAzMTc0NCwgMzE3NTEsIDMxNzU3LCAzMTc2MywgMzE3NjksIDMxNzc1LCAzMTc4MSwgCisgICAgMzE3ODcsIDMxNzk0LCAzMTgwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4MDcsIDMxODEzLCAzMTgxOCwgMzE4MjMsIDMxODI4LCAKKyAgICAzMTgzMywgMzE4MzgsIDMxODQzLCAzMTg0OSwgMzE4NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDMxODYwLCAzMTg2NSwgMzE4NzAsIAorICAgIDMxODc1LCAzMTg4MCwgMzE4ODUsIDMxODkwLCAzMTg5OSwgMzE5MDYsIDMxOTExLCAzMTkxNiwgMzE5MjEsIDMxOTI2LCAKKyAgICAzMTkzMSwgMCwgMCwgMzE5MzYsIDMxOTQzLCAzMTk0NiwgMzE5NDksIDMxOTUyLCAzMTk1NywgMzE5NjEsIDMxOTY3LCAKKyAgICAzMTk3MSwgMzE5NzYsIDMxOTgzLCAzMTk5MSwgMzE5OTUsIDMyMDAwLCAzMjAwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNDgsIDEyMjU3LCAxMjI2NSwgCi0gICAgMTIyNzIsIDEyMjgwLCAxMjI5MiwgMTIyOTksIDEyMzA2LCAxMjMxMywgMTIzMjUsIDEyMzM2LCAxMjM0MywgMTIzNTEsIAotICAgIDEyMzU3LCAxMjM2MiwgMTIzNzAsIDEyMzc4LCAxMjM4NiwgMTIzOTIsIDEyNDAyLCAxMjQxMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwMDksIDMyMDE1LCAzMjAyMSwgMzIwMjUsIDMyMDI5LCAzMjAzMywgCisgICAgMzIwMzcsIDMyMDQzLCAzMjA0NywgMzIwNTMsIDMyMDU3LCAzMjA2MywgMzIwNjksIDMyMDc3LCAzMjA4MywgMzIwOTEsIAorICAgIDMyMDk1LCAzMjA5OSwgMzIxMDMsIDMyMTA5LCAzMjExMiwgMzIxMTgsIDMyMTIyLCAzMjEyOCwgMzIxMzIsIDMyMTM2LCAKKyAgICAzMjE0MiwgMzIxNDYsIDMyMTUyLCAzMjE1NiwgMzIxNjIsIDMyMTcwLCAzMjE3OCwgMzIxODYsIDMyMTkyLCAzMjE5NiwgCisgICAgMzIyMDIsIDMyMjA2LCAzMjIxMiwgMzIyMTUsIDMyMjE4LCAzMjIyNCwgMzIyMjgsIDMyMjM0LCAzMjIzNywgMzIyNDAsIAorICAgIDMyMjQ0LCAzMjI0NywgMzIyNTEsIDMyMjU3LCAzMjI2MywgMzIyNjcsIDMyMjcwLCAzMjI3NCwgMzIyNzksIDMyMjg0LCAKKyAgICAzMjI5MSwgMzIyOTYsIDMyMzAzLCAzMjMxMCwgMzIzMTksIDMyMzI2LCAzMjMzNSwgMzIzNDAsIDMyMzQ3LCAzMjM1NCwgCisgICAgMzIzNjMsIDMyMzY4LCAzMjM3NSwgMzIzODAsIDMyMzg2LCAzMjM5MiwgMzIzOTgsIDMyNDA0LCAzMjQxMCwgMzI0MTYsIDAsIAorICAgIDAsIDAsIDAsIDMyNDIyLCAzMjQyNiwgMzI0MjksIDMyNDMyLCAzMjQzNSwgMzI0MzgsIDMyNDQxLCAzMjQ0NCwgMzI0NDgsIAorICAgIDMyNDUxLCAzMjQ1NSwgMzI0NTgsIDMyNDYxLCAzMjQ2NCwgMzI0NjksIDMyNDc0LCAzMjQ3OSwgMzI0ODIsIDMyNDg3LCAKKyAgICAzMjQ5MiwgMzI0OTcsIDMyNTAyLCAzMjUwOSwgMzI1MTQsIDMyNTE5LCAzMjUyNCwgMzI1MjksIDMyNTM2LCAzMjU0MiwgCisgICAgMzI1NDgsIDMyNTU0LCAzMjU2MCwgMzI1NjYsIDMyNTc1LCAzMjU4NCwgMzI1OTAsIDMyNTk2LCAzMjYwNCwgMzI2MTIsIAorICAgIDMyNjIxLCAzMjYzMCwgMzI2MzgsIDMyNjQ2LCAzMjY1NSwgMzI2NjQsIDAsIDAsIDAsIDMyNjcyLCAzMjY3NywgMzI2ODIsIAorICAgIDMyNjg3LCAzMjY5MSwgMzI2OTUsIDMyNjk5LCAzMjcwNCwgMzI3MDgsIDMyNzEyLCAzMjcxNywgMzI3MjEsIDMyNzI2LCAKKyAgICAzMjczMSwgMzI3MzYsIDMyNzQxLCAzMjc0NiwgMzI3NTEsIDMyNzU2LCAzMjc2MSwgMzI3NjYsIDMyNzcwLCAzMjc3NCwgCisgICAgMzI3NzksIDMyNzg0LCAzMjc4OSwgMzI3OTMsIDMyNzk3LCAzMjgwMiwgMzI4MDYsIDMyODExLCAzMjgxNiwgMzI4MjEsIAorICAgIDMyODI1LCAzMjgzMSwgMzI4MzcsIDMyODQzLCAzMjg0OSwgMzI4NTUsIDMyODYxLCAzMjg2NywgMzI4NzMsIDMyODc5LCAKKyAgICAzMjg4NCwgMzI4ODksIDMyODk2LCAzMjkwNCwgMzI5MDksIDMyOTE0LCAzMjkxOSwgMzI5MjMsIDMyOTI3LCAzMjkzMSwgCisgICAgMzI5MzUsIDMyOTM5LCAzMjk0MywgMzI5NDgsIDMyOTUyLCAzMjk1NywgMzI5NjEsIDMyOTY2LCAzMjk3MSwgMzI5NzYsIAorICAgIDMyOTgyLCAzMjk4OCwgMzI5OTIsIDMyOTk4LCAzMzAwMiwgMzMwMDgsIDMzMDE0LCAzMzAxOSwgMzMwMjYsIDMzMDMwLCAKKyAgICAzMzAzNiwgMzMwNDAsIDMzMDQ2LCAzMzA1MSwgMzMwNTgsIDMzMDY1LCAzMzA3MCwgMzMwNzcsIDMzMDgyLCAzMzA4NywgCisgICAgMzMwOTIsIDMzMDk5LCAzMzEwMywgMzMxMDksIDMzMTE2LCAzMzEyMywgMzMxMjgsIDMzMTM1LCAzMzE0MiwgMzMxNDYsIAorICAgIDMzMTUyLCAzMzE1NywgMzMxNjEsIDMzMTY3LCAzMzE3MiwgMzMxNzcsIDMzMTgyLCAzMzE4NywgMzMxOTEsIDMzMTk1LCAKKyAgICAzMzIwMCwgMzMyMDUsIDMzMjEyLCAzMzIxOCwgMzMyMjMsIDMzMjMwLCAzMzIzNSwgMzMyNDIsIDMzMjQ3LCAzMzI1NywgCisgICAgMzMyNjMsIDMzMjY5LCAzMzI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMyNzcsIDMzMjg2LCAzMzI5MywgMzMzMDAsIAorICAgIDMzMzA3LCAzMzMxMSwgMzMzMTYsIDMzMzIxLCAzMzMyNiwgMzMzMzEsIDMzMzM2LCAzMzM0MSwgMzMzNDYsIDMzMzUxLCAKKyAgICAzMzM1NiwgMzMzNjEsIDMzMzY2LCAzMzM3MSwgMzMzNzUsIDMzMzc5LCAzMzM4NCwgMzMzODksIDMzMzk0LCAzMzM5OSwgCisgICAgMzM0MDQsIDMzNDA5LCAzMzQxMywgMzM0MTgsIDMzNDIzLCAzMzQyOCwgMzM0MzMsIDMzNDM3LCAzMzQ0MiwgMzM0NDYsIAorICAgIDMzNDUwLCAzMzQ1NSwgMzM0NjAsIDMzNDY1LCAzMzQ3MCwgMzM0NzUsIDMzNDc5LCAzMzQ4NSwgMzM0OTIsIDMzNDk4LCAKKyAgICAzMzUwMywgMzM1MDgsIDMzNTE0LCAzMzUxOSwgMzM1MjUsIDMzNTMwLCAzMzUzNiwgMzM1NDIsIDMzNTQ3LCAzMzU1MywgCisgICAgMzM1NTksIDMzNTY0LCAzMzU3MCwgMzM1NzYsIDMzNTgyLCAzMzU4NywgMCwgMCwgMCwgMzM1OTIsIDMzNTk4LCAzMzYwOCwgCisgICAgMzM2MTQsIDMzNjIyLCAzMzYyOCwgMzM2MzMsIDMzNjM3LCAzMzY0MSwgMzM2NDUsIDMzNjQ5LCAzMzY1MywgMzM2NTcsIAorICAgIDMzNjYyLCAzMzY2NiwgMCwgMCwgMCwgMzM2NzEsIDMzNjc2LCAzMzY4MSwgMzM2ODYsIDMzNjkzLCAzMzY5OSwgMzM3MDUsIAorICAgIDMzNzExLCAzMzcxNywgMzM3MjMsIDMzNzI5LCAzMzczNiwgMzM3NDIsIDMzNzQ5LCAzMzc1NSwgMzM3NjIsIDMzNzY5LCAKKyAgICAzMzc3NiwgMzM3ODMsIDMzNzkwLCAzMzc5NywgMzM4MDQsIDMzODExLCAzMzgxOCwgMzM4MjUsIDMzODMyLCAzMzgzOSwgCisgICAgMzM4NDYsIDMzODUzLCAzMzg2MCwgMzM4NjcsIDMzODc0LCAzMzg4MSwgMzM4ODgsIDMzODk1LCAzMzkwMiwgMzM5MDksIAorICAgIDMzOTE2LCAzMzkyMywgMzM5MzAsIDMzOTM3LCAzMzk0NCwgMzM5NTEsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgyLCAKKyAgICAzMzk4OCwgMzM5OTQsIDM0MDAwLCAzNDAwOCwgMzQwMTcsIDM0MDI0LCAzNDAzMSwgMzQwMzcsIDM0MDQ0LCAzNDA1MSwgCisgICAgMzQwNTgsIDM0MDY2LCAzNDA3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0MTcsIDEyNDIzLCAxMjQyOCwgCi0gICAgMTI0MzMsIDEyNDM4LCAxMjQ0MywgMTI0NDgsIDEyNDUzLCAxMjQ1OCwgMTI0NjMsIDEyNDY4LCAxMjQ3MywgMTI0NzgsIAotICAgIDEyNDgzLCAxMjQ4NywgMTI0OTEsIDEyNDk1LCAxMjUwMCwgMTI1MDYsIDEyNTEyLCAxMjUxOCwgMTI1MjMsIDEyNTI4LCAKLSAgICAxMjUzMywgMTI1MzgsIDEyNTQ0LCAxMjU1MywgMTI1NjEsIDEyNTY3LCAxMjU3NSwgMTI1ODEsIDEyNTg1LCAxMjU4OSwgCi0gICAgMTI1OTMsIDEyNTk4LCAxMjYwMSwgMTI2MDUsIDEyNjA4LCAxMjYxMiwgMTI2MTUsIDEyNjE5LCAxMjYyMywgMTI2MjcsIAotICAgIDEyNjMyLCAxMjYzNywgMTI2NDAsIDEyNjQ0LCAxMjY0OSwgMTI2NTQsIDEyNjU3LCAxMjY2MSwgMTI2NjQsIDEyNjY4LCAKLSAgICAxMjY3MiwgMTI2NzYsIDEyNjgwLCAxMjY4NCwgMTI2ODgsIDEyNjkyLCAxMjY5NiwgMTI3MDAsIDEyNzA0LCAxMjcwOCwgCi0gICAgMTI3MTIsIDEyNzE2LCAxMjcyMCwgMTI3MjQsIDEyNzI4LCAxMjczMiwgMTI3MzYsIDEyNzQwLCAxMjc0NCwgMTI3NDcsIAotICAgIDEyNzUxLCAxMjc1NSwgMTI3NTksIDEyNzYyLCAxMjc2NSwgMTI3NjksIDEyNzczLCAxMjc3NywgMTI3ODEsIDEyNzg1LCAKLSAgICAxMjc4OSwgMTI3OTMsIDEyNzk3LCAxMjgwMSwgMTI4MDQsIDEyODA5LCAxMjgxNCwgMTI4MTgsIDEyODIyLCAxMjgyNywgCi0gICAgMTI4MzEsIDEyODM2LCAxMjg0MCwgMTI4NDUsIDEyODUwLCAxMjg1NiwgMTI4NjIsIDEyODY4LCAxMjg3MiwgMTI4NzcsIAotICAgIDEyODgzLCAxMjg4OSwgMTI4OTMsIDEyODk4LCAxMjkwMiwgMTI5MDgsIDEyOTEzLCAxMjkxNiwgMTI5MjIsIDEyOTI4LCAKLSAgICAxMjkzMywgMTI5MzgsIDEyOTQ1LCAxMjk1MCwgMTI5NTUsIDEyOTU5LCAxMjk2MywgMTI5NjcsIDEyOTcxLCAxMjk3NSwgCi0gICAgMTI5NzksIDEyOTgzLCAxMjk4NywgMTI5OTIsIDEyOTk3LCAxMzAwMiwgMTMwMDgsIDEzMDExLCAxMzAxNSwgMTMwMTksIAotICAgIDEzMDIyLCAxMzAyNSwgMTMwMjgsIDEzMDMxLCAxMzAzNCwgMTMwMzcsIDEzMDQxLCAxMzA0NCwgMTMwNDgsIDEzMDUyLCAKLSAgICAxMzA1OSwgMTMwNjQsIDEzMDY4LCAxMzA3MiwgMTMwNzYsIDEzMDgwLCAxMzA4NCwgMTMwOTAsIDEzMDk0LCAxMzA5OCwgCi0gICAgMTMxMDIsIDEzMTA2LCAxMzExMiwgMTMxMTYsIDEzMTIwLCAxMzEyMywgMTMxMjcsIDEzMTMxLCAwLCAxMzEzNSwgMTMxMzgsIAotICAgIDEzMTQyLCAxMzE0NSwgMTMxNDksIDEzMTUyLCAxMzE1NiwgMTMxNjAsIDAsIDAsIDEzMTY0LCAxMzE2NywgMCwgMCwgCi0gICAgMTMxNzEsIDEzMTc0LCAxMzE3OCwgMTMxODEsIDEzMTg1LCAxMzE4OSwgMTMxOTMsIDEzMTk3LCAxMzIwMSwgMTMyMDUsIAotICAgIDEzMjA5LCAxMzIxMywgMTMyMTcsIDEzMjIxLCAxMzIyNSwgMTMyMjksIDEzMjMzLCAxMzIzNywgMTMyNDEsIDEzMjQ1LCAKLSAgICAxMzI0OSwgMTMyNTMsIDAsIDEzMjU3LCAxMzI2MCwgMTMyNjQsIDEzMjY4LCAxMzI3MiwgMTMyNzUsIDEzMjc4LCAwLCAKLSAgICAxMzI4MiwgMCwgMCwgMCwgMTMyODYsIDEzMjkwLCAxMzI5NCwgMTMyOTgsIDAsIDAsIDEzMzAxLCAxMzMwNSwgMTMzMDksIAotICAgIDEzMzE0LCAxMzMxOCwgMTMzMjMsIDEzMzI3LCAxMzMzMiwgMTMzMzcsIDAsIDAsIDEzMzQzLCAxMzM0NywgMCwgMCwgCi0gICAgMTMzNTIsIDEzMzU2LCAxMzM2MSwgMTMzNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzcxLCAwLCAwLCAwLCAwLCAKLSAgICAxMzM3NywgMTMzODEsIDAsIDEzMzg1LCAxMzM4OSwgMTMzOTQsIDEzMzk5LCAxMzQwNCwgMCwgMCwgMTM0MTAsIDEzNDE0LCAKLSAgICAxMzQxNywgMTM0MjAsIDEzNDIzLCAxMzQyNiwgMTM0MjksIDEzNDMyLCAxMzQzNiwgMTM0MzksIDEzNDQzLCAxMzQ1MSwgCi0gICAgMTM0NjAsIDEzNDY0LCAxMzQ2OCwgMTM0NzQsIDEzNDgwLCAxMzQ4NiwgMTM0OTIsIDEzNTA2LCAxMzUxMywgMTM1MTYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzNTIwLCAxMzUyNywgMTM1MzIsIDAsIDEzNTM3LCAxMzU0MSwgMTM1NDYsIDEzNTUwLCAxMzU1NSwgCi0gICAgMTM1NTksIDAsIDAsIDAsIDAsIDEzNTY0LCAxMzU2OSwgMCwgMCwgMTM1NzQsIDEzNTc5LCAxMzU4NCwgMTM1ODgsIDEzNTkzLCAKLSAgICAxMzU5OCwgMTM2MDMsIDEzNjA4LCAxMzYxMywgMTM2MTgsIDEzNjIzLCAxMzYyOCwgMTM2MzMsIDEzNjM4LCAxMzY0MywgCi0gICAgMTM2NDgsIDEzNjUzLCAxMzY1OCwgMTM2NjMsIDEzNjY4LCAxMzY3MywgMTM2NzgsIDAsIDEzNjgzLCAxMzY4NywgMTM2OTIsIAotICAgIDEzNjk3LCAxMzcwMiwgMTM3MDYsIDEzNzEwLCAwLCAxMzcxNSwgMTM3MjAsIDAsIDEzNzI1LCAxMzczMCwgMCwgMTM3MzUsIAotICAgIDEzNzQwLCAwLCAwLCAxMzc0NCwgMCwgMTM3NDksIDEzNzU1LCAxMzc2MCwgMTM3NjYsIDEzNzcxLCAwLCAwLCAwLCAwLCAKLSAgICAxMzc3NywgMTM3ODMsIDAsIDAsIDEzNzg5LCAxMzc5NSwgMTM4MDEsIDAsIDAsIDAsIDEzODA2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzgxMSwgMTM4MTYsIDEzODIxLCAxMzgyNiwgMCwgMTM4MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODM2LCAKLSAgICAxMzg0MSwgMTM4NDUsIDEzODQ5LCAxMzg1MywgMTM4NTcsIDEzODYxLCAxMzg2NSwgMTM4NzAsIDEzODc0LCAxMzg3OSwgCi0gICAgMTM4ODMsIDEzODg3LCAxMzg5MSwgMTM4OTUsIDEzOTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzkwNiwgMTM5MTEsIDEzOTE2LCAwLCAxMzkyMSwgMTM5MjUsIDEzOTMwLCAxMzkzNCwgMTM5MzksIDEzOTQzLCAxMzk0OCwgCi0gICAgMTM5NTMsIDEzOTU4LCAwLCAxMzk2NCwgMTM5NjgsIDEzOTczLCAwLCAxMzk3OSwgMTM5ODMsIDEzOTg4LCAxMzk5MiwgCi0gICAgMTM5OTcsIDE0MDAyLCAxNDAwNywgMTQwMTIsIDE0MDE3LCAxNDAyMiwgMTQwMjcsIDE0MDMyLCAxNDAzNywgMTQwNDIsIAotICAgIDE0MDQ3LCAxNDA1MiwgMTQwNTcsIDE0MDYyLCAxNDA2NywgMTQwNzIsIDE0MDc3LCAxNDA4MiwgMCwgMTQwODcsIDE0MDkxLCAKLSAgICAxNDA5NiwgMTQxMDEsIDE0MTA2LCAxNDExMCwgMTQxMTQsIDAsIDE0MTE5LCAxNDEyNCwgMCwgMTQxMjksIDE0MTM0LCAKLSAgICAxNDEzOSwgMTQxNDQsIDE0MTQ5LCAwLCAwLCAxNDE1MywgMTQxNTgsIDE0MTYzLCAxNDE2OSwgMTQxNzQsIDE0MTgwLCAKLSAgICAxNDE4NSwgMTQxOTEsIDE0MTk3LCAxNDIwNCwgMCwgMTQyMTEsIDE0MjE2LCAxNDIyMiwgMCwgMTQyMjksIDE0MjM0LCAKLSAgICAxNDI0MCwgMCwgMCwgMTQyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MjQ5LCAKLSAgICAxNDI1NSwgMTQyNjEsIDE0MjY3LCAwLCAwLCAxNDI3NCwgMTQyNzksIDE0MjgzLCAxNDI4NywgMTQyOTEsIDE0Mjk1LCAKLSAgICAxNDI5OSwgMTQzMDMsIDE0MzA4LCAxNDMxMiwgMTQzMTcsIDE0MzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMyNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQzMzIsIDE0MzM2LCAxNDM0MCwgMCwgMTQzNDQsIDE0MzQ3LCAxNDM1MSwgMTQzNTQsIAotICAgIDE0MzU4LCAxNDM2MSwgMTQzNjUsIDE0MzY5LCAwLCAwLCAxNDM3MywgMTQzNzYsIDAsIDAsIDE0MzgwLCAxNDM4MywgCi0gICAgMTQzODcsIDE0MzkwLCAxNDM5NCwgMTQzOTgsIDE0NDAyLCAxNDQwNiwgMTQ0MTAsIDE0NDE0LCAxNDQxOCwgMTQ0MjIsIAotICAgIDE0NDI2LCAxNDQzMCwgMTQ0MzQsIDE0NDM4LCAxNDQ0MiwgMTQ0NDYsIDE0NDUwLCAxNDQ1NCwgMTQ0NTgsIDE0NDYyLCAwLCAKLSAgICAxNDQ2NiwgMTQ0NjksIDE0NDczLCAxNDQ3NywgMTQ0ODEsIDE0NDg0LCAxNDQ4NywgMCwgMTQ0OTEsIDE0NDk1LCAwLCAKLSAgICAxNDQ5OSwgMTQ1MDMsIDE0NTA3LCAxNDUxMSwgMTQ1MTUsIDAsIDAsIDE0NTE4LCAxNDUyMiwgMTQ1MjYsIDE0NTMxLCAKLSAgICAxNDUzNSwgMTQ1NDAsIDE0NTQ0LCAxNDU0OSwgMTQ1NTQsIDAsIDAsIDE0NTYwLCAxNDU2NCwgMCwgMCwgMTQ1NjksIAotICAgIDE0NTczLCAxNDU3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1ODIsIDE0NTg4LCAwLCAwLCAwLCAwLCAxNDU5NCwgCi0gICAgMTQ1OTgsIDAsIDE0NjAyLCAxNDYwNiwgMTQ2MTEsIDE0NjE2LCAxNDYyMSwgMCwgMCwgMTQ2MjcsIDE0NjMxLCAxNDYzNCwgCi0gICAgMTQ2MzcsIDE0NjQwLCAxNDY0MywgMTQ2NDYsIDE0NjQ5LCAxNDY1MywgMTQ2NTYsIDE0NjYwLCAxNDY2MywgMTQ2NjcsIAotICAgIDE0NjczLCAxNDY3OSwgMTQ2ODUsIDE0NjkxLCAxNDY5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3MDMsIAotICAgIDE0NzA3LCAwLCAxNDcxMSwgMTQ3MTQsIDE0NzE4LCAxNDcyMSwgMTQ3MjUsIDE0NzI4LCAwLCAwLCAwLCAxNDczMiwgCi0gICAgMTQ3MzUsIDE0NzM5LCAwLCAxNDc0MywgMTQ3NDYsIDE0NzUwLCAxNDc1NCwgMCwgMCwgMCwgMTQ3NTcsIDE0NzYxLCAwLCAKLSAgICAxNDc2NSwgMCwgMTQ3NjksIDE0NzczLCAwLCAwLCAwLCAxNDc3NywgMTQ3ODEsIDAsIDAsIDAsIDE0Nzg1LCAxNDc4OSwgCi0gICAgMTQ3OTMsIDAsIDAsIDAsIDE0Nzk2LCAxNDc5OSwgMTQ4MDIsIDE0ODA2LCAxNDgxMCwgMTQ4MTQsIDE0ODE4LCAxNDgyMiwgCi0gICAgMTQ4MjYsIDE0ODMwLCAxNDgzNCwgMTQ4MzgsIDAsIDAsIDAsIDAsIDE0ODQxLCAxNDg0NiwgMTQ4NTAsIDE0ODU1LCAKLSAgICAxNDg1OSwgMCwgMCwgMCwgMTQ4NjQsIDE0ODY4LCAxNDg3MywgMCwgMTQ4NzgsIDE0ODgyLCAxNDg4NywgMTQ4OTIsIDAsIDAsIAotICAgIDE0ODk2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDg5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ5MDUsIDE0OTA5LCAxNDkxMiwgMTQ5MTUsIDE0OTE4LCAxNDkyMSwgMTQ5MjQsIDE0OTI3LCAxNDkzMSwgMTQ5MzQsIAotICAgIDE0OTM4LCAxNDk0MiwgMTQ5NDcsIDE0OTUyLCAxNDk1NiwgMTQ5NjAsIDE0OTY0LCAxNDk2OCwgMTQ5NzIsIDE0OTc3LCAKLSAgICAxNDk4MSwgMCwgMCwgMCwgMCwgMCwgMTQ5ODQsIDE0OTkwLCAxNDk5NCwgMTQ5OTgsIDAsIDE1MDAyLCAxNTAwNSwgMTUwMDksIAotICAgIDE1MDEyLCAxNTAxNiwgMTUwMTksIDE1MDIzLCAxNTAyNywgMCwgMTUwMzEsIDE1MDM0LCAxNTAzOCwgMCwgMTUwNDIsIAotICAgIDE1MDQ1LCAxNTA0OSwgMTUwNTMsIDE1MDU2LCAxNTA2MCwgMTUwNjQsIDE1MDY4LCAxNTA3MiwgMTUwNzYsIDE1MDgwLCAKLSAgICAxNTA4NCwgMTUwODgsIDE1MDkyLCAxNTA5NiwgMTUxMDAsIDE1MTA0LCAxNTEwOCwgMTUxMTIsIDE1MTE2LCAxNTEyMCwgCi0gICAgMTUxMjQsIDE1MTI4LCAwLCAxNTEzMiwgMTUxMzUsIDE1MTM5LCAxNTE0MywgMTUxNDcsIDE1MTUwLCAxNTE1MywgMTUxNTcsIAotICAgIDE1MTYxLCAxNTE2NSwgMTUxNjksIDE1MTczLCAxNTE3NywgMTUxODEsIDE1MTg1LCAxNTE4OSwgMCwgMCwgMCwgMTUxOTIsIAotICAgIDE1MTk2LCAxNTIwMSwgMTUyMDUsIDE1MjEwLCAxNTIxNCwgMTUyMTksIDE1MjI0LCAwLCAxNTIzMCwgMTUyMzQsIDE1MjM5LCAKLSAgICAwLCAxNTI0NCwgMTUyNDgsIDE1MjUzLCAxNTI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyNjIsIDE1MjY2LCAwLCAKLSAgICAxNTI3MiwgMTUyNzYsIDE1MjgwLCAwLCAwLCAwLCAwLCAwLCAxNTI4NCwgMTUyODksIDE1Mjk0LCAxNTI5OSwgMCwgMCwgCi0gICAgMTUzMDUsIDE1MzA5LCAxNTMxMiwgMTUzMTUsIDE1MzE4LCAxNTMyMSwgMTUzMjQsIDE1MzI3LCAxNTMzMSwgMTUzMzQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzM4LCAxNTM1MSwgMTUzNjMsIDE1Mzc1LCAxNTM4NywgMTUzOTksIDE1NDExLCAKLSAgICAxNTQyMywgMCwgMTU0MjcsIDE1NDMxLCAxNTQzNSwgMCwgMTU0MzksIDE1NDQyLCAxNTQ0NiwgMTU0NDksIDE1NDUzLCAKLSAgICAxNTQ1NiwgMTU0NjAsIDE1NDY0LCAwLCAxNTQ2OCwgMTU0NzEsIDE1NDc1LCAwLCAxNTQ3OSwgMTU0ODIsIDE1NDg2LCAKLSAgICAxNTQ5MCwgMTU0OTMsIDE1NDk3LCAxNTUwMSwgMTU1MDUsIDE1NTA5LCAxNTUxMywgMTU1MTcsIDE1NTIxLCAxNTUyNSwgCi0gICAgMTU1MjksIDE1NTMzLCAxNTUzNywgMTU1NDEsIDE1NTQ1LCAxNTU0OSwgMTU1NTMsIDE1NTU3LCAxNTU2MSwgMTU1NjUsIDAsIAotICAgIDE1NTY5LCAxNTU3MiwgMTU1NzYsIDE1NTgwLCAxNTU4NCwgMTU1ODcsIDE1NTkwLCAxNTU5NCwgMTU1OTgsIDE1NjAyLCAwLCAKLSAgICAxNTYwNiwgMTU2MTAsIDE1NjE0LCAxNTYxOCwgMTU2MjIsIDAsIDAsIDE1NjI1LCAxNTYyOSwgMTU2MzMsIDE1NjM4LCAKLSAgICAxNTY0MiwgMTU2NDcsIDE1NjUxLCAxNTY1NiwgMTU2NjEsIDAsIDE1NjY3LCAxNTY3MSwgMTU2NzYsIDAsIDE1NjgxLCAKLSAgICAxNTY4NSwgMTU2OTAsIDE1Njk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTY5OSwgMTU3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE1NzA5LCAwLCAxNTcxMywgMTU3MTgsIDE1NzIzLCAxNTcyOCwgMCwgMCwgMTU3MzQsIDE1NzM4LCAxNTc0MSwgCi0gICAgMTU3NDQsIDE1NzQ3LCAxNTc1MCwgMTU3NTMsIDE1NzU2LCAxNTc2MCwgMTU3NjMsIDAsIDE1NzY3LCAxNTc3MSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NzUsIDE1Nzc5LCAxNTc4MywgMCwgMTU3ODcsIDE1NzkwLCAKLSAgICAxNTc5NCwgMTU3OTcsIDE1ODAxLCAxNTgwNCwgMTU4MDgsIDE1ODEyLCAwLCAxNTgxNiwgMTU4MTksIDE1ODIzLCAwLCAKLSAgICAxNTgyNywgMTU4MzAsIDE1ODM0LCAxNTgzOCwgMTU4NDEsIDE1ODQ1LCAxNTg0OSwgMTU4NTMsIDE1ODU3LCAxNTg2MSwgCi0gICAgMTU4NjUsIDE1ODY5LCAxNTg3MywgMTU4NzcsIDE1ODgxLCAxNTg4NSwgMTU4ODksIDE1ODkzLCAxNTg5NywgMTU5MDEsIAotICAgIDE1OTA1LCAxNTkwOSwgMTU5MTMsIDE1OTE3LCAxNTkyMSwgMTU5MjQsIDE1OTI4LCAxNTkzMiwgMTU5MzYsIDE1OTM5LCAKLSAgICAxNTk0MiwgMTU5NDYsIDE1OTUwLCAxNTk1NCwgMTU5NTgsIDE1OTYyLCAxNTk2NiwgMTU5NzAsIDE1OTc0LCAxNTk3OCwgCi0gICAgMTU5ODEsIDAsIDAsIDE1OTg1LCAxNTk4OSwgMTU5OTQsIDE1OTk4LCAxNjAwMywgMTYwMDcsIDE2MDEyLCAxNjAxNywgMCwgCi0gICAgMTYwMjMsIDE2MDI3LCAxNjAzMiwgMCwgMTYwMzcsIDE2MDQxLCAxNjA0NiwgMTYwNTEsIDE2MDU1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNjA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwNjYsIDE2MDcyLCAxNjA3NywgMTYwODIsIDE2MDg3LCAKLSAgICAwLCAwLCAxNjA5MywgMTYwOTcsIDE2MTAwLCAxNjEwMywgMTYxMDYsIDE2MTA5LCAxNjExMiwgMTYxMTUsIDE2MTE5LCAKLSAgICAxNjEyMiwgMTYxMjYsIDE2MTMwLCAxNjEzNSwgMTYxNDAsIDE2MTQ2LCAxNjE1MiwgMCwgMCwgMCwgMTYxNTgsIDE2MTYyLCAKLSAgICAxNjE2OCwgMTYxNzQsIDE2MTgwLCAxNjE4NSwgMTYxOTEsIDAsIDAsIDE2MTk3LCAxNjIwMSwgMCwgMTYyMDUsIDE2MjA5LCAKLSAgICAxNjIxMywgMTYyMTcsIDE2MjIxLCAxNjIyNSwgMTYyMjksIDE2MjMzLCAxNjIzNywgMTYyNDEsIDE2MjQ1LCAxNjI0OSwgCi0gICAgMTYyNTMsIDE2MjU3LCAxNjI2MSwgMTYyNjUsIDE2MjY5LCAxNjI3MywgMCwgMCwgMCwgMTYyNzcsIDE2MjgzLCAxNjI4OSwgCi0gICAgMTYyOTUsIDE2MzAxLCAxNjMwNywgMTYzMTMsIDE2MzE5LCAxNjMyNSwgMTYzMzEsIDE2MzM3LCAxNjM0MywgMTYzNTEsIAotICAgIDE2MzU3LCAxNjM2MywgMTYzNjksIDE2Mzc1LCAxNjM4MSwgMTYzODcsIDE2MzkzLCAxNjM5OSwgMTY0MDUsIDE2NDExLCAKLSAgICAxNjQxNywgMCwgMTY0MjMsIDE2NDI5LCAxNjQzNSwgMTY0NDEsIDE2NDQ3LCAxNjQ1MywgMTY0NTcsIDE2NDYzLCAxNjQ2NywgCi0gICAgMCwgMTY0NzEsIDAsIDAsIDE2NDc3LCAxNjQ4MSwgMTY0ODcsIDE2NDkzLCAxNjQ5OSwgMTY1MDMsIDE2NTA5LCAwLCAwLCAwLCAKLSAgICAxNjUxMywgMCwgMCwgMCwgMCwgMTY1MTcsIDE2NTIyLCAxNjUyOSwgMTY1MzYsIDE2NTQzLCAxNjU1MCwgMCwgMTY1NTcsIDAsIAotICAgIDE2NTY0LCAxNjU2OSwgMTY1NzQsIDE2NTgxLCAxNjU4OCwgMTY1OTcsIDE2NjA4LCAxNjYxNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTY2MjIsIDE2NjI4LCAxNjYzMywgMTY2MzgsIDE2NjQzLCAxNjY0OCwgMTY2NTMsIDE2NjU4LCAxNjY2NCwgMTY2NjksIDAsIAotICAgIDAsIDE2Njc1LCAxNjY4MiwgMTY2ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2Njk0LCAxNjcwMSwgCi0gICAgMTY3MDgsIDE2NzE1LCAxNjcyMiwgMTY3MjksIDE2NzM2LCAxNjc0MywgMTY3NTAsIDE2NzU3LCAxNjc2NCwgMTY3NzEsIAotICAgIDE2Nzc4LCAxNjc4NSwgMTY3OTIsIDE2Nzk5LCAxNjgwNiwgMTY4MTMsIDE2ODIwLCAxNjgyNywgMTY4MzQsIDE2ODQxLCAKLSAgICAxNjg0OCwgMTY4NTUsIDE2ODYyLCAxNjg2OSwgMTY4NzYsIDE2ODgzLCAxNjg5MCwgMTY4OTcsIDE2OTA0LCAxNjkxMSwgCi0gICAgMTY5MTgsIDE2OTI0LCAxNjkzMSwgMTY5MzgsIDE2OTQzLCAxNjk1MCwgMTY5NTUsIDE2OTYyLCAxNjk2OSwgMTY5NzYsIAotICAgIDE2OTgzLCAxNjk5MCwgMTY5OTcsIDE3MDAzLCAxNzAxMCwgMTcwMTUsIDE3MDIxLCAxNzAyOCwgMTcwMzUsIDE3MDQyLCAKLSAgICAxNzA0OCwgMTcwNTUsIDE3MDYyLCAxNzA2OSwgMTcwNzUsIDE3MDgyLCAwLCAwLCAwLCAwLCAxNzA4NywgMTcwOTQsIAotICAgIDE3MTAwLCAxNzEwNywgMTcxMTMsIDE3MTIyLCAxNzEzMSwgMTcxMzYsIDE3MTQxLCAxNzE0NiwgMTcxNTMsIDE3MTYwLCAKLSAgICAxNzE2NywgMTcxNzQsIDE3MTc5LCAxNzE4NCwgMTcxODksIDE3MTk0LCAxNzE5OSwgMTcyMDMsIDE3MjA3LCAxNzIxMSwgCi0gICAgMTcyMTUsIDE3MjE5LCAxNzIyMywgMTcyMjgsIDE3MjMyLCAxNzIzNywgMTcyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE3MjQ3LCAxNzI1MiwgMCwgMTcyNTksIDAsIDAsIDE3MjY2LCAxNzI3MSwgMCwgMTcyNzYsIDAsIAotICAgIDAsIDE3MjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzI4OCwgMTcyOTMsIDE3Mjk3LCAxNzMwNCwgMCwgMTczMTEsIDE3MzE2LCAKLSAgICAxNzMyMSwgMTczMjYsIDE3MzMzLCAxNzM0MCwgMTczNDcsIDAsIDE3MzU0LCAxNzM1OSwgMTczNjQsIDAsIDE3MzcxLCAwLCAKLSAgICAxNzM3OCwgMCwgMCwgMTczODMsIDE3MzkwLCAwLCAxNzM5NywgMTc0MDEsIDE3NDA4LCAxNzQxMiwgMTc0MTcsIDE3NDI1LCAKLSAgICAxNzQzMSwgMTc0MzcsIDE3NDQyLCAxNzQ0OCwgMTc0NTQsIDE3NDYwLCAxNzQ2NSwgMCwgMTc0NzEsIDE3NDc5LCAxNzQ4NiwgCi0gICAgMCwgMCwgMTc0OTMsIDE3NDk4LCAxNzUwNCwgMTc1MDksIDE3NTE1LCAwLCAxNzUyMSwgMCwgMTc1MjcsIDE3NTM0LCAKLSAgICAxNzU0MSwgMTc1NDgsIDE3NTU1LCAxNzU2MCwgMCwgMCwgMTc1NjQsIDE3NTY5LCAxNzU3MywgMTc1NzcsIDE3NTgxLCAKLSAgICAxNzU4NSwgMTc1ODksIDE3NTkzLCAxNzU5OCwgMTc2MDIsIDAsIDAsIDE3NjA3LCAxNzYxMywgMTc2MTksIDE3NjI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzYzMywgMTc2MzcsIDE3NjQ4LCAxNzY2MywgMTc2NzgsIDE3Njg4LCAxNzY5OSwgCi0gICAgMTc3MTIsIDE3NzIzLCAxNzcyOSwgMTc3MzcsIDE3NzQ3LCAxNzc1MywgMTc3NjEsIDE3NzY1LCAxNzc3MSwgMTc3NzcsIAotICAgIDE3Nzg1LCAxNzc5NSwgMTc4MDMsIDE3ODE2LCAxNzgyMiwgMTc4MzAsIDE3ODM4LCAxNzg1MCwgMTc4NTcsIDE3ODY1LCAKLSAgICAxNzg3MywgMTc4ODEsIDE3ODg5LCAxNzg5NywgMTc5MDUsIDE3OTE1LCAxNzkxOSwgMTc5MjIsIDE3OTI1LCAxNzkyOCwgCi0gICAgMTc5MzEsIDE3OTM0LCAxNzkzNywgMTc5NDEsIDE3OTQ0LCAxNzk0OCwgMTc5NTIsIDE3OTU2LCAxNzk2MCwgMTc5NjQsIAotICAgIDE3OTY4LCAxNzk3MiwgMTc5NzcsIDE3OTgxLCAxNzk4NiwgMTc5OTEsIDE3OTk3LCAxODAwNywgMTgwMjEsIDE4MDMxLCAKLSAgICAxODAzNywgMTgwNDMsIDE4MDUxLCAxODA1OSwgMTgwNjcsIDE4MDc1LCAxODA4MSwgMTgwODcsIDE4MDkwLCAxODA5NCwgCi0gICAgMTgwOTgsIDE4MTAyLCAxODEwNiwgMTgxMTAsIDE4MTE0LCAwLCAxODExOCwgMTgxMjIsIDE4MTI2LCAxODEzMCwgMTgxMzQsIAotICAgIDE4MTM4LCAxODE0MiwgMTgxNDYsIDE4MTUwLCAxODE1NCwgMTgxNTgsIDE4MTYyLCAxODE2NSwgMTgxNjksIDE4MTczLCAKLSAgICAxODE3NywgMTgxODAsIDE4MTg0LCAxODE4OCwgMTgxOTIsIDE4MTk2LCAxODIwMCwgMTgyMDQsIDE4MjA4LCAxODIxMiwgCi0gICAgMTgyMTUsIDE4MjE5LCAxODIyMywgMTgyMjcsIDE4MjMxLCAxODIzNSwgMTgyMzgsIDE4MjQxLCAxODI0NSwgMTgyNTEsIAotICAgIDE4MjU1LCAwLCAwLCAwLCAwLCAxODI1OSwgMTgyNjQsIDE4MjY4LCAxODI3MywgMTgyNzcsIDE4MjgyLCAxODI4NywgCi0gICAgMTgyOTMsIDE4Mjk4LCAxODMwNCwgMTgzMDgsIDE4MzEzLCAxODMxNywgMTgzMjIsIDE4MzMyLCAxODMzOCwgMTgzNDQsIAotICAgIDE4MzUxLCAxODM2MSwgMTgzNjcsIDE4MzcxLCAxODM3NSwgMTgzODEsIDE4Mzg3LCAxODM5NSwgMTg0MDEsIDE4NDA5LCAKLSAgICAxODQxNywgMTg0MjUsIDE4NDM1LCAxODQ0MywgMTg0NTMsIDE4NDU4LCAxODQ2NCwgMTg0NzAsIDE4NDc2LCAxODQ4MiwgCi0gICAgMTg0ODgsIDE4NDk0LCAwLCAxODUwMCwgMTg1MDYsIDE4NTEyLCAxODUxOCwgMTg1MjQsIDE4NTMwLCAxODUzNiwgMTg1NDIsIAotICAgIDE4NTQ4LCAxODU1NCwgMTg1NjAsIDE4NTY2LCAxODU3MSwgMTg1NzcsIDE4NTgzLCAxODU4OSwgMTg1OTQsIDE4NjAwLCAKLSAgICAxODYwNiwgMTg2MTIsIDE4NjE4LCAxODYyNCwgMTg2MzAsIDE4NjM2LCAxODY0MiwgMTg2NDcsIDE4NjUzLCAxODY1OSwgCi0gICAgMTg2NjUsIDE4NjcxLCAxODY3NywgMTg2ODIsIDE4Njg3LCAxODY5MywgMTg3MDEsIDE4NzA4LCAwLCAxODcxNiwgMTg3MjMsIAotICAgIDE4NzM2LCAxODc0MywgMTg3NTAsIDE4NzU4LCAxODc2NiwgMTg3NzIsIDE4Nzc4LCAxODc4NCwgMTg3OTQsIDE4Nzk5LCAKLSAgICAxODgwNSwgMTg4MTUsIDE4ODI1LCAwLCAxODgzNSwgMTg4NDUsIDE4ODUzLCAxODg2NSwgMTg4NzcsIDE4ODgzLCAxODg5NywgCi0gICAgMTg5MTIsIDE4OTE3LCAxODkyMiwgMTg5MzAsIDE4OTM4LCAxODk0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTg5NTQsIDE4OTU3LCAxODk2MSwgMTg5NjUsIDE4OTY5LCAxODk3MywgMTg5NzcsIDE4OTgxLCAxODk4NSwgCi0gICAgMTg5ODksIDE4OTkzLCAxODk5NywgMTkwMDEsIDE5MDA1LCAxOTAwOSwgMTkwMTMsIDE5MDE3LCAxOTAyMSwgMTkwMjUsIAotICAgIDE5MDI5LCAxOTAzMywgMTkwMzcsIDE5MDQwLCAxOTA0NCwgMTkwNDgsIDE5MDUyLCAxOTA1NSwgMTkwNTgsIDE5MDYyLCAKLSAgICAxOTA2NiwgMTkwNzAsIDE5MDc0LCAxOTA3NywgMTkwODEsIDE5MDg0LCAxOTA4OSwgMTkwOTIsIDE5MDk2LCAxOTA5OSwgCi0gICAgMTkxMDMsIDE5MTA2LCAxOTExMSwgMTkxMTQsIDE5MTE4LCAxOTEyNSwgMTkxMzAsIDE5MTM0LCAxOTEzOSwgMTkxNDMsIAotICAgIDE5MTQ4LCAxOTE1MiwgMTkxNTcsIDE5MTY0LCAxOTE3MCwgMTkxNzUsIDE5MTc5LCAxOTE4MywgMTkxODcsIDE5MTkxLCAKLSAgICAxOTE5NSwgMTkyMDAsIDE5MjA2LCAxOTIxMiwgMTkyMTcsIDE5MjIzLCAxOTIyNywgMTkyMzAsIDE5MjMzLCAxOTIzNiwgCi0gICAgMTkyMzksIDE5MjQyLCAxOTI0NSwgMTkyNDksIDE5MjUyLCAxOTI1NiwgMTkyNjIsIDE5MjY2LCAxOTI3MCwgMTkyNzQsIAotICAgIDE5Mjc4LCAxOTI4MiwgMTkyODYsIDE5MjkwLCAxOTI5NCwgMTkyOTksIDE5MzAzLCAxOTMwOCwgMTkzMTMsIDE5MzE5LCAKLSAgICAxOTMyNCwgMTkzMzAsIDE5MzM2LCAxOTM0MiwgMTkzNDgsIDE5MzU0LCAxOTM2MiwgMTkzNjksIDE5Mzc3LCAxOTM4NSwgCi0gICAgMTkzOTQsIDE5NDAzLCAxOTQxNCwgMTk0MjQsIDE5NDM0LCAxOTQ0NSwgMTk0NTYsIDE5NDY2LCAxOTQ3NiwgMTk0ODYsIAotICAgIDE5NDk2LCAxOTUwNiwgMTk1MTYsIDE5NTI2LCAxOTUzNiwgMTk1NDQsIDE5NTUxLCAxOTU1NywgMTk1NjQsIDE5NTY5LCAKLSAgICAxOTU3NSwgMTk1ODEsIDE5NTg3LCAxOTU5MywgMTk1OTksIDE5NjA1LCAxOTYxMSwgMTk2MTcsIDE5NjIzLCAxOTYyOSwgCi0gICAgMTk2MzUsIDE5NjQwLCAxOTY0OCwgMTk2NTUsIDE5NjYxLCAxOTY2OCwgMTk2NzYsIDE5NjgyLCAxOTY4OCwgMTk2OTQsIAotICAgIDE5NzAwLCAxOTcwOCwgMTk3MTYsIDE5NzI2LCAxOTczNCwgMTk3NDIsIDE5NzQ4LCAxOTc1MywgMTk3NTgsIDE5NzYzLCAKLSAgICAxOTc2OCwgMTk3NzMsIDE5Nzc4LCAxOTc4NCwgMTk3ODksIDE5Nzk1LCAxOTgwMSwgMTk4MDcsIDE5ODEzLCAxOTgyMCwgCi0gICAgMTk4MjUsIDE5ODMxLCAxOTgzNiwgMTk4NDEsIDE5ODQ2LCAxOTg1MSwgMTk4NTYsIDE5ODYxLCAxOTg2NiwgMTk4NzEsIAotICAgIDE5ODc2LCAxOTg4MSwgMTk4ODYsIDE5ODkxLCAxOTg5NiwgMTk5MDEsIDE5OTA2LCAxOTkxMSwgMTk5MTYsIDE5OTIxLCAKLSAgICAxOTkyNiwgMTk5MzEsIDE5OTM2LCAxOTk0MSwgMTk5NDYsIDE5OTUxLCAxOTk1NiwgMTk5NjEsIDE5OTY2LCAxOTk3MSwgCi0gICAgMTk5NzYsIDE5OTgxLCAxOTk4NiwgMTk5OTEsIDE5OTk2LCAyMDAwMSwgMjAwMDYsIDIwMDExLCAyMDAxNiwgMCwgMjAwMjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIwMDI2LCAwLCAwLCAyMDAzMSwgMjAwMzUsIDIwMDM5LCAyMDA0MywgMjAwNDcsIDIwMDUxLCAKLSAgICAyMDA1NSwgMjAwNTksIDIwMDYzLCAyMDA2NywgMjAwNzEsIDIwMDc1LCAyMDA3OSwgMjAwODMsIDIwMDg3LCAyMDA5MSwgCi0gICAgMjAwOTUsIDIwMDk5LCAyMDEwMywgMjAxMDcsIDIwMTExLCAyMDExNSwgMjAxMTksIDIwMTIzLCAyMDEyNywgMjAxMzEsIAotICAgIDIwMTM1LCAyMDEzOSwgMjAxNDMsIDIwMTQ3LCAyMDE1MSwgMjAxNTUsIDIwMTU5LCAyMDE2MywgMjAxNjcsIDIwMTcxLCAKLSAgICAyMDE3NSwgMjAxNzksIDIwMTgzLCAyMDE4NywgMjAxOTEsIDIwMTk1LCAyMDIwMSwgMjAyMDUsIDIwMjEwLCAyMDIxNSwgCi0gICAgMjAyMTksIDIwMjI0LCAyMDIyOSwgMjAyMzMsIDIwMjM3LCAyMDI0MSwgMjAyNDUsIDIwMjQ5LCAyMDI1MywgMjAyNTcsIAotICAgIDIwMjYxLCAyMDI2NSwgMjAyNjksIDIwMjczLCAyMDI3NywgMjAyODEsIDIwMjg1LCAyMDI4OSwgMjAyOTMsIDIwMjk3LCAKLSAgICAyMDMwMSwgMjAzMDUsIDIwMzA5LCAyMDMxMywgMjAzMTcsIDIwMzIxLCAyMDMyNSwgMjAzMjksIDIwMzMzLCAyMDMzNywgCi0gICAgMjAzNDEsIDIwMzQ1LCAyMDM0OSwgMjAzNTMsIDIwMzU3LCAyMDM2MSwgMjAzNjUsIDIwMzY5LCAyMDM3MywgMjAzNzcsIAotICAgIDIwMzgxLCAyMDM4NSwgMjAzODksIDIwMzkzLCAyMDM5NywgMjA0MDEsIDIwNDA1LCAyMDQwOSwgMjA0MTMsIDIwNDE3LCAKLSAgICAyMDQyMSwgMjA0MjUsIDIwNDI5LCAyMDQzMywgMjA0MzcsIDIwNDQxLCAyMDQ0NSwgMjA0NDksIDIwNDUzLCAyMDQ1NywgCi0gICAgMjA0NjEsIDIwNDY1LCAyMDQ2OSwgMjA0NzMsIDIwNDc3LCAyMDQ4MSwgMjA0ODUsIDIwNDg5LCAyMDQ5MywgMjA0OTcsIAotICAgIDIwNTAxLCAyMDUwNSwgMjA1MDksIDIwNTEzLCAyMDUxNywgMjA1MjEsIDIwNTI1LCAyMDUyOSwgMjA1MzMsIDIwNTM3LCAKLSAgICAyMDU0MSwgMjA1NDUsIDIwNTQ5LCAyMDU1MywgMjA1NTcsIDIwNTYxLCAyMDU2NSwgMjA1NjksIDIwNTczLCAyMDU3NywgCi0gICAgMjA1ODEsIDIwNTg1LCAyMDU4OSwgMjA1OTMsIDIwNTk3LCAyMDYwMSwgMjA2MDUsIDIwNjA5LCAyMDYxMywgMjA2MTcsIAotICAgIDIwNjIwLCAyMDYyNCwgMjA2MjcsIDIwNjMxLCAyMDYzNSwgMjA2MzgsIDIwNjQyLCAyMDY0NiwgMjA2NDksIDIwNjUzLCAKLSAgICAyMDY1NywgMjA2NjEsIDIwNjY1LCAyMDY2OCwgMjA2NzIsIDIwNjc2LCAyMDY4MCwgMjA2ODQsIDIwNjg4LCAyMDY5MiwgCi0gICAgMjA2OTUsIDIwNjk5LCAyMDcwMywgMjA3MDcsIDIwNzExLCAyMDcxNSwgMjA3MTksIDIwNzIzLCAyMDcyNywgMjA3MzEsIAotICAgIDIwNzM1LCAyMDczOSwgMjA3NDMsIDIwNzQ3LCAyMDc1MSwgMjA3NTUsIDIwNzU5LCAyMDc2MywgMjA3NjcsIDIwNzcxLCAKLSAgICAyMDc3NSwgMjA3NzksIDIwNzgzLCAyMDc4NywgMjA3OTEsIDIwNzk1LCAyMDc5OSwgMjA4MDMsIDIwODA3LCAyMDgxMSwgCi0gICAgMjA4MTUsIDIwODE5LCAyMDgyMywgMjA4MjcsIDIwODMxLCAyMDgzNSwgMjA4MzksIDIwODQzLCAyMDg0NywgMjA4NTEsIAotICAgIDIwODU1LCAyMDg1OSwgMjA4NjMsIDIwODY3LCAyMDg3MSwgMjA4NzUsIDIwODc5LCAyMDg4MywgMjA4ODcsIDIwODkxLCAKLSAgICAyMDg5NSwgMjA4OTksIDIwOTAzLCAyMDkwNywgMjA5MTEsIDIwOTE1LCAyMDkxOSwgMjA5MjMsIDIwOTI3LCAyMDkzMSwgCi0gICAgMjA5MzUsIDIwOTM5LCAyMDk0MywgMjA5NDcsIDIwOTUxLCAyMDk1NSwgMjA5NTksIDIwOTYzLCAyMDk2NywgMjA5NzEsIAotICAgIDIwOTc1LCAyMDk3OSwgMjA5ODMsIDIwOTg3LCAyMDk5MSwgMjA5OTUsIDIwOTk5LCAyMTAwMywgMjEwMDcsIDIxMDExLCAKLSAgICAyMTAxNSwgMjEwMTksIDIxMDIzLCAyMTAyNywgMjEwMzEsIDIxMDM1LCAyMTAzOSwgMjEwNDMsIDIxMDQ3LCAyMTA1MSwgCi0gICAgMjEwNTUsIDIxMDU5LCAyMTA2MywgMjEwNjcsIDIxMDcxLCAyMTA3NSwgMjEwNzksIDIxMDgzLCAyMTA4NywgMjEwOTEsIAotICAgIDIxMDk1LCAyMTA5OSwgMjExMDMsIDIxMTA3LCAyMTExMSwgMjExMTUsIDIxMTE5LCAyMTEyMywgMjExMjcsIDIxMTMxLCAKLSAgICAyMTEzNSwgMjExMzksIDIxMTQzLCAyMTE0NywgMjExNTEsIDIxMTU1LCAyMTE1OSwgMjExNjMsIDIxMTY3LCAyMTE3MSwgCi0gICAgMjExNzUsIDIxMTc5LCAyMTE4MywgMjExODcsIDIxMTkxLCAyMTE5NSwgMjExOTksIDIxMjAzLCAyMTIwNywgMjEyMTEsIAotICAgIDIxMjE1LCAyMTIxOSwgMjEyMjMsIDIxMjI3LCAyMTIzMSwgMjEyMzUsIDIxMjM5LCAyMTI0MywgMjEyNDcsIDIxMjUwLCAKLSAgICAyMTI1NCwgMjEyNTgsIDIxMjYyLCAyMTI2NiwgMjEyNzAsIDIxMjc0LCAyMTI3OCwgMjEyODIsIDIxMjg2LCAyMTI5MCwgCi0gICAgMjEyOTQsIDIxMjk4LCAyMTMwMiwgMjEzMDYsIDIxMzEwLCAyMTMxNCwgMjEzMTgsIDIxMzIyLCAyMTMyNiwgMjEzMzAsIAotICAgIDIxMzM0LCAyMTMzOCwgMjEzNDIsIDIxMzQ1LCAyMTM0OSwgMjEzNTMsIDIxMzU3LCAyMTM2MSwgMjEzNjUsIDIxMzY5LCAKLSAgICAyMTM3MywgMjEzNzcsIDIxMzgxLCAyMTM4NSwgMjEzODksIDIxMzkzLCAyMTM5NywgMjE0MDEsIDIxNDA1LCAyMTQwOSwgCi0gICAgMjE0MTMsIDIxNDE3LCAyMTQyMSwgMjE0MjUsIDIxNDI5LCAyMTQzMywgMjE0MzcsIDIxNDQxLCAyMTQ0NSwgMjE0NDksIAotICAgIDIxNDUzLCAyMTQ1NywgMjE0NjEsIDIxNDY1LCAyMTQ2OSwgMjE0NzMsIDIxNDc3LCAyMTQ4MSwgMjE0ODUsIDIxNDg5LCAKLSAgICAyMTQ5MywgMjE0OTcsIDIxNTAxLCAyMTUwNSwgMjE1MDksIDIxNTEzLCAyMTUxNywgMjE1MjEsIDIxNTI1LCAyMTUyOSwgCi0gICAgMjE1MzMsIDAsIDIxNTM3LCAyMTU0MSwgMjE1NDUsIDIxNTQ5LCAwLCAwLCAyMTU1MywgMjE1NTcsIDIxNTYxLCAyMTU2NSwgCi0gICAgMjE1NjksIDIxNTczLCAyMTU3NywgMCwgMjE1ODEsIDAsIDIxNTg1LCAyMTU4OSwgMjE1OTMsIDIxNTk3LCAwLCAwLCAKLSAgICAyMTYwMSwgMjE2MDUsIDIxNjA5LCAyMTYxMywgMjE2MTcsIDIxNjIxLCAyMTYyNSwgMjE2MjksIDIxNjMzLCAyMTYzNywgCi0gICAgMjE2NDEsIDIxNjQ1LCAyMTY0OSwgMjE2NTMsIDIxNjU3LCAyMTY2MSwgMjE2NjUsIDIxNjY5LCAyMTY3MywgMjE2NzcsIAotICAgIDIxNjgxLCAyMTY4NSwgMjE2ODksIDIxNjkyLCAyMTY5NiwgMjE3MDAsIDIxNzA0LCAyMTcwOCwgMjE3MTIsIDIxNzE2LCAKLSAgICAyMTcyMCwgMjE3MjQsIDIxNzI4LCAyMTczMiwgMjE3MzYsIDIxNzQwLCAyMTc0NCwgMjE3NDgsIDIxNzUyLCAyMTc1NiwgCi0gICAgMjE3NjAsIDAsIDIxNzY0LCAyMTc2OCwgMjE3NzIsIDIxNzc2LCAwLCAwLCAyMTc4MCwgMjE3ODQsIDIxNzg4LCAyMTc5MiwgCi0gICAgMjE3OTYsIDIxODAwLCAyMTgwNCwgMjE4MDgsIDIxODEyLCAyMTgxNiwgMjE4MjAsIDIxODI0LCAyMTgyOCwgMjE4MzIsIAotICAgIDIxODM2LCAyMTg0MCwgMjE4NDQsIDIxODQ5LCAyMTg1NCwgMjE4NTksIDIxODY1LCAyMTg3MSwgMjE4NzYsIDIxODgxLCAKLSAgICAyMTg4NywgMjE4OTAsIDIxODk0LCAyMTg5OCwgMjE5MDIsIDIxOTA2LCAyMTkxMCwgMjE5MTQsIDIxOTE4LCAwLCAyMTkyMiwgCi0gICAgMjE5MjYsIDIxOTMwLCAyMTkzNCwgMCwgMCwgMjE5MzgsIDIxOTQyLCAyMTk0NiwgMjE5NTAsIDIxOTU0LCAyMTk1OCwgCi0gICAgMjE5NjIsIDAsIDIxOTY2LCAwLCAyMTk3MCwgMjE5NzQsIDIxOTc4LCAyMTk4MiwgMCwgMCwgMjE5ODYsIDIxOTkwLCAKLSAgICAyMTk5NCwgMjE5OTgsIDIyMDAyLCAyMjAwNiwgMjIwMTAsIDIyMDE0LCAyMjAxOCwgMjIwMjMsIDIyMDI4LCAyMjAzMywgCi0gICAgMjIwMzksIDIyMDQ1LCAyMjA1MCwgMCwgMjIwNTUsIDIyMDU5LCAyMjA2MywgMjIwNjcsIDIyMDcxLCAyMjA3NSwgMjIwNzksIAotICAgIDIyMDgzLCAyMjA4NywgMjIwOTEsIDIyMDk1LCAyMjA5OSwgMjIxMDMsIDIyMTA3LCAyMjExMSwgMjIxMTUsIDIyMTE5LCAKLSAgICAyMjEyMiwgMjIxMjYsIDIyMTMwLCAyMjEzNCwgMjIxMzgsIDIyMTQyLCAyMjE0NiwgMjIxNTAsIDIyMTU0LCAyMjE1OCwgCi0gICAgMjIxNjIsIDIyMTY2LCAyMjE3MCwgMjIxNzQsIDIyMTc4LCAyMjE4MiwgMjIxODYsIDIyMTkwLCAyMjE5NCwgMjIxOTgsIAotICAgIDIyMjAyLCAyMjIwNiwgMjIyMTAsIDIyMjE0LCAyMjIxOCwgMjIyMjIsIDIyMjI2LCAyMjIzMCwgMjIyMzQsIDIyMjM4LCAKLSAgICAyMjI0MiwgMjIyNDYsIDIyMjUwLCAyMjI1NCwgMjIyNTgsIDIyMjYyLCAyMjI2NiwgMjIyNzAsIDIyMjc0LCAyMjI3OCwgMCwgCi0gICAgMjIyODIsIDIyMjg2LCAyMjI5MCwgMjIyOTQsIDAsIDAsIDIyMjk4LCAyMjMwMiwgMjIzMDYsIDIyMzEwLCAyMjMxNCwgCi0gICAgMjIzMTgsIDIyMzIyLCAyMjMyNiwgMjIzMzAsIDIyMzM0LCAyMjMzOCwgMjIzNDIsIDIyMzQ2LCAyMjM1MCwgMjIzNTQsIAotICAgIDIyMzU4LCAyMjM2MiwgMjIzNjYsIDIyMzcwLCAyMjM3NCwgMjIzNzgsIDIyMzgyLCAyMjM4NiwgMjIzOTAsIDIyMzk0LCAKLSAgICAyMjM5OCwgMjI0MDIsIDIyNDA2LCAyMjQxMCwgMjI0MTQsIDIyNDE4LCAyMjQyMiwgMjI0MjYsIDIyNDMwLCAyMjQzNCwgCi0gICAgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDU0LCAyMjQ1OCwgMjI0NjIsIDIyNDY2LCAyMjQ3MCwgMjI0NzQsIAotICAgIDIyNDc4LCAyMjQ4MiwgMjI0ODYsIDIyNDkwLCAyMjQ5NCwgMjI0OTgsIDIyNTAyLCAyMjUwNiwgMjI1MTAsIDIyNTE0LCAKLSAgICAyMjUxOCwgMjI1MjIsIDIyNTI1LCAyMjUyOSwgMjI1MzMsIDIyNTM3LCAyMjU0MSwgMjI1NDUsIDIyNTQ5LCAyMjU1MywgCi0gICAgMjI1NTcsIDIyNTYxLCAwLCAwLCAyMjU2NSwgMjI1NzQsIDIyNTgwLCAyMjU4NSwgMjI1ODksIDIyNTkyLCAyMjU5NywgCi0gICAgMjI2MDAsIDIyNjAzLCAyMjYwNiwgMjI2MTEsIDIyNjE1LCAyMjYyMCwgMjI2MjMsIDIyNjI2LCAyMjYyOSwgMjI2MzIsIAotICAgIDIyNjM1LCAyMjYzOCwgMjI2NDIsIDIyNjQ1LCAyMjY0OSwgMjI2NTMsIDIyNjU3LCAyMjY2MSwgMjI2NjUsIDIyNjY5LCAKLSAgICAyMjY3MywgMjI2NzcsIDIyNjgxLCAyMjY4NSwgMjI2ODksIDAsIDAsIDAsIDIyNjk1LCAyMjcwMSwgMjI3MDUsIDIyNzA5LCAKLSAgICAyMjcxMywgMjI3MTksIDIyNzIzLCAyMjcyNywgMjI3MzEsIDIyNzM3LCAyMjc0MSwgMjI3NDUsIDIyNzQ5LCAyMjc1NSwgCi0gICAgMjI3NTksIDIyNzYzLCAyMjc2NywgMjI3NzMsIDIyNzc5LCAyMjc4NSwgMjI3OTMsIDIyNzk5LCAyMjgwNSwgMjI4MTEsIAotICAgIDIyODE3LCAyMjgyMywgMCwgMCwgMCwgMCwgMCwgMCwgMjI4MjksIDIyODMyLCAyMjgzNSwgMjI4MzgsIDIyODQxLCAyMjg0NCwgCi0gICAgMjI4NDgsIDIyODUyLCAyMjg1NSwgMjI4NTksIDIyODYzLCAyMjg2NywgMjI4NzEsIDIyODc1LCAyMjg3OCwgMjI4ODIsIAotICAgIDIyODg2LCAyMjg5MCwgMjI4OTQsIDIyODk4LCAyMjkwMiwgMjI5MDYsIDIyOTEwLCAyMjkxNCwgMjI5MTgsIDIyOTIyLCAKLSAgICAyMjkyNSwgMjI5MjksIDIyOTMzLCAyMjkzNywgMjI5NDEsIDIyOTQ1LCAyMjk0OSwgMjI5NTMsIDIyOTU3LCAyMjk2MSwgCi0gICAgMjI5NjUsIDIyOTY5LCAyMjk3MywgMjI5NzcsIDIyOTgxLCAyMjk4NSwgMjI5ODksIDIyOTkzLCAyMjk5NywgMjMwMDEsIAotICAgIDIzMDA0LCAyMzAwOCwgMjMwMTIsIDIzMDE2LCAyMzAyMCwgMjMwMjQsIDIzMDI4LCAyMzAzMiwgMjMwMzYsIDIzMDQwLCAKLSAgICAyMzA0NCwgMjMwNDgsIDIzMDUyLCAyMzA1NiwgMjMwNjAsIDIzMDY0LCAyMzA2OCwgMjMwNzIsIDIzMDc2LCAyMzA4MCwgCi0gICAgMjMwODQsIDIzMDg4LCAyMzA5MiwgMjMwOTYsIDIzMTAwLCAyMzEwNCwgMjMxMDgsIDIzMTEyLCAyMzExNiwgMjMxMjAsIAotICAgIDIzMTI0LCAyMzEyOCwgMjMxMzIsIDIzMTM2LCAyMzEzOSwgMjMxNDMsIDIzMTQ3LCAyMzE1MSwgMjMxNTUsIDIzMTU5LCAwLCAKLSAgICAwLCAyMzE2MywgMjMxNjgsIDIzMTczLCAyMzE3OCwgMjMxODMsIDIzMTg4LCAwLCAwLCAyMzE5MywgMjMxOTcsIDIzMjAwLCAKLSAgICAyMzIwNCwgMjMyMDcsIDIzMjExLCAyMzIxNCwgMjMyMTgsIDIzMjI0LCAyMzIyOSwgMjMyMzMsIDIzMjM2LCAyMzI0MCwgCi0gICAgMjMyNDQsIDIzMjQ5LCAyMzI1MywgMjMyNTgsIDIzMjYyLCAyMzI2NywgMjMyNzEsIDIzMjc2LCAyMzI4MCwgMjMyODUsIAotICAgIDIzMjkxLCAyMzI5NSwgMjMzMDAsIDIzMzA0LCAyMzMwOSwgMjMzMTUsIDIzMzE5LCAyMzMyNSwgMjMzMzEsIDIzMzM1LCAKLSAgICAyMzM0MCwgMjMzNDgsIDIzMzU2LCAyMzM2MywgMjMzNjgsIDIzMzczLCAyMzM4MiwgMjMzODgsIDIzMzk2LCAyMzQwMSwgCi0gICAgMjM0MDcsIDIzNDExLCAyMzQxNSwgMjM0MTksIDIzNDIzLCAyMzQyNywgMjM0MzEsIDIzNDM1LCAyMzQzOSwgMjM0NDMsIAotICAgIDIzNDQ3LCAyMzQ1MywgMjM0NTgsIDIzNDYzLCAyMzQ2NiwgMjM0NzAsIDIzNDc0LCAyMzQ3OSwgMjM0ODMsIDIzNDg4LCAKLSAgICAyMzQ5MiwgMjM0OTcsIDIzNTAxLCAyMzUwNiwgMjM1MTAsIDIzNTE1LCAyMzUxOSwgMjM1MjQsIDIzNTI4LCAyMzUzMywgCi0gICAgMjM1MzksIDIzNTQzLCAyMzU0OCwgMjM1NTMsIDIzNTU3LCAyMzU2MSwgMjM1NjUsIDIzNTY5LCAyMzU3MiwgMjM1NzYsIAotICAgIDIzNTgyLCAyMzU4NywgMjM1OTIsIDIzNTk2LCAyMzYwMCwgMjM2MDQsIDIzNjA5LCAyMzYxMywgMjM2MTgsIDIzNjIyLCAKLSAgICAyMzYyNywgMjM2MzAsIDIzNjM0LCAyMzYzOCwgMjM2NDMsIDIzNjQ3LCAyMzY1MiwgMjM2NTYsIDIzNjYxLCAyMzY2NywgCi0gICAgMjM2NzEsIDIzNjc1LCAyMzY3OSwgMjM2ODMsIDIzNjg3LCAyMzY5MSwgMjM2OTUsIDIzNjk5LCAyMzcwMywgMjM3MDcsIAotICAgIDIzNzExLCAyMzcxNywgMjM3MjAsIDIzNzI0LCAyMzcyOCwgMjM3MzMsIDIzNzM3LCAyMzc0MiwgMjM3NDYsIDIzNzUxLCAKLSAgICAyMzc1NSwgMjM3NjAsIDIzNzY0LCAyMzc2OSwgMjM3NzMsIDIzNzc4LCAyMzc4MiwgMjM3ODcsIDIzNzkzLCAyMzc5NywgCi0gICAgMjM4MDEsIDIzODA3LCAyMzgxMywgMjM4MTksIDIzODI1LCAyMzgyOSwgMjM4MzMsIDIzODM3LCAyMzg0MSwgMjM4NDUsIAotICAgIDIzODQ5LCAyMzg1NSwgMjM4NTksIDIzODYzLCAyMzg2NywgMjM4NzIsIDIzODc2LCAyMzg4MSwgMjM4ODUsIDIzODkwLCAKLSAgICAyMzg5NCwgMjM4OTksIDIzOTAzLCAyMzkwOCwgMjM5MTIsIDIzOTE3LCAyMzkyMSwgMjM5MjYsIDIzOTMyLCAyMzkzNiwgCi0gICAgMjM5NDIsIDIzOTQ2LCAyMzk1MCwgMjM5NTQsIDIzOTU4LCAyMzk2MiwgMjM5NjYsIDIzOTcyLCAyMzk3NSwgMjM5NzksIAotICAgIDIzOTgzLCAyMzk4OCwgMjM5OTIsIDIzOTk3LCAyNDAwMSwgMjQwMDYsIDI0MDEwLCAyNDAxNSwgMjQwMTksIDI0MDI0LCAKLSAgICAyNDAyOCwgMjQwMzMsIDI0MDM3LCAyNDA0MiwgMjQwNDgsIDI0MDUyLCAyNDA1NywgMjQwNjEsIDI0MDY3LCAyNDA3MywgCi0gICAgMjQwNzcsIDI0MDgxLCAyNDA4NSwgMjQwODksIDI0MDkzLCAyNDA5NywgMjQxMDMsIDI0MTA3LCAyNDExMSwgMjQxMTUsIAotICAgIDI0MTIwLCAyNDEyNCwgMjQxMjksIDI0MTMzLCAyNDEzOCwgMjQxNDQsIDI0MTQ4LCAyNDE1MywgMjQxNTcsIDI0MTYxLCAKLSAgICAyNDE2NSwgMjQxNjksIDI0MTczLCAyNDE3NywgMjQxODEsIDI0MTg3LCAyNDE5MSwgMjQxOTUsIDI0MTk5LCAyNDIwNCwgCi0gICAgMjQyMDgsIDI0MjEzLCAyNDIxNywgMjQyMjIsIDI0MjI2LCAyNDIzMSwgMjQyMzUsIDI0MjQwLCAyNDI0NCwgMjQyNDksIAotICAgIDI0MjUzLCAyNDI1OCwgMjQyNjEsIDI0MjY1LCAyNDI2OSwgMjQyNzMsIDI0Mjc3LCAyNDI4MSwgMjQyODUsIDI0Mjg5LCAKLSAgICAyNDI5MywgMjQyOTksIDI0MzAzLCAyNDMwNywgMjQzMTEsIDI0MzE2LCAyNDMyMCwgMjQzMjUsIDI0MzI5LCAyNDMzNCwgCi0gICAgMjQzMzgsIDI0MzQzLCAyNDM0NywgMjQzNTIsIDI0MzU2LCAyNDM2MSwgMjQzNjUsIDI0MzcwLCAyNDM3NiwgMjQzNzksIAotICAgIDI0Mzg0LCAyNDM4OCwgMjQzOTMsIDI0Mzk5LCAyNDQwNSwgMjQ0MTEsIDI0NDE3LCAyNDQyMywgMjQ0MjksIDI0NDM1LCAKLSAgICAyNDQzOSwgMjQ0NDMsIDI0NDQ3LCAyNDQ1MSwgMjQ0NTUsIDI0NDU5LCAyNDQ2MywgMjQ0NjcsIDI0NDcyLCAyNDQ3NiwgCi0gICAgMjQ0ODEsIDI0NDg1LCAyNDQ5MCwgMjQ0OTQsIDI0NDk5LCAyNDUwMywgMjQ1MDgsIDI0NTEyLCAyNDUxNywgMjQ1MjEsIAotICAgIDI0NTI2LCAyNDUzMCwgMjQ1MzQsIDI0NTM4LCAyNDU0MiwgMjQ1NDYsIDI0NTUwLCAyNDU1NCwgMjQ1NjAsIDI0NTYzLCAKLSAgICAyNDU2NywgMjQ1NzEsIDI0NTc2LCAyNDU4MCwgMjQ1ODUsIDI0NTg5LCAyNDU5NCwgMjQ1OTgsIDI0NjAzLCAyNDYwNywgCi0gICAgMjQ2MTIsIDI0NjE2LCAyNDYyMSwgMjQ2MjUsIDI0NjMwLCAyNDYzNiwgMjQ2NDAsIDI0NjQ2LCAyNDY1MSwgMjQ2NTcsIAotICAgIDI0NjYxLCAyNDY2NywgMjQ2NzIsIDI0Njc2LCAyNDY4MCwgMjQ2ODQsIDI0Njg4LCAyNDY5MiwgMjQ2OTcsIDI0NzAxLCAKLSAgICAyNDcwNSwgMjQ3MTAsIDI0NzE0LCAyNDcxOSwgMjQ3MjIsIDI0NzI2LCAyNDczMCwgMjQ3MzQsIDI0NzM4LCAyNDc0MiwgCi0gICAgMjQ3NDYsIDI0NzUwLCAyNDc1NCwgMjQ3NTgsIDI0NzYyLCAyNDc2NiwgMjQ3NzEsIDI0Nzc1LCAyNDc3OSwgMjQ3ODUsIAotICAgIDI0Nzg5LCAyNDc5NSwgMjQ3OTksIDI0ODA1LCAyNDgwOSwgMjQ4MTMsIDI0ODE3LCAyNDgyMSwgMjQ4MjUsIDI0ODMwLCAKLSAgICAyNDgzNCwgMjQ4MzgsIDI0ODQyLCAyNDg0NiwgMjQ4NTAsIDI0ODU0LCAyNDg1OCwgMjQ4NjIsIDI0ODY2LCAyNDg3MCwgCi0gICAgMjQ4NzYsIDI0ODgyLCAyNDg4OCwgMjQ4OTQsIDI0OTAwLCAyNDkwNSwgMjQ5MTEsIDI0OTE3LCAyNDkyMywgMjQ5MjcsIAotICAgIDI0OTMxLCAyNDkzNSwgMjQ5MzksIDI0OTQzLCAyNDk0NywgMjQ5NTEsIDI0OTU1LCAyNDk1OSwgMjQ5NjMsIDI0OTY3LCAKLSAgICAyNDk3MSwgMjQ5NzUsIDI0OTgwLCAyNDk4NSwgMjQ5OTAsIDI0OTk1LCAyNDk5OSwgMjUwMDMsIDI1MDA3LCAyNTAxMSwgCi0gICAgMjUwMTUsIDI1MDE5LCAyNTAyMywgMjUwMjcsIDI1MDMxLCAyNTAzNywgMjUwNDMsIDI1MDQ5LCAyNTA1NSwgMjUwNjEsIAotICAgIDI1MDY3LCAyNTA3MywgMjUwNzksIDI1MDg1LCAyNTA4OSwgMjUwOTMsIDI1MDk3LCAyNTEwMSwgMjUxMDUsIDI1MTA5LCAKLSAgICAyNTExMywgMjUxMTksIDI1MTI1LCAyNTEzMSwgMjUxMzcsIDI1MTQzLCAyNTE0OSwgMjUxNTUsIDI1MTYxLCAyNTE2NywgCi0gICAgMjUxNzIsIDI1MTc3LCAyNTE4MiwgMjUxODcsIDI1MTkzLCAyNTE5OSwgMjUyMDUsIDI1MjExLCAyNTIxNywgMjUyMjMsIAotICAgIDI1MjI5LCAyNTIzNSwgMjUyNDEsIDI1MjQ3LCAyNTI1MywgMjUyNTgsIDI1MjY0LCAyNTI3MCwgMjUyNzYsIDI1MjgxLCAKLSAgICAyNTI4NiwgMjUyOTEsIDI1Mjk2LCAyNTMwMSwgMjUzMDYsIDI1MzExLCAyNTMxNiwgMjUzMjEsIDI1MzI2LCAyNTMzMSwgCi0gICAgMjUzMzYsIDI1MzQxLCAyNTM0NiwgMjUzNTEsIDI1MzU2LCAyNTM2MSwgMjUzNjYsIDI1MzcxLCAyNTM3NiwgMjUzODEsIAotICAgIDI1Mzg2LCAyNTM5MSwgMjUzOTYsIDI1NDAxLCAyNTQwNiwgMjU0MTEsIDI1NDE2LCAyNTQyMSwgMjU0MjYsIDI1NDMxLCAKLSAgICAyNTQzNiwgMjU0NDEsIDI1NDQ2LCAyNTQ1MSwgMjU0NTYsIDI1NDYxLCAyNTQ2NiwgMjU0NzEsIDI1NDc2LCAyNTQ4MSwgCi0gICAgMjU0ODYsIDI1NDkwLCAyNTQ5NSwgMjU1MDAsIDI1NTA1LCAyNTUxMCwgMjU1MTUsIDI1NTIwLCAyNTUyNSwgMjU1MzAsIAotICAgIDI1NTM1LCAyNTU0MCwgMjU1NDUsIDI1NTUwLCAyNTU1NSwgMjU1NjAsIDI1NTY1LCAyNTU3MCwgMjU1NzUsIDI1NTgwLCAKLSAgICAyNTU4NSwgMjU1OTAsIDI1NTk1LCAyNTYwMCwgMjU2MDUsIDI1NjEwLCAyNTYxNSwgMjU2MjAsIDI1NjI1LCAyNTYzMCwgCi0gICAgMjU2MzUsIDI1NjQwLCAyNTY0NSwgMjU2NDksIDI1NjU0LCAyNTY1OSwgMjU2NjQsIDI1NjY5LCAyNTY3NCwgMjU2NzgsIAotICAgIDI1NjgzLCAyNTY4OSwgMjU2OTQsIDI1Njk5LCAyNTcwNCwgMjU3MDksIDI1NzE1LCAyNTcyMCwgMjU3MjUsIDI1NzMwLCAKLSAgICAyNTczNSwgMjU3NDAsIDI1NzQ1LCAyNTc1MCwgMjU3NTUsIDI1NzYwLCAyNTc2NSwgMjU3NzAsIDI1Nzc1LCAyNTc4MCwgCi0gICAgMjU3ODUsIDI1NzkwLCAyNTc5NSwgMjU4MDAsIDI1ODA1LCAyNTgxMCwgMjU4MTUsIDI1ODIwLCAyNTgyNSwgMjU4MzAsIAotICAgIDI1ODM1LCAyNTg0MCwgMjU4NDUsIDI1ODUwLCAyNTg1NSwgMjU4NjAsIDI1ODY1LCAyNTg3MCwgMjU4NzUsIDI1ODgwLCAKLSAgICAyNTg4NSwgMjU4OTAsIDI1ODk1LCAyNTkwMCwgMjU5MDUsIDI1OTEwLCAyNTkxNSwgMjU5MjAsIDI1OTI1LCAyNTkzMCwgCi0gICAgMjU5MzUsIDI1OTQxLCAyNTk0NiwgMjU5NTEsIDI1OTU2LCAyNTk2MSwgMjU5NjYsIDI1OTcxLCAyNTk3NiwgMjU5ODEsIAotICAgIDI1OTg2LCAyNTk5MSwgMjU5OTYsIDI2MDAxLCAyNjAwNiwgMjYwMTEsIDI2MDE2LCAyNjAyMSwgMjYwMjYsIDI2MDMxLCAKLSAgICAyNjAzNiwgMjYwNDEsIDI2MDQ2LCAyNjA1MSwgMjYwNTYsIDI2MDYxLCAyNjA2NiwgMjYwNzEsIDI2MDc2LCAyNjA4MSwgCi0gICAgMjYwODYsIDI2MDkxLCAyNjA5NiwgMjYxMDEsIDI2MTA2LCAyNjExMSwgMjYxMTYsIDI2MTIxLCAyNjEyNiwgMjYxMzEsIAotICAgIDI2MTM3LCAyNjE0MSwgMjYxNDUsIDI2MTQ5LCAyNjE1MywgMjYxNTcsIDI2MTYxLCAyNjE2NSwgMjYxNjksIDI2MTc1LCAKLSAgICAyNjE4MSwgMjYxODcsIDI2MTkzLCAyNjE5OSwgMjYyMDUsIDI2MjExLCAyNjIxOCwgMjYyMjQsIDI2MjI5LCAyNjIzNCwgCi0gICAgMjYyMzksIDI2MjQ0LCAyNjI0OSwgMjYyNTQsIDI2MjU5LCAyNjI2NCwgMjYyNjksIDI2Mjc0LCAyNjI3OSwgMjYyODQsIAotICAgIDI2Mjg5LCAyNjI5NCwgMjYyOTksIDI2MzA0LCAyNjMwOSwgMjYzMTQsIDI2MzE5LCAyNjMyNCwgMjYzMjksIDI2MzM0LCAKLSAgICAyNjMzOSwgMjYzNDQsIDI2MzQ5LCAyNjM1NCwgMjYzNTksIDI2MzY0LCAwLCAwLCAwLCAyNjM3MSwgMjYzODEsIDI2Mzg1LCAKLSAgICAyNjM5MiwgMjYzOTYsIDI2NDAwLCAyNjQwNCwgMjY0MTIsIDI2NDE2LCAyNjQyMSwgMjY0MjYsIDI2NDMxLCAyNjQzNSwgCi0gICAgMjY0NDAsIDI2NDQ1LCAyNjQ0OCwgMjY0NTIsIDI2NDU2LCAyNjQ2NSwgMjY0NjksIDI2NDczLCAyNjQ3OSwgMjY0ODMsIAotICAgIDI2NDg3LCAyNjQ5NSwgMjY0OTksIDI2NTA3LCAyNjUxMywgMjY1MTksIDI2NTI1LCAyNjUzMSwgMjY1NDEsIDI2NTQ3LCAKLSAgICAyNjU1MSwgMjY1NjAsIDI2NTYzLCAyNjU2OSwgMjY1NzMsIDI2NTc5LCAyNjU4NCwgMjY1OTAsIDI2NTk4LCAyNjYwNCwgCi0gICAgMjY2MDksIDI2NjE2LCAyNjYyMSwgMjY2MjUsIDI2NjI5LCAyNjYzOSwgMjY2NDUsIDI2NjQ5LCAyNjY1OSwgMjY2NjUsIAotICAgIDI2NjY5LCAyNjY3MywgMjY2ODAsIDI2Njg4LCAyNjY5NCwgMjY3MDAsIDI2NzA5LCAyNjcxMywgMjY3MTcsIDI2NzIxLCAKLSAgICAyNjcyOSwgMjY3MzYsIDI2NzQwLCAyNjc0NCwgMjY3NDgsIDI2NzUyLCAyNjc1NiwgMjY3NjAsIDI2NzY0LCAyNjc2OCwgCi0gICAgMjY3NzIsIDI2Nzc2LCAyNjc4MCwgMjY3ODUsIDI2NzkwLCAyNjc5NSwgMjY3OTksIDI2ODAzLCAyNjgwNywgMjY4MTEsIAotICAgIDI2ODE1LCAyNjgxOSwgMjY4MjcsIDI2ODM1LCAyNjg0MywgMjY4NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2ODU5LCAKLSAgICAyNjg2MywgMjY4NjcsIDI2ODcxLCAyNjg3NSwgMjY4ODAsIDI2ODg1LCAyNjg5MCwgMjY4OTUsIDI2OTAwLCAyNjkwNCwgCi0gICAgMjY5MDksIDI2OTEzLCAwLCAyNjkxNywgMjY5MjIsIDI2OTI3LCAyNjkzMiwgMjY5MzYsIDI2OTQxLCAyNjk0NiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5NTEsIDI2OTU1LCAyNjk1OSwgMjY5NjMsIDI2OTY3LCAyNjk3MiwgCi0gICAgMjY5NzcsIDI2OTgyLCAyNjk4NywgMjY5OTIsIDI2OTk2LCAyNzAwMSwgMjcwMDUsIDI3MDA5LCAyNzAxNCwgMjcwMTksIAotICAgIDI3MDI0LCAyNzAyOSwgMjcwMzMsIDI3MDM4LCAyNzA0MywgMjcwNDgsIDI3MDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNzA1OSwgMjcwNjMsIDI3MDY3LCAyNzA3MSwgMjcwNzUsIDI3MDgwLCAyNzA4NSwgMjcwOTAsIDI3MDk1LCAyNzEwMCwgCi0gICAgMjcxMDQsIDI3MTA5LCAyNzExMywgMjcxMTcsIDI3MTIyLCAyNzEyNywgMjcxMzIsIDI3MTM3LCAyNzE0MSwgMjcxNDYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MTUxLCAyNzE1NSwgMjcxNTksIDI3MTYzLCAyNzE2NywgCi0gICAgMjcxNzIsIDI3MTc3LCAyNzE4MiwgMjcxODcsIDI3MTkyLCAyNzE5NiwgMjcyMDEsIDI3MjA1LCAwLCAyNzIwOSwgMjcyMTQsIAotICAgIDI3MjE5LCAwLCAyNzIyNCwgMjcyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MjM0LCAyNzIzNywgCi0gICAgMjcyNDEsIDI3MjQ1LCAyNzI0OSwgMjcyNTMsIDI3MjU3LCAyNzI2MSwgMjcyNjUsIDI3MjY5LCAyNzI3MywgMjcyNzcsIAotICAgIDI3MjgxLCAyNzI4NSwgMjcyODksIDI3MjkzLCAyNzI5NywgMjczMDEsIDI3MzA0LCAyNzMwOCwgMjczMTIsIDI3MzE2LCAKLSAgICAyNzMyMCwgMjczMjQsIDI3MzI4LCAyNzMzMiwgMjczMzYsIDI3MzQwLCAyNzM0NCwgMjczNDgsIDI3MzUyLCAyNzM1NiwgCi0gICAgMjczNjAsIDI3MzYzLCAyNzM2NywgMjczNzEsIDI3Mzc3LCAyNzM4MywgMjczODksIDI3Mzk1LCAyNzQwMSwgMjc0MDcsIAotICAgIDI3NDEzLCAyNzQxOSwgMjc0MjUsIDI3NDMxLCAyNzQzNywgMjc0NDMsIDI3NDQ5LCAyNzQ1NSwgMjc0NjQsIDI3NDczLCAKLSAgICAyNzQ3OSwgMjc0ODUsIDI3NDkxLCAyNzQ5NiwgMjc1MDAsIDI3NTA1LCAyNzUxMCwgMjc1MTUsIDI3NTE5LCAyNzUyNCwgCi0gICAgMjc1MjksIDI3NTM0LCAyNzUzOCwgMjc1NDMsIDI3NTQ3LCAyNzU1MiwgMjc1NTcsIDI3NTYyLCAyNzU2NywgMjc1NzEsIAotICAgIDI3NTc1LCAyNzU3OSwgMjc1ODMsIDI3NTg3LCAyNzU5MSwgMjc1OTUsIDI3NTk5LCAyNzYwMywgMjc2MDcsIDI3NjEzLCAKLSAgICAyNzYxNywgMjc2MjEsIDI3NjI1LCAyNzYyOSwgMjc2MzMsIDI3NjQxLCAyNzY0NywgMjc2NTEsIDI3NjU3LCAyNzY2MSwgCi0gICAgMjc2NjcsIDI3NjcxLCAwLCAwLCAyNzY3NSwgMjc2NzksIDI3NjgyLCAyNzY4NSwgMjc2ODgsIDI3NjkxLCAyNzY5NCwgCi0gICAgMjc2OTcsIDI3NzAxLCAyNzcwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3MDgsIDI3NzE2LCAyNzcyNCwgMjc3MzIsIDI3NzQwLCAKLSAgICAyNzc0OCwgMjc3NTYsIDI3NzY0LCAyNzc3MiwgMjc3ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3Nzg4LCAyNzc5MSwgMjc3OTQsIAotICAgIDI3Nzk3LCAyNzgwMiwgMjc4MDUsIDI3ODEwLCAyNzgxNywgMjc4MjUsIDI3ODMwLCAyNzgzNywgMjc4NDAsIDI3ODQ3LCAKLSAgICAyNzg1NCwgMjc4NjEsIDAsIDI3ODY1LCAyNzg2OSwgMjc4NzIsIDI3ODc1LCAyNzg3OCwgMjc4ODEsIDI3ODg0LCAyNzg4NywgCi0gICAgMjc4OTEsIDI3ODk0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNzg5OCwgMjc5MDEsIDI3OTA0LCAyNzkwNywgMjc5MTAsIDI3OTEzLCAKLSAgICAyNzkxNywgMjc5MjEsIDI3OTI1LCAyNzkyOSwgMjc5MzMsIDI3OTM3LCAyNzk0MCwgMjc5NDQsIDI3OTQ4LCAyNzk1MSwgCi0gICAgMjc5NTUsIDI3OTU5LCAyNzk2MywgMjc5NjcsIDI3OTcxLCAyNzk3NSwgMjc5NzksIDI3OTgyLCAyNzk4NiwgMjc5OTAsIAotICAgIDI3OTk0LCAyNzk5NywgMjgwMDEsIDI4MDA1LCAyODAwOSwgMjgwMTMsIDI4MDE3LCAyODAyMSwgMjgwMjUsIDI4MDI5LCAKLSAgICAyODAzNiwgMjgwNDEsIDI4MDQ2LCAyODA1MSwgMjgwNTYsIDI4MDYyLCAyODA2OCwgMjgwNzQsIDI4MDgwLCAyODA4NSwgCi0gICAgMjgwOTEsIDI4MDk3LCAyODEwMiwgMjgxMDgsIDI4MTE0LCAyODEyMCwgMjgxMjYsIDI4MTMyLCAyODEzNywgMjgxNDMsIAotICAgIDI4MTQ4LCAyODE1NCwgMjgxNjAsIDI4MTY2LCAyODE3MiwgMjgxNzgsIDI4MTgzLCAyODE4OCwgMjgxOTQsIDI4MjAwLCAKLSAgICAyODIwNSwgMjgyMTEsIDI4MjE2LCAyODIyMiwgMjgyMjcsIDI4MjMyLCAyODIzOCwgMjgyNDQsIDI4MjUwLCAyODI1NiwgCi0gICAgMjgyNjIsIDI4MjY4LCAyODI3NCwgMjgyODAsIDI4Mjg2LCAyODI5MiwgMjgyOTgsIDI4MzA0LCAyODMwOSwgMjgzMTQsIAotICAgIDI4MzIwLCAyODMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgzMzIsIDI4MzQxLCAyODM1MCwgMjgzNTgsIDI4MzY2LCAKLSAgICAyODM3NiwgMjgzODQsIDI4MzkzLCAyODQwMCwgMjg0MDcsIDI4NDE0LCAyODQyMiwgMjg0MzAsIDI4NDM4LCAyODQ0NiwgCi0gICAgMjg0NTQsIDI4NDYyLCAyODQ3MCwgMjg0NzgsIDI4NDg1LCAyODQ5MywgMjg1MDEsIDI4NTA5LCAyODUxNywgMjg1MjUsIAotICAgIDI4NTM1LCAyODU0NSwgMjg1NTUsIDI4NTY1LCAyODU3NSwgMjg1ODUsIDI4NTk1LCAyODYwNSwgMjg2MTUsIDI4NjI1LCAKLSAgICAyODYzNSwgMjg2NDUsIDI4NjU1LCAyODY2NSwgMjg2NzMsIDI4NjgxLCAyODY5MSwgMjg2OTksIDAsIDAsIDAsIDAsIDAsIAotICAgIDI4NzA5LCAyODcxMywgMjg3MTcsIDI4NzIxLCAyODcyNSwgMjg3MjksIDI4NzMzLCAyODczNywgMjg3NDEsIDI4NzQ1LCAKLSAgICAyODc0OSwgMjg3NTMsIDI4NzU3LCAyODc2MSwgMjg3NjUsIDI4NzY5LCAyODc3MywgMjg3NzcsIDI4NzgxLCAyODc4NSwgCi0gICAgMjg3ODksIDI4NzkzLCAyODc5NywgMjg4MDEsIDI4ODA3LCAyODgxMSwgMjg4MTcsIDI4ODIxLCAyODgyNywgMjg4MzEsIAotICAgIDI4ODM3LCAyODg0MSwgMjg4NDUsIDI4ODQ5LCAyODg1MywgMjg4NTcsIDI4ODYxLCAyODg2NywgMjg4NzMsIDI4ODc5LCAKLSAgICAyODg4NSwgMjg4OTEsIDI4ODk3LCAyODkwMiwgMjg5MDgsIDI4OTE0LCAyODkyMCwgMjg5MjYsIDI4OTMzLCAyODkzOSwgCi0gICAgMjg5NDQsIDI4OTQ5LCAyODk1MywgMjg5NTcsIDI4OTYxLCAyODk2NSwgMjg5NjksIDI4OTczLCAyODk3NywgMjg5ODMsIAotICAgIDI4OTg5LCAyODk5NSwgMjkwMDAsIDI5MDA3LCAyOTAxMiwgMjkwMTcsIDI5MDIzLCAyOTAyOCwgMjkwMzUsIDI5MDQyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTA0OCwgMjkwNTQsIDI5MDU4LCAyOTA2MywgMjkwNjgsIDI5MDczLCAKLSAgICAyOTA3OCwgMjkwODMsIDI5MDg4LCAyOTA5MywgMjkwOTgsIDI5MTAzLCAyOTEwOCwgMjkxMTMsIDI5MTE4LCAyOTEyMywgCi0gICAgMjkxMjgsIDI5MTMyLCAyOTEzNywgMjkxNDIsIDI5MTQ3LCAyOTE1MSwgMjkxNTUsIDI5MTYwLCAyOTE2NSwgMjkxNzAsIAotICAgIDI5MTc1LCAyOTE4MCwgMjkxODUsIDI5MTg5LCAyOTE5NCwgMCwgMjkxOTksIDI5MjA0LCAyOTIwOSwgMjkyMTQsIDI5MjIwLCAKLSAgICAyOTIyNiwgMjkyMzIsIDI5MjM4LCAyOTI0MywgMjkyNDgsIDI5MjU0LCAyOTI2MSwgMCwgMCwgMCwgMCwgMjkyNjgsIAotICAgIDI5MjczLCAyOTI3OSwgMjkyODUsIDI5MjkxLCAyOTI5NywgMjkzMDIsIDI5MzA3LCAyOTMxMywgMjkzMTksIDI5MzI0LCAKLSAgICAyOTMyOSwgMCwgMCwgMCwgMCwgMjkzMzQsIDAsIDAsIDAsIDI5MzM5LCAyOTM0NCwgMjkzNDksIDI5MzU0LCAyOTM1OCwgCi0gICAgMjkzNjIsIDI5MzY2LCAyOTM3MCwgMjkzNzQsIDI5Mzc4LCAyOTM4MywgMjkzODcsIDI5MzkyLCAyOTM5NywgMjk0MDMsIAotICAgIDI5NDA5LCAyOTQxNSwgMjk0MjEsIDI5NDI2LCAyOTQzMiwgMjk0MzgsIDI5NDQ0LCAyOTQ0OSwgMjk0NTUsIDI5NDYwLCAKLSAgICAyOTQ2NiwgMjk0NzIsIDI5NDc3LCAyOTQ4MywgMjk0ODksIDI5NDk1LCAyOTUwMSwgMjk1MDYsIDI5NTExLCAyOTUxNywgCi0gICAgMjk1MjMsIDI5NTI4LCAyOTUzNCwgMjk1MzksIDI5NTQ1LCAyOTU1MCwgMjk1NTYsIDAsIDAsIDI5NTYyLCAyOTU2OCwgCi0gICAgMjk1NzQsIDI5NTgwLCAyOTU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk1OTIsIDI5NjAxLCAKLSAgICAyOTYxMCwgMjk2MTgsIDI5NjI3LCAyOTYzNiwgMjk2NDQsIDI5NjUzLCAyOTY2MiwgMjk2NzEsIDI5NjgwLCAyOTY4OCwgCi0gICAgMjk2OTcsIDI5NzA2LCAyOTcxNCwgMjk3MjMsIDI5NzMyLCAyOTc0MSwgMjk3NTAsIDI5NzU5LCAyOTc2OCwgMjk3NzYsIAotICAgIDI5Nzg1LCAyOTc5MywgMjk4MDEsIDI5ODEwLCAyOTgxOCwgMjk4MjcsIDI5ODM2LCAyOTg0NSwgMjk4NTQsIDI5ODYzLCAKLSAgICAyOTg3MiwgMjk4ODAsIDI5ODg5LCAyOTg5OCwgMjk5MDYsIDI5OTE1LCAyOTkyNCwgMjk5MzMsIDI5OTQyLCAyOTk1MSwgCi0gICAgMjk5NjAsIDI5OTY5LCAwLCAwLCAwLCAwLCAyOTk3OCwgMjk5ODgsIDI5OTk3LCAzMDAwNiwgMzAwMTQsIDMwMDIzLCAKLSAgICAzMDAzMSwgMzAwNDAsIDMwMDQ4LCAzMDA1NywgMzAwNjYsIDMwMDc1LCAzMDA4NCwgMzAwOTMsIDMwMTAyLCAzMDExMSwgCi0gICAgMzAxMjAsIDMwMTI5LCAzMDEzOCwgMzAxNDcsIDMwMTU2LCAzMDE2NSwgMzAxNzQsIDMwMTgzLCAzMDE5MiwgMzAyMDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMwMjA4LCAzMDIxNiwgMzAyMjMsIDMwMjMwLCAzMDIzNywgMzAyNDQsIDMwMjUxLCAzMDI1OCwgCi0gICAgMzAyNjYsIDMwMjczLCAzMDI4MSwgMCwgMCwgMCwgMzAyODksIDMwMjk3LCAzMDMwNSwgMzAzMDksIDMwMzE1LCAzMDMyMSwgCi0gICAgMzAzMjcsIDMwMzMzLCAzMDMzOSwgMzAzNDUsIDMwMzUxLCAzMDM1NywgMzAzNjMsIDMwMzY5LCAzMDM3NSwgMzAzODEsIAotICAgIDMwMzg3LCAzMDM5MywgMzAzOTksIDMwNDAzLCAzMDQwOSwgMzA0MTUsIDMwNDIxLCAzMDQyNywgMzA0MzMsIDMwNDM5LCAKLSAgICAzMDQ0NSwgMzA0NTEsIDMwNDU3LCAzMDQ2MywgMzA0NjksIDMwNDc1LCAzMDQ4MSwgMzA0ODcsIDMwNDkzLCAzMDQ5NywgCi0gICAgMzA1MDIsIDMwNTA3LCAzMDUxMiwgMzA1MTYsIDMwNTIxLCAzMDUyNSwgMzA1MzAsIDMwNTM1LCAzMDU0MCwgMzA1NDUsIAotICAgIDMwNTUwLCAzMDU1NSwgMzA1NjAsIDMwNTY1LCAzMDU3MCwgMzA1NzQsIDMwNTc5LCAzMDU4NCwgMzA1ODksIDMwNTk0LCAKLSAgICAzMDU5OCwgMzA2MDIsIDMwNjA3LCAzMDYxMiwgMzA2MTcsIDMwNjIyLCAwLCAwLCAzMDYyOCwgMzA2MzIsIDMwNjM5LCAKLSAgICAzMDY0NCwgMzA2NTAsIDMwNjU2LCAzMDY2MSwgMzA2NjcsIDMwNjczLCAzMDY3OCwgMzA2ODQsIDMwNjkwLCAzMDY5NiwgCi0gICAgMzA3MDIsIDMwNzA4LCAzMDcxMywgMzA3MTgsIDMwNzI0LCAzMDcyOSwgMzA3MzUsIDMwNzQwLCAzMDc0NiwgMzA3NTIsIAotICAgIDMwNzU4LCAzMDc2NCwgMzA3NjksIDMwNzc0LCAzMDc3OSwgMzA3ODUsIDMwNzkxLCAzMDc5NiwgMzA4MDIsIDMwODA4LCAKLSAgICAzMDgxMiwgMzA4MTcsIDMwODIyLCAzMDgyNywgMzA4MzIsIDMwODM3LCAzMDg0MiwgMzA4NDcsIDMwODUzLCAzMDg1OSwgCi0gICAgMzA4NjUsIDMwODcwLCAzMDg3NSwgMzA4NzksIDMwODg0LCAzMDg4OCwgMzA4OTMsIDMwODk3LCAzMDkwMiwgMzA5MDcsIAotICAgIDMwOTEyLCAzMDkxNywgMzA5MjQsIDMwOTMxLCAzMDkzOCwgMzA5NDgsIDMwOTU3LCAzMDk2NCwgMzA5NzAsIDMwOTgxLCAKLSAgICAzMDk4NiwgMzA5OTIsIDAsIDMwOTk4LCAzMTAwMywgMzEwMDgsIDMxMDE2LCAzMTAyMiwgMzEwMzAsIDMxMDM1LCAzMTA0MSwgCi0gICAgMzEwNDcsIDMxMDUzLCAzMTA1OCwgMzEwNjQsIDMxMDY5LCAzMTA3NiwgMzEwODIsIDMxMDg3LCAzMTA5MywgMzEwOTksIAotICAgIDMxMTA1LCAzMTExMiwgMzExMTksIDMxMTI2LCAzMTEzMSwgMzExMzYsIDMxMTQzLCAzMTE1MCwgMzExNTcsIDMxMTY0LCAKLSAgICAzMTE3MSwgMCwgMCwgMzExNzgsIDMxMTg1LCAzMTE5MiwgMzExOTgsIDMxMjA0LCAzMTIxMCwgMzEyMTYsIDMxMjIyLCAKLSAgICAzMTIyOCwgMzEyMzUsIDMxMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTI0OCwgMzEyNTQsIDMxMjU5LCAzMTI2NCwgMzEyNjksIAotICAgIDMxMjc0LCAzMTI3OSwgMzEyODQsIDMxMjkwLCAzMTI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzEzMDEsIDMxMzA2LCAzMTMxMSwgCi0gICAgMzEzMTYsIDMxMzIxLCAzMTMyNiwgMzEzMzEsIDMxMzQwLCAzMTM0NywgMzEzNTIsIDMxMzU3LCAzMTM2MiwgMzEzNjcsIAotICAgIDMxMzcyLCAwLCAwLCAzMTM3NywgMzEzODQsIDMxMzg3LCAzMTM5MCwgMzEzOTMsIDMxMzk4LCAzMTQwMiwgMzE0MDgsIAotICAgIDMxNDEyLCAzMTQxNywgMzE0MjQsIDMxNDMyLCAzMTQzNiwgMzE0NDEsIDMxNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDA4MCwgMzQwODgsIDM0MDk2LCAzNDEwNCwgCisgICAgMzQxMTIsIDM0MTIyLCAzNDEzMiwgMzQxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MTUyLCAzNDE1NywgMzQxNjIsIAorICAgIDM0MTY3LCAzNDE3MiwgMzQxODEsIDM0MTkyLCAzNDIwMSwgMzQyMTIsIDM0MjE4LCAzNDIzMSwgMzQyMzcsIDM0MjQ0LCAKKyAgICAzNDI1MSwgMzQyNTYsIDM0MjYyLCAzNDI2OCwgMzQyNzksIDM0Mjg4LCAzNDI5NSwgMzQzMDIsIDM0MzExLCAzNDMxOCwgCisgICAgMzQzMjcsIDM0MzM3LCAzNDM0NywgMzQzNTQsIDM0MzYxLCAzNDM2OCwgMzQzNzgsIDM0MzgzLCAzNDM5MSwgMzQzOTcsIAorICAgIDM0NDA1LCAzNDQxNCwgMzQ0MTksIDM0NDI2LCAzNDQzMiwgMzQ0MzcsIDAsIDM0NDQyLCAzNDQ0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzQ0NTUsIDM0NDYwLCAzNDQ2NiwgMzQ0NzMsIDM0NDgxLCAzNDQ4NywgMzQ0OTMsIDM0NDk5LCAzNDUwNCwgMzQ1MTEsIAorICAgIDM0NTE3LCAzNDUyMywgMzQ1MjksIDM0NTM3LCAzNDU0MywgMzQ1NTEsIDM0NTU2LCAzNDU2MiwgMzQ1NjgsIDM0NTc1LCAKKyAgICAzNDU4MywgMzQ1OTAsIDM0NTk2LCAzNDYwMywgMzQ2MTAsIDM0NjE2LCAzNDYyMywgMzQ2MzAsIDM0NjM2LCAzNDY0MSwgCisgICAgMzQ2NDcsIDM0NjU1LCAzNDY2NCwgMzQ2NzAsIDM0Njc2LCAzNDY4MiwgMzQ2ODgsIDM0Njk2LCAzNDcwMCwgMzQ3MDYsIAorICAgIDM0NzEyLCAzNDcxOCwgMzQ3MjQsIDM0NzMwLCAzNDczNiwgMzQ3NDAsIDM0NzQ1LCAzNDc1MCwgMzQ3NTcsIDM0NzYyLCAKKyAgICAzNDc2NiwgMzQ3NzIsIDM0Nzc3LCAzNDc4MiwgMzQ3ODYsIDM0NzkxLCAzNDc5NiwgMzQ4MDAsIDM0ODA1LCAzNDgxMCwgCisgICAgMzQ4MTcsIDM0ODIxLCAzNDgyNiwgMzQ4MzEsIDM0ODM1LCAzNDg0MCwgMzQ4NDQsIDM0ODQ5LCAzNDg1MywgMzQ4NTksIAorICAgIDM0ODY0LCAzNDg3MSwgMzQ4NzYsIDM0ODgxLCAzNDg4NSwgMzQ4OTAsIDM0ODk1LCAzNDkwMiwgMzQ5MDcsIDM0OTEzLCAKKyAgICAzNDkxOCwgMzQ5MjMsIDM0OTI4LCAzNDkzMiwgMzQ5MzcsIDM0OTQ0LCAzNDk1MSwgMzQ5NTYsIDM0OTYxLCAzNDk2NSwgCisgICAgMzQ5NzEsIDM0OTc4LCAzNDk4MywgMzQ5ODgsIDM0OTkzLCAzNDk5OSwgMzUwMDQsIDM1MDEwLCAzNTAxNSwgMzUwMjEsIAorICAgIDM1MDI3LCAzNTAzMywgMzUwNDAsIDM1MDQ3LCAzNTA1NCwgMzUwNjEsIDM1MDY4LCAzNTA3NSwgMzUwODAsIDM1MDg4LCAKKyAgICAzNTA5NywgMzUxMDYsIDM1MTE1LCAzNTEyNCwgMzUxMzMsIDM1MTQyLCAzNTE1NCwgMzUxNjMsIDM1MTcyLCAzNTE4MSwgCisgICAgMzUxODgsIDM1MTkzLCAzNTIwMCwgMzUyMDgsIDM1MjE2LCAzNTIyMywgMzUyMzAsIDM1MjM3LCAzNTI0NCwgMzUyNTIsIAorICAgIDM1MjYxLCAzNTI3MCwgMzUyNzksIDM1Mjg4LCAzNTI5NywgMzUzMDYsIDM1MzE1LCAzNTMyNCwgMzUzMzMsIDM1MzQyLCAKKyAgICAzNTM1MSwgMzUzNjAsIDM1MzY5LCAzNTM3OCwgMzUzODYsIDM1Mzk1LCAzNTQwNiwgMzU0MTQsIDM1NDIzLCAzNTQzNCwgCisgICAgMzU0NDMsIDM1NDUyLCAzNTQ2MSwgMzU0NzAsIDM1NDc4LCAzNTQ4NywgMzU0OTQsIDM1NDk5LCAzNTUwNywgMzU1MTIsIAorICAgIDM1NTE5LCAzNTUyNCwgMzU1MzMsIDM1NTM5LCAzNTU0NiwgMzU1NTMsIDM1NTU4LCAzNTU2MywgMzU1NzEsIDM1NTc5LCAKKyAgICAzNTU4OCwgMzU1OTcsIDM1NjAyLCAzNTYwOSwgMzU2MjAsIDM1NjI4LCAzNTYzNywgMzU2NDMsIDM1NjQ5LCAzNTY1NCwgCisgICAgMzU2NjEsIDM1NjY2LCAzNTY3NSwgMzU2ODAsIDM1Njg1LCAzNTY5MCwgMzU2OTcsIDM1NzA0LCAzNTcwOSwgMzU3MTgsIAorICAgIDM1NzI2LCAzNTczMSwgMzU3MzYsIDM1NzQzLCAzNTc1MCwgMzU3NTQsIDM1NzU4LCAzNTc2MSwgMzU3NjQsIDM1NzY3LCAKKyAgICAzNTc3MCwgMzU3NzMsIDM1Nzc2LCAzNTc4MywgMzU3ODYsIDM1Nzg5LCAzNTc5NCwgMzU3OTgsIDM1ODAyLCAzNTgwNiwgCisgICAgMzU4MTAsIDM1ODE0LCAzNTgyMywgMzU4MjksIDM1ODM1LCAzNTg0MSwgMzU4NDksIDM1ODU3LCAzNTg2MywgMzU4NjksIAorICAgIDM1ODc2LCAzNTg4MiwgMzU4ODcsIDM1ODkzLCAzNTkwMCwgMzU5MDYsIDM1OTEzLCAzNTkxOSwgMzU5MjcsIDM1OTMzLCAKKyAgICAzNTk0MCwgMzU5NDYsIDM1OTUyLCAzNTk1OCwgMzU5NjQsIDM1OTcwLCAzNTk3NiwgMzU5ODcsIDM1OTk3LCAzNjAwMywgCisgICAgMzYwMDksIDM2MDE5LCAzNjAyNSwgMzYwMzMsIDM2MDQxLCAzNjA0OSwgMCwgMCwgMCwgMCwgMCwgMzYwNTQsIDM2MDU4LCAKKyAgICAzNjA2NSwgMzYwNzIsIDM2MDc3LCAzNjA4NiwgMzYwOTQsIDM2MTAyLCAzNjEwOSwgMzYxMTYsIDM2MTIzLCAzNjEzMCwgCisgICAgMzYxMzgsIDM2MTQ2LCAzNjE1NiwgMzYxNjYsIDM2MTc0LCAzNjE4MiwgMzYxOTAsIDM2MTk4LCAzNjIwNywgMzYyMTYsIAorICAgIDM2MjI0LCAzNjIzMiwgMzYyNDEsIDM2MjUwLCAzNjI2MCwgMzYyNzAsIDM2Mjc5LCAzNjI4OCwgMzYyOTYsIDM2MzA0LCAKKyAgICAzNjMxMiwgMzYzMjAsIDM2MzMwLCAzNjM0MCwgMzYzNDgsIDM2MzU2LCAzNjM2NCwgMzYzNzIsIDM2MzgwLCAzNjM4OCwgCisgICAgMzYzOTYsIDM2NDA0LCAzNjQxMiwgMzY0MjAsIDM2NDI4LCAzNjQzNiwgMzY0NDUsIDM2NDU0LCAzNjQ2MywgMzY0NzIsIAorICAgIDM2NDgyLCAzNjQ5MiwgMzY0OTksIDM2NTA2LCAzNjUxNCwgMzY1MjIsIDM2NTMxLCAzNjU0MCwgMzY1NDgsIDM2NTU2LCAKKyAgICAzNjU2OCwgMzY1ODAsIDM2NTg5LCAzNjU5OCwgMzY2MDcsIDM2NjE2LCAzNjYyMywgMzY2MzAsIDM2NjM4LCAzNjY0NiwgCisgICAgMzY2NTQsIDM2NjYyLCAzNjY3MCwgMzY2NzgsIDM2Njg2LCAzNjY5NCwgMzY3MDMsIDM2NzEyLCAzNjcyMSwgMzY3MzAsIAorICAgIDM2NzM5LCAzNjc0OCwgMzY3NTgsIDM2NzY4LCAzNjc3OCwgMzY3ODgsIDM2Nzk3LCAzNjgwNiwgMzY4MTMsIDM2ODIwLCAKKyAgICAzNjgyOCwgMzY4MzYsIDM2ODQ0LCAzNjg1MiwgMzY4NjAsIDM2ODY4LCAzNjg4MCwgMzY4OTIsIDM2OTAxLCAzNjkxMCwgCisgICAgMzY5MTgsIDM2OTI2LCAzNjkzNCwgMzY5NDIsIDM2OTUzLCAzNjk2NCwgMzY5NzUsIDM2OTg2LCAzNjk5OCwgMzcwMTAsIAorICAgIDM3MDE4LCAzNzAyNiwgMzcwMzQsIDM3MDQyLCAzNzA1MSwgMzcwNjAsIDM3MDY5LCAzNzA3OCwgMzcwODYsIDM3MDk0LCAKKyAgICAzNzEwMiwgMzcxMTAsIDM3MTE4LCAzNzEyNiwgMzcxMzUsIDM3MTQ0LCAzNzE1NCwgMzcxNjQsIDM3MTcyLCAzNzE4MCwgCisgICAgMzcxODgsIDM3MTk2LCAzNzIwNCwgMzcyMTIsIDM3MjE5LCAzNzIyNiwgMzcyMzQsIDM3MjQyLCAzNzI1MCwgMzcyNTgsIAorICAgIDM3MjY2LCAzNzI3NCwgMzcyODIsIDM3MjkwLCAzNzI5OCwgMzczMDYsIDM3MzE0LCAzNzMyMiwgMzczMzAsIDM3MzM4LCAKKyAgICAzNzM0NiwgMzczNTQsIDM3MzYzLCAzNzM3MiwgMzczODEsIDM3Mzg5LCAzNzM5OCwgMzc0MDcsIDM3NDE2LCAzNzQyNSwgCisgICAgMzc0MzUsIDM3NDQ0LCAzNzQ1MSwgMzc0NTYsIDM3NDYzLCAzNzQ3MCwgMzc0NzgsIDM3NDg2LCAzNzQ5NSwgMzc1MDQsIAorICAgIDM3NTE0LCAzNzUyNCwgMzc1MzUsIDM3NTQ2LCAzNzU1NiwgMzc1NjYsIDM3NTc2LCAzNzU4NiwgMzc1OTUsIDM3NjA0LCAKKyAgICAzNzYxNCwgMzc2MjQsIDM3NjM1LCAzNzY0NiwgMzc2NTYsIDM3NjY2LCAzNzY3NiwgMzc2ODYsIDM3NjkzLCAzNzcwMCwgCisgICAgMzc3MDgsIDM3NzE2LCAzNzcyMywgMzc3MzAsIDM3NzM5LCAzNzc0OCwgMzc3NTgsIDM3NzY4LCAzNzc3OSwgMzc3OTAsIAorICAgIDM3ODAwLCAzNzgxMCwgMzc4MjAsIDM3ODMwLCAzNzgzOSwgMzc4NDgsIDM3ODU2LCAzNzg2NCwgMzc4NzEsIDM3ODc4LCAKKyAgICAzNzg4NiwgMzc4OTQsIDM3OTAzLCAzNzkxMiwgMzc5MjIsIDM3OTMyLCAzNzk0MywgMzc5NTQsIDM3OTY0LCAzNzk3NCwgCisgICAgMzc5ODQsIDM3OTk0LCAzODAwMywgMzgwMTIsIDM4MDIyLCAzODAzMiwgMzgwNDMsIDM4MDU0LCAzODA2NCwgMzgwNzQsIAorICAgIDM4MDg0LCAzODA5NCwgMzgxMDEsIDM4MTA4LCAzODExNiwgMzgxMjQsIDM4MTMzLCAzODE0MiwgMzgxNTIsIDM4MTYyLCAKKyAgICAzODE3MywgMzgxODQsIDM4MTk0LCAzODIwNCwgMzgyMTQsIDM4MjI0LCAzODIzMiwgMzgyNDAsIDM4MjQ4LCAzODI1NiwgCisgICAgMzgyNjUsIDM4Mjc0LCAzODI4MiwgMzgyOTAsIDM4Mjk3LCAzODMwNCwgMzgzMTEsIDM4MzE4LCAzODMyNiwgMzgzMzQsIAorICAgIDM4MzQyLCAzODM1MCwgMzgzNjEsIDM4MzcyLCAzODM4MywgMzgzOTQsIDM4NDA1LCAzODQxNiwgMzg0MjQsIDM4NDMyLCAKKyAgICAzODQ0MywgMzg0NTQsIDM4NDY1LCAzODQ3NiwgMzg0ODcsIDM4NDk4LCAzODUwNiwgMzg1MTQsIDM4NTI1LCAzODUzNiwgCisgICAgMzg1NDcsIDAsIDAsIDM4NTU4LCAzODU2NiwgMzg1NzQsIDM4NTg1LCAzODU5NiwgMzg2MDcsIDAsIDAsIDM4NjE4LCAKKyAgICAzODYyNiwgMzg2MzQsIDM4NjQ1LCAzODY1NiwgMzg2NjcsIDM4Njc4LCAzODY4OSwgMzg3MDAsIDM4NzA4LCAzODcxNiwgCisgICAgMzg3MjcsIDM4NzM4LCAzODc0OSwgMzg3NjAsIDM4NzcxLCAzODc4MiwgMzg3OTAsIDM4Nzk4LCAzODgwOSwgMzg4MjAsIAorICAgIDM4ODMxLCAzODg0MiwgMzg4NTMsIDM4ODY0LCAzODg3MiwgMzg4ODAsIDM4ODkxLCAzODkwMiwgMzg5MTMsIDM4OTI0LCAKKyAgICAzODkzNSwgMzg5NDYsIDM4OTU0LCAzODk2MiwgMzg5NzMsIDM4OTg0LCAzODk5NSwgMCwgMCwgMzkwMDYsIDM5MDE0LCAKKyAgICAzOTAyMiwgMzkwMzMsIDM5MDQ0LCAzOTA1NSwgMCwgMCwgMzkwNjYsIDM5MDc0LCAzOTA4MiwgMzkwOTMsIDM5MTA0LCAKKyAgICAzOTExNSwgMzkxMjYsIDM5MTM3LCAwLCAzOTE0OCwgMCwgMzkxNTYsIDAsIDM5MTY3LCAwLCAzOTE3OCwgMzkxODksIAorICAgIDM5MTk3LCAzOTIwNSwgMzkyMTYsIDM5MjI3LCAzOTIzOCwgMzkyNDksIDM5MjYwLCAzOTI3MSwgMzkyNzksIDM5Mjg3LCAKKyAgICAzOTI5OCwgMzkzMDksIDM5MzIwLCAzOTMzMSwgMzkzNDIsIDM5MzUzLCAzOTM2MSwgMzkzNjksIDM5Mzc3LCAzOTM4NSwgCisgICAgMzkzOTMsIDM5NDAxLCAzOTQwOSwgMzk0MTcsIDM5NDI1LCAzOTQzMywgMzk0NDEsIDM5NDQ5LCAzOTQ1NywgMCwgMCwgCisgICAgMzk0NjUsIDM5NDc2LCAzOTQ4NywgMzk1MDEsIDM5NTE1LCAzOTUyOSwgMzk1NDMsIDM5NTU3LCAzOTU3MSwgMzk1ODIsIAorICAgIDM5NTkzLCAzOTYwNywgMzk2MjEsIDM5NjM1LCAzOTY0OSwgMzk2NjMsIDM5Njc3LCAzOTY4OCwgMzk2OTksIDM5NzEzLCAKKyAgICAzOTcyNywgMzk3NDEsIDM5NzU1LCAzOTc2OSwgMzk3ODMsIDM5Nzk0LCAzOTgwNSwgMzk4MTksIDM5ODMzLCAzOTg0NywgCisgICAgMzk4NjEsIDM5ODc1LCAzOTg4OSwgMzk5MDAsIDM5OTExLCAzOTkyNSwgMzk5MzksIDM5OTUzLCAzOTk2NywgMzk5ODEsIAorICAgIDM5OTk1LCA0MDAwNiwgNDAwMTcsIDQwMDMxLCA0MDA0NSwgNDAwNTksIDQwMDczLCA0MDA4NywgNDAxMDEsIDQwMTA5LCAKKyAgICA0MDExNywgNDAxMjgsIDQwMTM2LCAwLCA0MDE0NywgNDAxNTUsIDQwMTY2LCA0MDE3NCwgNDAxODIsIDQwMTkwLCA0MDE5OCwgCisgICAgNDAyMDYsIDQwMjA5LCA0MDIxMiwgNDAyMTUsIDQwMjE4LCA0MDIyNCwgNDAyMzUsIDQwMjQzLCAwLCA0MDI1NCwgNDAyNjIsIAorICAgIDQwMjczLCA0MDI4MSwgNDAyODksIDQwMjk3LCA0MDMwNSwgNDAzMTMsIDQwMzE5LCA0MDMyNSwgNDAzMzEsIDQwMzM5LCAKKyAgICA0MDM0NywgNDAzNTgsIDAsIDAsIDQwMzY5LCA0MDM3NywgNDAzODgsIDQwMzk2LCA0MDQwNCwgNDA0MTIsIDAsIDQwNDIwLCAKKyAgICA0MDQyNiwgNDA0MzIsIDQwNDM4LCA0MDQ0NiwgNDA0NTQsIDQwNDY1LCA0MDQ3NiwgNDA0ODQsIDQwNDkyLCA0MDUwMCwgCisgICAgNDA1MTEsIDQwNTE5LCA0MDUyNywgNDA1MzUsIDQwNTQzLCA0MDU1MSwgNDA1NTcsIDQwNTYzLCAwLCAwLCA0MDU2NiwgCisgICAgNDA1NzcsIDQwNTg1LCAwLCA0MDU5NiwgNDA2MDQsIDQwNjE1LCA0MDYyMywgNDA2MzEsIDQwNjM5LCA0MDY0NywgNDA2NTUsIAorICAgIDQwNjU4LCAwLCA0MDY2MSwgNDA2NjUsIDQwNjY5LCA0MDY3MywgNDA2NzcsIDQwNjgxLCA0MDY4NSwgNDA2ODksIDQwNjkzLCAKKyAgICA0MDY5NywgNDA3MDEsIDQwNzA1LCA0MDcxMSwgNDA3MTcsIDQwNzIzLCA0MDcyNiwgNDA3MjksIDQwNzMxLCA0MDczNSwgCisgICAgNDA3MzksIDQwNzQzLCA0MDc0NywgNDA3NTAsIDQwNzU0LCA0MDc1OCwgNDA3NjQsIDQwNzcwLCA0MDc3NywgNDA3ODQsIAorICAgIDQwNzg5LCA0MDc5NCwgNDA4MDAsIDQwODA2LCA0MDgwOCwgNDA4MTEsIDQwODEzLCA0MDgxNywgNDA4MjEsIDQwODI1LCAKKyAgICA0MDgyOSwgNDA4MzMsIDQwODM3LCA0MDg0MSwgNDA4NDUsIDQwODQ5LCA0MDg1NSwgNDA4NTksIDQwODYzLCA0MDg2OSwgCisgICAgNDA4NzQsIDQwODgxLCA0MDg4MywgNDA4ODYsIDQwODkwLCA0MDg5NCwgNDA4OTksIDQwOTA1LCA0MDkwNywgNDA5MTYsIAorICAgIDQwOTI1LCA0MDkyOCwgNDA5MzIsIDQwOTM0LCA0MDkzNiwgNDA5MzgsIDQwOTQxLCA0MDk0NywgNDA5NDksIDQwOTUzLCAKKyAgICA0MDk1NywgNDA5NjQsIDQwOTcxLCA0MDk3NSwgNDA5ODAsIDQwOTg1LCA0MDk5MCwgNDA5OTUsIDQwOTk5LCA0MTAwMywgCisgICAgNDEwMDYsIDQxMDEwLCA0MTAxNCwgNDEwMjEsIDQxMDI2LCA0MTAzMCwgNDEwMzQsIDQxMDM5LCA0MTA0MywgNDEwNDcsIAorICAgIDQxMDUyLCA0MTA1NywgNDEwNjEsIDQxMDY1LCA0MTA2OSwgNDEwNzEsIDQxMDc2LCA0MTA4MSwgNDEwODUsIDQxMDg5LCAKKyAgICA0MTA5MywgNDEwOTcsIDAsIDQxMTAxLCA0MTEwNSwgNDExMDksIDQxMTE1LCA0MTEyMSwgNDExMjcsIDQxMTMzLCA0MTE0MCwgCisgICAgNDExNDcsIDQxMTUyLCA0MTE1NywgNDExNjEsIDAsIDAsIDQxMTY3LCA0MTE3MCwgNDExNzMsIDQxMTc2LCA0MTE4MCwgCisgICAgNDExODMsIDQxMTg3LCA0MTE5MSwgNDExOTUsIDQxMjAwLCA0MTIwNSwgNDEyMTAsIDQxMjE3LCA0MTIyMSwgNDEyMjQsIAorICAgIDQxMjI3LCA0MTIzMCwgNDEyMzMsIDQxMjM2LCA0MTIzOSwgNDEyNDMsIDQxMjQ2LCA0MTI1MCwgNDEyNTQsIDQxMjU4LCAKKyAgICA0MTI2MywgNDEyNjgsIDAsIDQxMjczLCA0MTI3OSwgNDEyODUsIDQxMjkxLCA0MTI5OCwgNDEzMDUsIDQxMzEyLCA0MTMxOSwgCisgICAgNDEzMjUsIDQxMzMyLCA0MTMzOSwgNDEzNDYsIDQxMzUzLCAwLCAwLCAwLCA0MTM2MCwgNDEzNjMsIDQxMzY2LCA0MTM2OSwgCisgICAgNDEzNzQsIDQxMzc3LCA0MTM4MCwgNDEzODMsIDQxMzg2LCA0MTM4OSwgNDEzOTIsIDQxMzk3LCA0MTQwMCwgNDE0MDMsIAorICAgIDQxNDA2LCA0MTQwOSwgNDE0MTIsIDQxNDE3LCA0MTQyMCwgNDE0MjMsIDQxNDI2LCA0MTQyOSwgNDE0MzIsIDQxNDM3LCAKKyAgICA0MTQ0MCwgNDE0NDMsIDQxNDQ4LCA0MTQ1MywgNDE0NTcsIDQxNDYwLCA0MTQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE0NjYsIDQxNDcxLCA0MTQ3NiwgNDE0ODMsIDQxNDkxLCA0MTQ5NiwgCisgICAgNDE1MDEsIDQxNTA1LCA0MTUwOSwgNDE1MTQsIDQxNTIxLCA0MTUyOCwgNDE1MzIsIDQxNTM3LCA0MTU0MiwgNDE1NDcsIAorICAgIDQxNTUyLCA0MTU1OSwgNDE1NjQsIDQxNTY5LCA0MTU3NCwgNDE1ODMsIDQxNTkwLCA0MTU5NywgNDE2MDEsIDQxNjA2LCAKKyAgICA0MTYxMiwgNDE2MTcsIDQxNjI0LCA0MTYzMiwgNDE2NDAsIDQxNjQ0LCA0MTY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE2NTIsIDQxNjU2LCA0MTY2NCwgNDE2NjgsIDQxNjcyLCA0MTY3NywgNDE2ODEsIAorICAgIDQxNjg1LCA0MTY4OSwgNDE2OTEsIDQxNjk1LCA0MTY5OSwgNDE3MDMsIDQxNzA4LCA0MTcxMiwgNDE3MTYsIDQxNzI0LCAKKyAgICA0MTcyNywgNDE3MzEsIDQxNzM0LCA0MTczNywgNDE3NDMsIDQxNzQ3LCA0MTc1MCwgNDE3NTYsIDQxNzYwLCA0MTc2NCwgCisgICAgNDE3NjgsIDQxNzcxLCA0MTc3NSwgNDE3NzgsIDQxNzgyLCA0MTc4NCwgNDE3ODcsIDQxNzkwLCA0MTc5NCwgNDE3OTYsIAorICAgIDQxODAwLCA0MTgwMywgNDE4MDYsIDQxODExLCA0MTgxNiwgNDE4MjMsIDQxODI2LCA0MTgyOSwgNDE4MzMsIDQxODM4LCAKKyAgICA0MTg0MSwgNDE4NDQsIDQxODQ3LCA0MTg1MSwgNDE4NTYsIDQxODYwLCA0MTg2MywgNDE4NjUsIDQxODY4LCA0MTg3MSwgCisgICAgNDE4NzQsIDQxODc4LCA0MTg4MywgNDE4ODYsIDQxODkwLCA0MTg5NCwgNDE4OTgsIDQxOTAyLCA0MTkwNywgNDE5MTMsIAorICAgIDQxOTE4LCA0MTkyMywgNDE5MjksIDQxOTM0LCA0MTkzOSwgNDE5NDMsIDQxOTQ3LCA0MTk1MiwgNDE5NTYsIDQxOTYwLCAKKyAgICA0MTk2MywgNDE5NjUsIDQxOTcwLCA0MTk3NiwgNDE5ODMsIDQxOTkwLCA0MTk5NywgNDIwMDQsIDQyMDExLCA0MjAxOCwgCisgICAgNDIwMjUsIDQyMDMyLCA0MjA0MCwgNDIwNDcsIDQyMDU1LCA0MjA2MiwgNDIwNjksIDQyMDc3LCA0MjA4NSwgNDIwOTAsIAorICAgIDQyMDk1LCA0MjEwMCwgNDIxMDUsIDQyMTEwLCA0MjExNSwgNDIxMjAsIDQyMTI2LCA0MjEzMSwgNDIxMzcsIDQyMTQzLCAKKyAgICA0MjE0OSwgNDIxNTUsIDQyMTYxLCA0MjE2OCwgNDIxNzYsIDQyMTgzLCA0MjE4OSwgNDIxOTUsIDQyMjAxLCA0MjIwNywgCisgICAgNDIyMTMsIDQyMjE5LCA0MjIyNiwgNDIyMzIsIDQyMjM5LCA0MjI0NiwgNDIyNTMsIDQyMjYwLCA0MjI2NywgNDIyNzUsIAorICAgIDQyMjg0LCA0MjI5MiwgNDIzMDMsIDQyMzExLCA0MjMxOSwgNDIzMjgsIDQyMzM1LCA0MjM0NCwgNDIzNTMsIDQyMzYxLCAKKyAgICA0MjM3MCwgNDIzNzgsIDQyMzgyLCAwLCAwLCAwLCAwLCA0MjM4NiwgNDIzODgsIDQyMzkwLCA0MjM5MiwgNDIzOTQsIAorICAgIDQyMzk3LCA0MjQwMCwgNDI0MDQsIDQyNDA4LCA0MjQxMywgNDI0MTgsIDQyNDIyLCA0MjQyNiwgNDI0MzAsIDQyNDM0LCAKKyAgICA0MjQzOSwgNDI0NDQsIDQyNDQ5LCA0MjQ1NCwgNDI0NTksIDQyNDY0LCA0MjQ2OSwgNDI0NzQsIDQyNDc5LCA0MjQ4NCwgCisgICAgNDI0OTAsIDQyNDk0LCA0MjQ5OCwgNDI1MDMsIDQyNTA4LCA0MjUxMywgNDI1MTgsIDQyNTIyLCA0MjUyOSwgNDI1MzYsIAorICAgIDQyNTQzLCA0MjU1MCwgNDI1NTcsIDQyNTY0LCA0MjU3MSwgNDI1NzgsIDQyNTg2LCA0MjU5OCwgNDI2MDQsIDQyNjEwLCAKKyAgICA0MjYxNywgNDI2MjQsIDQyNjMxLCA0MjYzOCwgNDI2NDUsIDQyNjUyLCA0MjY1OSwgNDI2NjYsIDQyNjcxLCA0MjY3NywgCisgICAgNDI2ODIsIDQyNjg3LCA0MjY5MiwgNDI2OTcsIDQyNzAyLCA0MjcwOSwgNDI3MTYsIDQyNzIxLCA0MjcyNywgNDI3MzIsIAorICAgIDQyNzM1LCA0MjczOCwgNDI3NDEsIDQyNzQ0LCA0Mjc0OCwgNDI3NTIsIDQyNzU3LCA0Mjc2MiwgNDI3NjgsIDQyNzc0LCAKKyAgICA0Mjc3OCwgNDI3ODIsIDQyNzg2LCA0Mjc5MCwgNDI3OTUsIDQyODAwLCA0MjgwNCwgNDI4MDgsIDQyODEyLCA0MjgxNiwgCisgICAgNDI4MjEsIDQyODI2LCA0MjgyOSwgNDI4MzIsIDQyODM1LCA0MjgzOCwgNDI4NDQsIDQyODUxLCA0Mjg2MiwgNDI4NzIsIAorICAgIDQyODc2LCA0Mjg4NCwgNDI4OTEsIDQyODk5LCA0MjkwOCwgNDI5MTIsIDQyOTE4LCA0MjkyNCwgNDI5MjgsIDQyOTMzLCAKKyAgICA0MjkzOCwgNDI5NDQsIDQyOTUwLCA0Mjk1NiwgNDI5NjMsIDQyOTY3LCA0Mjk3MSwgNDI5NzYsIDQyOTc5LCA0Mjk4MSwgCisgICAgNDI5ODUsIDQyOTg5LCA0Mjk5NywgNDMwMDEsIDQzMDAzLCA0MzAwNSwgNDMwMDksIDQzMDE3LCA0MzAyMiwgNDMwMjgsIAorICAgIDQzMDM4LCA0MzA0NSwgNDMwNTAsIDQzMDU0LCA0MzA1OCwgNDMwNjIsIDQzMDY1LCA0MzA2OCwgNDMwNzEsIDQzMDc1LCAKKyAgICA0MzA3OSwgNDMwODMsIDQzMDg3LCA0MzA5MSwgNDMwOTQsIDQzMDk4LCA0MzEwMiwgNDMxMDUsIDQzMTA3LCA0MzExMCwgCisgICAgNDMxMTIsIDQzMTE2LCA0MzEyMCwgNDMxMjIsIDQzMTI4LCA0MzEzMSwgNDMxMzYsIDQzMTQwLCA0MzE0NCwgNDMxNDYsIAorICAgIDQzMTQ4LCA0MzE1MCwgNDMxNTMsIDQzMTU3LCA0MzE2MSwgNDMxNjUsIDQzMTY5LCA0MzE3MywgNDMxNzksIDQzMTg1LCAKKyAgICA0MzE4NywgNDMxODksIDQzMTkxLCA0MzE5MywgNDMxOTYsIDQzMTk4LCA0MzIwMiwgNDMyMDQsIDQzMjA4LCA0MzIxMiwgCisgICAgNDMyMTgsIDQzMjIyLCA0MzIyNiwgNDMyMzAsIDQzMjM0LCA0MzIzOCwgNDMyNDQsIDQzMjQ4LCA0MzI1OCwgNDMyNjgsIAorICAgIDQzMjcyLCA0MzI3OCwgNDMyODUsIDQzMjg5LCA0MzI5MywgNDMyOTYsIDQzMzAxLCA0MzMwNSwgNDMzMTEsIDQzMzE1LCAKKyAgICA0MzMyOCwgNDMzMzcsIDQzMzQxLCA0MzM0NSwgNDMzNTEsIDQzMzU1LCA0MzM1OCwgNDMzNjAsIDQzMzYzLCA0MzM2NywgCisgICAgNDMzNzEsIDQzMzc4LCA0MzM4MiwgNDMzODYsIDQzMzkwLCA0MzM5MywgNDMzOTgsIDQzNDAzLCA0MzQwOSwgNDM0MTUsIAorICAgIDQzNDIwLCA0MzQyNSwgNDM0MzMsIDQzNDQxLCA0MzQ0NSwgNDM0NDksIDQzNDUxLCA0MzQ1NiwgNDM0NjAsIDQzNDY0LCAKKyAgICA0MzQ3MiwgNDM0ODAsIDQzNDg3LCA0MzQ5NCwgNDM1MDMsIDQzNTEyLCA0MzUxOCwgNDM1MjQsIDQzNTMyLCA0MzU0MCwgCisgICAgNDM1NDIsIDQzNTQ0LCA0MzU1MCwgNDM1NTYsIDQzNTYzLCA0MzU3MCwgNDM1NzYsIDQzNTgyLCA0MzU4NiwgNDM1OTAsIAorICAgIDQzNTk3LCA0MzYwNCwgNDM2MTEsIDQzNjE4LCA0MzYyOCwgNDM2MzgsIDQzNjQ2LCA0MzY1NCwgNDM2NTYsIDQzNjYwLCAKKyAgICA0MzY2NCwgNDM2NjksIDQzNjc0LCA0MzY4MiwgNDM2OTAsIDQzNjkzLCA0MzY5NiwgNDM2OTksIDQzNzAyLCA0MzcwNSwgCisgICAgNDM3MTAsIDQzNzE0LCA0MzcxOSwgNDM3MjQsIDQzNzI3LCA0MzczMCwgNDM3MzMsIDQzNzM2LCA0MzczOSwgNDM3NDMsIAorICAgIDQzNzQ2LCA0Mzc0OSwgNDM3NTIsIDQzNzU1LCA0Mzc1NywgNDM3NTksIDQzNzYxLCA0Mzc2MywgNDM3NzEsIDQzNzc5LCAKKyAgICA0Mzc4NSwgNDM3ODksIDQzNzk1LCA0MzgwNSwgNDM4MTEsIDQzODE3LCA0MzgyMywgNDM4MzEsIDQzODQwLCA0Mzg1MiwgCisgICAgNDM4NTYsIDQzODYwLCA0Mzg2MiwgNDM4NjgsIDQzODcwLCA0Mzg3MiwgNDM4NzQsIDQzODc2LCA0Mzg4MiwgNDM4ODUsIAorICAgIDQzODkxLCA0Mzg5NywgNDM5MDEsIDQzOTA1LCA0MzkwOSwgNDM5MTIsIDQzOTE2LCA0MzkyMCwgNDM5MjIsIDQzOTMxLCAKKyAgICA0Mzk0MCwgNDM5NDUsIDQzOTUwLCA0Mzk1NiwgNDM5NjIsIDQzOTY4LCA0Mzk3MSwgNDM5NzQsIDQzOTc3LCA0Mzk4MCwgCisgICAgNDM5ODIsIDQzOTg3LCA0Mzk5MiwgNDM5OTcsIDQ0MDAzLCA0NDAwOSwgNDQwMTgsIDQ0MDI3LCA0NDAzNCwgNDQwNDEsIAorICAgIDQ0MDQ4LCA0NDA1NSwgNDQwNjUsIDQ0MDc1LCA0NDA4NSwgNDQwOTUsIDQ0MTA1LCA0NDExNSwgNDQxMjQsIDQ0MTMzLCAKKyAgICA0NDE0MiwgNDQxNTEsIDQ0MTU5LCA0NDE3MSwgNDQxODIsIDQ0MTk4LCA0NDIwMSwgNDQyMDcsIDQ0MjEzLCA0NDIxOSwgCisgICAgNDQyMjcsIDQ0MjQyLCA0NDI1OCwgNDQyNjQsIDQ0MjcwLCA0NDI3NywgNDQyODMsIDQ0MjkyLCA0NDI5OSwgNDQzMTMsIAorICAgIDQ0MzI4LCA0NDMzMywgNDQzMzksIDQ0MzQ3LCA0NDM1MCwgNDQzNTMsIDQ0MzU1LCA0NDM1OCwgNDQzNjEsIDQ0MzYzLCAKKyAgICA0NDM2NSwgNDQzNjksIDQ0MzcyLCA0NDM3NSwgNDQzNzgsIDQ0MzgxLCA0NDM4NiwgNDQzOTEsIDQ0Mzk2LCA0NDQwMSwgCisgICAgNDQ0MDYsIDQ0NDA5LCA0NDQxMSwgNDQ0MTMsIDQ0NDE1LCA0NDQxOSwgNDQ0MjMsIDQ0NDI3LCA0NDQzMywgNDQ0MzgsIAorICAgIDQ0NDQwLCA0NDQ0MiwgNDQ0NDcsIDQ0NDUyLCA0NDQ1NywgNDQ0NjIsIDQ0NDY3LCA0NDQ3MiwgNDQ0NzQsIDQ0NDc2LCAKKyAgICA0NDQ4NiwgNDQ0OTAsIDQ0NDk4LCA0NDUwNywgNDQ1MDksIDQ0NTE0LCA0NDUxOSwgNDQ1MjcsIDQ0NTMxLCA0NDUzMywgCisgICAgNDQ1MzcsIDQ0NTM5LCA0NDU0MywgNDQ1NDcsIDQ0NTUxLCA0NDU1MywgNDQ1NTUsIDQ0NTU3LCA0NDU2NCwgNDQ1NzMsIAorICAgIDQ0NTgyLCA0NDU5MSwgNDQ2MDAsIDQ0NjA5LCA0NDYxOCwgNDQ2MjcsIDQ0NjM2LCA0NDY0NCwgNDQ2NTIsIDQ0NjYxLCAKKyAgICA0NDY3MCwgNDQ2NzksIDQ0Njg4LCA0NDY5NiwgNDQ3MDQsIDQ0NzEzLCA0NDcyMiwgNDQ3MzEsIDQ0NzQxLCA0NDc1MCwgCisgICAgNDQ3NjAsIDQ0NzY5LCA0NDc3OSwgNDQ3ODcsIDQ0Nzk2LCA0NDgwNiwgNDQ4MTUsIDQ0ODI1LCA0NDgzNCwgNDQ4NDQsIAorICAgIDQ0ODUyLCA0NDg2MSwgNDQ4NzAsIDQ0ODc5LCA0NDg4OCwgNDQ4OTcsIDQ0OTA2LCA0NDkxNiwgNDQ5MjUsIDQ0OTM0LCAKKyAgICA0NDk0MywgNDQ5NTMsIDQ0OTYyLCA0NDk3MSwgNDQ5ODAsIDQ0OTg5LCA0NDk5OSwgNDUwMDksIDQ1MDE4LCA0NTAyNywgCisgICAgNDUwMzUsIDQ1MDQ0LCA0NTA1MSwgNDUwNjAsIDQ1MDY5LCA0NTA4MCwgNDUwODksIDQ1MDk5LCA0NTEwOSwgNDUxMTYsIAorICAgIDQ1MTIzLCA0NTEzMCwgNDUxMzksIDQ1MTQ4LCA0NTE1NywgNDUxNjYsIDQ1MTczLCA0NTE3OCwgNDUxODYsIDQ1MTkxLCAKKyAgICA0NTE5NCwgNDUyMDEsIDQ1MjA0LCA0NTIwOSwgNDUyMTQsIDQ1MjE3LCA0NTIyMCwgNDUyMjgsIDQ1MjMxLCA0NTIzNiwgCisgICAgNDUyMzksIDQ1MjQ3LCA0NTI1MiwgNDUyNjAsIDQ1MjYzLCA0NTI2NiwgNDUyNjksIDQ1Mjc0LCA0NTI3OSwgNDUyODIsIAorICAgIDQ1Mjg1LCA0NTI5MywgNDUyOTYsIDQ1MzAzLCA0NTMxMCwgNDUzMTQsIDQ1MzE4LCA0NTMyMywgNDUzMjgsIDQ1MzM0LCAKKyAgICA0NTMzOSwgNDUzNDUsIDQ1MzUxLCA0NTM1NiwgNDUzNjIsIDQ1MzcwLCA0NTM3NiwgNDUzODQsIDQ1MzkyLCA0NTM5OCwgCisgICAgNDU0MDYsIDQ1NDE0LCA0NTQyMiwgNDU0MzAsIDQ1NDM2LCA0NTQ0NCwgNDU0NTIsIDQ1NDYwLCA0NTQ2NCwgNDU0NzAsIAorICAgIDQ1NDg0LCA0NTQ5OCwgNDU1MDIsIDQ1NTA2LCA0NTUxMCwgNDU1MTQsIDQ1NTI0LCA0NTUyOCwgNDU1MzMsIDQ1NTM4LCAKKyAgICA0NTU0NCwgNDU1NTAsIDQ1NTU2LCA0NTU2MiwgNDU1NzIsIDQ1NTgyLCA0NTU5MCwgNDU2MDEsIDQ1NjEyLCA0NTYyMCwgCisgICAgNDU2MzEsIDQ1NjQyLCA0NTY1MCwgNDU2NjEsIDQ1NjcyLCA0NTY4MCwgNDU2ODgsIDQ1Njk4LCA0NTcwOCwgNDU3MTEsIAorICAgIDQ1NzE0LCA0NTcxNywgNDU3MjIsIDQ1NzI2LCA0NTczMiwgNDU3MzksIDQ1NzQ2LCA0NTc1NCwgNDU3NjEsIDQ1NzY1LCAKKyAgICA0NTc2OSwgNDU3NzMsIDQ1Nzc3LCA0NTc3OSwgNDU3ODMsIDQ1Nzg3LCA0NTc5MiwgNDU3OTcsIDQ1ODA0LCA0NTgxMSwgCisgICAgNDU4MTQsIDQ1ODIxLCA0NTgyMywgNDU4MjUsIDQ1ODI5LCA0NTgzMywgNDU4MzgsIDQ1ODQ0LCA0NTg1MCwgNDU4NTYsIAorICAgIDQ1ODYyLCA0NTg3MSwgNDU4ODAsIDQ1ODg5LCA0NTg5MywgNDU4OTUsIDQ1ODk5LCA0NTkwNiwgNDU5MTMsIDQ1OTIwLCAKKyAgICA0NTkyNywgNDU5MzQsIDQ1OTM3LCA0NTk0MiwgNDU5NDgsIDQ1OTUxLCA0NTk1NiwgNDU5NjEsIDAsIDQ1OTY2LCA0NTk3MCwgCisgICAgNDU5NzcsIDQ1OTg0LCA0NTk5MSwgNDU5OTgsIDQ2MDAyLCA0NjAwNiwgNDYwMTAsIDQ2MDE0LCA0NjAyMCwgNDYwMjYsIAorICAgIDQ2MDMxLCA0NjAzNywgNDYwNDMsIDQ2MDQ5LCA0NjA1NSwgNDYwNjMsIDQ2MDcwLCA0NjA3NywgNDYwODQsIDQ2MDkxLCAKKyAgICA0NjA5NiwgNDYxMDIsIDQ2MTExLCA0NjExNSwgNDYxMjIsIDQ2MTI2LCA0NjEzMCwgNDYxMzYsIDQ2MTQyLCA0NjE0OCwgCisgICAgNDYxNTQsIDQ2MTU4LCA0NjE2MiwgNDYxNjUsIDQ2MTY4LCA0NjE3MiwgNDYxNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MTg2LCA0NjE4OSwgNDYxOTMsIAorICAgIDQ2MTk3LCA0NjIwMywgNDYyMDksIDQ2MjE1LCA0NjIyMywgNDYyMzAsIDQ2MjM0LCA0NjI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYyNDcsIDQ2MjUwLCA0NjI1MywgNDYyNTYsIAorICAgIDQ2MjU5LCA0NjI2MiwgNDYyNjUsIDQ2MjY5LCA0NjI3MiwgNDYyNzYsIDQ2MjgwLCA0NjI4NCwgNDYyODgsIDQ2MjkyLCAKKyAgICA0NjI5NiwgNDYzMDAsIDQ2MzA0LCA0NjMwOCwgNDYzMTIsIDQ2MzE2LCA0NjMyMCwgNDYzMjMsIDQ2MzI2LCA0NjMyOSwgCisgICAgNDYzMzIsIDQ2MzM1LCA0NjMzOCwgNDYzNDIsIDQ2MzQ1LCA0NjM0OSwgNDYzNTMsIDQ2MzU3LCA0NjM2MSwgNDYzNjUsIAorICAgIDQ2MzY5LCA0NjM3MywgNDYzNzcsIDQ2MzgxLCA0NjM4NSwgNDYzODksIDQ2MzkzLCA0NjM5OSwgNDY0MDUsIDQ2NDExLCAKKyAgICA0NjQxOCwgNDY0MjUsIDQ2NDMyLCA0NjQzOSwgNDY0NDYsIDQ2NDUzLCA0NjQ2MCwgNDY0NjcsIDQ2NDc0LCA0NjQ4MSwgCisgICAgNDY0ODgsIDQ2NDk1LCA0NjUwMiwgNDY1MDksIDQ2NTE2LCA0NjUyMywgNDY1MzAsIDQ2NTM1LCA0NjU0MSwgNDY1NDcsIAorICAgIDQ2NTUzLCA0NjU1OCwgNDY1NjQsIDQ2NTcwLCA0NjU3NiwgNDY1ODEsIDQ2NTg3LCA0NjU5MywgNDY1OTgsIDQ2NjA0LCAKKyAgICA0NjYxMCwgNDY2MTUsIDQ2NjIxLCA0NjYyNywgNDY2MzIsIDQ2NjM4LCA0NjY0NCwgNDY2NDksIDQ2NjU1LCA0NjY2MSwgCisgICAgNDY2NjcsIDQ2NjczLCA0NjY3OSwgNDY2ODQsIDQ2NjkwLCA0NjY5NiwgNDY3MDIsIDQ2NzA3LCA0NjcxMywgNDY3MTksIAorICAgIDQ2NzI1LCA0NjczMCwgNDY3MzYsIDQ2NzQyLCA0Njc0NywgNDY3NTMsIDQ2NzU5LCA0Njc2NCwgNDY3NzAsIDQ2Nzc2LCAKKyAgICA0Njc4MSwgNDY3ODcsIDQ2NzkzLCA0Njc5OCwgNDY4MDQsIDQ2ODEwLCA0NjgxNiwgNDY4MjIsIDQ2ODI4LCA0NjgzMywgCisgICAgNDY4MzksIDQ2ODQ1LCA0Njg1MSwgNDY4NTYsIDQ2ODYyLCA0Njg2OCwgNDY4NzQsIDQ2ODc5LCA0Njg4NSwgNDY4OTEsIAorICAgIDQ2ODk2LCA0NjkwMiwgNDY5MDgsIDQ2OTEzLCA0NjkxOSwgNDY5MjUsIDQ2OTMwLCA0NjkzNiwgNDY5NDIsIDQ2OTQ3LCAKKyAgICA0Njk1MywgNDY5NTksIDQ2OTY1LCA0Njk3MSwgNDY5NzcsIDQ2OTgxLCA0Njk4NiwgNDY5OTEsIDQ2OTk2LCA0NzAwMSwgCisgICAgNDcwMDYsIDQ3MDExLCA0NzAxNiwgNDcwMjEsIDQ3MDI2LCA0NzAzMSwgNDcwMzUsIDQ3MDM5LCA0NzA0MywgNDcwNDcsIAorICAgIDQ3MDUxLCA0NzA1NSwgNDcwNjAsIDQ3MDY0LCA0NzA2OSwgNDcwNzQsIDQ3MDc5LCA0NzA4NCwgNDcwODksIDQ3MDk0LCAKKyAgICA0NzA5OSwgNDcxMDgsIDQ3MTE3LCA0NzEyNiwgNDcxMzUsIDQ3MTQ0LCA0NzE1MywgNDcxNjIsIDQ3MTcxLCA0NzE3OCwgCisgICAgNDcxODYsIDQ3MTk0LCA0NzIwMSwgNDcyMDgsIDQ3MjE2LCA0NzIyNCwgNDcyMzEsIDQ3MjM4LCA0NzI0NiwgNDcyNTQsIAorICAgIDQ3MjYxLCA0NzI2OCwgNDcyNzYsIDQ3Mjg0LCA0NzI5MSwgNDcyOTgsIDQ3MzA2LCA0NzMxNSwgNDczMjQsIDQ3MzMyLCAKKyAgICA0NzM0MSwgNDczNTAsIDQ3MzU3LCA0NzM2NCwgNDczNzIsIDQ3MzgxLCA0NzM5MCwgNDczOTgsIDQ3NDA3LCA0NzQxNiwgCisgICAgNDc0MjMsIDQ3NDMwLCA0NzQzOSwgNDc0NDgsIDQ3NDU3LCA0NzQ2NiwgNDc0NzUsIDQ3NDg0LCA0NzQ5MSwgNDc0OTgsIAorICAgIDQ3NTA3LCA0NzUxNiwgNDc1MjUsIDQ3NTM0LCA0NzU0MywgNDc1NTIsIDQ3NTU5LCA0NzU2NiwgNDc1NzUsIDQ3NTg0LCAKKyAgICA0NzU5MywgNDc2MDMsIDQ3NjEzLCA0NzYyMiwgNDc2MzIsIDQ3NjQyLCA0NzY1MiwgNDc2NjIsIDQ3NjcyLCA0NzY4MiwgCisgICAgNDc2OTEsIDQ3NzAwLCA0NzcwNywgNDc3MTUsIDQ3NzIzLCA0NzczMSwgNDc3MzksIDQ3NzQ0LCA0Nzc0OSwgNDc3NTgsIAorICAgIDQ3NzY2LCA0Nzc3MywgNDc3ODIsIDQ3NzkwLCA0Nzc5NywgNDc4MDYsIDQ3ODE0LCA0NzgyMSwgNDc4MzAsIDQ3ODM4LCAKKyAgICA0Nzg0NSwgNDc4NTQsIDQ3ODYyLCA0Nzg2OSwgNDc4NzgsIDQ3ODg2LCA0Nzg5MywgNDc5MDMsIDQ3OTEyLCA0NzkxOSwgCisgICAgNDc5MjksIDQ3OTM4LCA0Nzk0NSwgNDc5NTUsIDQ3OTY0LCA0Nzk3MSwgNDc5ODAsIDQ3OTg5LCA0Nzk5OCwgNDgwMDcsIAorICAgIDQ4MDIxLCA0ODAzNSwgNDgwNDIsIDQ4MDQ3LCA0ODA1MiwgNDgwNTcsIDQ4MDYyLCA0ODA2NywgNDgwNzIsIDQ4MDc3LCAKKyAgICA0ODA4MiwgNDgwOTAsIDQ4MDk4LCA0ODEwNiwgNDgxMTQsIDQ4MTE5LCA0ODEyNiwgNDgxMzMsIDQ4MTQwLCA0ODE0NSwgCisgICAgNDgxNTMsIDQ4MTYwLCA0ODE2OCwgNDgxNzIsIDQ4MTc5LCA0ODE4NSwgNDgxOTIsIDQ4MTk2LCA0ODIwMiwgNDgyMDgsIAorICAgIDQ4MjE0LCA0ODIxOCwgNDgyMjEsIDQ4MjI1LCA0ODIyOSwgNDgyMzYsIDQ4MjQyLCA0ODI0OCwgNDgyNTQsIDQ4MjYwLCAKKyAgICA0ODI3NCwgNDgyODQsIDQ4Mjk4LCA0ODMxMiwgNDgzMTgsIDQ4MzI4LCA0ODM0MiwgNDgzNDUsIDQ4MzQ4LCA0ODM1NSwgCisgICAgNDgzNjMsIDQ4MzY5LCA0ODM3NCwgNDgzODIsIDQ4Mzk0LCA0ODQwNiwgNDg0MTQsIDQ4NDE4LCA0ODQyMiwgNDg0MjUsIAorICAgIDQ4NDI4LCA0ODQzMiwgNDg0MzYsIDQ4NDM5LCA0ODQ0MiwgNDg0NDcsIDQ4NDUyLCA0ODQ1OCwgNDg0NjQsIDQ4NDY5LCAKKyAgICA0ODQ3NCwgNDg0ODAsIDQ4NDg2LCA0ODQ5MSwgNDg0OTYsIDQ4NTAxLCA0ODUwNiwgNDg1MTIsIDQ4NTE4LCA0ODUyMywgCisgICAgNDg1MjgsIDQ4NTM0LCA0ODU0MCwgNDg1NDUsIDQ4NTUwLCA0ODU1MywgNDg1NTYsIDQ4NTY1LCA0ODU2NywgNDg1NjksIAorICAgIDQ4NTcyLCA0ODU3NiwgNDg1ODIsIDQ4NTg0LCA0ODU4NywgNDg1OTQsIDQ4NjAxLCA0ODYwOSwgNDg2MTcsIDQ4NjI3LCAKKyAgICA0ODY0MSwgNDg2NDYsIDQ4NjUxLCA0ODY1NSwgNDg2NjAsIDQ4NjY4LCA0ODY3NiwgNDg2ODUsIDQ4Njk0LCA0ODcwMywgCisgICAgNDg3MTIsIDQ4NzE3LCA0ODcyMiwgNDg3MjgsIDQ4NzM0LCA0ODc0MCwgNDg3NDYsIDQ4NzQ5LCA0ODc1NSwgNDg3NjEsIAorICAgIDQ4NzcxLCA0ODc4MSwgNDg3ODksIDQ4Nzk3LCA0ODgwNiwgNDg4MTUsIDQ4ODE5LCA0ODgyNywgNDg4MzUsIDQ4ODQzLCAKKyAgICA0ODg1MSwgNDg4NjAsIDQ4ODY5LCA0ODg3OCwgNDg4ODcsIDQ4ODkyLCA0ODg5NywgNDg5MDIsIDQ4OTA3LCA0ODkxMiwgCisgICAgNDg5MTgsIDQ4OTI0LCA0ODkyOSwgNDg5MzUsIDQ4OTM3LCA0ODkzOSwgNDg5NDEsIDQ4OTQzLCA0ODk0NiwgNDg5NDksIAorICAgIDQ4OTUxLCA0ODk1MywgNDg5NTUsIDQ4OTU5LCA0ODk2MywgNDg5NjUsIDQ4OTY3LCA0ODk3MCwgNDg5NzMsIDQ4OTc3LCAKKyAgICA0ODk4MywgNDg5ODksIDQ4OTkxLCA0ODk5OCwgNDkwMDIsIDQ5MDA3LCA0OTAxMiwgNDkwMTQsIDQ5MDI0LCA0OTAzMCwgCisgICAgNDkwMzYsIDQ5MDQyLCA0OTA0OCwgNDkwNTQsIDQ5MDYwLCA0OTA2NSwgNDkwNjgsIDQ5MDcxLCA0OTA3NCwgNDkwNzYsIAorICAgIDQ5MDc4LCA0OTA4MiwgNDkwODYsIDQ5MDkxLCA0OTA5NiwgNDkxMDEsIDQ5MTA0LCA0OTEwOCwgNDkxMTMsIDQ5MTE2LCAKKyAgICA0OTEyMCwgNDkxMjUsIDQ5MTMwLCA0OTEzNSwgNDkxNDAsIDQ5MTQ1LCA0OTE1MCwgNDkxNTUsIDQ5MTYwLCA0OTE2NSwgCisgICAgNDkxNzAsIDQ5MTc1LCA0OTE4MCwgNDkxODYsIDQ5MTkyLCA0OTE5OCwgNDkyMDAsIDQ5MjAzLCA0OTIwNSwgNDkyMDgsIAorICAgIDQ5MjEwLCA0OTIxMiwgNDkyMTQsIDQ5MjE2LCA0OTIxOCwgNDkyMjAsIDQ5MjIyLCA0OTIyNCwgNDkyMjYsIDQ5MjI4LCAKKyAgICA0OTIzMCwgNDkyMzIsIDQ5MjM0LCA0OTIzNiwgNDkyMzgsIDQ5MjQwLCA0OTI0MiwgNDkyNDcsIDQ5MjUyLCA0OTI1NywgCisgICAgNDkyNjIsIDQ5MjY3LCA0OTI3MiwgNDkyNzcsIDQ5MjgyLCA0OTI4NywgNDkyOTIsIDQ5Mjk3LCA0OTMwMiwgNDkzMDcsIAorICAgIDQ5MzEyLCA0OTMxNywgNDkzMjIsIDQ5MzI3LCA0OTMzMiwgNDkzMzcsIDQ5MzQyLCA0OTM0NiwgNDkzNTAsIDQ5MzU0LCAKKyAgICA0OTM2MCwgNDkzNjYsIDQ5MzcxLCA0OTM3NiwgNDkzODEsIDQ5Mzg3LCA0OTM5MywgNDkzOTgsIDQ5NDA2LCA0OTQxNCwgCisgICAgNDk0MjIsIDQ5NDMwLCA0OTQzOCwgNDk0NDYsIDQ5NDU0LCA0OTQ2MiwgNDk0NjgsIDQ5NDczLCA0OTQ3OCwgNDk0ODMsIAorICAgIDQ5NDg2LCA0OTQ5MCwgNDk0OTQsIDQ5NDk4LCA0OTUwMiwgNDk1MDYsIDQ5NTEwLCA0OTUxNywgNDk1MjQsIDQ5NTMyLCAKKyAgICA0OTU0MCwgNDk1NDUsIDQ5NTUwLCA0OTU1NywgNDk1NjQsIDQ5NTcxLCA0OTU3OCwgNDk1ODEsIDQ5NTg0LCA0OTU4OSwgCisgICAgNDk1OTEsIDQ5NTk1LCA0OTYwMCwgNDk2MDIsIDQ5NjA0LCA0OTYwNiwgNDk2MDgsIDQ5NjEzLCA0OTYxNiwgNDk2MTgsIAorICAgIDQ5NjIzLCA0OTYzMCwgNDk2MzcsIDQ5NjQwLCA0OTY0NCwgNDk2NDksIDQ5NjU0LCA0OTY2MiwgNDk2NjgsIDQ5Njc0LCAKKyAgICA0OTY4NiwgNDk2OTMsIDQ5NzAxLCA0OTcwNiwgNDk3MTEsIDQ5NzE3LCA0OTcyMCwgNDk3MjMsIDQ5NzI4LCA0OTczMCwgCisgICAgNDk3MzQsIDQ5NzM2LCA0OTczOCwgNDk3NDAsIDQ5NzQyLCA0OTc0NCwgNDk3NDYsIDQ5NzUxLCA0OTc1MywgNDk3NTUsIAorICAgIDQ5NzU3LCA0OTc1OSwgNDk3NjMsIDQ5NzY1LCA0OTc2OCwgNDk3NzMsIDQ5Nzc4LCA0OTc4MywgNDk3ODgsIDQ5Nzk0LCAKKyAgICA0OTgwMCwgNDk4MDIsIDQ5ODA1LCA0OTgxMiwgNDk4MTksIDQ5ODI2LCA0OTgzMywgNDk4MzcsIDQ5ODQxLCA0OTg0MywgCisgICAgNDk4NDUsIDQ5ODQ5LCA0OTg1NSwgNDk4NjAsIDQ5ODYyLCA0OTg2NiwgNDk4NzUsIDQ5ODgzLCA0OTg5MSwgNDk4OTcsIAorICAgIDQ5OTAzLCA0OTkwOCwgNDk5MTQsIDQ5OTE5LCA0OTkyMiwgNDk5MzYsIDQ5OTM5LCA0OTk0NCwgNDk5NDksIDQ5OTU1LCAKKyAgICA0OTk2NSwgNDk5NjcsIDQ5OTczLCA0OTk3OSwgNDk5ODMsIDQ5OTkwLCA0OTk5NCwgNDk5OTYsIDQ5OTk4LCA1MDAwMiwgCisgICAgNTAwMDgsIDUwMDEzLCA1MDAxOSwgNTAwMjEsIDUwMDI3LCA1MDAyOSwgNTAwMzUsIDUwMDM3LCA1MDAzOSwgNTAwNDQsIAorICAgIDUwMDQ2LCA1MDA1MCwgNTAwNTUsIDUwMDU3LCA1MDA2MiwgNTAwNjcsIDUwMDcxLCA1MDA3OCwgNTAwODgsIDUwMDkzLCAKKyAgICA1MDA5OSwgNTAxMDIsIDUwMTA4LCA1MDExMSwgNTAxMTYsIDUwMTIxLCA1MDEyNSwgNTAxMjcsIDUwMTI5LCA1MDEzMywgCisgICAgNTAxMzcsIDUwMTQxLCA1MDE0NSwgNTAxNTAsIDUwMTUyLCA1MDE1NywgNTAxNjAsIDUwMTYzLCA1MDE2NiwgNTAxNzAsIAorICAgIDUwMTc0LCA1MDE3OSwgNTAxODMsIDUwMTg4LCA1MDE5MywgNTAxOTcsIDUwMjAyLCA1MDIwOCwgNTAyMTEsIDUwMjE3LCAKKyAgICA1MDIyMiwgNTAyMjYsIDUwMjMxLCA1MDIzNywgNTAyNDMsIDUwMjUwLCA1MDI1NiwgNTAyNjMsIDUwMjcwLCA1MDI3MiwgCisgICAgNTAyNzksIDUwMjgzLCA1MDI4OSwgNTAyOTUsIDUwMzAwLCA1MDMwNiwgNTAzMTAsIDUwMzE1LCA1MDMxOCwgNTAzMjMsIAorICAgIDUwMzI5LCA1MDMzNiwgNTAzNDQsIDUwMzUxLCA1MDM2MCwgNTAzNzAsIDUwMzc3LCA1MDM4MywgNTAzODcsIDUwMzk0LCAKKyAgICA1MDM5OSwgNTA0MDgsIDUwNDExLCA1MDQxNCwgNTA0MjMsIDUwNDMzLCA1MDQ0MCwgNTA0NDIsIDUwNDQ4LCA1MDQ1MywgCisgICAgNTA0NTUsIDUwNDU4LCA1MDQ2MiwgNTA0NzAsIDUwNDc5LCA1MDQ4MiwgNTA0ODcsIDUwNDkyLCA1MDUwMCwgNTA1MDgsIAorICAgIDUwNTE2LCA1MDUyNCwgNTA1MzAsIDUwNTM2LCA1MDU0MiwgNTA1NTAsIDUwNTU1LCA1MDU1OCwgNTA1NjIsIDUwNTY1LCAKKyAgICA1MDU3NywgNTA1ODcsIDUwNTk4LCA1MDYwNywgNTA2MTgsIDUwNjI4LCA1MDYzNywgNTA2NDMsIDUwNjUxLCA1MDY1NSwgCisgICAgNTA2NjMsIDUwNjY3LCA1MDY3NSwgNTA2ODIsIDUwNjg5LCA1MDY5OCwgNTA3MDcsIDUwNzE3LCA1MDcyNywgNTA3MzcsIAorICAgIDUwNzQ3LCA1MDc1NiwgNTA3NjUsIDUwNzc1LCA1MDc4NSwgNTA3OTQsIDUwODAzLCA1MDgwOSwgNTA4MTUsIDUwODIxLCAKKyAgICA1MDgyNywgNTA4MzMsIDUwODM5LCA1MDg0NiwgNTA4NTIsIDUwODU5LCA1MDg2NiwgNTA4NzIsIDUwODc4LCA1MDg4NCwgCisgICAgNTA4OTAsIDUwODk2LCA1MDkwMiwgNTA5MDksIDUwOTE1LCA1MDkyMiwgNTA5MjksIDUwOTM2LCA1MDk0MywgNTA5NTAsIAorICAgIDUwOTU3LCA1MDk2NCwgNTA5NzEsIDUwOTc5LCA1MDk4NiwgNTA5OTQsIDUxMDAyLCA1MTAwNywgNTEwMTAsIDUxMDE0LCAKKyAgICA1MTAxOCwgNTEwMjQsIDUxMDI3LCA1MTAzMiwgNTEwMzgsIDUxMDQzLCA1MTA0NywgNTEwNTIsIDUxMDU4LCA1MTA2NSwgCisgICAgNTEwNjgsIDUxMDc1LCA1MTA4MiwgNTEwODYsIDUxMDk0LCA1MTEwMiwgNTExMDcsIDUxMTEzLCA1MTExOCwgNTExMjMsIAorICAgIDUxMTMwLCA1MTEzNywgNTExNDUsIDUxMTUzLCA1MTE2MiwgNTExNjYsIDUxMTc1LCA1MTE4MCwgNTExODQsIDUxMTkxLCAKKyAgICA1MTE5NSwgNTEyMDEsIDUxMjA5LCA1MTIxNCwgNTEyMjEsIDUxMjI1LCA1MTIzMCwgNTEyMzQsIDUxMjM5LCA1MTI0MywgCisgICAgNTEyNDgsIDUxMjUzLCA1MTI2MiwgNTEyNjQsIDUxMjY3LCA1MTI3MCwgNTEyNzcsIDUxMjg0LCA1MTI5MCwgNTEyOTgsIAorICAgIDUxMzA0LCA1MTMxMSwgNTEzMTYsIDUxMzE5LCA1MTMyNCwgNTEzMjksIDUxMzM0LCA1MTM0MiwgNTEzNDYsIDUxMzUzLCAKKyAgICA1MTM2MSwgNTEzNjksIDUxMzc0LCA1MTM3OSwgNTEzODUsIDUxMzkwLCA1MTM5NSwgNTE0MDEsIDUxNDA2LCA1MTQwOSwgCisgICAgNTE0MTMsIDUxNDE3LCA1MTQyNCwgNTE0MzQsIDUxNDM5LCA1MTQ0OCwgNTE0NTcsIDUxNDYzLCA1MTQ2OSwgNTE0NzQsIAorICAgIDUxNDc5LCA1MTQ4NCwgNTE0ODksIDUxNDk1LCA1MTUwMSwgNTE1MDksIDUxNTE3LCA1MTUyMywgNTE1MjksIDUxNTMzLCAKKyAgICA1MTUzNywgNTE1NDQsIDUxNTUxLCA1MTU1NywgNTE1NjAsIDUxNTYzLCA1MTU2NywgNTE1NzEsIDUxNTc1LCA1MTU4MCwgCisgICAgNTE1ODYsIDUxNTkyLCA1MTU5OSwgNTE2MDYsIDUxNjExLCA1MTYxNSwgNTE2MTksIDUxNjIzLCA1MTYyNywgNTE2MzEsIAorICAgIDUxNjM1LCA1MTYzOSwgNTE2NDMsIDUxNjQ3LCA1MTY1MSwgNTE2NTUsIDUxNjU5LCA1MTY2MywgNTE2NjcsIDUxNjcxLCAKKyAgICA1MTY3NSwgNTE2NzksIDUxNjgzLCA1MTY4NywgNTE2OTEsIDUxNjk1LCA1MTY5OSwgNTE3MDMsIDUxNzA3LCA1MTcxMSwgCisgICAgNTE3MTUsIDUxNzE5LCA1MTcyMywgNTE3MjcsIDUxNzMxLCA1MTczNSwgNTE3MzksIDUxNzQzLCA1MTc0NywgNTE3NTEsIAorICAgIDUxNzU1LCA1MTc1OSwgNTE3NjMsIDUxNzY3LCA1MTc3MSwgNTE3NzUsIDUxNzc5LCA1MTc4MywgNTE3ODcsIDUxNzkxLCAKKyAgICA1MTc5NSwgNTE3OTksIDUxODAzLCA1MTgwNywgNTE4MTEsIDUxODE1LCA1MTgxOSwgNTE4MjMsIDUxODI3LCA1MTgzMSwgCisgICAgNTE4MzUsIDUxODM5LCA1MTg0MywgNTE4NDcsIDUxODUxLCA1MTg1NSwgNTE4NTksIDUxODYzLCA1MTg2NywgNTE4NzEsIAorICAgIDUxODc1LCA1MTg3OSwgNTE4ODMsIDUxODg3LCA1MTg5MSwgNTE4OTUsIDUxODk5LCA1MTkwMywgNTE5MDcsIDUxOTExLCAKKyAgICA1MTkxNSwgNTE5MTksIDUxOTIzLCA1MTkyNywgNTE5MzEsIDUxOTM1LCA1MTkzOSwgNTE5NDMsIDUxOTQ3LCA1MTk1MSwgCisgICAgNTE5NTUsIDUxOTU5LCA1MTk2MywgNTE5NjcsIDUxOTcxLCA1MTk3NSwgNTE5NzksIDUxOTgzLCA1MTk4NywgNTE5OTEsIAorICAgIDUxOTk1LCA1MTk5OSwgNTIwMDMsIDUyMDA3LCA1MjAxMSwgNTIwMTUsIDUyMDE5LCA1MjAyMywgNTIwMjcsIDUyMDMxLCAKKyAgICA1MjAzNSwgNTIwMzksIDUyMDQzLCA1MjA0NywgNTIwNTEsIDUyMDU1LCA1MjA1OSwgNTIwNjMsIDUyMDY3LCA1MjA3MSwgCisgICAgNTIwNzUsIDUyMDc5LCA1MjA4MywgNTIwODcsIDUyMDkxLCA1MjA5NSwgNTIwOTksIDUyMTAzLCA1MjEwNywgNTIxMTEsIAorICAgIDUyMTE1LCA1MjExOSwgNTIxMjMsIDUyMTI3LCA1MjEzMSwgNTIxMzUsIDUyMTM5LCA1MjE0MywgNTIxNDcsIDUyMTUxLCAKKyAgICA1MjE1NSwgNTIxNTksIDUyMTYzLCA1MjE2NywgNTIxNzEsIDUyMTc1LCA1MjE3OSwgNTIxODMsIDUyMTg3LCA1MjE5MSwgCisgICAgNTIxOTUsIDUyMTk5LCA1MjIwMywgNTIyMDcsIDUyMjExLCA1MjIxNSwgNTIyMTksIDUyMjIzLCA1MjIyNywgNTIyMzEsIAorICAgIDUyMjM1LCA1MjIzOSwgNTIyNDMsIDUyMjQ3LCA1MjI1MSwgNTIyNTUsIDUyMjU5LCA1MjI2MywgNTIyNjcsIDUyMjcxLCAKKyAgICA1MjI3NSwgNTIyNzksIDUyMjgzLCA1MjI4NywgNTIyOTEsIDUyMjk1LCA1MjI5OSwgNTIzMDMsIDUyMzA3LCA1MjMxMSwgCisgICAgNTIzMTUsIDUyMzE5LCA1MjMyMywgNTIzMjcsIDUyMzMxLCA1MjMzNSwgNTIzMzksIDUyMzQzLCA1MjM0NywgNTIzNTEsIAorICAgIDUyMzU1LCA1MjM1OSwgNTIzNjMsIDUyMzY3LCA1MjM3MSwgNTIzNzUsIDUyMzc5LCA1MjM4MywgNTIzODcsIDUyMzkxLCAKKyAgICA1MjM5NSwgNTIzOTksIDUyNDAzLCA1MjQwNywgNTI0MTEsIDUyNDE1LCA1MjQxOSwgNTI0MjMsIDUyNDI3LCA1MjQzMSwgCisgICAgNTI0MzUsIDUyNDM5LCA1MjQ0MywgNTI0NDcsIDUyNDUxLCA1MjQ1NSwgNTI0NTksIDUyNDYzLCA1MjQ2NywgNTI0NzEsIAorICAgIDUyNDc1LCA1MjQ3OSwgNTI0ODMsIDUyNDg3LCA1MjQ5MSwgNTI0OTUsIDUyNDk5LCA1MjUwMywgNTI1MDcsIDUyNTExLCAKKyAgICA1MjUxNSwgNTI1MTksIDUyNTIzLCA1MjUyNywgNTI1MzEsIDUyNTM1LCA1MjUzOSwgNTI1NDMsIDUyNTQ3LCA1MjU1MSwgCisgICAgNTI1NTUsIDUyNTU5LCA1MjU2MywgNTI1NjcsIDUyNTcxLCA1MjU3NSwgNTI1NzksIDUyNTgzLCA1MjU4NywgNTI1OTEsIAorICAgIDUyNTk1LCA1MjU5OSwgNTI2MDMsIDUyNjA3LCA1MjYxMSwgNTI2MTUsIDUyNjE5LCA1MjYyMywgNTI2MjcsIDUyNjMxLCAKKyAgICA1MjYzNSwgNTI2NDIsIDUyNjUwLCA1MjY1NiwgNTI2NjIsIDUyNjY5LCA1MjY3NiwgNTI2ODIsIDUyNjg4LCA1MjY5NCwgCisgICAgNTI3MDAsIDUyNzA0LCA1MjcwOCwgNTI3MTMsIDUyNzE4LCA1MjcyNCwgNTI3MzAsIDUyNzM4LCA1Mjc0NSwgNTI3NTAsIAorICAgIDUyNzU1LCA1Mjc2MywgNTI3NzIsIDUyNzc5LCA1Mjc4OSwgNTI4MDAsIDUyODAzLCA1MjgwNiwgNTI4MTAsIDUyODE0LCAKKyAgICA1MjgyMSwgNTI4MjgsIDUyODM5LCA1Mjg1MCwgNTI4NTksIDUyODY4LCA1Mjg3NCwgNTI4ODAsIDUyODg3LCA1Mjg5NCwgCisgICAgNTI5MDMsIDUyOTEzLCA1MjkyNCwgNTI5MzQsIDUyOTQ0LCA1Mjk1NCwgNTI5NjUsIDUyOTc2LCA1Mjk4NiwgNTI5OTcsIAorICAgIDUzMDA3LCA1MzAxNywgNTMwMjYsIDUzMDM2LCA1MzA0NiwgNTMwNTYsIDUzMDY2LCA1MzA3MywgNTMwODAsIDUzMDg3LCAKKyAgICA1MzA5NCwgNTMxMDQsIDUzMTE0LCA1MzEyMiwgNTMxMzAsIDUzMTM3LCA1MzE0NCwgNTMxNTEsIDUzMTU4LCA1MzE2NSwgCisgICAgNTMxNzAsIDUzMTc1LCA1MzE4MSwgNTMxODksIDUzMTk4LCA1MzIwNiwgNTMyMTQsIDUzMjIyLCA1MzIzMCwgNTMyMzgsIAorICAgIDUzMjQ2LCA1MzI1NCwgNTMyNjIsIDUzMjcxLCA1MzI4MCwgNTMyODksIDUzMjk4LCA1MzMwNywgNTMzMTYsIDUzMzI1LCAKKyAgICA1MzMzNCwgNTMzNDMsIDUzMzUyLCA1MzM2MSwgNTMzNzAsIDUzMzc5LCA1MzM4OCwgNTMzOTcsIDUzNDA2LCA1MzQyMCwgCisgICAgNTM0MzUsIDUzNDQ5LCA1MzQ2NCwgNTM0NzgsIDUzNDkyLCA1MzUwNiwgNTM1MjAsIDUzNTMwLCA1MzU0MSwgNTM1NTEsIAorICAgIDUzNTYyLCA1MzU3NywgNTM1OTIsIDUzNjAwLCA1MzYwNiwgNTM2MTMsIDUzNjIwLCA1MzYyNywgNTM2MzQsIDUzNjM5LCAKKyAgICA1MzY0NSwgNTM2NTAsIDUzNjU1LCA1MzY2MSwgNTM2NjYsIDUzNjcxLCA1MzY3NiwgNTM2ODEsIDUzNjg2LCA1MzY5MywgCisgICAgNTM2OTksIDUzNzA3LCA1MzcxMiwgNTM3MTcsIDUzNzIxLCA1MzcyNSwgNTM3MzMsIDUzNzQxLCA1Mzc0OSwgNTM3NTcsIAorICAgIDUzNzY0LCA1Mzc3MSwgNTM3ODQsIDUzNzk3LCA1MzgxMCwgNTM4MjMsIDUzODMxLCA1MzgzOSwgNTM4NDUsIDUzODUxLCAKKyAgICA1Mzg1OCwgNTM4NjUsIDUzODcyLCA1Mzg3OSwgNTM4ODMsIDUzODg4LCA1Mzg5NiwgNTM5MDQsIDUzOTEyLCA1MzkxOSwgCisgICAgNTM5MjMsIDUzOTMxLCA1MzkzOSwgNTM5NDMsIDUzOTQ3LCA1Mzk1MiwgNTM5NTksIDUzOTY3LCA1Mzk3NSwgNTM5OTQsIAorICAgIDU0MDEzLCA1NDAzMiwgNTQwNTEsIDU0MDcwLCA1NDA4OSwgNTQxMDgsIDU0MTI3LCA1NDEzMywgNTQxNDAsIDU0MTQ5LCAKKyAgICA1NDE1NywgNTQxNjUsIDU0MTcxLCA1NDE3NCwgNTQxNzcsIDU0MTgyLCA1NDE4NSwgNTQyMDUsIDU0MjEyLCA1NDIxOCwgCisgICAgNTQyMjQsIDU0MjI4LCA1NDIzMSwgNTQyMzQsIDU0MjM3LCA1NDI0OSwgNTQyNjMsIDU0MjcwLCA1NDI3NywgNTQyODAsIAorICAgIDU0Mjg0LCA1NDI4NywgNTQyOTIsIDU0Mjk3LCA1NDMwMiwgNTQzMDgsIDU0MzE3LCA1NDMyNCwgNTQzMzEsIDU0MzM5LCAKKyAgICA1NDM0NiwgNTQzNTMsIDU0MzU2LCA1NDM2MiwgNTQzNjgsIDU0MzcxLCA1NDM3NCwgNTQzNzksIDU0Mzg0LCA1NDM5MCwgCisgICAgNTQzOTYsIDU0NDAwLCA1NDQwNSwgNTQ0MTIsIDU0NDE2LCA1NDQyMiwgNTQ0MjYsIDU0NDMwLCA1NDQzOCwgNTQ0NTAsIAorICAgIDU0NDU5LCA1NDQ2MywgNTQ0NjUsIDU0NDc0LCA1NDQ4MywgNTQ0ODksIDU0NDkyLCA1NDQ5OCwgNTQ1MDQsIDU0NTA5LCAKKyAgICA1NDUxNCwgNTQ1MTksIDU0NTI0LCA1NDUyOSwgNTQ1MzQsIDU0NTM2LCA1NDU0MiwgNTQ1NDcsIDU0NTU1LCA1NDU1OSwgCisgICAgNTQ1NjUsIDU0NTY4LCA1NDU3MiwgNTQ1NzksIDU0NTg2LCA1NDU4OCwgNTQ1OTAsIDU0NTk2LCA1NDYwMiwgNTQ2MDgsIAorICAgIDU0NjE3LCA1NDYyNiwgNTQ2MzMsIDU0NjQwLCA1NDY0NiwgNTQ2NTMsIDU0NjU4LCA1NDY2MywgNTQ2NjgsIDU0Njc0LCAKKyAgICA1NDY4MCwgNTQ2ODUsIDU0NjkyLCA1NDY5NiwgNTQ3MDAsIDU0NzEzLCA1NDcyNiwgNTQ3MzgsIDU0NzQ3LCA1NDc1MywgCisgICAgNTQ3NjAsIDU0NzY1LCA1NDc3MCwgNTQ3NzUsIDU0NzgwLCA1NDc4NSwgNTQ3ODcsIDU0Nzk0LCA1NDgwMiwgNTQ4MTAsIAorICAgIDU0ODE4LCA1NDgyNSwgNTQ4MzMsIDU0ODM5LCA1NDg0NCwgNTQ4NTAsIDU0ODU2LCA1NDg2MiwgNTQ4NjksIDU0ODc1LCAKKyAgICA1NDg4MywgNTQ4OTEsIDU0ODk5LCA1NDkwNywgNTQ5MTUsIDU0OTIxLCA1NDkyNywgNTQ5MzYsIDU0OTQwLCA1NDk0OSwgCisgICAgNTQ5NTgsIDU0OTY3LCA1NDk3NSwgNTQ5NzksIDU0OTg1LCA1NDk5MiwgNTQ5OTksIDU1MDAzLCA1NTAwOSwgNTUwMTcsIAorICAgIDU1MDIzLCA1NTAyOCwgNTUwMzQsIDU1MDM5LCA1NTA0NCwgNTUwNTEsIDU1MDU4LCA1NTA2MywgNTUwNjgsIDU1MDc2LCAKKyAgICA1NTA4NCwgNTUwOTQsIDU1MTA0LCA1NTExMSwgNTUxMTgsIDU1MTIyLCA1NTEyNiwgNTUxMzgsIDU1MTQ0LCA1NTE1MSwgCisgICAgNTUxNTYsIDU1MTYxLCA1NTE2OCwgNTUxNzUsIDU1MTgxLCA1NTE4NywgNTUxOTcsIDU1MjA0LCA1NTIxMiwgNTUyMjAsIAorICAgIDU1MjI5LCA1NTIzNiwgNTUyNDIsIDU1MjQ5LCA1NTI1NSwgNTUyNjMsIDU1MjcxLCA1NTI3OSwgNTUyODcsIDU1MjkzLCAKKyAgICA1NTI5OCwgNTUzMDgsIDU1MzE5LCA1NTMyNiwgNTUzMzUsIDU1MzQxLCA1NTM0NiwgNTUzNTEsIDU1MzYxLCA1NTM2OCwgCisgICAgNTUzNzQsIDU1MzgwLCA1NTM4OCwgNTUzOTMsIDU1NDAwLCA1NTQwNywgNTU0MTgsIDU1NDI1LCA1NTQzMiwgNTU0MzksIAorICAgIDU1NDQ2LCA1NTQ1MywgNTU0NjEsIDU1NDY5LCA1NTQ4MiwgNTU0OTUsIDU1NTA3LCA1NTUxOSwgNTU1MzMsIDU1NTQ3LCAKKyAgICA1NTU1MywgNTU1NTksIDU1NTY4LCA1NTU3NywgNTU1ODQsIDU1NTkxLCA1NTYwMCwgNTU2MDksIDU1NjE4LCA1NTYyNywgCisgICAgNTU2MzUsIDU1NjQzLCA1NTY1MywgNTU2NjMsIDU1Njc3LCA1NTY5MSwgNTU3MDAsIDU1NzA5LCA1NTcyMiwgNTU3MzUsIAorICAgIDU1NzQ0LCA1NTc1MywgNTU3NjQsIDU1Nzc1LCA1NTc4MSwgNTU3ODcsIDU1Nzk2LCA1NTgwNSwgNTU4MTAsIDU1ODE1LCAKKyAgICA1NTgyMywgNTU4MjksIDU1ODM1LCA1NTg0MywgNTU4NTEsIDU1ODY0LCA1NTg3NywgNTU4ODEsIDU1ODg1LCA1NTg5MywgCisgICAgNTU5MDEsIDU1OTA4LCA1NTkxNiwgNTU5MjQsIDU1OTMzLCA1NTk0MiwgNTU5NDgsIDU1OTU0LCA1NTk2MSwgNTU5NjgsIAorICAgIDU1OTc1LCA1NTk4MiwgNTU5OTEsIDU2MDAwLCA1NjAwMywgNTYwMDYsIDU2MDExLCA1NjAxNiwgNTYwMjIsIDU2MDI4LCAKKyAgICA1NjAzNSwgNTYwNDIsIDU2MDUzLCA1NjA2NCwgNTYwNzEsIDU2MDc4LCA1NjA4NiwgNTYwOTQsIDU2MTAyLCA1NjExMCwgCisgICAgNTYxMTgsIDU2MTI2LCA1NjEzMiwgNTYxMzgsIDU2MTQyLCA1NjE0NiwgNTYxNTQsIDU2MTYyLCA1NjE2NywgNTYxNzIsIAorICAgIDU2MTc3LCA1NjE4MiwgNTYxODgsIDU2MjAyLCA1NjIwOSwgNTYyMTYsIDU2MjIwLCA1NjIyMiwgNTYyMjQsIDU2MjI5LCAKKyAgICA1NjIzNCwgNTYyMzksIDU2MjQ0LCA1NjI1MiwgNTYyNTksIDU2MjY2LCA1NjI3NCwgNTYyODYsIDU2Mjk0LCA1NjMwMiwgCisgICAgNTYzMTMsIDU2MzE3LCA1NjMyMSwgNTYzMjcsIDU2MzM1LCA1NjM0OCwgNTYzNTUsIDU2MzYyLCA1NjM2OSwgNTYzNzUsIAorICAgIDU2MzgyLCA1NjM5MSwgNTY0MDAsIDU2NDA2LCA1NjQxMiwgNTY0MTgsIDU2NDI4LCA1NjQzOCwgNTY0NDYsIDU2NDU1LCAKKyAgICA1NjQ2MCwgNTY0NjMsIDU2NDY4LCA1NjQ3MywgNTY0NzgsIDU2NDg0LCA1NjQ5MCwgNTY0OTQsIDU2NDk3LCA1NjUwMCwgCisgICAgNTY1MDMsIDU2NTA4LCA1NjUxMywgNTY1MTksIDU2NTI1LCA1NjUyOSwgNTY1MzMsIDU2NTQwLCA1NjU0NywgNTY1NTQsIAorICAgIDU2NTYxLCA1NjU2OCwgNTY1NzUsIDU2NTg1LCA1NjU5NSwgNTY2MDIsIDU2NjA5LCA1NjYxNywgNTY2MjUsIDU2NjI5LCAKKyAgICA1NjYzNCwgNTY2MzksIDU2NjQ1LCA1NjY1MSwgNTY2NTQsIDU2NjU3LCA1NjY2MCwgNTY2NjMsIDU2NjY4LCA1NjY3MywgCisgICAgNTY2NzgsIDU2NjgzLCA1NjY4OCwgNTY2OTMsIDU2Njk3LCA1NjcwMSwgNTY3MDUsIDU2NzEwLCA1NjcxNSwgNTY3MTksIAorICAgIDU2NzIzLCA1NjcyOSwgNTY3MzMsIDU2NzM5LCA1Njc0NCwgNTY3NTEsIDU2NzU5LCA1Njc2NiwgNTY3NzQsIDU2NzgxLCAKKyAgICA1Njc4OSwgNTY3OTgsIDU2ODA1LCA1NjgxNSwgNTY4MjYsIDU2ODMyLCA1Njg0MSwgNTY4NDcsIDU2ODU2LCA1Njg2NSwgCisgICAgNTY4NzEsIDU2ODc3LCA1Njg4MSwgNTY4ODUsIDU2ODk0LCA1NjkwMywgNTY5MTAsIDU2OTE3LCA1NjkyNiwgNTY5MzUsIAorICAgIDU2OTQxLCA1Njk0NywgNTY5NTQsIDU2OTU5LCA1Njk2MywgNTY5NjcsIDU2OTcyLCA1Njk3NywgNTY5ODIsIDU2OTkwLCAKKyAgICA1Njk5OCwgNTcwMDEsIDU3MDA1LCA1NzAxNCwgNTcwMjQsIDU3MDMzLCA1NzA0MywgNTcwNTQsIDU3MDY3LCA1NzA3MSwgCisgICAgNTcwNzUsIDU3MDc5LCA1NzA4MywgNTcwODgsIDU3MDkzLCA1NzA5OSwgNTcxMDUsIDU3MTEyLCA1NzExOSwgNTcxMjUsIAorICAgIDU3MTMxLCA1NzEzNywgNTcxNDMsIDU3MTUxLCA1NzE1OSwgNTcxNjYsIDU3MTczLCA1NzE4MCwgMCwgMCwgNTcxODcsIAorICAgIDU3MTk2LCA1NzIwNSwgNTcyMTUsIDU3MjI1LCA1NzIzNCwgNTcyNDMsIDU3MjUyLCA1NzI2MSwgNTcyNjcsIDU3MjcyLCAKKyAgICA1NzI4MSwgNTcyOTEsIDU3MzAwLCA1NzMxMCwgNTczMTcsIDU3MzI0LCA1NzMzMSwgNTczMzgsIDU3MzQzLCA1NzM0OCwgCisgICAgNTczNTMsIDU3MzU4LCA1NzM2NiwgNTczNzUsIDU3MzgzLCA1NzM5MiwgNTczOTYsIDU3NDAwLCA1NzQwNCwgNTc0MDgsIAorICAgIDU3NDE4LCAwLCAwLCA1NzQyMSwgNTc0MzAsIDU3NDM5LCA1NzQ0OCwgNTc0NTcsIDU3NDYzLCA1NzQ2OSwgNTc0NzUsIAorICAgIDU3NDgxLCA1NzQ5MSwgNTc1MDEsIDU3NTExLCA1NzUyMSwgNTc1MzEsIDU3NTQxLCA1NzU1MSwgNTc1NjEsIDU3NTY4LCAKKyAgICA1NzU3NSwgNTc1ODIsIDU3NTg5LCA1NzU5NiwgNTc2MDMsIDU3NjEwLCA1NzYxNywgNTc2MjMsIDU3NjI5LCA1NzYzNSwgCisgICAgNTc2NDEsIDU3NjQ3LCA1NzY1MywgNTc2NTksIDU3NjY1LCA1NzY3NiwgMCwgMCwgMCwgNTc2ODYsIDU3NjkzLCA1NzY5NiwgCisgICAgNTc3MDAsIDU3NzA0LCA1NzcwOSwgNTc3MTQsIDU3NzE5LCA1NzcyMiwgNTc3MzEsIDU3NzQwLCA1Nzc0OSwgMCwgNTc3NTgsIAorICAgIDU3NzY0LCA1Nzc3MCwgNTc3NzgsIDU3Nzg4LCA1Nzc5NSwgNTc4MDQsIDU3ODA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzgxMiwgNTc4MjEsIAorICAgIDU3ODMwLCA1NzgzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4NDgsIAorICAgIDU3ODUzLCA1Nzg1OCwgNTc4NjMsIDU3ODY4LCA1Nzg3MywgNTc4NzgsIDU3ODgzLCA1Nzg4OCwgNTc4OTMsIDU3ODk4LCAKKyAgICA1NzkwNCwgNTc5MDgsIDU3OTEzLCA1NzkxOCwgNTc5MjMsIDU3OTI4LCA1NzkzMywgNTc5MzgsIDU3OTQzLCA1Nzk0OCwgCisgICAgNTc5NTMsIDU3OTU4LCA1Nzk2MywgNTc5NjgsIDU3OTczLCA1Nzk3OCwgNTc5ODMsIDU3OTg4LCA1Nzk5MywgNTc5OTgsIAorICAgIDU4MDAzLCA1ODAwOCwgNTgwMTMsIDU4MDE4LCA1ODAyNCwgNTgwMjksIDU4MDM1LCA1ODA0NCwgNTgwNDksIDU4MDU3LCAKKyAgICA1ODA2NCwgNTgwNzMsIDU4MDc4LCA1ODA4MywgNTgwODgsIDU4MDk0LCAwLCA1ODEwMSwgNTgxMDYsIDU4MTExLCA1ODExNiwgCisgICAgNTgxMjEsIDU4MTI2LCA1ODEzMSwgNTgxMzYsIDU4MTQxLCA1ODE0NiwgNTgxNTEsIDU4MTU3LCA1ODE2MSwgNTgxNjYsIAorICAgIDU4MTcxLCA1ODE3NiwgNTgxODEsIDU4MTg2LCA1ODE5MSwgNTgxOTYsIDU4MjAxLCA1ODIwNiwgNTgyMTEsIDU4MjE2LCAKKyAgICA1ODIyMSwgNTgyMjYsIDU4MjMxLCA1ODIzNiwgNTgyNDEsIDU4MjQ2LCA1ODI1MSwgNTgyNTYsIDU4MjYxLCA1ODI2NiwgCisgICAgNTgyNzEsIDU4Mjc3LCA1ODI4MiwgNTgyODgsIDU4Mjk3LCA1ODMwMiwgNTgzMTAsIDU4MzE3LCA1ODMyNiwgNTgzMzEsIAorICAgIDU4MzM2LCA1ODM0MSwgNTgzNDcsIDAsIDU4MzU0LCA1ODM2MiwgNTgzNzAsIDU4Mzc5LCA1ODM4NiwgNTgzOTQsIDU4NDAwLCAKKyAgICA1ODQwOSwgNTg0MTcsIDU4NDI1LCA1ODQzMywgNTg0NDEsIDU4NDQ5LCA1ODQ1NywgNTg0NjIsIDU4NDY5LCA1ODQ3NSwgCisgICAgNTg0ODIsIDU4NDkwLCA1ODQ5NywgNTg1MDQsIDU4NTEyLCA1ODUxOCwgNTg1MjQsIDU4NTMxLCA1ODUzOCwgNTg1NDgsIAorICAgIDU4NTU4LCA1ODU2NSwgNTg1NzIsIDU4NTc3LCA1ODU4NywgNTg1OTcsIDU4NjAyLCA1ODYwNywgNTg2MTIsIDU4NjE3LCAKKyAgICA1ODYyMiwgNTg2MjcsIDU4NjMyLCA1ODYzNywgNTg2NDIsIDU4NjQ3LCA1ODY1MiwgNTg2NTcsIDU4NjYyLCA1ODY2NywgCisgICAgNTg2NzIsIDU4Njc3LCA1ODY4MiwgNTg2ODcsIDU4NjkyLCA1ODY5NywgNTg3MDIsIDU4NzA3LCA1ODcxMiwgNTg3MTcsIAorICAgIDU4NzIyLCA1ODcyNywgNTg3MzIsIDU4NzM3LCA1ODc0MiwgNTg3NDcsIDU4NzUxLCA1ODc1NSwgNTg3NjAsIDU4NzY1LCAKKyAgICA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTAsIDU4Nzk1LCA1ODgwMCwgNTg4MDUsIDU4ODEwLCA1ODgxNSwgCisgICAgNTg4MjAsIDU4ODI1LCA1ODgzMCwgNTg4MzUsIDU4ODQwLCA1ODg0NSwgNTg4NTIsIDU4ODU5LCA1ODg2NiwgNTg4NzMsIAorICAgIDU4ODgwLCA1ODg4NywgNTg4OTQsIDU4OTAxLCA1ODkwOCwgNTg5MTUsIDU4OTIyLCA1ODkyOSwgNTg5MzYsIDU4OTQzLCAKKyAgICA1ODk0OCwgNTg5NTMsIDU4OTYwLCA1ODk2NywgNTg5NzQsIDU4OTgxLCA1ODk4OCwgNTg5OTUsIDU5MDAyLCA1OTAwOSwgCisgICAgNTkwMTYsIDU5MDIzLCA1OTAzMCwgNTkwMzcsIDU5MDQzLCA1OTA0OSwgNTkwNTUsIDU5MDYxLCA1OTA2OCwgNTkwNzUsIAorICAgIDU5MDgyLCA1OTA4OSwgNTkwOTYsIDU5MTAzLCA1OTExMCwgNTkxMTcsIDU5MTI0LCA1OTEzMSwgNTkxMzksIDU5MTQ3LCAKKyAgICA1OTE1NSwgNTkxNjMsIDU5MTcxLCA1OTE3OSwgNTkxODcsIDU5MTk1LCA1OTE5OSwgNTkyMDUsIDU5MjExLCA1OTIxNSwgCisgICAgNTkyMjEsIDU5MjI3LCA1OTIzMywgNTkyNDAsIDU5MjQ3LCA1OTI1NCwgNTkyNjEsIDU5MjY2LCA1OTI3MiwgNTkyNzgsIAorICAgIDU5Mjg1LCAwLCAwLCAwLCAwLCAwLCA1OTI5MiwgNTkzMDAsIDU5MzA5LCA1OTMxOCwgNTkzMjYsIDU5MzMyLCA1OTMzNywgCisgICAgNTkzNDIsIDU5MzQ3LCA1OTM1MiwgNTkzNTcsIDU5MzYyLCA1OTM2NywgNTkzNzIsIDU5Mzc3LCA1OTM4MiwgNTkzODcsIAorICAgIDU5MzkyLCA1OTM5NywgNTk0MDIsIDU5NDA3LCA1OTQxMiwgNTk0MTcsIDU5NDIyLCA1OTQyNywgNTk0MzIsIDU5NDM3LCAKKyAgICA1OTQ0MiwgNTk0NDcsIDU5NDUyLCA1OTQ1NywgNTk0NjIsIDU5NDY3LCA1OTQ3MiwgNTk0NzcsIDU5NDgyLCA1OTQ4NywgCisgICAgNTk0OTIsIDU5NDk3LCA1OTUwMiwgNTk1MDcsIDU5NTEyLCA1OTUxNywgNTk1MjIsIDU5NTI3LCAwLCA1OTUzMiwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTk1MzcsIDAsIDAsIDU5NTQyLCA1OTU0NiwgNTk1NTEsIDU5NTU2LCA1OTU2MSwgNTk1NjYsIDU5NTc1LCAKKyAgICA1OTU4MCwgNTk1ODUsIDU5NTkwLCA1OTU5NSwgNTk2MDAsIDU5NjA1LCA1OTYxMCwgNTk2MTUsIDU5NjIyLCA1OTYyNywgCisgICAgNTk2MzIsIDU5NjQxLCA1OTY0OCwgNTk2NTMsIDU5NjU4LCA1OTY2MywgNTk2NzAsIDU5Njc1LCA1OTY4MiwgNTk2ODcsIAorICAgIDU5NjkyLCA1OTY5OSwgNTk3MDYsIDU5NzExLCA1OTcxNiwgNTk3MjEsIDU5NzI4LCA1OTczNSwgNTk3NDAsIDU5NzQ1LCAKKyAgICA1OTc1MCwgNTk3NTUsIDU5NzYwLCA1OTc2NywgNTk3NzQsIDU5Nzc5LCA1OTc4NCwgNTk3ODksIDU5Nzk0LCA1OTc5OSwgCisgICAgNTk4MDQsIDU5ODA5LCA1OTgxNCwgNTk4MTksIDU5ODI0LCA1OTgyOSwgNTk4MzYsIDU5ODQxLCA1OTg0NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTk4NTEsIDU5ODU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTg2MywgNTk4NjgsIDU5ODcyLCA1OTg3NiwgNTk4ODAsIDU5ODg0LCA1OTg4OCwgNTk4OTIsIDU5ODk2LCA1OTkwMCwgCisgICAgNTk5MDQsIDU5OTA4LCA1OTkxNCwgNTk5MTgsIDU5OTIyLCA1OTkyNiwgNTk5MzAsIDU5OTM0LCA1OTkzOCwgNTk5NDIsIAorICAgIDU5OTQ2LCA1OTk1MCwgNTk5NTQsIDU5OTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTk2MiwgNTk5NjYsIAorICAgIDU5OTcwLCA1OTk3NCwgNTk5NzgsIDU5OTgyLCA1OTk4NiwgMCwgNTk5OTAsIDU5OTk0LCA1OTk5OCwgNjAwMDIsIDYwMDA2LCAKKyAgICA2MDAxMCwgNjAwMTQsIDAsIDYwMDE4LCA2MDAyMiwgNjAwMjYsIDYwMDMwLCA2MDAzNCwgNjAwMzgsIDYwMDQyLCAwLCAKKyAgICA2MDA0NiwgNjAwNTAsIDYwMDU0LCA2MDA1OCwgNjAwNjIsIDYwMDY2LCA2MDA3MCwgMCwgNjAwNzQsIDYwMDc4LCA2MDA4MiwgCisgICAgNjAwODYsIDYwMDkwLCA2MDA5NCwgNjAwOTgsIDAsIDYwMTAyLCA2MDEwNiwgNjAxMTAsIDYwMTE0LCA2MDExOCwgNjAxMjIsIAorICAgIDYwMTI2LCAwLCA2MDEzMCwgNjAxMzQsIDYwMTM4LCA2MDE0MiwgNjAxNDYsIDYwMTUwLCA2MDE1NCwgMCwgNjAxNTgsIAorICAgIDYwMTYyLCA2MDE2NiwgNjAxNzAsIDYwMTc0LCA2MDE3OCwgNjAxODIsIDAsIDYwMTg2LCA2MDE5MSwgNjAxOTYsIDYwMjAxLCAKKyAgICA2MDIwNiwgNjAyMTEsIDYwMjE2LCA2MDIyMCwgNjAyMjUsIDYwMjMwLCA2MDIzNSwgNjAyMzksIDYwMjQ0LCA2MDI0OSwgCisgICAgNjAyNTQsIDYwMjU5LCA2MDI2MywgNjAyNjgsIDYwMjczLCA2MDI3OCwgNjAyODMsIDYwMjg4LCA2MDI5MywgNjAyOTcsIAorICAgIDYwMzAyLCA2MDMwNywgNjAzMTQsIDYwMzE5LCA2MDMyNCwgNjAzMzAsIDYwMzM3LCA2MDM0NCwgNjAzNTMsIDYwMzYwLCAKKyAgICA2MDM2OSwgNjAzNzMsIDYwMzc3LCA2MDM4MywgNjAzODksIDYwMzk1LCA2MDQwMywgNjA0MDksIDYwNDEzLCA2MDQxNywgCisgICAgNjA0MjEsIDYwNDI3LCA2MDQzMywgNjA0MzcsIDYwNDM5LCA2MDQ0MywgNjA0NDksIDYwNDUxLCA2MDQ1NSwgNjA0NTgsIAorICAgIDYwNDYxLCA2MDQ2NywgNjA0NzIsIDYwNDc2LCA2MDQ4MCwgNjA0ODUsIDYwNDkxLCA2MDQ5NiwgNjA1MDEsIDYwNTA2LCAKKyAgICA2MDUxMSwgNjA1MTgsIDYwNTI1LCA2MDUzMCwgNjA1MzUsIDYwNTQwLCA2MDU0NSwgNjA1NTAsIDYwNTU1LCA2MDU1OSwgCisgICAgNjA1NjMsIDYwNTcwLCA2MDU3NywgNjA1ODMsIDYwNTg3LCA2MDU5MiwgNjA1OTUsIDYwNTk5LCA2MDYwNiwgNjA2MTAsIAorICAgIDYwNjE0LCA2MDYxOCwgNjA2MjIsIDYwNjI4LCA2MDYzNCwgNjA2MzgsIDYwNjQ0LCA2MDY0OCwgNjA2NTIsIDYwNjU4LCAKKyAgICA2MDY2MywgNjA2NjgsIDYwNjcwLCA2MDY3MywgNjA2NzcsIDYwNjgzLCA2MDY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE0NTAsIDMxNDU2LCAzMTQ2MiwgMzE0NjYsIDMxNDcwLCAzMTQ3NCwgCi0gICAgMzE0NzgsIDMxNDg0LCAzMTQ4OCwgMzE0OTQsIDMxNDk4LCAzMTUwNCwgMzE1MTAsIDMxNTE4LCAzMTUyNCwgMzE1MzIsIAotICAgIDMxNTM2LCAzMTU0MCwgMzE1NDQsIDMxNTUwLCAzMTU1MywgMzE1NTksIDMxNTYzLCAzMTU2OSwgMzE1NzMsIDMxNTc3LCAKLSAgICAzMTU4MywgMzE1ODcsIDMxNTkzLCAzMTU5NywgMzE2MDMsIDMxNjExLCAzMTYxOSwgMzE2MjcsIDMxNjMzLCAzMTYzNywgCi0gICAgMzE2NDMsIDMxNjQ3LCAzMTY1MywgMzE2NTcsIDMxNjYwLCAzMTY2NiwgMzE2NzAsIDMxNjc2LCAzMTY3OSwgMzE2ODIsIAotICAgIDMxNjg2LCAzMTY5MCwgMzE2OTQsIDMxNzAwLCAzMTcwNiwgMzE3MTAsIDMxNzEzLCAzMTcxNywgMzE3MjIsIDMxNzI3LCAKLSAgICAzMTczNCwgMzE3MzksIDMxNzQ2LCAzMTc1MywgMzE3NjIsIDMxNzY5LCAzMTc3OCwgMzE3ODMsIDMxNzkwLCAzMTc5NywgCi0gICAgMzE4MDYsIDMxODExLCAzMTgxOCwgMzE4MjMsIDMxODI5LCAzMTgzNSwgMzE4NDEsIDMxODQ3LCAzMTg1MywgMzE4NTksIDAsIAotICAgIDAsIDAsIDAsIDMxODY1LCAzMTg2OSwgMzE4NzIsIDMxODc1LCAzMTg3OCwgMzE4ODEsIDMxODg0LCAzMTg4NywgMzE4OTEsIAotICAgIDMxODk0LCAzMTg5OCwgMzE5MDEsIDMxOTA0LCAzMTkwNywgMzE5MTIsIDMxOTE3LCAzMTkyMiwgMzE5MjUsIDMxOTMwLCAKLSAgICAzMTkzNSwgMzE5NDAsIDMxOTQ1LCAzMTk1MiwgMzE5NTcsIDMxOTYyLCAzMTk2NywgMzE5NzIsIDMxOTc5LCAzMTk4NSwgCi0gICAgMzE5OTEsIDMxOTk3LCAzMjAwMywgMzIwMDksIDMyMDE4LCAzMjAyNywgMzIwMzMsIDMyMDM5LCAzMjA0NywgMzIwNTUsIAotICAgIDMyMDY0LCAzMjA3MywgMzIwODEsIDMyMDg5LCAzMjA5OCwgMzIxMDcsIDAsIDAsIDAsIDMyMTE1LCAzMjEyMCwgMzIxMjUsIAotICAgIDMyMTMwLCAzMjEzNCwgMzIxMzgsIDMyMTQyLCAzMjE0NywgMzIxNTEsIDMyMTU1LCAzMjE2MCwgMzIxNjQsIDMyMTY5LCAKLSAgICAzMjE3NCwgMzIxNzksIDMyMTg0LCAzMjE4OSwgMzIxOTQsIDMyMTk5LCAzMjIwNCwgMzIyMDksIDMyMjE0LCAzMjIxOCwgCi0gICAgMzIyMjMsIDMyMjI4LCAzMjIzMywgMzIyMzcsIDMyMjQxLCAzMjI0NiwgMzIyNTEsIDMyMjU2LCAzMjI2MSwgMzIyNjYsIAotICAgIDMyMjcwLCAzMjI3NiwgMzIyODIsIDMyMjg4LCAzMjI5NCwgMzIzMDAsIDMyMzA2LCAzMjMxMiwgMzIzMTgsIDMyMzI0LCAKLSAgICAzMjMyOSwgMzIzMzQsIDMyMzQxLCAzMjM0OSwgMzIzNTQsIDMyMzU5LCAzMjM2NCwgMzIzNjgsIDMyMzcyLCAzMjM3NiwgCi0gICAgMzIzODAsIDMyMzg0LCAzMjM4OCwgMzIzOTMsIDMyMzk3LCAzMjQwMiwgMzI0MDYsIDMyNDExLCAzMjQxNiwgMzI0MjEsIAotICAgIDMyNDI3LCAzMjQzMywgMzI0MzcsIDMyNDQzLCAzMjQ0NywgMzI0NTMsIDMyNDU5LCAzMjQ2NCwgMzI0NzEsIDMyNDc1LCAKLSAgICAzMjQ4MSwgMzI0ODYsIDMyNDkzLCAzMjQ5OCwgMzI1MDUsIDMyNTEyLCAzMjUxNywgMzI1MjQsIDMyNTI5LCAzMjUzNCwgCi0gICAgMzI1MzksIDMyNTQ2LCAzMjU1MCwgMzI1NTYsIDMyNTYzLCAzMjU3MCwgMzI1NzUsIDMyNTgyLCAzMjU4OSwgMzI1OTMsIAotICAgIDMyNTk5LCAzMjYwNCwgMzI2MDksIDMyNjE2LCAzMjYyMSwgMzI2MjYsIDMyNjMxLCAzMjYzNiwgMzI2NDAsIDMyNjQ0LCAKLSAgICAzMjY0OSwgMzI2NTQsIDMyNjYxLCAzMjY2NywgMzI2NzIsIDMyNjc5LCAzMjY4NCwgMzI2OTEsIDMyNjk2LCAzMjcwNiwgCi0gICAgMzI3MTIsIDMyNzE4LCAzMjcyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3MjYsIDMyNzM1LCAzMjc0MiwgMzI3NDksIAotICAgIDMyNzU2LCAzMjc2MCwgMzI3NjUsIDMyNzcwLCAzMjc3NSwgMzI3ODAsIDMyNzg1LCAzMjc5MCwgMzI3OTUsIDMyODAwLCAKLSAgICAzMjgwNSwgMzI4MTAsIDMyODE1LCAzMjgyMCwgMzI4MjUsIDMyODI5LCAzMjgzNCwgMzI4MzksIDMyODQ0LCAzMjg0OSwgCi0gICAgMzI4NTQsIDMyODU5LCAzMjg2MywgMzI4NjgsIDMyODczLCAzMjg3OCwgMzI4ODMsIDMyODg3LCAzMjg5MiwgMzI4OTcsIAotICAgIDMyOTAxLCAzMjkwNiwgMzI5MTEsIDMyOTE2LCAzMjkyMSwgMzI5MjYsIDMyOTMwLCAzMjkzNiwgMzI5NDMsIDMyOTQ5LCAKLSAgICAzMjk1NCwgMzI5NTksIDMyOTY1LCAzMjk3MCwgMzI5NzYsIDMyOTgxLCAzMjk4NywgMzI5OTMsIDMyOTk4LCAzMzAwNCwgCi0gICAgMzMwMTAsIDMzMDE1LCAzMzAyMSwgMzMwMjcsIDMzMDMzLCAzMzAzOCwgMCwgMCwgMCwgMzMwNDMsIDMzMDQ5LCAzMzA1OSwgCi0gICAgMzMwNjUsIDMzMDczLCAzMzA3OSwgMzMwODQsIDMzMDg4LCAzMzA5MiwgMzMwOTYsIDMzMTAwLCAzMzEwNCwgMzMxMDgsIAotICAgIDMzMTEzLCAzMzExNywgMCwgMCwgMCwgMzMxMjIsIDMzMTI3LCAzMzEzMiwgMzMxMzcsIDMzMTQ0LCAzMzE1MCwgMzMxNTYsIAotICAgIDMzMTYyLCAzMzE2OCwgMzMxNzQsIDMzMTgwLCAzMzE4NywgMzMxOTMsIDMzMjAwLCAzMzIwNywgMzMyMTQsIDMzMjIxLCAKLSAgICAzMzIyOCwgMzMyMzUsIDMzMjQyLCAzMzI0OSwgMzMyNTYsIDMzMjYzLCAzMzI3MCwgMzMyNzcsIDMzMjg0LCAzMzI5MSwgCi0gICAgMzMyOTgsIDMzMzA1LCAzMzMxMiwgMzMzMTksIDMzMzI2LCAzMzMzMywgMzMzNDAsIDMzMzQ3LCAzMzM1NCwgMzMzNjEsIAotICAgIDMzMzY4LCAzMzM3NSwgMzMzODIsIDMzMzg5LCAzMzM5NiwgMzM0MDMsIDMzNDEwLCAzMzQxOCwgMzM0MjYsIDMzNDM0LCAKLSAgICAzMzQ0MCwgMzM0NDYsIDMzNDUyLCAzMzQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzM0NjksIDMzNDc3LCAzMzQ4NSwgMzM0OTMsIDMzNTAxLCAzMzUxMSwgMzM1MjEsIDMzNTMxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzMzU0MSwgMzM1NDYsIDMzNTUxLCAzMzU1NiwgMzM1NjEsIDMzNTcwLCAzMzU4MSwgMzM1OTAsIDMzNjAxLCAKLSAgICAzMzYwNywgMzM2MjAsIDMzNjI2LCAzMzYzMywgMzM2NDAsIDMzNjQ1LCAzMzY1MSwgMzM2NTcsIDMzNjY4LCAzMzY3NywgCi0gICAgMzM2ODQsIDMzNjkxLCAzMzcwMCwgMzM3MDcsIDMzNzE2LCAzMzcyNiwgMzM3MzYsIDMzNzQzLCAzMzc1MCwgMzM3NTcsIAotICAgIDMzNzY3LCAzMzc3MiwgMzM3ODAsIDMzNzg2LCAzMzc5NCwgMzM4MDMsIDMzODA4LCAzMzgxNSwgMzM4MjEsIDMzODI2LCAwLCAKLSAgICAzMzgzMSwgMzM4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDMzODQ0LCAzMzg0OSwgMzM4NTUsIDMzODYyLCAzMzg3MCwgMzM4NzYsIAotICAgIDMzODgyLCAzMzg4OCwgMzM4OTMsIDMzOTAwLCAzMzkwNiwgMzM5MTIsIDMzOTE4LCAzMzkyNiwgMzM5MzIsIDMzOTQwLCAKLSAgICAzMzk0NSwgMzM5NTEsIDMzOTU3LCAzMzk2NCwgMzM5NzIsIDMzOTc5LCAzMzk4NSwgMzM5OTIsIDMzOTk5LCAzNDAwNSwgCi0gICAgMzQwMTIsIDM0MDE5LCAzNDAyNSwgMzQwMzAsIDM0MDM2LCAzNDA0NCwgMzQwNTMsIDM0MDU5LCAzNDA2NSwgMzQwNzEsIAotICAgIDM0MDc3LCAzNDA4NSwgMzQwODksIDM0MDk1LCAzNDEwMSwgMzQxMDcsIDM0MTEzLCAzNDExOSwgMzQxMjUsIDM0MTI5LCAKLSAgICAzNDEzNCwgMzQxMzksIDM0MTQ2LCAzNDE1MSwgMzQxNTUsIDM0MTYxLCAzNDE2NiwgMzQxNzEsIDM0MTc1LCAzNDE4MCwgCi0gICAgMzQxODUsIDM0MTg5LCAzNDE5NCwgMzQxOTksIDM0MjA2LCAzNDIxMCwgMzQyMTUsIDM0MjIwLCAzNDIyNCwgMzQyMjksIAotICAgIDM0MjMzLCAzNDIzOCwgMzQyNDIsIDM0MjQ4LCAzNDI1MywgMzQyNjAsIDM0MjY1LCAzNDI3MCwgMzQyNzQsIDM0Mjc5LCAKLSAgICAzNDI4NCwgMzQyOTEsIDM0Mjk2LCAzNDMwMiwgMzQzMDcsIDM0MzEyLCAzNDMxNywgMzQzMjEsIDM0MzI2LCAzNDMzMywgCi0gICAgMzQzNDAsIDM0MzQ1LCAzNDM1MCwgMzQzNTQsIDM0MzYwLCAzNDM2NywgMzQzNzIsIDM0Mzc3LCAzNDM4MiwgMzQzODgsIAotICAgIDM0MzkzLCAzNDM5OSwgMzQ0MDQsIDM0NDEwLCAzNDQxNiwgMzQ0MjIsIDM0NDI5LCAzNDQzNiwgMzQ0NDMsIDM0NDUwLCAKLSAgICAzNDQ1NywgMzQ0NjQsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwNCwgMzQ1MTMsIDM0NTIyLCAzNDUzMSwgCi0gICAgMzQ1NDMsIDM0NTUyLCAzNDU2MSwgMzQ1NzAsIDM0NTc3LCAzNDU4MiwgMzQ1ODksIDM0NTk3LCAzNDYwNSwgMzQ2MTIsIAotICAgIDM0NjE5LCAzNDYyNiwgMzQ2MzMsIDM0NjQxLCAzNDY1MCwgMzQ2NTksIDM0NjY4LCAzNDY3NywgMzQ2ODYsIDM0Njk1LCAKLSAgICAzNDcwNCwgMzQ3MTMsIDM0NzIyLCAzNDczMSwgMzQ3NDAsIDM0NzQ5LCAzNDc1OCwgMzQ3NjcsIDM0Nzc1LCAzNDc4NCwgCi0gICAgMzQ3OTUsIDM0ODAzLCAzNDgxMiwgMzQ4MjMsIDM0ODMyLCAzNDg0MSwgMzQ4NTAsIDM0ODU5LCAzNDg2NywgMzQ4NzYsIAotICAgIDM0ODgzLCAzNDg4OCwgMzQ4OTYsIDM0OTAxLCAzNDkwOCwgMzQ5MTMsIDM0OTIyLCAzNDkyOCwgMzQ5MzUsIDM0OTQyLCAKLSAgICAzNDk0NywgMzQ5NTIsIDM0OTYwLCAzNDk2OCwgMzQ5NzcsIDM0OTg2LCAzNDk5MSwgMzQ5OTgsIDM1MDA5LCAzNTAxNywgCi0gICAgMzUwMjYsIDM1MDMyLCAzNTAzOCwgMzUwNDMsIDM1MDUwLCAzNTA1NSwgMzUwNjQsIDM1MDY5LCAzNTA3NCwgMzUwNzksIAotICAgIDM1MDg2LCAzNTA5MywgMzUwOTgsIDM1MTA3LCAzNTExNSwgMzUxMjAsIDM1MTI1LCAzNTEzMiwgMzUxMzksIDM1MTQzLCAKLSAgICAzNTE0NywgMzUxNTAsIDM1MTUzLCAzNTE1NiwgMzUxNTksIDM1MTYyLCAzNTE2NSwgMzUxNzIsIDM1MTc1LCAzNTE3OCwgCi0gICAgMzUxODMsIDM1MTg3LCAzNTE5MSwgMzUxOTUsIDM1MTk5LCAzNTIwMywgMzUyMTIsIDM1MjE4LCAzNTIyNCwgMzUyMzAsIAotICAgIDM1MjM4LCAzNTI0NiwgMzUyNTIsIDM1MjU4LCAzNTI2NSwgMzUyNzEsIDM1Mjc2LCAzNTI4MiwgMzUyODksIDM1Mjk1LCAKLSAgICAzNTMwMiwgMzUzMDgsIDM1MzE2LCAzNTMyMSwgMzUzMjcsIDM1MzMzLCAzNTMzOSwgMzUzNDUsIDM1MzUxLCAzNTM1NywgCi0gICAgMzUzNjMsIDM1Mzc0LCAzNTM4NCwgMzUzOTAsIDM1Mzk2LCAzNTQwNiwgMzU0MTIsIDM1NDIwLCAzNTQyOCwgMzU0MzYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDM1NDQxLCAzNTQ0OCwgMzU0NTUsIDM1NDYwLCAzNTQ2OSwgMzU0NzcsIDM1NDg1LCAzNTQ5MiwgCi0gICAgMzU0OTksIDM1NTA2LCAzNTUxMywgMzU1MjEsIDM1NTI5LCAzNTUzOSwgMzU1NDksIDM1NTU3LCAzNTU2NSwgMzU1NzMsIAotICAgIDM1NTgxLCAzNTU5MCwgMzU1OTksIDM1NjA3LCAzNTYxNSwgMzU2MjQsIDM1NjMzLCAzNTY0MywgMzU2NTMsIDM1NjYyLCAKLSAgICAzNTY3MSwgMzU2NzksIDM1Njg3LCAzNTY5NSwgMzU3MDMsIDM1NzEzLCAzNTcyMywgMzU3MzEsIDM1NzM5LCAzNTc0NywgCi0gICAgMzU3NTUsIDM1NzYzLCAzNTc3MSwgMzU3NzksIDM1Nzg3LCAzNTc5NSwgMzU4MDMsIDM1ODExLCAzNTgxOSwgMzU4MjgsIAotICAgIDM1ODM3LCAzNTg0NiwgMzU4NTUsIDM1ODY1LCAzNTg3NSwgMzU4ODIsIDM1ODg5LCAzNTg5NywgMzU5MDUsIDM1OTE0LCAKLSAgICAzNTkyMywgMzU5MzEsIDM1OTM5LCAzNTk1MSwgMzU5NjMsIDM1OTcyLCAzNTk4MSwgMzU5OTAsIDM1OTk5LCAzNjAwNiwgCi0gICAgMzYwMTMsIDM2MDIxLCAzNjAyOSwgMzYwMzcsIDM2MDQ1LCAzNjA1MywgMzYwNjEsIDM2MDY5LCAzNjA3NywgMzYwODYsIAotICAgIDM2MDk1LCAzNjEwNCwgMzYxMTMsIDM2MTIyLCAzNjEzMSwgMzYxNDEsIDM2MTUxLCAzNjE2MSwgMzYxNzEsIDM2MTgwLCAKLSAgICAzNjE4OSwgMzYxOTYsIDM2MjAzLCAzNjIxMSwgMzYyMTksIDM2MjI3LCAzNjIzNSwgMzYyNDMsIDM2MjUxLCAzNjI2MywgCi0gICAgMzYyNzUsIDM2Mjg0LCAzNjI5MywgMzYzMDEsIDM2MzA5LCAzNjMxNywgMzYzMjUsIDM2MzM2LCAzNjM0NywgMzYzNTgsIAotICAgIDM2MzY5LCAzNjM4MSwgMzYzOTMsIDM2NDAxLCAzNjQwOSwgMzY0MTcsIDM2NDI1LCAzNjQzNCwgMzY0NDMsIDM2NDUyLCAKLSAgICAzNjQ2MSwgMzY0NjksIDM2NDc3LCAzNjQ4NSwgMzY0OTMsIDM2NTAxLCAzNjUwOSwgMzY1MTgsIDM2NTI3LCAzNjUzNywgCi0gICAgMzY1NDcsIDM2NTU1LCAzNjU2MywgMzY1NzEsIDM2NTc5LCAzNjU4NywgMzY1OTUsIDM2NjAyLCAzNjYwOSwgMzY2MTcsIAotICAgIDM2NjI1LCAzNjYzMywgMzY2NDEsIDM2NjQ5LCAzNjY1NywgMzY2NjUsIDM2NjczLCAzNjY4MSwgMzY2ODksIDM2Njk3LCAKLSAgICAzNjcwNSwgMzY3MTMsIDM2NzIxLCAzNjcyOSwgMzY3MzcsIDM2NzQ2LCAzNjc1NSwgMzY3NjQsIDM2NzcyLCAzNjc4MSwgCi0gICAgMzY3OTAsIDM2Nzk5LCAzNjgwOCwgMzY4MTgsIDM2ODI3LCAzNjgzMywgMzY4MzgsIDM2ODQ1LCAzNjg1MiwgMzY4NjAsIAotICAgIDM2ODY4LCAzNjg3NywgMzY4ODYsIDM2ODk2LCAzNjkwNiwgMzY5MTcsIDM2OTI4LCAzNjkzOCwgMzY5NDgsIDM2OTU4LCAKLSAgICAzNjk2OCwgMzY5NzcsIDM2OTg2LCAzNjk5NiwgMzcwMDYsIDM3MDE3LCAzNzAyOCwgMzcwMzgsIDM3MDQ4LCAzNzA1OCwgCi0gICAgMzcwNjgsIDM3MDc1LCAzNzA4MiwgMzcwOTAsIDM3MDk4LCAzNzEwNSwgMzcxMTIsIDM3MTIxLCAzNzEzMCwgMzcxNDAsIAotICAgIDM3MTUwLCAzNzE2MSwgMzcxNzIsIDM3MTgyLCAzNzE5MiwgMzcyMDIsIDM3MjEyLCAzNzIyMSwgMzcyMzAsIDM3MjM4LCAKLSAgICAzNzI0NiwgMzcyNTMsIDM3MjYwLCAzNzI2OCwgMzcyNzYsIDM3Mjg1LCAzNzI5NCwgMzczMDQsIDM3MzE0LCAzNzMyNSwgCi0gICAgMzczMzYsIDM3MzQ2LCAzNzM1NiwgMzczNjYsIDM3Mzc2LCAzNzM4NSwgMzczOTQsIDM3NDA0LCAzNzQxNCwgMzc0MjUsIAotICAgIDM3NDM2LCAzNzQ0NiwgMzc0NTYsIDM3NDY2LCAzNzQ3NiwgMzc0ODMsIDM3NDkwLCAzNzQ5OCwgMzc1MDYsIDM3NTE1LCAKLSAgICAzNzUyNCwgMzc1MzQsIDM3NTQ0LCAzNzU1NSwgMzc1NjYsIDM3NTc2LCAzNzU4NiwgMzc1OTYsIDM3NjA2LCAzNzYxNCwgCi0gICAgMzc2MjIsIDM3NjMwLCAzNzYzOCwgMzc2NDcsIDM3NjU2LCAzNzY2NCwgMzc2NzIsIDM3Njc5LCAzNzY4NiwgMzc2OTMsIAotICAgIDM3NzAwLCAzNzcwOCwgMzc3MTYsIDM3NzI0LCAzNzczMiwgMzc3NDMsIDM3NzU0LCAzNzc2NSwgMzc3NzYsIDM3Nzg3LCAKLSAgICAzNzc5OCwgMzc4MDYsIDM3ODE0LCAzNzgyNSwgMzc4MzYsIDM3ODQ3LCAzNzg1OCwgMzc4NjksIDM3ODgwLCAzNzg4OCwgCi0gICAgMzc4OTYsIDM3OTA3LCAzNzkxOCwgMzc5MjksIDAsIDAsIDM3OTQwLCAzNzk0OCwgMzc5NTYsIDM3OTY3LCAzNzk3OCwgCi0gICAgMzc5ODksIDAsIDAsIDM4MDAwLCAzODAwOCwgMzgwMTYsIDM4MDI3LCAzODAzOCwgMzgwNDksIDM4MDYwLCAzODA3MSwgCi0gICAgMzgwODIsIDM4MDkwLCAzODA5OCwgMzgxMDksIDM4MTIwLCAzODEzMSwgMzgxNDIsIDM4MTUzLCAzODE2NCwgMzgxNzIsIAotICAgIDM4MTgwLCAzODE5MSwgMzgyMDIsIDM4MjEzLCAzODIyNCwgMzgyMzUsIDM4MjQ2LCAzODI1NCwgMzgyNjIsIDM4MjczLCAKLSAgICAzODI4NCwgMzgyOTUsIDM4MzA2LCAzODMxNywgMzgzMjgsIDM4MzM2LCAzODM0NCwgMzgzNTUsIDM4MzY2LCAzODM3NywgMCwgCi0gICAgMCwgMzgzODgsIDM4Mzk2LCAzODQwNCwgMzg0MTUsIDM4NDI2LCAzODQzNywgMCwgMCwgMzg0NDgsIDM4NDU2LCAzODQ2NCwgCi0gICAgMzg0NzUsIDM4NDg2LCAzODQ5NywgMzg1MDgsIDM4NTE5LCAwLCAzODUzMCwgMCwgMzg1MzgsIDAsIDM4NTQ5LCAwLCAKLSAgICAzODU2MCwgMzg1NzEsIDM4NTc5LCAzODU4NywgMzg1OTgsIDM4NjA5LCAzODYyMCwgMzg2MzEsIDM4NjQyLCAzODY1MywgCi0gICAgMzg2NjEsIDM4NjY5LCAzODY4MCwgMzg2OTEsIDM4NzAyLCAzODcxMywgMzg3MjQsIDM4NzM1LCAzODc0MywgMzg3NTEsIAotICAgIDM4NzU5LCAzODc2NywgMzg3NzUsIDM4NzgzLCAzODc5MSwgMzg3OTksIDM4ODA3LCAzODgxNSwgMzg4MjMsIDM4ODMxLCAKLSAgICAzODgzOSwgMCwgMCwgMzg4NDcsIDM4ODU4LCAzODg2OSwgMzg4ODMsIDM4ODk3LCAzODkxMSwgMzg5MjUsIDM4OTM5LCAKLSAgICAzODk1MywgMzg5NjQsIDM4OTc1LCAzODk4OSwgMzkwMDMsIDM5MDE3LCAzOTAzMSwgMzkwNDUsIDM5MDU5LCAzOTA3MCwgCi0gICAgMzkwODEsIDM5MDk1LCAzOTEwOSwgMzkxMjMsIDM5MTM3LCAzOTE1MSwgMzkxNjUsIDM5MTc2LCAzOTE4NywgMzkyMDEsIAotICAgIDM5MjE1LCAzOTIyOSwgMzkyNDMsIDM5MjU3LCAzOTI3MSwgMzkyODIsIDM5MjkzLCAzOTMwNywgMzkzMjEsIDM5MzM1LCAKLSAgICAzOTM0OSwgMzkzNjMsIDM5Mzc3LCAzOTM4OCwgMzkzOTksIDM5NDEzLCAzOTQyNywgMzk0NDEsIDM5NDU1LCAzOTQ2OSwgCi0gICAgMzk0ODMsIDM5NDkxLCAzOTQ5OSwgMzk1MTAsIDM5NTE4LCAwLCAzOTUyOSwgMzk1MzcsIDM5NTQ4LCAzOTU1NiwgMzk1NjQsIAotICAgIDM5NTcyLCAzOTU4MCwgMzk1ODgsIDM5NTkxLCAzOTU5NCwgMzk1OTcsIDM5NjAwLCAzOTYwNiwgMzk2MTcsIDM5NjI1LCAwLCAKLSAgICAzOTYzNiwgMzk2NDQsIDM5NjU1LCAzOTY2MywgMzk2NzEsIDM5Njc5LCAzOTY4NywgMzk2OTUsIDM5NzAxLCAzOTcwNywgCi0gICAgMzk3MTMsIDM5NzIxLCAzOTcyOSwgMzk3NDAsIDAsIDAsIDM5NzUxLCAzOTc1OSwgMzk3NzAsIDM5Nzc4LCAzOTc4NiwgCi0gICAgMzk3OTQsIDAsIDM5ODAyLCAzOTgwOCwgMzk4MTQsIDM5ODIwLCAzOTgyOCwgMzk4MzYsIDM5ODQ3LCAzOTg1OCwgMzk4NjYsIAotICAgIDM5ODc0LCAzOTg4MiwgMzk4OTMsIDM5OTAxLCAzOTkwOSwgMzk5MTcsIDM5OTI1LCAzOTkzMywgMzk5MzksIDM5OTQ1LCAwLCAKLSAgICAwLCAzOTk0OCwgMzk5NTksIDM5OTY3LCAwLCAzOTk3OCwgMzk5ODYsIDM5OTk3LCA0MDAwNSwgNDAwMTMsIDQwMDIxLCAKLSAgICA0MDAyOSwgNDAwMzcsIDQwMDQwLCAwLCA0MDA0MywgNDAwNDcsIDQwMDUxLCA0MDA1NSwgNDAwNTksIDQwMDYzLCA0MDA2NywgCi0gICAgNDAwNzEsIDQwMDc1LCA0MDA3OSwgNDAwODMsIDQwMDg3LCA0MDA5MywgNDAwOTksIDQwMTA1LCA0MDEwOCwgNDAxMTEsIAotICAgIDQwMTEzLCA0MDExNywgNDAxMjEsIDQwMTI1LCA0MDEyOSwgNDAxMzIsIDQwMTM2LCA0MDE0MCwgNDAxNDYsIDQwMTUyLCAKLSAgICA0MDE1OSwgNDAxNjYsIDQwMTcxLCA0MDE3NiwgNDAxODIsIDQwMTg4LCA0MDE5MCwgNDAxOTMsIDQwMTk1LCA0MDE5OSwgCi0gICAgNDAyMDMsIDQwMjA3LCA0MDIxMSwgNDAyMTUsIDQwMjE5LCA0MDIyMywgNDAyMjcsIDQwMjMxLCA0MDIzNywgNDAyNDEsIAotICAgIDQwMjQ1LCA0MDI1MSwgNDAyNTYsIDQwMjYzLCA0MDI2NSwgNDAyNjgsIDQwMjcyLCA0MDI3NiwgNDAyODEsIDQwMjg3LCAKLSAgICA0MDI4OSwgNDAyOTgsIDQwMzA3LCA0MDMxMCwgNDAzMTQsIDQwMzE2LCA0MDMxOCwgNDAzMjAsIDQwMzIzLCA0MDMyOSwgCi0gICAgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNDAzNDYsIDQwMzUzLCA0MDM1NywgNDAzNjIsIDQwMzY3LCA0MDM3MiwgNDAzNzcsIAotICAgIDQwMzgxLCA0MDM4NSwgNDAzODgsIDQwMzkyLCA0MDM5NiwgNDA0MDMsIDQwNDA4LCA0MDQxMiwgNDA0MTYsIDQwNDIxLCAKLSAgICA0MDQyNSwgNDA0MjksIDQwNDM0LCA0MDQzOSwgNDA0NDMsIDQwNDQ3LCA0MDQ1MSwgNDA0NTMsIDQwNDU4LCA0MDQ2MywgCi0gICAgNDA0NjcsIDQwNDcxLCA0MDQ3NSwgNDA0NzksIDAsIDQwNDgzLCA0MDQ4NywgNDA0OTEsIDQwNDk3LCA0MDUwMywgNDA1MDksIAotICAgIDQwNTE1LCA0MDUyMiwgNDA1MjksIDQwNTM0LCA0MDUzOSwgNDA1NDMsIDAsIDAsIDQwNTQ5LCA0MDU1MiwgNDA1NTUsIAotICAgIDQwNTU4LCA0MDU2MiwgNDA1NjUsIDQwNTY5LCA0MDU3MywgNDA1NzcsIDQwNTgyLCA0MDU4NywgNDA1OTIsIDQwNTk5LCAKLSAgICA0MDYwMywgNDA2MDYsIDQwNjA5LCA0MDYxMiwgNDA2MTUsIDQwNjE4LCA0MDYyMSwgNDA2MjUsIDQwNjI4LCA0MDYzMiwgCi0gICAgNDA2MzYsIDQwNjQwLCA0MDY0NSwgNDA2NTAsIDAsIDQwNjU1LCA0MDY2MSwgNDA2NjcsIDQwNjczLCA0MDY4MCwgNDA2ODcsIAotICAgIDQwNjk0LCA0MDcwMSwgNDA3MDcsIDQwNzE0LCA0MDcyMSwgNDA3MjgsIDQwNzM0LCAwLCAwLCAwLCA0MDc0MSwgNDA3NDQsIAotICAgIDQwNzQ3LCA0MDc1MCwgNDA3NTUsIDQwNzU4LCA0MDc2MSwgNDA3NjQsIDQwNzY3LCA0MDc3MCwgNDA3NzMsIDQwNzc4LCAKLSAgICA0MDc4MSwgNDA3ODQsIDQwNzg3LCA0MDc5MCwgNDA3OTMsIDQwNzk4LCA0MDgwMSwgNDA4MDQsIDQwODA3LCA0MDgxMCwgCi0gICAgNDA4MTMsIDQwODE4LCA0MDgyMSwgNDA4MjQsIDQwODI5LCA0MDgzNCwgNDA4MzgsIDQwODQxLCA0MDg0NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA4NDcsIDQwODUyLCA0MDg1NywgNDA4NjQsIAotICAgIDQwODcyLCA0MDg3NywgNDA4ODIsIDQwODg2LCA0MDg5MCwgNDA4OTUsIDQwOTAyLCA0MDkwOSwgNDA5MTMsIDQwOTE4LCAKLSAgICA0MDkyMywgNDA5MjgsIDQwOTMzLCA0MDk0MCwgNDA5NDUsIDQwOTUwLCA0MDk1NSwgNDA5NjQsIDQwOTcxLCA0MDk3OCwgCi0gICAgNDA5ODIsIDQwOTg3LCA0MDk5MywgNDA5OTgsIDQxMDA1LCA0MTAxMywgNDEwMjEsIDQxMDI1LCA0MTAyOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwMzMsIDQxMDM3LCA0MTA0NSwgNDEwNDksIDQxMDUzLCAKLSAgICA0MTA1OCwgNDEwNjIsIDQxMDY2LCA0MTA3MCwgNDEwNzIsIDQxMDc2LCA0MTA4MCwgNDEwODQsIDQxMDg5LCA0MTA5MywgCi0gICAgNDEwOTcsIDQxMTA1LCA0MTEwOCwgNDExMTIsIDQxMTE1LCA0MTExOCwgNDExMjQsIDQxMTI4LCA0MTEzMSwgNDExMzcsIAotICAgIDQxMTQxLCA0MTE0NSwgNDExNDksIDQxMTUyLCA0MTE1NiwgNDExNTksIDQxMTYzLCA0MTE2NSwgNDExNjgsIDQxMTcxLCAKLSAgICA0MTE3NSwgNDExNzcsIDQxMTgxLCA0MTE4NCwgNDExODcsIDQxMTkyLCA0MTE5NywgNDEyMDQsIDQxMjA3LCA0MTIxMCwgCi0gICAgNDEyMTQsIDQxMjE5LCA0MTIyMiwgNDEyMjUsIDQxMjI4LCA0MTIzMiwgNDEyMzcsIDQxMjQxLCA0MTI0NCwgNDEyNDYsIAotICAgIDQxMjQ5LCA0MTI1MiwgNDEyNTUsIDQxMjU5LCA0MTI2NCwgNDEyNjcsIDQxMjcxLCA0MTI3NSwgNDEyNzksIDQxMjgzLCAKLSAgICA0MTI4OCwgNDEyOTQsIDQxMjk5LCA0MTMwNCwgNDEzMTAsIDQxMzE1LCA0MTMyMCwgNDEzMjQsIDQxMzI4LCA0MTMzMywgCi0gICAgNDEzMzcsIDQxMzQxLCA0MTM0NCwgNDEzNDYsIDQxMzUxLCA0MTM1NywgNDEzNjQsIDQxMzcxLCA0MTM3OCwgNDEzODUsIAotICAgIDQxMzkyLCA0MTM5OSwgNDE0MDYsIDQxNDEzLCA0MTQyMSwgNDE0MjgsIDQxNDM2LCA0MTQ0MywgNDE0NTAsIDQxNDU4LCAKLSAgICA0MTQ2NiwgNDE0NzEsIDQxNDc2LCA0MTQ4MSwgNDE0ODYsIDQxNDkxLCA0MTQ5NiwgNDE1MDEsIDQxNTA3LCA0MTUxMiwgCi0gICAgNDE1MTgsIDQxNTI0LCA0MTUzMCwgNDE1MzYsIDQxNTQyLCA0MTU0OSwgNDE1NTcsIDQxNTY0LCA0MTU3MCwgNDE1NzYsIAotICAgIDQxNTgyLCA0MTU4OCwgNDE1OTQsIDQxNjAwLCA0MTYwNywgNDE2MTMsIDQxNjIwLCA0MTYyNywgNDE2MzQsIDQxNjQxLCAKLSAgICA0MTY0OCwgNDE2NTYsIDQxNjY1LCA0MTY3MywgNDE2ODQsIDQxNjkyLCA0MTcwMCwgNDE3MDksIDQxNzE2LCA0MTcyNSwgCi0gICAgNDE3MzQsIDQxNzQyLCA0MTc1MSwgNDE3NTksIDQxNzYzLCAwLCAwLCAwLCAwLCA0MTc2NywgNDE3NjksIDQxNzcxLCAKLSAgICA0MTc3MywgNDE3NzUsIDQxNzc4LCA0MTc4MSwgNDE3ODUsIDQxNzg5LCA0MTc5NCwgNDE3OTksIDQxODAzLCA0MTgwNywgCi0gICAgNDE4MTEsIDQxODE1LCA0MTgyMCwgNDE4MjUsIDQxODMwLCA0MTgzNSwgNDE4NDAsIDQxODQ1LCA0MTg1MCwgNDE4NTUsIAotICAgIDQxODYwLCA0MTg2NSwgNDE4NzEsIDQxODc1LCA0MTg3OSwgNDE4ODQsIDQxODg5LCA0MTg5NCwgNDE4OTksIDQxOTAzLCAKLSAgICA0MTkxMCwgNDE5MTcsIDQxOTI0LCA0MTkzMSwgNDE5MzgsIDQxOTQ1LCA0MTk1MiwgNDE5NTksIDQxOTY3LCA0MTk3OSwgCi0gICAgNDE5ODUsIDQxOTkxLCA0MTk5OCwgNDIwMDUsIDQyMDEyLCA0MjAxOSwgNDIwMjYsIDQyMDMzLCA0MjA0MCwgNDIwNDcsIAotICAgIDQyMDUyLCA0MjA1OCwgNDIwNjMsIDQyMDY4LCA0MjA3MywgNDIwNzgsIDQyMDgzLCA0MjA5MCwgNDIwOTcsIDQyMTAyLCAKLSAgICA0MjEwOCwgNDIxMTMsIDQyMTE2LCA0MjExOSwgNDIxMjIsIDQyMTI1LCA0MjEyOSwgNDIxMzMsIDQyMTM4LCA0MjE0MywgCi0gICAgNDIxNDksIDQyMTU1LCA0MjE1OSwgNDIxNjMsIDQyMTY3LCA0MjE3MSwgNDIxNzYsIDQyMTgxLCA0MjE4NSwgNDIxODksIAotICAgIDQyMTkzLCA0MjE5NywgNDIyMDIsIDQyMjA3LCA0MjIxMCwgNDIyMTMsIDQyMjE2LCA0MjIxOSwgNDIyMjUsIDQyMjMyLCAKLSAgICA0MjI0MywgNDIyNTMsIDQyMjU3LCA0MjI2NSwgNDIyNzIsIDQyMjgwLCA0MjI4OSwgNDIyOTMsIDQyMjk5LCA0MjMwNSwgCi0gICAgNDIzMDksIDQyMzE0LCA0MjMxOSwgNDIzMjUsIDQyMzMxLCA0MjMzNywgNDIzNDQsIDQyMzQ4LCA0MjM1MiwgNDIzNTcsIAotICAgIDQyMzYwLCA0MjM2MiwgNDIzNjYsIDQyMzcwLCA0MjM3OCwgNDIzODIsIDQyMzg0LCA0MjM4NiwgNDIzOTAsIDQyMzk4LCAKLSAgICA0MjQwMywgNDI0MDksIDQyNDE5LCA0MjQyNiwgNDI0MzEsIDQyNDM1LCA0MjQzOSwgNDI0NDMsIDQyNDQ2LCA0MjQ0OSwgCi0gICAgNDI0NTIsIDQyNDU2LCA0MjQ2MCwgNDI0NjQsIDQyNDY4LCA0MjQ3MiwgNDI0NzUsIDQyNDc5LCA0MjQ4MywgNDI0ODYsIAotICAgIDQyNDg4LCA0MjQ5MSwgNDI0OTMsIDQyNDk3LCA0MjUwMSwgNDI1MDMsIDQyNTA5LCA0MjUxMiwgNDI1MTcsIDQyNTIxLCAKLSAgICA0MjUyNSwgNDI1MjcsIDQyNTI5LCA0MjUzMSwgNDI1MzQsIDQyNTM4LCA0MjU0MiwgNDI1NDYsIDQyNTUwLCA0MjU1NCwgCi0gICAgNDI1NjAsIDQyNTY2LCA0MjU2OCwgNDI1NzAsIDQyNTcyLCA0MjU3NCwgNDI1NzcsIDQyNTc5LCA0MjU4MywgNDI1ODUsIAotICAgIDQyNTg5LCA0MjU5MywgNDI1OTgsIDQyNjAyLCA0MjYwNiwgNDI2MTAsIDQyNjE0LCA0MjYxOCwgNDI2MjQsIDQyNjI4LCAKLSAgICA0MjYzOCwgNDI2NDgsIDQyNjUyLCA0MjY1OCwgNDI2NjUsIDQyNjY5LCA0MjY3MywgNDI2NzYsIDQyNjgxLCA0MjY4NSwgCi0gICAgNDI2OTEsIDQyNjk1LCA0MjcwOCwgNDI3MTcsIDQyNzIxLCA0MjcyNSwgNDI3MzEsIDQyNzM1LCA0MjczOCwgNDI3NDAsIAotICAgIDQyNzQzLCA0Mjc0NywgNDI3NTEsIDQyNzU4LCA0Mjc2MiwgNDI3NjYsIDQyNzcwLCA0Mjc3MywgNDI3NzgsIDQyNzgzLCAKLSAgICA0Mjc4OSwgNDI3OTUsIDQyODAwLCA0MjgwNSwgNDI4MTMsIDQyODIxLCA0MjgyNSwgNDI4MjksIDQyODMxLCA0MjgzNiwgCi0gICAgNDI4NDAsIDQyODQ0LCA0Mjg1MiwgNDI4NjAsIDQyODY3LCA0Mjg3NCwgNDI4ODMsIDQyODkyLCA0Mjg5OCwgNDI5MDQsIAotICAgIDQyOTEyLCA0MjkyMCwgNDI5MjIsIDQyOTI0LCA0MjkzMCwgNDI5MzYsIDQyOTQzLCA0Mjk1MCwgNDI5NTYsIDQyOTYyLCAKLSAgICA0Mjk2NiwgNDI5NzAsIDQyOTc3LCA0Mjk4NCwgNDI5OTEsIDQyOTk4LCA0MzAwOCwgNDMwMTgsIDQzMDI2LCA0MzAzNCwgCi0gICAgNDMwMzYsIDQzMDQwLCA0MzA0NCwgNDMwNDksIDQzMDU0LCA0MzA2MiwgNDMwNzAsIDQzMDczLCA0MzA3NiwgNDMwNzksIAotICAgIDQzMDgyLCA0MzA4NSwgNDMwOTAsIDQzMDk0LCA0MzA5OSwgNDMxMDQsIDQzMTA3LCA0MzExMCwgNDMxMTMsIDQzMTE2LCAKLSAgICA0MzExOSwgNDMxMjMsIDQzMTI2LCA0MzEyOSwgNDMxMzIsIDQzMTM1LCA0MzEzNywgNDMxMzksIDQzMTQxLCA0MzE0MywgCi0gICAgNDMxNTEsIDQzMTU5LCA0MzE2NSwgNDMxNjksIDQzMTc1LCA0MzE4NSwgNDMxOTEsIDQzMTk3LCA0MzIwMywgNDMyMTEsIAotICAgIDQzMjIwLCA0MzIzMiwgNDMyMzYsIDQzMjQwLCA0MzI0MiwgNDMyNDgsIDQzMjUwLCA0MzI1MiwgNDMyNTQsIDQzMjU2LCAKLSAgICA0MzI2MiwgNDMyNjUsIDQzMjcxLCA0MzI3NywgNDMyODEsIDQzMjg1LCA0MzI4OSwgNDMyOTIsIDQzMjk2LCA0MzMwMCwgCi0gICAgNDMzMDIsIDQzMzExLCA0MzMyMCwgNDMzMjUsIDQzMzMwLCA0MzMzNiwgNDMzNDIsIDQzMzQ4LCA0MzM1MSwgNDMzNTQsIAotICAgIDQzMzU3LCA0MzM2MCwgNDMzNjIsIDQzMzY3LCA0MzM3MiwgNDMzNzcsIDQzMzgzLCA0MzM4OSwgNDMzOTgsIDQzNDA3LCAKLSAgICA0MzQxNCwgNDM0MjEsIDQzNDI4LCA0MzQzNSwgNDM0NDUsIDQzNDU1LCA0MzQ2NSwgNDM0NzUsIDQzNDg1LCA0MzQ5NSwgCi0gICAgNDM1MDQsIDQzNTEzLCA0MzUyMiwgNDM1MzEsIDQzNTM5LCA0MzU1MSwgNDM1NjIsIDQzNTc4LCA0MzU4MSwgNDM1ODcsIAotICAgIDQzNTkzLCA0MzU5OSwgNDM2MDcsIDQzNjIyLCA0MzYzOCwgNDM2NDQsIDQzNjUwLCA0MzY1NywgNDM2NjMsIDQzNjcyLCAKLSAgICA0MzY3OSwgNDM2OTMsIDQzNzA4LCA0MzcxMywgNDM3MTksIDQzNzI3LCA0MzczMCwgNDM3MzMsIDQzNzM1LCA0MzczOCwgCi0gICAgNDM3NDEsIDQzNzQzLCA0Mzc0NSwgNDM3NDksIDQzNzUyLCA0Mzc1NSwgNDM3NTgsIDQzNzYxLCA0Mzc2NiwgNDM3NzEsIAotICAgIDQzNzc2LCA0Mzc4MSwgNDM3ODYsIDQzNzg5LCA0Mzc5MSwgNDM3OTMsIDQzNzk1LCA0Mzc5OSwgNDM4MDMsIDQzODA3LCAKLSAgICA0MzgxMywgNDM4MTgsIDQzODIwLCA0MzgyMiwgNDM4MjcsIDQzODMyLCA0MzgzNywgNDM4NDIsIDQzODQ3LCA0Mzg1MiwgCi0gICAgNDM4NTQsIDQzODU2LCA0Mzg2NiwgNDM4NzAsIDQzODc4LCA0Mzg4NywgNDM4ODksIDQzODk0LCA0Mzg5OSwgNDM5MDcsIAotICAgIDQzOTExLCA0MzkxMywgNDM5MTcsIDQzOTE5LCA0MzkyMywgNDM5MjcsIDQzOTMxLCA0MzkzMywgNDM5MzUsIDQzOTM3LCAKLSAgICA0Mzk0NCwgNDM5NTMsIDQzOTYyLCA0Mzk3MSwgNDM5ODAsIDQzOTg5LCA0Mzk5OCwgNDQwMDcsIDQ0MDE2LCA0NDAyNCwgCi0gICAgNDQwMzIsIDQ0MDQxLCA0NDA1MCwgNDQwNTksIDQ0MDY4LCA0NDA3NiwgNDQwODQsIDQ0MDkzLCA0NDEwMiwgNDQxMTEsIAotICAgIDQ0MTIxLCA0NDEzMCwgNDQxNDAsIDQ0MTQ5LCA0NDE1OSwgNDQxNjcsIDQ0MTc2LCA0NDE4NiwgNDQxOTUsIDQ0MjA1LCAKLSAgICA0NDIxNCwgNDQyMjQsIDQ0MjMyLCA0NDI0MSwgNDQyNTAsIDQ0MjU5LCA0NDI2OCwgNDQyNzcsIDQ0Mjg2LCA0NDI5NiwgCi0gICAgNDQzMDUsIDQ0MzE0LCA0NDMyMywgNDQzMzMsIDQ0MzQyLCA0NDM1MSwgNDQzNjAsIDQ0MzY5LCA0NDM3OSwgNDQzODksIAotICAgIDQ0Mzk4LCA0NDQwNywgNDQ0MTUsIDQ0NDI0LCA0NDQzMSwgNDQ0NDAsIDQ0NDQ5LCA0NDQ2MCwgNDQ0NjksIDQ0NDc5LCAKLSAgICA0NDQ4OSwgNDQ0OTYsIDQ0NTAzLCA0NDUxMCwgNDQ1MTksIDQ0NTI4LCA0NDUzNywgNDQ1NDYsIDQ0NTUzLCA0NDU1OCwgCi0gICAgNDQ1NjYsIDQ0NTcxLCA0NDU3NCwgNDQ1ODEsIDQ0NTg0LCA0NDU4OSwgNDQ1OTQsIDQ0NTk3LCA0NDYwMCwgNDQ2MDgsIAotICAgIDQ0NjExLCA0NDYxNiwgNDQ2MTksIDQ0NjI3LCA0NDYzMiwgNDQ2NDAsIDQ0NjQzLCA0NDY0NiwgNDQ2NDksIDQ0NjU0LCAKLSAgICA0NDY1OSwgNDQ2NjIsIDQ0NjY1LCA0NDY3MywgNDQ2NzYsIDQ0NjgzLCA0NDY5MCwgNDQ2OTQsIDQ0Njk4LCA0NDcwMywgCi0gICAgNDQ3MDgsIDQ0NzE0LCA0NDcxOSwgNDQ3MjUsIDQ0NzMxLCA0NDczNiwgNDQ3NDIsIDQ0NzUwLCA0NDc1NiwgNDQ3NjQsIAotICAgIDQ0NzcyLCA0NDc3OCwgNDQ3ODYsIDQ0Nzk0LCA0NDgwMiwgNDQ4MTAsIDQ0ODE2LCA0NDgyNCwgNDQ4MzIsIDQ0ODQwLCAKLSAgICA0NDg0NCwgNDQ4NTAsIDQ0ODY0LCA0NDg3OCwgNDQ4ODIsIDQ0ODg2LCA0NDg5MCwgNDQ4OTQsIDQ0OTA0LCA0NDkwOCwgCi0gICAgNDQ5MTMsIDQ0OTE4LCA0NDkyNCwgNDQ5MzAsIDQ0OTM2LCA0NDk0MiwgNDQ5NTIsIDQ0OTYyLCA0NDk3MCwgNDQ5ODEsIAotICAgIDQ0OTkyLCA0NTAwMCwgNDUwMTEsIDQ1MDIyLCA0NTAzMCwgNDUwNDEsIDQ1MDUyLCA0NTA2MCwgNDUwNjgsIDQ1MDc4LCAKLSAgICA0NTA4OCwgNDUwOTEsIDQ1MDk0LCA0NTA5NywgNDUxMDIsIDQ1MTA2LCA0NTExMiwgNDUxMTksIDQ1MTI2LCA0NTEzNCwgCi0gICAgNDUxNDEsIDQ1MTQ1LCA0NTE0OSwgNDUxNTMsIDQ1MTU3LCA0NTE1OSwgNDUxNjMsIDQ1MTY3LCA0NTE3MiwgNDUxNzcsIAotICAgIDQ1MTg0LCA0NTE5MSwgNDUxOTQsIDQ1MjAxLCA0NTIwMywgNDUyMDUsIDQ1MjA5LCA0NTIxMywgNDUyMTgsIDQ1MjI0LCAKLSAgICA0NTIzMCwgNDUyMzYsIDQ1MjQyLCA0NTI1MSwgNDUyNjAsIDQ1MjY5LCA0NTI3MywgNDUyNzUsIDQ1Mjc5LCA0NTI4NiwgCi0gICAgNDUyOTMsIDQ1MzAwLCA0NTMwNywgNDUzMTQsIDQ1MzE3LCA0NTMyMiwgMCwgMCwgMCwgMCwgMCwgNDUzMjgsIDQ1MzMyLCAKLSAgICA0NTMzOSwgNDUzNDYsIDQ1MzUzLCA0NTM2MCwgNDUzNjQsIDQ1MzY4LCA0NTM3MiwgNDUzNzYsIDQ1MzgyLCA0NTM4OCwgCi0gICAgNDUzOTMsIDQ1Mzk5LCA0NTQwNSwgNDU0MTEsIDQ1NDE3LCA0NTQyNSwgNDU0MzIsIDQ1NDM5LCA0NTQ0NiwgNDU0NTMsIAotICAgIDQ1NDU4LCA0NTQ2NCwgNDU0NzMsIDQ1NDc3LCA0NTQ4NCwgNDU0ODgsIDQ1NDkyLCA0NTQ5OCwgNDU1MDQsIDQ1NTEwLCAKLSAgICA0NTUxNiwgNDU1MjAsIDQ1NTI0LCA0NTUyNywgNDU1MzAsIDQ1NTM0LCA0NTU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU1NDgsIDQ1NTUxLCA0NTU1NSwgCi0gICAgNDU1NTksIDQ1NTY1LCA0NTU3MSwgNDU1NzcsIDQ1NTg1LCA0NTU5MiwgNDU1OTYsIDQ1NjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTYwOSwgNDU2MTIsIDQ1NjE1LCA0NTYxOCwgCi0gICAgNDU2MjEsIDQ1NjI0LCA0NTYyNywgNDU2MzEsIDQ1NjM0LCA0NTYzOCwgNDU2NDIsIDQ1NjQ2LCA0NTY1MCwgNDU2NTQsIAotICAgIDQ1NjU4LCA0NTY2MiwgNDU2NjYsIDQ1NjcwLCA0NTY3NCwgNDU2NzgsIDQ1NjgyLCA0NTY4NSwgNDU2ODgsIDQ1NjkxLCAKLSAgICA0NTY5NCwgNDU2OTcsIDQ1NzAwLCA0NTcwNCwgNDU3MDcsIDQ1NzExLCA0NTcxNSwgNDU3MTksIDQ1NzIzLCA0NTcyNywgCi0gICAgNDU3MzEsIDQ1NzM1LCA0NTczOSwgNDU3NDMsIDQ1NzQ3LCA0NTc1MSwgNDU3NTUsIDQ1NzYxLCA0NTc2NywgNDU3NzMsIAotICAgIDQ1NzgwLCA0NTc4NywgNDU3OTQsIDQ1ODAxLCA0NTgwOCwgNDU4MTUsIDQ1ODIyLCA0NTgyOSwgNDU4MzYsIDQ1ODQzLCAKLSAgICA0NTg1MCwgNDU4NTcsIDQ1ODY0LCA0NTg3MSwgNDU4NzgsIDQ1ODg1LCA0NTg5MiwgNDU4OTcsIDQ1OTAzLCA0NTkwOSwgCi0gICAgNDU5MTUsIDQ1OTIwLCA0NTkyNiwgNDU5MzIsIDQ1OTM4LCA0NTk0MywgNDU5NDksIDQ1OTU1LCA0NTk2MCwgNDU5NjYsIAotICAgIDQ1OTcyLCA0NTk3NywgNDU5ODMsIDQ1OTg5LCA0NTk5NCwgNDU5OTksIDQ2MDA1LCA0NjAxMCwgNDYwMTYsIDQ2MDIyLCAKLSAgICA0NjAyOCwgNDYwMzQsIDQ2MDQwLCA0NjA0NSwgNDYwNTEsIDQ2MDU3LCA0NjA2MywgNDYwNjgsIDQ2MDc0LCA0NjA4MCwgCi0gICAgNDYwODYsIDQ2MDkxLCA0NjA5NywgNDYxMDMsIDQ2MTA4LCA0NjExNCwgNDYxMjAsIDQ2MTI1LCA0NjEzMSwgNDYxMzcsIAotICAgIDQ2MTQyLCA0NjE0NywgNDYxNTMsIDQ2MTU4LCA0NjE2NCwgNDYxNzAsIDQ2MTc2LCA0NjE4MiwgNDYxODgsIDQ2MTkzLCAKLSAgICA0NjE5OSwgNDYyMDUsIDQ2MjExLCA0NjIxNiwgNDYyMjIsIDQ2MjI4LCA0NjIzNCwgNDYyMzksIDQ2MjQ1LCA0NjI1MSwgCi0gICAgNDYyNTYsIDQ2MjYyLCA0NjI2OCwgNDYyNzMsIDQ2Mjc5LCA0NjI4NSwgNDYyOTAsIDQ2Mjk1LCA0NjMwMSwgNDYzMDYsIAotICAgIDQ2MzEyLCA0NjMxOCwgNDYzMjQsIDQ2MzMwLCA0NjMzNiwgNDYzNDAsIDQ2MzQ1LCA0NjM1MCwgNDYzNTUsIDQ2MzYwLCAKLSAgICA0NjM2NSwgNDYzNzAsIDQ2Mzc1LCA0NjM4MCwgNDYzODUsIDQ2MzkwLCA0NjM5NCwgNDYzOTgsIDQ2NDAyLCA0NjQwNiwgCi0gICAgNDY0MTAsIDQ2NDE0LCA0NjQxOSwgNDY0MjMsIDQ2NDI4LCA0NjQzMywgNDY0MzgsIDQ2NDQzLCA0NjQ0OCwgNDY0NTMsIAotICAgIDQ2NDU4LCA0NjQ2NywgNDY0NzYsIDQ2NDg1LCA0NjQ5NCwgNDY1MDMsIDQ2NTEyLCA0NjUyMSwgNDY1MzAsIDQ2NTM3LCAKLSAgICA0NjU0NSwgNDY1NTMsIDQ2NTYwLCA0NjU2NywgNDY1NzUsIDQ2NTgzLCA0NjU5MCwgNDY1OTcsIDQ2NjA1LCA0NjYxMywgCi0gICAgNDY2MjAsIDQ2NjI3LCA0NjYzNSwgNDY2NDMsIDQ2NjUwLCA0NjY1NywgNDY2NjUsIDQ2Njc0LCA0NjY4MywgNDY2OTEsIAotICAgIDQ2NzAwLCA0NjcwOSwgNDY3MTYsIDQ2NzIzLCA0NjczMSwgNDY3NDAsIDQ2NzQ5LCA0Njc1NywgNDY3NjYsIDQ2Nzc1LCAKLSAgICA0Njc4MiwgNDY3ODksIDQ2Nzk4LCA0NjgwNywgNDY4MTYsIDQ2ODI1LCA0NjgzNCwgNDY4NDMsIDQ2ODUwLCA0Njg1NywgCi0gICAgNDY4NjYsIDQ2ODc1LCA0Njg4NCwgNDY4OTMsIDQ2OTAyLCA0NjkxMSwgNDY5MTgsIDQ2OTI1LCA0NjkzNCwgNDY5NDMsIAotICAgIDQ2OTUyLCA0Njk2MiwgNDY5NzIsIDQ2OTgxLCA0Njk5MSwgNDcwMDEsIDQ3MDExLCA0NzAyMSwgNDcwMzEsIDQ3MDQxLCAKLSAgICA0NzA1MCwgNDcwNTksIDQ3MDY2LCA0NzA3NCwgNDcwODIsIDQ3MDkwLCA0NzA5OCwgNDcxMDMsIDQ3MTA4LCA0NzExNywgCi0gICAgNDcxMjUsIDQ3MTMyLCA0NzE0MSwgNDcxNDksIDQ3MTU2LCA0NzE2NSwgNDcxNzMsIDQ3MTgwLCA0NzE4OSwgNDcxOTcsIAotICAgIDQ3MjA0LCA0NzIxMywgNDcyMjEsIDQ3MjI4LCA0NzIzNywgNDcyNDUsIDQ3MjUyLCA0NzI2MiwgNDcyNzEsIDQ3Mjc4LCAKLSAgICA0NzI4OCwgNDcyOTcsIDQ3MzA0LCA0NzMxNCwgNDczMjMsIDQ3MzMwLCA0NzMzOSwgNDczNDgsIDQ3MzU3LCA0NzM2NiwgCi0gICAgNDczODAsIDQ3Mzk0LCA0NzQwMSwgNDc0MDYsIDQ3NDExLCA0NzQxNiwgNDc0MjEsIDQ3NDI2LCA0NzQzMSwgNDc0MzYsIAotICAgIDQ3NDQxLCA0NzQ0OSwgNDc0NTcsIDQ3NDY1LCA0NzQ3MywgNDc0NzgsIDQ3NDg1LCA0NzQ5MiwgNDc0OTksIDQ3NTA0LCAKLSAgICA0NzUxMiwgNDc1MTksIDQ3NTI3LCA0NzUzMSwgNDc1MzgsIDQ3NTQ0LCA0NzU1MSwgNDc1NTUsIDQ3NTYxLCA0NzU2NywgCi0gICAgNDc1NzMsIDQ3NTc3LCA0NzU4MCwgNDc1ODQsIDQ3NTg4LCA0NzU5NSwgNDc2MDEsIDQ3NjA3LCA0NzYxMywgNDc2MTksIAotICAgIDQ3NjMzLCA0NzY0MywgNDc2NTcsIDQ3NjcxLCA0NzY3NywgNDc2ODcsIDQ3NzAxLCA0NzcwNCwgNDc3MDcsIDQ3NzE0LCAKLSAgICA0NzcyMiwgNDc3MjgsIDQ3NzMzLCA0Nzc0MSwgNDc3NTMsIDQ3NzY1LCA0Nzc3MywgNDc3NzcsIDQ3NzgxLCA0Nzc4NCwgCi0gICAgNDc3ODcsIDQ3NzkxLCA0Nzc5NSwgNDc3OTgsIDQ3ODAxLCA0NzgwNiwgNDc4MTEsIDQ3ODE3LCA0NzgyMywgNDc4MjgsIAotICAgIDQ3ODMzLCA0NzgzOSwgNDc4NDUsIDQ3ODUwLCA0Nzg1NSwgNDc4NjAsIDQ3ODY1LCA0Nzg3MSwgNDc4NzcsIDQ3ODgyLCAKLSAgICA0Nzg4NywgNDc4OTMsIDQ3ODk5LCA0NzkwNCwgNDc5MDksIDQ3OTEyLCA0NzkxNSwgNDc5MjQsIDQ3OTI2LCA0NzkyOCwgCi0gICAgNDc5MzEsIDQ3OTM1LCA0Nzk0MSwgNDc5NDMsIDQ3OTQ2LCA0Nzk1MywgNDc5NjAsIDQ3OTY4LCA0Nzk3NiwgNDc5ODYsIAotICAgIDQ4MDAwLCA0ODAwNSwgNDgwMTAsIDQ4MDE0LCA0ODAxOSwgNDgwMjcsIDQ4MDM1LCA0ODA0NCwgNDgwNTMsIDQ4MDYyLCAKLSAgICA0ODA3MSwgNDgwNzYsIDQ4MDgxLCA0ODA4NywgNDgwOTMsIDQ4MDk5LCA0ODEwNSwgNDgxMDgsIDQ4MTE0LCA0ODEyMCwgCi0gICAgNDgxMzAsIDQ4MTQwLCA0ODE0OCwgNDgxNTYsIDQ4MTY1LCA0ODE3NCwgNDgxNzgsIDQ4MTg2LCA0ODE5NCwgNDgyMDIsIAotICAgIDQ4MjEwLCA0ODIxOSwgNDgyMjgsIDQ4MjM3LCA0ODI0NiwgNDgyNTEsIDQ4MjU2LCA0ODI2MSwgNDgyNjYsIDQ4MjcxLCAKLSAgICA0ODI3NywgNDgyODMsIDQ4Mjg4LCA0ODI5NCwgNDgyOTYsIDQ4Mjk4LCA0ODMwMCwgNDgzMDIsIDQ4MzA1LCA0ODMwOCwgCi0gICAgNDgzMTAsIDQ4MzEyLCA0ODMxNCwgNDgzMTgsIDQ4MzIyLCA0ODMyNCwgNDgzMjYsIDQ4MzI5LCA0ODMzMiwgNDgzMzYsIAotICAgIDQ4MzQyLCA0ODM0OCwgNDgzNTAsIDQ4MzU3LCA0ODM2MSwgNDgzNjYsIDQ4MzcxLCA0ODM3MywgNDgzODMsIDQ4Mzg5LCAKLSAgICA0ODM5NSwgNDg0MDEsIDQ4NDA3LCA0ODQxMywgNDg0MTksIDQ4NDI0LCA0ODQyNywgNDg0MzAsIDQ4NDMzLCA0ODQzNSwgCi0gICAgNDg0MzcsIDQ4NDQxLCA0ODQ0NSwgNDg0NTAsIDQ4NDU1LCA0ODQ2MCwgNDg0NjMsIDQ4NDY3LCA0ODQ3MiwgNDg0NzUsIAotICAgIDQ4NDc5LCA0ODQ4NCwgNDg0ODksIDQ4NDk0LCA0ODQ5OSwgNDg1MDQsIDQ4NTA5LCA0ODUxNCwgNDg1MTksIDQ4NTI0LCAKLSAgICA0ODUyOSwgNDg1MzQsIDQ4NTM5LCA0ODU0NSwgNDg1NTEsIDQ4NTU3LCA0ODU1OSwgNDg1NjIsIDQ4NTY0LCA0ODU2NywgCi0gICAgNDg1NjksIDQ4NTcxLCA0ODU3MywgNDg1NzUsIDQ4NTc3LCA0ODU3OSwgNDg1ODEsIDQ4NTgzLCA0ODU4NSwgNDg1ODcsIAotICAgIDQ4NTg5LCA0ODU5MSwgNDg1OTMsIDQ4NTk1LCA0ODU5NywgNDg1OTksIDQ4NjAxLCA0ODYwNiwgNDg2MTEsIDQ4NjE2LCAKLSAgICA0ODYyMSwgNDg2MjYsIDQ4NjMxLCA0ODYzNiwgNDg2NDEsIDQ4NjQ2LCA0ODY1MSwgNDg2NTYsIDQ4NjYxLCA0ODY2NiwgCi0gICAgNDg2NzEsIDQ4Njc2LCA0ODY4MSwgNDg2ODYsIDQ4NjkxLCA0ODY5NiwgNDg3MDEsIDQ4NzA1LCA0ODcwOSwgNDg3MTMsIAotICAgIDQ4NzE5LCA0ODcyNSwgNDg3MzAsIDQ4NzM1LCA0ODc0MCwgNDg3NDYsIDQ4NzUyLCA0ODc1NywgNDg3NjUsIDQ4NzczLCAKLSAgICA0ODc4MSwgNDg3ODksIDQ4Nzk3LCA0ODgwNSwgNDg4MTMsIDQ4ODIxLCA0ODgyNywgNDg4MzIsIDQ4ODM3LCA0ODg0MiwgCi0gICAgNDg4NDUsIDQ4ODQ5LCA0ODg1MywgNDg4NTcsIDQ4ODYxLCA0ODg2NSwgNDg4NjksIDQ4ODc2LCA0ODg4MywgNDg4OTEsIAotICAgIDQ4ODk5LCA0ODkwNCwgNDg5MDksIDQ4OTE2LCA0ODkyMywgNDg5MzAsIDQ4OTM3LCA0ODk0MCwgNDg5NDMsIDQ4OTQ4LCAKLSAgICA0ODk1MCwgNDg5NTQsIDQ4OTU5LCA0ODk2MSwgNDg5NjMsIDQ4OTY1LCA0ODk2NywgNDg5NzIsIDQ4OTc1LCA0ODk3NywgCi0gICAgNDg5ODIsIDQ4OTg5LCA0ODk5NiwgNDg5OTksIDQ5MDAzLCA0OTAwOCwgNDkwMTMsIDQ5MDIxLCA0OTAyNywgNDkwMzMsIAotICAgIDQ5MDQ1LCA0OTA1MiwgNDkwNjAsIDQ5MDY1LCA0OTA3MCwgNDkwNzYsIDQ5MDc5LCA0OTA4MiwgNDkwODcsIDQ5MDg5LCAKLSAgICA0OTA5MywgNDkwOTUsIDQ5MDk3LCA0OTA5OSwgNDkxMDEsIDQ5MTAzLCA0OTEwNSwgNDkxMTAsIDQ5MTEyLCA0OTExNCwgCi0gICAgNDkxMTYsIDQ5MTE4LCA0OTEyMiwgNDkxMjQsIDQ5MTI3LCA0OTEzMiwgNDkxMzcsIDQ5MTQyLCA0OTE0NywgNDkxNTMsIAotICAgIDQ5MTU5LCA0OTE2MSwgNDkxNjQsIDQ5MTcxLCA0OTE3OCwgNDkxODUsIDQ5MTkyLCA0OTE5NiwgNDkyMDAsIDQ5MjAyLCAKLSAgICA0OTIwNCwgNDkyMDgsIDQ5MjE0LCA0OTIxOSwgNDkyMjEsIDQ5MjI1LCA0OTIzNCwgNDkyNDIsIDQ5MjUwLCA0OTI1NiwgCi0gICAgNDkyNjIsIDQ5MjY3LCA0OTI3MywgNDkyNzgsIDQ5MjgxLCA0OTI5NSwgNDkyOTgsIDQ5MzAzLCA0OTMwOCwgNDkzMTQsIAotICAgIDQ5MzI0LCA0OTMyNiwgNDkzMzIsIDQ5MzM4LCA0OTM0MiwgNDkzNDksIDQ5MzUzLCA0OTM1NSwgNDkzNTcsIDQ5MzYxLCAKLSAgICA0OTM2NywgNDkzNzIsIDQ5Mzc4LCA0OTM4MCwgNDkzODYsIDQ5Mzg4LCA0OTM5NCwgNDkzOTYsIDQ5Mzk4LCA0OTQwMywgCi0gICAgNDk0MDUsIDQ5NDA5LCA0OTQxNCwgNDk0MTYsIDQ5NDIxLCA0OTQyNiwgNDk0MzAsIDQ5NDM3LCA0OTQ0NywgNDk0NTIsIAotICAgIDQ5NDU4LCA0OTQ2MSwgNDk0NjcsIDQ5NDcwLCA0OTQ3NSwgNDk0ODAsIDQ5NDg0LCA0OTQ4NiwgNDk0ODgsIDQ5NDkyLCAKLSAgICA0OTQ5NiwgNDk1MDAsIDQ5NTA0LCA0OTUwOSwgNDk1MTEsIDQ5NTE2LCA0OTUxOSwgNDk1MjIsIDQ5NTI1LCA0OTUyOSwgCi0gICAgNDk1MzMsIDQ5NTM4LCA0OTU0MiwgNDk1NDcsIDQ5NTUyLCA0OTU1NiwgNDk1NjEsIDQ5NTY3LCA0OTU3MCwgNDk1NzYsIAotICAgIDQ5NTgxLCA0OTU4NSwgNDk1OTAsIDQ5NTk2LCA0OTYwMiwgNDk2MDksIDQ5NjE1LCA0OTYyMiwgNDk2MjksIDQ5NjMxLCAKLSAgICA0OTYzOCwgNDk2NDIsIDQ5NjQ4LCA0OTY1NCwgNDk2NTksIDQ5NjY1LCA0OTY2OSwgNDk2NzQsIDQ5Njc3LCA0OTY4MiwgCi0gICAgNDk2ODgsIDQ5Njk1LCA0OTcwMywgNDk3MTAsIDQ5NzE5LCA0OTcyOSwgNDk3MzYsIDQ5NzQyLCA0OTc0NiwgNDk3NTMsIAotICAgIDQ5NzU4LCA0OTc2NywgNDk3NzAsIDQ5NzczLCA0OTc4MiwgNDk3OTIsIDQ5Nzk5LCA0OTgwMSwgNDk4MDcsIDQ5ODEyLCAKLSAgICA0OTgxNCwgNDk4MTcsIDQ5ODIxLCA0OTgyOSwgNDk4MzgsIDQ5ODQxLCA0OTg0NiwgNDk4NTEsIDQ5ODU5LCA0OTg2NywgCi0gICAgNDk4NzUsIDQ5ODgzLCA0OTg4OSwgNDk4OTUsIDQ5OTAxLCA0OTkwOSwgNDk5MTQsIDQ5OTE3LCA0OTkyMSwgNDk5MjQsIAotICAgIDQ5OTM2LCA0OTk0NiwgNDk5NTcsIDQ5OTY2LCA0OTk3NywgNDk5ODcsIDQ5OTk2LCA1MDAwMiwgNTAwMTAsIDUwMDE0LCAKLSAgICA1MDAyMiwgNTAwMjYsIDUwMDM0LCA1MDA0MSwgNTAwNDgsIDUwMDU3LCA1MDA2NiwgNTAwNzYsIDUwMDg2LCA1MDA5NiwgCi0gICAgNTAxMDYsIDUwMTE1LCA1MDEyNCwgNTAxMzQsIDUwMTQ0LCA1MDE1MywgNTAxNjIsIDUwMTY4LCA1MDE3NCwgNTAxODAsIAotICAgIDUwMTg2LCA1MDE5MiwgNTAxOTgsIDUwMjA1LCA1MDIxMSwgNTAyMTgsIDUwMjI1LCA1MDIzMSwgNTAyMzcsIDUwMjQzLCAKLSAgICA1MDI0OSwgNTAyNTUsIDUwMjYxLCA1MDI2OCwgNTAyNzQsIDUwMjgxLCA1MDI4OCwgNTAyOTUsIDUwMzAyLCA1MDMwOSwgCi0gICAgNTAzMTYsIDUwMzIzLCA1MDMzMCwgNTAzMzgsIDUwMzQ1LCA1MDM1MywgNTAzNjEsIDUwMzY2LCA1MDM2OSwgNTAzNzMsIAotICAgIDUwMzc3LCA1MDM4MywgNTAzODYsIDUwMzkxLCA1MDM5NywgNTA0MDIsIDUwNDA2LCA1MDQxMSwgNTA0MTcsIDUwNDI0LCAKLSAgICA1MDQyNywgNTA0MzQsIDUwNDQxLCA1MDQ0NSwgNTA0NTMsIDUwNDYxLCA1MDQ2NiwgNTA0NzIsIDUwNDc3LCA1MDQ4MiwgCi0gICAgNTA0ODksIDUwNDk2LCA1MDUwNCwgNTA1MTIsIDUwNTIxLCA1MDUyNSwgNTA1MzQsIDUwNTM5LCA1MDU0MywgNTA1NTAsIAotICAgIDUwNTU0LCA1MDU2MCwgNTA1NjgsIDUwNTczLCA1MDU4MCwgNTA1ODQsIDUwNTg5LCA1MDU5MywgNTA1OTgsIDUwNjAyLCAKLSAgICA1MDYwNywgNTA2MTIsIDUwNjIxLCA1MDYyMywgNTA2MjYsIDUwNjI5LCA1MDYzNiwgNTA2NDMsIDUwNjQ5LCA1MDY1NywgCi0gICAgNTA2NjMsIDUwNjcwLCA1MDY3NSwgNTA2NzgsIDUwNjgzLCA1MDY4OCwgNTA2OTMsIDUwNzAxLCA1MDcwNSwgNTA3MTIsIAotICAgIDUwNzIwLCA1MDcyOCwgNTA3MzMsIDUwNzM4LCA1MDc0NCwgNTA3NDksIDUwNzU0LCA1MDc2MCwgNTA3NjUsIDUwNzY4LCAKLSAgICA1MDc3MiwgNTA3NzYsIDUwNzgzLCA1MDc5MywgNTA3OTgsIDUwODA3LCA1MDgxNiwgNTA4MjIsIDUwODI4LCA1MDgzMywgCi0gICAgNTA4MzgsIDUwODQzLCA1MDg0OCwgNTA4NTQsIDUwODYwLCA1MDg2OCwgNTA4NzYsIDUwODgyLCA1MDg4OCwgNTA4OTIsIAotICAgIDUwODk2LCA1MDkwMywgNTA5MTAsIDUwOTE2LCA1MDkxOSwgNTA5MjIsIDUwOTI2LCA1MDkzMCwgNTA5MzQsIDUwOTM5LCAKLSAgICA1MDk0NSwgNTA5NTEsIDUwOTU4LCA1MDk2NSwgNTA5NzAsIDUwOTc0LCA1MDk3OCwgNTA5ODIsIDUwOTg2LCA1MDk5MCwgCi0gICAgNTA5OTQsIDUwOTk4LCA1MTAwMiwgNTEwMDYsIDUxMDEwLCA1MTAxNCwgNTEwMTgsIDUxMDIyLCA1MTAyNiwgNTEwMzAsIAotICAgIDUxMDM0LCA1MTAzOCwgNTEwNDIsIDUxMDQ2LCA1MTA1MCwgNTEwNTQsIDUxMDU4LCA1MTA2MiwgNTEwNjYsIDUxMDcwLCAKLSAgICA1MTA3NCwgNTEwNzgsIDUxMDgyLCA1MTA4NiwgNTEwOTAsIDUxMDk0LCA1MTA5OCwgNTExMDIsIDUxMTA2LCA1MTExMCwgCi0gICAgNTExMTQsIDUxMTE4LCA1MTEyMiwgNTExMjYsIDUxMTMwLCA1MTEzNCwgNTExMzgsIDUxMTQyLCA1MTE0NiwgNTExNTAsIAotICAgIDUxMTU0LCA1MTE1OCwgNTExNjIsIDUxMTY2LCA1MTE3MCwgNTExNzQsIDUxMTc4LCA1MTE4MiwgNTExODYsIDUxMTkwLCAKLSAgICA1MTE5NCwgNTExOTgsIDUxMjAyLCA1MTIwNiwgNTEyMTAsIDUxMjE0LCA1MTIxOCwgNTEyMjIsIDUxMjI2LCA1MTIzMCwgCi0gICAgNTEyMzQsIDUxMjM4LCA1MTI0MiwgNTEyNDYsIDUxMjUwLCA1MTI1NCwgNTEyNTgsIDUxMjYyLCA1MTI2NiwgNTEyNzAsIAotICAgIDUxMjc0LCA1MTI3OCwgNTEyODIsIDUxMjg2LCA1MTI5MCwgNTEyOTQsIDUxMjk4LCA1MTMwMiwgNTEzMDYsIDUxMzEwLCAKLSAgICA1MTMxNCwgNTEzMTgsIDUxMzIyLCA1MTMyNiwgNTEzMzAsIDUxMzM0LCA1MTMzOCwgNTEzNDIsIDUxMzQ2LCA1MTM1MCwgCi0gICAgNTEzNTQsIDUxMzU4LCA1MTM2MiwgNTEzNjYsIDUxMzcwLCA1MTM3NCwgNTEzNzgsIDUxMzgyLCA1MTM4NiwgNTEzOTAsIAotICAgIDUxMzk0LCA1MTM5OCwgNTE0MDIsIDUxNDA2LCA1MTQxMCwgNTE0MTQsIDUxNDE4LCA1MTQyMiwgNTE0MjYsIDUxNDMwLCAKLSAgICA1MTQzNCwgNTE0MzgsIDUxNDQyLCA1MTQ0NiwgNTE0NTAsIDUxNDU0LCA1MTQ1OCwgNTE0NjIsIDUxNDY2LCA1MTQ3MCwgCi0gICAgNTE0NzQsIDUxNDc4LCA1MTQ4MiwgNTE0ODYsIDUxNDkwLCA1MTQ5NCwgNTE0OTgsIDUxNTAyLCA1MTUwNiwgNTE1MTAsIAotICAgIDUxNTE0LCA1MTUxOCwgNTE1MjIsIDUxNTI2LCA1MTUzMCwgNTE1MzQsIDUxNTM4LCA1MTU0MiwgNTE1NDYsIDUxNTUwLCAKLSAgICA1MTU1NCwgNTE1NTgsIDUxNTYyLCA1MTU2NiwgNTE1NzAsIDUxNTc0LCA1MTU3OCwgNTE1ODIsIDUxNTg2LCA1MTU5MCwgCi0gICAgNTE1OTQsIDUxNTk4LCA1MTYwMiwgNTE2MDYsIDUxNjEwLCA1MTYxNCwgNTE2MTgsIDUxNjIyLCA1MTYyNiwgNTE2MzAsIAotICAgIDUxNjM0LCA1MTYzOCwgNTE2NDIsIDUxNjQ2LCA1MTY1MCwgNTE2NTQsIDUxNjU4LCA1MTY2MiwgNTE2NjYsIDUxNjcwLCAKLSAgICA1MTY3NCwgNTE2NzgsIDUxNjgyLCA1MTY4NiwgNTE2OTAsIDUxNjk0LCA1MTY5OCwgNTE3MDIsIDUxNzA2LCA1MTcxMCwgCi0gICAgNTE3MTQsIDUxNzE4LCA1MTcyMiwgNTE3MjYsIDUxNzMwLCA1MTczNCwgNTE3MzgsIDUxNzQyLCA1MTc0NiwgNTE3NTAsIAotICAgIDUxNzU0LCA1MTc1OCwgNTE3NjIsIDUxNzY2LCA1MTc3MCwgNTE3NzQsIDUxNzc4LCA1MTc4MiwgNTE3ODYsIDUxNzkwLCAKLSAgICA1MTc5NCwgNTE3OTgsIDUxODAyLCA1MTgwNiwgNTE4MTAsIDUxODE0LCA1MTgxOCwgNTE4MjIsIDUxODI2LCA1MTgzMCwgCi0gICAgNTE4MzQsIDUxODM4LCA1MTg0MiwgNTE4NDYsIDUxODUwLCA1MTg1NCwgNTE4NTgsIDUxODYyLCA1MTg2NiwgNTE4NzAsIAotICAgIDUxODc0LCA1MTg3OCwgNTE4ODIsIDUxODg2LCA1MTg5MCwgNTE4OTQsIDUxODk4LCA1MTkwMiwgNTE5MDYsIDUxOTEwLCAKLSAgICA1MTkxNCwgNTE5MTgsIDUxOTIyLCA1MTkyNiwgNTE5MzAsIDUxOTM0LCA1MTkzOCwgNTE5NDIsIDUxOTQ2LCA1MTk1MCwgCi0gICAgNTE5NTQsIDUxOTU4LCA1MTk2MiwgNTE5NjYsIDUxOTcwLCA1MTk3NCwgNTE5NzgsIDUxOTgyLCA1MTk4NiwgNTE5OTAsIAotICAgIDUxOTk0LCA1MjAwMSwgNTIwMDksIDUyMDE1LCA1MjAyMSwgNTIwMjgsIDUyMDM1LCA1MjA0MSwgNTIwNDcsIDUyMDUzLCAKLSAgICA1MjA1OSwgNTIwNjMsIDUyMDY3LCA1MjA3MiwgNTIwNzcsIDUyMDgzLCA1MjA4OSwgNTIwOTcsIDUyMTA0LCA1MjEwOSwgCi0gICAgNTIxMTQsIDUyMTIyLCA1MjEzMSwgNTIxMzgsIDUyMTQ4LCA1MjE1OSwgNTIxNjIsIDUyMTY1LCA1MjE2OSwgNTIxNzMsIAotICAgIDUyMTgwLCA1MjE4NywgNTIxOTgsIDUyMjA5LCA1MjIxOCwgNTIyMjcsIDUyMjMzLCA1MjIzOSwgNTIyNDYsIDUyMjUzLCAKLSAgICA1MjI2MiwgNTIyNzIsIDUyMjgzLCA1MjI5MywgNTIzMDMsIDUyMzEzLCA1MjMyNCwgNTIzMzUsIDUyMzQ1LCA1MjM1NiwgCi0gICAgNTIzNjYsIDUyMzc2LCA1MjM4NSwgNTIzOTUsIDUyNDA1LCA1MjQxNSwgNTI0MjUsIDUyNDMyLCA1MjQzOSwgNTI0NDYsIAotICAgIDUyNDUzLCA1MjQ2MywgNTI0NzMsIDUyNDgxLCA1MjQ4OSwgNTI0OTYsIDUyNTAzLCA1MjUxMCwgNTI1MTcsIDUyNTI0LCAKLSAgICA1MjUyOSwgNTI1MzQsIDUyNTQwLCA1MjU0OCwgNTI1NTcsIDUyNTY1LCA1MjU3MywgNTI1ODEsIDUyNTg5LCA1MjU5NywgCi0gICAgNTI2MDUsIDUyNjEzLCA1MjYyMSwgNTI2MzAsIDUyNjM5LCA1MjY0OCwgNTI2NTcsIDUyNjY2LCA1MjY3NSwgNTI2ODQsIAotICAgIDUyNjkzLCA1MjcwMiwgNTI3MTEsIDUyNzIwLCA1MjcyOSwgNTI3MzgsIDUyNzQ3LCA1Mjc1NiwgNTI3NjUsIDUyNzc5LCAKLSAgICA1Mjc5NCwgNTI4MDgsIDUyODIzLCA1MjgzNywgNTI4NTEsIDUyODY1LCA1Mjg3OSwgNTI4ODksIDUyOTAwLCA1MjkxMCwgCi0gICAgNTI5MjEsIDUyOTM2LCA1Mjk1MSwgNTI5NTksIDUyOTY1LCA1Mjk3MiwgNTI5NzksIDUyOTg2LCA1Mjk5MywgNTI5OTgsIAotICAgIDUzMDA0LCA1MzAwOSwgNTMwMTQsIDUzMDIwLCA1MzAyNSwgNTMwMzAsIDUzMDM1LCA1MzA0MCwgNTMwNDUsIDUzMDUyLCAKLSAgICA1MzA1OCwgNTMwNjYsIDUzMDcxLCA1MzA3NiwgNTMwODAsIDUzMDg0LCA1MzA5MiwgNTMxMDAsIDUzMTA4LCA1MzExNiwgCi0gICAgNTMxMjMsIDUzMTMwLCA1MzE0MywgNTMxNTYsIDUzMTY5LCA1MzE4MiwgNTMxOTAsIDUzMTk4LCA1MzIwNCwgNTMyMTAsIAotICAgIDUzMjE3LCA1MzIyNCwgNTMyMzEsIDUzMjM4LCA1MzI0MiwgNTMyNDcsIDUzMjU1LCA1MzI2MywgNTMyNzEsIDUzMjc4LCAKLSAgICA1MzI4MiwgNTMyOTAsIDUzMjk4LCA1MzMwMiwgNTMzMDYsIDUzMzExLCA1MzMxOCwgNTMzMjYsIDUzMzM0LCA1MzM1MywgCi0gICAgNTMzNzIsIDUzMzkxLCA1MzQxMCwgNTM0MjksIDUzNDQ4LCA1MzQ2NywgNTM0ODYsIDUzNDkyLCA1MzQ5OSwgNTM1MDgsIAotICAgIDUzNTE2LCA1MzUyNCwgNTM1MzAsIDUzNTMzLCA1MzUzNiwgNTM1NDEsIDUzNTQ0LCA1MzU2NCwgNTM1NzEsIDUzNTc3LCAKLSAgICA1MzU4MywgNTM1ODcsIDUzNTkwLCA1MzU5MywgNTM1OTYsIDUzNjA4LCA1MzYyMiwgNTM2MjksIDUzNjM2LCA1MzYzOSwgCi0gICAgNTM2NDMsIDUzNjQ2LCA1MzY1MSwgNTM2NTYsIDUzNjYxLCA1MzY2NywgNTM2NzYsIDUzNjgzLCA1MzY5MCwgNTM2OTgsIAotICAgIDUzNzA1LCA1MzcxMiwgNTM3MTUsIDUzNzIxLCA1MzcyNywgNTM3MzAsIDUzNzMzLCA1MzczOCwgNTM3NDMsIDUzNzQ5LCAKLSAgICA1Mzc1NSwgNTM3NTksIDUzNzY0LCA1Mzc3MSwgNTM3NzUsIDUzNzgxLCA1Mzc4NSwgNTM3ODksIDUzNzk3LCA1MzgwOSwgCi0gICAgNTM4MTgsIDUzODIyLCA1MzgyNCwgNTM4MzMsIDUzODQyLCA1Mzg0OCwgNTM4NTEsIDUzODU3LCA1Mzg2MywgNTM4NjgsIAotICAgIDUzODczLCA1Mzg3OCwgNTM4ODMsIDUzODg4LCA1Mzg5MywgNTM4OTUsIDUzOTAxLCA1MzkwNiwgNTM5MTQsIDUzOTE4LCAKLSAgICA1MzkyNCwgNTM5MjcsIDUzOTMxLCA1MzkzOCwgNTM5NDUsIDUzOTQ3LCA1Mzk0OSwgNTM5NTUsIDUzOTYxLCA1Mzk2NywgCi0gICAgNTM5NzYsIDUzOTg1LCA1Mzk5MiwgNTM5OTksIDU0MDA1LCA1NDAxMiwgNTQwMTcsIDU0MDIyLCA1NDAyNywgNTQwMzMsIAotICAgIDU0MDM5LCA1NDA0NCwgNTQwNTEsIDU0MDU1LCA1NDA1OSwgNTQwNzIsIDU0MDg1LCA1NDA5NywgNTQxMDYsIDU0MTEyLCAKLSAgICA1NDExOSwgNTQxMjQsIDU0MTI5LCA1NDEzNCwgNTQxMzksIDU0MTQ0LCA1NDE0NiwgNTQxNTMsIDU0MTYxLCA1NDE2OSwgCi0gICAgNTQxNzcsIDU0MTg0LCA1NDE5MiwgNTQxOTgsIDU0MjAzLCA1NDIwOSwgNTQyMTUsIDU0MjIxLCA1NDIyOCwgNTQyMzQsIAotICAgIDU0MjQyLCA1NDI1MCwgNTQyNTgsIDU0MjY2LCA1NDI3NCwgNTQyODAsIDU0Mjg2LCA1NDI5NSwgNTQyOTksIDU0MzA4LCAKLSAgICA1NDMxNywgNTQzMjYsIDU0MzM0LCA1NDMzOCwgNTQzNDQsIDU0MzUxLCA1NDM1OCwgNTQzNjIsIDU0MzY4LCA1NDM3NiwgCi0gICAgNTQzODIsIDU0Mzg3LCA1NDM5MywgNTQzOTgsIDU0NDAzLCA1NDQxMCwgNTQ0MTcsIDU0NDIyLCA1NDQyNywgNTQ0MzUsIAotICAgIDU0NDQzLCA1NDQ1MywgNTQ0NjMsIDU0NDcwLCA1NDQ3NywgNTQ0ODEsIDU0NDg1LCA1NDQ5NywgNTQ1MDMsIDU0NTEwLCAKLSAgICA1NDUxNSwgNTQ1MjAsIDU0NTI3LCA1NDUzNCwgNTQ1NDAsIDU0NTQ2LCA1NDU1NiwgNTQ1NjMsIDU0NTcxLCA1NDU3OSwgCi0gICAgNTQ1ODgsIDU0NTk1LCA1NDYwMSwgNTQ2MDgsIDU0NjE0LCA1NDYyMiwgNTQ2MzAsIDU0NjM4LCA1NDY0NiwgNTQ2NTIsIAotICAgIDU0NjU3LCA1NDY2NywgNTQ2NzgsIDU0Njg1LCA1NDY5NCwgNTQ3MDAsIDU0NzA1LCA1NDcxMCwgNTQ3MjAsIDU0NzI3LCAKLSAgICA1NDczMywgNTQ3MzksIDU0NzQ3LCA1NDc1MiwgNTQ3NTksIDU0NzY2LCA1NDc3NywgNTQ3ODQsIDU0NzkxLCA1NDc5OCwgCi0gICAgNTQ4MDUsIDU0ODEyLCA1NDgyMCwgNTQ4MjgsIDU0ODQxLCA1NDg1NCwgNTQ4NjYsIDU0ODc4LCA1NDg5MiwgNTQ5MDYsIAotICAgIDU0OTEyLCA1NDkxOCwgNTQ5MjcsIDU0OTM2LCA1NDk0MywgNTQ5NTAsIDU0OTU5LCA1NDk2OCwgNTQ5NzcsIDU0OTg2LCAKLSAgICA1NDk5NCwgNTUwMDIsIDU1MDEyLCA1NTAyMiwgNTUwMzYsIDU1MDUwLCA1NTA1OSwgNTUwNjgsIDU1MDgxLCA1NTA5NCwgCi0gICAgNTUxMDMsIDU1MTEyLCA1NTEyMywgNTUxMzQsIDU1MTQwLCA1NTE0NiwgNTUxNTUsIDU1MTY0LCA1NTE2OSwgNTUxNzQsIAotICAgIDU1MTgyLCA1NTE4OCwgNTUxOTQsIDU1MjAyLCA1NTIxMCwgNTUyMjMsIDU1MjM2LCA1NTI0MCwgNTUyNDQsIDU1MjUyLCAKLSAgICA1NTI2MCwgNTUyNjcsIDU1Mjc1LCA1NTI4MywgNTUyOTIsIDU1MzAxLCA1NTMwNywgNTUzMTMsIDU1MzIwLCA1NTMyNywgCi0gICAgNTUzMzQsIDU1MzQxLCA1NTM1MCwgNTUzNTksIDU1MzYyLCA1NTM2NSwgNTUzNzAsIDU1Mzc1LCA1NTM4MSwgNTUzODcsIAotICAgIDU1Mzk0LCA1NTQwMSwgNTU0MTIsIDU1NDIzLCA1NTQzMCwgNTU0MzcsIDU1NDQ1LCA1NTQ1MywgNTU0NjEsIDU1NDY5LCAKLSAgICA1NTQ3NywgNTU0ODUsIDU1NDkxLCA1NTQ5NywgNTU1MDEsIDU1NTA1LCA1NTUxMywgNTU1MjEsIDU1NTI2LCA1NTUzMSwgCi0gICAgNTU1MzYsIDU1NTQxLCA1NTU0NywgNTU1NjEsIDU1NTY4LCA1NTU3NSwgNTU1NzksIDU1NTgxLCA1NTU4MywgNTU1ODgsIAotICAgIDU1NTkzLCA1NTU5OCwgNTU2MDIsIDU1NjEwLCA1NTYxNywgNTU2MjQsIDU1NjMyLCA1NTY0NCwgNTU2NTIsIDU1NjYwLCAKLSAgICA1NTY3MSwgNTU2NzUsIDU1Njc5LCA1NTY4NSwgNTU2OTMsIDU1NzA2LCA1NTcxMywgNTU3MjAsIDU1NzI3LCA1NTczMywgCi0gICAgNTU3NDAsIDU1NzQ5LCA1NTc1OCwgNTU3NjQsIDU1NzcwLCA1NTc3NiwgNTU3ODYsIDU1Nzk2LCA1NTgwNCwgNTU4MTMsIAotICAgIDU1ODE4LCA1NTgyMSwgNTU4MjYsIDU1ODMxLCA1NTgzNiwgNTU4NDIsIDU1ODQ4LCA1NTg1MiwgNTU4NTUsIDU1ODU4LCAKLSAgICA1NTg2MSwgNTU4NjYsIDU1ODcxLCA1NTg3NywgNTU4ODMsIDU1ODg3LCA1NTg5MSwgNTU4OTgsIDU1OTA1LCA1NTkxMiwgCi0gICAgNTU5MTksIDU1OTI2LCA1NTkzMywgNTU5NDMsIDU1OTUzLCA1NTk2MCwgNTU5NjcsIDU1OTc1LCA1NTk4MywgNTU5ODcsIAotICAgIDU1OTkyLCA1NTk5NywgNTYwMDMsIDU2MDA5LCA1NjAxMiwgNTYwMTUsIDU2MDE4LCA1NjAyMSwgNTYwMjYsIDU2MDMxLCAKLSAgICA1NjAzNiwgNTYwNDEsIDU2MDQ2LCA1NjA1MSwgNTYwNTUsIDU2MDU5LCA1NjA2MywgNTYwNjgsIDU2MDczLCA1NjA3NywgCi0gICAgNTYwODEsIDU2MDg3LCA1NjA5MSwgNTYwOTcsIDU2MTAyLCA1NjEwOSwgNTYxMTcsIDU2MTI0LCA1NjEzMiwgNTYxMzksIAotICAgIDU2MTQ3LCA1NjE1NiwgNTYxNjMsIDU2MTczLCA1NjE4NCwgNTYxOTAsIDU2MTk5LCA1NjIwNSwgNTYyMTQsIDU2MjIzLCAKLSAgICA1NjIyOSwgNTYyMzUsIDU2MjM5LCA1NjI0MywgNTYyNTIsIDU2MjYxLCA1NjI2OCwgNTYyNzUsIDU2Mjg0LCA1NjI5MywgCi0gICAgNTYyOTksIDU2MzA1LCA1NjMxMiwgNTYzMTcsIDU2MzIxLCA1NjMyNSwgNTYzMzAsIDU2MzM1LCA1NjM0MCwgNTYzNDgsIAotICAgIDU2MzU2LCA1NjM1OSwgNTYzNjMsIDU2MzcyLCA1NjM4MiwgNTYzOTEsIDU2NDAxLCA1NjQxMiwgNTY0MjUsIDU2NDI5LCAKLSAgICA1NjQzMywgNTY0MzcsIDU2NDQxLCA1NjQ0NiwgNTY0NTEsIDU2NDU3LCA1NjQ2MywgNTY0NzAsIDU2NDc3LCA1NjQ4MywgCi0gICAgNTY0ODksIDU2NDk1LCA1NjUwMSwgNTY1MDksIDU2NTE3LCA1NjUyNCwgNTY1MzEsIDU2NTM4LCAwLCAwLCA1NjU0NSwgCi0gICAgNTY1NTQsIDU2NTYzLCA1NjU3MywgNTY1ODMsIDU2NTkyLCA1NjYwMSwgNTY2MTAsIDU2NjE5LCA1NjYyNSwgNTY2MzAsIAotICAgIDU2NjM5LCA1NjY0OSwgNTY2NTgsIDU2NjY4LCA1NjY3NSwgNTY2ODIsIDU2Njg5LCA1NjY5NiwgNTY3MDEsIDU2NzA2LCAKLSAgICA1NjcxMSwgNTY3MTYsIDU2NzI0LCA1NjczMywgNTY3NDEsIDU2NzUwLCA1Njc1NCwgNTY3NTgsIDU2NzYyLCA1Njc2NiwgCi0gICAgNTY3NzYsIDAsIDAsIDU2Nzc5LCA1Njc4OCwgNTY3OTcsIDU2ODA2LCA1NjgxNSwgNTY4MjEsIDU2ODI3LCA1NjgzMywgCi0gICAgNTY4MzksIDU2ODQ5LCA1Njg1OSwgNTY4NjksIDU2ODc5LCA1Njg4OSwgNTY4OTksIDU2OTA5LCA1NjkxOSwgNTY5MjYsIAotICAgIDU2OTMzLCA1Njk0MCwgNTY5NDcsIDU2OTU0LCA1Njk2MSwgNTY5NjgsIDU2OTc1LCA1Njk4MSwgNTY5ODcsIDU2OTkzLCAKLSAgICA1Njk5OSwgNTcwMDUsIDU3MDExLCA1NzAxNywgNTcwMjMsIDU3MDM0LCAwLCAwLCAwLCA1NzA0NCwgNTcwNTEsIDU3MDU0LCAKLSAgICA1NzA1OCwgNTcwNjIsIDU3MDY3LCA1NzA3MiwgNTcwNzcsIDU3MDgwLCA1NzA4OSwgNTcwOTgsIDU3MTA3LCAwLCA1NzExNiwgCi0gICAgNTcxMjIsIDU3MTI4LCA1NzEzNiwgNTcxNDYsIDU3MTUzLCA1NzE2MiwgNTcxNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MTcwLCA1NzE3OSwgCi0gICAgNTcxODgsIDU3MTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzIwNiwgCi0gICAgNTcyMTEsIDU3MjE2LCA1NzIyMSwgNTcyMjYsIDU3MjMxLCA1NzIzNiwgNTcyNDEsIDU3MjQ2LCA1NzI1MSwgNTcyNTYsIAotICAgIDU3MjYyLCA1NzI2NiwgNTcyNzEsIDU3Mjc2LCA1NzI4MSwgNTcyODYsIDU3MjkxLCA1NzI5NiwgNTczMDEsIDU3MzA2LCAKLSAgICA1NzMxMSwgNTczMTYsIDU3MzIxLCA1NzMyNiwgNTczMzEsIDU3MzM2LCA1NzM0MSwgNTczNDYsIDU3MzUxLCA1NzM1NiwgCi0gICAgNTczNjEsIDU3MzY2LCA1NzM3MSwgNTczNzYsIDU3MzgyLCA1NzM4NywgNTczOTMsIDU3NDAyLCA1NzQwNywgNTc0MTUsIAotICAgIDU3NDIyLCA1NzQzMSwgNTc0MzYsIDU3NDQxLCA1NzQ0NiwgNTc0NTIsIDAsIDU3NDU5LCA1NzQ2NCwgNTc0NjksIDU3NDc0LCAKLSAgICA1NzQ3OSwgNTc0ODQsIDU3NDg5LCA1NzQ5NCwgNTc0OTksIDU3NTA0LCA1NzUwOSwgNTc1MTUsIDU3NTE5LCA1NzUyNCwgCi0gICAgNTc1MjksIDU3NTM0LCA1NzUzOSwgNTc1NDQsIDU3NTQ5LCA1NzU1NCwgNTc1NTksIDU3NTY0LCA1NzU2OSwgNTc1NzQsIAotICAgIDU3NTc5LCA1NzU4NCwgNTc1ODksIDU3NTk0LCA1NzU5OSwgNTc2MDQsIDU3NjA5LCA1NzYxNCwgNTc2MTksIDU3NjI0LCAKLSAgICA1NzYyOSwgNTc2MzUsIDU3NjQwLCA1NzY0NiwgNTc2NTUsIDU3NjYwLCA1NzY2OCwgNTc2NzUsIDU3Njg0LCA1NzY4OSwgCi0gICAgNTc2OTQsIDU3Njk5LCA1NzcwNSwgMCwgNTc3MTIsIDU3NzIwLCA1NzcyOCwgNTc3MzcsIDU3NzQ0LCA1Nzc1MiwgNTc3NTgsIAotICAgIDU3NzY3LCA1Nzc3NSwgNTc3ODMsIDU3NzkxLCA1Nzc5OSwgNTc4MDcsIDU3ODE1LCA1NzgyMCwgNTc4MjcsIDU3ODMzLCAKLSAgICA1Nzg0MCwgNTc4NDgsIDU3ODU1LCA1Nzg2MiwgNTc4NzAsIDU3ODc2LCA1Nzg4MiwgNTc4ODksIDU3ODk2LCA1NzkwNiwgCi0gICAgNTc5MTYsIDU3OTIzLCA1NzkzMCwgNTc5MzUsIDU3OTQ1LCA1Nzk1NSwgNTc5NjAsIDU3OTY1LCA1Nzk3MCwgNTc5NzUsIAotICAgIDU3OTgwLCA1Nzk4NSwgNTc5OTAsIDU3OTk1LCA1ODAwMCwgNTgwMDUsIDU4MDEwLCA1ODAxNSwgNTgwMjAsIDU4MDI1LCAKLSAgICA1ODAzMCwgNTgwMzUsIDU4MDQwLCA1ODA0NSwgNTgwNTAsIDU4MDU1LCA1ODA2MCwgNTgwNjUsIDU4MDcwLCA1ODA3NSwgCi0gICAgNTgwODAsIDU4MDg1LCA1ODA5MCwgNTgwOTUsIDU4MTAwLCA1ODEwNSwgNTgxMDksIDU4MTEzLCA1ODExOCwgNTgxMjMsIAotICAgIDU4MTI4LCA1ODEzMywgNTgxMzgsIDU4MTQzLCA1ODE0OCwgNTgxNTMsIDU4MTU4LCA1ODE2MywgNTgxNjgsIDU4MTczLCAKLSAgICA1ODE3OCwgNTgxODMsIDU4MTg4LCA1ODE5MywgNTgxOTgsIDU4MjAzLCA1ODIxMCwgNTgyMTcsIDU4MjI0LCA1ODIzMSwgCi0gICAgNTgyMzgsIDU4MjQ1LCA1ODI1MiwgNTgyNTksIDU4MjY2LCA1ODI3MywgNTgyODAsIDU4Mjg3LCA1ODI5NCwgNTgzMDEsIAotICAgIDU4MzA2LCA1ODMxMSwgNTgzMTgsIDU4MzI1LCA1ODMzMiwgNTgzMzksIDU4MzQ2LCA1ODM1MywgNTgzNjAsIDU4MzY3LCAKLSAgICA1ODM3NCwgNTgzODEsIDU4Mzg4LCA1ODM5NSwgNTg0MDEsIDU4NDA3LCA1ODQxMywgNTg0MTksIDU4NDI2LCA1ODQzMywgCi0gICAgNTg0NDAsIDU4NDQ3LCA1ODQ1NCwgNTg0NjEsIDU4NDY4LCA1ODQ3NSwgNTg0ODIsIDU4NDg5LCA1ODQ5NywgNTg1MDUsIAotICAgIDU4NTEzLCA1ODUyMSwgNTg1MjksIDU4NTM3LCA1ODU0NSwgNTg1NTMsIDU4NTU3LCA1ODU2MywgNTg1NjksIDU4NTczLCAKLSAgICA1ODU3OSwgNTg1ODUsIDU4NTkxLCA1ODU5OCwgNTg2MDUsIDU4NjEyLCA1ODYxOSwgNTg2MjQsIDU4NjMwLCA1ODYzNiwgCi0gICAgNTg2NDMsIDAsIDAsIDAsIDAsIDAsIDU4NjUwLCA1ODY1OCwgNTg2NjcsIDU4Njc2LCA1ODY4NCwgNTg2OTAsIDU4Njk1LCAKLSAgICA1ODcwMCwgNTg3MDUsIDU4NzEwLCA1ODcxNSwgNTg3MjAsIDU4NzI1LCA1ODczMCwgNTg3MzUsIDU4NzQwLCA1ODc0NSwgCi0gICAgNTg3NTAsIDU4NzU1LCA1ODc2MCwgNTg3NjUsIDU4NzcwLCA1ODc3NSwgNTg3ODAsIDU4Nzg1LCA1ODc5MCwgNTg3OTUsIAotICAgIDU4ODAwLCA1ODgwNSwgNTg4MTAsIDU4ODE1LCA1ODgyMCwgNTg4MjUsIDU4ODMwLCA1ODgzNSwgNTg4NDAsIDU4ODQ1LCAKLSAgICA1ODg1MCwgNTg4NTUsIDU4ODYwLCA1ODg2NSwgNTg4NzAsIDU4ODc1LCA1ODg4MCwgNTg4ODUsIDAsIDU4ODkwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1ODg5NSwgMCwgMCwgNTg5MDAsIDU4OTA0LCA1ODkwOSwgNTg5MTQsIDU4OTE5LCA1ODkyNCwgNTg5MzMsIAotICAgIDU4OTM4LCA1ODk0MywgNTg5NDgsIDU4OTUzLCA1ODk1OCwgNTg5NjMsIDU4OTY4LCA1ODk3MywgNTg5ODAsIDU4OTg1LCAKLSAgICA1ODk5MCwgNTg5OTksIDU5MDA2LCA1OTAxMSwgNTkwMTYsIDU5MDIxLCA1OTAyOCwgNTkwMzMsIDU5MDQwLCA1OTA0NSwgCi0gICAgNTkwNTAsIDU5MDU3LCA1OTA2NCwgNTkwNjksIDU5MDc0LCA1OTA3OSwgNTkwODYsIDU5MDkzLCA1OTA5OCwgNTkxMDMsIAotICAgIDU5MTA4LCA1OTExMywgNTkxMTgsIDU5MTI1LCA1OTEzMiwgNTkxMzcsIDU5MTQyLCA1OTE0NywgNTkxNTIsIDU5MTU3LCAKLSAgICA1OTE2MiwgNTkxNjcsIDU5MTcyLCA1OTE3NywgNTkxODIsIDU5MTg3LCA1OTE5NCwgNTkxOTksIDU5MjA0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1OTIwOSwgNTkyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU5MjIxLCA1OTIyNiwgNTkyMzAsIDU5MjM0LCA1OTIzOCwgNTkyNDIsIDU5MjQ2LCA1OTI1MCwgNTkyNTQsIDU5MjU4LCAKLSAgICA1OTI2MiwgNTkyNjYsIDU5MjcyLCA1OTI3NiwgNTkyODAsIDU5Mjg0LCA1OTI4OCwgNTkyOTIsIDU5Mjk2LCA1OTMwMCwgCi0gICAgNTkzMDQsIDU5MzA4LCA1OTMxMiwgNTkzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MzIwLCA1OTMyNCwgCi0gICAgNTkzMjgsIDU5MzMyLCA1OTMzNiwgNTkzNDAsIDU5MzQ0LCAwLCA1OTM0OCwgNTkzNTIsIDU5MzU2LCA1OTM2MCwgNTkzNjQsIAotICAgIDU5MzY4LCA1OTM3MiwgMCwgNTkzNzYsIDU5MzgwLCA1OTM4NCwgNTkzODgsIDU5MzkyLCA1OTM5NiwgNTk0MDAsIDAsIAotICAgIDU5NDA0LCA1OTQwOCwgNTk0MTIsIDU5NDE2LCA1OTQyMCwgNTk0MjQsIDU5NDI4LCAwLCA1OTQzMiwgNTk0MzYsIDU5NDQwLCAKLSAgICA1OTQ0NCwgNTk0NDgsIDU5NDUyLCA1OTQ1NiwgMCwgNTk0NjAsIDU5NDY0LCA1OTQ2OCwgNTk0NzIsIDU5NDc2LCA1OTQ4MCwgCi0gICAgNTk0ODQsIDAsIDU5NDg4LCA1OTQ5MiwgNTk0OTYsIDU5NTAwLCA1OTUwNCwgNTk1MDgsIDU5NTEyLCAwLCA1OTUxNiwgCi0gICAgNTk1MjAsIDU5NTI0LCA1OTUyOCwgNTk1MzIsIDU5NTM2LCA1OTU0MCwgMCwgNTk1NDQsIDU5NTQ5LCA1OTU1NCwgNTk1NTksIAotICAgIDU5NTY0LCA1OTU2OSwgNTk1NzQsIDU5NTc4LCA1OTU4MywgNTk1ODgsIDU5NTkzLCA1OTU5NywgNTk2MDIsIDU5NjA3LCAKLSAgICA1OTYxMiwgNTk2MTcsIDU5NjIxLCA1OTYyNiwgNTk2MzEsIDU5NjM2LCA1OTY0MSwgNTk2NDYsIDU5NjUxLCA1OTY1NSwgCi0gICAgNTk2NjAsIDU5NjY1LCA1OTY3MiwgNTk2NzcsIDU5NjgyLCA1OTY4OCwgNTk2OTUsIDU5NzAyLCA1OTcxMSwgNTk3MTgsIAotICAgIDU5NzI3LCA1OTczMSwgNTk3MzUsIDU5NzQxLCA1OTc0NywgNTk3NTMsIDU5NzYxLCA1OTc2NywgNTk3NzEsIDU5Nzc1LCAKLSAgICA1OTc3OSwgNTk3ODUsIDU5NzkxLCA1OTc5NSwgNTk3OTcsIDU5ODAxLCA1OTgwNywgNTk4MDksIDU5ODEzLCA1OTgxNiwgCi0gICAgNTk4MTksIDU5ODI1LCA1OTgzMCwgNTk4MzQsIDU5ODM4LCA1OTg0MywgNTk4NDksIDU5ODU0LCA1OTg1OSwgNTk4NjQsIAotICAgIDU5ODY5LCA1OTg3NiwgNTk4ODMsIDU5ODg4LCA1OTg5MywgNTk4OTgsIDU5OTAzLCA1OTkwOCwgNTk5MTMsIDU5OTE3LCAKLSAgICA1OTkyMSwgNTk5MjgsIDU5OTM1LCA1OTk0MSwgNTk5NDUsIDU5OTUwLCA1OTk1MywgNTk5NTcsIDU5OTY0LCA1OTk2OCwgCi0gICAgNTk5NzIsIDU5OTc2LCA1OTk4MCwgNTk5ODYsIDU5OTkyLCA1OTk5NiwgNjAwMDIsIDYwMDA2LCA2MDAxMCwgNjAwMTYsIAotICAgIDYwMDIxLCA2MDAyNiwgNjAwMjgsIDYwMDMxLCA2MDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjAwNDEsIDYwMDQ1LCA2MDA0OSwgNjAwNTQsIDYwMDU5LCA2MDA2NCwgNjAwNjgsIDYwMDcyLCA2MDA3NiwgNjAwODEsIAotICAgIDYwMDg2LCA2MDA5MCwgNjAwOTQsIDYwMDk4LCA2MDEwMiwgNjAxMDcsIDYwMTEyLCA2MDExNywgNjAxMjIsIDYwMTI2LCAKLSAgICA2MDEzMCwgNjAxMzUsIDYwMTQwLCA2MDE0NSwgNjAxNTAsIDYwMTU0LCAwLCA2MDE1OCwgNjAxNjIsIDYwMTY2LCA2MDE3MCwgCi0gICAgNjAxNzQsIDYwMTc4LCA2MDE4MiwgNjAxODcsIDYwMTkyLCA2MDE5NiwgNjAyMDEsIDYwMjA2LCA2MDIxNSwgNjAyMTksIAotICAgIDYwMjIzLCA2MDIyNywgNjAyMzQsIDYwMjM4LCA2MDI0MywgNjAyNDgsIDYwMjUyLCA2MDI1NiwgNjAyNjIsIDYwMjY3LCAKLSAgICA2MDI3MiwgNjAyNzcsIDYwMjgyLCA2MDI4NiwgNjAyOTAsIDYwMjk0LCA2MDI5OCwgNjAzMDIsIDYwMzA3LCA2MDMxMiwgCi0gICAgNjAzMTYsIDYwMzIwLCA2MDMyNSwgNjAzMzAsIDYwMzM1LCA2MDMzOSwgNjAzNDMsIDYwMzQ4LCA2MDM1MywgNjAzNTksIAotICAgIDYwMzY1LCA2MDM2OSwgNjAzNzUsIDYwMzgxLCA2MDM4NSwgNjAzOTEsIDYwMzk3LCA2MDQwMiwgNjA0MDcsIDYwNDExLCAKLSAgICA2MDQxNywgNjA0MjEsIDYwNDI1LCA2MDQzMSwgNjA0MzcsIDYwNDQyLCA2MDQ0NywgNjA0NTEsIDYwNDU1LCA2MDQ2MywgCi0gICAgNjA0NjksIDYwNDc1LCA2MDQ4MSwgNjA0ODYsIDYwNDkxLCA2MDQ5NiwgNjA1MDIsIDYwNTA2LCA2MDUxMiwgNjA1MTYsIAotICAgIDYwNTIwLCA2MDUyNiwgNjA1MzIsIDYwNTM4LCA2MDU0NCwgNjA1NTAsIDYwNTU2LCA2MDU2MiwgNjA1NjgsIDYwNTc0LCAKLSAgICA2MDU4MCwgNjA1ODYsIDYwNTkyLCA2MDU5NiwgNjA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYwNjA4LCA2MDYxMSwgNjA2MTUsIDYwNjE5LCA2MDYyMywgNjA2MjcsIDYwNjMwLCA2MDYzMywgNjA2MzcsIDYwNjQxLCAKLSAgICA2MDY0NSwgNjA2NDksIDYwNjUyLCA2MDY1NywgNjA2NjEsIDYwNjY1LCA2MDY2OSwgNjA2NzQsIDYwNjc4LCA2MDY4MiwgCi0gICAgNjA2ODYsIDYwNjkwLCA2MDY5NiwgNjA3MDIsIDYwNzA2LCA2MDcxMCwgNjA3MTQsIDYwNzE4LCA2MDcyMiwgNjA3MjYsIAotICAgIDYwNzMwLCA2MDczNCwgNjA3MzgsIDYwNzQyLCA2MDc0NiwgNjA3NTIsIDYwNzU2LCA2MDc2MCwgNjA3NjQsIDYwNzY4LCAKLSAgICA2MDc3MiwgNjA3NzYsIDYwNzgwLCA2MDc4NCwgNjA3ODgsIDYwNzkyLCA2MDc5NiwgNjA4MDAsIDYwODA0LCA2MDgwOCwgCi0gICAgNjA4MTIsIDYwODE2LCA2MDgyMiwgNjA4MjgsIDYwODMzLCA2MDgzOCwgNjA4NDIsIDYwODQ2LCA2MDg1MCwgNjA4NTQsIAotICAgIDYwODU4LCA2MDg2MiwgNjA4NjYsIDYwODcwLCA2MDg3NCwgNjA4NzgsIDYwODgyLCA2MDg4NiwgNjA4OTAsIDYwODk0LCAKLSAgICA2MDg5OCwgNjA5MDIsIDYwOTA2LCA2MDkxMCwgNjA5MTQsIDYwOTE4LCA2MDkyMiwgNjA5MjYsIDYwOTMwLCA2MDkzNCwgCi0gICAgNjA5NDAsIDYwOTQ0LCA2MDk0OCwgNjA5NTIsIDYwOTU2LCA2MDk2MCwgNjA5NjQsIDYwOTY4LCA2MDk3MiwgNjA5NzcsIAotICAgIDYwOTg0LCA2MDk4OCwgNjA5OTIsIDYwOTk2LCA2MTAwMCwgNjEwMDQsIDYxMDA4LCA2MTAxMiwgNjEwMTYsIDYxMDIwLCAKLSAgICA2MTAyNCwgNjEwMjgsIDYxMDMyLCA2MTAzOSwgNjEwNDMsIDYxMDQ5LCA2MTA1MywgNjEwNTcsIDYxMDYxLCA2MTA2NSwgCi0gICAgNjEwNjksIDYxMDcyLCA2MTA3NiwgNjEwODAsIDYxMDg0LCA2MTA4OCwgNjEwOTIsIDYxMDk2LCA2MTEwMCwgNjExMDQsIAotICAgIDYxMTA4LCA2MTExMiwgNjExMTYsIDYxMTIwLCA2MTEyNCwgNjExMjgsIDYxMTMyLCA2MTEzNiwgNjExNDAsIDYxMTQ0LCAKLSAgICA2MTE0OCwgNjExNTIsIDYxMTU2LCA2MTE2MCwgNjExNjQsIDYxMTY4LCA2MTE3MiwgNjExNzYsIDYxMTgwLCA2MTE4NCwgCi0gICAgNjExODgsIDYxMTkyLCA2MTE5NiwgNjEyMDAsIDYxMjA2LCA2MTIxMCwgNjEyMTQsIDYxMjE4LCA2MTIyMiwgNjEyMjYsIAotICAgIDYxMjMwLCA2MTIzNCwgNjEyMzgsIDYxMjQyLCA2MTI0NiwgNjEyNTAsIDYxMjU0LCA2MTI1OCwgNjEyNjIsIDYxMjY2LCAKLSAgICA2MTI3MCwgNjEyNzQsIDYxMjc4LCA2MTI4MiwgNjEyODYsIDYxMjkwLCA2MTI5NCwgNjEyOTgsIDYxMzAyLCA2MTMwNiwgCi0gICAgNjEzMTAsIDYxMzE0LCA2MTMyMiwgNjEzMjYsIDYxMzMwLCA2MTMzNCwgNjEzMzgsIDYxMzQyLCA2MTM0OCwgNjEzNTIsIAotICAgIDYxMzU2LCA2MTM2MCwgNjEzNjQsIDYxMzY4LCA2MTM3MiwgNjEzNzYsIDYxMzgwLCA2MTM4NCwgNjEzODgsIDYxMzkyLCAKLSAgICA2MTM5NiwgNjE0MDAsIDYxNDA2LCA2MTQxMCwgNjE0MTQsIDYxNDE4LCA2MTQyMiwgNjE0MjYsIDYxNDMwLCA2MTQzNCwgCi0gICAgNjE0MzgsIDYxNDQyLCA2MTQ0NiwgNjE0NTAsIDYxNDU0LCA2MTQ1OCwgNjE0NjIsIDYxNDY2LCA2MTQ3MCwgNjE0NzQsIAotICAgIDYxNDc4LCA2MTQ4MiwgNjE0ODYsIDYxNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQ5NCwgNjE1MDMsIDYxNTExLCA2MTUyMiwgNjE1MzIsIAotICAgIDYxNTQwLCA2MTU0OSwgNjE1NTgsIDYxNTY4LCA2MTU4MCwgNjE1OTIsIDYxNjA0LCAwLCAwLCAwLCAwLCA2MTYxMCwgCi0gICAgNjE2MTMsIDYxNjE2LCA2MTYyMSwgNjE2MjQsIDYxNjMxLCA2MTYzNSwgNjE2MzksIDYxNjQzLCA2MTY0NywgNjE2NTEsIAotICAgIDYxNjU2LCA2MTY2MSwgNjE2NjUsIDYxNjY5LCA2MTY3NCwgNjE2NzksIDYxNjg0LCA2MTY4OSwgNjE2OTIsIDYxNjk1LCAKLSAgICA2MTcwMSwgNjE3MDcsIDYxNzEyLCA2MTcxNywgNjE3MjQsIDYxNzMxLCA2MTczNSwgNjE3MzksIDYxNzQzLCA2MTc1MSwgCi0gICAgNjE3NTcsIDYxNzY0LCA2MTc2OSwgNjE3NzQsIDYxNzc5LCA2MTc4NCwgNjE3ODksIDYxNzk0LCA2MTc5OSwgNjE4MDUsIAotICAgIDYxODEwLCA2MTgxNiwgNjE4MjEsIDYxODI2LCA2MTgzMSwgNjE4MzYsIDYxODQyLCA2MTg0NywgNjE4NTEsIDYxODU3LCAKLSAgICA2MTg2OCwgNjE4NzgsIDYxODkzLCA2MTkwMywgNjE5MDcsIDYxOTE3LCA2MTkyMywgNjE5MjksIDYxOTM1LCA2MTk0MCwgCi0gICAgNjE5NDMsIDYxOTQ4LCA2MTk1MiwgMCwgNjE5NTgsIDYxOTYyLCA2MTk2NSwgNjE5NjksIDYxOTcyLCA2MTk3NiwgNjE5NzksIAotICAgIDYxOTgzLCA2MTk4NiwgNjE5OTAsIDYxOTkzLCA2MTk5NiwgNjIwMDAsIDYyMDA0LCA2MjAwOCwgNjIwMTIsIDYyMDE2LCAKLSAgICA2MjAyMCwgNjIwMjQsIDYyMDI4LCA2MjAzMiwgNjIwMzYsIDYyMDQwLCA2MjA0NCwgNjIwNDgsIDYyMDUyLCA2MjA1NiwgCi0gICAgNjIwNjAsIDYyMDY0LCA2MjA2OCwgNjIwNzIsIDYyMDc2LCA2MjA4MCwgNjIwODQsIDYyMDg4LCA2MjA5MywgNjIwOTcsIAotICAgIDYyMTAxLCA2MjEwNSwgNjIxMDksIDYyMTEyLCA2MjExNiwgNjIxMjAsIDYyMTI0LCA2MjEyOCwgNjIxMzIsIDYyMTM2LCAKLSAgICA2MjEzOSwgNjIxNDMsIDYyMTQ2LCA2MjE1MCwgNjIxNTQsIDYyMTU4LCA2MjE2MiwgNjIxNjYsIDYyMTcwLCA2MjE3NCwgCi0gICAgNjIxNzgsIDYyMTgyLCA2MjE4NiwgNjIxOTAsIDYyMTk0LCA2MjE5NywgNjIyMDEsIDYyMjA1LCA2MjIwOSwgNjIyMTMsIAotICAgIDYyMjE3LCA2MjIyMCwgNjIyMjUsIDYyMjI5LCA2MjIzNCwgNjIyMzgsIDYyMjQyLCA2MjI0NiwgNjIyNTAsIDYyMjU0LCAKLSAgICA2MjI1OCwgNjIyNjMsIDYyMjY3LCA2MjI3MSwgNjIyNzUsIDYyMjc5LCA2MjI4MywgNjIyODcsIDYyMjkxLCAwLCAwLCAKLSAgICA2MjI5NiwgNjIzMDQsIDYyMzEyLCA2MjMxOSwgNjIzMjYsIDYyMzMwLCA2MjMzNiwgNjIzNDEsIDYyMzQ2LCA2MjM1MCwgCi0gICAgNjIzNTMsIDYyMzU3LCA2MjM2MCwgNjIzNjQsIDYyMzY3LCA2MjM3MSwgNjIzNzQsIDYyMzc4LCA2MjM4MSwgNjIzODQsIAotICAgIDYyMzg4LCA2MjM5MiwgNjIzOTYsIDYyNDAwLCA2MjQwNCwgNjI0MDgsIDYyNDEyLCA2MjQxNiwgNjI0MjAsIDYyNDI0LCAKLSAgICA2MjQyOCwgNjI0MzIsIDYyNDM2LCA2MjQ0MCwgNjI0NDQsIDYyNDQ4LCA2MjQ1MiwgNjI0NTYsIDYyNDYwLCA2MjQ2NCwgCi0gICAgNjI0NjgsIDYyNDcyLCA2MjQ3NiwgNjI0ODEsIDYyNDg1LCA2MjQ4OSwgNjI0OTMsIDYyNDk3LCA2MjUwMCwgNjI1MDQsIAotICAgIDYyNTA4LCA2MjUxMiwgNjI1MTYsIDYyNTIwLCA2MjUyNCwgNjI1MjcsIDYyNTMxLCA2MjUzNCwgNjI1MzgsIDYyNTQyLCAKLSAgICA2MjU0NiwgNjI1NTAsIDYyNTU0LCA2MjU1OCwgNjI1NjIsIDYyNTY2LCA2MjU3MCwgNjI1NzQsIDYyNTc4LCA2MjU4MiwgCi0gICAgNjI1ODUsIDYyNTg5LCA2MjU5MywgNjI1OTcsIDYyNjAxLCA2MjYwNSwgNjI2MDgsIDYyNjEzLCA2MjYxNywgNjI2MjIsIAotICAgIDYyNjI2LCA2MjYzMCwgNjI2MzQsIDYyNjM4LCA2MjY0MiwgNjI2NDYsIDYyNjUxLCA2MjY1NSwgNjI2NTksIDYyNjYzLCAKLSAgICA2MjY2NywgNjI2NzEsIDYyNjc1LCA2MjY3OSwgNjI2ODQsIDYyNjg4LCA2MjY5MiwgNjI2OTYsIDYyNzAwLCA2MjcwNCwgCi0gICAgNjI3MTEsIDYyNzE1LCA2MjcyMSwgMCwgMCwgMCwgMCwgMCwgNjI3MjYsIDYyNzMxLCA2MjczNiwgNjI3NDEsIDYyNzQ2LCAKLSAgICA2Mjc1MSwgNjI3NTYsIDYyNzYxLCA2Mjc2NSwgNjI3NzAsIDYyNzc1LCA2Mjc4MCwgNjI3ODUsIDYyNzkwLCA2Mjc5NSwgCi0gICAgNjI4MDAsIDYyODA1LCA2MjgxMCwgNjI4MTQsIDYyODE5LCA2MjgyNCwgNjI4MjgsIDYyODMyLCA2MjgzNiwgNjI4NDAsIAotICAgIDYyODQ1LCA2Mjg1MCwgNjI4NTUsIDYyODYwLCA2Mjg2NSwgNjI4NzAsIDYyODc1LCA2Mjg4MCwgNjI4ODUsIDYyODkwLCAKLSAgICA2Mjg5NCwgNjI4OTgsIDYyOTAzLCA2MjkwOCwgNjI5MTMsIDYyOTE4LCAwLCAwLCAwLCA2MjkyMywgNjI5MjcsIDYyOTMxLCAKLSAgICA2MjkzNSwgNjI5MzksIDYyOTQzLCA2Mjk0NywgNjI5NTEsIDYyOTU1LCA2Mjk1OSwgNjI5NjMsIDYyOTY3LCA2Mjk3MSwgCi0gICAgNjI5NzUsIDYyOTc5LCA2Mjk4MywgNjI5ODcsIDYyOTkxLCA2Mjk5NSwgNjI5OTksIDYzMDAzLCA2MzAwNywgNjMwMTEsIAotICAgIDYzMDE1LCA2MzAxOSwgNjMwMjMsIDYzMDI3LCA2MzAzMSwgNjMwMzUsIDYzMDM5LCA2MzA0MywgNjMwNDYsIDYzMDUwLCAKLSAgICA2MzA1MywgNjMwNTcsIDYzMDYxLCA2MzA2NCwgNjMwNjgsIDYzMDcyLCA2MzA3NSwgNjMwNzksIDYzMDgzLCA2MzA4NywgCi0gICAgNjMwOTEsIDYzMDk0LCA2MzA5OCwgNjMxMDIsIDYzMTA2LCA2MzExMCwgNjMxMTQsIDYzMTE4LCA2MzEyMSwgNjMxMjQsIAotICAgIDYzMTI4LCA2MzEzMiwgNjMxMzYsIDYzMTQwLCA2MzE0NCwgNjMxNDgsIDYzMTUyLCA2MzE1NiwgNjMxNjAsIDYzMTY0LCAKLSAgICA2MzE2OCwgNjMxNzIsIDYzMTc2LCA2MzE4MCwgNjMxODQsIDYzMTg4LCA2MzE5MiwgNjMxOTYsIDYzMjAwLCA2MzIwNCwgCi0gICAgNjMyMDgsIDYzMjEyLCA2MzIxNiwgNjMyMjAsIDYzMjI0LCA2MzIyOCwgNjMyMzIsIDYzMjM2LCA2MzI0MCwgNjMyNDQsIAotICAgIDYzMjQ4LCA2MzI1MiwgNjMyNTYsIDYzMjYwLCA2MzI2NCwgNjMyNjgsIDYzMjcyLCA2MzI3NiwgNjMyODAsIDYzMjg0LCAKLSAgICA2MzI4OCwgMCwgNjMyOTIsIDYzMjk4LCA2MzMwNCwgNjMzMDksIDYzMzE0LCA2MzMxOSwgNjMzMjUsIDYzMzMxLCA2MzMzNiwgCi0gICAgNjMzNDIsIDYzMzQ4LCA2MzM1NCwgNjMzNjAsIDYzMzY2LCA2MzM3MiwgNjMzNzgsIDYzMzg0LCA2MzM4OSwgNjMzOTQsIAotICAgIDYzMzk5LCA2MzQwNCwgNjM0MDksIDYzNDE0LCA2MzQxOSwgNjM0MjQsIDYzNDI5LCA2MzQzNCwgNjM0MzksIDYzNDQ0LCAKLSAgICA2MzQ0OSwgNjM0NTQsIDYzNDU5LCA2MzQ2NCwgNjM0NjksIDYzNDc0LCA2MzQ3OSwgNjM0ODQsIDYzNDkwLCA2MzQ5NiwgCi0gICAgNjM1MDIsIDYzNTA4LCA2MzUxMywgNjM1MTgsIDAsIDAsIDAsIDAsIDAsIDYzNTIzLCA2MzUyOCwgNjM1MzMsIDYzNTM4LCAKLSAgICA2MzU0MywgNjM1NDgsIDYzNTUzLCA2MzU1OCwgNjM1NjMsIDYzNTY4LCA2MzU3MywgNjM1NzgsIDYzNTgzLCA2MzU4OCwgCi0gICAgNjM1OTMsIDYzNTk4LCA2MzYwMywgNjM2MDgsIDYzNjEyLCA2MzYxNywgNjM2MjIsIDYzNjI3LCA2MzYzMiwgNjM2MzcsIAotICAgIDYzNjQyLCA2MzY0NywgNjM2NTIsIDYzNjU3LCA2MzY2MiwgNjM2NjcsIDYzNjcyLCA2MzY3NywgNjM2ODIsIDYzNjg3LCAKLSAgICA2MzY5MiwgNjM2OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNzAyLCA2MzcwNywgNjM3MTIsIAotICAgIDYzNzE3LCA2MzcyMSwgNjM3MjYsIDYzNzMwLCA2MzczNSwgNjM3NDAsIDYzNzQ1LCA2Mzc1MCwgNjM3NTUsIDYzNzYwLCAKLSAgICA2Mzc2NSwgNjM3NzAsIDYzNzc1LCA2Mzc4MCwgNjM3ODQsIDYzNzg4LCA2Mzc5MiwgNjM3OTYsIDYzODAwLCA2MzgwNCwgCi0gICAgNjM4MDgsIDYzODEyLCA2MzgxNiwgNjM4MjAsIDYzODI0LCA2MzgyOCwgNjM4MzIsIDYzODM2LCA2Mzg0MSwgNjM4NDYsIAotICAgIDYzODUxLCA2Mzg1NiwgNjM4NjEsIDYzODY2LCA2Mzg3MSwgNjM4NzYsIDYzODgxLCA2Mzg4NiwgNjM4OTEsIDYzODk2LCAKLSAgICA2MzkwMSwgNjM5MDYsIDYzOTExLCA2MzkxNywgMCwgNjM5MjQsIDYzOTI3LCA2MzkzMCwgNjM5MzMsIDYzOTM2LCA2MzkzOSwgCi0gICAgNjM5NDIsIDYzOTQ2LCA2Mzk0OSwgNjM5NTMsIDYzOTU3LCA2Mzk2MSwgNjM5NjUsIDYzOTY5LCA2Mzk3MywgNjM5NzcsIAotICAgIDYzOTgxLCA2Mzk4NSwgNjM5ODksIDYzOTkzLCA2Mzk5NywgNjQwMDEsIDY0MDA1LCA2NDAwOSwgNjQwMTMsIDY0MDE3LCAKLSAgICA2NDAyMSwgNjQwMjUsIDY0MDI5LCA2NDAzMywgNjQwMzcsIDY0MDQxLCA2NDA0NSwgNjQwNDksIDY0MDUzLCA2NDA1NywgCi0gICAgNjQwNjEsIDY0MDY1LCA2NDA2OSwgNjQwNzMsIDY0MDc3LCA2NDA4NiwgNjQwOTUsIDY0MTA0LCA2NDExMywgNjQxMjIsIAotICAgIDY0MTMxLCA2NDE0MCwgNjQxNDksIDY0MTUyLCA2NDE1NywgNjQxNjIsIDY0MTY3LCA2NDE3MiwgNjQxNzcsIDY0MTgyLCAKLSAgICA2NDE4OCwgNjQxOTMsIDY0MTk5LCA2NDIwMywgNjQyMDgsIDY0MjEzLCA2NDIxOCwgNjQyMjMsIDY0MjI4LCA2NDIzMiwgCi0gICAgNjQyMzYsIDY0MjQwLCA2NDI0NCwgNjQyNDgsIDY0MjUyLCA2NDI1NiwgNjQyNjAsIDY0MjY0LCA2NDI2OCwgNjQyNzIsIAotICAgIDY0Mjc2LCA2NDI4MCwgNjQyODQsIDY0Mjg5LCA2NDI5NCwgNjQyOTksIDY0MzA0LCA2NDMwOSwgNjQzMTQsIDY0MzE5LCAKLSAgICA2NDMyNCwgNjQzMjksIDY0MzM0LCA2NDMzOSwgNjQzNDQsIDY0MzQ5LCA2NDM1NCwgNjQzNjAsIDY0MzY2LCA2NDM3MSwgCi0gICAgNjQzNzYsIDY0Mzc5LCA2NDM4MiwgNjQzODUsIDY0Mzg4LCA2NDM5MSwgNjQzOTQsIDY0Mzk4LCA2NDQwMSwgNjQ0MDUsIAotICAgIDY0NDA5LCA2NDQxMywgNjQ0MTcsIDY0NDIxLCA2NDQyNSwgNjQ0MjksIDY0NDMzLCA2NDQzNywgNjQ0NDEsIDY0NDQ1LCAKLSAgICA2NDQ0OSwgNjQ0NTMsIDY0NDU3LCA2NDQ2MSwgNjQ0NjUsIDY0NDY5LCA2NDQ3MywgNjQ0NzcsIDY0NDgxLCA2NDQ4NSwgCi0gICAgNjQ0ODksIDY0NDkzLCA2NDQ5NywgNjQ1MDEsIDY0NTA1LCA2NDUwOSwgNjQ1MTMsIDY0NTE3LCA2NDUyMSwgNjQ1MjUsIAotICAgIDY0NTI5LCA2NDUzMywgNjQ1MzcsIDY0NTQxLCA2NDU0NSwgNjQ1NDksIDY0NTUzLCA2NDU1NywgNjQ1NjEsIDY0NTY1LCAKLSAgICA2NDU3MCwgNjQ1NzYsIDY0NTgxLCA2NDU4NywgNjQ1OTEsIDY0NTk2LCA2NDYwMSwgNjQ2MDYsIDY0NjExLCA2NDYxNiwgCi0gICAgNjQ2MjEsIDY0NjI3LCA2NDYzMiwgNjQ2MzgsIDY0NjQyLCA2NDY0OSwgNjQ2NTYsIDY0NjYzLCA2NDY3MCwgNjQ2NzcsIAotICAgIDY0Njg0LCA2NDY5MSwgNjQ2OTgsIDY0NzA1LCA2NDcxMiwgNjQ3MTksIDY0NzI2LCA2NDcyOSwgNjQ3MzIsIDY0NzM1LCAKLSAgICA2NDc0MCwgNjQ3NDMsIDY0NzQ2LCA2NDc0OSwgNjQ3NTIsIDY0NzU1LCA2NDc1OCwgNjQ3NjIsIDY0NzY2LCA2NDc3MCwgCi0gICAgNjQ3NzQsIDY0Nzc4LCA2NDc4MiwgNjQ3ODYsIDY0NzkwLCA2NDc5NCwgNjQ3OTgsIDY0ODAyLCA2NDgwNiwgNjQ4MTAsIAotICAgIDY0ODEzLCA2NDgxNywgNjQ4MjEsIDY0ODI1LCA2NDgyOSwgNjQ4MzMsIDY0ODM2LCA2NDg0MCwgNjQ4NDQsIDY0ODQ4LCAKLSAgICA2NDg1MiwgNjQ4NTUsIDY0ODU5LCA2NDg2MywgNjQ4NjcsIDY0ODcxLCA2NDg3NCwgNjQ4NzgsIDY0ODgyLCA2NDg4NiwgCi0gICAgNjQ4OTAsIDY0ODk0LCA2NDg5OCwgNjQ5MDIsIDY0OTA2LCA2NDkxMCwgNjQ5MTQsIDAsIDY0OTE4LCA2NDkyMSwgNjQ5MjQsIAotICAgIDY0OTI3LCA2NDkzMCwgNjQ5MzMsIDY0OTM2LCA2NDkzOSwgNjQ5NDIsIDY0OTQ1LCA2NDk0OCwgNjQ5NTEsIDY0OTU0LCAKLSAgICA2NDk1NywgNjQ5NjAsIDY0OTYzLCA2NDk2NiwgNjQ5NjksIDY0OTcyLCA2NDk3NSwgNjQ5NzgsIDY0OTgxLCA2NDk4NCwgCi0gICAgNjQ5ODcsIDY0OTkwLCA2NDk5MywgNjQ5OTYsIDY0OTk5LCA2NTAwMiwgNjUwMDUsIDY1MDA4LCA2NTAxMSwgNjUwMTQsIAotICAgIDY1MDE3LCA2NTAyMCwgNjUwMjMsIDY1MDI2LCA2NTAyOSwgNjUwMzIsIDY1MDM1LCA2NTAzOCwgNjUwNDEsIDY1MDQ0LCAKLSAgICA2NTA0NywgNjUwNTAsIDY1MDUzLCA2NTA1NiwgNjUwNTksIDY1MDYyLCA2NTA2NSwgNjUwNjgsIDY1MDcxLCA2NTA3NCwgCi0gICAgNjUwNzcsIDY1MDgwLCA2NTA4MywgNjUwODYsIDY1MDg5LCA2NTA5MiwgNjUwOTUsIDY1MDk4LCA2NTEwMSwgNjUxMDQsIAotICAgIDY1MTA3LCA2NTExMCwgNjUxMTMsIDY1MTE2LCA2NTExOSwgNjUxMjIsIDY1MTI1LCA2NTEyOCwgNjUxMzEsIDY1MTM0LCAKLSAgICA2NTEzNywgNjUxNDAsIDY1MTQzLCA2NTE0NiwgNjUxNDksIDY1MTUyLCA2NTE1NSwgNjUxNTgsIDY1MTYxLCA2NTE2NCwgCi0gICAgNjUxNjcsIDY1MTcwLCA2NTE3MywgNjUxNzYsIDY1MTc5LCA2NTE4MiwgNjUxOTEsIDY1MTk5LCA2NTIwNywgNjUyMTUsIAotICAgIDY1MjIzLCA2NTIzMSwgNjUyMzksIDY1MjQ4LCA2NTI1NiwgNjUyNjUsIDY1Mjc0LCA2NTI4MywgNjUyOTIsIDY1MzAxLCAKLSAgICA2NTMxMCwgNjUzMTksIDY1MzI4LCA2NTMzNywgNjUzNDYsIDY1MzU1LCA2NTM2NCwgNjUzNzMsIDY1MzgyLCA2NTM5MSwgCi0gICAgNjU0MDAsIDY1NDAzLCA2NTQwNiwgNjU0MDksIDY1NDExLCA2NTQxNCwgNjU0MTcsIDY1NDIwLCA2NTQyNSwgNjU0MzAsIAotICAgIDY1NDMzLCA2NTQ0MCwgNjU0NDcsIDY1NDU0LCA2NTQ2MSwgNjU0NjQsIDY1NDY5LCA2NTQ3MiwgNjU0NzYsIDY1NDc4LCAKLSAgICA2NTQ4MCwgNjU0ODMsIDY1NDg2LCA2NTQ4OSwgNjU0OTIsIDY1NDk1LCA2NTQ5OCwgNjU1MDEsIDY1NTA2LCA2NTUxMSwgCi0gICAgNjU1MTQsIDY1NTE3LCA2NTUyMCwgNjU1MjMsIDY1NTI2LCA2NTUyOSwgNjU1MzIsIDY1NTM2LCA2NTUzOSwgNjU1NDIsIAotICAgIDY1NTQ1LCA2NTU0OCwgNjU1NTEsIDY1NTU2LCA2NTU1OSwgNjU1NjIsIDY1NTY1LCA2NTU3MCwgNjU1NzUsIDY1NTgwLCAKLSAgICA2NTU4NSwgNjU1OTAsIDY1NTk1LCA2NTYwMCwgNjU2MDUsIDY1NjEwLCA2NTYxOCwgNjU2MjAsIDY1NjIzLCA2NTYyNiwgCi0gICAgNjU2MjksIDY1NjMyLCA2NTYzNywgNjU2NDUsIDY1NjQ4LCA2NTY1MSwgNjU2NTUsIDY1NjU4LCA2NTY2MSwgNjU2NjQsIAotICAgIDY1NjY5LCA2NTY3MiwgNjU2NzUsIDY1NjgwLCA2NTY4MywgNjU2ODYsIDY1NjkxLCA2NTY5NCwgNjU2OTcsIDY1NzAyLCAKLSAgICA2NTcwNywgNjU3MTIsIDY1NzE1LCA2NTcxOCwgNjU3MjEsIDY1NzI0LCA2NTczMCwgNjU3MzMsIDY1NzM2LCA2NTczOSwgCi0gICAgNjU3NDEsIDY1NzQ0LCA2NTc0NywgNjU3NTAsIDY1NzU1LCA2NTc1OCwgNjU3NjEsIDY1NzY0LCA2NTc2NywgNjU3NzAsIAotICAgIDY1Nzc1LCA2NTc3OCwgNjU3ODEsIDY1Nzg0LCA2NTc4NywgNjU3OTAsIDY1NzkzLCA2NTc5NiwgNjU3OTksIDY1ODAyLCAKLSAgICA2NTgwOCwgNjU4MTMsIDY1ODIxLCA2NTgyOSwgNjU4MzcsIDY1ODQ1LCA2NTg1MywgNjU4NjEsIDY1ODcwLCA2NTg3OCwgCi0gICAgNjU4ODcsIDY1ODk2LCA2NTkwNSwgNjU5MTQsIDY1OTIzLCA2NTkzMiwgNjU5NDEsIDY1OTUwLCA2NTk1OSwgNjU5NjgsIAotICAgIDY1OTc3LCA2NTk4NiwgNjU5OTUsIDY2MDA0LCA2NjAxMywgNjYwMjIsIDY2MDMxLCA2NjA0MCwgNjYwNDksIDY2MDU4LCAKLSAgICA2NjA2NywgNjYwNzYsIDY2MDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA2MDY5MywgNjA2OTcsIDYwNzAxLCA2MDcwNiwgNjA3MTEsIDYwNzE2LCA2MDcyMCwgNjA3MjQsIDYwNzI4LCAKKyAgICA2MDczMywgNjA3MzgsIDYwNzQyLCA2MDc0NiwgNjA3NTAsIDYwNzU0LCA2MDc1OSwgNjA3NjQsIDYwNzY5LCA2MDc3NCwgCisgICAgNjA3NzgsIDYwNzgyLCA2MDc4NywgNjA3OTIsIDYwNzk3LCA2MDgwMiwgNjA4MDYsIDAsIDYwODEwLCA2MDgxNCwgNjA4MTgsIAorICAgIDYwODIyLCA2MDgyNiwgNjA4MzAsIDYwODM0LCA2MDgzOSwgNjA4NDQsIDYwODQ4LCA2MDg1MywgNjA4NTgsIDYwODY3LCAKKyAgICA2MDg3MSwgNjA4NzUsIDYwODc5LCA2MDg4NiwgNjA4OTAsIDYwODk1LCA2MDkwMCwgNjA5MDQsIDYwOTA4LCA2MDkxNCwgCisgICAgNjA5MTksIDYwOTI0LCA2MDkyOSwgNjA5MzQsIDYwOTM4LCA2MDk0MiwgNjA5NDYsIDYwOTUwLCA2MDk1NCwgNjA5NTksIAorICAgIDYwOTY0LCA2MDk2OCwgNjA5NzIsIDYwOTc3LCA2MDk4MiwgNjA5ODcsIDYwOTkxLCA2MDk5NSwgNjEwMDAsIDYxMDA1LCAKKyAgICA2MTAxMSwgNjEwMTcsIDYxMDIxLCA2MTAyNywgNjEwMzMsIDYxMDM3LCA2MTA0MywgNjEwNDksIDYxMDU0LCA2MTA1OSwgCisgICAgNjEwNjMsIDYxMDY5LCA2MTA3MywgNjEwNzcsIDYxMDgzLCA2MTA4OSwgNjEwOTQsIDYxMDk5LCA2MTEwMywgNjExMDcsIAorICAgIDYxMTE1LCA2MTEyMSwgNjExMjcsIDYxMTMzLCA2MTEzOCwgNjExNDMsIDYxMTQ4LCA2MTE1NCwgNjExNTgsIDYxMTY0LCAKKyAgICA2MTE2OCwgNjExNzIsIDYxMTc4LCA2MTE4NCwgNjExOTAsIDYxMTk2LCA2MTIwMiwgNjEyMDgsIDYxMjE0LCA2MTIyMCwgCisgICAgNjEyMjYsIDYxMjMyLCA2MTIzOCwgNjEyNDQsIDYxMjQ4LCA2MTI1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNjEyNjAsIDYxMjYzLCA2MTI2NywgNjEyNzEsIDYxMjc1LCA2MTI3OSwgNjEyODIsIDYxMjg1LCA2MTI4OSwgCisgICAgNjEyOTMsIDYxMjk3LCA2MTMwMSwgNjEzMDQsIDYxMzA5LCA2MTMxMywgNjEzMTcsIDYxMzIxLCA2MTMyNiwgNjEzMzAsIAorICAgIDYxMzM0LCA2MTMzOCwgNjEzNDIsIDYxMzQ4LCA2MTM1NCwgNjEzNTgsIDYxMzYyLCA2MTM2NiwgNjEzNzAsIDYxMzc0LCAKKyAgICA2MTM3OCwgNjEzODIsIDYxMzg2LCA2MTM5MCwgNjEzOTQsIDYxMzk4LCA2MTQwNCwgNjE0MDgsIDYxNDEyLCA2MTQxNiwgCisgICAgNjE0MjAsIDYxNDI0LCA2MTQyOCwgNjE0MzIsIDYxNDM2LCA2MTQ0MCwgNjE0NDQsIDYxNDQ4LCA2MTQ1MiwgNjE0NTYsIAorICAgIDYxNDYwLCA2MTQ2NCwgNjE0NjgsIDYxNDc0LCA2MTQ4MCwgNjE0ODUsIDYxNDkwLCA2MTQ5NCwgNjE0OTgsIDYxNTAyLCAKKyAgICA2MTUwNiwgNjE1MTAsIDYxNTE0LCA2MTUxOCwgNjE1MjIsIDYxNTI2LCA2MTUzMCwgNjE1MzQsIDYxNTM4LCA2MTU0MiwgCisgICAgNjE1NDYsIDYxNTUwLCA2MTU1NCwgNjE1NTgsIDYxNTYyLCA2MTU2NiwgNjE1NzAsIDYxNTc0LCA2MTU3OCwgNjE1ODIsIAorICAgIDYxNTg2LCA2MTU5MiwgNjE1OTYsIDYxNjAwLCA2MTYwNCwgNjE2MDgsIDYxNjEyLCA2MTYxNiwgNjE2MjAsIDYxNjI0LCAKKyAgICA2MTYyOSwgNjE2MzYsIDYxNjQwLCA2MTY0NCwgNjE2NDgsIDYxNjUyLCA2MTY1NiwgNjE2NjAsIDYxNjY0LCA2MTY2OCwgCisgICAgNjE2NzIsIDYxNjc2LCA2MTY4MCwgNjE2ODQsIDYxNjkxLCA2MTY5NSwgNjE3MDEsIDYxNzA1LCA2MTcwOSwgNjE3MTMsIAorICAgIDYxNzE3LCA2MTcyMSwgNjE3MjQsIDYxNzI4LCA2MTczMiwgNjE3MzYsIDYxNzQwLCA2MTc0NCwgNjE3NDgsIDYxNzUyLCAKKyAgICA2MTc1NiwgNjE3NjAsIDYxNzY0LCA2MTc2OCwgNjE3NzIsIDYxNzc2LCA2MTc4MCwgNjE3ODQsIDYxNzg4LCA2MTc5MiwgCisgICAgNjE3OTYsIDYxODAwLCA2MTgwNCwgNjE4MDgsIDYxODEyLCA2MTgxNiwgNjE4MjAsIDYxODI0LCA2MTgyOCwgNjE4MzIsIAorICAgIDYxODM2LCA2MTg0MCwgNjE4NDQsIDYxODQ4LCA2MTg1MiwgNjE4NTgsIDYxODYyLCA2MTg2NiwgNjE4NzAsIDYxODc0LCAKKyAgICA2MTg3OCwgNjE4ODIsIDYxODg2LCA2MTg5MCwgNjE4OTQsIDYxODk4LCA2MTkwMiwgNjE5MDYsIDYxOTEwLCA2MTkxNCwgCisgICAgNjE5MTgsIDYxOTIyLCA2MTkyNiwgNjE5MzAsIDYxOTM0LCA2MTkzOCwgNjE5NDIsIDYxOTQ2LCA2MTk1MCwgNjE5NTQsIAorICAgIDYxOTU4LCA2MTk2MiwgNjE5NjYsIDYxOTc0LCA2MTk3OCwgNjE5ODIsIDYxOTg2LCA2MTk5MCwgNjE5OTQsIDYyMDAwLCAKKyAgICA2MjAwNCwgNjIwMDgsIDYyMDEyLCA2MjAxNiwgNjIwMjAsIDYyMDI0LCA2MjAyOCwgNjIwMzIsIDYyMDM2LCA2MjA0MCwgCisgICAgNjIwNDQsIDYyMDQ4LCA2MjA1MiwgNjIwNTgsIDYyMDYyLCA2MjA2NiwgNjIwNzAsIDYyMDc0LCA2MjA3OCwgNjIwODIsIAorICAgIDYyMDg2LCA2MjA5MCwgNjIwOTQsIDYyMDk4LCA2MjEwMiwgNjIxMDYsIDYyMTEwLCA2MjExNCwgNjIxMTgsIDYyMTIyLCAKKyAgICA2MjEyNiwgNjIxMzAsIDYyMTM0LCA2MjEzOCwgNjIxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMTQ2LCA2MjE1NSwgNjIxNjMsIDYyMTc0LCA2MjE4NCwgCisgICAgNjIxOTIsIDYyMjAxLCA2MjIxMCwgNjIyMjAsIDYyMjMyLCA2MjI0NCwgNjIyNTYsIDAsIDAsIDAsIDAsIDYyMjYyLCAKKyAgICA2MjI2NSwgNjIyNjgsIDYyMjczLCA2MjI3NiwgNjIyODMsIDYyMjg3LCA2MjI5MSwgNjIyOTUsIDYyMjk5LCA2MjMwMywgCisgICAgNjIzMDgsIDYyMzEzLCA2MjMxNywgNjIzMjEsIDYyMzI2LCA2MjMzMSwgNjIzMzYsIDYyMzQxLCA2MjM0NCwgNjIzNDcsIAorICAgIDYyMzUzLCA2MjM1OSwgNjIzNjQsIDYyMzY5LCA2MjM3NiwgNjIzODMsIDYyMzg3LCA2MjM5MSwgNjIzOTUsIDYyNDAzLCAKKyAgICA2MjQwOSwgNjI0MTYsIDYyNDIxLCA2MjQyNiwgNjI0MzEsIDYyNDM2LCA2MjQ0MSwgNjI0NDYsIDYyNDUxLCA2MjQ1NywgCisgICAgNjI0NjIsIDYyNDY4LCA2MjQ3MywgNjI0NzgsIDYyNDgzLCA2MjQ4OCwgNjI0OTQsIDYyNDk5LCA2MjUwMywgNjI1MDksIAorICAgIDYyNTIwLCA2MjUzMCwgNjI1NDUsIDYyNTU1LCA2MjU1OSwgNjI1NjksIDYyNTc1LCA2MjU4MSwgNjI1ODcsIDYyNTkyLCAKKyAgICA2MjU5NSwgNjI2MDAsIDYyNjA0LCAwLCA2MjYxMCwgNjI2MTQsIDYyNjE3LCA2MjYyMSwgNjI2MjQsIDYyNjI4LCA2MjYzMSwgCisgICAgNjI2MzUsIDYyNjM4LCA2MjY0MiwgNjI2NDUsIDYyNjQ4LCA2MjY1MiwgNjI2NTYsIDYyNjYwLCA2MjY2NCwgNjI2NjgsIAorICAgIDYyNjcyLCA2MjY3NiwgNjI2ODAsIDYyNjg0LCA2MjY4OCwgNjI2OTIsIDYyNjk2LCA2MjcwMCwgNjI3MDQsIDYyNzA4LCAKKyAgICA2MjcxMiwgNjI3MTYsIDYyNzIwLCA2MjcyNCwgNjI3MjgsIDYyNzMyLCA2MjczNiwgNjI3NDAsIDYyNzQ1LCA2Mjc0OSwgCisgICAgNjI3NTMsIDYyNzU3LCA2Mjc2MSwgNjI3NjQsIDYyNzY4LCA2Mjc3MSwgNjI3NzUsIDYyNzc5LCA2Mjc4MywgNjI3ODcsIAorICAgIDYyNzkwLCA2Mjc5NCwgNjI3OTcsIDYyODAxLCA2MjgwNSwgNjI4MDksIDYyODEzLCA2MjgxNywgNjI4MjEsIDYyODI1LCAKKyAgICA2MjgyOSwgNjI4MzMsIDYyODM3LCA2Mjg0MSwgNjI4NDUsIDYyODQ4LCA2Mjg1MiwgNjI4NTYsIDYyODYwLCA2Mjg2NCwgCisgICAgNjI4NjgsIDYyODcxLCA2Mjg3NiwgNjI4ODAsIDYyODg1LCA2Mjg4OSwgNjI4OTMsIDYyODk3LCA2MjkwMSwgNjI5MDUsIAorICAgIDYyOTA5LCA2MjkxNCwgNjI5MTgsIDYyOTIyLCA2MjkyNiwgNjI5MzAsIDYyOTM0LCA2MjkzOCwgNjI5NDIsIDAsIDAsIAorICAgIDYyOTQ3LCA2Mjk1NSwgNjI5NjMsIDYyOTcwLCA2Mjk3NywgNjI5ODEsIDYyOTg3LCA2Mjk5MiwgNjI5OTcsIDYzMDAxLCAKKyAgICA2MzAwNCwgNjMwMDgsIDYzMDExLCA2MzAxNSwgNjMwMTgsIDYzMDIyLCA2MzAyNSwgNjMwMjksIDYzMDMyLCA2MzAzNSwgCisgICAgNjMwMzksIDYzMDQzLCA2MzA0NywgNjMwNTEsIDYzMDU1LCA2MzA1OSwgNjMwNjMsIDYzMDY3LCA2MzA3MSwgNjMwNzUsIAorICAgIDYzMDc5LCA2MzA4MywgNjMwODcsIDYzMDkxLCA2MzA5NSwgNjMwOTksIDYzMTAzLCA2MzEwNywgNjMxMTEsIDYzMTE1LCAKKyAgICA2MzExOSwgNjMxMjMsIDYzMTI3LCA2MzEzMiwgNjMxMzYsIDYzMTQwLCA2MzE0NCwgNjMxNDgsIDYzMTUxLCA2MzE1NSwgCisgICAgNjMxNTgsIDYzMTYyLCA2MzE2NiwgNjMxNzAsIDYzMTc0LCA2MzE3NywgNjMxODEsIDYzMTg0LCA2MzE4OCwgNjMxOTIsIAorICAgIDYzMTk2LCA2MzIwMCwgNjMyMDQsIDYzMjA4LCA2MzIxMiwgNjMyMTYsIDYzMjIwLCA2MzIyNCwgNjMyMjgsIDYzMjMyLCAKKyAgICA2MzIzNSwgNjMyMzksIDYzMjQzLCA2MzI0NywgNjMyNTEsIDYzMjU1LCA2MzI1OCwgNjMyNjMsIDYzMjY3LCA2MzI3MiwgCisgICAgNjMyNzYsIDYzMjgwLCA2MzI4NCwgNjMyODgsIDYzMjkyLCA2MzI5NiwgNjMzMDEsIDYzMzA1LCA2MzMwOSwgNjMzMTMsIAorICAgIDYzMzE3LCA2MzMyMSwgNjMzMjUsIDYzMzI5LCA2MzMzNCwgNjMzMzgsIDYzMzQyLCA2MzM0NiwgNjMzNTAsIDYzMzU0LCAKKyAgICA2MzM2MSwgNjMzNjUsIDYzMzcxLCAwLCAwLCAwLCAwLCAwLCA2MzM3NiwgNjMzODEsIDYzMzg2LCA2MzM5MSwgNjMzOTYsIAorICAgIDYzNDAxLCA2MzQwNiwgNjM0MTEsIDYzNDE1LCA2MzQyMCwgNjM0MjUsIDYzNDMwLCA2MzQzNSwgNjM0NDAsIDYzNDQ1LCAKKyAgICA2MzQ1MCwgNjM0NTUsIDYzNDYwLCA2MzQ2NCwgNjM0NjksIDYzNDc0LCA2MzQ3OSwgNjM0ODMsIDYzNDg3LCA2MzQ5MSwgCisgICAgNjM0OTYsIDYzNTAxLCA2MzUwNiwgNjM1MTEsIDYzNTE2LCA2MzUyMSwgNjM1MjYsIDYzNTMxLCA2MzUzNiwgNjM1NDEsIAorICAgIDYzNTQ1LCA2MzU0OSwgNjM1NTQsIDYzNTU5LCA2MzU2NCwgNjM1NjksIDAsIDAsIDAsIDYzNTc0LCA2MzU3OCwgNjM1ODIsIAorICAgIDYzNTg2LCA2MzU5MCwgNjM1OTQsIDYzNTk4LCA2MzYwMiwgNjM2MDYsIDYzNjEwLCA2MzYxNCwgNjM2MTgsIDYzNjIyLCAKKyAgICA2MzYyNiwgNjM2MzAsIDYzNjM0LCA2MzYzOCwgNjM2NDIsIDYzNjQ2LCA2MzY1MCwgNjM2NTQsIDYzNjU4LCA2MzY2MiwgCisgICAgNjM2NjYsIDYzNjcwLCA2MzY3NCwgNjM2NzgsIDYzNjgyLCA2MzY4NiwgNjM2OTAsIDYzNjk0LCA2MzY5NywgNjM3MDEsIAorICAgIDYzNzA0LCA2MzcwOCwgNjM3MTIsIDYzNzE1LCA2MzcxOSwgNjM3MjMsIDYzNzI2LCA2MzczMCwgNjM3MzQsIDYzNzM4LCAKKyAgICA2Mzc0MiwgNjM3NDUsIDYzNzQ5LCA2Mzc1MywgNjM3NTcsIDYzNzYxLCA2Mzc2NSwgNjM3NjksIDYzNzcyLCA2Mzc3NSwgCisgICAgNjM3NzksIDYzNzgzLCA2Mzc4NywgNjM3OTEsIDYzNzk1LCA2Mzc5OSwgNjM4MDMsIDYzODA3LCA2MzgxMSwgNjM4MTUsIAorICAgIDYzODE5LCA2MzgyMywgNjM4MjcsIDYzODMxLCA2MzgzNSwgNjM4MzksIDYzODQzLCA2Mzg0NywgNjM4NTEsIDYzODU1LCAKKyAgICA2Mzg1OSwgNjM4NjMsIDYzODY3LCA2Mzg3MSwgNjM4NzUsIDYzODc5LCA2Mzg4MywgNjM4ODcsIDYzODkxLCA2Mzg5NSwgCisgICAgNjM4OTksIDYzOTAzLCA2MzkwNywgNjM5MTEsIDYzOTE1LCA2MzkxOSwgNjM5MjMsIDYzOTI3LCA2MzkzMSwgNjM5MzUsIAorICAgIDYzOTM5LCAwLCA2Mzk0MywgNjM5NDksIDYzOTU1LCA2Mzk2MCwgNjM5NjUsIDYzOTcwLCA2Mzk3NiwgNjM5ODIsIDYzOTg3LCAKKyAgICA2Mzk5MywgNjM5OTksIDY0MDA1LCA2NDAxMSwgNjQwMTcsIDY0MDIzLCA2NDAyOSwgNjQwMzUsIDY0MDQwLCA2NDA0NSwgCisgICAgNjQwNTAsIDY0MDU1LCA2NDA2MCwgNjQwNjUsIDY0MDcwLCA2NDA3NSwgNjQwODAsIDY0MDg1LCA2NDA5MCwgNjQwOTUsIAorICAgIDY0MTAwLCA2NDEwNSwgNjQxMTAsIDY0MTE1LCA2NDEyMCwgNjQxMjUsIDY0MTMwLCA2NDEzNSwgNjQxNDEsIDY0MTQ3LCAKKyAgICA2NDE1MywgNjQxNTksIDY0MTY0LCA2NDE2OSwgMCwgMCwgMCwgMCwgMCwgNjQxNzQsIDY0MTc5LCA2NDE4NCwgNjQxODksIAorICAgIDY0MTk0LCA2NDE5OSwgNjQyMDQsIDY0MjA5LCA2NDIxNCwgNjQyMTksIDY0MjI0LCA2NDIyOSwgNjQyMzQsIDY0MjM5LCAKKyAgICA2NDI0NCwgNjQyNDksIDY0MjU0LCA2NDI1OSwgNjQyNjQsIDY0MjY5LCA2NDI3NCwgNjQyNzksIDY0Mjg0LCA2NDI4OSwgCisgICAgNjQyOTQsIDY0Mjk5LCA2NDMwNCwgNjQzMDksIDY0MzE0LCA2NDMxOSwgNjQzMjQsIDY0MzI5LCA2NDMzNCwgNjQzMzksIAorICAgIDY0MzQ0LCA2NDM0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQzNTQsIDY0MzU5LCA2NDM2NCwgCisgICAgNjQzNjksIDY0MzczLCA2NDM3OCwgNjQzODIsIDY0Mzg3LCA2NDM5MiwgNjQzOTcsIDY0NDAyLCA2NDQwNywgNjQ0MTIsIAorICAgIDY0NDE3LCA2NDQyMiwgNjQ0MjcsIDY0NDMyLCA2NDQzNiwgNjQ0NDAsIDY0NDQ0LCA2NDQ0OCwgNjQ0NTIsIDY0NDU2LCAKKyAgICA2NDQ2MCwgNjQ0NjQsIDY0NDY4LCA2NDQ3MiwgNjQ0NzYsIDY0NDgwLCA2NDQ4NCwgNjQ0ODgsIDY0NDkzLCA2NDQ5OCwgCisgICAgNjQ1MDMsIDY0NTA4LCA2NDUxMywgNjQ1MTgsIDY0NTIzLCA2NDUyOCwgNjQ1MzMsIDY0NTM4LCA2NDU0MywgNjQ1NDgsIAorICAgIDY0NTUzLCA2NDU1OCwgNjQ1NjMsIDY0NTY5LCAwLCA2NDU3NiwgNjQ1ODAsIDY0NTg0LCA2NDU4OCwgNjQ1OTIsIDY0NTk2LCAKKyAgICA2NDYwMCwgNjQ2MDUsIDY0NjA5LCA2NDYxNCwgNjQ2MTksIDY0NjI0LCA2NDYyOSwgNjQ2MzQsIDY0NjM5LCA2NDY0NCwgCisgICAgNjQ2NDksIDY0NjU0LCA2NDY1OSwgNjQ2NjQsIDY0NjY5LCA2NDY3NCwgNjQ2NzksIDY0Njg0LCA2NDY4OSwgNjQ2OTQsIAorICAgIDY0Njk5LCA2NDcwNCwgNjQ3MDksIDY0NzE0LCA2NDcxOSwgNjQ3MjQsIDY0NzI5LCA2NDczNCwgNjQ3MzksIDY0NzQ0LCAKKyAgICA2NDc0OSwgNjQ3NTQsIDY0NzU5LCA2NDc2NCwgNjQ3NjksIDY0Nzc4LCA2NDc4NywgNjQ3OTYsIDY0ODA1LCA2NDgxNCwgCisgICAgNjQ4MjMsIDY0ODMyLCA2NDg0MSwgNjQ4NDQsIDY0ODQ5LCA2NDg1NCwgNjQ4NTksIDY0ODY0LCA2NDg2OSwgNjQ4NzQsIAorICAgIDY0ODgwLCA2NDg4NSwgNjQ4OTEsIDY0ODk1LCA2NDkwMCwgNjQ5MDUsIDY0OTEwLCA2NDkxNSwgNjQ5MjAsIDY0OTI0LCAKKyAgICA2NDkyOCwgNjQ5MzIsIDY0OTM2LCA2NDk0MCwgNjQ5NDQsIDY0OTQ4LCA2NDk1MiwgNjQ5NTYsIDY0OTYwLCA2NDk2NCwgCisgICAgNjQ5NjgsIDY0OTcyLCA2NDk3NiwgNjQ5ODEsIDY0OTg2LCA2NDk5MSwgNjQ5OTYsIDY1MDAxLCA2NTAwNiwgNjUwMTEsIAorICAgIDY1MDE2LCA2NTAyMSwgNjUwMjYsIDY1MDMxLCA2NTAzNiwgNjUwNDEsIDY1MDQ2LCA2NTA1MiwgNjUwNTgsIDY1MDYzLCAKKyAgICA2NTA2OCwgNjUwNzIsIDY1MDc2LCA2NTA4MCwgNjUwODQsIDY1MDg4LCA2NTA5MiwgNjUwOTcsIDY1MTAxLCA2NTEwNiwgCisgICAgNjUxMTEsIDY1MTE2LCA2NTEyMSwgNjUxMjYsIDY1MTMxLCA2NTEzNiwgNjUxNDEsIDY1MTQ2LCA2NTE1MSwgNjUxNTYsIAorICAgIDY1MTYxLCA2NTE2NiwgNjUxNzEsIDY1MTc2LCA2NTE4MSwgNjUxODYsIDY1MTkxLCA2NTE5NiwgNjUyMDEsIDY1MjA2LCAKKyAgICA2NTIxMSwgNjUyMTYsIDY1MjIxLCA2NTIyNiwgNjUyMzEsIDY1MjM2LCA2NTI0MSwgNjUyNDYsIDY1MjUxLCA2NTI1NiwgCisgICAgNjUyNjEsIDY1MjY2LCA2NTI3MSwgNjUyNzYsIDY1MjgxLCA2NTI4NiwgNjUyOTEsIDY1Mjk2LCA2NTMwMSwgNjUzMDYsIAorICAgIDY1MzExLCA2NTMxNywgNjUzMjIsIDY1MzI4LCA2NTMzMiwgNjUzMzcsIDY1MzQyLCA2NTM0NywgNjUzNTIsIDY1MzU3LCAKKyAgICA2NTM2MiwgNjUzNjgsIDY1MzczLCA2NTM3OSwgNjUzODMsIDY1MzkwLCA2NTM5NywgNjU0MDQsIDY1NDExLCA2NTQxOCwgCisgICAgNjU0MjUsIDY1NDMyLCA2NTQzOSwgNjU0NDYsIDY1NDUzLCA2NTQ2MCwgNjU0NjcsIDY1NDcwLCA2NTQ3MywgNjU0NzYsIAorICAgIDY1NDgxLCA2NTQ4NCwgNjU0ODcsIDY1NDkwLCA2NTQ5MywgNjU0OTYsIDY1NDk5LCA2NTUwMywgNjU1MDcsIDY1NTExLCAKKyAgICA2NTUxNSwgNjU1MTksIDY1NTIzLCA2NTUyNywgNjU1MzEsIDY1NTM1LCA2NTUzOSwgNjU1NDMsIDY1NTQ3LCA2NTU1MSwgCisgICAgNjU1NTQsIDY1NTU3LCA2NTU2MSwgNjU1NjUsIDY1NTY5LCA2NTU3MywgNjU1NzYsIDY1NTgwLCA2NTU4NCwgNjU1ODgsIAorICAgIDY1NTkyLCA2NTU5NSwgNjU1OTksIDY1NjAzLCA2NTYwNywgNjU2MTEsIDY1NjE0LCA2NTYxOCwgNjU2MjIsIDY1NjI2LCAKKyAgICA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIDY1NjUwLCA2NTY1NCwgMCwgNjU2NTgsIDY1NjYxLCA2NTY2NCwgCisgICAgNjU2NjcsIDY1NjcwLCA2NTY3MywgNjU2NzYsIDY1Njc5LCA2NTY4MiwgNjU2ODUsIDY1Njg4LCA2NTY5MSwgNjU2OTQsIAorICAgIDY1Njk3LCA2NTcwMCwgNjU3MDMsIDY1NzA2LCA2NTcwOSwgNjU3MTIsIDY1NzE1LCA2NTcxOCwgNjU3MjEsIDY1NzI0LCAKKyAgICA2NTcyNywgNjU3MzAsIDY1NzMzLCA2NTczNiwgNjU3MzksIDY1NzQyLCA2NTc0NSwgNjU3NDgsIDY1NzUxLCA2NTc1NCwgCisgICAgNjU3NTcsIDY1NzYwLCA2NTc2MywgNjU3NjYsIDY1NzY5LCA2NTc3MiwgNjU3NzUsIDY1Nzc4LCA2NTc4MSwgNjU3ODQsIAorICAgIDY1Nzg3LCA2NTc5MCwgNjU3OTMsIDY1Nzk2LCA2NTc5OSwgNjU4MDIsIDY1ODA1LCA2NTgwOCwgNjU4MTEsIDY1ODE0LCAKKyAgICA2NTgxNywgNjU4MjAsIDY1ODIzLCA2NTgyNiwgNjU4MjksIDY1ODMyLCA2NTgzNSwgNjU4MzgsIDY1ODQxLCA2NTg0NCwgCisgICAgNjU4NDcsIDY1ODUwLCA2NTg1MywgNjU4NTYsIDY1ODU5LCA2NTg2MiwgNjU4NjUsIDY1ODY4LCA2NTg3MSwgNjU4NzQsIAorICAgIDY1ODc3LCA2NTg4MCwgNjU4ODMsIDY1ODg2LCA2NTg4OSwgNjU4OTIsIDY1ODk1LCA2NTg5OCwgNjU5MDEsIDY1OTA0LCAKKyAgICA2NTkwNywgNjU5MTAsIDY1OTEzLCA2NTkxNiwgNjU5MTksIDY1OTIyLCA2NTkzMSwgNjU5MzksIDY1OTQ3LCA2NTk1NSwgCisgICAgNjU5NjMsIDY1OTcxLCA2NTk3OSwgNjU5ODgsIDY1OTk2LCA2NjAwNSwgNjYwMTQsIDY2MDIzLCA2NjAzMiwgNjYwNDEsIAorICAgIDY2MDUwLCA2NjA1OSwgNjYwNjgsIDY2MDc3LCA2NjA4NiwgNjYwOTUsIDY2MTA0LCA2NjExMywgNjYxMjIsIDY2MTMxLCAKKyAgICA2NjE0MCwgNjYxNDMsIDY2MTQ2LCA2NjE0OSwgNjYxNTEsIDY2MTU0LCA2NjE1NywgNjYxNjAsIDY2MTY1LCA2NjE3MCwgCisgICAgNjYxNzMsIDY2MTgwLCA2NjE4NywgNjYxOTQsIDY2MjAxLCA2NjIwNCwgNjYyMDksIDY2MjExLCA2NjIxNSwgNjYyMTcsIAorICAgIDY2MjE5LCA2NjIyMiwgNjYyMjUsIDY2MjI4LCA2NjIzMSwgNjYyMzQsIDY2MjM3LCA2NjI0MCwgNjYyNDUsIDY2MjUwLCAKKyAgICA2NjI1MywgNjYyNTYsIDY2MjU5LCA2NjI2MiwgNjYyNjUsIDY2MjY4LCA2NjI3MSwgNjYyNzUsIDY2Mjc4LCA2NjI4MSwgCisgICAgNjYyODQsIDY2Mjg3LCA2NjI5MCwgNjYyOTUsIDY2Mjk4LCA2NjMwMSwgNjYzMDQsIDY2MzA5LCA2NjMxNCwgNjYzMTksIAorICAgIDY2MzI0LCA2NjMyOSwgNjYzMzQsIDY2MzM5LCA2NjM0NCwgNjYzNTAsIDY2MzU4LCA2NjM2MCwgNjYzNjMsIDY2MzY2LCAKKyAgICA2NjM2OSwgNjYzNzIsIDY2Mzc4LCA2NjM4NiwgNjYzODksIDY2MzkyLCA2NjM5NywgNjY0MDAsIDY2NDAzLCA2NjQwNiwgCisgICAgNjY0MTEsIDY2NDE0LCA2NjQxNywgNjY0MjIsIDY2NDI1LCA2NjQyOCwgNjY0MzMsIDY2NDM2LCA2NjQzOSwgNjY0NDQsIAorICAgIDY2NDQ5LCA2NjQ1NCwgNjY0NTcsIDY2NDYwLCA2NjQ2MywgNjY0NjYsIDY2NDcyLCA2NjQ3NSwgNjY0NzgsIDY2NDgxLCAKKyAgICA2NjQ4MywgNjY0ODYsIDY2NDg5LCA2NjQ5MiwgNjY0OTcsIDY2NTAwLCA2NjUwMywgNjY1MDYsIDY2NTA5LCA2NjUxMiwgCisgICAgNjY1MTcsIDY2NTIwLCA2NjUyMywgNjY1MjYsIDY2NTI5LCA2NjUzMiwgNjY1MzUsIDY2NTM4LCA2NjU0MSwgNjY1NDQsIAorICAgIDY2NTUwLCA2NjU1NSwgNjY1NjMsIDY2NTcxLCA2NjU3OSwgNjY1ODcsIDY2NTk1LCA2NjYwMywgNjY2MTIsIDY2NjIwLCAKKyAgICA2NjYyOSwgNjY2MzgsIDY2NjQ3LCA2NjY1NiwgNjY2NjUsIDY2Njc0LCA2NjY4MywgNjY2OTIsIDY2NzAxLCA2NjcxMCwgCisgICAgNjY3MTksIDY2NzI4LCA2NjczNywgNjY3NDYsIDY2NzU1LCA2Njc2NCwgNjY3NzMsIDY2NzgyLCA2Njc5MSwgNjY4MDAsIAorICAgIDY2ODA5LCA2NjgxOCwgNjY4MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTc5OTQsMzA1ICsxOTExMywzMDUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NjA4OCwgNjYwOTcsIDY2MTA2LCA2NjExNywgNjYxMjQsIDY2MTI5LCA2NjEzNCwgNjYxNDEsIDY2MTQ4LCA2NjE1NCwgCi0gICAgNjYxNTksIDY2MTY0LCA2NjE2OSwgNjYxNzQsIDY2MTgxLCA2NjE4NiwgNjYxOTEsIDY2MTk2LCA2NjIwNywgNjYyMTIsIAotICAgIDY2MjE3LCA2NjIyNCwgNjYyMjksIDY2MjM2LCA2NjI0MSwgNjYyNDYsIDY2MjUzLCA2NjI2MCwgNjYyNjcsIDY2Mjc2LCAKLSAgICA2NjI4NSwgNjYyOTAsIDY2Mjk1LCA2NjMwMCwgNjYzMDcsIDY2MzEyLCA2NjMyMiwgNjYzMjksIDY2MzM0LCA2NjMzOSwgCi0gICAgNjYzNDQsIDY2MzQ5LCA2NjM1NCwgNjYzNTksIDY2MzY4LCA2NjM3NSwgNjYzODIsIDY2Mzg3LCA2NjM5NCwgNjYzOTksIAotICAgIDY2NDA2LCA2NjQxNSwgNjY0MjYsIDY2NDMxLCA2NjQ0MCwgNjY0NDUsIDY2NDUyLCA2NjQ2MSwgNjY0NzAsIDY2NDc1LCAKLSAgICA2NjQ4MCwgNjY0ODcsIDY2NDkzLCA2NjUwMCwgNjY1MDcsIDY2NTExLCA2NjUxNSwgNjY1MTgsIDY2NTIyLCA2NjUyNiwgCi0gICAgNjY1MzAsIDY2NTM0LCA2NjUzOCwgNjY1NDIsIDY2NTQ2LCA2NjU0OSwgNjY1NTMsIDY2NTU3LCA2NjU2MSwgNjY1NjUsIAotICAgIDY2NTY5LCA2NjU3MywgNjY1NzYsIDY2NTgwLCA2NjU4NCwgNjY1ODcsIDY2NTkxLCA2NjU5NSwgNjY1OTksIDY2NjAzLCAKLSAgICA2NjYwNywgNjY2MTEsIDY2NjE1LCA2NjYxOSwgNjY2MjMsIDY2NjI3LCA2NjYzMSwgNjY2MzUsIDY2NjM5LCA2NjY0MywgCi0gICAgNjY2NDcsIDY2NjUxLCA2NjY1NSwgNjY2NTksIDY2NjYzLCA2NjY2NywgNjY2NzEsIDY2Njc1LCA2NjY3OSwgNjY2ODMsIAotICAgIDY2Njg3LCA2NjY5MSwgNjY2OTUsIDY2Njk5LCA2NjcwMywgNjY3MDcsIDY2NzExLCA2NjcxNSwgNjY3MTksIDY2NzIzLCAKLSAgICA2NjcyNywgNjY3MzEsIDY2NzM1LCA2NjczOSwgNjY3NDMsIDY2NzQ3LCA2Njc1MSwgNjY3NTUsIDY2NzU5LCA2Njc2MywgCi0gICAgNjY3NjYsIDY2NzcwLCA2Njc3NCwgNjY3NzgsIDY2NzgyLCA2Njc4NiwgNjY3OTAsIDY2Nzk0LCA2Njc5OCwgNjY4MDIsIAotICAgIDY2ODA2LCA2NjgxMCwgNjY4MTQsIDY2ODE4LCA2NjgyMiwgNjY4MjYsIDY2ODMwLCA2NjgzNCwgNjY4MzgsIDY2ODQyLCAKLSAgICA2Njg0NiwgNjY4NTAsIDY2ODU0LCA2Njg1OCwgNjY4NjIsIDY2ODY2LCA2Njg3MCwgNjY4NzQsIDY2ODc4LCA2Njg4MiwgCi0gICAgNjY4ODYsIDY2ODkwLCA2Njg5NCwgNjY4OTgsIDY2OTAyLCA2NjkwNiwgNjY5MTAsIDY2OTE0LCA2NjkxOCwgNjY5MjIsIAotICAgIDY2OTI2LCA2NjkzMCwgNjY5MzQsIDY2OTM4LCA2Njk0MiwgNjY5NDYsIDY2OTUwLCA2Njk1NCwgNjY5NTgsIDY2OTYyLCAKLSAgICA2Njk2NiwgNjY5NzAsIDY2OTc0LCA2Njk3OCwgNjY5ODIsIDY2OTg2LCA2Njk5MCwgNjY5OTQsIDY2OTk4LCA2NzAwMiwgCi0gICAgNjcwMDYsIDY3MDEwLCA2NzAxNCwgNjcwMTgsIDY3MDIyLCA2NzAyNiwgNjcwMzAsIDY3MDM0LCA2NzAzOCwgNjcwNDIsIAotICAgIDY3MDQ2LCA2NzA1MCwgNjcwNTQsIDY3MDU4LCA2NzA2MiwgNjcwNjYsIDY3MDcwLCA2NzA3NCwgNjcwNzgsIDY3MDgyLCAKLSAgICA2NzA4NiwgNjcwOTAsIDY3MDk0LCA2NzA5OCwgNjcxMDIsIDY3MTA2LCA2NzExMCwgNjcxMTQsIDY3MTE4LCA2NzEyMiwgCi0gICAgNjcxMjYsIDY3MTMwLCA2NzEzNCwgNjcxMzgsIDY3MTQyLCA2NzE0NiwgNjcxNTAsIDY3MTU0LCA2NzE1OCwgNjcxNjIsIAotICAgIDY3MTY2LCA2NzE3MCwgNjcxNzQsIDY3MTc4LCA2NzE4MiwgNjcxODYsIDY3MTkwLCA2NzE5NCwgNjcxOTgsIDY3MjAyLCAKLSAgICA2NzIwNiwgNjcyMTAsIDY3MjE0LCA2NzIxOCwgNjcyMjIsIDY3MjI2LCA2NzIzMCwgNjcyMzQsIDY3MjM3LCA2NzI0MSwgCi0gICAgNjcyNDUsIDY3MjQ5LCA2NzI1MywgNjcyNTcsIDY3MjYxLCA2NzI2NSwgNjcyNjksIDY3MjczLCA2NzI3NywgNjcyODEsIAotICAgIDY3Mjg1LCA2NzI4OSwgNjcyOTMsIDY3Mjk3LCA2NzMwMSwgNjczMDUsIDY3MzA5LCA2NzMxMywgNjczMTcsIDY3MzIxLCAKLSAgICA2NzMyNSwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgCi0gICAgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIAotICAgIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCAKLSAgICA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgCi0gICAgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgNjc1MDksIDY3NTEzLCA2NzUxNywgNjc1MjEsIAotICAgIDY3NTI1LCA2NzUyOSwgNjc1MzMsIDY3NTM3LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1MywgNjc1NTcsIDY3NTYxLCAKLSAgICA2NzU2NSwgNjc1NjksIDY3NTczLCA2NzU3NywgNjc1ODEsIDY3NTg1LCA2NzU4OSwgNjc1OTMsIDY3NTk3LCA2NzYwMSwgCi0gICAgNjc2MDUsIDY3NjA5LCA2NzYxMywgNjc2MTcsIDY3NjIxLCA2NzYyNSwgNjc2MjksIDY3NjMzLCA2NzYzNywgNjc2NDEsIAotICAgIDY3NjQ1LCA2NzY0OSwgNjc2NTMsIDY3NjU3LCA2NzY2MSwgNjc2NjUsIDY3NjY5LCA2NzY3MywgNjc2NzcsIDY3NjgxLCAKLSAgICA2NzY4NSwgNjc2ODksIDY3NjkzLCA2NzY5NywgNjc3MDAsIDY3NzA0LCA2NzcwOCwgNjc3MTIsIDY3NzE2LCA2NzcyMCwgCi0gICAgNjc3MjQsIDY3NzI4LCA2NzczMiwgNjc3MzYsIDY3NzQwLCA2Nzc0NCwgNjc3NDgsIDY3NzUyLCA2Nzc1NiwgNjc3NjAsIAotICAgIDY3NzY0LCA2Nzc2OCwgNjc3NzIsIDY3Nzc2LCA2Nzc4MCwgNjc3ODQsIDY3Nzg4LCA2Nzc5MiwgNjc3OTYsIDY3ODAwLCAKLSAgICA2NzgwNCwgNjc4MDgsIDY3ODEyLCA2NzgxNiwgNjc4MjAsIDY3ODI0LCA2NzgyOCwgNjc4MzIsIDY3ODM2LCA2Nzg0MCwgCi0gICAgNjc4NDQsIDY3ODQ4LCA2Nzg1MiwgNjc4NTYsIDY3ODYwLCA2Nzg2NCwgNjc4NjgsIDY3ODcyLCA2Nzg3NiwgNjc4ODAsIAotICAgIDY3ODg0LCA2Nzg4OCwgNjc4OTIsIDY3ODk2LCA2NzkwMCwgNjc5MDQsIDY3OTA4LCA2NzkxMiwgNjc5MTYsIDY3OTIwLCAKLSAgICA2NzkyNCwgNjc5MjgsIDY3OTMyLCA2NzkzNiwgNjc5NDAsIDY3OTQ0LCA2Nzk0OCwgNjc5NTIsIDY3OTU2LCA2Nzk2MCwgCi0gICAgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTgwLCA2Nzk4NCwgNjc5ODgsIDY3OTkyLCA2Nzk5NiwgNjgwMDAsIAotICAgIDY4MDA0LCA2ODAwOCwgNjgwMTIsIDY4MDE2LCA2ODAyMCwgNjgwMjQsIDY4MDI4LCA2ODAzMiwgNjgwMzYsIDY4MDQwLCAKLSAgICA2ODA0NCwgNjgwNDgsIDY4MDUyLCA2ODA1NiwgNjgwNjAsIDY4MDY0LCA2ODA2OCwgNjgwNzIsIDY4MDc2LCA2ODA4MCwgCi0gICAgNjgwODQsIDY4MDg4LCA2ODA5MiwgNjgwOTYsIDY4MTAwLCA2ODEwNCwgNjgxMDgsIDY4MTEyLCA2ODExNiwgNjgxMjAsIAotICAgIDY4MTI0LCA2ODEyOCwgNjgxMzIsIDY4MTM2LCA2ODE0MCwgNjgxNDQsIDY4MTQ4LCA2ODE1MiwgNjgxNTYsIDY4MTYwLCAKLSAgICA2ODE2NCwgNjgxNjgsIDY4MTcyLCA2ODE3NiwgNjgxODAsIDY4MTg0LCA2ODE4OCwgNjgxOTIsIDY4MTk2LCA2ODIwMCwgCi0gICAgNjgyMDQsIDY4MjA4LCA2ODIxMiwgNjgyMTYsIDY4MjIwLCA2ODIyNCwgNjgyMjgsIDY4MjMyLCA2ODIzNiwgNjgyNDAsIAotICAgIDY4MjQ0LCA2ODI0OCwgNjgyNTIsIDY4MjU2LCA2ODI2MCwgNjgyNjQsIDY4MjY4LCA2ODI3MiwgNjgyNzYsIDY4MjgwLCAKLSAgICA2ODI4NCwgNjgyODgsIDY4MjkyLCA2ODI5NiwgNjgzMDAsIDY4MzA0LCA2ODMwOCwgNjgzMTIsIDY4MzE2LCA2ODMyMCwgCi0gICAgNjgzMjQsIDY4MzI4LCA2ODMzMiwgNjgzMzYsIDY4MzQwLCA2ODM0NCwgNjgzNDgsIDY4MzUyLCA2ODM1NiwgNjgzNjAsIAotICAgIDY4MzY0LCA2ODM2OCwgNjgzNzIsIDY4Mzc2LCA2ODM4MCwgNjgzODQsIDY4Mzg4LCA2ODM5MiwgNjgzOTYsIDY4NDAwLCAKLSAgICA2ODQwNCwgNjg0MDgsIDY4NDEyLCA2ODQxNiwgNjg0MjAsIDY4NDI0LCA2ODQyOCwgNjg0MzIsIDY4NDM2LCA2ODQ0MCwgCi0gICAgNjg0NDQsIDY4NDQ4LCA2ODQ1MiwgNjg0NTYsIDY4NDYwLCA2ODQ2NCwgNjg0NjgsIDY4NDcyLCA2ODQ3NiwgNjg0ODAsIAotICAgIDY4NDg0LCA2ODQ4OCwgNjg0OTIsIDY4NDk2LCA2ODUwMCwgNjg1MDQsIDY4NTA4LCA2ODUxMiwgNjg1MTYsIDY4NTIwLCAKLSAgICA2ODUyNCwgNjg1MjgsIDY4NTMyLCA2ODUzNiwgNjg1NDAsIDY4NTQ0LCA2ODU0OCwgNjg1NTIsIDY4NTU1LCA2ODU1OSwgCi0gICAgNjg1NjMsIDY4NTY3LCA2ODU3MSwgNjg1NzUsIDY4NTc5LCA2ODU4MywgNjg1ODcsIDY4NTkxLCA2ODU5NSwgNjg1OTksIAotICAgIDY4NjAzLCA2ODYwNywgNjg2MTEsIDY4NjE1LCA2ODYxOSwgNjg2MjMsIDY4NjI3LCA2ODYzMSwgNjg2MzUsIDY4NjM5LCAKLSAgICA2ODY0MywgNjg2NDcsIDY4NjUxLCA2ODY1NSwgNjg2NTksIDY4NjYzLCA2ODY2NywgNjg2NzEsIDY4Njc1LCA2ODY3OSwgCi0gICAgNjg2ODMsIDY4Njg3LCA2ODY5MSwgNjg2OTUsIDY4Njk5LCA2ODcwMywgNjg3MDcsIDY4NzExLCA2ODcxNSwgNjg3MTksIAotICAgIDY4NzIzLCA2ODcyNywgNjg3MzEsIDY4NzM1LCA2ODczOSwgNjg3NDMsIDY4NzQ3LCA2ODc1MSwgNjg3NTUsIDY4NzU5LCAKLSAgICA2ODc2MywgNjg3NjcsIDY4NzcxLCA2ODc3NSwgNjg3NzksIDY4NzgzLCA2ODc4NywgNjg3OTEsIDY4Nzk1LCA2ODc5OSwgCi0gICAgNjg4MDMsIDY4ODA3LCA2ODgxMSwgNjg4MTUsIDY4ODE5LCA2ODgyMywgNjg4MjcsIDY4ODMxLCA2ODgzNSwgNjg4MzksIAotICAgIDY4ODQzLCA2ODg0NywgNjg4NTEsIDY4ODU1LCA2ODg1OSwgNjg4NjMsIDY4ODY3LCA2ODg3MSwgNjg4NzUsIDY4ODc5LCAKLSAgICA2ODg4MywgNjg4ODcsIDY4ODkxLCA2ODg5NSwgNjg4OTksIDY4OTAzLCA2ODkwNywgNjg5MTEsIDY4OTE1LCA2ODkxOSwgCi0gICAgNjg5MjMsIDY4OTI3LCA2ODkzMSwgNjg5MzUsIDY4OTM5LCA2ODk0MywgNjg5NDcsIDY4OTUxLCA2ODk1NSwgNjg5NTksIAotICAgIDY4OTYzLCA2ODk2NywgNjg5NzEsIDY4OTc1LCA2ODk3OSwgNjg5ODMsIDY4OTg3LCA2ODk5MSwgNjg5OTUsIDY4OTk5LCAKLSAgICA2OTAwMywgNjkwMDcsIDY5MDEwLCA2OTAxNCwgNjkwMTgsIDY5MDIyLCA2OTAyNiwgNjkwMzAsIDY5MDM0LCA2OTAzOCwgCi0gICAgNjkwNDIsIDY5MDQ2LCA2OTA1MCwgNjkwNTQsIDY5MDU4LCA2OTA2MiwgNjkwNjYsIDY5MDcwLCA2OTA3NCwgNjkwNzgsIAotICAgIDY5MDgyLCA2OTA4NiwgNjkwOTAsIDY5MDk0LCA2OTA5OCwgNjkxMDIsIDY5MTA2LCA2OTExMCwgNjkxMTQsIDY5MTE4LCAKLSAgICA2OTEyMiwgNjkxMjYsIDY5MTMwLCA2OTEzNCwgNjkxMzgsIDY5MTQyLCA2OTE0NiwgNjkxNTAsIDY5MTU0LCA2OTE1OCwgCi0gICAgNjkxNjIsIDY5MTY2LCA2OTE3MCwgNjkxNzQsIDY5MTc4LCA2OTE4MiwgNjkxODYsIDY5MTkwLCA2OTE5NCwgNjkxOTgsIAotICAgIDY5MjAyLCA2OTIwNiwgNjkyMTAsIDY5MjE0LCA2OTIxOCwgNjkyMjIsIDY5MjI2LCA2OTIzMCwgNjkyMzQsIDY5MjM4LCAKLSAgICA2OTI0MiwgNjkyNDYsIDY5MjUwLCA2OTI1NCwgNjkyNTgsIDY5MjYyLCA2OTI2NiwgNjkyNzAsIDY5Mjc0LCA2OTI3OCwgCi0gICAgNjkyODIsIDY5Mjg2LCA2OTI5MCwgNjkyOTQsIDY5Mjk4LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMTgsIAotICAgIDY5MzIyLCA2OTMyNiwgNjkzMzAsIDY5MzM0LCA2OTMzOCwgNjkzNDIsIDY5MzQ2LCA2OTM1MCwgNjkzNTQsIDY5MzU4LCAKLSAgICA2OTM2MiwgNjkzNjYsIDY5MzcwLCA2OTM3NCwgNjkzNzgsIDY5MzgyLCA2OTM4NiwgNjkzOTAsIDY5Mzk0LCA2OTM5OCwgCi0gICAgNjk0MDIsIDY5NDA2LCA2OTQxMCwgNjk0MTQsIDY5NDE4LCA2OTQyMiwgNjk0MjYsIDY5NDMwLCA2OTQzNCwgNjk0MzgsIAotICAgIDY5NDQyLCA2OTQ0NiwgNjk0NTAsIDY5NDU0LCA2OTQ1OCwgNjk0NjIsIDY5NDY2LCA2OTQ3MCwgNjk0NzQsIDY5NDc4LCAKLSAgICA2OTQ4MiwgNjk0ODYsIDY5NDkwLCA2OTQ5NCwgNjk0OTgsIDY5NTAyLCA2OTUwNiwgNjk1MTAsIDY5NTE0LCA2OTUxOCwgCi0gICAgNjk1MjIsIDY5NTI2LCA2OTUzMCwgNjk1MzQsIDY5NTM4LCA2OTU0MiwgNjk1NDYsIDY5NTUwLCA2OTU1NCwgNjk1NTgsIAotICAgIDY5NTYyLCA2OTU2NiwgNjk1NzAsIDY5NTc0LCA2OTU3OCwgNjk1ODIsIDY5NTg2LCA2OTU5MCwgNjk1OTQsIDY5NTk4LCAKLSAgICA2OTYwMiwgNjk2MDYsIDY5NjEwLCA2OTYxMywgNjk2MTcsIDY5NjIxLCA2OTYyNSwgNjk2MjksIDY5NjMzLCA2OTYzNywgCi0gICAgNjk2NDEsIDY5NjQ1LCA2OTY0OSwgNjk2NTMsIDY5NjU3LCA2OTY2MSwgNjk2NjUsIDY5NjY5LCA2OTY3MywgNjk2NzcsIAotICAgIDY5NjgxLCA2OTY4NSwgNjk2ODksIDY5NjkzLCA2OTY5NywgNjk3MDEsIDY5NzA1LCA2OTcwOSwgNjk3MTMsIDY5NzE3LCAKLSAgICA2OTcyMSwgNjk3MjUsIDY5NzI5LCA2OTczMywgNjk3MzcsIDY5NzQxLCA2OTc0NSwgNjk3NDksIDY5NzUzLCA2OTc1NywgCi0gICAgNjk3NjEsIDY5NzY1LCA2OTc2OSwgNjk3NzMsIDY5Nzc3LCA2OTc4MSwgNjk3ODUsIDY5Nzg5LCA2OTc5MywgNjk3OTcsIAotICAgIDY5ODAxLCA2OTgwNSwgNjk4MDksIDY5ODEzLCA2OTgxNywgNjk4MjEsIDY5ODI1LCA2OTgyOSwgNjk4MzMsIDY5ODM3LCAKLSAgICA2OTg0MSwgNjk4NDUsIDY5ODQ5LCA2OTg1MywgNjk4NTcsIDY5ODYxLCA2OTg2NSwgNjk4NjksIDY5ODczLCA2OTg3NywgCi0gICAgNjk4ODEsIDY5ODg1LCA2OTg4OSwgNjk4OTMsIDY5ODk3LCA2OTkwMSwgNjk5MDUsIDY5OTA5LCA2OTkxMywgNjk5MTcsIAotICAgIDY5OTIxLCA2OTkyNSwgNjk5MjksIDY5OTMzLCA2OTkzNywgNjk5NDEsIDY5OTQ1LCA2OTk0OSwgNjk5NTMsIDY5OTU3LCAKLSAgICA2OTk2MSwgNjk5NjUsIDY5OTY5LCA2OTk3MywgNjk5NzcsIDY5OTgxLCA2OTk4NSwgNjk5ODksIDY5OTkzLCA2OTk5NywgCi0gICAgNzAwMDEsIDcwMDA1LCA3MDAwOSwgNzAwMTMsIDcwMDE3LCA3MDAyMSwgNzAwMjUsIDcwMDI5LCA3MDAzMywgNzAwMzcsIAotICAgIDcwMDQxLCA3MDA0NSwgNzAwNDksIDcwMDUzLCA3MDA1NywgNzAwNjEsIDcwMDY1LCA3MDA2OSwgNzAwNzMsIDcwMDc3LCAKLSAgICA3MDA4MSwgNzAwODUsIDcwMDg5LCA3MDA5MywgNzAwOTcsIDcwMTAxLCA3MDEwNSwgNzAxMDksIDcwMTEzLCA3MDExNywgCi0gICAgNzAxMjEsIDcwMTI1LCA3MDEyOSwgNzAxMzMsIDcwMTM3LCA3MDE0MSwgNzAxNDUsIDcwMTQ5LCA3MDE1MywgNzAxNTcsIAotICAgIDcwMTYxLCA3MDE2NSwgNzAxNjksIDcwMTczLCA3MDE3NywgNzAxODEsIDcwMTg1LCA3MDE4OSwgNzAxOTMsIDcwMTk3LCAKLSAgICA3MDIwMSwgNzAyMDUsIDcwMjA5LCA3MDIxMywgNzAyMTcsIDcwMjIxLCA3MDIyNSwgNzAyMjksIDcwMjMzLCA3MDIzNywgCi0gICAgNzAyNDEsIDcwMjQ1LCA3MDI0OSwgNzAyNTMsIDcwMjU3LCA3MDI2MSwgNzAyNjUsIDcwMjY5LCA3MDI3MywgNzAyNzcsIAotICAgIDcwMjgxLCA3MDI4NSwgNzAyODksIDcwMjkzLCA3MDI5NywgNzAzMDEsIDcwMzA1LCA3MDMwOSwgNzAzMTMsIDcwMzE3LCAKLSAgICA3MDMyMSwgNzAzMjUsIDcwMzI5LCA3MDMzMywgNzAzMzcsIDcwMzQxLCA3MDM0NSwgNzAzNDksIDcwMzUzLCA3MDM1NywgCi0gICAgNzAzNjEsIDcwMzY1LCA3MDM2OSwgNzAzNzMsIDcwMzc3LCA3MDM4MSwgNzAzODUsIDcwMzg5LCA3MDM5MywgNzAzOTcsIAotICAgIDcwNDAxLCA3MDQwNSwgNzA0MDksIDcwNDEzLCA3MDQxNywgNzA0MjEsIDcwNDI1LCA3MDQyOSwgNzA0MzMsIDcwNDM3LCAKLSAgICA3MDQ0MSwgNzA0NDUsIDcwNDQ5LCA3MDQ1MywgNzA0NTcsIDcwNDYxLCA3MDQ2NSwgNzA0NjksIDcwNDczLCA3MDQ3NywgCi0gICAgNzA0ODEsIDcwNDg1LCA3MDQ4OSwgNzA0OTMsIDcwNDk3LCA3MDUwMSwgNzA1MDUsIDcwNTA5LCA3MDUxMywgNzA1MTcsIAotICAgIDcwNTIxLCA3MDUyNSwgNzA1MjksIDcwNTMzLCA3MDUzNywgNzA1NDEsIDcwNTQ1LCA3MDU0OSwgNzA1NTMsIDcwNTU3LCAKLSAgICA3MDU2MSwgNzA1NjUsIDcwNTY5LCA3MDU3MywgNzA1NzcsIDcwNTgxLCA3MDU4NSwgNzA1ODksIDcwNTkzLCA3MDU5NywgCi0gICAgNzA2MDEsIDcwNjA1LCA3MDYwOSwgNzA2MTMsIDcwNjE3LCA3MDYyMSwgNzA2MjUsIDcwNjI5LCA3MDYzMywgNzA2MzcsIAotICAgIDcwNjQxLCA3MDY0NSwgNzA2NDksIDcwNjUzLCA3MDY1NywgNzA2NjEsIDcwNjY1LCA3MDY2OSwgNzA2NzMsIDcwNjc3LCAKLSAgICA3MDY4MSwgNzA2ODUsIDcwNjg5LCA3MDY5MywgNzA2OTcsIDcwNzAxLCA3MDcwNSwgNzA3MDksIDcwNzEzLCA3MDcxNywgCi0gICAgNzA3MjEsIDcwNzI1LCA3MDcyOSwgNzA3MzMsIDcwNzM3LCA3MDc0MSwgNzA3NDUsIDcwNzQ5LCA3MDc1MywgNzA3NTcsIAotICAgIDcwNzYxLCA3MDc2NSwgNzA3NjksIDcwNzczLCA3MDc3NywgNzA3ODEsIDcwNzg1LCA3MDc4OSwgNzA3OTMsIDcwNzk3LCAKLSAgICA3MDgwMSwgNzA4MDUsIDcwODA5LCA3MDgxMywgNzA4MTcsIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCA3MDgzNywgCi0gICAgNzA4NDEsIDcwODQ1LCA3MDg0OSwgNzA4NTMsIDcwODU3LCA3MDg2MSwgNzA4NjUsIDcwODY5LCA3MDg3MywgNzA4NzcsIAotICAgIDcwODgxLCA3MDg4NSwgNzA4ODksIDcwODkzLCA3MDg5NywgNzA5MDEsIDcwOTA1LCA3MDkwOSwgNzA5MTMsIDcwOTE3LCAKLSAgICA3MDkyMSwgNzA5MjUsIDcwOTI5LCA3MDkzMywgNzA5MzcsIDcwOTQxLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgCi0gICAgNzA5NjEsIDcwOTY1LCA3MDk2OSwgNzA5NzMsIDcwOTc3LCA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MywgNzA5OTcsIAotICAgIDcxMDAxLCA3MTAwNSwgNzEwMDksIDcxMDEzLCA3MTAxNywgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIDcxMDM3LCAKLSAgICA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIDcxMDYxLCA3MTA2NSwgNzEwNjksIDcxMDczLCA3MTA3NywgCi0gICAgNzEwODEsIDcxMDg1LCA3MTA4OSwgNzEwOTMsIDcxMDk3LCA3MTEwMSwgNzExMDUsIDcxMTA5LCA3MTExMywgNzExMTcsIAotICAgIDcxMTIxLCA3MTEyNSwgNzExMjksIDcxMTMzLCA3MTEzNywgNzExNDEsIDcxMTQ1LCA3MTE0OSwgNzExNTMsIDAsIDAsIDAsIAotICAgIDcxMTU3LCA3MTE2MSwgNzExNjUsIDcxMTY5LCA3MTE3MywgNzExNzcsIDcxMTgxLCA3MTE4NSwgNzExODksIDcxMTkzLCAKLSAgICA3MTE5NywgNzEyMDEsIDcxMjA1LCA3MTIwOSwgNzEyMTMsIDcxMjE3LCA3MTIyMSwgNzEyMjUsIDcxMjI5LCA3MTIzMywgCi0gICAgNzEyMzcsIDcxMjQxLCA3MTI0NSwgNzEyNDksIDcxMjUzLCA3MTI1NywgNzEyNjEsIDcxMjY1LCA3MTI2OSwgNzEyNzMsIAotICAgIDcxMjc3LCA3MTI4MSwgNzEyODUsIDcxMjg5LCA3MTI5MywgNzEyOTcsIDcxMzAxLCA3MTMwNSwgNzEzMDksIDcxMzEzLCAKLSAgICA3MTMxNywgNzEzMjEsIDcxMzI1LCA3MTMyOSwgNzEzMzMsIDcxMzM3LCA3MTM0MSwgNzEzNDUsIDcxMzQ5LCA3MTM1MywgCi0gICAgNzEzNTcsIDcxMzYxLCA3MTM2NSwgNzEzNjksIDcxMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTM3NywgCi0gICAgNzEzODIsIDcxMzg2LCA3MTM5MSwgNzEzOTYsIDcxNDAxLCA3MTQwNiwgNzE0MTEsIDcxNDE1LCA3MTQyMCwgNzE0MjUsIAotICAgIDcxNDMwLCA3MTQzNSwgNzE0NDAsIDcxNDQ1LCA3MTQ1MCwgNzE0NTQsIDcxNDU5LCA3MTQ2NCwgNzE0NjksIDcxNDc0LCAKLSAgICA3MTQ3OSwgNzE0ODQsIDcxNDg4LCA3MTQ5MywgNzE0OTgsIDcxNTAzLCA3MTUwOCwgNzE1MTMsIDcxNTE3LCA3MTUyMiwgCi0gICAgNzE1MjYsIDcxNTMxLCA3MTUzNSwgNzE1NDAsIDcxNTQ0LCA3MTU0OCwgNzE1NTIsIDcxNTU3LCA3MTU2MiwgNzE1NjcsIAotICAgIDcxNTc1LCA3MTU4MywgNzE1OTEsIDcxNTk5LCA3MTYwNywgNzE2MTUsIDcxNjIxLCA3MTYyOSwgNzE2MzMsIDcxNjM3LCAKLSAgICA3MTY0MSwgNzE2NDUsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIDcxNjYxLCA3MTY2NSwgNzE2NjksIDcxNjczLCA3MTY3NywgCi0gICAgNzE2ODEsIDcxNjg1LCA3MTY4OSwgNzE2OTMsIDcxNjk3LCA3MTcwMSwgNzE3MDUsIDcxNzA5LCA3MTcxMywgNzE3MTcsIAotICAgIDcxNzIxLCA3MTcyNSwgNzE3MjksIDcxNzMzLCA3MTczNywgNzE3NDEsIDcxNzQ1LCA3MTc0OSwgNzE3NTMsIDcxNzU3LCAKLSAgICA3MTc2MSwgNzE3NjUsIDcxNzY5LCA3MTc3MywgNzE3NzYsIDcxNzgwLCA3MTc4NCwgNzE3ODgsIDcxNzkyLCA3MTc5NiwgCi0gICAgNzE4MDAsIDcxODA0LCA3MTgwOCwgNzE4MTIsIDcxODE2LCA3MTgyMCwgNzE4MjQsIDcxODI4LCA3MTgzMiwgNzE4MzYsIAotICAgIDcxODQwLCA3MTg0NCwgNzE4NDgsIDcxODUyLCA3MTg1NiwgNzE4NjAsIDcxODY0LCA3MTg2OCwgNzE4NzIsIDcxODc2LCAKLSAgICA3MTg4MCwgNzE4ODQsIDcxODg4LCA3MTg5MiwgNzE4OTYsIDcxOTAwLCA3MTkwNCwgNzE5MDgsIDcxOTEyLCA3MTkxNiwgCi0gICAgNzE5MjAsIDcxOTIzLCA3MTkyNywgNzE5MzEsIDcxOTM0LCA3MTkzOCwgNzE5NDIsIDcxOTQ2LCA3MTk0OSwgNzE5NTMsIAotICAgIDcxOTU3LCA3MTk2MSwgNzE5NjUsIDcxOTY5LCA3MTk3MywgNzE5NzcsIDcxOTgxLCA3MTk4NSwgNzE5ODksIDcxOTkzLCAKLSAgICA3MTk5NywgNzIwMDEsIDcyMDA1LCA3MjAwOSwgNzIwMTMsIDcyMDE3LCA3MjAyMSwgNzIwMjUsIDcyMDI5LCA3MjAzMywgCi0gICAgNzIwMzcsIDcyMDQxLCA3MjA0NSwgNzIwNDgsIDcyMDUxLCA3MjA1NSwgNzIwNTksIDcyMDYzLCA3MjA2NiwgNzIwNzAsIAotICAgIDcyMDc0LCA3MjA3OCwgNzIwODIsIDcyMDg2LCA3MjA5MCwgNzIwOTQsIDcyMDk4LCA3MjEwMiwgNzIxMDYsIDcyMTEwLCAKLSAgICA3MjExNCwgNzIxMTgsIDcyMTIyLCA3MjEyNiwgNzIxMzAsIDcyMTM0LCA3MjEzOCwgNzIxNDIsIDcyMTQ2LCA3MjE1MCwgCi0gICAgNzIxNTQsIDcyMTU4LCA3MjE2MiwgNzIxNjYsIDcyMTcwLCA3MjE3NCwgNzIxNzgsIDcyMTgyLCA3MjE4NiwgNzIxOTAsIAotICAgIDcyMTk0LCA3MjE5OCwgNzIyMDIsIDcyMjA2LCA3MjIxMCwgNzIyMTQsIDcyMjE4LCA3MjIyMSwgNzIyMjUsIDcyMjI5LCAKLSAgICA3MjIzMywgNzIyMzcsIDcyMjQxLCA3MjI0NSwgNzIyNDksIDcyMjUzLCA3MjI1NywgNzIyNjEsIDcyMjY1LCA3MjI2OSwgCi0gICAgNzIyNzMsIDcyMjc3LCA3MjI4MSwgNzIyODUsIDcyMjg5LCA3MjI5MywgNzIyOTcsIDcyMzAxLCA3MjMwNSwgNzIzMDksIAotICAgIDcyMzEzLCA3MjMxNywgNzIzMjEsIDcyMzI1LCA3MjMyOSwgNzIzMzMsIDcyMzM3LCA3MjM0MSwgNzIzNDUsIDcyMzQ5LCAKLSAgICA3MjM1MywgNzIzNTcsIDcyMzYxLCA3MjM2NSwgNzIzNjgsIDcyMzcyLCA3MjM3NiwgNzIzODAsIDcyMzg0LCA3MjM4OCwgCi0gICAgNzIzOTIsIDcyMzk2LCA3MjQwMCwgNzI0MDQsIDcyNDA4LCA3MjQxMiwgNzI0MTYsIDcyNDIwLCA3MjQyNCwgNzI0MjgsIAotICAgIDcyNDMyLCA3MjQzNSwgNzI0MzksIDcyNDQzLCA3MjQ0NywgNzI0NTEsIDcyNDU1LCA3MjQ1OSwgNzI0NjMsIDcyNDY3LCAKLSAgICA3MjQ3MSwgNzI0NzUsIDcyNDc5LCA3MjQ4MywgNzI0ODcsIDcyNDkxLCA3MjQ5NSwgNzI0OTksIDcyNTAzLCA3MjUwNywgCi0gICAgNzI1MTEsIDcyNTE1LCA3MjUxOSwgNzI1MjIsIDcyNTI2LCA3MjUzMCwgNzI1MzQsIDcyNTM4LCA3MjU0MiwgNzI1NDYsIAotICAgIDcyNTUwLCA3MjU1NCwgNzI1NTgsIDcyNTYyLCA3MjU2NiwgNzI1NzAsIDcyNTc0LCA3MjU3OCwgNzI1ODIsIDcyNTg2LCAKLSAgICA3MjU5MCwgNzI1OTQsIDcyNTk4LCA3MjYwMiwgNzI2MDYsIDcyNjEwLCA3MjYxNCwgNzI2MTgsIDcyNjIyLCA3MjYyNiwgCi0gICAgNzI2MzAsIDcyNjM0LCA3MjYzOCwgNzI2NDIsIDcyNjQ2LCA3MjY1MCwgNzI2NTQsIDcyNjU4LCA3MjY2MiwgNzI2NjYsIAotICAgIDcyNjcwLCA3MjY3NCwgNzI2NzgsIDcyNjgyLCA3MjY4NiwgNzI2OTAsIDcyNjk0LCA3MjY5NywgNzI3MDIsIDcyNzA2LCAKLSAgICA3MjcxMiwgNzI3MTcsIDcyNzIzLCA3MjcyNywgNzI3MzEsIDcyNzM1LCA3MjczOSwgNzI3NDMsIDcyNzQ3LCA3Mjc1MSwgCi0gICAgNzI3NTUsIDcyNzU5LCA3Mjc2MywgNzI3NjcsIDcyNzcxLCA3Mjc3NSwgNzI3NzksIDcyNzgyLCA3Mjc4NSwgNzI3ODgsIAotICAgIDcyNzkxLCA3Mjc5NCwgNzI3OTcsIDcyODAxLCA3MjgwNCwgNzI4MDgsIDcyODEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjgxOSwgNzI4MjQsIDcyODI5LCA3MjgzNCwgNzI4MzksIAotICAgIDcyODQ2LCA3Mjg1MywgNzI4NTgsIDcyODYzLCA3Mjg2OCwgNzI4NzMsIDcyODgwLCA3Mjg4NywgNzI4OTQsIDcyOTAxLCAKLSAgICA3MjkwOCwgNzI5MTUsIDcyOTI1LCA3MjkzNSwgNzI5NDIsIDcyOTQ5LCA3Mjk1NiwgNzI5NjMsIDcyOTY5LCA3Mjk3NSwgCi0gICAgNzI5ODQsIDcyOTkzLCA3MzAwMCwgNzMwMDcsIDczMDE4LCA3MzAyOSwgNzMwMzQsIDczMDM5LCA3MzA0NiwgNzMwNTMsIAotICAgIDczMDYwLCA3MzA2NywgNzMwNzQsIDczMDgxLCA3MzA4OCwgNzMwOTUsIDczMTAxLCA3MzEwNywgNzMxMTMsIDczMTE5LCAKLSAgICA3MzEyNiwgNzMxMzMsIDczMTM4LCA3MzE0MiwgNzMxNDksIDczMTU2LCA3MzE2MywgNzMxNjcsIDczMTc0LCA3MzE3OCwgCi0gICAgNzMxODMsIDczMTg3LCA3MzE5MywgNzMxOTgsIDczMjA0LCA3MzIwOSwgNzMyMTMsIDczMjE3LCA3MzIyMCwgNzMyMjMsIAotICAgIDczMjI4LCA3MzIzMywgNzMyMzgsIDczMjQzLCA3MzI0OCwgNzMyNTMsIDczMjU4LCA3MzI2MywgNzMyNjgsIDczMjczLCAKLSAgICA3MzI4MSwgNzMyODksIDczMjk0LCA3MzI5OSwgNzMzMDQsIDczMzA5LCA3MzMxNCwgNzMzMTksIDczMzI0LCA3MzMyOSwgCi0gICAgNzMzMzQsIDczMzM5LCA3MzM0NCwgNzMzNDksIDczMzU0LCA3MzM1OSwgNzMzNjUsIDczMzcxLCA3MzM3NywgNzMzODMsIAotICAgIDczMzg4LCA3MzM5NCwgNzMzOTcsIDczNDAwLCA3MzQwMywgNzM0MDcsIDczNDExLCA3MzQxNSwgNzM0MTksIDczNDIyLCAKLSAgICA3MzQyNiwgNzM0MjksIDczNDMzLCA3MzQzNiwgNzM0NDAsIDczNDQ0LCA3MzQ0OCwgNzM0NTIsIDczNDU2LCA3MzQ2MCwgCi0gICAgNzM0NjQsIDczNDY4LCA3MzQ3MiwgNzM0NzYsIDczNDgwLCA3MzQ4NCwgNzM0ODgsIDczNDkyLCA3MzQ5NiwgNzM1MDAsIAotICAgIDczNTA0LCA3MzUwOCwgNzM1MTIsIDczNTE2LCA3MzUyMCwgNzM1MjQsIDczNTI3LCA3MzUzMSwgNzM1MzUsIDczNTM5LCAKLSAgICA3MzU0MywgNzM1NDcsIDczNTUxLCA3MzU1NSwgNzM1NTksIDczNTYzLCA3MzU2NywgNzM1NzEsIDczNTc1LCA3MzU3OSwgCi0gICAgNzM1ODMsIDczNTg3LCA3MzU5MSwgNzM1OTUsIDczNTk5LCA3MzYwMywgNzM2MDcsIDczNjExLCA3MzYxNSwgNzM2MTksIAotICAgIDczNjIzLCA3MzYyNywgNzM2MzEsIDczNjM1LCA3MzYzOSwgNzM2NDMsIDczNjQ3LCA3MzY1MSwgNzM2NTUsIDczNjU4LCAKLSAgICA3MzY2MiwgNzM2NjYsIDczNjcwLCA3MzY3NCwgNzM2NzgsIDczNjgyLCA3MzY4NiwgNzM2OTAsIDczNjk0LCA3MzY5OCwgCi0gICAgNzM3MDIsIDczNzA2LCA3MzcxMSwgNzM3MTYsIDczNzE5LCA3MzcyNCwgNzM3MjcsIDczNzMwLCA3MzczMywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzM3MzcsIDczNzQ2LCA3Mzc1NSwgNzM3NjQsIDczNzczLCA3Mzc4MiwgNzM3OTEsIDczODAwLCAKLSAgICA3MzgwOSwgNzM4MTcsIDczODI0LCA3MzgzMiwgNzM4MzksIDczODQ3LCA3Mzg1NywgNzM4NjYsIDczODc2LCA3Mzg4NSwgCi0gICAgNzM4OTUsIDczOTAzLCA3MzkxMCwgNzM5MTgsIDczOTI1LCA3MzkzMywgNzM5MzgsIDczOTQzLCA3Mzk0OSwgNzM5NTgsIAotICAgIDczOTY0LCA3Mzk3MCwgNzM5NzcsIDczOTg2LCA3Mzk5NCwgNzQwMDIsIDc0MDEwLCA3NDAxNywgNzQwMjQsIDc0MDMxLCAKLSAgICA3NDAzOCwgNzQwNDMsIDc0MDQ4LCA3NDA1MywgNzQwNTgsIDc0MDYzLCA3NDA2OCwgNzQwNzMsIDc0MDc4LCA3NDA4NiwgCi0gICAgNzQwOTQsIDc0MTAwLCA3NDEwNSwgNzQxMTAsIDc0MTE1LCA3NDEyMCwgNzQxMjUsIDc0MTMwLCA3NDEzNSwgNzQxNDAsIAotICAgIDc0MTQ1LCA3NDE1NCwgNzQxNjMsIDc0MTY4LCA3NDE3MywgNzQxODMsIDc0MTkzLCA3NDIwMCwgNzQyMDcsIDc0MjE2LCAKLSAgICA3NDIyNSwgNzQyMzcsIDc0MjQ5LCA3NDI1NSwgNzQyNjEsIDc0MjY5LCA3NDI3NywgNzQyODcsIDc0Mjk3LCA3NDMwNCwgCi0gICAgNzQzMTEsIDc0MzE2LCA3NDMyMSwgNzQzMzMsIDc0MzQ1LCA3NDM1MywgNzQzNjEsIDc0MzcxLCA3NDM4MSwgNzQzOTMsIAotICAgIDc0NDA1LCA3NDQxNCwgNzQ0MjMsIDc0NDMwLCA3NDQzNywgNzQ0NDQsIDc0NDUxLCA3NDQ2MCwgNzQ0NjksIDc0NDc0LCAKLSAgICA3NDQ3OSwgNzQ0ODYsIDc0NDkzLCA3NDUwMCwgNzQ1MDcsIDc0NTE5LCA3NDUzMSwgNzQ1MzYsIDc0NTQxLCA3NDU0NiwgCi0gICAgNzQ1NTEsIDc0NTU2LCA3NDU2MSwgNzQ1NjYsIDc0NTcxLCA3NDU3NSwgNzQ1ODAsIDc0NTg1LCA3NDU5MCwgNzQ1OTUsIAotICAgIDc0NjAwLCA3NDYwNiwgNzQ2MTEsIDc0NjE2LCA3NDYyMywgNzQ2MzAsIDc0NjM3LCA3NDY0NCwgNzQ2NTEsIDc0NjYwLCAKLSAgICA3NDY2OSwgNzQ2NzUsIDc0NjgxLCA3NDY4NywgNzQ2OTMsIDc0Njk5LCA3NDcwNSwgNzQ3MTIsIDc0NzE5LCA3NDcyNiwgCi0gICAgNzQ3MzAsIDc0NzM3LCA3NDc0MiwgNzQ3NDcsIDc0NzU0LCA3NDc2NywgNzQ3NzMsIDc0NzgxLCA3NDc4OSwgNzQ3OTYsIAotICAgIDc0ODAzLCA3NDgxMiwgNzQ4MjEsIDc0ODI4LCA3NDgzNSwgNzQ4NDIsIDc0ODQ5LCA3NDg1NiwgNzQ4NjMsIDc0ODcwLCAKLSAgICA3NDg3NywgNzQ4ODQsIDc0ODkxLCA3NDkwMCwgNzQ5MDksIDc0OTE4LCA3NDkyNywgNzQ5MzYsIDc0OTQ1LCA3NDk1NCwgCi0gICAgNzQ5NjMsIDc0OTcyLCA3NDk4MSwgNzQ5ODgsIDc0OTk1LCA3NTAwMSwgMCwgMCwgNzUwMDksIDc1MDE2LCA3NTAyMywgCi0gICAgNzUwMzEsIDc1MDM2LCA3NTA0MSwgNzUwNDYsIDc1MDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NjgzMCwgNjY4MzksIDY2ODQ4LCA2Njg1OSwgNjY4NjYsIDY2ODcxLCA2Njg3NiwgNjY4ODMsIDY2ODkwLCA2Njg5NiwgCisgICAgNjY5MDEsIDY2OTA2LCA2NjkxMSwgNjY5MTYsIDY2OTIzLCA2NjkyOCwgNjY5MzMsIDY2OTM4LCA2Njk0OSwgNjY5NTQsIAorICAgIDY2OTU5LCA2Njk2NiwgNjY5NzEsIDY2OTc4LCA2Njk4MywgNjY5ODgsIDY2OTk1LCA2NzAwMiwgNjcwMDksIDY3MDE4LCAKKyAgICA2NzAyNywgNjcwMzIsIDY3MDM3LCA2NzA0MiwgNjcwNDksIDY3MDU0LCA2NzA2NCwgNjcwNzEsIDY3MDc2LCA2NzA4MSwgCisgICAgNjcwODYsIDY3MDkxLCA2NzA5NiwgNjcxMDEsIDY3MTEwLCA2NzExNywgNjcxMjQsIDY3MTI5LCA2NzEzNiwgNjcxNDEsIAorICAgIDY3MTQ4LCA2NzE1NywgNjcxNjgsIDY3MTczLCA2NzE4MiwgNjcxODcsIDY3MTk0LCA2NzIwMywgNjcyMTIsIDY3MjE3LCAKKyAgICA2NzIyMiwgNjcyMjksIDY3MjM1LCA2NzI0MiwgNjcyNDksIDY3MjUzLCA2NzI1NywgNjcyNjAsIDY3MjY0LCA2NzI2OCwgCisgICAgNjcyNzIsIDY3Mjc2LCA2NzI4MCwgNjcyODQsIDY3Mjg4LCA2NzI5MSwgNjcyOTUsIDY3Mjk5LCA2NzMwMywgNjczMDcsIAorICAgIDY3MzExLCA2NzMxNSwgNjczMTgsIDY3MzIyLCA2NzMyNiwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCAKKyAgICA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgCisgICAgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIAorICAgIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCAKKyAgICA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgCisgICAgNjc1MDgsIDY3NTEyLCA2NzUxNiwgNjc1MjAsIDY3NTI0LCA2NzUyOCwgNjc1MzIsIDY3NTM2LCA2NzU0MCwgNjc1NDQsIAorICAgIDY3NTQ4LCA2NzU1MiwgNjc1NTYsIDY3NTYwLCA2NzU2NCwgNjc1NjgsIDY3NTcyLCA2NzU3NiwgNjc1ODAsIDY3NTg0LCAKKyAgICA2NzU4OCwgNjc1OTIsIDY3NTk2LCA2NzYwMCwgNjc2MDQsIDY3NjA4LCA2NzYxMiwgNjc2MTYsIDY3NjIwLCA2NzYyNCwgCisgICAgNjc2MjgsIDY3NjMyLCA2NzYzNiwgNjc2NDAsIDY3NjQ0LCA2NzY0OCwgNjc2NTIsIDY3NjU2LCA2NzY2MCwgNjc2NjQsIAorICAgIDY3NjY4LCA2NzY3MiwgNjc2NzYsIDY3NjgwLCA2NzY4NCwgNjc2ODgsIDY3NjkyLCA2NzY5NiwgNjc3MDAsIDY3NzA0LCAKKyAgICA2NzcwOCwgNjc3MTIsIDY3NzE2LCA2NzcyMCwgNjc3MjQsIDY3NzI4LCA2NzczMiwgNjc3MzYsIDY3NzQwLCA2Nzc0NCwgCisgICAgNjc3NDgsIDY3NzUyLCA2Nzc1NiwgNjc3NjAsIDY3NzY0LCA2Nzc2OCwgNjc3NzIsIDY3Nzc2LCA2Nzc4MCwgNjc3ODQsIAorICAgIDY3Nzg4LCA2Nzc5MiwgNjc3OTYsIDY3ODAwLCA2NzgwNCwgNjc4MDgsIDY3ODEyLCA2NzgxNiwgNjc4MjAsIDY3ODI0LCAKKyAgICA2NzgyOCwgNjc4MzIsIDY3ODM2LCA2Nzg0MCwgNjc4NDQsIDY3ODQ4LCA2Nzg1MiwgNjc4NTYsIDY3ODYwLCA2Nzg2NCwgCisgICAgNjc4NjgsIDY3ODcyLCA2Nzg3NiwgNjc4ODAsIDY3ODg0LCA2Nzg4OCwgNjc4OTIsIDY3ODk2LCA2NzkwMCwgNjc5MDQsIAorICAgIDY3OTA4LCA2NzkxMiwgNjc5MTYsIDY3OTIwLCA2NzkyNCwgNjc5MjgsIDY3OTMyLCA2NzkzNiwgNjc5NDAsIDY3OTQ0LCAKKyAgICA2Nzk0OCwgNjc5NTIsIDY3OTU2LCA2Nzk2MCwgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTc5LCA2Nzk4MywgCisgICAgNjc5ODcsIDY3OTkxLCA2Nzk5NSwgNjc5OTksIDY4MDAzLCA2ODAwNywgNjgwMTEsIDY4MDE1LCA2ODAxOSwgNjgwMjMsIAorICAgIDY4MDI3LCA2ODAzMSwgNjgwMzUsIDY4MDM5LCA2ODA0MywgNjgwNDcsIDY4MDUxLCA2ODA1NSwgNjgwNTksIDY4MDYzLCAKKyAgICA2ODA2NywgNjgwNzEsIDY4MDc1LCA2ODA3OSwgNjgwODMsIDY4MDg3LCA2ODA5MSwgNjgwOTUsIDY4MDk5LCA2ODEwMywgCisgICAgNjgxMDcsIDY4MTExLCA2ODExNSwgNjgxMTksIDY4MTIzLCA2ODEyNywgNjgxMzEsIDY4MTM1LCA2ODEzOSwgNjgxNDMsIAorICAgIDY4MTQ3LCA2ODE1MSwgNjgxNTUsIDY4MTU5LCA2ODE2MywgNjgxNjcsIDY4MTcxLCA2ODE3NSwgNjgxNzksIDY4MTgzLCAKKyAgICA2ODE4NywgNjgxOTEsIDY4MTk1LCA2ODE5OSwgNjgyMDMsIDY4MjA3LCA2ODIxMSwgNjgyMTUsIDY4MjE5LCA2ODIyMywgCisgICAgNjgyMjcsIDY4MjMxLCA2ODIzNSwgNjgyMzksIDY4MjQzLCA2ODI0NywgNjgyNTEsIDY4MjU1LCA2ODI1OSwgNjgyNjMsIAorICAgIDY4MjY3LCA2ODI3MSwgNjgyNzUsIDY4Mjc5LCA2ODI4MywgNjgyODcsIDY4MjkxLCA2ODI5NSwgNjgyOTksIDY4MzAzLCAKKyAgICA2ODMwNywgNjgzMTEsIDY4MzE1LCA2ODMxOSwgNjgzMjMsIDY4MzI3LCA2ODMzMSwgNjgzMzUsIDY4MzM5LCA2ODM0MywgCisgICAgNjgzNDcsIDY4MzUxLCA2ODM1NSwgNjgzNTksIDY4MzYzLCA2ODM2NywgNjgzNzEsIDY4Mzc1LCA2ODM3OSwgNjgzODMsIAorICAgIDY4Mzg3LCA2ODM5MSwgNjgzOTUsIDY4Mzk5LCA2ODQwMywgNjg0MDcsIDY4NDExLCA2ODQxNSwgNjg0MTksIDY4NDIzLCAKKyAgICA2ODQyNywgNjg0MzEsIDY4NDM1LCA2ODQzOSwgNjg0NDIsIDY4NDQ2LCA2ODQ1MCwgNjg0NTQsIDY4NDU4LCA2ODQ2MiwgCisgICAgNjg0NjYsIDY4NDcwLCA2ODQ3NCwgNjg0NzgsIDY4NDgyLCA2ODQ4NiwgNjg0OTAsIDY4NDk0LCA2ODQ5OCwgNjg1MDIsIAorICAgIDY4NTA2LCA2ODUxMCwgNjg1MTQsIDY4NTE4LCA2ODUyMiwgNjg1MjYsIDY4NTMwLCA2ODUzNCwgNjg1MzgsIDY4NTQyLCAKKyAgICA2ODU0NiwgNjg1NTAsIDY4NTU0LCA2ODU1OCwgNjg1NjIsIDY4NTY2LCA2ODU3MCwgNjg1NzQsIDY4NTc4LCA2ODU4MiwgCisgICAgNjg1ODYsIDY4NTkwLCA2ODU5NCwgNjg1OTgsIDY4NjAyLCA2ODYwNiwgNjg2MTAsIDY4NjE0LCA2ODYxOCwgNjg2MjIsIAorICAgIDY4NjI2LCA2ODYzMCwgNjg2MzQsIDY4NjM4LCA2ODY0MiwgNjg2NDYsIDY4NjUwLCA2ODY1NCwgNjg2NTgsIDY4NjYyLCAKKyAgICA2ODY2NiwgNjg2NzAsIDY4Njc0LCA2ODY3OCwgNjg2ODIsIDY4Njg2LCA2ODY5MCwgNjg2OTQsIDY4Njk4LCA2ODcwMiwgCisgICAgNjg3MDYsIDY4NzEwLCA2ODcxNCwgNjg3MTgsIDY4NzIyLCA2ODcyNiwgNjg3MzAsIDY4NzM0LCA2ODczOCwgNjg3NDIsIAorICAgIDY4NzQ2LCA2ODc1MCwgNjg3NTQsIDY4NzU4LCA2ODc2MiwgNjg3NjYsIDY4NzcwLCA2ODc3NCwgNjg3NzgsIDY4NzgyLCAKKyAgICA2ODc4NiwgNjg3OTAsIDY4Nzk0LCA2ODc5OCwgNjg4MDEsIDY4ODA1LCA2ODgwOSwgNjg4MTMsIDY4ODE3LCA2ODgyMSwgCisgICAgNjg4MjUsIDY4ODI5LCA2ODgzMywgNjg4MzcsIDY4ODQxLCA2ODg0NSwgNjg4NDksIDY4ODUzLCA2ODg1NywgNjg4NjEsIAorICAgIDY4ODY1LCA2ODg2OSwgNjg4NzMsIDY4ODc3LCA2ODg4MSwgNjg4ODUsIDY4ODg5LCA2ODg5MywgNjg4OTcsIDY4OTAxLCAKKyAgICA2ODkwNSwgNjg5MDksIDY4OTEzLCA2ODkxNywgNjg5MjEsIDY4OTI1LCA2ODkyOSwgNjg5MzMsIDY4OTM3LCA2ODk0MSwgCisgICAgNjg5NDUsIDY4OTQ5LCA2ODk1MywgNjg5NTcsIDY4OTYxLCA2ODk2NSwgNjg5NjksIDY4OTczLCA2ODk3NywgNjg5ODEsIAorICAgIDY4OTg1LCA2ODk4OSwgNjg5OTMsIDY4OTk3LCA2OTAwMSwgNjkwMDUsIDY5MDA5LCA2OTAxMywgNjkwMTcsIDY5MDIxLCAKKyAgICA2OTAyNSwgNjkwMjksIDY5MDMzLCA2OTAzNywgNjkwNDAsIDY5MDQ0LCA2OTA0OCwgNjkwNTIsIDY5MDU2LCA2OTA2MCwgCisgICAgNjkwNjQsIDY5MDY4LCA2OTA3MiwgNjkwNzYsIDY5MDgwLCA2OTA4NCwgNjkwODgsIDY5MDkyLCA2OTA5NiwgNjkxMDAsIAorICAgIDY5MTA0LCA2OTEwOCwgNjkxMTIsIDY5MTE2LCA2OTEyMCwgNjkxMjQsIDY5MTI4LCA2OTEzMiwgNjkxMzYsIDY5MTQwLCAKKyAgICA2OTE0NCwgNjkxNDgsIDY5MTUyLCA2OTE1NiwgNjkxNjAsIDY5MTY0LCA2OTE2OCwgNjkxNzIsIDY5MTc2LCA2OTE4MCwgCisgICAgNjkxODQsIDY5MTg4LCA2OTE5MiwgNjkxOTYsIDY5MjAwLCA2OTIwNCwgNjkyMDgsIDY5MjEyLCA2OTIxNiwgNjkyMjAsIAorICAgIDY5MjI0LCA2OTIyOCwgNjkyMzIsIDY5MjM2LCA2OTI0MCwgNjkyNDQsIDY5MjQ4LCA2OTI1MiwgNjkyNTYsIDY5MjYwLCAKKyAgICA2OTI2NCwgNjkyNjgsIDY5MjcyLCA2OTI3NiwgNjkyODAsIDY5Mjg0LCA2OTI4OCwgNjkyOTIsIDY5Mjk1LCA2OTI5OSwgCisgICAgNjkzMDMsIDY5MzA3LCA2OTMxMSwgNjkzMTUsIDY5MzE5LCA2OTMyMywgNjkzMjcsIDY5MzMxLCA2OTMzNSwgNjkzMzksIAorICAgIDY5MzQzLCA2OTM0NywgNjkzNTEsIDY5MzU1LCA2OTM1OSwgNjkzNjMsIDY5MzY3LCA2OTM3MSwgNjkzNzUsIDY5Mzc5LCAKKyAgICA2OTM4MywgNjkzODcsIDY5MzkxLCA2OTM5NSwgNjkzOTksIDY5NDAzLCA2OTQwNywgNjk0MTEsIDY5NDE1LCA2OTQxOSwgCisgICAgNjk0MjMsIDY5NDI3LCA2OTQzMSwgNjk0MzUsIDY5NDM5LCA2OTQ0MywgNjk0NDcsIDY5NDUxLCA2OTQ1NSwgNjk0NTksIAorICAgIDY5NDYzLCA2OTQ2NywgNjk0NzEsIDY5NDc1LCA2OTQ3OSwgNjk0ODMsIDY5NDg3LCA2OTQ5MSwgNjk0OTUsIDY5NDk5LCAKKyAgICA2OTUwMywgNjk1MDcsIDY5NTExLCA2OTUxNSwgNjk1MTksIDY5NTIzLCA2OTUyNywgNjk1MzEsIDY5NTM1LCA2OTUzOSwgCisgICAgNjk1NDMsIDY5NTQ3LCA2OTU1MSwgNjk1NTUsIDY5NTU5LCA2OTU2MywgNjk1NjcsIDY5NTcxLCA2OTU3NSwgNjk1NzksIAorICAgIDY5NTgzLCA2OTU4NywgNjk1OTEsIDY5NTk1LCA2OTU5OSwgNjk2MDMsIDY5NjA3LCA2OTYxMSwgNjk2MTUsIDY5NjE5LCAKKyAgICA2OTYyMywgNjk2MjcsIDY5NjMxLCA2OTYzNSwgNjk2MzksIDY5NjQzLCA2OTY0NywgNjk2NTEsIDY5NjU1LCA2OTY1OSwgCisgICAgNjk2NjMsIDY5NjY3LCA2OTY3MSwgNjk2NzUsIDY5Njc5LCA2OTY4MywgNjk2ODcsIDY5NjkxLCA2OTY5NSwgNjk2OTksIAorICAgIDY5NzAzLCA2OTcwNywgNjk3MTEsIDY5NzE1LCA2OTcxOSwgNjk3MjMsIDY5NzI3LCA2OTczMSwgNjk3MzUsIDY5NzM5LCAKKyAgICA2OTc0MywgNjk3NDcsIDY5NzUwLCA2OTc1NCwgNjk3NTgsIDY5NzYyLCA2OTc2NiwgNjk3NzAsIDY5Nzc0LCA2OTc3OCwgCisgICAgNjk3ODIsIDY5Nzg2LCA2OTc5MCwgNjk3OTQsIDY5Nzk4LCA2OTgwMiwgNjk4MDYsIDY5ODEwLCA2OTgxNCwgNjk4MTgsIAorICAgIDY5ODIyLCA2OTgyNiwgNjk4MzAsIDY5ODM0LCA2OTgzOCwgNjk4NDIsIDY5ODQ2LCA2OTg1MCwgNjk4NTQsIDY5ODU4LCAKKyAgICA2OTg2MiwgNjk4NjYsIDY5ODcwLCA2OTg3NCwgNjk4NzgsIDY5ODgyLCA2OTg4NiwgNjk4OTAsIDY5ODk0LCA2OTg5OCwgCisgICAgNjk5MDIsIDY5OTA2LCA2OTkxMCwgNjk5MTQsIDY5OTE4LCA2OTkyMiwgNjk5MjYsIDY5OTMwLCA2OTkzNCwgNjk5MzgsIAorICAgIDY5OTQyLCA2OTk0NiwgNjk5NTAsIDY5OTU0LCA2OTk1OCwgNjk5NjIsIDY5OTY2LCA2OTk3MCwgNjk5NzQsIDY5OTc4LCAKKyAgICA2OTk4MiwgNjk5ODYsIDY5OTkwLCA2OTk5NCwgNjk5OTgsIDcwMDAyLCA3MDAwNiwgNzAwMTAsIDcwMDE0LCA3MDAxOCwgCisgICAgNzAwMjIsIDcwMDI2LCA3MDAzMCwgNzAwMzQsIDcwMDM4LCA3MDA0MiwgNzAwNDYsIDcwMDUwLCA3MDA1NCwgNzAwNTgsIAorICAgIDcwMDYyLCA3MDA2NiwgNzAwNzAsIDcwMDc0LCA3MDA3OCwgNzAwODIsIDcwMDg2LCA3MDA5MCwgNzAwOTQsIDcwMDk4LCAKKyAgICA3MDEwMiwgNzAxMDYsIDcwMTEwLCA3MDExNCwgNzAxMTgsIDcwMTIyLCA3MDEyNiwgNzAxMzAsIDcwMTM0LCA3MDEzOCwgCisgICAgNzAxNDIsIDcwMTQ2LCA3MDE1MCwgNzAxNTQsIDcwMTU4LCA3MDE2MiwgNzAxNjYsIDcwMTcwLCA3MDE3NCwgNzAxNzgsIAorICAgIDcwMTgyLCA3MDE4NiwgNzAxOTAsIDcwMTk0LCA3MDE5OCwgNzAyMDIsIDcwMjA2LCA3MDIxMCwgNzAyMTQsIDcwMjE4LCAKKyAgICA3MDIyMiwgNzAyMjYsIDcwMjMwLCA3MDIzNCwgNzAyMzgsIDcwMjQyLCA3MDI0NiwgNzAyNTAsIDcwMjU0LCA3MDI1OCwgCisgICAgNzAyNjIsIDcwMjY2LCA3MDI3MCwgNzAyNzQsIDcwMjc4LCA3MDI4MiwgNzAyODYsIDcwMjkwLCA3MDI5NCwgNzAyOTgsIAorICAgIDcwMzAyLCA3MDMwNiwgNzAzMTAsIDcwMzE0LCA3MDMxOCwgNzAzMjIsIDcwMzI2LCA3MDMzMCwgNzAzMzQsIDcwMzM4LCAKKyAgICA3MDM0MiwgNzAzNDYsIDcwMzUwLCA3MDM1MywgNzAzNTcsIDcwMzYxLCA3MDM2NSwgNzAzNjksIDcwMzczLCA3MDM3NywgCisgICAgNzAzODEsIDcwMzg1LCA3MDM4OSwgNzAzOTMsIDcwMzk3LCA3MDQwMSwgNzA0MDUsIDcwNDA5LCA3MDQxMywgNzA0MTcsIAorICAgIDcwNDIxLCA3MDQyNSwgNzA0MjksIDcwNDMzLCA3MDQzNywgNzA0NDEsIDcwNDQ1LCA3MDQ0OSwgNzA0NTMsIDcwNDU3LCAKKyAgICA3MDQ2MSwgNzA0NjUsIDcwNDY5LCA3MDQ3MywgNzA0NzcsIDcwNDgxLCA3MDQ4NSwgNzA0ODksIDcwNDkzLCA3MDQ5NywgCisgICAgNzA1MDEsIDcwNTA1LCA3MDUwOSwgNzA1MTMsIDcwNTE3LCA3MDUyMSwgNzA1MjUsIDcwNTI5LCA3MDUzMywgNzA1MzcsIAorICAgIDcwNTQxLCA3MDU0NSwgNzA1NDksIDcwNTUzLCA3MDU1NywgNzA1NjEsIDcwNTY1LCA3MDU2OSwgNzA1NzMsIDcwNTc3LCAKKyAgICA3MDU4MSwgNzA1ODUsIDcwNTg5LCA3MDU5MywgNzA1OTcsIDcwNjAxLCA3MDYwNSwgNzA2MDksIDcwNjEzLCA3MDYxNywgCisgICAgNzA2MjEsIDcwNjI1LCA3MDYyOSwgNzA2MzMsIDcwNjM3LCA3MDY0MSwgNzA2NDUsIDcwNjQ5LCA3MDY1MywgNzA2NTcsIAorICAgIDcwNjYxLCA3MDY2NSwgNzA2NjksIDcwNjczLCA3MDY3NywgNzA2ODEsIDcwNjg1LCA3MDY4OSwgNzA2OTMsIDcwNjk3LCAKKyAgICA3MDcwMSwgNzA3MDUsIDcwNzA5LCA3MDcxMywgNzA3MTcsIDcwNzIxLCA3MDcyNSwgNzA3MjksIDcwNzMzLCA3MDczNywgCisgICAgNzA3NDEsIDcwNzQ1LCA3MDc0OSwgNzA3NTMsIDcwNzU3LCA3MDc2MSwgNzA3NjUsIDcwNzY5LCA3MDc3MywgNzA3NzcsIAorICAgIDcwNzgxLCA3MDc4NSwgNzA3ODksIDcwNzkzLCA3MDc5NywgNzA4MDEsIDcwODA1LCA3MDgwOSwgNzA4MTMsIDcwODE3LCAKKyAgICA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgNzA4MzcsIDcwODQxLCA3MDg0NSwgNzA4NDksIDcwODUzLCA3MDg1NywgCisgICAgNzA4NjEsIDcwODY1LCA3MDg2OSwgNzA4NzMsIDcwODc3LCA3MDg4MSwgNzA4ODUsIDcwODg5LCA3MDg5MywgNzA4OTcsIAorICAgIDcwOTAxLCA3MDkwNSwgNzA5MDksIDcwOTEzLCA3MDkxNywgNzA5MjEsIDcwOTI1LCA3MDkyOSwgNzA5MzMsIDcwOTM3LCAKKyAgICA3MDk0MSwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIDcwOTYxLCA3MDk2NSwgNzA5NjksIDcwOTczLCA3MDk3NywgCisgICAgNzA5ODEsIDcwOTg1LCA3MDk4OSwgNzA5OTMsIDcwOTk3LCA3MTAwMSwgNzEwMDUsIDcxMDA5LCA3MTAxMywgNzEwMTcsIAorICAgIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCA3MTAzNywgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCAKKyAgICA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIDcxMDgxLCA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NywgCisgICAgNzExMDEsIDcxMTA1LCA3MTEwOSwgNzExMTMsIDcxMTE3LCA3MTEyMSwgNzExMjUsIDcxMTI5LCA3MTEzMywgNzExMzcsIAorICAgIDcxMTQxLCA3MTE0NSwgNzExNDksIDcxMTUzLCA3MTE1NywgNzExNjEsIDcxMTY1LCA3MTE2OSwgNzExNzMsIDcxMTc3LCAKKyAgICA3MTE4MSwgNzExODUsIDcxMTg5LCA3MTE5MywgNzExOTcsIDcxMjAxLCA3MTIwNSwgNzEyMDksIDcxMjEzLCA3MTIxNywgCisgICAgNzEyMjEsIDcxMjI1LCA3MTIyOSwgNzEyMzMsIDcxMjM3LCA3MTI0MSwgNzEyNDUsIDcxMjQ5LCA3MTI1MywgNzEyNTcsIAorICAgIDcxMjYxLCA3MTI2NSwgNzEyNjksIDcxMjczLCA3MTI3NywgNzEyODEsIDcxMjg1LCA3MTI4OSwgNzEyOTMsIDcxMjk3LCAKKyAgICA3MTMwMSwgNzEzMDUsIDcxMzA5LCA3MTMxMywgNzEzMTcsIDcxMzIxLCA3MTMyNSwgNzEzMjksIDcxMzMzLCA3MTMzNywgCisgICAgNzEzNDEsIDcxMzQ1LCA3MTM0OSwgNzEzNTMsIDcxMzU3LCA3MTM2MSwgNzEzNjUsIDcxMzY5LCA3MTM3MywgNzEzNzcsIAorICAgIDcxMzgxLCA3MTM4NSwgNzEzODksIDcxMzkzLCA3MTM5NywgNzE0MDEsIDcxNDA1LCA3MTQwOSwgNzE0MTMsIDcxNDE3LCAKKyAgICA3MTQyMSwgNzE0MjUsIDcxNDI5LCA3MTQzMywgNzE0MzcsIDcxNDQxLCA3MTQ0NSwgNzE0NDksIDcxNDUzLCA3MTQ1NywgCisgICAgNzE0NjEsIDcxNDY1LCA3MTQ2OSwgNzE0NzMsIDcxNDc3LCA3MTQ4MSwgNzE0ODUsIDcxNDg5LCA3MTQ5MywgNzE0OTcsIAorICAgIDcxNTAxLCA3MTUwNSwgNzE1MDksIDcxNTEzLCA3MTUxNywgNzE1MjEsIDcxNTI1LCA3MTUyOSwgNzE1MzMsIDcxNTM3LCAKKyAgICA3MTU0MSwgNzE1NDUsIDcxNTQ5LCA3MTU1MywgNzE1NTcsIDcxNTYxLCA3MTU2NSwgNzE1NjksIDcxNTczLCA3MTU3NywgCisgICAgNzE1ODEsIDcxNTg1LCA3MTU4OSwgNzE1OTMsIDcxNTk3LCA3MTYwMSwgNzE2MDUsIDcxNjA5LCA3MTYxMywgNzE2MTcsIAorICAgIDcxNjIxLCA3MTYyNSwgNzE2MjksIDcxNjMzLCA3MTYzNywgNzE2NDEsIDcxNjQ1LCA3MTY0OSwgNzE2NTMsIDcxNjU3LCAKKyAgICA3MTY2MSwgNzE2NjUsIDcxNjY5LCA3MTY3MywgNzE2NzcsIDcxNjgxLCA3MTY4NSwgNzE2ODksIDcxNjkzLCA3MTY5NywgCisgICAgNzE3MDEsIDcxNzA1LCA3MTcwOSwgNzE3MTMsIDcxNzE3LCA3MTcyMSwgNzE3MjUsIDcxNzI5LCA3MTczMywgNzE3MzcsIAorICAgIDcxNzQxLCA3MTc0NSwgNzE3NDksIDcxNzUzLCA3MTc1NywgNzE3NjEsIDcxNzY1LCA3MTc2OSwgNzE3NzMsIDcxNzc3LCAKKyAgICA3MTc4MSwgNzE3ODUsIDcxNzg5LCA3MTc5MywgNzE3OTcsIDcxODAxLCA3MTgwNSwgNzE4MDksIDcxODEzLCA3MTgxNywgCisgICAgNzE4MjEsIDcxODI1LCA3MTgyOSwgNzE4MzMsIDcxODM3LCA3MTg0MSwgNzE4NDUsIDcxODQ5LCA3MTg1MywgNzE4NTcsIAorICAgIDcxODYxLCA3MTg2NSwgNzE4NjksIDcxODczLCA3MTg3NywgNzE4ODEsIDcxODg1LCA3MTg4OSwgNzE4OTMsIDAsIDAsIDAsIAorICAgIDcxODk3LCA3MTkwMSwgNzE5MDUsIDcxOTA5LCA3MTkxMywgNzE5MTcsIDcxOTIxLCA3MTkyNSwgNzE5MjksIDcxOTMzLCAKKyAgICA3MTkzNywgNzE5NDEsIDcxOTQ1LCA3MTk0OSwgNzE5NTMsIDcxOTU3LCA3MTk2MSwgNzE5NjUsIDcxOTY5LCA3MTk3MywgCisgICAgNzE5NzcsIDcxOTgxLCA3MTk4NSwgNzE5ODksIDcxOTkzLCA3MTk5NywgNzIwMDEsIDcyMDA1LCA3MjAwOSwgNzIwMTMsIAorICAgIDcyMDE3LCA3MjAyMSwgNzIwMjUsIDcyMDI5LCA3MjAzMywgNzIwMzcsIDcyMDQxLCA3MjA0NSwgNzIwNDksIDcyMDUzLCAKKyAgICA3MjA1NywgNzIwNjEsIDcyMDY1LCA3MjA2OSwgNzIwNzMsIDcyMDc3LCA3MjA4MSwgNzIwODUsIDcyMDg5LCA3MjA5MywgCisgICAgNzIwOTcsIDcyMTAxLCA3MjEwNSwgNzIxMDksIDcyMTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjExNywgCisgICAgNzIxMjIsIDcyMTI2LCA3MjEzMSwgNzIxMzYsIDcyMTQxLCA3MjE0NiwgNzIxNTEsIDcyMTU1LCA3MjE2MCwgNzIxNjUsIAorICAgIDcyMTcwLCA3MjE3NSwgNzIxODAsIDcyMTg1LCA3MjE5MCwgNzIxOTQsIDcyMTk4LCA3MjIwMiwgNzIyMDcsIDcyMjEyLCAKKyAgICA3MjIxNywgNzIyMjIsIDcyMjI2LCA3MjIzMSwgNzIyMzYsIDcyMjQxLCA3MjI0NiwgNzIyNTEsIDcyMjU1LCA3MjI2MCwgCisgICAgNzIyNjQsIDcyMjY5LCA3MjI3MywgNzIyNzgsIDcyMjgyLCA3MjI4NiwgNzIyOTAsIDcyMjk1LCA3MjMwMCwgNzIzMDUsIAorICAgIDcyMzEzLCA3MjMyMSwgNzIzMjksIDcyMzM3LCA3MjM0NCwgNzIzNTIsIDcyMzU4LCA3MjM2NiwgNzIzNzAsIDcyMzc0LCAKKyAgICA3MjM3OCwgNzIzODIsIDcyMzg2LCA3MjM5MCwgNzIzOTQsIDcyMzk4LCA3MjQwMiwgNzI0MDYsIDcyNDEwLCA3MjQxNCwgCisgICAgNzI0MTgsIDcyNDIyLCA3MjQyNiwgNzI0MzAsIDcyNDM0LCA3MjQzOCwgNzI0NDIsIDcyNDQ2LCA3MjQ1MCwgNzI0NTQsIAorICAgIDcyNDU4LCA3MjQ2MiwgNzI0NjYsIDcyNDcwLCA3MjQ3NCwgNzI0NzgsIDcyNDgyLCA3MjQ4NiwgNzI0OTAsIDcyNDk0LCAKKyAgICA3MjQ5OCwgNzI1MDIsIDcyNTA2LCA3MjUxMCwgNzI1MTMsIDcyNTE3LCA3MjUyMSwgNzI1MjUsIDcyNTI5LCA3MjUzMywgCisgICAgNzI1MzcsIDcyNTQxLCA3MjU0NSwgNzI1NDksIDcyNTUzLCA3MjU1NywgNzI1NjEsIDcyNTY1LCA3MjU2OSwgNzI1NzMsIAorICAgIDcyNTc3LCA3MjU4MSwgNzI1ODUsIDcyNTg5LCA3MjU5MywgNzI1OTcsIDcyNjAxLCA3MjYwNSwgNzI2MDksIDcyNjEzLCAKKyAgICA3MjYxNywgNzI2MjEsIDcyNjI1LCA3MjYyOSwgNzI2MzMsIDcyNjM3LCA3MjY0MSwgNzI2NDUsIDcyNjQ5LCA3MjY1MywgCisgICAgNzI2NTcsIDcyNjYwLCA3MjY2NCwgNzI2NjgsIDcyNjcxLCA3MjY3NSwgNzI2NzksIDcyNjgzLCA3MjY4NiwgNzI2OTAsIAorICAgIDcyNjk0LCA3MjY5OCwgNzI3MDIsIDcyNzA2LCA3MjcxMCwgNzI3MTQsIDcyNzE4LCA3MjcyMiwgNzI3MjYsIDcyNzMwLCAKKyAgICA3MjczNCwgNzI3MzgsIDcyNzQxLCA3Mjc0NSwgNzI3NDksIDcyNzUzLCA3Mjc1NywgNzI3NjEsIDcyNzY1LCA3Mjc2OSwgCisgICAgNzI3NzMsIDcyNzc3LCA3Mjc4MSwgNzI3ODQsIDcyNzg3LCA3Mjc5MSwgNzI3OTUsIDcyNzk5LCA3MjgwMiwgNzI4MDUsIAorICAgIDcyODA5LCA3MjgxMywgNzI4MTcsIDcyODIxLCA3MjgyNSwgNzI4MjksIDcyODMzLCA3MjgzNywgNzI4NDEsIDcyODQ1LCAKKyAgICA3Mjg0OSwgNzI4NTMsIDcyODU3LCA3Mjg2MSwgNzI4NjUsIDcyODY5LCA3Mjg3MywgNzI4NzcsIDcyODgxLCA3Mjg4NSwgCisgICAgNzI4ODksIDcyODkzLCA3Mjg5NywgNzI5MDEsIDcyOTA1LCA3MjkwOSwgNzI5MTMsIDcyOTE3LCA3MjkyMSwgNzI5MjUsIAorICAgIDcyOTI5LCA3MjkzMywgNzI5MzcsIDcyOTQxLCA3Mjk0NSwgNzI5NDksIDcyOTUzLCA3Mjk1NiwgNzI5NjAsIDcyOTY0LCAKKyAgICA3Mjk2OCwgNzI5NzIsIDcyOTc2LCA3Mjk4MCwgNzI5ODQsIDcyOTg4LCA3Mjk5MiwgNzI5OTYsIDczMDAwLCA3MzAwNCwgCisgICAgNzMwMDgsIDczMDEyLCA3MzAxNiwgNzMwMjAsIDczMDI0LCA3MzAyOCwgNzMwMzIsIDczMDM2LCA3MzA0MCwgNzMwNDQsIAorICAgIDczMDQ4LCA3MzA1MiwgNzMwNTYsIDczMDYwLCA3MzA2NCwgNzMwNjgsIDczMDcyLCA3MzA3NiwgNzMwODAsIDczMDg0LCAKKyAgICA3MzA4OCwgNzMwOTIsIDczMDk2LCA3MzEwMCwgNzMxMDMsIDczMTA3LCA3MzExMSwgNzMxMTUsIDczMTE5LCA3MzEyMywgCisgICAgNzMxMjcsIDczMTMxLCA3MzEzNSwgNzMxMzksIDczMTQzLCA3MzE0NywgNzMxNTEsIDczMTU1LCA3MzE1OSwgNzMxNjMsIAorICAgIDczMTY3LCA3MzE3MCwgNzMxNzQsIDczMTc4LCA3MzE4MiwgNzMxODYsIDczMTkwLCA3MzE5NCwgNzMxOTgsIDczMjAyLCAKKyAgICA3MzIwNiwgNzMyMTAsIDczMjE0LCA3MzIxOCwgNzMyMjIsIDczMjI2LCA3MzIzMCwgNzMyMzQsIDczMjM4LCA3MzI0MiwgCisgICAgNzMyNDYsIDczMjUwLCA3MzI1NCwgNzMyNTcsIDczMjYxLCA3MzI2NSwgNzMyNjksIDczMjczLCA3MzI3NywgNzMyODEsIAorICAgIDczMjg1LCA3MzI4OSwgNzMyOTMsIDczMjk3LCA3MzMwMSwgNzMzMDUsIDczMzA5LCA3MzMxMywgNzMzMTcsIDczMzIxLCAKKyAgICA3MzMyNSwgNzMzMjksIDczMzMzLCA3MzMzNywgNzMzNDEsIDczMzQ1LCA3MzM0OSwgNzMzNTMsIDczMzU3LCA3MzM2MSwgCisgICAgNzMzNjUsIDczMzY5LCA3MzM3MywgNzMzNzcsIDczMzgxLCA3MzM4NSwgNzMzODksIDczMzkzLCA3MzM5NywgNzM0MDEsIAorICAgIDczNDA1LCA3MzQwOSwgNzM0MTMsIDczNDE3LCA3MzQyMSwgNzM0MjUsIDczNDI5LCA3MzQzMiwgNzM0MzcsIDczNDQxLCAKKyAgICA3MzQ0NywgNzM0NTIsIDczNDU4LCA3MzQ2MiwgNzM0NjYsIDczNDcwLCA3MzQ3NCwgNzM0NzgsIDczNDgyLCA3MzQ4NiwgCisgICAgNzM0OTAsIDczNDk0LCA3MzQ5OCwgNzM1MDIsIDczNTA2LCA3MzUxMCwgNzM1MTQsIDczNTE3LCA3MzUyMCwgNzM1MjMsIAorICAgIDczNTI2LCA3MzUyOSwgNzM1MzIsIDczNTM2LCA3MzUzOSwgNzM1NDMsIDczNTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzU1NCwgNzM1NTksIDczNTY0LCA3MzU2OSwgNzM1NzQsIAorICAgIDczNTgxLCA3MzU4OCwgNzM1OTMsIDczNTk4LCA3MzYwMywgNzM2MDgsIDczNjE1LCA3MzYyMiwgNzM2MjksIDczNjM2LCAKKyAgICA3MzY0MywgNzM2NTAsIDczNjYwLCA3MzY3MCwgNzM2NzcsIDczNjg0LCA3MzY5MSwgNzM2OTgsIDczNzA0LCA3MzcxMCwgCisgICAgNzM3MTksIDczNzI4LCA3MzczNSwgNzM3NDIsIDczNzUzLCA3Mzc2NCwgNzM3NjksIDczNzc0LCA3Mzc4MSwgNzM3ODgsIAorICAgIDczNzk1LCA3MzgwMiwgNzM4MDksIDczODE2LCA3MzgyMywgNzM4MzAsIDczODM2LCA3Mzg0MiwgNzM4NDgsIDczODU0LCAKKyAgICA3Mzg2MSwgNzM4NjgsIDczODczLCA3Mzg3NywgNzM4ODQsIDczODkxLCA3Mzg5OCwgNzM5MDIsIDczOTA5LCA3MzkxMywgCisgICAgNzM5MTgsIDczOTIyLCA3MzkyOCwgNzM5MzMsIDczOTM5LCA3Mzk0NCwgNzM5NDgsIDczOTUyLCA3Mzk1NSwgNzM5NTgsIAorICAgIDczOTYzLCA3Mzk2OCwgNzM5NzMsIDczOTc4LCA3Mzk4MywgNzM5ODgsIDczOTkzLCA3Mzk5OCwgNzQwMDMsIDc0MDA4LCAKKyAgICA3NDAxNiwgNzQwMjQsIDc0MDI5LCA3NDAzNCwgNzQwMzksIDc0MDQ0LCA3NDA0OSwgNzQwNTQsIDc0MDU5LCA3NDA2NCwgCisgICAgNzQwNjksIDc0MDc0LCA3NDA3OSwgNzQwODQsIDc0MDg5LCA3NDA5NCwgNzQxMDAsIDc0MTA2LCA3NDExMiwgNzQxMTgsIAorICAgIDc0MTIzLCA3NDEyOSwgNzQxMzIsIDc0MTM1LCA3NDEzOCwgNzQxNDIsIDc0MTQ2LCA3NDE1MCwgNzQxNTQsIDc0MTU3LCAKKyAgICA3NDE2MSwgNzQxNjQsIDc0MTY3LCA3NDE3MCwgNzQxNzQsIDc0MTc4LCA3NDE4MiwgNzQxODYsIDc0MTkwLCA3NDE5NCwgCisgICAgNzQxOTgsIDc0MjAyLCA3NDIwNiwgNzQyMTAsIDc0MjE0LCA3NDIxOCwgNzQyMjIsIDc0MjI2LCA3NDIzMCwgNzQyMzQsIAorICAgIDc0MjM4LCA3NDI0MiwgNzQyNDYsIDc0MjUwLCA3NDI1NCwgNzQyNTgsIDc0MjYxLCA3NDI2NSwgNzQyNjksIDc0MjczLCAKKyAgICA3NDI3NywgNzQyODEsIDc0Mjg1LCA3NDI4OSwgNzQyOTMsIDc0Mjk3LCA3NDMwMSwgNzQzMDUsIDc0MzA5LCA3NDMxMywgCisgICAgNzQzMTcsIDc0MzIxLCA3NDMyNSwgNzQzMjksIDc0MzMzLCA3NDMzNywgNzQzNDEsIDc0MzQ1LCA3NDM0OSwgNzQzNTMsIAorICAgIDc0MzU3LCA3NDM2MCwgNzQzNjQsIDc0MzY4LCA3NDM3MiwgNzQzNzYsIDc0MzgwLCA3NDM4NCwgNzQzODgsIDc0MzkxLCAKKyAgICA3NDM5NSwgNzQzOTksIDc0NDAzLCA3NDQwNywgNzQ0MTEsIDc0NDE1LCA3NDQxOSwgNzQ0MjMsIDc0NDI3LCA3NDQzMSwgCisgICAgNzQ0MzUsIDc0NDM5LCA3NDQ0NCwgNzQ0NDksIDc0NDUyLCA3NDQ1NywgNzQ0NjAsIDc0NDYzLCA3NDQ2NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzQ0NzAsIDc0NDc5LCA3NDQ4OCwgNzQ0OTcsIDc0NTA2LCA3NDUxNSwgNzQ1MjQsIDc0NTMzLCAKKyAgICA3NDU0MiwgNzQ1NTAsIDc0NTU3LCA3NDU2NSwgNzQ1NzIsIDc0NTgwLCA3NDU5MCwgNzQ1OTksIDc0NjA5LCA3NDYxOCwgCisgICAgNzQ2MjgsIDc0NjM2LCA3NDY0MywgNzQ2NTEsIDc0NjU4LCA3NDY2NiwgNzQ2NzEsIDc0Njc2LCA3NDY4MiwgNzQ2OTEsIAorICAgIDc0Njk3LCA3NDcwMywgNzQ3MTAsIDc0NzE5LCA3NDcyNywgNzQ3MzUsIDc0NzQzLCA3NDc1MCwgNzQ3NTcsIDc0NzY0LCAKKyAgICA3NDc3MSwgNzQ3NzYsIDc0NzgxLCA3NDc4NiwgNzQ3OTEsIDc0Nzk2LCA3NDgwMSwgNzQ4MDYsIDc0ODExLCA3NDgxOSwgCisgICAgNzQ4MjcsIDc0ODMzLCA3NDgzOSwgNzQ4NDQsIDc0ODQ5LCA3NDg1NCwgNzQ4NTksIDc0ODY0LCA3NDg2OSwgNzQ4NzQsIAorICAgIDc0ODc5LCA3NDg4OCwgNzQ4OTcsIDc0OTAyLCA3NDkwNywgNzQ5MTcsIDc0OTI3LCA3NDkzNCwgNzQ5NDEsIDc0OTUwLCAKKyAgICA3NDk1OSwgNzQ5NzEsIDc0OTgzLCA3NDk4OSwgNzQ5OTUsIDc1MDAzLCA3NTAxMSwgNzUwMjEsIDc1MDMxLCA3NTAzOCwgCisgICAgNzUwNDUsIDc1MDUwLCA3NTA1NSwgNzUwNjcsIDc1MDc5LCA3NTA4NywgNzUwOTUsIDc1MTA1LCA3NTExNSwgNzUxMjcsIAorICAgIDc1MTM5LCA3NTE0OCwgNzUxNTcsIDc1MTY0LCA3NTE3MSwgNzUxNzgsIDc1MTg1LCA3NTE5NCwgNzUyMDMsIDc1MjA4LCAKKyAgICA3NTIxMywgNzUyMjAsIDc1MjI3LCA3NTIzNCwgNzUyNDEsIDc1MjUzLCA3NTI2NSwgNzUyNzAsIDc1Mjc1LCA3NTI4MCwgCisgICAgNzUyODUsIDc1MjkwLCA3NTI5NSwgNzUzMDAsIDc1MzA1LCA3NTMwOSwgNzUzMTQsIDc1MzE5LCA3NTMyNCwgNzUzMjksIAorICAgIDc1MzM0LCA3NTM0MCwgNzUzNDUsIDc1MzUwLCA3NTM1NywgNzUzNjQsIDc1MzcxLCA3NTM3OCwgNzUzODUsIDc1Mzk0LCAKKyAgICA3NTQwMywgNzU0MDksIDc1NDE1LCA3NTQyMSwgNzU0MjcsIDc1NDM0LCA3NTQ0MSwgNzU0NDgsIDc1NDU1LCA3NTQ2MiwgCisgICAgNzU0NjYsIDc1NDczLCA3NTQ3OCwgNzU0ODMsIDc1NDkwLCA3NTUwMywgNzU1MDksIDc1NTE3LCA3NTUyNSwgNzU1MzIsIAorICAgIDc1NTM5LCA3NTU0OCwgNzU1NTcsIDc1NTY0LCA3NTU3MSwgNzU1NzgsIDc1NTg1LCA3NTU5MiwgNzU1OTksIDc1NjA2LCAKKyAgICA3NTYxMywgNzU2MjAsIDc1NjI3LCA3NTYzNiwgNzU2NDUsIDc1NjU0LCA3NTY2MywgNzU2NzIsIDc1NjgxLCA3NTY5MCwgCisgICAgNzU2OTksIDc1NzA4LCA3NTcxNywgNzU3MjQsIDc1NzMxLCA3NTczNywgNzU3NDUsIDAsIDc1NzUxLCA3NTc1OCwgNzU3NjUsIAorICAgIDc1NzczLCA3NTc3OCwgNzU3ODMsIDc1Nzg4LCA3NTc5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzUwNTYsIDc1MDYzLCA3NTA3MCwgNzUwNzYsIDc1MDg0LCA3NTA5MiwgNzUxMDAsIDc1MTA4LCA3NTExNiwgCi0gICAgNzUxMjQsIDc1MTMwLCA3NTEzNiwgNzUxNDMsIDc1MTQ5LCA3NTE1NSwgNzUxNjEsIDc1MTY4LCA3NTE3NSwgNzUxODIsIAotICAgIDc1MTg5LCA3NTE5NiwgNzUyMDMsIDc1MjEwLCA3NTIxNywgNzUyMjQsIDc1MjMxLCA3NTIzOCwgNzUyNDUsIDc1MjUyLCAKLSAgICA3NTI1OSwgNzUyNjUsIDc1MjcyLCA3NTI3OSwgNzUyODYsIDc1MjkzLCA3NTMwMCwgNzUzMDcsIDc1MzE0LCA3NTMyMSwgCi0gICAgNzUzMjgsIDc1MzM1LCA3NTM0MiwgNzUzNDksIDc1MzU2LCA3NTM2MywgNzUzNzAsIDc1Mzc3LCA3NTM4NCwgNzUzOTEsIAotICAgIDc1Mzk5LCA3NTQwNywgNzU0MTUsIDc1NDIzLCAwLCAwLCAwLCAwLCA3NTQzMSwgNzU0MzksIDc1NDQ3LCA3NTQ1NSwgCi0gICAgNzU0NjMsIDc1NDcxLCA3NTQ3OSwgNzU0ODUsIDc1NDkxLCA3NTQ5NywgMCwgMCwgMCwgMCwgMCwgMCwgNzU1MDMsIDc1NTA3LCAKLSAgICA3NTUxMiwgNzU1MTcsIDc1NTIyLCA3NTUyNywgNzU1MzIsIDc1NTM3LCA3NTU0MiwgNzU1NDcsIDc1NTUyLCA3NTU1NywgCi0gICAgNzU1NjIsIDc1NTY2LCA3NTU3MSwgNzU1NzYsIDc1NTgwLCA3NTU4NSwgNzU1OTAsIDc1NTk1LCA3NTYwMCwgNzU2MDUsIAotICAgIDc1NjEwLCA3NTYxNSwgNzU2MTksIDc1NjI0LCA3NTYyOSwgNzU2MzQsIDc1NjM5LCA3NTY0MywgNzU2NDcsIDc1NjUxLCAKLSAgICA3NTY1NSwgNzU2NTksIDc1NjYzLCA3NTY2OCwgNzU2NzMsIDc1Njc4LCA3NTY4MywgNzU2ODgsIDc1Njk1LCA3NTcwMSwgCi0gICAgNzU3MDYsIDc1NzExLCA3NTcxNiwgNzU3MjEsIDc1NzI3LCA3NTczNCwgNzU3NDAsIDc1NzQ3LCA3NTc1NCwgNzU3NjEsIAotICAgIDc1NzY2LCA3NTc3MywgNzU3NzksIDc1Nzg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTc5MCwgNzU3OTUsIDc1ODAwLCAKLSAgICA3NTgwNCwgNzU4MDksIDc1ODEzLCA3NTgxOCwgNzU4MjIsIDc1ODI3LCA3NTgzMiwgNzU4MzgsIDc1ODQzLCA3NTg0OSwgCi0gICAgNzU4NTMsIDc1ODU4LCA3NTg2MywgNzU4NjcsIDc1ODcyLCA3NTg3NywgNzU4ODEsIDc1ODg2LCA3NTg5MSwgNzU4OTYsIAotICAgIDc1OTAxLCA3NTkwNiwgNzU5MTEsIDc1OTE2LCA3NTkyMSwgNzU5MjYsIDc1OTMxLCA3NTkzNiwgNzU5NDEsIDc1OTQ2LCAKLSAgICA3NTk1MSwgNzU5NTYsIDc1OTYxLCA3NTk2NiwgNzU5NzEsIDc1OTc2LCA3NTk4MCwgNzU5ODUsIDc1OTkwLCA3NTk5NSwgCi0gICAgNzU5OTksIDc2MDAzLCA3NjAwOCwgNzYwMTMsIDc2MDE4LCA3NjAyMywgNzYwMjgsIDc2MDMzLCA3NjAzNywgNzYwNDIsIAotICAgIDc2MDQ4LCA3NjA1NCwgNzYwNTksIDc2MDY1LCA3NjA3MCwgNzYwNzYsIDc2MDgyLCA3NjA4OSwgNzYwOTUsIDc2MTAyLCAKLSAgICA3NjEwNywgNzYxMTMsIDc2MTE5LCA3NjEyNCwgNzYxMzAsIDc2MTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3NjE0MSwgNzYxNDUsIDc2MTUwLCA3NjE1NSwgNzYxNTksIDc2MTYzLCA3NjE2NywgNzYxNzEsIDc2MTc1LCA3NjE3OSwgCi0gICAgNzYxODQsIDc2MTg4LCAwLCAwLCAwLCAwLCAwLCAwLCA3NjE5MywgNzYxOTgsIDc2MjAyLCA3NjIwNiwgNzYyMTAsIDc2MjE0LCAKLSAgICA3NjIxOCwgNzYyMjIsIDc2MjI3LCA3NjIzMSwgNzYyMzYsIDc2MjQwLCA3NjI0NCwgNzYyNDgsIDc2MjUzLCA3NjI1NywgCi0gICAgNzYyNjIsIDc2MjY3LCA3NjI3MiwgNzYyNzgsIDc2Mjg0LCA3NjI5MSwgNzYyOTYsIDc2MzAxLCA3NjMwNywgNzYzMTEsIAotICAgIDc2MzE2LCA3NjMxOSwgNzYzMjIsIDc2MzI2LCAwLCAwLCA3NjMzMSwgNzYzMzgsIDc2MzQ0LCA3NjM1MCwgNzYzNTYsIAotICAgIDc2MzYyLCA3NjM2OCwgNzYzNzQsIDc2MzgxLCA3NjM4NywgNzYzOTQsIDc2NDAwLCA3NjQwNywgNzY0MTQsIDc2NDIxLCAKLSAgICA3NjQyOCwgNzY0MzUsIDc2NDQyLCA3NjQ0OSwgNzY0NTYsIDc2NDYzLCA3NjQ3MCwgNzY0NzYsIDc2NDgzLCA3NjQ4OSwgCi0gICAgNzY0OTYsIDc2NTAzLCA3NjUxMCwgNzY1MTYsIDc2NTIzLCA3NjUzMCwgNzY1MzcsIDc2NTQzLCA3NjU1MCwgNzY1NTcsIAotICAgIDc2NTYzLCA3NjU3MCwgNzY1NzYsIDc2NTgzLCA3NjU5MCwgNzY1OTYsIDc2NjAyLCA3NjYwOSwgNzY2MTUsIDc2NjIyLCAKLSAgICA3NjYyOSwgNzY2MzgsIDc2NjQ1LCA3NjY1MiwgNzY2NTYsIDc2NjYxLCA3NjY2NiwgNzY2NzEsIDc2Njc2LCA3NjY4MSwgCi0gICAgNzY2ODUsIDc2NjkwLCA3NjY5NCwgNzY2OTksIDc2NzA0LCA3NjcwOSwgNzY3MTQsIDc2NzE5LCA3NjcyNCwgNzY3MjgsIAotICAgIDc2NzMzLCA3NjczNywgNzY3NDIsIDc2NzQ3LCA3Njc1MiwgNzY3NTcsIDc2NzYxLCA3Njc2NiwgNzY3NzEsIDc2Nzc2LCAKLSAgICA3Njc4MiwgNzY3ODcsIDc2NzkzLCA3Njc5OSwgNzY4MDUsIDc2ODExLCA3NjgxNywgNzY4MjIsIDc2ODI4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjgzMiwgNzY4MzcsIDc2ODQxLCA3Njg0NSwgNzY4NDksIDc2ODUzLCA3Njg1NywgCi0gICAgNzY4NjEsIDc2ODY1LCA3Njg2OSwgNzY4NzMsIDc2ODc3LCA3Njg4MSwgNzY4ODUsIDc2ODg5LCA3Njg5MywgNzY4OTcsIAotICAgIDc2OTAxLCA3NjkwNSwgNzY5MDksIDc2OTEzLCA3NjkxNywgNzY5MjEsIDc2OTI1LCA3NjkyOSwgNzY5MzMsIDc2OTM3LCAKLSAgICA3Njk0MSwgNzY5NDUsIDc2OTQ5LCAwLCAwLCAwLCA3Njk1MywgNzY5NTcsIDc2OTYxLCA3Njk2NSwgNzY5NjksIDc2OTcyLCAKLSAgICA3Njk3OCwgNzY5ODEsIDc2OTg1LCA3Njk4OCwgNzY5OTQsIDc3MDAwLCA3NzAwOCwgNzcwMTEsIDc3MDE1LCA3NzAxOCwgCi0gICAgNzcwMjEsIDc3MDI3LCA3NzAzMywgNzcwMzcsIDc3MDQzLCA3NzA0NywgNzcwNTEsIDc3MDU3LCA3NzA2MSwgNzcwNjcsIAotICAgIDc3MDczLCA3NzA3NywgNzcwODEsIDc3MDg3LCA3NzA5MSwgNzcwOTcsIDc3MTAzLCA3NzEwNywgNzcxMTMsIDc3MTE3LCAKLSAgICA3NzEyMywgNzcxMjcsIDc3MTMwLCA3NzEzNiwgNzcxNDAsIDc3MTQ2LCA3NzE0OSwgNzcxNTIsIDc3MTU2LCA3NzE2MiwgCi0gICAgNzcxNjYsIDc3MTcwLCA3NzE3NiwgNzcxODIsIDc3MTg2LCA3NzE4OSwgNzcxOTUsIDc3MjAwLCA3NzIwNSwgNzcyMTAsIAotICAgIDc3MjE3LCA3NzIyMiwgNzcyMjksIDc3MjM0LCA3NzI0MSwgNzcyNDYsIDc3MjUxLCA3NzI1NiwgNzcyNjEsIDc3MjY0LCAKLSAgICA3NzI2OCwgNzcyNzIsIDc3Mjc3LCA3NzI4MiwgNzcyODcsIDc3MjkyLCA3NzI5NywgNzczMDIsIDc3MzA3LCA3NzMxMiwgCi0gICAgNzczMTksIDc3MzI0LCAwLCA3NzMzMSwgNzczMzQsIDc3MzM4LCA3NzM0MSwgNzczNDQsIDc3MzQ3LCA3NzM1MCwgNzczNTMsIAotICAgIDc3MzU2LCA3NzM2MCwgNzczNjMsIDAsIDAsIDAsIDAsIDc3MzY3LCA3NzM3NCwgNzczNzksIDc3Mzg1LCA3NzM5MSwgCi0gICAgNzczOTcsIDc3NDAzLCA3NzQwOSwgNzc0MTUsIDc3NDIyLCA3NzQyOSwgNzc0MzYsIDc3NDQzLCA3NzQ1MCwgNzc0NTcsIAotICAgIDc3NDY0LCA3NzQ3MSwgNzc0NzgsIDc3NDg1LCA3NzQ5MiwgNzc0OTgsIDc3NTA0LCA3NzUxMCwgNzc1MTYsIDc3NTIyLCAKLSAgICA3NzUyOCwgNzc1MzUsIDc3NTQxLCA3NzU0OCwgNzc1NTUsIDc3NTYyLCA3NzU2OSwgNzc1NzYsIDAsIDc3NTgzLCA3NzU4NywgCi0gICAgNzc1OTEsIDc3NTk1LCA3NzU5OSwgNzc2MDQsIDc3NjA4LCA3NzYxMiwgNzc2MTcsIDc3NjIyLCA3NzYyNywgNzc2MzIsIAotICAgIDc3NjM3LCA3NzY0MiwgNzc2NDcsIDc3NjUyLCA3NzY1NywgNzc2NjIsIDc3NjY3LCA3NzY3MiwgNzc2NzcsIDc3NjgyLCAKLSAgICA3NzY4NywgNzc2OTIsIDc3Njk3LCA3NzcwMiwgNzc3MDcsIDc3NzExLCA3NzcxNiwgNzc3MjEsIDc3NzI2LCA3NzczMSwgCi0gICAgNzc3MzYsIDc3NzQwLCA3Nzc0NSwgNzc3NDksIDc3NzU0LCA3Nzc1OSwgNzc3NjQsIDc3NzY5LCA3Nzc3NCwgNzc3NzgsIAotICAgIDc3Nzg0LCA3Nzc4OSwgNzc3OTUsIDc3ODAxLCA3NzgwNiwgNzc4MTIsIDc3ODE3LCA3NzgyMywgNzc4MjksIDc3ODM1LCAKLSAgICA3Nzg0MCwgNzc4NDYsIDc3ODUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3Nzg1OCwgNzc4NjQsIDc3ODcwLCAKLSAgICA3Nzg3NiwgNzc4ODMsIDc3ODg5LCA3Nzg5NSwgNzc5MDEsIDc3OTA3LCA3NzkxMywgNzc5MTgsIDc3OTIzLCA3NzkyOSwgCi0gICAgNzc5MzYsIDAsIDAsIDc3OTQzLCA3Nzk0OCwgNzc5NTIsIDc3OTU2LCA3Nzk2MCwgNzc5NjQsIDc3OTY4LCA3Nzk3MiwgCi0gICAgNzc5NzcsIDc3OTgxLCAwLCAwLCA3Nzk4NiwgNzc5OTIsIDc3OTk4LCA3ODAwNSwgNzgwMTMsIDc4MDE5LCA3ODAyNSwgCi0gICAgNzgwMzEsIDc4MDM3LCA3ODA0MywgNzgwNDksIDc4MDU1LCA3ODA2MSwgNzgwNjcsIDc4MDczLCA3ODA3OSwgNzgwODUsIAotICAgIDc4MDkxLCA3ODA5NiwgNzgxMDIsIDc4MTA4LCA3ODExNSwgNzgxMjEsIDc4MTI3LCA3ODEzMywgNzgxNDAsIDc4MTQ3LCAKLSAgICA3ODE1NCwgNzgxNjAsIDc4MTY1LCA3ODE3MCwgNzgxNzYsIDc4MTg0LCA3ODE5MSwgNzgxOTgsIDc4MjA2LCA3ODIxNCwgCi0gICAgNzgyMjEsIDc4MjI4LCA3ODIzNSwgNzgyNDIsIDc4MjQ5LCA3ODI1NiwgNzgyNjMsIDc4MjcwLCA3ODI3NywgNzgyODQsIAotICAgIDc4MjkxLCA3ODI5OCwgNzgzMDUsIDc4MzEyLCA3ODMxOSwgNzgzMjYsIDc4MzMzLCA3ODM0MCwgNzgzNDcsIDc4MzU0LCAKLSAgICA3ODM2MCwgNzgzNjYsIDc4MzczLCA3ODM4MCwgNzgzODcsIDc4Mzk0LCA3ODQwMSwgNzg0MDgsIDc4NDE1LCA3ODQyMiwgCi0gICAgNzg0MjksIDc4NDM2LCA3ODQ0MywgNzg0NTAsIDc4NDU3LCA3ODQ2NCwgNzg0NzEsIDc4NDc4LCA3ODQ4NSwgNzg0OTIsIAotICAgIDc4NDk5LCA3ODUwNiwgNzg1MTMsIDc4NTIwLCA3ODUyNywgNzg1MzQsIDc4NTQwLCA3ODU0NiwgNzg1NTMsIDc4NTU5LCAKLSAgICA3ODU2NCwgNzg1NzAsIDc4NTc1LCA3ODU4MCwgNzg1ODUsIDc4NTkyLCA3ODU5OCwgNzg2MDQsIDc4NjEwLCA3ODYxNiwgCi0gICAgNzg2MjIsIDc4NjI4LCA3ODYzNCwgNzg2NDIsIDc4NjUwLCA3ODY1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg2NjYsIDc4NjcyLCA3ODY3OCwgNzg2ODQsIAotICAgIDc4NjkyLCA3ODcwMCwgNzg3MDYsIDc4NzEyLCA3ODcxOSwgNzg3MjYsIDc4NzMzLCA3ODc0MCwgNzg3NDcsIDc4NzU0LCAKLSAgICA3ODc2MSwgNzg3NjgsIDc4Nzc1LCA3ODc4MywgNzg3OTEsIDc4Nzk5LCA3ODgwNywgNzg4MTUsIDc4ODIxLCA3ODgyOSwgCi0gICAgNzg4MzUsIDc4ODQzLCA3ODg1MiwgNzg4NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4ODY2LCA3ODg3MCwgCi0gICAgNzg4NzQsIDc4ODc4LCA3ODg4MiwgNzg4ODYsIDAsIDAsIDc4ODkwLCA3ODg5NCwgNzg4OTgsIDc4OTAyLCA3ODkwNiwgCi0gICAgNzg5MTAsIDAsIDAsIDc4OTE0LCA3ODkxOCwgNzg5MjIsIDc4OTI2LCA3ODkzMCwgNzg5MzQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDc4OTM4LCA3ODk0MiwgNzg5NDYsIDc4OTUwLCA3ODk1NCwgNzg5NTgsIDc4OTYyLCAwLCA3ODk2NiwgCi0gICAgNzg5NzAsIDc4OTc0LCA3ODk3OCwgNzg5ODIsIDc4OTg2LCA3ODk5MCwgMCwgNzg5OTQsIDc5MDAxLCA3OTAwNywgNzkwMTMsIAotICAgIDc5MDE5LCA3OTAyNiwgNzkwMzMsIDc5MDQyLCA3OTA1MywgNzkwNjMsIDc5MDcyLCA3OTA4MCwgNzkwODgsIDc5MDk2LCAKLSAgICA3OTEwMiwgNzkxMTAsIDc5MTE3LCA3OTEyNCwgNzkxMzMsIDc5MTQ0LCA3OTE1MiwgNzkxNjIsIDc5MTY4LCA3OTE3OCwgCi0gICAgNzkxODcsIDc5MTkyLCA3OTIwMCwgNzkyMDksIDc5MjE0LCA3OTIyMywgNzkyMzAsIDc5MjQwLCA3OTI1MiwgNzkyNTcsIAotICAgIDc5MjY0LCA3OTI3MSwgNzkyNzYsIDc5Mjg2LCA3OTI5NiwgNzkzMDYsIDc5MzE2LCA3OTMzMSwgNzkzNDQsIDc5MzU1LCAKLSAgICA3OTM2MywgNzkzNjgsIDc5Mzc5LCA3OTM4OCwgNzkzOTUsIDc5NDAyLCA3OTQwOCwgNzk0MTQsIDc5NDE5LCA3OTQyNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzk0MzIsIDc5NDM2LCA3OTQ0MCwgNzk0NDQsIDc5NDQ4LCA3OTQ1MiwgCi0gICAgNzk0NTcsIDc5NDYyLCA3OTQ2NiwgNzk0NzEsIDc5NDc2LCA3OTQ4MSwgNzk0ODYsIDc5NDkxLCA3OTQ5NSwgNzk1MDAsIAotICAgIDc5NTA1LCA3OTUxMCwgNzk1MTUsIDc5NTIwLCA3OTUyNSwgNzk1MzAsIDc5NTM1LCA3OTU0MCwgNzk1NDUsIDc5NTUwLCAKLSAgICA3OTU1NCwgNzk1NTksIDc5NTY0LCA3OTU2OSwgNzk1NzQsIDc5NTc5LCA3OTU4NCwgNzk1ODksIDc5NTk0LCA3OTU5OSwgCi0gICAgNzk2MDQsIDc5NjA5LCA3OTYxNCwgNzk2MTksIDc5NjI0LCA3OTYyOSwgNzk2MzQsIDc5NjM5LCA3OTY0NCwgNzk2NDksIAotICAgIDc5NjUzLCA3OTY1OCwgNzk2NjMsIDc5NjY4LCA3OTY3MywgNzk2NzgsIDc5NjgzLCA3OTY4OCwgNzk2OTMsIDc5Njk4LCAKLSAgICA3OTcwMywgNzk3MDgsIDc5NzEzLCA3OTcxOCwgNzk3MjMsIDc5NzI4LCA3OTczMywgNzk3MzgsIDc5NzQzLCA3OTc0OCwgCi0gICAgNzk3NTMsIDc5NzU4LCA3OTc2MywgNzk3NjgsIDc5NzczLCA3OTc3OCwgNzk3ODMsIDc5Nzg4LCA3OTc5MywgNzk3OTgsIAotICAgIDc5ODAzLCA3OTgwOCwgNzk4MTMsIDc5ODE4LCA3OTgyMiwgNzk4MjksIDc5ODM2LCA3OTg0MywgNzk4NTAsIDc5ODU2LCAKLSAgICA3OTg2MywgNzk4NzAsIDc5ODc3LCA3OTg4NCwgNzk4OTEsIDc5ODk4LCA3OTkwNSwgNzk5MTIsIDc5OTE5LCA3OTkyNiwgCi0gICAgNzk5MzIsIDc5OTM5LCA3OTk0NiwgNzk5NTMsIDc5OTYwLCA3OTk2NywgNzk5NzQsIDc5OTgxLCA3OTk4OCwgNzk5OTUsIAotICAgIDgwMDAyLCA4MDAwOSwgODAwMTgsIDgwMDI3LCA4MDAzNiwgODAwNDUsIDgwMDU0LCA4MDA2MywgODAwNzIsIDgwMDgxLCAKLSAgICA4MDA4OSwgODAwOTcsIDgwMTA1LCA4MDExMywgODAxMjEsIDgwMTI5LCA4MDEzNywgODAxNDUsIDgwMTUxLCA4MDE1OSwgMCwgCi0gICAgMCwgODAxNjcsIDgwMTc0LCA4MDE4MCwgODAxODYsIDgwMTkyLCA4MDE5OCwgODAyMDQsIDgwMjEwLCA4MDIxNywgODAyMjMsIAorICAgIDAsIDAsIDc1Nzk4LCA3NTgwNSwgNzU4MTIsIDc1ODE4LCA3NTgyNiwgNzU4MzQsIDc1ODQyLCA3NTg1MCwgNzU4NTgsIAorICAgIDc1ODY2LCA3NTg3MiwgNzU4NzgsIDc1ODg1LCA3NTg5MSwgNzU4OTcsIDc1OTAzLCA3NTkxMCwgNzU5MTcsIDc1OTI0LCAKKyAgICA3NTkzMSwgNzU5MzgsIDc1OTQ1LCA3NTk1MiwgNzU5NTksIDc1OTY2LCA3NTk3MywgNzU5ODAsIDc1OTg3LCA3NTk5NCwgCisgICAgNzYwMDEsIDc2MDA3LCA3NjAxNCwgNzYwMjEsIDc2MDI4LCA3NjAzNSwgNzYwNDIsIDc2MDQ5LCA3NjA1NiwgNzYwNjMsIAorICAgIDc2MDcwLCA3NjA3NywgNzYwODQsIDc2MDkxLCA3NjA5OCwgNzYxMDUsIDc2MTEyLCA3NjExOSwgNzYxMjYsIDc2MTMzLCAKKyAgICA3NjE0MSwgNzYxNDksIDc2MTU3LCA3NjE2NSwgMCwgMCwgMCwgMCwgNzYxNzMsIDc2MTgxLCA3NjE4OSwgNzYxOTcsIAorICAgIDc2MjA1LCA3NjIxMywgNzYyMjEsIDc2MjI3LCA3NjIzMywgNzYyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDc2MjQ1LCA3NjI0OSwgCisgICAgNzYyNTQsIDc2MjU5LCA3NjI2NCwgNzYyNjksIDc2Mjc0LCA3NjI3OSwgNzYyODQsIDc2Mjg5LCA3NjI5NCwgNzYyOTksIAorICAgIDc2MzAzLCA3NjMwNywgNzYzMTIsIDc2MzE3LCA3NjMyMSwgNzYzMjYsIDc2MzMxLCA3NjMzNiwgNzYzNDEsIDc2MzQ2LCAKKyAgICA3NjM1MSwgNzYzNTYsIDc2MzYwLCA3NjM2NSwgNzYzNjksIDc2Mzc0LCA3NjM3OSwgNzYzODMsIDc2Mzg3LCA3NjM5MSwgCisgICAgNzYzOTUsIDc2Mzk5LCA3NjQwMywgNzY0MDgsIDc2NDEzLCA3NjQxOCwgNzY0MjMsIDc2NDI4LCA3NjQzNSwgNzY0NDEsIAorICAgIDc2NDQ2LCA3NjQ1MSwgNzY0NTYsIDc2NDYxLCA3NjQ2NywgNzY0NzQsIDc2NDgwLCA3NjQ4NywgNzY0OTQsIDc2NTAxLCAKKyAgICA3NjUwNiwgNzY1MTMsIDc2NTE5LCA3NjUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzY1MzAsIDc2NTM1LCA3NjU0MCwgCisgICAgNzY1NDQsIDc2NTQ5LCA3NjU1MywgNzY1NTgsIDc2NTYyLCA3NjU2NywgNzY1NzIsIDc2NTc4LCA3NjU4MywgNzY1ODksIAorICAgIDc2NTkzLCA3NjU5OCwgNzY2MDMsIDc2NjA3LCA3NjYxMiwgNzY2MTcsIDc2NjIxLCA3NjYyNiwgNzY2MzEsIDc2NjM2LCAKKyAgICA3NjY0MSwgNzY2NDYsIDc2NjUxLCA3NjY1NiwgNzY2NjEsIDc2NjY2LCA3NjY3MSwgNzY2NzYsIDc2NjgxLCA3NjY4NiwgCisgICAgNzY2OTEsIDc2Njk2LCA3NjcwMSwgNzY3MDYsIDc2NzExLCA3NjcxNSwgNzY3MTksIDc2NzI0LCA3NjcyOSwgNzY3MzQsIAorICAgIDc2NzM4LCA3Njc0MiwgNzY3NDcsIDc2NzUxLCA3Njc1NiwgNzY3NjEsIDc2NzY2LCA3Njc3MSwgNzY3NzUsIDc2NzgwLCAKKyAgICA3Njc4NiwgNzY3OTIsIDc2Nzk3LCA3NjgwMywgNzY4MDgsIDc2ODE0LCA3NjgyMCwgNzY4MjcsIDc2ODMzLCA3Njg0MCwgCisgICAgNzY4NDUsIDc2ODUxLCA3Njg1NywgNzY4NjIsIDc2ODY4LCA3Njg3NCwgNzY4NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc2ODg0LCA3Njg4OCwgNzY4OTMsIDc2ODk4LCA3NjkwMiwgNzY5MDYsIDc2OTEwLCA3NjkxNCwgNzY5MTgsIDc2OTIyLCAKKyAgICA3NjkyNywgNzY5MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDc2OTM2LCA3Njk0MSwgNzY5NDUsIDc2OTQ5LCA3Njk1MywgNzY5NTcsIAorICAgIDc2OTYxLCA3Njk2NSwgNzY5NzAsIDc2OTc0LCA3Njk3OSwgNzY5ODMsIDc2OTg3LCA3Njk5MSwgNzY5OTUsIDc2OTk5LCAKKyAgICA3NzAwNCwgNzcwMDksIDc3MDE0LCA3NzAyMCwgNzcwMjYsIDc3MDMzLCA3NzAzOCwgNzcwNDMsIDc3MDQ5LCA3NzA1MywgCisgICAgNzcwNTgsIDc3MDYxLCA3NzA2NCwgNzcwNjgsIDAsIDAsIDc3MDczLCA3NzA4MCwgNzcwODYsIDc3MDkyLCA3NzA5OCwgCisgICAgNzcxMDQsIDc3MTEwLCA3NzExNiwgNzcxMjMsIDc3MTI5LCA3NzEzNiwgNzcxNDIsIDc3MTQ5LCA3NzE1NiwgNzcxNjMsIAorICAgIDc3MTcwLCA3NzE3NywgNzcxODQsIDc3MTkxLCA3NzE5OCwgNzcyMDUsIDc3MjExLCA3NzIxNywgNzcyMjQsIDc3MjMwLCAKKyAgICA3NzIzNywgNzcyNDQsIDc3MjUxLCA3NzI1NywgNzcyNjMsIDc3MjcwLCA3NzI3NywgNzcyODMsIDc3MjkwLCA3NzI5NywgCisgICAgNzczMDMsIDc3MzEwLCA3NzMxNiwgNzczMjMsIDc3MzMwLCA3NzMzNiwgNzczNDIsIDc3MzQ5LCA3NzM1NSwgNzczNjIsIAorICAgIDc3MzY5LCA3NzM3OCwgNzczODUsIDc3MzkyLCA3NzM5NiwgNzc0MDEsIDc3NDA2LCA3NzQxMSwgNzc0MTYsIDc3NDIwLCAKKyAgICA3NzQyNCwgNzc0MjksIDc3NDMzLCA3NzQzOCwgNzc0NDMsIDc3NDQ4LCA3NzQ1MywgNzc0NTgsIDc3NDYyLCA3NzQ2NiwgCisgICAgNzc0NzEsIDc3NDc1LCA3NzQ4MCwgNzc0ODUsIDc3NDkwLCA3NzQ5NSwgNzc0OTksIDc3NTA0LCA3NzUwOSwgNzc1MTQsIAorICAgIDc3NTIwLCA3NzUyNSwgNzc1MzEsIDc3NTM3LCA3NzU0MywgNzc1NDksIDc3NTU1LCA3NzU2MCwgNzc1NjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NTcwLCA3NzU3NSwgNzc1NzksIDc3NTgzLCA3NzU4NywgNzc1OTEsIDc3NTk1LCAKKyAgICA3NzU5OSwgNzc2MDMsIDc3NjA3LCA3NzYxMSwgNzc2MTUsIDc3NjE5LCA3NzYyMywgNzc2MjcsIDc3NjMxLCA3NzYzNSwgCisgICAgNzc2MzksIDc3NjQzLCA3NzY0NywgNzc2NTEsIDc3NjU1LCA3NzY1OSwgNzc2NjMsIDc3NjY3LCA3NzY3MSwgNzc2NzUsIAorICAgIDc3Njc5LCA3NzY4MywgNzc2ODcsIDAsIDAsIDAsIDc3NjkxLCA3NzY5NiwgNzc3MDEsIDc3NzA2LCA3NzcxMSwgNzc3MTUsIAorICAgIDc3NzIyLCA3NzcyNiwgNzc3MzEsIDc3NzM1LCA3Nzc0MiwgNzc3NDksIDc3NzU4LCA3Nzc2MiwgNzc3NjcsIDc3NzcxLCAKKyAgICA3Nzc3NSwgNzc3ODIsIDc3Nzg5LCA3Nzc5NCwgNzc4MDEsIDc3ODA2LCA3NzgxMSwgNzc4MTgsIDc3ODIzLCA3NzgzMCwgCisgICAgNzc4MzcsIDc3ODQyLCA3Nzg0NywgNzc4NTQsIDc3ODU5LCA3Nzg2NiwgNzc4NzMsIDc3ODc4LCA3Nzg4NSwgNzc4OTAsIAorICAgIDc3ODk3LCA3NzkwMSwgNzc5MDUsIDc3OTEyLCA3NzkxNywgNzc5MjQsIDc3OTI4LCA3NzkzMiwgNzc5MzcsIDc3OTQ0LCAKKyAgICA3Nzk0OCwgNzc5NTMsIDc3OTYwLCA3Nzk2NywgNzc5NzIsIDc3OTc2LCA3Nzk4MywgNzc5ODksIDc3OTk1LCA3ODAwMSwgCisgICAgNzgwMDksIDc4MDE1LCA3ODAyMywgNzgwMjksIDc4MDM3LCA3ODA0MywgNzgwNDksIDc4MDU1LCA3ODA2MSwgNzgwNjUsIAorICAgIDc4MDcwLCA3ODA3NSwgNzgwODEsIDc4MDg3LCA3ODA5MywgNzgwOTksIDc4MTA1LCA3ODExMSwgNzgxMTcsIDc4MTIzLCAKKyAgICA3ODEzMSwgNzgxMzcsIDAsIDc4MTQ1LCA3ODE0OSwgNzgxNTQsIDc4MTU4LCA3ODE2MiwgNzgxNjYsIDc4MTcwLCA3ODE3NCwgCisgICAgNzgxNzgsIDc4MTgzLCA3ODE4NywgMCwgMCwgMCwgMCwgNzgxOTIsIDc4MjAwLCA3ODIwNiwgNzgyMTIsIDc4MjE4LCAKKyAgICA3ODIyNCwgNzgyMzAsIDc4MjM2LCA3ODI0MiwgNzgyNDksIDc4MjU2LCA3ODI2MywgNzgyNzAsIDc4Mjc3LCA3ODI4NCwgCisgICAgNzgyOTEsIDc4Mjk4LCA3ODMwNSwgNzgzMTIsIDc4MzE5LCA3ODMyNSwgNzgzMzEsIDc4MzM3LCA3ODM0MywgNzgzNDksIAorICAgIDc4MzU1LCA3ODM2MiwgNzgzNjgsIDc4Mzc1LCA3ODM4MiwgNzgzODksIDc4Mzk2LCA3ODQwMywgMCwgNzg0MTAsIDc4NDE0LCAKKyAgICA3ODQxOCwgNzg0MjIsIDc4NDI2LCA3ODQzMSwgNzg0MzUsIDc4NDM5LCA3ODQ0NCwgNzg0NDksIDc4NDU0LCA3ODQ1OSwgCisgICAgNzg0NjQsIDc4NDY5LCA3ODQ3NCwgNzg0NzksIDc4NDg0LCA3ODQ4OSwgNzg0OTQsIDc4NDk5LCA3ODUwNCwgNzg1MDksIAorICAgIDc4NTE0LCA3ODUxOSwgNzg1MjQsIDc4NTI4LCA3ODUzMywgNzg1MzcsIDc4NTQyLCA3ODU0NywgNzg1NTIsIDc4NTU3LCAKKyAgICA3ODU2MiwgNzg1NjYsIDc4NTcxLCA3ODU3NSwgNzg1ODAsIDc4NTg0LCA3ODU4OSwgNzg1OTQsIDc4NTk5LCA3ODYwMywgCisgICAgNzg2MDksIDc4NjE0LCA3ODYyMCwgNzg2MjYsIDc4NjMxLCA3ODYzNywgNzg2NDIsIDc4NjQ4LCA3ODY1NCwgNzg2NjAsIAorICAgIDc4NjY1LCA3ODY3MSwgNzg2NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4NjgyLCA3ODY4OCwgNzg2OTQsIAorICAgIDc4NzAwLCA3ODcwNywgNzg3MTMsIDc4NzE5LCA3ODcyNSwgNzg3MzEsIDc4NzM3LCA3ODc0MiwgNzg3NDcsIDc4NzUzLCAKKyAgICA3ODc2MCwgMCwgMCwgNzg3NjcsIDc4NzcyLCA3ODc3NiwgNzg3ODAsIDc4Nzg0LCA3ODc4OCwgNzg3OTIsIDc4Nzk2LCAKKyAgICA3ODgwMSwgNzg4MDUsIDAsIDAsIDc4ODEwLCA3ODgxNiwgNzg4MjIsIDc4ODI5LCA3ODgzNywgNzg4NDMsIDc4ODQ5LCAKKyAgICA3ODg1NSwgNzg4NjEsIDc4ODY3LCA3ODg3MywgNzg4NzksIDc4ODg1LCA3ODg5MSwgNzg4OTcsIDc4OTAzLCA3ODkwOCwgCisgICAgNzg5MTQsIDc4OTE5LCA3ODkyNSwgNzg5MzEsIDc4OTM4LCA3ODk0NCwgNzg5NTAsIDc4OTU2LCA3ODk2MywgNzg5NzAsIAorICAgIDc4OTc3LCA3ODk4MywgNzg5ODgsIDc4OTkzLCA3ODk5OSwgNzkwMDcsIDc5MDE0LCA3OTAyMSwgNzkwMjksIDc5MDM3LCAKKyAgICA3OTA0NCwgNzkwNTEsIDc5MDU4LCA3OTA2NSwgNzkwNzIsIDc5MDc5LCA3OTA4NiwgNzkwOTMsIDc5MTAwLCA3OTEwNywgCisgICAgNzkxMTQsIDc5MTIxLCA3OTEyOCwgNzkxMzUsIDc5MTQyLCA3OTE0OSwgNzkxNTYsIDc5MTYzLCA3OTE3MCwgNzkxNzcsIAorICAgIDc5MTgzLCA3OTE4OSwgNzkxOTYsIDc5MjAzLCA3OTIxMCwgNzkyMTcsIDc5MjI0LCA3OTIzMSwgNzkyMzgsIDc5MjQ1LCAKKyAgICA3OTI1MiwgNzkyNTksIDc5MjY2LCA3OTI3MywgNzkyODAsIDc5Mjg3LCA3OTI5NCwgNzkzMDEsIDc5MzA4LCA3OTMxNSwgCisgICAgNzkzMjIsIDc5MzI5LCA3OTMzNiwgNzkzNDMsIDc5MzUwLCA3OTM1NywgNzkzNjMsIDc5MzY5LCA3OTM3NiwgNzkzODIsIAorICAgIDc5Mzg3LCA3OTM5MywgNzkzOTgsIDc5NDAzLCA3OTQwOCwgNzk0MTUsIDc5NDIxLCA3OTQyNywgNzk0MzMsIDc5NDM5LCAKKyAgICA3OTQ0NSwgNzk0NTEsIDc5NDU3LCA3OTQ2NSwgNzk0NzMsIDc5NDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQ4OSwgNzk0OTUsIDc5NTAxLCA3OTUwNywgCisgICAgNzk1MTUsIDc5NTIzLCA3OTUyOSwgNzk1MzUsIDc5NTQyLCA3OTU0OSwgNzk1NTYsIDc5NTYzLCA3OTU3MCwgNzk1NzcsIAorICAgIDc5NTg0LCA3OTU5MSwgNzk1OTgsIDc5NjA2LCA3OTYxNCwgNzk2MjIsIDc5NjMwLCA3OTYzOCwgNzk2NDQsIDc5NjUyLCAKKyAgICA3OTY1OCwgNzk2NjYsIDc5Njc1LCA3OTY4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzk2ODksIDc5NjkzLCAKKyAgICA3OTY5NywgNzk3MDEsIDc5NzA1LCA3OTcwOSwgMCwgMCwgNzk3MTMsIDc5NzE3LCA3OTcyMSwgNzk3MjUsIDc5NzI5LCAKKyAgICA3OTczMywgMCwgMCwgNzk3MzcsIDc5NzQxLCA3OTc0NSwgNzk3NDksIDc5NzUzLCA3OTc1NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNzk3NjEsIDc5NzY1LCA3OTc2OSwgNzk3NzMsIDc5Nzc3LCA3OTc4MSwgNzk3ODUsIDAsIDc5Nzg5LCAKKyAgICA3OTc5MywgNzk3OTcsIDc5ODAxLCA3OTgwNSwgNzk4MDksIDc5ODEzLCAwLCA3OTgxNywgNzk4MjQsIDc5ODMwLCA3OTgzNiwgCisgICAgNzk4NDIsIDc5ODQ5LCA3OTg1NiwgNzk4NjUsIDc5ODc3LCA3OTg4NywgNzk4OTYsIDc5OTA0LCA3OTkxMiwgNzk5MjAsIAorICAgIDc5OTI2LCA3OTkzNCwgNzk5NDEsIDc5OTQ4LCA3OTk1NywgNzk5NjgsIDc5OTc2LCA3OTk4NiwgNzk5OTIsIDgwMDAyLCAKKyAgICA4MDAxMSwgODAwMTYsIDgwMDI0LCA4MDAzMywgODAwMzgsIDgwMDQ3LCA4MDA1NCwgODAwNjQsIDgwMDc2LCA4MDA4MSwgCisgICAgODAwODgsIDgwMDk1LCA4MDEwMCwgODAxMTAsIDgwMTIwLCA4MDEzMCwgODAxNDAsIDgwMTU1LCA4MDE2OCwgODAxNzksIAorICAgIDgwMTg3LCA4MDE5MiwgODAyMDQsIDgwMjEzLCA4MDIyMCwgODAyMjcsIDgwMjMzLCA4MDIzOSwgODAyNDQsIDgwMjUxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDI1NywgODAyNjEsIDgwMjY1LCA4MDI2OSwgODAyNzMsIDgwMjc3LCAKKyAgICA4MDI4MiwgODAyODcsIDgwMjkxLCA4MDI5NiwgODAzMDEsIDgwMzA2LCA4MDMxMSwgODAzMTYsIDgwMzIwLCA4MDMyNSwgCisgICAgODAzMzAsIDgwMzM1LCA4MDM0MCwgODAzNDUsIDgwMzQ5LCA4MDM1NCwgODAzNTksIDgwMzY0LCA4MDM2OSwgODAzNzQsIAorICAgIDgwMzc4LCA4MDM4MywgODAzODgsIDgwMzkzLCA4MDM5OCwgODA0MDIsIDgwNDA3LCA4MDQxMiwgODA0MTcsIDgwNDIyLCAKKyAgICA4MDQyNywgODA0MzIsIDgwNDM3LCA4MDQ0MiwgODA0NDcsIDgwNDUyLCA4MDQ1NywgODA0NjIsIDgwNDY3LCA4MDQ3MiwgCisgICAgODA0NzcsIDgwNDgyLCA4MDQ4NywgODA0OTIsIDgwNDk3LCA4MDUwMiwgODA1MDcsIDgwNTEyLCA4MDUxNywgODA1MjIsIAorICAgIDgwNTI3LCA4MDUzMiwgODA1MzcsIDgwNTQyLCA4MDU0NywgODA1NTIsIDgwNTU3LCA4MDU2MiwgODA1NjcsIDgwNTcyLCAKKyAgICA4MDU3NywgODA1ODIsIDgwNTg3LCA4MDU5MiwgODA1OTcsIDgwNjAyLCA4MDYwNywgODA2MTIsIDgwNjE3LCA4MDYyMiwgCisgICAgODA2MjcsIDgwNjMyLCA4MDYzNywgODA2NDIsIDgwNjQ2LCA4MDY1MywgODA2NjAsIDgwNjY3LCA4MDY3NCwgODA2ODAsIAorICAgIDgwNjg2LCA4MDY5MywgODA3MDAsIDgwNzA3LCA4MDcxNCwgODA3MjEsIDgwNzI4LCA4MDczNSwgODA3NDIsIDgwNzQ5LCAKKyAgICA4MDc1NSwgODA3NjIsIDgwNzY5LCA4MDc3NiwgODA3ODMsIDgwNzkwLCA4MDc5NywgODA4MDQsIDgwODExLCA4MDgxOCwgCisgICAgODA4MjUsIDgwODMyLCA4MDg0MSwgODA4NTAsIDgwODU5LCA4MDg2OCwgODA4NzcsIDgwODg2LCA4MDg5NSwgODA5MDQsIAorICAgIDgwOTEyLCA4MDkyMCwgODA5MjgsIDgwOTM2LCA4MDk0NCwgODA5NTIsIDgwOTYwLCA4MDk2OCwgODA5NzQsIDgwOTgyLCAwLCAKKyAgICAwLCA4MDk5MCwgODA5OTcsIDgxMDAzLCA4MTAwOSwgODEwMTUsIDgxMDIxLCA4MTAyNywgODEwMzMsIDgxMDQwLCA4MTA0NiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xODMwMCw2MTggKzE5NDE5LDYzNCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwMjMwLCA4MDIzNCwgODAyMzgsIDgwMjQyLCAKLSAgICA4MDI0NiwgODAyNTAsIDgwMjU0LCA4MDI1OCwgODAyNjIsIDgwMjY2LCA4MDI3MCwgODAyNzQsIDgwMjc4LCA4MDI4MiwgCi0gICAgODAyODYsIDgwMjkwLCA4MDI5NCwgODAyOTgsIDgwMzAyLCA4MDMwNiwgODAzMTAsIDgwMzE0LCA4MDMxOCwgMCwgMCwgMCwgCi0gICAgMCwgODAzMjIsIDgwMzI2LCA4MDMzMCwgODAzMzQsIDgwMzM4LCA4MDM0MiwgODAzNDYsIDgwMzUwLCA4MDM1NCwgODAzNTgsIAotICAgIDgwMzYyLCA4MDM2NiwgODAzNzAsIDgwMzc0LCA4MDM3OCwgODAzODIsIDgwMzg2LCA4MDM5MCwgODAzOTQsIDgwMzk4LCAKLSAgICA4MDQwMiwgODA0MDYsIDgwNDEwLCA4MDQxNCwgODA0MTgsIDgwNDIyLCA4MDQyNiwgODA0MzAsIDgwNDM0LCA4MDQzOCwgCi0gICAgODA0NDIsIDgwNDQ2LCA4MDQ1MCwgODA0NTQsIDgwNDU4LCA4MDQ2MiwgODA0NjYsIDgwNDcwLCA4MDQ3NCwgODA0NzgsIAotICAgIDgwNDgyLCA4MDQ4NiwgODA0OTAsIDgwNDk0LCA4MDQ5OCwgODA1MDIsIDgwNTA2LCA4MDUxMCwgODA1MTQsIDAsIDAsIDAsIAotICAgIDAsIDgwNTE4LCA4MDUyMiwgODA1MjYsIDgwNTMwLCA4MDUzNCwgODA1MzgsIDgwNTQyLCA4MDU0NiwgODA1NTAsIDgwNTU0LCAKLSAgICA4MDU1OCwgODA1NjIsIDgwNTY2LCA4MDU3MCwgODA1NzQsIDgwNTc4LCA4MDU4MiwgODA1ODYsIDgwNTkwLCA4MDU5NCwgCi0gICAgODA1OTgsIDgwNjAyLCA4MDYwNiwgODA2MTAsIDgwNjE0LCA4MDYxOCwgODA2MjIsIDgwNjI2LCA4MDYzMCwgODA2MzQsIAotICAgIDgwNjM4LCA4MDY0MiwgODA2NDYsIDgwNjUwLCA4MDY1NCwgODA2NTgsIDgwNjYyLCA4MDY2NiwgODA2NzAsIDgwNjc0LCAKLSAgICA4MDY3OCwgODA2ODIsIDgwNjg2LCA4MDY5MCwgODA2OTQsIDgwNjk4LCA4MDcwMiwgODA3MDYsIDgwNzEwLCA4MDcxNCwgCi0gICAgODA3MTgsIDgwNzIyLCA4MDcyNiwgODA3MzAsIDgwNzM0LCA4MDczOCwgODA3NDIsIDgwNzQ2LCA4MDc1MCwgODA3NTQsIAotICAgIDgwNzU4LCA4MDc2MiwgODA3NjYsIDgwNzcwLCA4MDc3NCwgODA3NzgsIDgwNzgyLCA4MDc4NiwgODA3OTAsIDgwNzk0LCAKLSAgICA4MDc5OCwgODA4MDIsIDgwODA2LCA4MDgxMCwgODA4MTQsIDgwODE4LCA4MDgyMiwgODA4MjYsIDgwODMwLCA4MDgzNCwgCi0gICAgODA4MzgsIDgwODQyLCA4MDg0NiwgODA4NTAsIDgwODU0LCA4MDg1OCwgODA4NjIsIDgwODY2LCA4MDg3MCwgODA4NzQsIAotICAgIDgwODc4LCA4MDg4MiwgODA4ODYsIDgwODkwLCA4MDg5NCwgODA4OTgsIDgwOTAyLCA4MDkwNiwgODA5MTAsIDgwOTE0LCAKLSAgICA4MDkxOCwgODA5MjIsIDgwOTI2LCA4MDkzMCwgODA5MzQsIDgwOTM4LCA4MDk0MiwgODA5NDYsIDgwOTUwLCA4MDk1NCwgCi0gICAgODA5NTgsIDgwOTYyLCA4MDk2NiwgODA5NzAsIDgwOTc0LCA4MDk3OCwgODA5ODIsIDgwOTg2LCA4MDk5MCwgODA5OTQsIAotICAgIDgwOTk4LCA4MTAwMiwgODEwMDYsIDgxMDEwLCA4MTAxNCwgODEwMTgsIDgxMDIyLCA4MTAyNiwgODEwMzAsIDgxMDM0LCAKLSAgICA4MTAzOCwgODEwNDIsIDgxMDQ2LCA4MTA1MCwgODEwNTQsIDgxMDU4LCA4MTA2MiwgODEwNjYsIDgxMDcwLCA4MTA3NCwgCi0gICAgODEwNzgsIDgxMDgyLCA4MTA4NiwgODEwOTAsIDgxMDk0LCA4MTA5OCwgODExMDIsIDgxMTA2LCA4MTExMCwgODExMTQsIAotICAgIDgxMTE4LCA4MTEyMiwgODExMjYsIDgxMTMwLCA4MTEzNCwgODExMzgsIDgxMTQyLCA4MTE0NiwgODExNTAsIDgxMTU0LCAKLSAgICA4MTE1OCwgODExNjIsIDgxMTY2LCA4MTE3MCwgODExNzQsIDgxMTc4LCA4MTE4MiwgODExODYsIDgxMTkwLCA4MTE5NCwgCi0gICAgODExOTgsIDgxMjAyLCA4MTIwNiwgODEyMTAsIDgxMjE0LCA4MTIxOCwgODEyMjIsIDgxMjI2LCA4MTIzMCwgODEyMzQsIAotICAgIDgxMjM4LCA4MTI0MiwgODEyNDYsIDgxMjUwLCA4MTI1NCwgODEyNTgsIDgxMjYyLCA4MTI2NiwgODEyNzAsIDgxMjc0LCAKLSAgICA4MTI3OCwgODEyODIsIDgxMjg2LCA4MTI5MCwgODEyOTQsIDgxMjk4LCA4MTMwMiwgODEzMDYsIDgxMzEwLCA4MTMxNCwgCi0gICAgODEzMTgsIDgxMzIyLCA4MTMyNiwgODEzMzAsIDgxMzM0LCA4MTMzOCwgODEzNDIsIDgxMzQ2LCA4MTM1MCwgODEzNTQsIAotICAgIDgxMzU4LCA4MTM2MiwgODEzNjYsIDgxMzcwLCA4MTM3NCwgODEzNzgsIDgxMzgyLCA4MTM4NiwgODEzOTAsIDgxMzk0LCAKLSAgICA4MTM5OCwgODE0MDIsIDgxNDA2LCA4MTQxMCwgODE0MTQsIDgxNDE4LCA4MTQyMiwgODE0MjYsIDgxNDMwLCA4MTQzNCwgCi0gICAgODE0MzgsIDgxNDQyLCA4MTQ0NiwgODE0NTAsIDgxNDU0LCA4MTQ1OCwgODE0NjIsIDgxNDY2LCA4MTQ3MCwgODE0NzQsIAotICAgIDgxNDc4LCA4MTQ4MiwgODE0ODYsIDgxNDkwLCA4MTQ5NCwgODE0OTgsIDgxNTAyLCA4MTUwNiwgODE1MTAsIDgxNTE0LCAKLSAgICA4MTUxOCwgODE1MjIsIDgxNTI2LCA4MTUzMCwgODE1MzQsIDgxNTM4LCA4MTU0MiwgODE1NDYsIDgxNTUwLCA4MTU1NCwgCi0gICAgODE1NTgsIDgxNTYyLCA4MTU2NiwgODE1NzAsIDgxNTc0LCA4MTU3OCwgODE1ODIsIDgxNTg2LCA4MTU5MCwgODE1OTQsIAotICAgIDgxNTk4LCA4MTYwMiwgODE2MDYsIDgxNjEwLCA4MTYxNCwgODE2MTgsIDgxNjIyLCA4MTYyNiwgODE2MzAsIDgxNjM0LCAKLSAgICA4MTYzOCwgODE2NDIsIDgxNjQ2LCA4MTY1MCwgODE2NTQsIDgxNjU4LCA4MTY2MiwgODE2NjYsIDgxNjcwLCA4MTY3NCwgCi0gICAgODE2NzgsIDgxNjgyLCA4MTY4NiwgODE2OTAsIDgxNjk0LCA4MTY5OCwgODE3MDIsIDgxNzA2LCA4MTcxMCwgODE3MTQsIAotICAgIDgxNzE4LCA4MTcyMiwgODE3MjYsIDgxNzMwLCA4MTczNCwgODE3MzgsIDgxNzQyLCA4MTc0NiwgODE3NTAsIDgxNzU0LCAKLSAgICA4MTc1OCwgODE3NjIsIDgxNzY2LCA4MTc3MCwgODE3NzQsIDgxNzc4LCA4MTc4MiwgODE3ODYsIDgxNzkwLCA4MTc5NCwgCi0gICAgODE3OTgsIDgxODAyLCA4MTgwNiwgODE4MTAsIDgxODE0LCA4MTgxOCwgODE4MjIsIDgxODI2LCA4MTgzMCwgODE4MzQsIAotICAgIDgxODM4LCA4MTg0MiwgODE4NDYsIDgxODUwLCA4MTg1NCwgODE4NTgsIDgxODYyLCA4MTg2NiwgODE4NzAsIDgxODc0LCAKLSAgICA4MTg3OCwgODE4ODIsIDgxODg2LCA4MTg5MCwgODE4OTQsIDgxODk4LCA4MTkwMiwgODE5MDYsIDgxOTEwLCA4MTkxNCwgCi0gICAgODE5MTgsIDgxOTIyLCA4MTkyNiwgODE5MzAsIDgxOTM0LCA4MTkzOCwgODE5NDIsIDgxOTQ2LCA4MTk1MCwgODE5NTQsIAotICAgIDgxOTU4LCA4MTk2MiwgODE5NjYsIDgxOTcwLCA4MTk3NCwgODE5NzgsIDAsIDAsIDgxOTgyLCA4MTk4NiwgODE5OTAsIAotICAgIDgxOTk0LCA4MTk5OCwgODIwMDIsIDgyMDA2LCA4MjAxMCwgODIwMTQsIDgyMDE4LCA4MjAyMiwgODIwMjYsIDgyMDMwLCAKLSAgICA4MjAzNCwgODIwMzgsIDgyMDQyLCA4MjA0NiwgODIwNTAsIDgyMDU0LCA4MjA1OCwgODIwNjIsIDgyMDY2LCA4MjA3MCwgCi0gICAgODIwNzQsIDgyMDc4LCA4MjA4MiwgODIwODYsIDgyMDkwLCA4MjA5NCwgODIwOTgsIDgyMTAyLCA4MjEwNiwgODIxMTAsIAotICAgIDgyMTE0LCA4MjExOCwgODIxMjIsIDgyMTI2LCA4MjEzMCwgODIxMzQsIDgyMTM4LCA4MjE0MiwgODIxNDYsIDgyMTUwLCAKLSAgICA4MjE1NCwgODIxNTgsIDgyMTYyLCA4MjE2NiwgODIxNzAsIDgyMTc0LCA4MjE3OCwgODIxODIsIDgyMTg2LCA4MjE5MCwgCi0gICAgODIxOTQsIDgyMTk4LCA4MjIwMiwgODIyMDYsIDgyMjEwLCA4MjIxNCwgODIyMTgsIDgyMjIyLCA4MjIyNiwgODIyMzAsIAotICAgIDgyMjM0LCA4MjIzOCwgODIyNDIsIDgyMjQ2LCA4MjI1MCwgODIyNTQsIDgyMjU4LCA4MjI2MiwgODIyNjYsIDgyMjcwLCAKLSAgICA4MjI3NCwgODIyNzgsIDgyMjgyLCA4MjI4NiwgODIyOTAsIDgyMjk0LCA4MjI5OCwgODIzMDIsIDgyMzA2LCA4MjMxMCwgCi0gICAgODIzMTQsIDgyMzE4LCA4MjMyMiwgODIzMjYsIDgyMzMwLCA4MjMzNCwgODIzMzgsIDgyMzQyLCA4MjM0NiwgODIzNTAsIAotICAgIDgyMzU0LCA4MjM1OCwgODIzNjIsIDgyMzY2LCA4MjM3MCwgODIzNzQsIDgyMzc4LCA4MjM4MiwgODIzODYsIDgyMzkwLCAKLSAgICA4MjM5NCwgODIzOTgsIDgyNDAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MjQwNiwgCi0gICAgODI0MTEsIDgyNDE2LCA4MjQyMSwgODI0MjYsIDgyNDMxLCA4MjQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODI0NDQsIDgyNDUxLCA4MjQ1OCwgODI0NjUsIDgyNDcyLCAwLCAwLCAwLCAwLCAwLCA4MjQ3OSwgODI0ODYsIAotICAgIDgyNDkzLCA4MjUwMywgODI1MDksIDgyNTE1LCA4MjUyMSwgODI1MjcsIDgyNTMzLCA4MjUzOSwgODI1NDYsIDgyNTUyLCAKLSAgICA4MjU1OCwgODI1NjQsIDgyNTczLCA4MjU4MiwgODI1OTQsIDgyNjA2LCA4MjYxMiwgODI2MTgsIDgyNjI0LCA4MjYzMSwgCi0gICAgODI2MzgsIDgyNjQ1LCA4MjY1MiwgODI2NTksIDAsIDgyNjY2LCA4MjY3MywgODI2ODAsIDgyNjg4LCA4MjY5NSwgMCwgCi0gICAgODI3MDIsIDAsIDgyNzA5LCA4MjcxNiwgMCwgODI3MjMsIDgyNzMxLCAwLCA4MjczOCwgODI3NDUsIDgyNzUyLCA4Mjc1OSwgCi0gICAgODI3NjYsIDgyNzczLCA4Mjc4MCwgODI3ODcsIDgyNzk0LCA4MjgwMSwgODI4MDYsIDgyODEzLCA4MjgyMCwgODI4MjYsIAotICAgIDgyODMyLCA4MjgzOCwgODI4NDQsIDgyODUwLCA4Mjg1NiwgODI4NjIsIDgyODY4LCA4Mjg3NCwgODI4ODAsIDgyODg2LCAKLSAgICA4Mjg5MiwgODI4OTgsIDgyOTA0LCA4MjkxMCwgODI5MTYsIDgyOTIyLCA4MjkyOCwgODI5MzQsIDgyOTQwLCA4Mjk0NiwgCi0gICAgODI5NTIsIDgyOTU4LCA4Mjk2NCwgODI5NzAsIDgyOTc2LCA4Mjk4MiwgODI5ODgsIDgyOTk0LCA4MzAwMCwgODMwMDYsIAotICAgIDgzMDEyLCA4MzAxOCwgODMwMjQsIDgzMDMwLCA4MzAzNiwgODMwNDIsIDgzMDQ4LCA4MzA1NCwgODMwNjAsIDgzMDY2LCAKLSAgICA4MzA3MiwgODMwNzgsIDgzMDg0LCA4MzA5MCwgODMwOTYsIDgzMTAyLCA4MzEwOCwgODMxMTQsIDgzMTIwLCA4MzEyNiwgCi0gICAgODMxMzIsIDgzMTM4LCA4MzE0NCwgODMxNTAsIDgzMTU2LCA4MzE2MiwgODMxNjgsIDgzMTc0LCA4MzE4MCwgODMxODYsIAotICAgIDgzMTkyLCA4MzE5OCwgODMyMDQsIDgzMjEwLCA4MzIxNiwgODMyMjIsIDgzMjI4LCA4MzIzNCwgODMyNDAsIDgzMjQ2LCAKLSAgICA4MzI1MiwgODMyNTgsIDgzMjY0LCA4MzI3MCwgODMyNzYsIDgzMjg0LCA4MzI5MiwgODMyOTgsIDgzMzA0LCA4MzMxMCwgCi0gICAgODMzMTYsIDgzMzI1LCA4MzMzNCwgODMzNDIsIDgzMzUwLCA4MzM1OCwgODMzNjYsIDgzMzc0LCA4MzM4MiwgODMzOTAsIAotICAgIDgzMzk4LCA4MzQwNSwgODM0MTIsIDgzNDIzLCA4MzQzNCwgODM0MzgsIDgzNDQyLCA4MzQ0NywgODM0NTIsIDgzNDU3LCAKLSAgICA4MzQ2MiwgODM0NzAsIDgzNDc4LCA4MzQ4NCwgODM0OTAsIDgzNDk3LCA4MzUwNCwgODM1MTEsIDgzNTE1LCA4MzUyMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODM1MjcsIDgzNTMzLCA4MzUzOSwgCi0gICAgODM1NDUsIDgzNTUxLCA4MzU1NiwgODM1NjEsIDgzNTY3LCA4MzU3MywgODM1NzksIDgzNTg1LCA4MzU5NCwgODM2MDAsIAotICAgIDgzNjA2LCA4MzYxNCwgODM2MjIsIDgzNjMwLCA4MzYzOCwgODM2NDMsIDgzNjQ4LCA4MzY1MywgODM2NTgsIDgzNjcxLCAKLSAgICA4MzY4NCwgODM2OTUsIDgzNzA2LCA4MzcxOCwgODM3MzAsIDgzNzQyLCA4Mzc1NCwgODM3NjUsIDgzNzc2LCA4Mzc4OCwgCi0gICAgODM4MDAsIDgzODEyLCA4MzgyNCwgODM4MzUsIDgzODQ2LCA4Mzg1NywgODM4NzQsIDgzODkxLCA4MzkwOCwgODM5MTUsIAotICAgIDgzOTIyLCA4MzkyOSwgODM5MzYsIDgzOTQ3LCA4Mzk1OCwgODM5NjksIDgzOTgyLCA4Mzk5MywgODQwMDEsIDg0MDA5LCAKLSAgICA4NDAxOCwgODQwMjYsIDg0MDM2LCA4NDA0NCwgODQwNTIsIDg0MDYwLCA4NDA2OSwgODQwNzcsIDg0MDg3LCA4NDA5NSwgCi0gICAgODQxMDMsIDg0MTExLCA4NDEyMSwgODQxMjksIDg0MTM2LCA4NDE0MywgODQxNTAsIDg0MTU3LCA4NDE2NSwgODQxNzMsIAotICAgIDg0MTgxLCA4NDE4OSwgODQxOTcsIDg0MjA2LCA4NDIxNCwgODQyMjIsIDg0MjMwLCA4NDIzOCwgODQyNDYsIDg0MjU1LCAKLSAgICA4NDI2MywgODQyNzEsIDg0Mjc5LCA4NDI4NywgODQyOTUsIDg0MzAzLCA4NDMxMSwgODQzMTksIDg0MzI3LCA4NDMzNSwgCi0gICAgODQzNDQsIDg0MzUyLCA4NDM2MiwgODQzNzAsIDg0Mzc4LCA4NDM4NiwgODQzOTYsIDg0NDA0LCA4NDQxMiwgODQ0MjAsIAotICAgIDg0NDI4LCA4NDQzNywgODQ0NDYsIDg0NDU0LCA4NDQ2NCwgODQ0NzIsIDg0NDgwLCA4NDQ4OCwgODQ0OTcsIDg0NTA1LCAKLSAgICA4NDUxNSwgODQ1MjMsIDg0NTMwLCA4NDUzNywgODQ1NDUsIDg0NTUyLCA4NDU2MSwgODQ1NjgsIDg0NTc2LCA4NDU4NCwgCi0gICAgODQ1OTMsIDg0NjAxLCA4NDYxMSwgODQ2MTksIDg0NjI3LCA4NDYzNSwgODQ2NDUsIDg0NjUzLCA4NDY2MCwgODQ2NjcsIAotICAgIDg0Njc1LCA4NDY4MiwgODQ2OTEsIDg0Njk4LCA4NDcwOCwgODQ3MTgsIDg0NzI5LCA4NDczOCwgODQ3NDcsIDg0NzU2LCAKLSAgICA4NDc2NSwgODQ3NzQsIDg0Nzg0LCA4NDc5NiwgODQ4MDgsIDg0ODE5LCA4NDgzMSwgODQ4NDQsIDg0ODU1LCA4NDg2NCwgCi0gICAgODQ4NzMsIDg0ODgxLCA4NDg5MCwgODQ5MDAsIDg0OTA4LCA4NDkxNywgODQ5MjYsIDg0OTM0LCA4NDk0MywgODQ5NTMsIAotICAgIDg0OTYxLCA4NDk3MCwgODQ5NzksIDg0OTg3LCA4NDk5NiwgODUwMDYsIDg1MDE0LCA4NTAyNCwgODUwMzIsIDg1MDQyLCAKLSAgICA4NTA1MCwgODUwNTgsIDg1MDY3LCA4NTA3NSwgODUwODUsIDg1MDkzLCA4NTEwMSwgODUxMTEsIDg1MTE5LCA4NTEyNiwgCi0gICAgODUxMzMsIDg1MTQyLCA4NTE1MSwgODUxNTksIDg1MTY4LCA4NTE3OCwgODUxODYsIDg1MTk3LCA4NTIwNSwgODUyMTMsIAotICAgIDg1MjIwLCA4NTIyOCwgODUyMzcsIDg1MjQ0LCA4NTI1NSwgODUyNjYsIDg1Mjc4LCA4NTI4OSwgODUzMDEsIDg1MzA5LCAKLSAgICA4NTMxNywgODUzMjYsIDg1MzM0LCA4NTM0MywgODUzNTEsIDg1MzU5LCA4NTM2OCwgODUzNzYsIDg1Mzg1LCA4NTM5MywgCi0gICAgODU0MDAsIDg1NDA3LCA4NTQxNCwgODU0MjEsIDg1NDI5LCA4NTQzNywgODU0NDUsIDg1NDUzLCA4NTQ2MiwgODU0NzAsIAotICAgIDg1NDc4LCA4NTQ4NywgODU0OTUsIDg1NTAzLCA4NTUxMSwgODU1MjAsIDg1NTI4LCA4NTUzNiwgODU1NDQsIDg1NTUyLCAKLSAgICA4NTU2MCwgODU1NjgsIDg1NTc2LCA4NTU4NCwgODU1OTIsIDg1NjAxLCA4NTYwOSwgODU2MTcsIDg1NjI1LCA4NTYzMywgCi0gICAgODU2NDEsIDg1NjUwLCA4NTY1OSwgODU2NjcsIDg1Njc1LCA4NTY4MywgODU2OTIsIDg1NzAwLCA4NTcwOSwgODU3MTYsIAotICAgIDg1NzIzLCA4NTczMSwgODU3MzgsIDg1NzQ2LCA4NTc1NCwgODU3NjMsIDg1NzcxLCA4NTc4MCwgODU3ODgsIDg1Nzk2LCAKLSAgICA4NTgwNiwgODU4MTMsIDg1ODIwLCA4NTgyOCwgODU4MzUsIDg1ODQzLCA4NTg1NCwgODU4NjYsIDg1ODc0LCA4NTg4MywgCi0gICAgODU4OTEsIDg1OTAwLCA4NTkwOCwgODU5MTcsIDg1OTI1LCA4NTkzNCwgODU5NDIsIDg1OTUxLCA4NTk2MCwgODU5NjgsIAotICAgIDg1OTc2LCA4NTk4NCwgODU5OTMsIDg2MDAwLCA4NjAwOCwgODYwMTcsIDg2MDI2LCA4NjAzNSwgODYwNDUsIDg2MDUzLCAKLSAgICA4NjA2MywgODYwNzEsIDg2MDgxLCA4NjA4OSwgODYwOTksIDg2MTA3LCA4NjExNywgODYxMjUsIDg2MTM0LCA4NjE0MSwgCi0gICAgODYxNTAsIDg2MTU3LCA4NjE2NywgODYxNzUsIDg2MTg1LCA4NjE5MywgODYyMDMsIDg2MjExLCA4NjIxOSwgODYyMjcsIAotICAgIDg2MjM2LCA4NjI0NCwgODYyNTMsIDg2MjYyLCA4NjI3MSwgODYyODAsIDg2MjkwLCA4NjI5OCwgODYzMDgsIDg2MzE2LCAKLSAgICA4NjMyNiwgODYzMzQsIDg2MzQ0LCA4NjM1MiwgODYzNjIsIDg2MzcwLCA4NjM3OSwgODYzODYsIDg2Mzk1LCA4NjQwMiwgCi0gICAgODY0MTIsIDg2NDIwLCA4NjQzMCwgODY0MzgsIDg2NDQ4LCA4NjQ1NiwgODY0NjQsIDg2NDcyLCA4NjQ4MSwgODY0ODksIAotICAgIDg2NDk4LCA4NjUwNywgODY1MTYsIDg2NTI1LCA4NjUzMywgODY1NDEsIDg2NTUwLCA4NjU1OCwgODY1NjcsIDg2NTc2LCAKLSAgICA4NjU4NCwgODY1OTIsIDg2NjAwLCA4NjYwOSwgODY2MTcsIDg2NjI1LCA4NjYzNCwgODY2NDIsIDg2NjUwLCA4NjY1OCwgCi0gICAgODY2NjYsIDg2NjcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjY3NiwgCi0gICAgODY2ODYsIDg2Njk2LCA4NjcwNiwgODY3MTYsIDg2NzI3LCA4NjczNywgODY3NDcsIDg2NzU4LCA4Njc2NywgODY3NzYsIAotICAgIDg2Nzg1LCA4Njc5NiwgODY4MDYsIDg2ODE2LCA4NjgyOCwgODY4MzgsIDg2ODQ4LCA4Njg1OCwgODY4NjgsIDg2ODc4LCAKLSAgICA4Njg4OCwgODY4OTgsIDg2OTA4LCA4NjkxOCwgODY5MjgsIDg2OTM4LCA4Njk0OSwgODY5NjAsIDg2OTcwLCA4Njk4MCwgCi0gICAgODY5OTIsIDg3MDAzLCA4NzAxNCwgODcwMjQsIDg3MDM0LCA4NzA0NCwgODcwNTQsIDg3MDY0LCA4NzA3NCwgODcwODQsIAotICAgIDg3MDk2LCA4NzEwNiwgODcxMTYsIDg3MTI4LCA4NzEzOSwgODcxNTAsIDg3MTYwLCA4NzE3MCwgODcxODAsIDg3MTkwLCAKLSAgICA4NzIwMiwgODcyMTIsIDg3MjIyLCA4NzIzMywgODcyNDQsIDg3MjU0LCA4NzI2NCwgODcyNzMsIDg3MjgyLCA4NzI5MSwgCi0gICAgODczMDAsIDg3MzA5LCA4NzMxOSwgMCwgMCwgODczMjksIDg3MzM5LCA4NzM0OSwgODczNTksIDg3MzY5LCA4NzM4MSwgCi0gICAgODczOTEsIDg3NDAxLCA4NzQxMywgODc0MjMsIDg3NDM1LCA4NzQ0NCwgODc0NTMsIDg3NDY0LCA4NzQ3NCwgODc0ODYsIAotICAgIDg3NDk3LCA4NzUxMCwgODc1MjAsIDg3NTMyLCA4NzU0MSwgODc1NTIsIDg3NTYzLCA4NzU3NiwgODc1ODYsIDg3NTk2LCAKLSAgICA4NzYwNiwgODc2MTYsIDg3NjI2LCA4NzYzNSwgODc2NDQsIDg3NjUzLCA4NzY2MiwgODc2NzIsIDg3NjgyLCA4NzY5MiwgCi0gICAgODc3MDIsIDg3NzEyLCA4NzcyMiwgODc3MzIsIDg3NzQyLCA4Nzc1MiwgODc3NjIsIDg3NzcyLCA4Nzc4MiwgODc3OTEsIAotICAgIDg3ODAwLCA4NzgwOSwgODc4MTksIDg3ODI5LCA4NzgzOSwgODc4NDksIDg3ODU5LCA4Nzg3MCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEwNTMsIDgxMDU3LCA4MTA2MSwgODEwNjUsIAorICAgIDgxMDY5LCA4MTA3MywgODEwNzcsIDgxMDgxLCA4MTA4NSwgODEwODksIDgxMDkzLCA4MTA5NywgODExMDEsIDgxMTA1LCAKKyAgICA4MTEwOSwgODExMTMsIDgxMTE3LCA4MTEyMSwgODExMjUsIDgxMTI5LCA4MTEzMywgODExMzcsIDgxMTQxLCAwLCAwLCAwLCAKKyAgICAwLCA4MTE0NSwgODExNDksIDgxMTUzLCA4MTE1NywgODExNjEsIDgxMTY1LCA4MTE2OSwgODExNzMsIDgxMTc3LCA4MTE4MSwgCisgICAgODExODUsIDgxMTg5LCA4MTE5MywgODExOTcsIDgxMjAxLCA4MTIwNSwgODEyMDksIDgxMjEzLCA4MTIxNywgODEyMjEsIAorICAgIDgxMjI1LCA4MTIyOSwgODEyMzMsIDgxMjM3LCA4MTI0MSwgODEyNDUsIDgxMjQ5LCA4MTI1MywgODEyNTcsIDgxMjYxLCAKKyAgICA4MTI2NSwgODEyNjksIDgxMjczLCA4MTI3NywgODEyODEsIDgxMjg1LCA4MTI4OSwgODEyOTMsIDgxMjk3LCA4MTMwMSwgCisgICAgODEzMDUsIDgxMzA5LCA4MTMxMywgODEzMTcsIDgxMzIxLCA4MTMyNSwgODEzMjksIDgxMzMzLCA4MTMzNywgMCwgMCwgMCwgCisgICAgMCwgODEzNDEsIDgxMzQ1LCA4MTM0OSwgODEzNTMsIDgxMzU3LCA4MTM2MSwgODEzNjUsIDgxMzY5LCA4MTM3MywgODEzNzcsIAorICAgIDgxMzgxLCA4MTM4NSwgODEzODksIDgxMzkzLCA4MTM5NywgODE0MDEsIDgxNDA1LCA4MTQwOSwgODE0MTMsIDgxNDE3LCAKKyAgICA4MTQyMSwgODE0MjUsIDgxNDI5LCA4MTQzMywgODE0MzcsIDgxNDQxLCA4MTQ0NSwgODE0NDksIDgxNDUzLCA4MTQ1NywgCisgICAgODE0NjEsIDgxNDY1LCA4MTQ2OSwgODE0NzMsIDgxNDc3LCA4MTQ4MSwgODE0ODUsIDgxNDg5LCA4MTQ5MywgODE0OTcsIAorICAgIDgxNTAxLCA4MTUwNSwgODE1MDksIDgxNTEzLCA4MTUxNywgODE1MjEsIDgxNTI1LCA4MTUyOSwgODE1MzMsIDgxNTM3LCAKKyAgICA4MTU0MSwgODE1NDUsIDgxNTQ5LCA4MTU1MywgODE1NTcsIDgxNTYxLCA4MTU2NSwgODE1NjksIDgxNTczLCA4MTU3NywgCisgICAgODE1ODEsIDgxNTg1LCA4MTU4OSwgODE1OTMsIDgxNTk3LCA4MTYwMSwgODE2MDUsIDgxNjA5LCA4MTYxMywgODE2MTcsIAorICAgIDgxNjIxLCA4MTYyNSwgODE2MjksIDgxNjMzLCA4MTYzNywgODE2NDEsIDgxNjQ1LCA4MTY0OSwgODE2NTMsIDgxNjU3LCAKKyAgICA4MTY2MSwgODE2NjUsIDgxNjY5LCA4MTY3MywgODE2NzcsIDgxNjgxLCA4MTY4NSwgODE2ODksIDgxNjkzLCA4MTY5NywgCisgICAgODE3MDEsIDgxNzA1LCA4MTcwOSwgODE3MTMsIDgxNzE3LCA4MTcyMSwgODE3MjUsIDgxNzI5LCA4MTczMywgODE3MzcsIAorICAgIDgxNzQxLCA4MTc0NSwgODE3NDksIDgxNzUzLCA4MTc1NywgODE3NjEsIDgxNzY1LCA4MTc2OSwgODE3NzMsIDgxNzc3LCAKKyAgICA4MTc4MSwgODE3ODUsIDgxNzg5LCA4MTc5MywgODE3OTcsIDgxODAxLCA4MTgwNSwgODE4MDksIDgxODEzLCA4MTgxNywgCisgICAgODE4MjEsIDgxODI1LCA4MTgyOSwgODE4MzMsIDgxODM3LCA4MTg0MSwgODE4NDUsIDgxODQ5LCA4MTg1MywgODE4NTcsIAorICAgIDgxODYxLCA4MTg2NSwgODE4NjksIDgxODczLCA4MTg3NywgODE4ODEsIDgxODg1LCA4MTg4OSwgODE4OTMsIDgxODk3LCAKKyAgICA4MTkwMSwgODE5MDUsIDgxOTA5LCA4MTkxMywgODE5MTcsIDgxOTIxLCA4MTkyNSwgODE5MjksIDgxOTMzLCA4MTkzNywgCisgICAgODE5NDEsIDgxOTQ1LCA4MTk0OSwgODE5NTMsIDgxOTU3LCA4MTk2MSwgODE5NjUsIDgxOTY5LCA4MTk3MywgODE5NzcsIAorICAgIDgxOTgxLCA4MTk4NSwgODE5ODksIDgxOTkzLCA4MTk5NywgODIwMDEsIDgyMDA1LCA4MjAwOSwgODIwMTMsIDgyMDE3LCAKKyAgICA4MjAyMSwgODIwMjUsIDgyMDI5LCA4MjAzMywgODIwMzcsIDgyMDQxLCA4MjA0NSwgODIwNDksIDgyMDUzLCA4MjA1NywgCisgICAgODIwNjEsIDgyMDY1LCA4MjA2OSwgODIwNzMsIDgyMDc3LCA4MjA4MSwgODIwODUsIDgyMDg5LCA4MjA5MywgODIwOTcsIAorICAgIDgyMTAxLCA4MjEwNSwgODIxMDksIDgyMTEzLCA4MjExNywgODIxMjEsIDgyMTI1LCA4MjEyOSwgODIxMzMsIDgyMTM3LCAKKyAgICA4MjE0MSwgODIxNDUsIDgyMTQ5LCA4MjE1MywgODIxNTcsIDgyMTYxLCA4MjE2NSwgODIxNjksIDgyMTczLCA4MjE3NywgCisgICAgODIxODEsIDgyMTg1LCA4MjE4OSwgODIxOTMsIDgyMTk3LCA4MjIwMSwgODIyMDUsIDgyMjA5LCA4MjIxMywgODIyMTcsIAorICAgIDgyMjIxLCA4MjIyNSwgODIyMjksIDgyMjMzLCA4MjIzNywgODIyNDEsIDgyMjQ1LCA4MjI0OSwgODIyNTMsIDgyMjU3LCAKKyAgICA4MjI2MSwgODIyNjUsIDgyMjY5LCA4MjI3MywgODIyNzcsIDgyMjgxLCA4MjI4NSwgODIyODksIDgyMjkzLCA4MjI5NywgCisgICAgODIzMDEsIDgyMzA1LCA4MjMwOSwgODIzMTMsIDgyMzE3LCA4MjMyMSwgODIzMjUsIDgyMzI5LCA4MjMzMywgODIzMzcsIAorICAgIDgyMzQxLCA4MjM0NSwgODIzNDksIDgyMzUzLCA4MjM1NywgODIzNjEsIDgyMzY1LCA4MjM2OSwgODIzNzMsIDgyMzc3LCAKKyAgICA4MjM4MSwgODIzODUsIDgyMzg5LCA4MjM5MywgODIzOTcsIDgyNDAxLCA4MjQwNSwgODI0MDksIDgyNDEzLCA4MjQxNywgCisgICAgODI0MjEsIDgyNDI1LCA4MjQyOSwgODI0MzMsIDgyNDM3LCA4MjQ0MSwgODI0NDUsIDgyNDQ5LCA4MjQ1MywgODI0NTcsIAorICAgIDgyNDYxLCA4MjQ2NSwgODI0NjksIDgyNDczLCA4MjQ3NywgODI0ODEsIDgyNDg1LCA4MjQ4OSwgODI0OTMsIDgyNDk3LCAKKyAgICA4MjUwMSwgODI1MDUsIDgyNTA5LCA4MjUxMywgODI1MTcsIDgyNTIxLCA4MjUyNSwgODI1MjksIDgyNTMzLCA4MjUzNywgCisgICAgODI1NDEsIDgyNTQ1LCA4MjU0OSwgODI1NTMsIDgyNTU3LCA4MjU2MSwgODI1NjUsIDgyNTY5LCA4MjU3MywgODI1NzcsIAorICAgIDgyNTgxLCA4MjU4NSwgODI1ODksIDgyNTkzLCA4MjU5NywgODI2MDEsIDgyNjA1LCA4MjYwOSwgODI2MTMsIDgyNjE3LCAKKyAgICA4MjYyMSwgODI2MjUsIDgyNjI5LCA4MjYzMywgODI2MzcsIDgyNjQxLCA4MjY0NSwgODI2NDksIDgyNjUzLCA4MjY1NywgCisgICAgODI2NjEsIDgyNjY1LCA4MjY2OSwgODI2NzMsIDgyNjc3LCA4MjY4MSwgODI2ODUsIDgyNjg5LCA4MjY5MywgODI2OTcsIAorICAgIDgyNzAxLCA4MjcwNSwgODI3MDksIDgyNzEzLCA4MjcxNywgODI3MjEsIDgyNzI1LCA4MjcyOSwgODI3MzMsIDgyNzM3LCAKKyAgICA4Mjc0MSwgODI3NDUsIDgyNzQ5LCA4Mjc1MywgODI3NTcsIDgyNzYxLCA4Mjc2NSwgODI3NjksIDgyNzczLCA4Mjc3NywgCisgICAgODI3ODEsIDgyNzg1LCA4Mjc4OSwgODI3OTMsIDgyNzk3LCA4MjgwMSwgMCwgMCwgODI4MDUsIDgyODA5LCA4MjgxMywgCisgICAgODI4MTcsIDgyODIxLCA4MjgyNSwgODI4MjksIDgyODMzLCA4MjgzNywgODI4NDEsIDgyODQ1LCA4Mjg0OSwgODI4NTMsIAorICAgIDgyODU3LCA4Mjg2MSwgODI4NjUsIDgyODY5LCA4Mjg3MywgODI4NzcsIDgyODgxLCA4Mjg4NSwgODI4ODksIDgyODkzLCAKKyAgICA4Mjg5NywgODI5MDEsIDgyOTA1LCA4MjkwOSwgODI5MTMsIDgyOTE3LCA4MjkyMSwgODI5MjUsIDgyOTI5LCA4MjkzMywgCisgICAgODI5MzcsIDgyOTQxLCA4Mjk0NSwgODI5NDksIDgyOTUzLCA4Mjk1NywgODI5NjEsIDgyOTY1LCA4Mjk2OSwgODI5NzMsIAorICAgIDgyOTc3LCA4Mjk4MSwgODI5ODUsIDgyOTg5LCA4Mjk5MywgODI5OTcsIDgzMDAxLCA4MzAwNSwgODMwMDksIDgzMDEzLCAKKyAgICA4MzAxNywgODMwMjEsIDgzMDI1LCA4MzAyOSwgODMwMzMsIDgzMDM3LCA4MzA0MSwgODMwNDUsIDgzMDQ5LCA4MzA1MywgCisgICAgODMwNTcsIDgzMDYxLCA4MzA2NSwgODMwNjksIDgzMDczLCA4MzA3NywgODMwODEsIDgzMDg1LCA4MzA4OSwgODMwOTMsIAorICAgIDgzMDk3LCA4MzEwMSwgODMxMDUsIDgzMTA5LCA4MzExMywgODMxMTcsIDgzMTIxLCA4MzEyNSwgODMxMjksIDgzMTMzLCAKKyAgICA4MzEzNywgODMxNDEsIDgzMTQ1LCA4MzE0OSwgODMxNTMsIDgzMTU3LCA4MzE2MSwgODMxNjUsIDgzMTY5LCA4MzE3MywgCisgICAgODMxNzcsIDgzMTgxLCA4MzE4NSwgODMxODksIDgzMTkzLCA4MzE5NywgODMyMDEsIDgzMjA1LCA4MzIwOSwgODMyMTMsIAorICAgIDgzMjE3LCA4MzIyMSwgODMyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzMjI5LCAKKyAgICA4MzIzNCwgODMyMzksIDgzMjQ0LCA4MzI0OSwgODMyNTQsIDgzMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA4MzI2NywgODMyNzQsIDgzMjgxLCA4MzI4OCwgODMyOTUsIDAsIDAsIDAsIDAsIDAsIDgzMzAyLCA4MzMwOSwgCisgICAgODMzMTYsIDgzMzI2LCA4MzMzMiwgODMzMzgsIDgzMzQ0LCA4MzM1MCwgODMzNTYsIDgzMzYyLCA4MzM2OSwgODMzNzUsIAorICAgIDgzMzgxLCA4MzM4NywgODMzOTYsIDgzNDA1LCA4MzQxNywgODM0MjksIDgzNDM1LCA4MzQ0MSwgODM0NDcsIDgzNDU0LCAKKyAgICA4MzQ2MSwgODM0NjgsIDgzNDc1LCA4MzQ4MiwgMCwgODM0ODksIDgzNDk2LCA4MzUwMywgODM1MTEsIDgzNTE4LCAwLCAKKyAgICA4MzUyNSwgMCwgODM1MzIsIDgzNTM5LCAwLCA4MzU0NiwgODM1NTQsIDAsIDgzNTYxLCA4MzU2OCwgODM1NzUsIDgzNTgyLCAKKyAgICA4MzU4OSwgODM1OTYsIDgzNjAzLCA4MzYxMCwgODM2MTcsIDgzNjI0LCA4MzYyOSwgODM2MzYsIDgzNjQzLCA4MzY0OSwgCisgICAgODM2NTUsIDgzNjYxLCA4MzY2NywgODM2NzMsIDgzNjc5LCA4MzY4NSwgODM2OTEsIDgzNjk3LCA4MzcwMywgODM3MDksIAorICAgIDgzNzE1LCA4MzcyMSwgODM3MjcsIDgzNzMzLCA4MzczOSwgODM3NDUsIDgzNzUxLCA4Mzc1NywgODM3NjMsIDgzNzY5LCAKKyAgICA4Mzc3NSwgODM3ODEsIDgzNzg3LCA4Mzc5MywgODM3OTksIDgzODA1LCA4MzgxMSwgODM4MTcsIDgzODIzLCA4MzgyOSwgCisgICAgODM4MzUsIDgzODQxLCA4Mzg0NywgODM4NTMsIDgzODU5LCA4Mzg2NSwgODM4NzEsIDgzODc3LCA4Mzg4MywgODM4ODksIAorICAgIDgzODk1LCA4MzkwMSwgODM5MDcsIDgzOTEzLCA4MzkxOSwgODM5MjUsIDgzOTMxLCA4MzkzNywgODM5NDMsIDgzOTQ5LCAKKyAgICA4Mzk1NSwgODM5NjEsIDgzOTY3LCA4Mzk3MywgODM5NzksIDgzOTg1LCA4Mzk5MSwgODM5OTcsIDg0MDAzLCA4NDAwOSwgCisgICAgODQwMTUsIDg0MDIxLCA4NDAyNywgODQwMzMsIDg0MDM5LCA4NDA0NSwgODQwNTEsIDg0MDU3LCA4NDA2MywgODQwNjksIAorICAgIDg0MDc1LCA4NDA4MSwgODQwODcsIDg0MDkzLCA4NDA5OSwgODQxMDcsIDg0MTE1LCA4NDEyMSwgODQxMjcsIDg0MTMzLCAKKyAgICA4NDEzOSwgODQxNDgsIDg0MTU3LCA4NDE2NSwgODQxNzMsIDg0MTgxLCA4NDE4OSwgODQxOTcsIDg0MjA1LCA4NDIxMywgCisgICAgODQyMjEsIDg0MjI4LCA4NDIzNSwgODQyNDYsIDg0MjU3LCA4NDI2MSwgODQyNjUsIDg0MjcwLCA4NDI3NSwgODQyODAsIAorICAgIDg0Mjg1LCA4NDI5MywgODQzMDEsIDg0MzA3LCA4NDMxMywgODQzMjAsIDg0MzI3LCA4NDMzNCwgODQzMzgsIDg0MzQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NDM1MCwgODQzNTYsIDg0MzYyLCAKKyAgICA4NDM2OCwgODQzNzQsIDg0Mzc5LCA4NDM4NCwgODQzOTAsIDg0Mzk2LCA4NDQwMiwgODQ0MDgsIDg0NDE3LCA4NDQyMywgCisgICAgODQ0MjksIDg0NDM3LCA4NDQ0NSwgODQ0NTMsIDg0NDYxLCA4NDQ2NiwgODQ0NzEsIDg0NDc2LCA4NDQ4MSwgODQ0OTQsIAorICAgIDg0NTA3LCA4NDUxOCwgODQ1MjksIDg0NTQxLCA4NDU1MywgODQ1NjUsIDg0NTc3LCA4NDU4OCwgODQ1OTksIDg0NjExLCAKKyAgICA4NDYyMywgODQ2MzUsIDg0NjQ3LCA4NDY1OCwgODQ2NjksIDg0NjgwLCA4NDY5NywgODQ3MTQsIDg0NzMxLCA4NDczOCwgCisgICAgODQ3NDUsIDg0NzUyLCA4NDc1OSwgODQ3NzAsIDg0NzgxLCA4NDc5MiwgODQ4MDUsIDg0ODE2LCA4NDgyNCwgODQ4MzIsIAorICAgIDg0ODQxLCA4NDg0OSwgODQ4NTksIDg0ODY3LCA4NDg3NSwgODQ4ODMsIDg0ODkyLCA4NDkwMCwgODQ5MTAsIDg0OTE4LCAKKyAgICA4NDkyNiwgODQ5MzQsIDg0OTQ0LCA4NDk1MiwgODQ5NTksIDg0OTY2LCA4NDk3MywgODQ5ODAsIDg0OTg4LCA4NDk5NiwgCisgICAgODUwMDQsIDg1MDEyLCA4NTAyMCwgODUwMjksIDg1MDM3LCA4NTA0NSwgODUwNTMsIDg1MDYxLCA4NTA2OSwgODUwNzgsIAorICAgIDg1MDg2LCA4NTA5NCwgODUxMDIsIDg1MTEwLCA4NTExOCwgODUxMjYsIDg1MTM0LCA4NTE0MiwgODUxNTAsIDg1MTU4LCAKKyAgICA4NTE2NywgODUxNzUsIDg1MTg1LCA4NTE5MywgODUyMDEsIDg1MjA5LCA4NTIxOSwgODUyMjcsIDg1MjM1LCA4NTI0MywgCisgICAgODUyNTEsIDg1MjYwLCA4NTI2OSwgODUyNzcsIDg1Mjg3LCA4NTI5NSwgODUzMDMsIDg1MzExLCA4NTMyMCwgODUzMjgsIAorICAgIDg1MzM4LCA4NTM0NiwgODUzNTMsIDg1MzYwLCA4NTM2OCwgODUzNzUsIDg1Mzg0LCA4NTM5MSwgODUzOTksIDg1NDA3LCAKKyAgICA4NTQxNiwgODU0MjQsIDg1NDM0LCA4NTQ0MiwgODU0NTAsIDg1NDU4LCA4NTQ2OCwgODU0NzYsIDg1NDgzLCA4NTQ5MCwgCisgICAgODU0OTgsIDg1NTA1LCA4NTUxNCwgODU1MjEsIDg1NTMxLCA4NTU0MSwgODU1NTIsIDg1NTYxLCA4NTU3MCwgODU1NzksIAorICAgIDg1NTg4LCA4NTU5NywgODU2MDcsIDg1NjE5LCA4NTYzMSwgODU2NDIsIDg1NjU0LCA4NTY2NywgODU2NzgsIDg1Njg3LCAKKyAgICA4NTY5NiwgODU3MDQsIDg1NzEzLCA4NTcyMywgODU3MzEsIDg1NzQwLCA4NTc0OSwgODU3NTcsIDg1NzY2LCA4NTc3NiwgCisgICAgODU3ODQsIDg1NzkzLCA4NTgwMiwgODU4MTAsIDg1ODE5LCA4NTgyOSwgODU4MzcsIDg1ODQ3LCA4NTg1NSwgODU4NjUsIAorICAgIDg1ODczLCA4NTg4MSwgODU4OTAsIDg1ODk4LCA4NTkwOCwgODU5MTYsIDg1OTI0LCA4NTkzNCwgODU5NDIsIDg1OTQ5LCAKKyAgICA4NTk1NiwgODU5NjUsIDg1OTc0LCA4NTk4MiwgODU5OTEsIDg2MDAxLCA4NjAwOSwgODYwMjAsIDg2MDI4LCA4NjAzNiwgCisgICAgODYwNDMsIDg2MDUxLCA4NjA2MCwgODYwNjcsIDg2MDc4LCA4NjA4OSwgODYxMDEsIDg2MTEyLCA4NjEyNCwgODYxMzIsIAorICAgIDg2MTQwLCA4NjE0OSwgODYxNTcsIDg2MTY2LCA4NjE3NCwgODYxODIsIDg2MTkxLCA4NjE5OSwgODYyMDgsIDg2MjE2LCAKKyAgICA4NjIyMywgODYyMzAsIDg2MjM3LCA4NjI0NCwgODYyNTIsIDg2MjYwLCA4NjI2OCwgODYyNzYsIDg2Mjg1LCA4NjI5MywgCisgICAgODYzMDEsIDg2MzEwLCA4NjMxOCwgODYzMjYsIDg2MzM0LCA4NjM0MywgODYzNTEsIDg2MzU5LCA4NjM2NywgODYzNzUsIAorICAgIDg2MzgzLCA4NjM5MSwgODYzOTksIDg2NDA3LCA4NjQxNSwgODY0MjQsIDg2NDMyLCA4NjQ0MCwgODY0NDgsIDg2NDU2LCAKKyAgICA4NjQ2NCwgODY0NzMsIDg2NDgyLCA4NjQ5MCwgODY0OTgsIDg2NTA2LCA4NjUxNSwgODY1MjMsIDg2NTMyLCA4NjUzOSwgCisgICAgODY1NDYsIDg2NTU0LCA4NjU2MSwgODY1NjksIDg2NTc3LCA4NjU4NiwgODY1OTQsIDg2NjAzLCA4NjYxMSwgODY2MTksIAorICAgIDg2NjI5LCA4NjYzNiwgODY2NDMsIDg2NjUxLCA4NjY1OCwgODY2NjYsIDg2Njc3LCA4NjY4OSwgODY2OTcsIDg2NzA2LCAKKyAgICA4NjcxNCwgODY3MjMsIDg2NzMxLCA4Njc0MCwgODY3NDgsIDg2NzU3LCA4Njc2NSwgODY3NzQsIDg2NzgzLCA4Njc5MSwgCisgICAgODY3OTksIDg2ODA3LCA4NjgxNiwgODY4MjMsIDg2ODMxLCA4Njg0MCwgODY4NDksIDg2ODU4LCA4Njg2OCwgODY4NzYsIAorICAgIDg2ODg2LCA4Njg5NCwgODY5MDQsIDg2OTEyLCA4NjkyMiwgODY5MzAsIDg2OTQwLCA4Njk0OCwgODY5NTcsIDg2OTY0LCAKKyAgICA4Njk3MywgODY5ODAsIDg2OTkwLCA4Njk5OCwgODcwMDgsIDg3MDE2LCA4NzAyNiwgODcwMzQsIDg3MDQyLCA4NzA1MCwgCisgICAgODcwNTksIDg3MDY3LCA4NzA3NiwgODcwODUsIDg3MDk0LCA4NzEwMywgODcxMTMsIDg3MTIxLCA4NzEzMSwgODcxMzksIAorICAgIDg3MTQ5LCA4NzE1NywgODcxNjcsIDg3MTc1LCA4NzE4NSwgODcxOTMsIDg3MjAyLCA4NzIwOSwgODcyMTgsIDg3MjI1LCAKKyAgICA4NzIzNSwgODcyNDMsIDg3MjUzLCA4NzI2MSwgODcyNzEsIDg3Mjc5LCA4NzI4NywgODcyOTUsIDg3MzA0LCA4NzMxMiwgCisgICAgODczMjEsIDg3MzMwLCA4NzMzOSwgODczNDgsIDg3MzU2LCA4NzM2NCwgODczNzMsIDg3MzgxLCA4NzM5MCwgODczOTksIAorICAgIDg3NDA3LCA4NzQxNSwgODc0MjMsIDg3NDMyLCA4NzQ0MCwgODc0NDgsIDg3NDU3LCA4NzQ2NSwgODc0NzMsIDg3NDgxLCAKKyAgICA4NzQ4OSwgODc0OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NDk5LCAKKyAgICA4NzUwOSwgODc1MTksIDg3NTI5LCA4NzUzOSwgODc1NTAsIDg3NTYwLCA4NzU3MCwgODc1ODEsIDg3NTkwLCA4NzU5OSwgCisgICAgODc2MDgsIDg3NjE5LCA4NzYyOSwgODc2MzksIDg3NjUxLCA4NzY2MSwgODc2NzEsIDg3NjgxLCA4NzY5MSwgODc3MDEsIAorICAgIDg3NzExLCA4NzcyMSwgODc3MzEsIDg3NzQxLCA4Nzc1MSwgODc3NjEsIDg3NzcyLCA4Nzc4MywgODc3OTMsIDg3ODAzLCAKKyAgICA4NzgxNSwgODc4MjYsIDg3ODM3LCA4Nzg0NywgODc4NTcsIDg3ODY3LCA4Nzg3NywgODc4ODcsIDg3ODk3LCA4NzkwNywgCisgICAgODc5MTksIDg3OTI5LCA4NzkzOSwgODc5NTEsIDg3OTYyLCA4Nzk3MywgODc5ODMsIDg3OTkzLCA4ODAwMywgODgwMTMsIAorICAgIDg4MDI1LCA4ODAzNSwgODgwNDUsIDg4MDU2LCA4ODA2NywgODgwNzcsIDg4MDg3LCA4ODA5NiwgODgxMDUsIDg4MTE0LCAKKyAgICA4ODEyMywgODgxMzIsIDg4MTQyLCAwLCAwLCA4ODE1MiwgODgxNjIsIDg4MTcyLCA4ODE4MiwgODgxOTIsIDg4MjA0LCAKKyAgICA4ODIxNCwgODgyMjQsIDg4MjM2LCA4ODI0NiwgODgyNTgsIDg4MjY3LCA4ODI3NiwgODgyODcsIDg4Mjk3LCA4ODMwOSwgCisgICAgODgzMjAsIDg4MzMzLCA4ODM0MywgODgzNTUsIDg4MzY0LCA4ODM3NSwgODgzODYsIDg4Mzk5LCA4ODQwOSwgODg0MTksIAorICAgIDg4NDI5LCA4ODQzOSwgODg0NDksIDg4NDU4LCA4ODQ2NywgODg0NzYsIDg4NDg1LCA4ODQ5NSwgODg1MDUsIDg4NTE1LCAKKyAgICA4ODUyNSwgODg1MzUsIDg4NTQ1LCA4ODU1NSwgODg1NjUsIDg4NTc1LCA4ODU4NSwgODg1OTUsIDg4NjA1LCA4ODYxNCwgCisgICAgODg2MjMsIDg4NjMyLCA4ODY0MiwgODg2NTIsIDg4NjYyLCA4ODY3MiwgODg2ODIsIDg4NjkzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Nzg4MCwgODc4OTUsIDg3OTEwLCA4NzkxNiwgODc5MjIsIDg3OTI4LCAKLSAgICA4NzkzNCwgODc5NDAsIDg3OTQ2LCA4Nzk1MiwgODc5NTgsIDg3OTY2LCA4Nzk3MCwgODc5NzMsIDAsIDAsIDg3OTgxLCAKLSAgICA4Nzk4NCwgODc5ODcsIDg3OTkwLCA4Nzk5MywgODc5OTYsIDg3OTk5LCA4ODAwMiwgODgwMDUsIDg4MDA4LCA4ODAxMSwgCi0gICAgODgwMTQsIDg4MDE3LCA4ODAyMCwgODgwMjMsIDg4MDI2LCA4ODAyOSwgODgwMzcsIDg4MDQ2LCA4ODA1NywgODgwNjUsIAotICAgIDg4MDczLCA4ODA4MiwgODgwOTEsIDg4MTAyLCA4ODExNCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxMjQsIDg4MTI5LCA4ODEzNCwgCi0gICAgODgxNDEsIDg4MTQ4LCA4ODE1NCwgODgxNjAsIDg4MTY1LCA4ODE3MCwgODgxNzUsIDg4MTgxLCA4ODE4NywgODgxOTMsIAotICAgIDg4MTk5LCA4ODIwNSwgODgyMTIsIDg4MjE5LCA4ODIyOSwgODgyMzksIDg4MjQ5LCA4ODI1OCwgODgyNjksIDg4Mjc4LCAKLSAgICA4ODI4NywgODgyOTcsIDg4MzA3LCA4ODMxOSwgODgzMzEsIDg4MzQyLCA4ODM1MywgODgzNjQsIDg4Mzc1LCA4ODM4NSwgCi0gICAgODgzOTUsIDg4NDA1LCA4ODQxNSwgODg0MjYsIDg4NDM3LCA4ODQ0MSwgODg0NDYsIDg4NDU1LCA4ODQ2NCwgODg0NjgsIAotICAgIDg4NDcyLCA4ODQ3NiwgODg0ODEsIDg4NDg2LCA4ODQ5MSwgODg0OTYsIDg4NDk5LCA4ODUwMywgMCwgODg1MDgsIDg4NTExLCAKLSAgICA4ODUxNCwgODg1MTgsIDg4NTIyLCA4ODUyNywgODg1MzEsIDg4NTM1LCA4ODU0MCwgODg1NDUsIDg4NTUyLCA4ODU1OSwgCi0gICAgODg1NjIsIDg4NTY1LCA4ODU2OCwgODg1NzEsIDg4NTc0LCA4ODU3OCwgODg1ODIsIDAsIDg4NTg2LCA4ODU5MSwgODg1OTUsIAotICAgIDg4NTk5LCAwLCAwLCAwLCAwLCA4ODYwNCwgODg2MDksIDg4NjE2LCA4ODYyMSwgODg2MjYsIDAsIDg4NjMxLCA4ODYzNiwgCi0gICAgODg2NDEsIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgODg2NzEsIDg4Njc2LCA4ODY4MSwgODg2ODcsIAotICAgIDg4Njk2LCA4ODcwNSwgODg3MTQsIDg4NzIzLCA4ODczMywgODg3NDMsIDg4NzUzLCA4ODc2MywgODg3NzIsIDg4NzgxLCAKLSAgICA4ODc5MCwgODg3OTksIDg4ODA0LCA4ODgwOSwgODg4MTUsIDg4ODIxLCA4ODgyNywgODg4MzMsIDg4ODQxLCA4ODg0OSwgCi0gICAgODg4NTUsIDg4ODYxLCA4ODg2NywgODg4NzMsIDg4ODc5LCA4ODg4NSwgODg4OTEsIDg4ODk3LCA4ODkwMiwgODg5MDcsIAotICAgIDg4OTEyLCA4ODkxNywgODg5MjIsIDg4OTI3LCA4ODkzMiwgODg5MzcsIDg4OTQzLCA4ODk0OSwgODg5NTUsIDg4OTYxLCAKLSAgICA4ODk2NywgODg5NzMsIDg4OTc5LCA4ODk4NSwgODg5OTEsIDg4OTk3LCA4OTAwMywgODkwMDksIDg5MDE1LCA4OTAyMSwgCi0gICAgODkwMjcsIDg5MDMzLCA4OTAzOSwgODkwNDUsIDg5MDUxLCA4OTA1NywgODkwNjMsIDg5MDY5LCA4OTA3NSwgODkwODEsIAotICAgIDg5MDg3LCA4OTA5MywgODkwOTksIDg5MTA1LCA4OTExMSwgODkxMTcsIDg5MTIzLCA4OTEyOSwgODkxMzUsIDg5MTQxLCAKLSAgICA4OTE0NywgODkxNTMsIDg5MTU5LCA4OTE2NSwgODkxNzEsIDg5MTc3LCA4OTE4MywgODkxODksIDg5MTk1LCA4OTIwMSwgCi0gICAgODkyMDcsIDg5MjEzLCA4OTIxOSwgODkyMjUsIDg5MjMxLCA4OTIzNywgODkyNDMsIDg5MjQ5LCA4OTI1NSwgODkyNjEsIAotICAgIDg5MjY3LCA4OTI3MywgODkyNzksIDg5Mjg1LCA4OTI5MSwgODkyOTcsIDg5MzAyLCA4OTMwNywgODkzMTIsIDg5MzE3LCAKLSAgICA4OTMyMywgODkzMjksIDg5MzM1LCA4OTM0MSwgODkzNDcsIDg5MzUzLCA4OTM1OSwgODkzNjUsIDg5MzcxLCA4OTM3NywgCi0gICAgODkzODQsIDg5MzkxLCA4OTM5NiwgODk0MDEsIDg5NDA2LCA4OTQxMSwgODk0MjMsIDg5NDM1LCA4OTQ0NywgODk0NTksIAotICAgIDg5NDcyLCA4OTQ4NSwgODk0OTMsIDAsIDAsIDg5NTAxLCAwLCA4OTUwOSwgODk1MTMsIDg5NTE3LCA4OTUyMCwgODk1MjQsIAotICAgIDg5NTI4LCA4OTUzMSwgODk1MzQsIDg5NTM4LCA4OTU0MiwgODk1NDUsIDg5NTQ4LCA4OTU1MSwgODk1NTQsIDg5NTU5LCAKLSAgICA4OTU2MiwgODk1NjYsIDg5NTY5LCA4OTU3MiwgODk1NzUsIDg5NTc4LCA4OTU4MSwgODk1ODQsIDg5NTg4LCA4OTU5MSwgCi0gICAgODk1OTUsIDg5NTk4LCA4OTYwMSwgODk2MDUsIDg5NjA5LCA4OTYxMywgODk2MTcsIDg5NjIyLCA4OTYyNywgODk2MzMsIAotICAgIDg5NjM5LCA4OTY0NSwgODk2NTAsIDg5NjU2LCA4OTY2MiwgODk2NjgsIDg5NjczLCA4OTY3OSwgODk2ODUsIDg5NjkwLCAKLSAgICA4OTY5NiwgODk3MDIsIDg5NzA3LCA4OTcxMywgODk3MTksIDg5NzI0LCA4OTcyOSwgODk3MzUsIDg5NzQwLCA4OTc0NiwgCi0gICAgODk3NTIsIDg5NzU4LCA4OTc2NCwgODk3NzAsIDg5Nzc0LCA4OTc3OSwgODk3ODMsIDg5Nzg4LCA4OTc5MiwgODk3OTcsIAotICAgIDg5ODAyLCA4OTgwOCwgODk4MTQsIDg5ODIwLCA4OTgyNSwgODk4MzEsIDg5ODM3LCA4OTg0MywgODk4NDgsIDg5ODU0LCAKLSAgICA4OTg2MCwgODk4NjUsIDg5ODcxLCA4OTg3NywgODk4ODIsIDg5ODg4LCA4OTg5NCwgODk4OTksIDg5OTA0LCA4OTkxMCwgCi0gICAgODk5MTUsIDg5OTIxLCA4OTkyNywgODk5MzMsIDg5OTM5LCA4OTk0NSwgODk5NTAsIDg5OTU0LCA4OTk1OSwgODk5NjIsIAotICAgIDg5OTY3LCA4OTk3MiwgODk5NzgsIDg5OTgzLCA4OTk4OCwgODk5OTIsIDg5OTk3LCA5MDAwMiwgOTAwMDcsIDkwMDEyLCAKLSAgICA5MDAxNywgOTAwMjIsIDkwMDI3LCA5MDAzMiwgOTAwMzgsIDkwMDQ0LCA5MDA1MCwgOTAwNTgsIDkwMDYyLCA5MDA2NiwgCi0gICAgOTAwNzAsIDkwMDc0LCA5MDA3OCwgOTAwODIsIDkwMDg3LCA5MDA5MiwgOTAwOTcsIDkwMTAyLCA5MDEwNywgOTAxMTIsIAotICAgIDkwMTE3LCA5MDEyMiwgOTAxMjcsIDkwMTMyLCA5MDEzNywgOTAxNDIsIDkwMTQ3LCA5MDE1MSwgOTAxNTYsIDkwMTYxLCAKLSAgICA5MDE2NiwgOTAxNzEsIDkwMTc2LCA5MDE4MCwgOTAxODUsIDkwMTkwLCA5MDE5NSwgOTAyMDAsIDkwMjA0LCA5MDIwOSwgCi0gICAgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMjgsIDkwMjMzLCA5MDIzOCwgOTAyNDMsIDkwMjQ4LCA5MDI1MywgOTAyNTgsIAotICAgIDkwMjYzLCA5MDI2OCwgOTAyNzMsIDkwMjgwLCA5MDI4NywgOTAyOTEsIDkwMjk2LCA5MDMwMSwgOTAzMDYsIDkwMzExLCAKLSAgICA5MDMxNiwgOTAzMjEsIDkwMzI2LCA5MDMzMSwgOTAzMzYsIDkwMzQxLCA5MDM0NiwgOTAzNTEsIDkwMzU2LCA5MDM2MSwgCi0gICAgOTAzNjYsIDkwMzcxLCA5MDM3NiwgOTAzODEsIDkwMzg2LCA5MDM5MSwgOTAzOTYsIDkwNDAxLCA5MDQwNiwgOTA0MTEsIAotICAgIDkwNDE2LCA5MDQyMSwgOTA0MjYsIDkwNDMxLCA5MDQzNiwgMCwgMCwgMCwgOTA0NDEsIDkwNDQ1LCA5MDQ1MCwgOTA0NTQsIAotICAgIDkwNDU5LCA5MDQ2NCwgMCwgMCwgOTA0NjgsIDkwNDczLCA5MDQ3OCwgOTA0ODIsIDkwNDg3LCA5MDQ5MiwgMCwgMCwgCi0gICAgOTA0OTcsIDkwNTAyLCA5MDUwNiwgOTA1MTEsIDkwNTE2LCA5MDUyMSwgMCwgMCwgOTA1MjYsIDkwNTMxLCA5MDUzNiwgMCwgCi0gICAgMCwgMCwgOTA1NDAsIDkwNTQ0LCA5MDU0OCwgOTA1NTIsIDkwNTU1LCA5MDU1OSwgOTA1NjMsIDAsIDkwNTY3LCA5MDU3MywgCi0gICAgOTA1NzYsIDkwNTc5LCA5MDU4MiwgOTA1ODUsIDkwNTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDU5MywgCi0gICAgOTA1OTksIDkwNjA1LCA5MDYxMSwgOTA2MTcsIDAsIDAsIDkwNjIxLCA5MDYyNywgOTA2MzMsIDkwNjM5LCA5MDY0NSwgCi0gICAgOTA2NTEsIDkwNjU4LCA5MDY2NSwgOTA2NzIsIDkwNjc5LCA5MDY4NiwgOTA2OTMsIDAsIDkwNzAwLCA5MDcwNywgOTA3MTQsIAotICAgIDkwNzIwLCA5MDcyNywgOTA3MzQsIDkwNzQxLCA5MDc0OCwgOTA3NTQsIDkwNzYxLCA5MDc2OCwgOTA3NzUsIDkwNzgyLCAKLSAgICA5MDc4OSwgOTA3OTYsIDkwODAzLCA5MDgxMCwgOTA4MTcsIDkwODIzLCA5MDgzMCwgOTA4MzcsIDkwODQ0LCA5MDg1MSwgCi0gICAgOTA4NTgsIDkwODY1LCA5MDg3MiwgMCwgOTA4NzksIDkwODg2LCA5MDg5MywgOTA5MDAsIDkwOTA3LCA5MDkxNCwgOTA5MjEsIAotICAgIDkwOTI4LCA5MDkzNSwgOTA5NDIsIDkwOTQ5LCA5MDk1NiwgOTA5NjMsIDkwOTcwLCA5MDk3NiwgOTA5ODMsIDkwOTkwLCAKLSAgICA5MDk5NywgOTEwMDQsIDAsIDkxMDExLCA5MTAxOCwgMCwgOTEwMjUsIDkxMDMyLCA5MTAzOSwgOTEwNDYsIDkxMDUzLCAKLSAgICA5MTA2MCwgOTEwNjcsIDkxMDc0LCA5MTA4MSwgOTEwODgsIDkxMDk1LCA5MTEwMiwgOTExMDksIDkxMTE2LCA5MTEyMywgMCwgCi0gICAgMCwgOTExMjksIDkxMTM0LCA5MTEzOSwgOTExNDQsIDkxMTQ5LCA5MTE1NCwgOTExNTksIDkxMTY0LCA5MTE2OSwgOTExNzQsIAotICAgIDkxMTc5LCA5MTE4NCwgOTExODksIDkxMTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTE5OSwgOTEyMDYsIAotICAgIDkxMjEzLCA5MTIyMCwgOTEyMjcsIDkxMjM0LCA5MTI0MSwgOTEyNDgsIDkxMjU1LCA5MTI2MiwgOTEyNjksIDkxMjc2LCAKLSAgICA5MTI4MywgOTEyOTAsIDkxMjk3LCA5MTMwNCwgOTEzMTEsIDkxMzE4LCA5MTMyNSwgOTEzMzIsIDkxMzQwLCA5MTM0OCwgCi0gICAgOTEzNTUsIDkxMzYyLCA5MTM2NywgOTEzNzUsIDkxMzgzLCA5MTM5MCwgOTEzOTcsIDkxNDAyLCA5MTQwOSwgOTE0MTQsIAotICAgIDkxNDE5LCA5MTQyNiwgOTE0MzEsIDkxNDM2LCA5MTQ0MSwgOTE0NDksIDkxNDU0LCA5MTQ1OSwgOTE0NjYsIDkxNDcxLCAKLSAgICA5MTQ3NiwgOTE0ODMsIDkxNDkwLCA5MTQ5NSwgOTE1MDAsIDkxNTA1LCA5MTUxMCwgOTE1MTUsIDkxNTIwLCA5MTUyNSwgCi0gICAgOTE1MzAsIDkxNTM1LCA5MTU0MiwgOTE1NDcsIDkxNTU0LCA5MTU1OSwgOTE1NjQsIDkxNTY5LCA5MTU3NCwgOTE1NzksIAotICAgIDkxNTg0LCA5MTU4OSwgOTE1OTQsIDkxNTk5LCA5MTYwNCwgOTE2MDksIDkxNjE2LCA5MTYyMywgOTE2MzAsIDkxNjM3LCAKLSAgICA5MTY0MywgOTE2NDgsIDkxNjU1LCA5MTY2MCwgOTE2NjUsIDkxNjc0LCA5MTY4MSwgOTE2OTAsIDkxNjk3LCA5MTcwMiwgCi0gICAgOTE3MDcsIDkxNzE1LCA5MTcyMCwgOTE3MjUsIDkxNzMwLCA5MTczNSwgOTE3NDAsIDkxNzQ3LCA5MTc1MiwgOTE3NTcsIAotICAgIDkxNzYyLCA5MTc2NywgOTE3NzIsIDkxNzc5LCA5MTc4NiwgOTE3OTMsIDkxODAwLCA5MTgwNywgOTE4MTQsIDkxODIxLCAKLSAgICA5MTgyOCwgOTE4MzUsIDkxODQyLCA5MTg0OSwgOTE4NTYsIDkxODYzLCA5MTg3MCwgOTE4NzcsIDkxODg0LCA5MTg5MSwgCi0gICAgOTE4OTgsIDkxOTA1LCA5MTkxMiwgOTE5MTksIDkxOTI2LCA5MTkzMywgOTE5NDAsIDkxOTQ3LCA5MTk1NCwgOTE5NjEsIAotICAgIDkxOTY4LCAwLCAwLCAwLCAwLCAwLCA5MTk3NSwgOTE5ODMsIDkxOTkxLCAwLCAwLCAwLCAwLCA5MTk5NiwgOTIwMDAsIAotICAgIDkyMDA0LCA5MjAwOCwgOTIwMTIsIDkyMDE2LCA5MjAyMCwgOTIwMjUsIDkyMDI5LCA5MjAzNCwgOTIwMzksIDkyMDQ0LCAKLSAgICA5MjA0OSwgOTIwNTQsIDkyMDU5LCA5MjA2NCwgOTIwNjksIDkyMDc0LCA5MjA3OSwgOTIwODUsIDkyMDkxLCA5MjA5NywgCi0gICAgOTIxMDQsIDkyMTExLCA5MjExOCwgOTIxMjUsIDkyMTMyLCA5MjEzOSwgOTIxNDUsIDkyMTUxLCA5MjE1NywgOTIxNjQsIAotICAgIDkyMTcxLCA5MjE3OCwgOTIxODUsIDkyMTkyLCA5MjE5OSwgOTIyMDYsIDkyMjEzLCA5MjIyMCwgOTIyMjcsIDkyMjM0LCAKLSAgICA5MjI0MSwgOTIyNDgsIDkyMjU1LCAwLCAwLCAwLCA5MjI2MiwgOTIyNzAsIDkyMjc4LCA5MjI4NiwgOTIyOTQsIDkyMzAyLCAKLSAgICA5MjMxMiwgOTIzMjIsIDkyMzMwLCA5MjMzOCwgOTIzNDYsIDkyMzU0LCA5MjM2MiwgOTIzNjgsIDkyMzc1LCA5MjM4NCwgCi0gICAgOTIzOTMsIDkyNDAyLCA5MjQxMSwgOTI0MjAsIDkyNDI5LCA5MjQzOSwgOTI0NTAsIDkyNDYwLCA5MjQ3MSwgOTI0ODAsIAotICAgIDkyNDg5LCA5MjQ5OCwgOTI1MDgsIDkyNTE5LCA5MjUyOSwgOTI1NDAsIDkyNTUxLCA5MjU2MCwgOTI1NjgsIDkyNTc0LCAKLSAgICA5MjU4MCwgOTI1ODYsIDkyNTkyLCA5MjYwMCwgOTI2MDgsIDkyNjE0LCA5MjYyMSwgOTI2MzEsIDkyNjM4LCA5MjY0NSwgCi0gICAgOTI2NTIsIDkyNjU5LCA5MjY2NiwgOTI2NzYsIDkyNjgzLCA5MjY5MCwgOTI2OTgsIDkyNzA2LCA5MjcxNSwgOTI3MjQsIAotICAgIDkyNzMzLCA5Mjc0MiwgOTI3NTEsIDkyNzU5LCA5Mjc2OCwgOTI3NzcsIDkyNzg2LCA5Mjc5MCwgOTI3OTcsIDkyODAyLCAKLSAgICA5MjgwNywgOTI4MTEsIDkyODE1LCA5MjgxOSwgOTI4MjMsIDkyODI4LCA5MjgzMywgOTI4MzksIDkyODQ1LCA5Mjg0OSwgCi0gICAgOTI4NTUsIDkyODU5LCA5Mjg2MywgOTI4NjcsIDkyODcxLCA5Mjg3NSwgOTI4NzksIDkyODg1LCA5Mjg4OSwgOTI4OTQsIDAsIAotICAgIDAsIDAsIDkyODk4LCA5MjkwMywgOTI5MDgsIDkyOTEzLCA5MjkxOCwgOTI5MjUsIDkyOTMwLCA5MjkzNSwgOTI5NDAsIAotICAgIDkyOTQ1LCA5Mjk1MCwgOTI5NTUsIDAsIDAsIDAsIDAsIDkyOTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODcwMywgODg3MTgsIDg4NzMzLCA4ODczOSwgODg3NDUsIDg4NzUxLCAKKyAgICA4ODc1NywgODg3NjMsIDg4NzY5LCA4ODc3NSwgODg3ODEsIDg4Nzg5LCA4ODc5MywgODg3OTYsIDAsIDAsIDg4ODA0LCAKKyAgICA4ODgwNywgODg4MTAsIDg4ODEzLCA4ODgxNiwgODg4MTksIDg4ODIyLCA4ODgyNSwgODg4MjgsIDg4ODMxLCA4ODgzNCwgCisgICAgODg4MzcsIDg4ODQwLCA4ODg0MywgODg4NDYsIDg4ODQ5LCA4ODg1MiwgODg4NjAsIDg4ODY5LCA4ODg4MCwgODg4ODgsIAorICAgIDg4ODk2LCA4ODkwNSwgODg5MTQsIDg4OTI1LCA4ODkzNywgMCwgMCwgMCwgMCwgMCwgMCwgODg5NDcsIDg4OTUyLCA4ODk1NywgCisgICAgODg5NjQsIDg4OTcxLCA4ODk3NywgODg5ODMsIDg4OTg4LCA4ODk5MywgODg5OTgsIDg5MDA0LCA4OTAxMCwgODkwMTYsIAorICAgIDg5MDIyLCA4OTAyOCwgODkwMzUsIDg5MDQyLCA4OTA1MiwgODkwNjIsIDg5MDcyLCA4OTA4MSwgODkwOTIsIDg5MTAxLCAKKyAgICA4OTExMCwgODkxMjAsIDg5MTMwLCA4OTE0MiwgODkxNTQsIDg5MTY1LCA4OTE3NiwgODkxODcsIDg5MTk4LCA4OTIwOCwgCisgICAgODkyMTgsIDg5MjI4LCA4OTIzOCwgODkyNDksIDg5MjYwLCA4OTI2NCwgODkyNjksIDg5Mjc4LCA4OTI4NywgODkyOTEsIAorICAgIDg5Mjk1LCA4OTI5OSwgODkzMDQsIDg5MzA5LCA4OTMxNCwgODkzMTksIDg5MzIyLCA4OTMyNiwgMCwgODkzMzEsIDg5MzM0LCAKKyAgICA4OTMzNywgODkzNDEsIDg5MzQ1LCA4OTM1MCwgODkzNTQsIDg5MzU4LCA4OTM2MywgODkzNjgsIDg5Mzc1LCA4OTM4MiwgCisgICAgODkzODUsIDg5Mzg4LCA4OTM5MSwgODkzOTQsIDg5Mzk3LCA4OTQwMSwgODk0MDUsIDAsIDg5NDA5LCA4OTQxNCwgODk0MTgsIAorICAgIDg5NDIyLCAwLCAwLCAwLCAwLCA4OTQyNywgODk0MzIsIDg5NDM5LCA4OTQ0NCwgODk0NDksIDAsIDg5NDU0LCA4OTQ1OSwgCisgICAgODk0NjQsIDg5NDY5LCA4OTQ3NCwgODk0NzksIDg5NDg0LCA4OTQ4OSwgODk0OTQsIDg5NDk5LCA4OTUwNCwgODk1MTAsIAorICAgIDg5NTE5LCA4OTUyOCwgODk1MzcsIDg5NTQ2LCA4OTU1NiwgODk1NjYsIDg5NTc2LCA4OTU4NiwgODk1OTUsIDg5NjA0LCAKKyAgICA4OTYxMywgODk2MjIsIDg5NjI3LCA4OTYzMiwgODk2MzgsIDg5NjQ0LCA4OTY1MCwgODk2NTYsIDg5NjY0LCA4OTY3MiwgCisgICAgODk2NzgsIDg5Njg0LCA4OTY5MCwgODk2OTYsIDg5NzAyLCA4OTcwOCwgODk3MTQsIDg5NzIwLCA4OTcyNSwgODk3MzAsIAorICAgIDg5NzM1LCA4OTc0MCwgODk3NDUsIDg5NzUwLCA4OTc1NSwgODk3NjAsIDg5NzY2LCA4OTc3MiwgODk3NzgsIDg5Nzg0LCAKKyAgICA4OTc5MCwgODk3OTYsIDg5ODAyLCA4OTgwOCwgODk4MTQsIDg5ODIwLCA4OTgyNiwgODk4MzIsIDg5ODM4LCA4OTg0NCwgCisgICAgODk4NTAsIDg5ODU2LCA4OTg2MiwgODk4NjgsIDg5ODc0LCA4OTg4MCwgODk4ODYsIDg5ODkyLCA4OTg5OCwgODk5MDQsIAorICAgIDg5OTEwLCA4OTkxNiwgODk5MjIsIDg5OTI4LCA4OTkzNCwgODk5NDAsIDg5OTQ2LCA4OTk1MiwgODk5NTgsIDg5OTY0LCAKKyAgICA4OTk3MCwgODk5NzYsIDg5OTgyLCA4OTk4OCwgODk5OTQsIDkwMDAwLCA5MDAwNiwgOTAwMTIsIDkwMDE4LCA5MDAyNCwgCisgICAgOTAwMzAsIDkwMDM2LCA5MDA0MiwgOTAwNDgsIDkwMDU0LCA5MDA2MCwgOTAwNjYsIDkwMDcyLCA5MDA3OCwgOTAwODQsIAorICAgIDkwMDkwLCA5MDA5NiwgOTAxMDIsIDkwMTA4LCA5MDExNCwgOTAxMjAsIDkwMTI1LCA5MDEzMCwgOTAxMzUsIDkwMTQwLCAKKyAgICA5MDE0NiwgOTAxNTIsIDkwMTU4LCA5MDE2NCwgOTAxNzAsIDkwMTc2LCA5MDE4MiwgOTAxODgsIDkwMTk0LCA5MDIwMCwgCisgICAgOTAyMDcsIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjI5LCA5MDIzNCwgOTAyNDYsIDkwMjU4LCA5MDI3MCwgOTAyODIsIAorICAgIDkwMjk1LCA5MDMwOCwgOTAzMTYsIDAsIDAsIDkwMzI0LCAwLCA5MDMzMiwgOTAzMzYsIDkwMzQwLCA5MDM0MywgOTAzNDcsIAorICAgIDkwMzUxLCA5MDM1NCwgOTAzNTcsIDkwMzYxLCA5MDM2NSwgOTAzNjgsIDkwMzcxLCA5MDM3NCwgOTAzNzcsIDkwMzgyLCAKKyAgICA5MDM4NSwgOTAzODksIDkwMzkyLCA5MDM5NSwgOTAzOTgsIDkwNDAxLCA5MDQwNCwgOTA0MDcsIDkwNDExLCA5MDQxNCwgCisgICAgOTA0MTgsIDkwNDIxLCA5MDQyNCwgOTA0MjgsIDkwNDMyLCA5MDQzNiwgOTA0NDAsIDkwNDQ1LCA5MDQ1MCwgOTA0NTYsIAorICAgIDkwNDYyLCA5MDQ2OCwgOTA0NzMsIDkwNDc5LCA5MDQ4NSwgOTA0OTEsIDkwNDk2LCA5MDUwMiwgOTA1MDgsIDkwNTEzLCAKKyAgICA5MDUxOSwgOTA1MjUsIDkwNTMwLCA5MDUzNiwgOTA1NDIsIDkwNTQ3LCA5MDU1MywgOTA1NTksIDkwNTY0LCA5MDU3MCwgCisgICAgOTA1NzYsIDkwNTgyLCA5MDU4OCwgOTA1OTQsIDkwNTk4LCA5MDYwMywgOTA2MDcsIDkwNjEyLCA5MDYxNiwgOTA2MjEsIAorICAgIDkwNjI2LCA5MDYzMiwgOTA2MzgsIDkwNjQ0LCA5MDY0OSwgOTA2NTUsIDkwNjYxLCA5MDY2NywgOTA2NzIsIDkwNjc4LCAKKyAgICA5MDY4NCwgOTA2ODksIDkwNjk1LCA5MDcwMSwgOTA3MDYsIDkwNzEyLCA5MDcxOCwgOTA3MjMsIDkwNzI5LCA5MDczNSwgCisgICAgOTA3NDAsIDkwNzQ2LCA5MDc1MiwgOTA3NTgsIDkwNzY0LCA5MDc3MCwgOTA3NzUsIDkwNzc5LCA5MDc4NCwgOTA3ODcsIAorICAgIDkwNzkyLCA5MDc5NywgOTA4MDMsIDkwODA4LCA5MDgxMywgOTA4MTcsIDkwODIyLCA5MDgyNywgOTA4MzIsIDkwODM3LCAKKyAgICA5MDg0MiwgOTA4NDcsIDkwODUyLCA5MDg1NywgOTA4NjMsIDkwODY5LCA5MDg3NSwgOTA4ODMsIDkwODg3LCA5MDg5MSwgCisgICAgOTA4OTUsIDkwODk5LCA5MDkwMywgOTA5MDcsIDkwOTEyLCA5MDkxNywgOTA5MjIsIDkwOTI3LCA5MDkzMiwgOTA5MzcsIAorICAgIDkwOTQyLCA5MDk0NywgOTA5NTIsIDkwOTU3LCA5MDk2MiwgOTA5NjcsIDkwOTcyLCA5MDk3NiwgOTA5ODAsIDkwOTg1LCAKKyAgICA5MDk5MCwgOTA5OTUsIDkxMDAwLCA5MTAwNCwgOTEwMDksIDkxMDE0LCA5MTAxOSwgOTEwMjQsIDkxMDI4LCA5MTAzMywgCisgICAgOTEwMzgsIDkxMDQzLCA5MTA0OCwgOTEwNTIsIDkxMDU3LCA5MTA2MiwgOTEwNjcsIDkxMDcyLCA5MTA3NywgOTEwODIsIAorICAgIDkxMDg3LCA5MTA5MiwgOTEwOTcsIDkxMTA0LCA5MTExMSwgOTExMTUsIDkxMTIwLCA5MTEyNSwgOTExMzAsIDkxMTM1LCAKKyAgICA5MTE0MCwgOTExNDUsIDkxMTUwLCA5MTE1NSwgOTExNjAsIDkxMTY1LCA5MTE3MCwgOTExNzUsIDkxMTgwLCA5MTE4NSwgCisgICAgOTExOTAsIDkxMTk1LCA5MTIwMCwgOTEyMDUsIDkxMjEwLCA5MTIxNSwgOTEyMjAsIDkxMjI1LCA5MTIzMCwgOTEyMzUsIAorICAgIDkxMjQwLCA5MTI0NSwgOTEyNTAsIDkxMjU1LCA5MTI2MCwgMCwgMCwgMCwgOTEyNjUsIDkxMjY5LCA5MTI3NCwgOTEyNzgsIAorICAgIDkxMjgzLCA5MTI4OCwgMCwgMCwgOTEyOTIsIDkxMjk3LCA5MTMwMiwgOTEzMDYsIDkxMzExLCA5MTMxNiwgMCwgMCwgCisgICAgOTEzMjEsIDkxMzI2LCA5MTMzMCwgOTEzMzUsIDkxMzQwLCA5MTM0NSwgMCwgMCwgOTEzNTAsIDkxMzU1LCA5MTM2MCwgMCwgCisgICAgMCwgMCwgOTEzNjQsIDkxMzY4LCA5MTM3MiwgOTEzNzYsIDkxMzc5LCA5MTM4MywgOTEzODcsIDAsIDkxMzkxLCA5MTM5NywgCisgICAgOTE0MDAsIDkxNDAzLCA5MTQwNiwgOTE0MDksIDkxNDEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTQxNywgCisgICAgOTE0MjMsIDkxNDI5LCA5MTQzNSwgOTE0NDEsIDAsIDAsIDkxNDQ1LCA5MTQ1MSwgOTE0NTcsIDkxNDYzLCA5MTQ2OSwgCisgICAgOTE0NzUsIDkxNDgyLCA5MTQ4OSwgOTE0OTYsIDkxNTAzLCA5MTUxMCwgOTE1MTcsIDAsIDkxNTI0LCA5MTUzMSwgOTE1MzgsIAorICAgIDkxNTQ0LCA5MTU1MSwgOTE1NTgsIDkxNTY1LCA5MTU3MiwgOTE1NzgsIDkxNTg1LCA5MTU5MiwgOTE1OTksIDkxNjA2LCAKKyAgICA5MTYxMiwgOTE2MTksIDkxNjI2LCA5MTYzMywgOTE2NDAsIDkxNjQ2LCA5MTY1MywgOTE2NjAsIDkxNjY3LCA5MTY3NCwgCisgICAgOTE2ODEsIDkxNjg4LCA5MTY5NSwgMCwgOTE3MDIsIDkxNzA5LCA5MTcxNiwgOTE3MjMsIDkxNzMwLCA5MTczNywgOTE3NDQsIAorICAgIDkxNzUxLCA5MTc1OCwgOTE3NjUsIDkxNzcyLCA5MTc3OSwgOTE3ODYsIDkxNzkzLCA5MTc5OSwgOTE4MDYsIDkxODEzLCAKKyAgICA5MTgyMCwgOTE4MjcsIDAsIDkxODM0LCA5MTg0MSwgMCwgOTE4NDgsIDkxODU1LCA5MTg2MiwgOTE4NjksIDkxODc2LCAKKyAgICA5MTg4MywgOTE4OTAsIDkxODk3LCA5MTkwNCwgOTE5MTEsIDkxOTE4LCA5MTkyNSwgOTE5MzIsIDkxOTM5LCA5MTk0NiwgMCwgCisgICAgMCwgOTE5NTIsIDkxOTU3LCA5MTk2MiwgOTE5NjcsIDkxOTcyLCA5MTk3NywgOTE5ODIsIDkxOTg3LCA5MTk5MiwgOTE5OTcsIAorICAgIDkyMDAyLCA5MjAwNywgOTIwMTIsIDkyMDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjAyMiwgOTIwMjksIAorICAgIDkyMDM2LCA5MjA0MywgOTIwNTAsIDkyMDU3LCA5MjA2NCwgOTIwNzEsIDkyMDc4LCA5MjA4NSwgOTIwOTIsIDkyMDk5LCAKKyAgICA5MjEwNiwgOTIxMTMsIDkyMTIwLCA5MjEyNywgOTIxMzQsIDkyMTQxLCA5MjE0OCwgOTIxNTUsIDkyMTYzLCA5MjE3MSwgCisgICAgOTIxNzgsIDkyMTg1LCA5MjE5MCwgOTIxOTgsIDkyMjA2LCA5MjIxMywgOTIyMjAsIDkyMjI1LCA5MjIzMiwgOTIyMzcsIAorICAgIDkyMjQyLCA5MjI0OSwgOTIyNTQsIDkyMjU5LCA5MjI2NCwgOTIyNzIsIDkyMjc3LCA5MjI4MiwgOTIyODksIDkyMjk0LCAKKyAgICA5MjI5OSwgOTIzMDYsIDkyMzEzLCA5MjMxOCwgOTIzMjMsIDkyMzI4LCA5MjMzMywgOTIzMzgsIDkyMzQzLCA5MjM0OCwgCisgICAgOTIzNTMsIDkyMzU4LCA5MjM2NSwgOTIzNzAsIDkyMzc3LCA5MjM4MiwgOTIzODcsIDkyMzkyLCA5MjM5NywgOTI0MDIsIAorICAgIDkyNDA3LCA5MjQxMiwgOTI0MTcsIDkyNDIyLCA5MjQyNywgOTI0MzIsIDkyNDM5LCA5MjQ0NiwgOTI0NTMsIDkyNDYwLCAKKyAgICA5MjQ2NiwgOTI0NzEsIDkyNDc4LCA5MjQ4MywgOTI0ODgsIDkyNDk3LCA5MjUwNCwgOTI1MTMsIDkyNTIwLCA5MjUyNSwgCisgICAgOTI1MzAsIDkyNTM4LCA5MjU0MywgOTI1NDgsIDkyNTUzLCA5MjU1OCwgOTI1NjMsIDkyNTcwLCA5MjU3NSwgOTI1ODAsIAorICAgIDkyNTg1LCA5MjU5MCwgOTI1OTUsIDkyNjAyLCA5MjYwOSwgOTI2MTYsIDkyNjIzLCA5MjYzMCwgOTI2MzcsIDkyNjQ0LCAKKyAgICA5MjY1MSwgOTI2NTgsIDkyNjY1LCA5MjY3MiwgOTI2NzksIDkyNjg2LCA5MjY5MywgOTI3MDAsIDkyNzA3LCA5MjcxNCwgCisgICAgOTI3MjEsIDkyNzI4LCA5MjczNSwgOTI3NDIsIDkyNzQ5LCA5Mjc1NiwgOTI3NjMsIDkyNzcwLCA5Mjc3NywgOTI3ODQsIAorICAgIDkyNzkxLCAwLCAwLCAwLCAwLCAwLCA5Mjc5OCwgOTI4MDYsIDkyODE0LCAwLCAwLCAwLCAwLCA5MjgxOSwgOTI4MjMsIAorICAgIDkyODI3LCA5MjgzMSwgOTI4MzUsIDkyODM5LCA5Mjg0MywgOTI4NDgsIDkyODUyLCA5Mjg1NywgOTI4NjIsIDkyODY3LCAKKyAgICA5Mjg3MiwgOTI4NzcsIDkyODgyLCA5Mjg4NywgOTI4OTIsIDkyODk3LCA5MjkwMiwgOTI5MDgsIDkyOTE0LCA5MjkyMCwgCisgICAgOTI5MjcsIDkyOTM0LCA5Mjk0MSwgOTI5NDgsIDkyOTU1LCA5Mjk2MiwgOTI5NjgsIDkyOTc0LCA5Mjk4MCwgOTI5ODcsIAorICAgIDkyOTk0LCA5MzAwMSwgOTMwMDgsIDkzMDE1LCA5MzAyMiwgOTMwMjksIDkzMDM2LCA5MzA0MywgOTMwNTAsIDkzMDU3LCAKKyAgICA5MzA2NCwgOTMwNzEsIDkzMDc4LCAwLCAwLCAwLCA5MzA4NSwgOTMwOTMsIDkzMTAxLCA5MzEwOSwgOTMxMTcsIDkzMTI1LCAKKyAgICA5MzEzNSwgOTMxNDUsIDkzMTUzLCA5MzE2MSwgOTMxNjksIDkzMTc3LCA5MzE4NSwgOTMxOTEsIDkzMTk4LCA5MzIwNywgCisgICAgOTMyMTYsIDkzMjI1LCA5MzIzNCwgOTMyNDMsIDkzMjUyLCA5MzI2MiwgOTMyNzMsIDkzMjgzLCA5MzI5NCwgOTMzMDMsIAorICAgIDkzMzEyLCA5MzMyMSwgOTMzMzEsIDkzMzQyLCA5MzM1MiwgOTMzNjMsIDkzMzc0LCA5MzM4MywgOTMzOTEsIDkzMzk3LCAKKyAgICA5MzQwMywgOTM0MDksIDkzNDE1LCA5MzQyMywgOTM0MzEsIDkzNDM3LCA5MzQ0NCwgOTM0NTQsIDkzNDYxLCA5MzQ2OCwgCisgICAgOTM0NzUsIDkzNDgyLCA5MzQ4OSwgOTM0OTksIDkzNTA2LCA5MzUxMywgOTM1MjEsIDkzNTI5LCA5MzUzOCwgOTM1NDcsIAorICAgIDkzNTU2LCA5MzU2NSwgOTM1NzQsIDkzNTgyLCA5MzU5MSwgOTM2MDAsIDkzNjA5LCA5MzYxMywgOTM2MjAsIDkzNjI1LCAKKyAgICA5MzYzMCwgOTM2MzQsIDkzNjM4LCA5MzY0MiwgOTM2NDYsIDkzNjUxLCA5MzY1NiwgOTM2NjIsIDkzNjY4LCA5MzY3MiwgCisgICAgOTM2NzgsIDkzNjgyLCA5MzY4NiwgOTM2OTAsIDkzNjk0LCA5MzY5OCwgOTM3MDIsIDkzNzA4LCA5MzcxMiwgOTM3MTcsIAorICAgIDkzNzIxLCA5MzcyNSwgMCwgOTM3MjgsIDkzNzMzLCA5MzczOCwgOTM3NDMsIDkzNzQ4LCA5Mzc1NSwgOTM3NjAsIDkzNzY1LCAKKyAgICA5Mzc3MCwgOTM3NzUsIDkzNzgwLCA5Mzc4NSwgMCwgMCwgMCwgMCwgOTM3OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyOTY2LCA5Mjk3MywgOTI5ODIsIDkyOTkxLCA5Mjk5OCwgCi0gICAgOTMwMDUsIDkzMDEyLCA5MzAxOSwgOTMwMjYsIDkzMDMzLCA5MzAzOSwgOTMwNDYsIDkzMDUzLCA5MzA2MCwgOTMwNjcsIAotICAgIDkzMDc0LCA5MzA4MSwgOTMwODgsIDkzMDk1LCA5MzEwNCwgOTMxMTEsIDkzMTE4LCA5MzEyNSwgOTMxMzIsIDkzMTM5LCAKLSAgICA5MzE0NiwgOTMxNTMsIDkzMTYwLCA5MzE2OSwgOTMxNzYsIDkzMTgzLCA5MzE5MCwgOTMxOTcsIDkzMjA0LCA5MzIxMSwgCi0gICAgOTMyMjAsIDkzMjI3LCA5MzIzNCwgOTMyNDEsIDkzMjQ4LCA5MzI1NywgOTMyNjQsIDkzMjcxLCA5MzI3OCwgOTMyODYsIAotICAgIDkzMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5Mzc5NiwgOTM4MDMsIDkzODEyLCA5MzgyMSwgCisgICAgOTM4MjgsIDkzODM1LCA5Mzg0MiwgOTM4NDksIDkzODU2LCA5Mzg2MywgOTM4NjksIDkzODc2LCA5Mzg4MywgOTM4OTAsIAorICAgIDkzODk3LCA5MzkwNCwgOTM5MTEsIDkzOTE4LCA5MzkyNSwgOTM5MzQsIDkzOTQxLCA5Mzk0OCwgOTM5NTUsIDkzOTYyLCAKKyAgICA5Mzk2OSwgOTM5NzYsIDkzOTgzLCA5Mzk5MCwgOTM5OTksIDk0MDA2LCA5NDAxMywgOTQwMjAsIDk0MDI3LCA5NDAzNCwgCisgICAgOTQwNDEsIDk0MDUwLCA5NDA1NywgOTQwNjQsIDk0MDcxLCA5NDA3OCwgOTQwODcsIDk0MDk0LCA5NDEwMSwgOTQxMDgsIAorICAgIDk0MTE2LCA5NDEyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTMzMDQsIDkzMzA4LCA5MzMxMiwgOTMzMTcsIDkzMzIyLCAKLSAgICA5MzMyNywgOTMzMzIsIDkzMzM2LCA5MzM0MSwgOTMzNDYsIDkzMzUxLCA5MzM1NiwgOTMzNjEsIDkzMzY2LCA5MzM3MCwgCi0gICAgOTMzNzUsIDkzMzgwLCA5MzM4NSwgOTMzOTAsIDkzMzk0LCA5MzM5OSwgOTM0MDQsIDkzNDA4LCA5MzQxMiwgOTM0MTcsIAotICAgIDkzNDIyLCA5MzQyNywgOTM0MzIsIDkzNDM3LCAwLCAwLCAwLCA5MzQ0MiwgOTM0NDYsIDkzNDUxLCA5MzQ1NiwgOTM0NjAsIAotICAgIDkzNDY1LCA5MzQ2OSwgOTM0NzQsIDkzNDc5LCA5MzQ4NCwgOTM0ODksIDkzNDk0LCA5MzQ5OCwgOTM1MDMsIDkzNTA4LCAKLSAgICA5MzUxMywgOTM1MTgsIDkzNTIyLCA5MzUyNywgOTM1MzEsIDkzNTM2LCA5MzU0MSwgOTM1NDYsIDkzNTUxLCA5MzU1NiwgCi0gICAgOTM1NjEsIDkzNTY1LCA5MzU2OSwgOTM1NzQsIDkzNTc5LCA5MzU4NCwgOTM1ODksIDkzNTk0LCA5MzU5OSwgOTM2MDQsIAotICAgIDkzNjA5LCA5MzYxNCwgOTM2MTksIDkzNjI0LCA5MzYyOSwgOTM2MzQsIDkzNjM5LCA5MzY0NCwgOTM2NDksIDkzNjU0LCAKLSAgICA5MzY1OSwgOTM2NjQsIDkzNjY5LCA5MzY3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTM2NzksIDkzNjg1LCA5MzY5MCwgOTM2OTUsIDkzNzAwLCA5MzcwNSwgOTM3MTAsIDkzNzE1LCA5MzcyMSwgOTM3MjYsIAotICAgIDkzNzMyLCA5MzczOCwgOTM3NDQsIDkzNzUwLCA5Mzc1NiwgOTM3NjIsIDkzNzY4LCA5Mzc3NCwgOTM3ODAsIDkzNzg2LCAKLSAgICA5Mzc5MywgOTM4MDAsIDkzODA3LCA5MzgxNSwgOTM4MjMsIDkzODMxLCA5MzgzOSwgOTM4NDcsIDAsIDAsIDAsIDAsIAotICAgIDkzODU1LCA5Mzg1OSwgOTM4NjQsIDkzODY5LCA5Mzg3NCwgOTM4NzgsIDkzODgzLCA5Mzg4OCwgOTM4OTMsIDkzODk4LCAKLSAgICA5MzkwMiwgOTM5MDYsIDkzOTExLCA5MzkxNiwgOTM5MjEsIDkzOTI2LCA5MzkzMCwgOTM5MzUsIDkzOTQwLCA5Mzk0NSwgCi0gICAgOTM5NTAsIDkzOTU1LCA5Mzk2MCwgOTM5NjQsIDkzOTY5LCA5Mzk3NCwgOTM5NzksIDkzOTg0LCA5Mzk4OSwgOTM5OTQsIAotICAgIDkzOTk5LCA5NDAwNCwgOTQwMDksIDk0MDE0LCA5NDAxOSwgOTQwMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDk0MDMxLCA5NDAzNiwgOTQwNDEsIDk0MDQ2LCA5NDA1MSwgOTQwNTYsIDk0MDYxLCA5NDA2NiwgOTQwNzEsIAotICAgIDk0MDc2LCA5NDA4MSwgOTQwODYsIDk0MDkxLCA5NDA5NiwgOTQxMDEsIDk0MTA2LCA5NDExMSwgOTQxMTYsIDk0MTIxLCAKLSAgICA5NDEyNiwgOTQxMzEsIDk0MTM2LCA5NDE0MSwgOTQxNDYsIDk0MTUxLCA5NDE1NiwgOTQxNjEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk0MTY4LCA5NDE3NCwgOTQxODAsIDk0MTg2LCA5NDE5MiwgOTQxOTcsIDk0MjAzLCA5NDIwOSwgOTQyMTUsIDk0MjIxLCAKLSAgICA5NDIyNiwgOTQyMzIsIDk0MjM4LCA5NDI0NCwgOTQyNTAsIDk0MjU2LCA5NDI2MiwgOTQyNjgsIDk0Mjc0LCA5NDI4MCwgCi0gICAgOTQyODUsIDk0MjkxLCA5NDI5NywgOTQzMDMsIDk0MzA5LCA5NDMxNSwgOTQzMjAsIDk0MzI2LCA5NDMzMiwgOTQzMzcsIAotICAgIDk0MzQzLCA5NDM0OSwgOTQzNTUsIDk0MzYxLCA5NDM2NywgOTQzNzMsIDk0Mzc5LCA5NDM4NCwgOTQzOTAsIDk0Mzk3LCAKLSAgICA5NDQwNCwgOTQ0MTEsIDk0NDE4LCAwLCAwLCAwLCAwLCAwLCA5NDQyNSwgOTQ0MzAsIDk0NDM1LCA5NDQ0MCwgOTQ0NDUsIAotICAgIDk0NDUwLCA5NDQ1NSwgOTQ0NjAsIDk0NDY1LCA5NDQ3MCwgOTQ0NzUsIDk0NDgwLCA5NDQ4NSwgOTQ0OTAsIDk0NDk1LCAKLSAgICA5NDUwMCwgOTQ1MDUsIDk0NTEwLCA5NDUxNSwgOTQ1MjAsIDk0NTI1LCA5NDUzMCwgOTQ1MzUsIDk0NTQwLCA5NDU0NSwgCi0gICAgOTQ1NTAsIDk0NTU1LCA5NDU1OSwgOTQ1NjMsIDk0NTY3LCAwLCA5NDU3MiwgOTQ1NzgsIDk0NTgzLCA5NDU4OCwgOTQ1OTMsIAotICAgIDk0NTk4LCA5NDYwNCwgOTQ2MTAsIDk0NjE2LCA5NDYyMiwgOTQ2MjgsIDk0NjM0LCA5NDY0MCwgOTQ2NDYsIDk0NjUyLCAKLSAgICA5NDY1OCwgOTQ2NjQsIDk0NjcwLCA5NDY3NiwgOTQ2ODEsIDk0Njg3LCA5NDY5MywgOTQ2OTksIDk0NzA1LCA5NDcxMCwgCi0gICAgOTQ3MTYsIDk0NzIyLCA5NDcyNywgOTQ3MzMsIDk0NzM5LCA5NDc0NSwgOTQ3NTEsIDk0NzU3LCA5NDc2MywgOTQ3NjksIAotICAgIDk0Nzc1LCA5NDc4MSwgMCwgMCwgMCwgMCwgOTQ3ODYsIDk0NzkyLCA5NDc5OCwgOTQ4MDQsIDk0ODEwLCA5NDgxNiwgCi0gICAgOTQ4MjIsIDk0ODI4LCA5NDgzNCwgOTQ4NDEsIDk0ODQ2LCA5NDg1MSwgOTQ4NTcsIDk0ODYzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDEzNCwgOTQxMzgsIDk0MTQyLCA5NDE0NywgCisgICAgOTQxNTIsIDk0MTU3LCA5NDE2MiwgOTQxNjYsIDk0MTcxLCA5NDE3NiwgOTQxODEsIDk0MTg2LCA5NDE5MSwgOTQxOTYsIAorICAgIDk0MjAwLCA5NDIwNSwgOTQyMTAsIDk0MjE1LCA5NDIyMCwgOTQyMjQsIDk0MjI5LCA5NDIzNCwgOTQyMzgsIDk0MjQzLCAKKyAgICA5NDI0OCwgOTQyNTMsIDk0MjU4LCA5NDI2MywgOTQyNjgsIDAsIDAsIDAsIDk0MjczLCA5NDI3NywgOTQyODIsIDk0Mjg3LCAKKyAgICA5NDI5MSwgOTQyOTYsIDk0MzAwLCA5NDMwNSwgOTQzMTAsIDk0MzE1LCA5NDMyMCwgOTQzMjUsIDk0MzI5LCA5NDMzNCwgCisgICAgOTQzMzksIDk0MzQ0LCA5NDM0OSwgOTQzNTQsIDk0MzU5LCA5NDM2MywgOTQzNjgsIDk0MzczLCA5NDM3OCwgOTQzODMsIAorICAgIDk0Mzg4LCA5NDM5MywgOTQzOTcsIDk0NDAxLCA5NDQwNiwgOTQ0MTEsIDk0NDE2LCA5NDQyMSwgOTQ0MjYsIDk0NDMxLCAKKyAgICA5NDQzNiwgOTQ0NDEsIDk0NDQ2LCA5NDQ1MSwgOTQ0NTYsIDk0NDYxLCA5NDQ2NiwgOTQ0NzEsIDk0NDc2LCA5NDQ4MSwgCisgICAgOTQ0ODYsIDk0NDkxLCA5NDQ5NiwgOTQ1MDEsIDk0NTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5NDUxMSwgOTQ1MTcsIDk0NTIyLCA5NDUyNywgOTQ1MzIsIDk0NTM3LCA5NDU0MiwgOTQ1NDcsIDk0NTUzLCAKKyAgICA5NDU1OCwgOTQ1NjQsIDk0NTcwLCA5NDU3NiwgOTQ1ODIsIDk0NTg4LCA5NDU5NCwgOTQ2MDAsIDk0NjA2LCA5NDYxMiwgCisgICAgOTQ2MTgsIDk0NjI1LCA5NDYzMiwgOTQ2MzksIDk0NjQ3LCA5NDY1NSwgOTQ2NjMsIDk0NjcxLCA5NDY3OSwgMCwgMCwgMCwgCisgICAgMCwgOTQ2ODcsIDk0NjkxLCA5NDY5NiwgOTQ3MDEsIDk0NzA2LCA5NDcxMCwgOTQ3MTUsIDk0NzIwLCA5NDcyNSwgOTQ3MzAsIAorICAgIDk0NzM0LCA5NDczOCwgOTQ3NDMsIDk0NzQ4LCA5NDc1MywgOTQ3NTgsIDk0NzYyLCA5NDc2NywgOTQ3NzIsIDk0Nzc3LCAKKyAgICA5NDc4MiwgOTQ3ODcsIDk0NzkyLCA5NDc5NiwgOTQ4MDEsIDk0ODA2LCA5NDgxMSwgOTQ4MTYsIDk0ODIxLCA5NDgyNiwgCisgICAgOTQ4MzEsIDk0ODM2LCA5NDg0MSwgOTQ4NDYsIDk0ODUxLCA5NDg1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTQ4NjMsIDk0ODY4LCA5NDg3MywgOTQ4NzgsIDk0ODgzLCA5NDg4OCwgOTQ4OTMsIDk0ODk4LCA5NDkwMywgCisgICAgOTQ5MDgsIDk0OTEzLCA5NDkxOCwgOTQ5MjMsIDk0OTI4LCA5NDkzMywgOTQ5MzgsIDk0OTQzLCA5NDk0OCwgOTQ5NTMsIAorICAgIDk0OTU4LCA5NDk2MywgOTQ5NjgsIDk0OTczLCA5NDk3OCwgOTQ5ODMsIDk0OTg4LCA5NDk5MywgMCwgMCwgMCwgMCwgMCwgCisgICAgOTUwMDAsIDk1MDA2LCA5NTAxMiwgOTUwMTgsIDk1MDI0LCA5NTAyOSwgOTUwMzUsIDk1MDQxLCA5NTA0NywgOTUwNTMsIAorICAgIDk1MDU4LCA5NTA2NCwgOTUwNzAsIDk1MDc2LCA5NTA4MiwgOTUwODgsIDk1MDk0LCA5NTEwMCwgOTUxMDYsIDk1MTEyLCAKKyAgICA5NTExNywgOTUxMjMsIDk1MTI5LCA5NTEzNSwgOTUxNDEsIDk1MTQ3LCA5NTE1MiwgOTUxNTgsIDk1MTY0LCA5NTE2OSwgCisgICAgOTUxNzUsIDk1MTgxLCA5NTE4NywgOTUxOTMsIDk1MTk5LCA5NTIwNSwgOTUyMTEsIDk1MjE2LCA5NTIyMiwgOTUyMjksIAorICAgIDk1MjM2LCA5NTI0MywgOTUyNTAsIDAsIDAsIDAsIDAsIDAsIDk1MjU3LCA5NTI2MiwgOTUyNjcsIDk1MjcyLCA5NTI3NywgCisgICAgOTUyODIsIDk1Mjg3LCA5NTI5MiwgOTUyOTcsIDk1MzAyLCA5NTMwNywgOTUzMTIsIDk1MzE3LCA5NTMyMiwgOTUzMjcsIAorICAgIDk1MzMyLCA5NTMzNywgOTUzNDIsIDk1MzQ3LCA5NTM1MiwgOTUzNTcsIDk1MzYyLCA5NTM2NywgOTUzNzIsIDk1Mzc3LCAKKyAgICA5NTM4MiwgOTUzODcsIDk1MzkxLCA5NTM5NSwgOTUzOTksIDAsIDk1NDA0LCA5NTQxMCwgOTU0MTUsIDk1NDIwLCA5NTQyNSwgCisgICAgOTU0MzAsIDk1NDM2LCA5NTQ0MiwgOTU0NDgsIDk1NDU0LCA5NTQ2MCwgOTU0NjYsIDk1NDcyLCA5NTQ3OCwgOTU0ODQsIAorICAgIDk1NDkwLCA5NTQ5NiwgOTU1MDIsIDk1NTA4LCA5NTUxMywgOTU1MTksIDk1NTI1LCA5NTUzMCwgOTU1MzYsIDk1NTQxLCAKKyAgICA5NTU0NywgOTU1NTMsIDk1NTU4LCA5NTU2NCwgOTU1NzAsIDk1NTc2LCA5NTU4MiwgOTU1ODcsIDk1NTkzLCA5NTU5OSwgCisgICAgOTU2MDUsIDk1NjExLCAwLCAwLCAwLCAwLCA5NTYxNiwgOTU2MjIsIDk1NjI4LCA5NTYzNCwgOTU2NDAsIDk1NjQ2LCAKKyAgICA5NTY1MiwgOTU2NTgsIDk1NjY0LCA5NTY3MSwgOTU2NzYsIDk1NjgxLCA5NTY4NywgOTU2OTMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0ODY5LCA5NDg3NSwgOTQ4ODEsIDk0ODg3LCA5NDg5NCwgCi0gICAgOTQ5MDAsIDk0OTA3LCA5NDkxNCwgOTQ5MjEsIDk0OTI4LCA5NDkzNiwgOTQ5NDMsIDk0OTUxLCA5NDk1NywgOTQ5NjMsIAotICAgIDk0OTY5LCA5NDk3NSwgOTQ5ODEsIDk0OTg3LCA5NDk5MywgOTQ5OTksIDk1MDA1LCA5NTAxMSwgOTUwMTcsIDk1MDIzLCAKLSAgICA5NTAyOSwgOTUwMzUsIDk1MDQxLCA5NTA0NywgOTUwNTMsIDk1MDU5LCA5NTA2NSwgOTUwNzEsIDk1MDc3LCA5NTA4MywgCi0gICAgOTUwODksIDk1MDk1LCA5NTEwMSwgOTUxMDcsIDk1MTEzLCA5NTExOSwgOTUxMjUsIDk1MTMxLCA5NTEzNywgOTUxNDQsIAotICAgIDk1MTUwLCA5NTE1NywgOTUxNjQsIDk1MTcxLCA5NTE3OCwgOTUxODYsIDk1MTkzLCA5NTIwMSwgOTUyMDcsIDk1MjEzLCAKLSAgICA5NTIxOSwgOTUyMjUsIDk1MjMxLCA5NTIzNywgOTUyNDMsIDk1MjQ5LCA5NTI1NSwgOTUyNjEsIDk1MjY3LCA5NTI3MywgCi0gICAgOTUyNzksIDk1Mjg1LCA5NTI5MSwgOTUyOTcsIDk1MzAzLCA5NTMwOSwgOTUzMTUsIDk1MzIxLCA5NTMyNywgOTUzMzMsIAotICAgIDk1MzM5LCA5NTM0NSwgOTUzNTEsIDk1MzU3LCA5NTM2MywgOTUzNjksIDk1Mzc0LCA5NTM3OSwgOTUzODQsIDk1Mzg5LCAKLSAgICA5NTM5NCwgOTUzOTksIDk1NDA0LCA5NTQwOSwgOTU0MTQsIDk1NDE5LCA5NTQyNCwgOTU0MjksIDk1NDM0LCA5NTQzOSwgCi0gICAgOTU0NDQsIDk1NDQ5LCA5NTQ1NCwgOTU0NTksIDk1NDY0LCA5NTQ2OSwgOTU0NzQsIDk1NDc5LCA5NTQ4NCwgOTU0ODksIAotICAgIDk1NDk0LCA5NTQ5OSwgOTU1MDQsIDk1NTA5LCA5NTUxNCwgOTU1MTksIDk1NTI0LCA5NTUyOSwgOTU1MzQsIDk1NTM5LCAKLSAgICA5NTU0NCwgOTU1NDksIDk1NTU0LCA5NTU1OSwgOTU1NjQsIDk1NTY5LCA5NTU3NCwgOTU1NzksIDk1NTg0LCA5NTU4OSwgCi0gICAgOTU1OTQsIDk1NTk5LCA5NTYwNCwgOTU2MDksIDk1NjE0LCA5NTYxOSwgOTU2MjQsIDk1NjI5LCA5NTYzNCwgOTU2MzksIAotICAgIDk1NjQ0LCA5NTY0OSwgOTU2NTQsIDk1NjU5LCA5NTY2NCwgOTU2NjksIDk1Njc0LCA5NTY3OSwgOTU2ODQsIDk1Njg5LCAKLSAgICA5NTY5NCwgOTU2OTksIDk1NzA0LCA5NTcwOSwgOTU3MTMsIDk1NzE3LCA5NTcyMSwgOTU3MjUsIDk1NzI5LCA5NTczMywgCi0gICAgOTU3MzcsIDk1NzQyLCA5NTc0NywgMCwgMCwgOTU3NTIsIDk1NzU3LCA5NTc2MSwgOTU3NjUsIDk1NzY5LCA5NTc3MywgCi0gICAgOTU3NzcsIDk1NzgxLCA5NTc4NiwgOTU3OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1Njk5LCA5NTcwNSwgOTU3MTEsIDk1NzE3LCA5NTcyNCwgCisgICAgOTU3MzAsIDk1NzM3LCA5NTc0NCwgOTU3NTEsIDk1NzU4LCA5NTc2NiwgOTU3NzMsIDk1NzgxLCA5NTc4NywgOTU3OTMsIAorICAgIDk1Nzk5LCA5NTgwNSwgOTU4MTEsIDk1ODE3LCA5NTgyMywgOTU4MjksIDk1ODM1LCA5NTg0MSwgOTU4NDcsIDk1ODUzLCAKKyAgICA5NTg1OSwgOTU4NjUsIDk1ODcxLCA5NTg3NywgOTU4ODMsIDk1ODg5LCA5NTg5NSwgOTU5MDEsIDk1OTA3LCA5NTkxMywgCisgICAgOTU5MTksIDk1OTI1LCA5NTkzMSwgOTU5MzcsIDk1OTQzLCA5NTk0OSwgOTU5NTUsIDk1OTYxLCA5NTk2NywgOTU5NzQsIAorICAgIDk1OTgwLCA5NTk4NywgOTU5OTQsIDk2MDAxLCA5NjAwOCwgOTYwMTYsIDk2MDIzLCA5NjAzMSwgOTYwMzcsIDk2MDQzLCAKKyAgICA5NjA0OSwgOTYwNTUsIDk2MDYxLCA5NjA2NywgOTYwNzMsIDk2MDc5LCA5NjA4NSwgOTYwOTEsIDk2MDk3LCA5NjEwMywgCisgICAgOTYxMDksIDk2MTE1LCA5NjEyMSwgOTYxMjcsIDk2MTMzLCA5NjEzOSwgOTYxNDUsIDk2MTUxLCA5NjE1NywgOTYxNjMsIAorICAgIDk2MTY5LCA5NjE3NSwgOTYxODEsIDk2MTg3LCA5NjE5MywgOTYxOTksIDk2MjA0LCA5NjIwOSwgOTYyMTQsIDk2MjE5LCAKKyAgICA5NjIyNCwgOTYyMjksIDk2MjM0LCA5NjIzOSwgOTYyNDQsIDk2MjQ5LCA5NjI1NCwgOTYyNTksIDk2MjY0LCA5NjI2OSwgCisgICAgOTYyNzQsIDk2Mjc5LCA5NjI4NCwgOTYyODksIDk2Mjk0LCA5NjI5OSwgOTYzMDQsIDk2MzA5LCA5NjMxNCwgOTYzMTksIAorICAgIDk2MzI0LCA5NjMyOSwgOTYzMzQsIDk2MzM5LCA5NjM0NCwgOTYzNDksIDk2MzU0LCA5NjM1OSwgOTYzNjQsIDk2MzY5LCAKKyAgICA5NjM3NCwgOTYzNzksIDk2Mzg0LCA5NjM4OSwgOTYzOTQsIDk2Mzk5LCA5NjQwNCwgOTY0MDksIDk2NDE0LCA5NjQxOSwgCisgICAgOTY0MjQsIDk2NDI5LCA5NjQzNCwgOTY0MzksIDk2NDQ0LCA5NjQ0OSwgOTY0NTQsIDk2NDU5LCA5NjQ2NCwgOTY0NjksIAorICAgIDk2NDc0LCA5NjQ3OSwgOTY0ODQsIDk2NDg5LCA5NjQ5NCwgOTY0OTksIDk2NTA0LCA5NjUwOSwgOTY1MTQsIDk2NTE5LCAKKyAgICA5NjUyNCwgOTY1MjksIDk2NTM0LCA5NjUzOSwgOTY1NDMsIDk2NTQ3LCA5NjU1MSwgOTY1NTUsIDk2NTU5LCA5NjU2MywgCisgICAgOTY1NjcsIDk2NTcyLCA5NjU3NywgMCwgMCwgOTY1ODIsIDk2NTg3LCA5NjU5MSwgOTY1OTUsIDk2NTk5LCA5NjYwMywgCisgICAgOTY2MDcsIDk2NjExLCA5NjYxNiwgOTY2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2NjI1LCA5NjYzMCwgOTY2MzYsIDk2NjQyLCAKKyAgICA5NjY0OCwgOTY2NTQsIDk2NjYwLCA5NjY2NiwgOTY2NzEsIDk2Njc3LCA5NjY4MiwgOTY2ODgsIDk2NjkzLCA5NjY5OCwgCisgICAgOTY3MDQsIDk2NzEwLCA5NjcxNSwgOTY3MjAsIDk2NzI1LCA5NjczMCwgOTY3MzYsIDk2NzQxLCA5Njc0NywgOTY3NTMsIAorICAgIDk2NzU5LCA5Njc2NSwgOTY3NzEsIDk2Nzc3LCA5Njc4MywgOTY3ODksIDk2Nzk1LCA5NjgwMCwgOTY4MDYsIDk2ODEyLCAKKyAgICA5NjgxOCwgOTY4MjQsIDAsIDAsIDAsIDAsIDk2ODMwLCA5NjgzNSwgOTY4NDEsIDk2ODQ3LCA5Njg1MywgOTY4NTksIAorICAgIDk2ODY1LCA5Njg3MSwgOTY4NzYsIDk2ODgyLCA5Njg4NywgOTY4OTMsIDk2ODk4LCA5NjkwMywgOTY5MDksIDk2OTE1LCAKKyAgICA5NjkyMCwgOTY5MjUsIDk2OTMwLCA5NjkzNSwgOTY5NDEsIDk2OTQ2LCA5Njk1MiwgOTY5NTgsIDk2OTY0LCA5Njk3MCwgCisgICAgOTY5NzYsIDk2OTgyLCA5Njk4OCwgOTY5OTQsIDk3MDAwLCA5NzAwNSwgOTcwMTEsIDk3MDE3LCA5NzAyMywgOTcwMjksIDAsIAorICAgIDAsIDAsIDAsIDk3MDM1LCA5NzAzOSwgOTcwNDQsIDk3MDQ5LCA5NzA1NCwgOTcwNTksIDk3MDY0LCA5NzA2OSwgOTcwNzQsIAorICAgIDk3MDc4LCA5NzA4MywgOTcwODgsIDk3MDkzLCA5NzA5OCwgOTcxMDIsIDk3MTA3LCA5NzExMiwgOTcxMTcsIDk3MTIyLCAKKyAgICA5NzEyNywgOTcxMzIsIDk3MTM2LCA5NzE0MSwgOTcxNDUsIDk3MTUwLCA5NzE1NSwgOTcxNjAsIDk3MTY1LCA5NzE3MCwgCisgICAgOTcxNzUsIDk3MTgwLCA5NzE4NSwgOTcxODksIDk3MTk0LCA5NzE5OSwgOTcyMDQsIDk3MjA5LCA5NzIxNCwgOTcyMTksIAorICAgIDk3MjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NzIyOSwgOTcyMzYsIDk3MjQzLCA5NzI1MCwgOTcyNTcsIDk3MjY0LCAKKyAgICA5NzI3MSwgOTcyNzgsIDk3Mjg1LCA5NzI5MiwgOTcyOTksIDk3MzA2LCA5NzMxMywgOTczMjAsIDk3MzI3LCA5NzMzNCwgCisgICAgOTczNDEsIDk3MzQ4LCA5NzM1NSwgOTczNjIsIDk3MzY5LCA5NzM3NiwgOTczODMsIDk3MzkwLCA5NzM5NywgOTc0MDQsIAorICAgIDk3NDExLCA5NzQxOCwgOTc0MjUsIDk3NDMyLCA5NzQzOSwgOTc0NDYsIDk3NDUzLCA5NzQ2MCwgOTc0NjcsIDk3NDc0LCAKKyAgICA5NzQ4MSwgOTc0ODgsIDk3NDk1LCA5NzUwMiwgOTc1MDksIDk3NTE2LCA5NzUyMywgOTc1MzAsIDk3NTM3LCA5NzU0NCwgCisgICAgOTc1NTEsIDk3NTU4LCA5NzU2NSwgOTc1NzIsIDk3NTc5LCA5NzU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOTc1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk1Nzk1LCA5NTc5OSwgOTU4MDQsIDk1ODA5LCA5NTgxNCwgOTU4MTksIDk1ODI0LCA5NTgyOSwgOTU4MzQsIDk1ODM4LCAKLSAgICA5NTg0MywgOTU4NDgsIDk1ODUzLCA5NTg1OCwgOTU4NjIsIDk1ODY3LCA5NTg3MiwgOTU4NzcsIDk1ODgyLCA5NTg4NywgCi0gICAgOTU4OTIsIDk1ODk3LCA5NTkwMiwgOTU5MDYsIDk1OTExLCA5NTkxNiwgOTU5MjEsIDk1OTI2LCA5NTkzMSwgOTU5MzYsIAotICAgIDk1OTQxLCA5NTk0NiwgOTU5NTAsIDk1OTU1LCA5NTk2MCwgOTU5NjUsIDk1OTcwLCA5NTk3NSwgOTU5ODAsIDk1OTg1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTk5MCwgOTU5OTcsIDk2MDA0LCA5NjAxMSwgOTYwMTgsIDk2MDI1LCA5NjAzMiwgCi0gICAgOTYwMzksIDk2MDQ2LCA5NjA1MywgOTYwNjAsIDk2MDY3LCA5NjA3NCwgOTYwODEsIDk2MDg4LCA5NjA5NSwgOTYxMDIsIAotICAgIDk2MTA5LCA5NjExNiwgOTYxMjMsIDk2MTMwLCA5NjEzNywgOTYxNDQsIDk2MTUxLCA5NjE1OCwgOTYxNjUsIDk2MTcyLCAKLSAgICA5NjE3OSwgOTYxODYsIDk2MTkzLCA5NjIwMCwgOTYyMDcsIDk2MjE0LCA5NjIyMSwgOTYyMjgsIDk2MjM1LCA5NjI0MiwgCi0gICAgOTYyNDksIDk2MjU2LCA5NjI2MywgOTYyNzAsIDk2Mjc3LCA5NjI4NCwgOTYyOTEsIDk2Mjk4LCA5NjMwNSwgOTYzMTIsIAotICAgIDk2MzE5LCA5NjMyNiwgOTYzMzMsIDk2MzQwLCA5NjM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTYzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDk3NjAwLCA5NzYwNSwgOTc2MTAsIDk3NjE1LCA5NzYyMCwgOTc2MjUsIDk3NjMwLCA5NzYzNSwgOTc2NDAsIAorICAgIDk3NjQ1LCA5NzY1MCwgOTc2NTUsIDk3NjYwLCA5NzY2NSwgOTc2NzAsIDk3Njc1LCA5NzY4MCwgOTc2ODUsIDk3NjkwLCAKKyAgICA5NzY5NSwgOTc3MDAsIDk3NzA1LCA5NzcxMCwgOTc3MTUsIDk3NzIwLCA5NzcyNSwgOTc3MzAsIDk3NzM1LCA5Nzc0MCwgCisgICAgOTc3NDUsIDk3NzUwLCA5Nzc1NSwgOTc3NjAsIDk3NzY1LCA5Nzc3MCwgOTc3NzUsIDk3NzgwLCA5Nzc4NSwgOTc3OTAsIAorICAgIDk3Nzk1LCA5NzgwMCwgOTc4MDUsIDk3ODEwLCA5NzgxNSwgOTc4MjAsIDk3ODI1LCA5NzgzMCwgOTc4MzUsIDk3ODQwLCAKKyAgICA5Nzg0NSwgOTc4NTAsIDk3ODU1LCA5Nzg2MCwgOTc4NjUsIDk3ODcwLCA5Nzg3NSwgOTc4ODAsIDk3ODg1LCA5Nzg5MCwgCisgICAgOTc4OTUsIDk3OTAwLCA5NzkwNSwgOTc5MTAsIDk3OTE1LCA5NzkyMCwgOTc5MjUsIDk3OTMwLCA5NzkzNSwgOTc5NDAsIAorICAgIDk3OTQ1LCA5Nzk1MCwgOTc5NTUsIDk3OTYwLCA5Nzk2NSwgOTc5NzAsIDk3OTc1LCA5Nzk4MCwgOTc5ODUsIDk3OTkwLCAKKyAgICA5Nzk5NSwgOTgwMDAsIDk4MDA1LCA5ODAxMCwgOTgwMTUsIDk4MDIwLCA5ODAyNSwgOTgwMzAsIDk4MDM1LCA5ODA0MCwgCisgICAgOTgwNDUsIDk4MDUwLCA5ODA1NSwgOTgwNjAsIDk4MDY1LCA5ODA3MCwgOTgwNzUsIDk4MDgwLCA5ODA4NSwgOTgwOTAsIAorICAgIDk4MDk1LCA5ODEwMCwgOTgxMDUsIDk4MTEwLCA5ODExNSwgOTgxMjAsIDk4MTI1LCA5ODEzMCwgOTgxMzUsIDk4MTQwLCAKKyAgICA5ODE0NSwgOTgxNTAsIDk4MTU1LCA5ODE2MCwgOTgxNjUsIDk4MTcwLCA5ODE3NSwgOTgxODAsIDk4MTg1LCA5ODE5MCwgCisgICAgOTgxOTUsIDk4MjAwLCA5ODIwNSwgOTgyMTAsIDk4MjE1LCA5ODIyMCwgOTgyMjUsIDk4MjMwLCA5ODIzNSwgOTgyNDAsIAorICAgIDk4MjQ1LCA5ODI1MCwgOTgyNTUsIDk4MjYwLCA5ODI2NSwgOTgyNzAsIDk4Mjc1LCA5ODI4MCwgOTgyODUsIDk4MjkwLCAKKyAgICA5ODI5NSwgOTgzMDAsIDk4MzA1LCA5ODMxMCwgOTgzMTUsIDk4MzIwLCA5ODMyNSwgOTgzMzAsIDk4MzM1LCA5ODM0MCwgCisgICAgOTgzNDUsIDk4MzUwLCA5ODM1NSwgOTgzNjAsIDk4MzY1LCA5ODM3MCwgOTgzNzUsIDk4MzgwLCA5ODM4NSwgOTgzOTAsIAorICAgIDk4Mzk1LCA5ODQwMCwgOTg0MDUsIDk4NDEwLCA5ODQxNSwgOTg0MjAsIDk4NDI1LCA5ODQzMCwgOTg0MzUsIDk4NDQwLCAKKyAgICA5ODQ0NSwgOTg0NTAsIDk4NDU1LCA5ODQ2MCwgOTg0NjUsIDk4NDcwLCA5ODQ3NSwgOTg0ODAsIDk4NDg1LCA5ODQ5MCwgCisgICAgOTg0OTUsIDk4NTAwLCA5ODUwNSwgOTg1MTAsIDk4NTE1LCA5ODUyMCwgOTg1MjUsIDk4NTMwLCA5ODUzNSwgOTg1NDAsIAorICAgIDk4NTQ1LCA5ODU1MCwgOTg1NTUsIDk4NTYwLCA5ODU2NSwgOTg1NzAsIDk4NTc1LCA5ODU4MCwgOTg1ODUsIDk4NTkwLCAKKyAgICA5ODU5NSwgOTg2MDAsIDk4NjA1LCA5ODYxMCwgOTg2MTUsIDk4NjIwLCA5ODYyNSwgOTg2MzAsIDk4NjM1LCA5ODY0MCwgCisgICAgOTg2NDUsIDk4NjUwLCA5ODY1NSwgOTg2NjAsIDk4NjY1LCA5ODY3MCwgOTg2NzUsIDk4NjgwLCA5ODY4NSwgOTg2OTAsIAorICAgIDk4Njk1LCA5ODcwMCwgOTg3MDUsIDk4NzEwLCA5ODcxNSwgOTg3MjAsIDk4NzI1LCA5ODczMCwgOTg3MzUsIDk4NzQwLCAKKyAgICA5ODc0NSwgOTg3NTAsIDk4NzU1LCA5ODc2MCwgOTg3NjUsIDk4NzcwLCA5ODc3NSwgOTg3ODAsIDk4Nzg1LCA5ODc5MCwgCisgICAgOTg3OTUsIDk4ODAwLCA5ODgwNSwgOTg4MTAsIDk4ODE1LCA5ODgyMCwgOTg4MjUsIDk4ODMwLCA5ODgzNSwgOTg4NDAsIAorICAgIDk4ODQ1LCA5ODg1MCwgOTg4NTUsIDk4ODYwLCA5ODg2NSwgOTg4NzAsIDk4ODc1LCA5ODg4MCwgOTg4ODUsIDk4ODkwLCAKKyAgICA5ODg5NSwgOTg5MDAsIDk4OTA1LCA5ODkxMCwgOTg5MTUsIDk4OTIwLCA5ODkyNSwgOTg5MzAsIDk4OTM1LCA5ODk0MCwgCisgICAgOTg5NDUsIDk4OTUwLCA5ODk1NSwgOTg5NjAsIDk4OTY1LCA5ODk3MCwgOTg5NzUsIDk4OTgwLCA5ODk4NSwgOTg5OTAsIAorICAgIDk4OTk1LCA5OTAwMCwgOTkwMDUsIDk5MDEwLCA5OTAxNSwgOTkwMjAsIDk5MDI1LCA5OTAzMCwgOTkwMzUsIDk5MDQwLCAKKyAgICA5OTA0NSwgOTkwNTAsIDk5MDU1LCA5OTA2MCwgOTkwNjUsIDk5MDcwLCA5OTA3NSwgOTkwODAsIDk5MDg1LCA5OTA5MCwgCisgICAgOTkwOTUsIDk5MTAwLCA5OTEwNSwgOTkxMTAsIDk5MTE1LCA5OTEyMCwgOTkxMjUsIDk5MTMwLCA5OTEzNSwgOTkxNDAsIAorICAgIDk5MTQ1LCA5OTE1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTkxNTUsIDk5MTYxLCA5OTE2OCwgOTkxNzUsIAorICAgIDk5MTgxLCA5OTE4OCwgOTkxOTUsIDk5MjAyLCA5OTIwOSwgOTkyMTUsIDk5MjIyLCA5OTIyOSwgOTkyMzYsIDk5MjQzLCAKKyAgICA5OTI1MCwgOTkyNTcsIDk5MjY0LCA5OTI3MSwgOTkyNzgsIDk5Mjg1LCA5OTI5MiwgOTkyOTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDk5MzA2LCA5OTMxMSwgOTkzMTYsIDk5MzIxLCA5OTMyNiwgOTkzMzEsIDk5MzM2LCA5OTM0MSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTYzNjEsIDk2MzY2LCA5NjM3MSwgOTYzNzYsIDk2MzgxLCA5NjM4NiwgOTYzOTEsIDk2Mzk2LCA5NjQwMSwgCi0gICAgOTY0MDYsIDk2NDExLCA5NjQxNiwgOTY0MjEsIDk2NDI2LCA5NjQzMSwgOTY0MzYsIDk2NDQxLCA5NjQ0NiwgOTY0NTEsIAotICAgIDk2NDU2LCA5NjQ2MSwgOTY0NjYsIDk2NDcxLCA5NjQ3NiwgOTY0ODEsIDk2NDg2LCA5NjQ5MSwgOTY0OTYsIDk2NTAxLCAKLSAgICA5NjUwNiwgOTY1MTEsIDk2NTE2LCA5NjUyMSwgOTY1MjYsIDk2NTMxLCA5NjUzNiwgOTY1NDEsIDk2NTQ2LCA5NjU1MSwgCi0gICAgOTY1NTYsIDk2NTYxLCA5NjU2NiwgOTY1NzEsIDk2NTc2LCA5NjU4MSwgOTY1ODYsIDk2NTkxLCA5NjU5NiwgOTY2MDEsIAotICAgIDk2NjA2LCA5NjYxMSwgOTY2MTYsIDk2NjIxLCA5NjYyNiwgOTY2MzEsIDk2NjM2LCA5NjY0MSwgOTY2NDYsIDk2NjUxLCAKLSAgICA5NjY1NiwgOTY2NjEsIDk2NjY2LCA5NjY3MSwgOTY2NzYsIDk2NjgxLCA5NjY4NiwgOTY2OTEsIDk2Njk2LCA5NjcwMSwgCi0gICAgOTY3MDYsIDk2NzExLCA5NjcxNiwgOTY3MjEsIDk2NzI2LCA5NjczMSwgOTY3MzYsIDk2NzQxLCA5Njc0NiwgOTY3NTEsIAotICAgIDk2NzU2LCA5Njc2MSwgOTY3NjYsIDk2NzcxLCA5Njc3NiwgOTY3ODEsIDk2Nzg2LCA5Njc5MSwgOTY3OTYsIDk2ODAxLCAKLSAgICA5NjgwNiwgOTY4MTEsIDk2ODE2LCA5NjgyMSwgOTY4MjYsIDk2ODMxLCA5NjgzNiwgOTY4NDEsIDk2ODQ2LCA5Njg1MSwgCi0gICAgOTY4NTYsIDk2ODYxLCA5Njg2NiwgOTY4NzEsIDk2ODc2LCA5Njg4MSwgOTY4ODYsIDk2ODkxLCA5Njg5NiwgOTY5MDEsIAotICAgIDk2OTA2LCA5NjkxMSwgOTY5MTYsIDk2OTIxLCA5NjkyNiwgOTY5MzEsIDk2OTM2LCA5Njk0MSwgOTY5NDYsIDk2OTUxLCAKLSAgICA5Njk1NiwgOTY5NjEsIDk2OTY2LCA5Njk3MSwgOTY5NzYsIDk2OTgxLCA5Njk4NiwgOTY5OTEsIDk2OTk2LCA5NzAwMSwgCi0gICAgOTcwMDYsIDk3MDExLCA5NzAxNiwgOTcwMjEsIDk3MDI2LCA5NzAzMSwgOTcwMzYsIDk3MDQxLCA5NzA0NiwgOTcwNTEsIAotICAgIDk3MDU2LCA5NzA2MSwgOTcwNjYsIDk3MDcxLCA5NzA3NiwgOTcwODEsIDk3MDg2LCA5NzA5MSwgOTcwOTYsIDk3MTAxLCAKLSAgICA5NzEwNiwgOTcxMTEsIDk3MTE2LCA5NzEyMSwgOTcxMjYsIDk3MTMxLCA5NzEzNiwgOTcxNDEsIDk3MTQ2LCA5NzE1MSwgCi0gICAgOTcxNTYsIDk3MTYxLCA5NzE2NiwgOTcxNzEsIDk3MTc2LCA5NzE4MSwgOTcxODYsIDk3MTkxLCA5NzE5NiwgOTcyMDEsIAotICAgIDk3MjA2LCA5NzIxMSwgOTcyMTYsIDk3MjIxLCA5NzIyNiwgOTcyMzEsIDk3MjM2LCA5NzI0MSwgOTcyNDYsIDk3MjUxLCAKLSAgICA5NzI1NiwgOTcyNjEsIDk3MjY2LCA5NzI3MSwgOTcyNzYsIDk3MjgxLCA5NzI4NiwgOTcyOTEsIDk3Mjk2LCA5NzMwMSwgCi0gICAgOTczMDYsIDk3MzExLCA5NzMxNiwgOTczMjEsIDk3MzI2LCA5NzMzMSwgOTczMzYsIDk3MzQxLCA5NzM0NiwgOTczNTEsIAotICAgIDk3MzU2LCA5NzM2MSwgOTczNjYsIDk3MzcxLCA5NzM3NiwgOTczODEsIDk3Mzg2LCA5NzM5MSwgOTczOTYsIDk3NDAxLCAKLSAgICA5NzQwNiwgOTc0MTEsIDk3NDE2LCA5NzQyMSwgOTc0MjYsIDk3NDMxLCA5NzQzNiwgOTc0NDEsIDk3NDQ2LCA5NzQ1MSwgCi0gICAgOTc0NTYsIDk3NDYxLCA5NzQ2NiwgOTc0NzEsIDk3NDc2LCA5NzQ4MSwgOTc0ODYsIDk3NDkxLCA5NzQ5NiwgOTc1MDEsIAotICAgIDk3NTA2LCA5NzUxMSwgOTc1MTYsIDk3NTIxLCA5NzUyNiwgOTc1MzEsIDk3NTM2LCA5NzU0MSwgOTc1NDYsIDk3NTUxLCAKLSAgICA5NzU1NiwgOTc1NjEsIDk3NTY2LCA5NzU3MSwgOTc1NzYsIDk3NTgxLCA5NzU4NiwgOTc1OTEsIDk3NTk2LCA5NzYwMSwgCi0gICAgOTc2MDYsIDk3NjExLCA5NzYxNiwgOTc2MjEsIDk3NjI2LCA5NzYzMSwgOTc2MzYsIDk3NjQxLCA5NzY0NiwgOTc2NTEsIAotICAgIDk3NjU2LCA5NzY2MSwgOTc2NjYsIDk3NjcxLCA5NzY3NiwgOTc2ODEsIDk3Njg2LCA5NzY5MSwgOTc2OTYsIDk3NzAxLCAKLSAgICA5NzcwNiwgOTc3MTEsIDk3NzE2LCA5NzcyMSwgOTc3MjYsIDk3NzMxLCA5NzczNiwgOTc3NDEsIDk3NzQ2LCA5Nzc1MSwgCi0gICAgOTc3NTYsIDk3NzYxLCA5Nzc2NiwgOTc3NzEsIDk3Nzc2LCA5Nzc4MSwgOTc3ODYsIDk3NzkxLCA5Nzc5NiwgOTc4MDEsIAotICAgIDk3ODA2LCA5NzgxMSwgOTc4MTYsIDk3ODIxLCA5NzgyNiwgOTc4MzEsIDk3ODM2LCA5Nzg0MSwgOTc4NDYsIDk3ODUxLCAKLSAgICA5Nzg1NiwgOTc4NjEsIDk3ODY2LCA5Nzg3MSwgOTc4NzYsIDk3ODgxLCA5Nzg4NiwgOTc4OTEsIDk3ODk2LCA5NzkwMSwgCi0gICAgOTc5MDYsIDk3OTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NzkxNiwgOTc5MjIsIDk3OTI5LCA5NzkzNiwgCi0gICAgOTc5NDIsIDk3OTQ5LCA5Nzk1NiwgOTc5NjMsIDk3OTcwLCA5Nzk3NiwgOTc5ODMsIDk3OTkwLCA5Nzk5NywgOTgwMDQsIAotICAgIDk4MDExLCA5ODAxOCwgOTgwMjUsIDk4MDMyLCA5ODAzOSwgOTgwNDYsIDk4MDUzLCA5ODA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTgwNjcsIDk4MDcyLCA5ODA3NywgOTgwODIsIDk4MDg3LCA5ODA5MiwgOTgwOTcsIDk4MTAyLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5OTM0NiwgOTkzNTAsIDk5MzU0LCA5OTM1OCwgOTkzNjIsIDk5MzY2LCAwLCAwLCA5OTM3MSwgCisgICAgMCwgOTkzNzYsIDk5MzgwLCA5OTM4NSwgOTkzOTAsIDk5Mzk1LCA5OTQwMCwgOTk0MDQsIDk5NDA5LCA5OTQxNCwgOTk0MTksIAorICAgIDk5NDI0LCA5OTQyOCwgOTk0MzMsIDk5NDM4LCA5OTQ0MywgOTk0NDgsIDk5NDUyLCA5OTQ1NywgOTk0NjIsIDk5NDY3LCAKKyAgICA5OTQ3MiwgOTk0NzYsIDk5NDgxLCA5OTQ4NiwgOTk0OTEsIDk5NDk2LCA5OTUwMSwgOTk1MDYsIDk5NTExLCA5OTUxNiwgCisgICAgOTk1MjEsIDk5NTI2LCA5OTUzMSwgOTk1MzYsIDk5NTQxLCA5OTU0NiwgOTk1NTEsIDk5NTU2LCA5OTU2MSwgOTk1NjUsIAorICAgIDk5NTcwLCA5OTU3NSwgOTk1ODAsIDk5NTg1LCAwLCA5OTU5MCwgOTk1OTUsIDAsIDAsIDAsIDk5NjAwLCAwLCAwLCA5OTYwNSwgCisgICAgOTk2MTAsIDk5NjE3LCA5OTYyNCwgOTk2MzEsIDk5NjM4LCA5OTY0NSwgOTk2NTIsIDk5NjU5LCA5OTY2NiwgOTk2NzMsIAorICAgIDk5NjgwLCA5OTY4NywgOTk2OTQsIDk5NzAxLCA5OTcwOCwgOTk3MTUsIDk5NzIyLCA5OTcyOSwgOTk3MzYsIDk5NzQzLCAKKyAgICA5OTc1MCwgOTk3NTcsIDAsIDk5NzY0LCA5OTc3MSwgOTk3NzcsIDk5NzgzLCA5OTc4OSwgOTk3OTYsIDk5ODAzLCA5OTgxMSwgCisgICAgOTk4MTksIDk5ODI4LCA5OTgzMywgOTk4MzgsIDk5ODQzLCA5OTg0OCwgOTk4NTMsIDk5ODU4LCA5OTg2MywgOTk4NjgsIAorICAgIDk5ODczLCA5OTg3OCwgOTk4ODMsIDk5ODg4LCA5OTg5MywgOTk4OTksIDk5OTA0LCA5OTkwOSwgOTk5MTQsIDk5OTE5LCAKKyAgICA5OTkyNCwgOTk5MjksIDk5OTM0LCA5OTkzOSwgOTk5NDQsIDk5OTUwLCA5OTk1NiwgOTk5NjAsIDk5OTY0LCA5OTk2OCwgCisgICAgOTk5NzIsIDk5OTc2LCA5OTk4MSwgOTk5ODYsIDk5OTkyLCA5OTk5NywgMTAwMDAzLCAxMDAwMDgsIDEwMDAxMywgMTAwMDE4LCAKKyAgICAxMDAwMjQsIDEwMDAyOSwgMTAwMDM0LCAxMDAwMzksIDEwMDA0NCwgMTAwMDQ5LCAxMDAwNTUsIDEwMDA2MCwgMTAwMDY2LCAKKyAgICAxMDAwNzEsIDEwMDA3NywgMTAwMDgyLCAxMDAwODgsIDEwMDA5MywgMTAwMDk5LCAxMDAxMDQsIDEwMDEwOSwgMTAwMTE0LCAKKyAgICAxMDAxMTksIDEwMDEyNCwgMTAwMTI5LCAxMDAxMzQsIDEwMDE0MCwgMTAwMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDAxNTAsIDEwMDE1NCwgMTAwMTU4LCAxMDAxNjIsIDEwMDE2NiwgMTAwMTcyLCAxMDAxNzYsIDEwMDE4MSwgMTAwMTg2LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5ODEwNywgOTgxMTEsIDk4MTE1LCA5ODExOSwgOTgxMjMsIDk4MTI3LCAwLCAwLCA5ODEzMiwgCi0gICAgMCwgOTgxMzcsIDk4MTQxLCA5ODE0NiwgOTgxNTEsIDk4MTU2LCA5ODE2MSwgOTgxNjYsIDk4MTcxLCA5ODE3NiwgOTgxODEsIAotICAgIDk4MTg2LCA5ODE5MCwgOTgxOTUsIDk4MjAwLCA5ODIwNSwgOTgyMTAsIDk4MjE1LCA5ODIyMCwgOTgyMjUsIDk4MjMwLCAKLSAgICA5ODIzNSwgOTgyMzksIDk4MjQ0LCA5ODI0OSwgOTgyNTQsIDk4MjU5LCA5ODI2NCwgOTgyNjksIDk4Mjc0LCA5ODI3OSwgCi0gICAgOTgyODQsIDk4Mjg5LCA5ODI5NCwgOTgyOTksIDk4MzA0LCA5ODMwOSwgOTgzMTQsIDk4MzE5LCA5ODMyNCwgOTgzMjgsIAotICAgIDk4MzMzLCA5ODMzOCwgOTgzNDMsIDk4MzQ4LCAwLCA5ODM1MywgOTgzNTgsIDAsIDAsIDAsIDk4MzYzLCAwLCAwLCA5ODM2OCwgCi0gICAgOTgzNzMsIDk4MzgwLCA5ODM4NywgOTgzOTQsIDk4NDAxLCA5ODQwOCwgOTg0MTUsIDk4NDIyLCA5ODQyOSwgOTg0MzYsIAotICAgIDk4NDQzLCA5ODQ1MCwgOTg0NTcsIDk4NDY0LCA5ODQ3MSwgOTg0NzgsIDk4NDg1LCA5ODQ5MiwgOTg0OTksIDk4NTA2LCAKLSAgICA5ODUxMywgOTg1MjAsIDAsIDk4NTI3LCA5ODUzNCwgOTg1NDAsIDk4NTQ2LCA5ODU1MiwgOTg1NTksIDk4NTY2LCA5ODU3NCwgCi0gICAgOTg1ODIsIDk4NTkxLCA5ODU5NiwgOTg2MDEsIDk4NjA2LCA5ODYxMSwgOTg2MTYsIDk4NjIxLCA5ODYyNiwgOTg2MzEsIAotICAgIDk4NjM2LCA5ODY0MSwgOTg2NDYsIDk4NjUxLCA5ODY1NiwgOTg2NjIsIDk4NjY3LCA5ODY3MiwgOTg2NzcsIDk4NjgyLCAKLSAgICA5ODY4NywgOTg2OTIsIDk4Njk3LCA5ODcwMiwgOTg3MDcsIDk4NzEzLCA5ODcxOSwgOTg3MjMsIDk4NzI3LCA5ODczMSwgCi0gICAgOTg3MzUsIDk4NzM5LCA5ODc0NCwgOTg3NDksIDk4NzU1LCA5ODc2MCwgOTg3NjYsIDk4NzcxLCA5ODc3NiwgOTg3ODEsIAotICAgIDk4Nzg3LCA5ODc5MiwgOTg3OTcsIDk4ODAyLCA5ODgwNywgOTg4MTIsIDk4ODE4LCA5ODgyMywgOTg4MjksIDk4ODM0LCAKLSAgICA5ODg0MCwgOTg4NDUsIDk4ODUxLCA5ODg1NiwgOTg4NjIsIDk4ODY3LCA5ODg3MiwgOTg4NzcsIDk4ODgyLCA5ODg4NywgCi0gICAgOTg4OTIsIDk4ODk3LCA5ODkwMywgOTg5MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTEzLCA5ODkxNywgOTg5MjEsIAotICAgIDk4OTI1LCA5ODkyOSwgOTg5MzUsIDk4OTM5LCA5ODk0NCwgOTg5NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTU1LCA5ODk2MCwgOTg5NjUsIDk4OTcwLCAKLSAgICA5ODk3NSwgOTg5ODAsIDk4OTg1LCA5ODk5MCwgOTg5OTUsIDk5MDAwLCA5OTAwNSwgOTkwMTAsIDk5MDE1LCA5OTAyMCwgCi0gICAgOTkwMjUsIDk5MDMwLCA5OTAzNSwgOTkwNDAsIDk5MDQ1LCAwLCA5OTA1MCwgOTkwNTUsIDAsIDAsIDAsIDAsIDAsIDk5MDYwLCAKLSAgICA5OTA2NCwgOTkwNjgsIDk5MDczLCA5OTA3OCwgOTkwODQsIDk5MDg5LCA5OTA5NCwgOTkwOTksIDk5MTA0LCA5OTEwOSwgCi0gICAgOTkxMTQsIDk5MTE5LCA5OTEyNCwgOTkxMjksIDk5MTM0LCA5OTEzOSwgOTkxNDQsIDk5MTQ5LCA5OTE1NCwgOTkxNTksIAotICAgIDk5MTY0LCA5OTE2OSwgOTkxNzQsIDk5MTc5LCA5OTE4NCwgOTkxODksIDk5MTk0LCA5OTE5OCwgOTkyMDMsIDk5MjA4LCAKLSAgICA5OTIxNCwgOTkyMTgsIDAsIDAsIDAsIDk5MjIyLCA5OTIyOCwgOTkyMzIsIDk5MjM3LCA5OTI0MiwgOTkyNDcsIDk5MjUxLCAKLSAgICA5OTI1NiwgOTkyNjAsIDk5MjY1LCA5OTI3MCwgOTkyNzQsIDk5Mjc5LCA5OTI4NCwgOTkyODgsIDk5MjkyLCA5OTI5NywgCi0gICAgOTkzMDIsIDk5MzA2LCA5OTMxMSwgOTkzMTYsIDk5MzIwLCA5OTMyNSwgOTkzMzAsIDk5MzM1LCA5OTM0MCwgOTkzNDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDk5MzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OTM1NSwgCi0gICAgOTkzNjAsIDk5MzY1LCA5OTM3MCwgOTkzNzUsIDk5MzgwLCA5OTM4NiwgOTkzOTIsIDk5Mzk4LCA5OTQwMywgOTk0MDgsIAotICAgIDk5NDE0LCA5OTQyMCwgOTk0MjYsIDk5NDMyLCA5OTQzOCwgOTk0NDQsIDk5NDUwLCA5OTQ1NiwgOTk0NjIsIDk5NDY4LCAKLSAgICA5OTQ3NCwgOTk0ODAsIDk5NDg1LCA5OTQ5MSwgOTk0OTcsIDk5NTAzLCA5OTUwOSwgOTk1MTUsIDk5NTIwLCA5OTUyNiwgCi0gICAgOTk1MzIsIDk5NTM4LCA5OTU0MiwgOTk1NDYsIDk5NTUwLCA5OTU1NCwgOTk1NTgsIDk5NTYzLCA5OTU2OCwgOTk1NzIsIAotICAgIDk5NTc2LCA5OTU4MSwgOTk1ODYsIDk5NTkxLCA5OTU5NiwgOTk2MDEsIDk5NjA2LCA5OTYxMSwgOTk2MTgsIDk5NjIzLCAKLSAgICA5OTYyNywgOTk2MzIsIDk5NjM3LCA5OTY0MiwgOTk2NDYsIDAsIDAsIDAsIDAsIDk5NjUxLCA5OTY1OSwgOTk2NjYsIAotICAgIDk5NjcyLCA5OTY3OCwgOTk2ODIsIDk5Njg2LCA5OTY5MCwgOTk2OTQsIDk5Njk4LCA5OTcwMiwgOTk3MDcsIDk5NzExLCAKLSAgICA5OTcxNiwgOTk3MjEsIDk5NzI2LCA5OTczMSwgOTk3MzYsIDk5NzQxLCA5OTc0NiwgMCwgMCwgOTk3NTEsIDk5NzU3LCAKLSAgICA5OTc2MywgOTk3NjksIDk5Nzc2LCA5OTc4MywgOTk3OTAsIDk5Nzk3LCA5OTgwNCwgOTk4MTEsIDk5ODE3LCA5OTgyMywgCi0gICAgOTk4MjksIDk5ODM2LCA5OTg0MywgOTk4NTAsIDk5ODU3LCA5OTg2NCwgOTk4NzEsIDk5ODc4LCA5OTg4NSwgOTk4OTIsIAotICAgIDk5ODk5LCA5OTkwNiwgOTk5MTMsIDk5OTIwLCA5OTkyNywgOTk5MzQsIDk5OTQyLCA5OTk1MCwgOTk5NTgsIDk5OTY3LCAKLSAgICA5OTk3NiwgOTk5ODUsIDk5OTk0LCAxMDAwMDMsIDEwMDAxMiwgMTAwMDE5LCAxMDAwMjYsIDEwMDAzMywgMTAwMDQxLCAKLSAgICAxMDAwNDksIDEwMDA1NywgMTAwMDY1LCAxMDAwNzMsIDEwMDA4MSwgMTAwMDg5LCAxMDAwOTMsIDEwMDA5OCwgMTAwMTAzLCAKLSAgICAwLCAxMDAxMDksIDEwMDExNCwgMCwgMCwgMCwgMCwgMCwgMTAwMTE5LCAxMDAxMjUsIDEwMDEzMiwgMTAwMTM3LCAxMDAxNDIsIAotICAgIDEwMDE0NiwgMTAwMTUxLCAxMDAxNTYsIDAsIDEwMDE2MSwgMTAwMTY2LCAxMDAxNzEsIDAsIDEwMDE3NiwgMTAwMTgxLCAKLSAgICAxMDAxODYsIDEwMDE5MSwgMTAwMTk2LCAxMDAyMDEsIDEwMDIwNiwgMTAwMjExLCAxMDAyMTYsIDEwMDIyMSwgMTAwMjI2LCAKLSAgICAxMDAyMzEsIDEwMDIzNSwgMTAwMjQwLCAxMDAyNDUsIDEwMDI1MCwgMTAwMjU0LCAxMDAyNTgsIDEwMDI2MywgMTAwMjY4LCAKLSAgICAxMDAyNzMsIDEwMDI3OCwgMTAwMjgzLCAxMDAyODgsIDEwMDI5MywgMTAwMjk3LCAxMDAzMDIsIDAsIDAsIDAsIDAsIAotICAgIDEwMDMwNywgMTAwMzEzLCAxMDAzMTgsIDAsIDAsIDAsIDAsIDEwMDMyMywgMTAwMzI3LCAxMDAzMzEsIDEwMDMzNSwgCi0gICAgMTAwMzM5LCAxMDAzNDMsIDEwMDM0OCwgMTAwMzUzLCAxMDAzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDM2NSwgCi0gICAgMTAwMzcxLCAxMDAzNzgsIDEwMDM4NCwgMTAwMzkxLCAxMDAzOTcsIDEwMDQwMywgMTAwNDA5LCAxMDA0MTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwMDQyMiwgMTAwNDMwLCAxMDA0MzgsIDEwMDQ0NiwgMTAwNDU0LCAxMDA0NjIsIDEwMDQ3MCwgCi0gICAgMTAwNDc4LCAxMDA0ODYsIDEwMDQ5NCwgMTAwNTAyLCAxMDA1MTAsIDEwMDUxOCwgMTAwNTI2LCAxMDA1MzQsIDEwMDU0MiwgCi0gICAgMTAwNTUwLCAxMDA1NTgsIDEwMDU2NiwgMTAwNTc0LCAxMDA1ODIsIDEwMDU5MCwgMTAwNTk4LCAxMDA2MDYsIDEwMDYxNCwgCi0gICAgMTAwNjIyLCAxMDA2MzAsIDEwMDYzOCwgMTAwNjQ2LCAxMDA2NTQsIDEwMDY2MSwgMTAwNjY5LCAxMDA2NzcsIDEwMDY4NCwgCi0gICAgMTAwNjkxLCAxMDA2OTgsIDEwMDcwNSwgMTAwNzEyLCAxMDA3MTksIDEwMDcyNiwgMTAwNzMzLCAxMDA3NDAsIDEwMDc0NywgCi0gICAgMTAwNzU0LCAxMDA3NjEsIDEwMDc2OCwgMTAwNzc1LCAxMDA3ODIsIDEwMDc4OSwgMTAwNzk2LCAxMDA4MDMsIDEwMDgxMCwgCi0gICAgMTAwODE3LCAxMDA4MjQsIDEwMDgzMSwgMTAwODM4LCAxMDA4NDUsIDEwMDg1MiwgMTAwODU5LCAxMDA4NjYsIDEwMDg3MywgCi0gICAgMTAwODgwLCAxMDA4ODYsIDEwMDg5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwOTAwLCAxMDA5MDUsIDEwMDkxMCwgCi0gICAgMTAwOTE1LCAxMDA5MjAsIDEwMDkyNSwgMTAwOTMwLCAxMDA5MzUsIDEwMDk0MCwgMTAwOTQ1LCAxMDA5NTAsIDEwMDk1NSwgCi0gICAgMTAwOTYwLCAxMDA5NjUsIDEwMDk3MCwgMTAwOTc1LCAxMDA5ODAsIDEwMDk4NSwgMTAwOTkwLCAxMDA5OTUsIDEwMTAwMCwgCi0gICAgMTAxMDA1LCAxMDEwMTAsIDEwMTAxNSwgMTAxMDIwLCAxMDEwMjUsIDEwMTAzMCwgMTAxMDM1LCAxMDEwNDAsIDEwMTA0NSwgCi0gICAgMTAxMDUwLCAxMDEwNTUsIDEwMTA2MCwgMTAxMDY1LCAxMDEwNzAsIDEwMTA3NSwgMTAxMDgwLCAxMDEwODUsIDEwMTA5MSwgCi0gICAgMCwgMCwgMCwgMCwgMTAxMDk3LCAxMDExMDEsIDEwMTEwNSwgMTAxMTEwLCAxMDExMTUsIDEwMTEyMSwgMTAxMTI3LCAKLSAgICAxMDExMzMsIDEwMTE0MywgMTAxMTUyLCAxMDExNTgsIDEwMTE2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAxMTczLCAxMDExNzcsIDEwMTE4MiwgMTAxMTg3LCAxMDExOTIsIDEwMTE5NywgMTAxMjAyLCAxMDEyMDcsIDEwMTIxMiwgCi0gICAgMTAxMjE2LCAxMDEyMjEsIDEwMTIyNSwgMTAxMjMwLCAxMDEyMzQsIDEwMTIzOSwgMTAxMjQzLCAxMDEyNDgsIDEwMTI1MywgCi0gICAgMTAxMjU4LCAxMDEyNjMsIDEwMTI2OCwgMTAxMjczLCAxMDEyNzgsIDEwMTI4MywgMTAxMjg4LCAxMDEyOTMsIDEwMTI5OCwgCi0gICAgMTAxMzAzLCAxMDEzMDgsIDEwMTMxMywgMTAxMzE4LCAxMDEzMjMsIDEwMTMyOCwgMTAxMzMzLCAxMDEzMzgsIDEwMTM0MywgCi0gICAgMTAxMzQ4LCAxMDEzNTMsIDEwMTM1OCwgMTAxMzYzLCAxMDEzNjgsIDEwMTM3MywgMTAxMzc4LCAxMDEzODMsIDEwMTM4OCwgCi0gICAgMTAxMzkzLCAxMDEzOTgsIDEwMTQwMywgMTAxNDA4LCAxMDE0MTMsIDEwMTQxOCwgMTAxNDIzLCAxMDE0MjgsIDEwMTQzMywgCi0gICAgMCwgMCwgMCwgMTAxNDM4LCAxMDE0NDMsIDEwMTQ1MiwgMTAxNDYwLCAxMDE0NjksIDEwMTQ3OCwgMTAxNDg5LCAxMDE1MDAsIAotICAgIDEwMTUwNywgMTAxNTE0LCAxMDE1MjEsIDEwMTUyOCwgMTAxNTM1LCAxMDE1NDIsIDEwMTU0OSwgMTAxNTU2LCAxMDE1NjMsIAotICAgIDEwMTU3MCwgMTAxNTc3LCAxMDE1ODQsIDEwMTU5MSwgMTAxNTk4LCAxMDE2MDUsIDEwMTYxMiwgMTAxNjE5LCAxMDE2MjYsIAotICAgIDEwMTYzMywgMTAxNjQwLCAxMDE2NDcsIDAsIDAsIDEwMTY1NCwgMTAxNjYwLCAxMDE2NjYsIDEwMTY3MiwgMTAxNjc4LCAKLSAgICAxMDE2ODUsIDEwMTY5MiwgMTAxNzAwLCAxMDE3MDgsIDEwMTcxNSwgMTAxNzIyLCAxMDE3MjksIDEwMTczNiwgMTAxNzQzLCAKLSAgICAxMDE3NTAsIDEwMTc1NywgMTAxNzY0LCAxMDE3NzEsIDEwMTc3OCwgMTAxNzg1LCAxMDE3OTIsIDEwMTc5OSwgMTAxODA2LCAKLSAgICAxMDE4MTMsIDEwMTgyMCwgMTAxODI3LCAxMDE4MzQsIDAsIDAsIDAsIDAsIDAsIDEwMTg0MSwgMTAxODQ3LCAxMDE4NTMsIAotICAgIDEwMTg1OSwgMTAxODY1LCAxMDE4NzIsIDEwMTg3OSwgMTAxODg3LCAxMDE4OTUsIDEwMTkwMiwgMTAxOTA5LCAxMDE5MTYsIAotICAgIDEwMTkyMywgMTAxOTMwLCAxMDE5MzcsIDEwMTk0NCwgMTAxOTUxLCAxMDE5NTgsIDEwMTk2NSwgMTAxOTcyLCAxMDE5NzksIAotICAgIDEwMTk4NiwgMTAxOTkzLCAxMDIwMDAsIDEwMjAwNywgMTAyMDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIwMjEsIAotICAgIDEwMjAyOCwgMTAyMDM3LCAxMDIwNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjA1NywgCi0gICAgMTAyMDYzLCAxMDIwNjksIDEwMjA3NSwgMTAyMDgxLCAxMDIwODgsIDEwMjA5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAyMTAzLCAxMDIxMTAsIDEwMjExNywgMTAyMTI1LCAxMDIxMzIsIDEwMjEzOSwgMTAyMTQ2LCAxMDIxNTMsIDEwMjE2MSwgCi0gICAgMTAyMTY5LCAxMDIxNzcsIDEwMjE4NSwgMTAyMTkzLCAxMDIyMDEsIDEwMjIwOSwgMTAyMjE3LCAxMDIyMjUsIDEwMjIzMywgCi0gICAgMTAyMjQxLCAxMDIyNDksIDEwMjI1NywgMTAyMjY1LCAxMDIyNzMsIDEwMjI4MSwgMTAyMjg5LCAxMDIyOTcsIDEwMjMwNSwgCi0gICAgMTAyMzEzLCAxMDIzMjEsIDEwMjMyOSwgMTAyMzM3LCAxMDIzNDUsIDEwMjM1MywgMTAyMzYxLCAxMDIzNjksIDEwMjM3NywgCi0gICAgMTAyMzg1LCAxMDIzOTMsIDEwMjQwMSwgMTAyNDA5LCAxMDI0MTcsIDEwMjQyNSwgMTAyNDMzLCAxMDI0NDEsIDEwMjQ0OSwgCi0gICAgMTAyNDU3LCAxMDI0NjUsIDEwMjQ3MywgMTAyNDgxLCAxMDI0ODksIDEwMjQ5NywgMTAyNTA1LCAxMDI1MTMsIDEwMjUyMSwgCi0gICAgMTAyNTI5LCAxMDI1MzcsIDEwMjU0NSwgMTAyNTUzLCAxMDI1NjEsIDEwMjU2OSwgMTAyNTc3LCAxMDI1ODUsIDEwMjU5MywgCi0gICAgMTAyNjAxLCAxMDI2MDksIDEwMjYxNywgMTAyNjI1LCAxMDI2MzMsIDEwMjY0MSwgMTAyNjQ5LCAxMDI2NTcsIDEwMjY2NSwgCi0gICAgMTAyNjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI2ODEsIDEwMjY4NiwgMTAyNjkyLCAxMDI2OTgsIDEwMjcwNCwgCi0gICAgMTAyNzEwLCAxMDI3MTYsIDEwMjcyMiwgMTAyNzI4LCAxMDI3MzQsIDEwMjczOSwgMTAyNzQ2LCAxMDI3NTIsIDEwMjc1OCwgCi0gICAgMTAyNzY0LCAxMDI3NzAsIDEwMjc3NiwgMTAyNzgxLCAxMDI3ODcsIDEwMjc5MywgMTAyNzk5LCAxMDI4MDUsIDEwMjgxMSwgCi0gICAgMTAyODE3LCAxMDI4MjMsIDEwMjgyOSwgMTAyODM1LCAxMDI4NDEsIDEwMjg0NiwgMTAyODUyLCAxMDI4NjAsIDEwMjg2OCwgCi0gICAgMTAyODc0LCAxMDI4ODAsIDEwMjg4NiwgMTAyODkyLCAxMDI5MDAsIDEwMjkwNiwgMTAyOTEyLCAxMDI5MTgsIDEwMjkyNCwgCi0gICAgMTAyOTMwLCAxMDI5MzYsIDEwMjk0MSwgMTAyOTQ3LCAxMDI5NTUsIDEwMjk2MywgMTAyOTY5LCAxMDI5NzUsIDEwMjk4MSwgCi0gICAgMTAyOTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI5OTQsIDEwMjk5OSwgMTAzMDA1LCAKLSAgICAxMDMwMTEsIDEwMzAxNywgMTAzMDIzLCAxMDMwMjksIDEwMzAzNSwgMTAzMDQxLCAxMDMwNDcsIDEwMzA1MiwgMTAzMDU5LCAKLSAgICAxMDMwNjUsIDEwMzA3MSwgMTAzMDc3LCAxMDMwODMsIDEwMzA4OSwgMTAzMDk0LCAxMDMxMDAsIDEwMzEwNiwgMTAzMTEyLCAKLSAgICAxMDMxMTgsIDEwMzEyNCwgMTAzMTMwLCAxMDMxMzYsIDEwMzE0MiwgMTAzMTQ4LCAxMDMxNTQsIDEwMzE1OSwgMTAzMTY1LCAKLSAgICAxMDMxNzMsIDEwMzE4MSwgMTAzMTg3LCAxMDMxOTMsIDEwMzE5OSwgMTAzMjA1LCAxMDMyMTMsIDEwMzIxOSwgMTAzMjI1LCAKLSAgICAxMDMyMzEsIDEwMzIzNywgMTAzMjQzLCAxMDMyNDksIDEwMzI1NCwgMTAzMjYwLCAxMDMyNjgsIDEwMzI3NiwgMTAzMjgyLCAKLSAgICAxMDMyODgsIDEwMzI5NCwgMTAzMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzMDcsIDEwMzMxMSwgMTAzMzE1LCAKLSAgICAxMDMzMjAsIDEwMzMyNSwgMTAzMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDAxOTIsIDEwMDE5NywgMTAwMjAyLCAxMDAyMDcsIDEwMDIxMiwgMTAwMjE3LCAxMDAyMjIsIDEwMDIyNywgMTAwMjMyLCAKKyAgICAxMDAyMzcsIDEwMDI0MiwgMTAwMjQ3LCAxMDAyNTIsIDEwMDI1NywgMTAwMjYyLCAxMDAyNjcsIDEwMDI3MiwgMTAwMjc3LCAKKyAgICAxMDAyODIsIDAsIDEwMDI4NywgMTAwMjkyLCAwLCAwLCAwLCAwLCAwLCAxMDAyOTcsIDEwMDMwMSwgMTAwMzA1LCAxMDAzMTAsIAorICAgIDEwMDMxNSwgMTAwMzIxLCAxMDAzMjYsIDEwMDMzMSwgMTAwMzM2LCAxMDAzNDEsIDEwMDM0NiwgMTAwMzUxLCAxMDAzNTYsIAorICAgIDEwMDM2MSwgMTAwMzY2LCAxMDAzNzEsIDEwMDM3NiwgMTAwMzgxLCAxMDAzODYsIDEwMDM5MSwgMTAwMzk2LCAxMDA0MDEsIAorICAgIDEwMDQwNiwgMTAwNDExLCAxMDA0MTYsIDEwMDQyMSwgMTAwNDI2LCAxMDA0MzEsIDEwMDQzNSwgMTAwNDQwLCAxMDA0NDUsIAorICAgIDEwMDQ1MSwgMTAwNDU1LCAwLCAwLCAwLCAxMDA0NTksIDEwMDQ2NSwgMTAwNDY5LCAxMDA0NzQsIDEwMDQ3OSwgMTAwNDg0LCAKKyAgICAxMDA0ODgsIDEwMDQ5MywgMTAwNDk3LCAxMDA1MDIsIDEwMDUwNywgMTAwNTExLCAxMDA1MTYsIDEwMDUyMSwgMTAwNTI1LCAKKyAgICAxMDA1MjksIDEwMDUzNCwgMTAwNTM5LCAxMDA1NDMsIDEwMDU0OCwgMTAwNTUzLCAxMDA1NTgsIDEwMDU2MywgMTAwNTY4LCAKKyAgICAxMDA1NzMsIDEwMDU3OCwgMTAwNTgzLCAwLCAwLCAwLCAwLCAwLCAxMDA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDU5MywgMTAwNTk4LCAxMDA2MDMsIDEwMDYwOCwgMTAwNjEzLCAxMDA2MTgsIAorICAgIDEwMDYyNCwgMTAwNjMwLCAxMDA2MzYsIDEwMDY0MSwgMTAwNjQ2LCAxMDA2NTEsIDEwMDY1NywgMTAwNjYzLCAxMDA2NjksIAorICAgIDEwMDY3NSwgMTAwNjgxLCAxMDA2ODYsIDEwMDY5MiwgMTAwNjk4LCAxMDA3MDQsIDEwMDcxMCwgMTAwNzE2LCAxMDA3MjEsIAorICAgIDEwMDcyNywgMTAwNzMzLCAxMDA3MzksIDEwMDc0NSwgMTAwNzUxLCAxMDA3NTYsIDEwMDc2MiwgMTAwNzY4LCAxMDA3NzQsIAorICAgIDEwMDc3OSwgMTAwNzg0LCAxMDA3ODksIDEwMDc5NCwgMTAwNzk5LCAxMDA4MDUsIDEwMDgxMSwgMTAwODE2LCAxMDA4MjEsIAorICAgIDEwMDgyNiwgMTAwODMyLCAxMDA4MzgsIDEwMDg0MywgMTAwODQ5LCAxMDA4NTUsIDEwMDg2MSwgMTAwODY5LCAxMDA4NzUsIAorICAgIDEwMDg4MCwgMTAwODg2LCAxMDA4OTIsIDEwMDg5OCwgMTAwOTAzLCAwLCAwLCAwLCAwLCAxMDA5MDksIDEwMDkxOCwgCisgICAgMTAwOTI2LCAxMDA5MzMsIDEwMDk0MCwgMTAwOTQ1LCAxMDA5NTAsIDEwMDk1NSwgMTAwOTYwLCAxMDA5NjUsIDEwMDk3MCwgCisgICAgMTAwOTc2LCAxMDA5ODEsIDEwMDk4NywgMTAwOTkzLCAxMDA5OTksIDEwMTAwNSwgMTAxMDExLCAxMDEwMTcsIDEwMTAyMywgCisgICAgMCwgMCwgMTAxMDI5LCAxMDEwMzYsIDEwMTA0MywgMTAxMDUwLCAxMDEwNTgsIDEwMTA2NiwgMTAxMDc0LCAxMDEwODIsIAorICAgIDEwMTA5MCwgMTAxMDk4LCAxMDExMDUsIDEwMTExMiwgMTAxMTE5LCAxMDExMjcsIDEwMTEzNSwgMTAxMTQzLCAxMDExNTEsIAorICAgIDEwMTE1OSwgMTAxMTY3LCAxMDExNzUsIDEwMTE4MywgMTAxMTkxLCAxMDExOTksIDEwMTIwNywgMTAxMjE1LCAxMDEyMjMsIAorICAgIDEwMTIzMSwgMTAxMjM5LCAxMDEyNDgsIDEwMTI1NywgMTAxMjY2LCAxMDEyNzYsIDEwMTI4NiwgMTAxMjk2LCAxMDEzMDYsIAorICAgIDEwMTMxNiwgMTAxMzI2LCAxMDEzMzQsIDEwMTM0MiwgMTAxMzUwLCAxMDEzNTksIDEwMTM2OCwgMTAxMzc3LCAxMDEzODYsIAorICAgIDEwMTM5NSwgMTAxNDA0LCAxMDE0MTMsIDEwMTQxNywgMTAxNDIyLCAxMDE0MjcsIDAsIDEwMTQzMywgMTAxNDM4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDE0NDMsIDEwMTQ0OSwgMTAxNDU2LCAxMDE0NjEsIDEwMTQ2NiwgMTAxNDcwLCAxMDE0NzUsIDEwMTQ4MCwgCisgICAgMCwgMTAxNDg1LCAxMDE0OTAsIDEwMTQ5NSwgMCwgMTAxNTAwLCAxMDE1MDUsIDEwMTUxMCwgMTAxNTE1LCAxMDE1MjAsIAorICAgIDEwMTUyNSwgMTAxNTMwLCAxMDE1MzUsIDEwMTU0MCwgMTAxNTQ1LCAxMDE1NTAsIDEwMTU1NCwgMTAxNTU4LCAxMDE1NjMsIAorICAgIDEwMTU2OCwgMTAxNTczLCAxMDE1NzcsIDEwMTU4MSwgMTAxNTg2LCAxMDE1OTAsIDEwMTU5NSwgMTAxNjAwLCAxMDE2MDUsIAorICAgIDEwMTYxMCwgMTAxNjE1LCAxMDE2MTksIDEwMTYyNCwgMCwgMCwgMCwgMCwgMTAxNjI5LCAxMDE2MzUsIDEwMTY0MCwgMCwgMCwgCisgICAgMCwgMCwgMTAxNjQ1LCAxMDE2NDksIDEwMTY1MywgMTAxNjU3LCAxMDE2NjEsIDEwMTY2NSwgMTAxNjcwLCAxMDE2NzUsIAorICAgIDEwMTY4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxNjg3LCAxMDE2OTMsIDEwMTcwMCwgMTAxNzA2LCAxMDE3MTMsIAorICAgIDEwMTcxOSwgMTAxNzI1LCAxMDE3MzEsIDEwMTczOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxNzQ0LCAxMDE3NTIsIAorICAgIDEwMTc2MCwgMTAxNzY4LCAxMDE3NzYsIDEwMTc4NCwgMTAxNzkyLCAxMDE4MDAsIDEwMTgwOCwgMTAxODE2LCAxMDE4MjQsIAorICAgIDEwMTgzMiwgMTAxODQwLCAxMDE4NDgsIDEwMTg1NiwgMTAxODY0LCAxMDE4NzIsIDEwMTg4MCwgMTAxODg4LCAxMDE4OTYsIAorICAgIDEwMTkwNCwgMTAxOTEyLCAxMDE5MjAsIDEwMTkyOCwgMTAxOTM2LCAxMDE5NDQsIDEwMTk1MiwgMTAxOTYwLCAxMDE5NjgsIAorICAgIDEwMTk3NiwgMTAxOTgzLCAxMDE5OTEsIDEwMTk5OSwgMTAyMDA2LCAxMDIwMTMsIDEwMjAyMCwgMTAyMDI3LCAxMDIwMzQsIAorICAgIDEwMjA0MSwgMTAyMDQ4LCAxMDIwNTUsIDEwMjA2MiwgMTAyMDY5LCAxMDIwNzYsIDEwMjA4MywgMTAyMDkwLCAxMDIwOTcsIAorICAgIDEwMjEwNCwgMTAyMTExLCAxMDIxMTgsIDEwMjEyNSwgMTAyMTMyLCAxMDIxMzksIDEwMjE0NiwgMTAyMTUzLCAxMDIxNjAsIAorICAgIDEwMjE2NywgMTAyMTc0LCAxMDIxODEsIDEwMjE4OCwgMTAyMTk1LCAxMDIyMDIsIDEwMjIwOCwgMTAyMjE1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzMzcsIDEwMzM0MSwgMTAzMzQ1LCAxMDMzNDksIDEwMzM1MywgMTAzMzU3LCAKLSAgICAxMDMzNjEsIDEwMzM2NiwgMTAzMzcwLCAxMDMzNzUsIDEwMzM4MCwgMTAzMzg1LCAxMDMzOTAsIDEwMzM5NSwgMTAzNDAwLCAKLSAgICAxMDM0MDUsIDEwMzQxMCwgMTAzNDE1LCAxMDM0MjAsIDEwMzQyNiwgMTAzNDMyLCAxMDM0MzgsIDEwMzQ0NSwgMTAzNDUyLCAKLSAgICAxMDM0NTksIDEwMzQ2NiwgMTAzNDczLCAxMDM0ODAsIDEwMzQ4NywgMTAzNDk0LCAxMDM1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwMjIyMiwgMTAyMjI3LCAxMDIyMzIsIDEwMjIzNywgMTAyMjQyLCAxMDIyNDcsIDEwMjI1MiwgCisgICAgMTAyMjU3LCAxMDIyNjIsIDEwMjI2NywgMTAyMjcyLCAxMDIyNzcsIDEwMjI4MiwgMTAyMjg3LCAxMDIyOTIsIDEwMjI5NywgCisgICAgMTAyMzAyLCAxMDIzMDcsIDEwMjMxMiwgMTAyMzE3LCAxMDIzMjIsIDEwMjMyNywgMTAyMzMyLCAxMDIzMzcsIDEwMjM0MiwgCisgICAgMTAyMzQ3LCAxMDIzNTIsIDEwMjM1NywgMTAyMzYyLCAxMDIzNjcsIDEwMjM3MiwgMTAyMzc3LCAxMDIzODIsIDEwMjM4NywgCisgICAgMTAyMzkyLCAxMDIzOTcsIDEwMjQwMiwgMTAyNDA3LCAxMDI0MTMsIDAsIDAsIDAsIDAsIDEwMjQxOSwgMTAyNDIzLCAKKyAgICAxMDI0MjcsIDEwMjQzMiwgMTAyNDM3LCAxMDI0NDMsIDEwMjQ0OSwgMTAyNDU1LCAxMDI0NjUsIDEwMjQ3NCwgMTAyNDgwLCAKKyAgICAxMDI0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjQ5NSwgMTAyNDk5LCAxMDI1MDQsIDEwMjUwOSwgCisgICAgMTAyNTE0LCAxMDI1MTksIDEwMjUyNCwgMTAyNTI5LCAxMDI1MzQsIDEwMjUzOCwgMTAyNTQzLCAxMDI1NDcsIDEwMjU1MiwgCisgICAgMTAyNTU2LCAxMDI1NjEsIDEwMjU2NSwgMTAyNTcwLCAxMDI1NzUsIDEwMjU4MCwgMTAyNTg1LCAxMDI1OTAsIDEwMjU5NSwgCisgICAgMTAyNjAwLCAxMDI2MDUsIDEwMjYxMCwgMTAyNjE1LCAxMDI2MjAsIDEwMjYyNSwgMTAyNjMwLCAxMDI2MzUsIDEwMjY0MCwgCisgICAgMTAyNjQ1LCAxMDI2NTAsIDEwMjY1NSwgMTAyNjYwLCAxMDI2NjUsIDEwMjY3MCwgMTAyNjc1LCAxMDI2ODAsIDEwMjY4NSwgCisgICAgMTAyNjkwLCAxMDI2OTUsIDEwMjcwMCwgMTAyNzA1LCAxMDI3MTAsIDEwMjcxNSwgMTAyNzIwLCAxMDI3MjUsIDEwMjczMCwgCisgICAgMTAyNzM1LCAxMDI3NDAsIDEwMjc0NSwgMTAyNzUwLCAxMDI3NTUsIDAsIDAsIDAsIDEwMjc2MCwgMTAyNzY1LCAxMDI3NzQsIAorICAgIDEwMjc4MiwgMTAyNzkxLCAxMDI4MDAsIDEwMjgxMSwgMTAyODIyLCAxMDI4MjksIDEwMjgzNiwgMTAyODQzLCAxMDI4NTAsIAorICAgIDEwMjg1NywgMTAyODY0LCAxMDI4NzEsIDEwMjg3OCwgMTAyODg1LCAxMDI4OTIsIDEwMjg5OSwgMTAyOTA2LCAxMDI5MTMsIAorICAgIDEwMjkyMCwgMTAyOTI3LCAxMDI5MzQsIDEwMjk0MSwgMTAyOTQ4LCAxMDI5NTUsIDEwMjk2MiwgMTAyOTY5LCAwLCAwLCAKKyAgICAxMDI5NzYsIDEwMjk4MiwgMTAyOTg4LCAxMDI5OTQsIDEwMzAwMCwgMTAzMDA3LCAxMDMwMTQsIDEwMzAyMiwgMTAzMDMwLCAKKyAgICAxMDMwMzcsIDEwMzA0NCwgMTAzMDUxLCAxMDMwNTgsIDEwMzA2NSwgMTAzMDcyLCAxMDMwNzksIDEwMzA4NiwgMTAzMDkzLCAKKyAgICAxMDMxMDAsIDEwMzEwNywgMTAzMTE0LCAxMDMxMjEsIDEwMzEyOCwgMTAzMTM1LCAxMDMxNDIsIDEwMzE0OSwgMTAzMTU2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDMxNjMsIDEwMzE2OSwgMTAzMTc1LCAxMDMxODEsIDEwMzE4NywgMTAzMTk0LCAxMDMyMDEsIAorICAgIDEwMzIwOSwgMTAzMjE3LCAxMDMyMjQsIDEwMzIzMSwgMTAzMjM4LCAxMDMyNDUsIDEwMzI1MiwgMTAzMjU5LCAxMDMyNjYsIAorICAgIDEwMzI3MywgMTAzMjgwLCAxMDMyODcsIDEwMzI5NCwgMTAzMzAxLCAxMDMzMDgsIDEwMzMxNSwgMTAzMzIyLCAxMDMzMjksIAorICAgIDEwMzMzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzQzLCAxMDMzNTAsIDEwMzM1OSwgMTAzMzY5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzNzksIDEwMzM4NSwgMTAzMzkxLCAxMDMzOTcsIDEwMzQwMywgMTAzNDEwLCAKKyAgICAxMDM0MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzQyNSwgMTAzNDMyLCAxMDM0MzksIDEwMzQ0NywgMTAzNDU0LCAKKyAgICAxMDM0NjEsIDEwMzQ2OCwgMTAzNDc1LCAxMDM0ODMsIDEwMzQ5MSwgMTAzNDk5LCAxMDM1MDcsIDEwMzUxNSwgMTAzNTIzLCAKKyAgICAxMDM1MzEsIDEwMzUzOSwgMTAzNTQ3LCAxMDM1NTUsIDEwMzU2MywgMTAzNTcxLCAxMDM1NzksIDEwMzU4NywgMTAzNTk1LCAKKyAgICAxMDM2MDMsIDEwMzYxMSwgMTAzNjE5LCAxMDM2MjcsIDEwMzYzNSwgMTAzNjQzLCAxMDM2NTEsIDEwMzY1OSwgMTAzNjY3LCAKKyAgICAxMDM2NzUsIDEwMzY4MywgMTAzNjkxLCAxMDM2OTksIDEwMzcwNywgMTAzNzE1LCAxMDM3MjMsIDEwMzczMSwgMTAzNzM5LCAKKyAgICAxMDM3NDcsIDEwMzc1NSwgMTAzNzYzLCAxMDM3NzEsIDEwMzc3OSwgMTAzNzg3LCAxMDM3OTUsIDEwMzgwMywgMTAzODExLCAKKyAgICAxMDM4MTksIDEwMzgyNywgMTAzODM1LCAxMDM4NDMsIDEwMzg1MSwgMTAzODU5LCAxMDM4NjcsIDEwMzg3NSwgMTAzODgzLCAKKyAgICAxMDM4OTEsIDEwMzg5OSwgMTAzOTA3LCAxMDM5MTUsIDEwMzkyMywgMTAzOTMxLCAxMDM5MzksIDEwMzk0NywgMTAzOTU1LCAKKyAgICAxMDM5NjMsIDEwMzk3MSwgMTAzOTc5LCAxMDM5ODcsIDEwMzk5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MDAzLCAKKyAgICAxMDQwMDgsIDEwNDAxNCwgMTA0MDIwLCAxMDQwMjYsIDEwNDAzMiwgMTA0MDM4LCAxMDQwNDQsIDEwNDA1MCwgMTA0MDU2LCAKKyAgICAxMDQwNjEsIDEwNDA2OCwgMTA0MDc0LCAxMDQwODAsIDEwNDA4NiwgMTA0MDkyLCAxMDQwOTgsIDEwNDEwMywgMTA0MTA5LCAKKyAgICAxMDQxMTUsIDEwNDEyMSwgMTA0MTI3LCAxMDQxMzMsIDEwNDEzOSwgMTA0MTQ1LCAxMDQxNTEsIDEwNDE1NywgMTA0MTYzLCAKKyAgICAxMDQxNjgsIDEwNDE3NCwgMTA0MTgyLCAxMDQxOTAsIDEwNDE5NiwgMTA0MjAyLCAxMDQyMDgsIDEwNDIxNCwgMTA0MjIyLCAKKyAgICAxMDQyMjgsIDEwNDIzNCwgMTA0MjQwLCAxMDQyNDYsIDEwNDI1MiwgMTA0MjU4LCAxMDQyNjMsIDEwNDI2OSwgMTA0Mjc3LCAKKyAgICAxMDQyODUsIDEwNDI5MSwgMTA0Mjk3LCAxMDQzMDMsIDEwNDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA0MzE2LCAxMDQzMjEsIDEwNDMyNywgMTA0MzMzLCAxMDQzMzksIDEwNDM0NSwgMTA0MzUxLCAxMDQzNTcsIAorICAgIDEwNDM2MywgMTA0MzY5LCAxMDQzNzQsIDEwNDM4MSwgMTA0Mzg3LCAxMDQzOTMsIDEwNDM5OSwgMTA0NDA1LCAxMDQ0MTEsIAorICAgIDEwNDQxNiwgMTA0NDIyLCAxMDQ0MjgsIDEwNDQzNCwgMTA0NDQwLCAxMDQ0NDYsIDEwNDQ1MiwgMTA0NDU4LCAxMDQ0NjQsIAorICAgIDEwNDQ3MCwgMTA0NDc2LCAxMDQ0ODEsIDEwNDQ4NywgMTA0NDk1LCAxMDQ1MDMsIDEwNDUwOSwgMTA0NTE1LCAxMDQ1MjEsIAorICAgIDEwNDUyNywgMTA0NTM1LCAxMDQ1NDEsIDEwNDU0NywgMTA0NTUzLCAxMDQ1NTksIDEwNDU2NSwgMTA0NTcxLCAxMDQ1NzYsIAorICAgIDEwNDU4MiwgMTA0NTkwLCAxMDQ1OTgsIDEwNDYwNCwgMTA0NjEwLCAxMDQ2MTYsIDEwNDYyMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA0NjI5LCAxMDQ2MzMsIDEwNDYzNywgMTA0NjQyLCAxMDQ2NDcsIDEwNDY1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTAzNTA4LCAxMDM1MTIsIDEwMzUxNiwgMTAzNTIwLCAxMDM1MjQsIDEwMzUyOCwgMTAzNTMxLCAxMDM1MzUsIAotICAgIDEwMzUzOCwgMTAzNTQyLCAxMDM1NDUsIDEwMzU0OSwgMTAzNTUzLCAxMDM1NTgsIDEwMzU2MiwgMTAzNTY3LCAxMDM1NzAsIAotICAgIDEwMzU3NCwgMTAzNTc3LCAxMDM1ODEsIDEwMzU4NCwgMTAzNTg4LCAxMDM1OTIsIDEwMzU5NiwgMTAzNjAwLCAxMDM2MDQsIAotICAgIDEwMzYwOCwgMTAzNjEyLCAxMDM2MTYsIDEwMzYyMCwgMTAzNjI0LCAxMDM2MjgsIDEwMzYzMiwgMTAzNjM2LCAxMDM2NDAsIAotICAgIDEwMzY0NCwgMTAzNjQ4LCAxMDM2NTIsIDEwMzY1NiwgMTAzNjYwLCAxMDM2NjMsIDEwMzY2NywgMTAzNjcxLCAxMDM2NzUsIAotICAgIDEwMzY3OCwgMTAzNjgxLCAxMDM2ODUsIDEwMzY4OSwgMTAzNjkzLCAxMDM2OTcsIDEwMzcwMSwgMTAzNzA1LCAxMDM3MDgsIAotICAgIDEwMzcxMiwgMTAzNzE4LCAxMDM3MjQsIDEwMzczMCwgMTAzNzM1LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUxLCAxMDM3NTUsIAotICAgIDEwMzc2MCwgMTAzNzY1LCAxMDM3NzEsIDEwMzc3NiwgMTAzNzgyLCAxMDM3ODYsIDEwMzc5MSwgMTAzNzk1LCAxMDM4MDAsIAotICAgIDEwMzgwMywgMTAzODA2LCAxMDM4MTAsIDEwMzgxNSwgMTAzODIxLCAxMDM4MjYsIDEwMzgzMiwgMCwgMCwgMCwgMCwgCi0gICAgMTAzODM3LCAxMDM4NDAsIDEwMzg0MywgMTAzODQ2LCAxMDM4NDksIDEwMzg1MiwgMTAzODU1LCAxMDM4NTksIDEwMzg2MiwgCi0gICAgMTAzODY2LCAxMDM4NzAsIDEwMzg3NCwgMTAzODc4LCAxMDM4ODIsIDEwMzg4NiwgMTAzODkwLCAxMDM4OTQsIDEwMzg5OCwgCi0gICAgMTAzOTAyLCAxMDM5MDcsIDEwMzkxMiwgMTAzOTE2LCAxMDM5MTksIDEwMzkyMiwgMTAzOTI1LCAxMDM5MjgsIDEwMzkzMSwgCi0gICAgMTAzOTM0LCAxMDM5MzgsIDEwMzk0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAzOTQ1LCAxMDM5NDksIDEwMzk1NCwgMTAzOTU5LCAxMDM5NjQsIDEwMzk2OCwgMTAzOTczLCAxMDM5NzcsIDEwMzk4MiwgCi0gICAgMTAzOTg2LCAxMDM5OTEsIDEwMzk5NSwgMTA0MDAwLCAxMDQwMDQsIDEwNDAwOSwgMTA0MDEzLCAxMDQwMTgsIDEwNDAyMywgCi0gICAgMTA0MDI4LCAxMDQwMzMsIDEwNDAzOCwgMTA0MDQzLCAxMDQwNDgsIDEwNDA1MywgMTA0MDU4LCAxMDQwNjMsIDEwNDA2OCwgCi0gICAgMTA0MDczLCAxMDQwNzgsIDEwNDA4MywgMTA0MDg4LCAxMDQwOTMsIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDgsIDEwNDExMywgCi0gICAgMTA0MTE4LCAxMDQxMjIsIDEwNDEyNywgMTA0MTMyLCAxMDQxMzcsIDEwNDE0MSwgMTA0MTQ1LCAxMDQxNTAsIDEwNDE1NSwgCi0gICAgMTA0MTYwLCAxMDQxNjUsIDEwNDE3MCwgMTA0MTc1LCAxMDQxNzksIDEwNDE4NSwgMTA0MTkwLCAxMDQxOTYsIDEwNDIwMSwgCi0gICAgMTA0MjA3LCAxMDQyMTIsIDEwNDIxOCwgMTA0MjIzLCAxMDQyMjksIDEwNDIzNCwgMTA0MjM5LCAxMDQyNDQsIDEwNDI0OSwgCi0gICAgMTA0MjUzLCAxMDQyNTgsIDEwNDI2NCwgMTA0MjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQyNzMsIDEwNDI4MCwgMTA0Mjg3LCAxMDQyOTQsIDEwNDMwMSwgMTA0MzA4LCAxMDQzMTUsIDEwNDMyMiwgMTA0MzI5LCAKLSAgICAxMDQzMzYsIDEwNDM0MywgMTA0MzUwLCAxMDQzNTcsIDEwNDM2NCwgMTA0MzcxLCAxMDQzNzgsIDEwNDM4NSwgMTA0MzkyLCAKLSAgICAxMDQzOTksIDEwNDQwNiwgMTA0NDEzLCAxMDQ0MjAsIDEwNDQyNywgMTA0NDM0LCAxMDQ0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNDQ0OCwgMTA0NDU1LCAxMDQ0NjEsIDEwNDQ2NywgMTA0NDczLCAxMDQ0NzksIDEwNDQ4NSwgMTA0NDkxLCAKLSAgICAxMDQ0OTgsIDEwNDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTExLCAxMDQ1MTYsIDEwNDUyMSwgMTA0NTI2LCAxMDQ1MzEsIAotICAgIDEwNDUzNSwgMTA0NTM5LCAxMDQ1NDMsIDEwNDU0OCwgMTA0NTUzLCAxMDQ1NTgsIDEwNDU2MywgMTA0NTY4LCAxMDQ1NzMsIAotICAgIDEwNDU3OCwgMTA0NTgzLCAxMDQ1ODgsIDEwNDU5MywgMTA0NTk4LCAxMDQ2MDMsIDEwNDYwOCwgMTA0NjEzLCAxMDQ2MTgsIAotICAgIDEwNDYyMywgMTA0NjI4LCAxMDQ2MzMsIDEwNDYzOCwgMTA0NjQzLCAxMDQ2NDgsIDEwNDY1MywgMTA0NjU4LCAxMDQ2NjMsIAotICAgIDEwNDY2OCwgMTA0NjczLCAxMDQ2NzgsIDEwNDY4MywgMTA0Njg4LCAxMDQ2OTMsIDEwNDY5OCwgMTA0NzAzLCAxMDQ3MDgsIAotICAgIDEwNDcxMywgMTA0NzE5LCAxMDQ3MjQsIDEwNDczMCwgMTA0NzM1LCAxMDQ3NDEsIDEwNDc0NiwgMTA0NzUyLCAxMDQ3NTgsIAotICAgIDEwNDc2MiwgMTA0NzY3LCAxMDQ3NzEsIDAsIDEwNDc3NSwgMTA0NzgwLCAxMDQ3ODQsIDEwNDc4OCwgMTA0NzkyLCAKLSAgICAxMDQ3OTYsIDEwNDgwMCwgMTA0ODA0LCAxMDQ4MDksIDEwNDgxMywgMTA0ODE4LCAxMDQ4MjMsIDEwNDgyNywgMTA0ODMyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4MzcsIDEwNDg0MSwgMTA0ODQ1LCAxMDQ4NDksIAotICAgIDEwNDg1MywgMTA0ODU3LCAxMDQ4NjEsIDEwNDg2NiwgMTA0ODcxLCAxMDQ4NzYsIDEwNDg4MSwgMTA0ODg2LCAxMDQ4OTEsIAotICAgIDEwNDg5NiwgMTA0OTAxLCAxMDQ5MDYsIDEwNDkxMSwgMTA0OTE2LCAxMDQ5MjEsIDEwNDkyNiwgMTA0OTMxLCAxMDQ5MzYsIAotICAgIDEwNDk0MSwgMTA0OTQ2LCAxMDQ5NTEsIDEwNDk1NSwgMTA0OTYwLCAxMDQ5NjUsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzksIAotICAgIDEwNDk4NCwgMTA0OTg5LCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAzLCAxMDUwMDgsIDEwNTAxMywgMTA1MDE4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDUwMjMsIDEwNTAyNywgMTA1MDMxLCAxMDUwMzUsIDEwNTAzOCwgMTA1MDQyLCAxMDUwNDUsIAotICAgIDEwNTA0OSwgMTA1MDUyLCAxMDUwNTYsIDEwNTA2MCwgMTA1MDY1LCAxMDUwNjksIDEwNTA3NCwgMTA1MDc3LCAxMDUwODEsIAotICAgIDEwNTA4NCwgMTA1MDg4LCAxMDUwOTEsIDEwNTA5NSwgMTA1MDk5LCAxMDUxMDMsIDEwNTEwNywgMTA1MTExLCAxMDUxMTUsIAotICAgIDEwNTExOSwgMTA1MTIzLCAxMDUxMjcsIDEwNTEzMSwgMTA1MTM1LCAxMDUxMzksIDEwNTE0MywgMTA1MTQ3LCAxMDUxNTEsIAotICAgIDEwNTE1NSwgMTA1MTU5LCAxMDUxNjMsIDEwNTE2NywgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODUsIAotICAgIDEwNTE4OCwgMTA1MTkyLCAxMDUxOTYsIDEwNTIwMCwgMTA1MjA0LCAxMDUyMDgsIDEwNTIxMiwgMTA1MjE2LCAxMDUyMTksIAotICAgIDEwNTIyNCwgMTA1MjI4LCAxMDUyMzMsIDEwNTIzNywgMTA1MjQyLCAxMDUyNDcsIDEwNTI1MywgMTA1MjU4LCAxMDUyNjQsIAotICAgIDEwNTI2OCwgMTA1MjczLCAxMDUyNzcsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDEsIAotICAgIDEwNTMwNCwgMTA1MzA4LCAxMDUzMTIsIDEwNTMxNSwgMTA1MzE5LCAxMDUzMjMsIDEwNTMyNywgMTA1MzM0LCAwLCAwLCAKLSAgICAxMDUzMzgsIDEwNTM0MiwgMTA1MzQ1LCAxMDUzNDgsIDEwNTM1MSwgMTA1MzU0LCAxMDUzNTcsIDEwNTM2MCwgMTA1MzY0LCAKLSAgICAxMDUzNjcsIDEwNTM3MSwgMTA1Mzc0LCAxMDUzNzgsIDEwNTM4MSwgMTA1Mzg1LCAxMDUzOTAsIDAsIDEwNTM5NSwgCi0gICAgMTA1NDAwLCAxMDU0MDUsIDEwNTQxMCwgMTA1NDE1LCAxMDU0MjAsIDEwNTQyNSwgMTA1NDMxLCAxMDU0MzYsIDEwNTQ0MiwgCi0gICAgMTA1NDQ4LCAxMDU0NTQsIDEwNTQ2MCwgMTA1NDY2LCAxMDU0NzIsIDEwNTQ3OCwgMTA1NDg0LCAxMDU0OTAsIDEwNTQ5NiwgCi0gICAgMTA1NTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE5LCAxMDU1MjMsIAotICAgIDEwNTUyNywgMTA1NTMxLCAxMDU1MzYsIDEwNTU0MCwgMTA1NTQ1LCAxMDU1NDksIDEwNTU1NCwgMTA1NTU5LCAxMDU1NjQsIAotICAgIDEwNTU2OSwgMTA1NTc0LCAxMDU1NzksIDEwNTU4NCwgMTA1NTg5LCAwLCAxMDU1OTQsIDEwNTU5OSwgMTA1NjA0LCAKLSAgICAxMDU2MDksIDEwNTYxNCwgMTA1NjE5LCAxMDU2MjQsIDEwNTYyOSwgMTA1NjM0LCAxMDU2MzksIDEwNTY0NCwgMTA1NjQ5LCAKLSAgICAxMDU2NTQsIDEwNTY1OCwgMTA1NjYzLCAxMDU2NjgsIDEwNTY3MywgMTA1Njc4LCAxMDU2ODIsIDEwNTY4NiwgMTA1NjkxLCAKLSAgICAxMDU2OTYsIDEwNTcwMSwgMTA1NzA2LCAxMDU3MTAsIDEwNTcxNSwgMTA1NzIxLCAxMDU3MjYsIDEwNTczMiwgMTA1NzM3LCAKLSAgICAxMDU3NDIsIDEwNTc0OCwgMTA1NzUzLCAxMDU3NTksIDEwNTc2NCwgMTA1NzY5LCAxMDU3NzQsIDEwNTc3OSwgMTA1NzgzLCAKLSAgICAxMDU3ODgsIDEwNTc5NCwgMTA1Nzk5LCAxMDU4MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDY1OSwgMTA0NjYzLCAKKyAgICAxMDQ2NjcsIDEwNDY3MSwgMTA0Njc1LCAxMDQ2NzksIDEwNDY4MywgMTA0Njg4LCAxMDQ2OTIsIDEwNDY5NywgMTA0NzAyLCAKKyAgICAxMDQ3MDcsIDEwNDcxMiwgMTA0NzE3LCAxMDQ3MjIsIDEwNDcyNywgMTA0NzMyLCAxMDQ3MzcsIDEwNDc0MiwgMTA0NzQ4LCAKKyAgICAxMDQ3NTQsIDEwNDc2MCwgMTA0NzY3LCAxMDQ3NzQsIDEwNDc4MSwgMTA0Nzg4LCAxMDQ3OTUsIDEwNDgwMiwgMTA0ODA5LCAKKyAgICAxMDQ4MTYsIDEwNDgyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA1ODEwLCAxMDU4MTQsIDEwNTgxOCwgMTA1ODIyLCAxMDU4MjYsIDEwNTgzMCwgMTA1ODM1LCAwLCAKLSAgICAxMDU4NDAsIDAsIDEwNTg0NSwgMTA1ODUwLCAxMDU4NTUsIDEwNTg2MCwgMCwgMTA1ODY1LCAxMDU4NzAsIDEwNTg3NSwgCi0gICAgMTA1ODgwLCAxMDU4ODUsIDEwNTg5MCwgMTA1ODk1LCAxMDU5MDAsIDEwNTkwNSwgMTA1OTEwLCAxMDU5MTUsIDEwNTkyMCwgCi0gICAgMTA1OTI1LCAxMDU5MjksIDEwNTkzNCwgMCwgMTA1OTM5LCAxMDU5NDQsIDEwNTk0OCwgMTA1OTUyLCAxMDU5NTcsIAotICAgIDEwNTk2MiwgMTA1OTY3LCAxMDU5NzIsIDEwNTk3NiwgMTA1OTgxLCAxMDU5ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTk5MSwgCi0gICAgMTA1OTk1LCAxMDYwMDAsIDEwNjAwNCwgMTA2MDA5LCAxMDYwMTMsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjcsIDEwNjAzMSwgCi0gICAgMTA2MDM2LCAxMDYwNDAsIDEwNjA0NSwgMTA2MDUwLCAxMDYwNTUsIDEwNjA2MCwgMTA2MDY1LCAxMDYwNzAsIDEwNjA3NSwgCi0gICAgMTA2MDgwLCAxMDYwODUsIDEwNjA5MCwgMTA2MDk1LCAxMDYxMDAsIDEwNjEwNSwgMTA2MTEwLCAxMDYxMTUsIDEwNjEyMCwgCi0gICAgMTA2MTI1LCAxMDYxMzAsIDEwNjEzNSwgMTA2MTQwLCAxMDYxNDUsIDEwNjE1MCwgMTA2MTU1LCAxMDYxNTksIDEwNjE2NCwgCi0gICAgMTA2MTY5LCAxMDYxNzQsIDEwNjE3OSwgMTA2MTgzLCAxMDYxODcsIDEwNjE5MiwgMTA2MTk3LCAxMDYyMDIsIDEwNjIwNywgCi0gICAgMTA2MjEyLCAxMDYyMTYsIDEwNjIyMSwgMTA2MjI3LCAxMDYyMzIsIDEwNjIzOCwgMTA2MjQzLCAxMDYyNDksIDEwNjI1NCwgCi0gICAgMTA2MjYwLCAxMDYyNjUsIDEwNjI3MSwgMTA2Mjc2LCAwLCAwLCAwLCAwLCAwLCAxMDYyODEsIDEwNjI4NiwgMTA2MjkwLCAKLSAgICAxMDYyOTQsIDEwNjI5OCwgMTA2MzAyLCAxMDYzMDYsIDEwNjMxMCwgMTA2MzE1LCAxMDYzMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNjMyNCwgMTA2MzMxLCAxMDYzMzYsIDEwNjM0MSwgMCwgMTA2MzQ2LCAxMDYzNTAsIDEwNjM1NSwgMTA2MzU5LCAKLSAgICAxMDYzNjQsIDEwNjM2OCwgMTA2MzczLCAxMDYzNzgsIDAsIDAsIDEwNjM4MywgMTA2Mzg4LCAwLCAwLCAxMDYzOTMsIAotICAgIDEwNjM5OCwgMTA2NDAzLCAxMDY0MDcsIDEwNjQxMiwgMTA2NDE3LCAxMDY0MjIsIDEwNjQyNywgMTA2NDMyLCAxMDY0MzcsIAotICAgIDEwNjQ0MiwgMTA2NDQ3LCAxMDY0NTIsIDEwNjQ1NywgMTA2NDYyLCAxMDY0NjcsIDEwNjQ3MiwgMTA2NDc3LCAxMDY0ODIsIAotICAgIDEwNjQ4NywgMTA2NDkyLCAxMDY0OTcsIDAsIDEwNjUwMiwgMTA2NTA2LCAxMDY1MTEsIDEwNjUxNiwgMTA2NTIxLCAKLSAgICAxMDY1MjUsIDEwNjUyOSwgMCwgMTA2NTM0LCAxMDY1MzksIDAsIDEwNjU0NCwgMTA2NTQ5LCAxMDY1NTQsIDEwNjU1OSwgCi0gICAgMTA2NTY0LCAwLCAwLCAxMDY1NjgsIDEwNjU3MywgMTA2NTc4LCAxMDY1ODQsIDEwNjU4OSwgMTA2NTk1LCAxMDY2MDAsIAotICAgIDEwNjYwNiwgMTA2NjEyLCAwLCAwLCAxMDY2MTksIDEwNjYyNSwgMCwgMCwgMTA2NjMxLCAxMDY2MzcsIDEwNjY0MywgMCwgMCwgCi0gICAgMTA2NjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDY2NTIsIDAsIDAsIDAsIDAsIDAsIDEwNjY1OSwgMTA2NjY0LCAxMDY2NzEsIAotICAgIDEwNjY3OSwgMTA2Njg1LCAxMDY2OTEsIDEwNjY5NywgMCwgMCwgMTA2NzA0LCAxMDY3MTAsIDEwNjcxNSwgMTA2NzIwLCAKLSAgICAxMDY3MjUsIDEwNjczMCwgMTA2NzM1LCAwLCAwLCAwLCAxMDY3NDAsIDEwNjc0NSwgMTA2NzUwLCAxMDY3NTYsIDEwNjc2MiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0ODMwLCAxMDQ4MzQsIDEwNDgzOCwgMTA0ODQyLCAKKyAgICAxMDQ4NDYsIDEwNDg1MCwgMTA0ODUzLCAxMDQ4NTcsIDEwNDg2MCwgMTA0ODY0LCAxMDQ4NjcsIDEwNDg3MSwgMTA0ODc1LCAKKyAgICAxMDQ4ODAsIDEwNDg4NCwgMTA0ODg5LCAxMDQ4OTIsIDEwNDg5NiwgMTA0ODk5LCAxMDQ5MDMsIDEwNDkwNiwgMTA0OTEwLCAKKyAgICAxMDQ5MTQsIDEwNDkxOCwgMTA0OTIyLCAxMDQ5MjYsIDEwNDkzMCwgMTA0OTM0LCAxMDQ5MzgsIDEwNDk0MiwgMTA0OTQ2LCAKKyAgICAxMDQ5NTAsIDEwNDk1NCwgMTA0OTU4LCAxMDQ5NjIsIDEwNDk2NiwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OCwgMTA0OTgxLCAKKyAgICAxMDQ5ODQsIDEwNDk4OCwgMTA0OTkyLCAxMDQ5OTYsIDEwNDk5OSwgMTA1MDAyLCAxMDUwMDYsIDEwNTAwOSwgMTA1MDEzLCAKKyAgICAxMDUwMTcsIDEwNTAyMSwgMTA1MDI1LCAxMDUwMjgsIDEwNTAzMiwgMTA1MDM4LCAxMDUwNDQsIDEwNTA1MCwgMTA1MDU1LCAKKyAgICAxMDUwNjIsIDEwNTA2NiwgMTA1MDcxLCAxMDUwNzUsIDEwNTA4MCwgMTA1MDg1LCAxMDUwOTEsIDEwNTA5NiwgMTA1MTAyLCAKKyAgICAxMDUxMDYsIDEwNTExMSwgMTA1MTE1LCAxMDUxMjAsIDEwNTEyMywgMTA1MTI2LCAxMDUxMzAsIDEwNTEzNSwgMTA1MTQxLCAKKyAgICAxMDUxNDYsIDEwNTE1MiwgMCwgMCwgMCwgMCwgMTA1MTU3LCAxMDUxNjAsIDEwNTE2MywgMTA1MTY2LCAxMDUxNjksIAorICAgIDEwNTE3MiwgMTA1MTc1LCAxMDUxNzksIDEwNTE4MiwgMTA1MTg2LCAxMDUxOTAsIDEwNTE5NCwgMTA1MTk4LCAxMDUyMDIsIAorICAgIDEwNTIwNiwgMTA1MjEwLCAxMDUyMTQsIDEwNTIxOCwgMTA1MjIyLCAxMDUyMjcsIDEwNTIzMiwgMTA1MjM2LCAxMDUyMzksIAorICAgIDEwNTI0MiwgMTA1MjQ1LCAxMDUyNDgsIDEwNTI1MSwgMTA1MjU0LCAxMDUyNTgsIDEwNTI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1MjY1LCAxMDUyNjksIDEwNTI3NCwgMTA1Mjc5LCAxMDUyODQsIAorICAgIDEwNTI4OCwgMTA1MjkzLCAxMDUyOTcsIDEwNTMwMiwgMTA1MzA2LCAxMDUzMTEsIDEwNTMxNSwgMTA1MzIwLCAxMDUzMjQsIAorICAgIDEwNTMyOSwgMTA1MzMzLCAxMDUzMzgsIDEwNTM0MywgMTA1MzQ4LCAxMDUzNTMsIDEwNTM1OCwgMTA1MzYzLCAxMDUzNjgsIAorICAgIDEwNTM3MywgMTA1Mzc4LCAxMDUzODMsIDEwNTM4OCwgMTA1MzkzLCAxMDUzOTgsIDEwNTQwMywgMTA1NDA4LCAxMDU0MTMsIAorICAgIDEwNTQxOCwgMTA1NDIzLCAxMDU0MjgsIDEwNTQzMywgMTA1NDM3LCAxMDU0NDEsIDEwNTQ0NiwgMTA1NDUxLCAxMDU0NTYsIAorICAgIDEwNTQ2MCwgMTA1NDY0LCAxMDU0NjksIDEwNTQ3MywgMTA1NDc4LCAxMDU0ODMsIDEwNTQ4OCwgMTA1NDkzLCAxMDU0OTcsIAorICAgIDEwNTUwMywgMTA1NTA4LCAxMDU1MTQsIDEwNTUxOSwgMTA1NTI1LCAxMDU1MzAsIDEwNTUzNiwgMTA1NTQxLCAxMDU1NDcsIAorICAgIDEwNTU1MiwgMTA1NTU3LCAxMDU1NjIsIDEwNTU2NywgMTA1NTcxLCAxMDU1NzYsIDEwNTU4MiwgMTA1NTg2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU1OTEsIDEwNTU5OCwgMTA1NjA1LCAxMDU2MTIsIDEwNTYxOSwgCisgICAgMTA1NjI2LCAxMDU2MzMsIDEwNTY0MCwgMTA1NjQ3LCAxMDU2NTQsIDEwNTY2MSwgMTA1NjY4LCAxMDU2NzUsIDEwNTY4MiwgCisgICAgMTA1Njg5LCAxMDU2OTYsIDEwNTcwMywgMTA1NzEwLCAxMDU3MTcsIDEwNTcyNCwgMTA1NzMxLCAxMDU3MzgsIDEwNTc0NSwgCisgICAgMTA1NzUyLCAxMDU3NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTc2NiwgMTA1NzczLCAxMDU3NzksIDEwNTc4NSwgCisgICAgMTA1NzkxLCAxMDU3OTcsIDEwNTgwMywgMTA1ODA5LCAxMDU4MTYsIDEwNTgyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1ODI5LCAKKyAgICAxMDU4MzQsIDEwNTgzOSwgMTA1ODQ0LCAxMDU4NDksIDEwNTg1MywgMTA1ODU3LCAxMDU4NjEsIDEwNTg2NiwgMTA1ODcxLCAKKyAgICAxMDU4NzYsIDEwNTg4MSwgMTA1ODg2LCAxMDU4OTEsIDEwNTg5NiwgMTA1OTAxLCAxMDU5MDYsIDEwNTkxMSwgMTA1OTE2LCAKKyAgICAxMDU5MjEsIDEwNTkyNiwgMTA1OTMxLCAxMDU5MzYsIDEwNTk0MSwgMTA1OTQ2LCAxMDU5NTEsIDEwNTk1NiwgMTA1OTYxLCAKKyAgICAxMDU5NjYsIDEwNTk3MSwgMTA1OTc2LCAxMDU5ODEsIDEwNTk4NiwgMTA1OTkxLCAxMDU5OTYsIDEwNjAwMSwgMTA2MDA2LCAKKyAgICAxMDYwMTEsIDEwNjAxNiwgMTA2MDIxLCAxMDYwMjYsIDEwNjAzMSwgMTA2MDM3LCAxMDYwNDIsIDEwNjA0OCwgMTA2MDUzLCAKKyAgICAxMDYwNTksIDEwNjA2NCwgMTA2MDcwLCAxMDYwNzYsIDEwNjA4MCwgMTA2MDg1LCAxMDYwODksIDAsIDEwNjA5MywgCisgICAgMTA2MDk4LCAxMDYxMDIsIDEwNjEwNiwgMTA2MTEwLCAxMDYxMTQsIDEwNjExOCwgMTA2MTIyLCAxMDYxMjcsIDEwNjEzMSwgCisgICAgMTA2MTM2LCAxMDYxNDEsIDEwNjE0NSwgMTA2MTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDYxNTUsIDEwNjE1OSwgMTA2MTYzLCAxMDYxNjcsIDEwNjE3MSwgMTA2MTc1LCAxMDYxNzksIDEwNjE4NCwgMTA2MTg5LCAKKyAgICAxMDYxOTQsIDEwNjE5OSwgMTA2MjA0LCAxMDYyMDksIDEwNjIxNCwgMTA2MjE5LCAxMDYyMjQsIDEwNjIyOSwgMTA2MjM0LCAKKyAgICAxMDYyMzksIDEwNjI0NCwgMTA2MjQ5LCAxMDYyNTQsIDEwNjI1OSwgMTA2MjY0LCAxMDYyNjgsIDEwNjI3MiwgMTA2Mjc3LCAKKyAgICAxMDYyODIsIDEwNjI4NywgMTA2MjkxLCAxMDYyOTYsIDEwNjMwMCwgMTA2MzA1LCAxMDYzMTAsIDEwNjMxNCwgMTA2MzE5LCAKKyAgICAxMDYzMjQsIDEwNjMyOSwgMTA2MzM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDYzMzksIDEwNjM0MywgCisgICAgMTA2MzQ3LCAxMDYzNTEsIDEwNjM1NCwgMTA2MzU4LCAxMDYzNjEsIDEwNjM2NSwgMTA2MzY4LCAxMDYzNzIsIDEwNjM3NiwgCisgICAgMTA2MzgxLCAxMDYzODUsIDEwNjM5MCwgMTA2MzkzLCAxMDYzOTcsIDEwNjQwMCwgMTA2NDA0LCAxMDY0MDcsIDEwNjQxMSwgCisgICAgMTA2NDE1LCAxMDY0MTksIDEwNjQyMywgMTA2NDI3LCAxMDY0MzEsIDEwNjQzNSwgMTA2NDM5LCAxMDY0NDMsIDEwNjQ0NywgCisgICAgMTA2NDUxLCAxMDY0NTUsIDEwNjQ1OSwgMTA2NDYzLCAxMDY0NjcsIDEwNjQ3MSwgMTA2NDc1LCAxMDY0NzksIDEwNjQ4MiwgCisgICAgMTA2NDg1LCAxMDY0ODksIDEwNjQ5MywgMTA2NDk3LCAxMDY1MDAsIDEwNjUwMywgMTA2NTA3LCAxMDY1MTAsIDEwNjUxNCwgCisgICAgMTA2NTE4LCAxMDY1MjIsIDEwNjUyNiwgMTA2NTMwLCAxMDY1MzMsIDEwNjUzOCwgMTA2NTQyLCAxMDY1NDcsIDEwNjU1MSwgCisgICAgMTA2NTU2LCAxMDY1NjEsIDEwNjU2NywgMTA2NTcyLCAxMDY1NzgsIDEwNjU4MiwgMTA2NTg3LCAxMDY1OTEsIDEwNjU5NiwgCisgICAgMTA2NjAwLCAxMDY2MDQsIDEwNjYwOCwgMTA2NjEyLCAxMDY2MTUsIDEwNjYxOCwgMTA2NjIyLCAxMDY2MjYsIDEwNjYyOSwgCisgICAgMTA2NjMzLCAxMDY2MzcsIDEwNjY0MSwgMTA2NjQ4LCAwLCAwLCAxMDY2NTIsIDEwNjY1NiwgMTA2NjU5LCAxMDY2NjIsIAorICAgIDEwNjY2NSwgMTA2NjY4LCAxMDY2NzEsIDEwNjY3NCwgMTA2Njc4LCAxMDY2ODEsIDEwNjY4NSwgMTA2Njg4LCAxMDY2OTIsIAorICAgIDEwNjY5NSwgMTA2Njk5LCAxMDY3MDQsIDAsIDEwNjcwOSwgMTA2NzE0LCAxMDY3MTksIDEwNjcyNCwgMTA2NzI5LCAKKyAgICAxMDY3MzQsIDEwNjczOSwgMTA2NzQ1LCAxMDY3NTAsIDEwNjc1NiwgMTA2NzYyLCAxMDY3NjgsIDEwNjc3NCwgMTA2NzgwLCAKKyAgICAxMDY3ODYsIDEwNjc5MiwgMTA2Nzk4LCAxMDY4MDQsIDEwNjgxMCwgMTA2ODE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDY4MjQsIDEwNjgyOCwgMTA2ODMzLCAxMDY4MzcsIDEwNjg0MSwgMTA2ODQ1LCAxMDY4NTAsIDEwNjg1NCwgCisgICAgMTA2ODU5LCAxMDY4NjMsIDEwNjg2OCwgMTA2ODczLCAxMDY4NzgsIDEwNjg4MywgMTA2ODg4LCAxMDY4OTMsIDEwNjg5OCwgCisgICAgMTA2OTAzLCAwLCAxMDY5MDgsIDEwNjkxMywgMTA2OTE4LCAxMDY5MjMsIDEwNjkyOCwgMTA2OTMzLCAxMDY5MzgsIAorICAgIDEwNjk0MywgMTA2OTQ4LCAxMDY5NTMsIDEwNjk1OCwgMTA2OTYzLCAxMDY5NjcsIDEwNjk3MSwgMTA2OTc2LCAxMDY5ODEsIAorICAgIDEwNjk4NiwgMTA2OTkxLCAxMDY5OTUsIDEwNjk5OSwgMTA3MDA0LCAxMDcwMDgsIDEwNzAxMywgMTA3MDE4LCAxMDcwMjIsIAorICAgIDEwNzAyNywgMTA3MDMzLCAxMDcwMzgsIDEwNzA0NCwgMTA3MDQ5LCAxMDcwNTQsIDEwNzA2MCwgMTA3MDY1LCAxMDcwNzEsIAorICAgIDEwNzA3NiwgMTA3MDgxLCAxMDcwODYsIDEwNzA5MSwgMTA3MDk1LCAxMDcxMDAsIDEwNzEwNiwgMTA3MTExLCAxMDcxMTcsIAorICAgIDEwNzEyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTI3LCAxMDcxMzEsIAorICAgIDEwNzEzNSwgMTA3MTM5LCAxMDcxNDMsIDEwNzE0NywgMTA3MTUyLCAwLCAxMDcxNTcsIDAsIDEwNzE2MiwgMTA3MTY3LCAKKyAgICAxMDcxNzIsIDEwNzE3NywgMCwgMTA3MTgyLCAxMDcxODcsIDEwNzE5MiwgMTA3MTk3LCAxMDcyMDIsIDEwNzIwNywgCisgICAgMTA3MjEyLCAxMDcyMTcsIDEwNzIyMiwgMTA3MjI3LCAxMDcyMzIsIDEwNzIzNywgMTA3MjQxLCAxMDcyNDUsIDEwNzI1MCwgCisgICAgMCwgMTA3MjU1LCAxMDcyNjAsIDEwNzI2NCwgMTA3MjY4LCAxMDcyNzMsIDEwNzI3NywgMTA3MjgyLCAxMDcyODcsIAorICAgIDEwNzI5MSwgMTA3Mjk2LCAxMDczMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzMwNiwgMTA3MzEwLCAxMDczMTUsIDEwNzMxOSwgCisgICAgMTA3MzI0LCAxMDczMjgsIDEwNzMzMywgMTA3MzM3LCAxMDczNDIsIDEwNzM0NiwgMTA3MzUxLCAxMDczNTUsIDEwNzM2MCwgCisgICAgMTA3MzY1LCAxMDczNzAsIDEwNzM3NSwgMTA3MzgwLCAxMDczODUsIDEwNzM5MCwgMTA3Mzk1LCAxMDc0MDAsIDEwNzQwNSwgCisgICAgMTA3NDEwLCAxMDc0MTUsIDEwNzQyMCwgMTA3NDI1LCAxMDc0MzAsIDEwNzQzNSwgMTA3NDQwLCAxMDc0NDUsIDEwNzQ1MCwgCisgICAgMTA3NDU1LCAxMDc0NjAsIDEwNzQ2NSwgMTA3NDY5LCAxMDc0NzMsIDEwNzQ3OCwgMTA3NDgzLCAxMDc0ODgsIDEwNzQ5MywgCisgICAgMTA3NDk3LCAxMDc1MDEsIDEwNzUwNiwgMTA3NTEwLCAxMDc1MTUsIDEwNzUyMCwgMTA3NTI1LCAxMDc1MjksIDEwNzUzNCwgCisgICAgMTA3NTQwLCAxMDc1NDUsIDEwNzU1MSwgMTA3NTU2LCAxMDc1NjIsIDEwNzU2NywgMTA3NTczLCAxMDc1NzgsIDEwNzU4NCwgCisgICAgMTA3NTg5LCAwLCAwLCAwLCAwLCAwLCAxMDc1OTQsIDEwNzU5OSwgMTA3NjAzLCAxMDc2MDcsIDEwNzYxMSwgMTA3NjE1LCAKKyAgICAxMDc2MTksIDEwNzYyMywgMTA3NjI4LCAxMDc2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzYzNywgMTA3NjQ0LCAxMDc2NDksIAorICAgIDEwNzY1NCwgMCwgMTA3NjU5LCAxMDc2NjMsIDEwNzY2OCwgMTA3NjcyLCAxMDc2NzcsIDEwNzY4MSwgMTA3Njg2LCAKKyAgICAxMDc2OTEsIDAsIDAsIDEwNzY5NiwgMTA3NzAxLCAwLCAwLCAxMDc3MDYsIDEwNzcxMSwgMTA3NzE2LCAxMDc3MjAsIAorICAgIDEwNzcyNSwgMTA3NzMwLCAxMDc3MzUsIDEwNzc0MCwgMTA3NzQ1LCAxMDc3NTAsIDEwNzc1NSwgMTA3NzYwLCAxMDc3NjUsIAorICAgIDEwNzc3MCwgMTA3Nzc1LCAxMDc3ODAsIDEwNzc4NSwgMTA3NzkwLCAxMDc3OTUsIDEwNzgwMCwgMTA3ODA1LCAxMDc4MTAsIAorICAgIDAsIDEwNzgxNCwgMTA3ODE4LCAxMDc4MjMsIDEwNzgyOCwgMTA3ODMzLCAxMDc4MzcsIDEwNzg0MSwgMCwgMTA3ODQ2LCAKKyAgICAxMDc4NTAsIDAsIDEwNzg1NSwgMTA3ODYwLCAxMDc4NjUsIDEwNzg3MCwgMTA3ODc1LCAwLCAwLCAxMDc4NzksIDEwNzg4NCwgCisgICAgMTA3ODg5LCAxMDc4OTUsIDEwNzkwMCwgMTA3OTA2LCAxMDc5MTEsIDEwNzkxNywgMTA3OTIzLCAwLCAwLCAxMDc5MzAsIAorICAgIDEwNzkzNiwgMCwgMCwgMTA3OTQyLCAxMDc5NDgsIDEwNzk1NCwgMCwgMCwgMTA3OTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDc5NjMsIDAsIDAsIDAsIDAsIDAsIDEwNzk3MCwgMTA3OTc1LCAxMDc5ODIsIDEwNzk5MCwgMTA3OTk2LCAxMDgwMDIsIAorICAgIDEwODAwOCwgMCwgMCwgMTA4MDE1LCAxMDgwMjEsIDEwODAyNiwgMTA4MDMxLCAxMDgwMzYsIDEwODA0MSwgMTA4MDQ2LCAwLCAKKyAgICAwLCAwLCAxMDgwNTEsIDEwODA1NiwgMTA4MDYxLCAxMDgwNjYsIDEwODA3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MDc3LCAxMDgwODAsIDEwODA4NCwgMTA4MDg3LCAxMDgwOTEsIAorICAgIDEwODA5NCwgMTA4MDk4LCAxMDgxMDIsIDEwODEwNywgMTA4MTExLCAxMDgxMTYsIDEwODExOSwgMTA4MTIzLCAxMDgxMjYsIAorICAgIDEwODEzMCwgMTA4MTMzLCAxMDgxMzcsIDEwODE0MSwgMTA4MTQ1LCAxMDgxNDksIDEwODE1MywgMTA4MTU3LCAxMDgxNjEsIAorICAgIDEwODE2NSwgMTA4MTY5LCAxMDgxNzMsIDEwODE3NywgMTA4MTgxLCAxMDgxODUsIDEwODE4OSwgMTA4MTkzLCAxMDgxOTcsIAorICAgIDEwODIwMSwgMTA4MjA1LCAxMDgyMDksIDEwODIxMywgMTA4MjE2LCAxMDgyMjAsIDEwODIyMywgMTA4MjI3LCAxMDgyMzEsIAorICAgIDEwODIzNSwgMTA4MjM4LCAxMDgyNDIsIDEwODI0NSwgMTA4MjQ5LCAxMDgyNTMsIDEwODI1NiwgMTA4MjYwLCAxMDgyNjQsIAorICAgIDEwODI2OCwgMTA4MjcyLCAxMDgyNzYsIDEwODI3OSwgMTA4Mjg0LCAxMDgyODgsIDEwODI5MywgMTA4Mjk3LCAxMDgzMDIsIAorICAgIDEwODMwNywgMTA4MzEzLCAxMDgzMTgsIDEwODMyNCwgMTA4MzI4LCAxMDgzMzMsIDEwODMzNywgMTA4MzQyLCAxMDgzNDYsIAorICAgIDEwODM1MCwgMTA4MzU0LCAxMDgzNTgsIDEwODM2MiwgMTA4MzY2LCAxMDgzNzEsIDEwODM3NCwgMTA4Mzc3LCAxMDgzODAsIAorICAgIDEwODM4NCwgMTA4Mzg3LCAxMDgzOTIsIDEwODM5NiwgMTA4NDAwLCAxMDg0MDMsIDEwODQwNiwgMTA4NDA5LCAxMDg0MTIsIAorICAgIDEwODQxNSwgMTA4NDE4LCAxMDg0MjIsIDEwODQyNSwgMCwgMTA4NDI5LCAwLCAxMDg0MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwODQzNywgMTA4NDQxLCAxMDg0NDUsIDEwODQ1MCwgMTA4NDU0LCAxMDg0NTksIDEwODQ2MywgCisgICAgMTA4NDY4LCAxMDg0NzMsIDEwODQ3OSwgMTA4NDg0LCAxMDg0OTAsIDEwODQ5NCwgMTA4NDk5LCAxMDg1MDMsIDEwODUwOCwgCisgICAgMTA4NTEyLCAxMDg1MTcsIDEwODUyMiwgMTA4NTI3LCAxMDg1MzIsIDEwODUzNywgMTA4NTQyLCAxMDg1NDcsIDEwODU1MiwgCisgICAgMTA4NTU3LCAxMDg1NjIsIDEwODU2NywgMTA4NTcyLCAxMDg1NzcsIDEwODU4MiwgMTA4NTg3LCAxMDg1OTIsIDEwODU5NywgCisgICAgMTA4NjAyLCAxMDg2MDYsIDEwODYxMCwgMTA4NjE1LCAxMDg2MjAsIDEwODYyNSwgMTA4NjI5LCAxMDg2MzMsIDEwODYzOCwgCisgICAgMTA4NjQyLCAxMDg2NDcsIDEwODY1MiwgMTA4NjU3LCAxMDg2NjIsIDEwODY2NiwgMTA4NjcyLCAxMDg2NzcsIDEwODY4MywgCisgICAgMTA4Njg4LCAxMDg2OTQsIDEwODcwMCwgMTA4NzA3LCAxMDg3MTMsIDEwODcyMCwgMTA4NzI1LCAxMDg3MzIsIDEwODczOCwgCisgICAgMTA4NzQzLCAxMDg3NTAsIDEwODc1NiwgMTA4NzYxLCAxMDg3NjYsIDEwODc3MSwgMTA4Nzc2LCAxMDg3ODEsIDEwODc4NiwgCisgICAgMTA4NzkwLCAxMDg3OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODc5OSwgMTA4ODA0LCAxMDg4MDgsIDEwODgxMiwgCisgICAgMTA4ODE2LCAxMDg4MjAsIDEwODgyNCwgMTA4ODI4LCAxMDg4MzMsIDEwODgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTA2NzY3LCAxMDY3NzEsIDEwNjc3NSwgMTA2NzgwLCAxMDY3ODQsIDEwNjc4OSwgMTA2NzkzLCAxMDY3OTgsIAotICAgIDEwNjgwMywgMTA2ODA5LCAxMDY4MTQsIDEwNjgyMCwgMTA2ODI0LCAxMDY4MjksIDEwNjgzMywgMTA2ODM4LCAxMDY4NDIsIAotICAgIDEwNjg0NywgMTA2ODUyLCAxMDY4NTcsIDEwNjg2MiwgMTA2ODY3LCAxMDY4NzIsIDEwNjg3NywgMTA2ODgyLCAxMDY4ODcsIAotICAgIDEwNjg5MiwgMTA2ODk3LCAxMDY5MDIsIDEwNjkwNywgMTA2OTEyLCAxMDY5MTcsIDEwNjkyMiwgMTA2OTI3LCAxMDY5MzIsIAotICAgIDEwNjkzNywgMTA2OTQxLCAxMDY5NDYsIDEwNjk1MSwgMTA2OTU2LCAxMDY5NjAsIDEwNjk2NCwgMTA2OTY5LCAxMDY5NzQsIAotICAgIDEwNjk3OSwgMTA2OTg0LCAxMDY5ODksIDEwNjk5NCwgMTA2OTk4LCAxMDcwMDQsIDEwNzAwOSwgMTA3MDE1LCAxMDcwMjAsIAotICAgIDEwNzAyNiwgMTA3MDMyLCAxMDcwMzksIDEwNzA0NSwgMTA3MDUyLCAxMDcwNTcsIDEwNzA2NCwgMTA3MDcwLCAxMDcwNzUsIAotICAgIDEwNzA4MiwgMTA3MDg4LCAxMDcwOTMsIDEwNzA5OCwgMTA3MTAzLCAxMDcxMDgsIDEwNzExMywgMTA3MTE4LCAxMDcxMjIsIAotICAgIDEwNzEyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTMxLCAxMDcxMzYsIDEwNzE0MCwgMTA3MTQ0LCAxMDcxNDgsIAotICAgIDEwNzE1MiwgMTA3MTU2LCAxMDcxNjAsIDEwNzE2NSwgMTA3MTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDg4NDIsIDEwODg0NSwgMTA4ODQ5LCAxMDg4NTIsIAorICAgIDEwODg1NiwgMTA4ODU5LCAxMDg4NjMsIDEwODg2NywgMTA4ODcyLCAxMDg4NzYsIDEwODg4MSwgMTA4ODg0LCAxMDg4ODgsIAorICAgIDEwODg5MSwgMTA4ODk1LCAxMDg4OTgsIDEwODkwMiwgMTA4OTA2LCAxMDg5MTAsIDEwODkxNCwgMTA4OTE4LCAxMDg5MjIsIAorICAgIDEwODkyNiwgMTA4OTMwLCAxMDg5MzQsIDEwODkzOCwgMTA4OTQyLCAxMDg5NDYsIDEwODk1MCwgMTA4OTU0LCAxMDg5NTgsIAorICAgIDEwODk2MiwgMTA4OTY2LCAxMDg5NzAsIDEwODk3MywgMTA4OTc2LCAxMDg5ODAsIDEwODk4NCwgMTA4OTg4LCAxMDg5OTEsIAorICAgIDEwODk5NCwgMTA4OTk4LCAxMDkwMDEsIDEwOTAwNSwgMTA5MDA5LCAxMDkwMTMsIDEwOTAxNywgMTA5MDIwLCAxMDkwMjUsIAorICAgIDEwOTAyOSwgMTA5MDM0LCAxMDkwMzgsIDEwOTA0MywgMTA5MDQ4LCAwLCAwLCAxMDkwNTQsIDEwOTA1OCwgMTA5MDYzLCAKKyAgICAxMDkwNjcsIDEwOTA3MiwgMTA5MDc2LCAxMDkwODAsIDEwOTA4NCwgMTA5MDg4LCAxMDkwOTIsIDEwOTA5NiwgMTA5MDk5LCAKKyAgICAxMDkxMDMsIDEwOTEwOCwgMTA5MTEyLCAxMDkxMTcsIDEwOTEyMiwgMTA5MTI3LCAxMDkxMzQsIDEwOTE0NiwgMTA5MTU4LCAKKyAgICAxMDkxNzAsIDEwOTE4MywgMTA5MTk3LCAxMDkyMDQsIDEwOTIxNCwgMTA5MjIyLCAxMDkyMzEsIDEwOTI0MCwgMTA5MjQ5LCAKKyAgICAxMDkyNTksIDEwOTI3MCwgMTA5MjgyLCAxMDkyODksIDEwOTI5NiwgMTA5MzA0LCAxMDkzMDksIDEwOTMxNSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTc0LCAxMDcxNzcsIDEwNzE4MSwgMTA3MTg0LCAxMDcxODgsIAotICAgIDEwNzE5MSwgMTA3MTk1LCAxMDcxOTksIDEwNzIwNCwgMTA3MjA4LCAxMDcyMTMsIDEwNzIxNiwgMTA3MjIwLCAxMDcyMjMsIAotICAgIDEwNzIyNywgMTA3MjMwLCAxMDcyMzQsIDEwNzIzOCwgMTA3MjQyLCAxMDcyNDYsIDEwNzI1MCwgMTA3MjU0LCAxMDcyNTgsIAotICAgIDEwNzI2MiwgMTA3MjY2LCAxMDcyNzAsIDEwNzI3NCwgMTA3Mjc4LCAxMDcyODIsIDEwNzI4NiwgMTA3MjkwLCAxMDcyOTQsIAotICAgIDEwNzI5OCwgMTA3MzAyLCAxMDczMDYsIDEwNzMwOSwgMTA3MzEzLCAxMDczMTcsIDEwNzMyMSwgMTA3MzI0LCAxMDczMjcsIAotICAgIDEwNzMzMSwgMTA3MzM1LCAxMDczMzksIDEwNzM0MywgMTA3MzQ3LCAxMDczNTEsIDEwNzM1NCwgMTA3MzU5LCAxMDczNjMsIAotICAgIDEwNzM2OCwgMTA3MzcyLCAxMDczNzcsIDEwNzM4MiwgMCwgMCwgMTA3Mzg4LCAxMDczOTIsIDEwNzM5NywgMTA3NDAxLCAKLSAgICAxMDc0MDYsIDEwNzQxMCwgMTA3NDE0LCAxMDc0MTgsIDEwNzQyMiwgMTA3NDI2LCAxMDc0MzAsIDEwNzQzMywgMTA3NDM3LCAKLSAgICAxMDc0NDIsIDEwNzQ0NiwgMTA3NDUxLCAxMDc0NTYsIDEwNzQ2MSwgMTA3NDY4LCAxMDc0ODAsIDEwNzQ5MiwgMTA3NTA0LCAKLSAgICAxMDc1MTcsIDEwNzUzMSwgMTA3NTM4LCAxMDc1NDgsIDEwNzU1NiwgMTA3NTY1LCAxMDc1NzQsIDEwNzU4MywgMTA3NTkzLCAKLSAgICAxMDc2MDQsIDEwNzYxNiwgMTA3NjIzLCAxMDc2MzAsIDEwNzYzOCwgMTA3NjQzLCAxMDc2NDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTMyMiwgMTA5MzI2LCAxMDkzMzEsIDEwOTMzNSwgMTA5MzQwLCAxMDkzNDQsIAorICAgIDEwOTM0OSwgMTA5MzU0LCAxMDkzNjAsIDEwOTM2NSwgMTA5MzcxLCAxMDkzNzUsIDEwOTM4MCwgMTA5Mzg0LCAxMDkzODksIAorICAgIDEwOTM5MywgMTA5Mzk4LCAxMDk0MDMsIDEwOTQwOCwgMTA5NDEzLCAxMDk0MTgsIDEwOTQyMywgMTA5NDI4LCAxMDk0MzMsIAorICAgIDEwOTQzOCwgMTA5NDQzLCAxMDk0NDgsIDEwOTQ1MywgMTA5NDU4LCAxMDk0NjMsIDEwOTQ2OCwgMTA5NDczLCAxMDk0NzgsIAorICAgIDEwOTQ4MywgMTA5NDg3LCAxMDk0OTEsIDEwOTQ5NiwgMTA5NTAxLCAxMDk1MDYsIDEwOTUxMCwgMTA5NTE0LCAxMDk1MTksIAorICAgIDEwOTUyMywgMTA5NTI4LCAxMDk1MzMsIDEwOTUzOCwgMTA5NTQzLCAxMDk1NDcsIDEwOTU1MiwgMTA5NTU4LCAxMDk1NjMsIAorICAgIDEwOTU2OSwgMTA5NTc0LCAxMDk1ODAsIDEwOTU4NiwgMTA5NTkzLCAxMDk1OTksIDEwOTYwNiwgMTA5NjExLCAxMDk2MTcsIAorICAgIDEwOTYyMiwgMTA5NjI4LCAxMDk2MzMsIDEwOTYzOCwgMTA5NjQzLCAxMDk2NDgsIDEwOTY1MiwgMTA5NjU3LCAxMDk2NjIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTY2NywgMTA5NjcyLCAxMDk2NzYsIDEwOTY4MCwgMTA5Njg0LCAKKyAgICAxMDk2ODgsIDEwOTY5MiwgMTA5Njk2LCAxMDk3MDEsIDEwOTcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5NzEwLCAxMDk3MTYsIAorICAgIDEwOTcyMSwgMTA5NzI4LCAxMDk3MzYsIDEwOTc0MywgMTA5NzUxLCAxMDk3NjAsIDEwOTc2NSwgMTA5Nzc0LCAxMDk3NzksIAorICAgIDEwOTc4NywgMTA5Nzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDk4MDcsIDEwOTgxMSwgMTA5ODE2LCAxMDk4MjAsIDEwOTgyNSwgMTA5ODI5LCAxMDk4MzQsIDEwOTgzOCwgMTA5ODQzLCAKKyAgICAxMDk4NDcsIDEwOTg1MiwgMTA5ODU2LCAxMDk4NjEsIDEwOTg2NiwgMTA5ODcxLCAxMDk4NzYsIDEwOTg4MSwgMTA5ODg2LCAKKyAgICAxMDk4OTEsIDEwOTg5NiwgMTA5OTAxLCAxMDk5MDYsIDEwOTkxMSwgMTA5OTE2LCAxMDk5MjEsIDEwOTkyNiwgMTA5OTMxLCAKKyAgICAxMDk5MzYsIDEwOTk0MSwgMTA5OTQ2LCAxMDk5NTAsIDEwOTk1NCwgMTA5OTU5LCAxMDk5NjQsIDEwOTk2OSwgMTA5OTczLCAKKyAgICAxMDk5NzcsIDEwOTk4MiwgMTA5OTg2LCAxMDk5OTEsIDEwOTk5NiwgMTEwMDAxLCAxMTAwMDUsIDExMDAxMCwgMTEwMDE1LCAKKyAgICAxMTAwMjAsIDExMDAyNiwgMTEwMDMxLCAxMTAwMzcsIDExMDA0MiwgMTEwMDQ4LCAxMTAwNTMsIDExMDA1OSwgMTEwMDY0LCAKKyAgICAxMTAwNzAsIDExMDA3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMDgwLCAxMTAwODUsIDExMDA4OSwgMTEwMDkzLCAKKyAgICAxMTAwOTcsIDExMDEwMSwgMTEwMTA1LCAxMTAxMDksIDExMDExNCwgMTEwMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDc2NTYsIDEwNzY2MCwgMTA3NjY1LCAxMDc2NjksIDEwNzY3NCwgMTA3Njc4LCAxMDc2ODMsIAotICAgIDEwNzY4OCwgMTA3Njk0LCAxMDc2OTksIDEwNzcwNSwgMTA3NzA5LCAxMDc3MTQsIDEwNzcxOCwgMTA3NzIzLCAxMDc3MjcsIAotICAgIDEwNzczMiwgMTA3NzM3LCAxMDc3NDIsIDEwNzc0NywgMTA3NzUyLCAxMDc3NTcsIDEwNzc2MiwgMTA3NzY3LCAxMDc3NzIsIAotICAgIDEwNzc3NywgMTA3NzgyLCAxMDc3ODcsIDEwNzc5MiwgMTA3Nzk3LCAxMDc4MDIsIDEwNzgwNywgMTA3ODEyLCAxMDc4MTcsIAotICAgIDEwNzgyMiwgMTA3ODI2LCAxMDc4MzEsIDEwNzgzNiwgMTA3ODQxLCAxMDc4NDUsIDEwNzg0OSwgMTA3ODU0LCAxMDc4NTksIAotICAgIDEwNzg2NCwgMTA3ODY5LCAxMDc4NzQsIDEwNzg3OSwgMTA3ODgzLCAxMDc4ODgsIDEwNzg5NCwgMTA3ODk5LCAxMDc5MDUsIAotICAgIDEwNzkxMCwgMTA3OTE2LCAxMDc5MjIsIDEwNzkyOSwgMTA3OTM1LCAxMDc5NDIsIDEwNzk0NywgMTA3OTUzLCAxMDc5NTgsIAotICAgIDEwNzk2NCwgMTA3OTY5LCAxMDc5NzQsIDEwNzk3OSwgMTA3OTg0LCAxMDc5ODgsIDEwNzk5MywgMTA3OTk4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgwMDMsIDEwODAwOCwgMTA4MDEyLCAxMDgwMTYsIDEwODAyMCwgMTA4MDI0LCAKLSAgICAxMDgwMjgsIDEwODAzMiwgMTA4MDM3LCAxMDgwNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDEyMywgCisgICAgMTEwMTI3LCAxMTAxMzIsIDExMDEzNywgMTEwMTQxLCAxMTAxNDYsIDExMDE1MywgMTEwMTU3LCAxMTAxNjIsIDExMDE2NywgCisgICAgMTEwMTcxLCAxMTAxNzYsIDExMDE4MSwgMTEwMTg2LCAxMTAxOTEsIDExMDE5NSwgMTEwMjAwLCAxMTAyMDUsIDExMDIwOSwgCisgICAgMTEwMjEzLCAxMTAyMTgsIDExMDIyMywgMTEwMjI4LCAxMTAyMzUsIDExMDI0MCwgMTEwMjQ1LCAwLCAwLCAwLCAxMTAyNTAsIAorICAgIDExMDI1NiwgMTEwMjYzLCAxMTAyNzIsIDExMDI3NywgMTEwMjgzLCAxMTAyODgsIDExMDI5NCwgMTEwMjk5LCAxMTAzMDUsIAorICAgIDExMDMxMCwgMTEwMzE2LCAxMTAzMjEsIDExMDMyNywgMTEwMzMzLCAwLCAwLCAwLCAwLCAxMTAzMzgsIDExMDM0MywgCisgICAgMTEwMzQ3LCAxMTAzNTEsIDExMDM1NSwgMTEwMzU5LCAxMTAzNjMsIDExMDM2NywgMTEwMzcyLCAxMTAzNzYsIDExMDM4MSwgCisgICAgMTEwMzg2LCAxMTAzOTEsIDExMDM5NywgMTEwNDAyLCAxMTA0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwODA0NiwgMTA4MDUwLCAxMDgwNTUsIDEwODA1OSwgMTA4MDY0LCAxMDgwNjgsIDEwODA3MywgMTA4MDc3LCAxMDgwODIsIAotICAgIDEwODA4NiwgMTA4MDkxLCAxMDgwOTUsIDEwODEwMCwgMTA4MTA1LCAxMDgxMTAsIDEwODExNSwgMTA4MTIwLCAxMDgxMjUsIAotICAgIDEwODEzMCwgMTA4MTM1LCAxMDgxNDAsIDEwODE0NSwgMTA4MTUwLCAxMDgxNTUsIDEwODE2MCwgMTA4MTY1LCAxMDgxNzAsIAotICAgIDEwODE3NSwgMTA4MTgwLCAxMDgxODUsIDEwODE5MCwgMTA4MTk0LCAxMDgxOTksIDEwODIwNCwgMTA4MjA5LCAxMDgyMTMsIAotICAgIDEwODIxNywgMTA4MjIyLCAxMDgyMjcsIDEwODIzMiwgMTA4MjM3LCAxMDgyNDIsIDEwODI0NiwgMTA4MjUxLCAxMDgyNTYsIAotICAgIDEwODI2MSwgMTA4MjY3LCAxMDgyNzIsIDEwODI3OCwgMTA4MjgzLCAxMDgyODksIDEwODI5NCwgMTA4MzAwLCAxMDgzMDUsIAotICAgIDEwODMxMSwgMTA4MzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgzMjEsIDEwODMyNiwgMTA4MzMwLCAxMDgzMzQsIAotICAgIDEwODMzOCwgMTA4MzQyLCAxMDgzNDYsIDEwODM1MCwgMTA4MzU1LCAxMDgzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODM2NCwgCi0gICAgMTA4MzY4LCAxMDgzNzMsIDEwODM3OCwgMTA4MzgzLCAxMDgzODgsIDEwODM5NSwgMTA4Mzk5LCAxMDg0MDQsIDEwODQwOSwgCi0gICAgMTA4NDEzLCAxMDg0MTgsIDEwODQyMywgMTA4NDI4LCAxMDg0MzMsIDEwODQzOCwgMTA4NDQzLCAxMDg0NDgsIDEwODQ1MiwgCi0gICAgMTA4NDU2LCAxMDg0NjEsIDEwODQ2NiwgMTA4NDcxLCAxMDg0NzgsIDEwODQ4MywgMTA4NDg4LCAwLCAwLCAwLCAxMDg0OTMsIAotICAgIDEwODUwMCwgMTA4NTA3LCAxMDg1MTYsIDEwODUyMSwgMTA4NTI3LCAxMDg1MzIsIDEwODUzOCwgMTA4NTQzLCAxMDg1NDksIAotICAgIDEwODU1NCwgMTA4NTYwLCAxMDg1NjUsIDEwODU3MSwgMTA4NTc3LCAwLCAwLCAwLCAwLCAxMDg1ODIsIDEwODU4NywgCi0gICAgMTA4NTkxLCAxMDg1OTUsIDEwODU5OSwgMTA4NjAzLCAxMDg2MDcsIDEwODYxMSwgMTA4NjE2LCAxMDg2MjAsIDEwODYyNSwgCi0gICAgMTA4NjMwLCAxMDg2MzUsIDEwODY0MSwgMTA4NjQ2LCAxMDg2NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTg5MjQsMTc1ICsyMDA1OSwxOTUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMTA0MTIsIDExMDQyMCwgMTEwNDI3LCAxMTA0MzUsIDExMDQ0MywgMTEwNDUwLCAxMTA0NTgsIAorICAgIDExMDQ2NiwgMTEwNDc0LCAxMTA0ODEsIDExMDQ4OCwgMTEwNDk2LCAxMTA1MDQsIDExMDUxMiwgMTEwNTIwLCAxMTA1MjgsIAorICAgIDExMDUzNiwgMTEwNTQ0LCAxMTA1NTIsIDExMDU2MCwgMTEwNTY4LCAxMTA1NzYsIDExMDU4NCwgMTEwNTkyLCAxMTA2MDAsIAorICAgIDExMDYwOCwgMTEwNjE2LCAxMTA2MjQsIDExMDYzMiwgMTEwNjQwLCAxMTA2NDgsIDExMDY1NiwgMTEwNjY0LCAxMTA2NzIsIAorICAgIDExMDY3OSwgMTEwNjg3LCAxMTA2OTUsIDExMDcwMiwgMTEwNzEwLCAxMTA3MTgsIDExMDcyNiwgMTEwNzMzLCAxMTA3NDAsIAorICAgIDExMDc0OCwgMTEwNzU2LCAxMTA3NjQsIDExMDc3MiwgMTEwNzgwLCAxMTA3ODgsIDExMDc5NiwgMTEwODA0LCAxMTA4MTIsIAorICAgIDExMDgyMCwgMTEwODI4LCAxMTA4MzYsIDExMDg0NCwgMTEwODUyLCAxMTA4NjAsIDExMDg2OCwgMTEwODc2LCAxMTA4ODQsIAorICAgIDExMDg5MiwgMTEwOTAwLCAxMTA5MDgsIDExMDkxNiwgMTEwOTIzLCAxMTA5MjksIDExMDkzNSwgMTEwOTQxLCAxMTA5NDcsIAorICAgIDExMDk1MywgMTEwOTU5LCAxMTA5NjYsIDExMDk3MiwgMTEwOTc5LCAxMTA5ODYsIDExMDk5MywgMTExMDAwLCAxMTEwMDcsIAorICAgIDExMTAxNCwgMTExMDIxLCAxMTEwMjgsIDExMTAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTExMDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMDg2NTYsIDEwODY2NCwgMTA4NjcxLCAxMDg2NzksIDEwODY4NywgMTA4Njk0LCAxMDg3MDIsIAotICAgIDEwODcxMCwgMTA4NzE4LCAxMDg3MjUsIDEwODczMiwgMTA4NzQwLCAxMDg3NDgsIDEwODc1NiwgMTA4NzY0LCAxMDg3NzIsIAotICAgIDEwODc4MCwgMTA4Nzg4LCAxMDg3OTYsIDEwODgwNCwgMTA4ODEyLCAxMDg4MjAsIDEwODgyOCwgMTA4ODM2LCAxMDg4NDQsIAotICAgIDEwODg1MiwgMTA4ODYwLCAxMDg4NjgsIDEwODg3NiwgMTA4ODg0LCAxMDg4OTIsIDEwODkwMCwgMTA4OTA4LCAxMDg5MTYsIAotICAgIDEwODkyMywgMTA4OTMxLCAxMDg5MzksIDEwODk0NiwgMTA4OTU0LCAxMDg5NjIsIDEwODk3MCwgMTA4OTc3LCAxMDg5ODQsIAotICAgIDEwODk5MiwgMTA5MDAwLCAxMDkwMDgsIDEwOTAxNiwgMTA5MDI0LCAxMDkwMzIsIDEwOTA0MCwgMTA5MDQ4LCAxMDkwNTYsIAotICAgIDEwOTA2NCwgMTA5MDcyLCAxMDkwODAsIDEwOTA4OCwgMTA5MDk2LCAxMDkxMDQsIDEwOTExMiwgMTA5MTIwLCAxMDkxMjgsIAotICAgIDEwOTEzNiwgMTA5MTQ0LCAxMDkxNTIsIDEwOTE2MCwgMTA5MTY3LCAxMDkxNzMsIDEwOTE3OSwgMTA5MTg1LCAxMDkxOTEsIAotICAgIDEwOTE5NywgMTA5MjAzLCAxMDkyMTAsIDEwOTIxNiwgMTA5MjIzLCAxMDkyMzAsIDEwOTIzNywgMTA5MjQ0LCAxMDkyNTEsIAotICAgIDEwOTI1OCwgMTA5MjY1LCAxMDkyNzIsIDEwOTI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA5Mjg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMTEwNDgsIDExMTA1NiwgMTExMDY0LCAxMTEwNzIsIDExMTA4MCwgMTExMDg5LCAxMTEwOTgsIDExMTEwNywgCisgICAgMTExMTE2LCAxMTExMjQsIDExMTEzMywgMTExMTQyLCAxMTExNTEsIDExMTE2MCwgMTExMTY5LCAxMTExNzgsIDExMTE4NywgCisgICAgMTExMTk1LCAxMTEyMDQsIDExMTIxMywgMTExMjIyLCAxMTEyMzEsIDExMTIzOSwgMTExMjQ3LCAxMTEyNTUsIDExMTI2MywgCisgICAgMTExMjcxLCAxMTEyODAsIDExMTI4OSwgMTExMjk5LCAxMTEzMDksIDExMTMxOSwgMTExMzI5LCAxMTEzMzksIDExMTM0OCwgCisgICAgMTExMzU4LCAxMTEzNjgsIDExMTM3OCwgMTExMzg5LCAxMTEzOTksIDExMTQxMSwgMTExNDIzLCAxMTE0MzQsIDExMTQ0OCwgCisgICAgMTExNDU5LCAxMTE0NjksIDExMTQ4MSwgMTExNDkyLCAxMTE1MDIsIDExMTUxNCwgMTExNTI2LCAxMTE1MzcsIDExMTU0OCwgCisgICAgMTExNTU4LCAxMTE1NjgsIDExMTU4MCwgMTExNTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTE2MDMsIDExMTYwNiwgCisgICAgMTExNjEwLCAxMTE2MTMsIDExMTYxNywgMTExNjIwLCAxMTE2MjQsIDExMTYyOCwgMTExNjMzLCAwLCAxMTE2MzcsIAorICAgIDExMTY0MCwgMTExNjQ0LCAxMTE2NDcsIDExMTY1MSwgMTExNjU0LCAxMTE2NTgsIDExMTY2MiwgMTExNjY2LCAxMTE2NzAsIAorICAgIDExMTY3NCwgMTExNjc4LCAxMTE2ODIsIDExMTY4NiwgMTExNjkwLCAxMTE2OTQsIDExMTY5OCwgMTExNzAyLCAxMTE3MDYsIAorICAgIDExMTcxMCwgMTExNzE0LCAxMTE3MTgsIDExMTcyMiwgMTExNzI2LCAxMTE3MjksIDExMTczMiwgMTExNzM2LCAxMTE3NDAsIAorICAgIDExMTc0NCwgMTExNzQ3LCAxMTE3NTAsIDExMTc1NCwgMTExNzU3LCAxMTE3NjEsIDExMTc2NSwgMTExNzY5LCAxMTE3NzMsIAorICAgIDExMTc3NiwgMTExNzgxLCAxMTE3ODUsIDExMTc5MCwgMTExNzk0LCAxMTE3OTksIDExMTgwNCwgMTExODEwLCAwLCAKKyAgICAxMTE4MTUsIDExMTgxOSwgMTExODI0LCAxMTE4MjgsIDExMTgzMywgMTExODM3LCAxMTE4NDEsIDExMTg0NSwgMTExODQ5LCAKKyAgICAxMTE4NTMsIDExMTg1NiwgMTExODYwLCAxMTE4NjUsIDExMTg3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTExODc1LCAxMTE4NzksIDExMTg4MiwgMTExODg1LCAxMTE4ODgsIDExMTg5MSwgMTExODk0LCAxMTE4OTcsIDExMTkwMSwgCisgICAgMTExOTA0LCAxMTE5MDgsIDExMTkxMSwgMTExOTE0LCAxMTE5MTcsIDExMTkyMCwgMTExOTIzLCAxMTE5MjYsIDExMTkzMCwgCisgICAgMTExOTMzLCAxMTE5MzcsIDExMTk0MSwgMTExOTQ1LCAxMTE5NDksIDExMTk1MywgMTExOTU3LCAxMTE5NjEsIDExMTk2NSwgCisgICAgMTExOTY5LCAxMTE5NzMsIDAsIDAsIDAsIDExMTk3OSwgMTExOTg0LCAxMTE5ODksIDExMTk5MywgMTExOTk4LCAxMTIwMDMsIAorICAgIDExMjAwOCwgMTEyMDEzLCAxMTIwMTgsIDExMjAyMywgMTEyMDI4LCAxMTIwMzMsIDExMjAzOCwgMTEyMDQzLCAxMTIwNDcsIAorICAgIDExMjA1MSwgMTEyMDU2LCAxMTIwNjEsIDExMjA2NSwgMTEyMDcwLCAxMTIwNzUsIDExMjA4MCwgMTEyMDg1LCAxMTIwOTAsIAorICAgIDExMjA5NSwgMTEyMTAwLCAxMTIxMDQsIDExMjEwOSwgMTEyMTEzLCAxMTIxMTgsIDExMjEyMywgMTEyMTI3LCAwLCAwLCAKKyAgICAxMTIxMzEsIDExMjEzNywgMTEyMTQ0LCAxMTIxNTEsIDExMjE1OCwgMTEyMTY1LCAxMTIxNzIsIDExMjE3OSwgMTEyMTg2LCAKKyAgICAxMTIxOTMsIDExMjIwMCwgMTEyMjA3LCAxMTIyMTMsIDExMjIxOSwgMTEyMjI2LCAxMTIyMzMsIDExMjIzOSwgMTEyMjQ2LCAKKyAgICAxMTIyNTMsIDExMjI2MCwgMTEyMjY3LCAxMTIyNzQsIDAsIDExMjI4MSwgMTEyMjg3LCAxMTIyOTQsIDExMjMwMCwgCisgICAgMTEyMzA3LCAxMTIzMTQsIDExMjMyMCwgMTEyMzI2LCAxMTIzMzIsIDExMjMzNywgMTEyMzQyLCAxMTIzNDcsIDExMjM1MiwgCisgICAgMTEyMzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMDkyOTIsIDEwOTMwMCwgMTA5MzA4LCAxMDkzMTcsIDEwOTMyNSwgMTA5MzM0LCAxMDkzNDMsIDEwOTM1MiwgCi0gICAgMTA5MzYxLCAxMDkzNjksIDEwOTM3OCwgMTA5Mzg3LCAxMDkzOTYsIDEwOTQwNSwgMTA5NDE0LCAxMDk0MjMsIDEwOTQzMiwgCi0gICAgMTA5NDQxLCAxMDk0NTAsIDEwOTQ1OSwgMTA5NDY4LCAxMDk0NzcsIDEwOTQ4NSwgMTA5NDkzLCAxMDk1MDEsIDEwOTUwOSwgCi0gICAgMTA5NTE3LCAxMDk1MjYsIDEwOTUzNSwgMTA5NTQ1LCAxMDk1NTUsIDEwOTU2NSwgMTA5NTc1LCAxMDk1ODUsIDEwOTU5NCwgCi0gICAgMTA5NjA0LCAxMDk2MTQsIDEwOTYyNCwgMTA5NjM1LCAxMDk2NDUsIDEwOTY1NywgMTA5NjY5LCAxMDk2ODAsIDEwOTY5NCwgCi0gICAgMTA5NzA1LCAxMDk3MTUsIDEwOTcyNywgMTA5NzM4LCAxMDk3NDgsIDEwOTc2MCwgMTA5NzcyLCAxMDk3ODMsIDEwOTc5NCwgCi0gICAgMTA5ODA0LCAxMDk4MTQsIDEwOTgyNiwgMTA5ODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk4NDksIDEwOTg1MiwgCi0gICAgMTA5ODU3LCAxMDk4NjMsIDEwOTg3MSwgMTA5ODc2LCAxMDk4ODIsIDEwOTg5MCwgMTA5ODk2LCAxMDk5MDIsIDEwOTkwNiwgCi0gICAgMTA5OTEwLCAxMDk5MTcsIDEwOTkyNiwgMTA5OTMzLCAxMDk5NDIsIDEwOTk0OCwgMTA5OTU3LCAxMDk5NjQsIDEwOTk3MSwgCi0gICAgMTA5OTc4LCAxMDk5ODgsIDEwOTk5NCwgMTA5OTk4LCAxMTAwMDUsIDExMDAxNCwgMTEwMDI0LCAxMTAwMzEsIDExMDAzOCwgCi0gICAgMTEwMDQyLCAxMTAwNDYsIDExMDA1MywgMTEwMDYzLCAxMTAwNjcsIDExMDA3NCwgMTEwMDgxLCAxMTAwODgsIDExMDA5NCwgCi0gICAgMTEwMTAxLCAxMTAxMDgsIDExMDExNSwgMTEwMTIyLCAxMTAxMjYsIDExMDEzMCwgMTEwMTM0LCAxMTAxNDEsIDExMDE0NSwgCi0gICAgMTEwMTUyLCAxMTAxNTksIDExMDE3MywgMTEwMTgyLCAxMTAxODYsIDExMDE5MCwgMTEwMTk0LCAxMTAyMDEsIDExMDIwNSwgCi0gICAgMTEwMjA5LCAxMTAyMTMsIDExMDIyMSwgMTEwMjI5LCAxMTAyNDgsIDExMDI1OCwgMTEwMjc4LCAxMTAyODIsIDExMDI4NiwgCi0gICAgMTEwMjkwLCAxMTAyOTQsIDExMDI5OCwgMTEwMzAyLCAxMTAzMDYsIDExMDMxMywgMTEwMzE3LCAxMTAzMjAsIDExMDMyNCwgCi0gICAgMTEwMzI4LCAxMTAzMzQsIDExMDM0MSwgMTEwMzUwLCAxMTAzNTQsIDExMDM2MywgMTEwMzcyLCAxMTAzODAsIDExMDM4NCwgCi0gICAgMTEwMzkxLCAxMTAzOTUsIDExMDM5OSwgMTEwNDAzLCAxMTA0MDcsIDExMDQxOCwgMTEwNDI3LCAxMTA0MzYsIDExMDQ0NSwgCi0gICAgMTEwNDU0LCAxMTA0NjYsIDExMDQ3NSwgMTEwNDg0LCAxMTA0OTMsIDExMDUwMSwgMTEwNTEwLCAxMTA1MjIsIDExMDUzMSwgCi0gICAgMTEwNTQwLCAxMTA1NDksIDExMDU2MSwgMTEwNTcwLCAxMTA1NzksIDExMDU5MSwgMTEwNjAwLCAxMTA2MDksIDExMDYyMSwgCi0gICAgMTEwNjMwLCAxMTA2MzQsIDExMDYzOCwgMTEwNjQyLCAxMTA2NDYsIDExMDY1MCwgMTEwNjU0LCAxMTA2NTgsIDExMDY2NSwgCi0gICAgMTEwNjY5LCAxMTA2NzMsIDExMDY4NCwgMTEwNjg4LCAxMTA2OTIsIDExMDY5OSwgMTEwNzA1LCAxMTA3MTEsIDExMDcxNSwgCi0gICAgMTEwNzIyLCAxMTA3MjYsIDExMDczMCwgMTEwNzM0LCAxMTA3MzgsIDExMDc0MiwgMTEwNzQ2LCAxMTA3NTIsIDExMDc2MCwgCi0gICAgMTEwNzY0LCAxMTA3NjgsIDExMDc3MSwgMTEwNzc3LCAxMTA3ODcsIDExMDc5MSwgMTEwODAzLCAxMTA4MTAsIDExMDgxNywgCi0gICAgMTEwODI0LCAxMTA4MzEsIDExMDgzNywgMTEwODQxLCAxMTA4NDUsIDExMDg0OSwgMTEwODUzLCAxMTA4NjAsIDExMDg2OSwgCi0gICAgMTEwODc2LCAxMTA4ODQsIDExMDg5MiwgMTEwODk4LCAxMTA5MDIsIDExMDkwNiwgMTEwOTEwLCAxMTA5MTQsIDExMDkyMCwgCi0gICAgMTEwOTI5LCAxMTA5NDEsIDExMDk0OCwgMTEwOTU1LCAxMTA5NjQsIDExMDk3NSwgMTEwOTgxLCAxMTA5OTAsIDExMDk5OSwgCi0gICAgMTExMDA2LCAxMTEwMTUsIDExMTAyMiwgMTExMDI5LCAxMTEwMzksIDExMTA0NiwgMTExMDUzLCAxMTEwNjAsIDExMTA2NywgCi0gICAgMTExMDcxLCAxMTEwNzcsIDExMTA4MSwgMTExMDkyLCAxMTExMDAsIDExMTEwOSwgMTExMTIxLCAxMTExMjgsIDExMTEzNSwgCi0gICAgMTExMTQ1LCAxMTExNTIsIDExMTE2MiwgMTExMTY5LCAxMTExNzksIDExMTE4NiwgMTExMTkzLCAxMTEyMDMsIDExMTIxMCwgCi0gICAgMTExMjE3LCAxMTEyMjcsIDExMTIzNCwgMTExMjQ2LCAxMTEyNTUsIDExMTI2MiwgMTExMjY5LCAxMTEyNzYsIDExMTI4NSwgCi0gICAgMTExMjk1LCAxMTEzMDgsIDExMTMxNSwgMTExMzI1LCAxMTEzMzUsIDExMTM0MiwgMTExMzUxLCAxMTEzNjQsIDExMTM3MSwgCi0gICAgMTExMzc4LCAxMTEzODUsIDExMTM5NSwgMTExNDA1LCAxMTE0MTIsIDExMTQyMiwgMTExNDI5LCAxMTE0MzYsIDExMTQ0NiwgCi0gICAgMTExNDUyLCAxMTE0NTksIDExMTQ2NiwgMTExNDczLCAxMTE0ODMsIDExMTQ5MCwgMTExNDk3LCAxMTE1MDQsIDExMTUxMCwgCi0gICAgMTExNTE3LCAxMTE1MjcsIDExMTUzNCwgMTExNTM4LCAxMTE1NDYsIDExMTU1MCwgMTExNTYyLCAxMTE1NjYsIDExMTU4MCwgCi0gICAgMTExNTg0LCAxMTE1ODgsIDExMTU5MiwgMTExNTk2LCAxMTE2MDIsIDExMTYwOSwgMTExNjE3LCAxMTE2MjEsIDExMTYyNSwgCi0gICAgMTExNjI5LCAxMTE2MzMsIDExMTY0MCwgMTExNjQ0LCAxMTE2NTAsIDExMTY1NiwgMTExNjY0LCAxMTE2NjgsIDExMTY3NSwgCi0gICAgMTExNjgzLCAxMTE2ODcsIDExMTY5MSwgMTExNjk3LCAxMTE3MDEsIDExMTcxMCwgMTExNzE5LCAxMTE3MjYsIDExMTczNiwgCi0gICAgMTExNzQyLCAxMTE3NDYsIDExMTc1MCwgMTExNzU4LCAxMTE3NjUsIDExMTc3MiwgMTExNzc4LCAxMTE3ODIsIDExMTc5MCwgCi0gICAgMTExNzk0LCAxMTE4MDEsIDExMTgxMywgMTExODIwLCAxMTE4MzAsIDExMTgzNiwgMTExODQwLCAxMTE4NDksIDExMTg1NiwgCi0gICAgMTExODY1LCAxMTE4NjksIDExMTg3MywgMTExODgwLCAxMTE4ODQsIDExMTg4OCwgMTExODkyLCAxMTE4OTYsIDExMTg5OSwgCi0gICAgMTExOTA1LCAxMTE5MTEsIDExMTkxNSwgMTExOTE5LCAxMTE5MjYsIDExMTkzMywgMTExOTQwLCAxMTE5NDcsIDExMTk1NCwgCi0gICAgMTExOTYxLCAxMTE5NjgsIDExMTk3NSwgMTExOTgxLCAxMTE5ODUsIDExMTk4OSwgMTExOTk2LCAxMTIwMDMsIDExMjAxMCwgCi0gICAgMTEyMDE3LCAxMTIwMjQsIDExMjAyOCwgMTEyMDMxLCAxMTIwMzYsIDExMjA0MCwgMTEyMDQ0LCAxMTIwNTMsIDExMjA2MiwgCi0gICAgMTEyMDY2LCAxMTIwNzAsIDExMjA3NiwgMTEyMDgyLCAxMTIwOTksIDExMjEwNSwgMTEyMTA5LCAxMTIxMTgsIDExMjEyMiwgCi0gICAgMTEyMTI2LCAxMTIxMzMsIDExMjE0MSwgMTEyMTQ5LCAxMTIxNTUsIDExMjE1OSwgMTEyMTYzLCAxMTIxNjcsIDExMjE3MSwgCi0gICAgMTEyMTc0LCAxMTIxODAsIDExMjE4NywgMTEyMTk3LCAxMTIyMDQsIDExMjIxMSwgMTEyMjE4LCAxMTIyMjQsIDExMjIzMSwgCi0gICAgMTEyMjM4LCAxMTIyNDUsIDExMjI1MiwgMTEyMjU5LCAxMTIyNjgsIDExMjI3NSwgMTEyMjg3LCAxMTIyOTQsIDExMjMwMSwgCi0gICAgMTEyMzExLCAxMTIzMjIsIDExMjMyOSwgMTEyMzM2LCAxMTIzNDMsIDExMjM1MCwgMTEyMzU3LCAxMTIzNjQsIDExMjM3MSwgCi0gICAgMTEyMzc4LCAxMTIzODUsIDExMjM5MiwgMTEyNDAyLCAxMTI0MTIsIDExMjQyMiwgMTEyNDI5LCAxMTI0MzksIDExMjQ0NiwgCi0gICAgMTEyNDUzLCAxMTI0NjAsIDExMjQ2NywgMTEyNDc0LCAxMTI0ODEsIDExMjQ4OCwgMTEyNDk1LCAxMTI1MDIsIDExMjUwOSwgCi0gICAgMTEyNTE2LCAxMTI1MjMsIDExMjUzMCwgMTEyNTM2LCAxMTI1NDMsIDExMjU1MCwgMTEyNTU5LCAxMTI1NjYsIDExMjU3MywgCi0gICAgMTEyNTc3LCAxMTI1ODUsIDExMjU4OSwgMTEyNTkzLCAxMTI1OTcsIDExMjYwMSwgMTEyNjA1LCAxMTI2MTIsIDExMjYxNiwgCi0gICAgMTEyNjI1LCAxMTI2MjksIDExMjYzNiwgMTEyNjQ0LCAxMTI2NDgsIDExMjY1MiwgMTEyNjU2LCAxMTI2NjksIDExMjY4NSwgCi0gICAgMTEyNjg5LCAxMTI2OTMsIDExMjcwMCwgMTEyNzA2LCAxMTI3MTMsIDExMjcxNywgMTEyNzIxLCAxMTI3MjUsIDExMjcyOSwgCi0gICAgMTEyNzMzLCAxMTI3NDAsIDExMjc0NCwgMTEyNzYyLCAxMTI3NjYsIDExMjc3MCwgMTEyNzc3LCAxMTI3ODEsIDExMjc4NSwgCi0gICAgMTEyNzkxLCAxMTI3OTUsIDExMjc5OSwgMTEyODA3LCAxMTI4MTEsIDExMjgxNSwgMTEyODE5LCAxMTI4MjMsIDExMjgyOSwgCi0gICAgMTEyODQwLCAxMTI4NDksIDExMjg1OCwgMTEyODY1LCAxMTI4NzIsIDExMjg4MywgMTEyODkwLCAxMTI4OTcsIDExMjkwNCwgCi0gICAgMTEyOTExLCAxMTI5MTgsIDExMjkyNSwgMTEyOTMyLCAxMTI5NDIsIDExMjk0OCwgMTEyOTU1LCAxMTI5NjUsIDExMjk3NCwgCi0gICAgMTEyOTgxLCAxMTI5OTAsIDExMzAwMCwgMTEzMDA3LCAxMTMwMTQsIDExMzAyMSwgMTEzMDI4LCAxMTMwNDAsIDExMzA0NywgCi0gICAgMTEzMDU0LCAxMTMwNjEsIDExMzA2OCwgMTEzMDc1LCAxMTMwODUsIDExMzA5MiwgMTEzMDk5LCAxMTMxMDksIDExMzEyMiwgCi0gICAgMTEzMTM0LCAxMTMxNDEsIDExMzE1MSwgMTEzMTU4LCAxMTMxNjUsIDExMzE3MiwgMTEzMTg3LCAxMTMxOTMsIDExMzIwMSwgCi0gICAgMTEzMjExLCAxMTMyMjEsIDExMzIyOCwgMTEzMjM1LCAxMTMyNDEsIDExMzI0NSwgMTEzMjUyLCAxMTMyNjIsIDExMzI2OCwgCi0gICAgMTEzMjgxLCAxMTMyODUsIDExMzI4OSwgMTEzMjk2LCAxMTMzMDAsIDExMzMwNywgMTEzMzE3LCAxMTMzMjEsIDExMzMyNSwgCi0gICAgMTEzMzI5LCAxMTMzMzMsIDExMzMzNywgMTEzMzQ0LCAxMTMzNDgsIDExMzM1NSwgMTEzMzYyLCAxMTMzNjksIDExMzM3OCwgCi0gICAgMTEzMzg3LCAxMTMzOTcsIDExMzQwNCwgMTEzNDExLCAxMTM0MTgsIDExMzQyOCwgMTEzNDM1LCAxMTM0NDUsIDExMzQ1MiwgCi0gICAgMTEzNDYyLCAxMTM0NjksIDExMzQ3NiwgMTEzNDg2LCAxMTM0OTYsIDExMzUwMywgMTEzNTA5LCAxMTM1MTcsIDExMzUyNSwgCi0gICAgMTEzNTMxLCAxMTM1MzcsIDExMzU0MSwgMTEzNTQ1LCAxMTM1NTIsIDExMzU2MCwgMTEzNTY2LCAxMTM1NzAsIDExMzU3NCwgCi0gICAgMTEzNTc4LCAxMTM1ODUsIDExMzU5NywgMTEzNjAwLCAxMTM2MDcsIDExMzYxMywgMTEzNjE3LCAxMTM2MjEsIDExMzYyNSwgCi0gICAgMTEzNjI5LCAxMTM2MzMsIDExMzYzNywgMTEzNjQxLCAxMTM2NDUsIDExMzY0OSwgMTEzNjUzLCAxMTM2NjAsIDExMzY2NCwgCi0gICAgMTEzNjcwLCAxMTM2NzQsIDExMzY3OCwgMTEzNjgyLCAxMTM2ODgsIDExMzY5NSwgMTEzNzAyLCAxMTM3MDksIDExMzcyMSwgCi0gICAgMTEzNzI5LCAxMTM3MzMsIDExMzczOSwgMTEzNzQ4LCAxMTM3NTUsIDExMzc2MSwgMTEzNzY1LCAxMTM3NjksIDExMzc3MywgCi0gICAgMTEzNzc5LCAxMTM3ODgsIDExMzc5NiwgMTEzODAwLCAxMTM4MDYsIDExMzgxMCwgMTEzODE0LCAxMTM4MTgsIDExMzgyNCwgCi0gICAgMTEzODMxLCAxMTM4MzcsIDExMzg0MSwgMTEzODQ3LCAxMTM4NTEsIDExMzg1NSwgMTEzODY0LCAxMTM4NzYsIDExMzg4MCwgCi0gICAgMTEzODg3LCAxMTM4OTQsIDExMzkwNCwgMTEzOTExLCAxMTM5MjMsIDExMzkzMCwgMTEzOTM3LCAxMTM5NDQsIDExMzk1NSwgCi0gICAgMTEzOTY1LCAxMTM5NzgsIDExMzk4OCwgMTEzOTk1LCAxMTM5OTksIDExNDAwMywgMTE0MDA3LCAxMTQwMTEsIDExNDAyMCwgCi0gICAgMTE0MDI5LCAxMTQwMzgsIDExNDA1NSwgMTE0MDY0LCAxMTQwNzAsIDExNDA3NywgMTE0MDg1LCAxMTQwOTgsIDExNDEwMiwgCi0gICAgMTE0MTExLCAxMTQxMjAsIDExNDEyOSwgMTE0MTM4LCAxMTQxNDksIDExNDE1OCwgMTE0MTY3LCAxMTQxNzYsIDExNDE4NSwgCi0gICAgMTE0MTk0LCAxMTQyMDMsIDExNDIxMywgMTE0MjE2LCAxMTQyMjAsIDExNDIyNCwgMTE0MjI4LCAxMTQyMzIsIDExNDIzNiwgCi0gICAgMTE0MjQyLCAxMTQyNDksIDExNDI1NiwgMTE0MjYzLCAxMTQyNjksIDExNDI3NSwgMTE0MjgyLCAxMTQyODgsIDExNDI5NSwgCi0gICAgMTE0MzAzLCAxMTQzMDcsIDExNDMxNCwgMTE0MzIxLCAxMTQzMjgsIDExNDMzNiwgMTE0MzQwLCAxMTQzNDQsIDExNDM0OCwgCi0gICAgMTE0MzUyLCAxMTQzNTYsIDExNDM2MiwgMTE0MzY2LCAxMTQzNzIsIDExNDM3OSwgMTE0Mzg2LCAxMTQzOTIsIDExNDM5OSwgCi0gICAgMTE0NDA2LCAxMTQ0MTMsIDExNDQyMCwgMTE0NDI3LCAxMTQ0MzQsIDExNDQ0MSwgMTE0NDQ4LCAxMTQ0NTUsIDExNDQ2MiwgCi0gICAgMTE0NDY5LCAxMTQ0NzYsIDExNDQ4MywgMTE0NDkwLCAxMTQ0OTYsIDExNDUwMCwgMTE0NTA5LCAxMTQ1MTMsIDExNDUxNywgCi0gICAgMTE0NTIxLCAxMTQ1MjUsIDExNDUzMSwgMTE0NTM4LCAxMTQ1NDUsIDExNDU1MiwgMTE0NTU5LCAxMTQ1NjYsIDExNDU3MiwgCi0gICAgMTE0NTgwLCAxMTQ1ODQsIDExNDU4OCwgMTE0NTkyLCAxMTQ1OTYsIDExNDYwMiwgMTE0NjE5LCAxMTQ2MzYsIDExNDY0MCwgCi0gICAgMTE0NjQ0LCAxMTQ2NDgsIDExNDY1MiwgMTE0NjU2LCAxMTQ2NjAsIDExNDY2NiwgMTE0NjczLCAxMTQ2NzcsIDExNDY4MywgCi0gICAgMTE0NjkwLCAxMTQ2OTcsIDExNDcwNCwgMTE0NzExLCAxMTQ3MTgsIDExNDcyNywgMTE0NzM0LCAxMTQ3NDEsIDExNDc0OCwgCi0gICAgMTE0NzU1LCAxMTQ3NTksIDExNDc2MywgMTE0NzY5LCAxMTQ3ODEsIDExNDc4NSwgMTE0Nzg5LCAxMTQ3OTgsIDExNDgwMiwgCi0gICAgMTE0ODA2LCAxMTQ4MTAsIDExNDgxNiwgMTE0ODIwLCAxMTQ4MjQsIDExNDgzMywgMTE0ODM3LCAxMTQ4NDEsIDExNDg0NSwgCi0gICAgMTE0ODUyLCAxMTQ4NTYsIDExNDg2MCwgMTE0ODY0LCAxMTQ4NjgsIDExNDg3MiwgMTE0ODc2LCAxMTQ4ODAsIDExNDg4NCwgCi0gICAgMTE0ODkwLCAxMTQ4OTcsIDExNDkwNCwgMTE0OTEwLCAxMTQ5MTQsIDExNDkzMSwgMTE0OTM3LCAxMTQ5NDEsIDExNDk0NywgCi0gICAgMTE0OTUzLCAxMTQ5NTksIDExNDk2NSwgMTE0OTcxLCAxMTQ5NzcsIDExNDk4MSwgMTE0OTg1LCAxMTQ5ODksIDExNDk5NSwgCi0gICAgMTE0OTk5LCAxMTUwMDUsIDExNTAwOSwgMTE1MDEzLCAxMTUwMjAsIDExNTAyNywgMTE1MDQ0LCAxMTUwNDgsIDExNTA1MiwgCi0gICAgMTE1MDU2LCAxMTUwNjAsIDExNTA2NCwgMTE1MDc2LCAxMTUwNzksIDExNTA4NCwgMTE1MDg5LCAxMTUxMDQsIDExNTExNCwgCi0gICAgMTE1MTI2LCAxMTUxMzAsIDExNTEzNCwgMTE1MTM4LCAxMTUxNDQsIDExNTE1MSwgMTE1MTU4LCAxMTUxNjgsIDExNTE4MCwgCi0gICAgMTE1MTg2LCAxMTUxOTIsIDExNTIwMSwgMTE1MjA1LCAxMTUyMDksIDExNTIxNiwgMTE1MjI2LCAxMTUyMzMsIDExNTIzOSwgCi0gICAgMTE1MjQzLCAxMTUyNDcsIDExNTI1NCwgMTE1MjYwLCAxMTUyNjQsIDExNTI3MCwgMTE1Mjc0LCAxMTUyODIsIDExNTI4OCwgCi0gICAgMTE1MjkyLCAxMTUzMDAsIDExNTMwOSwgMTE1MzE2LCAxMTUzMjIsIDExNTMyOSwgMTE1MzM2LCAxMTUzNDYsIDExNTM1NiwgCi0gICAgMTE1MzYwLCAxMTUzNjQsIDExNTM2OCwgMTE1MzcyLCAxMTUzNzgsIDExNTM4NSwgMTE1MzkxLCAxMTUzOTgsIDExNTQwNSwgCi0gICAgMTE1NDEyLCAxMTU0MjEsIDExNTQyOCwgMTE1NDM1LCAxMTU0NDEsIDExNTQ0OCwgMTE1NDU1LCAxMTU0NjIsIDExNTQ2OSwgCi0gICAgMTE1NDc2LCAxMTU0ODMsIDExNTQ4OSwgMTE1NDk2LCAxMTU1MDMsIDExNTUxMCwgMTE1NTE5LCAxMTU1MjYsIDExNTUzMywgCi0gICAgMTE1NTM3LCAxMTU1NDMsIDExNTU0NywgMTE1NTUzLCAxMTU1NjAsIDExNTU2NywgMTE1NTc0LCAxMTU1NzgsIDExNTU4MiwgCi0gICAgMTE1NTg2LCAxMTU1OTAsIDExNTU5NCwgMTE1NjAxLCAxMTU2MDUsIDExNTYwOSwgMTE1NjE1LCAxMTU2MjMsIDExNTYyNywgCi0gICAgMTE1NjMxLCAxMTU2MzUsIDExNTYzOSwgMTE1NjQ2LCAxMTU2NTAsIDExNTY1NCwgMTE1NjYyLCAxMTU2NjYsIDExNTY3MCwgCi0gICAgMTE1Njc0LCAxMTU2NzgsIDExNTY4NCwgMTE1Njg4LCAxMTU2OTIsIDExNTY5OCwgMTE1NzA1LCAxMTU3MTEsIDExNTcxOCwgCi0gICAgMTE1NzMwLCAxMTU3MzQsIDExNTc0MSwgMTE1NzQ4LCAxMTU3NTUsIDExNTc2MiwgMTE1Nzc0LCAxMTU3ODEsIDExNTc4NSwgCi0gICAgMTE1Nzg5LCAxMTU3OTMsIDExNTgwMCwgMTE1ODA3LCAxMTU4MTQsIDExNTgyMSwgMTE1ODMxLCAxMTU4MzgsIDExNTg0NCwgCi0gICAgMTE1ODUxLCAxMTU4NTgsIDExNTg2NSwgMTE1ODcyLCAxMTU4ODEsIDExNTg5MSwgMTE1ODk4LCAxMTU5MDIsIDExNTkwOSwgCi0gICAgMTE1OTEzLCAxMTU5MTcsIDExNTkyMSwgMTE1OTI4LCAxMTU5MzUsIDExNTk0NSwgMTE1OTUxLCAxMTU5NTUsIDExNTk2NCwgCi0gICAgMTE1OTY4LCAxMTU5NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDExMjM2MiwgMTEyMzY1LCAxMTIzNzAsIDExMjM3NiwgMTEyMzg0LCAxMTIzODksIDExMjM5NSwgMTEyNDAzLCAKKyAgICAxMTI0MDksIDExMjQxNSwgMTEyNDE5LCAxMTI0MjMsIDExMjQzMCwgMTEyNDM5LCAxMTI0NDYsIDExMjQ1NSwgMTEyNDYxLCAKKyAgICAxMTI0NzAsIDExMjQ3NywgMTEyNDg0LCAxMTI0OTEsIDExMjUwMSwgMTEyNTA3LCAxMTI1MTEsIDExMjUxOCwgMTEyNTI3LCAKKyAgICAxMTI1MzcsIDExMjU0NCwgMTEyNTUxLCAxMTI1NTUsIDExMjU1OSwgMTEyNTY2LCAxMTI1NzYsIDExMjU4MCwgMTEyNTg3LCAKKyAgICAxMTI1OTQsIDExMjYwMSwgMTEyNjA3LCAxMTI2MTQsIDExMjYyMSwgMTEyNjI4LCAxMTI2MzUsIDExMjYzOSwgMTEyNjQzLCAKKyAgICAxMTI2NDcsIDExMjY1NCwgMTEyNjU4LCAxMTI2NjUsIDExMjY3MiwgMTEyNjg2LCAxMTI2OTUsIDExMjY5OSwgMTEyNzAzLCAKKyAgICAxMTI3MDcsIDExMjcxNCwgMTEyNzE4LCAxMTI3MjIsIDExMjcyNiwgMTEyNzM0LCAxMTI3NDIsIDExMjc2MSwgMTEyNzcxLCAKKyAgICAxMTI3OTEsIDExMjc5NSwgMTEyNzk5LCAxMTI4MDMsIDExMjgwNywgMTEyODExLCAxMTI4MTUsIDExMjgxOSwgMTEyODI2LCAKKyAgICAxMTI4MzAsIDExMjgzMywgMTEyODM3LCAxMTI4NDEsIDExMjg0NywgMTEyODU0LCAxMTI4NjMsIDExMjg2NywgMTEyODc2LCAKKyAgICAxMTI4ODUsIDExMjg5MywgMTEyODk3LCAxMTI5MDQsIDExMjkwOCwgMTEyOTEyLCAxMTI5MTYsIDExMjkyMCwgMTEyOTMxLCAKKyAgICAxMTI5NDAsIDExMjk0OSwgMTEyOTU4LCAxMTI5NjcsIDExMjk3OSwgMTEyOTg4LCAxMTI5OTcsIDExMzAwNiwgMTEzMDE0LCAKKyAgICAxMTMwMjMsIDExMzAzNSwgMTEzMDQ0LCAxMTMwNTIsIDExMzA2MSwgMTEzMDczLCAxMTMwODIsIDExMzA5MSwgMTEzMTAzLCAKKyAgICAxMTMxMTIsIDExMzEyMSwgMTEzMTMzLCAxMTMxNDIsIDExMzE0NiwgMTEzMTUwLCAxMTMxNTQsIDExMzE1OCwgMTEzMTYyLCAKKyAgICAxMTMxNjYsIDExMzE3MCwgMTEzMTc3LCAxMTMxODEsIDExMzE4NSwgMTEzMTk2LCAxMTMyMDAsIDExMzIwNCwgMTEzMjExLCAKKyAgICAxMTMyMTcsIDExMzIyMywgMTEzMjI3LCAxMTMyMzQsIDExMzIzOCwgMTEzMjQyLCAxMTMyNDYsIDExMzI1MCwgMTEzMjU0LCAKKyAgICAxMTMyNTgsIDExMzI2NCwgMTEzMjcyLCAxMTMyNzYsIDExMzI4MCwgMTEzMjgzLCAxMTMyODksIDExMzI5OSwgMTEzMzAzLCAKKyAgICAxMTMzMTUsIDExMzMyMiwgMTEzMzI5LCAxMTMzMzYsIDExMzM0MywgMTEzMzQ5LCAxMTMzNTMsIDExMzM1NywgMTEzMzYxLCAKKyAgICAxMTMzNjUsIDExMzM3MiwgMTEzMzgxLCAxMTMzODgsIDExMzM5NiwgMTEzNDA0LCAxMTM0MTAsIDExMzQxNCwgMTEzNDE4LCAKKyAgICAxMTM0MjIsIDExMzQyNiwgMTEzNDMyLCAxMTM0NDEsIDExMzQ1MywgMTEzNDYwLCAxMTM0NjcsIDExMzQ3NiwgMTEzNDg3LCAKKyAgICAxMTM0OTMsIDExMzUwMiwgMTEzNTExLCAxMTM1MTgsIDExMzUyNywgMTEzNTM0LCAxMTM1NDAsIDExMzU1MCwgMTEzNTU3LCAKKyAgICAxMTM1NjQsIDExMzU3MSwgMTEzNTc4LCAxMTM1ODIsIDExMzU4OCwgMTEzNTkyLCAxMTM2MDMsIDExMzYxMSwgMTEzNjIwLCAKKyAgICAxMTM2MzIsIDExMzYzOSwgMTEzNjQ2LCAxMTM2NTYsIDExMzY2MywgMTEzNjczLCAxMTM2ODAsIDExMzY5MCwgMTEzNjk3LCAKKyAgICAxMTM3MDQsIDExMzcxNCwgMTEzNzIxLCAxMTM3MjgsIDExMzczNywgMTEzNzQ0LCAxMTM3NTYsIDExMzc2NSwgMTEzNzcyLCAKKyAgICAxMTM3NzksIDExMzc4NiwgMTEzNzk1LCAxMTM4MDUsIDExMzgxOCwgMTEzODI1LCAxMTM4MzQsIDExMzg0NCwgMTEzODUxLCAKKyAgICAxMTM4NjAsIDExMzg3MywgMTEzODgwLCAxMTM4ODcsIDExMzg5NCwgMTEzOTA0LCAxMTM5MTQsIDExMzkyMCwgMTEzOTMwLCAKKyAgICAxMTM5MzcsIDExMzk0NCwgMTEzOTU0LCAxMTM5NjAsIDExMzk2NywgMTEzOTc0LCAxMTM5ODEsIDExMzk5MSwgMTEzOTk4LCAKKyAgICAxMTQwMDUsIDExNDAxMiwgMTE0MDE4LCAxMTQwMjUsIDExNDAzNSwgMTE0MDQyLCAxMTQwNDYsIDExNDA1NCwgMTE0MDU4LCAKKyAgICAxMTQwNzAsIDExNDA3NCwgMTE0MDg4LCAxMTQwOTIsIDExNDA5NiwgMTE0MTAwLCAxMTQxMDQsIDExNDExMCwgMTE0MTE3LCAKKyAgICAxMTQxMjUsIDExNDEyOSwgMTE0MTMzLCAxMTQxMzcsIDExNDE0MSwgMTE0MTQ4LCAxMTQxNTIsIDExNDE1OCwgMTE0MTY0LCAKKyAgICAxMTQxNzIsIDExNDE3NiwgMTE0MTgzLCAxMTQxOTEsIDExNDE5NSwgMTE0MTk5LCAxMTQyMDUsIDExNDIwOSwgMTE0MjE4LCAKKyAgICAxMTQyMjcsIDExNDIzNCwgMTE0MjQ0LCAxMTQyNTAsIDExNDI1NCwgMTE0MjU4LCAxMTQyNjYsIDExNDI3MywgMTE0MjgwLCAKKyAgICAxMTQyODYsIDExNDI5MCwgMTE0Mjk4LCAxMTQzMDIsIDExNDMwOSwgMTE0MzIxLCAxMTQzMjgsIDExNDMzOCwgMTE0MzQ0LCAKKyAgICAxMTQzNDgsIDExNDM1NywgMTE0MzY0LCAxMTQzNzMsIDExNDM3NywgMTE0MzgxLCAxMTQzODgsIDExNDM5MiwgMTE0Mzk2LCAKKyAgICAxMTQ0MDAsIDExNDQwNCwgMTE0NDA3LCAxMTQ0MTMsIDExNDQxOSwgMTE0NDIzLCAxMTQ0MjcsIDExNDQzNCwgMTE0NDQxLCAKKyAgICAxMTQ0NDgsIDExNDQ1NSwgMTE0NDYyLCAxMTQ0NjksIDExNDQ3NiwgMTE0NDgzLCAxMTQ0ODksIDExNDQ5MywgMTE0NDk3LCAKKyAgICAxMTQ1MDQsIDExNDUxMSwgMTE0NTE4LCAxMTQ1MjUsIDExNDUzMiwgMTE0NTM2LCAxMTQ1MzksIDExNDU0NCwgMTE0NTQ4LCAKKyAgICAxMTQ1NTIsIDExNDU2MSwgMTE0NTcwLCAxMTQ1NzQsIDExNDU3OCwgMTE0NTg0LCAxMTQ1OTAsIDExNDYwNywgMTE0NjEzLCAKKyAgICAxMTQ2MTcsIDExNDYyNiwgMTE0NjMwLCAxMTQ2MzQsIDExNDY0MSwgMTE0NjQ5LCAxMTQ2NTcsIDExNDY2MywgMTE0NjY3LCAKKyAgICAxMTQ2NzEsIDExNDY3NSwgMTE0Njc5LCAxMTQ2ODIsIDExNDY4OCwgMTE0Njk1LCAxMTQ3MDUsIDExNDcxMiwgMTE0NzE5LCAKKyAgICAxMTQ3MjYsIDExNDczMiwgMTE0NzM5LCAxMTQ3NDYsIDExNDc1MywgMTE0NzYwLCAxMTQ3NjcsIDExNDc3NiwgMTE0NzgzLCAKKyAgICAxMTQ3OTUsIDExNDgwMiwgMTE0ODA5LCAxMTQ4MTksIDExNDgzMCwgMTE0ODM3LCAxMTQ4NDQsIDExNDg1MSwgMTE0ODU4LCAKKyAgICAxMTQ4NjUsIDExNDg3MiwgMTE0ODc5LCAxMTQ4ODYsIDExNDg5MywgMTE0OTAwLCAxMTQ5MTAsIDExNDkyMCwgMTE0OTMwLCAKKyAgICAxMTQ5MzcsIDExNDk0NywgMTE0OTU0LCAxMTQ5NjEsIDExNDk2OCwgMTE0OTc1LCAxMTQ5ODIsIDExNDk4OSwgMTE0OTk2LCAKKyAgICAxMTUwMDMsIDExNTAxMCwgMTE1MDE3LCAxMTUwMjQsIDExNTAzMSwgMTE1MDM4LCAxMTUwNDQsIDExNTA1MSwgMTE1MDU4LCAKKyAgICAxMTUwNjcsIDExNTA3NCwgMTE1MDgxLCAxMTUwODUsIDExNTA5MywgMTE1MDk3LCAxMTUxMDEsIDExNTEwNSwgMTE1MTA5LCAKKyAgICAxMTUxMTMsIDExNTEyMCwgMTE1MTI0LCAxMTUxMzMsIDExNTEzNywgMTE1MTQ0LCAxMTUxNTIsIDExNTE1NiwgMTE1MTYwLCAKKyAgICAxMTUxNjQsIDExNTE3NywgMTE1MTkzLCAxMTUxOTcsIDExNTIwMSwgMTE1MjA4LCAxMTUyMTQsIDExNTIyMSwgMTE1MjI1LCAKKyAgICAxMTUyMjksIDExNTIzMywgMTE1MjM3LCAxMTUyNDEsIDExNTI0OCwgMTE1MjUyLCAxMTUyNzAsIDExNTI3NCwgMTE1Mjc4LCAKKyAgICAxMTUyODUsIDExNTI4OSwgMTE1MjkzLCAxMTUyOTksIDExNTMwMywgMTE1MzA3LCAxMTUzMTUsIDExNTMxOSwgMTE1MzIzLCAKKyAgICAxMTUzMjYsIDExNTMzMCwgMTE1MzM2LCAxMTUzNDcsIDExNTM1NiwgMTE1MzY1LCAxMTUzNzIsIDExNTM3OSwgMTE1MzkwLCAKKyAgICAxMTUzOTcsIDExNTQwNCwgMTE1NDExLCAxMTU0MTgsIDExNTQyNSwgMTE1NDMyLCAxMTU0MzksIDExNTQ0OSwgMTE1NDU1LCAKKyAgICAxMTU0NjIsIDExNTQ3MiwgMTE1NDgxLCAxMTU0ODgsIDExNTQ5NywgMTE1NTA3LCAxMTU1MTQsIDExNTUyMSwgMTE1NTI4LCAKKyAgICAxMTU1MzUsIDExNTU0NywgMTE1NTU0LCAxMTU1NjEsIDExNTU2OCwgMTE1NTc1LCAxMTU1ODIsIDExNTU5MiwgMTE1NTk5LCAKKyAgICAxMTU2MDYsIDExNTYxNiwgMTE1NjI5LCAxMTU2NDEsIDExNTY0OCwgMTE1NjU4LCAxMTU2NjUsIDExNTY3MiwgMTE1Njc5LCAKKyAgICAxMTU2OTMsIDExNTY5OSwgMTE1NzA3LCAxMTU3MTcsIDExNTcyNywgMTE1NzM0LCAxMTU3NDEsIDExNTc0NywgMTE1NzUxLCAKKyAgICAxMTU3NTgsIDExNTc2OCwgMTE1Nzc0LCAxMTU3ODcsIDExNTc5MSwgMTE1Nzk1LCAxMTU4MDIsIDExNTgwNiwgMTE1ODEzLCAKKyAgICAxMTU4MjMsIDExNTgyNywgMTE1ODMxLCAxMTU4MzUsIDExNTgzOSwgMTE1ODQzLCAxMTU4NTAsIDExNTg1NCwgMTE1ODYxLCAKKyAgICAxMTU4NjgsIDExNTg3NSwgMTE1ODg0LCAxMTU4OTMsIDExNTkwMywgMTE1OTEwLCAxMTU5MTcsIDExNTkyNCwgMTE1OTM0LCAKKyAgICAxMTU5NDEsIDExNTk1MSwgMTE1OTU4LCAxMTU5NjgsIDExNTk3NSwgMTE1OTgyLCAxMTU5OTIsIDExNjAwMiwgMTE2MDA5LCAKKyAgICAxMTYwMTUsIDExNjAyMywgMTE2MDMxLCAxMTYwMzcsIDExNjA0MywgMTE2MDQ3LCAxMTYwNTEsIDExNjA1OCwgMTE2MDY2LCAKKyAgICAxMTYwNzIsIDExNjA3NiwgMTE2MDgwLCAxMTYwODQsIDExNjA5MSwgMTE2MTAzLCAxMTYxMDYsIDExNjExMywgMTE2MTE5LCAKKyAgICAxMTYxMjMsIDExNjEyNywgMTE2MTMxLCAxMTYxMzUsIDExNjEzOSwgMTE2MTQzLCAxMTYxNDcsIDExNjE1MSwgMTE2MTU1LCAKKyAgICAxMTYxNTksIDExNjE2NiwgMTE2MTcwLCAxMTYxNzYsIDExNjE4MCwgMTE2MTg0LCAxMTYxODgsIDExNjE5NCwgMTE2MjAxLCAKKyAgICAxMTYyMDgsIDExNjIxNSwgMTE2MjI2LCAxMTYyMzQsIDExNjIzOCwgMTE2MjQ0LCAxMTYyNTMsIDExNjI2MCwgMTE2MjY2LCAKKyAgICAxMTYyNjksIDExNjI3MywgMTE2Mjc3LCAxMTYyODMsIDExNjI5MiwgMTE2MzAwLCAxMTYzMDQsIDExNjMxMCwgMTE2MzE0LCAKKyAgICAxMTYzMTgsIDExNjMyMiwgMTE2MzI4LCAxMTYzMzUsIDExNjM0MSwgMTE2MzQ1LCAxMTYzNTEsIDExNjM1NSwgMTE2MzU5LCAKKyAgICAxMTYzNjgsIDExNjM4MCwgMTE2Mzg0LCAxMTYzOTEsIDExNjM5OCwgMTE2NDA4LCAxMTY0MTUsIDExNjQyNywgMTE2NDM0LCAKKyAgICAxMTY0NDEsIDExNjQ0OCwgMTE2NDU5LCAxMTY0NjksIDExNjQ4MiwgMTE2NDkyLCAxMTY0OTksIDExNjUwMywgMTE2NTA3LCAKKyAgICAxMTY1MTEsIDExNjUxNSwgMTE2NTI0LCAxMTY1MzMsIDExNjU0MiwgMTE2NTU5LCAxMTY1NjgsIDExNjU3NCwgMTE2NTgxLCAKKyAgICAxMTY1ODksIDExNjYwMiwgMTE2NjA2LCAxMTY2MTUsIDExNjYyNCwgMTE2NjMzLCAxMTY2NDIsIDExNjY1MywgMTE2NjYyLCAKKyAgICAxMTY2NzAsIDExNjY3OSwgMTE2Njg4LCAxMTY2OTcsIDExNjcwNiwgMTE2NzE2LCAxMTY3MTksIDExNjcyMywgMTE2NzI3LCAKKyAgICAxMTY3MzEsIDExNjczNSwgMTE2NzM5LCAxMTY3NDUsIDExNjc1MiwgMTE2NzU5LCAxMTY3NjYsIDExNjc3MiwgMTE2Nzc4LCAKKyAgICAxMTY3ODUsIDExNjc5MSwgMTE2Nzk4LCAxMTY4MDYsIDExNjgxMCwgMTE2ODE3LCAxMTY4MjQsIDExNjgzMSwgMTE2ODM5LCAKKyAgICAxMTY4NDMsIDExNjg0NywgMTE2ODUxLCAxMTY4NTUsIDExNjg1OSwgMTE2ODY1LCAxMTY4NjksIDExNjg3NSwgMTE2ODgyLCAKKyAgICAxMTY4ODksIDExNjg5NSwgMTE2OTAyLCAxMTY5MDksIDExNjkxNiwgMTE2OTIzLCAxMTY5MzAsIDExNjkzNywgMTE2OTQ0LCAKKyAgICAxMTY5NTEsIDExNjk1OCwgMTE2OTY1LCAxMTY5NzIsIDExNjk3OSwgMTE2OTg2LCAxMTY5OTMsIDExNjk5OSwgMTE3MDAzLCAKKyAgICAxMTcwMTIsIDExNzAxNiwgMTE3MDIwLCAxMTcwMjQsIDExNzAyOCwgMTE3MDM0LCAxMTcwNDEsIDExNzA0OCwgMTE3MDU1LCAKKyAgICAxMTcwNjIsIDExNzA2OSwgMTE3MDc1LCAxMTcwODMsIDExNzA4NywgMTE3MDkxLCAxMTcwOTUsIDExNzA5OSwgMTE3MTA1LCAKKyAgICAxMTcxMjIsIDExNzEzOSwgMTE3MTQzLCAxMTcxNDcsIDExNzE1MSwgMTE3MTU1LCAxMTcxNTksIDExNzE2MywgMTE3MTY5LCAKKyAgICAxMTcxNzYsIDExNzE4MCwgMTE3MTg2LCAxMTcxOTMsIDExNzIwMCwgMTE3MjA3LCAxMTcyMTQsIDExNzIyMSwgMTE3MjMwLCAKKyAgICAxMTcyMzcsIDExNzI0NCwgMTE3MjUxLCAxMTcyNTgsIDExNzI2MiwgMTE3MjY2LCAxMTcyNzIsIDExNzI4NCwgMTE3Mjg4LCAKKyAgICAxMTcyOTIsIDExNzMwMSwgMTE3MzA1LCAxMTczMDksIDExNzMxMywgMTE3MzE5LCAxMTczMjMsIDExNzMyNywgMTE3MzM2LCAKKyAgICAxMTczNDAsIDExNzM0NCwgMTE3MzQ4LCAxMTczNTUsIDExNzM1OSwgMTE3MzYzLCAxMTczNjcsIDExNzM3MSwgMTE3Mzc1LCAKKyAgICAxMTczNzksIDExNzM4MywgMTE3Mzg3LCAxMTczOTMsIDExNzQwMCwgMTE3NDA3LCAxMTc0MTMsIDExNzQxNywgMTE3NDM0LCAKKyAgICAxMTc0NDAsIDExNzQ0NCwgMTE3NDUwLCAxMTc0NTYsIDExNzQ2MiwgMTE3NDY4LCAxMTc0NzQsIDExNzQ4MCwgMTE3NDg0LCAKKyAgICAxMTc0ODgsIDExNzQ5MiwgMTE3NDk4LCAxMTc1MDIsIDExNzUwOCwgMTE3NTEyLCAxMTc1MTYsIDExNzUyMywgMTE3NTMwLCAKKyAgICAxMTc1NDcsIDExNzU1MSwgMTE3NTU1LCAxMTc1NTksIDExNzU2MywgMTE3NTY3LCAxMTc1NzksIDExNzU4MiwgMTE3NTg3LCAKKyAgICAxMTc1OTIsIDExNzYwNywgMTE3NjE3LCAxMTc2MjksIDExNzYzMywgMTE3NjM3LCAxMTc2NDEsIDExNzY0NywgMTE3NjU0LCAKKyAgICAxMTc2NjEsIDExNzY3MSwgMTE3NjgzLCAxMTc2ODksIDExNzY5NSwgMTE3NzA0LCAxMTc3MDgsIDExNzcxMiwgMTE3NzE5LCAKKyAgICAxMTc3MjksIDExNzczNiwgMTE3NzQyLCAxMTc3NDYsIDExNzc1MCwgMTE3NzU3LCAxMTc3NjMsIDExNzc2NywgMTE3NzczLCAKKyAgICAxMTc3NzcsIDExNzc4NSwgMTE3NzkxLCAxMTc3OTUsIDExNzgwMywgMTE3ODExLCAxMTc4MTgsIDExNzgyNCwgMTE3ODMxLCAKKyAgICAxMTc4MzgsIDExNzg0OCwgMTE3ODU4LCAxMTc4NjIsIDExNzg2NiwgMTE3ODcwLCAxMTc4NzQsIDExNzg4MCwgMTE3ODg3LCAKKyAgICAxMTc4OTMsIDExNzkwMCwgMTE3OTA3LCAxMTc5MTQsIDExNzkyMywgMTE3OTMwLCAxMTc5MzcsIDExNzk0MywgMTE3OTUwLCAKKyAgICAxMTc5NTcsIDExNzk2NCwgMTE3OTcxLCAxMTc5NzgsIDExNzk4NSwgMTE3OTkxLCAxMTc5OTgsIDExODAwNSwgMTE4MDEyLCAKKyAgICAxMTgwMjEsIDExODAyOCwgMTE4MDM1LCAxMTgwMzksIDExODA0NSwgMTE4MDQ5LCAxMTgwNTUsIDExODA2MiwgMTE4MDY5LCAKKyAgICAxMTgwNzYsIDExODA4MCwgMTE4MDg0LCAxMTgwODgsIDExODA5MiwgMTE4MDk2LCAxMTgxMDMsIDExODEwNywgMTE4MTExLCAKKyAgICAxMTgxMTcsIDExODEyNSwgMTE4MTI5LCAxMTgxMzMsIDExODEzNywgMTE4MTQxLCAxMTgxNDgsIDExODE1MiwgMTE4MTU2LCAKKyAgICAxMTgxNjQsIDExODE2OCwgMTE4MTcyLCAxMTgxNzYsIDExODE4MCwgMTE4MTg2LCAxMTgxOTAsIDExODE5NCwgMTE4MjAwLCAKKyAgICAxMTgyMDcsIDExODIxMywgMTE4MjIwLCAxMTgyMzIsIDExODIzNiwgMTE4MjQzLCAxMTgyNTAsIDExODI1NywgMTE4MjY0LCAKKyAgICAxMTgyNzYsIDExODI4MywgMTE4Mjg3LCAxMTgyOTEsIDExODI5NSwgMTE4MzAyLCAxMTgzMDksIDExODMxNiwgMTE4MzIzLCAKKyAgICAxMTgzMzMsIDExODM0MCwgMTE4MzQ2LCAxMTgzNTMsIDExODM2MCwgMTE4MzY3LCAxMTgzNzQsIDExODM4MywgMTE4MzkzLCAKKyAgICAxMTg0MDAsIDExODQwNCwgMTE4NDExLCAxMTg0MTUsIDExODQxOSwgMTE4NDIzLCAxMTg0MzAsIDExODQzNywgMTE4NDQ3LCAKKyAgICAxMTg0NTMsIDExODQ1NywgMTE4NDY2LCAxMTg0NzAsIDExODQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE1OTc5LCAxMTU5ODUsIDExNTk5MSwgMTE1OTk4LCAxMTYwMDUsIAotICAgIDExNjAxMiwgMTE2MDE5LCAxMTYwMjYsIDExNjAzMywgMTE2MDM5LCAxMTYwNDYsIDExNjA1MywgMTE2MDYwLCAxMTYwNjcsIAotICAgIDExNjA3NCwgMTE2MDgxLCAxMTYwODcsIDExNjA5MywgMTE2MDk5LCAxMTYxMDUsIDExNjExMSwgMTE2MTE3LCAxMTYxMjMsIAotICAgIDExNjEyOSwgMTE2MTM1LCAxMTYxNDIsIDExNjE0OSwgMTE2MTU2LCAxMTYxNjMsIDExNjE3MCwgMTE2MTc3LCAxMTYxODMsIAotICAgIDExNjE4OSwgMTE2MTk1LCAxMTYyMDIsIDExNjIwOSwgMTE2MjE1LCAxMTYyMjEsIDExNjIzMCwgMTE2MjM3LCAxMTYyNDQsIAotICAgIDExNjI1MSwgMTE2MjU4LCAxMTYyNjUsIDExNjI3MiwgMTE2Mjc4LCAxMTYyODQsIDExNjI5MCwgMTE2Mjk5LCAxMTYzMDYsIAotICAgIDExNjMxMywgMTE2MzI0LCAxMTYzMzUsIDExNjM0MSwgMTE2MzQ3LCAxMTYzNTMsIDExNjM2MiwgMTE2MzY5LCAxMTYzNzYsIAotICAgIDExNjM4NiwgMTE2Mzk2LCAxMTY0MDcsIDExNjQxOCwgMTE2NDMwLCAxMTY0NDMsIDExNjQ1NCwgMTE2NDY1LCAxMTY0NzcsIAotICAgIDExNjQ5MCwgMTE2NTAxLCAxMTY1MTIsIDExNjUyMywgMTE2NTM0LCAxMTY1NDUsIDExNjU1NywgMTE2NTY1LCAxMTY1NzMsIAotICAgIDExNjU4MiwgMTE2NTkxLCAxMTY2MDAsIDExNjYwNiwgMTE2NjEyLCAxMTY2MTgsIDExNjYyNSwgMTE2NjM1LCAxMTY2NDIsIAotICAgIDExNjY1MiwgMTE2NjU3LCAxMTY2NjIsIDExNjY2OCwgMTE2Njc0LCAxMTY2ODIsIDExNjY5MCwgMTE2Njk5LCAxMTY3MTAsIAotICAgIDExNjcyMSwgMTE2NzI5LCAxMTY3MzcsIDExNjc0NiwgMTE2NzU1LCAxMTY3NjMsIDExNjc3MCwgMTE2Nzc4LCAxMTY3ODYsIAotICAgIDExNjc5MywgMTE2ODAwLCAxMTY4MDksIDExNjgxOCwgMTE2ODI3LCAxMTY4MzYsIDExNjg0NSwgMCwgMTE2ODU0LCAKLSAgICAxMTY4NjUsIDExNjg3MiwgMTE2ODgwLCAxMTY4ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNjg5NiwgCi0gICAgMTE2OTA1LCAxMTY5MTIsIDExNjkxOSwgMTE2OTI4LCAxMTY5MzUsIDExNjk0MiwgMTE2OTQ5LCAxMTY5NTksIDExNjk2NiwgCi0gICAgMTE2OTczLCAxMTY5ODAsIDExNjk4OCwgMTE2OTk1LCAxMTcwMDIsIDExNzAwOSwgMTE3MDIwLCAxMTcwMjcsIDExNzAzNCwgCi0gICAgMTE3MDQxLCAxMTcwNDgsIDExNzA1NSwgMTE3MDY0LCAxMTcwNzEsIDExNzA3NywgMTE3MDg0LCAxMTcwOTMsIDExNzEwMCwgCi0gICAgMTE3MTA3LCAxMTcxMTQsIDExNzEyNCwgMTE3MTMxLCAxMTcxMzgsIDExNzE0OCwgMTE3MTU4LCAxMTcxNjUsIDExNzE3MiwgCi0gICAgMTE3MTc5LCAxMTcxODYsIDExNzE5MywgMTE3MjAwLCAxMTcyMDksIDExNzIxNiwgMTE3MjIzLCAxMTcyMjksIDExNzIzNywgCi0gICAgMTE3MjQ2LCAxMTcyNTUsIDExNzI2NiwgMTE3Mjc1LCAxMTcyODQsIDExNzI5MywgMTE3MzAyLCAxMTczMTEsIDExNzMxOCwgCi0gICAgMTE3MzI1LCAxMTczMzQsIDExNzM0NiwgMTE3MzU2LCAxMTczNjMsIDExNzM3MCwgMTE3MzgwLCAxMTczOTAsIDExNzM5OSwgCi0gICAgMTE3NDA5LCAxMTc0MTYsIDExNzQyNiwgMTE3NDMzLCAxMTc0NDAsIDExNzQ0NywgMTE3NDU3LCAxMTc0NjcsIDExNzQ3NCwgCi0gICAgMTE3NDgxLCAxMTc0OTEsIDExNzQ5NywgMTE3NTA4LCAxMTc1MTcsIDExNzUyNywgMTE3NTM1LCAxMTc1NDgsIDExNzU1NSwgCi0gICAgMTE3NTYxLCAxMTc1NjksIDExNzU3NiwgMTE3NTg2LCAxMTc1OTAsIDExNzU5NCwgMTE3NTk4LCAxMTc2MDIsIDExNzYwNiwgCi0gICAgMTE3NjEwLCAxMTc2MTQsIDExNzYyMywgMTE3NjI3LCAxMTc2MzQsIDExNzYzOCwgMTE3NjQyLCAxMTc2NDYsIDExNzY1MCwgCi0gICAgMTE3NjU0LCAxMTc2NTgsIDExNzY2MiwgMTE3NjY2LCAxMTc2NzAsIDExNzY3NCwgMTE3Njc4LCAxMTc2ODIsIDExNzY4NiwgCi0gICAgMTE3NjkwLCAxMTc2OTQsIDExNzY5OCwgMTE3NzAyLCAxMTc3MDYsIDExNzcxMCwgMTE3NzE3LCAxMTc3MjQsIDExNzczNCwgCi0gICAgMTE3NzQ3LCAxMTc3NTcsIDExNzc2MSwgMTE3NzY1LCAxMTc3NjksIDExNzc3MywgMTE3Nzc3LCAxMTc3ODEsIDExNzc4NSwgCi0gICAgMTE3Nzg5LCAxMTc3OTMsIDExNzc5NywgMTE3ODAxLCAxMTc4MDgsIDExNzgxNSwgMTE3ODI2LCAxMTc4MzMsIDExNzg0MCwgCi0gICAgMTE3ODQ3LCAxMTc4NTQsIDExNzg2MSwgMTE3ODY4LCAxMTc4NzUsIDExNzg3OSwgMTE3ODgzLCAxMTc4OTAsIDExNzg5NywgCi0gICAgMTE3OTA0LCAxMTc5MTMsIDExNzkyMCwgMTE3OTMzLCAxMTc5NDMsIDExNzk1MCwgMTE3OTU3LCAxMTc5NjEsIDExNzk2NSwgCi0gICAgMTE3OTc0LCAxMTc5ODEsIDExNzk4OCwgMTE3OTk1LCAxMTgwMDgsIDExODAxNSwgMTE4MDIyLCAxMTgwMzIsIDExODA0MiwgCi0gICAgMTE4MDUxLCAxMTgwNTgsIDExODA2NSwgMTE4MDcyLCAxMTgwNzksIDExODA4NiwgMTE4MDkzLCAxMTgxMDMsIDExODEwOSwgCi0gICAgMTE4MTE3LCAxMTgxMjQsIDExODEzMiwgMTE4MTM5LCAxMTgxNTAsIDExODE1NywgMTE4MTYzLCAxMTgxNzAsIDExODE3NywgCi0gICAgMTE4MTg0LCAxMTgxOTEsIDExODIwMSwgMTE4MjExLCAxMTgyMTgsIDExODIyNSwgMTE4MjM0LCAxMTgyNDIsIDExODI0OCwgCi0gICAgMTE4MjU1LCAxMTgyNjIsIDExODI2OSwgMTE4Mjc2LCAxMTgyODAsIDExODI5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4NDgxLCAxMTg0ODcsIAorICAgIDExODQ5MywgMTE4NTAwLCAxMTg1MDcsIDExODUxNCwgMTE4NTIxLCAxMTg1MjgsIDExODUzNSwgMTE4NTQxLCAxMTg1NDgsIAorICAgIDExODU1NSwgMTE4NTYyLCAxMTg1NjksIDExODU3NiwgMTE4NTgzLCAxMTg1ODksIDExODU5NSwgMTE4NjAxLCAxMTg2MDcsIAorICAgIDExODYxMywgMTE4NjE5LCAxMTg2MjUsIDExODYzMSwgMTE4NjM3LCAxMTg2NDQsIDExODY1MSwgMTE4NjU4LCAxMTg2NjUsIAorICAgIDExODY3MiwgMTE4Njc5LCAxMTg2ODUsIDExODY5MSwgMTE4Njk3LCAxMTg3MDQsIDExODcxMSwgMTE4NzE3LCAxMTg3MjMsIAorICAgIDExODczMiwgMTE4NzM5LCAxMTg3NDYsIDExODc1MywgMTE4NzYwLCAxMTg3NjcsIDExODc3NCwgMTE4NzgwLCAxMTg3ODYsIAorICAgIDExODc5MiwgMTE4ODAxLCAxMTg4MDgsIDExODgxNSwgMTE4ODI2LCAxMTg4MzcsIDExODg0MywgMTE4ODQ5LCAxMTg4NTUsIAorICAgIDExODg2NCwgMTE4ODcxLCAxMTg4NzgsIDExODg4OCwgMTE4ODk4LCAxMTg5MDksIDExODkyMCwgMTE4OTMyLCAxMTg5NDUsIAorICAgIDExODk1NiwgMTE4OTY3LCAxMTg5NzksIDExODk5MiwgMTE5MDAzLCAxMTkwMTQsIDExOTAyNSwgMTE5MDM2LCAxMTkwNDcsIAorICAgIDExOTA1OSwgMTE5MDY3LCAxMTkwNzUsIDExOTA4NCwgMTE5MDkzLCAxMTkxMDIsIDExOTEwOCwgMTE5MTE0LCAxMTkxMjAsIAorICAgIDExOTEyNywgMTE5MTM3LCAxMTkxNDQsIDExOTE1NCwgMTE5MTU5LCAxMTkxNjQsIDExOTE3MCwgMTE5MTc2LCAxMTkxODQsIAorICAgIDExOTE5MiwgMTE5MjAxLCAxMTkyMTIsIDExOTIyMywgMTE5MjMxLCAxMTkyMzksIDExOTI0OCwgMTE5MjU3LCAxMTkyNjUsIAorICAgIDExOTI3MiwgMTE5MjgwLCAxMTkyODgsIDExOTI5NSwgMTE5MzAyLCAxMTkzMTEsIDExOTMyMCwgMTE5MzI5LCAxMTkzMzgsIAorICAgIDExOTM0NywgMCwgMTE5MzU2LCAxMTkzNjcsIDExOTM3NCwgMTE5MzgyLCAxMTkzOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDExOTM5OCwgMTE5NDA3LCAxMTk0MTQsIDExOTQyMSwgMTE5NDMwLCAxMTk0MzcsIDExOTQ0NCwgCisgICAgMTE5NDUxLCAxMTk0NjEsIDExOTQ2OCwgMTE5NDc1LCAxMTk0ODIsIDExOTQ5MCwgMTE5NDk3LCAxMTk1MDQsIDExOTUxMSwgCisgICAgMTE5NTIyLCAxMTk1MjksIDExOTUzNiwgMTE5NTQzLCAxMTk1NTAsIDExOTU1NywgMTE5NTY2LCAxMTk1NzMsIDExOTU3OSwgCisgICAgMTE5NTg2LCAxMTk1OTUsIDExOTYwMiwgMTE5NjA5LCAxMTk2MTYsIDExOTYyNiwgMTE5NjMzLCAxMTk2NDAsIDExOTY1MCwgCisgICAgMTE5NjYwLCAxMTk2NjcsIDExOTY3NCwgMTE5NjgxLCAxMTk2ODgsIDExOTY5NSwgMTE5NzAyLCAxMTk3MTEsIDExOTcxOCwgCisgICAgMTE5NzI1LCAxMTk3MzEsIDExOTczOSwgMTE5NzQ4LCAxMTk3NTcsIDExOTc2OCwgMTE5Nzc2LCAxMTk3ODUsIDExOTc5NCwgCisgICAgMTE5ODAzLCAxMTk4MTIsIDExOTgxOSwgMTE5ODI2LCAxMTk4MzUsIDExOTg0NywgMTE5ODU3LCAxMTk4NjQsIDExOTg3MSwgCisgICAgMTE5ODgxLCAxMTk4OTEsIDExOTkwMCwgMTE5OTEwLCAxMTk5MTcsIDExOTkyNywgMTE5OTM0LCAxMTk5NDEsIDExOTk0OCwgCisgICAgMTE5OTU4LCAxMTk5NjgsIDExOTk3NSwgMTE5OTgyLCAxMTk5OTIsIDExOTk5OCwgMTIwMDA5LCAxMjAwMTgsIDEyMDAyOCwgCisgICAgMTIwMDM2LCAxMjAwNDksIDEyMDA1NiwgMTIwMDYyLCAxMjAwNzAsIDEyMDA3NywgMTIwMDg3LCAxMjAwOTEsIDEyMDA5NSwgCisgICAgMTIwMDk5LCAxMjAxMDMsIDEyMDEwNywgMTIwMTExLCAxMjAxMTUsIDEyMDEyNCwgMTIwMTI4LCAxMjAxMzUsIDEyMDEzOSwgCisgICAgMTIwMTQzLCAxMjAxNDcsIDEyMDE1MSwgMTIwMTU1LCAxMjAxNTksIDEyMDE2MywgMTIwMTY3LCAxMjAxNzEsIDEyMDE3NSwgCisgICAgMTIwMTc5LCAxMjAxODMsIDEyMDE4NywgMTIwMTkxLCAxMjAxOTUsIDEyMDE5OSwgMTIwMjAzLCAxMjAyMDcsIDEyMDIxMSwgCisgICAgMTIwMjE4LCAxMjAyMjUsIDEyMDIzNSwgMTIwMjQ4LCAxMjAyNTgsIDEyMDI2MiwgMTIwMjY2LCAxMjAyNzAsIDEyMDI3NCwgCisgICAgMTIwMjc4LCAxMjAyODIsIDEyMDI4NiwgMTIwMjkwLCAxMjAyOTQsIDEyMDI5OCwgMTIwMzAyLCAxMjAzMDksIDEyMDMxNiwgCisgICAgMTIwMzI3LCAxMjAzMzQsIDEyMDM0MCwgMTIwMzQ3LCAxMjAzNTQsIDEyMDM2MSwgMTIwMzY4LCAxMjAzNzUsIDEyMDM3OSwgCisgICAgMTIwMzgzLCAxMjAzOTAsIDEyMDM5NywgMTIwNDA0LCAxMjA0MTMsIDEyMDQyMCwgMTIwNDMzLCAxMjA0NDMsIDEyMDQ1MCwgCisgICAgMTIwNDU3LCAxMjA0NjEsIDEyMDQ2NSwgMTIwNDc0LCAxMjA0ODEsIDEyMDQ4OCwgMTIwNDk1LCAxMjA1MDgsIDEyMDUxNSwgCisgICAgMTIwNTIyLCAxMjA1MzIsIDEyMDU0MiwgMTIwNTUxLCAxMjA1NTgsIDEyMDU2NSwgMTIwNTcyLCAxMjA1NzksIDEyMDU4NiwgCisgICAgMTIwNTkzLCAxMjA2MDMsIDEyMDYwOSwgMTIwNjE3LCAxMjA2MjQsIDEyMDYzMiwgMTIwNjM5LCAxMjA2NTAsIDEyMDY1NywgCisgICAgMTIwNjYzLCAxMjA2NzAsIDEyMDY3NywgMTIwNjg0LCAxMjA2OTEsIDEyMDcwMSwgMTIwNzExLCAxMjA3MTgsIDEyMDcyNSwgCisgICAgMTIwNzM0LCAxMjA3NDIsIDEyMDc0OCwgMTIwNzU1LCAxMjA3NjIsIDEyMDc2OSwgMTIwNzc2LCAxMjA3ODAsIDEyMDc5MCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTEwMCwxMjYgKzIwMjU1LDEyNiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODMwMCwgMTE4MzA0LCAxMTgzMDgsIDExODMxMiwgCi0gICAgMTE4MzE2LCAxMTgzMjAsIDExODMyNCwgMTE4MzI4LCAxMTgzMzIsIDExODMzNiwgMTE4MzQwLCAxMTgzNDQsIDExODM0OCwgCi0gICAgMTE4MzUyLCAxMTgzNTYsIDExODM2MCwgMTE4MzY0LCAxMTgzNjgsIDExODM3MiwgMTE4Mzc2LCAxMTgzODAsIDExODM4NCwgCi0gICAgMTE4Mzg4LCAxMTgzOTIsIDExODM5NiwgMTE4NDAwLCAxMTg0MDQsIDExODQwOCwgMTE4NDEyLCAxMTg0MTYsIDExODQyMCwgCi0gICAgMTE4NDI0LCAxMTg0MjgsIDExODQzMiwgMTE4NDM2LCAxMTg0NDAsIDExODQ0NCwgMTE4NDQ4LCAxMTg0NTIsIDExODQ1NiwgCi0gICAgMTE4NDYwLCAxMTg0NjQsIDExODQ2OCwgMTE4NDcyLCAxMTg0NzYsIDExODQ4MCwgMTE4NDg0LCAxMTg0ODgsIDExODQ5MiwgCi0gICAgMTE4NDk2LCAxMTg1MDAsIDExODUwNCwgMTE4NTA4LCAxMTg1MTIsIDExODUxNiwgMTE4NTIwLCAxMTg1MjQsIDExODUyOCwgCi0gICAgMTE4NTMyLCAxMTg1MzYsIDExODU0MCwgMTE4NTQ0LCAxMTg1NDgsIDExODU1MiwgMTE4NTU2LCAxMTg1NjAsIDExODU2NCwgCi0gICAgMTE4NTY4LCAxMTg1NzIsIDExODU3NiwgMTE4NTgwLCAxMTg1ODQsIDExODU4OCwgMTE4NTkyLCAxMTg1OTYsIDExODYwMCwgCi0gICAgMTE4NjA0LCAxMTg2MDgsIDExODYxMiwgMTE4NjE2LCAxMTg2MjAsIDExODYyNCwgMTE4NjI4LCAxMTg2MzIsIDExODYzNiwgCi0gICAgMTE4NjQwLCAxMTg2NDQsIDExODY0OCwgMTE4NjUyLCAxMTg2NTYsIDExODY2MCwgMTE4NjY0LCAxMTg2NjgsIDExODY3MiwgCi0gICAgMTE4Njc2LCAxMTg2ODAsIDExODY4NCwgMTE4Njg4LCAxMTg2OTIsIDExODY5NiwgMTE4NzAwLCAxMTg3MDQsIDExODcwOCwgCi0gICAgMTE4NzEyLCAxMTg3MTYsIDExODcyMCwgMTE4NzI0LCAxMTg3MjgsIDExODczMiwgMTE4NzM2LCAxMTg3NDAsIDExODc0NCwgCi0gICAgMTE4NzQ4LCAxMTg3NTIsIDExODc1NiwgMTE4NzYwLCAxMTg3NjQsIDExODc2OCwgMTE4NzcyLCAxMTg3NzYsIDExODc4MCwgCi0gICAgMTE4Nzg0LCAxMTg3ODgsIDExODc5MiwgMTE4Nzk2LCAxMTg4MDAsIDExODgwNCwgMTE4ODA4LCAxMTg4MTIsIDExODgxNiwgCi0gICAgMTE4ODIwLCAxMTg4MjQsIDExODgyOCwgMTE4ODMyLCAxMTg4MzYsIDExODg0MCwgMTE4ODQ0LCAxMTg4NDgsIDExODg1MiwgCi0gICAgMTE4ODU2LCAxMTg4NjAsIDExODg2NCwgMTE4ODY4LCAxMTg4NzIsIDExODg3NiwgMTE4ODgwLCAxMTg4ODQsIDExODg4OCwgCi0gICAgMTE4ODkyLCAxMTg4OTYsIDExODkwMCwgMTE4OTA0LCAxMTg5MDgsIDExODkxMiwgMTE4OTE2LCAxMTg5MjAsIDExODkyNCwgCi0gICAgMTE4OTI4LCAxMTg5MzIsIDExODkzNiwgMTE4OTQwLCAxMTg5NDQsIDExODk0OCwgMTE4OTUyLCAxMTg5NTYsIDExODk2MCwgCi0gICAgMTE4OTY0LCAxMTg5NjgsIDExODk3MiwgMTE4OTc2LCAxMTg5ODAsIDExODk4NCwgMTE4OTg4LCAxMTg5OTIsIDExODk5NiwgCi0gICAgMTE5MDAwLCAxMTkwMDQsIDExOTAwOCwgMTE5MDEyLCAxMTkwMTYsIDExOTAyMCwgMTE5MDI0LCAxMTkwMjgsIDExOTAzMiwgCi0gICAgMTE5MDM2LCAxMTkwNDAsIDExOTA0NCwgMTE5MDQ4LCAxMTkwNTIsIDExOTA1NiwgMTE5MDYwLCAxMTkwNjQsIDExOTA2OCwgCi0gICAgMTE5MDcyLCAxMTkwNzYsIDExOTA4MCwgMTE5MDg0LCAxMTkwODgsIDExOTA5MiwgMTE5MDk2LCAxMTkxMDAsIDExOTEwNCwgCi0gICAgMTE5MTA4LCAxMTkxMTIsIDExOTExNiwgMTE5MTIwLCAxMTkxMjQsIDExOTEyOCwgMTE5MTMyLCAxMTkxMzYsIDExOTE0MCwgCi0gICAgMTE5MTQ0LCAxMTkxNDgsIDExOTE1MiwgMTE5MTU2LCAxMTkxNjAsIDExOTE2NCwgMTE5MTY4LCAxMTkxNzIsIDExOTE3NiwgCi0gICAgMTE5MTgwLCAxMTkxODQsIDExOTE4OCwgMTE5MTkyLCAxMTkxOTYsIDExOTIwMCwgMTE5MjA0LCAxMTkyMDgsIDExOTIxMiwgCi0gICAgMTE5MjE2LCAxMTkyMjAsIDExOTIyNCwgMTE5MjI4LCAxMTkyMzIsIDExOTIzNiwgMTE5MjQwLCAxMTkyNDQsIDExOTI0OCwgCi0gICAgMTE5MjUyLCAxMTkyNTYsIDExOTI2MCwgMTE5MjY0LCAxMTkyNjgsIDExOTI3MiwgMTE5Mjc2LCAxMTkyODAsIDExOTI4NCwgCi0gICAgMTE5Mjg4LCAxMTkyOTIsIDExOTI5NiwgMTE5MzAwLCAxMTkzMDQsIDExOTMwOCwgMTE5MzEyLCAxMTkzMTYsIDExOTMyMCwgCi0gICAgMTE5MzI0LCAxMTkzMjgsIDExOTMzMiwgMTE5MzM2LCAxMTkzNDAsIDExOTM0NCwgMTE5MzQ4LCAxMTkzNTIsIDExOTM1NiwgCi0gICAgMTE5MzYwLCAxMTkzNjQsIDExOTM2OCwgMTE5MzcyLCAxMTkzNzYsIDExOTM4MCwgMTE5Mzg0LCAxMTkzODgsIDExOTM5MiwgCi0gICAgMTE5Mzk2LCAxMTk0MDAsIDExOTQwNCwgMTE5NDA4LCAxMTk0MTIsIDExOTQxNiwgMTE5NDIwLCAxMTk0MjQsIDExOTQyOCwgCi0gICAgMTE5NDMyLCAxMTk0MzYsIDExOTQ0MCwgMTE5NDQ0LCAxMTk0NDgsIDExOTQ1MiwgMTE5NDU2LCAxMTk0NjAsIDExOTQ2NCwgCi0gICAgMTE5NDY4LCAxMTk0NzIsIDExOTQ3NiwgMTE5NDgwLCAxMTk0ODQsIDExOTQ4OCwgMTE5NDkyLCAxMTk0OTYsIDExOTUwMCwgCi0gICAgMTE5NTA0LCAxMTk1MDgsIDExOTUxMiwgMTE5NTE2LCAxMTk1MjAsIDExOTUyNCwgMTE5NTI4LCAxMTk1MzIsIDExOTUzNiwgCi0gICAgMTE5NTQwLCAxMTk1NDQsIDExOTU0OCwgMTE5NTUyLCAxMTk1NTYsIDExOTU2MCwgMTE5NTY0LCAxMTk1NjgsIDExOTU3MiwgCi0gICAgMTE5NTc2LCAxMTk1ODAsIDExOTU4NCwgMTE5NTg4LCAxMTk1OTIsIDExOTU5NiwgMTE5NjAwLCAxMTk2MDQsIDExOTYwOCwgCi0gICAgMTE5NjEyLCAxMTk2MTYsIDExOTYyMCwgMTE5NjI0LCAxMTk2MjgsIDExOTYzMiwgMTE5NjM2LCAxMTk2NDAsIDExOTY0NCwgCi0gICAgMTE5NjQ4LCAxMTk2NTIsIDExOTY1NiwgMTE5NjYwLCAxMTk2NjQsIDExOTY2OCwgMTE5NjcyLCAxMTk2NzYsIDExOTY4MCwgCi0gICAgMTE5Njg0LCAxMTk2ODgsIDExOTY5MiwgMTE5Njk2LCAxMTk3MDAsIDExOTcwNCwgMTE5NzA4LCAxMTk3MTIsIDExOTcxNiwgCi0gICAgMTE5NzIwLCAxMTk3MjQsIDExOTcyOCwgMTE5NzMyLCAxMTk3MzYsIDExOTc0MCwgMTE5NzQ0LCAxMTk3NDgsIDExOTc1MiwgCi0gICAgMTE5NzU2LCAxMTk3NjAsIDExOTc2NCwgMTE5NzY4LCAxMTk3NzIsIDExOTc3NiwgMTE5NzgwLCAxMTk3ODQsIDExOTc4OCwgCi0gICAgMTE5NzkyLCAxMTk3OTYsIDExOTgwMCwgMTE5ODA0LCAxMTk4MDgsIDExOTgxMiwgMTE5ODE2LCAxMTk4MjAsIDExOTgyNCwgCi0gICAgMTE5ODI4LCAxMTk4MzIsIDExOTgzNiwgMTE5ODQwLCAxMTk4NDQsIDExOTg0OCwgMTE5ODUyLCAxMTk4NTYsIDExOTg2MCwgCi0gICAgMTE5ODY0LCAxMTk4NjgsIDExOTg3MiwgMTE5ODc2LCAxMTk4ODAsIDExOTg4NCwgMTE5ODg4LCAxMTk4OTIsIDExOTg5NiwgCi0gICAgMTE5OTAwLCAxMTk5MDQsIDExOTkwOCwgMTE5OTEyLCAxMTk5MTYsIDExOTkyMCwgMTE5OTI0LCAxMTk5MjgsIDExOTkzMiwgCi0gICAgMTE5OTM2LCAxMTk5NDAsIDExOTk0NCwgMTE5OTQ4LCAxMTk5NTIsIDExOTk1NiwgMTE5OTYwLCAxMTk5NjQsIDExOTk2OCwgCi0gICAgMTE5OTcyLCAxMTk5NzYsIDExOTk4MCwgMTE5OTg0LCAxMTk5ODgsIDExOTk5MiwgMTE5OTk2LCAxMjAwMDAsIDEyMDAwNCwgCi0gICAgMTIwMDA4LCAxMjAwMTIsIDEyMDAxNiwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMyLCAxMjAwMzYsIDEyMDA0MCwgCi0gICAgMTIwMDQ0LCAxMjAwNDgsIDEyMDA1MiwgMTIwMDU2LCAxMjAwNjAsIDEyMDA2NCwgMTIwMDY4LCAxMjAwNzIsIDEyMDA3NiwgCi0gICAgMTIwMDgwLCAxMjAwODQsIDEyMDA4OCwgMTIwMDkyLCAxMjAwOTYsIDEyMDEwMCwgMTIwMTA0LCAxMjAxMDgsIDEyMDExMiwgCi0gICAgMTIwMTE2LCAxMjAxMjAsIDEyMDEyNCwgMTIwMTI4LCAxMjAxMzIsIDEyMDEzNiwgMTIwMTQwLCAxMjAxNDQsIDEyMDE0OCwgCi0gICAgMTIwMTUyLCAxMjAxNTYsIDEyMDE2MCwgMTIwMTY0LCAxMjAxNjgsIDEyMDE3MiwgMTIwMTc2LCAxMjAxODAsIDEyMDE4NCwgCi0gICAgMTIwMTg4LCAxMjAxOTIsIDEyMDE5NiwgMTIwMjAwLCAxMjAyMDQsIDEyMDIwOCwgMTIwMjEyLCAxMjAyMTYsIDEyMDIyMCwgCi0gICAgMTIwMjI0LCAxMjAyMjgsIDEyMDIzMiwgMTIwMjM2LCAxMjAyNDAsIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDEyMDI1NiwgCi0gICAgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgCi0gICAgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjQsIDEyMDMyOCwgCi0gICAgMTIwMzMyLCAxMjAzMzYsIDEyMDM0MCwgMTIwMzQ0LCAxMjAzNDgsIDEyMDM1MiwgMTIwMzU2LCAxMjAzNjAsIDEyMDM2NCwgCi0gICAgMTIwMzY4LCAxMjAzNzIsIDEyMDM3NiwgMTIwMzgwLCAxMjAzODQsIDEyMDM4OCwgMTIwMzkyLCAxMjAzOTYsIDEyMDQwMCwgCi0gICAgMTIwNDA0LCAxMjA0MDgsIDEyMDQxMiwgMTIwNDE2LCAxMjA0MjAsIDEyMDQyNCwgMTIwNDI4LCAxMjA0MzIsIDEyMDQzNiwgCi0gICAgMTIwNDQwLCAxMjA0NDQsIDEyMDQ0OCwgMTIwNDUyLCAxMjA0NTYsIDEyMDQ2MCwgMTIwNDY0LCAxMjA0NjgsIDEyMDQ3MiwgCi0gICAgMTIwNDc2LCAxMjA0ODAsIDEyMDQ4NCwgMTIwNDg4LCAxMjA0OTIsIDEyMDQ5NiwgMTIwNTAwLCAxMjA1MDQsIDEyMDUwOCwgCi0gICAgMTIwNTEyLCAxMjA1MTYsIDEyMDUyMCwgMTIwNTI0LCAxMjA1MjgsIDEyMDUzMiwgMTIwNTM2LCAxMjA1NDAsIDEyMDU0NCwgCi0gICAgMTIwNTQ4LCAxMjA1NTIsIDEyMDU1NiwgMTIwNTYwLCAxMjA1NjQsIDEyMDU2OCwgMTIwNTcyLCAxMjA1NzYsIDEyMDU4MCwgCi0gICAgMTIwNTg0LCAxMjA1ODgsIDEyMDU5MiwgMTIwNTk2LCAxMjA2MDAsIDEyMDYwNCwgMTIwNjA4LCAxMjA2MTIsIDEyMDYxNiwgCi0gICAgMTIwNjIwLCAxMjA2MjQsIDEyMDYyOCwgMTIwNjMyLCAxMjA2MzYsIDEyMDY0MCwgMTIwNjQ0LCAxMjA2NDgsIDEyMDY1MiwgCi0gICAgMTIwNjU2LCAxMjA2NjAsIDEyMDY2NCwgMTIwNjY4LCAxMjA2NzIsIDEyMDY3NiwgMTIwNjgwLCAxMjA2ODQsIDEyMDY4OCwgCi0gICAgMTIwNjkyLCAxMjA2OTYsIDEyMDcwMCwgMTIwNzA0LCAxMjA3MDgsIDEyMDcxMiwgMTIwNzE2LCAxMjA3MjAsIDEyMDcyNCwgCi0gICAgMTIwNzI4LCAxMjA3MzIsIDEyMDczNiwgMTIwNzQwLCAxMjA3NDQsIDEyMDc0OCwgMTIwNzUyLCAxMjA3NTYsIDEyMDc2MCwgCi0gICAgMTIwNzY0LCAxMjA3NjgsIDEyMDc3MiwgMTIwNzc2LCAxMjA3ODAsIDEyMDc4NCwgMTIwNzg4LCAxMjA3OTIsIDEyMDc5NiwgCi0gICAgMTIwODAwLCAxMjA4MDQsIDEyMDgwOCwgMTIwODEyLCAxMjA4MTYsIDEyMDgyMCwgMTIwODI0LCAxMjA4MjgsIDEyMDgzMiwgCi0gICAgMTIwODM2LCAxMjA4NDAsIDEyMDg0NCwgMTIwODQ4LCAxMjA4NTIsIDEyMDg1NiwgMTIwODYwLCAxMjA4NjQsIDEyMDg2OCwgCi0gICAgMTIwODcyLCAxMjA4NzYsIDEyMDg4MCwgMTIwODg0LCAxMjA4ODgsIDEyMDg5MiwgMTIwODk2LCAxMjA5MDAsIDEyMDkwNCwgCi0gICAgMTIwOTA4LCAxMjA5MTIsIDEyMDkxNiwgMTIwOTIwLCAxMjA5MjQsIDEyMDkyOCwgMTIwOTMyLCAxMjA5MzYsIDEyMDk0MCwgCi0gICAgMTIwOTQ0LCAxMjA5NDgsIDEyMDk1MiwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgMTIwOTY4LCAxMjA5NzIsIDEyMDk3NiwgCi0gICAgMTIwOTgwLCAxMjA5ODQsIDEyMDk4OCwgMTIwOTkyLCAxMjA5OTYsIDEyMTAwMCwgMTIxMDA0LCAxMjEwMDgsIDEyMTAxMiwgCi0gICAgMTIxMDE2LCAxMjEwMjAsIDEyMTAyNCwgMTIxMDI4LCAxMjEwMzIsIDEyMTAzNiwgMTIxMDQwLCAxMjEwNDQsIDEyMTA0OCwgCi0gICAgMTIxMDUyLCAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MiwgMTIxMDc2LCAxMjEwODAsIDEyMTA4NCwgCi0gICAgMTIxMDg4LCAxMjEwOTIsIDEyMTA5NiwgMTIxMTAwLCAxMjExMDQsIDEyMTEwOCwgMTIxMTEyLCAxMjExMTYsIDEyMTEyMCwgCi0gICAgMTIxMTI0LCAxMjExMjgsIDEyMTEzMiwgMTIxMTM2LCAxMjExNDAsIDEyMTE0NCwgMTIxMTQ4LCAxMjExNTIsIDEyMTE1NiwgCi0gICAgMTIxMTYwLCAxMjExNjQsIDEyMTE2OCwgMTIxMTcyLCAxMjExNzYsIDEyMTE4MCwgMTIxMTg0LCAxMjExODgsIDEyMTE5MiwgCi0gICAgMTIxMTk2LCAxMjEyMDAsIDEyMTIwNCwgMTIxMjA4LCAxMjEyMTIsIDEyMTIxNiwgMTIxMjIwLCAxMjEyMjQsIDEyMTIyOCwgCi0gICAgMTIxMjMyLCAxMjEyMzYsIDEyMTI0MCwgMTIxMjQ0LCAxMjEyNDgsIDEyMTI1MiwgMTIxMjU2LCAxMjEyNjAsIDEyMTI2NCwgCi0gICAgMTIxMjY4LCAxMjEyNzIsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI4OCwgMTIxMjkyLCAxMjEyOTYsIDEyMTMwMCwgCi0gICAgMTIxMzA0LCAxMjEzMDgsIDEyMTMxMiwgMTIxMzE2LCAxMjEzMjAsIDEyMTMyNCwgMTIxMzI4LCAxMjEzMzIsIDEyMTMzNiwgCi0gICAgMTIxMzQwLCAxMjEzNDQsIDEyMTM0OCwgMTIxMzUyLCAxMjEzNTYsIDEyMTM2MCwgMTIxMzY0LCAxMjEzNjgsIDEyMTM3MiwgCi0gICAgMTIxMzc2LCAxMjEzODAsIDEyMTM4NCwgMTIxMzg4LCAxMjEzOTIsIDEyMTM5NiwgMTIxNDAwLCAxMjE0MDQsIDEyMTQwOCwgCi0gICAgMTIxNDEyLCAxMjE0MTYsIDEyMTQyMCwgMTIxNDI0LCAxMjE0MjgsIDEyMTQzMiwgMTIxNDM2LCAxMjE0NDAsIDEyMTQ0NCwgCi0gICAgMTIxNDQ4LCAxMjE0NTIsIDEyMTQ1NiwgMTIxNDYwLCAxMjE0NjQsIDEyMTQ2OCwgMTIxNDcyLCAxMjE0NzYsIDEyMTQ4MCwgCi0gICAgMTIxNDg0LCAxMjE0ODgsIDEyMTQ5MiwgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTA4LCAxMjE1MTIsIDEyMTUxNiwgCi0gICAgMTIxNTIwLCAxMjE1MjQsIDEyMTUyOCwgMTIxNTMyLCAxMjE1MzYsIDEyMTU0MCwgMTIxNTQ0LCAxMjE1NDgsIDEyMTU1MiwgCi0gICAgMTIxNTU2LCAxMjE1NjAsIDEyMTU2NCwgMTIxNTY4LCAxMjE1NzIsIDEyMTU3NiwgMTIxNTgwLCAxMjE1ODQsIDEyMTU4OCwgCi0gICAgMTIxNTkyLCAxMjE1OTYsIDEyMTYwMCwgMTIxNjA0LCAxMjE2MDgsIDEyMTYxMiwgMTIxNjE2LCAxMjE2MjAsIDEyMTYyNCwgCi0gICAgMTIxNjI4LCAxMjE2MzIsIDEyMTYzNiwgMTIxNjQwLCAxMjE2NDQsIDEyMTY0OCwgMTIxNjUyLCAxMjE2NTYsIDEyMTY2MCwgCi0gICAgMTIxNjY0LCAxMjE2NjgsIDEyMTY3MiwgMTIxNjc2LCAxMjE2ODAsIDEyMTY4NCwgMTIxNjg4LCAxMjE2OTIsIDEyMTY5NiwgCi0gICAgMTIxNzAwLCAxMjE3MDQsIDEyMTcwOCwgMTIxNzEyLCAxMjE3MTYsIDEyMTcyMCwgMTIxNzI0LCAxMjE3MjgsIDEyMTczMiwgCi0gICAgMTIxNzM2LCAxMjE3NDAsIDEyMTc0NCwgMTIxNzQ4LCAxMjE3NTIsIDEyMTc1NiwgMTIxNzYwLCAxMjE3NjQsIDEyMTc2OCwgCi0gICAgMTIxNzcyLCAxMjE3NzYsIDEyMTc4MCwgMTIxNzg0LCAxMjE3ODgsIDEyMTc5MiwgMTIxNzk2LCAxMjE4MDAsIDEyMTgwNCwgCi0gICAgMTIxODA4LCAxMjE4MTIsIDEyMTgxNiwgMTIxODIwLCAxMjE4MjQsIDEyMTgyOCwgMTIxODMyLCAxMjE4MzYsIDEyMTg0MCwgCi0gICAgMTIxODQ0LCAxMjE4NDgsIDEyMTg1MiwgMTIxODU2LCAxMjE4NjAsIDEyMTg2NCwgMTIxODY4LCAxMjE4NzIsIDEyMTg3NiwgCi0gICAgMTIxODgwLCAxMjE4ODQsIDEyMTg4OCwgMTIxODkyLCAxMjE4OTYsIDEyMTkwMCwgMTIxOTA0LCAxMjE5MDgsIDEyMTkxMiwgCi0gICAgMTIxOTE2LCAxMjE5MjAsIDEyMTkyNCwgMTIxOTI4LCAxMjE5MzIsIDEyMTkzNiwgMTIxOTQwLCAxMjE5NDQsIDEyMTk0OCwgCi0gICAgMTIxOTUyLCAxMjE5NTYsIDEyMTk2MCwgMTIxOTY0LCAxMjE5NjgsIDEyMTk3MiwgMTIxOTc2LCAxMjE5ODAsIDEyMTk4NCwgCi0gICAgMTIxOTg4LCAxMjE5OTIsIDEyMTk5NiwgMTIyMDAwLCAxMjIwMDQsIDEyMjAwOCwgMTIyMDEyLCAxMjIwMTYsIDEyMjAyMCwgCi0gICAgMTIyMDI0LCAxMjIwMjgsIDEyMjAzMiwgMTIyMDM2LCAxMjIwNDAsIDEyMjA0NCwgMTIyMDQ4LCAxMjIwNTIsIDEyMjA1NiwgCi0gICAgMTIyMDYwLCAxMjIwNjQsIDEyMjA2OCwgMTIyMDcyLCAxMjIwNzYsIDEyMjA4MCwgMTIyMDg0LCAxMjIwODgsIDEyMjA5MiwgCi0gICAgMTIyMDk2LCAxMjIxMDAsIDEyMjEwNCwgMTIyMTA4LCAxMjIxMTIsIDEyMjExNiwgMTIyMTIwLCAxMjIxMjQsIDEyMjEyOCwgCi0gICAgMTIyMTMyLCAxMjIxMzYsIDEyMjE0MCwgMTIyMTQ0LCAxMjIxNDgsIDEyMjE1MiwgMTIyMTU2LCAxMjIxNjAsIDEyMjE2NCwgCi0gICAgMTIyMTY4LCAxMjIxNzIsIDEyMjE3NiwgMTIyMTgwLCAxMjIxODQsIDEyMjE4OCwgMTIyMTkyLCAxMjIxOTYsIDEyMjIwMCwgCi0gICAgMTIyMjA0LCAxMjIyMDgsIDEyMjIxMiwgMTIyMjE2LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNiwgCi0gICAgMTIyMjQwLCAxMjIyNDQsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY0LCAxMjIyNjgsIDEyMjI3MiwgCi0gICAgMTIyMjc2LCAxMjIyODAsIDEyMjI4NCwgMTIyMjg4LCAxMjIyOTIsIDEyMjI5NiwgMTIyMzAwLCAxMjIzMDQsIDEyMjMwOCwgCi0gICAgMTIyMzEyLCAxMjIzMTYsIDEyMjMyMCwgMTIyMzI0LCAxMjIzMjgsIDEyMjMzMiwgMTIyMzM2LCAxMjIzNDAsIDEyMjM0NCwgCi0gICAgMTIyMzQ4LCAxMjIzNTIsIDEyMjM1NiwgMTIyMzYwLCAxMjIzNjQsIDEyMjM2OCwgMTIyMzcyLCAxMjIzNzYsIDEyMjM4MCwgCi0gICAgMTIyMzg0LCAxMjIzODgsIDEyMjM5MiwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwNCwgMTIyNDA4LCAxMjI0MTIsIDEyMjQxNiwgCi0gICAgMTIyNDIwLCAxMjI0MjQsIDEyMjQyOCwgMTIyNDMyLCAxMjI0MzYsIDEyMjQ0MCwgMTIyNDQ0LCAxMjI0NDgsIDEyMjQ1MiwgCi0gICAgMTIyNDU2LCAxMjI0NjAsIDEyMjQ2NCwgMTIyNDY4LCAxMjI0NzIsIDEyMjQ3NiwgMTIyNDgwLCAxMjI0ODQsIDEyMjQ4OCwgCi0gICAgMTIyNDkyLCAxMjI0OTYsIDEyMjUwMCwgMTIyNTA0LCAxMjI1MDgsIDEyMjUxMiwgMTIyNTE2LCAxMjI1MjAsIDEyMjUyNCwgCi0gICAgMTIyNTI4LCAxMjI1MzIsIDEyMjUzNiwgMTIyNTQwLCAxMjI1NDQsIDEyMjU0OCwgMTIyNTUyLCAxMjI1NTYsIDEyMjU2MCwgCi0gICAgMTIyNTY0LCAxMjI1NjgsIDEyMjU3MiwgMTIyNTc2LCAxMjI1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDgwMCwgCisgICAgMTIwODA0LCAxMjA4MDgsIDEyMDgxMiwgMTIwODE2LCAxMjA4MjAsIDEyMDgyNCwgMTIwODI4LCAxMjA4MzIsIDEyMDgzNiwgCisgICAgMTIwODQwLCAxMjA4NDQsIDEyMDg0OCwgMTIwODUyLCAxMjA4NTYsIDEyMDg2MCwgMTIwODY0LCAxMjA4NjgsIDEyMDg3MiwgCisgICAgMTIwODc2LCAxMjA4ODAsIDEyMDg4NCwgMTIwODg4LCAxMjA4OTIsIDEyMDg5NiwgMTIwOTAwLCAxMjA5MDQsIDEyMDkwOCwgCisgICAgMTIwOTEyLCAxMjA5MTYsIDEyMDkyMCwgMTIwOTI0LCAxMjA5MjgsIDEyMDkzMiwgMTIwOTM2LCAxMjA5NDAsIDEyMDk0NCwgCisgICAgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NiwgMTIwOTYwLCAxMjA5NjQsIDEyMDk2OCwgMTIwOTcyLCAxMjA5NzYsIDEyMDk4MCwgCisgICAgMTIwOTg0LCAxMjA5ODgsIDEyMDk5MiwgMTIwOTk2LCAxMjEwMDAsIDEyMTAwNCwgMTIxMDA4LCAxMjEwMTIsIDEyMTAxNiwgCisgICAgMTIxMDIwLCAxMjEwMjQsIDEyMTAyOCwgMTIxMDMyLCAxMjEwMzYsIDEyMTA0MCwgMTIxMDQ0LCAxMjEwNDgsIDEyMTA1MiwgCisgICAgMTIxMDU2LCAxMjEwNjAsIDEyMTA2NCwgMTIxMDY4LCAxMjEwNzIsIDEyMTA3NiwgMTIxMDgwLCAxMjEwODQsIDEyMTA4OCwgCisgICAgMTIxMDkyLCAxMjEwOTYsIDEyMTEwMCwgMTIxMTA0LCAxMjExMDgsIDEyMTExMiwgMTIxMTE2LCAxMjExMjAsIDEyMTEyNCwgCisgICAgMTIxMTI4LCAxMjExMzIsIDEyMTEzNiwgMTIxMTQwLCAxMjExNDQsIDEyMTE0OCwgMTIxMTUyLCAxMjExNTYsIDEyMTE2MCwgCisgICAgMTIxMTY0LCAxMjExNjgsIDEyMTE3MiwgMTIxMTc2LCAxMjExODAsIDEyMTE4NCwgMTIxMTg4LCAxMjExOTIsIDEyMTE5NiwgCisgICAgMTIxMjAwLCAxMjEyMDQsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTYsIDEyMTIyMCwgMTIxMjI0LCAxMjEyMjgsIDEyMTIzMiwgCisgICAgMTIxMjM2LCAxMjEyNDAsIDEyMTI0NCwgMTIxMjQ4LCAxMjEyNTIsIDEyMTI1NiwgMTIxMjYwLCAxMjEyNjQsIDEyMTI2OCwgCisgICAgMTIxMjcyLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyODgsIDEyMTI5MiwgMTIxMjk2LCAxMjEzMDAsIDEyMTMwNCwgCisgICAgMTIxMzA4LCAxMjEzMTIsIDEyMTMxNiwgMTIxMzIwLCAxMjEzMjQsIDEyMTMyOCwgMTIxMzMyLCAxMjEzMzYsIDEyMTM0MCwgCisgICAgMTIxMzQ0LCAxMjEzNDgsIDEyMTM1MiwgMTIxMzU2LCAxMjEzNjAsIDEyMTM2NCwgMTIxMzY4LCAxMjEzNzIsIDEyMTM3NiwgCisgICAgMTIxMzgwLCAxMjEzODQsIDEyMTM4OCwgMTIxMzkyLCAxMjEzOTYsIDEyMTQwMCwgMTIxNDA0LCAxMjE0MDgsIDEyMTQxMiwgCisgICAgMTIxNDE2LCAxMjE0MjAsIDEyMTQyNCwgMTIxNDI4LCAxMjE0MzIsIDEyMTQzNiwgMTIxNDQwLCAxMjE0NDQsIDEyMTQ0OCwgCisgICAgMTIxNDUyLCAxMjE0NTYsIDEyMTQ2MCwgMTIxNDY0LCAxMjE0NjgsIDEyMTQ3MiwgMTIxNDc2LCAxMjE0ODAsIDEyMTQ4NCwgCisgICAgMTIxNDg4LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIDEyMTUyMCwgCisgICAgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIDEyMTU1NiwgCisgICAgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIDEyMTU5MiwgCisgICAgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIDEyMTYyOCwgCisgICAgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIDEyMTY2NCwgCisgICAgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIDEyMTcwMCwgCisgICAgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgMTIxNzE2LCAxMjE3MjAsIDEyMTcyNCwgMTIxNzI4LCAxMjE3MzIsIDEyMTczNiwgCisgICAgMTIxNzQwLCAxMjE3NDQsIDEyMTc0OCwgMTIxNzUyLCAxMjE3NTYsIDEyMTc2MCwgMTIxNzY0LCAxMjE3NjgsIDEyMTc3MiwgCisgICAgMTIxNzc2LCAxMjE3ODAsIDEyMTc4NCwgMTIxNzg4LCAxMjE3OTIsIDEyMTc5NiwgMTIxODAwLCAxMjE4MDQsIDEyMTgwOCwgCisgICAgMTIxODEyLCAxMjE4MTYsIDEyMTgyMCwgMTIxODI0LCAxMjE4MjgsIDEyMTgzMiwgMTIxODM2LCAxMjE4NDAsIDEyMTg0NCwgCisgICAgMTIxODQ4LCAxMjE4NTIsIDEyMTg1NiwgMTIxODYwLCAxMjE4NjQsIDEyMTg2OCwgMTIxODcyLCAxMjE4NzYsIDEyMTg4MCwgCisgICAgMTIxODg0LCAxMjE4ODgsIDEyMTg5MiwgMTIxODk2LCAxMjE5MDAsIDEyMTkwNCwgMTIxOTA4LCAxMjE5MTIsIDEyMTkxNiwgCisgICAgMTIxOTIwLCAxMjE5MjQsIDEyMTkyOCwgMTIxOTMyLCAxMjE5MzYsIDEyMTk0MCwgMTIxOTQ0LCAxMjE5NDgsIDEyMTk1MiwgCisgICAgMTIxOTU2LCAxMjE5NjAsIDEyMTk2NCwgMTIxOTY4LCAxMjE5NzIsIDEyMTk3NiwgMTIxOTgwLCAxMjE5ODQsIDEyMTk4OCwgCisgICAgMTIxOTkyLCAxMjE5OTYsIDEyMjAwMCwgMTIyMDA0LCAxMjIwMDgsIDEyMjAxMiwgMTIyMDE2LCAxMjIwMjAsIDEyMjAyNCwgCisgICAgMTIyMDI4LCAxMjIwMzIsIDEyMjAzNiwgMTIyMDQwLCAxMjIwNDQsIDEyMjA0OCwgMTIyMDUyLCAxMjIwNTYsIDEyMjA2MCwgCisgICAgMTIyMDY0LCAxMjIwNjgsIDEyMjA3MiwgMTIyMDc2LCAxMjIwODAsIDEyMjA4NCwgMTIyMDg4LCAxMjIwOTIsIDEyMjA5NiwgCisgICAgMTIyMTAwLCAxMjIxMDQsIDEyMjEwOCwgMTIyMTEyLCAxMjIxMTYsIDEyMjEyMCwgMTIyMTI0LCAxMjIxMjgsIDEyMjEzMiwgCisgICAgMTIyMTM2LCAxMjIxNDAsIDEyMjE0NCwgMTIyMTQ4LCAxMjIxNTIsIDEyMjE1NiwgMTIyMTYwLCAxMjIxNjQsIDEyMjE2OCwgCisgICAgMTIyMTcyLCAxMjIxNzYsIDEyMjE4MCwgMTIyMTg0LCAxMjIxODgsIDEyMjE5MiwgMTIyMTk2LCAxMjIyMDAsIDEyMjIwNCwgCisgICAgMTIyMjA4LCAxMjIyMTIsIDEyMjIxNiwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzYsIDEyMjI0MCwgCisgICAgMTIyMjQ0LCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NCwgMTIyMjY4LCAxMjIyNzIsIDEyMjI3NiwgCisgICAgMTIyMjgwLCAxMjIyODQsIDEyMjI4OCwgMTIyMjkyLCAxMjIyOTYsIDEyMjMwMCwgMTIyMzA0LCAxMjIzMDgsIDEyMjMxMiwgCisgICAgMTIyMzE2LCAxMjIzMjAsIDEyMjMyNCwgMTIyMzI4LCAxMjIzMzIsIDEyMjMzNiwgMTIyMzQwLCAxMjIzNDQsIDEyMjM0OCwgCisgICAgMTIyMzUyLCAxMjIzNTYsIDEyMjM2MCwgMTIyMzY0LCAxMjIzNjgsIDEyMjM3MiwgMTIyMzc2LCAxMjIzODAsIDEyMjM4NCwgCisgICAgMTIyMzg4LCAxMjIzOTIsIDEyMjM5NiwgMTIyNDAwLCAxMjI0MDQsIDEyMjQwOCwgMTIyNDEyLCAxMjI0MTYsIDEyMjQyMCwgCisgICAgMTIyNDI0LCAxMjI0MjgsIDEyMjQzMiwgMTIyNDM2LCAxMjI0NDAsIDEyMjQ0NCwgMTIyNDQ4LCAxMjI0NTIsIDEyMjQ1NiwgCisgICAgMTIyNDYwLCAxMjI0NjQsIDEyMjQ2OCwgMTIyNDcyLCAxMjI0NzYsIDEyMjQ4MCwgMTIyNDg0LCAxMjI0ODgsIDEyMjQ5MiwgCisgICAgMTIyNDk2LCAxMjI1MDAsIDEyMjUwNCwgMTIyNTA4LCAxMjI1MTIsIDEyMjUxNiwgMTIyNTIwLCAxMjI1MjQsIDEyMjUyOCwgCisgICAgMTIyNTMyLCAxMjI1MzYsIDEyMjU0MCwgMTIyNTQ0LCAxMjI1NDgsIDEyMjU1MiwgMTIyNTU2LCAxMjI1NjAsIDEyMjU2NCwgCisgICAgMTIyNTY4LCAxMjI1NzIsIDEyMjU3NiwgMTIyNTgwLCAxMjI1ODQsIDEyMjU4OCwgMTIyNTkyLCAxMjI1OTYsIDEyMjYwMCwgCisgICAgMTIyNjA0LCAxMjI2MDgsIDEyMjYxMiwgMTIyNjE2LCAxMjI2MjAsIDEyMjYyNCwgMTIyNjI4LCAxMjI2MzIsIDEyMjYzNiwgCisgICAgMTIyNjQwLCAxMjI2NDQsIDEyMjY0OCwgMTIyNjUyLCAxMjI2NTYsIDEyMjY2MCwgMTIyNjY0LCAxMjI2NjgsIDEyMjY3MiwgCisgICAgMTIyNjc2LCAxMjI2ODAsIDEyMjY4NCwgMTIyNjg4LCAxMjI2OTIsIDEyMjY5NiwgMTIyNzAwLCAxMjI3MDQsIDEyMjcwOCwgCisgICAgMTIyNzEyLCAxMjI3MTYsIDEyMjcyMCwgMTIyNzI0LCAxMjI3MjgsIDEyMjczMiwgMTIyNzM2LCAxMjI3NDAsIDEyMjc0NCwgCisgICAgMTIyNzQ4LCAxMjI3NTIsIDEyMjc1NiwgMTIyNzYwLCAxMjI3NjQsIDEyMjc2OCwgMTIyNzcyLCAxMjI3NzYsIDEyMjc4MCwgCisgICAgMTIyNzg0LCAxMjI3ODgsIDEyMjc5MiwgMTIyNzk2LCAxMjI4MDAsIDEyMjgwNCwgMTIyODA4LCAxMjI4MTIsIDEyMjgxNiwgCisgICAgMTIyODIwLCAxMjI4MjQsIDEyMjgyOCwgMTIyODMyLCAxMjI4MzYsIDEyMjg0MCwgMTIyODQ0LCAxMjI4NDgsIDEyMjg1MiwgCisgICAgMTIyODU2LCAxMjI4NjAsIDEyMjg2NCwgMTIyODY4LCAxMjI4NzIsIDEyMjg3NiwgMTIyODgwLCAxMjI4ODQsIDEyMjg4OCwgCisgICAgMTIyODkyLCAxMjI4OTYsIDEyMjkwMCwgMTIyOTA0LCAxMjI5MDgsIDEyMjkxMiwgMTIyOTE2LCAxMjI5MjAsIDEyMjkyNCwgCisgICAgMTIyOTI4LCAxMjI5MzIsIDEyMjkzNiwgMTIyOTQwLCAxMjI5NDQsIDEyMjk0OCwgMTIyOTUyLCAxMjI5NTYsIDEyMjk2MCwgCisgICAgMTIyOTY0LCAxMjI5NjgsIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODAsIDEyMjk4NCwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgCisgICAgMTIzMDAwLCAxMjMwMDQsIDEyMzAwOCwgMTIzMDEyLCAxMjMwMTYsIDEyMzAyMCwgMTIzMDI0LCAxMjMwMjgsIDEyMzAzMiwgCisgICAgMTIzMDM2LCAxMjMwNDAsIDEyMzA0NCwgMTIzMDQ4LCAxMjMwNTIsIDEyMzA1NiwgMTIzMDYwLCAxMjMwNjQsIDEyMzA2OCwgCisgICAgMTIzMDcyLCAxMjMwNzYsIDEyMzA4MCwgMTIzMDg0LCAxMjMwODgsIDEyMzA5MiwgMTIzMDk2LCAxMjMxMDAsIDEyMzEwNCwgCisgICAgMTIzMTA4LCAxMjMxMTIsIDEyMzExNiwgMTIzMTIwLCAxMjMxMjQsIDEyMzEyOCwgMTIzMTMyLCAxMjMxMzYsIDEyMzE0MCwgCisgICAgMTIzMTQ0LCAxMjMxNDgsIDEyMzE1MiwgMTIzMTU2LCAxMjMxNjAsIDEyMzE2NCwgMTIzMTY4LCAxMjMxNzIsIDEyMzE3NiwgCisgICAgMTIzMTgwLCAxMjMxODQsIDEyMzE4OCwgMTIzMTkyLCAxMjMxOTYsIDEyMzIwMCwgMTIzMjA0LCAxMjMyMDgsIDEyMzIxMiwgCisgICAgMTIzMjE2LCAxMjMyMjAsIDEyMzIyNCwgMTIzMjI4LCAxMjMyMzIsIDEyMzIzNiwgMTIzMjQwLCAxMjMyNDQsIDEyMzI0OCwgCisgICAgMTIzMjUyLCAxMjMyNTYsIDEyMzI2MCwgMTIzMjY0LCAxMjMyNjgsIDEyMzI3MiwgMTIzMjc2LCAxMjMyODAsIDEyMzI4NCwgCisgICAgMTIzMjg4LCAxMjMyOTIsIDEyMzI5NiwgMTIzMzAwLCAxMjMzMDQsIDEyMzMwOCwgMTIzMzEyLCAxMjMzMTYsIDEyMzMyMCwgCisgICAgMTIzMzI0LCAxMjMzMjgsIDEyMzMzMiwgMTIzMzM2LCAxMjMzNDAsIDEyMzM0NCwgMTIzMzQ4LCAxMjMzNTIsIDEyMzM1NiwgCisgICAgMTIzMzYwLCAxMjMzNjQsIDEyMzM2OCwgMTIzMzcyLCAxMjMzNzYsIDEyMzM4MCwgMTIzMzg0LCAxMjMzODgsIDEyMzM5MiwgCisgICAgMTIzMzk2LCAxMjM0MDAsIDEyMzQwNCwgMTIzNDA4LCAxMjM0MTIsIDEyMzQxNiwgMTIzNDIwLCAxMjM0MjQsIDEyMzQyOCwgCisgICAgMTIzNDMyLCAxMjM0MzYsIDEyMzQ0MCwgMTIzNDQ0LCAxMjM0NDgsIDEyMzQ1MiwgMTIzNDU2LCAxMjM0NjAsIDEyMzQ2NCwgCisgICAgMTIzNDY4LCAxMjM0NzIsIDEyMzQ3NiwgMTIzNDgwLCAxMjM0ODQsIDEyMzQ4OCwgMTIzNDkyLCAxMjM0OTYsIDEyMzUwMCwgCisgICAgMTIzNTA0LCAxMjM1MDgsIDEyMzUxMiwgMTIzNTE2LCAxMjM1MjAsIDEyMzUyNCwgMTIzNTI4LCAxMjM1MzIsIDEyMzUzNiwgCisgICAgMTIzNTQwLCAxMjM1NDQsIDEyMzU0OCwgMTIzNTUyLCAxMjM1NTYsIDEyMzU2MCwgMTIzNTY0LCAxMjM1NjgsIDEyMzU3MiwgCisgICAgMTIzNTc2LCAxMjM1ODAsIDEyMzU4NCwgMTIzNTg4LCAxMjM1OTIsIDEyMzU5NiwgMTIzNjAwLCAxMjM2MDQsIDEyMzYwOCwgCisgICAgMTIzNjEyLCAxMjM2MTYsIDEyMzYyMCwgMTIzNjI0LCAxMjM2MjgsIDEyMzYzMiwgMTIzNjM2LCAxMjM2NDAsIDEyMzY0NCwgCisgICAgMTIzNjQ4LCAxMjM2NTIsIDEyMzY1NiwgMTIzNjYwLCAxMjM2NjQsIDEyMzY2OCwgMTIzNjcyLCAxMjM2NzYsIDEyMzY4MCwgCisgICAgMTIzNjg0LCAxMjM2ODgsIDEyMzY5MiwgMTIzNjk2LCAxMjM3MDAsIDEyMzcwNCwgMTIzNzA4LCAxMjM3MTIsIDEyMzcxNiwgCisgICAgMTIzNzIwLCAxMjM3MjQsIDEyMzcyOCwgMTIzNzMyLCAxMjM3MzYsIDEyMzc0MCwgMTIzNzQ0LCAxMjM3NDgsIDEyMzc1MiwgCisgICAgMTIzNzU2LCAxMjM3NjAsIDEyMzc2NCwgMTIzNzY4LCAxMjM3NzIsIDEyMzc3NiwgMTIzNzgwLCAxMjM3ODQsIDEyMzc4OCwgCisgICAgMTIzNzkyLCAxMjM3OTYsIDEyMzgwMCwgMTIzODA0LCAxMjM4MDgsIDEyMzgxMiwgMTIzODE2LCAxMjM4MjAsIDEyMzgyNCwgCisgICAgMTIzODI4LCAxMjM4MzIsIDEyMzgzNiwgMTIzODQwLCAxMjM4NDQsIDEyMzg0OCwgMTIzODUyLCAxMjM4NTYsIDEyMzg2MCwgCisgICAgMTIzODY0LCAxMjM4NjgsIDEyMzg3MiwgMTIzODc2LCAxMjM4ODAsIDEyMzg4NCwgMTIzODg4LCAxMjM4OTIsIDEyMzg5NiwgCisgICAgMTIzOTAwLCAxMjM5MDQsIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTYsIDEyMzkyMCwgMTIzOTI0LCAxMjM5MjgsIDEyMzkzMiwgCisgICAgMTIzOTM2LCAxMjM5NDAsIDEyMzk0NCwgMTIzOTQ4LCAxMjM5NTIsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIDEyMzk2OCwgCisgICAgMTIzOTcyLCAxMjM5NzYsIDEyMzk4MCwgMTIzOTg0LCAxMjM5ODgsIDEyMzk5MiwgMTIzOTk2LCAxMjQwMDAsIDEyNDAwNCwgCisgICAgMTI0MDA4LCAxMjQwMTIsIDEyNDAxNiwgMTI0MDIwLCAxMjQwMjQsIDEyNDAyOCwgMTI0MDMyLCAxMjQwMzYsIDEyNDA0MCwgCisgICAgMTI0MDQ0LCAxMjQwNDgsIDEyNDA1MiwgMTI0MDU2LCAxMjQwNjAsIDEyNDA2NCwgMTI0MDY4LCAxMjQwNzIsIDEyNDA3NiwgCisgICAgMTI0MDgwLCAxMjQwODQsIDEyNDA4OCwgMTI0MDkyLCAxMjQwOTYsIDEyNDEwMCwgMTI0MTA0LCAxMjQxMDgsIDEyNDExMiwgCisgICAgMTI0MTE2LCAxMjQxMjAsIDEyNDEyNCwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNiwgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgCisgICAgMTI0MTUyLCAxMjQxNTYsIDEyNDE2MCwgMTI0MTY0LCAxMjQxNjgsIDEyNDE3MiwgMTI0MTc2LCAxMjQxODAsIDEyNDE4NCwgCisgICAgMTI0MTg4LCAxMjQxOTIsIDEyNDE5NiwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwOCwgMTI0MjEyLCAxMjQyMTYsIDEyNDIyMCwgCisgICAgMTI0MjI0LCAxMjQyMjgsIDEyNDIzMiwgMTI0MjM2LCAxMjQyNDAsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgCisgICAgMTI0MjYwLCAxMjQyNjQsIDEyNDI2OCwgMTI0MjcyLCAxMjQyNzYsIDEyNDI4MCwgMTI0Mjg0LCAxMjQyODgsIDEyNDI5MiwgCisgICAgMTI0Mjk2LCAxMjQzMDAsIDEyNDMwNCwgMTI0MzA4LCAxMjQzMTIsIDEyNDMxNiwgMTI0MzIwLCAxMjQzMjQsIDEyNDMyOCwgCisgICAgMTI0MzMyLCAxMjQzMzYsIDEyNDM0MCwgMTI0MzQ0LCAxMjQzNDgsIDEyNDM1MiwgMTI0MzU2LCAxMjQzNjAsIDEyNDM2NCwgCisgICAgMTI0MzY4LCAxMjQzNzIsIDEyNDM3NiwgMTI0MzgwLCAxMjQzODQsIDEyNDM4OCwgMTI0MzkyLCAxMjQzOTYsIDEyNDQwMCwgCisgICAgMTI0NDA0LCAxMjQ0MDgsIDEyNDQxMiwgMTI0NDE2LCAxMjQ0MjAsIDEyNDQyNCwgMTI0NDI4LCAxMjQ0MzIsIDEyNDQzNiwgCisgICAgMTI0NDQwLCAxMjQ0NDQsIDEyNDQ0OCwgMTI0NDUyLCAxMjQ0NTYsIDEyNDQ2MCwgMTI0NDY0LCAxMjQ0NjgsIDEyNDQ3MiwgCisgICAgMTI0NDc2LCAxMjQ0ODAsIDEyNDQ4NCwgMTI0NDg4LCAxMjQ0OTIsIDEyNDQ5NiwgMTI0NTAwLCAxMjQ1MDQsIDEyNDUwOCwgCisgICAgMTI0NTEyLCAxMjQ1MTYsIDEyNDUyMCwgMTI0NTI0LCAxMjQ1MjgsIDEyNDUzMiwgMTI0NTM2LCAxMjQ1NDAsIDEyNDU0NCwgCisgICAgMTI0NTQ4LCAxMjQ1NTIsIDEyNDU1NiwgMTI0NTYwLCAxMjQ1NjQsIDEyNDU2OCwgMTI0NTcyLCAxMjQ1NzYsIDEyNDU4MCwgCisgICAgMTI0NTg0LCAxMjQ1ODgsIDEyNDU5MiwgMTI0NTk2LCAxMjQ2MDAsIDEyNDYwNCwgMTI0NjA4LCAxMjQ2MTIsIDEyNDYxNiwgCisgICAgMTI0NjIwLCAxMjQ2MjQsIDEyNDYyOCwgMTI0NjMyLCAxMjQ2MzYsIDEyNDY0MCwgMTI0NjQ0LCAxMjQ2NDgsIDEyNDY1MiwgCisgICAgMTI0NjU2LCAxMjQ2NjAsIDEyNDY2NCwgMTI0NjY4LCAxMjQ2NzIsIDEyNDY3NiwgMTI0NjgwLCAxMjQ2ODQsIDEyNDY4OCwgCisgICAgMTI0NjkyLCAxMjQ2OTYsIDEyNDcwMCwgMTI0NzA0LCAxMjQ3MDgsIDEyNDcxMiwgMTI0NzE2LCAxMjQ3MjAsIDEyNDcyNCwgCisgICAgMTI0NzI4LCAxMjQ3MzIsIDEyNDczNiwgMTI0NzQwLCAxMjQ3NDQsIDEyNDc0OCwgMTI0NzUyLCAxMjQ3NTYsIDEyNDc2MCwgCisgICAgMTI0NzY0LCAxMjQ3NjgsIDEyNDc3MiwgMTI0Nzc2LCAxMjQ3ODAsIDEyNDc4NCwgMTI0Nzg4LCAxMjQ3OTIsIDEyNDc5NiwgCisgICAgMTI0ODAwLCAxMjQ4MDQsIDEyNDgwOCwgMTI0ODEyLCAxMjQ4MTYsIDEyNDgyMCwgMTI0ODI0LCAxMjQ4MjgsIDEyNDgzMiwgCisgICAgMTI0ODM2LCAxMjQ4NDAsIDEyNDg0NCwgMTI0ODQ4LCAxMjQ4NTIsIDEyNDg1NiwgMTI0ODYwLCAxMjQ4NjQsIDEyNDg2OCwgCisgICAgMTI0ODcyLCAxMjQ4NzYsIDEyNDg4MCwgMTI0ODg0LCAxMjQ4ODgsIDEyNDg5MiwgMTI0ODk2LCAxMjQ5MDAsIDEyNDkwNCwgCisgICAgMTI0OTA4LCAxMjQ5MTIsIDEyNDkxNiwgMTI0OTIwLCAxMjQ5MjQsIDEyNDkyOCwgMTI0OTMyLCAxMjQ5MzYsIDEyNDk0MCwgCisgICAgMTI0OTQ0LCAxMjQ5NDgsIDEyNDk1MiwgMTI0OTU2LCAxMjQ5NjAsIDEyNDk2NCwgMTI0OTY4LCAxMjQ5NzIsIDEyNDk3NiwgCisgICAgMTI0OTgwLCAxMjQ5ODQsIDEyNDk4OCwgMTI0OTkyLCAxMjQ5OTYsIDEyNTAwMCwgMTI1MDA0LCAxMjUwMDgsIDEyNTAxMiwgCisgICAgMTI1MDE2LCAxMjUwMjAsIDEyNTAyNCwgMTI1MDI4LCAxMjUwMzIsIDEyNTAzNiwgMTI1MDQwLCAxMjUwNDQsIDEyNTA0OCwgCisgICAgMTI1MDUyLCAxMjUwNTYsIDEyNTA2MCwgMTI1MDY0LCAxMjUwNjgsIDEyNTA3MiwgMTI1MDc2LCAxMjUwODAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTkyMjgsNzEgKzIwMzgzLDcyIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNTg0LCAxMjI1ODgsIDEyMjU5MiwgMTIyNTk2LCAxMjI2MDAsIDEyMjYwNCwgMTIyNjA4LCAKLSAgICAxMjI2MTIsIDEyMjYxNiwgMTIyNjIwLCAxMjI2MjQsIDEyMjYyOCwgMTIyNjMyLCAxMjI2MzYsIDEyMjY0MCwgMTIyNjQ0LCAKLSAgICAxMjI2NDgsIDEyMjY1MiwgMTIyNjU2LCAxMjI2NjAsIDEyMjY2NCwgMTIyNjY4LCAxMjI2NzIsIDEyMjY3NiwgMTIyNjgwLCAKLSAgICAxMjI2ODQsIDEyMjY4OCwgMTIyNjkyLCAxMjI2OTYsIDEyMjcwMCwgMTIyNzA0LCAxMjI3MDgsIDEyMjcxMiwgMTIyNzE2LCAKLSAgICAxMjI3MjAsIDEyMjcyNCwgMTIyNzI4LCAxMjI3MzIsIDEyMjczNiwgMTIyNzQwLCAxMjI3NDQsIDEyMjc0OCwgMTIyNzUyLCAKLSAgICAxMjI3NTYsIDEyMjc2MCwgMTIyNzY0LCAxMjI3NjgsIDEyMjc3MiwgMTIyNzc2LCAxMjI3ODAsIDEyMjc4NCwgMTIyNzg4LCAKLSAgICAxMjI3OTIsIDEyMjc5NiwgMTIyODAwLCAxMjI4MDQsIDEyMjgwOCwgMTIyODEyLCAxMjI4MTYsIDEyMjgyMCwgMTIyODI0LCAKLSAgICAxMjI4MjgsIDEyMjgzMiwgMTIyODM2LCAxMjI4NDAsIDEyMjg0NCwgMTIyODQ4LCAxMjI4NTIsIDEyMjg1NiwgMTIyODYwLCAKLSAgICAxMjI4NjQsIDEyMjg2OCwgMTIyODcyLCAxMjI4NzYsIDEyMjg4MCwgMTIyODg0LCAxMjI4ODgsIDEyMjg5MiwgMTIyODk2LCAKLSAgICAxMjI5MDAsIDEyMjkwNCwgMTIyOTA4LCAxMjI5MTIsIDEyMjkxNiwgMTIyOTIwLCAxMjI5MjQsIDEyMjkyOCwgMTIyOTMyLCAKLSAgICAxMjI5MzYsIDEyMjk0MCwgMTIyOTQ0LCAxMjI5NDgsIDEyMjk1MiwgMTIyOTU2LCAxMjI5NjAsIDEyMjk2NCwgMTIyOTY4LCAKLSAgICAxMjI5NzIsIDEyMjk3NiwgMTIyOTgwLCAxMjI5ODQsIDEyMjk4OCwgMTIyOTkyLCAxMjI5OTYsIDEyMzAwMCwgMTIzMDA0LCAKLSAgICAxMjMwMDgsIDEyMzAxMiwgMTIzMDE2LCAxMjMwMjAsIDEyMzAyNCwgMTIzMDI4LCAxMjMwMzIsIDEyMzAzNiwgMTIzMDQwLCAKLSAgICAxMjMwNDQsIDEyMzA0OCwgMTIzMDUyLCAxMjMwNTYsIDEyMzA2MCwgMTIzMDY0LCAxMjMwNjgsIDEyMzA3MiwgMTIzMDc2LCAKLSAgICAxMjMwODAsIDEyMzA4NCwgMTIzMDg4LCAxMjMwOTIsIDEyMzA5NiwgMTIzMTAwLCAxMjMxMDQsIDEyMzEwOCwgMTIzMTEyLCAKLSAgICAxMjMxMTYsIDEyMzEyMCwgMTIzMTI0LCAxMjMxMjgsIDEyMzEzMiwgMTIzMTM2LCAxMjMxNDAsIDEyMzE0NCwgMTIzMTQ4LCAKLSAgICAxMjMxNTIsIDEyMzE1NiwgMTIzMTYwLCAxMjMxNjQsIDEyMzE2OCwgMTIzMTcyLCAxMjMxNzYsIDEyMzE4MCwgMTIzMTg0LCAKLSAgICAxMjMxODgsIDEyMzE5MiwgMTIzMTk2LCAxMjMyMDAsIDEyMzIwNCwgMTIzMjA4LCAxMjMyMTIsIDEyMzIxNiwgMTIzMjIwLCAKLSAgICAxMjMyMjQsIDEyMzIyOCwgMTIzMjMyLCAxMjMyMzYsIDEyMzI0MCwgMTIzMjQ0LCAxMjMyNDgsIDEyMzI1MiwgMTIzMjU2LCAKLSAgICAxMjMyNjAsIDEyMzI2NCwgMTIzMjY4LCAxMjMyNzIsIDEyMzI3NiwgMTIzMjgwLCAxMjMyODQsIDEyMzI4OCwgMTIzMjkyLCAKLSAgICAxMjMyOTYsIDEyMzMwMCwgMTIzMzA0LCAxMjMzMDgsIDEyMzMxMiwgMTIzMzE2LCAxMjMzMjAsIDEyMzMyNCwgMTIzMzI4LCAKLSAgICAxMjMzMzIsIDEyMzMzNiwgMTIzMzQwLCAxMjMzNDQsIDEyMzM0OCwgMTIzMzUyLCAxMjMzNTYsIDEyMzM2MCwgMTIzMzY0LCAKLSAgICAxMjMzNjgsIDEyMzM3MiwgMTIzMzc2LCAxMjMzODAsIDEyMzM4NCwgMTIzMzg4LCAxMjMzOTIsIDEyMzM5NiwgMTIzNDAwLCAKLSAgICAxMjM0MDQsIDEyMzQwOCwgMTIzNDEyLCAxMjM0MTYsIDEyMzQyMCwgMTIzNDI0LCAxMjM0MjgsIDEyMzQzMiwgMTIzNDM2LCAKLSAgICAxMjM0NDAsIDEyMzQ0NCwgMTIzNDQ4LCAxMjM0NTIsIDEyMzQ1NiwgMTIzNDYwLCAxMjM0NjQsIDEyMzQ2OCwgMTIzNDcyLCAKLSAgICAxMjM0NzYsIDEyMzQ4MCwgMTIzNDg0LCAxMjM0ODgsIDEyMzQ5MiwgMTIzNDk2LCAxMjM1MDAsIDEyMzUwNCwgMTIzNTA4LCAKLSAgICAxMjM1MTIsIDEyMzUxNiwgMTIzNTIwLCAxMjM1MjQsIDEyMzUyOCwgMTIzNTMyLCAxMjM1MzYsIDEyMzU0MCwgMTIzNTQ0LCAKLSAgICAxMjM1NDgsIDEyMzU1MiwgMTIzNTU2LCAxMjM1NjAsIDEyMzU2NCwgMTIzNTY4LCAxMjM1NzIsIDEyMzU3NiwgMTIzNTgwLCAKLSAgICAxMjM1ODQsIDEyMzU4OCwgMTIzNTkyLCAxMjM1OTYsIDEyMzYwMCwgMTIzNjA0LCAxMjM2MDgsIDEyMzYxMiwgMTIzNjE2LCAKLSAgICAxMjM2MjAsIDEyMzYyNCwgMTIzNjI4LCAxMjM2MzIsIDEyMzYzNiwgMTIzNjQwLCAxMjM2NDQsIDEyMzY0OCwgMTIzNjUyLCAKLSAgICAxMjM2NTYsIDEyMzY2MCwgMTIzNjY0LCAxMjM2NjgsIDEyMzY3MiwgMTIzNjc2LCAxMjM2ODAsIDEyMzY4NCwgMTIzNjg4LCAKLSAgICAxMjM2OTIsIDEyMzY5NiwgMTIzNzAwLCAxMjM3MDQsIDEyMzcwOCwgMTIzNzEyLCAxMjM3MTYsIDEyMzcyMCwgMTIzNzI0LCAKLSAgICAxMjM3MjgsIDEyMzczMiwgMTIzNzM2LCAxMjM3NDAsIDEyMzc0NCwgMTIzNzQ4LCAxMjM3NTIsIDEyMzc1NiwgMTIzNzYwLCAKLSAgICAxMjM3NjQsIDEyMzc2OCwgMTIzNzcyLCAxMjM3NzYsIDEyMzc4MCwgMTIzNzg0LCAxMjM3ODgsIDEyMzc5MiwgMTIzNzk2LCAKLSAgICAxMjM4MDAsIDEyMzgwNCwgMTIzODA4LCAxMjM4MTIsIDEyMzgxNiwgMTIzODIwLCAxMjM4MjQsIDEyMzgyOCwgMTIzODMyLCAKLSAgICAxMjM4MzYsIDEyMzg0MCwgMTIzODQ0LCAxMjM4NDgsIDEyMzg1MiwgMTIzODU2LCAxMjM4NjAsIDEyMzg2NCwgMTIzODY4LCAKLSAgICAxMjM4NzIsIDEyMzg3NiwgMTIzODgwLCAxMjM4ODQsIDEyMzg4OCwgMTIzODkyLCAxMjM4OTYsIDEyMzkwMCwgMTIzOTA0LCAKLSAgICAxMjM5MDgsIDEyMzkxMiwgMTIzOTE2LCAxMjM5MjAsIDEyMzkyNCwgMTIzOTI4LCAxMjM5MzIsIDEyMzkzNiwgMTIzOTQwLCAKLSAgICAxMjM5NDQsIDEyMzk0OCwgMTIzOTUyLCAxMjM5NTYsIDEyMzk2MCwgMTIzOTY0LCAxMjM5NjgsIDEyMzk3MiwgMTIzOTc2LCAKLSAgICAxMjM5ODAsIDEyMzk4NCwgMTIzOTg4LCAxMjM5OTIsIDEyMzk5NiwgMTI0MDAwLCAxMjQwMDQsIDEyNDAwOCwgMTI0MDEyLCAKLSAgICAxMjQwMTYsIDEyNDAyMCwgMTI0MDI0LCAxMjQwMjgsIDEyNDAzMiwgMTI0MDM2LCAxMjQwNDAsIDEyNDA0NCwgMTI0MDQ4LCAKLSAgICAxMjQwNTIsIDEyNDA1NiwgMTI0MDYwLCAxMjQwNjQsIDEyNDA2OCwgMTI0MDcyLCAxMjQwNzYsIDEyNDA4MCwgMTI0MDg0LCAKLSAgICAxMjQwODgsIDEyNDA5MiwgMTI0MDk2LCAxMjQxMDAsIDEyNDEwNCwgMTI0MTA4LCAxMjQxMTIsIDEyNDExNiwgMTI0MTIwLCAKLSAgICAxMjQxMjQsIDEyNDEyOCwgMTI0MTMyLCAxMjQxMzYsIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIDEyNDE1MiwgMTI0MTU2LCAKLSAgICAxMjQxNjAsIDEyNDE2NCwgMTI0MTY4LCAxMjQxNzIsIDEyNDE3NiwgMTI0MTgwLCAxMjQxODQsIDEyNDE4OCwgMTI0MTkyLCAKLSAgICAxMjQxOTYsIDEyNDIwMCwgMTI0MjA0LCAxMjQyMDgsIDEyNDIxMiwgMTI0MjE2LCAxMjQyMjAsIDEyNDIyNCwgMTI0MjI4LCAKLSAgICAxMjQyMzIsIDEyNDIzNiwgMTI0MjQwLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIDEyNDI2MCwgMTI0MjY0LCAKLSAgICAxMjQyNjgsIDEyNDI3MiwgMTI0Mjc2LCAxMjQyODAsIDEyNDI4NCwgMTI0Mjg4LCAxMjQyOTIsIDEyNDI5NiwgMTI0MzAwLCAKLSAgICAxMjQzMDQsIDEyNDMwOCwgMTI0MzEyLCAxMjQzMTYsIDEyNDMyNiwgMTI0MzMwLCAxMjQzMzQsIDEyNDMzOCwgMTI0MzQyLCAKLSAgICAxMjQzNDYsIDEyNDM1MCwgMTI0MzU0LCAxMjQzNTgsIDEyNDM2MiwgMTI0MzY2LCAxMjQzNzAsIDEyNDM3NSwgMTI0Mzc5LCAKLSAgICAxMjQzODMsIDEyNDM4NywgMTI0MzkxLCAxMjQzOTUsIDEyNDM5OSwgMTI0NDAzLCAxMjQ0MDcsIDEyNDQxMSwgMTI0NDE1LCAKLSAgICAxMjQ0MTksIDEyNDQyMywgMTI0NDI3LCAxMjQ0MzEsIDEyNDQzNSwgMTI0NDM5LCAxMjQ0NDgsIDEyNDQ1NywgMTI0NDYxLCAKLSAgICAxMjQ0NjUsIDEyNDQ2OSwgMTI0NDczLCAxMjQ0NzcsIDEyNDQ4MSwgMTI0NDg1LCAxMjQ0ODksIDEyNDQ5MywgMTI0NDk3LCAKLSAgICAxMjQ1MDEsIDEyNDUwNSwgMTI0NTA5LCAxMjQ1MTMsIDEyNDUxNywgMTI0NTIxLCAxMjQ1MjUsIDEyNDUyOSwgMTI0NTMzLCAKLSAgICAxMjQ1MzcsIDEyNDU0MSwgMTI0NTQ1LCAxMjQ1NDksIDEyNDU1MywgMTI0NTU3LCAxMjQ1NjEsIDEyNDU2NSwgMTI0NTY5LCAKLSAgICAxMjQ1NzMsIDEyNDU3NywgMTI0NTgxLCAxMjQ1ODUsIDEyNDU4OSwgMTI0NTkzLCAxMjQ1OTcsIDEyNDYwMSwgMTI0NjA1LCAKLSAgICAxMjQ2MDksIDEyNDYxMywgMTI0NjE3LCAxMjQ2MjEsIDEyNDYyNSwgMTI0NjI5LCAxMjQ2MzMsIDEyNDYzNywgMTI0NjQxLCAKLSAgICAxMjQ2NDUsIDEyNDY0OSwgMTI0NjUzLCAxMjQ2NTcsIDEyNDY2MSwgMTI0NjY1LCAxMjQ2NjksIDEyNDY3MywgMTI0Njc3LCAKLSAgICAxMjQ2ODEsIDEyNDY4NSwgMTI0Njg5LCAxMjQ2OTMsIDEyNDY5NywgMTI0NzAxLCAxMjQ3MDUsIDEyNDcwOSwgMTI0NzEzLCAKLSAgICAxMjQ3MTcsIDEyNDcyMSwgMTI0NzI1LCAxMjQ3MjksIDEyNDczMywgMTI0NzM3LCAxMjQ3NDEsIDEyNDc0NSwgMTI0NzQ5LCAKLSAgICAxMjQ3NTMsIDEyNDc1NywgMTI0NzYxLCAxMjQ3NjUsIDEyNDc2OSwgMTI0NzczLCAxMjQ3NzcsIDEyNDc4MSwgMTI0Nzg1LCAKLSAgICAxMjQ3ODksIDEyNDc5MywgMTI0Nzk3LCAxMjQ4MDEsIDEyNDgwNSwgMTI0ODA5LCAxMjQ4MTMsIDEyNDgxNywgMTI0ODIxLCAKLSAgICAxMjQ4MjUsIDEyNDgyOSwgMTI0ODMzLCAxMjQ4MzcsIDEyNDg0MSwgMTI0ODQ1LCAxMjQ4NDksIDEyNDg1MywgMTI0ODU3LCAKLSAgICAxMjQ4NjEsIDEyNDg2NSwgMTI0ODY5LCAxMjQ4NzMsIDEyNDg3NywgMTI0ODgxLCAxMjQ4ODUsIDEyNDg4OSwgMTI0ODkzLCAKLSAgICAxMjQ4OTcsIDEyNDkwMSwgMTI0OTA1LCAxMjQ5MDksIDEyNDkxMywgMTI0OTE3LCAxMjQ5MjEsIDEyNDkyNSwgMTI0OTI5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjUwODQsIDEyNTA4OCwgMTI1MDkyLCAxMjUwOTYsIAorICAgIDEyNTEwMCwgMTI1MTA0LCAxMjUxMDgsIDEyNTExMiwgMTI1MTE2LCAxMjUxMjAsIDEyNTEyNCwgMTI1MTI4LCAxMjUxMzIsIAorICAgIDEyNTEzNiwgMTI1MTQwLCAxMjUxNDQsIDEyNTE0OCwgMTI1MTUyLCAxMjUxNTYsIDEyNTE2MCwgMTI1MTY0LCAxMjUxNjgsIAorICAgIDEyNTE3MiwgMTI1MTc2LCAxMjUxODAsIDEyNTE4NCwgMTI1MTg4LCAxMjUxOTIsIDEyNTE5NiwgMTI1MjAwLCAxMjUyMDQsIAorICAgIDEyNTIwOCwgMTI1MjEyLCAxMjUyMTYsIDEyNTIyMCwgMTI1MjI0LCAxMjUyMjgsIDEyNTIzMiwgMTI1MjM2LCAxMjUyNDAsIAorICAgIDEyNTI0NCwgMTI1MjQ4LCAxMjUyNTIsIDEyNTI1NiwgMTI1MjYwLCAxMjUyNjQsIDEyNTI2OCwgMTI1MjcyLCAxMjUyNzYsIAorICAgIDEyNTI4MCwgMTI1Mjg0LCAxMjUyODgsIDEyNTI5MiwgMTI1Mjk2LCAxMjUzMDAsIDEyNTMwNCwgMTI1MzA4LCAxMjUzMTIsIAorICAgIDEyNTMxNiwgMTI1MzIwLCAxMjUzMjQsIDEyNTMyOCwgMTI1MzMyLCAxMjUzMzYsIDEyNTM0MCwgMTI1MzQ0LCAxMjUzNDgsIAorICAgIDEyNTM1MiwgMTI1MzU2LCAxMjUzNjAsIDEyNTM2NCwgMTI1MzY4LCAxMjUzNzIsIDEyNTM3NiwgMTI1MzgwLCAxMjUzODQsIAorICAgIDEyNTM4OCwgMTI1MzkyLCAxMjUzOTYsIDEyNTQwMCwgMTI1NDA0LCAxMjU0MDgsIDEyNTQxMiwgMTI1NDE2LCAxMjU0MjAsIAorICAgIDEyNTQyNCwgMTI1NDI4LCAxMjU0MzIsIDEyNTQzNiwgMTI1NDQwLCAxMjU0NDQsIDEyNTQ0OCwgMTI1NDUyLCAxMjU0NTYsIAorICAgIDEyNTQ2MCwgMTI1NDY0LCAxMjU0NjgsIDEyNTQ3MiwgMTI1NDc2LCAxMjU0ODAsIDEyNTQ4NCwgMTI1NDg4LCAxMjU0OTIsIAorICAgIDEyNTQ5NiwgMTI1NTAwLCAxMjU1MDQsIDEyNTUwOCwgMTI1NTEyLCAxMjU1MTYsIDEyNTUyMCwgMTI1NTI0LCAxMjU1MjgsIAorICAgIDEyNTUzMiwgMTI1NTM2LCAxMjU1NDAsIDEyNTU0NCwgMTI1NTQ4LCAxMjU1NTIsIDEyNTU1NiwgMTI1NTYwLCAxMjU1NjQsIAorICAgIDEyNTU2OCwgMTI1NTcyLCAxMjU1NzYsIDEyNTU4MCwgMTI1NTg0LCAxMjU1ODgsIDEyNTU5MiwgMTI1NTk2LCAxMjU2MDAsIAorICAgIDEyNTYwNCwgMTI1NjA4LCAxMjU2MTIsIDEyNTYxNiwgMTI1NjIwLCAxMjU2MjQsIDEyNTYyOCwgMTI1NjMyLCAxMjU2MzYsIAorICAgIDEyNTY0MCwgMTI1NjQ0LCAxMjU2NDgsIDEyNTY1MiwgMTI1NjU2LCAxMjU2NjAsIDEyNTY2NCwgMTI1NjY4LCAxMjU2NzIsIAorICAgIDEyNTY3NiwgMTI1NjgwLCAxMjU2ODQsIDEyNTY4OCwgMTI1NjkyLCAxMjU2OTYsIDEyNTcwMCwgMTI1NzA0LCAxMjU3MDgsIAorICAgIDEyNTcxMiwgMTI1NzE2LCAxMjU3MjAsIDEyNTcyNCwgMTI1NzI4LCAxMjU3MzIsIDEyNTczNiwgMTI1NzQwLCAxMjU3NDQsIAorICAgIDEyNTc0OCwgMTI1NzUyLCAxMjU3NTYsIDEyNTc2MCwgMTI1NzY0LCAxMjU3NjgsIDEyNTc3MiwgMTI1Nzc2LCAxMjU3ODAsIAorICAgIDEyNTc4NCwgMTI1Nzg4LCAxMjU3OTIsIDEyNTc5NiwgMTI1ODAwLCAxMjU4MDQsIDEyNTgwOCwgMTI1ODEyLCAxMjU4MTYsIAorICAgIDEyNTgyMCwgMTI1ODI0LCAxMjU4MjgsIDEyNTgzMiwgMTI1ODM2LCAxMjU4NDAsIDEyNTg0NCwgMTI1ODQ4LCAxMjU4NTIsIAorICAgIDEyNTg1NiwgMTI1ODYwLCAxMjU4NjQsIDEyNTg2OCwgMTI1ODcyLCAxMjU4NzYsIDEyNTg4MCwgMTI1ODg0LCAxMjU4ODgsIAorICAgIDEyNTg5MiwgMTI1ODk2LCAxMjU5MDAsIDEyNTkwNCwgMTI1OTA4LCAxMjU5MTIsIDEyNTkxNiwgMTI1OTIwLCAxMjU5MjQsIAorICAgIDEyNTkyOCwgMTI1OTMyLCAxMjU5MzYsIDEyNTk0MCwgMTI1OTQ0LCAxMjU5NDgsIDEyNTk1MiwgMTI1OTU2LCAxMjU5NjAsIAorICAgIDEyNTk2NCwgMTI1OTY4LCAxMjU5NzIsIDEyNTk3NiwgMTI1OTgwLCAxMjU5ODQsIDEyNTk4OCwgMTI1OTkyLCAxMjU5OTYsIAorICAgIDEyNjAwMCwgMTI2MDA0LCAxMjYwMDgsIDEyNjAxMiwgMTI2MDE2LCAxMjYwMjAsIDEyNjAyNCwgMTI2MDI4LCAxMjYwMzIsIAorICAgIDEyNjAzNiwgMTI2MDQwLCAxMjYwNDQsIDEyNjA0OCwgMTI2MDUyLCAxMjYwNTYsIDEyNjA2MCwgMTI2MDY0LCAxMjYwNjgsIAorICAgIDEyNjA3MiwgMTI2MDc2LCAxMjYwODAsIDEyNjA4NCwgMTI2MDg4LCAxMjYwOTIsIDEyNjA5NiwgMTI2MTAwLCAxMjYxMDQsIAorICAgIDEyNjEwOCwgMTI2MTEyLCAxMjYxMTYsIDEyNjEyMCwgMTI2MTI0LCAxMjYxMjgsIDEyNjEzMiwgMTI2MTM2LCAxMjYxNDAsIAorICAgIDEyNjE0NCwgMTI2MTQ4LCAxMjYxNTIsIDEyNjE1NiwgMTI2MTYwLCAxMjYxNjQsIDEyNjE2OCwgMTI2MTcyLCAxMjYxNzYsIAorICAgIDEyNjE4MCwgMTI2MTg0LCAxMjYxODgsIDEyNjE5MiwgMTI2MTk2LCAxMjYyMDAsIDEyNjIwNCwgMTI2MjA4LCAxMjYyMTIsIAorICAgIDEyNjIxNiwgMTI2MjIwLCAxMjYyMjQsIDEyNjIyOCwgMTI2MjMyLCAxMjYyMzYsIDEyNjI0MCwgMTI2MjQ0LCAxMjYyNDgsIAorICAgIDEyNjI1MiwgMTI2MjU2LCAxMjYyNjAsIDEyNjI2NCwgMTI2MjY4LCAxMjYyNzIsIDEyNjI3NiwgMTI2MjgwLCAxMjYyODQsIAorICAgIDEyNjI4OCwgMTI2MjkyLCAxMjYyOTYsIDEyNjMwMCwgMTI2MzA0LCAxMjYzMDgsIDEyNjMxMiwgMTI2MzE2LCAxMjYzMjAsIAorICAgIDEyNjMyNCwgMTI2MzI4LCAxMjYzMzIsIDEyNjMzNiwgMTI2MzQwLCAxMjYzNDQsIDEyNjM0OCwgMTI2MzUyLCAxMjYzNTYsIAorICAgIDEyNjM2MCwgMTI2MzY0LCAxMjYzNjgsIDEyNjM3MiwgMTI2Mzc2LCAxMjYzODAsIDEyNjM4NCwgMTI2Mzg4LCAxMjYzOTIsIAorICAgIDEyNjM5NiwgMTI2NDAwLCAxMjY0MDQsIDEyNjQwOCwgMTI2NDEyLCAxMjY0MTYsIDEyNjQyMCwgMTI2NDI0LCAxMjY0MjgsIAorICAgIDEyNjQzMiwgMTI2NDM2LCAxMjY0NDAsIDEyNjQ0NCwgMTI2NDQ4LCAxMjY0NTIsIDEyNjQ1NiwgMTI2NDYwLCAxMjY0NjQsIAorICAgIDEyNjQ2OCwgMTI2NDcyLCAxMjY0NzYsIDEyNjQ4MCwgMTI2NDg0LCAxMjY0ODgsIDEyNjQ5MiwgMTI2NDk2LCAxMjY1MDAsIAorICAgIDEyNjUwNCwgMTI2NTA4LCAxMjY1MTIsIDEyNjUxNiwgMTI2NTIwLCAxMjY1MjQsIDEyNjUyOCwgMTI2NTMyLCAxMjY1MzYsIAorICAgIDEyNjU0MCwgMTI2NTQ0LCAxMjY1NDgsIDEyNjU1MiwgMTI2NTU2LCAxMjY1NjAsIDEyNjU2NCwgMTI2NTY4LCAxMjY1NzIsIAorICAgIDEyNjU3NiwgMTI2NTgwLCAxMjY1ODQsIDEyNjU4OCwgMTI2NTkyLCAxMjY1OTYsIDEyNjYwMCwgMTI2NjA0LCAxMjY2MDgsIAorICAgIDEyNjYxMiwgMTI2NjE2LCAxMjY2MjAsIDEyNjYyNCwgMTI2NjI4LCAxMjY2MzIsIDEyNjYzNiwgMTI2NjQwLCAxMjY2NDQsIAorICAgIDEyNjY0OCwgMTI2NjUyLCAxMjY2NTYsIDEyNjY2MCwgMTI2NjY0LCAxMjY2NjgsIDEyNjY3MiwgMTI2Njc2LCAxMjY2ODAsIAorICAgIDEyNjY4NCwgMTI2Njg4LCAxMjY2OTIsIDEyNjY5NiwgMTI2NzAwLCAxMjY3MDQsIDEyNjcwOCwgMTI2NzEyLCAxMjY3MTYsIAorICAgIDEyNjcyMCwgMTI2NzI0LCAxMjY3MjgsIDEyNjczMiwgMTI2NzM2LCAxMjY3NDAsIDEyNjc0NCwgMTI2NzQ4LCAxMjY3NTIsIAorICAgIDEyNjc1NiwgMTI2NzYwLCAxMjY3NjQsIDEyNjc2OCwgMTI2NzcyLCAxMjY3NzYsIDEyNjc4MCwgMTI2Nzg0LCAxMjY3ODgsIAorICAgIDEyNjc5MiwgMTI2Nzk2LCAxMjY4MDAsIDEyNjgwNCwgMTI2ODA4LCAxMjY4MTIsIDEyNjgxNiwgMTI2ODI2LCAxMjY4MzAsIAorICAgIDEyNjgzNCwgMTI2ODM4LCAxMjY4NDIsIDEyNjg0NiwgMTI2ODUwLCAxMjY4NTQsIDEyNjg1OCwgMTI2ODYyLCAxMjY4NjYsIAorICAgIDEyNjg3MCwgMTI2ODc1LCAxMjY4NzksIDEyNjg4MywgMTI2ODg3LCAxMjY4OTEsIDEyNjg5NSwgMTI2ODk5LCAxMjY5MDMsIAorICAgIDEyNjkwNywgMTI2OTExLCAxMjY5MTUsIDEyNjkxOSwgMTI2OTIzLCAxMjY5MjcsIDEyNjkzMSwgMTI2OTM1LCAxMjY5MzksIAorICAgIDEyNjk0OCwgMTI2OTU3LCAxMjY5NjEsIDEyNjk2NSwgMTI2OTY5LCAxMjY5NzMsIDEyNjk3NywgMTI2OTgxLCAxMjY5ODUsIAorICAgIDEyNjk4OSwgMTI2OTkzLCAxMjY5OTcsIDEyNzAwMSwgMTI3MDA1LCAxMjcwMDksIDEyNzAxMywgMTI3MDE3LCAxMjcwMjEsIAorICAgIDEyNzAyNSwgMTI3MDI5LCAxMjcwMzMsIDEyNzAzNywgMTI3MDQxLCAxMjcwNDUsIDEyNzA0OSwgMTI3MDUzLCAxMjcwNTcsIAorICAgIDEyNzA2MSwgMTI3MDY1LCAxMjcwNjksIDEyNzA3MywgMTI3MDc3LCAxMjcwODEsIDEyNzA4NSwgMTI3MDg5LCAxMjcwOTMsIAorICAgIDEyNzA5NywgMTI3MTAxLCAxMjcxMDUsIDEyNzEwOSwgMTI3MTEzLCAxMjcxMTcsIDEyNzEyMSwgMTI3MTI1LCAxMjcxMjksIAorICAgIDEyNzEzMywgMTI3MTM3LCAxMjcxNDEsIDEyNzE0NSwgMTI3MTQ5LCAxMjcxNTMsIDEyNzE1NywgMTI3MTYxLCAxMjcxNjUsIAorICAgIDEyNzE2OSwgMTI3MTczLCAxMjcxNzcsIDEyNzE4MSwgMTI3MTg1LCAxMjcxODksIDEyNzE5MywgMTI3MTk3LCAxMjcyMDEsIAorICAgIDEyNzIwNSwgMTI3MjA5LCAxMjcyMTMsIDEyNzIxNywgMTI3MjIxLCAxMjcyMjUsIDEyNzIyOSwgMTI3MjMzLCAxMjcyMzcsIAorICAgIDEyNzI0MSwgMTI3MjQ1LCAxMjcyNDksIDEyNzI1MywgMTI3MjU3LCAxMjcyNjEsIDEyNzI2NSwgMTI3MjY5LCAxMjcyNzMsIAorICAgIDEyNzI3NywgMTI3MjgxLCAxMjcyODUsIDEyNzI4OSwgMTI3MjkzLCAxMjcyOTcsIDEyNzMwMSwgMTI3MzA1LCAxMjczMDksIAorICAgIDEyNzMxMywgMTI3MzE3LCAxMjczMjEsIDEyNzMyNSwgMTI3MzI5LCAxMjczMzMsIDEyNzMzNywgMTI3MzQxLCAxMjczNDUsIAorICAgIDEyNzM0OSwgMTI3MzUzLCAxMjczNTcsIDEyNzM2MSwgMTI3MzY1LCAxMjczNjksIDEyNzM3MywgMTI3Mzc3LCAxMjczODEsIAorICAgIDEyNzM4NSwgMTI3Mzg5LCAxMjczOTMsIDEyNzM5NywgMTI3NDAxLCAxMjc0MDUsIDEyNzQwOSwgMTI3NDEzLCAxMjc0MTcsIAorICAgIDEyNzQyMSwgMTI3NDI1LCAxMjc0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTkzMDAsMTI0ICsyMDQ1NiwyMTAgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ5MzMsIDEyNDk0MSwgCi0gICAgMTI0OTQ5LCAxMjQ5NTksIDEyNDk2OSwgMTI0OTc3LCAxMjQ5ODMsIDEyNDk5MSwgMTI0OTk5LCAxMjUwMDksIDEyNTAyMSwgCi0gICAgMTI1MDMzLCAxMjUwMzksIDEyNTA0NywgMTI1MDUzLCAxMjUwNTksIDEyNTA2NSwgMTI1MDcxLCAxMjUwNzcsIDEyNTA4MywgCi0gICAgMTI1MDg5LCAxMjUwOTUsIDEyNTEwMSwgMTI1MTA3LCAxMjUxMTMsIDEyNTEyMSwgMTI1MTI5LCAxMjUxMzUsIDEyNTE0MSwgCi0gICAgMTI1MTQ3LCAxMjUxNTMsIDEyNTE2MSwgMTI1MTY5LCAxMjUxNzgsIDEyNTE4NCwgMTI1MTkyLCAxMjUxOTgsIDEyNTIwNCwgCi0gICAgMTI1MjEwLCAxMjUyMTYsIDEyNTIyMiwgMTI1MjMwLCAxMjUyMzgsIDEyNTI0NCwgMTI1MjUwLCAxMjUyNTYsIDEyNTI2MiwgCi0gICAgMTI1MjY4LCAxMjUyNzQsIDEyNTI4MCwgMTI1Mjg2LCAxMjUyOTIsIDEyNTI5OCwgMTI1MzA0LCAxMjUzMTAsIDEyNTMxNiwgCi0gICAgMTI1MzIyLCAxMjUzMjgsIDEyNTMzNCwgMTI1MzQwLCAxMjUzNDYsIDEyNTM1MiwgMTI1MzYwLCAxMjUzNjYsIDEyNTM3MiwgCi0gICAgMTI1MzgyLCAxMjUzOTAsIDEyNTM5NiwgMTI1NDAyLCAxMjU0MDgsIDEyNTQxNCwgMTI1NDIwLCAxMjU0MjYsIDEyNTQzMiwgCi0gICAgMTI1NDM4LCAxMjU0NDQsIDEyNTQ1MCwgMTI1NDU2LCAxMjU0NjIsIDEyNTQ2OCwgMTI1NDc0LCAxMjU0ODAsIDEyNTQ4NiwgCi0gICAgMTI1NDkyLCAxMjU0OTgsIDEyNTUwNCwgMTI1NTEwLCAxMjU1MTYsIDEyNTUyMiwgMTI1NTMwLCAxMjU1MzYsIDEyNTU0NCwgCi0gICAgMTI1NTUyLCAxMjU1NjAsIDEyNTU2NiwgMTI1NTcyLCAxMjU1NzgsIDEyNTU4NCwgMTI1NTkwLCAxMjU1OTgsIDEyNTYwOCwgCi0gICAgMTI1NjE2LCAxMjU2MjQsIDEyNTYzMCwgMTI1NjM2LCAxMjU2NDQsIDEyNTY1MiwgMTI1NjU4LCAxMjU2NjYsIDEyNTY3NCwgCi0gICAgMTI1NjgyLCAxMjU2ODgsIDEyNTY5NCwgMTI1NzAwLCAxMjU3MDYsIDEyNTcxMiwgMTI1NzE4LCAxMjU3MjYsIDEyNTczNCwgCi0gICAgMTI1NzQwLCAxMjU3NDYsIDEyNTc1MiwgMTI1NzU4LCAxMjU3NjQsIDEyNTc3MiwgMTI1Nzc4LCAxMjU3ODQsIDEyNTc5MCwgCi0gICAgMTI1Nzk2LCAxMjU4MDIsIDEyNTgwOCwgMTI1ODE2LCAxMjU4MjIsIDEyNTgyOCwgMTI1ODM0LCAxMjU4NDAsIDEyNTg0OCwgCi0gICAgMTI1ODU2LCAxMjU4NjIsIDEyNTg2OCwgMTI1ODc0LCAxMjU4NzksIDEyNTg4NSwgMTI1ODkxLCAxMjU4OTgsIDEyNTkwMywgCi0gICAgMTI1OTA4LCAxMjU5MTMsIDEyNTkxOCwgMTI1OTIzLCAxMjU5MjgsIDEyNTkzMywgMTI1OTM4LCAxMjU5NDMsIDEyNTk1MiwgCi0gICAgMTI1OTU5LCAxMjU5NjQsIDEyNTk2OSwgMTI1OTc0LCAxMjU5ODEsIDEyNTk4NiwgMTI1OTkxLCAxMjU5OTYsIDEyNjAwMywgCi0gICAgMTI2MDA4LCAxMjYwMTMsIDEyNjAxOCwgMTI2MDIzLCAxMjYwMjgsIDEyNjAzMywgMTI2MDM4LCAxMjYwNDMsIDEyNjA0OCwgCi0gICAgMTI2MDUzLCAxMjYwNTgsIDEyNjA2NSwgMTI2MDcwLCAxMjYwNzcsIDEyNjA4MiwgMTI2MDg3LCAxMjYwOTQsIDEyNjA5OSwgCi0gICAgMTI2MTA0LCAxMjYxMDksIDEyNjExNCwgMTI2MTE5LCAxMjYxMjQsIDEyNjEyOSwgMTI2MTM0LCAxMjYxMzksIDEyNjE0NCwgCi0gICAgMTI2MTQ5LCAxMjYxNTQsIDEyNjE1OSwgMTI2MTY0LCAxMjYxNjksIDEyNjE3NCwgMTI2MTc5LCAxMjYxODQsIDEyNjE4OSwgCi0gICAgMTI2MTk2LCAxMjYyMDEsIDEyNjIwNiwgMTI2MjExLCAxMjYyMTYsIDEyNjIyMSwgMTI2MjI2LCAxMjYyMzEsIDEyNjIzNiwgCi0gICAgMTI2MjQxLCAxMjYyNDYsIDEyNjI1MSwgMTI2MjU2LCAxMjYyNjEsIDEyNjI2OCwgMTI2MjczLCAxMjYyNzgsIDEyNjI4NSwgCi0gICAgMTI2MjkwLCAxMjYyOTUsIDEyNjMwMCwgMTI2MzA1LCAxMjYzMTAsIDEyNjMxNSwgMTI2MzIwLCAxMjYzMjUsIDEyNjMzMCwgCi0gICAgMTI2MzM1LCAxMjYzNDIsIDEyNjM0NywgMTI2MzUyLCAxMjYzNTcsIDEyNjM2MiwgMTI2MzY3LCAxMjYzNzQsIDEyNjM4MSwgCi0gICAgMTI2Mzg2LCAxMjYzOTEsIDEyNjM5NiwgMTI2NDAxLCAxMjY0MDYsIDEyNjQxMSwgMTI2NDE2LCAxMjY0MjEsIDEyNjQyNiwgCi0gICAgMTI2NDMxLCAxMjY0MzYsIDEyNjQ0MSwgMTI2NDQ2LCAxMjY0NTEsIDEyNjQ1NiwgMTI2NDYxLCAxMjY0NjYsIDEyNjQ3MSwgCi0gICAgMTI2NDc2LCAxMjY0ODEsIDEyNjQ4NiwgMTI2NDkxLCAxMjY0OTYsIDEyNjUwMSwgMTI2NTA2LCAxMjY1MTEsIDEyNjUxNiwgCi0gICAgMTI2NTIxLCAxMjY1MjYsIDEyNjUzMSwgMTI2NTM2LCAxMjY1NDEsIDEyNjU0NiwgMTI2NTUxLCAxMjY1NTYsIDEyNjU2MSwgCi0gICAgMTI2NTY4LCAxMjY1NzMsIDEyNjU3OCwgMTI2NTgzLCAxMjY1ODgsIDEyNjU5MywgMTI2NTk4LCAxMjY2MDMsIDEyNjYwOCwgCi0gICAgMTI2NjEzLCAxMjY2MTgsIDEyNjYyMywgMTI2NjI4LCAxMjY2MzMsIDEyNjYzOCwgMTI2NjQzLCAxMjY2NDgsIDEyNjY1MywgCi0gICAgMTI2NjU4LCAxMjY2NjMsIDEyNjY2OCwgMTI2NjczLCAxMjY2NzgsIDEyNjY4MywgMTI2Njg4LCAxMjY2OTMsIDEyNjY5OCwgCi0gICAgMTI2NzAzLCAxMjY3MDgsIDEyNjcxMywgMTI2NzE4LCAxMjY3MjMsIDEyNjcyOCwgMTI2NzMzLCAxMjY3MzgsIDEyNjc0MywgCi0gICAgMTI2NzQ4LCAxMjY3NTMsIDEyNjc1OCwgMTI2NzYzLCAxMjY3NjgsIDEyNjc3MywgMTI2Nzc4LCAxMjY3ODMsIDEyNjc4OCwgCi0gICAgMTI2NzkzLCAxMjY3OTgsIDEyNjgwMywgMTI2ODA4LCAxMjY4MTMsIDEyNjgxOCwgMTI2ODIzLCAxMjY4MjgsIDEyNjgzMywgCi0gICAgMTI2ODM4LCAxMjY4NDMsIDEyNjg0OCwgMTI2ODUzLCAxMjY4NTgsIDEyNjg2NSwgMTI2ODcwLCAxMjY4NzUsIDEyNjg4MCwgCi0gICAgMTI2ODg1LCAxMjY4OTAsIDEyNjg5NSwgMTI2OTAwLCAxMjY5MDUsIDEyNjkxMCwgMTI2OTE1LCAxMjY5MjAsIDEyNjkyNSwgCi0gICAgMTI2OTMwLCAxMjY5MzUsIDEyNjk0MCwgMTI2OTQ1LCAxMjY5NTAsIDEyNjk1NSwgMTI2OTYwLCAxMjY5NjUsIDEyNjk3MCwgCi0gICAgMTI2OTc3LCAxMjY5ODIsIDEyNjk4NywgMTI2OTk0LCAxMjY5OTksIDEyNzAwNCwgMTI3MDA5LCAxMjcwMTQsIDEyNzAxOSwgCi0gICAgMTI3MDI0LCAxMjcwMjksIDEyNzAzNCwgMTI3MDM5LCAxMjcwNDQsIDEyNzA0OSwgMTI3MDU0LCAxMjcwNTksIDEyNzA2NCwgCi0gICAgMTI3MDY5LCAxMjcwNzQsIDEyNzA3OSwgMTI3MDg0LCAxMjcwODksIDEyNzA5NCwgMTI3MDk5LCAxMjcxMDQsIDEyNzEwOSwgCi0gICAgMTI3MTE0LCAxMjcxMTksIDEyNzEyNCwgMTI3MTI5LCAxMjcxMzQsIDEyNzEzOSwgMTI3MTQ0LCAxMjcxNDksIDEyNzE1NCwgCi0gICAgMTI3MTU5LCAxMjcxNjQsIDEyNzE2OSwgMTI3MTc0LCAxMjcxNzksIDEyNzE4NCwgMTI3MTg5LCAxMjcxOTQsIDEyNzE5OSwgCi0gICAgMTI3MjA0LCAxMjcyMDksIDEyNzIxNiwgMTI3MjIxLCAxMjcyMjYsIDEyNzIzMywgMTI3MjQwLCAxMjcyNDUsIDEyNzI1MCwgCi0gICAgMTI3MjU1LCAxMjcyNjAsIDEyNzI2NSwgMTI3MjcwLCAxMjcyNzUsIDEyNzI4MCwgMTI3Mjg1LCAxMjcyOTAsIDEyNzI5NSwgCi0gICAgMTI3MzAwLCAxMjczMDUsIDEyNzMxMCwgMTI3MzE1LCAxMjczMjAsIDEyNzMyNSwgMTI3MzMwLCAxMjczMzUsIDEyNzM0MCwgCi0gICAgMTI3MzQ1LCAxMjczNTAsIDEyNzM1NSwgMTI3MzYwLCAxMjczNjUsIDEyNzM3MiwgMTI3Mzc3LCAxMjczODIsIDEyNzM4NywgCi0gICAgMTI3MzkyLCAxMjczOTcsIDEyNzQwMiwgMTI3NDA3LCAxMjc0MTIsIDEyNzQxNywgMTI3NDIyLCAxMjc0MjcsIDEyNzQzMiwgCi0gICAgMTI3NDM3LCAxMjc0NDIsIDEyNzQ0NywgMTI3NDUyLCAxMjc0NTcsIDEyNzQ2MiwgMTI3NDY5LCAxMjc0NzQsIDEyNzQ3OSwgCi0gICAgMTI3NDg0LCAxMjc0ODksIDEyNzQ5NCwgMTI3NDk5LCAxMjc1MDQsIDEyNzUxMCwgMTI3NTE1LCAxMjc1MjAsIDEyNzUyNSwgCi0gICAgMTI3NTMwLCAxMjc1MzUsIDEyNzU0MCwgMTI3NTQ1LCAxMjc1NTAsIDEyNzU1NywgMTI3NTY0LCAxMjc1NjksIDEyNzU3NCwgCi0gICAgMTI3NTc4LCAxMjc1ODMsIDEyNzU4NywgMTI3NTkxLCAxMjc1OTYsIDEyNzYwMywgMTI3NjA4LCAxMjc2MTMsIDEyNzYyMiwgCi0gICAgMTI3NjI3LCAxMjc2MzIsIDEyNzYzNywgMTI3NjQyLCAxMjc2NDksIDEyNzY1NiwgMTI3NjYxLCAxMjc2NjYsIDEyNzY3MSwgCi0gICAgMTI3Njc2LCAxMjc2ODMsIDEyNzY4OCwgMTI3NjkzLCAxMjc2OTgsIDEyNzcwMywgMTI3NzA4LCAxMjc3MTMsIDEyNzcxOCwgCi0gICAgMTI3NzIzLCAxMjc3MjgsIDEyNzczMywgMTI3NzM4LCAxMjc3NDMsIDEyNzc1MCwgMTI3NzU1LCAxMjc3NjAsIDEyNzc2NSwgCi0gICAgMTI3NzcwLCAxMjc3NzUsIDEyNzc3OSwgMTI3Nzg0LCAxMjc3ODksIDEyNzc5NCwgMTI3Nzk5LCAxMjc4MDQsIDEyNzgwOSwgCi0gICAgMTI3ODE0LCAxMjc4MTksIDEyNzgyNCwgMTI3ODMwLCAxMjc4MzYsIDEyNzg0MiwgMTI3ODQ4LCAxMjc4NTQsIDEyNzg2MCwgCi0gICAgMTI3ODY2LCAxMjc4NzIsIDEyNzg3OCwgMTI3ODg0LCAxMjc4OTAsIDEyNzg5NiwgMTI3OTAyLCAxMjc5MDgsIDEyNzkxNCwgCisgICAgMCwgMTI3NDMzLCAxMjc0NDEsIDEyNzQ0OSwgMTI3NDU5LCAxMjc0NjksIDEyNzQ3NywgMTI3NDgzLCAxMjc0OTEsIAorICAgIDEyNzQ5OSwgMTI3NTA5LCAxMjc1MjEsIDEyNzUzMywgMTI3NTM5LCAxMjc1NDcsIDEyNzU1MywgMTI3NTU5LCAxMjc1NjUsIAorICAgIDEyNzU3MSwgMTI3NTc3LCAxMjc1ODMsIDEyNzU4OSwgMTI3NTk1LCAxMjc2MDEsIDEyNzYwNywgMTI3NjEzLCAxMjc2MjEsIAorICAgIDEyNzYyOSwgMTI3NjM1LCAxMjc2NDEsIDEyNzY0NywgMTI3NjUzLCAxMjc2NjEsIDEyNzY2OSwgMTI3Njc4LCAxMjc2ODQsIAorICAgIDEyNzY5MiwgMTI3Njk4LCAxMjc3MDQsIDEyNzcxMCwgMTI3NzE2LCAxMjc3MjIsIDEyNzczMCwgMTI3NzM4LCAxMjc3NDQsIAorICAgIDEyNzc1MCwgMTI3NzU2LCAxMjc3NjIsIDEyNzc2OCwgMTI3Nzc0LCAxMjc3ODAsIDEyNzc4NiwgMTI3NzkyLCAxMjc3OTgsIAorICAgIDEyNzgwNCwgMTI3ODEwLCAxMjc4MTYsIDEyNzgyMiwgMTI3ODI4LCAxMjc4MzQsIDEyNzg0MCwgMTI3ODQ2LCAxMjc4NTIsIAorICAgIDEyNzg2MCwgMTI3ODY2LCAxMjc4NzIsIDEyNzg4MiwgMTI3ODkwLCAxMjc4OTYsIDEyNzkwMiwgMTI3OTA4LCAxMjc5MTQsIAogICAgIDEyNzkyMCwgMTI3OTI2LCAxMjc5MzIsIDEyNzkzOCwgMTI3OTQ0LCAxMjc5NTAsIDEyNzk1NiwgMTI3OTYyLCAxMjc5NjgsIAotICAgIDEyNzk3MywgMTI3OTc5LCAxMjc5ODUsIDEyNzk5MSwgMTI3OTk3LCAxMjgwMDMsIDEyODAwOSwgMTI4MDE1LCAxMjgwMjEsIAotICAgIDEyODAyNywgMTI4MDMzLCAxMjgwMzksIDEyODA0NSwgMTI4MDUxLCAxMjgwNTcsIDEyODA2MywgMTI4MDY5LCAxMjgwNzUsIAotICAgIDEyODA4MSwgMTI4MDg3LCAxMjgwOTMsIDEyODA5OCwgMTI4MTA0LCAxMjgxMTAsIDEyODExNiwgMTI4MTIyLCAxMjgxMjgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODEzNCwgMTI4MTM5LCAxMjgxNDQsIDEyODE0OSwgMTI4MTU0LCAxMjgxNTksIAotICAgIDEyODE2NCwgMTI4MTY4LCAxMjgxNzMsIDEyODE3OCwgMTI4MTgzLCAxMjgxODgsIDEyODE5MywgMTI4MTk4LCAxMjgyMDMsIAotICAgIDEyODIwOCwgMTI4MjEzLCAxMjgyMTcsIDEyODIyMiwgMTI4MjI2LCAxMjgyMzEsIDEyODIzNiwgMTI4MjQxLCAxMjgyNDYsIAotICAgIDEyODI1MSwgMTI4MjU1LCAxMjgyNjAsIDEyODI2NSwgMTI4MjcwLCAxMjgyNzUsIDEyODI4MCwgMCwgMTI4Mjg1LCAKLSAgICAxMjgyOTAsIDEyODI5NCwgMTI4Mjk4LCAxMjgzMDIsIDEyODMwNiwgMTI4MzEwLCAxMjgzMTQsIDEyODMxOSwgMTI4MzIzLCAKLSAgICAwLCAwLCAwLCAwLCAxMjgzMjgsIDEyODMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI3OTc0LCAxMjc5ODAsIDEyNzk4NiwgMTI3OTkyLCAxMjc5OTgsIDEyODAwNCwgMTI4MDEwLCAxMjgwMTYsIDEyODAyMiwgCisgICAgMTI4MDMwLCAxMjgwMzYsIDEyODA0NCwgMTI4MDUyLCAxMjgwNjAsIDEyODA2NiwgMTI4MDcyLCAxMjgwNzgsIDEyODA4NCwgCisgICAgMTI4MDkwLCAxMjgwOTgsIDEyODEwOCwgMTI4MTE2LCAxMjgxMjQsIDEyODEzMCwgMTI4MTM2LCAxMjgxNDQsIDEyODE1MiwgCisgICAgMTI4MTU4LCAxMjgxNjYsIDEyODE3NCwgMTI4MTgyLCAxMjgxODgsIDEyODE5NCwgMTI4MjAwLCAxMjgyMDYsIDEyODIxMiwgCisgICAgMTI4MjE4LCAxMjgyMjYsIDEyODIzNCwgMTI4MjQwLCAxMjgyNDYsIDEyODI1MiwgMTI4MjU4LCAxMjgyNjQsIDEyODI3MiwgCisgICAgMTI4Mjc4LCAxMjgyODQsIDEyODI5MCwgMTI4Mjk2LCAxMjgzMDIsIDEyODMwOCwgMTI4MzE2LCAxMjgzMjIsIDEyODMyOCwgCisgICAgMTI4MzM0LCAxMjgzNDAsIDEyODM0OCwgMTI4MzU2LCAxMjgzNjIsIDEyODM2OCwgMTI4Mzc0LCAxMjgzNzksIDEyODM4NSwgCisgICAgMTI4MzkxLCAxMjgzOTgsIDEyODQwMywgMTI4NDA4LCAxMjg0MTMsIDEyODQxOCwgMTI4NDIzLCAxMjg0MjgsIDEyODQzMywgCisgICAgMTI4NDM4LCAxMjg0NDMsIDEyODQ1MiwgMTI4NDU5LCAxMjg0NjQsIDEyODQ2OSwgMTI4NDc0LCAxMjg0ODEsIDEyODQ4NiwgCisgICAgMTI4NDkxLCAxMjg0OTYsIDEyODUwMywgMTI4NTA4LCAxMjg1MTMsIDEyODUxOCwgMTI4NTIzLCAxMjg1MjgsIDEyODUzMywgCisgICAgMTI4NTM4LCAxMjg1NDMsIDEyODU0OCwgMTI4NTUzLCAxMjg1NTgsIDEyODU2NSwgMTI4NTcwLCAxMjg1NzcsIDEyODU4MiwgCisgICAgMTI4NTg3LCAxMjg1OTQsIDEyODU5OSwgMTI4NjA0LCAxMjg2MDksIDEyODYxNCwgMTI4NjE5LCAxMjg2MjQsIDEyODYyOSwgCisgICAgMTI4NjM0LCAxMjg2MzksIDEyODY0NCwgMTI4NjQ5LCAxMjg2NTQsIDEyODY1OSwgMTI4NjY0LCAxMjg2NjksIDEyODY3NCwgCisgICAgMTI4Njc5LCAxMjg2ODQsIDEyODY4OSwgMTI4Njk2LCAxMjg3MDEsIDEyODcwNiwgMTI4NzExLCAxMjg3MTYsIDEyODcyMSwgCisgICAgMTI4NzI2LCAxMjg3MzEsIDEyODczNiwgMTI4NzQxLCAxMjg3NDYsIDEyODc1MSwgMTI4NzU2LCAxMjg3NjEsIDEyODc2OCwgCisgICAgMTI4NzczLCAxMjg3NzgsIDEyODc4NSwgMTI4NzkwLCAxMjg3OTUsIDEyODgwMCwgMTI4ODA1LCAxMjg4MTAsIDEyODgxNSwgCisgICAgMTI4ODIwLCAxMjg4MjUsIDEyODgzMCwgMTI4ODM1LCAxMjg4NDIsIDEyODg0NywgMTI4ODUyLCAxMjg4NTcsIDEyODg2MiwgCisgICAgMTI4ODY3LCAxMjg4NzQsIDEyODg4MSwgMTI4ODg2LCAxMjg4OTEsIDEyODg5NiwgMTI4OTAxLCAxMjg5MDYsIDEyODkxMSwgCisgICAgMTI4OTE2LCAxMjg5MjEsIDEyODkyNiwgMTI4OTMxLCAxMjg5MzYsIDEyODk0MSwgMTI4OTQ2LCAxMjg5NTEsIDEyODk1NiwgCisgICAgMTI4OTYxLCAxMjg5NjYsIDEyODk3MSwgMTI4OTc2LCAxMjg5ODEsIDEyODk4NiwgMTI4OTkxLCAxMjg5OTYsIDEyOTAwMSwgCisgICAgMTI5MDA2LCAxMjkwMTEsIDEyOTAxNiwgMTI5MDIxLCAxMjkwMjYsIDEyOTAzMSwgMTI5MDM2LCAxMjkwNDEsIDEyOTA0NiwgCisgICAgMTI5MDUxLCAxMjkwNTYsIDEyOTA2MSwgMTI5MDY4LCAxMjkwNzMsIDEyOTA3OCwgMTI5MDgzLCAxMjkwODgsIDEyOTA5MywgCisgICAgMTI5MDk4LCAxMjkxMDMsIDEyOTEwOCwgMTI5MTEzLCAxMjkxMTgsIDEyOTEyMywgMTI5MTI4LCAxMjkxMzMsIDEyOTEzOCwgCisgICAgMTI5MTQzLCAxMjkxNDgsIDEyOTE1MywgMTI5MTU4LCAxMjkxNjMsIDEyOTE2OCwgMTI5MTczLCAxMjkxNzgsIDEyOTE4MywgCisgICAgMTI5MTg4LCAxMjkxOTMsIDEyOTE5OCwgMTI5MjAzLCAxMjkyMDgsIDEyOTIxMywgMTI5MjE4LCAxMjkyMjMsIDEyOTIyOCwgCisgICAgMTI5MjMzLCAxMjkyMzgsIDEyOTI0MywgMTI5MjQ4LCAxMjkyNTMsIDEyOTI1OCwgMTI5MjYzLCAxMjkyNjgsIDEyOTI3MywgCisgICAgMTI5Mjc4LCAxMjkyODMsIDEyOTI4OCwgMTI5MjkzLCAxMjkyOTgsIDEyOTMwMywgMTI5MzA4LCAxMjkzMTMsIDEyOTMxOCwgCisgICAgMTI5MzIzLCAxMjkzMjgsIDEyOTMzMywgMTI5MzM4LCAxMjkzNDMsIDEyOTM0OCwgMTI5MzUzLCAxMjkzNTgsIDEyOTM2NSwgCisgICAgMTI5MzcwLCAxMjkzNzUsIDEyOTM4MCwgMTI5Mzg1LCAxMjkzOTAsIDEyOTM5NSwgMTI5NDAwLCAxMjk0MDUsIDEyOTQxMCwgCisgICAgMTI5NDE1LCAxMjk0MjAsIDEyOTQyNSwgMTI5NDMwLCAxMjk0MzUsIDEyOTQ0MCwgMTI5NDQ1LCAxMjk0NTAsIDEyOTQ1NSwgCisgICAgMTI5NDYwLCAxMjk0NjUsIDEyOTQ3MCwgMTI5NDc3LCAxMjk0ODIsIDEyOTQ4NywgMTI5NDk0LCAxMjk0OTksIDEyOTUwNCwgCisgICAgMTI5NTA5LCAxMjk1MTQsIDEyOTUxOSwgMTI5NTI0LCAxMjk1MjksIDEyOTUzNCwgMTI5NTM5LCAxMjk1NDQsIDEyOTU0OSwgCisgICAgMTI5NTU0LCAxMjk1NTksIDEyOTU2NCwgMTI5NTY5LCAxMjk1NzQsIDEyOTU3OSwgMTI5NTg0LCAxMjk1ODksIDEyOTU5NCwgCisgICAgMTI5NTk5LCAxMjk2MDQsIDEyOTYwOSwgMTI5NjE0LCAxMjk2MTksIDEyOTYyNCwgMTI5NjI5LCAxMjk2MzQsIDEyOTYzOSwgCisgICAgMTI5NjQ0LCAxMjk2NDksIDEyOTY1NCwgMTI5NjU5LCAxMjk2NjQsIDEyOTY2OSwgMTI5Njc0LCAxMjk2NzksIDEyOTY4NCwgCisgICAgMTI5Njg5LCAxMjk2OTQsIDEyOTY5OSwgMTI5NzA0LCAxMjk3MDksIDEyOTcxNiwgMTI5NzIxLCAxMjk3MjYsIDEyOTczMywgCisgICAgMTI5NzQwLCAxMjk3NDUsIDEyOTc1MCwgMTI5NzU1LCAxMjk3NjAsIDEyOTc2NSwgMTI5NzcwLCAxMjk3NzUsIDEyOTc4MCwgCisgICAgMTI5Nzg1LCAxMjk3OTAsIDEyOTc5NSwgMTI5ODAwLCAxMjk4MDUsIDEyOTgxMCwgMTI5ODE1LCAxMjk4MjAsIDEyOTgyNSwgCisgICAgMTI5ODMwLCAxMjk4MzUsIDEyOTg0MCwgMTI5ODQ1LCAxMjk4NTAsIDEyOTg1NSwgMTI5ODYwLCAxMjk4NjUsIDEyOTg3MiwgCisgICAgMTI5ODc3LCAxMjk4ODIsIDEyOTg4NywgMTI5ODkyLCAxMjk4OTcsIDEyOTkwMiwgMTI5OTA3LCAxMjk5MTIsIDEyOTkxNywgCisgICAgMTI5OTIyLCAxMjk5MjcsIDEyOTkzMiwgMTI5OTM3LCAxMjk5NDIsIDEyOTk0NywgMTI5OTUyLCAxMjk5NTcsIDEyOTk2MiwgCisgICAgMTI5OTY5LCAxMjk5NzQsIDEyOTk3OSwgMTI5OTg0LCAxMjk5ODksIDEyOTk5NCwgMTI5OTk5LCAxMzAwMDQsIDEzMDAxMCwgCisgICAgMTMwMDE1LCAxMzAwMjAsIDEzMDAyNSwgMTMwMDMwLCAxMzAwMzUsIDEzMDA0MCwgMTMwMDQ1LCAxMzAwNTAsIDEzMDA1NywgCisgICAgMTMwMDY0LCAxMzAwNjksIDEzMDA3NCwgMTMwMDc4LCAxMzAwODMsIDEzMDA4NywgMTMwMDkxLCAxMzAwOTYsIDEzMDEwMywgCisgICAgMTMwMTA4LCAxMzAxMTMsIDEzMDEyMiwgMTMwMTI3LCAxMzAxMzIsIDEzMDEzNywgMTMwMTQyLCAxMzAxNDksIDEzMDE1NiwgCisgICAgMTMwMTYxLCAxMzAxNjYsIDEzMDE3MSwgMTMwMTc2LCAxMzAxODMsIDEzMDE4OCwgMTMwMTkzLCAxMzAxOTgsIDEzMDIwMywgCisgICAgMTMwMjA4LCAxMzAyMTMsIDEzMDIxOCwgMTMwMjIzLCAxMzAyMjgsIDEzMDIzMywgMTMwMjM4LCAxMzAyNDMsIDEzMDI1MCwgCisgICAgMTMwMjU0LCAxMzAyNTksIDEzMDI2NCwgMTMwMjY5LCAxMzAyNzQsIDEzMDI3OCwgMTMwMjgzLCAxMzAyODgsIDEzMDI5MywgCisgICAgMTMwMjk4LCAxMzAzMDMsIDEzMDMwOCwgMTMwMzEzLCAxMzAzMTgsIDEzMDMyMywgMTMwMzI5LCAxMzAzMzUsIDEzMDM0MSwgCisgICAgMTMwMzQ3LCAxMzAzNTMsIDEzMDM1OCwgMTMwMzY0LCAxMzAzNzAsIDEzMDM3NiwgMTMwMzgyLCAxMzAzODgsIDEzMDM5NCwgCisgICAgMTMwNDAwLCAxMzA0MDYsIDEzMDQxMiwgMTMwNDE4LCAxMzA0MjQsIDEzMDQzMCwgMTMwNDM2LCAxMzA0NDIsIDEzMDQ0OCwgCisgICAgMTMwNDU0LCAxMzA0NjAsIDEzMDQ2NiwgMTMwNDcxLCAxMzA0NzcsIDEzMDQ4MywgMTMwNDg5LCAxMzA0OTUsIDEzMDUwMSwgCisgICAgMTMwNTA3LCAxMzA1MTMsIDEzMDUxOSwgMTMwNTI1LCAxMzA1MzEsIDEzMDUzNywgMTMwNTQzLCAxMzA1NDksIDEzMDU1NSwgCisgICAgMTMwNTYxLCAxMzA1NjcsIDEzMDU3MywgMTMwNTc5LCAxMzA1ODUsIDEzMDU5MSwgMTMwNTk2LCAxMzA2MDIsIDEzMDYwOCwgCisgICAgMTMwNjE0LCAxMzA2MjAsIDEzMDYyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjMyLCAxMzA2MzcsIDEzMDY0MiwgCisgICAgMTMwNjQ3LCAxMzA2NTIsIDEzMDY1NywgMTMwNjYyLCAxMzA2NjYsIDEzMDY3MSwgMTMwNjc2LCAxMzA2ODEsIDEzMDY4NiwgCisgICAgMTMwNjkxLCAxMzA2OTYsIDEzMDcwMSwgMTMwNzA2LCAxMzA3MTEsIDEzMDcxNSwgMTMwNzIwLCAxMzA3MjQsIDEzMDcyOSwgCisgICAgMTMwNzM0LCAxMzA3MzksIDEzMDc0NCwgMTMwNzQ5LCAxMzA3NTMsIDEzMDc1OCwgMTMwNzYzLCAxMzA3NjcsIDEzMDc3MiwgCisgICAgMTMwNzc3LCAwLCAxMzA3ODIsIDEzMDc4NywgMTMwNzkxLCAxMzA3OTUsIDEzMDc5OSwgMTMwODAzLCAxMzA4MDcsIAorICAgIDEzMDgxMSwgMTMwODE2LCAxMzA4MjAsIDAsIDAsIDAsIDAsIDEzMDgyNSwgMTMwODI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgzMzcsIDEyODM0NCwgMTI4MzUwLCAxMjgzNTcsIDEyODM2NCwgCi0gICAgMTI4MzcxLCAxMjgzNzgsIDEyODM4NSwgMTI4MzkyLCAxMjgzOTksIDEyODQwNiwgMTI4NDEzLCAxMjg0MjAsIDEyODQyNywgCi0gICAgMTI4NDM0LCAxMjg0NDEsIDEyODQ0OCwgMTI4NDU1LCAxMjg0NjEsIDEyODQ2OCwgMTI4NDc1LCAxMjg0ODIsIDEyODQ4OCwgCi0gICAgMTI4NDk1LCAxMjg1MDEsIDEyODUwNywgMTI4NTE0LCAxMjg1MjAsIDEyODUyNywgMTI4NTMzLCAwLCAwLCAxMjg1MzksIAotICAgIDEyODU0NywgMTI4NTU1LCAxMjg1NjQsIDEyODU3MywgMTI4NTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjg1OTAsIDEyODU5NSwgMTI4NjAwLCAxMjg2MDUsIDEyODYxMCwgMTI4NjE1LCAxMjg2MjAsIDEyODYyNSwgMTI4NjMwLCAKLSAgICAxMjg2MzUsIDEyODY0MCwgMTI4NjQ1LCAxMjg2NTAsIDEyODY1NSwgMTI4NjYwLCAxMjg2NjUsIDEyODY3MCwgMTI4Njc1LCAKLSAgICAxMjg2ODAsIDEyODY4NSwgMTI4NjkwLCAxMjg2OTUsIDEyODcwMCwgMTI4NzA1LCAxMjg3MTAsIDEyODcxNSwgMTI4NzIwLCAKLSAgICAxMjg3MjUsIDEyODczMCwgMTI4NzM1LCAxMjg3NDAsIDEyODc0NSwgMTI4NzUwLCAxMjg3NTUsIDEyODc2MCwgMTI4NzY1LCAKLSAgICAxMjg3NzAsIDEyODc3NSwgMTI4NzgwLCAxMjg3ODUsIDEyODc5MCwgMTI4Nzk1LCAxMjg4MDAsIDEyODgwNSwgMTI4ODEwLCAKLSAgICAxMjg4MTUsIDEyODgyMCwgMTI4ODI1LCAxMjg4MzAsIDEyODgzNywgMTI4ODQ0LCAxMjg4NTEsIDEyODg1OCwgMTI4ODY1LCAKLSAgICAxMjg4NzIsIDEyODg3OSwgMTI4ODg2LCAxMjg4OTUsIDEyODkwMiwgMTI4OTA5LCAxMjg5MTYsIDEyODkyMywgMTI4OTMwLCAKLSAgICAxMjg5MzcsIDEyODk0NCwgMTI4OTUxLCAxMjg5NTgsIDEyODk2NSwgMTI4OTcyLCAxMjg5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEyODk4NiwgMTI4OTkxLCAxMjg5OTUsIDEyODk5OSwgMTI5MDAzLCAxMjkwMDcsIDEyOTAxMSwgCi0gICAgMTI5MDE1LCAxMjkwMjAsIDEyOTAyNCwgMCwgMTI5MDI5LCAxMjkwMzQsIDEyOTAzOSwgMTI5MDQ2LCAxMjkwNTEsIAotICAgIDEyOTA1OCwgMTI5MDY1LCAwLCAxMjkwNzAsIDEyOTA3NywgMTI5MDgyLCAxMjkwODcsIDEyOTA5NCwgMTI5MTAxLCAKLSAgICAxMjkxMDYsIDEyOTExMSwgMTI5MTE2LCAxMjkxMjEsIDEyOTEyNiwgMTI5MTMzLCAxMjkxNDAsIDEyOTE0NSwgMTI5MTUwLCAKLSAgICAxMjkxNTUsIDEyOTE2OCwgMTI5MTc3LCAxMjkxODQsIDEyOTE5MywgMTI5MjAyLCAwLCAwLCAwLCAwLCAwLCAxMjkyMTEsIAotICAgIDEyOTIxOCwgMTI5MjI1LCAxMjkyMzIsIDEyOTIzOSwgMTI5MjQ2LCAxMjkyNTMsIDEyOTI2MCwgMTI5MjY3LCAxMjkyNzQsIAotICAgIDEyOTI4MSwgMTI5Mjg4LCAxMjkyOTUsIDEyOTMwMiwgMTI5MzA5LCAxMjkzMTYsIDEyOTMyMywgMTI5MzMwLCAxMjkzMzcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDgzNCwgMTMwODQxLCAKKyAgICAxMzA4NDcsIDEzMDg1NCwgMTMwODYxLCAxMzA4NjgsIDEzMDg3NSwgMTMwODgyLCAxMzA4ODksIDEzMDg5NiwgMTMwOTAzLCAKKyAgICAxMzA5MTAsIDEzMDkxNywgMTMwOTI0LCAxMzA5MzEsIDEzMDkzOCwgMTMwOTQ1LCAxMzA5NTIsIDEzMDk1OCwgMTMwOTY1LCAKKyAgICAxMzA5NzIsIDEzMDk3OSwgMTMwOTg1LCAxMzA5OTIsIDEzMDk5OCwgMTMxMDA0LCAxMzEwMTEsIDEzMTAxNywgMTMxMDI0LCAKKyAgICAxMzEwMzAsIDAsIDAsIDEzMTAzNiwgMTMxMDQ0LCAxMzEwNTIsIDEzMTA2MSwgMTMxMDcwLCAxMzEwNzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTA4NywgMTMxMDkyLCAxMzEwOTcsIDEzMTEwMiwgMTMxMTA3LCAxMzExMTIsIDEzMTExNywgCisgICAgMTMxMTIyLCAxMzExMjcsIDEzMTEzMiwgMTMxMTM3LCAxMzExNDIsIDEzMTE0NywgMTMxMTUyLCAxMzExNTcsIDEzMTE2MiwgCisgICAgMTMxMTY3LCAxMzExNzIsIDEzMTE3NywgMTMxMTgyLCAxMzExODcsIDEzMTE5MiwgMTMxMTk3LCAxMzEyMDIsIDEzMTIwNywgCisgICAgMTMxMjEyLCAxMzEyMTcsIDEzMTIyMiwgMTMxMjI3LCAxMzEyMzIsIDEzMTIzNywgMTMxMjQyLCAxMzEyNDcsIDEzMTI1MiwgCisgICAgMTMxMjU3LCAxMzEyNjIsIDEzMTI2NywgMTMxMjcyLCAxMzEyNzcsIDEzMTI4MiwgMTMxMjg3LCAxMzEyOTIsIDEzMTI5NywgCisgICAgMTMxMzAyLCAxMzEzMDcsIDEzMTMxMiwgMTMxMzE3LCAxMzEzMjIsIDEzMTMyNywgMTMxMzM0LCAxMzEzNDEsIDEzMTM0OCwgCisgICAgMTMxMzU1LCAxMzEzNjIsIDEzMTM2OSwgMTMxMzc2LCAxMzEzODMsIDEzMTM5MiwgMTMxMzk5LCAxMzE0MDYsIDEzMTQxMywgCisgICAgMTMxNDIwLCAxMzE0MjcsIDEzMTQzNCwgMTMxNDQxLCAxMzE0NDgsIDEzMTQ1NSwgMTMxNDYyLCAxMzE0NjksIDEzMTQ3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNDgzLCAxMzE0ODgsIDEzMTQ5MiwgMTMxNDk2LCAxMzE1MDAsIAorICAgIDEzMTUwNCwgMTMxNTA4LCAxMzE1MTIsIDEzMTUxNywgMTMxNTIxLCAwLCAxMzE1MjYsIDEzMTUzMSwgMTMxNTM2LCAKKyAgICAxMzE1NDMsIDEzMTU0OCwgMTMxNTU1LCAxMzE1NjIsIDAsIDEzMTU2NywgMTMxNTc0LCAxMzE1NzksIDEzMTU4NCwgCisgICAgMTMxNTkxLCAxMzE1OTgsIDEzMTYwMywgMTMxNjA4LCAxMzE2MTMsIDEzMTYxOCwgMTMxNjIzLCAxMzE2MzAsIDEzMTYzNywgCisgICAgMTMxNjQyLCAxMzE2NDcsIDEzMTY1MiwgMTMxNjY1LCAxMzE2NzQsIDEzMTY4MSwgMTMxNjkwLCAxMzE2OTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzMTcwOCwgMTMxNzE1LCAxMzE3MjIsIDEzMTcyOSwgMTMxNzM2LCAxMzE3NDMsIDEzMTc1MCwgMTMxNzU3LCAKKyAgICAxMzE3NjQsIDEzMTc3MSwgMTMxNzc4LCAxMzE3ODUsIDEzMTc5MiwgMTMxNzk5LCAxMzE4MDYsIDEzMTgxMywgMTMxODIwLCAKKyAgICAxMzE4MjcsIDEzMTgzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxODQxLCAKKyAgICAxMzE4NDQsIDEzMTg0OCwgMTMxODUyLCAxMzE4NTYsIDEzMTg1OSwgMTMxODYzLCAxMzE4NjgsIDEzMTg3MiwgMTMxODc2LCAKKyAgICAxMzE4ODAsIDEzMTg4NCwgMTMxODg4LCAxMzE4OTMsIDEzMTg5OCwgMTMxOTAyLCAxMzE5MDYsIDEzMTkwOSwgMTMxOTEzLCAKKyAgICAxMzE5MTgsIDEzMTkyMywgMTMxOTI3LCAxMzE5MzEsIDEzMTkzNCwgMTMxOTM4LCAxMzE5NDIsIDEzMTk0NiwgMTMxOTUwLCAKKyAgICAxMzE5NTQsIDEzMTk1OCwgMTMxOTYyLCAxMzE5NjUsIDEzMTk2OSwgMTMxOTczLCAxMzE5NzcsIDEzMTk4MSwgMTMxOTg1LCAKKyAgICAxMzE5ODksIDEzMTk5NSwgMTMxOTk4LCAxMzIwMDIsIDEzMjAwNiwgMTMyMDEwLCAxMzIwMTQsIDEzMjAxOCwgMTMyMDIyLCAKKyAgICAxMzIwMjYsIDEzMjAzMCwgMTMyMDM0LCAxMzIwMzksIDEzMjA0NCwgMTMyMDUwLCAxMzIwNTQsIDEzMjA1OCwgMTMyMDYyLCAKKyAgICAxMzIwNjYsIDEzMjA3MCwgMTMyMDc0LCAxMzIwNzksIDEzMjA4MywgMTMyMDg3LCAxMzIwOTEsIDEzMjA5NSwgMTMyMDk5LCAKKyAgICAxMzIxMDUsIDEzMjEwOSwgMTMyMTEzLCAxMzIxMTcsIDEzMjEyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMyMTI1LCAxMzIxMjksIDEzMjEzMywgMTMyMTM5LCAxMzIxNDUsIDEzMjE0OSwgMTMyMTU0LCAxMzIxNTksIDEzMjE2NCwgCisgICAgMTMyMTY5LCAxMzIxNzMsIDEzMjE3OCwgMTMyMTgzLCAxMzIxODgsIDEzMjE5MiwgMTMyMTk3LCAxMzIyMDIsIDEzMjIwNywgCisgICAgMTMyMjExLCAxMzIyMTYsIDEzMjIyMSwgMTMyMjI2LCAxMzIyMzEsIDEzMjIzNiwgMTMyMjQxLCAxMzIyNDYsIDEzMjI1MSwgCisgICAgMTMyMjU1LCAxMzIyNjAsIDEzMjI2NSwgMTMyMjcwLCAxMzIyNzUsIDEzMjI4MCwgMTMyMjg1LCAxMzIyOTAsIDEzMjI5NSwgCisgICAgMTMyMzAwLCAxMzIzMDUsIDEzMjMxMCwgMTMyMzE3LCAxMzIzMjIsIDEzMjMyOSwgMTMyMzM0LCAxMzIzMzksIDEzMjM0NCwgCisgICAgMTMyMzQ5LCAxMzIzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjM1OSwgCisgICAgMTMyMzYzLCAxMzIzNjksIDEzMjM3MiwgMTMyMzc1LCAxMzIzNzksIDEzMjM4MywgMTMyMzg3LCAxMzIzOTEsIDEzMjM5NSwgCisgICAgMTMyMzk5LCAxMzI0MDMsIDEzMjQwOSwgMTMyNDE1LCAxMzI0MjEsIDEzMjQyNywgMTMyNDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjkzNDQsIDEyOTM0NywgMTI5MzUxLCAKLSAgICAxMjkzNTUsIDEyOTM1OSwgMTI5MzYyLCAxMjkzNjYsIDEyOTM3MSwgMTI5Mzc1LCAxMjkzNzksIDEyOTM4MywgMTI5Mzg3LCAKLSAgICAxMjkzOTEsIDEyOTM5NiwgMTI5NDAxLCAxMjk0MDUsIDEyOTQwOSwgMTI5NDEzLCAxMjk0MTcsIDEyOTQyMiwgMTI5NDI4LCAKLSAgICAxMjk0MzIsIDEyOTQzNiwgMTI5NDQwLCAxMjk0NDQsIDEyOTQ0OCwgMTI5NDUyLCAxMjk0NTYsIDEyOTQ2MCwgMTI5NDY0LCAKLSAgICAxMjk0NjgsIDEyOTQ3MSwgMTI5NDc1LCAxMjk0NzksIDEyOTQ4MywgMTI5NDg3LCAxMjk0OTEsIDEyOTQ5NSwgMTI5NTAxLCAKLSAgICAxMjk1MDQsIDEyOTUwOCwgMTI5NTEyLCAxMjk1MTYsIDEyOTUyMCwgMTI5NTI0LCAxMjk1MjgsIDEyOTUzMiwgMTI5NTM2LCAKLSAgICAxMjk1NDAsIDEyOTU0NSwgMTI5NTUwLCAxMjk1NTYsIDEyOTU2MCwgMTI5NTY0LCAxMjk1NjgsIDEyOTU3MiwgMTI5NTc2LCAKLSAgICAxMjk1ODAsIDEyOTU4NSwgMTI5NTg5LCAxMjk1OTMsIDEyOTU5NywgMTI5NjAxLCAxMjk2MDUsIDEyOTYxMSwgMTI5NjE1LCAKLSAgICAxMjk2MTksIDEyOTYyMywgMTI5NjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk2MzEsIDEyOTYzNSwgCi0gICAgMTI5NjM5LCAxMjk2NDUsIDEyOTY1MSwgMTI5NjU1LCAxMjk2NjAsIDEyOTY2NSwgMTI5NjcwLCAxMjk2NzUsIDEyOTY3OSwgCi0gICAgMTI5Njg0LCAxMjk2ODksIDEyOTY5NCwgMTI5Njk4LCAxMjk3MDMsIDEyOTcwOCwgMTI5NzEzLCAxMjk3MTcsIDEyOTcyMiwgCi0gICAgMTI5NzI3LCAxMjk3MzIsIDEyOTczNywgMTI5NzQyLCAxMjk3NDcsIDEyOTc1MiwgMTI5NzU3LCAxMjk3NjEsIDEyOTc2NiwgCi0gICAgMTI5NzcxLCAxMjk3NzYsIDEyOTc4MSwgMTI5Nzg2LCAxMjk3OTEsIDEyOTc5NiwgMTI5ODAxLCAxMjk4MDYsIDEyOTgxMSwgCi0gICAgMTI5ODE2LCAxMjk4MjMsIDEyOTgyOCwgMTI5ODM1LCAxMjk4NDAsIDEyOTg0NSwgMTI5ODUwLCAxMjk4NTUsIDEyOTg2MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5ODY1LCAxMjk4NjksIDEyOTg3NSwgCi0gICAgMTI5ODc4LCAxMjk4ODEsIDEyOTg4NSwgMTI5ODg5LCAxMjk4OTMsIDEyOTg5NywgMTI5OTAxLCAxMjk5MDUsIDEyOTkwOSwgCi0gICAgMTI5OTE1LCAxMjk5MjEsIDEyOTkyNywgMTI5OTMzLCAxMjk5MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyNDQzLCAxMzI0NDYsIAorICAgIDEzMjQ0OSwgMTMyNDUyLCAxMzI0NTUsIDEzMjQ1OCwgMTMyNDYxLCAxMzI0NjQsIDEzMjQ2NywgMTMyNDcwLCAxMzI0NzMsIAorICAgIDEzMjQ3NiwgMTMyNDc5LCAxMzI0ODIsIDEzMjQ4NSwgMTMyNDg4LCAxMzI0OTEsIDEzMjQ5NCwgMTMyNDk3LCAxMzI1MDAsIAorICAgIDEzMjUwMywgMTMyNTA2LCAxMzI1MDksIDEzMjUxMiwgMTMyNTE1LCAxMzI1MTgsIDEzMjUyMSwgMTMyNTI0LCAxMzI1MjcsIAorICAgIDEzMjUzMCwgMTMyNTMzLCAxMzI1MzYsIDEzMjUzOSwgMTMyNTQyLCAxMzI1NDUsIDEzMjU0OCwgMTMyNTUxLCAxMzI1NTQsIAorICAgIDEzMjU1NywgMTMyNTYwLCAxMzI1NjMsIDEzMjU2NiwgMTMyNTY5LCAxMzI1NzIsIDEzMjU3NSwgMTMyNTc4LCAxMzI1ODEsIAorICAgIDEzMjU4NCwgMTMyNTg3LCAxMzI1OTAsIDEzMjU5MywgMTMyNTk2LCAxMzI1OTksIDEzMjYwMiwgMTMyNjA1LCAxMzI2MDgsIAorICAgIDEzMjYxMSwgMTMyNjE0LCAxMzI2MTcsIDEzMjYyMCwgMTMyNjIzLCAxMzI2MjYsIDEzMjYyOSwgMTMyNjMyLCAxMzI2MzUsIAorICAgIDEzMjYzOCwgMTMyNjQxLCAxMzI2NDQsIDEzMjY0NywgMTMyNjUwLCAxMzI2NTMsIDEzMjY1NiwgMTMyNjU5LCAxMzI2NjIsIAorICAgIDEzMjY2NSwgMTMyNjY4LCAxMzI2NzEsIDEzMjY3NCwgMTMyNjc3LCAxMzI2ODAsIDEzMjY4MywgMTMyNjg2LCAxMzI2ODksIAorICAgIDEzMjY5MiwgMTMyNjk1LCAxMzI2OTgsIDEzMjcwMSwgMTMyNzA0LCAxMzI3MDcsIDEzMjcxMCwgMTMyNzEzLCAxMzI3MTYsIAorICAgIDEzMjcxOSwgMTMyNzIyLCAxMzI3MjUsIDEzMjcyOCwgMTMyNzMxLCAxMzI3MzQsIDEzMjczNywgMTMyNzQwLCAxMzI3NDMsIAorICAgIDEzMjc0NiwgMTMyNzQ5LCAxMzI3NTIsIDEzMjc1NSwgMTMyNzU4LCAxMzI3NjEsIDEzMjc2NCwgMTMyNzY3LCAxMzI3NzAsIAorICAgIDEzMjc3MywgMTMyNzc2LCAxMzI3NzksIDEzMjc4MiwgMTMyNzg1LCAxMzI3ODgsIDEzMjc5MSwgMTMyNzk0LCAxMzI3OTcsIAorICAgIDEzMjgwMCwgMTMyODAzLCAxMzI4MDYsIDEzMjgwOSwgMTMyODEyLCAxMzI4MTUsIDEzMjgxOCwgMTMyODIxLCAxMzI4MjQsIAorICAgIDEzMjgyNywgMTMyODMwLCAxMzI4MzMsIDEzMjgzNiwgMTMyODM5LCAxMzI4NDIsIDEzMjg0NSwgMTMyODQ4LCAxMzI4NTEsIAorICAgIDEzMjg1NCwgMTMyODU3LCAxMzI4NjAsIDEzMjg2MywgMTMyODY2LCAxMzI4NjksIDEzMjg3MiwgMTMyODc1LCAxMzI4NzgsIAorICAgIDEzMjg4MSwgMTMyODg0LCAxMzI4ODcsIDEzMjg5MCwgMTMyODkzLCAxMzI4OTYsIDEzMjg5OSwgMTMyOTAyLCAxMzI5MDUsIAorICAgIDEzMjkwOCwgMTMyOTExLCAxMzI5MTQsIDEzMjkxNywgMTMyOTIwLCAxMzI5MjMsIDEzMjkyNiwgMTMyOTI5LCAxMzI5MzIsIAorICAgIDEzMjkzNSwgMTMyOTM4LCAxMzI5NDEsIDEzMjk0NCwgMTMyOTQ3LCAxMzI5NTAsIDEzMjk1MywgMTMyOTU2LCAxMzI5NTksIAorICAgIDEzMjk2MiwgMTMyOTY1LCAxMzI5NjgsIDEzMjk3MSwgMTMyOTc0LCAxMzI5NzcsIDEzMjk4MCwgMTMyOTgzLCAxMzI5ODYsIAorICAgIDEzMjk4OSwgMTMyOTkyLCAxMzI5OTUsIDEzMjk5OCwgMTMzMDAxLCAxMzMwMDQsIDEzMzAwNywgMTMzMDEwLCAxMzMwMTMsIAorICAgIDEzMzAxNiwgMTMzMDE5LCAxMzMwMjIsIDEzMzAyNSwgMTMzMDI4LCAxMzMwMzEsIDEzMzAzNCwgMTMzMDM3LCAxMzMwNDAsIAorICAgIDEzMzA0MywgMTMzMDQ2LCAxMzMwNDksIDEzMzA1MiwgMTMzMDU1LCAxMzMwNTgsIDEzMzA2MSwgMTMzMDY0LCAxMzMwNjcsIAorICAgIDEzMzA3MCwgMTMzMDczLCAxMzMwNzYsIDEzMzA3OSwgMTMzMDgyLCAxMzMwODUsIDEzMzA4OCwgMTMzMDkxLCAxMzMwOTQsIAorICAgIDEzMzA5NywgMTMzMTAwLCAxMzMxMDMsIDEzMzEwNiwgMTMzMTA5LCAxMzMxMTIsIDEzMzExNSwgMTMzMTE4LCAxMzMxMjEsIAorICAgIDEzMzEyNCwgMTMzMTI3LCAxMzMxMzAsIDEzMzEzMywgMTMzMTM2LCAxMzMxMzksIDEzMzE0MiwgMTMzMTQ1LCAxMzMxNDgsIAorICAgIDEzMzE1MSwgMTMzMTU0LCAxMzMxNTcsIDEzMzE2MCwgMTMzMTYzLCAxMzMxNjYsIDEzMzE2OSwgMTMzMTcyLCAxMzMxNzUsIAorICAgIDEzMzE3OCwgMTMzMTgxLCAxMzMxODQsIDEzMzE4NywgMTMzMTkwLCAxMzMxOTMsIDEzMzE5NiwgMTMzMTk5LCAxMzMyMDIsIAorICAgIDEzMzIwNSwgMTMzMjA4LCAxMzMyMTEsIDEzMzIxNCwgMTMzMjE3LCAxMzMyMjAsIDEzMzIyMywgMTMzMjI2LCAxMzMyMjksIAorICAgIDEzMzIzMiwgMTMzMjM1LCAxMzMyMzgsIDEzMzI0MSwgMTMzMjQ0LCAxMzMyNDcsIDEzMzI1MCwgMTMzMjUzLCAxMzMyNTYsIAorICAgIDEzMzI1OSwgMTMzMjYyLCAxMzMyNjUsIDEzMzI2OCwgMTMzMjcxLCAxMzMyNzQsIDEzMzI3NywgMTMzMjgwLCAxMzMyODMsIAorICAgIDEzMzI4NiwgMTMzMjg5LCAxMzMyOTIsIDEzMzI5NSwgMTMzMjk4LCAxMzMzMDEsIDEzMzMwNCwgMTMzMzA3LCAxMzMzMTAsIAorICAgIDEzMzMxMywgMTMzMzE2LCAxMzMzMTksIDEzMzMyMiwgMTMzMzI1LCAxMzMzMjgsIDEzMzMzMSwgMTMzMzM0LCAxMzMzMzcsIAorICAgIDEzMzM0MCwgMTMzMzQzLCAxMzMzNDYsIDEzMzM0OSwgMTMzMzUyLCAxMzMzNTUsIDEzMzM1OCwgMTMzMzYxLCAxMzMzNjQsIAorICAgIDEzMzM2NywgMTMzMzcwLCAxMzMzNzMsIDEzMzM3NiwgMTMzMzc5LCAxMzMzODIsIDEzMzM4NSwgMTMzMzg4LCAxMzMzOTEsIAorICAgIDEzMzM5NCwgMTMzMzk3LCAxMzM0MDAsIDEzMzQwMywgMTMzNDA2LCAxMzM0MDksIDEzMzQxMiwgMTMzNDE1LCAxMzM0MTgsIAorICAgIDEzMzQyMSwgMTMzNDI0LCAxMzM0MjcsIDEzMzQzMCwgMTMzNDMzLCAxMzM0MzYsIDEzMzQzOSwgMTMzNDQyLCAxMzM0NDUsIAorICAgIDEzMzQ0OCwgMTMzNDUxLCAxMzM0NTQsIDEzMzQ1NywgMTMzNDYwLCAxMzM0NjMsIDEzMzQ2NiwgMTMzNDY5LCAxMzM0NzIsIAorICAgIDEzMzQ3NSwgMTMzNDc4LCAxMzM0ODEsIDEzMzQ4NCwgMTMzNDg3LCAxMzM0OTAsIDEzMzQ5MywgMTMzNDk2LCAxMzM0OTksIAorICAgIDEzMzUwMiwgMTMzNTA1LCAxMzM1MDgsIDEzMzUxMSwgMTMzNTE0LCAxMzM1MTcsIDEzMzUyMCwgMTMzNTIzLCAxMzM1MjYsIAorICAgIDEzMzUyOSwgMTMzNTMyLCAxMzM1MzUsIDEzMzUzOCwgMTMzNTQxLCAxMzM1NDQsIDEzMzU0NywgMTMzNTUwLCAxMzM1NTMsIAorICAgIDEzMzU1NiwgMTMzNTU5LCAxMzM1NjIsIDEzMzU2NSwgMTMzNTY4LCAxMzM1NzEsIDEzMzU3NCwgMTMzNTc3LCAxMzM1ODAsIAorICAgIDEzMzU4MywgMTMzNTg2LCAxMzM1ODksIDEzMzU5MiwgMTMzNTk1LCAxMzM1OTgsIDEzMzYwMSwgMTMzNjA0LCAxMzM2MDcsIAorICAgIDEzMzYxMCwgMTMzNjEzLCAxMzM2MTYsIDEzMzYxOSwgMTMzNjIyLCAxMzM2MjUsIDEzMzYyOCwgMTMzNjMxLCAxMzM2MzQsIAorICAgIDEzMzYzNywgMTMzNjQwLCAxMzM2NDMsIDEzMzY0NiwgMTMzNjQ5LCAxMzM2NTIsIDEzMzY1NSwgMTMzNjU4LCAxMzM2NjEsIAorICAgIDEzMzY2NCwgMTMzNjY3LCAxMzM2NzAsIDEzMzY3MywgMTMzNjc2LCAxMzM2NzksIDEzMzY4MiwgMTMzNjg1LCAxMzM2ODgsIAorICAgIDEzMzY5MSwgMTMzNjk0LCAxMzM2OTcsIDEzMzcwMCwgMTMzNzAzLCAxMzM3MDYsIDEzMzcwOSwgMTMzNzEyLCAxMzM3MTUsIAorICAgIDEzMzcxOCwgMTMzNzIxLCAxMzM3MjQsIDEzMzcyNywgMTMzNzMwLCAxMzM3MzMsIDEzMzczNiwgMTMzNzM5LCAxMzM3NDIsIAorICAgIDEzMzc0NSwgMTMzNzQ4LCAxMzM3NTEsIDEzMzc1NCwgMTMzNzU3LCAxMzM3NjAsIDEzMzc2MywgMTMzNzY2LCAxMzM3NjksIAorICAgIDEzMzc3MiwgMTMzNzc1LCAxMzM3NzgsIDEzMzc4MSwgMTMzNzg0LCAxMzM3ODcsIDEzMzc5MCwgMTMzNzkzLCAxMzM3OTYsIAorICAgIDEzMzc5OSwgMTMzODAyLCAxMzM4MDUsIDEzMzgwOCwgMTMzODExLCAxMzM4MTQsIDEzMzgxNywgMTMzODIwLCAxMzM4MjMsIAorICAgIDEzMzgyNiwgMTMzODI5LCAxMzM4MzIsIDEzMzgzNSwgMTMzODM4LCAxMzM4NDEsIDEzMzg0NCwgMTMzODQ3LCAxMzM4NTAsIAorICAgIDEzMzg1MywgMTMzODU2LCAxMzM4NTksIDEzMzg2MiwgMTMzODY1LCAxMzM4NjgsIDEzMzg3MSwgMTMzODc0LCAxMzM4NzcsIAorICAgIDEzMzg4MCwgMTMzODgzLCAxMzM4ODYsIDEzMzg4OSwgMTMzODkyLCAxMzM4OTUsIDEzMzg5OCwgMTMzOTAxLCAxMzM5MDQsIAorICAgIDEzMzkwNywgMTMzOTEwLCAxMzM5MTMsIDEzMzkxNiwgMTMzOTE5LCAxMzM5MjIsIDEzMzkyNSwgMTMzOTI4LCAxMzM5MzEsIAorICAgIDEzMzkzNCwgMTMzOTM3LCAxMzM5NDAsIDEzMzk0MywgMTMzOTQ2LCAxMzM5NDksIDEzMzk1MiwgMTMzOTU1LCAxMzM5NTgsIAorICAgIDEzMzk2MSwgMTMzOTY0LCAxMzM5NjcsIDEzMzk3MCwgMTMzOTczLCAxMzM5NzYsIDEzMzk3OSwgMTMzOTgyLCAxMzM5ODUsIAorICAgIDEzMzk4OCwgMTMzOTkxLCAxMzM5OTQsIDEzMzk5NywgMTM0MDAwLCAxMzQwMDMsIDEzNDAwNiwgMTM0MDA5LCAxMzQwMTIsIAorICAgIDEzNDAxNSwgMTM0MDE4LCAxMzQwMjEsIDEzNDAyNCwgMTM0MDI3LCAxMzQwMzAsIDEzNDAzMywgMTM0MDM2LCAxMzQwMzksIAorICAgIDEzNDA0MiwgMTM0MDQ1LCAxMzQwNDgsIDEzNDA1MSwgMTM0MDU0LCAxMzQwNTcsIDEzNDA2MCwgMTM0MDYzLCAxMzQwNjYsIAorICAgIDEzNDA2OSwgMTM0MDcyLCAxMzQwNzUsIDEzNDA3OCwgMTM0MDgxLCAxMzQwODQsIDEzNDA4NywgMTM0MDkwLCAxMzQwOTMsIAorICAgIDEzNDA5NiwgMTM0MDk5LCAxMzQxMDIsIDEzNDEwNSwgMTM0MTA4LCAxMzQxMTEsIDEzNDExNCwgMTM0MTE3LCAxMzQxMjAsIAorICAgIDEzNDEyMywgMTM0MTI2LCAxMzQxMjksIDEzNDEzMiwgMTM0MTM1LCAxMzQxMzgsIDEzNDE0MSwgMTM0MTQ0LCAxMzQxNDcsIAorICAgIDEzNDE1MCwgMTM0MTUzLCAxMzQxNTYsIDEzNDE1OSwgMTM0MTYyLCAxMzQxNjUsIDEzNDE2OCwgMTM0MTcxLCAxMzQxNzQsIAorICAgIDEzNDE3NywgMTM0MTgwLCAxMzQxODMsIDEzNDE4NiwgMTM0MTg5LCAxMzQxOTIsIDEzNDE5NSwgMTM0MTk4LCAxMzQyMDEsIAorICAgIDEzNDIwNCwgMTM0MjA3LCAxMzQyMTAsIDEzNDIxMywgMTM0MjE2LCAxMzQyMTksIDEzNDIyMiwgMTM0MjI1LCAxMzQyMjgsIAorICAgIDEzNDIzMSwgMTM0MjM0LCAxMzQyMzcsIDEzNDI0MCwgMTM0MjQzLCAxMzQyNDYsIDEzNDI0OSwgMTM0MjUyLCAxMzQyNTUsIAorICAgIDEzNDI1OCwgMTM0MjYxLCAxMzQyNjQsIDEzNDI2NywgMTM0MjcwLCAxMzQyNzMsIDEzNDI3NiwgMTM0Mjc5LCAxMzQyODIsIAorICAgIDEzNDI4NSwgMTM0Mjg4LCAxMzQyOTEsIDEzNDI5NCwgMTM0Mjk3LCAxMzQzMDAsIDEzNDMwMywgMTM0MzA2LCAxMzQzMDksIAorICAgIDEzNDMxMiwgMTM0MzE1LCAxMzQzMTgsIDEzNDMyMSwgMTM0MzI0LCAxMzQzMjcsIDEzNDMzMCwgMTM0MzMzLCAxMzQzMzYsIAorICAgIDEzNDMzOSwgMTM0MzQyLCAxMzQzNDUsIDEzNDM0OCwgMTM0MzUxLCAxMzQzNTQsIDEzNDM1NywgMTM0MzYwLCAxMzQzNjMsIAorICAgIDEzNDM2NiwgMTM0MzY5LCAxMzQzNzIsIDEzNDM3NSwgMTM0Mzc4LCAxMzQzODEsIDEzNDM4NCwgMTM0Mzg3LCAxMzQzOTAsIAorICAgIDEzNDM5MywgMTM0Mzk2LCAxMzQzOTksIDEzNDQwMiwgMTM0NDA1LCAxMzQ0MDgsIDEzNDQxMSwgMTM0NDE0LCAxMzQ0MTcsIAorICAgIDEzNDQyMCwgMTM0NDIzLCAxMzQ0MjYsIDEzNDQyOSwgMTM0NDMyLCAxMzQ0MzUsIDEzNDQzOCwgMTM0NDQxLCAxMzQ0NDQsIAorICAgIDEzNDQ0NywgMTM0NDUwLCAxMzQ0NTMsIDEzNDQ1NiwgMTM0NDU5LCAxMzQ0NjIsIDEzNDQ2NSwgMTM0NDY4LCAxMzQ0NzEsIAorICAgIDEzNDQ3NCwgMTM0NDc3LCAxMzQ0ODAsIDEzNDQ4MywgMTM0NDg2LCAxMzQ0ODksIDEzNDQ5MiwgMTM0NDk1LCAxMzQ0OTgsIAorICAgIDEzNDUwMSwgMTM0NTA0LCAxMzQ1MDcsIDEzNDUxMCwgMTM0NTEzLCAxMzQ1MTYsIDEzNDUxOSwgMTM0NTIyLCAxMzQ1MjUsIAorICAgIDEzNDUyOCwgMTM0NTMxLCAxMzQ1MzQsIDEzNDUzNywgMTM0NTQwLCAxMzQ1NDMsIDEzNDU0NiwgMTM0NTQ5LCAxMzQ1NTIsIAorICAgIDEzNDU1NSwgMTM0NTU4LCAxMzQ1NjEsIDEzNDU2NCwgMTM0NTY3LCAxMzQ1NzAsIDEzNDU3MywgMTM0NTc2LCAxMzQ1NzksIAorICAgIDEzNDU4MiwgMTM0NTg1LCAxMzQ1ODgsIDEzNDU5MSwgMTM0NTk0LCAxMzQ1OTcsIDEzNDYwMCwgMTM0NjAzLCAxMzQ2MDYsIAorICAgIDEzNDYwOSwgMTM0NjEyLCAxMzQ2MTUsIDEzNDYxOCwgMTM0NjIxLCAxMzQ2MjQsIDEzNDYyNywgMTM0NjMwLCAxMzQ2MzMsIAorICAgIDEzNDYzNiwgMTM0NjM5LCAxMzQ2NDIsIDEzNDY0NSwgMTM0NjQ4LCAxMzQ2NTEsIDEzNDY1NCwgMTM0NjU3LCAxMzQ2NjAsIAorICAgIDEzNDY2MywgMTM0NjY2LCAxMzQ2NjksIDEzNDY3MiwgMTM0Njc1LCAxMzQ2NzgsIDEzNDY4MSwgMTM0Njg0LCAxMzQ2ODcsIAorICAgIDEzNDY5MCwgMTM0NjkzLCAxMzQ2OTYsIDEzNDY5OSwgMTM0NzAyLCAxMzQ3MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzNDcwOCwgMTM0NzEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5NDUsIDEyOTk1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTQyNiw2NTAgKzIwNjY4LDY4MyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNDcxOSwgMTM0NzIzLCAxMzQ3MjcsIDEzNDczMSwgMTM0NzM1LCAxMzQ3MzksIDEzNDc0MywgMTM0NzQ2LCAxMzQ3NTAsIAorICAgIDEzNDc1NCwgMTM0NzU4LCAxMzQ3NjIsIDEzNDc2NSwgMTM0NzcxLCAxMzQ3NzcsIDEzNDc4MywgMTM0Nzg5LCAxMzQ3OTUsIAorICAgIDEzNDc5OSwgMTM0ODA1LCAxMzQ4MDksIDEzNDgxMywgMTM0ODE5LCAxMzQ4MjMsIDEzNDgyNywgMTM0ODMxLCAxMzQ4MzUsIAorICAgIDEzNDgzOSwgMTM0ODQzLCAxMzQ4NDcsIDEzNDg1MywgMTM0ODU5LCAxMzQ4NjUsIDEzNDg3MSwgMTM0ODc4LCAxMzQ4ODUsIAorICAgIDEzNDg5MiwgMTM0OTAyLCAxMzQ5MDksIDEzNDkxNiwgMTM0OTIyLCAxMzQ5MjgsIDEzNDkzNCwgMTM0OTQwLCAxMzQ5NDgsIAorICAgIDEzNDk1NiwgMTM0OTY0LCAxMzQ5NzIsIDEzNDk4MSwgMTM0OTg3LCAxMzQ5OTUsIDEzNTAwMSwgMTM1MDA4LCAxMzUwMTQsIAorICAgIDEzNTAyMSwgMTM1MDI3LCAxMzUwMzUsIDEzNTAzOSwgMTM1MDQzLCAxMzUwNDgsIDEzNTA1NCwgMTM1MDYwLCAxMzUwNjgsIAorICAgIDEzNTA3NiwgMTM1MDgyLCAxMzUwODksIDEzNTA5MiwgMTM1MDk4LCAxMzUxMDIsIDEzNTEwNSwgMTM1MTA5LCAxMzUxMTIsIAorICAgIDEzNTExNSwgMTM1MTE5LCAxMzUxMjQsIDEzNTEyOCwgMTM1MTMyLCAxMzUxMzgsIDEzNTE0MywgMTM1MTQ5LCAxMzUxNTMsIAorICAgIDEzNTE1NywgMTM1MTYwLCAxMzUxNjQsIDEzNTE2OCwgMTM1MTczLCAxMzUxNzcsIDEzNTE4MiwgMTM1MTg2LCAxMzUxOTEsIAorICAgIDEzNTE5NSwgMTM1MTk5LCAxMzUyMDMsIDEzNTIwNywgMTM1MjExLCAxMzUyMTUsIDEzNTIxOSwgMTM1MjIzLCAxMzUyMjgsIAorICAgIDEzNTIzMywgMTM1MjM4LCAxMzUyNDMsIDEzNTI0OSwgMTM1MjU1LCAxMzUyNjEsIDEzNTI2NywgMTM1MjczLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzUyNzgsIDEzNTI4NiwgMTM1Mjk1LCAxMzUzMDMsIDEzNTMxMCwgMTM1MzE4LCAxMzUzMjUsIDEzNTMzMiwgCisgICAgMTM1MzQxLCAxMzUzNDgsIDEzNTM1NSwgMTM1MzYyLCAxMzUzNzAsIDAsIDAsIDAsIDEzNTM3OCwgMTM1MzgzLCAxMzUzOTAsIAorICAgIDEzNTM5NiwgMTM1NDAzLCAxMzU0MDksIDEzNTQxNSwgMTM1NDIxLCAxMzU0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNTQzMywgMTM1NDM4LCAxMzU0NDUsIDEzNTQ1MSwgMTM1NDU4LCAxMzU0NjQsIDEzNTQ3MCwgMTM1NDc2LCAxMzU0ODIsIAorICAgIDEzNTQ4OCwgMCwgMCwgMTM1NDkzLCAxMzU0OTksIDEzNTUwNSwgMTM1NTA4LCAxMzU1MTcsIDEzNTUyNCwgMTM1NTMyLCAKKyAgICAxMzU1MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTk1NiwgMTI5OTYwLCAxMjk5NjQsIDEyOTk2OCwgMTI5OTcyLCAxMjk5NzYsIAotICAgIDEyOTk4MCwgMTI5OTgzLCAxMjk5ODcsIDEyOTk5MSwgMTI5OTk1LCAxMjk5OTksIDEzMDAwMiwgMTMwMDA4LCAxMzAwMTMsIAotICAgIDEzMDAxOSwgMTMwMDI1LCAxMzAwMzAsIDEzMDAzNCwgMTMwMDQwLCAxMzAwNDQsIDEzMDA0OCwgMTMwMDU0LCAxMzAwNTgsIAotICAgIDEzMDA2MiwgMTMwMDY2LCAxMzAwNzAsIDEzMDA3NCwgMTMwMDc4LCAxMzAwODEsIDEzMDA4NywgMTMwMDkzLCAxMzAwOTksIAotICAgIDEzMDEwNSwgMTMwMTEyLCAxMzAxMTksIDEzMDEyNiwgMTMwMTM2LCAxMzAxNDMsIDEzMDE1MCwgMTMwMTU1LCAxMzAxNjAsIAotICAgIDEzMDE2NSwgMTMwMTcwLCAxMzAxNzcsIDEzMDE4NCwgMTMwMTkxLCAxMzAxOTgsIDEzMDIwNywgMTMwMjEzLCAxMzAyMjAsIAotICAgIDEzMDIyNiwgMTMwMjMzLCAxMzAyMzksIDEzMDI0NiwgMTMwMjUxLCAxMzAyNTgsIDEzMDI2MiwgMTMwMjY2LCAxMzAyNzEsIAotICAgIDEzMDI3NywgMTMwMjgzLCAxMzAyOTAsIDEzMDI5NywgMTMwMzAzLCAxMzAzMTAsIDEzMDMxMywgMTMwMzE5LCAxMzAzMjMsIAotICAgIDEzMDMyNiwgMTMwMzMwLCAxMzAzMzMsIDEzMDMzNiwgMTMwMzQwLCAxMzAzNDUsIDEzMDM0OSwgMTMwMzUzLCAxMzAzNTksIAotICAgIDEzMDM2NCwgMTMwMzcwLCAxMzAzNzQsIDEzMDM3OCwgMTMwMzgxLCAxMzAzODUsIDEzMDM4OSwgMTMwMzk0LCAxMzAzOTgsIAotICAgIDEzMDQwMywgMTMwNDA3LCAxMzA0MTIsIDEzMDQxNiwgMTMwNDIwLCAxMzA0MjQsIDEzMDQyOCwgMTMwNDMyLCAxMzA0MzYsIAotICAgIDEzMDQ0MCwgMTMwNDQ0LCAxMzA0NDksIDEzMDQ1NCwgMTMwNDU5LCAxMzA0NjQsIDEzMDQ3MCwgMTMwNDc2LCAxMzA0ODIsIAotICAgIDEzMDQ4OCwgMTMwNDk0LCAwLCAwLCAwLCAwLCAwLCAxMzA0OTksIDEzMDUwNywgMTMwNTE2LCAxMzA1MjQsIDEzMDUzMSwgCi0gICAgMTMwNTM5LCAxMzA1NDYsIDEzMDU1MywgMTMwNTYyLCAxMzA1NjksIDEzMDU3NiwgMTMwNTgzLCAxMzA1OTEsIDAsIDAsIDAsIAotICAgIDEzMDU5OSwgMTMwNjA0LCAxMzA2MTEsIDEzMDYxNywgMTMwNjI0LCAxMzA2MzAsIDEzMDYzNiwgMTMwNjQyLCAxMzA2NDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDY1NCwgMTMwNjU5LCAxMzA2NjYsIDEzMDY3MiwgMTMwNjc5LCAxMzA2ODUsIAotICAgIDEzMDY5MSwgMTMwNjk3LCAxMzA3MDMsIDEzMDcwOSwgMCwgMCwgMTMwNzE0LCAxMzA3MjAsIDEzMDcyNiwgMTMwNzI5LCAKLSAgICAxMzA3MzgsIDEzMDc0NSwgMTMwNzUzLCAxMzA3NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTU0NiwgCisgICAgMTM1NTUxLCAxMzU1NTYsIDEzNTU2MSwgMTM1NTY4LCAxMzU1NzUsIDEzNTU4MiwgMTM1NTg5LCAxMzU1OTQsIDEzNTU5OSwgCisgICAgMTM1NjA0LCAxMzU2MDksIDEzNTYxNiwgMTM1NjIxLCAxMzU2MjgsIDEzNTYzNSwgMTM1NjQwLCAxMzU2NDUsIDEzNTY1MCwgCisgICAgMTM1NjU3LCAxMzU2NjIsIDEzNTY2NywgMTM1Njc0LCAxMzU2ODEsIDEzNTY4NiwgMTM1NjkxLCAxMzU2OTYsIDEzNTcwMywgCisgICAgMTM1NzEwLCAxMzU3MTcsIDEzNTcyMiwgMTM1NzI3LCAxMzU3MzQsIDEzNTc0MSwgMTM1NzQ4LCAxMzU3NTUsIDEzNTc2MCwgCisgICAgMTM1NzY1LCAxMzU3NzAsIDEzNTc3NywgMTM1NzgyLCAxMzU3ODcsIDEzNTc5MiwgMTM1Nzk5LCAxMzU4MDgsIDEzNTgxNSwgCisgICAgMTM1ODIwLCAxMzU4MjUsIDEzNTgzMCwgMTM1ODM1LCAxMzU4NDAsIDEzNTg0NSwgMTM1ODU0LCAxMzU4NjEsIDEzNTg2NiwgCisgICAgMTM1ODczLCAxMzU4ODAsIDEzNTg4NSwgMTM1ODkwLCAxMzU4OTUsIDEzNTkwMiwgMTM1OTA3LCAxMzU5MTQsIDEzNTkyMSwgCisgICAgMTM1OTI2LCAxMzU5MzEsIDEzNTkzNiwgMTM1OTQzLCAxMzU5NTAsIDEzNTk1NSwgMTM1OTYwLCAxMzU5NjcsIDEzNTk3NCwgCisgICAgMTM1OTgxLCAxMzU5ODYsIDEzNTk5MSwgMTM1OTk2LCAxMzYwMDEsIDEzNjAwOCwgMTM2MDE3LCAxMzYwMjYsIDEzNjAzMSwgCisgICAgMTM2MDM4LCAxMzYwNDcsIDEzNjA1MiwgMTM2MDU3LCAxMzYwNjIsIDEzNjA2NywgMTM2MDc0LCAxMzYwODEsIDEzNjA4OCwgCisgICAgMTM2MDk1LCAxMzYxMDAsIDEzNjEwNSwgMTM2MTEwLCAxMzYxMTcsIDEzNjEyNCwgMTM2MTMxLCAxMzYxMzYsIDEzNjE0MSwgCisgICAgMTM2MTQ4LCAxMzYxNTMsIDEzNjE2MCwgMTM2MTY1LCAxMzYxNzIsIDEzNjE3NywgMTM2MTg0LCAxMzYxOTEsIDEzNjE5NiwgCisgICAgMTM2MjAxLCAxMzYyMDYsIDEzNjIxMSwgMTM2MjE2LCAxMzYyMjEsIDEzNjIyNiwgMTM2MjMxLCAxMzYyMzYsIDEzNjI0MywgCisgICAgMTM2MjUwLCAxMzYyNTcsIDEzNjI2NCwgMTM2MjcxLCAxMzYyODAsIDEzNjI4NSwgMTM2MjkwLCAxMzYyOTcsIDEzNjMwNCwgCisgICAgMTM2MzA5LCAxMzYzMTYsIDEzNjMyMywgMTM2MzMwLCAxMzYzMzcsIDEzNjM0NCwgMTM2MzUxLCAxMzYzNTYsIDEzNjM2MSwgCisgICAgMTM2MzY2LCAxMzYzNzEsIDEzNjM3NiwgMTM2Mzg1LCAxMzYzOTQsIDEzNjQwMywgMTM2NDEyLCAxMzY0MjEsIDEzNjQzMCwgCisgICAgMTM2NDM5LCAxMzY0NDgsIDEzNjQ1MywgMTM2NDY0LCAxMzY0NzUsIDEzNjQ4NCwgMTM2NDg5LCAxMzY0OTQsIDEzNjQ5OSwgCisgICAgMTM2NTA0LCAxMzY1MTMsIDEzNjUyMCwgMTM2NTI3LCAxMzY1MzQsIDEzNjU0MSwgMTM2NTQ4LCAxMzY1NTUsIDEzNjU2NCwgCisgICAgMTM2NTczLCAxMzY1ODQsIDEzNjU5MywgMTM2NjA0LCAxMzY2MTMsIDEzNjYyMCwgMTM2NjI5LCAxMzY2NDAsIDEzNjY0OSwgCisgICAgMTM2NjU4LCAxMzY2NjcsIDEzNjY3NiwgMTM2NjgzLCAxMzY2OTAsIDEzNjY5NywgMTM2NzA2LCAxMzY3MTUsIDEzNjcyNiwgCisgICAgMTM2NzM1LCAxMzY3NDQsIDEzNjc1NSwgMTM2NzYwLCAxMzY3NjUsIDEzNjc3NiwgMTM2Nzg0LCAxMzY3OTMsIDEzNjgwMiwgCisgICAgMTM2ODExLCAxMzY4MjIsIDEzNjgzMSwgMTM2ODQwLCAxMzY4NTEsIDEzNjg2MiwgMTM2ODczLCAxMzY4ODQsIDEzNjg5NSwgCisgICAgMTM2OTA2LCAxMzY5MTMsIDEzNjkyMCwgMTM2OTI3LCAxMzY5MzQsIDEzNjk0NSwgMTM2OTU0LCAxMzY5NjEsIDEzNjk2OCwgCisgICAgMTM2OTc1LCAxMzY5ODYsIDEzNjk5NywgMTM3MDA4LCAxMzcwMTksIDEzNzAzMCwgMTM3MDQxLCAxMzcwNTIsIDEzNzA2MywgCisgICAgMTM3MDcwLCAxMzcwNzcsIDEzNzA4NiwgMTM3MDk1LCAxMzcxMDIsIDEzNzEwOSwgMTM3MTE2LCAxMzcxMjUsIDEzNzEzNCwgCisgICAgMTM3MTQzLCAxMzcxNTAsIDEzNzE1OSwgMTM3MTY4LCAxMzcxNzcsIDEzNzE4NCwgMTM3MTkxLCAxMzcxOTYsIDEzNzIwMiwgCisgICAgMTM3MjA5LCAxMzcyMTYsIDEzNzIyMywgMTM3MjMwLCAxMzcyMzcsIDEzNzI0NCwgMTM3MjUzLCAxMzcyNjIsIDEzNzI3MSwgCisgICAgMTM3MjgwLCAxMzcyODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNzI5NiwgMTM3MzAyLCAxMzczMDcsIAorICAgIDEzNzMxMiwgMTM3MzE5LCAxMzczMjUsIDEzNzMzMSwgMTM3MzM3LCAxMzczNDMsIDEzNzM0OSwgMTM3MzU1LCAxMzczNjEsIAorICAgIDEzNzM2NSwgMTM3MzY5LCAxMzczNzUsIDEzNzM4MSwgMTM3Mzg3LCAxMzczOTEsIDEzNzM5NiwgMTM3NDAxLCAxMzc0MDUsIAorICAgIDEzNzQwOSwgMTM3NDEyLCAxMzc0MTgsIDEzNzQyNCwgMTM3NDMwLCAxMzc0MzYsIDEzNzQ0MiwgMTM3NDQ4LCAxMzc0NTQsIAorICAgIDEzNzQ2MCwgMTM3NDY2LCAxMzc0NzYsIDEzNzQ4NiwgMTM3NDkyLCAxMzc0OTgsIDEzNzUwOCwgMTM3NTE4LCAxMzc1MjQsIAorICAgIDAsIDAsIDEzNzUzMCwgMTM3NTM4LCAxMzc1NDMsIDEzNzU0OCwgMTM3NTU0LCAxMzc1NjAsIDEzNzU2NiwgMTM3NTcyLCAKKyAgICAxMzc1NzgsIDEzNzU4NCwgMTM3NTkxLCAxMzc1OTgsIDEzNzYwNCwgMTM3NjEwLCAxMzc2MTYsIDEzNzYyMiwgMTM3NjI4LCAKKyAgICAxMzc2MzQsIDEzNzY0MCwgMTM3NjQ2LCAxMzc2NTEsIDEzNzY1NywgMTM3NjYzLCAxMzc2NjksIDEzNzY3NSwgMTM3NjgxLCAKKyAgICAxMzc2OTAsIDEzNzY5NiwgMTM3NzAxLCAxMzc3MDksIDEzNzcxNiwgMTM3NzIzLCAxMzc3MzIsIDEzNzc0MSwgMTM3NzUwLCAKKyAgICAxMzc3NTksIDEzNzc2OCwgMTM3Nzc3LCAxMzc3ODYsIDEzNzc5NSwgMTM3ODA1LCAxMzc4MTUsIDEzNzgyMywgMTM3ODMxLCAKKyAgICAxMzc4NDAsIDEzNzg0OSwgMTM3ODU1LCAxMzc4NjEsIDEzNzg2NywgMTM3ODczLCAxMzc4ODEsIDEzNzg4OSwgMTM3ODkzLCAKKyAgICAxMzc4OTksIDEzNzkwNCwgMTM3OTEwLCAxMzc5MTYsIDEzNzkyMiwgMTM3OTI4LCAxMzc5MzQsIDEzNzk0MywgMTM3OTQ4LCAKKyAgICAxMzc5NTUsIDEzNzk2MCwgMTM3OTY1LCAxMzc5NzAsIDEzNzk3NiwgMTM3OTgyLCAxMzc5ODgsIDEzNzk5NSwgMTM4MDAwLCAKKyAgICAxMzgwMDUsIDEzODAxMCwgMTM4MDE1LCAxMzgwMjAsIDEzODAyNiwgMTM4MDMyLCAxMzgwMzgsIDEzODA0NCwgMTM4MDUwLCAKKyAgICAxMzgwNTYsIDEzODA2MiwgMTM4MDY4LCAxMzgwNzMsIDEzODA3OCwgMTM4MDgzLCAxMzgwODgsIDEzODA5MywgMTM4MDk4LCAKKyAgICAxMzgxMDMsIDEzODEwOCwgMTM4MTE0LCAxMzgxMjAsIDEzODEyNSwgMTM4MTMwLCAxMzgxMzUsIDEzODE0MCwgMTM4MTQ1LCAKKyAgICAxMzgxNTEsIDEzODE1OCwgMTM4MTYyLCAxMzgxNjYsIDEzODE3MCwgMTM4MTc0LCAxMzgxNzgsIDEzODE4MiwgMTM4MTg2LCAKKyAgICAxMzgxOTAsIDEzODE5OCwgMTM4MjA4LCAxMzgyMTIsIDEzODIxNiwgMTM4MjIyLCAxMzgyMjgsIDEzODIzNCwgMTM4MjQwLCAKKyAgICAxMzgyNDYsIDEzODI1MiwgMTM4MjU4LCAxMzgyNjQsIDEzODI3MCwgMTM4Mjc2LCAxMzgyODIsIDEzODI4OCwgMTM4Mjk0LCAKKyAgICAxMzgzMDAsIDEzODMwNCwgMTM4MzA4LCAxMzgzMTUsIDEzODMyMSwgMTM4MzI3LCAxMzgzMzMsIDEzODMzOCwgMTM4MzQ1LCAKKyAgICAxMzgzNTAsIDEzODM1NiwgMTM4MzYyLCAxMzgzNjgsIDEzODM3NCwgMTM4Mzc5LCAxMzgzODMsIDEzODM4OSwgMTM4MzkzLCAKKyAgICAxMzgzOTcsIDEzODQwMSwgMTM4NDA3LCAxMzg0MTMsIDEzODQxNywgMTM4NDIzLCAxMzg0MjksIDEzODQzNSwgMTM4NDQxLCAKKyAgICAxMzg0NDcsIDEzODQ1NSwgMTM4NDYzLCAxMzg0NjksIDEzODQ3NSwgMTM4NDgxLCAxMzg0ODcsIDEzODQ5OSwgMTM4NTExLCAKKyAgICAxMzg1MjUsIDEzODUzNywgMTM4NTQ5LCAxMzg1NjMsIDEzODU3NywgMTM4NTkxLCAxMzg1OTUsIDEzODYwMywgMTM4NjExLCAKKyAgICAxMzg2MTYsIDEzODYyMCwgMTM4NjI0LCAxMzg2MjgsIDEzODYzMiwgMTM4NjM2LCAxMzg2NDAsIDEzODY0NCwgMTM4NjUwLCAKKyAgICAxMzg2NTYsIDEzODY2MiwgMTM4NjY4LCAxMzg2NzYsIDEzODY4NSwgMTM4NjkyLCAxMzg2OTksIDEzODcwNywgMTM4NzE0LCAKKyAgICAxMzg3MjYsIDEzODczOCwgMTM4NzUwLCAxMzg3NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODc2OSwgMTM4Nzc2LCAxMzg3ODMsIDEzODc5MCwgMTM4Nzk3LCAKKyAgICAxMzg4MDQsIDEzODgxMSwgMTM4ODE4LCAxMzg4MjUsIDEzODgzMiwgMTM4ODM5LCAxMzg4NDYsIDEzODg1MywgMTM4ODYwLCAKKyAgICAxMzg4NjcsIDEzODg3NCwgMTM4ODgxLCAxMzg4ODgsIDEzODg5NSwgMTM4OTAyLCAxMzg5MDksIDEzODkxNiwgMTM4OTIzLCAKKyAgICAxMzg5MzAsIDEzODkzNywgMTM4OTQ0LCAxMzg5NTEsIDEzODk1OCwgMTM4OTY1LCAxMzg5NzIsIDEzODk3OSwgMTM4OTg2LCAKKyAgICAxMzg5OTMsIDEzOTAwMCwgMTM5MDA3LCAxMzkwMTQsIDEzOTAyMSwgMTM5MDI4LCAxMzkwMzUsIDEzOTA0MiwgMTM5MDQ5LCAKKyAgICAxMzkwNTYsIDEzOTA2MywgMTM5MDcwLCAxMzkwNzcsIDEzOTA4NCwgMTM5MDkxLCAxMzkwOTgsIDEzOTEwNSwgMTM5MTEyLCAKKyAgICAxMzkxMTksIDEzOTEyNiwgMTM5MTMzLCAxMzkxNDAsIDEzOTE0NywgMTM5MTU0LCAxMzkxNjEsIDEzOTE2OCwgMTM5MTc1LCAKKyAgICAxMzkxODIsIDEzOTE4OSwgMTM5MTk2LCAxMzkyMDMsIDEzOTIxMCwgMTM5MjE3LCAxMzkyMjQsIDEzOTIzMSwgMTM5MjM2LCAKKyAgICAxMzkyNDEsIDEzOTI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNzY3LCAxMzA3NzIsIDEzMDc3NywgMTMwNzgyLCAxMzA3ODksIDEzMDc5NiwgMTMwODAzLCAKLSAgICAxMzA4MTAsIDEzMDgxNSwgMTMwODIwLCAxMzA4MjUsIDEzMDgzMCwgMTMwODM3LCAxMzA4NDIsIDEzMDg0OSwgMTMwODU2LCAKLSAgICAxMzA4NjEsIDEzMDg2NiwgMTMwODcxLCAxMzA4NzgsIDEzMDg4MywgMTMwODg4LCAxMzA4OTUsIDEzMDkwMiwgMTMwOTA3LCAKLSAgICAxMzA5MTIsIDEzMDkxNywgMTMwOTI0LCAxMzA5MzEsIDEzMDkzOCwgMTMwOTQzLCAxMzA5NDgsIDEzMDk1NSwgMTMwOTYyLCAKLSAgICAxMzA5NjksIDEzMDk3NiwgMTMwOTgxLCAxMzA5ODYsIDEzMDk5MSwgMTMwOTk4LCAxMzEwMDMsIDEzMTAwOCwgMTMxMDEzLCAKLSAgICAxMzEwMjAsIDEzMTAyOSwgMTMxMDM2LCAxMzEwNDEsIDEzMTA0NiwgMTMxMDUxLCAxMzEwNTYsIDEzMTA2MSwgMTMxMDY2LCAKLSAgICAxMzEwNzUsIDEzMTA4MiwgMTMxMDg3LCAxMzEwOTQsIDEzMTEwMSwgMTMxMTA2LCAxMzExMTEsIDEzMTExNiwgMTMxMTIzLCAKLSAgICAxMzExMjgsIDEzMTEzNSwgMTMxMTQyLCAxMzExNDcsIDEzMTE1MiwgMTMxMTU3LCAxMzExNjQsIDEzMTE3MSwgMTMxMTc2LCAKLSAgICAxMzExODEsIDEzMTE4OCwgMTMxMTk1LCAxMzEyMDIsIDEzMTIwNywgMTMxMjEyLCAxMzEyMTcsIDEzMTIyMiwgMTMxMjI5LCAKLSAgICAxMzEyMzgsIDEzMTI0NywgMTMxMjUyLCAxMzEyNTksIDEzMTI2OCwgMTMxMjczLCAxMzEyNzgsIDEzMTI4MywgMTMxMjg4LCAKLSAgICAxMzEyOTUsIDEzMTMwMiwgMTMxMzA5LCAxMzEzMTYsIDEzMTMyMSwgMTMxMzI2LCAxMzEzMzEsIDEzMTMzOCwgMTMxMzQ1LCAKLSAgICAxMzEzNTIsIDEzMTM1NywgMTMxMzYyLCAxMzEzNjksIDEzMTM3NCwgMTMxMzgxLCAxMzEzODYsIDEzMTM5MywgMTMxMzk4LCAKLSAgICAxMzE0MDUsIDEzMTQxMiwgMTMxNDE3LCAxMzE0MjIsIDEzMTQyNywgMTMxNDMyLCAxMzE0MzcsIDEzMTQ0MiwgMTMxNDQ3LCAKLSAgICAxMzE0NTIsIDEzMTQ1NywgMTMxNDY0LCAxMzE0NzEsIDEzMTQ3OCwgMTMxNDg1LCAxMzE0OTIsIDEzMTUwMSwgMTMxNTA2LCAKLSAgICAxMzE1MTEsIDEzMTUxOCwgMTMxNTI1LCAxMzE1MzAsIDEzMTUzNywgMTMxNTQ0LCAxMzE1NTEsIDEzMTU1OCwgMTMxNTY1LCAKLSAgICAxMzE1NzIsIDEzMTU3NywgMTMxNTgyLCAxMzE1ODcsIDEzMTU5MiwgMTMxNTk3LCAxMzE2MDYsIDEzMTYxNSwgMTMxNjI0LCAKLSAgICAxMzE2MzMsIDEzMTY0MiwgMTMxNjUxLCAxMzE2NjAsIDEzMTY2OSwgMTMxNjc0LCAxMzE2ODUsIDEzMTY5NiwgMTMxNzA1LCAKLSAgICAxMzE3MTAsIDEzMTcxNSwgMTMxNzIwLCAxMzE3MjUsIDEzMTczNCwgMTMxNzQxLCAxMzE3NDgsIDEzMTc1NSwgMTMxNzYyLCAKLSAgICAxMzE3NjksIDEzMTc3NiwgMTMxNzg1LCAxMzE3OTQsIDEzMTgwNSwgMTMxODE0LCAxMzE4MjUsIDEzMTgzNCwgMTMxODQxLCAKLSAgICAxMzE4NTAsIDEzMTg2MSwgMTMxODcwLCAxMzE4NzksIDEzMTg4OCwgMTMxODk3LCAxMzE5MDQsIDEzMTkxMSwgMTMxOTE4LCAKLSAgICAxMzE5MjcsIDEzMTkzNiwgMTMxOTQ3LCAxMzE5NTYsIDEzMTk2NSwgMTMxOTc2LCAxMzE5ODEsIDEzMTk4NiwgMTMxOTk3LCAKLSAgICAxMzIwMDUsIDEzMjAxNCwgMTMyMDIzLCAxMzIwMzIsIDEzMjA0MywgMTMyMDUyLCAxMzIwNjEsIDEzMjA3MiwgMTMyMDgzLCAKLSAgICAxMzIwOTQsIDEzMjEwNSwgMTMyMTE2LCAxMzIxMjcsIDEzMjEzNCwgMTMyMTQxLCAxMzIxNDgsIDEzMjE1NSwgMTMyMTY2LCAKLSAgICAxMzIxNzUsIDEzMjE4MiwgMTMyMTg5LCAxMzIxOTYsIDEzMjIwNywgMTMyMjE4LCAxMzIyMjksIDEzMjI0MCwgMTMyMjUxLCAKLSAgICAxMzIyNjIsIDEzMjI3MywgMTMyMjg0LCAxMzIyOTEsIDEzMjI5OCwgMTMyMzA3LCAxMzIzMTYsIDEzMjMyMywgMTMyMzMwLCAKLSAgICAxMzIzMzcsIDEzMjM0NiwgMTMyMzU1LCAxMzIzNjQsIDEzMjM3MSwgMTMyMzgwLCAxMzIzODksIDEzMjM5OCwgMTMyNDA1LCAKLSAgICAxMzI0MTIsIDEzMjQxNywgMTMyNDIzLCAxMzI0MzAsIDEzMjQzNywgMTMyNDQ0LCAxMzI0NTEsIDEzMjQ1OCwgMTMyNDY1LCAKLSAgICAxMzI0NzQsIDEzMjQ4MywgMTMyNDkyLCAxMzI1MDEsIDEzMjUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTMyNTE3LCAxMzI1MjMsIDEzMjUyOCwgMTMyNTMzLCAxMzI1NDAsIDEzMjU0NiwgMTMyNTUyLCAxMzI1NTgsIDEzMjU2NCwgCi0gICAgMTMyNTcwLCAxMzI1NzYsIDEzMjU4MiwgMTMyNTg2LCAxMzI1OTAsIDEzMjU5NiwgMTMyNjAyLCAxMzI2MDgsIDEzMjYxMiwgCi0gICAgMTMyNjE3LCAxMzI2MjIsIDEzMjYyNiwgMTMyNjMwLCAxMzI2MzMsIDEzMjYzOSwgMTMyNjQ1LCAxMzI2NTEsIDEzMjY1NywgCi0gICAgMTMyNjYzLCAxMzI2NjksIDEzMjY3NSwgMTMyNjgxLCAxMzI2ODcsIDEzMjY5NywgMTMyNzA3LCAxMzI3MTMsIDEzMjcxOSwgCi0gICAgMTMyNzI5LCAxMzI3MzksIDEzMjc0NSwgMCwgMCwgMTMyNzUxLCAxMzI3NTksIDEzMjc2NCwgMTMyNzY5LCAxMzI3NzUsIAotICAgIDEzMjc4MSwgMTMyNzg3LCAxMzI3OTMsIDEzMjc5OSwgMTMyODA1LCAxMzI4MTIsIDEzMjgxOSwgMTMyODI1LCAxMzI4MzEsIAotICAgIDEzMjgzNywgMTMyODQzLCAxMzI4NDksIDEzMjg1NSwgMTMyODYxLCAxMzI4NjcsIDEzMjg3MiwgMTMyODc4LCAxMzI4ODQsIAotICAgIDEzMjg5MCwgMTMyODk2LCAxMzI5MDIsIDEzMjkxMSwgMTMyOTE3LCAxMzI5MjIsIDEzMjkzMCwgMTMyOTM3LCAxMzI5NDQsIAotICAgIDEzMjk1MywgMTMyOTYyLCAxMzI5NzEsIDEzMjk4MCwgMTMyOTg5LCAxMzI5OTgsIDEzMzAwNywgMTMzMDE2LCAxMzMwMjYsIAotICAgIDEzMzAzNiwgMTMzMDQ0LCAxMzMwNTIsIDEzMzA2MSwgMTMzMDcwLCAxMzMwNzYsIDEzMzA4MiwgMTMzMDg4LCAxMzMwOTQsIAotICAgIDEzMzEwMiwgMTMzMTEwLCAxMzMxMTQsIDEzMzEyMCwgMTMzMTI1LCAxMzMxMzEsIDEzMzEzNywgMTMzMTQzLCAxMzMxNDksIAotICAgIDEzMzE1NSwgMTMzMTY0LCAxMzMxNjksIDEzMzE3NiwgMTMzMTgxLCAxMzMxODYsIDEzMzE5MSwgMTMzMTk3LCAxMzMyMDMsIAotICAgIDEzMzIwOSwgMTMzMjE2LCAxMzMyMjEsIDEzMzIyNiwgMTMzMjMxLCAxMzMyMzYsIDEzMzI0MSwgMTMzMjQ3LCAxMzMyNTMsIAotICAgIDEzMzI1OSwgMTMzMjY1LCAxMzMyNzEsIDEzMzI3NywgMTMzMjgzLCAxMzMyODksIDEzMzI5NCwgMTMzMjk5LCAxMzMzMDQsIAotICAgIDEzMzMwOSwgMTMzMzE0LCAxMzMzMTksIDEzMzMyNCwgMTMzMzI5LCAxMzMzMzUsIDEzMzM0MSwgMTMzMzQ2LCAxMzMzNTEsIAotICAgIDEzMzM1NiwgMTMzMzYxLCAxMzMzNjYsIDEzMzM3MiwgMTMzMzc5LCAxMzMzODMsIDEzMzM4NywgMTMzMzkxLCAxMzMzOTUsIAotICAgIDEzMzM5OSwgMTMzNDAzLCAxMzM0MDcsIDEzMzQxMSwgMTMzNDE5LCAxMzM0MjksIDEzMzQzMywgMTMzNDM3LCAxMzM0NDMsIAotICAgIDEzMzQ0OSwgMTMzNDU1LCAxMzM0NjEsIDEzMzQ2NywgMTMzNDczLCAxMzM0NzksIDEzMzQ4NSwgMTMzNDkxLCAxMzM0OTcsIAotICAgIDEzMzUwMywgMTMzNTA5LCAxMzM1MTUsIDEzMzUyMSwgMTMzNTI1LCAxMzM1MjksIDEzMzUzNiwgMTMzNTQyLCAxMzM1NDgsIAotICAgIDEzMzU1NCwgMTMzNTU5LCAxMzM1NjYsIDEzMzU3MSwgMTMzNTc3LCAxMzM1ODMsIDEzMzU4OSwgMTMzNTk1LCAxMzM2MDAsIAotICAgIDEzMzYwNCwgMTMzNjEwLCAxMzM2MTQsIDEzMzYxOCwgMTMzNjIyLCAxMzM2MjgsIDEzMzYzNCwgMTMzNjM4LCAxMzM2NDQsIAotICAgIDEzMzY1MCwgMTMzNjU2LCAxMzM2NjIsIDEzMzY2OCwgMTMzNjc2LCAxMzM2ODQsIDEzMzY5MCwgMTMzNjk2LCAxMzM3MDIsIAotICAgIDEzMzcwOCwgMTMzNzIwLCAxMzM3MzIsIDEzMzc0NiwgMTMzNzU4LCAxMzM3NzAsIDEzMzc4NCwgMTMzNzk4LCAxMzM4MTIsIAotICAgIDEzMzgxNiwgMTMzODI0LCAxMzM4MzIsIDEzMzgzNywgMTMzODQxLCAxMzM4NDUsIDEzMzg0OSwgMTMzODUzLCAxMzM4NTcsIAotICAgIDEzMzg2MSwgMTMzODY1LCAxMzM4NzEsIDEzMzg3NywgMTMzODgzLCAxMzM4ODksIDEzMzg5NywgMTMzOTA2LCAxMzM5MTMsIAotICAgIDEzMzkyMCwgMTMzOTI4LCAxMzM5MzUsIDEzMzk0NywgMTMzOTU5LCAxMzM5NzEsIDEzMzk4MywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzOTkwLCAxMzM5OTcsIAotICAgIDEzNDAwNCwgMTM0MDExLCAxMzQwMTgsIDEzNDAyNSwgMTM0MDMyLCAxMzQwMzksIDEzNDA0NiwgMTM0MDUzLCAxMzQwNjAsIAotICAgIDEzNDA2NywgMTM0MDc0LCAxMzQwODEsIDEzNDA4OCwgMTM0MDk1LCAxMzQxMDIsIDEzNDEwOSwgMTM0MTE2LCAxMzQxMjMsIAotICAgIDEzNDEzMCwgMTM0MTM3LCAxMzQxNDQsIDEzNDE1MSwgMTM0MTU4LCAxMzQxNjUsIDEzNDE3MiwgMTM0MTc5LCAxMzQxODYsIAotICAgIDEzNDE5MywgMTM0MjAwLCAxMzQyMDcsIDEzNDIxNCwgMTM0MjIxLCAxMzQyMjgsIDEzNDIzNSwgMTM0MjQyLCAxMzQyNDksIAotICAgIDEzNDI1NiwgMTM0MjYzLCAxMzQyNzAsIDEzNDI3NywgMTM0Mjg0LCAxMzQyOTEsIDEzNDI5OCwgMTM0MzA1LCAxMzQzMTIsIAotICAgIDEzNDMxOSwgMTM0MzI2LCAxMzQzMzMsIDEzNDM0MCwgMTM0MzQ3LCAxMzQzNTQsIDEzNDM2MSwgMTM0MzY4LCAxMzQzNzUsIAotICAgIDEzNDM4MiwgMTM0Mzg5LCAxMzQzOTYsIDEzNDQwMywgMTM0NDEwLCAxMzQ0MTcsIDEzNDQyNCwgMTM0NDMxLCAxMzQ0MzgsIAotICAgIDEzNDQ0NSwgMTM0NDUyLCAxMzQ0NTcsIDEzNDQ2MiwgMTM0NDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzkyNTAsIDEzOTI1NSwgMTM5MjYyLCAxMzkyNjksIDEzOTI3NiwgMTM5MjgzLCAxMzkyODgsIDEzOTI5MywgMTM5MzAwLCAKKyAgICAxMzkzMDUsIDEzOTMxMCwgMTM5MzE3LCAxMzkzMjIsIDEzOTMyNywgMTM5MzMyLCAxMzkzMzksIDEzOTM0OCwgMTM5MzUzLCAKKyAgICAxMzkzNTgsIDEzOTM2MywgMTM5MzY4LCAxMzkzNzMsIDEzOTM3OCwgMTM5Mzg1LCAxMzkzOTAsIDEzOTM5NSwgMTM5NDAwLCAKKyAgICAxMzk0MDUsIDEzOTQxMCwgMTM5NDE1LCAxMzk0MjAsIDEzOTQyNSwgMTM5NDMwLCAxMzk0MzUsIDEzOTQ0MCwgMTM5NDQ1LCAKKyAgICAxMzk0NTEsIDEzOTQ1NiwgMTM5NDYxLCAxMzk0NjYsIDEzOTQ3MSwgMTM5NDc2LCAxMzk0ODEsIDEzOTQ4NiwgMTM5NDkxLCAKKyAgICAxMzk0OTYsIDEzOTUwNSwgMTM5NTEwLCAxMzk1MTksIDEzOTUyNCwgMTM5NTI5LCAxMzk1MzQsIDEzOTUzOSwgMTM5NTQ0LCAKKyAgICAxMzk1NDksIDEzOTU1NCwgMTM5NTYzLCAxMzk1NjgsIDEzOTU3MywgMTM5NTc4LCAxMzk1ODMsIDEzOTU4OCwgMTM5NTk1LCAKKyAgICAxMzk2MDAsIDEzOTYwNywgMTM5NjEyLCAxMzk2MTcsIDEzOTYyMiwgMTM5NjI3LCAxMzk2MzIsIDEzOTYzNywgMTM5NjQyLCAKKyAgICAxMzk2NDcsIDEzOTY1MiwgMTM5NjU3LCAxMzk2NjIsIDEzOTY2NywgMTM5NjcyLCAxMzk2NzcsIDEzOTY4MiwgMTM5Njg3LCAKKyAgICAxMzk2OTIsIDEzOTY5NywgMTM5NzAyLCAxMzk3MTEsIDEzOTcxNiwgMTM5NzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzk3MjYsIDEzOTczNCwgMTM5NzQyLCAxMzk3NTAsIDEzOTc1OCwgMTM5NzY2LCAxMzk3NzQsIDEzOTc4MywgCisgICAgMTM5NzkxLCAxMzk4MDAsIDEzOTgwOCwgMTM5ODE2LCAxMzk4MjQsIDEzOTgzMiwgMTM5ODQwLCAxMzk4NDgsIDEzOTg1NywgCisgICAgMTM5ODY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ0NzEsIDEzNDQ3NiwgMTM0NDgzLCAxMzQ0OTAsIDEzNDQ5NywgMTM0NTA0LCAKLSAgICAxMzQ1MDksIDEzNDUxNCwgMTM0NTIxLCAxMzQ1MjYsIDEzNDUzMSwgMTM0NTM4LCAxMzQ1NDMsIDEzNDU0OCwgMTM0NTUzLCAKLSAgICAxMzQ1NjAsIDEzNDU2OSwgMTM0NTc0LCAxMzQ1NzksIDEzNDU4NCwgMTM0NTg5LCAxMzQ1OTQsIDEzNDU5OSwgMTM0NjA2LCAKLSAgICAxMzQ2MTEsIDEzNDYxNiwgMTM0NjIxLCAxMzQ2MjYsIDEzNDYzMSwgMTM0NjM2LCAxMzQ2NDEsIDEzNDY0NiwgMTM0NjUxLCAKLSAgICAxMzQ2NTYsIDEzNDY2MSwgMTM0NjY2LCAxMzQ2NzIsIDEzNDY3NywgMTM0NjgyLCAxMzQ2ODcsIDEzNDY5MiwgMTM0Njk3LCAKLSAgICAxMzQ3MDIsIDEzNDcwNywgMTM0NzEyLCAxMzQ3MTcsIDEzNDcyNiwgMTM0NzMxLCAxMzQ3NDAsIDEzNDc0NSwgMTM0NzUwLCAKLSAgICAxMzQ3NTUsIDEzNDc2MCwgMTM0NzY1LCAxMzQ3NzAsIDEzNDc3NSwgMTM0Nzg0LCAxMzQ3ODksIDEzNDc5NCwgMTM0Nzk5LCAKLSAgICAxMzQ4MDQsIDEzNDgwOSwgMTM0ODE2LCAxMzQ4MjEsIDEzNDgyOCwgMTM0ODMzLCAxMzQ4MzgsIDEzNDg0MywgMTM0ODQ4LCAKLSAgICAxMzQ4NTMsIDEzNDg1OCwgMTM0ODYzLCAxMzQ4NjgsIDEzNDg3MywgMTM0ODc4LCAxMzQ4ODMsIDEzNDg4OCwgMTM0ODkzLCAKLSAgICAxMzQ4OTgsIDEzNDkwMywgMTM0OTA4LCAxMzQ5MTMsIDEzNDkxOCwgMTM0OTIzLCAxMzQ5MzIsIDEzNDkzNywgMTM0OTQyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ5NDcsIDEzNDk1NSwgMTM0OTYzLCAxMzQ5NzEsIDEzNDk3OSwgCi0gICAgMTM0OTg3LCAxMzQ5OTUsIDEzNTAwNCwgMTM1MDEyLCAxMzUwMjEsIDEzNTAyOSwgMTM1MDM3LCAxMzUwNDUsIDEzNTA1MywgCi0gICAgMTM1MDYxLCAxMzUwNjksIDEzNTA3OCwgMTM1MDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzk4NzQsIDEzOTg3OCwgMTM5ODgzLCAxMzk4ODgsIDEzOTg5MywgMTM5ODk3LCAxMzk5MDIsIDEzOTkwNywgMTM5OTEyLCAKKyAgICAxMzk5MTYsIDEzOTkyMSwgMTM5OTI2LCAxMzk5MzAsIDEzOTkzNSwgMTM5OTQwLCAxMzk5NDQsIDEzOTk0OSwgMTM5OTU0LCAKKyAgICAxMzk5NTgsIDEzOTk2MywgMTM5OTY4LCAxMzk5NzIsIDEzOTk3NywgMTM5OTgyLCAxMzk5ODcsIDEzOTk5MiwgMTM5OTk3LCAKKyAgICAxNDAwMDEsIDE0MDAwNiwgMTQwMDExLCAxNDAwMTYsIDE0MDAyMCwgMTQwMDI1LCAxNDAwMzAsIDE0MDAzNSwgMTQwMDM5LCAKKyAgICAxNDAwNDQsIDE0MDA0OSwgMTQwMDUzLCAxNDAwNTgsIDE0MDA2MywgMTQwMDY3LCAxNDAwNzIsIDE0MDA3NywgMTQwMDgxLCAKKyAgICAxNDAwODYsIDE0MDA5MSwgMTQwMDk1LCAxNDAxMDAsIDE0MDEwNSwgMTQwMTEwLCAxNDAxMTUsIDE0MDEyMCwgMTQwMTI0LCAKKyAgICAxNDAxMjksIDE0MDEzNCwgMTQwMTM5LCAxNDAxNDMsIDE0MDE0OCwgMTQwMTUzLCAxNDAxNTgsIDE0MDE2MiwgMTQwMTY3LCAKKyAgICAxNDAxNzIsIDE0MDE3NiwgMTQwMTgxLCAxNDAxODYsIDE0MDE5MCwgMTQwMTk1LCAxNDAyMDAsIDE0MDIwNCwgMTQwMjA5LCAKKyAgICAxNDAyMTQsIDE0MDIxOCwgMTQwMjIzLCAxNDAyMjgsIDE0MDIzMywgMTQwMjM4LCAxNDAyNDMsIDE0MDI0NywgMTQwMjUyLCAKKyAgICAxNDAyNTcsIDE0MDI2MiwgMTQwMjY2LCAxNDAyNzEsIDAsIDE0MDI3NiwgMTQwMjgwLCAxNDAyODUsIDE0MDI5MCwgCisgICAgMTQwMjk0LCAxNDAyOTksIDE0MDMwNCwgMTQwMzA4LCAxNDAzMTMsIDE0MDMxOCwgMTQwMzIyLCAxNDAzMjcsIDE0MDMzMiwgCisgICAgMTQwMzM2LCAxNDAzNDEsIDE0MDM0NiwgMTQwMzUxLCAxNDAzNTYsIDE0MDM2MSwgMTQwMzY2LCAxNDAzNzIsIDE0MDM3OCwgCisgICAgMTQwMzg0LCAxNDAzODksIDE0MDM5NSwgMTQwNDAxLCAxNDA0MDcsIDE0MDQxMiwgMTQwNDE4LCAxNDA0MjQsIDE0MDQyOSwgCisgICAgMTQwNDM1LCAxNDA0NDEsIDE0MDQ0NiwgMTQwNDUyLCAxNDA0NTgsIDE0MDQ2MywgMTQwNDY5LCAxNDA0NzUsIDE0MDQ4MCwgCisgICAgMTQwNDg2LCAxNDA0OTIsIDE0MDQ5OCwgMTQwNTA0LCAxNDA1MTAsIDE0MDUxNSwgMTQwNTIxLCAxNDA1MjcsIDE0MDUzMywgCisgICAgMTQwNTM4LCAxNDA1NDQsIDE0MDU1MCwgMTQwNTU2LCAxNDA1NjEsIDE0MDU2NywgMTQwNTczLCAxNDA1NzgsIDE0MDU4NCwgCisgICAgMTQwNTkwLCAxNDA1OTUsIDE0MDYwMSwgMTQwNjA3LCAxNDA2MTIsIDE0MDYxOCwgMTQwNjI0LCAxNDA2MjksIDE0MDYzNSwgCisgICAgMTQwNjQxLCAxNDA2NDcsIDE0MDY1MywgMTQwNjU5LCAwLCAxNDA2NjMsIDE0MDY2OCwgMCwgMCwgMTQwNjczLCAwLCAwLCAKKyAgICAxNDA2NzgsIDE0MDY4MywgMCwgMCwgMTQwNjg4LCAxNDA2OTMsIDE0MDY5NywgMTQwNzAyLCAwLCAxNDA3MDcsIDE0MDcxMiwgCisgICAgMTQwNzE3LCAxNDA3MjEsIDE0MDcyNiwgMTQwNzMxLCAxNDA3MzYsIDE0MDc0MSwgMTQwNzQ2LCAxNDA3NTAsIDE0MDc1NSwgCisgICAgMTQwNzYwLCAwLCAxNDA3NjUsIDAsIDE0MDc3MCwgMTQwNzc1LCAxNDA3NzksIDE0MDc4NCwgMTQwNzg5LCAxNDA3OTMsIAorICAgIDE0MDc5OCwgMCwgMTQwODAzLCAxNDA4MDgsIDE0MDgxMywgMTQwODE3LCAxNDA4MjIsIDE0MDgyNywgMTQwODMxLCAKKyAgICAxNDA4MzYsIDE0MDg0MSwgMTQwODQ2LCAxNDA4NTEsIDE0MDg1NiwgMTQwODYxLCAxNDA4NjcsIDE0MDg3MywgMTQwODc5LCAKKyAgICAxNDA4ODQsIDE0MDg5MCwgMTQwODk2LCAxNDA5MDIsIDE0MDkwNywgMTQwOTEzLCAxNDA5MTksIDE0MDkyNCwgMTQwOTMwLCAKKyAgICAxNDA5MzYsIDE0MDk0MSwgMTQwOTQ3LCAxNDA5NTMsIDE0MDk1OCwgMTQwOTY0LCAxNDA5NzAsIDE0MDk3NSwgMTQwOTgxLCAKKyAgICAxNDA5ODcsIDE0MDk5MywgMTQwOTk5LCAxNDEwMDUsIDE0MTAxMCwgMTQxMDE2LCAxNDEwMjIsIDE0MTAyOCwgMTQxMDMzLCAKKyAgICAxNDEwMzksIDE0MTA0NSwgMTQxMDUxLCAxNDEwNTYsIDE0MTA2MiwgMTQxMDY4LCAxNDEwNzMsIDE0MTA3OSwgMTQxMDg1LCAKKyAgICAxNDEwOTAsIDE0MTA5NiwgMTQxMTAyLCAxNDExMDcsIDE0MTExMywgMTQxMTE5LCAxNDExMjQsIDE0MTEzMCwgMTQxMTM2LCAKKyAgICAxNDExNDIsIDE0MTE0OCwgMTQxMTU0LCAxNDExNTgsIDAsIDE0MTE2MywgMTQxMTY4LCAxNDExNzIsIDE0MTE3NywgMCwgMCwgCisgICAgMTQxMTgyLCAxNDExODcsIDE0MTE5MiwgMTQxMTk2LCAxNDEyMDEsIDE0MTIwNiwgMTQxMjEwLCAxNDEyMTUsIDAsIAorICAgIDE0MTIyMCwgMTQxMjI1LCAxNDEyMzAsIDE0MTIzNCwgMTQxMjM5LCAxNDEyNDQsIDE0MTI0OSwgMCwgMTQxMjU0LCAKKyAgICAxNDEyNTgsIDE0MTI2MywgMTQxMjY4LCAxNDEyNzMsIDE0MTI3NywgMTQxMjgyLCAxNDEyODcsIDE0MTI5MiwgMTQxMjk2LCAKKyAgICAxNDEzMDEsIDE0MTMwNiwgMTQxMzEwLCAxNDEzMTUsIDE0MTMyMCwgMTQxMzI0LCAxNDEzMjksIDE0MTMzNCwgMTQxMzM4LCAKKyAgICAxNDEzNDMsIDE0MTM0OCwgMTQxMzUyLCAxNDEzNTcsIDE0MTM2MiwgMTQxMzY3LCAxNDEzNzIsIDE0MTM3NywgMTQxMzgxLCAKKyAgICAwLCAxNDEzODYsIDE0MTM5MSwgMTQxMzk1LCAxNDE0MDAsIDAsIDE0MTQwNSwgMTQxNDA5LCAxNDE0MTQsIDE0MTQxOSwgCisgICAgMTQxNDIzLCAwLCAxNDE0MjgsIDAsIDAsIDAsIDE0MTQzMiwgMTQxNDM3LCAxNDE0NDIsIDE0MTQ0NiwgMTQxNDUxLCAKKyAgICAxNDE0NTYsIDE0MTQ2MSwgMCwgMTQxNDY2LCAxNDE0NzAsIDE0MTQ3NSwgMTQxNDgwLCAxNDE0ODUsIDE0MTQ4OSwgCisgICAgMTQxNDk0LCAxNDE0OTksIDE0MTUwNCwgMTQxNTA4LCAxNDE1MTMsIDE0MTUxOCwgMTQxNTIyLCAxNDE1MjcsIDE0MTUzMiwgCisgICAgMTQxNTM2LCAxNDE1NDEsIDE0MTU0NiwgMTQxNTUwLCAxNDE1NTUsIDE0MTU2MCwgMTQxNTY0LCAxNDE1NjksIDE0MTU3NCwgCisgICAgMTQxNTc5LCAxNDE1ODQsIDE0MTU4OSwgMTQxNTk0LCAxNDE2MDAsIDE0MTYwNiwgMTQxNjEyLCAxNDE2MTcsIDE0MTYyMywgCisgICAgMTQxNjI5LCAxNDE2MzUsIDE0MTY0MCwgMTQxNjQ2LCAxNDE2NTIsIDE0MTY1NywgMTQxNjYzLCAxNDE2NjksIDE0MTY3NCwgCisgICAgMTQxNjgwLCAxNDE2ODYsIDE0MTY5MSwgMTQxNjk3LCAxNDE3MDMsIDE0MTcwOCwgMTQxNzE0LCAxNDE3MjAsIDE0MTcyNiwgCisgICAgMTQxNzMyLCAxNDE3MzgsIDE0MTc0MywgMTQxNzQ5LCAxNDE3NTUsIDE0MTc2MSwgMTQxNzY2LCAxNDE3NzIsIDE0MTc3OCwgCisgICAgMTQxNzg0LCAxNDE3ODksIDE0MTc5NSwgMTQxODAxLCAxNDE4MDYsIDE0MTgxMiwgMTQxODE4LCAxNDE4MjMsIDE0MTgyOSwgCisgICAgMTQxODM1LCAxNDE4NDAsIDE0MTg0NiwgMTQxODUyLCAxNDE4NTcsIDE0MTg2MywgMTQxODY5LCAxNDE4NzUsIDE0MTg4MSwgCisgICAgMTQxODg3LCAxNDE4OTEsIDE0MTg5NiwgMTQxOTAxLCAxNDE5MDYsIDE0MTkxMCwgMTQxOTE1LCAxNDE5MjAsIDE0MTkyNSwgCisgICAgMTQxOTI5LCAxNDE5MzQsIDE0MTkzOSwgMTQxOTQzLCAxNDE5NDgsIDE0MTk1MywgMTQxOTU3LCAxNDE5NjIsIDE0MTk2NywgCisgICAgMTQxOTcxLCAxNDE5NzYsIDE0MTk4MSwgMTQxOTg1LCAxNDE5OTAsIDE0MTk5NSwgMTQyMDAwLCAxNDIwMDUsIDE0MjAxMCwgCisgICAgMTQyMDE0LCAxNDIwMTksIDE0MjAyNCwgMTQyMDI5LCAxNDIwMzMsIDE0MjAzOCwgMTQyMDQzLCAxNDIwNDgsIDE0MjA1MiwgCisgICAgMTQyMDU3LCAxNDIwNjIsIDE0MjA2NiwgMTQyMDcxLCAxNDIwNzYsIDE0MjA4MCwgMTQyMDg1LCAxNDIwOTAsIDE0MjA5NCwgCisgICAgMTQyMDk5LCAxNDIxMDQsIDE0MjEwOCwgMTQyMTEzLCAxNDIxMTgsIDE0MjEyMywgMTQyMTI4LCAxNDIxMzMsIDE0MjEzOCwgCisgICAgMTQyMTQ0LCAxNDIxNTAsIDE0MjE1NiwgMTQyMTYxLCAxNDIxNjcsIDE0MjE3MywgMTQyMTc5LCAxNDIxODQsIDE0MjE5MCwgCisgICAgMTQyMTk2LCAxNDIyMDEsIDE0MjIwNywgMTQyMjEzLCAxNDIyMTgsIDE0MjIyNCwgMTQyMjMwLCAxNDIyMzUsIDE0MjI0MSwgCisgICAgMTQyMjQ3LCAxNDIyNTIsIDE0MjI1OCwgMTQyMjY0LCAxNDIyNzAsIDE0MjI3NiwgMTQyMjgyLCAxNDIyODcsIDE0MjI5MywgCisgICAgMTQyMjk5LCAxNDIzMDUsIDE0MjMxMCwgMTQyMzE2LCAxNDIzMjIsIDE0MjMyOCwgMTQyMzMzLCAxNDIzMzksIDE0MjM0NSwgCisgICAgMTQyMzUwLCAxNDIzNTYsIDE0MjM2MiwgMTQyMzY3LCAxNDIzNzMsIDE0MjM3OSwgMTQyMzg0LCAxNDIzOTAsIDE0MjM5NiwgCisgICAgMTQyNDAxLCAxNDI0MDcsIDE0MjQxMywgMTQyNDE5LCAxNDI0MjUsIDE0MjQzMSwgMTQyNDM2LCAxNDI0NDIsIDE0MjQ0OCwgCisgICAgMTQyNDU0LCAxNDI0NTksIDE0MjQ2NSwgMTQyNDcxLCAxNDI0NzcsIDE0MjQ4MiwgMTQyNDg4LCAxNDI0OTQsIDE0MjQ5OSwgCisgICAgMTQyNTA1LCAxNDI1MTEsIDE0MjUxNiwgMTQyNTIyLCAxNDI1MjgsIDE0MjUzMywgMTQyNTM5LCAxNDI1NDUsIDE0MjU1MCwgCisgICAgMTQyNTU2LCAxNDI1NjIsIDE0MjU2OCwgMTQyNTc0LCAxNDI1ODAsIDE0MjU4NSwgMTQyNTkxLCAxNDI1OTcsIDE0MjYwMywgCisgICAgMTQyNjA4LCAxNDI2MTQsIDE0MjYyMCwgMTQyNjI2LCAxNDI2MzEsIDE0MjYzNywgMTQyNjQzLCAxNDI2NDgsIDE0MjY1NCwgCisgICAgMTQyNjYwLCAxNDI2NjUsIDE0MjY3MSwgMTQyNjc3LCAxNDI2ODIsIDE0MjY4OCwgMTQyNjk0LCAxNDI2OTksIDE0MjcwNSwgCisgICAgMTQyNzExLCAxNDI3MTcsIDE0MjcyMywgMTQyNzI5LCAxNDI3MzUsIDE0Mjc0MiwgMTQyNzQ5LCAxNDI3NTYsIDE0Mjc2MiwgCisgICAgMTQyNzY5LCAxNDI3NzYsIDE0Mjc4MywgMTQyNzg5LCAxNDI3OTYsIDE0MjgwMywgMTQyODA5LCAxNDI4MTYsIDE0MjgyMywgCisgICAgMTQyODI5LCAxNDI4MzYsIDE0Mjg0MywgMTQyODQ5LCAxNDI4NTYsIDE0Mjg2MywgMTQyODY5LCAxNDI4NzYsIDE0Mjg4MywgCisgICAgMTQyODkwLCAxNDI4OTcsIDE0MjkwNCwgMTQyOTEwLCAxNDI5MTcsIDE0MjkyNCwgMTQyOTMxLCAxNDI5MzcsIDE0Mjk0NCwgCisgICAgMTQyOTUxLCAxNDI5NTgsIDE0Mjk2NCwgMTQyOTcxLCAxNDI5NzgsIDE0Mjk4NCwgMTQyOTkxLCAxNDI5OTgsIDE0MzAwNCwgCisgICAgMTQzMDExLCAxNDMwMTgsIDE0MzAyNCwgMTQzMDMxLCAxNDMwMzgsIDE0MzA0NCwgMTQzMDUxLCAxNDMwNTgsIDE0MzA2NSwgCisgICAgMTQzMDcyLCAxNDMwNzksIDE0MzA4NCwgMTQzMDkwLCAxNDMwOTYsIDE0MzEwMiwgMTQzMTA3LCAxNDMxMTMsIDE0MzExOSwgCisgICAgMTQzMTI1LCAxNDMxMzAsIDE0MzEzNiwgMTQzMTQyLCAxNDMxNDcsIDE0MzE1MywgMTQzMTU5LCAxNDMxNjQsIDE0MzE3MCwgCisgICAgMTQzMTc2LCAxNDMxODEsIDE0MzE4NywgMTQzMTkzLCAxNDMxOTgsIDE0MzIwNCwgMTQzMjEwLCAxNDMyMTYsIDE0MzIyMiwgCisgICAgMTQzMjI4LCAxNDMyMzMsIDE0MzIzOSwgMTQzMjQ1LCAxNDMyNTEsIDE0MzI1NiwgMTQzMjYyLCAxNDMyNjgsIDE0MzI3NCwgCisgICAgMTQzMjc5LCAxNDMyODUsIDE0MzI5MSwgMTQzMjk2LCAxNDMzMDIsIDE0MzMwOCwgMTQzMzEzLCAxNDMzMTksIDE0MzMyNSwgCisgICAgMTQzMzMwLCAxNDMzMzYsIDE0MzM0MiwgMTQzMzQ3LCAxNDMzNTMsIDE0MzM1OSwgMTQzMzY1LCAxNDMzNzEsIDE0MzM3NywgCisgICAgMTQzMzgzLCAwLCAwLCAxNDMzOTAsIDE0MzM5NSwgMTQzNDAwLCAxNDM0MDUsIDE0MzQxMCwgMTQzNDE1LCAxNDM0MjAsIAorICAgIDE0MzQyNSwgMTQzNDMwLCAxNDM0MzUsIDE0MzQ0MCwgMTQzNDQ1LCAxNDM0NTAsIDE0MzQ1NSwgMTQzNDYwLCAxNDM0NjUsIAorICAgIDE0MzQ3MCwgMTQzNDc1LCAxNDM0ODEsIDE0MzQ4NiwgMTQzNDkxLCAxNDM0OTYsIDE0MzUwMSwgMTQzNTA2LCAxNDM1MTEsIAorICAgIDE0MzUxNiwgMTQzNTIwLCAxNDM1MjUsIDE0MzUzMCwgMTQzNTM1LCAxNDM1NDAsIDE0MzU0NSwgMTQzNTUwLCAxNDM1NTUsIAorICAgIDE0MzU2MCwgMTQzNTY1LCAxNDM1NzAsIDE0MzU3NSwgMTQzNTgwLCAxNDM1ODUsIDE0MzU5MCwgMTQzNTk1LCAxNDM2MDAsIAorICAgIDE0MzYwNSwgMTQzNjExLCAxNDM2MTYsIDE0MzYyMSwgMTQzNjI2LCAxNDM2MzEsIDE0MzYzNiwgMTQzNjQxLCAxNDM2NDYsIAorICAgIDE0MzY1MiwgMTQzNjU3LCAxNDM2NjIsIDE0MzY2NywgMTQzNjcyLCAxNDM2NzcsIDE0MzY4MiwgMTQzNjg3LCAxNDM2OTIsIAorICAgIDE0MzY5NywgMTQzNzAyLCAxNDM3MDcsIDE0MzcxMiwgMTQzNzE3LCAxNDM3MjIsIDE0MzcyNywgMTQzNzMyLCAxNDM3MzcsIAorICAgIDE0Mzc0MiwgMTQzNzQ3LCAxNDM3NTIsIDE0Mzc1NywgMTQzNzYyLCAxNDM3NjcsIDE0Mzc3MywgMTQzNzc4LCAxNDM3ODMsIAorICAgIDE0Mzc4OCwgMTQzNzkzLCAxNDM3OTgsIDE0MzgwMywgMTQzODA4LCAxNDM4MTIsIDE0MzgxNywgMTQzODIyLCAxNDM4MjcsIAorICAgIDE0MzgzMiwgMTQzODM3LCAxNDM4NDIsIDE0Mzg0NywgMTQzODUyLCAxNDM4NTcsIDE0Mzg2MiwgMTQzODY3LCAxNDM4NzIsIAorICAgIDE0Mzg3NywgMTQzODgyLCAxNDM4ODcsIDE0Mzg5MiwgMTQzODk3LCAxNDM5MDMsIDE0MzkwOCwgMTQzOTEzLCAxNDM5MTgsIAorICAgIDE0MzkyMywgMTQzOTI4LCAxNDM5MzMsIDE0MzkzOCwgMTQzOTQ0LCAxNDM5NDksIDE0Mzk1NCwgMTQzOTU5LCAxNDM5NjQsIAorICAgIDE0Mzk2OSwgMTQzOTc0LCAxNDM5ODAsIDE0Mzk4NiwgMTQzOTkyLCAxNDM5OTgsIDE0NDAwNCwgMTQ0MDEwLCAxNDQwMTYsIAorICAgIDE0NDAyMiwgMTQ0MDI4LCAxNDQwMzQsIDE0NDA0MCwgMTQ0MDQ2LCAxNDQwNTIsIDE0NDA1OCwgMTQ0MDY0LCAxNDQwNzAsIAorICAgIDE0NDA3NiwgMTQ0MDgzLCAxNDQwODksIDE0NDA5NSwgMTQ0MTAxLCAxNDQxMDcsIDE0NDExMywgMTQ0MTE5LCAxNDQxMjUsIAorICAgIDE0NDEzMCwgMTQ0MTM2LCAxNDQxNDIsIDE0NDE0OCwgMTQ0MTU0LCAxNDQxNjAsIDE0NDE2NiwgMTQ0MTcyLCAxNDQxNzgsIAorICAgIDE0NDE4NCwgMTQ0MTkwLCAxNDQxOTYsIDE0NDIwMiwgMTQ0MjA4LCAxNDQyMTQsIDE0NDIyMCwgMTQ0MjI2LCAxNDQyMzIsIAorICAgIDE0NDIzOSwgMTQ0MjQ1LCAxNDQyNTEsIDE0NDI1NywgMTQ0MjYzLCAxNDQyNjksIDE0NDI3NSwgMTQ0MjgxLCAxNDQyODgsIAorICAgIDE0NDI5NCwgMTQ0MzAwLCAxNDQzMDYsIDE0NDMxMiwgMTQ0MzE4LCAxNDQzMjQsIDE0NDMzMCwgMTQ0MzM2LCAxNDQzNDIsIAorICAgIDE0NDM0OCwgMTQ0MzU0LCAxNDQzNjAsIDE0NDM2NiwgMTQ0MzcyLCAxNDQzNzgsIDE0NDM4NCwgMTQ0MzkwLCAxNDQzOTYsIAorICAgIDE0NDQwMiwgMTQ0NDA4LCAxNDQ0MTQsIDE0NDQyMCwgMTQ0NDI2LCAxNDQ0MzMsIDE0NDQzOSwgMTQ0NDQ1LCAxNDQ0NTEsIAorICAgIDE0NDQ1NywgMTQ0NDYzLCAxNDQ0NjksIDE0NDQ3NSwgMTQ0NDgwLCAxNDQ0ODYsIDE0NDQ5MiwgMTQ0NDk4LCAxNDQ1MDQsIAorICAgIDE0NDUxMCwgMTQ0NTE2LCAxNDQ1MjIsIDE0NDUyOCwgMTQ0NTM0LCAxNDQ1NDAsIDE0NDU0NiwgMTQ0NTUyLCAxNDQ1NTgsIAorICAgIDE0NDU2NCwgMTQ0NTcwLCAxNDQ1NzYsIDE0NDU4MiwgMTQ0NTg5LCAxNDQ1OTUsIDE0NDYwMSwgMTQ0NjA3LCAxNDQ2MTMsIAorICAgIDE0NDYxOSwgMTQ0NjI1LCAxNDQ2MzEsIDE0NDYzOCwgMTQ0NjQ0LCAxNDQ2NTAsIDE0NDY1NiwgMTQ0NjYyLCAxNDQ2NjgsIAorICAgIDE0NDY3NCwgMTQ0NjgxLCAxNDQ2ODgsIDE0NDY5NSwgMTQ0NzAyLCAxNDQ3MDksIDE0NDcxNiwgMTQ0NzIzLCAxNDQ3MzAsIAorICAgIDE0NDczNywgMTQ0NzQ0LCAxNDQ3NTEsIDE0NDc1OCwgMTQ0NzY1LCAxNDQ3NzIsIDE0NDc3OSwgMTQ0Nzg2LCAxNDQ3OTMsIAorICAgIDE0NDgwMSwgMTQ0ODA4LCAxNDQ4MTUsIDE0NDgyMiwgMTQ0ODI5LCAxNDQ4MzYsIDE0NDg0MywgMTQ0ODUwLCAxNDQ4NTYsIAorICAgIDE0NDg2MywgMTQ0ODcwLCAxNDQ4NzcsIDE0NDg4NCwgMTQ0ODkxLCAxNDQ4OTgsIDE0NDkwNSwgMTQ0OTEyLCAxNDQ5MTksIAorICAgIDE0NDkyNiwgMTQ0OTMzLCAxNDQ5NDAsIDE0NDk0NywgMTQ0OTU0LCAxNDQ5NjEsIDE0NDk2OCwgMTQ0OTc1LCAxNDQ5ODMsIAorICAgIDE0NDk5MCwgMTQ0OTk3LCAxNDUwMDQsIDE0NTAxMSwgMTQ1MDE4LCAxNDUwMjUsIDE0NTAzMiwgMTQ1MDQwLCAxNDUwNDcsIAorICAgIDE0NTA1NCwgMTQ1MDYxLCAxNDUwNjgsIDE0NTA3NSwgMTQ1MDgyLCAxNDUwODcsIDAsIDAsIDE0NTA5MiwgMTQ1MDk3LCAKKyAgICAxNDUxMDEsIDE0NTEwNSwgMTQ1MTA5LCAxNDUxMTMsIDE0NTExNywgMTQ1MTIxLCAxNDUxMjYsIDE0NTEzMCwgMTQ1MTM1LCAKKyAgICAxNDUxNDAsIDE0NTE0NCwgMTQ1MTQ4LCAxNDUxNTIsIDE0NTE1NiwgMTQ1MTYwLCAxNDUxNjQsIDE0NTE2OSwgMTQ1MTczLCAKKyAgICAxNDUxNzgsIDE0NTE4MywgMTQ1MTg3LCAxNDUxOTEsIDE0NTE5NSwgMTQ1MTk5LCAxNDUyMDMsIDE0NTIwNywgMTQ1MjEyLCAKKyAgICAxNDUyMTYsIDE0NTIyMSwgMTQ1MjI3LCAxNDUyMzIsIDE0NTIzNywgMTQ1MjQyLCAxNDUyNDcsIDE0NTI1MiwgMTQ1MjU3LCAKKyAgICAxNDUyNjMsIDE0NTI2OCwgMTQ1Mjc0LCAxNDUyODAsIDE0NTI4NSwgMTQ1MjkwLCAxNDUyOTUsIDE0NTMwMCwgMTQ1MzA1LCAKKyAgICAxNDUzMTAsIDE0NTMxNiwgMTQ1MzIxLCAxNDUzMjcsIDE0NTMzMSwgMTQ1MzM2LCAxNDUzNDEsIDE0NTM0NiwgMTQ1MzUxLCAKKyAgICAxNDUzNTYsIDE0NTM2MSwgMTQ1MzY3LCAxNDUzNzUsIDE0NTM4MiwgMTQ1Mzg3LCAxNDUzOTIsIDE0NTM5OSwgMTQ1NDA1LCAKKyAgICAxNDU0MTAsIDE0NTQxNiwgMTQ1NDIyLCAxNDU0MzAsIDE0NTQzNiwgMTQ1NDQzLCAxNDU0NTEsIDE0NTQ1NywgMTQ1NDY2LCAKKyAgICAxNDU0NzUsIDE0NTQ4MywgMTQ1NDkxLCAxNDU0OTcsIDE0NTUwNCwgMTQ1NTEyLCAxNDU1MjAsIDE0NTUyNiwgMTQ1NTMzLCAKKyAgICAxNDU1NDIsIDE0NTU1MSwgMTQ1NTU4LCAxNDU1NjksIDE0NTU3OSwgMTQ1NTg5LCAxNDU1OTksIDE0NTYwOSwgMTQ1NjE2LCAKKyAgICAxNDU2MjMsIDE0NTYzMCwgMTQ1NjM3LCAxNDU2NDYsIDE0NTY1NSwgMTQ1NjY2LCAxNDU2NzcsIDE0NTY4NiwgMTQ1Njk1LCAKKyAgICAxNDU3MDYsIDE0NTcxNSwgMTQ1NzI0LCAxNDU3MzUsIDE0NTc0NCwgMTQ1NzUzLCAxNDU3NjEsIDE0NTc2OSwgMTQ1NzgwLCAKKyAgICAxNDU3OTEsIDE0NTc5OSwgMTQ1ODA4LCAxNDU4MTcsIDE0NTgyNCwgMTQ1ODM1LCAxNDU4NDYsIDE0NTg1NSwgMTQ1ODY0LCAKKyAgICAxNDU4NzEsIDE0NTg4MCwgMTQ1ODg5LCAxNDU4OTgsIDE0NTkwOSwgMTQ1OTE4LCAxNDU5MjgsIDE0NTkzNywgMTQ1OTQ2LCAKKyAgICAxNDU5NTcsIDE0NTk3MCwgMTQ1OTg1LCAxNDU5OTYsIDE0NjAwOSwgMTQ2MDIxLCAxNDYwMzAsIDE0NjA0MSwgMTQ2MDUyLCAKKyAgICAxNDYwNjEsIDE0NjA3MiwgMTQ2MDg2LCAxNDYxMDEsIDE0NjEwNCwgMTQ2MTEzLCAxNDYxMTgsIDE0NjEyNCwgMTQ2MTMyLCAKKyAgICAxNDYxMzgsIDE0NjE0NCwgMTQ2MTUzLCAxNDYxNjAsIDE0NjE3MCwgMTQ2MTgyLCAxNDYxODksIDE0NjE5MiwgMTQ2MTk4LCAKKyAgICAxNDYyMDUsIDE0NjIxMSwgMTQ2MjE2LCAxNDYyMTksIDE0NjIyNCwgMTQ2MjI3LCAxNDYyMzQsIDE0NjI0MCwgMTQ2MjQ4LCAKKyAgICAxNDYyNTUsIDE0NjI2MiwgMTQ2MjY4LCAxNDYyNzMsIDE0NjI3NiwgMTQ2Mjc5LCAxNDYyODIsIDE0NjI4OCwgMTQ2Mjk1LCAKKyAgICAxNDYzMDEsIDE0NjMwNiwgMTQ2MzEzLCAxNDYzMTYsIDE0NjMyMSwgMTQ2MzI4LCAxNDYzMzQsIDE0NjM0MiwgMTQ2MzQ5LCAKKyAgICAxNDYzNTksIDE0NjM2OCwgMTQ2MzcxLCAxNDYzNzcsIDE0NjM4NCwgMTQ2MzkxLCAxNDYzOTgsIDE0NjQwMywgMTQ2NDExLCAKKyAgICAxNDY0MTksIDE0NjQyOCwgMTQ2NDM0LCAxNDY0NDMsIDE0NjQ1MiwgMTQ2NDYxLCAxNDY0NjcsIDE0NjQ3NiwgMTQ2NDgzLCAKKyAgICAxNDY0OTAsIDE0NjQ5NywgMTQ2NTA1LCAxNDY1MTEsIDE0NjUxOSwgMTQ2NTI1LCAxNDY1MzIsIDE0NjUzOSwgMTQ2NTQ3LCAKKyAgICAxNDY1NTgsIDE0NjU2OCwgMTQ2NTc0LCAxNDY1ODEsIDE0NjU4OCwgMTQ2NTk1LCAxNDY2MDEsIDE0NjYwOCwgMTQ2NjE1LCAKKyAgICAxNDY2MjAsIDE0NjYyNywgMTQ2NjM1LCAxNDY2NDQsIDE0NjY1MCwgMTQ2NjYyLCAxNDY2NzMsIDE0NjY3OSwgMTQ2Njg3LCAKKyAgICAxNDY2OTMsIDE0NjcwMCwgMTQ2NzA3LCAxNDY3MTQsIDE0NjcyMCwgMTQ2NzI3LCAxNDY3MzYsIDE0Njc0MiwgMTQ2NzQ4LCAKKyAgICAxNDY3NTUsIDE0Njc2MiwgMTQ2NzcwLCAxNDY3ODAsIDE0Njc5MCwgMTQ2ODAwLCAxNDY4MTAsIDE0NjgxOCwgMTQ2ODI2LCAKKyAgICAxNDY4MzYsIDE0Njg0NCwgMTQ2ODQ5LCAxNDY4NTQsIDE0Njg1OSwgMTQ2ODY1LCAxNDY4NzIsIDE0Njg3OSwgMTQ2ODg1LCAKKyAgICAxNDY4OTEsIDE0Njg5NiwgMTQ2OTAzLCAxNDY5MTEsIDE0NjkyMSwgMTQ2OTI5LCAxNDY5MzcsIDE0Njk0NywgMTQ2OTU3LCAKKyAgICAxNDY5NjUsIDE0Njk3NSwgMTQ2OTg1LCAxNDY5OTcsIDE0NzAwOSwgMTQ3MDIxLCAxNDcwMzEsIDE0NzAzNywgMTQ3MDQzLCAKKyAgICAxNDcwNTAsIDE0NzA1OSwgMTQ3MDY4LCAxNDcwNzcsIDE0NzA4NiwgMTQ3MDk2LCAxNDcxMDUsIDE0NzExNCwgMTQ3MTIzLCAKKyAgICAxNDcxMjgsIDE0NzEzNCwgMTQ3MTQzLCAxNDcxNTMsIDE0NzE2MiwgMTQ3MTY4LCAxNDcxNzQsIDE0NzE4MSwgMTQ3MTg4LCAKKyAgICAxNDcxOTUsIDE0NzIwMSwgMTQ3MjA4LCAxNDcyMTUsIDE0NzIyMiwgMTQ3MjI4LCAxNDcyMzIsIDE0NzIzNywgMTQ3MjQ0LCAKKyAgICAxNDcyNTEsIDE0NzI1OCwgMTQ3MjYzLCAxNDcyNzEsIDE0NzI3OSwgMTQ3Mjg4LCAxNDcyOTYsIDE0NzMwMywgMTQ3MzExLCAKKyAgICAxNDczMjAsIDE0NzMzMCwgMTQ3MzMzLCAxNDczMzcsIDE0NzM0MiwgMTQ3MzQ3LCAxNDczNTIsIDE0NzM1NywgMTQ3MzYyLCAKKyAgICAxNDczNjcsIDE0NzM3MiwgMTQ3Mzc3LCAxNDczODIsIDE0NzM4NywgMTQ3MzkyLCAxNDczOTcsIDE0NzQwMiwgMTQ3NDA3LCAKKyAgICAxNDc0MTIsIDE0NzQxNywgMTQ3NDIyLCAxNDc0MjksIDE0NzQzNSwgMTQ3NDQyLCAxNDc0NDgsIDE0NzQ1MywgMTQ3NDYwLCAKKyAgICAxNDc0NjYsIDE0NzQ3MywgMTQ3NDc5LCAxNDc0ODQsIDE0NzQ5MSwgMTQ3NDk4LCAxNDc1MDUsIDE0NzUxMSwgMTQ3NTE3LCAKKyAgICAxNDc1MjYsIDE0NzUzNSwgMTQ3NTQ2LCAxNDc1NTMsIDE0NzU2MCwgMTQ3NTY5LCAxNDc1NzgsIDE0NzU4NywgMTQ3NTk2LCAKKyAgICAxNDc2MDUsIDE0NzYxMSwgMTQ3NjE5LCAxNDc2MjUsIDE0NzYzNSwgMTQ3NjQwLCAxNDc2NDksIDE0NzY1OCwgMTQ3NjY1LCAKKyAgICAxNDc2NzYsIDE0NzY4MywgMTQ3NjkwLCAxNDc2OTcsIDE0NzcwNCwgMTQ3NzExLCAxNDc3MTgsIDE0NzcyNSwgMTQ3NzMyLCAKKyAgICAxNDc3MzksIDE0Nzc0NiwgMTQ3NzUyLCAxNDc3NTgsIDE0Nzc2NCwgMTQ3NzcxLCAxNDc3NzgsIDE0Nzc4NSwgMTQ3NzkyLCAKKyAgICAxNDc3OTksIDE0NzgwNiwgMTQ3ODEzLCAxNDc4MjAsIDE0NzgyNywgMTQ3ODM0LCAxNDc4NDEsIDE0Nzg0OCwgMTQ3ODUzLCAKKyAgICAxNDc4NjIsIDE0Nzg3MSwgMTQ3ODgwLCAxNDc4ODcsIDE0Nzg5NCwgMTQ3OTAxLCAxNDc5MDgsIDE0NzkxNSwgMTQ3OTIyLCAKKyAgICAxNDc5MjksIDE0NzkzNiwgMTQ3OTQ1LCAxNDc5NTQsIDE0Nzk2MywgMTQ3OTcyLCAxNDc5ODEsIDE0Nzk5MCwgMTQ3OTk5LCAKKyAgICAxNDgwMDgsIDE0ODAxNywgMTQ4MDI2LCAxNDgwMzUsIDE0ODA0NCwgMTQ4MDUzLCAxNDgwNTksIDE0ODA2NywgMTQ4MDczLCAKKyAgICAxNDgwODMsIDE0ODA4OCwgMTQ4MDk3LCAxNDgxMDYsIDE0ODExNSwgMTQ4MTI2LCAxNDgxMzEsIDE0ODEzOCwgMTQ4MTQ1LCAKKyAgICAxNDgxNTIsIDE0ODE1NywgMTQ4MTYzLCAxNDgxNjksIDE0ODE3NSwgMTQ4MTgyLCAxNDgxODksIDE0ODE5NiwgMTQ4MjAzLCAKKyAgICAxNDgyMTAsIDE0ODIxNywgMTQ4MjI0LCAxNDgyMzEsIDE0ODIzOCwgMTQ4MjQ1LCAxNDgyNTIsIDE0ODI1OSwgMTQ4MjY0LCAKKyAgICAxNDgyNzMsIDE0ODI4MiwgMTQ4MjkxLCAxNDgzMDAsIDE0ODMwOSwgMTQ4MzE4LCAxNDgzMjcsIDE0ODMzNiwgMTQ4MzQ3LCAKKyAgICAxNDgzNTgsIDE0ODM2NSwgMTQ4MzcyLCAxNDgzNzksIDE0ODM4NiwgMTQ4MzkzLCAxNDg0MDAsIDE0ODQwOCwgMTQ4NDE4LCAKKyAgICAxNDg0MjgsIDE0ODQzOCwgMTQ4NDQ5LCAxNDg0NjAsIDE0ODQ3MSwgMTQ4NDgwLCAxNDg0ODksIDE0ODQ5OCwgMTQ4NTAzLCAKKyAgICAxNDg1MDgsIDE0ODUxMywgMTQ4NTE4LCAxNDg1MjksIDE0ODU0MCwgMTQ4NTUxLCAxNDg1NjIsIDE0ODU3MywgMTQ4NTgzLCAKKyAgICAxNDg1OTQsIDE0ODYwMywgMTQ4NjEyLCAxNDg2MjEsIDE0ODYzMCwgMTQ4NjM5LCAxNDg2NDcsIDE0ODY1NiwgMTQ4NjY3LCAKKyAgICAxNDg2NzgsIDE0ODY4OSwgMTQ4NzAwLCAxNDg3MTEsIDE0ODcyMywgMTQ4NzM2LCAxNDg3NDgsIDE0ODc2MSwgMTQ4NzczLCAKKyAgICAxNDg3ODYsIDE0ODc5OCwgMTQ4ODExLCAxNDg4MjIsIDE0ODgzMywgMTQ4ODQyLCAxNDg4NTAsIDE0ODg1OSwgMTQ4ODcwLCAKKyAgICAxNDg4ODEsIDE0ODg5MywgMTQ4OTA2LCAxNDg5MjAsIDE0ODkzNSwgMTQ4OTQ3LCAxNDg5NjAsIDE0ODk3MiwgMTQ4OTg1LCAKKyAgICAxNDg5OTYsIDE0OTAwNywgMTQ5MDE2LCAxNDkwMjQsIDE0OTAzMywgMTQ5MDQwLCAxNDkwNDcsIDE0OTA1NCwgMTQ5MDYxLCAKKyAgICAxNDkwNjgsIDE0OTA3NSwgMTQ5MDgyLCAxNDkwODksIDE0OTA5NiwgMTQ5MTAzLCAxNDkxMDgsIDE0OTExMywgMTQ5MTE4LCAKKyAgICAxNDkxMjUsIDE0OTEzNSwgMTQ5MTQ2LCAxNDkxNTYsIDE0OTE2NywgMTQ5MTgxLCAxNDkxOTYsIDE0OTIxMSwgMTQ5MjI1LCAKKyAgICAxNDkyNDAsIDE0OTI1NSwgMTQ5MjY2LCAxNDkyNzcsIDE0OTI5MCwgMTQ5MzAzLCAxNDkzMTIsIDE0OTMyMSwgMTQ5MzM0LCAKKyAgICAxNDkzNDcsIDE0OTM1NCwgMTQ5MzYxLCAxNDkzNjYsIDE0OTM3MSwgMTQ5Mzc2LCAxNDkzODEsIDE0OTM4NiwgMTQ5MzkzLCAKKyAgICAxNDk0MDIsIDE0OTQwNywgMTQ5NDEwLCAxNDk0MTUsIDE0OTQyMiwgMTQ5NDI5LCAxNDk0MzYsIDE0OTQ0MywgMTQ5NDUwLCAKKyAgICAxNDk0NTcsIDE0OTQ3MCwgMTQ5NDg0LCAxNDk0OTksIDE0OTUwNiwgMTQ5NTEzLCAxNDk1MjAsIDE0OTUyOSwgMTQ5NTM3LCAKKyAgICAxNDk1NDUsIDE0OTU1NCwgMTQ5NTU5LCAxNDk1NjQsIDE0OTU2OSwgMTQ5NTc0LCAxNDk1NzksIDE0OTU4NCwgMTQ5NTkxLCAKKyAgICAxNDk1OTgsIDE0OTYwNCwgMTQ5NjExLCAxNDk2MTcsIDE0OTYyNCwgMTQ5NjI5LCAxNDk2MzQsIDE0OTYzOSwgMTQ5NjQ0LCAKKyAgICAxNDk2NDksIDE0OTY1NiwgMTQ5NjYzLCAxNDk2NjgsIDE0OTY3NSwgMTQ5NjgyLCAxNDk2ODcsIDE0OTY5MiwgMTQ5Njk3LCAKKyAgICAxNDk3MDIsIDE0OTcwNywgMTQ5NzEyLCAxNDk3MTksIDE0OTcyNiwgMTQ5NzMzLCAxNDk3MzYsIDE0OTc0MSwgMTQ5NzQ2LCAKKyAgICAxNDk3NTEsIDE0OTc1NiwgMTQ5NzYzLCAxNDk3NzAsIDE0OTc3OCwgMTQ5Nzg2LCAxNDk3OTEsIDE0OTc5NiwgMTQ5ODAzLCAKKyAgICAxNDk4MTAsIDE0OTgxNywgMTQ5ODIyLCAxNDk4MjksIDE0OTgzNiwgMTQ5ODQxLCAxNDk4NDgsIDE0OTg1NSwgMTQ5ODYxLCAKKyAgICAxNDk4NjcsIDE0OTg3MywgMTQ5ODc5LCAxNDk4ODcsIDE0OTg5NSwgMTQ5OTAxLCAxNDk5MDksIDE0OTkxNywgMTQ5OTIyLCAKKyAgICAxNDk5MjksIDE0OTkzNiwgMTQ5OTQxLCAxNDk5NDgsIDE0OTk1NSwgMTQ5OTYyLCAxNDk5NzAsIDE0OTk3OCwgMTQ5OTgzLCAKKyAgICAxNDk5OTAsIDE0OTk5NywgMTUwMDA2LCAxNTAwMTMsIDE1MDAyMiwgMTUwMDMzLCAxNTAwNDIsIDE1MDA1MSwgMTUwMDYwLCAKKyAgICAxNTAwNjksIDE1MDA3MiwgMTUwMDc3LCAxNTAwODQsIDE1MDA5MywgMTUwMTAwLCAxNTAxMDksIDE1MDExNiwgMTUwMTIxLCAKKyAgICAxNTAxMjYsIDE1MDEyOSwgMTUwMTMyLCAxNTAxMzUsIDE1MDE0MiwgMTUwMTQ5LCAxNTAxNTgsIDE1MDE2NywgMTUwMTc2LCAKKyAgICAxNTAxODMsIDE1MDE5MCwgMTUwMTk1LCAxNTAyMDgsIDE1MDIxMywgMTUwMjE4LCAxNTAyMjMsIDE1MDIyOCwgMTUwMjMzLCAKKyAgICAxNTAyMzgsIDE1MDI0MywgMTUwMjQ4LCAxNTAyNTEsIDE1MDI1NiwgMTUwMjYxLCAxNTAyNjYsIDE1MDI3MSwgMTUwMjc2LCAKKyAgICAxNTAyODMsIDE1MDI4OCwgMTUwMjk1LCAxNTAyOTgsIDE1MDMwMywgMTUwMzA2LCAxNTAzMDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDMxMiwgMTUwMzE3LCAxNTAzMjIsIDE1MDMyNywgMTUwMzMyLCAwLCAKKyAgICAxNTAzMzcsIDE1MDM0MiwgMTUwMzQ3LCAxNTAzNTIsIDE1MDM1NywgMTUwMzYyLCAxNTAzNjcsIDE1MDM3MiwgMTUwMzc3LCAKKyAgICAxNTAzODIsIDE1MDM4NywgMTUwMzkyLCAxNTAzOTcsIDE1MDQwMiwgMTUwNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTA0MTIsIDE1MDQxNywgMTUwNDIyLCAxNTA0MjcsIDE1MDQzMiwgMTUwNDM3LCAxNTA0NDIsIDAsIDE1MDQ0NywgCisgICAgMTUwNDUyLCAxNTA0NTcsIDE1MDQ2MywgMTUwNDY3LCAxNTA0NzIsIDE1MDQ3NywgMTUwNDgyLCAxNTA0ODcsIDE1MDQ5MiwgCisgICAgMTUwNDk3LCAxNTA1MDIsIDE1MDUwNywgMTUwNTEyLCAxNTA1MTcsIDE1MDUyMiwgMTUwNTI3LCAwLCAwLCAxNTA1MzIsIAorICAgIDE1MDUzNywgMTUwNTQyLCAxNTA1NDcsIDE1MDU1MiwgMTUwNTU3LCAxNTA1NjIsIDAsIDE1MDU2NywgMTUwNTcyLCAwLCAKKyAgICAxNTA1NzgsIDE1MDU4MywgMTUwNTkxLCAxNTA1OTgsIDE1MDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1MDk1LCAxMzUwOTksIDEzNTEwNCwgMTM1MTA5LCAxMzUxMTQsIDEzNTExOCwgCi0gICAgMTM1MTIzLCAxMzUxMjgsIDEzNTEzMywgMTM1MTM3LCAxMzUxNDIsIDEzNTE0NywgMTM1MTUxLCAxMzUxNTYsIDEzNTE2MSwgCi0gICAgMTM1MTY1LCAxMzUxNzAsIDEzNTE3NSwgMTM1MTc5LCAxMzUxODMsIDEzNTE4OCwgMTM1MTkyLCAxMzUxOTcsIDEzNTIwMiwgCi0gICAgMTM1MjA3LCAxMzUyMTIsIDEzNTIxNywgMTM1MjIxLCAxMzUyMjYsIDEzNTIzMSwgMTM1MjM2LCAxMzUyNDAsIDEzNTI0NSwgCi0gICAgMTM1MjUwLCAxMzUyNTUsIDEzNTI1OSwgMTM1MjY0LCAxMzUyNjksIDEzNTI3MywgMTM1Mjc4LCAxMzUyODMsIDEzNTI4NywgCi0gICAgMTM1MjkyLCAxMzUyOTcsIDEzNTMwMSwgMTM1MzA1LCAxMzUzMTAsIDEzNTMxNCwgMTM1MzE5LCAxMzUzMjQsIDEzNTMyOSwgCi0gICAgMTM1MzM0LCAxMzUzMzksIDEzNTM0MywgMTM1MzQ4LCAxMzUzNTMsIDEzNTM1OCwgMTM1MzYyLCAxMzUzNjcsIDEzNTM3MiwgCi0gICAgMTM1Mzc3LCAxMzUzODEsIDEzNTM4NiwgMTM1MzkxLCAxMzUzOTUsIDEzNTQwMCwgMTM1NDA1LCAxMzU0MDksIDEzNTQxNCwgCi0gICAgMTM1NDE5LCAxMzU0MjMsIDEzNTQyNywgMTM1NDMyLCAxMzU0MzYsIDEzNTQ0MSwgMTM1NDQ2LCAxMzU0NTEsIDEzNTQ1NiwgCi0gICAgMTM1NDYxLCAxMzU0NjUsIDEzNTQ3MCwgMTM1NDc1LCAxMzU0ODAsIDEzNTQ4NCwgMTM1NDg5LCAwLCAxMzU0OTQsIAotICAgIDEzNTQ5OCwgMTM1NTAzLCAxMzU1MDgsIDEzNTUxMiwgMTM1NTE3LCAxMzU1MjIsIDEzNTUyNiwgMTM1NTMxLCAxMzU1MzYsIAotICAgIDEzNTU0MCwgMTM1NTQ0LCAxMzU1NDksIDEzNTU1MywgMTM1NTU4LCAxMzU1NjMsIDEzNTU2OCwgMTM1NTczLCAxMzU1NzgsIAotICAgIDEzNTU4MywgMTM1NTg5LCAxMzU1OTUsIDEzNTYwMSwgMTM1NjA2LCAxMzU2MTIsIDEzNTYxOCwgMTM1NjI0LCAxMzU2MjksIAotICAgIDEzNTYzNSwgMTM1NjQxLCAxMzU2NDYsIDEzNTY1MiwgMTM1NjU4LCAxMzU2NjMsIDEzNTY2OSwgMTM1Njc1LCAxMzU2ODAsIAotICAgIDEzNTY4NSwgMTM1NjkxLCAxMzU2OTYsIDEzNTcwMiwgMTM1NzA4LCAxMzU3MTQsIDEzNTcyMCwgMTM1NzI2LCAxMzU3MzEsIAotICAgIDEzNTczNywgMTM1NzQzLCAxMzU3NDksIDEzNTc1NCwgMTM1NzYwLCAxMzU3NjYsIDEzNTc3MiwgMTM1Nzc3LCAxMzU3ODMsIAotICAgIDEzNTc4OSwgMTM1Nzk0LCAxMzU4MDAsIDEzNTgwNiwgMTM1ODExLCAxMzU4MTcsIDEzNTgyMywgMTM1ODI4LCAxMzU4MzMsIAotICAgIDEzNTgzOSwgMTM1ODQ0LCAxMzU4NTAsIDEzNTg1NiwgMTM1ODYyLCAxMzU4NjgsIDEzNTg3NCwgMCwgMTM1ODc4LCAKLSAgICAxMzU4ODMsIDAsIDAsIDEzNTg4OCwgMCwgMCwgMTM1ODkzLCAxMzU4OTgsIDAsIDAsIDEzNTkwMywgMTM1OTA4LCAxMzU5MTIsIAotICAgIDEzNTkxNywgMCwgMTM1OTIyLCAxMzU5MjYsIDEzNTkzMSwgMTM1OTM1LCAxMzU5NDAsIDEzNTk0NSwgMTM1OTUwLCAKLSAgICAxMzU5NTUsIDEzNTk2MCwgMTM1OTY0LCAxMzU5NjksIDEzNTk3NCwgMCwgMTM1OTc5LCAwLCAxMzU5ODQsIDEzNTk4OSwgCi0gICAgMTM1OTkzLCAxMzU5OTgsIDEzNjAwMywgMTM2MDA3LCAxMzYwMTIsIDAsIDEzNjAxNywgMTM2MDIyLCAxMzYwMjcsIAotICAgIDEzNjAzMSwgMTM2MDM1LCAxMzYwNDAsIDEzNjA0NCwgMTM2MDQ5LCAxMzYwNTQsIDEzNjA1OSwgMTM2MDY0LCAxMzYwNjksIAotICAgIDEzNjA3NCwgMTM2MDgwLCAxMzYwODYsIDEzNjA5MiwgMTM2MDk3LCAxMzYxMDMsIDEzNjEwOSwgMTM2MTE1LCAxMzYxMjAsIAotICAgIDEzNjEyNiwgMTM2MTMyLCAxMzYxMzcsIDEzNjE0MywgMTM2MTQ5LCAxMzYxNTQsIDEzNjE2MCwgMTM2MTY2LCAxMzYxNzEsIAotICAgIDEzNjE3NiwgMTM2MTgyLCAxMzYxODcsIDEzNjE5MywgMTM2MTk5LCAxMzYyMDUsIDEzNjIxMSwgMTM2MjE3LCAxMzYyMjIsIAotICAgIDEzNjIyOCwgMTM2MjM0LCAxMzYyNDAsIDEzNjI0NSwgMTM2MjUxLCAxMzYyNTcsIDEzNjI2MywgMTM2MjY4LCAxMzYyNzQsIAotICAgIDEzNjI4MCwgMTM2Mjg1LCAxMzYyOTEsIDEzNjI5NywgMTM2MzAyLCAxMzYzMDgsIDEzNjMxNCwgMTM2MzE5LCAxMzYzMjQsIAotICAgIDEzNjMzMCwgMTM2MzM1LCAxMzYzNDEsIDEzNjM0NywgMTM2MzUzLCAxMzYzNTksIDEzNjM2NSwgMTM2MzY5LCAwLCAKLSAgICAxMzYzNzQsIDEzNjM3OSwgMTM2MzgzLCAxMzYzODgsIDAsIDAsIDEzNjM5MywgMTM2Mzk4LCAxMzY0MDMsIDEzNjQwNywgCi0gICAgMTM2NDEyLCAxMzY0MTcsIDEzNjQyMSwgMTM2NDI2LCAwLCAxMzY0MzEsIDEzNjQzNSwgMTM2NDQwLCAxMzY0NDQsIAotICAgIDEzNjQ0OSwgMTM2NDU0LCAxMzY0NTksIDAsIDEzNjQ2NCwgMTM2NDY4LCAxMzY0NzMsIDEzNjQ3OCwgMTM2NDgzLCAKLSAgICAxMzY0ODcsIDEzNjQ5MiwgMTM2NDk3LCAxMzY1MDIsIDEzNjUwNiwgMTM2NTExLCAxMzY1MTYsIDEzNjUyMCwgMTM2NTI1LCAKLSAgICAxMzY1MzAsIDEzNjUzNCwgMTM2NTM5LCAxMzY1NDQsIDEzNjU0OCwgMTM2NTUyLCAxMzY1NTcsIDEzNjU2MSwgMTM2NTY2LCAKLSAgICAxMzY1NzEsIDEzNjU3NiwgMTM2NTgxLCAxMzY1ODYsIDEzNjU5MCwgMCwgMTM2NTk1LCAxMzY2MDAsIDEzNjYwNCwgCi0gICAgMTM2NjA5LCAwLCAxMzY2MTQsIDEzNjYxOCwgMTM2NjIzLCAxMzY2MjgsIDEzNjYzMiwgMCwgMTM2NjM3LCAwLCAwLCAwLCAKLSAgICAxMzY2NDEsIDEzNjY0NSwgMTM2NjUwLCAxMzY2NTQsIDEzNjY1OSwgMTM2NjY0LCAxMzY2NjksIDAsIDEzNjY3NCwgCi0gICAgMTM2Njc4LCAxMzY2ODMsIDEzNjY4OCwgMTM2NjkzLCAxMzY2OTcsIDEzNjcwMiwgMTM2NzA3LCAxMzY3MTIsIDEzNjcxNiwgCi0gICAgMTM2NzIxLCAxMzY3MjYsIDEzNjczMCwgMTM2NzM1LCAxMzY3NDAsIDEzNjc0NCwgMTM2NzQ5LCAxMzY3NTQsIDEzNjc1OCwgCi0gICAgMTM2NzYyLCAxMzY3NjcsIDEzNjc3MSwgMTM2Nzc2LCAxMzY3ODEsIDEzNjc4NiwgMTM2NzkxLCAxMzY3OTYsIDEzNjgwMSwgCi0gICAgMTM2ODA3LCAxMzY4MTMsIDEzNjgxOSwgMTM2ODI0LCAxMzY4MzAsIDEzNjgzNiwgMTM2ODQyLCAxMzY4NDcsIDEzNjg1MywgCi0gICAgMTM2ODU5LCAxMzY4NjQsIDEzNjg3MCwgMTM2ODc2LCAxMzY4ODEsIDEzNjg4NywgMTM2ODkzLCAxMzY4OTgsIDEzNjkwMywgCi0gICAgMTM2OTA5LCAxMzY5MTQsIDEzNjkyMCwgMTM2OTI2LCAxMzY5MzIsIDEzNjkzOCwgMTM2OTQ0LCAxMzY5NDksIDEzNjk1NSwgCi0gICAgMTM2OTYxLCAxMzY5NjcsIDEzNjk3MiwgMTM2OTc4LCAxMzY5ODQsIDEzNjk5MCwgMTM2OTk1LCAxMzcwMDEsIDEzNzAwNywgCi0gICAgMTM3MDEyLCAxMzcwMTgsIDEzNzAyNCwgMTM3MDI5LCAxMzcwMzUsIDEzNzA0MSwgMTM3MDQ2LCAxMzcwNTEsIDEzNzA1NywgCi0gICAgMTM3MDYyLCAxMzcwNjgsIDEzNzA3NCwgMTM3MDgwLCAxMzcwODYsIDEzNzA5MiwgMTM3MDk2LCAxMzcxMDEsIDEzNzEwNiwgCi0gICAgMTM3MTExLCAxMzcxMTUsIDEzNzEyMCwgMTM3MTI1LCAxMzcxMzAsIDEzNzEzNCwgMTM3MTM5LCAxMzcxNDQsIDEzNzE0OCwgCi0gICAgMTM3MTUzLCAxMzcxNTgsIDEzNzE2MiwgMTM3MTY3LCAxMzcxNzIsIDEzNzE3NiwgMTM3MTgwLCAxMzcxODUsIDEzNzE4OSwgCi0gICAgMTM3MTk0LCAxMzcxOTksIDEzNzIwNCwgMTM3MjA5LCAxMzcyMTQsIDEzNzIxOCwgMTM3MjIzLCAxMzcyMjgsIDEzNzIzMywgCi0gICAgMTM3MjM3LCAxMzcyNDIsIDEzNzI0NywgMTM3MjUyLCAxMzcyNTYsIDEzNzI2MSwgMTM3MjY2LCAxMzcyNzAsIDEzNzI3NSwgCi0gICAgMTM3MjgwLCAxMzcyODQsIDEzNzI4OSwgMTM3Mjk0LCAxMzcyOTgsIDEzNzMwMiwgMTM3MzA3LCAxMzczMTEsIDEzNzMxNiwgCi0gICAgMTM3MzIxLCAxMzczMjYsIDEzNzMzMSwgMTM3MzM2LCAxMzczNDEsIDEzNzM0NywgMTM3MzUzLCAxMzczNTksIDEzNzM2NCwgCi0gICAgMTM3MzcwLCAxMzczNzYsIDEzNzM4MiwgMTM3Mzg3LCAxMzczOTMsIDEzNzM5OSwgMTM3NDA0LCAxMzc0MTAsIDEzNzQxNiwgCi0gICAgMTM3NDIxLCAxMzc0MjcsIDEzNzQzMywgMTM3NDM4LCAxMzc0NDMsIDEzNzQ0OSwgMTM3NDU0LCAxMzc0NjAsIDEzNzQ2NiwgCi0gICAgMTM3NDcyLCAxMzc0NzgsIDEzNzQ4NCwgMTM3NDg5LCAxMzc0OTUsIDEzNzUwMSwgMTM3NTA3LCAxMzc1MTIsIDEzNzUxOCwgCi0gICAgMTM3NTI0LCAxMzc1MzAsIDEzNzUzNSwgMTM3NTQxLCAxMzc1NDcsIDEzNzU1MiwgMTM3NTU4LCAxMzc1NjQsIDEzNzU2OSwgCi0gICAgMTM3NTc1LCAxMzc1ODEsIDEzNzU4NiwgMTM3NTkxLCAxMzc1OTcsIDEzNzYwMiwgMTM3NjA4LCAxMzc2MTQsIDEzNzYyMCwgCi0gICAgMTM3NjI2LCAxMzc2MzIsIDEzNzYzNywgMTM3NjQzLCAxMzc2NDksIDEzNzY1NSwgMTM3NjYwLCAxMzc2NjYsIDEzNzY3MiwgCi0gICAgMTM3Njc4LCAxMzc2ODMsIDEzNzY4OSwgMTM3Njk1LCAxMzc3MDAsIDEzNzcwNiwgMTM3NzEyLCAxMzc3MTcsIDEzNzcyMywgCi0gICAgMTM3NzI5LCAxMzc3MzQsIDEzNzczOSwgMTM3NzQ1LCAxMzc3NTAsIDEzNzc1NiwgMTM3NzYyLCAxMzc3NjgsIDEzNzc3NCwgCi0gICAgMTM3NzgwLCAxMzc3ODUsIDEzNzc5MSwgMTM3Nzk3LCAxMzc4MDMsIDEzNzgwOCwgMTM3ODE0LCAxMzc4MjAsIDEzNzgyNiwgCi0gICAgMTM3ODMxLCAxMzc4MzcsIDEzNzg0MywgMTM3ODQ4LCAxMzc4NTQsIDEzNzg2MCwgMTM3ODY1LCAxMzc4NzEsIDEzNzg3NywgCi0gICAgMTM3ODgyLCAxMzc4ODcsIDEzNzg5MywgMTM3ODk4LCAxMzc5MDQsIDEzNzkxMCwgMTM3OTE2LCAxMzc5MjIsIDEzNzkyOCwgCi0gICAgMTM3OTM0LCAxMzc5NDEsIDEzNzk0OCwgMTM3OTU1LCAxMzc5NjEsIDEzNzk2OCwgMTM3OTc1LCAxMzc5ODIsIDEzNzk4OCwgCi0gICAgMTM3OTk1LCAxMzgwMDIsIDEzODAwOCwgMTM4MDE1LCAxMzgwMjIsIDEzODAyOCwgMTM4MDM1LCAxMzgwNDIsIDEzODA0OCwgCi0gICAgMTM4MDU0LCAxMzgwNjEsIDEzODA2NywgMTM4MDc0LCAxMzgwODEsIDEzODA4OCwgMTM4MDk1LCAxMzgxMDIsIDEzODEwOCwgCi0gICAgMTM4MTE1LCAxMzgxMjIsIDEzODEyOSwgMTM4MTM1LCAxMzgxNDIsIDEzODE0OSwgMTM4MTU2LCAxMzgxNjIsIDEzODE2OSwgCi0gICAgMTM4MTc2LCAxMzgxODIsIDEzODE4OSwgMTM4MTk2LCAxMzgyMDIsIDEzODIwOSwgMTM4MjE2LCAxMzgyMjIsIDEzODIyOCwgCi0gICAgMTM4MjM1LCAxMzgyNDEsIDEzODI0OCwgMTM4MjU1LCAxMzgyNjIsIDEzODI2OSwgMTM4Mjc2LCAxMzgyODEsIDEzODI4NywgCi0gICAgMTM4MjkzLCAxMzgyOTksIDEzODMwNCwgMTM4MzEwLCAxMzgzMTYsIDEzODMyMiwgMTM4MzI3LCAxMzgzMzMsIDEzODMzOSwgCi0gICAgMTM4MzQ0LCAxMzgzNTAsIDEzODM1NiwgMTM4MzYxLCAxMzgzNjcsIDEzODM3MywgMTM4Mzc4LCAxMzgzODMsIDEzODM4OSwgCi0gICAgMTM4Mzk0LCAxMzg0MDAsIDEzODQwNiwgMTM4NDEyLCAxMzg0MTgsIDEzODQyNCwgMTM4NDI5LCAxMzg0MzUsIDEzODQ0MSwgCi0gICAgMTM4NDQ3LCAxMzg0NTIsIDEzODQ1OCwgMTM4NDY0LCAxMzg0NzAsIDEzODQ3NSwgMTM4NDgxLCAxMzg0ODcsIDEzODQ5MiwgCi0gICAgMTM4NDk4LCAxMzg1MDQsIDEzODUwOSwgMTM4NTE1LCAxMzg1MjEsIDEzODUyNiwgMTM4NTMxLCAxMzg1MzcsIDEzODU0MiwgCi0gICAgMTM4NTQ4LCAxMzg1NTQsIDEzODU2MCwgMTM4NTY2LCAxMzg1NzIsIDEzODU3OCwgMCwgMCwgMTM4NTg1LCAxMzg1OTAsIAotICAgIDEzODU5NSwgMTM4NjAwLCAxMzg2MDUsIDEzODYxMCwgMTM4NjE1LCAxMzg2MjAsIDEzODYyNSwgMTM4NjMwLCAxMzg2MzUsIAotICAgIDEzODY0MCwgMTM4NjQ1LCAxMzg2NTAsIDEzODY1NSwgMTM4NjYwLCAxMzg2NjUsIDEzODY3MCwgMTM4Njc2LCAxMzg2ODEsIAotICAgIDEzODY4NiwgMTM4NjkxLCAxMzg2OTYsIDEzODcwMSwgMTM4NzA2LCAxMzg3MTEsIDEzODcxNSwgMTM4NzIwLCAxMzg3MjUsIAotICAgIDEzODczMCwgMTM4NzM1LCAxMzg3NDAsIDEzODc0NSwgMTM4NzUwLCAxMzg3NTUsIDEzODc2MCwgMTM4NzY1LCAxMzg3NzAsIAotICAgIDEzODc3NSwgMTM4NzgwLCAxMzg3ODUsIDEzODc5MCwgMTM4Nzk1LCAxMzg4MDAsIDEzODgwNiwgMTM4ODExLCAxMzg4MTYsIAotICAgIDEzODgyMSwgMTM4ODI2LCAxMzg4MzEsIDEzODgzNiwgMTM4ODQxLCAxMzg4NDcsIDEzODg1MiwgMTM4ODU3LCAxMzg4NjIsIAotICAgIDEzODg2NywgMTM4ODcyLCAxMzg4NzcsIDEzODg4MiwgMTM4ODg3LCAxMzg4OTIsIDEzODg5NywgMTM4OTAyLCAxMzg5MDcsIAotICAgIDEzODkxMiwgMTM4OTE3LCAxMzg5MjIsIDEzODkyNywgMTM4OTMyLCAxMzg5MzcsIDEzODk0MiwgMTM4OTQ3LCAxMzg5NTIsIAotICAgIDEzODk1NywgMTM4OTYyLCAxMzg5NjgsIDEzODk3MywgMTM4OTc4LCAxMzg5ODMsIDEzODk4OCwgMTM4OTkzLCAxMzg5OTgsIAotICAgIDEzOTAwMywgMTM5MDA3LCAxMzkwMTIsIDEzOTAxNywgMTM5MDIyLCAxMzkwMjcsIDEzOTAzMiwgMTM5MDM3LCAxMzkwNDIsIAotICAgIDEzOTA0NywgMTM5MDUyLCAxMzkwNTcsIDEzOTA2MiwgMTM5MDY3LCAxMzkwNzIsIDEzOTA3NywgMTM5MDgyLCAxMzkwODcsIAotICAgIDEzOTA5MiwgMTM5MDk4LCAxMzkxMDMsIDEzOTEwOCwgMTM5MTEzLCAxMzkxMTgsIDEzOTEyMywgMTM5MTI4LCAxMzkxMzMsIAotICAgIDEzOTEzOSwgMTM5MTQ0LCAxMzkxNDksIDEzOTE1NCwgMTM5MTU5LCAxMzkxNjQsIDEzOTE2OSwgMTM5MTc1LCAxMzkxODEsIAotICAgIDEzOTE4NywgMTM5MTkzLCAxMzkxOTksIDEzOTIwNSwgMTM5MjExLCAxMzkyMTcsIDEzOTIyMywgMTM5MjI5LCAxMzkyMzUsIAotICAgIDEzOTI0MSwgMTM5MjQ3LCAxMzkyNTMsIDEzOTI1OSwgMTM5MjY1LCAxMzkyNzEsIDEzOTI3OCwgMTM5Mjg0LCAxMzkyOTAsIAotICAgIDEzOTI5NiwgMTM5MzAyLCAxMzkzMDgsIDEzOTMxNCwgMTM5MzIwLCAxMzkzMjUsIDEzOTMzMSwgMTM5MzM3LCAxMzkzNDMsIAotICAgIDEzOTM0OSwgMTM5MzU1LCAxMzkzNjEsIDEzOTM2NywgMTM5MzczLCAxMzkzNzksIDEzOTM4NSwgMTM5MzkxLCAxMzkzOTcsIAotICAgIDEzOTQwMywgMTM5NDA5LCAxMzk0MTUsIDEzOTQyMSwgMTM5NDI3LCAxMzk0MzQsIDEzOTQ0MCwgMTM5NDQ2LCAxMzk0NTIsIAotICAgIDEzOTQ1OCwgMTM5NDY0LCAxMzk0NzAsIDEzOTQ3NiwgMTM5NDgzLCAxMzk0ODksIDEzOTQ5NSwgMTM5NTAxLCAxMzk1MDcsIAotICAgIDEzOTUxMywgMTM5NTE5LCAxMzk1MjUsIDEzOTUzMSwgMTM5NTM3LCAxMzk1NDMsIDEzOTU0OSwgMTM5NTU1LCAxMzk1NjEsIAotICAgIDEzOTU2NywgMTM5NTczLCAxMzk1NzksIDEzOTU4NSwgMTM5NTkxLCAxMzk1OTcsIDEzOTYwMywgMTM5NjA5LCAxMzk2MTUsIAotICAgIDEzOTYyMSwgMTM5NjI4LCAxMzk2MzQsIDEzOTY0MCwgMTM5NjQ2LCAxMzk2NTIsIDEzOTY1OCwgMTM5NjY0LCAxMzk2NzAsIAotICAgIDEzOTY3NSwgMTM5NjgxLCAxMzk2ODcsIDEzOTY5MywgMTM5Njk5LCAxMzk3MDUsIDEzOTcxMSwgMTM5NzE3LCAxMzk3MjMsIAotICAgIDEzOTcyOSwgMTM5NzM1LCAxMzk3NDEsIDEzOTc0NywgMTM5NzUzLCAxMzk3NTksIDEzOTc2NSwgMTM5NzcxLCAxMzk3NzcsIAotICAgIDEzOTc4NCwgMTM5NzkwLCAxMzk3OTYsIDEzOTgwMiwgMTM5ODA4LCAxMzk4MTQsIDEzOTgyMCwgMTM5ODI2LCAxMzk4MzMsIAotICAgIDEzOTgzOSwgMTM5ODQ1LCAxMzk4NTEsIDEzOTg1NywgMTM5ODYzLCAxMzk4NjksIDEzOTg3NiwgMTM5ODgzLCAxMzk4OTAsIAotICAgIDEzOTg5NywgMTM5OTA0LCAxMzk5MTEsIDEzOTkxOCwgMTM5OTI1LCAxMzk5MzIsIDEzOTkzOSwgMTM5OTQ2LCAxMzk5NTMsIAotICAgIDEzOTk2MCwgMTM5OTY3LCAxMzk5NzQsIDEzOTk4MSwgMTM5OTg4LCAxMzk5OTYsIDE0MDAwMywgMTQwMDEwLCAxNDAwMTcsIAotICAgIDE0MDAyNCwgMTQwMDMxLCAxNDAwMzgsIDE0MDA0NSwgMTQwMDUxLCAxNDAwNTgsIDE0MDA2NSwgMTQwMDcyLCAxNDAwNzksIAotICAgIDE0MDA4NiwgMTQwMDkzLCAxNDAxMDAsIDE0MDEwNywgMTQwMTE0LCAxNDAxMjEsIDE0MDEyOCwgMTQwMTM1LCAxNDAxNDIsIAotICAgIDE0MDE0OSwgMTQwMTU2LCAxNDAxNjMsIDE0MDE3MCwgMTQwMTc4LCAxNDAxODUsIDE0MDE5MiwgMTQwMTk5LCAxNDAyMDYsIAotICAgIDE0MDIxMywgMTQwMjIwLCAxNDAyMjcsIDE0MDIzNSwgMTQwMjQyLCAxNDAyNDksIDE0MDI1NiwgMTQwMjYzLCAxNDAyNzAsIAotICAgIDE0MDI3NywgMTQwMjgyLCAwLCAwLCAxNDAyODcsIDE0MDI5MiwgMTQwMjk2LCAxNDAzMDAsIDE0MDMwNCwgMTQwMzA4LCAKLSAgICAxNDAzMTIsIDE0MDMxNiwgMTQwMzIxLCAxNDAzMjUsIDE0MDMzMCwgMTQwMzM1LCAxNDAzMzksIDE0MDM0MywgMTQwMzQ3LCAKLSAgICAxNDAzNTEsIDE0MDM1NSwgMTQwMzU5LCAxNDAzNjQsIDE0MDM2OCwgMTQwMzczLCAxNDAzNzgsIDE0MDM4MiwgMTQwMzg2LCAKLSAgICAxNDAzOTAsIDE0MDM5NCwgMTQwMzk4LCAxNDA0MDIsIDE0MDQwNywgMTQwNDExLCAxNDA0MTYsIDE0MDQyMiwgMTQwNDI3LCAKLSAgICAxNDA0MzIsIDE0MDQzNywgMTQwNDQyLCAxNDA0NDcsIDE0MDQ1MiwgMTQwNDU4LCAxNDA0NjMsIDE0MDQ2OSwgMTQwNDc1LCAKLSAgICAxNDA0ODAsIDE0MDQ4NSwgMTQwNDkwLCAxNDA0OTUsIDE0MDUwMCwgMTQwNTA1LCAxNDA1MTEsIDE0MDUxNiwgMTQwNTIyLCAKLSAgICAxNDA1MjYsIDE0MDUzMSwgMTQwNTM2LCAxNDA1NDEsIDE0MDU0NiwgMTQwNTUxLCAxNDA1NTYsIDE0MDU2MiwgMTQwNTcwLCAKLSAgICAxNDA1NzcsIDE0MDU4MiwgMTQwNTg3LCAxNDA1OTQsIDE0MDYwMCwgMTQwNjA1LCAxNDA2MTEsIDE0MDYxNywgMTQwNjI1LCAKLSAgICAxNDA2MzEsIDE0MDYzOCwgMTQwNjQ2LCAxNDA2NTIsIDE0MDY2MSwgMTQwNjcwLCAxNDA2NzgsIDE0MDY4NiwgMTQwNjkyLCAKLSAgICAxNDA2OTksIDE0MDcwNywgMTQwNzE1LCAxNDA3MjEsIDE0MDcyOCwgMTQwNzM3LCAxNDA3NDYsIDE0MDc1MywgMTQwNzY0LCAKLSAgICAxNDA3NzQsIDE0MDc4NCwgMTQwNzk0LCAxNDA4MDQsIDE0MDgxMSwgMTQwODE4LCAxNDA4MjUsIDE0MDgzMiwgMTQwODQxLCAKLSAgICAxNDA4NTAsIDE0MDg2MSwgMTQwODcyLCAxNDA4ODEsIDE0MDg5MCwgMTQwOTAxLCAxNDA5MTAsIDE0MDkxOSwgMTQwOTMwLCAKLSAgICAxNDA5MzksIDE0MDk0OCwgMTQwOTU2LCAxNDA5NjQsIDE0MDk3NSwgMTQwOTg2LCAxNDA5OTQsIDE0MTAwMywgMTQxMDEyLCAKLSAgICAxNDEwMTksIDE0MTAzMCwgMTQxMDQxLCAxNDEwNTAsIDE0MTA1OSwgMTQxMDY2LCAxNDEwNzUsIDE0MTA4NCwgMTQxMDkzLCAKLSAgICAxNDExMDQsIDE0MTExMywgMTQxMTIzLCAxNDExMzIsIDE0MTE0MSwgMTQxMTUyLCAxNDExNjUsIDE0MTE4MCwgMTQxMTkxLCAKLSAgICAxNDEyMDQsIDE0MTIxNiwgMTQxMjI1LCAxNDEyMzYsIDE0MTI0NywgMTQxMjU2LCAxNDEyNjcsIDE0MTI4MSwgMTQxMjk2LCAKLSAgICAxNDEyOTksIDE0MTMwOCwgMTQxMzEzLCAxNDEzMTksIDE0MTMyNywgMTQxMzMzLCAxNDEzMzksIDE0MTM0OCwgMTQxMzU1LCAKLSAgICAxNDEzNjUsIDE0MTM3NywgMTQxMzg0LCAxNDEzODcsIDE0MTM5MywgMTQxNDAwLCAxNDE0MDYsIDE0MTQxMSwgMTQxNDE0LCAKLSAgICAxNDE0MTksIDE0MTQyMiwgMTQxNDI5LCAxNDE0MzUsIDE0MTQ0MywgMTQxNDUwLCAxNDE0NTcsIDE0MTQ2MywgMTQxNDY4LCAKLSAgICAxNDE0NzEsIDE0MTQ3NCwgMTQxNDc3LCAxNDE0ODMsIDE0MTQ5MCwgMTQxNDk2LCAxNDE1MDEsIDE0MTUwOCwgMTQxNTExLCAKLSAgICAxNDE1MTYsIDE0MTUyMywgMTQxNTI5LCAxNDE1MzcsIDE0MTU0NCwgMTQxNTU0LCAxNDE1NjMsIDE0MTU2NiwgMTQxNTcyLCAKLSAgICAxNDE1NzksIDE0MTU4NiwgMTQxNTkzLCAxNDE1OTgsIDE0MTYwNiwgMTQxNjE0LCAxNDE2MjMsIDE0MTYyOSwgMTQxNjM4LCAKLSAgICAxNDE2NDcsIDE0MTY1NiwgMTQxNjYyLCAxNDE2NzEsIDE0MTY3OCwgMTQxNjg1LCAxNDE2OTIsIDE0MTcwMCwgMTQxNzA2LCAKLSAgICAxNDE3MTQsIDE0MTcyMCwgMTQxNzI3LCAxNDE3MzQsIDE0MTc0MiwgMTQxNzUzLCAxNDE3NjMsIDE0MTc2OSwgMTQxNzc2LCAKLSAgICAxNDE3ODMsIDE0MTc5MCwgMTQxNzk2LCAxNDE4MDMsIDE0MTgxMCwgMTQxODE1LCAxNDE4MjIsIDE0MTgzMCwgMTQxODM5LCAKLSAgICAxNDE4NDUsIDE0MTg1NywgMTQxODY4LCAxNDE4NzQsIDE0MTg4MiwgMTQxODg4LCAxNDE4OTUsIDE0MTkwMiwgMTQxOTA5LCAKLSAgICAxNDE5MTUsIDE0MTkyMiwgMTQxOTMxLCAxNDE5MzcsIDE0MTk0MywgMTQxOTUwLCAxNDE5NTcsIDE0MTk2NSwgMTQxOTc1LCAKLSAgICAxNDE5ODUsIDE0MTk5NSwgMTQyMDA1LCAxNDIwMTMsIDE0MjAyMSwgMTQyMDMxLCAxNDIwMzksIDE0MjA0NCwgMTQyMDQ5LCAKLSAgICAxNDIwNTQsIDE0MjA2MCwgMTQyMDY3LCAxNDIwNzQsIDE0MjA4MCwgMTQyMDg2LCAxNDIwOTEsIDE0MjA5OCwgMTQyMTA2LCAKLSAgICAxNDIxMTYsIDE0MjEyNCwgMTQyMTMyLCAxNDIxNDIsIDE0MjE1MiwgMTQyMTYwLCAxNDIxNzAsIDE0MjE4MCwgMTQyMTkyLCAKLSAgICAxNDIyMDQsIDE0MjIxNiwgMTQyMjI2LCAxNDIyMzIsIDE0MjIzOCwgMTQyMjQ1LCAxNDIyNTQsIDE0MjI2MywgMTQyMjcyLCAKLSAgICAxNDIyODEsIDE0MjI5MSwgMTQyMzAwLCAxNDIzMDksIDE0MjMxOCwgMTQyMzIzLCAxNDIzMjksIDE0MjMzOCwgMTQyMzQ4LCAKLSAgICAxNDIzNTcsIDE0MjM2MywgMTQyMzY5LCAxNDIzNzYsIDE0MjM4MywgMTQyMzkwLCAxNDIzOTYsIDE0MjQwMywgMTQyNDEwLCAKLSAgICAxNDI0MTcsIDE0MjQyMywgMTQyNDI3LCAxNDI0MzIsIDE0MjQzOSwgMTQyNDQ2LCAxNDI0NTMsIDE0MjQ1OCwgMTQyNDY2LCAKLSAgICAxNDI0NzQsIDE0MjQ4MywgMTQyNDkxLCAxNDI0OTgsIDE0MjUwNiwgMTQyNTE1LCAxNDI1MjUsIDE0MjUyOCwgMTQyNTMyLCAKLSAgICAxNDI1MzcsIDE0MjU0MiwgMTQyNTQ3LCAxNDI1NTIsIDE0MjU1NywgMTQyNTYyLCAxNDI1NjcsIDE0MjU3MiwgMTQyNTc3LCAKLSAgICAxNDI1ODIsIDE0MjU4NywgMTQyNTkyLCAxNDI1OTcsIDE0MjYwMiwgMTQyNjA3LCAxNDI2MTIsIDE0MjYxNywgMTQyNjI0LCAKLSAgICAxNDI2MzAsIDE0MjYzNywgMTQyNjQzLCAxNDI2NDgsIDE0MjY1NSwgMTQyNjYxLCAxNDI2NjgsIDE0MjY3NCwgMTQyNjc5LCAKLSAgICAxNDI2ODYsIDE0MjY5MywgMTQyNzAwLCAxNDI3MDYsIDE0MjcxMiwgMTQyNzIxLCAxNDI3MzAsIDE0Mjc0MSwgMTQyNzQ4LCAKLSAgICAxNDI3NTUsIDE0Mjc2NCwgMTQyNzczLCAxNDI3ODIsIDE0Mjc5MSwgMTQyODAwLCAxNDI4MDYsIDE0MjgxNCwgMTQyODIwLCAKLSAgICAxNDI4MzAsIDE0MjgzNSwgMTQyODQ0LCAxNDI4NTMsIDE0Mjg2MCwgMTQyODcxLCAxNDI4NzgsIDE0Mjg4NSwgMTQyODkyLCAKLSAgICAxNDI4OTksIDE0MjkwNiwgMTQyOTEzLCAxNDI5MjAsIDE0MjkyNywgMTQyOTM0LCAxNDI5NDEsIDE0Mjk0NywgMTQyOTUzLCAKLSAgICAxNDI5NTksIDE0Mjk2NiwgMTQyOTczLCAxNDI5ODAsIDE0Mjk4NywgMTQyOTk0LCAxNDMwMDEsIDE0MzAwOCwgMTQzMDE1LCAKLSAgICAxNDMwMjIsIDE0MzAyOSwgMTQzMDM2LCAxNDMwNDMsIDE0MzA0OCwgMTQzMDU3LCAxNDMwNjYsIDE0MzA3NSwgMTQzMDgyLCAKLSAgICAxNDMwODksIDE0MzA5NiwgMTQzMTAzLCAxNDMxMTAsIDE0MzExNywgMTQzMTI0LCAxNDMxMzEsIDE0MzE0MCwgMTQzMTQ5LCAKLSAgICAxNDMxNTgsIDE0MzE2NywgMTQzMTc2LCAxNDMxODUsIDE0MzE5NCwgMTQzMjAzLCAxNDMyMTIsIDE0MzIyMSwgMTQzMjMwLCAKLSAgICAxNDMyMzksIDE0MzI0OCwgMTQzMjU0LCAxNDMyNjIsIDE0MzI2OCwgMTQzMjc4LCAxNDMyODMsIDE0MzI5MiwgMTQzMzAxLCAKLSAgICAxNDMzMTAsIDE0MzMyMSwgMTQzMzI2LCAxNDMzMzMsIDE0MzM0MCwgMTQzMzQ3LCAxNDMzNTIsIDE0MzM1OCwgMTQzMzY0LCAKLSAgICAxNDMzNzAsIDE0MzM3NywgMTQzMzg0LCAxNDMzOTEsIDE0MzM5OCwgMTQzNDA1LCAxNDM0MTIsIDE0MzQxOSwgMTQzNDI2LCAKLSAgICAxNDM0MzMsIDE0MzQ0MCwgMTQzNDQ3LCAxNDM0NTQsIDE0MzQ1OSwgMTQzNDY4LCAxNDM0NzcsIDE0MzQ4NiwgMTQzNDk1LCAKLSAgICAxNDM1MDQsIDE0MzUxMywgMTQzNTIyLCAxNDM1MzEsIDE0MzU0MiwgMTQzNTUzLCAxNDM1NjAsIDE0MzU2NywgMTQzNTc0LCAKLSAgICAxNDM1ODEsIDE0MzU4OCwgMTQzNTk1LCAxNDM2MDMsIDE0MzYxMywgMTQzNjIzLCAxNDM2MzMsIDE0MzY0NCwgMTQzNjU1LCAKLSAgICAxNDM2NjYsIDE0MzY3NSwgMTQzNjg0LCAxNDM2OTMsIDE0MzY5OCwgMTQzNzAzLCAxNDM3MDgsIDE0MzcxMywgMTQzNzI0LCAKLSAgICAxNDM3MzUsIDE0Mzc0NiwgMTQzNzU3LCAxNDM3NjgsIDE0Mzc3OCwgMTQzNzg5LCAxNDM3OTgsIDE0MzgwNywgMTQzODE2LCAKLSAgICAxNDM4MjUsIDE0MzgzNCwgMTQzODQyLCAxNDM4NTEsIDE0Mzg2MiwgMTQzODczLCAxNDM4ODQsIDE0Mzg5NSwgMTQzOTA2LCAKLSAgICAxNDM5MTgsIDE0MzkzMSwgMTQzOTQzLCAxNDM5NTYsIDE0Mzk2OCwgMTQzOTgxLCAxNDM5OTMsIDE0NDAwNiwgMTQ0MDE3LCAKLSAgICAxNDQwMjgsIDE0NDAzNywgMTQ0MDQ1LCAxNDQwNTQsIDE0NDA2NSwgMTQ0MDc2LCAxNDQwODgsIDE0NDEwMSwgMTQ0MTE1LCAKLSAgICAxNDQxMzAsIDE0NDE0MiwgMTQ0MTU1LCAxNDQxNjcsIDE0NDE4MCwgMTQ0MTkxLCAxNDQyMDIsIDE0NDIxMSwgMTQ0MjE5LCAKLSAgICAxNDQyMjgsIDE0NDIzNSwgMTQ0MjQyLCAxNDQyNDksIDE0NDI1NiwgMTQ0MjYzLCAxNDQyNzAsIDE0NDI3NywgMTQ0Mjg0LCAKLSAgICAxNDQyOTEsIDE0NDI5OCwgMTQ0MzAzLCAxNDQzMDgsIDE0NDMxMywgMTQ0MzIwLCAxNDQzMzAsIDE0NDM0MSwgMTQ0MzUxLCAKLSAgICAxNDQzNjIsIDE0NDM3NiwgMTQ0MzkxLCAxNDQ0MDYsIDE0NDQyMCwgMTQ0NDM1LCAxNDQ0NTAsIDE0NDQ2MSwgMTQ0NDcyLCAKLSAgICAxNDQ0ODUsIDE0NDQ5OCwgMTQ0NTA3LCAxNDQ1MTYsIDE0NDUyOSwgMTQ0NTQyLCAxNDQ1NDksIDE0NDU1NiwgMTQ0NTYxLCAKLSAgICAxNDQ1NjYsIDE0NDU3MSwgMTQ0NTc2LCAxNDQ1ODEsIDE0NDU4OCwgMTQ0NTk3LCAxNDQ2MDIsIDE0NDYwNSwgMTQ0NjEwLCAKLSAgICAxNDQ2MTcsIDE0NDYyNCwgMTQ0NjMxLCAxNDQ2MzgsIDE0NDY0NSwgMTQ0NjUyLCAxNDQ2NjUsIDE0NDY3OSwgMTQ0Njk0LCAKLSAgICAxNDQ3MDEsIDE0NDcwOCwgMTQ0NzE1LCAxNDQ3MjQsIDE0NDczMiwgMTQ0NzQwLCAxNDQ3NDksIDE0NDc1NCwgMTQ0NzU5LCAKLSAgICAxNDQ3NjQsIDE0NDc2OSwgMTQ0Nzc0LCAxNDQ3NzksIDE0NDc4NiwgMTQ0NzkzLCAxNDQ3OTksIDE0NDgwNiwgMTQ0ODEyLCAKLSAgICAxNDQ4MTksIDE0NDgyNCwgMTQ0ODI5LCAxNDQ4MzQsIDE0NDgzOSwgMTQ0ODQ0LCAxNDQ4NTEsIDE0NDg1OCwgMTQ0ODYzLCAKLSAgICAxNDQ4NzAsIDE0NDg3NywgMTQ0ODgyLCAxNDQ4ODcsIDE0NDg5MiwgMTQ0ODk3LCAxNDQ5MDIsIDE0NDkwNywgMTQ0OTE0LCAKLSAgICAxNDQ5MjEsIDE0NDkyOCwgMTQ0OTMxLCAxNDQ5MzYsIDE0NDk0MSwgMTQ0OTQ2LCAxNDQ5NTEsIDE0NDk1OCwgMTQ0OTY1LCAKLSAgICAxNDQ5NzMsIDE0NDk4MSwgMTQ0OTg2LCAxNDQ5OTEsIDE0NDk5OCwgMTQ1MDA1LCAxNDUwMTIsIDE0NTAxNywgMTQ1MDI0LCAKLSAgICAxNDUwMzEsIDE0NTAzNiwgMTQ1MDQzLCAxNDUwNTAsIDE0NTA1NiwgMTQ1MDYyLCAxNDUwNjgsIDE0NTA3NCwgMTQ1MDgyLCAKLSAgICAxNDUwOTAsIDE0NTA5NiwgMTQ1MTA0LCAxNDUxMTIsIDE0NTExNywgMTQ1MTI0LCAxNDUxMzEsIDE0NTEzNiwgMTQ1MTQzLCAKLSAgICAxNDUxNTAsIDE0NTE1NywgMTQ1MTY1LCAxNDUxNzMsIDE0NTE3OCwgMTQ1MTg1LCAxNDUxOTIsIDE0NTIwMSwgMTQ1MjA4LCAKLSAgICAxNDUyMTcsIDE0NTIyOCwgMTQ1MjM3LCAxNDUyNDYsIDE0NTI1NSwgMTQ1MjY0LCAxNDUyNjcsIDE0NTI3MiwgMTQ1Mjc5LCAKLSAgICAxNDUyODgsIDE0NTI5NSwgMTQ1MzA0LCAxNDUzMTEsIDE0NTMxNiwgMTQ1MzIxLCAxNDUzMjQsIDE0NTMyNywgMTQ1MzMwLCAKLSAgICAxNDUzMzcsIDE0NTM0NCwgMTQ1MzUzLCAxNDUzNjIsIDE0NTM3MSwgMTQ1Mzc4LCAxNDUzODUsIDE0NTM5MCwgMTQ1NDAzLCAKLSAgICAxNDU0MDgsIDE0NTQxMywgMTQ1NDE4LCAxNDU0MjMsIDE0NTQyOCwgMTQ1NDMzLCAxNDU0MzgsIDE0NTQ0MywgMTQ1NDQ2LCAKLSAgICAxNDU0NTEsIDE0NTQ1NiwgMTQ1NDYxLCAxNDU0NjYsIDE0NTQ3MSwgMTQ1NDc4LCAxNDU0ODMsIDE0NTQ5MCwgMTQ1NDkzLCAKLSAgICAxNDU0OTgsIDE0NTUwMSwgMTQ1NTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDU1MDcsIDE0NTUxMiwgMTQ1NTE3LCAxNDU1MjIsIDE0NTUyNywgMCwgMTQ1NTMyLCAxNDU1MzcsIDE0NTU0MiwgCi0gICAgMTQ1NTQ3LCAxNDU1NTIsIDE0NTU1NywgMTQ1NTYyLCAxNDU1NjcsIDE0NTU3MiwgMTQ1NTc3LCAxNDU1ODIsIDE0NTU4NywgCi0gICAgMTQ1NTkyLCAxNDU1OTcsIDE0NTYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1NjA3LCAxNDU2MTQsIDE0NTYyMCwgCi0gICAgMTQ1NjI3LCAxNDU2MzQsIDE0NTY0MSwgMTQ1NjQ4LCAxNDU2NTUsIDE0NTY2MiwgMTQ1NjY5LCAxNDU2NzYsIDE0NTY4MywgCi0gICAgMTQ1NjkwLCAxNDU2OTcsIDE0NTcwNCwgMTQ1NzExLCAxNDU3MTgsIDE0NTcyNSwgMTQ1NzMyLCAxNDU3MzksIDE0NTc0NiwgCi0gICAgMTQ1NzUzLCAxNDU3NjAsIDE0NTc2NywgMTQ1Nzc0LCAxNDU3ODEsIDE0NTc4OCwgMTQ1Nzk1LCAxNDU4MDIsIDE0NTgwOSwgCi0gICAgMTQ1ODE2LCAxNDU4MjMsIDE0NTgzMCwgMTQ1ODM3LCAxNDU4NDQsIDE0NTg1MCwgMTQ1ODU2LCAxNDU4NjIsIDE0NTg2OSwgCi0gICAgMTQ1ODc1LCAxNDU4ODIsIDE0NTg4OCwgMTQ1ODk1LCAxNDU5MDIsIDE0NTkwOSwgMTQ1OTE2LCAxNDU5MjMsIDE0NTkzMCwgCi0gICAgMTQ1OTM3LCAxNDU5NDQsIDE0NTk1MSwgMTQ1OTU4LCAxNDU5NjUsIDE0NTk3MiwgMTQ1OTc5LCAxNDU5ODYsIDE0NTk5MywgCi0gICAgMTQ2MDAwLCAxNDYwMDcsIDE0NjAxNCwgMTQ2MDIxLCAxNDYwMjgsIDE0NjAzNiwgMTQ2MDQzLCAxNDYwNTAsIDE0NjA1NywgCi0gICAgMTQ2MDY0LCAxNDYwNzEsIDE0NjA3OCwgMTQ2MDg1LCAxNDYwOTIsIDE0NjA5OSwgMTQ2MTA2LCAxNDYxMTMsIDE0NjEyMCwgCi0gICAgMTQ2MTI2LCAxNDYxMzMsIDE0NjE0MCwgMTQ2MTQ3LCAxNDYxNTQsIDE0NjE2MSwgMTQ2MTY4LCAxNDYxNzUsIDE0NjE4MywgCi0gICAgMTQ2MTkwLCAxNDYxOTYsIDE0NjIwMywgMTQ2MjEwLCAxNDYyMTcsIDE0NjIyNCwgMTQ2MjMxLCAxNDYyMzgsIDE0NjI0NSwgCi0gICAgMTQ2MjUyLCAxNDYyNTksIDE0NjI2NiwgMTQ2MjczLCAxNDYyODAsIDE0NjI4NywgMTQ2Mjk0LCAxNDYzMDEsIDE0NjMwOCwgCi0gICAgMTQ2MzE1LCAxNDYzMjIsIDE0NjMyOSwgMTQ2MzM2LCAxNDYzNDIsIDE0NjM0OSwgMTQ2MzU2LCAxNDYzNjMsIDE0NjM3MCwgCi0gICAgMTQ2Mzc3LCAxNDYzODQsIDE0NjM5MSwgMTQ2Mzk4LCAxNDY0MDUsIDE0NjQxMiwgMTQ2NDE5LCAxNDY0MjYsIDE0NjQzMywgCi0gICAgMTQ2NDQwLCAxNDY0NDcsIDE0NjQ1NCwgMTQ2NDYxLCAxNDY0NjgsIDE0NjQ3NSwgMTQ2NDgyLCAxNDY0ODksIDE0NjQ5NiwgCi0gICAgMTQ2NTA0LCAxNDY1MTIsIDE0NjUyMCwgMTQ2NTI3LCAxNDY1MzQsIDE0NjU0MSwgMTQ2NTQ4LCAxNDY1NTUsIDE0NjU2MiwgCi0gICAgMTQ2NTY5LCAxNDY1NzYsIDE0NjU4MywgMTQ2NTkwLCAxNDY1OTYsIDE0NjYwMywgMTQ2NjEwLCAxNDY2MTcsIDE0NjYyNCwgCi0gICAgMTQ2NjMxLCAxNDY2MzgsIDE0NjY0NSwgMTQ2NjUyLCAxNDY2NTksIDE0NjY2NiwgMTQ2NjczLCAxNDY2ODAsIDE0NjY4NywgCi0gICAgMTQ2Njk0LCAxNDY3MDIsIDE0NjcxMCwgMTQ2NzE4LCAxNDY3MjUsIDE0NjczMiwgMTQ2NzM5LCAxNDY3NDYsIDE0Njc1MywgCi0gICAgMTQ2NzYwLCAxNDY3NjcsIDE0Njc3NCwgMTQ2NzgxLCAxNDY3ODgsIDE0Njc5NSwgMTQ2ODAyLCAxNDY4MDksIDE0NjgxNiwgCi0gICAgMTQ2ODIzLCAxNDY4MzAsIDE0NjgzNywgMTQ2ODQ0LCAxNDY4NTEsIDE0Njg1OCwgMTQ2ODY1LCAxNDY4NzIsIDE0Njg3OSwgCi0gICAgMTQ2ODg2LCAxNDY4OTMsIDE0NjkwMCwgMTQ2OTA3LCAxNDY5MTQsIDE0NjkyMSwgMTQ2OTI4LCAxNDY5MzUsIDE0Njk0MiwgCi0gICAgMTQ2OTQ5LCAxNDY5NTYsIDE0Njk2MywgMTQ2OTcwLCAxNDY5NzcsIDAsIDAsIDE0Njk4NCwgMTQ2OTg4LCAxNDY5OTIsIAotICAgIDE0Njk5NiwgMTQ3MDAwLCAxNDcwMDQsIDE0NzAwOCwgMTQ3MDEzLCAxNDcwMTcsIDE0NzAyMiwgMTQ3MDI4LCAxNDcwMzQsIAotICAgIDE0NzA0MCwgMTQ3MDQ2LCAxNDcwNTQsIDE0NzA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQ3MDY4LCAxNDcwNzIsIDE0NzA3NiwgMTQ3MDgwLCAwLCAxNDcwODQsIDE0NzA4OCwgMTQ3MDkyLCAKLSAgICAxNDcwOTYsIDE0NzEwMCwgMTQ3MTA0LCAxNDcxMDgsIDE0NzExMiwgMTQ3MTE2LCAxNDcxMjAsIDE0NzEyNCwgMTQ3MTI4LCAKLSAgICAxNDcxMzIsIDE0NzEzNiwgMTQ3MTQwLCAxNDcxNDQsIDE0NzE0OCwgMTQ3MTUyLCAxNDcxNTYsIDE0NzE2MCwgMTQ3MTY0LCAKLSAgICAxNDcxNjgsIDE0NzE3MiwgMTQ3MTc2LCAxNDcxODIsIDE0NzE4OCwgMTQ3MTk0LCAwLCAxNDcyMDAsIDE0NzIwNSwgMCwgCi0gICAgMTQ3MjEwLCAwLCAwLCAxNDcyMTUsIDAsIDE0NzIyMCwgMTQ3MjI1LCAxNDcyMzAsIDE0NzIzNSwgMTQ3MjQwLCAxNDcyNDUsIAotICAgIDE0NzI1MCwgMTQ3MjU1LCAxNDcyNjAsIDE0NzI2NSwgMCwgMTQ3MjcwLCAxNDcyNzUsIDE0NzI4MCwgMTQ3Mjg1LCAwLCAKLSAgICAxNDcyOTAsIDAsIDE0NzI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3MzAwLCAwLCAwLCAwLCAwLCAxNDczMDYsIDAsIAotICAgIDE0NzMxMiwgMCwgMTQ3MzE4LCAwLCAxNDczMjQsIDE0NzMzMCwgMTQ3MzM2LCAwLCAxNDczNDIsIDE0NzM0OCwgMCwgCi0gICAgMTQ3MzU0LCAwLCAwLCAxNDczNjAsIDAsIDE0NzM2NiwgMCwgMTQ3MzcyLCAwLCAxNDczNzgsIDAsIDE0NzM4NiwgMCwgCi0gICAgMTQ3Mzk0LCAxNDc0MDAsIDAsIDE0NzQwNiwgMCwgMCwgMTQ3NDEyLCAxNDc0MTgsIDE0NzQyNCwgMTQ3NDMwLCAwLCAKLSAgICAxNDc0MzYsIDE0NzQ0MiwgMTQ3NDQ4LCAxNDc0NTQsIDE0NzQ2MCwgMTQ3NDY2LCAxNDc0NzIsIDAsIDE0NzQ3OCwgCi0gICAgMTQ3NDg0LCAxNDc0OTAsIDE0NzQ5NiwgMCwgMTQ3NTAyLCAxNDc1MDgsIDE0NzUxNCwgMTQ3NTIwLCAwLCAxNDc1MjgsIDAsIAotICAgIDE0NzUzNiwgMTQ3NTQyLCAxNDc1NDgsIDE0NzU1NCwgMTQ3NTYwLCAxNDc1NjYsIDE0NzU3MiwgMTQ3NTc4LCAxNDc1ODQsIAotICAgIDE0NzU5MCwgMCwgMTQ3NTk2LCAxNDc2MDIsIDE0NzYwOCwgMTQ3NjE0LCAxNDc2MjAsIDE0NzYyNiwgMTQ3NjMyLCAKLSAgICAxNDc2MzgsIDE0NzY0NCwgMTQ3NjUwLCAxNDc2NTYsIDE0NzY2MiwgMTQ3NjY4LCAxNDc2NzQsIDE0NzY4MCwgMTQ3Njg2LCAKLSAgICAxNDc2OTIsIDAsIDAsIDAsIDAsIDAsIDE0NzY5OCwgMTQ3NzAzLCAxNDc3MDgsIDAsIDE0NzcxMywgMTQ3NzE4LCAxNDc3MjMsIAotICAgIDE0NzcyOCwgMTQ3NzMzLCAwLCAxNDc3MzgsIDE0Nzc0MywgMTQ3NzQ4LCAxNDc3NTMsIDE0Nzc1OCwgMTQ3NzYzLCAKLSAgICAxNDc3NjgsIDE0Nzc3MywgMTQ3Nzc4LCAxNDc3ODMsIDE0Nzc4OCwgMTQ3NzkzLCAxNDc3OTgsIDE0NzgwMywgMTQ3ODA4LCAKLSAgICAxNDc4MTMsIDE0NzgxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjEyLCAxNTA2MTksIDE1MDYyNSwgMTUwNjMyLCAxNTA2MzksIAorICAgIDE1MDY0NiwgMTUwNjUzLCAxNTA2NjAsIDE1MDY2NywgMTUwNjc0LCAxNTA2ODEsIDE1MDY4OCwgMTUwNjk1LCAxNTA3MDIsIAorICAgIDE1MDcwOSwgMTUwNzE2LCAxNTA3MjMsIDE1MDczMCwgMTUwNzM3LCAxNTA3NDQsIDE1MDc1MSwgMTUwNzU4LCAxNTA3NjUsIAorICAgIDE1MDc3MiwgMTUwNzc5LCAxNTA3ODYsIDE1MDc5MywgMTUwODAwLCAxNTA4MDcsIDE1MDgxNCwgMTUwODIxLCAxNTA4MjgsIAorICAgIDE1MDgzNSwgMTUwODQyLCAxNTA4NDksIDE1MDg1NSwgMTUwODYxLCAxNTA4NjcsIDE1MDg3NCwgMTUwODgwLCAxNTA4ODcsIAorICAgIDE1MDg5MywgMTUwOTAwLCAxNTA5MDcsIDE1MDkxNCwgMTUwOTIxLCAxNTA5MjgsIDE1MDkzNSwgMTUwOTQyLCAxNTA5NDksIAorICAgIDE1MDk1NiwgMTUwOTYzLCAxNTA5NzAsIDE1MDk3NywgMTUwOTg0LCAxNTA5OTEsIDE1MDk5NywgMTUxMDA0LCAxNTEwMTEsIAorICAgIDE1MTAxOCwgMTUxMDI1LCAxNTEwMzIsIDE1MTA0MCwgMTUxMDQ3LCAxNTEwNTQsIDE1MTA2MSwgMTUxMDY4LCAxNTEwNzUsIAorICAgIDE1MTA4MiwgMTUxMDg5LCAxNTEwOTYsIDE1MTEwMywgMTUxMTEwLCAxNTExMTcsIDE1MTEyNCwgMTUxMTMwLCAxNTExMzcsIAorICAgIDE1MTE0NCwgMTUxMTUxLCAxNTExNTgsIDE1MTE2NSwgMTUxMTcyLCAxNTExNzksIDE1MTE4NywgMTUxMTk0LCAxNTEyMDAsIAorICAgIDE1MTIwNywgMTUxMjE0LCAxNTEyMjEsIDE1MTIyOCwgMTUxMjM1LCAxNTEyNDIsIDE1MTI0OSwgMTUxMjU2LCAxNTEyNjMsIAorICAgIDE1MTI3MCwgMTUxMjc3LCAxNTEyODQsIDE1MTI5MSwgMTUxMjk4LCAxNTEzMDUsIDE1MTMxMiwgMTUxMzE5LCAxNTEzMjYsIAorICAgIDE1MTMzMywgMTUxMzQwLCAxNTEzNDYsIDE1MTM1MywgMTUxMzYwLCAxNTEzNjcsIDE1MTM3NCwgMTUxMzgxLCAxNTEzODgsIAorICAgIDE1MTM5NSwgMTUxNDAyLCAxNTE0MDksIDE1MTQxNiwgMTUxNDIzLCAxNTE0MzAsIDE1MTQzNywgMTUxNDQ0LCAxNTE0NTEsIAorICAgIDE1MTQ1OCwgMTUxNDY1LCAxNTE0NzIsIDE1MTQ3OSwgMTUxNDg2LCAxNTE0OTMsIDE1MTUwMCwgMTUxNTA4LCAxNTE1MTYsIAorICAgIDE1MTUyNCwgMTUxNTMxLCAxNTE1MzgsIDE1MTU0NSwgMTUxNTUyLCAxNTE1NTksIDE1MTU2NiwgMTUxNTczLCAxNTE1ODAsIAorICAgIDE1MTU4NywgMTUxNTk0LCAxNTE2MDAsIDE1MTYwNywgMTUxNjE0LCAxNTE2MjEsIDE1MTYyOCwgMTUxNjM1LCAxNTE2NDIsIAorICAgIDE1MTY0OSwgMTUxNjU2LCAxNTE2NjMsIDE1MTY3MCwgMTUxNjc3LCAxNTE2ODQsIDE1MTY5MSwgMTUxNjk4LCAxNTE3MDYsIAorICAgIDE1MTcxNCwgMTUxNzIyLCAxNTE3MjksIDE1MTczNiwgMTUxNzQzLCAxNTE3NTAsIDE1MTc1NywgMTUxNzY0LCAxNTE3NzEsIAorICAgIDE1MTc3OCwgMTUxNzg1LCAxNTE3OTIsIDE1MTc5OSwgMTUxODA2LCAxNTE4MTMsIDE1MTgyMCwgMTUxODI3LCAxNTE4MzQsIAorICAgIDE1MTg0MSwgMTUxODQ4LCAxNTE4NTUsIDE1MTg2MiwgMTUxODY5LCAxNTE4NzYsIDE1MTg4MywgMTUxODkwLCAxNTE4OTcsIAorICAgIDE1MTkwNCwgMTUxOTExLCAxNTE5MTgsIDE1MTkyNSwgMTUxOTMyLCAxNTE5MzksIDE1MTk0NiwgMTUxOTUzLCAxNTE5NjAsIAorICAgIDE1MTk2NywgMTUxOTc0LCAxNTE5ODEsIDAsIDAsIDE1MTk4OCwgMTUxOTkyLCAxNTE5OTYsIDE1MjAwMCwgMTUyMDA0LCAKKyAgICAxNTIwMDgsIDE1MjAxMiwgMTUyMDE3LCAxNTIwMjEsIDE1MjAyNiwgMTUyMDMyLCAxNTIwMzgsIDE1MjA0NCwgMTUyMDUwLCAKKyAgICAxNTIwNTgsIDE1MjA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyMDcyLCAKKyAgICAxNTIwNzgsIDE1MjA4NCwgMTUyMDkwLCAxNTIwOTYsIDE1MjEwMiwgMTUyMTA4LCAxNTIxMTQsIDE1MjEyMCwgMTUyMTI2LCAKKyAgICAxNTIxMzEsIDE1MjEzNywgMTUyMTQyLCAxNTIxNDcsIDE1MjE1MywgMTUyMTU5LCAxNTIxNjUsIDE1MjE3MSwgMTUyMTc3LCAKKyAgICAxNTIxODIsIDE1MjE4NywgMTUyMTkzLCAxNTIxOTksIDE1MjIwNCwgMTUyMjEwLCAxNTIyMTYsIDE1MjIyMiwgMTUyMjI4LCAKKyAgICAxNTIyMzQsIDE1MjI0MCwgMTUyMjQ2LCAxNTIyNTIsIDE1MjI1OCwgMTUyMjY0LCAxNTIyNzAsIDE1MjI3NiwgMTUyMjgyLCAKKyAgICAxNTIyODgsIDE1MjI5NCwgMTUyMzAwLCAxNTIzMDYsIDE1MjMxMiwgMTUyMzE4LCAxNTIzMjQsIDE1MjMyOSwgMTUyMzM1LCAKKyAgICAxNTIzNDAsIDE1MjM0NSwgMTUyMzUxLCAxNTIzNTcsIDE1MjM2MywgMTUyMzY5LCAxNTIzNzUsIDE1MjM4MCwgMTUyMzg1LCAKKyAgICAxNTIzOTEsIDE1MjM5NywgMTUyNDAyLCAxNTI0MDgsIDE1MjQxNCwgMTUyNDIwLCAxNTI0MjYsIDE1MjQzMiwgMTUyNDM4LCAKKyAgICAxNTI0NDQsIDE1MjQ1MCwgMTUyNDU2LCAxNTI0NjIsIDE1MjQ2OCwgMTUyNDc0LCAxNTI0NzksIDE1MjQ4NCwgMTUyNDg4LCAKKyAgICAxNTI0OTMsIDE1MjUwMCwgMCwgMCwgMCwgMCwgMCwgMTUyNTA0LCAxNTI1MDksIDE1MjUxMywgMTUyNTE3LCAxNTI1MjEsIAorICAgIDE1MjUyNSwgMTUyNTI5LCAxNTI1MzMsIDE1MjUzOCwgMTUyNTQyLCAwLCAwLCAwLCAwLCAxNTI1NDcsIDE1MjU1MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3ODIzLCAxNDc4MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0Nzg0MSwgMTQ3ODQ4LCAxNDc4NTUsIDE0Nzg2MiwgMTQ3ODY4LCAxNDc4NzUsIDE0Nzg4MiwgCi0gICAgMTQ3ODg4LCAxNDc4OTUsIDE0NzkwMiwgMTQ3OTA5LCAxNDc5MTcsIDE0NzkyNSwgMTQ3OTMzLCAxNDc5NDEsIDE0Nzk0OSwgCi0gICAgMTQ3OTU3LCAxNDc5NjQsIDE0Nzk3MSwgMTQ3OTc4LCAxNDc5ODYsIDE0Nzk5NCwgMTQ4MDAyLCAxNDgwMTAsIDE0ODAxOCwgCi0gICAgMTQ4MDI2LCAxNDgwMzMsIDE0ODA0MCwgMTQ4MDQ3LCAxNDgwNTUsIDE0ODA2MywgMTQ4MDcxLCAxNDgwNzksIDE0ODA4NywgCi0gICAgMTQ4MDk1LCAxNDgxMDAsIDE0ODEwNSwgMTQ4MTEwLCAxNDgxMTUsIDE0ODEyMCwgMTQ4MTI1LCAxNDgxMzAsIDE0ODEzNSwgCi0gICAgMTQ4MTQwLCAwLCAwLCAwLCAwLCAxNDgxNDUsIDE0ODE1MSwgMTQ4MTU1LCAxNDgxNTksIDE0ODE2MywgMTQ4MTY3LCAKLSAgICAxNDgxNzEsIDE0ODE3NSwgMTQ4MTc5LCAxNDgxODMsIDE0ODE4NywgMTQ4MTkxLCAxNDgxOTUsIDE0ODE5OSwgMTQ4MjAzLCAKLSAgICAxNDgyMDcsIDE0ODIxMSwgMTQ4MjE1LCAxNDgyMTksIDE0ODIyMywgMTQ4MjI3LCAxNDgyMzEsIDE0ODIzNSwgMTQ4MjM5LCAKLSAgICAxNDgyNDMsIDE0ODI0NywgMTQ4MjUxLCAxNDgyNTUsIDE0ODI1OSwgMTQ4MjYzLCAxNDgyNjcsIDE0ODI3MSwgMTQ4Mjc1LCAKLSAgICAxNDgyNzksIDE0ODI4MywgMTQ4Mjg3LCAxNDgyOTEsIDE0ODI5NSwgMTQ4Mjk5LCAxNDgzMDMsIDE0ODMwNywgMTQ4MzExLCAKLSAgICAxNDgzMTUsIDE0ODMxOSwgMTQ4MzIzLCAxNDgzMjcsIDE0ODMzMSwgMTQ4MzM1LCAxNDgzMzksIDE0ODM0MywgMTQ4MzQ3LCAKLSAgICAxNDgzNTIsIDE0ODM1NiwgMTQ4MzYwLCAxNDgzNjQsIDE0ODM2OCwgMTQ4MzcyLCAxNDgzNzYsIDE0ODM4MCwgMTQ4Mzg0LCAKLSAgICAxNDgzODgsIDE0ODM5MiwgMTQ4Mzk2LCAxNDg0MDAsIDE0ODQwNCwgMTQ4NDA4LCAxNDg0MTIsIDE0ODQxNiwgMTQ4NDIwLCAKLSAgICAxNDg0MjQsIDE0ODQyOCwgMTQ4NDMyLCAxNDg0MzYsIDE0ODQ0MCwgMTQ4NDQ0LCAxNDg0NDgsIDE0ODQ1MiwgMTQ4NDU2LCAKLSAgICAxNDg0NjAsIDE0ODQ2NCwgMTQ4NDY4LCAxNDg0NzIsIDE0ODQ3NiwgMTQ4NDgwLCAxNDg0ODQsIDE0ODQ4OCwgMTQ4NDkyLCAKLSAgICAxNDg0OTYsIDE0ODUwMCwgMTQ4NTA0LCAxNDg1MDgsIDE0ODUxMiwgMTQ4NTE2LCAxNDg1MjAsIDE0ODUyNCwgMTQ4NTI4LCAKLSAgICAxNDg1MzIsIDE0ODUzNiwgMTQ4NTQwLCAxNDg1NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0ODU0OCwgMTQ4NTU0LCAxNDg1NjMsIDE0ODU3MSwgMTQ4NTc5LCAxNDg1ODgsIDE0ODU5NywgMTQ4NjA2LCAxNDg2MTUsIAotICAgIDE0ODYyNCwgMTQ4NjMzLCAxNDg2NDIsIDE0ODY1MSwgMTQ4NjYwLCAxNDg2NjksIDAsIDAsIDE0ODY3OCwgMTQ4Njg3LCAKLSAgICAxNDg2OTUsIDE0ODcwMywgMTQ4NzEyLCAxNDg3MjEsIDE0ODczMCwgMTQ4NzM5LCAxNDg3NDgsIDE0ODc1NywgMTQ4NzY2LCAKLSAgICAxNDg3NzUsIDE0ODc4NCwgMTQ4NzkzLCAxNDg4MDIsIDAsIDE0ODgxMCwgMTQ4ODE5LCAxNDg4MjcsIDE0ODgzNSwgCi0gICAgMTQ4ODQ0LCAxNDg4NTMsIDE0ODg2MiwgMTQ4ODcxLCAxNDg4ODAsIDE0ODg4OSwgMTQ4ODk4LCAxNDg5MDcsIDE0ODkxNiwgCi0gICAgMTQ4OTI1LCAxNDg5MzQsIDAsIDE0ODk0MSwgMTQ4OTUwLCAxNDg5NTgsIDE0ODk2NiwgMTQ4OTc1LCAxNDg5ODQsIAotICAgIDE0ODk5MywgMTQ5MDAyLCAxNDkwMTEsIDE0OTAyMCwgMTQ5MDI5LCAxNDkwMzgsIDE0OTA0NywgMTQ5MDU2LCAxNDkwNjUsIAotICAgIDE0OTA3MiwgMTQ5MDc4LCAxNDkwODQsIDE0OTA5MCwgMTQ5MDk2LCAxNDkxMDIsIDE0OTEwOCwgMTQ5MTE0LCAxNDkxMjAsIAotICAgIDE0OTEyNiwgMTQ5MTMyLCAxNDkxMzgsIDE0OTE0NCwgMTQ5MTUwLCAxNDkxNTYsIDE0OTE2MiwgMTQ5MTY4LCAxNDkxNzQsIAotICAgIDE0OTE4MCwgMTQ5MTg2LCAxNDkxOTIsIDE0OTE5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5MjA0LCAKLSAgICAxNDkyMTEsIDE0OTIxNiwgMTQ5MjIwLCAxNDkyMjQsIDE0OTIyOCwgMTQ5MjMzLCAxNDkyMzgsIDE0OTI0MywgMTQ5MjQ4LCAKLSAgICAxNDkyNTMsIDE0OTI1OCwgMTQ5MjY1LCAwLCAwLCAwLCAxNDkyNzMsIDE0OTI3OCwgMTQ5Mjg0LCAxNDkyOTAsIDE0OTI5NiwgCi0gICAgMTQ5MzAxLCAxNDkzMDcsIDE0OTMxMywgMTQ5MzE5LCAxNDkzMjQsIDE0OTMzMCwgMTQ5MzM2LCAxNDkzNDEsIDE0OTM0NywgCi0gICAgMTQ5MzUzLCAxNDkzNTgsIDE0OTM2NCwgMTQ5MzcwLCAxNDkzNzUsIDE0OTM4MCwgMTQ5Mzg2LCAxNDkzOTEsIDE0OTM5NywgCi0gICAgMTQ5NDAzLCAxNDk0MDksIDE0OTQxNSwgMTQ5NDIxLCAxNDk0MzEsIDE0OTQzOCwgMTQ5NDQ0LCAxNDk0NDcsIDAsIAotICAgIDE0OTQ1MCwgMTQ5NDU1LCAxNDk0NjEsIDE0OTQ2NywgMTQ5NDczLCAxNDk0NzgsIDE0OTQ4NCwgMTQ5NDkwLCAxNDk0OTYsIAotICAgIDE0OTUwMSwgMTQ5NTA3LCAxNDk1MTMsIDE0OTUxOCwgMTQ5NTI0LCAxNDk1MzAsIDE0OTUzNSwgMTQ5NTQxLCAxNDk1NDcsIAotICAgIDE0OTU1MiwgMTQ5NTU3LCAxNDk1NjMsIDE0OTU2OCwgMTQ5NTc0LCAxNDk1ODAsIDE0OTU4NiwgMTQ5NTkyLCAxNDk1OTgsIAotICAgIDE0OTYwMSwgMTQ5NjA0LCAxNDk2MDcsIDE0OTYxMCwgMTQ5NjEzLCAxNDk2MTYsIDE0OTYyMiwgMTQ5NjI5LCAxNDk2MzYsIAotICAgIDE0OTY0MywgMTQ5NjQ5LCAxNDk2NTYsIDE0OTY2MywgMTQ5NjcwLCAxNDk2NzYsIDE0OTY4MywgMTQ5NjkwLCAxNDk2OTYsIAotICAgIDE0OTcwMywgMTQ5NzEwLCAxNDk3MTYsIDE0OTcyMywgMTQ5NzMwLCAxNDk3MzYsIDE0OTc0MiwgMTQ5NzQ5LCAxNDk3NTUsIAotICAgIDE0OTc2MiwgMTQ5NzY5LCAxNDk3NzYsIDE0OTc4MywgMTQ5NzkwLCAxNDk3OTUsIDAsIDAsIDAsIDAsIDE0OTgwMCwgCi0gICAgMTQ5ODA2LCAxNDk4MTMsIDE0OTgyMCwgMTQ5ODI3LCAxNDk4MzMsIDE0OTg0MCwgMTQ5ODQ3LCAxNDk4NTQsIDE0OTg2MCwgCi0gICAgMTQ5ODY3LCAxNDk4NzQsIDE0OTg4MCwgMTQ5ODg3LCAxNDk4OTQsIDE0OTkwMCwgMTQ5OTA3LCAxNDk5MTQsIDE0OTkyMCwgCi0gICAgMTQ5OTI2LCAxNDk5MzMsIDE0OTkzOSwgMTQ5OTQ2LCAxNDk5NTMsIDE0OTk2MCwgMTQ5OTY3LCAxNDk5NzQsIDE0OTk4MywgCi0gICAgMTQ5OTg3LCAxNDk5OTAsIDE0OTk5NCwgMTQ5OTk4LCAxNTAwMDIsIDE1MDAwNSwgMTUwMDA4LCAxNTAwMTEsIDE1MDAxNCwgCi0gICAgMTUwMDE3LCAxNTAwMjAsIDE1MDAyMywgMTUwMDI2LCAxNTAwMjksIDE1MDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMDM4LCAxNTAwNDUsIAotICAgIDE1MDA1MywgMTUwMDYxLCAxNTAwNjksIDE1MDA3NiwgMTUwMDg0LCAxNTAwOTIsIDE1MDEwMCwgMTUwMTA3LCAxNTAxMTUsIAotICAgIDE1MDEyMywgMTUwMTMwLCAxNTAxMzgsIDE1MDE0NiwgMTUwMTUzLCAxNTAxNjEsIDE1MDE2OSwgMTUwMTc2LCAxNTAxODMsIAotICAgIDE1MDE5MSwgMTUwMTk4LCAxNTAyMDYsIDE1MDIxNCwgMTUwMjIyLCAxNTAyMzAsIDE1MDIzOCwgMTUwMjQyLCAxNTAyNDYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDI1MCwgMTUwMjU2LCAxNTAyNjIsIDE1MDI2OCwgCi0gICAgMTUwMjcyLCAxNTAyNzgsIDE1MDI4NCwgMTUwMjkwLCAxNTAyOTYsIDE1MDMwMiwgMTUwMzA4LCAxNTAzMTQsIDE1MDMyMCwgCi0gICAgMTUwMzI2LCAxNTAzMzIsIDE1MDMzOCwgMTUwMzQ0LCAxNTAzNTAsIDE1MDM1NiwgMTUwMzYyLCAxNTAzNjgsIDE1MDM3NCwgCi0gICAgMTUwMzgwLCAxNTAzODYsIDE1MDM5MiwgMTUwMzk4LCAxNTA0MDQsIDE1MDQxMCwgMTUwNDE2LCAxNTA0MjIsIDE1MDQyOCwgCi0gICAgMTUwNDM0LCAxNTA0NDAsIDE1MDQ0NiwgMTUwNDUyLCAxNTA0NTgsIDE1MDQ2NCwgMTUwNDcwLCAxNTA0NzYsIDE1MDQ4MiwgCi0gICAgMTUwNDg4LCAxNTA0OTQsIDE1MDUwMCwgMCwgMCwgMCwgMCwgMCwgMTUwNTA2LCAxNTA1MTcsIDE1MDUyOCwgMTUwNTM5LCAKLSAgICAxNTA1NTAsIDE1MDU2MSwgMTUwNTcyLCAxNTA1ODMsIDE1MDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjA1LCAKLSAgICAxNTA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjU1OSwgMTUyNTYzLCAxNTI1NjcsIDE1MjU3MSwgCisgICAgMCwgMTUyNTc1LCAxNTI1NzksIDE1MjU4MywgMTUyNTg3LCAxNTI1OTEsIDE1MjU5NSwgMTUyNTk5LCAxNTI2MDMsIAorICAgIDE1MjYwNywgMTUyNjExLCAxNTI2MTUsIDE1MjYxOSwgMTUyNjIzLCAxNTI2MjcsIDE1MjYzMSwgMTUyNjM1LCAxNTI2MzksIAorICAgIDE1MjY0MywgMTUyNjQ3LCAxNTI2NTEsIDE1MjY1NSwgMTUyNjU5LCAxNTI2NjMsIDE1MjY2NywgMTUyNjczLCAxNTI2NzksIAorICAgIDE1MjY4NSwgMCwgMTUyNjkxLCAxNTI2OTYsIDAsIDE1MjcwMSwgMCwgMCwgMTUyNzA2LCAwLCAxNTI3MTEsIDE1MjcxNiwgCisgICAgMTUyNzIxLCAxNTI3MjYsIDE1MjczMSwgMTUyNzM2LCAxNTI3NDEsIDE1Mjc0NiwgMTUyNzUxLCAxNTI3NTYsIDAsIAorICAgIDE1Mjc2MSwgMTUyNzY2LCAxNTI3NzEsIDE1Mjc3NiwgMCwgMTUyNzgxLCAwLCAxNTI3ODYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1Mjc5MSwgMCwgMCwgMCwgMCwgMTUyNzk3LCAwLCAxNTI4MDMsIDAsIDE1MjgwOSwgMCwgMTUyODE1LCAxNTI4MjEsIAorICAgIDE1MjgyNywgMCwgMTUyODMzLCAxNTI4MzksIDAsIDE1Mjg0NSwgMCwgMCwgMTUyODUxLCAwLCAxNTI4NTcsIDAsIDE1Mjg2MywgCisgICAgMCwgMTUyODY5LCAwLCAxNTI4NzcsIDAsIDE1Mjg4NSwgMTUyODkxLCAwLCAxNTI4OTcsIDAsIDAsIDE1MjkwMywgMTUyOTA5LCAKKyAgICAxNTI5MTUsIDE1MjkyMSwgMCwgMTUyOTI3LCAxNTI5MzMsIDE1MjkzOSwgMTUyOTQ1LCAxNTI5NTEsIDE1Mjk1NywgCisgICAgMTUyOTYzLCAwLCAxNTI5NjksIDE1Mjk3NSwgMTUyOTgxLCAxNTI5ODcsIDAsIDE1Mjk5MywgMTUyOTk5LCAxNTMwMDUsIAorICAgIDE1MzAxMSwgMCwgMTUzMDE5LCAwLCAxNTMwMjcsIDE1MzAzMywgMTUzMDM5LCAxNTMwNDUsIDE1MzA1MSwgMTUzMDU3LCAKKyAgICAxNTMwNjMsIDE1MzA2OSwgMTUzMDc1LCAxNTMwODEsIDAsIDE1MzA4NywgMTUzMDkzLCAxNTMwOTksIDE1MzEwNSwgCisgICAgMTUzMTExLCAxNTMxMTcsIDE1MzEyMywgMTUzMTI5LCAxNTMxMzUsIDE1MzE0MSwgMTUzMTQ3LCAxNTMxNTMsIDE1MzE1OSwgCisgICAgMTUzMTY1LCAxNTMxNzEsIDE1MzE3NywgMTUzMTgzLCAwLCAwLCAwLCAwLCAwLCAxNTMxODksIDE1MzE5NCwgMTUzMTk5LCAwLCAKKyAgICAxNTMyMDQsIDE1MzIwOSwgMTUzMjE0LCAxNTMyMTksIDE1MzIyNCwgMCwgMTUzMjI5LCAxNTMyMzQsIDE1MzIzOSwgCisgICAgMTUzMjQ0LCAxNTMyNDksIDE1MzI1NCwgMTUzMjU5LCAxNTMyNjQsIDE1MzI2OSwgMTUzMjc0LCAxNTMyNzksIDE1MzI4NCwgCisgICAgMTUzMjg5LCAxNTMyOTQsIDE1MzI5OSwgMTUzMzA0LCAxNTMzMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzMxNCwgMTUzMzI0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzMzIsIDE1MzMzOSwgMTUzMzQ2LCAxNTMzNTMsIAorICAgIDE1MzM1OSwgMTUzMzY2LCAxNTMzNzMsIDE1MzM3OSwgMTUzMzg2LCAxNTMzOTMsIDE1MzQwMCwgMTUzNDA4LCAxNTM0MTYsIAorICAgIDE1MzQyNCwgMTUzNDMyLCAxNTM0NDAsIDE1MzQ0OCwgMTUzNDU1LCAxNTM0NjIsIDE1MzQ2OSwgMTUzNDc3LCAxNTM0ODUsIAorICAgIDE1MzQ5MywgMTUzNTAxLCAxNTM1MDksIDE1MzUxNywgMTUzNTI0LCAxNTM1MzEsIDE1MzUzOCwgMTUzNTQ2LCAxNTM1NTQsIAorICAgIDE1MzU2MiwgMTUzNTcwLCAxNTM1NzgsIDE1MzU4NiwgMTUzNTkxLCAxNTM1OTYsIDE1MzYwMSwgMTUzNjA2LCAxNTM2MTEsIAorICAgIDE1MzYxNiwgMTUzNjIxLCAxNTM2MjYsIDE1MzYzMSwgMCwgMCwgMCwgMCwgMTUzNjM2LCAxNTM2NDIsIDE1MzY0NiwgCisgICAgMTUzNjUwLCAxNTM2NTQsIDE1MzY1OCwgMTUzNjYyLCAxNTM2NjYsIDE1MzY3MCwgMTUzNjc0LCAxNTM2NzgsIDE1MzY4MiwgCisgICAgMTUzNjg2LCAxNTM2OTAsIDE1MzY5NCwgMTUzNjk4LCAxNTM3MDIsIDE1MzcwNiwgMTUzNzEwLCAxNTM3MTQsIDE1MzcxOCwgCisgICAgMTUzNzIyLCAxNTM3MjYsIDE1MzczMCwgMTUzNzM0LCAxNTM3MzgsIDE1Mzc0MiwgMTUzNzQ2LCAxNTM3NTAsIDE1Mzc1NCwgCisgICAgMTUzNzU4LCAxNTM3NjIsIDE1Mzc2NiwgMTUzNzcwLCAxNTM3NzQsIDE1Mzc3OCwgMTUzNzgyLCAxNTM3ODYsIDE1Mzc5MCwgCisgICAgMTUzNzk0LCAxNTM3OTgsIDE1MzgwMiwgMTUzODA2LCAxNTM4MTAsIDE1MzgxNCwgMTUzODE4LCAxNTM4MjIsIDE1MzgyNiwgCisgICAgMTUzODMwLCAxNTM4MzQsIDE1MzgzOCwgMTUzODQzLCAxNTM4NDcsIDE1Mzg1MSwgMTUzODU1LCAxNTM4NTksIDE1Mzg2MywgCisgICAgMTUzODY3LCAxNTM4NzEsIDE1Mzg3NSwgMTUzODc5LCAxNTM4ODMsIDE1Mzg4NywgMTUzODkxLCAxNTM4OTUsIDE1Mzg5OSwgCisgICAgMTUzOTAzLCAxNTM5MDcsIDE1MzkxMSwgMTUzOTE1LCAxNTM5MTksIDE1MzkyMywgMTUzOTI3LCAxNTM5MzEsIDE1MzkzNSwgCisgICAgMTUzOTM5LCAxNTM5NDMsIDE1Mzk0NywgMTUzOTUxLCAxNTM5NTUsIDE1Mzk1OSwgMTUzOTYzLCAxNTM5NjcsIDE1Mzk3MSwgCisgICAgMTUzOTc1LCAxNTM5NzksIDE1Mzk4MywgMTUzOTg3LCAxNTM5OTEsIDE1Mzk5NSwgMTUzOTk5LCAxNTQwMDMsIDE1NDAwNywgCisgICAgMTU0MDExLCAxNTQwMTUsIDE1NDAxOSwgMTU0MDIzLCAxNTQwMjcsIDE1NDAzMSwgMTU0MDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTQwMzksIDE1NDA0NSwgMTU0MDU0LCAxNTQwNjIsIDE1NDA3MCwgMTU0MDc5LCAxNTQwODgsIAorICAgIDE1NDA5NywgMTU0MTA2LCAxNTQxMTUsIDE1NDEyNCwgMTU0MTMzLCAxNTQxNDIsIDE1NDE1MSwgMTU0MTYwLCAwLCAwLCAKKyAgICAxNTQxNjksIDE1NDE3OCwgMTU0MTg2LCAxNTQxOTQsIDE1NDIwMywgMTU0MjEyLCAxNTQyMjEsIDE1NDIzMCwgMTU0MjM5LCAKKyAgICAxNTQyNDgsIDE1NDI1NywgMTU0MjY2LCAxNTQyNzUsIDE1NDI4NCwgMTU0MjkzLCAwLCAxNTQzMDEsIDE1NDMxMCwgCisgICAgMTU0MzE4LCAxNTQzMjYsIDE1NDMzNSwgMTU0MzQ0LCAxNTQzNTMsIDE1NDM2MiwgMTU0MzcxLCAxNTQzODAsIDE1NDM4OSwgCisgICAgMTU0Mzk4LCAxNTQ0MDcsIDE1NDQxNiwgMTU0NDI1LCAwLCAxNTQ0MzIsIDE1NDQ0MSwgMTU0NDQ5LCAxNTQ0NTcsIAorICAgIDE1NDQ2NiwgMTU0NDc1LCAxNTQ0ODQsIDE1NDQ5MywgMTU0NTAyLCAxNTQ1MTEsIDE1NDUyMCwgMTU0NTI5LCAxNTQ1MzgsIAorICAgIDE1NDU0NywgMTU0NTU2LCAxNTQ1NjMsIDE1NDU2OSwgMTU0NTc1LCAxNTQ1ODEsIDE1NDU4NywgMTU0NTkzLCAxNTQ1OTksIAorICAgIDE1NDYwNSwgMTU0NjExLCAxNTQ2MTcsIDE1NDYyMywgMTU0NjI5LCAxNTQ2MzUsIDE1NDY0MSwgMTU0NjQ3LCAxNTQ2NTMsIAorICAgIDE1NDY1OSwgMTU0NjY1LCAxNTQ2NzEsIDE1NDY3NywgMTU0NjgzLCAxNTQ2ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE1NDY5NSwgMTU0NzAyLCAxNTQ3MDcsIDE1NDcxMSwgMTU0NzE1LCAxNTQ3MTksIDE1NDcyNCwgMTU0NzI5LCAKKyAgICAxNTQ3MzQsIDE1NDczOSwgMTU0NzQ0LCAxNTQ3NDksIDE1NDc1NiwgMCwgMCwgMCwgMTU0NzY0LCAxNTQ3NjksIDE1NDc3NSwgCisgICAgMTU0NzgxLCAxNTQ3ODcsIDE1NDc5MiwgMTU0Nzk4LCAxNTQ4MDQsIDE1NDgxMCwgMTU0ODE1LCAxNTQ4MjEsIDE1NDgyNywgCisgICAgMTU0ODMyLCAxNTQ4MzgsIDE1NDg0NCwgMTU0ODQ5LCAxNTQ4NTUsIDE1NDg2MSwgMTU0ODY2LCAxNTQ4NzIsIDE1NDg3OCwgCisgICAgMTU0ODgzLCAxNTQ4ODksIDE1NDg5NSwgMTU0OTAxLCAxNTQ5MDcsIDE1NDkxMywgMTU0OTI0LCAxNTQ5MzEsIDE1NDkzNywgCisgICAgMTU0OTQwLCAwLCAxNTQ5NDMsIDE1NDk0OCwgMTU0OTU0LCAxNTQ5NjAsIDE1NDk2NiwgMTU0OTcxLCAxNTQ5NzcsIAorICAgIDE1NDk4MywgMTU0OTg5LCAxNTQ5OTQsIDE1NTAwMCwgMTU1MDA2LCAxNTUwMTEsIDE1NTAxNywgMTU1MDIzLCAxNTUwMjgsIAorICAgIDE1NTAzNCwgMTU1MDQwLCAxNTUwNDUsIDE1NTA1MSwgMTU1MDU3LCAxNTUwNjIsIDE1NTA2OCwgMTU1MDc0LCAxNTUwODAsIAorICAgIDE1NTA4NiwgMTU1MDkyLCAxNTUwOTUsIDE1NTA5OCwgMTU1MTAxLCAxNTUxMDQsIDE1NTEwNywgMTU1MTEwLCAxNTUxMTYsIAorICAgIDE1NTEyMywgMTU1MTMwLCAxNTUxMzcsIDE1NTE0MywgMTU1MTUwLCAxNTUxNTcsIDE1NTE2NCwgMTU1MTcwLCAxNTUxNzcsIAorICAgIDE1NTE4NCwgMTU1MTkwLCAxNTUxOTcsIDE1NTIwNCwgMTU1MjEwLCAxNTUyMTcsIDE1NTIyNCwgMTU1MjMwLCAxNTUyMzcsIAorICAgIDE1NTI0NCwgMTU1MjUwLCAxNTUyNTcsIDE1NTI2NCwgMTU1MjcxLCAxNTUyNzgsIDE1NTI4NSwgMTU1MjkwLCAwLCAwLCAwLCAKKyAgICAwLCAxNTUyOTUsIDE1NTMwMSwgMTU1MzA4LCAxNTUzMTUsIDE1NTMyMiwgMTU1MzI4LCAxNTUzMzUsIDE1NTM0MiwgCisgICAgMTU1MzQ5LCAxNTUzNTUsIDE1NTM2MiwgMTU1MzY5LCAxNTUzNzUsIDE1NTM4MiwgMTU1Mzg5LCAxNTUzOTUsIDE1NTQwMiwgCisgICAgMTU1NDA5LCAxNTU0MTUsIDE1NTQyMiwgMTU1NDI5LCAxNTU0MzUsIDE1NTQ0MiwgMTU1NDQ5LCAxNTU0NTYsIDE1NTQ2MywgCisgICAgMTU1NDcwLCAxNTU0NzksIDE1NTQ4MywgMTU1NDg2LCAxNTU0OTAsIDE1NTQ5NCwgMTU1NDk4LCAxNTU1MDEsIDE1NTUwNCwgCisgICAgMTU1NTA3LCAxNTU1MTAsIDE1NTUxMywgMTU1NTE2LCAxNTU1MTksIDE1NTUyMiwgMTU1NTI1LCAxNTU1MzEsIDE1NTUzNCwgCisgICAgMTU1NTM4LCAxNTU1NDMsIDE1NTU0NywgMTU1NTUyLCAxNTU1NTcsIDE1NTU2MywgMTU1NTY5LCAxNTU1NzUsIDE1NTU4MCwgCisgICAgMTU1NTg4LCAxNTU1OTQsIDE1NTU5NywgMTU1NjAwLCAxNTU2MDMsIDE1NTYwNiwgMTU1NjA5LCAxNTU2MTIsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTYxNSwgMTU1NjIyLCAxNTU2MzAsIDE1NTYzOCwgMTU1NjQ2LCAxNTU2NTMsIDE1NTY2MSwgCisgICAgMTU1NjY5LCAxNTU2NzcsIDE1NTY4NCwgMTU1NjkyLCAxNTU3MDAsIDE1NTcwNywgMTU1NzE1LCAxNTU3MjMsIDE1NTczMCwgCisgICAgMTU1NzM4LCAxNTU3NDYsIDE1NTc1MywgMTU1NzYxLCAxNTU3NjksIDE1NTc3NiwgMTU1Nzg0LCAxNTU3OTIsIDE1NTgwMCwgCisgICAgMTU1ODA4LCAxNTU4MTYsIDE1NTgyMCwgMTU1ODI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTU4MjgsIDE1NTgzNCwgMTU1ODQwLCAxNTU4NDYsIDE1NTg1MCwgMTU1ODU2LCAxNTU4NjIsIDE1NTg2OCwgMTU1ODc0LCAKKyAgICAxNTU4ODAsIDE1NTg4NiwgMTU1ODkyLCAxNTU4OTgsIDE1NTkwNCwgMTU1OTEwLCAxNTU5MTYsIDE1NTkyMiwgMTU1OTI4LCAKKyAgICAxNTU5MzQsIDE1NTk0MCwgMTU1OTQ2LCAxNTU5NTIsIDE1NTk1OCwgMTU1OTY0LCAxNTU5NzAsIDE1NTk3NiwgMTU1OTgyLCAKKyAgICAxNTU5ODgsIDE1NTk5NCwgMTU2MDAwLCAxNTYwMDYsIDE1NjAxMiwgMTU2MDE4LCAxNTYwMjQsIDE1NjAzMCwgMTU2MDM2LCAKKyAgICAxNTYwNDIsIDE1NjA0OCwgMTU2MDU0LCAxNTYwNjAsIDE1NjA2NiwgMTU2MDcyLCAxNTYwNzgsIDE1NjA4NCwgMCwgMCwgMCwgCisgICAgMCwgMTU2MDkwLCAxNTYxMDEsIDE1NjExMiwgMTU2MTIzLCAxNTYxMzQsIDE1NjE0NSwgMTU2MTU2LCAxNTYxNjcsIAorICAgIDE1NjE3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2MTg5LCAxNTYxOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDYxMywgMTUwNjE1LCAxNTA2MTcsIDE1MDYyMSwgMTUwNjI2LCAxNTA2MzEsIAotICAgIDE1MDYzMywgMTUwNjM5LCAxNTA2NDQsIDE1MDY0NiwgMTUwNjUyLCAxNTA2NTYsIDE1MDY1OCwgMTUwNjYyLCAxNTA2NjgsIAotICAgIDE1MDY3NCwgMTUwNjgwLCAxNTA2ODUsIDE1MDY5MCwgMTUwNjk3LCAxNTA3MDQsIDE1MDcxMSwgMTUwNzE2LCAxNTA3MjMsIAotICAgIDE1MDczMCwgMTUwNzM3LCAxNTA3NDEsIDE1MDc0OCwgMTUwNzU3LCAxNTA3NjYsIDE1MDc3MywgMTUwNzc4LCAxNTA3ODIsIAotICAgIDE1MDc4NiwgMTUwNzg4LCAxNTA3OTEsIDE1MDc5NCwgMTUwODAxLCAxNTA4MDgsIDE1MDgxOCwgMTUwODIzLCAxNTA4MjgsIAotICAgIDE1MDgzMywgMTUwODM4LCAxNTA4NDAsIDE1MDg0NiwgMTUwODUwLCAxNTA4NTIsIDE1MDg1NCwgMTUwODU2LCAxNTA4NTgsIAotICAgIDE1MDg2MiwgMTUwODY2LCAxNTA4NzAsIDE1MDg3MiwgMTUwODc2LCAxNTA4NzgsIDE1MDg4MiwgMTUwODg0LCAxNTA4ODYsIAotICAgIDE1MDg4OCwgMTUwODkwLCAxNTA4OTUsIDE1MDkwMCwgMTUwOTAyLCAxNTA5MDgsIDE1MDkxMiwgMTUwOTE2LCAxNTA5MjQsIAotICAgIDE1MDkyNiwgMTUwOTI4LCAxNTA5MzAsIDE1MDkzMiwgMTUwOTM0LCAxNTA5MzYsIDE1MDkzOCwgMTUwOTQwLCAxNTA5NDIsIAotICAgIDE1MDk0NCwgMTUwOTQ4LCAxNTA5NTIsIDE1MDk1NCwgMTUwOTU2LCAxNTA5NTgsIDE1MDk2MCwgMTUwOTYyLCAxNTA5NjcsIAotICAgIDE1MDk3MywgMTUwOTc3LCAxNTA5ODEsIDE1MDk4NSwgMTUwOTg5LCAxNTA5OTQsIDE1MDk5OCwgMTUxMDAwLCAxNTEwMDIsIAotICAgIDE1MTAwNiwgMTUxMDEyLCAxNTEwMTQsIDE1MTAxNiwgMTUxMDE4LCAxNTEwMjIsIDE1MTAzMSwgMTUxMDM3LCAxNTEwNDEsIAotICAgIDE1MTA0NSwgMTUxMDQ3LCAxNTEwNDksIDE1MTA1MiwgMTUxMDU0LCAxNTEwNTYsIDE1MTA1OCwgMTUxMDYyLCAxNTEwNjQsIAotICAgIDE1MTA2OCwgMTUxMDczLCAxNTEwNzUsIDE1MTA4MCwgMTUxMDg2LCAxNTEwOTMsIDE1MTA5NywgMTUxMTAxLCAxNTExMDUsIAotICAgIDE1MTEwOSwgMTUxMTE1LCAxNTExMTksIDE1MTEyNywgMTUxMTM0LCAxNTExMzYsIDE1MTEzOCwgMTUxMTQyLCAxNTExNDYsIAotICAgIDE1MTE0OCwgMTUxMTUyLCAxNTExNTYsIDE1MTE1OCwgMTUxMTYyLCAxNTExNjQsIDE1MTE2OCwgMTUxMTcyLCAxNTExNzYsIAotICAgIDE1MTE4MCwgMTUxMTg0LCAxNTExODgsIDE1MTE5MiwgMTUxMTk2LCAxNTEyMDIsIDE1MTIwNiwgMTUxMjEwLCAxNTEyMjEsIAotICAgIDE1MTIyNiwgMTUxMjMwLCAxNTEyMzQsIDE1MTI0MCwgMTUxMjQ0LCAxNTEyNDgsIDE1MTI1MiwgMTUxMjU5LCAxNTEyNjYsIAotICAgIDE1MTI3MCwgMTUxMjc0LCAxNTEyNzgsIDE1MTI4MiwgMTUxMjg2LCAxNTEyOTMsIDE1MTI5NSwgMTUxMjk5LCAxNTEzMDEsIAotICAgIDE1MTMwMywgMTUxMzA3LCAxNTEzMTEsIDE1MTMxNSwgMTUxMzE3LCAxNTEzMjEsIDE1MTMyNSwgMTUxMzI5LCAxNTEzMzMsIAotICAgIDE1MTMzNywgMTUxMzM5LCAxNTEzNDMsIDE1MTM0NSwgMTUxMzUxLCAxNTEzNTQsIDE1MTM1OSwgMTUxMzYxLCAxNTEzNjMsIAotICAgIDE1MTM2NiwgMTUxMzY4LCAxNTEzNzAsIDE1MTM3MywgMTUxMzgwLCAxNTEzODcsIDE1MTM5NCwgMTUxMzk5LCAxNTE0MDMsIAotICAgIDE1MTQwNSwgMTUxNDA3LCAxNTE0MDksIDE1MTQxMywgMTUxNDE1LCAxNTE0MTksIDE1MTQyMywgMTUxNDI3LCAxNTE0MjksIAotICAgIDE1MTQzMywgMTUxNDM1LCAxNTE0MzksIDE1MTQ0MywgMTUxNDUwLCAxNTE0NTIsIDE1MTQ2MSwgMTUxNDcwLCAxNTE0NzksIAotICAgIDE1MTQ4NSwgMTUxNDg3LCAxNTE0OTIsIDE1MTQ5NiwgMTUxNTAwLCAxNTE1MDIsIDE1MTUwOCwgMTUxNTEyLCAxNTE1MTQsIAotICAgIDE1MTUxOCwgMTUxNTIyLCAxNTE1MjQsIDE1MTUyOCwgMTUxNTMzLCAxNTE1MzcsIDE1MTU0MywgMTUxNTQ5LCAxNTE1NTEsIAotICAgIDE1MTU1MywgMTUxNTU5LCAxNTE1NjEsIDE1MTU2NSwgMTUxNTY5LCAxNTE1NzEsIDE1MTU3NSwgMTUxNTc3LCAxNTE1ODEsIAotICAgIDE1MTU4NSwgMTUxNTg5LCAxNTE1OTIsIDE1MTU5NSwgMTUxNjAwLCAxNTE2MDUsIDE1MTYwNywgMTUxNjEwLCAxNTE2MTIsIAotICAgIDE1MTYxOSwgMTUxNjIzLCAxNTE2MjUsIDE1MTYzMiwgMTUxNjM5LCAxNTE2NDYsIDE1MTY1MywgMTUxNjYwLCAxNTE2NjIsIAotICAgIDE1MTY2NCwgMTUxNjY2LCAxNTE2NzAsIDE1MTY3MiwgMTUxNjc0LCAxNTE2NzYsIDE1MTY3OCwgMTUxNjgwLCAxNTE2ODIsIAotICAgIDE1MTY4NCwgMTUxNjg2LCAxNTE2ODgsIDE1MTY5MCwgMTUxNjkyLCAxNTE2OTQsIDE1MTY5NiwgMTUxNjk4LCAxNTE3MDAsIAotICAgIDE1MTcwMiwgMTUxNzA0LCAxNTE3MDYsIDE1MTcwOCwgMTUxNzEwLCAxNTE3MTIsIDE1MTcxNCwgMTUxNzE4LCAxNTE3MjAsIAotICAgIDE1MTcyMiwgMTUxNzI0LCAxNTE3MjgsIDE1MTczMCwgMTUxNzM0LCAxNTE3MzYsIDE1MTczOCwgMTUxNzQyLCAxNTE3NDYsIAotICAgIDE1MTc1MiwgMTUxNzU0LCAxNTE3NTYsIDE1MTc1OCwgMTUxNzYwLCAxNTE3NjQsIDE1MTc2OCwgMTUxNzcwLCAxNTE3NzQsIAotICAgIDE1MTc3OCwgMTUxNzgyLCAxNTE3ODYsIDE1MTc5MCwgMTUxNzk0LCAxNTE3OTgsIDE1MTgwMiwgMTUxODA2LCAxNTE4MTAsIAotICAgIDE1MTgxNCwgMTUxODE4LCAxNTE4MjIsIDE1MTgyNiwgMTUxODMwLCAxNTE4MzQsIDE1MTgzOCwgMTUxODQyLCAxNTE4NDQsIAotICAgIDE1MTg0NiwgMTUxODQ4LCAxNTE4NTAsIDE1MTg1MiwgMTUxODU0LCAxNTE4NTYsIDE1MTg2NCwgMTUxODcyLCAxNTE4ODAsIAotICAgIDE1MTg4OCwgMTUxODkzLCAxNTE4OTgsIDE1MTkwMywgMTUxOTA3LCAxNTE5MTEsIDE1MTkxNiwgMTUxOTIwLCAxNTE5MjIsIAotICAgIDE1MTkyNiwgMTUxOTI4LCAxNTE5MzAsIDE1MTkzMiwgMTUxOTM0LCAxNTE5MzYsIDE1MTkzOCwgMTUxOTQwLCAxNTE5NDQsIAotICAgIDE1MTk0NiwgMTUxOTQ4LCAxNTE5NTAsIDE1MTk1NCwgMTUxOTU4LCAxNTE5NjIsIDE1MTk2NiwgMTUxOTcwLCAxNTE5NzIsIAotICAgIDE1MTk3OCwgMTUxOTg0LCAxNTE5ODYsIDE1MTk4OCwgMTUxOTkwLCAxNTE5OTIsIDE1MTk5NCwgMTUyMDAzLCAxNTIwMTAsIAotICAgIDE1MjAxNywgMTUyMDIxLCAxNTIwMjgsIDE1MjAzMywgMTUyMDQwLCAxNTIwNDksIDE1MjA1NCwgMTUyMDU4LCAxNTIwNjIsIAotICAgIDE1MjA2NCwgMTUyMDY4LCAxNTIwNzAsIDE1MjA3NCwgMTUyMDc4LCAxNTIwODAsIDE1MjA4NCwgMTUyMDg4LCAxNTIwOTIsIAotICAgIDE1MjA5NCwgMTUyMDk2LCAxNTIxMDIsIDE1MjEwNCwgMTUyMTA2LCAxNTIxMDgsIDE1MjExMiwgMTUyMTE2LCAxNTIxMTgsIAotICAgIDE1MjEyMiwgMTUyMTI0LCAxNTIxMjYsIDE1MjEyOSwgMTUyMTMzLCAxNTIxMzUsIDE1MjEzOSwgMTUyMTQxLCAxNTIxNDMsIAotICAgIDE1MjE0OCwgMTUyMTUwLCAxNTIxNTQsIDE1MjE1OCwgMTUyMTYxLCAxNTIxNjUsIDE1MjE2OSwgMTUyMTczLCAxNTIxNzcsIAotICAgIDE1MjE4MSwgMTUyMTg1LCAxNTIxODksIDE1MjE5NCwgMTUyMTk4LCAxNTIyMDIsIDE1MjIxMSwgMTUyMjE2LCAxNTIyMTksIAotICAgIDE1MjIyMSwgMTUyMjI0LCAxNTIyMjcsIDE1MjIzMiwgMTUyMjM0LCAxNTIyMzcsIDE1MjI0MiwgMTUyMjQ2LCAxNTIyNDksIAotICAgIDE1MjI1MywgMTUyMjU3LCAxNTIyNjAsIDE1MjI2NSwgMTUyMjY5LCAxNTIyNzMsIDE1MjI3NywgMTUyMjgxLCAxNTIyODcsIAotICAgIDE1MjI5MywgMTUyMjk5LCAxNTIzMDUsIDE1MjMxMCwgMTUyMzIwLCAxNTIzMjIsIDE1MjMyNiwgMTUyMzI4LCAxNTIzMzAsIAotICAgIDE1MjMzNCwgMTUyMzM4LCAxNTIzNDAsIDE1MjM0NCwgMTUyMzQ5LCAxNTIzNTQsIDE1MjM2MCwgMTUyMzYyLCAxNTIzNjYsIAotICAgIDE1MjM3MCwgMTUyMzc2LCAxNTIzODIsIDE1MjM4NiwgMTUyMzg4LCAxNTIzOTAsIDE1MjM5NCwgMTUyMzk2LCAxNTI0MDAsIAotICAgIDE1MjQwNCwgMTUyNDA4LCAxNTI0MTAsIDE1MjQxMiwgMTUyNDE5LCAxNTI0MjMsIDE1MjQyNiwgMTUyNDMwLCAxNTI0MzQsIAotICAgIDE1MjQzOCwgMTUyNDQwLCAxNTI0NDQsIDE1MjQ0NiwgMTUyNDQ4LCAxNTI0NTIsIDE1MjQ1NCwgMTUyNDU4LCAxNTI0NjIsIAotICAgIDE1MjQ2OCwgMTUyNDcyLCAxNTI0NzYsIDE1MjQ4MCwgMTUyNDgyLCAxNTI0ODUsIDE1MjQ4OSwgMTUyNDk1LCAxNTI1MDQsIAotICAgIDE1MjUxMywgMTUyNTIxLCAxNTI1MjksIDE1MjUzMSwgMTUyNTM1LCAxNTI1MzcsIDE1MjU0MSwgMTUyNTUyLCAxNTI1NTYsIAotICAgIDE1MjU2MiwgMTUyNTY4LCAxNTI1NzMsIDE1MjU3NSwgMTUyNTgwLCAxNTI1ODQsIDE1MjU4NiwgMTUyNTg4LCAxNTI1OTAsIAotICAgIDE1MjU5NCwgMTUyNTk4LCAxNTI2MDIsIDE1MjYwNywgMTUyNjE3LCAxNTI2MzIsIDE1MjY0MiwgMTUyNjUyLCAxNTI2NTYsIAotICAgIDE1MjY2MCwgMTUyNjY2LCAxNTI2NjgsIDE1MjY3NiwgMTUyNjg0LCAxNTI2ODYsIDE1MjY5MCwgMTUyNjk2LCAxNTI3MDIsIAotICAgIDE1MjcwOSwgMTUyNzE2LCAxNTI3MTgsIDE1MjcyMCwgMTUyNzIzLCAxNTI3MjUsIDE1MjczMSwgMTUyNzMzLCAxNTI3MzYsIAotICAgIDE1Mjc0MCwgMTUyNzQ2LCAxNTI3NTIsIDE1Mjc2MywgMTUyNzY5LCAxNTI3NzUsIDE1Mjc4MywgMTUyNzg3LCAxNTI3OTUsIAotICAgIDE1MjgwMywgMTUyODA5LCAxNTI4MTUsIDE1MjgyMiwgMTUyODI0LCAxNTI4MjgsIDE1MjgzMCwgMTUyODMyLCAxNTI4MzcsIAotICAgIDE1MjgzOSwgMTUyODQxLCAxNTI4NDMsIDE1Mjg0NSwgMTUyODQ5LCAxNTI4NTksIDE1Mjg2NSwgMTUyODY5LCAxNTI4NzMsIAotICAgIDE1Mjg3NywgMTUyODgzLCAxNTI4ODksIDE1Mjg5NSwgMTUyOTAxLCAxNTI5MDYsIDE1MjkxMSwgMTUyOTE3LCAxNTI5MjMsIAotICAgIDE1MjkzMCwgMTUyOTM3LCAxNTI5NDUsIDE1Mjk1MywgMTUyOTU4LCAxNTI5NjYsIDE1Mjk3MCwgMTUyOTc5LCAxNTI5ODgsIAotICAgIDE1Mjk5NCwgMTUyOTk4LCAxNTMwMDIsIDE1MzAwNiwgMTUzMDA5LCAxNTMwMTQsIDE1MzAxNiwgMTUzMDE4LCAxNTMwMjAsIAotICAgIDE1MzAyNywgMTUzMDMyLCAxNTMwMzksIDE1MzA0NiwgMTUzMDUzLCAxNTMwNjEsIDE1MzA2OSwgMTUzMDc3LCAxNTMwODUsIAotICAgIDE1MzA5MywgMTUzMTAxLCAxNTMxMDksIDE1MzExNywgMTUzMTI1LCAxNTMxMzEsIDE1MzEzNywgMTUzMTQzLCAxNTMxNDksIAotICAgIDE1MzE1NSwgMTUzMTYxLCAxNTMxNjcsIDE1MzE3MywgMTUzMTc5LCAxNTMxODUsIDE1MzE5MSwgMTUzMTk3LCAxNTMyMDAsIAotICAgIDE1MzIwOSwgMTUzMjE4LCAxNTMyMjAsIDE1MzIyNywgMTUzMjMxLCAxNTMyMzMsIDE1MzIzNSwgMTUzMjM5LCAxNTMyNDUsIAotICAgIDE1MzI0OSwgMTUzMjUxLCAxNTMyNjEsIDE1MzI2NywgMTUzMjcxLCAxNTMyNzMsIDE1MzI3NywgMCwgMTUzMjc5LCAKLSAgICAxNTMyODYsIDE1MzI5MywgMTUzMzAwLCAxNTMzMDUsIDE1MzMxMCwgMTUzMzE5LCAxNTMzMjUsIDE1MzMzMCwgMTUzMzM0LCAKLSAgICAxNTMzMzksIDE1MzM0MywgMTUzMzUwLCAxNTMzNTQsIDE1MzM1NywgMTUzMzYyLCAxNTMzNjksIDE1MzM3NiwgMTUzMzgxLCAKLSAgICAxNTMzODYsIDE1MzM5MSwgMTUzMzk4LCAxNTM0MDcsIDE1MzQxOCwgMTUzNDI0LCAxNTM0MzAsIDE1MzQzNiwgMTUzNDQ2LCAKLSAgICAxNTM0NjEsIDE1MzQ3MCwgMTUzNDc4LCAxNTM0ODYsIDE1MzQ5NCwgMTUzNTAyLCAxNTM1MTAsIDE1MzUxOCwgMTUzNTI2LCAKLSAgICAxNTM1MzQsIDE1MzU0MiwgMTUzNTUwLCAxNTM1NTgsIDAsIDE1MzU2NiwgMTUzNTcwLCAxNTM1NzUsIDE1MzU4MCwgCi0gICAgMTUzNTgyLCAxNTM1ODYsIDE1MzU5NSwgMTUzNjA0LCAxNTM2MTIsIDE1MzYxNiwgMTUzNjIwLCAxNTM2MjUsIDE1MzYzMCwgCi0gICAgMTUzNjM1LCAxNTM2MzcsIDE1MzY0MiwgMTUzNjQ2LCAxNTM2NDgsIDE1MzY1MiwgMTUzNjU2LCAxNTM2NjIsIDE1MzY2NywgCi0gICAgMTUzNjc1LCAxNTM2ODAsIDE1MzY4NSwgMTUzNjkwLCAxNTM2OTcsIDE1MzcwMCwgMTUzNzAyLCAxNTM3MDUsIDE1MzcxMCwgCi0gICAgMTUzNzE2LCAxNTM3MjAsIDE1MzcyNCwgMTUzNzMwLCAxNTM3MzYsIDE1MzczOCwgMTUzNzQyLCAxNTM3NDYsIDE1Mzc1MCwgCi0gICAgMTUzNzU0LCAxNTM3NTgsIDE1Mzc2MCwgMTUzNzYyLCAxNTM3NjQsIDE1Mzc2NiwgMTUzNzcyLCAxNTM3NzgsIDE1Mzc4MiwgCi0gICAgMTUzNzg0LCAxNTM3ODYsIDE1Mzc4OCwgMTUzNzk3LCAxNTM4MDEsIDE1MzgwOCwgMTUzODE1LCAxNTM4MTcsIDE1MzgyMCwgCi0gICAgMTUzODI0LCAxNTM4MzAsIDE1MzgzNCwgMTUzODM4LCAxNTM4NDAsIDE1Mzg0OCwgMTUzODUyLCAxNTM4NTYsIDE1Mzg2MSwgCi0gICAgMTUzODY2LCAxNTM4NzEsIDE1Mzg3NiwgMTUzODgxLCAxNTM4ODYsIDE1Mzg5MSwgMTUzODk2LCAxNTM5MDEsIDE1MzkwNiwgCi0gICAgMTUzOTEwLCAxNTM5MTYsIDE1MzkyMCwgMTUzOTI2LCAxNTM5MzEsIDE1MzkzOCwgMTUzOTQ0LCAxNTM5NTIsIDE1Mzk1NiwgCi0gICAgMTUzOTYzLCAxNTM5NjcsIDE1Mzk3MSwgMTUzOTc1LCAxNTM5ODAsIDE1Mzk4NSwgMTUzOTg3LCAxNTM5OTEsIDE1NDAwMCwgCi0gICAgMTU0MDA4LCAxNTQwMTYsIDE1NDAyOSwgMTU0MDQyLCAxNTQwNTUsIDE1NDA2MiwgMTU0MDY5LCAxNTQwNzMsIDE1NDA4MiwgCi0gICAgMTU0MDkwLCAxNTQwOTQsIDE1NDEwMywgMTU0MTEwLCAxNTQxMTQsIDE1NDExOCwgMTU0MTIyLCAxNTQxMjYsIDE1NDEzMywgCi0gICAgMTU0MTM3LCAxNTQxNDEsIDE1NDE0NSwgMTU0MTQ5LCAxNTQxNTYsIDE1NDE2NSwgMTU0MTc0LCAxNTQxODEsIDE1NDE5MywgCi0gICAgMTU0MjA1LCAxNTQyMDksIDE1NDIxMywgMTU0MjE3LCAxNTQyMjEsIDE1NDIyNSwgMTU0MjI5LCAxNTQyMzcsIDE1NDI0NSwgCi0gICAgMTU0MjUzLCAxNTQyNTcsIDE1NDI2MSwgMTU0MjY1LCAxNTQyNjksIDE1NDI3MywgMTU0Mjc3LCAxNTQyODMsIDE1NDI4OSwgCi0gICAgMTU0MjkzLCAxNTQzMDQsIDE1NDMxMiwgMTU0MzE2LCAxNTQzMjAsIDE1NDMyNCwgMTU0MzI4LCAxNTQzMzQsIDE1NDM0MSwgCi0gICAgMTU0MzUyLCAxNTQzNjIsIDE1NDM3MiwgMTU0MzgzLCAxNTQzOTIsIDE1NDQwMywgMTU0NDA5LCAxNTQ0MTUsIDE1NDQyMSwgCi0gICAgMTU0NDI3LCAxNTQ0MzMsIDE1NDQzNywgMTU0NDQ0LCAxNTQ0NTMsIDE1NDQ2MCwgMTU0NDY2LCAxNTQ0NzAsIDE1NDQ3NCwgCi0gICAgMTU0NDc4LCAxNTQ0ODcsIDE1NDQ5OSwgMTU0NTAzLCAxNTQ1MTAsIDE1NDUxNywgMTU0NTI0LCAxNTQ1MzIsIDE1NDUzOSwgCi0gICAgMTU0NTQ3LCAxNTQ1NTYsIDE1NDU2NiwgMTU0NTc1LCAxNTQ1ODUsIDE1NDU5NCwgMTU0NjA0LCAxNTQ2MTMsIDE1NDYyMywgCi0gICAgMTU0NjMzLCAxNTQ2NDQsIDE1NDY1NCwgMTU0NjY1LCAxNTQ2NzIsIDE1NDY4MCwgMTU0Njg3LCAxNTQ2OTUsIDE1NDcwMywgCi0gICAgMTU0NzEyLCAxNTQ3MjAsIDE1NDcyOSwgMTU0NzM2LCAxNTQ3NDgsIDE1NDc1NSwgMTU0NzY3LCAxNTQ3NzAsIDE1NDc3MywgCi0gICAgMTU0Nzc2LCAxNTQ3NzksIDE1NDc4NSwgMTU0NzkyLCAxNTQ3OTgsIDE1NDgwNSwgMTU0ODEwLCAxNTQ4MTYsIDE1NDgyOCwgCi0gICAgMTU0ODM4LCAxNTQ4NDksIDE1NDg1NCwgMTU0ODU5LCAxNTQ4NjUsIDE1NDg3MCwgMTU0ODc3LCAxNTQ4ODEsIDE1NDg4NywgCi0gICAgMTU0ODg5LCAxNTQ4OTEsIDE1NDg5NSwgMTU0ODk5LCAxNTQ5MDMsIDE1NDkxMiwgMTU0OTE0LCAxNTQ5MTYsIDE1NDkxOSwgCi0gICAgMTU0OTIxLCAxNTQ5MjMsIDE1NDkyNywgMTU0OTI5LCAxNTQ5MzMsIDE1NDkzNSwgMTU0OTM5LCAxNTQ5NDEsIDE1NDk0MywgCi0gICAgMTU0OTQ3LCAxNTQ5NTEsIDE1NDk1NywgMTU0OTU5LCAxNTQ5NjMsIDE1NDk2NSwgMTU0OTY5LCAxNTQ5NzMsIDE1NDk3NywgCi0gICAgMTU0OTgxLCAxNTQ5ODMsIDE1NDk4NSwgMTU0OTg5LCAxNTQ5OTMsIDE1NDk5NywgMTU1MDAxLCAxNTUwMDMsIDE1NTAwNSwgCi0gICAgMTU1MDA3LCAxNTUwMTMsIDE1NTAxOCwgMTU1MDIxLCAxNTUwMjksIDE1NTAzNywgMTU1MDM5LCAxNTUwNDQsIDE1NTA0NywgCi0gICAgMTU1MDUyLCAxNTUwNjMsIDE1NTA3MCwgMTU1MDc1LCAxNTUwODAsIDE1NTA4MiwgMTU1MDg2LCAxNTUwODgsIDE1NTA5MiwgCi0gICAgMTU1MDk0LCAxNTUwOTgsIDE1NTEwMiwgMTU1MTA1LCAxNTUxMDgsIDE1NTExMCwgMTU1MTEzLCAxNTUxMTUsIDE1NTExOSwgCi0gICAgMTU1MTIxLCAxNTUxMjMsIDE1NTEyNSwgMTU1MTI5LCAxNTUxMzEsIDE1NTEzNSwgMTU1MTM4LCAxNTUxNDUsIDE1NTE0OCwgCi0gICAgMTU1MTUzLCAxNTUxNTYsIDE1NTE1OSwgMTU1MTY0LCAxNTUxNjgsIDE1NTE3MiwgMTU1MTc2LCAxNTUxNzgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTE4MywgMTU1MTg4LCAxNTUxOTAsIDE1NTE5NCwgCi0gICAgMTU1MTk2LCAxNTUyMDAsIDE1NTIwNCwgMTU1MjEwLCAxNTUyMTQsIDE1NTIxOSwgMTU1MjIyLCAxNTUyMjYsIDE1NTIzMCwgCi0gICAgMCwgMCwgMCwgMTU1MjM0LCAxNTUyMzYsIDE1NTI0MiwgMTU1MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNTUyNTAsIDE1NTI1NSwgMTU1MjYwLCAxNTUyNjUsIDE1NTI3MCwgMTU1Mjc1LCAxNTUyODAsIDE1NTI4NywgCi0gICAgMTU1Mjk0LCAxNTUzMDEsIDE1NTMwOCwgMTU1MzEzLCAxNTUzMTgsIDE1NTMyMywgMTU1MzI4LCAxNTUzMzUsIDE1NTM0MSwgCi0gICAgMTU1MzQ4LCAxNTUzNTUsIDE1NTM2MiwgMTU1MzY3LCAxNTUzNzIsIDE1NTM3NywgMTU1MzgyLCAxNTUzODcsIDE1NTM5NCwgCi0gICAgMTU1NDAxLCAxNTU0MDYsIDE1NTQxMSwgMTU1NDE4LCAxNTU0MjUsIDE1NTQzMywgMTU1NDQxLCAxNTU0NDgsIDE1NTQ1NSwgCi0gICAgMTU1NDYzLCAxNTU0NzEsIDE1NTQ3OSwgMTU1NDg2LCAxNTU0OTYsIDE1NTUwNywgMTU1NTEyLCAxNTU1MTksIDE1NTUyNiwgCi0gICAgMTU1NTMzLCAxNTU1NDEsIDE1NTU0OSwgMTU1NTYwLCAxNTU1NjgsIDE1NTU3NiwgMTU1NTg0LCAxNTU1ODksIDE1NTU5NCwgCi0gICAgMTU1NTk5LCAxNTU2MDQsIDE1NTYwOSwgMTU1NjE0LCAxNTU2MTksIDE1NTYyNCwgMTU1NjI5LCAxNTU2MzQsIDE1NTYzOSwgCi0gICAgMTU1NjQ0LCAxNTU2NTEsIDE1NTY1NiwgMTU1NjYxLCAxNTU2NjgsIDE1NTY3MywgMTU1Njc4LCAxNTU2ODMsIDE1NTY4OCwgCi0gICAgMTU1NjkzLCAxNTU2OTgsIDE1NTcwMywgMTU1NzA4LCAxNTU3MTMsIDE1NTcxOCwgMTU1NzIzLCAxNTU3MjgsIDE1NTczNSwgCi0gICAgMTU1NzQzLCAxNTU3NDgsIDE1NTc1MywgMTU1NzYwLCAxNTU3NjUsIDE1NTc3MCwgMTU1Nzc1LCAxNTU3ODIsIDE1NTc4NywgCi0gICAgMTU1Nzk0LCAxNTU3OTksIDE1NTgwNiwgMTU1ODExLCAxNTU4MjAsIDE1NTgyOSwgMTU1ODM0LCAxNTU4MzksIDE1NTg0NCwgCi0gICAgMTU1ODQ5LCAxNTU4NTQsIDE1NTg1OSwgMTU1ODY0LCAxNTU4NjksIDE1NTg3NCwgMTU1ODc5LCAxNTU4ODQsIDE1NTg4OSwgCi0gICAgMTU1ODk0LCAxNTU5MDIsIDE1NTkxMCwgMTU1OTE1LCAxNTU5MjAsIDE1NTkyNSwgMTU1OTMwLCAxNTU5MzUsIDE1NTk0MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1OTQ3LCAxNTU5NTUsIDE1NTk2MywgMTU1OTcxLCAKLSAgICAxNTU5NzksIDE1NTk4NSwgMTU1OTkxLCAxNTU5OTUsIDE1NTk5OSwgMTU2MDA1LCAxNTYwMTEsIDE1NjAyMCwgMTU2MDI0LCAKLSAgICAxNTYwMjksIDE1NjAzNSwgMTU2MDM5LCAxNTYwNDQsIDE1NjA0OCwgMTU2MDUyLCAxNTYwNTgsIDE1NjA2NCwgMTU2MDc0LCAKLSAgICAxNTYwODMsIDE1NjA4NiwgMTU2MDkxLCAxNTYwOTcsIDE1NjEwMywgMTU2MTE0LCAxNTYxMjQsIDE1NjEyOCwgMTU2MTMzLCAKLSAgICAxNTYxMzksIDE1NjE0NSwgMTU2MTU0LCAxNTYxNTksIDE1NjE2MywgMTU2MTY4LCAxNTYxNzIsIDE1NjE3OCwgMTU2MTg0LCAKLSAgICAxNTYxOTAsIDE1NjE5NCwgMTU2MTk3LCAxNTYyMDEsIDE1NjIwNCwgMTU2MjA3LCAxNTYyMTIsIDE1NjIxNywgMTU2MjI0LCAKLSAgICAxNTYyMzIsIDE1NjIzOSwgMTU2MjQ2LCAxNTYyNTUsIDE1NjI2NCwgMTU2MjcxLCAxNTYyNzksIDE1NjI4NiwgMTU2MjkzLCAKLSAgICAxNTYzMDIsIDE1NjMxMSwgMTU2MzE4LCAxNTYzMjYsIDE1NjMzMywgMTU2MzQwLCAxNTYzNDksIDE1NjM1NiwgMTU2MzY0LCAKLSAgICAxNTYzNzAsIDE1NjM3OSwgMTU2Mzg3LCAxNTYzOTYsIDE1NjQwMywgMTU2NDEzLCAxNTY0MjQsIDE1NjQzMiwgMTU2NDQwLCAKLSAgICAxNTY0NDksIDE1NjQ1NywgMTU2NDY1LCAxNTY0NzQsIDE1NjQ4MiwgMTU2NDkyLCAxNTY1MDEsIDE1NjUwOSwgMTU2NTE3LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTY1MjYsIDE1NjUzNCwgCi0gICAgMTU2NTQyLCAxNTY1NTAsIDE1NjU1OCwgMTU2NTY3LCAxNTY1NzYsIDE1NjU4NSwgMTU2NTk0LCAxNTY2MDMsIDE1NjYxMiwgCi0gICAgMTU2NjIxLCAwLCAwLCAwLCAwLCAxNTY2MzAsIDE1NjYzOCwgMTU2NjQ2LCAxNTY2NTQsIDE1NjY2MiwgMTU2NjY5LCAKLSAgICAxNTY2NzYsIDE1NjY4MywgMTU2NjkwLCAxNTY2OTgsIDE1NjcwNiwgMTU2NzE0LCAxNTY3MjIsIDE1NjczMiwgMTU2NzQyLCAKLSAgICAxNTY3NTIsIDE1Njc2MiwgMTU2NzcxLCAxNTY3ODAsIDE1Njc4OSwgMTU2Nzk4LCAxNTY4MDcsIDE1NjgxNiwgMTU2ODI1LCAKLSAgICAxNTY4MzQsIDE1Njg0MiwgMTU2ODUwLCAxNTY4NTgsIDE1Njg2NiwgMTU2ODc0LCAxNTY4ODIsIDE1Njg5MCwgMTU2ODk4LCAKLSAgICAxNTY5MDgsIDE1NjkxOCwgMTU2OTI4LCAxNTY5MzgsIDE1Njk0MiwgMTU2OTQ2LCAxNTY5NTAsIDE1Njk1NCwgMTU2OTU3LCAKLSAgICAxNTY5NjAsIDE1Njk2MywgMTU2OTY2LCAxNTY5NzAsIDE1Njk3NCwgMTU2OTc4LCAxNTY5ODIsIDE1Njk4NywgMTU2OTkyLCAKLSAgICAxNTY5OTcsIDE1NzAwMiwgMTU3MDA1LCAxNTcwMDgsIDE1NzAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MDE0LCAKLSAgICAxNTcwMTcsIDE1NzAyMCwgMTU3MDIzLCAxNTcwMjYsIDE1NzAzMSwgMTU3MDM2LCAxNTcwNDIsIDE1NzA0OCwgMTU3MDUyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTcwNTYsIDE1NzA2MiwgMTU3MDY4LCAxNTcwNzQsIDE1NzA4MCwgMTU3MDg4LCAxNTcwOTYsIAotICAgIDE1NzEwNSwgMTU3MTE0LCAxNTcxMTksIDE1NzEyNCwgMTU3MTI5LCAxNTcxMzQsIDE1NzE0MSwgMTU3MTQ4LCAxNTcxNTYsIAotICAgIDE1NzE2NCwgMTU3MTcxLCAxNTcxNzgsIDE1NzE4NSwgMTU3MTkyLCAxNTcyMDEsIDE1NzIxMCwgMTU3MjIwLCAxNTcyMzAsIAotICAgIDE1NzIzNiwgMTU3MjQyLCAxNTcyNDgsIDE1NzI1NCwgMTU3MjYyLCAxNTcyNzAsIDE1NzI3OSwgMTU3Mjg4LCAxNTcyOTYsIAotICAgIDE1NzMwNCwgMTU3MzEyLCAxNTczMjAsIDE1NzMzMCwgMTU3MzQwLCAxNTczNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE1NzM2MiwgMTU3MzY3LCAxNTczNzIsIDE1NzM3NywgMTU3MzgyLCAxNTczOTEsIDE1NzQwMCwgMTU3NDA5LCAxNTc0MTgsIAotICAgIDE1NzQyNSwgMTU3NDMyLCAxNTc0MzksIDE1NzQ0NiwgMTU3NDUzLCAxNTc0NjIsIDE1NzQ3MSwgMTU3NDgwLCAxNTc0ODUsIAotICAgIDE1NzQ5MiwgMTU3NDk5LCAxNTc1MDYsIDE1NzUxMSwgMTU3NTE2LCAxNTc1MjEsIDE1NzUyNiwgMTU3NTMzLCAxNTc1NDAsIAotICAgIDE1NzU0NywgMTU3NTU0LCAxNTc1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzU3MCwgMTU3NTc0LCAxNTc1NzgsIDE1NzU4MywgMTU3NTg3LCAKLSAgICAxNTc1OTEsIDE1NzU5NiwgMTU3NjAwLCAxNTc2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjE5OSwgCisgICAgMTU2MjAxLCAxNTYyMDMsIDE1NjIwNywgMTU2MjEyLCAxNTYyMTcsIDE1NjIxOSwgMTU2MjI1LCAxNTYyMzAsIDE1NjIzMiwgCisgICAgMTU2MjM4LCAxNTYyNDIsIDE1NjI0NCwgMTU2MjQ4LCAxNTYyNTQsIDE1NjI2MCwgMTU2MjY2LCAxNTYyNzEsIDE1NjI3NiwgCisgICAgMTU2MjgzLCAxNTYyOTAsIDE1NjI5NywgMTU2MzAyLCAxNTYzMDksIDE1NjMxNiwgMTU2MzIzLCAxNTYzMjcsIDE1NjMzNCwgCisgICAgMTU2MzQzLCAxNTYzNTIsIDE1NjM1OSwgMTU2MzY0LCAxNTYzNjgsIDE1NjM3MiwgMTU2Mzc0LCAxNTYzNzcsIDE1NjM4MCwgCisgICAgMTU2Mzg3LCAxNTYzOTQsIDE1NjQwNCwgMTU2NDA5LCAxNTY0MTQsIDE1NjQxOSwgMTU2NDI0LCAxNTY0MjYsIDE1NjQzMiwgCisgICAgMTU2NDM2LCAxNTY0MzgsIDE1NjQ0MCwgMTU2NDQyLCAxNTY0NDQsIDE1NjQ0OCwgMTU2NDUyLCAxNTY0NTYsIDE1NjQ1OCwgCisgICAgMTU2NDYyLCAxNTY0NjQsIDE1NjQ2OCwgMTU2NDcwLCAxNTY0NzIsIDE1NjQ3NCwgMTU2NDc2LCAxNTY0ODEsIDE1NjQ4NiwgCisgICAgMTU2NDg4LCAxNTY0OTQsIDE1NjQ5OCwgMTU2NTAyLCAxNTY1MTAsIDE1NjUxMiwgMTU2NTE0LCAxNTY1MTYsIDE1NjUxOCwgCisgICAgMTU2NTIwLCAxNTY1MjIsIDE1NjUyNCwgMTU2NTI2LCAxNTY1MjgsIDE1NjUzMCwgMTU2NTM0LCAxNTY1MzgsIDE1NjU0MCwgCisgICAgMTU2NTQyLCAxNTY1NDQsIDE1NjU0NiwgMTU2NTQ4LCAxNTY1NTMsIDE1NjU1OSwgMTU2NTYzLCAxNTY1NjcsIDE1NjU3MSwgCisgICAgMTU2NTc1LCAxNTY1ODAsIDE1NjU4NCwgMTU2NTg2LCAxNTY1ODgsIDE1NjU5MiwgMTU2NTk4LCAxNTY2MDAsIDE1NjYwMiwgCisgICAgMTU2NjA0LCAxNTY2MDgsIDE1NjYxNywgMTU2NjIzLCAxNTY2MjcsIDE1NjYzMSwgMTU2NjMzLCAxNTY2MzUsIDE1NjYzOCwgCisgICAgMTU2NjQwLCAxNTY2NDIsIDE1NjY0NCwgMTU2NjQ4LCAxNTY2NTAsIDE1NjY1NCwgMTU2NjU5LCAxNTY2NjEsIDE1NjY2NiwgCisgICAgMTU2NjcyLCAxNTY2NzksIDE1NjY4MywgMTU2Njg3LCAxNTY2OTEsIDE1NjY5NSwgMTU2NzAxLCAxNTY3MDUsIDE1NjcxMywgCisgICAgMTU2NzIwLCAxNTY3MjIsIDE1NjcyNCwgMTU2NzI4LCAxNTY3MzIsIDE1NjczNCwgMTU2NzM4LCAxNTY3NDIsIDE1Njc0NCwgCisgICAgMTU2NzQ4LCAxNTY3NTAsIDE1Njc1NCwgMTU2NzU4LCAxNTY3NjIsIDE1Njc2NiwgMTU2NzcwLCAxNTY3NzQsIDE1Njc3OCwgCisgICAgMTU2NzgyLCAxNTY3ODgsIDE1Njc5MiwgMTU2Nzk2LCAxNTY4MDcsIDE1NjgxMiwgMTU2ODE2LCAxNTY4MjAsIDE1NjgyNiwgCisgICAgMTU2ODMwLCAxNTY4MzQsIDE1NjgzOCwgMTU2ODQ1LCAxNTY4NTIsIDE1Njg1NiwgMTU2ODYwLCAxNTY4NjQsIDE1Njg2OCwgCisgICAgMTU2ODcyLCAxNTY4NzksIDE1Njg4MSwgMTU2ODg1LCAxNTY4ODcsIDE1Njg4OSwgMTU2ODkzLCAxNTY4OTcsIDE1NjkwMSwgCisgICAgMTU2OTAzLCAxNTY5MDcsIDE1NjkxMSwgMTU2OTE1LCAxNTY5MTksIDE1NjkyMywgMTU2OTI1LCAxNTY5MjksIDE1NjkzMSwgCisgICAgMTU2OTM3LCAxNTY5NDAsIDE1Njk0NSwgMTU2OTQ3LCAxNTY5NDksIDE1Njk1MiwgMTU2OTU0LCAxNTY5NTYsIDE1Njk1OSwgCisgICAgMTU2OTY2LCAxNTY5NzMsIDE1Njk4MCwgMTU2OTg1LCAxNTY5ODksIDE1Njk5MSwgMTU2OTkzLCAxNTY5OTUsIDE1Njk5OSwgCisgICAgMTU3MDAxLCAxNTcwMDUsIDE1NzAwOSwgMTU3MDEzLCAxNTcwMTUsIDE1NzAxOSwgMTU3MDIxLCAxNTcwMjUsIDE1NzAyOSwgCisgICAgMTU3MDM2LCAxNTcwMzgsIDE1NzA0NywgMTU3MDU2LCAxNTcwNjUsIDE1NzA3MSwgMTU3MDczLCAxNTcwNzgsIDE1NzA4MiwgCisgICAgMTU3MDg2LCAxNTcwODgsIDE1NzA5NCwgMTU3MDk4LCAxNTcxMDAsIDE1NzEwNCwgMTU3MTA4LCAxNTcxMTAsIDE1NzExNCwgCisgICAgMTU3MTE5LCAxNTcxMjMsIDE1NzEyOSwgMTU3MTM1LCAxNTcxMzcsIDE1NzEzOSwgMTU3MTQ1LCAxNTcxNDcsIDE1NzE1MSwgCisgICAgMTU3MTU1LCAxNTcxNTcsIDE1NzE2MSwgMTU3MTYzLCAxNTcxNjcsIDE1NzE3MSwgMTU3MTc1LCAxNTcxNzgsIDE1NzE4MSwgCisgICAgMTU3MTg2LCAxNTcxOTEsIDE1NzE5MywgMTU3MTk2LCAxNTcxOTgsIDE1NzIwNSwgMTU3MjA5LCAxNTcyMTEsIDE1NzIxOCwgCisgICAgMTU3MjI1LCAxNTcyMzIsIDE1NzIzOSwgMTU3MjQ2LCAxNTcyNDgsIDE1NzI1MCwgMTU3MjUyLCAxNTcyNTYsIDE1NzI1OCwgCisgICAgMTU3MjYwLCAxNTcyNjIsIDE1NzI2NCwgMTU3MjY2LCAxNTcyNjgsIDE1NzI3MCwgMTU3MjcyLCAxNTcyNzQsIDE1NzI3NiwgCisgICAgMTU3Mjc4LCAxNTcyODAsIDE1NzI4MiwgMTU3Mjg0LCAxNTcyODYsIDE1NzI4OCwgMTU3MjkwLCAxNTcyOTIsIDE1NzI5NCwgCisgICAgMTU3Mjk2LCAxNTcyOTgsIDE1NzMwMCwgMTU3MzA0LCAxNTczMDYsIDE1NzMwOCwgMTU3MzEwLCAxNTczMTQsIDE1NzMxNiwgCisgICAgMTU3MzIwLCAxNTczMjIsIDE1NzMyNCwgMTU3MzI4LCAxNTczMzIsIDE1NzMzOCwgMTU3MzQwLCAxNTczNDIsIDE1NzM0NCwgCisgICAgMTU3MzQ2LCAxNTczNTAsIDE1NzM1NCwgMTU3MzU2LCAxNTczNjAsIDE1NzM2NCwgMTU3MzY4LCAxNTczNzIsIDE1NzM3NiwgCisgICAgMTU3MzgwLCAxNTczODQsIDE1NzM4OCwgMTU3MzkyLCAxNTczOTYsIDE1NzQwMCwgMTU3NDA0LCAxNTc0MDgsIDE1NzQxMiwgCisgICAgMTU3NDE2LCAxNTc0MjAsIDE1NzQyNCwgMTU3NDI4LCAxNTc0MzAsIDE1NzQzMiwgMTU3NDM0LCAxNTc0MzYsIDE1NzQzOCwgCisgICAgMTU3NDQwLCAxNTc0NDIsIDE1NzQ1MCwgMTU3NDU4LCAxNTc0NjYsIDE1NzQ3NCwgMTU3NDc5LCAxNTc0ODQsIDE1NzQ4OSwgCisgICAgMTU3NDkzLCAxNTc0OTcsIDE1NzUwMiwgMTU3NTA2LCAxNTc1MDgsIDE1NzUxMiwgMTU3NTE0LCAxNTc1MTYsIDE1NzUxOCwgCisgICAgMTU3NTIwLCAxNTc1MjIsIDE1NzUyNCwgMTU3NTI2LCAxNTc1MzAsIDE1NzUzMiwgMTU3NTM0LCAxNTc1MzYsIDE1NzU0MCwgCisgICAgMTU3NTQ0LCAxNTc1NDgsIDE1NzU1MiwgMTU3NTU2LCAxNTc1NTgsIDE1NzU2NCwgMTU3NTcwLCAxNTc1NzIsIDE1NzU3NCwgCisgICAgMTU3NTc2LCAxNTc1NzgsIDE1NzU4MCwgMTU3NTg5LCAxNTc1OTYsIDE1NzYwMywgMTU3NjA3LCAxNTc2MTQsIDE1NzYxOSwgCisgICAgMTU3NjI2LCAxNTc2MzUsIDE1NzY0MCwgMTU3NjQ0LCAxNTc2NDgsIDE1NzY1MCwgMTU3NjU0LCAxNTc2NTYsIDE1NzY2MCwgCisgICAgMTU3NjY0LCAxNTc2NjYsIDE1NzY3MCwgMTU3Njc0LCAxNTc2NzgsIDE1NzY4MCwgMTU3NjgyLCAxNTc2ODgsIDE1NzY5MCwgCisgICAgMTU3NjkyLCAxNTc2OTQsIDE1NzY5OCwgMTU3NzAyLCAxNTc3MDQsIDE1NzcwOCwgMTU3NzEwLCAxNTc3MTIsIDE1NzcxNSwgCisgICAgMTU3NzE5LCAxNTc3MjEsIDE1NzcyNSwgMTU3NzI3LCAxNTc3MjksIDE1NzczNCwgMTU3NzM2LCAxNTc3NDAsIDE1Nzc0NCwgCisgICAgMTU3NzQ3LCAxNTc3NTEsIDE1Nzc1NSwgMTU3NzU5LCAxNTc3NjMsIDE1Nzc2NywgMTU3NzcxLCAxNTc3NzUsIDE1Nzc4MCwgCisgICAgMTU3Nzg0LCAxNTc3ODgsIDE1Nzc5NywgMTU3ODAyLCAxNTc4MDUsIDE1NzgwNywgMTU3ODEwLCAxNTc4MTMsIDE1NzgxOCwgCisgICAgMTU3ODIwLCAxNTc4MjMsIDE1NzgyOCwgMTU3ODMyLCAxNTc4MzUsIDE1NzgzOSwgMTU3ODQzLCAxNTc4NDYsIDE1Nzg1MSwgCisgICAgMTU3ODU1LCAxNTc4NTksIDE1Nzg2MywgMTU3ODY3LCAxNTc4NzMsIDE1Nzg3OSwgMTU3ODg1LCAxNTc4OTEsIDE1Nzg5NiwgCisgICAgMTU3OTA2LCAxNTc5MDgsIDE1NzkxMiwgMTU3OTE0LCAxNTc5MTYsIDE1NzkyMCwgMTU3OTI0LCAxNTc5MjYsIDE1NzkzMCwgCisgICAgMTU3OTM1LCAxNTc5NDAsIDE1Nzk0NiwgMTU3OTQ4LCAxNTc5NTIsIDE1Nzk1NiwgMTU3OTYyLCAxNTc5NjgsIDE1Nzk3MiwgCisgICAgMTU3OTc0LCAxNTc5NzYsIDE1Nzk4MCwgMTU3OTgyLCAxNTc5ODYsIDE1Nzk5MCwgMTU3OTk0LCAxNTc5OTYsIDE1Nzk5OCwgCisgICAgMTU4MDA1LCAxNTgwMDksIDE1ODAxMiwgMTU4MDE2LCAxNTgwMjAsIDE1ODAyNCwgMTU4MDI2LCAxNTgwMzAsIDE1ODAzMiwgCisgICAgMTU4MDM0LCAxNTgwMzgsIDE1ODA0MCwgMTU4MDQ0LCAxNTgwNDgsIDE1ODA1NCwgMTU4MDU4LCAxNTgwNjIsIDE1ODA2NiwgCisgICAgMTU4MDY4LCAxNTgwNzEsIDE1ODA3NSwgMTU4MDgxLCAxNTgwOTAsIDE1ODA5OSwgMTU4MTA3LCAxNTgxMTUsIDE1ODExNywgCisgICAgMTU4MTIxLCAxNTgxMjMsIDE1ODEyNywgMTU4MTM4LCAxNTgxNDIsIDE1ODE0OCwgMTU4MTU0LCAxNTgxNTksIDE1ODE2MSwgCisgICAgMTU4MTY2LCAxNTgxNzAsIDE1ODE3MiwgMTU4MTc0LCAxNTgxNzYsIDE1ODE4MCwgMTU4MTg0LCAxNTgxODgsIDE1ODE5MywgCisgICAgMTU4MjAzLCAxNTgyMTgsIDE1ODIyOCwgMTU4MjM4LCAxNTgyNDIsIDE1ODI0NiwgMTU4MjUyLCAxNTgyNTQsIDE1ODI2MiwgCisgICAgMTU4MjcwLCAxNTgyNzIsIDE1ODI3NiwgMTU4MjgyLCAxNTgyODgsIDE1ODI5NSwgMTU4MzAyLCAxNTgzMDQsIDE1ODMwNiwgCisgICAgMTU4MzA5LCAxNTgzMTEsIDE1ODMxNywgMTU4MzE5LCAxNTgzMjIsIDE1ODMyNiwgMTU4MzMyLCAxNTgzMzgsIDE1ODM0OSwgCisgICAgMTU4MzU1LCAxNTgzNjEsIDE1ODM2OSwgMTU4MzczLCAxNTgzODEsIDE1ODM4OSwgMTU4Mzk1LCAxNTg0MDEsIDE1ODQwOCwgCisgICAgMTU4NDEwLCAxNTg0MTQsIDE1ODQxNiwgMTU4NDE4LCAxNTg0MjMsIDE1ODQyNSwgMTU4NDI3LCAxNTg0MjksIDE1ODQzMSwgCisgICAgMTU4NDM1LCAxNTg0NDUsIDE1ODQ1MSwgMTU4NDU1LCAxNTg0NTksIDE1ODQ2MywgMTU4NDY5LCAxNTg0NzUsIDE1ODQ4MSwgCisgICAgMTU4NDg3LCAxNTg0OTIsIDE1ODQ5NywgMTU4NTAzLCAxNTg1MDksIDE1ODUxNiwgMTU4NTIzLCAxNTg1MzEsIDE1ODUzOSwgCisgICAgMTU4NTQ0LCAxNTg1NTIsIDE1ODU1NiwgMTU4NTY1LCAxNTg1NzQsIDE1ODU4MCwgMTU4NTg0LCAxNTg1ODgsIDE1ODU5MiwgCisgICAgMTU4NTk1LCAxNTg2MDAsIDE1ODYwMiwgMTU4NjA0LCAxNTg2MDYsIDE1ODYxMywgMTU4NjE4LCAxNTg2MjUsIDE1ODYzMiwgCisgICAgMTU4NjM5LCAxNTg2NDcsIDE1ODY1NSwgMTU4NjYzLCAxNTg2NzEsIDE1ODY3OSwgMTU4Njg3LCAxNTg2OTUsIDE1ODcwMywgCisgICAgMTU4NzExLCAxNTg3MTcsIDE1ODcyMywgMTU4NzI5LCAxNTg3MzUsIDE1ODc0MSwgMTU4NzQ3LCAxNTg3NTMsIDE1ODc1OSwgCisgICAgMTU4NzY1LCAxNTg3NzEsIDE1ODc3NywgMTU4NzgzLCAxNTg3ODYsIDE1ODc5NSwgMTU4ODA0LCAxNTg4MDYsIDE1ODgxMywgCisgICAgMTU4ODE3LCAxNTg4MTksIDE1ODgyMSwgMTU4ODI1LCAxNTg4MzEsIDE1ODgzNSwgMTU4ODM3LCAxNTg4NDcsIDE1ODg1MywgCisgICAgMTU4ODU3LCAxNTg4NTksIDE1ODg2MywgMTU4ODY1LCAxNTg4NjksIDE1ODg3NiwgMTU4ODgzLCAxNTg4OTAsIDE1ODg5NSwgCisgICAgMTU4OTAwLCAxNTg5MDksIDE1ODkxNSwgMTU4OTIwLCAxNTg5MjQsIDE1ODkyOSwgMTU4OTMzLCAxNTg5NDAsIDE1ODk0NCwgCisgICAgMTU4OTQ3LCAxNTg5NTIsIDE1ODk1OSwgMTU4OTY2LCAxNTg5NzEsIDE1ODk3NiwgMTU4OTgxLCAxNTg5ODgsIDE1ODk5NywgCisgICAgMTU5MDA4LCAxNTkwMTQsIDE1OTAyMCwgMTU5MDI2LCAxNTkwMzYsIDE1OTA1MSwgMTU5MDYwLCAxNTkwNjgsIDE1OTA3NiwgCisgICAgMTU5MDg0LCAxNTkwOTIsIDE1OTEwMCwgMTU5MTA4LCAxNTkxMTYsIDE1OTEyNCwgMTU5MTMyLCAxNTkxNDAsIDE1OTE0OCwgCisgICAgMTU5MTU2LCAxNTkxNTksIDE1OTE2MywgMTU5MTY4LCAxNTkxNzMsIDE1OTE3NSwgMTU5MTc5LCAxNTkxODgsIDE1OTE5NywgCisgICAgMTU5MjA1LCAxNTkyMDksIDE1OTIxMywgMTU5MjE4LCAxNTkyMjMsIDE1OTIyOCwgMTU5MjMwLCAxNTkyMzUsIDE1OTIzOSwgCisgICAgMTU5MjQxLCAxNTkyNDUsIDE1OTI0OSwgMTU5MjU1LCAxNTkyNjAsIDE1OTI2OCwgMTU5MjczLCAxNTkyNzgsIDE1OTI4MywgCisgICAgMTU5MjkwLCAxNTkyOTMsIDE1OTI5NSwgMTU5Mjk4LCAxNTkzMDMsIDE1OTMwOSwgMTU5MzEzLCAxNTkzMTcsIDE1OTMyMywgCisgICAgMTU5MzI5LCAxNTkzMzEsIDE1OTMzNSwgMTU5MzM5LCAxNTkzNDMsIDE1OTM0NywgMTU5MzUxLCAxNTkzNTMsIDE1OTM1NSwgCisgICAgMTU5MzU3LCAxNTkzNTksIDE1OTM2NSwgMTU5MzcxLCAxNTkzNzUsIDE1OTM3NywgMTU5Mzc5LCAxNTkzODEsIDE1OTM5MCwgCisgICAgMTU5Mzk0LCAxNTk0MDEsIDE1OTQwOCwgMTU5NDEwLCAxNTk0MTMsIDE1OTQxNywgMTU5NDIzLCAxNTk0MjcsIDE1OTQzMSwgCisgICAgMTU5NDMzLCAxNTk0NDEsIDE1OTQ0NSwgMTU5NDQ5LCAxNTk0NTQsIDE1OTQ1OSwgMTU5NDY0LCAxNTk0NjksIDE1OTQ3NCwgCisgICAgMTU5NDc5LCAxNTk0ODQsIDE1OTQ4OSwgMTU5NDk0LCAxNTk0OTksIDE1OTUwMywgMTU5NTA5LCAxNTk1MTMsIDE1OTUxOSwgCisgICAgMTU5NTI0LCAxNTk1MzEsIDE1OTUzNywgMTU5NTQ1LCAxNTk1NDksIDE1OTU1NiwgMTU5NTYwLCAxNTk1NjQsIDE1OTU2OCwgCisgICAgMTU5NTczLCAxNTk1NzgsIDE1OTU4MCwgMTU5NTg0LCAxNTk1OTMsIDE1OTYwMSwgMTU5NjA5LCAxNTk2MjIsIDE1OTYzNSwgCisgICAgMTU5NjQ4LCAxNTk2NTUsIDE1OTY2MiwgMTU5NjY2LCAxNTk2NzUsIDE1OTY4MywgMTU5Njg3LCAxNTk2OTYsIDE1OTcwMywgCisgICAgMTU5NzA3LCAxNTk3MTEsIDE1OTcxNSwgMTU5NzE5LCAxNTk3MjYsIDE1OTczMCwgMTU5NzM0LCAxNTk3MzgsIDE1OTc0MiwgCisgICAgMTU5NzQ5LCAxNTk3NTgsIDE1OTc2NywgMTU5Nzc0LCAxNTk3ODYsIDE1OTc5OCwgMTU5ODAyLCAxNTk4MDYsIDE1OTgxMCwgCisgICAgMTU5ODE0LCAxNTk4MTgsIDE1OTgyMiwgMTU5ODMwLCAxNTk4MzgsIDE1OTg0NiwgMTU5ODUwLCAxNTk4NTQsIDE1OTg1OCwgCisgICAgMTU5ODYyLCAxNTk4NjYsIDE1OTg3MCwgMTU5ODc2LCAxNTk4ODIsIDE1OTg4NiwgMTU5ODk3LCAxNTk5MDUsIDE1OTkwOSwgCisgICAgMTU5OTEzLCAxNTk5MTcsIDE1OTkyMSwgMTU5OTI3LCAxNTk5MzQsIDE1OTk0NSwgMTU5OTU1LCAxNTk5NjUsIDE1OTk3NiwgCisgICAgMTU5OTg1LCAxNTk5OTYsIDE2MDAwMiwgMTYwMDA4LCAxNjAwMTQsIDE2MDAyMCwgMTYwMDI2LCAxNjAwMzAsIDE2MDAzNywgCisgICAgMTYwMDQ2LCAxNjAwNTMsIDE2MDA1OSwgMTYwMDYzLCAxNjAwNjcsIDE2MDA3MSwgMTYwMDgwLCAxNjAwOTIsIDE2MDA5NiwgCisgICAgMTYwMTAzLCAxNjAxMTAsIDE2MDExNywgMTYwMTI1LCAxNjAxMzIsIDE2MDE0MCwgMTYwMTQ5LCAxNjAxNTksIDE2MDE2OCwgCisgICAgMTYwMTc4LCAxNjAxODcsIDE2MDE5NywgMTYwMjA2LCAxNjAyMTYsIDE2MDIyNiwgMTYwMjM3LCAxNjAyNDcsIDE2MDI1OCwgCisgICAgMTYwMjY1LCAxNjAyNzMsIDE2MDI4MCwgMTYwMjg4LCAxNjAyOTYsIDE2MDMwNSwgMTYwMzEzLCAxNjAzMjIsIDE2MDMyOSwgCisgICAgMTYwMzQxLCAxNjAzNDgsIDE2MDM2MCwgMTYwMzYzLCAxNjAzNjYsIDE2MDM2OSwgMTYwMzcyLCAxNjAzNzgsIDE2MDM4NSwgCisgICAgMTYwMzkxLCAxNjAzOTgsIDE2MDQwMywgMTYwNDA5LCAxNjA0MjEsIDE2MDQzMSwgMTYwNDQyLCAxNjA0NDcsIDE2MDQ1MiwgCisgICAgMTYwNDU4LCAxNjA0NjMsIDE2MDQ3MCwgMTYwNDc0LCAxNjA0ODAsIDE2MDQ4MiwgMTYwNDg0LCAxNjA0ODgsIDE2MDQ5MiwgCisgICAgMTYwNDk2LCAxNjA1MDUsIDE2MDUwNywgMTYwNTA5LCAxNjA1MTIsIDE2MDUxNCwgMTYwNTE2LCAxNjA1MjAsIDE2MDUyMiwgCisgICAgMTYwNTI2LCAxNjA1MjgsIDE2MDUzMiwgMTYwNTM0LCAxNjA1MzYsIDE2MDU0MCwgMTYwNTQ0LCAxNjA1NTAsIDE2MDU1MiwgCisgICAgMTYwNTU2LCAxNjA1NTgsIDE2MDU2MiwgMTYwNTY2LCAxNjA1NzAsIDE2MDU3NCwgMTYwNTc2LCAxNjA1NzgsIDE2MDU4MiwgCisgICAgMTYwNTg2LCAxNjA1OTAsIDE2MDU5NCwgMTYwNTk2LCAxNjA1OTgsIDE2MDYwMCwgMTYwNjA2LCAxNjA2MTEsIDE2MDYxNCwgCisgICAgMTYwNjIyLCAxNjA2MzAsIDE2MDYzMiwgMTYwNjM3LCAxNjA2NDAsIDE2MDY0NSwgMTYwNjU2LCAxNjA2NjMsIDE2MDY2OCwgCisgICAgMTYwNjczLCAxNjA2NzUsIDE2MDY3OSwgMTYwNjgxLCAxNjA2ODUsIDE2MDY4NywgMTYwNjkxLCAxNjA2OTUsIDE2MDY5OCwgCisgICAgMTYwNzAxLCAxNjA3MDMsIDE2MDcwNiwgMTYwNzA4LCAxNjA3MTIsIDE2MDcxNCwgMTYwNzE2LCAxNjA3MTgsIDE2MDcyMiwgCisgICAgMTYwNzI0LCAxNjA3MjgsIDE2MDczMSwgMTYwNzM4LCAxNjA3NDEsIDE2MDc0NiwgMTYwNzQ5LCAxNjA3NTIsIDE2MDc1NywgCisgICAgMTYwNzYxLCAxNjA3NjUsIDE2MDc2OSwgMTYwNzcxLCAxNjA3NzYsIDE2MDc3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTYwNzgzLCAxNjA3ODgsIDE2MDc5MCwgMTYwNzk0LCAxNjA3OTYsIDE2MDgwMCwgMTYwODA0LCAKKyAgICAxNjA4MTAsIDE2MDgxNCwgMTYwODE5LCAxNjA4MjIsIDE2MDgyNiwgMTYwODMwLCAwLCAwLCAwLCAxNjA4MzQsIDE2MDgzNiwgCisgICAgMTYwODQyLCAxNjA4NDYsIDE2MDg1MCwgMTYwODUyLCAxNjA4NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE2MDg1OCwgMTYwODYzLCAxNjA4NjgsIDE2MDg3MywgMTYwODc4LCAxNjA4ODMsIDE2MDg4OCwgMTYwODk1LCAxNjA5MDIsIAorICAgIDE2MDkwOSwgMTYwOTE2LCAxNjA5MjEsIDE2MDkyNiwgMTYwOTMxLCAxNjA5MzYsIDE2MDk0MywgMTYwOTQ5LCAxNjA5NTYsIAorICAgIDE2MDk2MywgMTYwOTcwLCAxNjA5NzUsIDE2MDk4MCwgMTYwOTg1LCAxNjA5OTAsIDE2MDk5NSwgMTYxMDAyLCAxNjEwMDksIAorICAgIDE2MTAxNCwgMTYxMDE5LCAxNjEwMjYsIDE2MTAzMywgMTYxMDQxLCAxNjEwNDksIDE2MTA1NiwgMTYxMDYzLCAxNjEwNzEsIAorICAgIDE2MTA3OSwgMTYxMDg3LCAxNjEwOTQsIDE2MTEwNCwgMTYxMTE1LCAxNjExMjAsIDE2MTEyNywgMTYxMTM0LCAxNjExNDEsIAorICAgIDE2MTE0OSwgMTYxMTU3LCAxNjExNjgsIDE2MTE3NiwgMTYxMTg0LCAxNjExOTIsIDE2MTE5NywgMTYxMjAyLCAxNjEyMDcsIAorICAgIDE2MTIxMiwgMTYxMjE3LCAxNjEyMjIsIDE2MTIyNywgMTYxMjMyLCAxNjEyMzcsIDE2MTI0MiwgMTYxMjQ3LCAxNjEyNTIsIAorICAgIDE2MTI1OSwgMTYxMjY0LCAxNjEyNjksIDE2MTI3NiwgMTYxMjgxLCAxNjEyODYsIDE2MTI5MSwgMTYxMjk2LCAxNjEzMDEsIAorICAgIDE2MTMwNiwgMTYxMzExLCAxNjEzMTYsIDE2MTMyMSwgMTYxMzI2LCAxNjEzMzEsIDE2MTMzNiwgMTYxMzQzLCAxNjEzNTEsIAorICAgIDE2MTM1NiwgMTYxMzYxLCAxNjEzNjgsIDE2MTM3MywgMTYxMzc4LCAxNjEzODMsIDE2MTM5MCwgMTYxMzk1LCAxNjE0MDIsIAorICAgIDE2MTQwNywgMTYxNDE0LCAxNjE0MTksIDE2MTQyOCwgMTYxNDM3LCAxNjE0NDIsIDE2MTQ0NywgMTYxNDUyLCAxNjE0NTcsIAorICAgIDE2MTQ2MiwgMTYxNDY3LCAxNjE0NzIsIDE2MTQ3NywgMTYxNDgyLCAxNjE0ODcsIDE2MTQ5MiwgMTYxNDk3LCAxNjE1MDIsIAorICAgIDE2MTUxMCwgMTYxNTE4LCAxNjE1MjMsIDE2MTUyOCwgMTYxNTMzLCAxNjE1MzgsIDE2MTU0MywgMTYxNTQ5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjE1NTUsIDE2MTU2MywgMTYxNTcxLCAxNjE1NzksIDE2MTU4NywgCisgICAgMTYxNTkzLCAxNjE1OTksIDE2MTYwMywgMTYxNjA3LCAxNjE2MTMsIDE2MTYxOSwgMTYxNjI4LCAxNjE2MzIsIDE2MTYzNywgCisgICAgMTYxNjQzLCAxNjE2NDcsIDE2MTY1MiwgMTYxNjU2LCAxNjE2NjAsIDE2MTY2NiwgMTYxNjcyLCAxNjE2ODIsIDE2MTY5MSwgCisgICAgMTYxNjk0LCAxNjE2OTksIDE2MTcwNSwgMTYxNzExLCAxNjE3MjIsIDE2MTczMiwgMTYxNzM2LCAxNjE3NDEsIDE2MTc0NywgCisgICAgMTYxNzUzLCAxNjE3NjIsIDE2MTc2NywgMTYxNzcxLCAxNjE3NzYsIDE2MTc4MCwgMTYxNzg2LCAxNjE3OTIsIDE2MTc5OCwgCisgICAgMTYxODAyLCAxNjE4MDUsIDE2MTgwOSwgMTYxODEyLCAxNjE4MTUsIDE2MTgyMCwgMTYxODI1LCAxNjE4MzIsIDE2MTg0MCwgCisgICAgMTYxODQ3LCAxNjE4NTQsIDE2MTg2MywgMTYxODcyLCAxNjE4NzksIDE2MTg4NywgMTYxODk0LCAxNjE5MDEsIDE2MTkxMCwgCisgICAgMTYxOTE5LCAxNjE5MjYsIDE2MTkzNCwgMTYxOTQxLCAxNjE5NDgsIDE2MTk1NywgMTYxOTY0LCAxNjE5NzIsIDE2MTk3OCwgCisgICAgMTYxOTg3LCAxNjE5OTUsIDE2MjAwNCwgMTYyMDExLCAxNjIwMjEsIDE2MjAzMiwgMTYyMDQwLCAxNjIwNDgsIDE2MjA1NywgCisgICAgMTYyMDY1LCAxNjIwNzMsIDE2MjA4MiwgMTYyMDkwLCAxNjIxMDAsIDE2MjEwOSwgMTYyMTE3LCAxNjIxMjUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MjEzNCwgMTYyMTQyLCAxNjIxNTAsIAorICAgIDE2MjE1OCwgMTYyMTY2LCAxNjIxNzUsIDE2MjE4NCwgMTYyMTkzLCAxNjIyMDIsIDE2MjIxMSwgMTYyMjIwLCAxNjIyMjksIAorICAgIDAsIDAsIDAsIDAsIDE2MjIzOCwgMTYyMjQ2LCAxNjIyNTQsIDE2MjI2MiwgMTYyMjcwLCAxNjIyNzcsIDE2MjI4NCwgCisgICAgMTYyMjkxLCAxNjIyOTgsIDE2MjMwNiwgMTYyMzE0LCAxNjIzMjIsIDE2MjMzMCwgMTYyMzQwLCAxNjIzNTAsIDE2MjM2MCwgCisgICAgMTYyMzcwLCAxNjIzNzksIDE2MjM4OCwgMTYyMzk3LCAxNjI0MDYsIDE2MjQxNSwgMTYyNDI0LCAxNjI0MzMsIDE2MjQ0MiwgCisgICAgMTYyNDUwLCAxNjI0NTgsIDE2MjQ2NiwgMTYyNDc0LCAxNjI0ODIsIDE2MjQ5MCwgMTYyNDk4LCAxNjI1MDYsIDE2MjUxNiwgCisgICAgMTYyNTI2LCAxNjI1MzYsIDE2MjU0NiwgMTYyNTUwLCAxNjI1NTQsIDE2MjU1OCwgMTYyNTYyLCAxNjI1NjUsIDE2MjU2OCwgCisgICAgMTYyNTcxLCAxNjI1NzQsIDE2MjU3OCwgMTYyNTgyLCAxNjI1ODYsIDE2MjU5MCwgMTYyNTk1LCAxNjI2MDAsIDE2MjYwNSwgCisgICAgMTYyNjEwLCAxNjI2MTMsIDE2MjYxNiwgMTYyNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjI2MjIsIDE2MjYyNSwgCisgICAgMTYyNjI4LCAxNjI2MzEsIDE2MjYzNCwgMTYyNjM5LCAxNjI2NDQsIDE2MjY1MCwgMTYyNjU2LCAxNjI2NjAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE2MjY2NCwgMTYyNjcwLCAxNjI2NzYsIDE2MjY4MiwgMTYyNjg4LCAxNjI2OTYsIDE2MjcwNCwgMTYyNzEzLCAKKyAgICAxNjI3MjIsIDE2MjcyNywgMTYyNzMyLCAxNjI3MzcsIDE2Mjc0MiwgMTYyNzQ5LCAxNjI3NTYsIDE2Mjc2NCwgMTYyNzcyLCAKKyAgICAxNjI3NzksIDE2Mjc4NiwgMTYyNzkzLCAxNjI4MDAsIDE2MjgwOSwgMTYyODE4LCAxNjI4MjgsIDE2MjgzOCwgMTYyODQ0LCAKKyAgICAxNjI4NTAsIDE2Mjg1NiwgMTYyODYyLCAxNjI4NzAsIDE2Mjg3OCwgMTYyODg3LCAxNjI4OTYsIDE2MjkwNCwgMTYyOTEyLCAKKyAgICAxNjI5MjAsIDE2MjkyOCwgMTYyOTM4LCAxNjI5NDgsIDE2Mjk1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyOTcwLCAKKyAgICAxNjI5NzUsIDE2Mjk4MCwgMTYyOTg1LCAxNjI5OTAsIDE2Mjk5OSwgMTYzMDA4LCAxNjMwMTcsIDE2MzAyNiwgMTYzMDMzLCAKKyAgICAxNjMwNDAsIDE2MzA0NywgMTYzMDU0LCAxNjMwNjEsIDE2MzA3MCwgMTYzMDc5LCAxNjMwODgsIDE2MzA5MywgMTYzMTAwLCAKKyAgICAxNjMxMDcsIDE2MzExNCwgMTYzMTE5LCAxNjMxMjQsIDE2MzEyOSwgMTYzMTM0LCAxNjMxNDEsIDE2MzE0OCwgMTYzMTU1LCAKKyAgICAxNjMxNjIsIDE2MzE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjEwLCAxNTc2MTIsIAotICAgIDE1NzYxNiwgMTU3NjE4LCAxNTc2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYyNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzMTc4LCAxNjMxODIsIDE2MzE4NiwgMTYzMTkxLCAxNjMxOTUsIDE2MzE5OSwgCisgICAgMTYzMjA0LCAxNjMyMDgsIDE2MzIxMiwgMTYzMjE4LCAxNjMyMjQsIDE2MzIzMSwgMTYzMjM1LCAxNjMyMzksIDE2MzI0MSwgCisgICAgMCwgMTYzMjUxLCAxNjMyNTgsIDE2MzI2MiwgMTYzMjY2LCAxNjMyNzYsIDE2MzI4MCwgMTYzMjg0LCAxNjMyODgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzI5MiwgMCwgMCwgMTYzMjk2LCAxNjMyOTgsIDE2MzMwMCwgMTYzMzA2LCAxNjMzMTAsIAorICAgIDE2MzMxMiwgMTYzMzE4LCAxNjMzMjAsIDE2MzMyMiwgMTYzMzI2LCAxNjMzMjgsIDE2MzMzMiwgMCwgMTYzMzM0LCAKKyAgICAxNjMzMzgsIDE2MzM0MywgMTYzMzQ3LCAxNjMzNTEsIDE2MzM1MywgMTYzMzU3LCAxNjMzNTksIDE2MzM2NSwgMTYzMzcxLCAKKyAgICAxNjMzNzcsIDE2MzM4MSwgMCwgMCwgMCwgMCwgMTYzMzg3LCAxNjMzODksIDE2MzM5MSwgMTYzMzkzLCAxNjMzOTUsIAorICAgIDE2MzM5NywgMTYzMzk5LCAxNjM0MDMsIDE2MzQwNywgMTYzNDE0LCAxNjM0MTgsIDE2MzQyMCwgMTYzNDI1LCAxNjM0MjcsIAorICAgIDE2MzQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzNDMxLCAxNjM0MzMsIDE2MzQzNywgMTYzNDM5LCAxNjM0NDEsIAorICAgIDE2MzQ0NSwgMTYzNDQ3LCAxNjM0NDksIDE2MzQ1MSwgMTYzNDUzLCAxNjM0NTUsIDE2MzQ1OSwgMTYzNDYxLCAxNjM0NjMsIAorICAgIDE2MzQ2NSwgMTYzNDY3LCAxNjM0NjksIDE2MzQ3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzNDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MjgsIDE1NzYzMiwgMTU3NjM2LCAxNTc2NDAsIAotICAgIDE1NzY0NCwgMTU3NjQ4LCAxNTc2NTIsIDE1NzY1NiwgMTU3NjYwLCAxNTc2NjQsIDE1NzY2OCwgMTU3NjcyLCAxNTc2NzYsIAotICAgIDE1NzY4MCwgMTU3Njg0LCAxNTc2ODgsIDE1NzY5MiwgMTU3Njk2LCAxNTc3MDAsIDE1NzcwNCwgMTU3NzA4LCAxNTc3MTIsIAotICAgIDE1NzcxNiwgMTU3NzIwLCAxNTc3MjQsIDE1NzcyOCwgMTU3NzMyLCAxNTc3MzYsIDE1Nzc0MCwgMTU3NzQ0LCAxNTc3NDgsIAotICAgIDE1Nzc1MiwgMTU3NzU2LCAxNTc3NjAsIDE1Nzc2NCwgMTU3NzY4LCAxNTc3NzIsIDE1Nzc3NiwgMTU3NzgwLCAxNTc3ODQsIAotICAgIDE1Nzc4OCwgMTU3NzkyLCAxNTc3OTYsIDE1NzgwMCwgMTU3ODA0LCAxNTc4MDgsIDE1NzgxMiwgMTU3ODE2LCAxNTc4MjAsIAotICAgIDE1NzgyNCwgMTU3ODI4LCAxNTc4MzIsIDE1NzgzNiwgMTU3ODQwLCAxNTc4NDQsIDE1Nzg0OCwgMTU3ODUyLCAxNTc4NTYsIAotICAgIDE1Nzg2MCwgMTU3ODY0LCAxNTc4NjgsIDE1Nzg3MiwgMTU3ODc2LCAxNTc4ODAsIDE1Nzg4NCwgMTU3ODg4LCAxNTc4OTIsIAotICAgIDE1Nzg5NiwgMTU3OTAwLCAxNTc5MDQsIDE1NzkwOCwgMTU3OTEyLCAxNTc5MTYsIDE1NzkyMCwgMTU3OTI0LCAxNTc5MjgsIAotICAgIDE1NzkzMiwgMTU3OTM2LCAxNTc5NDAsIDE1Nzk0NCwgMTU3OTQ4LCAxNTc5NTIsIDE1Nzk1NiwgMTU3OTYwLCAxNTc5NjQsIAotICAgIDE1Nzk2OCwgMTU3OTcyLCAxNTc5NzYsIDE1Nzk4MCwgMTU3OTg0LCAxNTc5ODgsIDE1Nzk5MiwgMTU3OTk2LCAxNTgwMDAsIAotICAgIDE1ODAwNCwgMTU4MDA4LCAxNTgwMTIsIDE1ODAxNiwgMTU4MDIwLCAxNTgwMjQsIDE1ODAyOCwgMTU4MDMyLCAxNTgwMzYsIAotICAgIDE1ODA0MCwgMTU4MDQ0LCAxNTgwNDgsIDE1ODA1MiwgMTU4MDU2LCAxNTgwNjAsIDE1ODA2NCwgMTU4MDY4LCAxNTgwNzIsIAotICAgIDE1ODA3NiwgMTU4MDgwLCAxNTgwODQsIDE1ODA4OCwgMTU4MDkyLCAxNTgwOTYsIDE1ODEwMCwgMTU4MTA0LCAxNTgxMDgsIAotICAgIDE1ODExMiwgMTU4MTE2LCAxNTgxMjAsIDE1ODEyNCwgMTU4MTI4LCAxNTgxMzIsIDE1ODEzNiwgMTU4MTQwLCAxNTgxNDQsIAotICAgIDE1ODE0OCwgMTU4MTUyLCAxNTgxNTYsIDE1ODE2MCwgMTU4MTY0LCAxNTgxNjgsIDE1ODE3MiwgMTU4MTc2LCAxNTgxODAsIAotICAgIDE1ODE4NCwgMTU4MTg4LCAxNTgxOTIsIDE1ODE5NiwgMTU4MjAwLCAxNTgyMDQsIDE1ODIwOCwgMTU4MjEyLCAxNTgyMTYsIAotICAgIDE1ODIyMCwgMTU4MjI0LCAxNTgyMjgsIDE1ODIzMiwgMTU4MjM2LCAxNTgyNDAsIDE1ODI0NCwgMTU4MjQ4LCAxNTgyNTIsIAotICAgIDE1ODI1NiwgMTU4MjYwLCAxNTgyNjQsIDE1ODI2OCwgMTU4MjcyLCAxNTgyNzYsIDE1ODI4MCwgMTU4Mjg0LCAxNTgyODgsIAotICAgIDE1ODI5MiwgMTU4Mjk2LCAxNTgzMDAsIDE1ODMwNCwgMTU4MzA4LCAxNTgzMTIsIDE1ODMxNiwgMTU4MzIwLCAxNTgzMjQsIAotICAgIDE1ODMyOCwgMTU4MzMyLCAxNTgzMzYsIDE1ODM0MCwgMTU4MzQ0LCAxNTgzNDgsIDE1ODM1MiwgMTU4MzU2LCAxNTgzNjAsIAotICAgIDE1ODM2NCwgMTU4MzY4LCAxNTgzNzIsIDE1ODM3NiwgMTU4MzgwLCAxNTgzODQsIDE1ODM4OCwgMTU4MzkyLCAxNTgzOTYsIAotICAgIDE1ODQwMCwgMTU4NDA0LCAxNTg0MDgsIDE1ODQxMiwgMTU4NDE2LCAxNTg0MjAsIDE1ODQyNCwgMTU4NDI4LCAxNTg0MzIsIAotICAgIDE1ODQzNiwgMTU4NDQwLCAxNTg0NDQsIDE1ODQ0OCwgMTU4NDUyLCAxNTg0NTYsIDE1ODQ2MCwgMTU4NDY0LCAxNTg0NjgsIAotICAgIDE1ODQ3MiwgMTU4NDc2LCAxNTg0ODAsIDE1ODQ4NCwgMTU4NDg4LCAxNTg0OTIsIDE1ODQ5NiwgMTU4NTAwLCAxNTg1MDQsIAotICAgIDE1ODUwOCwgMTU4NTEyLCAxNTg1MTYsIDE1ODUyMCwgMTU4NTI0LCAxNTg1MjgsIDE1ODUzMiwgMTU4NTM2LCAxNTg1NDAsIAotICAgIDE1ODU0NCwgMTU4NTQ4LCAxNTg1NTIsIDE1ODU1NiwgMTU4NTYwLCAxNTg1NjQsIDE1ODU2OCwgMTU4NTcyLCAxNTg1NzYsIAotICAgIDE1ODU4MCwgMTU4NTg0LCAxNTg1ODgsIDE1ODU5MiwgMTU4NTk2LCAxNTg2MDAsIDE1ODYwNCwgMTU4NjA4LCAxNTg2MTIsIAotICAgIDE1ODYxNiwgMTU4NjIwLCAxNTg2MjQsIDE1ODYyOCwgMTU4NjMyLCAxNTg2MzYsIDE1ODY0MCwgMTU4NjQ0LCAxNTg2NDgsIAotICAgIDE1ODY1MiwgMTU4NjU2LCAxNTg2NjAsIDE1ODY2NCwgMTU4NjY4LCAxNTg2NzIsIDE1ODY3NiwgMTU4NjgwLCAxNTg2ODQsIAotICAgIDE1ODY4OCwgMTU4NjkyLCAxNTg2OTYsIDE1ODcwMCwgMTU4NzA0LCAxNTg3MDgsIDE1ODcxMiwgMTU4NzE2LCAxNTg3MjAsIAotICAgIDE1ODcyNCwgMTU4NzI4LCAxNTg3MzIsIDE1ODczNiwgMTU4NzQwLCAxNTg3NDQsIDE1ODc0OCwgMTU4NzUyLCAxNTg3NTYsIAotICAgIDE1ODc2MCwgMTU4NzY0LCAxNTg3NjgsIDE1ODc3MiwgMTU4Nzc2LCAxNTg3ODAsIDE1ODc4NCwgMTU4Nzg4LCAxNTg3OTIsIAotICAgIDE1ODc5NiwgMTU4ODAwLCAxNTg4MDQsIDE1ODgwOCwgMTU4ODEyLCAxNTg4MTYsIDE1ODgyMCwgMTU4ODI0LCAxNTg4MjgsIAotICAgIDE1ODgzMiwgMTU4ODM2LCAxNTg4NDAsIDE1ODg0NCwgMTU4ODQ4LCAxNTg4NTIsIDE1ODg1NiwgMTU4ODYwLCAxNTg4NjQsIAotICAgIDE1ODg2OCwgMTU4ODcyLCAxNTg4NzYsIDE1ODg4MCwgMTU4ODg0LCAxNTg4ODgsIDE1ODg5MiwgMTU4ODk2LCAxNTg5MDAsIAotICAgIDE1ODkwNCwgMTU4OTA4LCAxNTg5MTIsIDE1ODkxNiwgMTU4OTIwLCAxNTg5MjQsIDE1ODkyOCwgMTU4OTMyLCAxNTg5MzYsIAotICAgIDE1ODk0MCwgMTU4OTQ0LCAxNTg5NDgsIDE1ODk1MiwgMTU4OTU2LCAxNTg5NjAsIDE1ODk2NCwgMTU4OTY4LCAxNTg5NzIsIAotICAgIDE1ODk3NiwgMTU4OTgwLCAxNTg5ODQsIDE1ODk4OCwgMTU4OTkyLCAxNTg5OTYsIDE1OTAwMCwgMTU5MDA0LCAxNTkwMDgsIAotICAgIDE1OTAxMiwgMTU5MDE2LCAxNTkwMjAsIDE1OTAyNCwgMTU5MDI4LCAxNTkwMzIsIDE1OTAzNiwgMTU5MDQwLCAxNTkwNDQsIAotICAgIDE1OTA0OCwgMTU5MDUyLCAxNTkwNTYsIDE1OTA2MCwgMTU5MDY0LCAxNTkwNjgsIDE1OTA3MiwgMTU5MDc2LCAxNTkwODAsIAotICAgIDE1OTA4NCwgMTU5MDg4LCAxNTkwOTIsIDE1OTA5NiwgMTU5MTAwLCAxNTkxMDQsIDE1OTEwOCwgMTU5MTEyLCAxNTkxMTYsIAotICAgIDE1OTEyMCwgMTU5MTI0LCAxNTkxMjgsIDE1OTEzMiwgMTU5MTM2LCAxNTkxNDAsIDE1OTE0NCwgMTU5MTQ4LCAxNTkxNTIsIAotICAgIDE1OTE1NiwgMTU5MTYwLCAxNTkxNjQsIDE1OTE2OCwgMTU5MTcyLCAxNTkxNzYsIDE1OTE4MCwgMTU5MTg0LCAxNTkxODgsIAotICAgIDE1OTE5MiwgMTU5MTk2LCAxNTkyMDAsIDE1OTIwNCwgMTU5MjA4LCAxNTkyMTIsIDE1OTIxNiwgMTU5MjIwLCAxNTkyMjQsIAotICAgIDE1OTIyOCwgMTU5MjMyLCAxNTkyMzYsIDE1OTI0MCwgMTU5MjQ0LCAxNTkyNDgsIDE1OTI1MiwgMTU5MjU2LCAxNTkyNjAsIAotICAgIDE1OTI2NCwgMTU5MjY4LCAxNTkyNzIsIDE1OTI3NiwgMTU5MjgwLCAxNTkyODQsIDE1OTI4OCwgMTU5MjkyLCAxNTkyOTYsIAotICAgIDE1OTMwMCwgMTU5MzA0LCAxNTkzMDgsIDE1OTMxMiwgMTU5MzE2LCAxNTkzMjAsIDE1OTMyNCwgMTU5MzI4LCAxNTkzMzIsIAotICAgIDE1OTMzNiwgMTU5MzQwLCAxNTkzNDQsIDE1OTM0OCwgMTU5MzUyLCAxNTkzNTYsIDE1OTM2MCwgMTU5MzY0LCAxNTkzNjgsIAotICAgIDE1OTM3MiwgMTU5Mzc2LCAxNTkzODAsIDE1OTM4NCwgMTU5Mzg4LCAxNTkzOTIsIDE1OTM5NiwgMTU5NDAwLCAxNTk0MDQsIAotICAgIDE1OTQwOCwgMTU5NDEyLCAxNTk0MTYsIDE1OTQyMCwgMTU5NDI0LCAxNTk0MjgsIDE1OTQzMiwgMTU5NDM2LCAxNTk0NDAsIAotICAgIDE1OTQ0NCwgMTU5NDQ4LCAxNTk0NTIsIDE1OTQ1NiwgMTU5NDYwLCAxNTk0NjQsIDE1OTQ2OCwgMTU5NDcyLCAxNTk0NzYsIAotICAgIDE1OTQ4MCwgMTU5NDg0LCAxNTk0ODgsIDE1OTQ5MiwgMTU5NDk2LCAxNTk1MDAsIDE1OTUwNCwgMTU5NTA4LCAxNTk1MTIsIAotICAgIDE1OTUxNiwgMTU5NTIwLCAxNTk1MjQsIDE1OTUyOCwgMTU5NTMyLCAxNTk1MzYsIDE1OTU0MCwgMTU5NTQ0LCAxNTk1NDgsIAotICAgIDE1OTU1MiwgMTU5NTU2LCAxNTk1NjAsIDE1OTU2NCwgMTU5NTY4LCAxNTk1NzIsIDE1OTU3NiwgMTU5NTgwLCAxNTk1ODQsIAotICAgIDE1OTU4OCwgMTU5NTkyLCAxNTk1OTYsIDE1OTYwMCwgMTU5NjA0LCAxNTk2MDgsIDE1OTYxMiwgMTU5NjE2LCAxNTk2MjAsIAotICAgIDE1OTYyNCwgMTU5NjI4LCAxNTk2MzIsIDE1OTYzNiwgMTU5NjQwLCAxNTk2NDQsIDE1OTY0OCwgMTU5NjUyLCAxNTk2NTYsIAotICAgIDE1OTY2MCwgMTU5NjY0LCAxNTk2NjgsIDE1OTY3MiwgMTU5Njc2LCAxNTk2ODAsIDE1OTY4NCwgMTU5Njg4LCAxNTk2OTIsIAotICAgIDE1OTY5NiwgMTU5NzAwLCAxNTk3MDQsIDE1OTcwOCwgMTU5NzEyLCAxNTk3MTYsIDE1OTcyMCwgMTU5NzI0LCAxNTk3MjgsIAotICAgIDE1OTczMiwgMTU5NzM2LCAxNTk3NDAsIDE1OTc0NCwgMTU5NzQ4LCAxNTk3NTIsIDE1OTc1NiwgMTU5NzYwLCAxNTk3NjQsIAotICAgIDE1OTc2OCwgMTU5NzcyLCAxNTk3NzYsIDE1OTc4MCwgMTU5Nzg0LCAxNTk3ODgsIDE1OTc5MiwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTYzNDc3LCAxNjM0ODEsIDE2MzQ4NSwgMTYzNDg5LCAxNjM0OTMsIDE2MzQ5NywgMTYzNTAxLCAxNjM1MDUsIAorICAgIDE2MzUwOSwgMTYzNTEzLCAxNjM1MTcsIDE2MzUyMSwgMTYzNTI1LCAxNjM1MjksIDE2MzUzMywgMTYzNTM3LCAxNjM1NDEsIAorICAgIDE2MzU0NSwgMTYzNTQ5LCAxNjM1NTMsIDE2MzU1NywgMTYzNTYxLCAxNjM1NjUsIDE2MzU2OSwgMTYzNTczLCAxNjM1NzcsIAorICAgIDE2MzU4MSwgMTYzNTg1LCAxNjM1ODksIDE2MzU5MywgMTYzNTk3LCAxNjM2MDEsIDE2MzYwNSwgMTYzNjA5LCAxNjM2MTMsIAorICAgIDE2MzYxNywgMTYzNjIxLCAxNjM2MjUsIDE2MzYyOSwgMTYzNjMzLCAxNjM2MzcsIDE2MzY0MSwgMTYzNjQ1LCAxNjM2NDksIAorICAgIDE2MzY1MywgMTYzNjU3LCAxNjM2NjEsIDE2MzY2NSwgMTYzNjY5LCAxNjM2NzMsIDE2MzY3NywgMTYzNjgxLCAxNjM2ODUsIAorICAgIDE2MzY4OSwgMTYzNjkzLCAxNjM2OTcsIDE2MzcwMSwgMTYzNzA1LCAxNjM3MDksIDE2MzcxMywgMTYzNzE3LCAxNjM3MjEsIAorICAgIDE2MzcyNSwgMTYzNzI5LCAxNjM3MzMsIDE2MzczNywgMTYzNzQxLCAxNjM3NDUsIDE2Mzc0OSwgMTYzNzUzLCAxNjM3NTcsIAorICAgIDE2Mzc2MSwgMTYzNzY1LCAxNjM3NjksIDE2Mzc3MywgMTYzNzc3LCAxNjM3ODEsIDE2Mzc4NSwgMTYzNzg5LCAxNjM3OTMsIAorICAgIDE2Mzc5NywgMTYzODAxLCAxNjM4MDUsIDE2MzgwOSwgMTYzODEzLCAxNjM4MTcsIDE2MzgyMSwgMTYzODI1LCAxNjM4MjksIAorICAgIDE2MzgzMywgMTYzODM3LCAxNjM4NDEsIDE2Mzg0NSwgMTYzODQ5LCAxNjM4NTMsIDE2Mzg1NywgMTYzODYxLCAxNjM4NjUsIAorICAgIDE2Mzg2OSwgMTYzODczLCAxNjM4NzcsIDE2Mzg4MSwgMTYzODg1LCAxNjM4ODksIDE2Mzg5MywgMTYzODk3LCAxNjM5MDEsIAorICAgIDE2MzkwNSwgMTYzOTA5LCAxNjM5MTMsIDE2MzkxNywgMTYzOTIxLCAxNjM5MjUsIDE2MzkyOSwgMTYzOTMzLCAxNjM5MzcsIAorICAgIDE2Mzk0MSwgMTYzOTQ1LCAxNjM5NDksIDE2Mzk1MywgMTYzOTU3LCAxNjM5NjEsIDE2Mzk2NSwgMTYzOTY5LCAxNjM5NzMsIAorICAgIDE2Mzk3NywgMTYzOTgxLCAxNjM5ODUsIDE2Mzk4OSwgMTYzOTkzLCAxNjM5OTcsIDE2NDAwMSwgMTY0MDA1LCAxNjQwMDksIAorICAgIDE2NDAxMywgMTY0MDE3LCAxNjQwMjEsIDE2NDAyNSwgMTY0MDI5LCAxNjQwMzMsIDE2NDAzNywgMTY0MDQxLCAxNjQwNDUsIAorICAgIDE2NDA0OSwgMTY0MDUzLCAxNjQwNTcsIDE2NDA2MSwgMTY0MDY1LCAxNjQwNjksIDE2NDA3MywgMTY0MDc3LCAxNjQwODEsIAorICAgIDE2NDA4NSwgMTY0MDg5LCAxNjQwOTMsIDE2NDA5NywgMTY0MTAxLCAxNjQxMDUsIDE2NDEwOSwgMTY0MTEzLCAxNjQxMTcsIAorICAgIDE2NDEyMSwgMTY0MTI1LCAxNjQxMjksIDE2NDEzMywgMTY0MTM3LCAxNjQxNDEsIDE2NDE0NSwgMTY0MTQ5LCAxNjQxNTMsIAorICAgIDE2NDE1NywgMTY0MTYxLCAxNjQxNjUsIDE2NDE2OSwgMTY0MTczLCAxNjQxNzcsIDE2NDE4MSwgMTY0MTg1LCAxNjQxODksIAorICAgIDE2NDE5MywgMTY0MTk3LCAxNjQyMDEsIDE2NDIwNSwgMTY0MjA5LCAxNjQyMTMsIDE2NDIxNywgMTY0MjIxLCAxNjQyMjUsIAorICAgIDE2NDIyOSwgMTY0MjMzLCAxNjQyMzcsIDE2NDI0MSwgMTY0MjQ1LCAxNjQyNDksIDE2NDI1MywgMTY0MjU3LCAxNjQyNjEsIAorICAgIDE2NDI2NSwgMTY0MjY5LCAxNjQyNzMsIDE2NDI3NywgMTY0MjgxLCAxNjQyODUsIDE2NDI4OSwgMTY0MjkzLCAxNjQyOTcsIAorICAgIDE2NDMwMSwgMTY0MzA1LCAxNjQzMDksIDE2NDMxMywgMTY0MzE3LCAxNjQzMjEsIDE2NDMyNSwgMTY0MzI5LCAxNjQzMzMsIAorICAgIDE2NDMzNywgMTY0MzQxLCAxNjQzNDUsIDE2NDM0OSwgMTY0MzUzLCAxNjQzNTcsIDE2NDM2MSwgMTY0MzY1LCAxNjQzNjksIAorICAgIDE2NDM3MywgMTY0Mzc3LCAxNjQzODEsIDE2NDM4NSwgMTY0Mzg5LCAxNjQzOTMsIDE2NDM5NywgMTY0NDAxLCAxNjQ0MDUsIAorICAgIDE2NDQwOSwgMTY0NDEzLCAxNjQ0MTcsIDE2NDQyMSwgMTY0NDI1LCAxNjQ0MjksIDE2NDQzMywgMTY0NDM3LCAxNjQ0NDEsIAorICAgIDE2NDQ0NSwgMTY0NDQ5LCAxNjQ0NTMsIDE2NDQ1NywgMTY0NDYxLCAxNjQ0NjUsIDE2NDQ2OSwgMTY0NDczLCAxNjQ0NzcsIAorICAgIDE2NDQ4MSwgMTY0NDg1LCAxNjQ0ODksIDE2NDQ5MywgMTY0NDk3LCAxNjQ1MDEsIDE2NDUwNSwgMTY0NTA5LCAxNjQ1MTMsIAorICAgIDE2NDUxNywgMTY0NTIxLCAxNjQ1MjUsIDE2NDUyOSwgMTY0NTMzLCAxNjQ1MzcsIDE2NDU0MSwgMTY0NTQ1LCAxNjQ1NDksIAorICAgIDE2NDU1MywgMTY0NTU3LCAxNjQ1NjEsIDE2NDU2NSwgMTY0NTY5LCAxNjQ1NzMsIDE2NDU3NywgMTY0NTgxLCAxNjQ1ODUsIAorICAgIDE2NDU4OSwgMTY0NTkzLCAxNjQ1OTcsIDE2NDYwMSwgMTY0NjA1LCAxNjQ2MDksIDE2NDYxMywgMTY0NjE3LCAxNjQ2MjEsIAorICAgIDE2NDYyNSwgMTY0NjI5LCAxNjQ2MzMsIDE2NDYzNywgMTY0NjQxLCAxNjQ2NDUsIDE2NDY0OSwgMTY0NjUzLCAxNjQ2NTcsIAorICAgIDE2NDY2MSwgMTY0NjY1LCAxNjQ2NjksIDE2NDY3MywgMTY0Njc3LCAxNjQ2ODEsIDE2NDY4NSwgMTY0Njg5LCAxNjQ2OTMsIAorICAgIDE2NDY5NywgMTY0NzAxLCAxNjQ3MDUsIDE2NDcwOSwgMTY0NzEzLCAxNjQ3MTcsIDE2NDcyMSwgMTY0NzI1LCAxNjQ3MjksIAorICAgIDE2NDczMywgMTY0NzM3LCAxNjQ3NDEsIDE2NDc0NSwgMTY0NzQ5LCAxNjQ3NTMsIDE2NDc1NywgMTY0NzYxLCAxNjQ3NjUsIAorICAgIDE2NDc2OSwgMTY0NzczLCAxNjQ3NzcsIDE2NDc4MSwgMTY0Nzg1LCAxNjQ3ODksIDE2NDc5MywgMTY0Nzk3LCAxNjQ4MDEsIAorICAgIDE2NDgwNSwgMTY0ODA5LCAxNjQ4MTMsIDE2NDgxNywgMTY0ODIxLCAxNjQ4MjUsIDE2NDgyOSwgMTY0ODMzLCAxNjQ4MzcsIAorICAgIDE2NDg0MSwgMTY0ODQ1LCAxNjQ4NDksIDE2NDg1MywgMTY0ODU3LCAxNjQ4NjEsIDE2NDg2NSwgMTY0ODY5LCAxNjQ4NzMsIAorICAgIDE2NDg3NywgMTY0ODgxLCAxNjQ4ODUsIDE2NDg4OSwgMTY0ODkzLCAxNjQ4OTcsIDE2NDkwMSwgMTY0OTA1LCAxNjQ5MDksIAorICAgIDE2NDkxMywgMTY0OTE3LCAxNjQ5MjEsIDE2NDkyNSwgMTY0OTI5LCAxNjQ5MzMsIDE2NDkzNywgMTY0OTQxLCAxNjQ5NDUsIAorICAgIDE2NDk0OSwgMTY0OTUzLCAxNjQ5NTcsIDE2NDk2MSwgMTY0OTY1LCAxNjQ5NjksIDE2NDk3MywgMTY0OTc3LCAxNjQ5ODEsIAorICAgIDE2NDk4NSwgMTY0OTg5LCAxNjQ5OTMsIDE2NDk5NywgMTY1MDAxLCAxNjUwMDUsIDE2NTAwOSwgMTY1MDEzLCAxNjUwMTcsIAorICAgIDE2NTAyMSwgMTY1MDI1LCAxNjUwMjksIDE2NTAzMywgMTY1MDM3LCAxNjUwNDEsIDE2NTA0NSwgMTY1MDQ5LCAxNjUwNTMsIAorICAgIDE2NTA1NywgMTY1MDYxLCAxNjUwNjUsIDE2NTA2OSwgMTY1MDczLCAxNjUwNzcsIDE2NTA4MSwgMTY1MDg1LCAxNjUwODksIAorICAgIDE2NTA5MywgMTY1MDk3LCAxNjUxMDEsIDE2NTEwNSwgMTY1MTA5LCAxNjUxMTMsIDE2NTExNywgMTY1MTIxLCAxNjUxMjUsIAorICAgIDE2NTEyOSwgMTY1MTMzLCAxNjUxMzcsIDE2NTE0MSwgMTY1MTQ1LCAxNjUxNDksIDE2NTE1MywgMTY1MTU3LCAxNjUxNjEsIAorICAgIDE2NTE2NSwgMTY1MTY5LCAxNjUxNzMsIDE2NTE3NywgMTY1MTgxLCAxNjUxODUsIDE2NTE4OSwgMTY1MTkzLCAxNjUxOTcsIAorICAgIDE2NTIwMSwgMTY1MjA1LCAxNjUyMDksIDE2NTIxMywgMTY1MjE3LCAxNjUyMjEsIDE2NTIyNSwgMTY1MjI5LCAxNjUyMzMsIAorICAgIDE2NTIzNywgMTY1MjQxLCAxNjUyNDUsIDE2NTI0OSwgMTY1MjUzLCAxNjUyNTcsIDE2NTI2MSwgMTY1MjY1LCAxNjUyNjksIAorICAgIDE2NTI3MywgMTY1Mjc3LCAxNjUyODEsIDE2NTI4NSwgMTY1Mjg5LCAxNjUyOTMsIDE2NTI5NywgMTY1MzAxLCAxNjUzMDUsIAorICAgIDE2NTMwOSwgMTY1MzEzLCAxNjUzMTcsIDE2NTMyMSwgMTY1MzI1LCAxNjUzMjksIDE2NTMzMywgMTY1MzM3LCAxNjUzNDEsIAorICAgIDE2NTM0NSwgMTY1MzQ5LCAxNjUzNTMsIDE2NTM1NywgMTY1MzYxLCAxNjUzNjUsIDE2NTM2OSwgMTY1MzczLCAxNjUzNzcsIAorICAgIDE2NTM4MSwgMTY1Mzg1LCAxNjUzODksIDE2NTM5MywgMTY1Mzk3LCAxNjU0MDEsIDE2NTQwNSwgMTY1NDA5LCAxNjU0MTMsIAorICAgIDE2NTQxNywgMTY1NDIxLCAxNjU0MjUsIDE2NTQyOSwgMTY1NDMzLCAxNjU0MzcsIDE2NTQ0MSwgMTY1NDQ1LCAxNjU0NDksIAorICAgIDE2NTQ1MywgMTY1NDU3LCAxNjU0NjEsIDE2NTQ2NSwgMTY1NDY5LCAxNjU0NzMsIDE2NTQ3NywgMTY1NDgxLCAxNjU0ODUsIAorICAgIDE2NTQ4OSwgMTY1NDkzLCAxNjU0OTcsIDE2NTUwMSwgMTY1NTA1LCAxNjU1MDksIDE2NTUxMywgMTY1NTE3LCAxNjU1MjEsIAorICAgIDE2NTUyNSwgMTY1NTI5LCAxNjU1MzMsIDE2NTUzNywgMTY1NTQxLCAxNjU1NDUsIDE2NTU0OSwgMTY1NTUzLCAxNjU1NTcsIAorICAgIDE2NTU2MSwgMTY1NTY1LCAxNjU1NjksIDE2NTU3MywgMTY1NTc3LCAxNjU1ODEsIDE2NTU4NSwgMTY1NTg5LCAxNjU1OTMsIAorICAgIDE2NTU5NywgMTY1NjAxLCAxNjU2MDUsIDE2NTYwOSwgMTY1NjEzLCAxNjU2MTcsIDE2NTYyMSwgMTY1NjI1LCAxNjU2MjksIAorICAgIDE2NTYzMywgMTY1NjM3LCAxNjU2NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMjAwNzgsMzE4NiArMjEzNTMsMzI3OSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE1OTc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU5ODAwLCAxNTk4MDMsIDE1OTgwNywgMTU5ODExLCAKLSAgICAxNTk4MTQsIDE1OTgxOCwgMTU5ODIyLCAxNTk4MjUsIDE1OTgyOCwgMTU5ODMyLCAxNTk4MzYsIDE1OTgzOSwgMTU5ODQyLCAKLSAgICAxNTk4NDUsIDE1OTg0OCwgMTU5ODUzLCAxNTk4NTYsIDE1OTg2MCwgMTU5ODYzLCAxNTk4NjYsIDE1OTg2OSwgMTU5ODcyLCAKLSAgICAxNTk4NzUsIDE1OTg3OCwgMTU5ODgyLCAxNTk4ODUsIDE1OTg4OSwgMTU5ODkyLCAxNTk4OTUsIDE1OTg5OSwgMTU5OTAzLCAKLSAgICAxNTk5MDcsIDE1OTkxMSwgMTU5OTE2LCAxNTk5MjEsIDE1OTkyNywgMTU5OTMzLCAxNTk5MzksIDE1OTk0NCwgMTU5OTUwLCAKLSAgICAxNTk5NTYsIDE1OTk2MiwgMTU5OTY3LCAxNTk5NzMsIDE1OTk3OSwgMTU5OTg0LCAxNTk5OTAsIDE1OTk5NiwgMTYwMDAxLCAKLSAgICAxNjAwMDcsIDE2MDAxMywgMTYwMDE4LCAxNjAwMjMsIDE2MDAyOSwgMTYwMDM0LCAxNjAwNDAsIDE2MDA0NiwgMTYwMDUyLCAKLSAgICAxNjAwNTgsIDE2MDA2NCwgMTYwMDY4LCAxNjAwNzMsIDE2MDA3NywgMTYwMDgyLCAxNjAwODYsIDE2MDA5MSwgMTYwMDk2LCAKLSAgICAxNjAxMDIsIDE2MDEwOCwgMTYwMTE0LCAxNjAxMTksIDE2MDEyNSwgMTYwMTMxLCAxNjAxMzcsIDE2MDE0MiwgMTYwMTQ4LCAKLSAgICAxNjAxNTQsIDE2MDE1OSwgMTYwMTY1LCAxNjAxNzEsIDE2MDE3NiwgMTYwMTgyLCAxNjAxODgsIDE2MDE5MywgMTYwMTk4LCAKLSAgICAxNjAyMDQsIDE2MDIwOSwgMTYwMjE1LCAxNjAyMjEsIDE2MDIyNywgMTYwMjMzLCAxNjAyMzksIDE2MDI0NCwgMTYwMjQ4LCAKLSAgICAxNjAyNTMsIDE2MDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY1NjQ1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjU2NDksIDE2NTY1MiwgMTY1NjU2LCAxNjU2NjAsIDE2NTY2MywgMTY1NjY3LCAxNjU2NzEsIDE2NTY3NCwgCisgICAgMTY1Njc3LCAxNjU2ODEsIDE2NTY4NSwgMTY1Njg4LCAxNjU2OTEsIDE2NTY5NCwgMTY1Njk3LCAxNjU3MDIsIDE2NTcwNSwgCisgICAgMTY1NzA5LCAxNjU3MTIsIDE2NTcxNSwgMTY1NzE4LCAxNjU3MjEsIDE2NTcyNCwgMTY1NzI3LCAxNjU3MzEsIDE2NTczNCwgCisgICAgMTY1NzM4LCAxNjU3NDEsIDE2NTc0NCwgMTY1NzQ4LCAxNjU3NTIsIDE2NTc1NiwgMTY1NzYwLCAxNjU3NjUsIDE2NTc3MCwgCisgICAgMTY1Nzc2LCAxNjU3ODIsIDE2NTc4OCwgMTY1NzkzLCAxNjU3OTksIDE2NTgwNSwgMTY1ODExLCAxNjU4MTYsIDE2NTgyMiwgCisgICAgMTY1ODI4LCAxNjU4MzMsIDE2NTgzOSwgMTY1ODQ1LCAxNjU4NTAsIDE2NTg1NiwgMTY1ODYyLCAxNjU4NjcsIDE2NTg3MywgCisgICAgMTY1ODc5LCAxNjU4ODQsIDE2NTg5MCwgMTY1ODk2LCAxNjU5MDIsIDE2NTkwOCwgMTY1OTE0LCAxNjU5MTgsIDE2NTkyMywgCisgICAgMTY1OTI3LCAxNjU5MzIsIDE2NTkzNiwgMTY1OTQxLCAxNjU5NDYsIDE2NTk1MiwgMTY1OTU4LCAxNjU5NjQsIDE2NTk2OSwgCisgICAgMTY1OTc1LCAxNjU5ODEsIDE2NTk4NywgMTY1OTkyLCAxNjU5OTgsIDE2NjAwNCwgMTY2MDA5LCAxNjYwMTUsIDE2NjAyMSwgCisgICAgMTY2MDI2LCAxNjYwMzIsIDE2NjAzOCwgMTY2MDQzLCAxNjYwNDksIDE2NjA1NSwgMTY2MDYwLCAxNjYwNjYsIDE2NjA3MiwgCisgICAgMTY2MDc4LCAxNjYwODQsIDE2NjA5MCwgMTY2MDk1LCAxNjYwOTksIDE2NjEwNCwgMTY2MTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjAyNjAsIDE2MDI2MywgMTYwMjY2LCAxNjAyNjksIAotICAgIDE2MDI3MiwgMTYwMjc1LCAxNjAyNzgsIDE2MDI4MSwgMTYwMjg0LCAxNjAyODcsIDE2MDI5MCwgMTYwMjkzLCAxNjAyOTYsIAotICAgIDE2MDI5OSwgMTYwMzAyLCAxNjAzMDUsIDE2MDMwOCwgMTYwMzExLCAxNjAzMTQsIDE2MDMxNywgMTYwMzIwLCAxNjAzMjMsIAotICAgIDE2MDMyNiwgMTYwMzI5LCAxNjAzMzIsIDE2MDMzNSwgMTYwMzM4LCAxNjAzNDEsIDE2MDM0NCwgMTYwMzQ3LCAxNjAzNTAsIAotICAgIDE2MDM1MywgMTYwMzU2LCAxNjAzNTksIDE2MDM2MiwgMTYwMzY1LCAxNjAzNjgsIDE2MDM3MSwgMTYwMzc0LCAxNjAzNzcsIAotICAgIDE2MDM4MCwgMTYwMzgzLCAxNjAzODYsIDE2MDM4OSwgMTYwMzkyLCAxNjAzOTUsIDE2MDM5OCwgMTYwNDAxLCAxNjA0MDQsIAotICAgIDE2MDQwNywgMTYwNDEwLCAxNjA0MTMsIDE2MDQxNiwgMTYwNDE5LCAxNjA0MjIsIDE2MDQyNSwgMTYwNDI4LCAxNjA0MzEsIAotICAgIDE2MDQzNCwgMTYwNDM3LCAxNjA0NDAsIDE2MDQ0MywgMTYwNDQ2LCAxNjA0NDksIDE2MDQ1MiwgMTYwNDU1LCAxNjA0NTgsIAotICAgIDE2MDQ2MSwgMTYwNDY0LCAxNjA0NjcsIDE2MDQ3MCwgMTYwNDczLCAxNjA0NzYsIDE2MDQ3OSwgMTYwNDgyLCAxNjA0ODUsIAotICAgIDE2MDQ4OCwgMTYwNDkxLCAxNjA0OTQsIDE2MDQ5NywgMTYwNTAwLCAxNjA1MDMsIDE2MDUwNiwgMTYwNTA5LCAxNjA1MTIsIAotICAgIDE2MDUxNSwgMTYwNTE4LCAxNjA1MjEsIDE2MDUyNCwgMTYwNTI3LCAxNjA1MzAsIDE2MDUzMywgMTYwNTM2LCAxNjA1MzksIAotICAgIDE2MDU0MiwgMTYwNTQ1LCAxNjA1NDgsIDE2MDU1MSwgMTYwNTU0LCAxNjA1NTcsIDE2MDU2MCwgMTYwNTYzLCAxNjA1NjYsIAotICAgIDE2MDU2OSwgMTYwNTcyLCAxNjA1NzUsIDE2MDU3OCwgMTYwNTgxLCAxNjA1ODQsIDE2MDU4NywgMTYwNTkwLCAxNjA1OTMsIAotICAgIDE2MDU5NiwgMTYwNTk5LCAxNjA2MDIsIDE2MDYwNSwgMTYwNjA4LCAxNjA2MTEsIDE2MDYxNCwgMTYwNjE3LCAxNjA2MjAsIAotICAgIDE2MDYyMywgMTYwNjI2LCAxNjA2MjksIDE2MDYzMiwgMTYwNjM1LCAxNjA2MzgsIDE2MDY0MSwgMTYwNjQ0LCAxNjA2NDcsIAotICAgIDE2MDY1MCwgMTYwNjUzLCAxNjA2NTYsIDE2MDY1OSwgMTYwNjYyLCAxNjA2NjUsIDE2MDY2OCwgMTYwNjcxLCAxNjA2NzQsIAotICAgIDE2MDY3NywgMTYwNjgwLCAxNjA2ODMsIDE2MDY4NiwgMTYwNjg5LCAxNjA2OTIsIDE2MDY5NSwgMTYwNjk4LCAxNjA3MDEsIAotICAgIDE2MDcwNCwgMTYwNzA3LCAxNjA3MTAsIDE2MDcxMywgMTYwNzE2LCAxNjA3MTksIDE2MDcyMiwgMTYwNzI1LCAxNjA3MjgsIAotICAgIDE2MDczMSwgMTYwNzM0LCAxNjA3MzcsIDE2MDc0MCwgMTYwNzQzLCAxNjA3NDYsIDE2MDc0OSwgMTYwNzUyLCAxNjA3NTUsIAotICAgIDE2MDc1OCwgMTYwNzYxLCAxNjA3NjQsIDE2MDc2NywgMTYwNzcwLCAxNjA3NzMsIDE2MDc3NiwgMTYwNzc5LCAxNjA3ODIsIAotICAgIDE2MDc4NSwgMTYwNzg4LCAxNjA3OTEsIDE2MDc5NCwgMTYwNzk3LCAxNjA4MDAsIDE2MDgwMywgMTYwODA2LCAxNjA4MDksIAotICAgIDE2MDgxMiwgMTYwODE1LCAxNjA4MTgsIDE2MDgyMSwgMTYwODI0LCAxNjA4MjcsIDE2MDgzMCwgMTYwODMzLCAxNjA4MzYsIAotICAgIDE2MDgzOSwgMTYwODQyLCAxNjA4NDUsIDE2MDg0OCwgMTYwODUxLCAxNjA4NTQsIDE2MDg1NywgMTYwODYwLCAxNjA4NjMsIAotICAgIDE2MDg2NiwgMTYwODY5LCAxNjA4NzIsIDE2MDg3NSwgMTYwODc4LCAxNjA4ODEsIDE2MDg4NCwgMTYwODg3LCAxNjA4OTAsIAotICAgIDE2MDg5MywgMTYwODk2LCAxNjA4OTksIDE2MDkwMiwgMTYwOTA1LCAxNjA5MDgsIDE2MDkxMSwgMTYwOTE0LCAxNjA5MTcsIAotICAgIDE2MDkyMCwgMTYwOTIzLCAxNjA5MjYsIDE2MDkyOSwgMTYwOTMyLCAxNjA5MzUsIDE2MDkzOCwgMTYwOTQxLCAxNjA5NDQsIAotICAgIDE2MDk0NywgMTYwOTUwLCAxNjA5NTMsIDE2MDk1NiwgMTYwOTU5LCAxNjA5NjIsIDE2MDk2NSwgMTYwOTY4LCAxNjA5NzEsIAotICAgIDE2MDk3NCwgMTYwOTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA5ODAsIAotICAgIDE2MDk4MiwgMTYwOTg0LCAxNjA5ODksIDE2MDk5MSwgMTYwOTk2LCAxNjA5OTgsIDE2MTAwMywgMTYxMDA1LCAxNjEwMTAsIAotICAgIDE2MTAxMiwgMTYxMDE0LCAxNjEwMTYsIDE2MTAxOCwgMTYxMDIwLCAxNjEwMjIsIDE2MTAyNCwgMTYxMDI2LCAxNjEwMjgsIAotICAgIDE2MTAzMSwgMTYxMDM1LCAxNjEwMzcsIDE2MTAzOSwgMTYxMDQzLCAxNjEwNDcsIDE2MTA1MiwgMTYxMDU0LCAxNjEwNTYsIAotICAgIDE2MTA1OCwgMTYxMDYyLCAxNjEwNjUsIDE2MTA2NywgMTYxMDcxLCAxNjEwNzMsIDE2MTA3NywgMTYxMDc5LCAxNjEwODMsIAotICAgIDE2MTA4NiwgMTYxMDg4LCAxNjEwOTIsIDE2MTA5NiwgMTYxMDk4LCAxNjExMDQsIDE2MTEwNiwgMTYxMTExLCAxNjExMTMsIAotICAgIDE2MTExOCwgMTYxMTIwLCAxNjExMjUsIDE2MTEyNywgMTYxMTMyLCAxNjExMzQsIDE2MTEzNywgMTYxMTM5LCAxNjExNDMsIAotICAgIDE2MTE0NSwgMTYxMTUyLCAxNjExNTQsIDE2MTE1NiwgMTYxMTU4LCAxNjExNjMsIDE2MTE2NSwgMTYxMTY3LCAxNjExNjksIAotICAgIDE2MTE3MSwgMTYxMTczLCAxNjExNzgsIDE2MTE4MiwgMTYxMTg0LCAxNjExODksIDE2MTE5MywgMTYxMTk1LCAxNjEyMDAsIAotICAgIDE2MTIwNCwgMTYxMjA2LCAxNjEyMTEsIDE2MTIxNSwgMTYxMjE3LCAxNjEyMTksIDE2MTIyMSwgMTYxMjIzLCAxNjEyMjcsIAotICAgIDE2MTIyOSwgMTYxMjM0LCAxNjEyMzYsIDE2MTI0MiwgMTYxMjQ0LCAxNjEyNTAsIDE2MTI1MiwgMTYxMjU0LCAxNjEyNTYsIAotICAgIDE2MTI2MCwgMTYxMjYyLCAxNjEyNjksIDE2MTI3MSwgMTYxMjc4LCAxNjEyODAsIDE2MTI4NSwgMTYxMjkxLCAxNjEyOTMsIAotICAgIDE2MTI5OSwgMTYxMzA2LCAxNjEzMDgsIDE2MTMxNCwgMTYxMzE5LCAxNjEzMjEsIDE2MTMyNywgMTYxMzMzLCAxNjEzMzUsIAotICAgIDE2MTM0MSwgMTYxMzQ3LCAxNjEzNDksIDE2MTM1NSwgMTYxMzU5LCAxNjEzNjEsIDE2MTM2NiwgMTYxMzY4LCAxNjEzNzAsIAotICAgIDE2MTM3NSwgMTYxMzc3LCAxNjEzNzksIDE2MTM4NSwgMTYxMzg3LCAxNjEzOTIsIDE2MTM5NiwgMTYxMzk4LCAxNjE0MDMsIAotICAgIDE2MTQwNywgMTYxNDA5LCAxNjE0MTUsIDE2MTQxNywgMTYxNDIxLCAxNjE0MjMsIDE2MTQyNywgMTYxNDI5LCAxNjE0MzYsIAotICAgIDE2MTQ0MywgMTYxNDQ1LCAxNjE0NTIsIDE2MTQ1OSwgMTYxNDYxLCAxNjE0NjYsIDE2MTQ2OCwgMTYxNDc1LCAxNjE0NzcsIAotICAgIDE2MTQ4MiwgMTYxNDg0LCAxNjE0OTAsIDE2MTQ5MiwgMTYxNDk2LCAxNjE0OTgsIDE2MTUwNCwgMTYxNTA2LCAxNjE1MTAsIAotICAgIDE2MTUxMiwgMTYxNTE4LCAxNjE1MjAsIDE2MTUyMiwgMTYxNTI0LCAxNjE1MjksIDE2MTUzNCwgMTYxNTM2LCAxNjE1MzgsIAotICAgIDE2MTU0OCwgMTYxNTUyLCAxNjE1NTksIDE2MTU2NiwgMTYxNTcxLCAxNjE1NzYsIDE2MTU4OCwgMTYxNTkwLCAxNjE1OTIsIAotICAgIDE2MTU5NCwgMTYxNTk2LCAxNjE1OTgsIDE2MTYwMCwgMTYxNjAyLCAxNjE2MDQsIDE2MTYwNiwgMTYxNjA4LCAxNjE2MTAsIAotICAgIDE2MTYxMiwgMTYxNjE0LCAxNjE2MTYsIDE2MTYxOCwgMTYxNjIwLCAxNjE2MjIsIDE2MTYyNCwgMTYxNjI2LCAxNjE2MjgsIAotICAgIDE2MTYzMCwgMTYxNjM2LCAxNjE2NDMsIDE2MTY0OCwgMTYxNjU2LCAxNjE2NjQsIDE2MTY2OSwgMTYxNjgwLCAxNjE2ODIsIAotICAgIDE2MTY4NCwgMTYxNjg2LCAxNjE2ODgsIDE2MTY5MCwgMTYxNjkyLCAxNjE2OTQsIDE2MTY5NiwgMTYxNjk4LCAxNjE3MDAsIAotICAgIDE2MTcwMiwgMTYxNzA0LCAxNjE3MDYsIDE2MTcwOCwgMTYxNzEwLCAxNjE3MTIsIDE2MTcxNywgMTYxNzE5LCAxNjE3MjEsIAotICAgIDE2MTcyNywgMTYxNzM5LCAxNjE3NTAsIDE2MTc1MiwgMTYxNzU0LCAxNjE3NTYsIDE2MTc1OCwgMTYxNzYwLCAxNjE3NjIsIAotICAgIDE2MTc2NCwgMTYxNzY2LCAxNjE3NjgsIDE2MTc3MCwgMTYxNzcyLCAxNjE3NzQsIDE2MTc3NiwgMTYxNzc4LCAxNjE3ODAsIAotICAgIDE2MTc4MiwgMTYxNzg0LCAxNjE3ODYsIDE2MTc4OCwgMTYxNzkwLCAxNjE3OTIsIDE2MTc5NCwgMTYxNzk2LCAxNjE3OTgsIAotICAgIDE2MTgwMCwgMTYxODAyLCAxNjE4MDQsIDE2MTgwNiwgMTYxODA4LCAxNjE4MTAsIDE2MTgxMiwgMTYxODE0LCAxNjE4MTYsIAotICAgIDE2MTgxOCwgMTYxODIwLCAxNjE4MjIsIDE2MTgyNCwgMTYxODI2LCAxNjE4MjgsIDE2MTgzMCwgMTYxODMyLCAxNjE4MzQsIAotICAgIDE2MTgzNiwgMTYxODM4LCAxNjE4NDAsIDE2MTg0MiwgMTYxODQ0LCAxNjE4NDYsIDE2MTg0OCwgMTYxODUwLCAxNjE4NTIsIAotICAgIDE2MTg1NCwgMTYxODU2LCAxNjE4NTgsIDE2MTg2MCwgMTYxODYyLCAxNjE4NjQsIDE2MTg2NiwgMTYxODY4LCAxNjE4NzAsIAotICAgIDE2MTg3MiwgMTYxODc0LCAxNjE4NzYsIDE2MTg3OCwgMTYxODgwLCAxNjE4ODIsIDE2MTg4NCwgMTYxODg2LCAxNjE4ODgsIAotICAgIDE2MTg5MCwgMTYxODkyLCAxNjE4OTQsIDE2MTg5NiwgMTYxODk4LCAxNjE5MDAsIDE2MTkwMiwgMTYxOTA0LCAxNjE5MDYsIAotICAgIDE2MTkwOCwgMTYxOTEwLCAxNjE5MTIsIDE2MTkxNCwgMTYxOTE2LCAxNjE5MTgsIDE2MTkyMCwgMTYxOTIyLCAxNjE5MjQsIAotICAgIDE2MTkyNiwgMTYxOTI4LCAxNjE5MzAsIDE2MTkzMiwgMTYxOTM0LCAxNjE5MzYsIDE2MTkzOCwgMTYxOTQwLCAxNjE5NDIsIAotICAgIDE2MTk0NCwgMTYxOTQ2LCAxNjE5NDgsIDE2MTk1MCwgMTYxOTUyLCAxNjE5NTQsIDE2MTk1NiwgMTYxOTU4LCAxNjE5NjAsIAotICAgIDE2MTk2MiwgMTYxOTY0LCAxNjE5NjYsIDE2MTk2OCwgMTYxOTcwLCAxNjE5NzIsIDE2MTk3NCwgMTYxOTc2LCAxNjE5NzgsIAotICAgIDE2MTk4MCwgMTYxOTgyLCAxNjE5ODQsIDE2MTk4NiwgMTYxOTg4LCAxNjE5OTAsIDE2MTk5MiwgMTYxOTk0LCAxNjE5OTYsIAotICAgIDE2MTk5OCwgMTYyMDAwLCAxNjIwMDIsIDE2MjAwNCwgMTYyMDA2LCAxNjIwMDgsIDE2MjAxMCwgMTYyMDEyLCAxNjIwMTQsIAotICAgIDE2MjAxNiwgMTYyMDE4LCAxNjIwMjAsIDE2MjAyMiwgMTYyMDI0LCAxNjIwMjYsIDE2MjAyOCwgMTYyMDMwLCAxNjIwMzIsIAotICAgIDE2MjAzNCwgMTYyMDM2LCAxNjIwMzgsIDE2MjA0MCwgMTYyMDQyLCAxNjIwNDQsIDE2MjA0NiwgMTYyMDQ4LCAxNjIwNTAsIAotICAgIDE2MjA1MiwgMTYyMDU0LCAxNjIwNTYsIDE2MjA1OCwgMTYyMDYwLCAxNjIwNjIsIDE2MjA2NCwgMTYyMDY2LCAxNjIwNjgsIAotICAgIDE2MjA3MCwgMTYyMDcyLCAxNjIwNzQsIDE2MjA3NiwgMTYyMDc4LCAxNjIwODAsIDE2MjA4MiwgMTYyMDg0LCAxNjIwODYsIAotICAgIDE2MjA4OCwgMTYyMDkwLCAxNjIwOTIsIDE2MjA5NCwgMTYyMDk2LCAxNjIwOTgsIDE2MjEwMCwgMTYyMTAyLCAxNjIxMDQsIAotICAgIDE2MjEwNiwgMTYyMTA4LCAxNjIxMTAsIDE2MjExMiwgMTYyMTE0LCAxNjIxMTYsIDE2MjExOCwgMTYyMTIwLCAxNjIxMjIsIAotICAgIDE2MjEyNCwgMTYyMTI2LCAxNjIxMjgsIDE2MjEzMCwgMTYyMTMyLCAxNjIxMzQsIDE2MjEzNiwgMTYyMTM4LCAxNjIxNDAsIAotICAgIDE2MjE0MiwgMTYyMTQ0LCAxNjIxNDYsIDE2MjE0OCwgMTYyMTUwLCAxNjIxNTIsIDE2MjE1NCwgMTYyMTU2LCAxNjIxNTgsIAotICAgIDE2MjE2MCwgMTYyMTYyLCAxNjIxNjQsIDE2MjE2NiwgMTYyMTY4LCAxNjIxNzAsIDE2MjE3MiwgMTYyMTc0LCAxNjIxNzYsIAotICAgIDE2MjE3OCwgMTYyMTgwLCAxNjIxODIsIDE2MjE4NCwgMTYyMTg2LCAxNjIxODgsIDE2MjE5MCwgMTYyMTkyLCAxNjIxOTQsIAotICAgIDE2MjE5NiwgMTYyMTk4LCAxNjIyMDAsIDE2MjIwMiwgMTYyMjA0LCAxNjIyMDYsIDE2MjIwOCwgMTYyMjEwLCAxNjIyMTIsIAotICAgIDE2MjIxNCwgMTYyMjE2LCAxNjIyMTgsIDE2MjIyMCwgMTYyMjIyLCAxNjIyMjQsIDE2MjIyNiwgMTYyMjI4LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNjIyMzAsIDE2MjI0MCwgMTYyMjUwLCAxNjIyNTksIDE2MjI2OCwgMTYyMjgxLCAxNjIyOTQsIDE2MjMwNiwgCi0gICAgMTYyMzE4LCAxNjIzMjgsIDE2MjMzOCwgMTYyMzQ4LCAxNjIzNTgsIDE2MjM2OSwgMTYyMzgwLCAxNjIzOTAsIDE2MjM5OSwgCi0gICAgMTYyNDA4LCAxNjI0MTcsIDE2MjQzMCwgMTYyNDQzLCAxNjI0NTUsIDE2MjQ2NywgMTYyNDc3LCAxNjI0ODcsIDE2MjQ5NywgCi0gICAgMTYyNTA3LCAxNjI1MTYsIDE2MjUyNSwgMTYyNTM1LCAxNjI1NDUsIDE2MjU1NCwgMTYyNTYzLCAxNjI1NzMsIDE2MjU4MywgCi0gICAgMTYyNTkyLCAxNjI2MDEsIDE2MjYxMSwgMTYyNjIxLCAxNjI2MzIsIDE2MjY0MywgMTYyNjUzLCAxNjI2NjYsIDE2MjY3NywgCi0gICAgMTYyNjkxLCAxNjI2OTksIDE2MjcxMCwgMTYyNzE4LCAxNjI3MjYsIDE2MjczNCwgMTYyNzQyLCAxNjI3NTAsIDE2Mjc1OCwgCi0gICAgMTYyNzY3LCAxNjI3NzYsIDE2Mjc4NiwgMTYyNzk2LCAxNjI4MDUsIDE2MjgxNCwgMTYyODI0LCAxNjI4MzQsIDE2Mjg0MiwgCi0gICAgMTYyODUwLCAxNjI4NTcsIDE2Mjg2NywgMTYyODc2LCAxNjI4ODQsIDE2Mjg5MSwgMTYyOTAxLCAxNjI5MTAsIDE2MjkyMSwgCi0gICAgMTYyOTMyLCAxNjI5NDQsIDE2Mjk1NSwgMTYyOTY1LCAxNjI5NzYsIDE2Mjk4NiwgMTYyOTk3LCAxNjMwMDUsIDE2MzAwOSwgCi0gICAgMTYzMDEzLCAxNjMwMTcsIDE2MzAyMSwgMTYzMDI1LCAxNjMwMjksIDE2MzAzMywgMTYzMDM3LCAxNjMwNDEsIDE2MzA0NSwgCi0gICAgMTYzMDQ5LCAxNjMwNTMsIDE2MzA1NiwgMTYzMDU5LCAxNjMwNjMsIDE2MzA2NywgMTYzMDcxLCAxNjMwNzUsIDE2MzA3OSwgCi0gICAgMTYzMDgzLCAxNjMwODcsIDE2MzA5MSwgMTYzMDk0LCAxNjMwOTgsIDE2MzEwMiwgMTYzMTA2LCAxNjMxMTAsIDE2MzExNCwgCi0gICAgMTYzMTE4LCAxNjMxMjIsIDE2MzEyNiwgMTYzMTMwLCAxNjMxMzQsIDE2MzEzOCwgMTYzMTQyLCAxNjMxNDYsIDE2MzE1MCwgCi0gICAgMTYzMTU0LCAxNjMxNTgsIDE2MzE2MiwgMTYzMTY2LCAxNjMxNzAsIDE2MzE3NCwgMTYzMTc4LCAxNjMxODIsIDE2MzE4NiwgCi0gICAgMTYzMTkwLCAxNjMxOTQsIDE2MzE5OCwgMTYzMjAyLCAxNjMyMDYsIDE2MzIxMCwgMTYzMjE0LCAxNjMyMTgsIDE2MzIyMiwgCi0gICAgMTYzMjI2LCAxNjMyMzAsIDE2MzIzNCwgMTYzMjM4LCAxNjMyNDIsIDE2MzI0NiwgMTYzMjUwLCAxNjMyNTQsIDE2MzI1OCwgCi0gICAgMTYzMjYyLCAxNjMyNjYsIDE2MzI3MCwgMTYzMjc0LCAxNjMyNzgsIDE2MzI4MiwgMTYzMjg2LCAxNjMyOTAsIDE2MzI5NCwgCi0gICAgMTYzMjk4LCAxNjMzMDIsIDE2MzMwNiwgMTYzMzEwLCAxNjMzMTQsIDE2MzMxOCwgMTYzMzIyLCAxNjMzMjYsIDE2MzMzMCwgCi0gICAgMTYzMzM0LCAxNjMzMzgsIDE2MzM0MiwgMTYzMzQ2LCAxNjMzNTAsIDE2MzM1NCwgMTYzMzU4LCAxNjMzNjIsIDE2MzM2NiwgCi0gICAgMTYzMzcwLCAxNjMzNzQsIDE2MzM3OCwgMTYzMzgyLCAxNjMzODYsIDE2MzM5MCwgMTYzMzk0LCAxNjMzOTgsIDE2MzQwMSwgCi0gICAgMTYzNDA1LCAxNjM0MDksIDE2MzQxMywgMTYzNDE3LCAxNjM0MjEsIDE2MzQyNSwgMTYzNDI5LCAxNjM0MzMsIDE2MzQzNywgCi0gICAgMTYzNDQxLCAxNjM0NDUsIDE2MzQ0OSwgMTYzNDUzLCAxNjM0NTcsIDE2MzQ2MSwgMTYzNDY1LCAxNjM0NjksIDE2MzQ3MywgCi0gICAgMTYzNDc3LCAxNjM0ODEsIDE2MzQ4NSwgMTYzNDg5LCAxNjM0OTMsIDE2MzQ5NywgMTYzNTAxLCAxNjM1MDUsIDE2MzUwOSwgCi0gICAgMTYzNTEzLCAxNjM1MTcsIDE2MzUyMSwgMTYzNTI1LCAxNjM1MjksIDE2MzUzMywgMTYzNTM3LCAxNjM1NDEsIDE2MzU0NSwgCi0gICAgMTYzNTQ5LCAxNjM1NTMsIDE2MzU1NywgMTYzNTYxLCAxNjM1NjUsIDE2MzU2OSwgMTYzNTczLCAxNjM1NzcsIDE2MzU4MSwgCi0gICAgMTYzNTg1LCAxNjM1ODksIDE2MzU5MywgMTYzNTk3LCAxNjM2MDEsIDE2MzYwNSwgMTYzNjA5LCAxNjM2MTMsIDE2MzYxNywgCi0gICAgMTYzNjIxLCAxNjM2MjUsIDE2MzYyOSwgMTYzNjMzLCAxNjM2MzcsIDE2MzY0MSwgMTYzNjQ1LCAxNjM2NDksIDE2MzY1MywgCi0gICAgMTYzNjU3LCAxNjM2NjEsIDE2MzY2NSwgMTYzNjY5LCAxNjM2NzMsIDE2MzY3NywgMTYzNjgxLCAxNjM2ODUsIDE2MzY4OSwgCi0gICAgMTYzNjkzLCAxNjM2OTcsIDE2MzcwMSwgMTYzNzA1LCAxNjM3MDksIDE2MzcxMywgMTYzNzE3LCAxNjM3MjEsIDE2MzcyNSwgCi0gICAgMTYzNzI5LCAxNjM3MzMsIDE2MzczNywgMTYzNzQxLCAxNjM3NDUsIDE2Mzc0OSwgMTYzNzUzLCAxNjM3NTcsIDE2Mzc2MSwgCi0gICAgMTYzNzY1LCAxNjM3NjksIDE2Mzc3MywgMTYzNzc3LCAxNjM3ODEsIDE2Mzc4NSwgMTYzNzg5LCAxNjM3OTMsIDE2Mzc5NywgCi0gICAgMTYzODAxLCAxNjM4MDUsIDE2MzgwOSwgMTYzODEzLCAxNjM4MTcsIDE2MzgyMSwgMTYzODI1LCAxNjM4MjksIDE2MzgzMywgCi0gICAgMTYzODM3LCAxNjM4NDEsIDE2Mzg0NSwgMTYzODQ5LCAxNjM4NTMsIDE2Mzg1NywgMTYzODYxLCAxNjM4NjUsIDE2Mzg2OSwgCi0gICAgMTYzODczLCAxNjM4NzcsIDE2Mzg4MSwgMTYzODg1LCAxNjM4ODksIDE2Mzg5MywgMTYzODk3LCAxNjM5MDEsIDE2MzkwNSwgCi0gICAgMTYzOTA5LCAxNjM5MTMsIDE2MzkxNywgMTYzOTIxLCAxNjM5MjUsIDE2MzkyOSwgMTYzOTMzLCAxNjM5MzcsIDE2Mzk0MSwgCi0gICAgMTYzOTQ1LCAxNjM5NDksIDE2Mzk1MywgMTYzOTU3LCAxNjM5NjEsIDE2Mzk2NSwgMTYzOTY5LCAxNjM5NzMsIDE2Mzk3NywgCi0gICAgMTYzOTgxLCAxNjM5ODUsIDE2Mzk4OSwgMTYzOTkzLCAxNjM5OTcsIDE2NDAwMSwgMTY0MDA1LCAxNjQwMDksIDE2NDAxMywgCi0gICAgMTY0MDE3LCAxNjQwMjEsIDE2NDAyNSwgMTY0MDI5LCAxNjQwMzMsIDE2NDAzNywgMTY0MDQxLCAxNjQwNDUsIDE2NDA0OSwgCi0gICAgMTY0MDUzLCAxNjQwNTcsIDE2NDA2MSwgMTY0MDY1LCAxNjQwNjksIDE2NDA3MywgMTY0MDc3LCAxNjQwODEsIDE2NDA4NSwgCi0gICAgMTY0MDg5LCAxNjQwOTMsIDE2NDA5NywgMTY0MTAxLCAxNjQxMDUsIDE2NDEwOSwgMTY0MTEzLCAxNjQxMTcsIDE2NDEyMSwgCi0gICAgMTY0MTI1LCAxNjQxMjksIDE2NDEzMywgMTY0MTM3LCAxNjQxNDEsIDE2NDE0NSwgMTY0MTQ5LCAxNjQxNTMsIDE2NDE1NywgCi0gICAgMTY0MTYxLCAxNjQxNjUsIDE2NDE3MCwgMTY0MTc1LCAxNjQxODAsIDE2NDE4NCwgMTY0MTkwLCAxNjQxOTcsIDE2NDIwNCwgCi0gICAgMTY0MjExLCAxNjQyMTgsIDE2NDIyNSwgMTY0MjMyLCAxNjQyMzksIDE2NDI0NiwgMTY0MjUzLCAxNjQyNjAsIDE2NDI2NywgCi0gICAgMTY0Mjc0LCAxNjQyODEsIDE2NDI4OCwgMTY0Mjk1LCAxNjQzMDIsIDE2NDMwOCwgMTY0MzE1LCAxNjQzMjIsIDE2NDMyOSwgCi0gICAgMTY0MzM2LCAxNjQzNDMsIDE2NDM1MCwgMTY0MzU3LCAxNjQzNjQsIDE2NDM3MSwgMTY0Mzc4LCAxNjQzODUsIDE2NDM5MiwgCi0gICAgMTY0Mzk5LCAxNjQ0MDYsIDE2NDQxMiwgMTY0NDE5LCAxNjQ0MjYsIDE2NDQzNSwgMTY0NDQ0LCAxNjQ0NTMsIDE2NDQ2MiwgCi0gICAgMTY0NDY3LCAxNjQ0NzIsIDE2NDQ3OCwgMTY0NDg0LCAxNjQ0OTAsIDE2NDQ5NiwgMTY0NTAyLCAxNjQ1MDgsIDE2NDUxNCwgCi0gICAgMTY0NTIwLCAxNjQ1MjYsIDE2NDUzMiwgMTY0NTM4LCAxNjQ1NDQsIDE2NDU0OSwgMTY0NTU1LCAxNjQ1NjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE2NjExMSwgMTY2MTE0LCAxNjYxMTcsIDE2NjEyMCwgMTY2MTIzLCAxNjYxMjYsIDE2NjEyOSwgMTY2MTMyLCAKKyAgICAxNjYxMzUsIDE2NjEzOCwgMTY2MTQxLCAxNjYxNDQsIDE2NjE0NywgMTY2MTUwLCAxNjYxNTMsIDE2NjE1NiwgMTY2MTU5LCAKKyAgICAxNjYxNjIsIDE2NjE2NSwgMTY2MTY4LCAxNjYxNzEsIDE2NjE3NCwgMTY2MTc3LCAxNjYxODAsIDE2NjE4MywgMTY2MTg2LCAKKyAgICAxNjYxODksIDE2NjE5MiwgMTY2MTk1LCAxNjYxOTgsIDE2NjIwMSwgMTY2MjA0LCAxNjYyMDcsIDE2NjIxMCwgMTY2MjEzLCAKKyAgICAxNjYyMTYsIDE2NjIxOSwgMTY2MjIyLCAxNjYyMjUsIDE2NjIyOCwgMTY2MjMxLCAxNjYyMzQsIDE2NjIzNywgMTY2MjQwLCAKKyAgICAxNjYyNDMsIDE2NjI0NiwgMTY2MjQ5LCAxNjYyNTIsIDE2NjI1NSwgMTY2MjU4LCAxNjYyNjEsIDE2NjI2NCwgMTY2MjY3LCAKKyAgICAxNjYyNzAsIDE2NjI3MywgMTY2Mjc2LCAxNjYyNzksIDE2NjI4MiwgMTY2Mjg1LCAxNjYyODgsIDE2NjI5MSwgMTY2Mjk0LCAKKyAgICAxNjYyOTcsIDE2NjMwMCwgMTY2MzAzLCAxNjYzMDYsIDE2NjMwOSwgMTY2MzEyLCAxNjYzMTUsIDE2NjMxOCwgMTY2MzIxLCAKKyAgICAxNjYzMjQsIDE2NjMyNywgMTY2MzMwLCAxNjYzMzMsIDE2NjMzNiwgMTY2MzM5LCAxNjYzNDIsIDE2NjM0NSwgMTY2MzQ4LCAKKyAgICAxNjYzNTEsIDE2NjM1NCwgMTY2MzU3LCAxNjYzNjAsIDE2NjM2MywgMTY2MzY2LCAxNjYzNjksIDE2NjM3MiwgMTY2Mzc1LCAKKyAgICAxNjYzNzgsIDE2NjM4MSwgMTY2Mzg0LCAxNjYzODcsIDE2NjM5MCwgMTY2MzkzLCAxNjYzOTYsIDE2NjM5OSwgMTY2NDAyLCAKKyAgICAxNjY0MDUsIDE2NjQwOCwgMTY2NDExLCAxNjY0MTQsIDE2NjQxNywgMTY2NDIwLCAxNjY0MjMsIDE2NjQyNiwgMTY2NDI5LCAKKyAgICAxNjY0MzIsIDE2NjQzNSwgMTY2NDM4LCAxNjY0NDEsIDE2NjQ0NCwgMTY2NDQ3LCAxNjY0NTAsIDE2NjQ1MywgMTY2NDU2LCAKKyAgICAxNjY0NTksIDE2NjQ2MiwgMTY2NDY1LCAxNjY0NjgsIDE2NjQ3MSwgMTY2NDc0LCAxNjY0NzcsIDE2NjQ4MCwgMTY2NDgzLCAKKyAgICAxNjY0ODYsIDE2NjQ4OSwgMTY2NDkyLCAxNjY0OTUsIDE2NjQ5OCwgMTY2NTAxLCAxNjY1MDQsIDE2NjUwNywgMTY2NTEwLCAKKyAgICAxNjY1MTMsIDE2NjUxNiwgMTY2NTE5LCAxNjY1MjIsIDE2NjUyNSwgMTY2NTI4LCAxNjY1MzEsIDE2NjUzNCwgMTY2NTM3LCAKKyAgICAxNjY1NDAsIDE2NjU0MywgMTY2NTQ2LCAxNjY1NDksIDE2NjU1MiwgMTY2NTU1LCAxNjY1NTgsIDE2NjU2MSwgMTY2NTY0LCAKKyAgICAxNjY1NjcsIDE2NjU3MCwgMTY2NTczLCAxNjY1NzYsIDE2NjU3OSwgMTY2NTgyLCAxNjY1ODUsIDE2NjU4OCwgMTY2NTkxLCAKKyAgICAxNjY1OTQsIDE2NjU5NywgMTY2NjAwLCAxNjY2MDMsIDE2NjYwNiwgMTY2NjA5LCAxNjY2MTIsIDE2NjYxNSwgMTY2NjE4LCAKKyAgICAxNjY2MjEsIDE2NjYyNCwgMTY2NjI3LCAxNjY2MzAsIDE2NjYzMywgMTY2NjM2LCAxNjY2MzksIDE2NjY0MiwgMTY2NjQ1LCAKKyAgICAxNjY2NDgsIDE2NjY1MSwgMTY2NjU0LCAxNjY2NTcsIDE2NjY2MCwgMTY2NjYzLCAxNjY2NjYsIDE2NjY2OSwgMTY2NjcyLCAKKyAgICAxNjY2NzUsIDE2NjY3OCwgMTY2NjgxLCAxNjY2ODQsIDE2NjY4NywgMTY2NjkwLCAxNjY2OTMsIDE2NjY5NiwgMTY2Njk5LCAKKyAgICAxNjY3MDIsIDE2NjcwNSwgMTY2NzA4LCAxNjY3MTEsIDE2NjcxNCwgMTY2NzE3LCAxNjY3MjAsIDE2NjcyMywgMTY2NzI2LCAKKyAgICAxNjY3MjksIDE2NjczMiwgMTY2NzM1LCAxNjY3MzgsIDE2Njc0MSwgMTY2NzQ0LCAxNjY3NDcsIDE2Njc1MCwgMTY2NzUzLCAKKyAgICAxNjY3NTYsIDE2Njc1OSwgMTY2NzYyLCAxNjY3NjUsIDE2Njc2OCwgMTY2NzcxLCAxNjY3NzQsIDE2Njc3NywgMTY2NzgwLCAKKyAgICAxNjY3ODMsIDE2Njc4NiwgMTY2Nzg5LCAxNjY3OTIsIDE2Njc5NSwgMTY2Nzk4LCAxNjY4MDEsIDE2NjgwNCwgMTY2ODA3LCAKKyAgICAxNjY4MTAsIDE2NjgxMywgMTY2ODE2LCAxNjY4MTksIDE2NjgyMiwgMTY2ODI1LCAxNjY4MjgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NjgzMSwgMTY2ODMzLCAxNjY4MzUsIDE2Njg0MCwgMTY2ODQyLCAKKyAgICAxNjY4NDcsIDE2Njg0OSwgMTY2ODU0LCAxNjY4NTYsIDE2Njg2MSwgMTY2ODYzLCAxNjY4NjUsIDE2Njg2NywgMTY2ODY5LCAKKyAgICAxNjY4NzEsIDE2Njg3MywgMTY2ODc1LCAxNjY4NzcsIDE2Njg3OSwgMTY2ODgyLCAxNjY4ODYsIDE2Njg4OCwgMTY2ODkwLCAKKyAgICAxNjY4OTQsIDE2Njg5OCwgMTY2OTAzLCAxNjY5MDUsIDE2NjkwNywgMTY2OTA5LCAxNjY5MTMsIDE2NjkxNiwgMTY2OTE4LCAKKyAgICAxNjY5MjIsIDE2NjkyNCwgMTY2OTI4LCAxNjY5MzAsIDE2NjkzNCwgMTY2OTM3LCAxNjY5MzksIDE2Njk0MywgMTY2OTQ3LCAKKyAgICAxNjY5NDksIDE2Njk1NSwgMTY2OTU3LCAxNjY5NjIsIDE2Njk2NCwgMTY2OTY5LCAxNjY5NzEsIDE2Njk3NiwgMTY2OTc4LCAKKyAgICAxNjY5ODMsIDE2Njk4NSwgMTY2OTg4LCAxNjY5OTAsIDE2Njk5NCwgMTY2OTk2LCAxNjcwMDMsIDE2NzAwNSwgMTY3MDA3LCAKKyAgICAxNjcwMDksIDE2NzAxNCwgMTY3MDE2LCAxNjcwMTgsIDE2NzAyMCwgMTY3MDIyLCAxNjcwMjQsIDE2NzAyOSwgMTY3MDMzLCAKKyAgICAxNjcwMzUsIDE2NzA0MCwgMTY3MDQ0LCAxNjcwNDYsIDE2NzA1MSwgMTY3MDU1LCAxNjcwNTcsIDE2NzA2MiwgMTY3MDY2LCAKKyAgICAxNjcwNjgsIDE2NzA3MCwgMTY3MDcyLCAxNjcwNzQsIDE2NzA3OCwgMTY3MDgwLCAxNjcwODUsIDE2NzA4NywgMTY3MDkzLCAKKyAgICAxNjcwOTUsIDE2NzEwMSwgMTY3MTAzLCAxNjcxMDUsIDE2NzEwNywgMTY3MTExLCAxNjcxMTMsIDE2NzEyMCwgMTY3MTIyLCAKKyAgICAxNjcxMjksIDE2NzEzMSwgMTY3MTM2LCAxNjcxNDIsIDE2NzE0NCwgMTY3MTUwLCAxNjcxNTcsIDE2NzE1OSwgMTY3MTY1LCAKKyAgICAxNjcxNzAsIDE2NzE3MiwgMTY3MTc4LCAxNjcxODQsIDE2NzE4NiwgMTY3MTkyLCAxNjcxOTgsIDE2NzIwMCwgMTY3MjA2LCAKKyAgICAxNjcyMTAsIDE2NzIxMiwgMTY3MjE3LCAxNjcyMTksIDE2NzIyMSwgMTY3MjI2LCAxNjcyMjgsIDE2NzIzMCwgMTY3MjM2LCAKKyAgICAxNjcyMzgsIDE2NzI0MywgMTY3MjQ3LCAxNjcyNDksIDE2NzI1NCwgMTY3MjU4LCAxNjcyNjAsIDE2NzI2NiwgMTY3MjY4LCAKKyAgICAxNjcyNzIsIDE2NzI3NCwgMTY3Mjc4LCAxNjcyODAsIDE2NzI4NywgMTY3Mjk0LCAxNjcyOTYsIDE2NzMwMywgMTY3MzEwLCAKKyAgICAxNjczMTIsIDE2NzMxNywgMTY3MzE5LCAxNjczMjYsIDE2NzMyOCwgMTY3MzMzLCAxNjczMzUsIDE2NzM0MSwgMTY3MzQzLCAKKyAgICAxNjczNDcsIDE2NzM0OSwgMTY3MzU1LCAxNjczNTcsIDE2NzM2MSwgMTY3MzYzLCAxNjczNjksIDE2NzM3MSwgMTY3MzczLCAKKyAgICAxNjczNzUsIDE2NzM4MCwgMTY3Mzg1LCAxNjczODcsIDE2NzM4OSwgMTY3Mzk5LCAxNjc0MDQsIDE2NzQxMSwgMTY3NDE4LCAKKyAgICAxNjc0MjMsIDE2NzQyOCwgMTY3NDQwLCAxNjc0NDIsIDE2NzQ0NCwgMTY3NDQ2LCAxNjc0NDgsIDE2NzQ1MCwgMTY3NDUyLCAKKyAgICAxNjc0NTQsIDE2NzQ1NiwgMTY3NDU4LCAxNjc0NjAsIDE2NzQ2MiwgMTY3NDY0LCAxNjc0NjYsIDE2NzQ2OCwgMTY3NDcwLCAKKyAgICAxNjc0NzIsIDE2NzQ3NCwgMTY3NDc2LCAxNjc0NzgsIDE2NzQ4MCwgMTY3NDgyLCAxNjc0ODgsIDE2NzQ5NSwgMTY3NTAwLCAKKyAgICAxNjc1MDgsIDE2NzUxNiwgMTY3NTIxLCAxNjc1MzIsIDE2NzUzNCwgMTY3NTM2LCAxNjc1MzgsIDE2NzU0MCwgMTY3NTQyLCAKKyAgICAxNjc1NDQsIDE2NzU0NiwgMTY3NTQ4LCAxNjc1NTAsIDE2NzU1MiwgMTY3NTU0LCAxNjc1NTYsIDE2NzU1OCwgMTY3NTYwLCAKKyAgICAxNjc1NjIsIDE2NzU2NCwgMTY3NTY5LCAxNjc1NzEsIDE2NzU3MywgMTY3NTc5LCAxNjc1OTEsIDE2NzYwMiwgMTY3NjA0LCAKKyAgICAxNjc2MDYsIDE2NzYwOCwgMTY3NjEwLCAxNjc2MTIsIDE2NzYxNCwgMTY3NjE2LCAxNjc2MTgsIDE2NzYyMCwgMTY3NjIyLCAKKyAgICAxNjc2MjQsIDE2NzYyNiwgMTY3NjI4LCAxNjc2MzAsIDE2NzYzMiwgMTY3NjM0LCAxNjc2MzYsIDE2NzYzOCwgMTY3NjQwLCAKKyAgICAxNjc2NDIsIDE2NzY0NCwgMTY3NjQ2LCAxNjc2NDgsIDE2NzY1MCwgMTY3NjUyLCAxNjc2NTQsIDE2NzY1NiwgMTY3NjU4LCAKKyAgICAxNjc2NjAsIDE2NzY2MiwgMTY3NjY0LCAxNjc2NjYsIDE2NzY2OCwgMTY3NjcwLCAxNjc2NzIsIDE2NzY3NCwgMTY3Njc2LCAKKyAgICAxNjc2NzgsIDE2NzY4MCwgMTY3NjgyLCAxNjc2ODQsIDE2NzY4NiwgMTY3Njg4LCAxNjc2OTAsIDE2NzY5MiwgMTY3Njk0LCAKKyAgICAxNjc2OTYsIDE2NzY5OCwgMTY3NzAwLCAxNjc3MDIsIDE2NzcwNCwgMTY3NzA2LCAxNjc3MDgsIDE2NzcxMCwgMTY3NzEyLCAKKyAgICAxNjc3MTQsIDE2NzcxNiwgMTY3NzE4LCAxNjc3MjAsIDE2NzcyMiwgMTY3NzI0LCAxNjc3MjYsIDE2NzcyOCwgMTY3NzMwLCAKKyAgICAxNjc3MzIsIDE2NzczNCwgMTY3NzM2LCAxNjc3MzgsIDE2Nzc0MCwgMTY3NzQyLCAxNjc3NDQsIDE2Nzc0NiwgMTY3NzQ4LCAKKyAgICAxNjc3NTAsIDE2Nzc1MiwgMTY3NzU0LCAxNjc3NTYsIDE2Nzc1OCwgMTY3NzYwLCAxNjc3NjIsIDE2Nzc2NCwgMTY3NzY2LCAKKyAgICAxNjc3NjgsIDE2Nzc3MCwgMTY3NzcyLCAxNjc3NzQsIDE2Nzc3NiwgMTY3Nzc4LCAxNjc3ODAsIDE2Nzc4MiwgMTY3Nzg0LCAKKyAgICAxNjc3ODYsIDE2Nzc4OCwgMTY3NzkwLCAxNjc3OTIsIDE2Nzc5NCwgMTY3Nzk2LCAxNjc3OTgsIDE2NzgwMCwgMTY3ODAyLCAKKyAgICAxNjc4MDQsIDE2NzgwNiwgMTY3ODA4LCAxNjc4MTAsIDE2NzgxMiwgMTY3ODE0LCAxNjc4MTYsIDE2NzgxOCwgMTY3ODIwLCAKKyAgICAxNjc4MjIsIDE2NzgyNCwgMTY3ODI2LCAxNjc4MjgsIDE2NzgzMCwgMTY3ODMyLCAxNjc4MzQsIDE2NzgzNiwgMTY3ODM4LCAKKyAgICAxNjc4NDAsIDE2Nzg0MiwgMTY3ODQ0LCAxNjc4NDYsIDE2Nzg0OCwgMTY3ODUwLCAxNjc4NTIsIDE2Nzg1NCwgMTY3ODU2LCAKKyAgICAxNjc4NTgsIDE2Nzg2MCwgMTY3ODYyLCAxNjc4NjQsIDE2Nzg2NiwgMTY3ODY4LCAxNjc4NzAsIDE2Nzg3MiwgMTY3ODc0LCAKKyAgICAxNjc4NzYsIDE2Nzg3OCwgMTY3ODgwLCAxNjc4ODIsIDE2Nzg4NCwgMTY3ODg2LCAxNjc4ODgsIDE2Nzg5MCwgMTY3ODkyLCAKKyAgICAxNjc4OTQsIDE2Nzg5NiwgMTY3ODk4LCAxNjc5MDAsIDE2NzkwMiwgMTY3OTA0LCAxNjc5MDYsIDE2NzkwOCwgMTY3OTEwLCAKKyAgICAxNjc5MTIsIDE2NzkxNCwgMTY3OTE2LCAxNjc5MTgsIDE2NzkyMCwgMTY3OTIyLCAxNjc5MjQsIDE2NzkyNiwgMTY3OTI4LCAKKyAgICAxNjc5MzAsIDE2NzkzMiwgMTY3OTM0LCAxNjc5MzYsIDE2NzkzOCwgMTY3OTQwLCAxNjc5NDIsIDE2Nzk0NCwgMTY3OTQ2LCAKKyAgICAxNjc5NDgsIDE2Nzk1MCwgMTY3OTUyLCAxNjc5NTQsIDE2Nzk1NiwgMTY3OTU4LCAxNjc5NjAsIDE2Nzk2MiwgMTY3OTY0LCAKKyAgICAxNjc5NjYsIDE2Nzk2OCwgMTY3OTcwLCAxNjc5NzIsIDE2Nzk3NCwgMTY3OTc2LCAxNjc5NzgsIDE2Nzk4MCwgMTY3OTgyLCAKKyAgICAxNjc5ODQsIDE2Nzk4NiwgMTY3OTg4LCAxNjc5OTAsIDE2Nzk5MiwgMTY3OTk0LCAxNjc5OTYsIDE2Nzk5OCwgMTY4MDAwLCAKKyAgICAxNjgwMDIsIDE2ODAwNCwgMTY4MDA2LCAxNjgwMDgsIDE2ODAxMCwgMTY4MDEyLCAxNjgwMTQsIDE2ODAxNiwgMTY4MDE4LCAKKyAgICAxNjgwMjAsIDE2ODAyMiwgMTY4MDI0LCAxNjgwMjYsIDE2ODAyOCwgMTY4MDMwLCAxNjgwMzIsIDE2ODAzNCwgMTY4MDM2LCAKKyAgICAxNjgwMzgsIDE2ODA0MCwgMTY4MDQyLCAxNjgwNDQsIDE2ODA0NiwgMTY4MDQ4LCAxNjgwNTAsIDE2ODA1MiwgMTY4MDU0LCAKKyAgICAxNjgwNTYsIDE2ODA1OCwgMTY4MDYwLCAxNjgwNjIsIDE2ODA2NCwgMTY4MDY2LCAxNjgwNjgsIDE2ODA3MCwgMTY4MDcyLCAKKyAgICAxNjgwNzQsIDE2ODA3NiwgMTY4MDc4LCAxNjgwODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODA4MiwgMTY4MDkyLCAxNjgxMDIsIAorICAgIDE2ODExMSwgMTY4MTIwLCAxNjgxMzMsIDE2ODE0NiwgMTY4MTU4LCAxNjgxNzAsIDE2ODE4MCwgMTY4MTkwLCAxNjgyMDAsIAorICAgIDE2ODIxMCwgMTY4MjIxLCAxNjgyMzIsIDE2ODI0MiwgMTY4MjUxLCAxNjgyNjAsIDE2ODI2OSwgMTY4MjgyLCAxNjgyOTUsIAorICAgIDE2ODMwNywgMTY4MzE5LCAxNjgzMjksIDE2ODMzOSwgMTY4MzQ5LCAxNjgzNTksIDE2ODM2OCwgMTY4Mzc3LCAxNjgzODcsIAorICAgIDE2ODM5NywgMTY4NDA2LCAxNjg0MTUsIDE2ODQyNSwgMTY4NDM1LCAxNjg0NDQsIDE2ODQ1MywgMTY4NDYzLCAxNjg0NzMsIAorICAgIDE2ODQ4NCwgMTY4NDk1LCAxNjg1MDUsIDE2ODUxOCwgMTY4NTI5LCAxNjg1NDMsIDE2ODU1MSwgMTY4NTYyLCAxNjg1NzAsIAorICAgIDE2ODU3OCwgMTY4NTg2LCAxNjg1OTQsIDE2ODYwMiwgMTY4NjEwLCAxNjg2MTksIDE2ODYyOCwgMTY4NjM4LCAxNjg2NDgsIAorICAgIDE2ODY1NywgMTY4NjY2LCAxNjg2NzYsIDE2ODY4NiwgMTY4Njk0LCAxNjg3MDIsIDE2ODcwOSwgMTY4NzE5LCAxNjg3MjgsIAorICAgIDE2ODczNiwgMTY4NzQzLCAxNjg3NTMsIDE2ODc2MiwgMTY4NzczLCAxNjg3ODQsIDE2ODc5NiwgMTY4ODA3LCAxNjg4MTcsIAorICAgIDE2ODgyOCwgMTY4ODM4LCAxNjg4NDksIDE2ODg1NywgMTY4ODYxLCAxNjg4NjUsIDE2ODg2OSwgMTY4ODczLCAxNjg4NzcsIAorICAgIDE2ODg4MSwgMTY4ODg1LCAxNjg4ODksIDE2ODg5MywgMTY4ODk3LCAxNjg5MDEsIDE2ODkwNSwgMTY4OTA4LCAxNjg5MTEsIAorICAgIDE2ODkxNSwgMTY4OTE5LCAxNjg5MjMsIDE2ODkyNywgMTY4OTMxLCAxNjg5MzUsIDE2ODkzOSwgMTY4OTQzLCAxNjg5NDcsIAorICAgIDE2ODk1MSwgMTY4OTU1LCAxNjg5NTksIDE2ODk2MywgMTY4OTY3LCAxNjg5NzEsIDE2ODk3NSwgMTY4OTc5LCAxNjg5ODMsIAorICAgIDE2ODk4NywgMTY4OTkxLCAxNjg5OTUsIDE2ODk5OSwgMTY5MDAzLCAxNjkwMDcsIDE2OTAxMSwgMTY5MDE1LCAxNjkwMTksIAorICAgIDE2OTAyMywgMTY5MDI3LCAxNjkwMzEsIDE2OTAzNSwgMTY5MDM5LCAxNjkwNDMsIDE2OTA0NywgMTY5MDUxLCAxNjkwNTUsIAorICAgIDE2OTA1OSwgMTY5MDYzLCAxNjkwNjcsIDE2OTA3MSwgMTY5MDc1LCAxNjkwNzksIDE2OTA4MywgMTY5MDg3LCAxNjkwOTEsIAorICAgIDE2OTA5NSwgMTY5MDk5LCAxNjkxMDMsIDE2OTEwNywgMTY5MTExLCAxNjkxMTUsIDE2OTExOSwgMTY5MTIzLCAxNjkxMjcsIAorICAgIDE2OTEzMSwgMTY5MTM1LCAxNjkxMzksIDE2OTE0MywgMTY5MTQ3LCAxNjkxNTEsIDE2OTE1NSwgMTY5MTU5LCAxNjkxNjMsIAorICAgIDE2OTE2NywgMTY5MTcxLCAxNjkxNzUsIDE2OTE3OSwgMTY5MTgzLCAxNjkxODcsIDE2OTE5MSwgMTY5MTk1LCAxNjkxOTksIAorICAgIDE2OTIwMywgMTY5MjA3LCAxNjkyMTEsIDE2OTIxNSwgMTY5MjE5LCAxNjkyMjMsIDE2OTIyNywgMTY5MjMxLCAxNjkyMzUsIAorICAgIDE2OTIzOSwgMTY5MjQzLCAxNjkyNDcsIDE2OTI1MSwgMTY5MjU0LCAxNjkyNTgsIDE2OTI2MiwgMTY5MjY2LCAxNjkyNzAsIAorICAgIDE2OTI3NCwgMTY5Mjc4LCAxNjkyODIsIDE2OTI4NiwgMTY5MjkwLCAxNjkyOTQsIDE2OTI5OCwgMTY5MzAyLCAxNjkzMDYsIAorICAgIDE2OTMxMCwgMTY5MzE0LCAxNjkzMTgsIDE2OTMyMiwgMTY5MzI2LCAxNjkzMzAsIDE2OTMzNCwgMTY5MzM4LCAxNjkzNDIsIAorICAgIDE2OTM0NiwgMTY5MzUwLCAxNjkzNTQsIDE2OTM1OCwgMTY5MzYyLCAxNjkzNjYsIDE2OTM3MCwgMTY5Mzc0LCAxNjkzNzgsIAorICAgIDE2OTM4MiwgMTY5Mzg2LCAxNjkzOTAsIDE2OTM5NCwgMTY5Mzk4LCAxNjk0MDIsIDE2OTQwNiwgMTY5NDEwLCAxNjk0MTQsIAorICAgIDE2OTQxOCwgMTY5NDIyLCAxNjk0MjYsIDE2OTQzMCwgMTY5NDM0LCAxNjk0MzgsIDE2OTQ0MiwgMTY5NDQ2LCAxNjk0NTAsIAorICAgIDE2OTQ1NCwgMTY5NDU4LCAxNjk0NjIsIDE2OTQ2NiwgMTY5NDcwLCAxNjk0NzQsIDE2OTQ3OCwgMTY5NDgyLCAxNjk0ODYsIAorICAgIDE2OTQ5MCwgMTY5NDk0LCAxNjk0OTgsIDE2OTUwMiwgMTY5NTA2LCAxNjk1MTAsIDE2OTUxNCwgMTY5NTE4LCAxNjk1MjIsIAorICAgIDE2OTUyNiwgMTY5NTMwLCAxNjk1MzQsIDE2OTUzOCwgMTY5NTQyLCAxNjk1NDYsIDE2OTU1MCwgMTY5NTU0LCAxNjk1NTgsIAorICAgIDE2OTU2MiwgMTY5NTY2LCAxNjk1NzAsIDE2OTU3NCwgMTY5NTc4LCAxNjk1ODIsIDE2OTU4NiwgMTY5NTkwLCAxNjk1OTQsIAorICAgIDE2OTU5OCwgMTY5NjAyLCAxNjk2MDYsIDE2OTYxMCwgMTY5NjE0LCAxNjk2MTgsIDE2OTYyMiwgMTY5NjI2LCAxNjk2MzAsIAorICAgIDE2OTYzNCwgMTY5NjM4LCAxNjk2NDIsIDE2OTY0NiwgMTY5NjUwLCAxNjk2NTQsIDE2OTY1OCwgMTY5NjYyLCAxNjk2NjYsIAorICAgIDE2OTY3MCwgMTY5Njc0LCAxNjk2NzgsIDE2OTY4MiwgMTY5Njg2LCAxNjk2OTAsIDE2OTY5NCwgMTY5Njk4LCAxNjk3MDIsIAorICAgIDE2OTcwNiwgMTY5NzEwLCAxNjk3MTQsIDE2OTcxOCwgMTY5NzIyLCAxNjk3MjYsIDE2OTczMCwgMTY5NzM0LCAxNjk3MzgsIAorICAgIDE2OTc0MiwgMTY5NzQ2LCAxNjk3NTAsIDE2OTc1NCwgMTY5NzU4LCAxNjk3NjIsIDE2OTc2NiwgMTY5NzcwLCAxNjk3NzQsIAorICAgIDE2OTc3OCwgMTY5NzgyLCAxNjk3ODYsIDE2OTc5MCwgMTY5Nzk0LCAxNjk3OTgsIDE2OTgwMiwgMTY5ODA2LCAxNjk4MTAsIAorICAgIDE2OTgxNCwgMTY5ODE4LCAxNjk4MjIsIDE2OTgyNiwgMTY5ODMwLCAxNjk4MzQsIDE2OTgzOCwgMTY5ODQyLCAxNjk4NDYsIAorICAgIDE2OTg1MCwgMTY5ODU0LCAxNjk4NTgsIDE2OTg2MiwgMTY5ODY2LCAxNjk4NzAsIDE2OTg3NCwgMTY5ODc4LCAxNjk4ODIsIAorICAgIDE2OTg4NiwgMTY5ODkwLCAxNjk4OTQsIDE2OTg5OCwgMTY5OTAyLCAxNjk5MDYsIDE2OTkxMCwgMTY5OTE0LCAxNjk5MTgsIAorICAgIDE2OTkyMiwgMTY5OTI2LCAxNjk5MzAsIDE2OTkzNCwgMTY5OTM4LCAxNjk5NDIsIDE2OTk0NiwgMTY5OTUwLCAxNjk5NTQsIAorICAgIDE2OTk1OCwgMTY5OTYyLCAxNjk5NjYsIDE2OTk3MCwgMTY5OTc0LCAxNjk5NzgsIDE2OTk4MiwgMTY5OTg2LCAxNjk5OTAsIAorICAgIDE2OTk5NCwgMTY5OTk4LCAxNzAwMDIsIDE3MDAwNiwgMTcwMDEwLCAxNzAwMTQsIDE3MDAxOCwgMTcwMDIzLCAxNzAwMjgsIAorICAgIDE3MDAzMywgMTcwMDM3LCAxNzAwNDMsIDE3MDA1MCwgMTcwMDU3LCAxNzAwNjQsIDE3MDA3MSwgMTcwMDc4LCAxNzAwODUsIAorICAgIDE3MDA5MiwgMTcwMDk5LCAxNzAxMDYsIDE3MDExMywgMTcwMTIwLCAxNzAxMjcsIDE3MDEzNCwgMTcwMTQwLCAxNzAxNDcsIAorICAgIDE3MDE1NCwgMTcwMTYwLCAxNzAxNjcsIDE3MDE3NCwgMTcwMTgxLCAxNzAxODgsIDE3MDE5NSwgMTcwMjAyLCAxNzAyMDksIAorICAgIDE3MDIxNiwgMTcwMjIzLCAxNzAyMzAsIDE3MDIzNywgMTcwMjQ0LCAxNzAyNTEsIDE3MDI1OCwgMTcwMjY0LCAxNzAyNzAsIAorICAgIDE3MDI3NywgMTcwMjg2LCAxNzAyOTUsIDE3MDMwNCwgMTcwMzEzLCAxNzAzMTgsIDE3MDMyMywgMTcwMzI5LCAxNzAzMzUsIAorICAgIDE3MDM0MSwgMTcwMzQ3LCAxNzAzNTMsIDE3MDM1OSwgMTcwMzY1LCAxNzAzNzEsIDE3MDM3NywgMTcwMzgzLCAxNzAzODksIAorICAgIDE3MDM5NSwgMTcwNDAwLCAxNzA0MDYsIDE3MDQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBuYW1lLT5jb2RlIGRpY3Rpb25hcnkgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29kZV9oYXNoW10gPSB7Ci0gICAgNzQyMjQsIDQ4NTEsIDEyNTEzOCwgNzgxNTYsIDc4NDk5LCA3MjM5MSwgNzkyOSwgNjY5MTAsIDE5NDY4MiwgMTI3NzY2LCAKKyAgICA3NDIyNCwgNDg1MSwgMTI1MTM4LCA3ODE1NiwgNzg0OTksIDcyMzkxLCA3OTI5LCA4OTk5LCAxOTQ2ODIsIDEyNzc2NiwgCiAgICAgNzg1MDAsIDY2NDgwLCA2NDAzOCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgNzIzODUsIDU5NiwgOTgzODIxLCA2OTg1MCwgCi0gICAgMTMxOTIsIDg2NTEsIDEyMDIxNywgMTI2NTQyLCAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgMTE5ODU2LCAxMTM3NTIsIAorICAgIDEzMTkyLCA4NjUxLCAxMjAyMTcsIDY2Nzg5LCAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgNzA3NDAsIDExMzc1MiwgCiAgICAgNTgxNiwgMTE5MDY3LCA2NDgxMCwgNDIzMSwgNjgyNSwgNDI4OTcsIDQyMzMsIDQyMzQsIDQyMzIsIDEyMDg4OSwgNzQ0MTUsIAotICAgIDEyMDIxMCwgNjM4NCwgNzAzNTEsIDc4MTA4LCA4ODUxLCA2NzY5OCwgMTI4NTUzLCA4Mjk1NCwgNDE2MDEsIDg4NzQsIAotICAgIDcyMzkyLCA3NzQ4LCAxMjUwODMsIDAsIDEyNzAyNiwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgOTE4OCwgNDE2MDAsIDAsIAotICAgIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAxMjg2MzUsIDYzODEsIDAsIDAsIDY1MjQwLCAxMTk1MSwgMCwgMzQwNCwgCi0gICAgOTgzMDc5LCA3MDQ4NywgNzI0MTEsIDE3NTksIDEyMDg1MywgNDEwNzYsIDY4MzgzLCA2OTk3MiwgMTE5MjA1LCA2NjU3NywgCi0gICAgOTQwMTQsIDEyNzc2NCwgNjU4NTksIDAsIDc0MDQsIDAsIDAsIDY5OTcwLCAxMjgzODcsIDY1OTA4LCA5ODM0LCAzMDU1LCAKLSAgICA5ODUyLCAxMjgzNjAsIDY1Mjg4LCAxMjEyOTEsIDExMzk4LCAwLCA5MjQxNywgOTMwMTYsIDEyODM4MCwgMTI3MzM3LCA2MDMsIAotICAgIDc0Mzk4LCA0MzU0OCwgMCwgNzE4NjUsIDkxNzgyNCwgMzM1MCwgMTIwODE3LCA2NDMxOCwgMTk0Njk4LCA3ODEyMSwgMzM5MCwgCi0gICAgNzQ0ODMsIDQzMjY1LCA5MjM5OSwgOTE3ODMwLCA3ODU3MywgMTE4ODAzLCAxOTE5LCAzNDAwLCAxMjA2NTEsIDgzMjk2LCAKLSAgICAxMTY0NywgODMyOTgsIDY2NDQ2LCA2NDE0MSwgODU2MiwgMjEyMSwgNjQxMzgsIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgCi0gICAgMTEyOTcsIDk4MzY4OCwgOTgzMTUyLCAxMTk2NiwgNjQxMjgsIDY2Mjg2LCA5MzA0MiwgMTI4ODMwLCA2NDEzMiwgMTA4NjcsIAotICAgIDY0MTMwLCA2NDEyOSwgMTIxMjU1LCA0MzM3NCwgOTc3OSwgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCA4MzQ1OCwgCi0gICAgNjYwMjEsIDc0NTA5LCAwLCA1NDU3LCA1NDQwLCA4ODU3LCA5Mzk4MSwgNjUyODIsIDI4NDMsIDUzNTUsIDY4ODU4LCAKLSAgICA5ODMzNDIsIDY5OTcxLCA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgMTEzNzI0LCAxMjg4NzIsIDAsIDAsIDcyMzkzLCAKLSAgICAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgODMzMDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgCi0gICAgMCwgMCwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCA3NTAwOCwgNzc5MjgsIDQzOTI5LCAKLSAgICAxMDkwNiwgMTM1MywgNjk2MCwgODMwMzIsIDEyODc3OSwgNTgyOCwgODcyNCwgOTE3ODA2LCA4OTMzLCAxNjAxLCA0MjI0NCwgCi0gICAgODU4LCA3MDgwLCA2NDEwOSwgNjQxMDgsIDgwOTAsIDcwNDU1LCA3MjM4OCwgNzQ2MDYsIDU4NywgOTE3OTA3LCA4Mjk3MSwgCi0gICAgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgNzg3MDcsIDEyMjEzLCA4MzI5MCwgCi0gICAgMjc2MCwgODMyODQsIDgzMjg1LCA3ODcwOCwgODMyODcsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDgzMjgzLCA2NDE1MSwgCi0gICAgNjQxNTAsIDEyNjc5LCAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDEyNTAxNiwgMCwgNDgzOSwgNjg1MjcsIAotICAgIDAsIDE4NzQsIDExOTAxNiwgMTIwMDkxLCA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAwLCAxMjc1MzEsIDkyNTM0LCAKLSAgICA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgNzg4NDcsIDY0MTIyLCA2NjM4OSwgNjY2MDksIDEyMTM0NywgNjQxMTcsIAotICAgIDY0MTE2LCA2Mjg3LCA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgCi0gICAgNjU2MDEsIDEyMzIyLCA2NDEwNiwgNjk2NDAsIDkyODk1LCA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCAKLSAgICA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgOTgzMTYxLCA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgCi0gICAgMTI4NTQ1LCA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIDEyMDg2NCwgNzM4NDEsIDgzMzM5LCA4MzM0MCwgCi0gICAgOTA1NiwgNjQzMTMsIDYxODgsIDc0MzYwLCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIAotICAgIDYzLCA3MjMzLCA5MjIxMiwgNzI0MTQsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAxMjgzNDQsIDEyMTM4OCwgMTE3NiwgCi0gICAgMTE4OTU5LCAxMjc5MzAsIDgxNjIsIDEyNzAxOSwgMTI4MTk3LCA5Mjc0NywgMTIwNTE5LCA0MjkzMSwgNjYyNDIsIDExNDE1LCAKLSAgICA0MzMzLCA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDAsIDEyMTI3MSwgOTgzNjQ5LCA3NzE0LCA2NjIyMiwgNjk5MDIsIAorICAgIDEwMDQxMywgNjM4NCwgNzAzNTEsIDc4MTA4LCA4ODUxLCA2NzY5OCwgMTI4NTUzLCA4Mjk1NCwgNDE2MDEsIDg4NzQsIAorICAgIDcyMzkyLCA3NzQ4LCAxMjUwODMsIDAsIDEyNzAyNiwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgOTE4OCwgNDE2MDAsIAorICAgIDk4Mzk4MSwgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDEyODYzNSwgNjM4MSwgMTAwODcyLCA2Njc5NywgNjUyNDAsIAorICAgIDExOTUxLCAwLCAzNDA0LCA5ODMwNzksIDcwNDg3LCA3MjQxMSwgMTc1OSwgMTIwODUzLCA0MTA3NiwgNjgzODMsIDY5OTcyLCAKKyAgICAxMTkyMDUsIDY2NTc3LCA5NDAxNCwgMTI3NzY0LCA2NTg1OSwgMTI1MjUzLCA3NDA0LCAxMjUyNDgsIDEyODMwOCwgNjk5NzAsIAorICAgIDEyMDY0OCwgNjU5MDgsIDk4MzQsIDMwNTUsIDIyMzQsIDEyODM2MCwgNjUyODgsIDEyMTI5MSwgMTEzOTgsIDAsIDkyNDE3LCAKKyAgICA5MzAxNiwgMTI4MzgwLCAxMjczMzcsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgMTI5MzY2LCAzMzUwLCAxMjA4MTcsIAorICAgIDY0MzE4LCAxMjA2OTksIDc4MTIxLCAzMzkwLCA3NDQ4MywgNDMyNjUsIDkyMzk5LCA5MTc4MzAsIDc4NTczLCAxMTg4MDMsIAorICAgIDE5MTksIDM0MDAsIDEyMDY1MSwgODMyOTYsIDExNjQ3LCA4MzI5OCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCA2NDEzOCwgCisgICAgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCA2NDEyOCwgNjYyODYsIAorICAgIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCAxMjEyNTUsIDQzMzc0LCA5Nzc5LCAyNzY0LCAKKyAgICA2NjAwMiwgMTAxNjcsIDk0NzEsIDgzNDU4LCA2NjAyMSwgNzQ1MDksIDk4MzMwOCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIAorICAgIDY1MjgyLCAyODQzLCA1MzU1LCA2ODg1OCwgMTAwNTMwLCA2OTk3MSwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIAorICAgIDEwMDUyOSwgMTI4ODcyLCAwLCA5ODM5MDcsIDcyMzkzLCAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgCisgICAgODMzMDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgMCwgMTI4MTQ2LCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgCisgICAgNjQxNDQsIDc2MiwgMTMxNzIsIDc1MDA4LCA3NzkyOCwgNDM5MjksIDEwOTA2LCAxMzUzLCA2OTYwLCA4MzAzMiwgMTAwNDIzLCAKKyAgICA1ODI4LCA4NzI0LCAxMjI5MTYsIDg5MzMsIDE2MDEsIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgCisgICAgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCAxOTQ2NDksIDgyOTcxLCA5ODM4MDgsIDEyOTM0NSwgMTk0Nzk1LCA3ODIxNCwgCisgICAgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA3ODcwNywgMTIyMTMsIDgzMjkwLCAyNzYwLCA4MzI4NCwgODMyODUsIAorICAgIDc3OTM0LCA4MzI4NywgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgODMyODMsIDY0MTUxLCA2NDE1MCwgMTI2NzksIDEwMDUzLCAKKyAgICAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMTI1MDE2LCAwLCA0ODM5LCA2ODUyNywgMTI1MDkxLCAxODc0LCAxMTkwMTYsIAorICAgIDEyMDA5MSwgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMTIwMTg4LCAxMjc1MzEsIDkyNTM0LCA3MDA3LCA3NTkwLCAKKyAgICA2NTQ0MywgOTAzNiwgNzg4NDcsIDY0MTIyLCA2NjM4OSwgNjY2MDksIDEyMTM0NywgNjQxMTcsIDY0MTE2LCA2Mjg3LCAKKyAgICA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgNjU2MDEsIDEyMzIyLCAKKyAgICA2NDEwNiwgNjk2NDAsIDkyODk1LCA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDk4MzQ4MiwgMTA0NTMsIDY0MTA0LCAKKyAgICA3MTg4LCA3OTk3LCAxMjg2MDAsIDczODksIDk4MzE2MSwgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIDEyODU0NSwgCisgICAgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCAxMjA4NjQsIDczODQxLCA4MzMzOSwgODMzNDAsIDkwNTYsIDY0MzEzLCAKKyAgICA2MTg4LCA3NDM2MCwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgCisgICAgNzQ5NTMsIDcyNDE0LCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc3NSwgMTI4MzQ0LCAxMjEzODgsIDExNzYsIDExODk1OSwgCisgICAgMTI3OTMwLCA4MTYyLCAxMjcwMTksIDEyODE5NywgOTI3NDcsIDEyMDUxOSwgNDI5MzEsIDY2MjQyLCAxMTQxNSwgNDMzMywgCisgICAgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCA5ODM0MDUsIDEyMTI3MSwgOTE3OTA3LCA3NzE0LCA2NjIyMiwgNjk5MDIsIAogICAgIDc3NjgsIDcyNDAzLCA0MTk5LCA2NDcwOCwgNjUwNjQsIDcwMTE3LCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIAotICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCA3MTg3OCwgMTI2NTcwLCAxMjEyNTYsIAotICAgIDY0NjE1LCA0MTkxNSwgMCwgMTIwNzUsIDQyMDQxLCAxOTQ4MjUsIDUxNzQsIDk4MzIxNywgMCwgMTI3NTU3LCAzMTIzLCAKLSAgICAxMjUxMDAsIDEyNjg1LCAxMTkyMTYsIDg0MDgsIDY0NzA0LCA4MzMyOCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCAKLSAgICA3Mzc5NywgODMzMjcsIDExMTYsIDc1MDY3LCA0MzA0OSwgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgNzUwMzEsIAotICAgIDkxNzYyMiwgMTI4MTY4LCAxMzExNSwgNDM2NzUsIDY0MDkxLCA5MzIyLCA4MzMzOCwgODMzMzEsIDY0MDk1LCA2NDA5NCwgCi0gICAgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDY3MjQ5LCA2NjM5OCwgMTE0MzQsIDY0MDgzLCAKLSAgICA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCA4MzAzMywgOTkyNywgNDEzMzUsIDQxMTgsIAotICAgIDE3OTcsIDgzMzEyLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCA4MzMwOSwgMjk4LCA4MzMwMywgODMzMDQsIDgzMzA1LCA0MjYyNywgCi0gICAgMTI1MDExLCAzMiwgNjE4NywgODMwMzcsIDExNDk1LCAxMTQ1OSwgMzY2NSwgODMwMzYsIDQyODcxLCAwLCAxOTkyMywgCi0gICAgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgODMzMTQsIDcxNDQ0LCA5ODM0NjgsIAotICAgIDY1NzU4LCAxMjc1MCwgNDE4MSwgODU0NCwgODM0NjEsIDY4MDUzLCA4MzQwNywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgCi0gICAgNjUwMTQsIDk4MzQyMiwgMTI4NDg0LCA5ODMxOTYsIDM2MzksIDExOTU4OCwgMTE4ODUxLCA4MzAzOSwgMTE4OTA0LCAKLSAgICAxMDA3MywgMTIwMjA2LCA4MzAzOCwgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIAotICAgIDEyODkxNSwgMTAyMDcsIDg3ODksIDkzMDcwLCAxMjAzMzgsIDkyOTczLCAxMjgzMjUsIDkyMzQsIDkxNzg5NSwgNjE4MiwgCi0gICAgOTgzNDc1LCA2NTA1OCwgMTIwMzE5LCA5ODM0ODAsIDY4MDY0LCA5MTc4MzEsIDU0NzEsIDk0NjEsIDU1NzMsIDExODkzNiwgCi0gICAgNTQ3MywgNDQsIDAsIDY2MjQ0LCA5NDA3MiwgMCwgNjYyMzgsIDEyODQ0LCA2Njg5NCwgMTYyMiwgNzc2NywgMTkwMCwgCi0gICAgNDEzMzksIDExNDU4LCAxMTkwNjEsIDAsIDY1ODEsIDU1NzYsIDEyODYxOCwgNDM4NTUsIDQxMzM3LCAwLCA0MTYzMSwgCi0gICAgODk0NywgNjgzOTAsIDY5NjgzLCA0MTY5NCwgOTgzODQ4LCA3MjM5NiwgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDkxNzg3MiwgCi0gICAgNjQ2MTgsIDAsIDEyMDE0NywgMjEzOCwgNjU4MywgNzc2MSwgNzAwMDUsIDEyMDUwNCwgMTk0ODI4LCAxMjg5NjEsIDUwNTgsIAotICAgIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDkxNzk0MSwgMCwgNzQ1MzgsIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgCi0gICAgMCwgMTQzNywgNDE2MTcsIDY1OCwgMzQ5NywgMTI4NTA5LCA3NDg2LCA1MDYxLCA1MDYwLCA0MjM1LCAxMjc4NzgsIAotICAgIDEyODMyMiwgMTI4NTI5LCAxMjExMywgNDIzNiwgNDcyNywgMTI4NDg3LCAwLCA3NjkzLCAxMDc0OSwgMTIwMzMyLCA3NDg4LCAKLSAgICA1NzczLCA5NzgsIDEyODEzNCwgOTgzNjk5LCA0MTYxOSwgMTAyMzksIDY4NjExLCA3MTg2NCwgNjYyMDksIDEyNzIzMywgCi0gICAgNzQxMzUsIDk3NDgsIDk4Mzk1NiwgMTI3NTI0LCAwLCA5ODMzMTYsIDE5NDY3NiwgMTk0Njc1LCAxMjgwODEsIDAsIAotICAgIDk4MzMxMywgOTgzMzAyLCAwLCAxMjc4NjUsIDAsIDkyNzc2LCA5MzQxLCA3ODgyMSwgMjM3OSwgMTEzMjUsIDkxNzkwMiwgCi0gICAgNjQ2NjgsIDY3ODU0LCA4MTI1LCAxMjA1NDUsIDY3NDMsIDgzMTY0LCA5MTc5NDAsIDIzNjksIDgzNDA2LCA5ODMzMjMsIAotICAgIDEyNzk2NiwgMTE5MjM1LCA3MTg2OCwgNzM5MzYsIDcwMDgsIDQzNjYwLCAxMjAzNDYsIDAsIDQzODQxLCAyMzY3LCAKLSAgICAxMjc4MjcsIDk4Mzg1NywgMjY0LCAyMzc1LCA4MDYwLCA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMTI5MDQ5LCAKLSAgICA2MDE5LCAxMjg5NzUsIDAsIDY5NjEsIDAsIDcwNDM1LCA2NzE3MSwgODgwMCwgMTI3MzMyLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIAotICAgIDYxOTIsIDExOTYxMCwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIDY1MDQyLCA5MzAxNCwgMTIwODAwLCA3NDk0MiwgMTI4OTIsIAotICAgIDAsIDY3MTQ5LCA3NDg5OSwgNzM5MzEsIDAsIDEyMDQ5NSwgMTI3MjYxLCAxMjIyNCwgOTgzMTI4LCAxMjkwNjEsIDUwNzQsIAotICAgIDUwNzMsIDEyMTE2NCwgODk4MywgMTE4OTgxLCA3NDQ5MywgNzEyMzEsIDUwNzIsIDc0NTQ3LCA2MTk4LCAxMTYxNCwgMCwgCi0gICAgMTk2LCA5ODMxNTQsIDAsIDk4MzkzNiwgNDkyOSwgMTIwMzQyLCAxMjkxNDUsIDAsIDEyNzk4NywgMTIxNDU1LCA0Mjg0NywgCi0gICAgOTI5NTMsIDAsIDY3NzU0LCA0OTM0LCA5ODM5ODEsIDQxMzIzLCA5NzU4LCAwLCA5MjI4OSwgNzAxODEsIDQyNTg0LCAwLCAKLSAgICA0MzI5LCA0MTMyMSwgNDk3OSwgMzA0OCwgNzc1MiwgNDEzMjAsIDk4MzA0MiwgNjQ2NjcsIDEyODE5LCA5ODM4NzAsIDUwNzEsIAotICAgIDEyNzkxNSwgMzY0MiwgNjczMzQsIDUwNzAsIDEwMDQyLCAxMTM4MTMsIDM5ODcsIDUwNjgsIDk4MzQ2MCwgODkwOSwgCi0gICAgNzg2NTAsIDc4NjQ5LCA2OTkxNywgMTA2MzYsIDczOTgxLCAxMTgwNiwgNDMxNjcsIDQ1MzEsIDEyNDUsIDkxMDUsIDY2NDYzLCAKLSAgICA0OTIxLCAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgMTIxMzU5LCAxMjgwMjgsIDAsIDY0NzA5LCA4MzI2OSwgCi0gICAgMTI4ODU0LCA3ODg4MCwgNDkyMiwgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgMTI3MjE4LCAwLCA5NTI2LCA0OTIwLCAKLSAgICAxMjg2MTcsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAxMjc4NTcsIDkyMTc1LCAxMjAyNzUsIDQ5MzMsIDExMzc3OSwgCi0gICAgMTIxMDQ5LCAxMTg5ODUsIDQ5MjgsIDk4MzE0OSwgODM1MTQsIDc0NzcwLCAxMjAxOTQsIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIAotICAgIDE5OTA4LCAxMjYzNywgMTI3NDg1LCA4Mjk5OSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgNDM0OTMsIDEyNzQ3NywgCi0gICAgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDcwMTAzLCA5MjY5NCwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIAotICAgIDEyNjU3NywgNjgzMzYsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCA5Mjc2MSwgMTI3NDYyLCA3MDA1LCAKLSAgICA0MTYwOSwgOTU4MCwgNzA0MzEsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDEyNzkwMCwgCi0gICAgODE0MywgMTI3MTE1LCAxMTk4MywgOTIyNDksIDYyNCwgNzQ1MDgsIDQwNTcsIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIAotICAgIDAsIDUwNzYsIDEyODcwMiwgODI5OTEsIDAsIDgyOTUsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDEyOTE4MiwgCi0gICAgOTI1MjMsIDcxNDM1LCA3MTM4LCAxMjA1NTIsIDQzNTA0LCAxOTQ2MTEsIDY2OTE0LCA2NTc5NCwgMTI1MjAsIDgwNTgsIAotICAgIDk3MzIsIDkyNDgwLCA1MDgwLCA2NDc3NSwgNTAzNiwgNTAzNSwgMTIwNTkwLCA0MjYwNCwgOTgzNjU2LCAwLCA4MDc0LCAKLSAgICAyNzUsIDEzMjkxLCAxOTA3LCA3ODgzOCwgNDQzMiwgMTIxMzEzLCA1MDMzLCAxMjAzNDEsIDEyMDgxOCwgNDgzNiwgMzg4OCwgCi0gICAgNzM3OTIsIDEwNzI5LCA2NDU0NiwgMTI3MjYyLCA0MzcwNCwgMTI3MjY0LCA5Mjk1NywgNjc1ODgsIDY4MDYxLCAxMjQ5ODMsIAotICAgIDcwMzYwLCA4ODU4LCA2NDA5LCA3NjYzLCAxMjAyNTIsIDEyODEwMCwgMTE5MDA3LCAwLCA2NjMyMSwgOTQwNTIsIDEyODE0LCAKLSAgICAxMjcyNDgsIDM0MzIsIDEwMjE4LCAwLCA2MDk0LCA3NjQxLCA0MjQ0NSwgMTI4NzkyLCA5MjQ4NywgNDI0MDYsIDE2NzYsIAotICAgIDY3MzYyLCA3NDg2MiwgNjczNjUsIDUwMzAsIDY3MzY0LCAxMTg4MTAsIDE5NTAwOCwgNzM4NjksIDk2MjIsIDExMzc2MywgCi0gICAgNjk5NDQsIDY3ODcsIDY3MzYxLCA5ODMyNzAsIDAsIDY4MzE5LCAxMDU0NCwgMTI5MTksIDcxNDg0LCA3MjM5NywgMCwgMCwgCi0gICAgNjk5MDYsIDEyMDc4OSwgOTgzMDQxLCA5NDcsIDY3Njk1LCA2NzM2NywgMTI4NTI4LCAxMDk2OSwgNjcyMjgsIDc2MTMsIAotICAgIDkyNTYyLCAxMTk5MzYsIDQ3OTUsIDExOTkzMCwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMCwgCi0gICAgNDM1NjcsIDc0MDU2LCAxMjAyNjYsIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIAotICAgIDQzOTUsIDQzNTM4LCAxMTk5MjYsIDExOTgzNCwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgCi0gICAgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgCi0gICAgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgCi0gICAgODE1MCwgMTM1OSwgNjc2NTIsIDcwNDY0LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIAotICAgIDEyNzMyNCwgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTIxMjg0LCAxMjczMTUsIDEyMjgzLCAKLSAgICAxNjE2LCAzNzk1LCA2NzczMiwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMTI4MjgwLCAKLSAgICA2NzcyNCwgMzIzOSwgNjY4OTMsIDEyODgxOCwgMCwgODQzMSwgMCwgNDIxNjQsIDcxMjI5LCAxMTc3OCwgMTI2MjAsIDY4MjYsIAotICAgIDczNzczLCA3MDE2OSwgNTA0MCwgMTI3OTY5LCAwLCA2NzA5NCwgNzg0MjAsIDAsIDUwMzksIDk4MzI0MSwgNzg0MTgsIDAsIAotICAgIDUwMzgsIDAsIDk4Mzg2MiwgMTMxODQsIDQzOTYwLCAxMjA5MzEsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgOTE3NjIzLCAKLSAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCA3MDE4MiwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCAKLSAgICA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMTI4ODA0LCA3MzgxMywgNzExLCAKLSAgICA0Mzg5LCA3MTMzLCAxMjA2NDMsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIDEwMDYsIDc0MjQwLCAKLSAgICA2NzIyNCwgMTU1MCwgODIwMSwgNzA0NTMsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgNjU3ODQsIDQzOTU3LCAKLSAgICA2NTI2NywgMzc1OCwgMCwgNjU3ODEsIDY0NzM0LCA2NzIyMiwgMjQ0MCwgNDM5NTUsIDcwNzg3LCA4NDQ5LCAwLCA1MDA4LCAKLSAgICA5ODM1NzIsIDIxMTgsIDEyNjUwOCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAKLSAgICAyMTMzLCAxMTE5LCAxMjEyNTAsIDIxMTQsIDIxMTYsIDI0NTUsIDExMzc5OCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgCi0gICAgMTI3NDg2LCA4NzE0LCA5ODM4MjAsIDIxMTMsIDE5NTA0OSwgMjExNSwgMTI4MTc3LCAxMjc5MDcsIDQzNzEzLCA1MDUyLCAKLSAgICA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgNDI2NDcsIDUwNTAsIDMwMiwgCi0gICAgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCA5MTE3LCA5ODMxODEsIDEyMDAzLCAKLSAgICA1NTEzLCA1MTA5LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCA3ODQzNywgMCwgMTkyNSwgCi0gICAgNzEyNTEsIDkyMjM3LCA3NDgwNywgOTgzMDYyLCA1MDQ4LCA1MDQ3LCAxOTQ4MzcsIDk4MzM4MCwgNzQyMDEsIDkyMzEzLCAKLSAgICAxOTQ4MDIsIDc0NDk3LCA4Mjk4MiwgODA4OSwgNjkyOSwgNjM5LCA4Mjk4MSwgNjgxNzksIDY0NDQyLCA3MDE4MCwgODI5ODQsIAotICAgIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCAKLSAgICA2OTUxLCA5NDAxNywgMTI5MTk3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIDEyMDk5MSwgNjY1NiwgNDI2MTgsIDcwMTc1LCAKLSAgICA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDAsIDUwNDUsIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIAotICAgIDkwMDYsIDEzMTI4LCA1MDQzLCAxMjEzMzUsIDc4NTMsIDY3ODA4LCA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAKLSAgICAxMjg4ODMsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCAKLSAgICA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NDY3LCAxOTQ5NDYsIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAxMjEzMjYsIAotICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDE5NDg1NywgCi0gICAgMTk0NTkxLCAwLCAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgNzExMTAsIDQyNTAsIDkyMjY2LCAKLSAgICAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIDkyNzM4LCA2NjIwMCwgMCwgMCwgMTI1MDI2LCA3NDI5OCwgMTI4ODc5LCA5ODM0NzYsIAotICAgIDg3MTEsIDYxODMsIDgzNDQ4LCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIDExODkyNSwgNjYzNzYsIDkyMzUsIAotICAgIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIAotICAgIDAsIDEyNjU5NywgMTIwNDM0LCAxOTQ4NTAsIDc3MjYsIDE5NTA5NSwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIAotICAgIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCAKLSAgICA5MDUwLCAzMzk4LCAxMjg0MjQsIDk4MzM1MCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIAotICAgIDEyOTEwNiwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCA3MDE1MiwgMTMwMTQsIDEzMDEzLCAxMjExOTgsIAotICAgIDY2NzMsIDAsIDAsIDEyMTMyNCwgMTI0MzgsIDAsIDk4MzM0NCwgODMxMDYsIDcxMTI4LCAxMjAwNjIsIDkwNTMsIDEzMDE1LCAKLSAgICA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgNzQ5NDksIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDc0ODYxLCA0MjIxMiwgCi0gICAgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDY3MzQzLCAxMjE0MzcsIDEyOTA4NiwgNDM4NzYsIDkyOTQxLCAKLSAgICA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDEyODU5NSwgNDM5NDksIDEyMDA0OCwgNzgwOTksIDEyNzA4NSwgMCwgCi0gICAgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCA2NjcyOCwgMTgxNiwgNDM5NTIsIDQyNTMzLCAKLSAgICAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgNDM5NTAsIDc4MTA1LCA0OTAxLCAxODIxLCA0Mzk1MSwgNTc4LCAzNjUzLCAKLSAgICAxMjg5NDYsIDc5MSwgOTE2MiwgNjk3NywgNzQxOTYsIDc4ODg5LCA3MDE2MCwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAKLSAgICAxMTkzMDMsIDk4MzQ1MSwgNzU1NywgMTE5MTA4LCA2NzM3OCwgODIzNCwgNzI0MSwgMTI4NjA4LCAxMTM3MzUsIDExOTE2NywgCi0gICAgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgCi0gICAgMTI4Mjc2LCA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIAotICAgIDI0NTIsIDc4MDgzLCA2NzIxNywgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDEyNjU2NCwgNzEzMDIsIDQ0MDgsIDQxMjIsIAotICAgIDY3NzIsIDExMDM5LCA4NzIzLCA2NTg5NiwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDcxOTA0LCAyNDM4LCA2NDg1NSwgCi0gICAgMTE5MzAwLCAxMTkyOTksIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAKLSAgICAxMjg2MzksIDAsIDAsIDQxOTUyLCA5MzAyMywgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgCi0gICAgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgMTI5NjMsIDcwMzIwLCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMTIwMzQwLCAKLSAgICAxMTg4NzMsIDEyNzEsIDk4MzY0MCwgMTI5MTEyLCA2NjAyNCwgNDE0ODIsIDM4NjQsIDkyMDQsIDAsIDM4NzksIDAsIAotICAgIDEyOTc4LCA0MTY2LCA0NTc0LCAxMjgxMTEsIDc1NjcsIDc0NTksIDc4MTI4LCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCAKLSAgICA3MDE1NCwgNTc1OSwgMTk0ODY5LCAxMjE0MTMsIDQxMzg4LCA2NDQ0NiwgNDEzOTIsIDY0Mjg4LCA0MTM4NywgNjcyMDEsIAotICAgIDg3MDYsIDU1NTIsIDY4ODM3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgCi0gICAgNzQwNjYsIDY3MjUxLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgMTExMTUsIDEyMTAzNSwgCi0gICAgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgNzgwOTEsIDAsIAotICAgIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgNjcyODgsIDY3OTk1LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgCi0gICAgNjQ2MjQsIDAsIDAsIDcxOTEyLCAxOTQ5MDgsIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCAKLSAgICA5MjI3MywgNjY1ODAsIDc3OTkyLCA2NjY4MywgMTA1NTQsIDExOTAwOCwgMTE5MTIxLCA2ODMyLCA1MDk4LCA5MTc3NjgsIAotICAgIDE5NDY2OCwgNzA0MDMsIDUwOTcsIDQ5MzUsIDk4NDgsIDEwMzgxLCAwLCA2NzI5NiwgOTI4OTYsIDM2NTEsIDAsIDY3Mjk0LCAKLSAgICA3MDg0OCwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgCi0gICAgMTI0NywgMTAwMzQsIDEyMTM0MCwgNTA5OSwgNzgzNzMsIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDExOTk1MywgNzgzOCwgCi0gICAgMCwgMTI4NjU1LCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgNzA4MjksIDc4NDI3LCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAKLSAgICAxOTQ5MjMsIDkxNTQsIDkxMTgsIDEyNjU0MywgMTE5NTg2LCAyNjc2LCAyMjc3LCAxMjg0MjIsIDY4MjM3LCA2MTkwLCAKLSAgICA4NTk5LCAxMjUxMTgsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCA3MTkwMywgMTIxMjksIAotICAgIDEyNjY1MSwgODQ4MSwgODMwNjgsIDYyMDIsIDY3NzExLCAxMDkyMCwgMTEzNzI2LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgCi0gICAgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCA5NzYyLCAxMTIwNSwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCA2NjU3LCAKLSAgICAyMDcsIDEyMTIwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCA2NjgxNiwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgCi0gICAgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAxOTQ2MTIsIDQzMDM0LCAxMTQzOCwgCi0gICAgNjQ2NzQsIDAsIDcwMTU4LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIAotICAgIDUxMDUsIDY1MjY2LCA2OTcyMCwgNjQ3NiwgNTEwNCwgOTgzNzQ5LCAzMDQsIDMxNzYsIDc4ODcxLCA3MDE0OSwgOTMyLCAKLSAgICAxMTM2ODMsIDY1NjcsIDIzOCwgNjk2NTYsIDc4NDMyLCAxOTQ1OTUsIDE5OTA1LCA0Mzg1MCwgMTk1MDE1LCA3ODg3MCwgCi0gICAgNDEwNDQsIDY3NjQwLCA2NzMwMiwgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgCi0gICAgOTMwMzksIDg4MDMsIDMwOSwgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgNzAxNzEsIDEyNTY4LCAxMjc5MTcsIAotICAgIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMTI2NTM1LCA2NTE2NSwgOTI3MjUsIDAsIAotICAgIDY2NDY2LCAxMjQ5ODYsIDEyNzc4NCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgCisgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDcxODc4LCAxMDAzNzcsIDEyMTI1NiwgCisgICAgNjQ2MTUsIDQxOTE1LCAxMDAzNzUsIDEyMDc1LCA0MjA0MSwgMTI1MDg0LCA1MTc0LCA5ODMyMTcsIDEwMDM3MiwgNzQxODYsIAorICAgIDMxMjMsIDEyNTEwMCwgMTI2ODUsIDExOTIxNiwgODQwOCwgNjQ3MDQsIDgzMzI4LCAxMjI4OTEsIDkyMjMsIDAsIDQxNjE2LCAKKyAgICA2Nzk5OSwgNzM3OTcsIDgzMzI3LCAxMTE2LCA3NTA2NywgNDMwNDksIDcxMzYsIDQzMDUwLCA4NTQ4LCAxMjA0ODUsIAorICAgIDk4Mzg3MSwgNzUwMzEsIDkxNzYyMiwgMTI4MTY4LCAxMzExNSwgNDM2NzUsIDY0MDkxLCA5MzIyLCA4MzMzOCwgODMzMzEsIAorICAgIDY0MDk1LCA2NDA5NCwgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDY3MjQ5LCA2NjM5OCwgCisgICAgMTE0MzQsIDY0MDgzLCA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCA4MzAzMywgCisgICAgOTkyNywgNDEzMzUsIDQxMTgsIDE3OTcsIDgzMzEyLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCA3ODU5MSwgMjk4LCA4MzMwMywgCisgICAgODMzMDQsIDgzMzA1LCA0MjYyNywgMTI1MDExLCAzMiwgNjE4NywgODMwMzcsIDExNDk1LCAxMTQ1OSwgMzY2NSwgODMwMzYsIAorICAgIDQyODcxLCAxMTg5MDIsIDE5OTIzLCA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCAKKyAgICA4MzMxNCwgNzE0NDQsIDExOTMyMSwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCA4MzQ2MSwgNjgwNTMsIDgzNDA3LCAKKyAgICAxMjAxOTgsIDY5ODA5LCA2MTgxLCA2NTAxNCwgMTAwNzUwLCAxMjg0ODQsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAxMTg4NTEsIAorICAgIDgzMDM5LCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDgzMDM4LCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgCisgICAgOTI1NjUsIDEyMDIwNSwgOTE3NzczLCAxMjg5MTUsIDEwMjA3LCA4Nzg5LCA5MzA3MCwgMTIwMzM4LCA5Mjk3MywgMTI4MzI1LCAKKyAgICA5MjM0LCA5MTc4OTUsIDYxODIsIDk4MzQ3NSwgNjUwNTgsIDEyMDMxOSwgOTgzMjExLCA2ODA2NCwgOTE3ODMxLCA1NDcxLCAKKyAgICA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgNjY4OTQsIAorICAgIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMTE5MDYxLCA5ODMxODMsIDY1ODEsIDU1NzYsIDEyODYxOCwgCisgICAgNDM4NTUsIDQxMzM3LCA5ODM3NzIsIDQxNjMxLCA4OTQ3LCA2ODM5MCwgNjk2ODMsIDQxNjk0LCA5MTc3ODcsIDcyMzk2LCAKKyAgICA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgMTI3ODkwLCA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgCisgICAgMTIwNTA0LCAxOTQ4MjgsIDY2ODAyLCA1MDU4LCA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCA2OTg5MiwgMCwgNzQ1MzgsIAorICAgIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgMCwgMTQzNywgNDE2MTcsIDY1OCwgMzQ5NywgNzEzNjUsIDc0ODYsIAorICAgIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgMTI4MzIyLCAxMjg1MjksIDEyMTEzLCA0MjM2LCA0NzI3LCAxMjg0ODcsIDAsIAorICAgIDc2OTMsIDEwNzQ5LCAxMjAzMzIsIDc0ODgsIDU3NzMsIDk3OCwgMTI4MTM0LCAxMjg2OTMsIDQxNjE5LCAxMDIzOSwgCisgICAgNjg2MTEsIDcxODY0LCA2NjIwOSwgMTI3MjMzLCA3NDEzNSwgOTc0OCwgMTAwMzgzLCAxMjc1MjQsIDEyNTIxOCwgOTgzMzE2LCAKKyAgICAxOTQ2NzYsIDE5NDY3NSwgMTI4MDgxLCA3MDY4MSwgMTAwMzg1LCA3MjgxMSwgODMzNTQsIDEyNzg2NSwgMTIwOTk5LCAKKyAgICA5Mjc3NiwgOTM0MSwgNzg4MjEsIDIzNzksIDExMzI1LCAxMDAzODYsIDY0NjY4LCA2Nzg1NCwgODEyNSwgMTIwNTQ1LCAKKyAgICA2NzQzLCA4MzE2NCwgOTE3OTQwLCAyMzY5LCA4MzQwNiwgOTgzMzIzLCAxMjc5NjYsIDEwMDU0MywgNzE4NjgsIDczOTM2LCAKKyAgICA3MDA4LCA0MzY2MCwgMTIwMzQ2LCAwLCA0Mzg0MSwgMjM2NywgMTI3ODI3LCAxMjgyNzUsIDI2NCwgMjM3NSwgODA2MCwgCisgICAgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDEyOTA0OSwgNjAxOSwgMTI4OTc1LCA5ODM1NTcsIDY5NjEsIDAsIDcwNDM1LCAKKyAgICA2NzE3MSwgODgwMCwgMTI3MzMyLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIDYxOTIsIDEwMDc0NCwgNDI3NzEsIDEyNzk4MywgCisgICAgOTIzMzMsIDcyNSwgNjUwNDIsIDkzMDE0LCAxMjA4MDAsIDc0OTQyLCAxMjg5MiwgMTI1MjEyLCA2NzE0OSwgNzQ4OTksIAorICAgIDczOTMxLCAwLCAxMjA0OTUsIDEyNzI2MSwgMTIyMjQsIDk4MzEyOCwgMTI5MDYxLCA1MDc0LCA1MDczLCAxMjExNjQsIAorICAgIDg5ODMsIDExODk4MSwgNzQ0OTMsIDcwNzIzLCA1MDcyLCA3NDU0NywgNjE5OCwgMTE2MTQsIDEyNTI1MSwgMTk2LCAKKyAgICA5ODMxNTQsIDEyODgwNSwgMTI4MjYzLCA0OTI5LCAxMjAzNDIsIDEyOTE0NSwgMTAwNzk0LCAxMDA3NDcsIDEyMTQ1NSwgCisgICAgNDI4NDcsIDkyOTUzLCAwLCA2Nzc1NCwgNDkzNCwgMTI4MzM4LCA0MTMyMywgOTc1OCwgMTI4MjExLCA5MjI4OSwgNzAxODEsIAorICAgIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgMzA0OCwgNzc1MiwgNDEzMjAsIDkxNzk1MiwgNjQ2NjcsIDEyODE5LCAKKyAgICA5ODM1OTcsIDUwNzEsIDEyNzkxNSwgMzY0MiwgNjczMzQsIDUwNzAsIDEwMDQyLCAxMTM4MTMsIDM5ODcsIDUwNjgsIAorICAgIDk4MzQ2MCwgODkwOSwgNzg2NTAsIDc4NjQ5LCA2OTkxNywgMTA2MzYsIDczOTgxLCAxMTgwNiwgNDMxNjcsIDQ1MzEsIAorICAgIDEyNDUsIDkxMDUsIDY2NDYzLCA0OTIxLCAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgMTIxMzU5LCAxMjEyNjcsIAorICAgIDEyNzk3MiwgNjQ3MDksIDgzMjY5LCAxMjg4NTQsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAKKyAgICAxMjcyMTgsIDk4MzA1OSwgOTUyNiwgNDkyMCwgMTI4NjE3LCA5NDgsIDAsIDcwNzA2LCA0OTMwLCAxMjc4NTcsIDkyMTc1LCAKKyAgICAxMTk4ODYsIDQ5MzMsIDExMzc3OSwgMTIxMDQ5LCAxMTg5ODUsIDQ5MjgsIDk4MzE0OSwgODM1MTQsIDc0NzcwLCAxMjAxOTQsIAorICAgIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgMTI3NDg1LCA4Mjk5OSwgODc1MywgMTUwOSwgMTI1MjY0LCAKKyAgICA1NDY4LCA5NTExLCA0MzQ5MywgMTI3NDc3LCAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIAorICAgIDkyNjk0LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgMTI2NTc3LCA2ODMzNiwgNDE2MDcsIDkyNjI3LCAxNjc5LCAxMjAxMTYsIAorICAgIDEyMDE4MCwgNzg4MzcsIDEyNzQ2MiwgNzAwNSwgNDE2MDksIDk1ODAsIDcwNDMxLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgCisgICAgNTc2MSwgMzQyLCA4NTUzLCA5MjI1NiwgODE0MywgMTIwOTc5LCAxMTk4MywgNzQyMDgsIDYyNCwgNzQ1MDgsIDQwNTcsIAorICAgIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIDEyMDI1MCwgNTA3NiwgMTI4NzAyLCA4Mjk5MSwgMCwgODI5NSwgNjg1LCAKKyAgICA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMTAwOTA3LCA5MjUyMywgNzE0MzUsIDcxMzgsIDEyMDU1MiwgNDM1MDQsIAorICAgIDEyNTE5NywgNjY5MTQsIDY1Nzk0LCAxMjUyMCwgODA1OCwgOTczMiwgOTI0ODAsIDUwODAsIDY0Nzc1LCA1MDM2LCA1MDM1LCAKKyAgICAxMDA0MjksIDQyNjA0LCAxMDA0MjgsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc0MzcwLCA0NDMyLCAxMjEzMTMsIAorICAgIDUwMzMsIDEyMDM0MSwgMTIwODE4LCA0ODM2LCAzODg4LCA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIDQzNzA0LCAKKyAgICAxMjcyNjQsIDkyOTU3LCAyMjc0LCA2ODA2MSwgMTAwNDIyLCA3MDM2MCwgODg1OCwgNjQwOSwgNzY2MywgNzgwNjksIAorICAgIDEyODEwMCwgMTE5MDA3LCAxMDA0MjQsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIAorICAgIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgCisgICAgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCA2OTk0NCwgNjc4NywgNjczNjEsIDE5NDkzMCwgCisgICAgMCwgNjgzMTksIDEwNTQ0LCAxMjkxOSwgNzE0ODQsIDcyMzk3LCA5ODM2NDEsIDAsIDY5OTA2LCAxMDA4NTcsIDk4MzA0MSwgCisgICAgOTQ3LCA2NzY5NSwgNjczNjcsIDEyODUyOCwgMTA5NjksIDY3MjI4LCA3NjEzLCA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAKKyAgICAxMDA0MzEsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDEyMDE4OSwgNDM1NjcsIDc0MDU2LCAxMjAyNjYsIAorICAgIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIDQzOTUsIDQzNTM4LCAxMDA0MzMsIAorICAgIDEwMDg2MCwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAKKyAgICAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCAKKyAgICA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgODE1MCwgMTM1OSwgNjc2NTIsIDcwNDY0LCAKKyAgICAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIDEyNzMyNCwgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAKKyAgICAxMjczMjAsIDEyNzMxNywgMTIxMjg0LCAxMjczMTUsIDEyMjgzLCAxNjE2LCAzNzk1LCA2NzczMiwgODc5NSwgNjYyNDUsIAorICAgIDEyMDgzOCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAxMjgyODAsIDY3NzI0LCAzMjM5LCA2Njg5MywgMTI4ODE4LCAKKyAgICAxOTQ2MjQsIDg0MzEsIDAsIDQyMTY0LCA3MTIyOSwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgNzAxNjksIDUwNDAsIAorICAgIDEyNzk2OSwgMCwgNjcwOTQsIDc4NDIwLCAxMjcwMzYsIDUwMzksIDk4MzI0MSwgNzg0MTgsIDk4MzkzNiwgNTAzOCwgCisgICAgOTE3OTkwLCA5ODM4NjIsIDEzMTg0LCA0Mzk2MCwgNzA2OTUsIDY0NjQ4LCAxMjY2NDEsIDkzNTksIDc4NDE2LCA5MTc2MjMsIAorICAgIDEyODc3MCwgNjUxNTcsIDY2NjIsIDEwMDYwNCwgNzAxODIsIDM4NjMsIDczOTA5LCA0ODM1LCA1NTI2NiwgNDM0MzIsIAorICAgIDEyNzgyMiwgNDMwOSwgNzEyNywgMTE4ODQxLCAxMjkwNzQsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMTI4ODA0LCAKKyAgICA3MzgxMywgNzExLCA0Mzg5LCA3MTMzLCAxMjA2NDMsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDEyODQzNiwgNDEzMzEsIAorICAgIDEwMDYsIDc0MjQwLCA2NzIyNCwgMTU1MCwgODIwMSwgNzA0NTMsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgCisgICAgNjU3ODQsIDQzOTU3LCA2NTI2NywgMzc1OCwgOTgzODQ0LCA2NTc4MSwgNjQ3MzQsIDY3MjIyLCAyNDQwLCA0Mzk1NSwgCisgICAgNzA3ODcsIDg0NDksIDk4MzY4NCwgNTAwOCwgOTgzNTcyLCAyMTE4LCAxMjI4OTYsIDEyMTIxLCA4MjU1LCA1NTEyLCAKKyAgICA3Mzg3NSwgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgMjEzMywgMTExOSwgMTIxMjUwLCAyMTE0LCAyMTE2LCAyNDU1LCAKKyAgICAxMTM3OTgsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIDEyNzQ4NiwgODcxNCwgOTgzODIwLCAyMTEzLCAxOTUwNDksIDIxMTUsIAorICAgIDEyODE3NywgMTI3NzQ4LCA0MzcxMywgNTA1MiwgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgCisgICAgNjU3NzMsIDE0MjksIDQyNjQ3LCA1MDUwLCAzMDIsIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIAorICAgIDEyNzI2LCA3NDU5NCwgOTExNywgOTgzMTgxLCAxMjAwMywgNTUxMywgNTEwOSwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAKKyAgICAwLCA3ODQ0NywgMjQ3MCwgNzg0MzcsIDAsIDE5MjUsIDcxMjUxLCA5MjIzNywgNzQ4MDcsIDk4MzA2MiwgNTA0OCwgNTA0NywgCisgICAgMTk0ODM3LCAxMjEyNzUsIDc0MjAxLCA3ODc0MywgMTk0ODAyLCA3NDQ5NywgNjU5MzMsIDgwODksIDY5MjksIDYzOSwgCisgICAgODI5ODEsIDY4MTc5LCA2NDQ0MiwgNzAxODAsIDgyOTg0LCA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCAKKyAgICA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgNzQzMDYsIDEyOTE5NywgMzUzMCwgOTc1MCwgMTI4MzE3LCAKKyAgICAxMjA5OTEsIDY2NTYsIDQyNjE4LCA3MDE3NSwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAxMDA1MTYsIDUwNDUsIAorICAgIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIDkwMDYsIDEzMTI4LCA1MDQzLCAxMjEzMzUsIDc4NTMsIDY3ODA4LCAKKyAgICA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAxMjg4ODMsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCAKKyAgICA2NDUwOCwgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCA2Nzk4MywgMTMyOTYsIDUxNywgOTgzODc4LCAxMjUwMTcsIAorICAgIDEwMDU2NSwgNDE1MjgsIDEyMywgNjU0NTQsIDEyNzIxNSwgMTIxMzI2LCA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAKKyAgICAxMDgyOSwgNzM5OTEsIDgwNTcsIDExMjYsIDczODk1LCAxMDA4MDMsIDE5NDU5MSwgOTgzMzc5LCAzOTI1LCA0MjUxLCAKKyAgICA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgNzExMTAsIDQyNTAsIDkyMjY2LCAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIAorICAgIDkyNzM4LCA2NjIwMCwgOTgzNjI2LCAxMjc5MDUsIDEyNTAyNiwgNzQyOTgsIDEyODg3OSwgMTI2NjI1LCA4NzExLCA2MTgzLCAKKyAgICA4MzQ0OCwgOTgzOTUyLCA3MjQwMiwgMTIwNDQ4LCA3NjIzLCAxMDA4MDksIDY2Mzc2LCA5MjM1LCAxMjc2MCwgNzQxNzYsIAorICAgIDY5NjYyLCA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCA5ODM3OTksIDEyNjU5NywgCisgICAgMTIwNDM0LCAxMTkwNTIsIDc3MjYsIDE5NTA5NSwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIDEyMjkxOSwgCisgICAgNjkyMzMsIDI0NTgsIDEwMDQzNSwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIAorICAgIDkwNTAsIDMzOTgsIDEyODQyNCwgMTI3MDgzLCAxOTQ4OTQsIDMzOTEsIDQxMDc1LCAyNDc2LCAxMjkxMjksIDc0OTkwLCAwLCAKKyAgICAxMDYyNSwgNzA3MTUsIDEyNzY3LCAxMzAxNywgNzg3NDEsIDY0MjYxLCA2NDkzNCwgNzAxNTIsIDEzMDE0LCAxMzAxMywgCisgICAgMTIxMTk4LCA2NjczLCAwLCAwLCAxMjEzMjQsIDEyNDM4LCAwLCA5ODMzNDQsIDgzMTA2LCA3MTEyOCwgMTIwMDYyLCA5MDUzLCAKKyAgICAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDc0OTQ5LCA2NjYwLCA3ODc1OCwgOTE3NzYwLCA3NDg2MSwgCisgICAgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCA2NjgwOSwgMTIxNDM3LCAxMjkwODYsIDQzODc2LCAKKyAgICA5Mjk0MSwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxMTk5MjYsIDQzOTQ5LCAxMjAwNDgsIDc4MDk5LCAxMjcwODUsIAorICAgIDEyNzk2NCwgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCA2NjcyOCwgMTgxNiwgCisgICAgNDM5NTIsIDQyNTMzLCAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgNDM5NTAsIDc4MTA1LCA0OTAxLCAxODIxLCA0Mzk1MSwgCisgICAgNTc4LCAzNjUzLCAxMDA0NzYsIDc5MSwgOTE2MiwgNjk3NywgNzQxOTYsIDc4ODg5LCA3MDE2MCwgMCwgNzM3MzEsIDgzNTQsIAorICAgIDQzNTkwLCAxMTkzMDMsIDk4MzQ1MSwgNzU1NywgMTE5MTA4LCA2NzM3OCwgODIzNCwgNzI0MSwgMTI4NjA4LCAxMTM3MzUsIAorICAgIDExOTE2NywgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNjY4MDcsIDY3MywgMTk0ODY3LCAKKyAgICA2NDM5NywgMTE5MjM1LCA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTE5MzIyLCAyNDQ4LCA3ODA4NSwgMTAyNjcsIAorICAgIDg0MjQsIDI0NTIsIDc4MDgzLCA2NzIxNywgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDEyNTExNywgNzEzMDIsIDQ0MDgsIAorICAgIDQxMjIsIDY3NzIsIDExMDM5LCA4NzIzLCA2NTg5NiwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDcxOTA0LCAyNDM4LCAKKyAgICA2NDg1NSwgMTE5MzAwLCAxMTkyOTksIDExNzUsIDEyOTEzNiwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgCisgICAgMTE1MjEsIDc3MjMsIDEyODYzOSwgMTI1MjQyLCAwLCA0MTk1MiwgOTMwMjMsIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIAorICAgIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIDEyOTYzLCA3MDMyMCwgNjE4OSwgNDEyNSwgCisgICAgMTMxNCwgMTIxMzMsIDEyMDM0MCwgMTE4ODczLCAxMjcxLCA5ODM1NTYsIDEyOTExMiwgNjYwMjQsIDQxNDgyLCAyNDM0LCAKKyAgICA5MjA0LCA5MTc1NTgsIDM4NzksIDE5NDg2OCwgMTI5NzgsIDQxNjYsIDQ1NzQsIDEyODExMSwgNzU2NywgNzQ1OSwgNzgxMjgsIAorICAgIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIDcwMTU0LCA1NzU5LCAxOTQ4NjksIDEyMTQxMywgNDEzODgsIDY0NDQ2LCAKKyAgICA0MTM5MiwgNjQyODgsIDQxMzg3LCA2NzIwMSwgODcwNiwgNTU1MiwgNjg4MzcsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgCisgICAgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCA3NDA2NiwgNjcyNTEsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIAorICAgIDc4MTEzLCA2NjY1LCAxMTExNSwgMTIxMDM1LCA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCA2NDQ0NywgNTU1NSwgCisgICAgNzgwODgsIDY2ODEwLCA3ODA5MSwgMCwgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCA2NzI4OCwgNjc5OTUsIDE5NDk4NiwgCisgICAgNjU2LCAxMjg1NzQsIDY1MDM3LCA0NTc3LCA2NDYyNCwgMTI5MzU0LCAxMjAyNjQsIDcxOTEyLCAxOTQ5MDgsIDQyNjksIAorICAgIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAxOTUwODUsIDkyMjczLCA2NjU4MCwgNzc5OTIsIDY2NjgzLCAKKyAgICAxMDU1NCwgMzQxNywgMTAxMDU3LCA2ODMyLCA1MDk4LCA5MTc3NjgsIDE5NDY2OCwgNzA0MDMsIDUwOTcsIDQ5MzUsIDk4NDgsIAorICAgIDEwMzgxLCAwLCA2NzI5NiwgNzI3OTgsIDM2NTEsIDAsIDY3Mjk0LCA3MDg0OCwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCAKKyAgICA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgMTI0NywgMTAwMzQsIDEyMTM0MCwgNTA5OSwgNzgzNzMsIAorICAgIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDExOTk1MywgNzgzOCwgOTgzNjY5LCAxMjg2NTUsIDE5NTA0MCwgMTE5MTQyLCAKKyAgICA5MDMxLCA3MDgyOSwgNzg0MjcsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIDE5NDkyMywgOTE1NCwgOTExOCwgCisgICAgMTI2NTQzLCAxMTk1ODYsIDI2NzYsIDIyNzcsIDEyODQyMiwgNjgyMzcsIDYxOTAsIDg1OTksIDEyNTExOCwgNjk5MTgsIAorICAgIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDcxOTAzLCAxMjEyOSwgMTI2NjUxLCA4NDgxLCA4MzA2OCwgNjIwMiwgCisgICAgNjc3MTEsIDEwOTIwLCAxMTM3MjYsIDUyMDMsIDE5NTAzOSwgMTI5MzI4LCA1MTA4LCA1MTA3LCA2NTgxOCwgNjYwMTksIAorICAgIDk3NjIsIDExMjA1LCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIDIwNywgMTIxMjA2LCA0Mjc1LCA3NDgxOSwgCisgICAgODU0LCA2ODE0NywgNzQzODEsIDY2ODE2LCA3ODc4NiwgNTEwMywgMTI3ODYxLCA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIAorICAgIDY5ODExLCAxMDA5MTEsIDcxMzM5LCAxMDE1NywgMTk0NjEyLCA0MzAzNCwgMTE0MzgsIDY0Njc0LCAwLCA3MDE1OCwgCisgICAgNjg0MzEsIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIDQxMzY3LCA1MTA1LCA2NTI2NiwgNjk3MjAsIAorICAgIDY0NzYsIDUxMDQsIDE5NDczNCwgMzA0LCAzMTc2LCA3ODg3MSwgNzAxNDksIDkzMiwgMTEzNjgzLCA2NTY3LCAyMzgsIAorICAgIDY5NjU2LCA3ODQzMiwgMTk0NTk1LCAxOTkwNSwgNDM4NTAsIDE5NTAxNSwgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgNjczMDIsIAorICAgIDQyMDU1LCA5OTEyLCA2NTkzOSwgMTA2NzAsIDc0MDkzLCAxMzI3MywgMCwgMTI1NTIsIDkzMDM5LCA4ODAzLCAzMDksIAorICAgIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDcwMTcxLCAxMjU2OCwgMTI3OTE3LCAxMjU1MywgMTA4MTQsIAorICAgIDQzMjc1LCA2OTUwLCA5NzEyLCA2ODY4MCwgNDM5NzAsIDEyNjUzNSwgNjUxNjUsIDkyNzI1LCA5ODM4MjIsIDY2NDY2LCAKKyAgICAxMjQ5ODYsIDEyNzc4NCwgMTI4NTM0LCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAKICAgICAwLCA0MTc1NCwgNjc2MzUsIDkzNzAsIDI3MjAsIDE5NDYwMCwgNjg0NjIsIDgyMzIsIDExODgxNywgMTIxMDU2LCAzMjIyLCAKLSAgICAxMjE0MzksIDEyMTEzNywgMCwgNjY2NjMsIDk4MzA0NywgOTMwNjcsIDEwODM0LCA5ODMxMjcsIDAsIDY1NzMyLCA5NDA5NSwgCi0gICAgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDEyMDczNCwgNjczMDksIDc3ODEsIDQxMzgzLCA2NDU2OCwgNjczMTEsIDEyMDczOCwgCisgICAgMTIxNDM5LCAxMjExMzcsIDAsIDY2NjYzLCAxMjc5MjgsIDkzMDY3LCAxMDgzNCwgMTI3NTQ3LCAwLCA2NTczMiwgOTQwOTUsIAorICAgIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxMDEwMjEsIDY3MzA5LCA3NzgxLCA0MTM4MywgNjQ1NjgsIDY3MzExLCAxMjA3MzgsIAogICAgIDEyMDc3LCA3NDQzMywgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCA2NzI2MCwgMjQ3OSwgNjczMDYsIAogICAgIDM2MzIsIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIDY3MjYzLCA3NDg0NCwgNjc2MzksIDM2MzYsIDY3ODk0LCAzNjUwLCAKLSAgICA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIDY4ODI2LCAzNjQwLCAxMjcxOTAsIAotICAgIDQyMzIxLCA3Mjg0LCA5Mjg4MCwgMTE4OTg3LCAxOTQ5NTAsIDE5NDk0OSwgNzQxMTUsIDE5NDk1MSwgMTI2NjQ5LCAKLSAgICAxOTQ5NTMsIDQyMDgwLCAyNTI5LCAwLCA5ODM3ODQsIDY2MDEwLCA0MjA4MywgNzQ5NTIsIDY4Mzk4LCAxOTQ5NTcsIAotICAgIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgCi0gICAgMCwgNjc4MzUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIDkyNSwgCi0gICAgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDEyMDk4OCwgNDE5ODQsIDkyMTcsIDEyODM3MiwgOTI1MTAsIDkyMjE4LCAKLSAgICA5MTg2LCAyMDY3LCA0MDE2LCA5ODM4MDMsIDAsIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCA5Mjk4NSwgNjk4ODAsIDUxODQsIAotICAgIDQyMDc4LCAxOTQ2MDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMTIxMzM0LCAxMjcxMDQsIAotICAgIDgxMiwgMzYxNSwgNzI0MDEsIDUxNzgsIDQ0MDAwLCA5MjQzNiwgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgCi0gICAgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAxMjc3OTMsIDY3NjMxLCA0MjYxNiwgMTIwNjcwLCAyNDQyLCAKLSAgICAxMDcwMywgNjczMTcsIDY3NjMyLCA2NzMxNiwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIDczOTMzLCA2NzYyNiwgCi0gICAgNDI0MDEsIDE5NDg2NSwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCA3NDkwNiwgODU0MiwgMTMxNDUsIDE5NDk2MywgCi0gICAgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDcxMjIwLCA0MTExNywgMCwgOTI1ODAsIAotICAgIDEyODYyNCwgNzQ5MzksIDY3NjI0LCAxMjc5NzYsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgCi0gICAgOTE3ODgzLCAxMzE4LCA2NDczMSwgNzgwMDQsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCA5ODM4NTgsIDEyNzU2LCAKLSAgICA2NTI1OSwgMCwgOTgzNzgxLCAxMjc1MiwgNTgzMywgMTQzMiwgMTEyNDYsIDQxODgzLCA3MzkxMiwgOTc5OSwgOTE3ODkzLCAKLSAgICA0MTg4NiwgMjQ4MCwgMTI3OTA2LCAyMDYyLCA2NzMyNiwgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIDE5NDU4NywgMTI0OTY5LCAKLSAgICAxMjExLCAwLCAxMjA5NzEsIDY3MjY5LCAxMTg4MzIsIDEyMzE4LCAxMjkwMjQsIDExMzc5NiwgNjgwMDUsIDEwNjIyLCAKLSAgICA5ODM3NzksIDAsIDY4ODIxLCA2NTY2LCA3MTE5NSwgMCwgNzM3ODAsIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAwLCAKLSAgICA4Mjg0LCAxMzA4MSwgMTE5MjA2LCAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgODMwMDMsIDQyNjUsIDY2NDIsIDM5NzcsIAotICAgIDc0MTg2LCA0MTc3OCwgODM2LCA5Mjk0NywgMjQ4OCwgMTI1MDk2LCA0NTgyLCAwLCA3MTQyNiwgNDE3NzcsIDEyOTI2LCAKLSAgICA5ODMzNzksIDc1MjgsIDEwNTUwLCAxMTM3NjEsIDkyNzA2LCA5ODM5NTUsIDEwOTYxLCA5Mzk3NywgMTM3NCwgNjQ4NzgsIAotICAgIDExOTAxNCwgNjc3MjAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgOTE3NjA0LCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMTk1MDQ3LCAKLSAgICA0MDAsIDEyNTk3LCAxMjA1ODYsIDEyODA5NywgMTI5MDcxLCA2NjYxLCA5MTc5NjEsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAKLSAgICAwLCA3MTMwMSwgMTI3MjkyLCAzNDczLCA3NzE4LCAxMTM3NTUsIDY4ODE0LCAwLCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAKLSAgICAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIDE4ODcsIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCAxMTg5MDIsIAotICAgIDY3NTcsIDY0MzUxLCAxNTQ0LCA2NzE1NiwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgNjcwODgsIDYxNDYsIDc0MDMxLCA3NzEsIAotICAgIDEyMDY4MiwgMCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgMTIyMDAsIDY2NDIzLCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAKLSAgICAxMTk1NjAsIDEyMzAwLCA2NzA4OSwgMTE0OTEsIDk3MjQsIDEwMzQxLCA5ODM3NzMsIDk1MjQsIDc0OTAsIDExMzg5LCAKLSAgICA3NDg5LCAzMzc5LCAwLCA3NDg3LCAxOTQ2MjQsIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgCi0gICAgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAKLSAgICAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCA5ODM3ODUsIDYwMTcsIDY1MzExLCA3NDkzNSwgCi0gICAgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAxOTQ4ODIsIDEyMDU0NCwgMCwgMTI3OTUwLCAKLSAgICA5MjY2MCwgOTgzMzU2LCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMTIxMTMzLCAyMTM5LCA0MjU2LCAKLSAgICAxMjA3NzYsIDc0MzgwLCA0MzgzNiwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgNjY2NiwgNzA1MDgsIDY1MTM4LCAxMTkzNTUsIAotICAgIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMTI1MTM0LCAxMjAzMjEsIDEyNzI4MywgCi0gICAgOTgzMzk2LCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCA2Njg0OSwgMTI1MTQxLCAwLCA4MzMwLCAwLCAwLCAKLSAgICA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIDgzMDAxLCAzOTAyLCAwLCAxNzcwLCA0Mzk1OSwgMTI1MDY3LCAxNTYwLCA0Mzk1OCwgCi0gICAgOTIxNjcsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDY3MDkyLCAxMTE4LCA3MTMzNCwgNzQ4ODgsIDAsIDEwODEsIAotICAgIDc0MzYsIDExMTQ3LCA3MjUyLCA3MDA5MywgNTk5NiwgNjk5MjEsIDQ5MDMsIDY4MTQyLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAKLSAgICAxMzMwLCAxMjg2MTMsIDcxMzksIDAsIDEyMDQ3LCA0MTM4NCwgMCwgMCwgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIAotICAgIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAwLCA5ODM3NDEsIDEyNzE1LCA2ODAwMiwgMTk0NTc2LCA4MzI1NiwgCi0gICAgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgNzg0OTAsIDAsIDEyNjk4NCwgNjgwMDEsIDkzMzQsIAotICAgIDkyNzA1LCA3MDgwMCwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA0MzQ5NCwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAKLSAgICAxMjEwMTAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMTI3ODkwLCA2ODE3OCwgCi0gICAgMzExNywgNTQ2MCwgMTIxNDIzLCAxMjg3MTcsIDk4MzM4OSwgMCwgNDIyNzksIDEyNzE0MiwgMTI2NTAzLCA3ODQxNSwgCi0gICAgOTgzMjI4LCA2ODUyNCwgOTgzMzg2LCAxMzI0OCwgMTI1MDI3LCA5ODM4NDMsIDQzOTU2LCAxMjg0MTUsIDk4MzE1MywgCi0gICAgMTIxMDA5LCA1NjYzLCA3MTEyMCwgMTI4NDcyLCAxMjg5NTgsIDAsIDI0ODIsIDE0NzEsIDE5NDU4MywgMTEzNzQ3LCAKLSAgICA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgNzE0MjcsIDEyMzc0LCAxMjEzNTcsIDEyNzA2NywgMCwgMTE4ODI4LCAKLSAgICAyNDYwLCA3MTg4MiwgMTE5NDQsIDEyMzc2LCA5MjM0MiwgNjQ2NzksIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCAKLSAgICA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCA5ODMzOTEsIDcxODc5LCA1MzksIDAsIDEyMDMwMiwgNzAxMjAsIDM4NTMsIAotICAgIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCA5MjMyNCwgMCwgODY1OSwgMCwgMTI0NzQsIDY3MjQxLCA5NTAzLCAKLSAgICAxOTQ5NjksIDI0NzgsIDEyMDI0OCwgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIDY5NjMzLCA4Mjk2NiwgMTI0NzAsIDkyNjQwLCAKLSAgICA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAxMTM2ODcsIDk4MzU3OSwgMTI4MTkwLCAKLSAgICA2OTY3MiwgODIxMywgNDM4MjQsIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCAxOTQ5NjcsIDc4ODg1LCAxMTkyNDMsIAotICAgIDY4MjM1LCAxMjA1ODIsIDc4NTQ3LCAxMTM3MDksIDEwMzAxLCAxMDMzMywgMTAzOTcsIDExOTA0NCwgMCwgNzM3OTEsIDAsIAotICAgIDgzMDMwLCAwLCAxMjE0ODIsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCAKLSAgICA3NDkwMywgMTIwOTI3LCAxMjIxMCwgNzIyMSwgNDIxNDcsIDc0ODY4LCA3NDU1MCwgNzEyMTUsIDY0NzQ3LCAxMTg4NDEsIAotICAgIDEyODA4NiwgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgCi0gICAgNDE5NzMsIDM1OTEsIDQxOTY5LCA4MzAwOCwgMjQ1MywgMTE4ODk5LCA5MjY2NiwgNjQ3MDUsIDcxMDY4LCAwLCAxMDM0OSwgCi0gICAgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDEyOTE3NSwgODMxNiwgMTI5MTc0LCAwLCA5NDA2MCwgNjg3LCAKLSAgICA5MzA1NSwgMTI5MDc0LCAwLCAxODQwLCAxMjc4MDksIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgCi0gICAgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCA0MjMyMywgNzQ2NDAsIAotICAgIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQ1LCAKLSAgICA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk1MDEzLCAxMDQ0NSwgMTIxMzIyLCA5Mjk2OSwgNjY3MTcsIDI2MTQsIAotICAgIDkxMjUsIDcxMTI1LCAxNzI5LCAxMjkwMzQsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTI0OTI5LCAKLSAgICA2NTE5NCwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIAotICAgIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzM3NjQsIDQwMzksIDY0MywgMzA4NiwgOTI1MzMsIDQyNDQ4LCA0MjI5OSwgCi0gICAgNTgsIDEyMDA4NCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAwLCAwLCA5ODM2MjMsIDQ1MzAsIDQyNDA5LCA3MTI2LCAKLSAgICAxOTQ1NzUsIDI3MjEsIDEyMDA3MywgMTE5MDk2LCAxOTkyOSwgMTE4OTQxLCAxMjg3OTcsIDkyOTc1LCA0MjQyLCA0MjY0LCAKLSAgICAxMjAwNzcsIDEyMDUzMCwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgOTgzMTk5LCAKLSAgICA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDk4MzI0MCwgNTUyODAsIDQyMTc0LCAxMjc5NTQsIDQyNDMwLCAKLSAgICAwLCA5ODM0NTIsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgNjgzMTQsIDY2NjY3LCAxMTkzNTEsIAotICAgIDE5NDk4MiwgMTIxMTcyLCA0MjIwMCwgNDI1NjYsIDcwMDAwLCAxMjg5MjgsIDUwODgsIDY5NDgsIDAsIDg1MjQsIDEyNTA0MCwgCi0gICAgMCwgMTIzODUsIDAsIDc0OTI2LCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCA2NTAzOSwgNjUwMzgsIDEyMzkyLCAKLSAgICA2NTAzNiwgODA2NCwgMTI3NTU4LCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgCi0gICAgNDIwOTEsIDExOTY1NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDEyNzg5NywgNjM4OTYsIDEyMDYxLCAKLSAgICA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAxMTk5MzQsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIAotICAgIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCA3NDYyOSwgMTIzNzksIDEyNzEwNywgOTI5MzAsIAotICAgIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCA3MDA4OSwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA2NjQxMywgCi0gICAgNDEyMjAsIDEzMDMyLCA5Mjk4MCwgNTg0LCAxMjkzMywgNDMxNzcsIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIDI5MzUsIAotICAgIDg2OTgsIDEyNjY1LCAwLCAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDAsIDYzOTAxLCAwLCAKLSAgICAzNjU3LCAxMTk2MTEsIDY1MjAyLCA2MDAwLCAxMTM3ODYsIDEyNDI2LCAxMjEwNTgsIDExOTkzNSwgNDE3NDAsIDEyNDI4LCAKLSAgICA0MTI4MywgNDE5MTYsIDExOTIxMCwgMTI4MzE4LCAwLCAxMjQyOSwgNjcyNywgOTgzOTQ4LCA3NTYyLCAxMjUxMjksIDUxNzAsIAotICAgIDk4MzkxNSwgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIAotICAgIDYxNjIsIDc4MzIwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgMTI0MjIsIDQxODMyLCA0MzksIDMwNzIsIAotICAgIDkxNzgyOCwgNDIyMDcsIDc0NTQ5LCAxMTc5NiwgNDA5NzAsIDQxODMwLCAxMjUwMjEsIDcwMTUxLCA4MzA4LCA5MTc3OTcsIAotICAgIDcwODA3LCAxMTkyNTgsIDY3ODY0LCAxMTM2OTYsIDkxNzgwMCwgMTIzMzYsIDQxMzUsIDY3MjMxLCAzNDEsIDI3MjcsIAotICAgIDQxMjksIDM1MzksIDAsIDYzODYxLCAwLCA3OTEzLCAwLCA2Mzg1OSwgNDEzMSwgNjM4NjgsIDEyOTA4NSwgNjM4NjcsIAorICAgIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgNjg4MjYsIDM2NDAsIDkyNDExLCAKKyAgICA0MjMyMSwgNzI4NCwgOTI4ODAsIDExODk4NywgMTk0NzgzLCAxMDA4OTcsIDc0MTE1LCAxOTQ5NTEsIDEyNTE5OSwgCisgICAgMTk0OTUzLCA0MjA4MCwgMjUyOSwgOTgzOTA5LCA5ODM0NzEsIDY2MDEwLCA0MjA4MywgNzQ5NTIsIDY4Mzk4LCAxOTQ5NTcsIAorICAgIDY3NjE5LCA2NjM2NywgMTAwODk5LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgCisgICAgMCwgNjc4MzUsIDEwMDkwMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyMDI2NSwgCisgICAgOTI1LCAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMTIwOTg4LCA0MTk4NCwgOTIxNywgMTI4MzcyLCA5MjUxMCwgCisgICAgOTIyMTgsIDkxODYsIDIwNjcsIDQwMTYsIDEyODg0OCwgMTI5MTgyLCAzODEsIDEyOTM2LCA5ODM3MzYsIDQyMDc3LCAKKyAgICA5Mjk4NSwgNjk4ODAsIDUxODQsIDQyMDc4LCAxOTQ2MDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCAKKyAgICA2NzYzMywgMTIxMzM0LCAxMjcxMDQsIDgxMiwgMzYxNSwgNzI0MDEsIDUxNzgsIDQ0MDAwLCA5MjQzNiwgNzg4MDcsIDUxODgsIAorICAgIDc0Mjg3LCA2NzYyOSwgMzYwNSwgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAxMjc3OTMsIDY3NjMxLCA0MjYxNiwgCisgICAgMTIwNjcwLCAyNDQyLCAxMDcwMywgNjczMTcsIDY3NjMyLCA2NzMxNiwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIAorICAgIDczOTMzLCA2NzYyNiwgNDI0MDEsIDE5NDg2NSwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCA3NDkwNiwgODU0MiwgCisgICAgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDcxMjIwLCAKKyAgICA0MTExNywgMTAwODkzLCA5MjU4MCwgMTI4NjI0LCA3NDkzOSwgNjc2MjQsIDEyNzk3NiwgMTI5MCwgMTAwNTkxLCA2NTU4NSwgCisgICAgMjcxNSwgODA2LCA2NTIwOCwgNDE4ODQsIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDc4MDA0LCAwLCAwLCA2NjMyNSwgMzQ2NSwgCisgICAgMjQwNSwgOTI0MCwgOTgzODU4LCAxMjc1NiwgNjUyNTksIDAsIDk4Mzc4MSwgMTI3NTIsIDU4MzMsIDE0MzIsIDExMjQ2LCAKKyAgICA0MTg4MywgNzM5MTIsIDk3OTksIDkxNzg5MywgNDE4ODYsIDI0ODAsIDEyNzkwNiwgMjA2MiwgNjczMjYsIDY0OTQsIDU1MzcsIAorICAgIDc4NjU2LCA5ODMyNzUsIDcwNjYxLCAxMjQ5NjksIDEyMTEsIDAsIDEyMDk3MSwgNjcyNjksIDExODgzMiwgMTIzMTgsIAorICAgIDEyOTAyNCwgMTEzNzk2LCA2ODAwNSwgMTA2MjIsIDk4Mzc3OSwgMCwgNjg4MjEsIDY1NjYsIDcxMTk1LCAwLCA3Mzc4MCwgCisgICAgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDEyOTA1MiwgODI4NCwgMTMwODEsIDExOTIwNiwgMzU4OSwgNDIwNTEsIDQwMzUsIAorICAgIDY0OTIsIDgzMDAzLCA0MjY1LCA2NjQyLCAzOTc3LCA3Mjc0MywgNDE3NzgsIDgzNiwgOTI5NDcsIDI0ODgsIDEyNTA5NiwgCisgICAgNDU4MiwgMCwgNzE0MjYsIDQxNzc3LCAxMjkyNiwgNzI3MDgsIDc1MjgsIDEwNTUwLCAxMTM3NjEsIDkyNzA2LCA5ODM5NTUsIAorICAgIDEwOTYxLCA5Mzk3NywgMTM3NCwgNjQ4NzgsIDExOTAxNCwgNjc3MjAsIDQyMzg5LCAyMjczLCAyMjg2LCA5MTc2MDQsIAorICAgIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAxOTUwNDcsIDQwMCwgMTI1OTcsIDEwMDQ4MiwgMTI4MDk3LCAxMjkwNzEsIDY2NjEsIAorICAgIDkxNzk2MSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIDExOTYxNywgNzEzMDEsIDEyNzI5MiwgMzQ3MywgNzcxOCwgMTEzNzU1LCAKKyAgICA2Njc0MiwgMTI1MTM5LCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIDE4ODcsIAorICAgIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCA5Mjc2MywgNjc1NywgNjQzNTEsIDE1NDQsIDY3MTU2LCA2NzY2LCA2NDY3NywgCisgICAgMTIwNzE2LCA2NzA4OCwgNjE0NiwgNzQwMzEsIDc3MSwgMTIwNjgyLCAxOTQ2NTAsIDEyODEyLCAxMzE2OCwgNDIyNzIsIAorICAgIDEyMjAwLCA2NjQyMywgNzkwNCwgMTI4NzE1LCA5NTMsIDEyOTE3LCA3MjcwNCwgMTIzMDAsIDY3MDg5LCAxMTQ5MSwgOTcyNCwgCisgICAgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDEyODc3NSwgNzQ4NywgNzI3MTYsIDQ3MSwgCisgICAgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgCisgICAgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCAKKyAgICA5ODMzOTAsIDYwMTcsIDY1MzExLCA3NDkzNSwgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAKKyAgICAxMDA5MzYsIDEyMDU0NCwgMCwgMTI3OTUwLCA5MjY2MCwgOTgzMzU2LCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCAKKyAgICA5MjM0MSwgMTIxMTMzLCAyMTM5LCA0MjU2LCAxMjA3NzYsIDc0MzgwLCA0MzgzNiwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgCisgICAgNjY2NiwgNzA1MDgsIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCAKKyAgICA3NDg2NSwgMTI1MTM0LCAxMjAzMjEsIDEyNzI4MywgMTI3ODcyLCA3MTg2LCA3Mjc1MSwgMTIwNTU1LCA3Mjc2MywgNDQ1LCAKKyAgICAxMTkwMjgsIDY2ODQ5LCAxMjUwMzEsIDkxNzg0MCwgODMzMCwgMCwgMTI1MDE4LCA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIAorICAgIDgzMDAxLCAzOTAyLCAwLCAxNzcwLCA0Mzk1OSwgMTAxMDM5LCAxNTYwLCA0Mzk1OCwgOTIxNjcsIDQ1ODQsIDczODQzLCAKKyAgICAxMjI5MTEsIDExNzEyLCAxMDg2NiwgNjcwOTIsIDExMTgsIDcxMzM0LCA3NDg4OCwgOTgzNDc2LCAxMDgxLCA3NDM2LCAKKyAgICAxMTE0NywgNzI1MiwgNzAwOTMsIDU5OTYsIDY5OTIxLCA0OTAzLCA2ODE0MiwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgCisgICAgMTI2NjAwLCA3MTM5LCAwLCAxMjA0NywgNzY3NSwgOTgzODQ3LCAxMjg3OTcsIDE4NDgsIDQzMzQsIDYzMjQsIDQxOTc1LCAKKyAgICA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMTEzNzk1LCA3MjgwNywgMTI3MTUsIDY4MDAyLCAxOTQ1NzYsIAorICAgIDgzMjU2LCAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA3ODQ5MCwgMTI5MTQwLCAxMjY5ODQsIAorICAgIDY4MDAxLCA5MzM0LCA5MjcwNSwgNzA4MDAsIDcwMTAxLCA3OTc1LCAxMDA5MTAsIDc3OTU3LCA5MjE0LCA0MzQ5NCwgNDg4NCwgCisgICAgNjY1OTcsIDY5NzMyLCAwLCA5Mjk1OCwgNjMxMywgNjU1MTMsIDY5ODU3LCAxMDA5MDgsIDEyNzc5OSwgMTI4NzU3LCAyMzQ1LCAKKyAgICA0MzY5NywgNDYzLCAwLCAxMjEyODEsIDY4MTc4LCAzMTE3LCA1NDYwLCAxMjE0MjMsIDEyNzk1NSwgOTgzMzg5LCAwLCAKKyAgICA0MjI3OSwgMTI3MTQyLCAxMjY1MDMsIDc4NDE1LCA5ODMyMjgsIDgyMjEsIDk4MzM4NiwgMTMyNDgsIDEyNTAyNywgCisgICAgOTgzODQzLCA0Mzk1NiwgMTI4NDE1LCAxMjkwOTMsIDEyMTAwOSwgNTY2MywgNzExMjAsIDEyODQ3MiwgMTI4OTU4LCAKKyAgICAxMjc4NTQsIDI0ODIsIDE0NzEsIDE5NDU4MywgMTEzNzQ3LCA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgNzE0MjcsIAorICAgIDEyMzc0LCAxMjEzNTcsIDEyNzA2NywgMCwgMTE4ODI4LCAyNDYwLCA3MTg4MiwgMTE5NDQsIDEyMzc2LCA5MjM0MiwgCisgICAgNjQ2NzksIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCA5ODMzOTEsIAorICAgIDcxODc5LCA1MzksIDEwMDkzMywgMTAwOTMyLCA3MDEyMCwgMzg1MywgNjUxODAsIDcyNzMwLCAxMDA5MzksIDEwMDkzOCwgCisgICAgOTIzMjQsIDk4Mzc0MiwgODY1OSwgMCwgMTI0NzQsIDY3MjQxLCA5NTAzLCAxMDA5NDEsIDI0NzgsIDEwMDk0MywgNDE2MiwgCisgICAgMTAwOTQ1LCA0MjYwLCAxMjk1MywgNjk2MzMsIDgyOTY2LCAxMjQ3MCwgOTI2NDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgCisgICAgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIDExMzY4NywgOTgzNTc5LCAxMjgxOTAsIDY5NjcyLCA4MjEzLCA0MzgyNCwgCisgICAgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDkyMjQ5LCA3ODg4NSwgMTE5MjQzLCA2ODIzNSwgODMzODgsIDc4NTQ3LCAKKyAgICAxMDA5MjEsIDEwMzAxLCAxMDMzMywgMTAzOTcsIDEwMDkyNSwgMTAwOTI4LCA3Mzc5MSwgMTIwMjM4LCA4MzAzMCwgMCwgCisgICAgMTIxNDgyLCAxMTkxMjMsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgNzQ5MDMsIAorICAgIDEyMDkyNywgMTIyMTAsIDcyMjEsIDQyMTQ3LCA3NDg2OCwgNzQ1NTAsIDcxMjE1LCA2NDc0NywgMTAwOTE5LCAxMjgwODYsIAorICAgIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAKKyAgICAzNTkxLCA0MTk2OSwgODMwMDgsIDI0NTMsIDExODg5OSwgOTI2NjYsIDY0NzA1LCA3MTA2OCwgMCwgMTAzNDksIDEwNDEzLCAKKyAgICA0MzU5MSwgNDE5NjIsIDMyMDIsIDc0MzUzLCAxMjkxNzUsIDgzMTYsIDEyOTE3NCwgMCwgOTQwNjAsIDY4NywgOTMwNTUsIAorICAgIDEwMDcwNSwgMCwgMTg0MCwgMTIxMjI0LCA2ODY3MSwgMTExMjEsIDQ4ODMsIDI4NSwgNDcyMywgMTExNzUsIDkyNjkyLCAKKyAgICA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgOTE3NzcwLCA0MjMyMywgNzQ2NDAsIDk3NDMsIAorICAgIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQ1LCA0MzQzNywgCisgICAgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk0NTY3LCAxMDQ0NSwgMTIxMzIyLCA5Mjk2OSwgNjY3MTcsIDI2MTQsIDkxMjUsIAorICAgIDcxMTI1LCAxNzI5LCAxMjkwMzQsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTAwOTE1LCA2NTE5NCwgCisgICAgNjYyMDEsIDEwMDkxNiwgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgNjM4NzksIAorICAgIDQ5NDMsIDUxNTAsIDczODg5LCA3Mzc2NCwgNDAzOSwgNjQzLCAzMDg2LCA5MjUzMywgNDI0NDgsIDQyMjk5LCA1OCwgCisgICAgMTIwMDg0LCAxMDAzNTUsIDEwMTAyNiwgNjM4NzMsIDg0OTEsIDE5NDY0MywgMTAwODkxLCA5ODM2MjMsIDQ1MzAsIDQyNDA5LCAKKyAgICA3MTI2LCAxMDA4OTQsIDI3MjEsIDEyMDA3MywgMTE5MDk2LCAxOTkyOSwgMTE4OTQxLCAxMjczMjYsIDkyOTc1LCA0MjQyLCAKKyAgICA0MjY0LCAxMjAwNzcsIDEwMDkwMiwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgCisgICAgMTIwMjI1LCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDExOTE4NiwgNTUyODAsIDQyMTc0LCAxMjc5NTQsIAorICAgIDQyNDMwLCAxMjc4MzUsIDk4MzQ1MiwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCA2ODMxNCwgCisgICAgNjY2NjcsIDExOTM1MSwgMTAwNjc3LCAxMjExNzIsIDQyMjAwLCA0MjU2NiwgNzAwMDAsIDEwMDg4MSwgNTA4OCwgNjk0OCwgCisgICAgMCwgODUyNCwgNzI3MzYsIDAsIDEyMzg1LCA5MTc4NTUsIDc0OTI2LCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCAKKyAgICA2NTAzOSwgNjUwMzgsIDEyMzkyLCA2NTAzNiwgODA2NCwgMTI3NTU4LCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIAorICAgIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDc0MDY3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgCisgICAgMTAwODg1LCA2Mzg5NiwgMTIwNjEsIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDExOTkzNCwgMTI4NTg2LCA2ODQ0OSwgCisgICAgNzQ2MSwgNzM5MDEsIDEyNDQsIDMzMSwgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMTI4Nzc4LCA4MTEyLCAwLCA2NTg1MiwgCisgICAgNzQ2MjksIDEyMzc5LCAxMjcxMDcsIDkyOTMwLCA0MTk2NCwgNDIyMDgsIDYzODQzLCAyMDg0LCA0MTk2NSwgNzAwODksIAorICAgIDY1ODY2LCA0MzI3LCA2Mzg0OCwgNjM4NDAsIDY2NDEzLCA0MTIyMCwgMTMwMzIsIDkyOTgwLCA1ODQsIDEyOTMzLCA0MzE3NywgCisgICAgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgODY5OCwgMTI2NjUsIDEwMDg3NywgMTkzMCwgMTAwODc5LCAKKyAgICA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDEwMDU3MSwgNjM5MDEsIDEwMDU4NywgMzY1NywgMTE5NjExLCAKKyAgICA2NTIwMiwgNjAwMCwgMTEzNzg2LCAxMjQyNiwgMTIxMDU4LCA3NDAxMywgNDE3NDAsIDEyNDI4LCA0MTI4MywgNDE5MTYsIAorICAgIDExOTIxMCwgMTI4MzE4LCAwLCAxMjQyOSwgNjcyNywgMTAwODczLCA3NTYyLCAxMDA4NTMsIDUxNzAsIDc4MjQ5LCA0MTc1NSwgCisgICAgNjc2LCAxMDA4NTYsIDY2NzA0LCA2NjY2NCwgOTk3OCwgNjY0OTEsIDM1MzYsIDgzMDQ3LCA5NzUyLCA5MjM5NywgNjE2MiwgCisgICAgNzgzMjAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgMzA3MiwgOTE3ODI4LCAKKyAgICA0MjIwNywgNzQ1NDksIDExNzk2LCA0MDk3MCwgNDE4MzAsIDEyNTAyMSwgNzAxNTEsIDgzMDgsIDEwMDY5NCwgNzA4MDcsIAorICAgIDExOTI1OCwgNjc4NjQsIDExMzY5NiwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjcyMzEsIDM0MSwgMjcyNywgNDEyOSwgMzUzOSwgCisgICAgMTAwODYxLCA2Mzg2MSwgNzA2ODMsIDc5MTMsIDEwMDc2NiwgNjM4NTksIDQxMzEsIDYzODY4LCAxMDAzNjYsIDYzODY3LCAKICAgICA0MTMzLCAxMTM3MSwgMjEwLCA0NjAwLCA5ODM4OTcsIDc0NTYwLCA0MTM3LCA4MDgyLCA3ODUwNiwgMTE5MDYyLCA3ODUwNCwgCiAgICAgNjcwNCwgNDU5MSwgMTI4MDI5LCA0Mzg3MywgMTIwNzUzLCA5NjgwLCAxMjkzNywgMTIwNjIzLCA1NjEsIDEyMTU5LCAxOTUsIAogICAgIDY4MzIxLCA0MTUwMSwgMTk0NTgxLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIDEyODMwNiwgNDE0OTksIAotICAgIDkzMDY4LCA3MTA0NywgNDIyNDIsIDQxNDk4LCA5MTc3OTQsIDQyMDI1LCA3ODU2NSwgNjU4MDUsIDQyNDYzLCA2NzE4MiwgCisgICAgOTMwNjgsIDcxMDQ3LCA0MjI0MiwgNDE0OTgsIDEyODE3OCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDY3MTgyLCAKICAgICAyOTI0LCA2NzE4MywgMTIwNTEwLCAwLCA5ODM5NzIsIDkyNzY2LCA3Mzk0MSwgNjcxODYsIDQyMzMwLCA2NzE4NywgMzk2OSwgCi0gICAgMTIxNDA1LCAwLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgNDIwODYsIDEyNjYxNSwgMjIxOSwgMTIxMzQ5LCAwLCAKLSAgICAxMjg4MDEsIDY3MTgwLCAxMjc1NjksIDMyNywgMTIxMjc3LCA5MDQyLCA5MTc3NzcsIDkxNzc3NiwgNjUxNDgsIDEyNDMzLCAKLSAgICA5MTc3ODEsIDEyMDIyMiwgODMxMjksIDEyNDMxLCA4NjY4LCAxMjQzNCwgNjcxOTQsIDExMzgxMiwgNTk5OSwgNzUwMTMsIAotICAgIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCA3NDA3OSwgODIxMiwgMTI4MDY1LCAxMTM3NTQsIAotICAgIDQyNDIzLCAxMTkwNjYsIDE5NDYxMywgNzIzOTgsIDY2NzA5LCAxMjEwNjEsIDg4MTEsIDkyNywgOTI1MzIsIDAsIDEyNDM2LCAKLSAgICAxMjAwODcsIDQyMDIxLCAwLCA2NzY0NCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAxMjc5NzIsIAotICAgIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIDk4MzE4NCwgMCwgMTk5MTQsIDEyMTc5LCAxMjg3NDAsIDIyOTYsIAotICAgIDEyODkzMiwgNjM4MzYsIDYzODMyLCA5MTc3NzMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgMzQ0NCwgNjM4MTcsIDExMTc4LCAKLSAgICA5MTc1ODQsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCA2ODI5NSwgMTIwNzU2LCAxOTQ5MjIsIDY3Mjg1LCA1NjY0LCAzOTcyLCAKLSAgICAxMjA4OTEsIDEyODU4MywgMTI5NDA4LCA2NzI4NCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAxMDgxNiwgOTE3NzY5LCAKLSAgICAxMTIxMCwgMTI0MTgsIDg1ODYsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgNjgwODEsIDExOTg0NywgNDU5NiwgNjYzMzksIAotICAgIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIDgyODcsIDY4MjE5LCAxOTUwMTcsIDY4MTA4LCAxMTQzLCAKLSAgICAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCA5MTc1OTQsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAxMTk5MzEsIAotICAgIDExNzI0LCAxMjc3ODcsIDAsIDcxMTIyLCAxMjY2MTksIDAsIDk4MzY2MSwgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAKLSAgICAxMTQwMCwgNDM5NDMsIDE5NDc5OSwgNjY4MzMsIDEyODIzOSwgOTgzNzA3LCA5MjU1NywgOTM5NzYsIDEyNzUyMywgCi0gICAgMTIwMTkwLCAxMzI0LCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgOTgzODczLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIAotICAgIDQyNTE0LCA2ODY1MSwgMTI4MjEwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIAotICAgIDMwMTgsIDE5NDgwOSwgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgODUxOSwgMTIxMjI2LCAzMDE0LCAKLSAgICA1MDgxLCA2NTg1MywgMTIwNzE1LCAxOTQ5OTIsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCAKLSAgICA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDExMTA1LCA4NDA3LCA2NzE2MywgMTA4MDUsIDg1MTgsIDEwNzc5LCAKLSAgICAxMjAxODgsIDcxMzAzLCAxMjEyNDAsIDEyMzY3LCA0MjE3MCwgMCwgNjcyOTAsIDYyOSwgMTkyNCwgMTI3MDk4LCAxMjAzNywgCi0gICAgNjcxNTgsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIDEyMDgxNSwgMTIzNjksIDEwNjQ5LCAKLSAgICA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDEyMTEwOSwgMTI3MzAwLCA2NTA3NSwgMCwgMTEwMDcsIAotICAgIDcwODUxLCA2NjY1OSwgOTI2MDcsIDkxNzkzMywgNjY2ODQsIDEyODA2MywgMzQzNCwgNDk1NCwgMTkwNCwgOTI2NzksIAotICAgIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIAotICAgIDE5NDkyNiwgNDYxLCA5ODAzLCA0MjI4MiwgNDUwNCwgMTUwNSwgMTI3ODkzLCA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAKLSAgICAwLCA1NTIzNiwgOTI2NTksIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIDg3MjIsIDEyMDgwNSwgNDEzMjcsIDk4MzczMiwgCi0gICAgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIDc0OTMwLCA3MjEsIDEwMTgyLCA5MTA4LCAKLSAgICA3MTMxMSwgMCwgMTE5MTg1LCA0MjIyOSwgNzQ5NjMsIDEyMTAxNCwgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgCi0gICAgOTQxMDQsIDc4NTcxLCA3NDg4OSwgNzEzMjgsIDEyODk1NSwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgNzQwMzcsIDAsIDg1NzgsIAotICAgIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgCi0gICAgMTE3MjMsIDAsIDc0MTIwLCAxMjY2NDIsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDAsIDY3MTc5LCAKLSAgICA2NzE2OCwgMTE3NDIsIDI0MTksIDY3MTc3LCAxMTQ5MywgMTIzMzQsIDkyNDk0LCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIAotICAgIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIAotICAgIDQyMDAyLCAxMjQwNCwgNjgwOTIsIDc0OTI4LCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgCi0gICAgODYxLCA2NzY5OSwgNzQ4ODAsIDY4Mjk3LCA5ODM4MDcsIDQzNzU3LCA0MzM3MCwgMTI5Mjk4LCAwLCAxMTk1NiwgMTI0OTY3LCAKLSAgICAxMjEyNjMsIDcwODE1LCA5NjE2LCA2NjMxLCA5MjMzOCwgMTI4MTYsIDQzNzU5LCA0MjIxOCwgMTI3MTAsIDY4Njc0LCAKLSAgICAxMjcyMSwgNDEwMSwgNjYxODUsIDAsIDU5OTIsIDc2MTYsIDE5NTA0NCwgMCwgMTI1NzcsIDkzMDE3LCAxMjgyODksIDg1MywgCisgICAgMTAxMDcyLCA5ODM5NjEsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCA0MjA4NiwgMTI2NjE1LCAyMjE5LCAKKyAgICAxMjEzNDksIDAsIDEyODgwMSwgNjcxODAsIDEyNzU2OSwgMzI3LCAxMjEyNzcsIDkwNDIsIDEyMDg0MywgOTE3Nzc2LCAKKyAgICA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTIwMjIyLCA3NDIwNiwgMTI0MzEsIDg2NjgsIDEyNDM0LCA2NzE5NCwgMTEzODEyLCAKKyAgICA1OTk5LCA3NTAxMywgNzcxMiwgMTI0MzIsIDEyMDg4NSwgNDM2NTMsIDE3MjYsIDEwMTUsIDc0MDc5LCA4MjEyLCAxMjgwNjUsIAorICAgIDExMzc1NCwgNDI0MjMsIDExOTA2NiwgMTk0NjEzLCA3MjM5OCwgNjY3MDksIDEyMTA2MSwgODgxMSwgOTI3LCA5MjUzMiwgCisgICAgOTgzNjM3LCAxMjQzNiwgMTAxMDU2LCA0MjAyMSwgMTk0NjEwLCA2NzY0NCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgCisgICAgMTAxMDU4LCAxOTUwMTYsIDEwMDU2NiwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgMTAwODcwLCAwLCAxOTkxNCwgCisgICAgMTIxNzksIDEwMDU2OSwgMjI5NiwgMTAwNTk2LCA2MzgzNiwgNjM4MzIsIDcyNzkzLCAxMDk2NywgNjM4MTYsIDI1OTQsIAorICAgIDM0NDQsIDYzODE3LCAxMTE3OCwgOTE3NTg0LCA0MTUwMywgMTIwMDg3LCAxMTI2NSwgNjgyOTUsIDEyMDc1NiwgMTAwNjAwLCAKKyAgICA2NzI4NSwgNTY2NCwgMzk3MiwgMTAwOTg1LCAxMjg1ODMsIDEyOTQwOCwgNjcyODQsIDEyNDE2LCA5MTc3NjQsIDExOTYwOCwgCisgICAgMTA4MTYsIDEyNzI4OSwgMTEyMTAsIDEyNDE4LCA4NTg2LCAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDY4MDgxLCAKKyAgICAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAxMjQxNywgNjYwMDEsIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCA4Mjg3LCA2ODIxOSwgCisgICAgMTk1MDE3LCA2ODEwOCwgMTE0MywgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgOTE3NTk0LCAxMTg4ODQsIAorICAgIDkwMjEsIDEyMDc4MywgMTE5OTMxLCAxMTcyNCwgMTI3Nzg3LCAxMjAxOTEsIDcxMTIyLCAxMjY2MTksIDAsIDk4MzY2MSwgCisgICAgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAxMTQwMCwgNDM5NDMsIDEwMDY3NCwgNjY4MzMsIDEwMDgwNSwgMTI3Nzc5LCAKKyAgICA5MjU1NywgOTM5NzYsIDExOTg0NCwgMTIwMTkwLCAxMzI0LCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgMTAxMDYyLCA3NzE1LCAKKyAgICAyMjcxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMTI4MjEwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgCisgICAgNjk4MjUsIDMwMDcsIDE0NDgsIDMwMTgsIDE5NDgwNywgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgCisgICAgODUxOSwgNzI3MTEsIDMwMTQsIDUwODEsIDY1ODUzLCAxMjA3MTUsIDE5NDk5MiwgNjgwMTQsIDY5OTUxLCA1MDc5LCAKKyAgICA2NDgwMiwgNDIyMTAsIDQ1OTcsIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAxMjM3MSwgMTExMDUsIDg0MDcsIDY3MTYzLCAKKyAgICAxMDgwNSwgODUxOCwgMTA3NzksIDEwMDgwMSwgNzEzMDMsIDEyMTI0MCwgMTIzNjcsIDQyMTcwLCAxMjgyMTUsIDY3MjkwLCAKKyAgICA2MjksIDE5MjQsIDEyNzA5OCwgMTIwMzcsIDY3MTU4LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAKKyAgICAxMDA4ODgsIDEyMzY5LCAxMDY0OSwgNjc5ODEsIDUwNzcsIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCA1MDc1LCAxMjExMDksIAorICAgIDEyNzMwMCwgNjUwNzUsIDAsIDExMDA3LCA3MDg1MSwgNjY2NTksIDkyNjA3LCAxMDA2MDcsIDY2Njg0LCAxMjgwNjMsIAorICAgIDM0MzQsIDQ5NTQsIDE5MDQsIDkyNjc5LCA1MjY2LCAxMjY5ODAsIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgCisgICAgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxMjA1ODksIDQ2MSwgOTgwMywgNDIyODIsIDQ1MDQsIDE1MDUsIDEyNzg5MywgCisgICAgNjMyNSwgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgMCwgNTUyMzYsIDkyNjU5LCA2NjQ2MSwgNTE3NywgNDEzMjQsIDEyMDU1LCAKKyAgICA4NzIyLCAxMjA4MDUsIDQxMzI3LCAxMjkzMzIsIDY2Njk1LCA0MTE0LCA0MDksIDQzODMsIDg5MDAsIDg5NDgsIDQxMzI1LCAKKyAgICA3NDkzMCwgNzIxLCAxMDE4MiwgOTEwOCwgNzEzMTEsIDAsIDM0MTksIDQyMjI5LCA3NDk2MywgMTAwNjI3LCA1OTk4LCAwLCAKKyAgICA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCA5NDEwNCwgNzg1NzEsIDc0ODg5LCA3MTMyOCwgMTAwNjI5LCA0MTU3NiwgNDIyMTUsIAorICAgIDc4NTcwLCA3NDAzNywgMCwgODU3OCwgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCAKKyAgICA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAxMTcyMywgOTgzNDM5LCA3NDEyMCwgMTE5MDAwLCA2NTA3NiwgOTM4LCAKKyAgICA0MzQxNCwgNzM4NTQsIDExNzM3LCA5NzIxLCA5ODMyNjIsIDY3MTc5LCA2NzE2OCwgMTE3NDIsIDI0MTksIDY3MTc3LCAKKyAgICAxMTQ5MywgMTIzMzQsIDkyNDk0LCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgCisgICAgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDEyMjkyMiwgNDIwMDIsIDEyNDA0LCA2ODA5MiwgCisgICAgNzQ5MjgsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCA4NjEsIDY3Njk5LCA3NDg4MCwgCisgICAgNjgyOTcsIDk4MzgwNywgNDM3NTcsIDQzMzcwLCAxMjkyOTgsIDEyODMwNywgMTE5NTYsIDEyNDk2NywgMTIxMjYzLCAKKyAgICA3MDgxNSwgOTYxNiwgNjYzMSwgOTIzMzgsIDEyODE2LCA0Mzc1OSwgNDIyMTgsIDEyNzEwLCA2ODY3NCwgMTI3MjEsIDQxMDEsIAorICAgIDY2MTg1LCA5ODMyNjksIDU5OTIsIDc2MTYsIDE5NTA0NCwgOTgzMzkyLCAxMjU3NywgOTMwMTcsIDEwMDg4MCwgODUzLCAKICAgICA0MjY5MywgMTk0NjQ3LCAxMTkwMjcsIDk4MzI4NCwgNTAxNiwgNDM1MzUsIDYzODkzLCA0MjgzNSwgOTQ5MSwgOTE3OTEzLCAKLSAgICAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCA2Njg3NSwgOTkwMCwgNzc1MCwgOTE3OTQ2LCAKKyAgICAxMDA4NzUsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDY2ODc1LCA5OTAwLCA3NzUwLCA5MTc5NDYsIAogICAgIDEyNzg5NiwgNzQ2MTksIDExOTI2NSwgOTgzNTg3LCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAxMjgxNTEsIDEyMTc3LCAKLSAgICAxMTk4NDMsIDk4MzI2MCwgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCAKKyAgICAxMTk4NDMsIDExODg5MSwgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNTI0NSwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCAKICAgICA3NDc2OCwgODk3MSwgNzg1OTMsIDQzMTEzLCA5NzAyLCA2Njg1MiwgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCAKLSAgICA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIDExOTA0MCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAxOTQ5NTQsIAotICAgIDEzMDUzLCAxMTg5NzQsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIDc4NTgzLCAKLSAgICA5MjQzMSwgMTIxMDM3LCAxMjY2NDQsIDE5NDkxNSwgNzI2NywgMTI3NDc5LCA3NDgzMywgMTI4MTgxLCA1OTkzLCAyODE5LCAKLSAgICAxMjg3ODgsIDEyNzA2LCA3MTA2MywgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDAsIDEzNjMsIDk4MzU4MCwgCi0gICAgNDI5MjMsIDYzOTEwLCA2Mzk5NiwgMzA3NywgMTIwMDE4LCAwLCAxNTEyLCA2OTkyOSwgMTI1ODksIDQxNDc5LCAxMjgzMTMsIAotICAgIDcxMDQ4LCA0MzMzOSwgNzM3NzYsIDk4MzYsIDEyMDcyNywgOTgzOTA5LCA0MTQ4MSwgNDMzMzUsIDc4MzIsIDQyMzQzLCAKLSAgICAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCA4MzE3NywgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgNzQ5MzIsIAotICAgIDc0MDQ0LCA0MjMwNywgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDgzNDI4LCAxMjM4OSwgMTIxMDc5LCA5MjM2NiwgNDE5OTYsIAotICAgIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNDM4NDksIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgMTE2NTMsIAotICAgIDQxMTYsIDEyMzkxLCA2NjE5MywgMTIxMzgzLCA0OTM5LCAxMjM4NCwgMCwgMTI3Nzc4LCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgCi0gICAgNzAyODUsIDY3Mzk4LCAxMjg4MjAsIDEyNjQ5LCAxMjAwMjIsIDAsIDgyNDcsIDUwNywgOTEsIDIwNDIsIDEyMDc3NSwgCi0gICAgNDM2NDMsIDEyMTQ0NSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgMTE5ODEzLCA3NzQsIDExOTgyOSwgNzc4NDAsIDExOTgxNSwgCi0gICAgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCA3ODM3NywgOTgzMjM3LCA5MTc2MjgsIAotICAgIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgOTY4NywgNDE2ODEsIAotICAgIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgMCwgNzUzNCwgCi0gICAgMTIyMTksIDIyMjYsIDcwNDk5LCA0MjgxMCwgMTA0OTIsIDEyMTUxMCwgMTIxMTQ4LCAxMjE1MDksIDQzMTE5LCAwLCAKLSAgICA3ODUzNywgMTI0MDMsIDI1MDAsIDcwMTQ1LCA4MzI0NiwgNDg5OSwgMTI3MjksIDk4MzM5OSwgMTk0NjE5LCA3NDExMywgCisgICAgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAxMTkwNDAsIDEzMDU0LCAxMjM5NCwgNjYxODIsIDAsIAorICAgIDE5NDkzNywgMTMwNTMsIDExODk3NCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgCisgICAgNzg1ODMsIDkyNDMxLCAxMjEwMzcsIDEyNjY0NCwgMTk0OTE1LCA3MjY3LCAxMjc0NzksIDc0ODMzLCAxMjgxODEsIDU5OTMsIAorICAgIDI4MTksIDEyODc4OCwgMTI3MDYsIDcxMDYzLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgOTgzNjczLCAxMzYzLCAKKyAgICA5ODM1ODAsIDQyOTIzLCAxMzEwOSwgNjM5OTYsIDMwNzcsIDEyMDAxOCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCA0MTQ3OSwgCisgICAgMTAxMDMxLCA3MTA0OCwgNDMzMzksIDczNzc2LCA5ODM2LCAxMTk2MDcsIDkxNzgxNywgNDE0ODEsIDQzMzM1LCA3ODMyLCAKKyAgICA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgODMxNzcsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIAorICAgIDc0OTMyLCA3NDA0NCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCA4MzQyOCwgMTIzODksIDEyMTA3OSwgOTIzNjYsIAorICAgIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDQzODQ5LCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIAorICAgIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDEyMTM4MywgNDkzOSwgMTIzODQsIDEyMDE4NCwgMTI3Nzc4LCA0MTY4NiwgCisgICAgNjM5MDUsIDExOTYwMSwgNzAyODUsIDY3Mzk4LCAxMDA4ODQsIDEyNjQ5LCAxMjAwMjIsIDAsIDgyNDcsIDUwNywgOTEsIAorICAgIDIwNDIsIDEyMDc3NSwgNDM2NDMsIDEyMTQ0NSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgNzA2ODAsIDc3NCwgMTE5ODI5LCAKKyAgICA3Nzg0MCwgMTE5ODE1LCA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDc4Mzc3LCAKKyAgICA5MTc4MjMsIDkxNzYyOCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTAxMDE5LCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCAKKyAgICA5Njg3LCA0MTY4MSwgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTE5MDg5LCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAKKyAgICAwLCA3NTM0LCAxMjIxOSwgMjIyNiwgNzA0OTksIDQyODEwLCAxMDQ5MiwgMTIxNTEwLCAxMjExNDgsIDEyMTUwOSwgNDMxMTksIAorICAgIDAsIDc4NTM3LCAxMjQwMywgMjUwMCwgNzAxNDUsIDgzMjQ2LCA0ODk5LCAxMjcyOSwgOTgzMzk5LCAxOTQ2MTksIDc0MTEzLCAKICAgICAyMzQzLCA0MTAzLCAxOTk0NiwgNzQxMTIsIDc3ODUxLCAxMzExMiwgMTI5MDQ2LCA3NDgzNCwgMTI4NTksIDcwMDg3LCAKICAgICAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgNDM2NDEsIDEyODE4MywgMTI2NDUsIDUxNDYsIAogICAgIDExMzIwLCA2ODQxMCwgNjc0OCwgNjUwNDAsIDE5NDc4NiwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgCi0gICAgNTE0NywgMTI1MDE5LCAwLCA3NDUyNCwgMTI4MzU2LCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIDQ5NzYsIAotICAgIDY0MTc2LCAwLCA2NzYxMCwgODI0MSwgMCwgNzc4NjgsIDQyMDYsIDAsIDc4NjYyLCAxMjkwMjksIDEyODI5OCwgNjcyNzcsIAotICAgIDEwMTM4LCA2NzIzOCwgMTI4Nzg1LCA4ODk3LCAxMjAyMzQsIDE0MjIsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgCi0gICAgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAxMjA5MzAsIDExMjMsIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCAKLSAgICA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAxMjkxMjYsIDQ0MDIsIDk5NzAsIDEyNDAyLCAKLSAgICA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCA5MjM4NCwgNDQwMDcsIDEyODU2MywgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIAotICAgIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDEyMTA5MiwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgNzAxMTksIDkwOTMsIDEyODUzNSwgNjgzMywgOTI1NzQsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgCi0gICAgODI5NiwgNjc1MCwgNjY4NTUsIDEyODQxMCwgOTU5NCwgMTIwMzA4LCAxMjA5MzgsIDQzNTI3LCAxMjExOTIsIDcyNywgCi0gICAgNzQxOTIsIDkzMDYwLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCAKLSAgICA5ODMyMzQsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgNzEyMDksIDkyMzQzLCA5ODM4NzIsIDEyMzY2LCAxMDk2MywgNjA2NiwgCi0gICAgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMTIxMDQ1LCA2NDQ3OCwgMTk0NzAxLCAxMDgwMywgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgCi0gICAgOTI0NzMsIDk4MzI0NywgMTIwNzEyLCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgNjM5NjUsIAotICAgIDEyMDMwNSwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgCi0gICAgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgCi0gICAgMTkzMywgNjk2NTUsIDk1NjQsIDEyMDAxNiwgOTI0MzUsIDczODY2LCAwLCAxMjEyNDEsIDI0ODcsIDY3NjE0LCAzMTIxLCAKLSAgICAxODA0LCAzMzExLCA2NzYxNSwgNzAwODEsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDkyNzY5LCAxMjAwMjAsIDE5NDU5NCwgCi0gICAgNjgyMDAsIDY2NzUsIDEyODE0NCwgMCwgNjc1OTIsIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCAKLSAgICA1MTAsIDY0NjYzLCAwLCAxMjE1MDAsIDQ1NjEsIDIxMDEsIDEzOTgsIDkxNzk3MiwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgCi0gICAgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMTIwNTA1LCA4NDAsIDk4MzI4MywgNjk5OTIsIDcxMDEsIDY5NjcsIDAsIAotICAgIDE5NDg5OCwgOTc5NiwgMTI3MDAwLCAzMzMsIDY5ODkxLCAwLCA4MTQ0LCAyMTE3LCAwLCAxMjExNTUsIDEyNDA2LCAKLSAgICA5MTc5NzAsIDE5OTMxLCA2NjM4OCwgNjY3OCwgNzc2OSwgOTgzMTI0LCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgCi0gICAgNDMxMDEsIDk5ODEsIDAsIDQwOTg2LCA0MTI3LCA2NjQ4NywgOTgzNTc2LCA0MjIwMiwgMTI3NTQsIDE5NTAyMSwgOTgzMTkxLCAKLSAgICAwLCA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDExMTg0LCAKLSAgICA0NTMzLCAxMjcyMTIsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgNjgyMjUsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgCi0gICAgMTI4OTEyLCAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgOTgzMzU0LCA3MDI5NiwgNjQ0OSwgOTQ5NCwgCi0gICAgMTIwMzEzLCAwLCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCA5ODMzNDEsIDAsIDM0MzYsIAotICAgIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgNjY0MDcsIDY5OTkxLCA2NzU5OCwgMCwgMCwgMCwgCi0gICAgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMTk0OTkzLCAxMjE0NTgsIDEyNzg1OSwgODUwMCwgNDIyMjIsIDEyMDE0MiwgCi0gICAgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMTI3ODMzLCA2NzYwNiwgMTE5MDgzLCAKLSAgICAxMjEwODMsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCA3NzkxMiwgNjM4NDEsIDk2MTMsIAotICAgIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgCi0gICAgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIAotICAgIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDgzNDg1LCA2NzIyMywgNjY1NzYsIDEyNzkxNiwgMTI3ODMxLCAKLSAgICAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgMTI3MjkxLCA2ODA0MCwgMTE5MTksIDY0OTYyLCAKLSAgICAxMjcwODEsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIDgyMywgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAKLSAgICAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIAotICAgIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgNjQzMDQsIDEyNzM2OSwgNTE1MiwgMTEwNDgsIAotICAgIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDcwMjc2LCA5MjY2OSwgNzEzMzIsIDEyMDE1OCwgNDI1ODcsIAotICAgIDQyMjE0LCA0MTM5NCwgMTExODgsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIAotICAgIDEyMDEzMSwgNjg0MjMsIDExOTIxOCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTI4NDYwLCA0MTM5OCwgNzM4MiwgCi0gICAgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgMTMxNTksIDEyMTQwLCA5NTcyLCA5ODMxMzIsIAotICAgIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIDEyNTA2OSwgMTI1MDIwLCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIAotICAgIDk5NzcsIDAsIDEyMTI4MywgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCAKLSAgICA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDkyOTY4LCAxOTQ2MTAsIDY0NTE0LCAKLSAgICAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgOTgzNTU1LCA1ODUwLCA3NTgsIDc1MzYsIDEyMDUzOCwgOTIyMzQsIAotICAgIDQxNDQxLCAxMDY5MywgNjQwMDYsIDc1MDQ0LCA2NDAwNSwgNDA1OCwgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAxMjgxNzYsIAotICAgIDExOTA1MCwgMCwgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAxMjg2ODUsIAotICAgIDEwNzc0LCA2NzEwNCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDEyNzAwNiwgMTg1MiwgMzA1NywgNjQwNDYsIDczNzQ0LCAKLSAgICA2NDAzNCwgNjQwMzksIDY4MDY1LCAwLCA5ODM2OTAsIDkyOTEzLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAzNDk2LCAKLSAgICAwLCAxMjEzMjMsIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAotICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTI5MDc1LCAxOTQ4OTcsIAotICAgIDE2ODIsIDQzODYzLCAxOTQ4OTYsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDY3NzE3LCA3NDM1OCwgNzM4MTQsIDExNDEyLCAKLSAgICA2NzY4LCAxMDcyOCwgMTE5OTgyLCA3MTMxNiwgNzEwOTksIDQzMzExLCA2NDk2NiwgMTE1NzcsIDEyNzgzMiwgNDMwNDAsIAotICAgIDE4MzMsIDExNTc2LCA3MDA1NCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTE5MzM0LCA3NTM1LCAKLSAgICA4MDg1LCA0MjUyNSwgMTE5OTQ0LCA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxMjA5OTcsIAotICAgIDY0NDgzLCA2NTY5MywgOTgzNzExLCA5ODM0OTUsIDEyODYxNSwgNjk2OTUsIDQyMjQwLCAxMjg1ODcsIDEyMTM1MiwgCi0gICAgNDI4NjQsIDEyNjQ5OCwgNDMxNjgsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIAotICAgIDAsIDY2MTk3LCA5ODM0NzQsIDEwOTg2LCA2NDY4MywgMTI4NTQ5LCAxMjg0NTQsIDM0NTUsIDEyNjUzMCwgMCwgOTg3OSwgMCwgCi0gICAgMCwgNDE1OCwgNzAzMDcsIDY4MTY2LCAwLCAxMjgwOTEsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgODMzNjgsIDUxNDIsIAotICAgIDI0MDcsIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCA4MzM3MiwgNTUyMTcsIDcxNDU3LCA2Mzg3MCwgNDMxNjMsIAotICAgIDAsIDAsIDEyOTg1LCA0Mjg2NywgMTgzNCwgMTIwMzg3LCA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgNzAzODUsIAotICAgIDg2NjIsIDEyMDMyNCwgMCwgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgODMzNTksIAotICAgIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCA5MTc1MDUsIDE4MjgsIDc0NDc0LCAxMjAwMTksIDY4MDc4LCA4NTMxLCAxMjQ5OSwgCi0gICAgNjI4MCwgMTIzMjQsIDcyNDM0LCA2NTIzOCwgNjgzNzQsIDQ4MzIsIDY1NTczLCA0Mzg1MSwgNjI3OSwgMTI1MDgsIDEyOTA0LCAKLSAgICAxMjUwMiwgOTE2MSwgMTI4NTU1LCAxNjIwLCAxMTI0NywgMzYwMSwgMTIxMzAxLCA4MzM1MywgNjcyNDYsIDYwOSwgMTE1NTUsIAotICAgIDgzNDU2LCAxMjQ5NiwgMTE5ODAsIDc0MTgxLCA0MzQzLCAxMjUwNSwgODI5NjAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgCi0gICAgMTI4MTE0LCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIDAsIDkzMDMyLCA4MzA5NSwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIAotICAgIDEyNjk2LCAxMjgyNTYsIDkxNzYwMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgNDI4MTgsIAotICAgIDEyNjYzMiwgNzAzMDYsIDEyMDQ5MCwgNzAzMzMsIDExOTEzNywgMTUwNiwgNDM1NjIsIDExOTkxMywgOTI0OTEsIDY4MDc2LCAKLSAgICAxMjY1MSwgMTIwOTE3LCA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgMTk0NjMzLCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgCi0gICAgMTE4ODQ0LCAxOTQ4MjMsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMTIxMDc3LCA5ODMyOTcsIAotICAgIDEyMDMzLCA0MjE3OCwgMTk0NzU0LCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAxMTQzMCwgMCwgNzAyOTksIDEyMTUwOCwgCi0gICAgMTI0OTUxLCA2ODMyNCwgMzE3OCwgMTI2NDg4LCAxMjg2MzMsIDkyNzA0LCA5MTc1NjYsIDkwODAsIDEyMDk0MywgNjc2OTcsIAotICAgIDE5NTEwMSwgNjgyMDksIDcyNDE4LCAxMTA4MiwgNzE0ODUsIDU2OTksIDgzMzczLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIAotICAgIDExOTExMiwgNzA0NzcsIDExMTcwLCA2ODY2MiwgMTI4MTIwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDgzMzg0LCAxMTQ4NywgCi0gICAgNjc4NTgsIDEyNDY0LCA5ODMzNjUsIDQzMDQ1LCA5ODM4MzEsIDcwMzQ1LCA0MzM0NSwgOTgzMjc2LCAxMDc3MCwgMTE4OTk0LCAKLSAgICA2ODA3LCA0NjUsIDk4MjksIDY5OTk3LCA3NDM0OCwgMCwgNDMzNDYsIDgxMTYsIDc5NSwgMTIwMzUyLCA3MjQxMiwgMTI0NjIsIAotICAgIDEwOTMwLCAxMDgzMSwgMTIxMzIwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgOTMwNTYsIDgzMDQ3LCA5ODM5MzMsIDEyNDY4LCAKLSAgICA4NjA3LCAxMDA4LCAxMTg5NDgsIDEwMDkyLCAxMjUxMjIsIDEyODg1MSwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgCi0gICAgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAxMTIwMiwgMTIwMjQzLCAxMjgzNDUsIDEzMjIzLCA3NDkzNCwgNjQ1OTUsIAorICAgIDUxNDcsIDEyNTAxOSwgOTE3NjI0LCA3NDUyNCwgMTI4MzU2LCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIAorICAgIDQ5NzYsIDY0MTc2LCA3NDk2NiwgNjc2MTAsIDgyNDEsIDk4MzkwMCwgNzc4NjgsIDQyMDYsIDEyNzM1MiwgNzg2NjIsIAorICAgIDEyOTAyOSwgMTI4Mjk4LCA2NzI3NywgMTAxMzgsIDY3MjM4LCAxMjg3ODUsIDg4OTcsIDEyMDIzNCwgMTQyMiwgODM1NywgCisgICAgNDEyNCwgNzc4NjIsIDY1ODM2LCAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDEwMDkxMiwgMTIwOTMwLCAxMTIzLCA5NjMsIAorICAgIDQxNTUzLCAxMDEyMCwgMTI0MDUsIDEyMDE1MCwgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgNzk0NSwgCisgICAgMTI5MTI2LCA0NDAyLCA5OTcwLCAxMjQwMiwgOTMwNjIsIDQyMzkyLCAxMzA1LCAxMjQwOCwgOTIzODQsIDQ0MDA3LCAKKyAgICAxMjg0NjUsIDEyNzIxNiwgNDE0NjQsIDEyNDExLCAxMjk2OSwgNjcyNjgsIDQxNDY1LCAxMjEwOTIsIDg1MjgsIDE1NzUsIDAsIAorICAgIDYzOTU1LCAxNjUsIDMwMjQsIDQxNDY3LCAxMTkxNjMsIDcwMTE5LCA5MDkzLCAxMDA2MjAsIDY4MzMsIDkyNTc0LCA2Mzk1OCwgCisgICAgMTIwOTMxLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgODI5NiwgNjc1MCwgNjY4NTUsIDEyODQxMCwgOTU5NCwgMTIwMzA4LCAKKyAgICAxMjA5MzgsIDQzNTI3LCAxMDA2MTEsIDcyNywgNzQxOTIsIDkzMDYwLCA1ODA1LCAwLCA2NzI2LCAxMjczODcsIDQyMTc2LCAKKyAgICAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDk4MzIzNCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCA3MTIwOSwgCisgICAgOTIzNDMsIDk4Mzg3MiwgMTIzNjYsIDEwOTYzLCA2MDY2LCAxMzI5LCAwLCAzMDUyLCA5MjIwLCAxMjEwNDUsIDY0NDc4LCAKKyAgICAxOTQ3MDEsIDEwODAzLCA0MTMyLCAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMTAwODc2LCAxMTg5MjMsIDc0ODM3LCAxMjAxNTUsIAorICAgIDE0OTksIDEyMTI5OSwgODA1NSwgNDI3NDAsIDYzOTY1LCA3NDMzOCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgCisgICAgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIAorICAgIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgMTkzMywgNjk2NTUsIDk1NjQsIDEyMDAxNiwgOTI0MzUsIDczODY2LCAKKyAgICA5ODM5MzIsIDEyMTI0MSwgMjQ4NywgNjc2MTQsIDMxMjEsIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIAorICAgIDEyMjIwLCA2NzYxNiwgOTI3NjksIDEyMDAyMCwgMTk0NTk0LCA2ODIwMCwgNjY3NSwgMTI4MTQ0LCA5ODMyODIsIDY3NTkyLCAKKyAgICAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCA5ODM3MDksIDY0NjE5LCA1MTAsIDY0NjYzLCA5NDAzMywgMTIxNTAwLCAKKyAgICA0NTYxLCAyMTAxLCAxMzk4LCAxOTUwNTEsIDkyNTU0LCA3NDAzNCwgNDE1NjksIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIAorICAgIDEyMDUwNSwgODQwLCA5ODMyODMsIDY5OTkyLCA3MTAxLCA2OTY3LCAwLCAxOTQ4OTgsIDk3OTYsIDEyNzAwMCwgMzMzLCAKKyAgICA2OTg5MSwgMTI3MTQ1LCA4MTQ0LCAyMTE3LCAwLCA3MDcxMiwgMTI0MDYsIDkxNzk3MCwgMTk5MzEsIDY2Mzg4LCA2Njc4LCAKKyAgICA3NzY5LCA5ODMxMjQsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCA0MzEwMSwgOTk4MSwgNzQxNTcsIDQwOTg2LCAKKyAgICA0MTI3LCA2NjQ4NywgOTgzNTc2LCA0MjIwMiwgMTI3NTQsIDE5NTAyMSwgOTgzMTkxLCAxMDA2MjgsIDk0MDk3LCA2NzU5NCwgCisgICAgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTExODQsIDQ1MzMsIDEyNzIxMiwgCisgICAgNzQwMDMsIDY0OTAsIDk4Mzg1NywgMTIwMzgsIDAsIDAsIDY4MjI1LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDEyODkxMiwgCisgICAgMTk0OCwgNjk4NDEsIDAsIDk1MiwgMTI4MjM1LCAxMjUxMDcsIDk4MzM1NCwgNzAyOTYsIDY0NDksIDk0OTQsIDEyMDMxMywgCisgICAgNzA3MzgsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDEyODg3MSwgOTE3NjIxLCAzNDM2LCAKKyAgICA2Njc4MCwgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgNjY0MDcsIDY5OTkxLCA2NzU5OCwgOTgzMzM2LCAKKyAgICAwLCAwLCA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAxMjExODksIDEyMTQ1OCwgMTI3ODU5LCA4NTAwLCA0MjIyMiwgCisgICAgMTAxMDQ3LCA3Mzc0MywgMTIwMTQzLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAxMDA2OTcsIDEyNzgzMywgNjc2MDYsIAorICAgIDExOTA4MywgMTIxMDgzLCA0MjIxNywgMTMxMDIsIDEyODczNiwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCA3NzkxMiwgCisgICAgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIAorICAgIDEwMjI4LCA2NDk1NywgMTEyODEsIDEyODMxMiwgMzgwNywgMTQ2OSwgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgCisgICAgNDIzNzIsIDcyNzg2LCA5NTk4LCA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDgzNDg1LCAKKyAgICA2NzIyMywgNjY1NzYsIDEyNzkxNiwgMTI3NTY4LCAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI1MjM1LCAxMjg0NiwgCisgICAgMTI3MjkxLCA2ODA0MCwgMTE5MTksIDY0OTYyLCAxMDA2OTUsIDQzNzM5LCAxMDEwNDEsIDg1MTEsIDk0NjAsIDgyMywgCisgICAgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCAKKyAgICA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgCisgICAgOTgyMSwgNjQzMDQsIDEyNzM2OSwgNTE1MiwgMTEwNDgsIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDEyNzg1MiwgCisgICAgNDMyMywgNzAyNzYsIDkyNjY5LCA3MTMzMiwgMTIwMTU4LCA0MjU4NywgNDIyMTQsIDQxMzk0LCAxMTE4OCwgNDc2MywgCisgICAgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgMTIwMTMxLCA2ODQyMywgMTE5MjE4LCAxMDc3MSwgCisgICAgMjg3NiwgNzQwNzQsIDkyNTMwLCAxMjg0NjAsIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCAKKyAgICA0MTM5NiwgMTIwNTI0LCAxMzE1OSwgMTIxNDAsIDk1NzIsIDEyOTA4NSwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgCisgICAgMTI1MDY5LCAxMjUwMjAsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgOTk3NywgMCwgMTIxMjgzLCA2NTc1OSwgMTA3NjUsIAorICAgIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIDk1MjEsIDk1ODksIDY0NzU1LCAxMjUyMDAsIAorICAgIDY0MDIwLCAxMjY2MDQsIDEwNDY0LCAxOTQ5ODAsIDkyOTY4LCA3Mjg0NywgNjQ1MTQsIDExNTI4LCA2NDAyNCwgMTI4MDcyLCAKKyAgICA2NzksIDY0MDEzLCAxMjkzMTQsIDU4NTAsIDc1OCwgNzUzNiwgMTIwNTM4LCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgCisgICAgNzUwNDQsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDEyODE3NiwgMTE5MDUwLCAwLCAxOTUwMjMsIAorICAgIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDEyODY4NSwgMTA3NzQsIDY3MTA0LCA0MjIwMSwgCisgICAgMTI0MjEsIDExOTEwOSwgMTI1MjcwLCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIDY0MDM0LCA2NDAzOSwgNjgwNjUsIAorICAgIDEyNzA3NSwgOTgzNjkwLCA3Mjc3MywgOTIzMjIsIDc2NDUsIDEyODU0LCA3Mjc3MiwgMzQ5NiwgMCwgMTIxMzIzLCAKKyAgICAxMTM3MTAsIDkxMDIsIDYyNywgMTI3Nzk1LCA2MTU4LCA4MzI3LCA3NDU1MywgNjY2MzIsIDEyNDE5LCAxMzMwOSwgMTE1NzAsIAorICAgIDEyNzgxMSwgMTk5NjAsIDExNjk2LCA5MjkxMywgMTAxOCwgMTE4OTcwLCAxMjkwNzUsIDE5NDg5NywgMTY4MiwgNDM4NjMsIAorICAgIDE5NDg5NiwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgNjc3MTcsIDc0MzU4LCA3MzgxNCwgMTE0MTIsIDY3NjgsIDEwNzI4LCAKKyAgICAxMTk5ODIsIDcxMzE2LCA3MTA5OSwgNDMzMTEsIDY0OTY2LCAxMTU3NywgMTI3ODMyLCA0MzA0MCwgMTgzMywgMTE1NzYsIAorICAgIDcwMDU0LCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxMTkzMzQsIDc1MzUsIDgwODUsIDQyNTI1LCAKKyAgICAxMTk5NDQsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDEyMDk5NywgNjQ0ODMsIAorICAgIDY1NjkzLCA5ODM3MTEsIDEyNzEyMCwgNzQyODgsIDY5Njk1LCA0MjI0MCwgMTI4NTg3LCAxMjEzNTIsIDQyODY0LCAKKyAgICAxMDEwMzcsIDQzMTY4LCA0MTg2OCwgMTE4NCwgMTIxMjg1LCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIAorICAgIDEyOTM0MCwgNjYxOTcsIDk4MzQ3NCwgMTA5ODYsIDY0NjgzLCAxMjg1NDksIDEyODQ1NCwgMzQ1NSwgMTI2NTMwLCAKKyAgICAxMTk2NjQsIDk4NzksIDAsIDk4MzIxNSwgNDE1OCwgNzAzMDcsIDY4MTY2LCAwLCAxMjgwOTEsIDE5NDk4MiwgMCwgNjY3OTksIAorICAgIDMzMiwgMTE4ODA4LCA4MzM2OCwgNTE0MiwgMjQwNywgNjk2NDMsIDQyMTk5LCA5MjM4NiwgOTI0MDQsIDc0MzczLCA4MzM3MiwgCisgICAgNTUyMTcsIDcxNDU3LCA2Mzg3MCwgNDMxNjMsIDAsIDkxNzc2MywgMTI5ODUsIDQyODY3LCAxODM0LCAxMjAzODcsIDkyNDYxLCAKKyAgICA2OTgxNywgMTA5NDAsIDY1MjQ5LCA3MDM4NSwgODY2MiwgMTIwMzI0LCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAKKyAgICAxOTUwOTMsIDY3Njc0LCA5MTc5NDIsIDgzMzU5LCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgOTE3NTA1LCAxODI4LCA3NDQ3NCwgCisgICAgMTIwMDE5LCA2ODA3OCwgODUzMSwgMTI0OTksIDYyODAsIDEyMzI0LCA3MjQzNCwgNjUyMzgsIDY4Mzc0LCA0ODMyLCAKKyAgICA2NTU3MywgNDM4NTEsIDYyNzksIDEyNTA4LCAxMjkwNCwgMTI1MDIsIDkxNjEsIDEyODU1NSwgMTYyMCwgMTEyNDcsIDM2MDEsIAorICAgIDEyMTMwMSwgODMzNTMsIDY3MjQ2LCA2MDksIDExNTU1LCA4MzQ1NiwgMTI0OTYsIDExOTgwLCA3NDE4MSwgNDM0MywgCisgICAgMTI1MDUsIDgyOTYwLCAxMjc4NjMsIDEyNTI1OCwgMTEzNzcsIDIzOSwgMTI4MTE0LCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIAorICAgIDAsIDkzMDMyLCA4MzA5NSwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIDcyOTgsIDEyODI1NiwgOTE3NjAwLCA5NDA2MiwgCisgICAgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgOTgzMjA2LCA0MjgxOCwgMTI2NjMyLCA3MDMwNiwgMTIwNDkwLCA3MDMzMywgCisgICAgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMTE5OTEzLCA5MjQ5MSwgNjgwNzYsIDEyNjUxLCAxMjA5MTcsIDY0NjI4LCA3NDUxNywgCisgICAgMTIwNTgsIDc0MDg0LCAxOTQ2MzMsIDc0OTQsIDEyODc4MCwgNDkyNCwgNjU1OTIsIDExODg0NCwgMTk0ODIzLCAxMjcwODgsIAorICAgIDM1NSwgOTcxOSwgNjY3NjIsIDEzMDY2LCA2NDc5NiwgNzg2NjMsIDk4MzI5NywgMTIwMzMsIDQyMTc4LCAxOTQ3NTQsIAorICAgIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDExNDMwLCAwLCA3MDI5OSwgMTIxNTA4LCAxMjQ5NTEsIDY4MzI0LCAzMTc4LCAKKyAgICAxMjY0ODgsIDEyODYzMywgOTI3MDQsIDkxNzU2NiwgOTA4MCwgMTIwOTQzLCA2NzY5NywgMTk1MTAxLCA2ODIwOSwgNzI0MTgsIAorICAgIDExMDgyLCA3MTQ4NSwgNTY5OSwgODMzNzMsIDY2MDAwLCA5NDg4LCA2NTE2NiwgMTE5MTEyLCA3MDQ3NywgMTExNzAsIAorICAgIDY4NjYyLCAxMDA1MDUsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgODMzODQsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIDk4MzM2NSwgCisgICAgNDMwNDUsIDk4MzIwMSwgNzAzNDUsIDQzMzQ1LCAxMjA2NTcsIDEwNzcwLCAxMTg5OTQsIDY4MDcsIDQ2NSwgOTgyOSwgCisgICAgNjk5OTcsIDc0MzQ4LCAxMjE0MDMsIDQzMzQ2LCA4MTE2LCA3OTUsIDEyMDM1MiwgNzI0MTIsIDEyNDYyLCAxMDkzMCwgCisgICAgMTA4MzEsIDEyMTMyMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIDkzMDU2LCAxMDExMiwgOTgzOTMzLCAxMjQ2OCwgODYwNywgCisgICAgMTAwOCwgMTE4OTQ4LCAxMDA5MiwgMTIwNTM5LCAxMjg4NTEsIDY3ODU1LCA1NTI1NywgNzM3NzEsIDE3NjYsIDExMjgyLCAKKyAgICAxMTk5NiwgMTgyMCwgNDU0NywgMTAwNzA5LCAxMTIwMiwgMTIwMjQzLCAxMjgzNDUsIDEzMjIzLCA3NDkzNCwgNjQ1OTUsIAogICAgIDEyNzI5NCwgODMzNzQsIDY4NDg5LCA0MzQ1LCAxMjYxNiwgOTE3Nzg0LCAxMjg5NDcsIDk4MzE1NSwgNzQ0NjcsIDAsIAotICAgIDk4MzgxOSwgMTI4MjkxLCA1MzgyLCAxMjc3NzksIDAsIDY3MjMzLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgCi0gICAgNjk4OTcsIDY2NTEwLCAzNTkwLCAxOTQ4MzUsIDExMzAsIDkxNzc2NiwgMTIwOTc3LCA0MjAxNiwgMTE4MjMsIDQzMDIzLCAKLSAgICAxMjEwMDIsIDExODg5NiwgNzc0MiwgMTI3Mzc0LCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgCi0gICAgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgCi0gICAgNzM4MTYsIDgzMDYwLCAxMjg0MTgsIDQyNjcwLCAwLCAxMTYyMSwgMTI0NjAsIDEzMjYsIDEyMDYzMSwgODMzOTMsIDQzMDYzLCAKKyAgICA3Mzk1NSwgMTI4MjkxLCA1MzgyLCAxMjEzOTAsIDAsIDY3MjMzLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgNjk4OTcsIAorICAgIDY2NTEwLCAzNTkwLCAxOTQ4MzUsIDExMzAsIDEyODY4OSwgMTIwOTc3LCA0MjAxNiwgMTE4MjMsIDQzMDIzLCAxMjEwMDIsIAorICAgIDExODg5NiwgNzc0MiwgMTI3Mzc0LCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgNzg1ODQsIAorICAgIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgNzM4MTYsIAorICAgIDgzMDYwLCAxMjg0MTgsIDQyNjcwLCAxMjc1MzksIDExNjIxLCAxMjQ2MCwgMTMyNiwgMTIwNjMxLCA4MzM5MywgNDMwNjMsIAogICAgIDQzMjM5LCA2NTY3OCwgMTk0ODQwLCA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgCiAgICAgNTQwMCwgMTE1OTQsIDEyMDQwNSwgNjgzMzMsIDgzMzkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAxMjgwMTIsIDU1ODcsIAogICAgIDQyODY1LCA2NDQwNCwgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgCi0gICAgNzAyOTQsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDgzMzg4LCA0Mjc2NiwgODMzODcsIDIyMTAsIDk5ODMsIAotICAgIDEyODY4OSwgOTQwMDksIDAsIDAsIDAsIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgMTQ2MSwgOTEwLCAxMTkxMzMsIAotICAgIDAsIDY3NDksIDM2NTgsIDkzOTY0LCAxMjA1MjUsIDAsIDc2MTcsIDE5NDg0MSwgMTI4ODgsIDEyNzk4MywgNjc2NjgsIAotICAgIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgNTcwMywgMTI4MjQ3LCA0MTUxNywgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIAotICAgIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgNjEzLCA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIAotICAgIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgMCwgMCwgODIyNSwgMTIxMTkxLCA2NTQsIDExMzQ1LCA2NTMsIAotICAgIDY1MiwgMCwgNjQ3LCA4MzI2NiwgNjMzLCAxMjA3NDQsIDk4MzgwOSwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDE5NDkwOSwgCi0gICAgMzksIDEyNDg3LCAxMjEyNDcsIDEyMDUyOSwgNzQxOTksIDEyNDgyLCAwLCAxMjQ4OSwgMTE5NjA3LCAzMTk1LCA1NTUwLCAKLSAgICAxMjkxMjEsIDc4OTcsIDEyNzA4OSwgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDk4MzYzNCwgCi0gICAgMjg3NywgMTIxNTE4LCA3MDQ5NiwgMTY3NSwgNjk4NDAsIDAsIDAsIDExOTA3OCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIAotICAgIDE5NDc3NywgMTIxMTYyLCA2NzE3MCwgMTIwNzkwLCAxMTg3ODcsIDQzMjQ0LCA5MjIzMywgOTE3ODM1LCA5ODM5MTYsIAotICAgIDExOTU2MSwgOTgzMDc4LCAxOTQ5MTQsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAwLCA5ODMxNTEsIDc3ODYwLCAxMjg5NDgsIAotICAgIDgzNDQwLCAyNzAsIDAsIDEwNzE0LCAxMTg5ODMsIDcyNDM3LCAwLCAxMTk5NDIsIDExOTMzOCwgNjUzNzIsIDczODAzLCAKLSAgICA3NDAzOCwgNjgyNTEsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDcxNDQwLCAwLCAwLCA3MDcsIDE5NDgzOSwgMTI4NDA5LCAKLSAgICA5MjgyLCAxMTE2MywgMjI0LCAxMjg1ODgsIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgMTk0NTg2LCA2ODY0NCwgCi0gICAgOTgzMTMxLCAzODQxLCA2NzM1NywgNjczNDEsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAxMjcxODEsIDEyODkwLCAyOTA5LCAKLSAgICA2ODYxOSwgNDQwMDgsIDY4NjI3LCAxMjA2OTksIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgOTE3OTQzLCAxMTk2MiwgCi0gICAgMTIxMzk3LCAxMjUwNywgMTE5NiwgNjc2ODQsIDY3MTAwLCA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAKLSAgICAxMjE5OCwgOTE3ODg3LCA2NDgyNCwgMTE5MzQzLCAxMjcyNDMsIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgNzAwNzMsIAotICAgIDI3MDUsIDEyODY4MCwgNDE1MjAsIDE5NTA5OCwgMTIwMzc5LCAxMTk4NiwgNzc2NSwgNDI1MDIsIDgyODAsIDc0NTIwLCAKLSAgICAyNzAxLCAwLCAxMjAyNDAsIDU3NjcsIDAsIDE5NTAxOCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgCi0gICAgMTIxMjMzLCA2Mzc0NSwgMTc0OCwgNjM3NzAsIDEyMTQxOSwgMTIxMDc4LCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCAKLSAgICA3ODYwOSwgNjM3NjQsIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIAotICAgIDEyNzc4MSwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCA2Mzg2LCA2Mzc4MywgMTIwOTkwLCAxMjUwNDEsIAotICAgIDkyNTM1LCAwLCAwLCA2ODI0OSwgNzQ1NzUsIDEyNzAxMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDEyMTQ1MiwgCisgICAgNzAyOTQsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDcwNzAxLCA0Mjc2NiwgODMzODcsIDIyMTAsIDk5ODMsIAorICAgIDExOTk2MywgOTQwMDksIDEyOTI5OSwgMCwgMTI4ODEwLCA3Mzk4LCA0MTUxNSwgOTgzODgwLCAxMTgwMiwgODA0MSwgMTQ2MSwgCisgICAgOTEwLCAxMTkxMzMsIDk4MzMyNywgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMTI3MzYzLCA3NjE3LCAxOTQ4NDEsIAorICAgIDEyODg4LCAxMDA1MDEsIDY3NjY4LCAxMzE0MywgMTI3OTc1LCA5MTkzLCAxMTA5NywgNTcwMywgMTI4MjQ3LCA0MTUxNywgCisgICAgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIDk4MzU5MywgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCAKKyAgICA2MTMsIDc1NDMsIDEwMDc4NywgNDc3LCA0MTA4MywgOTI1MjEsIDE5NDU5MywgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIAorICAgIDEyODYyOCwgMCwgODIyNSwgMTIxMTkxLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgMCwgNjQ3LCA4MzI2NiwgNjMzLCAKKyAgICAxMjA3NDQsIDcyNzg4LCAxMjY0NzIsIDEyNDgwLCA0MzI0MywgMTk0OTA5LCAzOSwgMTI0ODcsIDEyMTI0NywgMTIwNTI5LCAKKyAgICA3NDE5OSwgMTI0ODIsIDk4Mzc3MCwgMTI0ODksIDEwMDkxNywgMzE5NSwgNTU1MCwgMTI4MTcyLCA3ODk3LCAxMjcwODksIAorICAgIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCA5ODM2MzQsIDI4NzcsIDEyMTUxOCwgNzA0OTYsIAorICAgIDE2NzUsIDY5ODQwLCAwLCAwLCAxMTkwNzgsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAxOTQ3NzcsIDEyMTE2MiwgCisgICAgNjcxNzAsIDEyMDc5MCwgMTE4Nzg3LCA0MzI0NCwgOTIyMzMsIDkxNzgzNSwgMTI1MTkzLCAxMTk1NjEsIDk4MzA3OCwgCisgICAgMTk0OTE0LCAxOTQ5MjEsIDEyODE2MCwgOTkzOSwgMTIxNTExLCAxMjUxOTUsIDc3ODYwLCAxMjg5NDgsIDgzNDQwLCAyNzAsIAorICAgIDk4MzMwOSwgMTA3MTQsIDExODk4MywgNzI0MzcsIDAsIDExOTk0MiwgMTE5MzM4LCA2NTM3MiwgNzM4MDMsIDc0MDM4LCAKKyAgICA2ODI1MSwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgNzE0NDAsIDAsIDAsIDcwNywgMTE5NjQ5LCAxMDA0MDAsIDkyODIsIAorICAgIDExMTYzLCAyMjQsIDcyNzk5LCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDcwNjc0LCA2ODY0NCwgMTI3MjE0LCAzODQxLCAKKyAgICA2NzM1NywgNjczNDEsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAxMjcxODEsIDEyODkwLCAyOTA5LCA2ODYxOSwgNDQwMDgsIAorICAgIDY4NjI3LCAxMDEwMjMsIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgOTE3OTQzLCAxMTk2MiwgMTIxMzk3LCAxMjUwNywgMTE5NiwgCisgICAgNjc2ODQsIDY3MTAwLCA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAxMDEwMjQsIDEyMTk4LCA5MTc4ODcsIAorICAgIDY0ODI0LCAxMTkzNDMsIDEyNjYwOCwgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3MDA3MywgMjcwNSwgMTI4NjgwLCAKKyAgICA0MTUyMCwgMTk1MDk4LCAxMjAzNzksIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgNzQ1MjAsIDI3MDEsIDk4MzMzMywgCisgICAgMTIwMjQwLCA1NzY3LCAwLCAxOTUwMTgsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgNjM3NzIsIDEyMTIzMywgNjM3NDUsIAorICAgIDE3NDgsIDYzNzcwLCAxMjE0MTksIDEyMTA3OCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgNzg2MDksIDYzNzY0LCAKKyAgICA2Mzc4NywgOTA2NywgNjA5NiwgMCwgNzY5NCwgOTgzNzc2LCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIDEyNzc4MSwgCisgICAgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAxMjcxNDAsIDYzODYsIDYzNzgzLCAxMjA5OTAsIDEyNTA0MSwgOTI1MzUsIAorICAgIDEyMjg4NCwgMCwgNjgyNDksIDc0NTc1LCAxMDA5OTcsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAxMjE0NTIsIAogICAgIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDExMTcxLCAxOTIyLCAxMjcyNzUsIDEyNDk4LCAxMDk4NywgCi0gICAgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMTI5MTgzLCAxOTQ4NDIsIDEyODExMiwgNDkzLCAwLCA0MzE5NywgMTcxNywgCi0gICAgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIDY0MzE1LCAKLSAgICA5MjE3MCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCA4MzUxOSwgNjQ5MTEsIDgzNTIxLCAKLSAgICAyMDk2LCA2NTEyMCwgODM1MTYsIDc4MjE5LCA4MzI3MCwgODM3OCwgMTE2MzIsIDY4ODM4LCA2NjIxMywgNjM4NjQsIAotICAgIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgNjYyMTgsIAotICAgIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgNjM3NTksIAotICAgIDEyNzMwOCwgNjYyMDgsIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgNzM3NjEsIAotICAgIDEyNDkyLCAxMjY2OSwgOTQwNzAsIDAsIDc0MTUzLCAxMjAzMTAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgCi0gICAgOTgzMzYyLCA4NjEyLCA0ODg1LCA3NDA1MywgMTI3ODMwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgCi0gICAgMTI5MDY2LCA2Mzc5NywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCAKLSAgICA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAwLCAxMjUxMSwgCi0gICAgNzQ0NTMsIDEyNTE0LCAwLCA3MTEzMCwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyNTEzNywgMTI4MDQ4LCA3Mzc4LCAKLSAgICAxMjUxMiwgMTE2MTUsIDYxMDQsIDAsIDEyMDkwMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgODM1MTEsIDY3MzU4LCA4MzExLCAKLSAgICAxMjUxMCwgNzY2OSwgMTMwMzksIDgzNTA5LCAxMjUxMywgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCAxMjEzODUsIDcwMTkzLCAKLSAgICAxMjgzNTQsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgCi0gICAgMTI3MjgwLCA5ODMzMTEsIDgzMDIwLCAyMzA5LCAxMzEyLCA4MTczLCA4MzAxMywgMTI0NjksIDgzMDE1LCA3ODUwNSwgCi0gICAgNjQzMzUsIDEwNjA5LCA4MzAxMSwgNzgwMDYsIDkzOTcsIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCAKLSAgICA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAxMjc5OTAsIAotICAgIDY1NDUxLCA4MTg1LCAxMjg5MzEsIDE5NDg0MywgNDMwMjQsIDQzMzM2LCA2NzY1OSwgMjMxMywgMTI4MTY3LCA3OTQ4LCAKLSAgICA5MjM2LCA3Nzk0MiwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgODMwMDYsIDgzMDA3LCAxMTk5OCwgMTIwODIsIAotICAgIDEwOTI0LCAzMTQ3LCA4MzAwNCwgNjY0MDYsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCAKLSAgICA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCA3NDI1NiwgMCwgCi0gICAgMTMwMTYsIDgyMTAsIDEyMTA2MiwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIAotICAgIDEyMDYzMCwgNDE1NSwgMTIxMDkwLCAxMjA3MDQsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDExMzgyNiwgCi0gICAgMTI3MjE3LCA5ODMyMDIsIDk5MjIsIDQzMzA5LCAxMTIxMSwgMTI1MjUsIDk4MzQ3MywgMTIwMTYsIDY1NzcwLCA5NTQ4LCAKLSAgICA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDE5NDY4OSwgMTI3MTkxLCAxMTAzMCwgNDM5MTYsIDkyNTY3LCA2NTY5MSwgCi0gICAgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDEyOTE0MywgMTIxMDcyLCAxMjUwNiwgOTgzODM4LCAKLSAgICAxMTE0NiwgNzE0NzcsIDEyNTAwLCA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIAotICAgIDExMjA4LCAxMjAyMzYsIDc4Mzk1LCA3ODM5NCwgNzQwNjksIDcxNDQ2LCA3ODM5MSwgMzYwOCwgODI4MSwgMTEzNzMyLCAKLSAgICAxMTA3LCAxMTM3NDUsIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIAotICAgIDc0MTY1LCA3NDc4MiwgNDM0OTksIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDExMzY2NCwgNDk4LCAKLSAgICA2NDQ3MSwgNzc5ODcsIDkyOTc0LCAxMjUyOSwgODA0MiwgNDM4OTksIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCA3NDUwNiwgCi0gICAgNjk3MTksIDMyMzEsIDkxNzgzNiwgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAKLSAgICAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgOTE3ODEwLCA0MzYzLCAzMzEzLCAKLSAgICA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIAotICAgIDc0MjM3LCA5OTIwLCAxMjIxNSwgODI5NzgsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDcwMzY4LCA5NjYzLCAKLSAgICA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgOTgzNDY3LCAxNDkxLCA2Njg0NywgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCAKLSAgICA3MDQ1NCwgMTk0ODM4LCAxMjcxODcsIDY1MDI2LCA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzExODEsIDY2NDc2LCAKLSAgICA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDEyNzAwMiwgNDE2ODcsIDAsIAotICAgIDEyMDcxNywgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgzMywgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgCi0gICAgNjUwODMsIDY4MzksIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgCi0gICAgMTIwMzUxLCAxMjcyOTgsIDY0MTM5LCA3ODIzMSwgNjQxMSwgMTI5MTAsIDY3NzEwLCA2NjY0NCwgMTMwMjgsIDY3MzcsIAotICAgIDEyNTM3LCAwLCA0MzUwNiwgNjQxMzYsIDEyNTM2LCAyMzUwLCAxMzAyOSwgNzgyMzMsIDEyMDkxNCwgNDM4OTcsIDEzMDMwLCAKLSAgICA2NzAyLCA0NTI3LCA3MTI1MCwgMTI1MzgsIDEyODgxMCwgOTgzNjQ1LCA2NTU5OSwgNjU3MTcsIDk5NjYsIDkzMDQ2LCAKLSAgICA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTIxMTc3LCAxMjYyMywgMCwgNjIwNywgOTgzMjI1LCA2MTE3LCA2NTkzMCwgODQxMiwgCi0gICAgMTI3MTgzLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMTIxMDIwLCAxMDE0OSwgNzQxMTgsIDAsIDEyMDIzMywgMTI0ODEsIAotICAgIDEyMTI4MCwgMTI0ODgsIDY2NzEzLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCAKLSAgICAxMTkyNDQsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIDAsIDY1MDMyLCA0MTUxMywgMTIwMjA5LCAxMTkyNywgNjY1ODQsIAotICAgIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDcxNDU5LCA4MzAzNCwgNjc2MDMsIDg0OCwgOTg2OCwgNjcyMjAsIDY0MjQsIDc4NTY4LCAKLSAgICA2NzIyNiwgNjk5MjIsIDcwMTkwLCA3ODU2MywgNzg1NjQsIDIzNTIsIDY3MjE5LCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgCi0gICAgNjc5NzMsIDk4MzE5MywgMTMwMjYsIDY3NjIsIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCAKLSAgICA4MDk5LCAxMjc5ODQsIDAsIDEzNDMsIDkxNzk5OSwgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgNzI0MzYsIAotICAgIDExMzcxMywgMTE3NDEsIDkxNzk4NiwgNzUwNDMsIDkyMTYsIDgyNjMsIDExMjc5LCA4MzAyMywgODMwMjQsIDgzMDI1LCAKLSAgICAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMCwgNDM5NTQsIAotICAgIDc0NTUyLCAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgCi0gICAgNjk2ODEsIDAsIDQzMDAxLCA4MDI5LCAwLCAwLCA5ODM3ODAsIDMzMzUsIDExOTM0MSwgOTIwOSwgOTc3NiwgMTIwNTI2LCAKLSAgICAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIAotICAgIDc4NTgxLCA0MTU2LCAwLCAxMjczMjksIDY0MjEsIDc4MDM5LCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgCi0gICAgNzQ1NDIsIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgCi0gICAgNDM5MjUsIDEzMDQ2LCA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgMTMwNDcsIDkyNzQ1LCAwLCAKLSAgICA2ODE5LCAxMzA0OSwgNjQ5OSwgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNjU4MjcsIDEzMDUwLCA5OTI0LCAxOTQ3NDUsIDY1MDcsIAorICAgIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDEyOTE4MywgMTk0ODQyLCAxMjA3OTMsIDQ5MywgMTE4OTI1LCA0MzE5NywgCisgICAgMTcxNywgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIAorICAgIDY0MzE1LCA5MjE3MCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCA4MzUxOSwgNjQ5MTEsIAorICAgIDgzNTIxLCAyMDk2LCA2NTEyMCwgODM1MTYsIDc4MjE5LCA4MzI3MCwgODM3OCwgMTE2MzIsIDY4ODM4LCA2NjIxMywgCisgICAgNjM4NjQsIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgCisgICAgNjYyMTgsIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgCisgICAgNjM3NTksIDEyNzMwOCwgNjYyMDgsIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgCisgICAgNzM3NjEsIDEyNDkyLCAxMjY2OSwgOTQwNzAsIDAsIDc0MTUzLCAxMjAzMTAsIDEyNjUxMywgMTIwNDcyLCA0ODgyLCAKKyAgICAxMzA0MCwgOTgzMzYyLCA4NjEyLCA0ODg1LCA3NDA1MywgMTI3ODMwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIAorICAgIDI0OCwgMTAxMDE4LCA2Mzc5MywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAxMDEwMTcsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIAorICAgIDkxNzU5OCwgMTg3MCwgNzgwNDAsIDQ3MCwgNzgwMzgsIDc4MDM1LCA3ODAzNiwgNzAwMjgsIDc4MDM0LCA0NTc5LCA2OTIzMiwgCisgICAgMCwgMTI1MTEsIDc0NDUzLCAxMjUxNCwgOTgzOTQ3LCA3MDY1NiwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyNTEzNywgCisgICAgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgMTE2MTUsIDYxMDQsIDEwMTAxMSwgMTIwOTAwLCA2NTksIDYwOTgsIDEwMDk0OCwgCisgICAgMTIyMzQsIDgzNTExLCA2NzM1OCwgODMxMSwgMTI1MTAsIDc2NjksIDEzMDM5LCA4MzUwOSwgMTI1MTMsIDEwMjAyLCAKKyAgICAxMjQ3MSwgMCwgODc0NywgMTIxMzg1LCA3MDE5MywgMTAwOTQ2LCAyMzIzLCAxMjgxNDcsIDIzMTksIDc3OTE3LCAxMjQ3NywgCisgICAgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgMTI3MjgwLCAxMDA5NDAsIDgzMDIwLCAyMzA5LCAxMzEyLCAKKyAgICA4MTczLCA4MzAxMywgMTI0NjksIDgzMDE1LCA3ODUwNSwgNjQzMzUsIDEwNjA5LCA4MzAxMSwgNzgwMDYsIDkzOTcsIAorICAgIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCAKKyAgICA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAxMjc5OTAsIDY1NDUxLCA4MTg1LCAxMjg5MzEsIDE5NDg0MywgNDMwMjQsIAorICAgIDQzMzM2LCA2NzY1OSwgMjMxMywgNzQ0NDYsIDc5NDgsIDkyMzYsIDc3OTQyLCAxMjg4OTksIDAsIDEwNTcwLCA0MzQ3MywgCisgICAgNjI4OSwgMTA0ODQsIDgzMDA2LCA4MzAwNywgMTE5OTgsIDEyMDgyLCAxMDkyNCwgMzE0NywgODMwMDQsIDY2NDA2LCAKKyAgICAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgCisgICAgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzc4LCA5MzcyLCAxMjQ0NCwgNzQyNTYsIDAsIDEzMDE2LCA4MjEwLCAxMjEwNjIsIAorICAgIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgODc0NCwgNzI2LCAwLCAxMjA2MzAsIDQxNTUsIDEyMTA5MCwgCisgICAgMTIwNzA0LCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMTM4MjYsIDEyNzIxNywgOTgzMjAyLCA5OTIyLCAKKyAgICA0MzMwOSwgMTEyMTEsIDEyNTI1LCAxOTUwMzUsIDEyMDE2LCA2NTc3MCwgOTU0OCwgNjc2NjUsIDQwMywgNzgyMzAsIAorICAgIDExMDIxLCAxOTQ2ODksIDEyNTI1MCwgMTEwMzAsIDQzOTE2LCA5MjU2NywgNjU2OTEsIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgCisgICAgMTk0NjU3LCAxMTk5MjAsIDAsIDEyOTE0MywgMTIxMDcyLCAxMjUwNiwgMTk0NjA1LCAxMTE0NiwgNzE0NzcsIDEyNTAwLCAKKyAgICA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIDExMjA4LCAxMjAyMzYsIDc4Mzk1LCAKKyAgICA3ODM5NCwgNzQwNjksIDcxNDQ2LCA3ODM5MSwgMzYwOCwgODI4MSwgMTEzNzMyLCAxMTA3LCAxMTM3NDUsIDkwNzYsIDg4NjIsIAorICAgIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIDc0MTY1LCA3NDc4MiwgNDM0OTksIAorICAgIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDExMzY2NCwgNDk4LCA2NDQ3MSwgNzc5ODcsIDkyOTc0LCAKKyAgICAxMjUyOSwgODA0MiwgNDM4OTksIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCA3NDUwNiwgNjk3MTksIDMyMzEsIDE5NDU2OSwgCisgICAgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCAKKyAgICA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgOTE3ODEwLCA0MzYzLCAzMzEzLCA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIAorICAgIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIDc0MjM3LCA5OTIwLCAxMjIxNSwgODI5NzgsIAorICAgIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDcwMzY4LCA5NjYzLCA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgCisgICAgMTI1MjMyLCAxNDkxLCA2Njg0NywgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCA3MDQ1NCwgMTk0ODM4LCAxMjEwMTQsIDY1MDI2LCAKKyAgICA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzExODEsIDY2NDc2LCA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIAorICAgIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDEyNzAwMiwgNDE2ODcsIDEyNzM5OCwgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEwMDQxOSwgCisgICAgNzY5MiwgMTIwNjgwLCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCA2NTA4MywgNjgzOSwgOTgxNiwgMTI2NTE3LCAxMjUzMiwgCisgICAgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAxMjAzNTEsIDEyNzI5OCwgNjQxMzksIDc4MjMxLCA2NDExLCAKKyAgICAxMjkxMCwgNjc3MTAsIDY2NjQ0LCAxMzAyOCwgNjczNywgMTI1MzcsIDEwMDQxNywgNDM1MDYsIDY0MTM2LCAxMjUzNiwgCisgICAgMjM1MCwgMTMwMjksIDc4MjMzLCAxMjA5MTQsIDQzODk3LCAxMzAzMCwgNjcwMiwgNDUyNywgNzEyNTAsIDEyNTM4LCAKKyAgICAxMDA0MTYsIDEyOTM1MiwgNjU1OTksIDY1NzE3LCA5OTY2LCA5MzA0NiwgNDk0OCwgMTI0ODQsIDQwMzIsIDEyMTE3NywgCisgICAgMTI2MjMsIDEyMDIwNywgNjIwNywgMTk0NzI2LCA2MTE3LCA2NTkzMCwgODQxMiwgMTI3MTgzLCA3NDM4LCAxMjk2LCAyMzI1LCAKKyAgICA0MTUxMSwgMTIxMDIwLCAxMDE0OSwgNzQxMTgsIDAsIDExOTYyNSwgMTI0ODEsIDEyMTI4MCwgMTI0ODgsIDY2NzEzLCAwLCAKKyAgICA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCA3Mjc1NywgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgCisgICAgOTgzNDY1LCA2NTAzMiwgNDE1MTMsIDEyMDIwOSwgMTE5MjcsIDY2NTg0LCA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3MTQ1OSwgCisgICAgODMwMzQsIDY3NjAzLCA4NDgsIDk4NjgsIDY3MjIwLCA2NDI0LCA3ODU2OCwgNjcyMjYsIDY5OTIyLCA3MDE5MCwgNzg1NjMsIAorICAgIDc4NTY0LCAyMzUyLCA2NzIxOSwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDY3OTczLCA5ODMxOTMsIDEzMDI2LCA2NzYyLCAKKyAgICA3ODU3OSwgNzAxOTIsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMTI3OTg0LCAxMjkzNjcsIDEzNDMsIAorICAgIDEyODQzOCwgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMTIwMjEwLCA3MjQzNiwgMTEzNzEzLCAxMTc0MSwgCisgICAgMTI5MTk2LCA3NTA0MywgOTIxNiwgODI2MywgMTEyNzksIDgzMDIzLCA4MzAyNCwgODMwMjUsIDEzMDIxLCA2NDQ5NCwgCisgICAgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAxMDA3NDYsIDQzOTU0LCA3NDU1MiwgCisgICAgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgNzQzNDAsIDY5NjgxLCAwLCAKKyAgICA0MzAwMSwgODAyOSwgMCwgOTgzNjM5LCA5ODM3ODAsIDMzMzUsIDExOTM0MSwgOTIwOSwgOTc3NiwgMTIwNTI2LCAxMjg0MDQsIAorICAgIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIDc4NTgxLCAKKyAgICA0MTU2LCAwLCAxMjczMjksIDY0MjEsIDc4MDM5LCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIAorICAgIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgOTgzNzg5LCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCA0MzkyNSwgCisgICAgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgOTI3NDUsIDEyNTA0MCwgCisgICAgNjgxOSwgMTMwNDksIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDY1ODI3LCAxMzA1MCwgOTkyNCwgMTI4Mzc4LCA2NTA3LCAKICAgICAxMjc5MTksIDk0MDczLCAxMjgwNjksIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIDE5NDcyMSwgCiAgICAgMTk0NzI0LCAxMzA0NSwgNjQ2MjYsIDY2MDM0LCA3NzUxLCAxOTQ3MjcsIDgzNzEsIDEyMTAzNiwgMzk5NywgMTI4MDYsIAogICAgIDg3NjgsIDEzMDQ0LCAwLCAxMjQyMCwgNDAyNCwgMTI4MDAwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIDQxMDU3LCAKLSAgICA2ODMwNywgOTE3ODQyLCAwLCAwLCA5ODM3OTEsIDkyMjEwLCA5MjQxMSwgMTI5MzAzLCA0MTQ5NiwgMCwgOTE2NSwgMTU3MiwgCi0gICAgMTE5MTEsIDEyNDk5MCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIAotICAgIDU4MzEsIDAsIDEyMDg2NSwgMTMwNDMsIDgwNTYsIDcwMTA4LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAKLSAgICAxMjEwNDgsIDk4Mzg4NCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCA4Mjk3MiwgODI5NzMsIDM2MDMsIAotICAgIDQxMTA5LCAyMzk4LCAzNTQ4LCA4Mjk2OSwgODI5NzAsIDExOTkzMywgODI5NjQsIDMxMTUsIDk5MTgsIDEyNzgyMywgODI5NCwgCi0gICAgNDI5MTIsIDAsIDEyNzI4NywgMTk0NzI2LCA0ODc2LCA2NTgwNCwgMCwgMCwgNDM0NjgsIDEyMTIyMSwgNDE1NTgsIDQxNDcxLCAKLSAgICA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgMTMwNTEsIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIAotICAgIDQxNTU5LCAxODk2LCA2NTIxNSwgMTMwNTIsIDE5NDY4MCwgNTY2NSwgNzg1OTQsIDExOTA3MSwgNzAyNSwgNjM5NzQsIDAsIAotICAgIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIDEyMzEwLCA1NjYyLCA0MjM4MiwgMTU2NCwgNzM5MjQsIDExMjEsIAotICAgIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDk4MzU3OCwgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDc4MTQyLCAKLSAgICA2NTE4NywgMTYyNiwgNjM5ODMsIDEwMTEwLCA2NDc3MiwgNDIwMjQsIDY0MjAsIDQyMDI4LCA5MjI5NCwgMTA1MDksIDI3OTUsIAotICAgIDQ5MTAsIDEyOTE5MywgNjkyMzEsIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIAotICAgIDY0MjMsIDQyNzc0LCAwLCAwLCA2ODUyNiwgMTI4MjMsIDIzMzEsIDEyNzc4OCwgNzA4NSwgNjEzNywgMCwgNzUyNCwgCi0gICAgMTIwNzIxLCA5MTc4MDksIDgzNDYsIDEyODQzOCwgODMzOCwgMTI4MzE1LCA2NTA0MywgNzc5ODIsIDgyMiwgNzA0MTIsIAotICAgIDk5MDMsIDY0NzIxLCA0MjcyMiwgNjk4NzcsIDgyOTU2LCA3ODY1NSwgNjY4ODIsIDgyOTU5LCA3ODQ4NCwgNDEyNjUsIAotICAgIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNDM5NjIsIDExMjc4LCA3ODYzMiwgNzQxMTEsIDEyODA5NSwgCi0gICAgMTI5NDYsIDEyMTA3NiwgNzE5MjEsIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTEzNzA2LCAxMjc5NjcsIDY1MDE5LCA3NDA3OCwgCi0gICAgNzM5OTAsIDY1MTExLCA5ODM5NjAsIDc0OCwgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxOTQ2MjksIAotICAgIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgNjc4NjMsIDM1OTMsIDc0MDc2LCA4Mjk0OSwgMjM0MiwgODI5NTEsIAotICAgIDgyOTQ0LCA2NTIwNiwgNDg5NCwgODI5NDcsIDQ4OTAsIDEyMTA1OSwgNjQ0MzMsIDU4MSwgNDg5MywgNDI5MjksIDY1NzEsIAotICAgIDY1NTQ1LCA0ODg4LCA0MTU3LCA3ODA0OCwgNzgwNDksIDY0NjUxLCA3ODA0NywgMCwgMTAxMTksIDY0MTUsIDQyODkzLCAwLCAKLSAgICA2OTcwMiwgOTgzOTM3LCAwLCAxMTM3NSwgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA0MjkyOCwgNDI4ODAsIAotICAgIDQzNTg3LCAxMjEwOTgsIDAsIDAsIDcwNDYxLCA2NTE5NywgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIAotICAgIDY1ODU0LCA0ODc1LCA2NTgxMSwgNzUwMjQsIDEyMDM4OSwgNzE4NTQsIDkzNDQsIDg4MjYsIDkyOTE2LCAxMjAzOTUsIAotICAgIDEzMTA0LCA2NzgyOCwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDgzMDk2LCA2NTY5NiwgNzI0MzIsIDEyMTQxMiwgCi0gICAgNjYyMTcsIDEyMTE5MCwgODMzNCwgOTI3NTUsIDgzMjA3LCAzNDQ5LCAxMjEyNjQsIDEzMTAwLCA3ODQxNCwgNzg0MTMsIAotICAgIDgzMjE2LCA2NjQwNSwgNzA0MzAsIDgzMDg5LCA4MzIwMywgMTI3MjUwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAKLSAgICAxMjcwMTQsIDgzMTk4LCA2NzgyNSwgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIAotICAgIDgzNTEwLCA3ODA1NCwgNDkxNywgNzQ1MTYsIDc0MjA4LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCA4MzEwMCwgMjM2MSwgCi0gICAgNzk3MSwgNzgwNzIsIDc4MDczLCA1NTI0MywgNzgwNzEsIDk4MzU3NSwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIAotICAgIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIDEyNTczLCA3MTEzMSwgNDA5ODAsIDk4Mzk2NCwgMTMyMDIsIDEyNzgxNiwgCi0gICAgMTI1ODIsIDc4MjgyLCA5ODMwNDgsIDY5ODU2LCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIAotICAgIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgNzA0MDEsIDcwMDM5LCAwLCA3MDQ2MCwgNDkxMywgNzEwNjAsIDEyODU2MiwgCi0gICAgNzEzMzMsIDQyMzI2LCAxMjExMTksIDEyNzI4LCA5MjY4NSwgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIAotICAgIDEyMDgyOSwgODMwODEsIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCA4MzA4NSwgNjYzMTIsIDY5OCwgODMwNzYsIDgzMDg3LCAKLSAgICAxMDM1NiwgNzAwMTcsIDEyODU3MCwgNjUxLCAxMjY0MSwgODMxMzgsIDEyNTA5OCwgMTIwNzEwLCAxMjkwNjQsIDQxNTUyLCAKLSAgICA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzQ5MDUsIDEyNzUxNiwgNzg0NjEsIDkyOTYwLCA2NjkyNywgNjQ5NDUsIAotICAgIDQ3MTYsIDQzMjc3LCAxMjA5MzIsIDc4NDc0LCAxMjM0MCwgMTIwNTY4LCAxMjA5MjgsIDE5NDcwMCwgNTUyNjQsIDQxMjExLCAKLSAgICAxMjA2NzYsIDg3MDMsIDU0NjIsIDgzMTk1LCA4MzE4NSwgMTAxMDEsIDAsIDcwMDQ5LCA4NDc5LCA0MTUxLCA0MTkzMywgCi0gICAgODMxODksIDAsIDY2MjU0LCAxMjA4MjEsIDY4NDk3LCAwLCAxMjg2NTQsIDExMzc5OSwgODMxNTksIDc0MDUwLCA0MjY1MSwgCi0gICAgMTI3MzcxLCAwLCAwLCA4MzIyNSwgODMyMTgsIDEyMjc4LCA3NTAxMSwgMTI4NDA1LCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgCi0gICAgMTI4OTksIDgzMTU1LCAwLCAyNjk5LCAxMjkzMDQsIDczODQ1LCAyOTg1LCA4MzE0OSwgNjg2NDgsIDgzMTQ2LCAxMjE5MiwgCi0gICAgMTE5MzE0LCAwLCA2NjQ4OSwgOTgyNywgMTE5MzEwLCA4NjA5LCAxMTkzMDgsIDY3NDI2LCAxMTkzMDYsIDExNDgxLCAKLSAgICA0MTIxMCwgMTE5MzA1LCAwLCAzNSwgNzA4MzgsIDY3NDMxLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA2NzQyOCwgNDM1OTYsIAotICAgIDYwOTAsIDY0MjU3LCA3ODEyLCAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgNzgzMjEsIDQwOTY3LCAKLSAgICA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIAotICAgIDY4MjE2LCAxOTQ4NzEsIDEyMTM5MCwgNTI0NCwgNDE4OSwgOTI2OTcsIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIAotICAgIDcwNDYzLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAxMjcxMDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAwLCAKLSAgICA5Mjc0OSwgOTI3NTMsIDc0NDkwLCAxMjcwOTksIDExODM4LCA3NTAwMSwgMCwgMCwgNDI2ODIsIDEyNTc4LCAxMjcyMCwgMCwgCi0gICAgNDEyMjcsIDAsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCA2OTk1MCwgOTE3OTUwLCA3MjUxLCAwLCAxMjAzODIsIDExODg1MCwgCisgICAgNjgzMDcsIDkxNzg0MiwgMTI3ODk3LCAwLCA5ODM3OTEsIDkyMjEwLCA3MjczNSwgMTI5MzAzLCA0MTQ5NiwgMTk0NTc0LCAKKyAgICA5MTY1LCAxNTcyLCAxMTkxMSwgMTI0OTkwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCA5ODM0MTYsIDk2NDYsIDM3NzMsIAorICAgIDQzMTgzLCA2NDAxLCA1ODMxLCAxOTQ3MjMsIDEyMDg2NSwgMTMwNDMsIDgwNTYsIDcwMTA4LCA2NTY4MSwgMjA4LCAKKyAgICAxMjczODIsIDQxNTE0LCAxMjExMjQsIDEyMTA0OCwgOTgzODg0LCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIAorICAgIDgyOTcyLCA4Mjk3MywgMzYwMywgNDExMDksIDIzOTgsIDM1NDgsIDgyOTY5LCA4Mjk3MCwgMTE5OTMzLCA4Mjk2NCwgMzExNSwgCisgICAgOTkxOCwgNzI3MjMsIDgyOTQsIDQyOTEyLCAxOTQ3NDUsIDEyNTE4NSwgMTI2NDgzLCA0ODc2LCA2NTgwNCwgMCwgMTAwNTgzLCAKKyAgICA0MzQ2OCwgMTIxMjIxLCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgCisgICAgNzg2ODksIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY1MjE1LCAxMzA1MiwgMTE5OTMwLCA1NjY1LCAKKyAgICA3ODU5NCwgODMxMjksIDcwMjUsIDYzOTc0LCAxMDA0NjQsIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIAorICAgIDEyMzEwLCA1NjYyLCA0MjM4MiwgMTU2NCwgNzM5MjQsIDExMjEsIDc4MzE5LCA2Mzk1OSwgOTgzMTg0LCA5OTQyLCAxMzIzMSwgCisgICAgOTgzMjUwLCA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIAorICAgIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgNDkxMCwgMTI5MTkzLCA2OTIzMSwgCisgICAgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgNjQyMywgNDI3NzQsIDEwMDQ1NSwgMCwgCisgICAgNjg1MjYsIDEyODIzLCAyMzMxLCAxMjc3ODgsIDcwODUsIDYxMzcsIDAsIDc1MjQsIDEyMDcyMSwgMTEzNzAzLCA4MzQ2LCAKKyAgICA3ODgwMiwgODMzOCwgMTI4MzE1LCA2NTA0MywgNzc5ODIsIDgyMiwgNzA0MTIsIDk5MDMsIDY0NzIxLCA0MjcyMiwgNjk4NzcsIAorICAgIDgyOTU2LCA3ODY1NSwgNjY4ODIsIDgyOTU5LCA3ODQ4NCwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgCisgICAgNDM5NjIsIDExMjc4LCA3ODYzMiwgNzQxMTEsIDEyODA5NSwgMTI5NDYsIDEyMTA3NiwgNzE5MjEsIDEyMDM0OSwgNjI5NCwgCisgICAgMzE0NCwgMTEzNzA2LCAxMjc5NjcsIDY1MDE5LCA3NDA3OCwgNzM5OTAsIDY1MTExLCA5MTc5NTQsIDc0OCwgNDEwNjcsIAorICAgIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxMjkzMTMsIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgCisgICAgNjc4NjMsIDM1OTMsIDc0MDc2LCA3Mjc1MCwgMjM0MiwgODI5NTEsIDgyOTQ0LCA2NTIwNiwgNDg5NCwgODI5NDcsIDQ4OTAsIAorICAgIDEyMTA1OSwgNjQ0MzMsIDU4MSwgNDg5MywgNDI5MjksIDY1NzEsIDY1NTQ1LCA0ODg4LCA0MTU3LCA3ODA0OCwgNzA3MzUsIAorICAgIDY0NjUxLCA3ODA0NywgOTE3ODA2LCAxMDExOSwgNjQxNSwgNDI4OTMsIDk4MzA2OCwgNjk3MDIsIDk4MzkzNywgMCwgCisgICAgMTEzNzUsIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNDI5MjgsIDQyODgwLCA0MzU4NywgMTIxMDk4LCAwLCAwLCAKKyAgICA3MDQ2MSwgNjUxOTcsIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCA2NTg1NCwgNDg3NSwgNjU4MTEsIAorICAgIDc1MDI0LCAxMjAzODksIDcxODU0LCA5MzQ0LCA4ODI2LCA5MjkxNiwgMTIwMzk1LCAxMzEwNCwgNjc4MjgsIDExOTk3LCAKKyAgICAxMjAzOTMsIDc4MDc1LCAwLCAzMTM0LCA4MzA5NiwgNjU2OTYsIDcyNDMyLCAxMDA2MzEsIDY2MjE3LCAxMjExOTAsIDgzMzQsIAorICAgIDkyNzU1LCA4MzIwNywgMzQ0OSwgODMyMTQsIDEzMTAwLCA3ODQxNCwgNzg0MTMsIDgzMjE2LCA2NjQwNSwgNzA0MzAsIAorICAgIDgzMDg5LCA4MzIwMywgMTI3MjUwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAxMjcwMTQsIDcwNzA5LCA2NzgyNSwgCisgICAgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDgzNTEwLCA3ODA1NCwgNDkxNywgNzA2ODYsIAorICAgIDcyODE2LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCA4MzEwMCwgMjM2MSwgNzk3MSwgNzgwNzIsIDc4MDczLCA1NTI0MywgCisgICAgNzgwNzEsIDE5NDY5MywgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIAorICAgIDEyNTczLCA3MTEzMSwgNDA5ODAsIDk4Mzk2NCwgMTMyMDIsIDEyNzgxNiwgMTI1ODIsIDc4MjgyLCA5ODMwNDgsIDY5ODU2LCAKKyAgICA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgNzA0MDEsIAorICAgIDcwMDM5LCAwLCA3MDQ2MCwgNDkxMywgNzEwNjAsIDEyODU2MiwgNzEzMzMsIDQyMzI2LCAxMjExMTksIDEyNzI4LCA5MjY4NSwgCisgICAgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDEwMDQ4MywgODMwODEsIDEyNTg4LCA4ODIxLCA2MTUzLCAKKyAgICAyODY3LCA4MzA4NSwgNjYzMTIsIDY5OCwgODMwNzYsIDgzMDg3LCAxMDM1NiwgNzAwMTcsIDEyODU3MCwgNjUxLCAxMjY0MSwgCisgICAgNzI4MDksIDEyNTA5OCwgMTAwNjM5LCAxMjkwNjQsIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzQ5MDUsIAorICAgIDEyNzUxNiwgNzg0NjEsIDkyOTYwLCA2NjkyNywgNjQ5NDUsIDQ3MTYsIDQzMjc3LCA3Mjc0NSwgNzg0NzQsIDEyMzQwLCAKKyAgICAxMjA1NjgsIDcwNzIxLCA3MDcxOSwgNTUyNjQsIDQxMjExLCAxMjA2NzYsIDg3MDMsIDU0NjIsIDgzMTk1LCA4MzE4NSwgCisgICAgMTAxMDEsIDEyMDQ0MSwgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCA4MzE4OSwgMCwgNjYyNTQsIDEyMDgyMSwgNjg0OTcsIAorICAgIDAsIDEyODY1NCwgMTEzNzk5LCA4MzE1OSwgNzQwNTAsIDQyNjUxLCAxMjczNzEsIDAsIDAsIDgzMjI1LCA4MzIxOCwgCisgICAgMTIyNzgsIDcwNzE2LCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAxMjg5OSwgODMxNTUsIDAsIDI2OTksIAorICAgIDEyOTMwNCwgNzI3MTgsIDI5ODUsIDgzMTQ5LCA2ODY0OCwgODMxNDYsIDEyMTkyLCAxMTkzMTQsIDEyOTA2MiwgNjY0ODksIAorICAgIDk4MjcsIDExOTMxMCwgODYwOSwgMTE5MzA4LCA2NzQyNiwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMTI1MjA3LCAKKyAgICAzNSwgNzA4MzgsIDY3NDMxLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA2NzQyOCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAKKyAgICAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgNzgzMjEsIDQwOTY3LCA0MDk2NCwgMTI0OTgzLCAxMjcwNCwgCisgICAgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAxOTQ4NzEsIDcyNzM3LCA1MjQ0LCAKKyAgICA0MTg5LCA5MjY5NywgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgNzA0NjMsIDk2OCwgMCwgNDM3NDMsIDk4MzY4NSwgCisgICAgODg3MywgMjI3OSwgMTI3MTAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMTIxMTAzLCA5Mjc0OSwgOTI3NTMsIDc0NDkwLCAKKyAgICAxMjcwOTksIDExODM4LCA2Njc4NywgMCwgMTIwNjY0LCA0MjY4MiwgMTI1NzgsIDEyNzIwLCA5ODM2OTgsIDQxMjI3LCAKKyAgICA3Mjc2NSwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIDcyNTEsIDExMzc5MiwgMTIwMzgyLCAxMTg4NTAsIAogICAgIDExOTE0MSwgMTI4NDYxLCA2NjAxNSwgNjczMzIsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgOTYzMiwgCi0gICAgOTIyMzEsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAxMjg4NDIsIDAsIDExMTMyLCAzMTAsIDEyMDkyNCwgNDEyODEsIDEwOTc2LCAKLSAgICAwLCA3MTMyNSwgMTI4MzY0LCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDkxNzgyMywgOTAxMiwgMTk5NTgsIDc0NDIwLCAKLSAgICA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNjQyNjAsIDM3NCwgNDMxOTUsIDgxNiwgOTI3ODMsIDAsIDgzMTkxLCAKLSAgICA0MTkzNCwgNzQ2NSwgNzQ2MTUsIDkyNzUyLCAxMjc4OTUsIDQ3MTUsIDYxMDEsIDcxMDg5LCA0MTkzNiwgODI5NjcsIDQ4NzksIAotICAgIDQzOTY1LCA2NTQ0NiwgMCwgMzA3LCAxMjcxNDcsIDk1ODUsIDUzNzQsIDEyNzk2MiwgMTI4MDU5LCAwLCAxMjkxODksIAotICAgIDEyNjYxOCwgMTIwMzkwLCA3NDk1MywgNjU1NjcsIDEyMDYxNCwgMTkyOSwgMTIwOTg0LCAxMjE0MiwgMTk0Njk2LCAxMjIzNiwgCi0gICAgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgNzUwMDMsIDUzNzgsIDc1MDA0LCAxMjA5NTcsIDQxNDIxLCA3NTAwNSwgCi0gICAgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgNTgwMCwgMTIwMTU3LCA2Nzc1OCwgMTc2MCwgMjQyMSwgCi0gICAgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAwLCA3ODc3MCwgNDM1OTcsIDEwNjI4LCA3NDgwOCwgCi0gICAgNjg4NDksIDc5OTksIDQzOTcxLCAxMTIxNywgMTIxMjI0LCAxMDYzNCwgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIDY0Mzc0LCAKLSAgICA0MzgwLCAxMjgyODQsIDgzMDYxLCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjQ0NjgsIDc4NDYyLCAxODEwLCAzNjczLCAKLSAgICA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCA2NTA2OSwgNzU2NiwgNjQ2ODgsIDY3MTQzLCAxOTQ1OTIsIDc0OTU3LCAKLSAgICA0MzkxMiwgMTI4Mzg1LCA0NzQ4LCA5MjIyOCwgMTI5MTg1LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDEyMTI3OCwgCi0gICAgNzQ1NzYsIDQ0MDE5LCAxOTQ3MjAsIDEyODE4OSwgMzk2NywgNzEwOTgsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAotICAgIDkxNzc4NSwgODQxMCwgNDQ1NCwgNzIzLCA4MzA4NCwgOTY2LCA0NDQ5LCA5MjMzMCwgOTIyMzgsIDc1MDIyLCA3ODE5LCAKLSAgICAyMzIwLCAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCA4MzA1NywgODA0NywgMCwgCi0gICAgNzg4MjcsIDEyNjM0LCA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMTI0OTM0LCA3NDQ1MiwgCi0gICAgOTgzNzYzLCAxNTg0LCA2NjY0NSwgNjA0NSwgNjcyOSwgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDE5NDk4MywgNzgwNjIsIAotICAgIDc1MzcsIDEyNDk5MSwgMTEzNzAsIDEyNTA5MywgMTAzMzAsIDc4Nzk4LCAxMDM5NCwgOTIyMzYsIDc0MTk0LCAwLCAKLSAgICAxMjc5MjksIDk3ODAsIDAsIDExMTE3LCA3NDk5MywgNzc5NTAsIDY3MDkxLCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxOTQ1ODIsIAotICAgIDExNDE0LCA2ODc4MSwgMjUzMSwgMTMwMzQsIDEyOTE1OSwgMCwgNDIxMSwgMTI1OSwgNzUxNywgNzA4NjYsIDcwMTk4LCAKLSAgICA4MzEyMiwgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDgzMTI1LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgCi0gICAgMTIxMjUzLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCA3NDI5MywgNzQ1MzAsIDY0MDk4LCA2NTc5MywgCi0gICAgNDUzNSwgMTIxMjY3LCA0MjcxLCA3ODQxNywgMTI3MDU5LCA2NzY5LCA0MTQxMCwgMTI3MjU3LCA2NDI2MiwgNjc2NywgCi0gICAgNDE0MDcsIDY2MjczLCA5MTc4MTYsIDY3NTUsIDExODg2NCwgOTA0NiwgMTIwODg2LCAxMjY2MDgsIDcwODMwLCAwLCAKLSAgICA4MzIzMiwgMCwgNjc2NzUsIDk4MzY5NCwgODMyMzQsIDEyMTI1NCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAyNDcsIDgzMjI5LCAKLSAgICAwLCAxMjMzOCwgNDY1MSwgNjczNTUsIDExMjcwLCAwLCA3NDYzMCwgMTE5MzMsIDcwMTA3LCAwLCA0MTkwMywgNDM0NDcsIAotICAgIDExMDAxLCA3MzgyNywgNDIyNTUsIDgzMjQzLCA4MzIzOCwgNjk4MjEsIDQxOTA1LCA2NzM1MCwgMCwgMTA3NzUsIDk3OTMsIAotICAgIDUwMDksIDEyODc3NCwgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCA0Mjg1MywgCi0gICAgMzg3NywgMTIwNzk1LCA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgNjczNDIsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIAotICAgIDc4NzY5LCA3ODA2MCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDgzMjUxLCA2OTg0NCwgNDMyMDAsIDU4MzIsIAotICAgIDcxMjA4LCA4MzI1MCwgNTE0MSwgNDI2MDAsIDcxODY2LCA0MzIwMywgMTI3MjA4LCAxMjAxMjksIDQzMjg2LCAwLCAKLSAgICAxMjgyMTEsIDQzNzc4LCA3NjU3LCA0MTMwNSwgNzExMzIsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDEyODYwOSwgNzAzMSwgCi0gICAgODU5LCAxMjg0ODgsIDgzMjYyLCA4MzIzNywgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMTk0ODE3LCA4NTM1LCAxMjg2MzgsIAotICAgIDY1MTk2LCAxMjUwODQsIDY2MDMyLCAxMTQ4OCwgMTIwNDgxLCAxMjA3ODYsIDQyMjMzLCA2NDE0MCwgOTk0NiwgNzY2NywgCi0gICAgMTk0NzkyLCAxMTgyMiwgMTI4NTkxLCAxMTEzNSwgOTgzNjAwLCAwLCAxNzg4LCAxNTc5LCAxMjA0ODIsIDcxMjk4LCAwLCAKLSAgICA5ODM0NjEsIDAsIDkwMjgsIDExOTU3MSwgNjkyMzQsIDcxMDYxLCA5MjU0NSwgMTI4NSwgNjQ4ODIsIDQxMjQyLCA3MDA4NiwgCi0gICAgODMxMTEsIDEyNjQwLCA4MzExMiwgNzQwMSwgMCwgMTI2MjUsIDY4MTk4LCAwLCA3MDA4MiwgMzk0MCwgNDE1OTcsIDQzNzU0LCAKLSAgICAzMzk2LCAxMjY0MiwgODY2NSwgOTgzNjEwLCA5ODM2MDksIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAKLSAgICA3MDgyNSwgMTE4OTg5LCAxMjk0MDksIDg4MTUsIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTExODAsIAotICAgIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAxMjA0NzgsIAotICAgIDkyNjQzLCAxMjExMTgsIDE5NDY3MywgMTIwMzIsIDAsIDk3MjUsIDk4MzQ5MSwgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgCi0gICAgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIDQyNzc3LCAxMDEzOSwgOTgwLCA0MzY5OCwgNjUzODYsIDIyMDgsIDY4ODQ4LCAKLSAgICA0MzcwMSwgNDMxOTgsIDcxODQsIDkyNTQyLCAxMjg0MjMsIDEyODg3NSwgMTAwODUsIDc0OTc5LCAwLCA2NzM5NCwgNjYzNCwgCi0gICAgOTIzNzMsIDEyNTA4NSwgODM0MTMsIDgwNzIsIDExOTMyMSwgNDM3MDAsIDAsIDg4NzIsIDc3ODMsIDkxNzk5MSwgMTIzOTgsIAotICAgIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAxMjY5NzcsIDc0ODkxLCA5OTE0LCAyMjE3LCA5MjMyMywgNzM5NzUsIDYzNjcsIAotICAgIDYzNTEsIDY2Njg4LCA5Mjc0MCwgNjg3NjYsIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDEyNjU0MSwgCi0gICAgNDE5MzcsIDQzNTgsIDQzMjcyLCA2MzUzLCAwLCAwLCAxMjA0MjIsIDkzMDQ1LCAxNzEwLCAxMjAxNDAsIDAsIDY1NjA3LCAKLSAgICA2NzIzNCwgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgCi0gICAgNjQ0MTgsIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCA2NzI0NCwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgNzgwMTMsIDc4NDQ1LCAKLSAgICAxMjUxMjQsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIAotICAgIDcwODI0LCA5ODg2LCA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgNzEwODIsIDEyNjMyLCAxMDg2LCAxODY5LCAKLSAgICA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIDEyNjM4LCA3OTc3LCAKLSAgICA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDEyMDE0MSwgOTI3NTgsIDE0OTQsIDExMzcxNiwgMTI2NjEzLCAwLCAxMTY5MywgCi0gICAgNzEyNTUsIDEwNDk0LCA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMTEzNzI3LCAwLCAwLCA3ODc3MSwgNjQ1ODIsIDAsIAotICAgIDczNzk0LCA2NzM5NSwgODAyMiwgMTIwOTg5LCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgNjY4ODMsIDkxNzk5NCwgOTMwMzUsIAotICAgIDc1MDA3LCA1NTcwLCAxODgxLCA3MjEwLCAxMjA0MjUsIDEwMTIsIDQzNzUyLCAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCAKKyAgICA5MjIzMSwgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDc0MTAyLCAyMjY2LCAxMTEzMiwgMzEwLCAxMjA5MjQsIDQxMjgxLCAKKyAgICAxMDk3NiwgMTAxMDY5LCA3MTMyNSwgMTI1Mjc5LCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDEwMTA4NywgOTAxMiwgCisgICAgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNjQyNjAsIDM3NCwgNDMxOTUsIDgxNiwgOTI3ODMsIAorICAgIDAsIDgzMTkxLCA0MTkzNCwgNzQ2NSwgNzQ2MTUsIDkyNzUyLCA3MDY2NiwgNDcxNSwgNjEwMSwgNzEwODksIDQxOTM2LCAKKyAgICA4Mjk2NywgNDg3OSwgNDM5NjUsIDY1NDQ2LCAwLCAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMTI3OTYyLCAxMjgwNTksIAorICAgIDEwMDQ3MiwgMTI5MTg5LCAxMDA0NzEsIDEyMDM5MCwgNzA3MjcsIDY1NTY3LCAxMDA5NjQsIDE5MjksIDEyMDk4NCwgCisgICAgMTIxNDIsIDE5NDY5NiwgMTIyMzYsIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDc1MDAzLCA1Mzc4LCA3NTAwNCwgCisgICAgMTIwOTU3LCA0MTQyMSwgNzUwMDUsIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDEyNTAzMCwgMjQ5OCwgNTgwMCwgCisgICAgMTAwODM0LCA2Nzc1OCwgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAKKyAgICAxMjgyNzQsIDc4NzcwLCA0MzU5NywgMTA2MjgsIDc0ODA4LCA2ODg0OSwgNzk5OSwgNDM5NzEsIDExMjE3LCAxMDA4NDksIAorICAgIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIDQzODAsIDEyODI4NCwgODMwNjEsIDk5ODIsIDY0MzI0LCAKKyAgICA0MTI0MCwgODYyLCA2NDQ2OCwgNzg0NjIsIDE4MTAsIDM2NzMsIDUxMzcsIDE5NDYxNywgMTIwNDgxLCA3Mjc3LCA2NTYyMiwgCisgICAgNjUwNjksIDc1NjYsIDY0Njg4LCA2NzE0MywgMTk0NTkyLCA3NDk1NywgNDM5MTIsIDEwMDgyNSwgNDc0OCwgOTIyMjgsIAorICAgIDEwMDgyNiwgMTAwODI5LCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAxMjEyNzgsIDc0NTc2LCA0NDAxOSwgMTk0NzIwLCAKKyAgICAxMjgxODksIDM5NjcsIDcxMDk4LCAxMzEzNywgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCA5MTc3ODUsIDg0MTAsIDQ0NTQsIAorICAgIDcyMywgODMwODQsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCA3NTAyMiwgNzgxOSwgMjMyMCwgMTI5MzEyLCAzMzksIAorICAgIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgODMwNTcsIDgwNDcsIDE5NTA1MCwgNzg4MjcsIDEyNjM0LCAKKyAgICA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMTI0OTM0LCA3NDQ1MiwgMTIwNDgyLCAxNTg0LCAKKyAgICA2NjY0NSwgNjA0NSwgNjcyOSwgNzg0MTcsIDY1MjE4LCAxMTU1OSwgMTk0OTgzLCA3ODA2MiwgNzUzNywgMTI0OTkxLCAKKyAgICAxMTM3MCwgMTI1MDkzLCAxMDMzMCwgNzg3OTgsIDEwMzk0LCA5MjIzNiwgNzQxOTQsIDEwMDgwOCwgMTI3OTI5LCA5NzgwLCAKKyAgICAwLCAxMTExNywgNzQ5OTMsIDc3OTUwLCA2NzA5MSwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTAwNDk1LCAxMTQxNCwgNjg3ODEsIAorICAgIDI1MzEsIDEzMDM0LCAxMDA4MTksIDEyODUyMywgNDIxMSwgMTI1OSwgNzUxNywgNzA4NjYsIDcwMTk4LCA4MzEyMiwgCisgICAgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDgzMTI1LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgMTAwNDk2LCAKKyAgICA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCA3NDI5MywgNzQ1MzAsIDY0MDk4LCA2NTc5MywgNDUzNSwgCisgICAgMTAwNDkxLCA0MjcxLCA3Mjg4MSwgMTAwNzk4LCA2NzY5LCA0MTQxMCwgMTAwNzk5LCA2NDI2MiwgNjc2NywgNDE0MDcsIAorICAgIDY2MjczLCA5MTc4MTYsIDY3NTUsIDExODg2NCwgOTA0NiwgMTAxMDg2LCA3MjgwMywgNzA4MzAsIDAsIDgzMjMyLCAwLCAKKyAgICA2NzY3NSwgOTgzNjk0LCA4MzIzNCwgMTAwNTM0LCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgODMyMjksIDEwMDc5MSwgCisgICAgMTIzMzgsIDQ2NTEsIDY3MzU1LCAxMTI3MCwgMCwgNzQ2MzAsIDExOTMzLCA3MDEwNywgMCwgNDE5MDMsIDQzNDQ3LCAKKyAgICAxMTAwMSwgNzM4MjcsIDQyMjU1LCA4MzI0MywgODMyMzgsIDY5ODIxLCA0MTkwNSwgNjczNTAsIDEwMDgwNiwgMTA3NzUsIAorICAgIDk3OTMsIDUwMDksIDEyODc3NCwgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCAKKyAgICA0Mjg1MywgMzg3NywgMTIwNzk1LCA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgNjczNDIsIDEwMjM2LCA2NTkxOCwgCisgICAgNDM3ODIsIDc4NzY5LCA3ODA2MCwgNjQ1MDYsIDY5NjUyLCAxMDA3ODEsIDQ3NDcsIDgzMjUxLCA2OTg0NCwgNDMyMDAsIAorICAgIDU4MzIsIDcxMjA4LCA4MzI1MCwgNTE0MSwgNDI2MDAsIDcxODY2LCA0MzIwMywgMTI3MjA4LCAxMDA1NDEsIDQzMjg2LCAKKyAgICAxMjY0OTQsIDEyMDc4OSwgNDM3NzgsIDc2NTcsIDQxMzA1LCA3MTEzMiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMTI4NjA5LCAKKyAgICA3MDMxLCA4NTksIDkyMzEzLCA4MzI2MiwgODMyMzcsIDYwNTksIDEyNjk4NSwgNTUyMzUsIDE5NDgxNywgODUzNSwgCisgICAgMTI4NjM4LCA2NTE5NiwgMTIyOTEwLCA2NjAzMiwgMTE0ODgsIDcyODM4LCAxMDA3ODgsIDQyMjMzLCA2NDE0MCwgOTk0NiwgCisgICAgNzY2NywgMTAwNTQ5LCAxMTgyMiwgMTI4MzQ5LCAxMTEzNSwgOTgzNjAwLCAwLCAxNzg4LCAxNTc5LCAxMDA1MDcsIDcxMjk4LCAKKyAgICAwLCA5MTc1MzcsIDk4MzgzOSwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgNzEwNjEsIDkyNTQ1LCAxMjg1LCA2NDg4MiwgNDEyNDIsIAorICAgIDcwMDg2LCA4MzExMSwgMTI2NDAsIDgzMTEyLCA3NDAxLCAxMDA3NjcsIDEyNjI1LCA2ODE5OCwgODMxODQsIDcwMDgyLCAKKyAgICAzOTQwLCA0MTU5NywgNzI5NiwgMzM5NiwgMTI2NDIsIDg2NjUsIDk4MzYxMCwgMTIwMjA4LCAxMjYzMCwgMTY1MywgCisgICAgMTAwNTY3LCAxMDE1MywgMTAwNzc3LCA2MTY2LCA3MDgyNSwgMTE4OTg5LCAxMjk0MDksIDg4MTUsIDY2NjczLCA2NTA0NiwgCisgICAgOTI4NSwgOTEzLCA0MjI1OSwgMTExODAsIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgCisgICAgNDIyOTMsIDY0Mzc3LCAxMjA0NzgsIDkyNjQzLCAxMjExMTgsIDE5NDY3MywgMTIwMzIsIDEwMDc3MSwgOTcyNSwgMTAwNzczLCAKKyAgICA3ODQzMSwgNTI2MywgMTI4MTgsIDc4NDMwLCA0MTkzOSwgMTAwMjIsIDY1Mzg3LCA3ODQxOSwgNDI3NzcsIDEwMTM5LCA5ODAsIAorICAgIDQzNjk4LCA2NTM4NiwgMjIwOCwgNjg4NDgsIDQzNzAxLCA0MzE5OCwgNzE4NCwgOTI1NDIsIDEyODQyMywgMTAwNTI3LCAKKyAgICAxMDA4NSwgNzQ5NzksIDAsIDY3Mzk0LCA2NjM0LCA5MjM3MywgMTI1MDg1LCA4MzQxMywgODA3MiwgMTAwNzUyLCA0MzcwMCwgCisgICAgMTI4MjAyLCA3MzA0LCA3NzgzLCA5MTc5OTEsIDEyMzk4LCA4MjM3LCAxOTQ4OTMsIDAsIDEyMzk1LCAxMjAyNzksIAorICAgIDEyNjk3NywgNzQ4OTEsIDk5MTQsIDIyMTcsIDkyMzIzLCA3Mzk3NSwgNjM2NywgNjM1MSwgNjY2ODgsIDkyNzQwLCA2ODc2NiwgCisgICAgOTgzODQ4LCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAxODI5LCAxMjY1NDEsIDQxOTM3LCA0MzU4LCA0MzI3MiwgCisgICAgNjM1MywgMCwgMCwgMTIwNDIyLCA5MzA0NSwgMTcxMCwgMTIwMTQwLCAwLCA2NTYwNywgNjcyMzQsIDQ5LCA2NjI3LCAKKyAgICA5ODMxMjAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIDE2NDMsIAorICAgIDY1MjEzLCA4NDA1LCAzNDcwLCA2NzI0NCwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgNzgwMTMsIDc4NDQ1LCAxMjUxMjQsIAorICAgIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIDcwODI0LCA5ODg2LCAKKyAgICA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgNzEwODIsIDEyNjMyLCAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgCisgICAgMTAxMDkzLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgMTA5MSwgMTI2MzgsIDc5NzcsIDQ1MDEsIDQxMDk5LCAKKyAgICAwLCA2NjMwOSwgMTIwMTQxLCA5Mjc1OCwgMTQ5NCwgMTEzNzE2LCAxMjY2MTMsIDAsIDExNjkzLCA3MTI1NSwgMTA0OTQsIAorICAgIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAxMTM3MjcsIDEyODc4OSwgMCwgNzg3NzEsIDY0NTgyLCAxMDEwOTgsIAorICAgIDczNzk0LCA2NzM5NSwgODAyMiwgMTAxMDk5LCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgNjY4ODMsIDkxNzk5NCwgOTMwMzUsIAorICAgIDc1MDA3LCA1NTcwLCAxODgxLCA3MjEwLCAxMjA0MjUsIDEwMTIsIDQzNzUyLCAwLCAxMDEwOTQsIDcyMDgsIDY2NDQyLCAKICAgICA1NTY5LCAxOTUwMDcsIDQyMzM5LCA5Mjk5NywgNjA2MywgNjc4ODgsIDY5OTgxLCAxMTk1OTQsIDYwNTMsIDY1NjAyLCAwLCAKLSAgICA5MjIwMSwgNjQ3MjcsIDkxNjAsIDcwMzAxLCAwLCA5MjkwNSwgOTIxODAsIDEwNTAzLCA3MDM4NywgMzQyMywgMzg3MCwgCi0gICAgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIDk4MzExNiwgMCwgCi0gICAgNzQ5NjEsIDc4MzMzLCAxMjAxMTcsIDEyMDExOCwgMTIwMDk5LCA5MjM4NSwgNjUwODcsIDU1NzEsIDM2NzQsIDk3NDAsIAotICAgIDkxMjEsIDU1NjgsIDcxNDY0LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAxMTM3MDAsIDU4OSwgNzA1MCwgCi0gICAgOTgzODAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgCi0gICAgOTIzMzEsIDEyMTM1OCwgODU4MywgMTIxMTIzLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIDY2NTkyLCAKLSAgICAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDEyOTE3MCwgNjY4NTQsIDgxMjAsIDcwMzExLCAKLSAgICAxOTQ1ODUsIDAsIDcwMzA4LCA0MTA2MywgMTIwNDE3LCAxMDY2NCwgMCwgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAKLSAgICA3NDk3MSwgMTIxMDk0LCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIAotICAgIDEyMDM0LCA2ODQ5NiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCA3NDkzNywgNzQwOTQsIDkxNzg4OCwgMTI1MDYwLCA3Nzk3MCwgCi0gICAgOTIxNzEsIDEyNzIxOSwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCAKLSAgICA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgCi0gICAgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgMTI2NjM2LCA1ODUzLCAxMzA2MywgMTAzNjMsIDk4Mzg5OCwgMTI5NTYsIAotICAgIDExMzY2NiwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMTI4NjQ4LCA3ODM5MiwgMTI4MjYsIDYzMjksIDAsIAotICAgIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgCi0gICAgNzgzOTYsIDY4MjQ3LCAyNjk1LCA0MjE3MSwgNzA4MDksIDY4MzM0LCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAKLSAgICAxMjEyNSwgMTI3NjYsIDEyMDQwOSwgMTE2NCwgMTEzNzI5LCA3MDI4MywgNDE5MTgsIDc3ODQ5LCA2NzE1MCwgODY4NywgCi0gICAgNjYwMDksIDEyMTc4LCA3MDUzLCA5MjU0MCwgNzQ2OSwgMCwgNTI0OCwgMTIyMTgsIDY5OTg4LCA2NDI3LCA0Mjg4NCwgCi0gICAgNDExMjMsIDExMTc2LCAwLCA0Mjg3MywgNDExMjYsIDk5OTEsIDQxMTI4LCA3NDM3MSwgMTI3MDMxLCA5ODM5MzIsIDk4NzMsIAotICAgIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgNDI4NDMsIDY1OTEsIDkzNDAsIDEyODg0MSwgMTU4OSwgMTI4NjkxLCAKLSAgICAyOTYsIDY3NzEyLCA3ODg1MiwgMTIxNDA5LCA2Nzg0MSwgNzQzNzAsIDEyODUwNCwgODkyMiwgMTI4MDY4LCA0MzgyOSwgCi0gICAgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCA2NTU5MCwgNTI5OSwgCi0gICAgNzg4MzcsIDExNDczLCA1NDQ5LCAxMjUyLCAxMjczMjgsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCAKLSAgICA5MTc1NjksIDY4MzIwLCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIAotICAgIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDc0NTk4LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIAotICAgIDYxNTAsIDY2MzYsIDQzNzAsIDEyODYxOSwgMTI5MTU4LCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAxOTUwOTQsIDAsIDExMzc0OCwgCi0gICAgNDk4NiwgMTIxODksIDEyNzUxMiwgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3MTE3NiwgNjIyMCwgCi0gICAgOTAwNCwgNjU1NjEsIDk4Mzg4MSwgNzc5NDksIDAsIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCA4MzQ1MywgNjk2NzksIDY5Njg0LCAKLSAgICA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgNzM4OTgsIDExOTc5LCA3MDA1MSwgNzE4OTcsIDgzNDUxLCAwLCAKLSAgICA5NjM1LCAxMjYwMCwgODg3MSwgNjczNjYsIDY4NDkxLCAwLCA2NDY5LCA3NDIyNywgMTE4OTAwLCA2NTMwNCwgNDY3OSwgCi0gICAgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgNjczNzYsIDY3Mzc1LCA2NzM3NCwgNjczNzMsIDQyOTE2LCAKLSAgICAxMjkxNTUsIDEyODI3OSwgNjczNzcsIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgNjczNzIsIDY3MzcxLCAzNDk0LCAKLSAgICA2NzM2OSwgNjU1NSwgMTI5MTQ4LCA3Nzk3NiwgMCwgMCwgNzg1NjYsIDAsIDk4MzE4OSwgNjU4OTgsIDk4MzI0NiwgNjUzMTIsIAotICAgIDU0NDcsIDAsIDEyODk1LCA2NTU5MywgNDAxMCwgODMxNTQsIDQxMTA2LCA3NDM1NywgNjQ0NDgsIDkzOTk0LCA0MTEwNSwgCi0gICAgNzQxMTQsIDY1ODIwLCA2MjMyLCA2ODIzMywgMTI2NjI1LCAwLCA0MzYwOCwgMTE5MDkxLCA3ODExOCwgNjUzOCwgNDMzNSwgCisgICAgOTIyMDEsIDY0NzI3LCA5MTYwLCA3MDMwMSwgMTk1MDcxLCA5MjkwNSwgOTIxODAsIDEwNTAzLCA3MDM4NywgMzQyMywgCisgICAgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIAorICAgIDk4MzExNiwgMTIxMDg0LCA3NDk2MSwgNzgzMzMsIDExOTEzMiwgMTIwMTE4LCAxMjAwOTksIDkyMzg1LCA2NTA4NywgNTU3MSwgCisgICAgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgNzE0NjQsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIAorICAgIDExMzcwMCwgNTg5LCA3MDUwLCA5ODM4MDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIAorICAgIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCA5MjMzMSwgMTIxMzU4LCA4NTgzLCAxMjExMjMsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgCisgICAgMCwgMCwgMCwgNjY1OTIsIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgMTI5MTcwLCAKKyAgICA2Njg1NCwgODEyMCwgNzAzMTEsIDEyOTE1NCwgMCwgNzAzMDgsIDQxMDYzLCAxMjA0MTcsIDEwNjY0LCAwLCA4MzY5LCAKKyAgICAxMjgyNzgsIDQ1NTEsIDEyMjkxMiwgMzM2OSwgNzQ5NzEsIDEyMTA5NCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgCisgICAgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAxMjAzNCwgNjg0OTYsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgNzQ5MzcsIAorICAgIDc0MDk0LCAxMjQ5NDgsIDEwMDQ3OCwgNzc5NzAsIDkyMTcxLCAxMjcyMTksIDEyNTI1NCwgMTIxMTEsIDM5MjcsIDExOTg4MCwgCisgICAgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCA5MjI4MSwgMTA0NDEsIDY2Nzk4LCA5ODM4MzEsIDQzOTkwLCA1NDkzLCAKKyAgICA5ODM2MTgsIDcxMTMwLCA5MTc3NjYsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgCisgICAgMTI2NjM2LCA1ODUzLCAxMzA2MywgMTAzNjMsIDk4Mzg5OCwgMTI5NTYsIDExMzY2NiwgMTIwNzI5LCAxMTMxNCwgMTI1MjcxLCAKKyAgICAxMjA2MCwgMTI4NjQ4LCA3ODM5MiwgMTI4MjYsIDYzMjksIDE5NTA5NywgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgCisgICAgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCA3ODM5NiwgNjgyNDcsIDI2OTUsIDQyMTcxLCAKKyAgICA3MDgwOSwgNjgzMzQsIDk4MzQ0NCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgMTIxMjUsIDEyNzY2LCAxMjA0MDksIDExNjQsIAorICAgIDExMzcyOSwgNzAyODMsIDQxOTE4LCA3Nzg0OSwgNjcxNTAsIDg2ODcsIDY2MDA5LCAxMjE3OCwgNzA1MywgOTI1NDAsIAorICAgIDc0NjksIDcyNzk1LCA1MjQ4LCAxMjIxOCwgNjk5ODgsIDY0MjcsIDQyODg0LCA0MTEyMywgMTExNzYsIDAsIDQyODczLCAKKyAgICA0MTEyNiwgOTk5MSwgNDExMjgsIDcwNzAzLCAxMjcwMzEsIDEyNjUwOCwgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAKKyAgICAyMDUzLCA0Mjg0MywgNjU5MSwgOTM0MCwgMTI4ODQxLCAxNTg5LCAxMjg2OTEsIDI5NiwgNjc3MTIsIDc4ODUyLCAxMjE0MDksIAorICAgIDY3ODQxLCA3MTMxNCwgMTI4NTA0LCA4OTIyLCAxMjgwNjgsIDQzODI5LCAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAKKyAgICAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIDY1NTkwLCA1Mjk5LCA3MDczMiwgMTE0NzMsIDU0NDksIDEyNTIsIAorICAgIDEyNzMyOCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIDkxNzU2OSwgNjgzMjAsIDEyMjMsIDE2NDIsIDE3NCwgCisgICAgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgCisgICAgNzQ1OTgsIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgNjE1MCwgNjYzNiwgNDM3MCwgMTI4NjE5LCAxMjkxNTgsIAorICAgIDc0MTc4LCA3NDU4NywgNzQxMTcsIDE5NTA5NCwgMCwgMTEzNzQ4LCA0OTg2LCAxMjE4OSwgMTE5NTk5LCA2NzY0OCwgCisgICAgMTIwNDk5LCA5NDAwMSwgNDI1NywgMTIxMDQsIDcxMTc2LCA2MjIwLCA5MDA0LCA2NTU2MSwgOTgzODgxLCA3Nzk0OSwgMCwgCisgICAgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDgzNDUzLCA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIAorICAgIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDcwMDUxLCA3MTg5NywgODM0NTEsIDEyNzE4NywgOTYzNSwgMTI2MDAsIDg4NzEsIAorICAgIDY3MzY2LCA2ODQ5MSwgMCwgNjQ2OSwgNzQyMjcsIDExODkwMCwgNjUzMDQsIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIAorICAgIDM0MjcsIDQyNDAsIDY3Mzc2LCA2NzM3NSwgNjczNzQsIDY3MzczLCA0MjkxNiwgMTI5MTU1LCAxMjc0ODksIDY3Mzc3LCAKKyAgICA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDY3MzcyLCA2NzM3MSwgMzQ5NCwgNjczNjksIDM0MTYsIDEyOTE0OCwgNzc5NzYsIAorICAgIDE5NTAxMCwgOTgzMTkyLCA3ODU2NiwgMCwgMTI3MDQ3LCA2NTg5OCwgOTgzMjQ2LCA2NTMxMiwgNTQ0NywgMTAwODk1LCAKKyAgICAxMjg5NSwgNjQzODIsIDQwMTAsIDgzMTU0LCA0MTEwNiwgNzQzNTcsIDY0NDQ4LCA5Mzk5NCwgNDExMDUsIDcwNjc3LCAKKyAgICA2NTgyMCwgNjIzMiwgNjgyMzMsIDEwMTEwNCwgMTAxMTAzLCA0MzYwOCwgMTAxMTA1LCA3ODExOCwgNjUzOCwgNDMzNSwgCiAgICAgNzgzNjQsIDM5NDEsIDQxMTIyLCAxMTA2MSwgNzgzNjMsIDY0ODkyLCA5MTEzLCAxOTU0LCAxMjE1NSwgOTgzNjc0LCAKLSAgICA0Mjg3OCwgMTE1MDAsIDY3NDA1LCAxMjgxNTIsIDc0NTc4LCAwLCA2NTgzMiwgMTI4NjY3LCAwLCA3MDc4OSwgNjczMzMsIAotICAgIDExOTIzMCwgNDU4NiwgMCwgMzUwLCAxMDk1MSwgMCwgNTA5LCA2NzMzNiwgOTgzODc5LCA5MjMwNywgMCwgMCwgNTEzMywgCi0gICAgNjczODIsIDAsIDk1MDAsIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCA5ODMwODAsIDY3MzgxLCA2NzM4MCwgMjQ5NiwgCi0gICAgMTE1MTYsIDk0NCwgNjc4MTcsIDM4OTAsIDEyMTY4LCAxNDM4LCA2NzgxMywgNjgzMzUsIDcwMDAzLCA0MTk0NywgMTIyMCwgCi0gICAgMTIwODI4LCA3NDk0NiwgNzA4NTQsIDc0MDU4LCAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgCi0gICAgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAxMjgyOTUsIDcwNzk3LCA4ODc3LCAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIAotICAgIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCA2MDYwLCA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCAKLSAgICA4Mjk0OCwgMCwgMTkwNiwgMTIxMTY5LCAxMTUzMiwgNzQwNzMsIDEyNzMzOCwgMCwgMTk4NSwgNjI5NiwgOTU4MiwgNzUwNzEsIAotICAgIDY0Mjg3LCAxMjg0MDYsIDc4MTE1LCAxMTQyOCwgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDAsIDY4MDg4LCAKLSAgICA3NzAzLCA4ODQwLCA4MDM1LCAxMjA3MTEsIDAsIDkyMjMwLCA5ODMzNTcsIDYxMjksIDEyODQzNywgNzg1ODYsIDEyODI2OCwgCi0gICAgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAxMTIwNiwgMTMxMzYsIDAsIDAsIDcwMTAyLCA2Mzg4NiwgNzA0NTAsIDk2MDUsIAotICAgIDcxMzA4LCAxMzIyMCwgNjczNDgsIDY3MzU0LCA1NTE0LCA3NDk2MCwgOTIyOCwgNjczNDksIDY3MzU2LCA2NzM0NiwgNTI0MCwgCi0gICAgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDc0NTI2LCA2NjY3NiwgNjU4NzMsIDAsIDEyODE3OSwgMCwgOTUwMSwgMTIwODMyLCAKLSAgICAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIDY4NzU5LCAKLSAgICA3MDMxMiwgMTk1MDg1LCA2ODgyMCwgMTIxOTMsIDcwNDAwLCAxMjcyNDAsIDEyMTM3MywgMCwgOTgzMzU1LCAxOTkzNSwgCi0gICAgMTIwNzMzLCA5MjE2MiwgNjg4MDEsIDEyNzk1NSwgODMxMzMsIDkzMDU3LCA1Mjc1LCAxMjAxOTUsIDEyODYzMiwgODYzNywgCi0gICAgNDM2ODIsIDAsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCA2ODc4NCwgCi0gICAgMjQyNiwgMTIwNDIsIDkyMTk0LCA5ODM5MTEsIDk1MzcsIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIAotICAgIDU1MjI0LCA0OTgxLCA3NDY0NCwgMCwgNDE2NDYsIDExNjY3LCA0MjY4NiwgNzQ5OTEsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgCi0gICAgNDE2NDksIDc1ODksIDEyODc3NiwgMCwgMzIzNywgMCwgNjY4OTUsIDY4Mjk2LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAKLSAgICAwLCA5ODM4MTQsIDk0MDU2LCAxMTE3NCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIAotICAgIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMTI4Njc5LCA0MTY5OSwgCi0gICAgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMTE5MjQ1LCAxMjg0OTQsIDgxMDYsIDQxMjgsIDAsIDYyNzQsIDQ0OTQsIDk4MzA4MiwgCi0gICAgNDAxMiwgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCA3ODI2MCwgMTIwOTczLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgCi0gICAgNzYxMSwgMTIxMDczLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgCi0gICAgNzUxMiwgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgMTI3MzUzLCAKLSAgICAxMjAxNjYsIDEyODY4OCwgMzk4NSwgNjY0MjUsIDY1ODYwLCA0MTg1MSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDcxODczLCAKLSAgICAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIAotICAgIDExOTI2MywgMTIwODU1LCAxMjc5NDgsIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMTk0ODU1LCAwLCA0MjY1NywgNzEwNzUsIAotICAgIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIAotICAgIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDEyNjQ3NSwgMzg5MSwgMTI3MjA1LCAwLCAyMzM3LCAKKyAgICA0Mjg3OCwgMTE1MDAsIDY3NDA1LCAxMjgxNTIsIDc0NTc4LCAwLCA2NTgzMiwgMTI2OTc4LCAwLCA3MDc4OSwgNjczMzMsIAorICAgIDExOTIzMCwgNDU4NiwgMTk0OTIyLCAzNTAsIDEwOTUxLCAxMDEwODEsIDUwOSwgNjczMzYsIDEwMDkwNCwgOTIzMDcsIAorICAgIDEwMDkwMywgMCwgNTEzMywgNjczODIsIDEyODgyNywgOTUwMCwgMTAwOTA2LCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgCisgICAgOTgzMDgwLCA2NzM4MSwgNjczODAsIDI0OTYsIDExNTE2LCA5NDQsIDY3ODE3LCAzODkwLCAxMjE2OCwgMTQzOCwgNjc4MTMsIAorICAgIDY4MzM1LCA3MDAwMywgNDE5NDcsIDEyMjAsIDEyMDgyOCwgNzQ5NDYsIDcwODU0LCA3NDA1OCwgMTU3MSwgNDI2MzAsIAorICAgIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMTI4Mjk1LCA3MDc5NywgODg3NywgCisgICAgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgNjA2MCwgCisgICAgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgODI5NDgsIDAsIDE5MDYsIDEyMTE2OSwgMTE1MzIsIDc0MDczLCAKKyAgICAxMDEwNjgsIDEwMTA2NywgMTk4NSwgNjI5NiwgOTU4MiwgNzUwNzEsIDY0Mjg3LCAxMjg0MDYsIDcwNzE3LCAxMTQyOCwgCisgICAgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDEwMTA3NiwgNjgwODgsIDc3MDMsIDg4NDAsIDgwMzUsIAorICAgIDEyMDcxMSwgMTk0NjAyLCA5MjIzMCwgOTgzMzU3LCA2MTI5LCAxMjcwNjUsIDc4NTg2LCAxMjgyNjgsIDE5NDk2NSwgNzg3NCwgCisgICAgODY4MSwgNzI4MDAsIDExMjA2LCAxMzEzNiwgMCwgMTI5MzA1LCA3MDEwMiwgNjM4ODYsIDcwNDUwLCA5NjA1LCA3MTMwOCwgCisgICAgMTMyMjAsIDY3MzQ4LCA2NzM1NCwgNTUxNCwgNzQ5NjAsIDkyMjgsIDY3MzQ5LCA2NzM1NiwgNjczNDYsIDUyNDAsIDk4MTEsIAorICAgIDEwMDEyLCAzMDk2LCA5MTc4MDksIDAsIDc0NTI2LCA2NjY3NiwgNjU4NzMsIDE5NDYwOCwgMTI4MTc5LCAxMDA5MTgsIAorICAgIDk1MDEsIDEyMDI3NSwgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMTAwOTIwLCAxNDY3LCAxMDE1OCwgCisgICAgMTAwNDAsIDc0MDk2LCA5NTE5LCA2ODc1OSwgNzAzMTIsIDEwMTA1MiwgNjg4MjAsIDEyMTkzLCA3MDQwMCwgMTI3MjQwLCAKKyAgICAxMjEzNzMsIDcyODE3LCA5ODMzNTUsIDE5OTM1LCAxMjA3MzMsIDkyMTYyLCA2ODgwMSwgMTAwNjgyLCA4MzEzMywgOTMwNTcsIAorICAgIDUyNzUsIDEwMTA2MywgMTI4NjMyLCA4NjM3LCA0MzY4MiwgMTI4NTc2LCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCAKKyAgICA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgNjg3ODQsIDI0MjYsIDEyMDQyLCA5MjE5NCwgMTIxMTg3LCA5NTM3LCAKKyAgICAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCA1NTIyNCwgNDk4MSwgNzQ2NDQsIDAsIDQxNjQ2LCAKKyAgICAxMTY2NywgNDI2ODYsIDc0OTkxLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIDQxNjQ5LCA3NTg5LCAxMjg3NzYsIDEyODI3MSwgCisgICAgMzIzNywgMCwgNjY4OTUsIDY4Mjk2LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAwLCAxMjc1MDksIDk0MDU2LCAKKyAgICAxMTE3NCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIDQxOTQ1LCA3MTMyLCA0MTk0MSwgCisgICAgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMTI4Njc5LCA0MTY5OSwgMTA3NjIsIDQzNzgwLCAKKyAgICAxMjk5OSwgMTE5MjQ1LCA3MDY4OSwgODEwNiwgNDEyOCwgOTgzNzUxLCA2Mjc0LCA0NDk0LCA5ODMwODIsIDQwMTIsIAorICAgIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgNzgyNjAsIDEyMDk3MywgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIDc2MTEsIAorICAgIDEyMTA3MywgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIAorICAgIDc1MTUsIDM4NjgsIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDEyNzM1MywgMTIwMTY2LCAKKyAgICAxMjg2ODgsIDM5ODUsIDY2NDI1LCA2NTg2MCwgNDE4NTEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA3MTg3MywgMTI4MDksIDY0MDYsIAorICAgIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDEyNTIxNywgMzg1MSwgODEzMiwgNzQzMjUsIDExOTI2MywgCisgICAgMTIwODU1LCAxMjc5NDgsIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMTk0ODU1LCAwLCA0MjY1NywgNzEwNzUsIDc2NDMsIAorICAgIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIDc2NDcsIAorICAgIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDEyNjQ3NSwgMzg5MSwgMTI3MjA1LCA5ODM4MDMsIDIzMzcsIAogICAgIDE3MzUsIDc0MzI0LCAxMTEzNCwgMjM2MywgMTIxMDA4LCA5MjQ0MywgNDM1NjEsIDY3NzA2LCAxMjgwMzIsIDc0MTQ2LCAKICAgICAxODYwLCA3NDk1LCA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgNzg3NTMsIDEyMDM0NywgNzcyNywgCi0gICAgMCwgODQ5OCwgNjk4MTgsIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCA3NjkwLCAKLSAgICAwLCAxMjUzMywgOTgzNzk2LCA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMTI4NDQ0LCA3NDgwMCwgNzEwNTEsIDY3OTc0LCAKLSAgICAxMDg1OSwgMTI4NjUwLCA5ODM4MDEsIDYzODk0LCAxMjA3NjAsIDEyMjgyLCA2NjE5MiwgOTgzNTgzLCA3NDU5MiwgODg1MCwgCi0gICAgNzQyNzUsIDkyMzgsIDEwNjE3LCA2ODA2MywgOTE3OTA5LCA5MjYyNSwgOTE3ODAxLCAxMjc5MSwgMCwgOTQwNjksIAotICAgIDEyNzg0MywgNDQ0NywgNzEwNjUsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCA5ODM0NDksIDc0NjM5LCAxMjc5MCwgCi0gICAgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTE5MjM5LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCAKLSAgICA0MTMxMCwgMTIwNzMwLCA0MTM5OSwgMCwgMCwgNTUyNTgsIDAsIDEyNjkwLCAxMjc3NjMsIDAsIDQzNjcyLCAxMjc4NDAsIAotICAgIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgOTgzODA4LCAyNzgsIDEyMTIwNCwgNDE0MDUsIDQzODcxLCAwLCAxMDA3NywgCi0gICAgNjM4NTMsIDc0NTU3LCA0MjU4NiwgMCwgMCwgNjAwMiwgNjczMzUsIDQzNTUzLCAxMTE4OSwgNjczMzgsIDY3MzM3LCAKLSAgICAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAxMjAyNjMsIDEyMDk0MCwgOTQwNDIsIDg2NDYsIDEyODI1NywgNzc4MjksIAotICAgIDcxMzYwLCAwLCA2NDEzLCA2NTUwLCAxMTM3NTksIDE5NDAsIDI4MDksIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgCi0gICAgMTA2NzgsIDEwMDQ0LCA2ODg0MSwgMTI4MTIxLCA5ODM4MTYsIDY4MjkwLCA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCAKLSAgICA2NjYxNCwgMCwgMCwgMCwgMTAyOTcsIDAsIDM3NDIsIDY3MzMxLCAzOTU5LCAwLCAxMjA0NjYsIDAsIDI0NjcsIDY4ODA2LCAKLSAgICA2MDAzLCA2Mzg0NCwgNjY2MywgODA0MCwgOTgzMjIwLCA0Mzc1OCwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgOTIxMCwgCi0gICAgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCA5MjM2MSwgMTE1NDAsIDQzNTQ2LCA2NjkyLCA2ODM3LCA0MTA2MCwgMTI4MDE4LCAKLSAgICA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIDY3MzQwLCA2NzM0NywgNjUyNTYsIDY3MzQ1LCAKLSAgICA2NzM0NCwgOTgzMzUyLCA5ODMyNjYsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAxMjgyMzYsIDY3MzUyLCAKLSAgICA2NzM1MSwgNTUxNiwgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDY3MzUzLCA1NDQsIDEyMDQ1LCA2Mjc4LCA3NDYzMiwgCi0gICAgNTUxNSwgMTI5MTg2LCAxMjA4ODQsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAwLCA1NTE3LCA3MDExNiwgNzQyMjUsIAotICAgIDc0ODQxLCA2Nzg4NCwgMTI4NDE0LCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAxMjAxOTksIAotICAgIDExODg4MywgNjc4NzksIDEyNzE4OCwgMTkwMiwgNjc4ODcsIDk2MzgsIDEyOTc2LCAxMjY1NDYsIDEyNDgzLCAxMjM2OCwgCi0gICAgNDE3NjksIDQyNzI2LCA0MTc2NSwgNzM2MSwgNjY2NywgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgCi0gICAgNDI2NzcsIDY3ODg5LCA5MzA0MCwgMTMxMSwgMTI4OTQ5LCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgCi0gICAgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMTIwODM3LCA5NDksIDc3ODgyLCA5MTc5NjgsIDYxNDgsIDg2MDUsIDQyMjUzLCAKLSAgICA3ODE3NywgNjY5MDYsIDAsIDQyNzE1LCA3MTQzMiwgNzAyODIsIDk4MzM3MywgNjM4NzEsIDAsIDQxNzk2LCAxMjY5LCAKLSAgICA2NTMwLCAxMjE0MTQsIDY1MDU3LCA3MDQ5MywgNTE0NCwgMTIyMjEsIDQyNzE2LCA2ODI5OSwgNDQzMSwgNDMzMSwgCi0gICAgOTgzNzI5LCAxMjg2NzUsIDQxODM0LCA1Mjc5LCAxMjEzNjIsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgOTI5NTksIDAsIAotICAgIDc4MTY1LCA2NjAzNiwgNzAxNjYsIDEyMDkzNywgNjQyOCwgNDIyNzAsIDk4MzcyNiwgOTgzNTk2LCA0MzA1OSwgNDI2NjYsIAotICAgIDUyNTYsIDEwNjcsIDI1NSwgMTIxMzEsIDEyODc0MiwgOTQ5MywgNzQ5OTAsIDQxMDE0LCAxMTc5MywgMTk0OTIwLCAKLSAgICAxMjExOTUsIDc0Mzk0LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCA5ODM4NTQsIDExOTYzMiwgNzA0MjcsIDY1NjAsIDcwMTYsIAotICAgIDc0Mjc0LCA2OTk4NiwgNDM1NTYsIDM5MjksIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIAotICAgIDEyNzk2LCAxMTk1MywgMCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCisgICAgOTgzNjU4LCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIAorICAgIDc2OTAsIDAsIDEyNTMzLCA5ODM3OTYsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAxMjg0NDQsIDc0ODAwLCA3MTA1MSwgCisgICAgNjc5NzQsIDEwODU5LCAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCA5ODM1ODMsIDc0NTkyLCAKKyAgICA4ODUwLCA3NDI3NSwgOTIzOCwgMTA2MTcsIDY4MDYzLCA5MTc5MDksIDkyNjI1LCA5MTc4MDEsIDEyNzkxLCAxMjg5NzYsIAorICAgIDk0MDY5LCAxMjc4NDMsIDQ0NDcsIDcxMDY1LCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMTAwODc4LCA3NDYzOSwgCisgICAgMTI3OTAsIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAxMjc5MiwgNDIyMzIsIDExOTIzOSwgMTc0NCwgMTI3ODksIDEwMzY2LCAKKyAgICAxMjMxNywgNDEzMTAsIDEwMDg2NSwgNDEzOTksIDEwMDgyMiwgMTI2NjQ5LCA1NTI1OCwgMCwgMTI2OTAsIDEyMDA4MywgMCwgCisgICAgNDM2NzIsIDEyNzg0MCwgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCAxMTk2NTgsIDI3OCwgMTIxMjA0LCA0MTQwNSwgCisgICAgNDM4NzEsIDEwMDg2NywgMTAwNzcsIDYzODUzLCA3MDY2NywgNDI1ODYsIDkxNzg4NiwgNzQxMTQsIDYwMDIsIDY3MzM1LCAKKyAgICA0MzU1MywgMTExODksIDY3MzM4LCA2NzMzNywgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMTIwMjYzLCAxMjA5NDAsIAorICAgIDk0MDQyLCA4NjQ2LCAxMjgyNTcsIDc3ODI5LCA3MTM2MCwgMCwgNjQxMywgNjU1MCwgMTEzNzU5LCAxOTQwLCAyODA5LCAKKyAgICA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIDEwNjc4LCAxMDA0NCwgNjg4NDEsIDEyODEyMSwgOTgzMzUwLCA2ODI5MCwgCisgICAgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgNjY2MTQsIDAsIDEyMjkyMSwgMTI3OTEyLCAxMDI5NywgMTk1MDU3LCAKKyAgICAzNzQyLCA2NzMzMSwgMzk1OSwgMCwgMTIwNDY2LCAwLCAyNDY3LCA2ODgwNiwgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIAorICAgIDk4MzIyMCwgNDM3NTgsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDkyMTAsIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgCisgICAgOTIzNjEsIDExNTQwLCA0MzU0NiwgNjY5MiwgNjgzNywgNDEwNjAsIDEwMTA5NywgNDY2OCwgOTA4MywgOTgzMjQ0LCAwLCAKKyAgICA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIDY3MzQwLCA2NzM0NywgNjUyNTYsIDY3MzQ1LCA2NzM0NCwgOTgzMzUyLCAKKyAgICA5ODMyNjYsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAxMjAyNTgsIDY3MzUyLCA2NzM1MSwgNTUxNiwgCisgICAgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDY3MzUzLCA1NDQsIDEyMDQ1LCA2Mjc4LCA3NDYzMiwgNTUxNSwgMTI5MTg2LCAKKyAgICAxMjA4ODQsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAxMjA1NDEsIDU1MTcsIDcwMTE2LCA3NDIyNSwgNzQ4NDEsIAorICAgIDY3ODg0LCAxMjg0MTQsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDEyMDE5OSwgMTE4ODgzLCAKKyAgICA2Nzg3OSwgMTIxNDQ4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDc0Mzk0LCAxMjQ4MywgMTIzNjgsIDQxNzY5LCAKKyAgICA0MjcyNiwgNDE3NjUsIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCAKKyAgICA2Nzg4OSwgOTMwNDAsIDEzMTEsIDEwMDg4MiwgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIDEwMDY0MywgCisgICAgNjkxNywgNzgxNTUsIDEyMDgzNywgOTQ5LCA3Nzg4MiwgOTE3OTY4LCA2MTQ4LCA4NjA1LCA0MjI1MywgNzgxNzcsIDY2OTA2LCAKKyAgICAxMDA2NDQsIDQyNzE1LCA3MTQzMiwgNzAyODIsIDEwMDY0NywgNjM4NzEsIDEyODI5NiwgNDE3OTYsIDEyNjksIDY1MzAsIAorICAgIDEwMTA0OSwgNjUwNTcsIDcwNDkzLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDY4Mjk5LCA0NDMxLCA0MzMxLCAxMDEwNDUsIAorICAgIDEyODY3NSwgNDE4MzQsIDUyNzksIDEyMTM2MiwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCA5Mjk1OSwgMCwgNzgxNjUsIAorICAgIDY2MDM2LCA3MDE2NiwgMTAwMzg3LCA2NDI4LCA0MjI3MCwgOTgzNzI2LCA5ODMxNjMsIDQzMDU5LCA0MjY2NiwgNTI1NiwgCisgICAgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCA3Mzg5NCwgNDEwMTQsIDExNzkzLCAxMjY0NjcsIDc4NzQwLCAKKyAgICA3MDcyOCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgMTI1MjE2LCAxMDA2NTgsIDcwNDI3LCA2NTYwLCA3MDE2LCA3NDI3NCwgCisgICAgNjk5ODYsIDQzNTU2LCAzOTI5LCA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAxMjc5NiwgCisgICAgMTE5NTMsIDEyNzM4MCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCiAgICAgNDM4NDUsIDc0MzE1LCA3NDM2MSwgODI1MywgODgxNywgMTEzNiwgOTE3OTMxLCA0MzU2MywgOTIyMzIsIDEyODkxNCwgCi0gICAgNjY0MTAsIDczOTIsIDgyMzAsIDkzNjUsIDcxMTk0LCAxMjcxMDksIDk4MzYwNywgNjY5MTUsIDEyODQwMiwgNDA0MSwgMCwgCisgICAgNjY0MTAsIDczOTIsIDgyMzAsIDkzNjUsIDcxMTk0LCAxMjcxMDksIDE5NDg3OCwgNjY5MTUsIDEyODQwMiwgNDA0MSwgMCwgCiAgICAgMjM1NywgNDMyNDAsIDEyNzg2LCAyMjksIDQzODM0LCAxMTk4ODQsIDQ0MDA0LCA3MTQyLCAxMTk4ODEsIDEyMzUwLCAKICAgICA2NTU1NCwgMTE5ODgyLCA3MTMwNSwgMTE5ODc2LCAxMjc4NSwgNjM4NjMsIDQzNzk1LCA3NzcwLCAxMDcxMiwgNjQ4NTMsIAogICAgIDEyNjg2LCA0MzgzMSwgNDIzNzUsIDY1NzgwLCAxMjQ5NDQsIDY2MzUyLCAxMDQ3MCwgNzExMTksIDExMDU5LCAxMDc5MSwgCi0gICAgOTE3OTQ0LCA0NTAsIDExOTMyOCwgMTI3MjU0LCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCA0NDAwOSwgCisgICAgNzI3MjQsIDQ1MCwgMTE5MzI4LCAxMjcyNTQsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCAKICAgICA3ODI4NCwgNjYzMzgsIDY2Mzk1LCA5MTc4MzIsIDE4MzksIDExODc5OSwgOTgzMjE5LCAxMDkyNywgMTcwMSwgOTgzNjY0LCAKICAgICAyMzg4LCA0MTc0OSwgNDE3NjEsIDU0NTMsIDgzNjEsIDExOTg2NSwgODk1LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIAotICAgIDkyNDkzLCA3ODY3NywgOTgzMTM3LCA5MjQyOSwgNjk5ODMsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCA5ODMwNDQsIAotICAgIDEyODAxMywgNjU4MTIsIDEyMDY3NSwgNzAwMDEsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCA5MjYwMCwgMTI3MDUzLCA0MjcwMCwgCi0gICAgMTk0ODA1LCAxMjc5ODAsIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDEyNzg0NCwgMCwgNDQ5MywgNDMzNiwgCi0gICAgMTI5MTcxLCAyMzE0LCA0MzYwMiwgNzg4MjYsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgCisgICAgOTI0OTMsIDc4Njc3LCA5ODMxMzcsIDkyNDI5LCA2OTk4MywgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDE5NDg0OSwgCisgICAgMTI1MTg5LCA2NTgxMiwgMTAwNjMzLCA3MDAwMSwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDkyNjAwLCAxMjcwNTMsIDQyNzAwLCAKKyAgICAxOTQ4MDUsIDEyNzQwMywgMTI4MDQwLCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMTI3ODQ0LCAwLCA0NDkzLCA0MzM2LCAKKyAgICAxMjkxNzEsIDIzMTQsIDQzNjAyLCA0MTgwOCwgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCAKICAgICA0NDg5LCA2ODc1MCwgMTI1MTE2LCAxOTQ3OTMsIDE5MTIsIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDE5NDc2MSwgODg2NywgCiAgICAgMTAyNTAsIDEwMjU4LCAyNzEyLCAxNjM1LCA3MTA2NCwgMTQxMCwgNzg3NjMsIDk4MzI1MiwgMTE4ODc4LCA5ODM1NjcsIAotICAgIDEyODcxNSwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyMTI3NCwgNzQ2NDEsIDQ4OTIsIDc0MDE2LCAKKyAgICAxMDA5ODgsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjEyNzQsIDc0NjQxLCA0ODkyLCA3NDAxNiwgCiAgICAgMTIxNTAyLCA2NTQyLCA0MTk1NywgMTI4ODY1LCA1Nzc3LCAxMjcxNjcsIDc1OSwgNjU3NDksIDIwNzksIDY1MjQ4LCAKLSAgICAxMjc4OCwgNjQ0ODcsIDY0NTUyLCA5MzA2MywgMTAyMjMsIDQyMDYyLCAxMjEyNzksIDAsIDc0MjQ2LCAzNjY4LCA2NTc1NCwgCisgICAgMTI3ODgsIDY0NDg3LCA2NDU1MiwgOTMwNjMsIDEwMjIzLCA0MjA2MiwgMTAwNjQwLCAwLCA3NDI0NiwgMzY2OCwgNjU3NTQsIAogICAgIDQzNTYwLCAxMjIyNiwgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgNzE0NjMsIDE5NDc4NSwgMTk0Nzg4LCA0MzYxOCwgCi0gICAgNjU3NDcsIDEwOTM3LCAyOTYyLCAwLCAyMzIxLCAzNTg3LCA2NTc0NSwgNjcyMzYsIDg5MjEsIDk5NTIsIDEyODk0MSwgMCwgCi0gICAgNDI3MTQsIDk5NTEsIDQzNDA5LCAxOTQ3NzAsIDI5NDksIDY2MDEyLCAxOTQ3NzUsIDE5NDc3NCwgMjk1OCwgNjgzNTksIAotICAgIDQxODIwLCAyMzAwLCAyMzk1LCAxMjAwNjEsIDk5NzYsIDEyMDA0MywgMTIwMDUwLCA3MTg5NiwgNjgyMjAsIDEyODE0MywgCisgICAgNjU3NDcsIDEwOTM3LCAyOTYyLCAxMjExNzEsIDIzMjEsIDM1ODcsIDY1NzQ1LCA2NzIzNiwgODkyMSwgOTk1MiwgMTI4OTQxLCAKKyAgICAwLCA0MjcxNCwgOTk1MSwgNDM0MDksIDEwMDY2OCwgMjk0OSwgNjYwMTIsIDE5NDU4MiwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCisgICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyMDA2MSwgOTk3NiwgMTAwOTc1LCAxMjAwNTAsIDcxODk2LCA2ODIyMCwgMTI4MTQzLCAKICAgICA0MjgwOSwgNDI4MDcsIDcwNzk4LCA2NjI5MCwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIAotICAgIDQxODk4LCAyMzYwLCA0MTc5NCwgOTE3OTQyLCA3MDc5NiwgOTIxNjMsIDkzMDMzLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIAotICAgIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgCisgICAgNDE4OTgsIDIzNjAsIDQxNzk0LCAxMDA2NjMsIDcwNzk2LCA5MjE2MywgOTMwMzMsIDk4MzY0OCwgMjQxOCwgOTgzMDk4LCAKKyAgICAyNDExLCAxMTMzNiwgNzk5LCA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgMTk0NjA0LCA0MTc3MiwgNDI4MTMsIDIzMTcsIAogICAgIDEwMjYwLCAxMTg5ODAsIDU1Mjg0LCA3ODY4NiwgMTI3MTc3LCAxMDM4NCwgMTk0Nzk0LCAxMjExNDcsIDEyOTExMSwgNzc1MywgCi0gICAgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCA3MDE5OSwgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDAsIDY4MDY3LCAKKyAgICAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMTI3MDE1LCA2ODA2NywgCiAgICAgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCAKICAgICA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgOTE3Nzc5LCA3NDE0NSwgMTI3OTQzLCAxMDI2NCwgMTAyODAsIAotICAgIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCA3ODY4NCwgOTE3NTU0LCA5MjI2MCwgNDE4ODcsIDAsIDQ4NjIsIDk3MzUsIAorICAgIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCA3ODY4NCwgOTE3NTU0LCA5MjI2MCwgNDE4ODcsIDEwMTAyNSwgNDg2MiwgOTczNSwgCiAgICAgNjUzNywgMTIwNTkxLCA3NDI4NiwgMzkxNCwgOTIxNzgsIDY4ODIzLCA5MDY1LCAxMjk2MSwgMCwgMTIwNDU2LCA5MjI1MywgCi0gICAgMTI4MjA0LCAyODksIDEyODcxNCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIDEyMDUxNCwgOTE3OTc4LCA0NjkzLCA3Mzg5MywgCi0gICAgNDI3MjQsIDY5OTc3LCA0Njg4LCAxMjA0NTQsIDEyODUwNywgMCwgNjc5OTQsIDgyMzgsIDMxMTAsIDEyMDE2MiwgMzU2NSwgCi0gICAgMTIwMTYzLCA2NTI4LCA3ODM4NywgNDMwMzUsIDY5ODk4LCAyMTgsIDk4Mzg1MCwgMTUyMCwgMCwgNDc4NiwgOTgzMTY4LCAKLSAgICA0MzIyNSwgNDYwMiwgOTI0MDAsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMTIxMTU3LCAxMjAxNTYsIDQzOTc4LCA4OTg4LCAKLSAgICA4ODg4LCA5MjcyNCwgNzQ4MTIsIDY5NzA5LCA5ODM5NjcsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIDEyMTQzNiwgMCwgCi0gICAgOTk3NSwgMTEzNzA0LCAxMTk5MDIsIDQ2ODksIDg5MzIsIDAsIDY1NTYwLCAxMTkyMDksIDc0NDQxLCA3ODgxMCwgMCwgMCwgCi0gICAgNjc5ODcsIDAsIDEyODgyOCwgMCwgNjc5ODksIDExOTAyOSwgMTAwNjUsIDgyMDcsIDcxOTAwLCA5MjYxMywgMTI4MDExLCAKLSAgICAxMjEwMjgsIDY2MiwgMTI4NzIwLCA5MjQ0LCAxOTQ4NjMsIDgzMTgzLCAxMTkyNjEsIDk4MzQzMCwgMCwgMTIwOTAxLCAKLSAgICA5MTc4MzgsIDQxOTI5LCAwLCA3MTA4NCwgNjY2NzQsIDQxOTI2LCA2OTk5NCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIAotICAgIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgNjQ3NSwgMTk1MDA0LCA4MzQ3OSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgCi0gICAgMTI4NDg2LCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDEyODQyNSwgOTE3OTQ1LCA3NDAxNSwgMTE1ODIsIDkyNzY4LCAKLSAgICAxMjI4MSwgMTI3MDQzLCA2NTQ0LCAxMzI0MSwgOTM5NjEsIDY5NzgyLCAxMjUwMTQsIDE5NDg2MCwgMTE3NjUsIDY1MjU4LCAKLSAgICAxMDM2OSwgMCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgMTUwMCwgMjAzNiwgOTg2LCAxOTQ4NTksIDY0Mzk0LCA1NzgxLCAKLSAgICA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCA3NDAyMSwgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDgzNDQ0LCAKLSAgICA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgNzE5MDcsIDEyMDQxMCwgMCwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgCi0gICAgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCA3NDEzMSwgMTI0MiwgNjU1MTQsIDEyMTE3MCwgNjM5NDAsIDEyMTM2MywgCi0gICAgNjQ1MzMsIDcxODgzLCAxMjA0NDYsIDY3ODQyLCAxMTk5MCwgOTI0MDUsIDYzOTM5LCA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIAotICAgIDc4NjcxLCA2NDgyOSwgOTMwMjAsIDY5NDMsIDkxNzkzNCwgNTg1OSwgMCwgMjg1OCwgOTgzMzYzLCA3NDI5NCwgOTgzOTE0LCAKLSAgICA2OTIzOSwgMCwgNjc4NzEsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgNjc3MDEsIDI3NTEsIDEyNjYyLCAyNzYzLCAKLSAgICA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDY2NDI0LCA2Mzk5MiwgMCwgNjM5MjAsIDc0MTI4LCAKLSAgICAyODU2LCAxMTk5MTAsIDQ3LCA2OTkwOCwgNzEwNTMsIDY1ODU4LCAxOTQ4MDYsIDAsIDY3ODI5LCA3ODk5LCAwLCA4NDE3LCAKLSAgICA0Mzc5OCwgNzA3MiwgNzQxOTUsIDAsIDQwMzMsIDEyMTI4OSwgNDM5OTIsIDEyMTA4MSwgMCwgMjEyLCA2NDYwMCwgMTkwMywgCi0gICAgMTIzMjAsIDgzNDg0LCAxMjA4OTQsIDE5NDU2MywgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCA5MzA2NCwgMCwgMCwgCi0gICAgMTE4Nzk4LCAxMjkxLCA3NDgyOCwgMCwgMTIwNDM1LCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAxMjgxOTgsIAotICAgIDEyMTIxNiwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCA4MjQ2LCAxMjg4NzQsIDkzMDY2LCAwLCAxMjA0MzMsIDAsIAotICAgIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDAsIDY0NDI2LCA5ODMwOTIsIDE5NDk0OCwgOTE3ODY2LCAKLSAgICA5MTc3ODgsIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMTk4ODcsIDEyODgxMiwgOTI3MTUsIDcwNzg4LCAxMzIwLCAKLSAgICAxMjE0NjEsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIAotICAgIDk4MjAsIDExOTg5MiwgMTIxODcsIDk4Mzg0MSwgNzEwNDEsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCA2NzY1MCwgOTgzMjI3LCAKLSAgICAwLCA3NDgyMiwgMCwgNzQ4MjYsIDY0NzMzLCA5ODMyMTQsIDEyNzg5OCwgMzQ5MSwgNjcxNDYsIDEyMTE0MiwgMTI4MjE5LCAKLSAgICAzNTE0LCA2NTQ4NSwgNzI0MjgsIDc0OTIsIDEyODg2MCwgNzQ2MDUsIDkyNDgzLCA3NTE0LCA5ODMzNjksIDEyNjU4NSwgCi0gICAgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgNjM5MjEsIDEyMTE3OCwgNjM5MjUsIDEyMDE2MSwgNzYxMCwgMjE5LCAKLSAgICAxMjgxNTgsIDc4NzIyLCA2OTIsIDQzNTg4LCA2ODQ4NSwgNDE2MzUsIDQzMjQxLCA5Njg4LCA3MTQ3LCA5NTM1LCAwLCAKLSAgICA5Mzk5MSwgMCwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgMCwgNzE0OSwgNzQ1MywgMCwgODAxMywgNjYzOTYsIDkyMzAxLCAKLSAgICAwLCA4ODk1LCA1MjUzLCA3MDAyNSwgNTQ1OCwgOTE3NjI5LCAyODY2LCAxMjkwNDUsIDEyNzg2MCwgMTEwOTgsIDY4NDMzLCAKLSAgICA2NzAwLCAxMjA0ODQsIDAsIDEyMDU4MywgMTk0ODI0LCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY3NywgCi0gICAgNjM5OTcsIDk2MDQsIDc4NzAwLCA3NDQxLCA2MzgyNiwgNjc5NzAsIDgzNDM1LCA2NDM5MiwgOTI2MjYsIDk4MzY4NywgCi0gICAgMjg0NCwgNzQ2MTAsIDQxOTc0LCA2NzM5NywgMTIxMzksIDY3OTcxLCAwLCAwLCAzMzU4LCA2NTI5NSwgOTgzODk5LCAzMTA0LCAKLSAgICAxOTQ3MzQsIDAsIDEyMTMwNCwgOTgzMjM1LCA1MzA4LCA4MzQzNCwgMjkwLCAwLCAxMjEzMzgsIDI4NjIsIDI3OTIsIAotICAgIDE5NTA4OCwgOTI5NjMsIDc3OTg0LCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgCi0gICAgMTgxNCwgNzg0NjQsIDEwMjQwLCA2NjI4NSwgNzQzMDUsIDEyODM4MiwgNzQ1MjgsIDY1OTAzLCA3MTQ1NCwgNDI2NDYsIAotICAgIDc2MDYsIDI1OTEsIDI4MzcsIDQzNDEsIDQzNTEzLCA2NDQ4MiwgOTI1MjQsIDgxNjMsIDY1MjcwLCAwLCA3NzkzMiwgMCwgCi0gICAgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgNzUwMzcsIDEyODM0OSwgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCA5MDcxLCAKKyAgICAxMjgyMDQsIDI4OSwgMTAxMDI5LCA0Njk0LCAxMTQyMCwgNDY5MCwgMTIyODk5LCAxMDA3ODksIDkxNzk3OCwgNDY5MywgCisgICAgNzM4OTMsIDQyNzI0LCA2OTk3NywgNDY4OCwgMTIwNDU0LCAxMjg1MDcsIDk4MzgxMywgNjc5OTQsIDgyMzgsIDMxMTAsIAorICAgIDEyMDE2MiwgMzU2NSwgMTIwMTYzLCA2NTI4LCA3ODM4NywgNDMwMzUsIDY5ODk4LCAyMTgsIDk4Mzg1MCwgMTUyMCwgMCwgCisgICAgNDc4NiwgOTgzMTY4LCA0MzIyNSwgNDYwMiwgOTI0MDAsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMTIxMTU3LCAxMjAxNTYsIAorICAgIDQzOTc4LCA4OTg4LCA4ODg4LCA2NTcyNywgNzQ4MTIsIDY5NzA5LCA5ODM5NjcsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIAorICAgIDEyMTQzNiwgMCwgOTk3NSwgMTEzNzA0LCAxMTk5MDIsIDQ2ODksIDg5MzIsIDEyNTIzOCwgNjU1NjAsIDExOTIwOSwgCisgICAgNzQ0NDEsIDc4ODEwLCAxMjI4ODEsIDEyODcwNywgNjc5ODcsIDAsIDEyMTAyMSwgMCwgNjc5ODksIDExOTAyOSwgMTAwNjUsIAorICAgIDgyMDcsIDcxOTAwLCA5MjYxMywgMTI4MDExLCAxMDEwOTAsIDY2MiwgMTI1MjIxLCA5MjQ0LCAxOTQ4NjMsIDgzMTgzLCAKKyAgICAxMTkyNjEsIDk4MzQzMCwgOTE3ODg5LCAxMjA5MDEsIDkxNzgzOCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgNDE5MjYsIAorICAgIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAxOTUwMDQsIAorICAgIDgzNDc5LCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAxMjg0ODYsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMTI4NDI1LCAKKyAgICA5MTc5NDUsIDc0MDE1LCAxMTU4MiwgOTI3NjgsIDEyMjgxLCAxMjcwNDMsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIAorICAgIDEyNTAxNCwgMTI4ODA4LCAxMTc2NSwgNjUyNTgsIDEwMzY5LCA5ODM0OTgsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIAorICAgIDE1MDAsIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgCisgICAgNzQwMjEsIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA3Mjg3MSwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIAorICAgIDcxOTA3LCAxMjA0MTAsIDEwMDY3MSwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCAKKyAgICA3NDEzMSwgMTI0MiwgNjU1MTQsIDEyMTE3MCwgNjM5NDAsIDEyMTM2MywgNjQ1MzMsIDcxODgzLCAxMjA0NDYsIDY3ODQyLCAKKyAgICAxMTk5MCwgOTI0MDUsIDYzOTM5LCA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgOTMwMjAsIDY5NDMsIAorICAgIDkxNzkzNCwgNTg1OSwgOTgzOTgwLCAyODU4LCA5ODMzNjMsIDY2NzgxLCA5ODM5MTQsIDY5MjM5LCA5ODMzODAsIDY3ODcxLCAKKyAgICAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDY3NzAxLCAyNzUxLCAxMjY2MiwgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAKKyAgICAxMjkyMiwgNzA1MiwgOTE3ODM5LCA2NjQyNCwgNjM5OTIsIDAsIDYzOTIwLCA3NDEyOCwgMjg1NiwgMTE5OTEwLCA0NywgCisgICAgNjk5MDgsIDcxMDUzLCA2NTg1OCwgMTAwODYzLCAxMjkwMzMsIDY3ODI5LCA3ODk5LCA5ODM1NzUsIDg0MTcsIDQzNzk4LCAKKyAgICA3MDcyLCA3NDE5NSwgMCwgNDAzMywgMTIxMjg5LCA0Mzk5MiwgMTIxMDgxLCA5ODMzMTUsIDIxMiwgNjQ2MDAsIDE5MDMsIAorICAgIDEyMzIwLCA4MzQ4NCwgMTIwODk0LCAxOTQ1NjMsIDEwMDk3OSwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCA5MzA2NCwgMCwgCisgICAgOTgzNzU2LCAxMTg3OTgsIDEyOTEsIDc0ODI4LCAwLCAxMjA0MzUsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIAorICAgIDEyMTI1MywgMTIxMjE2LCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDgyNDYsIDEyODg3NCwgOTMwNjYsIDEwMDY4MCwgCisgICAgMTIwNDMzLCAxOTQ1NzAsIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDEyMTQzMSwgNjQ0MjYsIAorICAgIDk4MzA5MiwgMTk0OTQ4LCAyMjMwLCA5MTc3ODgsIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMDA4NjksIDEyMDg1OCwgCisgICAgOTI3MTUsIDcwNzg4LCAxMzIwLCAxMjE0NjEsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgCisgICAgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIDk4MjAsIDExOTg5MiwgMTIxODcsIDk4Mzg0MSwgNzEwNDEsIDU5ODQsIDAsIDQzMzA4LCAKKyAgICA0MzkzLCA2NzY1MCwgMTEzNzg3LCAxMjcwMTMsIDc0ODIyLCAwLCA3NDgyNiwgNjQ3MzMsIDk4MzIxNCwgMTI3ODk4LCAKKyAgICAzNDkxLCA2NzE0NiwgMTIxMTQyLCAxMjgyMTksIDM1MTQsIDY1NDg1LCA3MjQyOCwgNzQ5MiwgMTI4ODYwLCA3NDYwNSwgCisgICAgNzI3NjgsIDc1MTQsIDk4MzM2OSwgMTI2NTg1LCAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCA2MzkyMSwgMTIxMTc4LCAKKyAgICA2MzkyNSwgMTIwMTYxLCA3NjEwLCAyMTksIDEyODE1OCwgNzg3MjIsIDY5MiwgNDM1ODgsIDY4NDg1LCA0MTYzNSwgNDMyNDEsIAorICAgIDk2ODgsIDcxNDcsIDk1MzUsIDE5NDk4OSwgOTM5OTEsIDk4Mzk0NSwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgOTE3OTE4LCAKKyAgICA3MTQ5LCA3NDUzLCAxMTk1NjAsIDgwMTMsIDY2Mzk2LCA5MjMwMSwgMCwgODg5NSwgNTI1MywgNzAwMjUsIDU0NTgsIAorICAgIDE5NDY1MSwgMjg2NiwgMTE4ODA1LCAxMjc4NjAsIDExMDk4LCA2ODQzMywgNjcwMCwgMTIwNDg0LCAxMjkzMDgsIDEyMDU4MywgCisgICAgMTk0ODI0LCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY3NywgNjM5OTcsIDk2MDQsIDc4NzAwLCA3NDQxLCAKKyAgICA2MzgyNiwgNjc5NzAsIDgzNDM1LCA2NDM5MiwgOTI2MjYsIDk4MzY4NywgMjg0NCwgNzQ2MTAsIDQxOTc0LCA2NzM5NywgCisgICAgMTIxMzksIDY3OTcxLCAxMjcxNjYsIDk4MzgzNCwgMzM1OCwgNjUyOTUsIDk4MzI5MiwgMzEwNCwgMTAwNzc5LCAwLCAKKyAgICAxMjEzMDQsIDk4MzIzNSwgNTMwOCwgODM0MzQsIDI5MCwgMCwgMTIxMzM4LCAyODYyLCAyNzkyLCA5MjQ4MywgOTI5NjMsIAorICAgIDc3OTg0LCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMTAxMDA4LCA5MTc5NzEsIDE4MTQsIAorICAgIDc4NDY0LCAxMDI0MCwgNjYyODUsIDc0MzA1LCAxMjgzODIsIDc0NTI4LCA2NTkwMywgNzE0NTQsIDQyNjQ2LCA3NjA2LCAKKyAgICAyNTkxLCAyODM3LCA0MzQxLCA0MzUxMywgNjQ0ODIsIDkyNTI0LCA4MTYzLCA2NTI3MCwgMTk0ODI1LCA3NzkzMiwgMCwgCisgICAgOTExMiwgNzI3MjEsIDg2MywgOTQ5MCwgNzUwMzcsIDEyODAzNywgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCA5MDcxLCAKICAgICA2ODA1NCwgMCwgMzY1NCwgNzc4OSwgOTYzNywgMTIxMTM2LCAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIDkyNDE1LCAKICAgICA2NjU4NywgMTI0OTg3LCAwLCA5MjQwMSwgNDM5MjcsIDExMDA2LCAxMjkyNywgNzgwNywgODA3MywgMTIwOTgwLCAxMDYyOSwgCi0gICAgMTI3ODY5LCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyNzI2NywgOTIzOTEsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIAotICAgIDQzOTY5LCA0MzE5MywgMTA3MzcsIDM0NjMsIDEyMDk3NSwgOTgzMzUxLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIAotICAgIDU4MTEsIDEyMzQ1LCA3MDQ5LCAxMTg4MTEsIDUxOTUsIDE5NTA4MSwgMCwgNjY2MzksIDkyOTM5LCAwLCAwLCAxMjgwNDEsIAotICAgIDY3OTAzLCA2NzczOSwgMTI2MiwgMTIwMTY1LCA2NTYxLCAxOTkzOSwgMTI4NjczLCAwLCAxMjczMTgsIDExOTkwNiwgCi0gICAgNzAzMDAsIDAsIDk4MzA5NywgMCwgOTgzNjY3LCAxMTk5MDcsIDY0NjEyLCAxMTk5MSwgMTIwNjU0LCAwLCA5Mjk0MywgCi0gICAgMTUwMiwgOTE3NTY4LCAxMjc5ODgsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIDg0MzAsIDAsIDcxMjIzLCAKLSAgICAxMjA3NTgsIDAsIDc0MDU3LCA5NjAzLCAxMjgwNzksIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIDY4Mzc1LCAxMDc5NiwgCi0gICAgNTEyOSwgMCwgNzA4MTYsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgMTE3MjEsIDcwODA0LCAKLSAgICA0Nzk4LCAxMjE0NjgsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgNjg2MTAsIAotICAgIDY4ODI0LCA2ODYyNiwgODk0LCAzMDAsIDEyMDg3NSwgMTIzMDYsIDY2MjM1LCA4MDA0LCAwLCAxMTk1NzQsIDI1NjIsIAotICAgIDcwMTU2LCAxMjA4NTYsIDQyNTAzLCA5MjkwMCwgMTE2NTIsIDkxNzgxMywgOTE3Nzk5LCAxMTkyNDEsIDY0Njk5LCAKLSAgICAxMjY1NjksIDUwOTYsIDUwOTUsIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIDcwODczLCAwLCAKLSAgICAxMzE1NiwgMTI5MDU3LCAxMDgzMiwgNTA5MywgMCwgNjk4NTIsIDcyNDMwLCA1MDkyLCAxMDcwOCwgMTEzMjcsIDAsIDUwOTEsIAotICAgIDE3NiwgMCwgOTE1MywgNDEwNCwgNzg1OTksIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgMTIyNzIsIDk4MzIsIDExNzc3LCAKLSAgICA3MTI5OSwgNjY4MTcsIDQyODgxLCAwLCA4OTgwLCAxMTg5ODgsIDY3ODYxLCA4ODQ0LCA3MjA5LCAwLCAwLCA0Mjc4LCAKLSAgICAxMjg4MDksIDAsIDExOTE2MCwgNzA4MjEsIDkwNzQsIDQzNDgsIDAsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgCi0gICAgMTc4NiwgNjYxLCAxMjgxMTYsIDAsIDkxNzkyNSwgNzQ0MjMsIDcxMzQ1LCA1ODYsIDc0NDE0LCA2NDM1OSwgMTI2NywgCi0gICAgMTI4MjY5LCA2NTQ2OCwgMTk0OTY2LCA2NTczMSwgMCwgNzI0MDUsIDM2MjEsIDkyOTMyLCA2NjY2NiwgNjQyMTEsIDAsIAotICAgIDY1NjIsIDEyOTI4LCAxOTQ5MDQsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMTI3OTUzLCA3MDM0MywgMTcxNCwgNzQ0MDYsIAotICAgIDEyMDc1MSwgMCwgMTIxMTEzLCA5ODM5NzYsIDY2MjI1LCA3MDExMCwgNzA4NjcsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIAotICAgIDEyMDY5NCwgMTIxMDI1LCAxMDI5MSwgMTAzMjMsIDI4MjYsIDExMzgwOSwgMTI2NTEwLCAwLCA0MjAwOCwgOTcwOCwgCi0gICAgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgCi0gICAgOTY4OSwgOTgzOTY5LCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDAsIDEyODYyMiwgNjU1ODgsIDkyMzUwLCA5ODMyODEsIDAsIAotICAgIDg0MDEsIDk4MzkyNCwgNDIwMTQsIDEyNzMwNywgNzAzMCwgMTIwOTY5LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDAsIDEyMTIyNSwgCi0gICAgMCwgNzA4MTksIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAxMjY3MDQsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIDEwMTQ3LCAKLSAgICAxMjkzNSwgMTI3NTY4LCAxMjY0ODMsIDEyMTI4MSwgMCwgMCwgNzg3NTcsIDAsIDExMzgxNSwgMTIxMzAyLCAwLCA5OTk0LCAKLSAgICAxMjQ2NywgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgNDE2NzUsIDcwODQsIDI3NjUsIDc4NDY2LCA0MzM4MiwgCi0gICAgMCwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDEyNzc5NywgCi0gICAgMCwgNzc5ODgsIDI2MywgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgNzgzODUsIDk4Mzc0MiwgNzAzMTMsIDEyOTE0MCwgCi0gICAgNjkzMSwgNjk3MjIsIDQzMjYxLCA3MTc3LCA3MDEwNSwgOTI2NTIsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIAotICAgIDEyNjU3NSwgNjgwNiwgNjk5MiwgNDIwMTksIDAsIDQxMjkwLCA5ODM3MTYsIDc1MCwgMCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgCi0gICAgNzEzMDAsIDcwMzIsIDU5NTQsIDY0OTMxLCA0MzE0LCAxMjg2MDAsIDE5OCwgNjg0NTMsIDczMCwgMTIwMDk0LCA2MzkwNywgCi0gICAgNzc5OTMsIDcwODE4LCAxMzE2NSwgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjUwMDUsIDQxMzc4LCAKLSAgICAxMTAwOCwgNjkzOCwgNzAwMjYsIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCA3MDgyMywgMTk0OTkwLCA5ODM2MDQsIAotICAgIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgOTgzMjEzLCAxMjY1MTEsIDY0ODAxLCAKLSAgICAxMjc4MTgsIDQ5NywgMTIxMDAsIDU5NTMsIDkyNjY3LCA3Nzk2LCA2OTY2OSwgNDMyNTQsIDczODMxLCAwLCAxMDI5MywgCi0gICAgNTk1MiwgMTI4MSwgNDM3NDcsIDAsIDEyMTM5OSwgMTA2NzcsIDYwNCwgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAKLSAgICAzNDI1LCAxMjc0ODgsIDEyNjUyMywgMjgzNiwgOTgzNzM4LCAwLCA5NzA3LCAxMTM3MTgsIDQzMjAyLCAwLCAwLCA2NTE5OSwgCi0gICAgMTczOCwgMTI4MzExLCA2NzcwNywgMjgzMiwgOTI3MDIsIDk2NzAsIDExMTAxLCAwLCA2NjM3NCwgOTE3OTU2LCAxMTk1NTIsIAotICAgIDI4MjIsIDY4MTIyLCA0NDM2LCA5MjUxOSwgOTgzMDgxLCA3Mzc1MiwgNzAzMDUsIDY0ODcyLCA5MjM0MCwgMTMzMSwgMCwgMCwgCi0gICAgMTIxMzc3LCAxMjcwOCwgOTE3OTU0LCA1MDkwLCA1MDg5LCAxMjc5NzcsIDkxNzk1MywgMTE5MTA5LCAwLCA3MDgyNiwgMzE5LCAKLSAgICAxMTg4NDcsIDQzNDc5LCA5NDc3LCAwLCAwLCA1MDg3LCA3NDg4NiwgNzY0MCwgOTYsIDUwODYsIDk4MzU5NywgOTIzNzksIDAsIAotICAgIDUwODUsIDY0Mjg2LCA5MjY2NSwgMTEzNzE3LCA0MTQyMiwgMTE5NjE3LCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAxMTkwNDIsIAotICAgIDAsIDUwMTEsIDAsIDk4MzMyOSwgMTI2NTg3LCAwLCAxMjA2OTgsIDExODg3NCwgNjY3NywgNzYwMSwgMCwgNTkxLCA2NDQxOSwgCi0gICAgMTE4OTUzLCA5MjI2MiwgMTE4ODk1LCA3MDc5OSwgNzAwODQsIDAsIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgCi0gICAgNzEzNDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDY3MTM4LCA2NTU3NCwgMTk0OTQ3LCA5MjI0LCA2NzE0MCwgMzY3MSwgCi0gICAgODk3NiwgNjcxMzksIDAsIDQxMjc1LCA2MzcyLCA4Mjk5NywgNTUyNjEsIDc5NjMsIDYzNzEsIDAsIDU2OCwgOTIzNjgsIAotICAgIDQxMjczLCAxMjE0NDgsIDc0NTMxLCA2NzI4LCAwLCA5NzE1LCAxMjkyOTcsIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgCi0gICAgMTE4OTE5LCA0MiwgMTExOTEsIDQzNjg4LCA2ODI0MywgMCwgNzQ1OCwgMCwgMCwgNjUzODUsIDY3MTM1LCA2NzEzNCwgCi0gICAgMTE5NTgsIDExMTY1LCA5MTc4MjIsIDEyNTA4NywgNjI1NCwgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgMTk1MDY0LCAKLSAgICA2NzEzMiwgNjcxMzEsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgCi0gICAgNTU1OCwgODg3OCwgNDM4NDQsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIDkwODYsIDY0NTY2LCA5ODMxODUsIAotICAgIDY0NTg0LCA3NDM3LCA3NDU0LCAxMjU5NCwgNzM3NDksIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIAotICAgIDEyNTA5MiwgMzgwNSwgMCwgNjcxMjgsIDQ0MDAxLCA0MTAwOCwgMTI4MDUyLCA2MzA3LCAxOTk0OSwgNjcxMjksIDc1NDQsIAotICAgIDEyNDk4OSwgNDM0NjksIDEyMTA5NSwgOTgzNzM1LCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCA2NzEyNCwgNzYwMiwgNjQ3MjksIAotICAgIDAsIDQzNTIxLCAwLCA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgNjg0ODMsIDg3MDQsIDIzOTcsIDU1NTYsIAotICAgIDAsIDAsIDAsIDkwMTEsIDk2MzAsIDExMTY2LCAwLCA5Mzk5OCwgNTUwNiwgOTI0OTgsIDE5MTEsIDY2NjUyLCA2NzY4NiwgCisgICAgMTAxMDA0LCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyNzI2NywgOTIzOTEsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIAorICAgIDQzOTY5LCA0MzE5MywgMTA3MzcsIDM0NjMsIDcyODU4LCAxOTQ3OTAsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgCisgICAgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAxOTQ5NTgsIDY2NjM5LCA5MjkzOSwgODMxOTMsIDEyMTAxMCwgCisgICAgMTI4MDQxLCA2NzkwMywgNjc3MzksIDEyNjIsIDEyMDE2NSwgNjU2MSwgMTk5MzksIDEyODY3MywgMCwgMTI3MzE4LCAKKyAgICAxMTk5MDYsIDcwMzAwLCAwLCA5ODMwOTcsIDAsIDk4MzY2NywgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDEyMDY1NCwgCisgICAgOTE3ODY2LCA5Mjk0MywgMTUwMiwgOTE3NTY4LCAxMjc5ODgsIDkxMDcsIDEyMjkwNCwgNTcwMiwgMzY1NSwgNjc2NjEsIAorICAgIDg0MzAsIDAsIDcxMjIzLCAxMjA3NTgsIDExODk2MywgNzQwNTcsIDk2MDMsIDEyODA3OSwgNTI1NCwgMTIwNzQyLCA3NzI0LCAKKyAgICA3NDM4OCwgNjgzNzUsIDEwNzk2LCA1MTI5LCAwLCA3MDgxNiwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIAorICAgIDkyNDk2LCAxMTcyMSwgNzA4MDQsIDQ3OTgsIDEyMTQ2OCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAKKyAgICAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgNjg4MjQsIDY4NjI2LCA4OTQsIDMwMCwgMTIwODc1LCAxMjMwNiwgNjYyMzUsIDgwMDQsIAorICAgIDEyNzE4OSwgMTE5NTc0LCAyNTYyLCA3MDE1NiwgMTIwODU2LCA0MjUwMywgOTI5MDAsIDExNjUyLCA5MTc4MTMsIDkxNzc5OSwgCisgICAgMTE5MjQxLCA2NDY5OSwgMTI2NTY5LCA1MDk2LCA1MDk1LCAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCAKKyAgICA3MDg3MywgMCwgMTMxNTYsIDEyOTA1NywgMTA4MzIsIDUwOTMsIDE5NDgzOSwgNjk4NTIsIDcyNDMwLCA1MDkyLCAxMDcwOCwgCisgICAgMTEzMjcsIDAsIDUwOTEsIDE3NiwgMTEzODEwLCA5MTUzLCA0MTA0LCA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAKKyAgICAxMjI3MiwgOTgzMiwgMTE3NzcsIDcxMjk5LCA2NjgxNywgNDI4ODEsIDk4Mzc4NSwgODk4MCwgMTE4OTg4LCA2Nzg2MSwgCisgICAgODg0NCwgNzIwOSwgOTgzNzQxLCAwLCA0Mjc4LCAxMjg4MDksIDAsIDExOTE2MCwgNzA4MjEsIDkwNzQsIDQzNDgsIAorICAgIDkxNzg3MiwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAxNzg2LCA2NjEsIDEyODExNiwgOTE3ODU3LCAKKyAgICA5MTc5MjUsIDc0NDIzLCA3MTM0NSwgNTg2LCA3NDQxNCwgNjQzNTksIDEyNjcsIDEyODI2OSwgNjU0NjgsIDEyNTIzNCwgCisgICAgNjU3MzEsIDk4Mzg5OSwgNzI0MDUsIDM2MjEsIDkyOTMyLCA2NjY2NiwgNjQyMTEsIDEyOTM1MSwgNjU2MiwgMTI5MjgsIAorICAgIDEyMTMwNiwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAxMjc5NTMsIDcwMzQzLCAxNzE0LCA3NDQwNiwgMTIwNzUxLCAwLCAKKyAgICAxMjExMTMsIDEyNzM4OSwgNjYyMjUsIDcwMTEwLCA3MDg2NywgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAKKyAgICAxMjEwMjUsIDEwMjkxLCAxMDMyMywgMjgyNiwgMTAwNTI2LCAxMjY1MTAsIDEyNzU1NywgNDIwMDgsIDk3MDgsIDQyNzEwLCAKKyAgICAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIDk2ODksIAorICAgIDk4Mzk2OSwgNjU4MzMsIDc3ODQ4LCAwLCAxNzY1LCA5ODMzMDEsIDEyODYyMiwgNjU1ODgsIDkyMzUwLCA5ODMyODEsIDAsIAorICAgIDg0MDEsIDk4MzkyNCwgNDIwMTQsIDEyNTIzMCwgNzAzMCwgMTIwOTY5LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDcyNzI4LCAKKyAgICAxMjEyMjUsIDAsIDcwODE5LCAxMTk4ODcsIDEyNTIyNywgNjk2MywgMTI2NzA0LCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAKKyAgICAxMDE0NywgMTI5MzUsIDEyNzQwMSwgMTE5MTg1LCA3MjgxMiwgNzEyNjUsIDEyODc3OSwgNzg3NTcsIDAsIDExMzgxNSwgCisgICAgMTIxMzAyLCAxMjI4OTIsIDk5OTQsIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgCisgICAgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCA5ODM4MTUsIDEyMDcxOSwgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCAKKyAgICA5MzY0LCAxOTQ2ODUsIDc0NDE2LCAxMjc3OTcsIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIAorICAgIDc4Mzg1LCAxMDA2OTMsIDcwMzEzLCAxMjc0NzYsIDY5MzEsIDY5NzIyLCA0MzI2MSwgNzE3NywgNzAxMDUsIDkyNjUyLCAKKyAgICAxMTk4OTUsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIDEyNjU3NSwgNjgwNiwgNjk5MiwgNDIwMTksIDE5NTA1NiwgCisgICAgNDEyOTAsIDk4MzcxNiwgNzUwLCAxMjEwODgsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCA1OTU0LCAKKyAgICA2NDkzMSwgNDMxNCwgMTAwNjM2LCAxOTgsIDY4NDUzLCA3MzAsIDEwMDYzNSwgNjM5MDcsIDc3OTkzLCA3MDgxOCwgMTMxNjUsIAorICAgIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI1MDA1LCA0MTM3OCwgMTEwMDgsIDY5MzgsIDcwMDI2LCAKKyAgICA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgNzA4MjMsIDE5NDk5MCwgOTgzNjA0LCAzODkyLCA2ODYzMiwgNjk2NDIsIAorICAgIDY3MTIsIDY2MDQ1LCA0MTQ3MCwgNjQ4MDUsIDAsIDk4MzIxMywgMTI2NTExLCA2NDgwMSwgMTI3ODE4LCA0OTcsIDEyMTAwLCAKKyAgICA1OTUzLCA5MjY2NywgNzc5NiwgNjk2NjksIDQzMjU0LCA3MzgzMSwgMTI4MjQzLCAxMDI5MywgNTk1MiwgMTI4MSwgNDM3NDcsIAorICAgIDAsIDEyMTM5OSwgMTA2NzcsIDYwNCwgNDEwOTcsIDkxODIsIDE4NTksIDAsIDcyODU2LCAzNDI1LCAxMjc0ODgsIDcyNzI1LCAKKyAgICAyODM2LCA5ODM3MzgsIDAsIDk3MDcsIDcwNzQyLCA0MzIwMiwgMCwgMCwgNjUxOTksIDE3MzgsIDExOTg5MSwgNjc3MDcsIAorICAgIDI4MzIsIDkyNzAyLCA5NjcwLCAxMTEwMSwgOTgzNzk1LCA2NjM3NCwgMTAwNzA0LCAxMTk1NTIsIDI4MjIsIDY4MTIyLCAKKyAgICA0NDM2LCA5MjUxOSwgOTgzMDgxLCA3Mzc1MiwgNzAzMDUsIDY0ODcyLCA5MjM0MCwgMTMzMSwgOTE3OTU1LCA5ODM3MDYsIAorICAgIDEyMTM3NywgMTI3MDgsIDEyOTMzMywgNTA5MCwgNTA4OSwgMTI3OTc3LCAzMjAwLCAxMDA5ODQsIDAsIDcwODI2LCAzMTksIAorICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDE5NDg4MSwgNTA4NywgNzQ4ODYsIDc2NDAsIDk2LCA1MDg2LCAxMjc3NjMsIAorICAgIDkyMzc5LCAwLCA1MDg1LCA2NDI4NiwgOTI2NjUsIDExMzcxNywgNDE0MjIsIDEwMDcxMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgCisgICAgMTE5MDQyLCAxMTk5MDksIDUwMTEsIDE5NDg4MiwgMTk0NzQyLCAxMjY1ODcsIDAsIDEyMDY5OCwgMTE4ODc0LCA2Njc3LCAKKyAgICA3NjAxLCAxOTQ3MjUsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDExODg5NSwgNzA3OTksIDcwMDg0LCAxMjUxMTEsIAorICAgIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDY3MTM4LCA2NTU3NCwgCisgICAgMTk0OTQ3LCA5MjI0LCA2NzE0MCwgMzY3MSwgODk3NiwgNjcxMzksIDAsIDQxMjc1LCA2MzcyLCA4Mjk5NywgNTUyNjEsIAorICAgIDc5NjMsIDYzNzEsIDAsIDU2OCwgOTIzNjgsIDQxMjczLCAxMjAzMjIsIDc0NTMxLCA2NzI4LCA5ODM2MDksIDk3MTUsIAorICAgIDEyMDk3NSwgODI1OCwgMTE3NTMsIDc0ODIwLCA5ODM5NjUsIDk2MDIsIDExODkxOSwgNDIsIDExMTkxLCA0MzY4OCwgCisgICAgNjgyNDMsIDAsIDc0NTgsIDczOTcyLCA5ODM5NjAsIDY1Mzg1LCA2NzEzNSwgNjcxMzQsIDExOTU4LCAxMTE2NSwgMTk0Njk4LCAKKyAgICAxMjUwODcsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDE5NTA2NCwgNjcxMzIsIDEyNjk2LCA0Mjg1OCwgCisgICAgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgOTczNywgNzMwMCwgMCwgOTQ2NywgNTU1OCwgODg3OCwgNDM4NDQsIAorICAgIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDEwMDc2MiwgOTA4NiwgNjQ1NjYsIDk4MzE4NSwgNjQ1ODQsIDc0MzcsIAorICAgIDc0NTQsIDEyNTk0LCA3Mzc0OSwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgMTI1MDkyLCAzODA1LCAwLCAKKyAgICA2NzEyOCwgNDQwMDEsIDQxMDA4LCAxMjgwNTIsIDYzMDcsIDE5OTQ5LCA2NzEyOSwgNzU0NCwgMTI0OTg5LCA0MzQ2OSwgCisgICAgMTIxMDk1LCA5ODM3MzUsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDY3MTI0LCA3NjAyLCA2NDcyOSwgMCwgNDM1MjEsIAorICAgIDEyMDc3MiwgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDY4NDgzLCA4NzA0LCAyMzk3LCA1NTU2LCAwLCAwLCAKKyAgICA2NjgwMSwgOTAxMSwgOTYzMCwgMTExNjYsIDAsIDkzOTk4LCA1NTA2LCA5MjQ5OCwgMTkxMSwgNjY2NTIsIDY3Njg2LCAKICAgICA5OTYxLCA4ODQ1LCA2NjY5OCwgNjgzMjUsIDEwNzkyLCA4ODg5LCAxMjE0MDIsIDIwOTgsIDAsIDY0NzUxLCA3MDMwOSwgCi0gICAgNjY2MjIsIDEyNjYyNiwgMCwgNzQzNjQsIDY4ODE2LCAxMjkxNTIsIDk4MzgwNSwgNDI5MDksIDc1NTIsIDcwMDkyLCAKLSAgICAxOTQ1NjcsIDY1Mzg0LCA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgCi0gICAgMTk1MDc3LCA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgOTgzMjMzLCAxMjUwNDUsIDM4LCA4NTMzLCA2NjY2OSwgCi0gICAgMTE5MTI0LCA5ODMyOTUsIDk4Mzc5MiwgMCwgNDM1NywgMCwgNzAyODksIDkxNzg2MywgNzQyMzMsIDk5NjcsIDc4ODg0LCAKLSAgICA0Mjg2MCwgMTE5ODM4LCAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDgzMjc5LCAxMTM4MDgsIDAsIDExMDE0LCAxMjAxMjYsIAotICAgIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIDExNjUwLCAKLSAgICA1MDEzLCA5MjY2MywgNjg4MTAsIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCAxMTE5MywgOTgzNzcwLCAwLCAKLSAgICA2NDcxNCwgNzE0NzksIDcwODAyLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgNjYyMjgsIAotICAgIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIDY5NTcsIDAsIAotICAgIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMTI4MDI2LCAKLSAgICA3NTAxNiwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDEyNzIxMywgODEwNywgNjcxNTQsIDExMjcsIDQ1NSwgMCwgCi0gICAgNjM5NjgsIDEyNzgzNSwgMzQ4MywgMTE5NTkzLCAxOTg5LCA5ODMxNzYsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgCi0gICAgNjgzMDAsIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDEyMTQzNCwgNzQwNjQsIAorICAgIDY2NjIyLCAxMjY2MjYsIDAsIDcwNzI0LCA2ODgxNiwgMTI5MTUyLCAxMjQ5NTMsIDQyOTA5LCA3NTUyLCA3MDA5MiwgCisgICAgMTI3NDkwLCA2NTM4NCwgNzIyMywgNDU1OSwgOTMwMTUsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNDM0OTAsIDEyMTAsIAorICAgIDE5NTA3NywgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDkxNzkwMiwgMTI4NTU4LCAxMjUwNDUsIDM4LCA4NTMzLCAKKyAgICA2NjY2OSwgMTE5MTI0LCA5ODMyOTUsIDk4Mzc5MiwgMCwgNDM1NywgMCwgNzAyODksIDkxNzg2MywgNzQyMzMsIDk5NjcsIAorICAgIDc4ODg0LCA0Mjg2MCwgMTE5MzIzLCAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDgzMjc5LCAxMTM4MDgsIDAsIDExMDE0LCAKKyAgICAxMjAxMjYsIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIAorICAgIDExNjUwLCA1MDEzLCA5MjY2MywgNjg4MTAsIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCAxMTE5MywgMTk0Njc3LCAKKyAgICA3Mjc1NCwgNjQ3MTQsIDcxNDc5LCA3MDgwMiwgMTIxNjIsIDEyMTIwLCA0MzQ3NiwgOTgzNzY2LCAxMTAyNCwgNzQ4MTEsIAorICAgIDY2MjI4LCAxMDU2MywgOTI5NTQsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIDkyOTU1LCAxODM3LCAxMjUwODYsIDYzOTcyLCAKKyAgICA2OTU3LCAwLCAxMTM4MjAsIDQ5NTIsIDY1NzE4LCA2NDQwNSwgNTUwNCwgNjU3MjAsIDY1NzE0LCA2NTcxNSwgNjU3MTYsIAorICAgIDcyODc3LCA3NTAxNiwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDEyNzIxMywgODEwNywgNjcxNTQsIDExMjcsIDQ1NSwgCisgICAgMCwgNjM5NjgsIDcyODYwLCAzNDgzLCAxMTk1OTMsIDE5ODksIDk4MzE3NiwgNjk2NzgsIDkxMDQsIDM1MDMsIDY1Mzc1LCAKKyAgICA2ODMwMCwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDcyODEwLCA0MTQ0NiwgMjU0MCwgNzczNiwgMTIxNDM0LCA3NDA2NCwgCiAgICAgMTI4NjAxLCAxMDUyMSwgNzA3ODYsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKICAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI1MDUzLCAxMzQ3LCA5NjMxLCAKLSAgICA3NDQ0NCwgOTgzNzUzLCAxMjc5OTcsIDkyOTUxLCA3NDg5NywgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCA5ODM0NzksIAotICAgIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgMTA4NjEsIDEyMTA1MywgCi0gICAgNjM5NzYsIDcwMzc3LCA2ODYyMywgNjcwODIsIDY3MDgxLCA0MTM5MSwgNjcwODQsIDgzNDY1LCAzNzYsIDY5ODcsIDkyMjEsIAotICAgIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIDEyODA2NywgMTAxNTQsIDk4MzA0MywgCi0gICAgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgNDU4LCAxMjA2MjAsIDgyOTUwLCA2OTc5MSwgCi0gICAgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgMTIxMDU3LCAxMjI4OCwgNzgwNTcsIDY3MDgwLCAxNDkzLCAKLSAgICA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIAotICAgIDEzMTMxLCA2NzA3NCwgNjcwNzMsIDEyODUwNiwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgNzUwNzMsIDQxMjc3LCAKLSAgICA2NDY1OCwgOTgzNDU2LCA2NDM4MCwgNjYyNSwgNDI5MTEsIDE5OTA0LCAwLCAxMjEzMDUsIDcxMTkzLCA2NTM3MSwgNzA3OCwgCi0gICAgMTI4Njk5LCA4MzMsIDEyODIyOCwgNjM2OSwgMTk0ODE1LCAxMDk3OSwgNDE5NTMsIDk4MzM3MCwgNDE0MzQsIDYwNjIsIDAsIAotICAgIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCA3MTIwMCwgOTgzNTkyLCAxMjEyMjMsIAotICAgIDEyNjU2NywgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIDkyODkwLCA0MTYyMiwgMCwgMCwgCi0gICAgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDExOTYzOCwgMCwgCi0gICAgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIAotICAgIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCA4MzIyMiwgODMyMjMsIDY5NTYsIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgCi0gICAgMTIxMDA1LCAxOTQ5MzksIDExOTEyNywgOTAwMiwgMCwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCA1NDYsIDQyNDY5LCAKLSAgICA2NTU2OSwgMTkxOCwgOTU0MiwgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDQzMDc3LCA2Mzk1MiwgODQyNSwgCi0gICAgMzYwMiwgODMyOCwgMTE3NjQsIDgzMTk5LCA4MzIwMCwgNjUwNjUsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCA2ODQsIAotICAgIDQzNTI1LCAxMjc5OTYsIDI4NTQsIDgzMjE0LCA0NTkyLCA2NTc1NSwgODMyMTcsIDY3MTIwLCAxMTk2MywgNDM2MjAsIAotICAgIDY3MTE3LCA3ODI0OSwgNjcxMjMsIDY3MTIyLCA2NzEyMSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCA2OTY3NywgCi0gICAgNjcxMTYsIDg2NDgsIDEyODM3NywgNjc0MSwgNDMwNDcsIDExOTkwMCwgMTMxODAsIDc4MDc3LCA0MTgsIDEyMDY1MywgCi0gICAgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIDQxNzUyLCA2Njg0NiwgODY0MSwgNDE0NDksIDgzMTk0LCA3NDEwMCwgCi0gICAgODMxODYsIDEwOTExLCA2OTQyLCAxMjA4NzksIDEwMjQsIDQyODQ5LCA0MTc1MSwgNjk3NzYsIDg5NDEsIDk4MzU1NiwgCi0gICAgNDU1NCwgNjY4OTIsIDkwMjMsIDExNjg1LCAxMjE0NzYsIDk5MjgsIDY3MTA5LCA2Njg2NSwgMTE0MzcsIDQzNzQxLCAKLSAgICA2NzExMywgNjcxMTIsIDYzOTY3LCAxMjkwNTYsIDQxMjA2LCAxMjYyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAxMjEyNzUsIAotICAgIDgxNTksIDkyNjE5LCAxMTY4NiwgNzE0NzgsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDEyOTA5MCwgOTIxODMsIAotICAgIDY0NTIzLCAxMDM0MywgMTA0MDcsIDkyNzY0LCA2NjY3MSwgMTE0NjYsIDAsIDEyODAwMywgNDI4OTAsIDc0MDEzLCAxMjA1MCwgCi0gICAgNjgyMDEsIDI4NjAsIDAsIDEyNzkzNCwgNzA4MjgsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAxMjE0MDEsIAotICAgIDQzODc1LCA2NzEwMywgODg3NSwgMCwgNjcxMDIsIDY3MTA1LCA3NTMxLCAxMjg0NywgMjQxMywgMTE4OTE3LCA2NzQwNCwgCi0gICAgOTYyLCAwLCAxMjg1NSwgNDExOTYsIDQyNTY0LCAxMjc5NzUsIDE1ODIsIDk4MzcxNSwgNTUwOCwgMCwgMTIwOTA0LCAKLSAgICA3NDU4OCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMTE5MjA3LCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIAotICAgIDc4NjAsIDEyODA0OSwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgCi0gICAgODQwNiwgMTE1MywgODMyNjMsIDY0Nzg4LCA4MzI2NSwgODA1NCwgOTE3NCwgNjcwODcsIDY3MDg2LCA5OTY0LCA2NzA5NiwgCi0gICAgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgNDI1MTIsIDAsIDc4ODU3LCA0MjA4OSwgNzQ2MTMsIDkwMDgsIDAsIAotICAgIDEyNjU5MiwgMTk1MDk2LCA0MjA3OSwgODMyNDgsIDc3OTI0LCA0MjUxMywgNzc5MjcsIDQyODQyLCA3Mzk4NSwgNjUyODUsIAotICAgIDY4MzM4LCA4MzIzOSwgODMyNDAsIDgzMjQxLCA4MzI0MiwgOTgzNTkwLCAxMTMzNSwgNjQwNjksIDQyMDkzLCAzOTIwLCAKLSAgICA5MTc4NjksIDAsIDExMTEwLCA4MzI1NSwgNDU4MCwgNDE5NjcsIDgzMjU4LCA2NDM4NCwgODMyNTIsIDgzMjUzLCAzMDIxLCAKLSAgICA0MjAwNCwgOTgzMDk2LCA4MzI0OSwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAxOTQ3NTUsIDkyOTY3LCAxMjg0NTUsIAorICAgIDc0NDQ0LCAxOTQ5NDYsIDEyNzk5NywgOTI5NTEsIDc0ODk3LCA4NjQwLCAxMDA5NzYsIDI1OCwgMTY1NCwgMCwgMCwgCisgICAgOTgzNDc5LCA0MzMxNCwgMTI3OTg3LCA3MDY5OSwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIAorICAgIDg1NDksIDEwODYxLCAxMjEwNTMsIDYzOTc2LCA3MDM3NywgNjg2MjMsIDY3MDgyLCA2NzA4MSwgNDEzOTEsIDY3MDg0LCAKKyAgICA2NzU4OCwgMzc2LCA2OTg3LCA5MjIxLCAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgNDE4NjksIDEyNjE5LCAKKyAgICAxMjgwNjcsIDEwMTU0LCA5MTc5MjEsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgCisgICAgNzI4MzEsIDgyOTUwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgMTIxMDU3LCAKKyAgICAxMjI4OCwgNzgwNTcsIDY3MDgwLCAxNDkzLCA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIAorICAgIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIDEzMTMxLCA2NzA3NCwgNjcwNzMsIDEyODUwNiwgODc5NCwgNDEyNzgsIDQxNjI5LCAKKyAgICAxMjE1NCwgNzUwNzMsIDQxMjc3LCA2NDY1OCwgMTI4MTEyLCA2NDM4MCwgNjYyNSwgNDI5MTEsIDE5OTA0LCAwLCAxMjEzMDUsIAorICAgIDcxMTkzLCA2NTM3MSwgNzA3OCwgMTI4Njk5LCA4MzMsIDEyODIyOCwgNjM2OSwgMTk0ODE1LCAxMDk3OSwgNDE5NTMsIAorICAgIDE5NDkzNSwgNDE0MzQsIDYwNjIsIDAsIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCAKKyAgICA3MTIwMCwgMTI4NjQ1LCAxMjEyMjMsIDEyMTI0NSwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIAorICAgIDkyODkwLCA0MTYyMiwgNzA3MDQsIDAsIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCA1OTkwLCAKKyAgICA5MDAsIDEwMDc1NywgNjM5NTcsIDExOTYzOCwgOTgzOTc3LCAzNjEyLCA3MDY4NywgNjQzNzYsIDkzOTg3LCA1Mzg5LCAKKyAgICA5MjU5NywgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAKKyAgICA4MzIyMiwgODMyMjMsIDY5NTYsIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgNjU2ODYsIDEyODU2MSwgMTE5MTI3LCAKKyAgICA5MDAyLCA5ODM0MjIsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgNTQ2LCA0MjQ2OSwgNjU1NjksIDE5MTgsIDk1NDIsIAorICAgIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCA0MzA3NywgNjM5NTIsIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAKKyAgICA4MzE5OSwgODMyMDAsIDY1MDY1LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgNjg0LCA0MzUyNSwgMTAwNTMxLCAKKyAgICAyODU0LCA2Njc0NywgNDU5MiwgNjU3NTUsIDgzMjE3LCA2NzEyMCwgMTE5NjMsIDQzNjIwLCA2NzExNywgNjY3MzYsIAorICAgIDY3MTIzLCA2NzEyMiwgNjcxMjEsIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgNjk2NzcsIDY3MTE2LCA4NjQ4LCAKKyAgICAxMDA5OTUsIDY3NDEsIDQzMDQ3LCAxMDA0NjAsIDEzMTgwLCA3ODA3NywgNDE4LCA2Njc1NCwgNjQ0OTUsIDEwMjk1LCAKKyAgICAxMDMyNywgMTAzOTEsIDQxNzUyLCA2Njg0NiwgODY0MSwgNDE0NDksIDgzMTk0LCA3NDEwMCwgODMxODYsIDEwOTExLCAKKyAgICA2OTQyLCAxMjA4NzksIDEwMjQsIDQyODQ5LCA0MTc1MSwgNjk3NzYsIDg5NDEsIDEwMTAzMiwgNDU1NCwgNjY4OTIsIDkwMjMsIAorICAgIDExNjg1LCAxMjE0NzYsIDk5MjgsIDY3MTA5LCA2Njg2NSwgMTE0MzcsIDQzNzQxLCA2NzExMywgNjcxMTIsIDYzOTY3LCAKKyAgICAxMjkwNTYsIDQxMjA2LCAxMjYyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAxMDA4NDAsIDgxNTksIDkyNjE5LCAxMTY4NiwgCisgICAgNzE0NzgsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDEyOTA5MCwgOTIxODMsIDY0NTIzLCAxMDM0MywgMTA0MDcsIAorICAgIDkyNzY0LCA2NjY3MSwgMTE0NjYsIDAsIDEwMDgzNywgNDI4OTAsIDcyODQ0LCAyMjYxLCA2ODIwMSwgMjg2MCwgMCwgCisgICAgMTI3OTM0LCA3MDgyOCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDEyMTQwMSwgNDM4NzUsIDY3MTAzLCAKKyAgICA4ODc1LCAwLCA2NzEwMiwgNjcxMDUsIDc1MzEsIDEyODQ3LCAyNDEzLCAxMDA1MjIsIDY3NDA0LCA5NjIsIDkxNzgxNCwgCisgICAgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMTAxMDA5LCAxNTgyLCAxMDA4NDIsIDU1MDgsIDEwMDQ5MiwgMTIwOTA0LCA3NDU4OCwgCisgICAgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMTE5MjA3LCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIDc4NjAsIAorICAgIDEyODA0OSwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgODQwNiwgCisgICAgMTE1MywgODMyNjMsIDY0Nzg4LCA4MzI2NSwgODA1NCwgOTE3NCwgNjcwODcsIDY3MDg2LCA5OTY0LCA2NzA5NiwgNDE2MTEsIAorICAgIDQ2NDIsIDY2NTc0LCAxMTU1NiwgNDI1MTIsIDAsIDc4ODU3LCA0MjA4OSwgNzQ2MTMsIDkwMDgsIDAsIDEwMTAyOCwgCisgICAgMTAwNDY4LCA0MjA3OSwgODMyNDgsIDc3OTI0LCA0MjUxMywgNzc5MjcsIDQyODQyLCA3Mzk4NSwgNjUyODUsIDY4MzM4LCAKKyAgICA4MzIzOSwgODMyNDAsIDgzMjQxLCA4MzI0MiwgOTgzNTkwLCAxMTMzNSwgNjQwNjksIDQyMDkzLCAzOTIwLCAxMDA1MDQsIAorICAgIDEwMDg1MCwgMTExMTAsIDgzMjU1LCA0NTgwLCA0MTk2NywgODMyNTgsIDY0Mzg0LCA4MzI1MiwgODMyNTMsIDMwMjEsIAorICAgIDQyMDA0LCA5ODMwOTYsIDgzMjQ5LCA0MjMxNywgNDE5OTgsIDEyODc1NiwgNjk0NiwgMTk0NzU1LCA5Mjk2NywgMTI4NDU1LCAKICAgICAxMjgxOTMsIDY1MjA0LCAwLCA2ODExMywgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgCi0gICAgMTI3ODgwLCA2ODAzNSwgNDM5OTgsIDExMzYwLCA4MzIzMywgNzQxODIsIDgzMjM1LCA4MzIyOCwgNDIxNDksIDgzMjMwLCAKKyAgICAxMjc4ODAsIDY4MDM1LCA0Mzk5OCwgMTEzNjAsIDgzMjMzLCA3NDE4MiwgNzA2OTEsIDgzMjI4LCA0MjE0OSwgODMyMzAsIAogICAgIDY4NTA4LCA5MTc5OTMsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAxMjgwNzcsIDc0ODg1LCA1NTI0NywgNDExMCwgNjYwMDUsIAogICAgIDY5NTksIDEwOTI5LCA0MjkwNywgMTI4MDgwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCA2MDI1LCA2OTI0MiwgCi0gICAgMTIxMDY4LCAxOTQ4NTQsIDEyNTEzOSwgMCwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNzgsIDEwMTE3LCA5ODMxNjksIAotICAgIDkyMjk3LCA0MTYzNiwgMTk0ODg5LCA3MzczOCwgMTIwNjgxLCA4MzAxLCAwLCAwLCAxODcsIDEyODIzNywgNjU2NjksIAotICAgIDEyODMzOSwgNDk2MywgMCwgNjg3NjUsIDAsIDg5NjQsIDY1Njc2LCA3Nzc1LCA5ODM4NDksIDQxOTQ4LCAxMjUwMDMsIDAsIAotICAgIDgzMjM2LCA0MTk0MiwgNjU0NDksIDMxNjAsIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTIwNjE2LCAKLSAgICA0MTc2NiwgNzQ5NDgsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCAKLSAgICA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIDc4ODgsIDgzNDA1LCAzOTgwLCA3MDM3MywgNDI2NTYsIDQxNTA3LCAKLSAgICA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIDc4NjcsIDY5MjE4LCA2MjM2LCAxMjcxNjIsIDAsIDEwNTA1LCAKLSAgICAxMjY2MzgsIDEyODUxLCA4MzQ4OSwgMzQ4LCA1NDc0LCAxMjEzODIsIDMxMDMsIDAsIDQxNzUzLCA3MTEwOSwgMTI4NjA0LCAKLSAgICAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCAKLSAgICA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAyNjkxLCA2ODc1MiwgNjU1NTMsIDc5MzMsIDU1NjIsIAotICAgIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIDEyNzI0MiwgMCwgMzk3OSwgCi0gICAgNzEyNDgsIDE5NDg5OSwgNjgzMzEsIDkxNzkxMiwgNjg4NDcsIDk4MzY5NywgODMzODIsIDc0NjMzLCA0MTI2NiwgNjg4MzYsIAotICAgIDY2NTY2LCAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDIyNzUsIDI2NjYsIDEyMTIzMiwgNDE3MzgsIDgzMSwgNDE5LCAKLSAgICAxMzEyNiwgMTA3MTYsIDgzNDAwLCA0MjgyMiwgMCwgNjQzNCwgNzQ4NTcsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgCi0gICAgNjk5MzIsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIAotICAgIDQ5OTQsIDQ4NywgMTI2NTM3LCA0NDk3LCAzNzU0LCA4MzA3MiwgODMxMDUsIDkwMzksIDAsIDQxNzc2LCAwLCA4NzE2LCAKLSAgICAxNTk1LCA0MTYxNSwgMTIxMDAxLCAwLCA3NDI2MCwgNzQ4NjAsIDQyODU0LCA0MzIxOSwgODMzMTEsIDEyMTEwNywgMTIxODUsIAotICAgIDExMzgxMCwgNzAwNzIsIDY4MzU1LCA2ODM1NywgNjg0MjEsIDQyODU2LCA4NjM0LCAwLCAxMTk5ODgsIDQyMDksIDc1MDU3LCAKLSAgICA2ODgzMiwgNjU4NzksIDQxNTM4LCA2NTYxMiwgNjg4MjIsIDY2OSwgNTY3OSwgNjg4MTMsIDY4ODE1LCA2ODgxMSwgNjg4MTIsIAotICAgIDY4ODA0LCA1Njc4LCAxMTgyMSwgNjg4MDIsIDY3MTEsIDQ2MCwgMTIxNTEzLCAwLCA5ODM0NjMsIDcwMTE0LCAxMjA3NDcsIAotICAgIDE5NDcxOCwgMTIxNTE5LCA3ODA1MCwgMTE5MDIyLCAwLCAxMjE1MTUsIDEyMTUxNCwgNzc4MiwgOTA0NCwgNDk3NCwgCi0gICAgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIDEyNzAxNywgNTc5MiwgMTI2NjQzLCAxMjgzMTksIAotICAgIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgOTgzNzAyLCA1NjgzLCA5MTc4OTYsIDEyMDg5NSwgNzgxMTksIDE1NDksIDAsIAotICAgIDk4MzIyMywgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCA2NzIzNywgCi0gICAgNjk3NjgsIDE0NDksIDEwMjQxLCA3ODI5MCwgMTE5NTg3LCAxOTQ4OTEsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDcwMzMwLCAKLSAgICA4NTg0LCA2ODAzMCwgNTU2NywgMjcxNywgODMxNzksIDcxNDQ4LCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCAKLSAgICA5MTc2MTEsIDEyMDg4MSwgMCwgNjU3MDgsIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIAotICAgIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIAotICAgIDY4MDUyLCA2NjU5OCwgMTEwNTkyLCA2NDY2NCwgMTA2NDcsIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIAotICAgIDY1NzAxLCAxOTM0LCA0MzAwNiwgODMyODAsIDg4MDIsIDc4NzEwLCA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgCi0gICAgNzg3MTYsIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDAsIDExOTYxLCAKLSAgICA3ODcyNSwgNjY4NTAsIDc4NzIzLCA3ODcyMCwgNzg3MjEsIDEyNzg5OSwgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgCisgICAgMTIxMDY4LCAxMjg5NzksIDEyMTM5OCwgOTE3OTc5LCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM3OCwgMTAxMTcsIDcwNzMzLCAKKyAgICA5MjI5NywgNDE2MzYsIDE5NDg4OSwgNzM3MzgsIDkyNzI0LCA4MzAxLCAwLCAwLCAxODcsIDEyODIzNywgNjU2NjksIAorICAgIDEyODMzOSwgNDk2MywgMTI3OTk2LCA2ODc2NSwgMTI4MTk4LCA4OTY0LCA2NTY3NiwgNzc3NSwgMTk0NzYzLCA0MTk0OCwgCisgICAgMTI1MDAzLCAwLCA4MzIzNiwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIAorICAgIDEyMDYxNiwgNDE3NjYsIDc0OTQ4LCA2NTg4MiwgNzg4NDksIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCAKKyAgICA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCA3ODg4LCA4MzQwNSwgMzk4MCwgNzAzNzMsIDQyNjU2LCAKKyAgICA0MTUwNywgODgwNiwgNzAyMywgNzI3MzQsIDc0Mjc5LCA5NDQ3LCA3MDcwMiwgNzg2NywgNjkyMTgsIDYyMzYsIDEyNzE2MiwgCisgICAgOTgzNjA4LCAxMDUwNSwgMTI2NjM4LCAxMjg1MSwgODM0ODksIDM0OCwgNTQ3NCwgMTIxMzgyLCAzMTAzLCAwLCA0MTc1MywgCisgICAgNzExMDksIDEyODYwNCwgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIDQzMzQ3LCAKKyAgICA0MjU2MCwgNTM5MSwgNDE3NDYsIDEwMDk2NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgMjY5MSwgNjg3NTIsIAorICAgIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTAwODIzLCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAKKyAgICAxMjcyNDIsIDAsIDM5NzksIDcxMjQ4LCAxMjk0MTUsIDY4MzMxLCA5MTc5MTIsIDY4ODQ3LCA5ODM2OTcsIDgzMzgyLCAKKyAgICA3NDYzMywgNDEyNjYsIDY4ODM2LCA2NjU2NiwgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCAyMjc1LCAyNjY2LCAKKyAgICAxMjEyMzIsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIDEwNzE2LCA4MzQwMCwgNDI4MjIsIDAsIDY0MzQsIDc0ODU3LCAKKyAgICA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIDY5OTMyLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgCisgICAgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCA0OTk0LCA0ODcsIDEyNjUzNywgNDQ5NywgMzc1NCwgODMwNzIsIDgzMTA1LCAKKyAgICA5MDM5LCA3MDY3OCwgNDE3NzYsIDEyNzM5MSwgODcxNiwgMTU5NSwgNDE2MTUsIDc0NDMxLCAxMjg5MDIsIDc0MjYwLCAKKyAgICA3NDg2MCwgNDI4NTQsIDQzMjE5LCA4MzMxMSwgMTIxMTA3LCAxMjE4NSwgMTEzNzI0LCA3MDA3MiwgNjgzNTUsIDY4MzU3LCAKKyAgICA2ODQyMSwgNDI4NTYsIDg2MzQsIDAsIDExOTk4OCwgNDIwOSwgNzUwNTcsIDY4ODMyLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCAKKyAgICA2ODgyMiwgNjY5LCA1Njc5LCA2ODgxMywgNjg4MTUsIDY4ODExLCA2ODgxMiwgNjg4MDQsIDU2NzgsIDExODIxLCA2ODgwMiwgCisgICAgNjcxMSwgNDYwLCAxMjE1MTMsIDAsIDk4MzQ2MywgNzAxMTQsIDEyMDc0NywgMTk0NzE4LCAxMjE1MTksIDc4MDUwLCAKKyAgICAxMTkwMjIsIDk4MzgyOSwgMTIxNTE1LCAxMjE1MTQsIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgCisgICAgNjU3MTEsIDQxOTEyLCAxMjE2LCAxMjUwODgsIDEwMDQxMSwgNTc5MiwgMTIxMzY0LCAxMDAzOTMsIDc4NTAxLCAwLCAyOTMzLCAKKyAgICAxMjI0NCwgOTgzNzAyLCA1NjgzLCAxMDAzOTIsIDEwMDM5NywgNzgxMTksIDE1NDksIDcwNjcwLCAxMDA0MTUsIDEyMDM5OCwgCisgICAgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgNjcyMzcsIDY5NzY4LCAxNDQ5LCAxMDI0MSwgCisgICAgNzgyOTAsIDcwNzA4LCAxOTQ4OTEsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDcwMzMwLCA4NTg0LCA2ODAzMCwgNTU2NywgCisgICAgMjcxNywgNjg4MTQsIDcxNDQ4LCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCA5MTc2MTEsIDEyMDg4MSwgMCwgCisgICAgNjU3MDgsIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgCisgICAgNTk0MiwgODQ2OCwgMTAwNzI5LCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIDY4MDUyLCA2NjU5OCwgCisgICAgMTAwNjg2LCA2NDY2NCwgMTA2NDcsIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCAKKyAgICA0MzAwNiwgODMyODAsIDg4MDIsIDc4NzEwLCA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgNzg3MTYsIAorICAgIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDEyODU1MiwgMTE5NjEsIAorICAgIDc4NzI1LCA2Njg1MCwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMTE5ODk4LCA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCAKICAgICA3MTMwOSwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAxMjUwNjEsIDcyNTYsIDAsIDY4MDk0LCAxNjY3LCA0MjE2MSwgCi0gICAgMTIwOTgxLCA0MjQyOCwgMCwgNjkzNCwgMCwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgMzYxMCwgCisgICAgMTAwOTU4LCA0MjQyOCwgMCwgNjkzNCwgMTAwNzAyLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAKICAgICA2ODQyMCwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgMTA4NzUsIAotICAgIDEyNTA1MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDY4Mjk4LCAwLCAzODc0LCAwLCAKLSAgICAwLCA5ODM2MTksIDEyMDMzMSwgMTI4NzczLCAxMTM2NjUsIDY1NjAzLCA4MzI3MiwgNjU2ODcsIDAsIDQxMDM4LCA3NDAwOSwgCi0gICAgOTIwNywgNDIyMzksIDg1MzYsIDc4NzQwLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDgzMDU4LCAxNDU1LCA3ODc0OSwgCi0gICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCA3NTAyMSwgNDM1MjAsIAotICAgIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAKLSAgICAxOTAsIDExOTg5OSwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCAxMjEzMDMsIDkyMjYxLCA2MzcwLCAxMjUxMjgsIAotICAgIDc4MjcsIDY4NDQxLCA2OTY1LCAxMjg1ODEsIDEyODg2OCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDc4ODY4LCA3NDM4MiwgCi0gICAgMTE4NDEsIDc5MTgsIDczOTg4LCAwLCAxMTM2NjgsIDkxNzg4NCwgMTcyOCwgOTgzNzA1LCA0Mzc2NCwgMTc4LCAxMjk3MiwgCi0gICAgNzQ2MjAsIDExMzY3MSwgNzExMDMsIDExMTY4LCA5ODMzODMsIDExMzY3MiwgNzgzMjcsIDc1MDQyLCA2NTY5MCwgODM4MiwgCi0gICAgNzExMDcsIDExOTA1NCwgMTk0OTY4LCA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAxMjEzMjcsIDc0MDcwLCAKLSAgICAxMzA2NSwgOTkyMywgMTA4MDYsIDE5NDU5NiwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKLSAgICA3MTA0NCwgMTIxMzEyLCA4MzMzLCAxMjEzMjksIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgOTIzMjAsIDc0MDgwLCA5ODMzMTcsIAotICAgIDY5OTExLCAxMTkxMCwgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgOTgzMTEzLCA2NTM0NCwgMTIwNTE3LCAKLSAgICA0MTc0NywgMCwgMTI4MTEwLCA4Njc3LCAwLCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIAotICAgIDEyNzQ3LCA4MzAwLCAxOTQ1NjIsIDEyNDk4NCwgNzQ5MSwgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgCi0gICAgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCA4MzMwOCwgNjUzNiwgCi0gICAgMTIwMjM4LCA3MTg5MSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIAotICAgIDY4NDk0LCAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTI4ODA4LCA2ODM4LCAzNTYxLCAxMTk4NjcsIDAsIDEwNjEzLCAKLSAgICA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCAxMDgwNCwgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCAKKyAgICAxMjUwNTIsIDU0NzcsIDY1NjkyLCA5ODMyNzYsIDExOTA5MiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDY4Mjk4LCAxMjExOTUsIAorICAgIDM4NzQsIDAsIDEyNTIwNCwgMTAwOTk0LCAxMjAzMzEsIDEwMDk5MywgMTAwNjczLCA2NTYwMywgODMyNzIsIDY1Njg3LCAwLCAKKyAgICA0MTAzOCwgNzQwMDksIDkyMDcsIDQyMjM5LCA4NTM2LCA3MDY3MSwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCA4MzA1OCwgCisgICAgMTQ1NSwgNzg3NDksIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIDQxNzUsIDc4MzIzLCA0MzYxNCwgNjk4MDEsIDkzOSwgCisgICAgNzUwMjEsIDQzNTIwLCA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMTk0NjU4LCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgCisgICAgNjA4OCwgNzg3NTksIDc4NzU1LCAxOTAsIDExOTg5OSwgMTI1OTMsIDEwMDczNSwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIAorICAgIDEyMTMwMywgOTIyNjEsIDYzNzAsIDEwMDQzNiwgNzgyNywgNjg0NDEsIDY5NjUsIDEyODU4MSwgMTI4ODY4LCAxMzIwMSwgCisgICAgMTAwNDMwLCA2OTg5NiwgNzg4NjgsIDc0MzgyLCAxMTg0MSwgNzkxOCwgNzI3NDIsIDEwMTAwNiwgMTEzNjY4LCA5MTc4ODQsIAorICAgIDE3MjgsIDk4MzcwNSwgNDM3NjQsIDE3OCwgMTI5NzIsIDc0NjIwLCAxMTM2NzEsIDcxMTAzLCAxMTE2OCwgOTgzMzgzLCAKKyAgICAxMTM2NzIsIDc4MzI3LCA3NTA0MiwgNjU2OTAsIDgzODIsIDcxMTA3LCAxMTkwNTQsIDEwMDM4MSwgOTI1MiwgMTAwMzc5LCAKKyAgICA0NjUyLCA2ODM3MSwgMTAwMzgyLCAxMjEzMjcsIDc0MDcwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDE5NDU5NiwgMTE3NjMsIAorICAgIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAxMDAzODgsIDY5OTMsIDcxMDQ0LCAxMjEzMTIsIDgzMzMsIDEyMTMyOSwgMCwgCisgICAgMTEzOTAsIDk4MzEzNiwgNzQ0NjQsIDEyNzkxMCwgOTIzMjAsIDc0MDgwLCAxMDA0NDIsIDY5OTExLCAxMTkxMCwgOTI1NTksIAorICAgIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgOTgzMTEzLCA2NTM0NCwgMTIwNTE3LCA0MTc0NywgMTI4MzQyLCAxMjgxMTAsIAorICAgIDg2NzcsIDEyMDU2NCwgMTI3MDcsIDkzNTAsIDY2MDM3LCAxMjgxODAsIDg4MzYsIDEyMzE1LCAxMjc0NywgODMwMCwgCisgICAgMTk0NTYyLCAxMjQ5ODQsIDc0OTEsIDg4NTYsIDcxMzYxLCAxMjc5MTMsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIAorICAgIDY2Nzc5LCA2Njc3NywgMTA4MTMsIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgODMzMDgsIDY1MzYsIDEwMDk2MiwgCisgICAgNzE4OTEsIDY1NTE2LCAxMjMyMSwgMTIwMzkxLCAxMjAzODgsIDU1Mjg3LCAyMjM3LCAxMjAyNDYsIDk1ODgsIDY4NDk0LCAKKyAgICAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTAwODc0LCA2ODM4LCAzNTYxLCA3Mjc1MywgMCwgMTA2MTMsIDY2OTcsIAorICAgIDEyODA1LCA0MTkyOCwgNDA5ODEsIDEwODA0LCA3ODQwOSwgNTAwNiwgNjQzMjgsIDEwMDk2NiwgOTkzMSwgMCwgODgyNSwgCiAgICAgNzQ1NTUsIDY1OTQwLCA0MzI1OSwgMTI2NTg2LCA2MTA3LCA4MzQ1NSwgMTE5MTc3LCA3Nzk0MSwgNzg0MDEsIDExOTI3MCwgCiAgICAgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgNDM4LCA0NTEwLCA1NzY1LCA4NzIxLCAxMTk1NzAsIDExOTIyNywgNjA5MiwgCi0gICAgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAxMjA5MzUsIDAsIDAsIDEwMzgwLCA4NzMzLCAKLSAgICAxMDMxNiwgNzAxMjEsIDQxNjAyLCA5MTc1NzUsIDkyMzA4LCA3NDgzMSwgOTM5ODQsIDAsIDY4NDgyLCA2NTM5OSwgCi0gICAgOTE3ODIwLCA2NDU5MSwgNDI0MDUsIDgzNDY2LCAxMjA4MjAsIDg0MywgMTE1NDEsIDEyODMyNiwgNzAzMjEsIDIwNjUsIAotICAgIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDk4MzMwNiwgMjE1LCA0MTI1OCwgNzc4NzUsIDQzMTU5LCAxOTUzLCA5NTc5LCAKLSAgICA0MTkzOCwgMTI1NiwgMzkxMCwgOTQwNywgNjI0MiwgMCwgODM0NjQsIDQxMjU3LCA0MTkwMCwgODY3NSwgMTA3MDAsIDg4MDUsIAotICAgIDE3NDIsIDExMzcyMiwgOTMzMywgODIwMiwgNzIzOTksIDAsIDk4MzE5NywgMTI3MjUyLCAwLCA3Mzg4MiwgNDk5LCAKLSAgICA5ODMwNDksIDQzNDY3LCAwLCA0MzgxOCwgODM0ODIsIDE3MTIsIDU5MzIsIDc3ODQ1LCA0MTc2MiwgOTgzMTAzLCAwLCAKLSAgICAxMTk2NywgMTc3NSwgMTI1MDA2LCA3NTAwOSwgMTExMTgsIDEyMTM5MSwgMTI4MDA5LCA5NDU4LCA5MjkzNSwgNjQ3MCwgCi0gICAgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMTI4MzA3LCAwLCA0Mjc4MiwgMCwgMTI0OTk5LCA5ODMxMzUsIDEyODMwOSwgNzM4NDksIAotICAgIDEyMDY2OSwgOTQxNCwgNzQ2NDcsIDczNzgyLCA3Mzk2OSwgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAyNjYyLCA0MjI5MiwgCi0gICAgMTk0ODcwLCA4MjU0LCAwLCAxMDk3NSwgNDM1MTgsIDEyMDYyNSwgNzQ3NjMsIDEwMjIsIDQxMDgsIDM4ODAsIDc0MjQ3LCAKLSAgICAxMjcxNTMsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDk4MzExOCwgNDMxNDksIDcxMDU5LCA2NTAzMSwgNzk2MSwgMTYzNiwgCi0gICAgMCwgNjUwMjksIDY1MDI0LCAxMTkwOTksIDEyNDczLCA2NTM0LCAxMjA2MzMsIDk5LCA5OCwgOTcsIDY4MjI2LCA2NzU4NCwgCi0gICAgNDA0OSwgNzQxNjMsIDEyNzA2NSwgNzA5MCwgODMyNzQsIDc4OTIsIDEyNzA2NCwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIAotICAgIDY1NTYyLCA2NjU5OSwgNjY3MjIsIDE5NDk1NSwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAxMjcwNjIsIDcxMTkxLCAKLSAgICAxMjU5NiwgNjY1OTUsIDQyMjU4LCA0MjU3MCwgNTU5MywgMTE5MTQ4LCAxMjA1MzQsIDkyNDI1LCAxMDEwMCwgNjA2MSwgCi0gICAgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIDExNiwgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAKLSAgICAxMTQsIDExMywgMTEyLCAxMDMsIDEwMiwgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgCi0gICAgNDEyMTIsIDY3NzEzLCAxNTM2LCA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjEwOTMsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIAotICAgIDEyNzQ0LCA0NzUsIDEyMDM5NCwgMTMyNjYsIDEyNzgxMywgMTI3MTExLCA3ODg0MiwgNzM5MjYsIDY2MjkxLCAxMDY0NSwgCi0gICAgMTIxMiwgNjU0MywgOTgzMzA5LCA4MTM0LCA0MjkzNSwgMjkxMywgNzM4NzAsIDEyNzExMywgMTg2NiwgOTgzMjI5LCAKLSAgICA3MTg5MiwgMTIwOTk2LCA4OTIzLCAxNjQ1LCAxMjA1OSwgNjY1ODUsIDcxMjk3LCAzMTk2LCA3MjQwNCwgMTk0ODI3LCAKLSAgICA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIAotICAgIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCA3MzkxMSwgMTEzNzg3LCA3MzgxOSwgNDExNjksIDg5MzksIDQxMjQ1LCAKLSAgICAxMjg3NzUsIDQxMTcwLCAxNDU0LCAxMTM2OSwgNjQ3NywgMTIxNTcsIDEyMDg2MSwgMCwgMCwgNDExNzIsIDc4NTUsIDAsIAotICAgIDcxNDcyLCAxMDQ4MCwgNDMyNTgsIDEyNjU5NiwgNzc5MzYsIDgyNjQsIDEyNjEwLCA5ODMzMTAsIDY0NSwgMTI2NjE2LCAKLSAgICA3NjA5LCA0MDk3MywgNjk5NDMsIDczODMzLCA2OTk0OCwgNTgyNCwgOTg0LCA3NzkxOCwgMTA2ODgsIDU4NTEsIDAsIDc3MjksIAotICAgIDczOTgyLCAxMjA1MTgsIDgzNDczLCAxOTUwODYsIDQzMzY5LCA5ODMxNzcsIDEyODE0MCwgNjg0MTUsIDc3ODYxLCA0NTM4LCAKLSAgICA5Mzk3OCwgNDMxNDEsIDk4Mzc2OSwgODI5NzYsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgNzE5MTgsIDQzMDA1LCAKLSAgICA3MTExNCwgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDgzNDc3LCAwLCAxMjg4OTcsIDE5NTAzMCwgMjM4MSwgCi0gICAgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDc0NjE4LCAwLCAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCAKLSAgICA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCA4Mjk3NywgNzA0MzcsIDEyMTI1MSwgNjQ4OTYsIDExOTE2MiwgMTk1MiwgCi0gICAgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgMTI4NDUwLCAxMTk1NjYsIDEyODA5MywgMTI4MDgsIDEyMTgzLCA2MTQ1LCAKLSAgICA3NTAyMCwgNjQ5MjksIDc0OTg1LCA3MTkxNiwgNzQ5ODQsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgODMyNzcsIAotICAgIDgzMjc4LCAxMDE5MSwgODMyNzEsIDExNzUyLCAzMzUzLCA5MzU4LCA5ODM0NjIsIDcxMzY2LCA2NjY4MCwgMTIwMDkwLCAKLSAgICA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMTIwMDQ3LCA5ODMwNTYsIDgzNDcwLCAxMjAwODEsIDExOTA1MiwgCi0gICAgNDEwMjcsIDEyMDA4NiwgNzE0NDksIDEyMDA4OCwgNzM2NiwgNzAxOSwgNzAzNzgsIDAsIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCAKLSAgICA2NDY1NywgODY1NywgODM0NzIsIDg1OTQsIDEyMDA2OCwgMCwgOTgzNzg5LCAxMjAwNjksIDEyMDA3MiwgMTIwMDcxLCAwLCAKLSAgICAxMTM3MTEsIDQzMTU0LCA0MTAyOSwgMTE5OTU2LCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIAotICAgIDc4NTEsIDAsIDgzNzUsIDg2OTksIDEyNzk0OSwgNDI1MjQsIDY4NDE5LCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgCi0gICAgNzM4NDIsIDk4Mzg2NCwgMTk0OTI5LCA4MDg4LCAxMjg5MzcsIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIAotICAgIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIAotICAgIDEyNzQ3NiwgMTEyOTYsIDk4MzI4NSwgOTgzNDA5LCAwLCA2NTgyNSwgOTU3NywgNjgxOTksIDk4MzM5MywgNjQ2NzAsIAotICAgIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgNzgwNTMsIDczODcyLCA3ODA1NSwgMTE5OTkzLCAxMDkwMiwgMCwgCi0gICAgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgMTIxNDM4LCAxMjAxMzgsIDY0NjgyLCAyMzcxLCA3ODA2OSwgMTE4ODkzLCAKLSAgICAyNTksIDEwMDksIDcwNDA1LCAyNDAyLCAyMzMzLCA2NDQwLCAxOTQ3NDEsIDExMzc1NywgNjUxMjUsIDQxMjQ0LCA3MDQwNywgCi0gICAgMTMyNzEsIDkxMDMsIDIyNzgsIDk4MzE0NiwgMTk0NzI4LCAxMjkxMjAsIDAsIDEwMjE5LCA3NDk2OCwgMTk0NzQwLCAwLCAKLSAgICA2NzcxOCwgNDMxNzgsIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCA4MzQzOSwgCi0gICAgNDE0OTIsIDEyMDA1LCA2OTkyNywgMTI3MDY4LCAxODkwLCAxMjAwNTYsIDAsIDgzNDQzLCAwLCA3MjkzLCA3OTkxLCAKLSAgICA3NDA1MiwgMTA1NzgsIDEyMTE0MSwgNzgwNzYsIDEyODYyMCwgNjczNjgsIDY5OTI4LCA3MTg1MCwgNzg4MDAsIDkyNjUzLCAKLSAgICA2NDQ0NSwgNDI2NjgsIDY2MzUsIDEyODMwOCwgNjE2NCwgNjUxNzAsIDc0OTM2LCAxMjExODIsIDc2NzYsIDExNjY0LCAwLCAKLSAgICA5MzAyNSwgNjk3MDcsIDkzMDIyLCAxMTg4MTIsIDAsIDcxMDk2LCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgOTA4OCwgCi0gICAgMTE5MTQ1LCA2NDU0NSwgMTM5NiwgMTIwNjY0LCA3NTQ2LCAzODQ3LCA3MTA4OCwgOTMwMzcsIDQ5ODUsIDEzMjg4LCA2NzIsIAotICAgIDgwOTgsIDQzMTk2LCAxOTQ3NDYsIDEyMDcyMywgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAxMTc3MiwgCi0gICAgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDE5NDcxMSwgMTI4MzcxLCAxMjYyMiwgCi0gICAgMTI3MjM0LCAxMjQ5NDgsIDAsIDEyMTIxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgMCwgNzQ5NjksIAotICAgIDQyNzMxLCA2Nzk3MiwgNzQ5NzAsIDcxMDY2LCA5ODMyMDAsIDMwNTEsIDU4NjIsIDc4MjMsIDkyNDc4LCA5Mjc0NiwgCi0gICAgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgOTgzMzA0LCAwLCA0MTA2NiwgNjQ2NzMsIAotICAgIDkxNzk2MywgOTIzODEsIDEyODYzNiwgMzUwNSwgODcwNywgNzQ5MjUsIDY3MjUsIDEyMDgwMiwgMTIxMjk2LCA3NTA0MSwgCi0gICAgMzQ3MSwgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgNzQ2MDgsIAotICAgIDEyNTAyOSwgODM0MzMsIDEyMTIzNywgMTIwODQ1LCAwLCA4MzQzMSwgMzIyNSwgOTE3OTk2LCA0NDMzLCA0MTE1NiwgCi0gICAgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCA5ODM2NDIsIDEwOTI2LCAxMTc1NiwgMTE3NTcsIDY0ODc5LCAxMjExMDYsIAotICAgIDQyNjU0LCAxMjc4NDgsIDEzMjI3LCAxMjAzMjAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MjY0NCwgNDE0MTgsIDEyODkzMywgCi0gICAgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDEyMTA4MiwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCAKLSAgICA0Mjc0LCAxMTE0MywgNDE0ODMsIDAsIDQxMjUwLCAxMjg5MDQsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgCi0gICAgNzQ0NDYsIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgOTgzNDU4LCAKLSAgICAxMjA4MTMsIDQzOTcsIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyMDg5MywgMCwgNDE0ODUsIDM1MTEsIAotICAgIDQxMjgyLCA1OTIzLCAxMDQwMCwgMCwgMTIwNDkzLCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCA2ODI1MiwgNDIyNTYsIDExOTg2OSwgCi0gICAgNjcxNDUsIDQxNywgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDc0OTY1LCA1OTM0LCA3NDU3MiwgNjY1ODMsIDc0OTA0LCAKLSAgICA2NDg3NywgMjI4NCwgNjQ0ODEsIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCA2NzI0MCwgMTk0NjU2LCAwLCAwLCAKLSAgICA0MjI3MywgNTgxOSwgMCwgMTI4MDU2LCAwLCAxMTkxMjksIDk4MzEwMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgCi0gICAgNjU3ODUsIDEyMzcsIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDEyODI4NywgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgCi0gICAgMzMyOSwgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDExOTI0MiwgCi0gICAgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMTk1MDUxLCAxMTk4ODAsIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIAotICAgIDkyNzYyLCA4OTQ0LCA5ODMxNjQsIDAsIDEwNDczLCA5ODM4MjMsIDEyMDQ3MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAKLSAgICAxMjg0MzYsIDY4ODQ1LCAxMjA2MDgsIDY2MzI2LCA2NzQxMiwgOTI5NTIsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAorICAgIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgMTIwOTM1LCAxMDA5NzAsIDcwNzEzLCAxMDM4MCwgCisgICAgODczMywgMTAzMTYsIDcwMTIxLCA0MTYwMiwgOTE3NTc1LCA5MjMwOCwgNzQ4MzEsIDkzOTg0LCA5ODM4MzAsIDY4NDgyLCAKKyAgICA2NTM5OSwgOTE3ODIwLCA2NDU5MSwgNDI0MDUsIDgzNDY2LCAxMjA4MjAsIDg0MywgMTE1NDEsIDEwMDgxMCwgNzAzMjEsIAorICAgIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDEyNTA2MCwgOTgzMzA2LCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIAorICAgIDE5NTMsIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA4MzQ2NCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAKKyAgICAxMDcwMCwgODgwNSwgMTc0MiwgMTEzNzIyLCA5MzMzLCA4MjAyLCA3MjM5OSwgMTIxMDI3LCA5ODMxOTcsIDExMzgwOSwgCisgICAgMTAwOTg5LCA3Mzg4MiwgNDk5LCA5ODMwNDksIDQzNDY3LCAxOTQ5MjcsIDQzODE4LCA4MzQ4MiwgMTcxMiwgNTkzMiwgCisgICAgNzc4NDUsIDQxNzYyLCAxMjkzNzIsIDAsIDExOTY3LCAxNzc1LCAxMjUwMDYsIDc1MDA5LCAxMTExOCwgMTIxMzkxLCAKKyAgICAxMDA5ODIsIDk0NTgsIDkyOTM1LCA2NDcwLCA5MTgwLCAxMjAzODAsIDQzMTc2LCAxMDA0MTQsIDEwMDk4NiwgNDI3ODIsIAorICAgIDEwMDQ0MCwgMTAxMDM2LCAxMDEwMzUsIDEwMDU4MSwgNzM4NDksIDEwMTA0MCwgOTQxNCwgNzQ2NDcsIDczNzgyLCA3Mzk2OSwgCisgICAgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAyNjYyLCA0MjI5MiwgMTAxMDQ0LCA4MjU0LCAxMDEwNDYsIDEwOTc1LCA0MzUxOCwgCisgICAgMTAwOTU0LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgNzQyNDcsIDEwMDk1MSwgMTAwOTkxLCA5MjI2MywgOTE3OTgwLCAKKyAgICA3NTA3LCAxMDA2MzgsIDQzMTQ5LCA3MTA1OSwgNjUwMzEsIDc5NjEsIDE2MzYsIDAsIDY1MDI5LCA2NTAyNCwgMTE5MDk5LCAKKyAgICAxMjQ3MywgNjUzNCwgMTIwNjMzLCA5OSwgOTgsIDk3LCA2ODIyNiwgNjc1ODQsIDQwNDksIDc0MTYzLCAxMDA5NTUsIDcwOTAsIAorICAgIDgzMjc0LCA3ODkyLCAxMDEwMzAsIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgNjY1OTksIDY2NzIyLCAxOTQ5NTUsIAorICAgIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMTAwOTYwLCA3MTE5MSwgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIAorICAgIDU1OTMsIDExOTE0OCwgMTIwNTM0LCA5MjQyNSwgMTAxMDAsIDYwNjEsIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIAorICAgIDEyOTk4LCAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIAorICAgIDEwMSwgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIDQxMjEyLCA2NzcxMywgMTUzNiwgCisgICAgNjQwOTMsIDczOTcwLCA3NzkzMCwgMTIxMDkzLCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAxMjc0NCwgNDc1LCAxMjAzOTQsIAorICAgIDEzMjY2LCAxMjc4MTMsIDEwMTA3MywgNzg4NDIsIDcwNTAzLCA2NjI5MSwgMTA2NDUsIDEyMTIsIDY1NDMsIDEyNTIyMCwgCisgICAgODEzNCwgNDI5MzUsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDk4MzIyOSwgNzE4OTIsIDEyMDk5NiwgODkyMywgCisgICAgMTY0NSwgMTIwNTksIDY2NTg1LCA3MTI5NywgMzE5NiwgNzI0MDQsIDE5NDczMywgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCAKKyAgICA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAKKyAgICAxMTQ1NCwgNzM5MTEsIDEwMTAyMCwgNzM4MTksIDQxMTY5LCA4OTM5LCA0MTI0NSwgODM0NjUsIDQxMTcwLCAxNDU0LCAKKyAgICAxMTM2OSwgNjQ3NywgMTIxNTcsIDEyMDg2MSwgMCwgMCwgNDExNzIsIDc4NTUsIDEwMDk2MSwgNzE0NzIsIDEwNDgwLCAKKyAgICA0MzI1OCwgMTI2NTk2LCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMxMCwgNjQ1LCAxMDA5OTIsIDc2MDksIDQwOTczLCAKKyAgICA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMTAwODM2LCA3NzI5LCA3Mzk4MiwgCisgICAgMTAxMDAxLCA4MzQ3MywgMTAxMDAzLCA0MzM2OSwgMTAxMDA1LCAxMDA5NzMsIDY4NDE1LCA3Nzg2MSwgNDUzOCwgOTM5NzgsIAorICAgIDQzMTQxLCAxMDA5NzIsIDgyOTc2LCA3NDIxNCwgNzM4ODYsIDY3NzA5LCA5MTc1OTksIDcxOTE4LCA0MzAwNSwgNzExMTQsIAorICAgIDk1NTIsIDAsIDcwMTI5LCAxMjkxNzMsIDEyOTk3LCA4MzQ3NywgMTk0OTQzLCAxMjg4OTcsIDEwMDczNywgMjM4MSwgCisgICAgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDEwMDk4MSwgNzQ2MTgsIDEwMDk4MywgMTI0MjUsIDEwNjYxLCAxMDg1NiwgCisgICAgOTYxNCwgMjQyOCwgNDE0NzgsIDg1ODIsIDEwMDY0LCA3MzkzMCwgODI5NzcsIDcwNDM3LCAxMjEyNTEsIDY0ODk2LCAKKyAgICAxMDA5NTYsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDEwMDk1NywgMTE5NTY2LCAxMDA4MTcsIDEyODA4LCAKKyAgICAxMjE4MywgNjE0NSwgNzUwMjAsIDY0OTI5LCA3NDk4NSwgNzE5MTYsIDc0OTg0LCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIAorICAgIDkxODcsIDgzMjc3LCA4MzI3OCwgMTAxOTEsIDgzMjcxLCAxMTc1MiwgMzM1MywgOTM1OCwgMTI4OTgwLCA3MTM2NiwgCisgICAgNjY2ODAsIDEwMDgxMywgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDEwMDgxMiwgMTAwOTc3LCA4MzQ3MCwgCisgICAgMTIwMDgxLCAxMDA5NzEsIDQxMDI3LCAxMDA4MTEsIDcxNDQ5LCAxMjAwODgsIDczNjYsIDcwMTksIDcwMzc4LCAwLCAKKyAgICAxMTc1MSwgMTIwMDc4LCA3ODI5NCwgNjQ2NTcsIDg2NTcsIDgzNDcyLCA4NTk0LCAxMDA5NjksIDEwMDk2OCwgMTAwOTc4LCAKKyAgICAxMDA4MjAsIDEwMDkxNCwgMTIwMDcxLCAwLCAxMTM3MTEsIDQzMTU0LCA0MTAyOSwgMTE5OTU2LCAxMTMzMiwgNjUzODAsIAorICAgIDc3MjgsIDk0MDc3LCAxMTI5NCwgMTAwOTgwLCA2NjY2NSwgNzg1MSwgMCwgODM3NSwgODY5OSwgMTIxMDk3LCA0MjUyNCwgCisgICAgNjg0MTksIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCA3Mzg0MiwgOTgzODY0LCAxOTQ5MjksIDgwODgsIDcwNjk4LCAKKyAgICA3NDAxMiwgNjY1NjIsIDAsIDQ0MzksIDY5MjYsIDcyNDIzLCAxMjkyNCwgMTAwOTc0LCA0MjM2OSwgNDM1MCwgNjU0OTEsIAorICAgIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAxMDA5NTksIDExMjk2LCA5ODMyODUsIDk4MzQwOSwgMCwgCisgICAgNjU4MjUsIDk1NzcsIDY4MTk5LCA4Mjk4MiwgNjQ2NzAsIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgCisgICAgNzgwNTMsIDczODcyLCA3ODA1NSwgMTAwODE1LCAxMDkwMiwgMCwgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgCisgICAgMTAwOTUzLCAxMjAxMzgsIDY0NjgyLCAyMzcxLCA3MjcyMCwgMTE4ODkzLCAyNTksIDEwMDksIDcwNDA1LCAyNDAyLCAyMzMzLCAKKyAgICA2NDQwLCAxMjUyNDcsIDEwMDk2MywgNjUxMjUsIDQxMjQ0LCA3MDQwNywgMTMyNzEsIDkxMDMsIDIyNzgsIDk4MzE0NiwgCisgICAgMTk0NzI4LCA3MzAxLCA5ODM2OTMsIDEwMjE5LCA3NDk2OCwgMTk0NzQwLCAwLCA2NzcxOCwgNDMxNzgsIDEyNzA3MCwgCisgICAgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDE5NDg5NSwgOTQwNDksIDY3MzYsIDgzNDM5LCA0MTQ5MiwgMTIwMDUsIAorICAgIDY5OTI3LCAxMjcwNjgsIDE4OTAsIDEyMDA1NiwgOTgzMzAyLCA4MzQ0MywgOTgzMDQ0LCA3MjkzLCA3OTkxLCA3NDA1MiwgCisgICAgMTA1NzgsIDEyMTE0MSwgNzgwNzYsIDEyODYyMCwgNjczNjgsIDY5OTI4LCA3MTg1MCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgCisgICAgNDI2NjgsIDY2MzUsIDEwMDc5MiwgNjE2NCwgNjUxNzAsIDc0OTM2LCAxMjExODIsIDc2NzYsIDExNjY0LCAxMjg2ODQsIAorICAgIDkzMDI1LCA2OTcwNywgOTMwMjIsIDExODgxMiwgOTgzMjMzLCA3MTA5NiwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgNzgwNDUsIAorICAgIDkwODgsIDExOTE0NSwgNjQ1NDUsIDEzOTYsIDEyMDIyMCwgNzU0NiwgMzg0NywgNzEwODgsIDkzMDM3LCA0OTg1LCAxMzI4OCwgCisgICAgNjcyLCA4MDk4LCA0MzE5NiwgMTAwNzk2LCAxMjA3MjMsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgCisgICAgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAxOTQ3MTEsIDEyODM3MSwgCisgICAgMTI2MjIsIDEyNzIzNCwgMTIwNTY2LCAxOTQ3OTgsIDEyMTIxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgCisgICAgOTgzMzUxLCA3NDk2OSwgNDI3MzEsIDY3OTcyLCA3NDk3MCwgNzEwNjYsIDk4MzIwMCwgMzA1MSwgNTg2MiwgNzgyMywgCisgICAgOTI0NzgsIDkyNzQ2LCAxMjA0MTEsIDMyNTAsIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCA5ODMzMDQsIAorICAgIDE5NDc0OCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkyMzgxLCAxMjg2MzYsIDM1MDUsIDg3MDcsIDc0OTI1LCA2NzI1LCAKKyAgICAxMjA4MDIsIDEyMTI5NiwgNzUwNDEsIDM0NzEsIDY2MzkxLCA1NDc5LCA4ODIsIDY2ODYsIDExOTU4NCwgMTE2MTMsIAorICAgIDEwMTEwNiwgNDI3NTQsIDc0NjA4LCAxMjUwMjksIDgzNDMzLCAxMjEyMzcsIDEyMDg0NSwgMCwgODM0MzEsIDMyMjUsIAorICAgIDkxNzk5NiwgNDQzMywgNDExNTYsIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMTI3OTQ5LCA5ODM2NDIsIDEwOTI2LCAKKyAgICAxMTc1NiwgMTE3NTcsIDY0ODc5LCAxMjExMDYsIDQyNjU0LCAxMjc4NDgsIDEzMjI3LCAxMjAzMjAsIDEwMDIxLCA1MTYwLCAKKyAgICAxMzg3LCA5ODM3MzAsIDkyNjQ0LCA0MTQxOCwgNjY3NDksIDY1OTE0LCA2NzIxLCAyMTcsIDcyODI5LCA5MTc5NjAsIAorICAgIDEwMDk2NSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCA0Mjc0LCAxMTE0MywgNDE0ODMsIDAsIDQxMjUwLCAKKyAgICAxMjg1NjMsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgNzA2NzYsIDQxMjUyLCA2NjY4MiwgOTgzNjgwLCAKKyAgICAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCA3NDMxOSwgMTIwODEzLCA0Mzk3LCAxMDA0NDUsIAorICAgIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjA4OTMsIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgMTA0MDAsIAorICAgIDAsIDEyMDQ5MywgNzYwLCAxMjcxODgsIDEyMDg4LCA1Nzg2LCA2ODI1MiwgNDIyNTYsIDEwMDQ0NiwgNjcxNDUsIDQxNywgCisgICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDc0OTY1LCA1OTM0LCA3NDU3MiwgNjY1ODMsIDc0OTA0LCA2NDg3NywgMjI4NCwgCisgICAgNjQ0ODEsIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCA2NzI0MCwgMTk0NjU2LCAwLCAxMjcxNTMsIDQyMjczLCA1ODE5LCAKKyAgICAwLCAxMjgwNTYsIDAsIDExOTEyOSwgOTgzMTAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCA2NTc4NSwgMTIzNywgCisgICAgMTAyNzQsIDQ1NTIsIDExOTU3NiwgMTI4Mjg3LCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCAzMzI5LCAwLCAKKyAgICA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMTE5MjQyLCAxMjgxMDQsIAorICAgIDQzMTg1LCAwLCA0Mzk2LCAxMDA1MzIsIDEwMDUzNSwgMTA3NjksIDk2NzYsIDEwMDUzNiwgMTAwNTM5LCA5NzUzLCA5Mjc2MiwgCisgICAgODk0NCwgOTgzMTY0LCAxMjE0NTAsIDEwNDczLCA5ODM4MjMsIDEwMDU0MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAxMDA1NDYsIAorICAgIDY4ODQ1LCAxMDA1NDgsIDY2MzI2LCA2NzQxMiwgOTI5NTIsIDcyODA4LCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKICAgICAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCAxMjc5MDIsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAKICAgICA3NDkzOCwgNDMzMjQsIDAsIDAsIDc1NjUsIDY2MzYzLCAxMjk1MiwgNjQ4MDYsIDQzMTgwLCA3NDk2NywgNzQxNCwgNzc5MjksIAotICAgIDQzOTgyLCA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgOTgzNzMxLCA4NTIsIDAsIDEyMTYwLCAKLSAgICA4MzQ5MSwgMTAyMTIsIDY1NDM1LCAxMjkwOTIsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAKKyAgICA0Mzk4MiwgNzA3NDEsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDcxMjY3LCA4NTIsIDAsIDEyMTYwLCAKKyAgICA4MzQ5MSwgMTAyMTIsIDY1NDM1LCAxMjY2MDMsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAKICAgICAxMTAzNSwgMTA0MTEsIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAxMDM3NSwgNDM4NTMsIDEyODU5OSwgCiAgICAgNDMxNSwgMTI2NDQsIDgzNDkwLCA3NzkzNywgNDM2MzksIDQzMzQzLCA2NzQwOCwgMTI4OTQ1LCAxMTUwMSwgNDExNzcsIAotICAgIDEyMTE4MCwgMTI4ODY2LCA0MzQzMSwgMTI3MDk3LCA5MjQxMywgODcxNSwgMCwgNDExNzksIDk4MzM1OCwgNDMzMTMsIAotICAgIDEyMDIzMCwgNDExNzYsIDEyODc4MCwgOTk0LCA5ODMwNDUsIDg0NTIsIDc3OTczLCA3Mzk2NiwgNjY4OTAsIDcwODEyLCAKLSAgICA1OTIxLCAwLCAyNTk3LCA5MjQyMywgNTkyMiwgMTE4OTAzLCA2Njg3MywgNDE4NiwgOTI1MzEsIDExOTk2NywgMTI3MTA1LCAKLSAgICA2NzE4LCAxMjcwMjksIDQ0MDYsIDc0NjAxLCA4NDgwLCA5MTkyLCA5NzQ3LCAxMjEwNDAsIDQ0MTMsIDkyMTk2LCA0MjI2OCwgCi0gICAgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCA0MzE2OSwgCi0gICAgMTAxNzYsIDAsIDc0MiwgNzQ4ODEsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgMTE2ODIsIDY3NTYsIAotICAgIDEyNTEwNCwgMTIxMTI2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMjA0OTQsIDExNDEsIDQyNDA3LCAKLSAgICA3NDE3LCA3MTgsIDc1NzIsIDk3MywgMTE5NTk5LCAxMjA3MTgsIDMyMzUsIDI0MTUsIDQzMTY0LCAwLCA4MDE4LCA0MjMzMywgCi0gICAgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIDY1MzkwLCAxMDA2NywgMTIwODQ5LCAxMjAyLCAwLCA5ODM5MTAsIAotICAgIDY1ODYzLCAwLCA2ODQ4NCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCAKLSAgICA3ODA0MiwgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCA5MjQyMiwgMCwgNTUyMzcsIDE0MzEsIDExOTE5NCwgNjY1NjUsIAotICAgIDEwODIxLCAwLCAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCAKLSAgICA3MTIyOCwgOTE3OTgyLCAxMjkxODgsIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIAotICAgIDEyMDY4LCA3ODEwMiwgNzEyMjYsIDEwMTQxLCA3NDkyMiwgNjM3NjEsIDg3ODUsIDQ0NzYsIDY1MDcxLCA2Mzc2MywgCi0gICAgMTI2NTUsIDg5MDcsIDkxNDcsIDc4MTA2LCA3ODEwMywgNzgxMDQsIDEyMDg5OCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIAotICAgIDQxNTcyLCAxMjc5NzksIDEyNzE2MCwgOTgzNTU0LCA0MTU3MywgODMxNjAsIDM5MzEsIDEyMDI5NSwgNzQxNDMsIDgzMTU2LCAKLSAgICA4MzE1NywgODMxNTgsIDc4NDYwLCAxMTk4MiwgMCwgODMwNjcsIDEyODM4MSwgOTI3MTIsIDY0NDg0LCAxMTkyNjYsIAotICAgIDQxMTY3LCAwLCA0MTczNSwgOTQwMTksIDcxNywgMTA3NTQsIDgzMTY4LCA4MzE2OSwgNzI0MTMsIDgzMTYzLCA2Mzc2NywgCi0gICAgODMxNjUsIDE3ODAsIDY5MzYsIDAsIDgzMTYxLCA4MTksIDEwNjExLCA5Njk0LCAxMjY5NzgsIDcxNDc0LCAwLCAxMjc4NzEsIAotICAgIDEyOTA2OSwgODM0MywgODM0MiwgODM0NSwgODM0NCwgNjU3OCwgNzAwOSwgNzUyMywgNjkyMiwgODM0OCwgODM0NywgNzUyNSwgCi0gICAgMzM0NiwgODMzOSwgMTI4MTY1LCAxMjgyMDgsIDU3NSwgMjY4LCA3ODExMSwgODU2MywgNTc1NCwgMTIwMzQzLCA0MTU0MSwgCi0gICAgNjU1NjUsIDgzMzYsIDU5MzYsIDcyOTAsIDc4MTE3LCA4MzM3LCA4MzQxLCAzMDgsIDExMzg4LCA3NTIyLCA4MzE1MSwgCi0gICAgNzgxMjMsIDY1NDY2LCAxMTA5MCwgNjk1MywgMCwgODMzNzUsIDc0OTczLCA3ODEzMiwgNTkyNiwgNjgyNTAsIDc4MTMwLCAKLSAgICA3ODEyNiwgNzgxMjcsIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIAotICAgIDk4MzU1OSwgNjU3NDIsIDEyODc0LCAxMTk1OTcsIDExNTkwLCAwLCA3NDA0OCwgNjczNzksIDg1OTUsIDk4MzUsIDkxNzk0NywgCi0gICAgNDM3MDMsIDEzMDk3LCAwLCA2NDY0MywgMTMyODMsIDEyNjk3LCA3NDk3NSwgMTIzODEsIDM0ODgsIDU5MzMsIDEwMDMzLCAKLSAgICA3MTEwMSwgNjYyNDEsIDY1NTcwLCAxMTkxNTQsIDEyMjk3LCA3MTIxMiwgMTk1NSwgMTI3OTcwLCA1MzQ5LCA0MjUzOCwgMCwgCi0gICAgMTI0OTMyLCA3NDExLCA5NDYyLCAxMjgxNTAsIDAsIDEyODQ2NSwgNDM5MjAsIDQyNzM2LCAxMjEwMTcsIDU3NTYsIAotICAgIDEyODMyNCwgNzYzOCwgNDE2NDIsIDQyNzY0LCA5ODM3MTcsIDQzMTA5LCA3NjM3LCA1NzUyLCAxMTIxMywgODM0ODEsIAotICAgIDczODMyLCAxMjg4MjcsIDgzNDg2LCAxMjgyMzEsIDc4MzM0LCA5MTc5NTcsIDc2MzYsIDY1MTcxLCA5MTI0LCA5ODMyMTAsIAotICAgIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgOTgzMjIxLCAyMDI3LCA2NjIzMCwgMTAwODAsIDc4MTM2LCAxMDQwMywgNzA4NjksIAotICAgIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCAxMTE4MywgMTIwNDMxLCAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAKLSAgICAxMjcxMzgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAxOTQ2NDgsIDQxMjc0LCA1Nzc4LCA2MzAyLCAKLSAgICAxMjE0MzIsIDAsIDEyNjgwLCAxMTkxMzAsIDE0MTcsIDY3MjQyLCA5MzA0MSwgOTQ1MiwgMTI4MTUzLCA3NDM5MywgMTE1NTIsIAotICAgIDAsIDEyNzg1NSwgMTI4MjE3LCA2NTM5MSwgMTI4NjE0LCAxMDE3MiwgNjU0NTMsIDYzNzg5LCA0MTI2NCwgNzg2NTgsIAotICAgIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgNDEyNjksIDEyMDQxMiwgCi0gICAgNDEyNjcsIDQ2NDYsIDY3NzU5LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCA3ODI3MCwgMTI3OTgyLCAKLSAgICA5ODMxNzIsIDQzOTQ4LCAxOTUxMDAsIDY4ODQwLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgMTI3ODkyLCAKLSAgICA2MDY5LCA5MjE5LCAxMjg1NTgsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAxMTkxNDMsIDAsIAotICAgIDcxNDYyLCA5NDA1MCwgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgMTE5NTY3LCA2NzcwNSwgCi0gICAgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCA5ODM2MjksIDEyODYxMSwgODM0NzQsIDEwMjI5LCAKLSAgICAxMDYzNSwgODI2LCA4MzQ3NSwgMTk1MDgyLCAxMjcwMDMsIDE5NTA4NCwgNzE0NTUsIDY0ODMsIDkyMjExLCAxODA4LCAKLSAgICA3ODQ4LCAxMTM3ODgsIDgxMDAsIDc4MjI3LCA3MTE5OCwgNzg2NzAsIDEzMzAxLCA3ODY2NywgOTY2NywgNzg2NjUsIAotICAgIDY3NzA0LCA5ODM5MjEsIDExMDAzLCA5OTA0LCA4MzQxMCwgOTgzOTE5LCAxMjA2OTAsIDkxNDQsIDEwOTIxLCA5Mjk5MiwgCi0gICAgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgNzEwOTIsIDEwMzEzLCA4MzQwOCwgODM1MDAsIDY0MzIwLCAxMDI2NSwgCi0gICAgNjcyNTIsIDEwOTYyLCA2NjkwNCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAxMjA5OTUsIDQxLCAxOTUwNzIsIDE3OTIsIAotICAgIDEyMDUxNSwgMTk1MDczLCA4NjU1LCA2ODI1NCwgOTI1NDQsIDc3OTUxLCAxMjA2NiwgNjcyNTgsIDM4NSwgNDE1MiwgMjU4NSwgCi0gICAgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDkxNzg1MiwgNzM5ODMsIDEwOTU3LCAxMjcwMzcsIDExMTYwLCAxMTkxMTYsIAotICAgIDEyNzg3MywgMTMxNTcsIDAsIDEyODAyNCwgMzU3MCwgMTI5MTg3LCA3NDQzLCAxMTg4MDQsIDQ0MDA2LCA2OTk3LCA2ODAwNCwgCi0gICAgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgOTE3OTcxLCA2NTIxNiwgNzAxOTYsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAKLSAgICAxMjg1NDMsIDc4MzksIDkyNjEyLCA3ODgwNiwgNzUwNjQsIDk2OTEsIDQ0MTEsIDc4ODAyLCAxMjEyMTksIDEyMDg1NCwgCi0gICAgNDM0NDIsIDY5ODUxLCA2NTI1NCwgMTAwNjYsIDk4Mzg4OSwgNzI0MTksIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgCi0gICAgMTk5MzIsIDY0ODMxLCAwLCAxMTM2ODQsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCA2NTA3MCwgMTEwNTYsIAotICAgIDk4MzU3NCwgMTE5OTI1LCA5ODMwOTksIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDk4MzgxMSwgNDExNjYsIDAsIDEyNDU2LCAKLSAgICAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIDE5NDcwOSwgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCAKLSAgICA3NDE2MiwgMTE5MzIwLCAxMjA0ODMsIDk5NjksIDEyMDc2NywgMTI0NTQsIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCAKLSAgICA3ODQyNCwgMzIzMCwgNjg3NzMsIDk4MzQ5NywgNzUwMjUsIDUyMDksIDI5NywgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCAKLSAgICA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCA3NDE1NiwgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAKLSAgICA3ODg5MywgNzQ4MTUsIDEwNTEyLCAwLCA3NDgxNCwgNzg4NzUsIDEyNzUwNSwgNzg4NzYsIDI1MDMsIDczNzc4LCAxNzYyLCAKLSAgICA2OTc5NCwgMjQ5NSwgNzQ5MTEsIDU4NDQsIDY4MDMxLCAxMTg4MzgsIDEyNzk0NywgMTI2NTQsIDQ2NjMsIDE4OTksIAotICAgIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDkyOTcyLCAwLCAxMTkwMDAsIDg4OTIsIDc4ODcyLCA5MjMzOSwgCi0gICAgNzEyMzIsIDk4MzA3MywgNTc4MiwgNDIwLCAxMjczNDgsIDkxNzg3MSwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMTI4NTMzLCAKLSAgICA2NDgxNCwgNjM3OTYsIDQzODYxLCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMTI4NDc5LCAxMjExNDQsIDYzNzkyLCAKLSAgICA0NjU5LCAxMjA3ODgsIDc3OTcxLCA0MzY3NiwgNzQ5NDQsIDY5NjczLCAxMjEwMjksIDExMTI5LCA5MjkyOSwgMzI5LCAKLSAgICA3Nzk2OCwgOTI3MDcsIDgzNDk2LCA3Mzk5LCAwLCA0MTE4OCwgMTMyNDQsIDY3NjkyLCA0MjE2NywgNzQzNSwgNzgxOTMsIAotICAgIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIDExMzY1LCA0MzEyNiwgNzc5NzIsIDAsIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgCi0gICAgNDI3NjUsIDYzNzUyLCAwLCA3OTg3LCA2OTY3NiwgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCAKLSAgICA1NjAzLCAwLCA0NDczLCAxMjEwODUsIDcyNDI2LCAxMjQ5NDcsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDEyODU0OCwgCi0gICAgMTE5MjEzLCA1MzQ3LCA2OTgwMiwgOTE3OTczLCA3Mzg2OCwgNzA4NTIsIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMTI4MjcxLCAKLSAgICA1MzQzLCA3ODQyMiwgMTIwNjYxLCA0NTU1LCA1MzQxLCA4MzQ1OSwgNzAwNzEsIDc0OTE2LCA1MzUxLCA3ODY3NSwgNDMxMDQsIAotICAgIDY1MjQ0LCAxMjEzNjUsIDY0NTQxLCA0MjUxOSwgNjgxMzQsIDEyODkxNiwgMTI2OTg2LCA3NDc2NSwgMTI4OTc5LCAKLSAgICAxMjc1MTAsIDY2MzgsIDAsIDY1MTEzLCAyNzEsIDc0MTgwLCA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCA2NTM2NiwgCi0gICAgNDIxNzIsIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgMTE4MDAsIAotICAgIDY1MzU1LCA1MzQ1LCAxMTEwMywgNjUzNTIsIDY1MzUxLCA3NjEsIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAKLSAgICAxMjY2MzUsIDI0MjMsIDc0NTE4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAxMjY1NzMsIDEyODY3MCwgOTgzNzg3LCAKLSAgICAwLCA2NDYwNSwgMCwgNjgwNzQsIDk4Mzk3NywgNDkxNiwgMTI4NTY4LCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIAotICAgIDY5NzczLCA5NzczLCAxMzE2NywgMTI5MTgsIDQxMDk2LCA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA4MzQ1MCwgMTA2ODQsIDAsIAotICAgIDEyNTA2MywgOTI5MDYsIDc5NDYsIDEyNTQxLCA4MTgyLCA2NzU4NiwgNjk3ODAsIDAsIDEyODIwNywgMCwgOTgzNjU0LCAKLSAgICA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAxMTg4NTQsIDY4MDExLCA4ODQ3LCA5MjM3MSwgNjU4NzYsIDU1MzUsIDgzMjksIAotICAgIDc0NTkwLCAxMjUwMzYsIDkyNjA5LCAwLCA2Njg3NCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAxMjEyMTEsIDU2MDcsIAotICAgIDQxMDg5LCAxMjg2MjYsIDAsIDcwMjkyLCAyNjY1LCAxMTMwNCwgNDM3NTEsIDc0MjAwLCA0OTcwLCA4NzY0LCAxMjA0NTksIAotICAgIDg5MzQsIDkyNzI2LCA0MTU2NiwgNDQ5MiwgNjcyNzEsIDY1MDExLCA0MTA5MCwgMCwgODM0MTcsIDExODgsIDcyNTQsIAotICAgIDExMDAsIDAsIDY3MjcwLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY3MjgyLCA2NzI4MSwgNjcyODAsIDM1NzIsIDEwMDIzLCAKLSAgICA0OTU5LCAxMzA3OSwgMCwgNjcyNzUsIDk3MjksIDEyNTExMCwgMTIxMDQyLCA2NzI3OCwgNDMzNjEsIDEyNzM1NSwgNjcyNzYsIAotICAgIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgMTMzMDQsIDgzMzkyLCA4MzM2OSwgNDE0NTEsIDgzMzcwLCAxMTA5NSwgODI3MywgCi0gICAgNzQzMjIsIDM0NTEsIDcwMjkxLCA5NzIsIDQxNDUzLCA2ODE2NCwgMTE5MzI3LCA3Mzg4MywgNjgwMjIsIDczOTQ1LCAKLSAgICA4MzM2MywgMjI4OCwgMTk5NTUsIDk1MzgsIDgzMzY2LCA2OTgwNywgMCwgMTI5MDk1LCAwLCA4MzM4MSwgMTEzOTYsIAotICAgIDgzMzg1LCAxMTAxOSwgMCwgMTI4NDE2LCAxMjEyMDUsIDY4MDIwLCA0MTA3OCwgNzEzNjUsIDI2MSwgNTkyNywgNzc5MSwgCi0gICAgMTI4NjgxLCA3MzYyLCAwLCAxMDY5NiwgNzAxMjQsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgOTM5OTUsIDI4MiwgCi0gICAgMTE5MTc4LCA2NDM3LCA2ODgzMCwgMTIxNDU5LCA5ODAxLCA2NjM5OSwgNzQxNzcsIDAsIDkxNzk1OSwgMzQ3NCwgNjcyODcsIAotICAgIDAsIDY3Mjg2LCA2MDgxLCA4MzQ2OSwgNzg4NzQsIDY3Mjg5LCA2NzI4MywgODM0NzEsIDcwMDAyLCA0MjkzMCwgMCwgCi0gICAgOTMwMTMsIDg3NTEsIDExNDk5LCA2NzI5NywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA2NzI5OCwgMTIwMjcyLCAKLSAgICA2ODAxNywgOTY0MiwgMTA5MTIsIDk1OCwgNjcyOTMsIDExMzg3LCA2NzI5MSwgNDY2NiwgNzA3OTIsIDQ5MTUsIDY3NzE1LCAKLSAgICA0NjY5LCAwLCA2ODA5OSwgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDc1MDUzLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIAotICAgIDAsIDkxNzg3NSwgODY2NCwgOTY5NywgMzYwNiwgODM0NDYsIDk4Mzk3OCwgOTE3ODc0LCA2NDgxNSwgMTA2MywgMTIwMjUwLCAKLSAgICA2NzMxMiwgOTc3MiwgNzI1NSwgODg4NiwgMTM4OSwgMTI3OTMyLCAxMjAyNTcsIDEyMDI1OCwgMTIwMjU5LCAxMjk0MSwgCi0gICAgNDI2NjEsIDgzNDM4LCAxMjAyNTUsIDEyMDI1NiwgMTIzMDEsIDY3ODM2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIAotICAgIDY2NjAyLCAxMjAyNjQsIDEwMTcsIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDcwMzQwLCA4MzQzNywgODYwOCwgCi0gICAgNDI3ODksIDEyMDYxMywgODM0MzYsIDAsIDcxOTA2LCAxMTMwNywgNjY3MDcsIDY3MzAxLCA2NzMwMCwgMTE3NDUsIDc5MTksIAotICAgIDY3MzA0LCAxNjQxLCAwLCAwLCA4OTY2LCAxMjg5MDAsIDc0OTE5LCA1OTA4LCA3MTg3MCwgNjc4NTMsIDY3NDQsIDY3MzEwLCAKLSAgICAxNjk5LCA2NzMwOCwgNjczMDcsIDY3MzE0LCA2NzMxMywgNjMwNiwgMTAxNjksIDcxMzI0LCAxMTkyNTEsIDEwMDY4LCAKLSAgICAzNzY2LCAyMzg5LCA2NzMwNSwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAxMzE1MywgMCwgNDIzODYsIDk4MzgxNSwgCi0gICAgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgMTA1NDEsIDU2MjIsIAotICAgIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDkxNzgzNywgNDE0MzUsIDQzNTIsIDY3MzI0LCAKLSAgICAyNDM1LCA3MTIxMSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAxMjA0NDcsIAotICAgIDM3NjgsIDQxNzc0LCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCA0NTY0LCAKLSAgICAxMTkwNDksIDc0NjIzLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDEyNzIwMSwgMCwgNjgyOSwgNTIyNSwgNjY5MDEsIDEyNzM4NSwgCi0gICAgMCwgMCwgMTE5NjE1LCA2NzMxOSwgNjczMTgsIDMxNjIsIDQzNTA3LCAxMTc3MSwgNjczMjIsIDY3MzIxLCA2NzMyMCwgCi0gICAgNDI2MTQsIDUzNTMsIDU2MjUsIDc0MTc5LCA2NzMxNSwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIAotICAgIDY5OTQyLCA2OTUyLCA2NzMyOSwgNjczMjgsIDY3MzI3LCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIAotICAgIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIAotICAgIDI0MDAsIDU2MjcsIDEyMDAxNywgNjczMzAsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMTEzNjkzLCAyMDMsIAotICAgIDc0MzY1LCAwLCAwLCA2OTk4NSwgNzgzNTAsIDExMzcwMywgNjQzNzgsIDQyMDU0LCAxMjg1NzUsIDAsIDU1NCwgMTE5NjQ5LCAKLSAgICAxMTM1OCwgNzExNzIsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIDEyNTExNCwgNzM4OTEsIDgzNDIzLCA4MzAxOSwgNTY5NCwgCi0gICAgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDEyMDk2MiwgOTMwMjksIDY5NzY0LCAwLCAwLCAKLSAgICAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgOTE3NTYxLCA2Nzc1MywgNDM2NTEsIDEyOTEyOSwgNjgxMTgsIDY4MDkzLCAKLSAgICAxMTI5LCAxMjY1NzQsIDAsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgNzUwNTgsIDY1MjU1LCA5Mzk5MiwgCi0gICAgMzg0NSwgNDQ5MCwgMTE4OTY5LCA2NjQ5LCA3NDEzNiwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIDAsIDc3NTYsIAotICAgIDEyMzQyLCAxMjA2OTcsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgNzEzMTgsIDQ1NiwgNzAyNiwgODE0NSwgMTE2OCwgCi0gICAgOTI1MSwgOTA4MiwgMTE5OTY0LCA2NDA1NSwgNDI3ODEsIDM4NjYsIDEyMzIzLCA0MTUxMiwgNzM4MDUsIDY4MTIxLCAKLSAgICA5MTc4NTAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgNjcxMTQsIDEwNDA1LCAxMjcxOTUsIDc4ODAzLCAwLCAxMjkxNzYsIAotICAgIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgCi0gICAgNzg4NjcsIDgyMTQsIDgzNDIxLCAxMTM3ODQsIDEyMDAzNywgNDE0NTcsIDk4Mzk3MCwgMTE5NTg5LCAxOTY5LCAyMzg0LCAKLSAgICA4MDk3LCAxMjgwMTksIDc0MTMsIDY4MDEyLCA3ODAyOSwgODc2NiwgNDM4NjQsIDc4MDc5LCA1ODU0LCAxMjUwMDAsIAotICAgIDEwNTgzLCAwLCAxMTk5ODksIDEyNzU1NiwgMTA0MTYsIDY4MDcwLCAzODcyLCA4MzQyNCwgOTgzODM5LCA4NDI5LCAKLSAgICAxMjEyMzAsIDExODgwNiwgMjgzOCwgNjQyOSwgMCwgODM0MjYsIDAsIDEyODQ3OCwgMCwgMTk0NjIwLCA5NDAwNSwgMTEwOTYsIAotICAgIDgzNDIyLCAxMDU1MywgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDY3ODE5LCA3Mzc0MiwgNjYsIAotICAgIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIDgyLCA4MSwgODQsIAotICAgIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCA4NTU2LCAKLSAgICA5MTc5NzUsIDk2NTksIDAsIDAsIDAsIDk1NTYsIDAsIDQ1MDMsIDExMzUzLCA5NjQ3LCAxMjUwMTUsIDc4MTg1LCAxMjg5NTksIAotICAgIDAsIDcxNDM3LCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCA2NDM4LCA4MzM2NCwgOTEwOSwgNzg4ODIsIDEyODksIAotICAgIDY0NTk5LCAxMTg5MTUsIDY4MDA5LCAxMjgzMDIsIDY1NTA3LCAyNDQ3LCAxMTk5MTEsIDEyODY5NCwgMTI4MDQyLCAKLSAgICAxMjY1NDUsIDY2NTg5LCAwLCA2MzM0LCAxMjgzNjksIDAsIDE5OTM3LCA5MTc3OTMsIDEzMjIsIDkyMzU5LCA1Njc1LCAyNTQsIAotICAgIDAsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIDQyMzEyLCAwLCAxOTQ2OTIsIDY5NzIsIDQyODI2LCAKLSAgICA3NDQwOSwgNDI0NjQsIDEyMDU2NywgNjY4OTksIDY3MTU1LCA3NDc5NiwgNjQ0MDAsIDY0NjkzLCAxMjg4MDUsIDY3Njg3LCAKLSAgICA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgNDM4NjcsIDQxOTc4LCAxNDEyLCAKLSAgICA0NTk0LCAxMzkxLCAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCA3MTQyOCwgMTIwNzQ4LCAzMTQwLCAKLSAgICAxMjcyNzYsIDc5NjAsIDQzMjcxLCAxMjEwOTksIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgNjcyNTQsIAotICAgIDY3MjUzLCA3Njk5LCAxMjM5MywgNjcyNTcsIDAsIDY3MjU2LCA2NzI1NSwgODIyMywgMCwgNDI2MSwgMTIxNDYwLCAKLSAgICAxMjA5MTAsIDc0MzA4LCA5ODM4MjcsIDExMzcxMiwgNjcxNTMsIDk4MzU3MSwgMTI4MDQ2LCA0MzQxOSwgOTgzNDcxLCAKLSAgICA2NDU1NCwgMTA1NzQsIDM4NzgsIDY3NjkxLCA0MjM1MiwgMTc1MiwgNzM3ODUsIDEyODE3MSwgNDI1MDYsIDEyODU0MSwgCi0gICAgMTAxOTksIDkxNzg2NSwgMTI1MTQyLCA2ODAyMSwgNjU5MTksIDAsIDY2OTUsIDcyMCwgMzI0LCAwLCAxMjkwMzUsIDQzNDA2LCAKLSAgICA5ODM3MzYsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgNjgwODIsIDY0NDg4LCAxMjg5NzcsIDEyMDk1MSwgCi0gICAgNjQwNDEsIDc0Nzg3LCAwLCA3ODg2NSwgOTIyNTgsIDY1NTk3LCAxMjE0MTYsIDc4ODYzLCAwLCAxMzAyLCA2NjI4OCwgCi0gICAgNzg4NjEsIDExOTEzNCwgMCwgNjcxNTIsIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDEyMDkyMywgMzk5NSwgNjgzNjAsIAotICAgIDY1NjA4LCAzNzE0LCA5MjE5MCwgMTIwMDI2LCA2NzI2MiwgMTA5OTksIDExNzUwLCA2NzI1OSwgNDMyNTEsIDY3MjY0LCAKLSAgICA0MzMwMSwgMCwgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgMTE5NjQsIDEyMTI2OCwgMTI4MDE0LCA5MjE3MywgMCwgCi0gICAgNjg0NTUsIDQyODYzLCA3MzgzOSwgMTI3NTI5LCAwLCA2NzcwMCwgOTE3ODEyLCAxMTM3MDEsIDQzNjQ1LCA0NjgsIDYxMiwgCi0gICAgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgMTI4NjI1LCAxMjI4MCwgNzAzNjcsIDU0MCwgCi0gICAgNzQ1NjQsIDExOTAxNywgNjY0MjIsIDg0MzIsIDc4ODczLCAxMTA3MywgMCwgNjQzMTYsIDAsIDEyMTA3MCwgODIwLCAKKyAgICAxMjExODAsIDEyODg2NiwgNDM0MzEsIDEyNzA5NywgOTI0MTMsIDg3MTUsIDk4MzM5OCwgNDExNzksIDk4MzM1OCwgNDMzMTMsIAorICAgIDEyMDIzMCwgNDExNzYsIDEwMTAwNywgOTk0LCAxMDA0NDgsIDg0NTIsIDc3OTczLCA3Mzk2NiwgNjY4OTAsIDcwODEyLCAKKyAgICA1OTIxLCAxMDA4MDQsIDI1OTcsIDY2Nzc2LCA1OTIyLCAxMTg5MDMsIDY2ODczLCA0MTg2LCA5MjUzMSwgNzM3NDEsIAorICAgIDEyNzEwNSwgNjcxOCwgMTI3MDI5LCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTIxMDQwLCA0NDEzLCA5MjE5NiwgCisgICAgNDIyNjgsIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgCisgICAgNDMxNjksIDEwMTc2LCA5ODM2NDAsIDc0MiwgNzQ4ODEsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgCisgICAgMTE2ODIsIDY3NTYsIDEyNTEwNCwgMTIxMTI2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMDA1MTcsIAorICAgIDExNDEsIDQyNDA3LCA3NDE3LCA3MTgsIDc1NzIsIDk3MywgMTAwNTAwLCAxMjA3MTgsIDMyMzUsIDI0MTUsIDQzMTY0LCAKKyAgICAxMjUwOTksIDgwMTgsIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAKKyAgICAxMDA4NjgsIDEyMDIsIDEwMDU1NywgMTI4MzY0LCA2NTg2MywgMTE5MjUwLCA2ODQ4NCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgCisgICAgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgNjczOCwgMTIyODgyLCA0MzY4MSwgNjk3MjgsIDIwNTksIAorICAgIDkyNDIyLCAxMDA1MDIsIDU1MjM3LCAxNDMxLCAxMDA1MDMsIDY2NTY1LCAxMDgyMSwgMTAwNTA4LCAxMjgwNCwgMTAwNTEwLCAKKyAgICA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCA3MTIyOCwgMTk0NjI2LCAxMjkxODgsIDE3NDAsIAorICAgIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgNzEyMjYsIDEwMTQxLCA3NDkyMiwgCisgICAgNjM3NjEsIDg3ODUsIDQ0NzYsIDY1MDcxLCA2Mzc2MywgMTI2NTUsIDg5MDcsIDkxNDcsIDc4MTA2LCA3ODEwMywgNzgxMDQsIAorICAgIDEyMDg5OCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAxMjc5NzksIDEyNzE2MCwgOTgzMTI3LCA0MTU3MywgCisgICAgODMxNjAsIDM5MzEsIDEyMDI5NSwgNzQxNDMsIDgzMTU2LCA4MzE1NywgODMxNTgsIDc4NDYwLCAxMTk4MiwgOTgzNDgzLCAKKyAgICA4MzA2NywgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDExOTI2NiwgNDExNjcsIDk4MzM2NiwgNDE3MzUsIDk0MDE5LCA3MTcsIAorICAgIDEwNzU0LCA3Mjc0MCwgODMxNjksIDcyNDEzLCA4MzE2MywgNjM3NjcsIDgzMTY1LCAxNzgwLCA2OTM2LCAwLCA4MzE2MSwgCisgICAgODE5LCAxMDYxMSwgOTY5NCwgMTI1MjI4LCA3MTQ3NCwgMCwgMTI3ODcxLCAxMjkwNjksIDgzNDMsIDgzNDIsIDgzNDUsIAorICAgIDgzNDQsIDY1NzgsIDcwMDksIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIDMzNDYsIDgzMzksIDEyODE2NSwgCisgICAgNzI3MDUsIDU3NSwgMjY4LCA3ODExMSwgODU2MywgNTc1NCwgMTIwMzQzLCA0MTU0MSwgNjU1NjUsIDgzMzYsIDU5MzYsIAorICAgIDcyOTAsIDc4MTE3LCA4MzM3LCA4MzQxLCAzMDgsIDExMzg4LCA3NTIyLCA4MzE1MSwgNzgxMjMsIDY1NDY2LCAxMTA5MCwgCisgICAgNjk1MywgMTI1MjQwLCA4MzM3NSwgNzQ5NzMsIDc4MTMyLCA1OTI2LCA2ODI1MCwgNzgxMzAsIDc4MTI2LCA3ODEyNywgCisgICAgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgOTgzNTU5LCAKKyAgICA2NTc0MiwgMTI4NzQsIDEwMDQ3MywgMTE1OTAsIDEwMDQ3NSwgNzQwNDgsIDY3Mzc5LCA4NTk1LCA5ODM1LCAxMDA0NTYsIAorICAgIDQzNzAzLCAxMzA5NywgMTI3MTk3LCA2NDY0MywgMTMyODMsIDEyNjk3LCA3NDk3NSwgMTIzODEsIDM0ODgsIDU5MzMsIAorICAgIDEwMDMzLCA3MTEwMSwgNjYyNDEsIDY1NTcwLCA3ODMzNiwgMTIyOTcsIDcxMjEyLCAxOTU1LCAxMjc5NzAsIDUzNDksIAorICAgIDQyNTM4LCAwLCAxMjQ5MzIsIDc0MTEsIDk0NjIsIDEyODE1MCwgMTAwNDUzLCAxMDA0NTIsIDQzOTIwLCA0MjczNiwgCisgICAgNzA3NDcsIDU3NTYsIDEyODMyNCwgNzYzOCwgNDE2NDIsIDQyNzY0LCAxMjA0NDQsIDQzMTA5LCA3NjM3LCA1NzUyLCAKKyAgICAxMTIxMywgODM0ODEsIDczODMyLCAxMDA0NjMsIDgzNDg2LCAxMDA0NjUsIDc4MzM0LCAxMjEwMzQsIDc2MzYsIDY1MTcxLCAKKyAgICA5MTI0LCA5MTc5NTcsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgODM0ODgsIDIwMjcsIDY2MjMwLCAxMDA4MCwgNzgxMzYsIAorICAgIDEwNDAzLCA3MDg2OSwgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDExMTgzLCAxMjA0MzEsIDEyMDQzMCwgOTgzMjIzLCAKKyAgICAxMjgzNTEsIDcyODQ1LCAxMjcxMzgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAxOTQ2NDgsIAorICAgIDQxMjc0LCA1Nzc4LCA2MzAyLCAxMDAzNjcsIDAsIDEyNjgwLCAxMTkxMzAsIDE0MTcsIDY3MjQyLCA5MzA0MSwgOTQ1MiwgCisgICAgMTI4MTUzLCA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMTIxMzgwLCA2NTM5MSwgMTI4NjE0LCAxMDE3MiwgNjU0NTMsIAorICAgIDYzNzg5LCA0MTI2NCwgNzg2NTgsIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgCisgICAgNDEyNjksIDEyMDQxMiwgNDEyNjcsIDQ2NDYsIDY3NzU5LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCAKKyAgICA3ODI3MCwgMTI3OTgyLCA5ODMxNzIsIDQzOTQ4LCAxOTUxMDAsIDY4ODQwLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgCisgICAgMTY3MSwgMTI3ODkyLCA2MDY5LCA5MjE5LCAxMDA0NjEsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAKKyAgICAxMTkxNDMsIDk4MzM1OSwgNzE0NjIsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAKKyAgICAxMTk1NjcsIDY3NzA1LCA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgCisgICAgMTI3NzcwLCA4MzQ3NCwgMTAyMjksIDEwNjM1LCA4MjYsIDgzNDc1LCAxOTUwODIsIDkyNjAzLCAxMjExNDksIDcxNDU1LCAKKyAgICA2NDgzLCA5MjIxMSwgMTgwOCwgNzg0OCwgMTEzNzg4LCA4MTAwLCA3ODIyNywgNzExOTgsIDc4NjcwLCAxMzMwMSwgNzg2NjcsIAorICAgIDk2NjcsIDc4NjY1LCA2NzcwNCwgOTgzOTIxLCAxMTAwMywgOTkwNCwgODM0MTAsIDk4MzkxOSwgMTIwNjkwLCA5MTQ0LCAKKyAgICAxMDkyMSwgOTI5OTIsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIDcxMDkyLCAxMDMxMywgODM0MDgsIDgzNTAwLCAKKyAgICA2NDMyMCwgMTAyNjUsIDY3MjUyLCAxMDk2MiwgNjY5MDQsIDQzMDA4LCA4OTQ1LCA3ODY4MywgMTIwOTk1LCA0MSwgCisgICAgMTk0ODY2LCAxNzkyLCAxMjA1MTUsIDE5NTA3MywgODY1NSwgNjgyNTQsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDY3MjU4LCAKKyAgICAzODUsIDQxNTIsIDI1ODUsIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCA5MTc4NTIsIDczOTgzLCAxMDk1NywgMTI3MDM3LCAKKyAgICAxMTE2MCwgMTE5MTE2LCAxMjc4NzMsIDEzMTU3LCA5ODM2NDUsIDEyODAyNCwgMzU3MCwgMTI5MTg3LCA3NDQzLCAxMTg4MDQsIAorICAgIDQ0MDA2LCA2OTk3LCA2ODAwNCwgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgMTk1MDQ2LCA2NTIxNiwgNzAxOTYsIAorICAgIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAxMjg1NDMsIDc4MzksIDkyNjEyLCA3ODgwNiwgNzUwNjQsIDk2OTEsIDQ0MTEsIAorICAgIDcxMjc2LCA3MjgzNywgMTIwODU0LCA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAxMDA2NiwgMTIyODk3LCA3MjQxOSwgMTIxNDExLCAKKyAgICAxMjA4ODYsIDEzMDYxLCA4MDE2LCA3ODY4NywgMTk5MzIsIDY0ODMxLCAxOTQ5NzUsIDExMzY4NCwgMTIzOTAsIDExOTE3MSwgCisgICAgMTYzNCwgNjgxMTUsIDY1MDcwLCAxMTA1NiwgOTgzNTc0LCAxMTk5MjUsIDk4MzA5OSwgNDExNjUsIDExMzI4LCAxMjQ1MCwgCisgICAgOTgzODExLCA0MTE2NiwgOTM5NzEsIDEyNDU2LCAxMTkxOTQsIDE3MSwgNTk0MSwgMTI0NTIsIDE5NDcwOSwgMTI0NTgsIAorICAgIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTE5MzIwLCAxMjA0ODMsIDk5NjksIDEyMDc2NywgMTI0NTQsIAorICAgIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCA3ODQyNCwgMzIzMCwgNjg3NzMsIDEyODU5NSwgNzUwMjUsIDUyMDksIDI5NywgCisgICAgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCA3NDE1NiwgCisgICAgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCA3ODg5MywgNzQ4MTUsIDEwNTEyLCAwLCA3Mjg2NiwgNzg4NzUsIDc4MDQ5LCAKKyAgICA3Mjg0MSwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3NDkxMSwgNTg0NCwgNjgwMzEsIDExODgzOCwgCisgICAgMTI3OTQ3LCAxMjY1NCwgNDY2MywgMTg5OSwgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgOTI5NzIsIAorICAgIDEyMDQyNCwgNzEyNzIsIDg4OTIsIDc4ODcyLCA5MjMzOSwgNzEyMzIsIDk4MzA3MywgNTc4MiwgNDIwLCAxMjczNDgsIAorICAgIDkxNzg3MSwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMTk0OTY3LCAxMjUyMjMsIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIAorICAgIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIDEyMTE0NCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgNzc5NzEsIDQzNjc2LCAKKyAgICA3NDk0NCwgNjk2NzMsIDEyMTAyOSwgMTExMjksIDkyOTI5LCAzMjksIDc3OTY4LCA5MjcwNywgODM0OTYsIDczOTksIDAsIAorICAgIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgCisgICAgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMTIwODYyLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgCisgICAgNzk4NywgNjk2NzYsIDExNzIsIDY5Nzk5LCA2Nzg2LCA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgNTYwMywgMCwgNDQ3MywgCisgICAgMTIxMDg1LCA3MjQyNiwgMTI0OTQ3LCA2NTM0NywgNjUzNDYsIDY1MzQ1LCAxMjg1NDgsIDY2NzQxLCA1MzQ3LCA2OTgwMiwgCisgICAgOTE3OTczLCA3Mzg2OCwgNzA4NTIsIDEwNTg4LCAwLCAxMjg0MjAsIDYzNzU1LCAxMjY2NDMsIDUzNDMsIDc4NDIyLCAKKyAgICAxMjA2NjEsIDQ1NTUsIDUzNDEsIDgzNDU5LCA3MDA3MSwgNzQ5MTYsIDUzNTEsIDc4Njc1LCA0MzEwNCwgNjUyNDQsIAorICAgIDEyMTM2NSwgNjQ1NDEsIDQyNTE5LCA2ODEzNCwgMTI4OTE2LCAxMjY5ODYsIDc0NzY1LCA2Njc4NSwgMTI3NTEwLCA2NjM4LCAKKyAgICAxMjkzNjMsIDY1MTEzLCAyNzEsIDc0MTgwLCA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCA2NTM2NiwgNDIxNzIsIAorICAgIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgMTE4MDAsIDY1MzU1LCAKKyAgICA1MzQ1LCAxMTEwMywgNjUzNTIsIDY1MzUxLCA3NjEsIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAxMjY2MzUsIDI0MjMsIAorICAgIDc0NTE4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAxMjY1NzMsIDEyODY3MCwgOTgzNzg3LCAwLCA2NDYwNSwgMCwgCisgICAgNjgwNzQsIDEyNzMwNywgNDkxNiwgMTI4NTY4LCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAKKyAgICAxMzE2NywgMTI5MTgsIDQxMDk2LCA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA2NjczNywgMTA2ODQsIDEyMjkxMywgMTI1MDYzLCAKKyAgICA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMTI5NDIyLCAxMjgyMDcsIDk4MzY0NCwgMTI4NjEzLCAKKyAgICA5MDA1LCAxMjI1LCA2NjMwLCAwLCA5ODM0OTEsIDExODg1NCwgNjgwMTEsIDg4NDcsIDkyMzcxLCA2NTg3NiwgNTUzNSwgCisgICAgODMyOSwgNzQ1OTAsIDEyNTAzNiwgOTI2MDksIDAsIDY2ODc0LCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIDEyMTIxMSwgCisgICAgNTYwNywgNDEwODksIDEyODYyNiwgOTgzMzk2LCA3MDI5MiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgCisgICAgODc2NCwgMTIwNDU5LCA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDY3MjcxLCA2NTAxMSwgNDEwOTAsIDAsIDgzNDE3LCAKKyAgICAxMTg4LCA3MjU0LCAxMTAwLCAxMjkxODAsIDY3MjcwLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY3MjgyLCA2NzI4MSwgNjcyODAsIAorICAgIDM1NzIsIDEwMDIzLCA0OTU5LCAxMzA3OSwgMTI0OTc4LCA2NzI3NSwgOTcyOSwgMTI1MTEwLCAxMjEwNDIsIDY3Mjc4LCAKKyAgICA0MzM2MSwgMTI3MzU1LCA2NzI3NiwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgODMzOTIsIDgzMzY5LCAKKyAgICA0MTQ1MSwgODMzNzAsIDExMDk1LCA4MjczLCA3NDMyMiwgMzQ1MSwgNzAyOTEsIDk3MiwgNDE0NTMsIDY4MTY0LCAxMTkzMjcsIAorICAgIDczODgzLCA2ODAyMiwgNzM5NDUsIDgzMzYzLCAyMjg4LCAxOTk1NSwgOTUzOCwgODMzNjYsIDY5ODA3LCAxMjUyNDYsIAorICAgIDEyOTA5NSwgMCwgODMzODEsIDExMzk2LCA4MzM4NSwgMTEwMTksIDEyMTIxOCwgMTI4NDE2LCAxMjEyMDUsIDY4MDIwLCAKKyAgICA0MTA3OCwgNjY3NTgsIDI2MSwgNTkyNywgNzc5MSwgMTI4NjgxLCA3MzYyLCAxMjUyNTYsIDEwNjk2LCA3MDEyNCwgNjA3MywgCisgICAgOTgzOCwgMTE4OTIwLCA5MTc4NzgsIDYwNzUsIDkzOTk1LCAyODIsIDExOTE3OCwgNjQzNywgNjg4MzAsIDEyMTQ1OSwgCisgICAgOTgwMSwgNjYzOTksIDc0MTc3LCA2Njc5MSwgOTE3OTU5LCAzNDc0LCA2NzI4NywgMCwgNjcyODYsIDYwODEsIDgzNDY5LCAKKyAgICA3ODg3NCwgNjcyODksIDY3MjgzLCA4MzQ3MSwgNzAwMDIsIDQyOTMwLCAxMjk0MTMsIDkzMDEzLCA4NzUxLCAxMTQ5OSwgCisgICAgNjcyOTcsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgNjcyOTgsIDEyMDI3MiwgNjgwMTcsIDk2NDIsIDEwOTEyLCAKKyAgICA5NTgsIDY3MjkzLCAxMTM4NywgNjcyOTEsIDQ2NjYsIDcwNzkyLCA0OTE1LCA2NzcxNSwgNDY2OSwgMCwgNjgwOTksIAorICAgIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCA3NTA1MywgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCA3NDE3MywgOTE3ODc1LCAKKyAgICA4NjY0LCA5Njk3LCAzNjA2LCA4MzQ0NiwgOTgzOTc4LCA5MTc4NzQsIDY0ODE1LCAxMDYzLCAxMTkwODgsIDY3MzEyLCAKKyAgICA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMDA4MzMsIDEyMDI1NywgMTE5MjAyLCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgCisgICAgODM0MzgsIDEyMDI1NSwgMTAxMTAxLCAxMjMwMSwgNjc4MzYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgNjY2MDIsIAorICAgIDY2Nzg4LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCA3MDM0MCwgNjY3OTMsIDg2MDgsIDQyNzg5LCAKKyAgICA3MDg2OCwgODM0MzYsIDk4MzQ4MCwgNzE5MDYsIDExMzA3LCA2NjcwNywgNjczMDEsIDY3MzAwLCAxMTc0NSwgNzkxOSwgCisgICAgNjczMDQsIDE2NDEsIDEyNjUyMywgMCwgODk2NiwgMTI4OTAwLCA3NDkxOSwgNTkwOCwgNzE4NzAsIDY3ODUzLCA2NzQ0LCAKKyAgICA2NzMxMCwgMTY5OSwgNjczMDgsIDY3MzA3LCA2NzMxNCwgNjczMTMsIDYzMDYsIDEwMTY5LCA3MTMyNCwgMTE5MjUxLCAKKyAgICAxMDA2OCwgMzc2NiwgMjM4OSwgNjczMDUsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgMTMxNTMsIDAsIDQyMzg2LCAKKyAgICA5MTc5NzQsIDk0MzYsIDI1OTksIDk4Mzc0NywgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgMTA1NDEsIAorICAgIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDkxNzgzNywgNDE0MzUsIDQzNTIsIAorICAgIDY3MzI0LCAyNDM1LCA3MTIxMSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAKKyAgICAxMjA0NDcsIDM3NjgsIDQxNzc0LCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCAKKyAgICA0NTY0LCAxMDA0NzAsIDc0NjIzLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDEyNzIwMSwgMCwgNjgyOSwgNTIyNSwgNjY5MDEsIAorICAgIDEyNzM4NSwgMCwgMCwgMTE5NjE1LCA2NzMxOSwgNjczMTgsIDMxNjIsIDQzNTA3LCAxMTc3MSwgNjczMjIsIDY3MzIxLCAKKyAgICA2NzMyMCwgNDI2MTQsIDUzNTMsIDU2MjUsIDc0MTc5LCA2NzMxNSwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgCisgICAgNjQyNzcsIDY5OTQyLCA2OTUyLCA2NzMyOSwgNjczMjgsIDY3MzI3LCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIAorICAgIDU2MzIsIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIAorICAgIDQ3NzIsIDI0MDAsIDU2MjcsIDc0MzY0LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgCisgICAgNzQzNjUsIDAsIDAsIDY5OTg1LCA3ODM1MCwgMTAxMDY1LCA2NDM3OCwgNDIwNTQsIDEyODU3NSwgMTk0OTkzLCA1NTQsIAorICAgIDgzNDIyLCAxMTM1OCwgNzExNzIsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIDEyNTExNCwgNzM4OTEsIDgzNDIzLCA4MzAxOSwgCisgICAgNTY5NCwgNzY4OSwgNjY3ODQsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDEyMDk2MiwgOTMwMjksIDY5NzY0LCAwLCAKKyAgICAxMjA2MjUsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCA5MTc1NjEsIDY3NzUzLCA0MzY1MSwgMTI3ODAxLCA2ODExOCwgCisgICAgNjgwOTMsIDExMjksIDcyODQ2LCAxMDA3MDcsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgNzUwNTgsIDY1MjU1LCAKKyAgICA5Mzk5MiwgMzg0NSwgNDQ5MCwgMTE4OTY5LCA2NjQ5LCA3NDEzNiwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIAorICAgIDk4MzYxMiwgNzc1NiwgMTIzNDIsIDEyMDY5NywgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCAKKyAgICA4MTQ1LCAxMTY4LCA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgCisgICAgNjgxMjEsIDkxNzg1MCwgNDE0OTQsIDkyMzE2LCA0NjYwLCA2NzExNCwgMTA0MDUsIDEyNzE5NSwgNzg4MDMsIDEwMDQzOSwgCisgICAgMTI5MTc2LCA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgCisgICAgNjQwNTEsIDc4ODY3LCA4MjE0LCA4MzQyMSwgMTEzNzg0LCAxMjAwMzcsIDQxNDU3LCA5ODM0ODEsIDExOTU4OSwgMTk2OSwgCisgICAgMjM4NCwgODA5NywgMTI4MDE5LCA3NDEzLCA2ODAxMiwgNzI4MjAsIDg3NjYsIDQzODY0LCA3MjgyNCwgNTg1NCwgMTI1MDAwLCAKKyAgICAxMDU4MywgMCwgMTE5OTg5LCA3MjgxOSwgMTA0MTYsIDY4MDcwLCAzODcyLCA4MzQyNCwgMTI3Mzk5LCA4NDI5LCAxMjEyMzAsIAorICAgIDExODgwNiwgMjgzOCwgNjQyOSwgMTIxMDc3LCA4MzQyNiwgNzI4MzUsIDEwMDQyMCwgMCwgMTk0NjIwLCA5NDAwNSwgCisgICAgMTEwOTYsIDgzNDIwLCAxMDU1MywgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDY3ODE5LCAKKyAgICA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIAorICAgIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCAKKyAgICA4NTU2LCA5MTc5NzUsIDk2NTksIDAsIDEwMDczNiwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDEyNTAxNSwgCisgICAgNjgyODgsIDEyODk1OSwgOTE3OTc2LCA3MTQzNywgNzg4ODYsIDk4MzI4OCwgOTgzNDk2LCA3NDIyOSwgNjY1OTMsIDY0MzgsIAorICAgIDgzMzY0LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIDExODkxNSwgNjgwMDksIDEyODMwMiwgNjU1MDcsIDI0NDcsIAorICAgIDExOTkxMSwgMTI4Njk0LCAxMjgwNDIsIDEyNjU0NSwgNjY1ODksIDk4Mzg3NSwgNjMzNCwgMTI4MzY5LCA5MTc5MTksIAorICAgIDE5OTM3LCA5MTc3OTMsIDEzMjIsIDkyMzU5LCA1Njc1LCAyNTQsIDEyNDk2NCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCAKKyAgICA2NDAwMywgNTcxNiwgNDIzMTIsIDEyMDA5MCwgMTAwNTUyLCA2OTcyLCA0MjgyNiwgNzQ0MDksIDQyNDY0LCAxMjA1NjcsIAorICAgIDY2ODk5LCA2NzE1NSwgNzQ3OTYsIDY0NDAwLCA2NDY5MywgMTI4NDM3LCA2NzY4NywgNjU0MjksIDk1MTUsIDQ0MzUsIAorICAgIDk4MzM2NywgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgNDM4NjcsIDQxOTc4LCAxNDEyLCA0NTk0LCAxMzkxLCAKKyAgICAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCA3MTQyOCwgMTIwNzQ4LCAzMTQwLCAxMjcyNzYsIDc5NjAsIAorICAgIDQzMjcxLCAxMjEwOTksIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgNjcyNTQsIDY3MjUzLCA3Njk5LCAKKyAgICAxMjM5MywgNjcyNTcsIDAsIDY3MjU2LCA2NzI1NSwgODIyMywgMCwgNDI2MSwgNzg3ODQsIDEyMDkxMCwgNzQzMDgsIAorICAgIDk4MzgyNywgMTEzNzEyLCA2NzE1MywgMTI1MjUyLCA3Mjc0NCwgNDM0MTksIDcyNzQ4LCA2NDU1NCwgMTA1NzQsIDM4NzgsIAorICAgIDY3NjkxLCA0MjM1MiwgMTc1MiwgNzM3ODUsIDEyODE3MSwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDkxNzg2NSwgMTI1MTQyLCAKKyAgICA2ODAyMSwgNjU5MTksIDEyNzEwMiwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIDEyNTI2OSwgMTQ2NCwgCisgICAgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCA2ODA4MiwgNjQ0ODgsIDEyODk3NywgMTIwOTUxLCAzNDIwLCA3NDc4NywgMCwgCisgICAgNzg4NjUsIDkyMjU4LCA2NTU5NywgMTIxNDE2LCA3ODg2MywgMCwgMTMwMiwgNjYyODgsIDc4ODYxLCAxMTkxMzQsIAorICAgIDEyMDI3NCwgNjcxNTIsIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDEyMDkyMywgMzk5NSwgNjgzNjAsIDY1NjA4LCAKKyAgICAzNzE0LCA5MjE5MCwgMTIwMDI2LCA2NzI2MiwgMTA5OTksIDExNzUwLCA2NzI1OSwgNDMyNTEsIDY3MjY0LCA0MzMwMSwgMCwgCisgICAgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgMTE5NjQsIDEyMTI2OCwgMTI4MDE0LCA5MjE3MywgMTIwNzEwLCA2ODQ1NSwgCisgICAgNDI4NjMsIDczODM5LCAxMTk5MjksIDAsIDY3NzAwLCA5MTc4MTIsIDExMzcwMSwgNDM2NDUsIDQ2OCwgNjEyLCAwLCAKKyAgICA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAxMjgyMDgsIDE2NzQsIDkxNzU4MSwgNTgyMywgMTI4NjI1LCAxMjI4MCwgNzAzNjcsIAorICAgIDU0MCwgNzQ1NjQsIDExOTAxNywgNjY0MjIsIDg0MzIsIDc4ODczLCAxMTA3MywgMCwgNjQzMTYsIDAsIDEyMTAwMSwgODIwLCAKICAgICA0MTc0MSwgOTgzNDc3LCAxMjA2NjcsIDEyNDk4MSwgNjQ2ODQsIDEyNjk5MiwgMzM1OSwgNzgwMCwgNjk5MzQsIDY1MTc3LCAKICAgICA2MjI2LCAzNTMsIDEyMzk2LCAxMjExNzYsIDExOTYxMiwgNjQ3NDIsIDEyODY4MiwgNzg4NzksIDk4MzQ3OCwgMTI3OTM4LCAKLSAgICAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzAzNTIsIDE4ODQsIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDk4MzE0MiwgCi0gICAgMTE5NSwgNjQ4OTgsIDc5MjQsIDExOTg3MCwgNDExNTEsIDIwMTAsIDcxNDMwLCA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAwLCAKLSAgICA0MzYwLCAxMjEwMjMsIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCA5MTc2MzEsIDQyNTIxLCA4NTM5LCAxMjg2MDYsIDAsIAotICAgIDExODk4NiwgMTI3MTQ4LCA0Nzg4LCAxMjEzNDUsIDY4MDIzLCA2NTczNCwgOTgzNDU3LCA0Mzc5MCwgMTIwMjc0LCAxMzA3NSwgCi0gICAgNzQ0MjksIDk0MDYzLCA2NDU2OSwgNDM1MzIsIDEwODM3LCAyNDkyLCAxMjcxOTcsIDExODkwMSwgNjg2MzcsIDQxMTM2LCAKLSAgICA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAxMTM3MzEsIDUxMjgsIDQwMzgsIDQxMTQzLCA2NTYwNCwgNjQ4NTksIAotICAgIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCA2NzI5NSwgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIDEyNzA5LCA2OTg2LCAKLSAgICA5MjM2NCwgNjgwMTUsIDEyMDUzMywgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIDczODA2LCAxMDI1NCwgCi0gICAgMTEzNjgxLCAxMDI3OCwgMTAyNjIsIDY5ODU4LCA0MTM0NiwgMTIwODcwLCA2MDcsIDAsIDY4MTgyLCAxMjg4NDYsIDEyOTIzLCAKLSAgICAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgMTI5MTQ5LCA3ODYzOSwgNDA5NzUsIAotICAgIDU4NDAsIDQyODM4LCA3NDk4NywgNDA5NzgsIDEyMTM4NiwgOTI5NDUsIDEyODAyMCwgMTE5ODA5LCAwLCA2NjQ0NCwgCi0gICAgMTA1MzgsIDEyMDgxMCwgMjU1MCwgMTE5ODM2LCA2Nzc5LCAxMjkxMzAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgOTgzNTgyLCAKLSAgICAwLCA1NjE5LCA2NTgyMiwgMTEzNzUxLCAxMTM3MzgsIDc0NTUsIDcxNDI0LCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgCi0gICAgMTA3MjcsIDU2MTUsIDEyMDg3MywgMTIwNTUxLCA0MjM4MCwgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAKLSAgICAxMTM0NywgMCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAxMTM1MCwgNTYxNywgMCwgOTIyNSwgNjQ2MzksIDEyNzA3MywgCi0gICAgOTE0NSwgMTI4MDYwLCAxMzM4LCAxMjA1ODEsIDk4MzE1OCwgMTI3MzksIDQ2MDMsIDMwODQsIDcwNDA4LCA5MjQ4NCwgCi0gICAgOTg1OCwgNjAzNywgOTgzNDY1LCAzOTc0LCA3ODIxMywgMTAyOTAsIDk4MzcwNCwgMzA4MywgMTAzMjIsIDEyOTA0OCwgCi0gICAgMTI5MDMwLCA3NTAzOCwgNDEwMzYsIDY2ODk3LCAwLCA0MzMyMSwgNjU2MDYsIDEyNzA3MSwgNDEwMzIsIDQyMzg4LCAwLCAKLSAgICA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAxMTkxMDUsIDAsIDQwOTYwLCAxOTQ5MDcsIDY3NzI3LCAxMjUxMDYsIAotICAgIDIyMjMsIDY0OTUyLCAxMDQwMiwgMTI4MzU4LCAxMjUwNDksIDkyMzA0LCAxMDYwMywgMCwgOTgzNDAzLCA3MTQzOCwgMCwgCi0gICAgNjcxNCwgMTAwODMsIDEyNzA2OSwgMTIxMDE5LCA3ODM2NywgNjk5NzYsIDAsIDQzODcyLCA5MDczLCA0MjU4NSwgNjQzMDIsIAotICAgIDEwNzA0LCA2NTAzMCwgNDc4NywgMTI5MDMxLCA3NDgyOSwgMCwgNjU0MjMsIDEyMTMwNiwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgCi0gICAgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMTk0ODcyLCA5MTc2MjQsIDQzNzQwLCAxMjExNjMsIDQwOTY2LCAxMjAwMDksIAotICAgIDEzMjg2LCAzOTk4LCA0MjU5OCwgNDI1OTYsIDUwMywgNzE0MzMsIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCAKLSAgICA0MTk1NCwgOTE3NjE1LCAxNjUyLCA3NzIsIDY2ODgsIDgzMTAsIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIAotICAgIDQzMzIwLCAxMTkxNTksIDczOTU1LCA5MjMxNSwgNjQ2OCwgNDE5NzYsIDk3MjAsIDc0OTY0LCAxMTE3OSwgNDE5NzAsIAotICAgIDY2MjU1LCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCAKLSAgICA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgCi0gICAgODYxNiwgNDE0NjYsIDQyOTI0LCAyMjI3LCAxMTQ1MCwgOTgzNjkxLCAzNjM4LCAxMjM1NCwgNjcyOTksIDMyMTYsIDgzMDk5LCAKLSAgICAyMzU4LCA4MzA5MiwgODYzMywgNzEyMDEsIDk4Mzc0NSwgMTE5MTgyLCA2OTI0NCwgODMwOTAsIDcwMzc1LCAxMTc1OSwgCi0gICAgMTk0OTAzLCA2MzY4LCA3NDgyMywgNjczMDMsIDQxNDIzLCA4MDc4LCAxMDUwNCwgODMxMDQsIDQxNjk4LCA0MjIzNywgCi0gICAgOTgzNDU0LCA3MDAyLCA4MzEwMSwgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDAsIDcxNDY3LCA0MTA1MCwgNDE0NzMsIAorICAgIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3MDM1MiwgMTg4NCwgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgMTk1MDU4LCAKKyAgICAxMTk1LCA2NDg5OCwgNzkyNCwgMTE5ODcwLCA0MTE1MSwgMjAxMCwgNzE0MzAsIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIAorICAgIDEyMDcxMiwgNDM2MCwgMTIxMDIzLCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgOTE3NjMxLCA0MjUyMSwgODUzOSwgCisgICAgMTI4NjA2LCAwLCAxMTg5ODYsIDEyNzE0OCwgNDc4OCwgMTIxMzQ1LCA2ODAyMywgNjU3MzQsIDk4MzQ1NywgNDM3OTAsIAorICAgIDExOTg2OSwgMTMwNzUsIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgNzI3NjIsIDExODkwMSwgCisgICAgNjg2MzcsIDQxMTM2LCA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAxMTM3MzEsIDUxMjgsIDQwMzgsIDQxMTQzLCAKKyAgICA2NTYwNCwgNjQ4NTksIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCA2NzI5NSwgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIAorICAgIDEyNzA5LCA2OTg2LCA2Njc2MSwgNjgwMTUsIDEyMDUzMywgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIAorICAgIDczODA2LCAxMDI1NCwgMTEzNjgxLCAxMDI3OCwgMTAyNjIsIDY5ODU4LCA0MTM0NiwgMTIwODcwLCA2MDcsIDk4MzYyMSwgCisgICAgNjgxODIsIDEyODg0NiwgMTI5MjMsIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAKKyAgICAxMjkxNDksIDc4NjM5LCA0MDk3NSwgNTg0MCwgNDI4MzgsIDc0OTg3LCA0MDk3OCwgNzgxNzQsIDkyOTQ1LCAxMjgwMjAsIAorICAgIDExOTgwOSwgMTIwODkxLCA2NjQ0NCwgMTA1MzgsIDEyMDgxMCwgMjU1MCwgMTE5ODM2LCA2Nzc5LCAxMjkwOTEsIDkxNzgxNSwgCisgICAgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIDExOTgzOCwgNTYxOSwgNjU4MjIsIDExMzc1MSwgMTEzNzM4LCA3NDU1LCAKKyAgICA3MTQyNCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIDEwNzI3LCA1NjE1LCAxMjA4NzMsIDEyMDU1MSwgNDIzODAsIAorICAgIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDcyNzYwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIAorICAgIDExMzUwLCA1NjE3LCA3Mjk5LCA5MjI1LCA2NDYzOSwgMTI3MDczLCA5MTQ1LCA0MTM0NCwgMTMzOCwgMTIwNTgxLCAKKyAgICA5ODMxNTgsIDEyNzM5LCA0NjAzLCAzMDg0LCA3MDQwOCwgOTI0ODQsIDk4NTgsIDYwMzcsIDEwMDM3NiwgMzk3NCwgNzgyMTMsIAorICAgIDEwMjkwLCA5ODM3MDQsIDMwODMsIDEwMzIyLCAxMjkwNDgsIDEyOTAzMCwgNzUwMzgsIDQxMDM2LCA2Njg5NywgMTAwMzc0LCAKKyAgICA0MzMyMSwgNjU2MDYsIDEyNzA3MSwgNDEwMzIsIDQyMzg4LCAxMDA2MTksIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIAorICAgIDExOTEwNSwgOTE3OTY5LCA0MDk2MCwgMTk0OTA3LCA2NzcyNywgMTI1MTA2LCAyMjIzLCA2NDk1MiwgMTA0MDIsIDExOTIxMywgCisgICAgMTI1MDQ5LCA5MjMwNCwgMTA2MDMsIDAsIDk4MzQwMywgNzE0MzgsIDEyODUwMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCisgICAgMTIxMDE5LCA3ODM2NywgNjk5NzYsIDk4MzY1NSwgNDM4NzIsIDkwNzMsIDQyNTg1LCA2NDMwMiwgMTA3MDQsIDY1MDMwLCAKKyAgICA0Nzg3LCAxMjEyNzksIDc0ODI5LCAwLCA2NTQyMywgNzQ5ODgsIDEyODExOCwgOTU3MCwgNTUyNjAsIDk1MjUsIDI2ODksIAorICAgIDkxNzYyNiwgNjU0MjYsIDE5NDg3MiwgNjY3NDAsIDQzNzQwLCAxMjExNjMsIDQwOTY2LCAxMjAwMDksIDEzMjg2LCAzOTk4LCAKKyAgICA0MjU5OCwgNDI1OTYsIDUwMywgNzE0MzMsIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCA0MTk1NCwgCisgICAgOTE3NjE1LCAxNjUyLCA3NzIsIDY2ODgsIDgzMTAsIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIDQzMzIwLCAKKyAgICA3Mjc1NiwgNjY3NTcsIDkyMzE1LCA2NDY4LCA0MTk3NiwgOTcyMCwgNzQ5NjQsIDExMTc5LCA0MTk3MCwgNjYyNTUsIDU4MzYsIAorICAgIDEyMzU4LCAxMjk0MjEsIDQzNTUsIDkwNDgsIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIAorICAgIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIAorICAgIDQxNDY2LCA0MjkyNCwgMjIyNywgMTE0NTAsIDEyMDczNCwgMzYzOCwgMTIzNTQsIDY3Mjk5LCAzMjE2LCA4MzA5OSwgMjM1OCwgCisgICAgODMwOTIsIDg2MzMsIDcxMjAxLCA5ODM3NDUsIDExOTE4MiwgNjkyNDQsIDgzMDkwLCA3MDM3NSwgMTE3NTksIDE5NDkwMywgCisgICAgNjM2OCwgNzI4MzQsIDY3MzAzLCA0MTQyMywgODA3OCwgMTA1MDQsIDgzMTA0LCA0MTY5OCwgNDIyMzcsIDk4MzQ1NCwgCisgICAgNzAwMiwgODMxMDEsIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAxMjkzNjIsIDcxNDY3LCA0MTA1MCwgODg3MiwgCiAgICAgMTA0NjYsIDEzMDk5LCA3MTQ0NSwgNzAzNzEsIDEyMDg5NywgNjQzNSwgNzQzMzEsIDExMzYyLCAxMjg5NzMsIDgzMDg4LCAKICAgICA2NTM4MiwgOTI3NzAsIDQxNDIwLCA4MzA4MywgMzYyNSwgNzQ5MTUsIDQxNDA5LCA3MTQ0MSwgNjk2MzksIDIwNDEsIDkxNzgsIAotICAgIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDc0OTI0LCAwLCAxMjg1NTcsIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgCi0gICAgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIAotICAgIDEyNDk0MywgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNjg4NTAsIDc0OTAxLCAwLCAxMjc5NTEsIDkyMzg4LCA2OTY0OSwgCi0gICAgMTA5ODksIDc0MjM0LCAxMTM3ODEsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIAotICAgIDY0NTA0LCAxOTkyOCwgMCwgMTI4NDExLCAzOTE3LCA5ODMxMTksIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCA0MTQ2MSwgCi0gICAgMTI4ODIzLCAwLCAxMTM3MjEsIDExMzc1OCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCi0gICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgODMyOTMsIDEyMTAwNywgOTA5NCwgOTgzOTI2LCAxMTc1OCwgNjg0MjUsIDcxODg2LCAKLSAgICAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAxMTM2ODIsIDc4NjIsIDY0NTUxLCAxMzIyNCwgCi0gICAgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDcxNDM0LCAyOTExLCA4MzA3NCwgCi0gICAgNDExNzgsIDU0MjcsIDY0ODIzLCA4MzA2MiwgODMwNjYsIDM3ODcsIDQxMTc0LCA4MzA1NSwgNDE0NTgsIDY3MTQ3LCAKLSAgICA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCA2OTkyMywgNjA3NCwgOTYxOCwgNjgwNTYsIAotICAgIDEyMTQ4MCwgNDM0NDAsIDc0NTM5LCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCA5MTc4MDUsIDEyMDYwMCwgNDE0NTYsIDY3Njk0LCAKLSAgICAxNTk5LCAxMTMzMywgODMxMzksIDY3MDMsIDg1MTMsIDgzMTM0LCAxNjEzLCA4MzEzNiwgNjg0NTYsIDEyNTk4LCA4MzEzMSwgCi0gICAgODMxMzIsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDY3MTQ0LCA5OTA1LCAKLSAgICA4MzE0NSwgNjU3MzAsIDgzMTQ3LCAxMjAzNzQsIDg0MjcsIDgzMTQyLCA1NTI0NiwgMTIwMzc2LCA0Mjg5NSwgMTE0OTcsIAotICAgIDY0Njg3LCA3NDAwOCwgNDI1OTIsIDM4NzEsIDk4MzU4NCwgMTI4MzA1LCA5MTExLCA1NzQxLCA4MzMyNSwgMTIwOTg3LCAKLSAgICAxMjAzNjYsIDExOTExMSwgMTExNTAsIDAsIDEyMDM2OCwgMTI4ODU1LCAxMTY0OCwgODMxMjYsIDgzMTI3LCA4MzEyOCwgCi0gICAgNDE1ODcsIDcwMzkxLCA4MzEyMywgNzExMDgsIDQyMTEzLCA5ODM1ODgsIDEyNzE1NSwgMTIxNzIsIDgzMTIxLCA3MTQ0MywgCi0gICAgNjUyOTgsIDY1NzIzLCA2ODI4OSwgNzM4NzEsIDY1NzI0LCA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCAKLSAgICA2NDY3MSwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIDk4MzExMCwgNzg3NSwgOTgzNjY5LCA0MTU5OCwgMzk5MywgCi0gICAgMTIxMjY5LCAxNTQ1LCA0MDk3MSwgNTM2LCAxMjcwNzUsIDQzMDI5LCAwLCAxMjEwMDAsIDY1MTczLCA2NTI4NiwgMCwgCi0gICAgNzAzMzEsIDE5NTAxMiwgMCwgOTQwNjUsIDAsIDQxMzc1LCA1NDAyLCA4MzAzNSwgMTI4MTkyLCAxNjg3LCAxMjA1MDMsIAotICAgIDkxNzgxNywgMCwgNzgxOTQsIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDczNzQ3LCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIAotICAgIDc4NzU2LCAxMjcxMDgsIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDkxNzg2NywgMCwgODI2NiwgCi0gICAgNDEwMDYsIDY1NzIyLCA4MzA0MSwgMTA3MTAsIDc0MDQ1LCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCA4MzMxMywgCi0gICAgMTI4Nzc4LCA3MTg4OSwgNjc4NTcsIDEyMDY4NywgMCwgOTI5NTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCAKLSAgICA5Mzk3OSwgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgODMxMTksIAotICAgIDgzMTIwLCAxMTQxMywgMTI2NTgzLCA4MzExNSwgNTI4MywgMTU4NiwgNDk3OCwgNjgwNTAsIDE5ODQsIDExODMwLCA0MzgxOSwgCi0gICAgOTIyOTMsIDQwOTg0LCA0MjkwNCwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDE5NDg4OCwgNDE2NjMsIDk4MzA5MywgMCwgCi0gICAgNjgzMTMsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxMjg5NTMsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCi0gICAgNDEyODcsIDkyNjEwLCAwLCA3MTkxNywgNDIyMTksIDY4MDg2LCAxMjAzMjcsIDQxOTg3LCA0MTY3NiwgOTgzMDU5LCAKLSAgICAxMjA4MjMsIDEyNjU1MywgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgCi0gICAgMTE0NTEsIDgyOTk1LCA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAKLSAgICAxMzEzMywgNjQzNjgsIDEyNzI3MCwgMTIwOTI1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIAotICAgIDEyODIzOCwgMTYxNCwgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTIwODcxLCA0MjgsIDk2MjAsIDE0NjYsIAotICAgIDc4MTEyLCAxMDk4MiwgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDEyNzk5MywgMCwgMCwgCi0gICAgNTgwNCwgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCA3MDE2NywgOTA1NywgNDIyOTQsIDQxMjE4LCAxMjUwOTcsIDEyMTI5MCwgCi0gICAgNzgxMzcsIDE4ODMsIDEwOTUyLCA4MDQ4LCA3MDQ0MywgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMTI4NjE2LCAxMjg1MTIsIAotICAgIDEyODYyOSwgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAKLSAgICAxMjY3NSwgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCA2ODA3NywgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgCi0gICAgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEwMjk2LCAxMTkxNTgsIDcxNDAsIDEwOTc3LCAxMjczNzgsIAotICAgIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgCi0gICAgNjQ3OTksIDQyMDQ3LCAwLCAxOTQ4MjAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCA5ODM3NjAsIDc0MzAwLCAwLCAKLSAgICA2ODA4NywgNzQ4NDAsIDEyNjQ3NCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIDk2ODMsIDQzNDg2LCAKLSAgICA3NDM0NCwgMCwgMjUzNiwgOTgzOTQxLCA2NjMzMCwgMTIxMjM4LCAwLCAwLCAwLCAwLCAwLCAxOTQ4MzAsIDY2MzE3LCAKLSAgICA2OTk0NSwgNjYzMTUsIDIxMDYsIDY3ODA5LCAxMTI3MywgMTIwOTg2LCA0MzAwNCwgNzU0MSwgODI5ODgsIDAsIDk2MSwgCi0gICAgNjQzMDcsIDY2MzI0LCA2NDkwNiwgMTI1MDgwLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDk4MzEzMCwgODkxLCAKLSAgICAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAxMjA4NzgsIDAsIDAsIAotICAgIDE5NDgyNiwgOTI2ODgsIDM1NjYsIDIzMjIsIDEyMDM3MSwgNzA4MzEsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgCi0gICAgMzU0NywgMCwgMCwgMTEzNzQ2LCA5ODM0MDAsIDQzMjE2LCA2MDg5LCA3ODY4MiwgNjg0OTAsIDEyMDU3OCwgNDE3MCwgCi0gICAgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIDc0NCwgOTI4ODMsIDExMzczOSwgMCwgNjU4MjMsIAotICAgIDEyNzgyNiwgMTExODIsIDM1NTEsIDkyOTM4LCA5ODM4OTEsIDQ2MjMsIDU1MjY4LCAxMjg3MzgsIDQ1OTgsIDk4MzE2MiwgCi0gICAgNjUxMzYsIDEyNzEzNiwgMCwgMTI4MTY5LCAxMDg1MSwgMTIwODc2LCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIAotICAgIDc0NTc5LCA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAKLSAgICAxMjA1ODAsIDk4MzY5NiwgMTI1MTM1LCA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAKLSAgICAxMjgwMjcsIDY3NjczLCAyMjE0LCA4NzU0LCAxMjcwNTEsIDEyMDIzNywgMjEzNywgNDMwODEsIDE5NDY2MywgMTE5MTE0LCAKLSAgICA5MTM2LCA2Njg4OSwgNDQwMSwgNDEyODAsIDcwODAxLCA4OTc0LCAyMzA4LCAxOTQ3NTAsIDc0MTQ5LCAxMjgzMjcsIDIzMTgsIAotICAgIDk4MzE4MywgNjYzNjEsIDgxOTgsIDY1NjI2LCA2NDM2MCwgMTI2MDEsIDQyNTM2LCA0MzkzMSwgMTIwODI3LCA0MzkzMCwgCi0gICAgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAxMjg0ODIsIAotICAgIDEyODQwMywgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyMDAwMiwgMTI5MTUxLCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCAKLSAgICA0MjA1MiwgMCwgNjcyNjYsIDY3NjUxLCAxMjExMDQsIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCA5MTc2MTcsIDAsIDAsIAotICAgIDcwMDg4LCA3NDE0OCwgMCwgNzA0MTksIDEyMDIyNSwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIAotICAgIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIDc1OTQsIDExMzY4NiwgNzUwMzMsIDExOTA5MCwgMTA4NjksIDQzNDU4LCAKLSAgICA0MTE0NiwgOTI0MDcsIDExNDQxLCAxMjE0NTYsIDM1MTIsIDExOTYzMywgOTI5NjUsIDgxMDMsIDc4MTQwLCAxMjA4NDcsIAotICAgIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDcxMzE0LCAwLCA3ODEwOSwgCi0gICAgMTI5MTc3LCAxOTk0MiwgOTgzMjQ0LCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCAKLSAgICA5NDA2NCwgOTgzMDcxLCAxMjg2NTIsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDAsIDEwOTUsIDAsIDM1OTksIAotICAgIDEyNzc3NCwgMCwgMTI4ODYxLCA4NTE0LCAwLCAwLCAwLCA3NDM0NiwgNjY2OTcsIDAsIDExNjg0LCAwLCA5MjQ4NiwgCi0gICAgOTE3NjAzLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCA3NDkyNywgNDIwNDYsIDc0MTU3LCA0MDM2LCAxMjY0ODEsIDAsIAotICAgIDEyODIxMywgMTk0ODYxLCA4MzM1NSwgMTE5NTQsIDcwMzQ4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAKLSAgICAwLCAwLCAxMjUxMTcsIDAsIDkxNzU0MiwgNzM4MTIsIDgzMDUzLCA2NTM5LCA5Mjk0OCwgMTI2NjA3LCAxMjA3MDIsIAotICAgIDkyMzkwLCAwLCAxMjA0OTIsIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDkxNzk3OSwgCi0gICAgNzg4OTEsIDAsIDE5NDg0OCwgNjU3OTIsIDEyODQwOCwgODMyODIsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDEyODk3MCwgCi0gICAgMCwgMCwgNDkxOSwgMTA1OTAsIDEyODU1NiwgNzc1NSwgMCwgOTI5NDIsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCAKLSAgICA2NTEyNiwgNjgyNTMsIDEyNzAwNCwgOTgzNjE2LCAxMjE4OCwgOTgzNjY4LCAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAKLSAgICAxMTkxNzQsIDQyNTkwLCA3MDM1NCwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCA2MzUyLCA0MTg5MiwgMCwgNzU1NSwgMTMxMDMsIAotICAgIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgMTIxMjA4LCAwLCA2ODIyNCwgMTIwODcyLCA0MTc2NCwgNzk1NywgCi0gICAgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMzU1OSwgOTgzOTE4LCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCAKLSAgICA3MDg1MywgMTE5MDI4LCAwLCAxMjgxMjIsIDEyODQ0MiwgMjM0MSwgODQ1MCwgODQ4NCwgODQ3NCwgMTk0ODg0LCA2ODMyMiwgCi0gICAgNzAwNzksIDg0NjEsIDY3NzIxLCAxMjE1MywgMTI3OTksIDAsIDQzNzA5LCA0MzcwOCwgOTQ1MSwgNzU3MSwgMTMwNzMsIAotICAgIDQzODQ3LCAwLCA2ODEsIDk4MzI1NCwgNzAzLCAxMjc1MTgsIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIAotICAgIDkyMjg4LCA3MDUxNCwgOTgzOTAwLCA4MzE3NSwgNzE0MzYsIDExMzM4LCAxMjA3NjgsIDMyNzYsIDEyODk2OCwgOTE3OTg5LCAKLSAgICA2NTkyOCwgMCwgMTIxMzY3LCA2NTAyMSwgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCAKLSAgICA0MjcxMSwgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCA5ODk1LCAxNjU1LCA3MDEzMSwgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgCi0gICAgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgMTIwNDI2LCA1NjI2LCA1NjIzLCA1NzE3LCA1Nzc2LCA0MzQ4OCwgODM0OTcsIAotICAgIDY2ODg1LCA0MTU5MSwgMTEwMzYsIDY1MjUyLCA5MjM4MiwgMCwgMCwgMTIwMTExLCA2Nzg0OCwgMTI4MTI4LCA5ODM1OTUsIAotICAgIDk4MzQ3MiwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgOTgzMzM2LCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIDEwNDEyLCAKLSAgICA4NzU1LCAxMTkxNTIsIDAsIDU3MTgsIDEzMjIxLCAwLCAwLCA3ODEzNSwgNzA1MTUsIDkxNzYxNiwgODgxMCwgNzQ0OTksIAotICAgIDY4NiwgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKLSAgICA2NTExOCwgNjgwMjksIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAxMjg5MDIsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2NDgsIAotICAgIDY4MDQ0LCA2NTQ1NSwgMCwgNzQzMjgsIDAsIDc0NTYxLCAxMjA3NjMsIDEyODg2LCAxMjA5NTIsIDY2NjI0LCAxMjY1NzgsIAotICAgIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3MTIxMCwgNzg2MDIsIDExODk0NSwgOTk4NCwgNzM4NTEsIDMwMTAsIAotICAgIDY0NDEsIDcwMzQ5LCAxNDU4LCA0MTQ3NSwgNzI0MjksIDkzOTc1LCAxMjc5MTAsIDExNDc5LCAxMjEzNTUsIDEyMDM1NiwgCi0gICAgNjM1MCwgMTI4NjQsIDY5Njc0LCA3MTQ3MywgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgMTI0OTQ2LCA0MDUyLCAKLSAgICAxMTM2NzMsIDc2MjYsIDAsIDEyMDkwNywgMTA0NSwgMCwgNTYzMSwgNDExMTMsIDEyNzU0NCwgMCwgNDM3MDcsIDc0MTI3LCAKLSAgICAwLCA5ODM3MTgsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIAotICAgIDEyNzI3NywgNDI2MjUsIDcwMzI1LCA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMTIxMzMwLCAKLSAgICA2ODA1OSwgNDE0NDUsIDc4MjM2LCAxMTIwNywgODU2NywgNDE0NDIsIDM5ODgsIDc0ODQzLCA3ODIzNywgMTE4OTEwLCAwLCAKLSAgICA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDEyMTI3MiwgMCwgNDM0NDYsIDAsIDY2NTEzLCA2MjU2LCAKLSAgICA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODE5NSwgNjM3NSwgMjY3MywgOTgzODg2LCAxMTgxNCwgMCwgNDQ4OCwgCi0gICAgMTI4NzE2LCAxMjA1NTQsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIAotICAgIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIDc4MjU3LCA3MjAzLCAxMjQ5OTgsIDYxNCwgNzAzNjEsIAotICAgIDEyNzIxNSwgMTIwNjE1LCAxMTk2MjIsIDc4MjYyLCAxMjcyNzEsIDEyNzMyMywgMCwgNDMxMjEsIDEyNzIxMSwgMTI4MzY2LCAKLSAgICA5MjUxMywgMTA1MCwgNzU0OSwgMTIxMjYwLCA4Mjk5NCwgOTMxNCwgNzAzNjUsIDkyODk4LCA2ODAzOSwgMTI3MDYxLCAKLSAgICAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgMTIwOTYzLCA4Mjk5MiwgMjMwNywgMTI4NDU2LCA2NDMzMywgCi0gICAgMTI3MzEyLCAxMjgyMzAsIDczODczLCA5ODM3MTAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCAKLSAgICA2NzQ2LCAxMjA0NzMsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMTI3Nzg1LCA5OTU3LCAxMjgyODUsIAotICAgIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAxMjA0MjQsIDE1MjEsIAotICAgIDk4OTYsIDkzOTY1LCAxMDQ4NywgNjk4NzgsIDEyNTI3LCA2ODczNywgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDAsIDY1NzY5LCAKLSAgICA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgMTIxNDI5LCAwLCA1MjM3LCA2OTcxNCwgNjg3NTYsIDEwMTAzLCA1MjQ3LCAKLSAgICA0NzY5LCAxMjkzMDIsIDExODk3NywgMTI4NzMsIDIyODMsIDkyOTMxLCAwLCAzMDA4LCA0ODk2LCAxMjgxMDIsIDEyMDg3LCAKLSAgICAwLCA1NTIzMSwgNDExMDMsIDkyMjU2LCA2NDU2NSwgNDc3MywgMTIwODQ2LCA3ODU0OSwgNzAwNzQsIDQ3NzAsIDY2ODkxLCAKLSAgICA5MTc1NjcsIDg3MzEsIDY1Mzc4LCA2NjkxMSwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDEyNjYwMCwgNDc3NCwgMzAxOSwgCi0gICAgOTk5NywgMTI4MzQsIDAsIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDAsIDc4NTU2LCAwLCAxMjEzMzIsIDc0Nzc2LCA0MjgxLCAKLSAgICA0NzY4LCAxMjA1NzIsIDQxNTM1LCA0MDk5LCA5MDE3LCA2OTk5MywgOTgzNjkyLCA3ODA5NSwgMjIyNSwgNzgwOTYsIAotICAgIDExODk0NiwgMTIxMDk3LCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMCwgMTEzNzY0LCA2Njg3MCwgMjEzNCwgMCwgCi0gICAgMTAxMTYsIDk4NzcsIDkyMzI5LCAxMjg5NjAsIDAsIDcwOTUsIDgzNzksIDc0MTE2LCA2Nzc4LCAwLCA3ODA5MCwgODI0MywgCi0gICAgMjQyNywgMTI4MTQxLCA3MDkzLCAwLCAxMTU4NSwgMTk1MDAzLCA5OTYyLCA4Mjk5MCwgMTIyMjMsIDEyODQ4NSwgOTI0MzAsIAotICAgIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCA4MzM4OSwgNzQ0MTksIDAsIDE5NDY4NiwgCi0gICAgNTUyODMsIDAsIDcwMzYzLCA3NDQzNywgMTE1NiwgODc0MCwgODMyOTUsIDM3ODIsIDY0MzMxLCAwLCA0MTM3MCwgMTAxNCwgCi0gICAgODI2MSwgMTIwOTU2LCA5MTc1OTYsIDEwODM1LCA5MTc5NjYsIDY1NTM2LCA4MzI5NCwgMTIwNDYzLCAxMjUwNTEsIDc3MDIsIAotICAgIDExODgyNCwgMTI4OTc2LCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgCi0gICAgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgNzUwMTgsIDEyODU3NiwgNzQ5MjMsIDQyMjU3LCA1Njk2LCA5MjY3NywgCi0gICAgMTIwNDY1LCAzODYyLCA5NjQzLCAwLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCAKLSAgICAxMjg3MTksIDE0MjYsIDY4MjE3LCA5ODM2MTQsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDY3NDAzLCA3ODA2NywgCi0gICAgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCAKLSAgICA2NDcxMiwgMTA3NDQsIDc4ODg3LCA5OTAsIDU2NDcsIDAsIDczODcsIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIAotICAgIDEyODc5LCAxMTAxOCwgMTI4MzYyLCAzOTQ1LCA5MjU4OSwgOTgzNDY2LCAxOTQ5ODksIDc4ODgzLCAwLCA3ODIxMiwgCi0gICAgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgOTgzODM1LCA3ODczMSwgNTY0OCwgNjQ3NDgsIDEyMDkyMCwgNzg3MzMsIDEwMjA1LCAKLSAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDEyODAwOCwgNzQwNTEsIDEyODkwMSwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMTI4MTczLCAKLSAgICAxMjUwMzcsIDAsIDk5MTEsIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIAotICAgIDc4MjA4LCAxMTQwLCA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDEyODY0NCwgNjgzMjYsIDE5NDkxMSwgMTgxNSwgCi0gICAgMTk5MTAsIDg5MCwgMTI0OTM1LCAzMjY3LCA5MjI5MSwgMCwgMTAxMjMsIDEyMTM5OCwgNDQxMCwgMTA0MSwgMTA1NzYsIAotICAgIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCA5ODM3NDYsIDEyODM0NywgMCwgMCwgMTI4MDk4LCAxOTkzOCwgNjU5MDYsIAotICAgIDEyNzgxOSwgOTE3ODExLCAwLCAzMjk4LCA1Mzc1LCAxMDE0MiwgMCwgODIxNSwgOTI2MzMsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgCi0gICAgOTgzMTQ3LCA2OTg5OSwgMTk0OTM4LCAwLCAxMjE0MjYsIDQxMzgyLCA5MTc5MjcsIDEyODY1MywgNTE3MywgNjUzNDgsIAotICAgIDUyNywgMTIxMTc0LCAxMTM3ODIsIDc4NDY5LCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAKLSAgICAyMzI5LCA0MjI1MCwgMCwgMTExODcsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDgzNDYwLCAwLCAxMTM3MDUsIAotICAgIDkxNzkxMCwgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMCwgMTE5ODQwLCA3MzgyMiwgCi0gICAgMCwgMTI4MDEwLCA2NDkxNywgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgOTIyNTAsIDY1MDk4LCA2MzY0LCA5NTYsIAotICAgIDExMzc5MiwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgNzM3MzQsIDAsIDAsIDk4MzczOSwgNjY0NDksIDEzMjYzLCA3NDI4MSwgCi0gICAgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDEyMDU2NCwgMCwgNjM4ODUsIDEyNzI1MSwgMTA0NCwgNDEyNzYsIDEyODM2MywgMCwgCi0gICAgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIDEyNzIwMiwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAxMTgyOSwgCi0gICAgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgNzAzMjksIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgMTIwNzYxLCA3MDk4LCAKLSAgICAxMjUwNzEsIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDEyNzIzOSwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIAotICAgIDY2NTcxLCA3ODQ3MiwgNzEyMDcsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzMzMwLCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCAKLSAgICA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIAotICAgIDAsIDY0NDc3LCA5MTc4NTMsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgMCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgCi0gICAgNzQzNDksIDY2NDc5LCA2NzY4OSwgNjY4NzEsIDkxNzg0NSwgNzAzMjcsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCAKLSAgICA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgNDM1MTQsIDEyMTMwLCA5ODMzMDgsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAKLSAgICAxMjc4NTAsIDk4MzE0NCwgMTI3ODI4LCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAwLCA4MzM0NSwgNzUwNjUsIDAsIDYzNTgsIAotICAgIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDEyNzc3MywgCi0gICAgNDM2ODUsIDc0MzA3LCAwLCA0MjkxMCwgODMzMDEsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDEyODYyMSwgMTIwNDEzLCAKLSAgICA5MjE5MiwgMTIxNDU0LCA2NTg5NCwgMTk0Njk0LCAwLCA2NDI5NiwgOTgzNjgxLCA5ODM2NDQsIDE5NDk1OSwgMTE5MTg3LCAKLSAgICAyMTM1LCAxMTgzNiwgMCwgMCwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgNzAzODQsIDEyOTExMywgNDM4NTQsIAotICAgIDcxOTEzLCA1NTc4LCAxMTg0MCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDc4NjIwLCAxMjExNzEsIAotICAgIDY4ODMzLCA5MjI1NCwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCAKLSAgICA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDY4Nzc0LCA2NTcwMiwgNjg3NzAsIDEyMDgwMSwgNjUyNTEsIAotICAgIDY4MjI4LCA2NTcxMCwgMTI4Mzk5LCAxMjg0MjksIDY3NjcyLCA2ODc4MywgNTM3MCwgNzA0NjUsIDI5MzEsIDE2MzgsIAotICAgIDEwOTY2LCAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCA3NDU4NSwgODE3MiwgNDIwMTcsIDkyNzU2LCAKLSAgICAxMDg0NCwgMTIxMDE2LCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAxMTk5OTgsIDEyMTA3NSwgMjg2LCA3ODAyMywgMTA2MiwgMCwgCi0gICAgMTE5OTk5LCAwLCA3Mzk1LCAxMjc3ODMsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMTk0NjQwLCAzMDE1LCAKKyAgICA5NjcyLCA0MTQyNywgNDM1NDEsIDQzMzE3LCA3NDkyNCwgOTE3Nzc3LCAxMjg1NTcsIDQxNDI0LCAxMTk1NjMsIDEyMDU0NiwgCisgICAgOTgzODg4LCAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAxMjgyNjEsIDEyMTAyLCAxMTk2NjIsIDQxNDAxLCAxMjg5MzIsIAorICAgIDEyNzUzOCwgMTEzNzY3LCA3ODI1MSwgMTI0OTQzLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA2ODg1MCwgNzQ5MDEsIAorICAgIDEyMTAwNSwgMTI3OTUxLCA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgMTEzNzgxLCAxMDU5OCwgNzQxMCwgMjY2OSwgCisgICAgOTAzLCAxOTUwOTEsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIDY0NTA0LCAxOTkyOCwgMCwgMTI4NDExLCAzOTE3LCAKKyAgICA3ODE4NSwgMTE3MzIsIDEyODUxMiwgNzI3OTcsIDQxNDQ4LCA0MTQ2MSwgMTI4ODIzLCAwLCAxMTM3MjEsIDExMzc1OCwgCisgICAgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgODMyOTMsIAorICAgIDEyMTAwNywgOTA5NCwgOTE3Nzk0LCAxMTc1OCwgNjg0MjUsIDcxODg2LCAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgCisgICAgMTk5MjQsIDkyNzExLCAxMTM2ODIsIDc4NjIsIDY0NTUxLCAxMzIyNCwgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCAKKyAgICA3ODYxOCwgNjk3OTMsIDE4NzgsIDEyODY0MSwgNzE0MzQsIDI5MTEsIDcyNzU4LCA0MTE3OCwgNTQyNywgNjQ4MjMsIAorICAgIDc4NjE1LCA4MzA2NiwgMzc4NywgNDExNzQsIDgzMDU1LCA0MTQ1OCwgNjcxNDcsIDQxNDYzLCA0MjQxMywgMTEyOTIsIAorICAgIDI0MDYsIDc3NSwgMCwgNjU1ODQsIDY5OTIzLCA2MDc0LCA5NjE4LCA2ODA1NiwgMTIxNDgwLCA0MzQ0MCwgNzQ1MzksIAorICAgIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDkxNzgwNSwgMTIwNjAwLCA0MTQ1NiwgNjc2OTQsIDE1OTksIDExMzMzLCA4MzEzOSwgCisgICAgNjcwMywgODUxMywgODMxMzQsIDE2MTMsIDgzMTM2LCA2ODQ1NiwgMTI1OTgsIDgzMTMxLCA4MzEzMiwgNzg3NDUsIDc0NTAwLCAKKyAgICA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNjcxNDQsIDk5MDUsIDgzMTQ1LCA2NTczMCwgODMxNDcsIAorICAgIDEyMDM3NCwgODQyNywgODMxNDIsIDU1MjQ2LCAxMjAzNzYsIDQyODk1LCAxMTQ5NywgNjQ2ODcsIDc0MDA4LCA0MjU5MiwgCisgICAgMzg3MSwgOTgzNTg0LCAxMjgzMDUsIDkxMTEsIDU3NDEsIDgzMzI1LCAxMjA5ODcsIDEyMDM2NiwgMTE5MTExLCAxMTE1MCwgCisgICAgMTk0ODc2LCAxMjAzNjgsIDEyODg1NSwgMTE2NDgsIDgzMTI2LCA4MzEyNywgODMxMjgsIDQxNTg3LCA3MDM5MSwgODMxMjMsIAorICAgIDcxMTA4LCA0MjExMywgOTE3OTU2LCAxMjcxNTUsIDEyMTcyLCA4MzEyMSwgNzE0NDMsIDY1Mjk4LCA2NTcyMywgNjgyODksIAorICAgIDczODcxLCA2NTcyNCwgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgNjQ2NzEsIDQyMTE4LCA3MzgzMCwgCisgICAgNjYwNDIsIDEwMzU1LCAxMjE1MDEsIDc4NzUsIDEwMDM5MCwgNDE1OTgsIDM5OTMsIDEyMTI2OSwgMTU0NSwgNDA5NzEsIAorICAgIDUzNiwgNzI4NzQsIDQzMDI5LCAwLCAxMjEwMDAsIDY1MTczLCA2NTI4NiwgMTIxMjU0LCA3MDMzMSwgMTk1MDEyLCAwLCAKKyAgICA5NDA2NSwgMCwgNDEzNzUsIDU0MDIsIDgzMDM1LCAxMjgxOTIsIDE2ODcsIDEyMDUwMywgMTI4NTU5LCAwLCA3ODE5NCwgCisgICAgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzM3NDcsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDEyNzEwOCwgCisgICAgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgOTE3ODY3LCAwLCA4MjY2LCA0MTAwNiwgNjU3MjIsIAorICAgIDgzMDQxLCAxMDcxMCwgNzQwNDUsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDgzMzEzLCA3MDcyOSwgNzE4ODksIAorICAgIDY3ODU3LCAxMDA1ODIsIDAsIDkyNDE4LCAxMTc1NSwgNjYzMDUsIDY4MzMyLCAwLCAxMDkxNywgOTM5NzksIDAsIDExMjcyLCAKKyAgICAyMDQwLCA0MTI0NywgNDEzMjYsIDE5NTA2MCwgMTc0MSwgNDIzNzAsIDEyMjcsIDgzMTE5LCA4MzEyMCwgMTE0MTMsIAorICAgIDEyNjU4MywgODMxMTUsIDUyODMsIDE1ODYsIDQ5NzgsIDY4MDUwLCAxOTg0LCAxMTgzMCwgNDM4MTksIDkyMjkzLCA0MDk4NCwgCisgICAgNDI5MDQsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAxOTQ4ODgsIDQxNjYzLCAxMjc4OTUsIDk4MzA0NSwgNjgzMTMsIDkyMzcsIAorICAgIDkzODUsIDQxNjQ4LCAwLCAxMjg5NTMsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgNDEyODcsIDkyNjEwLCAKKyAgICA5ODMyOTksIDcxOTE3LCA0MjIxOSwgNjgwODYsIDEyMDMyNywgNDE5ODcsIDQxNjc2LCAxMjUyMTksIDcyODQwLCAxMjY1NTMsIAorICAgIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIDExNDUxLCA4Mjk5NSwgCisgICAgNzg4NTUsIDQyNjMxLCAyMzU5LCA3MTg5MCwgNjc4NDQsIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgMTMxMzMsIDY0MzY4LCAKKyAgICAxMjcyNzAsIDEyMDkyNSwgNjYyNzIsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAorICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDEyMDg3MSwgNDI4LCA5NjIwLCAxNDY2LCA3ODExMiwgMTA5ODIsIAorICAgIDExMzc4NSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAxMjc5OTMsIDAsIDk4MzE1MSwgNTgwNCwgCisgICAgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCA3MDE2NywgOTA1NywgNDIyOTQsIDQxMjE4LCAxMjUwOTcsIDEyMTI5MCwgNzgxMzcsIAorICAgIDE4ODMsIDEwOTUyLCA4MDQ4LCA3MDQ0MywgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMTI4NjE2LCAxMjgzMTksIDEyODYyOSwgCisgICAgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAxMjY3NSwgCisgICAgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCA2ODA3NywgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIAorICAgIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEwMjk2LCAxMTkxNTgsIDcxNDAsIDEwOTc3LCAxMjczNzgsIDQxNjQsIAorICAgIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgCisgICAgNjQ3OTksIDQyMDQ3LCAxMjk0MTQsIDE5NDgyMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIDEyNjYxNiwgNzQzMDAsIAorICAgIDAsIDY4MDg3LCA3NDg0MCwgMTI2NDc0LCA5MTc1MzksIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCA5NjgzLCAKKyAgICA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDk4Mzk0MSwgNjYzMzAsIDEyMTIzOCwgNzI4NjksIDEyMDU2MiwgMTE5NTU4LCAwLCAKKyAgICAwLCAxMjc4MzEsIDY2MzE3LCA2OTk0NSwgNjYzMTUsIDIxMDYsIDY3ODA5LCAxMTI3MywgMTIwOTg2LCA0MzAwNCwgNzU0MSwgCisgICAgODI5ODgsIDE5NDczOCwgOTYxLCA2NDMwNywgNjYzMjQsIDY0OTA2LCAxMjUwODAsIDMxMDYsIDY1OTE3LCA0MTI4NCwgCisgICAgMTY5NiwgOTgzMTMwLCA4OTEsIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgCisgICAgMTA5MzYsIDExOTI1NSwgMCwgMCwgMTk0ODI2LCA5MjY4OCwgMzU2NiwgMjMyMiwgMTIwMzcxLCA3MDgzMSwgMTE0NDksIAorICAgIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCA5ODM3MTcsIDAsIDExMzc0NiwgOTgzNDAwLCA0MzIxNiwgNjA4OSwgCisgICAgNzg2ODIsIDY4NDkwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTAwMzg0LCAxMTkyMjQsIDQyMzc0LCA5ODM1NzEsIAorICAgIDc0NCwgOTI4ODMsIDExMzczOSwgMTk0OTI0LCA2NTgyMywgMTI3ODI2LCAxMTE4MiwgMzU1MSwgOTI5MzgsIDk4Mzg5MSwgCisgICAgNDYyMywgNTUyNjgsIDEyODczOCwgNDU5OCwgOTgzMTYyLCA2NTEzNiwgMTI3MTM2LCAwLCAxMjgxNjksIDEwODUxLCAKKyAgICAxMjA4NzYsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgNzQ1NzksIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCAKKyAgICA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIDEyMDU4MCwgOTgzNjk2LCAxMjUxMzUsIDYxNzcsIDkwMjAsIAorICAgIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDIyMTQsIDg3NTQsIDEyMjg5NCwgCisgICAgMTAwNjg5LCAyMTM3LCA0MzA4MSwgMTk0NjYzLCAxMTkxMTQsIDkxMzYsIDY2ODg5LCA0NDAxLCA0MTI4MCwgNzA4MDEsIAorICAgIDg5NzQsIDIzMDgsIDE5NDc1MCwgNzQxNDksIDEwMTA1MCwgMjMxOCwgMTIwNjkzLCA2NjM2MSwgODE5OCwgNjU2MjYsIAorICAgIDY0MzYwLCAxMjYwMSwgNDI1MzYsIDQzOTMxLCAxMjA4MjcsIDQzOTMwLCA5MjQ2MiwgNjk3MCwgNTQwNCwgNDMzMzIsIAorICAgIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDEyODQ4MiwgMTI4NDAzLCA3Mjg2MSwgMTA4NzQsIDY1NTA1LCAKKyAgICAxMjAwMDIsIDcyNzg1LCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCA0MjA1MiwgMCwgNjcyNjYsIDY3NjUxLCAxMjExMDQsIAorICAgIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCA5MTc2MTcsIDAsIDEyODkzNywgNzAwODgsIDc0MTQ4LCAwLCA3MDQxOSwgCisgICAgNzI4NjgsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDY2NDA0LCA5NDA5NiwgNzQ0MjIsIDQxMTQ4LCA4NjgzLCAKKyAgICA3NTk0LCAxMTM2ODYsIDc1MDMzLCAxMTkwOTAsIDEwODY5LCA0MzQ1OCwgNDExNDYsIDkyNDA3LCAxMTQ0MSwgMTIxNDU2LCAKKyAgICAzNTEyLCAxMTk2MzMsIDkyOTY1LCA4MTAzLCA3ODE0MCwgMTIwODQ3LCA2NTE4NCwgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgCisgICAgMTI5MDU1LCA2OTc0MiwgNDE1NDQsIDY1MTQ2LCA2NjgwMywgMCwgNzgxMDksIDEyOTE3NywgMTk5NDIsIDEyNjYxOCwgCisgICAgMTE4OTA4LCA3OTg4LCAxMDQzNiwgNzQyNzMsIDMyNzEsIDczODA0LCA2NDcxMSwgMTIwODI0LCA5NDA2NCwgOTgzMDcxLCAKKyAgICAxMjg2NTIsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDEyMDg1OSwgMTA5NSwgMCwgMzU5OSwgMTI3Nzc0LCAwLCAKKyAgICAxMjg4NjEsIDg1MTQsIDAsIDkxNzU3OSwgMCwgNzQzNDYsIDY2Njk3LCAxMjgzODUsIDExNjg0LCA5ODMxNDgsIDkyNDg2LCAKKyAgICA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDc0OTI3LCA0MjA0NiwgNzI4NjIsIDQwMzYsIDEyNjQ4MSwgCisgICAgMTI5MzczLCAxMjgyMTMsIDE5NDg2MSwgODMzNTUsIDExOTU0LCA3MDM0OCwgMTQ1MCwgMTI5ODYsIDEzNDAsIDAsIDY1NDQxLCAKKyAgICA5MjcyMiwgMCwgMTI3MDYyLCA3Mjg2NSwgMTAwODE4LCA5MTc1NDIsIDczODEyLCA3Mjg3NSwgNjUzOSwgNzM4MzYsIAorICAgIDEyNjYwNywgMTIwNzAyLCA5MjM5MCwgMCwgMTIwNDkyLCA0MTE5MCwgMzk3MywgMTE5MzY1LCA0NTc1LCA0MTE5MywgNzk4MiwgCisgICAgNDI5LCAxMjI5MDMsIDc4ODkxLCAxMjc4NzQsIDE5NDg0OCwgNjU3OTIsIDEyODQwOCwgODMyODIsIDY0MTcsIDExODkxOCwgCisgICAgNzgxNzgsIDAsIDEyODk3MCwgNjY3ODYsIDAsIDQ5MTksIDEwNTkwLCAxMjgwOTMsIDc3NTUsIDAsIDkyOTQyLCA2NDU0OCwgCisgICAgMTIwNTA2LCAxNjIxLCAxMDIxNCwgNjUxMjYsIDY4MjUzLCAxMjA2ODksIDk4MzYxNiwgMTIxODgsIDk4MzY2OCwgMTYxNywgCisgICAgODA1MCwgMTk1MDMxLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCA3MDM1NCwgMTc1NiwgNzgxODEsIDk4MzkxMCwgNjU3NjgsIAorICAgIDYzNTIsIDQxODkyLCAxMjUxODYsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDEyMTIwOCwgCisgICAgMCwgNDI5MjYsIDEyMDg3MiwgNDE3NjQsIDc5NTcsIDg2ODksIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDM1NTksIAorICAgIDExOTE2MiwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgNzA4NTMsIDExMzcyMCwgMCwgMTI4MTIyLCA3Mjc2MSwgMjM0MSwgCisgICAgODQ1MCwgODQ4NCwgODQ3NCwgNzI4ODUsIDY4MzIyLCA3MDA3OSwgODQ2MSwgNjc3MjEsIDEyMTUzLCAxMjc5OSwgMCwgCisgICAgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgNDM4NDcsIDAsIDY4MSwgOTgzMjU0LCA3MDMsIDEyNzUxOCwgCisgICAgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgOTIyODgsIDcwNTE0LCAxMjcwNTksIDgzMTc1LCA3MTQzNiwgCisgICAgMTEzMzgsIDcyNzkwLCAzMjc2LCAxMjg5NjgsIDEyMDIzMywgNjU5MjgsIDAsIDEyMTM2NywgNjUwMjEsIDY0Nzk1LCAKKyAgICA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgNDI3MTEsIDAsIDk4MzQ5MCwgNjg0NzgsIDE2MywgNTc2LCAKKyAgICA5ODk1LCAxNjU1LCA3MDEzMSwgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgCisgICAgMTIwNDI2LCA1NjI2LCA1NjIzLCA1NzE3LCA1Nzc2LCA0MzQ4OCwgODM0OTcsIDY2ODg1LCA0MTU5MSwgMTEwMzYsIDY1MjUyLCAKKyAgICA5MjM4MiwgMCwgMCwgMTIwMTExLCA2Nzg0OCwgMTI3MzA5LCA5ODM1OTUsIDk4MzQ3MiwgODg4NywgMTI3NTIxLCA3Mjk1LCAKKyAgICAxMTAzMSwgMTI1MjU1LCA0MzE1NywgMTAwNDUxLCA4OTQ2LCAxMDM0OCwgMTA0MTIsIDg3NTUsIDExOTE1MiwgNjczNDMsIAorICAgIDU3MTgsIDEzMjIxLCA5ODMzNDEsIDk4MzI3OCwgNzgxMzUsIDcwNTE1LCA5MTc2MTYsIDg4MTAsIDc0NDk5LCA2ODYsIAorICAgIDE5NDc3NiwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAxMjc1MjMsIDEyMDQwLCA2NTY4OSwgCisgICAgMTAxMjgsIDY1MTE4LCA2ODAyOSwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDEyODEzOCwgMjQwMSwgNjgxNDQsIDg3OTIsIAorICAgIDk4MzE3OSwgNjgwNDQsIDY1NDU1LCAxMjkzMTUsIDc0MzI4LCAwLCA3NDU2MSwgMTIwNzYzLCAxMjg4NiwgMTIwOTUyLCAKKyAgICA2NjYyNCwgMTI2NTc4LCA0MzU1NywgMTAzMDAsIDEwMTYxLCAxMDM5NiwgNzEyMTAsIDc4NjAyLCA3ODc3NCwgOTk4NCwgCisgICAgNzM4NTEsIDMwMTAsIDY0NDEsIDcwMzQ5LCAxNDU4LCA0MTQ3NSwgNzI0MjksIDkzOTc1LCAxMDA4MTQsIDExNDc5LCAKKyAgICAxMjEzNTUsIDEyMDM1NiwgNjM1MCwgMTI4NjQsIDY5Njc0LCA3MTQ3MywgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCAKKyAgICA1NTIzMCwgMTAwNDU0LCA0MDUyLCAxMTM2NzMsIDc2MjYsIDk4Mzg5MCwgMTIwOTA3LCAxMDQ1LCAxOTUwODYsIDU2MzEsIAorICAgIDQxMTEzLCAxMjA0OTQsIDAsIDQzNzA3LCA3NDEyNywgMCwgOTgzNzE4LCA4NDg2LCAwLCA3Mzc1OCwgMjMzNSwgNDM2MiwgCisgICAgOTgzMTk1LCAxMjY1NjEsIDY5MjIxLCAxMDI1LCAxMjcyNzcsIDQyNjI1LCA3MDMyNSwgNzgwODQsIDQxNDQzLCAxMjkxMzAsIAorICAgIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMTIxMzMwLCA2ODA1OSwgNDE0NDUsIDc4MjM2LCAxMTIwNywgODU2NywgNDE0NDIsIAorICAgIDM5ODgsIDc0ODQzLCA3ODIzNywgMTE4OTEwLCA5ODMwNjcsIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgCisgICAgMTIxMjcyLCAwLCA0MzQ0NiwgOTgzMzQ2LCA2NjUxMywgNjI1NiwgOTE3ODA3LCA1NzksIDU1MjE4LCAxMDIwNiwgNzgxOTUsIAorICAgIDYzNzUsIDI2NzMsIDk4Mzg4NiwgMTE4MTQsIDAsIDQ0ODgsIDEyODcxNiwgMTIwNTU0LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgCisgICAgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCA0NDg3LCAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCAKKyAgICA3ODI1NywgNzIwMywgMTI0OTk4LCA2MTQsIDcwMzYxLCAxMjY2MzMsIDEyMDYxNSwgMTE5NjIyLCA3ODI2MiwgMTI3MjcxLCAKKyAgICAxMjczMjMsIDAsIDQzMTIxLCAxMjcyMTEsIDEyNzAwMywgOTI1MTMsIDEwNTAsIDc1NDksIDEyMTI2MCwgODI5OTQsIDkzMTQsIAorICAgIDcwMzY1LCA5Mjg5OCwgNjgwMzksIDEyNzA2MSwgMTAwNTcsIDcwNDM0LCAxMjczMTMsIDEyODU3NywgNjY1MDQsIDEyMDk2MywgCisgICAgODI5OTIsIDIzMDcsIDEyODQ1NiwgNjQzMzMsIDEyNzMxMiwgMTE5OTAwLCA3Mzg3MywgOTgzMTI2LCA5NDAzNSwgOTgzMDgzLCAKKyAgICAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCA2NzQ2LCAxMjA0NzMsIDkyMjQ1LCA0NDAsIDEyODgyNiwgMTMwODUsIAorICAgIDkyMzMsIDc0MjE2LCA5ODM1NjYsIDEwMTA4OSwgOTk1NywgMTI1MjEzLCA2NjQ0NywgODA0NiwgNjQ5NjMsIDY1Nzc3LCAKKyAgICAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMTAwNDY2LCAxNTIxLCA5ODk2LCA5Mzk2NSwgMTA0ODcsIDY5ODc4LCAKKyAgICAxMjUyNywgNjg3MzcsIDc5NzAsIDEyNTA3MywgMTI4NjYwLCA3MzAzLCA2NTc2OSwgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIAorICAgIDEyMTQyOSwgMCwgNTIzNywgNjk3MTQsIDY4NzU2LCAxMDEwMywgNTI0NywgNDc2OSwgMTI5MzAyLCAxMTg5NzcsIDEyODczLCAKKyAgICAyMjgzLCA5MjkzMSwgMTAwNTI1LCAzMDA4LCA0ODk2LCAxMjgxMDIsIDEyMDg3LCA5ODMyNDAsIDU1MjMxLCA0MTEwMywgCisgICAgNzUwMTEsIDY0NTY1LCA0NzczLCAxMjA4NDYsIDc4NTQ5LCA3MDA3NCwgNDc3MCwgNjY4OTEsIDkxNzU2NywgODczMSwgCisgICAgNjUzNzgsIDY2OTExLCAxMjA2MTksIDkxMjIsIDEyODAzMywgMTE5MDcxLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgCisgICAgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMTIwNDEzLCA3ODU1NiwgMTI2OTkwLCAxMjEzMzIsIDc0Nzc2LCA0MjgxLCA0NzY4LCAKKyAgICAxMjA1NzIsIDQxNTM1LCA0MDk5LCA5MDE3LCA2OTk5MywgOTgzNjkyLCA3ODA5NSwgMjIyNSwgNzgwOTYsIDExODk0NiwgCisgICAgMTIwMjUyLCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMTI4OTI2LCAxMTM3NjQsIDY2ODcwLCAyMTM0LCAxMjczODgsIAorICAgIDEwMTE2LCA5ODc3LCA3MDY3OSwgMTI4OTYwLCAwLCA3MDk1LCA4Mzc5LCA3NDExNiwgNjc3OCwgMTIxMTU1LCA3ODA5MCwgCisgICAgODI0MywgMjQyNywgMTI4MTQxLCA3MDkzLCA5ODM4NzksIDExNTg1LCAxOTUwMDMsIDk5NjIsIDgyOTkwLCAxMjIyMywgCisgICAgMTI4NDg1LCA5MjQzMCwgMTQzNCwgMTIwMjU0LCA1NjM3LCAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIDgzMzg5LCA3NDQxOSwgCisgICAgMTI4NTMwLCAxOTQ2ODYsIDU1MjgzLCAwLCA3MDM2MywgNzQ0MzcsIDExNTYsIDg3NDAsIDgzMjk1LCAzNzgyLCA2NDMzMSwgCisgICAgMCwgNDEzNzAsIDEwMTQsIDgyNjEsIDEyMDk1NiwgOTE3NTk2LCAxMDgzNSwgMTI1MjM5LCA2NTUzNiwgODMyOTQsIAorICAgIDEyMDQ2MywgMTI1MDUxLCA3NzAyLCAxMTg4MjQsIDczMDIsIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCAKKyAgICA1NzAwLCAwLCAxMjA2MDMsIDY1MzgzLCAyMzM5LCA0MjU5NCwgNTY5NywgMTE4Nzg4LCA3NTAxOCwgMTIwNDcxLCA3NDkyMywgCisgICAgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDkxNzk1MSwgNzAxODMsIDc2MzQsIDY1MTY3LCA5ODQ1LCAKKyAgICAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgMTI4NzE5LCAxNDI2LCA2ODIxNywgMTI4NjY4LCA2ODQ0NywgNDIyMDQsIAorICAgIDU1MjcwLCA4NTcxLCA2NzQwMywgNzgwNjcsIDQzODU5LCA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgMCwgNDIwMjIsIAorICAgIDAsIDEwMjgxLCA5MTc3OTgsIDU2NTAsIDQzMTk0LCA2NDcxMiwgMTA3NDQsIDc4ODg3LCA5OTAsIDU2NDcsIDAsIDczODcsIAorICAgIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIDEyODc5LCAxMTAxOCwgMTI4MzYyLCAzOTQ1LCA5MjU4OSwgOTgzNDY2LCAKKyAgICA3MDY2NCwgNzg4ODMsIDEyODEyOCwgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDk4MzgzNSwgNzg3MzEsIDU2NDgsIAorICAgIDY0NzQ4LCAxMjA5MjAsIDQyMjM2LCAxMDIwNSwgMzU0NSwgMTI5MTIxLCA2OTg0LCAxMjc3NzEsIDc0MDUxLCAxMjg5MDEsIAorICAgIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDEyODE3MywgMTI1MDM3LCAxOTQ3NDYsIDk5MTEsIDEyMDU5MCwgNjUwMjAsIDEwMDk3LCAKKyAgICAxMTkxNjYsIDc4Njk2LCA5ODM2NjIsIDExODgzNiwgOTgzNzQ4LCA3ODIwOCwgMTE0MCwgNzg0MjYsIDEyODIwNSwgMTAxNTksIAorICAgIDAsIDAsIDgxMjgsIDcyODU3LCA2ODMyNiwgMTk0OTExLCAxODE1LCAxOTkxMCwgODkwLCAxMjQ5MzUsIDMyNjcsIDkyMjkxLCAKKyAgICA5MTc2MjksIDEwMTIzLCA3Mjg4MiwgNDQxMCwgMTA0MSwgMTA1NzYsIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCA5ODM3NDYsIAorICAgIDEyODM0NywgNzI4ODQsIDAsIDEyODA5OCwgMTk5MzgsIDY1OTA2LCAxMjc4MTksIDcyODgzLCAxMjg4NTgsIDMyOTgsIAorICAgIDUzNzUsIDEwMTQyLCAxMDA0MjEsIDgyMTUsIDkyNjMzLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDk4MzE0NywgNjk4OTksIAorICAgIDE5NDkzOCwgOTgzNjAyLCAxMjE0MjYsIDQxMzgyLCA5MTc5MjYsIDEyODY1MywgNTE3MywgNjUzNDgsIDUyNywgMTIxMTc0LCAKKyAgICAxMTM3ODIsIDc4NDY5LCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMTIxMzg2LCAwLCAxMDA3MiwgMCwgNDI2OTUsIDIzMjksIAorICAgIDQyMjUwLCAwLCAxMTE4NywgNjk2NjcsIDEyMjQ1LCAxNTY4LCA2NjgwNiwgODM0NjAsIDk4MzE4OSwgMTEzNzA1LCAKKyAgICAxMjg1MzIsIDExMjAxLCA5MjcwOCwgNzQ3NjksIDEyNjQ3MCwgNjc2ODAsIDkwNjksIDYxNDQsIDEyMTI0NiwgMTE5ODQwLCAKKyAgICA3MDcwMCwgMTIxNDM4LCA2Njc4MywgNjQ5MTcsIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDkyMjUwLCA2NTA5OCwgCisgICAgNjM2NCwgOTU2LCA2Njc5NCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgNzM3MzQsIDEyOTEwOSwgMCwgOTgzNzM5LCA2NjQ0OSwgCisgICAgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgNzA3MTQsIDEwMDk0MiwgNjM4ODUsIDEyNzI1MSwgMTA0NCwgCisgICAgNDEyNzYsIDEyODM2MywgMCwgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIDEyNzIwMiwgMCwgNDI0NTAsIDM5MDcsIAorICAgIDEyNDk5NSwgNjQ1MjYsIDExODI5LCA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCA3MDMyOSwgMzAyMCwgMTE1MzcsIDAsIAorICAgIDY2NDQxLCAxMjA3NjEsIDcwOTgsIDEyNTA3MSwgMCwgMTA1NywgNTY2LCA0MjY5NiwgMTI3MjM5LCAzMDE2LCA0MjI3NCwgCisgICAgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCA3MTIwNywgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODMzMzAsIAorICAgIDEyMDEwNywgMTI5MzUwLCA2NDY1OSwgOTE3OTE3LCAxMjc3NDksIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCA3MTMzNywgCisgICAgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDkxNzg1MywgNDM4MTMsIDEwNTMsIAorICAgIDEwMDQzMiwgNzgyNjksIDEwMDQzNCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCA2NzY4OSwgCisgICAgNjY4NzEsIDkxNzg0NSwgNzAzMjcsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgCisgICAgMTAwNDQ5LCA0MzUxNCwgMTIxMzAsIDEwMDQ1MCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIDEyNzg1MCwgOTgzMTQ0LCAKKyAgICAxMjc4MjgsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIDgzMzQ1LCA3NTA2NSwgOTE3OTUzLCA2MzU4LCA2MzYxLCAKKyAgICAxOTI2LCA2MzU2LCA3Mjg1NSwgNzg5OCwgODExMCwgMTA5MzUsIDAsIDEwMDY5LCA1ODMwLCAxMDA0MjUsIDQzNjg1LCAKKyAgICA3NDMwNywgMTAwNDI2LCA0MjkxMCwgODMzMDEsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDEyODYyMSwgMTE5NTg3LCA5MjE5MiwgCisgICAgMTIxNDU0LCA2NTg5NCwgMTk0Njk0LCAwLCA2NDI5NiwgOTgzNjgxLCA5ODMzOTQsIDE5NDk1OSwgMTE5MTg3LCAyMTM1LCAKKyAgICAxMTgzNiwgMCwgMTI5MzYxLCA3ODg2OSwgNDIzMTMsIDU1NzksIDkyNDEyLCA3MDM4NCwgMTI5MTEzLCA0Mzg1NCwgNzE5MTMsIAorICAgIDU1NzgsIDExODQwLCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgNzg2MjAsIDEwMTAzOCwgNjg4MzMsIAorICAgIDkyMjU0LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIDQyNDY1LCAKKyAgICA0MTMzMCwgMTk0OTQ1LCA1Nzk1LCA2NTUxMiwgNjg3NzQsIDY1NzAyLCA2ODc3MCwgMTIwODAxLCA2NTI1MSwgNjgyMjgsIAorICAgIDY1NzEwLCAxMjgzOTksIDk0MTc2LCA2NzY3MiwgNjg3ODMsIDUzNzAsIDcwNDY1LCAyOTMxLCAxNjM4LCAxMDk2NiwgCisgICAgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgNzQ1ODUsIDgxNzIsIDQyMDE3LCA5Mjc1NiwgMTA4NDQsIAorICAgIDEyMTAxNiwgMTI4MTk1LCA5MjQyNCwgNjM3NCwgOTI2MzYsIDEwMDQzOCwgMjg2LCA3ODAyMywgMTA2MiwgMCwgMTE5OTk5LCAKKyAgICAxMDA0MzcsIDczOTUsIDEyNzc4MywgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAxMjg5MjgsIDMwMTUsIAogICAgIDY4NzQzLCA2ODc0MCwgNTIxMSwgNjg4MDUsIDY0MDAsIDY4NzQ5LCA2ODc0OCwgNjg3NjAsIDgxODksIDExMjc2LCA2ODc1NCwgCiAgICAgNzAyODQsIDM3MiwgMTI4ODI5LCA2ODc2MSwgMTEzNzgzLCA0MjEwMiwgNDE1ODUsIDEyNzc1MSwgMCwgNDIxMDEsIDI3NiwgCiAgICAgNzg0MDIsIDY3NDI3LCAzMywgNjc0MjUsIDY3NDI0LCA5MDA3LCA2NzQzMCwgNDE1ODgsIDY2MDMzLCA0MjcsIDEwNzYzLCAKLSAgICAxMTg4MTksIDcwODcyLCAxMjc4ODQsIDk4Mzk0MywgMTAzMSwgNjI1NywgOTI0ODksIDQyMTA0LCAwLCA5ODM5ODAsIDIzMjgsIAotICAgIDY2ODM3LCAxMDcxLCA0Mjg5OSwgMTI1MDg4LCA3NDg0OCwgMTIwODU3LCAxMTM3OTMsIDE5NDk4MSwgMTA0NywgMCwgCi0gICAgMTk0OTQzLCA0MjkwOCwgMTI4NDgwLCA2OTcyMywgMTA2NTEsIDcwMzU2LCAwLCAxMjUxMTMsIDcyNDMzLCA2NjgyOSwgCi0gICAgNzA4MTcsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDEyODU1MSwgNjc5MCwgNjUxNjgsIAotICAgIDEzMjE2LCA5ODMxNTAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIDU3MTUsIDY5NjU0LCA3MTkxNSwgCi0gICAgMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAwLCA4NjQzLCA2ODUyNSwgMCwgMTE4OTA2LCAyNzU3LCAKLSAgICAxMTA2NywgOTcxOCwgNjY0MTksIDg5MTAsIDEwNjg5LCA2NDc5LCAwLCAwLCA3MTE3MywgNzg2MDcsIDkxOTYsIDY5NjcwLCAKLSAgICAxMjUwNzAsIDAsIDEyODMzOCwgMTIwMzM1LCAxMTg5MTEsIDAsIDk0MDQzLCAxMjkxOTQsIDAsIDAsIDEyMDAxMCwgNzM3OTUsIAotICAgIDg3MDEsIDY4MTMwLCAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDE5NDk5NCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAKLSAgICAxMjkyOTYsIDAsIDY0OTQ2LCAxMDk5MiwgMCwgNzQ1NjYsIDcwMzM2LCAxMTM2ODgsIDkzMTgsIDkzOTg2LCAxMzI0OSwgCi0gICAgNDI5MDIsIDczODA4LCAwLCA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIAotICAgIDcwMzY2LCAxMjAwMDUsIDExOTU4NSwgMTIxMjEyLCA1MDg0LCAxMjExODksIDEyMTEzNCwgNzUwNjIsIDAsIDczMywgCi0gICAgNzQ2NDYsIDc4MDE0LCA2ODc2NywgNzg0MzUsIDExMjA0LCAwLCA5MjE4LCAxNzMxLCAwLCA5MjkzNywgNzEwNzAsIDY3OTkwLCAKLSAgICA5ODMxMjUsIDAsIDAsIDcwMzIzLCAxMjEzNzEsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIDUzNTgsIDk4Mzc0NCwgMCwgCi0gICAgOTE3NzY3LCA2NDQyNCwgNzEyMzYsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMTIxMzE2LCA3ODMxNSwgNjg0MzAsIDY3OTgwLCAKLSAgICA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAxMjc5NjAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIDExNTgwLCAKLSAgICA0MzY1NywgNjQ2MDEsIDEyMjA1LCA5Mjc4MiwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgNjc5NzgsIDc0ODQyLCA5ODMyODYsIAotICAgIDEyMTMzNiwgMTIxNDksIDEzMDg4LCA1NTEsIDAsIDEwMTU2LCAxMjExOSwgOTI1NzIsIDExODkxNiwgMjU0NCwgNjUwNzQsIAotICAgIDExOTIxMSwgOTgzMjk4LCAwLCA3ODAxMSwgMzUxLCA2ODc2NCwgMCwgMTI4NzEzLCA1NTIyOSwgMCwgNzQyNjgsIDc4MDA4LCAKLSAgICAxMjgwOTQsIDAsIDQyMzc3LCAwLCAwLCAwLCAxMTM3NjcsIDc0MzIwLCA5MDEzLCA0MDU0LCAwLCAxOTQ1ODAsIDExMzc0MCwgCi0gICAgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgNzQ0NTcsIDExMTA0LCA1NTg0LCA4MzU4LCAxMjY0NzMsIAotICAgIDY0MjE1LCA2Njg2NCwgMTA5MTksIDcwNDgwLCA3OTgwLCAxMjY2MDEsIDExMzY5OCwgMjIxOCwgNDE4MDAsIDU1ODksIAotICAgIDgyOTgzLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAxMTM1NiwgMTIxMTIwLCAxOTQ4MzMsIDQzNDUyLCA2NzI0NSwgCisgICAgMTE4ODE5LCA3MDg3MiwgMTI3ODg0LCAxMDA5OTAsIDEwMzEsIDYyNTcsIDkyNDg5LCA0MjEwNCwgMTAwMzk2LCAxMDAzOTUsIAorICAgIDIzMjgsIDY2ODM3LCAxMDcxLCA0Mjg5OSwgNzQ0MTgsIDc0ODQ4LCAxMjA4NTcsIDExMzc5MywgMTAwNDAxLCAxMDQ3LCAKKyAgICAxMDA0MDMsIDEwMDQwMiwgNDI5MDgsIDEwMDQwNCwgNjk3MjMsIDEwNjUxLCA3MDM1NiwgMTAwNDA4LCAxMjUxMTMsIAorICAgIDcyNDMzLCA2NjgyOSwgNzA4MTcsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDEyODU1MSwgCisgICAgNjc5MCwgNjUxNjgsIDEzMjE2LCAxMDA5MzUsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIDU3MTUsIAorICAgIDY5NjU0LCA3MTkxNSwgOTgzNzIwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDEwMDM4OSwgODY0MywgCisgICAgNjg1MjUsIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDY2NDE5LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMTI1MTk2LCAKKyAgICAxMjkxNzgsIDcxMTczLCA3ODYwNywgOTE5NiwgNjk2NzAsIDEyNTA3MCwgMCwgMTI1MTg0LCAxMjAzMzUsIDExODkxMSwgCisgICAgNDE2NDUsIDk0MDQzLCAxMjkxOTQsIDEyNzA4NywgMTI4NDgwLCAxMTM3NzAsIDczNzk1LCA4NzAxLCA2ODEzMCwgMTE5NjE2LCAKKyAgICAxMjA1MjIsIDQzNzU0LCA0MjQ3NywgMTAwNDU5LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDEyOTI5NiwgNzQ1NTcsIAorICAgIDY0OTQ2LCAxMDk5MiwgMCwgNzQ1NjYsIDcwMzM2LCAxMTM2ODgsIDkzMTgsIDkzOTg2LCAxMzI0OSwgNDI5MDIsIDczODA4LCAKKyAgICA5ODMzMzUsIDY1NDU3LCA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgNzAzNjYsIAorICAgIDEyMDAwNSwgMTAwMzY5LCAxMDAzNjgsIDUwODQsIDEwMDM3MCwgMTIxMTM0LCA3NTA2MiwgOTgzNDYyLCA3MzMsIDc0NjQ2LCAKKyAgICA3ODAxNCwgNjg3NjcsIDc4NDM1LCAxMTIwNCwgMCwgOTIxOCwgMTczMSwgMTAwMzgwLCA5MjkzNywgNzEwNzAsIDY3OTkwLCAKKyAgICA5ODMxMjUsIDk4MzM3MCwgMCwgNzAzMjMsIDEyMTM3MSwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgNTM1OCwgMTI4NTE1LCAKKyAgICAxMjkzMTYsIDE5NDk4MSwgNjQ0MjQsIDcxMjM2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDEyMTMxNiwgNzgzMTUsIDY4NDMwLCAKKyAgICA2Nzk4MCwgNDMyNTMsIDY1OTQzLCAxMDAzNzMsIDMzNzEsIDEwOTg4LCAxMDAzNzgsIDg3NzEsIDE0NzksIDEwMDM1NywgCisgICAgMTAwMzYwLCAxMTA5LCAxMTU4MCwgNDM2NTcsIDY0NjAxLCAxMjIwNSwgOTI3ODIsIDAsIDY0NTA3LCA4ODY4LCAzOTksIAorICAgIDY3OTc4LCA3NDg0MiwgOTgzMjg2LCAxMjEzMzYsIDEyMTQ5LCAxMzA4OCwgNTUxLCAxOTQ5NzIsIDEwMTU2LCAxMjExOSwgCisgICAgOTI1NzIsIDExODkxNiwgMjU0NCwgNjUwNzQsIDExOTIxMSwgMTAwMzU0LCAxMDAzNTMsIDc4MDExLCAzNTEsIDY4NzY0LCAKKyAgICA5MTc5ODEsIDEyODcxMywgNTUyMjksIDAsIDc0MjY4LCA2Njc5MCwgMTI3MzI3LCAxMDAzNjEsIDQyMzc3LCAxMDAzNjMsIAorICAgIDEwMDM2MiwgMTAwMzY1LCAxMDAzNjQsIDc0MzIwLCA5MDEzLCA0MDU0LCAwLCAxOTQ1ODAsIDExMzc0MCwgMzQ0NywgCisgICAgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgNzQ0NTcsIDExMTA0LCA1NTg0LCA4MzU4LCAxMjY0NzMsIDY0MjE1LCAKKyAgICA2Njg2NCwgMTA5MTksIDcwNDgwLCA3OTgwLCAxMDA3MjMsIDExMzY5OCwgMjIxOCwgNDE4MDAsIDU1ODksIDgyOTgzLCAKKyAgICAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCA3NDUyMiwgMTEzNTYsIDEyMTEyMCwgMTI4MTc1LCA0MzQ1MiwgNjcyNDUsIAogICAgIDkyOTkzLCA0MjU3MywgNjY4NzksIDgzMzI5LCA2NzgxMCwgNjk3NjcsIDc4NzUyLCA3NDM5MiwgODEzNSwgNjQ1MCwgCi0gICAgMTAwNTUsIDc3OTk2LCAxMTk5NDgsIDk4MzE3MywgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAxMjE0NTMsIDc3OTk0LCAKLSAgICAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAxMjA3OTksIDcxODYwLCAwLCA1NjUyLCAxMDk0NSwgMTk0NTk5LCA2NjQ4NiwgCi0gICAgMCwgMzY2MSwgNzg2MywgMCwgNjgwNjksIDk4MzY3NSwgNzAzMzIsIDEyNzE5NCwgNTY1OSwgMTk0NjA2LCA3ODY5MiwgCi0gICAgNjY3MjksIDU2NTUsIDk4MzYyNiwgNDIxNjgsIDEyMTEzMSwgMTA1NSwgNzExNzEsIDcxODg4LCA2NjMxMCwgNzQwMzAsIAotICAgIDcwNTE2LCAxMjE0NiwgNzAzNjIsIDczOTU2LCAxMTYxOCwgMCwgNDI3MjAsIDkyOTQ5LCAxMDI3MiwgMTAzMDQsIDEwMzY4LCAKLSAgICA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDc0OTc4LCA2NDg3MCwgNzQxOTEsIDM0NjcsIDcxMDczLCA3ODgxLCAKLSAgICAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCA3MDAzNiwgCi0gICAgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTE3OTk1LCAwLCA5MjQwOSwgNzAwNTYsIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgCi0gICAgMTE5NTk2LCA5MDkxLCAxMDc5OCwgNzg2NjQsIDc4NTA4LCAxMDE4NiwgOTgzMjY1LCA3NzMyLCA5ODM3MjQsIDY0NTU2LCAwLCAKLSAgICA5ODM5NzksIDU2NjgsIDc0NDQ1LCA3NDk4MiwgNzQ2NDUsIDU2NzAsIDExMzc5NSwgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgCi0gICAgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgNzQ5ODEsIDEyNzQ5LCA3NDU1MSwgNjc3NTcsIDAsIDY2NDk2LCA0MzYxLCAKLSAgICAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIDEyODI4NiwgOTQwMDQsIDcwMzU5LCAwLCAzNTcxLCAxMzI0NywgNTg3NCwgCi0gICAgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCA3NDYyMSwgNzgyNjUsIDU1MywgMTEzNzY4LCAKLSAgICAxMjcwMTIsIDkzMDUzLCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDE5NDkxOSwgMTI3NDYsIDEyODY3MSwgNzAzMzgsIAotICAgIDExOTkyNCwgNTYzMywgMTE5OTI3LCA3NDI1OSwgOTQxMDIsIDk0MDk5LCA2NDkwNSwgOTQxMDUsIDk1MTIsIDk0MTAzLCAKLSAgICAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAxMjg4NjMsIDQxNTY0LCAxMjE1MTcsIDU1MjE5LCAxMjg4MzIsIAotICAgIDk4Mzg1MSwgMTk0ODc3LCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgCi0gICAgMTI4OTAzLCAxMjQ5MzYsIDEyODM5MCwgODMyMTUsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgCi0gICAgMzI4LCAxMjEwMzEsIDY4NzM2LCA2OTgxNSwgNTYzNiwgMTE5OTE3LCA1MzI5LCAxMjEyOTMsIDU2MzgsIDgzMTY2LCA3OTQwLCAKLSAgICA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDY4NzYzLCA2MjAzLCAKLSAgICA0MjQ3LCA3MTE2OSwgMTE5MjAsIDgyNzQsIDY4MjQwLCA5ODM2NTgsIDE2NTcsIDQxNTYxLCA2ODc3OCwgNzgyOTUsIDU2MzksIAotICAgIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCA5ODM2ODUsIDcxMTc5LCA0MjIyNywgNjgzMDEsIDgzMzIyLCA0MTYzNywgCi0gICAgNjc4NzIsIDEyMTEwNSwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIDU0ODYsIAotICAgIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDEyNjk5NCwgMTA1OCwgMCwgNjc2MzAsIAotICAgIDAsIDEyODkyNywgMTE0NCwgNzg3NTAsIDEyNzI5MywgNDIyMjgsIDk4MzcxNCwgNzM4OTAsIDExODk3MiwgMTI3MzUyLCAKLSAgICAyODAwLCA4MzIwOSwgNTY0NSwgNjQ5NjQsIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMTIxMzU2LCA1NjA4LCA2NTg5MCwgCi0gICAgNDM4MDgsIDE5NDk3MiwgNjc2MjEsIDY0OTMyLCA5MDAwLCA3MTIwNCwgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIAotICAgIDU2MTMsIDY2NDAxLCAxMjExNDUsIDAsIDU2MTAsIDk4MzIyNiwgNzExOTksIDY1ODI2LCAyMDY5LCAwLCAxMDc4NywgCi0gICAgNDM5OTksIDI5OTcsIDExOTkzMiwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIDI0MTIsIDgzMjA2LCAKLSAgICA4MTg2LCA5ODA3LCA3NDI2OSwgNjYyOTQsIDEzMTMwLCA2NTg3NCwgNzE4NTUsIDU4MDcsIDExMzY3OCwgMTAwMzAsIDUzMDYsIAotICAgIDEyMzY0LCAxMTg4NjMsIDkyOTcwLCAxMTcwNCwgODMyMDIsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCAxMjEwNjMsIAotICAgIDExNzA2LCA5NzEwLCAxMjUwMjIsIDgyOTg1LCAxMjA2NTUsIDQxMywgNjU2MjMsIDcxMTgsIDgzMTY3LCA5MTMzLCA3NDI2MiwgCi0gICAgOTE3OTY0LCAxMDQyLCAxMjUwNjgsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgMTIxMjY2LCAKKyAgICAxMDA1NSwgNzc5OTYsIDEwMTAzMywgOTgzMTczLCAxMTkyMjUsIDU2NTcsIDEwMDQ0MywgOTYyNiwgMTIxNDUzLCA3Nzk5NCwgCisgICAgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgMTIwNzk5LCA3MTg2MCwgOTE3OTM5LCA1NjUyLCAxMDk0NSwgMTk0NTk5LCAKKyAgICA2NjQ4NiwgOTgzMzYwLCAzNjYxLCA3ODYzLCAwLCA2ODA2OSwgMTAxMDg0LCA3MDMzMiwgMTI3MTk0LCA1NjU5LCAxOTQ2MDYsIAorICAgIDc4NjkyLCA2NjcyOSwgNTY1NSwgMTIxMDEyLCA0MjE2OCwgMTIxMTMxLCAxMDU1LCA3MTE3MSwgNzE4ODgsIDY2MzEwLCAKKyAgICA3NDAzMCwgNzA1MTYsIDEyMTQ2LCA3MDM2MiwgNzM5NTYsIDExNjE4LCA3MjcwOSwgNDI3MjAsIDkyOTQ5LCAxMDI3MiwgCisgICAgMTAzMDQsIDEwMzY4LCA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDc0OTc4LCA2NDg3MCwgNzQxOTEsIDM0NjcsIAorICAgIDcxMDczLCA3ODgxLCAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAKKyAgICAxOTQ5NzgsIDcwMDM2LCA2OTY5NiwgNjk3NjksIDY0NjU2LCA5MTc5OTUsIDAsIDkyNDA5LCA3MDA1NiwgNTY2NiwgNjUyMjcsIAorICAgIDUzMTgsIDYzOTk0LCAxMTk1OTYsIDkwOTEsIDEwNzk4LCA3ODY2NCwgNzg1MDgsIDEwMTg2LCA5ODMyNjUsIDc3MzIsIAorICAgIDk4MzcyNCwgNjQ1NTYsIDAsIDk4Mzk3OSwgNTY2OCwgNzQ0NDUsIDc0OTgyLCA3NDY0NSwgNTY3MCwgMTAwODMwLCAKKyAgICAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAxOTk1MiwgMTIwODA3LCA3NDk4MSwgMTI3NDksIDc0NTUxLCAKKyAgICA2Nzc1NywgMjI2MywgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMTI4Mjg2LCA5NDAwNCwgNzAzNTksIAorICAgIDAsIDM1NzEsIDEzMjQ3LCA1ODc0LCA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgNDMxOTIsIDc0NjIxLCAKKyAgICA3ODI2NSwgNTUzLCAxMTM3NjgsIDEyNzAxMiwgOTMwNTMsIDU4MjksIDk4MzI0NywgNDU4NywgNzgyODUsIDY1OTEyLCAKKyAgICAxOTQ5MTksIDEyNzQ2LCA3MjgwNiwgNzAzMzgsIDExOTkyNCwgNTYzMywgMTE5OTI3LCA3NDI1OSwgOTQxMDIsIDk0MDk5LCAKKyAgICA2NDkwNSwgOTQxMDUsIDk1MTIsIDk0MTAzLCAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAxMjg4NjMsIDQxNTY0LCAKKyAgICAxMjE1MTcsIDU1MjE5LCAxMjg4MzIsIDk4Mzg1MSwgMTI4MDI2LCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAxMTk5MTQsIAorICAgIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAxMjg5MDMsIDEyNDkzNiwgMTI4MzkwLCA4MzIxNSwgMjQyNSwgNjUxODIsIDEyODc2OSwgCisgICAgNDM2MzYsIDUyMjEsIDc4NDEwLCAzMjgsIDEyMTAzMSwgNjg3MzYsIDY5ODE1LCA1NjM2LCAxMTk5MTcsIDUzMjksIAorICAgIDEyMTI5MywgNTYzOCwgODMxNjYsIDc5NDAsIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIDMzNzMsIDI5ODYsIDc4MjkyLCAKKyAgICA3NDIyMywgMzQzNywgNjg3NjMsIDYyMDMsIDQyNDcsIDcxMTY5LCAxMTkyMCwgODI3NCwgNjgyNDAsIDE5NDc0MSwgMTY1NywgCisgICAgNDE1NjEsIDY4Nzc4LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDEyMTQyMCwgNzExNzksIDQyMjI3LCAKKyAgICA2ODMwMSwgODMxNjgsIDQxNjM3LCA2Nzg3MiwgMTIxMTA1LCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTAwNzMxLCAKKyAgICAxMTcwNSwgNTY0MiwgMTAwNzMyLCA1NDg2LCAxMDA3MzQsIDQzNTYsIDExNzEwLCAxMDA3MzksIDEyMDUxLCA2OTkzOCwgCisgICAgMTAwNzQwLCA1NjQxLCA4MjU5LCAxMjY5OTQsIDEwNTgsIDAsIDY3NjMwLCAxMDEwMTYsIDEyODkyNywgMTE0NCwgNzg3NTAsIAorICAgIDEyNzI5MywgNDIyMjgsIDk4MzcxNCwgNzM4OTAsIDExODk3MiwgMTAwNTUwLCAyODAwLCA4MzIwOSwgNTY0NSwgNjQ5NjQsIAorICAgIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMTIxMzU2LCA1NjA4LCA2NTg5MCwgNDM4MDgsIDEyODMzNSwgNjc2MjEsIAorICAgIDY0OTMyLCA5MDAwLCA3MTIwNCwgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIDU2MTMsIDY2NDAxLCAxMDA3MjEsIAorICAgIDEwMDcyNCwgNTYxMCwgMTAwNzI2LCA3MTE5OSwgNjU4MjYsIDIwNjksIDEwMDczMCwgMTA3ODcsIDQzOTk5LCAyOTk3LCAKKyAgICAxMTk5MzIsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCA1ODc1LCAyNDEyLCA4MzIwNiwgODE4NiwgOTgwNywgCisgICAgNzQyNjksIDY2Mjk0LCAxMzEzMCwgNjU4NzQsIDcxODU1LCA1ODA3LCAxMTM2NzgsIDEwMDMwLCA1MzA2LCAxMjM2NCwgCisgICAgMTE4ODYzLCA5Mjk3MCwgMTE3MDQsIDgzMjAyLCA5MjU4MywgMTAyMTEsIDAsIDEyMDU3OSwgMCwgMTIxMDYzLCAxMTcwNiwgCisgICAgOTcxMCwgMTI1MDIyLCA4Mjk4NSwgMTIwNjU1LCA0MTMsIDY1NjIzLCA3MTE4LCA4MzE2NywgOTEzMywgNzQyNjIsIAorICAgIDkxNzk2NCwgMTA0MiwgMTI1MDY4LCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIDQ5ODQsIDgzMTk4LCAKICAgICA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDgzMzk5LCAxMzA4LCAxMjEyNTgsIDI1MzQsIDgxMCwgMTI1MDg5LCAKLSAgICAxMjA5MzMsIDEyODAxNiwgNzE4NDksIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDEyMDE4NCwgMTIwNzM5LCAyMzY0LCAKKyAgICAxMjA5MzMsIDEyODAxNiwgNzE4NDksIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDcwNjk0LCAxMjA3MzksIDIzNjQsIAogICAgIDY2Mzg3LCA3NDQ3MCwgNjY2MTgsIDY1NjgwLCA2NjQxMSwgMTAwMjcsIDcxODQxLCAxMjgxNTQsIDEyMzM3LCA3NDI4MywgCiAgICAgMTI3MzY4LCA5ODMxNjcsIDI5ODAsIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MDY4LCA2MzYzLCAyNzQ4LCAxMjEwMjIsIAotICAgIDAsIDY1MDQxLCA5MjI3NiwgNDQwMTEsIDg3MzAsIDE5NDk5NywgMTI3ODU0LCA3ODMxMiwgNzI3NCwgMTE5MjUwLCA5Mjk4OCwgCi0gICAgNzI3NSwgNzgzMDQsIDkzNSwgMTI3MDUyLCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEyNzM2MywgNjUyNTMsIDY0MzAxLCAKKyAgICAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCA4NzMwLCAxOTQ5OTcsIDEwMDcxMSwgNzgzMTIsIDcyNzQsIDEwMDcxMiwgOTI5ODgsIAorICAgIDcyNzUsIDc4MzA0LCA5MzUsIDEwMDcxOSwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMDA0ODksIDY1MjUzLCA2NDMwMSwgCiAgICAgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCA3ODMwMCwgCi0gICAgMTk0OTk4LCAxOTQ5MTIsIDEwNjczLCA2ODc3OSwgNzI0OCwgNjg3ODYsIDQzNTE1LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgCi0gICAgMTY0OSwgNjc4NzYsIDk2NCwgMTIxMDM0LCA2NjQwMywgNzgyMjYsIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAwLCAKLSAgICA4MzM5OCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDY5OTA5LCA0MzU0NywgCi0gICAgODMwMjgsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMCwgNjk3NTksIDExMzQxLCA0MjQ5NCwgCi0gICAgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgNjQ3OCwgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCAKLSAgICA3MTA2LCA0ODc3LCAxMjkxMDgsIDYyMzgsIDAsIDEwNTQ4LCAxMjcwNDksIDQ0MDksIDAsIDAsIDY0Nzk4LCA3MDgwNSwgCi0gICAgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgNjY4NTEsIDkxNzYsIDkyODgyLCAxMjExNTMsIDY1MjMxLCAKLSAgICA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCAKLSAgICA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAxMjE0NDYsIDY4MTYzLCA1MzQwLCAKLSAgICAxMjA1NTksIDEyNzgyMCwgNDM2MzUsIDczOTI4LCAxMjUwMDEsIDcxMDY5LCA4MzMxOCwgMCwgODMzMTcsIDY1NDgyLCAKLSAgICAxMjEzOTQsIDkxNDIsIDAsIDY4NTA2LCAwLCAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAxMjY2NDgsIAotICAgIDcyNDM4LCA1MjksIDg1ODAsIDEyNzQ5MCwgMCwgMTA1ODYsIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgCi0gICAgNjg3NDQsIDk4MzgyNSwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDY3ODIxLCAxMjEyMDAsIDExMzc2LCA3NDM3OSwgMTA3MjEsIAotICAgIDY3NjY0LCAzNDM4LCA0MjA5NywgNjg4NjIsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgMTIwMTgzLCA0MTg3MywgCi0gICAgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODM5LCA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIAotICAgIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTI3OTM3LCA5ODMyMTYsIDUxNjEsIDEwNTcyLCAKLSAgICA5MTc1NTgsIDQyOTA2LCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyMDQwNiwgOTgzNjQzLCAxMjY2MDUsIDExMTY3LCAKLSAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIAotICAgIDExMzc2NiwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCA5MTc4NTUsIDExOTM4LCAxMjEzMDgsIDcyODUsIDk4MzU1NywgCi0gICAgMTE5NTc3LCA0MjY3OCwgNjY4NDIsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCAwLCAxMjkxNjgsIDEyODI2NywgCi0gICAgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCA2ODYyNCwgNzAyODAsIDgzMiwgMTIwNjkzLCAxMjA3NzAsIDc4NDczLCA2NjAwNywgCi0gICAgNzg0NzEsIDY1NzAzLCA3MTI1NiwgMTI4NTE3LCA0MjczMiwgNTE4MCwgOTI2OTksIDQxMzk1LCA0MTUzMCwgMTE2OTEsIAotICAgIDY0NzczLCA5MjIxNCwgNzQwMDIsIDEyNzc5MCwgMTIwNTQ4LCAxMjg2NDUsIDYzNDgsIDI0MywgMTMyMDAsIDEyMDE2MCwgCi0gICAgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAwLCA5MTc4NDQsIDQyODUsIAotICAgIDY2MTk1LCAxMjEzNzAsIDQyMzAsIDkyODg2LCA3MzY3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCA5ODMyNzEsIAotICAgIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCA3NDg1NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAxMjgzODYsIAotICAgIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCA3MDE1NSwgNzg2MjIsIDcwMDQ3LCAxMjcyNzMsIDYwMjIsIDE5NTAyMywgCi0gICAgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAxOTUwMjAsIDEyNjgyLCAxMDE2LCA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCAKLSAgICA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCA3MDg1NSwgMjA3NCwgMTEzNzQyLCA3ODI4MywgMCwgMTI0NTMsIDcwODQ3LCAKLSAgICA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCA3ODI2OCwgMCwgNjYyNzgsIDAsIDc4Mjc5LCAwLCAwLCAKLSAgICA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgMTI0NDksIDEyODU1MiwgNzEyMjQsIDQzODY4LCAKLSAgICA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMTEzNzY1LCAxMTkyNDksIDExMzcxNSwgMTE1OTUsIDY0ODkzLCAxMTg5MDUsIAotICAgIDQzNDM1LCAxMjQ5NjQsIDEyNTAzMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMTIwNjUwLCA1NDk0LCAKLSAgICA0NjM5LCAxMjc1NTksIDE5OTAsIDExMTA3LCA0NDk4LCA3NDE2OSwgNjc3MzYsIDgzMjczLCAxMjcyNzIsIDY5NzM0LCAKLSAgICAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgMTI4MTE3LCA0MzQyNCwgNzM5NTksIDEyNjQ2NCwgMjk1MCwgMTE5NTc5LCA2MjEwLCAKLSAgICA2NTc1MywgMzcwLCAxMjEzNjAsIDAsIDAsIDQ5NTMsIDE5NTAwOSwgMTIxMDU0LCAxMTM3MDgsIDAsIDY5MjMwLCAwLCAKLSAgICAxOTUwMTAsIDY1Njg4LCA3NDk1MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIAotICAgIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCA3MTMxNywgNjQ5MjMsIDEyMDU3MSwgCi0gICAgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCA5MTc3NzQsIDc0OTE0LCAzNzYxLCAwLCAKLSAgICAwLCA3MDA2OCwgMTIwNDA4LCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDk4MzI1NiwgMTI4Mzg5LCAwLCAwLCA5MDgsIAotICAgIDAsIDg2MTEsIDEyMTM4NCwgMCwgNzQ2NDIsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIDQxNTg2LCAKLSAgICAxMDUyNywgNzA0MjYsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDc0OTE3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCA3NDg4MywgCi0gICAgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjU5LCAxMjcxNjMsIDY4MTkzLCAzNDcsIDAsIAotICAgIDkxNzU0NCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDY4MDQ2LCAxMjE0MywgCi0gICAgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAKLSAgICAxMDY4MSwgMCwgMTIwOTc5LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgCi0gICAgNjYzODQsIDk1MTgsIDY2MDksIDEwNDM0LCA3MDg0NSwgMTEzMTksIDEwOTcsIDEyODk2NCwgOTE3NTY0LCA0MTczMCwgCi0gICAgMTI5MTgxLCAxMjE1MDEsIDczODQ3LCA3NDg0NSwgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMTk0NzgwLCAxOTQ3NjksIAotICAgIDEyMTQ5OSwgNDEyMDMsIDEyNzA1NiwgMTMxMTAsIDQxNzI2LCAxOTQ4NTYsIDY3MDc3LCAxMDAwLCA2OTY1MSwgMTI3NTA5LCAKLSAgICA0MTE0MCwgMTIwOSwgNzM5NzgsIDEyNTA1OSwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgOTgzOTY4LCAKLSAgICA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTE5OTA0LCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKLSAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIAotICAgIDkxNzYwMSwgMTI4ODMzLCA2NDM5OCwgNzExMjQsIDExOTk3MCwgMTIzMTEsIDExOTE4MSwgNzg3OTYsIDY4NzY4LCA3ODc5NCwgCi0gICAgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDExMzc5NywgMTI4NTc5LCAxMjI5MCwgMTIwMTY5LCAxMjkwOTMsIAotICAgIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDExMzY5NCwgOTYyNywgNDM2NDYsIDc4NTQyLCA3ODUzNSwgCi0gICAgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAxMTMwOCwgCi0gICAgMTE5OTk1LCA5ODM0OTMsIDExMzcwMiwgNjY4MzYsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgCi0gICAgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAKLSAgICAxMjAwMTUsIDYwNDEsIDEyMDUyMCwgNDE4OTksIDk4MzI4OCwgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgOTgzNTcwLCAKLSAgICA2NDMzMiwgMTIwOTc2LCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA2ODI0NiwgNzI3OSwgCi0gICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMTIxMTUyLCAxMjEzODEsIDk2NjAsIDkxNzkyOSwgMTMwMTIsIDQ1NzEsIAotICAgIDkxNzU4OCwgMCwgMTE4OTQwLCAxMjA3OCwgMjk3MCwgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIDEyMTI0MywgNzc4NDEsIAotICAgIDAsIDQxNTk5LCA3MDE1OSwgMTIxMzQyLCAxMjA4ODUsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgOTgzOTczLCA3ODMxMSwgNDIzOSwgCi0gICAgMTI4MDczLCAxMjc3OTksIDY2NTExLCA2ODA2NiwgMjYzNywgNjQ2MjksIDg0NjAsIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDAsIAotICAgIDY4MzEyLCA3ODQ4OSwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIAotICAgIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCA5Mjc3NywgNzM4NjQsIDk4MzIwMywgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAKLSAgICAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgCi0gICAgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIDY2ODUzLCA3Mzk2MywgNDE4NTUsIDQxODY3LCAKLSAgICA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIAotICAgIDYzODc2LCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAxOTQ3MTksIDkyNzE0LCAwLCAxMjc3ODIsIAotICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDEyNDk3MiwgNzg1MTEsIDMxNjEsIDI5NSwgNzEyNTcsIDAsIDkyMjIzLCAKLSAgICAxMjEzMjgsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzUwMSwgNjgyMTAsIDM5NzEsIDk4Mzk1OSwgCi0gICAgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDY4MDk1LCA2NjcsIDEyMzMyLCAKLSAgICA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIDk4MzI4MCwgNDE1OSwgOTgzNTYyLCAwLCA5ODE1LCA2Mzg4NCwgCi0gICAgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCAKLSAgICA2Mzg3MiwgMTIwOTQxLCA0MjQyMSwgMTk1MDM1LCA0MTcyMywgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgCi0gICAgNDE5MTMsIDYzODUyLCA2Njg2OSwgMTI4OTcxLCA0MjM0OCwgNzM4OTIsIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwMSwgCi0gICAgNjM4NTEsIDYzODUwLCA0MTkxMCwgMTI4NjM3LCA2Mzg0NiwgMjk3MiwgMTI5MzIsIDcyNjIsIDY5OTY4LCA2Mzg0OSwgCi0gICAgNjM4NDgsIDYzODQ3LCAxMTM3NDksIDY1NzAsIDgzMDIsIDcyNTksIDYzODQyLCA0MTc4LCAxMDc0NiwgNzI1MCwgMTMyMTQsIAotICAgIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMTI3NzgwLCA2OTk2OSwgMTEwNSwgNDE4MCwgMTI3Nzg2LCAxMjA5NCwgOTQ5NywgMCwgCi0gICAgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIDk5ODcsIDAsIDkyNzM5LCAxNjc4LCAxMzI3NCwgNTUyLCAKLSAgICAxMTg4MzQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCAKLSAgICA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIDk1NzQsIDEzODgsIAotICAgIDcxOTAyLCAwLCAxMDc3LCAxOTUwMDAsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgOTE3Nzg5LCAwLCA0Mjc3MywgCi0gICAgMTIxMzMxLCAwLCAwLCAxMTkyMjAsIDEyMDkxMiwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCAKLSAgICA1MzM0LCA2NTA4MSwgNDMyNDksIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAxMjUwMTcsIDY1MDksIDAsIDUzMjcsIDc4Nzc2LCAKLSAgICAxOTkwNywgNjM4NjksIDM0NzgsIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgCi0gICAgNjM4NjYsIDc4NjI2LCAxOTE1LCA0ODQ2LCA2Nzc1NSwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCAKLSAgICA2OTIzOCwgNjQ0MzgsIDEyMDcwLCA4NzYwLCAxMTE3LCAxMTM3NTAsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgCi0gICAgNjM4MzUsIDYzODM0LCA5ODM5NDcsIDc4MjQwLCAxMjIyNSwgNjM4MzgsIDYzODM3LCA5ODM4NTMsIDcwMTczLCA2MzgzMywgCi0gICAgNjA0MiwgNjYzNjAsIDgwODMsIDEyODE2NiwgOTgzNzMzLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzOTA0LCAKLSAgICA1MjI3LCA5MDQ3LCA2MzgyMiwgNzQ3OTcsIDYwOTEsIDAsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIAotICAgIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAKLSAgICAyMDYsIDcwMTI2LCA0OTM2LCA2NTE0NywgODE2OCwgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCAKLSAgICA2MzkzMiwgNzUwNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA3NzkzNCwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgCi0gICAgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDAsIDQ2MTgsIDQyMjA5LCAxMTEzNywgMTMxNjksIDUyOTAsIAotICAgIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCAKLSAgICA3MjgzLCAwLCA2Mzk3MCwgMTIxMTY1LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgCi0gICAgMTI4OTIwLCA3NDA4LCAxMTgwOSwgODMyMjAsIDEyMTE4MSwgMCwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIDEwODksIAotICAgIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgNzQ0OTQsIAotICAgIDEyNDYzLCAyOTk0LCAxMjUxMzYsIDExODgyNywgNjg1MjIsIDk2NjQsIDcwODM0LCA3Nzk0MCwgNjc4OTIsIDc3OTM4LCAKLSAgICA3NDM0MywgNjczNzAsIDAsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDEyNTgwLCA3ODUwNywgCi0gICAgNjExOCwgMjIyLCA5NzksIDM4ODQsIDk4MzM5NCwgNzQxNTEsIDgzMjI3LCA2NTAyLCA5ODM4NTUsIDExMDg1LCAxMjEyNjEsIAotICAgIDYzOTUxLCAxMjQ2NSwgOTE3ODYyLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgMTI0NjEsIDYzOTUwLCA2Mzg5NywgCi0gICAgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCAKLSAgICA5NDA3NiwgMTIxMDg2LCA5MjQ2NCwgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCAKLSAgICA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIAotICAgIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMCwgCi0gICAgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCA2ODA1NywgMjUzLCAwLCA2ODIwOCwgMTIwNDM5LCA5MjAzLCAKLSAgICA3NDIzMSwgMCwgMTE1MzAsIDY4NjM0LCA2ODY2OCwgMTIxMjQyLCAxMTEyNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgCi0gICAgNDIzNTQsIDEyODA5OSwgOTgzNjk4LCA3MDA0NCwgMTk1MDY1LCAwLCA4NDEzLCA2Njg0MSwgMCwgNTY5MywgNzI3MiwgMCwgCi0gICAgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIDE5NTA2MywgMCwgMCwgMCwgMTI2NjM5LCAxMjAwOTcsIDAsIDk0MDc4LCAKLSAgICA2Njg0MCwgMTI3MTY1LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA3ODM0NywgNzI3MCwgMCwgNjY2MDYsIAotICAgIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCAKLSAgICA2MzkwNiwgMTU5OCwgNjM5MDQsIDcxMTg3LCA3MDM5MywgNDE3MjksIDQ0MjMsIDEzMDcsIDExMzY5MiwgMTA1MTUsIAotICAgIDQxNTg5LCAxMjg2OTgsIDEyODkxOCwgNjIxOCwgOTI5MTcsIDE0MzAsIDAsIDEyNjUxMywgMTIwNjA2LCA3ODc1NCwgNTQxMywgCi0gICAgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MzMsIDQ1MTgsIAotICAgIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgNjcwOTMsIDI3MTAsIDk4MzU5MywgNjYyNzcsIDQxNzI0LCA2NzcxNiwgCi0gICAgNDMwNzMsIDQxNjkwLCAxMjQ3OSwgOTgzNjM1LCA4MzgwLCAxMjEwNzEsIDcxODUyLCA3MDA0NiwgMTYyOCwgMTIxMjI5LCAKLSAgICAxMjg4MTcsIDEyOTA2NywgNjUyNjIsIDYzMzMsIDEwNzgzLCAxMTE3MiwgMTIxNDczLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgCi0gICAgMCwgNTMzOSwgNzQzMjMsIDEyMDk0NiwgMTMwMDQsIDY2ODQzLCA0NDU3LCAwLCAxMjc3NTYsIDE5NDgxOCwgMTI3MTE2LCAKLSAgICA1Njg0LCA4Njc4LCAxMDkxNCwgNDM2MzIsIDU2ODksIDY1ODA3LCA3MDgxNCwgNjg0NjQsIDEyNjMzLCAxMjg3MCwgNjk3MDUsIAotICAgIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMTE5MDc2LCA3NDI1MSwgMCwgMTIwNjQ3LCAxMjg5MzAsIAotICAgIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCA3NDQwMywgOTgzODE4LCA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgCi0gICAgNDQ0OCwgMTE5MTUwLCAxMjE0MDYsIDgzMzQ5LCA3MDA0MywgMTMyMSwgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAxMjExODYsIAotICAgIDkxNzYwNywgMTI0OTU4LCAxMjcwNzksIDcxMTA2LCAxMjc4NTIsIDAsIDAsIDk4MzA3NSwgMTI1MDEsIDY0NjA0LCAKLSAgICAxMjg2NTcsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDk4MzcwNiwgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIAotICAgIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMTI3MTM3LCAxMjc4NTYsIDY5OTk1LCA0NjM2LCA1NTI2MiwgCi0gICAgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgOTgzNjk1LCAxMTM3ODAsIDAsIDExODk2OCwgMTIyNzcsIDEyMTIzOSwgCi0gICAgMTE5OTUsIDkyNTUzLCAxMjEwMDYsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDY4NzgwLCA5MjQyNiwgMTIxMjg1LCAKLSAgICA2NTMxLCA4MzA1MSwgMTI3ODQ2LCA0NzMsIDQzNDE1LCA5MjkzNiwgOTgzNjUwLCAxODczLCAxMDg3LCAxMjQ5NjYsIDAsIAotICAgIDc0MjgwLCA3ODUyNywgNjY0MzksIDQzMjE4LCA5ODMxMjMsIDE5NDcxNiwgNzIzNywgMTI1MDQsIDcxMTEzLCAxMjY1NTksIAotICAgIDEyODc0OCwgMTIwODg3LCA5NDg5LCAwLCA3MDg0MywgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIAotICAgIDQzMTkxLCAxMjgwMzAsIDEyODU3MSwgMTE1NCwgMzg1NywgMTIwNSwgMCwgMCwgNjA1NSwgMTI5NTgsIDEyMDcwNiwgCi0gICAgNzQxNjgsIDEyODM4OCwgNzA4NDYsIDQ0MjEsIDEwNTkyLCAwLCA0OTUsIDY2NDAwLCA0MTcxMiwgNzk4MywgNzA4MzMsIAotICAgIDkzOTk3LCA5ODMzMzIsIDYzNDcsIDc4NzE1LCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgNDM3LCA0MTcwOSwgNzM3NzIsIAotICAgIDcwODMyLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMTIxMzA5LCAwLCA0OTk5LCAxOTQ2NDIsIAotICAgIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMTIwNjAyLCAyNzM5LCAwLCA4MDQ0LCA3NDMxMywgMTk0NjQzLCA0MTc4OSwgCi0gICAgMTI4MTQyLCAxMDgwOSwgNjYyNzksIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAKLSAgICAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgOTgzODA0LCA5MjE4NiwgMTMyMjksIDcxODQ1LCAxMDU3NSwgNDMzOTksIDE5NDU3NywgCi0gICAgMCwgNDE3OTEsIDExMDQsIDAsIDk4MzcyNSwgMTA2NTUsIDk4MzMzNCwgOTgzNTYxLCAxMjAxNjQsIDAsIDEwODIsIAotICAgIDEyMTAyNCwgODQyOCwgNjU2OSwgMCwgMCwgNzg1MzQsIDY5ODQ5LCA2NzgzLCAxOTQ2NzEsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgCi0gICAgNDQwMjEsIDY0NTgsIDY0NzI4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIAotICAgIDEyMDY3NywgMTE4ODc2LCAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCAxMjg2MjcsIDQxNTQ1LCAxMjY0NjUsIAotICAgIDkyNDQ5LCAwLCAxMTIxNiwgMTIxMzA3LCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIDUxMjIsIDQxNTI3LCAKLSAgICA3MTkxMCwgNjYzMjAsIDcwMTYxLCA3NDkwNywgMCwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgNzM4NTcsIAotICAgIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAKLSAgICAxMjQ5MzksIDEyODQ2MiwgMTI4MDAxLCA0MzI0LCAxMjYsIDQyMjQ2LCA3NTAzMCwgNjk5ODQsIDY3NzI1LCA2NTkyNiwgCi0gICAgNzc0NCwgNjg4NTksIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIAotICAgIDE2MzMsIDAsIDEyNjYxNCwgNDc2MiwgMTEwMywgNzA4MjcsIDcwMTU3LCA0NzY1LCA5ODM0OTQsIDEzMDc4LCAwLCA0NzYwLCAKLSAgICA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAxOTQ2NTIsIDQyMjM2LCAxMjg4NjcsIDEyNzA3MiwgMTE1NDYsIAotICAgIDc0Nzk0LCAzMzcsIDEyMTE5NiwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAwLCA3NTA0NywgNDcwNywgNjgyMDYsIAotICAgIDEwMTQzLCA3ODgzLCAxMjE0NDQsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIDEzMDEwLCA2OTc5NiwgODMwNCwgOTI5ODIsIAotICAgIDE5NDY4OCwgMTE5NTc1LCAyMjkzLCA3MDE5NSwgNjY2NTQsIDEyOTA3NywgOTI2NzYsIDAsIDEzMDA4LCAxMjExOTQsIAotICAgIDQzODUsIDEyODczNiwgMTMwMTEsIDEyNTAwNCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgNzAzODgsIAotICAgIDk4MzI4MiwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgNzA3OTAsIDQxNzkyLCA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIAotICAgIDQzODIxLCA1NzA5LCAxMjgyOTYsIDcxMDc2LCA0MzgxNiwgOTgzMDg3LCA5ODM4OTYsIDEwNzksIDM4NjcsIDU3MDgsIDAsIAotICAgIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgMTIxMDkxLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgCi0gICAgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIDEyOTE3OCwgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCAKLSAgICA2ODY0NywgOTE3NTcyLCAxMDA1OCwgNjgwNTgsIDc0ODY3LCA2NzczMCwgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgCi0gICAgOTE3NTkxLCA5MTc1NDAsIDkxNzU5MywgMzM0MCwgNzQwMTcsIDkxNzU4NiwgMTIwOTk0LCAxMjkxNDEsIDEyMDU0MSwgCi0gICAgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgODY0LCA5ODMxNzEsIDExODkyNiwgCi0gICAgODk3MiwgMTE5OTE4LCA3ODQ5LCAxMjAwOTIsIDgzMTMwLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCA2Nzk4MiwgCi0gICAgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgCi0gICAgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCAKLSAgICA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIDEyOTEwNywgNzEwNzEsIAotICAgIDQxNTIyLCA0MTUyMywgNjg1MjMsIDk4Mzc3MiwgMTE4OTIzLCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIAotICAgIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCA0NDc5LCAxMTc4LCA2NTU4NiwgCi0gICAgNjgzMTEsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDEyNzg4NSwgOTgzNzY1LCA2NjgyOCwgMTI4OTcyLCAxMjc4MzksIAotICAgIDc0NTgwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgNjc0MDIsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCAKLSAgICA0MzE1MywgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgNjQ3MTAsIDEwNzQ3LCAxMjUsIAotICAgIDEyMDgwMywgNjQ4OTAsIDk4MzA2NCwgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCAKLSAgICA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIAotICAgIDYzNzQ5LCAxMjkwMjUsIDAsIDEyNzkyOCwgNjM3NTMsIDYzODAyLCA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIAotICAgIDYzODA1LCA2MzgwNCwgMTExNDAsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIDYyNjAsIDAsIDEyODM5MSwgOTQwNzQsIAotICAgIDYzNzkzLCAxMTk4OCwgMzg5OCwgOTIyNDYsIDEwMjAxLCAxMjIzOCwgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIAotICAgIDEwNDMxLCA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgOTgzMzMxLCA0MjIwMywgNzk1MCwgMzEyNCwgCi0gICAgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMTE0OCwgNjk3MywgMjc5MywgMTI0NzUsIDEyOTE4MCwgNzUwNTYsIDYzNzY5LCA5NTMwLCAKLSAgICAxMjEyNDgsIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCA3OTIsIDExMzY3NCwgNjQ4MDMsIAotICAgIDAsIDg3NDIsIDE5NTAyOSwgMTEwNTMsIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMTI4OTQyLCA3NTg4LCA2Mzc0OCwgMTY5MywgCi0gICAgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgNDIwNjMsIDEwOTAsIDY4ODAzLCAxMjA3NzgsIDExNjY1LCA3NDEzMywgCi0gICAgNDU1OCwgNjU2ODUsIDk1MjMsIDk4MzQ1MywgNjM4NTcsIDcxMjE2LCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCAKLSAgICA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCA2ODA3MSwgMzE3MCwgMTI0ODUsIDQzODkxLCAxMDg3MiwgNDM4OTIsIAotICAgIDEzMDA2LCA0MzkzMywgMTIwMDc0LCAwLCA5NDEsIDAsIDEyOTA3OSwgMTIwOTY3LCA2NTU0MSwgMTEwNjMsIDAsIDgyMjgsIAotICAgIDAsIDQyMDY1LCAxMjgzNjgsIDQzODg5LCA5NDAzOSwgMTI5Mjk5LCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDcwMjk1LCAKLSAgICAxMTk4NjMsIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgODM0MDksIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIAotICAgIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgOTgzNjIwLCAxMjc4MjksIDY1MzkzLCAKLSAgICAxMjA1OTIsIDc0MTM4LCA4MzUwNSwgOTI3NTEsIDc1MDE5LCA3NDEzOSwgNzg3NzcsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgCi0gICAgOTgzMjM4LCA2NTM5NiwgNzQ5OTgsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCA3NTAxMiwgMCwgMTA4ODgsIAotICAgIDEyMDkzNCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDY4MzQwLCAwLCAwLCA3MTIwMiwgMzMwNCwgNDI3NTMsIDkyNTg4LCAKLSAgICA3MDI5OCwgNzQ2NDMsIDE2MjcsIDAsIDEyNzc2NSwgMTk0NzM1LCA1MzcxLCAxMzExNiwgMCwgMTgyNiwgMTE4Nzk0LCAwLCAKLSAgICA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgNjgzMTcsIDkwMzUsIDExMTQxLCA5MTc5NzcsIDEyODAwNSwgMCwgOTIyMDcsIAotICAgIDY4MTI1LCA3NDg5OCwgMTY0LCA2ODMwOSwgOTQwNjcsIDk0MDAwLCA2OTU4LCAwLCA0MzExNiwgNjc3MTksIDcwMDE5LCAKLSAgICAxMzI0NSwgMCwgNjg4MDgsIDY2ODE4LCAwLCA3MDAzMSwgMTEwOTksIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgCi0gICAgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAKLSAgICAxMjUxMDIsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIAotICAgIDk4MzMyMSwgNzgxNDYsIDkyNjExLCAwLCA3MDIwNCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMjMwMywgMTEwNTcsIAotICAgIDkxNzk3NiwgMTMyNzYsIDEyNTEzMywgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMTI2NDc5LCAxMjc5MDQsIDEyMTIwMywgCi0gICAgMTIyMjksIDExNjgwLCA5Mjk1NiwgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMTk1MDg5LCAwLCAxMDQ3NiwgMzg1OCwgCi0gICAgNjQxNzUsIDM5MzIsIDY0OTU4LCAxMjA0MzIsIDk4MzY3OCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCA3NDkwOCwgCi0gICAgNDE3ODQsIDExOTE3NSwgNjQxNjMsIDc3OTk3LCAwLCA5MjY0NSwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAKLSAgICAxMjg2MzEsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgCi0gICAgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMTk0OTEzLCA3NDYsIAotICAgIDExODgyNiwgNzQ3ODMsIDAsIDEyMDE4LCA2NTI5NCwgMTI3NTQ1LCAxOTQ5MjUsIDY4ODM1LCA5ODM0ODgsIDQ0MjIsIAotICAgIDQ3MDgsIDM3OTksIDc0MjkyLCAxMTkzNTcsIDEyMTE0NiwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAxMjAzNzcsIDEyMTE1MSwgCi0gICAgMTM2NCwgMCwgODAzOCwgMTIwODgzLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgNzA0MjUsIDY3MzUsIDczOTc5LCAxMzE3NCwgCisgICAgMTk0OTk4LCAxMDA5MjksIDEwNjczLCA2ODc3OSwgNzI0OCwgNjg3ODYsIDQzNTE1LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgCisgICAgMTY0OSwgNjc4NzYsIDk2NCwgMTAwNjk2LCA2NjQwMywgNzgyMjYsIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAKKyAgICA5ODM0ODQsIDgzMzk4LCA0MzY4OSwgMTAwNzAxLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgNjk5MDksIAorICAgIDQzNTQ3LCA4MzAyOCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAxMjc1NDUsIDY5NzU5LCAKKyAgICAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgNzA4MTAsIDY0NzgsIDk4OTgsIAorICAgIDQxMDM5LCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgMTAwNjgxLCA2MjM4LCAxMDA2ODMsIDEwNTQ4LCAxMDA2ODUsIAorICAgIDQ0MDksIDEwMDY4NywgMTAwNjkwLCA2NDc5OCwgNzA4MDUsIDUzNDYsIDEyODI0MCwgOTQwNDcsIDYyMzcsIDQ4NzQsIAorICAgIDY2ODUxLCA5MTc2LCA5Mjg4MiwgMTIxMTUzLCA2NTIzMSwgNjU4ODQsIDEyNjc4LCA3ODc0OCwgMTE4OTEyLCAxMTM3OCwgCisgICAgNDQwMTgsIDQyNzg1LCAyNDA4LCAzMjUxLCAxMTIwMywgOTgzMTU5LCA1Njg1LCAwLCAyNDYxLCAxMTA1MiwgNzA5MSwgCisgICAgNTM0MiwgODMxNywgMTIxNDQ2LCA2ODE2MywgNTM0MCwgMTIwNTU5LCAxMjUyMDYsIDQzNjM1LCA3MzkyOCwgMTI1MDAxLCAKKyAgICA3MTA2OSwgODMzMTgsIDAsIDgzMzE3LCA2NTQ4MiwgMTIxMzk0LCA5MTQyLCA5ODMxNzcsIDY4NTA2LCAxOTUwODQsIAorICAgIDEwOTM4LCAwLCAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDEyNjY0OCwgNzI0MzgsIDUyOSwgODU4MCwgNjY3NjksIAorICAgIDEyNTA1OCwgMTA1ODYsIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgNjg3NDQsIDEyMDYyMCwgNDE1OTQsIAorICAgIDIyNSwgNDI4MjgsIDk4MzYzMiwgNjc4MjEsIDEyMTIwMCwgMTEzNzYsIDcyNzI5LCAxMDcyMSwgNjc2NjQsIDM0MzgsIAorICAgIDQyMDk3LCA2ODg2MiwgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIDc4MzA1LCAxMjAxODMsIDQxODczLCA3MTI3MSwgCisgICAgMTEzMjQsIDEyMDUzMSwgOTgzOTc2LCA4NDIwLCA2NDkxOCwgMTI4ODM5LCA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIAorICAgIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTAwNjcyLCAxMDA2NzUsIDUxNjEsIDEwNTcyLCAKKyAgICAxMDA2NzYsIDQyOTA2LCAxMDA2NzgsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTAwNjYwLCA5ODM2MTMsIDEyNjYwNSwgMTExNjcsIAorICAgIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDE5NDY5NSwgNjg2MzUsIAorICAgIDEwMDMxLCAxMTM3NjYsIDk4NzAsIDY3NzI2LCA4NjIwLCA2NTgyNCwgMTAwNjUxLCAxMTkzOCwgMTAwNjUzLCA3Mjg1LCAKKyAgICAxMDA2NTUsIDEwMDY1NCwgNDI2NzgsIDY2ODQyLCA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgNzA2OTMsIAorICAgIDEyODEzMSwgMTI4MjY3LCA3ODE2OSwgNjYxOTksIDEwMDY2NCwgMzYwOSwgNjg2MjQsIDcwMjgwLCA4MzIsIDEwMDY2NywgCisgICAgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgNzEyNTYsIDEyODUxNywgNDI3MzIsIDUxODAsIDkyNjk5LCAKKyAgICA0MTM5NSwgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAxMjc3OTAsIDEyMDU0OCwgMTI4NDc4LCA2MzQ4LCAKKyAgICAyNDMsIDEzMjAwLCAxMjAxNjAsIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCA0MzY4NywgCisgICAgMTIwODgwLCA5MTc4NDQsIDQyODUsIDY2MTk1LCAxMjEzNzAsIDQyMzAsIDkyODg2LCA3MzY3LCA0MzI1NiwgOTIzNTMsIAorICAgIDc1NjMsIDQyMzc2LCA5ODMyNzEsIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCA3NDg1NiwgNjU4OTMsIAorICAgIDEyMjA4LCA5OTczLCAxMjgzODYsIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAxMjUyMDUsIDcwMTU1LCA3ODYyMiwgCisgICAgNzAwNDcsIDEyNzI3MywgNjAyMiwgMTAwNDg1LCAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDE5NTAyMCwgMTI2ODIsIDEwMTYsIAorICAgIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDcwODU1LCAyMDc0LCAxMTM3NDIsIAorICAgIDc4MjgzLCAxMjg3MzcsIDEyNDUzLCA3MDg0NywgOTgzODI2LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgNzgyNjgsIAorICAgIDAsIDY2Mjc4LCA5ODM2MzMsIDc4Mjc5LCAwLCAxMjc5MzIsIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIAorICAgIDc4Mjc3LCAxMjQ0OSwgMTIyOTA4LCA3MTIyNCwgNDM4NjgsIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAxMTM3NjUsIAorICAgIDExOTI0OSwgMTEzNzE1LCAxMTU5NSwgNjQ4OTMsIDExODkwNSwgNDM0MzUsIDgzMzA5LCAxMjE0MTQsIDQ5OTMsIDEyOTM2MCwgCisgICAgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMTIwNjUwLCA1NDk0LCA0NjM5LCA3MDY2OCwgMTk5MCwgMTExMDcsIDQ0OTgsIAorICAgIDc0MTY5LCA2NzczNiwgNzA2NTgsIDEyNzI3MiwgNjk3MzQsIDI5NjAsIDczNzc5LCAxOTUwNzYsIDg5NjksIDEyODExNywgCisgICAgNDM0MjQsIDczOTU5LCAxMjY0NjQsIDI5NTAsIDExOTU3OSwgNjIxMCwgNjU3NTMsIDM3MCwgMTIxMzYwLCA5ODM2NTQsIAorICAgIDEyMDkyOCwgNDk1MywgMTk1MDA5LCAxMjEwNTQsIDExMzcwOCwgMTIyODg4LCA2OTIzMCwgMCwgMTIyOTAwLCA2NTY4OCwgCisgICAgNzQ5NTEsIDUwNjMsIDM1MTcsIDI5NjQsIDQzNjYzLCA5MTc3NjIsIDYzNDQsIDc0NzkxLCAxMDU2NiwgMTAxNDQsIDY2MzMzLCAKKyAgICA4MjUyLCA3MjksIDY2MDE2LCA3ODI1MywgMCwgNzEzMTcsIDY0OTIzLCA2Njc0NCwgNDM2NjksIDkwMzIsIDc4MjYzLCAKKyAgICA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCA5ODM4NzMsIDkxNzc3NCwgNzQ5MTQsIDM3NjEsIDAsIDAsIDcwMDY4LCAKKyAgICAxMjA0MDgsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgMTI3MjgyLCAxMjgzODksIDAsIDk4MzM0MiwgOTA4LCAwLCAKKyAgICA4NjExLCAxMDEwNzQsIDk4MzY5OSwgNzQ2NDIsIDQzNjkxLCA0MTE5NywgMTI4ODEyLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgCisgICAgNDE1ODYsIDEwNTI3LCA3MDQyNiwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgNzQ5MTcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIAorICAgIDc0ODgzLCAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDEyODM5NSwgMCwgNzg3NjcsIDExOTYyNiwgMTAwOTIyLCA2ODE5MywgCisgICAgMzQ3LCAwLCA5MTc1NDQsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDcyNzkyLCA3ODc0NCwgNjU1NzksIDEyOTgwLCA2ODA0NiwgCisgICAgMTIxNDMsIDY5NjU3LCA3ODUxMiwgMTI4NDkzLCAxMTE1MywgNDE4MDQsIDc4NTIzLCAxMTkxNjgsIDc4NTI1LCAwLCAKKyAgICAxMjg4NTksIDQxNTg0LCAxMDY4MSwgMCwgMTIwMDk0LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgNjY2NjEsIAorICAgIDEyNTAzOCwgNjYzMDYsIDY0NzE1LCA2NjM4NCwgOTUxOCwgNjYwOSwgMTA0MzQsIDcwODQ1LCAxMTMxOSwgMTA5NywgCisgICAgMTI4OTY0LCA5MTc1NjQsIDQxNzMwLCAxMjkxODEsIDkyNTEyLCA3Mzg0NywgNzQ4NDUsIDY1MTcyLCA0MTcyOCwgNDE3MjEsIAorICAgIDE5NDc4MCwgMTk0NzY5LCAxMjE0OTksIDQxMjAzLCAxMjcwNTYsIDEzMTEwLCA0MTcyNiwgMTI5MDcyLCA2NzA3NywgMTAwMCwgCisgICAgNjk2NTEsIDgzNTIwLCA0MTE0MCwgMTIwOSwgNzM5NzgsIDEyNTA1OSwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCAKKyAgICA0MTEzOCwgOTgzOTY4LCA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTE5OTA0LCA2NzY3MSwgCisgICAgNTUyNDgsIDEyMjM3LCA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIAorICAgIDc5MjYsIDAsIDkxNzYwMSwgMTI4ODMzLCA2NDM5OCwgNzExMjQsIDcxMjc0LCAxMjMxMSwgMTE5MTgxLCA3ODc5NiwgCisgICAgNjg3NjgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMTEzNzk3LCAxMjg1NzksIDEyMjkwLCAxMjAxNjksIAorICAgIDEyODIzMywgMTE5ODczLCAzOTM3LCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAxMTM2OTQsIDk2MjcsIDQzNjQ2LCA3ODU0MiwgCisgICAgNzg1MzUsIDk4MzIxMiwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgCisgICAgMTEzMDgsIDExOTk5NSwgOTgzNDkzLCAxMTM3MDIsIDY2ODM2LCA2NTMwNSwgNjUxMDAsIDQwMzEsIDQyNzk0LCAxMjAwMDMsIAorICAgIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIAorICAgIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAxMjA1MjAsIDQxODk5LCA5ODMyODcsIDgwMDIsIDEyODM2NywgNDM2NCwgNzM3MzIsIAorICAgIDk4MzU3MCwgNjQzMzIsIDEyMDk3NiwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgCisgICAgNjgyNDYsIDcyNzksIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDEwMTA4MCwgMTIxMzgxLCA5NjYwLCA5MTc5MjksIAorICAgIDEzMDEyLCA0NTcxLCAxMjgzMzEsIDAsIDExODk0MCwgMTIwNzgsIDI5NzAsIDEyOTEyMiwgMTA5MzMsIDAsIDc3ODcwLCAKKyAgICAxMjEyNDMsIDc3ODQxLCAxMDAzNTgsIDQxNTk5LCA3MDE1OSwgMTIxMzQyLCAxMDA3MDYsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgCisgICAgOTgzOTczLCA2Njc4MiwgNDIzOSwgMTI4MDczLCAxMjY1OTIsIDY2NTExLCA2ODA2NiwgMjYzNywgNjQ2MjksIDg0NjAsIAorICAgIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDkxNzk4OSwgNjgzMTIsIDc4NDg5LCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIAorICAgIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDkyNzc3LCA3Mzg2NCwgOTgzMjAzLCAKKyAgICA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgCisgICAgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgCisgICAgNjY4NTMsIDczOTYzLCA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIAorICAgIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgNjM4NzYsIDQxNTM2LCA5MTc1ODcsIDY2NzM4LCA5MjU4NywgMzQ1OSwgODk5NywgCisgICAgMTk0NzE5LCA5MjcxNCwgMTI3MjM4LCAxMzA2MCwgNzgzMDEsIDAsIDY2Mzc3LCA2OTc4MSwgMTIwMTU5LCAxMjQ5NzIsIAorICAgIDc4NTExLCAzMTYxLCAyOTUsIDcxMjU3LCAwLCA5MjIyMywgMTIxMzI4LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCAKKyAgICA2MzkwMiwgNDM1MDEsIDY4MjEwLCAzOTcxLCA5ODM5NTksIDcwMDYzLCAyOTUyLCA3ODc2NSwgMTEwMzgsIDEwOTAxLCAKKyAgICA2MzkwMCwgNjM4OTksIDYzODk4LCA2ODA5NSwgNjY3LCAxMjMzMiwgNjM4ODcsIDYwODYsIDQxNzIyLCAwLCA1MTcyLCAwLCAKKyAgICA5ODMyODAsIDQxNTksIDk4MzU2MiwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgNDExOTgsIDg1NTUsIDYzODc4LCAKKyAgICA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDEyMDk0MSwgNDI0MjEsIDEyOTMzNSwgNDE3MjMsIAorICAgIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIDQxOTEzLCA2Mzg1MiwgNjY4NjksIDEyODk3MSwgNDIzNDgsIAorICAgIDczODkyLCA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDEsIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDEyODYzNywgNjM4NDYsIAorICAgIDI5NzIsIDEyOTMyLCA3MjYyLCA2OTk2OCwgNjM4NDksIDQxMzg0LCA2Mzg0NywgMTEzNzQ5LCA2NTcwLCA4MzAyLCA3MjU5LCAKKyAgICA2Mzg0MiwgNDE3OCwgMTA3NDYsIDcyNTAsIDEzMjE0LCAxMDA0MSwgODEwNSwgNjM4OTIsIDEyNzc4MCwgNjk5NjksIDExMDUsIAorICAgIDQxODAsIDEyNzc4NiwgMTIwOTQsIDk0OTcsIDEyODM5NiwgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIAorICAgIDk5ODcsIDAsIDkyNzM5LCAxNjc4LCAxMzI3NCwgNTUyLCAxMTg4MzQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIAorICAgIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCAKKyAgICA3NDE1NCwgMTI4Mzg3LCA1NTM2LCA2NTU2OCwgOTU3NCwgMTM4OCwgNzE5MDIsIDk4MzkxNSwgMTA3NywgMTk1MDAwLCAKKyAgICA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDkxNzU0OSwgOTE3Nzg5LCAwLCA0Mjc3MywgMTIxMzMxLCAwLCAwLCAxMTkyMjAsIAorICAgIDEyMDkxMiwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCA1MzM0LCA2NTA4MSwgNDMyNDksIAorICAgIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCA5MjUxNSwgNjUwOSwgMTIwMTE3LCA1MzI3LCA3ODc3NiwgMTk5MDcsIDYzODY5LCAKKyAgICAzNDc4LCA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIDYzODY2LCA3ODYyNiwgCisgICAgMTkxNSwgNDg0NiwgNjc3NTUsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAKKyAgICAxMjA3MCwgODc2MCwgMTExNywgMTEzNzUwLCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgCisgICAgOTgzNTkyLCA3ODI0MCwgMTIyMjUsIDYzODM4LCA2MzgzNywgMTAwNDU4LCA3MDE3MywgNjM4MzMsIDYwNDIsIDY2MzYwLCAKKyAgICA4MDgzLCAxMjgxNjYsIDk4MzczMywgNjM4MjEsIDYzODIwLCA2MzgxOSwgNjM4MTgsIDk4MzMzMiwgNTIyNywgOTA0NywgCisgICAgNjM4MjIsIDc0Nzk3LCA2MDkxLCA5ODMzMjIsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIDYzODExLCAKKyAgICA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDc4ODc2LCA3ODAsIDIwNiwgCisgICAgNzAxMjYsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAKKyAgICA3NTA1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDY2ODExLCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAyMDg2LCAKKyAgICAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgNzI3OTEsIDQ2MTgsIDQyMjA5LCAxMTEzNywgMTMxNjksIDUyOTAsIDIwODksIAorICAgIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAKKyAgICAxMjAxMDksIDYzOTcwLCAxMjExNjUsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAKKyAgICAxMjg5MjAsIDc0MDgsIDExODA5LCA4MzIyMCwgMTIxMTgxLCAxOTQ3MTYsIDI5NjUsIDcyNTgsIDg4MDgsIDY2NTcyLCAKKyAgICAxMDg5LCA0MTg3LCA2MzkzNywgNDIxMTksIDQyMTIwLCAxMTEwNiwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDk4Mzg0OSwgCisgICAgNzQ0OTQsIDEyNDYzLCAyOTk0LCAxMjUxMzYsIDExODgyNywgNjg1MjIsIDk2NjQsIDcwODM0LCA3Nzk0MCwgNjc4OTIsIAorICAgIDc3OTM4LCA3NDM0MywgNjczNzAsIDcyNzE0LCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCAKKyAgICAxMjU4MCwgNzg1MDcsIDYxMTgsIDIyMiwgOTc5LCAzODg0LCA5ODMzMTksIDcyNzA2LCA4MzIyNywgNjUwMiwgOTgzNzYyLCAKKyAgICAxMTA4NSwgMTIxMjYxLCA2Mzk1MSwgMTI0NjUsIDkxNzg2MiwgMCwgMTI4NzgyLCA2Mzk0NiwgMTcwNywgNjM5MjQsIAorICAgIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIDYzOTQ4LCA2Mzk0NywgNjM5NDUsIDYwMzgsIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIAorICAgIDYzODk1LCA2NTgzOCwgMjI3NiwgNzc3NiwgOTQwNzYsIDEyMTA4NiwgOTI0NjQsIDY2NzkyLCA2OTczMCwgODAxLCA0MzE2NSwgCisgICAgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCAKKyAgICA2NjgwMCwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgCisgICAgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMTk0ODczLCA0MjY5NywgOTA2MSwgNTUzNCwgMTA2NzIsIDQ1MDIsIDY4MDU3LCAyNTMsIAorICAgIDAsIDY4MjA4LCAxMjA0MzksIDkyMDMsIDc0MjMxLCAxMDA3MDgsIDExNTMwLCA2ODYzNCwgNjg2NjgsIDEyMTI0MiwgCisgICAgMTExMjcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIDQyMzU0LCAxMjgwOTksIDEyMDEwNiwgNzAwNDQsIDEyNzExMCwgCisgICAgNjY4MDgsIDg0MTMsIDY2ODQxLCAwLCA1NjkzLCA3MjcyLCAxMjkzMDcsIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc0MzUwLCAKKyAgICAxOTUwNjMsIDAsIDAsIDAsIDExMzY2NSwgMTIwMDk3LCAxMjc5NjAsIDk0MDc4LCA2Njg0MCwgMTI3MTY1LCA2NjYwOCwgCisgICAgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA3ODM0NywgNzI3MCwgMCwgNjY2MDYsIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIAorICAgIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCA2MzkwNiwgMTU5OCwgNjM5MDQsIAorICAgIDcxMTg3LCA3MDM5MywgNDE3MjksIDQ0MjMsIDEzMDcsIDExMzY5MiwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDEyODkxOCwgCisgICAgNjIxOCwgOTI5MTcsIDE0MzAsIDAsIDEwMDcwMCwgMTIwNjA2LCA3ODc1NCwgNTQxMywgNzYxOSwgMzI1NSwgMzQ5MywgCisgICAgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCAxMDA3NDMsIDQ1MTgsIDEwOTkwLCA2NTA3MywgCisgICAgNTE2NywgNDQ4MSwgMzc3MSwgNjcwOTMsIDI3MTAsIDkxNzg0NywgNjYyNzcsIDQxNzI0LCA2NzcxNiwgNDMwNzMsIDQxNjkwLCAKKyAgICAxMjQ3OSwgOTgzNjM1LCA4MzgwLCAxMjEwNzEsIDcxODUyLCA3MDA0NiwgMTYyOCwgMTIxMjI5LCAxMjg4MTcsIDEyOTA2NywgCisgICAgNjUyNjIsIDYzMzMsIDEwNzgzLCAxMTE3MiwgMTIxNDczLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgMCwgNTMzOSwgNzQzMjMsIAorICAgIDEyMDk0NiwgMTMwMDQsIDY2ODQzLCA0NDU3LCAxMDA5MDEsIDEyNzc1NiwgMTk0ODE4LCAxMjcxMTYsIDU2ODQsIDg2NzgsIAorICAgIDEwOTE0LCA0MzYzMiwgNTY4OSwgNjU4MDcsIDcwODE0LCA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgNjUxODMsIAorICAgIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAxMTkwNzYsIDc0MjUxLCAxMjg5MDgsIDEyMDY0NywgMTI4OTMwLCA1MCwgCisgICAgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgNzQ0MDMsIDk4MzgxOCwgNzQyODQsIDY2NDY4LCA2NjkwNSwgMTMyNTksIAorICAgIDQ0NDgsIDExOTE1MCwgMTIxNDA2LCA4MzM0OSwgNzAwNDMsIDEzMjEsIDEwMDk4NywgMTA2NDAsIDExNTM5LCAxMTUxLCAKKyAgICAxMjExODYsIDkxNzYwNywgMTI0OTU4LCAxMjcwNzksIDcxMTA2LCAxMTg5NDksIDAsIDk4MzkyMCwgOTgzMDc1LCAxMjUwMSwgCisgICAgNjQ2MDQsIDEyODY1NywgMTE1MjcsIDExODg3MCwgODgxMiwgMTI1MTQxLCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCAKKyAgICA2NjQ2NywgMjEwNSwgODA4NywgNzI3MTIsIDY5NjMyLCA5ODk0LCAxMjcxMzcsIDEyNzg1NiwgNjk5OTUsIDQ2MzYsIAorICAgIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCA5ODM2OTUsIDExMzc4MCwgOTgzNDU2LCAxMTg5NjgsIAorICAgIDEyMjc3LCAxMjEyMzksIDExOTk1LCA5MjU1MywgMTIwNjc1LCAxMjE1OCwgNzAxNzAsIDg3NDEsIDEwMTk3LCA2ODc4MCwgCisgICAgOTI0MjYsIDExOTYxMCwgNjUzMSwgODMwNTEsIDEyNzg0NiwgNDczLCA0MzQxNSwgOTI5MzYsIDEyNDk0OSwgMTg3MywgCisgICAgMTA4NywgMTI0OTY2LCA3MTI3NSwgNzQyODAsIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTI3NzkyLCA3MjM3LCAKKyAgICAxMjUwNCwgNzExMTMsIDEyNjU1OSwgMTI4NzQ4LCAxMjA4ODcsIDk0ODksIDEyMDA2OSwgNzA4NDMsIDQzODQsIDc0MjIwLCAKKyAgICA2Mzg0NSwgMjA1OCwgNjk3NDEsIDEzMjk1LCA0MzE5MSwgMTI4MDMwLCAxMjg1NzEsIDExNTQsIDM4NTcsIDEyMDUsIAorICAgIDEyODk1NSwgMCwgNjA1NSwgMTI5NTgsIDEyMDcwNiwgNzQxNjgsIDEyODM4OCwgNzA4NDYsIDQ0MjEsIDEwNTkyLCAwLCAKKyAgICA0OTUsIDY2NDAwLCA0MTcxMiwgNzk4MywgNzA4MzMsIDkzOTk3LCA3MDY5NiwgNjM0NywgNzg3MTUsIDc2NTQsIDQxNzEwLCAKKyAgICA0MTk2LCAxOTQ3MDQsIDQzNywgNDE3MDksIDczNzcyLCA3MDgzMiwgMCwgOTQ2NSwgMTMyOTAsIDExOTE4MCwgNDk5NywgCisgICAgNjQzMDYsIDEyMTMwOSwgMCwgNDk5OSwgMTk0NjQyLCA2NzQwMSwgMTI2NTgyLCA0NzExLCAxMjA3NjksIDEwMDQ2OSwgCisgICAgMjczOSwgMCwgODA0NCwgNzQzMTMsIDEyODIzMCwgNDE3ODksIDEyODE0MiwgMTA4MDksIDY2Mjc5LCAxMjg3NDAsIDAsIAorICAgIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgOTgzODA0LCAKKyAgICA5MjE4NiwgMTMyMjksIDcxODQ1LCAxMDU3NSwgNDMzOTksIDEwMDQ2NywgMCwgNDE3OTEsIDExMDQsIDEyNzkyMiwgCisgICAgOTgzNzI1LCAxMDY1NSwgOTgzMzM0LCA5ODM1NjEsIDEyMDE2NCwgNjM5NjAsIDEwODIsIDEyMTAyNCwgODQyOCwgNjU2OSwgCisgICAgMTI4NDI5LCAwLCA3ODUzNCwgNjk4NDksIDY3ODMsIDE5NDY3MSwgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgCisgICAgNjQ3MjgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIDY0NjIzLCAxMjczLCA0MzQwNywgMTIwNjc3LCAxMTg4NzYsIAorICAgIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIDEyODYyNywgNDE1NDUsIDEyNjQ2NSwgOTI0NDksIDEyNTIwOSwgCisgICAgMTEyMTYsIDEyMTMwNywgMTk0ODUxLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDk4MzIyNSwgODUwMywgNTEyMiwgNDE1MjcsIAorICAgIDcxOTEwLCA2NjMyMCwgNzAxNjEsIDc0OTA3LCAxOTQ4NTYsIDAsIDQxNTM3LCA2NjQ1MywgODMwMywgODI4MiwgMTE4MTcsIAorICAgIDczODU3LCAxMDAwMywgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAxMjI5MjAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgCisgICAgNjU5MjEsIDY0Mjk5LCAxMjQ5MzksIDEyODQ2MiwgMTI4MDAxLCA0MzI0LCAxMjYsIDQyMjQ2LCA3NTAzMCwgNjk5ODQsIAorICAgIDY3NzI1LCA2NTkyNiwgNzc0NCwgNjg4NTksIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgCisgICAgMCwgNjU2MDAsIDE2MzMsIDEyODMwMSwgMTI2NjE0LCA0NzYyLCAxMTAzLCA3MDgyNywgNzAxNTcsIDQ3NjUsIDk4MzQ5NCwgCisgICAgMTMwNzgsIDk4MzI3MCwgNDc2MCwgNjM4MjcsIDIwNTAsIDEwODcxLCA0MzE5OSwgMTEwMiwgMTk0NjUyLCA2NTU1LCAKKyAgICAxMjg4NjcsIDEyNzA3MiwgMTE1NDYsIDc0Nzk0LCAzMzcsIDEyMTE5NiwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAKKyAgICA5ODM4NTYsIDc1MDQ3LCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyMTQ0NCwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgCisgICAgMTMwMTAsIDY5Nzk2LCA4MzA0LCA5Mjk4MiwgMTk0Njg4LCAxMTk1NzUsIDIyOTMsIDcwMTk1LCA2NjY1NCwgMTI5MDc3LCAKKyAgICA5MjY3NiwgMCwgMTMwMDgsIDEyMTE5NCwgNDM4NSwgMTAwNDYyLCAxMzAxMSwgMTI1MDA0LCA5MjU2OSwgMTE5MTYxLCAKKyAgICAxMzAwOSwgMTYwLCAyNjc3LCA3MDM4OCwgMTI3Nzg1LCA0MTc5MywgNjU3NjMsIDc0MjIxLCA3MDc5MCwgNDE3OTIsIAorICAgIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgNDM4MjEsIDU3MDksIDEyNTIyMiwgNzEwNzYsIDQzODE2LCA5ODMwODcsIAorICAgIDE5NTAwNSwgMTA3OSwgMzg2NywgNTcwOCwgMCwgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAKKyAgICAxMjEwOTEsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCA0MzQ1OSwgOTE3MywgMTIxMTUyLCAxMjEyMTksIDEzMTcwLCAxMjU0MCwgCisgICAgMTI1MjMzLCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCA2ODA1OCwgNzQ4NjcsIDY3NzMwLCAKKyAgICAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU0MCwgMTI4MzExLCAzMzQwLCA3NDAxNywgOTE3NTg2LCAKKyAgICAxMjA5OTQsIDEyOTE0MSwgOTI5NzksIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIAorICAgIDg2NCwgOTE3NTgyLCAxMTg5MjYsIDg5NzIsIDEwMDQ0NCwgNzg0OSwgMTIwMDkyLCA4MzEzMCwgMTMyNDAsIDE5NTA2OCwgCisgICAgNTE5MiwgNDMzOCwgNjc5ODIsIDEwOTQ4LCA2NjgyNSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgMTMyNjEsIDEzMTg5LCAKKyAgICAxMzE4OCwgOTM5OTMsIDcxODQ3LCA3NDQwLCAwLCAxMjAxNTMsIDk1NTMsIDE1OTAsIDYzNzc3LCA2Mzc3NiwgMTMxNzgsIAorICAgIDYzNzgyLCA2Mzc4MSwgNjM3ODAsIDYzNzc5LCAxNTgzLCAxMTk5MjMsIDEzMjYwLCA0NTUwLCAxMjA1OTgsIDY0MjA1LCAKKyAgICAxMjkxMDcsIDcxMDcxLCA0MTUyMiwgNDE1MjMsIDY4NTIzLCAxMjkxMDgsIDY2NzU5LCAxMTM1NCwgOTQwNzEsIDAsIAorICAgIDQyNzk1LCAxMjgwNjEsIDExOTE5NSwgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIAorICAgIDQ0NzksIDExNzgsIDY1NTg2LCA2ODMxMSwgNjY2ODEsIDExOTE5MywgNDYwMSwgMCwgMTI3ODg1LCAxOTUwMzgsIDY2ODI4LCAKKyAgICAxMjg5NzIsIDEyNzgzOSwgNzQ1ODAsIDY4MDksIDYzNzg2LCA2MDMxLCA2NzQwMiwgNjM3OTEsIDYzNzkwLCAxMTQ1LCAKKyAgICA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAxMjUxMjIsIAorICAgIDY0NzEwLCAxMDc0NywgMTI1LCAxMjA4MDMsIDY0ODkwLCA2NjgwNSwgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIAorICAgIDEwNzQsIDEzMjU4LCA5NTM2LCA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCAKKyAgICA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAxMjkwMjUsIDEyODc3MywgMTAxMDE0LCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAKKyAgICA3Mjc4NCwgNjgxMzMsIDQxOTMwLCA2MzgwNSwgNjM4MDQsIDExMTQwLCA2MzgwMSwgNDEwODIsIDgxNDAsIDYzNzk4LCAKKyAgICA2MjYwLCA3ODgyNiwgMTI4MzkxLCA2Njc2NSwgMTE0MzksIDExOTg4LCAzODk4LCA5MjI0NiwgMTAyMDEsIDEyMjM4LCAKKyAgICA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCAKKyAgICA5ODMzMzEsIDQyMjAzLCA3OTUwLCAzMTI0LCA2Mzc3MSwgNDI3ODcsIDQzODYsIDExMTQ4LCA2OTczLCAyNzkzLCAxMjQ3NSwgCisgICAgMTI1MjQxLCA3NTA1NiwgNjM3NjksIDk1MzAsIDEyMTI0OCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgCisgICAgNDU5NSwgNjM3NjAsIDc5MiwgMTEzNjc0LCA2NDgwMywgMTAwNTEyLCA4NzQyLCAxOTUwMjksIDExMDUzLCAxMjg3OTYsIAorICAgIDYzNzQ0LCAxMjgxMDcsIDEyODk0MiwgNzU4OCwgNjM3NDgsIDE2OTMsIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIAorICAgIDQyMDYzLCAxMDkwLCA2ODgwMywgMTIwNzc4LCAxMTY2NSwgNzQxMzMsIDQ1NTgsIDY1Njg1LCA5NTIzLCAxOTUwNTMsIAorICAgIDYzODU3LCA3MTIxNiwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgCisgICAgMzEzOSwgNjgwNzEsIDMxNzAsIDEyNDg1LCA0Mzg5MSwgMTA4NzIsIDQzODkyLCAxMzAwNiwgNDM5MzMsIDEyMDA3NCwgCisgICAgMTAwNjUwLCA5NDEsIDAsIDEyOTA3OSwgMTIwOTY3LCA2NTU0MSwgMTEwNjMsIDk4MzE5OCwgODIyOCwgNzM5ODgsIDQyMDY1LCAKKyAgICAxMjI4OTMsIDQzODg5LCA5NDAzOSwgMTI3MDQxLCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDcwMjk1LCAxMTk4NjMsIAorICAgIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgODM0MDksIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIDY1MzAwLCAKKyAgICAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgOTgzNjIwLCAxMjc4MjksIDY1MzkzLCAxMjA1OTIsIAorICAgIDc0MTM4LCA4MzUwNSwgOTI3NTEsIDc1MDE5LCA3NDEzOSwgNzg3NzcsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgMTI4MTQ5LCAKKyAgICA2NTM5NiwgNzQ5OTgsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCA3NTAxMiwgMTIwMTU3LCAxMDg4OCwgMTIwOTM0LCAKKyAgICA2NTI0MiwgMCwgMzMzMCwgMTI5NDE3LCAwLCA2ODM0MCwgMTI0OTMxLCA5ODM2MDUsIDcxMjAyLCAzMzA0LCA0Mjc1MywgCisgICAgOTI1ODgsIDcwMjk4LCA3NDY0MywgMTYyNywgMTI5MTIwLCAxMjc3NjUsIDE5NDczNSwgNTM3MSwgMTMxMTYsIDk4Mzc3NywgCisgICAgMTgyNiwgMTE4Nzk0LCA5ODM0OTcsIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCA2ODMxNywgOTAzNSwgMTExNDEsIAorICAgIDkxNzk3NywgMTI4MDA1LCAwLCA3MjczMywgNjgxMjUsIDc0ODk4LCAxNjQsIDY4MzA5LCA5NDA2NywgOTQwMDAsIDY5NTgsIAorICAgIDEwMDYzNCwgNDMxMTYsIDY3NzE5LCA3MDAxOSwgMTMyNDUsIDEwMDYzNywgNjg4MDgsIDY2ODE4LCAxMjgwMDksIDcwMDMxLCAKKyAgICAxMTA5OSwgMTI2NjYsIDEzMTc1LCAxMzIwNywgMTIwNDE0LCA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCA5ODM0NzMsIAorICAgIDY1NTA5LCAxMjkxOTIsIDc0NDksIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgMTI1MTAyLCA2MzgwOCwgOTA1NCwgOTcxLCAKKyAgICAxMzA2MiwgNzEwOTAsIDAsIDY1MTk1LCAxMDE2NCwgOTIyNTIsIDc0NDI4LCA5ODMzMjEsIDc4MTQ2LCA5MjYxMSwgMCwgCisgICAgNzAyMDQsIDEyNTEyOSwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMjMwMywgMTEwNTcsIDEyNDk5NCwgMTMyNzYsIDEyNTEzMywgCisgICAgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMTI2NDc5LCAxMjc5MDQsIDExOTA5MSwgMTIyMjksIDExNjgwLCA5Mjk1NiwgCisgICAgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMTk1MDg5LCA5ODM0OTUsIDEwNDc2LCAzODU4LCA2NDE3NSwgMzkzMiwgNjQ5NTgsIAorICAgIDEyMDQzMiwgOTgzNjc4LCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAzNjksIDc0OTA4LCA0MTc4NCwgMTE5MTc1LCA2NDE2MywgCisgICAgNzc5OTcsIDcyNzA3LCA5MjY0NSwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAxMjg2MzEsIDQxNzgxLCAKKyAgICAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgOTgzODcwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCA1Nzg4LCAKKyAgICA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAxOTQ5MTMsIDc0NiwgMTE4ODI2LCAKKyAgICA3NDc4MywgMCwgMTIwMTgsIDY1Mjk0LCAxMjQ5NDYsIDE5NDkyNSwgNjg4MzUsIDk4MzQ4OCwgNDQyMiwgNDcwOCwgMzc5OSwgCisgICAgNzQyOTIsIDExOTM1NywgMTIxMTQ2LCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDEyMDM3NywgMTIxMTUxLCAxMzY0LCAKKyAgICA5ODMzMTcsIDgwMzgsIDEyMDg4MywgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDcwNDI1LCA2NzM1LCA3Mzk3OSwgMTMxNzQsIAogICAgIDczOTY4LCAxMzIyNSwgMTk0OTAyLCA2OTgwOCwgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDcxNDc2LCA0Mjg1NSwgMTE4ODU2LCAKLSAgICA0Mjg2NiwgMCwgMCwgMTI3OTg2LCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgCi0gICAgOTgzOTIwLCA5ODM1NjgsIDEyODg3MSwgMTI3ODIxLCA2NzY4NSwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgMTA0MDQsIAotICAgIDEwMzQwLCAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgOTgzMjQ1LCAKLSAgICAxMjExNDksIDQxMzczLCA2ODQ4NiwgMTIzMDMsIDEyODQ3NiwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIDQxMzcxLCAKLSAgICAxMTY1NiwgMCwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgOTI3MzcsIDEwOTYsIDQzODUyLCAKLSAgICAxMjE0MzMsIDQyNjg4LCAxMjQ0MSwgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgOTI5MDIsIDgwMzIsIAotICAgIDEzMjQzLCAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAxMjExNTYsIDY0ODg0LCA5MjkwOSwgMTE5MzQ1LCA4NTk3LCAKLSAgICA3MTEwMCwgMTI5MDYyLCA5ODY0LCAwLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIAotICAgIDAsIDEwNDU5LCAxMTk4NzgsIDEyNDk0OSwgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCA0MTUzMywgNjYzMzcsIDEyODY2MywgCi0gICAgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDY3ODU2LCAwLCA0MzYzOCwgNzg1MzYsIDEyMTE4NywgNjI2MSwgCi0gICAgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIDEzMjkyLCAxMzIwNiwgMTI1MDY0LCAKLSAgICA5MTc3OTUsIDI5MjUsIDczODA5LCAxMzA1NiwgOTI5MTQsIDEzMjEyLCA0MzIzOCwgMTIxMzk2LCAxMzE5MCwgMTMxODcsIAotICAgIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAxMjEwODksIDUyNDIsIDExOTE3OSwgNjQ0NzYsIDE2OTQsIDgyMTYsIDcxMzY5LCAKLSAgICA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDk4MzcyOCwgNDM1NDQsIDEyNjQ2NiwgMCwgNDE0NDQsIDY1NjIxLCA2OTk1NSwgCi0gICAgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIDEyMzE0LCA2NTYxNiwgNTIzOCwgCi0gICAgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCA4Mjg2LCAxMjg1MzcsIDM5MzYsIAotICAgIDExOTMzMSwgMTE2OTksIDQxMzQ3LCA2OTczOSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIAotICAgIDc5NjksIDEyNzI2NiwgNzIxOSwgNzE4NzUsIDEyODI1MSwgMTIwNTA5LCA5MjkwNywgNjYyMjQsIDczNCwgMjk3OSwgCi0gICAgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIDcxMTkyLCAKLSAgICA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAKLSAgICAxMTEzNiwgNzE4NzYsIDExNTA2LCAxMjgzOTUsIDQyODQxLCAxMzI2NywgMTI4NDIxLCAwLCA0MTc3NSwgMCwgNzEzMCwgCi0gICAgNDE3NzMsIDAsIDEwNjYzLCA3MDEzMCwgMCwgOTgzOTc0LCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgCi0gICAgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDEyNzk2NCwgOTI2NDcsIDU4MDgsIDY1OTIyLCA2NzgxNCwgCi0gICAgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCA3MDAwNCwgNDMzODYsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgCi0gICAgMTk0OTMwLCA2ODM1OCwgNzE0ODMsIDY5Nzg5LCA0MjY1MywgODMxODEsIDY4MTAyLCA5Njk4LCA3ODE0LCA3MTA0NSwgCi0gICAgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIDY2NDE4LCA2NjYyMSwgNzQyMTksIDY2NDEyLCAKLSAgICAxMjg4MjIsIDExODk5NywgODAxMiwgNTY3NCwgMTIzNTMsIDY2NDIxLCAxMjM2MSwgNTY3NywgNTU4OCwgOTIzNDgsIAotICAgIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCA4MzExMywgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIAotICAgIDEyOTQsIDAsIDc4MDU5LCA5ODM5NjIsIDQyNTExLCAxNzI3LCAxMjA3MjUsIDQyNDM2LCAxMjE0MDAsIDEyMTE4MywgMCwgCi0gICAgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgCi0gICAgMTI5MDMyLCA5Mjg4OSwgNTg0MSwgNTgzNywgNTUyMzQsIDE5NDg2NCwgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDAsIAotICAgIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIDU4NjUsIDkzMDA5LCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCAKLSAgICA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCA5ODMyNTcsIDgzNDc4LCA5ODM5MjksIDgzMTg0LCAwLCA4NDcsIAotICAgIDEyODI0MiwgOTUyOSwgODMwMTgsIDY2NjU3LCA2OTgwLCA3ODQ4MywgNDM1MTAsIDc4MTIyLCA5MjIxOSwgMCwgNjc0MTEsIAotICAgIDc4NDg2LCA4MzAxNywgMTI3MjYwLCAxMjAwMzksIDQyNjgzLCA3MTg0OCwgOTgzMDU1LCA3MTE0LCAxMjY1MjEsIDAsIAotICAgIDQzMTkwLCA2NTQ2MywgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgNzUwNTksIAotICAgIDE5OTYzLCA1Njk4LCAxOTQ3NjgsIDk4MzI3MiwgOTI5MzMsIDcxODg3LCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKLSAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDcwMzA0LCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIAotICAgIDEwNTY4LCAwLCA5ODM2MTgsIDI4NjksIDkxNzg0MywgNDEwMTUsIDc0NDczLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgCi0gICAgNDE4MDIsIDk4MzY1MiwgNDI2MDgsIDc4NDY4LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIAotICAgIDExNzAsIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCA4MzI0NywgMTE2NjEsIDgxMjIsIAotICAgIDU4MTgsIDgzMjQ1LCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgOTgzOTY2LCAwLCAKLSAgICA4MDcsIDQzMDc5LCA3ODA5MiwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDEyMDg2MywgNDIxNTUsIDk4MzMxOSwgNDEzNTYsIAotICAgIDc0MTEwLCAxMTg4MDEsIDcxMDQzLCAxMjAwODAsIDg2NzYsIDk4MzI5MywgOTQwMDIsIDU1ODIsIDQ1MSwgNjM5NDEsIAorICAgIDQyODY2LCAxMDEwNzcsIDAsIDEyNzk4NiwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAKKyAgICAxMTkzNTQsIDE5NDk0MCwgOTgzNTY4LCAxMjcyNTMsIDEyNzgyMSwgNjc2ODUsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIAorICAgIDEwNDA0LCAxMDM0MCwgNDE0NzMsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgCisgICAgOTgzMjQ1LCA3MDY4NCwgNDEzNzMsIDY4NDg2LCAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgCisgICAgNDEzNzEsIDExNjU2LCA5ODM2OTEsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDkyNzM3LCAKKyAgICAxMDk2LCA0Mzg1MiwgMTIxNDMzLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIAorICAgIDkyOTAyLCA4MDMyLCAxMzI0MywgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMTIxMTU2LCA2NDg4NCwgOTI5MDksIAorICAgIDExOTM0NSwgODU5NywgNzExMDAsIDEyNzU1OSwgOTg2NCwgOTgzOTQzLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCAKKyAgICA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDcyODMwLCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIAorICAgIDQxNTMzLCA2NjMzNywgMTI4NjYzLCA5MjE4NCwgOTgzODYwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCA2Nzg1NiwgMCwgCisgICAgNDM2MzgsIDc4NTM2LCA3MjcxOSwgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIAorICAgIDEzMjkyLCAxMzIwNiwgMTI1MDY0LCA5MTc3OTUsIDI5MjUsIDczODA5LCAxMzA1NiwgOTI5MTQsIDEzMjEyLCA0MzIzOCwgCisgICAgMTIxMzk2LCAxMzE5MCwgMTMxODcsIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAxMjEwODksIDUyNDIsIDExOTE3OSwgNjQ0NzYsIAorICAgIDE2OTQsIDgyMTYsIDcxMzY5LCA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDE5NDYyOSwgNDM1NDQsIDEwMDQ0MSwgMCwgCisgICAgNDE0NDQsIDY1NjIxLCA2OTk1NSwgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMDA5MjQsIAorICAgIDEyMzE0LCA2NTYxNiwgNTIzOCwgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCAKKyAgICA4Mjg2LCAxMjEyOTIsIDM5MzYsIDExOTMzMSwgMTE2OTksIDQxMzQ3LCA2OTczOSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAKKyAgICAxMDA0OTAsIDQzNzksIDEzMjM5LCAxMjY5MiwgNzk2OSwgMTI3MjY2LCA3MjE5LCA3MTg3NSwgMTI4MjUxLCAxMjA1MDksIAorICAgIDkyOTA3LCA2NjIyNCwgNzM0LCAyOTc5LCAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgCisgICAgNDE0NzcsIDExOTI1NiwgNzExOTIsIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgCisgICAgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIDExMTM2LCA3MTg3NiwgMTE1MDYsIDY1OTM0LCA0Mjg0MSwgMTMyNjcsIDEyODQyMSwgCisgICAgMTI0OTg4LCA0MTc3NSwgMCwgNzEzMCwgNDE3NzMsIDkxNzg4OCwgMTA2NjMsIDcwMTMwLCAxMjUyMjUsIDk4Mzk3NCwgCisgICAgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAKKyAgICAxMDA0OTMsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgNjc4MTQsIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgNzAwMDQsIAorICAgIDQzMzg2LCA2ODA5NywgNjQ1NzUsIDEyNjYzNywgMTE5NjUsIDcwNzIwLCA2ODM1OCwgNzE0ODMsIDY5Nzg5LCA0MjY1MywgCisgICAgODMxODEsIDY4MTAyLCA5Njk4LCA3ODE0LCA3MTA0NSwgMTE5NjUxLCAxMjg1MTQsIDkxNzkxNSwgNDE5MjEsIDExODg1OCwgCisgICAgOTc1NiwgNjk4NSwgNjY0MTgsIDY2NjIxLCA3NDIxOSwgNjY0MTIsIDEyODgyMiwgNzA3MTgsIDgwMTIsIDU2NzQsIDEyMzUzLCAKKyAgICA2NjQyMSwgMTIzNjEsIDU2NzcsIDU1ODgsIDkyMzQ4LCA0MTkyNSwgMTI4MTI0LCA0MTkyMCwgNTY3MywgODMxMTMsIDU2NzYsIAorICAgIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAxMjk0LCAxMjA4NzgsIDc4MDU5LCA5ODM5NjIsIDQyNTExLCAxNzI3LCAKKyAgICAxMjA3MjUsIDQyNDM2LCAxMDA0OTcsIDEyMTE4MywgMCwgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIAorICAgIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgMTIwMDg2LCA5Mjg4OSwgNTg0MSwgNTgzNywgNTUyMzQsIDE5NDg2NCwgCisgICAgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDk4Mzg0MCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgCisgICAgNTg2NSwgOTMwMDksIDc5NTYsIDU5OCwgOTgzMjYwLCA2NDY0OSwgNTgwNiwgNDIzOTgsIDAsIDkwMzcsIDU2NzEsIAorICAgIDEyMDA0MSwgOTgzMjU3LCA4MzQ3OCwgOTgzOTI5LCA3MTI2NiwgOTE3NjE4LCA4NDcsIDEyNTA2NSwgOTUyOSwgODMwMTgsIAorICAgIDY2NjU3LCA2OTgwLCA3ODQ4MywgNDM1MTAsIDc4MTIyLCA5MjIxOSwgMCwgNjc0MTEsIDc4NDg2LCA4MzAxNywgMTI3MjYwLCAKKyAgICAxMjAwMzksIDQyNjgzLCA3MTg0OCwgMTAxMDk1LCA3MTE0LCAxMjY1MjEsIDAsIDQzMTkwLCA2NTQ2MywgMTU1NCwgNzA2NTcsIAorICAgIDQyNjExLCA0MjU2MywgMTAxMDcxLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgNzUwNTksIDE5OTYzLCA1Njk4LCAKKyAgICAxOTQ3NjgsIDEyMDczMCwgOTI5MzMsIDcxODg3LCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCA2ODE0MSwgODM3MiwgCisgICAgMTAwODAwLCA2NTExNiwgMCwgNzAzMDQsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgMTA1NjgsIAorICAgIDkxNzU2NSwgMTI3NDAwLCAyODY5LCA5MTc4NDMsIDQxMDE1LCA3NDQ3MywgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAKKyAgICA5ODM2NTIsIDQyNjA4LCA3ODQ2OCwgOTg4NCwgNDc1OSwgNzM3NjgsIDEyMDI5NiwgMTAyNjYsIDQxMzU5LCAxMTcwLCAKKyAgICA0MzM2NSwgNjk4MTAsIDczOTA4LCAxNjA5LCA5MDIsIDkyNzczLCA2MzkzNiwgODMyNDcsIDExNjYxLCA4MTIyLCA1ODE4LCAKKyAgICA4MzI0NSwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDk4Mzk2NiwgMTIxMDI4LCA4MDcsIAorICAgIDQzMDc5LCA3ODA5MiwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDEyMDg2MywgNDIxNTUsIDEyODk1MSwgNDEzNTYsIAorICAgIDc0MTEwLCAxMTg4MDEsIDcxMDQzLCAxMjAwODAsIDg2NzYsIDEwMDUxOSwgOTQwMDIsIDU1ODIsIDQ1MSwgNjM5NDEsIAogICAgIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDEyODUyMSwgNzg2ODEsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAotICAgIDEyODg1MywgNzQ5MzMsIDcwMzQyLCAxMTAwNSwgMTk0Njk5LCA2NjY1NiwgNjYwNDQsIDE5NDYzNiwgMTIwMDc5LCAKLSAgICAxMjg3OTMsIDAsIDQzMzkzLCAxMDA5NCwgNzAxNjQsIDExNTI5LCAxMDg1NywgOTI5NDQsIDY2NDM2LCA2NTQ2LCA5MywgCi0gICAgODEwMiwgNjczMjMsIDY4NDA1LCAwLCAxOTQ3MTQsIDgxNzEsIDExODg4OCwgMTE5MDk3LCA4Mjk5NiwgOTE3NTQzLCAzODMsIAotICAgIDcxNTQsIDQxNjU2LCA0MzQ5NSwgOTQwNDAsIDY3MTYyLCA1MTg3LCA3MTI5NiwgNzEwODYsIDExMjg2LCA2ODYyMCwgCi0gICAgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAxMjczNzcsIDQxMDA1LCA5ODM4MTAsIDAsIDEyODQ3MSwgODI5MiwgMTI1MTA4LCAKLSAgICA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCA3NDkxMiwgMTI3OTc0LCAKLSAgICAxMDYzMSwgMTEyNDQsIDc5NzIsIDY4MDQyLCA3ODc4NSwgMCwgNzkwMCwgMTI4NTkwLCAxMTMwOSwgMzgwNiwgNDE5OCwgCi0gICAgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgMCwgMTI5MzEsIDEyMTExMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAKLSAgICA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDEyNzkyMCwgMTk0NzEzLCAxMjgzNiwgMCwgCi0gICAgMTEzODAwLCA3NDM0MiwgODU5MywgMCwgMCwgNjg0NDUsIDEzMjU1LCAxMjEzMzMsIDEyODg0MywgNzQ2NCwgMCwgNjU4NjUsIAotICAgIDAsIDE5NDY1MCwgMTI3MTQ0LCA5MjM5NSwgOTM0MiwgMTIwNDY0LCA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgCi0gICAgNDEwMDcsIDc0Mzc1LCA5ODM3MDEsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIDgzNTAxLCAwLCA4MzI1NywgNjk3MjQsIDQwOTkyLCAKLSAgICA5MjI2NCwgMTE5MTM2LCA2ODY1MywgNDM1NTgsIDU1MjIsIDc1MDI2LCA2MSwgMTIwOTU5LCA3NDEwNSwgMzYzMywgCi0gICAgMTIwMDgyLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgODMyODEsIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIAotICAgIDI3ODQsIDQyNzQzLCA3MTA3OCwgODEyNiwgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIDQxMDAyLCA0MDk5OSwgCi0gICAgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAxMTg5NDQsIDY0NDE3LCAKLSAgICA3NDgxNywgMTI3NDY1LCA2NDczNywgNzQ4NTMsIDk4MzY1OSwgODkzMCwgNjY2NzgsIDY3MjE2LCAxMTkzLCAxMDA1NiwgCi0gICAgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAxMjA5OTIsIDEyMTE3NSwgNzc0MywgODM1MDIsIDEyNDk5NiwgNzc5MDQsIAotICAgIDc3OTEzLCA3NzkwNSwgOTAzNCwgNjAzOSwgMTI5MTM5LCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIAotICAgIDAsIDAsIDE5NDYzNywgNDI4MTUsIDkyOTg0LCA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCAKLSAgICA5MTEsIDc1MzksIDAsIDQwOTYzLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgCi0gICAgMTI3NDczLCA2NTMzMCwgNDI4MTIsIDk4MzIxNSwgMCwgMTIzMjYsIDcxMDgxLCAxOTQ2MzgsIDQyODA4LCAxMjgzMzcsIAotICAgIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDk4Mzg5MiwgMTIxMDUwLCA2NjgzOSwgMCwgMCwgMTIxMDA0LCA0MzcwMiwgOTgzMTQ4LCAKLSAgICA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgODM1MDMsIDg2NDQsIDEyMTIyNywgODMzMzIsIDExMTg2LCA3NDI5NiwgCi0gICAgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgNjY2NDcsIDExODkzOSwgCi0gICAgODc2MSwgMTI5NDIsIDU3NDgsIDkyNzEzLCAxMDc3MywgNzA4NjgsIDgzMTc0LCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgCi0gICAgODUyMCwgMTMxNDYsIDEyNzA5NiwgNjM5MzEsIDgzMjc1LCA2NTkwMiwgMjg4MiwgODMzMzQsIDAsIDEyODQzLCA0NTIwLCAKLSAgICAxMjAzNDUsIDkyNDU5LCAwLCA5ODM2NjAsIDAsIDczODYwLCA4MzMzNSwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgCi0gICAgNzA4NzEsIDAsIDkxNzg2NCwgNDM2NzksIDEyMTAyNiwgNjUxMTcsIDkyMjcwLCAwLCAxMDQyNywgMTIxNTA2LCAzODQ0LCAKLSAgICA2ODQyLCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgOTMwMzAsIDEyODc4OSwgOTgzNjM4LCA5MjkyOCwgNzgzLCAxOTQ5MzUsIAorICAgIDEyODg1MywgNzQ5MzMsIDcwMzQyLCAxMTAwNSwgMTk0Njk5LCA2NjY1NiwgNjYwNDQsIDE5NDU4NiwgMTIwMDc5LCAKKyAgICAxMjcyNDksIDEyMDc5NywgNDMzOTMsIDEwMDk0LCA3MDE2NCwgMTE1MjksIDEwODU3LCA5Mjk0NCwgNjY0MzYsIDY1NDYsIAorICAgIDkzLCA4MTAyLCA2NzMyMywgNjg0MDUsIDAsIDE5NDcxNCwgODE3MSwgMTE4ODg4LCAxMTkwOTcsIDgyOTk2LCA5MTc1NDMsIAorICAgIDM4MywgNzE1NCwgNDE2NTYsIDQzNDk1LCA5NDA0MCwgNjcxNjIsIDUxODcsIDcxMjk2LCA3MTA4NiwgMTEyODYsIDY4NjIwLCAKKyAgICA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDEyNzM3NywgNDEwMDUsIDk4MzgxMCwgNDMyMDUsIDEyMDgyOSwgODI5MiwgCisgICAgMTI1MTA4LCA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCA3NDkxMiwgCisgICAgMTI3OTc0LCAxMDYzMSwgMTEyNDQsIDc5NzIsIDY4MDQyLCA3ODc4NSwgMCwgNzkwMCwgMTI4NTkwLCAxMTMwOSwgMzgwNiwgCisgICAgNDE5OCwgNDI3MjUsIDk4MzMxMSwgNjc2NTYsIDk5OTUsIDEyMDA3MiwgOTI1NTIsIDAsIDEyOTMxLCAxMjExMTAsIDQyNjg0LCAKKyAgICA3NDI4NSwgMjA4OCwgNjQyMTMsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIDc0NzcxLCAxMjc5MjAsIDE5NDcxMywgCisgICAgMTI4MzYsIDEyNTIxNCwgMTEzODAwLCA3NDM0MiwgODU5MywgMTIwNjQwLCAwLCA2ODQ0NSwgMTMyNTUsIDEyMTMzMywgCisgICAgMTI4ODQzLCA3NDY0LCAxMDEwNjYsIDY1ODY1LCAwLCAxMjg1MzUsIDEyNzE0NCwgOTIzOTUsIDkzNDIsIDEyMDQ2NCwgCisgICAgNzAzNzYsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIDQxMDA3LCA3NDM3NSwgOTgzNzAxLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAKKyAgICA4MzUwMSwgMCwgODMyNTcsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIDExOTEzNiwgNjg2NTMsIDQzNTU4LCA1NTIyLCA3NTAyNiwgCisgICAgNjEsIDEyMDk1OSwgNzQxMDUsIDM2MzMsIDEyMDA4MiwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgNzgyODEsIDk3NzEsIDgzMjgxLCAKKyAgICAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgNzEwNzgsIDgxMjYsIDY2NDgzLCAwLCAxOTQ2NjIsIDQ0MSwgCisgICAgNDI2MjEsIDcwNjYwLCAwLCA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCAKKyAgICA2NTgzNCwgODMyNCwgMTE4OTQ0LCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDc0ODUzLCA5ODM2NTksIDg5MzAsIAorICAgIDY2Njc4LCA2NzIxNiwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMTIwOTkyLCAxMjExNzUsIAorICAgIDc3NDMsIDgzNTAyLCAxMjQ5OTYsIDc3OTA0LCA3NzkxMywgNzc5MDUsIDkwMzQsIDYwMzksIDEyOTEzOSwgMTAwNzUsIAorICAgIDk4Mzc2NSwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIDAsIDAsIDE5NDYzNywgNDI4MTUsIDkyOTg0LCA0MTk2NiwgMCwgCisgICAgMTI3NDcxLCAxMjUxODgsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgOTgzNDg3LCA0MDk2MywgMTAwNDQ3LCAKKyAgICA2NTE1OSwgNjQzOTAsIDAsIDk4MzE2MCwgNTUyMCwgMTE2NjIsIDEyNzQ3MywgNjUzMzAsIDQyODEyLCAxMTk5MTIsIAorICAgIDEyNjY0NywgMTIzMjYsIDcxMDgxLCAxOTQ2MzgsIDQyODA4LCAxMjgzMzcsIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDk4Mzg5MiwgCisgICAgMTIxMDUwLCA2NjgzOSwgMCwgMCwgMTIxMDA0LCA0MzcwMiwgMTAwODA3LCA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgCisgICAgODM1MDMsIDg2NDQsIDEyMTIyNywgODMzMzIsIDExMTg2LCA3NDI5NiwgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgCisgICAgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgNjY2NDcsIDExODkzOSwgODc2MSwgMTI5NDIsIDU3NDgsIDkyNzEzLCAKKyAgICAxMDc3MywgNzAyMDYsIDgzMTc0LCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgODUyMCwgMTMxNDYsIDcyODA1LCA2MzkzMSwgCisgICAgODMyNzUsIDY1OTAyLCAyODgyLCA4MzMzNCwgMTI4Mjg1LCAxMjg0MywgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgMTI5MDkyLCAKKyAgICA5ODM2NjAsIDEyMDA2OCwgNzM4NjAsIDgzMzM1LCAxMjgyODksIDY0MzQ1LCA5ODM1NTQsIDkyMDEsIDEyODMxNCwgNzA4NzEsIAorICAgIDk4MzgwOSwgOTE3ODY0LCA0MzY3OSwgMTIxMDI2LCA2NTExNywgOTIyNzAsIDk4MzYzNiwgMTA0MjcsIDEyMTUwNiwgMzg0NCwgCisgICAgNjg0MiwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDkzMDMwLCAxMDEwNTEsIDk4MzYzOCwgOTI5MjgsIDc4MywgMTE5NTc3LCAKICAgICA5MjE4NSwgMTI3MjIxLCA3Mzg1NSwgNjgwMzIsIDY1MDU2LCAzNjIwLCA0MTE4MCwgNjgzNzgsIDQ1NTYsIDY3ODM5LCAKICAgICA2ODQ4MCwgMTk0OTMzLCA3NDI1MCwgMCwgNjc2NTcsIDEwNTEwLCA0MzgyLCA2NjQ4MiwgNjc4MjMsIDAsIDEyNzUyNywgCi0gICAgOTE3NywgODkwMiwgOTM5NTgsIDk4MzksIDEyMDcwMCwgMTI4OTEsIDk4Mzc1NSwgOTgzNjM2LCA2Mzk5OSwgMjAxNiwgCisgICAgOTE3NywgODkwMiwgOTM5NTgsIDk4MzksIDEyMDcwMCwgMTI4OTEsIDk4Mzc1NSwgOTgzMjM5LCA2Mzk5OSwgMjAxNiwgCiAgICAgNDE5MTcsIDk3ODgsIDYzOTI4LCA2NzY5NiwgMTg2MiwgNjU4MDAsIDkxNTUsIDY2NjIzLCA5Nzg2LCA2NTA4MiwgNDE5MTksIAogICAgIDg1NzksIDQxOTE0LCA3OTgxLCAwLCA2NjAxNywgNDUwOCwgNjQ4ODMsIDkyNDU2LCA5MjUyMiwgMTI3ODE0LCAxMjA4MzQsIAogICAgIDY0NTkyLCA3NDI3NiwgNjc2ODgsIDY3ODQsIDc4Nzg4LCA2ODE4MSwgMCwgNzEyMTgsIDExMzgyMSwgNjYzNjYsIDEyMTQ3LCAKICAgICA5MDI0LCA2NjM3OCwgNjY0NzIsIDEyNDk3NiwgNjQyODksIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIDcxOTM1LCA2NDUwOSwgCiAgICAgNzgxNTIsIDExMzY5NywgMTI2NTA1LCAxMTA1MSwgMTk0OTI4LCAwLCAxMTM1NSwgNjU4ODUsIDEyMTMxOSwgMTI3OTQxLCAKLSAgICA0MTIxNCwgMCwgMTIyOTksIDAsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIDk5NjMsIDY4NjQ5LCAxMjY2MDksIDQwNDAsIAotICAgIDEyMDU3MCwgNjE2NywgNzQ1MTksIDYzOTIyLCA2NTk0LCA5ODM3NDAsIDAsIDAsIDM2MjQsIDQzMDM2LCAxMjk0NzIsIAotICAgIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIDQxOTU1LCAxMjY5OTAsIDYzOTkzLCAxMDQ0MCwgOTYxMSwgNjU2MDUsIAotICAgIDY4MDMsIDEyMDk2OCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgOTI2NDEsIDM0MzUsIDc4MTY0LCA0MzgxNCwgCi0gICAgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgNDI3NDIsIDk1MTcsIDExNTE4LCA4MzI5MiwgCi0gICAgNzg3OTAsIDk4MzM4MSwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCA2Mzk2MCwgOTU5MSwgNDUxNiwgCi0gICAgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDkyMzI1LCAwLCA2ODA3OSwgCi0gICAgMTIxMzQ0LCAxMTM5NywgMjg4MCwgNzA4MDYsIDkxNzgyOSwgMjg3MiwgMCwgODMzMjEsIDM0OTgsIDQzNzgsIDkxNzUzOSwgCi0gICAgNDI3MCwgMCwgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMTk0OTkxLCAwLCA5ODMwNDAsIDE5NDkxMCwgCi0gICAgMTIxMzkyLCA4MTYxLCAzOTMsIDEyMDEzLCAwLCA5ODMxOTgsIDExOTEwMywgNDE1LCA2Mzk2NCwgNjM5NjMsIDQyMzQ1LCAKLSAgICA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDcxMDU4LCA2Mzk2MSwgNDQ3MiwgOTgzMjk5LCAwLCA3ODE1OSwgCi0gICAgNjk2OTksIDEyNzMwMSwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIDEwMzMxLCA2MzgzMCwgCi0gICAgMTE5NjI1LCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDc4NjU0LCA0MjQ1MywgMTYwNCwgOTU2NSwgMTA1MzksIDY5NzAxLCAKLSAgICA2NTc2NCwgNDE0MTUsIDY1NzY3LCAxMjkxOTYsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAwLCAwLCAKLSAgICA2Mzk4MCwgMTE4MDEsIDM2MjIsIDE5NTA5MiwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAKLSAgICAxOTY2LCA0MzYyOCwgOTgzOTA4LCA5ODMyOTQsIDgzMjY3LCAxMjEwNTIsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgCi0gICAgMTEwMDksIDEwNjk0LCA2Mzk3MywgNDAyLCA5MjIxMywgMTMxNDcsIDEyODY5MiwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgCi0gICAgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgOTgzMTU3LCAxMTMwMiwgNjI1OSwgNDMzOTUsIDAsIDgzMzIzLCAxOTQ2NzAsIAotICAgIDEyMDgzNiwgOTIzNTEsIDc0ODEzLCA3NDQyNSwgMTEyOTksIDE1NjEsIDExODg4MSwgOTIzMTgsIDY0OTQyLCA5MzAyMSwgCi0gICAgMTk0NzMzLCA3MDQxMSwgNzg3MTgsIDEyMTE0MCwgNzQzMDEsIDY4ODI1LCAxMTI4MCwgMTI4NDg5LCA2OTc4NCwgNzQwNjAsIAotICAgIDEyODM5MiwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIDEyNDk4OCwgNzQwMiwgCi0gICAgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2NjgzMiwgOTI5NjYsIDEyMDg1MiwgNTQwNSwgCi0gICAgMTI3ODc1LCA2NDg2NiwgMTIwOTY1LCAxMTk1ODMsIDExOTEyMiwgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCAKLSAgICA2NDY5MCwgMzI1NCwgOTgzMTY2LCAxMjg5NDQsIDkyNjk2LCA0MjM5MCwgNDM2NzgsIDE5NDcyNSwgMTI5MTI3LCA2NTA3NywgCi0gICAgMTI5MDU5LCA2Mzg4LCAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAxMTUyMCwgNTYxMSwgODMwMjEsIDMzNzcsIDAsIDAsIAotICAgIDc0MzU0LCAxOTQ1NzgsIDc4MjI4LCA5ODM3MjIsIDk4Mzc2MiwgNDI2OTEsIDEyNzg4NiwgMTIwOTQ4LCA2ODA5MSwgCi0gICAgMTI4NDA0LCA3NTAyMywgMTM3OSwgMjQ2LCA3NDY0OSwgOTgzNzYxLCAzNzg4LCA5MjUyMCwgMTEwNDEsIDY3MjAyLCAKLSAgICA2NjMwNCwgMCwgMTIxMjEzLCA4OTE3LCA0MjQwMywgMzAxLCAwLCAxMjg1MDAsIDEyNzA0NiwgMCwgMCwgMTEzODIyLCAKLSAgICAxMDY1NiwgMTI1MDQyLCA2NTIxNCwgOTI5ODcsIDQyNTY3LCA5MjIxNywgMTMxNjMsIDk4MzIwNCwgMTIwODMxLCA3NDU5NywgCi0gICAgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgNDc1NSwgNzQyNDQsIDE5NDU3NCwgMTE0NDMsIDk4MzYwMywgCi0gICAgNjYzMTksIDY4NDEsIDYwOCwgNjAwLCAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIDc0NTEwLCAxMTkxMTcsIDc0NDg1LCAKLSAgICA0MjQ0MiwgNjU0NzAsIDk4MzkwNywgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCA2OTk4MiwgNzA1MDUsIDk4MjgsIAotICAgIDAsIDQzNTA1LCA0MjI4MCwgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAKLSAgICAxMTk2MzEsIDExMDAyLCA0MjQ3MCwgMCwgNjgzMTUsIDAsIDAsIDc0MDQxLCA4MzE0NCwgNzAwNDUsIDQzNTM5LCA1NDExLCAKLSAgICA0MjE5NiwgMCwgMCwgMCwgOTE1MCwgNjY4MzEsIDQyMzkzLCAxMzA4NiwgMTMxMCwgNjY4NDgsIDkzMzcsIDEyMDUyLCAKLSAgICAxMDY0MywgNTUyNzEsIDEyODk1MSwgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCA4MzMxNiwgCi0gICAgMTk0ODIyLCAxOTQ3NTYsIDc0MzEwLCA2NTU0LCA5NDA1OSwgMTE5MTQsIDU0NTIsIDAsIDAsIDkyNzcyLCAwLCA5MTc4ODAsIAotICAgIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDExOTU2NCwgOTY1MCwgNDMzMzAsIDEyMTAzMywgMTI4NTA1LCAxNDA2LCAxMjUwMDcsIAotICAgIDQyOTI1LCA3NDYzOCwgMTk0NTkzLCA2NjI1NiwgNDE0MywgMTI4MTM2LCAxOTQ3NjIsIDY1NzQ4LCA0MTQxLCA5NjgyLCAKLSAgICA2NTI4NywgMTUwOCwgMTI3MDEzLCA4Nzc5LCAxMDU2OSwgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIDQxNDUsIAotICAgIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCA1NTI1MCwgOTE4NSwgOTU1MCwgNDI5MzIsIDQzNDAzLCAwLCAwLCAKLSAgICAxOTQ3ODMsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA5ODMyMDUsIDEyOTU1LCAxMDU5NiwgMjg4OCwgODMxOTAsIDAsIAotICAgIDEyMTM1NCwgOTY1NywgOTAxOSwgMTIxMTU0LCAwLCAyODc4LCA1MzkwLCAwLCAxOTQ5NjEsIDY3MzI1LCA2ODY3OSwgCi0gICAgNDM1NTIsIDc1MDEsIDYzMjgsIDE5NDk2MCwgMTA0MjksIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCAKLSAgICA2ODM4MSwgMCwgMCwgODk4NiwgNDM4MzgsIDEwNjMyLCAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDE5NDk3MCwgMTI2NjQ3LCAKLSAgICAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIDY0ODIyLCAyODkyLCA4MzE5MiwgNDMzOTQsIDU1NSwgMCwgMCwgNjY2NDYsIAotICAgIDEyODk4MCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIDcyODksIDc0MDU1LCA2NDE2MSwgODg1NCwgNjQxNjIsIDU4NTgsIAotICAgIDQxOTI3LCAxMDU4MiwgMTIwNDU3LCAxNzg0LCAxMzYxLCAxMjA5MjEsIDEyMTUxNiwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgCi0gICAgMTMxNTgsIDkyMTY2LCA3MjExLCA3MTg4NCwgOTM3MSwgNzM5NzMsIDEyODQ0MSwgNjgyOCwgMTYyNSwgNzY2NCwgMTI4NzY4LCAKLSAgICAxMzQyLCA2ODQ0MCwgNjQxNzEsIDkyNjQyLCAxMDkwMywgOTgzNDk2LCAwLCA5MjUyNywgMCwgNzA0MzgsIDQ0ODIsIAotICAgIDQxNjA2LCAxMjg5MzQsIDEyNTAzMywgMTIxNDc1LCAwLCA2NDM4MSwgOTgzOTQwLCAxOTQ5NzQsIDE5NTA5MCwgNDIyNDUsIAotICAgIDEyNjQ2NywgNDE5NzIsIDAsIDQ0NCwgOTgzNDM5LCA5MTI3LCA2NjY4NywgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIDAsIAotICAgIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAwLCA3MDE3NywgMTIwODMwLCAwLCAxMTk3LCAxMjgyODIsIDExNDksIDY4MzE2LCAwLCAKLSAgICA5ODMyNTgsIDQwOTkwLCA0Mzc2NSwgMTIxMjYyLCAzNDkyLCA5MTc5MDYsIDExODc4NCwgMTI5MDI2LCAwLCA5ODM1NjYsIAotICAgIDEyODM4LCA2NzIwOCwgMTk5NDgsIDQxNjc3LCAzMDk5LCAwLCAwLCA0MTA4NywgMCwgMCwgOTgzMjYxLCAxMTkwNTksIAotICAgIDEyMDM2LCA0MTMwOSwgMTI4MTYxLCAwLCA4MTUyLCAwLCA0MTU1MCwgMTIyMjcsIDk4MzYxMywgMCwgMTI4MjgsIDEyNzUxMSwgCi0gICAgNzUwMTUsIDEyMDk2NCwgMTIwNzA4LCAwLCAwLCAxMDM4NiwgNzUwNjgsIDExOTk1NSwgMTI3MzAzLCA5MjY4MCwgOTgzMTM0LCAKLSAgICA2ODE1NCwgMTI3ODc2LCAxNzQzLCAwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgNzAwNTIsIAotICAgIDY0NDM5LCAxMjg4NjQsIDY4MDYyLCA5MjY4NiwgOTgzODc1LCAwLCA0Mzg2NiwgMTI4ODgxLCAwLCAzMzk1LCA5MzYyLCAKLSAgICAxMDg3OCwgNDMyNjAsIDAsIDc4MzYyLCA2NDgzMCwgMCwgMTI1MDQ2LCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgCi0gICAgMTIxMTAwLCA3MTM0NCwgNDczNSwgMTExMTEsIDYxMTksIDEyODIyLCA0MjY5OSwgMCwgOTgzODI0LCA3NDgxOCwgMTQyMywgCi0gICAgMTI4OTIzLCA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgMTI4NjM0LCAxMTg4OTIsIDAsIDk0NzIsIDY3NzM0LCAKLSAgICAxMTkyOSwgMTI2NTU3LCA3MTcwLCA5NTk2LCA2MTMwLCAxMjg4MjYsIDQzNjI5LCAxMTU3OSwgNzE0NzUsIDAsIDkyNTAxLCAKLSAgICAxMjUwODEsIDc4MDQ2LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzYsIDQzMjM0LCA2NjAwOCwgMTI2MjcsIDAsIAotICAgIDY4NDE0LCA3NDYxNCwgNDM2MTksIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIDExNzc2LCA3NTU4LCA3MDEwOSwgCi0gICAgNjU2MjcsIDAsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgOTgzMDk0LCAwLCAxMTkwMjMsIDY1MzY1LCA3Mzg3NywgCi0gICAgNjU2MjgsIDc4MDE5LCAxMTkyNzIsIDgzMTE4LCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgCi0gICAgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDEyNTA1NywgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgCi0gICAgNDMwNzgsIDEyNzc4OSwgMTE4ODA5LCA2NzIzMiwgMTA4OTksIDY1NDY5LCA3MDEyNSwgMCwgMCwgMjQxMCwgOTkzLCAKLSAgICA4MzExNywgMTIwNTg5LCAxMjA2ODksIDc4NjkzLCAwLCAwLCA3MjMyLCAwLCAxMTkyNTMsIDEyNDk2MywgNzExMCwgNzQ0NjIsIAotICAgIDIwNjYsIDEwNDg5LCA0MjE2NiwgNDM0NjMsIDEwNjU5LCAzNjAwLCA2ODg2MywgNDIyNCwgMTMzNiwgNDE1MTgsIDEyMTMxMSwgCi0gICAgMCwgMCwgMCwgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAwLCAwLCAxMTkxNTMsIDEyMDQ0MSwgMjcyLCAKLSAgICA0MjYzLCA4NzkzLCA5ODM4NTYsIDAsIDQxNTAyLCAxMjgxMzMsIDk4MywgMTI1NDksIDEyNDk0MCwgMCwgMTE5MCwgNDEwOSwgCi0gICAgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAxMjA5MjYsIDcwMDI3LCAyMDk5LCA1MTIwLCAKLSAgICAyNDA5LCA3Nzk5LCAwLCA3NDQyNCwgMCwgMTIxMDQxLCA0NzMxLCA5MjI3OSwgNjY2MjksIDEyODEyNywgOTI1MjUsIDEyNTUsIAotICAgIDQxNDksIDkyNDcsIDc0OTc3LCA5OTEzLCA5ODM4MjgsIDEyMTEwMSwgNjQ5MTQsIDkxNzc4NywgNjUxMDEsIDExMzcxNCwgCi0gICAgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgMTA4NDIsIDQxMzU0LCA0MjEyMywgNDMwOTcsIAotICAgIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgOTE3OTAwLCA4MTgwLCAxMjUwNTUsIDAsIDk5NzIsIDczODY1LCAKLSAgICA0NTE5LCA2MTE0LCAxMDg5OCwgNDMwNzIsIDkyNDY1LCAwLCA5Mzk2MCwgOTgzMzI0LCAxMjY1ODEsIDEwNjk1LCAwLCAKLSAgICA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCA5MTc4OTcsIDEyOTEzNCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgCi0gICAgNjQzMjEsIDgzNTksIDgzMjg2LCAxMjY4OSwgOTgzMzEyLCAxMTI0NSwgMTI4MTA1LCA5ODMzMTQsIDcxODU5LCA2ODE4MywgCi0gICAgOTgzNDE1LCAxOTQ4MjksIDEyODcsIDU0MzYsIDAsIDcxMDk3LCA3NDE0MiwgOTIzMjgsIDc0MTUyLCA3MDIwNSwgNjA1MSwgCi0gICAgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgODI5NjIsIDEyODkwOCwgOTMwNDMsIDEyMTAxMywgMCwgMzY1MiwgMTA1MzcsIAotICAgIDEyMDI4MiwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAyNzksIDczNzQ1LCAwLCAxMjg2NjQsIDgzMjQ0LCAxNDg5LCAwLCAwLCAwLCAKLSAgICAzODk5LCAxMDA3LCA0MjEyNCwgNDM4MjgsIDQyMTIyLCA5MjMzNywgOTIzNjcsIDAsIDExOTg1LCAxMzQ1LCA3ODYwMCwgCi0gICAgMTE5ODMyLCA5MTc1NjMsIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAxMjkxMzEsIDY0MzAsIDc4NjA4LCAKLSAgICA3ODYwNCwgNzg2MDUsIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCA0OTIsIDg2ODUsIDEyODQ4MSwgCi0gICAgMTIxMjcwLCAwLCA3NTAyNywgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzg2MTUsIDc4NjE2LCAyMjk3LCAwLCAKLSAgICA3MzgzNywgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCA4MzE1MiwgOTkzMywgNzQwMTEsIAotICAgIDY2NTE1LCA3NjcsIDU1MjQsIDcwMjgsIDAsIDkyMTY4LCAxMTk4MjcsIDExOTgxNywgOTI5NTAsIDc4NjMzLCAxMDg5NiwgMCwgCi0gICAgMTc5OSwgMTIwNDk3LCA2OTcxLCA3NDMzNiwgMTI4MzQyLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjQzNCwgOTQwMTgsIAotICAgIDExODgyMywgNjUzNTMsIDAsIDQ2MzEsIDExODk5NiwgMCwgNjQwNywgMTEzNzM3LCA2MzM4LCA0MzIxNCwgMCwgNzU3MCwgMCwgCi0gICAgMzE5MiwgMTIwMzMwLCA4NDE0LCA5ODMzOTIsIDkzOTgzLCAxOTUwNDMsIDAsIDAsIDkxNjQsIDY2NjEyLCA5Mzk1OSwgCi0gICAgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIAotICAgIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCA3ODYyNywgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgCi0gICAgMTA5NDQsIDQxMjA4LCA5ODM3MTMsIDQxMTY4LCA4MTc4LCA3NDg1OSwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgCi0gICAgNzg2MzYsIDY4MDQsIDcwNDc1LCAxOTQ3LCA5MTc1NzksIDAsIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIAotICAgIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMTI1MDY1LCA4MDE3LCAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgNjgyMjMsIDQzNDc1LCAKLSAgICA5MTc1NDgsIDQ5MDksIDEyMTI2LCAxMjc1NDAsIDEyMDY5NiwgNDkwNCwgOTI5NjEsIDQzNTAzLCAxMzY1LCA5MjUzLCAKLSAgICA0Mjc1NywgNDM0MzYsIDc0NjIsIDEyNzc3MiwgMCwgMCwgODMxNzMsIDY2ODQ1LCA2NDQxNSwgMTIwNTAwLCA4MzE3MiwgCi0gICAgNTM5OCwgMTI1MDM1LCAxMjczODYsIDkzOTUzLCAxMjczNjIsIDk4Mzc4MiwgMTE5MDE1LCA4MzE3MSwgMTI3MDA3LCA5NDc2LCAKLSAgICA5ODM4ODcsIDEyMDY5NSwgMTI3NjMsIDEyNjYwMywgMzYyOSwgMTIwODQ0LCAxMzAwNSwgMTExODEsIDM2MjgsIDAsIDAsIAotICAgIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgCi0gICAgMTIwMzcyLCA2NDY2NSwgNDMwODYsIDkxMTQsIDQzODcwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgCi0gICAgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAKLSAgICAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgNzUwNDYsIDYwMTgsIDY4MjkzLCAxMjUwMTAsIDEyMjc2LCAxMTkxMTAsIAotICAgIDY4MzcyLCAxMjgyNTUsIDkyMjU5LCA3MTg5MywgMCwgMTE5ODI4LCAxMDQ2NywgMCwgMjQ0MywgMTA5MTgsIDc4MjE3LCAKLSAgICA3Nzk0NywgMTAwMSwgOTI0MSwgMTkyNywgMCwgMTI0OTQyLCA3Mzk4NywgMTI3ODgyLCA3MTg5NSwgOTMwMTIsIDc5OTIsIAotICAgIDc3OTQzLCA0MzkzOSwgMTI4NjcsIDEyODY0OSwgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgNTE4LCAKLSAgICA2NTg1NywgMTI4MzYxLCAxMjg2NzQsIDEzMjA0LCA0Mzg3LCA4NTcsIDEyMTI1MiwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCi0gICAgMTE4NDIsIDAsIDcxMDcyLCAxMjE0NjIsIDAsIDUxMzYsIDE5NjgsIDEyODkwNiwgMTI2NjI3LCAxMzM3LCA2NDk2NywgCi0gICAgMTYyOSwgMCwgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgNDM4MjYsIDQzOTQ0LCAKLSAgICA2MTIwLCA0NzgsIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDcxODk0LCA0Mjc2LCAKLSAgICAxMjA2LCAzNjE5LCA0MTYzOCwgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCAwLCA0OTAsIDEwNzE1LCA3NTc4LCAKLSAgICA2ODM4NCwgOTI3NTQsIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDY4MjQ1LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIAotICAgIDc4NTIyLCA3ODQsIDQyMzk3LCAzMzQsIDEyMTA4NCwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNDM5MzcsIDY5NjY2LCA0NDQyLCAKLSAgICAxMDM2NCwgNDM5MzUsIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDQzOTMyLCAxMTEwMiwgCi0gICAgMjkxNSwgMTE1MDIsIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzUwMzIsIDEyMDI3MywgNjk3NSwgMCwgNTQxNSwgCi0gICAgMTIxNzYsIDk4MzcwOSwgNzQxOTMsIDM0NjIsIDQzOTQwLCA0MjYyOSwgNzg2OTEsIDcxMTc1LCA0Mzk0MiwgMTI3MjU2LCAKLSAgICA5NzU5LCAxMjcyNTUsIDcwMDU3LCAxMjE0NDIsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCAKLSAgICA0MjQ5NSwgMTE4OTU2LCA3MDE4OSwgNDA1MSwgMTA0NjAsIDQzMzY0LCA3MTIwNiwgMTM1NiwgMTIxNjEsIDQyNzEzLCAKLSAgICAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCA0MjExMiwgNjQ0MzYsIDE4NzUsIDEwODA4LCAKLSAgICA0MjEwOSwgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCA2NDkwNywgNTI4OSwgMTMxNDQsIDEyODY1OCwgOTgzMjI0LCAKLSAgICA1NTc1LCA5Njc1LCA3MTEyOSwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCA5ODMyNzksIDkyOTc5LCA0MzIzNiwgMzM4MiwgCi0gICAgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMTEzODE0LCAxMTI2OSwgMTAxNTEsIDczNzU5LCA0MzEwMCwgCi0gICAgNjk4ODgsIDY1NTA4LCA5ODMxNDMsIDAsIDEyMTQ1MSwgODkzNSwgNzgyMzQsIDAsIDk4Mzc1NywgMCwgNjE2LCA3NDc1MywgCi0gICAgNjUxNzgsIDQ2ODQsIDc4NzAxLCAxMTk2NTMsIDc0NjMxLCAxMjY1NTEsIDEyNDk5MiwgNjA0OCwgNzQ0NjAsIDQyMTEwLCAKKyAgICA0MTIxNCwgMTI5MzMxLCAxMjI5OSwgMTAxMDc1LCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgCisgICAgMTI2NjA5LCA0MDQwLCAxMjA1NzAsIDYxNjcsIDc0NTE5LCA2MzkyMiwgNjU5NCwgOTgzNzQwLCAxMTM3MzQsIDEyNzg5OSwgCisgICAgMzYyNCwgNDMwMzYsIDEyOTQ3MiwgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDExMDU5MiwgNjM5OTMsIAorICAgIDEwNDQwLCA5NjExLCA2NTYwNSwgNjgwMywgMTIwOTY4LCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgCisgICAgNzgxNjQsIDQzODE0LCA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgCisgICAgMTE1MTgsIDgzMjkyLCA3ODc5MCwgOTgzMzgxLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDEyNTAzLCAKKyAgICA5NTkxLCA0NTE2LCAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgOTIzMjUsIAorICAgIDEyNTA2NywgNjgwNzksIDEyMTM0NCwgMTEzOTcsIDI4ODAsIDcwODA2LCA5MTc4MjksIDI4NzIsIDAsIDgzMzIxLCAzNDk4LCAKKyAgICA0Mzc4LCAxMjg3NDMsIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDE5NDk5MSwgMCwgCisgICAgODMzMjIsIDEyNjYxMiwgMTIxMzkyLCA4MTYxLCAzOTMsIDEyMDEzLCA5ODMyMjEsIDEwMDUwOSwgMTE5MTAzLCA0MTUsIAorICAgIDYzOTY0LCA2Mzk2MywgNDIzNDUsIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgNzEwNTgsIDYzOTYxLCAKKyAgICA0NDcyLCAxMDEwNTQsIDAsIDc4MTU5LCA2OTY5OSwgMTAxMDU1LCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgCisgICAgNzY5MSwgMTAzMzEsIDYzODMwLCA4MzQ1MCwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCA3ODY1NCwgNDI0NTMsIDE2MDQsIAorICAgIDk1NjUsIDEwNTM5LCA2OTcwMSwgNjU3NjQsIDQxNDE1LCA2NTc2NywgMTAwNTA2LCA4NDU3LCA0MjMwMSwgMTEzNzIsIAorICAgIDY0ODczLCAxMTk5MiwgMTk0ODc0LCAxMjkzMDYsIDYzOTgwLCAxMTgwMSwgMzYyMiwgMTI4OTA0LCA2NDMzNiwgMTIwMTcsIAorICAgIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIDE5NjYsIDQzNjI4LCA3Mjc5NCwgMTAxMDYwLCA4MzI2NywgMTIxMDUyLCAKKyAgICA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIDQwMiwgOTIyMTMsIDEzMTQ3LCAxMjg2OTIsIAorICAgIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDk4MzE1NywgMTEzMDIsIDYyNTksIAorICAgIDQzMzk1LCA5ODMzNzMsIDgzMzIzLCAxMjgzNTgsIDEyMDgzNiwgOTIzNTEsIDc0ODEzLCA3NDQyNSwgMTEyOTksIDE1NjEsIAorICAgIDExODg4MSwgOTIzMTgsIDY0OTQyLCA5MzAyMSwgMTI3MDQ5LCA3MDQxMSwgNzg3MTgsIDEwMDkzMCwgNzQzMDEsIDY4ODI1LCAKKyAgICAxMTI4MCwgMTI4NDg5LCA2OTc4NCwgNzQwNjAsIDEyODM5MiwgMTk0OTg4LCA3Mjc1MiwgNTE0NSwgMTI0ODYsIDY1MDE4LCAKKyAgICA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxMTkwNTcsIDc0MDIsIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAxMDEwNTMsIAorICAgIDY2NjE2LCA2NjgzMiwgOTI5NjYsIDEyMDg1MiwgNTQwNSwgMTI3ODc1LCA2NDg2NiwgMTIwOTY1LCAxMTk1ODMsIDExOTEyMiwgCisgICAgMjIzNSwgNzQyNDgsIDExMzMwLCAxMjkxMjMsIDY0NjkwLCAzMjU0LCA5ODMxNjYsIDEyODk0NCwgOTI2OTYsIDQyMzkwLCAKKyAgICA0MzY3OCwgMTAxMDAwLCAxMjkxMjcsIDY1MDc3LCAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIAorICAgIDExNTIwLCA1NjExLCA4MzAyMSwgMzM3NywgMCwgOTgzODQ1LCA3NDM1NCwgMTk0NTc4LCA3ODIyOCwgOTgzNzIyLCAKKyAgICAxMjgzNjgsIDQyNjkxLCAxMjc4ODYsIDEyMDk0OCwgNjgwOTEsIDEyMTE2NiwgNzUwMjMsIDEzNzksIDI0NiwgNzQ2NDksIAorICAgIDk4Mzc2MSwgMzc4OCwgOTI1MjAsIDExMDQxLCA2NzIwMiwgNjYzMDQsIDAsIDEyMTIxMywgODkxNywgNDI0MDMsIDMwMSwgCisgICAgMTE5OTM1LCAxMTk4MjYsIDEyNzA0NiwgMCwgMCwgMTEzODIyLCAxMDY1NiwgMTI1MDQyLCA2NTIxNCwgOTI5ODcsIDQyNTY3LCAKKyAgICA5MjIxNywgMTMxNjMsIDk4MzIwNCwgMTIwODMxLCA3NDU5NywgMzE4MiwgOTgzNjA3LCA5ODM5MjYsIDAsIDY1MDM0LCAKKyAgICA2NTg4OSwgNDIxNjksIDQ3NTUsIDc0MjQ0LCA3NDYzMSwgMTE0NDMsIDk4MzYwMywgNjYzMTksIDY4NDEsIDYwOCwgNjAwLCAKKyAgICAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIDc0NTEwLCAxMTkxMTcsIDc0NDg1LCA0MjQ0MiwgNjU0NzAsIDEwMDUzOCwgCisgICAgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCA2OTk4MiwgNzA1MDUsIDk4MjgsIDc4MzExLCA0MzUwNSwgNDIyODAsIAorICAgIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIAorICAgIDEyODkxMywgNjgzMTUsIDk4MzgzOCwgMTIxMTU5LCA3NDA0MSwgODMxNDQsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgNDIxOTYsIAorICAgIDAsIDAsIDEyODk0OSwgOTE1MCwgNjY4MzEsIDQyMzkzLCAxMzA4NiwgMTMxMCwgNjY4NDgsIDkzMzcsIDEyMDUyLCAxMDY0MywgCisgICAgNTUyNzEsIDcyNzI3LCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDgzMzE2LCAxOTQ4MjIsIAorICAgIDEwMDczMywgNzQzMTAsIDY1NTQsIDgzMDUzLCAxMTkxNCwgNTQ1MiwgOTgzNjQ5LCAwLCA5Mjc3MiwgMTI3NTQ0LCAKKyAgICA5MTc4ODAsIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDExOTU2NCwgOTY1MCwgNDMzMzAsIDEyMTAzMywgMTI4NTA1LCAxNDA2LCAKKyAgICAxMjUwMDcsIDQyOTI1LCA3NDYzOCwgMTI1MTkwLCA2NjI1NiwgNDE0MywgMTI4MTM2LCAxOTQ3NjIsIDY1NzQ4LCA0MTQxLCAKKyAgICA5NjgyLCA2NTI4NywgMTUwOCwgMTAwNTMzLCA4Nzc5LCAxMDU2OSwgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIAorICAgIDQxNDUsIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCA1NTI1MCwgOTE4NSwgOTU1MCwgNDI5MzIsIDQzNDAzLCAKKyAgICAxMDA2MjMsIDEwMDYyMiwgMTAwNjI1LCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgNzI3MzEsIDEyOTU1LCAxMDU5NiwgCisgICAgMjg4OCwgODMxOTAsIDAsIDEyMTM1NCwgOTY1NywgOTAxOSwgMTIxMTU0LCAwLCAyODc4LCA1MzkwLCAxMDA2OTgsIAorICAgIDE5NDk2MSwgNjczMjUsIDY4Njc5LCA0MzU1MiwgNzUwMSwgNjMyOCwgMTk0OTYwLCAxMDQyOSwgMTAzNjUsIDk4MzYzMSwgCisgICAgMTI4MjE2LCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCA2ODM4MSwgMCwgMTAwNTc1LCA4OTg2LCA0MzgzOCwgMTA2MzIsIAorICAgIDExOTM0LCAxMTQ1MiwgMTMzMiwgMTIwNzA5LCAxOTQ5NzAsIDEyMDYwMiwgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCA5Mjg4LCAKKyAgICA2NDgyMiwgMjg5MiwgODMxOTIsIDQzMzk0LCA1NTUsIDEyOTQxOCwgMTI4NDc0LCA2NjY0NiwgMTI4MzI3LCAxMTkwMDIsIAorICAgIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzI3MzksIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAKKyAgICAxMjA0NTcsIDE3ODQsIDEzNjEsIDEyMDkyMSwgMTIxNTE2LCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAxMzE1OCwgOTIxNjYsIAorICAgIDcyMTEsIDcxODg0LCA5MzcxLCA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAxMjc4MDksIDEzNDIsIDY4NDQwLCAKKyAgICA2NDE3MSwgOTI2NDIsIDEwOTAzLCA5ODM0NDksIDkxNzgxOCwgOTI1MjcsIDEyOTM3NCwgNzA0MzgsIDQ0ODIsIDQxNjA2LCAKKyAgICAxMjg5MzQsIDEyNTAzMywgMTIxNDc1LCA5ODM4NTQsIDY0MzgxLCAxMDA1NDAsIDE5NDk3NCwgMTAwNjEyLCA0MjI0NSwgCisgICAgMTAwNjE0LCA0MTk3MiwgMTAwNjE2LCA0NDQsIDEwMDYxOCwgOTEyNywgNjY2ODcsIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAKKyAgICAxMjY2MDYsIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAxMjkxMzIsIDcwMTc3LCAxMjA4MzAsIDk4MzQ1MCwgMTE5NywgCisgICAgMTI4MjgyLCAxMTQ5LCA2ODMxNiwgMTI4MDEwLCA5ODMyNTgsIDQwOTkwLCA0Mzc2NSwgMTIxMjYyLCAzNDkyLCA5MTc5MDYsIAorICAgIDExODc4NCwgMTI5MDI2LCAxMjkzNDYsIDEwMDU5MiwgMTI4MzgsIDY3MjA4LCAxOTk0OCwgNDE2NzcsIDMwOTksIDEwMDU5OCwgCisgICAgMTAwNTk3LCA0MTA4NywgMTAwNTk5LCAwLCA5ODMyNjEsIDExOTA1OSwgMTIwMzYsIDQxMzA5LCAxMjUyMTAsIDEwMDYwMywgCisgICAgODE1MiwgMTAwNjA1LCA0MTU1MCwgMTIyMjcsIDEwMDU0NSwgMTAwNjA5LCAxMjgyOCwgMTI3NTExLCA3NTAxNSwgMTIwOTY0LCAKKyAgICAxMjA3MDgsIDAsIDE5NDYxMSwgMTAzODYsIDc1MDY4LCAxMTk5NTUsIDEyNzMwMywgOTI2ODAsIDk4MzEzNCwgNjgxNTQsIAorICAgIDEyNzg3NiwgMTc0MywgMTk0ODYwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgNzAwNTIsIDY0NDM5LCAKKyAgICAxMjg4NjQsIDY4MDYyLCA5MjY4NiwgMTAwNTg1LCAxMDA1ODQsIDQzODY2LCAxMDA1ODYsIDEwMDU4OSwgMzM5NSwgOTM2MiwgCisgICAgMTA4NzgsIDQzMjYwLCAwLCA3ODM2MiwgNjQ4MzAsIDEwMDg2NiwgMTI1MDQ2LCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgCisgICAgMTIxMTAwLCA3MTM0NCwgNDczNSwgMTExMTEsIDYxMTksIDEyODIyLCA0MjY5OSwgMTIwNzQ1LCA5ODM4MjQsIDc0ODE4LCAKKyAgICAxNDIzLCAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgOTgzMjEwLCAxMjAzOSwgMTA1NTksIDEyODYzNCwgMTE4ODkyLCAxOTQ5MTAsIAorICAgIDk0NzIsIDY3NzM0LCAxMTkyOSwgMTI2NTU3LCA3MTcwLCA5NTk2LCA2MTMwLCAxMjUyNjgsIDQzNjI5LCAxMTU3OSwgCisgICAgNzE0NzUsIDAsIDkyNTAxLCAxMjUwODEsIDc4MDQ2LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzYsIDQzMjM0LCAKKyAgICA2NjAwOCwgMTI2MjcsIDAsIDY4NDE0LCA3NDYxNCwgNDM2MTksIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIAorICAgIDExNzc2LCA3NTU4LCA3MDEwOSwgNjU2MjcsIDcyODc2LCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDc0OTQ3LCAKKyAgICA5ODMwOTQsIDAsIDExOTAyMywgNjUzNjUsIDczODc3LCA2NTYyOCwgNzgwMTksIDExOTI3MiwgODMxMTgsIDQxNzA4LCAKKyAgICAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMTI1MDU3LCAKKyAgICA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCA0MzA3OCwgMTI3Nzg5LCAxMTg4MDksIDY3MjMyLCAxMDg5OSwgCisgICAgNjU0NjksIDcwMTI1LCAxMDA1NzQsIDEwMDU3MywgMjQxMCwgOTkzLCA4MzExNywgMTAwNTc3LCAxMDA1ODAsIDc4NjkzLCAKKyAgICAxMDA1NjAsIDEwMDU1OSwgNzIzMiwgMCwgMTE5MjUzLCAxMjQ5NjMsIDcxMTAsIDc0NDYyLCAyMDY2LCAxMDQ4OSwgNDIxNjYsIAorICAgIDQzNDYzLCAxMDY1OSwgMzYwMCwgNjg4NjMsIDQyMjQsIDEzMzYsIDQxNTE4LCAxMjEzMTEsIDAsIDkxNzU4OSwgOTgzNzk0LCAKKyAgICA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDEwMDU1MywgMTAwNTU2LCAxMDA1NTUsIDEwMDU1OCwgMjcyLCAKKyAgICA0MjYzLCA4NzkzLCA5ODMzODUsIDAsIDQxNTAyLCAxMjgxMzMsIDk4MywgMTI1NDksIDEwMDU2MywgMTAwNTYyLCAxMTkwLCAKKyAgICA0MTA5LCAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDEyMDkyNiwgNzAwMjcsIDIwOTksIAorICAgIDUxMjAsIDI0MDksIDc3OTksIDk4Mzk1NCwgNzQ0MjQsIDk4Mzg5NiwgMTIxMDQxLCA0NzMxLCA5MjI3OSwgNjY2MjksIAorICAgIDEyODEyNywgOTI1MjUsIDEyNTUsIDQxNDksIDkyNDcsIDc0OTc3LCA5OTEzLCA5ODM4MjgsIDEwMTAyNywgNjQ5MTQsIAorICAgIDEyNTAwMiwgNjUxMDEsIDExMzcxNCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MDk2LCA2NjYyNSwgMTA4NDIsIAorICAgIDQxMzU0LCA0MjEyMywgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgOTE3OTAwLCA4MTgwLCAKKyAgICAxMjUwNTUsIDk4MzkxMiwgOTk3MiwgNzM4NjUsIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgOTI0NjUsIDAsIDkzOTYwLCAKKyAgICA5ODMzMjQsIDc0MDU1LCAxMDY5NSwgMTI5MDU4LCA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCA5MTc5NDksIAorICAgIDkxNzg5NywgMTI4MzI2LCAxMzMxMSwgNjg0MDMsIDQxODU3LCA2NDMyMSwgODM1OSwgODMyODYsIDEyNjg5LCA5ODMzMTIsIAorICAgIDExMjQ1LCAxMjgxMDUsIDk4MzMxNCwgNzE4NTksIDY4MTgzLCA5ODM0MTUsIDE5NDgyOSwgMTI4NywgNTQzNiwgOTgzMDY1LCAKKyAgICA3MTA5NywgNzQxNDIsIDkyMzI4LCA3NDE1MiwgNzAyMDUsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIAorICAgIDgyOTYyLCAxMjczOTcsIDkzMDQzLCAxMjEwMTMsIDAsIDM2NTIsIDEwNTM3LCAxMjAyODIsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgCisgICAgMjc5LCA3Mzc0NSwgMTI3ODIzLCAxMjg2NjQsIDgzMjQ0LCAxNDg5LCAxMjA2MjIsIDAsIDAsIDM4OTksIDEwMDcsIDQyMTI0LCAKKyAgICA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgMTI1MTg3LCAxMTk4NSwgMTM0NSwgNzg2MDAsIDExOTgzMiwgOTE3NTYzLCAKKyAgICA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCA3ODYxMCwgMTI5MTMxLCA2NDMwLCA3ODYwOCwgNzg2MDQsIDc4NjA1LCAKKyAgICA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAxMjg0ODEsIDEyMTI3MCwgMCwgNzUwMjcsIAorICAgIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDcyODYzLCA3ODYxNiwgMjI5NywgMTI5MzQxLCA3MzgzNywgCisgICAgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCA4MzE1MiwgOTkzMywgNzQwMTEsIDY2NTE1LCAKKyAgICA3NjcsIDU1MjQsIDcwMjgsIDE5NTA2NSwgOTIxNjgsIDExOTgyNywgMTE5ODE3LCA5Mjk1MCwgNzg2MzMsIDEwODk2LCAKKyAgICA2MzkxMCwgMTc5OSwgMTIwNDk3LCA2OTcxLCA3NDMzNiwgNzA3MzEsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyMjYyLCAKKyAgICA5NDAxOCwgMTE4ODIzLCA2NTM1MywgMTAwNDc5LCA0NjMxLCAxMTg5OTYsIDE5NTAyNywgNjQwNywgMTEzNzM3LCA2MzM4LCAKKyAgICA0MzIxNCwgMTI3MTYzLCA3NTcwLCAxMjEwMTcsIDMxOTIsIDEyMDMzMCwgODQxNCwgOTgzMzg4LCA5Mzk4MywgMTk1MDQzLCAKKyAgICAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIDU1MjE2LCA4NjU0LCAKKyAgICA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIAorICAgIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCA0MTIwOCwgOTgzNzEzLCA0MTE2OCwgODE3OCwgCisgICAgNzQ4NTksIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCA3MDQ3NSwgMTk0NywgNzI3NzAsIDAsIAorICAgIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgNzI3MjIsIDgwMTcsIAorICAgIDExOTgzMSwgNjUwOTYsIDY2NzIwLCA2ODIyMywgNDM0NzUsIDkxNzU0OCwgNDkwOSwgMTIxMjYsIDEyNzU0MCwgMTAxMDE1LCAKKyAgICA0OTA0LCA5Mjk2MSwgNDM1MDMsIDEzNjUsIDkyNTMsIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCA4MzE3MywgCisgICAgNjY4NDUsIDY0NDE1LCAxMjA1MDAsIDgzMTcyLCA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAKKyAgICAxMTkwMTUsIDgzMTcxLCAxMjcwMDcsIDk0NzYsIDk4MzA2NiwgMTIwNjk1LCAxMjc2MywgMTAwNTIzLCAzNjI5LCAxMjA4NDQsIAorICAgIDEzMDA1LCAxMTE4MSwgMzYyOCwgMTE5ODM0LCAwLCA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIDY0ODA5LCAKKyAgICAyOTI4LCA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIDEyMDM3MiwgNjQ2NjUsIDQzMDg2LCA5MTE0LCA0Mzg3MCwgNDI1ODMsIAorICAgIDkzMTUsIDQ4MjIsIDQ5MDYsIDM4NTIsIDI4NDcsIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAKKyAgICAxMTQxMCwgMTA5NjQsIDAsIDQzMjIyLCAxMjY0NiwgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDc1MDQ2LCA2MDE4LCAKKyAgICA2ODI5MywgMTI1MDEwLCAxMjI3NiwgMTE5MTEwLCA2ODM3MiwgMTI4MjU1LCA5MjI1OSwgNzE4OTMsIDExOTgxMywgCisgICAgMTE5ODI4LCAxMDQ2NywgOTgzODE0LCAyNDQzLCAxMDkxOCwgNzgyMTcsIDc3OTQ3LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAKKyAgICAxMjQ5NDIsIDczOTg3LCAxMjc4ODIsIDcxODk1LCA5MzAxMiwgNzk5MiwgNzc5NDMsIDQzOTM5LCAxMjg2NywgMTI4NjQ5LCAKKyAgICA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIDY1ODU3LCAxMjgzNjEsIDEyODY3NCwgMTMyMDQsIAorICAgIDQzODcsIDg1NywgMTIxMjUyLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAxMTg0MiwgMCwgNzEwNzIsIDEyMTQ2MiwgMCwgCisgICAgNTEzNiwgMTk2OCwgMTI4OTA2LCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAxNjI5LCAwLCA3OTYsIDY2NTA2LCAxMjg0NDIsIAorICAgIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDQzODI2LCA0Mzk0NCwgNjEyMCwgNDc4LCA2NTE1MSwgCisgICAgNjgxMjgsIDExOTA0NCwgNDMwODIsIDYwMTYsIDAsIDQyMjg0LCA3MTg5NCwgNDI3NiwgMTIwNiwgMzYxOSwgNDE2MzgsIAorICAgIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgODMxNzksIDQ5MCwgMTA3MTUsIDc1NzgsIDY4Mzg0LCA5Mjc1NCwgCisgICAgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNjgyNDUsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgNzg1MjIsIDc4NCwgCisgICAgNDIzOTcsIDMzNCwgNzI3MzIsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDQzOTM3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDQzOTM1LCAKKyAgICA3NzgsIDQxNjI2LCA0MjQ1NSwgNzk4OSwgNzQwNjMsIDMyMjcsIDY5OTA3LCA0MzkzMiwgMTExMDIsIDI5MTUsIDExNTAyLCAKKyAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc1MDMyLCAxMjAyNzMsIDY5NzUsIDEyODc5MywgNTQxNSwgMTIxNzYsIAorICAgIDEyMDY1MywgNzQxOTMsIDM0NjIsIDQzOTQwLCA0MjYyOSwgNzg2OTEsIDcxMTc1LCA0Mzk0MiwgMTI3MjU2LCA5NzU5LCAKKyAgICAxMjcyNTUsIDcwMDU3LCAxMjE0NDIsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzQ4MjMsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgCisgICAgMTE4OTU2LCA3MDE4OSwgNDA1MSwgMTA0NjAsIDQzMzY0LCA3MTIwNiwgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIAorICAgIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCA0MjExMiwgNjQ0MzYsIDE4NzUsIDEwODA4LCA0MjEwOSwgCisgICAgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCA2NDkwNywgNTI4OSwgMTMxNDQsIDEyODY1OCwgOTgzMjI0LCA1NTc1LCAKKyAgICA5Njc1LCA3MTEyOSwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCA5ODMyNzksIDY1NTkzLCA0MzIzNiwgMzM4MiwgNDI0NDksIAorICAgIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMTAwNDA5LCAxMTI2OSwgMTAxNTEsIDczNzU5LCA0MzEwMCwgNjk4ODgsIAorICAgIDY1NTA4LCAxMjk0MTEsIDAsIDEyMTQ1MSwgODkzNSwgNzgyMzQsIDEyOTMzNywgMTIwNDUxLCAwLCA2MTYsIDc0NzUzLCAKKyAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMjIzNiwgMTI2NTUxLCAxMjQ5OTIsIDYwNDgsIDc0NDYwLCA0MjExMCwgCiAgICAgNzM5NjUsIDEwODcwLCA4NTU3LCAxMTA1NCwgNjg2NjQsIDc1MDUxLCA5NjgxLCA0NDc1LCA2NzQyOSwgNDExNDIsIDIxMDAsIAotICAgIDEyNTAyNCwgMTIwNzMxLCA2MDM1LCA3Mzc5NiwgNzY1MSwgNjg0NiwgNjQ0NDMsIDk4Mzk1NywgOTgzMjk2LCA5MTc5ODcsIAorICAgIDEyNTAyNCwgMTIwNzMxLCA2MDM1LCA3Mzc5NiwgNzY1MSwgNjg0NiwgNjQ0NDMsIDk4Mzk1NywgMTk0OTQxLCA5MTc5ODcsIAogICAgIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCA2ODQ4OCwgMTAzOTIsIDEwMzI4LCA0MDk5OCwgNDM0NjIsIDc0NDg4LCA3MTE4MiwgCi0gICAgOTgwMCwgODk3OSwgMCwgMTMzMDcsIDQxMDAwLCAwLCA1MTE0LCA2NDg3LCAzMzg2LCAxMjkwOTQsIDEwMzQ0LCAwLCA1MTE1LCAKLSAgICA1Mzk0LCA0MzI0NiwgNzgyNDMsIDUxMTMsIDY2NTA1LCA0MTIwMCwgMTI4NTgyLCA0NDI1LCAxOTQ2NjksIDAsIDAsIAotICAgIDQzMDc0LCA3Mzc5OSwgMTI5MDc2LCA3ODE0NywgNTExMiwgMTIxNzMsIDc4NTQ1LCAxMjg3NzEsIDY2ODI0LCA2NTMzOCwgCi0gICAgOTgzNjc2LCAwLCAxMTk1ODIsIDQ0NzQsIDEyODkzNiwgNDMwOTMsIDQzOTY0LCAxNTg3LCAwLCAxMjczNzIsIDY0NDc1LCAKLSAgICAxMTkyMTcsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgNDM5NjMsIDQ1NjAsIDEyMDc5MywgNjc4MTEsIDkyMjc3LCAKLSAgICA5ODM2MjEsIDY0OTQ4LCA0NDMwLCA0Mzk2MSwgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgODE5NCwgNjU0NjIsIAotICAgIDEwNjI2LCAxMDk2NSwgMTIwOTA1LCA4ODkzLCA5ODMzMDMsIDEyNTQyLCAwLCA2NTM0MSwgNjc3MDMsIDY1ODI5LCA3OTI1LCAKLSAgICAxMTk4MjIsIDEwNDc1LCAxMTM4MjUsIDEyNzAxMSwgMTM1MiwgMTEwNjksIDc3MDcsIDEyNzU2MCwgMTI2NDg2LCA2NTI3OSwgCi0gICAgMTI3MTAyLCA2ODIwNywgNzQ5NTYsIDcwOTksIDYwNDAsIDY3NjgxLCAxMDA3MSwgNzg1NTQsIDkzMzYsIDQzNzUwLCAKLSAgICAxMjEwNzQsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAKLSAgICAxMjg4OTgsIDc3NDYsIDE0OTIsIDc4NTUxLCAxMDg4NCwgNzUwNzUsIDY2ODY2LCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIAotICAgIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgCi0gICAgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgNzUwMjgsIDEyODYwMywgNjMyMywgMTI5MDY1LCA4MjI0LCAxMjg0MTcsIDg5MzgsIAotICAgIDYwNDMsIDEyNzM4LCAxMjA2NzEsIDk4MzA3NiwgNTMyMSwgNjg2NDUsIDE5NDc5OCwgMTIwMjUxLCAyNTg5LCA3NDMzMiwgCi0gICAgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCA5Mjk0MCwgMTE5MDUsIDk4MzYxNSwgMCwgMTI4NTE2LCAxMjgxNjMsIAotICAgIDc0NTEzLCA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgOTgzODIyLCAxNTAzLCA3ODMzNiwgMTI3MTczLCAKLSAgICA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgMTI2NjEwLCA3MDgwOCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgCi0gICAgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgNTcyOSwgMTI5MTEwLCA3MTIzMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIAotICAgIDkzNjEsIDEyNzA5MSwgMjg4NywgNzAzODksIDM1MjYsIDYyOTgsIDExOTg1MSwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIAotICAgIDExODk2NCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzExNzQsIDQzMTU1LCAwLCA3MTE5NywgMzE0NiwgMTA5NTksIAotICAgIDk0ODMsIDgzMjE5LCA3Nzg5MywgMTA5ODEsIDE2NiwgOTE3ODQxLCA4NjM1LCA5MTc4NDAsIDEwNjIzLCA0MDgsIDExOTA1OCwgCi0gICAgMTI3NTA3LCAxMzI5OCwgMTI3MjUzLCA3NDI2LCA0MTY0MSwgMTI3MTcsIDk4Mzc5NSwgNzYwNywgMTA2MzksIDQzMzk2LCAKLSAgICAxMjkzMDAsIDExOTA4OSwgNDE2NDMsIDc0MTM0LCA5ODMwNTQsIDg3MTMsIDQxNjQwLCAxMDIyMSwgNDE2NDUsIDY2MjkzLCAKLSAgICA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIDY4MjU1LCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMTIwOTM2LCAKLSAgICAxMjEwNjksIDAsIDExODg1OSwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNjgzMzksIDEyODk0MywgNDIxMzYsIAotICAgIDEyMTQ0MCwgMCwgMCwgMCwgMzI0NywgOTI0MDIsIDY1MDE3LCAxMjg3OTQsIDY4NDI4LCA2NjY2OCwgMCwgMTIxMTEyLCAKLSAgICAxMDk4MywgMCwgMTI4Nzg3LCAwLCA0MTU2NywgMTE5ODUyLCAwLCAwLCA3ODQ0NiwgMTE5ODUzLCAxMjc5MjIsIDAsIDgyODUsIAotICAgIDEyNjUxNiwgNDUwOSwgMTIxMDQzLCA2NjQ3MSwgMTIyMTYsIDEyODgwNiwgNDA5ODgsIDgzMjIxLCA3NDgwOSwgNDE3MjcsIAotICAgIDAsIDQyODQ4LCAyMzk2LCAxMjgwODMsIDE5NDg5MiwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIAorICAgIDk4MDAsIDg5NzksIDExOTE1NiwgMTMzMDcsIDQxMDAwLCAwLCA1MTE0LCA2NDg3LCAzMzg2LCA3MDczMCwgMTAzNDQsIAorICAgIDEyNTAzMiwgNTExNSwgNTM5NCwgNDMyNDYsIDc4MjQzLCA1MTEzLCA2NjUwNSwgNDEyMDAsIDEyODU4MiwgNDQyNSwgCisgICAgMTk0NjY5LCAxMDA0MDUsIDAsIDQzMDc0LCA3Mzc5OSwgMTI5MDc2LCA3ODE0NywgNTExMiwgMTIxNzMsIDM0NDYsIAorICAgIDEyODc3MSwgNjY4MjQsIDY1MzM4LCAxMjg5NjksIDAsIDExOTU4MiwgNDQ3NCwgMTI4OTM2LCA0MzA5MywgNjI4MiwgMTU4NywgCisgICAgMCwgMTAwNTU0LCA2NDQ3NSwgMTE5MjE3LCAxMzY5LCA5ODM2NzIsIDk5NTksIDc5MjcsIDQzOTYzLCA0NTYwLCA2NjkxMCwgCisgICAgNjc4MTEsIDkyMjc3LCAxMjA2MTQsIDY0OTQ4LCA0NDMwLCA0Mzk2MSwgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgCisgICAgODE5NCwgNjU0NjIsIDEwNjI2LCAxMDk2NSwgMTIwOTA1LCA4ODkzLCA5ODMzMDMsIDEyNTQyLCAxOTQ4NTcsIDY1MzQxLCAKKyAgICA2NzcwMywgNjU4MjksIDc5MjUsIDExOTgyMiwgMTA0NzUsIDExMzgyNSwgMTI3MDExLCAxMzUyLCAxMTA2OSwgNzcwNywgCisgICAgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAxMDA0MDcsIDY4MjA3LCA3NDk1NiwgNzA5OSwgNjA0MCwgNjc2ODEsIDEwMDcxLCAKKyAgICA3ODU1NCwgOTMzNiwgNDM3NTAsIDEyMTA3NCwgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCA2OTg3MywgNjUxODgsIDc4MjAsIAorICAgIDQzMDE4LCAxMDA0MTAsIDEyODg5OCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3NTA3NSwgNjY4NjYsIDUxMjcsIAorICAgIDExMjg1LCA0MjUwMSwgNTQ5NSwgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIAorICAgIDc0MzA0LCAzNzEsIDY0MzczLCA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCA3NTAyOCwgMTI4NjAzLCA2MzIzLCAxMjkwNjUsIAorICAgIDgyMjQsIDEyODQxNywgODkzOCwgNjA0MywgMTI3MzgsIDEyMDY3MSwgOTgzMDc2LCA1MzIxLCA2ODY0NSwgNjU1MywgCisgICAgMTIwMjUxLCAyNTg5LCA3NDMzMiwgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCA5Mjk0MCwgMTE5MDUsIAorICAgIDk4MzYxNSwgMCwgMTI4NTE2LCAxMjcwMTcsIDc0NTEzLCA2MDQ5LCAxMjgyMzksIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCAKKyAgICAxMjgxMjAsIDE1MDMsIDcyNzY5LCAxMjcxNzMsIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAxMjY2MTAsIDcwODA4LCAKKyAgICA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCA1NzI5LCAKKyAgICAxMjkxMTAsIDcxMjMwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAyODg3LCA3MDM4OSwgMzUyNiwgNjI5OCwgCisgICAgMTE5ODUxLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMTE4OTY0LCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3MTE3NCwgCisgICAgNDMxNTUsIDk4MzgxNiwgNzExOTcsIDMxNDYsIDEwOTU5LCA5NDgzLCA4MzIxOSwgNzc4OTMsIDEwOTgxLCAxNjYsIAorICAgIDkxNzg0MSwgODYzNSwgMTI4NzE0LCAxMDYyMywgNDA4LCAxMDA0ODAsIDEyNzUwNywgMTMyOTgsIDEyNjUxOCwgNzQyNiwgCisgICAgNDE2NDEsIDEyNzE3LCAxMjA2NTgsIDc2MDcsIDEwNjM5LCA0MzM5NiwgMTI5MzAwLCAxMTkwNTMsIDQxNjQzLCA3NDEzNCwgCisgICAgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIDk4NTIsIDY2MjkzLCA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIAorICAgIDY4MjU1LCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMTIwOTM2LCAxMjEwNjksIDEyOTE2OCwgMTE4ODU5LCAxMjUyMDMsIAorICAgIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDY4MzM5LCAxMjg5NDMsIDQyMTM2LCAxMjE0NDAsIDAsIDAsIDAsIDMyNDcsIAorICAgIDkyNDAyLCA2NTAxNywgMTI4Nzk0LCA2ODQyOCwgNjY2NjgsIDE5NDg4NCwgMTIxMTEyLCAxMDk4MywgOTE3NzY3LCAKKyAgICAxMjg3MDAsIDAsIDQxNTY3LCAxMTk4NTIsIDAsIDAsIDc4NDQ2LCAxMTk4NTMsIDEyNzkwNywgMCwgODI4NSwgMTI2NTE2LCAKKyAgICA0NTA5LCAxMjEwNDMsIDY2NDcxLCAxMjIxNiwgMTI4ODA2LCA0MDk4OCwgODMyMjEsIDc0ODA5LCA0MTcyNywgOTE3ODI1LCAKKyAgICA0Mjg0OCwgMjM5NiwgMTI4MDgzLCAxOTQ4OTIsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCA5ODMyNTksIAogICAgIDQyNDU3LCA5Mjg4OCwgODMyOTksIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCA5MjQxMCwgNjk2NTAsIDExNzA3LCA4MjIyLCAKLSAgICA3MzgyNSwgNzkzOSwgNzEyMTMsIDkyNDYwLCAxMjc4MDEsIDEyMTQwOCwgMTI4MzU5LCA4NTM0LCA2OTg1MywgNDA5ODMsIDAsIAotICAgIDEyMTQyMSwgMCwgNzIwMSwgMTI1NjEsIDEyMDg2NiwgNDIzNzEsIDEyNTU4LCAxNTQwLCA5MTc1NDksIDEwMDUyLCA0MDk4MiwgCi0gICAgMTE5ODQxLCAwLCAxNDg4LCA3MTE3NywgMCwgMTk0ODMxLCA5MTc1NTksIDEyODQwMSwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKLSAgICAxMjA4NDAsIDkxNzkwNSwgMTIwOTU0LCAxMjc4NzIsIDcxMzYzLCAzNTYwLCA3Nzk3LCA2MDcwLCAxMDAwNiwgMTI4OTIyLCAKLSAgICAyOTIyLCA2MDgyLCA3MDE0NywgNjUwMDksIDk4Mzk0MiwgMTI1NjcsIDY2NzEyLCAwLCA0MTQxMiwgMTI4MTMxLCAxMTk1OTEsIAotICAgIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDgzNDYyLCAKLSAgICAxMTkxMzEsIDAsIDAsIDY3ODI2LCA0MzA4NSwgNjA1NywgNTA4LCA5Mzk2OCwgOTI5ODksIDY3OTY4LCAwLCA5MjE5OCwgMCwgCi0gICAgMTI4ODMxLCA2MzgsIDYwODMsIDExOTA3MiwgMTI0OTUwLCAwLCAyMzA1LCA3ODM0OCwgNjgwOTYsIDkxNzc3MiwgNjA1NiwgCi0gICAgNjY1OSwgNjc5NjksIDk4MzI5MCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIAotICAgIDk4Mzc4MywgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgMzI0OSwgMTc2OCwgOTM5ODIsIDEyMzI4LCA1MDEsIAotICAgIDkzOTg1LCAxMDYwMSwgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDY2NDE2LCA2NTA1LCA3NDAxMCwgOTgzMjUwLCAKLSAgICAxMzA2NCwgNTUyNjcsIDExOTExMywgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDEyOTkwLCAwLCA5MjM3NiwgMTI3NDUsIDk2NzgsIAotICAgIDEyMTEwOCwgMTIwNTg3LCA5ODY5LCA4MzE1MCwgMTc3MSwgMTI4OTY1LCA4OTM2LCA5Mjk2NCwgMCwgNDIwOCwgNzgzNDEsIAotICAgIDc4NTY3LCA3ODM0MiwgNjc3NDIsIDk4MzIwOCwgNzQxMDEsIDEyODYwNSwgMTE3NjIsIDAsIDcwMDk2LCA2ODM1LCA2ODAxMCwgCi0gICAgNjY0NzUsIDEyMDI2MCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMTE5ODMwLCA1MDY5LCA3MzczNiwgNTAyOCwgOTg5NywgCi0gICAgOTI3NzQsIDczNzM5LCA1MDI2LCA5ODMyNTUsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgCi0gICAgNDE5MDEsIDc0NzkwLCA3ODEzOCwgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgCi0gICAgNjg0MjQsIDQxMDcwLCA3NzkwMywgNzY1OCwgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIAotICAgIDE3MTYsIDk4MzY3OSwgMTA2MDAsIDc4NTU4LCA2MjAsIDQxMDAxLCA2MDI4LCA3MDQ0NSwgNDI4OTIsIDAsIDcxMTE2LCAKLSAgICA1MDI0LCA3NDk0NSwgNDEwMDMsIDY4MTM3LCA1MDI1LCA2OTg5MiwgOTgzMjA5LCA3NTAzOSwgMTE4ODg1LCAxMjc5NTYsIAorICAgIDczODI1LCA3OTM5LCA3MTIxMywgOTI0NjAsIDcyNzQ3LCA2NzEzMSwgMTI4MzU5LCA4NTM0LCA2OTg1MywgNDA5ODMsIDAsIAorICAgIDEyMTQyMSwgMCwgNzIwMSwgMTI1NjEsIDEyMDg2NiwgNDIzNzEsIDExODQ0LCAxNTQwLCAxOTQ4MjcsIDEwMDUyLCA0MDk4MiwgCisgICAgMTE5ODQxLCAwLCAxNDg4LCA3MTE3NywgMCwgMTk0ODMxLCA5MTc1NTksIDEyODQwMSwgMTk0OTIwLCAxNTYzLCAxMjgwMzQsIAorICAgIDk2MTksIDEyMDg0MCwgMTI5NDE2LCAxMjA5NTQsIDEyMTQ2MCwgNzEzNjMsIDM1NjAsIDc3OTcsIDYwNzAsIDEwMDA2LCAKKyAgICAxMjg5MjIsIDI5MjIsIDYwODIsIDcwMTQ3LCA2NTAwOSwgOTgzOTQyLCAxMjU2NywgNjY3MTIsIDAsIDQxNDEyLCA3ODY1MSwgCisgICAgMTE5NTkxLCAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDY2NzY0LCAyMDMyLCA3ODM1NCwgCisgICAgODM0NjIsIDExOTEzMSwgMCwgMCwgNjc4MjYsIDQzMDg1LCA2MDU3LCA1MDgsIDkzOTY4LCA5Mjk4OSwgNjc5NjgsIAorICAgIDkxNzk0MSwgOTIxOTgsIDAsIDEyODgzMSwgNjM4LCA2MDgzLCAxMTkwNzIsIDEyNDk1MCwgNzAxNDQsIDIzMDUsIDc4MzQ4LCAKKyAgICA2ODA5NiwgOTE3NzcyLCA2MDU2LCA2NjU5LCA2Nzk2OSwgOTgzMjkwLCA2MDg1LCAwLCAwLCAzOTE1LCA0MTYzNCwgCisgICAgMTI4MjI3LCA0MTYzOSwgNjM5MTIsIDExOTQxLCA5ODM3ODMsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIAorICAgIDMyNDksIDE3NjgsIDkzOTgyLCAxMjMyOCwgNTAxLCA5Mzk4NSwgMTA2MDEsIDk4MzI5NCwgNTgzLCAxMTkzNTIsIDQxOTc3LCAKKyAgICAwLCA2NjAwNCwgNjY0MTYsIDY1MDUsIDc0MDEwLCA5MTc4MzMsIDEzMDY0LCA1NTI2NywgMTE5MTEzLCA2NTAwLCA1NTI2LCAKKyAgICA2NTA0OSwgMTI4MDI4LCAxMjk5MCwgOTgzOTAxLCA5MjM3NiwgMTI3NDUsIDk2NzgsIDEyMTEwOCwgMTIwNTg3LCA5ODY5LCAKKyAgICA4MzE1MCwgMTc3MSwgMTI4OTY1LCA4OTM2LCA5Mjk2NCwgMTI1MjczLCA0MjA4LCA3ODM0MSwgNzg1NjcsIDc4MzQyLCAKKyAgICA2Nzc0MiwgOTgzMjA4LCA3NDEwMSwgMTI4NjA1LCAxMTc2MiwgMTI5MzE3LCA3MDA5NiwgNjgzNSwgNjgwMTAsIDY2NDc1LCAKKyAgICAxMjAyNjAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDExOTgzMCwgNTA2OSwgNzM3MzYsIDUwMjgsIDk4OTcsIDkyNzc0LCAKKyAgICA3MzczOSwgNTAyNiwgOTgzMjU1LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCAKKyAgICA3NDc5MCwgNzgxMzgsIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCAKKyAgICA0MTA3MCwgNzc5MDMsIDc2NTgsIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCAKKyAgICA5ODM2NzksIDEwNjAwLCA3ODU1OCwgNjIwLCA0MTAwMSwgNjAyOCwgNzA0NDUsIDQyODkyLCA5ODMzMTMsIDcxMTE2LCAKKyAgICA1MDI0LCA3NDk0NSwgNDEwMDMsIDY4MTM3LCA1MDI1LCA3Mjk3LCA5MTc4MjQsIDc1MDM5LCAxMTg4ODUsIDEyNzk1NiwgCiAgICAgNjU1NTcsIDAsIDc0NTQxLCAxMjg5MjQsIDExNTk5LCAxMjgyMDksIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAKICAgICAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDcwMjczLCAxMTU2OSwgNjUyNzUsIDg5MDYsIDQzOTQ1LCA1NzU1LCAyNjM2LCAKICAgICA3MTIwMywgMTA4MTUsIDExNjE5LCAyMzAxLCA0MTU0MCwgNzgxNSwgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAxMTYwNCwgCi0gICAgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgOTE3NzYzLCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgNjY4ODYsIAotICAgIDY0MTMxLCA2NjE2LCAwLCAxMTg4NzUsIDEwOTUzLCAzOTEsIDAsIDY5Nzg1LCA0ODIsIDQyMjk2LCAxMTU4OCwgMCwgCi0gICAgNDM2MDYsIDcxMTg1LCA2ODM5NywgNjYzNzAsIDc0MjgyLCA0MjMzNSwgNjk3ODYsIDcyNDIxLCA4Mjk5OCwgNzUzOCwgCi0gICAgNTMxNSwgODMzNjcsIDQyNDkxLCA5MjkwMSwgNDIwNjEsIDEyODAwMiwgNDU3NiwgMCwgNjg0MTcsIDQzODA5LCA0Mjc3LCAwLCAKLSAgICAzNTYzLCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAxMTMzNywgNzgyMDksIDEyMDI0NCwgNjM5ODksIAotICAgIDM5NTgsIDEyMTMyLCAxODQ5LCAwLCA5OTIxLCA0MjQ1MSwgNDI1MywgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIAotICAgIDQxMTYwLCAxMjE0ODEsIDM2MTgsIDc4MzM4LCAxOTQ5MjQsIDQzMzAwLCA1MTU2LCA5MjYyOSwgNzAzNTAsIDkyOSwgNjgyNywgCi0gICAgNDIwMzUsIDQyNDM3LCAxNTU1LCAwLCA4NjkxLCA2NjQzNSwgMjIxNSwgNDE2NjIsIDk0MDEwLCAxMTkyNjIsIDAsIAotICAgIDEyODgyNCwgOTM5NTIsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgOTgzNzM0LCA0MjU3OCwgNzEwNDksIDQxNjYxLCA3ODM1MSwgCi0gICAgNDMyNjcsIDkzNTYsIDAsIDE5NDg4MCwgOTgzNDAxLCAxMjg2LCAxMDE2NiwgOTgzMTE3LCAwLCA2NDcwNywgMTI4OTI1LCAKLSAgICA0MjQ3NiwgNzczMCwgMTExNTYsIDEyODUyMiwgNDI0ODMsIDEyOTA4MywgNzQ5NDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIAotICAgIDQzMzU5LCAwLCA2NjQxLCA1MjUsIDQxNjI3LCA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIAotICAgIDY1MjI1LCA4MzIxLCA0MjUwNCwgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAxMjgzMjEsIDg1ODcsIAotICAgIDEyMTMxOCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgODY3OSwgNDE5MjQsIDE1NzYsIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgCi0gICAgODMxNTMsIDExMzc0LCA3ODA0MywgMTA4ODksIDQzNDYxLCA3NzU3LCA0MjQ2MiwgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIAotICAgIDI3MTgsIDQxNjgsIDQzOTA0LCAxMzMwOCwgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCA0MzkwMiwgNzc5NDgsIDM2MywgCi0gICAgMTEwMTUsIDQzOTAzLCA3Nzk0NCwgNDM4NTcsIDgzMDQ5LCA2NjY5MiwgMTIwODI2LCAwLCA2NjQ5MiwgNjU5MywgNjQ2MjUsIAotICAgIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAwLCAxMDAxMywgNjQ0MzQsIDc1MDEwLCAxMjcwOTUsIDk0OTIsIDExNzgyLCA2NDM4MiwgCi0gICAgMTI4MzMsIDc3ODMwLCAwLCAxMjk3LCA0MTYzMCwgNjMwLCAxMjA5NjAsIDk4MzkyMywgMTIwNzc0LCA3MDE2NSwgMTA0MywgCi0gICAgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMCwgMTI0OTQ1LCAzMTMsIDEyMTQ4MywgNDE4ODEsIDE5NDY1OCwgNDIzMTEsIDc0NDUsIAotICAgIDQzOTA2LCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIDk0MDUsIDExMjY4LCA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgCi0gICAgOTQyMiwgNDM4OTQsIDY2NDk1LCA2OTk5MCwgOTgzODg1LCA5Mjk5MCwgNDE3MTgsIDEwNzA3LCAxNjAzLCA5ODM3MDMsIAotICAgIDExOTAwMywgMCwgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgNzEwNjcsIDEwNTQ2LCA3NDIxMCwgNzgxMDEsIAotICAgIDExNjAwLCA3Nzk2MSwgMjc5NywgNDM5MjQsIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAxMjcwODAsIAotICAgIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIDEyNzUyOCwgMTExOTgsIDY2ODIxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCAKLSAgICA0MjQzMywgNzc5NjQsIDc2MDMsIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgCi0gICAgMzYyLCA5MjQzOSwgNDM4OTAsIDgwMzcsIDQzNzc3LCAxMTUzNSwgMTI2NTM5LCA0Mzg5MywgNTE4NSwgNzE2NSwgNTUyMSwgCi0gICAgMTAzMzQsIDIwOTMsIDcxMzI5LCAxMDMwMiwgMTI1MTMxLCAxMDEwNCwgMTAyNywgNTE4MSwgMTI4NDM1LCA1MTE3LCAKLSAgICAxMDUyMywgMTQ0NiwgNDIzMjAsIDY4NDUsIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIAotICAgIDQyODk4LCAzNDA1LCAwLCAxOTQ2NDQsIDU1MjMsIDQzOTE1LCA0MjYyMCwgOTI0NDcsIDc0OTQzLCA5NTQ5LCAwLCAxMDU0OSwgCi0gICAgNDM5MjMsIDk2NjEsIDQyOTMzLCA3NDg4NCwgNzc5MTAsIDc4MDY4LCA0MzkyMSwgMCwgNzExODQsIDk4MzA3MCwgNDE5OTEsIAotICAgIDk4Mzg5MywgMCwgNzYzMCwgOTg0NiwgNzY4NCwgMTAzNTAsIDEyODQ1MywgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgCi0gICAgNzc5ODAsIDY2NDg1LCA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNDM5MDksIDc0NDM4LCAxMjMzMCwgMTI4MjcyLCAwLCAKLSAgICA0MjQxNywgNDIzODMsIDY2NjMwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDQzOTA4LCA3NDQ0MywgMTI3ODk0LCAxMDIwOSwgCi0gICAgODMxMywgNDE5NSwgNzQ0MzUsIDEzMTYsIDY2NjkwLCA3NTA3MiwgNjMzMiwgNjQ4OTQsIDk4MzE1NiwgNjU4NzEsIDY3MjUwLCAKLSAgICAxNzM2LCA5ODM2ODQsIDM5MDEsIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzgyNDEsIDY5MywgOTEzMCwgCi0gICAgMzE0LCA2NDE0OSwgNDI0MjAsIDExOTQ5LCAxMjcyMDAsIDEyMDE1MiwgMTEwMjYsIDEyMDUxNiwgNTMzMiwgNjk0MCwgCi0gICAgNjQxNTQsIDEyNjM1LCAxMjQ5ODAsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCA4MzMwNywgNzg4NDAsIDcxMzY4LCAKLSAgICAxMjgyNCwgNDM5MTEsIDQ1MjgsIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIAotICAgIDY0NTYwLCAzNzU3LCAwLCAwLCA3NDMwMiwgNjU4NjksIDczNzYwLCAyNTY5LCA3NDk3NiwgMjMyNiwgNjU3NDAsIDI1NjUsIAotICAgIDQyNDU5LCA3NTk2LCA3OTIxLCA5ODM4NjgsIDczODYyLCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgOTI2MjIsIAotICAgIDQwNDQsIDkyNjQ2LCA0Mzk1MywgMTIyMzMsIDk4Mzg3MSwgMTAyMywgNDc0LCAxOTQ5NDAsIDExOTgxOCwgMCwgMCwgCisgICAgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgMTI2NDY2LCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgNjY4ODYsIAorICAgIDY0MTMxLCA2NjE2LCAxMjA3OTYsIDExODg3NSwgMTA5NTMsIDM5MSwgOTgzMTAzLCA2OTc4NSwgNDgyLCA0MjI5NiwgCisgICAgMTE1ODgsIDEyODU5MSwgNDM2MDYsIDcxMTg1LCA2ODM5NywgNjYzNzAsIDc0MjgyLCA0MjMzNSwgNjk3ODYsIDEyMDUwLCAKKyAgICA4Mjk5OCwgNzUzOCwgNTMxNSwgODMzNjcsIDQyNDkxLCA5MjkwMSwgNDIwNjEsIDEyODAwMiwgNDU3NiwgMCwgNjg0MTcsIAorICAgIDQzODA5LCA0Mjc3LCAwLCAzNTYzLCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAxMTMzNywgCisgICAgNzgyMDksIDEyMDI0NCwgNjM5ODksIDM5NTgsIDEyMTMyLCAxODQ5LCAxMjczMzgsIDk5MjEsIDQyNDUxLCA0MjUzLCAKKyAgICA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgNDExNjAsIDEyMTQ4MSwgMzYxOCwgNzgzMzgsIDkzOTU2LCA0MzMwMCwgCisgICAgNTE1NiwgOTI2MjksIDcwMzUwLCA5MjksIDY4MjcsIDQyMDM1LCA0MjQzNywgMTU1NSwgNjc4NDcsIDg2OTEsIDY2NDM1LCAKKyAgICAyMjE1LCA0MTY2MiwgOTQwMTAsIDExOTI2MiwgMCwgMTI4ODI0LCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIAorICAgIDQyNTc4LCA3MTA0OSwgNDE2NjEsIDc4MzUxLCA0MzI2NywgOTM1NiwgMCwgMTk0ODgwLCA5ODM0MDEsIDEyODYsIDEwMTY2LCAKKyAgICA5ODMxMTcsIDAsIDY0NzA3LCAxMjg5MjUsIDQyNDc2LCA3NzMwLCAxMTE1NiwgMTI4NTIyLCA0MjQ4MywgMTI5MDgzLCAKKyAgICA3NDk0MCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgNDMzNTksIDcyODI3LCA2NjQxLCA1MjUsIDQxNjI3LCA5MTc5MjMsIDg3NjMsIAorICAgIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCAKKyAgICA0Mzc3LCA4NTU5LCAxMjgzMjEsIDg1ODcsIDEyMTMxOCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgODY3OSwgNDE5MjQsIDE1NzYsIAorICAgIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgODMxNTMsIDExMzc0LCA3ODA0MywgMTA4ODksIDQzNDYxLCA3NzU3LCA0MjQ2MiwgCisgICAgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIDI3MTgsIDQxNjgsIDQzOTA0LCAxMzMwOCwgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCAKKyAgICA0MzkwMiwgNzc5NDgsIDM2MywgMTEwMTUsIDQzOTAzLCA3Nzk0NCwgNDM4NTcsIDgzMDQ5LCA2NjY5MiwgMTIwODI2LCAwLCAKKyAgICA2NjQ5MiwgNjU5MywgNjQ2MjUsIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAxMTM3OTQsIDEwMDEzLCA2NDQzNCwgNzUwMTAsIAorICAgIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDkyMTIsIDEyODMzLCA3NzgzMCwgNzA2OTIsIDEyOTcsIDQxNjMwLCA2MzAsIDEyMDk2MCwgCisgICAgOTgzOTIzLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAxMjUyNDksIDEyNDk0NSwgMzEzLCAKKyAgICAxMjE0ODMsIDQxODgxLCAxOTQ1NzUsIDQyMzExLCA3NDQ1LCA0MzkwNiwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCAKKyAgICA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIDk0MjIsIDQzODk0LCA2NjQ5NSwgNjk5OTAsIDk4Mzg4NSwgCisgICAgOTI5OTAsIDQxNzE4LCAxMDcwNywgMTYwMywgOTgzNzAzLCAxMTkwMDMsIDEwMTA2MSwgNjMxLCA3Nzk1MiwgNjk3MDMsIAorICAgIDEzMTYxLCA2NTI3MiwgNzEwNjcsIDEwNTQ2LCA3NDIxMCwgNzgxMDEsIDExNjAwLCA3Nzk2MSwgMjc5NywgNDM5MjQsIAorICAgIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAxMjcwODAsIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIAorICAgIDEyNzUyOCwgMTExOTgsIDY2ODIxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIAorICAgIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgMzYyLCA5MjQzOSwgNDM4OTAsIAorICAgIDgwMzcsIDQzNzc3LCAxMTUzNSwgMTI2NTM5LCA0Mzg5MywgNTE4NSwgNzE2NSwgNTUyMSwgMTAzMzQsIDIwOTMsIDcxMzI5LCAKKyAgICAxMDMwMiwgMTI1MTMxLCAxMDEwNCwgMTAyNywgNTE4MSwgMTI4NDM1LCA1MTE3LCAxMDUyMywgMTQ0NiwgNDIzMjAsIDY4NDUsIAorICAgIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIDQyODk4LCAzNDA1LCAwLCAxOTQ2NDQsIAorICAgIDU1MjMsIDQzOTE1LCA0MjYyMCwgOTI0NDcsIDc0OTQzLCA5NTQ5LCAwLCAxMDU0OSwgNDM5MjMsIDk2NjEsIDQyOTMzLCAKKyAgICA3NDg4NCwgNzc5MTAsIDc4MDY4LCA0MzkyMSwgMCwgNzExODQsIDk4MzA3MCwgNDE5OTEsIDEyOTM2OSwgMCwgNzYzMCwgCisgICAgOTg0NiwgNzY4NCwgMTAzNTAsIDEyODQ1MywgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgNzc5ODAsIDY2NDg1LCAKKyAgICA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNDM5MDksIDc0NDM4LCAxMjMzMCwgMTI4MjcyLCAwLCA0MjQxNywgNDIzODMsIAorICAgIDY2NjMwLCAzNDA3LCA2MjkzLCAwLCA2NjI1MiwgNDM5MDgsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCA4MzEzLCA0MTk1LCAKKyAgICA3NDQzNSwgMTMxNiwgNjY2OTAsIDc1MDcyLCA2MzMyLCA2NDg5NCwgOTgzMTU2LCA2NTg3MSwgNjcyNTAsIDE3MzYsIAorICAgIDEyMTAwNiwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODI0MSwgNjkzLCA5MTMwLCAzMTQsIAorICAgIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDEyNzIwMCwgMTIwMTUyLCAxMTAyNiwgMTIwNTE2LCA1MzMyLCA2OTQwLCA2NDE1NCwgCisgICAgMTI2MzUsIDEyNDk4MCwgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDgzMzA3LCA3ODg0MCwgNzEzNjgsIDEyODI0LCAKKyAgICA0MzkxMSwgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIAorICAgIDM3NTcsIDAsIDk0MDU5LCA3NDMwMiwgNjU4NjksIDczNzYwLCAyNTY5LCA3NDk3NiwgMjMyNiwgNjU3NDAsIDI1NjUsIAorICAgIDQyNDU5LCA3NTk2LCA3OTIxLCAxMjY1NjcsIDczODYyLCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgOTI2MjIsIAorICAgIDQwNDQsIDkyNjQ2LCA0Mzk1MywgMTIyMzMsIDExMzgxNCwgMTAyMywgNDc0LCAxMjUyNzIsIDExOTgxOCwgOTgzNzQ0LCAwLCAKICAgICA0MjQ4NywgNjU1NTYsIDEyMTE2OCwgMTI3ODY2LCA0MjI5NSwgMTI4MjAzLCAxMjE0NzQsIDcxMzIyLCA5MjUxOCwgMjIyMiwgCi0gICAgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCA5ODM0NTUsIDAsIDU1MjUxLCAxMDExOCwgCi0gICAgMzEzMywgMTI3NzcxLCA3MTg1NywgMTIxMjAxLCA5NjEwLCA4MDY4LCA4MTk3LCA5MTc1NDUsIDY5OSwgMCwgNDE2NjUsIAotICAgIDU4NjgsIDEyODcxMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIAotICAgIDY1NTgzLCA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgNzgxMjksIDY4NzUxLCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAKLSAgICAxOTM3LCA5ODM3NTEsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCA3Nzk2NSwgMTE5ODM3LCAxMTAxNywgCi0gICAgMTIwNjAxLCAwLCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCAKLSAgICA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgCi0gICAgMTIxMjkyLCA3Mzk1NywgMTE0MDcsIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTIwNTY1LCA0MjQ4MSwgCi0gICAgMTE3MTYsIDY2NDczLCA3MTc5LCA0MjI4OSwgMTI1MDk1LCA2NDEwMywgOTY5LCAwLCA5MzUyLCA3MTQ4MSwgNjE2NSwgCi0gICAgNjQxMDAsIDkxNzgxOSwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMTEzNzYyLCA4OTE0LCA2NjkwOCwgCi0gICAgMTI0OTU0LCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIDY3ODQ5LCA1NzQ2LCA2NjQwOCwgCi0gICAgMCwgNjQ0MTYsIDQyNDIyLCA4MzUwNiwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAxMjEzNjksIDgzNTI0LCAKLSAgICA0MjMyOCwgMTA3NjcsIDEyODg2MiwgODExNSwgODM0NTQsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAotICAgIDk4MzIzMCwgNjU4NDgsIDkyODg0LCA4MzUxNywgNjk4NjMsIDEyODMyOCwgMTI2OTg3LCA0NDg2LCAxMjgwODIsIDkxNzc5NiwgCi0gICAgMCwgMTA5MjUsIDAsIDgzNTE1LCA4MzUwNywgMTI0OTUyLCA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgNzY2OCwgCi0gICAgMTAzMDUsIDQyNDYxLCA3NDg4MiwgNDIzNDksIDg4MzIsIDc4MDUxLCA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgCi0gICAgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAxMTkyMTQsIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAKLSAgICAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAxOTQ5NzMsIDEyODc0NywgNjQ5MzMsIAotICAgIDE5NDYyNywgNDE5NjAsIDY2OTksIDQyOTAzLCAxMjg3NTUsIDEyNTAxMywgNjgyMywgNDIzOTEsIDE1ODgsIDQzNTAyLCAKLSAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCAxMjgzMzUsIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAotICAgIDQyNDgwLCA5MTc5NDksIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCAKLSAgICA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAKLSAgICAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI4NDMyLCA0MTU1NywgMCwgMTI4OTM4LCAxMTA3MCwgMTE5MjIxLCA1MTU3LCAKLSAgICA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgNzM4ODgsIAotICAgIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgMTI4NDkyLCAxMTg5MzAsIDY0NTI3LCAxMjEzOTUsIDc4NzcsIDEyNzIzLCAKLSAgICA5ODM3OTgsIDY4Nzc2LCAxMjAwOTYsIDc0NjAyLCA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIAotICAgIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDAsIDc4NjMxLCA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDEyMDk2NiwgCi0gICAgOTczNCwgNjU0MjUsIDAsIDEyMTQzMSwgMTI3MzU3LCA3NDg5MCwgNzg4MzYsIDEwMTEyLCAxMDgyNywgMTk0NjM1LCA5ODY2LCAKLSAgICA3NDUyNywgNjY2NzUsIDExODg2NywgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgNjc3MzgsIDg2MzYsIDk4MzkyNywgCi0gICAgODMxNSwgNjU0NDQsIDk4Mzc5MywgMTk1MDExLCA3NDU5NSwgNjE1MiwgNzg4MjAsIDczOTQ3LCA2NjI5LCAxMjUwNTYsIAotICAgIDEyMDE3MSwgMCwgNzQ1ODksIDQzOTkzLCAxMjgzNDYsIDY5NzkwLCA2NDQzNSwgNjQ5NTUsIDQzNjkwLCAxMTA0NiwgCi0gICAgMTE0OTAsIDQyNzMwLCA0NDg1LCA3MTEyNiwgMTI4MTk0LCA2NDkyNiwgMCwgOTgzMTMzLCA0MzgzMCwgNTg2OSwgMTI0MzcsIAotICAgIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAxMjgyNSwgMTIxMTU4LCAwLCAxMjcyNSwgNzQwOTIsIDEyNzEwNiwgNzg2MzQsIAorICAgIDY2NDk5LCAxMjkzMzYsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCA5ODMyMjYsIDE4NTgsIDk4MzQ1NSwgMCwgCisgICAgNTUyNTEsIDEwMTE4LCAzMTMzLCAxMjY0OTgsIDcxODU3LCAxMjEyMDEsIDk2MTAsIDgwNjgsIDgxOTcsIDkxNzU0NSwgNjk5LCAKKyAgICAwLCA0MTY2NSwgNTg2OCwgMTI4NzEwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgCisgICAgMCwgMTkyMywgNjU1ODMsIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCA3ODEyOSwgNjg3NTEsIDkxNzgzNiwgNjQ2NCwgCisgICAgNzAzNiwgMjk5NiwgMTkzNywgMTI3MDUwLCA2ODQ4MSwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgNzc5NjUsIAorICAgIDExOTgzNywgMTEwMTcsIDEyMDYwMSwgOTgzMTY5LCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgCisgICAgNDM0MjIsIDEwNTc5LCA4NTYwLCA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgCisgICAgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgOTQwMTcsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIAorICAgIDY0MTA1LCAxMjA1NjUsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAxMjUwOTUsIDY0MTAzLCA5NjksIDAsIAorICAgIDkzNTIsIDcxNDgxLCA2MTY1LCA2NDEwMCwgOTE3ODE5LCA2NjMyLCA3MjgyOCwgNDI0MDIsIDc0MzI3LCA3ODA2LCAKKyAgICAxMTM3NjIsIDg5MTQsIDY2OTA4LCAxMjQ5NTQsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgCisgICAgNjc4NDksIDU3NDYsIDY2NDA4LCAxMjc0MDIsIDY0NDE2LCA0MjQyMiwgODM1MDYsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIAorICAgIDMzOCwgNTA1OSwgMTIxMzY5LCA4MzUyNCwgNDIzMjgsIDEwNzY3LCAxMjg4NjIsIDgxMTUsIDgzNDU0LCA3NDc1OCwgMCwgCisgICAgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCA5ODMyMzAsIDY1ODQ4LCA5Mjg4NCwgODM1MTcsIDY5ODYzLCAxMjgzMjgsIAorICAgIDEyNjk4NywgNDQ4NiwgMTE5OTczLCA5MTc3OTYsIDAsIDEwOTI1LCAwLCA4MzUxNSwgODM1MDcsIDEyNDk1MiwgNDIzMDksIAorICAgIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDc2NjgsIDEwMzA1LCA0MjQ2MSwgNzQ4ODIsIDQyMzQ5LCA4ODMyLCA3ODA1MSwgCisgICAgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgNzc5NCwgMTE5MjE0LCAKKyAgICA0MjQyOSwgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCA2OTY1OCwgMTI4MTcwLCAKKyAgICA2NTQwMiwgMTE5NTgxLCAxOTQ5NzMsIDEyODc0NywgNjQ5MzMsIDE5NDYyNywgNDE5NjAsIDY2OTksIDQyOTAzLCAxMjg3NTUsIAorICAgIDEyNTAxMywgNjgyMywgNDIzOTEsIDE1ODgsIDQzNTAyLCA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCAKKyAgICAxMjExNDUsIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIDQyNDgwLCAxMjkwMzEsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIAorICAgIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgCisgICAgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI4NDMyLCA0MTU1NywgCisgICAgOTgzODgyLCAxMjg5MzgsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIAorICAgIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCA3Mzg4OCwgNzQzNzcsIDExMDI5LCA2NjY1MSwgMTI3MzQ2LCAKKyAgICAxMjg0OTIsIDExODkzMCwgNjQ1MjcsIDEyMTM5NSwgNzg3NywgMTI3MjMsIDk4Mzc5OCwgNjg3NzYsIDEyMDA5NiwgNzM5NTQsIAorICAgIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgNzEyNzAsIAorICAgIDc4NjMxLCA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDEyMDk2NiwgOTczNCwgNjU0MjUsIDkyMjA3LCAKKyAgICA3ODgzNCwgMTI3MzU3LCA3NDg5MCwgNzI4MjIsIDM0NDgsIDEwODI3LCAxOTQ2MzUsIDk4NjYsIDc0NTI3LCA2NjY3NSwgCisgICAgMTE4ODY3LCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCA2NzczOCwgODYzNiwgOTgzOTI3LCA4MzE1LCA2NTQ0NCwgCisgICAgOTgzNzkzLCAxOTUwMTEsIDc0NTk1LCA2MTUyLCA3ODgyMCwgNzM5NDcsIDY2MjksIDEyNTA1NiwgMTIwMTcxLCAwLCAKKyAgICA3NDU4OSwgNDM5OTMsIDEyODM0NiwgNjk3OTAsIDY0NDM1LCA2NDk1NSwgNDM2OTAsIDExMDQ2LCAxMTQ5MCwgNDI3MzAsIAorICAgIDQ0ODUsIDcxMTI2LCAxMjY1ODgsIDY0OTI2LCAxMjAxNjgsIDk4MzEzMywgNDM4MzAsIDU4NjksIDEyNDM3LCA0MjcyOCwgMCwgCisgICAgNzA0MCwgMzU4OCwgNjM3OTcsIDEyODI1LCAxMjExNTgsIDcyODY0LCAxMjcyNSwgNzQwOTIsIDEyNzEwNiwgNzg2MzQsIAogICAgIDIyMywgNzg2MzUsIDY5Njc1LCAxMjAxMTksIDQyNDQ0LCAxMjg0NDksIDY0NDk5LCA2NTI0NSwgMTI5MTA0LCAxMTcxLCAKICAgICAxMjg4MDIsIDY5NzE3LCAxMjAxMTMsIDE4MDUsIDg3NzIsIDQzODIwLCAwLCA5OTMwLCA2NTI0NywgNzg2MTksIDc0OTU0LCAKICAgICAyMzM4LCAxMjAwMzIsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCAxMzA5MiwgMTExODUsIDY4MTI2LCAxMjEzLCAKICAgICAxMjg0MTksIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCA4MzAwNSwgNjQzODcsIDQxMTUsIDcxMzMxLCA1MDA1LCAKICAgICA2NDA3MCwgNjQwNzMsIDEwNjc5LCA4MzAwMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDgzMzU4LCA4MzAxMCwgODI1MSwgCi0gICAgMTAxMzYsIDY1NDM2LCAwLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDcwNzk1LCAxMDcwMSwgMTc2NCwgMzEwMSwgCi0gICAgMTI3ODE1LCAxMjg1OCwgMTIwMTU5LCAxMjAxMDEsIDExMzczLCA2Mzc4LCA3MTA5MywgMTIwMTAzLCA4NjYzLCA5MzEyLCAKLSAgICA0MTY0NCwgNDUzOSwgMjEyOSwgNzA3ODUsIDkyMjIsIDEyMTQ3OSwgMTE4OTA3LCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIAotICAgIDEyODUxNSwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc2NywgCi0gICAgNzE4NTgsIDcyNDQwLCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCA3MTExNywgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAKLSAgICAxMDg0MCwgMCwgMTA2NjgsIDExMzcyMywgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDk4MzExNCwgODgyMiwgMCwgMTE1NywgCi0gICAgNjQ5MDMsIDg2MzgsIDEyNzI2NSwgOTE3ODg2LCAxMjc5MDUsIDAsIDY5ODQ4LCA4MjM1LCAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAKLSAgICAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMTIxMDY1LCA2NTQzMCwgNzEzMjEsIDYwNzksIDY4MTcsIDEwNzY0LCAxMjAzMTQsIAotICAgIDY0MjkxLCAxMjAzMTUsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIDE1NTgsIDE5NDU3MiwgMTk5MSwgNzg4MiwgCi0gICAgNDIyNTQsIDEyODk1NCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIAotICAgIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgNzQwMzMsIDc4OTYsIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCAKLSAgICA2NjM3MywgOTgzMjQ5LCAxMjg3NDYsIDY0OTA4LCA5MjY5MSwgNjMxMSwgOTMwMTksIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCAKLSAgICA0MzEwOCwgMTIwMzI2LCA3MTA4MywgNDE3MDUsIDkyMTg4LCA2NTk4LCAxMjEyOTgsIDY1OTksIDY2ODIyLCA5MzAzMSwgCi0gICAgNDIxNDgsIDExODgyNSwgNjYwMjcsIDEyMTA1NSwgNjU5NywgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCAKLSAgICA2OTkwNCwgMTI4NDk1LCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIDkzMDU5LCA4MzExNCwgMjMzNiwgCi0gICAgOTgzOTAzLCAwLCA2NzE2OSwgMTIwNDQyLCAxMjcwOTIsIDE5MjEsIDEwOTQ3LCAxOTkyNywgNzAzOTAsIDY1NDA2LCAKLSAgICA5ODM0NjQsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAKLSAgICAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCA2NTQwMywgOTgzMDg5LCAKLSAgICAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMTk0NzY1LCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIAotICAgIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgCi0gICAgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAKLSAgICAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxMjE0MDMsIDEyMTI5NCwgODQyMSwgMTI3NDcyLCAKLSAgICA2OTY4MiwgNDM3MDUsIDUwMiwgNzUwMjksIDY1NDMxLCAxMTkwNTYsIDY5OTU0LCAxMjA0MywgMTMwMywgMzE2LCA3MzY0LCAKLSAgICAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCA3MDM3MiwgMTI3ODc3LCAKLSAgICA0MjQ4OCwgNzAzMzksIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgNzM4NTYsIDk4Mzg0MCwgMTI0OTYwLCAxMjA4MzksIAotICAgIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzUwMzQsIDYzNzUxLCAxMjEzNywgNTU0OCwgNzc5ODUsIDAsIAotICAgIDY1NzI3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDAsIDExMzAxLCAxMTIxNCwgNjU5NTIsIDc4MDEwLCAKLSAgICA5ODc0LCA3ODAwNywgOTgzMTE1LCAxMzE5LCAzMDUwLCA2NTQxMCwgNjczOTksIDkyNjA2LCA3ODAxNiwgNzgwMTcsIAotICAgIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDgzMDUwLCA0NjkxLCA5MjI0MiwgOTM0NSwgNjIxLCA4MzUxMiwgMTI4MjIyLCAwLCAKLSAgICA2NTQxMSwgMCwgNDExODIsIDczODgxLCA2NTQwOCwgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgMTE5MTE4LCAxMDg4NywgCi0gICAgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCA3MTA0MiwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIDg1MDgsIDEyNzc5NCwgCi0gICAgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCA5ODMzNzQsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIDQxMzc5LCAKLSAgICAxMDA1MCwgMTI3MTgsIDY5ODU0LCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMTI4OTc4LCA1NTI4MiwgCi0gICAgOTExOSwgMjc4NywgNzkyMCwgNzAwOTEsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgOTE3NzkyLCAwLCA3ODAyMSwgCi0gICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgNzQ4OTUsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgCi0gICAgNjQzOTYsIDEwMTI2LCAxMjExNiwgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDcxODQ2LCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgCi0gICAgNjg0MTIsIDQxMzQ1LCAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAKLSAgICAyMTA0LCA2NDg1OCwgMzYxLCAxMjAzNTcsIDg0NSwgOTIxNzQsIDQxNTYwLCAxMTk3MCwgNDU2MiwgMTI4NDczLCAyOTI2LCAKLSAgICA2ODQ5NSwgNDU2OSwgNzQxMzAsIDEyODY1OSwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgCi0gICAgNjU2MjksIDAsIDE5NDg1OCwgNzQ4NTQsIDAsIDcwNDY2LCA2NzM5MiwgNjYzODUsIDcxNDM5LCA2MjkxLCAwLCA2ODQ4NywgCi0gICAgNDE2NjksIDcwOTQsIDEyMTA1MSwgMCwgMTIwOTk5LCA3NDA1NCwgMTI3NzU0LCAxMjg5MTcsIDAsIDgzOSwgMTIxMzE1LCAKLSAgICA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgNjc3NTYsIDQ4NTksIDY0NDY3LCAwLCA4MzUyNSwgMTE4OTk4LCA3MjA2LCAKLSAgICAxMTk2MzYsIDY2NDcsIDQzOTg2LCA4MzUxOCwgNjk3NjYsIDE5NDY2NCwgNjQ3NjQsIDQyMTAsIDEyODMwMCwgMTI3OTM2LCAKLSAgICA4MDQsIDgzNTIwLCAwLCAxMjI5OCwgNzAzNDQsIDY2NjUzLCAxMjY5ODMsIDY0OTI0LCAxMDA5MSwgNjcyMDAsIDk0NjgsIAorICAgIDEwMTM2LCA2NTQzNiwgMTAwODYyLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDcwNzk1LCAxMDcwMSwgMTc2NCwgCisgICAgMzEwMSwgMTI1MTkyLCAxMjg1OCwgNzQ3NjcsIDEyMDEwMSwgMTEzNzMsIDYzNzgsIDcxMDkzLCAxMjAxMDMsIDg2NjMsIAorICAgIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCA3MDc4NSwgOTIyMiwgMTIxNDc5LCAxMTg5MDcsIDQyNTksIDkwOTIsIDc0NTY3LCAKKyAgICA0MTk2MSwgMTIxMzYxLCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgNzI4NjcsIDEyMDU4MiwgMTI5MywgNzk0NywgCisgICAgMjEzMiwgOTgzNzY3LCA3MTg1OCwgNzI0NDAsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDcxMTE3LCAwLCA2NTg4OCwgCisgICAgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgNzI4MjYsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCA5ODMxMTQsIDg4MjIsIAorICAgIDAsIDExNTcsIDY0OTAzLCA4NjM4LCAxMjcyNjUsIDEyOTEwNiwgMTIwNjY5LCAxMDAzOTksIDY5ODQ4LCA4MjM1LCAKKyAgICAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMTIxMDY1LCA2NTQzMCwgNzEzMjEsIDYwNzksIAorICAgIDY4MTcsIDEwNzY0LCAxMjAzMTQsIDY0MjkxLCAxMjAzMTUsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIAorICAgIDE1NTgsIDE5NDU3MiwgMTk5MSwgNzg4MiwgNDIyNTQsIDEyODk1NCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgCisgICAgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgNzQwMzMsIDc4OTYsIAorICAgIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCA2NjM3MywgMTI5MDY2LCAxMjg3NDYsIDY0OTA4LCA5MjY5MSwgNjMxMSwgCisgICAgOTMwMTksIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgMTIwMzI2LCA3MTA4MywgNDE3MDUsIDkyMTg4LCA2NTk4LCAKKyAgICAxMjEyOTgsIDY1OTksIDY2ODIyLCA5MzAzMSwgNDIxNDgsIDExODgyNSwgNjYwMjcsIDEyMTA1NSwgNjU5NywgOTQxMiwgCisgICAgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCA2OTkwNCwgMTI4NDk1LCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIAorICAgIDkzMDU5LCA4MzExNCwgMjMzNiwgOTgzOTAzLCAwLCA2NzE2OSwgMTIwNDQyLCAxMjcwOTIsIDE5MjEsIDEwOTQ3LCAxOTkyNywgCisgICAgNzAzOTAsIDY1NDA2LCA5ODM0NjQsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgCisgICAgNDIyODUsIDQxNjc0LCAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCAKKyAgICA2NTQwMywgOTgzMDg5LCAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMTk0NzY1LCA3ODM1OSwgNTI4MCwgMCwgCisgICAgNDM0NCwgMTI5MDUsIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAKKyAgICAxMjkzNCwgNDE2ODIsIDY1NDMyLCA0MTY5MywgOTgzNDM0LCA2MDcxLCA2NTQzNCwgMTE5MDA4LCA0ODA0LCA0MDUzLCAKKyAgICAxMjAyMzcsIDEyNzQ2OSwgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMTIwMDQzLCAxMjEyOTQsIAorICAgIDg0MjEsIDEyNzQ3MiwgNjk2ODIsIDQzNzA1LCA1MDIsIDc1MDI5LCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIAorICAgIDEzMDMsIDMxNiwgNzM2NCwgMjAyOSwgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgCisgICAgNzAzNzIsIDEyNzg3NywgNDI0ODgsIDcwMzM5LCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCAxMjgxOTQsIAorICAgIDEyNDk2MCwgMTIwODM5LCA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc1MDM0LCA2Mzc1MSwgMTIxMzcsIAorICAgIDU1NDgsIDc3OTg1LCA5ODM1NTUsIDEwMDA3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDEwMDM5MSwgCisgICAgMTEzMDEsIDExMjE0LCA2NTk1MiwgNzgwMTAsIDk4NzQsIDc4MDA3LCAxOTQ3MzIsIDEzMTksIDMwNTAsIDY1NDEwLCAKKyAgICA2NzM5OSwgOTI2MDYsIDc4MDE2LCA3ODAxNywgNDI4MzAsIDQzOTk2LCA2NjcxNiwgODMwNTAsIDQ2OTEsIDkyMjQyLCAKKyAgICA5MzQ1LCA2MjEsIDgzNTEyLCAxMjgyMjIsIDEyMjg4OSwgNjU0MTEsIDkxNzU0MSwgNDExODIsIDczODgxLCA2NTQwOCwgCisgICAgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgMTE5MTE4LCAxMDg4NywgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCAKKyAgICA3MTA0MiwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIDg1MDgsIDEyNzc5NCwgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAKKyAgICAxMTk4NjcsIDM3MjIsIDk4MzM3NCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgNjk4NTQsIAorICAgIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAxMjg5NzgsIDU1MjgyLCA5MTE5LCAyNzg3LCA3OTIwLCA3MDA5MSwgCisgICAgNDAyMSwgMjAxMiwgNzk4NSwgNzgwOTMsIDExOTY2MywgOTE3NzkyLCA5ODM5NTEsIDc4MDIxLCA3ODAyMiwgNDEwLCAKKyAgICA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCA3NDg5NSwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgMTAxMjYsIAorICAgIDEyMTE2LCA0MTY3MywgNjg1MjQsIDExNDIyLCA3MTg0NiwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCA0MTM0NSwgCisgICAgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgNjQ4NTgsIAorICAgIDM2MSwgMTIwMzU3LCA4NDUsIDkyMTc0LCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDEyODQ3MywgMjkyNiwgNjg0OTUsIDQ1NjksIAorICAgIDc0MTMwLCAxMjg2NTksIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMDA5MDksIDY1NjI5LCAwLCAKKyAgICAxOTQ4NTgsIDc0ODU0LCA2Njc1MCwgNzA0NjYsIDY3MzkyLCA2NjM4NSwgNzE0MzksIDYyOTEsIDAsIDY4NDg3LCA0MTY2OSwgCisgICAgNzA5NCwgMTIxMDUxLCAxMjE0MDgsIDExOTA0MSwgNzQwNTQsIDEyNzc1NCwgMTI4OTE3LCAwLCA4MzksIDEyMTMxNSwgCisgICAgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDY3NzU2LCA0ODU5LCA2NDQ2NywgOTgzNDYxLCA4MzUyNSwgMTE4OTk4LCA3MjA2LCAKKyAgICAxMTk2MzYsIDY2NDcsIDQzOTg2LCA3MjczOCwgNjk3NjYsIDE5NDY2NCwgNjQ3NjQsIDQyMTAsIDEyODMwMCwgMTI3OTM2LCAKKyAgICA4MDQsIDY2NzQ2LCAwLCAxMjI5OCwgNzAzNDQsIDY2NjUzLCAxMjY5ODMsIDY0OTI0LCAxMDA5MSwgNjcyMDAsIDk0NjgsIAogICAgIDY3MjA2LCA2NzIwNSwgNjcyMDQsIDY3MjAzLCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgNzE4NTEsIDEyNzksIAotICAgIDE0MjUsIDYyMjQsIDExOTIyOSwgMTEwNDksIDEyNzEyMywgNzE0ODAsIDQyNjQ5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgCi0gICAgNjcyMDksIDExOTQwLCA2NzIwNywgNjY0LCAxMjA0MzcsIDUwMzQsIDkyNDk1LCA3MDIwMCwgMTI3NTI1LCA0MjcwMiwgCi0gICAgNzAxOTQsIDkzMDYxLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCA2NzIxOCwgOTExNSwgNzQzMCwgNzc4MzcsIDcwMTkxLCAKLSAgICAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIAotICAgIDc3ODM2LCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCA2Nzc0MSwgCi0gICAgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCA3ODgsIDc0MDI3LCAxOTQ2NjcsIDcxODgxLCAwLCAxNjYzLCAxMDQxOSwgNDI5MDEsIAotICAgIDQyNjM2LCA2NzIxMSwgNjcyMTAsIDEyOTE0NywgMTIwNjU2LCA2NzIxNSwgNjcyMTQsIDY3MjEzLCA2NzIxMiwgMCwgCi0gICAgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDE5NDczMiwgMCwgMTA4NTUsIAotICAgIDU0NDUsIDkzNTUsIDY3MjIxLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgOTgzODc0LCAxMTkyMzgsIDgwMTAsIAotICAgIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIDY0NDY5LCA5MjU5MiwgMTA1NTUsIDY3MjI3LCA0MzMzMywgCi0gICAgNjcyMjUsIDEyODQ4MywgMTIwNDI3LCAxMDQ1MSwgNjcyMjksIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIAotICAgIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDc3ODQyLCAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDgzMzQzLCAKLSAgICA5ODM1ODEsIDExMDEwLCAxMTE2NCwgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCA0Mzg0NiwgNzY4MiwgNzQwNDksIDE0NjIsIAotICAgIDEwMjM1LCAwLCAwLCA5ODMzMjUsIDQzNDQxLCAxMjc5MjQsIDEyNzc3NywgNDI1OTUsIDEyNjY0MSwgNzQ0MDIsIDExODg2MCwgCi0gICAgNzg2NjEsIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIAotICAgIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCA4MzIxMCwgMTIwNjYyLCA2OTkyMCwgMTk0NzAyLCA2MjE2LCA2NzIzMCwgCi0gICAgMTA3NTUsIDk0NTUsIDExMTU1LCA4MTI0LCAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyMTEyNSwgMCwgNjk2ODAsIDI4MjgsIDAsIAotICAgIDUzMSwgNDI2MzgsIDE5NDgwNCwgOTE3ODU2LCAxMjA5NjEsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAKLSAgICAxMjAzNjUsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMTIwODUwLCA0MjU5OSwgCi0gICAgNDI1OTcsIDQyNzA5LCA2ODgyOSwgMTI1MDEyLCAwLCA4NTM3LCAxMjczMDYsIDAsIDkzNTQsIDEyMTI0NCwgMTIxMzQ4LCAKLSAgICA0MTE5OSwgMTAxMjEsIDIwMjgsIDc0OTUwLCAxMjAyNTMsIDY5NzE1LCAxMjg1MjUsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgCi0gICAgOTgzNjU3LCA2NjQ0MCwgNzU0NSwgOTcwMCwgMTE5NDgsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDY4MzA2LCAKLSAgICA3NDA3MSwgMCwgOTgzNDU5LCAxMjcxMywgMTI3NTE5LCA3MDQwMiwgMCwgNzg3NzIsIDExMzc3MCwgMTczNCwgMCwgNzgxNDEsIAotICAgIDEyNzA0MCwgNjQ1OTQsIDI0NTYsIDIzMSwgNjgyMjcsIDc0MTY3LCA1NDIsIDkxNzk4MSwgMTE4Nzg2LCA5ODM4NTksIAotICAgIDE5NDc5NywgMTIzMCwgMTI1MDE4LCAxMjEzNDMsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIAotICAgIDY3NzM3LCA4MzUyLCA3ODQzNiwgNTY4NywgMTI3MDE4LCA2NDUxNSwgMTIxMzc4LCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgCi0gICAgNzg0MzQsIDk3MDQsIDAsIDE5NDU3MywgNzAwODAsIDcxMzM4LCAwLCA4NjYwLCAxMjY0NzgsIDAsIDEyODU2OSwgNzg3NzMsIAotICAgIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMTk0ODUxLCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIAotICAgIDk4MzEwMSwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgMTEyNjYsIDEyMTExNCwgMTIyNiwgNjkzMCwgCi0gICAgNjc5NzksIDE5NTAxOSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDY4MzAyLCA3NDc4NSwgNjk4NzUsIDAsIDEyMTQ3OCwgCisgICAgMTQyNSwgNjIyNCwgMTE5MjI5LCAxMTA0OSwgMTI3MTIzLCA3MTQ4MCwgNDI2NDksIDg0ODIsIDkyNDQwLCA5ODM3MTAsIAorICAgIDUwMzIsIDY3MjA5LCAxMTk0MCwgNjcyMDcsIDY2NCwgMTIwNDM3LCA1MDM0LCA5MjQ5NSwgNzAyMDAsIDEyMjkwMSwgCisgICAgNDI3MDIsIDcwMTk0LCA5MzA2MSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgNjcyMTgsIDkxMTUsIDc0MzAsIDc3ODM3LCAKKyAgICA3MDE5MSwgMTIwODE5LCA2ODM4NywgMTAwNjQ1LCA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIAorICAgIDQxMTYyLCA3NzgzNiwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIDQxMTY0LCA2NDc0NCwgOTUyOCwgCisgICAgNjc3NDEsIDEyODgwMCwgNTI0LCAxMjg2NjcsIDc0MDI5LCA3ODgsIDc0MDI3LCAxOTQ2NjcsIDcxODgxLCAxMjAzNzAsIAorICAgIDE2NjMsIDEwNDE5LCA0MjkwMSwgNDI2MzYsIDY3MjExLCA2NzIxMCwgMTI5MTQ3LCAxMjA2NTYsIDY3MjE1LCA2NzIxNCwgCisgICAgNjcyMTMsIDY3MjEyLCAxMjg4MjgsIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDE5NDkwNCwgMTE5MTA3LCA0MzYxMiwgCisgICAgNjQzNDQsIDEyOTM3MCwgMCwgMTA4NTUsIDU0NDUsIDkzNTUsIDY3MjIxLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCAKKyAgICA0MzY3MywgOTgzODc0LCAxMTkyMzgsIDgwMTAsIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIAorICAgIDY0NDY5LCA5MjU5MiwgMTA1NTUsIDY3MjI3LCA0MzMzMywgNjcyMjUsIDEyODQ4MywgMTIwNDI3LCAxMDQ1MSwgNjcyMjksIAorICAgIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDc3ODQyLCAKKyAgICAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDgzMzQzLCA5ODM1ODEsIDExMDEwLCAxMTE2NCwgNzQwNTksIDc0MDYyLCAKKyAgICA2MjE3LCA1ODk2LCA0Mzg0NiwgNzY4MiwgNzQwNDksIDE0NjIsIDEwMjM1LCA5ODM5MTgsIDAsIDk4MzMyNSwgNDM0NDEsIAorICAgIDEyNzkyNCwgMTI3Nzc3LCA0MjU5NSwgNzI4MDQsIDc0NDAyLCAxMTg4NjAsIDc4NjYxLCAxMjA0MTksIDkyNDk3LCA2NjI4NywgCisgICAgMTIwNDIwLCA5MjM3OCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAxMjA0MTgsIDAsIDY0NzY1LCA3MzkyMywgODMyMTAsIAorICAgIDEyMDY2MiwgNjk5MjAsIDEyNTI3OCwgNjIxNiwgNjcyMzAsIDEwNzU1LCA5NDU1LCAxMTE1NSwgODEyNCwgMTI3MDQyLCAKKyAgICA5NDcwLCA2OTQ0LCAxMjExMjUsIDkxNzk4MiwgNjk2ODAsIDI4MjgsIDAsIDUzMSwgNDI2MzgsIDE5NDgwNCwgOTE3ODU2LCAKKyAgICAxMjA5NjEsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAxMjAzNjUsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCAKKyAgICA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMTIwODUwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCA2ODgyOSwgMTI1MDEyLCAKKyAgICAwLCA4NTM3LCAxMjczMDYsIDk4MzcyOSwgOTM1NCwgMTIxMjQ0LCAxMjEzNDgsIDQxMTk5LCAxMDEyMSwgMjAyOCwgNzQ5NTAsIAorICAgIDEyMDI1MywgNjk3MTUsIDEyODUyNSwgMzA2MiwgOTgzNjYzLCA3NDQ0NywgMTI2MDgsIDk4MzY1NywgNjY0NDAsIDc1NDUsIAorICAgIDk3MDAsIDExOTQ4LCA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCA2ODMwNiwgNzQwNzEsIDEyODcyMiwgOTIzNzIsIAorICAgIDEyNzEzLCAxMjc1MTksIDcwNDAyLCAwLCA3ODc3MiwgMTEzNzA5LCAxNzM0LCAwLCA3ODE0MSwgMTI3MDQwLCA2NDU5NCwgCisgICAgMjQ1NiwgMjMxLCA2ODIyNywgNzQxNjcsIDU0MiwgMTIwNTg2LCAxMDA4NTEsIDk4Mzg1OSwgMTk0Nzk3LCAxMjMwLCAKKyAgICA3Mzg0NSwgMTIxMzQzLCAzNTk3LCA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCA2NzczNywgODM1MiwgNzg0MzYsIAorICAgIDU2ODcsIDEyNzAxOCwgNjQ1MTUsIDEyMTM3OCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCA5ODM1ODUsIAorICAgIDE5NDU3MywgNzAwODAsIDcxMzM4LCAxMjA1NzUsIDg2NjAsIDEyNjQ3OCwgMTI3MDEwLCAxMjg0NjcsIDc4NzczLCA3NDQ4MiwgCisgICAgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIDYwODAsIDEyODE2NywgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCA5ODMxMDEsIAorICAgIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDExODc4NiwgNDQ4MCwgMTEyNjYsIDEyMTExNCwgMTIyNiwgNjkzMCwgNjc5NzksIAorICAgIDE5NTAxOSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDY4MzAyLCA3NDc4NSwgNjk4NzUsIDEyMDg0OSwgMTIxNDc4LCAKICAgICA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA2NzY4MiwgMTA4NzcsIDExODg2OCwgNjQ4ODUsIAotICAgIDc0MjcyLCAwLCAxOTQ2NzIsIDEyODU1OSwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAxMjQ5MzMsIDc0NDU2LCA2NDYwNiwgOTkxNywgCi0gICAgMCwgNzQ4NTUsIDUwMzcsIDExOTkxMiwgMTc3NiwgODQyMiwgMTI4OTM1LCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCAKLSAgICA0MzMyOCwgMCwgNDI2OTgsIDEyOTUsIDE5NDg1MywgNDYyNSwgNzc4NTUsIDQ2MzAsIDEzMTE3LCA4MzAwMiwgMTI4NzcyLCAKLSAgICA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIAotICAgIDQyNTIsIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIDk4Mzk0OSwgNjU0MTksIDAsIAotICAgIDEyODQ5NiwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDk4MzcyMSwgMTI2NzAsIDEwMTMsIDAsIDY0OTE5LCA3MDUsIDAsIAotICAgIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIDkxNzgyNiwgODE1NywgOTczNiwgNjQ1MDMsIAotICAgIDY1NDE4LCAxMjkwNTAsIDk4Mzg3OCwgNzQwMzUsIDE5NDkxOCwgMTE5MTMsIDczODc0LCA2Njk2LCAxMjA5MTYsIDg5MjAsIAotICAgIDExOTI5OCwgMTI4NDI2LCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDExOTgyNSwgMTI4NTk4LCAKLSAgICAxMDE3NywgNzM3NzcsIDE4NTcsIDE5NDY1NywgNDYyNiwgODQ2NCwgODQ3MiwgNjg4NDQsIDQ2MjksIDg0OTksIDc0NjI3LCAKLSAgICA3ODMyMiwgNDYyNCwgNzgxOCwgMTE4ODYxLCAxMjgxMDgsIDAsIDc4MDUsIDEyODc1NCwgOTQwMDcsIDY5MzUsIDkyMjkyLCAKLSAgICA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgNDM5ODksIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgCi0gICAgODQ5NiwgODM0OTksIDc0NTgyLCA3NTA1MiwgNzgzMzksIDk1NDMsIDY3ODYwLCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCAKLSAgICA3NzgzMSwgOTgzOTYxLCAxOTQ2NDksIDEyNDUxLCA3NDM3NiwgODY4NCwgMTI4MzAxLCA2MTAyLCAwLCA1Mjk4LCA5MTc4NDcsIAotICAgIDUyOTQsIDAsIDgzMDE2LCA2ODA0MywgMTk1MDYyLCA5OTQ5LCA4MzAxNCwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIAotICAgIDEyODY0NiwgNzc4NjMsIDEzMTA4LCAxMjA2MTcsIDExNDM5LCA0MTQ2OCwgODMwMTIsIDAsIDUyOTIsIDU1MjcyLCAKLSAgICA5ODM4ODMsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3NywgMTI0NTUsIDE3OTMsIDEyNDk4MiwgMCwgNzUwMzYsIDY2NDMsIAotICAgIDkyNDc3LCA2NTI2MywgMCwgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDc4ODM1LCAxMzIxOSwgOTU2OSwgMTI5MDQxLCAKLSAgICA3NDM4MywgMCwgNzQxOTcsIDEyOTA4OSwgNTUwMCwgODgxMywgMCwgMTI4NjEyLCA2ODg2MCwgNTMyMiwgMTIwOTQ0LCAKLSAgICA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgMTMyODIsIAotICAgIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIDk5MjYsIDcxOTcsIDEyODI0OCwgNjg0MjksIDQyODk0LCA0MTgyMSwgCi0gICAgMTI0OSwgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgCi0gICAgNDMxNjIsIDQxODE1LCA0MTE1MCwgMTI4OTExLCAxMDU3MSwgMTAwOTYsIDY3MTYxLCA2NzE2MCwgNjcxNTksIDY5NDcsIAotICAgIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCA2NzE1NywgOTM5NjYsIDY2NzAsIAotICAgIDY3MTc1LCA2NzE3NCwgMCwgNDMwOTIsIDQzMzI1LCA2NzE3OCwgMTAxNjgsIDY3MTc2LCA5NzgxLCA2ODI0OCwgOTE5MCwgCi0gICAgMTI4NDk3LCA5NjY2LCA4MjY5LCA2NTk0NCwgNzQwMDUsIDEzMDE5LCAxMTY3MCwgNjk4NjAsIDMxNSwgMTI4MTMsIAotICAgIDEyOTEzMiwgNzI0MDksIDc4MjU2LCA3MjQwOCwgNzgzNTIsIDAsIDc1MDYzLCAwLCAwLCAxMzc4LCA5NTA5LCAxOTQ2MzQsIAotICAgIDkyOTk2LCA3MjQwNywgMzA2NiwgOTIyMjAsIDY3ODQ3LCA3MjQwNiwgOTIzNTUsIDkxNzg5MCwgNzgzNjUsIDg3ODcsIAotICAgIDY3MTg5LCAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxMjczODQsIDAsIDY0NjUyLCAxMjEyMjIsIDEyMTAxMiwgMCwgCi0gICAgNzgzNjYsIDQyMDg4LCA3MTA0MCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgCi0gICAgNzEwNTAsIDgxMTksIDY0ODc0LCA3MTA1MiwgNzgxNzQsIDEyODY5MCwgMTI4NjMwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIAorICAgIDc0MjcyLCAxMjgwNzYsIDE5NDY3MiwgMTIxMjAyLCAxMDA2NTIsIDc0MzEyLCAzNDUsIDEyNDkzMywgNzQ0NTYsIDY0NjA2LCAKKyAgICA5OTE3LCAxMjUyNDQsIDc0ODU1LCA1MDM3LCAxMDA5OTgsIDE3NzYsIDg0MjIsIDEyODkzNSwgMTE4ODE0LCA0MTUwOCwgCisgICAgNDEyMDEsIDMyMywgNDMzMjgsIDkxNzg0OSwgNDI2OTgsIDEyOTUsIDE5NDg1MywgNDYyNSwgNzc4NTUsIDQ2MzAsIDEzMTE3LCAKKyAgICA4MzAwMiwgMTI4NzcyLCA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCAKKyAgICA2NTQyMCwgOTI0NzksIDEyNzE5MSwgNDI1MiwgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgCisgICAgMTI5MzE4LCA2NTQxOSwgMCwgMTI4NDk2LCA2NDksIDY1NDIxLCAxMjI4ODAsIDY2NzAyLCA5ODM3MjEsIDEyNjcwLCAxMDEzLCAKKyAgICA3MDcwNywgNjQ5MTksIDcwNSwgNzI4MjUsIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIAorICAgIDkxNzgyNiwgODE1NywgOTczNiwgNjQ1MDMsIDY1NDE4LCAxMjkwNTAsIDEyODA5MCwgNzQwMzUsIDc4ODM2LCAxMTkxMywgCisgICAgNzM4NzQsIDY2OTYsIDEyMDkxNiwgODkyMCwgMTE5Mjk4LCAxMjg0MjYsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCAKKyAgICA2NjIyNywgOTgzMjcyLCA0MTg0LCAxMTk4MjUsIDEyODU5OCwgMTAxNzcsIDczNzc3LCAxODU3LCAxMjc3NzMsIDQ2MjYsIAorICAgIDg0NjQsIDg0NzIsIDY4ODQ0LCA0NjI5LCA4NDk5LCA3NDYyNywgNzgzMjIsIDQ2MjQsIDc4MTgsIDExODg2MSwgMTI4MTA4LCAKKyAgICAwLCA3ODA1LCAxMjg3NTQsIDk0MDA3LCA2OTM1LCA5MjI5MiwgNzgzMjUsIDc4MzI2LCA3ODA3OSwgNDMzMjcsIDQzOTg5LCAKKyAgICAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIDg0OTYsIDgzNDk5LCA3NDU4MiwgNzA2OTAsIDc4MzM5LCAKKyAgICA5NTQzLCA2Nzg2MCwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgNzc4MzEsIDEyODYxNSwgMTAwNDEyLCAxMjQ1MSwgNzQzNzYsIAorICAgIDg2ODQsIDEwMDUxNSwgNjEwMiwgMTI4MDQ2LCA1Mjk4LCAxMjg3MjEsIDUyOTQsIDgzMjM1LCA4MzAxNiwgNjgwNDMsIAorICAgIDE5NDg5OSwgOTk0OSwgODMwMTQsIDQzNjE3LCAxMTkyMTUsIDEyNzAzMCwgMTIwNzMsIDEyMDczNiwgMTI4MDE3LCA3Nzg2MywgCisgICAgMTMxMDgsIDcxMjMxLCAyMjYwLCA0MTQ2OCwgODMwMTIsIDAsIDUyOTIsIDU1MjcyLCA5ODM4ODMsIDE5MzksIDUzMDIsIAorICAgIDM5NzAsIDEyOTM0OCwgMTI0NTUsIDE3OTMsIDEyNDk4MiwgMCwgNzUwMzYsIDY2NDMsIDkyNDc3LCA2NTI2MywgMCwgCisgICAgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDc4ODM1LCAxMzIxOSwgOTU2OSwgMTI5MDQxLCA3NDM4MywgMCwgNzQxOTcsIAorICAgIDEyOTA4OSwgNTUwMCwgODgxMywgOTgzNDE0LCAxMjg2MTIsIDY4ODYwLCA1MzIyLCAxMjA5NDQsIDc4MzQwLCA0MzYzMSwgCisgICAgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCAxMzI4MiwgMzM2MCwgNzgzNDQsIAorICAgIDIyMzEsIDcyNzI2LCA5MjQ4OCwgOTkyNiwgNzE5NywgMTI4MjQ4LCA2ODQyOSwgNDI4OTQsIDQxODIxLCAxMjQ5LCA3ODM2MCwgCisgICAgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCA0MzE2MiwgNDE4MTUsIAorICAgIDQxMTUwLCAxMjg5MTEsIDEwNTcxLCAxMDA5NiwgNjcxNjEsIDY3MTYwLCA2NzE1OSwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgCisgICAgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDY3MTU3LCA5Mzk2NiwgNjY3MCwgNjcxNzUsIDY3MTc0LCAwLCAKKyAgICA0MzA5MiwgNDMzMjUsIDY3MTc4LCAxMDE2OCwgNjcxNzYsIDk3ODEsIDY4MjQ4LCA5MTkwLCAxMjA5ODEsIDk2NjYsIDgyNjksIAorICAgIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgMTI4NTU2LCA3MjQwOSwgNzgyNTYsIAorICAgIDcyNDA4LCA3ODM1MiwgOTIyMTIsIDc1MDYzLCA3MjgzOSwgMCwgMTM3OCwgOTUwOSwgMTk0NjM0LCA5Mjk5NiwgNzI0MDcsIAorICAgIDMwNjYsIDkyMjIwLCAyMjcwLCA3MjQwNiwgOTIzNTUsIDkxNzg5MCwgNzgzNjUsIDg3ODcsIDY3MTg5LCA3MjgxOCwgCisgICAgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDEyNzM4NCwgMCwgNjQ2NTIsIDEyMTIyMiwgNzI4MzMsIDEyNTIyNiwgNzgzNjYsIAorICAgIDQyMDg4LCA3MTA0MCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgNzEwNTAsIAorICAgIDgxMTksIDY0ODc0LCA3MTA1MiwgNDM5NjQsIDEyODY5MCwgMTI4NjMwLCA3NDUyNSwgNzI4NDMsIDEwMDc4MywgMTI5MzAsIAogICAgIDEzOTQsIDc0NTE0LCAxMjg0MTMsIDc0NTE1LCA5ODM3MjcsIDY3MTg0LCAyOTk4LCA5NTI3LCA2NzE4MSwgNjUxOTAsIAogICAgIDEyOTc3LCA0MjA5MCwgNjcxODUsIDk4MzY0NywgMTE5MTAwLCA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIAogICAgIDU4NDgsIDY3MTkzLCA2NzE5MiwgMzY3MCwgNjcxOTAsIDY3MTk3LCA2NzE5NiwgNjcxOTUsIDc4OTAsIDEyODA3MCwgCi0gICAgMTEyOTgsIDQzMzE1LCA5ODMzMTUsIDYyMjksIDE1OTMsIDAsIDEyNTEyMCwgNjE5LCA0NjM1LCA2NTA4MCwgMTI3MTU4LCAKKyAgICAxMTI5OCwgNDMzMTUsIDc3ODcxLCA2MjI5LCAxNTkzLCAwLCAxMjUxMjAsIDYxOSwgNDYzNSwgNjUwODAsIDEyNzE1OCwgCiAgICAgMTIxOTQsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMTI4NDA3LCAxMTgwOCwgNjcxOTksIDY3MTk4LCA5MzY2LCA0Mjc5MCwgCiAgICAgNDIwMDYsIDExOTExNSwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCA2NTMyMSwgNjUzMjAsIAogICAgIDQzOTQ3LCA2NTMzNCwgNDM5NDYsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgOTI0MjcsIDkxMjgsIAotICAgIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzgzMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKLSAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAxMjA4NjIsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIAotICAgIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMCwgMCwgNDM5NDEsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDY2MjkyLCAKLSAgICA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDEyMTM1MSwgNTYyLCAxMjE2OSwgCi0gICAgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDEyMTA5NiwgMTI4MjgxLCAxMDM3LCAxMjg2NzcsIAotICAgIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCA0MzgzOSwgMjgzNSwgODMwNTIsIAotICAgIDEwNjI0LCA0MzYyMywgMTEwNzIsIDgzMDQ1LCAxMjg1MjMsIDgzMDQ2LCAxMjYwNiwgNzg0MzMsIDI4MjUsIDgzMDQ4LCAKLSAgICAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA4MzA0MywgMTIwNTkzLCAxMzA3MSwgMTIxMjg4LCA0NTIsIAotICAgIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCA5MTc5MTcsIDY0NzAzLCAKLSAgICAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAxMTk4NDksIDEyMTE1MCwgCi0gICAgMTI4Mjc1LCAxMTg3LCA5ODMzODcsIDQyNjI4LCA3ODU3NSwgODI5NTMsIDcxODYzLCA4Mjk1NSwgMzI0MCwgMTI4NTE4LCAKLSAgICAxMjE1MSwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCA4MTY2LCAwLCAxMTg5MzIsIDAsIDY2ODI3LCAxNjIzLCA2NTI5NywgCi0gICAgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgMTU0MSwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDY2NDAyLCAKLSAgICAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCA3MDQ3NiwgOTIyOTYsIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgNjgwODMsIAotICAgIDM1NjcsIDcwMSwgNjU5MzYsIDM0ODksIDEyMDg5OSwgNzA0NjIsIDcwMTcyLCAxMTQwMywgMCwgMCwgODI5ODYsIDM3OTYsIAotICAgIDY4MDAsIDcwNDcyLCAzOTk0LCAxMTQyMSwgNzQ2MTEsIDE5NTA3NiwgMTk1MDc4LCA2ODAzNiwgMCwgMCwgNjQ4NTcsIAotICAgIDgzNTA4LCAyODU1LCA3NDQxOCwgNjYzMDgsIDQxNjIxLCA2ODIxNCwgODM1MTMsIDEyNzgxNywgMTA2NTQsIDgyOTQ1LCAKLSAgICAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIAotICAgIDgzMDY5LCAxMjUwOTAsIDEyMTExNSwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIDIzNzgsIDQzMTM2LCA4MzAzMSwgODQ2NiwgCi0gICAgODMwNzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCA3NDYzNywgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAKLSAgICAxMjY1MDAsIDY0NjM0LCA5MjM2MiwgNzAyMDIsIDExNjEyLCA5MzAwOCwgNjc2MDAsIDIzNzQsIDk0MDY2LCA4NDc1LCAKLSAgICAxMTYwOSwgNjYzMTMsIDkyNTY4LCAwLCA1Mjg2LCAxMTkyOTcsIDgzMDU5LCA5ODMyNTMsIDY0OTI1LCAxMjAyODMsIAotICAgIDEyNzIwNCwgMTE4OTgyLCA3MTkwNSwgNzcwNSwgMTE5NDIsIDExMzA1LCAxMjcyMDMsIDMzMDksIDgyOTc5LCA5MjA2LCAKLSAgICA4Mjk4MCwgMTEzODI0LCA2ODAyLCA3MDM1MywgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgCi0gICAgNDI1NjUsIDQxNjUxLCAwLCA5MTc2MjcsIDgzMDQyLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCA3NDQ3MiwgMTI5MTQsIDQxNDkxLCAKLSAgICA0MzkwMSwgOTQxMDYsIDYwNzgsIDk5NTQsIDc4ODIyLCAxNDc1LCAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIAotICAgIDQxMDYyLCAwLCAxMTM2ODAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA2ODA4OSwgODcyNywgMTIwOTIyLCAKLSAgICA2NTg3NSwgMCwgMCwgMTI3NzYyLCAxMDU2MiwgNzQyMTUsIDQzMDY1LCAxMjA5MDYsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCAKLSAgICA5MDE1LCA3MTM1MSwgMCwgMzYzNSwgNjQzMzcsIDkyNzU5LCAxMjUwNTQsIDAsIDcxOTUsIDgzMzQ2LCAyMDA3LCA2NDQzMSwgCi0gICAgMTk1MDc1LCAwLCA5MjE5NywgMTI3MDkwLCA2MzUsIDAsIDEyOTA4MiwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIAotICAgIDEyODUxMCwgMTIxNDU3LCA0MzkwNSwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgNzAwNTAsIDIwMzQsIAotICAgIDc4NDIzLCAxMTE1NCwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg1NDQsIDc4NTk2LCAxOTQ2MDIsIDM2NDksIAotICAgIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIDM2MzQsIDEyMDI5MSwgNzE4ODUsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDc1MDQ1LCAKLSAgICAxMTQwMiwgNDIxNDYsIDk0MDMyLCA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIAotICAgIDExODEyLCA2NTM3OSwgNjgzODYsIDEyODE4NSwgMTE1OSwgNzExODMsIDY5NzI5LCAwLCAxMjA3OTcsIDcxNzgsIDEyMDg1MSwgCi0gICAgOTgzODM2LCA0MTY4MCwgMTI4NDY5LCA4MzA5OCwgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgCi0gICAgMTI4NDkwLCA2Nzg3NywgMTk0NTYxLCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIAotICAgIDEwODE4LCA4MzA5MSwgOTk1MywgMTk0ODk1LCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCAKLSAgICA2MTY5LCAxMjg3MSwgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDkxNzkyNCwgNjc4NzUsIAotICAgIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDEyNTA3OSwgODMzNTQsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDAsIDEwNjQxLCAwLCAKLSAgICA3Mzc0NiwgMTIwOTQ1LCA2ODM1MiwgMCwgNzM3ODcsIDEyODg1OCwgMTI3MDk0LCA3MTk5LCAxMTEzMSwgMCwgMCwgMCwgCi0gICAgOTgzODUyLCAxMjY5NzksIDQyNjg1LCA0MjY3OSwgMTkzLCA3ODc4OSwgMCwgMCwgNDI2NjcsIDAsIDUyNzEsIDY4MzIzLCAKLSAgICA5MjUxNywgODMzNTYsIDEzNjIsIDEzMjk3LCAwLCA3MTg4MCwgMCwgOTgzMzMzLCA3Mzc4OSwgMCwgNjY1OCwgNDQyNiwgMCwgCi0gICAgNjY4MzAsIDk4Mzg0MiwgODMxMDMsIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCA3ODYyMSwgNjc4MjIsIDI0MTYsIDMzMTAsIAotICAgIDQyNzAzLCA4MzEwNywgMzc5LCAwLCA0Mzc1NSwgNzA1MDQsIDQzNjQ3LCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCAKLSAgICA0NTQ5LCAxOTQ3MzgsIDAsIDcxMjUzLCA3MDc4NCwgMTA4MDcsIDk1NTgsIDkzMDI3LCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgCi0gICAgNjUzMDgsIDMyOTQsIDgzMTQzLCA4NTI5LCAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgODMxNDgsIDkyNDU4LCAKLSAgICA3Mzc1NywgNjY0NTYsIDQyMzU5LCAxMjg0MzksIDIwMzEsIDk4Mzg5MCwgNzIwMiwgMTI4MjMyLCAxMjY3NiwgNDI3MjksIAotICAgIDc0Nzc3LCAzMjE1LCAxMjA5ODIsIDc3MTAsIDE2MTAsIDczODAxLCAxMjg4MDcsIDAsIDY1NjgyLCAwLCA0MzkxNywgCi0gICAgNjU5MjQsIDk5NzQsIDIyOCwgNDM5MjIsIDE1MDEsIDEyNzk5NCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDExODkyNywgCi0gICAgNDI5OTksIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgNjY4NjgsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIAotICAgIDc0ODMsIDQzODk4LCAwLCA4MTA0LCA3MDEyOCwgNzQ3NCwgNDM5MTQsIDgzMDgwLCAxMjY1MDcsIDEwNDE0LCAxMzAwMSwgCi0gICAgODE0MSwgOTgzMjM5LCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNDI5MzQsIAotICAgIDEyNzE2NiwgMCwgNzQxOTAsIDEyODQ3NywgNzA0MTAsIDk4Mzc4NiwgNDI3NjIsIDE5NDcwOCwgNDI5MTQsIDE2NTAsIDI2MiwgCi0gICAgMTYzNywgMTI4NTAyLCA3OTAxLCAzMjM4LCA4MzAyNiwgNDE4NjEsIDAsIDEyMDIxMSwgNjUxNTgsIDEwODYwLCA3NDk1OSwgCi0gICAgNDM2NTgsIDc1MjcsIDgzMDg2LCA0MzMxOSwgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAxMTk4MTAsIAotICAgIDcxOTQsIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMTI4Njg0LCA5MDg0LCAxMjEwMzksIDg3MzcsIDk4MzE2NSwgMTI4ODEsIAotICAgIDc1MDY2LCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgOTgzODgyLCAzNTY0LCAwLCA2OTk3OCwgMTc5LCA0MzY0NCwgCi0gICAgNzUwNDksIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAxMjkwNDIsIDcwMzQ3LCAxMTkwMDksIDI4NTAsIDgwODQsIAotICAgIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgODM1MjIsIDQyMDcyLCA5MjczNiwgCi0gICAgMTE5ODQyLCAxMDM5OCwgODMzODYsIDgzNTIzLCA4Mzc3LCAxMTkzMTIsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCi0gICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCA5MjQ3MCwgMjkyLCAxMTExOSwgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIAotICAgIDkyNDYzLCA0NjEyLCA2NzcyOSwgMTE5ODUwLCA3MjUzLCA3MDQ1NiwgNjgzOTEsIDc1MDAyLCAxMDc4MiwgMzYzNywgCi0gICAgMTI5OTYsIDQzNTQyLCAxMTM2NzYsIDY0NTc4LCA4MzQ0OSwgMzIyOCwgNjk2MzYsIDg3ODMsIDk4MzYzMiwgMTE5NjE0LCAKKyAgICA5NDA0NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODMxMzUsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCA2NTMxNiwgNDEwNiwgCisgICAgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMTAwMzU5LCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCAKKyAgICA0MzUzMywgNzg0NTksIDcxODksIDEwMDQxOCwgOTgzMjI3LCA0Mzk0MSwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgCisgICAgOTEzMSwgNjYyOTIsIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgOTgzODg3LCAKKyAgICAxMjEzNTEsIDU2MiwgMTIxNjksIDY1OTAsIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIDMyMTksIDY4NjU0LCAxMjEwOTYsIAorICAgIDEyODI4MSwgMTAzNywgMTI4Njc3LCAyMDI1LCAxMTkxNTksIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIDU0OSwgMTU3MCwgCisgICAgNDM4MzksIDI4MzUsIDgzMDUyLCAxMDYyNCwgNDM2MjMsIDExMDcyLCA4MzA0NSwgMTIwNTYxLCA4MzA0NiwgMTI2MDYsIAorICAgIDc4NDMzLCAyODI1LCA4MzA0OCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgNzM2NSwgODMwNDMsIDEyMDU5MywgCisgICAgMTMwNzEsIDEyMTI4OCwgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgCisgICAgMTE4OTQ1LCA2NDcwMywgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMTI4Mjc2LCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAKKyAgICAxMTk4NDksIDEyMTE1MCwgMTI3Mjk1LCAxMTg3LCAxMjg4NzUsIDQyNjI4LCA3ODU3NSwgODI5NTMsIDcxODYzLCA4Mjk1NSwgCisgICAgMzI0MCwgMTI4NTE4LCA5MjEzLCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDcwNzM5LCAxMTg5MzIsIDEyNzExMSwgCisgICAgNjY4MjcsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3MDgxLCAxNTQxLCA2NTA0OCwgCisgICAgMTkwOSwgODg2NCwgMCwgNjY0MDIsIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDcwNDc2LCA5MjI5NiwgNDIzNywgCisgICAgOTI1NzYsIDEwMzUsIDY1ODE1LCA2ODA4MywgMzU2NywgNzAxLCA2NTkzNiwgMzQ4OSwgMTIwODk5LCA3MDQ2MiwgNzAxNzIsIAorICAgIDExNDAzLCAwLCAwLCA4Mjk4NiwgMzc5NiwgNjgwMCwgNzA0NzIsIDM5OTQsIDExNDIxLCA3NDYxMSwgMTI3OTExLCAKKyAgICAxOTUwNzgsIDY4MDM2LCA3MDY1OSwgMCwgNjQ4NTcsIDgzNTA4LCAyODU1LCA3MDY5NywgNjYzMDgsIDQxNjIxLCA2ODIxNCwgCisgICAgODM1MTMsIDEyNzgxNywgMTA2NTQsIDgyOTQ1LCAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIAorICAgIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIDgzMDY5LCAxMjUwOTAsIDEyMTExNSwgMCwgMTQ5NiwgNzQ3LCAKKyAgICA5MTc5OTksIDk0MiwgMjM3OCwgNDMxMzYsIDgzMDMxLCA4NDY2LCA4MzA3NCwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgCisgICAgMTE2MTcsIDc0NjM3LCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIDEyNjUwMCwgNjQ2MzQsIDkyMzYyLCA3MDIwMiwgMTE2MTIsIAorICAgIDkzMDA4LCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIDExNjA5LCA2NjMxMywgOTI1NjgsIDAsIDUyODYsIDExOTI5NywgCisgICAgODMwNTksIDk4MzI1MywgNjQ5MjUsIDEyMDI4MywgMTI3MjA0LCAxMTg5ODIsIDcxOTA1LCA3NzA1LCAxMTk0MiwgMTEzMDUsIAorICAgIDEyNzIwMywgMzMwOSwgODI5NzksIDkyMDYsIDgyOTgwLCAxMTM4MjQsIDY4MDIsIDcwMzUzLCA0MTY1MywgMTI4MCwgMTI0MSwgCisgICAgNzE2OCwgMTIwOTYsIDAsIDY2NjE1LCA0MjU2NSwgNDE2NTEsIDk4Mzg2OSwgOTE3NjI3LCA4MzA0MiwgNDE2NTAsIDY2NTA3LCAKKyAgICA2NjQ3MCwgNzQ0NzIsIDEyOTE0LCA0MTQ5MSwgNDM5MDEsIDk0MTA2LCA2MDc4LCA5OTU0LCA3ODgyMiwgMTQ3NSwgCisgICAgMTE5MjQ3LCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCA0MTA2MiwgMCwgMTEzNjgwLCAzMjU2LCAxMDE4OSwgNDIwNzYsIAorICAgIDQzMjUyLCA3ODgyMywgNjgwODksIDg3MjcsIDEyMDkyMiwgNjU4NzUsIDkxNzkxNiwgMTI5MzQ5LCAxMjc3NjIsIDEwNTYyLCAKKyAgICA3NDIxNSwgNDMwNjUsIDEyMDkwNiwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIDkwMTUsIDcxMzUxLCAxMTM3MTgsIDM2MzUsIAorICAgIDY0MzM3LCA5Mjc1OSwgMTI1MDU0LCAwLCA3MTk1LCA4MzM0NiwgMjAwNywgNjQ0MzEsIDE5NTA3NSwgMTk0NjcwLCA5MjE5NywgCisgICAgMTI3MDkwLCA2MzUsIDk4MzExOCwgMTI5MDgyLCA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgMTI3OTgwLCAxMjE0NTcsIAorICAgIDQzOTA1LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTIxMDQ3LCA0MTc2LCA3MDA1MCwgMjAzNCwgNzg0MjMsIDExMTU0LCA2NTg5MSwgCisgICAgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODU0NCwgNzg1OTYsIDEyOTA5NCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgCisgICAgMzYzNCwgMTIwMjkxLCA3MTg4NSwgNjc2NzcsIDEyMDEyNCwgNzg2NiwgNzUwNDUsIDExNDAyLCA0MjE0NiwgOTQwMzIsIAorICAgIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgCisgICAgMTI4MTg1LCAxMTU5LCA3MTE4MywgNjk3MjksIDAsIDY2NzY4LCA3MTc4LCAxMjA4NTEsIDk4MzgzNiwgNDE2ODAsIAorICAgIDEyODQ2OSwgODMwOTgsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIDEyODQ5MCwgNjc4NzcsIAorICAgIDE5NDU2MSwgMTI5ODksIDY2NDc0LCA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDc0Mjc4LCAxMDgxOCwgODMwOTEsIAorICAgIDk5NTMsIDEyODAwOCwgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIAorICAgIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCA5MTc5MjQsIDY3ODc1LCAxMjAzMDEsIDM0OTUsIAorICAgIDY2NjQ4LCAxMjUwNzksIDc4NzA4LCA2ODM2NCwgMTIwNzc5LCA0ODkxLCA5MTc5MzMsIDEwNjQxLCAxMjUyNjUsIDczNzQ2LCAKKyAgICAxMjA5NDUsIDY4MzUyLCAwLCA3Mzc4NywgMTIwMTk1LCAxMjcwOTQsIDcxOTksIDExMTMxLCAxMjA2MTcsIDE5NDcwMCwgMCwgCisgICAgOTgzODUyLCAxMjY5NzksIDQyNjg1LCA0MjY3OSwgMTkzLCA3ODc4OSwgMCwgMCwgNDI2NjcsIDk4Mzg2OCwgNTI3MSwgCisgICAgNjgzMjMsIDkyNTE3LCA4MzM1NiwgMTM2MiwgMTMyOTcsIDExODg2MiwgNzE4ODAsIDE5NTA5MCwgMTk0OTY5LCA3Mzc4OSwgCisgICAgMTIwOTg5LCA2NjU4LCA0NDI2LCAxMjcwOTMsIDY2ODMwLCA5ODM4NDIsIDgzMTAzLCA3Mjc2LCA0MjE2MywgNTIyMCwgCisgICAgMTAwNjcwLCA3ODYyMSwgNjc4MjIsIDI0MTYsIDMzMTAsIDQyNzAzLCA4MzEwNywgMzc5LCAxMjkxNTksIDQzNzU1LCAKKyAgICA3MDUwNCwgNDM2NDcsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIDQ1NDksIDExNTIzLCAwLCA3MTI1MywgNzA3ODQsIAorICAgIDEwODA3LCA5NTU4LCA5MzAyNywgMTI4MDAzLCA4NTE1LCA4Njg4LCAxMjg2NiwgNjUzMDgsIDMyOTQsIDgzMTQzLCA4NTI5LCAKKyAgICAxMjgxMDEsIDQzMzg1LCA3NTY0LCA5MTc5ODYsIDQzMzI5LCA4MzE0OCwgOTI0NTgsIDczNzU3LCA2NjQ1NiwgNDIzNTksIAorICAgIDEyODQzOSwgMjAzMSwgMTI3Mzk0LCA3MjAyLCAxMjgyMzIsIDEyNjc2LCA0MjcyOSwgNzQ3NzcsIDMyMTUsIDEyMDk4MiwgCisgICAgNzcxMCwgMTYxMCwgNzM4MDEsIDEyODgwNywgMCwgNjU2ODIsIDAsIDQzOTE3LCA2NTkyNCwgOTk3NCwgMjI4LCA0MzkyMiwgCisgICAgMTUwMSwgMTI3NTEyLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMTE4OTI3LCA0Mjk5OSwgMTcyNSwgNjU1MzMsIDgxOTYsIAorICAgIDc0NzYsIDc0Mzk5LCAwLCA2Njg2OCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgNDM4OTgsIDAsIDgxMDQsIAorICAgIDcwMTI4LCA3NDc0LCA0MzkxNCwgODMwODAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCA4MTQxLCAxOTQ5NDksIDQyNTM3LCAKKyAgICAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAyNTQ1LCA0MjkzNCwgOTIyMDMsIDEyNTIxMSwgNzQxOTAsIAorICAgIDEyODQ3NywgNzA0MTAsIDk4Mzc4NiwgNDI3NjIsIDE5NDcwOCwgNDI5MTQsIDE2NTAsIDI2MiwgMTYzNywgMTI4NTAyLCAKKyAgICA3OTAxLCAzMjM4LCA4MzAyNiwgNDE4NjEsIDk4Mzc2MywgMTIwMjExLCA2NTE1OCwgMTA4NjAsIDc0OTU5LCA0MzY1OCwgCisgICAgNzUyNywgODMwODYsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMTI4MDYwLCA2NDU4OCwgOTM5ODksIDEyNzc1MywgMTE5ODEwLCAKKyAgICA3MTk0LCA1MjkxLCAxMDAzOTgsIDQzNjY2LCAxMzEyOSwgMTI2NjM5LCA5MDg0LCA3MjcxNywgODczNywgOTgzMTY1LCAKKyAgICAxMjg4MSwgNzUwNjYsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCAxOTQ4MzAsIDM1NjQsIDEyNzM5MywgNjk5NzgsIDE3OSwgCisgICAgNDM2NDQsIDc1MDQ5LCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgMTI5MDQyLCA3MDM0NywgMTE5MDA5LCAyODUwLCAKKyAgICA4MDg0LCA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDgzNTIyLCA0MjA3MiwgCisgICAgOTI3MzYsIDExOTg0MiwgMTAzOTgsIDgzMzg2LCA4MzUyMywgODM3NywgMTE5MzEyLCA4MjQ1LCA2ODQwMSwgMzE1OCwgCisgICAgOTIzOTYsIDM5ODMsIDQzNjU2LCA5MjMsIDExOTg1NywgOTI0NzAsIDI5MiwgMTExMTksIDExOTg0NSwgNzI3MTUsIDMyMjEsIAorICAgIDE3NjMsIDkyNDYzLCA0NjEyLCA2NzcyOSwgMTE5ODUwLCA3MjUzLCA3MDQ1NiwgNjgzOTEsIDc1MDAyLCAxMDc4MiwgMzYzNywgCisgICAgMTI5OTYsIDQzNTQyLCAxMTM2NzYsIDY0NTc4LCA4MzQ0OSwgMzIyOCwgNjk2MzYsIDg3ODMsIDk4MzA5MywgMTE5NjE0LCAKICAgICAyNzMxLCAwLCAxMjA4MzMsIDc4NTg1LCA0MTAyLCA3Njk2LCA3Mzg3OCwgMTIxNDE3LCAxMjgxMzIsIDcwODEzLCA0MzMxNiwgCiAgICAgNDE3NywgMTEyODMsIDkwODksIDEyMDkxOCwgNzM5OTYsIDEyMTExMSwgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgCi0gICAgMCwgMCwgNjM3OSwgOTE3ODA0LCAxMTE0MiwgMTI3MTc2LCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDEyNzM4MCwgOTgzOTMxLCAKLSAgICA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAxMjQ5NjIsIDk4MzY4MywgMjAzMywgNzg1NzcsIDc4NTc2LCA4Mjk2NSwgNTUyNTQsIAotICAgIDc3NDAsIDgyOTc0LCA3MDQ0OCwgMTI2NTU1LCA3Mzk2NCwgNjg1MDUsIDkzOTg4LCA2NzYxMiwgNjU2NzQsIDEyODI0NCwgCi0gICAgOTQxMTAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCA3NDAxOSwgMTI4NTIwLCAxMjgwNjYsIAotICAgIDEyODAzMSwgODU2MSwgNDU3MywgMTIxMzc1LCA1MzI2LCA5MjU3MSwgMTIwNjA1LCA3MjMwLCA4MjU3LCAxMjE0MTUsIAotICAgIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgNDM1MTEsIDc2MjgsIDY1MDkyLCA3MzkwMywgCi0gICAgNjQzNTUsIDExMzQyLCAxMjg1NjEsIDAsIDk4MzQzNCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIAotICAgIDk2NywgOTgzMzM1LCAxMjA5ODUsIDExOTQ2LCA5ODM2MDIsIDMyNTcsIDEyNzIwOSwgMTIzMDcsIDE4NDUsIDEyOTA3MiwgCi0gICAgNDM1MjYsIDAsIDExOTU3MywgMTg4NiwgNDIzNDIsIDEwMDg5LCA4NzAsIDc2NDgsIDM0OTksIDc2NjIsIDc2NTIsIDg3NiwgCi0gICAgODcxLCA4NzcsIDc2NjUsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIDQ1NjMsIDAsIDkxNzg5MiwgNzU5MSwgNjU4ODcsIAotICAgIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCAKLSAgICA3OTAsIDEyODMwMywgMTE4OTM4LCAxOTUwNTMsIDkzMDM4LCA2NjE4MiwgMTk0NjIzLCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAKLSAgICAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgOTgzMjkxLCAxMjcyMTQsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgCi0gICAgMTI1MTE5LCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgCi0gICAgMTI1MDk0LCA2NzYzNywgMTI3Mjg2LCA5Njc5LCA3NDEyMiwgOTI5NzgsIDkxNzU4NSwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKLSAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDEyNzI2MywgMTg1MSwgMTI0OTk1LCA4MzMyMCwgMTE5MDgsIDAsIDkzNjAsIAotICAgIDExODg5NywgMTIwODc0LCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCAxMTExMiwgMCwgOTIzMjEsIDQzMzE4LCAKLSAgICA5MjMwMiwgODgwOSwgNjk4ODEsIDAsIDEyNjUxOCwgMTIwNjA0LCA5ODMwNTIsIDk4MzI3NywgOTgzNDMzLCAxMjg0MTIsIDAsIAotICAgIDEyMDU3NywgNzQyNywgOTk1OCwgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxMjcxODUsIDI0MzMsIDEyODYwMiwgNjk5NzMsIAotICAgIDMzNTIsIDc0MzYzLCAxMjg2NjgsIDEyMTM0MSwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAKLSAgICA2OTk3OSwgODIwOCwgNjgzMDgsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgCi0gICAgMTk0NjI4LCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDY4NzQyLCAxMjA1OTQsIDc0MDg2LCA2ODc3NywgNzAxNzksIAotICAgIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgOTE3NjA1LCAxOTQ2NTQsIAotICAgIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgMTI2NjEyLCA2NzcyMywgMjg0MCwgOTgzOTA1LCA3ODgyOSwgOTgzOTM5LCAKLSAgICA2Njg4NywgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAxMjExNjEsIDEyODA1MSwgMTI5OTEsIDEyNDk3MSwgMjY1MSwgCi0gICAgNjgwMTYsIDk4MzI2NywgMTI3MzI2LCAxMjUwMzgsIDcwODM1LCAwLCA3MDg0NCwgNDM2NDgsIDEyMDgxMiwgOTE3ODMzLCAKLSAgICA0MzMyMiwgOTI2NjIsIDAsIDAsIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIAotICAgIDc0ODk0LCAxMTE1MiwgOTI5MDMsIDY1NjEwLCAyMzkxLCA5MjkwOCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgCi0gICAgNjEwLCA0MjgwMCwgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAKLSAgICAxMjgzNDAsIDEyODI2NiwgNjQ3NDksIDY3ODUwLCAyMTA3LCAxMjgyOTAsIDc0MjQ5LCA0NjA1LCAxMjgxNzQsIDk4MzE5MiwgCi0gICAgNDMzNzIsIDY1OTQ1LCAxMjcyNDksIDExMTEzLCAxMTk1OTAsIDAsIDAsIDcwNDk1LCA5ODcsIDY5MjcsIDExNTcyLCAKLSAgICA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDk4Mzk1MSwgMTI4Mjk3LCAwLCA3ODc2MiwgMTI3ODY3LCAxMjEzNjgsIAotICAgIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgMTE5MjY5LCA1MjA4LCAwLCAKLSAgICA3MDA5MCwgMTAzMzIsIDI0MjQsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCAKLSAgICA1NDMyLCA2NDk2NSwgNTUyNywgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCAxMjg4MzgsIDQyMTQwLCAxMjAyODEsIDAsIAotICAgIDk4Mzc3NywgNDM1NDUsIDk4ODcsIDEyMTQ3NywgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIAotICAgIDc4ODQsIDAsIDEyODU2NiwgNzQ5MTAsIDEyODY2NiwgMjExLCAyNTA5LCA5MjkwNCwgNzA4MjIsIDY4NjcyLCAzMjIwLCAKLSAgICA0MjIzNSwgNzg0ODAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCAKLSAgICA1ODUyLCAwLCA3ODQ4MiwgMTI3MjU5LCAxNzA4LCAwLCA3ODQ4MSwgMjYyMywgMTE5NDMsIDEyODcwMCwgNjkyMjYsIAotICAgIDY5OTc0LCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NzYsIDEyMDI4NSwgNzA0NDcsIDk0MTExLCAKLSAgICA4MjY3LCAwLCAxNDIxLCA2NjQyNiwgNzUxNiwgMTI3NTUyLCAyNjI1LCA5ODM2NDEsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAKLSAgICAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCA5ODMwNjUsIDAsIDQzMzg0LCAxMjY2MCwgMTI4NjkzLCAxMjgyNzAsIDAsIAotICAgIDc0ODUwLCA0MTA2OSwgNzAxODUsIDEyODE1NiwgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDk4MzQ4OSwgCi0gICAgMzk5MCwgMTI1MDUwLCA5ODMyNjQsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgNzA0NTcsIDEwMzAsIDExODgwMCwgCi0gICAgOTI1NjMsIDk1MTMsIDQxMDU5LCA5MzU3LCA3NDk4OCwgMTc3MywgNzc5MzksIDEyMDM1MCwgMTI0OTYxLCA2MzM5LCA3NzQ1LCAKLSAgICA5ODQ0LCAxMjcyMjAsIDY0NjUwLCA5NCwgMTg4MCwgNzQ3NjYsIDExMzcxOSwgODkwOCwgOTgzMjIyLCAxMjg3MDcsIAotICAgIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCA2ODc2OSwgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM2LCAwLCAxNzU3LCAKLSAgICA2OTY0LCA0Njk2LCAwLCAxMjAzMzMsIDY0Nzg1LCA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgCi0gICAgMTk0NzA3LCAxMjAzNDQsIDQzOTg4LCA3MDQyMywgODYxMCwgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIAotICAgIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMTI4MjI0LCA2NTI0MywgNzg2MzgsIDE5OTUzLCAxMjkwNzgsIDE1MDQsIDcwMDY0LCAwLCAKLSAgICAxMjkxMywgNzQyMDYsIDc1MjksIDEyODc0NSwgMTI3ODY4LCA3MDIwMywgMTIwNzgyLCA0MTEzLCAxMjA5MjksIDIzNzIsIAotICAgIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDE5NDg4NSwgNjgyLCA3NjU1LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAKLSAgICA5MjQ2NywgNzc5MTEsIDgwMzMsIDY5OTUzLCAwLCA5ODEwLCAxMjcyNjksIDEyMDAxMywgMTI5NzAsIDAsIDQyMzUxLCAKLSAgICAxMDEwOSwgNzQ1MzUsIDc0MDY4LCA3NDkyMSwgMCwgOTI2OTAsIDAsIDY1MDY4LCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIAotICAgIDAsIDczODg3LCAxMTEzMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAxMTE0NSwgMTIxMTE3LCA3NDIzOSwgCi0gICAgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgCi0gICAgMTA0OTgsIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDEyNDk3MCwgOTIyOTAsIDE5NDg4NiwgNjk3NzksIAotICAgIDQxNjUsIDg3NDYsIDE5NTA0OCwgOTY1NCwgMTI4NTYsIDY5MjQsIDc2NjAsIDcwNjYsIDE5NDY5MywgNzA0MTUsIDEyODEzNSwgCi0gICAgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgNDEwMzksIDEyNzQ4MywgMTI0OTY1LCA2ODAsIDIzMDIsIDEyODIwMCwgCi0gICAgMTE4MSwgNzA1NiwgMzE3NCwgNjcyNDgsIDAsIDkyNjY4LCA2NTY2NSwgMTI3Mzc1LCAxMTM3NzYsIDY5MjAsIDAsIDkyMjk1LCAKLSAgICAxMjY2MDYsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAKKyAgICAxMDA1NzIsIDEyNzgxMiwgNjM3OSwgOTE3ODA0LCAxMTE0MiwgMTI3MTc2LCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDExOTEyMSwgCisgICAgOTgzOTMxLCA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAxMjQ5NjIsIDk4MzMyOSwgMjAzMywgNzg1NzcsIDc4NTc2LCAKKyAgICA4Mjk2NSwgNTUyNTQsIDc3NDAsIDgyOTc0LCA3MDQ0OCwgMTI2NTU1LCA3Mzk2NCwgNjg1MDUsIDkzOTg4LCA2NzYxMiwgCisgICAgNjU2NzQsIDEyNzU1MiwgOTQxMTAsIDQxNjg5LCA5ODM0MTAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAKKyAgICAxMjg1MjAsIDEyODA2NiwgMTI4MDMxLCA4NTYxLCA0NTczLCAxMjEzNzUsIDUzMjYsIDkyNTcxLCAxMjA2MDUsIDcyMzAsIAorICAgIDgyNTcsIDEyMTQxNSwgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCA0MzUxMSwgNzYyOCwgCisgICAgNjUwOTIsIDczOTAzLCA2NDM1NSwgMTEzNDIsIDEwMDU3OSwgOTgzNzMyLCAxOTQ5MzksIDEyODIyNiwgMTI3MDAxLCAKKyAgICAxMjc5NDQsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgMTAwNDgxLCAxMjA5ODUsIDExOTQ2LCAxMjkwMzIsIDMyNTcsIAorICAgIDEyNzIwOSwgMTIzMDcsIDE4NDUsIDEwMDU3OCwgNDM1MjYsIDk4MzA4NCwgMTE5NTczLCAxODg2LCA0MjM0MiwgMTAwODksIAorICAgIDg3MCwgNzY0OCwgMzQ5OSwgNzY2MiwgNzY1MiwgODc2LCA4NzEsIDg3NywgNzY2NSwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgCisgICAgNDU2MywgOTgzMjQ5LCA5MTc4OTIsIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgNzY1NiwgODY4LCA4NzMsIDc2NDIsIAorICAgIDc2NTksIDg2OSwgODc0LCA3NjQ0LCAxMjA2NzQsIDg3NSwgNzkwLCAxMjEwODIsIDExODkzOCwgMTAwNDI3LCA5MzAzOCwgCisgICAgNjYxNzcsIDE5NDYyMywgNTQyOSwgMTk1MDU1LCA2NjE4MCwgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDE5NDk2NiwgMTE5MjQ0LCAKKyAgICA0MjA2NywgMTE5OTkzLCA1NDMzLCAxMDY1NywgNzkxMSwgMTI1MTE5LCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgCisgICAgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgMTI1MDk0LCA2NzYzNywgMTI3Mjg2LCA5Njc5LCA3NDEyMiwgCisgICAgOTI5NzgsIDkxNzU4NSwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDEyNzI2MywgCisgICAgMTg1MSwgMTIwODIzLCA4MzMyMCwgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgMTIwODc0LCA0Mjc3NiwgNjYxODcsIDEyODM3LCAKKyAgICA4ODI5LCA3NzExLCAxMTExMiwgMTI4Nzg3LCA5MjMyMSwgNDMzMTgsIDkyMzAyLCA4ODA5LCA2OTg4MSwgMTI4NTY0LCAKKyAgICAxMjUyMjksIDEyMDYwNCwgOTgzMDUyLCA5ODMyMzgsIDk4MzQzMywgMTI4NDEyLCAwLCAxMjA1NzcsIDc0MjcsIDk5NTgsIAorICAgIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMTI3MTg1LCAyNDMzLCAxMjg2MDIsIDY5OTczLCAzMzUyLCA3NDM2MywgMTI2NjAxLCAKKyAgICAxMjEzNDEsIDc5MywgNzQ0MDQsIDExMTk3LCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgNjk5NzksIDgyMDgsIDY4MzA4LCAKKyAgICA0MTY5NSwgMTY0NywgMTE4ODc3LCA3MDg0MSwgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIDEyODM3NywgMTI3OTg5LCAKKyAgICA0MTM3NiwgMTE5OTc4LCA2ODc0MiwgMTIwNTk0LCA3NDA4NiwgNjg3NzcsIDcwMTc5LCA5MTc2MTMsIDEwOTczLCA2NjM1OSwgCisgICAgMTM3MiwgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIDE5NTAwNiwgMTk0NjU0LCA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgCisgICAgNzgyMjEsIDcyNzQ2LCA2NzcyMywgMjg0MCwgMTI4ODQyLCA3ODgyOSwgOTgzOTM5LCA2Njg4NywgMzI0NSwgOTA2OCwgCisgICAgNjgxOTQsIDY0NzI1LCAxMjExNjEsIDEyODA1MSwgMTI5OTEsIDEyNDk3MSwgMjY1MSwgNjgwMTYsIDk4MzI2NywgNzI4NzMsIAorICAgIDEwMDYwMSwgNzA4MzUsIDAsIDcwODQ0LCA0MzY0OCwgMTIwODEyLCAxOTQ4NTQsIDQzMzIyLCA5MjY2MiwgMCwgMCwgCisgICAgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgNzQ4OTQsIDExMTUyLCAKKyAgICA5MjkwMywgNjU2MTAsIDIzOTEsIDkyOTA4LCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKKyAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDEyODM0MCwgCisgICAgMTAwNzQxLCA2NDc0OSwgNjc4NTAsIDIxMDcsIDEyODI5MCwgNzQyNDksIDQ2MDUsIDEyODE3NCwgMTAwNzQ1LCA0MzM3MiwgCisgICAgNjU5NDUsIDcyNzEwLCAxMTExMywgMTE5NTkwLCAwLCAxMDA3NDksIDcwNDk1LCA5ODcsIDY5MjcsIDExNTcyLCA0MjI2MSwgCisgICAgMTE0NjQsIDMzNjUsIDk5NzEsIDcwNjczLCAxMjc5NDIsIDEyODI5NywgMCwgNzg3NjIsIDEyNzg2NywgMTIxMzY4LCAKKyAgICAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIDQ2MjcsIDExOTI2OSwgNTIwOCwgCisgICAgMTEzNjkwLCA3MDA5MCwgMTAzMzIsIDI0MjQsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA0MjE0MiwgCisgICAgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCAxMjg4MzgsIDQyMTQwLCAKKyAgICAxMjAyODEsIDAsIDE5NTA4OCwgNDM1NDUsIDk4ODcsIDEyMTQ3NywgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAKKyAgICAzMjA2LCAxMjAyNzgsIDc4ODQsIDAsIDEyODU2NiwgNzQ5MTAsIDEyODY2NiwgMjExLCAyNTA5LCA5MjkwNCwgNzA4MjIsIAorICAgIDY4NjcyLCAzMjIwLCA0MjIzNSwgNzg0ODAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgOTgzODMzLCA3MDQ4LCAKKyAgICA0NTkwLCAxMjcyNTgsIDU4NTIsIDk4MzgxOSwgNzg0ODIsIDEyNzI1OSwgMTcwOCwgMCwgNzg0ODEsIDI2MjMsIDExOTQzLCAKKyAgICAxMjExNDAsIDY5MjI2LCA2OTk3NCwgNDY5OCwgNjY1MDksIDEwNjYsIDExOTkyMSwgNDcwMSwgMTAwNTY0LCAxMjAyODUsIAorICAgIDcwNDQ3LCA5NDExMSwgODI2NywgMCwgMTQyMSwgNjY0MjYsIDc1MTYsIDEyMDQwNiwgMjYyNSwgMTI4MjQyLCA4MDM0LCAKKyAgICA3NDMwOSwgMTk0NzE1LCAzNjMxLCAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAxMjcwMzIsIDEyMDYxMywgOTgzNTc4LCAKKyAgICA0MzM4NCwgMTI2NjAsIDEyMjg4MywgMTI4MjcwLCAwLCA3NDg1MCwgNDEwNjksIDcwMTg1LCAxMjgxNTYsIDEyMDk5LCAKKyAgICA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCA5ODM0ODksIDM5OTAsIDEyNTA1MCwgOTgzMjY0LCA2NjM2OCwgNTAxNywgCisgICAgNjQ5NTYsIDcwNzEsIDAsIDcwNDU3LCAxMDMwLCAxMTg4MDAsIDkyNTYzLCA5NTEzLCA0MTA1OSwgOTM1NywgNzA2NzUsIAorICAgIDE3NzMsIDc3OTM5LCAxMjAzNTAsIDEyNDk2MSwgNjMzOSwgNzc0NSwgOTg0NCwgMTI3MjIwLCA2NDY1MCwgOTQsIDE4ODAsIAorICAgIDc0NzY2LCAxMTM3MTksIDg5MDgsIDk4MzIyMiwgMTI4MjM2LCA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgNjg3NjksIAorICAgIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzNiwgMTAwNjY5LCAxNzU3LCA2OTY0LCA0Njk2LCAwLCAxMjAzMzMsIDY0Nzg1LCAKKyAgICA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgMTk0NzA3LCAxMjAzNDQsIDQzOTg4LCA3MDQyMywgODYxMCwgCisgICAgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMTI4MjI0LCA2NTI0MywgCisgICAgNzg2MzgsIDE5OTUzLCAxMjkwNzgsIDE1MDQsIDcwMDY0LCA3MjQyMSwgMTI5MTMsIDcwNzIyLCA3NTI5LCAxMjA2MDgsIAorICAgIDEyNzg2OCwgNzAyMDMsIDEyMDc4MiwgNDExMywgMTIwOTI5LCAyMzcyLCAzMzYsIDAsIDc1MDksIDEyMTUyLCAxOTQ4ODUsIAorICAgIDY4MiwgNzY1NSwgNDE1MDUsIDk4Mzc1MywgNjQ3NDMsIDEwNTkzLCAxNzAzLCA5MjQ2NywgNzc5MTEsIDgwMzMsIDY5OTUzLCAKKyAgICAwLCA5ODEwLCAxMjcyNjksIDEyMDAxMywgMTI5NzAsIDk4MzIwNSwgNDIzNTEsIDEwMTA5LCA3NDUzNSwgNzQwNjgsIAorICAgIDc0OTIxLCAwLCA5MjY5MCwgMTIyODg2LCA2NTA2OCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgCisgICAgMTExMzAsIDIwODcsIDY0MzcwLCA2MzE0LCA0MTcxNCwgODUwMSwgMTExNDUsIDEyMTExNywgNzQyMzksIDQxMzE3LCAKKyAgICA5MjYxNCwgMjA5MSwgNzQ1NDUsIDIwOTAsIDY5OTEyLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMTExNjEsIDEwNDk4LCAKKyAgICAyMDgzLCA3Nzg4OCwgNzExOTYsIDAsIDExOTIzNiwgNjM0LCAxMjQ5NzAsIDkyMjkwLCAxOTQ4ODYsIDY5Nzc5LCA0MTY1LCAKKyAgICA4NzQ2LCAxOTUwNDgsIDk2NTQsIDEyODU2LCA2OTI0LCA3NjYwLCA3MDY2LCAxMjcwNTEsIDcwNDE1LCAxMjgxMzUsIAorICAgIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIDIyMzMsIDEyNzQ4MywgMTI0OTY1LCA2ODAsIDIzMDIsIDEyODIwMCwgMTE4MSwgCisgICAgNzA1NiwgMzE3NCwgNjcyNDgsIDk4MzE3MSwgOTI2NjgsIDY1NjY1LCAxMDA1OTQsIDExMzc3NiwgNjkyMCwgMCwgOTIyOTUsIAorICAgIDcwNjcyLCAxMTg5NjUsIDY4MzE4LCA2NDY0NCwgMTI2OTgxLCA3NDExOSwgNjgyMzgsIDQxMDI4LCA3NDAyNSwgNjIzMSwgCiAgICAgMjYxMywgNjUzMDIsIDQwOTg5LCA2ODIzOSwgNjgyMzAsIDY4MjM0LCA0Mjc2MCwgMCwgNDM4OTYsIDAsIDQwOTg3LCA0NjY3LCAKLSAgICAwLCA3MTg0MywgODgyOCwgNzc5OTUsIDcwNTA2LCAxMjQ2LCA0NzQ2LCAxMjg1MDEsIDEyODUwOCwgMTEwMjEsIDQ3NDksIAotICAgIDkyNjc1LCA5MTc4ODIsIDkyMSwgNDc0NCwgMCwgMTI3MDIsIDI0MiwgMCwgMTU2NiwgODIxNywgMTI3MjEwLCA2NDY1MywgCi0gICAgNzgzODYsIDc0NjE3LCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCA5NTEsIDc0NTY4LCA5Mjk4MywgOTgzODY3LCA3NjA0LCAKLSAgICA5ODMyOTIsIDQwMDksIDcwMjc3LCA3MTg0NCwgMTIwNTYyLCAwLCA5ODM3MjAsIDY0ODYwLCAxMTkxMzgsIDExOTA2OSwgMCwgCi0gICAgMTI3MzcwLCA0MDQ4LCA5ODM1OTgsIDgzMDA5LCA3MDAyNCwgMTY0NiwgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAKLSAgICAxMjkwNDcsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAKLSAgICAyOTc1LCA3NDQ0MiwgOTgyMiwgOTgzOTM1LCA1NTIyMCwgMTAwODQsIDczOTQzLCAxMTg4NDAsIDAsIDkxNzU2MiwgNzgyOTksIAotICAgIDMzOTksIDk4NTEsIDkxNzYwOSwgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDEyNzc2NywgMCwgNzE4NDIsIAotICAgIDcwMTc4LCA5MjMxNCwgMCwgMTc3NywgOTE1MSwgMTEzNywgNjY4NjcsIDc0OSwgNDIzNjYsIDcwNDQ0LCA1Mzg1LCA3MDc5MSwgCi0gICAgNzI0MzUsIDcwMTI3LCA4MzM3NywgNTk4OSwgMTI4OTA1LCA3NDYzNiwgMTIwODQ4LCAwLCA0MTY4NSwgNjkyMjMsIDAsIAotICAgIDk3NjksIDQxNjg0LCAxOTQ3MzcsIDUxOSwgMTE5MjMxLCAxMTc0MCwgNTc2NiwgMCwgMCwgMjYwMCwgODg0OCwgNzA0MTYsIAotICAgIDQxMjk3LCAwLCAzNjY2LCA3MDQyMCwgNDEzMDAsIDc0NDY4LCA2NTE2MCwgMCwgNjk2ODgsIDY5NzcxLCA3NDQ3OSwgMCwgCi0gICAgNjU1OCwgMTI3MTQ5LCAxMjgwNjQsIDY5NzY1LCA5Mjc3NSwgMjUyLCAwLCA0MTMwMiwgMTE5MzUwLCA4MzUwNCwgMTE4ODM5LCAKLSAgICA2OTc2MywgNjg3NjIsIDExNzI5LCA4NzE5LCA5MDYwLCAxMjkwOTEsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDEyOTQxMCwgCi0gICAgMTE4NzkyLCAxMTczNCwgOTMwMTEsIDExNzMwLCAxMTM3NDEsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgCi0gICAgMTE3MjgsIDQzNTcyLCA5ODMxMzksIDAsIDc3NjQsIDY4NzQxLCAxMTA5NCwgMTIwODI1LCAwLCA0MzQ4OSwgNDI4MiwgCi0gICAgODI5OCwgMCwgMCwgNzAzMjgsIDE5NDk4NiwgNzAzMjQsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCA2NTU4NywgCi0gICAgNzA0NDIsIDY1NjcwLCA5ODM5NjMsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgOTgzODY5LCA3MDMyNiwgMCwgCi0gICAgNzE0NjAsIDEyMDc2NCwgNzAzMjIsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcxMiwgMzY0NywgCi0gICAgMTIwMjA3LCAyNjAyLCAxMjgzNDEsIDEyMTEwMywgMTI1MDQzLCA0MTEzNSwgODM0OTgsIDAsIDEyMTMyNSwgNjQ2MzEsIAotICAgIDE3MiwgNDk3MSwgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDc3OTI2LCA3NTk3LCAxMDUyOCwgCi0gICAgNzUwNTQsIDAsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDk4Mzk3MSwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIAorICAgIDEyMTIxMiwgNzE4NDMsIDg4MjgsIDc3OTk1LCA3MDUwNiwgMTI0NiwgNDc0NiwgMTI4NTAxLCAxMjg1MDgsIDIyNjksIAorICAgIDQ3NDksIDkyNjc1LCA5MTc4ODIsIDkyMSwgNDc0NCwgMCwgMTI3MDIsIDI0MiwgMTAwNTk1LCAxNTY2LCA4MjE3LCAKKyAgICAxMjcyMTAsIDY0NjUzLCA3ODM4NiwgNzQ2MTcsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgNzQ1NjgsIAorICAgIDkyOTgzLCA5ODM4NjcsIDc2MDQsIDEyODI2NiwgNDAwOSwgNzAyNzcsIDcxODQ0LCAxMjAxMTUsIDEyNjY0MiwgOTQwNzQsIAorICAgIDY0ODYwLCAxMDA1NTEsIDExOTA2OSwgMCwgMTI3MzcwLCA0MDQ4LCA5ODM1OTgsIDgzMDA5LCA3MDAyNCwgMTY0NiwgCisgICAgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAxMjkwNDcsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgCisgICAgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAyOTc1LCA3NDQ0MiwgOTgyMiwgOTgzOTM1LCA1NTIyMCwgMTAwODQsIDczOTQzLCAKKyAgICAxMTg4NDAsIDk4MzcyOCwgOTE3NTYyLCA3ODI5OSwgMzM5OSwgOTg1MSwgOTE3NjA5LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgCisgICAgMTI3MDUyLCA2Nzg5LCAxMjc3NjcsIDAsIDcxODQyLCA3MDE3OCwgOTIzMTQsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY2ODY3LCAKKyAgICA3NDksIDQyMzY2LCA3MDQ0NCwgNTM4NSwgNzA3OTEsIDcyNDM1LCA3MDEyNywgODMzNzcsIDU5ODksIDEyODkwNSwgNzQ2MzYsIAorICAgIDEyMDg0OCwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgMTk0NzM3LCA1MTksIDExOTIzMSwgMTE3NDAsIAorICAgIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDcwNDE2LCA0MTI5NywgMCwgMzY2NiwgNzA0MjAsIDQxMzAwLCA3NDQ2OCwgCisgICAgNjUxNjAsIDAsIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDEyNzE0OSwgMTI4MDY0LCA2OTc2NSwgOTI3NzUsIAorICAgIDI1MiwgOTgzMTQyLCA0MTMwMiwgMTAwMzcxLCA4MzUwNCwgMTE4ODM5LCA2OTc2MywgNjg3NjIsIDExNzI5LCA4NzE5LCAKKyAgICA5MDYwLCAxMjUwNzcsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDEyOTQxMCwgMTE4NzkyLCAxMTczNCwgOTMwMTEsIDExNzMwLCAKKyAgICAxMTM3NDEsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCA5ODMxMzksIDEyOTQxMiwgCisgICAgNzc2NCwgNjg3NDEsIDExMDk0LCAxMjA4MjUsIDk4Mzc1OCwgNDM0ODksIDQyODIsIDgyOTgsIDAsIDAsIDcwMzI4LCAKKyAgICAxMTM2OTEsIDcwMzI0LCA2NDQ0OSwgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgNjU1ODcsIDcwNDQyLCA2NTY3MCwgCisgICAgOTgzMTgwLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDEwMTEwMiwgNzAzMjYsIDAsIDcxNDYwLCAxMjA3NjQsIAorICAgIDcwMzIyLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MTIsIDM2NDcsIDgzNDM3LCAyNjAyLCAKKyAgICAxMjgzNDEsIDEwMDcxNywgMTI1MDQzLCA0MTEzNSwgODM0OTgsIDEyMDgxNSwgMTIxMzI1LCA2NDYzMSwgMTcyLCA0OTcxLCAKKyAgICA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIDc1OTcsIDEwNTI4LCA3NTA1NCwgCisgICAgMTIxNDA1LCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCA5ODM5NzEsIDQzMzY2LCA0MzM2MywgOTA2MiwgMTE5MjUyLCAKICAgICAxMjE0NDEsIDkyNTI4LCAwLCA2NDQ3OSwgOTIzMiwgOTI1OTYsIDgzMzMwLCAxMTM3MDcsIDE5NDcxMiwgMTA5MDAsIAogICAgIDQxNTMxLCAxMjYzLCAzNzIwLCAxMjA0OCwgNzQwNzUsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgCi0gICAgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgODMwMjIsIDg1MjUsIDEyNzM0NywgMzUyNCwgOTE3NTY1LCA4ODMxLCAxMjczNDksIAotICAgIDkyNTY0LCAzMDc1LCA2Nzg2NywgOTQwNTMsIDAsIDY2MzYyLCAwLCA2NDM1MywgNzA0NDAsIDAsIDU4NDUsIDEyMTMxMCwgMCwgCi0gICAgMTIxMTg1LCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDk4MzY5MywgNDMyODMsIDU1NTEsIDAsIDEyMDczNSwgOTgzMjAxLCAKLSAgICA2MzQwLCAxMTg4NTUsIDEyMTAyNywgNzgxMzQsIDg2ODAsIDcyMDQsIDcwMDY1LCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgCi0gICAgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIDczNzc0LCAxMDkxMywgODMxMTYsIDk4MzA4NiwgODY2NiwgCi0gICAgNjc1LCA0MjQ5MywgMTIxMjk3LCA0MzU3MSwgMCwgNjIxOSwgMTI4NTg0LCA5OTgwLCA0MTIzMiwgMTA5MjgsIDAsIDQxMTUzLCAKLSAgICA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgOTgzMjQzLCAxMjcxMSwgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgCi0gICAgNDI4NTcsIDgyNjIsIDkzMDM2LCAwLCA3NDQ3NiwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgOTgzMDg4LCAKLSAgICAxMjgxMzcsIDQzNzQ0LCAwLCAwLCA3Mzg0NiwgMjkzNCwgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIAotICAgIDk4MzEyNiwgNzQ0NjEsIDMyMTgsIDEyMDQ3MSwgNzQyOTAsIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIAotICAgIDExOTMyLCA3MzcyOCwgMzIxNCwgMTEyMTIsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgCi0gICAgNzg3MjcsIDY1NjY3LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgCi0gICAgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDEyOTA0MywgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIAotICAgIDAsIDAsIDgzMTc4LCAxMjA3MzcsIDEyMDk1MywgMTk0NzczLCA5ODMzMjIsIDM3OCwgMjYxMCwgOTgzMzI4LCA2NTA3OSwgCi0gICAgOTgzMzI3LCA2NTY5NSwgMTIxMjIwLCAzNywgNzA2OCwgMCwgMTIwNDgwLCA2ODIzNiwgMzIwOSwgMTIwNDc3LCAxMjA4MzUsIAotICAgIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTE5OTA5LCA3MTQ4NiwgOTIyMjUsIDk4Mzk1MywgOTgzMzQwLCAwLCA0Mzg0MCwgMCwgMCwgCi0gICAgNTIzMywgOTgzMzM3LCA2NDc5MiwgNzEyMzMsIDEyODIyMywgMTI2NjMzLCAxMjg5MTksIDcwNjAsIDk4NDcsIDEyMDE0NCwgCi0gICAgMTY4NSwgNTk1LCA4MzE5NywgNzA0MjgsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCAwLCAxMDAwNCwgMTI2OTk3LCAwLCAKLSAgICA2NTQxLCA0MzgzNywgNzE0NjUsIDEyMTAzMCwgMzI0MywgOTAxNCwgNTYwNiwgMTI1MDMyLCA1MzgsIDY0NjIwLCA1NjAyLCAKLSAgICA4NDY3LCA3NDM5MSwgNjU0NywgNzE0NjYsIDgyMDMsIDY2NDIwLCA2ODI0MSwgODQ1OCwgNjUyMTEsIDg0OTUsIDkyMzExLCAKLSAgICAxMjc0ODEsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgCi0gICAgMTIwOTEzLCA3MDY1LCA3NDE1NSwgNDM0NiwgMTEzNjkwLCA3Mzc5OCwgNTA0LCAxMjUxMTUsIDkyNDE0LCA4OTgyLCAwLCAKLSAgICAxMjE0NzEsIDExOTE3MCwgNzgyLCAxMjkwMjgsIDEwODgzLCAxMjg0NDYsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjExODgsIAotICAgIDE1NDgsIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgOTgzMzcyLCAxMTc4NywgCi0gICAgMzc0NSwgOTE3ODY4LCAxMTk4ODUsIDQyODg4LCA2NTcxMiwgMTI3OTEzLCAzODY5LCAxMTkzNywgNTcyNSwgMTI3NTM5LCAKLSAgICAxNzgzLCA3NDE2LCA1NzI4LCAwLCAxMjg0NTcsIDExOTU1NCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAxMjc5NjUsIDU3MjcsIAotICAgIDc4NTIxLCAxMjExMjEsIDAsIDc2NCwgMCwgMTIxMDExLCA0MzUzMSwgMTEzNjcwLCA5MDMzLCAxMjcxODIsIDQyNTMyLCAKLSAgICA2MjIzLCAxMTA0MiwgMTIwNzQ5LCAxMTQyMywgNzQ4NTIsIDExOTg2MSwgNjgzMDMsIDQzNDY1LCAwLCA3NDc2NywgNjU1OSwgCi0gICAgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgMTIwNjQ4LCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgMTI4NzExLCA0MzM3NywgCi0gICAgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDExMzY4OSwgNzczOSwgNzQ1NDMsIAotICAgIDkxNzc2NSwgNjczOTMsIDAsIDYxMzIsIDAsIDYzNzY1LCAxMjgzOTYsIDcwMDU4LCA0MTE0NCwgNzE4OTksIDkyNDM4LCAKLSAgICA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgMTI4Mzk0LCAxOTQ3NzYsIDg4MjAsIDM5NDcsIDAsIDY1Mjk5LCAKLSAgICAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAxOTQ2MDMsIDEyNTAwMiwgMTk0OTMyLCAxMTM2OTEsIDc2ODgsIDkxNzc4NiwgCi0gICAgNzY4NiwgODI4OCwgMTE4MTUsIDk4MzE4OCwgMTIxNDExLCA5ODMzODQsIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgCi0gICAgNDIyODEsIDc4NTQ0LCA3NDAyNCwgMTIyOTMsIDk4MzY4MCwgNjQzNTcsIDExNzk0LCA0MjA4MiwgMTI4MTI1LCAxNzM3LCAKLSAgICA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgODMyNjQsIDkzMzUsIDEyODUwLCAxMTkxNzMsIDY1NTMsIDcwNTUsIDY4MDQxLCAKLSAgICA4Mjc3LCAwLCA2Nzc1MSwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDY1MDY3LCAwLCAxMzI3LCAxMTYwLCA0MjA4NCwgOTM5NjMsIAotICAgIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDEyOTA3MCwgOTgzODY1LCA2ODE3NiwgNTg2MywgMzEzNywgMCwgNDE0NywgCi0gICAgOTgzMTcwLCA0MTIxNiwgNzg0NCwgMjYxNiwgNzAxOTcsIDY4NDYxLCA2NTIzNCwgNjgzNDEsIDEzMDc2LCAzMTM1LCAKLSAgICA5ODMyODksIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgMTAxODMsIDc0NjM1LCAKLSAgICAyNjA4LCAxNDcwLCA3Mzk2NywgOTQwMDgsIDYyMjcsIDEyMTI1NywgODMyNjgsIDY1MjM2LCA5MTc4NzgsIDYxNjMsIAotICAgIDk4MzU1OCwgMTEzNzI4LCAxMjczMTQsIDEyODEzOCwgOTgzMjM2LCA4NjAzLCAxMjc5NTksIDExOTg2NiwgMzMwNiwgCi0gICAgMTA4NzYsIDQzMzkyLCA4MzE4NywgMTI3OTMxLCA1NzUxLCAxMjc1MTcsIDYyMjIsIDAsIDEyNzQ2NiwgMTIwODYsIDc0MDMsIAotICAgIDE2MDAsIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMTE5OTAzLCAwLCAyNTcwLCAKLSAgICA3MDIxLCA3NDkwMiwgMTk0NzQyLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgOTI3NTAsIDAsIDk4MzIxMSwgNTAwMiwgCi0gICAgOTgzNTYzLCA0MTI4NiwgNjk5NDYsIDc0NDY1LCA3MTA3NCwgNDM1ODUsIDExMzcyMCwgNjU1MSwgOTgzMzc1LCAxMjgyMjksIAotICAgIDk4MzI3NCwgNDEyODksIDEyNTEzMCwgNzEwODAsIDEyNzk1OCwgODk3NywgNjAyLCAxMjA4MTQsIDAsIDEyODM1MCwgCi0gICAgMTI4NjYxLCAxOTQ4OTAsIDk4MzM3NywgNDEyNzksIDAsIDAsIDk0MTA4LCAxMTA4MSwgNDM2MTUsIDAsIDAsIDEyNzg4OCwgCi0gICAgOTgzNjEyLCAxMjcyNywgNDM4OTUsIDAsIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCAKLSAgICA3ODMxLCA5ODM4MjksIDE5NDU3MSwgMCwgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDAsIAotICAgIDI1OTYsIDQzNTg0LCAxMjA5ODMsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDc0MDY3LCA2ODY3MywgCi0gICAgNDE1NzQsIDc4MzM3LCA3MDQ5OCwgNDI5MDAsIDYzNzYsIDAsIDAsIDAsIDAsIDk4NTQsIDEyNzc0OCwgNjQ2OTYsIDczODc5LCAKLSAgICAxMjgyMjAsIDEyMDc1MiwgNjk5NCwgMCwgMTcyMCwgMCwgMCwgMCwgNjUyOSwgNzA2MywgOTgzMTc5LCAzNzUxLCA5MTIwLCAKLSAgICA5ODM0ODcsIDY4MDM4LCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCA2NTU3LCAxMjQzMCwgODEzNywgOTQwOTgsIAotICAgIDY3NzUyLCA3MDg1MCwgMTE5MDU3LCAyNDUsIDEyMTA2NiwgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCA5NDA0NiwgNjEzNiwgCi0gICAgNjgzMDQsIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCA5ODA0LCAxMTg5NjMsIDQzMiwgMzU5NSwgMTI3MDE1LCAKLSAgICA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCA5ODMxMzYsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAxMjgxODQsIDAsIDAsIAotICAgIDc3ODk0LCA4Nzk3LCAwLCA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIAotICAgIDcxMTIzLCA2NDY0MCwgNjk5OTksIDk0MTA5LCAxMjA4NzcsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgCi0gICAgNzQ2MjIsIDQzNDkyLCAyNTY2LCAxMTk3MSwgOTgzNzM3LCAxMjA4ODIsIDEwNjUsIDAsIDEyNzAwNSwgNDM0MDAsIDI1NzYsIAotICAgIDY2Njk2LCA2NjgxOSwgODMzMzMsIDQzNjA0LCAxMjc4OTEsIDAsIDMyMDEsIDUxNCwgNzQ1MDIsIDcwMDMyLCAyOTIxLCAKLSAgICA0MzIxNSwgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3MDMxMCwgNDMzOTgsIDI1ODAsIDE5NTAyNSwgCi0gICAgNDEzNDEsIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMCwgNTI5MywgNzAwMjAsIDEyNzg3MCwgMzczMywgMTEzNDYsIDAsIAotICAgIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDE5NTA3NCwgMTMwOTEsIDAsIDEyODU4MCwgMCwgOTE3OTE1LCAxMjc5NjEsIAotICAgIDEyNzAyNSwgMTI4MzM0LCA3NDgyMSwgNzExMDQsIDY2Mjk1LCA2ODAzNywgMCwgMTIxMTE2LCAxMzA5MCwgNjY2NDMsIDAsIAotICAgIDEyNzAsIDExMzIsIDQyMzYwLCAwLCA3NDA5NiwgNjY2NTUsIDQyNTY5LCAxMjc4MjQsIDY2ODk4LCA2NDc2MSwgMCwgCi0gICAgNDEwMjEsIDg1MTAsIDQyNDMyLCAxMTk4OTgsIDExOTMxNywgMTk0NzgyLCAxOTQ2NDEsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIAotICAgIDk5MTUsIDk4MzA4MywgOTgzMjE4LCA3MDYxLCA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIAotICAgIDQyMzE5LCAxMzA4MiwgNzgxMTQsIDcwNjcsIDY4MjIxLCAxMjc4ODEsIDEyNzM4MywgMTI3MTcxLCAwLCAxMjA3NDUsIAotICAgIDc0MjA5LCA5MDI5LCA0MzU0MywgNzA4MzYsIDIzNTMsIDYzMDgsIDEyOTE1NCwgNzQ3OTIsIDI2MTEsIDExOTE4NiwgCi0gICAgNjY4ODEsIDEyNzI0MSwgNjUwNjMsIDQzNjY0LCA5MjMxOSwgNjY2MjcsIDkyOTEyLCA0NDg0LCA4NTA5LCAxMTg5NzYsIAotICAgIDExMDY2LCA2NTIzMywgMTI3MTQ2LCA0MTIyNCwgNDEwMTcsIDEyODE0OSwgMzc0NywgMTA1MjIsIDAsIDE5NDg3NiwgMTY5MSwgCi0gICAgNDEyMjYsIDc0OTYyLCAxMjEwNywgNzEwMCwgMTA5MDUsIDY1MDEwLCAxMjEyOTksIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIAotICAgIDk4MzM0MywgOTMwNTgsIDc0NzgxLCAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDEyMDk0OSwgCi0gICAgMTIxMDMyLCAwLCAxMjcxOTMsIDY1ODE2LCA2ODExMSwgMTE4OTUwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgCi0gICAgMzU2MiwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgNzgxMTAsIDcxMjMsIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCAKLSAgICA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgMCwgMCwgNjgzNjUsIDEyODI1OCwgMTk1MDI3LCAwLCAwLCAKLSAgICAxMzEyMiwgMCwgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgCi0gICAgNDE1NzgsIDk4MzEwNCwgNDE1NzcsIDAsIDEwMDAyLCAxMjEzNjQsIDY1MzMsIDczODAyLCA0MTU3MCwgOTE3OTE5LCA2ODMsIAotICAgIDM5NiwgNDE1ODAsIDY4MTQ2LCA5ODMwNjcsIDEyOTAxLCA0MzA1OCwgMCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIAotICAgIDc4MTU0LCA5ODMzOTcsIDQ3NDMsIDY5OTg3LCAwLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgCi0gICAgMTI4NjY1LCAzNzM5LCA2MjYzLCA3MTM0OSwgMTI4ODExLCAzOTY0LCA2NTkyLCAxMjE0MjQsIDY4Mjg4LCA2NjA0MCwgCisgICAgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgODMwMjIsIDg1MjUsIDEyNzM0NywgMzUyNCwgMTI4NzE3LCA4ODMxLCAxMjczNDksIAorICAgIDkyNTY0LCAzMDc1LCA2Nzg2NywgOTQwNTMsIDAsIDY2MzYyLCAwLCA2NDM1MywgNzA0NDAsIDk4Mzk3MCwgNTg0NSwgCisgICAgMTIxMzEwLCAxMjc5MzcsIDEyMTE4NSwgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCA3NDg1OCwgNDMyODMsIDU1NTEsIDAsIAorICAgIDEyMDczNSwgMTI5NDIzLCA2MzQwLCAxMTg4NTUsIDEwMDYwMiwgNzgxMzQsIDg2ODAsIDcyMDQsIDcwMDY1LCAyNTg4LCAKKyAgICAyOTE0LCA3MDExLCA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMDA4NTIsIDczNzc0LCAxMDkxMywgCisgICAgODMxMTYsIDk4MzA4NiwgODY2NiwgNjc1LCA0MjQ5MywgMTIxMjk3LCA0MzU3MSwgMCwgNjIxOSwgMTI4NTg0LCA5OTgwLCAKKyAgICA0MTIzMiwgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgOTgzMjQzLCAxMjcxMSwgCisgICAgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgNDI4NTcsIDgyNjIsIDkzMDM2LCA5ODM2NzYsIDc0NDc2LCAwLCA0MjM0NywgCisgICAgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCAxMjg3NjgsIDEyODEzNywgNDM3NDQsIDEwMDYxMCwgMCwgNzM4NDYsIDI5MzQsIAorICAgIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCA5ODMxMTAsIDc0NDYxLCAzMjE4LCAxMDEwMDIsIDc0MjkwLCAKKyAgICAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAxMTkzMiwgNzM3MjgsIDMyMTQsIDExMjEyLCAxMjA0NjgsIAorICAgIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIDc4NzI3LCA2NTY2NywgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgCisgICAgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAxMjkwNDMsIAorICAgIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCA5ODM4NTMsIDk4Mzg5MywgODMxNzgsIDEwMDcyOCwgMTIwOTUzLCAKKyAgICAxOTQ3NzMsIDE5NDYwMSwgMzc4LCAyNjEwLCA5ODMzMjgsIDY1MDc5LCAxOTQ4NzksIDY1Njk1LCAxMjEyMjAsIDM3LCAKKyAgICA3MDY4LCAwLCAxMjA0ODAsIDY4MjM2LCAzMjA5LCAxMjA0NzcsIDEyMDgzNSwgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMDA2MjEsIAorICAgIDcxNDg2LCA5MjIyNSwgMTI4NDk0LCA5ODMzNDAsIDEwMDkwNSwgNDM4NDAsIDAsIDEwMTA5NiwgNTIzMywgMTAwNjI0LCAKKyAgICA2NDc5MiwgNzEyMzMsIDEyODIyMywgMTAwNjI2LCAxMjg5MTksIDcwNjAsIDk4NDcsIDEyMDE0NCwgMTY4NSwgNTk1LCAKKyAgICA4MzE5NywgNzA0MjgsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCA5Mjk0OCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgCisgICAgNDM4MzcsIDcxNDY1LCAxMjEwMzAsIDMyNDMsIDkwMTQsIDU2MDYsIDExOTU4NSwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgCisgICAgNzQzOTEsIDY1NDcsIDcxNDY2LCA4MjAzLCA2NjQyMCwgNjgyNDEsIDg0NTgsIDY1MjExLCA4NDk1LCA5MjMxMSwgMTI3NDgxLCAKKyAgICA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIDEyMDkxMywgCisgICAgNzA2NSwgNzQxNTUsIDQzNDYsIDEwMDU3MCwgNzM3OTgsIDUwNCwgMTI1MTE1LCA5MjQxNCwgODk4MiwgMCwgMTIxNDcxLCAKKyAgICAxMTkxNzAsIDc4MiwgMTI5MDI4LCAxMDg4MywgMTI4NDQ2LCAxOTQ4NTIsIDczMiwgMzczNywgMTIxMTg4LCAxNTQ4LCAKKyAgICA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDk4MzM3MiwgMTE3ODcsIDM3NDUsIAorICAgIDkxNzg2OCwgMTE5ODg1LCA0Mjg4OCwgNjU3MTIsIDEwMDYwNiwgMzg2OSwgMTE5MzcsIDU3MjUsIDEwMDYwOCwgMTc4MywgCisgICAgNzQxNiwgNTcyOCwgMTI4NTY5LCAxMjg0NTcsIDExOTU1NCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAxMjc5NjUsIDU3MjcsIAorICAgIDc4NTIxLCAxMjExMjEsIDEyODQ4OCwgNzY0LCAwLCAxMjEwMTEsIDQzNTMxLCAxMTM2NzAsIDkwMzMsIDEyNzE4MiwgCisgICAgNDI1MzIsIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCA3NDg1MiwgMTE5ODYxLCA2ODMwMywgNDM0NjUsIDE5NDgxOSwgCisgICAgNzI4NTQsIDY1NTksIDY0NTU3LCA3MTM0OCwgOTI2NDksIDY2NzYzLCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgCisgICAgMTI4NzExLCA0MzM3NywgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDExMzY4OSwgCisgICAgNzczOSwgNzQ1NDMsIDkxNzc2NSwgNjczOTMsIDEwMDU4OCwgNjEzMiwgMCwgNjM3NjUsIDEwMDU5MCwgNzAwNTgsIDQxMTQ0LCAKKyAgICA3MTg5OSwgOTI0MzgsIDQzNTM3LCA2NzYxLCAxMDA5MywgNDM2OSwgOTE3NzkxLCA3MDY4MiwgMTAwNTYxLCA4ODIwLCAKKyAgICAzOTQ3LCAxMjI4OTgsIDY1Mjk5LCAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAxOTQ2MDMsIDEwMDkzMSwgMTk0OTMyLCAKKyAgICA3ODM5MywgNzY4OCwgOTE3Nzg2LCA3Njg2LCA4Mjg4LCAxMTgxNSwgOTgzMTg4LCAxMDA5MzQsIDk4MzM4NCwgMTU0MywgCisgICAgMzcxMywgNDEyMjEsIDEyNDIzLCA0MjI4MSwgNzg1NDQsIDc0MDI0LCAxMjI5MywgMTk0NTg5LCA2NDM1NywgMTE3OTQsIAorICAgIDQyMDgyLCA3MDc0NCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDgzMjY0LCA5MzM1LCAxMjg1MCwgMTE5MTczLCAKKyAgICAyMjcyLCA3MDU1LCA2ODA0MSwgODI3NywgMCwgNjc3NTEsIDU0NzUsIDc0Nzk1LCA2NzgwLCA2NTA2NywgMCwgMTMyNywgCisgICAgMTE2MCwgNDIwODQsIDkzOTYzLCA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAxMjkwNzAsIDEwMDYxNywgNjgxNzYsIAorICAgIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDcwMTk3LCA2ODQ2MSwgNjUyMzQsIAorICAgIDY4MzQxLCAxMzA3NiwgMzEzNSwgOTgzMjg5LCA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAKKyAgICAxMTk1ODAsIDEwMTgzLCA3NDYzNSwgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAxMjEyNTcsIDgzMjY4LCAKKyAgICA2NTIzNiwgMTIwMjU2LCA2MTYzLCAxMjkyOTcsIDExMzcyOCwgMTI3MzE0LCA3MzgyMiwgOTgzMjM2LCA4NjAzLCAxMjc5NTksIAorICAgIDExOTg2NiwgMzMwNiwgMTA4NzYsIDQzMzkyLCA4MzE4NywgMTI3OTMxLCA1NzUxLCAxMjc1MTcsIDYyMjIsIDEwMDcxNiwgCisgICAgMTI3NDY2LCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCA5ODMzMDcsIAorICAgIDg4ODIsIDExOTkwMywgNzg1MTgsIDI1NzAsIDcwMjEsIDc0OTAyLCAxMjg4ODAsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCAKKyAgICA2OTc0LCA5Mjc1MCwgMTI3Mzk2LCAxMDA5MjMsIDUwMDIsIDk4MzU2MywgNDEyODYsIDY5OTQ2LCA3NDQ2NSwgNzEwNzQsIAorICAgIDQzNTg1LCAxMDA5MjcsIDY1NTEsIDk4MzM3NSwgMTI4MjI5LCA5ODMwNDcsIDQxMjg5LCAxMjUxMzAsIDcxMDgwLCAKKyAgICAxMDA1MjEsIDg5NzcsIDYwMiwgMTIwODE0LCAxMDA2MzAsIDEyODM1MCwgMTI4NjYxLCAxOTQ4OTAsIDk4MzM3NywgNDEyNzksIAorICAgIDAsIDAsIDk0MTA4LCAxMTA4MSwgNDM2MTUsIDAsIDEwMTAyMiwgMTI3ODg4LCAxOTQ5OTQsIDEyNzI3LCA0Mzg5NSwgMCwgCisgICAgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAxMjc1NTYsIDk2MzMsIDEwODg2LCA0MzU5MiwgNzgzMSwgNjY3NTEsIAorICAgIDE5NDU3MSwgMTIyODg1LCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgOTgzODk1LCAKKyAgICAyNTk2LCA0MzU4NCwgMTIwOTgzLCAxMzExMywgOTgzNzMxLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDQxMzYsIAorICAgIDY4NjczLCA0MTU3NCwgNzgzMzcsIDcwNDk4LCA0MjkwMCwgNjM3NiwgMCwgMTk0OTEyLCAxMjc4MjAsIDAsIDk4NTQsIAorICAgIDEwMTA4OCwgNjQ2OTYsIDczODc5LCAxMjgyMjAsIDEyMDc1MiwgNjk5NCwgMCwgMTcyMCwgOTE3Nzk3LCAwLCAwLCA2NTI5LCAKKyAgICA3MDYzLCAxMTg5MTcsIDM3NTEsIDkxMjAsIDE5NDYyOCwgNjgwMzgsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIAorICAgIDY1NTcsIDEyNDMwLCA4MTM3LCA5NDA5OCwgNjc3NTIsIDcwODUwLCAxMDA4MzIsIDI0NSwgMTAwODMxLCAxMTQ1NiwgCisgICAgNDEyMzMsIDcwNzAsIDcxMjY0LCA5NDA0NiwgNjEzNiwgNjgzMDQsIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCAKKyAgICA5ODA0LCAxMDA2NDIsIDQzMiwgMzU5NSwgMTAwNzg0LCA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCAxMDA2NDYsIDEwMDY0MSwgCisgICAgMTAwNjQ5LCA5ODM5NDksIDEwMDY0OCwgMTI4MTg0LCAxMDA3ODYsIDE5NDU4NywgNzc4OTQsIDg3OTcsIDk4Mzk1NiwgCisgICAgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDEwMDg0NSwgNDIyODYsIDcxMTIzLCA2NDY0MCwgCisgICAgNjk5OTksIDk0MTA5LCAxMjA4NzcsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgNzQ2MjIsIDQzNDkyLCAKKyAgICAyNTY2LCAxMTk3MSwgOTgzNzM3LCAxMjA4ODIsIDEwNjUsIDEyMDc2OCwgMTI3MDA1LCA0MzQwMCwgMjU3NiwgNjY2OTYsIAorICAgIDY2ODE5LCA4MzMzMywgNDM2MDQsIDEyNzg5MSwgMCwgMzIwMSwgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIDQzMjE1LCAKKyAgICA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDcwMzEwLCA0MzM5OCwgMjU4MCwgMTI4NDk3LCA0MTM0MSwgCisgICAgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAxOTUwOTIsIDUyOTMsIDcwMDIwLCAxMjc4NzAsIDM3MzMsIDExMzQ2LCAwLCAKKyAgICAxMjA1NCwgMTAwODI0LCA3NDA5OCwgNDI4MjcsIDE5NTA3NCwgMTMwOTEsIDAsIDEyODU4MCwgMTAwODIxLCAxMDA4MjgsIAorICAgIDEyNzk2MSwgMTI3MDI1LCAxMjgzMzQsIDc0ODIxLCA3MTEwNCwgNjYyOTUsIDY4MDM3LCA5ODM5MDUsIDEyMTExNiwgCisgICAgMTMwOTAsIDY2NjQzLCAxMjg4MjAsIDEyNzAsIDExMzIsIDQyMzYwLCAxOTQ5NjgsIDY2NzUyLCA2NjY1NSwgNDI1NjksIAorICAgIDEyMDU3MSwgNjY4OTgsIDY0NzYxLCAxMDA3NzYsIDQxMDIxLCA4NTEwLCA0MjQzMiwgMTAwNzc4LCAxMTkzMTcsIDE5NDc4MiwgCisgICAgMTk0NjQxLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCA5OTE1LCA2OTc5OCwgOTgzMjE4LCA3MDYxLCA0MTMzNiwgMzg1NCwgCisgICAgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIDQyMzE5LCAxMzA4MiwgNzgxMTQsIDcwNjcsIDY4MjIxLCAxMjc4ODEsIAorICAgIDEyNzM4MywgMTI3MTcxLCAxMjEyMDcsIDEwMDc2NSwgNzQyMDksIDkwMjksIDQzNTQzLCA3MDgzNiwgMjM1MywgNjMwOCwgCisgICAgNzA2NjIsIDc0NzkyLCAyNjExLCAxMDA3NjgsIDY2ODgxLCAxMjcyNDEsIDY1MDYzLCA0MzY2NCwgOTIzMTksIDY2NjI3LCAKKyAgICA5MjkxMiwgNDQ4NCwgODUwOSwgMTE4OTc2LCAxMTA2NiwgNjUyMzMsIDEyNzE0NiwgNDEyMjQsIDQxMDE3LCAxMjA1MTQsIAorICAgIDM3NDcsIDEwNTIyLCA5MTc4MTEsIDExOTk3MCwgMTY5MSwgNDEyMjYsIDc0OTYyLCAxMjEwNywgNzEwMCwgMTA5MDUsIAorICAgIDY1MDEwLCA3NDYwMiwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgOTgzMzQzLCA5MzA1OCwgNzQ3ODEsIDEzMTIxLCAKKyAgICAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMTIwOTQ5LCAxMjEwMzIsIDk4MzEzMiwgMTI3MTkzLCA2NTgxNiwgCisgICAgNjgxMTEsIDExODk1MCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIDM1NjIsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIAorICAgIDc4MTEwLCA3MTIzLCA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIAorICAgIDAsIDk4MzE1MCwgNjgzNjUsIDEyODI1OCwgMTk1MDI2LCA5ODM0MDIsIDAsIDEzMTIyLCAxMjc1NDYsIDE5MSwgNzAwNjAsIAorICAgIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCA2NDg1MCwgNDEwNzIsIDQxNTc4LCA5ODMxMDQsIDQxNTc3LCAKKyAgICA5ODMzNzEsIDEwMDAyLCAxMDA3NTQsIDY1MzMsIDczODAyLCA0MTU3MCwgMTAwNzU2LCA2ODMsIDM5NiwgNDE1ODAsIAorICAgIDY4MTQ2LCAxMjc4MTUsIDEyOTAxLCA0MzA1OCwgMTAwNzYwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgNzgxNTQsIAorICAgIDEyNzA4MiwgNDc0MywgNjk5ODcsIDEwMDc2MSwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMDA3NTEsIAorICAgIDEyODY2NSwgMzczOSwgNjI2MywgNzEzNDksIDEyODgxMSwgMzk2NCwgNjU5MiwgMTIwNzAxLCA2NTEwOCwgNjYwNDAsIAogICAgIDgyOTQ2LCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMTI4NDQzLCA0MjA3MCwgNjU2MywgNDMwNzUsIAotICAgIDkwMTgsIDk0MDA2LCA5ODMzOTgsIDEyMDY3LCA0MTMxMiwgOTI3NjMsIDU1NDcsIDg5MTYsIDEyMDg2OSwgMTI4OTUwLCAKKyAgICA5MDE4LCA5NDAwNiwgMTIxNDI0LCAxMjA2NywgNDEzMTIsIDkyNzYxLCA1NTQ3LCA4OTE2LCAxMjA4NjksIDEyODk1MCwgCiAgICAgODE3NSwgOTQwMzQsIDI4NCwgODEwOCwgOTM0LCAxMjgwMzksIDc0MDAxLCAxNzMsIDY2NDYwLCA3MTc0LCA5MjcwMywgCi0gICAgMTE4ODIyLCAxNzUwLCAxMjg2ODYsIDQzOTQsIDY4MzY4LCAxODA3LCA5ODM4ODgsIDkyMjk4LCAwLCA1ODg5LCAxMjg3OTUsIAotICAgIDcxODAsIDAsIDY3MTI3LCAwLCA2NzEyNiwgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCA3ODkxLCA0MjI0MywgNDIxNjAsIAotICAgIDI1ODMsIDQ1MTIsIDExOTM2MCwgNjUyMzAsIDEyODEwOSwgMCwgOTE3NjMwLCAzODU1LCAxOTQ4MTAsIDExNzY3LCAKLSAgICAxMjc5OTgsIDAsIDc0Mjk1LCAxOTQ2NTEsIDAsIDkyNDE2LCAzOTc1LCA2NzEyNSwgNzQwODcsIDc0OTg5LCAxMjY3MiwgCi0gICAgMzc5OCwgMjcwMywgMTk0NjA4LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCA5ODM3NTAsIDQxMDk1LCAzOTYyLCA2ODI0MiwgCi0gICAgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDc0NTM2LCAxMjcxODksIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMTIwMDMzLCAKLSAgICA5ODMwNTcsIDQxODAzLCAxMjc5OTksIDQxODQ2LCAxMjcyNDQsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIAotICAgIDMyMjQsIDExMzczNCwgOTI3NDEsIDY2MjgxLCA0MjUzMSwgNzQ1OTMsIDE1MTAsIDEyODM4NCwgODI1NiwgMCwgMTEzOTMsIAotICAgIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIDcyNDE2LCAxMjA4MTEsIDcyNDE1LCAxOTEwLCA4NjcxLCA3ODM3NCwgCi0gICAgNDI4MywgNjg4NDIsIDEyMDgyNCwgNjgzNjEsIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDYsIDEyODI0MSwgMCwgNzIzOTQsIAotICAgIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgCi0gICAgNzQ0NzUsIDk4MzQ0NCwgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgCi0gICAgNzM5NiwgNzExNiwgMCwgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDExOTE0NCwgMTI4NDQ3LCA5MjM0NywgMTk1MDY2LCAKLSAgICA0MTM1MCwgOTEyOSwgOTgzNDQ4LCAwLCAyMjk0LCA2NDUwMSwgNjgwMzQsIDgzMzI2LCAxMDQ4MSwgMCwgNzAwMjIsIDcxNzEsIAotICAgIDAsIDM0MCwgNzExMDUsIDkzOTcyLCA2NzM2MCwgMCwgOTIyMDAsIDEyODI0OSwgMTI0OTc5LCA2NzY0LCAxMjc0ODcsIAotICAgIDEyODM5MywgMCwgOTI1MDksIDEyODk2MiwgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMTE5MDczLCAzMjEwLCAwLCAKLSAgICAwLCAxMTg3OTUsIDgyOTU4LCA5NDEwMSwgMTI3NDg0LCA5MTc2MTksIDExOTE0OSwgMCwgMTAwNDMsIDEyMTIxNSwgMTE4NiwgCisgICAgMTE4ODIyLCAxNzUwLCAxMjg2ODYsIDQzOTQsIDY4MzY4LCAxODA3LCA3ODU0NSwgOTIyOTgsIDEwMTA4MiwgNTg4OSwgCisgICAgMTI4Nzk1LCA3MTgwLCAxMDEwODMsIDY3MTI3LCAxMDEwOTEsIDY3MTI2LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIAorICAgIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCA5ODM0NjcsIDkxNzYzMCwgCisgICAgMzg1NSwgMTk0ODEwLCAxMTc2NywgMTI3OTk4LCA5ODM1ODksIDc0Mjk1LCAxOTQ1NzcsIDEwMDc5NywgOTI0MTYsIDM5NzUsIAorICAgIDY3MTI1LCA3NDA4NywgNzQ5ODksIDEyNjcyLCAzNzk4LCAyNzAzLCAxMDA3OTMsIDAsIDIxMDksIDk3NzQsIDEyNzUsIAorICAgIDE5NDk2NCwgOTgzNzUwLCA0MTA5NSwgMzk2MiwgNjgyNDIsIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCA3NDUzNiwgCisgICAgMTAwOTQ3LCA3Mzk5NCwgNzM5OTIsIDE0NjgsIDEyMDAzMywgOTgzMDU3LCA0MTgwMywgMTI3OTk5LCA0MTg0NiwgMTI3MjQ0LCAKKyAgICA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAzMjI0LCAxMDA3NTUsIDkyNzQxLCA2NjI4MSwgNDI1MzEsIAorICAgIDc0NTkzLCAxNTEwLCAxMjgzODQsIDgyNTYsIDk4MzA0MywgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIAorICAgIDcyNDE2LCAxMjA4MTEsIDcyNDE1LCAxOTEwLCA4NjcxLCA3ODM3NCwgNDI4MywgNjg4NDIsIDcyNzg3LCA2ODM2MSwgCisgICAgNzgzMTgsIDI2NTQsIDc4OTMsIDEyOTE1MSwgMTI4MjQxLCAxMDA4MDIsIDcyMzk0LCA2NTEwNiwgNDI3NjEsIDEyODU3LCAKKyAgICA0NTgxLCA4NDExLCA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIDc0NDc1LCA5ODMxNDMsIDAsIDE3MzMsIAorICAgIDQzOTIsIDI1NjgsIDEwNzg2LCA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDEyODY0NCwgNzM5NiwgNzExNiwgMCwgNjk3ODgsIAorICAgIDEwMDc5MCwgNzE4NSwgNzk2NSwgMTE5MTQ0LCAxMjg0NDcsIDkyMzQ3LCAxOTUwNjYsIDQxMzUwLCA5MTI5LCA5ODM0NDgsIAorICAgIDk4MzYxOSwgMjI5NCwgNjQ1MDEsIDY4MDM0LCA4MzMyNiwgMTA0ODEsIDAsIDcwMDIyLCA3MTcxLCAwLCAzNDAsIDcxMTA1LCAKKyAgICA5Mzk3MiwgNjczNjAsIDE5NDk0MiwgOTIyMDAsIDEyODI0OSwgMTI0OTc5LCA2NzY0LCAxMjA4MDQsIDEyODM5MywgMCwgCisgICAgOTI1MDksIDEyODk2MiwgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMTE5MDczLCAzMjEwLCAwLCAxMDA2MzIsIAorICAgIDExODc5NSwgODI5NTgsIDk0MTAxLCAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCA3MzkyNiwgMTAwNDMsIDEyMTIxNSwgMTE4NiwgCiAgICAgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI1MTIzLCAzNjc1LCA1MjA3LCA2NTA2MiwgNTIxMywgNzQ2MTYsIDI2MTcsIAotICAgIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAxMjA1MzUsIDAsIDg2MzAsIDEyMTIwOSwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgCi0gICAgMjU4NiwgNjQ4ODcsIDExOTgyNiwgNTIxNywgNzEzMzYsIDEyODY4NywgOTE3NjE0LCAxMjEwMzgsIDY0MjkzLCA2ODA5OCwgCi0gICAgMjYzNSwgOTI3NjAsIDgzMTM3LCA5ODM4NDYsIDAsIDkyNzQyLCA3ODM1LCA3MDA0MCwgMTIwNzA3LCAxOTQ5ODgsIDkyMjg1LCAKLSAgICA2NDU1OCwgMTI3MTIyLCAxMjE0MjUsIDY3MDgzLCA2NzA4NSwgNzAwOTksIDcxMTE4LCA1Nzg0LCA5ODMxMDIsIDE5NTA1MCwgCi0gICAgOTgzODEyLCA3MDAzMywgNDAxMSwgMTk0NTY1LCA2ODEwMSwgMTI0OTc4LCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDk4LCAKLSAgICA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIAotICAgIDEyOTA1NCwgMTI3MTAzLCAxMTI0LCA1NTk3LCAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDg2LCA3NTA0MCwgOTgzNDg0LCAKLSAgICA2NzQwMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCA5NjcxLCAxMTI1LCA0Mzk5LCA2ODc3NSwgNjYyNzQsIDk4MzQ5MCwgNzYzMSwgCi0gICAgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCA1NDkxLCAxMTg3OTcsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgCi0gICAgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgNjMwMCwgMTI3MTIxLCA3MTIyLCA5ODMwOTAsIDQzOTAsIDQ1NCwgCi0gICAgNDEzOTcsIDAsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIAotICAgIDExOTE4NCwgMzc0NiwgMTEwMTYsIDY1NzUyLCA5Mjc1NywgMCwgNDM0MjMsIDEyODY4MywgMTE5ODksIDExODg4OSwgCi0gICAgMTI3NzkxLCAxMjc5OTUsIDc4Mjk2LCAwLCA4MjQ5LCAxMjgxNzIsIDExMTA5LCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIAotICAgIDUxMywgMTI3MTE4LCA2NTg2LCA4NjU2LCAxMjkzMDEsIDY5NzkyLCA2NTAwOCwgMTk0NTk3LCA3MTExMSwgNzgzODMsIAotICAgIDE5NDc5NSwgMTI3NDc0LCA5MjUxNSwgNjg0NzUsIDkzOTczLCAxOTQ1ODQsIDYzNzk5LCA3ODYzNywgMTI2NDcsIDkxNzYwNiwgCi0gICAgMTI4MDQzLCA2OTg5MywgMTAzNiwgNjgwOTAsIDkyNDE5LCAxNzIzLCA2ODIxNSwgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAKLSAgICAxMjA3MjIsIDEwNzA1LCA3Mzg3NiwgMTk1MDU0LCA3NDQ4NiwgOTgzNDY5LCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIAotICAgIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA0MzkzNiwgNDM5MzgsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgCi0gICAgNDI1NzQsIDEzMjg1LCA0Mzk2NywgMTE5MDcsIDQzOTI4LCA1NjkwLCA5MjI1NSwgNTExNiwgMCwgNDMxODEsIDEzMDk1LCAKLSAgICA3NzkyNSwgNDM5MjYsIDY0NDk4LCAwLCA5NTA2LCA2OTc4LCA3MDE3NiwgNzQ5MzEsIDAsIDExMzc0MywgNzgzNzksIAotICAgIDQzOTM0LCAxMjc4NDUsIDExMjIsIDMxNywgMCwgNzEwNTUsIDEyMDYyMSwgMCwgMTkyMCwgMCwgMTAxNzMsIDgyNywgMCwgMCwgCi0gICAgNzgzNzgsIDExOTYwMCwgNTIyMywgMTMwNCwgMCwgODM1MjYsIDUyMjYsIDEyNjAyLCA5NDA0NCwgNTg4MCwgOTMyOSwgCi0gICAgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCA2OTIyOSwgOTY3NCwgNTY5NSwgCi0gICAgNDE3MTEsIDY0NjI3LCAxOTkwOSwgNzEwNzcsIDc0NjA0LCA1NjkxLCAyODcsIDg2NiwgMjMzLCA2ODEzOCwgOTgzNDQzLCAKLSAgICA0MjgxNiwgOTQwMzYsIDY1MTQwLCA2ODAyOCwgODMwOTMsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgNDExNzUsIAotICAgIDgzMDk0LCA5ODM0NDcsIDY4ODI3LCA1Mjk2LCA5ODM0NDYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIDAsIDc0ODU4LCAKLSAgICA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCA5ODM2ODYsIDcwODcwLCAxMjEyMiwgCi0gICAgMTE5NjAyLCA0Mzk3NiwgMTk0OTM3LCAxNzg1LCA2OTkyNSwgNjg2MjIsIDY1MTUzLCA2ODgwOSwgNTEzOCwgOTgzNjM3LCAKLSAgICA3MTkyMiwgMTE4ODY5LCAwLCA0NTQwLCA0MTE4MSwgOTE3OTIwLCA2MjAwLCAwLCA1MTM0LCA2OTk4MCwgMzIyLCA0NjQzLCAKLSAgICA1MTMyLCAxMjExODQsIDYzODksIDEyMDk5OCwgNTE0MywgODMyMDUsIDg3OTAsIDEyMDkxMSwgMTIwMTIxLCAxMjg2OTUsIAotICAgIDcxMTY4LCA4ODY5LCA2OTkxNiwgOTMwNjksIDQyMDYwLCA3MTMyNiwgOTY0OCwgODMxMDksIDcxMTcwLCAxMDI3MCwgCi0gICAgMTAyODYsIDEwMzE4LCAxMDM4MiwgNDM1MjksIDY2NDc3LCAxOTQ4MDAsIDEyODUzNCwgNzQxNzAsIDAsIDMyMzQsIDQzODM1LCAKLSAgICA5MTc4MTgsIDcwMTExLCA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIDEyMDYyNywgODc2NywgNjgyMzEsIDc0NDg5LCA5Njk1LCAKLSAgICA3MjQzOSwgNTIwMSwgNzUwNjEsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMCwgMTk0OTk5LCA2NTI2OCwgNzY2MSwgMCwgCisgICAgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgMTIxMjA5LCAxOTQ3NzAsIDU1OTYsIDU1NDUsIAorICAgIDcyODgsIDI1ODYsIDY0ODg3LCAxMDA4OTYsIDUyMTcsIDcxMzM2LCAxMjg2ODcsIDEwMDg5OCwgMTIxMDM4LCA2NDI5MywgCisgICAgNjgwOTgsIDI2MzUsIDkyNzYwLCA4MzEzNywgOTgzODQ2LCAwLCA5Mjc0MiwgNzgzNSwgNzAwNDAsIDEyMDcwNywgMTk0OTUwLCAKKyAgICA5MjI4NSwgNjQ1NTgsIDEyNzEyMiwgMTIxNDI1LCA2NzA4MywgNjcwODUsIDcwMDk5LCA3MTExOCwgNTc4NCwgOTgzMTAyLCAKKyAgICAxMDA4NTQsIDk4MzgxMiwgNzAwMzMsIDQwMTEsIDE5NDU2NSwgNjgxMDEsIDEwMDg1OSwgNzg2NCwgNDI1NCwgNjUwOTUsIAorICAgIDEyMDAxNywgNTYwMCwgMzkwMywgMTAwODkyLCAxMDQ0NywgNTU5OCwgMTIwNywgMTIwNTIxLCA2NjY4OSwgMzUwMSwgCisgICAgNDI1ODIsIDQzNjAwLCAxMjkwNTQsIDEwMDkxMywgMTEyNCwgNTU5NywgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ4NiwgCisgICAgNzUwNDAsIDkxNzk3MiwgNjc0MDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgMTEyNSwgNDM5OSwgNjg3NzUsIDY2Mjc0LCAKKyAgICA5MjE2NSwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAxMjAzMzksIDU0OTEsIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIAorICAgIDc0MTg3LCA1NDkwLCA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAxMjcxMjEsIDcxMjIsIDk4MzA5MCwgCisgICAgNDM5MCwgNDU0LCA0MTM5NywgOTgzMDU1LCA5ODc1LCA3NTkzLCAxOTQ3OTEsIDkyMjc0LCAxMTg5MTMsIDcyMDcsIAorICAgIDEyNTA2MiwgNjU5MDEsIDIzOTQsIDI1NzUsIDExOTE4NCwgMzc0NiwgMTEwMTYsIDY1NzUyLCA5Mjc1NywgMCwgNDM0MjMsIAorICAgIDEyODY4MywgMTE5ODksIDExODg4OSwgMTI3NzkxLCAxMjc5OTUsIDc4Mjk2LCA2ODIyNCwgODI0OSwgMjIzMiwgMTExMDksIAorICAgIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgNTEzLCAxMDA3MTQsIDY1ODYsIDg2NTYsIDEyOTMwMSwgNjk3OTIsIDY1MDA4LCAKKyAgICAxOTQ1OTcsIDcxMTExLCA3ODM4MywgMTI3MjUyLCAxMjc0NzQsIDY2NzU1LCA2ODQ3NSwgOTM5NzMsIDcyODU5LCA2Mzc5OSwgCisgICAgNzg2MzcsIDEyNjQ3LCA5MTc2MDYsIDEyODA0MywgNjk4OTMsIDEwMzYsIDY4MDkwLCA5MjQxOSwgMTcyMywgNjgyMTUsIAorICAgIDc0MjE3LCAwLCA0MTU3OSwgMjQ0NCwgMTIwNzIyLCAxMDcwNSwgNzM4NzYsIDE5NTA1NCwgNzQ0ODYsIDk4MzQ2OSwgNzQwLCAKKyAgICAxMTkyMjIsIDEyMDMwNSwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNDM5MzYsIDQzOTM4LCA3ODEzOSwgCisgICAgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNDM5NjcsIDExOTA3LCA0MzkyOCwgNTY5MCwgCisgICAgOTIyNTUsIDUxMTYsIDEyODAxMywgNDMxODEsIDEzMDk1LCA3NzkyNSwgNDM5MjYsIDY0NDk4LCAwLCA5NTA2LCA2OTc4LCAKKyAgICA3MDE3NiwgNzQ5MzEsIDAsIDExMzc0MywgNzgzNzksIDQzOTM0LCAxMjc4NDUsIDExMjIsIDMxNywgMTk0ODcwLCA3MTA1NSwgCisgICAgMTIwNjIxLCAwLCAxOTIwLCAxMjkzMzksIDEwMTczLCA4MjcsIDEyNTIzNiwgMCwgNzgzNzgsIDExOTYwMCwgNTIyMywgCisgICAgMTMwNCwgMCwgODM1MjYsIDUyMjYsIDEyNjAyLCA5NDA0NCwgNTg4MCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIAorICAgIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCA2OTIyOSwgOTY3NCwgNTY5NSwgNDE3MTEsIDY0NjI3LCAxOTkwOSwgNzEwNzcsIAorICAgIDc0NjA0LCA1NjkxLCAyODcsIDg2NiwgMjMzLCA2ODEzOCwgOTgzNDQzLCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA2ODAyOCwgCisgICAgODMwOTMsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgNDExNzUsIDgzMDk0LCA5ODM0NDcsIDY4ODI3LCA1Mjk2LCAKKyAgICA5ODM0NDYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIDAsIDcyODQyLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCAKKyAgICA2NTEyLCAwLCA3ODU2LCA4NjkwLCA5ODM2ODYsIDcwODcwLCAxMjEyMiwgMTE5NjAyLCA0Mzk3NiwgMTI1MTk0LCAxNzg1LCAKKyAgICA2OTkyNSwgNjg2MjIsIDY1MTUzLCA2ODgwOSwgNTEzOCwgMTI5NDIwLCA3MTkyMiwgMTE4ODY5LCAxMDA4ODMsIDQ1NDAsIAorICAgIDQxMTgxLCA5MTc5MjAsIDYyMDAsIDgyOTQ5LCA1MTM0LCA2OTk4MCwgMzIyLCA0NjQzLCA1MTMyLCAxMjExODQsIDYzODksIAorICAgIDEyMDk5OCwgNTE0MywgODMyMDUsIDg3OTAsIDEyMDkxMSwgMTIwMTIxLCAxMjg2OTUsIDcxMTY4LCA4ODY5LCA2OTkxNiwgCisgICAgOTMwNjksIDQyMDYwLCA3MTMyNiwgOTY0OCwgODMxMDksIDcxMTcwLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgCisgICAgNDM1MjksIDY2NDc3LCAxOTQ4MDAsIDEyNTIzMSwgNzQxNzAsIDAsIDMyMzQsIDQzODM1LCAxMDA4ODYsIDcwMTExLCAKKyAgICA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIDEyMDYyNywgODc2NywgNjgyMzEsIDc0NDg5LCA5Njk1LCA3MjQzOSwgNTIwMSwgCisgICAgNzUwNjEsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMTI3ODY5LCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAxMjEzMDgsIAogICAgIDEyMDkwOSwgMTEwMjcsIDEyODU5NiwgMTAwNTksIDEwNTExLCA0MjA3NSwgOTc2NywgNzg5LCAxNzQ5LCA3ODg5MCwgCi0gICAgNjcxMTUsIDk4MzY3MCwgMzIwLCAwLCA4NjQ3LCA4MzA1NCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCA5OTI1LCAKLSAgICAxMjczNTYsIDExODg5NCwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTI3MzQ2LCA4NDg1LCA0NjcxLCA1NDE4LCAKKyAgICA2Njc2NiwgOTgzNjcwLCAzMjAsIDAsIDg2NDcsIDgzMDU0LCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIAorICAgIDEyNzM1NiwgMTE4ODk0LCA2NjQ3OCwgNDk2MCwgNTU0OSwgMTI3MzU5LCAxMDA5OTYsIDg0ODUsIDQ2NzEsIDU0MTgsIAogICAgIDEyNzM1MCwgMzM1MSwgMTIwODkyLCAxMjczNTEsIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAKICAgICAxMjczNDQsIDk1NTQsIDY4MDUxLCA5NDA0OCwgNjY4OTYsIDY2NTMsIDgzMDQ0LCA4MzEwMiwgNjQ1MTAsIDYyMTMsIAotICAgIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCA5MTc4NzMsIDEyMDc1OSwgNzM3NDEsIDEyNjAzLCA3MTMxLCAxMTEwOCwgNDU2NiwgCi0gICAgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAxMjQ5MzgsIDExOTI1OSwgNDI1NzYsIDAsIDUyMDAsIDkyOTQ2LCAKLSAgICAxMjE0MzUsIDk4Mzg5NSwgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNjYyODIsIDM5NSwgNTQ4MiwgNTE5OCwgNDM0OSwgMTAzOTAsIAotICAgIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDEyODM4MywgNDMzMDcsIDcwMjk3LCAxMTg5NzMsIAotICAgIDcwNDY3LCAxMjEzNCwgMTIxMTY3LCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgOTgzNjI0LCAxMjAxNCwgMTAzNzcsIDgwOTMsIAotICAgIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDEyNTA3NSwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgMTI3MzA5LCAKLSAgICA1NzM4LCAxMjAwODksIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgODMzNzgsIDY4MTEyLCA3ODcyLCA4NTgxLCAKLSAgICAwLCAxMjYwLCAzMTQ5LCA1MzU5LCAxMjAxMzQsIDc0OTU1LCA3OTE0LCA1MzU3LCA3MTE5MCwgNzQzMzksIDI2MjQsIDUzNjQsIAotICAgIDk4MzYwOCwgMTE0MzEsIDEyMDAzMCwgOTEwMSwgMTEwNTgsIDc4Mjg4LCA2NzEwNywgNzgyOTMsIDQyMjcxLCA3ODI4OSwgCi0gICAgNDI5MTcsIDY3MTExLCAxMjkxNzksIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4MjkxLCA3ODM4NCwgMTE4MzIsIAotICAgIDc4MzgyLCA3ODM4MSwgNzgzODAsIDY5ODYxLCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgCi0gICAgNzQ1ODEsIDc4MDg3LCAwLCA3MTIwNSwgNDE4ODksIDkyNDUzLCAxMjkxNDQsIDExNjEsIDQxODk1LCA3NDEwMywgOTcwMSwgCi0gICAgODYyMiwgMTI1MDI1LCAwLCA2ODc3MiwgMTIwNTg4LCA1MDEyLCA3MTQ1MywgNDEzNjIsIDY5ODYyLCA2ODUwNywgMTE5MjEsIAotICAgIDAsIDExNzY5LCA2ODc4MiwgNjg2MDksIDQxMzY0LCAxMjA5NDcsIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDkxNzkwMywgCi0gICAgNDEzNjYsIDAsIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIDgxOTksIDc4Mzg5LCAxMTk2MTgsIAotICAgIDY3NywgMTE5OTE2LCA5MTc4NzYsIDcxNDgyLCAxMjcxNjksIDY4NzQ3LCAwLCA2ODczOCwgMzM0OSwgNzQxMjUsIDcwMjIsIAotICAgIDg5MjcsIDQ3MzksIDkyNTk5LCA1ODAyLCAxOTQ4NzQsIDg2MTUsIDAsIDEyODA1OCwgNDkxLCA3NDQwMSwgMTAxOTAsIAotICAgIDY4NzU1LCA2NTgzNywgNjg4MDAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIAotICAgIDEwODUyLCAwLCA0MjY0OCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgCi0gICAgMTI4NjEwLCA2ODc1MywgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCAKLSAgICA3NDg0OSwgNzQ5NDcsIDcyNDI0LCA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIAotICAgIDg5MDUsIDQxMzYsIDQ4NzEsIDc4Mjg3LCAxMjA2NjMsIDk4MzMsIDAsIDExMzczMCwgMTEyOCwgNjU5MjAsIDkxNzg3OSwgCi0gICAgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgCi0gICAgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgNTE2NSwgNTEyNiwgNDEzODUsIDk4MzkzOCwgNDEzODksIAotICAgIDEyNzk2MywgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgMzUwNywgOTQwNiwgNzYyOSwgCi0gICAgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCA3MDgxMSwgMTA2MjcsIDQxMTMwLCAKLSAgICA3MTA3OSwgMzk5NiwgMCwgNzE0NDIsIDEyODkxMywgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCA0MzMyLCA2NDgyNSwgCi0gICAgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCAxMjcyMDYsIDEyMDg1LCA2NjkwMiwgNTc0LCAKLSAgICAxMjY3MDUsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY1OTMyLCA0MTMyMiwgNDIyMTEsIDU0NDIsIDQxOTAsIAotICAgIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA2ODgxNywgNzc4MzgsIDc3MDgsIDc0NzU5LCAyMjI4LCAKLSAgICA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAxMjAzNzgsIDc3ODQ0LCA3MzgwMCwgNDIxODEsIDc3ODQzLCA3NzgzOSwgCi0gICAgMjA2MCwgMTIxMTkzLCA3MTExLCAxMTc4OCwgNjUzNzYsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDk4MzYyNSwgMjA1LCAKLSAgICA4MzA0MCwgMTAzNTEsIDY3MTUxLCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCA0MTM1NSwgNTUwNSwgCi0gICAgNzQ5NjYsIDU1MDMsIDgwMjEsIDEyODAzNSwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgCi0gICAgOTI2MzYsIDAsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCAKLSAgICA2OTc3OCwgMTExMzMsIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMTI5MDUyLCAyNjc1LCA1NTk1LCA3ODQxMSwgCi0gICAgNDM3NjIsIDQzNjcsIDEyNzkxMiwgOTE3NzgyLCA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgCi0gICAgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDc1MDY5LCA5ODMxMDgsIDk3MzEsIDY5NzMxLCA2NDYzMywgNzc4NTcsIDc3ODU0LCAKLSAgICA3MTIxNywgNzc4NTIsIDcxMjI3LCA3Nzg1MCwgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgNzEzNywgMCwgNjY5MDksIDEyODg3LCAKLSAgICAxMDU1MSwgMTk0NTY0LCA3Nzg2NiwgNzc4NjcsIDc3ODY0LCA3Nzg2NSwgOTkyOSwgNTE5OSwgOTkzNiwgMTEyMCwgNDIzODcsIAotICAgIDAsIDE0NDQsIDk0ODYsIDc1NTQsIDY1ODM5LCA1NTI1MiwgNzM5NzIsIDE0NDIsIDEyOTA4MCwgNTg5NCwgNzAwNjksIAotICAgIDEyODY3MiwgNDExNzEsIDkyNTExLCA3MDM1OCwgMTMyMywgMTMxNjIsIDEyMDU5OSwgMzMzNCwgMTI4NzA0LCA5MjcwOSwgCi0gICAgNzc4ODEsIDY2MDIyLCAwLCA2OTc3MCwgMTY1MSwgMTIwMzY0LCA4ODYxLCAwLCAwLCAxMTQyLCA5ODMxMTIsIDgyNzEsIDAsIAotICAgIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgNzg0MDYsIDQwMDIsIDQzNjI2LCAxMDQ0MiwgMTA2NzYsIDMzNDQsIDEyODkxMCwgCi0gICAgMTk0Nzg3LCAxMjkyMCwgMTk0NTYwLCA3MDQ5NywgMTk0Njg3LCA2NjY0MiwgMTI3NywgNjY4NzYsIDc4NzEsIDY3MTA2LCAKLSAgICA3MTQ4NywgNzg4NTMsIDEyOTA2OCwgNzg4NTQsIDEyMDM2MCwgOTgzNDkyLCAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIAotICAgIDQzODU2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgOTgzNjI3LCA3ODg1NiwgNzg0NDgsIDc3ODc5LCA0OTczLCA4Nzg0LCAKLSAgICA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNzc4NzEsIDQyNDQwLCA3MTIyNSwgNDMxMTgsIDExOTg3NSwgNDIzNjQsIAotICAgIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgCi0gICAgMzM3MiwgMCwgNjI0NywgNDMxMTcsIDcwMzY0LCA3MTIxLCA3NDE2NiwgMTI0OTczLCAxMjAzNTUsIDkyNTM3LCAxOTQ4NDYsIAotICAgIDExOTg3NywgMTk1MDM0LCA3MDM1NywgMTE5OTIyLCAwLCA2NzExOSwgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAKLSAgICAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgOTgzOTY1LCAKLSAgICA5ODM3NTgsIDExNjAzLCA5ODM5NTQsIDc1MDc0LCA2NTg5LCAxMjg1NjQsIDgyOTc1LCAxMjA5OTMsIDY3ODEyLCA5ODM3MDAsIAotICAgIDAsIDEyOTA4NywgNDI1NzIsIDEyODI2NCwgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTE4ODgyLCAxMTY1NCwgCi0gICAgMTIxMjg3LCA3NTUwLCAxMDY4NiwgNTkwMywgNjcwOTgsIDc4MDA5LCA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgCi0gICAgMzM2NiwgMTAzOTksIDkxNzkzOCwgNTU0MiwgMTEwMTMsIDEyNzkyNywgNzEwNjIsIDE5NDY3NywgNzE0NjEsIDY3MDkwLCAKLSAgICA2OTI1LCAwLCAwLCA5Mjg5MiwgNzE4NTYsIDExNTY4LCA5ODM2NzMsIDQzMzY3LCA2NDU3OSwgOTE3OTMwLCA3ODUyLCAKLSAgICAxMTEzOCwgMCwgNjc1NCwgNjMxMiwgNzc5NTYsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIDEyMjk2LCAKLSAgICA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMTI5MTQ2LCA5ODM2MDUsIAotICAgIDk1MzIsIDY2MzU1LCAxMTkyNjQsIDY4MDczLCAxMTM2OTUsIDY0MzQzLCAxOTUwMzIsIDkyNzQ0LCAxOTUwMzEsIDAsIAotICAgIDE5NDg0NywgMTk1MDU3LCAxMTQ0NSwgNjgyOTQsIDIxMTIsIDEyODc0MSwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCAKLSAgICA5NTA3LCAxMDIxMCwgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAKLSAgICAwLCAxMjAyNzYsIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIAotICAgIDc4OTQsIDQzOTEsIDY4MTM5LCAxMjEwNjQsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCAKLSAgICA5MjQzMywgMzU1OCwgMTI5MTkwLCAzOTEzLCA3MDQyOSwgMTIxMzc2LCA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgCi0gICAgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIDExNzkxLCA5ODMxMjIsIDkxNzU4NywgODIyMSwgNzgzMDcsIDQxODY0LCAwLCAwLCAKLSAgICA2NzA3NSwgNzEyMTksIDE2NywgOTgzOTA2LCA3ODMwMSwgOTgzNjUzLCA3NDIxMSwgNDE4OTcsIDY3MDcyLCAwLCA5MTc1ODMsIAotICAgIDEyNzE0MCwgNjcwNzYsIDI0OTMsIDAsIDExMzc3OCwgMTIxMjQ1LCA3ODEwNywgNjQzNTQsIDAsIDg3NzcsIDEyNzk0MCwgCi0gICAgNDA2LCA4ODg0LCAyMzg1LCA3ODIxMCwgOTI0NTAsIDkxNzU5MCwgOTE3NTczLCA0MzAzMCwgNDIwMjcsIDEyMTE0LCAwLCAKLSAgICAxMjg1OTcsIDY0OTM2LCAxOTQ2OTUsIDExOTI2NywgMTIwNjI5LCAxMDU2MSwgMTI4OTQwLCA4MzY1LCAxMjA1MzksIAotICAgIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAxMjg4OTYsIDgzMTc2LCA3ODM0LCA3NDE1OSwgMCwgCi0gICAgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTc3LCAxNjM5LCAxMjA4NDIsIDAsIDcwODAzLCA2MzI3LCA2NzI0LCAKLSAgICAxMjQ5NTMsIDY2MzU0LCA5MjU2NiwgNjk5MTAsIDQ4MTcsIDExMDg3LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCA5NjAwLCAKLSAgICAxMTAyMiwgMCwgMCwgMCwgOTgzNTk5LCAwLCA3Mzk1NCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIAotICAgIDEyODc4MSwgMTIzNDMsIDY1NywgNjcxMTAsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgCi0gICAgOTI4OTEsIDE5NDk0NSwgODMwNTYsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCA5MzA0NCwgCi0gICAgMTI5NDExLCA2NTU1MCwgMjYwLCA0ODE2LCA2NzY1OCwgMTA2ODcsIDAsIDQ4MjEsIDQ0NjYsIDAsIDgzMTgyLCA0ODE4LCAKLSAgICAxMjkwNTgsIDQxNDAzLCAxMTk5NzcsIDcyNDIyLCAxMjg0NTgsIDQxNDA2LCA0MzI3MywgNzQxNjAsIDY5ODA1LCA3MzkzOSwgCi0gICAgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIAotICAgIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgNzAwNzAsIDMzNzUsIDEyODQ0OCwgNTkwMCwgCi0gICAgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCA5ODM0ODEsIDAsIDY3MDc4LCAxMjg0NTEsIDIyODIsIDEyMTQyMiwgMTI3ODEwLCAKLSAgICAxMTQwMSwgNjcwNzksIDAsIDY4NDU5LCAxMjUwMjgsIDk4MzE0MSwgMCwgNzAxNTAsIDY1NDM4LCAwLCA3MjgwLCAxMjc4ODcsIAotICAgIDY4MDU1LCA3MDE0NiwgNDg2OCwgODI5NywgMTE5OTY2LCA3MDE0OCwgMTI1MDA4LCAxMjg3NDQsIDQzMTYxLCA3MDE0NCwgCi0gICAgOTIzNjAsIDAsIDUxODIsIDAsIDEyMDU0MiwgMCwgMCwgNDIyNiwgNzAxODYsIDEyMTM1LCA1NzMyLCA0NDY0LCAxOTUwODMsIAotICAgIDcxMzMwLCA5NzcsIDQ0NTgsIDQzODI3LCA5Mjk3MSwgNjQ3NzAsIDc0ODM4LCAwLCAzNDQsIDAsIDEyMTIyOCwgMTM5NSwgCi0gICAgNjQyNzksIDAsIDkyMjQwLCAxMjExNzksIDc4NiwgMTI2OTk1LCA0MzE3NCwgNjQzNDAsIDgzMDc3LCAxOTQ3NjcsIDczOTcxLCAKLSAgICA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCA2NTAyNSwgMCwgMCwgMCwgOTM5NTYsIDk4MzkxNywgNjg0NDQsIDAsIAotICAgIDkyNDM3LCAxMjQ5MjgsIDkyNTQ5LCAxMDIwNCwgOTI2NTYsIDgzMDc4LCAxMTkyNzEsIDEyODQzMSwgMTM5OSwgMTIxNDYzLCAKLSAgICA2NTIxNywgMTIxNDY1LCA4ODUyLCAxMjA4MDgsIDI0MSwgMTIxNDY5LCA0OTA3LCAxMjg0MjcsIDk4MzYzOSwgNzkzMiwgCi0gICAgOTcyNywgMTI4NDYzLCA3NDI1NSwgODc0OCwgMCwgMTI4NDI4LCA5ODM2MzEsIDAsIDQyNzgwLCA1NTI2MywgMTEzNjc3LCAKLSAgICA5ODM1NjAsIDQyMTcsIDkzMDM0LCA4NjUwLCAxMjc5OTEsIDEyMDY3MywgMTI4MjE1LCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgCi0gICAgMzk2NSwgMTE5MTE5LCA2NzE5LCAxMjgwMDcsIDEzMzAwLCA3ODQzOSwgOTM5NzEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAKLSAgICA2NjI4OSwgMTIwOTAyLCA3MzgxNSwgNDQyMCwgOTgzMTIwLCA2NDEwLCA3NzYwLCAwLCA3MDQ2OCwgMTI4NzUyLCAxMjA2ODQsIAotICAgIDEyMTI0NiwgNzI5NCwgMTI4MjE4LCA0Mzg2OSwgMTIwODU5LCA5MDY2LCAxMjEzMjEsIDExOTkzLCA0MzE4OCwgMjYyNiwgCi0gICAgNzc2MiwgOTgzODY2LCAxMTg4MzEsIDkyODk5LCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCA3MDI5MCwgNzg1MTYsIAotICAgIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTIwNTM3LCAxNTQyLCA5MjMwMywgCi0gICAgMTI4ODE5LCAwLCAxMjczMjcsIDEyMTE5OSwgNzQzMTEsIDc4NDk3LCAwLCAxMDE4MSwgMTI0OTM3LCA0MzYyNCwgMTI5MDYwLCAKLSAgICA3Nzc5LCA5MTc1NTEsIDEwMTk1LCA5NDc5LCA2MDI5LCAxMjgzNzQsIDkyMjY4LCAyMjI0LCAwLCA2NTU3NywgODk5MywgCi0gICAgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDEyNzAzMCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCA3MDEwNiwgCi0gICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDcwMzg2LCAxMjc5MDMsIDk4MzMzOSwgOTgzMzM4LCAyNzM1LCAKLSAgICA0MjgzMSwgNzc5MzUsIDcwNDM5LCA3NDg2NiwgODg4MSwgMTE5MDQ3LCAwLCA3MDQzMywgNzM5NDYsIDAsIDE5NDcwMywgMCwgCisgICAgMTI4ODUsIDEyNzM3NSwgMTE5MDQ1LCA2NDcyMCwgOTE3ODczLCAxMjA3NTksIDcwNzM3LCAxMjYwMywgNzEzMSwgMTExMDgsIAorICAgIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMTI0OTM4LCAxMTkyNTksIDQyNTc2LCAxMjUyMzcsIAorICAgIDUyMDAsIDkyOTQ2LCAxMjE0MzUsIDk4MzY4MywgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNjYyODIsIDM5NSwgNTQ4MiwgNTE5OCwgCisgICAgNDM0OSwgMTAzOTAsIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDEyODM4MywgNDMzMDcsIDcwMjk3LCAKKyAgICAxMTg5NzMsIDcwNDY3LCAxMjEzNCwgMTIxMTY3LCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgOTgzNjI0LCAxMjAxNCwgMTAzNzcsIAorICAgIDgwOTMsIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDEyNTA3NSwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgCisgICAgMTIwOTMyLCA1NzM4LCAxMjAwODksIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgODMzNzgsIDY4MTEyLCA3ODcyLCAKKyAgICA4NTgxLCA5ODM3NzEsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgNzQ5NTUsIDc5MTQsIDUzNTcsIDcxMTkwLCA3NDMzOSwgCisgICAgMjYyNCwgNTM2NCwgMTI4ODgxLCAxMTQzMSwgMTAwNjU5LCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgCisgICAgNDIyNzEsIDc4Mjg5LCA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgyOTEsIAorICAgIDc4Mzg0LCAxMTgzMiwgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIAorICAgIDMyMzIsIDczODI0LCA3NDU4MSwgNzgwODcsIDk4MzgxNywgNzEyMDUsIDQxODg5LCA5MjQ1MywgMTI5MTQ0LCAxMTYxLCAKKyAgICA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDEyNTAyNSwgMCwgNjg3NzIsIDEyMDU4OCwgNTAxMiwgNzE0NTMsIDQxMzYyLCAKKyAgICA2OTg2MiwgNjg1MDcsIDExOTIxLCAwLCAxMTc2OSwgNjg3ODIsIDY4NjA5LCA0MTM2NCwgMTIwOTQ3LCA3NDIyOCwgNDEzNTIsIAorICAgIDQxMzYxLCA5MTc5MDMsIDQxMzY2LCAxOTQ4MDksIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAorICAgIDgxOTksIDc4Mzg5LCAxMTk2MTgsIDY3NywgMTE5OTE2LCA5MTc4NzYsIDcxNDgyLCAxMjcxNjksIDY4NzQ3LCAwLCA2ODczOCwgCisgICAgMzM0OSwgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDkyNTk5LCA1ODAyLCAxMjAwNDcsIDg2MTUsIDAsIDEyODA1OCwgNDkxLCAKKyAgICA3NDQwMSwgMTAxOTAsIDY4NzU1LCA2NTgzNywgNjg4MDAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgCisgICAgNzU4NiwgNDIzMDUsIDEwODUyLCA5MTc1ODAsIDQyNjQ4LCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAKKyAgICAxMDQ2LCA3MTI0LCAxMjg2MTAsIDY4NzUzLCA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgCisgICAgNDE4NzgsIDc0ODQ5LCA3Mjc4OSwgNzI0MjQsIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIAorICAgIDExOTA0OSwgNTE3NiwgODkwNSwgMjI2NywgNDg3MSwgNzgyODcsIDEyMDY2MywgOTgzMywgMTk0ODUwLCAxMTM3MzAsIAorICAgIDExMjgsIDY1OTIwLCA5MTc4NzksIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIDM2NjIsIDk0MTMsIAorICAgIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIDUxNjUsIDUxMjYsIAorICAgIDQxMzg1LCAxOTQ4NDQsIDQxMzg5LCAxMjc5NjMsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIDk0MDQsIAorICAgIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgNzA4MTEsIAorICAgIDEwNjI3LCA0MTEzMCwgNzEwNzksIDM5OTYsIDAsIDcxNDQyLCAxMDA4NjQsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCisgICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgMTI3MjA2LCAxMjA4NSwgCisgICAgNjY5MDIsIDU3NCwgMTI2NzA1LCA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCA2NTkzMiwgNDEzMjIsIDQyMjExLCAKKyAgICA1NDQyLCA0MTkwLCA3NzgzNCwgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgNjg4MTcsIDc3ODM4LCA3NzA4LCAKKyAgICA3NDc1OSwgMjIyOCwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMTIwMzc4LCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCAKKyAgICA3Nzg0MywgNzc4MzksIDIwNjAsIDEyMTE5MywgNzExMSwgMTE3ODgsIDY1Mzc2LCA2ODEyOSwgMTA0MTUsIDcyNzQxLCAKKyAgICAxOTUwMjUsIDIwNSwgODMwNDAsIDEwMzUxLCA2NzE1MSwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgCisgICAgNDEzNTUsIDU1MDUsIDcwNzM2LCA1NTAzLCA4MDIxLCAxMjgwMzUsIDcxMjUsIDk4MTksIDQxMzU3LCA4MDExLCA0Mjg4NSwgCisgICAgNTUwNywgMTIwNDQsIDkyMzY0LCAxMDA3NDIsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIAorICAgIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgMTExMzMsIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgNzQ1MTYsIAorICAgIDI2NzUsIDU1OTUsIDc4NDExLCA0Mzc2MiwgNDM2NywgODM1MTgsIDkxNzc4MiwgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgCisgICAgNzQxNTAsIDcyOTEsIDU1OTAsIDQzNzYxLCAxMzA2NywgMTE4OTA5LCA3NTA2OSwgOTgzMTA4LCA5NzMxLCA2OTczMSwgCisgICAgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzEyMTcsIDc3ODUyLCA3MTIyNywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIAorICAgIDcxMzcsIDAsIDY2OTA5LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIAorICAgIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDcyODMyLCAxNDQyLCAKKyAgICAxMjkwODAsIDU4OTQsIDcwMDY5LCAxMjg2NzIsIDQxMTcxLCA5MjUxMSwgNzAzNTgsIDEzMjMsIDEzMTYyLCAxMjA1OTksIAorICAgIDMzMzQsIDEyODcwNCwgOTI3MDksIDc3ODgxLCA2NjAyMiwgNzA3MDUsIDY5NzcwLCAxNjUxLCAxMjAzNjQsIDg4NjEsIDAsIAorICAgIDkxNzU4OCwgMTE0MiwgOTgzMTEyLCA4MjcxLCAwLCA5ODMwNTgsIDEyNjY0NSwgMTI5MDMsIDc4NDA2LCA0MDAyLCA0MzYyNiwgCisgICAgMTA0NDIsIDEwNjc2LCAzMzQ0LCAxMjg5MTAsIDE5NDc4NywgMTI5MjAsIDE5NDU2MCwgNzA0OTcsIDE5NDY4NywgNjY2NDIsIAorICAgIDEyNzcsIDY2ODc2LCA3ODcxLCA2NzEwNiwgNzE0ODcsIDc4ODUzLCAxMjkwNjgsIDc4ODU0LCAxMjAzNjAsIDk4MzQ5MiwgCisgICAgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCA0Mzg1NiwgNzg4NTgsIDEyMDM1OSwgMTEwMTIsIDk4MzYyNywgNzg4NTYsIDc4NDQ4LCAKKyAgICA3Nzg3OSwgNDk3MywgODc4NCwgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDY2NzQzLCA0MjQ0MCwgNzEyMjUsIAorICAgIDQzMTE4LCAxMTk4NzUsIDQyMzY0LCA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgCisgICAgOTI0MywgMjQ2NCwgNzQyNjMsIDYxMDgsIDMzNzIsIDEyMjg5MCwgNjI0NywgNDMxMTcsIDcwMzY0LCA3MTIxLCA3NDE2NiwgCisgICAgMTI0OTczLCAxMjAzNTUsIDkyNTM3LCAxOTQ4NDYsIDExOTg3NywgMTk1MDM0LCA3MDM1NywgMTE5OTIyLCAwLCA2NzExOSwgCisgICAgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgCisgICAgNDMzODAsIDk4MzYyNSwgOTgzMDkxLCAxMjkzNDIsIDEyODQ1MCwgMTE2MDMsIDEyOTM0NywgNzUwNzQsIDY1ODksIAorICAgIDEyNzM2MCwgODI5NzUsIDEyMDk5MywgNjc4MTIsIDEyNzE5MCwgMTk0NjgwLCAxMjkwODcsIDQyNTcyLCAxMjgyNjQsIAorICAgIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDExODg4MiwgMTE2NTQsIDEyMTI4NywgNzU1MCwgMTA2ODYsIDU5MDMsIAorICAgIDY3MDk4LCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCA5MTc5MzgsIDU1NDIsIAorICAgIDExMDEzLCAxMjc5MjcsIDcxMDYyLCAxMjUyMjQsIDcxNDYxLCA2NzA5MCwgNjkyNSwgOTgzMjc0LCAwLCA5Mjg5MiwgCisgICAgNzE4NTYsIDExNTY4LCA5ODMxMzEsIDQzMzY3LCA2NDU3OSwgOTE3OTMwLCA3ODUyLCAxMTEzOCwgMCwgNjc1NCwgNjMxMiwgCisgICAgNzc5NTYsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAKKyAgICAxMTA1MCwgMTA5ODQsIDkyMjA4LCA5ODMyMTYsIDkxNzgyMiwgOTIxODIsIDEyOTE0NiwgMTk0NjM2LCA5NTMyLCA2NjM1NSwgCisgICAgMTE5MjY0LCA2ODA3MywgMTEzNjk1LCA2NDM0MywgMTk1MDMyLCA5Mjc0NCwgMTI3MjQzLCAwLCAxOTQ4NDcsIDc4ODM4LCAKKyAgICAxMTQ0NSwgNjgyOTQsIDIxMTIsIDEyODc0MSwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgCisgICAgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzI4NTAsIDk2MjQsIDExNTQ1LCAwLCAxMjAyNzYsIAorICAgIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIAorICAgIDQzOTEsIDY4MTM5LCAxMjEwNjQsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCA5MjQzMywgCisgICAgMzU1OCwgMTI5MTkwLCAzOTEzLCA3MDQyOSwgMTIxMzc2LCA3ODIzNSwgNzA0NCwgMTI2NSwgMTk0NjYwLCA2MzA5LCA3MDQ1LCAKKyAgICA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDk4MzEyMiwgMTk0NTg0LCAzODgxLCA3ODMwNywgNDE4NjQsIDEyNzM5NSwgCisgICAgMTI1MjA4LCA2NzA3NSwgNzEyMTksIDE2NywgMTIxMTAxLCA3Mjc1NSwgOTgzNjUzLCA3NDIxMSwgNDE4OTcsIDY3MDcyLCAwLCAKKyAgICA5MTc1ODMsIDY2NzQ1LCA2NzA3NiwgMjQ5MywgMCwgMTEzNzc4LCAxMjA1MzAsIDc4MTA3LCA2NDM1NCwgOTE3NTkzLCAKKyAgICA4Nzc3LCAxMjc5NDAsIDQwNiwgODg4NCwgMjM4NSwgNzgyMTAsIDkyNDUwLCA5MTc1OTAsIDkxNzU3MywgNDMwMzAsIAorICAgIDQyMDI3LCAxMjExNCwgMCwgMTI4NTk3LCA2NDkzNiwgMTAwNzYzLCAxMTkyNjcsIDM0MjEsIDEwNTYxLCAxMjg5NDAsIAorICAgIDgzNjUsIDc0Mjk0LCA5ODM3NzQsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMTI4ODk2LCA4MzE3NiwgNzgzNCwgCisgICAgNzQxNTksIDAsIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU3NywgMTYzOSwgMTIwODQyLCA5ODM1ODYsIDcwODAzLCAKKyAgICA2MzI3LCA2NzI0LCA3MTI2OSwgNjYzNTQsIDkyNTY2LCA2OTkxMCwgNDgxNywgMTEwODcsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIAorICAgIDk2MDAsIDExMDIyLCAxMjg0MjcsIDEyOTM0NCwgMTI4MzU0LCA5ODM1OTksIDk4MzIwOSwgNjY3NzEsIDc1NDgsIDY0Nzk0LCAKKyAgICA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAxMjg3ODEsIDEyMzQzLCA2NTcsIDY3MTEwLCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgCisgICAgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDkyODkxLCAxMjczNzIsIDgzMDU2LCA0NDU2LCA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIAorICAgIDEyNzUyMCwgMCwgOTMwNDQsIDEyODQzMCwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIDEwNjg3LCAxMjkzMTksIDQ4MjEsIAorICAgIDQ0NjYsIDAsIDgzMTgyLCA0ODE4LCAxMjUyNTcsIDQxNDAzLCAxMTk5NzcsIDcyNDIyLCAxMjg0NTgsIDQxNDA2LCA0MzI3MywgCisgICAgNzQxNjAsIDY5ODA1LCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgMTE5OTgwLCA0NDUxLCAKKyAgICAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgNzAwNzAsIDMzNzUsIAorICAgIDEyODQ0OCwgNTkwMCwgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCAxMjgzMTMsIDAsIDY3MDc4LCAxMjg0NTEsIDIyODIsIAorICAgIDEyMTQyMiwgMTI3ODEwLCAxMTQwMSwgNjcwNzksIDAsIDY4NDU5LCAxMjUwMjgsIDk4MzE0MSwgMCwgNzAxNTAsIDY1NDM4LCAKKyAgICA5ODM3NjAsIDcyODAsIDEyNzg4NywgNjgwNTUsIDcwMTQ2LCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDcwMTQ4LCAxMjUwMDgsIAorICAgIDEyODc0NCwgNDMxNjEsIDY2NzM5LCA5MjM2MCwgMTk1MDcwLCA1MTgyLCAxOTQ2OTIsIDEyMDU0MiwgNzI3NjQsIDEyODU4OCwgCisgICAgNDIyNiwgNzAxODYsIDEyMTM1LCA1NzMyLCA0NDY0LCAxOTUwODMsIDcxMzMwLCA5NzcsIDQ0NTgsIDQzODI3LCA5Mjk3MSwgCisgICAgNjQ3NzAsIDc0ODM4LCAwLCAzNDQsIDEyMTQ2NiwgMTIxMjI4LCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDEyMTE3OSwgNzg2LCAKKyAgICAxMjY5OTUsIDQzMTc0LCA2NDM0MCwgODMwNzcsIDE5NDc2NywgNzM5NzEsIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIAorICAgIDY1MDI1LCAwLCA5ODM0NjgsIDEyODMwMywgNzQxNTEsIDk4MzkxNywgNjg0NDQsIDAsIDkyNDM3LCAxMjQ5MjgsIDkyNTQ5LCAKKyAgICAxMDIwNCwgOTI2NTYsIDgzMDc4LCAxMTkyNzEsIDEyODQzMSwgMTM5OSwgMTIxNDYzLCA2NTIxNywgMTIxNDY1LCA4ODUyLCAKKyAgICAxMjA4MDgsIDI0MSwgMTIxNDY5LCA0OTA3LCAxMjgxNjEsIDkxNzkyNywgNzkzMiwgOTcyNywgMTI4NDYzLCA3NDI1NSwgCisgICAgODc0OCwgMCwgMTI4NDI4LCAxMjg2NDYsIDAsIDQyNzgwLCA1NTI2MywgMTEzNjc3LCAxMTk4NTYsIDQyMTcsIDkzMDM0LCAKKyAgICA4NjUwLCAxMjc5OTEsIDEyMDY3MywgNzI4NzgsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAzOTY1LCAxMTkxMTksIDY3MTksIAorICAgIDEyODAwNywgMTMzMDAsIDc4NDM5LCA3MjgzNiwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIDY2Mjg5LCAxMjA5MDIsIDczODE1LCAKKyAgICA0NDIwLCAxMjg1MzMsIDY0MTAsIDc3NjAsIDEwMDk5OSwgNzA0NjgsIDEyODc1MiwgMTIwNjg0LCAxMDA1MjgsIDcyOTQsIAorICAgIDEyODIxOCwgNDM4NjksIDY4MjA0LCA5MDY2LCAxMjEzMjEsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgOTgzODY2LCAKKyAgICAxMTg4MzEsIDkyODk5LCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCA3MDI5MCwgNzg1MTYsIDY5MTksIDg2MTksIAorICAgIDExOTY1NSwgMTAwMzgsIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTIwNTM3LCAxNTQyLCA5MjMwMywgMTI4ODE5LCAwLCAKKyAgICAxMjQ5NDAsIDEyMTE5OSwgNzQzMTEsIDc4NDk3LCAxMjE0MTIsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIDc3NzksIAorICAgIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIDEyODM3NCwgOTIyNjgsIDIyMjQsIDEwMTA3OSwgNjU1NzcsIDg5OTMsIAorICAgIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCA2NjgwNCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCA3MDEwNiwgNjAyNywgCisgICAgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDEyMDYyOSwgNzAzODYsIDEyNzkwMywgOTgzMzM5LCA5ODMzMzgsIDI3MzUsIDQyODMxLCAKKyAgICA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDEyOTM2NCwgNzA0MzMsIDczOTQ2LCAwLCAxOTQ3MDMsIDAsIAogICAgIDY4MTQwLCA5ODM5MjgsIDk1NzYsIDcwMjg4LCAzMzQ3LCA0MTYwLCA1MTU0LCA1NTI4OCwgMzc5NCwgNjY1NjQsIDg1MzAsIAogICAgIDEyNzA2MywgNzcwOSwgNDExMTIsIDExOTg2OCwgNjY1NjAsIDgzODEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgMTI4OTIxLCAKLSAgICA2NzU4LCA2NjAzMSwgMTYxNSwgNTg1NSwgODA5LCAxMjcxMTcsIDkyMjgzLCAxMjgzMTYsIDEyODAwNCwgNTc5OSwgCi0gICAgMTI4OTI5LCA3MDEwMCwgMTI4NjA3LCA3MjYwLCA5ODMzMjYsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIDc4ODE5LCA2NDM4NiwgCi0gICAgNjUyNTcsIDc0OTA5LCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCA4MzM2MCwgNjUzMiwgMCwgOTE3OTE4LCAxMjA4NjAsIAotICAgIDEyNzA2MCwgNjU4MjgsIDEyMDAwNiwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NjMsIDc4ODE3LCAxMjgwMjEsIAotICAgIDEyMDYwOSwgMCwgMzM3MCwgOTE3ODgxLCAxMTM2MSwgNTQ0MywgNzE0MzEsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgCi0gICAgMTIxNTAzLCAyMjk4LCAwLCAxMjUwMzksIDY1NDk1LCA2NDcwNiwgOTgzMzIwLCA0MzM0NCwgOTgzMzE4LCA3MTQ0LCA5NDY2LCAKLSAgICA3ODg2NiwgOTgyNCwgNjcxNDIsIDEyODk2MywgNjcxMzMsIDY3MTMwLCA5MTUsIDQzNDI1LCA2NzI5MiwgNDM4NjUsIAotICAgIDY4MjMyLCA5ODMxMTEsIDEyMDg4OCwgNDMyNjQsIDY3MTM2LCA2NzEzNywgMCwgNDMwMzgsIDc4ODY0LCA2NzMwLCA3ODg2MiwgCi0gICAgNjgxNjEsIDY0NTUwLCA1MTg2LCA3MzYwLCAxMjc4MzcsIDcwNDUxLCAxMjEwOCwgMTIwNjQ0LCA2NTEyNCwgNDMxMjcsIAotICAgIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDEyODE3OCwgMTIwOTE5LCAxMTQ4NSwgCi0gICAgNjEwMywgOTI0NjgsIDk4MzMwNywgMTE3MTgsIDk4MzMwNSwgMTI4ODksIDkyNjU3LCAxMjUwMzQsIDEyMDYzNSwgMTI3MTU3LCAKLSAgICAxMjExMjgsIDU1MjQ1LCAxMjg3MDksIDE2MzAsIDgzMDI3LCA2NTQ4MywgMTIwNjM0LCAxMjU2NSwgMCwgNjU0NzYsIAotICAgIDcwMzY5LCA5ODMwNzIsIDgzMDI5LCA5MjgzLCA3NzAwLCA5MTc1MzcsIDk2OTAsIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAKLSAgICAzMzc2LCA2ODA4MCwgMCwgMTI4MjUzLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMTk0NjA0LCAKLSAgICA1OTU3LCAxMTA1OTMsIDg5MjYsIDk4MzMwMSwgOTgzMzAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIAotICAgIDUzODYsIDEyMDY4NiwgMTE3MTMsIDEwNjMzLCA2OTcwOCwgNTA1NiwgMCwgMCwgMCwgMTIwNzczLCA5NDA1NSwgOTgxMiwgMCwgCi0gICAgNDQ2MCwgNzg3OTEsIDEyNDk1NiwgNzEzMDcsIDEyODAzOCwgMCwgMTIxMTM1LCAxMjcxNzQsIDY0Mjc4LCA5MjM3MCwgCi0gICAgNDM0NjYsIDAsIDAsIDY0Mzg5LCAyOTUzLCA3MDEyMiwgMTgwMSwgMTI4MzUsIDc0ODQ3LCAxMjA4NjcsIDczODIzLCAKLSAgICA4MzExMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA2NjI5OSwgCi0gICAgOTgzMjg3LCA3MTQ0NywgMTIxMDYsIDEyMDk3MiwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIAotICAgIDI5NTEsIDk1MjIsIDY3ODE2LCA3ODI2NiwgNjY2MDQsIDk4Mzg2MCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCAKLSAgICA3Nzg5OSwgNzc5MDAsIDg0NTEsIDgzMzI0LCAwLCAwLCA2NjQ1OCwgMTI4OTU3LCAxMjg4NzAsIDc0ODk2LCAwLCAyOTA4LCAKLSAgICAwLCAxMTE3NywgNjQ5MDIsIDQyNDMsIDkyNDU0LCAxMjIzOSwgMTIxMDAzLCAxMjQ5NTksIDQ0NDEsIDAsIDgyOTY4LCAKLSAgICA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMTI1MDMxLCA0MTEsIDk4MzI3NSwgOTE5OSwgOTgzMjczLCA0MDU2LCAxMTg5OTIsIAotICAgIDQxODkwLCAxMjg1OTIsIDI3MzAsIDQxNjA0LCAxMjgzNTUsIDU0MjgsIDE5NDc0MywgMzM2NCwgNDIyNjUsIDY0NDM3LCAKLSAgICAxMjc5MzUsIDExODgxNiwgNzE0NTgsIDk2ODQsIDIxNiwgNzEzNjcsIDE0MDEsIDEyODA1MywgNDQwMTIsIDkyNjI4LCAKLSAgICA3MTQ1NiwgOTI1ODUsIDkxNTgsIDY2ODc4LCAxMTEyNiwgNTc2OCwgMCwgOTgzNzU5LCAwLCA0ODQsIDE5NDczOSwgMCwgMCwgCi0gICAgNjU4OTUsIDEyNTA3NiwgMTIxMzgwLCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgMTI3NTQzLCAKLSAgICA5Mzk2MiwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgCi0gICAgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgMTI5MTA5LCAxMjkwNDAsIDAsIDM0MzAsIDAsIDQyOTA1LCAKLSAgICA3ODcxNywgNzQ5MjksIDk4MSwgMTI5MTg0LCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAxMDkwOCwgMTI2NTA2LCAKLSAgICA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIDEyODI1OSwgNjc0LCA2Mzk5MSwgCi0gICAgOTgzMjUxLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgODM2NCwgNTEyMywgMTE5NjI4LCAKLSAgICA1MjgxLCA1NDY5LCA1MTIxLCA3Nzk4OSwgMTE4OTkzLCAwLCA1MTMwLCA4MzE4MCwgMTI4MzU3LCA3Nzk5MCwgMCwgCi0gICAgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDExOTI2OCwgMCwgMTI4NDc1LCA5MjE4NywgMzQ2OCwgCi0gICAgNzAzMywgOTIzMCwgNTkzOSwgMTI4Mzk3LCAwLCA1ODAzLCA3MTg2NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgCi0gICAgNjQ2MTMsIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTE3OTM5LCAwLCAxMTczOSwgNzc5ODYsIDQxOTgxLCA5Mjc0MywgNTkzOCwgCi0gICAgMCwgNDM3NjYsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAxMjQ5OTQsIDEzMDU3LCAwLCAxMjY5NzYsIAotICAgIDEyOTA4MSwgMTAwMDksIDAsIDQxNzAzLCAxMjA5NTAsIDEyMTY1LCAxMjkxOTEsIDAsIDk4ODUsIDAsIDgwNzcsIDkyNjIwLCAKLSAgICAxMjc5MDgsIDEyMTA0NCwgMTk0OTk1LCAwLCA5MjQ1NywgMTI5MTM4LCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCAKLSAgICA0OTg3LCA2NDUxOSwgMTIxMjY1LCAxMjUwNzgsIDAsIDE5NDgxMywgMTI4NTc0LCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgCi0gICAgMTI2NDkwLCAxOTk0NCwgNzQzNTYsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIAotICAgIDEyODg5OSwgMCwgMTIzMTMsIDExMTUxLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAKLSAgICAxMTk5NDAsIDExOTk0MSwgMTE5OTM4LCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgOTE3OTA0LCAKLSAgICA3ODg1MCwgMjc0MSwgNjQzOTksIDYxOTcsIDEzNzAsIDAsIDEyMDg0MSwgMCwgMTI1MDYyLCA5ODM0NDEsIDEyMDg0MywgCi0gICAgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIAotICAgIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAwLCA0NDc3LCA3ODI2NywgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgCi0gICAgMTE5OTYxLCA2NjE5OCwgNDE4ODAsIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCAKLSAgICA2NjE4OSwgNzM3ODgsIDc3ODgsIDQ4NDcsIDk4MzQyOCwgMTI3NzU5LCAwLCAxMjg0MzMsIDIyMjEsIDE1ODEsIDY1MzUsIAorICAgIDY3NTgsIDY2MDMxLCAxNjE1LCA1ODU1LCA4MDksIDEyNzExNywgOTIyODMsIDcyODUzLCAxMjgwMDQsIDU3OTksIDEyODkyOSwgCisgICAgNzAxMDAsIDEyODYwNywgNzI2MCwgOTgzMzI2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIDY1MjU3LCAKKyAgICA3NDkwOSwgNjg2MTYsIDEyMDYwNywgOTM0NywgODMzNjAsIDY1MzIsIDAsIDE5NTA2MiwgMTIwODYwLCAxMjcwNjAsIAorICAgIDY1ODI4LCAxMjAwMDYsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjQyLCA3ODgxNywgMTI4MDIxLCAxMjA2MDksIDAsIAorICAgIDMzNzAsIDkxNzg4MSwgMTEzNjEsIDU0NDMsIDcxNDMxLCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIDEyMTUwMywgMjI5OCwgMCwgCisgICAgMTI1MDM5LCA2NTQ5NSwgNjQ3MDYsIDk4MzMyMCwgNDMzNDQsIDk4MzMxOCwgNzE0NCwgOTQ2NiwgNzg4NjYsIDk4MjQsIAorICAgIDY3MTQyLCAxMjg5NjMsIDY3MTMzLCA2NzEzMCwgOTE1LCA0MzQyNSwgNjcyOTIsIDQzODY1LCA2ODIzMiwgOTgzMTExLCAKKyAgICAxMjA4ODgsIDQzMjY0LCA2NzEzNiwgNjcxMzcsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIDY4MTYxLCA2NDU1MCwgCisgICAgNTE4NiwgNzM2MCwgMTI3ODM3LCA3MDQ1MSwgMTIxMDgsIDEyMDY0NCwgNjUxMjQsIDQzMTI3LCA2NjA0MywgMCwgNjMyNiwgCisgICAgNDMxMDcsIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAxMjAzMjgsIDEyMDkxOSwgMTE0ODUsIDYxMDMsIDkyNDY4LCAKKyAgICAxMjEwNzUsIDExNzE4LCA5ODMzMDUsIDEyODg5LCA5MjY1NywgMTI1MDM0LCAxMjA2MzUsIDEwMTA3MCwgMTIxMTI4LCAKKyAgICA1NTI0NSwgMTI4NzA5LCAxNjMwLCA4MzAyNywgNjU0ODMsIDEyMDYzNCwgMTI1NjUsIDAsIDY1NDc2LCA3MDM2OSwgCisgICAgOTgzMDcyLCA4MzAyOSwgOTI4MywgNzcwMCwgMTIxMTkyLCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgCisgICAgNjgwODAsIDAsIDEyODI1MywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDEwMTA3OCwgNTk1NywgCisgICAgMTEwNTkzLCA4OTI2LCAxOTUwNzIsIDk4MzMwMCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAKKyAgICAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDEwMDY3OSwgMTI3ODI0LCAxMjE1MSwgMTIwNzczLCA5NDA1NSwgCisgICAgOTgxMiwgMCwgNDQ2MCwgNzg3OTEsIDEyNDk1NiwgNzEzMDcsIDEyODAzOCwgMCwgMTIxMTM1LCAxMjcxNzQsIDY0Mjc4LCAKKyAgICA5MjM3MCwgNDM0NjYsIDAsIDY2NzYwLCA2NDM4OSwgMjk1MywgNzAxMjIsIDE4MDEsIDEyODM1LCA3NDg0NywgMTIwODY3LCAKKyAgICA3MzgyMywgODMxMTAsIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgNjYyOTksIAorICAgIDE5NDc3NSwgNzE0NDcsIDEyMTA2LCAxMjA5NzIsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAKKyAgICAyOTUxLCA5NTIyLCA2NzgxNiwgNzgyNjYsIDY2NjA0LCAxMDEwNTksIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgCisgICAgNzc4OTksIDc3OTAwLCA4NDUxLCA4MzMyNCwgMCwgMCwgNjY0NTgsIDEyODk1NywgMTI3MzAxLCA3NDg5NiwgMCwgMjkwOCwgCisgICAgOTgzNTU4LCAxMTE3NywgNjQ5MDIsIDQyNDMsIDkyNDU0LCAxMjIzOSwgMTIxMDAzLCAxMjQ5NTksIDQ0NDEsIDEyNDkyOSwgCisgICAgODI5NjgsIDczOTQwLCA2NDM1MiwgMTI3NTEzLCAxMjEwNjYsIDQxMSwgMTI3NTI1LCA5MTk5LCA5ODMyNzMsIDQwNTYsIAorICAgIDExODk5MiwgNDE4OTAsIDEyODU5MiwgMjczMCwgNDE2MDQsIDEyODM1NSwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgCisgICAgNjQ0MzcsIDEyNzkzNSwgMTE4ODE2LCA3MTQ1OCwgOTY4NCwgMjE2LCA3MTM2NywgMTQwMSwgMTI4MDUzLCA0NDAxMiwgCisgICAgOTI2MjgsIDcxNDU2LCA5MjU4NSwgOTE1OCwgNjY4NzgsIDExMTI2LCA1NzY4LCAxMDEwNjQsIDk4Mzc1OSwgMCwgNDg0LCAKKyAgICAxOTQ3MzksIDAsIDAsIDY1ODk1LCAxMjUwNzYsIDEwMDUyNCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIAorICAgIDEyNzU0MywgOTM5NjIsIDI3OTQsIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDEyODcwNSwgCisgICAgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgNjY3NjcsIDEyOTA0MCwgMTE5OTY3LCAzNDMwLCAKKyAgICA5ODMzOTcsIDQyOTA1LCA3ODcxNywgNzQ5MjksIDk4MSwgMTI5MTg0LCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAKKyAgICAxMDkwOCwgMTI2NTA2LCA3MDM0LCA0MTY4MywgNjQ2MTcsIDExOTEzOCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgCisgICAgMTI4MjU5LCA2NzQsIDYzOTkxLCA5ODMyNTEsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCAKKyAgICA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIDUxMjEsIDc3OTg5LCAxMTg5OTMsIDAsIDUxMzAsIDgzMTgwLCAKKyAgICAxMjgzNTcsIDc3OTkwLCAwLCAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCA3Nzk5MSwgNTIxNiwgMTE5MjY4LCAwLCAKKyAgICAxMjg0NzUsIDkyMTg3LCAzNDY4LCA3MDMzLCA5MjMwLCA1OTM5LCAxMjgzOTcsIDEyMDAxMCwgNTgwMywgNzE4NjcsIAorICAgIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDY3MTE1LCA2Njc1MywgCisgICAgMTE3MzksIDc3OTg2LCA0MTk4MSwgOTI3NDMsIDU5MzgsIDAsIDQzNzY2LCAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCAKKyAgICA3Mzg1MiwgMTAwNjg0LCAxMzA1NywgOTgzMjc3LCAxMjY5NzYsIDEyOTA4MSwgMTAwMDksIDkxNzkwNSwgNDE3MDMsIAorICAgIDEyMDk1MCwgMTIxNjUsIDEyOTE5MSwgOTgzNzU3LCA5ODg1LCAxOTQ4MTQsIDgwNzcsIDkyNjIwLCAxMjc5MDgsIDEyMTA0NCwgCisgICAgMTk0OTk1LCAwLCA5MjQ1NywgMTI5MTM4LCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCA0OTg3LCA2NDUxOSwgCisgICAgMTIxMjY1LCAxMjUwNzgsIDEyOTE4NSwgMTk0ODEzLCAxMjQ5OTksIDEwOTcwLCAxMTczMywgMCwgMTIwNzkyLCAxMjY0OTAsIAorICAgIDE5OTQ0LCA3NDM1NiwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgMjcyNCwgMTAwODg5LCAKKyAgICAxMjczOTAsIDEyMzEzLCAxMTE1MSwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgMTE5OTQwLCAKKyAgICAxMTk5NDEsIDEwMDg5MCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDkxNzkwNCwgNzg4NTAsIDI3NDEsIAorICAgIDY0Mzk5LCA2MTk3LCAxMzcwLCA5ODM5NDgsIDEyMDg0MSwgMCwgMTAwODg3LCA5ODM0NDEsIDcxMjczLCA2MTg0LCA4NjA2LCAKKyAgICAzMzAzLCA0MTM3MiwgMTE3ODYsIDk0NzMsIDY2MjAzLCAzNDIyLCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCA0NDc4LCA2NjE3OCwgCisgICAgMCwgMCwgMjc0NCwgMCwgNDQ3NywgNzgyNjcsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgCisgICAgNjYxOTgsIDQxODgwLCA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIAorICAgIDczNzg4LCA3Nzg4LCA0ODQ3LCAxMjgzNjYsIDEyNzc1OSwgNzA3MjUsIDEyODQzMywgMjIyMSwgMTU4MSwgNjUzNSwgCiAgICAgNzgxNjEsIDEyOTU0LCA0MzAsIDc4MTYwLCA1NTI1OSwgNzM5NDQsIDEyODAzNiwgNTI3OCwgNDk0NSwgNDI4ODMsIDQ5NTAsIAogICAgIDk4MzQ0MCwgNjg2MjUsIDk4MzQzOCwgNzI2OSwgMTI4NDk5LCA1OTY0LCAxMjkwOCwgMTI0OTk3LCAwLCA3NDc2NCwgCi0gICAgNDM1MTIsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCA5ODM0MzEsIDQ0MywgOTgzNDI5LCA0OTQ0LCA1NDY3LCAxMTk2MDMsIAotICAgIDcwODY1LCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIDQxMzAzLCA5MTc1NTYsIDE5NDkzMSwgMTE5OTYyLCAKLSAgICA0MTMwNiwgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIDQxMzA0LCA4MjQsIDEyODY3NiwgMTIwOTEsIAotICAgIDY3MTE4LCA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgMTE5ODIwLCAxMTk4MTksIDY1MDU5LCA0Mzg2MCwgCi0gICAgNjczOSwgNjY4NDQsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDY3NzAyLCA0Njc3LCAxMjY4OCwgCi0gICAgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCA3ODE2NiwgNDY3NCwgCi0gICAgNDU0OCwgNDQwMDUsIDcxMDg3LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAxODU1LCAxMjc0NzUsIAotICAgIDY4NjY5LCAxMTg5OTAsIDkyNDQ1LCAxMjc1NTQsIDEyNjYzMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIDExNzk3LCAKLSAgICA5ODM0MTksIDEyODE1OSwgOTIwMiwgNDY1NCwgNjg0MCwgOTgzNDE2LCA2ODYzOCwgNzM5OTMsIDEwNTI1LCA0NjQ5LCAKLSAgICA2NTIwOSwgMTIxNTEyLCAxMjE1MTEsIDQ2NDgsIDQzMDgwLCA3NTA3MCwgMTIxNTA3LCA5ODM0MDYsIDYyNDYsIDY0OTUwLCAKLSAgICA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3MDI4NywgNzQ2MjQsIDQzMTg3LCA4NjY5LCAKLSAgICAxMjA2NTksIDY4MjEsIDY1MDkzLCA5ODM1NjUsIDc4ODgxLCAyNzE2LCA5ODM0MTIsIDk4MzA2MCwgNzA1MDMsIDE5NDk1MiwgCi0gICAgNjgzNjksIDEyMDA1NCwgMTEwNjAsIDg1NDcsIDI3MTEsIDQyMTY1LCA3ODAyNywgNzgwMjYsIDY4MzYsIDk4MzQyMywgMCwgCi0gICAgNDY2MiwgNzgwMzMsIDc4MDMyLCA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgMTk0OTYyLCA0NjU2LCAKLSAgICAxMDEzMCwgNjg0NTAsIDc4MTEsIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIAotICAgIDQ2NjEsIDQyNDM0LCA5ODM0MTMsIDEyODczNywgMTExOTAsIDY0OTA0LCA5MDI2LCAxMDgzMywgNzQ4NjQsIDc1NDcsIAotICAgIDQ4NjcsIDExMTAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgCi0gICAgNDM4ODgsIDcwMzAzLCA5ODMzOTUsIDY5OTA1LCA2NzE4OCwgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCA2ODgzMSwgCi0gICAgMTI4ODAsIDY1MzA3LCA0NjE3LCA2ODc1NywgOTgzMzg4LCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgCi0gICAgOTgzMzgyLCA1OTU4LCAwLCA5ODM0MzUsIDQyMTUsIDk3ODksIDExOTYxOSwgNDMyMSwgNDYyMSwgMTk1MDI4LCA0MTMxMywgCi0gICAgNTIyLCA1MzY4LCAxMTEzOSwgNjU4MDMsIDEyODU0NiwgNTM2NiwgMTIyMDEsIDUzNzIsIDEyMTA2MCwgMTE5OTQ5LCAKLSAgICAxOTQ5NzUsIDc3MjAsIDczOTAsIDI2OTYsIDk4MzQwMiwgMCwgNDYzOCwgOTgzNDA3LCAxNzkwLCA3ODI0MiwgNTk2NSwgCi0gICAgNjQzNjMsIDY2NTY5LCA2ODY0NiwgNjg0NzcsIDUzNzYsIDE4MzUsIDUzMzUsIDEyMTUwNSwgMTI4MDg5LCA0NjMzLCAwLCAKLSAgICA2ODExOSwgMTE4MCwgNDYzMiwgNjcxOTEsIDUzODcsIDUzMzMsIDAsIDEyNTEzMiwgNDIwOTQsIDUzMzEsIDQ2MzQsIAotICAgIDExOTI4LCA5ODM1OTQsIDUzMzgsIDQ2MzcsIDEyODE3MCwgNTk3MSwgNDI0MTQsIDQzNTAwLCAxMjY4LCA2NTA5NywgCi0gICAgNDIzNjEsIDAsIDAsIDczODUzLCAxNDI3LCAxMjg0NDAsIDAsIDU5NzAsIDM0MzEsIDAsIDEwMzU4LCAxMDQyMiwgNDc1OCwgCi0gICAgOTgzMzc2LCAxNjA4LCAyNzM4LCAxMjUwNjYsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIAotICAgIDc0Mzg0LCA2NjYxMSwgNjgzNzcsIDYyNDgsIDk4MzM2NCwgNjc4MTUsIDc4ODc4LCA0MjMxOCwgOTI1ODIsIDUyMjksIAotICAgIDQ3NTcsIDAsIDEyNjU3NiwgMjcyOCwgNDc1MiwgNjQ1NjMsIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDEyODkyNiwgCi0gICAgMTA3MTMsIDcxNjYsIDAsIDI2MjIsIDc0NjAsIDgzMTI0LCA2NzEwMSwgMTI2NDk1LCA4OTU0LCA3NDc2MCwgNjUxODksIAotICAgIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgNTU3NCwgMTg1MywgMjcwOSwgNjUxMzksIDU1NzcsIDEyODk2NiwgMCwgCi0gICAgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAKLSAgICAwLCA1NTI1LCA1MzMwLCA1MzE5LCA2ODI5MiwgMTI3MzExLCA2NTA2NiwgNDQwMDMsIDY4NDM3LCA5ODM0ODIsIDQzODQzLCAKLSAgICAxMjA0OTgsIDEyNzg1MSwgNDM5MTgsIDc0ODUxLCA3NDAyMiwgOTgzNDI0LCA2NDYwOSwgNjg2NDMsIDY3NDEwLCAxMjg1OTMsIAotICAgIDU3MjEsIDc0ODkyLCA1NTE5LCA4NjMyLCA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgNzg3NzgsIDE2OTIsIAotICAgIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzI0MiwgNTI4NywgNTMwOSwgCi0gICAgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgMTIwNDc5LCAKLSAgICA5ODMzNDgsIDkyMDgsIDQ2MDgsIDQzOTY2LCA0MTEyNCwgNTE5MCwgNjc2MjgsIDY2ODI2LCA2ODE0NSwgNzA4NiwgMCwgCi0gICAgNjc5OTgsIDY3NjIwLCA5MzA0NywgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgMCwgNjc2MjUsIDU5NjAsIDY3NzIyLCAKLSAgICA4OTkyLCA0MjU5MywgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgCi0gICAgNDI1MDgsIDc0NDIsIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgNjIzOSwgNDM5MDAsIDQxMjU2LCA3NDEzMiwgNjc3NDAsIAotICAgIDAsIDcxMTc4LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgMCwgNDg2NSwgCi0gICAgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgNzE5MywgNjcwOTcsIDEyODg0NCwgNTczOSwgNDEwMjQsIAotICAgIDQ4NjYsIDk4Mzg4MCwgNzM5MDQsIDEyMTQyMCwgNDg2OSwgMTIwNTYzLCAxMjkxNzIsIDQyMjMsIDEyODIwMSwgNjY1MCwgCi0gICAgMTI2NTA5LCAwLCAxMjAyMTIsIDExOTg3MiwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgNzgxNzYsIDY4NjY3LCAKLSAgICA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCA4MzE5MywgNjI0NSwgNjg2NTIsIAotICAgIDI3MzIsIDQyNzM0LCA3NDUsIDY4MDQ1LCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAxMjkxMzYsIDY4NjMxLCA0Mjc3NSwgCisgICAgNDM1MTIsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCA5ODM0MzEsIDQ0MywgMTIyOTAyLCA0OTQ0LCA1NDY3LCAxMTk2MDMsIAorICAgIDcwODY1LCA2NTEzNywgNjA0NCwgNjUzOTIsIDk4MzExOSwgNDIxMywgMCwgNDEzMDMsIDkxNzU1NiwgMTk0OTMxLCAKKyAgICAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgCisgICAgMTI4Njc2LCAxMjA5MSwgNjcxMTgsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgCisgICAgNjUwNTksIDQzODYwLCA2NzM5LCA2Njg0NCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgNjc3MDIsIAorICAgIDQ2NzcsIDEyNjg4LCAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIAorICAgIDc4MTY2LCA0Njc0LCA0NTQ4LCA0NDAwNSwgNzEwODcsIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIAorICAgIDE4NTUsIDEyNzQ3NSwgNjg2NjksIDExODk5MCwgOTI0NDUsIDEyNzU1NCwgMTI2NjMwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgCisgICAgMTE3OTcsIDk4MzQxOSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA2ODQwLCAxMjI5MDksIDY4NjM4LCA3Mzk5MywgMTA1MjUsIAorICAgIDQ2NDksIDY1MjA5LCAxMjE1MTIsIDEyMDI0NSwgNDY0OCwgNDMwODAsIDc1MDcwLCAxMjE1MDcsIDk4MzQwNiwgNjI0NiwgCisgICAgNjQ5NTAsIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDcwMjg3LCA3NDYyNCwgNDMxODcsIAorICAgIDg2NjksIDEyMDY1OSwgNjgyMSwgNjUwOTMsIDk4MzU2NSwgNzg4ODEsIDI3MTYsIDk4MzQxMiwgOTgzMDYwLCA2Njc1NiwgCisgICAgMTk0OTUyLCA2ODM2OSwgMTIwMDU0LCAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNjgzNiwgCisgICAgOTgzNDIzLCA5ODM0MjEsIDQ2NjIsIDc4MDMzLCA3ODAzMiwgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIAorICAgIDE5NDk2MiwgNDY1NiwgMTAxMzAsIDY4NDUwLCA3ODExLCA0MDk5NCwgMTk0NzAyLCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCAKKyAgICA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgOTgzNDEzLCAxMTg5OTcsIDExMTkwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIAorICAgIDc0ODY0LCA3NTQ3LCA0ODY3LCAxMTEwMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCAKKyAgICA0NjIyLCAxMTk2NTYsIDQzODg4LCA3MDMwMywgOTgzMzk1LCA2OTkwNSwgNjcxODgsIDkwNDUsIDc4ODg4LCA0MjI1LCAKKyAgICAxOTkyNiwgNjg4MzEsIDEyODgwLCA2NTMwNywgNDYxNywgNjg3NTcsIDc4MDA4LCA0MTczMiwgNDYxNiwgMTA1MTgsIAorICAgIDEwNDIzLCAxMDM1OSwgOTgzMzgyLCA1OTU4LCAwLCA5ODM0MzUsIDQyMTUsIDk3ODksIDExOTYxOSwgNDMyMSwgNDYyMSwgCisgICAgMTk1MDI4LCA0MTMxMywgNTIyLCA1MzY4LCAxMTEzOSwgNjU4MDMsIDEyODU0NiwgNTM2NiwgMTIyMDEsIDUzNzIsIAorICAgIDEyMTA2MCwgMTE5OTQ4LCAxMjcwNjQsIDc3MjAsIDczOTAsIDI2OTYsIDExOTY1NywgOTgzMTE1LCA0NjM4LCA5ODM0MDcsIAorICAgIDE3OTAsIDc4MjQyLCA1OTY1LCA2NDM2MywgNjY1NjksIDY4NjQ2LCA2ODQ3NywgNTM3NiwgMTgzNSwgNTMzNSwgMTIxNTA1LCAKKyAgICAxMjgwODksIDQ2MzMsIDk4MzQxOCwgNjgxMTksIDExODAsIDQ2MzIsIDY3MTkxLCA1Mzg3LCA1MzMzLCAwLCAxMjUxMzIsIAorICAgIDQyMDk0LCA1MzMxLCA0NjM0LCAxMTkyOCwgMTAwOTUyLCA1MzM4LCA0NjM3LCAxMjEwNzAsIDU5NzEsIDQyNDE0LCA0MzUwMCwgCisgICAgMTI2OCwgNjUwOTcsIDQyMzYxLCAxMjg1MTAsIDkxNzYwNSwgNzM4NTMsIDE0MjcsIDEyODQ0MCwgMCwgNTk3MCwgMzQzMSwgCisgICAgOTgzNDE3LCAxMDM1OCwgMTA0MjIsIDQ3NTgsIDk4MzM3NiwgMTYwOCwgMjczOCwgMTI1MDY2LCAxMDQ1NSwgNDc1MywgCisgICAgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCA3NDM4NCwgNjY2MTEsIDY4Mzc3LCA2MjQ4LCA5ODMzNjQsIDY3ODE1LCAKKyAgICA3ODg3OCwgNDIzMTgsIDkyNTgyLCA1MjI5LCA0NzU3LCAxMjUyMTUsIDEyNjU3NiwgMjcyOCwgNDc1MiwgNjQ1NjMsIAorICAgIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDEyNzQ4NywgMTA3MTMsIDcxNjYsIDAsIDI2MjIsIDc0NjAsIDgzMTI0LCA2NzEwMSwgCisgICAgMTI2NDk1LCA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgNTU3NCwgMTg1MywgMjcwOSwgCisgICAgNjUxMzksIDU1NzcsIDEyODk2NiwgOTgzMDg4LCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgCisgICAgOTE3ODc3LCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgMTI3MDA2LCA1NTI1LCA1MzMwLCA1MzE5LCA2ODI5MiwgCisgICAgMTI3MzExLCA2NTA2NiwgNDQwMDMsIDY4NDM3LCAxMjcyOTksIDQzODQzLCAxMjA0OTgsIDEyNzg1MSwgNDM5MTgsIDc0ODUxLCAKKyAgICA3NDAyMiwgOTgzNDI0LCA2NDYwOSwgNjg2NDMsIDY3NDEwLCAxMjg1OTMsIDU3MjEsIDc0ODkyLCA1NTE5LCA4NjMyLCAKKyAgICA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgNzg3NzgsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAorICAgIDc1MDUyLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMyNDIsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCAKKyAgICA0NjQ3LCA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDEyMDQ3OSwgOTgzMzQ4LCA5MjA4LCA0NjA4LCAKKyAgICA0Mzk2NiwgNDExMjQsIDUxOTAsIDY3NjI4LCA2NjgyNiwgNjgxNDUsIDcwODYsIDIyNjUsIDY3OTk4LCA2NzYyMCwgOTMwNDcsIAorICAgIDI3MzQsIDExMDc0LCAwLCA2NzYyNywgNDM1OTMsIDEyODc1OCwgNjc2MjUsIDU5NjAsIDY3NzIyLCA4OTkyLCA0MjU5MywgCisgICAgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgNDI1MDgsIDc0NDIsIAorICAgIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgNjIzOSwgNDM5MDAsIDQxMjU2LCA3NDEzMiwgNjc3NDAsIDEyOTMwOSwgCisgICAgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCA5MTc4OTYsIAorICAgIDQ4NjUsIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIDcxOTMsIDY3MDk3LCAxMjg4NDQsIDU3MzksIAorICAgIDQxMDI0LCA0ODY2LCA5ODM4NTUsIDczOTA0LCA3MDcyNiwgNDg2OSwgMTIwNTYzLCAxMjkxNzIsIDQyMjMsIDEyODIwMSwgCisgICAgNjY1MCwgMTI2NTA5LCAwLCAxMjAyMTIsIDExOTg3MiwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgNzgxNzYsIDY4NjY3LCAKKyAgICA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCA3MjgyMSwgNjI0NSwgNjg2NTIsIAorICAgIDI3MzIsIDQyNzM0LCA3NDUsIDY4MDQ1LCAxMjg5MzMsIDkyMTk1LCA0Nzc3LCA3ODIxLCAxMjg4NzAsIDY4NjMxLCA0Mjc3NSwgCiAgICAgMTk0NjYxLCAxMjg0NDUsIDEyMDY3OSwgMzA5NywgMTIwOTA4LCA1OTY2LCAxMjExOTcsIDQ3NzgsIDEyNjQ2OSwgMTA4NjMsIAogICAgIDEyNzUwNiwgNDc4MSwgOTI5ODYsIDY0NDA3LCAxMjg1MDMsIDEyODMyMywgODU3NywgNzEyMjEsIDY4MTk2LCA0MzI4NSwgCi0gICAgMTAyMTYsIDQ3ODIsIDk4MzQ4NSwgOTgzNDExLCAxMjA3NTcsIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDAsIDAsIAotICAgIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMTI5MTI4LCAxMzE3NiwgNjgzNjMsIDEwNDI2LCA2NzI0NywgNzEwOTEsIAorICAgIDEwMjE2LCA0NzgyLCA5ODM0ODUsIDk4MzQxMSwgMTIwNzU3LCA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAxMjcxMTgsIAorICAgIDAsIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMTI5MTI4LCAxMzE3NiwgNjgzNjMsIDEwNDI2LCA2NzI0NywgNzEwOTEsIAogICAgIDEwMzYyLCAxOTQ3MDYsIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCA0MzI3OCwgNDI2MzUsIDAsIDEyNzIwNywgCi0gICAgNTk2MywgOTE3OTI2LCA5ODM0ODMsIDAsIDQ4NTAsIDczOTAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgCisgICAgNTk2MywgMTIwNzg2LCAxMjUyMDEsIDAsIDQ4NTAsIDczOTAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgCiAgICAgMTI3OTE4LCA1MTY0LCA3MzgwNywgMTM1MCwgNTEyNCwgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIDkyNDcxLCAKLSAgICAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAxMjEyNzMsIDQxMjY4LCA0ODQ4LCAyNTMwLCA3NDk0MSwgMjA2OCwgMTk2NCwgMCwgCi0gICAgNzM3NjIsIDEwNDU4LCA5ODM0MTcsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCA0Nzk0LCAxMjExMDIsIDY4MjExLCA4MzIyLCAKLSAgICA0Nzk3LCA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQyNiwgMzAzLCA3NDYyNSwgCi0gICAgNjgyMjksIDk4MzQyNywgMjQzNywgNzg2NTksIDQyMjEsIDQ4NDQsIDkyMjE2LCAwLCAwLCAwLCA3MDA0MiwgNzQwOTUsIAotICAgIDQzMjkyLCAwLCAyNDQxLCAxMDczOSwgNjUwOTAsIDE5NDYyMiwgNzA0MzYsIDExODkyOSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAKLSAgICAwLCA0MzM3OSwgNDkzNywgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIAotICAgIDQyODc5LCAxMTcyNSwgOTE3OTY5LCAwLCAyNzI2LCAzMTA3LCA3Mzk1OCwgNDk0MSwgNjQ5MzcsIDExOTIzMywgOTE0MCwgCi0gICAgMTQwOCwgNTI2MSwgNDYwNywgMTk0NzE1LCAxODEsIDk4MzQzMiwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIAotICAgIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCA5ODM2MDEsIDY4NDQsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIAotICAgIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAKLSAgICAxMjc5ODksIDEyNzU4LCAzODY1LCAxOTQ2NjAsIDEyMTEyOSwgMTA1MDAsIDAsIDExOTAyNCwgNzgwMjgsIDkyNDA4LCAKLSAgICA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAxMjgxMTksIDMxMjUsIDk1NjcsIDAsIAotICAgIDQ4NzgsIDU0NTksIDQ2MDQsIDExOTY1MCwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIDExNDk0LCAxMjY0OTIsIDk1NjMsIAotICAgIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA2ODUyMSwgNzg3MTQsIDY0MTkxLCA2NDE5MCwgODg5OCwgNjQxODgsIAotICAgIDEyOTE1MywgNDEwMzAsIDc0MjI2LCA3ODcxMywgNzQ2MDAsIDc0OTk0LCA5MTc4MzQsIDAsIDc4ODA1LCA0MTAzMSwgCi0gICAgNzg4MDEsIDExOTYwLCA2NzQ1LCAzMDgyLCA5ODMyNjksIDc4NTM5LCA3MzkxOSwgMTA1NzMsIDQxNzQ0LCA3MDc5LCA1ODU2LCAKLSAgICA2NzgzOCwgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAxMTkwMTAsIDEwNTY0LCA3NzYzLCAKLSAgICAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIDEwMzcxLCAxMDMwNywgNDE4MTQsIDQyNDgsIAotICAgIDc3OTc5LCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAotICAgIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIAotICAgIDEyMjMxLCA0MjY1MiwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgNzQ0OTUsIDgzNDkyLCA4MzQ5MywgCi0gICAgODM0OTQsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIAotICAgIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCAKLSAgICA1MzQ4LCAxMDk0MywgNjYzOTAsIDAsIDExMzUyLCA1NTAsIDk5MTAsIDEyNTEyNywgMCwgNjY1NzksIDExNTUxLCAxMjg0NjQsIAotICAgIDE5NTA4MCwgOTUwNCwgNzE4NywgODI5NTcsIDEwMzczLCA5ODM0MTgsIDEyMDM3NSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAKLSAgICAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCA2NTIyMiwgNjk5OCwgNzgxODAsIDcxNDI5LCAzMTI4LCA0Nzg5LCA1MDY3LCAKLSAgICA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCAKLSAgICA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgMCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgCi0gICAgMTMyNTQsIDExNjk3LCAxMjY1OTgsIDk3ODUsIDY0NzE2LCAwLCAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMTI1MDIzLCAKLSAgICA0MjYwOSwgMTE5ODU1LCA3NDE3NSwgNjY5MTIsIDEyNzAxNiwgMCwgMTIxMzAwLCA0MjEzMCwgMTIxMDQ2LCA1MTUxLCAKLSAgICAxMjEzNDYsIDgzNDg4LCAwLCA5Mzk4MCwgOTE3ODAyLCA3NjIwLCAzODAwLCA2NTEyMiwgODM0ODcsIDgzNDgwLCA4MzU1LCAKKyAgICAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAxMjEyNzMsIDQxMjY4LCA0ODQ4LCAyNTMwLCA3NDk0MSwgMjA2OCwgMTk2NCwgCisgICAgMTI4MjE3LCA3Mzc2MiwgMTA0NTgsIDEyODEyNSwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDEyMTEwMiwgNjgyMTEsIAorICAgIDgzMjIsIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDEyODE2MywgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MjYsIDMwMywgCisgICAgNzQ2MjUsIDY4MjI5LCA5ODM0MjAsIDI0MzcsIDc4NjU5LCA0MjIxLCA0ODQ0LCA5MjIxNiwgOTgzODA1LCAwLCAwLCAKKyAgICA3MDA0MiwgNzQwOTUsIDQzMjkyLCA5ODM2NTYsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMTk0NjIyLCA3MDQzNiwgMTE4OTI5LCAKKyAgICAyNDUxLCAyNzE0LCAxMTkzMjYsIDAsIDQzMzc5LCA0OTM3LCA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIAorICAgIDExNzIyLCA5MjQ4LCA5MjU1NSwgNDI4NzksIDExNzI1LCAxMjA2ODcsIDAsIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCAKKyAgICA2NDkzNywgMTE5MjMzLCA5MTQwLCAxNDA4LCA1MjYxLCA0NjA3LCAxMjkzNTMsIDE4MSwgOTgzNDMyLCA0OTQyLCA5NTM5LCAKKyAgICA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgCisgICAgNjQxNzgsIDY0MTc3LCAxMjk3OSwgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCAKKyAgICA0MTIzMSwgMTgyMiwgNDI1MjYsIDkyMzQ0LCAxMjc1OCwgMzg2NSwgMTIyOTE4LCAxMjExMjksIDEwNTAwLCAwLCAxMTkwMjQsIAorICAgIDc4MDI4LCA3ODAwMywgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgNTQ2MywgMTI4MTE5LCAKKyAgICAzMTI1LCA5NTY3LCA5ODMyOTEsIDQ4NzgsIDU0NTksIDQ2MDQsIDExOTY1MCwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAorICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA2ODUyMSwgNzg3MTQsIDY0MTkxLCAKKyAgICA2NDE5MCwgODg5OCwgNjQxODgsIDEyOTE1MywgNDEwMzAsIDc0MjI2LCA3ODcxMywgNzQ2MDAsIDc0OTk0LCA5MTc4MzQsIDAsIAorICAgIDc4ODA1LCA0MTAzMSwgNzg4MDEsIDExOTYwLCA2NzQ1LCAzMDgyLCAxMjY1ODEsIDc4NTM5LCA3MzkxOSwgMTA1NzMsIAorICAgIDQxNzQ0LCA3MDc5LCA1ODU2LCA2NzgzOCwgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAKKyAgICAxMTkwMTAsIDEwNTY0LCA3NzYzLCAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIAorICAgIDEwMzcxLCAxMDMwNywgNDE4MTQsIDQyNDgsIDc3OTc5LCA3MjgwMiwgNDU0MSwgNjI5OSwgNjQyMDQsIDY0MjAzLCA2NDIwMSwgCisgICAgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMTI2NDcxLCA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgNjUyMjMsIDk5NDMsIAorICAgIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAxMjIzMSwgNDI2NTIsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgCisgICAgNzgxODYsIDk5NjUsIDc0NDk1LCA4MzQ5MiwgODM0OTMsIDgzNDk0LCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIAorICAgIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIAorICAgIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIDY2MzkwLCAwLCAxMTM1MiwgNTUwLCAKKyAgICA5OTEwLCAxMjUxMjcsIDAsIDY2NTc5LCAxMTU1MSwgMTI4NDY0LCAxOTUwODAsIDk1MDQsIDcxODcsIDgyOTU3LCAxMDM3MywgCisgICAgOTgzMTUzLCAxMjAzNzUsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIAorICAgIDY5OTgsIDc4MTgwLCA3MTQyOSwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAxMjgzOTQsIDg4MjcsIAorICAgIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMTk0OTI2LCA5NDUwLCAKKyAgICAxODA5LCA5ODM1ODgsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAxMTY5NywgMTI2NTk4LCAKKyAgICA5Nzg1LCA2NDcxNiwgMTI4Mjc5LCAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMTI4NzM5LCAxMDExMDAsIDQyNjA5LCAKKyAgICAxMTk4NTUsIDc0MTc1LCA2NjkxMiwgMTI3MDE2LCAwLCAxMjEzMDAsIDQyMTMwLCAxMjEwNDYsIDUxNTEsIDEyMTM0NiwgCisgICAgNzA3NDMsIDk4MzcxNSwgOTM5ODAsIDkxNzgwMiwgNzYyMCwgMzgwMCwgNjUxMjIsIDgzNDg3LCA4MzQ4MCwgODM1NSwgCiAgICAgNzg1NCwgODM0ODMsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIDEwNzExLCAKLSAgICA0NTkzLCA4Mjk5MywgMTIwNTg0LCA5ODM0MTAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDk4MzQxNCwgMCwgNzg2NDIsIAotICAgIDY0NzU5LCAxMzI1LCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKLSAgICA3ODIwNCwgNDM5MTMsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDc0OTk2LCA3Nzg3NiwgNjM2LCAKLSAgICAxMTY5OCwgODM0NzYsIDgyOTYxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgCi0gICAgNzAyMDEsIDExOTk2MCwgMTQ3NywgNDMyODksIDY4NDkyLCA2NzE2NCwgODYxOCwgOTgzNDA0LCA5OTA4LCA3NDk3MiwgMCwgCi0gICAgMCwgMzkzNywgMTIzMTIsIDAsIDk4MzQwNSwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAKLSAgICAxMjY1OTQsIDYyNDQsIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCAxMjg5NjksIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgCi0gICAgNjUxMjksIDY4NjU2LCA1Mzk3LCAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgCi0gICAgMzU0LCA2ODYxNSwgNzc4NTMsIDc0MzY2LCAxMjE0MDQsIDAsIDQyMDM5LCAxMTM4MTcsIDAsIDY0MTQyLCA2MjYsIDAsIAotICAgIDU4OTUsIDAsIDQzOTEwLCA1NzgwLCAwLCAxMDIyMCwgMTIxMzM3LCA0MzkwNywgNzExMjEsIDQzMjk3LCA3MDE4OCwgNDMxMSwgCi0gICAgNDY0NCwgODgxOCwgNzgxNTgsIDEyODE4NiwgMTI4ODY5LCA3MTQ1LCAzOTE4LCA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIAotICAgIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIAotICAgIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCA5NDAyMCwgNjI0OSwgNDIxMTcsIDY4ODI4LCA5MjIwNiwgMTI4MDIzLCAxMTkyNTUsIAotICAgIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA3MTE4MCwgMCwgOTgzNDcwLCA0MzA2MSwgNzA1NCwgNjQxNDcsIDk4Mzg0NywgCi0gICAgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCA3MDg0OSwgMTE5ODEsIDEyMjAyLCAxOTUwODcsIDExMDMyLCAKLSAgICA2NzY1NCwgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAxNzAsIDAsIDY3MjM5LCA0MTY5LCAwLCA0MTg1OSwgCi0gICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCA3MDUwNywgMTI1MDkxLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCAKLSAgICA0MjEwNiwgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAxMjcxMjAsIDQ3MzcsIDExNzc5LCA0NzQyLCA4MzQyNSwgCi0gICAgNjg3NTgsIDY4MzQyLCA4MzQyMCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCA4MzQxOCwgODM0MTksIDY3NzMxLCAKLSAgICA1MzAwLCA0NzQxLCA0MjEwOCwgMTI3MDU3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDkyNjM0LCA4NDksIDkyMTkxLCA3ODQ5MSwgCi0gICAgNDMyODgsIDAsIDY2NjIwLCAxMjc1MzMsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2OCwgCi0gICAgNzg3NiwgNjgxMzIsIDY2MjgwLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMTIwODkwLCA0ODQyLCAKLSAgICAxMjA1MywgMTI4MTI5LCA2ODc0NiwgNDg0MSwgMCwgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDgzNDExLCAKLSAgICA4MzQxMiwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgNzA3OTQsIDEwMTE0LCA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIAotICAgIDQwOTc0LCA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDkxNzg0OSwgNDgyNSwgNjkyNDAsIDEyMTQ0MywgCi0gICAgNjg2NTUsIDAsIDk4MzM5MCwgMCwgMCwgNjg2MjgsIDk4MzM0OSwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgCi0gICAgNjY4NywgMTI3NCwgMTk1MDIyLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIAotICAgIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgODMyOTcsIDc4NjY5LCA2NDEwMSwgMCwgMTI4NDM0LCAKLSAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAxMjY5OTMsIDE4ODgsIDE5NjAsIDc4NjEsIDgzNDE2LCA3ODUyNCwgNDE4MzYsIAotICAgIDQzMDEyLCA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCA4MzI2MCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCAKLSAgICA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDk4MzYxMSwgCi0gICAgOTgzNzA4LCAxMTkwNTMsIDAsIDEyNzY1LCA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgCi0gICAgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgMzkyNCwgOTgzODk0LCAxMTM2NiwgMTI5MDg0LCAwLCAwLCA4MzQwMSwgNDExMTYsIAorICAgIDQ1OTMsIDgyOTkzLCAxMjA1ODQsIDEyODY2OSwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgMTI3NTA1LCA5ODM1OTQsIAorICAgIDY2Nzk1LCA2NDc1OSwgMTMyNSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCAKKyAgICA0Mzc4NywgNzgyMDQsIDQzOTEzLCAzMTE5LCAxMjcyNTcsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCA3NDk5NiwgNzc4NzYsIAorICAgIDYzNiwgMTE2OTgsIDgzNDc2LCA4Mjk2MSwgOTkxNiwgMTE3MDEsIDc4MzYsIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIAorICAgIDg4NjMsIDcwMjAxLCAxMTk5NjAsIDE0NzcsIDQzMjg5LCA2ODQ5MiwgNjcxNjQsIDg2MTgsIDk4MzQwNCwgOTkwOCwgCisgICAgNzQ5NzIsIDAsIDExOTE0NywgMzQxNCwgMTIzMTIsIDEyMDgzMiwgMTIwNzI3LCAxMjEyNjQsIDY0NzgxLCA5MTIsIDYzNDksIAorICAgIDQ1MzYsIDkzOTU0LCA3NDUzMiwgMTI2NTk0LCA2MjQ0LCA5MjIwOSwgNzEzNDEsIDM5MzUsIDEyMDY2NSwgMTI4MzE2LCAwLCAKKyAgICAxMTk1MCwgNTM5MiwgNDIyNDgsIDY1MTI5LCA2ODY1NiwgNTM5NywgMTI4MzEwLCAxMjA0NiwgMTI1OTksIDY3NDA3LCAKKyAgICAxMjY1NDIsIDUzOTUsIDcyODcwLCA1MzkzLCAzNTQsIDY4NjE1LCA3Nzg1MywgNzQzNjYsIDEyMTQwNCwgMTIxMjY2LCAKKyAgICA0MjAzOSwgMTEzODE3LCAxMjg2NzEsIDY0MTQyLCA2MjYsIDEyODI0NCwgNTg5NSwgOTgzNTczLCA0MzkxMCwgNTc4MCwgMCwgCisgICAgMTAyMjAsIDEyMTMzNywgNDM5MDcsIDcxMTIxLCA0MzI5NywgNzAxODgsIDQzMTEsIDQ2NDQsIDg4MTgsIDc4MTU4LCAKKyAgICAxMjgxODYsIDEyODg2OSwgNzE0NSwgMzkxOCwgNjY0NTIsIDM3OTcsIDE2NDQsIDkyMzQ2LCA5NjU4LCA0MTQwLCAxMTM4NSwgCisgICAgNjU5NDcsIDY0NTUsIDkwMzAsIDgxMywgMTE5OTQ1LCA2ODEzMSwgNDE0NiwgMTE5OTU3LCA1MzYwLCAyNDY2LCA3MDY2OSwgCisgICAgNjc2NjksIDk0MDIwLCA2MjQ5LCA0MjExNywgNjg4MjgsIDkyMjA2LCAxMjgwMjMsIDEwMTA0OCwgNzQwNDYsIDQzNzQ1LCAKKyAgICA0OTExLCA5ODgsIDcxMTgwLCA5ODMzMzcsIDk4MzQ3MCwgNDMwNjEsIDcwNTQsIDY0MTQ3LCAxMDEwNDIsIDY0OTIwLCAKKyAgICA2ODE5NSwgNjY5OCwgMTE4OTMzLCA5MjUwNiwgMCwgNzA4NDksIDExOTgxLCAxMjIwMiwgMTk1MDg3LCAxMTAzMiwgNjc2NTQsIAorICAgIDYwOTMsIDExNjA4LCA5NzUsIDY2NDE1LCA2NTg0MywgMTcwLCAwLCA2NzIzOSwgNDE2OSwgMTE5OTM4LCA0MTg1OSwgNjA1OCwgCisgICAgMTIwNDAxLCAxMzIwMywgMTIwNDAyLCA3MDUwNywgMTIwNDAzLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgCisgICAgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAxMjAxNDIsIDQ3MzcsIDExNzc5LCA0NzQyLCA4MzQyNSwgNjg3NTgsIAorICAgIDY4MzQyLCA0MTM3NCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCA4MzQxOCwgODM0MTksIDY3NzMxLCA1MzAwLCAKKyAgICA0NzQxLCA0MjEwOCwgMTI3MDU3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDkyNjM0LCA4NDksIDkyMTkxLCA3ODQ5MSwgNDMyODgsIAorICAgIDAsIDY2NjIwLCAxMjc1MzMsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2OCwgNzg3NiwgCisgICAgNjgxMzIsIDY2MjgwLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMTIwODkwLCA0ODQyLCAxMjA1MywgCisgICAgMTI4MTI5LCA2ODc0NiwgNDg0MSwgMTI5MzM0LCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgODM0MTEsIDgzNDEyLCAKKyAgICAxMjY1MTIsIDQwOTcyLCA1MjQ1LCA3MDc5NCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIAorICAgIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgNzI4NTEsIDQ4MjUsIDY5MjQwLCAxMjE0NDMsIDY4NjU1LCAwLCAKKyAgICAxMjg1MzcsIDAsIDAsIDY4NjI4LCA5ODMzNDksIDk4NTAsIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIAorICAgIDE5NTAyMiwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIDExMDIzLCAxMTk1NTksIDQ4MzAsIAorICAgIDkxMzQsIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDgzMjk3LCA3ODY2OSwgNjQxMDEsIDAsIDEyODQzNCwgNDgyNCwgMTA2MTQsIAorICAgIDExOTY1OSwgMTI2OTkzLCAxODg4LCAxOTYwLCA3ODYxLCA4MzQxNiwgNzg1MjQsIDQxODM2LCA0MzAxMiwgNjA1MiwgNjA2NCwgCisgICAgNTQsIDQzMDA5LCAxMjIxNCwgODMyNjAsIDYyMTEsIDEyMDM4NiwgMzU4LCA0MTk5NywgNDE4MzMsIDExNDQyLCAxMDc1OCwgCisgICAgNjU3NzQsIDExMzgyMywgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCA5ODM2MTEsIDk4MzcwOCwgOTI0MDgsIAorICAgIDEyODA4MiwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAxMTk2MzIsIDEyNjU4MCwgNDAxNywgMTI4MjcsIDUyNDEsIAorICAgIDEyMDM5MiwgMTI3OTAwLCA0MTExOCwgMzkyNCwgOTgzODk0LCAxMTM2NiwgMTI5MDg0LCAwLCAwLCA4MzQwMSwgNDExMTYsIAogICAgIDgzNDAzLCA4MzQwNCwgODMzOTcsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCA4MzM5NiwgCi0gICAgNjYyMDIsIDg5NTcsIDQxMzksIDcwNTEyLCAwLCA5ODMwNzQsIDAsIDAsIDEyNzQwLCAxMjE0NzAsIDQ3MjIsIDY4MTYsIAotICAgIDEyNDk3NCwgMTI3NTksIDQ3MjUsIDY3MDk5LCA0NzI2LCA4MzQ2NywgODM0NjgsIDk4MzYyMiwgNzAwMjksIDgzNDYzLCAKLSAgICA3NDkxMywgMTI3NTUsIDEyNzYyLCA0MDE1LCA2NzY5MCwgODA1MiwgNDc2LCAwLCA3NDg5MywgMTI4Mjk0LCA2NDIxMiwgCi0gICAgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMTI3NTUzLCAxMjUxMjEsIAotICAgIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgOTgzNDIxLCA2NDA2NywgOTIyODcsIDg1NTIsIDY0MTEzLCA0MTg0NSwgCi0gICAgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDgzMzAyLCAKLSAgICA5MTc2MTAsIDc5MzUsIDI0MjAsIDAsIDExMTQsIDc4MTIwLCA2NzU4NSwgNzAxMDQsIDcwNDMyLCA4MzQ0NywgNzQ5MjAsIAotICAgIDM5MzgsIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgNjY4ODQsIDYyOTIsIDY1MzAzLCAKLSAgICA3OTU1LCA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDE5NDc2NiwgMTI5MDczLCA2NTE1MiwgNzE5LCAKLSAgICAxMjAwNDQsIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIAotICAgIDY2NDUwLCA0NzEyLCA3NTA1NSwgOTE3ODk5LCA2NTQwMCwgNjU0MTYsIDgxNTUsIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIAotICAgIDAsIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMTk0Nzg5LCAwLCAxMTM3NTYsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAKLSAgICA4MzQ1NywgNjY0MzcsIDY2MDI1LCA3ODY5OSwgODM0NTIsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDEyOTEzNywgCi0gICAgNzg2OTQsIDEyMTE3MywgMTI4Nzc3LCA5MTc4NTgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDc4NjE3LCA1MzY1LCA0NTQ1LCAKLSAgICA4OTAxLCA5MjQyMSwgMTE5NTU1LCA0ODEzLCAxMjgyNjIsIDE5NDcyOSwgNTkyNSwgNDgwOCwgNjQzMzAsIDEyODQwMCwgCi0gICAgNjU0NzUsIDgzNDMyLCA2ODI0NCwgNDgxNCwgODM0MjcsIDQ4MTAsIDgzNDI5LCA4MzQzMCwgNjQ5MjgsIDEwNTQzLCAKLSAgICA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIDAsIDgzNDQyLCA2NDU2LCA3MzgyMCwgODM0NDUsIDY2OTEsIAotICAgIDQyMTkzLCA2NjI4NCwgODM0NDEsIDAsIDY4MzM3LCAwLCA0Mzg1OCwgNDM4MzIsIDExODgyMCwgOTc1MSwgNjU0MDcsIAotICAgIDEyODA4NSwgMTE3NzAsIDM5MTksIDEyMDcyNCwgMCwgNjUwNjEsIDk4Mzk0NSwgOTE3ODk0LCAxMjkxNDIsIDEyMjM1LCAKLSAgICAxMjg1NzIsIDkyNzAxLCAxMjEwODcsIDY0MDkyLCA2ODczOSwgNjQwODAsIDEyOTA2MywgNjQwOTAsIDk4MzU4NiwgNjk5MTMsIAotICAgIDEwMTYyLCAxMDMxMCwgMTIxMjEwLCA4NDU0LCAxMjEzODcsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgCi0gICAgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgNzgxMTYsIDAsIDEyMTI5NSwgMTk1MDI0LCA5MjE5MywgODg5NiwgMCwgCi0gICAgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA3NDk5NywgMTI3MzI1LCA5ODM0MzYsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgCi0gICAgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMTI4NDUyLCA0NTI5LCAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAKLSAgICAxMTkxOTksIDY5NjkyLCAxMjkxMjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDEyODk3NCwgNzg3NjEsIDIyOTEsIDEyOTAyLCAKLSAgICAwLCA0Mjg5MSwgNjYzMjcsIDcwNTAyLCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDEyODYyOCwgNDE5MywgCi0gICAgNjY4MjMsIDQyNDEsIDEyOTE5NSwgNzk5OCwgODMyNzYsIDAsIDEyNzAwOSwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIAotICAgIDk4MzkzNCwgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgMzc2MiwgCi0gICAgMTAwMTUsIDEyMDY3MiwgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgOTE3ODk4LCAKLSAgICA0MjAzNywgMCwgMzkwNiwgMTIzNDksIDc0NzkzLCA4MzI2LCAxMjczMzMsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAKLSAgICAzNzc5LCA5ODMxOTQsIDQzNjEzLCA3MDEzMiwgMCwgODMyODgsIDc4MzM1LCA4MzI4OSwgMCwgMjgwLCA3NDU1OCwgCi0gICAgMTIxMzUzLCA2NzM5NiwgMTMwNzIsIDE4OTQsIDgzMjkxLCA2NzczNSwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgCi0gICAgMCwgMTE5MTY1LCAxMTE0NCwgOTE3Nzc4LCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzUyLCAxMTkyMzcsIAotICAgIDcxODc3LCAxMjg2NjksIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgOTgzMDY2LCAKLSAgICA1MzY3LCA4NzU2LCAxMjcxNDMsIDExOTE4MywgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDUyMTgsIAotICAgIDY5Njg1LCA5ODM3NTYsIDAsIDExMzc5NCwgNDQwMjAsIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAKLSAgICAyMjkwLCA3MTA1NywgMTE5NjI0LCAxNDY1LCAxMDg1MCwgMzk0MywgMCwgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDExOTMzMywgCi0gICAgNjcxNDgsIDUzNTIsIDExMzc1MywgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIDQxMjA0LCAxMjczMjIsIDQxMjA5LCAKLSAgICA2OTYzNywgOTIyNDEsIDQzNjA3LCA3MTI1NCwgMCwgNTQyMCwgMzg5NywgMTAxMzQsIDEyMDM4MSwgNzQ0MTcsIDQwMTgsIAotICAgIDcxNTAsIDY4MTI3LCA3MTQyNSwgMCwgMTIxNDI3LCAxMjc4NjQsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAorICAgIDY2MjAyLCA4OTU3LCA0MTM5LCA3MDUxMiwgMTI3MTE1LCA5ODMwNzQsIDAsIDEyMjkwNywgMTI3NDAsIDEyMTQ3MCwgNDcyMiwgCisgICAgNjgxNiwgMTI0OTc0LCAxMjc1OSwgNDcyNSwgNjcwOTksIDQ3MjYsIDgzNDY3LCA4MzQ2OCwgOTgzNjIyLCA3MDAyOSwgCisgICAgODM0NjMsIDc0OTEzLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDY3NjkwLCA4MDUyLCA0NzYsIDAsIDc0ODkzLCAxMjgyOTQsIAorICAgIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAxMjc1NTMsIAorICAgIDEyNTEyMSwgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCAxOTUwOTYsIDY0MDY3LCA5MjI4NywgODU1MiwgCisgICAgNjQxMTMsIDQxODQ1LCAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIAorICAgIDExOTA4NSwgODMzMDIsIDkxNzYxMCwgNzkzNSwgMjQyMCwgNzM4NjEsIDExMTQsIDc4MTIwLCA2NzU4NSwgNzAxMDQsIAorICAgIDcwNDMyLCA4MzQ0NywgNzQ5MjAsIDM5MzgsIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgCisgICAgNjY4ODQsIDYyOTIsIDY1MzAzLCA3OTU1LCA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDE5NDc2NiwgCisgICAgMTI5MDczLCA2NTE1MiwgNzE5LCAxMjAwNDQsIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgCisgICAgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCA0NzEyLCA3NTA1NSwgOTE3ODk5LCA2NTQwMCwgNjU0MTYsIDgxNTUsIAorICAgIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIDk4MzI5MywgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAxOTQ3ODksIAorICAgIDEyMTIyNiwgMTEzNzU2LCA5ODM0NTgsIDY1NDE0LCA2NDU0LCAxMjI5LCA4MzQ1NywgNjY0MzcsIDY2MDI1LCA3ODY5OSwgCisgICAgODM0NTIsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDEyOTEzNywgNzg2OTQsIDEyMTE3MywgMTI4Nzc3LCA5MTc4NTgsIAorICAgIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDc4NjE3LCA1MzY1LCA0NTQ1LCA4OTAxLCA5MjQyMSwgMTE5NTU1LCA0ODEzLCAKKyAgICAxMjgyNjIsIDE5NDcyOSwgNTkyNSwgNDgwOCwgNjQzMzAsIDEyODQwMCwgNjU0NzUsIDgzNDMyLCA2ODI0NCwgNDgxNCwgCisgICAgODM0MjcsIDQ4MTAsIDgzNDI5LCA4MzQzMCwgNjQ5MjgsIDEwNTQzLCA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIAorICAgIDkyMzI5LCA4MzQ0MiwgNjQ1NiwgNzM4MjAsIDgzNDQ1LCA2NjkxLCA0MjE5MywgNjYyODQsIDgzNDQxLCAwLCA2ODMzNywgMCwgCisgICAgNDM4NTgsIDQzODMyLCAxMTg4MjAsIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAxMjA3MjQsIDk4MzU5NiwgCisgICAgNjUwNjEsIDc4MTE1LCA5MTc4OTQsIDEyOTE0MiwgMTIyMzUsIDEyODU3MiwgOTI3MDEsIDEyMTA4NywgNjQwOTIsIDY4NzM5LCAKKyAgICA2NDA4MCwgMTI5MDYzLCA2NDA5MCwgMTI1MjY3LCA2OTkxMywgMTAxNjIsIDEwMzEwLCAxMjEyMTAsIDg0NTQsIDEyMTM4NywgCisgICAgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCA3ODExNiwgCisgICAgMCwgMTIxMjk1LCAxOTUwMjQsIDkyMTkzLCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDc0OTk3LCAKKyAgICAxMjczMjUsIDk4MzQzNiwgMTEzNzU3LCAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAKKyAgICAxMjg0NTIsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDEyOTEyNCwgNjk2OTgsIAorICAgIDEzMTUwLCA2NDQ5MiwgMTI4OTc0LCA3ODc2MSwgMjI5MSwgMTI5MDIsIDEyODE0MCwgNDI4OTEsIDY2MzI3LCA3MDUwMiwgCisgICAgMTI5NDI1LCAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAxMDA1NzYsIDQxOTMsIDY2ODIzLCA0MjQxLCAxMjkxOTUsIAorICAgIDc5OTgsIDgzMjc2LCAwLCAxMjcwMDksIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCA5ODM5MzQsIDEyNzQ3OCwgNjQyOTcsIAorICAgIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgMzc2MiwgMTAwMTUsIDEyMDY3MiwgCisgICAgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCA5ODM4NjUsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCA5MTc4OTgsIDQyMDM3LCAwLCAKKyAgICAzOTA2LCAxMjM0OSwgNzQ3OTMsIDgzMjYsIDEyNzMzMywgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIDM3NzksIAorICAgIDk4MzE5NCwgNDM2MTMsIDcwMTMyLCAwLCA4MzI4OCwgNzgzMzUsIDgzMjg5LCAxMjk0MTksIDI4MCwgNzQ1NTgsIDEyMTM1MywgCisgICAgNjczOTYsIDEzMDcyLCAxODk0LCA4MzI5MSwgNjc3MzUsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgMTE3NzMsIDEyMTMxNCwgCisgICAgMTE5MTY1LCAxMTE0NCwgOTE3Nzc4LCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzUyLCAxMTkyMzcsIDcxODc3LCAKKyAgICA3Mjg4NiwgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAxMTk5NDksIDUzNjcsIDg3NTYsIAorICAgIDEyNzE0MywgMTE5MTgzLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgNTIxOCwgNjk2ODUsIDE5NDkxOCwgMCwgCisgICAgMTAwNzgwLCA0NDAyMCwgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDIyOTAsIDcxMDU3LCAKKyAgICAxMTk2MjQsIDE0NjUsIDEwODUwLCAzOTQzLCAxMjc1MzcsIDQxMjA1LCA0MTMxNSwgMTE4OTYxLCAxMTkzMzMsIDY3MTQ4LCAKKyAgICA1MzUyLCAxMTM3NTMsIDAsIDg4MzksIDQxMzE0LCA3Mzg0LCA3Nzg1LCA0MTIwNCwgMTI3MzIyLCA0MTIwOSwgNjk2MzcsIAorICAgIDkyMjQxLCA0MzYwNywgNzEyNTQsIDgzNDQ0LCA1NDIwLCAzODk3LCAxMDEzNCwgMTIwMzgxLCA3NDQxNywgNDAxOCwgNzE1MCwgCisgICAgNjgxMjcsIDcxNDI1LCA3MDY4OCwgMTIxNDI3LCAxMjc4NjQsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAogICAgIDEyMDc2LCA3OTUxLCA2ODE1MiwgMTE4ODU3LCA1MzAzLCA2Mjc2LCAxNzA2LCAxMjA3NTAsIDc4NzUxLCA3MTQ2LCAKLSAgICA5ODM2ODIsIDY1MTUwLCA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgCi0gICAgOTgzNDM3LCA2OTY0MSwgMTA3NTMsIDEwODMwLCAxMTkzMzksIDYxNSwgNjQ0OTAsIDc1NzQsIDc0MDgyLCA3NzkyMiwgMCwgCi0gICAgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAwLCAxMjEyMzEsIDY3OTk2LCAyMDIwLCAxMjg3OTAsIDQwMjIsIAotICAgIDEyODc4MywgMTIwNzAxLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgNzUwNjAsIDc0MzI5LCAwLCA2NDYyMiwgOTA3MCwgMCwgCi0gICAgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDk4MzgxMywgNzAwMCwgMzkwNCwgOTgzNjI4LCAKLSAgICA3MzczNywgMTI1MTA1LCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCi0gICAgOTE3ODkxLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAxMTM3MjUsIDk2MzYsIDAsIDEwNzM4LCAKLSAgICA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgOTgzNzIzLCA2NDQwOSwgMzU5NiwgCi0gICAgMTI5MDQ0LCAxMjgwOTAsIDk3NjMsIDEyMDI4MCwgNzQ2MDksIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgCi0gICAgOTI2ODcsIDAsIDEyNzU1NSwgMTk0NjMyLCAxMDgyMCwgNDM5ODcsIDAsIDEyODkwNywgMTc2OSwgNDE3MTUsIDI0NjMsIAotICAgIDcxMjE0LCA4MzA3MCwgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIDE5NDYxNCwgMTk1MDU4LCA3Nzk1LCAKLSAgICAxMjAzMDAsIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAxMjExMzAsIDk0OTgsIDEyNzAzMiwgCi0gICAgMTI3MDMzLCAxMjAyODksIDEyMDI4OCwgMzkzOSwgMTIwMjkwLCA4ODQ2LCA4OTQzLCAxMjAyODcsIDEyMDI4NiwgMjY1MCwgCi0gICAgNDQ5MSwgMTk2MSwgNDI2MDIsIDExNTI1LCAxMjAyOTIsIDE5NTksIDEyMDI5NCwgNTUyMjgsIDExNzc0LCA0MTAxNiwgCi0gICAgOTgzMjYyLCA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIDY2MzMxLCAzNDU0LCAxOTkzMCwgMCwgCi0gICAgNDEwMTksIDEyNzk0NCwgMCwgNjUyOTIsIDY4MjIsIDEyODYyLCAwLCAwLCA0MjE0MywgNDE4MjgsIDc4MjA3LCA2NTUzMSwgCi0gICAgNzA4NjQsIDExODg3OSwgNTUyMjMsIDAsIDEyODA3MSwgNDE4MjYsIDg4NjUsIDY0MDIsIDExMzgyNywgMTMyNzksIDc5MTcsIAotICAgIDc0NzU1LCA5MTc5NDgsIDc3MzMsIDk4MzQwOCwgNDk5OCwgNjg0OTMsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMTk0NzkwLCAKLSAgICAxOTUwNTYsIDcwMDYxLCA0MDEzLCAxMjg3MTgsIDEwODgxLCAwLCA5ODMxNjMsIDAsIDc0Nzg4LCAyMDE0LCAyNDMyLCAKLSAgICA3MTkwMSwgOTc2NSwgMTk1MDUyLCAwLCA5MTc4NTQsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAKLSAgICAwLCAxMTkzMTUsIDIwMTUsIDEyMTA4OCwgOTI3NjUsIDcxODQwLCA2NjMxOCwgNDMyMzMsIDkxNzk5MiwgNDI1MTcsIAotICAgIDY4MDYwLCAwLCAwLCAxMjY5OCwgODA5NCwgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDQzNDk3LCAxMjY1NiwgNjYzMzUsIAotICAgIDExOTM1MywgNjcyNzksIDE2NjUsIDcxODUzLCA0ODMzLCA5MTc5ODUsIDcxMTg4LCAxMjczNjcsIDEyMTQ2NCwgMTg5LCAKLSAgICAxMjYxMSwgMCwgOTgzNDIwLCAyODU5LCA0ODM4LCA5ODM5MzAsIDQ4MzQsIDY1MDc4LCAwLCA5Mjk5MSwgNDgzNywgNjc0MTMsIAotICAgIDc3MCwgOTI2NzEsIDgxMSwgNzAwNjIsIDQxMDQyLCA4MzA3MywgNDEzMTgsIDY0NDI3LCA3Mzk5OSwgNjc2OTMsIDc4ODQ4LCAKLSAgICAzODk1LCA5MjYxNSwgNzQzNDEsIDM5NzYsIDEyODQ2NiwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCA3ODQ4OCwgMCwgCi0gICAgNDM0OTYsIDAsIDEyMTAxNSwgNDM2ODYsIDc4ODQ2LCA0MTg3NywgOTgzNzQzLCAyODcxLCA2NDYxNCwgNjg4NDMsIDk5OSwgCi0gICAgOTgzODQ0LCA2MzQ1LCA0MTg3NiwgMjY2MywgMjAxNywgMTIxMjM0LCA2NzgyNCwgMTEwNDAsIDEwMTUwLCAxMjA2NzgsIAotICAgIDY0MzA4LCAxNTIyLCA1OTcsIDQ3NzUsIDEyNTU1LCAxMjU3MSwgMTI1NTAsIDEyNTgzLCAxMjU2MCwgMjAxOSwgMTI1NTYsIAotICAgIDEyNTg0LCAzMDkyLCAwLCAxMjU2MiwgNDc4MywgMTI1NjYsIDEyNTY5LCAxMjU1NCwgODMzNDQsIDEwODEyLCA3ODg1MSwgMCwgCi0gICAgODMzNDIsIDMwNzgsIDE0MDIsIDAsIDgzMzQ4LCAwLCAxMjUwNzIsIDExOTI0OCwgMzk0LCAzMDg4LCA4MzM0NywgOTIxNzIsIAorICAgIDk4MzY4MiwgNjUxNTAsIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDEyNzI4NywgMTA1MDYsIAorICAgIDk4MzQzNywgNjk2NDEsIDEwNzUzLCAxMDgzMCwgMTE5MzM5LCA2MTUsIDY0NDkwLCA3NTc0LCA3NDA4MiwgNzc5MjIsIAorICAgIDk4MzI5OCwgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAxMjgzMDksIDEyMTIzMSwgNjc5OTYsIDIwMjAsIDEyODc5MCwgCisgICAgNDAyMiwgMTI4NzgzLCAxMDA3NDgsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCA3NTA2MCwgNzQzMjksIDAsIDY0NjIyLCAKKyAgICA5MDcwLCA5ODM4NzYsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAxMjUxOTEsIDcwMDAsIDM5MDQsIAorICAgIDk4MzYyOCwgNzM3MzcsIDEyNTEwNSwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTIwNTE4LCA3Mzk3LCAKKyAgICAxMTg4MDcsIDkxNzg5MSwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAxMjg1MDksIDM3NzcsIDY4NDU4LCAxMTM3MjUsIAorICAgIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgCisgICAgOTgzNzIzLCA2NDQwOSwgMzU5NiwgMTI5MDQ0LCAxMjA4OTUsIDk3NjMsIDEyMDI4MCwgNzQ2MDksIDEyMzQ3LCAxMjQsIAorICAgIDEyOTgxLCA0MTEyNywgMjA5MiwgOTI2ODcsIDAsIDEyNzU1NSwgMTk0NjMyLCAxMDgyMCwgNDM5ODcsIDAsIDEyODkwNywgCisgICAgMTc2OSwgNDE3MTUsIDI0NjMsIDcxMjE0LCA4MzA3MCwgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIAorICAgIDE5NDYxNCwgMTk0NTg1LCA3Nzk1LCAxMjAzMDAsIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAxMDEwMzQsIAorICAgIDEyMTEzMCwgOTQ5OCwgMTAwNDk0LCAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIAorICAgIDEyMDI4NywgMTIwMjg2LCAyNjUwLCA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCAKKyAgICA1NTIyOCwgMTE3NzQsIDQxMDE2LCA5MTc5NDQsIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgCisgICAgNjYzMzEsIDM0NTQsIDE5OTMwLCA3ODE2MywgNDEwMTksIDEyNjU0NiwgOTgzNjcxLCA2NTI5MiwgNjgyMiwgMTI4NjIsIAorICAgIDk4MzcwNywgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDcwODY0LCAxMTg4NzksIDU1MjIzLCAwLCAxMjgwNzEsIAorICAgIDQxODI2LCA4ODY1LCA2NDAyLCAxMTM4MjcsIDEzMjc5LCA3OTE3LCA3NDc1NSwgOTE3OTQ4LCA3NzMzLCA5ODM0MDgsIAorICAgIDQ5OTgsIDY4NDkzLCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDEyNzkyMywgODMwNzUsIDcwMDYxLCA0MDEzLCAxMjg3MTgsIAorICAgIDEwODgxLCAwLCAxMjkwNDUsIDEyNTI2NiwgNzQ3ODgsIDIwMTQsIDI0MzIsIDcxOTAxLCA5NzY1LCAxOTUwNTIsIDAsIAorICAgIDkxNzg1NCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIDAsIDExOTMxNSwgMjAxNSwgMTAwODcxLCAKKyAgICA5Mjc2NSwgNzE4NDAsIDY2MzE4LCA0MzIzMywgOTE3OTkyLCA0MjUxNywgNjgwNjAsIDk4MzYxNCwgOTgzOTA0LCAxMjY5OCwgCisgICAgODA5NCwgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDQzNDk3LCAxMjY1NiwgNjYzMzUsIDExOTM1MywgNjcyNzksIDE2NjUsIAorICAgIDcxODUzLCA0ODMzLCA5MTc5ODUsIDcxMTg4LCAxMjczNjcsIDEyMTQ2NCwgMTg5LCAxMjYxMSwgMCwgMTI4MDk0LCAyODU5LCAKKyAgICA0ODM4LCA5ODM5MzAsIDQ4MzQsIDY1MDc4LCAwLCA5Mjk5MSwgNDgzNywgNjc0MTMsIDc3MCwgOTI2NzEsIDgxMSwgNzAwNjIsIAorICAgIDQxMDQyLCA4MzA3MywgNDEzMTgsIDY0NDI3LCA3Mzk5OSwgNjc2OTMsIDc4ODQ4LCAzODk1LCA5MjYxNSwgNzQzNDEsIAorICAgIDM5NzYsIDEyODQ2NiwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCA3ODQ4OCwgMCwgNDM0OTYsIDk4MzA2OSwgMTIxMDE1LCAKKyAgICA0MzY4NiwgNzg4NDYsIDQxODc3LCA5ODM3NDMsIDI4NzEsIDY0NjE0LCA2ODg0MywgOTk5LCAxMjUxOTgsIDYzNDUsIAorICAgIDQxODc2LCAyNjYzLCAyMDE3LCAxMjEyMzQsIDY3ODI0LCAxMTA0MCwgMTAxNTAsIDEyMDY3OCwgNjQzMDgsIDE1MjIsIDU5NywgCisgICAgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIAorICAgIDk4MzgzMiwgMTI1NjIsIDQ3ODMsIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDgzMzQ0LCAxMDgxMiwgNzg4NTEsIDEyNjU3NCwgCisgICAgODMzNDIsIDMwNzgsIDE0MDIsIDAsIDgzMzQ4LCAwLCAxMjUwNzIsIDc0MzcxLCAzOTQsIDMwODgsIDgzMzQ3LCA5MjE3MiwgCiAgICAgOTE3OTY1LCAzOTkxLCA2NDM5MSwgODMzNDEsIDEyODUyNCwgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAKLSAgICAxMjc1MzQsIDY2OTAzLCAxMjg0NjgsIDQyMjMxLCAyMjA5LCAxMjUxMDMsIDAsIDAsIDQxODQwLCA2NjkxMywgMjM3NywgCisgICAgMTI1MTI4LCA2NjkwMywgMTI4NDY4LCA0MjIzMSwgMjIwOSwgMTI1MTAzLCAwLCAwLCA0MTg0MCwgNjY5MTMsIDIzNzcsIAogICAgIDEyOTgsIDY0MDExLCAxMjU3MiwgMTEzMTgsIDEyNTU3LCAxMjU1OSwgMTI1NzAsIDc0NzksIDEwMDMsIDIzNzMsIDk0NDYsIAotICAgIDc0ODEsIDk0NDgsIDQ4LCA5ODMwODQsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCi0gICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMTI5MTM1LCAKKyAgICA3NDgxLCA5NDQ4LCA0OCwgNzgwMjksIDk0ODAsIDQ4MSwgMTAwNjE1LCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCAKKyAgICA5NDQzLCA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAxMjkxMzUsIAogICAgIDkyOTM0LCA5NDI0LCA5NDI1LCA5NDI2LCA5NDI3LCA5NDI4LCA5NDI5LCA2NDc1OCwgMjM2MiwgOTY1NSwgMTI4MDUwLCAKICAgICAyMDA0LCA5MDk2LCA5NzgyLCA3MDg0MiwgOTE3MiwgODMwNzEsIDE5OTY1LCAwLCA1OTU1LCA2NzY2NiwgMTEwOCwgMCwgCi0gICAgNzQ3NzMsIDc4MjcxLCAxMjg5MDksIDY0NzgyLCAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDAsIDkyMTY1LCAxMzkyLCAKLSAgICA5ODM4MTcsIDEyMDgzOCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDEyNzIzOCwgCi0gICAgMTI4NzM5LCA2NDUyNCwgOTI0MTgsIDQwMTksIDAsIDEyNTA4MiwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAxMTk5NjMsIAotICAgIDEyMTA2NywgMTI4NDMwLCAxMjA5MzksIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAxMDY5NywgMzE2OSwgNDIyOTcsIAotICAgIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMTI4ODQ4LCAxMjgxMzksIDk4MzI2MywgNjg2NzgsIDc0OTg2LCA5ODM3OTAsIAotICAgIDEwNDksIDQzNTE3LCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKLSAgICAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgMzYsIDAsIAotICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDEyMTM4OSwgMjAwOSwgMCwgMTI3OTg1LCA3NDI0NSwgCi0gICAgOTY0MCwgMTE5OTUxLCAwLCA2OTg5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMTI5MDg4LCAKLSAgICAxODIsIDY2NDE0LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIAotICAgIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgCi0gICAgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDEyNDk3NywgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIAotICAgIDExMzgxMSwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMTI1MDU4LCA2NTUwNiwgOTgzOTEyLCA2NTg2MSwgNzQwODMsIDY2ODcyLCAKLSAgICA5OTMyLCA0MzUxNiwgODMwNjMsIDgzMDY1LCA4MzA2NCwgOTgxNywgMCwgNzEyMzQsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgCi0gICAgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDEyODU0NywgMTE5OTU0LCAxMTM2ODUsIDEyODk3LCAzNzkyLCAyMDExLCAKLSAgICAxMjE0MTgsIDYwNjUsIDQzMTYwLCAxMjgzNzksIDEyMDU5NSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIAotICAgIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIDc4MDAyLCAxMjAwMzUsIDc1MTMsIDE4NjMsIDQ3MTAsIAotICAgIDAsIDU5NTYsIDc2MjEsIDc4MDA1LCA5MjYyNCwgNDcwNSwgNzE2LCA3NDkxOCwgMCwgNDcwNCwgMTIwMDQwLCA5MzAyNCwgCi0gICAgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgNzQwNzcsIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIAotICAgIDExOTA2NSwgNDMyOTMsIDY4NzcxLCA5ODMxOTAsIDExOTE2NCwgMTIwMzI4LCA4MzMxOSwgMTAxODcsIDE3MDAsIDExOTIyMywgCi0gICAgODMzMTUsIDAsIDc0OTgwLCA0MDA0LCA5MTc1OTUsIDEwOTY4LCA0MzI5NiwgMTI4MzMxLCA4NTA2LCAxMTM3NDQsIAotICAgIDE5NDgxMiwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAxMjEzNTAsIDc4MjE4LCA5ODMxMDksIAotICAgIDc0NjMsIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgNzQ4ODcsIDcwNDk0LCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCAKLSAgICAxMjg2MjMsIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgOTI1NDgsIDAsIDQyNTI3LCAxMjkxMSwgCi0gICAgNDM0MjcsIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAKLSAgICAxMjA0MTYsIDI2NzQsIDEzMjM4LCAxMTkyMiwgMCwgOTI1MjksIDM1MTAsIDEzMjM0LCA5ODM4MzIsIDEyMDQwNywgNTYwNSwgCisgICAgNzQ3NzMsIDc4MjcxLCAxMjg5MDksIDY0NzgyLCAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDEyOTM2NSwgODMwNjIsIAorICAgIDEzOTIsIDEyNzc4MiwgMTIwNjk2LCAxMjczNjQsIDEwNjA2LCA4MDY1LCA3MDcxMCwgMTAzNTMsIDEwNDE3LCAxMDA2MTMsIAorICAgIDEyNTAyMywgNjQ1MjQsIDcwNzExLCA0MDE5LCAxMDA5NTAsIDEyNTA4MiwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAKKyAgICAxMDA5NDksIDEyMTA2NywgMTAwOTQ0LCAxMjA5MzksIDQyNDEwLCA3NDQ0OCwgMTAxMDg1LCA2MDU0LCAxMDY5NywgMzE2OSwgCisgICAgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMTI4MjMxLCAxMjgxMzksIDk4MzI2MywgNjg2NzgsIDc0OTg2LCAKKyAgICA5ODM3OTAsIDEwNDksIDQzNTE3LCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIAorICAgIDY0NzYwLCAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgCisgICAgMzYsIDAsIDUxNTMsIDQxODA1LCAxMTkxNTMsIDczNzM1LCA3NjMsIDkyMTEsIDY0OTEwLCAxMjEzODksIDIwMDksIDAsIAorICAgIDEyNzk4NSwgNzQyNDUsIDk2NDAsIDExOTk1MSwgMTI3MzE2LCA2OTg5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgCisgICAgOTgzMDUwLCA2NDM2MSwgMTI5MDg4LCAxODIsIDY2NDE0LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIAorICAgIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgCisgICAgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDEyNDk3NywgNDIyNTEsIAorICAgIDk4Mzk2MywgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgMTEzODExLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAxMDEwOTIsIAorICAgIDY1NTA2LCAxMTkyNDgsIDY1ODYxLCA3NDA4MywgNjY4NzIsIDk5MzIsIDQzNTE2LCA4MzA2MywgODMwNjUsIDgzMDY0LCAKKyAgICA5ODE3LCAxMDA5MzcsIDcxMjM0LCA3MDc0OSwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIDkwNjMsIAorICAgIDEyNzA0NSwgMTI4NTQ3LCAxMTk5NTQsIDExMzY4NSwgMTI4OTcsIDM3OTIsIDIwMTEsIDEyMTQxOCwgNjA2NSwgNDMxNjAsIAorICAgIDEyODM3OSwgMTIwNTk1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgNDExODcsIDExNjU5LCA3OTIyLCAKKyAgICAxMjYxNCwgMjAwNSwgODUyMywgNzI4NTIsIDEyMDAzNSwgNzUxMywgMTg2MywgNDcxMCwgMTIwMDMwLCA1OTU2LCA3NjIxLCAKKyAgICA3ODAwNSwgOTI2MjQsIDQ3MDUsIDcxNiwgNzQ5MTgsIDk4MzQ1MywgNDcwNCwgMTIwMDQwLCA5MzAyNCwgNDIyNDEsIDE2MSwgCisgICAgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgNzQwNzcsIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIDExOTA2NSwgCisgICAgNDMyOTMsIDY4NzcxLCAxOTUwMzAsIDExOTE2NCwgMTAwNzcwLCA4MzMxOSwgMTAxODcsIDE3MDAsIDExOTIyMywgODMzMTUsIAorICAgIDAsIDc0OTgwLCA0MDA0LCA5MTc1OTUsIDEwOTY4LCA0MzI5NiwgNzI4MjMsIDg1MDYsIDExMzc0NCwgMTk0ODEyLCAKKyAgICAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDEyMTM1MCwgNzgyMTgsIDk4MzEwOSwgNzQ2MywgNDcyOSwgCisgICAgOTgzMzkzLCAyMzUsIDEzODQsIDQ3MjgsIDc0ODg3LCA3MDQ5NCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgMTI4NjIzLCAKKyAgICA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDkyNTQ4LCAwLCA0MjUyNywgMTI5MTEsIDQzNDI3LCAKKyAgICAxMzgzLCA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgMTIwNDE2LCAKKyAgICAyNjc0LCAxMzIzOCwgMTE5MjIsIDEyODQwOSwgOTI1MjksIDM1MTAsIDEzMjM0LCAxMjkzNjgsIDEyMDQwNywgNTYwNSwgCiAgICAgNDIwOTUsIDExMzY0LCA5MjI4NiwgMTM4MCwgNjU2MTcsIDExMTYyLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAKICAgICA2NzcwOCwgOTQ5NSwgMTE5MzQ2LCAxMjcxNTQsIDU5NTksIDY3OTg0LCA3Mzk3NiwgNjYyNzUsIDQzMzcxLCA2OTQxLCAKICAgICAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgODI5NTIsIDQ3NzksIAogICAgIDk4MzkyMiwgMzcxOSwgNDAwNiwgOTgzNTY5LCAxOTk1NywgNzExODYsIDIwMjEsIDExOTMzMiwgNDM4NzcsIDgzMTQwLCAKICAgICA0MzAyOCwgNjU0OTMsIDQxODM4LCAzODc1LCA1OTYyLCA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCAKLSAgICA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIAotICAgIDEyODc1MywgOTgzOTU4LCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA5ODM3OTQsIDk3NDIsIDUyMSwgMCwgMTA4MDAsIAotICAgIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgMCwgMCwgMTE5MDE4LCAxMDU5OSwgCi0gICAgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCA2NzI2MSwgMTAwNzQsIDc4NTQ4LCAKLSAgICA5Mzk5OSwgMzc2OSwgMCwgMCwgMTI4NzAzLCA5ODMxMDcsIDk1NzMsIDkxNzk5OCwgNjUyOTAsIDg4NDksIDExOTI1NCwgCi0gICAgNjU4NTUsIDY1MTEyLCAxNzk2LCA3MTA0NiwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCA4MzEzNSwgNzM4OCwgCi0gICAgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCA5MjIwMywgOTI5MTUsIDEyNjYxLCA3NjA4LCAKLSAgICAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgCi0gICAgMTM5MCwgNzAxODQsIDE5NDcwNCwgNDIxLCA0MzUzNiwgNTg0NiwgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCAKLSAgICA3NjAwLCA3NDQwMCwgNjYwMzUsIDE5NTA5MSwgMCwgNjU4NTEsIDQyNjA3LCAxMjQ5NTUsIDkyNDAzLCAzMTY4LCA2NzczMywgCi0gICAgNDIxMzQsIDExODMxLCAyMzcwLCAyODQ2LCA5MjYwNSwgMTI4MDg0LCAwLCAxMjAxMzIsIDEyNzc0NSwgMTgzNiwgMCwgCi0gICAgMTIxMjA3LCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIDY1Mzc0LCAxMjA0NTEsIDIzOTAsIDM5NDQsIDY2NjI4LCAKLSAgICAxMTkwMDYsIDAsIDYxMzUsIDMxMTgsIDc0MjY1LCAxMTkwOTMsIDgzMzEwLCA3Nzk3NSwgMCwgODEyNywgODk3NSwgNjQ3MzksIAotICAgIDc5NDMsIDEyNDk2OCwgMTE5MjM0LCAxMDYxOCwgMjU4NCwgMCwgMCwgMTI4MjI1LCA5OTk4LCAxMjA1NzMsIDgzMzA2LCAwLCAKLSAgICAxMjc3NTAsIDQzNTA4LCA2MjA0LCAxMjcwNDQsIDEyMTM3NCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAKLSAgICAxMjAxMzAsIDQyNjcsIDE2MzEsIDQyMjA2LCA3Nzk4MywgMTI4MDE1LCAxOTUwNDYsIDY1NzAwLCA2NjM4NiwgMCwgNjQ2NDUsIAotICAgIDAsIDkyODg3LCAxMjY1ODgsIDEyNTg2LCAwLCA5MjQyLCAxMjAxMDAsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCAKLSAgICA5ODM3OTcsIDc3OTMsIDc4Mjc1LCA5MzI4LCAxMTkxMDQsIDc4MzkzLCAxMjYwNCwgOTI4ODUsIDY2MTUsIDIyODUsIAotICAgIDkyMzQ0LCAzOTg2LCA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDkyMjQ3LCA5ODMzNjAsIDk1NDEsIDc4Mjc2LCAKLSAgICAxMTM2NjksIDExMjc1LCA4NTQwLCAxMTQ5OCwgMTIwODY4LCA5ODMzNTksIDQxMDQwLCAyNDU5LCAxMjczMDIsIDEzMDYwLCAKLSAgICA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgNzc5MzEsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIAotICAgIDM3NjUsIDkyODgxLCA5MTc2MTIsIDE2MDYsIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMjgwNDAsIDk4MzA2MSwgCi0gICAgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgMTIwMzM3LCA3NDk4MywgMTE5MjMsIDQwMjMsIDY4Mzk5LCA1NzYzLCAKLSAgICA5NDAxNSwgNDgyNywgMTA4OTQsIDEyODEwLCA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIAotICAgIDY2NjYwLCAyNDk5LCA2NzE2NywgNjcxNjYsIDExODgzNywgMTE5NzMsIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCAKLSAgICA0Mjc1OCwgMTIxOTYsIDQyODM3LCA0MjIyNiwgMTE5MzE5LCAxMjc5OTIsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgCi0gICAgMzEyMCwgOTc5NywgMCwgMCwgMTEwODYsIDEwMzg5LCAxMjY0ODUsIDEyODc4NCwgNDg5NSwgNjUzNTgsIDEyNDk0MSwgCi0gICAgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDEyMTE2MCwgOTgzMTA2LCAKLSAgICA3MDA0LCAxMTM2NjcsIDY1ODgwLCAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDk4Mzg2MywgOTM5OTYsIDIzNzYsIAotICAgIDc4ODQxLCA4MzQwMiwgMCwgNTE5NywgNzA4MzksIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDExOTYwNCwgCi0gICAgNzA4MzcsIDEyMDA0NSwgMCwgMTI4NTU0LCAwLCA5MTc4NDYsIDAsIDAsIDAsIDc0MTg4LCA3MTM0MiwgNzg0NTUsIDc1MDQ4LCAKLSAgICAxMTM2NzUsIDc0OTAwLCAxMjAwNDYsIDEyNzU0MiwgMTIwMDQ5LCA5ODMzNjYsIDE4NDcsIDEyMDk3OCwgMTAzMzksIAotICAgIDk4MzM2NywgNDIzODQsIDEyMTM3OSwgNDIyNywgNzQxNTgsIDAsIDc0NDk4LCA0MzAzMiwgMTIxMTI0LCA0MjM2NSwgMCwgCi0gICAgMTI2NzEsIDExMzg0LCAxMjAwNTksIDc0MjY0LCAxMjAwNTgsIDY0Nzk3LCA5ODMzNDcsIDU4MjAsIDk4MzM0NiwgMTIwMDUyLCAKKyAgICA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCA3Mjg3OSwgCisgICAgMTI4NzUzLCA5ODM5NTgsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDgzMTM4LCA5NzQyLCA1MjEsIDk4MzkxMSwgCisgICAgMTA4MDAsIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgOTgzOTA4LCA2NDA0MSwgCisgICAgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCAKKyAgICA2NzI2MSwgMTAwNzQsIDc4NTQ4LCA5Mzk5OSwgMzc2OSwgMTI3OTU4LCAwLCAxMjg3MDMsIDk4MzEwNywgOTU3MywgCisgICAgOTE3OTk4LCA2NTI5MCwgODg0OSwgMTE5MjU0LCA2NTg1NSwgNjUxMTIsIDE3OTYsIDcxMDQ2LCA5ODM0MjgsIDY5NjY1LCAKKyAgICA4MTY0LCA0MTMwMSwgMzUwMiwgODMxMzUsIDczODgsIDEwNjIxLCA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgCisgICAgNzI3NDksIDkyOTE1LCAxMjY2MSwgNzYwOCwgMTAzNTQsIDEwNDE4LCA0MjQxMSwgMjAyMiwgOTgzNDI5LCAxNDA5LCAKKyAgICAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgMTM5MCwgNzAxODQsIDc4NTE1LCA0MjEsIDQzNTM2LCA1ODQ2LCAKKyAgICAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIDc0NDAwLCA2NjAzNSwgMTk0Nzk5LCAwLCA2NTg1MSwgCisgICAgNDI2MDcsIDEyNDk1NSwgOTI0MDMsIDMxNjgsIDY3NzMzLCA0MjEzNCwgMTE4MzEsIDIzNzAsIDI4NDYsIDkyNjA1LCAKKyAgICAxMjgwODQsIDAsIDEyMDEzMiwgMTI3NzQ1LCAxODM2LCAwLCAxMDA3ODIsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgCisgICAgNjUzNzQsIDEwMDc4NSwgMjM5MCwgMzk0NCwgNjY2MjgsIDExOTAwNiwgOTgzOTE2LCA2MTM1LCAzMTE4LCA3NDI2NSwgCisgICAgMTE5MDkzLCA4MzMxMCwgNzc5NzUsIDk4Mzg4OSwgODEyNywgODk3NSwgNjQ3MzksIDc5NDMsIDEyNDk2OCwgMTE5MjM0LCAKKyAgICAxMDYxOCwgMjU4NCwgMCwgMCwgMTI4MjI1LCA5OTk4LCAxMjA1NzMsIDgzMzA2LCAwLCAxMjc3NTAsIDQzNTA4LCA2MjA0LCAKKyAgICAxMjcwNDQsIDEyMTM3NCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAxMjAxMzAsIDQyNjcsIDE2MzEsIAorICAgIDQyMjA2LCA3Nzk4MywgMTI4MDE1LCAxOTQ3NTMsIDY1NzAwLCA2NjM4NiwgMCwgNjQ2NDUsIDAsIDkyODg3LCAxMTkxNTQsIAorICAgIDEyNTg2LCAwLCA5MjQyLCAxMjAxMDAsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCA5ODM3OTcsIDc3OTMsIDc4Mjc1LCAKKyAgICA5MzI4LCAxMTkxMDQsIDcwNjg1LCAxMjYwNCwgOTI4ODUsIDY2MTUsIDIyODUsIDY2Nzk2LCAzOTg2LCA0NDAyNSwgMCwgCisgICAgODkxMiwgNjQ1NTUsIDc0MDksIDkyMjQ3LCA5ODMxOTAsIDk1NDEsIDc4Mjc2LCAxMTM2NjksIDExMjc1LCA4NTQwLCAKKyAgICAxMTQ5OCwgMTIwODY4LCAxMjg1NDAsIDQxMDQwLCAyNDU5LCAxMjczMDIsIDEyNTU4LCA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgCisgICAgMCwgNzc5MzEsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDkyODgxLCA5MTc2MTIsIAorICAgIDE2MDYsIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMDA3MTgsIDk4MzA2MSwgMTE5NjEzLCA5ODM5MzgsIDE5NDc1NiwgCisgICAgNDMxMiwgNzQwOTEsIDEyMDMzNywgNzQ5ODMsIDExOTIzLCA0MDIzLCA2ODM5OSwgNTc2MywgOTQwMTUsIDQ4MjcsIDEwODk0LCAKKyAgICAxMjgxMCwgNjQ0MDYsIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgNjcxNjcsIAorICAgIDY3MTY2LCAxMTg4MzcsIDExOTczLCAxMzA4OSwgNDI5MywgMTIwMzI5LCA0MjIyNCwgNDI3NTgsIDEyMTk2LCA0MjgzNywgCisgICAgNDIyMjYsIDExOTMxOSwgMTI3OTkyLCAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIDMxMjAsIDk3OTcsIDAsIDAsIAorICAgIDExMDg2LCAxMDM4OSwgMTI2NDg1LCAxMjg3ODQsIDQ4OTUsIDY1MzU4LCAxMjQ5NDEsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgCisgICAgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTAwNzc1LCAxMjExNjAsIDk4MzEwNiwgNzAwNCwgMTEzNjY3LCA2NTg4MCwgCisgICAgMTI2NTE0LCAxMTkwNDgsIDIzODAsIDExMzgwLCA5ODM4NjMsIDkzOTk2LCAyMzc2LCA3ODg0MSwgODM0MDIsIDk4MzI1NiwgCisgICAgNTE5NywgNzA4MzksIDEyMDI0OCwgMTI3MDQ4LCAyMzY2LCAxMDA3MTMsIDExOTYwNCwgNzA4MzcsIDEyMDA0NSwgMCwgCisgICAgMTI4NTU0LCAwLCA5MTc4NDYsIDEwMDcxNSwgMCwgMCwgNzQxODgsIDcxMzQyLCA3ODQ1NSwgNzUwNDgsIDExMzY3NSwgCisgICAgNzQ5MDAsIDEyMDA0NiwgMTI3NTQyLCAxMjAwNDksIDEwMDc3NCwgMTg0NywgMTIwOTc4LCAxMDMzOSwgMTAwNzcyLCAKKyAgICA0MjM4NCwgMTIxMzc5LCA0MjI3LCA3NDE1OCwgMCwgNzQ0OTgsIDQzMDMyLCAxMDA5MjYsIDQyMzY1LCAxOTQ4MzMsIAorICAgIDEyNjcxLCAxMTM4NCwgMTIwMDU5LCA3NDI2NCwgMTIwMDU4LCA2NDc5NywgOTgzMzQ3LCA1ODIwLCAxMjgwMTgsIDEyMDA1MiwgCiAgICAgMTIwMDY1LCAxMjg4MjUsIDEyMDA2NCwgMTIwMDUzLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIDEyMDA2MywgMTIxMjg2LCAKICAgICA3Mzc3LCAxMjAwNTEsIDQxNzk5LCA2NTUzMCwgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAxMjExMzIsIAotICAgIDY4NjYwLCAwLCAxMDg1MywgOTI2LCA5ODMzNzEsIDc0MTg0LCAxMjA5MTUsIDEyMDA1NSwgMTE5MzAxLCA0MzE3NSwgMCwgCi0gICAgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgMTE5NjA1LCA1MjAsIDQyMDAsIAotICAgIDEyNjk5LCA4MzMxLCA3MDExOCwgMzA5MSwgNDEwMzQsIDY2Mjk4LCA3MDI5MywgODM2MCwgOTgzNDQ1LCA3ODA0NCwgMzIxLCAKLSAgICA0MjI5LCA2NDU0MywgMTI4NDcwLCA2NTU2MywgMTk0ODczLCA5MTc5NzQsIDI4NjEsIDQzNzkzLCAxMDA5NSwgMTIxNDI4LCAKLSAgICA5MTk1LCA5MjM4NiwgMTg2MSwgMCwgNzM3MzMsIDkxNzc4MCwgNjg4MzksIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAKLSAgICAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIDcwNzkzLCA3Mzg2NywgMTI5NzMsIDc1MDE0LCA3NDc1NywgMTI3NTE0LCAKLSAgICA0MTY1OCwgMTI4Mzc2LCAxMjEyMzUsIDU3NjAsIDExMzY5OSwgNzQzLCA0NDE0LCAxMjA3NjYsIDAsIDQyNjMyLCAxMjcyMzYsIAotICAgIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAwLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCA0MzM0MSwgMCwgMTk5MTksIDcwMjc4LCAKLSAgICA2NDUzMiwgNjUzNjcsIDQzNzEwLCAxMTE5OSwgMTI1MDc3LCAzNTEzLCA3MTExNSwgNzAzNDEsIDQzMzQyLCAxMTkwNjQsIAotICAgIDY1NTI5LCA2NTM2NCwgODMyMDgsIDgzMTcwLCA2NDg1LCAxMzk3LCAxOTQ3ODEsIDQxOTg2LCA5MjY3OCwgODMyMDQsIAotICAgIDgzMjEyLCA3NDA5NywgODMyMTMsIDc0NzEsIDEyMDc5LCA2Nzk5NywgNjg0MywgNDMyODcsIDkyMzE3LCAwLCA2NzQwNiwgCi0gICAgMTIwMjM5LCAxOTQ2NzgsIDcxOTE0LCAxMDk5LCAxMDQ5MCwgODMyMDEsIDEwNTAxLCA2NTE4MSwgNzQ0NjMsIDEyODk1MiwgCi0gICAgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgMTk0NjA5LCA2NTY3OSwgNjQ1NzMsIDY0ODk3LCA0MjMsIAotICAgIDE4MTgsIDY1MTQ0LCA4Mjk2MywgODI3MiwgMTI3ODEyLCAxOTkxMSwgNDIxOCwgMzA4NywgNjQ5NjAsIDEyMTQ0NywgCi0gICAgNDM1NjQsIDAsIDk4MzE4MiwgOTU4NCwgMTA0NjUsIDk4MzkwMiwgNzQzNTksIDEyNjI2LCA5MTA2LCAwLCA0MjY0MiwgCi0gICAgNzEyMzUsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMTk0NzMwLCAxMjgzMzMsIDI2NSwgNDE3OTUsIDY0NjY2LCA3NDYyOCwgCi0gICAgNDM1MzAsIDI3NTIsIDEyNzM2NSwgMTI4NDU5LCAxMjY0ODIsIDU5LCA5ODM2NzEsIDEyMTQxMCwgMTExNDksIDc4MDc0LCAKLSAgICA3Nzg3MywgNDE4MTAsIDgzMTYyLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIDExOTM2NCwgNTg3NywgNDIyNTIsIDQyMjEzLCAKLSAgICA4MDA5LCAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNDM4NDgsIDEzMTI3LCAxMjAwNjcsIDk4Mzk0NiwgNzQzOTcsIAotICAgIDEyMDIzNSwgMTI4NjQxLCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCA3NTAxNywgMjEwMywgMTAzODcsIDQ0NTMsIAotICAgIDQzMjc2LCA5MTc3ODMsIDExMTY5LCAxMjg5MzksIDY0ODEsIDQxMjEzLCAwLCAwLCAxMjkxMzMsIDExOTkyOSwgNDE5ODMsIAotICAgIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDkyOTk1LCA0NjIsIDY4MTEwLCAxMDQ5MywgMTIxNDQ5LCA4MTI5LCA5Mjk5NCwgCi0gICAgMTI4MzY1LCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIAotICAgIDExOTAxMywgNDMzNDAsIDExMTIzLCA0MTAzMywgNjQ5MywgNDI2MjYsIDAsIDEyOTA1MSwgMTE0MjYsIDc3ODg3LCAxNjgxLCAKLSAgICAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgMCwgNDE4NDEsIDQzMzM4LCAwLCAKLSAgICAxMTkzMjMsIDU3MjYsIDY0OTE1LCA0MjE3NSwgOTgzOTEzLCAwLCA0MTQ5NywgNjUwNDQsIDEyMDEwOSwgMjg1MSwgNDMwMTcsIAotICAgIDk4MzU4OSwgMTIwODk2LCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAwLCA2NTM2MCwgCi0gICAgOTE3NTg5LCA5MjM2NSwgMTI4MjAyLCA2NDkyMiwgMCwgODE5MCwgMTIwODMsIDAsIDgzMTQxLCA2NTA2LCA2NDMxMiwgCi0gICAgNzQzNzQsIDIzNjgsIDk4MzE4NywgNDQxOSwgMTIxMjU5LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEyMDEwNiwgCi0gICAgODg5MSwgMzA4MCwgMTIwMjI4LCAyMzQ3LCA1NDMwLCAxMjAxMDcsIDg5OTAsIDI4NDgsIDkyOTgxLCAxMjEzNzIsIDczOTQyLCAKLSAgICAyNDksIDAsIDAsIDAsIDEyMDY1OCwgMTE5MzI0LCAxMjg3MTIsIDg4ODMsIDExOTg2MCwgNzI4LCAxMTE3MywgOTk1LCAwLCAKLSAgICAxMjEwNDcsIDY0ODI2LCAxMjQ5MzEsIDkxNzc5OCwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAwLCAxMjI3MywgCi0gICAgMTk0ODE0LCA2NzcxNCwgMTIxMTIsIDY3MjcyLCA2NzI2NSwgNjcyNzMsIDY3Mjc0LCAxMjMzNSwgMTIwMTA0LCA2ODAxOSwgCi0gICAgMzQ0MywgMzEyOSwgNjcyNjcsIDIxMDIsIDY1NDQ1LCA3ODI1OCwgNjQ4OTEsIDAsIDc3MjUsIDY1MTA4LCAxMTEyMCwgCi0gICAgOTIwNSwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMTI4NTE5LCA0MTg5NCwgMCwgNjI3NywgNDE2NzIsIDQxODkzLCAKLSAgICAxMDAxMCwgMTI3MzgxLCAzNTQwLCAxMjE0NTAsIDgzNSwgNzEzNDAsIDY5ODE2LCAxMTk4NTQsIDc0NDA4LCAwLCA2NzEwOCwgCi0gICAgNTQyNiwgNDI1OCwgODMxODgsIDEyMDg1OCwgNTQyNCwgOTIzMDYsIDgyODMsIDEyNzk3OCwgNTQzNCwgODMxOTYsIAotICAgIDEyOTAyNywgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMTI4MzMwLCAxNDA0LCAzMDk1LCAxMTQzMiwgMTIxMTIyLCAzNDY0LCAKLSAgICA2NDg2LCA0ODE5LCAxMjgyMzMsIDEyOTEyMywgNTcwLCA4MDk1LCAzNjcyLCAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAKLSAgICAxMjg1MzksIDQzMSwgNjc4MjAsIDAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgOTgzNjYzLCAxMzA5NiwgMTI4NjQzLCAKLSAgICAxMjEwMTgsIDQzNDA4LCA5NTE2LCAxMjg1MzgsIDUyNjgsIDQyMjMwLCA0MjIyMCwgMCwgNDQ1MCwgMTIwNTExLCAxMTU0NywgCi0gICAgNDM0MTcsIDEyODU0MiwgMzU2LCAzNDc3LCAyMjcsIDEwNDg4LCA2ODIwMywgMzgyLCAxMTQxOCwgMCwgNTg3OCwgOTgzNzk5LCAKLSAgICAwLCAwLCAwLCA2NDg0LCAyNTQxLCA2NjAzOSwgMTEzNzc3LCA3ODE1NywgOTI3MjMsIDM1NDksIDE5NTA2NywgOTExMCwgCi0gICAgMTE5NjY1LCAyNzQzLCAwLCA0MzI5MCwgMTI4NTg1LCA5MDk3LCAxOTUwMjYsIDQzMDE1LCA4NzgyLCAwLCA3NzYsIDI1MjQsIAotICAgIDQyNzA3LCA4NTczLCAxMjA5MDMsIDEyNjQ5NCwgMCwgNzExMDIsIDQyNjk0LCA2NDk0NCwgODk1MiwgMzg1NiwgMTE4ODE4LCAKLSAgICAxMjUxMTEsIDU4NzIsIDY0OTUsIDEyOTEyNSwgMCwgMCwgOTI1NDMsIDY3MTczLCA2NzE3MiwgMTI4NDksIDM5NTMsIDE4OTcsIAotICAgIDkzMDcxLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDExOTA4NywgNjg0NzMsIAotICAgIDc0MTA0LCA1MjI4LCAxMTk4MzUsIDc4NjgsIDQzMTg0LCAwLCAxMjA5NTUsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIAotICAgIDkxNzU1MywgMTE2MiwgNzQ5OTUsIDI2NzEsIDEyODU2NywgMTI3MTk4LCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgCi0gICAgNzM4MTEsIDk4MzU3MywgMTk1MDA1LCAxMTg5MjgsIDY4MDg1LCAxOTkyMSwgNzM4MjEsIDExNDI0LCAxOTUwMDIsIDQ1NjcsIAotICAgIDQxODkxLCAwLCA5ODM3ODgsIDU1MjQ5LCA0ODIwLCA2NTIzOSwgMTk0NjYyLCAwLCAxOTQ2NjUsIDQzMDQyLCAxMTkyMTIsIAotICAgIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgNzAyNzIsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgCi0gICAgMTk0OTQxLCA0MzI4MiwgODgzMywgNjk5OTgsIDAsIDY1MDQsIDc4NDA4LCAxMjExNjYsIDEwNzE5LCA3MDI3NSwgMTg5OCwgCi0gICAgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDEyMTEzOCwgODMwOTcsIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgCi0gICAgOTE2OSwgODM4LCA2ODgxOSwgNjg4MDcsIDg0NCwgNTAxNCwgNjYyOTcsIDI1NiwgNjg4MTgsIDk5OTAsIDEyODM5OCwgCi0gICAgNDI3MzksIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDgzMjI0LCA2NDg5LCAxMDA0OCwgNzQzMjYsIDc4NzE5LCAKLSAgICA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTIxMzE0LCA4MzIyNiwgNDEwOTQsIDAsIDc3OTU4LCAxOTQ4OTMsIAotICAgIDc4NDAzLCA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDEyMDk0MiwgNjcwOTUsIDEyMDQ5MSwgMTE4MTYsIDY4ODQ2LCAKLSAgICA1NzMzLCAyOTMwLCA3MDI3NCwgMTI3MTc5LCA0MTA5OCwgOTI3NzEsIDQxMDkzLCA2ODgzNCwgNjY2MjYsIDU4OCwgOTc2MCwgCi0gICAgMTI1MDk5LCAxOTQ3MTcsIDEyMzgsIDIwMCwgOTgzMjA3LCAxNjYwLCA3MzkxNiwgMCwgNjcxNDEsIDc0MzYyLCAwLCAKLSAgICA5MjQ4NSwgMTI0OTMwLCAwLCA3NDk5OSwgMzM5NCwgMTk0ODk0LCAxMjA2NjgsIDAsIDY5OTk2LCAxMjczNTgsIDY2MjE5LCAKKyAgICA2ODY2MCwgMCwgMTA4NTMsIDkyNiwgOTgzMjk2LCA3NDE4NCwgMTIwOTE1LCAxMjAwNTUsIDExOTMwMSwgNDMxNzUsIAorICAgIDEyNzEwMywgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDEwMDQ5OCwgMTE5NjA1LCA1MjAsIAorICAgIDQyMDAsIDEyNjk5LCA4MzMxLCA3MDExOCwgMzA5MSwgNDEwMzQsIDY2Mjk4LCA3MDI5MywgODM2MCwgOTgzNDQ1LCA3ODA0NCwgCisgICAgMzIxLCA0MjI5LCA2NDU0MywgMTI4NDcwLCA2NTU2MywgMTAwNzY0LCAxMjkzMTAsIDI4NjEsIDQzNzkzLCAxMDA5NSwgCisgICAgMTIxNDI4LCA5MTk1LCA3Mjc2NywgMTg2MSwgOTgzMDU2LCA3MzczMywgOTE3NzgwLCA2ODgzOSwgNDMwNDEsIDAsIDQzNzk0LCAKKyAgICAxMDA3NjksIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgNzA3OTMsIDczODY3LCAxMjk3MywgNzUwMTQsIDc0NzU3LCAKKyAgICAxMjc1MTQsIDQxNjU4LCAxMjgzNzYsIDEyMTIzNSwgNTc2MCwgMTEzNjk5LCA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIAorICAgIDEyNzIzNiwgNjUxNjEsIDczODk2LCAxMjg1ODksIDEwMDU5MywgMTQwNSwgMTE5MDYzLCA0MzIyMCwgNDMzNDEsIDE5NDc5MiwgCisgICAgMTk5MTksIDcwMjc4LCA2NDUzMiwgNjUzNjcsIDQzNzEwLCAxMTE5OSwgMTIxNDAwLCAzNTEzLCA3MTExNSwgNzAzNDEsIAorICAgIDQzMzQyLCAxMTkwNjQsIDY1NTI5LCA2NTM2NCwgODMyMDgsIDgzMTcwLCA2NDg1LCAxMzk3LCAxOTQ3ODEsIDQxOTg2LCAKKyAgICA5MjY3OCwgODMyMDQsIDgzMjEyLCA3NDA5NywgODMyMTMsIDc0NzEsIDEyMDc5LCA2Nzk5NywgNjg0MywgNDMyODcsIAorICAgIDkyMzE3LCAwLCA2NzQwNiwgMTIwMjM5LCAxOTQ2NzgsIDcxOTE0LCAxMDk5LCAxMDQ5MCwgODMyMDEsIDEwNTAxLCA2NTE4MSwgCisgICAgNzQ0NjMsIDEyODk1MiwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgMTk0NjA5LCA2NTY3OSwgCisgICAgNjQ1NzMsIDY0ODk3LCA0MjMsIDE4MTgsIDY1MTQ0LCA4Mjk2MywgODI3MiwgMTIxMjAzLCAxOTkxMSwgNDIxOCwgMzA4NywgCisgICAgNjQ5NjAsIDEyMTQ0NywgNDM1NjQsIDk4Mzc0OSwgOTgzMTgyLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIAorICAgIDkxMDYsIDk4MzA2NCwgNDI2NDIsIDcxMjM1LCA2NDc1MCwgOTM5MCwgMTIwNzM3LCA0MTc5NywgMTk0NzMwLCAxMjgzMzMsIAorICAgIDI2NSwgNDE3OTUsIDY0NjY2LCA3NDYyOCwgNDM1MzAsIDI3NTIsIDEyNzM2NSwgMTI4NDU5LCAxMjY0ODIsIDU5LCAKKyAgICA5ODM0MjcsIDEyMTQxMCwgMTExNDksIDc4MDc0LCA3Nzg3MywgNDE4MTAsIDgzMTYyLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIAorICAgIDExOTM2NCwgNTg3NywgNDIyNTIsIDQyMjEzLCA4MDA5LCAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNDM4NDgsIDEzMTI3LCAKKyAgICAxMjAwNjcsIDk4Mzk0NiwgNzQzOTcsIDEyMDIzNSwgMTAwODM1LCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCA3NTAxNywgCisgICAgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIDExMTY5LCAxMjg5MzksIDY0ODEsIDQxMjEzLCAwLCAxMDA4MzksIAorICAgIDEyOTEzMywgMTAwODM4LCA0MTk4MywgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgOTI5OTUsIDQ2MiwgNjgxMTAsIAorICAgIDEwNDkzLCAxMjE0NDksIDgxMjksIDkyOTk0LCAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAKKyAgICAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMTAwNDU3LCAxMTkwMTMsIDQzMzQwLCAxMTEyMywgNDEwMzMsIDY0OTMsIAorICAgIDQyNjI2LCAwLCAxMjkwNTEsIDExNDI2LCA3Nzg4NywgMTY4MSwgMTE4Nzg5LCAxMjA0LCAzNzU1LCA2NDY2MSwgNzIzNSwgCisgICAgMTAxNzAsIDM5NjYsIDg5MTEsIDEwMTAxMywgNDE4NDEsIDQzMzM4LCAxOTQ5NTQsIDEwMDg0OCwgNTcyNiwgNjQ5MTUsIAorICAgIDQyMTc1LCA5ODM5MTMsIDAsIDQxNDk3LCA2NTA0NCwgMTAwODQ0LCAyODUxLCA0MzAxNywgMTAwNDg0LCAxMjA4OTYsIAorICAgIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAxMDEwMTIsIDkyMzY1LCAKKyAgICAxMjA5MzcsIDY0OTIyLCAxMDA0ODYsIDgxOTAsIDEyMDgzLCAwLCA4MzE0MSwgNjUwNiwgNjQzMTIsIDc0Mzc0LCAyMzY4LCAKKyAgICA5ODMxODcsIDQ0MTksIDEyMTI1OSwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMDA0ODgsIDg4OTEsIDMwODAsIAorICAgIDEyMDIyOCwgMjM0NywgNTQzMCwgMTAwNDg3LCA4OTkwLCAyODQ4LCA5Mjk4MSwgMTIxMzcyLCA3Mzk0MiwgMjQ5LCAKKyAgICA5ODMwNDAsIDkxNzg2OSwgOTgzODI1LCA3NDgxNCwgMTE5MzI0LCAxMjg3MTIsIDg4ODMsIDExOTg2MCwgNzI4LCAxMTE3MywgCisgICAgOTk1LCAwLCAxMDA2NTcsIDY0ODI2LCAxMDA2NTYsIDEyOTM3MSwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAKKyAgICAxMjkxMzQsIDEyMjczLCAxMjkxNTYsIDY3NzE0LCAxMjExMiwgNjcyNzIsIDY3MjY1LCA2NzI3MywgNjcyNzQsIDEyMzM1LCAKKyAgICAxMjAxMDQsIDY4MDE5LCAzNDQzLCAzMTI5LCA2NzI2NywgMjEwMiwgNjU0NDUsIDc4MjU4LCA2NDg5MSwgMTk1MDY5LCAKKyAgICA3NzI1LCAxMTg0MywgMTExMjAsIDkyMDUsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDEyODUxOSwgNDE4OTQsIDAsIAorICAgIDYyNzcsIDQxNjcyLCA0MTg5MywgMTAwMTAsIDEyNzM4MSwgMzU0MCwgMTAwODI3LCA4MzUsIDcxMzQwLCA2OTgxNiwgCisgICAgMTE5ODU0LCA3NDQwOCwgMCwgNjcxMDgsIDU0MjYsIDQyNTgsIDgzMTg4LCAxMDA3NTgsIDU0MjQsIDkyMzA2LCA4MjgzLCAKKyAgICAxMjc5NzgsIDU0MzQsIDgzMTk2LCAxMjkwMjcsIDE5OTE3LCAxMTQwOCwgMTI3MzkyLCAxMTk0NywgMTI4MzMwLCAxNDA0LCAKKyAgICAzMDk1LCAxMTQzMiwgMTIxMTIyLCAzNDY0LCA2NDg2LCA0ODE5LCAxMDA3NTksIDEyNzQwNCwgNTcwLCA4MDk1LCAzNjcyLCAKKyAgICAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAxMjg1MzksIDQzMSwgNjc4MjAsIDc4MDgwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIAorICAgIDk4MzQ1OSwgMTMwOTYsIDEyODY0MywgMTIxMDE4LCA0MzQwOCwgOTUxNiwgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIAorICAgIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIDQzNDE3LCAxMjg1NDIsIDM1NiwgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgCisgICAgMTE0MTgsIDEyMDY4MSwgNTg3OCwgOTE3ODYwLCAwLCAwLCAxOTQ4NzcsIDY0ODQsIDI1NDEsIDY2MDM5LCAxMTM3NzcsIAorICAgIDc4MTU3LCA5MjcyMywgMzU0OSwgMTk1MDY3LCA5MTEwLCAxMTk2NjUsIDI3NDMsIDEyMTQzMiwgNDMyOTAsIDEyODU4NSwgCisgICAgOTA5NywgNzQzNzksIDQzMDE1LCA4NzgyLCAwLCA3NzYsIDI1MjQsIDQyNzA3LCA4NTczLCAxMjA5MDMsIDEwMDY2NiwgMCwgCisgICAgNzExMDIsIDQyNjk0LCA2NDk0NCwgODk1MiwgMzg1NiwgMTE4ODE4LCAxMDA2NjIsIDU4NzIsIDY0OTUsIDEyOTEyNSwgCisgICAgMTI3NDY3LCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgMzk1MywgMTg5NywgOTMwNzEsIDY1MDk0LCAxMTk5NCwgCisgICAgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMTI4OTQ2LCAwLCAxMTkwODcsIDY4NDczLCA2Njc3OCwgNTIyOCwgMTE5ODM1LCAKKyAgICA3ODY4LCA0MzE4NCwgMCwgMTIwOTU1LCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCA5MTc1NTMsIDExNjIsIDc0OTk1LCAKKyAgICAyNjcxLCAxMjg1NjcsIDEyNzE5OCwgOTI2MzIsIDkyNjMxLCAxMTg4NjUsIDQ1NTMsIDczODExLCA5MTc5NDcsIDExMzcyMywgCisgICAgMTE4OTI4LCA2ODA4NSwgMTk5MjEsIDczODIxLCAxMTQyNCwgMTk1MDAyLCA0NTY3LCA0MTg5MSwgMTI3MDA0LCA5ODM3ODgsIAorICAgIDU1MjQ5LCA0ODIwLCA2NTIzOSwgMTI5MzM4LCAwLCAxMDEwNDMsIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCAKKyAgICA0MjgyMSwgOTI1MCwgNzAyNzIsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTI4NjExLCA0MzI4MiwgCisgICAgODgzMywgNjk5OTgsIDAsIDY1MDQsIDc4NDA4LCAxMDA2ODgsIDEwNzE5LCA3MDI3NSwgMTg5OCwgMTQxMywgNDI0NDMsIAorICAgIDk4MzM4NywgODAyLCAxMjE0MSwgMTIxMTM4LCA4MzA5NywgNjY0OCwgMTA2NzEsIDI1MjgsIDcyODgwLCA2NDc4OSwgOTE2OSwgCisgICAgODM4LCA2ODgxOSwgNjg4MDcsIDg0NCwgNTAxNCwgNjYyOTcsIDI1NiwgNjg4MTgsIDk5OTAsIDEyODM5OCwgNDI3MzksIAorICAgIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDgzMjI0LCA2NDg5LCAxMDA0OCwgNzQzMjYsIDc4NzE5LCA2NjU3MywgMCwgCisgICAgNzg3MjQsIDc4NzEyLCAxMTc2MSwgNzA2NjUsIDgzMjI2LCA0MTA5NCwgMCwgNzc5NTgsIDExOTkxOCwgNzg0MDMsIDkyNjg5LCAKKyAgICA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTIwOTQyLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgNjg4NDYsIDU3MzMsIDI5MzAsIAorICAgIDcwMjc0LCAxMjcxNzksIDQxMDk4LCA5Mjc3MSwgNDEwOTMsIDY4ODM0LCA2NjYyNiwgNTg4LCA5NzYwLCAxMDA1NjgsIAorICAgIDE5NDcxNywgMTIzOCwgMjAwLCA5ODMyMDcsIDE2NjAsIDczOTE2LCAwLCA2NzE0MSwgNzQzNjIsIDk4Mzc4NCwgOTI0ODUsIAorICAgIDEyNDkzMCwgMCwgNzQ5OTksIDMzOTQsIDcwNzM0LCAxMjA2NjgsIDEwMDQ3NywgNjk5OTYsIDEyNzM1OCwgNjYyMTksIAogICAgIDcyNDI1LCA0MzI4NCwgNjgwNzIsIDc4MTcsIDE4NDEsIDExMDU1LCA2NjgzNSwgMTk0OTc5LCA3NDYwNywgMTY2OSwgCi0gICAgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5ODAsIDk4MzQ1MCwgNzQ5OTIsIDE3MzIsIDQwMzAsIDk4MzQ0MiwgMzk2MywgCi0gICAgNjUzMzUsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDY1MzMzLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgOTgzODQ1LCAKLSAgICAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgNzE5MDgsIDEyMDA5LCAxMjM5OSwgMTIxMjE3LCAKLSAgICA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIDcwMTIzLCAKLSAgICA2NTMxNywgNzc4ODAsIDAsIDU4NzYsIDcwMzc0LCAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIDcxODYyLCAKLSAgICAwLCAxMjc5NTcsIDExOTYyMSwgMTExMTQsIDcxOTA5LCAxMjQ0NywgNjQ0ODYsIDEyMTIzNiwgMTI2NTYyLCA5ODMxMjksIDAsIAotICAgIDEyMTM5MywgOTgzODAyLCA0Mjc2NywgMTA5MTUsIDk4MzE3NCwgMTIwMDcsIDQzNjk1LCA2ODAzMywgMTE5NzUsIDE5NDg3OCwgCi0gICAgMCwgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDExMzMsIDQxODcyLCA0MzcwNiwgNDQ5NiwgMTk0ODc5LCA4MzEwOCwgCi0gICAgMTIwMjQxLCAxMjgxNjQsIDAsIDAsIDk4MzU1MywgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCAKLSAgICA2NTU5NiwgNjc4MzcsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDc4MTkxLCAxMTE1NywgCi0gICAgNzQzODYsIDEyNzI3NCwgODIzMywgMTI4MjAsIDk4MzczMCwgNjY4MywgMTI1MTEyLCAzNDQyLCAxMjE0NCwgMjg0MSwgCi0gICAgMTI1NDMsIDAsIDE0NzMsIDQyODIwLCA2NDMyOSwgMTIwODgwLCA2NzI0MywgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgCi0gICAgNDExMDAsIDcyNDE3LCA0MTEwNCwgOTQwMDMsIDM0MDYsIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgOTgzMzg1LCA0NDM0LCAKLSAgICAxMDY5LCAxOTQ3ODQsIDExODg2MiwgNjU3MzcsIDEyMTIwMiwgMTI4NzA1LCAwLCA4MzIxMSwgOTY5MywgNDE5NDMsIAotICAgIDY4MzA1LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCA5ODMzNTMsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgCi0gICAgOTE3NzcwLCA2NTkzNywgNzg1NzIsIDQxNzU4LCAxMDY0NiwgMTIxMTU5LCAxMTg4MzMsIDkyMzcyLCA3MDQyNCwgNzQ4MzAsIAotICAgIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCA3Nzg5NSwgCi0gICAgNjMzNSwgNDM5MTksIDExMzEyLCA2NDgwNywgOTI5NjIsIDY5OTg5LCA0MTc2NywgMTE5NjI5LCA5ODM3NjQsIDQzMDIwLCAKLSAgICA3NDk3NCwgMzk1NSwgNzQyNTQsIDEyMDYzMiwgOTgzNzU0LCA5MTc4NjEsIDcwMTg3LCA2OTk3NSwgOTc3MCwgOTI0NiwgCi0gICAgMTIyMzAsIDEyNTA0NywgMTI5MTA1LCA3ODU4MCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgCi0gICAgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIDQ4NTcsIDk4MzU3NywgNDQyOCwgMTI3OTQsIDczNzU1LCAxMjgwNjEsIDc4NTc0LCAwLCAKLSAgICAxMTExNiwgNDM4NDIsIDU3NDcsIDc4ODI1LCA3MDQ3MSwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIAotICAgIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAxMjk0MTIsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA4MzQ5NSwgOTE3ODYwLCAKLSAgICAxMTkwNDMsIDkxNzYxOCwgOTQwNTEsIDQzMTM3LCA2OTQsIDk4MzcxOSwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3MDM5MiwgCi0gICAgNjQ1MzcsIDEyNzkxNCwgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDk4MzE0NSwgNzQ0NjYsIDEzMDI1LCA2NDgxMSwgCi0gICAgODc1NywgNzg4MjQsIDc4MTg4LCAxNTc0LCA3MzgxLCAwLCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAKLSAgICAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMTI5MTU2LCA2OTcyNSwgOTA1NSwgCi0gICAgNDE4NTMsIDQ4NTgsIDc1MDAwLCA5MTc5OTAsIDQzNiwgNDc3MSwgOTE3OTM2LCAyNzg2LCA5MzAyOCwgNDg1NiwgODA1MSwgCi0gICAgOTI1MDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDcxMTMzLCAxMjUwMDksIDEyODg3MywgMTk0OTE2LCAxMjA3MzIsIDY2NzEwLCAKLSAgICA2ODA4NCwgOTgzMzYxLCA3MzkwNiwgNjc0MDksIDEyNzExNCwgOTE3OTE2LCAxMDIzNCwgNTg0MywgMTE5MzksIDcwMzQ2LCAKLSAgICA0MjE1NywgMCwgMzE1NywgMTk0NjU5LCA2ODM5MywgNzUwMzUsIDM1MDQsIDcwNDIyLCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIAotICAgIDEwMjI2LCA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAKLSAgICAxMjE0NjcsIDg4MzQsIDEyMDk3NCwgMTI4MTUsIDQzNTc0LCAxMjE0MzAsIDczOTA3LCAxMjc3OTIsIDcwMTEzLCA3MjIwLCAKLSAgICAxMTgzOSwgMTIxMTQzLCA3NDMxNiwgMTk0NzUyLCA2NTMyMiwgNDMwNCwgNzQ1MDMsIDgxNjAsIDc0MzE0LCAxOTQ3NTMsIAotICAgIDEyMTI3NiwgMCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyMTEzOSwgMTMzMDMsIDcwNDA2LCA5MjM5MiwgCi0gICAgMTI4NDc0LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDEyNzgwNSwgMTI3MTEwLCA3NDM4NywgNzgxNzksIDc4NTk4LCAKLSAgICA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgNjg3NDUsIDI2NzIsIAotICAgIDM3MzUsIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAxMjgzNzAsIDQzNzQyLCAKLSAgICAxMjgzNzMsIDk0ODcsIDExOTk1OSwgNjg3ODUsIDM4NDIsIDcxOTExLCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIAotICAgIDExOTM0NCwgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA2NjcyMSwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKLSAgICA3MDAwNiwgMTk0NjkwLCAxMjc1MzcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIAotICAgIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAxMjEwMjEsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgNTQzNywgCi0gICAgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgOTgzNzc2LCAxOTksIDY4MDc1LCA0MTA1LCAxOTQ4NDUsIAotICAgIDEyNzk0MiwgNzUwMDYsIDE5NDcxMCwgNjc4MTgsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0NzgsIDE5NTA3MCwgCi0gICAgNjQ3MiwgNjU4MTQsIDcxOTE5LCAxMjEyMTgsIDQ3MjQsIDEyODQ5MSwgMTk1MDQxLCA5MTkxLCAxOTQ2NDUsIDY0NDMyLCAKLSAgICAxMjAyNzAsIDgyOTg3LCAxMTkxOTAsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDk4MzQyNSwgCi0gICAgNzE4NzIsIDY2NzksIDc0NDEyLCA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDEyODI1NCwgNDM4NjIsIDc4NTkxLCAKLSAgICAxMTM3MzMsIDE5NDY3OSwgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgCi0gICAgMTI4MjUyLCA0Mzg3NCwgNjU0NDIsIDY4MDQ3LCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDExMzIxLCAKLSAgICAxMjg4NDUsIDEyMDgwOSwgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgOTMwMTAsIDczOTI3LCAKLSAgICA5MjQ0NCwgMTI3MzM2LCA2NTc0NiwgMTE4Nzk2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDEyMTMzOSwgCi0gICAgMTY3NywgOTE3NTkyLCA4Mjk4OSwgMTI2NTkwLCA4MzQxNSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIAotICAgIDEwMTYwLCAwLCAxMjkxNTAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA4MzQxNCwgNDMwMDAsIDc1MDUsIDU0MywgCi0gICAgNjQ5MTYsIDY0NzM2LCAxMTg4MzUsIDAsIDY0NjU1LCA5ODMwNTMsIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIAotICAgIDk4MzIzMSwgNjUyNjUsIDE5NDYzOSwgMTIxMDgwLCAxMjcxNzAsIDEyNzA0MSwgMTI4MDA2LCA5MjU1MCwgOTgzMTg2LCAKLSAgICAxMjk5NCwgOTI3MjgsIDEwODI4LCA3NDM3OCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCA4MzIzMSwgNzIzODksIAotICAgIDgzMDc5LCA1MDYsIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMTIxNDA3LCAKLSAgICA4ODQxLCA5ODM3NDcsIDUxNiwgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgCi0gICAgNzQzMzMsIDEyMDE4MiwgMTE4MjcsIDY3MTY1LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIAotICAgIDY1ODQsIDc3NDksIDExMDM3LCAxMjg3NDMsIDE3NTgsIDExOTA3NCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAKLSAgICAxOTM1LCAxMTUxNywgMTIwMTkzLCAxMjAxOTYsIDgzMDgyLCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIAotICAgIDY0NzAyLCAxMjY0MywgODI1LCAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIAotICAgIDc4ODMzLCAxMjYzMSwgNzE4NzEsIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDEyNzE5OSwgMTEzMTMsIAotICAgIDE5NDgwMywgMzQwMywgOTgzNjU1LCAxMjAyNzEsIDY0MzY0LCA5MjI2OSwgMTIxMjgyLCA3MjQzMSwgODk5OCwgMTI5ODgsIAotICAgIDExOTk4MywgOTE1MiwgOTIxNjEsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgOTIzOTMsIDEyNjE1LCAKLSAgICAxNTk0LCA0MjE5MiwgNjkxNCwgNjYzOTIsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIAotICAgIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAxMjY2OCwgNzIzOTUsIAotICAgIDI0NzcsIDEyNzI4NSwgMTIxMjQ5LCAxMTg4ODAsIDAsIDY3NjA0LCA2NzY4MywgMTI3MjM1LCA1NzMsIDEyNzI4MiwgCi0gICAgMTIwNTQzLCAxMTQxNywgOTI2NjEsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMCwgCi0gICAgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4NTAzLCA3ODgzOSwgNjc3MjgsIDc3OTA3LCAxMTU4OSwgCisgICAgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5NzYsIDEwMDQ3NCwgNzQ5OTIsIDE3MzIsIDQwMzAsIDk4MzQ0MiwgMzk2MywgCisgICAgNjUzMzUsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDY1MzMzLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgMTk1MDEzLCAKKyAgICAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCA5ODM5NTMsIDExODE5LCA3MTkwOCwgMTIwMDksIDEyMzk5LCAKKyAgICAxMjEyMTcsIDY3ODUyLCA2NTUzNywgNzgwMDIsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIAorICAgIDcwMTIzLCA2NTMxNywgNzc4ODAsIDk4MzE5OSwgNTg3NiwgNzAzNzQsIDEyMzA0LCAxMjkzNTUsIDAsIDY1MzE1LCA5MjY3MCwgCisgICAgMTI4NTExLCA3MTg2MiwgMCwgMTI3OTU3LCAxMTk2MjEsIDExMTE0LCA3MTkwOSwgMTI0NDcsIDY0NDg2LCAxMjEyMzYsIAorICAgIDEyNjU2MiwgOTgzMTI5LCAwLCAxMjEzOTMsIDk4MzgwMiwgNDI3NjcsIDEwOTE1LCA5ODMxNzQsIDEyMDA3LCA0MzY5NSwgCisgICAgNjgwMzMsIDExOTc1LCAxMDEwMTAsIDEyODc0NSwgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDExMzMsIDQxODcyLCAKKyAgICA0MzcwNiwgNDQ5NiwgMTAwNjkyLCA4MzEwOCwgMTIwMjQxLCAxMjgxNjQsIDEwMDY5MSwgMCwgOTgzNTUzLCA2NDczMCwgCisgICAgNzAwNDEsIDY2NzE0LCA2ODIyMiwgMCwgNzAwNzYsIDY1NTk2LCA2NzgzNywgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAKKyAgICAxMjc4NCwgNzc5MiwgMTM5MywgNzgxOTEsIDExMTU3LCA3NDM4NiwgMTI3Mjc0LCA4MjMzLCAxMjgyMCwgMTAwODQ3LCAKKyAgICA2NjgzLCAxMjUxMTIsIDM0NDIsIDEyMTQ0LCAyODQxLCAxMjU0MywgMTAwNjk5LCAxNDczLCA0MjgyMCwgNjQzMjksIAorICAgIDEwMDgxNiwgNjcyNDMsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIDQxMTAwLCA3MjQxNywgNDExMDQsIDk0MDAzLCAzNDA2LCAKKyAgICAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDExMzc2OSwgNDQzNCwgMTA2OSwgMTk0Nzg0LCAxMDA3MDMsIDY1NzM3LCAKKyAgICAxMjAxMjksIDEyMDMwMiwgMCwgODMyMTEsIDk2OTMsIDQxOTQzLCA2ODMwNSwgNDE5MzEsIDQxNzU5LCAxMjc1NywgNDM1MywgCisgICAgOTgzMzUzLCAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDkxNzc2OSwgNjU5MzcsIDc4NTcyLCA0MTc1OCwgMTA2NDYsIAorICAgIDEwMDY2NSwgMTE4ODMzLCAyMjY4LCA3MDQyNCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIAorICAgIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCA3Nzg5NSwgNjMzNSwgNDM5MTksIDExMzEyLCA2NDgwNywgOTI5NjIsIAorICAgIDY5OTg5LCA0MTc2NywgMTE5NjI5LCA5ODM3NjQsIDQzMDIwLCA3NDk3NCwgMzk1NSwgNzQyNTQsIDEyMDYzMiwgOTgzNzU0LCAKKyAgICA5MTc4NjEsIDcwMTg3LCA2OTk3NSwgOTc3MCwgOTI0NiwgMTIyMzAsIDEyNTA0NywgMTI5MTA1LCA3ODU4MCwgMTA0NDgsIAorICAgIDQxNzgzLCA0MTc4NiwgNzA2NjMsIDEyNzk3LCAyNzU1LCA2NDU3MSwgNzg1NzgsIDEyNzk5NCwgNDg1NywgOTgzNTc3LCAKKyAgICA0NDI4LCAxMjc5NCwgNzM3NTUsIDEwMDcyMiwgNzg1NzQsIDAsIDExMTE2LCA0Mzg0MiwgNTc0NywgNzg4MjUsIDcwNDcxLCAKKyAgICA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgNDIxNDQsIDY1MDE1LCAxMDA3MjUsIDU2MywgMCwgCisgICAgMTAwNzk1LCAxMjc5OCwgMTEyNzEsIDU3LCA5MjcxNywgODM0OTUsIDEwMDcyNywgMTE5MDQzLCA3MTI2OCwgOTQwNTEsIAorICAgIDQzMTM3LCA2OTQsIDk4MzcxOSwgOTg3NiwgMTI4NzIwLCA4MzI3MywgMCwgNzAzOTIsIDY0NTM3LCAxMjc5MTQsIDI3NywgCisgICAgNzQzODUsIDcyMjksIDEyNzYxLCA5ODMxNDUsIDc0NDY2LCAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCA3ODE4OCwgCisgICAgMTU3NCwgNzM4MSwgMTk0NjE2LCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAxMjA1NzQsIDEwMzksIAorICAgIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMTAwNjYxLCA2OTcyNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIAorICAgIDc1MDAwLCA5Mjg5NiwgNDM2LCA0NzcxLCA5MTc5MzYsIDI3ODYsIDkzMDI4LCA0ODU2LCA4MDUxLCA5MjUwMCwgMTE5NjA5LCAKKyAgICA3MTMyNywgOTY0NCwgNzExMzMsIDEyNTAwOSwgMTI4ODczLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDY4MDg0LCA5ODMzNjEsIAorICAgIDczOTA2LCA2NzQwOSwgMTI3MTE0LCA5MTc2MTQsIDEwMjM0LCA1ODQzLCAxMTkzOSwgNzAzNDYsIDQyMTU3LCAwLCAzMTU3LCAKKyAgICAxOTQ2NTksIDY4MzkzLCA3NTAzNSwgMzUwNCwgNzA0MjIsIDk4MzA0MiwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgCisgICAgNjUxNDIsIDEyODAyNSwgMzU5NCwgNDI0MjQsIDEyNDk5MywgNDAsIDEyNjU3LCA5ODM2NjUsIDAsIDM4NiwgMTIxNDY3LCAKKyAgICA4ODM0LCAxMjA5NzQsIDEyODE1LCA0MzU3NCwgMTIxNDMwLCA3MzkwNywgMTAwNTEzLCA3MDExMywgNzIyMCwgMTE4MzksIAorICAgIDEyMTE0MywgNzQzMTYsIDE5NDc1MiwgNjUzMjIsIDQzMDQsIDc0NTAzLCA4MTYwLCA3NDMxNCwgMTAwNTExLCAxMjEyNzYsIAorICAgIDk4Mzk0MCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyMTEzOSwgMTMzMDMsIDcwNDA2LCA5MjM5MiwgMTIxMzg0LCAKKyAgICA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDEyNzgwNSwgOTI0MjMsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIDc0NDkyLCAKKyAgICA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxMDA3MjAsIDc4NTkyLCA2ODc0NSwgMjY3MiwgMzczNSwgCisgICAgMTI3NDcwLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgNzEzNjQsIDEyODM3MCwgNDM3NDIsIDEyODM3MywgCisgICAgOTQ4NywgMTE5OTU5LCA2ODc4NSwgMzg0MiwgNzE5MTEsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgMTE5MzQ0LCAKKyAgICAxMDA1MjAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNjY3MjEsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgCisgICAgNzAwMDYsIDE5NDY5MCwgMTAwNTE4LCAzNjA0LCAxMjA2ODMsIDExOTE4OCwgMTI4ODc3LCA3ODU0MCwgNzg1NDEsIDQyNTA3LCAKKyAgICAxOTYyLCA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMTE5NTk3LCAyMDcyLCA5MjMxMiwgNjk5NSwgNzI4MDEsIDU0MzcsIAorICAgIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDEwMDUxNCwgMTk5LCA2ODA3NSwgNDEwNSwgMTk0ODQ1LCAzODY0LCAKKyAgICA3NTAwNiwgMTk0NzEwLCA2NzgxOCwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ3OCwgMTI4NDcxLCA2NDcyLCAKKyAgICA2NTgxNCwgNzE5MTksIDEwMDg1NSwgNDcyNCwgMTI4NDkxLCAxOTUwNDEsIDkxOTEsIDE5NDY0NSwgNjQ0MzIsIDEyMDI3MCwgCisgICAgODI5ODcsIDExOTE5MCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIDE5NDY0MCwgNjY4MCwgMTk1MDQyLCA5ODM0MjUsIDcxODcyLCAKKyAgICA2Njc5LCA3NDQxMiwgOTIyNTEsIDExOTM1MCwgNzQ0MjEsIDExMzgyLCAxMjgyNTQsIDQzODYyLCA3NTAwMSwgMTEzNzMzLCAKKyAgICAxOTQ2NzksIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIDEyODI1MiwgNDM4NzQsIAorICAgIDY1NDQyLCA2ODA0NywgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAxMjc1MzQsIDExMzIxLCAxMjg4NDUsIAorICAgIDEyMDgwOSwgMTIyODk1LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgOTMwMTAsIDczOTI3LCA5MjQ0NCwgCisgICAgMTI3MzM2LCA2NTc0NiwgMTE4Nzk2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDEyMTMzOSwgMTY3NywgCisgICAgOTE3NTkyLCA4Mjk4OSwgMTI2NTkwLCA4MzQxNSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIDEwMTYwLCAwLCAKKyAgICAxMjkxNTAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA4MzQxNCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAKKyAgICAxMTg4MzUsIDE5NDY2NSwgNjQ2NTUsIDk4MzA1MywgMTE4OTIyLCAyMDY0LCA5MTc5NjYsIDQzMTU4LCA3OTAyLCA5ODMyMzEsIAorICAgIDY1MjY1LCAxOTQ2MzksIDEyMTA4MCwgMTI3MTcwLCAxMjI5MTUsIDEyODAwNiwgOTI1NTAsIDk4MzE4NiwgMTI5OTQsIAorICAgIDkyNzI4LCAxMDgyOCwgNzQzNzgsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgODMyMzEsIDcyMzg5LCA4MzA3OSwgNTA2LCAKKyAgICA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDEyMTQwNywgODg0MSwgNjY3NzAsIAorICAgIDUxNiwgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgNzQzMzMsIDEyMDE4MiwgCisgICAgMTE4MjcsIDY3MTY1LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIDY1ODQsIDc3NDksIAorICAgIDExMDM3LCAxMjcxNTcsIDE3NTgsIDExOTA3NCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAxOTM1LCAxMTUxNywgCisgICAgMTIwMTkzLCAxMjAxOTYsIDgzMDgyLCAxOTMxLCAxMDA0OTksIDc0ODM5LCA3NDEwNCwgMTIxNywgNjQ3MDIsIDEyNjQzLCAKKyAgICA4MjUsIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDY2NzQ4LCA5MTM4LCA3ODgzMSwgNzg4MzMsIDEyNjMxLCAKKyAgICA3MTg3MSwgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMTI3MTk5LCAxMTMxMywgMTk0ODAzLCAzNDAzLCAKKyAgICAxMjY1NjQsIDEyMDI3MSwgNjQzNjQsIDkyMjY5LCAxMjEyODIsIDcyNDMxLCA4OTk4LCAxMjk4OCwgMTE5OTgzLCA5MTUyLCAKKyAgICA5MjE2MSwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAzNDMzLCA5MjM5MywgMTI2MTUsIDE1OTQsIDQyMTkyLCAKKyAgICA2OTE0LCA2NjM5MiwgMTI1MjAyLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIAorICAgIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgMTI2NjgsIDcyMzk1LCAyNDc3LCAKKyAgICAxMjcyODUsIDEyMTI0OSwgMTE4ODgwLCAwLCA2NzYwNCwgNjc2ODMsIDEyNzIzNSwgNTczLCAxMjcyODEsIDEyMDU0MywgCisgICAgMTE0MTcsIDkyNjYxLCAxMTk4MTQsIDExOTMwOSwgNjc1OTksIDAsIDcyNDEwLCA2NzYwNywgMTE0ODIsIDEyODk2MSwgCisgICAgMzk4MSwgMzM1NywgMTI3MTY0LCA0MjIyMywgNDIwNywgMTI4OCwgNzg1MDMsIDc4ODM5LCA2NzcyOCwgNzc5MDcsIDExNTg5LCAKICAgICA0MjE5NSwgNzQ0NzcsIDExOTk5NywgMTI3MTc4LCA2NDYwMiwgNjc2MTgsIDkyNTM5LCAxMjEzNjYsIDQyNzg4LCA2ODQxNiwgCi0gICAgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2NjkwNywgOTcxNywgMTE5MzExLCAwLCA5OTcsIDAsIDAsIDkyNTc3LCAKLSAgICAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgNzIzOTAsIDAsIAotICAgIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgOTgzMjc4LCA0MTcyLCA3MTI1MiwgMTE5OTkyLCAKLSAgICA4MzczLCAxMDg3MywgMTIxOTcsIDEyNTA3NCwgMTk1MDE0LCA5MjI2NSwgNjk3MDYsIDEyODU0MCwgNjgzNCwgNzQzNDcsIAotICAgIDc0OTU4LCAxMjkwMzMsIDEyNjk4MiwgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgMTk0ODY4LCA3NjYsIDEyNTcsIDE5NDU5OCwgCi0gICAgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIDMyNzQsIDEyNjYyOSwgODMyNTQsIDcxODYxLCA5ODM5NTAsIDc0NTIyLCAKLSAgICA0MTk4OSwgMTIxMzE3LCAwLCAxMTM3NjksIDMyNjMsIDkxNzkyMiwgNjU2NzIsIDY5MjQzLCAzMjcwLCA2NDUzOSwgMTE0ODksIAotICAgIDkxNzkxMSwgMCwgMCwgNzExMjcsIDk1MDUsIDY1NTE4LCAxMjg0OTgsIDc1NiwgMTk0NjA1LCAwLCAwLCAxOTQ2MjEsIAotICAgIDcyNjEsIDkyNTQ3LCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAKLSAgICAxMjgwMCwgOTgzOTAxLCA3NDIwMywgNjQ3MTgsIDExNTA3LCA3ODY3MywgOTI0MzQsIDc0NjI2LCAxMTM3NjAsIDExNTc4LCAKLSAgICA5ODM4MzcsIDExOTI5NiwgMTIwOTcwLCAxMjExMjcsIDEyNTEwMSwgMCwgNzAwODMsIDkyNTQsIDY2ODc3LCAxNzk0LCAKLSAgICA2ODMxMCwgNjQ1MjEsIDU2MjQsIDEyMDIyMCwgMTIwMjIxLCAxMTk5NTgsIDEyMDIyMywgMzYxNywgNjY2MzYsIDY0ODg2LCAKLSAgICA5NDA2MSwgNjg2NTksIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIAotICAgIDExOTMzMCwgNDQ1MiwgMTI4MDg4LCA5ODM3NzEsIDkyNTI2LCA0NTExLCAxMjA5NTgsIDk4Mzg3NywgNjQ2NzgsIDExNDI1LCAKLSAgICAwLCA0MzI0NSwgMTIzMSwgNjg4NjEsIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgCi0gICAgOTU0NiwgMCwgMTI4MzMyLCA3MDQyMSwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIAotICAgIDExOTYyNiwgNzgyMDIsIDY0MDU4LCA4Nzk5LCA0MjEzMSwgMTI4NjYyLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCAKLSAgICA4MzcsIDEwNTY3LCA3MjM4NCwgNDMxMDMsIDAsIDEyMDc1NCwgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNDM3NDksIAotICAgIDEwNzU2LCA2NDA0NywgNDI2MDYsIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDE5NDk0MiwgCi0gICAgMTAzNCwgMzM5MiwgODMzMzYsIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA0MzQ5OCwgNjQwMzcsIDY0MDM2LCAKLSAgICA2NDAzNSwgNDI5MSwgMTI5MTU3LCA2NDAxNSwgNjQwMTQsIDY0NjgxLCA4MzM5NCwgODMzOTUsIDc4MTQ1LCA3MTg5OCwgCi0gICAgNDMwOTAsIDgzMzkxLCAzNDc2LCA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIAotICAgIDY0NTE3LCA3ODE1MywgMjUzOCwgNjQwMDksIDIwNCwgMCwgNDgwMiwgNDExMSwgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIAotICAgIDY0MDU3LCA3ODg1LCA3MjQ3LCA2NDA1NCwgOTgzMjY4LCAwLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgCi0gICAgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIDgzMjYxLCAxMDAwNSwgMTIzMjksIAotICAgIDQxMzMzLCA4MzI1OSwgODQ4OSwgMTk0MiwgOTE3OTIxLCAxOTQ4MzQsIDQyNTIwLCA2NTUxMCwgMTI1MDQ0LCA2ODI5MSwgCi0gICAgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAxMjc3OTgsIDY0MDI1LCA5MTY3LCA0MjE1MSwgCi0gICAgNzgyNDQsIDk4MzIzMiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAxMjEzNjEsIDc1ODIsIAotICAgIDc4MjUyLCA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMTIwNzkxLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCAKLSAgICA3NzkyMCwgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIAotICAgIDc0NDU0LCAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMTE4OTU1LCA2ODIxOCwgNTUyNzQsIDIwMDgsIAotICAgIDY0MDMxLCA2NDAzMCwgMjk0LCA0MTg3NCwgODMzODMsIDY0NzkwLCA2NTkyOSwgODMzNzYsIDgzMzM3LCA4MzM3OSwgCi0gICAgODMzODAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDE5NDg0NCwgMCwgNDM1MSwgNjM0MywgNDMyNDcsIDExOTg4OCwgCi0gICAgNzAxNTMsIDExOTg4NiwgMTE5ODkxLCA3MjM4NywgMTE5ODg5LCAxMTQzMywgMTE5ODk1LCAxMTk4OTYsIDE5NDY1NSwgCi0gICAgNzgwMSwgNjU1NzgsIDgzMzYxLCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDgzMzU3LCAxMTM1LCA4MzM1MCwgODMzNTEsIAotICAgIDgzMzUyLCAxOTk1LCA2NzIyLCA5ODM5MjUsIDEyODgxNSwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIAotICAgIDc4NDk2LCA3MjM4NiwgODMzNzEsIDY2ODIsIDgzMzY1LCA3ODY3OSwgNDM4MzMsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIAotICAgIDgzMzYyLCA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAKLSAgICAxMTk5MDgsIDkxMzcsIDcxNTUsIDg5OTksIDkxNzkwMSwgNzg1MzMsIDM0NjYsIDAsIDEyMTQ2NiwgMTk5NiwgMCwgMzQ1MywgCi0gICAgNjI4MiwgMCwgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDkyOTc2LCA0MTc5LCA2NTExOSwgMTk5OCwgMTIwNzQ2LCAxODQyLCAKLSAgICAwLCA5MjY3NCwgOTYyOCwgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMCwgOTgzMjQ4LCAxMjAwMDEsIAotICAgIDEyMDIwMSwgOTgzNjQ2LCAxMjQ5NzUsIDEyNzk1MiwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgNDM0OTEsIDkyNjkzLCAwLCAKLSAgICAxMjE0NzIsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDQzMTg5LCAwLCAzNTkyLCAxMDA3OCwgMCwgNzgxNjIsIAotICAgIDExOTU1OCwgODU5MiwgNjU4NzAsIDY2NDE3LCA3NDUwNCwgMTA3NDIsIDcyNDAwLCA0MjkxOCwgMTk5NCwgOTI4MSwgMzI5NiwgCi0gICAgMTI4NjUsIDE5OTcsIDE4OTUsIAorICAgIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjY5MDcsIDk3MTcsIDExOTMxMSwgMTAwNzM4LCA5OTcsIDExOTk5OCwgCisgICAgOTE3OTEwLCA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAKKyAgICAxMjc3NjAsIDcyMzkwLCAxMjA3MTMsIDExOTIyOCwgMTIwMzUsIDk4MzkwNiwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCAKKyAgICAxMjk0MjQsIDQxNzIsIDcxMjUyLCAxMTk5OTIsIDgzNzMsIDEwODczLCAxMjE5NywgMTI1MDc0LCAxOTUwMTQsIDkyMjY1LCAKKyAgICA2OTcwNiwgMTAwODU4LCA2ODM0LCA3NDM0NywgNzQ5NTgsIDY5NjQ1LCAxMjY5ODIsIDc0NTYzLCA2NDgyOCwgMTE0MTksIAorICAgIDEyNjU3MCwgNzY2LCAxMjU3LCAxOTQ1OTgsIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAzMjc0LCAxMjY2MjksIAorICAgIDgzMjU0LCA3MTg2MSwgOTgzOTUwLCA3Mjc5NiwgNDE5ODksIDEyMTMxNywgMTk0ODA2LCAzNDE4LCAzMjYzLCA5MTc5MjIsIAorICAgIDY1NjcyLCA2OTI0MywgMzI3MCwgNjQ1MzksIDExNDg5LCA5MTc5MTEsIDAsIDAsIDcxMTI3LCA5NTA1LCA2NTUxOCwgCisgICAgMTI4NDk4LCA3NTYsIDEyMDQwMCwgMTI1MjQzLCA5ODM3MDAsIDE5NDYyMSwgNzI2MSwgOTI1NDcsIDE4NiwgOTgzNzY5LCAKKyAgICA3Mjc3MSwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAxMjgwMCwgMTI3NTI5LCA3NDIwMywgCisgICAgNjQ3MTgsIDExNTA3LCA3ODY3MywgOTI0MzQsIDc0NjI2LCAxMTM3NjAsIDExNTc4LCA5ODM4MzcsIDExOTI5NiwgMTIwOTcwLCAKKyAgICAxMjExMjcsIDEyNTEwMSwgMCwgNzAwODMsIDkyNTQsIDY2ODc3LCAxNzk0LCA2ODMxMCwgNjQ1MjEsIDU2MjQsIDcyNzY2LCAKKyAgICAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCA2ODY1OSwgMTIwMjEzLCAxMjAyMTQsIAorICAgIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgMTE5MzMwLCA0NDUyLCAxMjgwODgsIDk4MzU2MCwgCisgICAgOTI1MjYsIDQ1MTEsIDEyMDk1OCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCA2ODg2MSwgNjk5MDMsIAorICAgIDk4MzY0MywgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIDk1NDYsIDk4MzIzNywgMTI4MzMyLCAKKyAgICA3MDQyMSwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIDExOTA1OCwgNzgyMDIsIDY0MDU4LCAKKyAgICA4Nzk5LCA0MjEzMSwgMTI4NjYyLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCA3MjM4NCwgNDMxMDMsIAorICAgIDEwMDM1MiwgMTIwNzU0LCAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgCisgICAgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTAwMzU2LCAxMDM0LCAzMzkyLCA4MzMzNiwgCisgICAgNDMwOTEsIDY0MDMzLCA2NDAzMiwgNDI3MzUsIDQzNDk4LCA2NDAzNywgNjQwMzYsIDY0MDM1LCA0MjkxLCAxMjkxNTcsIAorICAgIDY0MDE1LCA2NDAxNCwgNjQ2ODEsIDgzMzk0LCA4MzM5NSwgNzgxNDUsIDcxODk4LCA0MzA5MCwgODMzOTEsIDM0NzYsIAorICAgIDg5NzMsIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgNjQ1MTcsIDc4MTUzLCAyNTM4LCAKKyAgICA2NDAwOSwgMjA0LCAxMDA4NDEsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgCisgICAgNzI0NywgNjQwNTQsIDk4MzI2OCwgMTE4OTIxLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgCisgICAgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIDgzMjYxLCAxMDAwNSwgMTIzMjksIDQxMzMzLCAKKyAgICA4MzI1OSwgODQ4OSwgMTk0MiwgMTAwODQzLCAxOTQ4MzQsIDQyNTIwLCA2NTUxMCwgMTI1MDQ0LCA2ODI5MSwgMTA3NjAsIAorICAgIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAxMjc3OTgsIDY0MDI1LCA5MTY3LCA0MjE1MSwgNzgyNDQsIAorICAgIDk4MzIzMiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAxMDA1MzcsIDc1ODIsIDc4MjUyLCAKKyAgICA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMTIwNzkxLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgCisgICAgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3MDc0NSwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAKKyAgICAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMTE4OTU1LCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCAKKyAgICA2NDAzMCwgMjk0LCA0MTg3NCwgODMzODMsIDY0NzkwLCA2NTkyOSwgODMzNzYsIDgzMzM3LCA4MzM3OSwgODMzODAsIAorICAgIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDEwMDQwNiwgOTgzNjUwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAKKyAgICA3MDE1MywgMTAwNzUzLCA3ODczMywgNzIzODcsIDExOTg4OSwgMTE0MzMsIDEwMDU0NCwgMTE5ODk2LCAxOTQ2NTUsIDc4MDEsIAorICAgIDY1NTc4LCA4MzM2MSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCA4MzM1NywgMTEzNSwgODMzNTAsIDgzMzUxLCA4MzM1MiwgCisgICAgMTk5NSwgNjcyMiwgOTgzOTI1LCAxMjg4MTUsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCA3ODQ5NiwgCisgICAgNzIzODYsIDgzMzcxLCA2NjgyLCA4MzM2NSwgNzg2NzksIDQzODMzLCA0MTU0NywgOTgzNjMwLCAyMDEzLCA4MzM2MiwgCisgICAgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgMTE5OTA4LCA5MTM3LCAKKyAgICA3MTU1LCAyMjY0LCA5MTc5MDEsIDc4NTMzLCAzNDY2LCAxOTQ5ODcsIDEyMTAzOSwgMTk5NiwgOTgzNjc1LCAzNDUzLCAKKyAgICAzNDEyLCAwLCAyMDAyLCAyMDAwLCAxMjAxNzUsIDUzNywgOTI5NzYsIDQxNzksIDY1MTE5LCAxOTk4LCAxMjA3NDYsIDE4NDIsIAorICAgIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIDk4MjYsIDY0NTAyLCAxNzY3LCAzNDEzLCA5ODMyNDgsIDEyMDAwMSwgCisgICAgMTIwMjAxLCA5ODM2NDYsIDEyNDk3NSwgMTI3OTUyLCAzMDU5LCA0NDAyNCwgMTIwMjA0LCA0MzQ5MSwgOTI2OTMsIAorICAgIDEwMDU0NywgMTIxNDcyLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCA0MzE4OSwgMCwgMzU5MiwgMTAwNzgsIAorICAgIDEwMDM5NCwgNzgxNjIsIDEwMDg0NiwgODU5MiwgNjU4NzAsIDY2NDE3LCA3NDUwNCwgMTA3NDIsIDcyNDAwLCA0MjkxOCwgCisgICAgMTk5NCwgOTI4MSwgMzI5NiwgMTI4NjUsIDE5OTcsIDE4OTUsIAogfTsKIAogI2RlZmluZSBjb2RlX21hZ2ljIDQ3CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3dpbnJlcGFyc2UuaCBiL01vZHVsZXMvd2lucmVwYXJzZS5oCmluZGV4IDY2Zjc3NzUuLjI4MDQ5YzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvd2lucmVwYXJzZS5oCisrKyBiL01vZHVsZXMvd2lucmVwYXJzZS5oCkBAIC0yLDcgKzIsNyBAQAogI2RlZmluZSBQeV9XSU5SRVBBUlNFX0gKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTAsOSArMTAsMTAgQEAKIAogLyogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgd2FzIGNvcGllZCBmcm9tCiAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZmY1NTIwMTIuYXNweCBhcyB0aGUgcmVxdWlyZWQKLSAgIGluY2x1ZGUgZG9lc24ndCBzZWVtIHRvIGJlIHByZXNlbnQgaW4gdGhlIFdpbmRvd3MgU0RLIChhdCBsZWFzdCBhcyBpbmNsdWRlZAotICAgd2l0aCBWaXN1YWwgU3R1ZGlvIEV4cHJlc3MpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgX1JFUEFSU0VfREFUQV9CVUZGRVIgeworICAgaW5jbHVkZSBrbVxudGlmcy5oIGlzbid0IHByZXNlbnQgaW4gdGhlIFdpbmRvd3MgU0RLIChhdCBsZWFzdCBhcyBpbmNsdWRlZAorICAgd2l0aCBWaXN1YWwgU3R1ZGlvIEV4cHJlc3MpLiBVc2UgdW5pcXVlIG5hbWVzIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGgKKyAgIHRoZSBzdHJ1Y3R1cmUgYXMgZGVmaW5lZCBieSBNaW4gR1cuICovCit0eXBlZGVmIHN0cnVjdCB7CiAgICAgVUxPTkcgUmVwYXJzZVRhZzsKICAgICBVU0hPUlQgUmVwYXJzZURhdGFMZW5ndGg7CiAgICAgVVNIT1JUIFJlc2VydmVkOwpAQCAtMzgsMTEgKzM5LDExIEBACiAgICAgICAgICAgICBVQ0hBUiAgRGF0YUJ1ZmZlclsxXTsKICAgICAgICAgfSBHZW5lcmljUmVwYXJzZUJ1ZmZlcjsKICAgICB9OwotfSBSRVBBUlNFX0RBVEFfQlVGRkVSLCAqUFJFUEFSU0VfREFUQV9CVUZGRVI7Cit9IF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSLCAqX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSOwogCi0jZGVmaW5lIFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgIEZJRUxEX09GRlNFVChSRVBBUlNFX0RBVEFfQlVGRkVSLFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWNSZXBhcnNlQnVmZmVyKQotI2RlZmluZSBNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRSAgKCAxNiAqIDEwMjQgKQorI2RlZmluZSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSBcCisgICAgRklFTERfT0ZGU0VUKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSLCBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKKyNkZWZpbmUgX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFICAoIDE2ICogMTAyNCApCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eGxpbWl0ZWQuYyBiL01vZHVsZXMveHhsaW1pdGVkLmMKaW5kZXggNDBjMTc2MC4uYzFhOWJlOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eGxpbWl0ZWQuYworKysgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCkBAIC04OSw3ICs4OSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLVh4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCitYeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bW9kdWxlLmMgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKaW5kZXggODUyMzBkOS4uMDc2NDQwNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eG1vZHVsZS5jCisrKyBiL01vZHVsZXMveHhtb2R1bGUuYwpAQCAtNzYsNyArNzYsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1YeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKICAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96aXBpbXBvcnQuYyBiL01vZHVsZXMvemlwaW1wb3J0LmMKaW5kZXggNzQ3M2E4Zi4uNTkwNDZhYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy96aXBpbXBvcnQuYworKysgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCkBAIC05MDcsMTAgKzkwNyw4IEBACiAgICAgZnAgPSBfUHlfZm9wZW5fb2JqKGFyY2hpdmUsICJyYiIpOwogICAgIGlmIChmcCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX09TRXJyb3IpKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKLSAgICAgICAgICAgIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMoZXhjLCB2YWwsIHRiKTsKKyAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoWmlwSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBvcGVuIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYm1vZHVsZS5jIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKaW5kZXggZmNjYjYxNi4uY2ZlN2Y4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGlibW9kdWxlLmMKKysrIGIvTW9kdWxlcy96bGlibW9kdWxlLmMKQEAgLTU3LDcgKzU3LDcgQEAKIH0gY29tcG9iamVjdDsKIAogc3RhdGljIHZvaWQKLXpsaWJfZXJyb3Ioel9zdHJlYW0genN0LCBpbnQgZXJyLCBjaGFyICptc2cpCit6bGliX2Vycm9yKHpfc3RyZWFtIHpzdCwgaW50IGVyciwgY29uc3QgY2hhciAqbXNnKQogewogICAgIGNvbnN0IGNoYXIgKnptc2cgPSBaX05VTEw7CiAgICAgLyogSW4gY2FzZSBvZiBhIHZlcnNpb24gbWlzbWF0Y2gsIHpzdC5tc2cgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuCkBAIC0xOTksMTggKzE5OSwxOCBAQAogLypbY2xpbmljIGlucHV0XQogemxpYi5jb21wcmVzcwogCi0gICAgYnl0ZXM6IFB5X2J1ZmZlcgorICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgICAgICBCaW5hcnkgZGF0YSB0byBiZSBjb21wcmVzc2VkLgotICAgIGxldmVsOiBpbnQoY19kZWZhdWx0PSJaX0RFRkFVTFRfQ09NUFJFU1NJT04iKSA9IFpfREVGQVVMVF9DT01QUkVTU0lPTgotICAgICAgICBDb21wcmVzc2lvbiBsZXZlbCwgaW4gMC05LgogICAgIC8KKyAgICBsZXZlbDogaW50KGNfZGVmYXVsdD0iWl9ERUZBVUxUX0NPTVBSRVNTSU9OIikgPSBaX0RFRkFVTFRfQ09NUFJFU1NJT04KKyAgICAgICAgQ29tcHJlc3Npb24gbGV2ZWwsIGluIDAtOSBvciAtMS4KIAogUmV0dXJucyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXpsaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmJ5dGVzLCBpbnQgbGV2ZWwpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YWU2NGMyYzMwNzYzMjFhMCBpbnB1dD1iZTNhYmU5OTM0YmRhNGIzXSovCit6bGliX2NvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgbGV2ZWwpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDgwOTA2ZDczZjYyOTRjOCBpbnB1dD02MzhkNTRiNjMxNWRiZWQzXSovCiB7CiAgICAgUHlPYmplY3QgKlJldFZhbCA9IE5VTEw7CiAgICAgQnl0ZSAqaWJ1ZjsKQEAgLTIxOCw4ICsyMTgsOCBAQAogICAgIGludCBlcnIsIGZsdXNoOwogICAgIHpfc3RyZWFtIHpzdDsKIAotICAgIGlidWYgPSBieXRlcy0+YnVmOwotICAgIGlidWZsZW4gPSBieXRlcy0+bGVuOworICAgIGlidWYgPSBkYXRhLT5idWY7CisgICAgaWJ1ZmxlbiA9IGRhdGEtPmxlbjsKIAogICAgIHpzdC5vcGFxdWUgPSBOVUxMOwogICAgIHpzdC56YWxsb2MgPSBQeVpsaWJfTWFsbG9jOwpAQCAtMzE4LDExICszMTgsMTEgQEAKIAogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgICAgICBDb21wcmVzc2VkIGRhdGEuCisgICAgLwogICAgIHdiaXRzOiBpbnQoY19kZWZhdWx0PSJNQVhfV0JJVFMiKSA9IE1BWF9XQklUUwogICAgICAgICBUaGUgd2luZG93IGJ1ZmZlciBzaXplIGFuZCBjb250YWluZXIgZm9ybWF0LgogICAgIGJ1ZnNpemU6IHNzaXplX3QoY19kZWZhdWx0PSJERUZfQlVGX1NJWkUiKSA9IERFRl9CVUZfU0laRQogICAgICAgICBUaGUgaW5pdGlhbCBvdXRwdXQgYnVmZmVyIHNpemUuCi0gICAgLwogCiBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwpAQCAtMzMwLDcgKzMzMCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9kZWNvbXByZXNzX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfYnVmZmVyICpkYXRhLCBpbnQgd2JpdHMsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzdjN2UzNTExMWRjOGM0MiBpbnB1dD1jMTNkZDJjNTY5NmNkMTdmXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzdjN2UzNTExMWRjOGM0MiBpbnB1dD0yMTk2MDkzNjIwOGU5YTViXSovCiB7CiAgICAgUHlPYmplY3QgKlJldFZhbCA9IE5VTEw7CiAgICAgQnl0ZSAqaWJ1ZjsKQEAgLTcyMSw5ICs3MjEsOSBAQAogICAgICAgICAgICAgbmV3X2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5ld19zaXplKTsKICAgICAgICAgICAgIGlmIChuZXdfZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSksCisgICAgICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpLAogICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPnVudXNlZF9kYXRhKSwgb2xkX3NpemUpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSArIG9sZF9zaXplLAorICAgICAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSArIG9sZF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnpzdC5uZXh0X2luLCBsZWZ0X3NpemUpOwogICAgICAgICAgICAgUHlfU0VUUkVGKHNlbGYtPnVudXNlZF9kYXRhLCBuZXdfZGF0YSk7CiAgICAgICAgICAgICBzZWxmLT56c3QuYXZhaWxfaW4gPSAwOwpAQCAtNzUwLDExICs3NTAsMTEgQEAKIAogICAgIGRhdGE6IFB5X2J1ZmZlcgogICAgICAgICBUaGUgYmluYXJ5IGRhdGEgdG8gZGVjb21wcmVzcy4KKyAgICAvCiAgICAgbWF4X2xlbmd0aDogc3NpemVfdCA9IDAKICAgICAgICAgVGhlIG1heGltdW0gYWxsb3dhYmxlIGxlbmd0aCBvZiB0aGUgZGVjb21wcmVzc2VkIGRhdGEuCiAgICAgICAgIFVuY29uc3VtZWQgaW5wdXQgZGF0YSB3aWxsIGJlIHN0b3JlZCBpbgogICAgICAgICB0aGUgdW5jb25zdW1lZF90YWlsIGF0dHJpYnV0ZS4KLSAgICAvCiAKIFJldHVybiBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgdmVyc2lvbiBvZiB0aGUgZGF0YS4KIApAQCAtNzY2LDcgKzc2Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogemxpYl9EZWNvbXByZXNzX2RlY29tcHJlc3NfaW1wbChjb21wb2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4X2xlbmd0aCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZTUxNzNjNzRlNzEwMzUyIGlucHV0PWQ2ZGU5YjUzYzQ1NjZiOGFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02ZTUxNzNjNzRlNzEwMzUyIGlucHV0PWI4NWEyMTJhMDEyYjc3MGFdKi8KIHsKICAgICBpbnQgZXJyID0gWl9PSzsKICAgICBQeV9zc2l6ZV90IGlidWZsZW4sIG9idWZsZW4gPSBERUZfQlVGX1NJWkUsIGhhcmRfbGltaXQ7CkBAIC0xMzMzLDcgKzEzMzMsNyBAQAogInpsaWIgbGlicmFyeSwgd2hpY2ggaXMgYmFzZWQgb24gR05VIHppcC5cbiIKICJcbiIKICJhZGxlcjMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhbiBBZGxlci0zMiBjaGVja3N1bS5cbiIKLSJjb21wcmVzcyhzdHJpbmdbLCBsZXZlbF0pIC0tIENvbXByZXNzIHN0cmluZywgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCBpbiAwLTkuXG4iCisiY29tcHJlc3MoZGF0YVssIGxldmVsXSkgLS0gQ29tcHJlc3MgZGF0YSwgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCAwLTkgb3IgLTEuXG4iCiAiY29tcHJlc3NvYmooW2xldmVsWywgLi4uXV0pIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgogImNyYzMyKHN0cmluZ1ssIHN0YXJ0XSkgLS0gQ29tcHV0ZSBhIENSQy0zMiBjaGVja3N1bS5cbiIKICJkZWNvbXByZXNzKHN0cmluZyxbd2JpdHNdLFtidWZzaXplXSkgLS0gRGVjb21wcmVzc2VzIGEgY29tcHJlc3NlZCBzdHJpbmcuXG4iCmRpZmYgLS1naXQgYS9PYmplY3RzL2Fic3RyYWN0LmMgYi9PYmplY3RzL2Fic3RyYWN0LmMKaW5kZXggODgyMDViZC4uZjlhZmVjZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9hYnN0cmFjdC5jCisrKyBiL09iamVjdHMvYWJzdHJhY3QuYwpAQCAtMzIsOCArMzIsMTAgQEAKIHsKICAgICBQeU9iamVjdCAqdjsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIHYgPSAoUHlPYmplY3QgKilvLT5vYl90eXBlOwogICAgIFB5X0lOQ1JFRih2KTsKICAgICByZXR1cm4gdjsKQEAgLTEzNywxMiArMTM5LDE2IEBACiB7CiAgICAgUHlNYXBwaW5nTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwgfHwga2V5ID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBrZXkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19tYXBwaW5nOwotICAgIGlmIChtICYmIG0tPm1wX3N1YnNjcmlwdCkKLSAgICAgICAgcmV0dXJuIG0tPm1wX3N1YnNjcmlwdChvLCBrZXkpOworICAgIGlmIChtICYmIG0tPm1wX3N1YnNjcmlwdCkgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IG0tPm1wX3N1YnNjcmlwdChvLCBrZXkpOworICAgICAgICBhc3NlcnQoKGl0ZW0gIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KIAogICAgIGlmIChvLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZSkgewogICAgICAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7CkBAIC02NjksMTMgKzY3NSwzMSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIF9QeV9JREVOVElGSUVSKF9fZm9ybWF0X18pOwogCisgICAgaWYgKGZvcm1hdF9zcGVjICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVjayhmb3JtYXRfc3BlYykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIkZvcm1hdCBzcGVjaWZpZXIgbXVzdCBiZSBhIHN0cmluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZvcm1hdF9zcGVjKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEZhc3QgcGF0aCBmb3IgY29tbW9uIHR5cGVzLiAqLworICAgIGlmIChmb3JtYXRfc3BlYyA9PSBOVUxMIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSA9PSAwKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICAgICAgICAgIHJldHVybiBvYmo7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgICAgIHJldHVybiBQeU9iamVjdF9TdHIob2JqKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIElmIG5vIGZvcm1hdF9zcGVjIGlzIHByb3ZpZGVkLCB1c2UgYW4gZW1wdHkgc3RyaW5nICovCiAgICAgaWYgKGZvcm1hdF9zcGVjID09IE5VTEwpIHsKICAgICAgICAgZW1wdHkgPSBQeVVuaWNvZGVfTmV3KDAsIDApOwogICAgICAgICBmb3JtYXRfc3BlYyA9IGVtcHR5OwogICAgIH0KIAotICAgIC8qIEZpbmQgdGhlICh1bmJvdW5kISkgX19mb3JtYXRfXyBtZXRob2QgKGEgYm9ycm93ZWQgcmVmZXJlbmNlKSAqLworICAgIC8qIEZpbmQgdGhlICh1bmJvdW5kISkgX19mb3JtYXRfXyBtZXRob2QgKi8KICAgICBtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAmUHlJZF9fX2Zvcm1hdF9fKTsKICAgICBpZiAobWV0aCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTExMjIsOCArMTE0NiwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfbmVnYXRpdmUpCiAgICAgICAgIHJldHVybiAoKm0tPm5iX25lZ2F0aXZlKShvKTsKQEAgLTExMzYsOCArMTE2MiwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfcG9zaXRpdmUpCiAgICAgICAgIHJldHVybiAoKm0tPm5iX3Bvc2l0aXZlKShvKTsKQEAgLTExNTAsOCArMTE3OCwxMCBAQAogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfaW52ZXJ0KQogICAgICAgICByZXR1cm4gKCptLT5uYl9pbnZlcnQpKG8pOwpAQCAtMTE2NCw4ICsxMTk0LDEwIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9hYnNvbHV0ZSkKICAgICAgICAgcmV0dXJuIG0tPm5iX2Fic29sdXRlKG8pOwpAQCAtMTE4MSw4ICsxMjEzLDEwIEBACiBQeU51bWJlcl9JbmRleChQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBpZiAoaXRlbSA9PSBOVUxMKQorICAgIGlmIChpdGVtID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBpZiAoUHlMb25nX0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKICAgICAgICAgcmV0dXJuIGl0ZW07CkBAIC0xMjY1LDQyICsxMjk5LDU1IEBACiBQeU9iamVjdCAqCiBQeU51bWJlcl9Mb25nKFB5T2JqZWN0ICpvKQogeworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogICAgIFB5T2JqZWN0ICp0cnVuY19mdW5jOwogICAgIFB5X2J1ZmZlciB2aWV3OwogICAgIF9QeV9JREVOVElGSUVSKF9fdHJ1bmNfXyk7CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QobykpIHsKICAgICAgICAgUHlfSU5DUkVGKG8pOwogICAgICAgICByZXR1cm4gbzsKICAgICB9CiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9pbnQpIHsgLyogVGhpcyBzaG91bGQgaW5jbHVkZSBzdWJjbGFzc2VzIG9mIGludCAqLwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQobyk7CisgICAgICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KG8pOworICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgIVB5TG9uZ19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopcmVzdWx0KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgdHJ1bmNfZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fdHJ1bmNfXyk7CiAgICAgaWYgKHRydW5jX2Z1bmMpIHsKLSAgICAgICAgUHlPYmplY3QgKnRydW5jYXRlZCA9IFB5RXZhbF9DYWxsT2JqZWN0KHRydW5jX2Z1bmMsIE5VTEwpOwotICAgICAgICBQeU9iamVjdCAqaW50X2luc3RhbmNlOworICAgICAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdCh0cnVuY19mdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHRydW5jX2Z1bmMpOwotICAgICAgICBpZiAodHJ1bmNhdGVkID09IE5VTEwgfHwgUHlMb25nX0NoZWNrKHRydW5jYXRlZCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1bmNhdGVkOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwgfHwgUHlMb25nX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlMb25nX0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopcmVzdWx0KSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAgICAgICAgIC8qIF9fdHJ1bmNfXyBpcyBzcGVjaWZpZWQgdG8gcmV0dXJuIGFuIEludGVncmFsIHR5cGUsCiAgICAgICAgICAgIGJ1dCBpbnQoKSBuZWVkcyB0byByZXR1cm4gYW4gaW50LiAqLwotICAgICAgICBtID0gdHJ1bmNhdGVkLT5vYl90eXBlLT50cF9hc19udW1iZXI7CisgICAgICAgIG0gPSByZXN1bHQtPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICAgICAgaWYgKG0gPT0gTlVMTCB8fCBtLT5uYl9pbnQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAogICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAiX190cnVuY19fIHJldHVybmVkIG5vbi1JbnRlZ3JhbCAodHlwZSAlLjIwMHMpIiwKLSAgICAgICAgICAgICAgICB0cnVuY2F0ZWQtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHRydW5jYXRlZCk7CisgICAgICAgICAgICAgICAgcmVzdWx0LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaW50X2luc3RhbmNlID0gKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQodHJ1bmNhdGVkKTsKLSAgICAgICAgUHlfREVDUkVGKHRydW5jYXRlZCk7Ci0gICAgICAgIHJldHVybiBpbnRfaW5zdGFuY2U7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIChQeU9iamVjdCAqKV9QeUxvbmdfRnJvbU5iSW50KHJlc3VsdCkpOworICAgICAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgIVB5TG9uZ19DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIF9QeUxvbmdfQ29weSgoUHlMb25nT2JqZWN0ICopcmVzdWx0KSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMyMiw3ICsxMzY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKG8pLCAxMCk7CiAKICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG8sICZ2aWV3LCBQeUJVRl9TSU1QTEUpID09IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdCwgKmJ5dGVzOworICAgICAgICBQeU9iamVjdCAqYnl0ZXM7CiAKICAgICAgICAgLyogQ29weSB0byBOVUwtdGVybWluYXRlZCBidWZmZXIuICovCiAgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciAqKXZpZXcuYnVmLCB2aWV3Lmxlbik7CkBAIC0xMzQ2LDIzICsxMzkzLDQzIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCisgICAgaWYgKFB5RmxvYXRfQ2hlY2tFeGFjdChvKSkgeworICAgICAgICBQeV9JTkNSRUYobyk7CisgICAgICAgIHJldHVybiBvOworICAgIH0KICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2Zsb2F0KSB7IC8qIFRoaXMgc2hvdWxkIGluY2x1ZGUgc3ViY2xhc3NlcyBvZiBmbG9hdCAqLwogICAgICAgICBQeU9iamVjdCAqcmVzID0gbS0+bmJfZmxvYXQobyk7Ci0gICAgICAgIGlmIChyZXMgJiYgIVB5RmxvYXRfQ2hlY2socmVzKSkgeworICAgICAgICBkb3VibGUgdmFsOworICAgICAgICBpZiAoIXJlcyB8fCBQeUZsb2F0X0NoZWNrRXhhY3QocmVzKSkgeworICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgfQorICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2socmVzKSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgIl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS4yMDBzKSIsCi0gICAgICAgICAgICAgIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvLT5vYl90eXBlLT50cF9uYW1lLCByZXMtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAvKiBJc3N1ZSAjMjY5ODM6IHdhcm4gaWYgJ3Jlcycgbm90IG9mIGV4YWN0IHR5cGUgZmxvYXQuICovCisgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKKyAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykuICAiCisgICAgICAgICAgICAgICAgIlRoZSBhYmlsaXR5IHRvIHJldHVybiBhbiBpbnN0YW5jZSBvZiBhIHN0cmljdCBzdWJjbGFzcyBvZiBmbG9hdCAiCisgICAgICAgICAgICAgICAgImlzIGRlcHJlY2F0ZWQsIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbi4iLAorICAgICAgICAgICAgICAgIG8tPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgdmFsID0gUHlGbG9hdF9BU19ET1VCTEUocmVzKTsKKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodmFsKTsKICAgICB9CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sobykpIHsgLyogQSBmbG9hdCBzdWJjbGFzcyB3aXRoIG5iX2Zsb2F0ID09IE5VTEwgKi8KLSAgICAgICAgUHlGbG9hdE9iamVjdCAqcG8gPSAoUHlGbG9hdE9iamVjdCAqKW87Ci0gICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUocG8tPm9iX2Z2YWwpOworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKFB5RmxvYXRfQVNfRE9VQkxFKG8pKTsKICAgICB9CiAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbVN0cmluZyhvKTsKIH0KQEAgLTE0MzAsOCArMTQ5Nyw5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAocyA9PSBOVUxMIHx8IG8gPT0gTlVMTCkKKyAgICBpZiAocyA9PSBOVUxMIHx8IG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBzLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9jb25jYXQpCkBAIC0xNDU0LDggKzE1MjIsOSBAQAogewogICAgIFB5U2VxdWVuY2VNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX3JlcGVhdCkKQEAgLTE0ODMsOCArMTU1Miw5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAocyA9PSBOVUxMIHx8IG8gPT0gTlVMTCkKKyAgICBpZiAocyA9PSBOVUxMIHx8IG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBzLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9pbnBsYWNlX2NvbmNhdCkKQEAgLTE1MDcsOCArMTU3Nyw5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfaW5wbGFjZV9yZXBlYXQpCkBAIC0xNTM2LDE2ICsxNjA3LDE5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAocyA9PSBOVUxMKQorICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gcy0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfaXRlbSkgewogICAgICAgICBpZiAoaSA8IDApIHsKICAgICAgICAgICAgIGlmIChtLT5zcV9sZW5ndGgpIHsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGwgPSAoKm0tPnNxX2xlbmd0aCkocyk7Ci0gICAgICAgICAgICAgICAgaWYgKGwgPCAwKQorICAgICAgICAgICAgICAgIGlmIChsIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpICs9IGw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE1NjAsNyArMTYzNCw5IEBACiB7CiAgICAgUHlNYXBwaW5nTWV0aG9kcyAqbXA7CiAKLSAgICBpZiAoIXMpIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgaWYgKCFzKSB7CisgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbXAgPSBzLT5vYl90eXBlLT50cF9hc19tYXBwaW5nOwogICAgIGlmIChtcCAmJiBtcC0+bXBfc3Vic2NyaXB0KSB7CkBAIC0xNjg3LDggKzE3NjMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgajsKIAotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIC8qIFNwZWNpYWwtY2FzZSB0aGUgY29tbW9uIHR1cGxlIGFuZCBsaXN0IGNhc2VzLCBmb3IgZWZmaWNpZW5jeS4gKi8KICAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHYpKSB7CkBAIC0xNzY4LDggKzE4NDUsOSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAvKiByZXN1bHQgbGlzdCAqLwogICAgIFB5T2JqZWN0ICpydjsgICAgICAgICAgLyogcmV0dXJuIHZhbHVlIGZyb20gUHlMaXN0X0V4dGVuZCAqLwogCi0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgcmVzdWx0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCkBAIC0xNzg5LDggKzE4NjcsOSBAQAogewogICAgIFB5T2JqZWN0ICppdDsKIAotICAgIGlmICh2ID09IE5VTEwpCisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGlmIChQeUxpc3RfQ2hlY2tFeGFjdCh2KSB8fCBQeVR1cGxlX0NoZWNrRXhhY3QodikpIHsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMTk3Myw4ICsyMDUyLDkgQEAKIHsKICAgICBQeU9iamVjdCAqb2tleSwgKnI7CiAKLSAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgaWYgKGtleSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgb2tleSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGtleSk7CiAgICAgaWYgKG9rZXkgPT0gTlVMTCkKQEAgLTIxMTgsMjAgKzIxOTgsMTggQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChlcnJfb2NjdXJyZWQpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKLSAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7Ci0KICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogCi0gICAgICAgICAgICBpZiAoZnVuYykKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlUiByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUpOwotICAgICAgICAgICAgX1B5RXJyX0NoYWluRXhjZXB0aW9ucyhleGMsIHZhbCwgdGIpOworICAgICAgICAgICAgaWYgKGZ1bmMpIHsKKyAgICAgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIiVSIHJldHVybmVkIGEgcmVzdWx0IHdpdGggYW4gZXJyb3Igc2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyByZXR1cm5lZCBhIHJlc3VsdCB3aXRoIGFuIGVycm9yIHNldCIsCisgICAgICAgICAgICAgICAgICAgICAgICB3aGVyZSk7CisgICAgICAgICAgICB9CiAjaWZkZWYgUHlfREVCVUcKICAgICAgICAgICAgIC8qIEVuc3VyZSB0aGF0IHRoZSBidWcgaXMgY2F1Z2h0IGluIGRlYnVnIG1vZGUgKi8KICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImEgZnVuY3Rpb24gcmV0dXJuZWQgYSByZXN1bHQgd2l0aCBhbiBlcnJvciBzZXQiKTsKQEAgLTIxNDMsNyArMjIyMSw3IEBACiB9CiAKIFB5T2JqZWN0ICoKLVB5T2JqZWN0X0NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmcsIFB5T2JqZWN0ICprdykKK1B5T2JqZWN0X0NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHRlcm5hcnlmdW5jIGNhbGw7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKQEAgLTIxNTIsNiArMjIzMCw4IEBACiAgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKICAgICAgICBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLwogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CiAKICAgICBjYWxsID0gZnVuYy0+b2JfdHlwZS0+dHBfY2FsbDsKICAgICBpZiAoY2FsbCA9PSBOVUxMKSB7CkBAIC0yMTYzLDEwOCArMjI0MywzNDMgQEAKICAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgY2FsbGluZyBhIFB5dGhvbiBvYmplY3QiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIGFyZywga3cpOworICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgYXJncywga3dhcmdzKTsKIAogICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOwogCiAgICAgcmV0dXJuIF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlc3VsdCwgTlVMTCk7CiB9CiAKK1B5T2JqZWN0KgorX1B5U3RhY2tfQXNUdXBsZShQeU9iamVjdCAqKnN0YWNrLCBQeV9zc2l6ZV90IG5hcmdzKQoreworICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFyZ3MgPSBQeVR1cGxlX05ldyhuYXJncyk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaSA8IG5hcmdzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBzdGFja1tpXTsKKyAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIGksIGl0ZW0pOworICAgIH0KKworICAgIHJldHVybiBhcmdzOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgdGVybmFyeWZ1bmMgY2FsbDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIC8qIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LAorICAgICAgIGJlY2F1c2UgaXQgbWF5IGNsZWFyIGl0IChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSBhbmQgc28gdGhlCisgICAgICAgY2FsbGVyIGxvc2VzIGl0cyBleGNlcHRpb24gKi8KKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgYXNzZXJ0KGZ1bmMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChuYXJncyA9PSAwIHx8IGFyZ3MgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2FyZ3MpKTsKKworICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBjYWxsaW5nIGEgUHl0aG9uIG9iamVjdCIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CisgICAgICAgIHJlc3VsdCA9IF9QeUZ1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBhcmdzLCBuYXJncywga3dhcmdzKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgcmVzdWx0ID0gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBhcmdzLCBuYXJncywga3dhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICp0dXBsZTsKKworICAgICAgICAvKiBTbG93LXBhdGg6IGJ1aWxkIGEgdGVtcG9yYXJ5IHR1cGxlICovCisgICAgICAgIGNhbGwgPSBmdW5jLT5vYl90eXBlLT50cF9jYWxsOworICAgICAgICBpZiAoY2FsbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBjYWxsYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICB0dXBsZSA9IF9QeVN0YWNrX0FzVHVwbGUoYXJncywgbmFyZ3MpOworICAgICAgICBpZiAodHVwbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCB0dXBsZSwga3dhcmdzKTsKKyAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKworICAgICAgICByZXN1bHQgPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCByZXN1bHQsIE5VTEwpOworICAgIH0KKworZXhpdDoKKyAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFBvc2l0aW9uYWwgYXJndW1lbnRzIGFyZSBvYmogZm9sbG93ZWQgYXJncy4gKi8KK1B5T2JqZWN0ICoKK19QeU9iamVjdF9DYWxsX1ByZXBlbmQoUHlPYmplY3QgKmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s4XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgYXJnY291bnQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKKworICAgIGFyZ2NvdW50ID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICBpZiAoYXJnY291bnQgKyAxIDw9IChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjaykpIHsKKyAgICAgICAgc3RhY2sgPSBzbWFsbF9zdGFjazsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKChhcmdjb3VudCArIDEpICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHVzZSBib3Jyb3dlZCByZWZlcmVuY2VzICovCisgICAgc3RhY2tbMF0gPSBvYmo7CisgICAgbWVtY3B5KCZzdGFja1sxXSwKKyAgICAgICAgICAgICAgJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMCksCisgICAgICAgICAgICAgIGFyZ2NvdW50ICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLCBhcmdjb3VudCArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3MpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QgKgorX1B5U3RhY2tfQXNEaWN0KFB5T2JqZWN0ICoqdmFsdWVzLCBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5T2JqZWN0ICprd2RpY3Q7CisgICAgUHlfc3NpemVfdCBpOworCisgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmt3YXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIGkpOworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSAqdmFsdWVzKys7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKTsKKyAgICAgICAgYXNzZXJ0KFB5RGljdF9HZXRJdGVtKGt3ZGljdCwga2V5KSA9PSBOVUxMKTsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5LCB2YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGt3ZGljdDsKK30KKworUHlPYmplY3QgKioKK19QeVN0YWNrX1VucGFja0RpY3QoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3dhcmdzLAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfa3duYW1lcywgUHlPYmplY3QgKmZ1bmMpCit7CisgICAgUHlPYmplY3QgKipzdGFjaywgKiprd3N0YWNrOworICAgIFB5X3NzaXplX3Qgbmt3YXJnczsKKyAgICBQeV9zc2l6ZV90IHBvcywgaTsKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CisgICAgUHlPYmplY3QgKmt3bmFtZXM7CisKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVja0V4YWN0KGt3YXJncykpOworCisgICAgbmt3YXJncyA9IChrd2FyZ3MgIT0gTlVMTCkgPyBQeURpY3RfU2l6ZShrd2FyZ3MpIDogMDsKKyAgICBpZiAoIW5rd2FyZ3MpIHsKKyAgICAgICAgKnBfa3duYW1lcyA9IE5VTEw7CisgICAgICAgIHJldHVybiBhcmdzOworICAgIH0KKworICAgIGlmICgoc2l6ZV90KW5hcmdzID4gUFlfU1NJWkVfVF9NQVggLyBzaXplb2Yoc3RhY2tbMF0pIC0gKHNpemVfdClua3dhcmdzKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0YWNrID0gUHlNZW1fTWFsbG9jKChuYXJncyArIG5rd2FyZ3MpICogc2l6ZW9mKHN0YWNrWzBdKSk7CisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAga3duYW1lcyA9IFB5VHVwbGVfTmV3KG5rd2FyZ3MpOworICAgIGlmIChrd25hbWVzID09IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIENvcHkgcG9zaXRpb24gYXJndW1lbnRzIChib3Jyb3dlZCByZWZlcmVuY2VzKSAqLworICAgIG1lbWNweShzdGFjaywgYXJncywgbmFyZ3MgKiBzaXplb2Yoc3RhY2tbMF0pKTsKKworICAgIGt3c3RhY2sgPSBzdGFjayArIG5hcmdzOworICAgIHBvcyA9IGkgPSAwOworICAgIC8qIFRoaXMgbG9vcCBkb2Vzbid0IHN1cHBvcnQgbG9va3VwIGZ1bmN0aW9uIG11dGF0aW5nIHRoZSBkaWN0aW9uYXJ5CisgICAgICAgdG8gY2hhbmdlIGl0cyBzaXplLiBJdCdzIGEgZGVsaWJlcmF0ZSBjaG9pY2UgZm9yIHNwZWVkLCB0aGlzIGZ1bmN0aW9uIGlzCisgICAgICAgY2FsbGVkIGluIHRoZSBwZXJmb3JtYW5jZSBjcml0aWNhbCBob3QgY29kZS4gKi8KKyAgICB3aGlsZSAoUHlEaWN0X05leHQoa3dhcmdzLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGt3bmFtZXMsIGksIGtleSk7CisgICAgICAgIC8qIFRoZSBzdGFjayBjb250YWlucyBib3Jyb3dlZCByZWZlcmVuY2VzICovCisgICAgICAgIGt3c3RhY2tbaV0gPSB2YWx1ZTsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgICpwX2t3bmFtZXMgPSBrd25hbWVzOworICAgIHJldHVybiBzdGFjazsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3duYW1lcykKK3sKKyAgICBQeU9iamVjdCAqa3dkaWN0LCAqcmVzdWx0OworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IChrd25hbWVzID09IE5VTEwpID8gMCA6IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoa3duYW1lcykpOworICAgIGFzc2VydCgobmFyZ3MgPT0gMCAmJiBua3dhcmdzID09IDApIHx8IHN0YWNrICE9IE5VTEwpOworICAgIC8qIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWU6IHRoZXNlIGFyZSBpbXBsZW1lbnRlZCBpbiBQeXRob24vY2V2YWwuYyBhbmQKKyAgICAgICBfUHlBcmdfUGFyc2VTdGFjaygpLiAqLworCisgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgcmV0dXJuIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICB9CisKKyAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgcmV0dXJuIF9QeUNGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgfQorCisgICAgaWYgKG5rd2FyZ3MgPiAwKSB7CisgICAgICAgIGt3ZGljdCA9IF9QeVN0YWNrX0FzRGljdChzdGFjayArIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAga3dkaWN0ID0gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBuYXJncywga3dkaWN0KTsKKyAgICBQeV9YREVDUkVGKGt3ZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0KgogY2FsbF9mdW5jdGlvbl90YWlsKFB5T2JqZWN0ICpjYWxsYWJsZSwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJldHZhbDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCk7CiAKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKLSAgICAgICAgUHlPYmplY3QgKmE7Ci0KLSAgICAgICAgYSA9IFB5VHVwbGVfTmV3KDEpOwotICAgICAgICBpZiAoYSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGEsIDAsIGFyZ3MpOwotICAgICAgICBhcmdzID0gYTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKGNhbGxhYmxlLCBhcmdzKTsKICAgICB9Ci0gICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOworICAgIH0KIAotICAgIFB5X0RFQ1JFRihhcmdzKTsKLQotICAgIHJldHVybiByZXR2YWw7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5T2JqZWN0ICpjYWxsYWJsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKIAotICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0KLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7Ci0gICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CisgICAgaWYgKCFmb3JtYXQgfHwgISpmb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoY2FsbGFibGUpOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7CisgICAgdmFfZW5kKHZhKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQoUHlPYmplY3QgKmNhbGxhYmxlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKLQotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogCi0gICAgcmV0dXJuIGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CisgICAgaWYgKCFmb3JtYXQgfHwgISpmb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoY2FsbGFibGUpOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOworICAgIHZhX2VuZCh2YSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUHlPYmplY3QqCiBjYWxsbWV0aG9kKFB5T2JqZWN0KiBmdW5jLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEsIGludCBpc19zaXplX3QpCiB7Ci0gICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKIAogICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewogICAgICAgICB0eXBlX2Vycm9yKCJhdHRyaWJ1dGUgb2YgdHlwZSAnJS4yMDBzJyBpcyBub3QgY2FsbGFibGUiLCBmdW5jKTsKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgaWYgKGlzX3NpemVfdCkKLSAgICAgICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOworICAgIGlmICghZm9ybWF0IHx8ICEqZm9ybWF0KSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKIAotICAgIHJldHZhbCA9IGNhbGxfZnVuY3Rpb25fdGFpbChmdW5jLCBhcmdzKTsKKyAgICBpZiAoaXNfc2l6ZV90KSB7CisgICAgICAgIGFyZ3MgPSBfUHlfVmFCdWlsZFZhbHVlX1NpemVUKGZvcm1hdCwgdmEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKKyAgICB9CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgZXhpdDoKLSAgICAvKiBhcmdzIGdldHMgY29uc3VtZWQgaW4gY2FsbF9mdW5jdGlvbl90YWlsICovCi0gICAgUHlfWERFQ1JFRihmdW5jKTsKLQotICAgIHJldHVybiByZXR2YWw7CisgICAgcmVzdWx0ID0gY2FsbF9mdW5jdGlvbl90YWlsKGZ1bmMsIGFyZ3MpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCkBAIC0yMjc0LDggKzI1ODksOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKQEAgLTIyODQsNiArMjYwMCw3IEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yMjk1LDggKzI2MTIsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKQEAgLTIzMDUsNiArMjYyMyw3IEBACiAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKICAgICB2YV9lbmQodmEpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0yMzE2LDggKzI2MzUsOSBAQAogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQpAQCAtMjMyNSw2ICsyNjQ1LDcgQEAKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDEpOwogICAgIHZhX2VuZCh2YSk7CisgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTIzMzYsOCArMjY1Nyw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKQEAgLTIzNDYsMzkgKzI2NjgsNjMgQEAKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDEpOwogICAgIHZhX2VuZCh2YSk7CisgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1vYmphcmdzX21rdHVwbGUodmFfbGlzdCB2YSkKK3N0YXRpYyBQeU9iamVjdCAqKgorb2JqYXJnc19ta3N0YWNrKFB5T2JqZWN0ICoqc21hbGxfc3RhY2ssIFB5X3NzaXplX3Qgc21hbGxfc3RhY2tfc2l6ZSwKKyAgICAgICAgICAgICAgICB2YV9saXN0IHZhLCBQeV9zc2l6ZV90ICpwX25hcmdzKQogewotICAgIGludCBpLCBuID0gMDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgdmFfbGlzdCBjb3VudHZhOwotICAgIFB5T2JqZWN0ICpyZXN1bHQsICp0bXA7CisgICAgUHlPYmplY3QgKipzdGFjazsKIAotICAgICAgICBQeV9WQV9DT1BZKGNvdW50dmEsIHZhKTsKKyAgICAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyAqLworICAgIHZhX2NvcHkoY291bnR2YSwgdmEpOwogCi0gICAgd2hpbGUgKCgoUHlPYmplY3QgKil2YV9hcmcoY291bnR2YSwgUHlPYmplY3QgKikpICE9IE5VTEwpCi0gICAgICAgICsrbjsKLSAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhuKTsKLSAgICBpZiAocmVzdWx0ICE9IE5VTEwgJiYgbiA+IDApIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgewotICAgICAgICAgICAgdG1wID0gKFB5T2JqZWN0ICopdmFfYXJnKHZhLCBQeU9iamVjdCAqKTsKLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCBpLCB0bXApOwotICAgICAgICAgICAgUHlfSU5DUkVGKHRtcCk7CisgICAgbiA9IDA7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgUHlPYmplY3QgKmFyZyA9IHZhX2FyZyhjb3VudHZhLCBQeU9iamVjdCAqKTsKKyAgICAgICAgaWYgKGFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBuKys7CisgICAgfQorICAgICpwX25hcmdzID0gbjsKKworICAgIC8qIENvcHkgYXJndW1lbnRzICovCisgICAgaWYgKG4gPD0gc21hbGxfc3RhY2tfc2l6ZSkgeworICAgICAgICBzdGFjayA9IHNtYWxsX3N0YWNrOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSBQeU1lbV9NYWxsb2MobiAqIHNpemVvZihzdGFja1swXSkpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFfZW5kKGNvdW50dmEpOworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgIHN0YWNrW2ldID0gdmFfYXJnKHZhLCBQeU9iamVjdCAqKTsKKyAgICB9CisgICAgdmFfZW5kKGNvdW50dmEpOworICAgIHJldHVybiBzdGFjazsKIH0KIAogUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLCBQeU9iamVjdCAqbmFtZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGNhbGxhYmxlID0gUHlPYmplY3RfR2V0QXR0cihjYWxsYWJsZSwgbmFtZSk7CiAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCkBAIC0yMzg2LDI4ICsyNzMyLDM2IEBACiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBuYW1lKTsKLSAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICBzdGFjayA9IG9iamFyZ3NfbWtzdGFjayhzbWFsbF9zdGFjaywgUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJncywgJm5hcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChjYWxsYWJsZSA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGNhbGxhYmxlID0gX1B5T2JqZWN0X0dldEF0dHJJZChjYWxsYWJsZSwgbmFtZSk7CiAgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCkBAIC0yNDE1LDM4ICsyNzY5LDUxIEBACiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBuYW1lKTsKLSAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICBzdGFjayA9IG9iamFyZ3NfbWtzdGFjayhzbWFsbF9zdGFjaywgUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJncywgJm5hcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwgLi4uKQogewotICAgIFB5T2JqZWN0ICphcmdzLCAqdG1wOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICB2YV9saXN0IHZhcmdzOwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICAvKiBjb3VudCB0aGUgYXJncyAqLwogICAgIHZhX3N0YXJ0KHZhcmdzLCBjYWxsYWJsZSk7Ci0gICAgYXJncyA9IG9iamFyZ3NfbWt0dXBsZSh2YXJncyk7CisgICAgc3RhY2sgPSBvYmphcmdzX21rc3RhY2soc21hbGxfc3RhY2ssIFB5X0FSUkFZX0xFTkdUSChzbWFsbF9zdGFjayksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZ3MsICZuYXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQorICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CiAKLSAgICByZXR1cm4gdG1wOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChjYWxsYWJsZSwgc3RhY2ssIG5hcmdzKTsKKyAgICBpZiAoc3RhY2sgIT0gc21hbGxfc3RhY2spIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjayk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwppbmRleCA2ZDRjNmExLi5jNmQwNzA3IDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKQEAgLTI3OCwzMSArMjc4LDYgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zvcm1hdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKmJ5dGVzX2luLCAqYnl0ZXNfb3V0LCAqcmVzOwotICAgIGNoYXIgKmJ5dGVzdHJpbmc7Ci0KLSAgICBpZiAoc2VsZiA9PSBOVUxMIHx8ICFQeUJ5dGVBcnJheV9DaGVjayhzZWxmKSB8fCBhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBieXRlc3RyaW5nID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIGJ5dGVzX2luID0gUHlCeXRlc19Gcm9tU3RyaW5nKGJ5dGVzdHJpbmcpOwotICAgIGlmIChieXRlc19pbiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBieXRlc19vdXQgPSBfUHlCeXRlc19Gb3JtYXQoYnl0ZXNfaW4sIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihieXRlc19pbik7Ci0gICAgaWYgKGJ5dGVzX291dCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0KGJ5dGVzX291dCk7Ci0gICAgUHlfREVDUkVGKGJ5dGVzX291dCk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVzOwotfQotCiAvKiBGdW5jdGlvbnMgc3R1ZmZlZCBpbnRvIHRoZSB0eXBlIG9iamVjdCAqLwogCiBzdGF0aWMgUHlfc3NpemVfdApAQCAtODIwLDE3ICs3OTUsMTUgQEAKICAgICB9CiAKICAgICAvKiBJcyBpdCBhbiBpbnQ/ICovCi0gICAgY291bnQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKLSAgICBpZiAoY291bnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICBpZiAoUHlJbmRleF9DaGVjayhhcmcpKSB7CisgICAgICAgIGNvdW50ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChjb3VudCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGNvdW50IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvdW50IDwgMCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CiAgICAgICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgY291bnQpKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTExMTksMTYxICsxMDkyLDI3IEBACiAjaW5jbHVkZSAic3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIgogCiAKLS8qIFRoZSBmb2xsb3dpbmcgUHlfTE9DQUxfSU5MSU5FIGFuZCBQeV9MT0NBTCBmdW5jdGlvbnMKLXdlcmUgY29waWVkIGZyb20gdGhlIG9sZCBjaGFyKiBzdHlsZSBzdHJpbmcgb2JqZWN0LiAqLwotCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1ieXRlYXJyYXlfZmluZF9pbnRlcm5hbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCi17Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfYnVmZmVyIHN1YmJ1ZjsKLSAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47Ci0gICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiAtMjsKLQotICAgIGlmIChzdWJvYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMjsKLQotICAgICAgICBzdWIgPSBzdWJidWYuYnVmOwotICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0gICAgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOwotICAgIGlmIChlbmQgLSBzdGFydCA8IHN1Yl9sZW4pCi0gICAgICAgIHJlcyA9IC0xOwotICAgIGVsc2UgaWYgKHN1Yl9sZW4gPT0gMQotI2lmbmRlZiBIQVZFX01FTVJDSFIKLSAgICAgICAgICAgICYmIGRpciA+IDAKLSNlbmRpZgotICAgICkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZSA9ICpzdWI7Ci0gICAgICAgIGludCBtb2RlID0gKGRpciA+IDApID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7Ci0gICAgICAgIHJlcyA9IHN0cmluZ2xpYl9mYXN0c2VhcmNoX21lbWNocl8xY2hhcigKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgIG5lZWRsZSwgbmVlZGxlLCBtb2RlKTsKLSAgICAgICAgaWYgKHJlcyA+PSAwKQotICAgICAgICAgICAgcmVzICs9IHN0YXJ0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGRpciA+IDApCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBsZW4sCi0gICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKLSAgICB9Ci0KLSAgICBpZiAoc3Vib2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotUHlEb2NfU1RSVkFSKGZpbmRfX2RvY19fLAotIkIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9maW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVhcnJheV9maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19maW5kKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi1QeURvY19TVFJWQVIoY291bnRfX2RvY19fLAotIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzZWN0aW9uIHN1YiBpblxuXAotYnl0ZXMgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCi1hcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9jb3VudChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotCi0gICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmNvdW50X29iajsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHN1Yl9vYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgc3ViID0gdnN1Yi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7Ci0KLSAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCi0gICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCi0gICAgICAgICk7Ci0KLSAgICBpZiAoc3ViX29iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7Ci0KLSAgICByZXR1cm4gY291bnRfb2JqOworICAgIHJldHVybiBfUHlfYnl0ZXNfY291bnQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5jbGVhcgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBieXRlYXJyYXkuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfY2xlYXJfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWMyZmU2YWVkZTA5NTZjIGlucHV0PWU1MjRmZDMzMGFiY2RjMThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04NWMyZmU2YWVkZTA5NTZjIGlucHV0PWVkNmVkYWU5ZGU0NDdhYzRdKi8KIHsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIDApIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjgzLDI1MyArMTEyMiw3MiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmNvcHkKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldHVybiBhIGNvcHkgb2YgQi4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9jb3B5X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjhjZmJjZmVkNDg0YzEzMiBpbnB1dD02ZDVkMjk3NWFhMGYzM2YzXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjhjZmJjZmVkNDg0YzEzMiBpbnB1dD02NTk3YjBjMDFiY2NhYTllXSovCiB7CiAgICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORygoUHlPYmplY3QgKilzZWxmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikpOwogfQogCi1QeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAotIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic2VjdGlvbiBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfaW5kZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2luZGV4KFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihyZmluZF9fZG9jX18sCi0iQi5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmZpbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JmaW5kKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihyaW5kZXhfX2RvY19fLAotIkIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1MaWtlIEIucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yaW5kZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JpbmRleChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCiBzdGF0aWMgaW50CiBieXRlYXJyYXlfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9idWZmZXIgdmFyZzsKLSAgICAgICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5X1NJWkUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmcuYnVmLCB2YXJnLmxlbiwgMCk7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhcmcpOwotICAgICAgICByZXR1cm4gcG9zID49IDA7Ci0gICAgfQotICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID49IDI1NikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbWVtY2hyKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgKGludCkgaXZhbCwgUHlfU0laRShzZWxmKSkgIT0gTlVMTDsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvbnRhaW5zKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZyk7CiB9CiAKLQotLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHNlbGYKLSAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKLSAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KLSAqLwotUHlfTE9DQUwoaW50KQotX2J5dGVhcnJheV90YWlsbWF0Y2goUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLCBpbnQgZGlyZWN0aW9uKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgY29uc3QgY2hhciogc3RyOwotICAgIFB5X2J1ZmZlciB2c3Vic3RyOwotICAgIGludCBydiA9IDA7Ci0KLSAgICBzdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1YnN0ciwgJnZzdWJzdHIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLQotICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7Ci0gICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KLSAgICAgICAgaWYgKHN0YXJ0K3ZzdWJzdHIubGVuID4gbGVuKSB7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvKiBlbmRzd2l0aCAqLwotICAgICAgICBpZiAoZW5kLXN0YXJ0IDwgdnN1YnN0ci5sZW4gfHwgc3RhcnQgPiBsZW4pIHsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChlbmQtdnN1YnN0ci5sZW4gPiBzdGFydCkKLSAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gdnN1YnN0ci5sZW47Ci0gICAgfQotICAgIGlmIChlbmQtc3RhcnQgPj0gdnN1YnN0ci5sZW4pCi0gICAgICAgIHJ2ID0gISBtZW1jbXAoc3RyK3N0YXJ0LCB2c3Vic3RyLmJ1ZiwgdnN1YnN0ci5sZW4pOwotCi1kb25lOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWJzdHIpOwotICAgIHJldHVybiBydjsKLX0KLQotCi1QeURvY19TVFJWQVIoc3RhcnRzd2l0aF9fZG9jX18sCi0iQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zdGFydHN3aXRoKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoInN0YXJ0c3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib3IgYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotUHlEb2NfU1RSVkFSKGVuZHN3aXRoX19kb2NfXywKLSJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1zdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZW5kc3dpdGgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZW5kc3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZWFycmF5X3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2VuZHN3aXRoKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS50cmFuc2xhdGUKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgdGFibGU6IG9iamVjdAogICAgICAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LgotICAgIFsKLSAgICBkZWxldGVjaGFyczogb2JqZWN0Ci0gICAgXQogICAgIC8KKyAgICBkZWxldGUgYXMgZGVsZXRlY2hhcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJwogCiBSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIAotQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK0FsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgogVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfcmlnaHRfMSwgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJiZWJjODZhOWExZmYwODMgaW5wdXQ9Yjc0OWFkODVmNDg2MDgyNF0qLworICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iNmE4ZjAxYzJhNzRlNDQ2IGlucHV0PWNmZmY5NTZkNGQxMjdhOWJdKi8KIHsKICAgICBjaGFyICppbnB1dCwgKm91dHB1dDsKICAgICBjb25zdCBjaGFyICp0YWJsZV9jaGFyczsKQEAgLTE1NzIsNyArMTIzMCw3IEBACiAgICAgcmVzdWx0ID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBpbmxlbik7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhpbnB1dF9vYmopOwogCiAgICAgaWYgKHZkZWwubGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewpAQCAtMTU5OCw4ICsxMjU2LDcgQEAKICAgICBmb3IgKGkgPSBpbmxlbjsgLS1pID49IDA7ICkgewogICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmlucHV0KyspOwogICAgICAgICBpZiAodHJhbnNfdGFibGVbY10gIT0gLTEpCi0gICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKm91dHB1dCsrID0gKGNoYXIpdHJhbnNfdGFibGVbY10pID09IGMpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgKm91dHB1dCsrID0gKGNoYXIpdHJhbnNfdGFibGVbY107CiAgICAgfQogICAgIC8qIEZpeCB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLwogICAgIGlmIChpbmxlbiA+IDApCkBAIC0xNjQyLDQ5MyArMTI5OSw2IEBACiB9CiAKIAotLyogZmluZCBhbmQgY291bnQgY2hhcmFjdGVycyBhbmQgc3Vic3RyaW5ncyAqLwotCi0jZGVmaW5lIGZpbmRjaGFyKHRhcmdldCwgdGFyZ2V0X2xlbiwgYykgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoKGNoYXIgKiltZW1jaHIoKGNvbnN0IHZvaWQgKikodGFyZ2V0KSwgYywgdGFyZ2V0X2xlbikpCi0KLQotLyogQnl0ZXMgb3BzIG11c3QgcmV0dXJuIGEgc3RyaW5nLCBjcmVhdGUgYSBjb3B5ICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmV0dXJuX3NlbGYoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi17Ci0gICAgLyogYWx3YXlzIHJldHVybiBhIG5ldyBieXRlYXJyYXkgKi8KLSAgICByZXR1cm4gKFB5Qnl0ZUFycmF5T2JqZWN0ICopUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksCi0gICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7Ci19Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotY291bnRjaGFyKGNvbnN0IGNoYXIgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRfbGVuLCBjaGFyIGMsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgUHlfc3NpemVfdCBjb3VudD0wOwotICAgIGNvbnN0IGNoYXIgKnN0YXJ0PXRhcmdldDsKLSAgICBjb25zdCBjaGFyICplbmQ9dGFyZ2V0K3RhcmdldF9sZW47Ci0KLSAgICB3aGlsZSAoIChzdGFydD1maW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBjKSkgIT0gTlVMTCApIHsKLSAgICAgICAgY291bnQrKzsKLSAgICAgICAgaWYgKGNvdW50ID49IG1heGNvdW50KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHN0YXJ0ICs9IDE7Ci0gICAgfQotICAgIHJldHVybiBjb3VudDsKLX0KLQotCi0vKiBBbGdvcml0aG1zIGZvciBkaWZmZXJlbnQgY2FzZXMgb2Ygc3RyaW5nIHJlcGxhY2VtZW50ICovCi0KLS8qIGxlbihzZWxmKT49MSwgZnJvbT0iIiwgbGVuKHRvKT49MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX2ludGVybGVhdmUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIGk7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKLSAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLwotICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikKLSAgICAgICAgY291bnQgPSBtYXhjb3VudDsKLSAgICBlbHNlCi0gICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCi0gICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOwotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOwotCi0gICAgaWYgKCEgKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIC8qIFRPRE86IHNwZWNpYWwgY2FzZSBzaW5nbGUgY2hhcmFjdGVyLCB3aGljaCBkb2Vzbid0IG5lZWQgbWVtY3B5ICovCi0KLSAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIGNvdW50IC09IDE7Ci0KLSAgICBmb3IgKGk9MDsgaTxjb3VudDsgaSsrKSB7Ci0gICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICB9Ci0KLSAgICAvKiBDb3B5IHRoZSByZXN0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4taSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLwotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIGNvdW50OyAgLyogZnJvbV9sZW4gPT0gMSAqLwotICAgIGFzc2VydChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLQotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIChjb3VudCAqIGZyb21fbGVuKTsKLSAgICBhc3NlcnQgKHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMICkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7Ci0KLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0KLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBjaGFyIHRvX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kLCAqbmV4dDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuOwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIG5leHQgPSBmaW5kY2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MpOwotCi0gICAgaWYgKG5leHQgPT0gTlVMTCkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBOZWVkIHRvIG1ha2UgYSBuZXcgYnl0ZXMgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0LXNlbGZfcyk7Ci0gICAgKnN0YXJ0ID0gdG9fYzsKLSAgICBzdGFydCsrOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKm5leHQgPSB0b19jOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kOwotICAgIGNoYXIgKnNlbGZfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCBvZmZzZXQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgYnl0ZXMgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICBpZiAob2Zmc2V0ID09IC0xKSB7Ci0gICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmX2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OwotICAgIFB5X01FTUNQWShzdGFydCwgdG9fcywgZnJvbV9sZW4pOwotICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0PT0tMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkoc3RhcnQrb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgICAgIHN0YXJ0ICs9IG9mZnNldCtmcm9tX2xlbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIHVzZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgYW5kIG5ldywgaGVuY2UgdGhlICItMSIgKi8KLSAgICAvKiAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi0xKSAgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gMSA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gMSk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPj0yLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLWZyb21fbGVuKSAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSBmcm9tX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gZnJvbV9sZW4pOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0K29mZnNldDsKLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgaWYgKG1heGNvdW50IDwgMCkgewotICAgICAgICBtYXhjb3VudCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIH0gZWxzZSBpZiAobWF4Y291bnQgPT0gMCB8fCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmIChtYXhjb3VudCA9PSAwIHx8Ci0gICAgICAgIChmcm9tX2xlbiA9PSAwICYmIHRvX2xlbiA9PSAwKSkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IDApIHsKLSAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIGJ5dGVzIGV2ZXJ5d2hlcmUuICAgKi8KLSAgICAgICAgLyogICAgPj4+ICJQeXRob24iLnJlcGxhY2UoIiIsICIuIikgICAgICovCi0gICAgICAgIC8qICAgICcuUC55LnQuaC5vLm4uJyAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9pbnRlcmxlYXZlKHNlbGYsIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0KLQotICAgIC8qIEV4Y2VwdCBmb3IgIiIucmVwbGFjZSgiIiwgIkEiKSA9PSAiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCi0gICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgYnl0ZXMgdG8gZ2VuZXJhdGUgYSBub24tZW1wdHkgYnl0ZXMgKi8KLSAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IGJ5dGVzICovCi0gICAgaWYgKFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmICh0b19sZW4gPT0gMCkgewotICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBieXRlcyAqLwotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggYnl0ZXMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKi8KLQotICAgIGlmIChmcm9tX2xlbiA9PSB0b19sZW4pIHsKLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgdG9fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KLSAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKHNlbGYsIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci19Ci0KLQogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJlcGxhY2UKIApAQCAtMjE1MCw5ICsxMzIwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfYnVmZmVyICpuZXcsIFB5X3NzaXplX3QgY291bnQpCiAvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDM5ODg0YzRkYzU5NDEyYSBpbnB1dD1hYTM3OWQ5ODg2MzdjN2ZiXSovCiB7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZUFycmF5T2JqZWN0ICopIHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkLT5idWYsIG9sZC0+bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOworICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZSgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLypbY2xpbmljIGlucHV0XQpAQCAtMjIwMCw3ICsxMzcwLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5wYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgc2VwOiBvYmplY3QKICAgICAvCiAKQEAgLTIyMTYsNyArMTM4NSw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1ZDI1MjVkZGQzNWY5NTcgaW5wdXQ9N2Q3ZmUzN2IxNjk2ZDUwNl0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ1ZDI1MjVkZGQzNWY5NTcgaW5wdXQ9ODZmODkyMjM4OTJiNzBiNV0qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCkBAIC0yMjM4LDcgKzE0MDcsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJwYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgc2VwOiBvYmplY3QKICAgICAvCiAKQEAgLTIyNTQsNyArMTQyMiw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnBhcnRpdGlvbihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDBkZTNjOTQyNjExNWU4IGlucHV0PTliOGNkNTQwYzFiNzU4NTNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00NDBkZTNjOTQyNjExNWU4IGlucHV0PTVmNDA5NGYyZGU4N2M4ZjNdKi8KIHsKICAgICBQeU9iamVjdCAqYnl0ZXNlcCwgKnJlc3VsdDsKIApAQCAtMjMxMiwxNCArMTQ4MCwxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnJldmVyc2UKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldmVyc2UgdGhlIG9yZGVyIG9mIHRoZSB2YWx1ZXMgaW4gQiBpbiBwbGFjZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZXZlcnNlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY3NjE2ZjI5YWIzMDlkMyBpbnB1dD03OTMzYTQ5OWI4NTk3YmQxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OWY3NjE2ZjI5YWIzMDlkMyBpbnB1dD01NDMzNTYzMTlmYzc4NTU3XSovCiB7CiAgICAgY2hhciBzd2FwLCAqaGVhZCwgKnRhaWw7CiAgICAgUHlfc3NpemVfdCBpLCBqLCBuID0gUHlfU0laRShzZWxmKTsKQEAgLTIzNDgsNyArMTUxNCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuaW5zZXJ0CiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGluZGV4OiBQeV9zc2l6ZV90CiAgICAgICAgIFRoZSBpbmRleCB3aGVyZSB0aGUgdmFsdWUgaXMgdG8gYmUgaW5zZXJ0ZWQuCiAgICAgaXRlbTogYnl0ZXN2YWx1ZQpAQCAtMjM2MCw3ICsxNTI1LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9pbnNlcnRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgaW50IGl0ZW0pCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZjNzc1YTcwZTdiMDdiNyBpbnB1dD04MzM3NjY4MzZiYTMwZTFlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzZjNzc1YTcwZTdiMDdiNyBpbnB1dD1iMmI1ZDA3ZTlkZTZjMDcwXSovCiB7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWY7CkBAIC0yMzkwLDcgKzE1NTUsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmFwcGVuZAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBpdGVtOiBieXRlc3ZhbHVlCiAgICAgICAgIFRoZSBpdGVtIHRvIGJlIGFwcGVuZGVkLgogICAgIC8KQEAgLTI0MDAsNyArMTU2NCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfYXBwZW5kX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBpdGVtKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWExNTRlMTllZDE4ODZjYjYgaW5wdXQ9YWU1NmVhODczODA0MDdjY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWExNTRlMTllZDE4ODZjYjYgaW5wdXQ9MjBkNmJlYzNkMTM0MDU5M10qLwogewogICAgIFB5X3NzaXplX3QgbiA9IFB5X1NJWkUoc2VsZik7CiAKQEAgLTI0MjAsNyArMTU4NCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuZXh0ZW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGl0ZXJhYmxlX29mX2ludHM6IG9iamVjdAogICAgICAgICBUaGUgaXRlcmFibGUgb2YgaXRlbXMgdG8gYXBwZW5kLgogICAgIC8KQEAgLTI0MzAsNyArMTU5Myw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZXh0ZW5kKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfaW50cykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODE1NWRiZTI0OTE3MGIxIGlucHV0PWNlODNhNWQ3NWI3MGQ4NTBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05ODE1NWRiZTI0OTE3MGIxIGlucHV0PWM2MTdiM2E5MzI0OWJhMjhdKi8KIHsKICAgICBQeU9iamVjdCAqaXQsICppdGVtLCAqYnl0ZWFycmF5X29iajsKICAgICBQeV9zc2l6ZV90IGJ1Zl9zaXplID0gMCwgbGVuID0gMDsKQEAgLTI1MTUsNyArMTY3OCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucG9wCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGluZGV4OiBQeV9zc2l6ZV90ID0gLTEKICAgICAgICAgVGhlIGluZGV4IGZyb20gd2hlcmUgdG8gcmVtb3ZlIHRoZSBpdGVtLgogICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIHJlbW92ZSB0aGUgbGFzdCBpdGVtLgpAQCAtMjUyOCw3ICsxNjkwLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9wb3BfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGNjZDQwMWY4MDIxZGE4IGlucHV0PTA3OTdlNmMwY2E5ZDVhODVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lMGNjZDQwMWY4MDIxZGE4IGlucHV0PTM1OTFkZjJkMDZjMGQyMzddKi8KIHsKICAgICBpbnQgdmFsdWU7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKQEAgLTI1NjAsNyArMTcyMiw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucmVtb3ZlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHZhbHVlOiBieXRlc3ZhbHVlCiAgICAgICAgIFRoZSB2YWx1ZSB0byByZW1vdmUuCiAgICAgLwpAQCAtMjU3MCwyMCArMTczMSwyMCBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JlbW92ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY1OWUzNzg2NjcwOWMxMyBpbnB1dD00NzU2MGIxMWZkODU2YzI0XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDY1OWUzNzg2NjcwOWMxMyBpbnB1dD0xMjE4MzEyNDBjZDUxZGRmXSovCiB7Ci0gICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKKyAgICBQeV9zc2l6ZV90IHdoZXJlLCBuID0gUHlfU0laRShzZWxmKTsKICAgICBjaGFyICpidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgY2hhciAqd2hlcmUgPSBtZW1jaHIoYnVmLCB2YWx1ZSwgbik7CiAKLSAgICBpZiAoIXdoZXJlKSB7CisgICAgd2hlcmUgPSBzdHJpbmdsaWJfZmluZF9jaGFyKGJ1ZiwgbiwgdmFsdWUpOworICAgIGlmICh3aGVyZSA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ2YWx1ZSBub3QgZm91bmQgaW4gYnl0ZWFycmF5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIV9jYW5yZXNpemUoc2VsZikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWVtbW92ZSh3aGVyZSwgd2hlcmUgKyAxLCBidWYgKyBuIC0gd2hlcmUpOworICAgIG1lbW1vdmUoYnVmICsgd2hlcmUsIGJ1ZiArIHdoZXJlICsgMSwgbiAtIHdoZXJlKTsKICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKChQeU9iamVjdCAqKXNlbGYsIG4gLSAxKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yNTkzLDggKzE3NTQsOCBAQAogLyogWFhYIFRoZXNlIHR3byBoZWxwZXJzIGNvdWxkIGJlIG9wdGltaXplZCBpZiBhcmdzaXplID09IDEgKi8KIAogc3RhdGljIFB5X3NzaXplX3QKLWxzdHJpcF9oZWxwZXIoY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAotICAgICAgICAgICAgICB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKK2xzdHJpcF9oZWxwZXIoY29uc3QgY2hhciAqbXlwdHIsIFB5X3NzaXplX3QgbXlzaXplLAorICAgICAgICAgICAgICBjb25zdCB2b2lkICphcmdwdHIsIFB5X3NzaXplX3QgYXJnc2l6ZSkKIHsKICAgICBQeV9zc2l6ZV90IGkgPSAwOwogICAgIHdoaWxlIChpIDwgbXlzaXplICYmIG1lbWNocihhcmdwdHIsICh1bnNpZ25lZCBjaGFyKSBteXB0cltpXSwgYXJnc2l6ZSkpCkBAIC0yNjAzLDggKzE3NjQsOCBAQAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotcnN0cmlwX2hlbHBlcihjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCi0gICAgICAgICAgICAgIHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQorcnN0cmlwX2hlbHBlcihjb25zdCBjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCisgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQogewogICAgIFB5X3NzaXplX3QgaSA9IG15c2l6ZSAtIDE7CiAgICAgd2hpbGUgKGkgPj0gMCAmJiBtZW1jaHIoYXJncHRyLCAodW5zaWduZWQgY2hhcikgbXlwdHJbaV0sIGFyZ3NpemUpKQpAQCAtMjgwNSwyNyArMTk2NiwxMCBAQAogICAgICAgICApOwogfQogCi1zdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKLXsKLSAgICBpZiAoYyA+PSAxMjgpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKGMpKQotICAgICAgICAgICAgYyA9IFB5X1RPTE9XRVIoYyk7Ci0gICAgICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBieXRlYXJyYXkuZnJvbWhleAogCi0gICAgY2xzOiBzZWxmKHR5cGU9IlB5T2JqZWN0KiIpCiAgICAgc3RyaW5nOiB1bmljb2RlCiAgICAgLwogCkBAIC0yODM2LDUxICsxOTgwLDE1IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZnJvbWhleF9pbXBsKFB5T2JqZWN0KmNscywgUHlPYmplY3QgKnN0cmluZykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kZjNkYTYwMTI5YjM3MDBjIGlucHV0PTkwN2JiZDJkMzRkOTM2N2FdKi8KK2J5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PThmMGYwYjZkMzBmYjNiYTAgaW5wdXQ9ZjAzM2ExNmQxZmIyMWY0OF0qLwogewotICAgIFB5T2JqZWN0ICpuZXdieXRlczsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwotICAgIGludCB0b3AsIGJvdDsKLSAgICB2b2lkICpkYXRhOwotICAgIHVuc2lnbmVkIGludCBraW5kOwotCi0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKTsKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7Ci0KLSAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwotICAgIG5ld2J5dGVzID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwotICAgIGlmICghbmV3Ynl0ZXMpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhuZXdieXRlcyk7Ci0gICAgZm9yIChpID0gaiA9IDA7IGkgPCBoZXhsZW47IGkgKz0gMikgewotICAgICAgICAvKiBza2lwIG92ZXIgc3BhY2VzIGluIHRoZSBpbnB1dCAqLwotICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQotICAgICAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7Ci0gICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaSk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZltqKytdID0gKHRvcCA8PCA0KSArIGJvdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUhleChzdHJpbmcsIHR5cGUgPT0gJlB5Qnl0ZUFycmF5X1R5cGUpOworICAgIGlmICh0eXBlICE9ICZQeUJ5dGVBcnJheV9UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0ICopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsIE5VTEwpKTsKICAgICB9Ci0gICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZShuZXdieXRlcywgaikgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldHVybiBuZXdieXRlczsKLQotICBlcnJvcjoKLSAgICBQeV9ERUNSRUYobmV3Ynl0ZXMpOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5RG9jX1NUUlZBUihoZXhfX2RvY19fLApAQCAtMjkzNSwxNCArMjA0MywxMiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fcmVkdWNlX18gYXMgYnl0ZWFycmF5X3JlZHVjZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZWR1Y2VfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmJmMzA0MDg2NDY0Y2FiIGlucHV0PWZiYjA3ZGU0ZDEwMmEwM2FdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MmJmMzA0MDg2NDY0Y2FiIGlucHV0PTQ0YjU3MzdhZGE2MmRkM2ZdKi8KIHsKICAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgMik7CiB9CkBAIC0yOTUwLDcgKzIwNTYsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5Ll9fcmVkdWNlX2V4X18gYXMgYnl0ZWFycmF5X3JlZHVjZV9leAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBwcm90bzogaW50ID0gMAogICAgIC8KIApAQCAtMjk1OSw3ICsyMDY0LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IHByb3RvKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyZWFjMzMzNzcxOTc1MjAgaW5wdXQ9MGUwOTFhNDJjYTZkYmQ5MV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyZWFjMzMzNzcxOTc1MjAgaW5wdXQ9ZjEyOWJjMWExYWExNTFlZV0qLwogewogICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCBwcm90byk7CiB9CkBAIC0yOTY3LDE0ICsyMDcyLDEyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuX19zaXplb2ZfXyBhcyBieXRlYXJyYXlfc2l6ZW9mCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBieXRlYXJyYXkgb2JqZWN0IGluIG1lbW9yeSwgaW4gYnl0ZXMuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc2l6ZW9mX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM4YWJkZDE3OTUxYzQyNyBpbnB1dD02YjIzZDMwNTM2MmI0NjJiXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NzM4YWJkZDE3OTUxYzQyNyBpbnB1dD1lMjczMjBmZDk4YTRiYzVhXSovCiB7CiAgICAgUHlfc3NpemVfdCByZXM7CiAKQEAgLTMwMTUsMTkgKzIxMTgsMjIgQEAKICAgICBCWVRFQVJSQVlfQVBQRU5EX01FVEhPRERFRgogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCi0gICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKKyAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIF9QeV9jZW50ZXJfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfQ0xFQVJfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX0NPUFlfTUVUSE9EREVGCi0gICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfY291bnQsIE1FVEhfVkFSQVJHUywgY291bnRfX2RvY19ffSwKKyAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3VudCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY291bnRfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfREVDT0RFX01FVEhPRERFRgotICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2VuZHN3aXRoLCBNRVRIX1ZBUkFSR1MsIGVuZHN3aXRoX19kb2NfX30sCisgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2VuZHN3aXRoX19kb2NfX30sCiAgICAgeyJleHBhbmR0YWJzIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9leHBhbmR0YWJzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBleHBhbmR0YWJzX19kb2NfX30sCisgICAgIF9QeV9leHBhbmR0YWJzX19kb2NfX30sCiAgICAgQllURUFSUkFZX0VYVEVORF9NRVRIT0RERUYKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZmluZCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfZmluZF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9GUk9NSEVYX01FVEhPRERFRgogICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKLSAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9pbmRleCwgTUVUSF9WQVJBUkdTLCBpbmRleF9fZG9jX199LAorICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9pbmRleF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9JTlNFUlRfTUVUSE9EREVGCiAgICAgeyJpc2FsbnVtIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FsbnVtLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzYWxudW1fX2RvY19ffSwKQEAgLTMwNDQsNyArMjE1MCw3IEBACiAgICAgeyJpc3VwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc3VwcGVyLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzdXBwZXJfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfSk9JTl9NRVRIT0RERUYKLSAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBsanVzdF9fZG9jX199LAorICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9sanVzdF9fZG9jX199LAogICAgIHsibG93ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xvd2VyLCBNRVRIX05PQVJHUywgX1B5X2xvd2VyX19kb2NfX30sCiAgICAgQllURUFSUkFZX0xTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfTUFLRVRSQU5TX01FVEhPRERFRgpAQCAtMzA1MywyMyArMjE1OSwyMyBAQAogICAgIEJZVEVBUlJBWV9SRU1PVkVfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JFUExBQ0VfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JFVkVSU0VfTUVUSE9EREVGCi0gICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKLSAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAotICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCisgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmZpbmQsIE1FVEhfVkFSQVJHUywgX1B5X3JmaW5kX19kb2NfX30sCisgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JpbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfcmluZGV4X19kb2NfX30sCisgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X3JqdXN0X19kb2NfX30sCiAgICAgQllURUFSUkFZX1JQQVJUSVRJT05fTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1JTUExJVF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUlNUUklQX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9TUExJVF9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfU1BMSVRMSU5FU19NRVRIT0RERUYKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUyAsCi0gICAgIHN0YXJ0c3dpdGhfX2RvY19ffSwKKyAgICAgX1B5X3N0YXJ0c3dpdGhfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfU1RSSVBfTUVUSE9EREVGCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAogICAgIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKLSAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAorICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIF9QeV96ZmlsbF9fZG9jX199LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzA3OCw3ICsyMTg0LDcgQEAKIHsKICAgICBpZiAoIVB5Qnl0ZUFycmF5X0NoZWNrKHYpKQogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgcmV0dXJuIGJ5dGVhcnJheV9mb3JtYXQoKFB5Qnl0ZUFycmF5T2JqZWN0ICopdiwgdyk7CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdEV4KFB5Qnl0ZUFycmF5X0FTX1NUUklORyh2KSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUodiksIHcsIDEpOwogfQogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVhcnJheV9hc19udW1iZXIgPSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCmluZGV4IGEyOTk5MTUuLmQ1YzRmZTYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCisrKyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCkBAIC0xLDMgKzEsNCBAQAorI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgogCkBAIC0yNzcsNyArMjc4LDcgQEAKIGNoYXJhY3RlcnMsIGFsbCByZW1haW5pbmcgY2FzZWQgY2hhcmFjdGVycyBoYXZlIGxvd2VyY2FzZS4iKTsKIAogdm9pZAotX1B5X2J5dGVzX3RpdGxlKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCitfUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHByZXZpb3VzX2lzX2Nhc2VkID0gMDsKQEAgLTMwNiw3ICszMDcsNyBAQAogYW5kIHRoZSByZXN0IGxvd2VyLWNhc2VkLiIpOwogCiB2b2lkCi1fUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQorX1B5X2J5dGVzX2NhcGl0YWxpemUoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKQEAgLTMzNiw3ICszMzcsNyBAQAogdG8gbG93ZXJjYXNlIEFTQ0lJIGFuZCB2aWNlIHZlcnNhLiIpOwogCiB2b2lkCi1fUHlfYnl0ZXNfc3dhcGNhc2UoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKK19QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQogewogICAgIFB5X3NzaXplX3QgaTsKIApAQCAtMzg3LDMgKzM4OCw0MjcgQEAKIAogICAgIHJldHVybiByZXM7CiB9CisKKyNkZWZpbmUgRkFTVFNFQVJDSCBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSBzdHJpbmdsaWJfIyNGCisjZGVmaW5lIFNUUklOR0xJQl9DSEFSIGNoYXIKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSIDEKKworI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKworLyoKK1dyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2hldGhlciB0aGUKK2ZpcnN0IGFyZ3VtZW50IGlzIGFuIGludGVnZXIgaW4gcmFuZ2UoMCwgMjU2KS4KKworSWYgdGhpcyBpcyB0aGUgY2FzZSwgd3JpdGVzIHRoZSBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBieXRlIHBhcmFtZXRlcgorYW5kIHNldHMgc3Vib2JqIHRvIE5VTEwuIE90aGVyd2lzZSwgc2V0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc3Vib2JqCithbmQgZG9lc24ndCB0b3VjaCBieXRlLiBUaGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZgorc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKS4KKyovCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitwYXJzZV9hcmdzX2ZpbmRzX2J5dGUoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJvYmosIGNoYXIgKmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKK3sKKyAgICBQeU9iamVjdCAqdG1wX3N1Ym9iajsKKyAgICBQeV9zc2l6ZV90IGl2YWw7CisgICAgUHlPYmplY3QgKmVycjsKKworICAgIGlmKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1Ym9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFQeU51bWJlcl9DaGVjayh0bXBfc3Vib2JqKSkgeworICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdCh0bXBfc3Vib2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICBpZiAoaXZhbCA9PSAtMSkgeworICAgICAgICBlcnIgPSBQeUVycl9PY2N1cnJlZCgpOworICAgICAgICBpZiAoZXJyICYmICFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoZXJyLCBQeUV4Y19PdmVyZmxvd0Vycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpzdWJvYmogPSBOVUxMOworICAgICpieXRlID0gKGNoYXIpaXZhbDsKKyAgICByZXR1cm4gMTsKK30KKworLyogaGVscGVyIG1hY3JvIHRvIGZpeHVwIHN0YXJ0L2VuZCBzbGljZSB2YWx1ZXMgKi8KKyNkZWZpbmUgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKSAgICAgICAgIFwKKyAgICBpZiAoZW5kID4gbGVuKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoZW5kIDwgMCkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhcnQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoc3RhcnQgPCAwKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitmaW5kX2ludGVybmFsKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLCBpbnQgZGlyKQoreworICAgIFB5T2JqZWN0ICpzdWJvYmo7CisgICAgY2hhciBieXRlOworICAgIFB5X2J1ZmZlciBzdWJidWY7CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlfc3NpemVfdCByZXM7CisKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfYnl0ZShmdW5jdGlvbl9uYW1lLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJvYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQorICAgICAgICByZXR1cm4gLTI7CisKKyAgICBpZiAoc3Vib2JqKSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vib2JqLCAmc3ViYnVmLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTI7CisKKyAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQorICAgICAgICByZXMgPSAtMTsKKyAgICBlbHNlIGlmIChzdWJfbGVuID09IDEpIHsKKyAgICAgICAgaWYgKGRpciA+IDApCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9jaGFyKAorICAgICAgICAgICAgICAgIHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAqc3ViKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX2NoYXIoCisgICAgICAgICAgICAgICAgc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICpzdWIpOworICAgICAgICBpZiAocmVzID49IDApCisgICAgICAgICAgICByZXMgKz0gc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIHN0ciwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKKyAgICAgICAgICAgICAgICBzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOworICAgIH0KKworICAgIGlmIChzdWJvYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9maW5kX19kb2NfXywKKyJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCitzdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKK2FyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKK1xuXAorUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19maW5kKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgImZpbmQiLCBhcmdzLCArMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9pbmRleF9fZG9jX18sCisiQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorTGlrZSBCLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2luZGV4KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgImluZGV4IiwgYXJncywgKzEpOworICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3Vic2VjdGlvbiBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmZpbmRfX2RvY19fLAorIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK1JldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAorc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCithcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCitcblwKK1JldHVybiAtMSBvbiBmYWlsdXJlLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfcmZpbmQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAicmZpbmQiLCBhcmdzLCAtMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9yaW5kZXhfX2RvY19fLAorIkIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitMaWtlIEIucmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX3JpbmRleChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJyaW5kZXgiLCBhcmdzLCAtMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9jb3VudF9fZG9jX18sCisiQi5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb24gc3ViIGluXG5cCitieXRlcyBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWRcblwKK2FzIGluIHNsaWNlIG5vdGF0aW9uLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfY291bnQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnN1Yl9vYmo7CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKKyAgICBjaGFyIGJ5dGU7CisgICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOworCisgICAgUHlfYnVmZmVyIHZzdWI7CisgICAgUHlPYmplY3QgKmNvdW50X29iajsKKworICAgIGlmICghcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1Yl9vYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzdWJfb2JqKSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3ViX29iaiwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHN1YiA9IHZzdWIuYnVmOworICAgICAgICBzdWJfbGVuID0gdnN1Yi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQorCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKKworICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKKyAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKKyAgICAgICAgKTsKKworICAgIGlmIChzdWJfb2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKKworICAgIHJldHVybiBjb3VudF9vYmo7Cit9CisKK2ludAorX1B5X2J5dGVzX2NvbnRhaW5zKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgTlVMTCk7CisgICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9idWZmZXIgdmFyZzsKKyAgICAgICAgUHlfc3NpemVfdCBwb3M7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChzdHIsIGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7CisgICAgICAgIHJldHVybiBwb3MgPj0gMDsKKyAgICB9CisgICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiBtZW1jaHIoc3RyLCAoaW50KSBpdmFsLCBsZW4pICE9IE5VTEw7Cit9CisKKworLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHRoZSBidWZmZXIKKyAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKKyAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KKyAqLworc3RhdGljIGludAordGFpbG1hdGNoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCit7CisgICAgUHlfYnVmZmVyIHN1Yl92aWV3ID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKnN1YjsKKyAgICBQeV9zc2l6ZV90IHNsZW47CisKKyAgICBpZiAoUHlCeXRlc19DaGVjayhzdWJzdHIpKSB7CisgICAgICAgIHN1YiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHN1YnN0cik7CisgICAgICAgIHNsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHN1YnN0cik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1YnN0ciwgJnN1Yl92aWV3LCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHN1YiA9IHN1Yl92aWV3LmJ1ZjsKKyAgICAgICAgc2xlbiA9IHN1Yl92aWV3LmxlbjsKKyAgICB9CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworCisgICAgaWYgKGRpcmVjdGlvbiA8IDApIHsKKyAgICAgICAgLyogc3RhcnRzd2l0aCAqLworICAgICAgICBpZiAoc3RhcnQgKyBzbGVuID4gbGVuKQorICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBlbmRzd2l0aCAqLworICAgICAgICBpZiAoZW5kIC0gc3RhcnQgPCBzbGVuIHx8IHN0YXJ0ID4gbGVuKQorICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKKworICAgICAgICBpZiAoZW5kIC0gc2xlbiA+IHN0YXJ0KQorICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSBzbGVuOworICAgIH0KKyAgICBpZiAoZW5kIC0gc3RhcnQgPCBzbGVuKQorICAgICAgICBnb3RvIG5vdGZvdW5kOworICAgIGlmIChtZW1jbXAoc3RyICsgc3RhcnQsIHN1Yiwgc2xlbikgIT0gMCkKKyAgICAgICAgZ290byBub3Rmb3VuZDsKKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKKyAgICByZXR1cm4gMTsKKworbm90Zm91bmQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorX1B5X2J5dGVzX3RhaWxtYXRjaChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKK3sKKyAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKKyAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOworICAgIFB5T2JqZWN0ICpzdWJvYmo7CisgICAgaW50IHJlc3VsdDsKKworICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgeworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgbGVuLCBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgfQorICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzdHIsIGxlbiwgc3Vib2JqLCBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOworICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yIGEgdHVwbGUgb2YgYnl0ZXMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9uYW1lLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3N0YXJ0c3dpdGhfX2RvY19fLAorIkIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCitcblwKK1JldHVybiBUcnVlIGlmIEIgc3RhcnRzIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKK1dpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKK1dpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCitwcmVmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19zdGFydHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBfUHlfYnl0ZXNfdGFpbG1hdGNoKHN0ciwgbGVuLCAic3RhcnRzd2l0aCIsIGFyZ3MsIC0xKTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfZW5kc3dpdGhfX2RvY19fLAorIkIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAorXG5cCitSZXR1cm4gVHJ1ZSBpZiBCIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAorV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKK3N1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2VuZHN3aXRoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBfUHlfYnl0ZXNfdGFpbG1hdGNoKHN0ciwgbGVuLCAiZW5kc3dpdGgiLCBhcmdzLCArMSk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2V4cGFuZHRhYnNfX2RvY19fLAorIkIuZXhwYW5kdGFicyh0YWJzaXplPTgpIC0+IGNvcHkgb2YgQlxuXAorXG5cCitSZXR1cm4gYSBjb3B5IG9mIEIgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSBleHBhbmRlZCB1c2luZyBzcGFjZXMuXG5cCitJZiB0YWJzaXplIGlzIG5vdCBnaXZlbiwgYSB0YWIgc2l6ZSBvZiA4IGNoYXJhY3RlcnMgaXMgYXNzdW1lZC4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfbGp1c3RfX2RvY19fLAorIkIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgorImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfcmp1c3RfX2RvY19fLAorIkIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlJldHVybiBCIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKKyJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkiKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfY2VudGVyX19kb2NfXywKKyJCLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUmV0dXJuIEIgY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiAgUGFkZGluZyBpc1xuIgorImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKS4iKTsKKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfemZpbGxfX2RvY19fLAorIkIuemZpbGwod2lkdGgpIC0+IGNvcHkgb2YgQlxuIgorIlxuIgorIlBhZCBhIG51bWVyaWMgc3RyaW5nIEIgd2l0aCB6ZXJvcyBvbiB0aGUgbGVmdCwgdG8gZmlsbCBhIGZpZWxkXG4iCisib2YgdGhlIHNwZWNpZmllZCB3aWR0aC4gIEIgaXMgbmV2ZXIgdHJ1bmNhdGVkLiIpOworCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKaW5kZXggMzkzNDMyOC4uNTk4ZjZhMSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc29iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwpAQCAtOSw5ICs5LDkgQEAKICNpbmNsdWRlIDxzdGRkZWYuaD4KIAogLypbY2xpbmljIGlucHV0XQotY2xhc3MgYnl0ZXMgIlB5Qnl0ZXNPYmplY3QqIiAiJlB5Qnl0ZXNfVHlwZSIKK2NsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0ICoiICImUHlCeXRlc19UeXBlIgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9MWExZDkxMDJhZmMxYjAwY10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2EyMzhmOTY1ZDY0ODkyYl0qLwogCiAjaW5jbHVkZSAiY2xpbmljL2J5dGVzb2JqZWN0LmMuaCIKIApAQCAtMzAsNiArMzAsMTAgQEAKICovCiAjZGVmaW5lIFB5Qnl0ZXNPYmplY3RfU0laRSAob2Zmc2V0b2YoUHlCeXRlc09iamVjdCwgb2Jfc3ZhbCkgKyAxKQogCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqc3RyKTsKKwogLyoKICAgIEZvciBQeUJ5dGVzX0Zyb21TdHJpbmcoKSwgdGhlIHBhcmFtZXRlciBgc3RyJyBwb2ludHMgdG8gYSBudWxsLXRlcm1pbmF0ZWQKICAgIHN0cmluZyBjb250YWluaW5nIGV4YWN0bHkgYHNpemUnIGJ5dGVzLgpAQCAtMTE2LDcgKzEyMCw3IEBACiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwogCi0gICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOworICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKTsKICAgICAvKiBzaGFyZSBzaG9ydCBzdHJpbmdzICovCiAgICAgaWYgKHNpemUgPT0gMSkgewogICAgICAgICBjaGFyYWN0ZXJzWypzdHIgJiBVQ0hBUl9NQVhdID0gb3A7CkBAIC0xNTksNyArMTYzLDcgQEAKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgKHZvaWQpUHlPYmplY3RfSU5JVF9WQVIob3AsICZQeUJ5dGVzX1R5cGUsIHNpemUpOwogICAgIG9wLT5vYl9zaGFzaCA9IC0xOwotICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKzEpOworICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgc3RyLCBzaXplKzEpOwogICAgIC8qIHNoYXJlIHNob3J0IHN0cmluZ3MgKi8KICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIG51bGxzdHJpbmcgPSBvcDsKQEAgLTE3NCwxOTAgKzE3OCwxODQgQEAKIFB5T2JqZWN0ICoKIFB5Qnl0ZXNfRnJvbUZvcm1hdFYoY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQogewotICAgIHZhX2xpc3QgY291bnQ7Ci0gICAgUHlfc3NpemVfdCBuID0gMDsKLSAgICBjb25zdCBjaGFyKiBmOwogICAgIGNoYXIgKnM7Ci0gICAgUHlPYmplY3QqIHN0cmluZzsKKyAgICBjb25zdCBjaGFyICpmOworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgUHlfc3NpemVfdCBwcmVjOworICAgIGludCBsb25nZmxhZzsKKyAgICBpbnQgc2l6ZV90ZmxhZzsKKyAgICAvKiBMb25nZXN0IDY0LWJpdCBmb3JtYXR0ZWQgbnVtYmVyczoKKyAgICAgICAtICIxODQ0Njc0NDA3MzcwOTU1MTYxNVwwIiAoMjEgYnl0ZXMpCisgICAgICAgLSAiLTkyMjMzNzIwMzY4NTQ3NzU4MDhcMCIgKDIxIGJ5dGVzKQorICAgICAgIERlY2ltYWwgdGFrZXMgdGhlIG1vc3Qgc3BhY2UgKGl0IGlzbid0IGVub3VnaCBmb3Igb2N0YWwuKQogCi0gICAgUHlfVkFfQ09QWShjb3VudCwgdmFyZ3MpOwotICAgIC8qIHN0ZXAgMTogZmlndXJlIG91dCBob3cgbGFyZ2UgYSBidWZmZXIgd2UgbmVlZCAqLwotICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZjsKLSAgICAgICAgICAgIHdoaWxlICgqKytmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCi0gICAgICAgICAgICAgICAgOworICAgICAgIExvbmdlc3QgNjQtYml0IHBvaW50ZXIgcmVwcmVzZW50YXRpb246CisgICAgICAgIjB4ZmZmZmZmZmZmZmZmZmZmZlwwIiAoMTkgYnl0ZXMpLiAqLworICAgIGNoYXIgYnVmZmVyWzIxXTsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKLSAgICAgICAgICAgIC8qIHNraXAgdGhlICdsJyBvciAneicgaW4geyVsZCwgJXpkLCAlbHUsICV6dX0gc2luY2UKLSAgICAgICAgICAgICAqIHRoZXkgZG9uJ3QgYWZmZWN0IHRoZSBhbW91bnQgb2Ygc3BhY2Ugd2UgcmVzZXJ2ZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCgqZiA9PSAnbCcgfHwgKmYgPT0gJ3onKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpCi0gICAgICAgICAgICAgICAgKytmOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKLSAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBjID0gdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIGlmIChjIDwgMCB8fCBjID4gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5Qnl0ZXNfRnJvbUZvcm1hdFYoKTogJWMgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RzIGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDI1NV0iKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2QnOiBjYXNlICd1JzogY2FzZSAnaSc6IGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogMjAgYnl0ZXMgaXMgZW5vdWdoIHRvIGhvbGQgYSA2NC1iaXQKLSAgICAgICAgICAgICAgICAgICBpbnRlZ2VyLiAgRGVjaW1hbCB0YWtlcyB0aGUgbW9zdCBzcGFjZS4KLSAgICAgICAgICAgICAgICAgICBUaGlzIGlzbid0IGVub3VnaCBmb3Igb2N0YWwuICovCi0gICAgICAgICAgICAgICAgbiArPSAyMDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgICAgIHMgPSB2YV9hcmcoY291bnQsIGNoYXIqKTsKLSAgICAgICAgICAgICAgICBuICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgLyogbWF4aW11bSA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKLSAgICAgICAgICAgICAgICAgKiAweGZmZmZmZmZmZmZmZmZmZmYKLSAgICAgICAgICAgICAgICAgKiBzbyAxOSBjaGFyYWN0ZXJzIGlzIGVub3VnaC4KLSAgICAgICAgICAgICAgICAgKiBYWFggSSBjb3VudCAxOCAtLSB3aGF0J3MgdGhlIGV4dHJhIGZvcj8KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuICs9IDE5OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvKiBpZiB3ZSBzdHVtYmxlIHVwb24gYW4gdW5rbm93bgotICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcgY29kZSwgY29weSB0aGUgcmVzdCBvZgotICAgICAgICAgICAgICAgICAgIHRoZSBmb3JtYXQgc3RyaW5nIHRvIHRoZSBvdXRwdXQKLSAgICAgICAgICAgICAgICAgICBzdHJpbmcuICh3ZSBjYW5ub3QganVzdCBza2lwIHRoZQotICAgICAgICAgICAgICAgICAgIGNvZGUsIHNpbmNlIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cKLSAgICAgICAgICAgICAgICAgICB3aGF0J3MgaW4gdGhlIGFyZ3VtZW50IGxpc3QpICovCi0gICAgICAgICAgICAgICAgbiArPSBzdHJsZW4ocCk7Ci0gICAgICAgICAgICAgICAgZ290byBleHBhbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbisrOwotICAgIH0KLSBleHBhbmQ6Ci0gICAgLyogc3RlcCAyOiBmaWxsIHRoZSBidWZmZXIgKi8KLSAgICAvKiBTaW5jZSB3ZSd2ZSBhbmFseXplZCBob3cgbXVjaCBzcGFjZSB3ZSBuZWVkIGZvciB0aGUgd29yc3QgY2FzZSwKLSAgICAgICB1c2Ugc3ByaW50ZiBkaXJlY3RseSBpbnN0ZWFkIG9mIHRoZSBzbG93ZXIgUHlPU19zbnByaW50Zi4gKi8KLSAgICBzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG4pOwotICAgIGlmICghc3RyaW5nKQorICAgIHMgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzdHJsZW4oZm9ybWF0KSk7CisgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CiAKLSAgICBzID0gUHlCeXRlc19Bc1N0cmluZyhzdHJpbmcpOworI2RlZmluZSBXUklURV9CWVRFUyhzdHIpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcywgKHN0ciksIHN0cmxlbihzdHIpKTsgXAorICAgICAgICBpZiAocyA9PSBOVUxMKSBcCisgICAgICAgICAgICBnb3RvIGVycm9yOyBcCisgICAgfSB3aGlsZSAoMCkKIAogICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgewotICAgICAgICBpZiAoKmYgPT0gJyUnKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiBwID0gZisrOworICAgICAgICBpZiAoKmYgIT0gJyUnKSB7CisgICAgICAgICAgICAqcysrID0gKmY7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHAgPSBmKys7CisKKyAgICAgICAgLyogaWdub3JlIHRoZSB3aWR0aCAoZXg6IDEwIGluICIlMTBzIikgKi8KKyAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKmYpKQorICAgICAgICAgICAgZisrOworCisgICAgICAgIC8qIHBhcnNlIHRoZSBwcmVjaXNpb24gKGV4OiAxMCBpbiAiJS4xMHMiKSAqLworICAgICAgICBwcmVjID0gMDsKKyAgICAgICAgaWYgKCpmID09ICcuJykgeworICAgICAgICAgICAgZisrOworICAgICAgICAgICAgZm9yICg7IFB5X0lTRElHSVQoKmYpOyBmKyspIHsKKyAgICAgICAgICAgICAgICBwcmVjID0gKHByZWMgKiAxMCkgKyAoKmYgLSAnMCcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKCpmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgqZikpCisgICAgICAgICAgICBmKys7CisKKyAgICAgICAgLyogaGFuZGxlIHRoZSBsb25nIGZsYWcgKCdsJyksIGJ1dCBvbmx5IGZvciAlbGQgYW5kICVsdS4KKyAgICAgICAgICAgb3RoZXJzIGNhbiBiZSBhZGRlZCB3aGVuIG5lY2Vzc2FyeS4gKi8KKyAgICAgICAgbG9uZ2ZsYWcgPSAwOworICAgICAgICBpZiAoKmYgPT0gJ2wnICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKKyAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKKyAgICAgICAgICAgICsrZjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcgKCd6JykuICovCisgICAgICAgIHNpemVfdGZsYWcgPSAwOworICAgICAgICBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKKyAgICAgICAgICAgIHNpemVfdGZsYWcgPSAxOworICAgICAgICAgICAgKytmOworICAgICAgICB9CisKKyAgICAgICAgLyogc3VidHJhY3QgYnl0ZXMgcHJlYWxsb2NhdGVkIGZvciB0aGUgZm9ybWF0IHN0cmluZworICAgICAgICAgICAoZXg6IDIgZm9yICIlcyIpICovCisgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAoZiAtIHAgKyAxKTsKKworICAgICAgICBzd2l0Y2ggKCpmKSB7CisgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICB7CisgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyh2YXJncywgaW50KTsKKyAgICAgICAgICAgIGlmIChjIDwgMCB8fCBjID4gMjU1KSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUJ5dGVzX0Zyb21Gb3JtYXRWKCk6ICVjIGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RzIGFuIGludGVnZXIgaW4gcmFuZ2UgWzA7IDI1NV0iKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CisgICAgICAgICAgICAqcysrID0gKHVuc2lnbmVkIGNoYXIpYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlbGQiLCB2YV9hcmcodmFyZ3MsIGxvbmcpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJkIiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlZCIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAndSc6CisgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlbHUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCisgICAgICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBzaXplX3QpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiV1IiwKKyAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJWkiLCB2YV9hcmcodmFyZ3MsIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIleCIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAncyc6CisgICAgICAgIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgIGludCBsb25nZmxhZyA9IDA7Ci0gICAgICAgICAgICBpbnQgc2l6ZV90ZmxhZyA9IDA7Ci0gICAgICAgICAgICAvKiBwYXJzZSB0aGUgd2lkdGgucHJlY2lzaW9uIHBhcnQgKHdlJ3JlIG9ubHkKLSAgICAgICAgICAgICAgIGludGVyZXN0ZWQgaW4gdGhlIHByZWNpc2lvbiB2YWx1ZSwgaWYgYW55KSAqLwotICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCi0gICAgICAgICAgICAgICAgbiA9IChuKjEwKSArICpmKysgLSAnMCc7Ci0gICAgICAgICAgICBpZiAoKmYgPT0gJy4nKSB7Ci0gICAgICAgICAgICAgICAgZisrOwotICAgICAgICAgICAgICAgIG4gPSAwOwotICAgICAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCpmKSkKLSAgICAgICAgICAgICAgICAgICAgbiA9IChuKjEwKSArICpmKysgLSAnMCc7CisKKyAgICAgICAgICAgIHAgPSB2YV9hcmcodmFyZ3MsIGNvbnN0IGNoYXIqKTsKKyAgICAgICAgICAgIGkgPSBzdHJsZW4ocCk7CisgICAgICAgICAgICBpZiAocHJlYyA+IDAgJiYgaSA+IHByZWMpCisgICAgICAgICAgICAgICAgaSA9IHByZWM7CisgICAgICAgICAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzLCBwLCBpKTsKKyAgICAgICAgICAgIGlmIChzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVwIiwgdmFfYXJnKHZhcmdzLCB2b2lkKikpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KKyAgICAgICAgICAgIGlmIChidWZmZXJbMV0gPT0gJ1gnKQorICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKKyAgICAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlclsxXSAhPSAneCcpIHsKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKGJ1ZmZlcisyLCBidWZmZXIsIHN0cmxlbihidWZmZXIpKzEpOworICAgICAgICAgICAgICAgIGJ1ZmZlclswXSA9ICcwJzsKKyAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSAoKmYgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCpmKSkKLSAgICAgICAgICAgICAgICBmKys7Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIGxvbmcgZmxhZywgYnV0IG9ubHkgZm9yICVsZCBhbmQgJWx1LgotICAgICAgICAgICAgICAgb3RoZXJzIGNhbiBiZSBhZGRlZCB3aGVuIG5lY2Vzc2FyeS4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAnbCcgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKLSAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgKytmOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CisgICAgICAgICAgICAqcysrID0gJyUnOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICgqZiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZml4IG1pbl9zaXplIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZm9ybWF0IHN0cmluZyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBzd2l0Y2ggKCpmKSB7Ci0gICAgICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgYyA9IHZhX2FyZyh2YXJncywgaW50KTsKLSAgICAgICAgICAgICAgICAvKiBjIGhhcyBiZWVuIGNoZWNrZWQgZm9yIG92ZXJmbG93IGluIHRoZSBmaXJzdCBzdGVwICovCi0gICAgICAgICAgICAgICAgKnMrKyA9ICh1bnNpZ25lZCBjaGFyKWM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVsZCIsIHZhX2FyZyh2YXJncywgbG9uZykpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBQeV9zc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlZCIsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVsdSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIldSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWkiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXgiLCB2YV9hcmcodmFyZ3MsIGludCkpOwotICAgICAgICAgICAgICAgIHMgKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgcCA9IHZhX2FyZyh2YXJncywgY2hhciopOwotICAgICAgICAgICAgICAgIGkgPSBzdHJsZW4ocCk7Ci0gICAgICAgICAgICAgICAgaWYgKG4gPiAwICYmIGkgPiBuKQotICAgICAgICAgICAgICAgICAgICBpID0gbjsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocywgcCwgaSk7Ci0gICAgICAgICAgICAgICAgcyArPSBpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJXAiLCB2YV9hcmcodmFyZ3MsIHZvaWQqKSk7Ci0gICAgICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KLSAgICAgICAgICAgICAgICBpZiAoc1sxXSA9PSAnWCcpCi0gICAgICAgICAgICAgICAgICAgIHNbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1sxXSAhPSAneCcpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtbW92ZShzKzIsIHMsIHN0cmxlbihzKSsxKTsKLSAgICAgICAgICAgICAgICAgICAgc1swXSA9ICcwJzsKLSAgICAgICAgICAgICAgICAgICAgc1sxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICAqcysrID0gJyUnOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBzdHJjcHkocywgcCk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgKnMrKyA9ICpmOworICAgICAgICAgICAgLyogaW52YWxpZCBmb3JtYXQgc3RyaW5nOiBjb3B5IHVuZm9ybWF0dGVkIHN0cmluZyBhbmQgZXhpdCAqLworICAgICAgICAgICAgV1JJVEVfQllURVMocCk7CisgICAgICAgICAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHMpOworICAgICAgICB9CiAgICAgfQogCi0gZW5kOgotICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmc3RyaW5nLCBzIC0gUHlCeXRlc19BU19TVFJJTkcoc3RyaW5nKSk7Ci0gICAgcmV0dXJuIHN0cmluZzsKKyN1bmRlZiBXUklURV9CWVRFUworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzKTsKKworIGVycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTQwOSwxMiArNDA3LDE0IEBACiAKIC8qIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgUHlCeXRlcyBvYmplY3QsIG9yIE5VTEwgb24gZmFpbHVyZS4gKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3N0YXRpYyBjaGFyKgorZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlLAorICAgICAgICAgICAgUHlPYmplY3QgKipwX3Jlc3VsdCwgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyKQogewogICAgIGNoYXIgKnA7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBkb3VibGUgeDsKKyAgICBzaXplX3QgbGVuOwogCiAgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CiAgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CkBAIC00MzEsOSArNDMxLDIyIEBACiAKICAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHAsIHN0cmxlbihwKSk7CisKKyAgICBsZW4gPSBzdHJsZW4ocCk7CisgICAgaWYgKHdyaXRlciAhPSBOVUxMKSB7CisgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIGxlbik7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtZW1jcHkoc3RyLCBwLCBsZW4pOworICAgICAgICBQeU1lbV9GcmVlKHApOworICAgICAgICBzdHIgKz0gbGVuOworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocCwgbGVuKTsKICAgICBQeU1lbV9GcmVlKHApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgKnBfcmVzdWx0ID0gcmVzdWx0OworICAgIHJldHVybiBzdHI7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NzMsMTEgKzQ4NiwxMSBAQAogc3RhdGljIGludAogYnl0ZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgY2hhciAqcCkKIHsKLSAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfU2l6ZShhcmcpID09IDEpIHsKKyAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKSA9PSAxKSB7CiAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKVswXTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKGFyZykgJiYgUHlCeXRlQXJyYXlfU2l6ZShhcmcpID09IDEpIHsKKyAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhhcmcpICYmIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKGFyZykgPT0gMSkgewogICAgICAgICAqcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhhcmcpWzBdOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC01NTcsMzYgKzU3MCwzNiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0vKiBmbXQlKHYxLHYyLC4uLikgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHNwcmludGYoZm10LCB2MSwgdjIsIC4uLikKLQotICAgRk9STUFUQlVGTEVOIGlzIHRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBpbiB3aGljaCB0aGUgaW50cyAmCi0gICBjaGFycyBhcmUgZm9ybWF0dGVkLiBYWFggVGhpcyBpcyBhIG1hZ2ljIG51bWJlci4gRWFjaCBmb3JtYXR0aW5nCi0gICByb3V0aW5lIGRvZXMgYm91bmRzIGNoZWNraW5nIHRvIGVuc3VyZSBubyBvdmVyZmxvdywgYnV0IGEgYmV0dGVyCi0gICBzb2x1dGlvbiBtYXkgYmUgdG8gbWFsbG9jIGEgYnVmZmVyIG9mIGFwcHJvcHJpYXRlIHNpemUgZm9yIGVhY2gKLSAgIGZvcm1hdC4gRm9yIG5vdywgdGhlIGN1cnJlbnQgc29sdXRpb24gaXMgc3VmZmljaWVudC4KLSovCi0jZGVmaW5lIEZPUk1BVEJVRkxFTiAoc2l6ZV90KTEyMAorLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pICovCiAKIFB5T2JqZWN0ICoKLV9QeUJ5dGVzX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LCBQeU9iamVjdCAqYXJncykKK19QeUJ5dGVzX0Zvcm1hdEV4KGNvbnN0IGNoYXIgKmZvcm1hdCwgUHlfc3NpemVfdCBmb3JtYXRfbGVuLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIGludCB1c2VfYnl0ZWFycmF5KQogewotICAgIGNoYXIgKmZtdCwgKnJlczsKKyAgICBjb25zdCBjaGFyICpmbXQ7CisgICAgY2hhciAqcmVzOwogICAgIFB5X3NzaXplX3QgYXJnbGVuLCBhcmdpZHg7Ci0gICAgUHlfc3NpemVfdCByZXNsZW4sIHJlc2NudCwgZm10Y250OworICAgIFB5X3NzaXplX3QgZm10Y250OwogICAgIGludCBhcmdzX293bmVkID0gMDsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKLSAgICBpZiAoZm9ybWF0ID09IE5VTEwgfHwgIVB5Qnl0ZXNfQ2hlY2soZm9ybWF0KSB8fCBhcmdzID09IE5VTEwpIHsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZm10ID0gUHlCeXRlc19BU19TVFJJTkcoZm9ybWF0KTsKLSAgICBmbXRjbnQgPSBQeUJ5dGVzX0dFVF9TSVpFKGZvcm1hdCk7Ci0gICAgcmVzbGVuID0gcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCByZXNsZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICBmbXQgPSBmb3JtYXQ7CisgICAgZm10Y250ID0gZm9ybWF0X2xlbjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLnVzZV9ieXRlYXJyYXkgPSB1c2VfYnl0ZWFycmF5OworCisgICAgcmVzID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgZm10Y250KTsKKyAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBpZiAoIXVzZV9ieXRlYXJyYXkpCisgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOworCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKICAgICAgICAgYXJnaWR4ID0gMDsKQEAgLTYwMCwxOCArNjEzLDIzIEBACiAgICAgICAgICFQeUJ5dGVBcnJheV9DaGVjayhhcmdzKSkgewogICAgICAgICAgICAgZGljdCA9IGFyZ3M7CiAgICAgfQorCiAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKICAgICAgICAgaWYgKCpmbXQgIT0gJyUnKSB7Ci0gICAgICAgICAgICBpZiAoLS1yZXNjbnQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OwotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnJlcysrID0gKmZtdCsrOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBjaGFyICpwb3M7CisKKyAgICAgICAgICAgIHBvcyA9IHN0cmNocihmbXQgKyAxLCAnJScpOworICAgICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGxlbiA9IHBvcyAtIGZtdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsZW4gPSBmb3JtYXRfbGVuIC0gKGZtdCAtIGZvcm1hdCk7CisgICAgICAgICAgICBhc3NlcnQobGVuICE9IDApOworCisgICAgICAgICAgICBtZW1jcHkocmVzLCBmbXQsIGxlbik7CisgICAgICAgICAgICByZXMgKz0gbGVuOworICAgICAgICAgICAgZm10ICs9IGxlbjsKKyAgICAgICAgICAgIGZtdGNudCAtPSAobGVuIC0gMSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBHb3QgYSBmb3JtYXQgc3BlY2lmaWVyICovCkBAIC02MjYsMTAgKzY0NCwxNCBAQAogICAgICAgICAgICAgaW50IHNpZ247CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAgICAgICAgICAgICBjaGFyIG9uZWNoYXI7IC8qIEZvciBieXRlX2NvbnZlcnRlcigpICovCisgICAgICAgICAgICBQeV9zc2l6ZV90IGFsbG9jOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICBjaGFyICpiZWZvcmU7CisjZW5kaWYKIAogICAgICAgICAgICAgZm10Kys7CiAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKCcpIHsKLSAgICAgICAgICAgICAgICBjaGFyICprZXlzdGFydDsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICprZXlzdGFydDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleWxlbjsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgICAgIGludCBwY291bnQgPSAxOwpAQCAtNjczLDYgKzY5NSw4IEBACiAgICAgICAgICAgICAgICAgYXJnbGVuID0gLTE7CiAgICAgICAgICAgICAgICAgYXJnaWR4ID0gLTI7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhcnNlIGZsYWdzLiBFeGFtcGxlOiAiJStpIiA9PiBmbGFncz1GX1NJR04uICovCiAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAoYyA9ICpmbXQrKykgewogICAgICAgICAgICAgICAgIGNhc2UgJy0nOiBmbGFncyB8PSBGX0xKVVNUOyBjb250aW51ZTsKQEAgLTY4Myw2ICs3MDcsOCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2Ugd2lkdGguIEV4YW1wbGU6ICIlMTBzIiA9PiB3aWR0aD0xMCAqLwogICAgICAgICAgICAgaWYgKGMgPT0gJyonKSB7CiAgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQpAQCAtNzE3LDYgKzc0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gd2lkdGgqMTAgKyAoYyAtICcwJyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSBwcmVjaXNpb24uIEV4YW1wbGU6ICIlLjNmIiA9PiBwcmVjPTMgKi8KICAgICAgICAgICAgIGlmIChjID09ICcuJykgewogICAgICAgICAgICAgICAgIHByZWMgPSAwOwogICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQpAQCAtNzcxLDEzICs3OTksMTkgQEAKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZm10Y250IDwgMCkgeworICAgICAgICAgICAgICAgIC8qIGxhc3Qgd3JpdGVyOiBkaXNhYmxlIHdyaXRlciBvdmVyYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAwOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBzaWduID0gMDsKICAgICAgICAgICAgIGZpbGwgPSAnICc7CiAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgIHBidWYgPSAiJSI7Ci0gICAgICAgICAgICAgICAgbGVuID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAqcmVzKysgPSAnJSc7CisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIGNhc2UgJ3InOgogICAgICAgICAgICAgICAgIC8vICVyIGlzIG9ubHkgZm9yIDIvMyBjb2RlOyAzIG9ubHkgY29kZSBzaG91bGQgdXNlICVhCiAgICAgICAgICAgICBjYXNlICdhJzoKQEAgLTc5MCw2ICs4MjQsNyBAQAogICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKICAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgLy8gJXMgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWIKICAgICAgICAgICAgIGNhc2UgJ2InOgpAQCAtNzk5LDEyICs4MzQsNDkgQEAKICAgICAgICAgICAgICAgICBpZiAocHJlYyA+PSAwICYmIGxlbiA+IHByZWMpCiAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHByZWM7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ2knOgogICAgICAgICAgICAgY2FzZSAnZCc6CiAgICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgIGNhc2UgJ28nOgogICAgICAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikKKyAgICAgICAgICAgICAgICAgICAgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKQorICAgICAgICAgICAgICAgICAgICAmJiBjICE9ICdYJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICBpbnQgYWx0ZXJuYXRlID0gZmxhZ3MgJiBGX0FMVDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U7CisKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGMpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KDAgJiYgIid0eXBlJyBub3QgaW4gW2RpdW94WF0iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gODsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSA9IDE2OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSAyOyAvKiBzaXplIHByZWFsbG9jYXRlZCBmb3IgIiVkIiAqLworICAgICAgICAgICAgICAgICAgICByZXMgPSBfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKCZ3cml0ZXIsIHJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LCBiYXNlLCBhbHRlcm5hdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0bG9uZyh2LCBmbGFncywgcHJlYywgYyk7CiAgICAgICAgICAgICAgICAgaWYgKCF0ZW1wKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtODE1LDE0ICs4ODcsMjUgQEAKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgY2FzZSAnRSc6CiAgICAgICAgICAgICBjYXNlICdmJzoKICAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMpOwotICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDI7IC8qIHNpemUgcHJlYWxsb2NhdGVkIGZvciAiJWYiICovCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCBOVUxMLCAmd3JpdGVyLCByZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCAmdGVtcCwgTlVMTCwgcmVzKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICBwYnVmID0gUHlCeXRlc19BU19TVFJJTkcodGVtcCk7CiAgICAgICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRSh0ZW1wKTsKQEAgLTgzMCwyMSArOTEzLDI4IEBACiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQogICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdjJzoKICAgICAgICAgICAgICAgICBwYnVmID0gJm9uZWNoYXI7CiAgICAgICAgICAgICAgICAgbGVuID0gYnl0ZV9jb252ZXJ0ZXIodiwgJm9uZWNoYXIpOwogICAgICAgICAgICAgICAgIGlmICghbGVuKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gb25lY2hhcjsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGZvcm1hdCBjaGFyYWN0ZXIgJyVjJyAoMHgleCkgIgogICAgICAgICAgICAgICAgICAgImF0IGluZGV4ICV6ZCIsCiAgICAgICAgICAgICAgICAgICBjLCBjLAotICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQXNTdHJpbmcoZm9ybWF0KSkpOworICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLSBmb3JtYXQpKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoc2lnbikgewogICAgICAgICAgICAgICAgIGlmICgqcGJ1ZiA9PSAnLScgfHwgKnBidWYgPT0gJysnKSB7CiAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAqcGJ1ZisrOwpAQCAtODU5LDI5ICs5NDksMzEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh3aWR0aCA8IGxlbikKICAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKLSAgICAgICAgICAgIGlmIChyZXNjbnQgLSAoc2lnbiAhPSAwKSA8IHdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgcmVzbGVuIC09IHJlc2NudDsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSB3aWR0aCArIGZtdGNudCArIDEwMDsKLSAgICAgICAgICAgICAgICByZXNsZW4gKz0gcmVzY250OwotICAgICAgICAgICAgICAgIGlmIChyZXNsZW4gPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXMgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OworCisgICAgICAgICAgICBhbGxvYyA9IHdpZHRoOworICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCAmJiBsZW4gPT0gd2lkdGgpCisgICAgICAgICAgICAgICAgYWxsb2MrKzsKKyAgICAgICAgICAgIC8qIDI6IHNpemUgcHJlYWxsb2NhdGVkIGZvciAlcyAqLworICAgICAgICAgICAgaWYgKGFsbG9jID4gMikgeworICAgICAgICAgICAgICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgcmVzLCBhbGxvYyAtIDIpOworICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgYmVmb3JlID0gcmVzOworI2VuZGlmCisKKyAgICAgICAgICAgIC8qIFdyaXRlIHRoZSBzaWduIGlmIG5lZWRlZCAqLwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKICAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpCiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247Ci0gICAgICAgICAgICAgICAgcmVzY250LS07CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQogICAgICAgICAgICAgICAgICAgICB3aWR0aC0tOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBXcml0ZSB0aGUgbnVtZXJpYyBwcmVmaXggZm9yICJ4IiwgIlgiIGFuZCAibyIgZm9ybWF0cworICAgICAgICAgICAgICAgaWYgdGhlIGFsdGVybmF0ZSBmb3JtIGlzIHVzZWQuCisgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgd3JpdGUgIjB4IiBmb3IgdGhlICIlI3giIGZvcm1hdC4gKi8KICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSkgewogICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7CkBAIC04ODksMTggKzk4MSwyMSBAQAogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXNjbnQgLT0gMjsKICAgICAgICAgICAgICAgICB3aWR0aCAtPSAyOwogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IDApCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKICAgICAgICAgICAgICAgICBsZW4gLT0gMjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFkIGxlZnQgd2l0aCB0aGUgZmlsbCBjaGFyYWN0ZXIgaWYgbmVlZGVkICovCiAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7Ci0gICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gZmlsbDsKLSAgICAgICAgICAgICAgICB9IHdoaWxlICgtLXdpZHRoID4gbGVuKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQocmVzLCBmaWxsLCB3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgcmVzICs9ICh3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIHBhZGRpbmcgd2l0aCBzcGFjZXM6IHdyaXRlIHNpZ24gaWYgbmVlZGVkIGFuZC9vciBudW1lcmljCisgICAgICAgICAgICAgICBwcmVmaXggaWYgdGhlIGFsdGVybmF0ZSBmb3JtIGlzIHVzZWQgKi8KICAgICAgICAgICAgIGlmIChmaWxsID09ICcgJykgewogICAgICAgICAgICAgICAgIGlmIChzaWduKQogICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOwpAQCAtOTEyLDEzICsxMDA3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlcywgcGJ1ZiwgbGVuKTsKKworICAgICAgICAgICAgLyogQ29weSBieXRlcyAqLworICAgICAgICAgICAgbWVtY3B5KHJlcywgcGJ1ZiwgbGVuKTsKICAgICAgICAgICAgIHJlcyArPSBsZW47Ci0gICAgICAgICAgICByZXNjbnQgLT0gbGVuOwotICAgICAgICAgICAgd2hpbGUgKC0td2lkdGggPj0gbGVuKSB7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgKnJlcysrID0gJyAnOworCisgICAgICAgICAgICAvKiBQYWQgcmlnaHQgd2l0aCB0aGUgZmlsbCBjaGFyYWN0ZXIgaWYgbmVlZGVkICovCisgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pIHsKKyAgICAgICAgICAgICAgICBtZW1zZXQocmVzLCAnICcsIHdpZHRoIC0gbGVuKTsKKyAgICAgICAgICAgICAgICByZXMgKz0gKHdpZHRoIC0gbGVuKTsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgaWYgKGRpY3QgJiYgKGFyZ2lkeCA8IGFyZ2xlbikgJiYgYyAhPSAnJScpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpOwpAQCAtOTI2LDIyICsxMDI1LDMxIEBACiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICAgICAgLyogY2hlY2sgdGhhdCB3ZSBjb21wdXRlZCB0aGUgZXhhY3Qgc2l6ZSBmb3IgdGhpcyB3cml0ZSAqLworICAgICAgICAgICAgYXNzZXJ0KChyZXMgLSBiZWZvcmUpID09IGFsbG9jKTsKKyNlbmRpZgogICAgICAgICB9IC8qICclJyAqLworCisgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgIHdyaXRlLiBPdGhlcndpc2UsIHdlIG1pc3NlZCBhbiBvcHRpbWl6YXRpb24gKi8KKyAgICAgICAgYXNzZXJ0KHdyaXRlci5vdmVyYWxsb2NhdGUgfHwgZm10Y250IDwgMCB8fCB1c2VfYnl0ZWFycmF5KTsKICAgICB9IC8qIHVudGlsIGVuZCAqLworCiAgICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbiAmJiAhZGljdCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgYnl0ZXMgZm9ybWF0dGluZyIpOwogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCByZXNsZW4gLSByZXNjbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcmVzKTsKIAogIGVycm9yOgotICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIH0KQEAgLTk2MSw2ICsxMDY5LDQyIEBACiAgICB0aGUgc3RyaW5nIGlzIFVURi04IGVuY29kZWQgYW5kIHNob3VsZCBiZSByZS1lbmNvZGVkIGluIHRoZQogICAgc3BlY2lmaWVkIGVuY29kaW5nLiAgKi8KIAorc3RhdGljIGNoYXIgKgorX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlUmVjb2RlKGNvbnN0IGNoYXIgKipzLCBjb25zdCBjaGFyICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBjb25zdCBjaGFyICpyZWNvZGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqcCkKK3sKKyAgICBQeU9iamVjdCAqdSwgKnc7CisgICAgY29uc3QgY2hhciogdDsKKworICAgIHQgPSAqczsKKyAgICAvKiBEZWNvZGUgbm9uLUFTQ0lJIGJ5dGVzIGFzIFVURi04LiAqLworICAgIHdoaWxlICh0IDwgZW5kICYmICgqdCAmIDB4ODApKQorICAgICAgICB0Kys7CisgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KCpzLCB0IC0gKnMsIGVycm9ycyk7CisgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBSZWNvZGUgdGhlbSBpbiB0YXJnZXQgZW5jb2RpbmcuICovCisgICAgdyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwgcmVjb2RlX2VuY29kaW5nLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih1KTsKKyAgICBpZiAgKHcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sodykpOworCisgICAgLyogQXBwZW5kIGJ5dGVzIHRvIG91dHB1dCBidWZmZXIuICovCisgICAgd3JpdGVyLT5taW5fc2l6ZS0tOyAgIC8qIHN1YnRyYWN0IDEgcHJlYWxsb2NhdGVkIGJ5dGUgKi8KKyAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcyh3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcodyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRSh3KSk7CisgICAgUHlfREVDUkVGKHcpOworICAgIGlmIChwID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgKnMgPSB0OworICAgIHJldHVybiBwOworfQorCiBQeU9iamVjdCAqUHlCeXRlc19EZWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKQEAgLTk2OCw1NCArMTExMiw0MiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWNvZGVfZW5jb2RpbmcpCiB7CiAgICAgaW50IGM7Ci0gICAgY2hhciAqcCwgKmJ1ZjsKKyAgICBjaGFyICpwOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBQeV9zc2l6ZV90IG5ld2xlbiA9IHJlY29kZV9lbmNvZGluZyA/IDQqbGVuOmxlbjsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIG5ld2xlbik7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGxlbik7CisgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcCA9IGJ1ZiA9IFB5Qnl0ZXNfQXNTdHJpbmcodik7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisKICAgICBlbmQgPSBzICsgbGVuOwogICAgIHdoaWxlIChzIDwgZW5kKSB7CiAgICAgICAgIGlmICgqcyAhPSAnXFwnKSB7CiAgICAgICAgICAgbm9uX2VzYzoKLSAgICAgICAgICAgIGlmIChyZWNvZGVfZW5jb2RpbmcgJiYgKCpzICYgMHg4MCkpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdSwgKnc7Ci0gICAgICAgICAgICAgICAgY2hhciAqcjsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0OwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgcm47Ci0gICAgICAgICAgICAgICAgdCA9IHM7Ci0gICAgICAgICAgICAgICAgLyogRGVjb2RlIG5vbi1BU0NJSSBieXRlcyBhcyBVVEYtOC4gKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAodCA8IGVuZCAmJiAoKnQgJiAweDgwKSkgdCsrOwotICAgICAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCB0IC0gcywgZXJyb3JzKTsKLSAgICAgICAgICAgICAgICBpZighdSkgZ290byBmYWlsZWQ7Ci0KLSAgICAgICAgICAgICAgICAvKiBSZWNvZGUgdGhlbSBpbiB0YXJnZXQgZW5jb2RpbmcuICovCi0gICAgICAgICAgICAgICAgdyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIHUsIHJlY29kZV9lbmNvZGluZywgZXJyb3JzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF3KSAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0KLSAgICAgICAgICAgICAgICAvKiBBcHBlbmQgYnl0ZXMgdG8gb3V0cHV0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayh3KSk7Ci0gICAgICAgICAgICAgICAgciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHcpOwotICAgICAgICAgICAgICAgIHJuID0gUHlCeXRlc19HRVRfU0laRSh3KTsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocCwgciwgcm4pOwotICAgICAgICAgICAgICAgIHAgKz0gcm47Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgICAgIHMgPSB0OwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghKHJlY29kZV9lbmNvZGluZyAmJiAoKnMgJiAweDgwKSkpIHsKICAgICAgICAgICAgICAgICAqcCsrID0gKnMrKzsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG5vbi1BU0NJSSBjaGFyYWN0ZXIgYW5kIG5lZWQgdG8gcmVjb2RlICovCisgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCByZWNvZGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVyLCBwKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisKICAgICAgICAgcysrOwotICAgICAgICBpZiAocz09ZW5kKSB7CisgICAgICAgIGlmIChzID09IGVuZCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRyYWlsaW5nIFxcIGluIHN0cmluZyIpOwogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKCpzKyspIHsKICAgICAgICAgLyogWFhYIFRoaXMgYXNzdW1lcyBBU0NJSSEgKi8KICAgICAgICAgY2FzZSAnXG4nOiBicmVhazsKQEAgLTEwNDAsMjggKzExNzIsMTggQEAKICAgICAgICAgICAgICpwKysgPSBjOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgaWYgKHMrMSA8IGVuZCAmJiBQeV9JU1hESUdJVChzWzBdKSAmJiBQeV9JU1hESUdJVChzWzFdKSkgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB4ID0gMDsKLSAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKnMpOwotICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgeCA9IGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoUHlfSVNMT1dFUihjKSkKLSAgICAgICAgICAgICAgICAgICAgeCA9IDEwICsgYyAtICdhJzsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHggPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgICAgICAgICAgeCA9IHggPDwgNDsKLSAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKnMpOwotICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgeCArPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5X0lTTE9XRVIoYykpCi0gICAgICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnQSc7Ci0gICAgICAgICAgICAgICAgKnArKyA9IHg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAocysxIDwgZW5kKSB7CisgICAgICAgICAgICAgICAgaW50IGRpZ2l0MSwgZGlnaXQyOworICAgICAgICAgICAgICAgIGRpZ2l0MSA9IF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSyhzWzBdKV07CisgICAgICAgICAgICAgICAgZGlnaXQyID0gX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKHNbMV0pXTsKKyAgICAgICAgICAgICAgICBpZiAoZGlnaXQxIDwgMTYgJiYgZGlnaXQyIDwgMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSgoZGlnaXQxIDw8IDQpICsgZGlnaXQyKTsKKyAgICAgICAgICAgICAgICAgICAgcyArPSAyOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBpbnZhbGlkIGhleGFkZWNpbWFsIGRpZ2l0cyAqLworCiAgICAgICAgICAgICBpZiAoIWVycm9ycyB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBcXHggZXNjYXBlIGF0IHBvc2l0aW9uICVkIiwKQEAgLTEwODMsMTggKzEyMDUsMjAgQEAKICAgICAgICAgICAgIGlmIChzIDwgZW5kICYmIFB5X0lTWERJR0lUKHNbMF0pKQogICAgICAgICAgICAgICAgIHMrKzsgLyogYW5kIGEgaGV4ZGlnaXQgKi8KICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsICJpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSAnXFwlYyciLCAqKC0tcykpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgcy0tOwogICAgICAgICAgICAgZ290byBub25fZXNjOyAvKiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHVuZXNjYXBlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYtOCBieXRlcyBtYXkgZm9sbG93LiAqLwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwLWJ1ZiA8IG5ld2xlbikKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZ2LCBwIC0gYnVmKTsKLSAgICByZXR1cm4gdjsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcCk7CisKICAgZmFpbGVkOgotICAgIFB5X0RFQ1JFRih2KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xMzQ5LDEyICsxNDczLDEyIEBACiAgICAgfQogICAgIGkgPSAwOwogICAgIGlmIChpIDwgc2l6ZSkgewotICAgICAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWwsIFB5X1NJWkUoYSkpOworICAgICAgICBtZW1jcHkob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWwsIFB5X1NJWkUoYSkpOwogICAgICAgICBpID0gUHlfU0laRShhKTsKICAgICB9CiAgICAgd2hpbGUgKGkgPCBzaXplKSB7CiAgICAgICAgIGogPSAoaSA8PSBzaXplLWkpICA/ICBpICA6ICBzaXplLWk7Ci0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCtpLCBvcC0+b2Jfc3ZhbCwgaik7CisgICAgICAgIG1lbWNweShvcC0+b2Jfc3ZhbCtpLCBvcC0+b2Jfc3ZhbCwgaik7CiAgICAgICAgIGkgKz0gajsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKQEAgLTEzNjMsMjQgKzE0ODcsNyBAQAogc3RhdGljIGludAogYnl0ZXNfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlfc3NpemVfdCBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgaWYgKGl2YWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9idWZmZXIgdmFyZzsKLSAgICAgICAgUHlfc3NpemVfdCBwb3M7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYXJnLCAmdmFyZywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBwb3MgPSBzdHJpbmdsaWJfZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlfU0laRShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7Ci0gICAgICAgIHJldHVybiBwb3MgPj0gMDsKLSAgICB9Ci0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHJldHVybiBtZW1jaHIoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIChpbnQpIGl2YWwsIFB5X1NJWkUoc2VsZikpICE9IE5VTEw7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb250YWlucyhQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJnKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzOTMsNyArMTUwMCw3IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygodW5zaWduZWQgY2hhcilhLT5vYl9zdmFsW2ldKTsKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogYnl0ZXNfY29tcGFyZV9lcShQeUJ5dGVzT2JqZWN0ICphLCBQeUJ5dGVzT2JqZWN0ICpiKQogewogICAgIGludCBjbXA7CkBAIC0xNjI3LDggKzE3MzQsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGJkZTQ0ZGFjYjM2ZWYyZSBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTIxMjZiNTg0NGMxZDhlZiBpbnB1dD04YjgwOWIzOTA3NGFiYmZhXSovCiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKQEAgLTE2NTIsNyArMTc1OSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5wYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBzZXA6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtMTY2OCw3ICsxNzc0LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3BhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1MzJiMzkyYTE3ZmY2OTUgaW5wdXQ9YmM4NTVkYzYzY2E5NDlkZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWY1MzJiMzkyYTE3ZmY2OTUgaW5wdXQ9NjFjY2E5NTUxOTQwNjA5OV0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfcGFydGl0aW9uKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLApAQCAtMTY4MCw3ICsxNzg2LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJwYXJ0aXRpb24KIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBzZXA6IFB5X2J1ZmZlcgogICAgIC8KIApAQCAtMTY5Niw3ICsxODAxLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JwYXJ0aXRpb25faW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnNlcCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY1ODhmZmYyNjJhOTE3MGVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xOTFiMTE0Y2JiMDI4ZTUwIGlucHV0PTY3ZjY4OWU2M2E2MmQ0NzhdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX3JwYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCkBAIC0xNzE0LDggKzE4MTksOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTBiNjU3MGI5Nzc5MTFkODggaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iYTY5OGQ5ZWEwMWUxYzhmIGlucHV0PTBmODZjOWYyOGY3ZDdiN2JdKi8KIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwpAQCAtMTc1Myw4ICsxODU4LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2pvaW4oUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqaXRlcmFibGVfb2ZfYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0YWZmMTQ3NjRmZjk5NyBpbnB1dD03ZmUzNzdiOTViZDU0OWQyXSovCitieXRlc19qb2luKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDQ2ZjM3OWY2MjZmNmY4IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KIHsKICAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7CiB9CkBAIC0xNzY3LDE1OCArMTg3MiwzMCBAQAogICAgIHJldHVybiBieXRlc19qb2luKChQeUJ5dGVzT2JqZWN0KilzZXAsIHgpOwogfQogCi0vKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwotI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAotICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWJ5dGVzX2ZpbmRfaW50ZXJuYWwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCi17Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfYnVmZmVyIHN1YmJ1ZjsKLSAgICBjb25zdCBjaGFyICpzdWI7Ci0gICAgUHlfc3NpemVfdCBsZW4sIHN1Yl9sZW47Ci0gICAgUHlfc3NpemVfdCBzdGFydD0wLCBlbmQ9UFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiAtMjsKLQotICAgIGlmIChzdWJvYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMjsKLQotICAgICAgICBzdWIgPSBzdWJidWYuYnVmOwotICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0gICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKLSAgICAgICAgcmVzID0gLTE7Ci0gICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxCi0jaWZuZGVmIEhBVkVfTUVNUkNIUgotICAgICAgICAgICAgJiYgZGlyID4gMAotI2VuZGlmCi0gICAgKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gKnN1YjsKLSAgICAgICAgaW50IG1vZGUgPSAoZGlyID4gMCkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2Zhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKAotICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZikgKyBzdGFydCwgZW5kIC0gc3RhcnQsCi0gICAgICAgICAgICBuZWVkbGUsIG5lZWRsZSwgbW9kZSk7Ci0gICAgICAgIGlmIChyZXMgPj0gMCkKLSAgICAgICAgICAgIHJlcyArPSBzdGFydDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChkaXIgPiAwKQotICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgIH0KLQotICAgIGlmIChzdWJvYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0KLVB5RG9jX1NUUlZBUihmaW5kX19kb2NfXywKLSJCLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic3RyaW5nIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2ZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19maW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAotIkIuaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2luZGV4KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZXNfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdHJpbmcgbm90IGZvdW5kIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19pbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJmaW5kX19kb2NfXywKLSJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzdHJpbmcgc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcmZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAotUHlEb2NfU1RSVkFSKHJpbmRleF9fZG9jX18sCi0iQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3QgZm91bmQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yaW5kZXgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsIC0xKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0cmluZyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JpbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIApAQCAtMjAwNSw3ICsxOTgyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwMTYsNyArMTk5Miw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19zdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PTM3ZGFhNWZhZDEzOTVkOTVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jN2MyMjhkM2JkMTA0YTFiIGlucHV0PThhMzU0NjQwZTRlMGIzZWZdKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgQk9USFNUUklQLCBieXRlcyk7CiB9CkBAIC0yMDI0LDcgKzIwMDAsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMubHN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwMzUsNyArMjAxMCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19sc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD04ODgxMWIwOWRmYmMyOTg4XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Mjg2MDJlNTg2ZjUyNGU4MiBpbnB1dD05YmFmZjQzOThjM2Y2ODU3XSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIExFRlRTVFJJUCwgYnl0ZXMpOwogfQpAQCAtMjA0Myw3ICsyMDE4LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJzdHJpcAogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIGJ5dGVzOiBvYmplY3QgPSBOb25lCiAgICAgLwogCkBAIC0yMDU0LDgxICsyMDI4LDM3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yc3RyaXBfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYnl0ZXMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ3ZTM4MTVjOTU0NDdkYSBpbnB1dD04ZjkzYzljZDM2MWYwMTQwXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTQ3ZTM4MTVjOTU0NDdkYSBpbnB1dD1iNzhhZjQ0NWM3MjdlMzJiXSovCiB7CiAgICAgcmV0dXJuIGRvX2FyZ3N0cmlwKHNlbGYsIFJJR0hUU1RSSVAsIGJ5dGVzKTsKIH0KIAogCi1QeURvY19TVFJWQVIoY291bnRfX2RvY19fLAotIkIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgc3ViIGluXG5cCi1zdHJpbmcgQltzdGFydDplbmRdLiAgT3B0aW9uYWwgYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkXG5cCi1hcyBpbiBzbGljZSBub3RhdGlvbi4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2NvdW50KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpzdWJfb2JqOwotICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwotICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKLSAgICBjaGFyIGJ5dGU7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDAsIGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotCi0gICAgUHlfYnVmZmVyIHZzdWI7Ci0gICAgUHlPYmplY3QgKmNvdW50X29iajsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHN1Yl9vYmopIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgc3ViID0gdnN1Yi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN1YiA9ICZieXRlOwotICAgICAgICBzdWJfbGVuID0gMTsKLSAgICB9Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpKTsKLQotICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKLQotICAgIGlmIChzdWJfb2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKLQotICAgIHJldHVybiBjb3VudF9vYmo7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb3VudChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMudHJhbnNsYXRlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgdGFibGU6IG9iamVjdAogICAgICAgICBUcmFuc2xhdGlvbiB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LgotICAgIFsKLSAgICBkZWxldGVjaGFyczogb2JqZWN0Ci0gICAgXQogICAgIC8KKyAgICBkZWxldGUgYXMgZGVsZXRlY2hhcnM6IG9iamVjdChjX2RlZmF1bHQ9Ik5VTEwiKSA9IGInJwogCiBSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIAotQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC4KK0FsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgogVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsIGludCBncm91cF9yaWdodF8xLAorYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIzM2RmODUwZWI1MGJmOGQgaW5wdXQ9ZDhmYTU1MTlkN2NjNGJlN10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQzYmUzNDM3ZjE5NTYyMTEgaW5wdXQ9MGVjZGYxNTlmNjU0MjMzY10qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwogICAgIFB5X2J1ZmZlciB0YWJsZV92aWV3ID0ge05VTEwsIE5VTEx9OwpAQCAtMjE4OSw3ICsyMTE5LDcgQEAKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FzU3RyaW5nKHJlc3VsdCk7CisgICAgb3V0cHV0X3N0YXJ0ID0gb3V0cHV0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKICAgICBpbnB1dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGlucHV0X29iaik7CiAKICAgICBpZiAoZGVsbGVuID09IDAgJiYgdGFibGVfY2hhcnMgIT0gTlVMTCkgewpAQCAtMjI2NSw0OTggKzIxOTUsNiBAQAogICAgIHJldHVybiBfUHlfYnl0ZXNfbWFrZXRyYW5zKGZybSwgdG8pOwogfQogCi0vKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCi0KLSNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKLQotLyogU3RyaW5nIG9wcyBtdXN0IHJldHVybiBhIHN0cmluZy4gICovCi0vKiBJZiB0aGUgb2JqZWN0IGlzIHN1YmNsYXNzIG9mIHN0cmluZywgY3JlYXRlIGEgY29weSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmV0dXJuX3NlbGYoUHlCeXRlc09iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIHNlbGY7Ci0gICAgfQotICAgIHJldHVybiAoUHlCeXRlc09iamVjdCAqKVB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCi0gICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLAotICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpKTsKLX0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1jb3VudGNoYXIoY29uc3QgY2hhciAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldF9sZW4sIGNoYXIgYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBQeV9zc2l6ZV90IGNvdW50PTA7Ci0gICAgY29uc3QgY2hhciAqc3RhcnQ9dGFyZ2V0OwotICAgIGNvbnN0IGNoYXIgKmVuZD10YXJnZXQrdGFyZ2V0X2xlbjsKLQotICAgIHdoaWxlICggKHN0YXJ0PWZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGMpKSAhPSBOVUxMICkgewotICAgICAgICBjb3VudCsrOwotICAgICAgICBpZiAoY291bnQgPj0gbWF4Y291bnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RhcnQgKz0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIGNvdW50OwotfQotCi0KLS8qIEFsZ29yaXRobXMgZm9yIGRpZmZlcmVudCBjYXNlcyBvZiBzdHJpbmcgcmVwbGFjZW1lbnQgKi8KLQotLyogbGVuKHNlbGYpPj0xLCBmcm9tPSIiLCBsZW4odG8pPj0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9pbnRlcmxlYXZlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIGk7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7Ci0gICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KLSAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pCi0gICAgICAgIGNvdW50ID0gbWF4Y291bnQ7Ci0gICAgZWxzZQotICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLwotICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2VtZW50IGJ5dGVzIGFyZSB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47Ci0KLSAgICBpZiAoISAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAvKiBUT0RPOiBzcGVjaWFsIGNhc2Ugc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggZG9lc24ndCBuZWVkIG1lbWNweSAqLwotCi0gICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICBjb3VudCAtPSAxOwotCi0gICAgZm9yIChpPTA7IGk8Y291bnQ7IGkrKykgewotICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgfQotCi0gICAgLyogQ29weSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuLWkpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCi0gICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkgewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gKGNvdW50ICogZnJvbV9sZW4pOwotICAgIGFzc2VydCAocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQgKyBvZmZzZXQ7Ci0KLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0KLSAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk9PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgY2hhciB0b19jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3MsICpzdGFydCwgKmVuZCwgKm5leHQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbjsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICAvKiBUaGUgcmVzdWx0IHN0cmluZyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBuZXh0ID0gZmluZGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jKTsKLQotICAgIGlmIChuZXh0ID09IE5VTEwpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIChuZXh0LXNlbGZfcyk7Ci0gICAgKnN0YXJ0ID0gdG9fYzsKLSAgICBzdGFydCsrOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgKm5leHQgPSB0b19jOwotICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqcmVzdWx0X3MsICpzdGFydCwgKmVuZDsKLSAgICBjaGFyICpzZWxmX3M7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOwotCi0gICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KLSAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKLSAgICBQeV9NRU1DUFkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOwotCi0gICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldD09LTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHN0YXJ0K29mZnNldCwgdG9fcywgZnJvbV9sZW4pOwotICAgICAgICBzdGFydCArPSBvZmZzZXQrZnJvbV9sZW47Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSAxID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrMTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvKiBDb3B5IHRoZSByZW1haW5kZXIgb2YgdGhlIHJlbWFpbmluZyBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX3N1YnN0cmluZyhQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KSB7Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgbmV4dCA9IHN0YXJ0K29mZnNldDsKLSAgICAgICAgaWYgKG5leHQgPT0gc3RhcnQpIHsKLSAgICAgICAgICAgIC8qIHJlcGxhY2Ugd2l0aCB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0K2Zyb21fbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBpZiAobWF4Y291bnQgPCAwKSB7Ci0gICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgfSBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKG1heGNvdW50ID09IDAgfHwKLSAgICAgICAgKGZyb21fbGVuID09IDAgJiYgdG9fbGVuID09IDApKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IDApIHsKLSAgICAgICAgLyogaW5zZXJ0IHRoZSAndG8nIHN0cmluZyBldmVyeXdoZXJlLiAgICovCi0gICAgICAgIC8qICAgID4+PiAiUHl0aG9uIi5yZXBsYWNlKCIiLCAiLiIpICAgICAqLwotICAgICAgICAvKiAgICAnLlAueS50Lmguby5uLicgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2VfaW50ZXJsZWF2ZShzZWxmLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9Ci0KLSAgICAvKiBFeGNlcHQgZm9yICIiLnJlcGxhY2UoIiIsICJBIikgPT0gIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLwotICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIHN0cmluZyB0byBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBzdHJpbmcgKi8KLSAgICAvKiBTcGVjaWFsIGNhc2Ugc28gdGhlIHJlbWFpbmluZyBjb2RlIGFsd2F5cyBnZXRzIGEgbm9uLWVtcHR5IHN0cmluZyAqLwotICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIGlmICh0b19sZW4gPT0gMCkgewotICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBzdHJpbmcgKi8KLSAgICAgICAgaWYgKGZyb21fbGVuID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBIYW5kbGUgc3BlY2lhbCBjYXNlIHdoZXJlIGJvdGggc3RyaW5ncyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IHRvX2xlbikgewotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICB0b19zWzBdLAotICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZ19pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sCi0gICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyogT3RoZXJ3aXNlIHVzZSB0aGUgbW9yZSBnZW5lcmljIGFsZ29yaXRobXMgKi8KLSAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKHNlbGYsIGZyb21fc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX3N1YnN0cmluZyhzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgfQotfQotCiAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnJlcGxhY2UKQEAgLTI3NzUsMTU2ICsyMjEzLDI4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAogICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDAzZGM5ZDdhODNjNWExZCBpbnB1dD1iMmZiYmYwYmYwNGRlOGU1XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk0ZmE1ODhiNmI5YzEwNCBpbnB1dD1iMmZiYmYwYmYwNGRlOGU1XSovCiB7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJlcGxhY2UoKFB5Qnl0ZXNPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOworICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZSgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW9sZC0+YnVmLCBvbGQtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiluZXctPmJ1ZiwgbmV3LT5sZW4sIGNvdW50KTsKIH0KIAogLyoqIEVuZCBEQUxLRSAqKi8KIAotLyogTWF0Y2hlcyB0aGUgZW5kIChkaXJlY3Rpb24gPj0gMCkgb3Igc3RhcnQgKGRpcmVjdGlvbiA8IDApIG9mIHNlbGYKLSAqIGFnYWluc3Qgc3Vic3RyLCB1c2luZyB0aGUgc3RhcnQgYW5kIGVuZCBhcmd1bWVudHMuIFJldHVybnMKLSAqIC0xIG9uIGVycm9yLCAwIGlmIG5vdCBmb3VuZCBhbmQgMSBpZiBmb3VuZC4KLSAqLwotUHlfTE9DQUwoaW50KQotX2J5dGVzX3RhaWxtYXRjaChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotICAgIFB5X3NzaXplX3Qgc2xlbjsKLSAgICBQeV9idWZmZXIgc3ViX3ZpZXcgPSB7TlVMTCwgTlVMTH07Ci0gICAgY29uc3QgY2hhciogc3ViOwotICAgIGNvbnN0IGNoYXIqIHN0cjsKLQotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN1YnN0cikpIHsKLSAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3Vic3RyKTsKLSAgICAgICAgc2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3Vic3RyKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vic3RyLCAmc3ViX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgc3ViID0gc3ViX3ZpZXcuYnVmOwotICAgICAgICBzbGVuID0gc3ViX3ZpZXcubGVuOwotICAgIH0KLSAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0KLSAgICBpZiAoZGlyZWN0aW9uIDwgMCkgewotICAgICAgICAvKiBzdGFydHN3aXRoICovCi0gICAgICAgIGlmIChzdGFydCtzbGVuID4gbGVuKQotICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBlbmRzd2l0aCAqLwotICAgICAgICBpZiAoZW5kLXN0YXJ0IDwgc2xlbiB8fCBzdGFydCA+IGxlbikKLSAgICAgICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0KLSAgICAgICAgaWYgKGVuZC1zbGVuID4gc3RhcnQpCi0gICAgICAgICAgICBzdGFydCA9IGVuZCAtIHNsZW47Ci0gICAgfQotICAgIGlmIChlbmQtc3RhcnQgPCBzbGVuKQotICAgICAgICBnb3RvIG5vdGZvdW5kOwotICAgIGlmIChtZW1jbXAoc3RyK3N0YXJ0LCBzdWIsIHNsZW4pICE9IDApCi0gICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7Ci0gICAgcmV0dXJuIDE7Ci0KLW5vdGZvdW5kOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKLSAgICByZXR1cm4gMDsKLX0KLQotCi1QeURvY19TVFJWQVIoc3RhcnRzd2l0aF9fZG9jX18sCi0iQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJzdGFydHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCAtMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAib3IgYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKGVuZHN3aXRoX19kb2NfXywKLSJCLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKLVxuXAotUmV0dXJuIFRydWUgaWYgQiBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCBzdWZmaXgsIEZhbHNlIG90aGVyd2lzZS5cblwKLVdpdGggb3B0aW9uYWwgc3RhcnQsIHRlc3QgQiBiZWdpbm5pbmcgYXQgdGhhdCBwb3NpdGlvbi5cblwKLVdpdGggb3B0aW9uYWwgZW5kLCBzdG9wIGNvbXBhcmluZyBCIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1zdWZmaXggY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBieXRlcyB0byB0cnkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19lbmRzd2l0aChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImVuZHN3aXRoIiwgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgcmVzdWx0ID0gX2J5dGVzX3RhaWxtYXRjaChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCArMSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIH0KLSAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBieXRlcyBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2YgYnl0ZXMsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2VuZHN3aXRoKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCkBAIC0yOTQ0LDkgKzIyNTQsOSBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkMjAxNmZmOGUwYmIxNzYgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2NDlhNTNkZGUyN2IzMTQgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLwogewogICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoKFB5T2JqZWN0KilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIH0KQEAgLTI5NjQsOCArMjI3NCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTk1YzM1OThmNzgzM2NhZCBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0ODQxNDlhNWQ4ODBmZmIgaW5wdXQ9N2Y0YWFjNjcxNDRmOTk0NF0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCkBAIC0yOTczLDIyICsyMjgzLDYgQEAKICAgICAgICAgKTsKIH0KIAotc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VQ1M0IGMpCi17Ci0gICAgaWYgKGMgPj0gMTI4KQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5X0lTRElHSVQoYykpCi0gICAgICAgIHJldHVybiBjIC0gJzAnOwotICAgIGVsc2UgewotICAgICAgICBpZiAoUHlfSVNVUFBFUihjKSkKLSAgICAgICAgICAgIGMgPSBQeV9UT0xPV0VSKGMpOwotICAgICAgICBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpCi0gICAgICAgICAgICByZXR1cm4gYyAtICdhJyArIDEwOwotICAgIH0KLSAgICByZXR1cm4gLTE7Ci19Ci0KIC8qW2NsaW5pYyBpbnB1dF0KIEBjbGFzc21ldGhvZAogYnl0ZXMuZnJvbWhleApAQCAtMzAwNiw0NyArMjMwMCw4OCBAQAogYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOTczYWNjNjM2NjFiYjJlIGlucHV0PWJmNGQxYzM2MTY3MGFjZDNdKi8KIHsKLSAgICBQeU9iamVjdCAqbmV3c3RyaW5nOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlCeXRlc19Gcm9tSGV4KHN0cmluZywgMCk7CisgICAgaWYgKHR5cGUgIT0gJlB5Qnl0ZXNfVHlwZSAmJiByZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBQeV9TRVRSRUYocmVzdWx0LCBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCAqKXR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBOVUxMKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUhleChQeU9iamVjdCAqc3RyaW5nLCBpbnQgdXNlX2J5dGVhcnJheSkKK3sKICAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwotICAgIGludCB0b3AsIGJvdDsKLSAgICB2b2lkICpkYXRhOwotICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIFB5X3NzaXplX3QgaGV4bGVuLCBpbnZhbGlkX2NoYXI7CisgICAgdW5zaWduZWQgaW50IHRvcCwgYm90OworICAgIFB5X1VDUzEgKnN0ciwgKmVuZDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKIAogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKLSAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKICAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOwogCi0gICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KLSAgICBuZXdzdHJpbmcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKLSAgICBpZiAoIW5ld3N0cmluZykKKyAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShzdHJpbmcpKSB7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAvKiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBub24tQVNDSUkgY2hhcmFjdGVyICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoZXhsZW47IGkrKykgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID49IDEyOCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX2NoYXIgPSBpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChzdHJpbmcpID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICBzdHIgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOworCisgICAgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KKyAgICBidWYgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBoZXhsZW4gLyAyKTsKKyAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld3N0cmluZyk7Ci0gICAgZm9yIChpID0gaiA9IDA7IGkgPCBoZXhsZW47IGkgKz0gMikgeworCisgICAgZW5kID0gc3RyICsgaGV4bGVuOworICAgIHdoaWxlIChzdHIgPCBlbmQpIHsKICAgICAgICAgLyogc2tpcCBvdmVyIHNwYWNlcyBpbiB0aGUgaW5wdXQgKi8KLSAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09ICcgJykKLSAgICAgICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGkgPj0gaGV4bGVuKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkpOwotICAgICAgICBpZiAodG9wID09IC0xIHx8IGJvdCA9PSAtMSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGkpOworICAgICAgICBpZiAoKnN0ciA9PSAnICcpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBzdHIrKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKCpzdHIgPT0gJyAnKTsKKyAgICAgICAgICAgIGlmIChzdHIgPj0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG9wID0gX1B5TG9uZ19EaWdpdFZhbHVlWypzdHJdOworICAgICAgICBpZiAodG9wID49IDE2KSB7CisgICAgICAgICAgICBpbnZhbGlkX2NoYXIgPSBzdHIgLSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBidWZbaisrXSA9ICh0b3AgPDwgNCkgKyBib3Q7CisgICAgICAgIHN0cisrOworCisgICAgICAgIGJvdCA9IF9QeUxvbmdfRGlnaXRWYWx1ZVsqc3RyXTsKKyAgICAgICAgaWYgKGJvdCA+PSAxNikgeworICAgICAgICAgICAgaW52YWxpZF9jaGFyID0gc3RyIC0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgc3RyKys7CisKKyAgICAgICAgKmJ1ZisrID0gKHVuc2lnbmVkIGNoYXIpKCh0b3AgPDwgNCkgKyBib3QpOwogICAgIH0KLSAgICBpZiAoaiAhPSBieXRlc2xlbiAmJiBfUHlCeXRlc19SZXNpemUoJm5ld3N0cmluZywgaikgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHJldHVybiBuZXdzdHJpbmc7CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGJ1Zik7CiAKICAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihuZXdzdHJpbmcpOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCisgICAgICAgICAgICAgICAgICJmcm9taGV4KCkgYXJnIGF0IHBvc2l0aW9uICV6ZCIsIGludmFsaWRfY2hhcik7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMzA3NiwxNyArMjQxMSwyMCBAQAogICAgIHsiX19nZXRuZXdhcmdzX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNfZ2V0bmV3YXJncywgIE1FVEhfTk9BUkdTfSwKICAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAotICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgY2VudGVyX19kb2NfX30sCi0gICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAorICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NlbnRlcl9fZG9jX199LAorICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfY291bnQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NvdW50X19kb2NfX30sCiAgICAgQllURVNfREVDT0RFX01FVEhPRERFRgogICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgZW5kc3dpdGhfX2RvY19ffSwKKyAgICAgX1B5X2VuZHN3aXRoX19kb2NfX30sCiAgICAgeyJleHBhbmR0YWJzIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9leHBhbmR0YWJzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICBleHBhbmR0YWJzX19kb2NfX30sCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2ZpbmQsIE1FVEhfVkFSQVJHUywgZmluZF9fZG9jX199LAorICAgICBfUHlfZXhwYW5kdGFic19fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19maW5kLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9maW5kX19kb2NfX30sCiAgICAgQllURVNfRlJPTUhFWF9NRVRIT0RERUYKICAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlc19oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKLSAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCisgICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19pbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfaW5kZXhfX2RvY19ffSwKICAgICB7ImlzYWxudW0iLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxudW0sIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXNhbG51bV9fZG9jX199LAogICAgIHsiaXNhbHBoYSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbHBoYSwgTUVUSF9OT0FSR1MsCkBAIC0zMTAyLDM4ICsyNDQwLDQwIEBACiAgICAgeyJpc3VwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc3VwcGVyLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2lzdXBwZXJfX2RvY19ffSwKICAgICBCWVRFU19KT0lOX01FVEhPRERFRgotICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIGxqdXN0X19kb2NfX30sCisgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X2xqdXN0X19kb2NfX30sCiAgICAgeyJsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbG93ZXIsIE1FVEhfTk9BUkdTLCBfUHlfbG93ZXJfX2RvY19ffSwKICAgICBCWVRFU19MU1RSSVBfTUVUSE9EREVGCiAgICAgQllURVNfTUFLRVRSQU5TX01FVEhPRERFRgogICAgIEJZVEVTX1BBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFU19SRVBMQUNFX01FVEhPRERFRgotICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmZpbmQsIE1FVEhfVkFSQVJHUywgcmZpbmRfX2RvY19ffSwKLSAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCi0gICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKKyAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JmaW5kLCBNRVRIX1ZBUkFSR1MsIF9QeV9yZmluZF9fZG9jX199LAorICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCBfUHlfcmluZGV4X19kb2NfX30sCisgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X3JqdXN0X19kb2NfX30sCiAgICAgQllURVNfUlBBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFU19SU1BMSVRfTUVUSE9EREVGCiAgICAgQllURVNfUlNUUklQX01FVEhPRERFRgogICAgIEJZVEVTX1NQTElUX01FVEhPRERFRgogICAgIEJZVEVTX1NQTElUTElORVNfTUVUSE9EREVGCiAgICAgeyJzdGFydHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3N0YXJ0c3dpdGgsIE1FVEhfVkFSQVJHUywKLSAgICAgc3RhcnRzd2l0aF9fZG9jX199LAorICAgICBfUHlfc3RhcnRzd2l0aF9fZG9jX199LAogICAgIEJZVEVTX1NUUklQX01FVEhPRERFRgogICAgIHsic3dhcGNhc2UiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3N3YXBjYXNlLCBNRVRIX05PQVJHUywKICAgICAgX1B5X3N3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0aXRsZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdGl0bGUsIE1FVEhfTk9BUkdTLCBfUHlfdGl0bGVfX2RvY19ffSwKICAgICBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGCiAgICAgeyJ1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfdXBwZXIsIE1FVEhfTk9BUkdTLCBfUHlfdXBwZXJfX2RvY19ffSwKLSAgICB7InpmaWxsIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl96ZmlsbCwgTUVUSF9WQVJBUkdTLCB6ZmlsbF9fZG9jX199LAorICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIF9QeV96ZmlsbF9fZG9jX199LAogICAgIHtOVUxMLCAgICAgTlVMTH0gICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19tb2QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3KQorYnl0ZXNfbW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQogewotICAgIGlmICghUHlCeXRlc19DaGVjayh2KSkKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soc2VsZikpIHsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwotICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXQodiwgdyk7CisgICAgfQorICAgIHJldHVybiBfUHlCeXRlc19Gb3JtYXRFeChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCAwKTsKIH0KIAogc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBieXRlc19hc19udW1iZXIgPSB7CkBAIC0zMjIyLDE3ICsyNTYyLDE1IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAvKiBJcyBpdCBhbiBpbnRlZ2VyPyAqLwotICAgIHNpemUgPSBQeU51bWJlcl9Bc1NzaXplX3QoeCwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7Ci0gICAgaWYgKHNpemUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICBpZiAoUHlJbmRleF9DaGVjayh4KSkgeworICAgICAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBuZXcgPSBfUHlCeXRlc19Gcm9tU2l6ZShzaXplLCAxKTsKICAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMjQyLDEwOCArMjU4MCw5MyBAQAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21PYmplY3QoeCk7CiB9CiAKLVB5T2JqZWN0ICoKLVB5Qnl0ZXNfRnJvbU9iamVjdChQeU9iamVjdCAqeCkKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21CdWZmZXIoUHlPYmplY3QgKngpCiB7Ci0gICAgUHlPYmplY3QgKm5ldywgKml0OworICAgIFB5T2JqZWN0ICpuZXc7CisgICAgUHlfYnVmZmVyIHZpZXc7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHgsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3Lmxlbik7CisgICAgaWYgKCFuZXcpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKCgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWwsCisgICAgICAgICAgICAgICAgJnZpZXcsIHZpZXcubGVuLCAnQycpIDwgMCkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBuZXc7CisKK2ZhaWw6CisgICAgUHlfWERFQ1JFRihuZXcpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiBOVUxMOworfQorCisjZGVmaW5lIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIEdFVF9JVEVNKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2hhciAqc3RyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5T2JqZWN0ICppdGVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChieXRlcyA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RyID0gKChQeUJ5dGVzT2JqZWN0ICopYnl0ZXMpLT5vYl9zdmFsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfU0laRSh4KTsgaSsrKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGl0ZW0gPSBHRVRfSVRFTSgoeCksIGkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBOVUxMKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAqc3RyKysgPSAoY2hhcikgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIGJ5dGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21MaXN0KFB5T2JqZWN0ICp4KQoreworICAgIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIFB5TGlzdF9HRVRfSVRFTSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21UdXBsZShQeU9iamVjdCAqeCkKK3sKKyAgICBfUHlCeXRlc19GUk9NX0xJU1RfQk9EWSh4LCBQeVR1cGxlX0dFVF9JVEVNKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19QeUJ5dGVzX0Zyb21JdGVyYXRvcihQeU9iamVjdCAqaXQsIFB5T2JqZWN0ICp4KQoreworICAgIGNoYXIgKnN0cjsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7Ci0KLSAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0gICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLwotICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkgewotICAgICAgICBQeV9idWZmZXIgdmlldzsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih4LCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy5sZW4pOwotICAgICAgICBpZiAoIW5ldykKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgaWYgKFB5QnVmZmVyX1RvQ29udGlndW91cygoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2aWV3LCB2aWV3LmxlbiwgJ0MnKSA8IDApCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gbmV3OwotICAgICAgZmFpbDoKLSAgICAgICAgUHlfWERFQ1JFRihuZXcpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soeCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCB1bmljb2RlIG9iamVjdCB0byBieXRlcyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKHgsIGkpLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgfQotICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBQeV9TSVpFKHgpKTsKLSAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTSh4LCBpKSwgUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+PSAyNTYpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXcpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3OwotICAgIH0KKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CiAKICAgICAvKiBGb3IgaXRlcmF0b3IgdmVyc2lvbiwgY3JlYXRlIGEgc3RyaW5nIG9iamVjdCBhbmQgcmVzaXplIGFzIG5lZWRlZCAqLwogICAgIHNpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KHgsIDY0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAvKiBBbGxvY2F0ZSBhbiBleHRyYSBieXRlIHRvIHByZXZlbnQgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgpIGZyb20KLSAgICAgICByZXR1cm5pbmcgYSBzaGFyZWQgZW1wdHkgYnl0ZXMgc3RyaW5nLiBUaGlzIHJlcXVpcmVkIGJlY2F1c2Ugd2UKLSAgICAgICB3YW50IHRvIGNhbGwgX1B5Qnl0ZXNfUmVzaXplKCkgdGhlIHJldHVybmVkIG9iamVjdCwgd2hpY2ggd2UgY2FuCi0gICAgICAgb25seSBkbyBvbiBieXRlcyBvYmplY3RzIHdpdGggcmVmY291bnQgPT0gMS4gKi8KLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICBzaXplID0gMTsKLSAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChuZXcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5X1JFRkNOVChuZXcpID09IDEpOwogCi0gICAgLyogR2V0IHRoZSBpdGVyYXRvciAqLwotICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih4KTsKLSAgICBpZiAoaXQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAKICAgICAvKiBSdW4gdGhlIGl0ZXJhdG9yIHRvIGV4aGF1c3Rpb24gKi8KICAgICBmb3IgKGkgPSAwOyA7IGkrKykgewpAQCAtMzM1OSw3ICsyNjgyLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIEludGVycHJldCBpdCBhcyBhbiBpbnQgKF9faW5kZXhfXykgKi8KLSAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTMzNzMsMjEgKzI2OTYsNTggQEAKIAogICAgICAgICAvKiBBcHBlbmQgdGhlIGJ5dGUgKi8KICAgICAgICAgaWYgKGkgPj0gc2l6ZSkgewotICAgICAgICAgICAgc2l6ZSA9IDIgKiBzaXplICsgMTsKLSAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJm5ldywgc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUoJndyaXRlciwgc3RyLCBzaXplKzEpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgc2l6ZSA9IHdyaXRlci5hbGxvY2F0ZWQ7CiAgICAgICAgIH0KLSAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbFtpXSA9IChjaGFyKSB2YWx1ZTsKKyAgICAgICAgKnN0cisrID0gKGNoYXIpIHZhbHVlOwogICAgIH0KLSAgICBfUHlCeXRlc19SZXNpemUoJm5ldywgaSk7CiAKLSAgICAvKiBDbGVhbiB1cCBhbmQgcmV0dXJuIHN1Y2Nlc3MgKi8KLSAgICBQeV9ERUNSRUYoaXQpOwotICAgIHJldHVybiBuZXc7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOwogCiAgIGVycm9yOgotICAgIFB5X1hERUNSRUYoaXQpOwotICAgIFB5X1hERUNSRUYobmV3KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitQeUJ5dGVzX0Zyb21PYmplY3QoUHlPYmplY3QgKngpCit7CisgICAgUHlPYmplY3QgKml0LCAqcmVzdWx0OworCisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2tFeGFjdCh4KSkgeworICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgIHJldHVybiB4OworICAgIH0KKworICAgIC8qIFVzZSB0aGUgbW9kZXJuIGJ1ZmZlciBpbnRlcmZhY2UgKi8KKyAgICBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tQnVmZmVyKHgpOworCisgICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbUxpc3QoeCk7CisKKyAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHgpKQorICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfRnJvbVR1cGxlKHgpOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soeCkpIHsKKyAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHgpOworICAgICAgICBpZiAoaXQgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUl0ZXJhdG9yKGl0LCB4KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0ICclLjIwMHMnIG9iamVjdCB0byBieXRlcyIsCisgICAgICAgICAgICAgICAgIHgtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zNDA1LDcgKzI3NjUsNyBAQAogICAgIG4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRtcCk7CiAgICAgcG5ldyA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIG4pOwogICAgIGlmIChwbmV3ICE9IE5VTEwpIHsKLSAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHBuZXcpLAorICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocG5ldyksCiAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh0bXApLCBuKzEpOwogICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKilwbmV3KS0+b2Jfc2hhc2ggPQogICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopdG1wKS0+b2Jfc2hhc2g7CkBAIC0zNzQ3LDMgKzMxMDcsMjgyIEBACiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGl0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CisKKworLyogX1B5Qnl0ZXNXcml0ZXIgQVBJICovCisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKK3ZvaWQKK19QeUJ5dGVzV3JpdGVyX0luaXQoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICAvKiBTZXQgYWxsIGF0dHJpYnV0ZXMgYmVmb3JlIHNtYWxsX2J1ZmZlciB0byAwICovCisgICAgbWVtc2V0KHdyaXRlciwgMCwgb2Zmc2V0b2YoX1B5Qnl0ZXNXcml0ZXIsIHNtYWxsX2J1ZmZlcikpOworI2lmZGVmIFB5X0RFQlVHCisgICAgbWVtc2V0KHdyaXRlci0+c21hbGxfYnVmZmVyLCAweENCLCBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpKTsKKyNlbmRpZgorfQorCit2b2lkCitfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworfQorCitQeV9MT0NBTF9JTkxJTkUoY2hhciopCitfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyKQoreworICAgIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworICAgICAgICByZXR1cm4gd3JpdGVyLT5zbWFsbF9idWZmZXI7CisgICAgfQorICAgIGVsc2UgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBQeUJ5dGVBcnJheV9BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyICE9IE5VTEwpOworICAgICAgICByZXR1cm4gUHlCeXRlc19BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgIH0KK30KKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitfUHlCeXRlc1dyaXRlcl9HZXRTaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKK3sKKyAgICBjaGFyICpzdGFydCA9IF9QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKHdyaXRlcik7CisgICAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RyID49IHN0YXJ0KTsKKyAgICBhc3NlcnQoc3RyIC0gc3RhcnQgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIHJldHVybiBzdHIgLSBzdGFydDsKK30KKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0cikKK3sKKyNpZmRlZiBQeV9ERUJVRworICAgIGNoYXIgKnN0YXJ0LCAqZW5kOworCisgICAgaWYgKHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlQXJyYXlfQ2hlY2tFeGFjdCh3cml0ZXItPmJ1ZmZlcikpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVja0V4YWN0KHdyaXRlci0+YnVmZmVyKSk7CisgICAgICAgIGFzc2VydChQeV9SRUZDTlQod3JpdGVyLT5idWZmZXIpID09IDEpOworICAgIH0KKworICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgLyogYnl0ZWFycmF5IGhhcyBpdHMgb3duIG92ZXJhbGxvY2F0aW9uIGFsZ29yaXRobSwKKyAgICAgICAgICAgd3JpdGVyIG92ZXJhbGxvY2F0aW9uIG11c3QgYmUgZGlzYWJsZWQgKi8KKyAgICAgICAgYXNzZXJ0KCF3cml0ZXItPm92ZXJhbGxvY2F0ZSk7CisgICAgfQorCisgICAgYXNzZXJ0KDAgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIGFzc2VydCgwIDw9IHdyaXRlci0+bWluX3NpemUgJiYgd3JpdGVyLT5taW5fc2l6ZSA8PSB3cml0ZXItPmFsbG9jYXRlZCk7CisgICAgLyogdGhlIGxhc3QgYnl0ZSBtdXN0IGFsd2F5cyBiZSBudWxsICovCisgICAgc3RhcnQgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpOworICAgIGFzc2VydChzdGFydFt3cml0ZXItPmFsbG9jYXRlZF0gPT0gMCk7CisKKyAgICBlbmQgPSBzdGFydCArIHdyaXRlci0+YWxsb2NhdGVkOworICAgIGFzc2VydChzdHIgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0YXJ0IDw9IHN0ciAmJiBzdHIgPD0gZW5kKTsKKyNlbmRpZgorfQorCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnN0ciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkLCBwb3M7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICBhc3NlcnQod3JpdGVyLT5hbGxvY2F0ZWQgPCBzaXplKTsKKworICAgIGFsbG9jYXRlZCA9IHNpemU7CisgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlCisgICAgICAgICYmIGFsbG9jYXRlZCA8PSAoUFlfU1NJWkVfVF9NQVggLSBhbGxvY2F0ZWQgLyBPVkVSQUxMT0NBVEVfRkFDVE9SKSkgeworICAgICAgICAvKiBvdmVyYWxsb2NhdGUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZWFsbG9jKCkgKi8KKyAgICAgICAgYWxsb2NhdGVkICs9IGFsbG9jYXRlZCAvIE9WRVJBTExPQ0FURV9GQUNUT1I7CisgICAgfQorCisgICAgcG9zID0gX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZSh3cml0ZXIsIHN0cik7CisgICAgaWYgKCF3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSh3cml0ZXItPmJ1ZmZlciwgYWxsb2NhdGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgLyogd3JpdGVyLT5hbGxvY2F0ZWQgY2FuIGJlIHNtYWxsZXIgdGhhbiB3cml0ZXItPmJ1ZmZlci0+b2JfYWxsb2MsCisgICAgICAgICAgICAgICBidXQgd2UgY2Fubm90IHVzZSBvYl9hbGxvYyBiZWNhdXNlIGJ5dGVzIG1heSBuZWVkIHRvIGJlIG1vdmVkCisgICAgICAgICAgICAgICB0byB1c2UgdGhlIHdob2xlIGJ1ZmZlci4gYnl0ZWFycmF5IHVzZXMgYW4gaW50ZXJuYWwgb3B0aW1pemF0aW9uCisgICAgICAgICAgICAgICB0byBhdm9pZCBtb3Zpbmcgb3IgY29weWluZyBieXRlcyB3aGVuIGJ5dGVzIGFyZSByZW1vdmVkIGF0IHRoZQorICAgICAgICAgICAgICAgYmVnaW5uaW5nIChleDogZGVsIGJ5dGVhcnJheVs6MV0pLiAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmd3JpdGVyLT5idWZmZXIsIGFsbG9jYXRlZCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogY29udmVydCBmcm9tIHN0YWNrIGJ1ZmZlciB0byBieXRlcyBvYmplY3QgYnVmZmVyICovCisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KQorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhbGxvY2F0ZWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKKyAgICAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGlmIChwb3MgIT0gMCkgeworICAgICAgICAgICAgY2hhciAqZGVzdDsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICAgICAgZGVzdCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGVzdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIG1lbWNweShkZXN0LAorICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+c21hbGxfYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgIHBvcyk7CisgICAgICAgIH0KKworICAgICAgICB3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIgPSAwOworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgIG1lbXNldCh3cml0ZXItPnNtYWxsX2J1ZmZlciwgMHhEQiwgc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKSk7CisjZW5kaWYKKyAgICB9CisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBhbGxvY2F0ZWQ7CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpICsgcG9zOworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworICAgIHJldHVybiBzdHI7CisKK2Vycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2Mod3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqc3RyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlfc3NpemVfdCBuZXdfbWluX3NpemU7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgLyogbm90aGluZyB0byBkbyAqLworICAgICAgICByZXR1cm4gc3RyOworICAgIH0KKworICAgIGlmICh3cml0ZXItPm1pbl9zaXplID4gUFlfU1NJWkVfVF9NQVggLSBzaXplKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2Mod3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG5ld19taW5fc2l6ZSA9IHdyaXRlci0+bWluX3NpemUgKyBzaXplOworCisgICAgaWYgKG5ld19taW5fc2l6ZSA+IHdyaXRlci0+YWxsb2NhdGVkKQorICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9SZXNpemUod3JpdGVyLCBzdHIsIG5ld19taW5fc2l6ZSk7CisKKyAgICB3cml0ZXItPm1pbl9zaXplID0gbmV3X21pbl9zaXplOworICAgIHJldHVybiBzdHI7Cit9CisKKy8qIEFsbG9jYXRlIHRoZSBidWZmZXIgdG8gd3JpdGUgc2l6ZSBieXRlcy4KKyAgIFJldHVybiB0aGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIGJ1ZmZlciBkYXRhLgorICAgUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9BbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgLyogZW5zdXJlIHRoYXQgX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoKSBpcyBvbmx5IGNhbGxlZCBvbmNlICovCisgICAgYXNzZXJ0KHdyaXRlci0+bWluX3NpemUgPT0gMCAmJiB3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKworICAgIHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlciA9IDE7CisjaWZkZWYgUHlfREVCVUcKKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcikgLSAxOworICAgIC8qIEluIGRlYnVnIG1vZGUsIGRvbid0IHVzZSB0aGUgZnVsbCBzbWFsbCBidWZmZXIgYmVjYXVzZSBpdCBpcyBsZXNzCisgICAgICAgZWZmaWNpZW50IHRoYW4gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHRvIGRldGVjdCBidWZmZXIgdW5kZXJmbG93CisgICAgICAgYW5kIGJ1ZmZlciBvdmVyZmxvdy4gVXNlIDEwIGJ5dGVzIG9mIHRoZSBzbWFsbCBidWZmZXIgdG8gdGVzdCBhbHNvCisgICAgICAgY29kZSB1c2luZyB0aGUgc21hbGxlciBidWZmZXIgaW4gZGVidWcgbW9kZS4KKworICAgICAgIERvbid0IG1vZGlmeSB0aGUgX1B5Qnl0ZXNXcml0ZXIgc3RydWN0dXJlICh1c2UgYSBzaG9ydGVyIHNtYWxsIGJ1ZmZlcikKKyAgICAgICBpbiBkZWJ1ZyBtb2RlIHRvIGFsc28gYmUgYWJsZSB0byBkZXRlY3Qgc3RhY2sgb3ZlcmZsb3cgd2hlbiBydW5uaW5nCisgICAgICAgdGVzdHMgaW4gZGVidWcgbW9kZS4gVGhlIF9QeUJ5dGVzV3JpdGVyIGlzIGxhcmdlIChtb3JlIHRoYW4gNTEyIGJ5dGVzKSwKKyAgICAgICBpZiBQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoKSBpcyBub3QgdXNlZCBpbiBkZWVwIEMgY2FsbGJhY2ssIHdlIG1heSBoaXQgYQorICAgICAgIHN0YWNrIG92ZXJmbG93LiAqLworICAgIHdyaXRlci0+YWxsb2NhdGVkID0gUHlfTUlOKHdyaXRlci0+YWxsb2NhdGVkLCAxMCk7CisgICAgLyogX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSgpIHJlcXVpcmVzIHRoZSBsYXN0IGJ5dGUgdG8gYmUgMCwKKyAgICAgICB0byBkZXRlY3QgYnVmZmVyIG92ZXJmbG93ICovCisgICAgd3JpdGVyLT5zbWFsbF9idWZmZXJbd3JpdGVyLT5hbGxvY2F0ZWRdID0gMDsKKyNlbHNlCisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpOworI2VuZGlmCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCB3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUJ5dGVzV3JpdGVyX0ZpbmlzaChfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpzdHIpCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKworICAgIHNpemUgPSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKHdyaXRlciwgc3RyKTsKKyAgICBpZiAoc2l6ZSA9PSAwICYmICF3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworICAgICAgICAvKiBHZXQgdGhlIGVtcHR5IGJ5dGUgc3RyaW5nIHNpbmdsZXRvbiAqLworICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIH0KKyAgICBlbHNlIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUod3JpdGVyLT5zbWFsbF9idWZmZXIsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSh3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJlc3VsdCA9IHdyaXRlci0+YnVmZmVyOworICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKHNpemUgIT0gd3JpdGVyLT5hbGxvY2F0ZWQpIHsKKyAgICAgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKHJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA9PSBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYnl0ZXMsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBjaGFyICpzdHIgPSAoY2hhciAqKXB0cjsKKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtZW1jcHkoc3RyLCBieXRlcywgc2l6ZSk7CisgICAgc3RyICs9IHNpemU7CisKKyAgICByZXR1cm4gc3RyOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGFzc29iamVjdC5jIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCmluZGV4IDVlOGFjNTkuLmIwZWQwMjMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xhc3NvYmplY3QuYworKysgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKQEAgLTMwMiwzNCArMzAyLDE5IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1tZXRob2RfY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorbWV0aG9kX2NhbGwoUHlPYmplY3QgKm1ldGhvZCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYzsKIAotICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04oZnVuYyk7CisgICAgc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKG1ldGhvZCk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlUdXBsZV9TaXplKGFyZyk7Ci0gICAgICAgIFB5T2JqZWN0ICpuZXdhcmcgPSBQeVR1cGxlX05ldyhhcmdjb3VudCArIDEpOwotICAgICAgICBpbnQgaTsKLSAgICAgICAgaWYgKG5ld2FyZyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIDAsIHNlbGYpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJnY291bnQ7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZywgaSk7Ci0gICAgICAgICAgICBQeV9YSU5DUkVGKHYpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmcsIGkrMSwgdik7Ci0gICAgICAgIH0KLSAgICAgICAgYXJnID0gbmV3YXJnOwotICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKChQeU9iamVjdCAqKWZ1bmMsIGFyZywga3cpOwotICAgIFB5X0RFQ1JFRihhcmcpOwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKG1ldGhvZCk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChmdW5jLCBzZWxmLCBhcmdzLCBrd2FyZ3MpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKaW5kZXggZTg3YTIyMS4uYzc1YWNiNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oCkBAIC0zOSw0NSArMzksMzggQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfVFJBTlNMQVRFX01FVEhPRERFRiAgICBcCi0gICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9WQVJBUkdTLCBieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3RyYW5zbGF0ZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyb3VwX3JpZ2h0XzEsIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV90cmFuc2xhdGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAiZGVsZXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOnRyYW5zbGF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhYmxlOwotICAgIGludCBncm91cF9yaWdodF8xID0gMDsKICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOwogCi0gICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheS50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGdyb3VwX3JpZ2h0XzEsIGRlbGV0ZWNoYXJzKTsKKyAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGRlbGV0ZWNoYXJzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtMTA4LDE3ICsxMDEsMjAgQEAKICAgICBQeV9idWZmZXIgdG8gPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwKLSAgICAgICAgJmZybSwgJnRvKSkKKyAgICAgICAgJmZybSwgJnRvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTE1MiwxNyArMTQ4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVwbGFjZV9pbXBsKHNlbGYsICZvbGQsICZuZXcsIGNvdW50KTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBvbGQgKi8KLSAgICBpZiAob2xkLm9iaikKKyAgICBpZiAob2xkLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm9sZCk7CisgICAgfQogICAgIC8qIENsZWFudXAgZm9yIG5ldyAqLwotICAgIGlmIChuZXcub2JqKQorICAgIGlmIChuZXcub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmbmV3KTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTgyLDIzICsxODEsMjUgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zcGxpdF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLAogICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246c3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTI1NCwyMyArMjU1LDI1IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZWFycmF5IGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9yc3BsaXRfX2RvY19ffSwKKyAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcnNwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246cnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMzIwLDggKzMyMyw5IEBACiAgICAgaW50IGl0ZW07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm5PJjppbnNlcnQiLAotICAgICAgICAmaW5kZXgsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICAgICAgJmluZGV4LCBfZ2V0Ynl0ZXZhbHVlLCAmaXRlbSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfaW5zZXJ0X2ltcGwoc2VsZiwgaW5kZXgsIGl0ZW0pOwogCiBleGl0OgpAQCAtMzQ5LDggKzM1Myw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGl0ZW07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOmFwcGVuZCIsIF9nZXRieXRldmFsdWUsICZpdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9hcHBlbmRfaW1wbChzZWxmLCBpdGVtKTsKIAogZXhpdDoKQEAgLTM5NCw4ICszOTksOSBAQAogICAgIFB5X3NzaXplX3QgaW5kZXggPSAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifG46cG9wIiwKLSAgICAgICAgJmluZGV4KSkKKyAgICAgICAgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9wb3BfaW1wbChzZWxmLCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00MjMsOCArNDI5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpyZW1vdmUiLCBfZ2V0Ynl0ZXZhbHVlLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JlbW92ZV9pbXBsKHNlbGYsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTQ1Myw4ICs0NjAsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3N0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtNDgzLDggKzQ5MSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTUxMyw4ICs1MjIsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC01MzcsMjMgKzU0NywyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX0RFQ09ERV9NRVRIT0RERUYgICAgXAotICAgIHsiZGVjb2RlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2RlY29kZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2RlY29kZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfZGVjb2RlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2RlY29kZV9pbXBsKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogCiBleGl0OgpAQCAtNTgzLDIxICs1OTUsMjMgQEAKICJ0cnVlLiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19ffSwKKyAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3BsaXRsaW5lc19pbXBsKHNlbGYsIGtlZXBlbmRzKTsKIAogZXhpdDoKQEAgLTYxNywxNyArNjMxLDE4IEBACiAgICAgeyJmcm9taGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9mcm9taGV4LCBNRVRIX098TUVUSF9DTEFTUywgYnl0ZWFycmF5X2Zyb21oZXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlPYmplY3QqY2xzLCBQeU9iamVjdCAqc3RyaW5nKTsKK2J5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4KFB5VHlwZU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJnKQorYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJnKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwoKFB5T2JqZWN0KiljbHMsIHN0cmluZyk7CisgICAgfQorICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9mcm9taGV4X2ltcGwodHlwZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtNjcwLDggKzY4NSw5IEBACiAgICAgaW50IHByb3RvID0gMDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6X19yZWR1Y2VfZXhfXyIsCi0gICAgICAgICZwcm90bykpCisgICAgICAgICZwcm90bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVkdWNlX2V4X2ltcGwoc2VsZiwgcHJvdG8pOwogCiBleGl0OgpAQCAtNjk1LDQgKzcxMSw0IEBACiB7CiAgICAgcmV0dXJuIGJ5dGVhcnJheV9zaXplb2ZfaW1wbChzZWxmKTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NjZjMTVmZjIyYzVlMjQzIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yMjUzNDJhNjgwMzkxYjljIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaAppbmRleCA1YTFhNWU5Li5hMTFlYmQyIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCkBAIC0xNywyMiArMTcsMjQgQEAKICIgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyBubyBsaW1pdC4iKTsKIAogI2RlZmluZSBCWVRFU19TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19zcGxpdF9fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3NwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CitieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3NwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC02NCwxNCArNjYsMTYgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgc2VwID0ge05VTEwsIE5VTEx9OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ5KjpwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnBhcnRpdGlvbiIsICZzZXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcGFydGl0aW9uX2ltcGwoc2VsZiwgJnNlcCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igc2VwICovCi0gICAgaWYgKHNlcC5vYmopCisgICAgaWYgKHNlcC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZXApOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xMDEsMTQgKzEwNSwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnJwYXJ0aXRpb24iLCAmc2VwKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JwYXJ0aXRpb25faW1wbChzZWxmLCAmc2VwKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBzZXAgKi8KLSAgICBpZiAoc2VwLm9iaikKKyAgICBpZiAoc2VwLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEzMCwyMiArMTM2LDI0IEBACiAiU3BsaXR0aW5nIGlzIGRvbmUgc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiB0aGUgYnl0ZXMgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOwogCiAjZGVmaW5lIEJZVEVTX1JTUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3JzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfcnNwbGl0X19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpOworYnl0ZXNfcnNwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXQoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnJzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMTg5LDggKzE5Nyw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTIxOSw4ICsyMjgsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAibHN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX2xzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI0OSw4ICsyNTksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicnN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTI1OCw0NSArMjY5LDM4IEBACiB9CiAKIFB5RG9jX1NUUlZBUihieXRlc190cmFuc2xhdGVfX2RvY19fLAotInRyYW5zbGF0ZSh0YWJsZSwgW2RlbGV0ZWNoYXJzXSlcbiIKKyJ0cmFuc2xhdGUoJHNlbGYsIHRhYmxlLCAvLCBkZWxldGU9YlwnXCcpXG4iCisiLS1cbiIKKyJcbiIKICJSZXR1cm4gYSBjb3B5IHdpdGggZWFjaCBjaGFyYWN0ZXIgbWFwcGVkIGJ5IHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS5cbiIKICJcbiIKICIgIHRhYmxlXG4iCiAiICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuXG4iCiAiXG4iCi0iQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGVjaGFycyBhcmUgcmVtb3ZlZC5cbiIKKyJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZSBhcmUgcmVtb3ZlZC5cbiIKICJUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4iKTsKIAogI2RlZmluZSBCWVRFU19UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfVkFSQVJHUywgYnl0ZXNfdHJhbnNsYXRlX19kb2NfX30sCisgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfdHJhbnNsYXRlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc190cmFuc2xhdGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfdHJhbnNsYXRlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiIiwgImRlbGV0ZSIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik98Tzp0cmFuc2xhdGUiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICp0YWJsZTsKLSAgICBpbnQgZ3JvdXBfcmlnaHRfMSA9IDA7CiAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzID0gTlVMTDsKIAotICAgIHN3aXRjaCAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSkgewotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86dHJhbnNsYXRlIiwgJnRhYmxlKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzp0cmFuc2xhdGUiLCAmdGFibGUsICZkZWxldGVjaGFycykpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgZ3JvdXBfcmlnaHRfMSA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJieXRlcy50cmFuc2xhdGUgcmVxdWlyZXMgMSB0byAyIGFyZ3VtZW50cyIpOwotICAgICAgICAgICAgZ290byBleGl0OworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdGFibGUsICZkZWxldGVjaGFycykpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICByZXR1cm5fdmFsdWUgPSBieXRlc190cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBkZWxldGVjaGFycyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKQEAgLTMyNywxNyArMzMxLDIwIEBACiAgICAgUHlfYnVmZmVyIHRvID0ge05VTEwsIE5VTEx9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqOm1ha2V0cmFucyIsCi0gICAgICAgICZmcm0sICZ0bykpCisgICAgICAgICZmcm0sICZ0bykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19tYWtldHJhbnNfaW1wbCgmZnJtLCAmdG8pOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIGZybSAqLwotICAgIGlmIChmcm0ub2JqKQorICAgIGlmIChmcm0ub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZnJtKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgdG8gKi8KLSAgICBpZiAodG8ub2JqKQorICAgIGlmICh0by5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0byk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTM1OSwxMSArMzY2LDExIEBACiAgICAgeyJyZXBsYWNlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JlcGxhY2UsIE1FVEhfVkFSQVJHUywgYnl0ZXNfcmVwbGFjZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAorYnl0ZXNfcmVwbGFjZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3JlcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIG9sZCA9IHtOVUxMLCBOVUxMfTsKQEAgLTM3MSwxNyArMzc4LDIwIEBACiAgICAgUHlfc3NpemVfdCBjb3VudCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KnkqfG46cmVwbGFjZSIsCi0gICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpCisgICAgICAgICZvbGQsICZuZXcsICZjb3VudCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLwotICAgIGlmIChvbGQub2JqKQorICAgIGlmIChvbGQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCi0gICAgaWYgKG5ldy5vYmopCisgICAgaWYgKG5ldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC00MDIsMjMgKzQxMiwyNSBAQAogIiAgICBjYW4gaGFuZGxlIFVuaWNvZGVEZWNvZGVFcnJvcnMuIik7CiAKICNkZWZpbmUgQllURVNfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfZGVjb2RlX19kb2NfX30sCisgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19kZWNvZGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCitieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGUoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX2RlY29kZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZW5jb2RpbmciLCAiZXJyb3JzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifHNzOmRlY29kZSIsIF9rZXl3b3JkcywgMH07CiAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLAotICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC00MzUsMjEgKzQ0NywyMyBAQAogInRydWUuIik7CiAKICNkZWZpbmUgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdGxpbmVzLCBNRVRIX0ZBU1RDQUxMLCBieXRlc19zcGxpdGxpbmVzX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBpbnQga2VlcGVuZHMpOworYnl0ZXNfc3BsaXRsaW5lc19pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlc19zcGxpdGxpbmVzKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJrZWVwZW5kcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOnNwbGl0bGluZXMiLCBfa2V5d29yZHMsCi0gICAgICAgICZrZWVwZW5kcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZrZWVwZW5kcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOwogCiBleGl0OgpAQCAtNDc3LDExICs0OTEsMTIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfZnJvbWhleF9pbXBsKHR5cGUsIHN0cmluZyk7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1iZDBjZThmMjVkN2UxOGY0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yZGMzYzkzY2ZkMmRjNDQwIGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xpbmljL2RpY3RvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKaW5kZXggNTI4OGI5YS4uZDBjZGZjMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKKysrIGIvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmgKQEAgLTIzLDggKzIzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImZyb21rZXlzIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmdmFsdWUpKQorICAgICAgICAmaXRlcmFibGUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBkaWN0X2Zyb21rZXlzX2ltcGwodHlwZSwgaXRlcmFibGUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTM5LDQgKzQwLDQgQEAKIAogI2RlZmluZSBESUNUX19fQ09OVEFJTlNfX19NRVRIT0RERUYgICAgXAogICAgIHsiX19jb250YWluc19fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RfX19jb250YWluc19fLCBNRVRIX098TUVUSF9DT0VYSVNULCBkaWN0X19fY29udGFpbnNfX19fZG9jX199LAotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWZlNzRkNjc2MzMyZmRiYTYgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkyNjMyNjEwOWUzZDk4MzkgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvdW5pY29kZW9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAppbmRleCBkNDJhNzAwLi44OTFlOTBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaApAQCAtMzEsMTEgKzMxLDEyIEBACiAgICAgUHlPYmplY3QgKnogPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFVVOm1ha2V0cmFucyIsCi0gICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICAmeCwgJnksICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHVuaWNvZGVfbWFrZXRyYW5zX2ltcGwoeCwgeSwgeik7CiAKIGV4aXQ6CiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05NGFmZmRmZjViMmRhZmY1IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00YTg2ZGQxMDhkOTJkMTA0IGlucHV0PWE5MDQ5MDU0MDEzYTFiNzddKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvY29kZW9iamVjdC5jIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKaW5kZXggOWRmODdiMC4uYjZlNWJkMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jb2Rlb2JqZWN0LmMKQEAgLTEsMyArMSw1IEBACisjaW5jbHVkZSA8c3RkYm9vbC5oPgorCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgpAQCAtNSw2ICs3LDEyIEBACiAjZGVmaW5lIE5BTUVfQ0hBUlMgXAogICAgICIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCiAKKy8qIEhvbGRlciBmb3IgY29fZXh0cmEgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9zc2l6ZV90IGNlX3NpemU7CisgICAgdm9pZCAqKmNlX2V4dHJhczsKK30gX1B5Q29kZU9iamVjdEV4dHJhOworCiAvKiBhbGxfbmFtZV9jaGFycyhzKTogdHJ1ZSBpZmYgYWxsIGNoYXJzIGluIHMgYXJlIHZhbGlkIE5BTUVfQ0hBUlMgKi8KIAogc3RhdGljIGludApAQCAtMTM0LDcgKzE0Miw3IEBACiAgICAgICAgIFB5X3NzaXplX3QgdG90YWxfYXJncyA9IGFyZ2NvdW50ICsga3dvbmx5YXJnY291bnQgKwogICAgICAgICAgICAgKChmbGFncyAmIENPX1ZBUkFSR1MpICE9IDApICsgKChmbGFncyAmIENPX1ZBUktFWVdPUkRTKSAhPSAwKTsKICAgICAgICAgUHlfc3NpemVfdCBhbGxvY19zaXplID0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogbl9jZWxsdmFyczsKLSAgICAgICAgaW50IHVzZWRfY2VsbDJhcmcgPSAwOworICAgICAgICBib29sIHVzZWRfY2VsbDJhcmcgPSBmYWxzZTsKICAgICAgICAgY2VsbDJhcmcgPSBQeU1lbV9NQUxMT0MoYWxsb2Nfc2l6ZSk7CiAgICAgICAgIGlmIChjZWxsMmFyZyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDcsNyArMTU1LDcgQEAKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUHlUdXBsZV9HRVRfSVRFTSh2YXJuYW1lcywgaik7CiAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShjZWxsLCBhcmcpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNlbGwyYXJnW2ldID0gajsKLSAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IDE7CisgICAgICAgICAgICAgICAgICAgIHVzZWRfY2VsbDJhcmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xOTAsNiArMTk4LDcgQEAKICAgICBjby0+Y29fbG5vdGFiID0gbG5vdGFiOwogICAgIGNvLT5jb196b21iaWVmcmFtZSA9IE5VTEw7CiAgICAgY28tPmNvX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICBjby0+Y29fZXh0cmEgPSBOVUxMOwogICAgIHJldHVybiBjbzsKIH0KIApAQCAtMzk5LDYgKzQwOCwyMSBAQAogc3RhdGljIHZvaWQKIGNvZGVfZGVhbGxvYyhQeUNvZGVPYmplY3QgKmNvKQogeworICAgIGlmIChjby0+Y29fZXh0cmEgIT0gTlVMTCkgeworICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgICAgICBfUHlDb2RlT2JqZWN0RXh0cmEgKmNvX2V4dHJhID0gY28tPmNvX2V4dHJhOworCisgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gMDsgaSA8IGNvX2V4dHJhLT5jZV9zaXplOyBpKyspIHsKKyAgICAgICAgICAgIGZyZWVmdW5jIGZyZWVfZXh0cmEgPSB0c3RhdGUtPmNvX2V4dHJhX2ZyZWVmdW5jc1tpXTsKKworICAgICAgICAgICAgaWYgKGZyZWVfZXh0cmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZyZWVfZXh0cmEoY29fZXh0cmEtPmNlX2V4dHJhc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQeU1lbV9GUkVFKGNvLT5jb19leHRyYSk7CisgICAgfQorCiAgICAgUHlfWERFQ1JFRihjby0+Y29fY29kZSk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fY29uc3RzKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19uYW1lcyk7CkBAIC03MzIsNyArNzU2LDggQEAKICAgICAgICAgYWRkciArPSAqcCsrOwogICAgICAgICBpZiAoYWRkciA+IGFkZHJxKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGxpbmUgKz0gKnArKzsKKyAgICAgICAgbGluZSArPSAoc2lnbmVkIGNoYXIpKnA7CisgICAgICAgIHArKzsKICAgICB9CiAgICAgcmV0dXJuIGxpbmU7CiB9CkBAIC03NjcsMTcgKzc5MiwxOSBAQAogICAgICAgICBpZiAoYWRkciArICpwID4gbGFzdGkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgYWRkciArPSAqcCsrOwotICAgICAgICBpZiAoKnApCisgICAgICAgIGlmICgoc2lnbmVkIGNoYXIpKnApCiAgICAgICAgICAgICBib3VuZHMtPmFwX2xvd2VyID0gYWRkcjsKLSAgICAgICAgbGluZSArPSAqcCsrOworICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcikqcDsKKyAgICAgICAgcCsrOwogICAgICAgICAtLXNpemU7CiAgICAgfQogCiAgICAgaWYgKHNpemUgPiAwKSB7CiAgICAgICAgIHdoaWxlICgtLXNpemUgPj0gMCkgewogICAgICAgICAgICAgYWRkciArPSAqcCsrOwotICAgICAgICAgICAgaWYgKCpwKyspCisgICAgICAgICAgICBpZiAoKHNpZ25lZCBjaGFyKSpwKQogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcCsrOwogICAgICAgICB9CiAgICAgICAgIGJvdW5kcy0+YXBfdXBwZXIgPSBhZGRyOwogICAgIH0KQEAgLTc4NywzICs4MTQsODAgQEAKIAogICAgIHJldHVybiBsaW5lOwogfQorCisKK2ludAorX1B5Q29kZV9HZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwgdm9pZCAqKmV4dHJhKQoreworICAgIGFzc2VydCgqZXh0cmEgPT0gTlVMTCk7CisKKyAgICBpZiAoIVB5Q29kZV9DaGVjayhjb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5Q29kZU9iamVjdCAqbyA9IChQeUNvZGVPYmplY3QqKSBjb2RlOworICAgIF9QeUNvZGVPYmplY3RFeHRyYSAqY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhKikgby0+Y29fZXh0cmE7CisKKworICAgIGlmIChjb19leHRyYSA9PSBOVUxMIHx8IGNvX2V4dHJhLT5jZV9zaXplIDw9IGluZGV4KSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpleHRyYSA9IGNvX2V4dHJhLT5jZV9leHRyYXNbaW5kZXhdOworICAgIHJldHVybiAwOworfQorCisKK2ludAorX1B5Q29kZV9TZXRFeHRyYShQeU9iamVjdCAqY29kZSwgUHlfc3NpemVfdCBpbmRleCwgdm9pZCAqZXh0cmEpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpIHx8IGluZGV4IDwgMCB8fAorICAgICAgICAgICAgaW5kZXggPj0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50KSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlDb2RlT2JqZWN0ICpvID0gKFB5Q29kZU9iamVjdCopIGNvZGU7CisgICAgX1B5Q29kZU9iamVjdEV4dHJhICpjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEgKikgby0+Y29fZXh0cmE7CisKKyAgICBpZiAoY29fZXh0cmEgPT0gTlVMTCkgeworICAgICAgICBvLT5jb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEqKSBQeU1lbV9NYWxsb2MoCisgICAgICAgICAgICBzaXplb2YoX1B5Q29kZU9iamVjdEV4dHJhKSk7CisgICAgICAgIGlmIChvLT5jb19leHRyYSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgY29fZXh0cmEgPSAoX1B5Q29kZU9iamVjdEV4dHJhICopIG8tPmNvX2V4dHJhOworCisgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXMgPSBQeU1lbV9NYWxsb2MoCisgICAgICAgICAgICB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgKiBzaXplb2Yodm9pZCopKTsKKyAgICAgICAgaWYgKGNvX2V4dHJhLT5jZV9leHRyYXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgY29fZXh0cmEtPmNlX3NpemUgPSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQ7CisKKyAgICAgICAgZm9yIChQeV9zc2l6ZV90IGkgPSAwOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoY29fZXh0cmEtPmNlX3NpemUgPD0gaW5kZXgpIHsKKyAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhcyA9IFB5TWVtX1JlYWxsb2MoCisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzLCB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgKiBzaXplb2Yodm9pZCopKTsKKworICAgICAgICBpZiAoY29fZXh0cmEtPmNlX2V4dHJhcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBjb19leHRyYS0+Y2Vfc2l6ZSA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudDsKKworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IGNvX2V4dHJhLT5jZV9zaXplOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhc1tpXSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2luZGV4XSA9IGV4dHJhOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwppbmRleCBkODJjNWViLi4zMWUxMjc4IDEwMDY0NAotLS0gYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYworKysgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwpAQCAtNzU5LDI5ICs3NTksMTIgQEAKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jb21wbGV4X3N1YnR5cGVfZnJvbV9zdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdikKK2NvbXBsZXhfZnJvbV9zdHJpbmdfaW5uZXIoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4sIHZvaWQgKnR5cGUpCiB7Ci0gICAgY29uc3QgY2hhciAqcywgKnN0YXJ0OwotICAgIGNoYXIgKmVuZDsKICAgICBkb3VibGUgeD0wLjAsIHk9MC4wLCB6OwogICAgIGludCBnb3RfYnJhY2tldD0wOwotICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0KLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwotICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOwotICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiY29tcGxleCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJyIsCi0gICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGNvbnN0IGNoYXIgKnN0YXJ0OworICAgIGNoYXIgKmVuZDsKIAogICAgIC8qIHBvc2l0aW9uIG9uIGZpcnN0IG5vbmJsYW5rICovCiAgICAgc3RhcnQgPSBzOwpAQCAtODIyLDcgKzgwNSw3IEBACiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1ZhbHVlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZW5kICE9IHMpIHsKICAgICAgICAgLyogYWxsIDQgZm9ybXMgc3RhcnRpbmcgd2l0aCA8ZmxvYXQ+IGxhbmQgaGVyZSAqLwpAQCAtODM1LDcgKzgxOCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVmFsdWVFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChlbmQgIT0gcykKICAgICAgICAgICAgICAgICAvKiA8ZmxvYXQ+PHNpZ25lZC1mbG9hdD5qICovCkBAIC04OTAsMTggKzg3Myw0NiBAQAogICAgIGlmIChzLXN0YXJ0ICE9IGxlbikKICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKIAotICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwotICAgIHJldHVybiBjb21wbGV4X3N1YnR5cGVfZnJvbV9kb3VibGVzKHR5cGUsIHgsIHkpOworICAgIHJldHVybiBjb21wbGV4X3N1YnR5cGVfZnJvbV9kb3VibGVzKChQeVR5cGVPYmplY3QgKil0eXBlLCB4LCB5KTsKIAogICBwYXJzZV9lcnJvcjoKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgImNvbXBsZXgoKSBhcmcgaXMgYSBtYWxmb3JtZWQgc3RyaW5nIik7Ci0gIGVycm9yOgotICAgIFB5X1hERUNSRUYoc19idWZmZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorY29tcGxleF9zdWJ0eXBlX2Zyb21fc3RyaW5nKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYpCit7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBQeU9iamVjdCAqc19idWZmZXIgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7CisgICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOworICAgICAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY29tcGxleCgpIGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgYSBudW1iZXIsIG5vdCAnJS4yMDBzJyIsCisgICAgICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5X3N0cmluZ190b19udW1iZXJfd2l0aF91bmRlcnNjb3JlcyhzLCBsZW4sICJjb21wbGV4IiwgdiwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXhfZnJvbV9zdHJpbmdfaW5uZXIpOworICBleGl0OgorICAgIFB5X0RFQ1JFRihzX2J1ZmZlcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGNvbXBsZXhfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpyLCAqaSwgKnRtcDsKZGlmZiAtLWdpdCBhL09iamVjdHMvZGVzY3JvYmplY3QuYyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwppbmRleCBkYTY4ZTNiLi4wNzZlNzQxIDEwMDY0NAotLS0gYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCkBAIC0yMiw3ICsyMiw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZXNjcl9yZXByKFB5RGVzY3JPYmplY3QgKmRlc2NyLCBjaGFyICpmb3JtYXQpCitkZXNjcl9yZXByKFB5RGVzY3JPYmplY3QgKmRlc2NyLCBjb25zdCBjaGFyICpmb3JtYXQpCiB7CiAgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOwogICAgIGlmIChkZXNjci0+ZF9uYW1lICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGRlc2NyLT5kX25hbWUpKQpAQCAtMjEzLDcgKzIxMyw3IEBACiBtZXRob2RkZXNjcl9jYWxsKFB5TWV0aG9kRGVzY3JPYmplY3QgKmRlc2NyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlfc3NpemVfdCBhcmdjOwotICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQsICoqc3RhY2s7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYWNjZXB0YWJsZSBhcyAnc2VsZicgKi8KICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CkBAIC0yNDIsMTMgKzI0Miw4IEBACiAgICAgZnVuYyA9IFB5Q0Z1bmN0aW9uX05ld0V4KGRlc2NyLT5kX21ldGhvZCwgc2VsZiwgTlVMTCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBhcmdjIC0gMSwga3dkcyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNTgsNyArMjUzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTI5NSwxNCArMjkwLDkgQEAKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBzZWxmLCBOVUxMKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgYXJnYyAtIDEsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzEwLDcgKzMwMCw3IEBACiB3cmFwcGVyZGVzY3JfY2FsbChQeVdyYXBwZXJEZXNjck9iamVjdCAqZGVzY3IsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTMzOSwxMyArMzI5LDkgQEAKICAgICBmdW5jID0gUHlXcmFwcGVyX05ldygoUHlPYmplY3QgKilkZXNjciwgc2VsZik7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXJncyA9IFB5VHVwbGVfR2V0U2xpY2UoYXJncywgMSwgYXJnYyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHQgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhmdW5jLCBhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7CisKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIGFyZ2MgLSAxLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEwMzMsNyArMTAxOSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd3JhcHBlcl9yaWNoY29tcGFyZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvcCkKIHsKLSAgICBQeV9pbnRwdHJfdCByZXN1bHQ7CisgICAgaW50cHRyX3QgcmVzdWx0OwogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5V3JhcHBlckRlc2NyT2JqZWN0ICphX2Rlc2NyLCAqYl9kZXNjcjsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oIGIvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCmluZGV4IDI5MTJlYjkuLmNlOWVkYWIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdC1jb21tb24uaAorKysgYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKQEAgLTgsMTUgKzgsNjkgQEAKICAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KIH0gUHlEaWN0S2V5RW50cnk7CiAKLXR5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKLShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisvKiBkaWN0X2xvb2t1cF9mdW5jKCkgcmV0dXJucyBpbmRleCBvZiBlbnRyeSB3aGljaCBjYW4gYmUgdXNlZCBsaWtlIERLX0VOVFJJRVMoZGspW2luZGV4XS4KKyAqIC0xIHdoZW4gbm8gZW50cnkgZm91bmQsIC0zIHdoZW4gY29tcGFyZSByYWlzZXMgZXJyb3IuCisgKi8KK3R5cGVkZWYgUHlfc3NpemVfdCAoKmRpY3RfbG9va3VwX2Z1bmMpCisoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKKyNkZWZpbmUgREtJWF9FTVBUWSAoLTEpCisjZGVmaW5lIERLSVhfRFVNTVkgKC0yKSAgLyogVXNlZCBpbnRlcm5hbGx5ICovCisjZGVmaW5lIERLSVhfRVJST1IgKC0zKQorCisvKiBTZWUgZGljdG9iamVjdC5jIGZvciBhY3R1YWwgbGF5b3V0IG9mIERpY3RLZXlzT2JqZWN0ICovCiBzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0IHsKICAgICBQeV9zc2l6ZV90IGRrX3JlZmNudDsKKworICAgIC8qIFNpemUgb2YgdGhlIGhhc2ggdGFibGUgKGRrX2luZGljZXMpLiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMi4gKi8KICAgICBQeV9zc2l6ZV90IGRrX3NpemU7CisKKyAgICAvKiBGdW5jdGlvbiB0byBsb29rdXAgaW4gdGhlIGhhc2ggdGFibGUgKGRrX2luZGljZXMpOgorCisgICAgICAgLSBsb29rZGljdCgpOiBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZAorICAgICAgICAgb25seSBpZikgYSBjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKyAgICAgICAtIGxvb2tkaWN0X3VuaWNvZGUoKTogc3BlY2lhbGl6ZWQgdG8gVW5pY29kZSBzdHJpbmcga2V5cywgY29tcGFyaXNvbiBvZgorICAgICAgICAgd2hpY2ggY2FuIG5ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuCisgICAgICAgICBES0lYX0VSUk9SLgorCisgICAgICAgLSBsb29rZGljdF91bmljb2RlX25vZHVtbXkoKTogc2ltaWxhciB0byBsb29rZGljdF91bmljb2RlKCkgYnV0IGZ1cnRoZXIKKyAgICAgICAgIHNwZWNpYWxpemVkIGZvciBVbmljb2RlIHN0cmluZyBrZXlzIHRoYXQgY2Fubm90IGJlIHRoZSA8ZHVtbXk+IHZhbHVlLgorCisgICAgICAgLSBsb29rZGljdF9zcGxpdCgpOiBWZXJzaW9uIG9mIGxvb2tkaWN0KCkgZm9yIHNwbGl0IHRhYmxlcy4gKi8KICAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKKworICAgIC8qIE51bWJlciBvZiB1c2FibGUgZW50cmllcyBpbiBka19lbnRyaWVzLiAqLwogICAgIFB5X3NzaXplX3QgZGtfdXNhYmxlOwotICAgIFB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbMV07CisKKyAgICAvKiBOdW1iZXIgb2YgdXNlZCBlbnRyaWVzIGluIGRrX2VudHJpZXMuICovCisgICAgUHlfc3NpemVfdCBka19uZW50cmllczsKKworICAgIC8qIEFjdHVhbCBoYXNoIHRhYmxlIG9mIGRrX3NpemUgZW50cmllcy4gSXQgaG9sZHMgaW5kaWNlcyBpbiBka19lbnRyaWVzLAorICAgICAgIG9yIERLSVhfRU1QVFkoLTEpIG9yIERLSVhfRFVNTVkoLTIpLgorCisgICAgICAgSW5kaWNlcyBtdXN0IGJlOiAwIDw9IGluZGljZSA8IFVTQUJMRV9GUkFDVElPTihka19zaXplKS4KKworICAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGFuIGluZGljZSBkZXBlbmRzIG9uIGRrX3NpemU6CisKKyAgICAgICAtIDEgYnl0ZSBpZiBka19zaXplIDw9IDB4ZmYgKGNoYXIqKQorICAgICAgIC0gMiBieXRlcyBpZiBka19zaXplIDw9IDB4ZmZmZiAoaW50MTZfdCopCisgICAgICAgLSA0IGJ5dGVzIGlmIGRrX3NpemUgPD0gMHhmZmZmZmZmZiAoaW50MzJfdCopCisgICAgICAgLSA4IGJ5dGVzIG90aGVyd2lzZSAoaW50NjRfdCopCisKKyAgICAgICBEeW5hbWljYWxseSBzaXplZCwgOCBpcyBtaW5pbXVtLiAqLworICAgIHVuaW9uIHsKKyAgICAgICAgaW50OF90IGFzXzFbOF07CisgICAgICAgIGludDE2X3QgYXNfMls0XTsKKyAgICAgICAgaW50MzJfdCBhc180WzJdOworI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgICAgIGludDY0X3QgYXNfOFsxXTsKKyNlbmRpZgorICAgIH0gZGtfaW5kaWNlczsKKworICAgIC8qICJQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzW2RrX3VzYWJsZV07IiBhcnJheSBmb2xsb3dzOgorICAgICAgIHNlZSB0aGUgREtfRU5UUklFUygpIG1hY3JvICovCiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvZGljdG9iamVjdC5jIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKaW5kZXggZTc5YWIzNi4uMDgwNmU0NyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9kaWN0b2JqZWN0LmMKQEAgLTEsNCArMSwzIEBACi0KIC8qIERpY3Rpb25hcnkgb2JqZWN0IGltcGxlbWVudGF0aW9uIHVzaW5nIGEgaGFzaCB0YWJsZSAqLwogCiAvKiBUaGUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIGEgc2VwYXJhdGUgZmlsZSwgT2JqZWN0cy9kaWN0bm90ZXMudHh0LApAQCAtNyw2OCArNiwxMTIgQEAKICAgIHR1bmluZyBkaWN0aW9uYXJpZXMsIGFuZCBzZXZlcmFsIGlkZWFzIGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb25zLgogKi8KIAorLyogUHlEaWN0S2V5c09iamVjdAorCitUaGlzIGltcGxlbWVudHMgdGhlIGRpY3Rpb25hcnkncyBoYXNodGFibGUuCisKK0FzIG9mIFB5dGhvbiAzLjYsIHRoaXMgaXMgY29tcGFjdCBhbmQgb3JkZXJlZC4gQmFzaWMgaWRlYSBpcyBkZXNjcmliZWQgaGVyZS4KK2h0dHBzOi8vbW9yZXB5cHkuYmxvZ3Nwb3QuY29tLzIwMTUvMDEvZmFzdGVyLW1vcmUtbWVtb3J5LWVmZmljaWVudC1hbmQtbW9yZS5odG1sCisKK2xheW91dDoKKworKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfcmVmY250ICAgICB8Cit8IGRrX3NpemUgICAgICAgfAorfCBka19sb29rdXAgICAgIHwKK3wgZGtfdXNhYmxlICAgICB8Cit8IGRrX25lbnRyaWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfaW5kaWNlcyAgICB8Cit8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKK3wgZGtfZW50cmllcyAgICB8Cit8ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLSsKKworZGtfaW5kaWNlcyBpcyBhY3R1YWwgaGFzaHRhYmxlLiAgSXQgaG9sZHMgaW5kZXggaW4gZW50cmllcywgb3IgREtJWF9FTVBUWSgtMSkKK29yIERLSVhfRFVNTVkoLTIpLgorU2l6ZSBvZiBpbmRpY2VzIGlzIGRrX3NpemUuICBUeXBlIG9mIGVhY2ggaW5kZXggaW4gaW5kaWNlcyBpcyB2YXJ5IG9uIGRrX3NpemU6CisKKyogaW50OCAgZm9yICAgICAgICAgIGRrX3NpemUgPD0gMTI4CisqIGludDE2IGZvciAyNTYgICA8PSBka19zaXplIDw9IDIqKjE1CisqIGludDMyIGZvciAyKioxNiA8PSBka19zaXplIDw9IDIqKjMxCisqIGludDY0IGZvciAyKiozMiA8PSBka19zaXplCisKK2RrX2VudHJpZXMgaXMgYXJyYXkgb2YgUHlEaWN0S2V5RW50cnkuICBJdCdzIHNpemUgaXMgVVNBQkxFX0ZSQUNUSU9OKGRrX3NpemUpLgorREtfRU5UUklFUyhkaykgY2FuIGJlIHVzZWQgdG8gZ2V0IHBvaW50ZXIgdG8gZW50cmllcy4KKworTk9URTogU2luY2UgbmVnYXRpdmUgdmFsdWUgaXMgdXNlZCBmb3IgREtJWF9FTVBUWSBhbmQgREtJWF9EVU1NWSwgdHlwZSBvZgorZGtfaW5kaWNlcyBlbnRyeSBpcyBzaWduZWQgaW50ZWdlciBhbmQgaW50MTYgaXMgdXNlZCBmb3IgdGFibGUgd2hpY2gKK2RrX3NpemUgPT0gMjU2LgorKi8KKwogCiAvKgotVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgotCi0xLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAotICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCi0gICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKLSAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KLQotMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAotICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCi0gICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgotICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCi0KLTMuIER1bW15LiAgbWVfa2V5ID09IGR1bW15IGFuZCBtZV92YWx1ZSA9PSBOVUxMCi0gICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KLSAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KLSAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KLSAgIChjYW5ub3QgaGF2ZSBtZV9rZXkgc2V0IHRvIE5VTEwpLCBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mCi0gICBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdyB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCi0KLTQuIFBlbmRpbmcuIE5vdCB5ZXQgaW5zZXJ0ZWQgb3IgZGVsZXRlZCBmcm9tIGEgc3BsaXQtdGFibGUuCi0gICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMCi0KIFRoZSBEaWN0T2JqZWN0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIGZvcm1zLgorCiBFaXRoZXI6CiAgIEEgY29tYmluZWQgdGFibGU6CiAgICAgbWFfdmFsdWVzID09IE5VTEwsIGRrX3JlZmNudCA9PSAxLgogICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtZV92YWx1ZSBmaWVsZCBvZiB0aGUgUHlEaWN0S2V5c09iamVjdC4KLSAgICBTbG90IGtpbmQgNCBpcyBub3QgYWxsb3dlZCBpLmUuCi0gICAgICAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwgaXMgaWxsZWdhbC4KIE9yOgogICBBIHNwbGl0IHRhYmxlOgogICAgIG1hX3ZhbHVlcyAhPSBOVUxMLCBka19yZWZjbnQgPj0gMQogICAgIFZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBtYV92YWx1ZXMgYXJyYXkuCi0gICAgT25seSBzdHJpbmcgKHVuaWNvZGUpIGtleXMgYXJlIGFsbG93ZWQsIG5vIDxkdW1teT4ga2V5cyBhcmUgcHJlc2VudC4KKyAgICBPbmx5IHN0cmluZyAodW5pY29kZSkga2V5cyBhcmUgYWxsb3dlZC4KKyAgICBBbGwgZGljdHMgc2hhcmluZyBzYW1lIGtleSBtdXN0IGhhdmUgc2FtZSBpbnNlcnRpb24gb3JkZXIuCiAKLU5vdGU6IC5wb3BpdGVtKCkgYWJ1c2VzIHRoZSBtZV9oYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCi1ob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBtZV9oYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMgbm8KLW1lYW5pbmcgb3RoZXJ3aXNlLiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoaXMgcG9waXRlbSBhbHdheXMgY29udmVydHMgdGhlIGRpY3QKLXRvIHRoZSBjb21iaW5lZC10YWJsZSBmb3JtLgorVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlIChzbG90IGlzIGluZGV4LCBhbmQKK0RLX0VOVFJJRVMoa2V5cylbaW5kZXhdIGlmIGluZGV4ID49IDApOgorCisxLiBVbnVzZWQuICBpbmRleCA9PSBES0lYX0VNUFRZCisgICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KKyAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KKworMi4gQWN0aXZlLiAgaW5kZXggPj0gMCwgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX3ZhbHVlICE9IE5VTEwKKyAgIEhvbGRzIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpci4gIEFjdGl2ZSBjYW4gdHJhbnNpdGlvbiB0byBEdW1teSBvcgorICAgUGVuZGluZyB1cG9uIGtleSBkZWxldGlvbiAoZm9yIGNvbWJpbmVkIGFuZCBzcGxpdCB0YWJsZXMgcmVzcGVjdGl2ZWx5KS4KKyAgIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaCBtZV92YWx1ZSAhPSBOVUxMLgorCiszLiBEdW1teS4gIGluZGV4ID09IERLSVhfRFVNTVkgIChjb21iaW5lZCBvbmx5KQorICAgUHJldmlvdXNseSBoZWxkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciwgYnV0IHRoYXQgd2FzIGRlbGV0ZWQgYW5kIGFuCisgICBhY3RpdmUgcGFpciBoYXMgbm90IHlldCBvdmVyd3JpdHRlbiB0aGUgc2xvdC4gIER1bW15IGNhbiB0cmFuc2l0aW9uIHRvCisgICBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgRHVtbXkgc2xvdHMgY2Fubm90IGJlIG1hZGUgVW51c2VkIGFnYWluCisgICBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93CisgICB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCisKKzQuIFBlbmRpbmcuIGluZGV4ID49IDAsIGtleSAhPSBOVUxMLCBhbmQgdmFsdWUgPT0gTlVMTCAgKHNwbGl0IG9ubHkpCisgICBOb3QgeWV0IGluc2VydGVkIGluIHNwbGl0LXRhYmxlLgogKi8KIAotLyogUHlEaWN0X01JTlNJWkVfU1BMSVQgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiBhIHNwbGl0IGRpY3Rpb25hcnkuCi0gKiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMiwgYW5kIGF0IGxlYXN0IDQuCi0gKiBSZXNpemluZyBvZiBzcGxpdCBkaWN0aW9uYXJpZXMgaXMgdmVyeSByYXJlLCBzbyB0aGUgc2F2aW5nIG1lbW9yeSBpcyBtb3JlCi0gKiBpbXBvcnRhbnQgdGhhbiB0aGUgY29zdCBvZiByZXNpemluZy4KLSAqLwotI2RlZmluZSBQeURpY3RfTUlOU0laRV9TUExJVCA0CisvKgorUHJlc2VydmluZyBpbnNlcnRpb24gb3JkZXIKIAotLyogUHlEaWN0X01JTlNJWkVfQ09NQklORUQgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcsIG5vbi1zcGxpdCBkaWN0LgorSXQncyBzaW1wbGUgZm9yIGNvbWJpbmVkIHRhYmxlLiAgU2luY2UgZGtfZW50cmllcyBpcyBtb3N0bHkgYXBwZW5kIG9ubHksIHdlIGNhbgorZ2V0IGluc2VydGlvbiBvcmRlciBieSBqdXN0IGl0ZXJhdGluZyBka19lbnRyaWVzLgorCitPbmUgZXhjZXB0aW9uIGlzIC5wb3BpdGVtKCkuICBJdCByZW1vdmVzIGxhc3QgaXRlbSBpbiBka19lbnRyaWVzIGFuZCBkZWNyZW1lbnQKK2RrX25lbnRyaWVzIHRvIGFjaGlldmUgYW1vcnRpemVkIE8oMSkuICBTaW5jZSB0aGVyZSBhcmUgREtJWF9EVU1NWSByZW1haW5zIGluCitka19pbmRpY2VzLCB3ZSBjYW4ndCBpbmNyZW1lbnQgZGtfdXNhYmxlIGV2ZW4gdGhvdWdoIGRrX25lbnRyaWVzIGlzCitkZWNyZW1lbnRlZC4KKworSW4gc3BsaXQgdGFibGUsIGluc2VydGluZyBpbnRvIHBlbmRpbmcgZW50cnkgaXMgYWxsb3dlZCBvbmx5IGZvciBka19lbnRyaWVzW2l4XQord2hlcmUgaXggPT0gbXAtPm1hX3VzZWQuIEluc2VydGluZyBpbnRvIG90aGVyIGluZGV4IGFuZCBkZWxldGluZyBpdGVtIGNhdXNlCitjb252ZXJ0aW5nIHRoZSBkaWN0IHRvIHRoZSBjb21iaW5lZCB0YWJsZS4KKyovCisKKy8qIFB5RGljdF9NSU5TSVpFIGlzIHRoZSBzdGFydGluZyBzaXplIGZvciBhbnkgbmV3IGRpY3QuCiAgKiA4IGFsbG93cyBkaWN0cyB3aXRoIG5vIG1vcmUgdGhhbiA1IGFjdGl2ZSBlbnRyaWVzOyBleHBlcmltZW50cyBzdWdnZXN0ZWQKICAqIHRoaXMgc3VmZmljZXMgZm9yIHRoZSBtYWpvcml0eSBvZiBkaWN0cyAoY29uc2lzdGluZyBtb3N0bHkgb2YgdXN1YWxseS1zbWFsbAogICogZGljdHMgY3JlYXRlZCB0byBwYXNzIGtleXdvcmQgYXJndW1lbnRzKS4KICAqIE1ha2luZyB0aGlzIDgsIHJhdGhlciB0aGFuIDQgcmVkdWNlcyB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMgZm9yIG1vc3QKICAqIGRpY3Rpb25hcmllcywgd2l0aG91dCBhbnkgc2lnbmlmaWNhbnQgZXh0cmEgbWVtb3J5IHVzZS4KICAqLwotI2RlZmluZSBQeURpY3RfTUlOU0laRV9DT01CSU5FRCA4CisjZGVmaW5lIFB5RGljdF9NSU5TSVpFIDgKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImRpY3QtY29tbW9uLmgiCi0jaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2VxLmgiICAgIC8qIHRvIGdldCB1bmljb2RlX2VxKCkgKi8KIAogLypbY2xpbmljIGlucHV0XQogY2xhc3MgZGljdCAiUHlEaWN0T2JqZWN0ICoiICImUHlEaWN0X1R5cGUiCkBAIC0xNDEsOCArMTg0LDggQEAKIGludG8gcGxheS4gIFRoaXMgaXMgZG9uZSBieSBpbml0aWFsaXppbmcgYSAodW5zaWduZWQpIHZyYmwgInBlcnR1cmIiIHRvIHRoZQogZnVsbCBoYXNoIGNvZGUsIGFuZCBjaGFuZ2luZyB0aGUgcmVjdXJyZW5jZSB0bzoKIAotICAgIGogPSAoNSpqKSArIDEgKyBwZXJ0dXJiOwogICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgaiA9ICg1KmopICsgMSArIHBlcnR1cmI7CiAgICAgdXNlIGogJSAyKippIGFzIHRoZSBuZXh0IHRhYmxlIGluZGV4OwogCiBOb3cgdGhlIHByb2JlIHNlcXVlbmNlIGRlcGVuZHMgKGV2ZW50dWFsbHkpIG9uIGV2ZXJ5IGJpdCBpbiB0aGUgaGFzaCBjb2RlLApAQCAtMTc3LDQxICsyMjAsMzggQEAKIAogKi8KIAotLyogT2JqZWN0IHVzZWQgYXMgZHVtbXkga2V5IHRvIGZpbGwgZGVsZXRlZCBlbnRyaWVzCi0gKiBUaGlzIGNvdWxkIGJlIGFueSB1bmlxdWUgb2JqZWN0LAotICogdXNlIGEgY3VzdG9tIHR5cGUgaW4gb3JkZXIgdG8gbWluaW1pc2UgY291cGxpbmcuCi0qLwotc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3Q7Ci0KLSNkZWZpbmUgZHVtbXkgKCZfZHVtbXlfc3RydWN0KQotCi0jaWZkZWYgUHlfUkVGX0RFQlVHCi1QeU9iamVjdCAqCi1fUHlEaWN0X0R1bW15KHZvaWQpCi17Ci0gICAgcmV0dXJuIGR1bW15OwotfQotI2VuZGlmCi0KIC8qIGZvcndhcmQgZGVjbGFyYXRpb25zICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdCBsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QgbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CiAKIHN0YXRpYyBpbnQgZGljdHJlc2l6ZShQeURpY3RPYmplY3QgKm1wLCBQeV9zc2l6ZV90IG1pbnVzZWQpOwogCi0vKiBEaWN0aW9uYXJ5IHJldXNlIHNjaGVtZSB0byBzYXZlIGNhbGxzIHRvIG1hbGxvYywgZnJlZSwgYW5kIG1lbXNldCAqLworLypHbG9iYWwgY291bnRlciB1c2VkIHRvIHNldCBtYV92ZXJzaW9uX3RhZyBmaWVsZCBvZiBkaWN0aW9uYXJ5LgorICogSXQgaXMgaW5jcmVtZW50ZWQgZWFjaCB0aW1lIHRoYXQgYSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgYW5kIGVhY2gKKyAqIHRpbWUgdGhhdCBhIGRpY3Rpb25hcnkgaXMgbW9kaWZpZWQuICovCitzdGF0aWMgdWludDY0X3QgcHlkaWN0X2dsb2JhbF92ZXJzaW9uID0gMDsKKworI2RlZmluZSBESUNUX05FWFRfVkVSU0lPTigpICgrK3B5ZGljdF9nbG9iYWxfdmVyc2lvbikKKworLyogRGljdGlvbmFyeSByZXVzZSBzY2hlbWUgdG8gc2F2ZSBjYWxscyB0byBtYWxsb2MgYW5kIGZyZWUgKi8KICNpZm5kZWYgUHlEaWN0X01BWEZSRUVMSVNUCiAjZGVmaW5lIFB5RGljdF9NQVhGUkVFTElTVCA4MAogI2VuZGlmCiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CitzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqa2V5c19mcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgbnVtZnJlZWtleXMgPSAwOwogCiAjaW5jbHVkZSAiY2xpbmljL2RpY3RvYmplY3QuYy5oIgogCkBAIC0yMTksMTIgKzI1OSwxNSBAQAogUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeURpY3RPYmplY3QgKm9wOwotICAgIGludCByZXQgPSBudW1mcmVlOworICAgIGludCByZXQgPSBudW1mcmVlICsgbnVtZnJlZWtleXM7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHdoaWxlIChudW1mcmVla2V5cykgeworICAgICAgICBQeU9iamVjdF9GUkVFKGtleXNfZnJlZV9saXN0Wy0tbnVtZnJlZWtleXNdKTsKKyAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMjQzLDQwICsyODYsMTE2IEBACiAgICAgUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorI2RlZmluZSBES19TSVpFKGRrKSAoKGRrKS0+ZGtfc2l6ZSkKKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorI2RlZmluZSBES19JWFNJWkUoZGspICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKERLX1NJWkUoZGspIDw9IDB4ZmYgPyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgMSA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZiA/ICAgICAgICAgICAgXAorICAgICAgICAgICAgMiA6IERLX1NJWkUoZGspIDw9IDB4ZmZmZmZmZmYgPyAgICBcCisgICAgICAgICAgICAgICAgNCA6IHNpemVvZihpbnQ2NF90KSkKKyNlbHNlCisjZGVmaW5lIERLX0lYU0laRShkaykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoREtfU0laRShkaykgPD0gMHhmZiA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAxIDogREtfU0laRShkaykgPD0gMHhmZmZmID8gICAgICAgICAgICBcCisgICAgICAgICAgICAyIDogc2l6ZW9mKGludDMyX3QpKQorI2VuZGlmCisjZGVmaW5lIERLX0VOVFJJRVMoZGspIFwKKyAgICAoKFB5RGljdEtleUVudHJ5KikoJihkayktPmRrX2luZGljZXMuYXNfMVtES19TSVpFKGRrKSAqIERLX0lYU0laRShkayldKSkKKwogI2RlZmluZSBES19ERUJVR19JTkNSRUYgX1B5X0lOQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCiAjZGVmaW5lIERLX0RFQlVHX0RFQ1JFRiBfUHlfREVDX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKIAogI2RlZmluZSBES19JTkNSRUYoZGspIChES19ERUJVR19JTkNSRUYgKysoZGspLT5ka19yZWZjbnQpCiAjZGVmaW5lIERLX0RFQ1JFRihkaykgaWYgKERLX0RFQlVHX0RFQ1JFRiAoLS0oZGspLT5ka19yZWZjbnQpID09IDApIGZyZWVfa2V5c19vYmplY3QoZGspCi0jZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQogI2RlZmluZSBES19NQVNLKGRrKSAoKChkayktPmRrX3NpemUpLTEpCiAjZGVmaW5lIElTX1BPV0VSX09GXzIoeCkgKCgoeCkgJiAoeC0xKSkgPT0gMCkKIAorLyogbG9va3VwIGluZGljZXMuICByZXR1cm5zIERLSVhfRU1QVFksIERLSVhfRFVNTVksIG9yIGl4ID49MCAqLworc3RhdGljIGlubGluZSBQeV9zc2l6ZV90Citka19nZXRfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlfc3NpemVfdCBpKQoreworICAgIFB5X3NzaXplX3QgcyA9IERLX1NJWkUoa2V5cyk7CisgICAgUHlfc3NpemVfdCBpeDsKKworICAgIGlmIChzIDw9IDB4ZmYpIHsKKyAgICAgICAgaW50OF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18xOworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorICAgIGVsc2UgaWYgKHMgPD0gMHhmZmZmKSB7CisgICAgICAgIGludDE2X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzI7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzID4gMHhmZmZmZmZmZikgeworICAgICAgICBpbnQ2NF90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc184OworICAgICAgICBpeCA9IGluZGljZXNbaV07CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGludDMyX3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzQ7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworICAgIHJldHVybiBpeDsKK30KKworLyogd3JpdGUgdG8gaW5kaWNlcy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZGtfc2V0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmtleXMsIFB5X3NzaXplX3QgaSwgUHlfc3NpemVfdCBpeCkKK3sKKyAgICBQeV9zc2l6ZV90IHMgPSBES19TSVpFKGtleXMpOworCisgICAgYXNzZXJ0KGl4ID49IERLSVhfRFVNTVkpOworCisgICAgaWYgKHMgPD0gMHhmZikgeworICAgICAgICBpbnQ4X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzE7CisgICAgICAgIGFzc2VydChpeCA8PSAweDdmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKWl4OworICAgIH0KKyAgICBlbHNlIGlmIChzIDw9IDB4ZmZmZikgeworICAgICAgICBpbnQxNl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc18yOworICAgICAgICBhc3NlcnQoaXggPD0gMHg3ZmZmKTsKKyAgICAgICAgaW5kaWNlc1tpXSA9IChpbnQxNl90KWl4OworICAgIH0KKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgIGVsc2UgaWYgKHMgPiAweGZmZmZmZmZmKSB7CisgICAgICAgIGludDY0X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzg7CisgICAgICAgIGluZGljZXNbaV0gPSBpeDsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgaW50MzJfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfNDsKKyAgICAgICAgYXNzZXJ0KGl4IDw9IDB4N2ZmZmZmZmYpOworICAgICAgICBpbmRpY2VzW2ldID0gKGludDMyX3QpaXg7CisgICAgfQorfQorCisKIC8qIFVTQUJMRV9GUkFDVElPTiBpcyB0aGUgbWF4aW11bSBkaWN0aW9uYXJ5IGxvYWQuCi0gKiBDdXJyZW50bHkgc2V0IHRvICgybisxKS8zLiBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUKLSAqIGRlbnNlIHJlc3VsdGluZyBpbiBtb3JlIGNvbGxpc2lvbnMuICBEZWNyZWFzaW5nIGl0IGltcHJvdmVzIHNwYXJzZW5lc3MKLSAqIGF0IHRoZSBleHBlbnNlIG9mIHNwcmVhZGluZyBlbnRyaWVzIG92ZXIgbW9yZSBjYWNoZSBsaW5lcyBhbmQgYXQgdGhlCi0gKiBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KKyAqIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZSBkZW5zZSByZXN1bHRpbmcgaW4gbW9yZQorICogY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcyBhdCB0aGUgZXhwZW5zZSBvZiBzcHJlYWRpbmcKKyAqIGluZGljZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUgY29zdCBvZiB0b3RhbCBtZW1vcnkgY29uc3VtZWQuCiAgKgogICogVVNBQkxFX0ZSQUNUSU9OIG11c3Qgb2JleSB0aGUgZm9sbG93aW5nOgogICogICAgICgwIDwgVVNBQkxFX0ZSQUNUSU9OKG4pIDwgbikgZm9yIGFsbCBuID49IDIKICAqCi0gKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHZlcnkgcXVpY2sgdG8gY2FsY3VsYXRlLgotICogRnJhY3Rpb25zIGFyb3VuZCA1LzggdG8gMi8zIHNlZW0gdG8gd29yayB3ZWxsIGluIHByYWN0aWNlLgorICogVVNBQkxFX0ZSQUNUSU9OIHNob3VsZCBiZSBxdWljayB0byBjYWxjdWxhdGUuCisgKiBGcmFjdGlvbnMgYXJvdW5kIDEvMiB0byAyLzMgc2VlbSB0byB3b3JrIHdlbGwgaW4gcHJhY3RpY2UuCiAgKi8KKyNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKG4pIDw8IDEpLzMpCiAKLS8qIFVzZSAoMm4rMSkvMyByYXRoZXIgdGhhbiAybiszIGJlY2F1c2U6IGl0IG1ha2VzIG5vIGRpZmZlcmVuY2UgZm9yCi0gKiBjb21iaW5lZCB0YWJsZXMgKHRoZSB0d28gZnJhY3Rpb25zIHJvdW5kIHRvIHRoZSBzYW1lIG51bWJlciBuIDwgKSwKLSAqIGJ1dCAyKjQvMyBpcyAyIHdoZXJlYXMgKDIqNCsxKS8zIGlzIDMgd2hpY2ggcG90ZW50aWFsbHkgc2F2ZXMgcXVpdGUKLSAqIGEgbG90IG9mIHNwYWNlIGZvciBzbWFsbCwgc3BsaXQgdGFibGVzICovCi0jZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKCgobikgPDwgMSkrMSkvMykKKy8qIEVTVElNQVRFX1NJWkUgaXMgcmV2ZXJzZSBmdW5jdGlvbiBvZiBVU0FCTEVfRlJBQ1RJT04uCisgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlc2VydmUgZW5vdWdoIHNpemUgdG8gaW5zZXJ0IG4gZW50cmllcyB3aXRob3V0CisgKiByZXNpemluZy4KKyAqLworI2RlZmluZSBFU1RJTUFURV9TSVpFKG4pICAoKChuKSozKSA+PiAxKQogCi0vKiBBbHRlcm5hdGl2ZSBmcmFjdGlvbiB0aGF0IGlzIG90aGVyd2lzZSBjbG9zZSBlbm91Z2ggdG8gKDJuKzEpLzMgdG8gbWFrZQorLyogQWx0ZXJuYXRpdmUgZnJhY3Rpb24gdGhhdCBpcyBvdGhlcndpc2UgY2xvc2UgZW5vdWdoIHRvIDJuLzMgdG8gbWFrZQogICogbGl0dGxlIGRpZmZlcmVuY2UuIDggKiAyLzMgPT0gOCAqIDUvOCA9PSA1LiAxNiAqIDIvMyA9PSAxNiAqIDUvOCA9PSAxMC4KICAqIDMyICogMi8zID0gMjEsIDMyICogNS84ID0gMjAuCiAgKiBJdHMgYWR2YW50YWdlIGlzIHRoYXQgaXQgaXMgZmFzdGVyIHRvIGNvbXB1dGUgb24gbWFjaGluZXMgd2l0aCBzbG93IGRpdmlzaW9uLgogICogI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgobikgPj4gMSkgKyAoKG4pID4+IDIpIC0gKChuKSA+PiAzKSkKLSovCisgKi8KIAogLyogR1JPV1RIX1JBVEUuIEdyb3d0aCByYXRlIHVwb24gaGl0dGluZyBtYXhpbXVtIGxvYWQuCiAgKiBDdXJyZW50bHkgc2V0IHRvIHVzZWQqMiArIGNhcGFjaXR5LzIuCkBAIC0zMDAsNjEgKzQxOSwxNTUgQEAKICAqICh3aGljaCBjYW5ub3QgZmFpbCBhbmQgdGh1cyBjYW4gZG8gbm8gYWxsb2NhdGlvbikuCiAgKi8KIHN0YXRpYyBQeURpY3RLZXlzT2JqZWN0IGVtcHR5X2tleXNfc3RydWN0ID0gewotICAgICAgICAyLCAvKiBka19yZWZjbnQgMSBmb3IgdGhpcyBzdHJ1Y3QsIDEgZm9yIGR1bW15X3N0cnVjdCAqLworICAgICAgICAxLCAvKiBka19yZWZjbnQgKi8KICAgICAgICAgMSwgLyogZGtfc2l6ZSAqLwogICAgICAgICBsb29rZGljdF9zcGxpdCwgLyogZGtfbG9va3VwICovCiAgICAgICAgIDAsIC8qIGRrX3VzYWJsZSAoaW1tdXRhYmxlKSAqLwotICAgICAgICB7Ci0gICAgICAgICAgICB7IDAsIDAsIDAgfSAvKiBka19lbnRyaWVzIChlbXB0eSkgKi8KLSAgICAgICAgfQorICAgICAgICAwLCAvKiBka19uZW50cmllcyAqLworICAgICAgICAuZGtfaW5kaWNlcyA9IHsgLmFzXzEgPSB7REtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERLSVhfRU1QVFksIERLSVhfRU1QVFksIERLSVhfRU1QVFksIERLSVhfRU1QVFl9fSwKIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqZW1wdHlfdmFsdWVzWzFdID0geyBOVUxMIH07CiAKICNkZWZpbmUgUHlfRU1QVFlfS0VZUyAmZW1wdHlfa2V5c19zdHJ1Y3QKIAorLyogVW5jb21tZW50IHRvIGNoZWNrIHRoZSBkaWN0IGNvbnRlbnQgaW4gX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KCkgKi8KKy8qICNkZWZpbmUgREVCVUdfUFlESUNUICovCisKKworI2lmZGVmIFB5X0RFQlVHCitzdGF0aWMgaW50CitfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koUHlEaWN0T2JqZWN0ICptcCkKK3sKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgaW50IHNwbGl0dGVkID0gX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKTsKKyAgICBQeV9zc2l6ZV90IHVzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihrZXlzLT5ka19zaXplKTsKKyNpZmRlZiBERUJVR19QWURJQ1QKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9IERLX0VOVFJJRVMoa2V5cyk7CisgICAgUHlfc3NpemVfdCBpOworI2VuZGlmCisKKyAgICBhc3NlcnQoMCA8PSBtcC0+bWFfdXNlZCAmJiBtcC0+bWFfdXNlZCA8PSB1c2FibGUpOworICAgIGFzc2VydChJU19QT1dFUl9PRl8yKGtleXMtPmRrX3NpemUpKTsKKyAgICBhc3NlcnQoMCA8PSBrZXlzLT5ka191c2FibGUKKyAgICAgICAgICAgJiYga2V5cy0+ZGtfdXNhYmxlIDw9IHVzYWJsZSk7CisgICAgYXNzZXJ0KDAgPD0ga2V5cy0+ZGtfbmVudHJpZXMKKyAgICAgICAgICAgJiYga2V5cy0+ZGtfbmVudHJpZXMgPD0gdXNhYmxlKTsKKyAgICBhc3NlcnQoa2V5cy0+ZGtfdXNhYmxlICsga2V5cy0+ZGtfbmVudHJpZXMgPD0gdXNhYmxlKTsKKworICAgIGlmICghc3BsaXR0ZWQpIHsKKyAgICAgICAgLyogY29tYmluZWQgdGFibGUgKi8KKyAgICAgICAgYXNzZXJ0KGtleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICB9CisKKyNpZmRlZiBERUJVR19QWURJQ1QKKyAgICBmb3IgKGk9MDsgaSA8IGtleXMtPmRrX3NpemU7IGkrKykgeworICAgICAgICBQeV9zc2l6ZV90IGl4ID0gZGtfZ2V0X2luZGV4KGtleXMsIGkpOworICAgICAgICBhc3NlcnQoREtJWF9EVU1NWSA8PSBpeCAmJiBpeCA8PSB1c2FibGUpOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgdXNhYmxlOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5ID0gJmVudHJpZXNbaV07CisgICAgICAgIFB5T2JqZWN0ICprZXkgPSBlbnRyeS0+bWVfa2V5OworCisgICAgICAgIGlmIChrZXkgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKWtleSktPmhhc2g7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGhhc2ggIT0gLTEpOworICAgICAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfaGFzaCA9PSBoYXNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIHRlc3RfZGljdCBmYWlscyBpZiBQeU9iamVjdF9IYXNoKCkgaXMgY2FsbGVkIGFnYWluICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV9oYXNoICE9IC0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghc3BsaXR0ZWQpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX3ZhbHVlICE9IE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHNwbGl0dGVkKSB7CisgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX3ZhbHVlID09IE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHNwbGl0dGVkKSB7CisgICAgICAgIC8qIHNwbGl0dGVkIHRhYmxlICovCisgICAgICAgIGZvciAoaT0wOyBpIDwgbXAtPm1hX3VzZWQ7IGkrKykgeworICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV92YWx1ZXNbaV0gIT0gTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiAxOworfQorI2VuZGlmCisKKwogc3RhdGljIFB5RGljdEtleXNPYmplY3QgKm5ld19rZXlzX29iamVjdChQeV9zc2l6ZV90IHNpemUpCiB7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisgICAgUHlfc3NpemVfdCBlcywgdXNhYmxlOwogCi0gICAgYXNzZXJ0KHNpemUgPj0gUHlEaWN0X01JTlNJWkVfU1BMSVQpOworICAgIGFzc2VydChzaXplID49IFB5RGljdF9NSU5TSVpFKTsKICAgICBhc3NlcnQoSVNfUE9XRVJfT0ZfMihzaXplKSk7Ci0gICAgZGsgPSBQeU1lbV9NQUxMT0Moc2l6ZW9mKFB5RGljdEtleXNPYmplY3QpICsKLSAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogKHNpemUtMSkpOwotICAgIGlmIChkayA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworCisgICAgdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOworICAgIGlmIChzaXplIDw9IDB4ZmYpIHsKKyAgICAgICAgZXMgPSAxOworICAgIH0KKyAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZikgeworICAgICAgICBlcyA9IDI7CisgICAgfQorI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgZWxzZSBpZiAoc2l6ZSA8PSAweGZmZmZmZmZmKSB7CisgICAgICAgIGVzID0gNDsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgZXMgPSBzaXplb2YoUHlfc3NpemVfdCk7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gUHlEaWN0X01JTlNJWkUgJiYgbnVtZnJlZWtleXMgPiAwKSB7CisgICAgICAgIGRrID0ga2V5c19mcmVlX2xpc3RbLS1udW1mcmVla2V5c107CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkayA9IFB5T2JqZWN0X01BTExPQyhzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBQeV9NRU1CRVJfU0laRShQeURpY3RLZXlzT2JqZWN0LCBka19pbmRpY2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGVzICogc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOworICAgICAgICBpZiAoZGsgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogICAgIERLX0RFQlVHX0lOQ1JFRiBkay0+ZGtfcmVmY250ID0gMTsKICAgICBkay0+ZGtfc2l6ZSA9IHNpemU7Ci0gICAgZGstPmRrX3VzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKLSAgICBlcDAgPSAmZGstPmRrX2VudHJpZXNbMF07Ci0gICAgLyogSGFzaCB2YWx1ZSBvZiBzbG90IDAgaXMgdXNlZCBieSBwb3BpdGVtLCBzbyBpdCBtdXN0IGJlIGluaXRpYWxpemVkICovCi0gICAgZXAwLT5tZV9oYXNoID0gMDsKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGVwMFtpXS5tZV9rZXkgPSBOVUxMOwotICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBOVUxMOwotICAgIH0KKyAgICBkay0+ZGtfdXNhYmxlID0gdXNhYmxlOwogICAgIGRrLT5ka19sb29rdXAgPSBsb29rZGljdF91bmljb2RlX25vZHVtbXk7CisgICAgZGstPmRrX25lbnRyaWVzID0gMDsKKyAgICBtZW1zZXQoJmRrLT5ka19pbmRpY2VzLmFzXzFbMF0sIDB4ZmYsIGVzICogc2l6ZSk7CisgICAgbWVtc2V0KERLX0VOVFJJRVMoZGspLCAwLCBzaXplb2YoUHlEaWN0S2V5RW50cnkpICogdXNhYmxlKTsKICAgICByZXR1cm4gZGs7CiB9CiAKIHN0YXRpYyB2b2lkCiBmcmVlX2tleXNfb2JqZWN0KFB5RGljdEtleXNPYmplY3QgKmtleXMpCiB7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSAma2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9IERLX0VOVFJJRVMoa2V5cyk7CiAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKGtleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgZm9yIChpID0gMCwgbiA9IGtleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV9rZXkpOwogICAgICAgICBQeV9YREVDUkVGKGVudHJpZXNbaV0ubWVfdmFsdWUpOwogICAgIH0KLSAgICBQeU1lbV9GUkVFKGtleXMpOworICAgIGlmIChrZXlzLT5ka19zaXplID09IFB5RGljdF9NSU5TSVpFICYmIG51bWZyZWVrZXlzIDwgUHlEaWN0X01BWEZSRUVMSVNUKSB7CisgICAgICAgIGtleXNfZnJlZV9saXN0W251bWZyZWVrZXlzKytdID0ga2V5czsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBQeU9iamVjdF9GUkVFKGtleXMpOwogfQogCiAjZGVmaW5lIG5ld192YWx1ZXMoc2l6ZSkgUHlNZW1fTkVXKFB5T2JqZWN0ICosIHNpemUpCi0KICNkZWZpbmUgZnJlZV92YWx1ZXModmFsdWVzKSBQeU1lbV9GUkVFKHZhbHVlcykKIAogLyogQ29uc3VtZXMgYSByZWZlcmVuY2UgdG8gdGhlIGtleXMgb2JqZWN0ICovCkBAIC0zODAsNiArNTkzLDggQEAKICAgICBtcC0+bWFfa2V5cyA9IGtleXM7CiAgICAgbXAtPm1hX3ZhbHVlcyA9IHZhbHVlczsKICAgICBtcC0+bWFfdXNlZCA9IDA7CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1wOwogfQogCkBAIC0zOTAsNyArNjA1LDcgQEAKICAgICBQeU9iamVjdCAqKnZhbHVlczsKICAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAKLSAgICBzaXplID0gREtfU0laRShrZXlzKTsKKyAgICBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUoa2V5cykpOwogICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CiAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CiAgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKQEAgLTQwNSwxMiArNjIwLDQ0IEBACiBQeU9iamVjdCAqCiBQeURpY3RfTmV3KHZvaWQpCiB7Ci0gICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRV9DT01CSU5FRCk7CisgICAgUHlEaWN0S2V5c09iamVjdCAqa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIG5ld19kaWN0KGtleXMsIE5VTEwpOwogfQogCisvKiBTZWFyY2ggaW5kZXggb2YgaGFzaCB0YWJsZSBmcm9tIG9mZnNldCBvZiBlbnRyeSB0YWJsZSAqLworc3RhdGljIFB5X3NzaXplX3QKK2xvb2tkaWN0X2luZGV4KFB5RGljdEtleXNPYmplY3QgKmssIFB5X2hhc2hfdCBoYXNoLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIHNpemVfdCBpOworICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhrKTsKKyAgICBQeV9zc2l6ZV90IGl4OworCisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CisgICAgaXggPSBka19nZXRfaW5kZXgoaywgaSk7CisgICAgaWYgKGl4ID09IGluZGV4KSB7CisgICAgICAgIHJldHVybiBpOworICAgIH0KKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgoaywgaSk7CisgICAgICAgIGlmIChpeCA9PSBpbmRleCkgeworICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KKyAgICByZXR1cm4gREtJWF9FUlJPUjsKK30KKwogLyoKIFRoZSBiYXNpYyBsb29rdXAgZnVuY3Rpb24gdXNlZCBieSBhbGwgb3BlcmF0aW9ucy4KIFRoaXMgaXMgYmFzZWQgb24gQWxnb3JpdGhtIEQgZnJvbSBLbnV0aCBWb2wuIDMsIFNlYy4gNi40LgpAQCAtNDI2LDUyICs2NzMsNjQgQEAKIGNvbnRyaWJ1dGlvbnMgYnkgUmVpbWVyIEJlaHJlbmRzLCBKeXJraSBBbGFrdWlqYWxhLCBWbGFkaW1pciBNYXJhbmdvem92IGFuZAogQ2hyaXN0aWFuIFRpc21lci4KIAotbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIE5VTEwgaWYgKGFuZCBvbmx5IGlmKSBhCi1jb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24gKHRoaXMgd2FzIG5ldyBpbiBQeXRob24gMi41KS4KK2xvb2tkaWN0KCkgaXMgZ2VuZXJhbC1wdXJwb3NlLCBhbmQgbWF5IHJldHVybiBES0lYX0VSUk9SIGlmIChhbmQgb25seSBpZikgYQorY29tcGFyaXNvbiByYWlzZXMgYW4gZXhjZXB0aW9uLgogbG9va2RpY3RfdW5pY29kZSgpIGJlbG93IGlzIHNwZWNpYWxpemVkIHRvIHN0cmluZyBrZXlzLCBjb21wYXJpc29uIG9mIHdoaWNoIGNhbgotbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gTlVMTC4KK25ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuIERLSVhfRVJST1IuCiBsb29rZGljdF91bmljb2RlX25vZHVtbXkgaXMgZnVydGhlciBzcGVjaWFsaXplZCBmb3Igc3RyaW5nIGtleXMgdGhhdCBjYW5ub3QgYmUKIHRoZSA8ZHVtbXk+IHZhbHVlLgotRm9yIGJvdGgsIHdoZW4gdGhlIGtleSBpc24ndCBmb3VuZCBhIFB5RGljdEVudHJ5KiBpcyByZXR1cm5lZAotd2hlcmUgdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gZm91bmQsICp2YWx1ZV9hZGRyIHBvaW50cyB0byB0aGUgbWF0Y2hpbmcgdmFsdWUKLXNsb3QuCitGb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgREtJWF9FTVBUWSBpcyByZXR1cm5lZC4gaGFzaHBvcyByZXR1cm5zCit3aGVyZSB0aGUga2V5IGluZGV4IHNob3VsZCBiZSBpbnNlcnRlZC4KICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewotICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwotICAgIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKLSAgICBzaXplX3QgbWFzazsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBzaXplX3QgaSwgbWFzazsKKyAgICBQeV9zc2l6ZV90IGl4LCBmcmVlc2xvdDsKICAgICBpbnQgY21wOworICAgIFB5RGljdEtleXNPYmplY3QgKmRrOworICAgIFB5RGljdEtleUVudHJ5ICplcDAsICplcDsKICAgICBQeU9iamVjdCAqc3RhcnRrZXk7CiAKIHRvcDoKLSAgICBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIGRrID0gbXAtPm1hX2tleXM7CisgICAgbWFzayA9IERLX01BU0soZGspOworICAgIGVwMCA9IERLX0VOVFJJRVMoZGspOwogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworCisgICAgaXggPSBka19nZXRfaW5kZXgoZGssIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQotICAgICAgICBmcmVlc2xvdCA9IGVwOworICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgcmV0dXJuIGl4OworICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoKSB7CiAgICAgICAgICAgICBzdGFydGtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBpZiAoY21wIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgICAgIHJldHVybiBES0lYX0VSUk9SOworICAgICAgICAgICAgaWYgKGRrID09IG1wLT5tYV9rZXlzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewpAQCAtNDc5LDQwICs3MzgsNTAgQEAKICAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmcmVlc2xvdCA9IE5VTEw7CisgICAgICAgIGZyZWVzbG90ID0gLTE7CiAgICAgfQogCi0gICAgLyogSW4gdGhlIGxvb3AsIG1lX2tleSA9PSBkdW1teSBpcyBieSBmYXIgKGZhY3RvciBvZiAxMDBzKSB0aGUKLSAgICAgICBsZWFzdCBsaWtlbHkgb3V0Y29tZSwgc28gdGVzdCBmb3IgdGhhdCBsYXN0LiAqLwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChmcmVlc2xvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgIHJldHVybiBlcDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZnJlZXNsb3QtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdDsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpICYgbWFzazsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgoZGssIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpoYXNocG9zID0gKGZyZWVzbG90ID09IC0xKSA/IChQeV9zc2l6ZV90KWkgOiBmcmVlc2xvdDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IC0xKQorICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgZXAtPm1lX2tleSAhPSBkdW1teSkgeworICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCkgewogICAgICAgICAgICAgc3RhcnRrZXkgPSBlcC0+bWVfa2V5OwogICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgcmV0dXJuIERLSVhfRVJST1I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKKyAgICAgICAgICAgIGlmIChkayA9PSBtcC0+bWFfa2V5cyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CiAgICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC01MjAsNzIgKzc4OSw4MCBAQAogICAgICAgICAgICAgICAgIGdvdG8gdG9wOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KICAgICByZXR1cm4gMDsKIH0KIAogLyogU3BlY2lhbGl6ZWQgdmVyc2lvbiBmb3Igc3RyaW5nLW9ubHkga2V5cyAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZnJlZXNsb3Q7CiAgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4LCBmcmVlc2xvdDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIGFzc2VydChtcC0+bWFfdmFsdWVzID09IE5VTEwpOwogICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKICAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKICAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KICAgICAgICB0aGF0IGhlcmUuICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkciwgaGFzaHBvcyk7CiAgICAgfQogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOwogICAgIH0KLSAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkKLSAgICAgICAgZnJlZXNsb3QgPSBlcDsKKyAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICBmcmVlc2xvdCA9IGk7CisgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpIHsKKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleQorICAgICAgICAgICAgfHwgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgZnJlZXNsb3QgPSBOVUxMOworICAgICAgICBmcmVlc2xvdCA9IC0xOwogICAgIH0KIAotICAgIC8qIEluIHRoZSBsb29wLCBtZV9rZXkgPT0gZHVtbXkgaXMgYnkgZmFyIChmYWN0b3Igb2YgMTAwcykgdGhlCi0gICAgICAgbGVhc3QgbGlrZWx5IG91dGNvbWUsIHNvIHRlc3QgZm9yIHRoYXQgbGFzdC4gKi8KLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmZyZWVzbG90LT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZnJlZXNsb3Q7CisgICAgZm9yIChzaXplX3QgcGVydHVyYiA9IGhhc2g7OykgeworICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOworICAgICAgICBpID0gbWFzayAmICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSk7CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IChmcmVlc2xvdCA9PSAtMSkgPyAoUHlfc3NpemVfdClpIDogZnJlZXNsb3Q7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9EVU1NWSkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IC0xKQorICAgICAgICAgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOwogICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkKLSAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoCi0gICAgICAgICAgICAmJiBlcC0+bWVfa2V5ICE9IGR1bW15Ci0gICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CiAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCi0gICAgICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCiAgICAgcmV0dXJuIDA7CkBAIC01OTMsNDAgKzg3MCw2MyBAQAogCiAvKiBGYXN0ZXIgdmVyc2lvbiBvZiBsb29rZGljdF91bmljb2RlIHdoZW4gaXQgaXMga25vd24gdGhhdCBubyA8ZHVtbXk+IGtleXMKICAqIHdpbGwgYmUgcHJlc2VudC4gKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyA9PSBOVUxMKTsKICAgICAvKiBNYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdG8gaGFuZGxlIG5vbi11bmljb2RlIGtleXMsCiAgICAgICAgaW5jbHVkaW5nIHN1YmNsYXNzZXMgb2Ygc3RyOyBlLmcuLCBvbmUgcmVhc29uIHRvIHN1YmNsYXNzCiAgICAgICAgdW5pY29kZXMgaXMgdG8gb3ZlcnJpZGUgX19lcV9fLCBhbmQgZm9yIHNwZWVkIHdlIGRvbid0IGNhdGVyIHRvCiAgICAgICAgdGhhdCBoZXJlLiAqLwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7Ci0gICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKKyAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIsIGhhc2hwb3MpOwogICAgIH0KICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOwotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBhc3NlcnQgKGl4ICE9IERLSVhfRFVNTVkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CiAgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC02MzgsMzkgKzkzOCw2MiBAQAogICogU3BsaXQgdGFibGVzIG9ubHkgY29udGFpbiB1bmljb2RlIGtleXMgYW5kIG5vIGR1bW15IGtleXMsCiAgKiBzbyBhbGdvcml0aG0gaXMgdGhlIHNhbWUgYXMgbG9va2RpY3RfdW5pY29kZV9ub2R1bW15LgogICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3NwbGl0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIC8qIG1wIG11c3Qgc3BsaXQgdGFibGUgKi8KKyAgICBhc3NlcnQobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKTsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgZXAgPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKLSAgICAgICAgLyogbG9va2RpY3QgZXhwZWN0cyBhIGNvbWJpbmVkLXRhYmxlLCBzbyBmaXggdmFsdWVfYWRkciAqLwotICAgICAgICBpID0gZXAgLSBlcDA7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgaXggPSBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyLCBoYXNocG9zKTsKKyAgICAgICAgaWYgKGl4ID49IDApIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpeDsKICAgICB9CisKICAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAotICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIHJldHVybiBlcDsKKyAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgZXAgPSAmZXAwW2l4XTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgcmV0dXJuIGl4OworICAgIH0KKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKICAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKLSAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZtcC0+bWFfdmFsdWVzW2l4XTsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQogICAgIH0KICAgICBhc3NlcnQoMCk7ICAgICAgICAgIC8qIE5PVCBSRUFDSEVEICovCkBAIC03MDcsMjcgKzEwMzAsMjcgQEAKIHsKICAgICBQeURpY3RPYmplY3QgKm1wOwogICAgIFB5T2JqZWN0ICp2YWx1ZTsKLSAgICBQeV9zc2l6ZV90IGksIHNpemU7CisgICAgUHlfc3NpemVfdCBpLCBudW1lbnRyaWVzOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CiAKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSB8fCAhX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob3ApKQogICAgICAgICByZXR1cm47CiAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKikgb3A7Ci0gICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIG51bWVudHJpZXMgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKHZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KCFfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoCi0gICAgICAgICAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSkpOworICAgICAgICAgICAgICAgIGFzc2VydCghX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwMFtpXS5tZV9rZXkpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWVudHJpZXM7IGkrKykgewogICAgICAgICAgICAgaWYgKCh2YWx1ZSA9IGVwMFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQodmFsdWUpIHx8CkBAIC03MzksMzMgKzEwNjIsMzUgQEAKIH0KIAogLyogSW50ZXJuYWwgZnVuY3Rpb24gdG8gZmluZCBzbG90IGZvciBhbiBpdGVtIGZyb20gaXRzIGhhc2gKLSAqIHdoZW4gaXQgaXMga25vd24gdGhhdCB0aGUga2V5IGlzIG5vdCBwcmVzZW50IGluIHRoZSBkaWN0LgotICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorICAgd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCisKKyAgIFRoZSBkaWN0IG11c3QgYmUgY29tYmluZWQuICovCitzdGF0aWMgdm9pZAogZmluZF9lbXB0eV9zbG90KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkciwgUHlfc3NpemVfdCAqaGFzaHBvcykKIHsKICAgICBzaXplX3QgaTsKLSAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXg7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CiAKKyAgICBhc3NlcnQoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgIGFzc2VydChoYXNocG9zICE9IE5VTEwpOwogICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpCiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKICAgICBpID0gaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDsgaXggIT0gREtJWF9FTVBUWTspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKICAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSAmIG1hc2spOwogICAgIH0KKyAgICBlcCA9ICZlcDBbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXTsKKyAgICAqaGFzaHBvcyA9IGkgJiBtYXNrOwogICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgaWYgKG1wLT5tYV92YWx1ZXMpCi0gICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOwotICAgIGVsc2UKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgIHJldHVybiBlcDsKKyAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTc4NCw5NyArMTEwOSwxMDcgQEAKIHsKICAgICBQeU9iamVjdCAqb2xkX3ZhbHVlOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7Ci0gICAgYXNzZXJ0KGtleSAhPSBkdW1teSk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwLCAqZXAwOworICAgIFB5X3NzaXplX3QgaGFzaHBvcywgaXg7CiAKICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMICYmICFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgZXAgPSBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkgeworICAgIGl4ID0gbXAtPm1hX2tleXMtPmRrX2xvb2t1cChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fCBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKTsKLSAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAob2xkX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KTsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSB2YWx1ZTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7IC8qIHdoaWNoICoqQ0FOKiogcmUtZW50ZXIgKHNlZSBpc3N1ZSAjMjI2NTMpICovCisKKyAgICAvKiBXaGVuIGluc2VydGlvbiBvcmRlciBpcyBkaWZmZXJlbnQgZnJvbSBzaGFyZWQga2V5LCB3ZSBjYW4ndCBzaGFyZQorICAgICAqIHRoZSBrZXkgYW55bW9yZS4gIENvbnZlcnQgdGhpcyBpbnN0YW5jZSB0byBjb21iaW5lIHRhYmxlLgorICAgICAqLworICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApICYmCisgICAgICAgICgoaXggPj0gMCAmJiAqdmFsdWVfYWRkciA9PSBOVUxMICYmIG1wLT5tYV91c2VkICE9IGl4KSB8fAorICAgICAgICAgKGl4ID09IERLSVhfRU1QVFkgJiYgbXAtPm1hX3VzZWQgIT0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKSkpIHsKKyAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgaXggPSBES0lYX0VNUFRZOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA8PSAwKSB7Ci0gICAgICAgICAgICAgICAgLyogTmVlZCB0byByZXNpemUuICovCi0gICAgICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlcCA9IGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAvKiBJbnNlcnQgaW50byBuZXcgc2xvdC4gKi8KKyAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgPD0gMCkgeworICAgICAgICAgICAgLyogTmVlZCB0byByZXNpemUuICovCisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07Ci0gICAgICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSAwKTsKLSAgICAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7Ci0gICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CisgICAgICAgICAgICBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgfQorICAgICAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICAgICAgZXAgPSAmZXAwW21wLT5tYV9rZXlzLT5ka19uZW50cmllc107CisgICAgICAgIGRrX3NldF9pbmRleChtcC0+bWFfa2V5cywgaGFzaHBvcywgbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKTsKKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7CisgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgICAgIGFzc2VydCAobXAtPm1hX3ZhbHVlc1ttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdID09IE5VTEwpOworICAgICAgICAgICAgbXAtPm1hX3ZhbHVlc1ttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdID0gdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7Ci0gICAgICAgICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkdW1teSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGFzc2VydChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwogICAgICAgICB9CiAgICAgICAgIG1wLT5tYV91c2VkKys7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgZXAtPm1lX2tleSAhPSBkdW1teSk7CisgICAgICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzKys7CisgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlID49IDApOworICAgICAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKworICAgIGFzc2VydCh2YWx1ZV9hZGRyICE9IE5VTEwpOworCisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgaWYgKG9sZF92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKKworICAgICAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsgLyogd2hpY2ggKipDQU4qKiByZS1lbnRlciAoc2VlIGlzc3VlICMyMjY1MykgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogcGVuZGluZyBzdGF0ZSAqLworICAgIGFzc2VydChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKTsKKyAgICBhc3NlcnQoaXggPT0gbXAtPm1hX3VzZWQpOworICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgbXAtPm1hX3VzZWQrKzsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gMDsKIH0KIAogLyoKLUludGVybmFsIHJvdXRpbmUgdXNlZCBieSBkaWN0cmVzaXplKCkgdG8gaW5zZXJ0IGFuIGl0ZW0gd2hpY2ggaXMKLWtub3duIHRvIGJlIGFic2VudCBmcm9tIHRoZSBkaWN0LiAgVGhpcyByb3V0aW5lIGFsc28gYXNzdW1lcyB0aGF0Ci10aGUgZGljdCBjb250YWlucyBubyBkZWxldGVkIGVudHJpZXMuICBCZXNpZGVzIHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0LAotdXNpbmcgaW5zZXJ0ZGljdCgpIGluIGRpY3RyZXNpemUoKSBpcyBkYW5nZXJvdXMgKFNGIGJ1ZyAjMTQ1NjIwOSkuCi1Ob3RlIHRoYXQgbm8gcmVmY291bnRzIGFyZSBjaGFuZ2VkIGJ5IHRoaXMgcm91dGluZTsgaWYgbmVlZGVkLCB0aGUgY2FsbGVyCi1pcyByZXNwb25zaWJsZSBmb3IgaW5jcmVmJ2luZyBga2V5YCBhbmQgYHZhbHVlYC4KLU5laXRoZXIgbXAtPm1hX3VzZWQgbm9yIGstPmRrX3VzYWJsZSBhcmUgbW9kaWZpZWQgYnkgdGhpcyByb3V0aW5lOyB0aGUgY2FsbGVyCi1tdXN0IHNldCB0aGVtIGNvcnJlY3RseQorSW50ZXJuYWwgcm91dGluZSB1c2VkIGJ5IGRpY3RyZXNpemUoKSB0byBidWlkIGEgaGFzaHRhYmxlIG9mIGVudHJpZXMuCiAqLwogc3RhdGljIHZvaWQKLWluc2VydGRpY3RfY2xlYW4oUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSkKK2J1aWxkX2luZGljZXMoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlEaWN0S2V5RW50cnkgKmVwLCBQeV9zc2l6ZV90IG4pCiB7Ci0gICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7Ci0gICAgUHlEaWN0S2V5c09iamVjdCAqayA9IG1wLT5tYV9rZXlzOwotICAgIHNpemVfdCBtYXNrID0gKHNpemVfdClES19TSVpFKGspLTE7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZrLT5ka19lbnRyaWVzWzBdOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKLQotICAgIGFzc2VydChrLT5ka19sb29rdXAgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KHZhbHVlICE9IE5VTEwpOwotICAgIGFzc2VydChrZXkgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KGtleSAhPSBkdW1teSk7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgay0+ZGtfbG9va3VwID09IGxvb2tkaWN0KTsKLSAgICBpID0gaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CisgICAgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KURLX1NJWkUoa2V5cykgLSAxOworICAgIGZvciAoUHlfc3NpemVfdCBpeCA9IDA7IGl4ICE9IG47IGl4KyssIGVwKyspIHsKKyAgICAgICAgUHlfaGFzaF90IGhhc2ggPSBlcC0+bWVfaGFzaDsKKyAgICAgICAgc2l6ZV90IGkgPSBoYXNoICYgbWFzazsKKyAgICAgICAgZm9yIChzaXplX3QgcGVydHVyYiA9IGhhc2g7IGRrX2dldF9pbmRleChrZXlzLCBpKSAhPSBES0lYX0VNUFRZOykgeworICAgICAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBka19zZXRfaW5kZXgoa2V5cywgaSwgaXgpOwogICAgIH0KLSAgICBhc3NlcnQoZXAtPm1lX3ZhbHVlID09IE5VTEwpOwotICAgIGVwLT5tZV9rZXkgPSBrZXk7Ci0gICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwogfQogCiAvKgpAQCAtODkwLDEzICsxMjI1LDEzIEBACiBzdGF0aWMgaW50CiBkaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCkKIHsKLSAgICBQeV9zc2l6ZV90IG5ld3NpemU7CisgICAgUHlfc3NpemVfdCBuZXdzaXplLCBudW1lbnRyaWVzOwogICAgIFB5RGljdEtleXNPYmplY3QgKm9sZGtleXM7CiAgICAgUHlPYmplY3QgKipvbGR2YWx1ZXM7Ci0gICAgUHlfc3NpemVfdCBpLCBvbGRzaXplOworICAgIFB5RGljdEtleUVudHJ5ICpvbGRlbnRyaWVzLCAqbmV3ZW50cmllczsKIAotLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCi0gICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7CisgICAgLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkU7CiAgICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CiAgICAgICAgICBuZXdzaXplIDw8PSAxKQogICAgICAgICA7CkBAIC05MDQsOCArMTIzOSwxNCBAQAogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorCiAgICAgb2xka2V5cyA9IG1wLT5tYV9rZXlzOwotICAgIG9sZHZhbHVlcyA9IG1wLT5tYV92YWx1ZXM7CisKKyAgICAvKiBOT1RFOiBDdXJyZW50IG9kaWN0IGNoZWNrcyBtcC0+bWFfa2V5cyB0byBkZXRlY3QgcmVzaXplIGhhcHBlbi4KKyAgICAgKiBTbyB3ZSBjYW4ndCByZXVzZSBvbGRrZXlzIGV2ZW4gaWYgb2xka2V5cy0+ZGtfc2l6ZSA9PSBuZXdzaXplLgorICAgICAqIFRPRE86IFRyeSByZXVzaW5nIG9sZGtleXMgd2hlbiByZWltcGxlbWVudCBvZGljdC4KKyAgICAgKi8KKwogICAgIC8qIEFsbG9jYXRlIGEgbmV3IHRhYmxlLiAqLwogICAgIG1wLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KG5ld3NpemUpOwogICAgIGlmIChtcC0+bWFfa2V5cyA9PSBOVUxMKSB7CkBAIC05MTQsNTUgKzEyNTUsNTkgQEAKICAgICB9CiAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkKICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OwotICAgIG9sZHNpemUgPSBES19TSVpFKG9sZGtleXMpOwotICAgIG1wLT5tYV92YWx1ZXMgPSBOVUxMOwotICAgIC8qIElmIGVtcHR5IHRoZW4gbm90aGluZyB0byBjb3B5IHNvIGp1c3QgcmV0dXJuICovCi0gICAgaWYgKG9sZHNpemUgPT0gMSkgewotICAgICAgICBhc3NlcnQob2xka2V5cyA9PSBQeV9FTVBUWV9LRVlTKTsKLSAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgLyogTWFpbiBsb29wIGJlbG93IGFzc3VtZXMgd2UgY2FuIHRyYW5zZmVyIHJlZmNvdW50IHRvIG5ldyBrZXlzCi0gICAgICogYW5kIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIG1lX3ZhbHVlLgotICAgICAqIEluY3JlbWVudCByZWYtY291bnRzIGFuZCBjb3B5IHZhbHVlcyBoZXJlIHRvIGNvbXBlbnNhdGUKLSAgICAgKiBUaGlzIChyZXNpemluZyBhIHNwbGl0IHRhYmxlKSBzaG91bGQgYmUgcmVsYXRpdmVseSByYXJlICovCisKKyAgICBudW1lbnRyaWVzID0gbXAtPm1hX3VzZWQ7CisgICAgb2xkZW50cmllcyA9IERLX0VOVFJJRVMob2xka2V5cyk7CisgICAgbmV3ZW50cmllcyA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIG9sZHZhbHVlcyA9IG1wLT5tYV92YWx1ZXM7CiAgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChvbGR2YWx1ZXNbaV0gIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7Ci0gICAgICAgICAgICAgICAgb2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSA9IG9sZHZhbHVlc1tpXTsKKyAgICAgICAgLyogQ29udmVydCBzcGxpdCB0YWJsZSBpbnRvIG5ldyBjb21iaW5lZCB0YWJsZS4KKyAgICAgICAgICogV2UgbXVzdCBpbmNyZWYga2V5czsgd2UgY2FuIHRyYW5zZmVyIHZhbHVlcy4KKyAgICAgICAgICogTm90ZSB0aGF0IHZhbHVlcyBvZiBzcGxpdCB0YWJsZSBpcyBhbHdheXMgZGVuc2UuCisgICAgICAgICAqLworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IDA7IGkgPCBudW1lbnRyaWVzOyBpKyspIHsKKyAgICAgICAgICAgIGFzc2VydChvbGR2YWx1ZXNbaV0gIT0gTlVMTCk7CisgICAgICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmb2xkZW50cmllc1tpXTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBlcC0+bWVfa2V5OworICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICBuZXdlbnRyaWVzW2ldLm1lX2tleSA9IGtleTsKKyAgICAgICAgICAgIG5ld2VudHJpZXNbaV0ubWVfaGFzaCA9IGVwLT5tZV9oYXNoOworICAgICAgICAgICAgbmV3ZW50cmllc1tpXS5tZV92YWx1ZSA9IG9sZHZhbHVlc1tpXTsKKyAgICAgICAgfQorCisgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICAgICAgbXAtPm1hX3ZhbHVlcyA9IE5VTEw7CisgICAgICAgIGlmIChvbGR2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKSB7CisgICAgICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeyAgLy8gY29tYmluZWQgdGFibGUuCisgICAgICAgIGlmIChvbGRrZXlzLT5ka19uZW50cmllcyA9PSBudW1lbnRyaWVzKSB7CisgICAgICAgICAgICBtZW1jcHkobmV3ZW50cmllcywgb2xkZW50cmllcywgbnVtZW50cmllcyAqIHNpemVvZihQeURpY3RLZXlFbnRyeSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gb2xkZW50cmllczsKKyAgICAgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gMDsgaSA8IG51bWVudHJpZXM7IGkrKykgeworICAgICAgICAgICAgICAgIHdoaWxlIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZXArKzsKKyAgICAgICAgICAgICAgICBuZXdlbnRyaWVzW2ldID0gKmVwKys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9Ci0gICAgLyogTWFpbiBsb29wICovCi0gICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgewotICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1tpXTsKLSAgICAgICAgaWYgKGVwLT5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBkdW1teSk7Ci0gICAgICAgICAgICBpbnNlcnRkaWN0X2NsZWFuKG1wLCBlcC0+bWVfa2V5LCBlcC0+bWVfaGFzaCwgZXAtPm1lX3ZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIC09IG1wLT5tYV91c2VkOwotICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgewotICAgICAgICAvKiBOVUxMIG91dCBtZV92YWx1ZSBzbG90IGluIG9sZGtleXMsIGluIGNhc2UgaXQgd2FzIHNoYXJlZCAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKQotICAgICAgICAgICAgb2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSA9IE5VTEw7Ci0gICAgICAgIGFzc2VydChvbGR2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKTsKLSAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKLSAgICAgICAgREtfREVDUkVGKG9sZGtleXMpOwotICAgIH0KLSAgICBlbHNlIHsKKwogICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3NwbGl0KTsKLSAgICAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpIHsKLSAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoZXAwW2ldLm1lX2tleSA9PSBkdW1teSkKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOwotICAgICAgICBES19ERUJVR19ERUNSRUYgUHlNZW1fRlJFRShvbGRrZXlzKTsKKyAgICAgICAgaWYgKG9sZGtleXMtPmRrX3NpemUgPT0gUHlEaWN0X01JTlNJWkUgJiYKKyAgICAgICAgICAgIG51bWZyZWVrZXlzIDwgUHlEaWN0X01BWEZSRUVMSVNUKSB7CisgICAgICAgICAgICBES19ERUJVR19ERUNSRUYga2V5c19mcmVlX2xpc3RbbnVtZnJlZWtleXMrK10gPSBvbGRrZXlzOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgREtfREVCVUdfREVDUkVGIFB5T2JqZWN0X0ZSRUUob2xka2V5cyk7CisgICAgICAgIH0KICAgICB9CisKKyAgICBidWlsZF9pbmRpY2VzKG1wLT5tYV9rZXlzLCBuZXdlbnRyaWVzLCBudW1lbnRyaWVzKTsKKyAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIC09IG51bWVudHJpZXM7CisgICAgbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzID0gbnVtZW50cmllczsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtOTkxLDggKzEzMzYsOCBAQAogICAgICAgICB9CiAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSk7CiAgICAgICAgIC8qIENvcHkgdmFsdWVzIGludG8gYSBuZXcgYXJyYXkgKi8KLSAgICAgICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUobXAtPm1hX2tleXMpKTsKICAgICAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCkBAIC0xMDE1LDcgKzEzNjAsNyBAQAogewogICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpuZXdfa2V5czsKLSAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRTsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKQEAgLTEwMzksOCArMTM4NCw4IEBACiBQeURpY3RfR2V0SXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCkBAIC0xMDY2LDE1ICsxNDExLDE1IEBACiAgICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KICAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOwogICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOwotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKICAgICAgICAgLyogaWdub3JlIGVycm9ycyAqLwogICAgICAgICBQeUVycl9SZXN0b3JlKGVycl90eXBlLCBlcnJfdmFsdWUsIGVycl90Yik7Ci0gICAgICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICBpZiAoaXggPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICAgICAgaWYgKGl4IDwgMCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xMDg1LDggKzE0MzAsOCBAQAogUHlPYmplY3QgKgogX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogeworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIApAQCAtMTEwMywxNSArMTQ0OCwxNSBAQAogICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCiAgICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CiAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xMTI2LDkgKzE0NzEsOSBAQAogUHlPYmplY3QgKgogUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogeworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgUHlEaWN0T2JqZWN0Km1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKQEAgLTExNDQsOCArMTQ4OSw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KQEAgLTExNjAsMzkgKzE1MDUsNDAgQEAKICAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoZHAsIGt2KTsKIH0KIAotLyogRmFzdCB2ZXJzaW9uIG9mIGdsb2JhbCB2YWx1ZSBsb29rdXAuCisvKiBGYXN0IHZlcnNpb24gb2YgZ2xvYmFsIHZhbHVlIGxvb2t1cCAoTE9BRF9HTE9CQUwpLgogICogTG9va3VwIGluIGdsb2JhbHMsIHRoZW4gYnVpbHRpbnMuCisgKgorICogUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBpZiBhbiBlcnJvciBvY2N1cnJlZCAoZXg6IGNvbXB1dGluZyB0aGUKKyAqIGtleSBoYXNoIGZhaWxlZCwga2V5IGNvbXBhcmlzb24gZmFpbGVkLCAuLi4pLiBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXNuJ3QKKyAqIGV4aXN0LiBSZXR1cm4gdGhlIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLgogICovCiBQeU9iamVjdCAqCiBfUHlEaWN0X0xvYWRHbG9iYWwoUHlEaWN0T2JqZWN0ICpnbG9iYWxzLCBQeURpY3RPYmplY3QgKmJ1aWx0aW5zLCBQeU9iamVjdCAqa2V5KQogewotICAgIFB5T2JqZWN0ICp4OwotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKLSAgICAgICAgUHlfaGFzaF90IGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKilrZXkpLT5oYXNoOwotICAgICAgICBpZiAoaGFzaCAhPSAtMSkgewotICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmU7Ci0gICAgICAgICAgICBlID0gZ2xvYmFscy0+bWFfa2V5cy0+ZGtfbG9va3VwKGdsb2JhbHMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIGUgPSBidWlsdGlucy0+bWFfa2V5cy0+ZGtfbG9va3VwKGJ1aWx0aW5zLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB4ID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopZ2xvYmFscywga2V5KTsKLSAgICBpZiAoeCAhPSBOVUxMKQotICAgICAgICByZXR1cm4geDsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKworICAgIC8qIG5hbWVzcGFjZSAxOiBnbG9iYWxzICovCisgICAgaXggPSBnbG9iYWxzLT5tYV9rZXlzLT5ka19sb29rdXAoZ2xvYmFscywga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilidWlsdGlucywga2V5KTsKKyAgICBpZiAoaXggIT0gREtJWF9FTVBUWSAmJiAqdmFsdWVfYWRkciAhPSBOVUxMKQorICAgICAgICByZXR1cm4gKnZhbHVlX2FkZHI7CisKKyAgICAvKiBuYW1lc3BhY2UgMjogYnVpbHRpbnMgKi8KKyAgICBpeCA9IGJ1aWx0aW5zLT5tYV9rZXlzLT5ka19sb29rdXAoYnVpbHRpbnMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAogLyogQ0FVVElPTjogUHlEaWN0X1NldEl0ZW0oKSBtdXN0IGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IHJlc2l6ZSB0aGUKQEAgLTEyNDcsMTYgKzE1OTMsOCBAQAogaW50CiBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7Ci0gICAgUHlPYmplY3QgKm9sZF9rZXksICpvbGRfdmFsdWU7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGFzc2VydChrZXkpOwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAogICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewpAQCAtMTI2NCwzMSArMTYwMiwxNCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCp2YWx1ZV9hZGRyID09IE5VTEwpIHsKLSAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7Ci0gICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KLSAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKLSAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKG9wLCBrZXksIGhhc2gpOwogfQogCiBpbnQKIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKKyAgICBQeV9zc2l6ZV90IGhhc2hwb3MsIGl4OwogICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICpvbGRfa2V5LCAqb2xkX3ZhbHVlOwpAQCAtMTMwMSwyNCArMTYyMiwzOCBAQAogICAgIGFzc2VydChrZXkpOwogICAgIGFzc2VydChoYXNoICE9IC0xKTsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBhc3NlcnQoZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zKSA9PSBpeCk7CisKKyAgICAvLyBTcGxpdCB0YWJsZSBkb2Vzbid0IGFsbG93IGRlbGV0aW9uLiAgQ29tYmluZSBpdC4KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgYXNzZXJ0KGl4ID49IDApOworICAgIH0KKwogICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGFzc2VydChvbGRfdmFsdWUgIT0gTlVMTCk7CiAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKKyAgICBka19zZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MsIERLSVhfRFVNTVkpOworICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKKyAgICBQeV9ERUNSRUYob2xkX2tleSk7CiAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7CisKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEzNDIsOSArMTY3NywxMCBAQAogICAgIG1wLT5tYV9rZXlzID0gUHlfRU1QVFlfS0VZUzsKICAgICBtcC0+bWFfdmFsdWVzID0gZW1wdHlfdmFsdWVzOwogICAgIG1wLT5tYV91c2VkID0gMDsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOwogICAgIC8qIC4uLnRoZW4gY2xlYXIgdGhlIGtleXMgYW5kIHZhbHVlcyAqLwogICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgewotICAgICAgICBuID0gREtfU0laRShvbGRrZXlzKTsKKyAgICAgICAgbiA9IG9sZGtleXMtPmRrX25lbnRyaWVzOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgUHlfQ0xFQVIob2xkdmFsdWVzW2ldKTsKICAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKQEAgLTEzNTQsNDIgKzE2OTAsNTkgQEAKICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOwogICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogfQogCi0vKiBSZXR1cm5zIC0xIGlmIG5vIG1vcmUgaXRlbXMgKG9yIG9wIGlzIG5vdCBhIGRpY3QpLAotICogaW5kZXggb2YgaXRlbSBvdGhlcndpc2UuIFN0b3JlcyB2YWx1ZSBpbiBwdmFsdWUKKy8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X05leHQgdGhhdCByZXR1cm5zIGEgaGFzaCB2YWx1ZSBpbiBhZGRpdGlvbgorICogdG8gdGhlIGtleSBhbmQgdmFsdWUuCisgKiBSZXR1cm4gMSBvbiBzdWNjZXNzLCByZXR1cm4gMCB3aGVuIHRoZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGRpY3Rpb25hcnkKKyAqIChvciBpZiBvcCBpcyBub3QgYSBkaWN0aW9uYXJ5KQogICovCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWRpY3RfbmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKipwdmFsdWUpCitpbnQKK19QeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwKKyAgICAgICAgICAgICBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKIHsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKLQorICAgIFB5RGljdEtleUVudHJ5ICplbnRyeV9wdHI7CisgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiAwOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGkgPSAqcHBvczsKKyAgICBuID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOworICAgIGlmICgoc2l6ZV90KWkgPj0gKHNpemVfdCluKQorICAgICAgICByZXR1cm4gMDsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewotICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9ICZtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGVudHJ5X3B0ciA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgICAgICBlbnRyeV9wdHIgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiBlbnRyeV9wdHItPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVudHJ5X3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgdmFsdWUgPSBlbnRyeV9wdHItPm1lX3ZhbHVlOwogICAgIH0KLSAgICBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOwotICAgIH0KLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIHJldHVybiAtMTsKKyAgICAqcHBvcyA9IGkrMTsKKyAgICBpZiAocGtleSkKKyAgICAgICAgKnBrZXkgPSBlbnRyeV9wdHItPm1lX2tleTsKKyAgICBpZiAocGhhc2gpCisgICAgICAgICpwaGFzaCA9IGVudHJ5X3B0ci0+bWVfaGFzaDsKICAgICBpZiAocHZhbHVlKQotICAgICAgICAqcHZhbHVlID0gKnZhbHVlX3B0cjsKLSAgICByZXR1cm4gaTsKKyAgICAgICAgKnB2YWx1ZSA9IHZhbHVlOworICAgIHJldHVybiAxOwogfQogCiAvKgpAQCAtMTM5OSw5ICsxNzUyLDEyIEBACiAgKiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOwogICogICAgIGkgPSAwOyAgICMgaW1wb3J0YW50ISAgaSBzaG91bGQgbm90IG90aGVyd2lzZSBiZSBjaGFuZ2VkIGJ5IHlvdQogICogICAgIHdoaWxlIChQeURpY3RfTmV4dCh5b3VyZGljdCwgJmksICZrZXksICZ2YWx1ZSkpIHsKLSAqICAgICAgICAgICAgICBSZWZlciB0byBib3Jyb3dlZCByZWZlcmVuY2VzIGluIGtleSBhbmQgdmFsdWUuCisgKiAgICAgICAgIFJlZmVyIHRvIGJvcnJvd2VkIHJlZmVyZW5jZXMgaW4ga2V5IGFuZCB2YWx1ZS4KICAqICAgICB9CiAgKgorICogUmV0dXJuIDEgb24gc3VjY2VzcywgcmV0dXJuIDAgd2hlbiB0aGUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5CisgKiAob3IgaWYgb3AgaXMgbm90IGEgZGljdGlvbmFyeSkKKyAqCiAgKiBDQVVUSU9OOiAgSW4gZ2VuZXJhbCwgaXQgaXNuJ3Qgc2FmZSB0byB1c2UgUHlEaWN0X05leHQgaW4gYSBsb29wIHRoYXQKICAqIG11dGF0ZXMgdGhlIGRpY3QuICBPbmUgZXhjZXB0aW9uOiAgaXQgaXMgc2FmZSBpZiB0aGUgbG9vcCBtZXJlbHkgY2hhbmdlcwogICogdGhlIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXMgKGJ1dCBkb2Vzbid0IGluc2VydCBuZXcga2V5cyBvcgpAQCAtMTQxMCw0NCArMTc2NiwyMiBAQAogaW50CiBQeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwgUHlPYmplY3QgKipwdmFsdWUpCiB7Ci0gICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeV9zc2l6ZV90IGkgPSBkaWN0X25leHQob3AsICpwcG9zLCBwdmFsdWUpOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgKnBwb3MgPSBpKzE7Ci0gICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwotICAgIHJldHVybiAxOwotfQotCi0vKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9OZXh0IHRoYXQgcmV0dXJucyBhIGhhc2ggdmFsdWUgaW4gYWRkaXRpb24KLSAqIHRvIHRoZSBrZXkgYW5kIHZhbHVlLgotICovCi1pbnQKLV9QeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwKLSAgICAgICAgICAgICBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKLXsKLSAgICBQeURpY3RPYmplY3QgKm1wOwotICAgIFB5X3NzaXplX3QgaSA9IGRpY3RfbmV4dChvcCwgKnBwb3MsIHB2YWx1ZSk7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICAqcHBvcyA9IGkrMTsKLSAgICAqcGhhc2ggPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9oYXNoOwotICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gX1B5RGljdF9OZXh0KG9wLCBwcG9zLCBwa2V5LCBwdmFsdWUsIE5VTEwpOwogfQogCiAvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIGRpY3QucG9wKCkuICovCiBQeU9iamVjdCAqCi1fUHlEaWN0X1BvcChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmbHQpCitfUHlEaWN0X1BvcChQeU9iamVjdCAqZGljdCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKmRlZmx0KQogewogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaXgsIGhhc2hwb3M7CiAgICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICBQeURpY3RPYmplY3QgKm1wOworCisgICAgYXNzZXJ0KFB5RGljdF9DaGVjayhkaWN0KSk7CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopZGljdDsKIAogICAgIGlmIChtcC0+bWFfdXNlZCA9PSAwKSB7CiAgICAgICAgIGlmIChkZWZsdCkgewpAQCAtMTQ2MywxMSArMTc5NywxMCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKG9sZF92YWx1ZSA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBpZiAoZGVmbHQpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CiAgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CkBAIC0xNDc1LDE1ICsxODA4LDI5IEBACiAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKKyAgICAvLyBTcGxpdCB0YWJsZSBkb2Vzbid0IGFsbG93IGRlbGV0aW9uLiAgQ29tYmluZSBpdC4KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgfQorCisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgYXNzZXJ0KG9sZF92YWx1ZSAhPSBOVUxMKTsKICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQorICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBES0lYX0RVTU1ZKTsKKyAgICBlcCA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpeF07CisgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OworICAgIGVwLT5tZV9rZXkgPSBOVUxMOworICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gb2xkX3ZhbHVlOwogfQogCkBAIC0xNTA4LDcgKzE4NTUsNyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwogCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlfU0laRShpdGVyYWJsZSkpKSB7CisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgRVNUSU1BVEVfU0laRShQeV9TSVpFKGl0ZXJhYmxlKSkpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTUyNyw3ICsxODc0LDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpIHsKKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBFU1RJTUFURV9TSVpFKFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTU4Nyw3ICsxOTM0LDcgQEAKICAgICBQeV9UUkFTSENBTl9TQUZFX0JFR0lOKG1wKQogICAgIGlmICh2YWx1ZXMgIT0gTlVMTCkgewogICAgICAgICBpZiAodmFsdWVzICE9IGVtcHR5X3ZhbHVlcykgewotICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJlZV92YWx1ZXModmFsdWVzKTsKQEAgLTE2OTksOCArMjA0Niw4IEBACiBkaWN0X3N1YnNjcmlwdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5T2JqZWN0ICp2OworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMTcwOSwxMSArMjA1NiwxMCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHYgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChtcCkpIHsKICAgICAgICAgICAgIC8qIExvb2sgdXAgX19taXNzaW5nX18gbWV0aG9kIGlmIHdlJ3JlIGEgc3ViY2xhc3MuICovCiAgICAgICAgICAgICBQeU9iamVjdCAqbWlzc2luZywgKnJlczsKQEAgLTE3MzEsOCArMjA3Nyw4IEBACiAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYodik7CisgICAgdiA9ICp2YWx1ZV9hZGRyOworICAgIFB5X0lOQ1JFRih2KTsKICAgICByZXR1cm4gdjsKIH0KIApAQCAtMTc3Miw4ICsyMTE4LDggQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBlcCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKQEAgLTE4MDAsNiArMjE0Niw3IEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlfc3NpemVfdCBpLCBqOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeV9zc2l6ZV90IHNpemUsIG4sIG9mZnNldDsKICAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIApAQCAtMTgxNSwxMyArMjE2MiwxNCBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIHNpemUgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlOworICAgICAgICB2YWx1ZV9wdHIgPSAmZXBbMF0ubWVfdmFsdWU7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgfQogICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CkBAIC0xODcyLDggKzIyMjAsOCBAQAogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KICAgICAvKiBOb3RoaW5nIHdlIGRvIGJlbG93IG1ha2VzIGFueSBmdW5jdGlvbiBjYWxscy4gKi8KLSAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzOwotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIHNpemUgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwpAQCAtMTkxNyw3ICsyMjY1LDggQEAKIH0KIAogc3RhdGljIGludAotZGljdF91cGRhdGVfY29tbW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsIGNoYXIgKm1ldGhuYW1lKQorZGljdF91cGRhdGVfY29tbW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG5hbWUpCiB7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAgICAgaW50IHJlc3VsdCA9IDA7CkBAIC0yMDE5LDYgKzIzNjgsNyBAQAogICAgIH0KIAogICAgIGkgPSAwOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koKFB5RGljdE9iamVjdCAqKWQpKTsKICAgICBnb3RvIFJldHVybjsKIEZhaWw6CiAgICAgUHlfWERFQ1JFRihpdGVtKTsKQEAgLTIwMjksMTggKzIzNzksMTQgQEAKICAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChpLCBQeV9zc2l6ZV90LCBpbnQpOwogfQogCi1pbnQKLVB5RGljdF9VcGRhdGUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQotewotICAgIHJldHVybiBQeURpY3RfTWVyZ2UoYSwgYiwgMSk7Ci19Ci0KLWludAotUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQorc3RhdGljIGludAorZGljdF9tZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wLCAqb3RoZXI7CiAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgIFB5RGljdEtleUVudHJ5ICplbnRyeTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnksICplcDA7CisKKyAgICBhc3NlcnQoMCA8PSBvdmVycmlkZSAmJiBvdmVycmlkZSA8PSAyKTsKIAogICAgIC8qIFdlIGFjY2VwdCBmb3IgdGhlIGFyZ3VtZW50IGVpdGhlciBhIGNvbmNyZXRlIGRpY3Rpb25hcnkgb2JqZWN0LAogICAgICAqIG9yIGFuIGFic3RyYWN0ICJtYXBwaW5nIiBvYmplY3QuICBGb3IgdGhlIGZvcm1lciwgd2UgY2FuIGRvCkBAIC0yMDY3LDEzICsyNDEzLDE2IEBACiAgICAgICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBpdGVtcy4gIEV4cGVjdAogICAgICAgICAgKiB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gKG9yIGZldykgb3ZlcmxhcHBpbmcga2V5cy4KICAgICAgICAgICovCi0gICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlICogMyA8IG90aGVyLT5tYV91c2VkICogMikKLSAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCAobXAtPm1hX3VzZWQgKyBvdGhlci0+bWFfdXNlZCkqMikgIT0gMCkKKyAgICAgICAgaWYgKFVTQUJMRV9GUkFDVElPTihtcC0+bWFfa2V5cy0+ZGtfc2l6ZSkgPCBvdGhlci0+bWFfdXNlZCkgeworICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIEVTVElNQVRFX1NJWkUobXAtPm1hX3VzZWQgKyBvdGhlci0+bWFfdXNlZCkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG90aGVyLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMob3RoZXItPm1hX2tleXMpOworICAgICAgICBmb3IgKGkgPSAwLCBuID0gb3RoZXItPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICAgICAgICAgIGVudHJ5ID0gJm90aGVyLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldOworICAgICAgICAgICAgZW50cnkgPSAmZXAwW2ldOwogICAgICAgICAgICAga2V5ID0gZW50cnktPm1lX2tleTsKICAgICAgICAgICAgIGhhc2ggPSBlbnRyeS0+bWVfaGFzaDsKICAgICAgICAgICAgIGlmIChvdGhlci0+bWFfdmFsdWVzKQpAQCAtMjA4NSwxNCArMjQzNCwyMCBAQAogICAgICAgICAgICAgICAgIGludCBlcnIgPSAwOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlIHx8IFB5RGljdF9HZXRJdGVtKGEsIGtleSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBpZiAob3ZlcnJpZGUgPT0gMSB8fCBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKGEsIGtleSwgaGFzaCkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZXJyID0gaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3ZlcnJpZGUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICAgICAgICAgIGlmIChuICE9IERLX1NJWkUob3RoZXItPm1hX2tleXMpKSB7CisgICAgICAgICAgICAgICAgaWYgKG4gIT0gb3RoZXItPm1hX2tleXMtPmRrX25lbnRyaWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdCBtdXRhdGVkIGR1cmluZyB1cGRhdGUiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjEyMSw3ICsyNDc2LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgZm9yIChrZXkgPSBQeUl0ZXJfTmV4dChpdGVyKTsga2V5OyBrZXkgPSBQeUl0ZXJfTmV4dChpdGVyKSkgewotICAgICAgICAgICAgaWYgKCFvdmVycmlkZSAmJiBQeURpY3RfR2V0SXRlbShhLCBrZXkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChvdmVycmlkZSAhPSAxICYmIFB5RGljdF9HZXRJdGVtKGEsIGtleSkgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMjE0NCw5ICsyNTA1LDI5IEBACiAgICAgICAgICAgICAvKiBJdGVyYXRvciBjb21wbGV0ZWQsIHZpYSBlcnJvciAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KChQeURpY3RPYmplY3QgKilhKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludAorUHlEaWN0X1VwZGF0ZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIpCit7CisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgMSk7Cit9CisKK2ludAorUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQoreworICAgIC8qIFhYWCBEZXByZWNhdGUgb3ZlcnJpZGUgbm90IGluICgwLCAxKS4gKi8KKyAgICByZXR1cm4gZGljdF9tZXJnZShhLCBiLCBvdmVycmlkZSAhPSAwKTsKK30KKworaW50CitfUHlEaWN0X01lcmdlRXgoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCit7CisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgb3ZlcnJpZGUpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9jb3B5KFB5RGljdE9iamVjdCAqbXApCiB7CkBAIC0yMTY3LDcgKzI1NDgsOSBAQAogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW87CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKICAgICAgICAgUHlEaWN0T2JqZWN0ICpzcGxpdF9jb3B5OwotICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlcyA9IG5ld192YWx1ZXMoREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlczsKKyAgICAgICAgbmV3dmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKG5ld3ZhbHVlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHNwbGl0X2NvcHkgPSBQeU9iamVjdF9HQ19OZXcoUHlEaWN0T2JqZWN0LCAmUHlEaWN0X1R5cGUpOwpAQCAtMjE3OSw3ICsyNTYyLDcgQEAKICAgICAgICAgc3BsaXRfY29weS0+bWFfa2V5cyA9IG1wLT5tYV9rZXlzOwogICAgICAgICBzcGxpdF9jb3B5LT5tYV91c2VkID0gbXAtPm1hX3VzZWQ7CiAgICAgICAgIERLX0lOQ1JFRihtcC0+bWFfa2V5cyk7Ci0gICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwLCBuID0gc2l6ZTsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXTsKICAgICAgICAgICAgIFB5X1hJTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgc3BsaXRfY29weS0+bWFfdmFsdWVzW2ldID0gdmFsdWU7CkBAIC0yMjUwLDggKzI2MzMsOCBAQAogICAgICAgICAvKiBjYW4ndCBiZSBlcXVhbCBpZiAjIG9mIGVudHJpZXMgZGlmZmVyICovCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIFNhbWUgIyBvZiBlbnRyaWVzIC0tIGNoZWNrIGFsbCBvZiAnZW0uICBFeGl0IGVhcmx5IG9uIGFueSBkaWZmLiAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBES19TSVpFKGEtPm1hX2tleXMpOyBpKyspIHsKLSAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJmEtPm1hX2tleXMtPmRrX2VudHJpZXNbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGEtPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJkRLX0VOVFJJRVMoYS0+bWFfa2V5cylbaV07CiAgICAgICAgIFB5T2JqZWN0ICphdmFsOwogICAgICAgICBpZiAoYS0+bWFfdmFsdWVzKQogICAgICAgICAgICAgYXZhbCA9IGEtPm1hX3ZhbHVlc1tpXTsKQEAgLTIyNjgsNyArMjY1MSw3IEBACiAgICAgICAgICAgICAvKiBkaXR0byBmb3Iga2V5ICovCiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgIC8qIHJldXNlIHRoZSBrbm93biBoYXNoIHZhbHVlICovCi0gICAgICAgICAgICBpZiAoKGItPm1hX2tleXMtPmRrX2xvb2t1cCkoYiwga2V5LCBlcC0+bWVfaGFzaCwgJnZhZGRyKSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKChiLT5tYV9rZXlzLT5ka19sb29rdXApKGIsIGtleSwgZXAtPm1lX2hhc2gsICZ2YWRkciwgTlVMTCkgPCAwKQogICAgICAgICAgICAgICAgIGJ2YWwgPSBOVUxMOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJ2YWwgPSAqdmFkZHI7CkBAIC0yMzI2LDcgKzI3MDksNyBAQAogewogICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAgPSBzZWxmOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMjMzNSwxMCArMjcxOCwxMiBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCp2YWx1ZV9hZGRyICE9IE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICBQeV9SRVRVUk5fVFJVRTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIzNDgsNyArMjczMyw3IEBACiAgICAgUHlPYmplY3QgKmZhaWxvYmogPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImdldCIsIDEsIDIsICZrZXksICZmYWlsb2JqKSkKQEAgLTIzNjAsMTIgKzI3NDUsMTMgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHZhbCA9PSBOVUxMKQorICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpCiAgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgZWxzZQorICAgICAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICBQeV9JTkNSRUYodmFsKTsKICAgICByZXR1cm4gdmFsOwogfQpAQCAtMjM3Niw2ICsyNzYyLDcgQEAKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCkBAIC0yMzg5LDI2ICsyNzc2LDQwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAodmFsID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CiAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKICAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLwotICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOwogICAgICAgICB9CisgICAgICAgIGl4ID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdG9iaik7CiAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBkZWZhdWx0b2JqKTsKKyAgICAgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBpeCk7CisgICAgICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgICAgICAqdmFsdWVfYWRkciA9IGRlZmF1bHRvYmo7Ci0gICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgICAgICBtcC0+bWFfdmFsdWVzW2l4XSA9IHZhbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbDsKKyAgICAgICAgfQogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcysrOwogICAgICAgICBtcC0+bWFfdXNlZCsrOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICB9CiAgICAgcmV0dXJuIHZhbDsKIH0KQEAgLTI0NDIsMTcgKzI4NDMsMTYgQEAKICAgICBpZighUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvcCIsIDEsIDIsICZrZXksICZkZWZsdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIF9QeURpY3RfUG9wKG1wLCBrZXksIGRlZmx0KTsKKyAgICByZXR1cm4gX1B5RGljdF9Qb3AoKFB5T2JqZWN0KiltcCwga2V5LCBkZWZsdCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3BvcGl0ZW0oUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9oYXNoX3QgaSA9IDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwLCAqZXA7CiAgICAgUHlPYmplY3QgKnJlczsKIAotCiAgICAgLyogQWxsb2NhdGUgdGhlIHJlc3VsdCB0dXBsZSBiZWZvcmUgY2hlY2tpbmcgdGhlIHNpemUuICBCZWxpZXZlIGl0CiAgICAgICogb3Igbm90LCB0aGlzIGFsbG9jYXRpb24gY291bGQgdHJpZ2dlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGljaAogICAgICAqIGNvdWxkIGVtcHR5IHRoZSBkaWN0LCBzbyBpZiB3ZSBjaGVja2VkIHRoZSBzaXplIGZpcnN0IGFuZCB0aGF0CkBAIC0yNDc5LDYxICsyODc5LDU4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgIC8qIFNldCBlcCB0byAidGhlIGZpcnN0IiBkaWN0IGVudHJ5IHdpdGggYSB2YWx1ZS4gIFdlIGFidXNlIHRoZSBoYXNoCi0gICAgICogZmllbGQgb2Ygc2xvdCAwIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyOgotICAgICAqIElmIHNsb3QgMCBoYXMgYSB2YWx1ZSwgdXNlIHNsb3QgMC4KLSAgICAgKiBFbHNlIHNsb3QgMCBpcyBiZWluZyB1c2VkIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyLAotICAgICAqIGFuZCB3ZSB1c2UgaXRzIGhhc2ggdmFsdWUgYXMgdGhlIGZpcnN0IGluZGV4IHRvIGxvb2suCi0gICAgICovCi0gICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgICAgICBpID0gZXAtPm1lX2hhc2g7Ci0gICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKLSAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKLSAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCi0gICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IG1hc2sgfHwgaSA8IDEpCi0gICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0pLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgICAgICAgICAgaSA9IDE7Ci0gICAgICAgIH0KKworICAgIC8qIFBvcCBsYXN0IGl0ZW0gKi8KKyAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBpID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzIC0gMTsKKyAgICB3aGlsZSAoaSA+PSAwICYmIGVwMFtpXS5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIGktLTsKICAgICB9CisgICAgYXNzZXJ0KGkgPj0gMCk7CisKKyAgICBlcCA9ICZlcDBbaV07CisgICAgaiA9IGxvb2tkaWN0X2luZGV4KG1wLT5tYV9rZXlzLCBlcC0+bWVfaGFzaCwgaSk7CisgICAgYXNzZXJ0KGogPj0gMCk7CisgICAgYXNzZXJ0KGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaikgPT0gaSk7CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBqLCBES0lYX0RVTU1ZKTsKKwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAwLCBlcC0+bWVfa2V5KTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgZXAtPm1lX3ZhbHVlKTsKLSAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKICAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgIC8qIFdlIGNhbid0IGRrX3VzYWJsZSsrIHNpbmNlIHRoZXJlIGlzIERLSVhfRFVNTVkgaW4gaW5kaWNlcyAqLworICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyA9IGk7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKIGRpY3RfdHJhdmVyc2UoUHlPYmplY3QgKm9wLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShtcC0+bWFfa2V5cyk7IGkrKykgewotICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSBES19FTlRSSUVTKGtleXMpOworICAgIFB5X3NzaXplX3QgaSwgbiA9IGtleXMtPmRrX25lbnRyaWVzOworCisgICAgaWYgKGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQoZW50cmllc1tpXS5tZV92YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfVklTSVQoZW50cmllc1tpXS5tZV9rZXkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV92YWx1ZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfdmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjU1MiwyMyArMjk0OSwzMSBAQAogUHlfc3NpemVfdAogX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9zc2l6ZV90IHNpemUsIHJlczsKKyAgICBQeV9zc2l6ZV90IHNpemUsIHVzYWJsZSwgcmVzOwogCiAgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIHVzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKKwogICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUobXApKTsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykKLSAgICAgICAgcmVzICs9IHNpemUgKiBzaXplb2YoUHlPYmplY3QqKTsKKyAgICAgICAgcmVzICs9IHVzYWJsZSAqIHNpemVvZihQeU9iamVjdCopOwogICAgIC8qIElmIHRoZSBkaWN0aW9uYXJ5IGlzIHNwbGl0LCB0aGUga2V5cyBwb3J0aW9uIGlzIGFjY291bnRlZC1mb3IKICAgICAgICBpbiB0aGUgdHlwZSBvYmplY3QuICovCiAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19yZWZjbnQgPT0gMSkKLSAgICAgICAgcmVzICs9IHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChzaXplLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICAgICAgcmVzICs9IChzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICAgICAgKyBES19JWFNJWkUobXAtPm1hX2tleXMpICogc2l6ZQorICAgICAgICAgICAgICAgICsgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogUHlfc3NpemVfdAogX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKQogewotICAgIHJldHVybiBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoREtfU0laRShrZXlzKS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgcmV0dXJuIChzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgIC0gUHlfTUVNQkVSX1NJWkUoUHlEaWN0S2V5c09iamVjdCwgZGtfaW5kaWNlcykKKyAgICAgICAgICAgICsgREtfSVhTSVpFKGtleXMpICogREtfU0laRShrZXlzKQorICAgICAgICAgICAgKyBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShrZXlzKSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI2NTUsOCArMzA2MCw4IEBACiBQeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CkBAIC0yNjY1LDggKzMwNzAsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9Db250YWlucyB1c2VkIHdoZW4gdGhlIGhhc2ggdmFsdWUgaXMgYWxyZWFkeSBrbm93biAqLwpAQCAtMjY3NCwxMSArMzA4MSwxMyBAQAogX1B5RGljdF9Db250YWlucyhQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICBQeV9zc2l6ZV90IGl4OwogCi0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gKGl4ICE9IERLSVhfRU1QVFkgJiYgKnZhbHVlX2FkZHIgIT0gTlVMTCk7CiB9CiAKIC8qIEhhY2sgdG8gaW1wbGVtZW50ICJrZXkgaW4gZGljdCIgKi8KQEAgLTI3MTIsMTEgKzMxMjEsMTMgQEAKICAgICAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZCk7CiAKICAgICBkLT5tYV91c2VkID0gMDsKLSAgICBkLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBkLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGQtPm1hX2tleXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KGQpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjkzNywxMyArMzM0OCwxMyBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKK3N0YXRpYyBQeU9iamVjdCoKK2RpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeURpY3RLZXlzT2JqZWN0ICprOwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwotICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yOTU3LDI3ICszMzY4LDMwIEBACiAgICAgfQogCiAgICAgaSA9IGRpLT5kaV9wb3M7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICBnb3RvIGZhaWw7CiAgICAgayA9IGQtPm1hX2tleXM7CisgICAgbiA9IGstPmRrX25lbnRyaWVzOwogICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhbHVlX3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGtleSA9IERLX0VOVFJJRVMoaylbaV0ubWVfa2V5OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmstPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7Ci0gICAgfQotICAgIG1hc2sgPSBES19TSVpFKGspLTE7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZW50cnlfcHRyID0gJkRLX0VOVFJJRVMoaylbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiBlbnRyeV9wdHItPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVudHJ5X3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGtleSA9IGVudHJ5X3B0ci0+bWVfa2V5OwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOwogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBrLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICByZXR1cm4ga2V5OwogCkBAIC0zMDIwLDEyICszNDM0LDEyIEBACiAgICAgMCwKIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCitzdGF0aWMgUHlPYmplY3QgKgorZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzAzOSwyNiArMzQ1MywyOSBAQAogICAgIH0KIAogICAgIGkgPSBkaS0+ZGlfcG9zOwotICAgIG1hc2sgPSBES19TSVpFKGQtPm1hX2tleXMpLTE7Ci0gICAgaWYgKGkgPCAwIHx8IGkgPiBtYXNrKQotICAgICAgICBnb3RvIGZhaWw7CisgICAgbiA9IGQtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhbHVlX3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewotICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwotICAgICAgICBpKys7Ci0gICAgICAgIGlmIChpID4gbWFzaykKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQogICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB2YWx1ZSA9IGVudHJ5X3B0ci0+bWVfdmFsdWU7CiAgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CiAgICAgZGktPmxlbi0tOwotICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIApAQCAtMzA4OSw3ICszNTA2LDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylkaWN0aXRlcl90cmF2ZXJzZSwgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTMxMDEsMTIgKzM1MTgsMTIgQEAKICAgICAwLAogfTsKIAotc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGl0ZW0oZGljdGl0ZXJvYmplY3QgKmRpKQorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX2l0ZXJuZXh0aXRlbShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqcmVzdWx0ID0gZGktPmRpX3Jlc3VsdDsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMxMjAsMzcgKzM1MzcsNDEgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOworICAgIG4gPSBkLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldLm1lX2tleTsKKyAgICAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7Ci0gICAgfQotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBlbnRyeV9wdHItPm1lX2tleTsKKyAgICAgICAgdmFsdWUgPSBlbnRyeV9wdHItPm1lX3ZhbHVlOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOwotCisgICAgZGktPmxlbi0tOwogICAgIGlmIChyZXN1bHQtPm9iX3JlZmNudCA9PSAxKSB7CiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwogICAgICAgICBQeV9ERUNSRUYoUHlUdXBsZV9HRVRfSVRFTShyZXN1bHQsIDApKTsKICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAxKSk7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KDIpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZGktPmxlbi0tOwotICAgIGtleSA9IGQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwotICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLwpAQCAtMzc4OSw3ICs0MjEwLDcgQEAKIFB5RGljdEtleXNPYmplY3QgKgogX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3Modm9pZCkKIHsKLSAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTM4MjUsNyArNDI0Niw3IEBACiAKIGludAogX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5VHlwZU9iamVjdCAqdHAsIFB5T2JqZWN0ICoqZGljdHB0ciwKLSAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgaW50IHJlczsKQEAgLTM4NTQsNyArNDI3NSw4IEBACiAgICAgICAgICAgICAgICAgLyogRWl0aGVyIHVwZGF0ZSB0cC0+aHRfY2FjaGVkX2tleXMgb3IgZGVsZXRlIGl0ICovCiAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZC0+ZGtfcmVmY250ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gbWFrZV9rZXlzX3NoYXJlZChkaWN0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CkBAIC0zODg0LDUwICs0MzA2LDMgQEAKIHsKICAgICBES19ERUNSRUYoa2V5cyk7CiB9Ci0KLQotLyogQVJHU1VTRUQgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1kdW1teV9yZXByKFB5T2JqZWN0ICpvcCkKLXsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxkdW1teSBrZXk+Iik7Ci19Ci0KLS8qIEFSR1VTRUQgKi8KLXN0YXRpYyB2b2lkCi1kdW1teV9kZWFsbG9jKFB5T2JqZWN0KiBpZ25vcmUpCi17Ci0gICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgZ2V0IGNhbGxlZCwgYnV0IHdlIGFsc28gZG9uJ3Qgd2FudCB0byBTRUdWIGlmCi0gICAgICogd2UgYWNjaWRlbnRhbGx5IGRlY3JlZiBkdW1teS1rZXkgb3V0IG9mIGV4aXN0ZW5jZS4KLSAgICAgKi8KLSAgICBQeV9GYXRhbEVycm9yKCJkZWFsbG9jYXRpbmcgPGR1bW15IGtleT4iKTsKLX0KLQotc3RhdGljIFB5VHlwZU9iamVjdCBQeURpY3REdW1teV9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCi0gICAgIjxkdW1teSBrZXk+IHR5cGUiLAotICAgIDAsCi0gICAgMCwKLSAgICBkdW1teV9kZWFsbG9jLCAgICAgIC8qdHBfZGVhbGxvYyovIC8qbmV2ZXIgY2FsbGVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICBkdW1teV9yZXByLCAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCi19OwotCi1zdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdCA9IHsKLSAgX1B5T2JqZWN0X0VYVFJBX0lOSVQKLSAgMiwgJlB5RGljdER1bW15X1R5cGUKLX07Ci0KZGlmZiAtLWdpdCBhL09iamVjdHMvZW51bW9iamVjdC5jIGIvT2JqZWN0cy9lbnVtb2JqZWN0LmMKaW5kZXggYzQ1OGNmZS4uZGFlMTY2ZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9lbnVtb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9lbnVtb2JqZWN0LmMKQEAgLTI1MCw2ICsyNTAsMTMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXZlcnNlZF9tZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoc2VxLCAmUHlJZF9fX3JldmVyc2VkX18pOworICAgIGlmIChyZXZlcnNlZF9tZXRoID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfREVDUkVGKHJldmVyc2VkX21ldGgpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgcmV2ZXJzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHJldmVyc2VkX21ldGggIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhyZXZlcnNlZF9tZXRoLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHJldmVyc2VkX21ldGgpOwpAQCAtMjU5LDggKzI2Niw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCB0byByZXZlcnNlZCgpIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgcmV2ZXJzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZXhjZXB0aW9ucy5jIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKaW5kZXggOTgxZWFkMi4uZjYzZjA2YSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9leGNlcHRpb25zLmMKKysrIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKQEAgLTU5LDE1ICs1OSwxMSBAQAogc3RhdGljIGludAogQmFzZUV4Y2VwdGlvbl9pbml0KFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIGt3ZHMpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB0bXAgPSBzZWxmLT5hcmdzOwotICAgIHNlbGYtPmFyZ3MgPSBhcmdzOwotICAgIFB5X0lOQ1JFRihzZWxmLT5hcmdzKTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgIFB5X1hTRVRSRUYoc2VsZi0+YXJncywgYXJncyk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTIzNCw3ICsyMzAsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgUHlfWElOQ1JFRih0Yik7CisgICAgUHlfSU5DUkVGKHRiKTsKICAgICBQeV9YU0VUUkVGKHNlbGYtPnRyYWNlYmFjaywgdGIpOwogICAgIHJldHVybiAwOwogfQpAQCAtMzI4LDExICszMjQsMTAgQEAKIAogLyogU3RlYWxzIGEgcmVmZXJlbmNlIHRvIGNhdXNlICovCiB2b2lkCi1QeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNhdXNlKSB7Ci0gICAgUHlPYmplY3QgKm9sZF9jYXVzZSA9ICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlOwotICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlID0gY2F1c2U7CitQeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNhdXNlKQorewogICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPnN1cHByZXNzX2NvbnRleHQgPSAxOwotICAgIFB5X1hERUNSRUYob2xkX2NhdXNlKTsKKyAgICBQeV9YU0VUUkVGKCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlLCBjYXVzZSk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTM0NCwxMCArMzM5LDkgQEAKIAogLyogU3RlYWxzIGEgcmVmZXJlbmNlIHRvIGNvbnRleHQgKi8KIHZvaWQKLVB5RXhjZXB0aW9uX1NldENvbnRleHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjb250ZXh0KSB7Ci0gICAgUHlPYmplY3QgKm9sZF9jb250ZXh0ID0gKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dDsKLSAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jb250ZXh0ID0gY29udGV4dDsKLSAgICBQeV9YREVDUkVGKG9sZF9jb250ZXh0KTsKK1B5RXhjZXB0aW9uX1NldENvbnRleHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5X1hTRVRSRUYoKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dCwgY29udGV4dCk7CiB9CiAKIApAQCAtNzE0LDYgKzcwOCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZS4iKTsKIAogLyoKKyAqICAgIE1vZHVsZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBJbXBvcnRFcnJvcgorICovCisKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19JbXBvcnRFcnJvciwgTW9kdWxlTm90Rm91bmRFcnJvciwgSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSBub3QgZm91bmQuIik7CisKKy8qCiAgKiAgICBPU0Vycm9yIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KIApAQCAtOTkzLDcgKzk5NCw3IEBACiAgICAgcmV0dXJuIDA7CiAKIGVycm9yOgotICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIHJldHVybiAtMTsKIH0KIApAQCAtMTA3Myw4ICsxMDc0LDcgQEAKICAgICB9CiAgICAgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vID8gc2VsZi0+bXllcnJubzogUHlfTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubywgc2VsZi0+c3RyZXJyb3IpOwogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3N0cigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7CiB9CiAKQEAgLTI0NzgsNiArMjQ3OCw3IEBACiAgICAgUFJFX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQUkVfSU5JVChLZXlib2FyZEludGVycnVwdCkKICAgICBQUkVfSU5JVChJbXBvcnRFcnJvcikKKyAgICBQUkVfSU5JVChNb2R1bGVOb3RGb3VuZEVycm9yKQogICAgIFBSRV9JTklUKE9TRXJyb3IpCiAgICAgUFJFX0lOSVQoRU9GRXJyb3IpCiAgICAgUFJFX0lOSVQoUnVudGltZUVycm9yKQpAQCAtMjU1MCw2ICsyNTUxLDcgQEAKICAgICBQT1NUX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQT1NUX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUE9TVF9JTklUKEltcG9ydEVycm9yKQorICAgIFBPU1RfSU5JVChNb2R1bGVOb3RGb3VuZEVycm9yKQogICAgIFBPU1RfSU5JVChPU0Vycm9yKQogICAgIElOSVRfQUxJQVMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKICAgICBJTklUX0FMSUFTKElPRXJyb3IsIE9TRXJyb3IpCkBAIC0yNjEyLDcgKzI2MTQsOSBAQAogICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVXT1VMREJMT0NLKTsKICAgICBQT1NUX0lOSVQoQnJva2VuUGlwZUVycm9yKTsKICAgICBBRERfRVJSTk8oQnJva2VuUGlwZUVycm9yLCBFUElQRSk7CisjaWZkZWYgRVNIVVRET1dOCiAgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVNIVVRET1dOKTsKKyNlbmRpZgogICAgIFBPU1RfSU5JVChDaGlsZFByb2Nlc3NFcnJvcik7CiAgICAgQUREX0VSUk5PKENoaWxkUHJvY2Vzc0Vycm9yLCBFQ0hJTEQpOwogICAgIFBPU1RfSU5JVChDb25uZWN0aW9uQWJvcnRlZEVycm9yKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggMjM0ZDA3ZS4uZjQ0MjQxOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTEyNyw3ICsxMjcsNyBAQAogaW50CiBQeUZpbGVfV3JpdGVPYmplY3QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpmLCBpbnQgZmxhZ3MpCiB7Ci0gICAgUHlPYmplY3QgKndyaXRlciwgKnZhbHVlLCAqYXJncywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqd3JpdGVyLCAqdmFsdWUsICpyZXN1bHQ7CiAgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogCiAgICAgaWYgKGYgPT0gTlVMTCkgewpAQCAtMTQ2LDE0ICsxNDYsNyBAQAogICAgICAgICBQeV9ERUNSRUYod3JpdGVyKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRih3cml0ZXIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHdyaXRlciwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMSh3cml0ZXIsIHZhbHVlKTsKICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIFB5X0RFQ1JFRih3cml0ZXIpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL09iamVjdHMvZmxvYXRvYmplY3QuYyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwppbmRleCBkOTJiZWMzLi4wZjM3NjE4IDEwMDY0NAotLS0gYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCkBAIC0xMjQsMTEgKzEyNCw0MyBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKikgb3A7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitmbG9hdF9mcm9tX3N0cmluZ19pbm5lcihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbiwgdm9pZCAqb2JqKQoreworICAgIGRvdWJsZSB4OworICAgIGNvbnN0IGNoYXIgKmVuZDsKKyAgICBjb25zdCBjaGFyICpsYXN0ID0gcyArIGxlbjsKKyAgICAvKiBzdHJpcCBzcGFjZSAqLworICAgIHdoaWxlIChzIDwgbGFzdCAmJiBQeV9JU1NQQUNFKCpzKSkgeworICAgICAgICBzKys7CisgICAgfQorCisgICAgd2hpbGUgKHMgPCBsYXN0IC0gMSAmJiBQeV9JU1NQQUNFKGxhc3RbLTFdKSkgeworICAgICAgICBsYXN0LS07CisgICAgfQorCisgICAgLyogV2UgZG9uJ3QgY2FyZSBhYm91dCBvdmVyZmxvdyBvciB1bmRlcmZsb3cuICBJZiB0aGUgcGxhdGZvcm0KKyAgICAgKiBzdXBwb3J0cyB0aGVtLCBpbmZpbml0aWVzIGFuZCBzaWduZWQgemVyb2VzIChvbiB1bmRlcmZsb3cpIGFyZQorICAgICAqIGZpbmUuICovCisgICAgeCA9IFB5T1Nfc3RyaW5nX3RvX2RvdWJsZShzLCAoY2hhciAqKikmZW5kLCBOVUxMKTsKKyAgICBpZiAoZW5kICE9IGxhc3QpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIGZsb2F0OiAiCisgICAgICAgICAgICAgICAgICAgICAiJVIiLCBvYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOworICAgIH0KK30KKwogUHlPYmplY3QgKgogUHlGbG9hdF9Gcm9tU3RyaW5nKFB5T2JqZWN0ICp2KQogewotICAgIGNvbnN0IGNoYXIgKnMsICpsYXN0LCAqZW5kOwotICAgIGRvdWJsZSB4OworICAgIGNvbnN0IGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnNfYnVmZmVyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKQEAgLTE2OSwyNyArMjAxLDggQEAKICAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbGFzdCA9IHMgKyBsZW47Ci0gICAgLyogc3RyaXAgc3BhY2UgKi8KLSAgICB3aGlsZSAocyA8IGxhc3QgJiYgUHlfSVNTUEFDRSgqcykpCi0gICAgICAgIHMrKzsKLSAgICB3aGlsZSAocyA8IGxhc3QgLSAxICYmIFB5X0lTU1BBQ0UobGFzdFstMV0pKQotICAgICAgICBsYXN0LS07Ci0gICAgLyogV2UgZG9uJ3QgY2FyZSBhYm91dCBvdmVyZmxvdyBvciB1bmRlcmZsb3cuICBJZiB0aGUgcGxhdGZvcm0KLSAgICAgKiBzdXBwb3J0cyB0aGVtLCBpbmZpbml0aWVzIGFuZCBzaWduZWQgemVyb2VzIChvbiB1bmRlcmZsb3cpIGFyZQotICAgICAqIGZpbmUuICovCi0gICAgeCA9IFB5T1Nfc3RyaW5nX3RvX2RvdWJsZShzLCAoY2hhciAqKikmZW5kLCBOVUxMKTsKLSAgICBpZiAoZW5kICE9IGxhc3QpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIGZsb2F0OiAiCi0gICAgICAgICAgICAgICAgICAgICAiJVIiLCB2KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7Ci0KKyAgICByZXN1bHQgPSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKHMsIGxlbiwgImZsb2F0IiwgdiwgdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0X2Zyb21fc3RyaW5nX2lubmVyKTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICBQeV9YREVDUkVGKHNfYnVmZmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjE1LDM1ICsyMjgsNDkgQEAKIFB5RmxvYXRfQXNEb3VibGUoUHlPYmplY3QgKm9wKQogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbmI7Ci0gICAgUHlGbG9hdE9iamVjdCAqZm87CisgICAgUHlPYmplY3QgKnJlczsKICAgICBkb3VibGUgdmFsOwogCi0gICAgaWYgKG9wICYmIFB5RmxvYXRfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gUHlGbG9hdF9BU19ET1VCTEUoKFB5RmxvYXRPYmplY3QqKSBvcCk7Ci0KICAgICBpZiAob3AgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKChuYiA9IFB5X1RZUEUob3ApLT50cF9hc19udW1iZXIpID09IE5VTEwgfHwgbmItPm5iX2Zsb2F0ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImEgZmxvYXQgaXMgcmVxdWlyZWQiKTsKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvcCkpIHsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfQVNfRE9VQkxFKG9wKTsKKyAgICB9CisKKyAgICBuYiA9IFB5X1RZUEUob3ApLT50cF9hc19udW1iZXI7CisgICAgaWYgKG5iID09IE5VTEwgfHwgbmItPm5iX2Zsb2F0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIm11c3QgYmUgcmVhbCBudW1iZXIsIG5vdCAlLjUwcyIsCisgICAgICAgICAgICAgICAgICAgICBvcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBmbyA9IChQeUZsb2F0T2JqZWN0KikgKCpuYi0+bmJfZmxvYXQpIChvcCk7Ci0gICAgaWYgKGZvID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoIVB5RmxvYXRfQ2hlY2soZm8pKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmbyk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibmJfZmxvYXQgc2hvdWxkIHJldHVybiBmbG9hdCBvYmplY3QiKTsKKyAgICByZXMgPSAoKm5iLT5uYl9mbG9hdCkgKG9wKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoIVB5RmxvYXRfQ2hlY2tFeGFjdChyZXMpKSB7CisgICAgICAgIGlmICghUHlGbG9hdF9DaGVjayhyZXMpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpLiAgIgorICAgICAgICAgICAgICAgICJUaGUgYWJpbGl0eSB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQgIgorICAgICAgICAgICAgICAgICJpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uIiwKKyAgICAgICAgICAgICAgICBvcC0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB2YWwgPSBQeUZsb2F0X0FTX0RPVUJMRShmbyk7Ci0gICAgUHlfREVDUkVGKGZvKTsKLQorICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKHJlcyk7CisgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIHZhbDsKIH0KIApAQCAtMTE5NSw3ICsxMjIyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmbG9hdF9mcm9taGV4KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdF9hc19mbG9hdCwgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGRvdWJsZSB4OwogICAgIGxvbmcgZXhwLCB0b3BfZXhwLCBsc2IsIGtleV9kaWdpdDsKICAgICBjaGFyICpzLCAqY29lZmZfc3RhcnQsICpzX3N0b3JlLCAqY29lZmZfZW5kLCAqZXhwX3N0YXJ0LCAqc19lbmQ7CkBAIC0xNDEwLDExICsxNDM3LDEwIEBACiAgICAgICAgIHMrKzsKICAgICBpZiAocyAhPSBzX2VuZCkKICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICByZXN1bHRfYXNfZmxvYXQgPSBQeV9CdWlsZFZhbHVlKCIoZCkiLCBuZWdhdGUgPyAteCA6IHgpOwotICAgIGlmIChyZXN1bHRfYXNfZmxvYXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChjbHMsIHJlc3VsdF9hc19mbG9hdCk7Ci0gICAgUHlfREVDUkVGKHJlc3VsdF9hc19mbG9hdCk7CisgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKG5lZ2F0ZSA/IC14IDogeCk7CisgICAgaWYgKGNscyAhPSAoUHlPYmplY3QgKikmUHlGbG9hdF9UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoY2xzLCByZXN1bHQsIE5VTEwpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIAogICBvdmVyZmxvd19lcnJvcjoKQEAgLTE0NTEsMjkgKzE0NzcsMjMgQEAKICAgICBpbnQgZXhwb25lbnQ7CiAgICAgaW50IGk7CiAKLSAgICBQeU9iamVjdCAqcHJldjsKICAgICBQeU9iamVjdCAqcHlfZXhwb25lbnQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpudW1lcmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpkZW5vbWluYXRvciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdF9wYWlyID0gTlVMTDsKICAgICBQeU51bWJlck1ldGhvZHMgKmxvbmdfbWV0aG9kcyA9IFB5TG9uZ19UeXBlLnRwX2FzX251bWJlcjsKIAotI2RlZmluZSBJTlBMQUNFX1VQREFURShvYmosIGNhbGwpIFwKLSAgICBwcmV2ID0gb2JqOyBcCi0gICAgb2JqID0gY2FsbDsgXAotICAgIFB5X0RFQ1JFRihwcmV2KTsgXAotCiAgICAgQ09OVkVSVF9UT19ET1VCTEUodiwgc2VsZik7CiAKICAgICBpZiAoUHlfSVNfSU5GSU5JVFkoc2VsZikpIHsKLSAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBpbmZpbml0eSB0byBmbG9hdC5hc19pbnRlZ2VyX3JhdGlvLiIpOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeV9JU19OQU4oc2VsZikpIHsKLSAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBOYU4gdG8gZmxvYXQuYXNfaW50ZWdlcl9yYXRpby4iKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJhc19pbnRlZ2VyX3JhdGlvIiwgZ290byBlcnJvcik7CkBAIC0xNDg5LDI5ICsxNTA5LDMxIEBACiAgICAgICAgdG8gYmUgdHJ1bmNhdGVkIGJ5IFB5TG9uZ19Gcm9tRG91YmxlKCkuICovCiAKICAgICBudW1lcmF0b3IgPSBQeUxvbmdfRnJvbURvdWJsZShmbG9hdF9wYXJ0KTsKLSAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIGdvdG8gZXJyb3I7CisgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgIGlmIChkZW5vbWluYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHB5X2V4cG9uZW50ID0gUHlMb25nX0Zyb21Mb25nKFB5X0FCUyhleHBvbmVudCkpOworICAgIGlmIChweV9leHBvbmVudCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogZm9sZCBpbiAyKipleHBvbmVudCAqLwotICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOwotICAgIHB5X2V4cG9uZW50ID0gUHlMb25nX0Zyb21Mb25nKGxhYnMoKGxvbmcpZXhwb25lbnQpKTsKLSAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkgZ290byBlcnJvcjsKLSAgICBJTlBMQUNFX1VQREFURShweV9leHBvbmVudCwKLSAgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX2xzaGlmdChkZW5vbWluYXRvciwgcHlfZXhwb25lbnQpKTsKLSAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkgZ290byBlcnJvcjsKICAgICBpZiAoZXhwb25lbnQgPiAwKSB7Ci0gICAgICAgIElOUExBQ0VfVVBEQVRFKG51bWVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9tdWx0aXBseShudW1lcmF0b3IsIHB5X2V4cG9uZW50KSk7Ci0gICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkgZ290byBlcnJvcjsKKyAgICAgICAgUHlfU0VUUkVGKG51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbHNoaWZ0KG51bWVyYXRvciwgcHlfZXhwb25lbnQpKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkZW5vbWluYXRvcik7Ci0gICAgICAgIGRlbm9taW5hdG9yID0gcHlfZXhwb25lbnQ7Ci0gICAgICAgIHB5X2V4cG9uZW50ID0gTlVMTDsKKyAgICAgICAgUHlfU0VUUkVGKGRlbm9taW5hdG9yLAorICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9sc2hpZnQoZGVub21pbmF0b3IsIHB5X2V4cG9uZW50KSk7CisgICAgICAgIGlmIChkZW5vbWluYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICByZXN1bHRfcGFpciA9IFB5VHVwbGVfUGFjaygyLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKIAotI3VuZGVmIElOUExBQ0VfVVBEQVRFCiBlcnJvcjoKICAgICBQeV9YREVDUkVGKHB5X2V4cG9uZW50KTsKICAgICBQeV9YREVDUkVGKGRlbm9taW5hdG9yKTsKQEAgLTE5NjYsOCArMTk4OCwxMjAgQEAKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIF9QeUZsb2F0X3tQYWNrLFVucGFja317NCw4fS4gIFNlZSBmbG9hdG9iamVjdC5oLgorICogX1B5RmxvYXRfe1BhY2ssVW5wYWNrfXsyLDQsOH0uICBTZWUgZmxvYXRvYmplY3QuaC4KKyAqIFRvIG1hdGNoIHRoZSBOUFlfSEFMRl9ST1VORF9USUVTX1RPX0VWRU4gYmVoYXZpb3IgaW46CisgKiBodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvYmxvYi9tYXN0ZXIvbnVtcHkvY29yZS9zcmMvbnB5bWF0aC9oYWxmZmxvYXQuYworICogV2UgdXNlOgorICogICAgICAgYml0cyA9ICh1bnNpZ25lZCBzaG9ydClmOyAgICBOb3RlIHRoZSB0cnVuY2F0aW9uCisgKiAgICAgICBpZiAoKGYgLSBiaXRzID4gMC41KSB8fCAoZiAtIGJpdHMgPT0gMC41ICYmIGJpdHMgJSAyKSkgeworICogICAgICAgICAgIGJpdHMrKzsKKyAqICAgICAgIH0KICAqLworCitpbnQKK19QeUZsb2F0X1BhY2syKGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCit7CisgICAgdW5zaWduZWQgY2hhciBzaWduOworICAgIGludCBlOworICAgIGRvdWJsZSBmOworICAgIHVuc2lnbmVkIHNob3J0IGJpdHM7CisgICAgaW50IGluY3IgPSAxOworCisgICAgaWYgKHggPT0gMC4wKSB7CisgICAgICAgIHNpZ24gPSAoY29weXNpZ24oMS4wLCB4KSA9PSAtMS4wKTsKKyAgICAgICAgZSA9IDA7CisgICAgICAgIGJpdHMgPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9JU19JTkZJTklUWSh4KSkgeworICAgICAgICBzaWduID0gKHggPCAwLjApOworICAgICAgICBlID0gMHgxZjsKKyAgICAgICAgYml0cyA9IDA7CisgICAgfQorICAgIGVsc2UgaWYgKFB5X0lTX05BTih4KSkgeworICAgICAgICAvKiBUaGVyZSBhcmUgMjA0NiBkaXN0aW5jdCBoYWxmLXByZWNpc2lvbiBOYU5zICgxMDIyIHNpZ25hbGluZyBhbmQKKyAgICAgICAgICAgMTAyNCBxdWlldCksIGJ1dCB0aGVyZSBhcmUgb25seSB0d28gcXVpZXQgTmFOcyB0aGF0IGRvbid0IGFyaXNlIGJ5CisgICAgICAgICAgIHF1aWV0aW5nIGEgc2lnbmFsaW5nIE5hTjsgd2UgZ2V0IHRob3NlIGJ5IHNldHRpbmcgdGhlIHRvcG1vc3QgYml0CisgICAgICAgICAgIG9mIHRoZSBmcmFjdGlvbiBmaWVsZCBhbmQgY2xlYXJpbmcgYWxsIG90aGVyIGZyYWN0aW9uIGJpdHMuIFdlCisgICAgICAgICAgIGNob29zZSB0aGUgb25lIHdpdGggdGhlIGFwcHJvcHJpYXRlIHNpZ24uICovCisgICAgICAgIHNpZ24gPSAoY29weXNpZ24oMS4wLCB4KSA9PSAtMS4wKTsKKyAgICAgICAgZSA9IDB4MWY7CisgICAgICAgIGJpdHMgPSA1MTI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzaWduID0gKHggPCAwLjApOworICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgeCA9IC14OworICAgICAgICB9CisKKyAgICAgICAgZiA9IGZyZXhwKHgsICZlKTsKKyAgICAgICAgaWYgKGYgPCAwLjUgfHwgZiA+PSAxLjApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJleHAoKSByZXN1bHQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAvKiBOb3JtYWxpemUgZiB0byBiZSBpbiB0aGUgcmFuZ2UgWzEuMCwgMi4wKSAqLworICAgICAgICBmICo9IDIuMDsKKyAgICAgICAgZS0tOworCisgICAgICAgIGlmIChlID49IDE2KSB7CisgICAgICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGUgPCAtMjUpIHsKKyAgICAgICAgICAgIC8qIHx4fCA8IDIqKi0yNS4gVW5kZXJmbG93IHRvIHplcm8uICovCisgICAgICAgICAgICBmID0gMC4wOworICAgICAgICAgICAgZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZSA8IC0xNCkgeworICAgICAgICAgICAgLyogfHh8IDwgMioqLTE0LiBHcmFkdWFsIHVuZGVyZmxvdyAqLworICAgICAgICAgICAgZiA9IGxkZXhwKGYsIDE0ICsgZSk7CisgICAgICAgICAgICBlID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qIGlmICghKGUgPT0gMCAmJiBmID09IDAuMCkpICovIHsKKyAgICAgICAgICAgIGUgKz0gMTU7CisgICAgICAgICAgICBmIC09IDEuMDsgLyogR2V0IHJpZCBvZiBsZWFkaW5nIDEgKi8KKyAgICAgICAgfQorCisgICAgICAgIGYgKj0gMTAyNC4wOyAvKiAyKioxMCAqLworICAgICAgICAvKiBSb3VuZCB0byBldmVuICovCisgICAgICAgIGJpdHMgPSAodW5zaWduZWQgc2hvcnQpZjsgLyogTm90ZSB0aGUgdHJ1bmNhdGlvbiAqLworICAgICAgICBhc3NlcnQoYml0cyA8IDEwMjQpOworICAgICAgICBhc3NlcnQoZSA8IDMxKTsKKyAgICAgICAgaWYgKChmIC0gYml0cyA+IDAuNSkgfHwgKChmIC0gYml0cyA9PSAwLjUpICYmIChiaXRzICUgMiA9PSAxKSkpIHsKKyAgICAgICAgICAgICsrYml0czsKKyAgICAgICAgICAgIGlmIChiaXRzID09IDEwMjQpIHsKKyAgICAgICAgICAgICAgICAvKiBUaGUgY2FycnkgcHJvcGFnYXRlZCBvdXQgb2YgYSBzdHJpbmcgb2YgMTAgMSBiaXRzLiAqLworICAgICAgICAgICAgICAgIGJpdHMgPSAwOworICAgICAgICAgICAgICAgICsrZTsKKyAgICAgICAgICAgICAgICBpZiAoZSA9PSAzMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGJpdHMgfD0gKGUgPDwgMTApIHwgKHNpZ24gPDwgMTUpOworCisgICAgLyogV3JpdGUgb3V0IHJlc3VsdC4gKi8KKyAgICBpZiAobGUpIHsKKyAgICAgICAgcCArPSAxOworICAgICAgICBpbmNyID0gLTE7CisgICAgfQorCisgICAgLyogRmlyc3QgYnl0ZSAqLworICAgICpwID0gKHVuc2lnbmVkIGNoYXIpKChiaXRzID4+IDgpICYgMHhGRik7CisgICAgcCArPSBpbmNyOworCisgICAgLyogU2Vjb25kIGJ5dGUgKi8KKyAgICAqcCA9ICh1bnNpZ25lZCBjaGFyKShiaXRzICYgMHhGRik7CisKKyAgICByZXR1cm4gMDsKKworICBPdmVyZmxvdzoKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgImZsb2F0IHRvbyBsYXJnZSB0byBwYWNrIHdpdGggZSBmb3JtYXQiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKIGludAogX1B5RmxvYXRfUGFjazQoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKIHsKQEAgLTIyMDMsNiArMjMzNyw3NiBAQAogfQogCiBkb3VibGUKK19QeUZsb2F0X1VucGFjazIoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc2lnbjsKKyAgICBpbnQgZTsKKyAgICB1bnNpZ25lZCBpbnQgZjsKKyAgICBkb3VibGUgeDsKKyAgICBpbnQgaW5jciA9IDE7CisKKyAgICBpZiAobGUpIHsKKyAgICAgICAgcCArPSAxOworICAgICAgICBpbmNyID0gLTE7CisgICAgfQorCisgICAgLyogRmlyc3QgYnl0ZSAqLworICAgIHNpZ24gPSAoKnAgPj4gNykgJiAxOworICAgIGUgPSAoKnAgJiAweDdDKSA+PiAyOworICAgIGYgPSAoKnAgJiAweDAzKSA8PCA4OworICAgIHAgKz0gaW5jcjsKKworICAgIC8qIFNlY29uZCBieXRlICovCisgICAgZiB8PSAqcDsKKworICAgIGlmIChlID09IDB4MWYpIHsKKyNpZmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgICAgIGlmIChmID09IDApIHsKKyAgICAgICAgICAgIC8qIEluZmluaXR5ICovCisgICAgICAgICAgICByZXR1cm4gc2lnbiA/IC1QeV9IVUdFX1ZBTCA6IFB5X0hVR0VfVkFMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogTmFOICovCisjaWZkZWYgUHlfTkFOCisgICAgICAgICAgICByZXR1cm4gc2lnbiA/IC1QeV9OQU4gOiBQeV9OQU47CisjZWxzZQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgIFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbid0IHVucGFjayBJRUVFIDc1NCBOYU4gIgorICAgICAgICAgICAgICAgICJvbiBwbGF0Zm9ybSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgTmFOcyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworI2VuZGlmICAvKiAjaWZkZWYgUHlfTkFOICovCisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGlmIChmID09IDApIHsKKyAgICAgICAgICAgIC8qIEluZmluaXR5ICovCisgICAgICAgICAgICByZXR1cm4gX1B5X2RnX2luZmluaXR5KHNpZ24pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogTmFOICovCisgICAgICAgICAgICByZXR1cm4gX1B5X2RnX3N0ZG5hbihzaWduKTsKKyAgICAgICAgfQorI2VuZGlmICAvKiAjaWZkZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUiAqLworICAgIH0KKworICAgIHggPSAoZG91YmxlKWYgLyAxMDI0LjA7CisKKyAgICBpZiAoZSA9PSAwKSB7CisgICAgICAgIGUgPSAtMTQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB4ICs9IDEuMDsKKyAgICAgICAgZSAtPSAxNTsKKyAgICB9CisgICAgeCA9IGxkZXhwKHgsIGUpOworCisgICAgaWYgKHNpZ24pCisgICAgICAgIHggPSAteDsKKworICAgIHJldHVybiB4OworfQorCitkb3VibGUKIF9QeUZsb2F0X1VucGFjazQoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQogewogICAgIGlmIChmbG9hdF9mb3JtYXQgPT0gdW5rbm93bl9mb3JtYXQpIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvZnJhbWVvYmplY3QuYyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwppbmRleCA5YWFkZDYxLi42MmY5ZjM0IDEwMDY0NAotLS0gYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCkBAIC0xMzcsNyArMTM3LDcgQEAKICAgICAgICAgbmV3X2xhc3RpID0gLTE7CiAgICAgICAgIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbG5vdGFiX2xlbjsgb2Zmc2V0ICs9IDIpIHsKICAgICAgICAgICAgIGFkZHIgKz0gbG5vdGFiW29mZnNldF07Ci0gICAgICAgICAgICBsaW5lICs9IGxub3RhYltvZmZzZXQrMV07CisgICAgICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcilsbm90YWJbb2Zmc2V0KzFdOwogICAgICAgICAgICAgaWYgKGxpbmUgPj0gbmV3X2xpbmVubykgewogICAgICAgICAgICAgICAgIG5ld19sYXN0aSA9IGFkZHI7CiAgICAgICAgICAgICAgICAgbmV3X2xpbmVubyA9IGxpbmU7CkBAIC0xODksNyArMTg5LDcgQEAKICAgICBtZW1zZXQoYmxvY2tzdGFjaywgJ1wwJywgc2l6ZW9mKGJsb2Nrc3RhY2spKTsKICAgICBtZW1zZXQoaW5fZmluYWxseSwgJ1wwJywgc2l6ZW9mKGluX2ZpbmFsbHkpKTsKICAgICBibG9ja3N0YWNrX3RvcCA9IDA7Ci0gICAgZm9yIChhZGRyID0gMDsgYWRkciA8IGNvZGVfbGVuOyBhZGRyKyspIHsKKyAgICBmb3IgKGFkZHIgPSAwOyBhZGRyIDwgY29kZV9sZW47IGFkZHIgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBvcCA9IGNvZGVbYWRkcl07CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTRVRVUF9MT09QOgpAQCAtMjUxLDEwICsyNTEsNiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIGlmIChvcCA+PSBIQVZFX0FSR1VNRU5UKSB7Ci0gICAgICAgICAgICBhZGRyICs9IDI7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBWZXJpZnkgdGhhdCB0aGUgYmxvY2tzdGFjayB0cmFja2luZyBjb2RlIGRpZG4ndCBnZXQgbG9zdC4gKi8KQEAgLTI3Nyw3ICsyNzMsNyBAQAogICAgICAqIGNhbiB0ZWxsIHdoZXRoZXIgdGhlIGp1bXAgZ29lcyBpbnRvIGFueSBibG9ja3Mgd2l0aG91dCBjb21pbmcgb3V0CiAgICAgICogYWdhaW4gLSBpbiB0aGF0IGNhc2Ugd2UgcmFpc2UgYW4gZXhjZXB0aW9uIGJlbG93LiAqLwogICAgIGRlbHRhX2libG9jayA9IDA7Ci0gICAgZm9yIChhZGRyID0gbWluX2FkZHI7IGFkZHIgPCBtYXhfYWRkcjsgYWRkcisrKSB7CisgICAgZm9yIChhZGRyID0gbWluX2FkZHI7IGFkZHIgPCBtYXhfYWRkcjsgYWRkciArPSBzaXplb2YoX1B5X0NPREVVTklUKSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIG9wID0gY29kZVthZGRyXTsKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFNFVFVQX0xPT1A6CkBAIC0yOTQsMTAgKzI5MCw2IEBACiAgICAgICAgIH0KIAogICAgICAgICBtaW5fZGVsdGFfaWJsb2NrID0gUHlfTUlOKG1pbl9kZWx0YV9pYmxvY2ssIGRlbHRhX2libG9jayk7Ci0KLSAgICAgICAgaWYgKG9wID49IEhBVkVfQVJHVU1FTlQpIHsKLSAgICAgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8qIERlcml2ZSB0aGUgYWJzb2x1dGUgaWJsb2NrIHZhbHVlcyBmcm9tIHRoZSBkZWx0YXMuICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2Z1bmNvYmplY3QuYyBiL09iamVjdHMvZnVuY29iamVjdC5jCmluZGV4IDRjZDY1OTAuLjY5Y2Q5NzMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnVuY29iamVjdC5jCisrKyBiL09iamVjdHMvZnVuY29iamVjdC5jCkBAIC0yNDksNyArMjQ5LDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2NvZGUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwogICAgIFB5X3NzaXplX3QgbmZyZWUsIG5jbG9zdXJlOwogCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLmZ1bmNfY29kZSBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKQEAgLTI3MCwxMCArMjY5LDggQEAKICAgICAgICAgICAgICAgICAgICAgIG5jbG9zdXJlLCBuZnJlZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfY29kZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2NvZGUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2NvZGUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjg3LDggKzI4NCw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9uYW1lKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZi5mdW5jX25hbWUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTI5NiwxMCArMjkxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX25hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19uYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfbmFtZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zMTMsOCArMzA2LDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X3F1YWxuYW1lKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZi5fX3F1YWxuYW1lX18gb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTMyMiwxMCArMzEzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfcXVhbG5hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19xdWFsbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfcXVhbG5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzQzLDggKzMzMiw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9kZWZhdWx0cyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBMZWdhbCB0byBkZWwgZi5mdW5jX2RlZmF1bHRzLgogICAgICAqIENhbiBvbmx5IHNldCBmdW5jX2RlZmF1bHRzIHRvIE5VTEwgb3IgYSB0dXBsZS4gKi8KICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKQEAgLTM1NCwxMCArMzQxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX2RlZmF1bHRzX18gbXVzdCBiZSBzZXQgdG8gYSB0dXBsZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19kZWZhdWx0czsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19kZWZhdWx0cyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2RlZmF1bHRzLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM3NSw4ICszNjAsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfa3dkZWZhdWx0cyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgdmFsdWUgPSBOVUxMOwogICAgIC8qIExlZ2FsIHRvIGRlbCBmLmZ1bmNfa3dkZWZhdWx0cy4KQEAgLTM4NiwxMCArMzY5LDggQEAKICAgICAgICAgICAgICJfX2t3ZGVmYXVsdHNfXyBtdXN0IGJlIHNldCB0byBhIGRpY3Qgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfa3dkZWZhdWx0czsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19rd2RlZmF1bHRzID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfa3dkZWZhdWx0cywgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00MDgsOCArMzg5LDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2Fubm90YXRpb25zKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQogICAgICAgICB2YWx1ZSA9IE5VTEw7CiAgICAgLyogTGVnYWwgdG8gZGVsIGYuZnVuY19hbm5vdGF0aW9ucy4KQEAgLTQyMCwxMCArMzk5LDggQEAKICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0IG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2Fubm90YXRpb25zOwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2Fubm90YXRpb25zID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfYW5ub3RhdGlvbnMsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9nZW5vYmplY3QuYyBiL09iamVjdHMvZ2Vub2JqZWN0LmMKaW5kZXggOTE3MmU2YS4uN2JjZjAxNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9nZW5vYmplY3QuYworKysgYi9PYmplY3RzL2dlbm9iamVjdC5jCkBAIC01LDcgKzUsMTUgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKIAotc3RhdGljIFB5T2JqZWN0ICpnZW5fY2xvc2UoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpOworc3RhdGljIFB5T2JqZWN0ICpnZW5fY2xvc2UoUHlHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jX2dlbl9hc2VuZF9uZXcoUHlBc3luY0dlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNfZ2VuX2F0aHJvd19uZXcoUHlBc3luY0dlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworc3RhdGljIGNoYXIgKk5PTl9JTklUX0NPUk9fTVNHID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGNvcm91dGluZSI7CisKK3N0YXRpYyBjaGFyICpBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXN5bmMgZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7CiAKIHN0YXRpYyBpbnQKIGdlbl90cmF2ZXJzZShQeUdlbk9iamVjdCAqZ2VuLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKQEAgLTI4LDYgKzM2LDI2IEBACiAgICAgICAgIC8qIEdlbmVyYXRvciBpc24ndCBwYXVzZWQsIHNvIG5vIG5lZWQgdG8gY2xvc2UgKi8KICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICBQeUFzeW5jR2VuT2JqZWN0ICphZ2VuID0gKFB5QXN5bmNHZW5PYmplY3QqKXNlbGY7CisgICAgICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXIgPSBhZ2VuLT5hZ19maW5hbGl6ZXI7CisgICAgICAgIGlmIChmaW5hbGl6ZXIgJiYgIWFnZW4tPmFnX2Nsb3NlZCkgeworICAgICAgICAgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZpbmFsaXplciwgc2VsZiwgTlVMTCk7CisKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShzZWxmKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKIApAQCAtNzQsNiArMTAyLDEyIEBACiAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAvKiByZXN1cnJlY3RlZC4gIDooICovCiAKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKKyAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgLyogV2UgaGF2ZSB0byBoYW5kbGUgdGhpcyBjYXNlIGZvciBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycworICAgICAgICAgICByaWdodCBoZXJlLCBiZWNhdXNlIHRoaXMgY29kZSBoYXMgdG8gYmUgYmV0d2VlbiBVTlRSQUNLCisgICAgICAgICAgIGFuZCBHQ19EZWwuICovCisgICAgICAgIFB5X0NMRUFSKCgoUHlBc3luY0dlbk9iamVjdCopZ2VuKS0+YWdfZmluYWxpemVyKTsKKyAgICB9CiAgICAgaWYgKGdlbi0+Z2lfZnJhbWUgIT0gTlVMTCkgewogICAgICAgICBnZW4tPmdpX2ZyYW1lLT5mX2dlbiA9IE5VTEw7CiAgICAgICAgIFB5X0NMRUFSKGdlbi0+Z2lfZnJhbWUpOwpAQCAtOTMsOCArMTI3LDEyIEBACiAKICAgICBpZiAoZ2VuLT5naV9ydW5uaW5nKSB7CiAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgYWxyZWFkeSBleGVjdXRpbmciOwotICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgYWxyZWFkeSBleGVjdXRpbmciOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICBtc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIjsKKyAgICAgICAgfQogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgbXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTA2LDEwICsxNDQsMTYgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgImNhbm5vdCByZXVzZSBhbHJlYWR5IGF3YWl0ZWQgY29yb3V0aW5lIik7Ci0gICAgICAgIH0gZWxzZSBpZiAoYXJnICYmICFleGMpIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChhcmcgJiYgIWV4YykgewogICAgICAgICAgICAgLyogYGdlbmAgaXMgYW4gZXhoYXVzdGVkIGdlbmVyYXRvcjoKICAgICAgICAgICAgICAgIG9ubHkgc2V0IGV4Y2VwdGlvbiBpZiBjYWxsZWQgZnJvbSBzZW5kKCkuICovCi0gICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICAgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMTgsOSArMTYyLDEzIEBACiAgICAgICAgIGlmIChhcmcgJiYgYXJnICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgIGNoYXIgKm1zZyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgogICAgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBnZW5lcmF0b3IiOwotICAgICAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgeworICAgICAgICAgICAgICAgIG1zZyA9IE5PTl9JTklUX0NPUk9fTVNHOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKICAgICAgICAgICAgICAgICBtc2cgPSAiY2FuJ3Qgc2VuZCBub24tTm9uZSB2YWx1ZSB0byBhICIKLSAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGNvcm91dGluZSI7CisgICAgICAgICAgICAgICAgICAgICAgImp1c3Qtc3RhcnRlZCBhc3luYyBnZW5lcmF0b3IiOworICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbXNnKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xNTIsMTAgKzIwMCwyMCBAQAogICAgIGlmIChyZXN1bHQgJiYgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogRGVsYXkgZXhjZXB0aW9uIGluc3RhbnRpYXRpb24gaWYgd2UgY2FuICovCi0gICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICplID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19TdG9wSXRlcmF0aW9uLCByZXN1bHQsIE5VTEwpOworCisgICAgICAgICAgICAvKiBBc3luYyBnZW5lcmF0b3JzIGNhbm5vdCByZXR1cm4gYW55dGhpbmcgYnV0IE5vbmUgKi8KKyAgICAgICAgICAgIGFzc2VydCghUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpOworCiAgICAgICAgICAgICBpZiAoZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N0b3BJdGVyYXRpb24sIGUpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlKTsKQEAgLTE2NywzNCArMjI1LDQzIEBACiAgICAgICAgIC8qIENoZWNrIGZvciBfX2Z1dHVyZV9fIGdlbmVyYXRvcl9zdG9wIGFuZCBjb25kaXRpb25hbGx5IHR1cm4KICAgICAgICAgICogYSBsZWFraW5nIFN0b3BJdGVyYXRpb24gaW50byBSdW50aW1lRXJyb3IgKHdpdGggaXRzIGNhdXNlCiAgICAgICAgICAqIHNldCBhcHByb3ByaWF0ZWx5KS4gKi8KLSAgICAgICAgaWYgKCgoUHlDb2RlT2JqZWN0ICopZ2VuLT5naV9jb2RlKS0+Y29fZmxhZ3MgJgotICAgICAgICAgICAgICAoQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwgQ09fQ09ST1VUSU5FIHwgQ09fSVRFUkFCTEVfQ09ST1VUSU5FKSkKKworICAgICAgICBjb25zdCBpbnQgY2hlY2tfc3RvcF9pdGVyX2Vycm9yX2ZsYWdzID0gQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0NPUk9VVElORSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19JVEVSQUJMRV9DT1JPVVRJTkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fQVNZTkNfR0VORVJBVE9SOworCisgICAgICAgIGlmIChnZW4tPmdpX2NvZGUgIT0gTlVMTCAmJgorICAgICAgICAgICAgKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmCisgICAgICAgICAgICAgICAgY2hlY2tfc3RvcF9pdGVyX2Vycm9yX2ZsYWdzKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOwotICAgICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7Ci0gICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgIC8qIGBnZW5gIGlzIGVpdGhlcjoKKyAgICAgICAgICAgICAgICAgICogYSBnZW5lcmF0b3Igd2l0aCBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgZmxhZzsKKyAgICAgICAgICAgICAgICAgICogYSBjb3JvdXRpbmU7CisgICAgICAgICAgICAgICAgICAqIGEgZ2VuZXJhdG9yIHdpdGggQ09fSVRFUkFCTEVfQ09ST1VUSU5FIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgKGRlY29yYXRlZCB3aXRoIHR5cGVzLmNvcm91dGluZSBkZWNvcmF0b3IpOworICAgICAgICAgICAgICAgICAgKiBhbiBhc3luYyBnZW5lcmF0b3IuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnID0gImdlbmVyYXRvciByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7CisgICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgICAgIG1zZyA9ICJjb3JvdXRpbmUgcmFpc2VkIFN0b3BJdGVyYXRpb24iOwotICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICAgICAgaWYgKHRiICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOwotICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKHRiKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsMiwgJnRiKTsKLSAgICAgICAgICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsMiwgJnRiKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRih2YWwpOwotICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q2F1c2UodmFsMiwgdmFsKTsKLSAgICAgICAgICAgIFB5RXhjZXB0aW9uX1NldENvbnRleHQodmFsMiwgdmFsKTsKLSAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pIHsKKyAgICAgICAgICAgICAgICBtc2cgPSAiYXN5bmMgZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfUnVudGltZUVycm9yLCAiJXMiLCBtc2cpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogYGdlbmAgaXMgYW4gb3JkaW5hcnkgZ2VuZXJhdG9yIHdpdGhvdXQKKyAgICAgICAgICAgICAgIENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCBmbGFnLgorICAgICAgICAgICAgKi8KKwogICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOwogCiAgICAgICAgICAgICAvKiBQb3AgdGhlIGV4Y2VwdGlvbiBiZWZvcmUgaXNzdWluZyBhIHdhcm5pbmcuICovCiAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwogCi0gICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAnJS41MFMnIHJhaXNlZCBTdG9wSXRlcmF0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbi0+Z2lfcXVhbG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgLyogV2FybmluZyB3YXMgY29udmVydGVkIHRvIGFuIGVycm9yLiAqLwpAQCAtMjA3LDYgKzI3NCwxNSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorICAgIGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pICYmICFyZXN1bHQgJiYKKyAgICAgICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbikpCisgICAgeworICAgICAgICAvKiBjb2RlIGluIGBnZW5gIHJhaXNlZCBhIFN0b3BBc3luY0l0ZXJhdGlvbiBlcnJvcjoKKyAgICAgICAgICAgcmFpc2UgYSBSdW50aW1lRXJyb3IuCisgICAgICAgICovCisgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICJhc3luYyBnZW5lcmF0b3IgcmFpc2VkIFN0b3BBc3luY0l0ZXJhdGlvbiI7CisgICAgICAgIF9QeUVycl9Gb3JtYXRGcm9tQ2F1c2UoUHlFeGNfUnVudGltZUVycm9yLCAiJXMiLCBtc2cpOworICAgIH0KIAogICAgIGlmICghcmVzdWx0IHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBnZW5lcmF0b3IgY2FuJ3QgYmUgcmVydW4sIHNvIHJlbGVhc2UgdGhlIGZyYW1lICovCkBAIC0yNTMsMTggKzMyOSwyMCBAQAogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKIAotICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSkgeworICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdCh5ZikpIHsKICAgICAgICAgcmV0dmFsID0gZ2VuX2Nsb3NlKChQeUdlbk9iamVjdCAqKXlmLCBOVUxMKTsKICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgewogICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX2Nsb3NlKTsKICAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoeWYpOwogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAiIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKG1ldGgpOwogICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOwogICAgICAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTI4NCw3ICszNjIsNyBAQAogICAgICAgICBQeU9iamVjdCAqYnl0ZWNvZGUgPSBmLT5mX2NvZGUtPmNvX2NvZGU7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvZGUgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVjb2RlKTsKIAotICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgMV0gIT0gWUlFTERfRlJPTSkKKyAgICAgICAgaWYgKGNvZGVbZi0+Zl9sYXN0aSArIHNpemVvZihfUHlfQ09ERVVOSVQpXSAhPSBZSUVMRF9GUk9NKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHlmID0gZi0+Zl9zdGFja3RvcFstMV07CiAgICAgICAgIFB5X0lOQ1JFRih5Zik7CkBAIC0zMTEsOCArMzg5LDExIEBACiAgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxLCAxKTsKICAgICBpZiAocmV0dmFsKSB7CiAgICAgICAgIGNoYXIgKm1zZyA9ICJnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0IjsKLSAgICAgICAgaWYgKFB5Q29yb19DaGVja0V4YWN0KGdlbikpCisgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICBtc2cgPSAiY29yb3V0aW5lIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7CisgICAgICAgIH0gZWxzZSBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgIG1zZyA9IEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHOworICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMiwyMSArNDEzLDIyIEBACiByZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZW5fdGhyb3coUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCitfZ2VuX3Rocm93KFB5R2VuT2JqZWN0ICpnZW4sIGludCBjbG9zZV9vbl9nZW5leGl0LAorICAgICAgICAgICBQeU9iamVjdCAqdHlwLCBQeU9iamVjdCAqdmFsLCBQeU9iamVjdCAqdGIpCiB7Ci0gICAgUHlPYmplY3QgKnR5cDsKLSAgICBQeU9iamVjdCAqdGIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICp5ZiA9IF9QeUdlbl95ZihnZW4pOwogICAgIF9QeV9JREVOVElGSUVSKHRocm93KTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRocm93IiwgMSwgMywgJnR5cCwgJnZhbCwgJnRiKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBpZiAoeWYpIHsKICAgICAgICAgUHlPYmplY3QgKnJldDsKICAgICAgICAgaW50IGVycjsKLSAgICAgICAgaWYgKFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyh0eXAsIFB5RXhjX0dlbmVyYXRvckV4aXQpKSB7CisgICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSAmJgorICAgICAgICAgICAgY2xvc2Vfb25fZ2VuZXhpdAorICAgICAgICApIHsKKyAgICAgICAgICAgIC8qIEFzeW5jaHJvbm91cyBnZW5lcmF0b3JzICpzaG91bGQgbm90KiBiZSBjbG9zZWQgcmlnaHQgYXdheS4KKyAgICAgICAgICAgICAgIFdlIGhhdmUgdG8gYWxsb3cgc29tZSBhd2FpdHMgdG8gd29yayBpdCB0aHJvdWdoLCBoZW5jZSB0aGUKKyAgICAgICAgICAgICAgIGBjbG9zZV9vbl9nZW5leGl0YCBwYXJhbWV0ZXIgaGVyZS4KKyAgICAgICAgICAgICovCiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOwogICAgICAgICAgICAgZXJyID0gZ2VuX2Nsb3NlX2l0ZXIoeWYpOwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKQEAgLTM1NSwxMSArNDM3LDE2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSwgMCk7CiAgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICAgICAgICAgIC8qIGB5ZmAgaXMgYSBnZW5lcmF0b3Igb3IgYSBjb3JvdXRpbmUuICovCiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOwotICAgICAgICAgICAgcmV0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBhcmdzKTsKKyAgICAgICAgICAgIC8qIENsb3NlIHRoZSBnZW5lcmF0b3IgdGhhdCB3ZSBhcmUgY3VycmVudGx5IGl0ZXJhdGluZyB3aXRoCisgICAgICAgICAgICAgICAneWllbGQgZnJvbScgb3IgYXdhaXRpbmcgb24gd2l0aCAnYXdhaXQnLiAqLworICAgICAgICAgICAgcmV0ID0gX2dlbl90aHJvdygoUHlHZW5PYmplY3QgKil5ZiwgY2xvc2Vfb25fZ2VuZXhpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwLCB2YWwsIHRiKTsKICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBgeWZgIGlzIGFuIGl0ZXJhdG9yIG9yIGEgY29yb3V0aW5lLWxpa2Ugb2JqZWN0LiAqLwogICAgICAgICAgICAgUHlPYmplY3QgKm1ldGggPSBfUHlPYmplY3RfR2V0QXR0cklkKHlmLCAmUHlJZF90aHJvdyk7CiAgICAgICAgICAgICBpZiAobWV0aCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewpAQCAtMzcxLDcgKzQ1OCw3IEBACiAgICAgICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKLSAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobWV0aCwgYXJncyk7CisgICAgICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKG1ldGgsIHR5cCwgdmFsLCB0YiwgTlVMTCk7CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwogICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOwogICAgICAgICB9CkBAIC0zODMsNyArNDcwLDcgQEAKICAgICAgICAgICAgIGFzc2VydChyZXQgPT0geWYpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7CiAgICAgICAgICAgICAvKiBUZXJtaW5hdGlvbiByZXBldGl0aW9uIG9mIFlJRUxEX0ZST00gKi8KLSAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkrKzsKKyAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICBpZiAoX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpID09IDApIHsKICAgICAgICAgICAgICAgICByZXQgPSBnZW5fc2VuZF9leChnZW4sIHZhbCwgMCwgMCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbCk7CkBAIC00NTQsNiArNTQxLDIxIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKK2dlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqdHlwOworICAgIFB5T2JqZWN0ICp0YiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIF9nZW5fdGhyb3coZ2VuLCAxLCB0eXAsIHZhbCwgdGIpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwLCAwKTsKQEAgLTUyNiw4ICs2MjgsNiBAQAogc3RhdGljIGludAogZ2VuX3NldF9uYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5naV9uYW1lIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC01MzUsMTAgKzYzNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmdpX25hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+Z2lfbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmdpX25hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNTUyLDggKzY1MCw2IEBACiBzdGF0aWMgaW50CiBnZW5fc2V0X3F1YWxuYW1lKFB5R2VuT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBOb3QgbGVnYWwgdG8gZGVsIGdlbi5fX3F1YWxuYW1lX18gb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTU2MSwxMCArNjU3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmdpX3F1YWxuYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmdpX3F1YWxuYW1lID0gdmFsdWU7Ci0gICAgUHlfREVDUkVGKHRtcCk7CisgICAgUHlfWFNFVFJFRihvcC0+Z2lfcXVhbG5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTAwNSwyMSArMTA5OSwyMSBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICphd19haXRlcjsKKyAgICBQeU9iamVjdCAqYWdzX2FpdGVyOwogfSBQeUFJdGVyV3JhcHBlcjsKIAogCiBzdGF0aWMgUHlPYmplY3QgKgogYWl0ZXJfd3JhcHBlcl9pdGVybmV4dChQeUFJdGVyV3JhcHBlciAqYXcpCiB7Ci0gICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N0b3BJdGVyYXRpb24sIGF3LT5hd19haXRlcik7CisgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N0b3BJdGVyYXRpb24sIGF3LT5hZ3NfYWl0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgaW50CiBhaXRlcl93cmFwcGVyX3RyYXZlcnNlKFB5QUl0ZXJXcmFwcGVyICphdywgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgUHlfVklTSVQoKFB5T2JqZWN0ICopYXctPmF3X2FpdGVyKTsKKyAgICBQeV9WSVNJVCgoUHlPYmplY3QgKilhdy0+YWdzX2FpdGVyKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTAyNyw3ICsxMTIxLDcgQEAKIGFpdGVyX3dyYXBwZXJfZGVhbGxvYyhQeUFJdGVyV3JhcHBlciAqYXcpCiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopYXcpOwotICAgIFB5X0NMRUFSKGF3LT5hd19haXRlcik7CisgICAgUHlfQ0xFQVIoYXctPmFnc19haXRlcik7CiAgICAgUHlPYmplY3RfR0NfRGVsKGF3KTsKIH0KIApAQCAtMTA4OSw3ICsxMTgzLDgxNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgUHlfSU5DUkVGKGFpdGVyKTsKLSAgICBhdy0+YXdfYWl0ZXIgPSBhaXRlcjsKKyAgICBhdy0+YWdzX2FpdGVyID0gYWl0ZXI7CiAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKGF3KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopYXc7CiB9CisKKworLyogPT09PT09PT09IEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzID09PT09PT09PSAqLworCisKK3R5cGVkZWYgZW51bSB7CisgICAgQVdBSVRBQkxFX1NUQVRFX0lOSVQsICAgLyogbmV3IGF3YWl0YWJsZSwgaGFzIG5vdCB5ZXQgYmVlbiBpdGVyYXRlZCAqLworICAgIEFXQUlUQUJMRV9TVEFURV9JVEVSLCAgIC8qIGJlaW5nIGl0ZXJhdGVkICovCisgICAgQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCwgLyogY2xvc2VkICovCit9IEF3YWl0YWJsZVN0YXRlOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlBc3luY0dlbk9iamVjdCAqYWdzX2dlbjsKKworICAgIC8qIENhbiBiZSBOVUxMLCB3aGVuIGluIHRoZSBfX2FuZXh0X18oKSBtb2RlCisgICAgICAgKGVxdWl2YWxlbnQgb2YgImFzZW5kKE5vbmUpIikgKi8KKyAgICBQeU9iamVjdCAqYWdzX3NlbmR2YWw7CisKKyAgICBBd2FpdGFibGVTdGF0ZSBhZ3Nfc3RhdGU7Cit9IFB5QXN5bmNHZW5BU2VuZDsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5QXN5bmNHZW5PYmplY3QgKmFndF9nZW47CisKKyAgICAvKiBDYW4gYmUgTlVMTCwgd2hlbiBpbiB0aGUgImFjbG9zZSgpIiBtb2RlCisgICAgICAgKGVxdWl2YWxlbnQgb2YgImF0aHJvdyhHZW5lcmF0b3JFeGl0KSIpICovCisgICAgUHlPYmplY3QgKmFndF9hcmdzOworCisgICAgQXdhaXRhYmxlU3RhdGUgYWd0X3N0YXRlOworfSBQeUFzeW5jR2VuQVRocm93OworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmFnd192YWw7Cit9IF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlOworCisKKyNpZm5kZWYgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QKKyNkZWZpbmUgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QgODAKKyNlbmRpZgorCisvKiBGcmVlbGlzdHMgYm9vc3QgcGVyZm9ybWFuY2UgNi0xMCU7IHRoZXkgYWxzbyByZWR1Y2UgbWVtb3J5CisgICBmcmFnbWVudGF0aW9uLCBhcyBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSBhbmQgUHlBc3luY0dlbkFTZW5kCisgICBhcmUgc2hvcnQtbGl2aW5nIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFudGlhdGVkIGZvciBldmVyeQorICAgX19hbmV4dF9fIGNhbGwuCisqLworCitzdGF0aWMgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKmFnX3ZhbHVlX2ZyZWVsaXN0W19QeUFzeW5jR2VuX01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgYWdfdmFsdWVfZnJlZWxpc3RfZnJlZSA9IDA7CisKK3N0YXRpYyBQeUFzeW5jR2VuQVNlbmQgKmFnX2FzZW5kX2ZyZWVsaXN0W19QeUFzeW5jR2VuX01BWEZSRUVMSVNUXTsKK3N0YXRpYyBpbnQgYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSA9IDA7CisKKyNkZWZpbmUgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSBcCisgICAgICAgICAgICAgICAgICAgIChQeV9UWVBFKG8pID09ICZfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlKQorCisjZGVmaW5lIFB5QXN5bmNHZW5BU2VuZF9DaGVja0V4YWN0KG8pIFwKKyAgICAgICAgICAgICAgICAgICAgKFB5X1RZUEUobykgPT0gJl9QeUFzeW5jR2VuQVNlbmRfVHlwZSkKKworCitzdGF0aWMgaW50Cithc3luY19nZW5fdHJhdmVyc2UoUHlBc3luY0dlbk9iamVjdCAqZ2VuLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChnZW4tPmFnX2ZpbmFsaXplcik7CisgICAgcmV0dXJuIGdlbl90cmF2ZXJzZSgoUHlHZW5PYmplY3QqKWdlbiwgdmlzaXQsIGFyZyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9yZXByKFB5QXN5bmNHZW5PYmplY3QgKm8pCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8YXN5bmNfZ2VuZXJhdG9yIG9iamVjdCAlUyBhdCAlcD4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLT5hZ19xdWFsbmFtZSwgbyk7Cit9CisKKworc3RhdGljIGludAorYXN5bmNfZ2VuX2luaXRfaG9va3MoUHlBc3luY0dlbk9iamVjdCAqbykKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgUHlPYmplY3QgKmZpbmFsaXplcjsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyOworCisgICAgaWYgKG8tPmFnX2hvb2tzX2luaXRlZCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBvLT5hZ19ob29rc19pbml0ZWQgPSAxOworCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgIGZpbmFsaXplciA9IHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplcjsKKyAgICBpZiAoZmluYWxpemVyKSB7CisgICAgICAgIFB5X0lOQ1JFRihmaW5hbGl6ZXIpOworICAgICAgICBvLT5hZ19maW5hbGl6ZXIgPSBmaW5hbGl6ZXI7CisgICAgfQorCisgICAgZmlyc3RpdGVyID0gdHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyOworICAgIGlmIChmaXJzdGl0ZXIpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlczsKKworICAgICAgICBQeV9JTkNSRUYoZmlyc3RpdGVyKTsKKyAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGZpcnN0aXRlciwgIk8iLCBvKTsKKyAgICAgICAgUHlfREVDUkVGKGZpcnN0aXRlcik7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hbmV4dChQeUFzeW5jR2VuT2JqZWN0ICpvKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hc2VuZF9uZXcobywgTlVMTCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZChQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hc2VuZF9uZXcobywgYXJnKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FjbG9zZShQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChhc3luY19nZW5faW5pdF9ob29rcyhvKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfbmV3KG8sIE5VTEwpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvdyhQeUFzeW5jR2VuT2JqZWN0ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpZiAoYXN5bmNfZ2VuX2luaXRfaG9va3MobykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBhc3luY19nZW5fYXRocm93X25ldyhvLCBhcmdzKTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgYXN5bmNfZ2VuX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9fbmFtZV9fIiwgKGdldHRlcilnZW5fZ2V0X25hbWUsIChzZXR0ZXIpZ2VuX3NldF9uYW1lLAorICAgICBQeURvY19TVFIoIm5hbWUgb2YgdGhlIGFzeW5jIGdlbmVyYXRvciIpfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZ2VuX2dldF9xdWFsbmFtZSwgKHNldHRlcilnZW5fc2V0X3F1YWxuYW1lLAorICAgICBQeURvY19TVFIoInF1YWxpZmllZCBuYW1lIG9mIHRoZSBhc3luYyBnZW5lcmF0b3IiKX0sCisgICAgeyJhZ19hd2FpdCIsIChnZXR0ZXIpY29yb19nZXRfY3JfYXdhaXQsIE5VTEwsCisgICAgIFB5RG9jX1NUUigib2JqZWN0IGJlaW5nIGF3YWl0ZWQgb24sIG9yIE5vbmUiKX0sCisgICAge05VTEx9IC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgYXN5bmNfZ2VuX21lbWJlcmxpc3RbXSA9IHsKKyAgICB7ImFnX2ZyYW1lIiwgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfZnJhbWUpLCAgIFJFQURPTkxZfSwKKyAgICB7ImFnX3J1bm5pbmciLCBUX0JPT0wsICAgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfcnVubmluZyksIFJFQURPTkxZfSwKKyAgICB7ImFnX2NvZGUiLCAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlBc3luY0dlbk9iamVjdCwgYWdfY29kZSksICAgIFJFQURPTkxZfSwKKyAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLworfTsKKworUHlEb2NfU1RSVkFSKGFzeW5jX2FjbG9zZV9kb2MsCisiYWNsb3NlKCkgLT4gcmFpc2UgR2VuZXJhdG9yRXhpdCBpbnNpZGUgZ2VuZXJhdG9yLiIpOworCitQeURvY19TVFJWQVIoYXN5bmNfYXNlbmRfZG9jLAorImFzZW5kKHYpIC0+IHNlbmQgJ3YnIGluIGdlbmVyYXRvci4iKTsKKworUHlEb2NfU1RSVkFSKGFzeW5jX2F0aHJvd19kb2MsCisiYXRocm93KHR5cFssdmFsWyx0Yl1dKSAtPiByYWlzZSBleGNlcHRpb24gaW4gZ2VuZXJhdG9yLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX21ldGhvZHNbXSA9IHsKKyAgICB7ImFzZW5kIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hc2VuZCwgTUVUSF9PLCBhc3luY19hc2VuZF9kb2N9LAorICAgIHsiYXRocm93IiwoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2F0aHJvdywgTUVUSF9WQVJBUkdTLCBhc3luY19hdGhyb3dfZG9jfSwKKyAgICB7ImFjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYWNsb3NlLCBNRVRIX05PQVJHUywgYXN5bmNfYWNsb3NlX2RvY30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBTZW50aW5lbCAqLworfTsKKworCitzdGF0aWMgUHlBc3luY01ldGhvZHMgYXN5bmNfZ2VuX2FzX2FzeW5jID0geworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FpdGVyICovCisgICAgKHVuYXJ5ZnVuYylhc3luY19nZW5fYW5leHQgICAgICAgICAgICAgICAgICAvKiBhbV9hbmV4dCAqLworfTsKKworCitQeVR5cGVPYmplY3QgUHlBc3luY0dlbl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5QXN5bmNHZW5PYmplY3QpLCAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWdlbl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXN5bmNfZ2VuX2FzX2FzeW5jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgKHJlcHJmdW5jKWFzeW5jX2dlbl9yZXByLCAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKKyAgICAgICAgUHlfVFBGTEFHU19IQVZFX0ZJTkFMSVpFLCAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWFzeW5jX2dlbl90cmF2ZXJzZSwgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQeUFzeW5jR2VuT2JqZWN0LCBhZ193ZWFrcmVmbGlzdCksIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGFzeW5jX2dlbl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGFzeW5jX2dlbl9tZW1iZXJsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIGFzeW5jX2dlbl9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXNfZ2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tcm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhY2hlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdWJjbGFzc2VzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF92ZXJzaW9uX3RhZyAqLworICAgIF9QeUdlbl9GaW5hbGl6ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmluYWxpemUgKi8KK307CisKKworUHlPYmplY3QgKgorUHlBc3luY0dlbl9OZXcoUHlGcmFtZU9iamVjdCAqZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpxdWFsbmFtZSkKK3sKKyAgICBQeUFzeW5jR2VuT2JqZWN0ICpvOworICAgIG8gPSAoUHlBc3luY0dlbk9iamVjdCAqKWdlbl9uZXdfd2l0aF9xdWFsbmFtZSgKKyAgICAgICAgJlB5QXN5bmNHZW5fVHlwZSwgZiwgbmFtZSwgcXVhbG5hbWUpOworICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG8tPmFnX2ZpbmFsaXplciA9IE5VTEw7CisgICAgby0+YWdfY2xvc2VkID0gMDsKKyAgICBvLT5hZ19ob29rc19pbml0ZWQgPSAwOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CisKKworaW50CitQeUFzeW5jR2VuX0NsZWFyRnJlZUxpc3RzKHZvaWQpCit7CisgICAgaW50IHJldCA9IGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUgKyBhZ19hc2VuZF9mcmVlbGlzdF9mcmVlOworCisgICAgd2hpbGUgKGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUpIHsKKyAgICAgICAgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgKm87CisgICAgICAgIG8gPSBhZ192YWx1ZV9mcmVlbGlzdFstLWFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIFB5T2JqZWN0X0RlbChvKTsKKyAgICB9CisKKyAgICB3aGlsZSAoYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSkgeworICAgICAgICBQeUFzeW5jR2VuQVNlbmQgKm87CisgICAgICAgIG8gPSBhZ19hc2VuZF9mcmVlbGlzdFstLWFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoUHlfVFlQRShvKSA9PSAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKTsKKyAgICAgICAgUHlPYmplY3RfRGVsKG8pOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK1B5QXN5bmNHZW5fRmluaSh2b2lkKQoreworICAgIFB5QXN5bmNHZW5fQ2xlYXJGcmVlTGlzdHMoKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShQeUFzeW5jR2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICpyZXN1bHQpCit7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKQorICAgICAgICAgICAgfHwgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19HZW5lcmF0b3JFeGl0KQorICAgICAgICApIHsKKyAgICAgICAgICAgIGdlbi0+YWdfY2xvc2VkID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KHJlc3VsdCkpIHsKKyAgICAgICAgLyogYXN5bmMgeWllbGQgKi8KKyAgICAgICAgUHlPYmplY3QgKmUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAorICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbiwKKyAgICAgICAgICAgICgoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUqKXJlc3VsdCktPmFnd192YWwsCisgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIGlmIChlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBlKTsKKyAgICAgICAgUHlfREVDUkVGKGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qIC0tLS0tLS0tLS0gQXN5bmMgR2VuZXJhdG9yIEFTZW5kIEF3YWl0YWJsZSAtLS0tLS0tLS0tLS0gKi8KKworCitzdGF0aWMgdm9pZAorYXN5bmNfZ2VuX2FzZW5kX2RlYWxsb2MoUHlBc3luY0dlbkFTZW5kICpvKQoreworICAgIFB5X0NMRUFSKG8tPmFnc19nZW4pOworICAgIFB5X0NMRUFSKG8tPmFnc19zZW5kdmFsKTsKKyAgICBpZiAoYWdfYXNlbmRfZnJlZWxpc3RfZnJlZSA8IF9QeUFzeW5jR2VuX01BWEZSRUVMSVNUKSB7CisgICAgICAgIGFzc2VydChQeUFzeW5jR2VuQVNlbmRfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIGFnX2FzZW5kX2ZyZWVsaXN0W2FnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUrK10gPSBvOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0X0RlbChvKTsKKyAgICB9Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF9zZW5kKFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKG8tPmFnc19zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEKSB7CisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Nfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0lOSVQpIHsKKyAgICAgICAgaWYgKGFyZyA9PSBOVUxMIHx8IGFyZyA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBhcmcgPSBvLT5hZ3Nfc2VuZHZhbDsKKyAgICAgICAgfQorICAgICAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSVRFUjsKKyAgICB9CisKKyAgICByZXN1bHQgPSBnZW5fc2VuZF9leCgoUHlHZW5PYmplY3QqKW8tPmFnc19nZW4sIGFyZywgMCwgMCk7CisgICAgcmVzdWx0ID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3NfZ2VuLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX2l0ZXJuZXh0KFB5QXN5bmNHZW5BU2VuZCAqbykKK3sKKyAgICByZXR1cm4gYXN5bmNfZ2VuX2FzZW5kX3NlbmQobywgTlVMTCk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hc2VuZF90aHJvdyhQeUFzeW5jR2VuQVNlbmQgKm8sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoby0+YWdzX3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCopby0+YWdzX2dlbiwgYXJncyk7CisgICAgcmVzdWx0ID0gYXN5bmNfZ2VuX3Vud3JhcF92YWx1ZShvLT5hZ3NfZ2VuLCByZXN1bHQpOworCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIG8tPmFnc19zdGF0ZSA9IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQ7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2FzZW5kX2Nsb3NlKFB5QXN5bmNHZW5BU2VuZCAqbywgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgby0+YWdzX3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgYXN5bmNfZ2VuX2FzZW5kX21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX3NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAorICAgIHsidGhyb3ciLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2FzZW5kX3Rocm93LCBNRVRIX1ZBUkFSR1MsIHRocm93X2RvY30sCisgICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbilhc3luY19nZW5fYXNlbmRfY2xvc2UsIE1FVEhfTk9BUkdTLCBjbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGFzeW5jX2dlbl9hc2VuZF9hc19hc3luYyA9IHsKKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2F3YWl0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYW5leHQgKi8KK307CisKKworUHlUeXBlT2JqZWN0IF9QeUFzeW5jR2VuQVNlbmRfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJhc3luY19nZW5lcmF0b3JfYXNlbmQiLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihQeUFzeW5jR2VuQVNlbmQpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3Rvcilhc3luY19nZW5fYXNlbmRfZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgJmFzeW5jX2dlbl9hc2VuZF9hc19hc3luYywgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKWFzeW5jX2dlbl9hc2VuZF9pdGVybmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgYXN5bmNfZ2VuX2FzZW5kX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXNlbmRfbmV3KFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKnNlbmR2YWwpCit7CisgICAgUHlBc3luY0dlbkFTZW5kICpvOworICAgIGlmIChhZ19hc2VuZF9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUtLTsKKyAgICAgICAgbyA9IGFnX2FzZW5kX2ZyZWVsaXN0W2FnX2FzZW5kX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCAqKW8pOworICAgIH0gZWxzZSB7CisgICAgICAgIG8gPSBQeU9iamVjdF9OZXcoUHlBc3luY0dlbkFTZW5kLCAmX1B5QXN5bmNHZW5BU2VuZF9UeXBlKTsKKyAgICAgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZ2VuKTsKKyAgICBvLT5hZ3NfZ2VuID0gZ2VuOworCisgICAgUHlfWElOQ1JFRihzZW5kdmFsKTsKKyAgICBvLT5hZ3Nfc2VuZHZhbCA9IHNlbmR2YWw7CisKKyAgICBvLT5hZ3Nfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSU5JVDsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilvOworfQorCisKKy8qIC0tLS0tLS0tLS0gQXN5bmMgR2VuZXJhdG9yIFZhbHVlIFdyYXBwZXIgLS0tLS0tLS0tLS0tICovCisKKworc3RhdGljIHZvaWQKK2FzeW5jX2dlbl93cmFwcGVkX3ZhbF9kZWFsbG9jKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICpvKQoreworICAgIFB5X0NMRUFSKG8tPmFnd192YWwpOworICAgIGlmIChhZ192YWx1ZV9mcmVlbGlzdF9mcmVlIDwgX1B5QXN5bmNHZW5fTUFYRlJFRUxJU1QpIHsKKyAgICAgICAgYXNzZXJ0KF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QobykpOworICAgICAgICBhZ192YWx1ZV9mcmVlbGlzdFthZ192YWx1ZV9mcmVlbGlzdF9mcmVlKytdID0gbzsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdF9EZWwobyk7CisgICAgfQorfQorCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvcl93cmFwcGVkX3ZhbHVlIiwgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlKSwgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWFzeW5jX2dlbl93cmFwcGVkX3ZhbF9kZWFsbG9jLCAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworUHlPYmplY3QgKgorX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcoUHlPYmplY3QgKnZhbCkKK3sKKyAgICBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZSAqbzsKKyAgICBhc3NlcnQodmFsKTsKKworICAgIGlmIChhZ192YWx1ZV9mcmVlbGlzdF9mcmVlKSB7CisgICAgICAgIGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUtLTsKKyAgICAgICAgbyA9IGFnX3ZhbHVlX2ZyZWVsaXN0W2FnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWVdOworICAgICAgICBhc3NlcnQoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChvKSk7CisgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0KilvKTsKKyAgICB9IGVsc2UgeworICAgICAgICBvID0gUHlPYmplY3RfTmV3KF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlLCAmX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZSk7CisgICAgICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIG8tPmFnd192YWwgPSB2YWw7CisgICAgUHlfSU5DUkVGKHZhbCk7CisgICAgcmV0dXJuIChQeU9iamVjdCopbzsKK30KKworCisvKiAtLS0tLS0tLS0tIEFzeW5jIEdlbmVyYXRvciBBVGhyb3cgYXdhaXRhYmxlIC0tLS0tLS0tLS0tLSAqLworCisKK3N0YXRpYyB2b2lkCithc3luY19nZW5fYXRocm93X2RlYWxsb2MoUHlBc3luY0dlbkFUaHJvdyAqbykKK3sKKyAgICBQeV9DTEVBUihvLT5hZ3RfZ2VuKTsKKyAgICBQeV9DTEVBUihvLT5hZ3RfYXJncyk7CisgICAgUHlPYmplY3RfRGVsKG8pOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X3NlbmQoUHlBc3luY0dlbkFUaHJvdyAqbywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeUdlbk9iamVjdCAqZ2VuID0gKFB5R2VuT2JqZWN0KilvLT5hZ3RfZ2VuOworICAgIFB5RnJhbWVPYmplY3QgKmYgPSBnZW4tPmdpX2ZyYW1lOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCB8fAorICAgICAgICAgICAgby0+YWd0X3N0YXRlID09IEFXQUlUQUJMRV9TVEFURV9DTE9TRUQpIHsKKyAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19TdG9wSXRlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfSU5JVCkgeworICAgICAgICBpZiAoby0+YWd0X2dlbi0+YWdfY2xvc2VkKSB7CisgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXJnICE9IFB5X05vbmUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIE5PTl9JTklUX0NPUk9fTVNHKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0lURVI7CisKKyAgICAgICAgaWYgKG8tPmFndF9hcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIGFjbG9zZSgpIG1vZGUgKi8KKyAgICAgICAgICAgIG8tPmFndF9nZW4tPmFnX2Nsb3NlZCA9IDE7CisKKyAgICAgICAgICAgIHJldHZhbCA9IF9nZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopZ2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgLyogRG8gbm90IGNsb3NlIGdlbmVyYXRvciB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19HZW5lcmF0b3JFeGl0IGlzIHBhc3NlZCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19HZW5lcmF0b3JFeGl0LCBOVUxMLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKHJldHZhbCAmJiBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZV9DaGVja0V4YWN0KHJldHZhbCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgICAgICBnb3RvIHlpZWxkX2Nsb3NlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKnR5cDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0YiA9IE5VTEw7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKworICAgICAgICAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShvLT5hZ3RfYXJncywgImF0aHJvdyIsIDEsIDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0eXAsICZ2YWwsICZ0YikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dmFsID0gX2dlbl90aHJvdygoUHlHZW5PYmplY3QgKilnZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAvKiBEbyBub3QgY2xvc2UgZ2VuZXJhdG9yIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0dlbmVyYXRvckV4aXQgaXMgcGFzc2VkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cCwgdmFsLCB0Yik7CisgICAgICAgICAgICByZXR2YWwgPSBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFndF9nZW4sIHJldHZhbCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJldHZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGNoZWNrX2Vycm9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorCisgICAgYXNzZXJ0KG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfSVRFUik7CisKKyAgICByZXR2YWwgPSBnZW5fc2VuZF9leCgoUHlHZW5PYmplY3QgKilnZW4sIGFyZywgMCwgMCk7CisgICAgaWYgKG8tPmFndF9hcmdzKSB7CisgICAgICAgIHJldHVybiBhc3luY19nZW5fdW53cmFwX3ZhbHVlKG8tPmFndF9nZW4sIHJldHZhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogYWNsb3NlKCkgbW9kZSAqLworICAgICAgICBpZiAocmV0dmFsKSB7CisgICAgICAgICAgICBpZiAoX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXR2YWwpKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICAgICAgZ290byB5aWVsZF9jbG9zZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBnb3RvIGNoZWNrX2Vycm9yOworICAgICAgICB9CisgICAgfQorCit5aWVsZF9jbG9zZToKKyAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwgQVNZTkNfR0VOX0lHTk9SRURfRVhJVF9NU0cpOworICAgIHJldHVybiBOVUxMOworCitjaGVja19lcnJvcjoKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wQXN5bmNJdGVyYXRpb24pCisgICAgICAgIHx8IFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfR2VuZXJhdG9yRXhpdCkKKyAgICApIHsKKyAgICAgICAgby0+YWd0X3N0YXRlID0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRDsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsgICAgICAgICAgLyogaWdub3JlIHRoZXNlIGVycm9ycyAqLworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd190aHJvdyhQeUFzeW5jR2VuQVRocm93ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsOworCisgICAgaWYgKG8tPmFndF9zdGF0ZSA9PSBBV0FJVEFCTEVfU1RBVEVfSU5JVCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBOT05fSU5JVF9DT1JPX01TRyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChvLT5hZ3Rfc3RhdGUgPT0gQVdBSVRBQkxFX1NUQVRFX0NMT1NFRCkgeworICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR2YWwgPSBnZW5fdGhyb3coKFB5R2VuT2JqZWN0KilvLT5hZ3RfZ2VuLCBhcmdzKTsKKyAgICBpZiAoby0+YWd0X2FyZ3MpIHsKKyAgICAgICAgcmV0dXJuIGFzeW5jX2dlbl91bndyYXBfdmFsdWUoby0+YWd0X2dlbiwgcmV0dmFsKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBhY2xvc2UoKSBtb2RlICovCisgICAgICAgIGlmIChyZXR2YWwgJiYgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfQ2hlY2tFeGFjdChyZXR2YWwpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIEFTWU5DX0dFTl9JR05PUkVEX0VYSVRfTVNHKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgfQorfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fYXRocm93X2l0ZXJuZXh0KFB5QXN5bmNHZW5BVGhyb3cgKm8pCit7CisgICAgcmV0dXJuIGFzeW5jX2dlbl9hdGhyb3dfc2VuZChvLCBQeV9Ob25lKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYXN5bmNfZ2VuX2F0aHJvd19jbG9zZShQeUFzeW5jR2VuQVRocm93ICpvLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfQ0xPU0VEOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBhc3luY19nZW5fYXRocm93X21ldGhvZHNbXSA9IHsKKyAgICB7InNlbmQiLCAoUHlDRnVuY3Rpb24pYXN5bmNfZ2VuX2F0aHJvd19zZW5kLCBNRVRIX08sIHNlbmRfZG9jfSwKKyAgICB7InRocm93IiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfdGhyb3csIE1FVEhfVkFSQVJHUywgdGhyb3dfZG9jfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKWFzeW5jX2dlbl9hdGhyb3dfY2xvc2UsIE1FVEhfTk9BUkdTLCBjbG9zZV9kb2N9LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIGFzeW5jX2dlbl9hdGhyb3dfYXNfYXN5bmMgPSB7CisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9hd2FpdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYW1fYWl0ZXIgKi8KKyAgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCisKK1B5VHlwZU9iamVjdCBfUHlBc3luY0dlbkFUaHJvd19UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgImFzeW5jX2dlbmVyYXRvcl9hdGhyb3ciLCAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5QXN5bmNHZW5BVGhyb3cpLCAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWFzeW5jX2dlbl9hdGhyb3dfZGVhbGxvYywgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAmYXN5bmNfZ2VuX2F0aHJvd19hc19hc3luYywgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2FzeW5jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChpdGVybmV4dGZ1bmMpYXN5bmNfZ2VuX2F0aHJvd19pdGVybmV4dCwgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBhc3luY19nZW5fYXRocm93X21ldGhvZHMsICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2FzeW5jX2dlbl9hdGhyb3dfbmV3KFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlBc3luY0dlbkFUaHJvdyAqbzsKKyAgICBvID0gUHlPYmplY3RfTmV3KFB5QXN5bmNHZW5BVGhyb3csICZfUHlBc3luY0dlbkFUaHJvd19UeXBlKTsKKyAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBvLT5hZ3RfZ2VuID0gZ2VuOworICAgIG8tPmFndF9hcmdzID0gYXJnczsKKyAgICBvLT5hZ3Rfc3RhdGUgPSBBV0FJVEFCTEVfU1RBVEVfSU5JVDsKKyAgICBQeV9JTkNSRUYoZ2VuKTsKKyAgICBQeV9YSU5DUkVGKGFyZ3MpOworICAgIHJldHVybiAoUHlPYmplY3QqKW87Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2l0ZXJvYmplY3QuYyBiL09iamVjdHMvaXRlcm9iamVjdC5jCmluZGV4IGFiMjlmZjguLjc1YjJmY2IgMTAwNjQ0Ci0tLSBhL09iamVjdHMvaXRlcm9iamVjdC5jCisrKyBiL09iamVjdHMvaXRlcm9iamVjdC5jCkBAIC0yMDgsMzAgKzIwOCwzMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGNhbGxpdGVyX2l0ZXJuZXh0KGNhbGxpdGVyb2JqZWN0ICppdCkKIHsKLSAgICBpZiAoaXQtPml0X2NhbGxhYmxlICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGl0LT5pdF9jYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpbnQgb2s7Ci0gICAgICAgICAgICBvayA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChpdC0+aXRfc2VudGluZWwsIHJlc3VsdCwgUHlfRVEpOwotICAgICAgICAgICAgaWYgKG9rID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsgLyogQ29tbW9uIGNhc2UsIGZhc3QgcGF0aCAqLwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBpZiAob2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X2NhbGxhYmxlKTsKLSAgICAgICAgICAgICAgICBQeV9DTEVBUihpdC0+aXRfc2VudGluZWwpOwotICAgICAgICAgICAgfQorICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoaXQtPml0X2NhbGxhYmxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhpdC0+aXRfY2FsbGFibGUpOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBpbnQgb2s7CisKKyAgICAgICAgb2sgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPml0X3NlbnRpbmVsLCByZXN1bHQsIFB5X0VRKTsKKyAgICAgICAgaWYgKG9rID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7IC8qIENvbW1vbiBjYXNlLCBmYXN0IHBhdGggKi8KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICBpZiAob2sgPiAwKSB7CiAgICAgICAgICAgICBQeV9DTEVBUihpdC0+aXRfY2FsbGFibGUpOwogICAgICAgICAgICAgUHlfQ0xFQVIoaXQtPml0X3NlbnRpbmVsKTsKICAgICAgICAgfQogICAgIH0KKyAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1N0b3BJdGVyYXRpb24pKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9jYWxsYWJsZSk7CisgICAgICAgIFB5X0NMRUFSKGl0LT5pdF9zZW50aW5lbCk7CisgICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IDgxNWExYjkuLmRjZDdiNWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC00OSw3ICs0OSw3IEBACiAgICAgbmV3X2FsbG9jYXRlZCA9IChuZXdzaXplID4+IDMpICsgKG5ld3NpemUgPCA5ID8gMyA6IDYpOwogCiAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICBpZiAobmV3X2FsbG9jYXRlZCA+IFBZX1NJWkVfTUFYIC0gbmV3c2l6ZSkgeworICAgIGlmIChuZXdfYWxsb2NhdGVkID4gU0laRV9NQVggLSBuZXdzaXplKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9IGVsc2UgewpAQCAtNTksNyArNTksNyBAQAogICAgIGlmIChuZXdzaXplID09IDApCiAgICAgICAgIG5ld19hbGxvY2F0ZWQgPSAwOwogICAgIGl0ZW1zID0gc2VsZi0+b2JfaXRlbTsKLSAgICBpZiAobmV3X2FsbG9jYXRlZCA8PSAoUFlfU0laRV9NQVggLyBzaXplb2YoUHlPYmplY3QgKikpKQorICAgIGlmIChuZXdfYWxsb2NhdGVkIDw9IChTSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkpCiAgICAgICAgIFB5TWVtX1JFU0laRShpdGVtcywgUHlPYmplY3QgKiwgbmV3X2FsbG9jYXRlZCk7CiAgICAgZWxzZQogICAgICAgICBpdGVtcyA9IE5VTEw7CkBAIC04Miw2ICs4MiwxNiBAQAogc3RhdGljIHZvaWQKIHNob3dfYWxsb2Modm9pZCkKIHsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICp2YWx1ZTsKKyAgICBfUHlfSURFTlRJRklFUihzaG93YWxsb2Njb3VudCk7CisKKyAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7CisgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93YWxsb2Njb3VudCk7CisgICAgaWYgKHZhbHVlICE9IFB5X1RydWUpCisgICAgICAgIHJldHVybjsKKwogICAgIGZwcmludGYoc3RkZXJyLCAiTGlzdCBhbGxvY2F0aW9uczogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKICAgICAgICAgY291bnRfYWxsb2MpOwogICAgIGZwcmludGYoc3RkZXJyLCAiTGlzdCByZXVzZSB0aHJvdWdoIGZyZWVsaXN0OiAlIiBQWV9GT1JNQVRfU0laRV9UCkBAIC0xMzAsNyArMTQwLDYgQEAKIFB5TGlzdF9OZXcoUHlfc3NpemVfdCBzaXplKQogewogICAgIFB5TGlzdE9iamVjdCAqb3A7Ci0gICAgc2l6ZV90IG5ieXRlczsKICNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCiAgICAgc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewpAQCAtMTQzLDExICsxNTIsNiBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyB3aXRob3V0IGFuIGFjdHVhbCBvdmVyZmxvdywKLSAgICAgKiAgd2hpY2ggY2FuIGNhdXNlIGNvbXBpbGVyIHRvIG9wdGltaXNlIG91dCAqLwotICAgIGlmICgoc2l6ZV90KXNpemUgPiBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgbmJ5dGVzID0gc2l6ZSAqIHNpemVvZihQeU9iamVjdCAqKTsKICAgICBpZiAobnVtZnJlZSkgewogICAgICAgICBudW1mcmVlLS07CiAgICAgICAgIG9wID0gZnJlZV9saXN0W251bWZyZWVdOwpAQCAtMTY2LDEyICsxNzAsMTEgQEAKICAgICBpZiAoc2l6ZSA8PSAwKQogICAgICAgICBvcC0+b2JfaXRlbSA9IE5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIG9wLT5vYl9pdGVtID0gKFB5T2JqZWN0ICoqKSBQeU1lbV9NQUxMT0MobmJ5dGVzKTsKKyAgICAgICAgb3AtPm9iX2l0ZW0gPSAoUHlPYmplY3QgKiopIFB5TWVtX0NhbGxvYyhzaXplLCBzaXplb2YoUHlPYmplY3QgKikpOwogICAgICAgICBpZiAob3AtPm9iX2l0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG9wKTsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICB9Ci0gICAgICAgIG1lbXNldChvcC0+b2JfaXRlbSwgMCwgbmJ5dGVzKTsKICAgICB9CiAgICAgUHlfU0laRShvcCkgPSBzaXplOwogICAgIG9wLT5hbGxvY2F0ZWQgPSBzaXplOwpAQCAtMjE2LDcgKzIxOSw2IEBACiBQeUxpc3RfU2V0SXRlbShQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwKICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuZXdpdGVtKQogewotICAgIFB5T2JqZWN0ICpvbGRpdGVtOwogICAgIFB5T2JqZWN0ICoqcDsKICAgICBpZiAoIVB5TGlzdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlfWERFQ1JFRihuZXdpdGVtKTsKQEAgLTIzMCw5ICsyMzIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHAgPSAoKFB5TGlzdE9iamVjdCAqKW9wKSAtPiBvYl9pdGVtICsgaTsKLSAgICBvbGRpdGVtID0gKnA7Ci0gICAgKnAgPSBuZXdpdGVtOwotICAgIFB5X1hERUNSRUYob2xkaXRlbSk7CisgICAgUHlfWFNFVFJFRigqcCwgbmV3aXRlbSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG4rMSkgPT0gLTEpCisgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG4rMSkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAod2hlcmUgPCAwKSB7CkBAIC0yOTEsNyArMjkxLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpID09IC0xKQorICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBuKzEpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgUHlfSU5DUkVGKHYpOwpAQCAtNDgxLDkgKzQ4MSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNkZWZpbmUgYiAoKFB5TGlzdE9iamVjdCAqKWJiKQotICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKLSAgICBpZiAoc2l6ZSA8IDApCisgICAgaWYgKFB5X1NJWkUoYSkgPiBQWV9TU0laRV9UX01BWCAtIFB5X1NJWkUoYikpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKICAgICBucCA9IChQeUxpc3RPYmplY3QgKikgUHlMaXN0X05ldyhzaXplKTsKICAgICBpZiAobnAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTcxNCw3ICs3MTQsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CiAKLSAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgc2l6ZSpuKSA9PSAtMSkKKyAgICBpZiAobGlzdF9yZXNpemUoc2VsZiwgc2l6ZSpuKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcCA9IHNpemU7CkBAIC03MzMsNyArNzMzLDYgQEAKIHN0YXRpYyBpbnQKIGxpc3RfYXNzX2l0ZW0oUHlMaXN0T2JqZWN0ICphLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQogewotICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CiAgICAgaWYgKGkgPCAwIHx8IGkgPj0gUHlfU0laRShhKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJsaXN0IGFzc2lnbm1lbnQgaW5kZXggb3V0IG9mIHJhbmdlIik7CkBAIC03NDIsOSArNzQxLDcgQEAKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gbGlzdF9hc3Nfc2xpY2UoYSwgaSwgaSsxLCB2KTsKICAgICBQeV9JTkNSRUYodik7Ci0gICAgb2xkX3ZhbHVlID0gYS0+b2JfaXRlbVtpXTsKLSAgICBhLT5vYl9pdGVtW2ldID0gdjsKLSAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKKyAgICBQeV9TRVRSRUYoYS0+b2JfaXRlbVtpXSwgdik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTgwNyw3ICs4MDQsNyBAQAogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgICAgIH0KICAgICAgICAgbSA9IFB5X1NJWkUoc2VsZik7Ci0gICAgICAgIGlmIChsaXN0X3Jlc2l6ZShzZWxmLCBtICsgbikgPT0gLTEpIHsKKyAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG0gKyBuKSA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC04MzUsMjMgKzgzMiwyNSBAQAogCiAgICAgLyogR3Vlc3MgYSByZXN1bHQgbGlzdCBzaXplLiAqLwogICAgIG4gPSBQeU9iamVjdF9MZW5ndGhIaW50KGIsIDgpOwotICAgIGlmIChuID09IC0xKSB7CisgICAgaWYgKG4gPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBtID0gUHlfU0laRShzZWxmKTsKLSAgICBtbiA9IG0gKyBuOwotICAgIGlmIChtbiA+PSBtKSB7CisgICAgaWYgKG0gPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKKyAgICAgICAgLyogbSArIG4gb3ZlcmZsb3dlZDsgb24gdGhlIGNoYW5jZSB0aGF0IG4gbGllZCwgYW5kIHRoZXJlIHJlYWxseQorICAgICAgICAgKiBpcyBlbm91Z2ggcm9vbSwgaWdub3JlIGl0LiAgSWYgbiB3YXMgdGVsbGluZyB0aGUgdHJ1dGgsIHdlJ2xsCisgICAgICAgICAqIGV2ZW50dWFsbHkgcnVuIG91dCBvZiBtZW1vcnkgZHVyaW5nIHRoZSBsb29wLgorICAgICAgICAgKi8KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1uID0gbSArIG47CiAgICAgICAgIC8qIE1ha2Ugcm9vbS4gKi8KLSAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG1uKSA9PSAtMSkKKyAgICAgICAgaWYgKGxpc3RfcmVzaXplKHNlbGYsIG1uKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAvKiBNYWtlIHRoZSBsaXN0IHNhbmUgYWdhaW4uICovCiAgICAgICAgIFB5X1NJWkUoc2VsZikgPSBtOwogICAgIH0KLSAgICAvKiBFbHNlIG0gKyBuIG92ZXJmbG93ZWQ7IG9uIHRoZSBjaGFuY2UgdGhhdCBuIGxpZWQsIGFuZCB0aGVyZSByZWFsbHkKLSAgICAgKiBpcyBlbm91Z2ggcm9vbSwgaWdub3JlIGl0LiAgSWYgbiB3YXMgdGVsbGluZyB0aGUgdHJ1dGgsIHdlJ2xsCi0gICAgICogZXZlbnR1YWxseSBydW4gb3V0IG9mIG1lbW9yeSBkdXJpbmcgdGhlIGxvb3AuCi0gICAgICovCiAKICAgICAvKiBSdW4gaXRlcmF0b3IgdG8gZXhoYXVzdGlvbi4gKi8KICAgICBmb3IgKDs7KSB7CkBAIC0yNTAwLDkgKzI0OTksNiBAQAogICAgICAgICAgICAgICAgIHN0ZXAgPSAtc3RlcDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXNzZXJ0KChzaXplX3Qpc2xpY2VsZW5ndGggPD0KLSAgICAgICAgICAgICAgICAgICBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCopKTsKLQogICAgICAgICAgICAgZ2FyYmFnZSA9IChQeU9iamVjdCoqKQogICAgICAgICAgICAgICAgIFB5TWVtX01BTExPQyhzbGljZWxlbmd0aCpzaXplb2YoUHlPYmplY3QqKSk7CiAgICAgICAgICAgICBpZiAoIWdhcmJhZ2UpIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvbGlzdHNvcnQudHh0IGIvT2JqZWN0cy9saXN0c29ydC50eHQKaW5kZXggMTUyYTI3MC4uMTdkMjc5NyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9saXN0c29ydC50eHQKKysrIGIvT2JqZWN0cy9saXN0c29ydC50eHQKQEAgLTQ4Niw3ICs0ODYsNyBAQAogSSBmaXJzdCBsZWFybmVkIGFib3V0IHRoZSBnYWxsb3Bpbmcgc3RyYXRlZ3kgaW4gYSByZWxhdGVkIGNvbnRleHQ7IHNlZToKIAogICAgICJBZGFwdGl2ZSBTZXQgSW50ZXJzZWN0aW9ucywgVW5pb25zLCBhbmQgRGlmZmVyZW5jZXMiICgyMDAwKQotICAgIEVyaWsgRC4gRGVtYWluZSwgQWxlamFuZHJvIEzzcGV6LU9ydGl6LCBKLiBJYW4gTXVucm8KKyAgICBFcmlrIEQuIERlbWFpbmUsIEFsZWphbmRybyBMw7NwZXotT3J0aXosIEouIElhbiBNdW5ybwogCiBhbmQgaXRzIGZvbGxvd3VwKHMpLiAgQW4gZWFybGllciBwYXBlciBjYWxsZWQgdGhlIHNhbWUgc3RyYXRlZ3kKICJleHBvbmVudGlhbCBzZWFyY2giOgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0IGIvT2JqZWN0cy9sbm90YWJfbm90ZXMudHh0CmluZGV4IGQyNDdlZGQuLjUxNTM3NTcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG5vdGFiX25vdGVzLnR4dAorKysgYi9PYmplY3RzL2xub3RhYl9ub3Rlcy50eHQKQEAgLTEyLDQyICsxMiw0NyBAQAogICAgICAgICAwCQkgICAgMQogICAgICAgICA2CQkgICAgMgogICAgICAgIDUwCQkgICAgNwotICAgICAgMzUwICAgICAgICAgICAgICAgICAzMDcKLSAgICAgIDM2MSAgICAgICAgICAgICAgICAgMzA4CisgICAgICAzNTAgICAgICAgICAgICAgICAgIDIwNworICAgICAgMzYxICAgICAgICAgICAgICAgICAyMDgKIAogSW5zdGVhZCBvZiBzdG9yaW5nIHRoZXNlIG51bWJlcnMgbGl0ZXJhbGx5LCB3ZSBjb21wcmVzcyB0aGUgbGlzdCBieSBzdG9yaW5nIG9ubHkKLXRoZSBpbmNyZW1lbnRzIGZyb20gb25lIHJvdyB0byB0aGUgbmV4dC4gIENvbmNlcHR1YWxseSwgdGhlIHN0b3JlZCBsaXN0IG1pZ2h0Cit0aGUgZGlmZmVyZW5jZSBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQuICBDb25jZXB0dWFsbHksIHRoZSBzdG9yZWQgbGlzdCBtaWdodAogbG9vayBsaWtlOgogCi0gICAgMCwgMSwgIDYsIDEsICA0NCwgNSwgIDMwMCwgMzAwLCAgMTEsIDEKKyAgICAwLCAxLCAgNiwgMSwgIDQ0LCA1LCAgMzAwLCAyMDAsICAxMSwgMQogCi1UaGUgYWJvdmUgZG9lc24ndCByZWFsbHkgd29yaywgYnV0IGl0J3MgYSBzdGFydC4gTm90ZSB0aGF0IGFuIHVuc2lnbmVkIGJ5dGUKLWNhbid0IGhvbGQgbmVnYXRpdmUgdmFsdWVzLCBvciB2YWx1ZXMgbGFyZ2VyIHRoYW4gMjU1LCBhbmQgdGhlIGFib3ZlIGV4YW1wbGUKLWNvbnRhaW5zIHR3byBzdWNoIHZhbHVlcy4gU28gd2UgbWFrZSB0d28gdHdlYWtzOgorVGhlIGFib3ZlIGRvZXNuJ3QgcmVhbGx5IHdvcmssIGJ1dCBpdCdzIGEgc3RhcnQuIEFuIHVuc2lnbmVkIGJ5dGUgKGJ5dGUgY29kZQorb2Zmc2V0KSBjYW4ndCBob2xkIG5lZ2F0aXZlIHZhbHVlcywgb3IgdmFsdWVzIGxhcmdlciB0aGFuIDI1NSwgYSBzaWduZWQgYnl0ZQorKGxpbmUgbnVtYmVyKSBjYW4ndCBob2xkIHZhbHVlcyBsYXJnZXIgdGhhbiAxMjcgb3IgbGVzcyB0aGFuIC0xMjgsIGFuZCB0aGUKK2Fib3ZlIGV4YW1wbGUgY29udGFpbnMgdHdvIHN1Y2ggdmFsdWVzLiBTbyB3ZSBtYWtlIHR3byB0d2Vha3M6CiAKLSAoYSkgdGhlcmUncyBhIGRlZXAgYXNzdW1wdGlvbiB0aGF0IGJ5dGUgY29kZSBvZmZzZXRzIGFuZCB0aGVpciBjb3JyZXNwb25kaW5nCi0gbGluZSAjcyBib3RoIGluY3JlYXNlIG1vbm90b25pY2FsbHksIGFuZAotIChiKSBpZiBhdCBsZWFzdCBvbmUgY29sdW1uIGp1bXBzIGJ5IG1vcmUgdGhhbiAyNTUgZnJvbSBvbmUgcm93IHRvIHRoZSBuZXh0LAotIG1vcmUgdGhhbiBvbmUgcGFpciBpcyB3cml0dGVuIHRvIHRoZSB0YWJsZS4gSW4gY2FzZSAjYiwgdGhlcmUncyBubyB3YXkgdG8ga25vdwotIGZyb20gbG9va2luZyBhdCB0aGUgdGFibGUgbGF0ZXIgaG93IG1hbnkgd2VyZSB3cml0dGVuLiAgVGhhdCdzIHRoZSBkZWxpY2F0ZQotIHBhcnQuICBBIHVzZXIgb2YgY29fbG5vdGFiIGRlc2lyaW5nIHRvIGZpbmQgdGhlIHNvdXJjZSBsaW5lIG51bWJlcgotIGNvcnJlc3BvbmRpbmcgdG8gYSBieXRlY29kZSBhZGRyZXNzIEEgc2hvdWxkIGRvIHNvbWV0aGluZyBsaWtlIHRoaXMKKyAoYSkgdGhlcmUncyBhIGRlZXAgYXNzdW1wdGlvbiB0aGF0IGJ5dGUgY29kZSBvZmZzZXRzIGluY3JlYXNlIG1vbm90b25pY2FsbHksCisgYW5kCisgKGIpIGlmIGJ5dGUgY29kZSBvZmZzZXQganVtcHMgYnkgbW9yZSB0aGFuIDI1NSBmcm9tIG9uZSByb3cgdG8gdGhlIG5leHQsIG9yIGlmCisgc291cmNlIGNvZGUgbGluZSBudW1iZXIganVtcHMgYnkgbW9yZSB0aGFuIDEyNyBvciBsZXNzIHRoYW4gLTEyOCBmcm9tIG9uZSByb3cKKyB0byB0aGUgbmV4dCwgbW9yZSB0aGFuIG9uZSBwYWlyIGlzIHdyaXR0ZW4gdG8gdGhlIHRhYmxlLiBJbiBjYXNlICNiLAorIHRoZXJlJ3Mgbm8gd2F5IHRvIGtub3cgZnJvbSBsb29raW5nIGF0IHRoZSB0YWJsZSBsYXRlciBob3cgbWFueSB3ZXJlIHdyaXR0ZW4uCisgVGhhdCdzIHRoZSBkZWxpY2F0ZSBwYXJ0LiAgQSB1c2VyIG9mIGNvX2xub3RhYiBkZXNpcmluZyB0byBmaW5kIHRoZSBzb3VyY2UKKyBsaW5lIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIGEgYnl0ZWNvZGUgYWRkcmVzcyBBIHNob3VsZCBkbyBzb21ldGhpbmcgbGlrZQorIHRoaXM6CiAKICAgICBsaW5lbm8gPSBhZGRyID0gMAogICAgIGZvciBhZGRyX2luY3IsIGxpbmVfaW5jciBpbiBjb19sbm90YWI6CiAgICAgICAgIGFkZHIgKz0gYWRkcl9pbmNyCiAgICAgICAgIGlmIGFkZHIgPiBBOgogICAgICAgICAgICAgcmV0dXJuIGxpbmVubworICAgICAgICBpZiBsaW5lX2luY3IgPj0gMHg4MDoKKyAgICAgICAgICAgIGxpbmVfaW5jciAtPSAweDEwMAogICAgICAgICBsaW5lbm8gKz0gbGluZV9pbmNyCiAKIChJbiBDLCB0aGlzIGlzIGltcGxlbWVudGVkIGJ5IFB5Q29kZV9BZGRyMkxpbmUoKS4pICBJbiBvcmRlciBmb3IgdGhpcyB0byB3b3JrLAogd2hlbiB0aGUgYWRkciBmaWVsZCBpbmNyZW1lbnRzIGJ5IG1vcmUgdGhhbiAyNTUsIHRoZSBsaW5lICMgaW5jcmVtZW50IGluIGVhY2gKIHBhaXIgZ2VuZXJhdGVkIG11c3QgYmUgMCB1bnRpbCB0aGUgcmVtYWluaW5nIGFkZHIgaW5jcmVtZW50IGlzIDwgMjU2LiAgU28sIGluCiB0aGUgZXhhbXBsZSBhYm92ZSwgYXNzZW1ibGVfbG5vdGFiIGluIGNvbXBpbGUuYyBzaG91bGQgbm90IChhcyB3YXMgYWN0dWFsbHkgZG9uZQotdW50aWwgMi4yKSBleHBhbmQgMzAwLCAzMDAgdG8KK3VudGlsIDIuMikgZXhwYW5kIDMwMCwgMjAwIHRvCiAgICAgMjU1LCAyNTUsIDQ1LCA0NSwKIGJ1dCB0bwotICAgIDI1NSwgMCwgNDUsIDI1NSwgMCwgNDUuCisgICAgMjU1LCAwLCA0NSwgMTI4LCAwLCA3Mi4KIAogVGhlIGFib3ZlIGlzIHN1ZmZpY2llbnQgdG8gcmVjb25zdHJ1Y3QgbGluZSBudW1iZXJzIGZvciB0cmFjZWJhY2tzLCBidXQgbm90IGZvcgogbGluZSB0cmFjaW5nLiAgVHJhY2luZyBpcyBoYW5kbGVkIGJ5IFB5Q29kZV9DaGVja0xpbmVOdW1iZXIoKSBpbiBjb2Rlb2JqZWN0LmMKQEAgLTkwLDE2ICs5NSwxNiBAQAogICAgICAgICAgICAgICA2IFBPUF9KVU1QX0lGX0ZBTFNFICAgICAgIDE3CiAKICAgMyAgICAgICAgICAgOSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAxMiBQUklOVF9JVEVNICAgICAgICAgIAorICAgICAgICAgICAgIDEyIFBSSU5UX0lURU0KIAotICA0ICAgICAgICAgIDEzIEJSRUFLX0xPT1AgICAgICAgICAgCisgIDQgICAgICAgICAgMTMgQlJFQUtfTE9PUAogICAgICAgICAgICAgIDE0IEpVTVBfQUJTT0xVVEUgICAgICAgICAgICAzCi0gICAgICAgID4+ICAgMTcgUE9QX0JMT0NLICAgICAgICAgICAKKyAgICAgICAgPj4gICAxNyBQT1BfQkxPQ0sKIAogICA2ICAgICAgICAgIDE4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgyKQotICAgICAgICAgICAgIDIxIFBSSU5UX0lURU0gICAgICAgICAgCisgICAgICAgICAgICAgMjEgUFJJTlRfSVRFTQogICAgICAgICA+PiAgIDIyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgIDI1IFJFVFVSTl9WQUxVRSAgICAgICAgCisgICAgICAgICAgICAgMjUgUkVUVVJOX1ZBTFVFCiAKIElmICdhJyBpcyBmYWxzZSwgZXhlY3V0aW9uIHdpbGwganVtcCB0byB0aGUgUE9QX0JMT0NLIGluc3RydWN0aW9uIGF0IG9mZnNldCAxNwogYW5kIHRoZSBjb19sbm90YWIgd2lsbCBjbGFpbSB0aGF0IGV4ZWN1dGlvbiBoYXMgbW92ZWQgdG8gbGluZSA0LCB3aGljaCBpcyB3cm9uZy4KZGlmZiAtLWdpdCBhL09iamVjdHMvbG9uZ29iamVjdC5jIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKaW5kZXggMGNjODUwZS4uYTQ1MzI0MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9sb25nb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9sb25nb2JqZWN0LmMKQEAgLTcyMiw3ICs3MjIsNyBAQAogICAgIGFzc2VydChuZGlnaXRzID09IDAgfHwgdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdICE9IDApOwogICAgIGlmIChuZGlnaXRzID4gMCkgewogICAgICAgICBkaWdpdCBtc2QgPSB2LT5vYl9kaWdpdFtuZGlnaXRzIC0gMV07Ci0gICAgICAgIGlmICgoc2l6ZV90KShuZGlnaXRzIC0gMSkgPiBQWV9TSVpFX01BWCAvIChzaXplX3QpUHlMb25nX1NISUZUKQorICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CiAgICAgICAgIHJlc3VsdCA9IChzaXplX3QpKG5kaWdpdHMgLSAxKSAqIChzaXplX3QpUHlMb25nX1NISUZUOwogICAgICAgICBkbyB7CkBAIC05OTAsMTYgKzk5MCwxMyBAQAogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCiB7CiAjaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwotICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZykoUHlfdWludHB0cl90KXApOworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZykodWludHB0cl90KXApOwogI2Vsc2UKIAotI2lmbmRlZiBIQVZFX0xPTkdfTE9ORwotIyAgIGVycm9yICJQeUxvbmdfRnJvbVZvaWRQdHI6IHNpemVvZih2b2lkKikgPiBzaXplb2YobG9uZyksIGJ1dCBubyBsb25nIGxvbmciCi0jZW5kaWYKICNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAotIyAgIGVycm9yICJQeUxvbmdfRnJvbVZvaWRQdHI6IHNpemVvZihQWV9MT05HX0xPTkcpIDwgc2l6ZW9mKHZvaWQqKSIKKyMgICBlcnJvciAiUHlMb25nX0Zyb21Wb2lkUHRyOiBzaXplb2YobG9uZyBsb25nKSA8IHNpemVvZih2b2lkKikiCiAjZW5kaWYKLSAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKFB5X3VpbnRwdHJfdClwKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBsb25nIGxvbmcpKHVpbnRwdHJfdClwKTsKICNlbmRpZiAvKiBTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HICovCiAKIH0KQEAgLTEwMTgsMTMgKzEwMTUsMTAgQEAKICAgICAgICAgeCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyh2dik7CiAjZWxzZQogCi0jaWZuZGVmIEhBVkVfTE9OR19MT05HCi0jICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZih2b2lkKikgPiBzaXplb2YobG9uZyksIGJ1dCBubyBsb25nIGxvbmciCi0jZW5kaWYKICNpZiBTSVpFT0ZfTE9OR19MT05HIDwgU0laRU9GX1ZPSURfUAotIyAgIGVycm9yICJQeUxvbmdfQXNWb2lkUHRyOiBzaXplb2YoUFlfTE9OR19MT05HKSA8IHNpemVvZih2b2lkKikiCisjICAgZXJyb3IgIlB5TG9uZ19Bc1ZvaWRQdHI6IHNpemVvZihsb25nIGxvbmcpIDwgc2l6ZW9mKHZvaWQqKSIKICNlbmRpZgotICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGxvbmcgbG9uZyB4OwogCiAgICAgaWYgKFB5TG9uZ19DaGVjayh2dikgJiYgX1B5TG9uZ19TaWduKHZ2KSA8IDApCiAgICAgICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZyh2dik7CkBAIC0xMDM4LDIyICsxMDMyLDIwIEBACiAgICAgcmV0dXJuICh2b2lkICopeDsKIH0KIAotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0KLS8qIEluaXRpYWwgUFlfTE9OR19MT05HIHN1cHBvcnQgYnkgQ2hyaXMgSGVyYm9ydGggKGNocmlzaEBxbnguY29tKSwgbGF0ZXIKKy8qIEluaXRpYWwgbG9uZyBsb25nIHN1cHBvcnQgYnkgQ2hyaXMgSGVyYm9ydGggKGNocmlzaEBxbnguY29tKSwgbGF0ZXIKICAqIHJld3JpdHRlbiB0byB1c2UgdGhlIG5ld2VyIFB5TG9uZ197QXMsRnJvbX1CeXRlQXJyYXkgQVBJLgogICovCiAKLSNkZWZpbmUgUFlfQUJTX0xMT05HX01JTiAoMC0odW5zaWduZWQgUFlfTE9OR19MT05HKVBZX0xMT05HX01JTikKKyNkZWZpbmUgUFlfQUJTX0xMT05HX01JTiAoMC0odW5zaWduZWQgbG9uZyBsb25nKVBZX0xMT05HX01JTikKIAotLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgUFlfTE9OR19MT05HIGludC4gKi8KKy8qIENyZWF0ZSBhIG5ldyBpbnQgb2JqZWN0IGZyb20gYSBDIGxvbmcgbG9uZyBpbnQuICovCiAKIFB5T2JqZWN0ICoKLVB5TG9uZ19Gcm9tTG9uZ0xvbmcoUFlfTE9OR19MT05HIGl2YWwpCitQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyBpdmFsKQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgYWJzX2l2YWw7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHQ7ICAvKiB1bnNpZ25lZCBzbyA+PiBkb2Vzbid0IHByb3BhZ2F0ZSBzaWduIGJpdCAqLworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhYnNfaXZhbDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdDsgIC8qIHVuc2lnbmVkIHNvID4+IGRvZXNuJ3QgcHJvcGFnYXRlIHNpZ24gYml0ICovCiAgICAgaW50IG5kaWdpdHMgPSAwOwogICAgIGludCBuZWdhdGl2ZSA9IDA7CiAKQEAgLTEwNjEsMTEgKzEwNTMsMTEgQEAKICAgICBpZiAoaXZhbCA8IDApIHsKICAgICAgICAgLyogYXZvaWQgc2lnbmVkIG92ZXJmbG93IG9uIG5lZ2F0aW9uOyAgc2VlIGNvbW1lbnRzCiAgICAgICAgICAgIGluIFB5TG9uZ19Gcm9tTG9uZyBhYm92ZS4gKi8KLSAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgUFlfTE9OR19MT05HKSgtMS1pdmFsKSArIDE7CisgICAgICAgIGFic19pdmFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoLTEtaXZhbCkgKyAxOwogICAgICAgICBuZWdhdGl2ZSA9IDE7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBhYnNfaXZhbCA9ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpaXZhbDsKKyAgICAgICAgYWJzX2l2YWwgPSAodW5zaWduZWQgbG9uZyBsb25nKWl2YWw7CiAgICAgfQogCiAgICAgLyogQ291bnQgdGhlIG51bWJlciBvZiBQeXRob24gZGlnaXRzLgpAQCAtMTA5MCwxOSArMTA4MiwxOSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKil2OwogfQogCi0vKiBDcmVhdGUgYSBuZXcgaW50IG9iamVjdCBmcm9tIGEgQyB1bnNpZ25lZCBQWV9MT05HX0xPTkcgaW50LiAqLworLyogQ3JlYXRlIGEgbmV3IGludCBvYmplY3QgZnJvbSBhIEMgdW5zaWduZWQgbG9uZyBsb25nIGludC4gKi8KIAogUHlPYmplY3QgKgotUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpdmFsKQorUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIGxvbmcgbG9uZyBpdmFsKQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdDsKICAgICBpbnQgbmRpZ2l0cyA9IDA7CiAKICAgICBpZiAoaXZhbCA8IFB5TG9uZ19CQVNFKQogICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWl2YWwpOwogICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgUHl0aG9uIGRpZ2l0cy4gKi8KLSAgICB0ID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylpdmFsOworICAgIHQgPSAodW5zaWduZWQgbG9uZyBsb25nKWl2YWw7CiAgICAgd2hpbGUgKHQpIHsKICAgICAgICAgKytuZGlnaXRzOwogICAgICAgICB0ID4+PSBQeUxvbmdfU0hJRlQ7CkBAIC0xMTkxLDExICsxMTgzLDExIEBACiAvKiBHZXQgYSBDIGxvbmcgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4KICAgIF9faW50X18gbWV0aG9kLiAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLwogCi1QWV9MT05HX0xPTkcKK2xvbmcgbG9uZwogUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICBQWV9MT05HX0xPTkcgYnl0ZXM7CisgICAgbG9uZyBsb25nIGJ5dGVzOwogICAgIGludCByZXM7CiAgICAgaW50IGRvX2RlY3JlZiA9IDA7IC8qIGlmIG5iX2ludCB3YXMgY2FsbGVkICovCiAKQEAgLTEyMzMsMzAgKzEyMjUsMzAgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgIH0KIAotICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgUFlfTE9OR19MT05HIGluID8gOiBleHByZXNzaW9ucyAqLworICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgbG9uZyBsb25nIGluID8gOiBleHByZXNzaW9ucyAqLwogICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gKFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuIChsb25nIGxvbmcpLTE7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gYnl0ZXM7CiB9CiAKLS8qIEdldCBhIEMgdW5zaWduZWQgUFlfTE9OR19MT05HIGludCBmcm9tIGFuIGludCBvYmplY3QuCisvKiBHZXQgYSBDIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LgogICAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLwogCi11bnNpZ25lZCBQWV9MT05HX0xPTkcKK3Vuc2lnbmVkIGxvbmcgbG9uZwogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhQeU9iamVjdCAqdnYpCiB7CiAgICAgUHlMb25nT2JqZWN0ICp2OwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBieXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXM7CiAgICAgaW50IHJlczsKIAogICAgIGlmICh2diA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpLTE7CiAgICAgfQogICAgIGlmICghUHlMb25nX0NoZWNrKHZ2KSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYW4gaW50ZWdlciBpcyByZXF1aXJlZCIpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nIGxvbmcpLTE7CiAgICAgfQogCiAgICAgdiA9IChQeUxvbmdPYmplY3QqKXZ2OwpAQCAtMTI2OCw5ICsxMjYwLDkgQEAKICAgICByZXMgPSBfUHlMb25nX0FzQnl0ZUFycmF5KChQeUxvbmdPYmplY3QgKil2diwgKHVuc2lnbmVkIGNoYXIgKikmYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFT0ZfTE9OR19MT05HLCBQWV9MSVRUTEVfRU5ESUFOLCAwKTsKIAotICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgUFlfTE9OR19MT05HIGluID8gOiBleHByZXNzaW9ucyAqLworICAgIC8qIFBsYW4gOSBjYW4ndCBoYW5kbGUgbG9uZyBsb25nIGluID8gOiBleHByZXNzaW9ucyAqLwogICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORylyZXM7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKXJlczsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBieXRlczsKIH0KQEAgLTEyNzgsMTEgKzEyNzAsMTEgQEAKIC8qIEdldCBhIEMgdW5zaWduZWQgbG9uZyBpbnQgZnJvbSBhbiBpbnQgb2JqZWN0LCBpZ25vcmluZyB0aGUgaGlnaCBiaXRzLgogICAgUmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvciBjb25kaXRpb24gaWYgYW4gZXJyb3Igb2NjdXJzLiAqLwogCi1zdGF0aWMgdW5zaWduZWQgUFlfTE9OR19MT05HCitzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nCiBfUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2soUHlPYmplY3QgKnZ2KQogewogICAgIFB5TG9uZ09iamVjdCAqdjsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgeDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeDsKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgaW50IHNpZ247CiAKQEAgLTEzMDgsMTEgKzEzMDAsMTEgQEAKICAgICByZXR1cm4geCAqIHNpZ247CiB9CiAKLXVuc2lnbmVkIFBZX0xPTkdfTE9ORwordW5zaWduZWQgbG9uZyBsb25nCiBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb3ApCiB7CiAgICAgUHlMb25nT2JqZWN0ICpsbzsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWw7CiAKICAgICBpZiAob3AgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKQEAgLTEzMjUsNyArMTMxNyw3IEBACiAKICAgICBsbyA9IF9QeUxvbmdfRnJvbU5iSW50KG9wKTsKICAgICBpZiAobG8gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogCiAgICAgdmFsID0gX1B5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKChQeU9iamVjdCAqKWxvKTsKICAgICBQeV9ERUNSRUYobG8pOwpAQCAtMTM0MiwxMyArMTMzNCwxMyBAQAogICAgSW4gdGhpcyBjYXNlICpvdmVyZmxvdyB3aWxsIGJlIDAuCiAqLwogCi1QWV9MT05HX0xPTkcKK2xvbmcgbG9uZwogUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqdnYsIGludCAqb3ZlcmZsb3cpCiB7CiAgICAgLyogVGhpcyB2ZXJzaW9uIGJ5IFRpbSBQZXRlcnMgKi8KICAgICBQeUxvbmdPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHgsIHByZXY7Ci0gICAgUFlfTE9OR19MT05HIHJlczsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgeCwgcHJldjsKKyAgICBsb25nIGxvbmcgcmVzOwogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgc2lnbjsKICAgICBpbnQgZG9fZGVjcmVmID0gMDsgLyogaWYgbmJfaW50IHdhcyBjYWxsZWQgKi8KQEAgLTE0MDAsOCArMTM5Miw4IEBACiAgICAgICAgIC8qIEhhdmVuJ3QgbG9zdCBhbnkgYml0cywgYnV0IGNhc3RpbmcgdG8gbG9uZyByZXF1aXJlcyBleHRyYQogICAgICAgICAgKiBjYXJlIChzZWUgY29tbWVudCBhYm92ZSkuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoeCA8PSAodW5zaWduZWQgUFlfTE9OR19MT05HKVBZX0xMT05HX01BWCkgewotICAgICAgICAgICAgcmVzID0gKFBZX0xPTkdfTE9ORyl4ICogc2lnbjsKKyAgICAgICAgaWYgKHggPD0gKHVuc2lnbmVkIGxvbmcgbG9uZylQWV9MTE9OR19NQVgpIHsKKyAgICAgICAgICAgIHJlcyA9IChsb25nIGxvbmcpeCAqIHNpZ247CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoc2lnbiA8IDAgJiYgeCA9PSBQWV9BQlNfTExPTkdfTUlOKSB7CiAgICAgICAgICAgICByZXMgPSBQWV9MTE9OR19NSU47CkBAIC0xNDE4LDggKzE0MTAsNiBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwotCiAjZGVmaW5lIENIRUNLX0JJTk9QKHYsdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSB8fCAhUHlMb25nX0NoZWNrKHcpKSAgICAgICBcCkBAIC0xNTgzLDEzICsxNTczLDE2IEBACiBzdGF0aWMgaW50CiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKFB5T2JqZWN0ICphYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyICpieXRlc193cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipieXRlc19zdHIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICpzY3JhdGNoLCAqYTsKLSAgICBQeU9iamVjdCAqc3RyOworICAgIFB5T2JqZWN0ICpzdHIgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgc3RybGVuLCBzaXplX2EsIGksIGo7CiAgICAgZGlnaXQgKnBvdXQsICpwaW4sIHJlbSwgdGVucG93OwogICAgIGludCBuZWdhdGl2ZTsKKyAgICBpbnQgZDsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAKICAgICBhID0gKFB5TG9uZ09iamVjdCAqKWFhOwpAQCAtMTYwNywxNSArMTYwMCwxNyBAQAogCiAgICAgICAgQnV0IGxvZzIoYSkgPCBzaXplX2EgKiBQeUxvbmdfU0hJRlQsIGFuZAogICAgICAgIGxvZzIoX1B5TG9uZ19ERUNJTUFMX0JBU0UpID0gbG9nMigxMCkgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IDMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+IDMuMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVAorCisgICAgICAgICBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSA9CisgICAgICAgICAgICAgc2l6ZV9hICsgc2l6ZV9hIC8gZCA8IHNpemVfYSArIHNpemVfYSAvIGZsb29yKGQpLAorICAgICAgIHdoZXJlIGQgPSAoMy4zICogX1B5TG9uZ19ERUNJTUFMX1NISUZUKSAvCisgICAgICAgICAgICAgICAgIChQeUxvbmdfU0hJRlQgLSAzLjMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpCiAgICAgKi8KLSAgICBpZiAoc2l6ZV9hID4gUFlfU1NJWkVfVF9NQVggLyBQeUxvbmdfU0hJRlQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW50IHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiB0aGUgZXhwcmVzc2lvbiBzaXplX2EgKiBQeUxvbmdfU0hJRlQgaXMgbm93IHNhZmUgZnJvbSBvdmVyZmxvdyAqLwotICAgIHNpemUgPSAxICsgc2l6ZV9hICogUHlMb25nX1NISUZUIC8gKDMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpOworICAgIGQgPSAoMzMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpIC8KKyAgICAgICAgKDEwICogUHlMb25nX1NISUZUIC0gMzMgKiBfUHlMb25nX0RFQ0lNQUxfU0hJRlQpOworICAgIGFzc2VydChzaXplX2EgPCBQWV9TU0laRV9UX01BWC8yKTsKKyAgICBzaXplID0gMSArIHNpemVfYSArIHNpemVfYSAvIGQ7CiAgICAgc2NyYXRjaCA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChzY3JhdGNoID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2NjMsNyArMTY1OCwxMyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGtpbmQgPSB3cml0ZXItPmtpbmQ7Ci0gICAgICAgIHN0ciA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAqYnl0ZXNfc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShieXRlc193cml0ZXIsICpieXRlc19zdHIsIHN0cmxlbik7CisgICAgICAgIGlmICgqYnl0ZXNfc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgc3RyID0gUHlVbmljb2RlX05ldyhzdHJsZW4sICc5Jyk7CkBAIC0xNjc0LDEzICsxNjc1LDggQEAKICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CiAgICAgfQogCi0jZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBXUklURV9ESUdJVFMocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAotICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseSAgICAgICAgICAgIFwKICAgICAgICAgICAgX1B5TG9uZ19ERUNJTUFMX1NISUZUIGRpZ2l0cyBlYWNoICovICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTcwMCw2ICsxNjk2LDE2IEBACiAgICAgICAgIC8qIGFuZCBzaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBXUklURV9VTklDT0RFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBXUklURV9ESUdJVFMocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIC8qIGNoZWNrIHdlJ3ZlIGNvdW50ZWQgY29ycmVjdGx5ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE3MDksMjUgKzE3MTUsMzQgQEAKICAgICB9IHdoaWxlICgwKQogCiAgICAgLyogZmlsbCB0aGUgc3RyaW5nIHJpZ2h0LXRvLWxlZnQgKi8KLSAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgIGlmIChieXRlc193cml0ZXIpIHsKKyAgICAgICAgY2hhciAqcCA9ICpieXRlc19zdHIgKyBzdHJsZW47CisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsKKyAgICAgICAgYXNzZXJ0KHAgPT0gKmJ5dGVzX3N0cik7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMSAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzEpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9CiAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgewogICAgICAgICBQeV9VQ1MyICpwOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzIpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfVUNTNCAqcDsKICAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1M0KTsKICAgICB9CiAjdW5kZWYgV1JJVEVfRElHSVRTCisjdW5kZWYgV1JJVEVfVU5JQ09ERV9ESUdJVFMKIAogICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKICAgICBpZiAod3JpdGVyKSB7CiAgICAgICAgIHdyaXRlci0+cG9zICs9IHN0cmxlbjsKICAgICB9CisgICAgZWxzZSBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgICgqYnl0ZXNfc3RyKSArPSBzdHJsZW47CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHN0ciwgMSkpOwogICAgICAgICAqcF9vdXRwdXQgPSAoUHlPYmplY3QgKilzdHI7CkBAIC0xNzM5LDcgKzE3NTQsNyBAQAogbG9uZ190b19kZWNpbWFsX3N0cmluZyhQeU9iamVjdCAqYWEpCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgaWYgKGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoYWEsICZ2LCBOVUxMKSA9PSAtMSkKKyAgICBpZiAobG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChhYSwgJnYsIE5VTEwsIE5VTEwsIE5VTEwpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gdjsKIH0KQEAgLTE3NTEsMTAgKzE3NjYsMTEgQEAKIAogc3RhdGljIGludAogbG9uZ19mb3JtYXRfYmluYXJ5KFB5T2JqZWN0ICphYSwgaW50IGJhc2UsIGludCBhbHRlcm5hdGUsCi0gICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipwX291dHB1dCwgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICBfUHlCeXRlc1dyaXRlciAqYnl0ZXNfd3JpdGVyLCBjaGFyICoqYnl0ZXNfc3RyKQogewogICAgIFB5TG9uZ09iamVjdCAqYSA9IChQeUxvbmdPYmplY3QgKilhYTsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzejsKICAgICBQeV9zc2l6ZV90IHNpemVfYTsKICAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CkBAIC0xODExLDcgKzE4MjcsMTEgQEAKICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN6LCAneCcpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOwotICAgICAgICB2ID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgICpieXRlc19zdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKGJ5dGVzX3dyaXRlciwgKmJ5dGVzX3N0ciwgc3opOworICAgICAgICBpZiAoKmJ5dGVzX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcoc3osICd4Jyk7CkBAIC0xODIwLDEzICsxODQwLDggQEAKICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHYpOwogICAgIH0KIAotI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBXUklURV9ESUdJVFMocCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN6OyBcCi0gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpICsgc3o7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChzaXplX2EgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJzAnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODYxLDMwICsxODc2LDUwIEBACiAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChuZWdhdGl2ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAqLS1wID0gJy0nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBXUklURV9VTklDT0RFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAod3JpdGVyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN6OyBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpICsgc3o7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBhc3NlcnQocCA9PSAoKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zKSk7IFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIGFzc2VydChwID09IChUWVBFKilQeVVuaWNvZGVfREFUQSh2KSk7ICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCi0gICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICBpZiAoYnl0ZXNfd3JpdGVyKSB7CisgICAgICAgIGNoYXIgKnAgPSAqYnl0ZXNfc3RyICsgc3o7CisgICAgICAgIFdSSVRFX0RJR0lUUyhwKTsKKyAgICAgICAgYXNzZXJ0KHAgPT0gKmJ5dGVzX3N0cik7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgUHlfVUNTMSAqcDsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzEpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9CiAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgewogICAgICAgICBQeV9VQ1MyICpwOwotICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgICAgIFdSSVRFX1VOSUNPREVfRElHSVRTKFB5X1VDUzIpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlfVUNTNCAqcDsKICAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgICAgICBXUklURV9VTklDT0RFX0RJR0lUUyhQeV9VQ1M0KTsKICAgICB9CiAjdW5kZWYgV1JJVEVfRElHSVRTCisjdW5kZWYgV1JJVEVfVU5JQ09ERV9ESUdJVFMKIAogICAgIGlmICh3cml0ZXIpIHsKICAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3o7CiAgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVzX3dyaXRlcikgeworICAgICAgICAoKmJ5dGVzX3N0cikgKz0gc3o7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKICAgICAgICAgKnBfb3V0cHV0ID0gdjsKQEAgLTE4OTgsOSArMTkzMyw5IEBACiAgICAgUHlPYmplY3QgKnN0cjsKICAgICBpbnQgZXJyOwogICAgIGlmIChiYXNlID09IDEwKQotICAgICAgICBlcnIgPSBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgJnN0ciwgTlVMTCk7CisgICAgICAgIGVyciA9IGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmc3RyLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIGVyciA9IGxvbmdfZm9ybWF0X2JpbmFyeShvYmosIGJhc2UsIDEsICZzdHIsIE5VTEwpOworICAgICAgICBlcnIgPSBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCAxLCAmc3RyLCBOVUxMLCBOVUxMLCBOVUxMKTsKICAgICBpZiAoZXJyID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gc3RyOwpAQCAtMTkxMiw5ICsxOTQ3LDMxIEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSkKIHsKICAgICBpZiAoYmFzZSA9PSAxMCkKLSAgICAgICAgcmV0dXJuIGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCB3cml0ZXIpOworICAgICAgICByZXR1cm4gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosIE5VTEwsIHdyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCB3cml0ZXIpOworICAgICAgICByZXR1cm4gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCB3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7Cit9CisKK2NoYXIqCitfUHlMb25nX0Zvcm1hdEJ5dGVzV3JpdGVyKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCit7CisgICAgY2hhciAqc3RyMjsKKyAgICBpbnQgcmVzOworICAgIHN0cjIgPSBzdHI7CisgICAgaWYgKGJhc2UgPT0gMTApCisgICAgICAgIHJlcyA9IGxvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwob2JqLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlciwgJnN0cjIpOworICAgIGVsc2UKKyAgICAgICAgcmVzID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgYWx0ZXJuYXRlLCBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLCAmc3RyMik7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChzdHIyICE9IE5VTEwpOworICAgIHJldHVybiBzdHIyOwogfQogCiAvKiBUYWJsZSBvZiBkaWdpdCB2YWx1ZXMgZm9yIDgtYml0IHN0cmluZyAtPiBpbnRlZ2VyIGNvbnZlcnNpb24uCkBAIC0xOTQ4LDEyICsyMDA1LDE4IEBACiAgKiBub24tZGlnaXQgKHdoaWNoIG1heSBiZSAqc3RyISkuICBBIG5vcm1hbGl6ZWQgaW50IGlzIHJldHVybmVkLgogICogVGhlIHBvaW50IHRvIHRoaXMgcm91dGluZSBpcyB0aGF0IGl0IHRha2VzIHRpbWUgbGluZWFyIGluIHRoZSBudW1iZXIgb2YKICAqIHN0cmluZyBjaGFyYWN0ZXJzLgorICoKKyAqIFJldHVybiB2YWx1ZXM6CisgKiAgIC0xIG9uIHN5bnRheCBlcnJvciAoZXhjZXB0aW9uIG5lZWRzIHRvIGJlIHNldCwgKnJlcyBpcyB1bnRvdWNoZWQpCisgKiAgIDAgZWxzZSAoZXhjZXB0aW9uIG1heSBiZSBzZXQsIGluIHRoYXQgY2FzZSAqcmVzIGlzIHNldCB0byBOVUxMKQogICovCi1zdGF0aWMgUHlMb25nT2JqZWN0ICoKLWxvbmdfZnJvbV9iaW5hcnlfYmFzZShjb25zdCBjaGFyICoqc3RyLCBpbnQgYmFzZSkKK3N0YXRpYyBpbnQKK2xvbmdfZnJvbV9iaW5hcnlfYmFzZShjb25zdCBjaGFyICoqc3RyLCBpbnQgYmFzZSwgUHlMb25nT2JqZWN0ICoqcmVzKQogewogICAgIGNvbnN0IGNoYXIgKnAgPSAqc3RyOwogICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gcDsKKyAgICBjaGFyIHByZXYgPSAwOworICAgIGludCBkaWdpdHMgPSAwOwogICAgIGludCBiaXRzX3Blcl9jaGFyOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeUxvbmdPYmplY3QgKno7CkBAIC0xOTYzLDIzICsyMDI2LDQzIEBACiAKICAgICBhc3NlcnQoYmFzZSA+PSAyICYmIGJhc2UgPD0gMzIgJiYgKGJhc2UgJiAoYmFzZSAtIDEpKSA9PSAwKTsKICAgICBuID0gYmFzZTsKLSAgICBmb3IgKGJpdHNfcGVyX2NoYXIgPSAtMTsgbjsgKytiaXRzX3Blcl9jaGFyKQorICAgIGZvciAoYml0c19wZXJfY2hhciA9IC0xOyBuOyArK2JpdHNfcGVyX2NoYXIpIHsKICAgICAgICAgbiA+Pj0gMTsKLSAgICAvKiBuIDwtIHRvdGFsICMgb2YgYml0cyBuZWVkZWQsIHdoaWxlIHNldHRpbmcgcCB0byBlbmQtb2Ytc3RyaW5nICovCi0gICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldIDwgYmFzZSkKKyAgICB9CisgICAgLyogY291bnQgZGlnaXRzIGFuZCBzZXQgcCB0byBlbmQtb2Ytc3RyaW5nICovCisgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldIDwgYmFzZSB8fCAqcCA9PSAnXycpIHsKKyAgICAgICAgaWYgKCpwID09ICdfJykgeworICAgICAgICAgICAgaWYgKHByZXYgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgKnN0ciA9IHAgLSAxOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICsrZGlnaXRzOworICAgICAgICB9CisgICAgICAgIHByZXYgPSAqcDsKICAgICAgICAgKytwOworICAgIH0KKyAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgLyogVHJhaWxpbmcgdW5kZXJzY29yZSBub3QgYWxsb3dlZC4gKi8KKyAgICAgICAgKnN0ciA9IHAgLSAxOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgKnN0ciA9IHA7CiAgICAgLyogbiA8LSAjIG9mIFB5dGhvbiBkaWdpdHMgbmVlZGVkLCA9IGNlaWxpbmcobi9QeUxvbmdfU0hJRlQpLiAqLwotICAgIG4gPSAocCAtIHN0YXJ0KSAqIGJpdHNfcGVyX2NoYXIgKyBQeUxvbmdfU0hJRlQgLSAxOworICAgIG4gPSBkaWdpdHMgKiBiaXRzX3Blcl9jaGFyICsgUHlMb25nX1NISUZUIC0gMTsKICAgICBpZiAobiAvIGJpdHNfcGVyX2NoYXIgPCBwIC0gc3RhcnQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IHN0cmluZyB0b28gbGFyZ2UgdG8gY29udmVydCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgKnJlcyA9IE5VTEw7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBuID0gbiAvIFB5TG9uZ19TSElGVDsKICAgICB6ID0gX1B5TG9uZ19OZXcobik7Ci0gICAgaWYgKHogPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHogPT0gTlVMTCkgeworICAgICAgICAqcmVzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIC8qIFJlYWQgc3RyaW5nIGZyb20gcmlnaHQsIGFuZCBmaWxsIGluIGludCBmcm9tIGxlZnQ7IGkuZS4sCiAgICAgICogZnJvbSBsZWFzdCB0byBtb3N0IHNpZ25pZmljYW50IGluIGJvdGguCiAgICAgICovCkBAIC0xOTg3LDcgKzIwNzAsMTEgQEAKICAgICBiaXRzX2luX2FjY3VtID0gMDsKICAgICBwZGlnaXQgPSB6LT5vYl9kaWdpdDsKICAgICB3aGlsZSAoLS1wID49IHN0YXJ0KSB7Ci0gICAgICAgIGludCBrID0gKGludClfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soKnApXTsKKyAgICAgICAgaW50IGs7CisgICAgICAgIGlmICgqcCA9PSAnXycpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGsgPSAoaW50KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqcCldOwogICAgICAgICBhc3NlcnQoayA+PSAwICYmIGsgPCBiYXNlKTsKICAgICAgICAgYWNjdW0gfD0gKHR3b2RpZ2l0cylrIDw8IGJpdHNfaW5fYWNjdW07CiAgICAgICAgIGJpdHNfaW5fYWNjdW0gKz0gYml0c19wZXJfY2hhcjsKQEAgLTIwMDYsNyArMjA5Myw4IEBACiAgICAgfQogICAgIHdoaWxlIChwZGlnaXQgLSB6LT5vYl9kaWdpdCA8IG4pCiAgICAgICAgICpwZGlnaXQrKyA9IDA7Ci0gICAgcmV0dXJuIGxvbmdfbm9ybWFsaXplKHopOworICAgICpyZXMgPSBsb25nX25vcm1hbGl6ZSh6KTsKKyAgICByZXR1cm4gMDsKIH0KIAogLyogUGFyc2VzIGFuIGludCBmcm9tIGEgYnl0ZXN0cmluZy4gTGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSB3aWxsIGJlCkBAIC0yMDMxLDIzICsyMTE5LDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiaW50KCkgYXJnIDIgbXVzdCBiZSA+PSAyIGFuZCA8PSAzNiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgd2hpbGUgKCpzdHIgIT0gJ1wwJyAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkKKyAgICB3aGlsZSAoKnN0ciAhPSAnXDAnICYmIFB5X0lTU1BBQ0UoUHlfQ0hBUk1BU0soKnN0cikpKSB7CiAgICAgICAgIHN0cisrOwotICAgIGlmICgqc3RyID09ICcrJykKKyAgICB9CisgICAgaWYgKCpzdHIgPT0gJysnKSB7CiAgICAgICAgICsrc3RyOworICAgIH0KICAgICBlbHNlIGlmICgqc3RyID09ICctJykgewogICAgICAgICArK3N0cjsKICAgICAgICAgc2lnbiA9IC0xOwogICAgIH0KICAgICBpZiAoYmFzZSA9PSAwKSB7Ci0gICAgICAgIGlmIChzdHJbMF0gIT0gJzAnKQorICAgICAgICBpZiAoc3RyWzBdICE9ICcwJykgewogICAgICAgICAgICAgYmFzZSA9IDEwOwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ3gnIHx8IHN0clsxXSA9PSAnWCcpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKSB7CiAgICAgICAgICAgICBiYXNlID0gMTY7Ci0gICAgICAgIGVsc2UgaWYgKHN0clsxXSA9PSAnbycgfHwgc3RyWzFdID09ICdPJykKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ28nIHx8IHN0clsxXSA9PSAnTycpIHsKICAgICAgICAgICAgIGJhc2UgPSA4OwotICAgICAgICBlbHNlIGlmIChzdHJbMV0gPT0gJ2InIHx8IHN0clsxXSA9PSAnQicpCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKSB7CiAgICAgICAgICAgICBiYXNlID0gMjsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qICJvbGQiIChDLXN0eWxlKSBvY3RhbCBsaXRlcmFsLCBub3cgaW52YWxpZC4KICAgICAgICAgICAgICAgIGl0IG1pZ2h0IHN0aWxsIGJlIHplcm8gdGhvdWdoICovCkBAIC0yMDU4LDEyICsyMTUyLDI2IEBACiAgICAgaWYgKHN0clswXSA9PSAnMCcgJiYKICAgICAgICAgKChiYXNlID09IDE2ICYmIChzdHJbMV0gPT0gJ3gnIHx8IHN0clsxXSA9PSAnWCcpKSB8fAogICAgICAgICAgKGJhc2UgPT0gOCAgJiYgKHN0clsxXSA9PSAnbycgfHwgc3RyWzFdID09ICdPJykpIHx8Ci0gICAgICAgICAoYmFzZSA9PSAyICAmJiAoc3RyWzFdID09ICdiJyB8fCBzdHJbMV0gPT0gJ0InKSkpKQorICAgICAgICAgKGJhc2UgPT0gMiAgJiYgKHN0clsxXSA9PSAnYicgfHwgc3RyWzFdID09ICdCJykpKSkgewogICAgICAgICBzdHIgKz0gMjsKKyAgICAgICAgLyogT25lIHVuZGVyc2NvcmUgYWxsb3dlZCBoZXJlLiAqLworICAgICAgICBpZiAoKnN0ciA9PSAnXycpIHsKKyAgICAgICAgICAgICsrc3RyOworICAgICAgICB9CisgICAgfQorICAgIGlmIChzdHJbMF0gPT0gJ18nKSB7CisJICAgIC8qIE1heSBub3Qgc3RhcnQgd2l0aCB1bmRlcnNjb3Jlcy4gKi8KKwkgICAgZ290byBvbkVycm9yOworICAgIH0KIAogICAgIHN0YXJ0ID0gc3RyOwotICAgIGlmICgoYmFzZSAmIChiYXNlIC0gMSkpID09IDApCi0gICAgICAgIHogPSBsb25nX2Zyb21fYmluYXJ5X2Jhc2UoJnN0ciwgYmFzZSk7CisgICAgaWYgKChiYXNlICYgKGJhc2UgLSAxKSkgPT0gMCkgeworICAgICAgICBpbnQgcmVzID0gbG9uZ19mcm9tX2JpbmFyeV9iYXNlKCZzdHIsIGJhc2UsICZ6KTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIC8qIFN5bnRheCBlcnJvci4gKi8KKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgIH0KICAgICBlbHNlIHsKIC8qKioKIEJpbmFyeSBiYXNlcyBjYW4gYmUgY29udmVydGVkIGluIHRpbWUgbGluZWFyIGluIHRoZSBudW1iZXIgb2YgZGlnaXRzLCBiZWNhdXNlCkBAIC0yMTUyLDExICsyMjYwLDEzIEBACiAqKiovCiAgICAgICAgIHR3b2RpZ2l0cyBjOyAgICAgICAgICAgLyogY3VycmVudCBpbnB1dCBjaGFyYWN0ZXIgKi8KICAgICAgICAgUHlfc3NpemVfdCBzaXplX3o7CisgICAgICAgIGludCBkaWdpdHMgPSAwOwogICAgICAgICBpbnQgaTsKICAgICAgICAgaW50IGNvbnZ3aWR0aDsKICAgICAgICAgdHdvZGlnaXRzIGNvbnZtdWx0bWF4LCBjb252bXVsdDsKICAgICAgICAgZGlnaXQgKnB6LCAqcHpzdG9wOwotICAgICAgICBjb25zdCBjaGFyKiBzY2FuOworICAgICAgICBjb25zdCBjaGFyICpzY2FuLCAqbGFzdGRpZ2l0OworICAgICAgICBjaGFyIHByZXYgPSAwOwogCiAgICAgICAgIHN0YXRpYyBkb3VibGUgbG9nX2Jhc2VfQkFTRVszN10gPSB7MC4wZTAsfTsKICAgICAgICAgc3RhdGljIGludCBjb252d2lkdGhfYmFzZVszN10gPSB7MCx9OwpAQCAtMjE3MCw4ICsyMjgwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKChkb3VibGUpUHlMb25nX0JBU0UpKTsKICAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICB0d29kaWdpdHMgbmV4dCA9IGNvbnZtYXggKiBiYXNlOwotICAgICAgICAgICAgICAgIGlmIChuZXh0ID4gUHlMb25nX0JBU0UpCisgICAgICAgICAgICAgICAgaWYgKG5leHQgPiBQeUxvbmdfQkFTRSkgewogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udm1heCA9IG5leHQ7CiAgICAgICAgICAgICAgICAgKytpOwogICAgICAgICAgICAgfQpAQCAtMjE4MiwyMSArMjI5Myw0MyBAQAogCiAgICAgICAgIC8qIEZpbmQgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgb2YgbnVtZXJpYyBjaGFyYWN0ZXJzLiAqLwogICAgICAgICBzY2FuID0gc3RyOwotICAgICAgICB3aGlsZSAoX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpzY2FuKV0gPCBiYXNlKQorICAgICAgICBsYXN0ZGlnaXQgPSBzdHI7CisKKyAgICAgICAgd2hpbGUgKF9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc2NhbildIDwgYmFzZSB8fCAqc2NhbiA9PSAnXycpIHsKKyAgICAgICAgICAgIGlmICgqc2NhbiA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogT25seSBvbmUgdW5kZXJzY29yZSBhbGxvd2VkLiAqLworICAgICAgICAgICAgICAgICAgICBzdHIgPSBsYXN0ZGlnaXQgKyAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgKytkaWdpdHM7CisgICAgICAgICAgICAgICAgbGFzdGRpZ2l0ID0gc2NhbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXYgPSAqc2NhbjsKICAgICAgICAgICAgICsrc2NhbjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgICAgIC8qIFRyYWlsaW5nIHVuZGVyc2NvcmUgbm90IGFsbG93ZWQuICovCisgICAgICAgICAgICAvKiBTZXQgZXJyb3IgcG9pbnRlciB0byBmaXJzdCB1bmRlcnNjb3JlLiAqLworICAgICAgICAgICAgc3RyID0gbGFzdGRpZ2l0ICsgMTsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIENyZWF0ZSBhbiBpbnQgb2JqZWN0IHRoYXQgY2FuIGNvbnRhaW4gdGhlIGxhcmdlc3QgcG9zc2libGUKICAgICAgICAgICogaW50ZWdlciB3aXRoIHRoaXMgYmFzZSBhbmQgbGVuZ3RoLiAgTm90ZSB0aGF0IHRoZXJlJ3Mgbm8KICAgICAgICAgICogbmVlZCB0byBpbml0aWFsaXplIHotPm9iX2RpZ2l0IC0tIG5vIHNsb3QgaXMgcmVhZCB1cCBiZWZvcmUKICAgICAgICAgICogYmVpbmcgc3RvcmVkIGludG8uCiAgICAgICAgICAqLwotICAgICAgICBzaXplX3ogPSAoUHlfc3NpemVfdCkoKHNjYW4gLSBzdHIpICogbG9nX2Jhc2VfQkFTRVtiYXNlXSkgKyAxOworICAgICAgICBzaXplX3ogPSAoUHlfc3NpemVfdCkoZGlnaXRzICogbG9nX2Jhc2VfQkFTRVtiYXNlXSkgKyAxOwogICAgICAgICAvKiBVbmNvbW1lbnQgbmV4dCBsaW5lIHRvIHRlc3QgZXhjZWVkaW5nbHkgcmFyZSBjb3B5IGNvZGUgKi8KICAgICAgICAgLyogc2l6ZV96ID0gMTsgKi8KICAgICAgICAgYXNzZXJ0KHNpemVfeiA+IDApOwogICAgICAgICB6ID0gX1B5TG9uZ19OZXcoc2l6ZV96KTsKLSAgICAgICAgaWYgKHogPT0gTlVMTCkKKyAgICAgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgUHlfU0laRSh6KSA9IDA7CiAKICAgICAgICAgLyogYGNvbnZ3aWR0aGAgY29uc2VjdXRpdmUgaW5wdXQgZGlnaXRzIGFyZSB0cmVhdGVkIGFzIGEgc2luZ2xlCkBAIC0yMjA3LDkgKzIzNDAsMTcgQEAKIAogICAgICAgICAvKiBXb3JrIDstKSAqLwogICAgICAgICB3aGlsZSAoc3RyIDwgc2NhbikgeworICAgICAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgc3RyKys7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBncmFiIHVwIHRvIGNvbnZ3aWR0aCBkaWdpdHMgZnJvbSB0aGUgaW5wdXQgc3RyaW5nICovCiAgICAgICAgICAgICBjID0gKGRpZ2l0KV9QeUxvbmdfRGlnaXRWYWx1ZVtQeV9DSEFSTUFTSygqc3RyKyspXTsKLSAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBjb252d2lkdGggJiYgc3RyICE9IHNjYW47ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBjb252d2lkdGggJiYgc3RyICE9IHNjYW47ICsrc3RyKSB7CisgICAgICAgICAgICAgICAgaWYgKCpzdHIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgYyA9ICh0d29kaWdpdHMpKGMgKiAgYmFzZSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKCpzdHIpXSk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGMgPCBQeUxvbmdfQkFTRSk7CkBAIC0yMjIxLDggKzIzNjIsOSBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoaSAhPSBjb252d2lkdGgpIHsKICAgICAgICAgICAgICAgICBjb252bXVsdCA9IGJhc2U7Ci0gICAgICAgICAgICAgICAgZm9yICggOyBpID4gMTsgLS1pKQorICAgICAgICAgICAgICAgIGZvciAoIDsgaSA+IDE7IC0taSkgewogICAgICAgICAgICAgICAgICAgICBjb252bXVsdCAqPSBiYXNlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogTXVsdGlwbHkgeiBieSBjb252bXVsdCwgYW5kIGFkZCBjLiAqLwpAQCAtMjI2MCw0MSArMjQwMiw1MSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGlmICh6ID09IE5VTEwpCisgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKGVycm9yX2lmX25vbnplcm8pIHsKICAgICAgICAgLyogcmVzZXQgdGhlIGJhc2UgdG8gMCwgZWxzZSB0aGUgZXhjZXB0aW9uIG1lc3NhZ2UKICAgICAgICAgICAgZG9lc24ndCBtYWtlIHRvbyBtdWNoIHNlbnNlICovCiAgICAgICAgIGJhc2UgPSAwOwotICAgICAgICBpZiAoUHlfU0laRSh6KSAhPSAwKQorICAgICAgICBpZiAoUHlfU0laRSh6KSAhPSAwKSB7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KICAgICAgICAgLyogdGhlcmUgbWlnaHQgc3RpbGwgYmUgb3RoZXIgcHJvYmxlbXMsIHRoZXJlZm9yZSBiYXNlCiAgICAgICAgICAgIHJlbWFpbnMgemVybyBoZXJlIGZvciB0aGUgc2FtZSByZWFzb24gKi8KICAgICB9Ci0gICAgaWYgKHN0ciA9PSBzdGFydCkKKyAgICBpZiAoc3RyID09IHN0YXJ0KSB7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoc2lnbiA8IDApCisgICAgfQorICAgIGlmIChzaWduIDwgMCkgewogICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKLSAgICB3aGlsZSAoKnN0ciAmJiBQeV9JU1NQQUNFKFB5X0NIQVJNQVNLKCpzdHIpKSkKKyAgICB9CisgICAgd2hpbGUgKCpzdHIgJiYgUHlfSVNTUEFDRShQeV9DSEFSTUFTSygqc3RyKSkpIHsKICAgICAgICAgc3RyKys7Ci0gICAgaWYgKCpzdHIgIT0gJ1wwJykKKyAgICB9CisgICAgaWYgKCpzdHIgIT0gJ1wwJykgewogICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQogICAgIGxvbmdfbm9ybWFsaXplKHopOwogICAgIHogPSBtYXliZV9zbWFsbF9sb25nKHopOwotICAgIGlmICh6ID09IE5VTEwpCisgICAgaWYgKHogPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocGVuZCAhPSBOVUxMKQorICAgIH0KKyAgICBpZiAocGVuZCAhPSBOVUxMKSB7CiAgICAgICAgICpwZW5kID0gKGNoYXIgKilzdHI7CisgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKikgejsKIAogICBvbkVycm9yOgotICAgIGlmIChwZW5kICE9IE5VTEwpCisgICAgaWYgKHBlbmQgIT0gTlVMTCkgewogICAgICAgICAqcGVuZCA9IChjaGFyICopc3RyOworICAgIH0KICAgICBQeV9YREVDUkVGKHopOwogICAgIHNsZW4gPSBzdHJsZW4ob3JpZ19zdHIpIDwgMjAwID8gc3RybGVuKG9yaWdfc3RyKSA6IDIwMDsKICAgICBzdHJvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUob3JpZ19zdHIsIHNsZW4pOwotICAgIGlmIChzdHJvYmogPT0gTlVMTCkKKyAgICBpZiAoc3Ryb2JqID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAiaW52YWxpZCBsaXRlcmFsIGZvciBpbnQoKSB3aXRoIGJhc2UgJWQ6ICUuMjAwUiIsCiAgICAgICAgICAgICAgICAgIGJhc2UsIHN0cm9iaik7CkBAIC0yMzk1LDggKzI1NDcsMTEgQEAKICAgICAgICAgKnBkaXYgPSAoUHlMb25nT2JqZWN0KilQeUxvbmdfRnJvbUxvbmcoMCk7CiAgICAgICAgIGlmICgqcGRpdiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9JTkNSRUYoYSk7Ci0gICAgICAgICpwcmVtID0gKFB5TG9uZ09iamVjdCAqKSBhOworICAgICAgICAqcHJlbSA9IChQeUxvbmdPYmplY3QgKilsb25nX2xvbmcoKFB5T2JqZWN0ICopYSk7CisgICAgICAgIGlmICgqcHJlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9DTEVBUigqcGRpdik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChzaXplX2IgPT0gMSkgewpAQCAtMjcwNiw2ICsyODYxLDEzIEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CiAgICAgICAgIHJldHVybiAtMS4wOwogICAgIH0KKyAgICBpZiAoUHlfQUJTKFB5X1NJWkUodikpIDw9IDEpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoOyBzaW5nbGUgZGlnaXQgbG9uZyAoMzEgYml0cykgd2lsbCBjYXN0IHNhZmVseQorICAgICAgICAgICB0byBkb3VibGUuICBUaGlzIGltcHJvdmVzIHBlcmZvcm1hbmNlIG9mIEZQL2xvbmcgb3BlcmF0aW9ucworICAgICAgICAgICBieSAyMCUuCisgICAgICAgICovCisgICAgICAgIHJldHVybiAoZG91YmxlKU1FRElVTV9WQUxVRSgoUHlMb25nT2JqZWN0ICopdik7CisgICAgfQogICAgIHggPSBfUHlMb25nX0ZyZXhwKChQeUxvbmdPYmplY3QgKil2LCAmZXhwb25lbnQpOwogICAgIGlmICgoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHx8IGV4cG9uZW50ID4gREJMX01BWF9FWFApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCkBAIC0yOTMwLDkgKzMwOTIsNyBAQAogICAgIH0KICAgICBhc3NlcnQoYm9ycm93ID09IDApOwogICAgIGlmIChzaWduIDwgMCkgewotICAgICAgICBfUHlMb25nX05lZ2F0ZSgmeik7Ci0gICAgICAgIGlmICh6ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfU0laRSh6KSA9IC1QeV9TSVpFKHopOwogICAgIH0KICAgICByZXR1cm4gbG9uZ19ub3JtYWxpemUoeik7CiB9CkBAIC0yOTUyLDggKzMxMTIsMTQgQEAKICAgICBpZiAoUHlfU0laRShhKSA8IDApIHsKICAgICAgICAgaWYgKFB5X1NJWkUoYikgPCAwKSB7CiAgICAgICAgICAgICB6ID0geF9hZGQoYSwgYik7Ci0gICAgICAgICAgICBpZiAoeiAhPSBOVUxMICYmIFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgICAgIGlmICh6ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiB4X2FkZCByZWNlaXZlZCBhdCBsZWFzdCBvbmUgbXVsdGlwbGUtZGlnaXQgaW50LAorICAgICAgICAgICAgICAgICAgIGFuZCB0aHVzIHogbXVzdCBiZSBhIG11bHRpcGxlLWRpZ2l0IGludC4KKyAgICAgICAgICAgICAgICAgICBUaGF0IGFsc28gbWVhbnMgeiBpcyBub3QgYW4gZWxlbWVudCBvZgorICAgICAgICAgICAgICAgICAgIHNtYWxsX2ludHMsIHNvIG5lZ2F0aW5nIGl0IGluLXBsYWNlIGlzIHNhZmUuICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5X1JFRkNOVCh6KSA9PSAxKTsKICAgICAgICAgICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICB6ID0geF9zdWIoYiwgYSk7CkBAIC0yOTg0LDggKzMxNTAsMTAgQEAKICAgICAgICAgICAgIHogPSB4X3N1YihhLCBiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgeiA9IHhfYWRkKGEsIGIpOwotICAgICAgICBpZiAoeiAhPSBOVUxMICYmIFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgaWYgKHogIT0gTlVMTCkgeworICAgICAgICAgICAgYXNzZXJ0KFB5X1NJWkUoeikgPT0gMCB8fCBQeV9SRUZDTlQoeikgPT0gMSk7CiAgICAgICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKFB5X1NJWkUoYikgPCAwKQpAQCAtMzQwOSwxNyArMzU3Nyw3IEBACiAgICAgLyogZmFzdCBwYXRoIGZvciBzaW5nbGUtZGlnaXQgbXVsdGlwbGljYXRpb24gKi8KICAgICBpZiAoUHlfQUJTKFB5X1NJWkUoYSkpIDw9IDEgJiYgUHlfQUJTKFB5X1NJWkUoYikpIDw9IDEpIHsKICAgICAgICAgc3R3b2RpZ2l0cyB2ID0gKHN0d29kaWdpdHMpKE1FRElVTV9WQUxVRShhKSkgKiBNRURJVU1fVkFMVUUoYik7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl2KTsKLSNlbHNlCi0gICAgICAgIC8qIGlmIHdlIGRvbid0IGhhdmUgbG9uZyBsb25nIHRoZW4gd2UncmUgYWxtb3N0IGNlcnRhaW5seQotICAgICAgICAgICB1c2luZyAxNS1iaXQgZGlnaXRzLCBzbyB2IHdpbGwgZml0IGluIGEgbG9uZy4gIEluIHRoZQotICAgICAgICAgICB1bmxpa2VseSBldmVudCB0aGF0IHdlJ3JlIHVzaW5nIDMwLWJpdCBkaWdpdHMgb24gYSBwbGF0Zm9ybQotICAgICAgICAgICB3aXRob3V0IGxvbmcgbG9uZywgYSBsYXJnZSB2IHdpbGwganVzdCBjYXVzZSB1cyB0byBmYWxsCi0gICAgICAgICAgIHRocm91Z2ggdG8gdGhlIGdlbmVyYWwgbXVsdGlwbGljYXRpb24gY29kZSBiZWxvdy4gKi8KLSAgICAgICAgaWYgKHYgPj0gTE9OR19NSU4gJiYgdiA8PSBMT05HX01BWCkKLSAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpdik7Ci0jZW5kaWYKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl2KTsKICAgICB9CiAKICAgICB6ID0ga19tdWwoYSwgYik7CkBAIC0zNDMyLDYgKzM1OTAsNTIgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0ICopejsKIH0KIAorLyogRmFzdCBtb2R1bG8gZGl2aXNpb24gZm9yIHNpbmdsZS1kaWdpdCBsb25ncy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitmYXN0X21vZChQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKK3sKKyAgICBzZGlnaXQgbGVmdCA9IGEtPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCByaWdodCA9IGItPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCBtb2Q7CisKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEpOworICAgIGFzc2VydChQeV9BQlMoUHlfU0laRShiKSkgPT0gMSk7CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSBQeV9TSVpFKGIpKSB7CisgICAgICAgIC8qICdhJyBhbmQgJ2InIGhhdmUgdGhlIHNhbWUgc2lnbi4gKi8KKyAgICAgICAgbW9kID0gbGVmdCAlIHJpZ2h0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRWl0aGVyICdhJyBvciAnYicgaXMgbmVnYXRpdmUuICovCisgICAgICAgIG1vZCA9IHJpZ2h0IC0gMSAtIChsZWZ0IC0gMSkgJSByaWdodDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1vZCAqIChzZGlnaXQpUHlfU0laRShiKSk7Cit9CisKKy8qIEZhc3QgZmxvb3IgZGl2aXNpb24gZm9yIHNpbmdsZS1kaWdpdCBsb25ncy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitmYXN0X2Zsb29yX2RpdihQeUxvbmdPYmplY3QgKmEsIFB5TG9uZ09iamVjdCAqYikKK3sKKyAgICBzZGlnaXQgbGVmdCA9IGEtPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCByaWdodCA9IGItPm9iX2RpZ2l0WzBdOworICAgIHNkaWdpdCBkaXY7CisKKyAgICBhc3NlcnQoUHlfQUJTKFB5X1NJWkUoYSkpID09IDEpOworICAgIGFzc2VydChQeV9BQlMoUHlfU0laRShiKSkgPT0gMSk7CisKKyAgICBpZiAoUHlfU0laRShhKSA9PSBQeV9TSVpFKGIpKSB7CisgICAgICAgIC8qICdhJyBhbmQgJ2InIGhhdmUgdGhlIHNhbWUgc2lnbi4gKi8KKyAgICAgICAgZGl2ID0gbGVmdCAvIHJpZ2h0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRWl0aGVyICdhJyBvciAnYicgaXMgbmVnYXRpdmUuICovCisgICAgICAgIGRpdiA9IC0xIC0gKGxlZnQgLSAxKSAvIHJpZ2h0OworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoZGl2KTsKK30KKwogLyogVGhlIC8gYW5kICUgb3BlcmF0b3JzIGFyZSBub3cgZGVmaW5lZCBpbiB0ZXJtcyBvZiBkaXZtb2QoKS4KICAgIFRoZSBleHByZXNzaW9uIGEgbW9kIGIgaGFzIHRoZSB2YWx1ZSBhIC0gYipmbG9vcihhL2IpLgogICAgVGhlIGxvbmdfZGl2cmVtIGZ1bmN0aW9uIGdpdmVzIHRoZSByZW1haW5kZXIgYWZ0ZXIgZGl2aXNpb24gb2YKQEAgLTM0NTksNiArMzY2MywzMCBAQAogewogICAgIFB5TG9uZ09iamVjdCAqZGl2LCAqbW9kOwogCisgICAgaWYgKFB5X0FCUyhQeV9TSVpFKHYpKSA9PSAxICYmIFB5X0FCUyhQeV9TSVpFKHcpKSA9PSAxKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aCBmb3Igc2luZ2xlLWRpZ2l0IGxvbmdzICovCisgICAgICAgIGRpdiA9IE5VTEw7CisgICAgICAgIGlmIChwZGl2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGRpdiA9IChQeUxvbmdPYmplY3QgKilmYXN0X2Zsb29yX2Rpdih2LCB3KTsKKyAgICAgICAgICAgIGlmIChkaXYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocG1vZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBtb2QgPSAoUHlMb25nT2JqZWN0ICopZmFzdF9tb2Qodiwgdyk7CisgICAgICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGRpdik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnBtb2QgPSBtb2Q7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBkaXYgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogV2Ugb25seSB3YW50IHRvIHNldCBgKnBkaXZgIHdoZW4gYCpwbW9kYCBpcworICAgICAgICAgICAgICAgc2V0IHN1Y2Nlc3NmdWxseS4gKi8KKyAgICAgICAgICAgICpwZGl2ID0gZGl2OworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpZiAobG9uZ19kaXZyZW0odiwgdywgJmRpdiwgJm1vZCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKChQeV9TSVpFKG1vZCkgPCAwICYmIFB5X1NJWkUodykgPiAwKSB8fApAQCAtMzUwMyw2ICszNzMxLDExIEBACiAgICAgUHlMb25nT2JqZWN0ICpkaXY7CiAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKKworICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPT0gMSkgeworICAgICAgICByZXR1cm4gZmFzdF9mbG9vcl9kaXYoKFB5TG9uZ09iamVjdCopYSwgKFB5TG9uZ09iamVjdCopYik7CisgICAgfQorCiAgICAgaWYgKGxfZGl2bW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIsICZkaXYsIE5VTEwpIDwgMCkKICAgICAgICAgZGl2ID0gTlVMTDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopZGl2OwpAQCAtMzc0Miw5ICszOTc1LDkgQEAKICAgICAvKiBSb3VuZCBieSBkaXJlY3RseSBtb2RpZnlpbmcgdGhlIGxvdyBkaWdpdCBvZiB4LiAqLwogICAgIG1hc2sgPSAoZGlnaXQpMSA8PCAoZXh0cmFfYml0cyAtIDEpOwogICAgIGxvdyA9IHgtPm9iX2RpZ2l0WzBdIHwgaW5leGFjdDsKLSAgICBpZiAobG93ICYgbWFzayAmJiBsb3cgJiAoMyptYXNrLTEpKQorICAgIGlmICgobG93ICYgbWFzaykgJiYgKGxvdyAmICgzVSptYXNrLTFVKSkpCiAgICAgICAgIGxvdyArPSBtYXNrOwotICAgIHgtPm9iX2RpZ2l0WzBdID0gbG93ICYgfihtYXNrLTFVKTsKKyAgICB4LT5vYl9kaWdpdFswXSA9IGxvdyAmIH4oMlUqbWFzay0xVSk7CiAKICAgICAvKiBDb252ZXJ0IHggdG8gYSBkb3VibGUgZHg7IHRoZSBjb252ZXJzaW9uIGlzIGV4YWN0LiAqLwogICAgIGR4ID0geC0+b2JfZGlnaXRbLS14X3NpemVdOwpAQCAtMzc3OCw2ICs0MDExLDEwIEBACiAKICAgICBDSEVDS19CSU5PUChhLCBiKTsKIAorICAgIGlmIChQeV9BQlMoUHlfU0laRShhKSkgPT0gMSAmJiBQeV9BQlMoUHlfU0laRShiKSkgPT0gMSkgeworICAgICAgICByZXR1cm4gZmFzdF9tb2QoKFB5TG9uZ09iamVjdCopYSwgKFB5TG9uZ09iamVjdCopYik7CisgICAgfQorCiAgICAgaWYgKGxfZGl2bW9kKChQeUxvbmdPYmplY3QqKWEsIChQeUxvbmdPYmplY3QqKWIsIE5VTEwsICZtb2QpIDwgMCkKICAgICAgICAgbW9kID0gTlVMTDsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbW9kOwpAQCAtNDAxMiw4ICs0MjQ5LDEwIEBACiAgICAgUHlfREVDUkVGKHcpOwogICAgIGlmICh4ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X1NJWkUoeCkgPSAtKFB5X1NJWkUoeCkpOwotICAgIHJldHVybiAoUHlPYmplY3QgKiltYXliZV9zbWFsbF9sb25nKHgpOworICAgIF9QeUxvbmdfTmVnYXRlKCZ4KTsKKyAgICAvKiBObyBuZWVkIGZvciBtYXliZV9zbWFsbF9sb25nIGhlcmUsIHNpbmNlIGFueSBzbWFsbAorICAgICAgIGxvbmdzIHdpbGwgaGF2ZSBiZWVuIGNhdWdodCBpbiB0aGUgUHlfU0laRSA8PSAxIGZhc3QgcGF0aC4gKi8KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopeDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQxMTgsNiArNDM1NywxMSBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIHNoaWZ0IGNvdW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKworICAgIGlmIChQeV9TSVpFKGEpID09IDApIHsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICB9CisKICAgICAvKiB3b3Jkc2hpZnQsIHJlbXNoaWZ0ID0gZGl2bW9kKHNoaWZ0YnksIFB5TG9uZ19TSElGVCkgKi8KICAgICB3b3Jkc2hpZnQgPSBzaGlmdGJ5IC8gUHlMb25nX1NISUZUOwogICAgIHJlbXNoaWZ0ICA9IHNoaWZ0YnkgLSB3b3Jkc2hpZnQgKiBQeUxvbmdfU0hJRlQ7CkBAIC00NTAyLDcgKzQ3NDYsNyBAQAogICAgIC8qIGEgZml0cyBpbnRvIGEgbG9uZywgc28gYiBtdXN0IHRvbyAqLwogICAgIHggPSBQeUxvbmdfQXNMb25nKChQeU9iamVjdCAqKWEpOwogICAgIHkgPSBQeUxvbmdfQXNMb25nKChQeU9iamVjdCAqKWIpOwotI2VsaWYgZGVmaW5lZChQWV9MT05HX0xPTkcpICYmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCisjZWxpZiBQWV9MTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHggPSBQeUxvbmdfQXNMb25nTG9uZygoUHlPYmplY3QgKilhKTsKICAgICB5ID0gUHlMb25nX0FzTG9uZ0xvbmcoKFB5T2JqZWN0ICopYik7CiAjZWxzZQpAQCAtNDUyMSw3ICs0NzY1LDcgQEAKICAgICB9CiAjaWYgTE9OR19NQVggPj4gUHlMb25nX1NISUZUID4+IFB5TG9uZ19TSElGVAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeCk7Ci0jZWxpZiBkZWZpbmVkKFBZX0xPTkdfTE9ORykgJiYgUFlfTExPTkdfTUFYID4+IFB5TG9uZ19TSElGVCA+PiBQeUxvbmdfU0hJRlQKKyNlbGlmIFBZX0xMT05HX01BWCA+PiBQeUxvbmdfU0hJRlQgPj4gUHlMb25nX1NISUZUCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoeCk7CiAjZWxzZQogIyBlcnJvciAiX1B5TG9uZ19HQ0QiCmRpZmYgLS1naXQgYS9PYmplY3RzL21lbW9yeW9iamVjdC5jIGIvT2JqZWN0cy9tZW1vcnlvYmplY3QuYwppbmRleCAxMDE2MmNiLi40MjhkODNjIDEwMDY0NAotLS0gYS9PYmplY3RzL21lbW9yeW9iamVjdC5jCisrKyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKQEAgLTU3LDcgKzU3LDcgQEAKICAgICB9CiAKIAotUHlfTE9DQUxfSU5MSU5FKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqCiBtYnVmX2FsbG9jKHZvaWQpCiB7CiAgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKQEAgLTI0Myw3ICsyNDMsNyBAQAogI2RlZmluZSBIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0odmlldykgXAogICAgICh2aWV3LT5zdWJvZmZzZXRzICYmIHZpZXctPnN1Ym9mZnNldHNbZGVzdC0+bmRpbS0xXSA+PSAwKQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGxhc3RfZGltX2lzX2NvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBhc3NlcnQoZGVzdC0+bmRpbSA+IDAgJiYgc3JjLT5uZGltID4gMCk7CkBAIC0yNTksNyArMjU5LDcgQEAKICAgIGFzc2lnbm1lbnRzLCB3aGVyZSB0aGUgbHZhbHVlIGlzIGFscmVhZHkga25vd24gdG8gaGF2ZSBhIHNpbmdsZSBjaGFyYWN0ZXIKICAgIGZvcm1hdC4gVGhpcyBpcyBhIHBlcmZvcm1hbmNlIGhhY2sgdGhhdCBjb3VsZCBiZSByZXdyaXR0ZW4gKGlmIHByb3Blcmx5CiAgICBiZW5jaG1hcmtlZCkuICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGVxdWl2X2Zvcm1hdChjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIGNvbnN0IGNoYXIgKmRmbXQsICpzZm10OwpAQCAtMjc5LDcgKzI3OSw3IEBACiAvKiBUd28gc2hhcGVzIGFyZSBlcXVpdmFsZW50IGlmIHRoZXkgYXJlIGVpdGhlciBlcXVhbCBvciBpZGVudGljYWwgdXAKICAgIHRvIGEgemVybyBlbGVtZW50IGF0IHRoZSBzYW1lIHBvc2l0aW9uLiBGb3IgZXhhbXBsZSwgaW4gTnVtUHkgYXJyYXlzCiAgICB0aGUgc2hhcGVzIFsxLCAwLCA1XSBhbmQgWzEsIDAsIDddIGFyZSBlcXVpdmFsZW50LiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBlcXVpdl9zaGFwZShjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIGludCBpOwpAQCAtNDM4LDcgKzQzOCw3IEBACiB9CiAKIC8qIEluaXRpYWxpemUgc3RyaWRlcyBmb3IgYSBDLWNvbnRpZ3VvdXMgYXJyYXkuICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTQ1MSw3ICs0NTEsNyBAQAogfQogCiAvKiBJbml0aWFsaXplIHN0cmlkZXMgZm9yIGEgRm9ydHJhbi1jb250aWd1b3VzIGFycmF5LiAqLwotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfZm9ydHJhbl9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTUxMyw3ICs1MTMsNyBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8qIEluaXRpYWxpemUgdmFsdWVzIHRoYXQgYXJlIHNoYXJlZCB3aXRoIHRoZSBtYW5hZ2VkIGJ1ZmZlci4gKi8KLVB5X0xPQ0FMX0lOTElORSh2b2lkKQorc3RhdGljIGlubGluZSB2b2lkCiBpbml0X3NoYXJlZF92YWx1ZXMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKIHsKICAgICBkZXN0LT5vYmogPSBzcmMtPm9iajsKQEAgLTU1Myw3ICs1NTMsNyBAQAogICAgIH0KIH0KIAotUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitzdGF0aWMgaW5saW5lIHZvaWQKIGluaXRfc3Vib2Zmc2V0cyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQogewogICAgIFB5X3NzaXplX3QgaTsKQEAgLTU2Nyw3ICs1NjcsNyBAQAogfQogCiAvKiBsZW4gPSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplICovCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogaW5pdF9sZW4oUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3QgaSwgbGVuOwpAQCAtNjE0LDcgKzYxNCw3IEBACiAKIC8qIEFsbG9jYXRlIGEgbmV3IG1lbW9yeXZpZXcgYW5kIHBlcmZvcm0gYmFzaWMgaW5pdGlhbGl6YXRpb24uIE5ldyBtZW1vcnl2aWV3cwogICAgYXJlIGV4Y2x1c2l2ZWx5IGNyZWF0ZWQgdGhyb3VnaCB0aGUgbWJ1Zl9hZGQgZnVuY3Rpb25zLiAqLwotUHlfTE9DQUxfSU5MSU5FKFB5TWVtb3J5Vmlld09iamVjdCAqKQorc3RhdGljIGlubGluZSBQeU1lbW9yeVZpZXdPYmplY3QgKgogbWVtb3J5X2FsbG9jKGludCBuZGltKQogewogICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CkBAIC0xMDk5LDcgKzEwOTksNyBAQAogCiAjZGVmaW5lIElTX0JZVEVfRk9STUFUKGYpIChmID09ICdiJyB8fCBmID09ICdCJyB8fCBmID09ICdjJykKIAotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKIGdldF9uYXRpdmVfZm10Y2hhcihjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKmZtdCkKIHsKICAgICBQeV9zc2l6ZV90IHNpemUgPSAtMTsKQEAgLTExMTEsMTcgKzExMTEsMTEgQEAKICAgICBjYXNlICdoJzogY2FzZSAnSCc6IHNpemUgPSBzaXplb2Yoc2hvcnQpOyBicmVhazsKICAgICBjYXNlICdpJzogY2FzZSAnSSc6IHNpemUgPSBzaXplb2YoaW50KTsgYnJlYWs7CiAgICAgY2FzZSAnbCc6IGNhc2UgJ0wnOiBzaXplID0gc2l6ZW9mKGxvbmcpOyBicmVhazsKLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdxJzogY2FzZSAnUSc6IHNpemUgPSBzaXplb2YoUFlfTE9OR19MT05HKTsgYnJlYWs7Ci0gICAgI2VuZGlmCisgICAgY2FzZSAncSc6IGNhc2UgJ1EnOiBzaXplID0gc2l6ZW9mKGxvbmcgbG9uZyk7IGJyZWFrOwogICAgIGNhc2UgJ24nOiBjYXNlICdOJzogc2l6ZSA9IHNpemVvZihQeV9zc2l6ZV90KTsgYnJlYWs7CiAgICAgY2FzZSAnZic6IHNpemUgPSBzaXplb2YoZmxvYXQpOyBicmVhazsKICAgICBjYXNlICdkJzogc2l6ZSA9IHNpemVvZihkb3VibGUpOyBicmVhazsKLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgIGNhc2UgJz8nOiBzaXplID0gc2l6ZW9mKF9Cb29sKTsgYnJlYWs7Ci0gICAgI2Vsc2UKLSAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihjaGFyKTsgYnJlYWs7Ci0gICAgI2VuZGlmCiAgICAgY2FzZSAnUCc6IHNpemUgPSBzaXplb2Yodm9pZCAqKTsgYnJlYWs7CiAgICAgfQogCkBAIC0xMTMzLDcgKzExMjcsNyBAQAogICAgIHJldHVybiAtMTsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKGNoYXIgKikKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqCiBnZXRfbmF0aXZlX2ZtdHN0cihjb25zdCBjaGFyICpmbXQpCiB7CiAgICAgaW50IGF0ID0gMDsKQEAgLTExNTgsMTkgKzExNTIsMTMgQEAKICAgICBjYXNlICdJJzogUkVUVVJOKCJJIik7CiAgICAgY2FzZSAnbCc6IFJFVFVSTigibCIpOwogICAgIGNhc2UgJ0wnOiBSRVRVUk4oIkwiKTsKLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzogUkVUVVJOKCJxIik7CiAgICAgY2FzZSAnUSc6IFJFVFVSTigiUSIpOwotICAgICNlbmRpZgogICAgIGNhc2UgJ24nOiBSRVRVUk4oIm4iKTsKICAgICBjYXNlICdOJzogUkVUVVJOKCJOIik7CiAgICAgY2FzZSAnZic6IFJFVFVSTigiZiIpOwogICAgIGNhc2UgJ2QnOiBSRVRVUk4oImQiKTsKLSAgICAjaWZkZWYgSEFWRV9DOTlfQk9PTAogICAgIGNhc2UgJz8nOiBSRVRVUk4oIj8iKTsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBSRVRVUk4oIj8iKTsKLSAgICAjZW5kaWYKICAgICBjYXNlICdQJzogUkVUVVJOKCJQIik7CiAgICAgfQogCkBAIC0xMjIxLDcgKzEyMDksNyBAQAogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKLSAgICB2aWV3LT5mb3JtYXQgPSBnZXRfbmF0aXZlX2ZtdHN0cihQeUJ5dGVzX0FTX1NUUklORyhhc2NpaWZtdCkpOworICAgIHZpZXctPmZvcm1hdCA9IChjaGFyICopZ2V0X25hdGl2ZV9mbXRzdHIoUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpKTsKICAgICBpZiAodmlldy0+Zm9ybWF0ID09IE5VTEwpIHsKICAgICAgICAgLyogTk9UX1JFQUNIRUQ6IGdldF9uYXRpdmVfZm10Y2hhcigpIGFscmVhZHkgdmFsaWRhdGVzIHRoZSBmb3JtYXQuICovCiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCkBAIC0xNTgxLDEyICsxNTY5LDExIEBACiAgICAgcmV0dXJuIGx1OwogfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXN0YXRpYyBQWV9MT05HX0xPTkcKK3N0YXRpYyBsb25nIGxvbmcKIHB5bG9uZ19hc19sbGQoUHlPYmplY3QgKml0ZW0pCiB7CiAgICAgUHlPYmplY3QgKnRtcDsKLSAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbG9uZyBsbGQ7CiAKICAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKICAgICBpZiAodG1wID09IE5VTEwpCkBAIC0xNTk3LDIxICsxNTg0LDIwIEBACiAgICAgcmV0dXJuIGxsZDsKIH0KIAotc3RhdGljIHVuc2lnbmVkIFBZX0xPTkdfTE9ORworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZwogcHlsb25nX2FzX2xsdShQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqdG1wOwotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxsdTsKIAogICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOwogICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTE7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZyBsb25nKS0xOwogCiAgICAgbGx1ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh0bXApOwogICAgIFB5X0RFQ1JFRih0bXApOwogICAgIHJldHVybiBsbHU7CiB9Ci0jZW5kaWYKIAogc3RhdGljIFB5X3NzaXplX3QKIHB5bG9uZ19hc196ZChQeU9iamVjdCAqaXRlbSkKQEAgLTE2NTYsMTMgKzE2NDIsMTMgQEAKIC8qIFVucGFjayBhIHNpbmdsZSBpdGVtLiAnZm10JyBjYW4gYmUgYW55IG5hdGl2ZSBmb3JtYXQgY2hhcmFjdGVyIGluIHN0cnVjdAogICAgbW9kdWxlIHN5bnRheC4gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHNlbnNpdGl2ZSB0byBzbWFsbCBjaGFuZ2VzLiBXaXRoIHRoaXMKICAgIGxheW91dCBnY2MgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgYSBmYXN0IGp1bXAgdGFibGUuICovCi1QeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK3N0YXRpYyBpbmxpbmUgUHlPYmplY3QgKgogdW5wYWNrX3NpbmdsZShjb25zdCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmZtdCkKIHsKLSAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBsbHU7CiAgICAgdW5zaWduZWQgbG9uZyBsdTsKICAgICBzaXplX3QgenU7Ci0gICAgUFlfTE9OR19MT05HIGxsZDsKKyAgICBsb25nIGxvbmcgbGxkOwogICAgIGxvbmcgbGQ7CiAgICAgUHlfc3NpemVfdCB6ZDsKICAgICBkb3VibGUgZDsKQEAgLTE2NzksMTEgKzE2NjUsNyBAQAogICAgIGNhc2UgJ2wnOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGxvbmcpOyBnb3RvIGNvbnZlcnRfbGQ7CiAKICAgICAvKiBib29sZWFuICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBfQm9vbCk7IGdvdG8gY29udmVydF9ib29sOwotICAgICNlbHNlCi0gICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgY2hhcik7IGdvdG8gY29udmVydF9ib29sOwotICAgICNlbmRpZgogCiAgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KICAgICBjYXNlICdIJzogVU5QQUNLX1NJTkdMRShsdSwgcHRyLCB1bnNpZ25lZCBzaG9ydCk7IGdvdG8gY29udmVydF9sdTsKQEAgLTE2OTEsMTAgKzE2NzMsOCBAQAogICAgIGNhc2UgJ0wnOiBVTlBBQ0tfU0lOR0xFKGx1LCBwdHIsIHVuc2lnbmVkIGxvbmcpOyBnb3RvIGNvbnZlcnRfbHU7CiAKICAgICAvKiBuYXRpdmUgNjQtYml0ICovCi0gICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgY2FzZSAncSc6IFVOUEFDS19TSU5HTEUobGxkLCBwdHIsIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbGQ7Ci0gICAgY2FzZSAnUSc6IFVOUEFDS19TSU5HTEUobGx1LCBwdHIsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbHU7Ci0gICAgI2VuZGlmCisgICAgY2FzZSAncSc6IFVOUEFDS19TSU5HTEUobGxkLCBwdHIsIGxvbmcgbG9uZyk7IGdvdG8gY29udmVydF9sbGQ7CisgICAgY2FzZSAnUSc6IFVOUEFDS19TSU5HTEUobGx1LCBwdHIsIHVuc2lnbmVkIGxvbmcgbG9uZyk7IGdvdG8gY29udmVydF9sbHU7CiAKICAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KICAgICBjYXNlICduJzogVU5QQUNLX1NJTkdMRSh6ZCwgcHRyLCBQeV9zc2l6ZV90KTsgZ290byBjb252ZXJ0X3pkOwpAQCAtMTc1NSwxMCArMTczNSwxMCBAQAogc3RhdGljIGludAogcGFja19zaW5nbGUoY2hhciAqcHRyLCBQeU9iamVjdCAqaXRlbSwgY29uc3QgY2hhciAqZm10KQogewotICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGxsdTsKICAgICB1bnNpZ25lZCBsb25nIGx1OwogICAgIHNpemVfdCB6dTsKLSAgICBQWV9MT05HX0xPTkcgbGxkOworICAgIGxvbmcgbG9uZyBsbGQ7CiAgICAgbG9uZyBsZDsKICAgICBQeV9zc2l6ZV90IHpkOwogICAgIGRvdWJsZSBkOwpAQCAtMTgwNiwyMCArMTc4NiwxOCBAQAogICAgICAgICBicmVhazsKIAogICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlICdxJzoKICAgICAgICAgbGxkID0gcHlsb25nX2FzX2xsZChpdGVtKTsKICAgICAgICAgaWYgKGxsZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7Ci0gICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGxkLCBQWV9MT05HX0xPTkcpOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsZCwgbG9uZyBsb25nKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnUSc6CiAgICAgICAgIGxsdSA9IHB5bG9uZ19hc19sbHUoaXRlbSk7Ci0gICAgICAgIGlmIChsbHUgPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAobGx1ID09ICh1bnNpZ25lZCBsb25nIGxvbmcpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOwotICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGxsdSwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbHUsIHVuc2lnbmVkIGxvbmcgbG9uZyk7CiAgICAgICAgIGJyZWFrOwotICAgICNlbmRpZgogCiAgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCiAgICAgY2FzZSAnbic6CkBAIC0xODUzLDExICsxODMxLDcgQEAKICAgICAgICAgbGQgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CiAgICAgICAgIGlmIChsZCA8IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7IC8qIHByZXNlcnZlIG9yaWdpbmFsIGVycm9yICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgX0Jvb2wpOwotICAgICNlbHNlCi0gICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIGNoYXIpOwotICAgICNlbmRpZgogICAgICAgICAgYnJlYWs7CiAKICAgICAvKiBieXRlcyBvYmplY3QgKi8KQEAgLTIwMjQsNyArMTk5OCw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogYWxsb3cgZXhwbGljaXQgZm9ybSBvZiBuYXRpdmUgZm9ybWF0ICovCi1QeV9MT0NBTF9JTkxJTkUoY29uc3QgY2hhciAqKQorc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKIGFkanVzdF9mbXQoY29uc3QgUHlfYnVmZmVyICp2aWV3KQogewogICAgIGNvbnN0IGNoYXIgKmZtdDsKQEAgLTIzMDYsNyArMjI4MCw3IEBACiAgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBmbXQpOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIGluaXRfc2xpY2UoUHlfYnVmZmVyICpiYXNlLCBQeU9iamVjdCAqa2V5LCBpbnQgZGltKQogewogICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoOwpAQCAtMjYyOCw3ICsyNjAyLDcgQEAKICAgICAgICAgZXF1YWwgPSAoeCA9PSB5KTsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitzdGF0aWMgaW5saW5lIGludAogdW5wYWNrX2NtcChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLCBjaGFyIGZtdCwKICAgICAgICAgICAgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKIHsKQEAgLTI2NDQsMTEgKzI2MTgsNyBAQAogICAgIGNhc2UgJ2wnOiBDTVBfU0lOR0xFKHAsIHEsIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBib29sZWFuICovCi0gICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKICAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBfQm9vbCk7IHJldHVybiBlcXVhbDsKLSAgICAjZWxzZQotICAgIGNhc2UgJz8nOiBDTVBfU0lOR0xFKHAsIHEsIGNoYXIpOyByZXR1cm4gZXF1YWw7Ci0gICAgI2VuZGlmCiAKICAgICAvKiB1bnNpZ25lZCBpbnRlZ2VycyAqLwogICAgIGNhc2UgJ0gnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIHNob3J0KTsgcmV0dXJuIGVxdWFsOwpAQCAtMjY1NiwxMCArMjYyNiw4IEBACiAgICAgY2FzZSAnTCc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgbG9uZyk7IHJldHVybiBlcXVhbDsKIAogICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KLSAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdxJzogQ01QX1NJTkdMRShwLCBxLCBQWV9MT05HX0xPTkcpOyByZXR1cm4gZXF1YWw7Ci0gICAgY2FzZSAnUSc6IENNUF9TSU5HTEUocCwgcSwgdW5zaWduZWQgUFlfTE9OR19MT05HKTsgcmV0dXJuIGVxdWFsOwotICAgICNlbmRpZgorICAgIGNhc2UgJ3EnOiBDTVBfU0lOR0xFKHAsIHEsIGxvbmcgbG9uZyk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdRJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBsb25nIGxvbmcpOyByZXR1cm4gZXF1YWw7CiAKICAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KICAgICBjYXNlICduJzogQ01QX1NJTkdMRShwLCBxLCBQeV9zc2l6ZV90KTsgcmV0dXJuIGVxdWFsOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKaW5kZXggOTQ2MzU3Zi4uYzIwMDFmMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYworKysgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCkBAIC05Nyw2ICs5NywxMSBAQAogICAgIGlmIChmbGFncyA9PSAoTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUykpIHsKICAgICAgICAgcmVzID0gKCooUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpbWV0aCkoc2VsZiwgYXJncywga3dkcyk7CiAgICAgfQorICAgIGVsc2UgaWYgKGZsYWdzID09IE1FVEhfRkFTVENBTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKipzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgICAgICBQeV9zc2l6ZV90IG5hcmdzID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgcmVzID0gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZHMpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiJS4yMDBzKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiLApAQCAtMTQ1LDYgKzE1MCwxNTMgQEAKICAgICByZXR1cm4gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzLCBOVUxMKTsKIH0KIAorUHlPYmplY3QgKgorX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuY19vYmosIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeUNGdW5jdGlvbk9iamVjdCAqZnVuYyA9IChQeUNGdW5jdGlvbk9iamVjdCopZnVuY19vYmo7CisgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKKyAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IGZsYWdzOworCisgICAgYXNzZXJ0KFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgLyogX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBmbGFncyA9IFB5Q0Z1bmN0aW9uX0dFVF9GTEFHUyhmdW5jKSAmIH4oTUVUSF9DTEFTUyB8IE1FVEhfU1RBVElDIHwgTUVUSF9DT0VYSVNUKTsKKworICAgIHN3aXRjaCAoZmxhZ3MpCisgICAgeworICAgIGNhc2UgTUVUSF9OT0FSR1M6CisgICAgICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuYXJncyAhPSAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgIGZ1bmMtPm1fbWwtPm1sX25hbWUsIG5hcmdzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgTlVMTCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNRVRIX086CisgICAgICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICIlLjIwMHMoKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuYXJncyAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJXpkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgZnVuYy0+bV9tbC0+bWxfbmFtZSwgbmFyZ3MpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSAoKm1ldGgpIChzZWxmLCBhcmdzWzBdKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1FVEhfVkFSQVJHUzoKKyAgICBjYXNlIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFM6CisgICAgeworICAgICAgICAvKiBTbG93LXBhdGg6IGNyZWF0ZSBhIHRlbXBvcmFyeSB0dXBsZSAqLworICAgICAgICBQeU9iamVjdCAqdHVwbGU7CisKKyAgICAgICAgaWYgKCEoZmxhZ3MgJiBNRVRIX0tFWVdPUkRTKSAmJiBrd2FyZ3MgIT0gTlVMTCAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIG5vIGtleXdvcmQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgdHVwbGUgPSBfUHlTdGFja19Bc1R1cGxlKGFyZ3MsIG5hcmdzKTsKKyAgICAgICAgaWYgKHR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9LRVlXT1JEUykgeworICAgICAgICAgICAgcmVzdWx0ID0gKCooUHlDRnVuY3Rpb25XaXRoS2V5d29yZHMpbWV0aCkgKHNlbGYsIHR1cGxlLCBrd2FyZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gKCptZXRoKSAoc2VsZiwgdHVwbGUpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgTUVUSF9GQVNUQ0FMTDoKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgICAgIFB5T2JqZWN0ICprd25hbWVzOworICAgICAgICBfUHlDRnVuY3Rpb25GYXN0IGZhc3RtZXRoID0gKF9QeUNGdW5jdGlvbkZhc3QpbWV0aDsKKworICAgICAgICBzdGFjayA9IF9QeVN0YWNrX1VucGFja0RpY3QoYXJncywgbmFyZ3MsIGt3YXJncywgJmt3bmFtZXMsIGZ1bmNfb2JqKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKCpmYXN0bWV0aCkgKHNlbGYsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChzdGFjayAhPSBhcmdzKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICAgICAgfQorICAgICAgICBQeV9YREVDUkVGKGt3bmFtZXMpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiQmFkIGNhbGwgZmxhZ3MgaW4gUHlDRnVuY3Rpb25fQ2FsbC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIk1FVEhfT0xEQVJHUyBpcyBubyBsb25nZXIgc3VwcG9ydGVkISIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jX29iaiwgcmVzdWx0LCBOVUxMKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK19QeUNGdW5jdGlvbl9GYXN0Q2FsbEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgUHlPYmplY3QgKmt3ZGljdCwgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworCisgICAgYXNzZXJ0KFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoa3duYW1lcykpOworICAgIGFzc2VydCgobmFyZ3MgPT0gMCAmJiBua3dhcmdzID09IDApIHx8IHN0YWNrICE9IE5VTEwpOworICAgIC8qIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUgKi8KKworICAgIGlmIChua3dhcmdzID4gMCkgeworICAgICAgICBrd2RpY3QgPSBfUHlTdGFja19Bc0RpY3Qoc3RhY2sgKyBuYXJncywga3duYW1lcyk7CisgICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgbmFyZ3MsIGt3ZGljdCk7CisgICAgUHlfWERFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC8qIE1ldGhvZHMgKHRoZSBzdGFuZGFyZCBidWlsdC1pbiBtZXRob2RzLCB0aGF0IGlzKSAqLwogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKaW5kZXggYWMwNzY0Mi4uZGNhZTFjNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYworKysgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCkBAIC0zODAsNyArMzgwLDcgQEAKICAgICBmb3IgKGN1cl9zbG90ID0gZGVmLT5tX3Nsb3RzOyBjdXJfc2xvdCAmJiBjdXJfc2xvdC0+c2xvdDsgY3VyX3Nsb3QrKykgewogICAgICAgICBzd2l0Y2ggKGN1cl9zbG90LT5zbG90KSB7CiAgICAgICAgICAgICBjYXNlIFB5X21vZF9jcmVhdGU6Ci0gICAgICAgICAgICAgICAgLyogaGFuZGxlZCBpbiBQeU1vZHVsZV9DcmVhdGVGcm9tU2xvdHMgKi8KKyAgICAgICAgICAgICAgICAvKiBoYW5kbGVkIGluIFB5TW9kdWxlX0Zyb21EZWZBbmRTcGVjMiAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQeV9tb2RfZXhlYzoKICAgICAgICAgICAgICAgICByZXQgPSAoKGludCAoKikoUHlPYmplY3QgKikpY3VyX3Nsb3QtPnZhbHVlKShtb2R1bGUpOwpAQCAtNDUwLDggKzQ1MCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBkID0gKChQeU1vZHVsZU9iamVjdCAqKW0pIC0+IG1kX2RpY3Q7Ci0gICAgaWYgKGQgPT0gTlVMTCkKLSAgICAgICAgKChQeU1vZHVsZU9iamVjdCAqKW0pIC0+IG1kX2RpY3QgPSBkID0gUHlEaWN0X05ldygpOworICAgIGFzc2VydChkICE9IE5VTEwpOwogICAgIHJldHVybiBkOwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jIGIvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYwppbmRleCAzZDI3YTk1Li4wYmIzMDYzIDEwMDY0NAotLS0gYS9PYmplY3RzL25hbWVzcGFjZW9iamVjdC5jCisrKyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKQEAgLTEsNCArMSw0IEBACi0vKiBuYW1lc3BhY2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uICovCisvLyBuYW1lc3BhY2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uCiAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKQEAgLTE2LDcgKzE2LDcgQEAKIH07CiAKIAotLyogTWV0aG9kcyAqLworLy8gTWV0aG9kcwogCiBzdGF0aWMgUHlPYmplY3QgKgogbmFtZXNwYWNlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKQEAgLTQwLDcgKzQwLDcgQEAKIHN0YXRpYyBpbnQKIG5hbWVzcGFjZV9pbml0KF9QeU5hbWVzcGFjZU9iamVjdCAqbnMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICAvKiBpZ25vcmUgYXJncyBpZiBpdCdzIE5VTEwgb3IgZW1wdHkgKi8KKyAgICAvLyBpZ25vcmUgYXJncyBpZiBpdCdzIE5VTEwgb3IgZW1wdHkKICAgICBpZiAoYXJncyAhPSBOVUxMKSB7CiAgICAgICAgIFB5X3NzaXplX3QgYXJnY291bnQgPSBQeU9iamVjdF9TaXplKGFyZ3MpOwogICAgICAgICBpZiAoYXJnY291bnQgPCAwKQpAQCAtMTkxLDcgKzE5MSw3IEBACiBzdGF0aWMgUHlNZXRob2REZWYgbmFtZXNwYWNlX21ldGhvZHNbXSA9IHsKICAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbmFtZXNwYWNlX3JlZHVjZSwgTUVUSF9OT0FSR1MsCiAgICAgIG5hbWVzcGFjZV9yZWR1Y2VfX2RvY19ffSwKLSAgICB7TlVMTCwgICAgICAgICBOVUxMfSAgLyogc2VudGluZWwgKi8KKyAgICB7TlVMTCwgICAgICAgICBOVUxMfSAgLy8gc2VudGluZWwKIH07CiAKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYmplY3QuYyBiL09iamVjdHMvb2JqZWN0LmMKaW5kZXggODAyNDg4OS4uZTA4ZjlhOSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYmplY3QuYworKysgYi9PYmplY3RzL29iamVjdC5jCkBAIC0yMiwxMiArMjIsNiBAQAogewogICAgIFB5T2JqZWN0ICpvOwogICAgIFB5X3NzaXplX3QgdG90YWwgPSBfUHlfUmVmVG90YWw7Ci0gICAgLyogaWdub3JlIHRoZSByZWZlcmVuY2VzIHRvIHRoZSBkdW1teSBvYmplY3Qgb2YgdGhlIGRpY3RzIGFuZCBzZXRzCi0gICAgICAgYmVjYXVzZSB0aGV5IGFyZSBub3QgcmVsaWFibGUgYW5kIG5vdCB1c2VmdWwgKG5vdyB0aGF0IHRoZQotICAgICAgIGhhc2ggdGFibGUgY29kZSBpcyB3ZWxsLXRlc3RlZCkgKi8KLSAgICBvID0gX1B5RGljdF9EdW1teSgpOwotICAgIGlmIChvICE9IE5VTEwpCi0gICAgICAgIHRvdGFsIC09IG8tPm9iX3JlZmNudDsKICAgICBvID0gX1B5U2V0X0R1bW15OwogICAgIGlmIChvICE9IE5VTEwpCiAgICAgICAgIHRvdGFsIC09IG8tPm9iX3JlZmNudDsKQEAgLTEwOSw2ICsxMDMsMTUgQEAKIGR1bXBfY291bnRzKEZJTEUqIGYpCiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0cDsKKyAgICBQeU9iamVjdCAqeG9wdGlvbnMsICp2YWx1ZTsKKyAgICBfUHlfSURFTlRJRklFUihzaG93YWxsb2Njb3VudCk7CisKKyAgICB4b3B0aW9ucyA9IFB5U3lzX0dldFhPcHRpb25zKCk7CisgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICB2YWx1ZSA9IF9QeURpY3RfR2V0SXRlbUlkKHhvcHRpb25zLCAmUHlJZF9zaG93YWxsb2Njb3VudCk7CisgICAgaWYgKHZhbHVlICE9IFB5X1RydWUpCisgICAgICAgIHJldHVybjsKIAogICAgIGZvciAodHAgPSB0eXBlX2xpc3Q7IHRwOyB0cCA9IHRwLT50cF9uZXh0KQogICAgICAgICBmcHJpbnRmKGYsICIlcyBhbGxvYydkOiAlIiBQWV9GT1JNQVRfU0laRV9UICJkLCAiCkBAIC02NDQsNyArNjQ3LDcgQEAKIC8qIE1hcCByaWNoIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIHRoZWlyIHN3YXBwZWQgdmVyc2lvbiwgZS5nLiBMVCA8LS0+IEdUICovCiBpbnQgX1B5X1N3YXBwZWRPcFtdID0ge1B5X0dULCBQeV9HRSwgUHlfRVEsIFB5X05FLCBQeV9MVCwgUHlfTEV9OwogCi1zdGF0aWMgY2hhciAqb3BzdHJpbmdzW10gPSB7IjwiLCAiPD0iLCAiPT0iLCAiIT0iLCAiPiIsICI+PSJ9Oworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBvcHN0cmluZ3NbXSA9IHsiPCIsICI8PSIsICI9PSIsICIhPSIsICI+IiwgIj49In07CiAKIC8qIFBlcmZvcm0gYSByaWNoIGNvbXBhcmlzb24sIHJhaXNpbmcgVHlwZUVycm9yIHdoZW4gdGhlIHJlcXVlc3RlZCBjb21wYXJpc29uCiAgICBvcGVyYXRvciBpcyBub3Qgc3VwcG9ydGVkLiAqLwpAQCAtNjg2LDExICs2ODksMTAgQEAKICAgICAgICAgcmVzID0gKHYgIT0gdykgPyBQeV9UcnVlIDogUHlfRmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIFhYWCBTcGVjaWFsLWNhc2UgTm9uZSBzbyBpdCBkb2Vzbid0IHNob3cgYXMgTm9uZVR5cGUoKSAqLwogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInVub3JkZXJhYmxlIHR5cGVzOiAlLjEwMHMoKSAlcyAlLjEwMHMoKSIsCi0gICAgICAgICAgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgIiclcycgbm90IHN1cHBvcnRlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiAnJS4xMDBzJyBhbmQgJyUuMTAwcyciLAogICAgICAgICAgICAgICAgICAgICAgb3BzdHJpbmdzW29wXSwKKyAgICAgICAgICAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICB3LT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMTA0MSw4ICsxMDQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgUHlfSU5DUkVGKG5hbWUpOwogCiAgICAgaWYgKHRwLT50cF9kaWN0ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5VHlwZV9SZWFkeSh0cCkgPCAwKQpAQCAtMTA1MCwxMCArMTA1MSwxMCBAQAogICAgIH0KIAogICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHAsIG5hbWUpOwotICAgIFB5X1hJTkNSRUYoZGVzY3IpOwogCiAgICAgZiA9IE5VTEw7CiAgICAgaWYgKGRlc2NyICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGRlc2NyKTsKICAgICAgICAgZiA9IGRlc2NyLT5vYl90eXBlLT50cF9kZXNjcl9nZXQ7CiAgICAgICAgIGlmIChmICE9IE5VTEwgJiYgUHlEZXNjcl9Jc0RhdGEoZGVzY3IpKSB7CiAgICAgICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIChQeU9iamVjdCAqKW9iai0+b2JfdHlwZSk7CkBAIC0xMDczLDggKzEwNzQsOSBAQAogICAgICAgICAgICAgICAgIGlmICh0c2l6ZSA8IDApCiAgICAgICAgICAgICAgICAgICAgIHRzaXplID0gLXRzaXplOwogICAgICAgICAgICAgICAgIHNpemUgPSBfUHlPYmplY3RfVkFSX1NJWkUodHAsIHRzaXplKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoc2l6ZSA8PSBQWV9TU0laRV9UX01BWCk7CiAKLSAgICAgICAgICAgICAgICBkaWN0b2Zmc2V0ICs9IChsb25nKXNpemU7CisgICAgICAgICAgICAgICAgZGljdG9mZnNldCArPSAoUHlfc3NpemVfdClzaXplOwogICAgICAgICAgICAgICAgIGFzc2VydChkaWN0b2Zmc2V0ID4gMCk7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGRpY3RvZmZzZXQgJSBTSVpFT0ZfVk9JRF9QID09IDApOwogICAgICAgICAgICAgfQpAQCAtMTE0MiwxMiArMTE0NCwxMSBAQAogICAgIFB5X0lOQ1JFRihuYW1lKTsKIAogICAgIGRlc2NyID0gX1B5VHlwZV9Mb29rdXAodHAsIG5hbWUpOwotICAgIFB5X1hJTkNSRUYoZGVzY3IpOwogCi0gICAgZiA9IE5VTEw7CiAgICAgaWYgKGRlc2NyICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGRlc2NyKTsKICAgICAgICAgZiA9IGRlc2NyLT5vYl90eXBlLT50cF9kZXNjcl9zZXQ7Ci0gICAgICAgIGlmIChmICE9IE5VTEwgJiYgUHlEZXNjcl9Jc0RhdGEoZGVzY3IpKSB7CisgICAgICAgIGlmIChmICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlcyA9IGYoZGVzY3IsIG9iaiwgdmFsdWUpOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CkBAIC0xMTU1LDQwICsxMTU2LDMyIEBACiAKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwotICAgICAgICBpZiAoZGljdHB0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICByZXMgPSBfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlfVFlQRShvYmopLCBkaWN0cHRyLCBuYW1lLCB2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOworICAgICAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZGVzY3IgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICclVSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJS41MHMnIG9iamVjdCBhdHRyaWJ1dGUgJyVVJyBpcyByZWFkLW9ubHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cC0+dHBfbmFtZSwgbmFtZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0RGljdF9TZXRJdGVtKHRwLCBkaWN0cHRyLCBuYW1lLCB2YWx1ZSk7CiAgICAgfQotICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKKyAgICBlbHNlIHsKICAgICAgICAgUHlfSU5DUkVGKGRpY3QpOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9EZWxJdGVtKGRpY3QsIG5hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBuYW1lLCB2YWx1ZSk7CiAgICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKLSAgICAgICAgaWYgKHJlcyA8IDAgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCi0gICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwotICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQorICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwogCi0gICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByZXMgPSBmKGRlc2NyLCBvYmosIHZhbHVlKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIGlmIChkZXNjciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICAgICAgIiclLjUwcycgb2JqZWN0IGF0dHJpYnV0ZSAnJVUnIGlzIHJlYWQtb25seSIsCi0gICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKICAgZG9uZToKICAgICBQeV9YREVDUkVGKGRlc2NyKTsKICAgICBQeV9ERUNSRUYobmFtZSk7CkBAIC0xMjA0LDcgKzExOTcsNyBAQAogaW50CiBQeU9iamVjdF9HZW5lcmljU2V0RGljdChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CisgICAgUHlPYmplY3QgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKICAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKQEAgLTEyMjAsMTAgKzEyMTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIm5vdCBhICclLjIwMHMnIiwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICAqZGljdHB0ciA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBQeV9YU0VUUkVGKCpkaWN0cHRyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvb2JtYWxsb2MuYyBiL09iamVjdHMvb2JtYWxsb2MuYwppbmRleCA3Y2M4ODlmLi5hMTE0MmYzIDEwMDY0NAotLS0gYS9PYmplY3RzL29ibWFsbG9jLmMKKysrIGIvT2JqZWN0cy9vYm1hbGxvYy5jCkBAIC0xLDMxICsxLDQyIEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKKyNpbmNsdWRlIDxzdGRib29sLmg+CisKKworLyogRGVmaW5lZCBpbiB0cmFjZW1hbGxvYy5jICovCitleHRlcm4gdm9pZCBfUHlNZW1fRHVtcFRyYWNlYmFjayhpbnQgZmQsIGNvbnN0IHZvaWQgKnB0cik7CisKKwogLyogUHl0aG9uJ3MgbWFsbG9jIHdyYXBwZXJzIChzZWUgcHltZW0uaCkgKi8KIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHICAgLyogV0lUSF9QWU1BTExPQyAmJiBQWU1BTExPQ19ERUJVRyAqLworI3VuZGVmICB1aW50CisjZGVmaW5lIHVpbnQgICAgdW5zaWduZWQgaW50ICAgIC8qIGFzc3VtaW5nID49IDE2IGJpdHMgKi8KKwogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKTsKK3N0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdSYXdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOworc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1Jhd1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKK3N0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z1Jhd0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKKwogc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBzaXplKTsKIHN0YXRpYyB2b2lkKiBfUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwotc3RhdGljIHZvaWQgX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApOwogc3RhdGljIHZvaWQqIF9QeU1lbV9EZWJ1Z1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKK3N0YXRpYyB2b2lkIF9QeU1lbV9EZWJ1Z0ZyZWUodm9pZCAqY3R4LCB2b2lkICpwKTsKIAogc3RhdGljIHZvaWQgX1B5T2JqZWN0X0RlYnVnRHVtcEFkZHJlc3MoY29uc3Qgdm9pZCAqcCk7CiBzdGF0aWMgdm9pZCBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoY2hhciBhcGlfaWQsIGNvbnN0IHZvaWQgKnApOwotI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9faGFzX2ZlYXR1cmUpICAvKiBDbGFuZyAqLwogICNpZiBfX2hhc19mZWF0dXJlKGFkZHJlc3Nfc2FuaXRpemVyKSAgLyogaXMgQVNBTiBlbmFibGVkPyAqLwogICAjZGVmaW5lIEFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUyBcCi0gICAgICAgIF9fYXR0cmlidXRlX18oKG5vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzKSkgXAotICAgICAgICBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQorICAgICAgICBfX2F0dHJpYnV0ZV9fKChub19hZGRyZXNzX3NhZmV0eV9hbmFseXNpcykpCiAgI2Vsc2UKICAgI2RlZmluZSBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKICAjZW5kaWYKICNlbHNlCiAgI2lmIGRlZmluZWQoX19TQU5JVElaRV9BRERSRVNTX18pICAvKiBHQ0MgNC44LngsIGlzIEFTQU4gZW5hYmxlZD8gKi8KICAgI2RlZmluZSBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMgXAotICAgICAgICBfX2F0dHJpYnV0ZV9fKChub19hZGRyZXNzX3NhZmV0eV9hbmFseXNpcykpIFwKLSAgICAgICAgX19hdHRyaWJ1dGVfXyAoKG5vaW5saW5lKSkKKyAgICAgICAgX19hdHRyaWJ1dGVfXygobm9fYWRkcmVzc19zYWZldHlfYW5hbHlzaXMpKQogICNlbHNlCiAgICNkZWZpbmUgQVRUUklCVVRFX05PX0FERFJFU1NfU0FGRVRZX0FOQUxZU0lTCiAgI2VuZGlmCkBAIC0xNDUsOSArMTU2LDggQEAKICNlbHNlCiAjICBkZWZpbmUgUFlPQkpfRlVOQ1MgUFlSQVdfRlVOQ1MKICNlbmRpZgotI2RlZmluZSBQWU1FTV9GVU5DUyBQWVJBV19GVU5DUworI2RlZmluZSBQWU1FTV9GVU5DUyBQWU9CSl9GVU5DUwogCi0jaWZkZWYgUFlNQUxMT0NfREVCVUcKIHR5cGVkZWYgc3RydWN0IHsKICAgICAvKiBXZSB0YWcgZWFjaCBibG9jayB3aXRoIGFuIEFQSSBJRCBpbiBvcmRlciB0byB0YWcgQVBJIHZpb2xhdGlvbnMgKi8KICAgICBjaGFyIGFwaV9pZDsKQEAgLTE2MywxOSArMTczLDIxIEBACiAgICAgeydvJywge05VTEwsIFBZT0JKX0ZVTkNTfX0KICAgICB9OwogCi0jZGVmaW5lIFBZREJHX0ZVTkNTIF9QeU1lbV9EZWJ1Z01hbGxvYywgX1B5TWVtX0RlYnVnQ2FsbG9jLCBfUHlNZW1fRGVidWdSZWFsbG9jLCBfUHlNZW1fRGVidWdGcmVlCi0jZW5kaWYKKyNkZWZpbmUgUFlSQVdEQkdfRlVOQ1MgXAorICAgIF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYywgX1B5TWVtX0RlYnVnUmF3Q2FsbG9jLCBfUHlNZW1fRGVidWdSYXdSZWFsbG9jLCBfUHlNZW1fRGVidWdSYXdGcmVlCisjZGVmaW5lIFBZREJHX0ZVTkNTIFwKKyAgICBfUHlNZW1fRGVidWdNYWxsb2MsIF9QeU1lbV9EZWJ1Z0NhbGxvYywgX1B5TWVtX0RlYnVnUmVhbGxvYywgX1B5TWVtX0RlYnVnRnJlZQogCiBzdGF0aWMgUHlNZW1BbGxvY2F0b3JFeCBfUHlNZW1fUmF3ID0gewotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgJl9QeU1lbV9EZWJ1Zy5yYXcsIFBZREJHX0ZVTkNTCisjaWZkZWYgUHlfREVCVUcKKyAgICAmX1B5TWVtX0RlYnVnLnJhdywgUFlSQVdEQkdfRlVOQ1MKICNlbHNlCiAgICAgTlVMTCwgUFlSQVdfRlVOQ1MKICNlbmRpZgogICAgIH07CiAKIHN0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU1lbSA9IHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworI2lmZGVmIFB5X0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5tZW0sIFBZREJHX0ZVTkNTCiAjZWxzZQogICAgIE5VTEwsIFBZTUVNX0ZVTkNTCkBAIC0xODMsMTYgKzE5NSw3NiBAQAogICAgIH07CiAKIHN0YXRpYyBQeU1lbUFsbG9jYXRvckV4IF9QeU9iamVjdCA9IHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworI2lmZGVmIFB5X0RFQlVHCiAgICAgJl9QeU1lbV9EZWJ1Zy5vYmosIFBZREJHX0ZVTkNTCiAjZWxzZQogICAgIE5VTEwsIFBZT0JKX0ZVTkNTCiAjZW5kaWYKICAgICB9OwogCitpbnQKK19QeU1lbV9TZXR1cEFsbG9jYXRvcnMoY29uc3QgY2hhciAqb3B0KQoreworICAgIGlmIChvcHQgPT0gTlVMTCB8fCAqb3B0ID09ICdcMCcpIHsKKyAgICAgICAgLyogUFlUSE9OTUFMTE9DIGlzIGVtcHR5IG9yIGlzIG5vdCBzZXQgb3IgaWdub3JlZCAoLUUvLUkgY29tbWFuZCBsaW5lCisgICAgICAgICAgIG9wdGlvbnMpOiB1c2UgZGVmYXVsdCBhbGxvY2F0b3JzICovCisjaWZkZWYgUHlfREVCVUcKKyMgIGlmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICAgICAgb3B0ID0gInB5bWFsbG9jX2RlYnVnIjsKKyMgIGVsc2UKKyAgICAgICAgb3B0ID0gIm1hbGxvY19kZWJ1ZyI7CisjICBlbmRpZgorI2Vsc2UKKyAgIC8qICFQeV9ERUJVRyAqLworIyAgaWZkZWYgV0lUSF9QWU1BTExPQworICAgICAgICBvcHQgPSAicHltYWxsb2MiOworIyAgZWxzZQorICAgICAgICBvcHQgPSAibWFsbG9jIjsKKyMgIGVuZGlmCisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoc3RyY21wKG9wdCwgImRlYnVnIikgPT0gMCkgeworICAgICAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoc3RyY21wKG9wdCwgIm1hbGxvYyIpID09IDAgfHwgc3RyY21wKG9wdCwgIm1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgeworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IGFsbG9jID0ge05VTEwsIFBZUkFXX0ZVTkNTfTsKKworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX1JBVywgJmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZhbGxvYyk7CisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fT0JKLCAmYWxsb2MpOworCisgICAgICAgIGlmIChzdHJjbXAob3B0LCAibWFsbG9jX2RlYnVnIikgPT0gMCkKKyAgICAgICAgICAgIFB5TWVtX1NldHVwRGVidWdIb29rcygpOworICAgIH0KKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgZWxzZSBpZiAoc3RyY21wKG9wdCwgInB5bWFsbG9jIikgPT0gMAorICAgICAgICAgICAgIHx8IHN0cmNtcChvcHQsICJweW1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgeworICAgICAgICBQeU1lbUFsbG9jYXRvckV4IHJhd19hbGxvYyA9IHtOVUxMLCBQWVJBV19GVU5DU307CisgICAgICAgIFB5TWVtQWxsb2NhdG9yRXggbWVtX2FsbG9jID0ge05VTEwsIFBZTUVNX0ZVTkNTfTsKKyAgICAgICAgUHlNZW1BbGxvY2F0b3JFeCBvYmpfYWxsb2MgPSB7TlVMTCwgUFlPQkpfRlVOQ1N9OworCisgICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmcmF3X2FsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZtZW1fYWxsb2MpOworICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJm9ial9hbGxvYyk7CisKKyAgICAgICAgaWYgKHN0cmNtcChvcHQsICJweW1hbGxvY19kZWJ1ZyIpID09IDApCisgICAgICAgICAgICBQeU1lbV9TZXR1cERlYnVnSG9va3MoKTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgLyogdW5rbm93biBhbGxvY2F0b3IgKi8KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogI3VuZGVmIFBZUkFXX0ZVTkNTCiAjdW5kZWYgUFlNRU1fRlVOQ1MKICN1bmRlZiBQWU9CSl9GVU5DUworI3VuZGVmIFBZUkFXREJHX0ZVTkNTCiAjdW5kZWYgUFlEQkdfRlVOQ1MKIAogc3RhdGljIFB5T2JqZWN0QXJlbmFBbGxvY2F0b3IgX1B5T2JqZWN0X0FyZW5hID0ge05VTEwsCkBAIC0yMDUsMjMgKzI3Nyw0NiBAQAogI2VuZGlmCiAgICAgfTsKIAorI2lmZGVmIFdJVEhfUFlNQUxMT0MKK3N0YXRpYyBpbnQKK19QeU1lbV9EZWJ1Z0VuYWJsZWQodm9pZCkKK3sKKyAgICByZXR1cm4gKF9QeU9iamVjdC5tYWxsb2MgPT0gX1B5TWVtX0RlYnVnTWFsbG9jKTsKK30KKworaW50CitfUHlNZW1fUHltYWxsb2NFbmFibGVkKHZvaWQpCit7CisgICAgaWYgKF9QeU1lbV9EZWJ1Z0VuYWJsZWQoKSkgeworICAgICAgICByZXR1cm4gKF9QeU1lbV9EZWJ1Zy5vYmouYWxsb2MubWFsbG9jID09IF9QeU9iamVjdF9NYWxsb2MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIChfUHlPYmplY3QubWFsbG9jID09IF9QeU9iamVjdF9NYWxsb2MpOworICAgIH0KK30KKyNlbmRpZgorCiB2b2lkCiBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIHsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgIFB5TWVtQWxsb2NhdG9yRXggYWxsb2M7CiAKKyAgICBhbGxvYy5tYWxsb2MgPSBfUHlNZW1fRGVidWdSYXdNYWxsb2M7CisgICAgYWxsb2MuY2FsbG9jID0gX1B5TWVtX0RlYnVnUmF3Q2FsbG9jOworICAgIGFsbG9jLnJlYWxsb2MgPSBfUHlNZW1fRGVidWdSYXdSZWFsbG9jOworICAgIGFsbG9jLmZyZWUgPSBfUHlNZW1fRGVidWdSYXdGcmVlOworCisgICAgaWYgKF9QeU1lbV9SYXcubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z1Jhd01hbGxvYykgeworICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLnJhdzsKKyAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZfUHlNZW1fRGVidWcucmF3LmFsbG9jKTsKKyAgICAgICAgUHlNZW1fU2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9SQVcsICZhbGxvYyk7CisgICAgfQorCiAgICAgYWxsb2MubWFsbG9jID0gX1B5TWVtX0RlYnVnTWFsbG9jOwogICAgIGFsbG9jLmNhbGxvYyA9IF9QeU1lbV9EZWJ1Z0NhbGxvYzsKICAgICBhbGxvYy5yZWFsbG9jID0gX1B5TWVtX0RlYnVnUmVhbGxvYzsKICAgICBhbGxvYy5mcmVlID0gX1B5TWVtX0RlYnVnRnJlZTsKIAotICAgIGlmIChfUHlNZW1fUmF3Lm1hbGxvYyAhPSBfUHlNZW1fRGVidWdNYWxsb2MpIHsKLSAgICAgICAgYWxsb2MuY3R4ID0gJl9QeU1lbV9EZWJ1Zy5yYXc7Ci0gICAgICAgIFB5TWVtX0dldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmX1B5TWVtX0RlYnVnLnJhdy5hbGxvYyk7Ci0gICAgICAgIFB5TWVtX1NldEFsbG9jYXRvcihQWU1FTV9ET01BSU5fUkFXLCAmYWxsb2MpOwotICAgIH0KLQogICAgIGlmIChfUHlNZW0ubWFsbG9jICE9IF9QeU1lbV9EZWJ1Z01hbGxvYykgewogICAgICAgICBhbGxvYy5jdHggPSAmX1B5TWVtX0RlYnVnLm1lbTsKICAgICAgICAgUHlNZW1fR2V0QWxsb2NhdG9yKFBZTUVNX0RPTUFJTl9NRU0sICZfUHlNZW1fRGVidWcubWVtLmFsbG9jKTsKQEAgLTIzMyw3ICszMjgsNiBAQAogICAgICAgICBQeU1lbV9HZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJl9QeU1lbV9EZWJ1Zy5vYmouYWxsb2MpOwogICAgICAgICBQeU1lbV9TZXRBbGxvY2F0b3IoUFlNRU1fRE9NQUlOX09CSiwgJmFsbG9jKTsKICAgICB9Ci0jZW5kaWYKIH0KIAogdm9pZApAQCAtMjY0LDcgKzM1OCw2IEBACiAgICAgY2FzZSBQWU1FTV9ET01BSU5fT0JKOiBfUHlPYmplY3QgPSAqYWxsb2NhdG9yOyBicmVhazsKICAgICAvKiBpZ25vcmUgdW5rbm93biBkb21haW4gKi8KICAgICB9Ci0KIH0KIAogdm9pZApAQCAtNjQyLDI0ICs3MzUsOCBAQAogI2RlZmluZSBTSU1QTEVMT0NLX0xPQ0sobG9jaykgICAvKiBhY3F1aXJlIHJlbGVhc2VkIGxvY2sgKi8KICNkZWZpbmUgU0lNUExFTE9DS19VTkxPQ0sobG9jaykgLyogcmVsZWFzZSBhY3F1aXJlZCBsb2NrICovCiAKLS8qCi0gKiBCYXNpYyB0eXBlcwotICogSSBkb24ndCBjYXJlIGlmIHRoZXNlIGFyZSBkZWZpbmVkIGluIDxzeXMvdHlwZXMuaD4gb3IgZWxzZXdoZXJlLiBBeGlvbS4KLSAqLwotI3VuZGVmICB1Y2hhcgotI2RlZmluZSB1Y2hhciAgIHVuc2lnbmVkIGNoYXIgICAvKiBhc3N1bWluZyA9PSA4IGJpdHMgICovCi0KLSN1bmRlZiAgdWludAotI2RlZmluZSB1aW50ICAgIHVuc2lnbmVkIGludCAgICAvKiBhc3N1bWluZyA+PSAxNiBiaXRzICovCi0KLSN1bmRlZiAgdWxvbmcKLSNkZWZpbmUgdWxvbmcgICB1bnNpZ25lZCBsb25nICAgLyogYXNzdW1pbmcgPj0gMzIgYml0cyAqLwotCi0jdW5kZWYgdXB0cgotI2RlZmluZSB1cHRyICAgIFB5X3VpbnRwdHJfdAotCiAvKiBXaGVuIHlvdSBzYXkgbWVtb3J5LCBteSBtaW5kIHJlYXNvbnMgaW4gdGVybXMgb2YgKHBvaW50ZXJzIHRvKSBibG9ja3MgKi8KLXR5cGVkZWYgdWNoYXIgYmxvY2s7Cit0eXBlZGVmIHVpbnQ4X3QgYmxvY2s7CiAKIC8qIFBvb2wgZm9yIHNtYWxsIGJsb2Nrcy4gKi8KIHN0cnVjdCBwb29sX2hlYWRlciB7CkBAIC02ODMsNyArNzYwLDcgQEAKICAgICAgKiBoZXJlIHRvIG1hcmsgYW4gYXJlbmFfb2JqZWN0IHRoYXQgZG9lc24ndCBjb3JyZXNwb25kIHRvIGFuCiAgICAgICogYWxsb2NhdGVkIGFyZW5hLgogICAgICAqLwotICAgIHVwdHIgYWRkcmVzczsKKyAgICB1aW50cHRyX3QgYWRkcmVzczsKIAogICAgIC8qIFBvb2wtYWxpZ25lZCBwb2ludGVyIHRvIHRoZSBuZXh0IHBvb2wgdG8gYmUgY2FydmVkIG9mZi4gKi8KICAgICBibG9jayogcG9vbF9hZGRyZXNzOwpAQCAtODM0LDcgKzkxMSw3IEBACiB0aGUgcHJldnBvb2wgbWVtYmVyLgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogCi0jZGVmaW5lIFBUQSh4KSAgKChwb29scCApKCh1Y2hhciAqKSYodXNlZHBvb2xzWzIqKHgpXSkgLSAyKnNpemVvZihibG9jayAqKSkpCisjZGVmaW5lIFBUQSh4KSAgKChwb29scCApKCh1aW50OF90ICopJih1c2VkcG9vbHNbMiooeCldKSAtIDIqc2l6ZW9mKGJsb2NrICopKSkKICNkZWZpbmUgUFQoeCkgICBQVEEoeCksIFBUQSh4KQogCiBzdGF0aWMgcG9vbHAgdXNlZHBvb2xzWzIgKiAoKE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyArIDcpIC8gOCkgKiA4XSA9IHsKQEAgLTk0OSwxMSArMTAyNiwxNSBAQAogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIGFyZW5hb2JqOwogICAgIHVpbnQgZXhjZXNzOyAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIGFib3ZlIHBvb2wgYWxpZ25tZW50ICovCiAgICAgdm9pZCAqYWRkcmVzczsKKyAgICBzdGF0aWMgaW50IGRlYnVnX3N0YXRzID0gLTE7CiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCisgICAgaWYgKGRlYnVnX3N0YXRzID09IC0xKSB7CisgICAgICAgIGNoYXIgKm9wdCA9IFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKTsKKyAgICAgICAgZGVidWdfc3RhdHMgPSAob3B0ICE9IE5VTEwgJiYgKm9wdCAhPSAnXDAnKTsKKyAgICB9CisgICAgaWYgKGRlYnVnX3N0YXRzKQogICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwotI2VuZGlmCisKICAgICBpZiAodW51c2VkX2FyZW5hX29iamVjdHMgPT0gTlVMTCkgewogICAgICAgICB1aW50IGk7CiAgICAgICAgIHVpbnQgbnVtYXJlbmFzOwpAQCAtOTY2LDcgKzEwNDcsNyBAQAogICAgICAgICBpZiAobnVtYXJlbmFzIDw9IG1heGFyZW5hcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBvdmVyZmxvdyAqLwogI2lmIFNJWkVPRl9TSVpFX1QgPD0gU0laRU9GX0lOVAotICAgICAgICBpZiAobnVtYXJlbmFzID4gUFlfU0laRV9NQVggLyBzaXplb2YoKmFyZW5hcykpCisgICAgICAgIGlmIChudW1hcmVuYXMgPiBTSVpFX01BWCAvIHNpemVvZigqYXJlbmFzKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAvKiBvdmVyZmxvdyAqLwogI2VuZGlmCiAgICAgICAgIG5ieXRlcyA9IG51bWFyZW5hcyAqIHNpemVvZigqYXJlbmFzKTsKQEAgLTEwMTAsNyArMTA5MSw3IEBACiAgICAgICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYXJlbmFvYmo7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1cHRyKWFkZHJlc3M7CisgICAgYXJlbmFvYmotPmFkZHJlc3MgPSAodWludHB0cl90KWFkZHJlc3M7CiAKICAgICArK25hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKICAgICArK250aW1lc19hcmVuYV9hbGxvY2F0ZWQ7CkBAIC0xMDMzLDEzICsxMTE0LDEzIEBACiB9CiAKIC8qCi1QeV9BRERSRVNTX0lOX1JBTkdFKFAsIFBPT0wpCithZGRyZXNzX2luX3JhbmdlKFAsIFBPT0wpCiAKIFJldHVybiB0cnVlIGlmIGFuZCBvbmx5IGlmIFAgaXMgYW4gYWRkcmVzcyB0aGF0IHdhcyBhbGxvY2F0ZWQgYnkgcHltYWxsb2MuCiBQT09MIG11c3QgYmUgdGhlIHBvb2wgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggUCwgaS5lLiwgUE9PTCA9IFBPT0xfQUREUihQKQogKHRoZSBjYWxsZXIgaXMgYXNrZWQgdG8gY29tcHV0ZSB0aGlzIGJlY2F1c2UgdGhlIG1hY3JvIGV4cGFuZHMgUE9PTCBtb3JlIHRoYW4KIG9uY2UsIGFuZCBmb3IgZWZmaWNpZW5jeSBpdCdzIGJlc3QgZm9yIHRoZSBjYWxsZXIgdG8gYXNzaWduIFBPT0xfQUREUihQKSB0byBhCi12YXJpYWJsZSBhbmQgcGFzcyB0aGUgbGF0dGVyIHRvIHRoZSBtYWNybzsgYmVjYXVzZSBQeV9BRERSRVNTX0lOX1JBTkdFIGlzCit2YXJpYWJsZSBhbmQgcGFzcyB0aGUgbGF0dGVyIHRvIHRoZSBtYWNybzsgYmVjYXVzZSBhZGRyZXNzX2luX3JhbmdlIGlzCiBjYWxsZWQgb24gZXZlcnkgYWxsb2MvcmVhbGxvYy9mcmVlLCBtaWNyby1lZmZpY2llbmN5IGlzIGltcG9ydGFudCBoZXJlKS4KIAogVHJpY2t5OiAgTGV0IEIgYmUgdGhlIGFyZW5hIGJhc2UgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2wsIEIgPQpAQCAtMTA2NCw3ICsxMTQ1LDcgQEAKIHN0b3JlcywgZXRjKSwgUE9PTCBpcyB0aGUgY29ycmVjdCBhZGRyZXNzIG9mIFAncyBwb29sLCBBTy5hZGRyZXNzIGlzIHRoZQogY29ycmVjdCBiYXNlIGFkZHJlc3Mgb2YgdGhlIHBvb2wncyBhcmVuYSwgYW5kIFAgbXVzdCBiZSB3aXRoaW4gQVJFTkFfU0laRSBvZgogQU8uYWRkcmVzcy4gIEluIGFkZGl0aW9uLCBBTy5hZGRyZXNzIGlzIG5vdCAwIChubyBhcmVuYSBjYW4gc3RhcnQgYXQgYWRkcmVzcyAwCi0oTlVMTCkpLiAgVGhlcmVmb3JlIFB5X0FERFJFU1NfSU5fUkFOR0UgY29ycmVjdGx5IHJlcG9ydHMgdGhhdCBvYm1hbGxvYworKE5VTEwpKS4gIFRoZXJlZm9yZSBhZGRyZXNzX2luX3JhbmdlIGNvcnJlY3RseSByZXBvcnRzIHRoYXQgb2JtYWxsb2MKIGNvbnRyb2xzIFAuCiAKIE5vdyBzdXBwb3NlIG9ibWFsbG9jIGRvZXMgbm90IGNvbnRyb2wgUCAoZS5nLiwgUCB3YXMgb2J0YWluZWQgdmlhIGEgZGlyZWN0CkBAIC0xMTA1LDUxICsxMTg2LDIxIEBACiBvYm1hbGxvYyBpbiBhIHNtYWxsIGNvbnN0YW50IHRpbWUsIGluZGVwZW5kZW50IG9mIHRoZSBudW1iZXIgb2YgYXJlbmFzCiBvYm1hbGxvYyBjb250cm9scy4gIFNpbmNlIHRoaXMgdGVzdCBpcyBuZWVkZWQgYXQgZXZlcnkgZW50cnkgcG9pbnQsIGl0J3MKIGV4dHJlbWVseSBkZXNpcmFibGUgdGhhdCBpdCBiZSB0aGlzIGZhc3QuCi0KLVNpbmNlIFB5X0FERFJFU1NfSU5fUkFOR0UgbWF5IGJlIHJlYWRpbmcgZnJvbSBtZW1vcnkgd2hpY2ggd2FzIG5vdCBhbGxvY2F0ZWQKLWJ5IFB5dGhvbiwgaXQgaXMgaW1wb3J0YW50IHRoYXQgKFBPT0wpLT5hcmVuYWluZGV4IGlzIHJlYWQgb25seSBvbmNlLCBhcwotYW5vdGhlciB0aHJlYWQgbWF5IGJlIGNvbmN1cnJlbnRseSBtb2RpZnlpbmcgdGhlIHZhbHVlIHdpdGhvdXQgaG9sZGluZyB0aGUKLUdJTC4gIFRvIGFjY29tcGxpc2ggdGhpcywgdGhlIGFyZW5haW5kZXhfdGVtcCB2YXJpYWJsZSBpcyB1c2VkIHRvIHN0b3JlCi0oUE9PTCktPmFyZW5haW5kZXggZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgUHlfQUREUkVTU19JTl9SQU5HRSBtYWNybydzCi1leGVjdXRpb24uICBUaGUgY2FsbGVyIG9mIHRoZSBtYWNybyBpcyByZXNwb25zaWJsZSBmb3IgZGVjbGFyaW5nIHRoaXMKLXZhcmlhYmxlLgogKi8KLSNkZWZpbmUgUHlfQUREUkVTU19JTl9SQU5HRShQLCBQT09MKSAgICAgICAgICAgICAgICAgICAgXAotICAgICgoYXJlbmFpbmRleF90ZW1wID0gKFBPT0wpLT5hcmVuYWluZGV4KSA8IG1heGFyZW5hcyAmJiAgICAgICAgICAgICAgXAotICAgICAodXB0cikoUCkgLSBhcmVuYXNbYXJlbmFpbmRleF90ZW1wXS5hZGRyZXNzIDwgKHVwdHIpQVJFTkFfU0laRSAmJiBcCi0gICAgIGFyZW5hc1thcmVuYWluZGV4X3RlbXBdLmFkZHJlc3MgIT0gMCkKIAotCi0vKiBUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gcnVubmluZyBtZW1vcnkgZGVidWdnZXJzIHN1Y2ggYXMKLSAqIFB1cmlmeSBvciBWYWxncmluZC4gIFVuY29tbWVudCB0byB1c2UuCi0gKgotI2RlZmluZSBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLSAqLwotCi0jaWZkZWYgUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSCi0KLS8qIFB5X0FERFJFU1NfSU5fUkFOR0UgbWF5IGFjY2VzcyB1bmluaXRpYWxpemVkIG1lbW9yeSBieSBkZXNpZ24KLSAqIFRoaXMgbGVhZHMgdG8gdGhvdXNhbmRzIG9mIHNwdXJpb3VzIHdhcm5pbmdzIHdoZW4gdXNpbmcKLSAqIFB1cmlmeSBvciBWYWxncmluZC4gIEJ5IG1ha2luZyBhIGZ1bmN0aW9uLCB3ZSBjYW4gZWFzaWx5Ci0gKiBzdXBwcmVzcyB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgaW4gdGhpcyBvbmUgZnVuY3Rpb24uCi0gKiBTbyB3ZSB3b24ndCBpZ25vcmUgcmVhbCBlcnJvcnMgZWxzZXdoZXJlLgotICoKLSAqIERpc2FibGUgdGhlIG1hY3JvIGFuZCB1c2UgYSBmdW5jdGlvbi4KLSAqLwotCi0jdW5kZWYgUHlfQUREUkVTU19JTl9SQU5HRQotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMSkgfHwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAoX19HTlVDX18gPj0gNCkpCi0jZGVmaW5lIFB5X05PX0lOTElORSBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKQotI2Vsc2UKLSNkZWZpbmUgUHlfTk9fSU5MSU5FCi0jZW5kaWYKLQotLyogRG9uJ3QgbWFrZSBzdGF0aWMsIHRvIHRyeSB0byBlbnN1cmUgdGhpcyBpc24ndCBpbmxpbmVkLiAqLwotaW50IFB5X0FERFJFU1NfSU5fUkFOR0Uodm9pZCAqUCwgcG9vbHAgcG9vbCkgUHlfTk9fSU5MSU5FOwotI3VuZGVmIFB5X05PX0lOTElORQotI2VuZGlmCitzdGF0aWMgYm9vbCBBVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKK2FkZHJlc3NfaW5fcmFuZ2Uodm9pZCAqcCwgcG9vbHAgcG9vbCkKK3sKKyAgICAvLyBTaW5jZSBhZGRyZXNzX2luX3JhbmdlIG1heSBiZSByZWFkaW5nIGZyb20gbWVtb3J5IHdoaWNoIHdhcyBub3QgYWxsb2NhdGVkCisgICAgLy8gYnkgUHl0aG9uLCBpdCBpcyBpbXBvcnRhbnQgdGhhdCBwb29sLT5hcmVuYWluZGV4IGlzIHJlYWQgb25seSBvbmNlLCBhcworICAgIC8vIGFub3RoZXIgdGhyZWFkIG1heSBiZSBjb25jdXJyZW50bHkgbW9kaWZ5aW5nIHRoZSB2YWx1ZSB3aXRob3V0IGhvbGRpbmcKKyAgICAvLyB0aGUgR0lMLiBUaGUgZm9sbG93aW5nIGRhbmNlIGZvcmNlcyB0aGUgY29tcGlsZXIgdG8gcmVhZCBwb29sLT5hcmVuYWluZGV4CisgICAgLy8gb25seSBvbmNlLgorICAgIHVpbnQgYXJlbmFpbmRleCA9ICooKHZvbGF0aWxlIHVpbnQgKikmcG9vbC0+YXJlbmFpbmRleCk7CisgICAgcmV0dXJuIGFyZW5haW5kZXggPCBtYXhhcmVuYXMgJiYKKyAgICAgICAgKHVpbnRwdHJfdClwIC0gYXJlbmFzW2FyZW5haW5kZXhdLmFkZHJlc3MgPCBBUkVOQV9TSVpFICYmCisgICAgICAgIGFyZW5hc1thcmVuYWluZGV4XS5hZGRyZXNzICE9IDA7Cit9CiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwogCkBAIC0xMzk0LDcgKzE0NDUsNiBAQAogCiAvKiBmcmVlICovCiAKLUFUVFJJQlVURV9OT19BRERSRVNTX1NBRkVUWV9BTkFMWVNJUwogc3RhdGljIHZvaWQKIF9QeU9iamVjdF9GcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCkKIHsKQEAgLTE0MDIsOSArMTQ1Miw2IEBACiAgICAgYmxvY2sgKmxhc3RmcmVlOwogICAgIHBvb2xwIG5leHQsIHByZXY7CiAgICAgdWludCBzaXplOwotI2lmbmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLSAgICB1aW50IGFyZW5haW5kZXhfdGVtcDsKLSNlbmRpZgogCiAgICAgaWYgKHAgPT0gTlVMTCkgICAgICAvKiBmcmVlKE5VTEwpIGhhcyBubyBlZmZlY3QgKi8KICAgICAgICAgcmV0dXJuOwpAQCAtMTQxNyw3ICsxNDY0LDcgQEAKICNlbmRpZgogCiAgICAgcG9vbCA9IFBPT0xfQUREUihwKTsKLSAgICBpZiAoUHlfQUREUkVTU19JTl9SQU5HRShwLCBwb29sKSkgeworICAgIGlmIChhZGRyZXNzX2luX3JhbmdlKHAsIHBvb2wpKSB7CiAgICAgICAgIC8qIFdlIGFsbG9jYXRlZCB0aGlzIGFkZHJlc3MuICovCiAgICAgICAgIExPQ0soKTsKICAgICAgICAgLyogTGluayBwIHRvIHRoZSBzdGFydCBvZiB0aGUgcG9vbCdzIGZyZWVibG9jayBsaXN0LiAgU2luY2UKQEAgLTE2MjMsMTYgKzE2NzAsMTIgQEAKICAqIHJldHVybiBhIG5vbi1OVUxMIHJlc3VsdC4KICAqLwogCi1BVFRSSUJVVEVfTk9fQUREUkVTU19TQUZFVFlfQU5BTFlTSVMKIHN0YXRpYyB2b2lkICoKIF9QeU9iamVjdF9SZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKIHsKICAgICB2b2lkICpicDsKICAgICBwb29scCBwb29sOwogICAgIHNpemVfdCBzaXplOwotI2lmbmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKLSAgICB1aW50IGFyZW5haW5kZXhfdGVtcDsKLSNlbmRpZgogCiAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9BbGxvYygwLCBjdHgsIDEsIG5ieXRlcyk7CkBAIC0xNjQ0LDcgKzE2ODcsNyBAQAogI2VuZGlmCiAKICAgICBwb29sID0gUE9PTF9BRERSKHApOwotICAgIGlmIChQeV9BRERSRVNTX0lOX1JBTkdFKHAsIHBvb2wpKSB7CisgICAgaWYgKGFkZHJlc3NfaW5fcmFuZ2UocCwgcG9vbCkpIHsKICAgICAgICAgLyogV2UncmUgaW4gY2hhcmdlIG9mIHRoaXMgYmxvY2sgKi8KICAgICAgICAgc2l6ZSA9IElOREVYMlNJWkUocG9vbC0+c3ppZHgpOwogICAgICAgICBpZiAobmJ5dGVzIDw9IHNpemUpIHsKQEAgLTE3MDksNyArMTc1Miw3IEBACiAKICNlbmRpZiAvKiBXSVRIX1BZTUFMTE9DICovCiAKLSNpZmRlZiBQWU1BTExPQ19ERUJVRworCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KIC8qIEEgeC1wbGF0Zm9ybSBkZWJ1Z2dpbmcgYWxsb2NhdG9yLiAgVGhpcyBkb2Vzbid0IG1hbmFnZSBtZW1vcnkgZGlyZWN0bHksCiAgKiBpdCB3cmFwcyBhIHJlYWwgYWxsb2NhdG9yLCBhZGRpbmcgZXh0cmEgZGVidWdnaW5nIGluZm8gdG8gdGhlIG1lbW9yeSBibG9ja3MuCkBAIC0xNzQzLDcgKzE3ODYsNyBAQAogc3RhdGljIHNpemVfdAogcmVhZF9zaXplX3QoY29uc3Qgdm9pZCAqcCkKIHsKLSAgICBjb25zdCB1Y2hhciAqcSA9IChjb25zdCB1Y2hhciAqKXA7CisgICAgY29uc3QgdWludDhfdCAqcSA9IChjb25zdCB1aW50OF90ICopcDsKICAgICBzaXplX3QgcmVzdWx0ID0gKnErKzsKICAgICBpbnQgaTsKIApAQCAtMTc1OCw0MCArMTgwMSwxNSBAQAogc3RhdGljIHZvaWQKIHdyaXRlX3NpemVfdCh2b2lkICpwLCBzaXplX3QgbikKIHsKLSAgICB1Y2hhciAqcSA9ICh1Y2hhciAqKXAgKyBTU1QgLSAxOworICAgIHVpbnQ4X3QgKnEgPSAodWludDhfdCAqKXAgKyBTU1QgLSAxOwogICAgIGludCBpOwogCiAgICAgZm9yIChpID0gU1NUOyAtLWkgPj0gMDsgLS1xKSB7Ci0gICAgICAgICpxID0gKHVjaGFyKShuICYgMHhmZik7CisgICAgICAgICpxID0gKHVpbnQ4X3QpKG4gJiAweGZmKTsKICAgICAgICAgbiA+Pj0gODsKICAgICB9CiB9CiAKLSNpZmRlZiBQeV9ERUJVRwotLyogSXMgdGFyZ2V0IGluIHRoZSBsaXN0PyAgVGhlIGxpc3QgaXMgdHJhdmVyc2VkIHZpYSB0aGUgbmV4dHBvb2wgcG9pbnRlcnMuCi0gKiBUaGUgbGlzdCBtYXkgYmUgTlVMTC10ZXJtaW5hdGVkLCBvciBjaXJjdWxhci4gIFJldHVybiAxIGlmIHRhcmdldCBpcyBpbgotICogbGlzdCwgZWxzZSAwLgotICovCi1zdGF0aWMgaW50Ci1wb29sX2lzX2luX2xpc3QoY29uc3QgcG9vbHAgdGFyZ2V0LCBwb29scCBsaXN0KQotewotICAgIHBvb2xwIG9yaWdsaXN0ID0gbGlzdDsKLSAgICBhc3NlcnQodGFyZ2V0ICE9IE5VTEwpOwotICAgIGlmIChsaXN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIGRvIHsKLSAgICAgICAgaWYgKHRhcmdldCA9PSBsaXN0KQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGxpc3QgPSBsaXN0LT5uZXh0cG9vbDsKLSAgICB9IHdoaWxlIChsaXN0ICE9IE5VTEwgJiYgbGlzdCAhPSBvcmlnbGlzdCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLSNlbHNlCi0jZGVmaW5lIHBvb2xfaXNfaW5fbGlzdChYLCBZKSAxCi0KLSNlbmRpZiAgLyogUHlfREVCVUcgKi8KLQogLyogTGV0IFMgPSBzaXplb2Yoc2l6ZV90KS4gIFRoZSBkZWJ1ZyBtYWxsb2MgYXNrcyBmb3IgNCpTIGV4dHJhIGJ5dGVzIGFuZAogICAgZmlsbHMgdGhlbSB3aXRoIHVzZWZ1bCBzdHVmZiwgaGVyZSBjYWxsaW5nIHRoZSB1bmRlcmx5aW5nIG1hbGxvYydzIHJlc3VsdCBwOgogCkBAIC0xODE5LDExICsxODM3LDExIEBACiAqLwogCiBzdGF0aWMgdm9pZCAqCi1fUHlNZW1fRGVidWdBbGxvYyhpbnQgdXNlX2NhbGxvYywgdm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQorX1B5TWVtX0RlYnVnUmF3QWxsb2MoaW50IHVzZV9jYWxsb2MsIHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwotICAgIHVjaGFyICpwOyAgICAgICAgICAgLyogYmFzZSBhZGRyZXNzIG9mIG1hbGxvYydlZCBibG9jayAqLwotICAgIHVjaGFyICp0YWlsOyAgICAgICAgLyogcCArIDIqU1NUICsgbmJ5dGVzID09IHBvaW50ZXIgdG8gdGFpbCBwYWQgYnl0ZXMgKi8KKyAgICB1aW50OF90ICpwOyAgICAgICAgICAgLyogYmFzZSBhZGRyZXNzIG9mIG1hbGxvYydlZCBibG9jayAqLworICAgIHVpbnQ4X3QgKnRhaWw7ICAgICAgICAvKiBwICsgMipTU1QgKyBuYnl0ZXMgPT0gcG9pbnRlciB0byB0YWlsIHBhZCBieXRlcyAqLwogICAgIHNpemVfdCB0b3RhbDsgICAgICAgLyogbmJ5dGVzICsgNCpTU1QgKi8KIAogICAgIGJ1bXBzZXJpYWxubygpOwpAQCAtMTgzMywxNSArMTg1MSwxNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICh1c2VfY2FsbG9jKQotICAgICAgICBwID0gKHVjaGFyICopYXBpLT5hbGxvYy5jYWxsb2MoYXBpLT5hbGxvYy5jdHgsIDEsIHRvdGFsKTsKKyAgICAgICAgcCA9ICh1aW50OF90ICopYXBpLT5hbGxvYy5jYWxsb2MoYXBpLT5hbGxvYy5jdHgsIDEsIHRvdGFsKTsKICAgICBlbHNlCi0gICAgICAgIHAgPSAodWNoYXIgKilhcGktPmFsbG9jLm1hbGxvYyhhcGktPmFsbG9jLmN0eCwgdG90YWwpOworICAgICAgICBwID0gKHVpbnQ4X3QgKilhcGktPmFsbG9jLm1hbGxvYyhhcGktPmFsbG9jLmN0eCwgdG90YWwpOwogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogYXQgcCwgd3JpdGUgc2l6ZSAoU1NUIGJ5dGVzKSwgaWQgKDEgYnl0ZSksIHBhZCAoU1NULTEgYnl0ZXMpICovCiAgICAgd3JpdGVfc2l6ZV90KHAsIG5ieXRlcyk7Ci0gICAgcFtTU1RdID0gKHVjaGFyKWFwaS0+YXBpX2lkOworICAgIHBbU1NUXSA9ICh1aW50OF90KWFwaS0+YXBpX2lkOwogICAgIG1lbXNldChwICsgU1NUICsgMSwgRk9SQklEREVOQllURSwgU1NULTEpOwogCiAgICAgaWYgKG5ieXRlcyA+IDAgJiYgIXVzZV9jYWxsb2MpCkBAIC0xODU2LDE4ICsxODc0LDE4IEBACiB9CiAKIHN0YXRpYyB2b2lkICoKLV9QeU1lbV9EZWJ1Z01hbGxvYyh2b2lkICpjdHgsIHNpemVfdCBuYnl0ZXMpCitfUHlNZW1fRGVidWdSYXdNYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmJ5dGVzKQogewotICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CisgICAgcmV0dXJuIF9QeU1lbV9EZWJ1Z1Jhd0FsbG9jKDAsIGN0eCwgbmJ5dGVzKTsKIH0KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnQ2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQorX1B5TWVtX0RlYnVnUmF3Q2FsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKQogewogICAgIHNpemVfdCBuYnl0ZXM7CiAgICAgYXNzZXJ0KGVsc2l6ZSA9PSAwIHx8IG5lbGVtIDw9IFBZX1NTSVpFX1RfTUFYIC8gZWxzaXplKTsKICAgICBuYnl0ZXMgPSBuZWxlbSAqIGVsc2l6ZTsKLSAgICByZXR1cm4gX1B5TWVtX0RlYnVnQWxsb2MoMSwgY3R4LCBuYnl0ZXMpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdBbGxvYygxLCBjdHgsIG5ieXRlcyk7CiB9CiAKIC8qIFRoZSBkZWJ1ZyBmcmVlIGZpcnN0IGNoZWNrcyB0aGUgMipTU1QgYnl0ZXMgb24gZWFjaCBlbmQgZm9yIHNhbml0eSAoaW4KQEAgLTE4NzYsMTAgKzE4OTQsMTAgQEAKICAgIFRoZW4gY2FsbHMgdGhlIHVuZGVybHlpbmcgZnJlZS4KICovCiBzdGF0aWMgdm9pZAotX1B5TWVtX0RlYnVnRnJlZSh2b2lkICpjdHgsIHZvaWQgKnApCitfUHlNZW1fRGVidWdSYXdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcCkKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwotICAgIHVjaGFyICpxID0gKHVjaGFyICopcCAtIDIqU1NUOyAgLyogYWRkcmVzcyByZXR1cm5lZCBmcm9tIG1hbGxvYyAqLworICAgIHVpbnQ4X3QgKnEgPSAodWludDhfdCAqKXAgLSAyKlNTVDsgIC8qIGFkZHJlc3MgcmV0dXJuZWQgZnJvbSBtYWxsb2MgKi8KICAgICBzaXplX3QgbmJ5dGVzOwogCiAgICAgaWYgKHAgPT0gTlVMTCkKQEAgLTE4OTMsMTcgKzE5MTEsMTcgQEAKIH0KIAogc3RhdGljIHZvaWQgKgotX1B5TWVtX0RlYnVnUmVhbGxvYyh2b2lkICpjdHgsIHZvaWQgKnAsIHNpemVfdCBuYnl0ZXMpCitfUHlNZW1fRGVidWdSYXdSZWFsbG9jKHZvaWQgKmN0eCwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcykKIHsKICAgICBkZWJ1Z19hbGxvY19hcGlfdCAqYXBpID0gKGRlYnVnX2FsbG9jX2FwaV90ICopY3R4OwotICAgIHVjaGFyICpxID0gKHVjaGFyICopcCwgKm9sZHE7Ci0gICAgdWNoYXIgKnRhaWw7CisgICAgdWludDhfdCAqcSA9ICh1aW50OF90ICopcCwgKm9sZHE7CisgICAgdWludDhfdCAqdGFpbDsKICAgICBzaXplX3QgdG90YWw7ICAgICAgIC8qIG5ieXRlcyArIDQqU1NUICovCiAgICAgc2l6ZV90IG9yaWdpbmFsX25ieXRlczsKICAgICBpbnQgaTsKIAogICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHJldHVybiBfUHlNZW1fRGVidWdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CisgICAgICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdBbGxvYygwLCBjdHgsIG5ieXRlcyk7CiAKICAgICBfUHlNZW1fRGVidWdDaGVja0FkZHJlc3MoYXBpLT5hcGlfaWQsIHApOwogICAgIGJ1bXBzZXJpYWxubygpOwpAQCAtMTkxOCw3ICsxOTM2LDcgQEAKICAgICAgKiBidXQgd2UgbGl2ZSB3aXRoIHRoYXQuCiAgICAgICovCiAgICAgb2xkcSA9IHE7Ci0gICAgcSA9ICh1Y2hhciAqKWFwaS0+YWxsb2MucmVhbGxvYyhhcGktPmFsbG9jLmN0eCwgcSAtIDIqU1NULCB0b3RhbCk7CisgICAgcSA9ICh1aW50OF90ICopYXBpLT5hbGxvYy5yZWFsbG9jKGFwaS0+YWxsb2MuY3R4LCBxIC0gMipTU1QsIHRvdGFsKTsKICAgICBpZiAocSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTkyOCw3ICsxOTQ2LDcgQEAKICAgICB9CiAKICAgICB3cml0ZV9zaXplX3QocSwgbmJ5dGVzKTsKLSAgICBhc3NlcnQocVtTU1RdID09ICh1Y2hhcilhcGktPmFwaV9pZCk7CisgICAgYXNzZXJ0KHFbU1NUXSA9PSAodWludDhfdClhcGktPmFwaV9pZCk7CiAgICAgZm9yIChpID0gMTsgaSA8IFNTVDsgKytpKQogICAgICAgICBhc3NlcnQocVtTU1QgKyBpXSA9PSBGT1JCSURERU5CWVRFKTsKICAgICBxICs9IDIqU1NUOwpAQCAtMTk0Niw2ICsxOTY0LDQ0IEBACiAgICAgcmV0dXJuIHE7CiB9CiAKK3N0YXRpYyB2b2lkCitfUHlNZW1fRGVidWdDaGVja0dJTCh2b2lkKQoreworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKCFQeUdJTFN0YXRlX0NoZWNrKCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5dGhvbiBtZW1vcnkgYWxsb2NhdG9yIGNhbGxlZCAiCisgICAgICAgICAgICAgICAgICAgICAgIndpdGhvdXQgaG9sZGluZyB0aGUgR0lMIik7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgKgorX1B5TWVtX0RlYnVnTWFsbG9jKHZvaWQgKmN0eCwgc2l6ZV90IG5ieXRlcykKK3sKKyAgICBfUHlNZW1fRGVidWdDaGVja0dJTCgpOworICAgIHJldHVybiBfUHlNZW1fRGVidWdSYXdNYWxsb2MoY3R4LCBuYnl0ZXMpOworfQorCitzdGF0aWMgdm9pZCAqCitfUHlNZW1fRGVidWdDYWxsb2Modm9pZCAqY3R4LCBzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3Q2FsbG9jKGN0eCwgbmVsZW0sIGVsc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitfUHlNZW1fRGVidWdGcmVlKHZvaWQgKmN0eCwgdm9pZCAqcHRyKQoreworICAgIF9QeU1lbV9EZWJ1Z0NoZWNrR0lMKCk7CisgICAgX1B5TWVtX0RlYnVnUmF3RnJlZShjdHgsIHB0cik7Cit9CisKK3N0YXRpYyB2b2lkICoKK19QeU1lbV9EZWJ1Z1JlYWxsb2Modm9pZCAqY3R4LCB2b2lkICpwdHIsIHNpemVfdCBuYnl0ZXMpCit7CisgICAgX1B5TWVtX0RlYnVnQ2hlY2tHSUwoKTsKKyAgICByZXR1cm4gX1B5TWVtX0RlYnVnUmF3UmVhbGxvYyhjdHgsIHB0ciwgbmJ5dGVzKTsKK30KKwogLyogQ2hlY2sgdGhlIGZvcmJpZGRlbiBieXRlcyBvbiBib3RoIGVuZHMgb2YgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHAuCiAgKiBJZiBhbnl0aGluZyBpcyB3cm9uZywgcHJpbnQgaW5mbyB0byBzdGRlcnIgdmlhIF9QeU9iamVjdF9EZWJ1Z0R1bXBBZGRyZXNzLAogICogYW5kIGNhbGwgUHlfRmF0YWxFcnJvciB0byBraWxsIHRoZSBwcm9ncmFtLgpAQCAtMTk1NCwxMSArMjAxMCwxMSBAQAogc3RhdGljIHZvaWQKIF9QeU1lbV9EZWJ1Z0NoZWNrQWRkcmVzcyhjaGFyIGFwaSwgY29uc3Qgdm9pZCAqcCkKIHsKLSAgICBjb25zdCB1Y2hhciAqcSA9IChjb25zdCB1Y2hhciAqKXA7CisgICAgY29uc3QgdWludDhfdCAqcSA9IChjb25zdCB1aW50OF90ICopcDsKICAgICBjaGFyIG1zZ2J1Zls2NF07CiAgICAgY2hhciAqbXNnOwogICAgIHNpemVfdCBuYnl0ZXM7Ci0gICAgY29uc3QgdWNoYXIgKnRhaWw7CisgICAgY29uc3QgdWludDhfdCAqdGFpbDsKICAgICBpbnQgaTsKICAgICBjaGFyIGlkOwogCkBAIC0yMDA3LDggKzIwNjMsOCBAQAogc3RhdGljIHZvaWQKIF9QeU9iamVjdF9EZWJ1Z0R1bXBBZGRyZXNzKGNvbnN0IHZvaWQgKnApCiB7Ci0gICAgY29uc3QgdWNoYXIgKnEgPSAoY29uc3QgdWNoYXIgKilwOwotICAgIGNvbnN0IHVjaGFyICp0YWlsOworICAgIGNvbnN0IHVpbnQ4X3QgKnEgPSAoY29uc3QgdWludDhfdCAqKXA7CisgICAgY29uc3QgdWludDhfdCAqdGFpbDsKICAgICBzaXplX3QgbmJ5dGVzLCBzZXJpYWw7CiAgICAgaW50IGk7CiAgICAgaW50IG9rOwpAQCAtMjA0MSw3ICsyMDk3LDcgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJub3QgYWxsIEZPUkJJRERFTkJZVEUgKDB4JTAyeCk6XG4iLAogICAgICAgICAgICAgRk9SQklEREVOQllURSk7CiAgICAgICAgIGZvciAoaSA9IFNTVC0xOyBpID49IDE7IC0taSkgewotICAgICAgICAgICAgY29uc3QgdWNoYXIgYnl0ZSA9ICoocS1pKTsKKyAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYnl0ZSA9ICoocS1pKTsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgICBhdCBwLSVkOiAweCUwMngiLCBpLCBieXRlKTsKICAgICAgICAgICAgIGlmIChieXRlICE9IEZPUkJJRERFTkJZVEUpCiAgICAgICAgICAgICAgICAgZnB1dHMoIiAqKiogT1VDSCIsIHN0ZGVycik7CkBAIC0yMDY5LDcgKzIxMjUsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5vdCBhbGwgRk9SQklEREVOQllURSAoMHglMDJ4KTpcbiIsCiAgICAgICAgICAgICAgICAgRk9SQklEREVOQllURSk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBTU1Q7ICsraSkgewotICAgICAgICAgICAgY29uc3QgdWNoYXIgYnl0ZSA9IHRhaWxbaV07CisgICAgICAgICAgICBjb25zdCB1aW50OF90IGJ5dGUgPSB0YWlsW2ldOwogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgIGF0IHRhaWwrJWQ6IDB4JTAyeCIsCiAgICAgICAgICAgICAgICAgICAgIGksIGJ5dGUpOwogICAgICAgICAgICAgaWYgKGJ5dGUgIT0gRk9SQklEREVOQllURSkKQEAgLTIxMDQsOSArMjE2MCwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CiAgICAgfQorICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisKKyAgICBmZmx1c2goc3RkZXJyKTsKKyAgICBfUHlNZW1fRHVtcFRyYWNlYmFjayhmaWxlbm8oc3RkZXJyKSwgcCk7CiB9CiAKLSNlbmRpZiAgLyogUFlNQUxMT0NfREVCVUcgKi8KIAogc3RhdGljIHNpemVfdAogcHJpbnRvbmUoRklMRSAqb3V0LCBjb25zdCBjaGFyKiBtc2csIHNpemVfdCB2YWx1ZSkKQEAgLTIxNTgsOCArMjIxNywzMCBAQAogICAgICh2b2lkKXByaW50b25lKG91dCwgYnVmMiwgbnVtX2Jsb2NrcyAqIHNpemVvZl9ibG9jayk7CiB9CiAKKwogI2lmZGVmIFdJVEhfUFlNQUxMT0MKIAorI2lmZGVmIFB5X0RFQlVHCisvKiBJcyB0YXJnZXQgaW4gdGhlIGxpc3Q/ICBUaGUgbGlzdCBpcyB0cmF2ZXJzZWQgdmlhIHRoZSBuZXh0cG9vbCBwb2ludGVycy4KKyAqIFRoZSBsaXN0IG1heSBiZSBOVUxMLXRlcm1pbmF0ZWQsIG9yIGNpcmN1bGFyLiAgUmV0dXJuIDEgaWYgdGFyZ2V0IGlzIGluCisgKiBsaXN0LCBlbHNlIDAuCisgKi8KK3N0YXRpYyBpbnQKK3Bvb2xfaXNfaW5fbGlzdChjb25zdCBwb29scCB0YXJnZXQsIHBvb2xwIGxpc3QpCit7CisgICAgcG9vbHAgb3JpZ2xpc3QgPSBsaXN0OworICAgIGFzc2VydCh0YXJnZXQgIT0gTlVMTCk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZG8geworICAgICAgICBpZiAodGFyZ2V0ID09IGxpc3QpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgbGlzdCA9IGxpc3QtPm5leHRwb29sOworICAgIH0gd2hpbGUgKGxpc3QgIT0gTlVMTCAmJiBsaXN0ICE9IG9yaWdsaXN0KTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiAvKiBQcmludCBzdW1tYXJ5IGluZm8gdG8gIm91dCIgYWJvdXQgdGhlIHN0YXRlIG9mIHB5bWFsbG9jJ3Mgc3RydWN0dXJlcy4KICAqIEluIFB5X0RFQlVHIG1vZGUsIGFsc28gcGVyZm9ybSBzb21lIGV4cGVuc2l2ZSBpbnRlcm5hbCBjb25zaXN0ZW5jeQogICogY2hlY2tzLgpAQCAtMjIwNiwzNCArMjI4NywzNSBAQAogICAgICAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBtYXhhcmVuYXM7ICsraSkgewogICAgICAgICB1aW50IGo7Ci0gICAgICAgIHVwdHIgYmFzZSA9IGFyZW5hc1tpXS5hZGRyZXNzOworICAgICAgICB1aW50cHRyX3QgYmFzZSA9IGFyZW5hc1tpXS5hZGRyZXNzOwogCiAgICAgICAgIC8qIFNraXAgYXJlbmFzIHdoaWNoIGFyZSBub3QgYWxsb2NhdGVkLiAqLwotICAgICAgICBpZiAoYXJlbmFzW2ldLmFkZHJlc3MgPT0gKHVwdHIpTlVMTCkKKyAgICAgICAgaWYgKGFyZW5hc1tpXS5hZGRyZXNzID09ICh1aW50cHRyX3QpTlVMTCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBuYXJlbmFzICs9IDE7CiAKICAgICAgICAgbnVtZnJlZXBvb2xzICs9IGFyZW5hc1tpXS5uZnJlZXBvb2xzOwogCiAgICAgICAgIC8qIHJvdW5kIHVwIHRvIHBvb2wgYWxpZ25tZW50ICovCi0gICAgICAgIGlmIChiYXNlICYgKHVwdHIpUE9PTF9TSVpFX01BU0spIHsKKyAgICAgICAgaWYgKGJhc2UgJiAodWludHB0cl90KVBPT0xfU0laRV9NQVNLKSB7CiAgICAgICAgICAgICBhcmVuYV9hbGlnbm1lbnQgKz0gUE9PTF9TSVpFOwotICAgICAgICAgICAgYmFzZSAmPSB+KHVwdHIpUE9PTF9TSVpFX01BU0s7CisgICAgICAgICAgICBiYXNlICY9IH4odWludHB0cl90KVBPT0xfU0laRV9NQVNLOwogICAgICAgICAgICAgYmFzZSArPSBQT09MX1NJWkU7CiAgICAgICAgIH0KIAogICAgICAgICAvKiB2aXNpdCBldmVyeSBwb29sIGluIHRoZSBhcmVuYSAqLwotICAgICAgICBhc3NlcnQoYmFzZSA8PSAodXB0cikgYXJlbmFzW2ldLnBvb2xfYWRkcmVzcyk7Ci0gICAgICAgIGZvciAoaiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGJhc2UgPCAodXB0cikgYXJlbmFzW2ldLnBvb2xfYWRkcmVzczsKLSAgICAgICAgICAgICAgICAgICAgKytqLCBiYXNlICs9IFBPT0xfU0laRSkgeworICAgICAgICBhc3NlcnQoYmFzZSA8PSAodWludHB0cl90KSBhcmVuYXNbaV0ucG9vbF9hZGRyZXNzKTsKKyAgICAgICAgZm9yIChqID0gMDsgYmFzZSA8ICh1aW50cHRyX3QpIGFyZW5hc1tpXS5wb29sX2FkZHJlc3M7CisgICAgICAgICAgICAgKytqLCBiYXNlICs9IFBPT0xfU0laRSkgewogICAgICAgICAgICAgcG9vbHAgcCA9IChwb29scCliYXNlOwogICAgICAgICAgICAgY29uc3QgdWludCBzeiA9IHAtPnN6aWR4OwogICAgICAgICAgICAgdWludCBmcmVlYmxvY2tzOwogCiAgICAgICAgICAgICBpZiAocC0+cmVmLmNvdW50ID09IDApIHsKICAgICAgICAgICAgICAgICAvKiBjdXJyZW50bHkgdW51c2VkICovCisjaWZkZWYgUHlfREVCVUcKICAgICAgICAgICAgICAgICBhc3NlcnQocG9vbF9pc19pbl9saXN0KHAsIGFyZW5hc1tpXS5mcmVlcG9vbHMpKTsKKyNlbmRpZgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKytudW1wb29sc1tzel07CkBAIC0yMjczLDkgKzIzNTUsOCBAQAogICAgICAgICBxdWFudGl6YXRpb24gKz0gcCAqICgoUE9PTF9TSVpFIC0gUE9PTF9PVkVSSEVBRCkgJSBzaXplKTsKICAgICB9CiAgICAgZnB1dGMoJ1xuJywgb3V0KTsKLSNpZmRlZiBQWU1BTExPQ19ERUJVRwotICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgdGltZXMgb2JqZWN0IG1hbGxvYyBjYWxsZWQiLCBzZXJpYWxubyk7Ci0jZW5kaWYKKyAgICBpZiAoX1B5TWVtX0RlYnVnRW5hYmxlZCgpKQorICAgICAgICAodm9pZClwcmludG9uZShvdXQsICIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOwogICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGFsbG9jYXRlZCB0b3RhbCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQpOwogICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIHJlY2xhaW1lZCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQgLSBuYXJlbmFzKTsKICAgICAodm9pZClwcmludG9uZShvdXQsICIjIGFyZW5hcyBoaWdod2F0ZXIgbWFyayIsIG5hcmVuYXNfaGlnaHdhdGVyKTsKQEAgLTIzMDIsMTggKzIzODMsMyBAQAogfQogCiAjZW5kaWYgLyogI2lmZGVmIFdJVEhfUFlNQUxMT0MgKi8KLQotI2lmZGVmIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUgotLyogTWFrZSB0aGlzIGZ1bmN0aW9uIGxhc3Qgc28gZ2NjIHdvbid0IGlubGluZSBpdCBzaW5jZSB0aGUgZGVmaW5pdGlvbiBpcwotICogYWZ0ZXIgdGhlIHJlZmVyZW5jZS4KLSAqLwotaW50Ci1QeV9BRERSRVNTX0lOX1JBTkdFKHZvaWQgKlAsIHBvb2xwIHBvb2wpCi17Ci0gICAgdWludCBhcmVuYWluZGV4X3RlbXAgPSBwb29sLT5hcmVuYWluZGV4OwotCi0gICAgcmV0dXJuIGFyZW5haW5kZXhfdGVtcCA8IG1heGFyZW5hcyAmJgotICAgICAgICAgICAodXB0cilQIC0gYXJlbmFzW2FyZW5haW5kZXhfdGVtcF0uYWRkcmVzcyA8ICh1cHRyKUFSRU5BX1NJWkUgJiYKLSAgICAgICAgICAgYXJlbmFzW2FyZW5haW5kZXhfdGVtcF0uYWRkcmVzcyAhPSAwOwotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL29kaWN0b2JqZWN0LmMgYi9PYmplY3RzL29kaWN0b2JqZWN0LmMKaW5kZXggYTY5NjNkNy4uMjJiMWYxZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vZGljdG9iamVjdC5jCisrKyBiL09iamVjdHMvb2RpY3RvYmplY3QuYwpAQCAtMzksNyArMzksNyBAQAogICAgX19nZXRpdGVtX18oKSwgZ2V0KCksIGV0Yy4gYWNjb3JkaW5nbHkuCiAKIFRoZSBhcHByb2FjaCB3aXRoIHRoZSBsZWFzdCBwZXJmb3JtYW5jZSBpbXBhY3QgKHRpbWUgYW5kIHNwYWNlKSBpcyAjMiwKLW1pcnJvcmluZyB0aGUga2V5IG9yZGVyIG9mIGRpY3QncyBka19lbnRpZXMgd2l0aCBhbiBhcnJheSBvZiBub2RlIHBvaW50ZXJzLgorbWlycm9yaW5nIHRoZSBrZXkgb3JkZXIgb2YgZGljdCdzIGRrX2VudHJpZXMgd2l0aCBhbiBhcnJheSBvZiBub2RlIHBvaW50ZXJzLgogV2hpbGUgbG9va2RpY3QoKSBhbmQgZnJpZW5kcyAoZGtfbG9va3VwKSBkb24ndCBnaXZlIHVzIHRoZSBpbmRleCBpbnRvIHRoZQogYXJyYXksIHdlIG1ha2UgdXNlIG9mIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBnZXQgdGhhdCBpbmRleC4gIEFuIGFsdGVybmF0aXZlCiB3b3VsZCBiZSB0byByZWZhY3RvciBsb29rZGljdCgpIHRvIHByb3ZpZGUgdGhlIGluZGV4LCBleHBsaWNpdGx5IGV4cG9zaW5nCkBAIC01MzYsMTQgKzUzNiwxNyBAQAogX29kaWN0X2dldF9pbmRleF9yYXcoUHlPRGljdE9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkciA9IE5VTEw7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSAoKFB5RGljdE9iamVjdCAqKW9kKS0+bWFfa2V5czsKKyAgICBQeV9zc2l6ZV90IGl4OwogCi0gICAgZXAgPSAoa2V5cy0+ZGtfbG9va3VwKSgoUHlEaWN0T2JqZWN0ICopb2QsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKGtleXMtPmRrX2xvb2t1cCkoKFB5RGljdE9iamVjdCAqKW9kLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICByZXR1cm4ga2V5cy0+ZGtfbmVudHJpZXM7ICAvKiBpbmRleCBvZiBuZXcgZW50cnkgKi8KKyAgICB9CisgICAgaWYgKGl4IDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIC8qIFdlIHVzZSBwb2ludGVyIGFyaXRobWV0aWMgdG8gZ2V0IHRoZSBlbnRyeSdzIGluZGV4IGludG8gdGhlIHRhYmxlLiAqLwotICAgIHJldHVybiBlcCAtIGtleXMtPmRrX2VudHJpZXM7CisgICAgcmV0dXJuIGl4OwogfQogCiAvKiBSZXBsYWNlIG9kLT5vZF9mYXN0X25vZGVzIHdpdGggYSBuZXcgdGFibGUgbWF0Y2hpbmcgdGhlIHNpemUgb2YgZGljdCdzLiAqLwpAQCAtNTY1LDcgKzU2OCw3IEBACiAgICAgLyogQ29weSB0aGUgY3VycmVudCBub2RlcyBpbnRvIHRoZSB0YWJsZS4gKi8KICAgICBfb2RpY3RfRk9SRUFDSChvZCwgbm9kZSkgewogICAgICAgICBpID0gX29kaWN0X2dldF9pbmRleF9yYXcob2QsIF9vZGljdG5vZGVfS0VZKG5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vZGljdG5vZGVfSEFTSChub2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2RpY3Rub2RlX0hBU0gobm9kZSkpOwogICAgICAgICBpZiAoaSA8IDApIHsKICAgICAgICAgICAgIFB5TWVtX0ZSRUUoZmFzdF9ub2Rlcyk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xNDI0LDE0ICsxNDI3LDEzIEBACiAgKiBPcmRlcmVkRGljdCBtZW1iZXJzCiAgKi8KIAotLyogdHBfbWVtYmVycyAqLworLyogdHBfZ2V0c2V0ICovCiAKLXN0YXRpYyBQeU1lbWJlckRlZiBvZGljdF9tZW1iZXJzW10gPSB7Ci0gICAgeyJfX2RpY3RfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9EaWN0T2JqZWN0LCBvZF9pbnN0X2RpY3QpLCBSRUFET05MWX0sCi0gICAgezB9CitzdGF0aWMgUHlHZXRTZXREZWYgb2RpY3RfZ2V0c2V0W10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCisgICAge05VTEx9CiB9OwogCi0KIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIE9yZGVyZWREaWN0IHR5cGUgc2xvdCBtZXRob2RzCiAgKi8KQEAgLTE0NjMsNyArMTQ2NSw3IEBACiAgICAgKyt0c3RhdGUtPnRyYXNoX2RlbGV0ZV9uZXN0aW5nOwogCiAgICAgUHlfVFJBU0hDQU5fU0FGRV9FTkQoc2VsZikKLX07Cit9CiAKIC8qIHRwX3JlcHIgKi8KIApAQCAtMTU0MCw3ICsxNTQyLDcgQEAKICAgICBQeV9YREVDUkVGKHBpZWNlcyk7CiAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKXNlbGYpOwogICAgIHJldHVybiByZXN1bHQ7Ci19OworfQogCiAvKiB0cF9kb2MgKi8KIApAQCAtMTYxMiw3ICsxNjE0LDcgQEAKICAgICB9IGVsc2UgewogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQotfTsKK30KIAogLyogdHBfaXRlciAqLwogCkBAIC0xNjIwLDcgKzE2MjIsNyBAQAogb2RpY3RfaXRlcihQeU9EaWN0T2JqZWN0ICpvZCkKIHsKICAgICByZXR1cm4gb2RpY3RpdGVyX25ldyhvZCwgX29kaWN0X0lURVJfS0VZUyk7Ci19OworfQogCiAvKiB0cF9pbml0ICovCiAKQEAgLTE2NDYsMjcgKzE2NDgsMTkgQEAKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLX07Cit9CiAKIC8qIHRwX25ldyAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogb2RpY3RfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpkaWN0OwogICAgIFB5T0RpY3RPYmplY3QgKm9kOwogCi0gICAgZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIG9kID0gKFB5T0RpY3RPYmplY3QgKilQeURpY3RfVHlwZS50cF9uZXcodHlwZSwgYXJncywga3dkcyk7Ci0gICAgaWYgKG9kID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOworICAgIGlmIChvZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICBvZC0+b2RfaW5zdF9kaWN0ID0gZGljdDsKICAgICAvKiB0eXBlIGNvbnN0cnVjdG9yIGZpbGxzIHRoZSBtZW1vcnkgd2l0aCB6ZXJvcyAoc2VlCiAgICAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYygpKSwgdGhlcmUgaXMgbm8gbmVlZCB0byBzZXQgdGhlbSB0byB6ZXJvIGFnYWluICovCiAgICAgaWYgKF9vZGljdF9yZXNpemUob2QpIDwgMCkgewpAQCAtMTcwOCw4ICsxNzAyLDggQEAKICAgICAoZ2V0aXRlcmZ1bmMpb2RpY3RfaXRlciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgb2RpY3RfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgb2RpY3RfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBvZGljdF9nZXRzZXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgICZQeURpY3RfVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCkBAIC0xNzI5LDcgKzE3MjMsNyBAQAogUHlPYmplY3QgKgogUHlPRGljdF9OZXcodm9pZCkgewogICAgIHJldHVybiBvZGljdF9uZXcoJlB5T0RpY3RfVHlwZSwgTlVMTCwgTlVMTCk7Ci19OworfQogCiBzdGF0aWMgaW50CiBfUHlPRGljdF9TZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSwKQEAgLTE3NDcsNyArMTc0MSw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlczsKLX07Cit9CiAKIGludAogUHlPRGljdF9TZXRJdGVtKFB5T2JqZWN0ICpvZCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQpAQCAtMTc1Niw3ICsxNzUwLDcgQEAKICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIHJldHVybiBfUHlPRGljdF9TZXRJdGVtX0tub3duSGFzaChvZCwga2V5LCB2YWx1ZSwgaGFzaCk7Ci19OworfQogCiBpbnQKIFB5T0RpY3RfRGVsSXRlbShQeU9iamVjdCAqb2QsIFB5T2JqZWN0ICprZXkpCkBAIC0xNzY5LDcgKzE3NjMsNyBAQAogICAgIGlmIChyZXMgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgcmV0dXJuIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2gob2QsIGtleSwgaGFzaCk7Ci19OworfQogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzNjIsOCArMjM1Niw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpvdGhlciA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCk7ICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KICAgICAgICAgYXNzZXJ0KG90aGVyICE9IE5VTEwpOwogICAgICAgICBQeV9JTkNSRUYob3RoZXIpOwotICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpIHx8Ci0gICAgICAgICAgICBfUHlPYmplY3RfSGFzQXR0cklkKG90aGVyLCAmUHlJZF9pdGVtcykpIHsgIC8qIG5ldmVyIGZhaWxzICovCisgICAgICAgIGlmIFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlbXM7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3Qob3RoZXIpKQogICAgICAgICAgICAgICAgIGl0ZW1zID0gUHlEaWN0X0l0ZW1zKG90aGVyKTsKQEAgLTI0MDYsNiArMjM5OSwyMCBAQAogICAgICAgICAgICAgaWYgKHJlcyAhPSAwIHx8IFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvdGhlciwgJlB5SWRfaXRlbXMpKSB7ICAvKiBuZXZlciBmYWlscyAqLworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW1zOworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkKKyAgICAgICAgICAgICAgICBpdGVtcyA9IFB5RGljdF9JdGVtcyhvdGhlcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG90aGVyLCAmUHlJZF9pdGVtcywgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYob3RoZXIpOworICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXMgPSBtdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoc2VsZiwgaXRlbXMpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW1zKTsKKyAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXMgPSBtdXRhYmxlbWFwcGluZ19hZGRfcGFpcnMoc2VsZiwgb3RoZXIpOwogICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCA4OTk2OTdhLi44NDQ5ZmM3IDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC02LDcgKzYsNyBAQAogLyogU3VwcG9ydCBvYmplY3RzIHdob3NlIGxlbmd0aCBpcyA+IFBZX1NTSVpFX1RfTUFYLgogCiAgICBUaGlzIGNvdWxkIGJlIHNwZWQgdXAgZm9yIHNtYWxsIFB5TG9uZ3MgaWYgdGhleSBmaXQgaW4gYSBQeV9zc2l6ZV90LgotICAgVGhpcyBvbmx5IG1hdHRlcnMgb24gV2luNjQuICBUaG91Z2ggd2UgY291bGQgdXNlIFBZX0xPTkdfTE9ORyB3aGljaAorICAgVGhpcyBvbmx5IG1hdHRlcnMgb24gV2luNjQuICBUaG91Z2ggd2UgY291bGQgdXNlIGxvbmcgbG9uZyB3aGljaAogICAgd291bGQgcHJlc3VtYWJseSBoZWxwIHBlcmYuCiAqLwogCkBAIC0yOSwxNyArMjksMTAgQEAKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygxKTsKIAogICAgIHN0ZXAgPSBQeU51bWJlcl9JbmRleChzdGVwKTsKLSAgICBpZiAoc3RlcCkgewotICAgICAgICBQeV9zc2l6ZV90IGlzdGVwID0gUHlOdW1iZXJfQXNTc2l6ZV90KHN0ZXAsIE5VTEwpOwotICAgICAgICBpZiAoaXN0ZXAgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgLyogSWdub3JlIE92ZXJmbG93RXJyb3IsIHdlIGtub3cgdGhlIHZhbHVlIGlzbid0IDAuICovCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzdGVwID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyYW5nZSgpIGFyZyAzIG11c3Qgbm90IGJlIHplcm8iKTsKLSAgICAgICAgICAgIFB5X0NMRUFSKHN0ZXApOwotICAgICAgICB9CisgICAgaWYgKHN0ZXAgJiYgX1B5TG9uZ19TaWduKHN0ZXApID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicmFuZ2UoKSBhcmcgMyBtdXN0IG5vdCBiZSB6ZXJvIik7CisgICAgICAgIFB5X0NMRUFSKHN0ZXApOwogICAgIH0KIAogICAgIHJldHVybiBzdGVwOwpAQCAtMTI5LDkgKzEyMiw5IEBACiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgb2JqOwogCiAgICAgLyogRmFpbGVkIHRvIGNyZWF0ZSBvYmplY3QsIHJlbGVhc2UgYXR0cmlidXRlcyAqLwotICAgIFB5X1hERUNSRUYoc3RhcnQpOwotICAgIFB5X1hERUNSRUYoc3RvcCk7Ci0gICAgUHlfWERFQ1JFRihzdGVwKTsKKyAgICBQeV9ERUNSRUYoc3RhcnQpOworICAgIFB5X0RFQ1JFRihzdG9wKTsKKyAgICBQeV9ERUNSRUYoc3RlcCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTE5Niw3ICsxODksNyBAQAogICAgIC8qIGlmIChsbyA+PSBoaSksIHJldHVybiBsZW5ndGggb2YgMC4gKi8KICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGxvLCBoaSwgUHlfR0UpOwogICAgIGlmIChjbXBfcmVzdWx0ICE9IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihzdGVwKTsKKyAgICAgICAgUHlfREVDUkVGKHN0ZXApOwogICAgICAgICBpZiAoY21wX3Jlc3VsdCA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKQEAgLTIyNSw5ICsyMTgsOSBAQAogICAgIHJldHVybiByZXN1bHQ7CiAKICAgRmFpbDoKKyAgICBQeV9ERUNSRUYoc3RlcCk7CiAgICAgUHlfWERFQ1JFRih0bXAyKTsKICAgICBQeV9YREVDUkVGKGRpZmYpOwotICAgIFB5X1hERUNSRUYoc3RlcCk7CiAgICAgUHlfWERFQ1JFRih0bXAxKTsKICAgICBQeV9YREVDUkVGKG9uZSk7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC05MzcsNiArOTMwLDEzIEBACiB7CiAgICAgbG9uZyBzdGFydCwgc3RvcCwgc3RlcDsKIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgInJhbmdlX2l0ZXJhdG9yKCk6IGNyZWF0aW5nIGluc3RhbmNlcyBvZiByYW5nZV9pdGVyYXRvciAiCisgICAgICAgICAgICAgICAgICAgICAiYnkgY2FsbGluZyByYW5nZV9pdGVyYXRvciB0eXBlIGlzIGRlcHJlY2F0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgMSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygicmFuZ2VfaXRlcmF0b3IoKSIsIGt3KSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3NldG9iamVjdC5jIGIvT2JqZWN0cy9zZXRvYmplY3QuYwppbmRleCA0ZWY2OTJkLi41ODQ2MDQ1IDEwMDY0NAotLS0gYS9PYmplY3RzL3NldG9iamVjdC5jCisrKyBiL09iamVjdHMvc2V0b2JqZWN0LmMKQEAgLTI2LDcgKzI2LDYgQEAKIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAvKiBPYmplY3QgdXNlZCBhcyBkdW1teSBrZXkgdG8gZmlsbCBkZWxldGVkIGVudHJpZXMgKi8KIHN0YXRpYyBQeU9iamVjdCBfZHVtbXlfc3RydWN0OwpAQCAtNDgsMTkgKzQ3LDIwIEBACiBzdGF0aWMgc2V0ZW50cnkgKgogc2V0X2xvb2trZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICBzZXRlbnRyeSAqdGFibGUgPSBzby0+dGFibGU7Ci0gICAgc2V0ZW50cnkgKmZyZWVzbG90ID0gTlVMTDsKKyAgICBzZXRlbnRyeSAqdGFibGU7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwotICAgIHNpemVfdCBwZXJ0dXJiID0gaGFzaDsKKyAgICBzaXplX3QgcGVydHVyYjsKICAgICBzaXplX3QgbWFzayA9IHNvLT5tYXNrOwogICAgIHNpemVfdCBpID0gKHNpemVfdCloYXNoICYgbWFzazsgLyogVW5zaWduZWQgZm9yIGRlZmluZWQgb3ZlcmZsb3cgYmVoYXZpb3IgKi8KICAgICBzaXplX3QgajsKICAgICBpbnQgY21wOwogCi0gICAgZW50cnkgPSAmdGFibGVbaV07CisgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBlbnRyeTsKIAorICAgIHBlcnR1cmIgPSBoYXNoOworCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydGtleSA9IGVudHJ5LT5rZXk7CkBAIC03MCw4ICs3MCw5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQogICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKLSAgICAgICAgICAgICAgICAmJiB1bmljb2RlX2VxKHN0YXJ0a2V5LCBrZXkpKQorICAgICAgICAgICAgICAgICYmIF9QeVVuaWNvZGVfRVEoc3RhcnRrZXksIGtleSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgdGFibGUgPSBzby0+dGFibGU7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CkBAIC04MywxNCArODQsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7ICAgICAgICAgICAgICAgICAvKiBoZWxwIGF2b2lkIGEgcmVnaXN0ZXIgc3BpbGwgKi8KICAgICAgICAgfQotICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gLTEgJiYgZnJlZXNsb3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGZyZWVzbG90ID0gZW50cnk7CiAKICAgICAgICAgaWYgKGkgKyBMSU5FQVJfUFJPQkVTIDw9IG1hc2spIHsKICAgICAgICAgICAgIGZvciAoaiA9IDAgOyBqIDwgTElORUFSX1BST0JFUyA7IGorKykgewogICAgICAgICAgICAgICAgIGVudHJ5Kys7Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSAwICYmIGVudHJ5LT5rZXkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydGtleSA9IGVudHJ5LT5rZXk7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CkBAIC05OCw4ICs5Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKICAgICAgICAgICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoc3RhcnRrZXksIGtleSkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBfUHlVbmljb2RlX0VRKHN0YXJ0a2V5LCBrZXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKQEAgLTExMSw3ICsxMTEsMTA0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CiAgICAgICAgICAgICAgICAgICAgIG1hc2sgPSBzby0+bWFzazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IC0xICYmIGZyZWVzbG90ID09IE5VTEwpCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOworICAgICAgICBpID0gKGkgKiA1ICsgMSArIHBlcnR1cmIpICYgbWFzazsKKworICAgICAgICBlbnRyeSA9ICZzby0+dGFibGVbaV07CisgICAgICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgfQorfQorCitzdGF0aWMgaW50IHNldF90YWJsZV9yZXNpemUoUHlTZXRPYmplY3QgKiwgUHlfc3NpemVfdCk7CisKK3N0YXRpYyBpbnQKK3NldF9hZGRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKK3sKKyAgICBzZXRlbnRyeSAqdGFibGU7CisgICAgc2V0ZW50cnkgKmZyZWVzbG90OworICAgIHNldGVudHJ5ICplbnRyeTsKKyAgICBzaXplX3QgcGVydHVyYjsKKyAgICBzaXplX3QgbWFzazsKKyAgICBzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgIC8qIFVuc2lnbmVkIGZvciBkZWZpbmVkIG92ZXJmbG93IGJlaGF2aW9yICovCisgICAgc2l6ZV90IGo7CisgICAgaW50IGNtcDsKKworICAgIC8qIFByZS1pbmNyZW1lbnQgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgYXJiaXRyYXJ5IGNvZGUgaW4gdGhlIHJpY2gKKyAgICAgICBjb21wYXJpc29uIGZyb20gZGVhbGxvY2F0aW5nIHRoZSBrZXkganVzdCBiZWZvcmUgdGhlIGluc2VydGlvbi4gKi8KKyAgICBQeV9JTkNSRUYoa2V5KTsKKworICByZXN0YXJ0OgorCisgICAgbWFzayA9IHNvLT5tYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOworCisgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOworICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCisgICAgICAgIGdvdG8gZm91bmRfdW51c2VkOworCisgICAgZnJlZXNsb3QgPSBOVUxMOworICAgIHBlcnR1cmIgPSBoYXNoOworCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKGVudHJ5LT5oYXNoID09IGhhc2gpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgICAgICAvKiBzdGFydGtleSBjYW5ub3QgYmUgYSBkdW1teSBiZWNhdXNlIHRoZSBkdW1teSBoYXNoIGZpZWxkIGlzIC0xICovCisgICAgICAgICAgICBhc3NlcnQoc3RhcnRrZXkgIT0gZHVtbXkpOworICAgICAgICAgICAgaWYgKHN0YXJ0a2V5ID09IGtleSkKKyAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGFydGtleSkKKyAgICAgICAgICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpCisgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgIHRhYmxlID0gc28tPnRhYmxlOworICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChzdGFydGtleSwga2V5LCBQeV9FUSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOworICAgICAgICAgICAgaWYgKGNtcCA+IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGlrZWx5ICovCisgICAgICAgICAgICAgICAgZ290byBmb3VuZF9hY3RpdmU7CisgICAgICAgICAgICBpZiAoY21wIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGNvbXBhcmlzb25fZXJyb3I7CisgICAgICAgICAgICAvKiBDb250aW51aW5nIHRoZSBzZWFyY2ggZnJvbSB0aGUgY3VycmVudCBlbnRyeSBvbmx5IG1ha2VzCisgICAgICAgICAgICAgICBzZW5zZSBpZiB0aGUgdGFibGUgYW5kIGVudHJ5IGFyZSB1bmNoYW5nZWQ7IG90aGVyd2lzZSwKKyAgICAgICAgICAgICAgIHdlIGhhdmUgdG8gcmVzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmcgKi8KKyAgICAgICAgICAgIGlmICh0YWJsZSAhPSBzby0+dGFibGUgfHwgZW50cnktPmtleSAhPSBzdGFydGtleSkKKyAgICAgICAgICAgICAgICBnb3RvIHJlc3RhcnQ7CisgICAgICAgICAgICBtYXNrID0gc28tPm1hc2s7ICAgICAgICAgICAgICAgICAvKiBoZWxwIGF2b2lkIGEgcmVnaXN0ZXIgc3BpbGwgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQorICAgICAgICAgICAgZnJlZXNsb3QgPSBlbnRyeTsKKworICAgICAgICBpZiAoaSArIExJTkVBUl9QUk9CRVMgPD0gbWFzaykgeworICAgICAgICAgICAgZm9yIChqID0gMCA7IGogPCBMSU5FQVJfUFJPQkVTIDsgaisrKSB7CisgICAgICAgICAgICAgICAgZW50cnkrKzsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnktPmhhc2ggPT0gMCAmJiBlbnRyeS0+a2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfdW51c2VkX29yX2R1bW15OworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+aGFzaCA9PSBoYXNoKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdGFydGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChzdGFydGtleSAhPSBkdW1teSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydGtleSA9PSBrZXkpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHN0YXJ0a2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgX1B5VW5pY29kZV9FUShzdGFydGtleSwga2V5KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZm91bmRfYWN0aXZlOworICAgICAgICAgICAgICAgICAgICB0YWJsZSA9IHNvLT50YWJsZTsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZvdW5kX2FjdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGNvbXBhcmlzb25fZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YWJsZSAhPSBzby0+dGFibGUgfHwgZW50cnktPmtleSAhPSBzdGFydGtleSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IHNvLT5tYXNrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChlbnRyeS0+aGFzaCA9PSAtMSAmJiBmcmVlc2xvdCA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBmcmVlc2xvdCA9IGVudHJ5OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMTksMjkgKzIxNiw1MSBAQAogICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOwogICAgICAgICBpID0gKGkgKiA1ICsgMSArIHBlcnR1cmIpICYgbWFzazsKIAotICAgICAgICBlbnRyeSA9ICZ0YWJsZVtpXTsKKyAgICAgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOwogICAgICAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBmb3VuZF9udWxsOworICAgICAgICAgICAgZ290byBmb3VuZF91bnVzZWRfb3JfZHVtbXk7CiAgICAgfQotICBmb3VuZF9udWxsOgotICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZW50cnkgOiBmcmVlc2xvdDsKKworICBmb3VuZF91bnVzZWRfb3JfZHVtbXk6CisgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpCisgICAgICAgIGdvdG8gZm91bmRfdW51c2VkOworICAgIHNvLT51c2VkKys7CisgICAgZnJlZXNsb3QtPmtleSA9IGtleTsKKyAgICBmcmVlc2xvdC0+aGFzaCA9IGhhc2g7CisgICAgcmV0dXJuIDA7CisKKyAgZm91bmRfdW51c2VkOgorICAgIHNvLT5maWxsKys7CisgICAgc28tPnVzZWQrKzsKKyAgICBlbnRyeS0+a2V5ID0ga2V5OworICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKKyAgICBpZiAoKHNpemVfdClzby0+ZmlsbCozIDwgbWFzayoyKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQpOworCisgIGZvdW5kX2FjdGl2ZToKKyAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICByZXR1cm4gMDsKKworICBjb21wYXJpc29uX2Vycm9yOgorICAgIFB5X0RFQ1JFRihrZXkpOworICAgIHJldHVybiAtMTsKIH0KIAogLyoKIEludGVybmFsIHJvdXRpbmUgdXNlZCBieSBzZXRfdGFibGVfcmVzaXplKCkgdG8gaW5zZXJ0IGFuIGl0ZW0gd2hpY2ggaXMKIGtub3duIHRvIGJlIGFic2VudCBmcm9tIHRoZSBzZXQuICBUaGlzIHJvdXRpbmUgYWxzbyBhc3N1bWVzIHRoYXQKIHRoZSBzZXQgY29udGFpbnMgbm8gZGVsZXRlZCBlbnRyaWVzLiAgQmVzaWRlcyB0aGUgcGVyZm9ybWFuY2UgYmVuZWZpdCwKLXVzaW5nIHNldF9pbnNlcnRfY2xlYW4oKSBpbiBzZXRfdGFibGVfcmVzaXplKCkgaXMgZGFuZ2Vyb3VzIChTRiBidWcgIzE0NTYyMDkpLgotTm90ZSB0aGF0IG5vIHJlZmNvdW50cyBhcmUgY2hhbmdlZCBieSB0aGlzIHJvdXRpbmU7IGlmIG5lZWRlZCwgdGhlIGNhbGxlcgotaXMgcmVzcG9uc2libGUgZm9yIGluY3JlZidpbmcgYGtleWAuCit0aGVyZSBpcyBhbHNvIHNhZmV0eSBiZW5lZml0IHNpbmNlIHVzaW5nIHNldF9hZGRfZW50cnkoKSByaXNrcyBtYWtpbmcKK2EgY2FsbGJhY2sgaW4gdGhlIG1pZGRsZSBvZiBhIHNldF90YWJsZV9yZXNpemUoKSwgc2VlIGlzc3VlIDE0NTYyMDkuCitUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciB1cGRhdGluZyB0aGUga2V5J3MgcmVmZXJlbmNlIGNvdW50IGFuZAordGhlIHNldG9iamVjdCdzIGZpbGwgYW5kIHVzZWQgZmllbGRzLgogKi8KIHN0YXRpYyB2b2lkCi1zZXRfaW5zZXJ0X2NsZWFuKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpCitzZXRfaW5zZXJ0X2NsZWFuKHNldGVudHJ5ICp0YWJsZSwgc2l6ZV90IG1hc2ssIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewotICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgc2l6ZV90IHBlcnR1cmIgPSBoYXNoOwotICAgIHNpemVfdCBtYXNrID0gKHNpemVfdClzby0+bWFzazsKICAgICBzaXplX3QgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgc2l6ZV90IGo7CiAKQEAgLTE2Miw0NSArMjgxLDExIEBACiAgIGZvdW5kX251bGw6CiAgICAgZW50cnktPmtleSA9IGtleTsKICAgICBlbnRyeS0+aGFzaCA9IGhhc2g7Ci0gICAgc28tPmZpbGwrKzsKLSAgICBzby0+dXNlZCsrOwogfQogCiAvKiA9PT09PT09PSBFbmQgbG9naWMgZm9yIHByb2JpbmcgdGhlIGhhc2ggdGFibGUgPT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCi0KLS8qCi1JbnRlcm5hbCByb3V0aW5lIHRvIGluc2VydCBhIG5ldyBrZXkgaW50byB0aGUgdGFibGUuCi1Vc2VkIGJ5IHRoZSBwdWJsaWMgaW5zZXJ0IHJvdXRpbmUuCi1FYXRzIGEgcmVmZXJlbmNlIHRvIGtleS4KLSovCi1zdGF0aWMgaW50Ci1zZXRfaW5zZXJ0X2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQotewotICAgIHNldGVudHJ5ICplbnRyeTsKLQotICAgIGVudHJ5ID0gc2V0X2xvb2trZXkoc28sIGtleSwgaGFzaCk7Ci0gICAgaWYgKGVudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoZW50cnktPmtleSA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIFVOVVNFRCAqLwotICAgICAgICBlbnRyeS0+a2V5ID0ga2V5OwotICAgICAgICBlbnRyeS0+aGFzaCA9IGhhc2g7Ci0gICAgICAgIHNvLT5maWxsKys7Ci0gICAgICAgIHNvLT51c2VkKys7Ci0gICAgfSBlbHNlIGlmIChlbnRyeS0+a2V5ID09IGR1bW15KSB7Ci0gICAgICAgIC8qIERVTU1ZICovCi0gICAgICAgIGVudHJ5LT5rZXkgPSBrZXk7Ci0gICAgICAgIGVudHJ5LT5oYXNoID0gaGFzaDsKLSAgICAgICAgc28tPnVzZWQrKzsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBBQ1RJVkUgKi8KLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiAvKgogUmVzdHJ1Y3R1cmUgdGhlIHRhYmxlIGJ5IGFsbG9jYXRpbmcgYSBuZXcgdGFibGUgYW5kIHJlaW5zZXJ0aW5nIGFsbAoga2V5cyBhZ2Fpbi4gIFdoZW4gZW50cmllcyBoYXZlIGJlZW4gZGVsZXRlZCwgdGhlIG5ldyB0YWJsZSBtYXkKQEAgLTIxMywxMCArMjk4LDEzIEBACiAgICAgc2V0ZW50cnkgKm9sZHRhYmxlLCAqbmV3dGFibGUsICplbnRyeTsKICAgICBQeV9zc2l6ZV90IG9sZGZpbGwgPSBzby0+ZmlsbDsKICAgICBQeV9zc2l6ZV90IG9sZHVzZWQgPSBzby0+dXNlZDsKKyAgICBQeV9zc2l6ZV90IG9sZG1hc2sgPSBzby0+bWFzazsKKyAgICBzaXplX3QgbmV3bWFzazsKICAgICBpbnQgaXNfb2xkdGFibGVfbWFsbG9jZWQ7CiAgICAgc2V0ZW50cnkgc21hbGxfY29weVtQeVNldF9NSU5TSVpFXTsKIAogICAgIGFzc2VydChtaW51c2VkID49IDApOworICAgIG1pbnVzZWQgPSAobWludXNlZCA+IDUwMDAwKSA/IG1pbnVzZWQgKiAyIDogbWludXNlZCAqIDQ7CiAKICAgICAvKiBGaW5kIHRoZSBzbWFsbGVzdCB0YWJsZSBzaXplID4gbWludXNlZC4gKi8KICAgICAvKiBYWFggc3BlZWQtdXAgd2l0aCBpbnRyaW5zaWNzICovCkBAIC0yNjQsMjUgKzM1MiwyNCBAQAogICAgIC8qIE1ha2UgdGhlIHNldCBlbXB0eSwgdXNpbmcgdGhlIG5ldyB0YWJsZS4gKi8KICAgICBhc3NlcnQobmV3dGFibGUgIT0gb2xkdGFibGUpOwogICAgIG1lbXNldChuZXd0YWJsZSwgMCwgc2l6ZW9mKHNldGVudHJ5KSAqIG5ld3NpemUpOwotICAgIHNvLT5maWxsID0gMDsKLSAgICBzby0+dXNlZCA9IDA7CisgICAgc28tPmZpbGwgPSBvbGR1c2VkOworICAgIHNvLT51c2VkID0gb2xkdXNlZDsKICAgICBzby0+bWFzayA9IG5ld3NpemUgLSAxOwogICAgIHNvLT50YWJsZSA9IG5ld3RhYmxlOwogCiAgICAgLyogQ29weSB0aGUgZGF0YSBvdmVyOyB0aGlzIGlzIHJlZmNvdW50LW5ldXRyYWwgZm9yIGFjdGl2ZSBlbnRyaWVzOwogICAgICAgIGR1bW15IGVudHJpZXMgYXJlbid0IGNvcGllZCBvdmVyLCBvZiBjb3Vyc2UgKi8KKyAgICBuZXdtYXNrID0gKHNpemVfdClzby0+bWFzazsKICAgICBpZiAob2xkZmlsbCA9PSBvbGR1c2VkKSB7Ci0gICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgb2xkdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBlbnRyeSA8PSBvbGR0YWJsZSArIG9sZG1hc2s7IGVudHJ5KyspIHsKICAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBvbGR1c2VkLS07Ci0gICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihzbywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICAgICAgICAgIHNldF9pbnNlcnRfY2xlYW4obmV3dGFibGUsIG5ld21hc2ssIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoZW50cnkgPSBvbGR0YWJsZTsgb2xkdXNlZCA+IDA7IGVudHJ5KyspIHsKKyAgICAgICAgZm9yIChlbnRyeSA9IG9sZHRhYmxlOyBlbnRyeSA8PSBvbGR0YWJsZSArIG9sZG1hc2s7IGVudHJ5KyspIHsKICAgICAgICAgICAgIGlmIChlbnRyeS0+a2V5ICE9IE5VTEwgJiYgZW50cnktPmtleSAhPSBkdW1teSkgewotICAgICAgICAgICAgICAgIG9sZHVzZWQtLTsKLSAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICAgICAgc2V0X2luc2VydF9jbGVhbihuZXd0YWJsZSwgbmV3bWFzaywgZW50cnktPmtleSwgZW50cnktPmhhc2gpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjkyLDU3ICszNzksMzAgQEAKICAgICByZXR1cm4gMDsKIH0KIAotLyogQ0FVVElPTjogc2V0X2FkZF9rZXkvZW50cnkoKSBtdXN0IGd1YXJhbnRlZSBpdCB3b24ndCByZXNpemUgdGhlIHRhYmxlICovCi0KIHN0YXRpYyBpbnQKLXNldF9hZGRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqZW50cnkpCitzZXRfY29udGFpbnNfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICBQeV9zc2l6ZV90IG5fdXNlZDsKLSAgICBQeU9iamVjdCAqa2V5ID0gZW50cnktPmtleTsKLSAgICBQeV9oYXNoX3QgaGFzaCA9IGVudHJ5LT5oYXNoOworICAgIHNldGVudHJ5ICplbnRyeTsKIAotICAgIGFzc2VydChzby0+ZmlsbCA8PSBzby0+bWFzayk7ICAvKiBhdCBsZWFzdCBvbmUgZW1wdHkgc2xvdCAqLwotICAgIG5fdXNlZCA9IHNvLT51c2VkOwotICAgIFB5X0lOQ1JFRihrZXkpOwotICAgIGlmIChzZXRfaW5zZXJ0X2tleShzbywga2V5LCBoYXNoKSkgewotICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoIShzby0+dXNlZCA+IG5fdXNlZCAmJiBzby0+ZmlsbCozID49IChzby0+bWFzaysxKSoyKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkPjUwMDAwID8gc28tPnVzZWQqMiA6IHNvLT51c2VkKjQpOwotfQotCi1zdGF0aWMgaW50Ci1zZXRfYWRkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCi17Ci0gICAgc2V0ZW50cnkgZW50cnk7Ci0gICAgUHlfaGFzaF90IGhhc2g7Ci0KLSAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKLSAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICByZXR1cm4gc2V0X2FkZF9lbnRyeShzbywgJmVudHJ5KTsKKyAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBrZXksIGhhc2gpOworICAgIGlmIChlbnRyeSAhPSBOVUxMKQorICAgICAgICByZXR1cm4gZW50cnktPmtleSAhPSBOVUxMOworICAgIHJldHVybiAtMTsKIH0KIAogI2RlZmluZSBESVNDQVJEX05PVEZPVU5EIDAKICNkZWZpbmUgRElTQ0FSRF9GT1VORCAxCiAKIHN0YXRpYyBpbnQKLXNldF9kaXNjYXJkX2VudHJ5KFB5U2V0T2JqZWN0ICpzbywgc2V0ZW50cnkgKm9sZGVudHJ5KQorc2V0X2Rpc2NhcmRfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBzZXRlbnRyeSAqZW50cnk7CiAgICAgUHlPYmplY3QgKm9sZF9rZXk7CiAKLSAgICBlbnRyeSA9IHNldF9sb29ra2V5KHNvLCBvbGRlbnRyeS0+a2V5LCBvbGRlbnRyeS0+aGFzaCk7CisgICAgZW50cnkgPSBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKICAgICBpZiAoZW50cnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgIHx8ICBlbnRyeS0+a2V5ID09IGR1bW15KQorICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBESVNDQVJEX05PVEZPVU5EOwogICAgIG9sZF9rZXkgPSBlbnRyeS0+a2V5OwogICAgIGVudHJ5LT5rZXkgPSBkdW1teTsKQEAgLTM1MywyMiArNDEzLDQ1IEBACiB9CiAKIHN0YXRpYyBpbnQKLXNldF9kaXNjYXJkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCitzZXRfYWRkX2tleShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgc2V0ZW50cnkgZW50cnk7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAKLSAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKHNvKSk7Ci0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKICAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVudHJ5LmtleSA9IGtleTsKLSAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICByZXR1cm4gc2V0X2Rpc2NhcmRfZW50cnkoc28sICZlbnRyeSk7CisgICAgcmV0dXJuIHNldF9hZGRfZW50cnkoc28sIGtleSwgaGFzaCk7Cit9CisKK3N0YXRpYyBpbnQKK3NldF9jb250YWluc19rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOworfQorCitzdGF0aWMgaW50CitzZXRfZGlzY2FyZF9rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X2hhc2hfdCBoYXNoOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gc2V0X2Rpc2NhcmRfZW50cnkoc28sIGtleSwgaGFzaCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC00NDksMjAgKzUzMiwyMiBAQAogewogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IG1hc2s7Ci0gICAgc2V0ZW50cnkgKnRhYmxlOworICAgIHNldGVudHJ5ICplbnRyeTsKIAogICAgIGFzc2VydCAoUHlBbnlTZXRfQ2hlY2soc28pKTsKICAgICBpID0gKnBvc19wdHI7CiAgICAgYXNzZXJ0KGkgPj0gMCk7Ci0gICAgdGFibGUgPSBzby0+dGFibGU7CiAgICAgbWFzayA9IHNvLT5tYXNrOwotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKHRhYmxlW2ldLmtleSA9PSBOVUxMIHx8IHRhYmxlW2ldLmtleSA9PSBkdW1teSkpCisgICAgZW50cnkgPSAmc28tPnRhYmxlW2ldOworICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGR1bW15KSkgewogICAgICAgICBpKys7CisgICAgICAgIGVudHJ5Kys7CisgICAgfQogICAgICpwb3NfcHRyID0gaSsxOwogICAgIGlmIChpID4gbWFzaykKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgYXNzZXJ0KHRhYmxlW2ldLmtleSAhPSBOVUxMKTsKLSAgICAqZW50cnlfcHRyID0gJnRhYmxlW2ldOworICAgIGFzc2VydChlbnRyeSAhPSBOVUxMKTsKKyAgICAqZW50cnlfcHRyID0gZW50cnk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTU2MCw4ICs2NDUsOCBAQAogICAgICAqIGluY3JlbWVudGFsbHkgcmVzaXppbmcgYXMgd2UgaW5zZXJ0IG5ldyBrZXlzLiAgRXhwZWN0CiAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICovCi0gICAgaWYgKChzby0+ZmlsbCArIG90aGVyLT51c2VkKSozID49IChzby0+bWFzaysxKSoyKSB7Ci0gICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIChzby0+dXNlZCArIG90aGVyLT51c2VkKSoyKSAhPSAwKQorICAgIGlmICgoc28tPmZpbGwgKyBvdGhlci0+dXNlZCkqMyA+PSBzby0+bWFzayoyKSB7CisgICAgICAgaWYgKHNldF90YWJsZV9yZXNpemUoc28sIHNvLT51c2VkICsgb3RoZXItPnVzZWQpICE9IDApCiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc29fZW50cnkgPSBzby0+dGFibGU7CkBAIC01ODYsMTEgKzY3MSwxNSBAQAogCiAgICAgLyogSWYgb3VyIHRhYmxlIGlzIGVtcHR5LCB3ZSBjYW4gdXNlIHNldF9pbnNlcnRfY2xlYW4oKSAqLwogICAgIGlmIChzby0+ZmlsbCA9PSAwKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPD0gb3RoZXItPm1hc2s7IGkrKywgb3RoZXJfZW50cnkrKykgeworICAgICAgICBzZXRlbnRyeSAqbmV3dGFibGUgPSBzby0+dGFibGU7CisgICAgICAgIHNpemVfdCBuZXdtYXNrID0gKHNpemVfdClzby0+bWFzazsKKyAgICAgICAgc28tPmZpbGwgPSBvdGhlci0+dXNlZDsKKyAgICAgICAgc28tPnVzZWQgPSBvdGhlci0+dXNlZDsKKyAgICAgICAgZm9yIChpID0gb3RoZXItPm1hc2sgKyAxOyBpID4gMCA7IGktLSwgb3RoZXJfZW50cnkrKykgewogICAgICAgICAgICAga2V5ID0gb3RoZXJfZW50cnktPmtleTsKICAgICAgICAgICAgIGlmIChrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXkpIHsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKHNvLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgICAgICBzZXRfaW5zZXJ0X2NsZWFuKG5ld3RhYmxlLCBuZXdtYXNrLCBrZXksIG90aGVyX2VudHJ5LT5oYXNoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTYwMSw0NiArNjkwLDEzIEBACiAgICAgICAgIG90aGVyX2VudHJ5ID0gJm90aGVyLT50YWJsZVtpXTsKICAgICAgICAga2V5ID0gb3RoZXJfZW50cnktPmtleTsKICAgICAgICAgaWYgKGtleSAhPSBOVUxMICYmIGtleSAhPSBkdW1teSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBpZiAoc2V0X2luc2VydF9rZXkoc28sIGtleSwgb3RoZXJfZW50cnktPmhhc2gpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBvdGhlcl9lbnRyeS0+aGFzaCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgaW50Ci1zZXRfY29udGFpbnNfZW50cnkoUHlTZXRPYmplY3QgKnNvLCBzZXRlbnRyeSAqZW50cnkpCi17Ci0gICAgUHlPYmplY3QgKmtleTsKLSAgICBzZXRlbnRyeSAqbHVfZW50cnk7Ci0KLSAgICBsdV9lbnRyeSA9IHNldF9sb29ra2V5KHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7Ci0gICAgaWYgKGx1X2VudHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBrZXkgPSBsdV9lbnRyeS0+a2V5OwotICAgIHJldHVybiBrZXkgIT0gTlVMTCAmJiBrZXkgIT0gZHVtbXk7Ci19Ci0KLXN0YXRpYyBpbnQKLXNldF9jb250YWluc19rZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5KQotewotICAgIHNldGVudHJ5IGVudHJ5OwotICAgIFB5X2hhc2hfdCBoYXNoOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7Ci0gICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7Ci0gICAgICAgIGlmIChoYXNoID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgcmV0dXJuIHNldF9jb250YWluc19lbnRyeShzbywgJmVudHJ5KTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9wb3AoUHlTZXRPYmplY3QgKnNvKQogewpAQCAtNjgyLDQzICs3MzgsNjQgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLyogV29yayB0byBpbmNyZWFzZSB0aGUgYml0IGRpc3BlcnNpb24gZm9yIGNsb3NlbHkgc3BhY2VkIGhhc2ggdmFsdWVzLgorICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBzb21lIHVzZSBjYXNlcyBoYXZlIG1hbnkgY29tYmluYXRpb25zIG9mIGEKKyAgIHNtYWxsIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIG5lYXJieSBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0CisgICBjb21iaW5hdGlvbnMgY29sbGFwc2UgdG8gb25seSBhIGhhbmRmdWwgb2YgZGlzdGluY3QgaGFzaCB2YWx1ZXMuICovCisKK3N0YXRpYyBQeV91aGFzaF90Citfc2h1ZmZsZV9iaXRzKFB5X3VoYXNoX3QgaCkKK3sKKyAgICByZXR1cm4gKChoIF4gODk4Njk3NDdVTCkgXiAoaCA8PCAxNikpICogMzY0NDc5ODE2N1VMOworfQorCisvKiBNb3N0IG9mIHRoZSBjb25zdGFudHMgaW4gdGhpcyBoYXNoIGFsZ29yaXRobSBhcmUgcmFuZG9tbHkgY2hvc2VuCisgICBsYXJnZSBwcmltZXMgd2l0aCAiaW50ZXJlc3RpbmcgYml0IHBhdHRlcm5zIiBhbmQgdGhhdCBwYXNzZWQgdGVzdHMKKyAgIGZvciBnb29kIGNvbGxpc2lvbiBzdGF0aXN0aWNzIG9uIGEgdmFyaWV0eSBvZiBwcm9ibGVtYXRpYyBkYXRhc2V0cworICAgaW5jbHVkaW5nIHBvd2Vyc2V0cyBhbmQgZ3JhcGggc3RydWN0dXJlcyAoc3VjaCBhcyBEYXZpZCBFcHBzdGVpbidzCisgICBncmFwaCByZWNpcGVzIGluIExpYi90ZXN0L3Rlc3Rfc2V0LnB5KSAqLworCiBzdGF0aWMgUHlfaGFzaF90CiBmcm96ZW5zZXRfaGFzaChQeU9iamVjdCAqc2VsZikKIHsKLSAgICAvKiBNb3N0IG9mIHRoZSBjb25zdGFudHMgaW4gdGhpcyBoYXNoIGFsZ29yaXRobSBhcmUgcmFuZG9tbHkgY2hvb3NlbgotICAgICAgIGxhcmdlIHByaW1lcyB3aXRoICJpbnRlcmVzdGluZyBiaXQgcGF0dGVybnMiIGFuZCB0aGF0IHBhc3NlZAotICAgICAgIHRlc3RzIGZvciBnb29kIGNvbGxpc2lvbiBzdGF0aXN0aWNzIG9uIGEgdmFyaWV0eSBvZiBwcm9ibGVtYXRpYwotICAgICAgIGRhdGFzZXRzIHN1Y2ggYXM6Ci0KLSAgICAgICAgICBwcyA9IFtdCi0gICAgICAgICAgZm9yIHIgaW4gcmFuZ2UoMjEpOgotICAgICAgICAgICAgICBwcyArPSBpdGVydG9vbHMuY29tYmluYXRpb25zKHJhbmdlKDIwKSwgcikKLSAgICAgICAgICBudW1fZGlzdGluY3RfaGFzaGVzID0gbGVuKHtoYXNoKGZyb3plbnNldChzKSkgZm9yIHMgaW4gcHN9KQotCi0gICAgKi8KICAgICBQeVNldE9iamVjdCAqc28gPSAoUHlTZXRPYmplY3QgKilzZWxmOwotICAgIFB5X3VoYXNoX3QgaCwgaGFzaCA9IDE5Mjc4NjgyMzdVTDsKKyAgICBQeV91aGFzaF90IGhhc2ggPSAwOwogICAgIHNldGVudHJ5ICplbnRyeTsKLSAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAKICAgICBpZiAoc28tPmhhc2ggIT0gLTEpCiAgICAgICAgIHJldHVybiBzby0+aGFzaDsKIAotICAgIGhhc2ggKj0gKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOwotICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewotICAgICAgICAvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaAotICAgICAgICAgICB2YWx1ZXMuICBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHNvbWUgdXNlIGNhc2VzIGhhdmUgbWFueQotICAgICAgICAgICBjb21iaW5hdGlvbnMgb2YgYSBzbWFsbCBudW1iZXIgb2YgZWxlbWVudHMgd2l0aCBuZWFyYnkKLSAgICAgICAgICAgaGFzaGVzIHNvIHRoYXQgbWFueSBkaXN0aW5jdCBjb21iaW5hdGlvbnMgY29sbGFwc2UgdG8gb25seQotICAgICAgICAgICBhIGhhbmRmdWwgb2YgZGlzdGluY3QgaGFzaCB2YWx1ZXMuICovCi0gICAgICAgIGggPSBlbnRyeS0+aGFzaDsKLSAgICAgICAgaGFzaCBePSAoKGggXiA4OTg2OTc0N1VMKSBeIChoIDw8IDE2KSkgKiAzNjQ0Nzk4MTY3VUw7Ci0gICAgfQotICAgIC8qIE1ha2UgdGhlIGZpbmFsIHJlc3VsdCBzcHJlYWQtb3V0IGluIGEgZGlmZmVyZW50IHBhdHRlcm4KLSAgICAgICB0aGFuIHRoZSBhbGdvcml0aG0gZm9yIHR1cGxlcyBvciBvdGhlciBweXRob24gb2JqZWN0cy4gKi8KKyAgICAvKiBYb3ItaW4gc2h1ZmZsZWQgYml0cyBmcm9tIGV2ZXJ5IGVudHJ5J3MgaGFzaCBmaWVsZCBiZWNhdXNlIHhvciBpcworICAgICAgIGNvbW11dGF0aXZlIGFuZCBhIGZyb3plbnNldCBoYXNoIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiBvcmRlci4KKworICAgICAgIEZvciBzcGVlZCwgaW5jbHVkZSBudWxsIGVudHJpZXMgYW5kIGR1bW15IGVudHJpZXMgYW5kIHRoZW4KKyAgICAgICBzdWJ0cmFjdCBvdXQgdGhlaXIgZWZmZWN0IGFmdGVyd2FyZHMgc28gdGhhdCB0aGUgZmluYWwgaGFzaAorICAgICAgIGRlcGVuZHMgb25seSBvbiBhY3RpdmUgZW50cmllcy4gIFRoaXMgYWxsb3dzIHRoZSBjb2RlIHRvIGJlCisgICAgICAgdmVjdG9yaXplZCBieSB0aGUgY29tcGlsZXIgYW5kIGl0IHNhdmVzIHRoZSB1bnByZWRpY3RhYmxlCisgICAgICAgYnJhbmNoZXMgdGhhdCB3b3VsZCBhcmlzZSB3aGVuIHRyeWluZyB0byBleGNsdWRlIG51bGwgYW5kIGR1bW15CisgICAgICAgZW50cmllcyBvbiBldmVyeSBpdGVyYXRpb24uICovCisKKyAgICBmb3IgKGVudHJ5ID0gc28tPnRhYmxlOyBlbnRyeSA8PSAmc28tPnRhYmxlW3NvLT5tYXNrXTsgZW50cnkrKykKKyAgICAgICAgaGFzaCBePSBfc2h1ZmZsZV9iaXRzKGVudHJ5LT5oYXNoKTsKKworICAgIC8qIFJlbW92ZSB0aGUgZWZmZWN0IG9mIGFuIG9kZCBudW1iZXIgb2YgTlVMTCBlbnRyaWVzICovCisgICAgaWYgKChzby0+bWFzayArIDEgLSBzby0+ZmlsbCkgJiAxKQorICAgICAgICBoYXNoIF49IF9zaHVmZmxlX2JpdHMoMCk7CisKKyAgICAvKiBSZW1vdmUgdGhlIGVmZmVjdCBvZiBhbiBvZGQgbnVtYmVyIG9mIGR1bW15IGVudHJpZXMgKi8KKyAgICBpZiAoKHNvLT5maWxsIC0gc28tPnVzZWQpICYgMSkKKyAgICAgICAgaGFzaCBePSBfc2h1ZmZsZV9iaXRzKC0xKTsKKworICAgIC8qIEZhY3RvciBpbiB0aGUgbnVtYmVyIG9mIGFjdGl2ZSBlbnRyaWVzICovCisgICAgaGFzaCBePSAoKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxKSAqIDE5Mjc4NjgyMzdVTDsKKworICAgIC8qIERpc3BlcnNlIHBhdHRlcm5zIGFyaXNpbmcgaW4gbmVzdGVkIGZyb3plbnNldHMgKi8KICAgICBoYXNoID0gaGFzaCAqIDY5MDY5VSArIDkwNzEzMzkyM1VMOworCisgICAgLyogLTEgaXMgcmVzZXJ2ZWQgYXMgYW4gZXJyb3IgY29kZSAqLwogICAgIGlmIChoYXNoID09IChQeV91aGFzaF90KS0xKQogICAgICAgICBoYXNoID0gNTkwOTIzNzEzVUw7CisKICAgICBzby0+aGFzaCA9IGhhc2g7CiAgICAgcmV0dXJuIGhhc2g7CiB9CkBAIC04NjUsNyArOTQyLDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylzZXRpdGVyX3RyYXZlcnNlLCAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTkxMCwxOCArOTg3LDE0IEBACiAgICAgICAgICogaW5jcmVtZW50YWxseSByZXNpemluZyBhcyB3ZSBpbnNlcnQgbmV3IGtleXMuICBFeHBlY3QKICAgICAgICAgKiB0aGF0IHRoZXJlIHdpbGwgYmUgbm8gKG9yIGZldykgb3ZlcmxhcHBpbmcga2V5cy4KICAgICAgICAgKi8KLSAgICAgICAgaWYgKGRpY3RzaXplID09IC0xKQorICAgICAgICBpZiAoZGljdHNpemUgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoKHNvLT5maWxsICsgZGljdHNpemUpKjMgPj0gKHNvLT5tYXNrKzEpKjIpIHsKLSAgICAgICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCAoc28tPnVzZWQgKyBkaWN0c2l6ZSkqMikgIT0gMCkKKyAgICAgICAgaWYgKChzby0+ZmlsbCArIGRpY3RzaXplKSozID49IHNvLT5tYXNrKjIpIHsKKyAgICAgICAgICAgIGlmIChzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZCArIGRpY3RzaXplKSAhPSAwKQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KG90aGVyLCAmcG9zLCAma2V5LCAmdmFsdWUsICZoYXNoKSkgewotICAgICAgICAgICAgc2V0ZW50cnkgYW5fZW50cnk7Ci0KLSAgICAgICAgICAgIGFuX2VudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICAgICAgYW5fZW50cnkua2V5ID0ga2V5OwotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sICZhbl9lbnRyeSkpCisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CkBAIC05NzAsOSArMTA0Myw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbWFrZV9uZXdfc2V0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKml0ZXJhYmxlKQogewotICAgIFB5U2V0T2JqZWN0ICpzbyA9IE5VTEw7CisgICAgUHlTZXRPYmplY3QgKnNvOwogCi0gICAgLyogY3JlYXRlIFB5U2V0T2JqZWN0IHN0cnVjdHVyZSAqLwogICAgIHNvID0gKFB5U2V0T2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTAxNSw3ICsxMDg3LDggQEAKIHsKICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBOVUxMLCAqcmVzdWx0OwogCi0gICAgaWYgKHR5cGUgPT0gJlB5RnJvemVuU2V0X1R5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJmcm96ZW5zZXQoKSIsIGt3ZHMpKQorICAgIGlmIChrd2RzICE9IE5VTEwgJiYgdHlwZSA9PSAmUHlGcm96ZW5TZXRfVHlwZQorICAgICAgICAmJiAhX1B5QXJnX05vS2V5d29yZHMoImZyb3plbnNldCgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCB0eXBlLT50cF9uYW1lLCAwLCAxLCAmaXRlcmFibGUpKQpAQCAtMTA0MiwyNCArMTExNSw5IEBACiAgICAgcmV0dXJuIGVtcHR5ZnJvemVuc2V0OwogfQogCi1pbnQKLVB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZAotUHlTZXRfRmluaSh2b2lkKQotewotICAgIFB5X0NMRUFSKGVtcHR5ZnJvemVuc2V0KTsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaWYgKHR5cGUgPT0gJlB5U2V0X1R5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJzZXQoKSIsIGt3ZHMpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIHJldHVybiBtYWtlX25ld19zZXQodHlwZSwgTlVMTCk7CiB9CiAKQEAgLTEyMDEsNiArMTI1OSw4IEBACiB7CiAgICAgUHlTZXRPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqa2V5LCAqaXQsICp0bXA7CisgICAgUHlfaGFzaF90IGhhc2g7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gc2V0X2NvcHkoc28pOwpAQCAtMTIyMCwxMyArMTI4MCwxNSBAQAogICAgICAgICB9CiAKICAgICAgICAgd2hpbGUgKHNldF9uZXh0KChQeVNldE9iamVjdCAqKW90aGVyLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgICAgICBpbnQgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGVudHJ5KTsKLSAgICAgICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICAgICAga2V5ID0gZW50cnktPmtleTsKKyAgICAgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBrZXksIGhhc2gpOworICAgICAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHJ2KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkocmVzdWx0LCBlbnRyeSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTEyNDIsMzIgKzEzMDQsMTUgQEAKICAgICB9CiAKICAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgewotICAgICAgICBpbnQgcnY7Ci0gICAgICAgIHNldGVudHJ5IGVudHJ5OwotICAgICAgICBQeV9oYXNoX3QgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLQotICAgICAgICBpZiAoaGFzaCA9PSAtMSkgewotICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBlbnRyeS5oYXNoID0gaGFzaDsKLSAgICAgICAgZW50cnkua2V5ID0ga2V5OwotICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywgJmVudHJ5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CisgICAgICAgIGlmIChoYXNoID09IC0xKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgIGlmIChydiA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBpZiAocnYpIHsKLSAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHJlc3VsdCwgJmVudHJ5KSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShyZXN1bHQsIGtleSwgaGFzaCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICB9CkBAIC0xMjc3LDYgKzEzMjIsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihpdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgUHlfREVDUkVGKGtleSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzYzLDYgKzE0MTMsNyBAQAogc2V0X2lzZGlzam9pbnQoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKml0LCAqdG1wOworICAgIGludCBydjsKIAogICAgIGlmICgoUHlPYmplY3QgKilzbyA9PSBvdGhlcikgewogICAgICAgICBpZiAoUHlTZXRfR0VUX1NJWkUoc28pID09IDApCkBAIC0xMzgxLDggKzE0MzIsOCBAQAogICAgICAgICAgICAgb3RoZXIgPSB0bXA7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKHNldF9uZXh0KChQeVNldE9iamVjdCAqKW90aGVyLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgICAgICBpbnQgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoc28sIGVudHJ5KTsKLSAgICAgICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCBlbnRyeS0+a2V5LCBlbnRyeS0+aGFzaCk7CisgICAgICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKHJ2KQogICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTEzOTUsOCArMTQ0Niw2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgaW50IHJ2OwotICAgICAgICBzZXRlbnRyeSBlbnRyeTsKICAgICAgICAgUHlfaGFzaF90IGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpIHsKQEAgLTE0MDQsMTEgKzE0NTMsOSBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGVudHJ5Lmhhc2ggPSBoYXNoOwotICAgICAgICBlbnRyeS5rZXkgPSBrZXk7Ci0gICAgICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2VudHJ5KHNvLCAmZW50cnkpOworICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeShzbywga2V5LCBoYXNoKTsKICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkgeworICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTE0MjksNiArMTQ3NiwxMCBAQAogc3RhdGljIGludAogc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogeworICAgIGlmIChQeVNldF9HRVRfU0laRShzbykgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAoKFB5T2JqZWN0ICopc28gPT0gb3RoZXIpCiAgICAgICAgIHJldHVybiBzZXRfY2xlYXJfaW50ZXJuYWwoc28pOwogCkBAIC0xNDM3LDcgKzE0ODgsNyBAQAogICAgICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAKICAgICAgICAgd2hpbGUgKHNldF9uZXh0KChQeVNldE9iamVjdCAqKW90aGVyLCAmcG9zLCAmZW50cnkpKQotICAgICAgICAgICAgaWYgKHNldF9kaXNjYXJkX2VudHJ5KHNvLCBlbnRyeSkgPT0gLTEpCisgICAgICAgICAgICBpZiAoc2V0X2Rpc2NhcmRfZW50cnkoc28sIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0ICprZXksICppdDsKQEAgLTE0NDYsNyArMTQ5Nyw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgd2hpbGUgKChrZXkgPSBQeUl0ZXJfTmV4dChpdCkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9rZXkoc28sIGtleSkgPT0gLTEpIHsKKyAgICAgICAgICAgIGlmIChzZXRfZGlzY2FyZF9rZXkoc28sIGtleSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0xNDU3LDEwICsxNTA4LDEwIEBACiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICAvKiBJZiBtb3JlIHRoYW4gMS81IGFyZSBkdW1taWVzLCB0aGVuIHJlc2l6ZSB0aGVtIGF3YXkuICovCi0gICAgaWYgKChzby0+ZmlsbCAtIHNvLT51c2VkKSAqIDUgPCBzby0+bWFzaykKKyAgICAvKiBJZiBtb3JlIHRoYW4gMS80dGggYXJlIGR1bW1pZXMsIHRoZW4gcmVzaXplIHRoZW0gYXdheS4gKi8KKyAgICBpZiAoKHNpemVfdCkoc28tPmZpbGwgLSBzby0+dXNlZCkgPD0gKHNpemVfdClzby0+bWFzayAvIDQpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzZXRfdGFibGVfcmVzaXplKHNvLCBzby0+dXNlZD41MDAwMCA/IHNvLT51c2VkKjIgOiBzby0+dXNlZCo0KTsKKyAgICByZXR1cm4gc2V0X3RhYmxlX3Jlc2l6ZShzbywgc28tPnVzZWQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ4Nyw3ICsxNTM4LDcgQEAKICAgICByZXN1bHQgPSBzZXRfY29weShzbyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKChQeVNldE9iamVjdCAqKSByZXN1bHQsIG90aGVyKSAhPSAtMSkKKyAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKChQeVNldE9iamVjdCAqKSByZXN1bHQsIG90aGVyKSA9PSAwKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgIHJldHVybiBOVUxMOwpAQCAtMTQ5Nyw4ICsxNTQ4LDE1IEBACiBzZXRfZGlmZmVyZW5jZShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBpbnQgcnY7CisKKyAgICBpZiAoUHlTZXRfR0VUX1NJWkUoc28pID09IDApIHsKKyAgICAgICAgcmV0dXJuIHNldF9jb3B5KHNvKTsKKyAgICB9CiAKICAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSAgJiYgIVB5RGljdF9DaGVja0V4YWN0KG90aGVyKSkgewogICAgICAgICByZXR1cm4gc2V0X2NvcHlfYW5kX2RpZmZlcmVuY2Uoc28sIG90aGVyKTsKQEAgLTE1MTYsMTcgKzE1NzQsMTUgQEAKIAogICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpIHsKICAgICAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7Ci0gICAgICAgICAgICBzZXRlbnRyeSBlbnRyeWNvcHk7Ci0gICAgICAgICAgICBpbnQgcnY7Ci0gICAgICAgICAgICBlbnRyeWNvcHkuaGFzaCA9IGVudHJ5LT5oYXNoOwotICAgICAgICAgICAgZW50cnljb3B5LmtleSA9IGVudHJ5LT5rZXk7Ci0gICAgICAgICAgICBydiA9IF9QeURpY3RfQ29udGFpbnMob3RoZXIsIGVudHJ5LT5rZXksIGVudHJ5LT5oYXNoKTsKKyAgICAgICAgICAgIGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgICAgICBoYXNoID0gZW50cnktPmhhc2g7CisgICAgICAgICAgICBydiA9IF9QeURpY3RfQ29udGFpbnMob3RoZXIsIGtleSwgaGFzaCk7CiAgICAgICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIXJ2KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCAmZW50cnljb3B5KSkgeworICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTUzNywxMyArMTU5MywxNSBAQAogCiAgICAgLyogSXRlcmF0ZSBvdmVyIHNvLCBjaGVja2luZyBmb3IgY29tbW9uIGVsZW1lbnRzIGluIG90aGVyLiAqLwogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewotICAgICAgICBpbnQgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoKFB5U2V0T2JqZWN0ICopb3RoZXIsIGVudHJ5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgIGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoKFB5U2V0T2JqZWN0ICopb3RoZXIsIGtleSwgaGFzaCk7CisgICAgICAgIGlmIChydiA8IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFydikgewotICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoKFB5U2V0T2JqZWN0ICopcmVzdWx0LCBlbnRyeSkpIHsKKyAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KChQeVNldE9iamVjdCAqKXJlc3VsdCwga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTYwNSwyOSArMTY2MywyNCBAQAogICAgIFB5U2V0T2JqZWN0ICpvdGhlcnNldDsKICAgICBQeU9iamVjdCAqa2V5OwogICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKICAgICBzZXRlbnRyeSAqZW50cnk7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKChQeU9iamVjdCAqKXNvID09IG90aGVyKQogICAgICAgICByZXR1cm4gc2V0X2NsZWFyKHNvKTsKIAogICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvdGhlcikpIHsKICAgICAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgICAgICBpbnQgcnY7Ci0gICAgICAgIFB5X2hhc2hfdCBoYXNoOwogICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KG90aGVyLCAmcG9zLCAma2V5LCAmdmFsdWUsICZoYXNoKSkgewotICAgICAgICAgICAgc2V0ZW50cnkgYW5fZW50cnk7Ci0KICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgYW5fZW50cnkuaGFzaCA9IGhhc2g7Ci0gICAgICAgICAgICBhbl9lbnRyeS5rZXkgPSBrZXk7Ci0KLSAgICAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfZW50cnkoc28sICZhbl9lbnRyeSk7Ci0gICAgICAgICAgICBpZiAocnYgPT0gLTEpIHsKKyAgICAgICAgICAgIHJ2ID0gc2V0X2Rpc2NhcmRfZW50cnkoc28sIGtleSwgaGFzaCk7CisgICAgICAgICAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAocnYgPT0gRElTQ0FSRF9OT1RGT1VORCkgewotICAgICAgICAgICAgICAgIGlmIChzZXRfYWRkX2VudHJ5KHNvLCAmYW5fZW50cnkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNldF9hZGRfZW50cnkoc28sIGtleSwgaGFzaCkpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KQEAgLTE2NDcsMTMgKzE3MDAsMTUgQEAKICAgICB9CiAKICAgICB3aGlsZSAoc2V0X25leHQob3RoZXJzZXQsICZwb3MsICZlbnRyeSkpIHsKLSAgICAgICAgaW50IHJ2ID0gc2V0X2Rpc2NhcmRfZW50cnkoc28sIGVudHJ5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKSB7CisgICAgICAgIGtleSA9IGVudHJ5LT5rZXk7CisgICAgICAgIGhhc2ggPSBlbnRyeS0+aGFzaDsKKyAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9lbnRyeShzbywga2V5LCBoYXNoKTsKKyAgICAgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKG90aGVyc2V0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChydiA9PSBESVNDQVJEX05PVEZPVU5EKSB7Ci0gICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywgZW50cnkpKSB7CisgICAgICAgICAgICBpZiAoc2V0X2FkZF9lbnRyeShzbywga2V5LCBoYXNoKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdGhlcnNldCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC0xNzE1LDYgKzE3NzAsNyBAQAogewogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CisgICAgaW50IHJ2OwogCiAgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKICAgICAgICAgUHlPYmplY3QgKnRtcCwgKnJlc3VsdDsKQEAgLTE3MjksOCArMTc4NSw4IEBACiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKIAogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewotICAgICAgICBpbnQgcnYgPSBzZXRfY29udGFpbnNfZW50cnkoKFB5U2V0T2JqZWN0ICopb3RoZXIsIGVudHJ5KTsKLSAgICAgICAgaWYgKHJ2ID09IC0xKQorICAgICAgICBydiA9IHNldF9jb250YWluc19lbnRyeSgoUHlTZXRPYmplY3QgKilvdGhlciwgZW50cnktPmtleSwgZW50cnktPmhhc2gpOworICAgICAgICBpZiAocnYgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghcnYpCiAgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CkBAIC0xODIxLDcgKzE4NzcsNyBAQAogICAgIGludCBydjsKIAogICAgIHJ2ID0gc2V0X2NvbnRhaW5zX2tleShzbywga2V5KTsKLSAgICBpZiAocnYgPT0gLTEpIHsKKyAgICBpZiAocnYgPCAwKSB7CiAgICAgICAgIGlmICghUHlTZXRfQ2hlY2soa2V5KSB8fCAhUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTg0MCw3ICsxODk2LDcgQEAKICAgICBsb25nIHJlc3VsdDsKIAogICAgIHJlc3VsdCA9IHNldF9jb250YWlucyhzbywga2V5KTsKLSAgICBpZiAocmVzdWx0ID09IC0xKQorICAgIGlmIChyZXN1bHQgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CiB9CkBAIC0xODU0LDcgKzE5MTAsNyBAQAogICAgIGludCBydjsKIAogICAgIHJ2ID0gc2V0X2Rpc2NhcmRfa2V5KHNvLCBrZXkpOwotICAgIGlmIChydiA9PSAtMSkgeworICAgIGlmIChydiA8IDApIHsKICAgICAgICAgaWYgKCFQeVNldF9DaGVjayhrZXkpIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTE4NjMsNyArMTkxOSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIHRtcGtleSk7CiAgICAgICAgIFB5X0RFQ1JFRih0bXBrZXkpOwotICAgICAgICBpZiAocnYgPT0gLTEpCisgICAgICAgIGlmIChydiA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE4ODYsNyArMTk0Miw3IEBACiAgICAgaW50IHJ2OwogCiAgICAgcnYgPSBzZXRfZGlzY2FyZF9rZXkoc28sIGtleSk7Ci0gICAgaWYgKHJ2ID09IC0xKSB7CisgICAgaWYgKHJ2IDwgMCkgewogICAgICAgICBpZiAoIVB5U2V0X0NoZWNrKGtleSkgfHwgIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTg5NSw3ICsxOTUxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBydiA9IHNldF9kaXNjYXJkX2tleShzbywgdG1wa2V5KTsKICAgICAgICAgUHlfREVDUkVGKHRtcGtleSk7Ci0gICAgICAgIGlmIChydiA9PSAtMSkKKyAgICAgICAgaWYgKHJ2IDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTE5NDksMTMgKzIwMDUsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqaXRlcmFibGUgPSBOVUxMOwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzZWxmKSkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeVNldF9DaGVjayhzZWxmKSAmJiAhX1B5QXJnX05vS2V5d29yZHMoInNldCgpIiwga3dkcykpCisgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiAhX1B5QXJnX05vS2V5d29yZHMoInNldCgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsIFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIDAsIDEsICZpdGVyYWJsZSkpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzZXRfY2xlYXJfaW50ZXJuYWwoc2VsZik7CisgICAgaWYgKHNlbGYtPmZpbGwpCisgICAgICAgIHNldF9jbGVhcl9pbnRlcm5hbChzZWxmKTsKICAgICBzZWxmLT5oYXNoID0gLTE7CiAgICAgaWYgKGl0ZXJhYmxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjEyMiw3ICsyMTc3LDcgQEAKICAgICAgY29weV9kb2N9LAogICAgIHsiZGlmZmVyZW5jZSIsICAgICAgKFB5Q0Z1bmN0aW9uKXNldF9kaWZmZXJlbmNlX211bHRpLCAgICAgIE1FVEhfVkFSQVJHUywKICAgICAgZGlmZmVyZW5jZV9kb2N9LAotICAgIHsiaW50ZXJzZWN0aW9uIiwoUHlDRnVuY3Rpb24pc2V0X2ludGVyc2VjdGlvbl9tdWx0aSwgICAgICAgIE1FVEhfVkFSQVJHUywKKyAgICB7ImludGVyc2VjdGlvbiIsICAgIChQeUNGdW5jdGlvbilzZXRfaW50ZXJzZWN0aW9uX211bHRpLCAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIGludGVyc2VjdGlvbl9kb2N9LAogICAgIHsiaXNkaXNqb2ludCIsICAgICAgKFB5Q0Z1bmN0aW9uKXNldF9pc2Rpc2pvaW50LCAgICBNRVRIX08sCiAgICAgIGlzZGlzam9pbnRfZG9jfSwKQEAgLTIxOTMsNyArMjI0OCw3IEBACiAgICAgKHRyYXZlcnNlcHJvYylzZXRfdHJhdmVyc2UsICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlzZXRfY2xlYXJfaW50ZXJuYWwsICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIChyaWNoY21wZnVuYylzZXRfcmljaGNvbXBhcmUsICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoUHlTZXRPYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIG9mZnNldG9mKFB5U2V0T2JqZWN0LCB3ZWFrcmVmbGlzdCksIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgKGdldGl0ZXJmdW5jKXNldF9pdGVyLCAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgZnJvemVuc2V0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwpAQCAtMjI3Nyw2ICsyMzMyLDE4IEBACiB9CiAKIGludAorUHlTZXRfQ2xlYXJGcmVlTGlzdCh2b2lkKQoreworICAgIHJldHVybiAwOworfQorCit2b2lkCitQeVNldF9GaW5pKHZvaWQpCit7CisgICAgUHlfQ0xFQVIoZW1wdHlmcm96ZW5zZXQpOworfQorCitpbnQKIF9QeVNldF9OZXh0RW50cnkoUHlPYmplY3QgKnNldCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlfaGFzaF90ICpoYXNoKQogewogICAgIHNldGVudHJ5ICplbnRyeTsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKaW5kZXggMGZjNmI1OC4uNDNmMmYzMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKQEAgLTEsNiArMSw4IEBACiAvKiBzdHJpbmdsaWI6IGNvZGVjIGltcGxlbWVudGF0aW9ucyAqLwogCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKyNpZiAhU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgZXJyb3IgImNvZGVjcy5oIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCisjZW5kaWYKIAogLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCiAgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLwpAQCAtMjYwLDUyICsyNjIsMzQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSNkZWZpbmUgTUFYX1NIT1JUX1VOSUNIQVJTIDMwMCAgLyogbGFyZ2VzdCBzaXplIHdlJ2xsIGRvIG9uIHRoZSBzdGFjayAqLwotCi0gICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAvKiBpbmRleCBpbnRvIHMgb2YgbmV4dCBpbnB1dCBieXRlICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAvKiByZXN1bHQgc3RyaW5nIG9iamVjdCAqLworICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBkYXRhIG9mIG5leHQgaW5wdXQgY2hhcmFjdGVyICovCiAgICAgY2hhciAqcDsgICAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGZyZWUgYnl0ZSBpbiBvdXRwdXQgYnVmZmVyICovCi0gICAgUHlfc3NpemVfdCBuYWxsb2NhdGVkOyAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgYWxsb2NhdGVkICovCi0gICAgUHlfc3NpemVfdCBubmVlZGVkOyAgICAgICAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgbmVlZGVkICovCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IF9QeV9FUlJPUl9VTktOT1dOOwogI2VuZGlmCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKICAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSAyOwotICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogMl07CiAjZWxpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDM7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAzXTsKICNlbHNlIC8qICBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gNCAqLwogICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDQ7Ci0gICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiA0XTsKICNlbmRpZgorICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGFzc2VydChzaXplID49IDApOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CiAKLSAgICBpZiAoc2l6ZSA8PSBNQVhfU0hPUlRfVU5JQ0hBUlMpIHsKLSAgICAgICAgLyogV3JpdGUgaW50byB0aGUgc3RhY2sgYnVmZmVyOyBuYWxsb2NhdGVkIGNhbid0IG92ZXJmbG93LgotICAgICAgICAgKiBBdCB0aGUgZW5kLCB3ZSdsbCBhbGxvY2F0ZSBleGFjdGx5IGFzIG11Y2ggaGVhcCBzcGFjZSBhcyBpdAotICAgICAgICAgKiB0dXJucyBvdXQgd2UgbmVlZC4KLSAgICAgICAgICovCi0gICAgICAgIG5hbGxvY2F0ZWQgPSBQeV9TQUZFX0RPV05DQVNUKHNpemVvZihzdGFja2J1ZiksIHNpemVfdCwgaW50KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsgICAvKiB3aWxsIGFsbG9jYXRlIGFmdGVyIHdlJ3JlIGRvbmUgKi8KLSAgICAgICAgcCA9IHN0YWNrYnVmOworICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBtYXhfY2hhcl9zaXplKSB7CisgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gbWF4X2NoYXJfc2l6ZSkgewotICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiBtYXhfY2hhcl9zaXplOwotICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOwotICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgfQorCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHNpemUgKiBtYXhfY2hhcl9zaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOykgewogICAgICAgICBQeV9VQ1M0IGNoID0gZGF0YVtpKytdOwpAQCAtMzI2LDcyICszMTAsMTE3IEBACiAgICAgICAgIH0KICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCiAgICAgICAgIGVsc2UgaWYgKFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFKGNoKSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGssIHN0YXJ0cG9zOwotICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7Ci0gICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKLSAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgICAgdW5pY29kZSwgJmV4Yywgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsICZuZXdwb3MpOwotICAgICAgICAgICAgaWYgKCFyZXApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkKLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlCeXRlc19HRVRfU0laRShyZXApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOwotCi0gICAgICAgICAgICBpZiAocmVwc2l6ZSA+IG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldDsKLQotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIG1heF9jaGFyX3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuYWxsb2NhdGVkICs9IHJlcHNpemUgLSBtYXhfY2hhcl9zaXplOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5hbGxvY2F0ZWQpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksIHN0YWNrYnVmLCBvZmZzZXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIGVuZHBvcywgbmV3cG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBrOworICAgICAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pIHsKKyAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgewotICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOwotICAgICAgICAgICAgICAgIGZvcihrID0gcmVwc2l6ZTsgayA+IDA7IGstLSkKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpwcmVwKys7Ci0gICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQgcmVwa2luZDsKLSAgICAgICAgICAgICAgICB2b2lkICpyZXBkYXRhOworICAgICAgICAgICAgc3RhcnRwb3MgPSBpLTE7CisgICAgICAgICAgICBlbmRwb3MgPSBzdGFydHBvcysxOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXApIDwgMCkKKyAgICAgICAgICAgIHdoaWxlICgoZW5kcG9zIDwgc2l6ZSkgJiYgUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoZGF0YVtlbmRwb3NdKSkKKyAgICAgICAgICAgICAgICBlbmRwb3MrKzsKKworICAgICAgICAgICAgLyogT25seSBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBpZiBpdCdzIG5vdCB0aGUgbGFzdCB3cml0ZSAqLworICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IChlbmRwb3MgPCBzaXplKTsKKworICAgICAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgICAgICBtZW1zZXQocCwgJz8nLCBlbmRwb3MgLSBzdGFydHBvcyk7CisgICAgICAgICAgICAgICAgcCArPSAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCB0aGUgaWdub3JlIGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTOgorICAgICAgICAgICAgICAgIGZvciAoaz1zdGFydHBvczsgazxlbmRwb3M7IGsrKykgeworICAgICAgICAgICAgICAgICAgICBjaCA9IGRhdGFba107CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhlMCB8IChjaCA+PiAxMikpOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IG1heF9jaGFyX3NpemUgKiAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIHAgPSBiYWNrc2xhc2hyZXBsYWNlKCZ3cml0ZXIsIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcyk7CisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICByZXBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKLSAgICAgICAgICAgICAgICByZXBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVwKTsKKyAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgZm9yKGs9MDsgazxyZXBzaXplOyBrKyspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQocmVwa2luZCwgcmVwZGF0YSwgayk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgweDgwIDw9IGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS0xLCBpLAorICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U6CisgICAgICAgICAgICAgICAgLyogc3VidHJhY3QgcHJlYWxsb2NhdGVkIGJ5dGVzICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IG1heF9jaGFyX3NpemUgKiAoZW5kcG9zIC0gc3RhcnRwb3MpOworICAgICAgICAgICAgICAgIHAgPSB4bWxjaGFycmVmcmVwbGFjZSgmd3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGkgKz0gKGVuZHBvcyAtIHN0YXJ0cG9zIC0gMSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgICAgICAgICBmb3IgKGs9c3RhcnRwb3M7IGs8ZW5kcG9zOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBkYXRhW2tdOworICAgICAgICAgICAgICAgICAgICBpZiAoISgweERDODAgPD0gY2ggJiYgY2ggPD0gMHhEQ0ZGKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKGNoICYgMHhmZik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChrID49IGVuZHBvcykgeworICAgICAgICAgICAgICAgICAgICBpICs9IChlbmRwb3MgLSBzdGFydHBvcyAtIDEpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhcnRwb3MgPSBrOworICAgICAgICAgICAgICAgIGFzc2VydChzdGFydHBvcyA8IGVuZHBvcyk7CisgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoIHRoZSBkZWZhdWx0IGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosICJ1dGYtOCIsICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIiwKKyAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCAmZXhjLCBzdGFydHBvcywgZW5kcG9zLCAmbmV3cG9zKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgICAgIC8qIHN1YnRyYWN0IHByZWFsbG9jYXRlZCBieXRlcyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSAtPSBtYXhfY2hhcl9zaXplICogKG5ld3BvcyAtIHN0YXJ0cG9zKTsKKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShyZXApKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHJlcCBpcyB1bmljb2RlICovCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04IiwgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRwb3MsIGVuZHBvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKWM7CisKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEocmVwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwKSk7CiAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihyZXApOworCisgICAgICAgICAgICAgICAgaSA9IG5ld3BvczsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CisKKyAgICAgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLm92ZXJhbGxvY2F0ZSB8fCBpID09IHNpemUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAyCkBAIC00MTYsMzUgKzQ0NSwyMCBAQAogI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEgKi8KICAgICB9CiAKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKLSAgICAgICAgLyogVGhpcyB3YXMgc3RhY2sgYWxsb2NhdGVkLiAqLwotICAgICAgICBubmVlZGVkID0gcCAtIHN0YWNrYnVmOwotICAgICAgICBhc3NlcnQobm5lZWRlZCA8PSBuYWxsb2NhdGVkKTsKLSAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzdGFja2J1Ziwgbm5lZWRlZCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBDdXQgYmFjayB0byBzaXplIGFjdHVhbGx5IG5lZWRlZC4gKi8KLSAgICAgICAgbm5lZWRlZCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgICAgICBhc3NlcnQobm5lZWRlZCA8PSBuYWxsb2NhdGVkKTsKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5uZWVkZWQpOwotICAgIH0KLQogI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogI2VuZGlmCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHApOwogCiAjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQogIGVycm9yOgogICAgIFB5X1hERUNSRUYocmVwKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogI2VuZGlmCi0KLSN1bmRlZiBNQVhfU0hPUlRfVU5JQ0hBUlMKIH0KIAogLyogVGhlIHBhdHRlcm4gZm9yIGNvbnN0cnVjdGluZyBVQ1MyLXJlcGVhdGVkIG1hc2tzLiAqLwpAQCAtODA2LDUgKzgyMCwzIEBACiAjdW5kZWYgU1dBQjQKIAogI2VuZGlmCi0KLSNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaCBiL09iamVjdHMvc3RyaW5nbGliL2N0eXBlLmgKaW5kZXggNzM5Y2YzZC4uZjA1NDYyNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvY3R5cGUuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9jdHlwZS5oCkBAIC0xLDUgKzEsNiBAQAotLyogTk9URTogdGhpcyBBUEkgaXMgLU9OTFktIGZvciB1c2Ugd2l0aCBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXIgc3RyaW5ncy4gKi8KLS8qIERvIG5vdCB1c2UgaXQgd2l0aCBVbmljb2RlLiAqLworI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisjIGVycm9yICJjdHlwZS5oIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ5dGUtd2lzZSBzdHJpbmdzIgorI2VuZGlmCiAKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaCBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAppbmRleCBjZGE2OGU3Li45ODE2NWFkIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCkBAIC0zMiw1MiArMzIsOTggQEAKICNkZWZpbmUgU1RSSU5HTElCX0JMT09NKG1hc2ssIGNoKSAgICAgXAogICAgICgobWFzayAmICAoMVVMIDw8ICgoY2gpICYgKFNUUklOR0xJQl9CTE9PTV9XSURUSCAtMSkpKSkpCiAKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorU1RSSU5HTElCKGZpbmRfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwgU1RSSU5HTElCX0NIQVIgY2gpCit7CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnAsICplOworCisgICAgcCA9IHM7CisgICAgZSA9IHMgKyBuOworICAgIGlmIChuID4gMTApIHsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorICAgICAgICBwID0gbWVtY2hyKHMsIGNoLCBuKTsKKyAgICAgICAgaWYgKHAgIT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAocCAtIHMpOworICAgICAgICByZXR1cm4gLTE7CisjZWxzZQorICAgICAgICAvKiB1c2UgbWVtY2hyIGlmIHdlIGNhbiBjaG9vc2UgYSBuZWVkbGUgd2l0aG91dCB0d28gbWFueSBsaWtlbHkKKyAgICAgICAgICAgZmFsc2UgcG9zaXRpdmVzICovCisgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gY2ggJiAweGZmOworICAgICAgICAvKiBJZiBsb29raW5nIGZvciBhIG11bHRpcGxlIG9mIDI1Niwgd2UnZCBoYXZlIHRvbworICAgICAgICAgICBtYW55IGZhbHNlIHBvc2l0aXZlcyBsb29raW5nIGZvciB0aGUgJ1wwJyBieXRlIGluIFVDUzIKKyAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLworICAgICAgICBpZiAobmVlZGxlICE9IDApIHsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZSkgeworICAgICAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbWNocihwLCBuZWVkbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlIC0gcCkgKiBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICBwID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopCisgICAgICAgICAgICAgICAgICAgICAgICBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIGlmICgqcCA9PSBjaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KKyAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH0KKyAgICB3aGlsZSAocCA8IGUpIHsKKyAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgIHArKzsKKyAgICB9CisgICAgcmV0dXJuIC0xOworfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLVNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgY2gsIHVuc2lnbmVkIGNoYXIgbmVlZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZSkKK1NUUklOR0xJQihyZmluZF9jaGFyKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogcywgUHlfc3NpemVfdCBuLCBTVFJJTkdMSUJfQ0hBUiBjaCkKIHsKLSAgICBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkgewotICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqcHRyID0gczsKLSAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmUgPSBzICsgbjsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGUpIHsKLSAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbWNocigoY29uc3Qgdm9pZCAqKSBwdHIsIG5lZWRsZSwgKGUgLSBwdHIpICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgcHRyID0gKGNvbnN0IFNUUklOR0xJQl9DSEFSICopIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgICAgICBpZiAoc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSA9PSAxIHx8ICpwdHIgPT0gY2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIChwdHIgLSBzKTsKLSAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCi0gICAgICAgICAgICBwdHIrKzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwOwogI2lmZGVmIEhBVkVfTUVNUkNIUgogICAgIC8qIG1lbXJjaHIoKSBpcyBhIEdOVSBleHRlbnNpb24sIGF2YWlsYWJsZSBzaW5jZSBnbGliYyAyLjEuOTEuCiAgICAgICAgaXQgZG9lc24ndCBzZWVtIGFzIG9wdGltaXplZCBhcyBtZW1jaHIoKSwgYnV0IGlzIHN0aWxsIHF1aXRlCi0gICAgICAgZmFzdGVyIHRoYW4gb3VyIGhhbmQtd3JpdHRlbiBsb29wIGluIEZBU1RTRUFSQ0ggYmVsb3cgKi8KLSAgICBlbHNlIGlmIChtb2RlID09IEZBU1RfUlNFQVJDSCkgewotICAgICAgICB3aGlsZSAobiA+IDApIHsKLSAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpmb3VuZDsKLSAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbXJjaHIoKGNvbnN0IHZvaWQgKikgcywgbmVlZGxlLCBuICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZm91bmQgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikgX1B5X0FMSUdOX0RPV04oY2FuZGlkYXRlLCBzaXplb2YoU1RSSU5HTElCX0NIQVIpKTsKLSAgICAgICAgICAgIG4gPSBmb3VuZCAtIHM7Ci0gICAgICAgICAgICBpZiAoc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSA9PSAxIHx8ICpmb3VuZCA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgIC8qIEZhbHNlIHBvc2l0aXZlICovCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSNlbmRpZgotICAgIGVsc2UgewotICAgICAgICBhc3NlcnQoMCk7IC8qIFNob3VsZCBuZXZlciBnZXQgaGVyZSAqLwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgICAgZmFzdGVyIHRoYW4gb3VyIGhhbmQtd3JpdHRlbiBsb29wIGJlbG93ICovCiAKLSN1bmRlZiBET19NRU1DSFIKKyAgICBpZiAobiA+IDEwKSB7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKyAgICAgICAgcCA9IG1lbXJjaHIocywgY2gsIG4pOworICAgICAgICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgICAgIHJldHVybiAtMTsKKyNlbHNlCisgICAgICAgIC8qIHVzZSBtZW1yY2hyIGlmIHdlIGNhbiBjaG9vc2UgYSBuZWVkbGUgd2l0aG91dCB0d28gbWFueSBsaWtlbHkKKyAgICAgICAgICAgZmFsc2UgcG9zaXRpdmVzICovCisgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gY2ggJiAweGZmOworICAgICAgICAvKiBJZiBsb29raW5nIGZvciBhIG11bHRpcGxlIG9mIDI1Niwgd2UnZCBoYXZlIHRvbworICAgICAgICAgICBtYW55IGZhbHNlIHBvc2l0aXZlcyBsb29raW5nIGZvciB0aGUgJ1wwJyBieXRlIGluIFVDUzIKKyAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLworICAgICAgICBpZiAobmVlZGxlICE9IDApIHsKKyAgICAgICAgICAgIHdoaWxlIChuID4gMCkgeworICAgICAgICAgICAgICAgIHZvaWQgKmNhbmRpZGF0ZSA9IG1lbXJjaHIocywgbmVlZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiAqIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOworICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIHAgPSAoY29uc3QgU1RSSU5HTElCX0NIQVIgKikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9BTElHTl9ET1dOKGNhbmRpZGF0ZSwgc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CisgICAgICAgICAgICAgICAgbiA9IHAgLSBzOworICAgICAgICAgICAgICAgIGlmICgqcCA9PSBjaCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorI2VuZGlmICAvKiBIQVZFX01FTVJDSFIgKi8KKyAgICBwID0gcyArIG47CisgICAgd2hpbGUgKHAgPiBzKSB7CisgICAgICAgIHAtLTsKKyAgICAgICAgaWYgKCpwID09IGNoKQorICAgICAgICAgICAgcmV0dXJuIChwIC0gcyk7CisgICAgfQorICAgIHJldHVybiAtMTsKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCkBAIC05OSwyNSArMTQ1LDExIEBACiAgICAgICAgIGlmIChtIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIC8qIHVzZSBzcGVjaWFsIGNhc2UgZm9yIDEtY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICAgICAgaWYgKG4gPiAxMCAmJiAobW9kZSA9PSBGQVNUX1NFQVJDSAotI2lmZGVmIEhBVkVfTUVNUkNIUgotICAgICAgICAgICAgICAgICAgICB8fCBtb2RlID09IEZBU1RfUlNFQVJDSAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICkpIHsKLSAgICAgICAgICAgIC8qIHVzZSBtZW1jaHIgaWYgd2UgY2FuIGNob29zZSBhIG5lZWRsZSB3aXRob3V0IHR3byBtYW55IGxpa2VseQotICAgICAgICAgICAgICAgZmFsc2UgcG9zaXRpdmVzICovCi0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5lZWRsZTsKLSAgICAgICAgICAgIG5lZWRsZSA9IHBbMF0gJiAweGZmOwotI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKLSAgICAgICAgICAgIC8qIElmIGxvb2tpbmcgZm9yIGEgbXVsdGlwbGUgb2YgMjU2LCB3ZSdkIGhhdmUgdG9vCi0gICAgICAgICAgICAgICBtYW55IGZhbHNlIHBvc2l0aXZlcyBsb29raW5nIGZvciB0aGUgJ1wwJyBieXRlIGluIFVDUzIKLSAgICAgICAgICAgICAgIGFuZCBVQ1M0IHJlcHJlc2VudGF0aW9ucy4gKi8KLSAgICAgICAgICAgIGlmIChuZWVkbGUgIT0gMCkKLSNlbmRpZgotICAgICAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpCi0gICAgICAgICAgICAgICAgICAgICAgIChzLCBuLCBwWzBdLCBuZWVkbGUsIG1vZGUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtb2RlID09IEZBU1RfQ09VTlQpIHsKKyAgICAgICAgaWYgKG1vZGUgPT0gRkFTVF9TRUFSQ0gpCisgICAgICAgICAgICByZXR1cm4gU1RSSU5HTElCKGZpbmRfY2hhcikocywgbiwgcFswXSk7CisgICAgICAgIGVsc2UgaWYgKG1vZGUgPT0gRkFTVF9SU0VBUkNIKQorICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihyZmluZF9jaGFyKShzLCBuLCBwWzBdKTsKKyAgICAgICAgZWxzZSB7ICAvKiBGQVNUX0NPVU5UICovCiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgICAgIGlmIChzW2ldID09IHBbMF0pIHsKICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKQEAgLTEyNSwxNCArMTU3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXhjb3VudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0gZWxzZSBpZiAobW9kZSA9PSBGQVNUX1NFQVJDSCkgewotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKLSAgICAgICAgICAgICAgICBpZiAoc1tpXSA9PSBwWzBdKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgfSBlbHNlIHsgICAgLyogRkFTVF9SU0VBUkNIICovCi0gICAgICAgICAgICBmb3IgKGkgPSBuIC0gMTsgaSA+IC0xOyBpLS0pCi0gICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAppbmRleCAxNDgxNWY2Li41MDliOTI5IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCkBAIC0xMTcsODUgKzExNywzIEBACiB9CiAKICN1bmRlZiBGT1JNQVRfQlVGRkVSX1NJWkUKLQotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0KLS8qCi1XcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgZW5zdXJlcyB0aGF0IHRoZQotZmlyc3QgYXJndW1lbnQgaXMgYSB1bmljb2RlIG9iamVjdC4KLQotTm90ZSB0aGF0IHdlIHJlY2VpdmUgYSBwb2ludGVyIHRvIHRoZSBwb2ludGVyIG9mIHRoZSBzdWJzdHJpbmcgb2JqZWN0LAotc28gd2hlbiB3ZSBjcmVhdGUgdGhhdCBvYmplY3QgaW4gdGhpcyBmdW5jdGlvbiB3ZSBkb24ndCBERUNSRUYgaXQsCi1iZWNhdXNlIGl0IGNvbnRpbnVlcyBsaXZpbmcgaW4gdGhlIGNhbGxlciBmdW5jdGlvbnMgKHRob3NlIGZ1bmN0aW9ucywKLWFmdGVyIGZpbmlzaGluZyB1c2luZyB0aGUgc3Vic3RyaW5nLCBtdXN0IERFQ1JFRiBpdCkuCi0qLwotCi1QeV9MT0NBTF9JTkxJTkUoaW50KQotU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSkoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKLXsKLSAgICBQeU9iamVjdCAqdG1wX3N1YnN0cmluZzsKLQotICAgIGlmKFNUUklOR0xJQihwYXJzZV9hcmdzX2ZpbmRzKShmdW5jdGlvbl9uYW1lLCBhcmdzLCAmdG1wX3N1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkgewotICAgICAgICB0bXBfc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QodG1wX3N1YnN0cmluZyk7Ci0gICAgICAgIGlmICghdG1wX3N1YnN0cmluZykKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAqc3Vic3RyaW5nID0gdG1wX3N1YnN0cmluZzsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi0jZWxzZSAvKiAhU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KLQotLyoKLVdyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBjaGVja3Mgd2hldGhlciB0aGUKLWZpcnN0IGFyZ3VtZW50IGlzIGFuIGludGVnZXIgaW4gcmFuZ2UoMCwgMjU2KS4KLQotSWYgdGhpcyBpcyB0aGUgY2FzZSwgd3JpdGVzIHRoZSBpbnRlZ2VyIHZhbHVlIHRvIHRoZSBieXRlIHBhcmFtZXRlcgotYW5kIHNldHMgc3Vib2JqIHRvIE5VTEwuIE90aGVyd2lzZSwgc2V0cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gc3Vib2JqCi1hbmQgZG9lc24ndCB0b3VjaCBieXRlLiBUaGUgb3RoZXIgcGFyYW1ldGVycyBhcmUgc2ltaWxhciB0byB0aG9zZSBvZgotc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKS4KLSovCi0KLVB5X0xPQ0FMX0lOTElORShpbnQpCi1TVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc19ieXRlKShjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLCBjaGFyICpieXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKLXsKLSAgICBQeU9iamVjdCAqdG1wX3N1Ym9iajsKLSAgICBQeV9zc2l6ZV90IGl2YWw7Ci0gICAgUHlPYmplY3QgKmVycjsKLQotICAgIGlmKCFTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kcykoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBpZiAoIVB5TnVtYmVyX0NoZWNrKHRtcF9zdWJvYmopKSB7Ci0gICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KLSAgICBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KHRtcF9zdWJvYmosIFB5RXhjX092ZXJmbG93RXJyb3IpOwotICAgIGlmIChpdmFsID09IC0xKSB7Ci0gICAgICAgIGVyciA9IFB5RXJyX09jY3VycmVkKCk7Ci0gICAgICAgIGlmIChlcnIgJiYgIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhlcnIsIFB5RXhjX092ZXJmbG93RXJyb3IpKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID4gMjU1KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgKnN1Ym9iaiA9IE5VTEw7Ci0gICAgKmJ5dGUgPSAoY2hhcilpdmFsOwotICAgIHJldHVybiAxOwotfQotCi0jZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaAppbmRleCBlYjNmZTg4Li44Y2NiYzMwIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oCkBAIC0xLDYgKzEsOCBAQAogLyogRmluZGluZyB0aGUgb3B0aW1hbCB3aWR0aCBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaW4gYSBidWZmZXIgKi8KIAotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisjaWYgIVNUUklOR0xJQl9JU19VTklDT0RFCisjIGVycm9yICJmaW5kX21heF9jaGFyLmggaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKKyNlbmRpZgogCiAvKiBNYXNrIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciBhIEMgJ2xvbmcnIGNvbnRhaW5zIGEKICAgIG5vbi1BU0NJSSwgVVRGOC1lbmNvZGVkIGNoYXIuICovCkBAIC0xMjksNSArMTMxLDQgQEAKICN1bmRlZiBNQVhfQ0hBUl9VQ1M0CiAKICNlbmRpZiAvKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMSAqLwotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaCBiL09iamVjdHMvc3RyaW5nbGliL2pvaW4uaAppbmRleCBjYmY4MWJlLi42ZjMxNGUxIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9qb2luLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvam9pbi5oCkBAIC0xLDYgKzEsNiBAQAogLyogc3RyaW5nbGliOiBieXRlcyBqb2luaW5nIGltcGxlbWVudGF0aW9uICovCiAKLSNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgIT0gMQorI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCiAjZXJyb3Igam9pbi5oIG9ubHkgY29tcGF0aWJsZSB3aXRoIGJ5dGUtd2lzZSBzdHJpbmdzCiAjZW5kaWYKIApAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYnVmczsgaSsrKSB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IG4gPSBidWZmZXJzW2ldLmxlbjsKICAgICAgICAgICAgIGNoYXIgKnEgPSBidWZmZXJzW2ldLmJ1ZjsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLCBxLCBuKTsKKyAgICAgICAgICAgIG1lbWNweShwLCBxLCBuKTsKICAgICAgICAgICAgIHAgKz0gbjsKICAgICAgICAgfQogICAgICAgICBnb3RvIGRvbmU7CkBAIC0xMTYsMTIgKzExNiwxMiBAQAogICAgICAgICBQeV9zc2l6ZV90IG47CiAgICAgICAgIGNoYXIgKnE7CiAgICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocCwgc2Vwc3RyLCBzZXBsZW4pOworICAgICAgICAgICAgbWVtY3B5KHAsIHNlcHN0ciwgc2VwbGVuKTsKICAgICAgICAgICAgIHAgKz0gc2VwbGVuOwogICAgICAgICB9CiAgICAgICAgIG4gPSBidWZmZXJzW2ldLmxlbjsKICAgICAgICAgcSA9IGJ1ZmZlcnNbaV0uYnVmOwotICAgICAgICBQeV9NRU1DUFkocCwgcSwgbik7CisgICAgICAgIG1lbWNweShwLCBxLCBuKTsKICAgICAgICAgcCArPSBuOwogICAgIH0KICAgICBnb3RvIGRvbmU7CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggYi9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKaW5kZXggNmUyZjA3My4uZGY1MDFlZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaApAQCAtMiw4ICsyLDggQEAKIAogI2luY2x1ZGUgPGxvY2FsZS5oPgogCi0jaWZuZGVmIFNUUklOR0xJQl9JU19VTklDT0RFCi0jICAgZXJyb3IgImxvY2FsZXV0aWwgaXMgc3BlY2lmaWMgdG8gVW5pY29kZSIKKyNpZiAhU1RSSU5HTElCX0lTX1VOSUNPREUKKyMgICBlcnJvciAibG9jYWxldXRpbC5oIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmggYi9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaAppbmRleCBiNTU5YjUzLi5hMzE0NTcyIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi90cmFuc21vZ3JpZnkuaApAQCAtMSwxNCArMSwyMSBAQAotLyogTk9URTogdGhpcyBBUEkgaXMgLU9OTFktIGZvciB1c2Ugd2l0aCBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXIgc3RyaW5ncy4gKi8KLS8qIERvIG5vdCB1c2UgaXQgd2l0aCBVbmljb2RlLiAqLworI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisjIGVycm9yICJ0cmFuc21vZ3JpZnkuaCBvbmx5IGNvbXBhdGlibGUgd2l0aCBieXRlLXdpc2Ugc3RyaW5ncyIKKyNlbmRpZgogCiAvKiB0aGUgbW9yZSBjb21wbGljYXRlZCBtZXRob2RzLiAgcGFydHMgb2YgdGhlc2Ugc2hvdWxkIGJlIHB1bGxlZCBvdXQgaW50byB0aGUKICAgIHNoYXJlZCBjb2RlIGluIGJ5dGVzX21ldGhvZHMuYyB0byBjdXQgZG93biBvbiBkdXBsaWNhdGUgY29kZSBibG9hdC4gICovCiAKLVB5RG9jX1NUUlZBUihleHBhbmR0YWJzX19kb2NfXywKLSJCLmV4cGFuZHRhYnModGFic2l6ZT04KSAtPiBjb3B5IG9mIEJcblwKLVxuXAotUmV0dXJuIGEgY29weSBvZiBCIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgZXhwYW5kZWQgdXNpbmcgc3BhY2VzLlxuXAotSWYgdGFic2l6ZSBpcyBub3QgZ2l2ZW4sIGEgdGFiIHNpemUgb2YgOCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuIik7CitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKK3JldHVybl9zZWxmKFB5T2JqZWN0ICpzZWxmKQoreworI2lmICFTVFJJTkdMSUJfTVVUQUJMRQorICAgIGlmIChTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gc2VsZjsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKK30KIAogc3RhdGljIFB5T2JqZWN0Kgogc3RyaW5nbGliX2V4cGFuZHRhYnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKQEAgLTgzLDcgKzkwLDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitzdGF0aWMgaW5saW5lIFB5T2JqZWN0ICoKIHBhZChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBsZWZ0LCBQeV9zc2l6ZV90IHJpZ2h0LCBjaGFyIGZpbGwpCiB7CiAgICAgUHlPYmplY3QgKnU7CkBAIC05MywzOSArMTAwLDI1IEBACiAgICAgaWYgKHJpZ2h0IDwgMCkKICAgICAgICAgcmlnaHQgPSAwOwogCi0gICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwICYmIFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOwotI2VuZGlmIC8qIFNUUklOR0xJQl9NVVRBQkxFICovCisgICAgaWYgKGxlZnQgPT0gMCAmJiByaWdodCA9PSAwKSB7CisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKICAgICB9CiAKLSAgICB1ID0gU1RSSU5HTElCX05FVyhOVUxMLAotCQkJCSAgIGxlZnQgKyBTVFJJTkdMSUJfTEVOKHNlbGYpICsgcmlnaHQpOworICAgIHUgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIGxlZnQgKyBTVFJJTkdMSUJfTEVOKHNlbGYpICsgcmlnaHQpOwogICAgIGlmICh1KSB7CiAgICAgICAgIGlmIChsZWZ0KQogICAgICAgICAgICAgbWVtc2V0KFNUUklOR0xJQl9TVFIodSksIGZpbGwsIGxlZnQpOwotICAgICAgICBQeV9NRU1DUFkoU1RSSU5HTElCX1NUUih1KSArIGxlZnQsCi0JICAgICAgIFNUUklOR0xJQl9TVFIoc2VsZiksCi0JICAgICAgIFNUUklOR0xJQl9MRU4oc2VsZikpOworICAgICAgICBtZW1jcHkoU1RSSU5HTElCX1NUUih1KSArIGxlZnQsCisgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAorICAgICAgICAgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSk7CiAgICAgICAgIGlmIChyaWdodCkKICAgICAgICAgICAgIG1lbXNldChTVFJJTkdMSUJfU1RSKHUpICsgbGVmdCArIFNUUklOR0xJQl9MRU4oc2VsZiksCi0JCSAgIGZpbGwsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICBmaWxsLCByaWdodCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHU7CiB9CiAKLVB5RG9jX1NUUlZBUihsanVzdF9fZG9jX18sCi0iQi5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUmV0dXJuIEIgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCi0iZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3RyaW5nbGliX2xqdXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTEzNSwyNyArMTI4LDE0IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJufGM6bGp1c3QiLCAmd2lkdGgsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGggJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgcmV0dXJuIHBhZChzZWxmLCAwLCB3aWR0aCAtIFNUUklOR0xJQl9MRU4oc2VsZiksIGZpbGxjaGFyKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmp1c3RfX2RvY19fLAotIkIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgotIlxuIgotIlJldHVybiBCIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguIFBhZGRpbmcgaXNcbiIKLSJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkiKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIHN0cmluZ2xpYl9yanVzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xNjUsMjcgKzE0NSwxNCBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxjOnJqdXN0IiwgJndpZHRoLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoICYmIFNUUklOR0xJQl9DSEVDS19FWEFDVChzZWxmKSkgewotI2lmIFNUUklOR0xJQl9NVVRBQkxFCi0gICAgICAgIC8qIFdlJ3JlIGRlZmluZWQgYXMgcmV0dXJuaW5nIGEgY29weTsgIElmIHRoZSBvYmplY3QgaXMgbXV0YWJsZQotICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0jZWxzZQotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotI2VuZGlmCisgICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGgpIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwogICAgIH0KIAogICAgIHJldHVybiBwYWQoc2VsZiwgd2lkdGggLSBTVFJJTkdMSUJfTEVOKHNlbGYpLCAwLCBmaWxsY2hhcik7CiB9CiAKIAotUHlEb2NfU1RSVkFSKGNlbnRlcl9fZG9jX18sCi0iQi5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pIC0+IGNvcHkgb2YgQlxuIgotIlxuIgotIlJldHVybiBCIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gIFBhZGRpbmcgaXNcbiIKLSJkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfY2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5NiwxNSArMTYzLDggQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58YzpjZW50ZXIiLCAmd2lkdGgsICZmaWxsY2hhcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFNUUklOR0xJQl9MRU4oc2VsZikgPj0gd2lkdGggJiYgU1RSSU5HTElCX0NIRUNLX0VYQUNUKHNlbGYpKSB7Ci0jaWYgU1RSSU5HTElCX01VVEFCTEUKLSAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAqIHRoYXQgbWVhbnMgd2UgbXVzdCBtYWtlIGFuIGlkZW50aWNhbCBjb3B5LiAqLwotICAgICAgICByZXR1cm4gU1RSSU5HTElCX05FVyhTVFJJTkdMSUJfU1RSKHNlbGYpLCBTVFJJTkdMSUJfTEVOKHNlbGYpKTsKLSNlbHNlCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0jZW5kaWYKKyAgICBpZiAoU1RSSU5HTElCX0xFTihzZWxmKSA+PSB3aWR0aCkgeworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgbWFyZyA9IHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKTsKQEAgLTIxMywxMiArMTczLDYgQEAKICAgICByZXR1cm4gcGFkKHNlbGYsIGxlZnQsIG1hcmcgLSBsZWZ0LCBmaWxsY2hhcik7CiB9CiAKLVB5RG9jX1NUUlZBUih6ZmlsbF9fZG9jX18sCi0iQi56ZmlsbCh3aWR0aCkgLT4gY29weSBvZiBCXG4iCi0iXG4iCi0iUGFkIGEgbnVtZXJpYyBzdHJpbmcgQiB3aXRoIHplcm9zIG9uIHRoZSBsZWZ0LCB0byBmaWxsIGEgZmllbGRcbiIKLSJvZiB0aGUgc3BlY2lmaWVkIHdpZHRoLiAgQiBpcyBuZXZlciB0cnVuY2F0ZWQuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBzdHJpbmdsaWJfemZpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjMxLDIxICsxODUsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID49IHdpZHRoKSB7Ci0gICAgICAgIGlmIChTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1Qoc2VsZikpIHsKLSNpZiBTVFJJTkdMSUJfTVVUQUJMRQotICAgICAgICAgICAgLyogV2UncmUgZGVmaW5lZCBhcyByZXR1cm5pbmcgYSBjb3B5OyAgSWYgdGhlIG9iamVjdCBpcyBtdXRhYmxlCi0gICAgICAgICAgICAgKiB0aGF0IG1lYW5zIHdlIG11c3QgbWFrZSBhbiBpZGVudGljYWwgY29weS4gKi8KLSAgICAgICAgICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKFNUUklOR0xJQl9TVFIoc2VsZiksIFNUUklOR0xJQl9MRU4oc2VsZikpOwotI2Vsc2UKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoCi0gICAgICAgICAgICAgICAgU1RSSU5HTElCX1NUUihzZWxmKSwKLSAgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpCi0gICAgICAgICAgICApOworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CiAgICAgfQogCiAgICAgZmlsbCA9IHdpZHRoIC0gU1RSSU5HTElCX0xFTihzZWxmKTsKQEAgLTI2Miw1ICsyMDIsNTAwIEBACiAgICAgICAgIHBbZmlsbF0gPSAnMCc7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHM7CisgICAgcmV0dXJuIHM7CiB9CisKKworLyogZmluZCBhbmQgY291bnQgY2hhcmFjdGVycyBhbmQgc3Vic3RyaW5ncyAqLworCisjZGVmaW5lIGZpbmRjaGFyKHRhcmdldCwgdGFyZ2V0X2xlbiwgYykgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAoKGNoYXIgKiltZW1jaHIoKGNvbnN0IHZvaWQgKikodGFyZ2V0KSwgYywgdGFyZ2V0X2xlbikpCisKKworc3RhdGljIFB5X3NzaXplX3QKK2NvdW50Y2hhcihjb25zdCBjaGFyICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0X2xlbiwgY2hhciBjLAorICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgUHlfc3NpemVfdCBjb3VudCA9IDA7CisgICAgY29uc3QgY2hhciAqc3RhcnQgPSB0YXJnZXQ7CisgICAgY29uc3QgY2hhciAqZW5kID0gdGFyZ2V0ICsgdGFyZ2V0X2xlbjsKKworICAgIHdoaWxlICgoc3RhcnQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGMpKSAhPSBOVUxMKSB7CisgICAgICAgIGNvdW50Kys7CisgICAgICAgIGlmIChjb3VudCA+PSBtYXhjb3VudCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBzdGFydCArPSAxOworICAgIH0KKyAgICByZXR1cm4gY291bnQ7Cit9CisKKworLyogQWxnb3JpdGhtcyBmb3IgZGlmZmVyZW50IGNhc2VzIG9mIHN0cmluZyByZXBsYWNlbWVudCAqLworCisvKiBsZW4oc2VsZik+PTEsIGZyb209IiIsIGxlbih0byk+PTEsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2VfaW50ZXJsZWF2ZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudCwgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7CisgICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KKyAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pIHsKKyAgICAgICAgY291bnQgPSBtYXhjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCisgICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOworICAgIH0KKworICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLworICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2UgYnl0ZXMgYXJlIHRvbyBsb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsKKyAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHJlc3VsdF9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgaWYgKHRvX2xlbiA+IDEpIHsKKyAgICAgICAgLyogTGF5IHRoZSBmaXJzdCBvbmUgZG93biAoZ3VhcmFudGVlZCB0aGlzIHdpbGwgb2NjdXIpICovCisgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICBjb3VudCAtPSAxOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKKyAgICAgICAgICAgIG1lbWNweShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0X3NbMF0gPSB0b19zWzBdOworICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgIGNvdW50IC09IDE7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICAqcmVzdWx0X3MrKyA9ICpzZWxmX3MrKzsKKyAgICAgICAgICAgIHJlc3VsdF9zWzBdID0gdG9fc1swXTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENvcHkgdGhlIHJlc3Qgb2YgdGhlIG9yaWdpbmFsIHN0cmluZyAqLworICAgIG1lbWNweShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbiAtIGkpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogU3BlY2lhbCBjYXNlIGZvciBkZWxldGluZyBhIHNpbmdsZSBjaGFyYWN0ZXIgKi8KKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCB0bz0iIiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcihQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQ7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHNlbGZfbGVuID0gU1RSSU5HTElCX0xFTihzZWxmKTsKKyAgICBzZWxmX3MgPSBTVFJJTkdMSUJfU1RSKHNlbGYpOworCisgICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7CisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiAtIGNvdW50OyAgLyogZnJvbV9sZW4gPT0gMSAqLworICAgIGFzc2VydChyZXN1bHRfbGVuPj0wKTsKKworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIHN0YXJ0ID0gc2VsZl9zOworICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOworICAgIHdoaWxlIChjb3VudC0tID4gMCkgeworICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZCAtIHN0YXJ0LCBmcm9tX2MpOworICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1lbWNweShyZXN1bHRfcywgc3RhcnQsIG5leHQgLSBzdGFydCk7CisgICAgICAgIHJlc3VsdF9zICs9IChuZXh0IC0gc3RhcnQpOworICAgICAgICBzdGFydCA9IG5leHQgKyAxOworICAgIH0KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgdG89IiIsIG1heGNvdW50Pj0xICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKworICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7CisKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAvKiBubyBtYXRjaGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSAoY291bnQgKiBmcm9tX2xlbik7CisgICAgYXNzZXJ0IChyZXN1bHRfbGVuPj0wKTsKKworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgcmVzdWx0X2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKworICAgIHN0YXJ0ID0gc2VsZl9zOworICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOworICAgIHdoaWxlIChjb3VudC0tID4gMCkgeworICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKKworICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworCisgICAgICAgIHJlc3VsdF9zICs9IChuZXh0IC0gc3RhcnQpOworICAgICAgICBzdGFydCA9IG5leHQgKyBmcm9tX2xlbjsKKyAgICB9CisgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgZW5kIC0gc3RhcnQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPT0xLCBtYXhjb3VudD49MSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3N0cmluZ2xpYl9yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBjaGFyIHRvX2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zLCAqc3RhcnQsICpuZXh0OworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW47CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgbmV4dCA9IGZpbmRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYyk7CisKKyAgICBpZiAobmV4dCA9PSBOVUxMKSB7CisgICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLworICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgc2VsZl9sZW4pOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X3MgPSBTVFJJTkdMSUJfU1RSKHJlc3VsdCk7CisgICAgbWVtY3B5KHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKKworICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCisgICAgc3RhcnQgPSAgcmVzdWx0X3MgKyAobmV4dCAtIHNlbGZfcyk7CisgICAgKnN0YXJ0ID0gdG9fYzsKKyAgICBzdGFydCsrOworICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47CisKKyAgICB3aGlsZSAoLS1tYXhjb3VudCA+IDApIHsKKyAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQgLSBzdGFydCwgZnJvbV9jKTsKKyAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAqbmV4dCA9IHRvX2M7CisgICAgICAgIHN0YXJ0ID0gbmV4dCArIDE7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PWxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0OworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIG9mZnNldDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgLyogVGhlIHJlc3VsdCBieXRlcyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KKworICAgIHNlbGZfcyA9IFNUUklOR0xJQl9TVFIoc2VsZik7CisgICAgc2VsZl9sZW4gPSBTVFJJTkdMSUJfTEVOKHNlbGYpOworCisgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc2VsZl9zLCBzZWxmX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKKyAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCBzZWxmX2xlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXN1bHRfcyA9IFNUUklOR0xJQl9TVFIocmVzdWx0KTsKKyAgICBtZW1jcHkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4pOworCisgICAgLyogY2hhbmdlIGV2ZXJ5dGhpbmcgaW4tcGxhY2UsIHN0YXJ0aW5nIHdpdGggdGhpcyBvbmUgKi8KKyAgICBzdGFydCA9ICByZXN1bHRfcyArIG9mZnNldDsKKyAgICBtZW1jcHkoc3RhcnQsIHRvX3MsIGZyb21fbGVuKTsKKyAgICBzdGFydCArPSBmcm9tX2xlbjsKKyAgICBlbmQgPSByZXN1bHRfcyArIHNlbGZfbGVuOworCisgICAgd2hpbGUgKCAtLW1heGNvdW50ID4gMCkgeworICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1lbWNweShzdGFydCArIG9mZnNldCwgdG9fcywgZnJvbV9sZW4pOworICAgICAgICBzdGFydCArPSBvZmZzZXQgKyBmcm9tX2xlbjsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCit7CisgICAgY29uc3QgY2hhciAqc2VsZl9zLCAqc3RhcnQsICpuZXh0LCAqZW5kOworICAgIGNoYXIgKnJlc3VsdF9zOworICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47CisgICAgUHlfc3NpemVfdCBjb3VudDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiB1c2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcsIGhlbmNlIHRoZSAiLTEiICovCisgICAgLyogICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tMSkgICovCisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIDEpOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kIC0gc3RhcnQsIGZyb21fYyk7CisgICAgICAgIGlmIChuZXh0ID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgeworICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCArPSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQgLSBzdGFydCk7CisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCA9IG5leHQgKyAxOworICAgICAgICB9CisgICAgfQorICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIGJ5dGVzICovCisgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgZW5kIC0gc3RhcnQpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaW5nbGliX3JlcGxhY2Vfc3Vic3RyaW5nKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIGNvbnN0IGNoYXIgKnNlbGZfcywgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKKyAgICBjaGFyICpyZXN1bHRfczsKKyAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOworICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgc2VsZl9zID0gU1RSSU5HTElCX1NUUihzZWxmKTsKKyAgICBzZWxmX2xlbiA9IFNUUklOR0xJQl9MRU4oc2VsZik7CisKKyAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOworCisgICAgaWYgKGNvdW50ID09IDApIHsKKyAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLworICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7CisgICAgfQorCisgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCisgICAgLyogICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLWZyb21fbGVuKSAqLworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gLSBmcm9tX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuIC0gZnJvbV9sZW4pOworCisgICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCByZXN1bHRfbGVuKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdF9zID0gU1RSSU5HTElCX1NUUihyZXN1bHQpOworCisgICAgc3RhcnQgPSBzZWxmX3M7CisgICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47CisgICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7CisgICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gLTEpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbmV4dCA9IHN0YXJ0ICsgb2Zmc2V0OworICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgeworICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCisgICAgICAgICAgICBtZW1jcHkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7CisgICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47CisgICAgICAgICAgICBzdGFydCArPSBmcm9tX2xlbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCBzdGFydCwgbmV4dCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0IC0gc3RhcnQpOworICAgICAgICAgICAgbWVtY3B5KHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOworICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOworICAgICAgICAgICAgc3RhcnQgPSBuZXh0ICsgZnJvbV9sZW47CisgICAgICAgIH0KKyAgICB9CisgICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KKyAgICBtZW1jcHkocmVzdWx0X3MsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpbmdsaWJfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBpZiAobWF4Y291bnQgPCAwKSB7CisgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CisgICAgfSBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IFNUUklOR0xJQl9MRU4oc2VsZikgPT0gMCkgeworICAgICAgICAvKiBub3RoaW5nIHRvIGRvOyByZXR1cm4gdGhlIG9yaWdpbmFsIGJ5dGVzICovCisgICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKKyAgICB9CisKKyAgICAvKiBIYW5kbGUgemVyby1sZW5ndGggc3BlY2lhbCBjYXNlcyAqLworICAgIGlmIChmcm9tX2xlbiA9PSAwKSB7CisgICAgICAgIGlmICh0b19sZW4gPT0gMCkgeworICAgICAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLworICAgICAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgICAgICB9CisgICAgICAgIC8qIGluc2VydCB0aGUgJ3RvJyBieXRlcyBldmVyeXdoZXJlLiAgICAqLworICAgICAgICAvKiAgICA+Pj4gYiJQeXRob24iLnJlcGxhY2UoYiIiLCBiIi4iKSAgKi8KKyAgICAgICAgLyogICAgYicuUC55LnQuaC5vLm4uJyAgICAgICAgICAgICAgICAgICovCisgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9pbnRlcmxlYXZlKHNlbGYsIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOworICAgIH0KKworICAgIC8qIEV4Y2VwdCBmb3IgYiIiLnJlcGxhY2UoYiIiLCBiIkEiKSA9PSBiIkEiIHRoZXJlIGlzIG5vIHdheSBiZXlvbmQgdGhpcyAqLworICAgIC8qIHBvaW50IGZvciBhbiBlbXB0eSBzZWxmIGJ5dGVzIHRvIGdlbmVyYXRlIGEgbm9uLWVtcHR5IGJ5dGVzICovCisgICAgLyogU3BlY2lhbCBjYXNlIHNvIHRoZSByZW1haW5pbmcgY29kZSBhbHdheXMgZ2V0cyBhIG5vbi1lbXB0eSBieXRlcyAqLworICAgIGlmIChTVFJJTkdMSUJfTEVOKHNlbGYpID09IDApIHsKKyAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOworICAgIH0KKworICAgIGlmICh0b19sZW4gPT0gMCkgeworICAgICAgICAvKiBkZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mICdmcm9tJyBieXRlcyAqLworICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zaW5nbGVfY2hhcmFjdGVyKAorICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fc1swXSwgbWF4Y291bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlX2RlbGV0ZV9zdWJzdHJpbmcoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgbWF4Y291bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyogSGFuZGxlIHNwZWNpYWwgY2FzZSB3aGVyZSBib3RoIGJ5dGVzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICovCisKKyAgICBpZiAoZnJvbV9sZW4gPT0gdG9fbGVuKSB7CisgICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCBmcm9tX3NbMF0sIHRvX3NbMF0sIG1heGNvdW50KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBPdGhlcndpc2UgdXNlIHRoZSBtb3JlIGdlbmVyaWMgYWxnb3JpdGhtcyAqLworICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7CisgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyKAorICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBsZW4oJ2Zyb20nKT49MiwgbGVuKCd0bycpPj0xICovCisgICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmVwbGFjZV9zdWJzdHJpbmcoCisgICAgICAgICAgICBzZWxmLCBmcm9tX3MsIGZyb21fbGVuLCB0b19zLCB0b19sZW4sIG1heGNvdW50KTsKKyAgICB9Cit9CisKKyN1bmRlZiBmaW5kY2hhcgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaCBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKaW5kZXggYmUwOWI1Zi4uMTRmYTI4ZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZV9mb3JtYXQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc3RyLT5zdHIsIHN0ci0+c3RhcnQsIHN0ci0+ZW5kKTsKIH0KIAotLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+c3RyIGlzIE5VTEwsIHJldHVybiBOb25lICovCisvKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIGEgbmV3IGVtcHR5IHN0cmluZyAqLwogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCiBTdWJTdHJpbmdfbmV3X29iamVjdF9vcl9lbXB0eShTdWJTdHJpbmcgKnN0cikKIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RydWN0c2VxLmMgYi9PYmplY3RzL3N0cnVjdHNlcS5jCmluZGV4IDY2NDM0NGIuLmUzMTVjYmEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RydWN0c2VxLmMKKysrIGIvT2JqZWN0cy9zdHJ1Y3RzZXEuYwpAQCAtNCw5ICs0LDkgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAotc3RhdGljIGNoYXIgdmlzaWJsZV9sZW5ndGhfa2V5W10gPSAibl9zZXF1ZW5jZV9maWVsZHMiOwotc3RhdGljIGNoYXIgcmVhbF9sZW5ndGhfa2V5W10gPSAibl9maWVsZHMiOwotc3RhdGljIGNoYXIgdW5uYW1lZF9maWVsZHNfa2V5W10gPSAibl91bm5hbWVkX2ZpZWxkcyI7CitzdGF0aWMgY29uc3QgY2hhciB2aXNpYmxlX2xlbmd0aF9rZXlbXSA9ICJuX3NlcXVlbmNlX2ZpZWxkcyI7CitzdGF0aWMgY29uc3QgY2hhciByZWFsX2xlbmd0aF9rZXlbXSA9ICJuX2ZpZWxkcyI7CitzdGF0aWMgY29uc3QgY2hhciB1bm5hbWVkX2ZpZWxkc19rZXlbXSA9ICJuX3VubmFtZWRfZmllbGRzIjsKIAogLyogRmllbGRzIHdpdGggdGhpcyBuYW1lIGhhdmUgb25seSBhIGZpZWxkIGluZGV4LCBub3QgYSBmaWVsZCBuYW1lLgogICAgVGhleSBhcmUgb25seSBhbGxvd2VkIGZvciBpbmRpY2VzIDwgbl92aXNpYmxlX2ZpZWxkcy4gKi8KQEAgLTE2LDE0ICsxNiwxNCBAQAogX1B5X0lERU5USUZJRVIobl91bm5hbWVkX2ZpZWxkcyk7CiAKICNkZWZpbmUgVklTSUJMRV9TSVpFKG9wKSBQeV9TSVpFKG9wKQotI2RlZmluZSBWSVNJQkxFX1NJWkVfVFAodHApIFB5TG9uZ19Bc0xvbmcoIFwKKyNkZWZpbmUgVklTSUJMRV9TSVpFX1RQKHRwKSBQeUxvbmdfQXNTc2l6ZV90KCBcCiAgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl9zZXF1ZW5jZV9maWVsZHMpKQogCi0jZGVmaW5lIFJFQUxfU0laRV9UUCh0cCkgUHlMb25nX0FzTG9uZyggXAorI2RlZmluZSBSRUFMX1NJWkVfVFAodHApIFB5TG9uZ19Bc1NzaXplX3QoIFwKICAgICAgICAgICAgICAgICAgICAgICBfUHlEaWN0X0dldEl0ZW1JZCgodHApLT50cF9kaWN0LCAmUHlJZF9uX2ZpZWxkcykpCiAjZGVmaW5lIFJFQUxfU0laRShvcCkgUkVBTF9TSVpFX1RQKFB5X1RZUEUob3ApKQogCi0jZGVmaW5lIFVOTkFNRURfRklFTERTX1RQKHRwKSBQeUxvbmdfQXNMb25nKCBcCisjZGVmaW5lIFVOTkFNRURfRklFTERTX1RQKHRwKSBQeUxvbmdfQXNTc2l6ZV90KCBcCiAgICAgICAgICAgICAgICAgICAgICAgX1B5RGljdF9HZXRJdGVtSWQoKHRwKS0+dHBfZGljdCwgJlB5SWRfbl91bm5hbWVkX2ZpZWxkcykpCiAjZGVmaW5lIFVOTkFNRURfRklFTERTKG9wKSBVTk5BTUVEX0ZJRUxEU19UUChQeV9UWVBFKG9wKSkKIApAQCAtMTY0LDcgKzE2NCw4IEBACiAjZGVmaW5lIFRZUEVfTUFYU0laRSAxMDAKIAogICAgIFB5VHlwZU9iamVjdCAqdHlwID0gUHlfVFlQRShvYmopOwotICAgIGludCBpLCByZW1vdmVsYXN0ID0gMDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IHJlbW92ZWxhc3QgPSAwOwogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIGNoYXIgYnVmW1JFUFJfQlVGRkVSX1NJWkVdOwogICAgIGNoYXIgKmVuZG9mYnVmLCAqcGJ1ZiA9IGJ1ZjsKQEAgLTIzNiw4ICsyMzcsNyBAQAogICAgIFB5T2JqZWN0KiB0dXAgPSBOVUxMOwogICAgIFB5T2JqZWN0KiBkaWN0ID0gTlVMTDsKICAgICBQeU9iamVjdCogcmVzdWx0OwotICAgIFB5X3NzaXplX3Qgbl9maWVsZHMsIG5fdmlzaWJsZV9maWVsZHMsIG5fdW5uYW1lZF9maWVsZHM7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBuX2ZpZWxkcywgbl92aXNpYmxlX2ZpZWxkcywgbl91bm5hbWVkX2ZpZWxkcywgaTsKIAogICAgIG5fZmllbGRzID0gUkVBTF9TSVpFKHNlbGYpOwogICAgIG5fdmlzaWJsZV9maWVsZHMgPSBWSVNJQkxFX1NJWkUoc2VsZik7CkBAIC0zMjUsNyArMzI1LDcgQEAKIHsKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU1lbWJlckRlZiogbWVtYmVyczsKLSAgICBpbnQgbl9tZW1iZXJzLCBuX3VubmFtZWRfbWVtYmVycywgaSwgazsKKyAgICBQeV9zc2l6ZV90IG5fbWVtYmVycywgbl91bm5hbWVkX21lbWJlcnMsIGksIGs7CiAgICAgUHlPYmplY3QgKnY7CiAKICNpZmRlZiBQeV9UUkFDRV9SRUZTCkBAIC0zNzMsOSArMzczLDkgQEAKICAgICBQeV9JTkNSRUYodHlwZSk7CiAKICAgICBkaWN0ID0gdHlwZS0+dHBfZGljdDsKLSNkZWZpbmUgU0VUX0RJQ1RfRlJPTV9JTlQoa2V5LCB2YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFNFVF9ESUNUX0ZST01fU0laRShrZXksIHZhbHVlKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgdmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHYgPSBQeUxvbmdfRnJvbVNzaXplX3QodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBpZiAodiA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCBrZXksIHYpIDwgMCkgeyAgICAgICAgICAgXApAQCAtMzg1LDkgKzM4NSw5IEBACiAgICAgICAgIFB5X0RFQ1JFRih2KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKLSAgICBTRVRfRElDVF9GUk9NX0lOVCh2aXNpYmxlX2xlbmd0aF9rZXksIGRlc2MtPm5faW5fc2VxdWVuY2UpOwotICAgIFNFVF9ESUNUX0ZST01fSU5UKHJlYWxfbGVuZ3RoX2tleSwgbl9tZW1iZXJzKTsKLSAgICBTRVRfRElDVF9GUk9NX0lOVCh1bm5hbWVkX2ZpZWxkc19rZXksIG5fdW5uYW1lZF9tZW1iZXJzKTsKKyAgICBTRVRfRElDVF9GUk9NX1NJWkUodmlzaWJsZV9sZW5ndGhfa2V5LCBkZXNjLT5uX2luX3NlcXVlbmNlKTsKKyAgICBTRVRfRElDVF9GUk9NX1NJWkUocmVhbF9sZW5ndGhfa2V5LCBuX21lbWJlcnMpOworICAgIFNFVF9ESUNUX0ZST01fU0laRSh1bm5hbWVkX2ZpZWxkc19rZXksIG5fdW5uYW1lZF9tZW1iZXJzKTsKIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90dXBsZW9iamVjdC5jIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCmluZGV4IDc5MjBmZWMuLmMwZmY0OTkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHVwbGVvYmplY3QuYworKysgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKQEAgLTM2LDYgKzM2LDE2IEBACiBzdGF0aWMgdm9pZAogc2hvd190cmFjayh2b2lkKQogeworICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKnZhbHVlOworICAgIF9QeV9JREVOVElGSUVSKHNob3dhbGxvY2NvdW50KTsKKworICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICBpZiAoeG9wdGlvbnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIHZhbHVlID0gX1B5RGljdF9HZXRJdGVtSWQoeG9wdGlvbnMsICZQeUlkX3Nob3dhbGxvY2NvdW50KTsKKyAgICBpZiAodmFsdWUgIT0gUHlfVHJ1ZSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgZnByaW50ZihzdGRlcnIsICJUdXBsZXMgY3JlYXRlZDogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKICAgICAgICAgY291bnRfdHJhY2tlZCArIGNvdW50X3VudHJhY2tlZCk7CiAgICAgZnByaW50ZihzdGRlcnIsICJUdXBsZXMgdHJhY2tlZCBieSB0aGUgR0M6ICUiIFBZX0ZPUk1BVF9TSVpFX1QKQEAgLTE0OSw3ICsxNTksNiBAQAogaW50CiBQeVR1cGxlX1NldEl0ZW0oUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICpuZXdpdGVtKQogewotICAgIFB5T2JqZWN0ICpvbGRpdGVtOwogICAgIFB5T2JqZWN0ICoqcDsKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2sob3ApIHx8IG9wLT5vYl9yZWZjbnQgIT0gMSkgewogICAgICAgICBQeV9YREVDUkVGKG5ld2l0ZW0pOwpAQCAtMTYzLDkgKzE3Miw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgcCA9ICgoUHlUdXBsZU9iamVjdCAqKW9wKSAtPiBvYl9pdGVtICsgaTsKLSAgICBvbGRpdGVtID0gKnA7Ci0gICAgKnAgPSBuZXdpdGVtOwotICAgIFB5X1hERUNSRUYob2xkaXRlbSk7CisgICAgUHlfWFNFVFJFRigqcCwgbmV3aXRlbSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQ0Niw5ICs0NTMsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAjZGVmaW5lIGIgKChQeVR1cGxlT2JqZWN0ICopYmIpCi0gICAgc2l6ZSA9IFB5X1NJWkUoYSkgKyBQeV9TSVpFKGIpOwotICAgIGlmIChzaXplIDwgMCkKKyAgICBpZiAoUHlfU0laRShhKSA+IFBZX1NTSVpFX1RfTUFYIC0gUHlfU0laRShiKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgc2l6ZSA9IFB5X1NJWkUoYSkgKyBQeV9TSVpFKGIpOwogICAgIG5wID0gKFB5VHVwbGVPYmplY3QgKikgUHlUdXBsZV9OZXcoc2l6ZSk7CiAgICAgaWYgKG5wID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9PYmplY3RzL3R5cGVvYmplY3QuYyBiL09iamVjdHMvdHlwZW9iamVjdC5jCmluZGV4IGU5Mzg0YWIuLmJmYmViNDAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHlwZW9iamVjdC5jCkBAIC01MywxMCArNTMsMTIgQEAKIF9QeV9JREVOVElGSUVSKF9fZ2V0YXR0cmlidXRlX18pOwogX1B5X0lERU5USUZJRVIoX19nZXRpdGVtX18pOwogX1B5X0lERU5USUZJRVIoX19oYXNoX18pOworX1B5X0lERU5USUZJRVIoX19pbml0X3N1YmNsYXNzX18pOwogX1B5X0lERU5USUZJRVIoX19sZW5fXyk7CiBfUHlfSURFTlRJRklFUihfX21vZHVsZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworX1B5X0lERU5USUZJRVIoX19zZXRfbmFtZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fc2V0aXRlbV9fKTsKIF9QeV9JREVOVElGSUVSKGJ1aWx0aW5zKTsKIApAQCAtNDUyLDI3ICs0NTQsMzAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0eXBlX21vZHVsZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgY2hhciAqczsKKyAgICBQeU9iamVjdCAqbW9kOwogCiAgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgewotICAgICAgICBQeU9iamVjdCAqbW9kID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXyk7Ci0gICAgICAgIGlmICghbW9kKSB7CisgICAgICAgIG1vZCA9IF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18pOworICAgICAgICBpZiAobW9kID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgIl9fbW9kdWxlX18iKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlfWElOQ1JFRihtb2QpOwotICAgICAgICByZXR1cm4gbW9kOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpuYW1lOwotICAgICAgICBzID0gc3RycmNocih0eXBlLT50cF9uYW1lLCAnLicpOwotICAgICAgICBpZiAocyAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IHN0cnJjaHIodHlwZS0+dHBfbmFtZSwgJy4nKTsKKyAgICAgICAgaWYgKHMgIT0gTlVMTCkgeworICAgICAgICAgICAgbW9kID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAogICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUsIChQeV9zc2l6ZV90KShzIC0gdHlwZS0+dHBfbmFtZSkpOwotICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfYnVpbHRpbnMpOwotICAgICAgICBQeV9YSU5DUkVGKG5hbWUpOwotICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgICAgIGlmIChtb2QgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZSgmbW9kKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vZCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2J1aWx0aW5zKTsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYobW9kKTsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gbW9kOwogfQogCiBzdGF0aWMgaW50CkBAIC01MDAsNyArNTA1LDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbWVzc2FnZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YSU5DUkVGKG1vZCk7CisgICAgUHlfSU5DUkVGKG1vZCk7CiAgICAgcmV0dXJuIG1vZDsKIH0KIApAQCAtNTQ3LDggKzU1Miw4IEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmJlc3RfYmFzZShQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgbXJvX2ludGVybmFsKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKik7Ci1QeV9MT0NBTF9JTkxJTkUoaW50KSB0eXBlX2lzX3N1YnR5cGVfYmFzZV9jaGFpbihQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOwotc3RhdGljIGludCBjb21wYXRpYmxlX2Zvcl9hc3NpZ25tZW50KFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKiwgY2hhciAqKTsKK3N0YXRpYyBpbnQgdHlwZV9pc19zdWJ0eXBlX2Jhc2VfY2hhaW4oUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKK3N0YXRpYyBpbnQgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICosIGNvbnN0IGNoYXIgKik7CiBzdGF0aWMgaW50IGFkZF9zdWJjbGFzcyhQeVR5cGVPYmplY3QqLCBQeVR5cGVPYmplY3QqKTsKIHN0YXRpYyBpbnQgYWRkX2FsbF9zdWJjbGFzc2VzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmJhc2VzKTsKIHN0YXRpYyB2b2lkIHJlbW92ZV9zdWJjbGFzcyhQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICopOwpAQCAtODg4LDI1ICs4OTMsMzMgQEAKICNlbmRpZgogCiAgICAgb2JqID0gdHlwZS0+dHBfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOwotICAgIGlmIChvYmogIT0gTlVMTCkgewotICAgICAgICAvKiBVZ2x5IGV4Y2VwdGlvbjogd2hlbiB0aGUgY2FsbCB3YXMgdHlwZShzb21ldGhpbmcpLAotICAgICAgICAgICBkb24ndCBjYWxsIHRwX2luaXQgb24gdGhlIHJlc3VsdC4gKi8KLSAgICAgICAgaWYgKHR5cGUgPT0gJlB5VHlwZV9UeXBlICYmCi0gICAgICAgICAgICBQeVR1cGxlX0NoZWNrKGFyZ3MpICYmIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSAmJgotICAgICAgICAgICAgKGt3ZHMgPT0gTlVMTCB8fAotICAgICAgICAgICAgIChQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgPT0gMCkpKQotICAgICAgICAgICAgcmV0dXJuIG9iajsKLSAgICAgICAgLyogSWYgdGhlIHJldHVybmVkIG9iamVjdCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgdHlwZSwKLSAgICAgICAgICAgaXQgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuICovCi0gICAgICAgIGlmICghUHlUeXBlX0lzU3VidHlwZShQeV9UWVBFKG9iaiksIHR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIG9iajsKLSAgICAgICAgdHlwZSA9IFB5X1RZUEUob2JqKTsKLSAgICAgICAgaWYgKHR5cGUtPnRwX2luaXQgIT0gTlVMTCkgewotICAgICAgICAgICAgaW50IHJlcyA9IHR5cGUtPnRwX2luaXQob2JqLCBhcmdzLCBrd2RzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0gICAgICAgICAgICAgICAgb2JqID0gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICBvYmogPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdCgoUHlPYmplY3QqKXR5cGUsIG9iaiwgTlVMTCk7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFVnbHkgZXhjZXB0aW9uOiB3aGVuIHRoZSBjYWxsIHdhcyB0eXBlKHNvbWV0aGluZyksCisgICAgICAgZG9uJ3QgY2FsbCB0cF9pbml0IG9uIHRoZSByZXN1bHQuICovCisgICAgaWYgKHR5cGUgPT0gJlB5VHlwZV9UeXBlICYmCisgICAgICAgIFB5VHVwbGVfQ2hlY2soYXJncykgJiYgUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAxICYmCisgICAgICAgIChrd2RzID09IE5VTEwgfHwKKyAgICAgICAgIChQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgPT0gMCkpKQorICAgICAgICByZXR1cm4gb2JqOworCisgICAgLyogSWYgdGhlIHJldHVybmVkIG9iamVjdCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgdHlwZSwKKyAgICAgICBpdCB3b24ndCBiZSBpbml0aWFsaXplZC4gKi8KKyAgICBpZiAoIVB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYmopLCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIG9iajsKKworICAgIHR5cGUgPSBQeV9UWVBFKG9iaik7CisgICAgaWYgKHR5cGUtPnRwX2luaXQgIT0gTlVMTCkgeworICAgICAgICBpbnQgcmVzID0gdHlwZS0+dHBfaW5pdChvYmosIGFyZ3MsIGt3ZHMpOworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOworICAgICAgICAgICAgUHlfREVDUkVGKG9iaik7CisgICAgICAgICAgICBvYmogPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gb2JqOwpAQCAtMTMyNCw3ICsxMzM3LDcgQEAKIAogLyogdHlwZSB0ZXN0IHdpdGggc3ViY2xhc3Npbmcgc3VwcG9ydCAqLwogCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGludAogdHlwZV9pc19zdWJ0eXBlX2Jhc2VfY2hhaW4oUHlUeXBlT2JqZWN0ICphLCBQeVR5cGVPYmplY3QgKmIpCiB7CiAgICAgZG8gewpAQCAtMTQxMiwzNiArMTQyNSwzOCBAQAogICAgYXMgbG9va3VwX21ldGhvZCB0byBjYWNoZSB0aGUgaW50ZXJuZWQgbmFtZSBzdHJpbmcgb2JqZWN0LiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNoYXIgKmZvcm1hdCwgLi4uKQorY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICpmdW5jID0gMCwgKnJldHZhbDsKLSAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEwsICpyZXR2YWw7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICB2YV9lbmQodmEpOwogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWVpZC0+b2JqZWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KQorICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgeworICAgICAgICBQeU9iamVjdCAqYXJnczsKKworICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgdmFfZW5kKHZhKTsKIAotICAgIHZhX2VuZCh2YSk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKIAotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9CiAKLSAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7Ci0gICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTQ1MCwzNiArMTQ2NSwzOCBAQAogLyogQ2xvbmUgb2YgY2FsbF9tZXRob2QoKSB0aGF0IHJldHVybnMgTm90SW1wbGVtZW50ZWQgd2hlbiB0aGUgbG9va3VwIGZhaWxzLiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9tYXliZShQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCitjYWxsX21heWJlKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7Ci0gICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMLCAqcmV0dmFsOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1laWQpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpCisgICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7CisgICAgICAgIFB5T2JqZWN0ICphcmdzOworCisgICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOwotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICB2YV9lbmQodmEpOwogCi0gICAgdmFfZW5kKHZhKTsKKyAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwogCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgIH0KIAotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLSAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKIAogICAgIHJldHVybiByZXR2YWw7CkBAIC0xNTMxLDcgKzE1NDgsNiBAQAogICAgIFB5T2JqZWN0ICpuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIFB5X1hERUNSRUYobmFtZSk7CiAgICAgICAgIG5hbWUgPSBQeU9iamVjdF9SZXByKGNscyk7CiAgICAgfQogICAgIGlmIChuYW1lID09IE5VTEwpCkBAIC0yMDI1LDYgKzIwNDEsOCBAQAogc3RhdGljIGludCBvYmplY3RfaW5pdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgdXBkYXRlX3Nsb3QoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZml4dXBfc2xvdF9kaXNwYXRjaGVycyhQeVR5cGVPYmplY3QgKik7CitzdGF0aWMgaW50IHNldF9uYW1lcyhQeVR5cGVPYmplY3QgKik7CitzdGF0aWMgaW50IGluaXRfc3ViY2xhc3MoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiAvKgogICogSGVscGVycyBmb3IgIF9fZGljdF9fIGRlc2NyaXB0b3IuICBXZSBkb24ndCB3YW50IHRvIGV4cG9zZSB0aGUgZGljdHMKQEAgLTIwODksNyArMjEwNyw3IEBACiBzdGF0aWMgaW50CiBzdWJ0eXBlX3NldGRpY3QoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQogewotICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHI7CisgICAgUHlPYmplY3QgKipkaWN0cHRyOwogICAgIFB5VHlwZU9iamVjdCAqYmFzZTsKIAogICAgIGJhc2UgPSBnZXRfYnVpbHRpbl9iYXNlX3dpdGhfZGljdChQeV9UWVBFKG9iaikpOwpAQCAtMjEyMCwxMCArMjEzOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAibm90IGEgJyUuMjAwcyciLCBQeV9UWVBFKHZhbHVlKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZGljdCA9ICpkaWN0cHRyOwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgICpkaWN0cHRyID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICBQeV9YU0VUUkVGKCpkaWN0cHRyLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTIyMDIsNyArMjIxOCw4IEBACiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKICAgICBhc3NlcnQoa3dkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2RzKSk7CiAKLSAgICBpZiAoa3dkcyAhPSBOVUxMICYmIFB5RGljdF9DaGVjayhrd2RzKSAmJiBQeURpY3RfU2l6ZShrd2RzKSAhPSAwKSB7CisgICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpICYmIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSAmJgorICAgICAgICBQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUuX19pbml0X18oKSB0YWtlcyBubyBrZXl3b3JkIGFyZ3VtZW50cyIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0yMjY5LDggKzIyODYsNyBAQAogdHlwZV9uZXcoUHlUeXBlT2JqZWN0ICptZXRhdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpuYW1lLCAqYmFzZXMgPSBOVUxMLCAqb3JpZ19kaWN0LCAqZGljdCA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJuYW1lIiwgImJhc2VzIiwgImRpY3QiLCAwfTsKLSAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpzbG90cyA9IE5VTEwsICp0bXAsICpuZXdzbG90czsKKyAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpzbG90cyA9IE5VTEwsICp0bXAsICpuZXdzbG90cywgKmNlbGw7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gTlVMTCwgKmJhc2UsICp0bXB0eXBlLCAqd2lubmVyOwogICAgIFB5SGVhcFR5cGVPYmplY3QgKmV0OwogICAgIFB5TWVtYmVyRGVmICptcDsKQEAgLTIyNzgsMTYgKzIyOTQsMTkgQEAKICAgICBpbnQgaiwgbWF5X2FkZF9kaWN0LCBtYXlfYWRkX3dlYWssIGFkZF9kaWN0LCBhZGRfd2VhazsKICAgICBfUHlfSURFTlRJRklFUihfX3F1YWxuYW1lX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fc2xvdHNfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19jbGFzc2NlbGxfXyk7CiAKICAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGFzc2VydChrd2RzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3ZHMpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZTogdHlwZSh4KSBzaG91bGQgcmV0dXJuIHgtPm9iX3R5cGUgKi8KLSAgICB7CisgICAgLyogV2Ugb25seSB3YW50IHR5cGUgaXRzZWxmIHRvIGFjY2VwdCB0aGUgb25lLWFyZ3VtZW50IGZvcm0gKCMyNzE1NykKKyAgICAgICBOb3RlOiBXZSBkb24ndCBjYWxsIFB5VHlwZV9DaGVja0V4YWN0IGFzIHRoYXQgYWxzbyBhbGxvd3Mgc3ViY2xhc3NlcyAqLworICAgIGlmIChtZXRhdHlwZSA9PSAmUHlUeXBlX1R5cGUpIHsKICAgICAgICAgY29uc3QgUHlfc3NpemVfdCBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3Qgbmt3ZHMgPSBrd2RzID09IE5VTEwgPyAwIDogUHlEaWN0X1NpemUoa3dkcyk7CiAKLSAgICAgICAgaWYgKFB5VHlwZV9DaGVja0V4YWN0KG1ldGF0eXBlKSAmJiBuYXJncyA9PSAxICYmIG5rd2RzID09IDApIHsKKyAgICAgICAgaWYgKG5hcmdzID09IDEgJiYgbmt3ZHMgPT0gMCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnggPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOwogICAgICAgICAgICAgUHlfSU5DUkVGKFB5X1RZUEUoeCkpOwogICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBQeV9UWVBFKHgpOwpAQCAtMjI5Niw3ICsyMzE1LDcgQEAKICAgICAgICAgLyogU0YgYnVnIDQ3NTMyNyAtLSBpZiB0aGF0IGRpZG4ndCB0cmlnZ2VyLCB3ZSBuZWVkIDMKICAgICAgICAgICAgYXJndW1lbnRzLiBidXQgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIGJlbG93IG1heSBnaXZlCiAgICAgICAgICAgIGEgbXNnIHNheWluZyB0eXBlKCkgbmVlZHMgZXhhY3RseSAzLiAqLwotICAgICAgICBpZiAobmFyZ3MgKyBua3dkcyAhPSAzKSB7CisgICAgICAgIGlmIChuYXJncyAhPSAzKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlKCkgdGFrZXMgMSBvciAzIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzA0LDEwICsyMzIzLDggQEAKICAgICB9CiAKICAgICAvKiBDaGVjayBhcmd1bWVudHM6IChuYW1lLCBiYXNlcywgZGljdCkgKi8KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiVU8hTyE6dHlwZSIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlUdXBsZV9UeXBlLCAmYmFzZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGljdF9UeXBlLCAmb3JpZ19kaWN0KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlVPIU8hOnR5cGUuX19uZXdfXyIsICZuYW1lLCAmUHlUdXBsZV9UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYmFzZXMsICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgbWV0YXR5cGUgdG8gZGVhbCB3aXRoIHRoaXM6ICovCkBAIC0yNTQ0LDcgKzI1NjEsNyBAQAogICAgIH0KICAgICBldC0+aHRfcXVhbG5hbWUgPSBxdWFsbmFtZSA/IHF1YWxuYW1lIDogZXQtPmh0X25hbWU7CiAgICAgUHlfSU5DUkVGKGV0LT5odF9xdWFsbmFtZSk7Ci0gICAgaWYgKHF1YWxuYW1lICE9IE5VTEwgJiYgUHlEaWN0X0RlbEl0ZW0oZGljdCwgUHlJZF9fX3F1YWxuYW1lX18ub2JqZWN0KSA8IDApCisgICAgaWYgKHF1YWxuYW1lICE9IE5VTEwgJiYgX1B5RGljdF9EZWxJdGVtSWQoZGljdCwgJlB5SWRfX19xdWFsbmFtZV9fKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAvKiBTZXQgdHBfZG9jIHRvIGEgY29weSBvZiBkaWN0WydfX2RvY19fJ10sIGlmIHRoZSBsYXR0ZXIgaXMgdGhlcmUKQEAgLTI1ODcsNiArMjYwNCwyMCBAQAogICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICB9CiAKKyAgICAvKiBTcGVjaWFsLWNhc2UgX19pbml0X3N1YmNsYXNzX186IGlmIGl0J3MgYSBwbGFpbiBmdW5jdGlvbiwKKyAgICAgICBtYWtlIGl0IGEgY2xhc3NtZXRob2QgKi8KKyAgICB0bXAgPSBfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2luaXRfc3ViY2xhc3NfXyk7CisgICAgaWYgKHRtcCAhPSBOVUxMICYmIFB5RnVuY3Rpb25fQ2hlY2sodG1wKSkgeworICAgICAgICB0bXAgPSBQeUNsYXNzTWV0aG9kX05ldyh0bXApOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoZGljdCwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18sIHRtcCkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCiAgICAgLyogQWRkIGRlc2NyaXB0b3JzIGZvciBjdXN0b20gc2xvdHMgZnJvbSBfX3Nsb3RzX18sIG9yIGZvciBfX2RpY3RfXyAqLwogICAgIG1wID0gUHlIZWFwVHlwZV9HRVRfTUVNQkVSUyhldCk7CiAgICAgc2xvdG9mZnNldCA9IGJhc2UtPnRwX2Jhc2ljc2l6ZTsKQEAgLTI2NTYsNiArMjY4NywxNCBAQAogICAgIGVsc2UKICAgICAgICAgdHlwZS0+dHBfZnJlZSA9IFB5T2JqZWN0X0RlbDsKIAorICAgIC8qIHN0b3JlIHR5cGUgaW4gY2xhc3MnIGNlbGwgKi8KKyAgICBjZWxsID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19jbGFzc2NlbGxfXyk7CisgICAgaWYgKGNlbGwgIT0gTlVMTCAmJiBQeUNlbGxfQ2hlY2soY2VsbCkpIHsKKyAgICAgICAgUHlDZWxsX1NldChjZWxsLCAoUHlPYmplY3QgKikgdHlwZSk7CisgICAgICAgIF9QeURpY3RfRGVsSXRlbUlkKGRpY3QsICZQeUlkX19fY2xhc3NjZWxsX18pOworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKwogICAgIC8qIEluaXRpYWxpemUgdGhlIHJlc3QgKi8KICAgICBpZiAoUHlUeXBlX1JlYWR5KHR5cGUpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2NjcsNiArMjcwNiwxMiBAQAogICAgICAgICBldC0+aHRfY2FjaGVkX2tleXMgPSBfUHlEaWN0X05ld0tleXNGb3JDbGFzcygpOwogICAgIH0KIAorICAgIGlmIChzZXRfbmFtZXModHlwZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKGluaXRfc3ViY2xhc3ModHlwZSwga3dkcykgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCiAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgIHJldHVybiAoUHlPYmplY3QgKil0eXBlOwogCkBAIC0yNjc4LDcgKzI3MjMsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgc2hvcnQgc2xvdG9mZnNldHNbXSA9IHsKK3N0YXRpYyBjb25zdCBzaG9ydCBzbG90b2Zmc2V0c1tdID0gewogICAgIC0xLCAvKiBpbnZhbGlkIHNsb3QgKi8KICNpbmNsdWRlICJ0eXBlc2xvdHMuaW5jIgogfTsKQEAgLTI4MDMsMTMgKzI4NDgsMTYgQEAKICAgICAvKiBTZXQgdHlwZS5fX21vZHVsZV9fICovCiAgICAgcyA9IHN0cnJjaHIoc3BlYy0+bmFtZSwgJy4nKTsKICAgICBpZiAocyAhPSBOVUxMKSB7CisgICAgICAgIGludCBlcnI7CiAgICAgICAgIG1vZG5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCiAgICAgICAgICAgICAgICAgc3BlYy0+bmFtZSwgKFB5X3NzaXplX3QpKHMgLSBzcGVjLT5uYW1lKSk7CiAgICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQotICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fLCBtb2RuYW1lKTsKKyAgICAgICAgZXJyID0gX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgbW9kbmFtZSk7CiAgICAgICAgIFB5X0RFQ1JFRihtb2RuYW1lKTsKKyAgICAgICAgaWYgKGVyciAhPSAwKQorICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwKICAgICAgICAgICAgICAgICAiYnVpbHRpbiB0eXBlICUuMjAwcyBoYXMgbm8gX19tb2R1bGVfXyBhdHRyaWJ1dGUiLApAQCAtMzYxMSw3ICszNjU5LDcgQEAKIH0KIAogc3RhdGljIGludAotY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QqIG9sZHRvLCBQeVR5cGVPYmplY3QqIG5ld3RvLCBjaGFyKiBhdHRyKQorY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QqIG9sZHRvLCBQeVR5cGVPYmplY3QqIG5ld3RvLCBjb25zdCBjaGFyKiBhdHRyKQogewogICAgIFB5VHlwZU9iamVjdCAqbmV3YmFzZSwgKm9sZGJhc2U7CiAKQEAgLTM3ODcsNyArMzgzNSw3IEBACiAgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydChjb3B5cmVnX3N0cik7CiB9CiAKLVB5X0xPQ0FMKFB5T2JqZWN0ICopCitzdGF0aWMgUHlPYmplY3QgKgogX1B5VHlwZV9HZXRTbG90TmFtZXMoUHlUeXBlT2JqZWN0ICpjbHMpCiB7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CkBAIC0zODQwLDcgKzM4ODgsNyBAQAogICAgIHJldHVybiBzbG90bmFtZXM7CiB9CiAKLVB5X0xPQ0FMKFB5T2JqZWN0ICopCitzdGF0aWMgUHlPYmplY3QgKgogX1B5T2JqZWN0X0dldFN0YXRlKFB5T2JqZWN0ICpvYmosIGludCByZXF1aXJlZCkKIHsKICAgICBQeU9iamVjdCAqc3RhdGU7CkBAIC0zODg3LDYgKzM5MzUsMjQgQEAKICAgICAgICAgfQogCiAgICAgICAgIGFzc2VydChzbG90bmFtZXMgPT0gUHlfTm9uZSB8fCBQeUxpc3RfQ2hlY2soc2xvdG5hbWVzKSk7CisgICAgICAgIGlmIChyZXF1aXJlZCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBiYXNpY3NpemUgPSBQeUJhc2VPYmplY3RfVHlwZS50cF9iYXNpY3NpemU7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF9kaWN0b2Zmc2V0KQorICAgICAgICAgICAgICAgIGJhc2ljc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF93ZWFrbGlzdG9mZnNldCkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaWYgKHNsb3RuYW1lcyAhPSBQeV9Ob25lKQorICAgICAgICAgICAgICAgIGJhc2ljc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKikgKiBQeV9TSVpFKHNsb3RuYW1lcyk7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF9iYXNpY3NpemUgPiBiYXNpY3NpemUpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2xvdG5hbWVzKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBwaWNrbGUgJS4yMDBzIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKHNsb3RuYW1lcyAhPSBQeV9Ob25lICYmIFB5X1NJWkUoc2xvdG5hbWVzKSA+IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzbG90czsKICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2xvdG5hbWVzX3NpemUsIGk7CkBAIC0zOTQxLDcgKzQwMDcsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKiBJZiB3ZSBmb3VuZCBzb21lIHNsb3QgYXR0cmlidXRlcywgcGFjayB0aGVtIGluIGEgdHVwbGUgYWxvbmcKLSAgICAgICAgICAgICAgIHRoZSBvcmdpbmFsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LiAqLworICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LiAqLwogICAgICAgICAgICAgaWYgKFB5RGljdF9TaXplKHNsb3RzKSA+IDApIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3RhdGUyOwogCkBAIC0zOTY4LDcgKzQwMzQsNyBAQAogICAgIHJldHVybiBzdGF0ZTsKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogX1B5T2JqZWN0X0dldE5ld0FyZ3VtZW50cyhQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqKmFyZ3MsIFB5T2JqZWN0ICoqa3dhcmdzKQogewogICAgIFB5T2JqZWN0ICpnZXRuZXdhcmdzLCAqZ2V0bmV3YXJnc19leDsKQEAgLTQwNjQsNyArNDEzMCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIF9QeU9iamVjdF9HZXRJdGVtc0l0ZXIoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKipsaXN0aXRlbXMsCiAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZGljdGl0ZW1zKQogewpAQCAtNDExMCw3ICs0MTc2LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXJlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaiwgaW50IHByb3RvKQorcmVkdWNlX25ld29iaihQeU9iamVjdCAqb2JqKQogewogICAgIFB5T2JqZWN0ICphcmdzID0gTlVMTCwgKmt3YXJncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CkBAIC00MTYzLDcgKzQyMjksNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgfQotICAgIGVsc2UgaWYgKHByb3RvID49IDQpIHsKKyAgICBlbHNlIGlmIChhcmdzICE9IE5VTEwpIHsKICAgICAgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfZXhfXyk7CiAKICAgICAgICAgbmV3b2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9fX25ld29ial9leF9fKTsKQEAgLTQxODIsMTMgKzQyNDgsOSBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IHVzZSBwcm90b2NvbCA0IG9yIGdyZWF0ZXIgdG8gY29weSB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3Q7IHNpbmNlIF9fZ2V0bmV3YXJnc19leF9fIHJldHVybmVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50cy4iKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAvKiBhcmdzID09IE5VTEwgKi8KICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7Ci0gICAgICAgIFB5X0RFQ1JFRihjb3B5cmVnKTsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtNDIzNiw3ICs0Mjk4LDcgQEAKICAgICBQeU9iamVjdCAqY29weXJlZywgKnJlczsKIAogICAgIGlmIChwcm90byA+PSAyKQotICAgICAgICByZXR1cm4gcmVkdWNlX25ld29iaihzZWxmLCBwcm90byk7CisgICAgICAgIHJldHVybiByZWR1Y2VfbmV3b2JqKHNlbGYpOwogCiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKCFjb3B5cmVnKQpAQCAtNDMxOCw2ICs0MzgwLDE4IEBACiAiTm90SW1wbGVtZW50ZWQsIHRoZSBub3JtYWwgYWxnb3JpdGhtIGlzIHVzZWQuICBPdGhlcndpc2UsIGl0XG4iCiAib3ZlcnJpZGVzIHRoZSBub3JtYWwgYWxnb3JpdGhtIChhbmQgdGhlIG91dGNvbWUgaXMgY2FjaGVkKS5cbiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorb2JqZWN0X2luaXRfc3ViY2xhc3MoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKG9iamVjdF9pbml0X3N1YmNsYXNzX2RvYywKKyJUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhIGNsYXNzIGlzIHN1YmNsYXNzZWQuXG4iCisiXG4iCisiVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RoaW5nLiBJdCBtYXkgYmVcbiIKKyJvdmVycmlkZGVuIHRvIGV4dGVuZCBzdWJjbGFzc2VzLlxuIik7CisKIC8qCiAgICBmcm9tIFBFUCAzMTAxLCB0aGlzIGNvZGUgaW1wbGVtZW50czoKIApAQCAtNDQyMiw2ICs0NDk2LDggQEAKICAgICAgUHlEb2NfU1RSKCJoZWxwZXIgZm9yIHBpY2tsZSIpfSwKICAgICB7Il9fc3ViY2xhc3Nob29rX18iLCBvYmplY3Rfc3ViY2xhc3Nob29rLCBNRVRIX0NMQVNTIHwgTUVUSF9WQVJBUkdTLAogICAgICBvYmplY3Rfc3ViY2xhc3Nob29rX2RvY30sCisgICAgeyJfX2luaXRfc3ViY2xhc3NfXyIsIG9iamVjdF9pbml0X3N1YmNsYXNzLCBNRVRIX0NMQVNTIHwgTUVUSF9OT0FSR1MsCisgICAgIG9iamVjdF9pbml0X3N1YmNsYXNzX2RvY30sCiAgICAgeyJfX2Zvcm1hdF9fIiwgb2JqZWN0X2Zvcm1hdCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImRlZmF1bHQgb2JqZWN0IGZvcm1hdHRlciIpfSwKICAgICB7Il9fc2l6ZW9mX18iLCBvYmplY3Rfc2l6ZW9mLCBNRVRIX05PQVJHUywKQEAgLTUzNzMsNyArNTQ0OSw3IEBACiAvKiBIZWxwZXIgdG8gY2hlY2sgZm9yIG9iamVjdC5fX3NldGF0dHJfXyBvciBfX2RlbGF0dHJfXyBhcHBsaWVkIHRvIGEgdHlwZS4KICAgIFRoaXMgaXMgY2FsbGVkIHRoZSBDYXJsbyBWZXJyZSBoYWNrIGFmdGVyIGl0cyBkaXNjb3ZlcmVyLiAqLwogc3RhdGljIGludAotaGFja2NoZWNrKFB5T2JqZWN0ICpzZWxmLCBzZXRhdHRyb2Z1bmMgZnVuYywgY2hhciAqd2hhdCkKK2hhY2tjaGVjayhQeU9iamVjdCAqc2VsZiwgc2V0YXR0cm9mdW5jIGZ1bmMsIGNvbnN0IGNoYXIgKndoYXQpCiB7CiAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKICAgICB3aGlsZSAodHlwZSAmJiB0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpCkBAIC01NjYwLDcgKzU3MzYsNyBAQAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYpIFwKIHsgXAogICAgIF9QeV9zdGF0aWNfc3RyaW5nKGlkLCBPUFNUUik7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCkiKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsIE5VTEwpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKQEAgLTU3NTMsNyArNTgyOSw3IEBACiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKnJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbGVuX18sICIoKSIpOworICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCBOVUxMKTsKICAgICBQeV9zc2l6ZV90IGxlbjsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKQEAgLTU3NzQsMzggKzU4NTAsMzkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3NxX2l0ZW0oUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaSkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCiAgICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwSWQoUHlfVFlQRShzZWxmKSwgJlB5SWRfX19nZXRpdGVtX18pOwotICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKChmID0gUHlfVFlQRShmdW5jKS0+dHBfZGVzY3JfZ2V0KSA9PSBOVUxMKQotICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGZ1bmMgPSBmKGZ1bmMsIHNlbGYsIChQeU9iamVjdCAqKShQeV9UWVBFKHNlbGYpKSk7Ci0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaXZhbCA9IFB5TG9uZ19Gcm9tU3NpemVfdChpKTsKLSAgICAgICAgaWYgKGl2YWwgIT0gTlVMTCkgewotICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgICAgICAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgaXZhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpnZXRpdGVtX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBnZXRpdGVtX3N0cik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGFyZ3MpOwotICAgIFB5X1hERUNSRUYoaXZhbCk7Ci0gICAgUHlfWERFQ1JFRihmdW5jKTsKKworICAgIGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQ7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmdW5jID0gZihmdW5jLCBzZWxmLCAoUHlPYmplY3QgKikoUHlfVFlQRShzZWxmKSkpOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGl2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSk7CisgICAgaWYgKGl2YWwgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBpdmFsKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgUHlfREVDUkVGKGl2YWwpOworICAgIHJldHVybiByZXR2YWw7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtNTgyNywxOSArNTkwNCwyMCBAQAogc3RhdGljIGludAogc2xvdF9zcV9jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzLCAqYXJnczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKICAgICBpbnQgcmVzdWx0ID0gLTE7CiAgICAgX1B5X0lERU5USUZJRVIoX19jb250YWluc19fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19jb250YWluc19fKTsKKyAgICBpZiAoZnVuYyA9PSBQeV9Ob25lKSB7CisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgY29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICByZXMgPSBOVUxMOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIH0KKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIHZhbHVlKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtNTkxMCw0NCArNTk4OCw1NCBAQAogc3RhdGljIGludAogc2xvdF9uYl9ib29sKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJnczsKLSAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlPYmplY3QgKmZ1bmMsICp2YWx1ZTsKKyAgICBpbnQgcmVzdWx0OwogICAgIGludCB1c2luZ19sZW4gPSAwOwogICAgIF9QeV9JREVOVElGSUVSKF9fYm9vbF9fKTsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUoc2VsZiwgJlB5SWRfX19ib29sX18pOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fbGVuX18pOwotICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX09jY3VycmVkKCkgPyAtMSA6IDE7CisgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KICAgICAgICAgdXNpbmdfbGVuID0gMTsKICAgICB9Ci0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmIChhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgIGlmICh0ZW1wICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICh1c2luZ19sZW4pIHsKLSAgICAgICAgICAgICAgICAvKiBlbmZvcmNlZCBieSBzbG90X25iX2xlbiAqLwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh0ZW1wKSkgewotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh0ZW1wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Jvb2xfXyBzaG91bGQgcmV0dXJuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2wsIHJldHVybmVkICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh0ZW1wKS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7Ci0gICAgICAgIH0KKworICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKworICAgIGlmICh1c2luZ19sZW4pIHsKKyAgICAgICAgLyogYm9vbCB0eXBlIGVuZm9yY2VkIGJ5IHNsb3RfbmJfbGVuICovCisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qm9vbF9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfSXNUcnVlKHZhbHVlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiX19ib29sX18gc2hvdWxkIHJldHVybiAiCisgICAgICAgICAgICAgICAgICAgICAiYm9vbCwgcmV0dXJuZWQgJXMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgcmV0dXJuIC0xOwogfQogCiAKQEAgLTU5NTUsNyArNjA0Myw3IEBACiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewogICAgIF9QeV9JREVOVElGSUVSKF9faW5kZXhfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgIigpIik7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19faW5kZXhfXywgTlVMTCk7CiB9CiAKIApAQCAtNjE5MiwyMCArNjI4MCwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogewotICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJncywgKnJlczsKKyAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgb3RoZXIpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJlcyA9IE5VTEw7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICB9CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxBcmcxKGZ1bmMsIG90aGVyKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTYyMTcsMTYgKzYyOTksMjAgQEAKICAgICBfUHlfSURFTlRJRklFUihfX2l0ZXJfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2l0ZXJfXyk7CisgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqYXJnczsKLSAgICAgICAgYXJncyA9IHJlcyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICBpZiAoYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CisKICAgICBQeUVycl9DbGVhcigpOwogICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0aXRlbV9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CkBAIC02MjQzLDcgKzYzMjksNyBAQAogc2xvdF90cF9pdGVybmV4dChQeU9iamVjdCAqc2VsZikKIHsKICAgICBfUHlfSURFTlRJRklFUihfX25leHRfXyk7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCAiKCkiKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19uZXh0X18sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNjMxMiwyOSArNjM5OCwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfdHBfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpmdW5jOwotICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKLSAgICBQeV9zc2l6ZV90IGksIG47CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXN1bHQ7CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKil0eXBlLCAmUHlJZF9fX25ld19fKTsKLSAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwotICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuKzEpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRih0eXBlKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZ3MsIDAsIChQeU9iamVjdCAqKXR5cGUpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgeCA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0gICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCBpKzEsIHgpOwogICAgIH0KLSAgICB4ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBuZXdhcmdzLCBrd2RzKTsKLSAgICBQeV9ERUNSRUYobmV3YXJncyk7CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKGZ1bmMsIChQeU9iamVjdCAqKXR5cGUsIGFyZ3MsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICByZXR1cm4geDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgdm9pZApAQCAtNjkzNyw2ICs3MDEwLDY0IEBACiAgICAgfQogfQogCisvKiBDYWxsIF9fc2V0X25hbWVfXyBvbiBhbGwgZGVzY3JpcHRvcnMgaW4gYSBuZXdseSBnZW5lcmF0ZWQgdHlwZSAqLworc3RhdGljIGludAorc2V0X25hbWVzKFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpzZXRfbmFtZSwgKnRtcDsKKyAgICBQeV9zc2l6ZV90IGkgPSAwOworCisgICAgd2hpbGUgKFB5RGljdF9OZXh0KHR5cGUtPnRwX2RpY3QsICZpLCAma2V5LCAmdmFsdWUpKSB7CisgICAgICAgIHNldF9uYW1lID0gbG9va3VwX21heWJlKHZhbHVlLCAmUHlJZF9fX3NldF9uYW1lX18pOworICAgICAgICBpZiAoc2V0X25hbWUgIT0gTlVMTCkgeworICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzZXRfbmFtZSwgdHlwZSwga2V5LCBOVUxMKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXRfbmFtZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBfUHlFcnJfRm9ybWF0RnJvbUNhdXNlKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIkVycm9yIGNhbGxpbmcgX19zZXRfbmFtZV9fIG9uICclLjEwMHMnIGluc3RhbmNlICVSICIKKyAgICAgICAgICAgICAgICAgICAgImluICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUtPm9iX3R5cGUtPnRwX25hbWUsIGtleSwgdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENhbGwgX19pbml0X3N1YmNsYXNzX18gb24gdGhlIHBhcmVudCBvZiBhIG5ld2x5IGdlbmVyYXRlZCB0eXBlICovCitzdGF0aWMgaW50Citpbml0X3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnN1cGVyLCAqZnVuYywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqYXJnc1syXSA9IHsoUHlPYmplY3QgKil0eXBlLCAoUHlPYmplY3QgKil0eXBlfTsKKworICAgIHN1cGVyID0gX1B5T2JqZWN0X0Zhc3RDYWxsKChQeU9iamVjdCAqKSZQeVN1cGVyX1R5cGUsIGFyZ3MsIDIpOworICAgIGlmIChzdXBlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChzdXBlciwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18pOworICAgIFB5X0RFQ1JFRihzdXBlcik7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIE5VTEwsIDAsIGt3ZHMpOworICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiAwOworfQorCiAvKiByZWN1cnNlX2Rvd25fc3ViY2xhc3NlcygpIGFuZCB1cGRhdGVfc3ViY2xhc3NlcygpIGFyZSBtdXR1YWxseQogICAgcmVjdXJzaXZlIGZ1bmN0aW9ucyB0byBjYWxsIGEgY2FsbGJhY2sgZm9yIGFsbCBzdWJjbGFzc2VzLAogICAgYnV0IHJlZnJhaW5pbmcgZnJvbSByZWN1cnNpbmcgaW50byBzdWJjbGFzc2VzIHRoYXQgZGVmaW5lICduYW1lJy4gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKaW5kZXggMjczNTM2ZS4uZTQ1ZjNkNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJ1Y25oYXNoLmgiCiAjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2luY2x1ZGUgPHdpbmRvd3MuaD4KQEAgLTE2Miw2ICsxNjMsMTQgQEAKICAgICAgICAgICAgICpfdG8rKyA9ICh0b190eXBlKSAqX2l0ZXIrKzsgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKDApCiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAvKiBPbiBXaW5kb3dzLCBvdmVyYWxsb2NhdGUgYnkgNTAlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgMgorI2Vsc2UKKyAgIC8qIE9uIExpbnV4LCBvdmVyYWxsb2NhdGUgYnkgMjUlIGlzIHRoZSBiZXN0IGZhY3RvciAqLworIyAgZGVmaW5lIE9WRVJBTExPQ0FURV9GQUNUT1IgNAorI2VuZGlmCisKIC8qIFRoaXMgZGljdGlvbmFyeSBob2xkcyBhbGwgaW50ZXJuZWQgdW5pY29kZSBzdHJpbmdzLiAgTm90ZSB0aGF0IHJlZmVyZW5jZXMKICAgIHRvIHN0cmluZ3MgaW4gdGhpcyBkaWN0aW9uYXJ5IGFyZSAqbm90KiBjb3VudGVkIGluIHRoZSBzdHJpbmcncyBvYl9yZWZjbnQuCiAgICBXaGVuIHRoZSBpbnRlcm5lZCBzdHJpbmcgcmVhY2hlcyBhIHJlZmNudCBvZiAwIHRoZSBzdHJpbmcgZGVhbGxvY2F0aW9uCkBAIC0xOTUsNyArMjA0LDcgQEAKICAgICB9IHdoaWxlICgwKQogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uICovCi1QeV9MT0NBTF9JTkxJTkUoaW50KQorc3RhdGljIGlubGluZSBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfVUNTNCBjaCk7CiAKIC8qIExpc3Qgb2Ygc3RhdGljIHN0cmluZ3MuICovCkBAIC0yNjMsNyArMjcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKIAogLyogU2FtZSBmb3IgbGluZWJyZWFrcyAqLwotc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBhc2NpaV9saW5lYnJlYWtbXSA9IHsKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogLyogICAgICAgICAweDAwMEEsICogTElORSBGRUVEICovCiAvKiAgICAgICAgIDB4MDAwQiwgKiBMSU5FIFRBQlVMQVRJT04gKi8KQEAgLTI5Miw2ICszMDEsNDUgQEAKIAogI2luY2x1ZGUgImNsaW5pYy91bmljb2Rlb2JqZWN0LmMuaCIKIAordHlwZWRlZiBlbnVtIHsKKyAgICBfUHlfRVJST1JfVU5LTk9XTj0wLAorICAgIF9QeV9FUlJPUl9TVFJJQ1QsCisgICAgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRSwKKyAgICBfUHlfRVJST1JfUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfSUdOT1JFLAorICAgIF9QeV9FUlJPUl9CQUNLU0xBU0hSRVBMQUNFLAorICAgIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTLAorICAgIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfT1RIRVIKK30gX1B5X2Vycm9yX2hhbmRsZXI7CisKK3N0YXRpYyBfUHlfZXJyb3JfaGFuZGxlcgorZ2V0X2Vycm9yX2hhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NUUklDVDsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVlc2NhcGUiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfUkVQTEFDRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfSUdOT1JFOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgImJhY2tzbGFzaHJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVwYXNzIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NVUlJPR0FURVBBU1M7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0U7CisgICAgfQorICAgIHJldHVybiBfUHlfRVJST1JfT1RIRVI7Cit9CisKIC8qIFRoZSBtYXggdW5pY29kZSB2YWx1ZSBpcyBhbHdheXMgMHgxMEZGRkYgd2hpbGUgdXNpbmcgdGhlIFBFUC0zOTMgQVBJLgogICAgVGhpcyBmdW5jdGlvbiBpcyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlIG9sZCBBUEkuICovCiBQeV9VTklDT0RFCkBAIC01MjEsNiArNTY5LDEyOSBAQAogICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KHVuaWNvZGUpOwogfQogCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgImJhY2tzbGFzaHJlcGxhY2UiIGVycm9yIGhhbmRsZXIgZm9yIDgtYml0IGVuY29kaW5nczoKKyAgIEFTQ0lJLCBMYXRpbjEsIFVURi04LCBldGMuICovCitzdGF0aWMgY2hhcioKK2JhY2tzbGFzaHJlcGxhY2UoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBjb2xsc3RhcnQsIFB5X3NzaXplX3QgY29sbGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgUHlfVUNTNCBjaDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisKKyAgICBzaXplID0gMDsKKyAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBQeV9zc2l6ZV90IGluY3I7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoIDwgMHgxMDApCisgICAgICAgICAgICBpbmNyID0gMisyOworICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICBpbmNyID0gMis0OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICBpbmNyID0gMis4OworICAgICAgICB9CisgICAgICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLSBpbmNyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSArPSBpbmNyOworICAgIH0KKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHIsIHNpemUpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAqc3RyKysgPSAnXFwnOworICAgICAgICBpZiAoY2ggPj0gMHgwMDAxMDAwMCkgeworICAgICAgICAgICAgKnN0cisrID0gJ1UnOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MjgpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4yNCkmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjIwKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MTYpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4xMikmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjgpJjB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHgxMDApIHsKKyAgICAgICAgICAgICpzdHIrKyA9ICd1JzsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjEyKSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+OCkmMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAqc3RyKysgPSAneCc7CisgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjQpJjB4Zl07CisgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1tjaCYweGZdOworICAgIH0KKyAgICByZXR1cm4gc3RyOworfQorCisvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgInhtbGNoYXJyZWZyZXBsYWNlIiBlcnJvciBoYW5kbGVyIGZvciA4LWJpdCBlbmNvZGluZ3M6CisgICBBU0NJSSwgTGF0aW4xLCBVVEYtOCwgZXRjLiAqLworc3RhdGljIGNoYXIqCit4bWxjaGFycmVmcmVwbGFjZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBjb2xsc3RhcnQsIFB5X3NzaXplX3QgY29sbGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUsIGk7CisgICAgUHlfVUNTNCBjaDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisKKyAgICBzaXplID0gMDsKKyAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAqLworICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgeworICAgICAgICBQeV9zc2l6ZV90IGluY3I7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoIDwgMTApCisgICAgICAgICAgICBpbmNyID0gMisxKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwKQorICAgICAgICAgICAgaW5jciA9IDIrMisxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDApCisgICAgICAgICAgICBpbmNyID0gMiszKzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDApCisgICAgICAgICAgICBpbmNyID0gMis0KzE7CisgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNSsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMDApCisgICAgICAgICAgICBpbmNyID0gMis2KzE7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgIGluY3IgPSAyKzcrMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNpemUgKz0gaW5jcjsKKyAgICB9CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgfQorICAgIHJldHVybiBzdHI7Cit9CisKIC8qIC0tLSBCbG9vbSBGaWx0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIHN0dWZmIHRvIGltcGxlbWVudCBzaW1wbGUgImJsb29tIGZpbHRlcnMiIGZvciBVbmljb2RlIGNoYXJhY3RlcnMuCkBAIC01NDksNyArNzIwLDcgQEAKICAgICAoKGNoKSA8IDEyOFUgPyBhc2NpaV9saW5lYnJlYWtbKGNoKV0gOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgKEJMT09NKGJsb29tX2xpbmVicmVhaywgKGNoKSkgJiYgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkpKQogCi1QeV9MT0NBTF9JTkxJTkUoQkxPT01fTUFTSykKK3N0YXRpYyBpbmxpbmUgQkxPT01fTUFTSwogbWFrZV9ibG9vbV9tYXNrKGludCBraW5kLCB2b2lkKiBwdHIsIFB5X3NzaXplX3QgbGVuKQogewogI2RlZmluZSBCTE9PTV9VUERBVEUoVFlQRSwgTUFTSywgUFRSLCBMRU4pICAgICAgICAgICAgIFwKQEAgLTU4Nyw2ICs3NTgsMTggQEAKICN1bmRlZiBCTE9PTV9VUERBVEUKIH0KIAorc3RhdGljIGludAorZW5zdXJlX3VuaWNvZGUoUHlPYmplY3QgKm9iaikKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBzdHIsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX1JFQURZKG9iaik7Cit9CisKIC8qIENvbXBpbGF0aW9uIG9mIHRlbXBsYXRlZCByb3V0aW5lcyAqLwogCiAjaW5jbHVkZSAic3RyaW5nbGliL2FzY2lpbGliLmgiCkBAIC02NDMsMzEgKzgyNiwzMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpeHVwKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0ICgqZml4ZmN0KShQeU9iamVjdCAqcykpOwogCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkgZmluZGNoYXIoY29uc3Qgdm9pZCAqcywgaW50IGtpbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKK2ZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAorICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBQeV9VQ1M0IGNoLAorICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBpbnQgbW9kZSA9IChkaXJlY3Rpb24gPT0gMSkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLQogICAgIHN3aXRjaCAoa2luZCkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFB5X1VDUzEgY2gxID0gKFB5X1VDUzEpIGNoOwotICAgICAgICAgICAgaWYgKGNoMSA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9mYXN0c2VhcmNoKChQeV9VQ1MxICopIHMsIHNpemUsICZjaDEsIDEsIDAsIG1vZGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoKFB5X1VDUzEpIGNoICE9IGNoKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2ZpbmRfY2hhcigoUHlfVUNTMSAqKSBzLCBzaXplLCAoUHlfVUNTMSkgY2gpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9yZmluZF9jaGFyKChQeV9VQ1MxICopIHMsIHNpemUsIChQeV9VQ1MxKSBjaCk7CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKLSAgICAgICAgewotICAgICAgICAgICAgUHlfVUNTMiBjaDIgPSAoUHlfVUNTMikgY2g7Ci0gICAgICAgICAgICBpZiAoY2gyID09IGNoKQotICAgICAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2Zhc3RzZWFyY2goKFB5X1VDUzIgKikgcywgc2l6ZSwgJmNoMiwgMSwgMCwgbW9kZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CisgICAgICAgIGlmICgoUHlfVUNTMikgY2ggIT0gY2gpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZF9jaGFyKChQeV9VQ1MyICopIHMsIHNpemUsIChQeV9VQ1MyKSBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX3JmaW5kX2NoYXIoKFB5X1VDUzIgKikgcywgc2l6ZSwgKFB5X1VDUzIpIGNoKTsKICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgotICAgICAgICByZXR1cm4gdWNzNGxpYl9mYXN0c2VhcmNoKChQeV9VQ1M0ICopIHMsIHNpemUsICZjaCwgMSwgMCwgbW9kZSk7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKQorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfZmluZF9jaGFyKChQeV9VQ1M0ICopIHMsIHNpemUsIGNoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczRsaWJfcmZpbmRfY2hhcigoUHlfVUNTNCAqKSBzLCBzaXplLCBjaCk7CiAgICAgZGVmYXVsdDoKICAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICByZXR1cm4gLTE7CkBAIC04NjUsNyArMTA0OCw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgY29weV9sZW5ndGggPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOwogICAgICAgICBjb3B5X2xlbmd0aCA9IFB5X01JTihjb3B5X2xlbmd0aCwgbGVuZ3RoKTsKLSAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAorICAgICAgICBtZW1jcHkoX1B5VW5pY29kZV9XU1RSKHcpLCBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksCiAgICAgICAgICAgICAgICAgICBjb3B5X2xlbmd0aCAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgIHJldHVybiB3OwogICAgIH0KQEAgLTEyNTIsNyArMTQzNSw3IEBACiAgICAgICAgICAgICBpZiAobWF4X2NoYXIgPj0gMTI4KQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBQeV9NRU1DUFkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCisgICAgICAgIG1lbWNweSgoY2hhciopdG9fZGF0YSArIHRvX2tpbmQgKiB0b19zdGFydCwKICAgICAgICAgICAgICAgICAgIChjaGFyKilmcm9tX2RhdGEgKyBmcm9tX2tpbmQgKiBmcm9tX3N0YXJ0LAogICAgICAgICAgICAgICAgICAgdG9fa2luZCAqIGhvd19tYW55KTsKICAgICB9CkBAIC0xODQ1LDcgKzIwMjgsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgogI2lmIFB5X1VOSUNPREVfU0laRSA9PSAyCi0gICAgICAgIFB5X01FTUNQWShQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDIpOworICAgICAgICBtZW1jcHkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKICNlbHNlCiAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VTklDT0RFLCBQeV9VQ1MyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1ICsgc2l6ZSwgUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSkpOwpAQCAtMTg1OCw3ICsyMDQxLDcgQEAKICAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQodSwgdSArIHNpemUsIHVuaWNvZGUpOwogI2Vsc2UKICAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOwotICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiA0KTsKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogNCk7CiAjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTE5NjAsNyArMjE0Myw3IEBACiAgICAgfQogfQogCi1QeV9MT0NBTF9JTkxJTkUoUHlfVUNTNCkKK3N0YXRpYyBpbmxpbmUgUHlfVUNTNAogYWxpZ25fbWF4Y2hhcihQeV9VQ1M0IG1heGNoYXIpCiB7CiAgICAgaWYgKG1heGNoYXIgPD0gMTI3KQpAQCAtMjE2OSw3ICsyMzUyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKGNvcHkpID09IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKIAotICAgIFB5X01FTUNQWShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgbWVtY3B5KFB5VW5pY29kZV9EQVRBKGNvcHkpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKICAgICAgICAgICAgICAgbGVuZ3RoICogUHlVbmljb2RlX0tJTkQodW5pY29kZSkpOwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koY29weSwgMSkpOwogICAgIHJldHVybiBjb3B5OwpAQCAtMjI3NSw3ICsyNDU4LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKLSAgICAgICAgUHlfTUVNQ1BZKHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgbWVtY3B5KHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICB9CiAgICAgaWYgKGNvcHlfbnVsbCkKICAgICAgICAgdGFyZ2V0W2xlbl0gPSAwOwpAQCAtMjQ1OCwxMyArMjY0MSwxMSBAQAogICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOwogICAgICAgICAgICAgKytmOwogICAgICAgICB9Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKICAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnIHx8IGZbMl0gPT0gJ2knKSkgewogICAgICAgICAgICAgbG9uZ2xvbmdmbGFnID0gMTsKICAgICAgICAgICAgIGYgKz0gMjsKICAgICAgICAgfQotI2VuZGlmCiAgICAgfQogICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCiAgICAgZWxzZSBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JyB8fCBmWzFdID09ICdpJykpIHsKQEAgLTI1MDIsMTEgKzI2ODMsOSBAQAogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWx1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHVuc2lnbmVkIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAidSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxsdSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nIGxvbmcpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIHNpemVfdCkpOwpAQCAtMjUyMSwxMSArMjcwMCw5IEBACiAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgbG9uZykpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfTE9OR19MT05HICJpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCisgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlbGxpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGxvbmcgbG9uZykpOwogICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImkiLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgUHlfc3NpemVfdCkpOwpAQCAtMjcwMSw5ICsyODc4LDggQEAKICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHN0cmxlbihmb3JtYXQpICsgMTAwOwogICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOwogCi0gICAgLyogdmFfbGlzdCBtYXkgYmUgYW4gYXJyYXkgKG9mIDEgaXRlbSkgb24gc29tZSBwbGF0Zm9ybXMgKGV4OiBBTUQ2NCkuCi0gICAgICAgQ29weSBpdCB0byBiZSBhYmxlIHRvIHBhc3MgYSByZWZlcmVuY2UgdG8gYSBzdWJmdW5jdGlvbi4gKi8KLSAgICBQeV9WQV9DT1BZKHZhcmdzMiwgdmFyZ3MpOworICAgIC8vIENvcHkgdmFyYWdzIHRvIGJlIGFibGUgdG8gcGFzcyBhIHJlZmVyZW5jZSB0byBhIHN1YmZ1bmN0aW9uLgorICAgIHZhX2NvcHkodmFyZ3MyLCB2YXJncyk7CiAKICAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyApIHsKICAgICAgICAgaWYgKCpmID09ICclJykgewpAQCAtMjczOSw5ICsyOTE1LDExIEBACiAgICAgICAgICAgICBmID0gcDsKICAgICAgICAgfQogICAgIH0KKyAgICB2YV9lbmQodmFyZ3MyKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKICAgZmFpbDoKKyAgICB2YV9lbmQodmFyZ3MyKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC0yNzkwLDcgKzI5NjgsNyBAQAogICAgICAgICAgICAgc2l6ZSA9IHJlcyArIDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlcyA9IHNpemU7Ci0gICAgICAgIFB5X01FTUNQWSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgbWVtY3B5KHcsIHdzdHIsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBlbHNlCkBAIC0yOTA3LDcgKzMwODUsNyBAQAogICAgIC8qIFJldHJpZXZlIGEgYnl0ZXMgYnVmZmVyIHZpZXcgdGhyb3VnaCB0aGUgUEVQIDMxMTggYnVmZmVyIGludGVyZmFjZSAqLwogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmYnVmZmVyLCBQeUJVRl9TSU1QTEUpIDwgMCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNvZXJjaW5nIHRvIHN0cjogbmVlZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAlLjgwcyBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAiZGVjb2RpbmcgdG8gc3RyOiBuZWVkIGEgYnl0ZXMtbGlrZSBvYmplY3QsICUuODBzIGZvdW5kIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI5MjIsOSArMzEwMCw5IEBACiAgICAgcmV0dXJuIHY7CiB9CiAKLS8qIENvbnZlcnQgZW5jb2RpbmcgdG8gbG93ZXIgY2FzZSBhbmQgcmVwbGFjZSAnXycgd2l0aCAnLScgaW4gb3JkZXIgdG8KLSAgIGNhdGNoIGUuZy4gVVRGXzguIFJldHVybiAwIG9uIGVycm9yIChlbmNvZGluZyBpcyBsb25nZXIgdGhhbiBsb3dlcl9sZW4tMSksCi0gICAxIG9uIHN1Y2Nlc3MuICovCisvKiBOb3JtYWxpemUgYW4gZW5jb2RpbmcgbmFtZTogc2ltaWxhciB0byBlbmNvZGluZ3Mubm9ybWFsaXplX2VuY29kaW5nKCksIGJ1dAorICAgYWxzbyBjb252ZXJ0IHRvIGxvd2VyY2FzZS4gUmV0dXJuIDEgb24gc3VjY2Vzcywgb3IgMCBvbiBlcnJvciAoZW5jb2RpbmcgaXMKKyAgIGxvbmdlciB0aGFuIGxvd2VyX2xlbi0xKS4gKi8KIGludAogX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhjb25zdCBjaGFyICplbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbG93ZXIsCkBAIC0yOTMzLDMwICszMTExLDM5IEBACiAgICAgY29uc3QgY2hhciAqZTsKICAgICBjaGFyICpsOwogICAgIGNoYXIgKmxfZW5kOworICAgIGludCBwdW5jdDsKIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIDYgPT0gc3RybGVuKCJ1dGYtOCIpICsgMSAqLwotICAgICAgICBpZiAobG93ZXJfbGVuIDwgNikKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBzdHJjcHkobG93ZXIsICJ1dGYtOCIpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9CisgICAgYXNzZXJ0KGVuY29kaW5nICE9IE5VTEwpOworCiAgICAgZSA9IGVuY29kaW5nOwogICAgIGwgPSBsb3dlcjsKICAgICBsX2VuZCA9ICZsb3dlcltsb3dlcl9sZW4gLSAxXTsKLSAgICB3aGlsZSAoKmUpIHsKLSAgICAgICAgaWYgKGwgPT0gbF9lbmQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoKmUpKSB7Ci0gICAgICAgICAgICAqbCsrID0gUHlfVE9MT1dFUigqZSsrKTsKKyAgICBwdW5jdCA9IDA7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgY2hhciBjID0gKmU7CisgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCplID09ICdfJykgewotICAgICAgICAgICAgKmwrKyA9ICctJzsKLSAgICAgICAgICAgIGUrKzsKKworICAgICAgICBpZiAoUHlfSVNBTE5VTShjKSB8fCBjID09ICcuJykgeworICAgICAgICAgICAgaWYgKHB1bmN0ICYmIGwgIT0gbG93ZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAobCA9PSBsX2VuZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKmwrKyA9ICdfJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1bmN0ID0gMDsKKworICAgICAgICAgICAgaWYgKGwgPT0gbF9lbmQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpsKysgPSBQeV9UT0xPV0VSKGMpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgKmwrKyA9ICplKys7CisgICAgICAgICAgICBwdW5jdCA9IDE7CiAgICAgICAgIH0KKworICAgICAgICBlKys7CiAgICAgfQogICAgICpsID0gJ1wwJzsKICAgICByZXR1cm4gMTsKQEAgLTI5NzAsMjggKzMxNTcsNTEgQEAKIHsKICAgICBQeU9iamVjdCAqYnVmZmVyID0gTlVMTCwgKnVuaWNvZGU7CiAgICAgUHlfYnVmZmVyIGluZm87Ci0gICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLworICAgIGNoYXIgYnVmbG93ZXJbMTFdOyAgIC8qIHN0cmxlbigiaXNvLTg4NTktMVwwIikgPT0gMTEsIGxvbmdlc3Qgc2hvcnRjdXQgKi8KKworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CisgICAgfQogCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KLSAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAotICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7Ci0gICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzbzg4NTktMSIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKLSNlbmRpZgotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUFTQ0lJKHMsIHNpemUsIGVycm9ycyk7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgInV0Zi0xNiIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjE2KHMsIHNpemUsIGVycm9ycywgMCk7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgInV0Zi0zMiIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjMyKHMsIHNpemUsIGVycm9ycywgMCk7CisgICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGJ1Zmxvd2VyLCBzaXplb2YoYnVmbG93ZXIpKSkgeworICAgICAgICBjaGFyICpsb3dlciA9IGJ1Zmxvd2VyOworCisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGxvd2VyWzBdID09ICd1JyAmJiBsb3dlclsxXSA9PSAndCcgJiYgbG93ZXJbMl0gPT0gJ2YnKSB7CisgICAgICAgICAgICBsb3dlciArPSAzOworICAgICAgICAgICAgaWYgKCpsb3dlciA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAvKiBNYXRjaCAidXRmOCIgYW5kICJ1dGZfOCIgKi8KKyAgICAgICAgICAgICAgICBsb3dlcisrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobG93ZXJbMF0gPT0gJzgnICYmIGxvd2VyWzFdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzEnICYmIGxvd2VyWzFdID09ICc2JyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNihzLCBzaXplLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzMnICYmIGxvd2VyWzFdID09ICcyJyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYzMihzLCBzaXplLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHN0cmNtcChsb3dlciwgImFzY2lpIikgPT0gMAorICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgInVzX2FzY2lpIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlQVNDSUkocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZU1CQ1Mocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAjZW5kaWYKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDAKKyAgICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgImxhdGluXzEiKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJpc29fODg1OV8xIikgPT0gMAorICAgICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAiaXNvODg1OV8xIikgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBEZWNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwpAQCAtMzAzMSw2ICszMjQxLDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QoKSBpcyBkZXByZWNhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAidXNlIFB5Q29kZWNfRGVjb2RlKCkgdG8gZGVjb2RlIGZyb20gc3RyIiwgMSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIApAQCAtMzA1MCw2ICszMjY1LDExIEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZSgpIGlzIGRlcHJlY2F0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICJ1c2UgUHlDb2RlY19EZWNvZGUoKSB0byBkZWNvZGUgZnJvbSBzdHIgdG8gc3RyIiwgMSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIApAQCAtMzEwMCw2ICszMzIwLDEyIEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KCkgaXMgZGVwcmVjYXRlZDsgIgorICAgICAgICAgICAgICAgICAgICAgInVzZSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgdG8gZW5jb2RlIGZyb20gc3RyIHRvIGJ5dGVzICIKKyAgICAgICAgICAgICAgICAgICAgICJvciBQeUNvZGVjX0VuY29kZSgpIGZvciBnZW5lcmljIGVuY29kaW5nIiwgMSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQogICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKIApAQCAtMzE2MywyNCArMzM4OSwyMiBAQAogc3RhdGljIGludAogbG9jYWxlX2Vycm9yX2hhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKnN1cnJvZ2F0ZWVzY2FwZSkKIHsKLSAgICBpZiAoZXJyb3JzID09IE5VTEwpIHsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKyAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpCisgICAgeworICAgIGNhc2UgX1B5X0VSUk9SX1NUUklDVDoKICAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7CiAgICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkgewotICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMDsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlZXNjYXBlIikgPT0gMCkgeworICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKICAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDE7CiAgICAgICAgIHJldHVybiAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKKyAgICAgICAgICAgICAgICAgICAgICJhcmUgc3VwcG9ydGVkLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAib25seSAnc3RyaWN0JyBhbmQgJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlcnMgIgotICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCwgbm90ICclcyciLAotICAgICAgICAgICAgICAgICBlcnJvcnMpOwotICAgIHJldHVybiAtMTsKIH0KIAogUHlPYmplY3QgKgpAQCAtMzI5NiwxMCArMzUyMCw4IEBACiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KFB5T2JqZWN0ICp1bmljb2RlKQogewotI2lmZGVmIEhBVkVfTUJDUwotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBOVUxMKTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCAic3Vycm9nYXRlZXNjYXBlIik7CisjaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0zMzE0LDEwICszNTM2LDEwIEBACiAgICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYgaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxvY2FsZSh1bmljb2RlLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAgICAgfQogI2VuZGlmCiB9CkBAIC0zMzI4LDM0ICszNTUwLDU2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKLSAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCisgICAgY2hhciBidWZsb3dlclsxMV07ICAgLyogc3RybGVuKCJpc29fODg1OV8xXDAiKSA9PSAxMSwgbG9uZ2VzdCBzaG9ydGN1dCAqLwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgfQorCiAgICAgLyogU2hvcnRjdXRzIGZvciBjb21tb24gZGVmYXVsdCBlbmNvZGluZ3MgKi8KLSAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAotICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICBpZiAoX1B5X25vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgYnVmbG93ZXIsIHNpemVvZihidWZsb3dlcikpKSB7CisgICAgICAgIGNoYXIgKmxvd2VyID0gYnVmbG93ZXI7CisKKyAgICAgICAgLyogRmFzdCBwYXRocyAqLworICAgICAgICBpZiAobG93ZXJbMF0gPT0gJ3UnICYmIGxvd2VyWzFdID09ICd0JyAmJiBsb3dlclsyXSA9PSAnZicpIHsKKyAgICAgICAgICAgIGxvd2VyICs9IDM7CisgICAgICAgICAgICBpZiAoKmxvd2VyID09ICdfJykgeworICAgICAgICAgICAgICAgIC8qIE1hdGNoICJ1dGY4IiBhbmQgInV0Zl84IiAqLworICAgICAgICAgICAgICAgIGxvd2VyKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsb3dlclswXSA9PSAnOCcgJiYgbG93ZXJbMV0gPT0gMCkgewogICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobG93ZXJbMF0gPT0gJzEnICYmIGxvd2VyWzFdID09ICc2JyAmJiBsb3dlclsyXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYodW5pY29kZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICczJyAmJiBsb3dlclsxXSA9PSAnMicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjMyKHVuaWNvZGUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvODg1OS0xIikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOwotI2lmZGVmIEhBVkVfTUJDUwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJtYmNzIikgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoQ1BfQUNQLCB1bmljb2RlLCBlcnJvcnMpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDAKKyAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJ1c19hc2NpaSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICBzdHJjbXAobG93ZXIsICJsYXRpbl8xIikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGxvd2VyLCAiaXNvXzg4NTlfMSIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChsb3dlciwgImlzbzg4NTlfMSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgLyogRW5jb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KQEAgLTM0MDcsNiArMzY1MSwxMSBAQAogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoKSBpcyBkZXByZWNhdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICAidXNlIFB5Q29kZWNfRW5jb2RlKCkgdG8gZW5jb2RlIGZyb20gc3RyIHRvIHN0ciIsIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgZW5jb2RpbmcgPSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCk7CiAKQEAgLTM1ODAsMTAgKzM4MjksOCBAQAogUHlPYmplY3QqCiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIE5VTEwpOwotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIsIE5VTEwpOworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzLCBOVUxMKTsKICNlbHNlCiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgLyogQm9vdHN0cmFwIGNoZWNrOiBpZiB0aGUgZmlsZXN5c3RlbSBjb2RlYyBpcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIHdlCkBAIC0zNTk2LDEyICszODQzLDIxIEBACiAgICAgICAgY2Fubm90IG9ubHkgcmVseSBvbiBpdDogY2hlY2sgYWxzbyBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgZm9yCiAgICAgICAgc3ViaW50ZXJwcmV0ZXJzLiAqLwogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCkgewotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZShzLCBzaXplLAorICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlVbmljb2RlX0RlY29kZShzLCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIGlmICghcmVzICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVW5pY29kZURlY29kZUVycm9yKSkgeworICAgICAgICAgICAgX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgImZpbGVzeXN0ZW0gcGF0aCBieXRlcyB3ZXJlIG5vdCBjb3JyZWN0bHkgZW5jb2RlZCB3aXRoICclcycuICIKKyAgICAgICAgICAgICAgICAiUGxlYXNlIHJlcG9ydCB0aGlzIGF0IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNzc4MSIsCisgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHMsIHNpemUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTM2MTAsNiArMzg2Niw3IEBACiBpbnQKIFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogeworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqb3V0cHV0ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTM2MTgsMjQgKzM4NzUsMjIgQEAKICAgICAgICAgKihQeU9iamVjdCoqKWFkZHIgPSBOVUxMOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewotICAgICAgICBvdXRwdXQgPSBhcmc7Ci0gICAgICAgIFB5X0lOQ1JFRihvdXRwdXQpOworICAgIHBhdGggPSBQeU9TX0ZTUGF0aChhcmcpOworICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBhcmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChhcmcpOwotICAgICAgICBpZiAoIWFyZykKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZyk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmcpOwotICAgICAgICBpZiAoIW91dHB1dCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sob3V0cHV0KSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2RlciBmYWlsZWQgdG8gcmV0dXJuIGJ5dGVzIik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgb3V0cHV0ID0gcGF0aDsKKyAgICB9CisgICAgZWxzZSB7ICAvLyBQeU9TX0ZTUGF0aCgpIGd1YXJhbnRlZXMgaXRzIHJldHVybmVkIHZhbHVlIGlzIGJ5dGVzIG9yIHN0ci4KKyAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICBpZiAoIW91dHB1dCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sob3V0cHV0KSk7CiAgICAgfQorCiAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUob3V0cHV0KTsKICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcob3V0cHV0KTsKICAgICBpZiAoKHNpemVfdClzaXplICE9IHN0cmxlbihkYXRhKSkgewpAQCAtMzY1MSwzNiArMzkwNiw2MCBAQAogaW50CiBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CisgICAgaW50IGlzX2J1ZmZlciA9IDA7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwogICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwogICAgIGlmIChhcmcgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoKihQeU9iamVjdCoqKWFkZHIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA9PSAtMSkKKworICAgIGlzX2J1ZmZlciA9IFB5T2JqZWN0X0NoZWNrQnVmZmVyKGFyZyk7CisgICAgaWYgKCFpc19idWZmZXIpIHsKKyAgICAgICAgcGF0aCA9IFB5T1NfRlNQYXRoKGFyZyk7CisgICAgICAgIGlmIChwYXRoID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBhcmc7Ci0gICAgICAgIFB5X0lOQ1JFRihvdXRwdXQpOworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGFyZykpIHsKLSAgICAgICAgYXJnID0gUHlCeXRlc19Gcm9tT2JqZWN0KGFyZyk7Ci0gICAgICAgIGlmICghYXJnKQorICAgIGVsc2UgeworICAgICAgICBwYXRoID0gYXJnOworICAgICAgICBQeV9JTkNSRUYoYXJnKTsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhdGgpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShQeUJ5dGVzX0FTX1NUUklORyhhcmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGFyZykpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKLSAgICAgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0ID0gcGF0aDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayhwYXRoKSB8fCBpc19idWZmZXIpIHsKKyAgICAgICAgUHlPYmplY3QgKnBhdGhfYnl0ZXMgPSBOVUxMOworCisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhwYXRoKSAmJgorICAgICAgICAgICAgUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAicGF0aCBzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgUHlfVFlQRShhcmcpLT50cF9uYW1lKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvdXRwdXQpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJkZWNvZGVyIGZhaWxlZCB0byByZXR1cm4gdW5pY29kZSIpOworICAgICAgICB9CisgICAgICAgIHBhdGhfYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3QocGF0aCk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgaWYgKCFwYXRoX2J5dGVzKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShQeUJ5dGVzX0FTX1NUUklORyhwYXRoX2J5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShwYXRoX2J5dGVzKSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoX2J5dGVzKTsKKyAgICAgICAgaWYgKCFvdXRwdXQpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZyBvciBieXRlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAicGF0aCBzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhcmcpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKSB7CkBAIC0zNzEyLDcgKzM5OTEsNyBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpID09IE5VTEwpIHsKICAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSk7Ci0gICAgICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN0cmljdCIpOworICAgICAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoUHlCeXRlc19HRVRfU0laRShieXRlcykgKyAxKTsKQEAgLTM3MjIsNyArNDAwMSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgICAgIFB5X01FTUNQWShfUHlVbmljb2RlX1VURjgodW5pY29kZSksCisgICAgICAgIG1lbWNweShfUHlVbmljb2RlX1VURjgodW5pY29kZSksCiAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCiAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpICsgMSk7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CkBAIC0zOTYyLDcgKzQyNDEsNyBAQAogICAgIFB5X0NMRUFSKCpleGNlcHRpb25PYmplY3QpOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogLyogZXJyb3IgaGFuZGxpbmcgY2FsbGJhY2sgaGVscGVyOgogICAgYnVpbGQgYXJndW1lbnRzLCBjYWxsIHRoZSBjYWxsYmFjayBhbmQgY2hlY2sgdGhlIGFyZ3VtZW50cywKICAgIGlmIG5vIGV4Y2VwdGlvbiBvY2N1cnJlZCwgY29weSB0aGUgcmVwbGFjZW1lbnQgdG8gdGhlIG91dHB1dApAQCAtMzk3OCw3ICs0MjU3LDcgQEAKICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKICAgICBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeU9iamVjdCAqcmVzdHVwbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsKQEAgLTQwNzYsNyArNDM1NSw3IEBACiAgICAgUHlfWERFQ1JFRihyZXN0dXBsZSk7CiAgICAgcmV0dXJuIC0xOwogfQotI2VuZGlmICAgLyogSEFWRV9NQkNTICovCisjZW5kaWYgICAvKiBNU19XSU5ET1dTICovCiAKIHN0YXRpYyBpbnQKIHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKQEAgLTQwODYsNyArNDM2NSw3IEBACiAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCiAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyIC8qIFB5T2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MgKi8pCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5T2JqZWN0ICpyZXN0dXBsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOwpAQCAtNDY5Miw4ICs0OTcxLDkgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKIAogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgaWYgKGNvbnN1bWVkKQpAQCAtNDcxOCw2ICs0OTk4LDcgQEAKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQga2luZCA9IHdyaXRlci5raW5kOworCiAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHdyaXRlci5idWZmZXIpKQogICAgICAgICAgICAgICAgIGNoID0gYXNjaWlsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwgd3JpdGVyLmRhdGEsICZ3cml0ZXIucG9zKTsKQEAgLTQ3NTYsMjQgKzUwMzcsNTYgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgInV0Zi04IiwgZXJybXNnLAotICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ3cml0ZXIpKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikgeworICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCAweGZmZmQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCZ3cml0ZXIsIFB5VW5pY29kZV8yQllURV9LSU5EKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgZm9yIChpPXN0YXJ0aW5wb3M7IGk8ZW5kaW5wb3M7IGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gKFB5X1VDUzQpKHVuc2lnbmVkIGNoYXIpKHN0YXJ0c1tpXSk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggKyAweGRjMDApOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHMgKz0gKGVuZGlucG9zIC0gc3RhcnRpbnBvcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKKyAgICAgICAgICAgICAgICAgICAgInV0Zi04IiwgZXJybXNnLAorICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKKyAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CiAgICAgfQogCiBFbmQ6CiAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAqY29uc3VtZWQgPSBzIC0gc3RhcnRzOwogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDY1LDcgKzUzNzgsNyBAQAogICAgIGNvbnN0IHZvaWQgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUFlfVUlOVDMyX1QgKm91dDsKKyAgICB1aW50MzJfdCAqb3V0OwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyIDw9IDA7CiAjZWxzZQpAQCAtNTA5Niw3ICs1NDA5LDcgQEAKIAogICAgIC8qIG91dHB1dCBidWZmZXIgaXMgNC1ieXRlcyBhbGlnbmVkICovCiAgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCA0KSk7Ci0gICAgb3V0ID0gKFBZX1VJTlQzMl9UICopUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgb3V0ID0gKHVpbnQzMl90ICopUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQogICAgICAgICAqb3V0KysgPSAweEZFRkY7CiAgICAgaWYgKGxlbiA9PSAwKQpAQCAtNTE2Miw3ICs1NDc1LDcgQEAKIAogICAgICAgICAvKiBmb3VyIGJ5dGVzIGFyZSByZXNlcnZlZCBmb3IgZWFjaCBzdXJyb2dhdGUgKi8KICAgICAgICAgaWYgKG1vcmV1bml0cyA+IDEpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gb3V0IC0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9IG91dCAtICh1aW50MzJfdCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgICAgICAgICAgUHlfc3NpemVfdCBtb3JlYnl0ZXMgPSA0ICogKG1vcmV1bml0cyAtIDEpOwogICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUodikgPiBQWV9TU0laRV9UX01BWCAtIG1vcmVieXRlcykgewogICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KQEAgLTUxNzEsMTEgKzU0ODQsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIFB5Qnl0ZXNfR0VUX1NJWkUodikgKyBtb3JlYnl0ZXMpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgb3V0ID0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodikgKyBvdXRwb3M7CisgICAgICAgICAgICBvdXQgPSAodWludDMyX3QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwpAQCAtNTQyNiwzNiArNTczOSw0NSBAQAogICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKSB7CiAgICAgICAgIGNvbnN0IFB5X1VDUzQgKmluID0gKGNvbnN0IFB5X1VDUzQgKilkYXRhOwogICAgICAgICBjb25zdCBQeV9VQ1M0ICplbmQgPSBpbiArIGxlbjsKLSAgICAgICAgd2hpbGUgKGluIDwgZW5kKQotICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApCisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICBwYWlycysrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIgLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMiAtIHBhaXJzIC0gKGJ5dGVvcmRlciA9PSAwKSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CiAgICAgbnNpemUgPSBsZW4gKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCk7CiAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbnNpemUgKiAyKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyAyLWJ5dGVzIGFsaWduZWQgKi8KICAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDIpKTsKICAgICBvdXQgPSAodW5zaWduZWQgc2hvcnQgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBpZiAoYnl0ZW9yZGVyID09IDApCisgICAgaWYgKGJ5dGVvcmRlciA9PSAwKSB7CiAgICAgICAgICpvdXQrKyA9IDB4RkVGRjsKLSAgICBpZiAobGVuID09IDApCisgICAgfQorICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICBnb3RvIGRvbmU7CisgICAgfQogCiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgdWNzMWxpYl91dGYxNl9lbmNvZGUoKGNvbnN0IFB5X1VDUzEgKilkYXRhLCBsZW4sICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKLSAgICBpZiAoYnl0ZW9yZGVyIDwgMCkKKyAgICBpZiAoYnl0ZW9yZGVyIDwgMCkgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYtbGUiOwotICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA+IDApCisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA+IDApIHsKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2LWJlIjsKLSAgICBlbHNlCisgICAgfQorICAgIGVsc2UgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYiOworICAgIH0KIAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKHBvcyA8IGxlbikgewpAQCAtNTUxOCw3ICs1ODQwLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwpAQCAtNTU3MSw2MSArNTg5Myw2IEBACiAKIC8qIC0tLSBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlLCBkZXRlcm1pbmVzCi0gICBpZiBhbGwgdGhlIGVzY2FwZXMgaW4gdGhlIHN0cmluZyBtYWtlIGl0IHN0aWxsIGEgdmFsaWQgQVNDSUkgc3RyaW5nLgotICAgUmV0dXJucyAtMSBpZiBhbnkgZXNjYXBlcyB3ZXJlIGZvdW5kIHdoaWNoIGNhdXNlIHRoZSBzdHJpbmcgdG8KLSAgIHBvcCBvdXQgb2YgQVNDSUkgcmFuZ2UuICBPdGhlcndpc2UgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZQotICAgcmVxdWlyZWQgYnVmZmVyIHRvIGhvbGQgdGhlIHN0cmluZy4KLSAgICovCi1zdGF0aWMgUHlfc3NpemVfdAotbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBzaXplOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKLQotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgZm9yICg7IHAgPCBlbmQ7ICsrcCkgewotICAgICAgICBpZiAoKnAgPiAxMjcpIHsKLSAgICAgICAgICAgIC8qIE5vbi1BU0NJSSAqLwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCpwICE9ICdcXCcpIHsKLSAgICAgICAgICAgIC8qIE5vcm1hbCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICsrbGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogQmFja3NsYXNoLWVzY2FwZSwgY2hlY2sgbmV4dCBjaGFyICovCi0gICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICAvKiBFc2NhcGUgc2VxdWVuY2UgcmVhY2hlcyB0aWxsIGVuZCBvZiBzdHJpbmcgb3IKLSAgICAgICAgICAgICAgIG5vbi1BU0NJSSBmb2xsb3ctdXAuICovCi0gICAgICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAgPiAxMjcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgc3dpdGNoICgqcCkgewotICAgICAgICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgICAgIC8qIGJhY2tzbGFzaCArIFxuIHJlc3VsdCBpbiB6ZXJvIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXCcnOiBjYXNlICdcIic6Ci0gICAgICAgICAgICBjYXNlICdiJzogY2FzZSAnZic6IGNhc2UgJ3QnOgotICAgICAgICAgICAgY2FzZSAnbic6IGNhc2UgJ3InOiBjYXNlICd2JzogY2FzZSAnYSc6Ci0gICAgICAgICAgICAgICAgKytsZW5ndGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKLSAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgotICAgICAgICAgICAgY2FzZSAneCc6IGNhc2UgJ3UnOiBjYXNlICdVJzogY2FzZSAnTic6Ci0gICAgICAgICAgICAgICAgLyogdGhlc2UgZG8gbm90IGd1YXJhbnRlZSBBU0NJSSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvKiBjb3VudCB0aGUgYmFja3NsYXNoICsgdGhlIG90aGVyIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgICAgIGxlbmd0aCArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KIHN0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKIAogUHlPYmplY3QgKgpAQCAtNTYzNCwyMTggKzU5MDEsMjE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7Ci0gICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKICAgICBjb25zdCBjaGFyICplbmQ7Ci0gICAgY2hhciogbWVzc2FnZTsKLSAgICBQeV9VQ1M0IGNociA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbGVuOwogCi0gICAgbGVuID0gbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKHMsIHNpemUpOwotICAgIGlmIChsZW4gPT0gMCkKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwotCi0gICAgLyogQWZ0ZXIgbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKCkgdGhlcmUgYXJlIHR3byBhbHRlcm5hdGl2ZXMsCi0gICAgICAgZWl0aGVyIHRoZSBzdHJpbmcgaXMgcHVyZSBBU0NJSSB3aXRoIG5hbWVkIGVzY2FwZXMgbGlrZSBcbiwgZXRjLgotICAgICAgIGFuZCB3ZSBkZXRlcm1pbmVkIGl0J3MgZXhhY3Qgc2l6ZSAoY29tbW9uIGNhc2UpCi0gICAgICAgb3IgaXQgY29udGFpbnMgXHgsIFx1LCAuLi4gZXNjYXBlIHNlcXVlbmNlcy4gIHRoZW4gd2UgY3JlYXRlIGEKLSAgICAgICBsZWdhY3kgd2NoYXIgc3RyaW5nIGFuZCByZXNpemUgaXQgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLiAqLworICAgIH0KKyAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZworICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCisgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuCisgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCisgICAgICAgd2UnbGwgaGF2ZSB0byBhbGxvY2F0ZSBtb3JlIHNwYWNlKSAqLwogICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKLSAgICBpZiAobGVuID4gMCkgewotICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCi0gICAgICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCi0gICAgICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgotICAgICAgICAgICAoYnV0IGlmIHRoZSBlcnJvciBjYWxsYmFjayByZXR1cm5zIGEgbG9uZyByZXBsYWNlbWVudCBzdHJpbmcKLSAgICAgICAgICAgd2UnbGwgaGF2ZSB0byBhbGxvY2F0ZSBtb3JlIHNwYWNlKSAqLwotICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc2l6ZSwgMTI3KSA8IDApIHsKKyAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKICAgICBlbmQgPSBzICsgc2l6ZTsKLQogICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgUHlfVUNTNCB4OwotICAgICAgICBpbnQgZGlnaXRzOworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKKyAgICAgICAgUHlfVUNTNCBjaDsKKyAgICAgICAgaW50IGNvdW50OworICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CisgICAgICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CisgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2U7CisKKyNkZWZpbmUgV1JJVEVfQVNDSUlfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gMTI3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBXUklURV9DSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChjaCA8PSB3cml0ZXIubWF4Y2hhcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIGNoKSA8IDApIHsgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSB3aGlsZSgwKQogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwotICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGlmIChjICE9ICdcXCcpIHsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHMgLSAxOwogICAgICAgICAvKiBcIC0gRXNjYXBlcyAqLwotICAgICAgICBzKys7Ci0gICAgICAgIGMgPSAqcysrOwotICAgICAgICBpZiAocyA+IGVuZCkKLSAgICAgICAgICAgIGMgPSAnXDAnOyAvKiBJbnZhbGlkIGFmdGVyIFwgKi8KKyAgICAgICAgaWYgKHMgPj0gZW5kKSB7CisgICAgICAgICAgICBtZXNzYWdlID0gIlxcIGF0IGVuZCBvZiBzdHJpbmciOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CiAKKyAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7CiAgICAgICAgIHN3aXRjaCAoYykgewogCiAgICAgICAgICAgICAvKiBceCBlc2NhcGVzICovCi0jZGVmaW5lIFdSSVRFQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIChjaCkpIDwgMCkgICAgXAotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSB3aGlsZSgwKQotCi0gICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1xcJzogV1JJVEVDSEFSKCdcXCcpOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOiBXUklURUNIQVIoJ1wnJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdcIic6IFdSSVRFQ0hBUignXCInKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2InOiBXUklURUNIQVIoJ1xiJyk7IGJyZWFrOworICAgICAgICBjYXNlICdcbic6IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcXCc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xcJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcJyc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wnJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcIic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wiJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdiJzogV1JJVEVfQVNDSUlfQ0hBUignXGInKTsgY29udGludWU7CiAgICAgICAgIC8qIEZGICovCi0gICAgICAgIGNhc2UgJ2YnOiBXUklURUNIQVIoJ1wwMTQnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3QnOiBXUklURUNIQVIoJ1x0Jyk7IGJyZWFrOwotICAgICAgICBjYXNlICduJzogV1JJVEVDSEFSKCdcbicpOyBicmVhazsKLSAgICAgICAgY2FzZSAncic6IFdSSVRFQ0hBUignXHInKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2YnOiBXUklURV9BU0NJSV9DSEFSKCdcMDE0Jyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICd0JzogV1JJVEVfQVNDSUlfQ0hBUignXHQnKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ24nOiBXUklURV9BU0NJSV9DSEFSKCdcbicpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAncic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xyJyk7IGNvbnRpbnVlOwogICAgICAgICAvKiBWVCAqLwotICAgICAgICBjYXNlICd2JzogV1JJVEVDSEFSKCdcMDEzJyk7IGJyZWFrOworICAgICAgICBjYXNlICd2JzogV1JJVEVfQVNDSUlfQ0hBUignXDAxMycpOyBjb250aW51ZTsKICAgICAgICAgLyogQkVMLCBub3QgY2xhc3NpYyBDICovCi0gICAgICAgIGNhc2UgJ2EnOiBXUklURUNIQVIoJ1wwMDcnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2EnOiBXUklURV9BU0NJSV9DSEFSKCdcMDA3Jyk7IGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBcT09PIChvY3RhbCkgZXNjYXBlcyAqLwogICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKICAgICAgICAgY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6Ci0gICAgICAgICAgICB4ID0gc1stMV0gLSAnMCc7CisgICAgICAgICAgICBjaCA9IGMgLSAnMCc7CiAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKSB7Ci0gICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7Ci0gICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykKLSAgICAgICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgY2ggPSAoY2g8PDMpICsgKnMrKyAtICcwJzsKKyAgICAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gKGNoPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgV1JJVEVDSEFSKHgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBoZXggZXNjYXBlcyAqLwogICAgICAgICAgICAgLyogXHhYWCAqLwogICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDI7CisgICAgICAgICAgICBjb3VudCA9IDI7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXHhYWCBlc2NhcGUiOwogICAgICAgICAgICAgZ290byBoZXhlc2NhcGU7CiAKICAgICAgICAgICAgIC8qIFx1WFhYWCAqLwogICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDQ7CisgICAgICAgICAgICBjb3VudCA9IDQ7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXHVYWFhYIGVzY2FwZSI7CiAgICAgICAgICAgICBnb3RvIGhleGVzY2FwZTsKIAogICAgICAgICAgICAgLyogXFVYWFhYWFhYWCAqLwogICAgICAgICBjYXNlICdVJzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDg7CisgICAgICAgICAgICBjb3VudCA9IDg7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXFVYWFhYWFhYWCBlc2NhcGUiOwogICAgICAgICBoZXhlc2NhcGU6Ci0gICAgICAgICAgICBjaHIgPSAwOwotICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCBkaWdpdHMpIHsKLSAgICAgICAgICAgICAgICAvKiBjb3VudCBvbmx5IGhleCBkaWdpdHMgKi8KLSAgICAgICAgICAgICAgICBmb3IgKDsgcyA8IGVuZDsgKytzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKDsgZGlnaXRzLS07ICsrcykgeworICAgICAgICAgICAgZm9yIChjaCA9IDA7IGNvdW50ICYmIHMgPCBlbmQ7ICsrcywgLS1jb3VudCkgewogICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgICAgICBpZiAoIVB5X0lTWERJR0lUKGMpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGNociA9IChjaHI8PDQpICYgfjB4RjsKLSAgICAgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgICAgIGNociArPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgICAgICAgICBjaHIgKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdBJzsKKyAgICAgICAgICAgICAgICBjaCA8PD0gNDsKKyAgICAgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggKz0gYyAtICcwJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnYScgLSAxMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ0EnIC0gMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNociA9PSAweGZmZmZmZmZmICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgLyogX2RlY29kaW5nX2Vycm9yIHdpbGwgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4gaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICB0YXJnZXQgYnVmZmVyLiAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdG9yZToKLSAgICAgICAgICAgIC8qIHdoZW4gd2UgZ2V0IGhlcmUsIGNociBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgbWVzc2FnZSA9ICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIjsKLSAgICAgICAgICAgIGlmIChjaHIgPiBNQVhfVU5JQ09ERSkKKyAgICAgICAgICAgIGlmIChjb3VudCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBXUklURUNIQVIoY2hyKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaCBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLworICAgICAgICAgICAgaWYgKGNoID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gImlsbGVnYWwgVW5pY29kZSBjaGFyYWN0ZXIiOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoY2gpOworICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIFxOe25hbWV9ICovCiAgICAgICAgIGNhc2UgJ04nOgotICAgICAgICAgICAgbWVzc2FnZSA9ICJtYWxmb3JtZWQgXFxOIGNoYXJhY3RlciBlc2NhcGUiOwogICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgLyogbG9hZCB0aGUgdW5pY29kZSBkYXRhIG1vZHVsZSAqLwogICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSSA9IChfUHlVbmljb2RlX05hbWVfQ0FQSSAqKVB5Q2Fwc3VsZV9JbXBvcnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVEYXRhX0NBUFNVTEVfTkFNRSwgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHVjbmhhc2hFcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVW5pY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxcTiBlc2NhcGVzIG5vdCBzdXBwb3J0ZWQgKGNhbid0IGxvYWQgdW5pY29kZWRhdGEgbW9kdWxlKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICgqcyA9PSAneycpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdGFydCA9IHMrMTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdGFydCA9ICsrczsKKyAgICAgICAgICAgICAgICBzaXplX3QgbmFtZWxlbjsKICAgICAgICAgICAgICAgICAvKiBsb29rIGZvciB0aGUgY2xvc2luZyBicmFjZSAqLwotICAgICAgICAgICAgICAgIHdoaWxlICgqcyAhPSAnfScgJiYgcyA8IGVuZCkKKyAgICAgICAgICAgICAgICB3aGlsZSAocyA8IGVuZCAmJiAqcyAhPSAnfScpCiAgICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAocyA+IHN0YXJ0ICYmIHMgPCBlbmQgJiYgKnMgPT0gJ30nKSB7CisgICAgICAgICAgICAgICAgbmFtZWxlbiA9IHMgLSBzdGFydDsKKyAgICAgICAgICAgICAgICBpZiAobmFtZWxlbiAmJiBzIDwgZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIGZvdW5kIGEgbmFtZS4gIGxvb2sgaXQgdXAgaW4gdGhlIHVuaWNvZGUgZGF0YWJhc2UgKi8KLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJ1bmtub3duIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUiOwogICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzIC0gc3RhcnQgLSAxIDw9IElOVF9NQVggJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCkocy1zdGFydC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hyLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RvcmU7CisgICAgICAgICAgICAgICAgICAgIGNoID0gMHhmZmZmZmZmZjsgLyogaW4gY2FzZSAnZ2V0Y29kZScgbWVzc2VzIHVwICovCisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lbGVuIDw9IElOVF9NQVggJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCluYW1lbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaCwgMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICAgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAocyA+IGVuZCkgewotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiXFwgYXQgZW5kIG9mIHN0cmluZyI7Ci0gICAgICAgICAgICAgICAgcy0tOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBXUklURUNIQVIoJ1xcJyk7Ci0gICAgICAgICAgICAgICAgV1JJVEVDSEFSKCh1bnNpZ25lZCBjaGFyKXNbLTFdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlICdcXCVjJyIsIGMpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBXUklURV9BU0NJSV9DSEFSKCdcXCcpOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRpbnVlOwogCiAgICAgICBlcnJvcjoKICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBlbmQgLSBzICsgd3JpdGVyLnBvczsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ3cml0ZXIpKQorICAgICAgICAgICAgICAgICZ3cml0ZXIpKSB7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgd3JpdGVyLm1pbl9sZW5ndGgsIDEyNykgPCAwKSB7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKworI3VuZGVmIFdSSVRFX0FTQ0lJX0NIQVIKKyN1bmRlZiBXUklURV9DSEFSCiAgICAgfQotI3VuZGVmIFdSSVRFQ0hBUgogCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKLSAgdWNuaGFzaEVycm9yOgotICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgUHlFeGNfVW5pY29kZUVycm9yLAotICAgICAgICAiXFxOIGVzY2FwZXMgbm90IHN1cHBvcnRlZCAoY2FuJ3QgbG9hZCB1bmljb2RlZGF0YSBtb2R1bGUpIgotICAgICAgICApOwotICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiBOVUxMOwotCiAgIG9uRXJyb3I6CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKQEAgLTU4NjYsOSArNjEzMCw5IEBACiAgICAgUHlfc3NpemVfdCBpLCBsZW47CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKLSAgICBpbnQga2luZDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAwOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZTsKIAogICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSBjaGFyYWN0ZXIKICAgICAgICBlc2NhcGUuCkBAIC01ODgyLDYwICs2MTQ2LDcxIEBACiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7Ci0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiBleHBhbmRzaXplID0gNDsgYnJlYWs7Ci0gICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDY7IGJyZWFrOwotICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSAxMDsgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKGxlbiA9PSAwKQorICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICB9CiAKLSAgICBpZiAobGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gMiAtIDEpIC8gZXhwYW5kc2l6ZSkKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CisgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLworICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CisgICAgaWYgKGxlbiA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGV4cGFuZHNpemUqbGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQorICAgIH0KKyAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAyICsgZXhwYW5kc2l6ZSAqIGxlbiArIDEpOworICAgIGlmIChyZXByID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAotICAgICAgICAvKiBFc2NhcGUgYmFja3NsYXNoZXMgKi8KLSAgICAgICAgaWYgKGNoID09ICdcXCcpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2UgKi8KKyAgICAgICAgaWYgKGNoIDwgMHgxMDApIHsKKyAgICAgICAgICAgIGlmIChjaCA+PSAnICcgJiYgY2ggPCAxMjcpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICAvKiBDb3B5IHByaW50YWJsZSBVUyBBU0NJSSBhcy1pcyAqLworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBFc2NhcGUgYmFja3NsYXNoZXMgKi8KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwMDApIHsKLSAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAgICAgLyogTWFwIHNwZWNpYWwgd2hpdGVzcGFjZSB0byAnXHQnLCBcbicsICdccicgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdcdCcpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3QnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAnbic7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICdyJzsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgaWYgKGNoID49IDI1NikgeworICAgICAgICAgICAgLyogTWFwIG5vbi1wcmludGFibGUgVVMgQVNDSUkgYW5kIDgtYml0IGNoYXJhY3RlcnMgdG8gJ1x4SEgnICovCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlOiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1SEhISCcgKi8KKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7CisgICAgICAgICAgICAvKiBVKzAxMDAtVStmZmZmICovCiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOwpAQCAtNTk0MywzNyArNjIxOCwyOCBAQAogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07CiAgICAgICAgIH0KKyAgICAgICAgLyogVSswMTAwMDAtVSsxMGZmZmYgcmFuZ2U6IE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMEhISEhISCcgKi8KKyAgICAgICAgZWxzZSB7CiAKLSAgICAgICAgLyogTWFwIHNwZWNpYWwgd2hpdGVzcGFjZSB0byAnXHQnLCBcbicsICdccicgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IHR3byBkaWdpdHMgYXJlIHplcm8gKi8KKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSAmJiBNQVhfVU5JQ09ERSA8PSAweDEwZmZmZik7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICAqcCsrID0gJ1UnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnbic7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3InOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogTWFwIG5vbi1wcmludGFibGUgVVMgQVNDSUkgdG8gJ1x4aGgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoIDwgJyAnIHx8IGNoID49IDB4N0YpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9CiAKICAgICBhc3NlcnQocCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpID4gMCk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApCisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiByZXByOwogfQogCkBAIC01OTgzLDggKzYyNDksMTAgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQorICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CiAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTU5OTgsOTUgKzYyNjYsMTA3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7Ci0gICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKICAgICBjb25zdCBjaGFyICplbmQ7Ci0gICAgY29uc3QgY2hhciAqYnM7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CisgICAgfQogCiAgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQogICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLiAoQnV0IGRlY29kaW5nIGVycm9yCiAgICAgICAgaGFuZGxlciBtaWdodCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nKSAqLwogICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKLSAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPCAwKSB7CisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKICAgICBlbmQgPSBzICsgc2l6ZTsKICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VDUzQgeDsKLSAgICAgICAgaW50IGk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQgY291bnQ7CisgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKKyAgICAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKKyAgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZTsKKworI2RlZmluZSBXUklURV9DSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChjaCA8PSB3cml0ZXIubWF4Y2hhcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIGNoKSA8IDApIHsgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSB3aGlsZSgwKQogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwotICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzKys7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKGMgIT0gJ1xcJyB8fCBzID49IGVuZCkgeworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKIAotICAgICAgICAvKiBcdS1lc2NhcGVzIGFyZSBvbmx5IGludGVycHJldGVkIGlmZiB0aGUgbnVtYmVyIG9mIGxlYWRpbmcKLSAgICAgICAgICAgYmFja3NsYXNoZXMgaWYgb2RkICovCi0gICAgICAgIGJzID0gczsKLSAgICAgICAgZm9yICg7cyA8IGVuZDspIHsKLSAgICAgICAgICAgIGlmICgqcyAhPSAnXFwnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzKys7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICBpZiAoYyA9PSAndScpIHsKKyAgICAgICAgICAgIGNvdW50ID0gNDsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcdVhYWFggZXNjYXBlIjsKICAgICAgICAgfQotICAgICAgICBpZiAoKChzIC0gYnMpICYgMSkgPT0gMCB8fAotICAgICAgICAgICAgcyA+PSBlbmQgfHwKLSAgICAgICAgICAgICgqcyAhPSAndScgJiYgKnMgIT0gJ1UnKSkgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdGVyLnBvcy0tOwotICAgICAgICBjb3VudCA9ICpzPT0ndScgPyA0IDogODsKLSAgICAgICAgcysrOwotCi0gICAgICAgIC8qIFx1WFhYWCB3aXRoIDQgaGV4IGRpZ2l0cywgXFV4eHh4eHh4eCB3aXRoIDggKi8KLSAgICAgICAgZm9yICh4ID0gMCwgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK3MpIHsKLSAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpIHsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJ0cnVuY2F0ZWQgXFx1WFhYWCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgZ290byBuZXh0Qnl0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggPSAoeDw8NCkgJiB+MHhGOwotICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgICAgICAgICAgIHggKz0gYyAtICcwJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwotICAgICAgICB9Ci0gICAgICAgIGlmICh4IDw9IE1BWF9VTklDT0RFKSB7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnVScpIHsKKyAgICAgICAgICAgIGNvdW50ID0gODsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcVVhYWFhYWFhYIGVzY2FwZSI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssICdcXCcpOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICBuZXh0Qnl0ZToKLSAgICAgICAgOworICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0cyAtIDI7CisKKyAgICAgICAgLyogXHVISEhIIHdpdGggNCBoZXggZGlnaXRzLCBcVTAwSEhISEhIIHdpdGggOCAqLworICAgICAgICBmb3IgKGNoID0gMDsgY291bnQgJiYgcyA8IGVuZDsgKytzLCAtLWNvdW50KSB7CisgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7CisgICAgICAgICAgICBjaCA8PD0gNDsKKyAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAnMCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ2EnIC0gMTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnQScgJiYgYyA8PSAnRicpIHsKKyAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdBJyAtIDEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghY291bnQpIHsKKyAgICAgICAgICAgIGlmIChjaCA8PSBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgIFdSSVRFX0NIQVIoY2gpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVzc2FnZSA9ICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiOworICAgICAgICB9CisKKyAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBlbmQgLSBzICsgd3JpdGVyLnBvczsKKyAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKKyAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAorICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAorICAgICAgICAgICAgICAgICZ3cml0ZXIpKSB7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCB3cml0ZXIubWluX2xlbmd0aCwgMTI3KSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorCisjdW5kZWYgV1JJVEVfQ0hBUgogICAgIH0KICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwpAQCAtNjA5Nyw2ICs2Mzc3LDcgQEAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOworCiB9CiAKIApAQCAtNjEwNSw3ICs2Mzg2LDYgQEAKIHsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwotICAgIGNoYXIgKnE7CiAgICAgUHlfc3NpemVfdCBleHBhbmRzaXplLCBwb3M7CiAgICAgaW50IGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTYxMTUsNDMgKzYzOTUsNDEgQEAKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkYXRhLCBsZW4pOworICAgIH0KKwogICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CiAgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLwogICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CiAKLSAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KKyAgICB9CiAgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIGxlbik7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICBpZiAocmVwciA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChsZW4gPT0gMCkKKyAgICB9CisgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIHJldHVybiByZXByOworICAgIH0KIAotICAgIHAgPSBxID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CisgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwogICAgIGZvciAocG9zID0gMDsgcG9zIDwgbGVuOyBwb3MrKykgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKLSAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwotICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKKworICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlOiBDb3B5IDgtYml0IGNoYXJhY3RlcnMgYXMtaXMgKi8KKyAgICAgICAgaWYgKGNoIDwgMHgxMDApIHsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgICAgIH0KLSAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDI1NikgeworICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlOiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1SEhISCcgKi8KKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwpAQCAtNjE1OSwxNCArNjQzNywyNiBAQAogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICAvKiBDb3B5IGV2ZXJ5dGhpbmcgZWxzZSBhcy1pcyAqLwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOworICAgICAgICAvKiBVKzAxMDAwMC1VKzEwZmZmZiByYW5nZTogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAwSEhISEhIJyAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSAmJiBNQVhfVU5JQ09ERSA8PSAweDEwZmZmZik7CisgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICpwKysgPSAnVSc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CisgICAgICAgIH0KICAgICB9CiAKLSAgICBhc3NlcnQocCA+IHEpOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBxKSA8IDApCisgICAgYXNzZXJ0KHAgPiBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiByZXByOwogfQogCkBAIC02MzQ0LDcgKzY2MzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk9uO2VuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ci9ieXRlcywgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk9uO2VuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ci9ieXRlcywgaW50KSB0dXBsZSI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpyZXN1bmljb2RlOwpAQCAtNjM5OCwyNSArNjY4OCwyMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfZW5jb2RlX3VjczEoUHlPYmplY3QgKnVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbWl0KQorICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VQ1M0IGxpbWl0KQogewogICAgIC8qIGlucHV0IHN0YXRlICovCiAgICAgUHlfc3NpemVfdCBwb3M9MCwgc2l6ZTsKICAgICBpbnQga2luZDsKICAgICB2b2lkICpkYXRhOwotICAgIC8qIG91dHB1dCBvYmplY3QgKi8KLSAgICBQeU9iamVjdCAqcmVzOwogICAgIC8qIHBvaW50ZXIgaW50byB0aGUgb3V0cHV0ICovCiAgICAgY2hhciAqc3RyOwotICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCi0gICAgUHlfc3NpemVfdCByZXNzaXplOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gKGxpbWl0ID09IDI1NikgPyAibGF0aW4tMSIgOiAiYXNjaWkiOwogICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9IChsaW1pdCA9PSAyNTYpID8gIm9yZGluYWwgbm90IGluIHJhbmdlKDI1NikiIDogIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLCAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CisgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisgICAgLyogb3V0cHV0IG9iamVjdCAqLworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjQyNywxODYgKzY3MTQsMTU3IEBACiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwogICAgIGlmIChzaXplID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwotICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQorCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgcmVzc2l6ZSA9IHNpemU7CiAKICAgICB3aGlsZSAocG9zIDwgc2l6ZSkgewotICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKIAogICAgICAgICAvKiBjYW4gd2UgZW5jb2RlIHRoaXM/ICovCi0gICAgICAgIGlmIChjPGxpbWl0KSB7CisgICAgICAgIGlmIChjaCA8IGxpbWl0KSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpYzsKKyAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKWNoOwogICAgICAgICAgICAgKytwb3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBuZXdwb3MsIHJlc3BvcywgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zLCBpOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KICAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gcG9zOwotICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gcG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gY29sbHN0YXJ0ICsgMTsKICAgICAgICAgICAgIC8qIGZpbmQgYWxsIHVuZWNvZGFibGUgY2hhcmFjdGVycyAqLworCiAgICAgICAgICAgICB3aGlsZSAoKGNvbGxlbmQgPCBzaXplKSAmJiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgY29sbGVuZCkgPj0gbGltaXQpKQogICAgICAgICAgICAgICAgICsrY29sbGVuZDsKKworICAgICAgICAgICAgLyogT25seSBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBpZiBpdCdzIG5vdCB0aGUgbGFzdCB3cml0ZSAqLworICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IChjb2xsZW5kIDwgc2l6ZSk7CisKICAgICAgICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICAgICAgICAgIGlmICgoZXJyb3JzPT1OVUxMKSB8fCAoIXN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSkpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDI7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCisgICAgICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKSB7CisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0LCBjb2xsZW5kLCByZWFzb24pOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChjb2xsc3RhcnQrKyA8IGNvbGxlbmQpCi0gICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICc/JzsgLyogZmFsbCB0aHJvdWdoICovCi0gICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICAgICAgICAgIG1lbXNldChzdHIsICc/JywgY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyICs9IChjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggaWdub3JlIGVycm9yIGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKICAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zOwotICAgICAgICAgICAgICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbmNyOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAxMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzErMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMisyKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzMrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzQrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis1KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzYrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNysxOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIGluY3IpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gaW5jcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gKHNpemUgLSBjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gc2l6ZSAtIGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3NpemUgPD0gUFlfU1NJWkVfVF9NQVgvMiAmJiByZXF1aXJlZHNpemUgPCAyKnJlc3NpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVxdWlyZWRzaXplKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCB8fCAoUHlVbmljb2RlX0NoZWNrKHJlcHVuaWNvZGUpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSkKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIHN0ciA9IGJhY2tzbGFzaHJlcGxhY2UoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgY29sbHN0YXJ0LCBjb2xsZW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXB1bmljb2RlKSkgewotICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3RseSBjb3B5IGJ5dGVzIHJlc3VsdCB0byBvdXRwdXQuICovCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX1NpemUocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXBzaXplID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogTWFrZSByb29tIGZvciBhbGwgYWRkaXRpb25hbCBieXRlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSAtIDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVzc2l6ZStyZXBzaXplLTEpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcykgKyByZXNwb3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNzaXplICs9IHJlcHNpemUtMTsKKyAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIHN0ciA9IHhtbGNoYXJyZWZyZXBsYWNlKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQpOworICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgMHhkYzgwIHx8IDB4ZGNmZiA8IGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb3QgYSBVVEYtOGIgc3Vycm9nYXRlICovCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtZW1jcHkoc3RyLCBQeUJ5dGVzX0FzU3RyaW5nKHJlcHVuaWNvZGUpLCByZXBzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9IHJlcHNpemU7Ci0gICAgICAgICAgICAgICAgICAgIHBvcyA9IG5ld3BvczsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAoY2hhcikoY2ggLSAweGRjMDApOworICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGkgPj0gY29sbGVuZCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQotICAgICAgICAgICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcsIHNvCi0gICAgICAgICAgICAgICAgICAgd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZSBmb3IgZW5jb2RhYmxlIGNoYXJhY3RlcnMpICovCi0gICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIHJlcHNpemUpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IHJlcHNpemU7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gKHNpemUgLSBjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gc2l6ZSAtIGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3NpemUgPD0gUFlfU1NJWkVfVF9NQVgvMiAmJiByZXF1aXJlZHNpemUgPCAyKnJlc3NpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVxdWlyZWRzaXplKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGNvbGxzdGFydCA9IHBvczsKKyAgICAgICAgICAgICAgICBhc3NlcnQoY29sbHN0YXJ0ICE9IGNvbGxlbmQpOworICAgICAgICAgICAgICAgIC8qIGZhbGxiYWNrIHRvIGdlbmVyYWwgZXJyb3IgaGFuZGxpbmcgKi8KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gMTsKKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRGlyZWN0bHkgY29weSBieXRlcyByZXN1bHQgdG8gb3V0cHV0LiAqLworICAgICAgICAgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhyZXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocmVwKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwotICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyB1bmVuY29kYWJsZSBpbiB0aGUgcmVwbGFjZW1lbnQKLSAgICAgICAgICAgICAgICAgICBhbmQgY29weSBpdCB0byB0aGUgb3V0cHV0ICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjID49IGxpbWl0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcysxLCByZWFzb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHJlcCkpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShyZXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGg6IGFsbCBjaGFyYWN0ZXJzIGFyZSBzbWFsbGVyIHRoYW4gbGltaXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChsaW1pdCA+PSAxMjgpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCkpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICpzdHIgPSAoY2hhciljOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc3RyLCByZXBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgYW5kIGNvcHkgaXQgdG8gdGhlIG91dHB1dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPj0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcysxLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdHIgPSAoY2hhciljaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLm92ZXJhbGxvY2F0ZSB8fCBwb3MgPT0gc2l6ZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogUmVzaXplIGlmIHdlIGFsbG9jYXRlZCB0byBtdWNoICovCi0gICAgc2l6ZSA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgaWYgKHNpemUgPCByZXNzaXplKSB7IC8qIElmIHRoaXMgZmFsbHMgcmVzIHdpbGwgYmUgTlVMTCAqLwotICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCBzaXplKSA8IDApCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgfQogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gcmVzOwotCi0gIG92ZXJmbG93OgotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgc3RyKTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihyZXApOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjY2Niw4ICs2OTI0LDkgQEAKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwogICAgIGNvbnN0IGNoYXIgKmU7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAKICAgICBpZiAoc2l6ZSA9PSAwKQogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKQEAgLTY2OTYsMTIgKzY5NTUsNDIgQEAKICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCBjKTsKICAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKICAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworCisgICAgICAgIC8qIGJ5dGUgb3V0c2l6ZSByYW5nZSAweDAwLi4weDdmOiBjYWxsIHRoZSBlcnJvciBoYW5kbGVyICovCisKKyAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICAgICAgLyogRmFzdC1wYXRoOiB0aGUgZXJyb3IgaGFuZGxlciBvbmx5IHdyaXRlcyBvbmUgY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgYnV0IHdlIG1heSBzd2l0Y2ggdG8gVUNTMiBhdCB0aGUgZmlyc3Qgd3JpdGUgKi8KKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCZ3cml0ZXIsIFB5VW5pY29kZV8yQllURV9LSU5EKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAga2luZCA9IHdyaXRlci5raW5kOworICAgICAgICAgICAgZGF0YSA9IHdyaXRlci5kYXRhOworCisgICAgICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfUkVQTEFDRSkKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLnBvcywgMHhmZmZkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLnBvcywgYyArIDB4ZGMwMCk7CisgICAgICAgICAgICB3cml0ZXIucG9zKys7CisgICAgICAgICAgICArK3M7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CisgICAgICAgICAgICArK3M7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICJhc2NpaSIsICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAogICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKQEAgLTY3MTAsMTMgKzY5OTksMTMgQEAKICAgICAgICAgICAgIGRhdGEgPSB3cml0ZXIuZGF0YTsKICAgICAgICAgfQogICAgIH0KLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogICBvbkVycm9yOgogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjc1OSw3ICs3MDQ4LDcgQEAKICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjc3MSw3ICs3MDYwLDcgQEAKICMgIGRlZmluZSBXQ19FUlJfSU5WQUxJRF9DSEFSUyAweDAwODAKICNlbmRpZgogCi1zdGF0aWMgY2hhcioKK3N0YXRpYyBjb25zdCBjaGFyKgogY29kZV9wYWdlX25hbWUoVUlOVCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICoqb2JqKQogewogICAgICpvYmogPSBOVUxMOwpAQCAtNjg3OSw3ICs3MTY4LDcgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqZW5jb2Rpbmdfb2JqID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZzsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZzsKICAgICBEV09SRCBlcnI7CiAgICAgaW50IHJldCA9IC0xOwogCkBAIC03MTE1LDcgKzc0MDQsNiBAQAogICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0U7CiAgICAgQk9PTCAqcHVzZWREZWZhdWx0Q2hhciA9ICZ1c2VkRGVmYXVsdENoYXI7CiAgICAgaW50IG91dHNpemU7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgd2NoYXJfdCAqcDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSwgTlVMTCk7CkBAIC03MjI0LDcgKzc1MTIsNyBAQAogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogICAgIFB5X3NzaXplX3QgbmV3cG9zLCBuZXdvdXRzaXplOwogICAgIFB5T2JqZWN0ICpyZXA7CiAgICAgaW50IHJldCA9IC0xOwpAQCAtNzQ3OSw3ICs3NzY3LDcgQEAKIAogI3VuZGVmIE5FRURfUkVUUlkKIAotI2VuZGlmIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogLyogLS0tIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTgwODIsNyArODM3MCw3IEBACiBjaGFybWFwX2VuY29kaW5nX2Vycm9yKAogICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICppbnBvcywgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgaW50ICprbm93bl9lcnJvckhhbmRsZXIsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgX1B5X2Vycm9yX2hhbmRsZXIgKmVycm9yX2hhbmRsZXIsIFB5T2JqZWN0ICoqZXJyb3JfaGFuZGxlcl9vYmosIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICBQeU9iamVjdCAqKnJlcywgUHlfc3NpemVfdCAqcmVzcG9zKQogewogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCkBAIC04MTI5LDIzICs4NDE3LDE1IEBACiAgICAgfQogICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwCiAgICAgICogKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KLSAgICBpZiAoKmtub3duX2Vycm9ySGFuZGxlcj09LTEpIHsKLSAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgImlnbm9yZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDM7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICB9Ci0gICAgc3dpdGNoICgqa25vd25fZXJyb3JIYW5kbGVyKSB7Ci0gICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KKyAgICBpZiAoKmVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICplcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgIHN3aXRjaCAoKmVycm9yX2hhbmRsZXIpIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICByZXR1cm4gLTE7Ci0gICAgY2FzZSAyOiAvKiByZXBsYWNlICovCisKKyAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3M8Y29sbGVuZHBvczsgKytjb2xscG9zKSB7CiAgICAgICAgICAgICB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQoJz8nLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CiAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikgewpAQCAtODE1NywxMCArODQzNywxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgMzogLyogaWdub3JlICovCisgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgogICAgICAgICAqaW5wb3MgPSBjb2xsZW5kcG9zOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCisKKyAgICBjYXNlIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRToKICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKHRlbXBvcmFyaWx5IChtaXMpdXNlcyBwKSAqLwogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3MgPCBjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKQEAgLTgxNzgsOCArODQ1OSw5IEBACiAgICAgICAgIH0KICAgICAgICAgKmlucG9zID0gY29sbGVuZHBvczsKICAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgotICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCBlcnJvckhhbmRsZXIsCisgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsIGVycm9yX2hhbmRsZXJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgZXhjZXB0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCAmbmV3cG9zKTsKICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKQEAgLTgyNDIsMTIgKzg1MjQsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgcmVzcG9zID0gMDsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwKLSAgICAgKiAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAgICAgdm9pZCAqZGF0YTsKICAgICBpbnQga2luZDsKIApAQCAtODI3OCw3ICs4NTU3LDcgQEAKICAgICAgICAgaWYgKHg9PWVuY19GQUlMRUQpIHsgLyogdW5lbmNvZGFibGUgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBpZiAoY2hhcm1hcF9lbmNvZGluZ19lcnJvcih1bmljb2RlLCAmaW5wb3MsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtub3duX2Vycm9ySGFuZGxlciwgJmVycm9ySGFuZGxlciwgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yX2hhbmRsZXIsICZlcnJvcl9oYW5kbGVyX29iaiwgZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcywgJnJlc3BvcykpIHsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC04Mjk0LDEzICs4NTczLDEzIEBACiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHJlcyk7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtODM2Nyw3ICs4NjQ2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmV3cG9zKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47dHJhbnNsYXRpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO3RyYW5zbGF0aW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeV9zc2l6ZV90IGlfbmV3cG9zOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKQEAgLTg2MjQsNyArODkwMyw3IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlPYmplY3QgKgorc3RhdGljIFB5T2JqZWN0ICoKIF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChQeU9iamVjdCAqaW5wdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQpAQCAtODY1MywxMCArODkzMiw4IEBACiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOwogCi0gICAgaWYgKHNpemUgPT0gMCkgewotICAgICAgICBQeV9JTkNSRUYoaW5wdXQpOwotICAgICAgICByZXR1cm4gaW5wdXQ7Ci0gICAgfQorICAgIGlmIChzaXplID09IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChpbnB1dCk7CiAKICAgICAvKiBhbGxvY2F0ZSBlbm91Z2ggZm9yIGEgc2ltcGxlIDE6MSB0cmFuc2xhdGlvbiB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwpAQCAtODc2NywxNCArOTA0NCw5IEBACiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpOwogfQogCiBzdGF0aWMgUHlfVUNTNApAQCAtODk1Niw5ICs5MjI4LDEwIEBACiAgICAgfQogCiBzdGF0aWMgUHlfc3NpemVfdAotYW55X2ZpbmRfc2xpY2UoaW50IGRpcmVjdGlvbiwgUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCithbnlfZmluZF9zbGljZShQeU9iamVjdCogczEsIFB5T2JqZWN0KiBzMiwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCkKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwpAQCAtOTEyNyw1NCArOTQwMCwzNSBAQAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgIFB5T2JqZWN0KiBzdHJfb2JqOwotICAgIFB5T2JqZWN0KiBzdWJfb2JqOwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKLSAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoIXN0cl9vYmopCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgc3ViX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7Ci0gICAgaWYgKCFzdWJfb2JqKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1Yl9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAotICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7Ci0gICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJfb2JqKTsKLSAgICBpZiAoa2luZDEgPCBraW5kMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHIpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKLSAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7Ci0gICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yl9vYmopOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHIpOwogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogCi0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJfb2JqKTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yl9vYmosIGtpbmQxKTsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0ciwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1Yl9vYmopKQorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cikpCiAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9jb3VudCgKICAgICAgICAgICAgICAgICAoKFB5X1VDUzEqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAogICAgICAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCkBAIC05MjAxLDE2ICs5NDU1LDExIEBACiAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwotCiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiAtMTsKQEAgLTkyMTgsMzUgKzk0NjcsMTUgQEAKIAogUHlfc3NpemVfdAogUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCisgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAogICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKCFzdHIpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTI7Ci0gICAgc3ViID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3ViKTsKLSAgICBpZiAoIXN1YikgewotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTI7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoZGlyZWN0aW9uLAotICAgICAgICBzdHIsIHN1Yiwgc3RhcnQsIGVuZAotICAgICAgICApOwotCi0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1Yik7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhbnlfZmluZF9zbGljZShzdHIsIHN1YnN0ciwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKIH0KIAogUHlfc3NpemVfdApAQCAtOTM0OSwyMiArOTU3OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHN1YnN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7Ci0gICAgaWYgKHN1YnN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIFB5X0RFQ1JFRihzdWJzdHIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHRhaWxtYXRjaChzdHIsIHN1YnN0ciwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKIH0KIAogLyogQXBwbHkgZml4ZmN0IGZpbHRlciB0byB0aGUgVW5pY29kZSBvYmplY3Qgc2VsZiBhbmQgcmV0dXJuIGEKQEAgLTk2NjYsMjAgKzk4ODMsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Kb2luKFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICpzZXEpCiB7Ci0gICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzZXBsZW47Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7IC8qIHRoZSByZXN1bHQgKi8KLSAgICBQeU9iamVjdCAqZnNlcTsgICAgICAgICAgLyogUHlTZXF1ZW5jZV9GYXN0KHNlcSkgKi8KLSAgICBQeV9zc2l6ZV90IHNlcWxlbjsgICAgICAgLyogbGVuKGZzZXEpIC0tIG51bWJlciBvZiBpdGVtcyBpbiBzZXF1ZW5jZSAqLworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmZzZXE7CisgICAgUHlfc3NpemVfdCBzZXFsZW47CiAgICAgUHlPYmplY3QgKippdGVtczsKLSAgICBQeU9iamVjdCAqaXRlbTsKLSAgICBQeV9zc2l6ZV90IHN6LCBpLCByZXNfb2Zmc2V0OwotICAgIFB5X1VDUzQgbWF4Y2hhcjsKLSAgICBQeV9VQ1M0IGl0ZW1fbWF4Y2hhcjsKLSAgICBpbnQgdXNlX21lbWNweTsKLSAgICB1bnNpZ25lZCBjaGFyICpyZXNfZGF0YSA9IE5VTEwsICpzZXBfZGF0YSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxhc3Rfb2JqOwotICAgIHVuc2lnbmVkIGludCBraW5kID0gMDsKIAogICAgIGZzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qoc2VxLCAiY2FuIG9ubHkgam9pbiBhbiBpdGVyYWJsZSIpOwogICAgIGlmIChmc2VxID09IE5VTEwpIHsKQEAgLTk2OTAsMjEgKzk4OTcsMzkgQEAKICAgICAgKiBzbyB3ZSBhcmUgc3VyZSB0aGF0IGZzZXEgd29uJ3QgYmUgbXV0YXRlZC4KICAgICAgKi8KIAorICAgIGl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKGZzZXEpOwogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShmc2VxKTsKKyAgICByZXMgPSBfUHlVbmljb2RlX0pvaW5BcnJheShzZXBhcmF0b3IsIGl0ZW1zLCBzZXFsZW4pOworICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0pvaW5BcnJheShQeU9iamVjdCAqc2VwYXJhdG9yLCBQeU9iamVjdCAqKml0ZW1zLCBQeV9zc2l6ZV90IHNlcWxlbikKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2VwbGVuOworICAgIFB5T2JqZWN0ICppdGVtOworICAgIFB5X3NzaXplX3Qgc3osIGksIHJlc19vZmZzZXQ7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X1VDUzQgaXRlbV9tYXhjaGFyOworICAgIGludCB1c2VfbWVtY3B5OworICAgIHVuc2lnbmVkIGNoYXIgKnJlc19kYXRhID0gTlVMTCwgKnNlcF9kYXRhID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbGFzdF9vYmo7CisgICAgdW5zaWduZWQgaW50IGtpbmQgPSAwOworCiAgICAgLyogSWYgZW1wdHkgc2VxdWVuY2UsIHJldHVybiB1IiIuICovCiAgICAgaWYgKHNlcWxlbiA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgfQogCiAgICAgLyogSWYgc2luZ2xldG9uIHNlcXVlbmNlIHdpdGggYW4gZXhhY3QgVW5pY29kZSwgcmV0dXJuIHRoYXQuICovCiAgICAgbGFzdF9vYmogPSBOVUxMOwotICAgIGl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKGZzZXEpOwogICAgIGlmIChzZXFsZW4gPT0gMSkgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoaXRlbXNbMF0pKSB7CiAgICAgICAgICAgICByZXMgPSBpdGVtc1swXTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihyZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZzZXEpOwogICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgfQogICAgICAgICBzZXBsZW4gPSAwOwpAQCAtOTgwMiw3ICsxMDAyNyw3IEBACiAKICAgICAgICAgICAgIC8qIENvcHkgaXRlbSwgYW5kIG1heWJlIHRoZSBzZXBhcmF0b3IuICovCiAgICAgICAgICAgICBpZiAoaSAmJiBzZXBsZW4gIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kICogc2VwbGVuKTsKICAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogc2VwbGVuOwpAQCAtOTgxMCw3ICsxMDAzNSw3IEBACiAKICAgICAgICAgICAgIGl0ZW1sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKICAgICAgICAgICAgIGlmIChpdGVtbGVuICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocmVzX2RhdGEsCisgICAgICAgICAgICAgICAgbWVtY3B5KHJlc19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShpdGVtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIGl0ZW1sZW4pOwogICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBpdGVtbGVuOwpAQCAtOTgzOSwxMyArMTAwNjQsMTEgQEAKICAgICAgICAgYXNzZXJ0KHJlc19vZmZzZXQgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzKSk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKGZzZXEpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOwogICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgUHlfWERFQ1JFRihzZXApOwogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTk5NzAsMTMgKzEwMTkzLDggQEAKIHsKICAgICBQeU9iamVjdCAqbGlzdDsKIAotICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cmluZyk7Ci0gICAgaWYgKHN0cmluZyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJpbmcpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cmluZykpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTAwMDMsNyArMTAyMjEsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIGxpc3QgPSAwOwogICAgIH0KLSAgICBQeV9ERUNSRUYoc3RyaW5nKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMTA1NjQsMjggKzEwNzgxLDI3IEBACiB9CiAKIAotLyogQXJndW1lbnQgY29udmVydGVyLiAgQ29lcmNlcyB0byBhIHNpbmdsZSB1bmljb2RlIGNoYXJhY3RlciAqLworLyogQXJndW1lbnQgY29udmVydGVyLiBBY2NlcHRzIGEgc2luZ2xlIFVuaWNvZGUgY2hhcmFjdGVyLiAqLwogCiBzdGF0aWMgaW50CiBjb252ZXJ0X3VjKFB5T2JqZWN0ICpvYmosIHZvaWQgKmFkZHIpCiB7CiAgICAgUHlfVUNTNCAqZmlsbGNoYXJsb2MgPSAoUHlfVUNTNCAqKWFkZHI7Ci0gICAgUHlPYmplY3QgKnVuaW9iajsKIAotICAgIHVuaW9iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7Ci0gICAgaWYgKHVuaW9iaiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gVW5pY29kZSIpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgbXVzdCBiZSBhIHVuaWNvZGUgY2hhcmFjdGVyLCAiCisgICAgICAgICAgICAgICAgICAgICAibm90ICUuMTAwcyIsIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pb2JqKSAhPSAxKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikgIT0gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBtdXN0IGJlIGV4YWN0bHkgb25lIGNoYXJhY3RlciBsb25nIik7Ci0gICAgICAgIFB5X0RFQ1JFRih1bmlvYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgKmZpbGxjaGFybG9jID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmlvYmosIDApOwotICAgIFB5X0RFQ1JFRih1bmlvYmopOworICAgICpmaWxsY2hhcmxvYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqLCAwKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTA3MzUsNyArMTA5NTEsNyBAQAogI3VuZGVmIENPTVBBUkUKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogdW5pY29kZV9jb21wYXJlX2VxKFB5T2JqZWN0ICpzdHIxLCBQeU9iamVjdCAqc3RyMikKIHsKICAgICBpbnQga2luZDsKQEAgLTEwOTAxLDU5ICsxMTExNyw0OSBAQAogfQogCiBpbnQKLVB5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqY29udGFpbmVyLCBQeU9iamVjdCAqZWxlbWVudCkKK19QeVVuaWNvZGVfRVEoUHlPYmplY3QgKmFhLCBQeU9iamVjdCAqYmIpCiB7Ci0gICAgUHlPYmplY3QgKnN0ciwgKnN1YjsKKyAgICByZXR1cm4gdW5pY29kZV9lcShhYSwgYmIpOworfQorCitpbnQKK1B5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyKQorewogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogICAgIGludCByZXN1bHQ7CiAKLSAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KLSAgICBzdWIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChlbGVtZW50KTsKLSAgICBpZiAoIXN1YikgeworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1YnN0cikpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInaW4gPHN0cmluZz4nIHJlcXVpcmVzIHN0cmluZyBhcyBsZWZ0IG9wZXJhbmQsIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICInaW4gPHN0cmluZz4nIHJlcXVpcmVzIHN0cmluZyBhcyBsZWZ0IG9wZXJhbmQsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHIpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGNvbnRhaW5lcik7Ci0gICAgaWYgKCFzdHIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHIpID09IC0xKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOwotICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViKTsKLSAgICBpZiAoa2luZDEgPCBraW5kMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHIpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7Ci0gICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7Ci0gICAgaWYgKGxlbjEgPCBsZW4yKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyKTsKKyAgICBpZiAobGVuMSA8IGxlbjIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyKTsKICAgICBpZiAobGVuMiA9PSAxKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kMiwgYnVmMiwgMCk7CiAgICAgICAgIHJlc3VsdCA9IGZpbmRjaGFyKChjb25zdCBjaGFyICopYnVmMSwga2luZDEsIGxlbjEsIGNoLCAxKSAhPSAtMTsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yiwga2luZDEpOwotICAgICAgICBpZiAoIWJ1ZjIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHIsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTA5NzEsOSArMTExNzcsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1Yik7Ci0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKQEAgLTEwOTg1LDU2ICsxMTE4OCw0MCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0NvbmNhdChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIFB5T2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMLCAqdzsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcjI7Ci0gICAgUHlfc3NpemVfdCB1X2xlbiwgdl9sZW4sIG5ld19sZW47CisgICAgUHlfc3NpemVfdCBsZWZ0X2xlbiwgcmlnaHRfbGVuLCBuZXdfbGVuOwogCi0gICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCi0gICAgdSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOwotICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB2ID0gUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUobGVmdCkgPCAwIHx8IGVuc3VyZV91bmljb2RlKHJpZ2h0KSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogU2hvcnRjdXRzICovCi0gICAgaWYgKHYgPT0gdW5pY29kZV9lbXB0eSkgewotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIHJldHVybiB1OwotICAgIH0KLSAgICBpZiAodSA9PSB1bmljb2RlX2VtcHR5KSB7Ci0gICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgfQorICAgIGlmIChsZWZ0ID09IHVuaWNvZGVfZW1wdHkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7CisgICAgaWYgKHJpZ2h0ID09IHVuaWNvZGVfZW1wdHkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKIAotICAgIHVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodSk7Ci0gICAgdl9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KTsKLSAgICBpZiAodV9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHZfbGVuKSB7CisgICAgbGVmdF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KTsKKyAgICByaWdodF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCk7CisgICAgaWYgKGxlZnRfbGVuID4gUFlfU1NJWkVfVF9NQVggLSByaWdodF9sZW4pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOwotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdfbGVuID0gdV9sZW4gKyB2X2xlbjsKKyAgICBuZXdfbGVuID0gbGVmdF9sZW4gKyByaWdodF9sZW47CiAKLSAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHUpOwotICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHYpOworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUobGVmdCk7CisgICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocmlnaHQpOwogICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgbWF4Y2hhcjIpOwogCiAgICAgLyogQ29uY2F0IHRoZSB0d28gVW5pY29kZSBzdHJpbmdzICovCi0gICAgdyA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7Ci0gICAgaWYgKHcgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIDAsIHUsIDAsIHVfbGVuKTsKLSAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCB1X2xlbiwgdiwgMCwgdl9sZW4pOwotICAgIFB5X0RFQ1JFRih1KTsKLSAgICBQeV9ERUNSRUYodik7Ci0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3LCAxKSk7Ci0gICAgcmV0dXJuIHc7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHUpOwotICAgIFB5X1hERUNSRUYodik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgMCwgbGVmdCwgMCwgbGVmdF9sZW4pOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgbGVmdF9sZW4sIHJpZ2h0LCAwLCByaWdodF9sZW4pOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzdWx0LCAxKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZApAQCAtMTExMjUsNiArMTEzMTIsMjUgQEAKICAgICBQeV9YREVDUkVGKHJpZ2h0KTsKIH0KIAorLyoKK1dyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBlbnN1cmVzIHRoYXQgdGhlCitmaXJzdCBhcmd1bWVudCBpcyBhIHVuaWNvZGUgb2JqZWN0LgorKi8KKworc3RhdGljIGlubGluZSBpbnQKK3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKK3sKKyAgICBpZihzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCBzdWJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpIHsKKyAgICAgICAgaWYgKGVuc3VyZV91bmljb2RlKCpzdWJzdHJpbmcpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFB5RG9jX1NUUlZBUihjb3VudF9fZG9jX18sCiAgICAgICAgICAgICAgIlMuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCiBcblwKQEAgLTExMTQzLDMxICsxMTM0OSwyNiBAQAogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgaXJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiY291bnQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJjb3VudCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAgaWYgKGtpbmQxIDwga2luZDIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxIDwga2luZDIpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7Ci0gICAgfQorCiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKLSAgICB9CisKICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CiAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKLSAgICAgICAgaWYgKCFidWYyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgaWYgKCFidWYyKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CkBAIC0xMTE5Nyw4ICsxMTM5OCw2IEBACiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMTMzMiwyMiArMTE1MzEsMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJmaW5kIiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIDEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTQyMCwyMiArMTE2MTAsMTMgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImluZGV4IiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExOTQ5LDcgKzEyMTMwLDcgQEAKICNkZWZpbmUgQk9USFNUUklQIDIKIAogLyogQXJyYXlzIGluZGV4ZWQgYnkgYWJvdmUgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzdHJpcGZvcm1hdFtdID0geyJ8Tzpsc3RyaXAiLCAifE86cnN0cmlwIiwgInxPOnN0cmlwIn07CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN0cmlwZm9ybWF0W10gPSB7InxPOmxzdHJpcCIsICJ8Tzpyc3RyaXAiLCAifE86c3RyaXAifTsKIAogI2RlZmluZSBTVFJJUE5BTUUoaSkgKHN0cmlwZm9ybWF0W2ldKzMpCiAKQEAgLTEyMjMwLDExICsxMjQxMSwxMSBAQAogICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CiAgICAgICAgIGNoYXIgKnRvID0gKGNoYXIgKikgUHlVbmljb2RlX0RBVEEodSk7Ci0gICAgICAgIFB5X01FTUNQWSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKKyAgICAgICAgbWVtY3B5KHRvLCBQeVVuaWNvZGVfREFUQShzdHIpLAogICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSAqIGNoYXJfc2l6ZSk7CiAgICAgICAgIHdoaWxlIChkb25lIDwgbmNoYXJzKSB7CiAgICAgICAgICAgICBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkodG8gKyAoZG9uZSAqIGNoYXJfc2l6ZSksIHRvLCBuICogY2hhcl9zaXplKTsKICAgICAgICAgICAgIGRvbmUgKz0gbjsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMjQ0LDQwICsxMjQyNSwxNSBAQAogfQogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1Ym9iaiwKLSAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXBsb2JqLAorUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbHN0ciwKICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgUHlPYmplY3QgKnNlbGY7Ci0gICAgUHlPYmplY3QgKnN0cjE7Ci0gICAgUHlPYmplY3QgKnN0cjI7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGYgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwotICAgIGlmIChzZWxmID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwIHx8CisgICAgICAgICAgICBlbnN1cmVfdW5pY29kZShyZXBsc3RyKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdHIxID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJlcGxvYmopOwotICAgIGlmIChzdHIyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8Ci0gICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fAotICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKLSAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgUHlfREVDUkVGKHN0cjEpOwotICAgIFB5X0RFQ1JFRihzdHIyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXBsYWNlKHN0ciwgc3Vic3RyLCByZXBsc3RyLCBtYXhjb3VudCk7CiB9CiAKIFB5RG9jX1NUUlZBUihyZXBsYWNlX19kb2NfXywKQEAgLTEyMjkzLDI4ICsxMjQ0OSwxMiBAQAogICAgIFB5T2JqZWN0ICpzdHIxOwogICAgIFB5T2JqZWN0ICpzdHIyOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVXxuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIxKTsKLSAgICBpZiAoc3RyMSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyMik7Ci0gICAgaWYgKHN0cjIgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwotCi0gICAgUHlfREVDUkVGKHN0cjEpOwotICAgIFB5X0RFQ1JFRihzdHIyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyNDk5LDIyICsxMjYzOSwxMyBAQAogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjUzNiwyMiArMTI2NjcsMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjU5MSwyNCArMTI3MTMsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgcyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHMpOwotICAgIGlmIChzID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHMpIDwgMCB8fCAoc2VwICE9IE5VTEwgJiYgZW5zdXJlX3VuaWNvZGUoc2VwKSA8IDApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2VwICE9IE5VTEwpIHsKLSAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwKTsKLSAgICAgICAgaWYgKHNlcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KIAotICAgIHJlc3VsdCA9IHNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwotCi0gICAgUHlfREVDUkVGKHMpOwotICAgIFB5X1hERUNSRUYoc2VwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0X19kb2NfXywKQEAgLTEyNjMzLDM1ICsxMjc0MSwyNiBAQAogCiAgICAgaWYgKHN1YnN0cmluZyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQogICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1NwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfaW4sIFB5T2JqZWN0ICpzZXBfaW4pCitQeVVuaWNvZGVfUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfb2JqLCBQeU9iamVjdCAqc2VwX29iaikKIHsKLSAgICBQeU9iamVjdCogc3RyX29iajsKLSAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7Ci0gICAgaWYgKCFzdHJfb2JqKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJfb2JqKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc2VwX29iaikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZXBfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwX2luKTsKLSAgICBpZiAoIXNlcF9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXBfb2JqKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKQEAgLTEyNjc1LDggKzEyNzc0LDYgQEAKICAgICAgICAgICAgIG91dCA9IFB5VHVwbGVfUGFjaygzLCBzdHJfb2JqLCB1bmljb2RlX2VtcHR5LCB1bmljb2RlX2VtcHR5KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX2VtcHR5KTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwpAQCAtMTI2ODQsNyArMTI3ODEsNyBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CkBAIC0xMjcwNSwzOSArMTI4MDIsMjMgQEAKICAgICAgICAgb3V0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7Ci0gIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKLSAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUlBhcnRpdGlvbihQeU9iamVjdCAqc3RyX2luLCBQeU9iamVjdCAqc2VwX2luKQorUHlVbmljb2RlX1JQYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9vYmosIFB5T2JqZWN0ICpzZXBfb2JqKQogewotICAgIFB5T2JqZWN0KiBzdHJfb2JqOwotICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKLSAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKLSAgICBpZiAoIXN0cl9vYmopCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cl9vYmopIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzZXBfb2JqKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlcF9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXBfaW4pOwotICAgIGlmICghc2VwX29iaikgewotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKQEAgLTEyNzUxLDggKzEyODMyLDYgQEAKICAgICAgICAgICAgIG91dCA9IFB5VHVwbGVfUGFjaygzLCB1bmljb2RlX2VtcHR5LCB1bmljb2RlX2VtcHR5LCBzdHJfb2JqKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX2VtcHR5KTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwpAQCAtMTI3NjAsNyArMTI4MzksNyBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CkBAIC0xMjc4MSwxOCArMTI4NjAsMTAgQEAKICAgICAgICAgb3V0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7Ci0gIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKLSAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHBhcnRpdGlvbl9fZG9jX18sCkBAIC0xMjgyNCwyNCArMTI4OTUsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9SU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHMgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzKTsKLSAgICBpZiAocyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzKSA8IDAgfHwgKHNlcCAhPSBOVUxMICYmIGVuc3VyZV91bmljb2RlKHNlcCkgPCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICByZXN1bHQgPSByc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7Ci0KLSAgICBQeV9ERUNSRUYocyk7Ci0gICAgUHlfWERFQ1JFRihzZXApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCkBAIC0xMjg2NiwxMCArMTI5MjMsMTQgQEAKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBOVUxMLCBtYXhjb3VudCk7Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JTcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLApAQCAtMTMxNTAsMTEgKzEzMjExLDE1IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKLSAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHVwbGUgZm9yIHN0YXJ0c3dpdGggbXVzdCBvbmx5IGNvbnRhaW4gc3RyLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKQEAgLTEzMTY0LDE1ICsxMzIyOSwxMyBAQAogICAgICAgICAvKiBub3RoaW5nIG1hdGNoZWQgKi8KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vib2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICUuMTAwcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKQEAgLTEzMjAyLDEyICsxMzI2NSwxNSBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7Ci0gICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSk7CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGZvciBlbmRzd2l0aCBtdXN0IG9ubHkgY29udGFpbiBzdHIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgKzEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewpAQCAtMTMyMTYsNjEgKzEzMjgyLDY3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgorICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJS4xMDBzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsICsxKTsKLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCArMSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwogfQogCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewotICAgIGlmICghd3JpdGVyLT5yZWFkb25seSkKKyAgICB3cml0ZXItPm1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKKworICAgIGlmICghd3JpdGVyLT5yZWFkb25seSkgeworICAgICAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfS0lORCh3cml0ZXItPmJ1ZmZlcik7CiAgICAgICAgIHdyaXRlci0+c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKTsKKyAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIC8qIHVzZSBhIHZhbHVlIHNtYWxsZXIgdGhhbiBQeVVuaWNvZGVfMUJZVEVfS0lORCgpIHNvCisgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKSB3aWxsIGNvcHkgdGhlIGJ1ZmZlci4gKi8KKyAgICAgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX1dDSEFSX0tJTkQ7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPD0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworCiAgICAgICAgIC8qIENvcHktb24td3JpdGUgbW9kZTogc2V0IGJ1ZmZlciBzaXplIHRvIDAgc28KICAgICAgICAgICogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCkgd2lsbCBjb3B5IChhbmQgZW5sYXJnZSkgdGhlIGJ1ZmZlciBvbgogICAgICAgICAgKiBuZXh0IHdyaXRlLiAqLwogICAgICAgICB3cml0ZXItPnNpemUgPSAwOwogICAgIH0KLSAgICB3cml0ZXItPm1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUod3JpdGVyLT5idWZmZXIpOwotICAgIHdyaXRlci0+ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKLSAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfS0lORCh3cml0ZXItPmJ1ZmZlcik7CiB9CiAKIHZvaWQKIF9QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgbWVtc2V0KHdyaXRlciwgMCwgc2l6ZW9mKCp3cml0ZXIpKTsKLSNpZmRlZiBQeV9ERUJVRwotICAgIHdyaXRlci0+a2luZCA9IDU7ICAgIC8qIGludmFsaWQga2luZCAqLwotI2VuZGlmCisKKyAgICAvKiBBU0NJSSBpcyB0aGUgYmFyZSBtaW5pbXVtICovCiAgICAgd3JpdGVyLT5taW5fY2hhciA9IDEyNzsKKworICAgIC8qIHVzZSBhIHZhbHVlIHNtYWxsZXIgdGhhbiBQeVVuaWNvZGVfMUJZVEVfS0lORCgpIHNvCisgICAgICAgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgpIHdpbGwgY29weSB0aGUgYnVmZmVyLiAqLworICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9XQ0hBUl9LSU5EOworICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPD0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwogfQogCiBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgLyogT24gV2luZG93cywgb3ZlcmFsbG9jYXRlIGJ5IDUwJSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KLSMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDIKLSNlbHNlCi0gICAvKiBPbiBMaW51eCwgb3ZlcmFsbG9jYXRlIGJ5IDI1JSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KLSMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDQKLSNlbmRpZgogICAgIFB5X3NzaXplX3QgbmV3bGVuOwogICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7CiAKLSAgICBhc3NlcnQobGVuZ3RoID4gMCk7CisgICAgYXNzZXJ0KG1heGNoYXIgPD0gTUFYX1VOSUNPREUpOworCisgICAgLyogZW5zdXJlIHRoYXQgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSBtYWNybyB3YXMgdXNlZCAqLworICAgIGFzc2VydCgobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhciAmJiBsZW5ndGggPj0gMCkKKyAgICAgICAgICAgfHwgbGVuZ3RoID4gMCk7CiAKICAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLSB3cml0ZXItPnBvcykgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMTMzMzYsOSArMTM0MDgsMzIgQEAKICN1bmRlZiBPVkVSQUxMT0NBVEVfRkFDVE9SCiB9CiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitpbnQKK19QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmRJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kKQoreworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKworICAgIC8qIGVuc3VyZSB0aGF0IHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kIG1hY3JvIHdhcyB1c2VkICovCisgICAgYXNzZXJ0KHdyaXRlci0+a2luZCA8IGtpbmQpOworCisgICAgc3dpdGNoIChraW5kKQorICAgIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiBtYXhjaGFyID0gMHhmZjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogbWF4Y2hhciA9IDB4ZmZmZjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogbWF4Y2hhciA9IDB4MTBmZmZmOyBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCAmJiAiaW52YWxpZCBraW5kIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwod3JpdGVyLCAwLCBtYXhjaGFyKTsKK30KKworc3RhdGljIGlubGluZSBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfVUNTNCBjaCkKIHsKKyAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCAxLCBjaCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci0+a2luZCwgd3JpdGVyLT5kYXRhLCB3cml0ZXItPnBvcywgY2gpOwpAQCAtMTM0NTEsNyArMTM1NDYsNyBAQAogICAgICAgICBjb25zdCBQeV9VQ1MxICpzdHIgPSAoY29uc3QgUHlfVUNTMSAqKWFzY2lpOwogICAgICAgICBQeV9VQ1MxICpkYXRhID0gd3JpdGVyLT5kYXRhOwogCi0gICAgICAgIFB5X01FTUNQWShkYXRhICsgd3JpdGVyLT5wb3MsIHN0ciwgbGVuKTsKKyAgICAgICAgbWVtY3B5KGRhdGEgKyB3cml0ZXItPnBvcywgc3RyLCBsZW4pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKQEAgLTEzNDk2LDI3ICsxMzU5MSwzMCBAQAogX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIFB5T2JqZWN0ICpzdHI7CisKICAgICBpZiAod3JpdGVyLT5wb3MgPT0gMCkgewogICAgICAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwogICAgIH0KKworICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOworICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKKwogICAgIGlmICh3cml0ZXItPnJlYWRvbmx5KSB7Ci0gICAgICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOwotICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IE5VTEw7CiAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IHdyaXRlci0+cG9zKTsKICAgICAgICAgcmV0dXJuIHN0cjsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKSAhPSB3cml0ZXItPnBvcykgewotICAgICAgICBQeU9iamVjdCAqbmV3YnVmZmVyOwotICAgICAgICBuZXdidWZmZXIgPSByZXNpemVfY29tcGFjdCh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MpOwotICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpICE9IHdyaXRlci0+cG9zKSB7CisgICAgICAgIFB5T2JqZWN0ICpzdHIyOworICAgICAgICBzdHIyID0gcmVzaXplX2NvbXBhY3Qoc3RyLCB3cml0ZXItPnBvcyk7CisgICAgICAgIGlmIChzdHIyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBuZXdidWZmZXI7CisgICAgICAgIHN0ciA9IHN0cjI7CiAgICAgfQotICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOwotICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKKwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSk7CiAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3JlYWR5KHN0cik7CiB9CkBAIC0xNDY1NywxMyArMTQ3NTUsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgY3R4LmZtdHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGZvcm1hdCk7Ci0gICAgaWYgKGN0eC5mbXRzdHIgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoZm9ybWF0KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoY3R4LmZtdHN0cikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKKyAgICBjdHguZm10c3RyID0gZm9ybWF0OwogICAgIGN0eC5mbXRkYXRhID0gUHlVbmljb2RlX0RBVEEoY3R4LmZtdHN0cik7CiAgICAgY3R4LmZtdGtpbmQgPSBQeVVuaWNvZGVfS0lORChjdHguZm10c3RyKTsKICAgICBjdHguZm10Y250ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoY3R4LmZtdHN0cik7CkBAIC0xNDcyMywxMSArMTQ4MTgsOSBAQAogICAgIGlmIChjdHguYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoY3R4LmFyZ3MpOwogICAgIH0KLSAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZjdHgud3JpdGVyKTsKIAogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJmN0eC53cml0ZXIpOwogICAgIGlmIChjdHguYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoY3R4LmFyZ3MpOwpAQCAtMTQ4NDQsNyArMTQ5MzcsNyBAQAogICAgICAgICBfUHlVbmljb2RlX1dTVFIoc2VsZikgPSAod2NoYXJfdCAqKWRhdGE7CiAgICAgfQogCi0gICAgUHlfTUVNQ1BZKGRhdGEsIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgIG1lbWNweShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKICAgICAgICAgICAgICAga2luZCAqIChsZW5ndGggKyAxKSk7CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzZWxmLCAxKSk7CiAjaWZkZWYgUHlfREVCVUcKQEAgLTE1MDA1LDI2ICsxNTA5OCwxOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIEl0IG1pZ2h0IGJlIHRoYXQgdGhlIEdldEl0ZW0gY2FsbCBmYWlscyBldmVuCi0gICAgICAgdGhvdWdoIHRoZSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZGljdGlvbmFyeSwKLSAgICAgICBuYW1lbHkgd2hlbiB0aGlzIGhhcHBlbnMgZHVyaW5nIGEgc3RhY2sgb3ZlcmZsb3cuICovCiAgICAgUHlfQUxMT1dfUkVDVVJTSU9OCi0gICAgdCA9IFB5RGljdF9HZXRJdGVtKGludGVybmVkLCBzKTsKKyAgICB0ID0gUHlEaWN0X1NldERlZmF1bHQoaW50ZXJuZWQsIHMsIHMpOwogICAgIFB5X0VORF9BTExPV19SRUNVUlNJT04KLQotICAgIGlmICh0KSB7CisgICAgaWYgKHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh0ICE9IHMpIHsKICAgICAgICAgUHlfSU5DUkVGKHQpOwogICAgICAgICBQeV9TRVRSRUYoKnAsIHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0oaW50ZXJuZWQsIHMsIHMpIDwgMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAwOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDA7CiAgICAgLyogVGhlIHR3byByZWZlcmVuY2VzIGluIGludGVybmVkIGFyZSBub3QgY291bnRlZCBieSByZWZjbnQuCiAgICAgICAgVGhlIGRlYWxsb2NhdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHRoaXMgKi8KICAgICBQeV9SRUZDTlQocykgLT0gMjsKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaCBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAppbmRleCA3Yzc4MGI2Li4zOWFmOTIwIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKKysrIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCkBAIC0yNDQsMTA5ICsyNDQsMTE5IEBACiAgICAgezE2Nzc3NTYyLCAxNzgyNjEzNiwgMTY3Nzc1NjIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3Nzc1NjUsIDE3ODI2MTM5LCAxNjc3NzU2NSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAwLCAwLCAwLCAwLCAzODQwfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgNTg4OH0sCisgICAgezE2Nzc3NTY4LCAxNzgyNjE0MiwgMTY3Nzc1NjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NzEsIDE3ODI2MTQ1LCAxNjc3NzU3MSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU3NCwgMTc4MjYxNDgsIDE2Nzc3NTc0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTc3LCAxNzgyNjE1MSwgMTY3Nzc1NzcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODAsIDE3ODI2MTU0LCAxNjc3NzU4MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4MywgMTc4MjYxNTcsIDE2Nzc3NTgzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTg2LCAxNzgyNjE2MCwgMTY3Nzc1ODYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODksIDE3ODI2MTYzLCAxNjc3NzU4OSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU5MiwgMTc4MjYxNjYsIDE2Nzc3NTkyLCAwLCAwLCAyNjM3N30sCiAgICAgezM1MzMyLCAwLCAzNTMzMiwgMCwgMCwgOTk5M30sCiAgICAgezM4MTQsIDAsIDM4MTQsIDAsIDAsIDk5OTN9LAotICAgIHszMzU1NDc4NSwgMTg4NzQ3MTgsIDMzNTU0Nzg1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NzkwLCAxODg3NDcyMywgMzM1NTQ3OTAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3OTUsIDE4ODc0NzI4LCAzMzU1NDc5NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwMCwgMTg4NzQ3MzMsIDMzNTU0ODAwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODA1LCAxODg3NDczOCwgMzM1NTQ4MDUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3Nzc1OTMsIDE3ODI2MTY3LCAxNjc3NzU5MywgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3NzU5NywgMTg4NzQ3NDYsIDE2Nzc3NTk3LCAwLCAwLCAyNjQ5N30sCisgICAgezMzNTU0ODEyLCAxODg3NDc0NSwgMzM1NTQ4MTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MTcsIDE4ODc0NzUwLCAzMzU1NDgxNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgyMiwgMTg4NzQ3NTUsIDMzNTU0ODIyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODI3LCAxODg3NDc2MCwgMzM1NTQ4MjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MzIsIDE4ODc0NzY1LCAzMzU1NDgzMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzYyMCwgMTc4MjYxOTQsIDE2Nzc3NjIwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NjI0LCAxODg3NDc3MywgMTY3Nzc2MjQsIDAsIDAsIDI2NDk3fSwKICAgICB7OCwgMCwgOCwgMCwgMCwgOTk5M30sCiAgICAgezAsIC04LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU0ODE3LCAxODg3NDc1MCwgMzM1NTQ4MTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIwMzksIDE5OTIzMzMxLCA1MDMzMjAzOSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjA0NiwgMTk5MjMzMzgsIDUwMzMyMDQ2LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDUzLCAxOTkyMzM0NSwgNTAzMzIwNTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NDQsIDE4ODc0Nzc3LCAzMzU1NDg0NCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA2NiwgMTk5MjMzNTgsIDUwMzMyMDY2LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDczLCAxOTkyMzM2NSwgNTAzMzIwNzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwODAsIDE5OTIzMzcyLCA1MDMzMjA4MCwgMCwgMCwgMjYzNzd9LAogICAgIHs3NCwgMCwgNzQsIDAsIDAsIDk5OTN9LAogICAgIHs4NiwgMCwgODYsIDAsIDAsIDk5OTN9LAogICAgIHsxMDAsIDAsIDEwMCwgMCwgMCwgOTk5M30sCiAgICAgezEyOCwgMCwgMTI4LCAwLCAwLCA5OTkzfSwKICAgICB7MTEyLCAwLCAxMTIsIDAsIDAsIDk5OTN9LAogICAgIHsxMjYsIDAsIDEyNiwgMCwgMCwgOTk5M30sCi0gICAgezMzNTU0ODQzLCAxODg3NDc3NiwgMTY3Nzc2MjksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NDksIDE4ODc0NzgyLCAxNjc3NzYzNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg1NSwgMTg4NzQ3ODgsIDE2Nzc3NjQxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODYxLCAxODg3NDc5NCwgMTY3Nzc2NDcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NjcsIDE4ODc0ODAwLCAxNjc3NzY1MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg3MywgMTg4NzQ4MDYsIDE2Nzc3NjU5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODc5LCAxODg3NDgxMiwgMTY3Nzc2NjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4ODUsIDE4ODc0ODE4LCAxNjc3NzY3MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg5MSwgMTg4NzQ4MjQsIDE2Nzc3Njc3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODk3LCAxODg3NDgzMCwgMTY3Nzc2ODMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MDMsIDE4ODc0ODM2LCAxNjc3NzY4OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkwOSwgMTg4NzQ4NDIsIDE2Nzc3Njk1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTE1LCAxODg3NDg0OCwgMTY3Nzc3MDEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MjEsIDE4ODc0ODU0LCAxNjc3NzcwNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkyNywgMTg4NzQ4NjAsIDE2Nzc3NzEzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTMzLCAxODg3NDg2NiwgMTY3Nzc3MTksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MzksIDE4ODc0ODcyLCAxNjc3NzcyNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk0NSwgMTg4NzQ4NzgsIDE2Nzc3NzMxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTUxLCAxODg3NDg4NCwgMTY3Nzc3MzcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NTcsIDE4ODc0ODkwLCAxNjc3Nzc0MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk2MywgMTg4NzQ4OTYsIDE2Nzc3NzQ5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTY5LCAxODg3NDkwMiwgMTY3Nzc3NTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NzUsIDE4ODc0OTA4LCAxNjc3Nzc2MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk4MSwgMTg4NzQ5MTQsIDE2Nzc3NzY3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTg3LCAxODg3NDkyMCwgMTY3Nzc3NzMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5OTMsIDE4ODc0OTI2LCAxNjc3Nzc3OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDk5OSwgMTg4NzQ5MzIsIDE2Nzc3Nzg1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDA1LCAxODg3NDkzOCwgMTY3Nzc3OTEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMTEsIDE4ODc0OTQ0LCAxNjc3Nzc5NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAxNywgMTg4NzQ5NTAsIDE2Nzc3ODAzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDIzLCAxODg3NDk1NiwgMTY3Nzc4MDksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMjksIDE4ODc0OTYyLCAxNjc3NzgxNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAzNSwgMTg4NzQ5NjgsIDE2Nzc3ODIxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDQxLCAxODg3NDk3NCwgMTY3Nzc4MjcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNDcsIDE4ODc0OTgwLCAxNjc3NzgzMywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA1MywgMTg4NzQ5ODYsIDE2Nzc3ODM5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDU5LCAxODg3NDk5MiwgMTY3Nzc4NDUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNjUsIDE4ODc0OTk4LCAxNjc3Nzg1MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA3MSwgMTg4NzUwMDQsIDE2Nzc3ODU3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDc3LCAxODg3NTAxMCwgMTY3Nzc4NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwODMsIDE4ODc1MDE2LCAxNjc3Nzg2OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTA4OSwgMTg4NzUwMjIsIDE2Nzc3ODc1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDk1LCAxODg3NTAyOCwgMTY3Nzc4ODEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMDEsIDE4ODc1MDM0LCAxNjc3Nzg4NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEwNywgMTg4NzUwNDAsIDE2Nzc3ODkzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTEzLCAxODg3NTA0NiwgMTY3Nzc4OTksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMTksIDE4ODc1MDUyLCAxNjc3NzkwNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEyNSwgMTg4NzUwNTgsIDE2Nzc3OTExLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTMxLCAxODg3NTA2NCwgMzM1NTUxMzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxMzgsIDE4ODc1MDcxLCAxNjc3NzkyNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE0NCwgMTg4NzUwNzcsIDMzNTU1MTQ2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTUxLCAxODg3NTA4NCwgMzM1NTUxNTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIzNzMsIDE5OTIzNjY1LCA1MDMzMjM3NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg3MCwgMTg4NzQ4MDMsIDE2Nzc3NjU2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODc2LCAxODg3NDgwOSwgMTY3Nzc2NjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4ODIsIDE4ODc0ODE1LCAxNjc3NzY2OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg4OCwgMTg4NzQ4MjEsIDE2Nzc3Njc0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODk0LCAxODg3NDgyNywgMTY3Nzc2ODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MDAsIDE4ODc0ODMzLCAxNjc3NzY4NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkwNiwgMTg4NzQ4MzksIDE2Nzc3NjkyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTEyLCAxODg3NDg0NSwgMTY3Nzc2OTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MTgsIDE4ODc0ODUxLCAxNjc3NzcwNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkyNCwgMTg4NzQ4NTcsIDE2Nzc3NzEwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTMwLCAxODg3NDg2MywgMTY3Nzc3MTYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MzYsIDE4ODc0ODY5LCAxNjc3NzcyMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk0MiwgMTg4NzQ4NzUsIDE2Nzc3NzI4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTQ4LCAxODg3NDg4MSwgMTY3Nzc3MzQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NTQsIDE4ODc0ODg3LCAxNjc3Nzc0MCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk2MCwgMTg4NzQ4OTMsIDE2Nzc3NzQ2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTY2LCAxODg3NDg5OSwgMTY3Nzc3NTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NzIsIDE4ODc0OTA1LCAxNjc3Nzc1OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk3OCwgMTg4NzQ5MTEsIDE2Nzc3NzY0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTg0LCAxODg3NDkxNywgMTY3Nzc3NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5OTAsIDE4ODc0OTIzLCAxNjc3Nzc3NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk5NiwgMTg4NzQ5MjksIDE2Nzc3NzgyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDAyLCAxODg3NDkzNSwgMTY3Nzc3ODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMDgsIDE4ODc0OTQxLCAxNjc3Nzc5NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAxNCwgMTg4NzQ5NDcsIDE2Nzc3ODAwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDIwLCAxODg3NDk1MywgMTY3Nzc4MDYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMjYsIDE4ODc0OTU5LCAxNjc3NzgxMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAzMiwgMTg4NzQ5NjUsIDE2Nzc3ODE4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDM4LCAxODg3NDk3MSwgMTY3Nzc4MjQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNDQsIDE4ODc0OTc3LCAxNjc3NzgzMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA1MCwgMTg4NzQ5ODMsIDE2Nzc3ODM2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDU2LCAxODg3NDk4OSwgMTY3Nzc4NDIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNjIsIDE4ODc0OTk1LCAxNjc3Nzg0OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA2OCwgMTg4NzUwMDEsIDE2Nzc3ODU0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDc0LCAxODg3NTAwNywgMTY3Nzc4NjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODAsIDE4ODc1MDEzLCAxNjc3Nzg2NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA4NiwgMTg4NzUwMTksIDE2Nzc3ODcyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDkyLCAxODg3NTAyNSwgMTY3Nzc4NzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwOTgsIDE4ODc1MDMxLCAxNjc3Nzg4NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEwNCwgMTg4NzUwMzcsIDE2Nzc3ODkwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTEwLCAxODg3NTA0MywgMTY3Nzc4OTYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMTYsIDE4ODc1MDQ5LCAxNjc3NzkwMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEyMiwgMTg4NzUwNTUsIDE2Nzc3OTA4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTI4LCAxODg3NTA2MSwgMTY3Nzc5MTQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMzQsIDE4ODc1MDY3LCAxNjc3NzkyMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE0MCwgMTg4NzUwNzMsIDE2Nzc3OTI2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTQ2LCAxODg3NTA3OSwgMTY3Nzc5MzIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNTIsIDE4ODc1MDg1LCAxNjc3NzkzOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE1OCwgMTg4NzUwOTEsIDMzNTU1MTYwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTY1LCAxODg3NTA5OCwgMTY3Nzc5NTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNzEsIDE4ODc1MTA0LCAzMzU1NTE3MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE3OCwgMTg4NzUxMTEsIDMzNTU1MTc4LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDAwLCAxOTkyMzY5MiwgNTAzMzI0MDMsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTc0LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MTY2LCAxODg3NTA5OSwgMTY3Nzc5NTIsIDAsIDAsIDI2NDMzfSwKLSAgICB7MTY3Nzc5NTUsIDE3ODI2NTI5LCAxNjc3Nzk1NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE3NSwgMTg4NzUxMDgsIDMzNTU1MTc3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTgyLCAxODg3NTExNSwgMTY3Nzc5NjgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxODgsIDE4ODc1MTIxLCAzMzU1NTE5MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE5NSwgMTg4NzUxMjgsIDMzNTU1MTk1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDE3LCAxOTkyMzcwOSwgNTAzMzI0MjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxOTMsIDE4ODc1MTI2LCAxNjc3Nzk3OSwgMCwgMCwgMjY0MzN9LAorICAgIHsxNjc3Nzk4MiwgMTc4MjY1NTYsIDE2Nzc3OTgyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjAyLCAxODg3NTEzNSwgMzM1NTUyMDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMDksIDE4ODc1MTQyLCAxNjc3Nzk5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIxNSwgMTg4NzUxNDgsIDMzNTU1MjE3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjIyLCAxODg3NTE1NSwgMzM1NTUyMjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NDQsIDE5OTIzNzM2LCA1MDMzMjQ0NywgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtODYsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUyMTAsIDE4ODc1MTQzLCAxNjc3Nzk5NiwgMCwgMCwgMjY0MzN9LAotICAgIHs1MDMzMjQzMywgMTk5MjM3MjUsIDUwMzMyNDMzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDQwLCAxOTkyMzczMiwgNTAzMzI0NDAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyMzAsIDE4ODc1MTYzLCAzMzU1NTIzMCwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ1MiwgMTk5MjM3NDQsIDUwMzMyNDUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjM3LCAxODg3NTE3MCwgMTY3NzgwMjMsIDAsIDAsIDI2NDMzfSwKKyAgICB7NTAzMzI0NjAsIDE5OTIzNzUyLCA1MDMzMjQ2MCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ2NywgMTk5MjM3NTksIDUwMzMyNDY3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjU3LCAxODg3NTE5MCwgMzM1NTUyNTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NzksIDE5OTIzNzcxLCA1MDMzMjQ3OSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTAwLCAwLCAwLCAwLCAxMDExM30sCi0gICAgezUwMzMyNDU5LCAxOTkyMzc1MSwgNTAzMzI0NTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0NjYsIDE5OTIzNzU4LCA1MDMzMjQ2NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI1NiwgMTg4NzUxODksIDMzNTU1MjU2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjYxLCAxODg3NTE5NCwgMzM1NTUyNjEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0ODMsIDE5OTIzNzc1LCA1MDMzMjQ4MywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ4NiwgMTk5MjM3NzgsIDUwMzMyNDg2LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDkzLCAxOTkyMzc4NSwgNTAzMzI0OTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODMsIDE4ODc1MjE2LCAzMzU1NTI4MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI4OCwgMTg4NzUyMjEsIDMzNTU1Mjg4LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNTEwLCAxOTkyMzgwMiwgNTAzMzI1MTAsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTExMiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTI3MywgMTg4NzUyMDYsIDMzNTU1Mjc1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjgwLCAxODg3NTIxMywgMTY3NzgwNjYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyODYsIDE4ODc1MjE5LCAzMzU1NTI4OCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI5MywgMTg4NzUyMjYsIDMzNTU1MjkzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNTE1LCAxOTkyMzgwNywgNTAzMzI1MTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMDAsIDE4ODc1MjMzLCAzMzU1NTMwMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMwNywgMTg4NzUyNDAsIDE2Nzc4MDkzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzEzLCAxODg3NTI0NiwgMzM1NTUzMTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMjAsIDE4ODc1MjUzLCAzMzU1NTMyMCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjU0MiwgMTk5MjM4MzQsIDUwMzMyNTQ1LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMjgsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MCwgLTEyNiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTMwOCwgMTg4NzUyNDEsIDE2Nzc4MDk0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MzM1LCAxODg3NTI2OCwgMTY3NzgxMjEsIDAsIDAsIDI2NDMzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMzA3Nn0sCiAgICAgezAsIDAsIDAsIDAsIDQsIDMwNzZ9LAogICAgIHswLCAwLCAwLCAwLCA1LCAzMDc2fSwKQEAgLTM4OCwxNSArMzk4LDYgQEAKICAgICB7MCwgLTQyMjYxLCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDkyOCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHstOTI4LCAwLCAtOTI4LCAwLCAwLCA5OTkzfSwKLSAgICB7MTY3NzgwOTcsIDE3ODI2NjcxLCAxNjc3ODA5NywgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwMCwgMTc4MjY2NzQsIDE2Nzc4MTAwLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTAzLCAxNzgyNjY3NywgMTY3NzgxMDMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDYsIDE3ODI2NjgwLCAxNjc3ODEwNiwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwOSwgMTc4MjY2ODMsIDE2Nzc4MTA5LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTEyLCAxNzgyNjY4NiwgMTY3NzgxMTIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMTUsIDE3ODI2Njg5LCAxNjc3ODExNSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODExOCwgMTc4MjY2OTIsIDE2Nzc4MTE4LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTIxLCAxNzgyNjY5NSwgMTY3NzgxMjEsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgxMjQsIDE3ODI2Njk4LCAxNjc3ODEyNCwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODEyNywgMTc4MjY3MDEsIDE2Nzc4MTI3LCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MTMwLCAxNzgyNjcwNCwgMTY3NzgxMzAsIDAsIDAsIDI2Mzc3fSwKQEAgLTQ2OCwyMiArNDY5LDMzIEBACiAgICAgezE2Nzc4MzI4LCAxNzgyNjkwMiwgMTY3NzgzMjgsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgzMzEsIDE3ODI2OTA1LCAxNjc3ODMzMSwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODMzNCwgMTc4MjY5MDgsIDE2Nzc4MzM0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NTU0LCAxODg3NTQ4NywgMzM1NTU1NTYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU1NjEsIDE4ODc1NDk0LCAzMzU1NTU2MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTU2OCwgMTg4NzU1MDEsIDMzNTU1NTcwLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNzkyLCAxOTkyNDA4NCwgNTAzMzI3OTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI4MDIsIDE5OTI0MDk0LCA1MDMzMjgwNSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMzNywgMTc4MjY5MTEsIDE2Nzc4MzM3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQwLCAxNzgyNjkxNCwgMTY3NzgzNDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDMsIDE3ODI2OTE3LCAxNjc3ODM0MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0NiwgMTc4MjY5MjAsIDE2Nzc4MzQ2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQ5LCAxNzgyNjkyMywgMTY3NzgzNDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNTIsIDE3ODI2OTI2LCAxNjc3ODM1MiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM1NSwgMTc4MjY5MjksIDE2Nzc4MzU1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzU4LCAxNzgyNjkzMiwgMTY3NzgzNTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNjEsIDE3ODI2OTM1LCAxNjc3ODM2MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU4MSwgMTg4NzU1MTQsIDMzNTU1NTgzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTg4LCAxODg3NTUyMSwgMzM1NTU1OTAsIDAsIDAsIDI2Mzc3fSwKICAgICB7MzM1NTU1OTUsIDE4ODc1NTI4LCAzMzU1NTU5NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYwMiwgMTg4NzU1MzUsIDMzNTU1NjA0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjA5LCAxODg3NTU0MiwgMzM1NTU2MTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MTYsIDE4ODc1NTQ5LCAzMzU1NTYxOCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYyMywgMTg4NzU1NTYsIDMzNTU1NjI1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjMwLCAxODg3NTU2MywgMzM1NTU2MzIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MzcsIDE4ODc1NTcwLCAzMzU1NTYzOSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjgxOSwgMTk5MjQxMTEsIDUwMzMyODIyLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyODI5LCAxOTkyNDEyMSwgNTAzMzI4MzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MjIsIDE4ODc1NTU1LCAzMzU1NTYyNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYyOSwgMTg4NzU1NjIsIDMzNTU1NjMxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjM2LCAxODg3NTU2OSwgMzM1NTU2MzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NDMsIDE4ODc1NTc2LCAzMzU1NTY0NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY1MCwgMTg4NzU1ODMsIDMzNTU1NjUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjU3LCAxODg3NTU5MCwgMzM1NTU2NTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NjQsIDE4ODc1NTk3LCAzMzU1NTY2NiwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMDI1fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgNTYzM30sCiAgICAgezAsIDQwLCAwLCAwLCAwLCAxMDExM30sCiAgICAgey00MCwgMCwgLTQwLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMzQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTM0LCAwLCAtMzQsIDAsIDAsIDk5OTN9LAogICAgIHswLCAwLCAwLCAwLCAwLCA5MzQ0fSwKIH07CiAKQEAgLTg0MCw2ICs4NTIsMzMgQEAKICAgICA1MTE3LAogICAgIDUxMDksCiAgICAgNTEwOSwKKyAgICA3Mjk2LAorICAgIDEwNzQsCisgICAgMTA0MiwKKyAgICA3Mjk3LAorICAgIDEwNzYsCisgICAgMTA0NCwKKyAgICA3Mjk4LAorICAgIDEwODYsCisgICAgMTA1NCwKKyAgICA3Mjk5LAorICAgIDEwODksCisgICAgMTA1NywKKyAgICA3MzAwLAorICAgIDEwOTAsCisgICAgMTA1OCwKKyAgICA3MzAxLAorICAgIDEwOTAsCisgICAgMTA1OCwKKyAgICA3MzAyLAorICAgIDEwOTgsCisgICAgMTA2NiwKKyAgICA3MzAzLAorICAgIDExMjMsCisgICAgMTEyMiwKKyAgICA3MzA0LAorICAgIDQyNTcxLAorICAgIDQyNTcwLAogICAgIDc4MzAsCiAgICAgMTA0LAogICAgIDgxNywKQEAgLTE3MzYsNjkgKzE3NzUsNjggQEAKICAgICAxMzEsIDEzMiwgMTMzLCAxMzQsIDM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIAogICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTQ1LCAzNCwgMzQsIDE1MiwgMTQ1LCAxNTMsIDE1NCwgMTU1LCAKICAgICAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE0NSwgMTQ1LCAxNjMsIDE0NSwgMTQ1LCAxNDUsIDE2NCwgCi0gICAgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTQ1LCAxNDUsIDE3MSwgMTQ1LCAxNzIsIDE3MywgMTc0LCAxNzUsIAotICAgIDE0NSwgMTQ1LCAxNzYsIDE0NSwgMTQ1LCAxNDUsIDE3NywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTc4LCAxNzksIDM0LCAxODAsIDE0NSwgMTQ1LCAKKyAgICAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNDUsIDE3MSwgMTcyLCAxNDUsIDE3MywgMTc0LCAxNzUsIDE3NiwgCisgICAgMTQ1LCAxNDUsIDE3NywgMTQ1LCAxNDUsIDE0NSwgMTc4LCAxNDUsIDE0NSwgMTc5LCAxODAsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODEsIDE4MiwgMzQsIDE4MywgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODEsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODQsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4MiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTg1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODMsIDE4NCwgMTg1LCAxODYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE4NywgMTg4LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODYsIDE4NywgMTg4LCAxODksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE5MCwgMTkxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5MiwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAxOTMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxOTQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxOTUsIDE5NiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxODksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxOTAsIDE5MSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDY0LCAxOTIsIAotICAgIDE5MywgMTk0LCAxOTUsIDE0NSwgMTk2LCAxNDUsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCA2NCwgCi0gICAgNjQsIDY0LCA2NCwgMjA1LCAyMDYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAzNCwgMjA3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIwOCwgCi0gICAgMjA5LCAxNDUsIDE0NSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDE0NSwgNjQsIDIxNSwgNjQsIDY0LCAyMTYsIDIxNywgCi0gICAgNjQsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjI1LCAyMjYsIDIyNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIyOCwgMzQsIDIyOSwgMjMwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDE0NSwgNjQsIDE5NywgMTk4LCAxOTksIDIwMCwgMTQ1LCAyMDEsIDE0NSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgCisgICAgMjA4LCAyMDksIDY0LCA2NCwgNjQsIDY0LCAyMTAsIDIxMSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAyMTIsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMTMsIDIxNCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMjE1LCAyMTYsIDE0NSwgMTQ1LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMTQ1LCA2NCwgMjIyLCA2NCwgCisgICAgNjQsIDY0LCA2NCwgNjQsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjMwLCAyMzEsIDIzMiwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIzMywgMzQsIDIzNCwgMjM1LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzMSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAyMzIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDIzMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMjM4LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNSwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzYsIDM0LCAyMzcsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAyNDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMjQxLCAzNCwgMjQyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM4LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIzMSwgMzQsIDM0LCAyMzksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIzNiwgMzQsIDM0LCAyNDQsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIApAQCAtMjIwMSw4ICsyMjM5LDggQEAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyNDAsIDE0NSwgMjQxLCAyNDIsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDI0NSwgMTQ1LCAKKyAgICAyNDYsIDI0NywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCkBAIC0yMjM4LDcgKzIyNzYsNyBAQAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCkBAIC0yMjc0LDcgKzIzMTIsNyBAQAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQzLCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0OCwgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCkBAIC0yMzExLDcgKzIzNDksNyBAQAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMjQzLCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0OCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0yMzQ3LDcgKzIzODUsNyBAQAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNjUsIAogICAgIDMwLCAzMSwgNjYsIDY3LCA2OCwgNjgsIDMwLCAzMSwgNjksIDcwLCA3MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgMjAsIDc3LCA3NywgMjAsIDc4LCAyMCwgNzksIDgwLCAyMCwgMjAsIAotICAgIDIwLCA3NywgODEsIDIwLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCA4NiwgMjAsIDg3LCA4OCwgMjAsIDIwLCA4NiwgMjAsIAorICAgIDIwLCA3NywgODEsIDIwLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCA4NiwgODQsIDg3LCA4OCwgMjAsIDIwLCA4NiwgMjAsIAogICAgIDg5LCA5MCwgMjAsIDIwLCA5MSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDkyLCAyMCwgMjAsIDkzLCAyMCwgMjAsIAogICAgIDkzLCAyMCwgMjAsIDIwLCA5NCwgOTMsIDk1LCA5NiwgOTYsIDk3LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk4LCAyMCwgNTUsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTksIDEwMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKQEAgLTI0MzUsMTUyICsyNDczLDE1MiBAQAogICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCA1NSwgMTgsIDE4LCAxOCwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1LCA1LCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCAxMDIsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAKLSAgICAyNSwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIAotICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgCi0gICAgMjUsIDI1LCAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCisgICAgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI1LCAyNSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgCi0gICAgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAKLSAgICAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAwLCAyNSwgMTgsIDE4LCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMjUsIDU1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAKLSAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIAorICAgIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgCisgICAgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgNSwgNTUsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIAorICAgIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAxOCwgCi0gICAgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCA1NSwgNSwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgMTgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMTAyLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIAotICAgIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDEwMiwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDI1LCA1LCAyNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAxMDIsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAxOCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMTM5LCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgCi0gICAgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAxOCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgCi0gICAgMTM5LCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxMDIsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQwLCAxNDEsIDE0MiwgCi0gICAgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIAotICAgIDE1NCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAKLSAgICAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgCi0gICAgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIAotICAgIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywgCi0gICAgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDAsIDAsIDIzNSwgMjM2LCAKLSAgICAyMzcsIDIzOCwgMjM5LCAyNDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgCisgICAgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIAorICAgIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAKKyAgICAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgCisgICAgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIAorICAgIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAKKyAgICAyMzEsIDIzMiwgMjMzLCAyMzQsIDAsIDAsIDIzNSwgMjM2LCAyMzcsIDIzOCwgMjM5LCAyNDAsIDAsIDAsIDUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yNTkzLDEwOSArMjYzMSwxMTAgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgMjQxLCAyNDEsIDI0MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIAorICAgIDI0MSwgMjQxLCAyNDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgNTUsIDI1LCAwLCAKLSAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDI1LCAyNSwgMjUsIDIxLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjQyLCAyNDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIAotICAgIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgCisgICAgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAKKyAgICAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDE0MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE0MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAorICAgIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCAyNDMsIDI0NCwgCisgICAgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDI0MiwgMjAsIAotICAgIDIwLCAyMCwgMjQzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDI1MiwgMjAsIDIwLCAyMCwgMjUzLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxMDEsIDEwMSwgMTAxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKQEAgLTI3MDQsNDkgKzI3NDMsNDkgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyMCwgMjAsIDI1MCwgMjAsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAyNTQsIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyMCwgMjAsIDI2MCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAyNTIsIDI1MiwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAwLCAwLCAyNTIsIDI1MiwgMjUyLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAwLCAwLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUyLCAyNTIsIAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMCwgCi0gICAgMCwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMCwgMCwgMjUzLCAyNTEsIDI1NCwgMjUxLCAyNTUsIDI1MSwgMjU2LCAKLSAgICAyNTEsIDAsIDI1MiwgMCwgMjUyLCAwLCAyNTIsIDAsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAKLSAgICAyNTEsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTcsIDI1NywgMjU4LCAyNTgsIDI1OCwgCi0gICAgMjU4LCAyNTksIDI1OSwgMjYwLCAyNjAsIDI2MSwgMjYxLCAyNjIsIDI2MiwgMCwgMCwgMjYzLCAyNjQsIDI2NSwgMjY2LCAKLSAgICAyNjcsIDI2OCwgMjY5LCAyNzAsIDI3MSwgMjcyLCAyNzMsIDI3NCwgMjc1LCAyNzYsIDI3NywgMjc4LCAyNzksIDI4MCwgCi0gICAgMjgxLCAyODIsIDI4MywgMjg0LCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMjkwLCAyOTEsIDI5MiwgMjkzLCAyOTQsIAotICAgIDI5NSwgMjk2LCAyOTcsIDI5OCwgMjk5LCAzMDAsIDMwMSwgMzAyLCAzMDMsIDMwNCwgMzA1LCAzMDYsIDMwNywgMzA4LCAKLSAgICAzMDksIDMxMCwgMjUxLCAyNTEsIDMxMSwgMzEyLCAzMTMsIDAsIDMxNCwgMzE1LCAyNTIsIDI1MiwgMzE2LCAzMTYsIDMxNywgCi0gICAgNiwgMzE4LCA2LCA2LCA2LCAzMTksIDMyMCwgMzIxLCAwLCAzMjIsIDMyMywgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjUsIDYsIAotICAgIDYsIDYsIDI1MSwgMjUxLCAzMjYsIDMyNywgMCwgMCwgMzI4LCAzMjksIDI1MiwgMjUyLCAzMzAsIDMzMCwgMCwgNiwgNiwgNiwgCi0gICAgMjUxLCAyNTEsIDMzMSwgMzMyLCAzMzMsIDEyNiwgMzM0LCAzMzUsIDI1MiwgMjUyLCAzMzYsIDMzNiwgMTMwLCA2LCA2LCA2LCAKLSAgICAwLCAwLCAzMzcsIDMzOCwgMzM5LCAwLCAzNDAsIDM0MSwgMzQyLCAzNDIsIDM0MywgMzQzLCAzNDQsIDYsIDYsIDAsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgCi0gICAgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAKLSAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAzNDUsIDEwMSwgCi0gICAgMCwgMCwgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgNSwgNSwgNSwgNSwgNSwgMTAxLCAzNDUsIDI2LCAyMiwgMjMsIAotICAgIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAzMSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAwLCAwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMCwgMCwgMjYzLCAyNjEsIDI2NCwgMjYxLCAyNjUsIDI2MSwgMjY2LCAyNjEsIDAsIAorICAgIDI2MiwgMCwgMjYyLCAwLCAyNjIsIDAsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjcwLCAyNzAsIDI3MSwgMjcxLCAyNzIsIDI3MiwgMCwgMCwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgCisgICAgMjc5LCAyODAsIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIAorICAgIDI5MywgMjk0LCAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LCAKKyAgICAzMDcsIDMwOCwgMzA5LCAzMTAsIDMxMSwgMzEyLCAzMTMsIDMxNCwgMzE1LCAzMTYsIDMxNywgMzE4LCAzMTksIDMyMCwgCisgICAgMjYxLCAyNjEsIDMyMSwgMzIyLCAzMjMsIDAsIDMyNCwgMzI1LCAyNjIsIDI2MiwgMzI2LCAzMjYsIDMyNywgNiwgMzI4LCA2LCAKKyAgICA2LCA2LCAzMjksIDMzMCwgMzMxLCAwLCAzMzIsIDMzMywgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzUsIDYsIDYsIDYsIDI2MSwgCisgICAgMjYxLCAzMzYsIDMzNywgMCwgMCwgMzM4LCAzMzksIDI2MiwgMjYyLCAzNDAsIDM0MCwgMCwgNiwgNiwgNiwgMjYxLCAyNjEsIAorICAgIDM0MSwgMzQyLCAzNDMsIDEyNiwgMzQ0LCAzNDUsIDI2MiwgMjYyLCAzNDYsIDM0NiwgMTMwLCA2LCA2LCA2LCAwLCAwLCAKKyAgICAzNDcsIDM0OCwgMzQ5LCAwLCAzNTAsIDM1MSwgMzUyLCAzNTIsIDM1MywgMzUzLCAzNTQsIDYsIDYsIDAsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAzNTUsIDEwMSwgMCwgCisgICAgMCwgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgNSwgNSwgNSwgNSwgNSwgMTAxLCAzNTUsIDI2LCAyMiwgMjMsIAorICAgIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDYsIDYsIDI1LCA2LCA2LCA2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA1LCA1LCAxMjAsIDUsIDUsIDUsIDUsIDEyMCwgNSwgNSwgMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMjAsIDUsIDEyMCwgNSwgNSwgMzUyLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMTIwLCA1LCAzNTMsIDUsIDEyMCwgNSwgMzU0LCAzNTUsIDEyMCwgMTIwLCAzNTIsIDIwLCAxMjAsIDEyMCwgMzU2LCAxMjAsIAorICAgIDEyMCwgMjAsIDUsIDEyMCwgNSwgNSwgMzYyLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMTIwLCA1LCAzNjMsIDUsIDEyMCwgNSwgMzY0LCAzNjUsIDEyMCwgMTIwLCAzNjIsIDIwLCAxMjAsIDEyMCwgMzY2LCAxMjAsIAogICAgIDIwLCA1NSwgNTUsIDU1LCA1NSwgMjAsIDUsIDUsIDIwLCAyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDEyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDUsIDUsIDUsIDUsIDM1NywgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgCi0gICAgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIAotICAgIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAyNDEsIDI0MSwgMjQxLCAzMCwgMzEsIDI0MSwgMjQxLCAKKyAgICAyMCwgMjAsIDIwLCA1LCA1LCA1LCA1LCAzNjcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIAorICAgIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAKKyAgICAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMjQxLCAyNDEsIDI0MSwgMzAsIDMxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI3NjIsMjggKzI4MDEsMjggQEAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIAotICAgIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAKLSAgICAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzU2LCAKKyAgICAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgCisgICAgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAogICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAKLSAgICAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgCi0gICAgMzYwLCAzNjAsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIAotICAgIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAKLSAgICAzNDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAKLSAgICAzNDksIDM1MCwgMzUxLCAyNywgMzQ1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIAorICAgIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAKKyAgICAzNzAsIDM3MCwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgCisgICAgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIAorICAgIDM1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIAorICAgIDM1OSwgMzYwLCAzNjEsIDI3LCAzNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNiwgMjIsIAotICAgIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAKLSAgICAzNTAsIDM1MSwgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNiwgMjIsIAorICAgIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAKKyAgICAzNjAsIDM2MSwgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMjgwNSwxOCArMjg0NCwxOCBAQAogICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKICAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCiAgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDAsIAotICAgIDMwLCAzMSwgMzYyLCAzNjMsIDM2NCwgMzY1LCAzNjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM2NywgMzY4LCAzNjksIAotICAgIDM3MCwgMjAsIDMwLCAzMSwgMjAsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMzcxLCAzNzEsIDMwLCAKKyAgICAzMCwgMzEsIDM3MiwgMzczLCAzNzQsIDM3NSwgMzc2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNzcsIDM3OCwgMzc5LCAKKyAgICAzODAsIDIwLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDM4MSwgMzgxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDUsIDUsIDUsIDUsIDUsIDUsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAyNSwgMjUsIDI1LCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAzNzIsIDM3MiwgMzcyLCAKLSAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgCi0gICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIAotICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMCwgMzcyLCAwLCAwLCAwLCAwLCAwLCAzNzIsIDAsIDAsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAzODIsIDM4MiwgMzgyLCAKKyAgICAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgCisgICAgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIAorICAgIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI4MjksOCArMjg2OCw4IEBACiAgICAgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3MywgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzgzLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI4ODIsMTQgKzI5MjEsMTQgQEAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI4OTgsNyArMjkzNyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5MDgsNyArMjk0Nyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5MTYsNDcgKzI5NTUsNDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzQsIAotICAgIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzg0LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCAzODQsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAzODQsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk2NCw3ICszMDAzLDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk3MywxNCArMzAxMiwxNCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk4OCw4ICszMDI3LDggQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCAzNzQsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM4NCwgMzg0LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAwMiwxMSArMzA0MSwxMSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMTQsMTAgKzMwNTMsMTAgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDI1LDcgKzMwNjQsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDMzLDQwICszMDcyLDQwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMTA2LDI2ICszMTQ1LDI2IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzNzUsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDIsIDYsIDYsIDMwLCAzMSwgMzc2LCAyMCwgNTUsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDM4NSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEwMiwgNiwgNiwgMzAsIDMxLCAzODYsIDIwLCA1NSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNzcsIDM3OCwgMzc5LCAzODAsIDAsIDAsIDM4MSwgMzgyLCAzODMsIDM4NCwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzODcsIDM4OCwgMzg5LCAzOTAsIDM4NywgMCwgMzkxLCAzOTIsIDM5MywgCisgICAgMzk0LCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDEwMSwgMTAxLCAKLSAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICAxMDEsIDEwMSwgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCA1LCA1NSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAKICAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAKQEAgLTMxNTgsMTQgKzMxOTcsMTQgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMzg1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDM4NywgMzg4LCAzODksIDM5MCwgCi0gICAgMzkxLCAzOTIsIDM5MywgMzk0LCAzOTUsIDM5NiwgMzk3LCAzOTgsIDM5OSwgNDAwLCA0MDEsIDQwMiwgNDAzLCA0MDQsIAotICAgIDQwNSwgNDA2LCA0MDcsIDQwOCwgNDA5LCA0MTAsIDQxMSwgNDEyLCA0MTMsIDQxNCwgNDE1LCA0MTYsIDQxNywgNDE4LCAKLSAgICA0MTksIDQyMCwgNDIxLCA0MjIsIDQyMywgNDI0LCA0MjUsIDQyNiwgNDI3LCA0MjgsIDQyOSwgNDMwLCA0MzEsIDQzMiwgCi0gICAgNDMzLCA0MzQsIDQzNSwgNDM2LCA0MzcsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCA0NDMsIDQ0NCwgNDQ1LCA0NDYsIAotICAgIDQ0NywgNDQ4LCA0NDksIDQ1MCwgNDUxLCA0NTIsIDQ1MywgNDU0LCA0NTUsIDQ1NiwgNDU3LCA0NTgsIDQ1OSwgNDYwLCAKLSAgICA0NjEsIDQ2MiwgNDYzLCA0NjQsIDQ2NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjAsIDIwLCAzOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NiwgMzk3LCAzOTgsIDM5OSwgNDAwLCAKKyAgICA0MDEsIDQwMiwgNDAzLCA0MDQsIDQwNSwgNDA2LCA0MDcsIDQwOCwgNDA5LCA0MTAsIDQxMSwgNDEyLCA0MTMsIDQxNCwgCisgICAgNDE1LCA0MTYsIDQxNywgNDE4LCA0MTksIDQyMCwgNDIxLCA0MjIsIDQyMywgNDI0LCA0MjUsIDQyNiwgNDI3LCA0MjgsIAorICAgIDQyOSwgNDMwLCA0MzEsIDQzMiwgNDMzLCA0MzQsIDQzNSwgNDM2LCA0MzcsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCAKKyAgICA0NDMsIDQ0NCwgNDQ1LCA0NDYsIDQ0NywgNDQ4LCA0NDksIDQ1MCwgNDUxLCA0NTIsIDQ1MywgNDU0LCA0NTUsIDQ1NiwgCisgICAgNDU3LCA0NTgsIDQ1OSwgNDYwLCA0NjEsIDQ2MiwgNDYzLCA0NjQsIDQ2NSwgNDY2LCA0NjcsIDQ2OCwgNDY5LCA0NzAsIAorICAgIDQ3MSwgNDcyLCA0NzMsIDQ3NCwgNDc1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNSwgMTgsIDI1LCAwLCAwLCA3LCAKICAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMxODYsMTUgKzMyMjUsMTUgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzIwOCw5ICszMjQ3LDkgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjYsIDQ2NywgNDY4LCA0NjksIAotICAgIDQ3MCwgNDcxLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNDc0LCA0NzUsIDQ3NiwgCi0gICAgNDc3LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDQ3NywgNDc4LCA0NzksIAorICAgIDQ4MCwgNDgxLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MywgNDg0LCA0ODUsIDQ4NiwgCisgICAgNDg3LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzIyNyw3ICszMjY2LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDg4LCA0ODgsIDQ4OCwgNDg4LCA0ODgsIDQ4OCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjQyLDEzICszMjgxLDEzIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ3OCwgNDc4LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDg4LCA0ODgsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDE4LCA1LCA1LCA2LCAwLCA1LCA2LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDAsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIAorICAgIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgMCwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjY0LDcgKzMzMDMsNyBAQAogICAgIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDQ3OSwgNDc5LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNDg5LCA0ODksIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA2LCA1LCA1LCA1LCAwLCA1LCAKQEAgLTMyOTAsNyArMzMyOSw3IEBACiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMzMyMCwyOTcgKzMzNTksMzMyIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDQ4MCwgCi0gICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIAotICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCAKLSAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCi0gICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAotICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKLSAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDAsIDAsIDAsIDAsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjcsIDI3LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjYsIDIyLCAyMywgMzQ2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAKLSAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgCi0gICAgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgCi0gICAgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1LCAKLSAgICA1NSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgCi0gICAgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAwLCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNTUsIDU1LCAKLSAgICA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCA1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjcsIDI3LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI2LCAyMiwgMjMsIDM1NiwgMjcsIDI3LCAyNywgMjcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIAorICAgIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgNTUsIDUsIDU1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIAorICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDE4LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMjUsIDU1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAKKyAgICAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAxOCwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgNSwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1NSwgNTUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAKKyAgICAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCA1NSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCiAgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1LCAyNSwgMjUsIDUsIDIxLCAKLSAgICAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDUsIDI1LCAyNSwgNSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0zNzAwLDIxOCArMzc3NCwyMjEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCAKKyAgICA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgCisgICAgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIAorICAgIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCAKKyAgICA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgCisgICAgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzQ1LCAzNDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU1LCAzNTUsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAKKyAgICAzNjEsIDI3LCAyNywgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDUsIDUsIDUsIDUsIDUsIDUsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA1LCA1LCAwLCAwLCAwLCAwLCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDUsIDUsIDUsIDUsIDUsIDUsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA1LCA1LCAwLCAwLCAwLCAwLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNiwgNiwgNiwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNiwgNiwgNiwgNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMzc0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCkBAIC0zOTI0LDEzICs0MDAxLDEzIEBACiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCiB9OwogCiAvKiBSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzIGRvdWJsZSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzCkBAIC0zOTk2LDExICs0MDczLDEzIEBACiAgICAgY2FzZSAweDExMTM2OgogICAgIGNhc2UgMHgxMTFEMDoKICAgICBjYXNlIDB4MTEyRjA6CisgICAgY2FzZSAweDExNDUwOgogICAgIGNhc2UgMHgxMTREMDoKICAgICBjYXNlIDB4MTE2NTA6CiAgICAgY2FzZSAweDExNkMwOgogICAgIGNhc2UgMHgxMTczMDoKICAgICBjYXNlIDB4MTE4RTA6CisgICAgY2FzZSAweDExQzUwOgogICAgIGNhc2UgMHgxNkE2MDoKICAgICBjYXNlIDB4MTZCNTA6CiAgICAgY2FzZSAweDFEN0NFOgpAQCAtNDAwOCw2ICs0MDg3LDcgQEAKICAgICBjYXNlIDB4MUQ3RTI6CiAgICAgY2FzZSAweDFEN0VDOgogICAgIGNhc2UgMHgxRDdGNjoKKyAgICBjYXNlIDB4MUU5NTA6CiAgICAgY2FzZSAweDFGMTAwOgogICAgIGNhc2UgMHgxRjEwMToKICAgICBjYXNlIDB4MUYxMEI6CkBAIC00MTA4LDExICs0MTg4LDE0IEBACiAgICAgY2FzZSAweDExMUQxOgogICAgIGNhc2UgMHgxMTFFMToKICAgICBjYXNlIDB4MTEyRjE6CisgICAgY2FzZSAweDExNDUxOgogICAgIGNhc2UgMHgxMTREMToKICAgICBjYXNlIDB4MTE2NTE6CiAgICAgY2FzZSAweDExNkMxOgogICAgIGNhc2UgMHgxMTczMToKICAgICBjYXNlIDB4MTE4RTE6CisgICAgY2FzZSAweDExQzUxOgorICAgIGNhc2UgMHgxMUM1QToKICAgICBjYXNlIDB4MTI0MTU6CiAgICAgY2FzZSAweDEyNDFFOgogICAgIGNhc2UgMHgxMjQyQzoKQEAgLTQxMjgsMTcgKzQyMTEsMjIgQEAKICAgICBjYXNlIDB4MUQ3RUQ6CiAgICAgY2FzZSAweDFEN0Y3OgogICAgIGNhc2UgMHgxRThDNzoKKyAgICBjYXNlIDB4MUU5NTE6CiAgICAgY2FzZSAweDFGMTAyOgogICAgIGNhc2UgMHgyMDkyQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMDsKKyAgICBjYXNlIDB4MEQ1QzoKICAgICBjYXNlIDB4MjE1MjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xMC4wOwogICAgIGNhc2UgMHgxMDlGNjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xMi4wOwogICAgIGNhc2UgMHgwOUY0OgogICAgIGNhc2UgMHgwQjc1OgorICAgIGNhc2UgMHgwRDc2OgogICAgIGNhc2UgMHhBODMzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzE2LjA7CisgICAgY2FzZSAweDBENTg6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTYwLjA7CiAgICAgY2FzZSAweDAwQkQ6CiAgICAgY2FzZSAweDBCNzM6CiAgICAgY2FzZSAweDBENzQ6CkBAIC00MTUyLDYgKzQyNDAsOCBAQAogICAgIGNhc2UgMHgxMEU3QjoKICAgICBjYXNlIDB4MTI0NjQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMi4wOworICAgIGNhc2UgMHgwRDVCOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzIwLjA7CiAgICAgY2FzZSAweDIxNTM6CiAgICAgY2FzZSAweDEwRTdEOgogICAgIGNhc2UgMHgxMjQ1QToKQEAgLTQxNzAsNiArNDI2MCw5IEBACiAgICAgY2FzZSAweDEyNDYyOgogICAgIGNhc2UgMHgxMjQ2MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC80LjA7CisgICAgY2FzZSAweDBENTk6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNDAuMDsKKyAgICBjYXNlIDB4MEQ1RToKICAgICBjYXNlIDB4MjE1NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC81LjA7CiAgICAgY2FzZSAweDIxNTk6CkBAIC00MTc5LDYgKzQyNzIsNyBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzcuMDsKICAgICBjYXNlIDB4MDlGNToKICAgICBjYXNlIDB4MEI3NjoKKyAgICBjYXNlIDB4MEQ3NzoKICAgICBjYXNlIDB4MjE1QjoKICAgICBjYXNlIDB4QTgzNDoKICAgICBjYXNlIDB4MTI0NUY6CkBAIC00MjM2LDYgKzQzMzAsNyBAQAogICAgIGNhc2UgMHgxMTFFQToKICAgICBjYXNlIDB4MTE3M0E6CiAgICAgY2FzZSAweDExOEVBOgorICAgIGNhc2UgMHgxMUM2MzoKICAgICBjYXNlIDB4MTZCNUI6CiAgICAgY2FzZSAweDFEMzY5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAuMDsKQEAgLTQyNjksNiArNDM2NCw3IEBACiAgICAgY2FzZSAweDEwRTcyOgogICAgIGNhc2UgMHgxMTA2NDoKICAgICBjYXNlIDB4MTExRjM6CisgICAgY2FzZSAweDExQzZDOgogICAgIGNhc2UgMHgxNkI1QzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMC4wOwogICAgIGNhc2UgMHgwQkYyOgpAQCAtNDQ3MCwxMSArNDU2NiwxNCBAQAogICAgIGNhc2UgMHgxMTFEMjoKICAgICBjYXNlIDB4MTExRTI6CiAgICAgY2FzZSAweDExMkYyOgorICAgIGNhc2UgMHgxMTQ1MjoKICAgICBjYXNlIDB4MTE0RDI6CiAgICAgY2FzZSAweDExNjUyOgogICAgIGNhc2UgMHgxMTZDMjoKICAgICBjYXNlIDB4MTE3MzI6CiAgICAgY2FzZSAweDExOEUyOgorICAgIGNhc2UgMHgxMUM1MjoKKyAgICBjYXNlIDB4MTFDNUI6CiAgICAgY2FzZSAweDEyNDAwOgogICAgIGNhc2UgMHgxMjQxNjoKICAgICBjYXNlIDB4MTI0MUY6CkBAIC00NDk0LDYgKzQ1OTMsNyBAQAogICAgIGNhc2UgMHgxRDdFRToKICAgICBjYXNlIDB4MUQ3Rjg6CiAgICAgY2FzZSAweDFFOEM4OgorICAgIGNhc2UgMHgxRTk1MjoKICAgICBjYXNlIDB4MUYxMDM6CiAgICAgY2FzZSAweDIyMzkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMi4wOwpAQCAtNDUzNyw2ICs0NjM3LDcgQEAKICAgICBjYXNlIDB4MTExRUI6CiAgICAgY2FzZSAweDExNzNCOgogICAgIGNhc2UgMHgxMThFQjoKKyAgICBjYXNlIDB4MTFDNjQ6CiAgICAgY2FzZSAweDFEMzZBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjAuMDsKICAgICBjYXNlIDB4MTAxMUE6CkBAIC00NjU3LDExICs0NzU4LDE0IEBACiAgICAgY2FzZSAweDExMUQzOgogICAgIGNhc2UgMHgxMTFFMzoKICAgICBjYXNlIDB4MTEyRjM6CisgICAgY2FzZSAweDExNDUzOgogICAgIGNhc2UgMHgxMTREMzoKICAgICBjYXNlIDB4MTE2NTM6CiAgICAgY2FzZSAweDExNkMzOgogICAgIGNhc2UgMHgxMTczMzoKICAgICBjYXNlIDB4MTE4RTM6CisgICAgY2FzZSAweDExQzUzOgorICAgIGNhc2UgMHgxMUM1QzoKICAgICBjYXNlIDB4MTI0MDE6CiAgICAgY2FzZSAweDEyNDA4OgogICAgIGNhc2UgMHgxMjQxNzoKQEAgLTQ2ODYsNiArNDc5MCw3IEBACiAgICAgY2FzZSAweDFEN0VGOgogICAgIGNhc2UgMHgxRDdGOToKICAgICBjYXNlIDB4MUU4Qzk6CisgICAgY2FzZSAweDFFOTUzOgogICAgIGNhc2UgMHgxRjEwNDoKICAgICBjYXNlIDB4MjBBRkQ6CiAgICAgY2FzZSAweDIwQjE5OgpAQCAtNDY5NiwxMCArNDgwMSwxMyBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzEyLjA7CiAgICAgY2FzZSAweDA5RjY6CiAgICAgY2FzZSAweDBCNzc6CisgICAgY2FzZSAweDBENzg6CiAgICAgY2FzZSAweEE4MzU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMTYuMDsKICAgICBjYXNlIDB4MEYyQjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8yLjA7CisgICAgY2FzZSAweDBENUQ6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMjAuMDsKICAgICBjYXNlIDB4MDBCRToKICAgICBjYXNlIDB4MDlGODoKICAgICBjYXNlIDB4MEI3NDoKQEAgLTQ3MTEsNiArNDgxOSw4IEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvNS4wOwogICAgIGNhc2UgMHgyMTVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzguMDsKKyAgICBjYXNlIDB4MEQ1QToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC84MC4wOwogICAgIGNhc2UgMHgxMzc0OgogICAgIGNhc2UgMHgzMDNBOgogICAgIGNhc2UgMHgzMjRBOgpAQCAtNDcyNCw2ICs0ODM0LDcgQEAKICAgICBjYXNlIDB4MTEwNUQ6CiAgICAgY2FzZSAweDExMUVDOgogICAgIGNhc2UgMHgxMThFQzoKKyAgICBjYXNlIDB4MTFDNjU6CiAgICAgY2FzZSAweDFEMzZCOgogICAgIGNhc2UgMHgyMDk4MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwLjA7CkBAIC00ODM2LDExICs0OTQ3LDE0IEBACiAgICAgY2FzZSAweDExMUQ0OgogICAgIGNhc2UgMHgxMTFFNDoKICAgICBjYXNlIDB4MTEyRjQ6CisgICAgY2FzZSAweDExNDU0OgogICAgIGNhc2UgMHgxMTRENDoKICAgICBjYXNlIDB4MTE2NTQ6CiAgICAgY2FzZSAweDExNkM0OgogICAgIGNhc2UgMHgxMTczNDoKICAgICBjYXNlIDB4MTE4RTQ6CisgICAgY2FzZSAweDExQzU0OgorICAgIGNhc2UgMHgxMUM1RDoKICAgICBjYXNlIDB4MTI0MDI6CiAgICAgY2FzZSAweDEyNDA5OgogICAgIGNhc2UgMHgxMjQwRjoKQEAgLTQ4NjYsNiArNDk4MCw3IEBACiAgICAgY2FzZSAweDFEN0YwOgogICAgIGNhc2UgMHgxRDdGQToKICAgICBjYXNlIDB4MUU4Q0E6CisgICAgY2FzZSAweDFFOTU0OgogICAgIGNhc2UgMHgxRjEwNToKICAgICBjYXNlIDB4MjAwNjQ6CiAgICAgY2FzZSAweDIwMEUyOgpAQCAtNDg4Niw2ICs1MDAxLDcgQEAKICAgICBjYXNlIDB4MTEwNUU6CiAgICAgY2FzZSAweDExMUVEOgogICAgIGNhc2UgMHgxMThFRDoKKyAgICBjYXNlIDB4MTFDNjY6CiAgICAgY2FzZSAweDEyNDY3OgogICAgIGNhc2UgMHgxRDM2QzoKICAgICBjYXNlIDB4MjA5OEM6CkBAIC01MDA1LDExICs1MTIxLDE0IEBACiAgICAgY2FzZSAweDExMUQ1OgogICAgIGNhc2UgMHgxMTFFNToKICAgICBjYXNlIDB4MTEyRjU6CisgICAgY2FzZSAweDExNDU1OgogICAgIGNhc2UgMHgxMTRENToKICAgICBjYXNlIDB4MTE2NTU6CiAgICAgY2FzZSAweDExNkM1OgogICAgIGNhc2UgMHgxMTczNToKICAgICBjYXNlIDB4MTE4RTU6CisgICAgY2FzZSAweDExQzU1OgorICAgIGNhc2UgMHgxMUM1RToKICAgICBjYXNlIDB4MTI0MDM6CiAgICAgY2FzZSAweDEyNDBBOgogICAgIGNhc2UgMHgxMjQxMDoKQEAgLTUwMzEsNiArNTE1MCw3IEBACiAgICAgY2FzZSAweDFEN0YxOgogICAgIGNhc2UgMHgxRDdGQjoKICAgICBjYXNlIDB4MUU4Q0I6CisgICAgY2FzZSAweDFFOTU1OgogICAgIGNhc2UgMHgxRjEwNjoKICAgICBjYXNlIDB4MjAxMjE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1LjA7CkBAIC01MDY3LDYgKzUxODcsNyBAQAogICAgIGNhc2UgMHgxMTA1RjoKICAgICBjYXNlIDB4MTExRUU6CiAgICAgY2FzZSAweDExOEVFOgorICAgIGNhc2UgMHgxMUM2NzoKICAgICBjYXNlIDB4MTI0Njg6CiAgICAgY2FzZSAweDFEMzZEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAuMDsKQEAgLTUxNzIsMTEgKzUyOTMsMTQgQEAKICAgICBjYXNlIDB4MTExRDY6CiAgICAgY2FzZSAweDExMUU2OgogICAgIGNhc2UgMHgxMTJGNjoKKyAgICBjYXNlIDB4MTE0NTY6CiAgICAgY2FzZSAweDExNEQ2OgogICAgIGNhc2UgMHgxMTY1NjoKICAgICBjYXNlIDB4MTE2QzY6CiAgICAgY2FzZSAweDExNzM2OgogICAgIGNhc2UgMHgxMThFNjoKKyAgICBjYXNlIDB4MTFDNTY6CisgICAgY2FzZSAweDExQzVGOgogICAgIGNhc2UgMHgxMjQwNDoKICAgICBjYXNlIDB4MTI0MEI6CiAgICAgY2FzZSAweDEyNDExOgpAQCAtNTE5NCw2ICs1MzE4LDcgQEAKICAgICBjYXNlIDB4MUQ3RjI6CiAgICAgY2FzZSAweDFEN0ZDOgogICAgIGNhc2UgMHgxRThDQzoKKyAgICBjYXNlIDB4MUU5NTY6CiAgICAgY2FzZSAweDFGMTA3OgogICAgIGNhc2UgMHgyMEFFQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYuMDsKQEAgLTUyMDgsNiArNTMzMyw3IEBACiAgICAgY2FzZSAweDExMDYwOgogICAgIGNhc2UgMHgxMTFFRjoKICAgICBjYXNlIDB4MTE4RUY6CisgICAgY2FzZSAweDExQzY4OgogICAgIGNhc2UgMHgxRDM2RToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYwLjA7CiAgICAgY2FzZSAweDEwMTFFOgpAQCAtNTI5MywxMSArNTQxOSwxNCBAQAogICAgIGNhc2UgMHgxMTFENzoKICAgICBjYXNlIDB4MTExRTc6CiAgICAgY2FzZSAweDExMkY3OgorICAgIGNhc2UgMHgxMTQ1NzoKICAgICBjYXNlIDB4MTE0RDc6CiAgICAgY2FzZSAweDExNjU3OgogICAgIGNhc2UgMHgxMTZDNzoKICAgICBjYXNlIDB4MTE3Mzc6CiAgICAgY2FzZSAweDExOEU3OgorICAgIGNhc2UgMHgxMUM1NzoKKyAgICBjYXNlIDB4MTFDNjA6CiAgICAgY2FzZSAweDEyNDA1OgogICAgIGNhc2UgMHgxMjQwQzoKICAgICBjYXNlIDB4MTI0MTI6CkBAIC01MzE2LDYgKzU0NDUsNyBAQAogICAgIGNhc2UgMHgxRDdGMzoKICAgICBjYXNlIDB4MUQ3RkQ6CiAgICAgY2FzZSAweDFFOENEOgorICAgIGNhc2UgMHgxRTk1NzoKICAgICBjYXNlIDB4MUYxMDg6CiAgICAgY2FzZSAweDIwMDAxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wOwpAQCAtNTMzNCw2ICs1NDY0LDcgQEAKICAgICBjYXNlIDB4MTEwNjE6CiAgICAgY2FzZSAweDExMUYwOgogICAgIGNhc2UgMHgxMThGMDoKKyAgICBjYXNlIDB4MTFDNjk6CiAgICAgY2FzZSAweDFEMzZGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAuMDsKICAgICBjYXNlIDB4MTAxMUY6CkBAIC01NDE3LDExICs1NTQ4LDE0IEBACiAgICAgY2FzZSAweDExMUQ4OgogICAgIGNhc2UgMHgxMTFFODoKICAgICBjYXNlIDB4MTEyRjg6CisgICAgY2FzZSAweDExNDU4OgogICAgIGNhc2UgMHgxMTREODoKICAgICBjYXNlIDB4MTE2NTg6CiAgICAgY2FzZSAweDExNkM4OgogICAgIGNhc2UgMHgxMTczODoKICAgICBjYXNlIDB4MTE4RTg6CisgICAgY2FzZSAweDExQzU4OgorICAgIGNhc2UgMHgxMUM2MToKICAgICBjYXNlIDB4MTI0MDY6CiAgICAgY2FzZSAweDEyNDBEOgogICAgIGNhc2UgMHgxMjQxMzoKQEAgLTU0MzksNiArNTU3Myw3IEBACiAgICAgY2FzZSAweDFEN0Y0OgogICAgIGNhc2UgMHgxRDdGRToKICAgICBjYXNlIDB4MUU4Q0U6CisgICAgY2FzZSAweDFFOTU4OgogICAgIGNhc2UgMHgxRjEwOToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDguMDsKICAgICBjYXNlIDB4MTA5RkQ6CkBAIC01NDUxLDYgKzU1ODYsNyBAQAogICAgIGNhc2UgMHgxMTA2MjoKICAgICBjYXNlIDB4MTExRjE6CiAgICAgY2FzZSAweDExOEYxOgorICAgIGNhc2UgMHgxMUM2QToKICAgICBjYXNlIDB4MUQzNzA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4MC4wOwogICAgIGNhc2UgMHgxMDEyMDoKQEAgLTU1MzUsMTEgKzU2NzEsMTQgQEAKICAgICBjYXNlIDB4MTExRDk6CiAgICAgY2FzZSAweDExMUU5OgogICAgIGNhc2UgMHgxMTJGOToKKyAgICBjYXNlIDB4MTE0NTk6CiAgICAgY2FzZSAweDExNEQ5OgogICAgIGNhc2UgMHgxMTY1OToKICAgICBjYXNlIDB4MTE2Qzk6CiAgICAgY2FzZSAweDExNzM5OgogICAgIGNhc2UgMHgxMThFOToKKyAgICBjYXNlIDB4MTFDNTk6CisgICAgY2FzZSAweDExQzYyOgogICAgIGNhc2UgMHgxMjQwNzoKICAgICBjYXNlIDB4MTI0MEU6CiAgICAgY2FzZSAweDEyNDE0OgpAQCAtNTU1OSw2ICs1Njk4LDcgQEAKICAgICBjYXNlIDB4MUQ3RjU6CiAgICAgY2FzZSAweDFEN0ZGOgogICAgIGNhc2UgMHgxRThDRjoKKyAgICBjYXNlIDB4MUU5NTk6CiAgICAgY2FzZSAweDFGMTBBOgogICAgIGNhc2UgMHgyRjg5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkuMDsKQEAgLTU1NzQsNiArNTcxNCw3IEBACiAgICAgY2FzZSAweDExMDYzOgogICAgIGNhc2UgMHgxMTFGMjoKICAgICBjYXNlIDB4MTE4RjI6CisgICAgY2FzZSAweDExQzZCOgogICAgIGNhc2UgMHgxRDM3MToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkwLjA7CiAgICAgY2FzZSAweDEwMTIxOgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwppbmRleCA3ZTZmMzY0Li5hYjZiMjM1IDEwMDY0NAotLS0gYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYworKysgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwpAQCAtMjY1LDcgKzI2NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhcnNlX3dlYWtyZWZfaW5pdF9hcmdzKGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKK3BhcnNlX3dlYWtyZWZfaW5pdF9hcmdzKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb2JwLCBQeU9iamVjdCAqKmNhbGxiYWNrcCkKIHsKICAgICByZXR1cm4gUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgZnVuY25hbWUsIDEsIDIsIG9icCwgY2FsbGJhY2twKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQAogICAgIG1ldGhvZChQeU9iamVjdCAqcHJveHkpIHsgXAogICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc3BlY2lhbCk7IFwKICAgICAgICAgICAgIFVOV1JBUChwcm94eSk7IFwKLSAgICAgICAgICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm94eSwgJlB5SWRfIyNzcGVjaWFsLCAiIik7IFwKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm94eSwgJlB5SWRfIyNzcGVjaWFsLCBOVUxMKTsgXAogICAgICAgICB9CiAKIApkaWZmIC0tZ2l0IGEvUEMvX21zaS5jIGIvUEMvX21zaS5jCmluZGV4IDllN2UzNmQuLjc4OWIwNGYgMTAwNjQ0Ci0tLSBhL1BDL19tc2kuYworKysgYi9QQy9fbXNpLmMKQEAgLTEwNDYsMTIgKzEwNDYsMTIgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFRElSRUNUIiwgKGludClNU0lEQk9QRU5fQ1JFQVRFRElSRUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURSIsIChpbnQpTVNJREJPUEVOX0NSRUFURSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9ESVJFQ1QiLCAoaW50KU1TSURCT1BFTl9ESVJFQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUkVBRE9OTFkiLCAoaW50KU1TSURCT1BFTl9SRUFET05MWSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9UUkFOU0FDVCIsIChpbnQpTVNJREJPUEVOX1RSQU5TQUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1BBVENIRklMRSIsIChpbnQpTVNJREJPUEVOX1BBVENIRklMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEVESVJFQ1QiLCAobG9uZylNU0lEQk9QRU5fQ1JFQVRFRElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURSIsIChsb25nKU1TSURCT1BFTl9DUkVBVEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fRElSRUNUIiwgKGxvbmcpTVNJREJPUEVOX0RJUkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9SRUFET05MWSIsIChsb25nKU1TSURCT1BFTl9SRUFET05MWSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9UUkFOU0FDVCIsIChsb25nKU1TSURCT1BFTl9UUkFOU0FDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9QQVRDSEZJTEUiLCAobG9uZylNU0lEQk9QRU5fUEFUQ0hGSUxFKTsKIAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TSUNPTElORk9fTkFNRVMpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TSUNPTElORk9fVFlQRVMpOwpkaWZmIC0tZ2l0IGEvUEMvX3Rlc3Rjb25zb2xlLmMgYi9QQy9fdGVzdGNvbnNvbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzkzNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvX3Rlc3Rjb25zb2xlLmMKQEAgLTAsMCArMSwxMzEgQEAKKworLyogVGVzdGluZyBtb2R1bGUgZm9yIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIG9mIGV4dGVuc2lvbiBtb2R1bGVzIChQRVAgNDg5KQorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2lmZGVmIE1TX1dJTkRPV1MKKworI2luY2x1ZGUgIi4uXG1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIgorCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworIC8qIFRoZSBmdWxsIGRlZmluaXRpb24gaXMgaW4gaW9tb2R1bGUuIFdlIHJlcHJvZHVjZQorIGVub3VnaCBoZXJlIHRvIGdldCB0aGUgaGFuZGxlLCB3aGljaCBpcyBhbGwgd2Ugd2FudC4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgSEFORExFIGhhbmRsZTsKK30gd2luY29uc29sZWlvOworCisKK3N0YXRpYyBpbnQgZXhlY2Z1bmMoUHlPYmplY3QgKm0pCit7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5TW9kdWxlRGVmX1Nsb3QgdGVzdGNvbnNvbGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIGV4ZWNmdW5jfSwKKyAgICB7MCwgTlVMTH0sCit9OworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3Rlc3Rjb25zb2xlCisKK190ZXN0Y29uc29sZS53cml0ZV9pbnB1dAorICAgIGZpbGU6IG9iamVjdAorICAgIHM6IFB5Qnl0ZXNPYmplY3QKKworV3JpdGVzIFVURi0xNi1MRSBlbmNvZGVkIGJ5dGVzIHRvIHRoZSBjb25zb2xlIGFzIGlmIHR5cGVkIGJ5IGEgdXNlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc09iamVjdCAqcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OGY5NTYzZGIzNGFlZGIzIGlucHV0PTRjNzc0ZjJkMDU3NzBiYzZdKi8KK3sKKyAgICBJTlBVVF9SRUNPUkQgKnJlYyA9IE5VTEw7CisgICAgCisgICAgaWYgKCFQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2soZmlsZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIHJhdyBjb25zb2xlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBjb25zdCB3Y2hhcl90ICpwID0gKGNvbnN0IHdjaGFyX3QgKilQeUJ5dGVzX0FTX1NUUklORyhzKTsKKyAgICBEV09SRCBzaXplID0gKERXT1JEKVB5Qnl0ZXNfR0VUX1NJWkUocykgLyBzaXplb2Yod2NoYXJfdCk7CisKKyAgICByZWMgPSAoSU5QVVRfUkVDT1JEKilQeU1lbV9NYWxsb2Moc2l6ZW9mKElOUFVUX1JFQ09SRCkgKiBzaXplKTsKKyAgICBpZiAoIXJlYykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBtZW1zZXQocmVjLCAwLCBzaXplb2YoSU5QVVRfUkVDT1JEKSAqIHNpemUpOworICAgIAorICAgIElOUFVUX1JFQ09SRCAqcHJlYyA9IHJlYzsKKyAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3AsICsrcHJlYykgeworICAgICAgICBwcmVjLT5FdmVudFR5cGUgPSBLRVlfRVZFTlQ7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LmJLZXlEb3duID0gVFJVRTsKKyAgICAgICAgcHJlYy0+RXZlbnQuS2V5RXZlbnQud1JlcGVhdENvdW50ID0gMTA7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LnVDaGFyLlVuaWNvZGVDaGFyID0gKnA7CisgICAgfQorCisgICAgSEFORExFIGhJbnB1dCA9ICgod2luY29uc29sZWlvKilmaWxlKS0+aGFuZGxlOworICAgIERXT1JEIHRvdGFsID0gMDsKKyAgICB3aGlsZSAodG90YWwgPCBzaXplKSB7CisgICAgICAgIERXT1JEIHdyb3RlOworICAgICAgICBpZiAoIVdyaXRlQ29uc29sZUlucHV0VyhoSW5wdXQsICZyZWNbdG90YWxdLCAoc2l6ZSAtIHRvdGFsKSwgJndyb3RlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHRvdGFsICs9IHdyb3RlOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUoKHZvaWQqKXJlYyk7CisgICAgCisgICAgUHlfUkVUVVJOX05PTkU7CitlcnJvcjoKKyAgICBpZiAocmVjKQorICAgICAgICBQeU1lbV9GcmVlKCh2b2lkKilyZWMpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfdGVzdGNvbnNvbGUucmVhZF9vdXRwdXQKKyAgICBmaWxlOiBvYmplY3QKKworUmVhZHMgYSBzdHIgZnJvbSB0aGUgY29uc29sZSBhcyB3cml0dGVuIHRvIHN0ZG91dC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3NjMxMGQ4MWE3M2U2ZDIgaW5wdXQ9YjM1MjFmNjRiMWI1NThlM10qLworeworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaW5jbHVkZSAiY2xpbmljXF90ZXN0Y29uc29sZS5jLmgiCisKK1B5TWV0aG9kRGVmIHRlc3Rjb25zb2xlX21ldGhvZHNbXSA9IHsKKyAgICBfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGCisgICAgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIHRlc3Rjb25zb2xlX2RlZiA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJfdGVzdGNvbnNvbGUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJUZXN0IG1vZHVsZSBmb3IgdGhlIFdpbmRvd3MgY29uc29sZSIpLCAvKiBtX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgdGVzdGNvbnNvbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICB0ZXN0Y29uc29sZV9zbG90cywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdGNvbnNvbGUoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJnRlc3Rjb25zb2xlX2RlZik7Cit9CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCmluZGV4IDYwYmVlMzAuLmZkOTc3ZjUgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCkBAIC03MTgsNyArNzE4LDcgQEAKICAqIDEgaWYgdGhlIFB5dGhvbi1kbGwgZG9lcyBub3QgZXhwb3J0IHRoZSBmdW5jdGlvbnMgd2UgbmVlZAogICogMiBpZiBubyBpbnN0YWxsLXNjcmlwdCBpcyBzcGVjaWZpZWQgaW4gcGF0aG5hbWUKICAqIDMgaWYgdGhlIGluc3RhbGwtc2NyaXB0IGZpbGUgY291bGQgbm90IGJlIG9wZW5lZAotICogdGhlIHJldHVybiB2YWx1ZSBvZiBQeVJ1bl9TaW1wbGVTdHJpbmcoKSBvdGhlcndpc2UsCisgKiB0aGUgcmV0dXJuIHZhbHVlIG9mIFB5UnVuX1NpbXBsZVN0cmluZygpIG9yIFB5X0ZpbmFsaXplRXgoKSBvdGhlcndpc2UsCiAgKiB3aGljaCBpcyAwIGlmIGV2ZXJ5dGhpbmcgaXMgb2ssIC0xIGlmIGFuIGV4Y2VwdGlvbiBoYWQgb2NjdXJyZWQKICAqIGluIHRoZSBpbnN0YWxsLXNjcmlwdC4KICAqLwpAQCAtNzMxLDcgKzczMSw3IEBACiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfSW5pdGlhbGl6ZSwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5U3lzX1NldEFyZ3YsIChpbnQsIHdjaGFyX3QgKiopKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5UnVuX1NpbXBsZVN0cmluZywgKGNoYXIgKikpOwotICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0ZpbmFsaXplLCAodm9pZCkpOworICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlfRmluYWxpemVFeCwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeV9CdWlsZFZhbHVlLCAoY2hhciAqLCAuLi4pKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeUNGdW5jdGlvbl9OZXcsCiAgICAgICAgICAgICAgKFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICopKTsKQEAgLTczOSw3ICs3MzksNyBAQAogICAgIERFQ0xQUk9DKGhQeXRob24sIFB5T2JqZWN0ICosIFB5RXJyX0Zvcm1hdCwgKFB5T2JqZWN0ICosIGNoYXIgKikpOwogCiAgICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeVN5c19TZXRBcmd2Ci0gICAgICAgIHx8ICFQeVJ1bl9TaW1wbGVTdHJpbmcgfHwgIVB5X0ZpbmFsaXplKQorICAgICAgICB8fCAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeV9GaW5hbGl6ZUV4KQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGlmICghUHlfQnVpbGRWYWx1ZSB8fCAhUHlBcmdfUGFyc2VUdXBsZSB8fCAhUHlFcnJfRm9ybWF0KQpAQCAtNzg2LDcgKzc4Niw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CiAKICAgICBjbG9zZShmaCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg0OCwxMSArODUwLDExIEBACiAgICAgaW50IHJjOwogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0luaXRpYWxpemUsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfU2V0UHJvZ3JhbU5hbWUsICh3Y2hhcl90ICopKTsKLSAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9GaW5hbGl6ZSwgKHZvaWQpKTsKKyAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5X0ZpbmFsaXplRXgsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVJ1bl9TaW1wbGVTdHJpbmcsIChjaGFyICopKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeUVycl9QcmludCwgKHZvaWQpKTsKIAotICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlfU2V0UHJvZ3JhbU5hbWUgfHwgIVB5X0ZpbmFsaXplIHx8CisgICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeV9TZXRQcm9ncmFtTmFtZSB8fCAhUHlfRmluYWxpemVFeCB8fAogICAgICAgICAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeUVycl9QcmludCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC04NjIsNyArODY0LDkgQEAKICAgICByYyA9IFB5UnVuX1NpbXBsZVN0cmluZyhzY3JpcHQpOwogICAgIGlmIChyYykKICAgICAgICAgUHlFcnJfUHJpbnQoKTsKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHJjID0gLTE7CisgICAgfQogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmggYi9QQy9jbGluaWMvX3Rlc3Rjb25zb2xlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzg2MGNmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmgKQEAgLTAsMCArMSw4MiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF90ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9fZG9jX18sCisid3JpdGVfaW5wdXQoJG1vZHVsZSwgLywgZmlsZSwgcylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlcyBVVEYtMTYtTEUgZW5jb2RlZCBieXRlcyB0byB0aGUgY29uc29sZSBhcyBpZiB0eXBlZCBieSBhIHVzZXIuIik7CisKKyNkZWZpbmUgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZV9pbnB1dCIsIChQeUNGdW5jdGlvbilfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXQsIE1FVEhfRkFTVENBTEwsIF90ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzT2JqZWN0ICpzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAicyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9TOndyaXRlX2lucHV0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZmlsZTsKKyAgICBQeUJ5dGVzT2JqZWN0ICpzOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmcykpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfaW1wbChtb2R1bGUsIGZpbGUsIHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfX2RvY19fLAorInJlYWRfb3V0cHV0KCRtb2R1bGUsIC8sIGZpbGUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkcyBhIHN0ciBmcm9tIHRoZSBjb25zb2xlIGFzIHdyaXR0ZW4gdG8gc3Rkb3V0LiIpOworCisjZGVmaW5lIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZF9vdXRwdXQiLCAoUHlDRnVuY3Rpb24pX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0LCBNRVRIX0ZBU1RDQUxMLCBfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOnJlYWRfb3V0cHV0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZmlsZTsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChtb2R1bGUsIGZpbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorICAgICNkZWZpbmUgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorICAgICNkZWZpbmUgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2E4ZGMwYzQyMTgwN2M0MSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaCBiL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCmluZGV4IGU3YTcyYzQuLjY5MzVjYWQgMTAwNjQ0Ci0tLSBhL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCisrKyBiL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCkBAIC01MSw4ICs1MSw5IEBACiAgICAgbG9uZyBuYnl0ZXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpbDpsb2NraW5nIiwKLSAgICAgICAgJmZkLCAmbW9kZSwgJm5ieXRlcykpCisgICAgICAgICZmZCwgJm1vZGUsICZuYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2xvY2tpbmdfaW1wbChtb2R1bGUsIGZkLCBtb2RlLCBuYnl0ZXMpOwogCiBleGl0OgpAQCAtODUsMTEgKzg2LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRtb2RlIiwKLSAgICAgICAgJmZkLCAmZmxhZ3MpKQorICAgICAgICAmZmQsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3NldG1vZGVfaW1wbChtb2R1bGUsIGZkLCBmbGFncyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTExMCwyMiArMTEzLDI0IEBACiAgICAgeyJvcGVuX29zZmhhbmRsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfb3Blbl9vc2ZoYW5kbGUsIE1FVEhfVkFSQVJHUywgbXN2Y3J0X29wZW5fb3NmaGFuZGxlX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCi1tc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncyk7Cittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludHB0cl90IGhhbmRsZTsKICAgICBpbnQgZmxhZ3M7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiX1B5X1BBUlNFX0lOVFBUUiJpOm9wZW5fb3NmaGFuZGxlIiwKLSAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkKKyAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xNDMsNyArMTQ4LDcgQEAKICNkZWZpbmUgTVNWQ1JUX0dFVF9PU0ZIQU5ETEVfTUVUSE9EREVGICAgIFwKICAgICB7ImdldF9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldF9vc2ZoYW5kbGUsIE1FVEhfTywgbXN2Y3J0X2dldF9vc2ZoYW5kbGVfX2RvY19ffSwKIAotc3RhdGljIFB5X2ludHB0cl90CitzdGF0aWMgaW50cHRyX3QKIG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1MSwxMyArMTU2LDE1IEBACiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZkOwotICAgIFB5X2ludHB0cl90IF9yZXR1cm5fdmFsdWU7CisgICAgaW50cHRyX3QgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfb3NmaGFuZGxlIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Wb2lkUHRyKCh2b2lkICopX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xODMsOCArMTkwLDkgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2tiaGl0X2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzExLDggKzMxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY2hhciBjaGFyX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnB1dGNoIiwgJmNoYXJfdmFsdWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzcsOCArMzQ2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdW5pY29kZV9jaGFyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnB1dHdjaCIsICZ1bmljb2RlX2NoYXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CiAKIGV4aXQ6CkBAIC0zNjcsOCArMzc3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjaGFyIGNoYXJfdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6dW5nZXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6dW5nZXRjaCIsICZjaGFyX3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldGNoX2ltcGwobW9kdWxlLCBjaGFyX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5Myw4ICs0MDQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB1bmljb2RlX2NoYXI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6dW5nZXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6dW5nZXR3Y2giLCAmdW5pY29kZV9jaGFyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldHdjaF9pbXBsKG1vZHVsZSwgdW5pY29kZV9jaGFyKTsKIAogZXhpdDoKQEAgLTQyNiwxMSArNDM4LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRGaWxlIiwKLSAgICAgICAgJnR5cGUsICZmaWxlKSkKKyAgICAgICAgJnR5cGUsICZmaWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9pbXBsKG1vZHVsZSwgdHlwZSwgZmlsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ2NCwxMSArNDc4LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRNb2RlIiwKLSAgICAgICAgJnR5cGUsICZtb2RlKSkKKyAgICAgICAgJnR5cGUsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKG1vZHVsZSwgdHlwZSwgbW9kZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUwMCwxMSArNTE2LDEzIEBACiAgICAgaW50IG1vZGU7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldF9lcnJvcl9tb2RlIiwgJm1vZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfc2V0X2Vycm9yX21vZGVfaW1wbChtb2R1bGUsIG1vZGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MzEsOCArNTQ5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICB1bnNpZ25lZCBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpTZXRFcnJvck1vZGUiLCAmbW9kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOlNldEVycm9yTW9kZSIsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9TZXRFcnJvck1vZGVfaW1wbChtb2R1bGUsIG1vZGUpOwogCiBleGl0OgpAQCAtNTUwLDQgKzU2OSw0IEBACiAjaWZuZGVmIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhNzk0YzUyMGQ2YWU4ODcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlMDRlMmI1MGVlZjhiNjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL3dpbnJlZy5jLmggYi9QQy9jbGluaWMvd2lucmVnLmMuaAppbmRleCBmNmFlMmMwLi5jN2Q1YjllIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvd2lucmVnLmMuaAorKysgYi9QQy9jbGluaWMvd2lucmVnLmMuaApAQCAtNzcsMjQgKzc3LDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfX19FWElUX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19fZG9jX199LAorICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fLCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19pbXBsKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmV4Y190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV4Y192YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjayk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfSEtFWVR5cGVfX19leGl0X18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXyhQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJleGNfdHlwZSIsICJleGNfdmFsdWUiLCAidHJhY2ViYWNrIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PTzpfX2V4aXRfXyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmV4Y190eXBlOwogICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CiAgICAgUHlPYmplY3QgKnRyYWNlYmFjazsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PTzpfX2V4aXRfXyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmV4Y190eXBlLCAmZXhjX3ZhbHVlLCAmdHJhY2ViYWNrKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmV4Y190eXBlLCAmZXhjX3ZhbHVlLCAmdHJhY2ViYWNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19pbXBsKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk7CiAKIGV4aXQ6CkBAIC0xNDcsMTEgKzE0OSwxMyBAQAogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWk8mOkNvbm5lY3RSZWdpc3RyeSIsCi0gICAgICAgICZjb21wdXRlcl9uYW1lLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X2ltcGwobW9kdWxlLCBjb21wdXRlcl9uYW1lLCBrZXkpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE5MiwxMSArMTk2LDEzIEBACiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6Q3JlYXRlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjI5LDI5ICsyMzUsMzIgQEAKICJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfQ1JFQVRFS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19DcmVhdGVLZXlFeF9fZG9jX199LAorICAgIHsiQ3JlYXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0NyZWF0ZUtleUV4LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19DcmVhdGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19DcmVhdGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIGludCByZXNlcnZlZCA9IDA7CiAgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XUklURTsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6Q3JlYXRlS2V5RXgiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0NyZWF0ZUtleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI5MCw4ICsyOTksOSBAQAogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdTpEZWxldGVLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwogCiBleGl0OgpAQCAtMzI0LDI1ICszMzQsMjcgQEAKICJPbiB1bnN1cHBvcnRlZCBXaW5kb3dzIHZlcnNpb25zLCBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfREVMRVRFS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7IkRlbGV0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19EZWxldGVLZXlFeF9fZG9jX199LAorICAgIHsiRGVsZXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0RlbGV0ZUtleUV4LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnJlZ19EZWxldGVLZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgUkVHU0FNIGFjY2VzcywgaW50IHJlc2VydmVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19EZWxldGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19EZWxldGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAiYWNjZXNzIiwgInJlc2VydmVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAiYWNjZXNzIiwgInJlc2VydmVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ1fGlpOkRlbGV0ZUtleUV4IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV09XNjRfNjRLRVk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBhY2Nlc3MsIHJlc2VydmVkKTsKIAogZXhpdDoKQEAgLTM3NCw4ICszODYsOSBAQAogICAgIFB5X1VOSUNPREUgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6RGVsZXRlVmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MTEsOCArNDI0LDkgQEAKICAgICBpbnQgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bUtleV9pbXBsKG1vZHVsZSwga2V5LCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00NTcsOCArNDcxLDkgQEAKICAgICBpbnQgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtVmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbnVtVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOwogCiBleGl0OgpAQCAtNDgzLDggKzQ5OCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfVU5JQ09ERSAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1OkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CkBAIC01MjIsOCArNTM4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Rmx1c2hLZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Rmx1c2hLZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0ZsdXNoS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgpAQCAtNTc0LDggKzU5MSw5IEBACiAgICAgUHlfVU5JQ09ERSAqZmlsZV9uYW1lOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnV1OkxvYWRLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmZmlsZV9uYW1lKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfTG9hZEtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBmaWxlX25hbWUpOwogCiBleGl0OgpAQCAtNjAyLDI5ICs2MjAsMzIgQEAKICJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfT1BFTktFWV9NRVRIT0RERUYgICAgXAotICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19PcGVuS2V5X19kb2NfX30sCisgICAgeyJPcGVuS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAogCiBzdGF0aWMgSEtFWQogd2lucmVnX09wZW5LZXlfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19PcGVuS2V5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX09wZW5LZXkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpPcGVuS2V5IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIGludCByZXNlcnZlZCA9IDA7CiAgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOwogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpPcGVuS2V5IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19PcGVuS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTY1MSwyOSArNjcyLDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX09QRU5LRVlFWF9NRVRIT0RERUYgICAgXAotICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleUV4X19kb2NfX30sCisgICAgeyJPcGVuS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX09wZW5LZXlFeF9fZG9jX199LAogCiBzdGF0aWMgSEtFWQogd2lucmVnX09wZW5LZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfT3BlbktleUV4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX09wZW5LZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleUV4IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19PcGVuS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNzA3LDggKzczMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5SW5mb0tleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5SW5mb0tleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTc0OSw4ICs3NzQsOSBAQAogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpRdWVyeVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5VmFsdWVfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7CiAKIGV4aXQ6CkBAIC03ODcsOCArODEzLDkgQEAKICAgICBQeV9VTklDT0RFICpuYW1lOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZUV4IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmbmFtZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCBuYW1lKTsKIAogZXhpdDoKQEAgLTgzMCw4ICs4NTcsOSBAQAogICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1OlNhdmVLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZmaWxlX25hbWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZmaWxlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NhdmVLZXlfaW1wbChtb2R1bGUsIGtleSwgZmlsZV9uYW1lKTsKIAogZXhpdDoKQEAgLTg4Myw4ICs5MTEsOSBAQAogICAgIFB5X3NzaXplX2NsZWFuX3QgdmFsdWVfbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlprdSM6U2V0VmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmdHlwZSwgJnZhbHVlLCAmdmFsdWVfbGVuZ3RoKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUsIHZhbHVlX2xlbmd0aCk7CiAKIGV4aXQ6CkBAIC05MDcsNyArOTM2LDcgQEAKICIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOlxuIgogIiAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLlxuIgogIiAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLlxuIgotIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuXG4iCisiICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfRFdPUkRcbiIKICIgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LlxuIgogIiAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWRcbiIKICIgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsXG4iCkBAIC05MTcsNiArOTQ2LDggQEAKICIgICAgICAgICAgICAgICAgICAgIGJ5IHR3byBudWxsIGNoYXJhY3RlcnMuICBOb3RlIHRoYXQgUHl0aG9uIGhhbmRsZXNcbiIKICIgICAgICAgICAgICAgICAgICAgIHRoaXMgdGVybWluYXRpb24gYXV0b21hdGljYWxseS5cbiIKICIgICAgUkVHX05PTkUgLS0gTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLlxuIgorIiAgICBSRUdfUVdPUkQgLS0gQSA2NC1iaXQgbnVtYmVyLlxuIgorIiAgICBSRUdfUVdPUkRfTElUVExFX0VORElBTiAtLSBBIDY0LWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX1FXT1JELlxuIgogIiAgICBSRUdfUkVTT1VSQ0VfTElTVCAtLSBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC5cbiIKICIgICAgUkVHX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy5cbiIKICIgIHZhbHVlXG4iCkBAIC05NTAsOCArOTgxLDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWk9rTzpTZXRWYWx1ZUV4IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWVfbmFtZSwgJnJlc2VydmVkLCAmdHlwZSwgJnZhbHVlKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWVfbmFtZSwgJnJlc2VydmVkLCAmdHlwZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TZXRWYWx1ZUV4X2ltcGwobW9kdWxlLCBrZXksIHZhbHVlX25hbWUsIHJlc2VydmVkLCB0eXBlLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC05ODUsOCArMTAxNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTEwMTgsOCArMTA1MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6RW5hYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTEwNDksMTEgKzEwODMsMTIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2I4OTQwYTIzZjYwNWRkYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTZkZDA2YmU2ZTE0Yjg2ZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvd2luc291bmQuYy5oIGIvUEMvY2xpbmljL3dpbnNvdW5kLmMuaAppbmRleCBiMDBiNDQyLi41MmQyNWIyIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvd2luc291bmQuYy5oCisrKyBiL1BDL2NsaW5pYy93aW5zb3VuZC5jLmgKQEAgLTMsNyArMyw3IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIFB5RG9jX1NUUlZBUih3aW5zb3VuZF9QbGF5U291bmRfX2RvY19fLAotIlBsYXlTb3VuZCgkbW9kdWxlLCBzb3VuZCwgZmxhZ3MsIC8pXG4iCisiUGxheVNvdW5kKCRtb2R1bGUsIC8sIHNvdW5kLCBmbGFncylcbiIKICItLVxuIgogIlxuIgogIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSS5cbiIKQEAgLTE0LDIxICsxNCwyNCBAQAogIiAgICBGbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlci4gIFNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4iKTsKIAogI2RlZmluZSBXSU5TT1VORF9QTEFZU09VTkRfTUVUSE9EREVGICAgIFwKLSAgICB7IlBsYXlTb3VuZCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9QbGF5U291bmQsIE1FVEhfVkFSQVJHUywgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCisgICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX0ZBU1RDQUxMLCB3aW5zb3VuZF9QbGF5U291bmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKnNvdW5kLCBpbnQgZmxhZ3MpOword2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnNvdW5kLCBpbnQgZmxhZ3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfUGxheVNvdW5kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqc291bmQ7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic291bmQiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaTpQbGF5U291bmQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpzb3VuZDsKICAgICBpbnQgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlppOlBsYXlTb3VuZCIsCi0gICAgICAgICZzb3VuZCwgJmZsYWdzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNvdW5kLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfUGxheVNvdW5kX2ltcGwobW9kdWxlLCBzb3VuZCwgZmxhZ3MpOwogCiBleGl0OgpAQCAtMzYsNyArMzksNyBAQAogfQogCiBQeURvY19TVFJWQVIod2luc291bmRfQmVlcF9fZG9jX18sCi0iQmVlcCgkbW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uLCAvKVxuIgorIkJlZXAoJG1vZHVsZSwgLywgZnJlcXVlbmN5LCBkdXJhdGlvbilcbiIKICItLVxuIgogIlxuIgogIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgQmVlcCBBUEkuXG4iCkBAIC00OCwyMSArNTEsMjQgQEAKICIgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuIik7CiAKICNkZWZpbmUgV0lOU09VTkRfQkVFUF9NRVRIT0RERUYgICAgXAotICAgIHsiQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9CZWVwLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX0JlZXBfX2RvY19ffSwKKyAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfQmVlcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogd2luc291bmRfQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9CZWVwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZyZXF1ZW5jeSIsICJkdXJhdGlvbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOkJlZXAiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmcmVxdWVuY3k7CiAgICAgaW50IGR1cmF0aW9uOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpCZWVwIiwKLSAgICAgICAgJmZyZXF1ZW5jeSwgJmR1cmF0aW9uKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZyZXF1ZW5jeSwgJmR1cmF0aW9uKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX0JlZXBfaW1wbChtb2R1bGUsIGZyZXF1ZW5jeSwgZHVyYXRpb24pOwogCiBleGl0OgpAQCAtNzAsNyArNzYsNyBAQAogfQogCiBQeURvY19TVFJWQVIod2luc291bmRfTWVzc2FnZUJlZXBfX2RvY19fLAotIk1lc3NhZ2VCZWVwKCRtb2R1bGUsIHg9TUJfT0ssIC8pXG4iCisiTWVzc2FnZUJlZXAoJG1vZHVsZSwgLywgdHlwZT1NQl9PSylcbiIKICItLVxuIgogIlxuIgogIkNhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS5cbiIKQEAgLTc4LDIzICs4NCwyNiBAQAogInggZGVmYXVsdHMgdG8gTUJfT0suIik7CiAKICNkZWZpbmUgV0lOU09VTkRfTUVTU0FHRUJFRVBfTUVUSE9EREVGICAgIFwKLSAgICB7Ik1lc3NhZ2VCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX01lc3NhZ2VCZWVwLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCisgICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfTWVzc2FnZUJlZXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHgpOword2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgdHlwZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9NZXNzYWdlQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX01lc3NhZ2VCZWVwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgaW50IHggPSBNQl9PSzsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ0eXBlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6TWVzc2FnZUJlZXAiLCBfa2V5d29yZHMsIDB9OworICAgIGludCB0eXBlID0gTUJfT0s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOk1lc3NhZ2VCZWVwIiwKLSAgICAgICAgJngpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHlwZSkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB4KTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChtb2R1bGUsIHR5cGUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzBiMjkwZGFmMjMzMGRjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmZlMTZiMmI4YjQ5MGNiMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jb25maWcuYyBiL1BDL2NvbmZpZy5jCmluZGV4IDY2YmY0NTguLjQzZDllMjAgMTAwNjQ0Ci0tLSBhL1BDL2NvbmZpZy5jCisrKyBiL1BDL2NvbmZpZy5jCkBAIC0yMyw2ICsyMyw4IEBACiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEyNTYodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhNTEyKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTModm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fYmxha2UyKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfdGltZSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X190aHJlYWQodm9pZCk7CiAjaWZkZWYgV0lOMzIKQEAgLTk2LDYgKzk4LDggQEAKICAgICB7Il9zaGExIiwgUHlJbml0X19zaGExfSwKICAgICB7Il9zaGEyNTYiLCBQeUluaXRfX3NoYTI1Nn0sCiAgICAgeyJfc2hhNTEyIiwgUHlJbml0X19zaGE1MTJ9LAorICAgIHsiX3NoYTMiLCBQeUluaXRfX3NoYTN9LAorICAgIHsiX2JsYWtlMiIsIFB5SW5pdF9fYmxha2UyfSwKICAgICB7InRpbWUiLCBQeUluaXRfdGltZX0sCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICB7Il90aHJlYWQiLCBQeUluaXRfX3RocmVhZH0sCmRpZmYgLS1naXQgYS9QQy9nZXRwYXRocC5jIGIvUEMvZ2V0cGF0aHAuYwppbmRleCBjN2RkZjFlLi4wYjBhZTQ5IDEwMDY0NAotLS0gYS9QQy9nZXRwYXRocC5jCisrKyBiL1BDL2dldHBhdGhwLmMKQEAgLTYsNyArNiw5IEBACiAgICBQQVRIIFJVTEVTIEZPUiBXSU5ET1dTOgogICAgVGhpcyBkZXNjcmliZXMgaG93IHN5cy5wYXRoIGlzIGZvcm1lZCBvbiBXaW5kb3dzLiAgSXQgZGVzY3JpYmVzIHRoZQogICAgZnVuY3Rpb25hbGl0eSwgbm90IHRoZSBpbXBsZW1lbnRhdGlvbiAoaWUsIHRoZSBvcmRlciBpbiB3aGljaCB0aGVzZQotICAgYXJlIGFjdHVhbGx5IGZldGNoZWQgaXMgZGlmZmVyZW50KQorICAgYXJlIGFjdHVhbGx5IGZldGNoZWQgaXMgZGlmZmVyZW50KS4gVGhlIHByZXNlbmNlIG9mIGEgcHl0aG9uLl9wdGggb3IKKyAgIHB5dGhvblhZLl9wdGggZmlsZSBhbG9uZ3NpZGUgdGhlIHByb2dyYW0gb3ZlcnJpZGVzIHRoZXNlIHJ1bGVzIC0gc2VlCisgICBiZWxvdy4KIAogICAgKiBQeXRob24gYWx3YXlzIGFkZHMgYW4gZW1wdHkgZW50cnkgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcwogICAgICB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCkBAIC0yMyw5ICsyNSw5IEBACiAKICAgICogV2UgYXR0ZW1wdCB0byBsb2NhdGUgdGhlICJQeXRob24gSG9tZSIgLSBpZiB0aGUgUFlUSE9OSE9NRSBlbnYgdmFyCiAgICAgIGlzIHNldCwgd2UgYmVsaWV2ZSBpdC4gIE90aGVyd2lzZSwgd2UgdXNlIHRoZSBwYXRoIG9mIG91ciBob3N0IC5FWEUncwotICAgICB0byB0cnkgYW5kIGxvY2F0ZSBvdXIgImxhbmRtYXJrIiAobGliXFxvcy5weSkgYW5kIGRlZHVjZSBvdXIgaG9tZS4KKyAgICAgdG8gdHJ5IGFuZCBsb2NhdGUgb25lIG9mIG91ciAibGFuZG1hcmtzIiBhbmQgZGVkdWNlIG91ciBob21lLgogICAgICAtIElmIHdlIERPIGhhdmUgYSBQeXRob24gSG9tZTogVGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyAoTGliLAotICAgICAgIHBsYXQtd2luLCBldGMpIGFyZSBiYXNlZCBvbiB0aGUgUHl0aG9uIEhvbWUKKyAgICAgICBETExzLCBldGMpIGFyZSBiYXNlZCBvbiB0aGUgUHl0aG9uIEhvbWUKICAgICAgLSBJZiB3ZSBETyBOT1QgaGF2ZSBhIFB5dGhvbiBIb21lLCB0aGUgY29yZSBQeXRob24gUGF0aCBpcwogICAgICAgIGxvYWRlZCBmcm9tIHRoZSByZWdpc3RyeS4gIFRoaXMgaXMgdGhlIG1haW4gUHl0aG9uUGF0aCBrZXksCiAgICAgICAgYW5kIGJvdGggSEtMTSBhbmQgSEtDVSBhcmUgY29tYmluZWQgdG8gZm9ybSB0aGUgcGF0aCkKQEAgLTMzLDcgKzM1LDIzIEBACiAgICAqIElmZiAtIHdlIGNhbiBub3QgbG9jYXRlIHRoZSBQeXRob24gSG9tZSwgaGF2ZSBub3QgaGFkIGEgUFlUSE9OUEFUSAogICAgICBzcGVjaWZpZWQsIGFuZCBjYW4ndCBsb2NhdGUgYW55IFJlZ2lzdHJ5IGVudHJpZXMgKGllLCB3ZSBoYXZlIF9ub3RoaW5nXwogICAgICB3ZSBjYW4gYXNzdW1lIGlzIGEgZ29vZCBwYXRoKSwgYSBkZWZhdWx0IHBhdGggd2l0aCByZWxhdGl2ZSBlbnRyaWVzIGlzCi0gICAgIHVzZWQgKGVnLiAuXExpYjsuXHBsYXQtd2luLCBldGMpCisgICAgIHVzZWQgKGVnLiAuXExpYjsuXERMTHMsIGV0YykKKworCisgICBJZiBhICcuX3B0aCcgZmlsZSBleGlzdHMgYWRqYWNlbnQgdG8gdGhlIGV4ZWN1dGFibGUgd2l0aCB0aGUgc2FtZSBiYXNlIG5hbWUKKyAgIChlLmcuIHB5dGhvbi5fcHRoIGFkamFjZW50IHRvIHB5dGhvbi5leGUpIG9yIGFkamFjZW50IHRvIHRoZSBzaGFyZWQgbGlicmFyeQorICAgKGUuZy4gcHl0aG9uMzYuX3B0aCBhZGphY2VudCB0byBweXRob24zNi5kbGwpLCBpdCBpcyB1c2VkIGluIHByZWZlcmVuY2UgdG8KKyAgIHRoZSBhYm92ZSBwcm9jZXNzLiBUaGUgc2hhcmVkIGxpYnJhcnkgZmlsZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlCisgICBleGVjdXRhYmxlLiBUaGUgcGF0aCBmaWxlIG11c3QgY29udGFpbiBhIGxpc3Qgb2YgcGF0aHMgdG8gYWRkIHRvIHN5cy5wYXRoLAorICAgb25lIHBlciBsaW5lLiBFYWNoIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgQmxhbmsgbGluZXMgYW5kIGNvbW1lbnRzIGJlZ2lubmluZyB3aXRoICcjJyBhcmUgcGVybWl0dGVkLgorCisgICBJbiB0aGUgcHJlc2VuY2Ugb2YgdGhpcyAuX3B0aCBmaWxlLCBubyBvdGhlciBwYXRocyBhcmUgYWRkZWQgdG8gdGhlIHNlYXJjaAorICAgcGF0aCwgdGhlIHJlZ2lzdHJ5IGZpbmRlciBpcyBub3QgZW5hYmxlZCwgc2l0ZS5weSBpcyBub3QgaW1wb3J0ZWQgYW5kCisgICBpc29sYXRlZCBtb2RlIGlzIGVuYWJsZWQuIFRoZSBzaXRlIHBhY2thZ2UgY2FuIGJlIGVuYWJsZWQgYnkgaW5jbHVkaW5nIGEKKyAgIGxpbmUgcmVhZGluZyAiaW1wb3J0IHNpdGUiOyBubyBvdGhlciBpbXBvcnRzIGFyZSByZWNvZ25pemVkLiBBbnkgaW52YWxpZAorICAgZW50cnkgKG90aGVyIHRoYW4gZGlyZWN0b3JpZXMgdGhhdCBkbyBub3QgZXhpc3QpIHdpbGwgcmVzdWx0IGluIGltbWVkaWF0ZQorICAgdGVybWluYXRpb24gb2YgdGhlIHByb2dyYW0uCiAKIAogICBUaGUgZW5kIHJlc3VsdCBvZiBhbGwgdGhpcyBpczoKQEAgLTUyLDcgKzcwLDExIEBACiAgICAgc29tZSBkZWZhdWx0LCBidXQgcmVsYXRpdmUsIHBhdGhzLgogCiAgICogQW4gZW1iZWRkaW5nIGFwcGxpY2F0aW9uIGNhbiB1c2UgUHlfU2V0UGF0aCgpIHRvIG92ZXJyaWRlIGFsbCBvZgotICAgIHRoZXNlIGF1dGhvbWF0aWMgcGF0aCBjb21wdXRhdGlvbnMuCisgICAgdGhlc2UgYXV0b21hdGljIHBhdGggY29tcHV0YXRpb25zLgorCisgICogQW4gaW5zdGFsbCBvZiBQeXRob24gY2FuIGZ1bGx5IHNwZWNpZnkgdGhlIGNvbnRlbnRzIG9mIHN5cy5wYXRoIHVzaW5nCisgICAgZWl0aGVyIGEgJ0VYRU5BTUUuX3B0aCcgb3IgJ0RMTE5BTUUuX3B0aCcgZmlsZSwgb3B0aW9uYWxseSBpbmNsdWRpbmcKKyAgICAiaW1wb3J0IHNpdGUiIHRvIGVuYWJsZSB0aGUgc2l0ZSBtb2R1bGUuCiAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjEsMTAgKzgzLDEzIEBACiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjaW5jbHVkZSA8d2NoYXIuaD4KIAotI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaWZuZGVmIE1TX1dJTkRPV1MKKyNlcnJvciBnZXRwYXRocC5jIHNob3VsZCBvbmx5IGJlIGJ1aWx0IG9uIFdpbmRvd3MKICNlbmRpZgogCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPFNobHdhcGkuaD4KKwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCkBAIC0xMjIsNiArMTQ3LDMzIEBACiAgICAgZGlyW2ldID0gJ1wwJzsKIH0KIAorc3RhdGljIGludAorY2hhbmdlX2V4dCh3Y2hhcl90ICpkZXN0LCBjb25zdCB3Y2hhcl90ICpzcmMsIGNvbnN0IHdjaGFyX3QgKmV4dCkKK3sKKyAgICBzaXplX3Qgc3JjX2xlbiA9IHdjc25sZW5fcyhzcmMsIE1BWFBBVEhMRU4rMSk7CisgICAgc2l6ZV90IGkgPSBzcmNfbGVuOworICAgIGlmIChpID49IE1BWFBBVEhMRU4rMSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyByZWR1Y2UoKSIpOworCisgICAgd2hpbGUgKGkgPiAwICYmIHNyY1tpXSAhPSAnLicgJiYgIWlzX3NlcChzcmNbaV0pKQorICAgICAgICAtLWk7CisKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgIGRlc3RbMF0gPSAnXDAnOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGlzX3NlcChzcmNbaV0pKQorICAgICAgICBpID0gc3JjX2xlbjsKKworICAgIGlmICh3Y3NuY3B5X3MoZGVzdCwgTUFYUEFUSExFTisxLCBzcmMsIGkpIHx8CisgICAgICAgIHdjc2NhdF9zKGRlc3QsIE1BWFBBVEhMRU4rMSwgZXh0KSkgeworICAgICAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQogCiBzdGF0aWMgaW50CiBleGlzdHMod2NoYXJfdCAqZmlsZW5hbWUpCkBAIC0xMzUsNyArMTg3LDcgQEAKIHN0YXRpYyBpbnQKIGlzbW9kdWxlKHdjaGFyX3QgKmZpbGVuYW1lLCBpbnQgdXBkYXRlX2ZpbGVuYW1lKSAvKiBJcyBtb2R1bGUgLS0gY2hlY2sgZm9yIC5weWMvLnB5byB0b28gKi8KIHsKLSAgICBpbnQgbjsKKyAgICBzaXplX3QgbjsKIAogICAgIGlmIChleGlzdHMoZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gMTsKQEAgLTE2MywyNCArMjE1LDMwIEBACiAgICB0aGFuIE1BWFBBVEhMRU4gY2hhcmFjdGVycyBhdCBleGl0LiAgSWYgc3R1ZmYgaXMgdG9vIGxvbmcsIG9ubHkgYXMgbXVjaCBvZgogICAgc3R1ZmYgYXMgZml0cyB3aWxsIGJlIGFwcGVuZGVkLgogKi8KKworc3RhdGljIGludCBfUGF0aENjaENvbWJpbmVFeF9Jbml0aWFsaXplZCA9IDA7Cit0eXBlZGVmIEhSRVNVTFQoX19zdGRjYWxsICpQUGF0aENjaENvbWJpbmVFeCkoUFdTVFIgcHN6UGF0aE91dCwgc2l6ZV90IGNjaFBhdGhPdXQsIFBDV1NUUiBwc3pQYXRoSW4sIFBDV1NUUiBwc3pNb3JlLCB1bnNpZ25lZCBsb25nIGR3RmxhZ3MpOworc3RhdGljIFBQYXRoQ2NoQ29tYmluZUV4IF9QYXRoQ2NoQ29tYmluZUV4OworCiBzdGF0aWMgdm9pZAogam9pbih3Y2hhcl90ICpidWZmZXIsIGNvbnN0IHdjaGFyX3QgKnN0dWZmKQogewotICAgIHNpemVfdCBuOwotICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pIHx8Ci0gICAgICAgICh3Y3NubGVuX3Moc3R1ZmYsIDQpID49IDMgJiYgc3R1ZmZbMV0gPT0gJzonICYmIGlzX3NlcChzdHVmZlsyXSkpKSB7Ci0gICAgICAgIGlmICh3Y3NjcHlfcyhidWZmZXIsIE1BWFBBVEhMRU4rMSwgc3R1ZmYpICE9IDApCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKF9QYXRoQ2NoQ29tYmluZUV4X0luaXRpYWxpemVkID09IDApIHsKKyAgICAgICAgSE1PRFVMRSBwYXRoYXBpID0gTG9hZExpYnJhcnlXKEwiYXBpLW1zLXdpbi1jb3JlLXBhdGgtbDEtMS0wLmRsbCIpOworICAgICAgICBpZiAocGF0aGFwaSkKKyAgICAgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4ID0gKFBQYXRoQ2NoQ29tYmluZUV4KUdldFByb2NBZGRyZXNzKHBhdGhhcGksICJQYXRoQ2NoQ29tYmluZUV4Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4ID0gTlVMTDsKKyAgICAgICAgX1BhdGhDY2hDb21iaW5lRXhfSW5pdGlhbGl6ZWQgPSAxOwogICAgIH0KIAotICAgIG4gPSB3Y3NubGVuX3MoYnVmZmVyLCBNQVhQQVRITEVOKzEpOwotICAgIGlmIChuID4gMCAmJiAhaXNfc2VwKGJ1ZmZlcltuIC0gMV0pICYmIG4gPCBNQVhQQVRITEVOKSB7Ci0gICAgICAgIGJ1ZmZlcltuXSA9IFNFUDsKLSAgICAgICAgYnVmZmVyW24gKyAxXSA9ICdcMCc7CisgICAgaWYgKF9QYXRoQ2NoQ29tYmluZUV4KSB7CisgICAgICAgIGlmIChGQUlMRUQoX1BhdGhDY2hDb21iaW5lRXgoYnVmZmVyLCBNQVhQQVRITEVOKzEsIGJ1ZmZlciwgc3R1ZmYsIDApKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFQYXRoQ29tYmluZVcoYnVmZmVyLCBidWZmZXIsIHN0dWZmKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CiAgICAgfQotICAgIGlmICh3Y3NjYXRfcyhidWZmZXIsIE1BWFBBVEhMRU4rMSwgc3R1ZmYpICE9IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CiB9CiAKIC8qIGdvdGxhbmRtYXJrIG9ubHkgY2FsbGVkIGJ5IHNlYXJjaF9mb3JfcHJlZml4LCB3aGljaCBlbnN1cmVzCkBAIC0xODgsNyArMjQ2LDcgQEAKICAgICdsYW5kbWFyaycgY2FuIG5vdCBvdmVyZmxvdyBwcmVmaXggaWYgdG9vIGxvbmcuCiAqLwogc3RhdGljIGludAotZ290bGFuZG1hcmsod2NoYXJfdCAqbGFuZG1hcmspCitnb3RsYW5kbWFyayhjb25zdCB3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICBpbnQgb2s7CiAgICAgUHlfc3NpemVfdCBuID0gd2Nzbmxlbl9zKHByZWZpeCwgTUFYUEFUSExFTik7CkBAIC0yMDIsNyArMjYwLDcgQEAKIC8qIGFzc3VtZXMgYXJndjBfcGF0aCBpcyBNQVhQQVRITEVOKzEgYnl0ZXMgbG9uZywgYWxyZWFkeSBcMCB0ZXJtJ2QuCiAgICBhc3N1bXB0aW9uIHByb3ZpZGVkIGJ5IG9ubHkgY2FsbGVyLCBjYWxjdWxhdGVfcGF0aCgpICovCiBzdGF0aWMgaW50Ci1zZWFyY2hfZm9yX3ByZWZpeCh3Y2hhcl90ICphcmd2MF9wYXRoLCB3Y2hhcl90ICpsYW5kbWFyaykKK3NlYXJjaF9mb3JfcHJlZml4KHdjaGFyX3QgKmFyZ3YwX3BhdGgsIGNvbnN0IHdjaGFyX3QgKmxhbmRtYXJrKQogewogICAgIC8qIFNlYXJjaCBmcm9tIGFyZ3YwX3BhdGgsIHVudGlsIGxhbmRtYXJrIGlzIGZvdW5kICovCiAgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOICsgMSwgYXJndjBfcGF0aCk7CkBAIC0yMTQsNyArMjcyLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIE1TX1dJTkRPV1MKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECiAKIC8qIGEgc3RyaW5nIGxvYWRlZCBmcm9tIHRoZSBETEwgYXQgc3RhcnR1cC4qLwpAQCAtMzY5LDcgKzQyNiw2IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KICNlbmRpZiAvKiBQeV9FTkFCTEVfU0hBUkVEICovCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBzdGF0aWMgdm9pZAogZ2V0X3Byb2dwYXRoKHZvaWQpCkBAIC0zNzgsNyArNDM0LDYgQEAKICAgICB3Y2hhcl90ICpwYXRoID0gX3dnZXRlbnYoTCJQQVRIIik7CiAgICAgd2NoYXJfdCAqcHJvZyA9IFB5X0dldFByb2dyYW1OYW1lKCk7CiAKLSNpZmRlZiBNU19XSU5ET1dTCiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAogICAgIGV4dGVybiBIQU5ETEUgUHlXaW5fRExMaE1vZHVsZTsKICAgICAvKiBzdGF0aWMgaW5pdCBvZiBwcm9ncGF0aCBlbnN1cmVzIGZpbmFsIGNoYXIgcmVtYWlucyBcMCAqLwpAQCAtMzkwLDcgKzQ0NSw2IEBACiAjZW5kaWYKICAgICBpZiAoR2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIHByb2dwYXRoLCBNQVhQQVRITEVOKSkKICAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAgICAgaWYgKHByb2cgPT0gTlVMTCB8fCAqcHJvZyA9PSAnXDAnKQogICAgICAgICBwcm9nID0gTCJweXRob24iOwogCkBAIC00ODMsNiArNTM3LDkyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGludAorcmVhZF9wdGhfZmlsZShjb25zdCB3Y2hhcl90ICpwYXRoLCB3Y2hhcl90ICpwcmVmaXgsIGludCAqaXNvbGF0ZWQsIGludCAqbm9zaXRlKQoreworICAgIEZJTEUgKnNwX2ZpbGUgPSBfUHlfd2ZvcGVuKHBhdGgsIEwiciIpOworICAgIGlmIChzcF9maWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCBwYXRoKTsKKyAgICByZWR1Y2UocHJlZml4KTsKKyAgICAqaXNvbGF0ZWQgPSAxOworICAgICpub3NpdGUgPSAxOworCisgICAgc2l6ZV90IGJ1ZnNpeiA9IE1BWFBBVEhMRU47CisgICAgc2l6ZV90IHByZWZpeGxlbiA9IHdjc2xlbihwcmVmaXgpOworCisgICAgd2NoYXJfdCAqYnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd01hbGxvYyhidWZzaXogKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGJ1ZlswXSA9ICdcMCc7CisKKyAgICB3aGlsZSAoIWZlb2Yoc3BfZmlsZSkpIHsKKyAgICAgICAgY2hhciBsaW5lW01BWFBBVEhMRU4gKyAxXTsKKyAgICAgICAgY2hhciAqcCA9IGZnZXRzKGxpbmUsIE1BWFBBVEhMRU4gKyAxLCBzcF9maWxlKTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgqcCA9PSAnXDAnIHx8ICpwID09ICcjJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB3aGlsZSAoKisrcCkgeworICAgICAgICAgICAgaWYgKCpwID09ICdccicgfHwgKnAgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHJjbXAobGluZSwgImltcG9ydCBzaXRlIikgPT0gMCkgeworICAgICAgICAgICAgKm5vc2l0ZSA9IDA7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJuY21wKGxpbmUsICJpbXBvcnQgIiwgNykgPT0gMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigib25seSAnaW1wb3J0IHNpdGUnIGlzIHN1cHBvcnRlZCBpbiAuX3B0aCBmaWxlIik7CisgICAgICAgIH0KKworICAgICAgICBEV09SRCB3biA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgbGluZSwgLTEsIE5VTEwsIDApOworICAgICAgICB3Y2hhcl90ICp3bGluZSA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2MoKHduICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICB3biA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgbGluZSwgLTEsIHdsaW5lLCB3biArIDEpOworICAgICAgICB3bGluZVt3bl0gPSAnXDAnOworCisgICAgICAgIHNpemVfdCB1c2Vkc2l6ID0gd2NzbGVuKGJ1Zik7CisgICAgICAgIHdoaWxlICh1c2Vkc2l6ICsgd24gKyBwcmVmaXhsZW4gKyA0ID4gYnVmc2l6KSB7CisgICAgICAgICAgICBidWZzaXogKz0gTUFYUEFUSExFTjsKKyAgICAgICAgICAgIGJ1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdSZWFsbG9jKGJ1ZiwgKGJ1ZnNpeiArIDEpICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIGlmICghYnVmKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICh1c2Vkc2l6KSB7CisgICAgICAgICAgICB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgTCI7Iik7CisgICAgICAgICAgICB1c2Vkc2l6ICs9IDE7CisgICAgICAgIH0KKworICAgICAgICBlcnJub190IHJlc3VsdDsKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICByZXN1bHQgPSB3Y3NjYXRfcyhidWYsIGJ1ZnNpeiwgcHJlZml4KTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBFSU5WQUwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImludmFsaWQgYXJndW1lbnQgZHVyaW5nIC5fcHRoIHByb2Nlc3NpbmciKTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gRVJBTkdFKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgZHVyaW5nIC5fcHRoIHByb2Nlc3NpbmciKTsKKyAgICAgICAgfQorICAgICAgICB3Y2hhcl90ICpiID0gJmJ1Zlt1c2Vkc2l6XTsKKyAgICAgICAgam9pbihiLCB3bGluZSk7CisKKyAgICAgICAgUHlNZW1fUmF3RnJlZSh3bGluZSk7CisgICAgfQorCisgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gYnVmOworCisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeU1lbV9SYXdGcmVlKGJ1Zik7CisgICAgZmNsb3NlKHNwX2ZpbGUpOworICAgIHJldHVybiAtMTsKK30KKworCiBzdGF0aWMgdm9pZAogY2FsY3VsYXRlX3BhdGgodm9pZCkKIHsKQEAgLTQ5MiwzMiArNjMyLDMzIEBACiAgICAgd2NoYXJfdCAqcHl0aG9uaG9tZSA9IFB5X0dldFB5dGhvbkhvbWUoKTsKICAgICB3Y2hhcl90ICplbnZwYXRoID0gTlVMTDsKIAotI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpbnQgc2tpcGhvbWUsIHNraXBkZWZhdWx0OwogICAgIHdjaGFyX3QgKm1hY2hpbmVwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICp1c2VycGF0aCA9IE5VTEw7CiAgICAgd2NoYXJfdCB6aXBfcGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGludCBhcHBsb2NhbCA9IDA7CiAKICAgICBpZiAoIVB5X0lnbm9yZUVudmlyb25tZW50RmxhZykgewogICAgICAgICBlbnZwYXRoID0gX3dnZXRlbnYoTCJQWVRIT05QQVRIIik7CiAgICAgfQotI2Vsc2UKLSAgICBjaGFyICpfZW52cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOwotICAgIHdjaGFyX3Qgd2VudnBhdGhbTUFYUEFUSExFTisxXTsKLSAgICBpZiAoX2VudnBhdGgpIHsKLSAgICAgICAgc2l6ZV90IHIgPSBtYnN0b3djcyh3ZW52cGF0aCwgX2VudnBhdGgsIE1BWFBBVEhMRU4rMSk7Ci0gICAgICAgIGVudnBhdGggPSB3ZW52cGF0aDsKLSAgICAgICAgaWYgKHIgPT0gKHNpemVfdCktMSB8fCByID49IE1BWFBBVEhMRU4pCi0gICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICB9Ci0jZW5kaWYKIAogICAgIGdldF9wcm9ncGF0aCgpOwogICAgIC8qIHByb2dwYXRoIGd1YXJhbnRlZWQgXDAgdGVybWluYXRlZCBpbiBNQVhQQVRIKzEgYnl0ZXMuICovCiAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCBwcm9ncGF0aCk7CiAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOwogCisgICAgLyogU2VhcmNoIGZvciBhIHN5cy5wYXRoIGZpbGUgKi8KKyAgICB7CisgICAgICAgIHdjaGFyX3Qgc3BidWZmZXJbTUFYUEFUSExFTisxXTsKKworICAgICAgICBpZiAoKGRsbHBhdGhbMF0gJiYgIWNoYW5nZV9leHQoc3BidWZmZXIsIGRsbHBhdGgsIEwiLl9wdGgiKSAmJiBleGlzdHMoc3BidWZmZXIpKSB8fAorICAgICAgICAgICAgKHByb2dwYXRoWzBdICYmICFjaGFuZ2VfZXh0KHNwYnVmZmVyLCBwcm9ncGF0aCwgTCIuX3B0aCIpICYmIGV4aXN0cyhzcGJ1ZmZlcikpKSB7CisKKyAgICAgICAgICAgIGlmICghcmVhZF9wdGhfZmlsZShzcGJ1ZmZlciwgcHJlZml4LCAmUHlfSXNvbGF0ZWRGbGFnLCAmUHlfTm9TaXRlRmxhZykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCiAgICAgICAgZXhlY3V0YWJsZSdzIGRpcmVjdG9yeSBhbmQgdGhlbiBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KICAgICAgICBJZiBmb3VuZCwgb3BlbiBpdCBmb3IgdXNlIHdoZW4gc2VhcmNoaW5nIGZvciBwcmVmaXhlcy4KQEAgLTU0MywxNyArNjg0LDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZW52X2ZpbGUgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogTG9vayBmb3IgYW4gJ2FwcGxvY2FsJyB2YXJpYWJsZSBhbmQsIGlmIHRydWUsIGlnbm9yZSBhbGwgcmVnaXN0cnkKLSAgICAgICAgICAgICAqIGtleXMgYW5kIGVudmlyb25tZW50IHZhcmlhYmxlcywgYnV0IHJldGFpbiB0aGUgZGVmYXVsdCBwYXRocwotICAgICAgICAgICAgICogKERMTHMsIExpYikgYW5kIHRoZSB6aXAgZmlsZS4gU2V0dGluZyBweXRob25ob21lIGhlcmUgc3VwcHJlc3NlcwotICAgICAgICAgICAgICogdGhlIHNlYXJjaCBmb3IgTEFORE1BUksgYmVsb3cgYW5kIG92ZXJyaWRlcyAlUFlUSE9OSE9NRSUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChmaW5kX2Vudl9jb25maWdfdmFsdWUoZW52X2ZpbGUsIEwiYXBwbG9jYWwiLCB0bXBidWZmZXIpICYmCi0gICAgICAgICAgICAgICAgKGFwcGxvY2FsID0gKHdjc2ljbXAodG1wYnVmZmVyLCBMInRydWUiKSA9PSAwKSkpIHsKLSAgICAgICAgICAgICAgICBlbnZwYXRoID0gTlVMTDsKLSAgICAgICAgICAgICAgICBweXRob25ob21lID0gYXJndjBfcGF0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAogICAgICAgICAgICAgLyogTG9vayBmb3IgYSAnaG9tZScgdmFyaWFibGUgYW5kIHNldCBhcmd2MF9wYXRoIHRvIGl0LCBpZiBmb3VuZCAqLwogICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJob21lIiwgdG1wYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHdjc2NweV9zKGFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSwgdG1wYnVmZmVyKTsKQEAgLTU2Myw4ICs2OTMsMTUgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCisgICAgY2hhbmdlX2V4dCh6aXBfcGF0aCwgZGxscGF0aFswXSA/IGRsbHBhdGggOiBwcm9ncGF0aCwgTCIuemlwIik7CisKICAgICBpZiAocHl0aG9uaG9tZSA9PSBOVUxMIHx8ICpweXRob25ob21lID09ICdcMCcpIHsKLSAgICAgICAgaWYgKHNlYXJjaF9mb3JfcHJlZml4KGFyZ3YwX3BhdGgsIExBTkRNQVJLKSkKKyAgICAgICAgaWYgKHppcF9wYXRoWzBdICYmIGV4aXN0cyh6aXBfcGF0aCkpIHsKKyAgICAgICAgICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCB6aXBfcGF0aCk7CisgICAgICAgICAgICByZWR1Y2UocHJlZml4KTsKKyAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBwcmVmaXg7CisgICAgICAgIH0gZWxzZSBpZiAoc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgTEFORE1BUkspKQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IHByZWZpeDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IE5VTEw7CkBAIC01NzYsMzAgKzcxMywxNSBAQAogICAgICAgICBlbnZwYXRoID0gTlVMTDsKIAogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIENhbGN1bGF0ZSB6aXAgYXJjaGl2ZSBwYXRoIGZyb20gRExMIG9yIGV4ZSBwYXRoICovCi0gICAgaWYgKHdjc2NweV9zKHppcF9wYXRoLCBNQVhQQVRITEVOKzEsIGRsbHBhdGhbMF0gPyBkbGxwYXRoIDogcHJvZ3BhdGgpKQotICAgICAgICAvKiBleGNlZWRlZCBidWZmZXIgbGVuZ3RoIC0gaWdub3JlIHppcF9wYXRoICovCi0gICAgICAgIHppcF9wYXRoWzBdID0gJ1wwJzsKLSAgICBlbHNlIHsKLSAgICAgICAgd2NoYXJfdCAqZG90ID0gd2NzcmNocih6aXBfcGF0aCwgJy4nKTsKLSAgICAgICAgaWYgKCFkb3QgfHwgd2NzY3B5X3MoZG90LCBNQVhQQVRITEVOKzEgLSAoZG90IC0gemlwX3BhdGgpLCBMIi56aXAiKSkKLSAgICAgICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KLSAgICAgICAgICAgIHppcF9wYXRoWzBdID0gTCdcMCc7Ci0gICAgfQotCiAgICAgc2tpcGhvbWUgPSBweXRob25ob21lPT1OVUxMID8gMCA6IDE7CiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAotICAgIGlmICghYXBwbG9jYWwpIHsKLSAgICAgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOwotICAgICAgICB1c2VycGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9DVVJSRU5UX1VTRVIsIHNraXBob21lKTsKLSAgICB9CisgICAgbWFjaGluZXBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfTE9DQUxfTUFDSElORSwgc2tpcGhvbWUpOworICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOwogI2VuZGlmCiAgICAgLyogV2Ugb25seSB1c2UgdGhlIGRlZmF1bHQgcmVsYXRpdmUgUFlUSE9OUEFUSCBpZiB3ZSBoYXZlbnQKICAgICAgICBhbnl0aGluZyBiZXR0ZXIgdG8gdXNlISAqLwogICAgIHNraXBkZWZhdWx0ID0gZW52cGF0aCE9TlVMTCB8fCBweXRob25ob21lIT1OVUxMIHx8IFwKICAgICAgICAgICAgICAgICAgIG1hY2hpbmVwYXRoIT1OVUxMIHx8IHVzZXJwYXRoIT1OVUxMOwotI2VuZGlmCiAKICAgICAvKiBXZSBuZWVkIHRvIGNvbnN0cnVjdCBhIHBhdGggZnJvbSB0aGUgZm9sbG93aW5nIHBhcnRzLgogICAgICAgICgxKSB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaWYgc2V0OwpAQCAtNjEyLDcgKzczNCw2IEBACiAgICAgICAgRXh0cmEgcnVsZXM6CiAgICAgICAgLSBJZiBQWVRIT05IT01FIGlzIHNldCAoaW4gYW55IHdheSkgaXRlbSAoMykgaXMgaWdub3JlZC4KICAgICAgICAtIElmIHJlZ2lzdHJ5IHZhbHVlcyBhcmUgdXNlZCwgKDQpIGFuZCAoNSkgYXJlIGlnbm9yZWQuCi0gICAgICAgLSBJZiBhcHBsb2NhbCBpcyBzZXQsICgxKSwgKDMpLCBhbmQgcmVnaXN0cnkgdmFsdWVzIGFyZSBpZ25vcmVkCiAgICAgKi8KIAogICAgIC8qIENhbGN1bGF0ZSBzaXplIG9mIHJldHVybiBidWZmZXIgKi8KQEAgLTYyOSwxMyArNzUwLDExIEBACiAgICAgICAgIGJ1ZnN6ID0gMDsKICAgICBidWZzeiArPSB3Y3NsZW4oUFlUSE9OUEFUSCkgKyAxOwogICAgIGJ1ZnN6ICs9IHdjc2xlbihhcmd2MF9wYXRoKSArIDE7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghYXBwbG9jYWwgJiYgdXNlcnBhdGgpCisgICAgaWYgKHVzZXJwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4odXNlcnBhdGgpICsgMTsKLSAgICBpZiAoIWFwcGxvY2FsICYmIG1hY2hpbmVwYXRoKQorICAgIGlmIChtYWNoaW5lcGF0aCkKICAgICAgICAgYnVmc3ogKz0gd2NzbGVuKG1hY2hpbmVwYXRoKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKHppcF9wYXRoKSArIDE7Ci0jZW5kaWYKICAgICBpZiAoZW52cGF0aCAhPSBOVUxMKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4oZW52cGF0aCkgKyAxOwogCkBAIC02NTEsMTAgKzc3MCw4IEBACiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVzaW5nIGRlZmF1bHQgc3RhdGljIHBhdGguXG4iKTsKICAgICAgICAgICAgIG1vZHVsZV9zZWFyY2hfcGF0aCA9IFBZVEhPTlBBVEg7CiAgICAgICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUobWFjaGluZXBhdGgpOwogICAgICAgICBQeU1lbV9SYXdGcmVlKHVzZXJwYXRoKTsKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY2NCw3ICs3ODEsNiBAQAogICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICpidWYrKyA9IERFTElNOwogICAgIH0KLSNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKHppcF9wYXRoWzBdKSB7CiAgICAgICAgIGlmICh3Y3NjcHlfcyhidWYsIGJ1ZnN6IC0gKGJ1ZiAtIG1vZHVsZV9zZWFyY2hfcGF0aCksIHppcF9wYXRoKSkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3MgY2FsY3VsYXRlX3BhdGgoKSIpOwpAQCAtNjkyLDE1ICs4MDgsNyBAQAogICAgICAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwogICAgICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgICAgIH0KLSAgICB9Ci0jZWxzZQotICAgIGlmIChweXRob25ob21lID09IE5VTEwpIHsKLSAgICAgICAgd2NzY3B5KGJ1ZiwgUFlUSE9OUEFUSCk7Ci0gICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKLSAgICAgICAgKmJ1ZisrID0gREVMSU07Ci0gICAgfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgewogICAgICAgICB3Y2hhcl90ICpwID0gUFlUSE9OUEFUSDsKICAgICAgICAgd2NoYXJfdCAqcTsKICAgICAgICAgc2l6ZV90IG47CmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY25zIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWE5MTdmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5pY28gYi9QQy9pY29ucy9sYXVuY2hlci5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRlM2M2OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9sYXVuY2hlci5zdmcgYi9QQy9pY29ucy9sYXVuY2hlci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU5MGIwZAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL2xhdW5jaGVyLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uZ3JhcGgtbGlnaHRncmV5e2ZpbGw6I2RmZGZkZn0uc3Qwe2ZpbGw6IzAwNzhkN30uc3Qxe2ZpbGw6I2ZmZn0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0M3tmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA1SDVWM2gyNXYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTI5Ljk3MiAyNi45NzJINS4wMjlWNWguOTQydjIxLjAyOGgyMy4wNTdWNWguOTQzdjIxLjk3MnoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1vdXQiIGQ9Ik0yOSA1djIxSDZWNWgyM3oiLz48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSA0bC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDMuNGgtMS4ydjEuMmgxLjJWMy40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0iZ3JhcGgtbGlnaHRncmV5IiBkPSJNNiA1aDIzdjJINnoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9InN0MCIgZD0iTTQuNSAyM3Y2Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTExLjQyOSAxMy4wMTlhMTkuODggMTkuODggMCAwIDAgLjA3MS0xLjY0NWMwLTQuMjIzLTEuMzI5LTguMTY1LTMuNTU2LTEwLjU0NUw3LjE3IDBINS44M2wtLjc3NC44MjlDMi44MjkgMy4yMDkgMS41IDcuMTUxIDEuNSAxMS4zNzRjMCAuNDUzLjAyMy45LjA1MyAxLjM0NUMuODg3IDEzLjQ3Mi4zNTcgMTQuNDM4IDAgMTUuNTMzdjYuNjAzTC4yMjkgMjNIM3Y3aDJ2Mmgzdi0xaDJ2LThoMi43NzJsLjM5NC0xLjQ4OGMuMjIyLS44NDIuMzM1LTEuNzE0LjMzNS0yLjU5Mi0uMDAxLTIuNDE5LS44MDMtNC41MzQtMi4wNzItNS45MDF6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTYuNSAyMnY5TTguNSAyM3Y3Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTUgMjlINHYtNmgxdjZ6bTItNkg2djhoMXYtOHptMiAwSDh2N2gxdi03eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTEwLjM4MSAxMy4zOGMuMDctLjY1OC4xMTktMS4zMjUuMTE5LTIuMDA2IDAtMy45NzUtMS4yMjktNy42NjItMy4yODYtOS44NjJMNi41Ljc0OGwtLjcxNC43NjNDMy43MjkgMy43MTIgMi41IDcuMzk5IDIuNSAxMS4zNzRjMCAuNjgxLjA0OSAxLjM0OC4xMTkgMi4wMDZDMS4zMzkgMTQuNTIxLjUgMTYuNTUyLjUgMTguOTJjMCAuNzkzLjEwMiAxLjU3OC4zMDIgMi4zMzZMLjk5OSAyMmgxLjk2NmwuMDcyLS45MjJjLjA4MS0xLjA0Ni40NzEtMS45NjYuOTkzLTIuNTAzLjQ4NyAxLjAxOSAxLjA3IDEuOTI5IDEuNzU2IDIuNjYyTDYuNSAyMmwuNzE0LS43NjNjLjY4Ni0uNzMzIDEuMjY5LTEuNjQzIDEuNzU2LTIuNjYyLjUyMi41MzcuOTEyIDEuNDU3Ljk5MyAyLjUwM2wuMDcyLjkyMmgxLjk2NmwuMTk3LS43NDRjLjItLjc1OC4zMDItMS41NDMuMzAyLTIuMzM2IDAtMi4zNjgtLjgzOS00LjM5OS0yLjExOS01LjU0eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTMuNjE5IDE3LjYxNWMtLjg1NC42NzItMS40NjQgMS45MTMtMS41NzkgMy4zODVoLS4yNzJhOC4xODQgOC4xODQgMCAwIDEtLjI2OC0yLjA4YzAtMS43MjIuNTA1LTMuMjU5IDEuMjk3LTQuMjcyLjE4NyAxLjA1LjQ2NSAyLjA0NS44MjIgMi45Njd6bTYuNTg1LTIuOTY3YTE2LjE0NSAxNi4xNDUgMCAwIDEtLjgyMiAyLjk2N2MuODU0LjY3MSAxLjQ2NCAxLjkxMyAxLjU3OSAzLjM4NWguMjcyYTguMTg0IDguMTg0IDAgMCAwIC4yNjgtMi4wOGMtLjAwMS0xLjcyMi0uNTA2LTMuMjU5LTEuMjk3LTQuMjcyek0zLjUgMTEuMzc0YzAgMy44MzcgMS4xOTggNy4yIDMgOS4xMjggMS44MDItMS45MjcgMy01LjI5MSAzLTkuMTI4cy0xLjE5OC03LjItMy05LjEyOGMtMS44MDIgMS45MjgtMyA1LjI5MS0zIDkuMTI4eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik03LjUgN2ExIDEgMCAxIDEtMiAwIDEgMSAwIDAgMSAyIDB6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDIzLjk2MWMtLjM1IDEuMDUzLTEuMDAxIDMuMDE1LTMuMjQ3IDMuMDE1aC0xLjN2MS4zMzdjMCAuOTA1LS4zOTIgMi41MzctMy4wMjEgMy4yOThhOS4yMTMgOS4yMTMgMCAwIDEtMi41OS4zOWMtLjgzIDAtMS42NjgtLjEyOC0yLjU2NC0uMzkyLTEuOTE4LS41NjMtMy4wMTctMS43NjUtMy4wMTctMy4yOTZ2LTEuMzM3aC0xLjE1NWMtMS42OTggMC0yLjk0My0xLjEyOS0zLjQxNi0zLjA5OC0uNDY5LTEuOTQ2LS40NjktMy4xOTUgMC01LjE0MS40NTEtMS44ODEgMS45Ni0zLjA5OCAzLjg0NS0zLjA5OGguNzI2di0xLjMzN2MwLTIuMDA1LjkwNS0yLjk4MiAzLjEyNi0zLjM3NC43MjktLjEzIDEuNTQ5LS4yIDIuMzY3LS4yMDNoLjAwNGMuOTI1IDAgMS43NjEuMDY3IDIuNTYuMjAxIDEuODE2LjMwMyAzLjEzNCAxLjcyMyAzLjEzNCAzLjM3NnYxLjMzN2gxLjNjMS4xNDIgMCAyLjYzNi41MzYgMy4yNyAzLjA5Mi41MTYgMi4wNzMuNTEgMy42MzctLjAyMiA1LjIzeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfN18iIGNsYXNzPSJzdDIiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDcgMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzdfIiBjbGFzcz0ic3QzIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRIMjguMzQ4YzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5pY25zIGIvUEMvaWNvbnMvcHkuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGM0ZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHkuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5pY28gYi9QQy9pY29ucy9weS5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ4YTc5YgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weS5zdmcgYi9QQy9pY29ucy9weS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkyNGU4MwotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5LnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZzby1saWdodGdyZXl7ZmlsbDojYmZiZmJmfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTI2IDguMDA5VjI5SDdWM2gxNC4wNTNMMjYgOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48cGF0aCBjbGFzcz0iaWNvbi12c28tbGlnaHRncmV5IiBkPSJNMTcgN0g5VjZoOHYxem0wIDJIOXYxaDhWOXptNyAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXptMCAzSDl2MWgxNXYtMXoiIGlkPSJpY29uRmciLz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTktLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfMl8iIGNsYXNzPSJzdDAiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF8yXyIgY2xhc3M9InN0MSIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuaWNucyBiL1BDL2ljb25zL3B5Yy5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGE5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWMuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuaWNvIGIvUEMvaWNvbnMvcHljLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGRkZTgxCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWMuc3ZnIGIvUEMvaWNvbnMvcHljLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzNlOWU3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHljLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12cy1iZ3tmaWxsOiM0MjQyNDJ9Lmljb24tdnMtZ3JlZW57ZmlsbDojMzkzfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLWJnIiBkPSJNMjEuMDUzIDNIN3YyNmgxOVY4LjAwOXoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yMS40NzEgMkg2djI4aDIxVjcuNTk5TDIxLjQ3MSAyek0yMSAzaC4wNTNsNC45MzkgNUgyMVYzem01IDI2SDdWM2gxM3Y2aDZ2MjB6Ii8+PC9nPjxwYXRoIGNsYXNzPSJpY29uLXZzLWdyZWVuIiBkPSJNMTAgMTZIOXYtMWgxdjF6bTEuMDExIDVIOXYxaDIuMDMyYTguMzY4IDguMzY4IDAgMCAxLS4wMjEtMXpNMTQgMTBoMlY5aC0ydjF6bS0zLTRIOXYxaDJWNnptMCA2SDl2MWgydi0xem0yLTNIOXYxaDRWOXptNC0zdjFoMVY2aC0xem0tMyA2aC0ydjFoMnYtMXptMS02aC0ydjFoMlY2em0tNCAxMGgxdi0xaC0xdjF6bTQtNHYxaDJ2LTFoLTJ6bS0yIDRoM3YtMWgtM3Yxem0tNCAydjFoM3YtMUg5em0wIDZ2MWgzdi0xSDl6IiBpZD0iaWNvbkZnIi8+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS42NiAyNC4wNjNDMzEuMzEyIDI1LjExNiAzMC42NjEgMjcgMjguNDEzIDI3SDI3djEuMzEzYzAgLjkwNS0uMzM1IDIuNTM3LTIuOTY1IDMuMjk4LS45MDQuMjYxLTEuNjk0LjM4OS0yLjUzMS4zODktLjgzIDAtMS42My0uMTI4LTIuNTI2LS4zOTJDMTcuMDYxIDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjIzMmMtMS42OTkgMC0yLjk0NC0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1Ljg2Ni0yLjg0NSAzLjA4Ny0zLjIzOC43MjctLjEyOCAxLjUwNi0uMDY1IDIuMzI3LS4wNjVoLjAwM2MuOTIxIDAgMS43MDMtLjA3IDIuNTA0LjA2NCAxLjgxOC4zMDIgMy4wNzkgMS41ODUgMy4wNzkgMy4yMzlWMTZoMS40MTNjMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMzIiIHkxPSItMjg4LjY2OCIgeDI9IjU0MS4wMTciIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzRfIiBjbGFzcz0ic3QwIiBkPSJNMjEuNDE5IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA4IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc4IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODcgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ny0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjI0NSIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjU2OSIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNF8iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42ODcgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2SDIxLjUydi0uNTg0SDI4LjQxMmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODMgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5YzAtLjQ4NC4zODgtLjg3NC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLmljbnMgYi9QQy9pY29ucy9weWQuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDNkMjRlCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHlkLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLmljbyBiL1BDL2ljb25zL3B5ZC5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY2Y2I2MAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHlkLnN2ZyBiL1BDL2ljb25zL3B5ZC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlZmY2YQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5ZC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdnMtb3V0e2ZpbGw6I2Y2ZjZmNn0uaWNvbi1mMTItaG92ZXItYmd7ZmlsbDojZDllYmY3fS5pY29uLWYxMi1sdGdyZXktZGlzYWJsZWR7ZmlsbDojYWJhYmFjfS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6IzljYTJhN30uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MntmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTIxLjA1MyAzSDd2MjZoMTlWOC4wMDl6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjEuNDcxIDJINnYyOGgyMVY3LjU5OUwyMS40NzEgMnpNMjEgM2guMDUzbDQuOTM5IDVIMjFWM3ptNSAyNkg3VjNoMTN2Nmg2djIweiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTMuNzg0IDE3LjcwNWMtMS4yOTYgMC0yLjM1LTEuMDU0LTIuMzUtMi4zNXMxLjA1NC0yLjM1IDIuMzUtMi4zNSAyLjM1IDEuMDU0IDIuMzUgMi4zNS0xLjA1NCAyLjM1LTIuMzUgMi4zNXptMC00LjVjLTEuMTg2IDAtMi4xNS45NjQtMi4xNSAyLjE1cy45NjQgMi4xNTEgMi4xNSAyLjE1MSAyLjE1LS45NjUgMi4xNS0yLjE1MS0uOTY0LTIuMTUtMi4xNS0yLjE1eiIvPjxwYXRoIGNsYXNzPSJpY29uLWYxMi1ob3Zlci1iZyIgZD0iTTE4LjA1IDE2LjEyMmMuMDE2LS4wNjkuMDMxLS4xMzkuMDQzLS4yMDlsMS4zNzYtLjYxOC0uMTAzLTEuMDE1LTEuNDctLjMzYy0uMDI1LS4wNjgtLjA1Ni0uMTM0LS4wODYtLjE5OWwtLjAyNi0uMDU2Ljg5Mi0xLjIzNi0uNTk1LS44MjctMS40NS40NTNjLS4wNjktLjA2MS0uMTQxLS4xMTgtLjIxMy0uMTc1bC4xNTEtMS41MTEtLjkyOS0uNDE4LTEuMDMyIDEuMTIxLS4wNTYtLjAxM2EzLjA4OSAzLjA4OSAwIDAgMC0uMjE3LS4wNDVsLS42MTgtMS4zNzQtMS4wMTUuMTA0LS4zMjkgMS40NzJjLS4wNDkuMDE5LS4wOTYuMDQtLjE0My4wNjNsLS4wNTYuMDI1LTEuMjI1LS45MDctLjgzNS41ODYuNDM1IDEuNDU3Yy0uMDYuMDY3LS4xMjMuMTM4LS4xODIuMjEybC0xLjUwNi0uMTcyLS40MjkuOTI1TDkuNTQgMTQuNDhsLS4wMDUuMDI0YTQuMTI3IDQuMTI3IDAgMCAwLS4wNTEuMjQ2bC0xLjM4Ny42MDYuMDkyIDEuMDE1IDEuNDYzLjM0NmMuMDI0LjA2Ny4wNTUuMTMyLjA4NC4xOTRsLjAzLjA2Ny0uODYgMS4xNy0uMDQyLjA1OS41ODguODMyIDEuNDU2LS40NGMuMDcuMDYzLjEzOC4xMjIuMjA5LjE3OGwtLjE2NyAxLjUwOC45MjYuNDI3TDEyLjkyIDE5LjZsLjA0OC4wMWMuMDc0LjAxNy4xNDkuMDM0LjIyNi4wNDZsLjYwOSAxLjM4NSAxLjAxNS0uMDk1LjM0Mi0xLjQ2NmMuMDc1LS4wMjcuMTQ3LS4wNjEuMjE2LS4wOTNsLjA2Ny0uMDMxIDEuMjM1Ljg5Mi44MjctLjU5NS0uNDUyLTEuNDVjLjA2Mi0uMDcxLjEyLS4xNDIuMTc2LS4yMTVsMS41MTIuMTUxLjQxOC0uOTI5LTEuMTIyLTEuMDMzLjAxMy0uMDU1em0tNC4yNjYgMS41ODNjLTEuMjk2IDAtMi4zNS0xLjA1NC0yLjM1LTIuMzVzMS4wNTQtMi4zNSAyLjM1LTIuMzUgMi4zNSAxLjA1NCAyLjM1IDIuMzUtMS4wNTQgMi4zNS0yLjM1IDIuMzV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWx0Z3JleS1kaXNhYmxlZCIgZD0iTTEzLjgwMyAyMS4wNGwtLjYwOS0xLjM4NGEzLjA4IDMuMDggMCAwIDEtLjIzNi0uMDQ4bC0uMDM4LS4wMDgtMS4wNDMgMS4xMTEtLjkyNS0uNDI3LjE2Ny0xLjUwN2E0LjAxMyA0LjAxMyAwIDAgMS0uMjA5LS4xNzlsLTEuNDU2LjQzOS0uNTg4LS44MzIuOTAyLTEuMjI4LS4wMzMtLjA3MmMtLjAyOC0uMDYxLS4wNTgtLjEyNC0uMDgyLS4xOWwtMS40NjMtLjM0NC0uMDkxLTEuMDE1IDEuMzg3LS42MDVjLjAxMi0uMDc4LjAzLS4xNTQuMDQ3LS4yMzFsLjAwOS0uMDM5LTEuMTA5LTEuMDQ1LjQyOC0uOTI1IDEuNTA3LjE3Yy4wNTgtLjA3Mi4xMTgtLjE0LjE4My0uMjExbC0uNDM1LTEuNDU4LjgzNC0uNTg1IDEuMjI1LjkwNy4wNTItLjAyNGMuMDQ4LS4wMjIuMDk3LS4wNDQuMTQ3LS4wNjNsLjMyOS0xLjQ3MyAxLjAxNC0uMTA0LjYyIDEuMzc1YTIuMzg5IDIuMzg5IDAgMCAxIC4yNzEuMDU4bDEuMDMyLTEuMTIyLjkzLjQxOC0uMTUzIDEuNTExYy4wNzMuMDU1LjE0My4xMTMuMjE0LjE3NGwxLjQ1LS40NTMuNTk1LjgyNy0uODkyIDEuMjM2YS44LjggMCAwIDEgLjAyNC4wNTNjLjAzLjA2NC4wNjIuMTMxLjA4Ny4yMDFsMS40NzEuMzMyLjEwMyAxLjAxNC0xLjM3Ni42MThjLS4wMTIuMDcxLS4wMjcuMTQtLjA0My4yMDhsLS4wMTQuMDU4IDEuMTIyIDEuMDMzLS40MTkuOTI5LTEuNTExLS4xNTJhMy44NTEgMy44NTEgMCAwIDEtLjE3Ni4yMTVsLjQ1MiAxLjQ1LS44MjcuNTk1LTEuMjM2LS44OTItLjA3LjAzMmEyLjk0IDIuOTQgMCAwIDEtLjIxMi4wOTJsLS4zNDEgMS40NjUtMS4wMTUuMDk1em0tLjk1MS0xLjY2bC4xNTEuMDMzYy4wODkuMDIxLjE3OS4wNDIuMjcyLjA1M2wuMDU2LjAwNy41OTcgMS4zNTQuNzI4LS4wNjcuMzMzLTEuNDM1LjA1NC0uMDE4Yy4wODMtLjAyNS4xNjEtLjA2Mi4yNDQtLjEwMS4wNDItLjAyLjA4NC0uMDM5LjEyNy0uMDU3bC4wNTItLjAyMiAxLjIxMS44NzQuNTkzLS40MjctLjQ0Mi0xLjQyMS4wMzgtLjA0M2MuMDg1LS4wOTQuMTYzLS4xODguMjM2LS4yODhsLjAzMy0uMDQ2IDEuNDguMTUuMy0uNjY3LTEuMDk5LTEuMDEyLjAxMi0uMDU1LjAyNS0uMTE3Yy4wMTktLjA4LjAzNy0uMTYuMDQ3LS4yNDRsLjAwNy0uMDU2IDEuMzQ4LS42MDUtLjA3My0uNzI4LTEuNDQxLS4zMjQtLjAxOC0uMDU1Yy0uMDI1LS4wODEtLjA2MS0uMTU3LS4wOTYtLjIzM2EyLjE0NSAyLjE0NSAwIDAgMS0uMDUtLjEwOWwtLjAyMi0uMDUyLjg3NC0xLjIxMi0uNDI3LS41OTMtMS40Mi40NDMtLjA0Mi0uMDM4YTMuODk2IDMuODk2IDAgMCAwLS4yODgtLjIzNUwxNi4yMDcgMTJsLjE0OS0xLjQ4LS42NjctLjMtMS4wMTIgMS4xLS4wNTYtLjAxMWMtLjA0LS4wMDgtLjA4LS4wMTgtLjExOS0uMDI3LS4wODItLjAxOS0uMTYyLS4wMzgtLjI0Ni0uMDQ4bC0uMDU2LS4wMDUtLjYwNy0xLjM0Ni0uNzI3LjA3NC0uMzIzIDEuNDQxLS4wNTQuMDE4Yy0uMDYzLjAyLS4xMjEuMDQ3LS4xOC4wNzQtLjAzNy4wMTctLjA3My4wMzQtLjExMS4wNDlsLS4wNTIuMDIyLTEuMi0uODktLjU5OS40Mi40MjYgMS40MjktLjAzOC4wNDJhNC4wNyA0LjA3IDAgMCAwLS4yNDQuMjg0bC0uMDM0LjA0NS0xLjQ3Ni0uMTY3LS4zMDcuNjYzIDEuMDg2IDEuMDI0LS4wMzQuMTUxYy0uMDIuMDg5LS4wNDEuMTc3LS4wNTIuMjY5bC0uMDA3LjA1Ni0xLjM1OC41OTMuMDY2LjcyOCAxLjQzMS4zMzcuMDE3LjA1NWMuMDI0LjA3Ny4wNTguMTQ4LjA5MS4yMi4wMjEuMDQzLjA0MS4wODYuMDU5LjEzMWwuMDIyLjA1Mi0uODg1IDEuMjAzLjQyMi41OTggMS40MjYtLjQzMi4wNDIuMDM4Yy4wODMuMDc1LjE3OS4xNjMuMjgyLjI0bC4wNDUuMDM1LS4xNjMgMS40NzYuNjY0LjMwNiAxLjAyNC0xLjA4N3pNMjAuOTE4IDIyLjk3MmExLjM1IDEuMzUgMCAxIDEgLjAwMS0yLjY5OSAxLjM1IDEuMzUgMCAwIDEtLjAwMSAyLjY5OXptMC0yLjVjLS42MzQgMC0xLjE1LjUxNy0xLjE1IDEuMTVzLjUxNyAxLjE1IDEuMTUgMS4xNSAxLjE1LS41MTcgMS4xNS0xLjE1LS41MTYtMS4xNS0xLjE1LTEuMTV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWhvdmVyLWJnIiBkPSJNMjQuOTAxIDIyLjAyOHYtLjgxMmwtMS4yNjktLjQyM2EyLjc0NyAyLjc0NyAwIDAgMC0uMjEtLjUwNWwuNTk5LTEuMTk2LS41NzQtLjU3NC0xLjE5Ni41OTlhMi44MSAyLjgxIDAgMCAwLS41MDUtLjIwOWwtLjQyMy0xLjI2OGgtLjgxMWwtLjQyMyAxLjI2OGEyLjgxIDIuODEgMCAwIDAtLjUwNS4yMDlsLTEuMTk3LS41OTktLjU3My41NzQuNTk5IDEuMTk2YTIuNzQ3IDIuNzQ3IDAgMCAwLS4yMS41MDVsLTEuMjY4LjQyM3YuODEybDEuMjY4LjQyMmMuMDU0LjE3NS4xMjQuMzQ1LjIxLjUwNmwtLjU5OSAxLjE5Ni41NzMuNTc0IDEuMTk3LS42Yy4xNjEuMDg3LjMzMS4xNTcuNTA1LjIxbC40MjMgMS4yNjloLjgxMWwuNDIzLTEuMjY5Yy4xNzQtLjA1My4zNDMtLjEyMy41MDUtLjIxbDEuMTk2LjYuNTc0LS41NzQtLjU5OS0xLjE5NmMuMDg2LS4xNjEuMTU2LS4zMzEuMjEtLjUwNmwxLjI2OS0uNDIyem0tMy45ODMuOTQzYy0uNzQ0IDAtMS4zNS0uNjA2LTEuMzUtMS4zNSAwLS43NDQuNjA1LTEuMzUgMS4zNS0xLjM1Ljc0NCAwIDEuMzUuNjA1IDEuMzUgMS4zNSAwIC43NDUtLjYwNiAxLjM1LTEuMzUgMS4zNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItbHRncmV5LWRpc2FibGVkIiBkPSJNMjEuMzIzIDI1LjYwNGgtLjgxMWwtLjQyMy0xLjI2OWEyLjgxNCAyLjgxNCAwIDAgMS0uNTA1LS4yMDlsLTEuMTk3LjU5OS0uNTczLS41NzQuNTk5LTEuMTk2YTIuNzQ3IDIuNzQ3IDAgMCAxLS4yMS0uNTA1bC0xLjI2OS0uNDIzdi0uODEybDEuMjY5LS40MjJjLjA1NC0uMTc1LjEyNC0uMzQ1LjIxLS41MDZsLS41OTktMS4xOTYuNTczLS41NzMgMS4xOTcuNTk5Yy4xNjEtLjA4Ny4zMzEtLjE1Ny41MDUtLjIxbC40MjMtMS4yNjloLjgxMWwuNDIzIDEuMjY5Yy4xNzQuMDUzLjM0NC4xMjMuNTA1LjIxbDEuMTk2LS41OTkuNTc0LjU3My0uNTk5IDEuMTk2Yy4wODYuMTYxLjE1Ni4zMzEuMjEuNTA2bDEuMjY5LjQyMnYuODEybC0xLjI2OS40MjNhMi43NDcgMi43NDcgMCAwIDEtLjIxLjUwNWwuNTk5IDEuMTk2LS41NzQuNTc0LTEuMTk2LS41OTlhMi44MTQgMi44MTQgMCAwIDEtLjUwNS4yMDlsLS40MjMgMS4yNjl6bS0uNjY2LS4xOTloLjUyMWwuNDExLTEuMjMyLjA1MS0uMDE1Yy4xOTMtLjA1NC4zODItLjEzMi41Ni0uMjMxbC4wNDYtLjAyNiAxLjE2Mi41ODEuMzY5LS4zNjktLjU4LTEuMTYyLjAyNi0uMDQ2Yy4wOTktLjE3OC4xNzctLjM2Ni4yMzItLjU2bC4wMTQtLjA1MSAxLjIzMi0uNDExdi0uNTIzbC0xLjIzMi0uNDEtLjAxNC0uMDUxYTIuODEgMi44MSAwIDAgMC0uMjMyLS41NjFsLS4wMjYtLjA0Ni41OC0xLjE2Mi0uMzY5LS4zNjgtMS4xNjIuNTgtLjA0Ni0uMDI2YTIuNjI3IDIuNjI3IDAgMCAwLS41Ni0uMjMybC0uMDUtLjAxNC0uNDExLTEuMjMyaC0uNTIxbC0uNDExIDEuMjMyLS4wNTEuMDE0YTIuNzU4IDIuNzU4IDAgMCAwLS41Ni4yMzJsLS4wNDYuMDI2LTEuMTYzLS41OC0uMzY4LjM2OC41OCAxLjE2Mi0uMDI2LjA0NmEyLjY3NSAyLjY3NSAwIDAgMC0uMjMyLjU2MWwtLjAxNC4wNTEtMS4yMzIuNDF2LjUyMmwxLjIzMi40MTEuMDE0LjA1MWMuMDU2LjE5My4xMzQuMzgyLjIzMi41NmwuMDI2LjA0Ni0uNTggMS4xNjIuMzY4LjM2OSAxLjE2My0uNTgxLjA0Ni4wMjZjLjE3OC4xLjM2Ni4xNzguNTYuMjMxbC4wNTEuMDE1LjQxIDEuMjMzeiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTgtLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfNV8iIGNsYXNzPSJzdDEiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF81XyIgY2xhc3M9InN0MiIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uaWNucyBiL1BDL2ljb25zL3B5dGhvbi5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNTNlMDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob24uaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uaWNvIGIvUEMvaWNvbnMvcHl0aG9uLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGEzOGVmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob24uc3ZnIGIvUEMvaWNvbnMvcHl0aG9uLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjNlNWEzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9uLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdmlzdWFsc3R1ZGlvLW9ubGluZXtmaWxsOiMwMDdhY2N9Lmljb24tdnMtYmd7ZmlsbDojNDI0MjQyfS5pY29uLXZzLWdyZWVue2ZpbGw6IzM5M30uc3Qwe2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0MXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA0SDJWMmgyOHYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTI5IDR2MjFIM1Y0SDJ2MjJoMjhWNHoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1iZyIgZD0iTTEwIDRIM3YyMWgyNlY0eiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTI5LjE0MSAzbC40MjkuNDI5LS4xNC4xNDItLjQzLS40My0uNDMuNDMtLjE0LS4xNDIuNDI5LS40MjktLjQyOS0uNDI5LjE0MS0uMTQyLjQyOS40My40My0uNDMuMTQxLjE0Mi0uNDMuNDI5ek0yNy42IDIuNGgtMS4ydjEuMmgxLjJWMi40em0tMSAuMmguOHYuOGgtLjh2LS44em0tMS4xMzkuOGgtMXYuMmgxdi0uMnoiLz48cGF0aCBjbGFzcz0iaWNvbi12cy1ncmVlbiIgZD0iTTE2IDE0SDV2LTFoMTEuMDMxYy0uMDE0LjA0NC0uMDMxIDEtLjAzMSAxem0tNC01SDV2MWg3Vjl6bS03IDh2MWg4di0xSDV6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDI0LjA2M0MzMS4yNDYgMjUuMTE2IDMwLjU5NSAyNyAyOC4zNDkgMjdIMjd2MS4zMTNjMCAuOTA1LS4zNjggMi41MzctMi45OTYgMy4yOTgtLjkwNC4yNjEtMS43MjguMzg5LTIuNTY2LjM4OS0uODMgMC0xLjU5Ny0uMTI4LTIuNDkyLS4zOTJDMTcuMDI5IDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjI5N2MtMS42OTggMC0yLjk0My0xLjE0MS0zLjQxNi0zLjExLS40NjktMS45NDYtLjQ2OS0zLjAyMSAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2LTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1LjgzNC0yLjg0NSAzLjA1NC0zLjIzOC43MjgtLjEyOCAxLjQ3NC0uMDY1IDIuMjk2LS4wNjVoLjAwM2MuOTIxIDAgMS43MzUtLjA3IDIuNTM3LjA2NCAxLjgxNi4zMDMgMy4xMSAxLjU4NSAzLjExIDMuMjRWMTZoMS4zNDljMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU4LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF8zXyIgY2xhc3M9InN0MCIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OSAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfM18iIGNsYXNzPSJzdDEiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NGg2Ljg5MmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5pY25zIGIvUEMvaWNvbnMvcHl0aG9udy5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzNTRjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob253LmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5pY28gYi9QQy9pY29ucy9weXRob253LmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTk1ZDQzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvcHl0aG9udy5zdmcgYi9QQy9pY29ucy9weXRob253LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2IyNjA3Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHl0aG9udy5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uZ3JhcGgtbGlnaHRncmV5e2ZpbGw6I2RmZGZkZn0uc3Qwe2ZpbGw6I2Y2ZjZmNn0uc3Qxe2ZpbGw6IzY1NjU2NX0uc3Qye2ZpbGw6I2JmYmZiZn0uc3Qze2ZpbGw6I2ZmZn0uc3Q0e2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0NXtmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJncmFwaC1saWdodGdyZXkiIGQ9Ik0yOSA3SDNWNWgyNnYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZpc3VhbHN0dWRpby1vbmxpbmUiIGQ9Ik0zMCA1SDJWM2gyOHYyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMjkuMTQxIDRsLjQyOS40MjktLjE0LjE0Mi0uNDMtLjQzLS40My40My0uMTQtLjE0Mi40MjktLjQyOS0uNDI5LS40MjkuMTQxLS4xNDIuNDI5LjQzLjQzLS40My4xNDEuMTQyLS40My40Mjl6TTI3LjYgMy40aC0xLjJ2MS4yaDEuMlYzLjR6bS0xIC4yaC44di44aC0uOHYtLjh6bS0xLjEzOS44aC0xdi4yaDF2LS4yeiIvPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zIDdoMjZ2MTlIM3oiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjkgNXYyMUgzVjVIMnYyMmgyOFY1eiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik00IDUuNzVoMnYuNUg0eiIvPjwvZz48cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTIgMTFINXYtMWg3djF6bS03IDd2MWgxMXYtMUg1em0wLTR2MWgxMXYtMUg1eiIgaWQ9Imljb25GZyIvPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0zMS42MTggMTguOTEyQzMwLjk4NCAxNi4zNTYgMjkuNDkgMTYgMjguMzQ5IDE2SDI3di0xLjY5N2MwLTEuNjU0LTEuMjk0LTIuOTM3LTMuMTEtMy4yNC0uODAyLS4xMzMtMS42MTctLjA2My0yLjUzNy0uMDYzaC0uMDAzYy0uODIxIDAtMS41NjgtLjA2My0yLjI5NS4wNjUtMi4yMjEuMzkzLTMuMDU1IDEuMjMzLTMuMDU1IDMuMjM4VjE2aC0uODY4Yy0xLjg4NSAwLTMuMzk0IDEuMDQyLTMuODQ1IDIuOTI0LS40NjkgMS45NDYtLjQ2OSAzLjAyMiAwIDQuOTY3QzExLjc2IDI1Ljg1OSAxMy4wMDUgMjcgMTQuNzAzIDI3SDE2djEuMzEzYzAgMS41MzEgMS4wMjkgMi43MzIgMi45NDYgMy4yOTYuODk2LjI2MyAxLjY2Mi4zOTEgMi40OTIuMzkxLjgzOCAwIDEuNjYxLS4xMjggMi41NjUtLjM5QzI2LjYzMiAzMC44NSAyNyAyOS4yMTggMjcgMjguMzEzVjI3aDEuMzQ5YzIuMjQ2IDAgMi44OTctMS44ODQgMy4yNDctMi45MzcuNTMyLTEuNTkyLjUzOC0zLjA3OS4wMjItNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF82XyIgY2xhc3M9InN0NCIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfNl8iIGNsYXNzPSJzdDUiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NGg2Ljg5MmMxLjMzNiAwIDEuODM0LS45MzIgMi4yOTktMi4zMzEuNDgtMS40NC40Ni0yLjgyNiAwLTQuNjczLS4zMy0xLjMzLS45NjEtMi4zMzEtMi4yOTktMi4zMzFoLTEuNzI1em0tMi41ODQgMTEuMDg5Yy40NzcgMCAuODYzLjM5MS44NjMuODc0YS44NzEuODcxIDAgMCAxLS44NjMuODc5Ljg3Mi44NzIgMCAwIDEtLjg2My0uODc5Ljg3Ljg3IDAgMCAxIC44NjMtLjg3NHoiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuaWNucyBiL1BDL2ljb25zL3NldHVwLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYwZTZiMAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3NldHVwLmljbnMKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuaWNvIGIvUEMvaWNvbnMvc2V0dXAuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDM2NGIKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvaWNvbnMvc2V0dXAuc3ZnIGIvUEMvaWNvbnMvc2V0dXAuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTM4NTYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9zZXR1cC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHN0eWxlPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojZjZmNmY2fS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5pY29uLWRpc2FibGVkLWdyZXl7ZmlsbDojODQ4NDg0fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uc3Qwe2ZpbGw6I2YwZWZmMX0uc3Qxe2ZpbGw6IzQyNDI0Mn0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk0OF8xXyl9LnN0M3tmaWxsOnVybCgjcGF0aDE5NTBfMV8pfTwvc3R5bGU+PHBhdGggY2xhc3M9Imljb24tY2FudmFzLXRyYW5zcGFyZW50IiBkPSJNMzIgMzJIMFYwaDMydjMyeiIgaWQ9ImNhbnZhcyIvPjxnIGlkPSJpY29uQmciPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xOCA4djEwSDFWOGgxN3ptLTEuMTkxIDE1LjU3MmExLjAwNCAxLjAwNCAwIDAgMC0uOTAzLS41NzJIMi45MDdjLS4zODUgMC0uNzQuMjI1LS45MDMuNTcyTC44ODYgMjUuOTI4QS43NDguNzQ4IDAgMCAwIDEuNTYzIDI3SDE3LjI1YS43NDguNzQ4IDAgMCAwIC42NzctMS4wNzJsLTEuMTE4LTIuMzU2eiIvPjxwYXRoIGNsYXNzPSJpY29uLWRpc2FibGVkLWdyZXkiIGQ9Ik0xNy45MjcgMjUuOTI5bC0xLjExOC0yLjM1NmExLjAwMyAxLjAwMyAwIDAgMC0uOTAzLS41NzNIMi45MDdjLS4zODUgMC0uNzQuMjI1LS45MDMuNTcyTC44ODYgMjUuOTI4QS43NDguNzQ4IDAgMCAwIDEuNTYzIDI3SDE3LjI1YS43NDcuNzQ3IDAgMCAwIC42MzMtLjM0OS43NDYuNzQ2IDAgMCAwIC4wNDQtLjcyMnpNMS45NTkgMjZsLjk0OS0yaDEyLjk5OGwuOTQ5IDJIMS45NTl6TTYgMjJ2LTFoM3YtMmgxdjJoM3YxSDZ6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTAgN3YxMmgxOVY3SDB6bTE4IDExSDFWOGgxN3YxMHoiLz48L2c+PGcgaWQ9Imljb25GZyI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0xMiA2VjBIN3Y2SDIuNzU1TDkuNSAxMy40OTUgMTYuMjQ1IDZ6Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTggNGgzdjNoM2wtNC41IDVMNSA3aDNWNHptMy0ySDh2MWgzVjJ6bTAtMkg4djFoM1YweiIvPjwvZz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjU5NiAyNC4wNjNDMzEuMjQ2IDI1LjExNiAzMC41OTUgMjcgMjguMzQ5IDI3SDI3djEuMzEzYzAgLjkwNS0uMzY4IDIuNTM3LTIuOTk3IDMuMjk4LS45MDMuMjYxLTEuNzI3LjM4OS0yLjU2NS4zODktLjgzIDAtMS41OTctLjEyOC0yLjQ5My0uMzkyQzE3LjAyOSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yOTZjLTEuNjk4IDAtMi45NDQtMS4xNDEtMy40MTctMy4xMS0uNDY5LTEuOTQ0LS40NjktMy4wMiAwLTQuOTY3LjQ1MS0xLjg4MSAxLjk2MS0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44MzQtMi44NDUgMy4wNTQtMy4yMzguNzI4LS4xMjggMS40NzQtLjA2NSAyLjI5Ni0uMDY1aC4wMDNjLjkyMSAwIDEuNzM1LS4wNyAyLjUzNy4wNjQgMS44MTYuMzAzIDMuMTEgMS41ODUgMy4xMSAzLjI0VjE2aDEuMzQ5YzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OS0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjIwNSIgeTE9Ii0yODguNjY4IiB4Mj0iNTQwLjkwMiIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfOV8iIGNsYXNzPSJzdDIiIGQ9Ik0yMS4zNTQgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzkgMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NiAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg2LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMTMiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS40NTQiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzlfIiBjbGFzcz0ic3QzIiBkPSJNMjYuNjIzIDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NmgtNC41OTN2LS41ODRIMjguMzQ4YzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5jIGIvUEMvbGF1bmNoZXIuYwppbmRleCA0MGQ0Y2I1Li5kMTFkZjQzIDEwMDY0NAotLS0gYS9QQy9sYXVuY2hlci5jCisrKyBiL1BDL2xhdW5jaGVyLmMKQEAgLTk4LDcgKzk4LDcgQEAKICAgICBNZXNzYWdlQm94KE5VTEwsIG1lc3NhZ2UsIFRFWFQoIlB5dGhvbiBMYXVuY2hlciBpcyBzb3JyeSB0byBzYXkgLi4uIiksCiAgICAgICAgICAgICAgICBNQl9PSyk7CiAjZW5kaWYKLSAgICBFeGl0UHJvY2VzcyhyYyk7CisgICAgZXhpdChyYyk7CiB9CiAKIC8qCkBAIC00NjUsNyArNDY1LDcgQEAKIH0KIAogc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgotbG9jYXRlX3B5dGhvbih3Y2hhcl90ICogd2FudGVkX3ZlcikKK2xvY2F0ZV9weXRob24od2NoYXJfdCAqIHdhbnRlZF92ZXIsIEJPT0wgZnJvbV9zaGViYW5nKQogewogICAgIHN0YXRpYyB3Y2hhcl90IGNvbmZpZ19rZXkgW10gPSB7IEwicHl0aG9uWCIgfTsKICAgICBzdGF0aWMgd2NoYXJfdCAqIGxhc3RfY2hhciA9ICZjb25maWdfa2V5W3NpemVvZihjb25maWdfa2V5KSAvCkBAIC00OTcsMTAgKzQ5NywxNyBAQAogICAgICAgICBjb25maWd1cmVkX3ZhbHVlID0gZ2V0X2NvbmZpZ3VyZWRfdmFsdWUoY29uZmlnX2tleSk7CiAgICAgICAgIGlmIChjb25maWd1cmVkX3ZhbHVlKQogICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihjb25maWd1cmVkX3ZhbHVlKTsKKyAgICAgICAgLyogTm90IGZvdW5kIGEgdmFsdWUgeWV0IC0gdHJ5IGJ5IG1ham9yIHZlcnNpb24uCisgICAgICAgICAqIElmIHdlJ3JlIGxvb2tpbmcgZm9yIGFuIGludGVycHJldGVyIHNwZWNpZmllZCBpbiBhIHNoZWJhbmcgbGluZSwKKyAgICAgICAgICogd2Ugd2FudCB0byB0cnkgUHl0aG9uIDIgZmlyc3QsIHRoZW4gUHl0aG9uIDMgKGZvciBVbml4IGFuZCBiYWNrd2FyZAorICAgICAgICAgKiBjb21wYXRpYmlsaXR5KS4gSWYgd2UncmUgYmVpbmcgY2FsbGVkIGludGVyYWN0aXZlbHksIGFzc3VtZSB0aGUgdXNlcgorICAgICAgICAgKiB3YW50cyB0aGUgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxlLCBzbyB0cnkgUHl0aG9uIDMgZmlyc3QsIHRoZW4KKyAgICAgICAgICogUHl0aG9uIDIuCisgICAgICAgICAqLwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMiIpOworICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihmcm9tX3NoZWJhbmcgPyBMIjIiIDogTCIzIik7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIzIik7CisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGZyb21fc2hlYmFuZyA/IEwiMyIgOiBMIjIiKTsKICAgICAgICAgZGVidWcoTCJzZWFyY2ggZm9yIGRlZmF1bHQgUHl0aG9uIGZvdW5kICIpOwogICAgICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgICAgICBkZWJ1ZyhMInZlcnNpb24gJWxzIGF0ICclbHMnXG4iLApAQCAtNjU1LDcgKzY2Miw3IEBACiAgICAgaWYgKCFvaykKICAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiRmFpbGVkIHRvIGdldCBleGl0IGNvZGUgb2YgcHJvY2VzcyIpOwogICAgIGRlYnVnKEwiY2hpbGQgcHJvY2VzcyBleGl0IGNvZGU6ICVkXG4iLCByYyk7Ci0gICAgRXhpdFByb2Nlc3MocmMpOworICAgIGV4aXQocmMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTA4Miw3ICsxMDg5LDcgQEAKICAgICB7IDMxOTAsIDMyMzAsIEwiMy4zIiB9LAogICAgIHsgMzI1MCwgMzMxMCwgTCIzLjQiIH0sCiAgICAgeyAzMzIwLCAzMzUxLCBMIjMuNSIgfSwKLSAgICB7IDMzNjAsIDMzNjEsIEwiMy42IiB9LAorICAgIHsgMzM2MCwgMzM3OSwgTCIzLjYiIH0sCiAgICAgeyAwIH0KIH07CiAKQEAgLTEwOTQsNyArMTEwMSw3IEBACiAKICAgICBmb3IgKG1wID0gbWFnaWNfdmFsdWVzOyBtcC0+bWluOyBtcCsrKSB7CiAgICAgICAgIGlmICgobWFnaWMgPj0gbXAtPm1pbikgJiYgKG1hZ2ljIDw9IG1wLT5tYXgpKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBsb2NhdGVfcHl0aG9uKG1wLT52ZXJzaW9uKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0ZV9weXRob24obXAtPnZlcnNpb24sIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTExNCw3ICsxMTIxLDcgQEAKICAqLwogICAgIEZJTEUgKiBmcDsKICAgICBlcnJub190IHJjID0gX3dmb3Blbl9zKCZmcCwgKmFyZ3YsIEwicmIiKTsKLSAgICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKKyAgICBjaGFyIGJ1ZmZlcltCVUZTSVpFXTsKICAgICB3Y2hhcl90IHNoZWJhbmdfbGluZVtCVUZTSVpFICsgMV07CiAgICAgc2l6ZV90IHJlYWQ7CiAgICAgY2hhciAqcDsKQEAgLTExMzYsNyArMTE0Myw4IEBACiAgICAgICAgIGZjbG9zZShmcCk7CiAKICAgICAgICAgaWYgKChyZWFkID49IDQpICYmIChidWZmZXJbM10gPT0gJ1xuJykgJiYgKGJ1ZmZlclsyXSA9PSAnXHInKSkgewotICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKChidWZmZXJbMV0gPDwgOCB8IGJ1ZmZlclswXSkgJiAweEZGRkYpOworICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKCgoKHVuc2lnbmVkIGNoYXIpYnVmZmVyWzFdKSA8PCA4IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpYnVmZmVyWzBdKSAmIDB4RkZGRik7CiAgICAgICAgICAgICBpZiAoaXAgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGRlYnVnKEwic2NyaXB0IGZpbGUgaXMgY29tcGlsZWQgYWdhaW5zdCBQeXRob24gJWxzXG4iLAogICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uKTsKQEAgLTEyNzgsNyArMTI4Niw3IEBACiBmb2xsb3dlZCBieSBhIHZhbGlkIHZlcnNpb24gc3BlY2lmaWVyLlxuUGxlYXNlIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0RPIGNvdWxkIGNhbGwgdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKGNvbW1hbmQsIFRSVUUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uIFwKICglbHMpIGlzIG5vdCBpbnN0YWxsZWQiLCBjb21tYW5kKTsKQEAgLTEzNjIsNiArMTM3MCw3IEBACiAgICAgd2NoYXJfdCAqIGF2WzJdOwogI2VuZGlmCiAKKyAgICBzZXR2YnVmKHN0ZGVyciwgKGNoYXIgKilOVUxMLCBfSU9OQkYsIDApOwogICAgIHdwID0gZ2V0X2VudihMIlBZTEFVTkNIX0RFQlVHIik7CiAgICAgaWYgKCh3cCAhPSBOVUxMKSAmJiAoKndwICE9IEwnXDAnKSkKICAgICAgICAgbG9nX2ZwID0gc3RkZXJyOwpAQCAtMTQ4Myw3ICsxNDkyLDcgQEAKICAgICAgICAgcGxlbiA9IHdjc2xlbihwKTsKICAgICAgICAgdmFsaWQgPSAoKnAgPT0gTCctJykgJiYgdmFsaWRhdGVfdmVyc2lvbigmcFsxXSk7CiAgICAgICAgIGlmICh2YWxpZCkgewotICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdKTsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbigmcFsxXSwgRkFMU0UpOwogICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiAoJWxzKSBub3QgXAogaW5zdGFsbGVkIiwgJnBbMV0pOwpAQCAtMTUxMCw3ICsxNTE5LDcgQEAKIAogICAgICAgICAvKiBJZiB3ZSBkaWRuJ3QgZmluZCBvbmUsIGxvb2sgZm9yIHRoZSBkZWZhdWx0IFB5dGhvbiAqLwogICAgICAgICBpZiAoZXhlY3V0YWJsZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oTCIiKTsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIsIEZBTFNFKTsKICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CiAgICAgICAgICAgICBleGVjdXRhYmxlID0gaXAtPmV4ZWN1dGFibGU7CmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5pY28gYi9QQy9sYXVuY2hlci5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZDdkNTcuLjAwMDAwMDAKLS0tIGEvUEMvbGF1bmNoZXIuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvbXN2Y3J0bW9kdWxlLmMgYi9QQy9tc3ZjcnRtb2R1bGUuYwppbmRleCBiMDczOWQwLi5jOWQxZTZjIDEwMDY0NAotLS0gYS9QQy9tc3ZjcnRtb2R1bGUuYworKysgYi9QQy9tc3ZjcnRtb2R1bGUuYwpAQCAtMzMsMTIgKzMzLDEyIEBACiAjZW5kaWYKIAogLypbcHl0aG9uIGlucHV0XQotY2xhc3MgUHlfaW50cHRyX3RfY29udmVydGVyKENDb252ZXJ0ZXIpOgotICAgIHR5cGUgPSAnUHlfaW50cHRyX3QnCitjbGFzcyBpbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICdpbnRwdHJfdCcKICAgICBmb3JtYXRfdW5pdCA9ICciX1B5X1BBUlNFX0lOVFBUUiInCiAKIGNsYXNzIGhhbmRsZV9yZXR1cm5fY29udmVydGVyKGxvbmdfcmV0dXJuX2NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKKyAgICB0eXBlID0gJ2ludHB0cl90JwogICAgIGNhc3QgPSAnKHZvaWQgKiknCiAgICAgY29udmVyc2lvbl9mbiA9ICdQeUxvbmdfRnJvbVZvaWRQdHInCiAKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoCiAgICAgICAgICAgICAncmV0dXJuX3ZhbHVlID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKF9yZXR1cm5fdmFsdWUpO1xuJykKIFtweXRob24gc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KLS8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PTZhNTRmYzRlNzNkMGIzNjddKi8KKy8qW3B5dGhvbiBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kYTM5YTNlZTVlNmI0YjBkIGlucHV0PWI1OWYxNjYzZGJhMTE5OTddKi8KIAogLypbY2xpbmljIGlucHV0XQogbW9kdWxlIG1zdmNydApAQCAtMTQ4LDcgKzE0OCw3IEBACiAvKltjbGluaWMgaW5wdXRdCiBtc3ZjcnQub3Blbl9vc2ZoYW5kbGUgLT4gbG9uZwogCi0gICAgaGFuZGxlOiBQeV9pbnRwdHJfdAorICAgIGhhbmRsZTogaW50cHRyX3QKICAgICBmbGFnczogaW50CiAgICAgLwogCkBAIC0xNjAsOCArMTYwLDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIGxvbmcKLW1zdmNydF9vcGVuX29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2ludHB0cl90IGhhbmRsZSwgaW50IGZsYWdzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJmNjVlNDIyMjQzYTM5ZjkgaW5wdXQ9NGQ4NTE2ZWQzMmRiOGY2NV0qLworbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Y2VkZTg3MWJmOTM5ZDZlMyBpbnB1dD1jYjIxMDhiYmVhODQ1MTRlXSovCiB7CiAgICAgaW50IGZkOwogCkBAIC0xODMsMjIgKzE4MywxNyBAQAogUmFpc2VzIElPRXJyb3IgaWYgZmQgaXMgbm90IHJlY29nbml6ZWQuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKLXN0YXRpYyBQeV9pbnRwdHJfdAorc3RhdGljIGludHB0cl90CiBtc3ZjcnRfZ2V0X29zZmhhbmRsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmZCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYWM0NzY0MzMzOGMwYmFhIGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03Y2U3NjFkZDBkZTJiNTAzIGlucHV0PWM3ZDE4ZDAyYzgwMTdlYzFdKi8KIHsKLSAgICBQeV9pbnRwdHJfdCBoYW5kbGUgPSAtMTsKKyAgICBpbnRwdHJfdCBoYW5kbGUgPSAtMTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgfQotICAgIGVsc2UgewogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICAgICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOworICAgIGhhbmRsZSA9IF9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAotICAgICAgICBpZiAoaGFuZGxlID09IC0xKQotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwotICAgIH0KKyAgICBpZiAoaGFuZGxlID09IC0xKQorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAKICAgICByZXR1cm4gaGFuZGxlOwogfQpAQCAtNTQwLDcgKzUzNSw2IEBACiAjZW5kaWYKIAogICAgIC8qIGNvbnN0YW50cyBmb3IgdGhlIGNydCB2ZXJzaW9ucyAqLwotICAgICh2b2lkKXN0OwogI2lmZGVmIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTgogICAgIHN0ID0gUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIlZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19BU1NFTUJMWV9QVUJMSUNLRVlUT0tFTik7CkBAIC01NjYsNiArNTYwLDggQEAKICAgICBzdCA9IFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ1JUX0FTU0VNQkxZX1ZFUlNJT04iLCB2ZXJzaW9uKTsKICAgICBpZiAoc3QgPCAwKSByZXR1cm4gTlVMTDsKICNlbmRpZgorICAgIC8qIG1ha2UgY29tcGlsZXIgd2FybmluZyBxdWlldCBpZiBzdCBpcyB1bnVzZWQgKi8KKyAgICAodm9pZClzdDsKIAogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvUEMvcHkuaWNvIGIvUEMvcHkuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzU3YWVmLi4wMDAwMDAwCi0tLSBhL1BDL3B5LmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL3B5Yy5pY28gYi9QQy9weWMuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2JkMmIxLi4wMDAwMDAwCi0tLSBhL1BDL3B5Yy5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9weWNvbi5pY28gYi9QQy9weWNvbi5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhYjYyOWUuLjAwMDAwMDAKLS0tIGEvUEMvcHljb24uaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvcHljb25maWcuaCBiL1BDL3B5Y29uZmlnLmgKaW5kZXggYWM0ZjhmMi4uNjRlN2FlYyAxMDA2NDQKLS0tIGEvUEMvcHljb25maWcuaAorKysgYi9QQy9weWNvbmZpZy5oCkBAIC0xNCw3ICsxNCw2IEBACiBNU19XSU42NCAtIENvZGUgc3BlY2lmaWMgdG8gdGhlIE1TIFdpbjY0IEFQSQogTVNfV0lOMzIgLSBDb2RlIHNwZWNpZmljIHRvIHRoZSBNUyBXaW4zMiAoYW5kIFdpbjY0KSBBUEkgKG9ic29sZXRlLCB0aGlzIGNvdmVycyBhbGwgc3VwcG9ydGVkIEFQSXMpCiBNU19XSU5ET1dTIC0gQ29kZSBzcGVjaWZpYyB0byBXaW5kb3dzLCBidXQgYWxsIHZlcnNpb25zLgotTVNfV0lOQ0UgLSBDb2RlIHNwZWNpZmljIHRvIFdpbmRvd3MgQ0UKIFB5X0VOQUJMRV9TSEFSRUQgLSBDb2RlIGlmIHRoZSBQeXRob24gY29yZSBpcyBidWlsdCBhcyBhIERMTC4KIAogQWxzbyBub3RlIHRoYXQgbmVpdGhlciAiX01fSVg4NiIgb3IgIl9NU0NfVkVSIiBzaG91bGQgYmUgdXNlZCBmb3IKQEAgLTMwLDEwICsyOSw2IEBACiAKICovCiAKLSNpZmRlZiBfV0lOMzJfV0NFCi0jZGVmaW5lIE1TX1dJTkNFCi0jZW5kaWYKLQogLyogRGVwcmVjYXRlZCBVU0VfRExfRVhQT1JUIG1hY3JvIC0gcGxlYXNlIHVzZSBQeV9CVUlMRF9DT1JFICovCiAjaWZkZWYgVVNFX0RMX0VYUE9SVAogIwlkZWZpbmUgUHlfQlVJTERfQ09SRQpAQCAtNTMsOCArNDgsNiBAQAogI2RlZmluZSBfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIDEKICNlbmRpZgogCi0vKiBXaW5kb3dzIENFIGRvZXMgbm90IGhhdmUgdGhlc2UgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9JT19ICiAjZGVmaW5lIEhBVkVfU1lTX1VUSU1FX0gKICNkZWZpbmUgSEFWRV9URU1QTkFNCkBAIC02MiwxMSArNTUsOCBAQAogI2RlZmluZSBIQVZFX1RNUE5BTQogI2RlZmluZSBIQVZFX0NMT0NLCiAjZGVmaW5lIEhBVkVfU1RSRVJST1IKLSNlbmRpZgogCi0jaWZkZWYgSEFWRV9JT19ICiAjaW5jbHVkZSA8aW8uaD4KLSNlbmRpZgogCiAjZGVmaW5lIEhBVkVfSFlQT1QKICNkZWZpbmUgSEFWRV9TVFJGVElNRQpAQCAtODYsMTcgKzc2LDYgQEAKICNkZWZpbmUgVVNFX1NPQ0tFVAogI2VuZGlmCiAKLS8qIENFNiBkb2Vzbid0IGhhdmUgc3RyZHVwKCkgYnV0IF9zdHJkdXAoKS4gQXNzdW1lIHRoZSBzYW1lIGZvciBlYXJsaWVyIHZlcnNpb25zLiAqLwotI2lmIGRlZmluZWQoTVNfV0lOQ0UpCi0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLSMgIGRlZmluZSBzdHJkdXAgX3N0cmR1cAotI2VuZGlmCi0KLSNpZmRlZiBNU19XSU5DRQotLyogV2luZG93cyBDRSBkb2VzIG5vdCBzdXBwb3J0IGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotI2RlZmluZSBnZXRlbnYodikgKE5VTEwpCi0jZGVmaW5lIGVudmlyb24gKE5VTEwpCi0jZW5kaWYKIAogLyogQ29tcGlsZXIgc3BlY2lmaWMgZGVmaW5lcyAqLwogCkBAIC0yODYsNyArMjY1LDYgQEAKICNlbmRpZgogCiAvKiA2NCBiaXQgaW50cyBhcmUgdXN1YWxseSBzcGVsdCBfX2ludDY0IHVubGVzcyBjb21waWxlciBoYXMgb3ZlcnJpZGRlbiAqLwotI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxCiAjaWZuZGVmIFBZX0xPTkdfTE9ORwogIwlkZWZpbmUgUFlfTE9OR19MT05HIF9faW50NjQKICMJZGVmaW5lIFBZX0xMT05HX01BWCBfSTY0X01BWApAQCAtMzEyLDExICsyOTAsMTEgQEAKIAkJCXRoZWlyIE1ha2VmaWxlIChvdGhlciBjb21waWxlcnMgYXJlIGdlbmVyYWxseQogCQkJdGFrZW4gY2FyZSBvZiBieSBkaXN0dXRpbHMuKSAqLwogIwkJCWlmIGRlZmluZWQoX0RFQlVHKQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM1X2QubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNl9kLmxpYiIpCiAjCQkJZWxpZiBkZWZpbmVkKFB5X0xJTUlURURfQVBJKQogIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMubGliIikKICMJCQllbHNlCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzUubGliIikKKyMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNi5saWIiKQogIwkJCWVuZGlmIC8qIF9ERUJVRyAqLwogIwkJZW5kaWYgLyogX01TQ19WRVIgKi8KICMJZW5kaWYgLyogUHlfQlVJTERfQ09SRSAqLwpAQCAtMzg3LDM5ICszNjUsMTAgQEAKIAogLyogZGVmaW5lIHNpZ25lZCBhbmQgdW5zaWduZWQgZXhhY3Qtd2lkdGggMzItYml0IGFuZCA2NC1iaXQgdHlwZXMsIHVzZWQgaW4gdGhlCiAgICBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gaW50ZWdlcnMuICovCi0jaWZuZGVmIFBZX1VJTlQzMl9UCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci0jZGVmaW5lIEhBVkVfVUlOVDMyX1QgMQotI2RlZmluZSBQWV9VSU5UMzJfVCB1bnNpZ25lZCBpbnQKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCi0jZGVmaW5lIFBZX1VJTlQzMl9UIHVuc2lnbmVkIGxvbmcKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgUFlfVUlOVDY0X1QKLSNpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKLSNkZWZpbmUgSEFWRV9VSU5UNjRfVCAxCi0jZGVmaW5lIFBZX1VJTlQ2NF9UIHVuc2lnbmVkIFBZX0xPTkdfTE9ORwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9JTlQzMl9UCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZGVmaW5lIFBZX0lOVDMyX1QgaW50Ci0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci0jZGVmaW5lIEhBVkVfSU5UMzJfVCAxCi0jZGVmaW5lIFBZX0lOVDMyX1QgbG9uZwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9JTlQ2NF9UCi0jaWYgU0laRU9GX0xPTkdfTE9ORyA9PSA4Ci0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0jZGVmaW5lIFBZX0lOVDY0X1QgUFlfTE9OR19MT05HCi0jZW5kaWYKLSNlbmRpZgorI2RlZmluZSBQWV9VSU5UMzJfVCB1aW50MzJfdAorI2RlZmluZSBQWV9VSU5UNjRfVCB1aW50NjRfdAorI2RlZmluZSBQWV9JTlQzMl9UIGludDMyX3QKKyNkZWZpbmUgUFlfSU5UNjRfVCBpbnQ2NF90CiAKIC8qIEZhaXJseSBzdGFuZGFyZCBmcm9tIGhlcmUhICovCiAKQEAgLTQ0OCwxNCArMzk3LDEwIEBACiAvKiAjZGVmaW5lIGNvbnN0ICAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNvbmlvLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0NPTklPX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0RJUkVDVF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZGlyZW50LmguICAqLwogLyogI2RlZmluZSBESVJFTlQgMSAqLwpAQCAtNTI4LDkgKzQ3Myw3IEBACiAvKiAjZGVmaW5lIEhBVkVfQUxUWk9ORSAqLwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHB1dGVudiBmdW5jdGlvbi4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfUFVURU5WCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgc3VwcG9ydHMgZnVuY3Rpb24gcHJvdG90eXBlcyAqLwogI2RlZmluZSBIQVZFX1BST1RPVFlQRVMKQEAgLTU1OCw5ICs1MDEsNyBAQAogI2RlZmluZSBIQVZFX0RZTkFNSUNfTE9BRElORwogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZnRpbWUuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0ZUSU1FCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGdldHBlZXJuYW1lLiAgKi8KICNkZWZpbmUgSEFWRV9HRVRQRUVSTkFNRQpAQCAtNTY5LDkgKzUxMCw3IEBACiAvKiAjdW5kZWYgSEFWRV9HRVRQR1JQICovCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXRwaWQuICAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0dFVFBJRAotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBnZXR0aW1lb2ZkYXkuICAqLwogLyogI3VuZGVmIEhBVkVfR0VUVElNRU9GREFZICovCkBAIC02MzMsMTQgKzU3MiwxMCBAQAogI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2NzY29sbCcgZnVuY3Rpb24uICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfV0NTQ09MTCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3Y3N4ZnJtJyBmdW5jdGlvbi4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9XQ1NYRlJNIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgdGhlIHpsaWIgbGlicmFyeSBoYXMgaW5mbGF0ZUNvcHkgKi8KICNkZWZpbmUgSEFWRV9aTElCX0NPUFkgMQpAQCAtNjQ5LDI0ICs1ODQsMTYgQEAKIC8qICN1bmRlZiBIQVZFX0RMRkNOX0ggKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnJuby5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRkNOVExfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwcm9jZXNzLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1BST0NFU1NfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzaWduYWwuaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU0lHTkFMX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGFyZy5oPiBwcm90b3R5cGVzLiAgKi8KICNkZWZpbmUgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwpAQCAtNjg0LDkgKzYxMSw3IEBACiAvKiAjZGVmaW5lIEhBVkVfU1lTX1NFTEVDVF9IIDEgKi8KIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3RpbWUuaD4gaGVhZGVyIGZpbGUuICAqLwogLyogI2RlZmluZSBIQVZFX1NZU19USU1FX0ggMSAqLwpAQCAtNjk1LDkgKzYyMCw3IEBACiAvKiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVTX0ggMSAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91bi5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfU1lTX1VOX0ggMSAqLwpAQCAtNzIwLDYgKzY0Myw5IEBACiAvKiBUaGUgc2l6ZSBvZiBgd2NoYXJfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1dDSEFSX1QgMgogCisvKiBUaGUgc2l6ZSBvZiBgX0Jvb2wnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCisjZGVmaW5lIFNJWkVPRl9fQk9PTCAxCisKIC8qIFRoZSBzaXplIG9mIGBwaWRfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1BJRF9UIFNJWkVPRl9JTlQKIApkaWZmIC0tZ2l0IGEvUEMvcHlsYXVuY2hlci5yYyBiL1BDL3B5bGF1bmNoZXIucmMKaW5kZXggYThkYjBhOC4uM2RhMzQ0NSAxMDA2NDQKLS0tIGEvUEMvcHlsYXVuY2hlci5yYworKysgYi9QQy9weWxhdW5jaGVyLnJjCkBAIC03LDkgKzcsMTMgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAibGF1bmNoZXIuaWNvIiAKLTIgSUNPTiBESVNDQVJEQUJMRSAicHkuaWNvIiAKLTMgSUNPTiBESVNDQVJEQUJMRSAicHljLmljbyIgCisxIElDT04gRElTQ0FSREFCTEUgImljb25zXGxhdW5jaGVyLmljbyIgCisyIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5LmljbyIgCiszIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5Yy5pY28iIAorNCBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweWQuaWNvIiAKKzUgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIKKzYgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9udy5pY28iCis3IElDT04gRElTQ0FSREFCTEUgImljb25zXHNldHVwLmljbyIgCiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uLm1hbmlmZXN0IGIvUEMvcHl0aG9uLm1hbmlmZXN0CmluZGV4IGQ2ZTRiYmEuLjRlNzNkNjAgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbi5tYW5pZmVzdAorKysgYi9QQy9weXRob24ubWFuaWZlc3QKQEAgLTE2LDEwICsxNiwxNSBAQAogICAgICAgPHN1cHBvcnRlZE9TIElkPSJ7OGUwZjdhMTItYmZiMy00ZmU4LWI5YTUtNDhmZDUwYTE1YTlhfSIvPgogICAgIDwvYXBwbGljYXRpb24+IAogICA8L2NvbXBhdGliaWxpdHk+CisgIDxhcHBsaWNhdGlvbiB4bWxucz0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTphc20udjMiPgorICAgIDx3aW5kb3dzU2V0dGluZ3M+CisgICAgICA8bG9uZ1BhdGhBd2FyZSB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9TTUkvMjAxNi9XaW5kb3dzU2V0dGluZ3MiPnRydWU8L2xvbmdQYXRoQXdhcmU+CisgICAgPC93aW5kb3dzU2V0dGluZ3M+CisgIDwvYXBwbGljYXRpb24+CiAgIDxkZXBlbmRlbmN5PgogICAgIDxkZXBlbmRlbnRBc3NlbWJseT4KICAgICAgIDxhc3NlbWJseUlkZW50aXR5IHR5cGU9IndpbjMyIiBuYW1lPSJNaWNyb3NvZnQuV2luZG93cy5Db21tb24tQ29udHJvbHMiCiAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPSI2LjAuMC4wIiBwcm9jZXNzb3JBcmNoaXRlY3R1cmU9IioiIHB1YmxpY0tleVRva2VuPSI2NTk1YjY0MTQ0Y2NmMWRmIiBsYW5ndWFnZT0iKiIgLz4KICAgICA8L2RlcGVuZGVudEFzc2VtYmx5PgogICA8L2RlcGVuZGVuY3k+Ci08L2Fzc2VtYmx5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvYXNzZW1ibHk+CmRpZmYgLS1naXQgYS9QQy9weXRob24zLmRlZiBiL1BDL3B5dGhvbjMuZGVmCmluZGV4IDg4YzA3NDIuLmU4ZDJkOGMgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMuZGVmCisrKyBiL1BDL3B5dGhvbjMuZGVmCkBAIC0yLDcxMiArMiw3MTMgQEAKIDsgSXQgaXMgdXNlZCB3aGVuIGJ1aWxkaW5nIHB5dGhvbjNkbGwudmN4cHJvagogTElCUkFSWQkicHl0aG9uMyIKIEVYUE9SVFMKLSAgUHlBcmdfUGFyc2U9cHl0aG9uMzUuUHlBcmdfUGFyc2UKLSAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlCi0gIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNS5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzUuUHlBcmdfVW5wYWNrVHVwbGUKLSAgUHlBcmdfVmFQYXJzZT1weXRob24zNS5QeUFyZ19WYVBhcnNlCi0gIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNS5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKLSAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQotICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzUuUHlCb29sX0Zyb21Mb25nCi0gIFB5Qm9vbF9UeXBlPXB5dGhvbjM1LlB5Qm9vbF9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNS5QeUJ5dGVBcnJheV9Bc1N0cmluZwotICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzUuUHlCeXRlQXJyYXlfQ29uY2F0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAotICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfUmVzaXplCi0gIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfU2l6ZQotICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQotICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQotICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZXNfQXNTdHJpbmcKLSAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzUuUHlCeXRlc19Db25jYXQKLSAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzUuUHlCeXRlc19Db25jYXRBbmREZWwKLSAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlCeXRlc19EZWNvZGVFc2NhcGUKLSAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdAotICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKLSAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5Qnl0ZXNfRnJvbU9iamVjdAotICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nCi0gIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzUuUHlCeXRlc19SZXByCi0gIFB5Qnl0ZXNfU2l6ZT1weXRob24zNS5QeUJ5dGVzX1NpemUKLSAgUHlCeXRlc19UeXBlPXB5dGhvbjM1LlB5Qnl0ZXNfVHlwZSBEQVRBCi0gIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2FsbAotICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKLSAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKLSAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzUuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KLSAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRTZWxmCi0gIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNS5QeUNGdW5jdGlvbl9OZXcKLSAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzUuUHlDRnVuY3Rpb25fTmV3RXgKLSAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNS5QeUNGdW5jdGlvbl9UeXBlIERBVEEKLSAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzUuUHlDYWxsSXRlcl9OZXcKLSAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM1LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCi0gIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzUuUHlDYWxsYWJsZV9DaGVjawotICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNS5QeUNhcHN1bGVfR2V0Q29udGV4dAotICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNS5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgotICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNS5QeUNhcHN1bGVfR2V0TmFtZQotICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNS5QeUNhcHN1bGVfR2V0UG9pbnRlcgotICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9JbXBvcnQKLSAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzUuUHlDYXBzdWxlX0lzVmFsaWQKLSAgUHlDYXBzdWxlX05ldz1weXRob24zNS5QeUNhcHN1bGVfTmV3Ci0gIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXROYW1lCi0gIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM1LlB5Q2Fwc3VsZV9UeXBlIERBVEEKLSAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzUuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlCi0gIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0RlY29kZXIKLSAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGUKLSAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRW5jb2RlcgotICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0lnbm9yZUVycm9ycwotICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgotICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNS5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgotICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzUuUHlDb2RlY19Lbm93bkVuY29kaW5nCi0gIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19Mb29rdXBFcnJvcgotICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXIKLSAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM1LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgotICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19SZXBsYWNlRXJyb3JzCi0gIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtUmVhZGVyCi0gIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM1LlB5Q29kZWNfU3RyZWFtV3JpdGVyCi0gIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfU3RyaWN0RXJyb3JzCi0gIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycwotICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzUuUHlDb21wbGV4X0Zyb21Eb3VibGVzCi0gIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQotICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM1LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKLSAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzUuUHlDb21wbGV4X1R5cGUgREFUQQotICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM1LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKLSAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzUuUHlEZXNjcl9OZXdHZXRTZXQKLSAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZW1iZXIKLSAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdNZXRob2QKLSAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNS5QeURpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNS5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCi0gIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKLSAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5RGljdEtleXNfVHlwZSBEQVRBCi0gIFB5RGljdFByb3h5X05ldz1weXRob24zNS5QeURpY3RQcm94eV9OZXcKLSAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNS5QeURpY3RQcm94eV9UeXBlIERBVEEKLSAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQotICBQeURpY3RfQ2xlYXI9cHl0aG9uMzUuUHlEaWN0X0NsZWFyCi0gIFB5RGljdF9Db250YWlucz1weXRob24zNS5QeURpY3RfQ29udGFpbnMKLSAgUHlEaWN0X0NvcHk9cHl0aG9uMzUuUHlEaWN0X0NvcHkKLSAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW0KLSAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW0KLSAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1TdHJpbmcKLSAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzUuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKLSAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM1LlB5RGljdF9JdGVtcwotICBQeURpY3RfS2V5cz1weXRob24zNS5QeURpY3RfS2V5cwotICBQeURpY3RfTWVyZ2U9cHl0aG9uMzUuUHlEaWN0X01lcmdlCi0gIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM1LlB5RGljdF9NZXJnZUZyb21TZXEyCi0gIFB5RGljdF9OZXc9cHl0aG9uMzUuUHlEaWN0X05ldwotICBQeURpY3RfTmV4dD1weXRob24zNS5QeURpY3RfTmV4dAotICBQeURpY3RfU2V0SXRlbT1weXRob24zNS5QeURpY3RfU2V0SXRlbQotICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfU2V0SXRlbVN0cmluZwotICBQeURpY3RfU2l6ZT1weXRob24zNS5QeURpY3RfU2l6ZQotICBQeURpY3RfVHlwZT1weXRob24zNS5QeURpY3RfVHlwZSBEQVRBCi0gIFB5RGljdF9VcGRhdGU9cHl0aG9uMzUuUHlEaWN0X1VwZGF0ZQotICBQeURpY3RfVmFsdWVzPXB5dGhvbjM1LlB5RGljdF9WYWx1ZXMKLSAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM1LlB5RWxsaXBzaXNfVHlwZSBEQVRBCi0gIFB5RW51bV9UeXBlPXB5dGhvbjM1LlB5RW51bV9UeXBlIERBVEEKLSAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzUuUHlFcnJfQmFkQXJndW1lbnQKLSAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1LlB5RXJyX0JhZEludGVybmFsQ2FsbAotICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzUuUHlFcnJfQ2hlY2tTaWduYWxzCi0gIFB5RXJyX0NsZWFyPXB5dGhvbjM1LlB5RXJyX0NsZWFyCi0gIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzUuUHlFcnJfRGlzcGxheQotICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfRmV0Y2g9cHl0aG9uMzUuUHlFcnJfRmV0Y2gKLSAgUHlFcnJfRm9ybWF0PXB5dGhvbjM1LlB5RXJyX0Zvcm1hdAotICBQeUVycl9Gb3JtYXRWPXB5dGhvbjM1LlB5RXJyX0Zvcm1hdFYKLSAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM1LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uCi0gIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzUuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYwotICBQeUVycl9Ob01lbW9yeT1weXRob24zNS5QeUVycl9Ob01lbW9yeQotICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzUuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCi0gIFB5RXJyX09jY3VycmVkPXB5dGhvbjM1LlB5RXJyX09jY3VycmVkCi0gIFB5RXJyX1ByaW50PXB5dGhvbjM1LlB5RXJyX1ByaW50Ci0gIFB5RXJyX1ByaW50RXg9cHl0aG9uMzUuUHlFcnJfUHJpbnRFeAotICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNS5QeUVycl9Qcm9ncmFtVGV4dAotICBQeUVycl9SZXN0b3JlPXB5dGhvbjM1LlB5RXJyX1Jlc3RvcmUKLSAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJubwotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKLSAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM1LlB5RXJyX1NldEludGVycnVwdAotICBQeUVycl9TZXROb25lPXB5dGhvbjM1LlB5RXJyX1NldE5vbmUKLSAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldE9iamVjdAotICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzUuUHlFcnJfU2V0U3RyaW5nCi0gIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM1LlB5RXJyX1N5bnRheExvY2F0aW9uCi0gIFB5RXJyX1dhcm5FeD1weXRob24zNS5QeUVycl9XYXJuRXgKLSAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM1LlB5RXJyX1dhcm5FeHBsaWNpdAotICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM1LlB5RXJyX1dhcm5Gb3JtYXQKLSAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM1LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQotICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVMb2NrCi0gIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM1LlB5RXZhbF9BY3F1aXJlVGhyZWFkCi0gIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzUuUHlFdmFsX0NhbGxGdW5jdGlvbgotICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNS5QeUV2YWxfQ2FsbE1ldGhvZAotICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNS5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcwotICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlCi0gIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM1LlB5RXZhbF9FdmFsQ29kZUV4Ci0gIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZQotICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxGcmFtZUV4Ci0gIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNS5QeUV2YWxfR2V0QnVpbHRpbnMKLSAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNS5QeUV2YWxfR2V0Q2FsbFN0YXRzCi0gIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnJhbWUKLSAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM1LlB5RXZhbF9HZXRGdW5jRGVzYwotICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNOYW1lCi0gIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM1LlB5RXZhbF9HZXRHbG9iYWxzCi0gIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzUuUHlFdmFsX0dldExvY2FscwotICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX0luaXRUaHJlYWRzCi0gIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM1LlB5RXZhbF9SZUluaXRUaHJlYWRzCi0gIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNS5QeUV2YWxfUmVsZWFzZUxvY2sKLSAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1JlbGVhc2VUaHJlYWQKLSAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKLSAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX1NhdmVUaHJlYWQKLSAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNS5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCi0gIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNS5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQotICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNS5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM1LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKLSAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNS5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzUuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQotICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKLSAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM1LlB5RXhjX0VPRkVycm9yIERBVEEKLSAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNS5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKLSAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNS5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQotICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQotICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM1LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQotICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM1LlB5RXhjX0lPRXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNS5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCi0gIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCi0gIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzUuUHlFeGNfSW5kZXhFcnJvciBEQVRBCi0gIFB5RXhjX0tleUVycm9yPXB5dGhvbjM1LlB5RXhjX0tleUVycm9yIERBVEEKLSAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQotICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNS5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM1LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX05hbWVFcnJvcj1weXRob24zNS5QeUV4Y19OYW1lRXJyb3IgREFUQQotICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM1LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQotICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM1LlB5RXhjX09TRXJyb3IgREFUQQotICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM1LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQotICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzUuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzUuUHlFeGNfUnVudGltZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQotICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM1LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQotICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNS5QeUV4Y19TeW50YXhFcnJvciBEQVRBCi0gIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCi0gIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM1LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKLSAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNS5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKLSAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzUuUHlFeGNfVGFiRXJyb3IgREFUQQotICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVHlwZUVycm9yIERBVEEKLSAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQotICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNS5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCi0gIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVmFsdWVFcnJvciBEQVRBCi0gIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzUuUHlFeGNfV2FybmluZyBEQVRBCi0gIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM1LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKLSAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fR2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKLSAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzUuUHlFeGNlcHRpb25fU2V0Q2F1c2UKLSAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0Ci0gIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKLSAgUHlGaWxlX0Zyb21GZD1weXRob24zNS5QeUZpbGVfRnJvbUZkCi0gIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM1LlB5RmlsZV9HZXRMaW5lCi0gIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNS5QeUZpbGVfV3JpdGVPYmplY3QKLSAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM1LlB5RmlsZV9Xcml0ZVN0cmluZwotICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM1LlB5RmlsdGVyX1R5cGUgREFUQQotICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfQXNEb3VibGUKLSAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM1LlB5RmxvYXRfRnJvbURvdWJsZQotICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tU3RyaW5nCi0gIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNS5QeUZsb2F0X0dldEluZm8KLSAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzUuUHlGbG9hdF9HZXRNYXgKLSAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzUuUHlGbG9hdF9HZXRNaW4KLSAgUHlGbG9hdF9UeXBlPXB5dGhvbjM1LlB5RmxvYXRfVHlwZSBEQVRBCi0gIFB5RnJvemVuU2V0X05ldz1weXRob24zNS5QeUZyb3plblNldF9OZXcKLSAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNS5QeUZyb3plblNldF9UeXBlIERBVEEKLSAgUHlHQ19Db2xsZWN0PXB5dGhvbjM1LlB5R0NfQ29sbGVjdAotICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNS5QeUdJTFN0YXRlX0Vuc3VyZQotICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNS5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQotICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzUuUHlHSUxTdGF0ZV9SZWxlYXNlCi0gIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNS5QeUdldFNldERlc2NyX1R5cGUgREFUQQotICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfQWRkTW9kdWxlCi0gIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzUuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgotICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM1LlB5SW1wb3J0X0NsZWFudXAKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4Ci0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKLSAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKLSAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzUuUHlJbXBvcnRfR2V0TWFnaWNUYWcKLSAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNS5QeUltcG9ydF9HZXRNb2R1bGVEaWN0Ci0gIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNS5QeUltcG9ydF9JbXBvcnQKLSAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jawotICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKLSAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzUuUHlJbnRlcnByZXRlclN0YXRlX05ldwotICBQeUl0ZXJfTmV4dD1weXRob24zNS5QeUl0ZXJfTmV4dAotICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM1LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzUuUHlMaXN0X0FwcGVuZAotICBQeUxpc3RfQXNUdXBsZT1weXRob24zNS5QeUxpc3RfQXNUdXBsZQotICBQeUxpc3RfR2V0SXRlbT1weXRob24zNS5QeUxpc3RfR2V0SXRlbQotICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X0dldFNsaWNlCi0gIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzUuUHlMaXN0X0luc2VydAotICBQeUxpc3RfTmV3PXB5dGhvbjM1LlB5TGlzdF9OZXcKLSAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzUuUHlMaXN0X1JldmVyc2UKLSAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzUuUHlMaXN0X1NldEl0ZW0KLSAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM1LlB5TGlzdF9TZXRTbGljZQotICBQeUxpc3RfU2l6ZT1weXRob24zNS5QeUxpc3RfU2l6ZQotICBQeUxpc3RfU29ydD1weXRob24zNS5QeUxpc3RfU29ydAotICBQeUxpc3RfVHlwZT1weXRob24zNS5QeUxpc3RfVHlwZSBEQVRBCi0gIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Bc0RvdWJsZQotICBQeUxvbmdfQXNMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmcKLSAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNS5QeUxvbmdfQXNMb25nTG9uZwotICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NpemVfdAotICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Bc1NzaXplX3QKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCi0gIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0FzVm9pZFB0cgotICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNS5QeUxvbmdfRnJvbURvdWJsZQotICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nCi0gIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21Mb25nTG9uZwotICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNpemVfdAotICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0Zyb21Tc2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tU3RyaW5nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVm9pZFB0cgotICBQeUxvbmdfR2V0SW5mbz1weXRob24zNS5QeUxvbmdfR2V0SW5mbwotICBQeUxvbmdfVHlwZT1weXRob24zNS5QeUxvbmdfVHlwZSBEQVRBCi0gIFB5TWFwX1R5cGU9cHl0aG9uMzUuUHlNYXBfVHlwZSBEQVRBCi0gIFB5TWFwcGluZ19DaGVjaz1weXRob24zNS5QeU1hcHBpbmdfQ2hlY2sKLSAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5Ci0gIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzUuUHlNYXBwaW5nX0hhc0tleVN0cmluZwotICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzUuUHlNYXBwaW5nX0l0ZW1zCi0gIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM1LlB5TWFwcGluZ19LZXlzCi0gIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzUuUHlNYXBwaW5nX0xlbmd0aAotICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNS5QeU1hcHBpbmdfU2l6ZQotICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM1LlB5TWFwcGluZ19WYWx1ZXMKLSAgUHlNZW1fRnJlZT1weXRob24zNS5QeU1lbV9GcmVlCi0gIFB5TWVtX01hbGxvYz1weXRob24zNS5QeU1lbV9NYWxsb2MKLSAgUHlNZW1fUmVhbGxvYz1weXRob24zNS5QeU1lbV9SZWFsbG9jCi0gIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNS5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQotICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNS5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAotICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNS5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cwotICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNS5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCi0gIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQotICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNS5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAotICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzUuUHlNb2R1bGVfQWRkT2JqZWN0Ci0gIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50Ci0gIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzUuUHlNb2R1bGVfQ3JlYXRlMgotICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGVmCi0gIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzUuUHlNb2R1bGVfR2V0RGljdAotICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZQotICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNS5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAotICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldE5hbWUKLSAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0U3RhdGUKLSAgUHlNb2R1bGVfTmV3PXB5dGhvbjM1LlB5TW9kdWxlX05ldwotICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlX1R5cGUgREFUQQotICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM1LlB5TW9kdWxlRGVmX0luaXQKLSAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNS5QeU1vZHVsZURlZl9UeXBlIERBVEEKLSAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNS5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKLSAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzUuUHlOdW1iZXJfQWJzb2x1dGUKLSAgUHlOdW1iZXJfQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0FkZAotICBQeU51bWJlcl9BbmQ9cHl0aG9uMzUuUHlOdW1iZXJfQW5kCi0gIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNS5QeU51bWJlcl9Bc1NzaXplX3QKLSAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzUuUHlOdW1iZXJfQ2hlY2sKLSAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM1LlB5TnVtYmVyX0Rpdm1vZAotICBQeU51bWJlcl9GbG9hdD1weXRob24zNS5QeU51bWJlcl9GbG9hdAotICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9GbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBZGQKLSAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlQW5kCi0gIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTHNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLSAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VPcgotICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi0gIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNS5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VYb3IKLSAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzUuUHlOdW1iZXJfSW5kZXgKLSAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM1LlB5TnVtYmVyX0ludmVydAotICBQeU51bWJlcl9Mb25nPXB5dGhvbjM1LlB5TnVtYmVyX0xvbmcKLSAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0xzaGlmdAotICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNS5QeU51bWJlcl9NdWx0aXBseQotICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNS5QeU51bWJlcl9OZWdhdGl2ZQotICBQeU51bWJlcl9Pcj1weXRob24zNS5QeU51bWJlcl9PcgotICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNS5QeU51bWJlcl9Qb3NpdGl2ZQotICBQeU51bWJlcl9Qb3dlcj1weXRob24zNS5QeU51bWJlcl9Qb3dlcgotICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzUuUHlOdW1iZXJfUmVtYWluZGVyCi0gIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNS5QeU51bWJlcl9Sc2hpZnQKLSAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfU3VidHJhY3QKLSAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM1LlB5TnVtYmVyX1RvQmFzZQotICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX1RydWVEaXZpZGUKLSAgUHlOdW1iZXJfWG9yPXB5dGhvbjM1LlB5TnVtYmVyX1hvcgotICBQeU9TX0FmdGVyRm9yaz1weXRob24zNS5QeU9TX0FmdGVyRm9yawotICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM1LlB5T1NfSW5pdEludGVycnVwdHMKLSAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzUuUHlPU19JbnB1dEhvb2sgREFUQQotICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM1LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKLSAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNS5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKLSAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM1LlB5T1NfZG91YmxlX3RvX3N0cmluZwotICBQeU9TX2dldHNpZz1weXRob24zNS5QeU9TX2dldHNpZwotICBQeU9TX215c3RyaWNtcD1weXRob24zNS5QeU9TX215c3RyaWNtcAotICBQeU9TX215c3RybmljbXA9cHl0aG9uMzUuUHlPU19teXN0cm5pY21wCi0gIFB5T1Nfc2V0c2lnPXB5dGhvbjM1LlB5T1Nfc2V0c2lnCi0gIFB5T1Nfc25wcmludGY9cHl0aG9uMzUuUHlPU19zbnByaW50ZgotICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzUuUHlPU19zdHJpbmdfdG9fZG91YmxlCi0gIFB5T1Nfc3RydG9sPXB5dGhvbjM1LlB5T1Nfc3RydG9sCi0gIFB5T1Nfc3RydG91bD1weXRob24zNS5QeU9TX3N0cnRvdWwKLSAgUHlPU192c25wcmludGY9cHl0aG9uMzUuUHlPU192c25wcmludGYKLSAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzUuUHlPYmplY3RfQVNDSUkKLSAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgotICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM1LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLSAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKLSAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzUuUHlPYmplY3RfQnl0ZXMKLSAgUHlPYmplY3RfQ2FsbD1weXRob24zNS5QeU9iamVjdF9DYWxsCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb24KLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE1ldGhvZAotICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncwotICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxPYmplY3QKLSAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM1LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM1LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLSAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtCi0gIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfRGVsSXRlbVN0cmluZwotICBQeU9iamVjdF9EaXI9cHl0aG9uMzUuUHlPYmplY3RfRGlyCi0gIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNS5QeU9iamVjdF9Gb3JtYXQKLSAgUHlPYmplY3RfRnJlZT1weXRob24zNS5QeU9iamVjdF9GcmVlCi0gIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNS5QeU9iamVjdF9HQ19EZWwKLSAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzUuUHlPYmplY3RfR0NfVHJhY2sKLSAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19VblRyYWNrCi0gIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9HZXRJdGVtCi0gIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzUuUHlPYmplY3RfR2V0SXRlcgotICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHIKLSAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzUuUHlPYmplY3RfSGFzaAotICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzUuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi0gIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzUuUHlPYmplY3RfSW5pdAotICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM1LlB5T2JqZWN0X0luaXRWYXIKLSAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNS5QeU9iamVjdF9Jc0luc3RhbmNlCi0gIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzUuUHlPYmplY3RfSXNTdWJjbGFzcwotICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzUuUHlPYmplY3RfSXNUcnVlCi0gIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNS5QeU9iamVjdF9MZW5ndGgKLSAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM1LlB5T2JqZWN0X01hbGxvYwotICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzUuUHlPYmplY3RfTm90Ci0gIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfUmVhbGxvYwotICBQeU9iamVjdF9SZXByPXB5dGhvbjM1LlB5T2JqZWN0X1JlcHIKLSAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmUKLSAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM1LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNS5QeU9iamVjdF9TZWxmSXRlcgotICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHIKLSAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNS5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzUuUHlPYmplY3RfU2V0SXRlbQotICBQeU9iamVjdF9TaXplPXB5dGhvbjM1LlB5T2JqZWN0X1NpemUKLSAgUHlPYmplY3RfU3RyPXB5dGhvbjM1LlB5T2JqZWN0X1N0cgotICBQeU9iamVjdF9UeXBlPXB5dGhvbjM1LlB5T2JqZWN0X1R5cGUgREFUQQotICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzUuUHlPRGljdF9EZWxJdGVtCi0gIFB5T0RpY3RfTmV3PXB5dGhvbjM1LlB5T0RpY3RfTmV3Ci0gIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNS5QeU9EaWN0X1NldEl0ZW0KLSAgUHlPRGljdF9UeXBlPXB5dGhvbjM1LlB5T0RpY3RfVHlwZSBEQVRBCi0gIFB5T0RpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVtc19UeXBlIERBVEEKLSAgUHlPRGljdEl0ZXJfVHlwZT1weXRob24zNS5QeU9EaWN0SXRlcl9UeXBlIERBVEEKLSAgUHlPRGljdEtleXNfVHlwZT1weXRob24zNS5QeU9EaWN0S2V5c19UeXBlIERBVEEKLSAgUHlPRGljdFZhbHVlc19UeXBlPXB5dGhvbjM1LlB5T0RpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM1LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCi0gIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncwotICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzUuUHlQcm9wZXJ0eV9UeXBlIERBVEEKLSAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNS5QeVJhbmdlSXRlcl9UeXBlIERBVEEKLSAgUHlSYW5nZV9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VfVHlwZSBEQVRBCi0gIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNS5QeVJldmVyc2VkX1R5cGUgREFUQQotICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM1LlB5U2VxSXRlcl9OZXcKLSAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXFJdGVyX1R5cGUgREFUQQotICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ2hlY2sKLSAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db25jYXQKLSAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNS5QeVNlcXVlbmNlX0NvbnRhaW5zCi0gIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9Db3VudAotICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxJdGVtCi0gIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9EZWxTbGljZQotICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzUuUHlTZXF1ZW5jZV9GYXN0Ci0gIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0dldFNsaWNlCi0gIFB5U2VxdWVuY2VfSW49cHl0aG9uMzUuUHlTZXF1ZW5jZV9JbgotICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0Ci0gIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKLSAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNS5QeVNlcXVlbmNlX0luZGV4Ci0gIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM1LlB5U2VxdWVuY2VfTGVuZ3RoCi0gIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNS5QeVNlcXVlbmNlX0xpc3QKLSAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzUuUHlTZXF1ZW5jZV9SZXBlYXQKLSAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0SXRlbQotICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM1LlB5U2VxdWVuY2VfU2l6ZQotICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM1LlB5U2VxdWVuY2VfVHVwbGUKLSAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzUuUHlTZXRJdGVyX1R5cGUgREFUQQotICBQeVNldF9BZGQ9cHl0aG9uMzUuUHlTZXRfQWRkCi0gIFB5U2V0X0NsZWFyPXB5dGhvbjM1LlB5U2V0X0NsZWFyCi0gIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM1LlB5U2V0X0NvbnRhaW5zCi0gIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzUuUHlTZXRfRGlzY2FyZAotICBQeVNldF9OZXc9cHl0aG9uMzUuUHlTZXRfTmV3Ci0gIFB5U2V0X1BvcD1weXRob24zNS5QeVNldF9Qb3AKLSAgUHlTZXRfU2l6ZT1weXRob24zNS5QeVNldF9TaXplCi0gIFB5U2V0X1R5cGU9cHl0aG9uMzUuUHlTZXRfVHlwZSBEQVRBCi0gIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXMKLSAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzUuUHlTbGljZV9HZXRJbmRpY2VzRXgKLSAgUHlTbGljZV9OZXc9cHl0aG9uMzUuUHlTbGljZV9OZXcKLSAgUHlTbGljZV9UeXBlPXB5dGhvbjM1LlB5U2xpY2VfVHlwZSBEQVRBCi0gIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNS5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQotICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9GaW5kTW9kdWxlCi0gIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfQWRkTW9kdWxlCi0gIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM1LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCi0gIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQotICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U3VwZXJfVHlwZT1weXRob24zNS5QeVN1cGVyX1R5cGUgREFUQQotICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM1LlB5U3lzX0FkZFdhcm5PcHRpb24KLSAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKLSAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM1LlB5U3lzX0Zvcm1hdFN0ZGVycgotICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3Rkb3V0Ci0gIFB5U3lzX0dldE9iamVjdD1weXRob24zNS5QeVN5c19HZXRPYmplY3QKLSAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzUuUHlTeXNfSGFzV2Fybk9wdGlvbnMKLSAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19SZXNldFdhcm5PcHRpb25zCi0gIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzUuUHlTeXNfU2V0QXJndgotICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzUuUHlTeXNfU2V0QXJndkV4Ci0gIFB5U3lzX1NldE9iamVjdD1weXRob24zNS5QeVN5c19TZXRPYmplY3QKLSAgUHlTeXNfU2V0UGF0aD1weXRob24zNS5QeVN5c19TZXRQYXRoCi0gIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM1LlB5U3lzX1dyaXRlU3RkZXJyCi0gIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM1LlB5U3lzX1dyaXRlU3Rkb3V0Ci0gIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9DbGVhcgotICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZQotICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50Ci0gIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0Ci0gIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNS5QeVRocmVhZFN0YXRlX0dldERpY3QKLSAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9OZXcKLSAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNS5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCi0gIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNS5QeVRocmVhZFN0YXRlX1N3YXAKLSAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNS5QeVRyYWNlQmFja19IZXJlCi0gIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM1LlB5VHJhY2VCYWNrX1ByaW50Ci0gIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzUuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCi0gIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzUuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNS5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKLSAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM1LlB5VHVwbGVfR2V0SXRlbQotICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM1LlB5VHVwbGVfR2V0U2xpY2UKLSAgUHlUdXBsZV9OZXc9cHl0aG9uMzUuUHlUdXBsZV9OZXcKLSAgUHlUdXBsZV9QYWNrPXB5dGhvbjM1LlB5VHVwbGVfUGFjawotICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9TZXRJdGVtCi0gIFB5VHVwbGVfU2l6ZT1weXRob24zNS5QeVR1cGxlX1NpemUKLSAgUHlUdXBsZV9UeXBlPXB5dGhvbjM1LlB5VHVwbGVfVHlwZSBEQVRBCi0gIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM1LlB5VHlwZV9DbGVhckNhY2hlCi0gIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNS5QeVR5cGVfRnJvbVNwZWMKLSAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcwotICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM1LlB5VHlwZV9HZW5lcmljQWxsb2MKLSAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNOZXcKLSAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM1LlB5VHlwZV9HZXRGbGFncwotICBQeVR5cGVfR2V0U2xvdD1weXRob24zNS5QeVR5cGVfR2V0U2xvdAotICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM1LlB5VHlwZV9Jc1N1YnR5cGUKLSAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM1LlB5VHlwZV9Nb2RpZmllZAotICBQeVR5cGVfUmVhZHk9cHl0aG9uMzUuUHlUeXBlX1JlYWR5Ci0gIFB5VHlwZV9UeXBlPXB5dGhvbjM1LlB5VHlwZV9UeXBlIERBVEEKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0Ci0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0Ci0gIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNS5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kCi0gIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzUuUHlVbmljb2RlX0FwcGVuZEFuZERlbAotICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKLSAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKLSAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZwotICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNS5QeVVuaWNvZGVfQXNXaWRlQ2hhcgotICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNS5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAotICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZQotICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM1LlB5VW5pY29kZV9Db25jYXQKLSAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM1LlB5VW5pY29kZV9Db250YWlucwotICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvdW50Ci0gIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZQotICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUFTQ0lJCi0gIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCi0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKLSAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNgotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY4Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTQ29udmVydGVyCi0gIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzUuUHlVbmljb2RlX0ZTRGVjb2RlcgotICBQeVVuaWNvZGVfRmluZD1weXRob24zNS5QeVVuaWNvZGVfRmluZAotICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCi0gIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNS5QeVVuaWNvZGVfRnJvbU9yZGluYWwKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmcKLSAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKLSAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9HZXRTaXplCi0gIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzUuUHlVbmljb2RlX0lzSWRlbnRpZmllcgotICBQeVVuaWNvZGVfSm9pbj1weXRob24zNS5QeVVuaWNvZGVfSm9pbgotICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM1LlB5VW5pY29kZV9QYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1JQYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNS5QeVVuaWNvZGVfUlNwbGl0Ci0gIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9SZXBsYWNlCi0gIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzUuUHlVbmljb2RlX1Jlc2l6ZQotICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzUuUHlVbmljb2RlX1JpY2hDb21wYXJlCi0gIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzUuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0Ci0gIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM1LlB5VW5pY29kZV9TcGxpdGxpbmVzCi0gIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzUuUHlVbmljb2RlX1RhaWxtYXRjaAotICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM1LlB5VW5pY29kZV9UcmFuc2xhdGUKLSAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzUuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKLSAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjcKLSAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCi0gIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzUuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZwotICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCi0gIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCi0gIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZV9UeXBlIERBVEEKLSAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNS5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKLSAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdQcm94eQotICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM1LlB5V2Vha3JlZl9OZXdSZWYKLSAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNS5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlXcmFwcGVyX05ldz1weXRob24zNS5QeVdyYXBwZXJfTmV3Ci0gIFB5WmlwX1R5cGU9cHl0aG9uMzUuUHlaaXBfVHlwZSBEQVRBCi0gIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM1LlB5X0FkZFBlbmRpbmdDYWxsCi0gIFB5X0F0RXhpdD1weXRob24zNS5QeV9BdEV4aXQKLSAgUHlfQnVpbGRWYWx1ZT1weXRob24zNS5QeV9CdWlsZFZhbHVlCi0gIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzUuUHlfQ29tcGlsZVN0cmluZwotICBQeV9EZWNSZWY9cHl0aG9uMzUuUHlfRGVjUmVmCi0gIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM1LlB5X0VuZEludGVycHJldGVyCi0gIFB5X0V4aXQ9cHl0aG9uMzUuUHlfRXhpdAotICBQeV9GYXRhbEVycm9yPXB5dGhvbjM1LlB5X0ZhdGFsRXJyb3IKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfRmluYWxpemU9cHl0aG9uMzUuUHlfRmluYWxpemUKLSAgUHlfR2V0QnVpbGRJbmZvPXB5dGhvbjM1LlB5X0dldEJ1aWxkSW5mbwotICBQeV9HZXRDb21waWxlcj1weXRob24zNS5QeV9HZXRDb21waWxlcgotICBQeV9HZXRDb3B5cmlnaHQ9cHl0aG9uMzUuUHlfR2V0Q29weXJpZ2h0Ci0gIFB5X0dldEV4ZWNQcmVmaXg9cHl0aG9uMzUuUHlfR2V0RXhlY1ByZWZpeAotICBQeV9HZXRQYXRoPXB5dGhvbjM1LlB5X0dldFBhdGgKLSAgUHlfR2V0UGxhdGZvcm09cHl0aG9uMzUuUHlfR2V0UGxhdGZvcm0KLSAgUHlfR2V0UHJlZml4PXB5dGhvbjM1LlB5X0dldFByZWZpeAotICBQeV9HZXRQcm9ncmFtRnVsbFBhdGg9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoCi0gIFB5X0dldFByb2dyYW1OYW1lPXB5dGhvbjM1LlB5X0dldFByb2dyYW1OYW1lCi0gIFB5X0dldFB5dGhvbkhvbWU9cHl0aG9uMzUuUHlfR2V0UHl0aG9uSG9tZQotICBQeV9HZXRSZWN1cnNpb25MaW1pdD1weXRob24zNS5QeV9HZXRSZWN1cnNpb25MaW1pdAotICBQeV9HZXRWZXJzaW9uPXB5dGhvbjM1LlB5X0dldFZlcnNpb24KLSAgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKLSAgUHlfSW5jUmVmPXB5dGhvbjM1LlB5X0luY1JlZgotICBQeV9Jbml0aWFsaXplPXB5dGhvbjM1LlB5X0luaXRpYWxpemUKLSAgUHlfSW5pdGlhbGl6ZUV4PXB5dGhvbjM1LlB5X0luaXRpYWxpemVFeAotICBQeV9Jc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5X0lzSW5pdGlhbGl6ZWQKLSAgUHlfTWFpbj1weXRob24zNS5QeV9NYWluCi0gIFB5X01ha2VQZW5kaW5nQ2FsbHM9cHl0aG9uMzUuUHlfTWFrZVBlbmRpbmdDYWxscwotICBQeV9OZXdJbnRlcnByZXRlcj1weXRob24zNS5QeV9OZXdJbnRlcnByZXRlcgotICBQeV9SZXByRW50ZXI9cHl0aG9uMzUuUHlfUmVwckVudGVyCi0gIFB5X1JlcHJMZWF2ZT1weXRob24zNS5QeV9SZXByTGVhdmUKLSAgUHlfU2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfU2V0UHJvZ3JhbU5hbWUKLSAgUHlfU2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9TZXRQeXRob25Ib21lCi0gIFB5X1NldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X1NldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X1N5bXRhYmxlU3RyaW5nPXB5dGhvbjM1LlB5X1N5bXRhYmxlU3RyaW5nCi0gIFB5X1ZhQnVpbGRWYWx1ZT1weXRob24zNS5QeV9WYUJ1aWxkVmFsdWUKLSAgX1B5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNS5fUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQ9cHl0aG9uMzUuX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVAotICBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAotICBfUHlPYmplY3RfR0NfTWFsbG9jPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19NYWxsb2MKLSAgX1B5T2JqZWN0X0dDX05ldz1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3Ci0gIF9QeU9iamVjdF9HQ19OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX05ld1ZhcgotICBfUHlPYmplY3RfR0NfUmVzaXplPXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19SZXNpemUKLSAgX1B5T2JqZWN0X05ldz1weXRob24zNS5fUHlPYmplY3RfTmV3Ci0gIF9QeU9iamVjdF9OZXdWYXI9cHl0aG9uMzUuX1B5T2JqZWN0X05ld1ZhcgotICBfUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuX1B5U3RhdGVfQWRkTW9kdWxlCi0gIF9QeVRocmVhZFN0YXRlX0luaXQ9cHl0aG9uMzUuX1B5VGhyZWFkU3RhdGVfSW5pdAotICBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYz1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYwotICBfUHlUcmFzaF9kZWxldGVfbGF0ZXI9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX2xhdGVyIERBVEEKLSAgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc9cHl0aG9uMzUuX1B5VHJhc2hfZGVsZXRlX25lc3RpbmcgREFUQQotICBfUHlUcmFzaF9kZXBvc2l0X29iamVjdD1weXRob24zNS5fUHlUcmFzaF9kZXBvc2l0X29iamVjdAotICBfUHlUcmFzaF9kZXN0cm95X2NoYWluPXB5dGhvbjM1Ll9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4KLSAgX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9Qcm94eVR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9Qcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1JlZlR5cGU9cHl0aG9uMzUuX1B5V2Vha3JlZl9SZWZUeXBlIERBVEEKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKLSAgX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaW9uTGltaXQgREFUQQotICBfUHlfQ2hlY2tSZWN1cnNpdmVDYWxsPXB5dGhvbjM1Ll9QeV9DaGVja1JlY3Vyc2l2ZUNhbGwKLSAgX1B5X0RlYWxsb2M9cHl0aG9uMzUuX1B5X0RlYWxsb2MKLSAgX1B5X0VsbGlwc2lzT2JqZWN0PXB5dGhvbjM1Ll9QeV9FbGxpcHNpc09iamVjdCBEQVRBCi0gIF9QeV9GYWxzZVN0cnVjdD1weXRob24zNS5fUHlfRmFsc2VTdHJ1Y3QgREFUQQotICBfUHlfTm9uZVN0cnVjdD1weXRob24zNS5fUHlfTm9uZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdD1weXRob24zNS5fUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3QgREFUQQotICBfUHlfU3dhcHBlZE9wPXB5dGhvbjM1Ll9QeV9Td2FwcGVkT3AgREFUQQotICBfUHlfVHJ1ZVN0cnVjdD1weXRob24zNS5fUHlfVHJ1ZVN0cnVjdCBEQVRBCi0gIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVAotICBfUHlBcmdfUGFyc2VfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19QYXJzZVR1cGxlX1NpemVUCi0gIF9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAotICBfUHlBcmdfVmFQYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZV9TaXplVAotICBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM1Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIFB5QXJnX1BhcnNlPXB5dGhvbjM2LlB5QXJnX1BhcnNlCisgIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzYuUHlBcmdfUGFyc2VUdXBsZQorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzYuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjM2LlB5QXJnX1VucGFja1R1cGxlCisgIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzYuUHlBcmdfVmFQYXJzZQorICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNi5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcworICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzYuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCisgIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjM2LlB5QmFzZU9iamVjdF9UeXBlIERBVEEKKyAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjM2LlB5Qm9vbF9Gcm9tTG9uZworICBQeUJvb2xfVHlwZT1weXRob24zNi5QeUJvb2xfVHlwZSBEQVRBCisgIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjM2LlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzYuUHlCeXRlQXJyYXlfQXNTdHJpbmcKKyAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0NvbmNhdAorICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKKyAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1Jlc2l6ZQorICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1NpemUKKyAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zNi5QeUJ5dGVBcnJheV9UeXBlIERBVEEKKyAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zNi5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKKyAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zNi5QeUJ5dGVzX0FzU3RyaW5nCisgIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCisgIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjM2LlB5Qnl0ZXNfQ29uY2F0CisgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjM2LlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCisgIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjM2LlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCisgIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zNi5QeUJ5dGVzX0Zyb21Gb3JtYXQKKyAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zNi5QeUJ5dGVzX0Zyb21Gb3JtYXRWCisgIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zNi5QeUJ5dGVzX0Zyb21PYmplY3QKKyAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbVN0cmluZworICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19SZXByPXB5dGhvbjM2LlB5Qnl0ZXNfUmVwcgorICBQeUJ5dGVzX1NpemU9cHl0aG9uMzYuUHlCeXRlc19TaXplCisgIFB5Qnl0ZXNfVHlwZT1weXRob24zNi5QeUJ5dGVzX1R5cGUgREFUQQorICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0NhbGwKKyAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zNi5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0CisgIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldEZsYWdzCisgIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCisgIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0U2VsZgorICBQeUNGdW5jdGlvbl9OZXc9cHl0aG9uMzYuUHlDRnVuY3Rpb25fTmV3CisgIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX05ld0V4CisgIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzYuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCisgIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjM2LlB5Q2FsbEl0ZXJfTmV3CisgIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zNi5QeUNhbGxJdGVyX1R5cGUgREFUQQorICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjM2LlB5Q2FsbGFibGVfQ2hlY2sKKyAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzYuUHlDYXBzdWxlX0dldENvbnRleHQKKyAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzYuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzYuUHlDYXBzdWxlX0dldE5hbWUKKyAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzYuUHlDYXBzdWxlX0dldFBvaW50ZXIKKyAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zNi5QeUNhcHN1bGVfSW1wb3J0CisgIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjM2LlB5Q2Fwc3VsZV9Jc1ZhbGlkCisgIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzYuUHlDYXBzdWxlX05ldworICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zNi5QeUNhcHN1bGVfU2V0Q29udGV4dAorICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zNi5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zNi5QeUNhcHN1bGVfU2V0TmFtZQorICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zNi5QeUNhcHN1bGVfU2V0UG9pbnRlcgorICBQeUNhcHN1bGVfVHlwZT1weXRob24zNi5QeUNhcHN1bGVfVHlwZSBEQVRBCisgIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM2LlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycworICBQeUNvZGVjX0RlY29kZT1weXRob24zNi5QeUNvZGVjX0RlY29kZQorICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzYuUHlDb2RlY19EZWNvZGVyCisgIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjM2LlB5Q29kZWNfRW5jb2RlCisgIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zNi5QeUNvZGVjX0VuY29kZXIKKyAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19JZ25vcmVFcnJvcnMKKyAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzYuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKKyAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzYuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKKyAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjM2LlB5Q29kZWNfS25vd25FbmNvZGluZworICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjM2LlB5Q29kZWNfTG9va3VwRXJyb3IKKyAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyCisgIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zNi5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKKyAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfUmVwbGFjZUVycm9ycworICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVJlYWRlcgorICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zNi5QeUNvZGVjX1N0cmVhbVdyaXRlcgorICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zNi5QeUNvZGVjX1N0cmljdEVycm9ycworICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKKyAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjM2LlB5Q29tcGxleF9Gcm9tRG91YmxlcworICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjM2LlB5Q29tcGxleF9JbWFnQXNEb3VibGUKKyAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zNi5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCisgIFB5Q29tcGxleF9UeXBlPXB5dGhvbjM2LlB5Q29tcGxleF9UeXBlIERBVEEKKyAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zNi5QeURlc2NyX05ld0NsYXNzTWV0aG9kCisgIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjM2LlB5RGVzY3JfTmV3R2V0U2V0CisgIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWVtYmVyCisgIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjM2LlB5RGVzY3JfTmV3TWV0aG9kCisgIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzYuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zNi5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQorICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zNi5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCisgIFB5RGljdEtleXNfVHlwZT1weXRob24zNi5QeURpY3RLZXlzX1R5cGUgREFUQQorICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzYuUHlEaWN0UHJveHlfTmV3CisgIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzYuUHlEaWN0UHJveHlfVHlwZSBEQVRBCisgIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjM2LlB5RGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlEaWN0X0NsZWFyPXB5dGhvbjM2LlB5RGljdF9DbGVhcgorICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzYuUHlEaWN0X0NvbnRhaW5zCisgIFB5RGljdF9Db3B5PXB5dGhvbjM2LlB5RGljdF9Db3B5CisgIFB5RGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtCisgIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9EZWxJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtCisgIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjM2LlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCisgIFB5RGljdF9JdGVtcz1weXRob24zNi5QeURpY3RfSXRlbXMKKyAgUHlEaWN0X0tleXM9cHl0aG9uMzYuUHlEaWN0X0tleXMKKyAgUHlEaWN0X01lcmdlPXB5dGhvbjM2LlB5RGljdF9NZXJnZQorICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zNi5QeURpY3RfTWVyZ2VGcm9tU2VxMgorICBQeURpY3RfTmV3PXB5dGhvbjM2LlB5RGljdF9OZXcKKyAgUHlEaWN0X05leHQ9cHl0aG9uMzYuUHlEaWN0X05leHQKKyAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW0KKyAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X1NldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X1NpemU9cHl0aG9uMzYuUHlEaWN0X1NpemUKKyAgUHlEaWN0X1R5cGU9cHl0aG9uMzYuUHlEaWN0X1R5cGUgREFUQQorICBQeURpY3RfVXBkYXRlPXB5dGhvbjM2LlB5RGljdF9VcGRhdGUKKyAgUHlEaWN0X1ZhbHVlcz1weXRob24zNi5QeURpY3RfVmFsdWVzCisgIFB5RWxsaXBzaXNfVHlwZT1weXRob24zNi5QeUVsbGlwc2lzX1R5cGUgREFUQQorICBQeUVudW1fVHlwZT1weXRob24zNi5QeUVudW1fVHlwZSBEQVRBCisgIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjM2LlB5RXJyX0JhZEFyZ3VtZW50CisgIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zNi5QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjM2LlB5RXJyX0NoZWNrU2lnbmFscworICBQeUVycl9DbGVhcj1weXRob24zNi5QeUVycl9DbGVhcgorICBQeUVycl9EaXNwbGF5PXB5dGhvbjM2LlB5RXJyX0Rpc3BsYXkKKyAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX0ZldGNoPXB5dGhvbjM2LlB5RXJyX0ZldGNoCisgIFB5RXJyX0Zvcm1hdD1weXRob24zNi5QeUVycl9Gb3JtYXQKKyAgUHlFcnJfRm9ybWF0Vj1weXRob24zNi5QeUVycl9Gb3JtYXRWCisgIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zNi5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjM2LlB5RXJyX05ld0V4Y2VwdGlvbgorICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjM2LlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKKyAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzYuUHlFcnJfTm9NZW1vcnkKKyAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjM2LlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgorICBQeUVycl9PY2N1cnJlZD1weXRob24zNi5QeUVycl9PY2N1cnJlZAorICBQeUVycl9QcmludD1weXRob24zNi5QeUVycl9QcmludAorICBQeUVycl9QcmludEV4PXB5dGhvbjM2LlB5RXJyX1ByaW50RXgKKyAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzYuUHlFcnJfUHJvZ3JhbVRleHQKKyAgUHlFcnJfUmVzdG9yZT1weXRob24zNi5QeUVycl9SZXN0b3JlCisgIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zNi5QeUVycl9TZXRGcm9tRXJybm8KKyAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjM2LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQorICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0CisgIFB5RXJyX1NldEludGVycnVwdD1weXRob24zNi5QeUVycl9TZXRJbnRlcnJ1cHQKKyAgUHlFcnJfU2V0Tm9uZT1weXRob24zNi5QeUVycl9TZXROb25lCisgIFB5RXJyX1NldE9iamVjdD1weXRob24zNi5QeUVycl9TZXRPYmplY3QKKyAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjM2LlB5RXJyX1NldFN0cmluZworICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zNi5QeUVycl9TeW50YXhMb2NhdGlvbgorICBQeUVycl9XYXJuRXg9cHl0aG9uMzYuUHlFcnJfV2FybkV4CisgIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zNi5QeUVycl9XYXJuRXhwbGljaXQKKyAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zNi5QeUVycl9XYXJuRm9ybWF0CisgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zNi5QeUVycl9Xcml0ZVVucmFpc2FibGUKKyAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjM2LlB5RXZhbF9BY3F1aXJlTG9jaworICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zNi5QeUV2YWxfQWNxdWlyZVRocmVhZAorICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM2LlB5RXZhbF9DYWxsRnVuY3Rpb24KKyAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzYuUHlFdmFsX0NhbGxNZXRob2QKKyAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzYuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKKyAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjM2LlB5RXZhbF9FdmFsQ29kZQorICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zNi5QeUV2YWxfRXZhbENvZGVFeAorICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWUKKyAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjM2LlB5RXZhbF9FdmFsRnJhbWVFeAorICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzYuUHlFdmFsX0dldEJ1aWx0aW5zCisgIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzYuUHlFdmFsX0dldENhbGxTdGF0cworICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzYuUHlFdmFsX0dldEZyYW1lCisgIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zNi5QeUV2YWxfR2V0RnVuY0Rlc2MKKyAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjM2LlB5RXZhbF9HZXRGdW5jTmFtZQorICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zNi5QeUV2YWxfR2V0R2xvYmFscworICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjM2LlB5RXZhbF9HZXRMb2NhbHMKKyAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjM2LlB5RXZhbF9Jbml0VGhyZWFkcworICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zNi5QeUV2YWxfUmVJbml0VGhyZWFkcworICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzYuUHlFdmFsX1JlbGVhc2VMb2NrCisgIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZWxlYXNlVGhyZWFkCisgIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9SZXN0b3JlVGhyZWFkCisgIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9TYXZlVGhyZWFkCisgIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAorICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKKyAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQorICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zNi5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCisgIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzYuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjM2LlB5RXhjX0J1ZmZlckVycm9yIERBVEEKKyAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCisgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19FT0ZFcnJvcj1weXRob24zNi5QeUV4Y19FT0ZFcnJvciBEQVRBCisgIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzYuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCisgIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zNi5QeUV4Y19FeGNlcHRpb24gREFUQQorICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzYuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKKyAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zNi5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKKyAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zNi5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKKyAgUHlFeGNfSU9FcnJvcj1weXRob24zNi5QeUV4Y19JT0Vycm9yIERBVEEKKyAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzYuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQorICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjM2LlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQorICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjM2LlB5RXhjX0luZGV4RXJyb3IgREFUQQorICBQeUV4Y19LZXlFcnJvcj1weXRob24zNi5QeUV4Y19LZXlFcnJvciBEQVRBCisgIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjM2LlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKKyAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzYuUHlFeGNfTG9va3VwRXJyb3IgREFUQQorICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zNi5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQorICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzYuUHlFeGNfTmFtZUVycm9yIERBVEEKKyAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zNi5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKKyAgUHlFeGNfT1NFcnJvcj1weXRob24zNi5QeUV4Y19PU0Vycm9yIERBVEEKKyAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zNi5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKKyAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zNi5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKKyAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjM2LlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCisgIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjM2LlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjM2LlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCisgIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKKyAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zNi5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKKyAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzYuUHlFeGNfU3ludGF4RXJyb3IgREFUQQorICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQorICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zNi5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCisgIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzYuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCisgIFB5RXhjX1RhYkVycm9yPXB5dGhvbjM2LlB5RXhjX1RhYkVycm9yIERBVEEKKyAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjM2LlB5RXhjX1R5cGVFcnJvciBEQVRBCisgIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjM2LlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKKyAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzYuUHlFeGNfVXNlcldhcm5pbmcgREFUQQorICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjM2LlB5RXhjX1ZhbHVlRXJyb3IgREFUQQorICBQeUV4Y19XYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1dhcm5pbmcgREFUQQorICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zNi5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCisgIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjM2LlB5RXhjZXB0aW9uX0dldENhdXNlCisgIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCisgIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjM2LlB5RXhjZXB0aW9uX1NldENhdXNlCisgIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0Q29udGV4dAorICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCisgIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzYuUHlGaWxlX0Zyb21GZAorICBQeUZpbGVfR2V0TGluZT1weXRob24zNi5QeUZpbGVfR2V0TGluZQorICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzYuUHlGaWxlX1dyaXRlT2JqZWN0CisgIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zNi5QeUZpbGVfV3JpdGVTdHJpbmcKKyAgUHlGaWx0ZXJfVHlwZT1weXRob24zNi5QeUZpbHRlcl9UeXBlIERBVEEKKyAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zNi5QeUZsb2F0X0FzRG91YmxlCisgIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zNi5QeUZsb2F0X0Zyb21Eb3VibGUKKyAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5RmxvYXRfRnJvbVN0cmluZworICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzYuUHlGbG9hdF9HZXRJbmZvCisgIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjM2LlB5RmxvYXRfR2V0TWF4CisgIFB5RmxvYXRfR2V0TWluPXB5dGhvbjM2LlB5RmxvYXRfR2V0TWluCisgIFB5RmxvYXRfVHlwZT1weXRob24zNi5QeUZsb2F0X1R5cGUgREFUQQorICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzYuUHlGcm96ZW5TZXRfTmV3CisgIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzYuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCisgIFB5R0NfQ29sbGVjdD1weXRob24zNi5QeUdDX0NvbGxlY3QKKyAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzYuUHlHSUxTdGF0ZV9FbnN1cmUKKyAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzYuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKKyAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjM2LlB5R0lMU3RhdGVfUmVsZWFzZQorICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzYuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKKyAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0FkZE1vZHVsZQorICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjM2LlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKKyAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zNi5QeUltcG9ydF9DbGVhbnVwCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAorICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCisgIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjM2LlB5SW1wb3J0X0dldEltcG9ydGVyCisgIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjM2LlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCisgIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjM2LlB5SW1wb3J0X0dldE1hZ2ljVGFnCisgIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzYuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAorICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0CisgIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zNi5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKKyAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zNi5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAorICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKKyAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X1JlbG9hZE1vZHVsZQorICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQorICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjM2LlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKKyAgUHlJdGVyX05leHQ9cHl0aG9uMzYuUHlJdGVyX05leHQKKyAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjM2LlB5TGlzdEl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zNi5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQorICBQeUxpc3RfQXBwZW5kPXB5dGhvbjM2LlB5TGlzdF9BcHBlbmQKKyAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzYuUHlMaXN0X0FzVHVwbGUKKyAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzYuUHlMaXN0X0dldEl0ZW0KKyAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjM2LlB5TGlzdF9HZXRTbGljZQorICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjM2LlB5TGlzdF9JbnNlcnQKKyAgUHlMaXN0X05ldz1weXRob24zNi5QeUxpc3RfTmV3CisgIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjM2LlB5TGlzdF9SZXZlcnNlCisgIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjM2LlB5TGlzdF9TZXRJdGVtCisgIFB5TGlzdF9TZXRTbGljZT1weXRob24zNi5QeUxpc3RfU2V0U2xpY2UKKyAgUHlMaXN0X1NpemU9cHl0aG9uMzYuUHlMaXN0X1NpemUKKyAgUHlMaXN0X1NvcnQ9cHl0aG9uMzYuUHlMaXN0X1NvcnQKKyAgUHlMaXN0X1R5cGU9cHl0aG9uMzYuUHlMaXN0X1R5cGUgREFUQQorICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zNi5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zNi5QeUxvbmdfQXNEb3VibGUKKyAgUHlMb25nX0FzTG9uZz1weXRob24zNi5QeUxvbmdfQXNMb25nCisgIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0FzTG9uZ0xvbmcKKyAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zNi5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93CisgIFB5TG9uZ19Bc1NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTaXplX3QKKyAgUHlMb25nX0FzU3NpemVfdD1weXRob24zNi5QeUxvbmdfQXNTc2l6ZV90CisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCisgIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaworICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjM2LlB5TG9uZ19Bc1ZvaWRQdHIKKyAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzYuUHlMb25nX0Zyb21Eb3VibGUKKyAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZworICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzYuUHlMb25nX0Zyb21TaXplX3QKKyAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Gcm9tU3NpemVfdAorICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zNi5QeUxvbmdfRnJvbVN0cmluZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZworICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCisgIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zNi5QeUxvbmdfRnJvbVZvaWRQdHIKKyAgUHlMb25nX0dldEluZm89cHl0aG9uMzYuUHlMb25nX0dldEluZm8KKyAgUHlMb25nX1R5cGU9cHl0aG9uMzYuUHlMb25nX1R5cGUgREFUQQorICBQeU1hcF9UeXBlPXB5dGhvbjM2LlB5TWFwX1R5cGUgREFUQQorICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzYuUHlNYXBwaW5nX0NoZWNrCisgIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCisgIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzYuUHlNYXBwaW5nX0hhc0tleQorICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjM2LlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKKyAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjM2LlB5TWFwcGluZ19JdGVtcworICBQeU1hcHBpbmdfS2V5cz1weXRob24zNi5QeU1hcHBpbmdfS2V5cworICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjM2LlB5TWFwcGluZ19MZW5ndGgKKyAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzYuUHlNYXBwaW5nX1NpemUKKyAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zNi5QeU1hcHBpbmdfVmFsdWVzCisgIFB5TWVtX0ZyZWU9cHl0aG9uMzYuUHlNZW1fRnJlZQorICBQeU1lbV9NYWxsb2M9cHl0aG9uMzYuUHlNZW1fTWFsbG9jCisgIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzYuUHlNZW1fUmVhbGxvYworICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKKyAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKKyAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzYuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQorICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzYuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzYuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKKyAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjM2LlB5TW9kdWxlX0FkZE9iamVjdAorICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zNi5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAorICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjM2LlB5TW9kdWxlX0NyZWF0ZTIKKyAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjM2LlB5TW9kdWxlX0dldERlZgorICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjM2LlB5TW9kdWxlX0dldERpY3QKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RmlsZW5hbWUKKyAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKKyAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zNi5QeU1vZHVsZV9HZXROYW1lCisgIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjM2LlB5TW9kdWxlX0dldFN0YXRlCisgIFB5TW9kdWxlX05ldz1weXRob24zNi5QeU1vZHVsZV9OZXcKKyAgUHlNb2R1bGVfVHlwZT1weXRob24zNi5QeU1vZHVsZV9UeXBlIERBVEEKKyAgUHlNb2R1bGVEZWZfSW5pdD1weXRob24zNi5QeU1vZHVsZURlZl9Jbml0CisgIFB5TW9kdWxlRGVmX1R5cGU9cHl0aG9uMzYuUHlNb2R1bGVEZWZfVHlwZSBEQVRBCisgIFB5TnVsbEltcG9ydGVyX1R5cGU9cHl0aG9uMzYuUHlOdWxsSW1wb3J0ZXJfVHlwZSBEQVRBCisgIFB5TnVtYmVyX0Fic29sdXRlPXB5dGhvbjM2LlB5TnVtYmVyX0Fic29sdXRlCisgIFB5TnVtYmVyX0FkZD1weXRob24zNi5QeU51bWJlcl9BZGQKKyAgUHlOdW1iZXJfQW5kPXB5dGhvbjM2LlB5TnVtYmVyX0FuZAorICBQeU51bWJlcl9Bc1NzaXplX3Q9cHl0aG9uMzYuUHlOdW1iZXJfQXNTc2l6ZV90CisgIFB5TnVtYmVyX0NoZWNrPXB5dGhvbjM2LlB5TnVtYmVyX0NoZWNrCisgIFB5TnVtYmVyX0Rpdm1vZD1weXRob24zNi5QeU51bWJlcl9EaXZtb2QKKyAgUHlOdW1iZXJfRmxvYXQ9cHl0aG9uMzYuUHlOdW1iZXJfRmxvYXQKKyAgUHlOdW1iZXJfRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUFkZD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlQWRkCisgIFB5TnVtYmVyX0luUGxhY2VBbmQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUFuZAorICBQeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VMc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZUxzaGlmdAorICBQeU51bWJlcl9JblBsYWNlTXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5CisgIFB5TnVtYmVyX0luUGxhY2VPcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlT3IKKyAgUHlOdW1iZXJfSW5QbGFjZVBvd2VyPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VQb3dlcgorICBQeU51bWJlcl9JblBsYWNlUmVtYWluZGVyPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJzaGlmdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlUnNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlU3VidHJhY3QKKyAgUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGU9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVRydWVEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZVhvcj1weXRob24zNi5QeU51bWJlcl9JblBsYWNlWG9yCisgIFB5TnVtYmVyX0luZGV4PXB5dGhvbjM2LlB5TnVtYmVyX0luZGV4CisgIFB5TnVtYmVyX0ludmVydD1weXRob24zNi5QeU51bWJlcl9JbnZlcnQKKyAgUHlOdW1iZXJfTG9uZz1weXRob24zNi5QeU51bWJlcl9Mb25nCisgIFB5TnVtYmVyX0xzaGlmdD1weXRob24zNi5QeU51bWJlcl9Mc2hpZnQKKyAgUHlOdW1iZXJfTXVsdGlwbHk9cHl0aG9uMzYuUHlOdW1iZXJfTXVsdGlwbHkKKyAgUHlOdW1iZXJfTmVnYXRpdmU9cHl0aG9uMzYuUHlOdW1iZXJfTmVnYXRpdmUKKyAgUHlOdW1iZXJfT3I9cHl0aG9uMzYuUHlOdW1iZXJfT3IKKyAgUHlOdW1iZXJfUG9zaXRpdmU9cHl0aG9uMzYuUHlOdW1iZXJfUG9zaXRpdmUKKyAgUHlOdW1iZXJfUG93ZXI9cHl0aG9uMzYuUHlOdW1iZXJfUG93ZXIKKyAgUHlOdW1iZXJfUmVtYWluZGVyPXB5dGhvbjM2LlB5TnVtYmVyX1JlbWFpbmRlcgorICBQeU51bWJlcl9Sc2hpZnQ9cHl0aG9uMzYuUHlOdW1iZXJfUnNoaWZ0CisgIFB5TnVtYmVyX1N1YnRyYWN0PXB5dGhvbjM2LlB5TnVtYmVyX1N1YnRyYWN0CisgIFB5TnVtYmVyX1RvQmFzZT1weXRob24zNi5QeU51bWJlcl9Ub0Jhc2UKKyAgUHlOdW1iZXJfVHJ1ZURpdmlkZT1weXRob24zNi5QeU51bWJlcl9UcnVlRGl2aWRlCisgIFB5TnVtYmVyX1hvcj1weXRob24zNi5QeU51bWJlcl9Yb3IKKyAgUHlPU19BZnRlckZvcms9cHl0aG9uMzYuUHlPU19BZnRlckZvcmsKKyAgUHlPU19Jbml0SW50ZXJydXB0cz1weXRob24zNi5QeU9TX0luaXRJbnRlcnJ1cHRzCisgIFB5T1NfSW5wdXRIb29rPXB5dGhvbjM2LlB5T1NfSW5wdXRIb29rIERBVEEKKyAgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZD1weXRob24zNi5QeU9TX0ludGVycnVwdE9jY3VycmVkCisgIFB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXI9cHl0aG9uMzYuUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciBEQVRBCisgIFB5T1NfZG91YmxlX3RvX3N0cmluZz1weXRob24zNi5QeU9TX2RvdWJsZV90b19zdHJpbmcKKyAgUHlPU19nZXRzaWc9cHl0aG9uMzYuUHlPU19nZXRzaWcKKyAgUHlPU19teXN0cmljbXA9cHl0aG9uMzYuUHlPU19teXN0cmljbXAKKyAgUHlPU19teXN0cm5pY21wPXB5dGhvbjM2LlB5T1NfbXlzdHJuaWNtcAorICBQeU9TX3NldHNpZz1weXRob24zNi5QeU9TX3NldHNpZworICBQeU9TX3NucHJpbnRmPXB5dGhvbjM2LlB5T1Nfc25wcmludGYKKyAgUHlPU19zdHJpbmdfdG9fZG91YmxlPXB5dGhvbjM2LlB5T1Nfc3RyaW5nX3RvX2RvdWJsZQorICBQeU9TX3N0cnRvbD1weXRob24zNi5QeU9TX3N0cnRvbAorICBQeU9TX3N0cnRvdWw9cHl0aG9uMzYuUHlPU19zdHJ0b3VsCisgIFB5T1NfdnNucHJpbnRmPXB5dGhvbjM2LlB5T1NfdnNucHJpbnRmCisgIFB5T2JqZWN0X0FTQ0lJPXB5dGhvbjM2LlB5T2JqZWN0X0FTQ0lJCisgIFB5T2JqZWN0X0FzQ2hhckJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc0NoYXJCdWZmZXIKKyAgUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcj1weXRob24zNi5QeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yCisgIFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9Bc1dyaXRlQnVmZmVyCisgIFB5T2JqZWN0X0J5dGVzPXB5dGhvbjM2LlB5T2JqZWN0X0J5dGVzCisgIFB5T2JqZWN0X0NhbGw9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbAorICBQeU9iamVjdF9DYWxsRnVuY3Rpb249cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncworICBQeU9iamVjdF9DYWxsTWV0aG9kPXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxNZXRob2QKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3M9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE9iamVjdD1weXRob24zNi5QeU9iamVjdF9DYWxsT2JqZWN0CisgIFB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcj1weXRob24zNi5QeU9iamVjdF9DaGVja1JlYWRCdWZmZXIKKyAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcz1weXRob24zNi5QeU9iamVjdF9DbGVhcldlYWtSZWZzCisgIFB5T2JqZWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfRGVsSXRlbQorICBQeU9iamVjdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlPYmplY3RfRGlyPXB5dGhvbjM2LlB5T2JqZWN0X0RpcgorICBQeU9iamVjdF9Gb3JtYXQ9cHl0aG9uMzYuUHlPYmplY3RfRm9ybWF0CisgIFB5T2JqZWN0X0ZyZWU9cHl0aG9uMzYuUHlPYmplY3RfRnJlZQorICBQeU9iamVjdF9HQ19EZWw9cHl0aG9uMzYuUHlPYmplY3RfR0NfRGVsCisgIFB5T2JqZWN0X0dDX1RyYWNrPXB5dGhvbjM2LlB5T2JqZWN0X0dDX1RyYWNrCisgIFB5T2JqZWN0X0dDX1VuVHJhY2s9cHl0aG9uMzYuUHlPYmplY3RfR0NfVW5UcmFjaworICBQeU9iamVjdF9HZW5lcmljR2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZW5lcmljR2V0QXR0cgorICBQeU9iamVjdF9HZW5lcmljU2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9HZW5lcmljU2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9HZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0dldEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfR2V0SXRlbQorICBQeU9iamVjdF9HZXRJdGVyPXB5dGhvbjM2LlB5T2JqZWN0X0dldEl0ZXIKKyAgUHlPYmplY3RfSGFzQXR0cj1weXRob24zNi5QeU9iamVjdF9IYXNBdHRyCisgIFB5T2JqZWN0X0hhc0F0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfSGFzQXR0clN0cmluZworICBQeU9iamVjdF9IYXNoPXB5dGhvbjM2LlB5T2JqZWN0X0hhc2gKKyAgUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkPXB5dGhvbjM2LlB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZAorICBQeU9iamVjdF9Jbml0PXB5dGhvbjM2LlB5T2JqZWN0X0luaXQKKyAgUHlPYmplY3RfSW5pdFZhcj1weXRob24zNi5QeU9iamVjdF9Jbml0VmFyCisgIFB5T2JqZWN0X0lzSW5zdGFuY2U9cHl0aG9uMzYuUHlPYmplY3RfSXNJbnN0YW5jZQorICBQeU9iamVjdF9Jc1N1YmNsYXNzPXB5dGhvbjM2LlB5T2JqZWN0X0lzU3ViY2xhc3MKKyAgUHlPYmplY3RfSXNUcnVlPXB5dGhvbjM2LlB5T2JqZWN0X0lzVHJ1ZQorICBQeU9iamVjdF9MZW5ndGg9cHl0aG9uMzYuUHlPYmplY3RfTGVuZ3RoCisgIFB5T2JqZWN0X01hbGxvYz1weXRob24zNi5QeU9iamVjdF9NYWxsb2MKKyAgUHlPYmplY3RfTm90PXB5dGhvbjM2LlB5T2JqZWN0X05vdAorICBQeU9iamVjdF9SZWFsbG9jPXB5dGhvbjM2LlB5T2JqZWN0X1JlYWxsb2MKKyAgUHlPYmplY3RfUmVwcj1weXRob24zNi5QeU9iamVjdF9SZXByCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlPXB5dGhvbjM2LlB5T2JqZWN0X1JpY2hDb21wYXJlCisgIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbD1weXRob24zNi5QeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wKKyAgUHlPYmplY3RfU2VsZkl0ZXI9cHl0aG9uMzYuUHlPYmplY3RfU2VsZkl0ZXIKKyAgUHlPYmplY3RfU2V0QXR0cj1weXRob24zNi5QeU9iamVjdF9TZXRBdHRyCisgIFB5T2JqZWN0X1NldEF0dHJTdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfU2V0QXR0clN0cmluZworICBQeU9iamVjdF9TZXRJdGVtPXB5dGhvbjM2LlB5T2JqZWN0X1NldEl0ZW0KKyAgUHlPYmplY3RfU2l6ZT1weXRob24zNi5QeU9iamVjdF9TaXplCisgIFB5T2JqZWN0X1N0cj1weXRob24zNi5QeU9iamVjdF9TdHIKKyAgUHlPYmplY3RfVHlwZT1weXRob24zNi5QeU9iamVjdF9UeXBlIERBVEEKKyAgUHlPRGljdF9EZWxJdGVtPXB5dGhvbjM2LlB5T0RpY3RfRGVsSXRlbQorICBQeU9EaWN0X05ldz1weXRob24zNi5QeU9EaWN0X05ldworICBQeU9EaWN0X1NldEl0ZW09cHl0aG9uMzYuUHlPRGljdF9TZXRJdGVtCisgIFB5T0RpY3RfVHlwZT1weXRob24zNi5QeU9EaWN0X1R5cGUgREFUQQorICBQeU9EaWN0SXRlbXNfVHlwZT1weXRob24zNi5QeU9EaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVyX1R5cGU9cHl0aG9uMzYuUHlPRGljdEl0ZXJfVHlwZSBEQVRBCisgIFB5T0RpY3RLZXlzX1R5cGU9cHl0aG9uMzYuUHlPRGljdEtleXNfVHlwZSBEQVRBCisgIFB5T0RpY3RWYWx1ZXNfVHlwZT1weXRob24zNi5QeU9EaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zNi5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncworICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjM2LlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKKyAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjM2LlB5UHJvcGVydHlfVHlwZSBEQVRBCisgIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzYuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCisgIFB5UmFuZ2VfVHlwZT1weXRob24zNi5QeVJhbmdlX1R5cGUgREFUQQorICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzYuUHlSZXZlcnNlZF9UeXBlIERBVEEKKyAgUHlTZXFJdGVyX05ldz1weXRob24zNi5QeVNlcUl0ZXJfTmV3CisgIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjM2LlB5U2VxSXRlcl9UeXBlIERBVEEKKyAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zNi5QeVNlcXVlbmNlX0NoZWNrCisgIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ29uY2F0CisgIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db250YWlucworICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjM2LlB5U2VxdWVuY2VfQ291bnQKKyAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsSXRlbQorICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjM2LlB5U2VxdWVuY2VfRGVsU2xpY2UKKyAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjM2LlB5U2VxdWVuY2VfRmFzdAorICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzYuUHlTZXF1ZW5jZV9HZXRTbGljZQorICBQeVNlcXVlbmNlX0luPXB5dGhvbjM2LlB5U2VxdWVuY2VfSW4KKyAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjM2LlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAorICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0CisgIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JbmRleAorICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zNi5QeVNlcXVlbmNlX0xlbmd0aAorICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzYuUHlTZXF1ZW5jZV9MaXN0CisgIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjM2LlB5U2VxdWVuY2VfUmVwZWF0CisgIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNi5QeVNlcXVlbmNlX1NldEl0ZW0KKyAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zNi5QeVNlcXVlbmNlX1NldFNsaWNlCisgIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zNi5QeVNlcXVlbmNlX1NpemUKKyAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zNi5QeVNlcXVlbmNlX1R1cGxlCisgIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjM2LlB5U2V0SXRlcl9UeXBlIERBVEEKKyAgUHlTZXRfQWRkPXB5dGhvbjM2LlB5U2V0X0FkZAorICBQeVNldF9DbGVhcj1weXRob24zNi5QeVNldF9DbGVhcgorICBQeVNldF9Db250YWlucz1weXRob24zNi5QeVNldF9Db250YWlucworICBQeVNldF9EaXNjYXJkPXB5dGhvbjM2LlB5U2V0X0Rpc2NhcmQKKyAgUHlTZXRfTmV3PXB5dGhvbjM2LlB5U2V0X05ldworICBQeVNldF9Qb3A9cHl0aG9uMzYuUHlTZXRfUG9wCisgIFB5U2V0X1NpemU9cHl0aG9uMzYuUHlTZXRfU2l6ZQorICBQeVNldF9UeXBlPXB5dGhvbjM2LlB5U2V0X1R5cGUgREFUQQorICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzYuUHlTbGljZV9HZXRJbmRpY2VzCisgIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjM2LlB5U2xpY2VfR2V0SW5kaWNlc0V4CisgIFB5U2xpY2VfTmV3PXB5dGhvbjM2LlB5U2xpY2VfTmV3CisgIFB5U2xpY2VfVHlwZT1weXRob24zNi5QeVNsaWNlX1R5cGUgREFUQQorICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzYuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKKyAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfRmluZE1vZHVsZQorICBQeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5QeVN0YXRlX0FkZE1vZHVsZQorICBQeVN0YXRlX1JlbW92ZU1vZHVsZT1weXRob24zNi5QeVN0YXRlX1JlbW92ZU1vZHVsZQorICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCisgIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfTmV3CisgIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQorICBQeVN1cGVyX1R5cGU9cHl0aG9uMzYuUHlTdXBlcl9UeXBlIERBVEEKKyAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zNi5QeVN5c19BZGRXYXJuT3B0aW9uCisgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjM2LlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCisgIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zNi5QeVN5c19Gb3JtYXRTdGRlcnIKKyAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjM2LlB5U3lzX0Zvcm1hdFN0ZG91dAorICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzYuUHlTeXNfR2V0T2JqZWN0CisgIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjM2LlB5U3lzX0hhc1dhcm5PcHRpb25zCisgIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzYuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucworICBQeVN5c19TZXRBcmd2PXB5dGhvbjM2LlB5U3lzX1NldEFyZ3YKKyAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjM2LlB5U3lzX1NldEFyZ3ZFeAorICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzYuUHlTeXNfU2V0T2JqZWN0CisgIFB5U3lzX1NldFBhdGg9cHl0aG9uMzYuUHlTeXNfU2V0UGF0aAorICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zNi5QeVN5c19Xcml0ZVN0ZGVycgorICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zNi5QeVN5c19Xcml0ZVN0ZG91dAorICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfQ2xlYXIKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9EZWxldGUKKyAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAorICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zNi5QeVRocmVhZFN0YXRlX0dldAorICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9HZXREaWN0CisgIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfTmV3CisgIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YworICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9Td2FwCisgIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzYuUHlUcmFjZUJhY2tfSGVyZQorICBQeVRyYWNlQmFja19QcmludD1weXRob24zNi5QeVRyYWNlQmFja19QcmludAorICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjM2LlB5VHJhY2VCYWNrX1R5cGUgREFUQQorICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjM2LlB5VHVwbGVJdGVyX1R5cGUgREFUQQorICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzYuUHlUdXBsZV9DbGVhckZyZWVMaXN0CisgIFB5VHVwbGVfR2V0SXRlbT1weXRob24zNi5QeVR1cGxlX0dldEl0ZW0KKyAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zNi5QeVR1cGxlX0dldFNsaWNlCisgIFB5VHVwbGVfTmV3PXB5dGhvbjM2LlB5VHVwbGVfTmV3CisgIFB5VHVwbGVfUGFjaz1weXRob24zNi5QeVR1cGxlX1BhY2sKKyAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjM2LlB5VHVwbGVfU2V0SXRlbQorICBQeVR1cGxlX1NpemU9cHl0aG9uMzYuUHlUdXBsZV9TaXplCisgIFB5VHVwbGVfVHlwZT1weXRob24zNi5QeVR1cGxlX1R5cGUgREFUQQorICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zNi5QeVR5cGVfQ2xlYXJDYWNoZQorICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzYuUHlUeXBlX0Zyb21TcGVjCisgIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcz1weXRob24zNi5QeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKKyAgUHlUeXBlX0dlbmVyaWNBbGxvYz1weXRob24zNi5QeVR5cGVfR2VuZXJpY0FsbG9jCisgIFB5VHlwZV9HZW5lcmljTmV3PXB5dGhvbjM2LlB5VHlwZV9HZW5lcmljTmV3CisgIFB5VHlwZV9HZXRGbGFncz1weXRob24zNi5QeVR5cGVfR2V0RmxhZ3MKKyAgUHlUeXBlX0dldFNsb3Q9cHl0aG9uMzYuUHlUeXBlX0dldFNsb3QKKyAgUHlUeXBlX0lzU3VidHlwZT1weXRob24zNi5QeVR5cGVfSXNTdWJ0eXBlCisgIFB5VHlwZV9Nb2RpZmllZD1weXRob24zNi5QeVR5cGVfTW9kaWZpZWQKKyAgUHlUeXBlX1JlYWR5PXB5dGhvbjM2LlB5VHlwZV9SZWFkeQorICBQeVR5cGVfVHlwZT1weXRob24zNi5QeVR5cGVfVHlwZSBEQVRBCisgIFB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZT1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGUKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuY29kaW5nCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbgorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydAorICBQeVVuaWNvZGVJdGVyX1R5cGU9cHl0aG9uMzYuUHlVbmljb2RlSXRlcl9UeXBlIERBVEEKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZV9BcHBlbmQ9cHl0aG9uMzYuUHlVbmljb2RlX0FwcGVuZAorICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjM2LlB5VW5pY29kZV9BcHBlbmRBbmREZWwKKyAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zNi5QeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZQorICBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nCisgIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcKKyAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjE2U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjMyU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VURjMyU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGOFN0cmluZworICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzV2lkZUNoYXI9cHl0aG9uMzYuUHlVbmljb2RlX0FzV2lkZUNoYXIKKyAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzYuUHlVbmljb2RlX0NsZWFyRnJlZWxpc3QKKyAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzYuUHlVbmljb2RlX0NvbXBhcmUKKyAgUHlVbmljb2RlX0NvbmNhdD1weXRob24zNi5QeVVuaWNvZGVfQ29uY2F0CisgIFB5VW5pY29kZV9Db250YWlucz1weXRob24zNi5QeVVuaWNvZGVfQ29udGFpbnMKKyAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjM2LlB5VW5pY29kZV9Db3VudAorICBQeVVuaWNvZGVfRGVjb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGUKKyAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVBU0NJSQorICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKKyAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlTGF0aW4xCisgIFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMTYKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjMyPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYzMgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGOAorICBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjM2LlB5VW5pY29kZV9GU0NvbnZlcnRlcgorICBQeVVuaWNvZGVfRlNEZWNvZGVyPXB5dGhvbjM2LlB5VW5pY29kZV9GU0RlY29kZXIKKyAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzYuUHlVbmljb2RlX0ZpbmQKKyAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zNi5QeVVuaWNvZGVfRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tRm9ybWF0VgorICBQeVVuaWNvZGVfRnJvbU9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbU9iamVjdAorICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21PcmRpbmFsCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zNi5QeVVuaWNvZGVfRnJvbVdpZGVDaGFyCisgIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfR2V0U2l6ZT1weXRob24zNi5QeVVuaWNvZGVfR2V0U2l6ZQorICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjM2LlB5VW5pY29kZV9Jc0lkZW50aWZpZXIKKyAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzYuUHlVbmljb2RlX0pvaW4KKyAgUHlVbmljb2RlX1BhcnRpdGlvbj1weXRob24zNi5QeVVuaWNvZGVfUGFydGl0aW9uCisgIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjM2LlB5VW5pY29kZV9SUGFydGl0aW9uCisgIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzYuUHlVbmljb2RlX1JTcGxpdAorICBQeVVuaWNvZGVfUmVwbGFjZT1weXRob24zNi5QeVVuaWNvZGVfUmVwbGFjZQorICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjM2LlB5VW5pY29kZV9SZXNpemUKKyAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjM2LlB5VW5pY29kZV9SaWNoQ29tcGFyZQorICBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjM2LlB5VW5pY29kZV9TcGxpdAorICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zNi5QeVVuaWNvZGVfU3BsaXRsaW5lcworICBQeVVuaWNvZGVfVGFpbG1hdGNoPXB5dGhvbjM2LlB5VW5pY29kZV9UYWlsbWF0Y2gKKyAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zNi5QeVVuaWNvZGVfVHJhbnNsYXRlCisgIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjM2LlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCisgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCisgIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY3CisgIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjM2LlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKKyAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjM2LlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAorICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zNi5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQorICBQeVVuaWNvZGVfVHlwZT1weXRob24zNi5QeVVuaWNvZGVfVHlwZSBEQVRBCisgIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCisgIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zNi5QeVdlYWtyZWZfTmV3UHJveHkKKyAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zNi5QeVdlYWtyZWZfTmV3UmVmCisgIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzYuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCisgIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzYuUHlXcmFwcGVyX05ldworICBQeVppcF9UeXBlPXB5dGhvbjM2LlB5WmlwX1R5cGUgREFUQQorICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zNi5QeV9BZGRQZW5kaW5nQ2FsbAorICBQeV9BdEV4aXQ9cHl0aG9uMzYuUHlfQXRFeGl0CisgIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzYuUHlfQnVpbGRWYWx1ZQorICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjM2LlB5X0NvbXBpbGVTdHJpbmcKKyAgUHlfRGVjUmVmPXB5dGhvbjM2LlB5X0RlY1JlZgorICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zNi5QeV9FbmRJbnRlcnByZXRlcgorICBQeV9FeGl0PXB5dGhvbjM2LlB5X0V4aXQKKyAgUHlfRmF0YWxFcnJvcj1weXRob24zNi5QeV9GYXRhbEVycm9yCisgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0ZpbmFsaXplPXB5dGhvbjM2LlB5X0ZpbmFsaXplCisgIFB5X0ZpbmFsaXplRXg9cHl0aG9uMzYuUHlfRmluYWxpemVFeAorICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzYuUHlfR2V0QnVpbGRJbmZvCisgIFB5X0dldENvbXBpbGVyPXB5dGhvbjM2LlB5X0dldENvbXBpbGVyCisgIFB5X0dldENvcHlyaWdodD1weXRob24zNi5QeV9HZXRDb3B5cmlnaHQKKyAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNi5QeV9HZXRFeGVjUHJlZml4CisgIFB5X0dldFBhdGg9cHl0aG9uMzYuUHlfR2V0UGF0aAorICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNi5QeV9HZXRQbGF0Zm9ybQorICBQeV9HZXRQcmVmaXg9cHl0aG9uMzYuUHlfR2V0UHJlZml4CisgIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNi5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKKyAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzYuUHlfR2V0UHJvZ3JhbU5hbWUKKyAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNi5QeV9HZXRQeXRob25Ib21lCisgIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2LlB5X0dldFJlY3Vyc2lvbkxpbWl0CisgIFB5X0dldFZlcnNpb249cHl0aG9uMzYuUHlfR2V0VmVyc2lvbgorICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM2LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9JbmNSZWY9cHl0aG9uMzYuUHlfSW5jUmVmCisgIFB5X0luaXRpYWxpemU9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZQorICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzYuUHlfSW5pdGlhbGl6ZUV4CisgIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzYuUHlfSXNJbml0aWFsaXplZAorICBQeV9NYWluPXB5dGhvbjM2LlB5X01haW4KKyAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNi5QeV9NYWtlUGVuZGluZ0NhbGxzCisgIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM2LlB5X05ld0ludGVycHJldGVyCisgIFB5X1JlcHJFbnRlcj1weXRob24zNi5QeV9SZXByRW50ZXIKKyAgUHlfUmVwckxlYXZlPXB5dGhvbjM2LlB5X1JlcHJMZWF2ZQorICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNi5QeV9TZXRQcm9ncmFtTmFtZQorICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM2LlB5X1NldFB5dGhvbkhvbWUKKyAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzYuUHlfU2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzYuUHlfU3ltdGFibGVTdHJpbmcKKyAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM2LlB5X1ZhQnVpbGRWYWx1ZQorICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM2Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNi5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCisgIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM2Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisgIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX01hbGxvYworICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19OZXcKKyAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfR0NfTmV3VmFyCisgIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX1Jlc2l6ZQorICBfUHlPYmplY3RfTmV3PXB5dGhvbjM2Ll9QeU9iamVjdF9OZXcKKyAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNi5fUHlPYmplY3RfTmV3VmFyCisgIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNi5fUHlTdGF0ZV9BZGRNb2R1bGUKKyAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNi5fUHlUaHJlYWRTdGF0ZV9Jbml0CisgIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM2Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCisgIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQorICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNi5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCisgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM2Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzYuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgorICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNi5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNi5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNi5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCisgIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzYuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAorICBfUHlfRGVhbGxvYz1weXRob24zNi5fUHlfRGVhbGxvYworICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzYuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKKyAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM2Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCisgIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM2Ll9QeV9Ob25lU3RydWN0IERBVEEKKyAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM2Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCisgIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzYuX1B5X1N3YXBwZWRPcCBEQVRBCisgIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM2Ll9QeV9UcnVlU3RydWN0IERBVEEKKyAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCisgIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19WYVBhcnNlX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNi5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzYuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9leGUucmMgYi9QQy9weXRob25fZXhlLnJjCmluZGV4IDkxNzg1YTEuLmFlMGIwMjkgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbl9leGUucmMKKysrIGIvUEMvcHl0aG9uX2V4ZS5yYwpAQCAtNyw3ICs3LDcgQEAKICNpbmNsdWRlIDx3aW51c2VyLmg+CiAxIFJUX01BTklGRVNUICJweXRob24ubWFuaWZlc3QiCiAKLTEgSUNPTiBESVNDQVJEQUJMRSAicHljb24uaWNvIiAKKzEgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHl0aG9uLmljbyIgCiAKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbndfZXhlLnJjIGIvUEMvcHl0aG9ud19leGUucmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhiZjM1OQotLS0gL2Rldi9udWxsCisrKyBiL1BDL3B5dGhvbndfZXhlLnJjCkBAIC0wLDAgKzEsNDkgQEAKKy8vIFJlc291cmNlIHNjcmlwdCBmb3IgUHl0aG9uIGNvbnNvbGUgRVhFcy4KKworI2luY2x1ZGUgInB5dGhvbl92ZXJfcmMuaCIKKworLy8gSW5jbHVkZSB0aGUgbWFuaWZlc3QgZmlsZSB0aGF0IGluZGljYXRlcyB3ZSBzdXBwb3J0IGFsbAorLy8gY3VycmVudCB2ZXJzaW9ucyBvZiBXaW5kb3dzLgorI2luY2x1ZGUgPHdpbnVzZXIuaD4KKzEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKKworMSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob253LmljbyIgCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBWZXJzaW9uCisvLworCitWU19WRVJTSU9OX0lORk8gVkVSU0lPTklORk8KKyBGSUxFVkVSU0lPTiBQWVZFUlNJT042NAorIFBST0RVQ1RWRVJTSU9OIFBZVkVSU0lPTjY0CisgRklMRUZMQUdTTUFTSyAweDNmTAorI2lmZGVmIF9ERUJVRworIEZJTEVGTEFHUyBWU19GRl9ERUJVRworI2Vsc2UKKyBGSUxFRkxBR1MgMHgwTAorI2VuZGlmCisgRklMRU9TIFZPU19fV0lORE9XUzMyCisgRklMRVRZUEUgVkZUX0FQUAorIEZJTEVTVUJUWVBFIDB4MEwKK0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJMT0NLICIwMDAwMDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsIFBZVEhPTl9DT01QQU5ZICJcMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlRGVzY3JpcHRpb24iLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gQXBwbGljYXRpb25cMCIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsIFBZVEhPTl9DT1BZUklHSFQgIlwwIgorICAgICAgICAgICAgVkFMVUUgIk9yaWdpbmFsRmlsZW5hbWUiLCAicHl0aG9udyIgUFlUSE9OX0RFQlVHX0VYVCAiLmV4ZVwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvblwwIgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3RWZXJzaW9uIiwgUFlUSE9OX1ZFUlNJT04KKyAgICAgICAgRU5ECisgICAgRU5ECisgICAgQkxPQ0sgIlZhckZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIFZBTFVFICJUcmFuc2xhdGlvbiIsIDB4MCwgMTIwMAorICAgIEVORAorRU5ECmRpZmYgLS1naXQgYS9QQy90ZXN0cHkucHkgYi9QQy90ZXN0cHkucHkKaW5kZXggNGVmM2Q0Zi4uNzA5ZjM1YyAxMDA2NDQKLS0tIGEvUEMvdGVzdHB5LnB5CisrKyBiL1BDL3Rlc3RweS5weQpAQCAtMjYsNSArMjYsNSBAQAogICAgICAgICAgICAgIyBBZGQgdGhlICJ0ZXN0IiBkaXJlY3RvcnkgdG8gUFlUSE9OUEFUSC4KICAgICAgICAgICAgIHN5cy5wYXRoID0gc3lzLnBhdGggKyBbdGVzdF0KIAotaW1wb3J0IHJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KLXJlZ3J0ZXN0Lm1haW4oKQoraW1wb3J0IGxpYnJlZ3J0ZXN0ICMgU3RhbmRhcmQgUHl0aG9uIHRlc3Rlci4KK2xpYnJlZ3J0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvUEMvd2lucmVnLmMgYi9QQy93aW5yZWcuYwppbmRleCBmMDhkOWE0Li45NTI0ODM4IDEwMDY0NAotLS0gYS9QQy93aW5yZWcuYworKysgYi9QQy93aW5yZWcuYwpAQCAtNTQ5LDcgKzU0OSw3IEBACiAgICAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKERXT1JELCAxKTsKLSAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCl7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICB9CkBAIC01NjMsNiArNTYzLDI0IEBACiAgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JEKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUdfUVdPUkQ6CisgICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgIVB5TG9uZ19DaGVjayh2YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRDY0LCAxKTsKKyAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IHNpemVvZihEV09SRDY0KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCB6ZXJvID0gMDsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZ6ZXJvLCBzaXplb2YoRFdPUkQ2NCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgRFdPUkQ2NCBkID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KCpyZXREYXRhQnVmLCAmZCwgc2l6ZW9mKERXT1JENjQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgogICAgICAgICAgICAgewpAQCAtNjE5LDcgKzYzNyw3IEBACiAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gc2l6ZSArIDI7CiAgICAgICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgICAgIH0KQEAgLTY2NSw3ICs2ODMsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAKICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKGNoYXIsIHZpZXcubGVuKTsKLSAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpeworICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTY5MCw3ICs3MDgsMTMgQEAKICAgICAgICAgICAgIGlmIChyZXREYXRhU2l6ZSA9PSAwKQogICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKDApOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCooaW50ICopcmV0RGF0YUJ1Zik7CisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKihEV09SRCAqKXJldERhdGFCdWYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVHX1FXT1JEOgorICAgICAgICAgICAgaWYgKHJldERhdGFTaXplID09IDApCisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKDApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKERXT1JENjQgKilyZXREYXRhQnVmKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgpAQCAtMTU5OSw3ICsxNjIzLDcgQEAKICAgICAgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOgogICAgICAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLgogICAgICAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLgotICAgICAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuCisgICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfRFdPUkQKICAgICAgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LgogICAgICAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWQKICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsCkBAIC0xNjA5LDYgKzE2MzMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnkgdHdvIG51bGwgY2hhcmFjdGVycy4gIE5vdGUgdGhhdCBQeXRob24gaGFuZGxlcwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyB0ZXJtaW5hdGlvbiBhdXRvbWF0aWNhbGx5LgogICAgICAgICBSRUdfTk9ORSAtLSBObyBkZWZpbmVkIHZhbHVlIHR5cGUuCisgICAgICAgIFJFR19RV09SRCAtLSBBIDY0LWJpdCBudW1iZXIuCisgICAgICAgIFJFR19RV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgNjQtYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfUVdPUkQuCiAgICAgICAgIFJFR19SRVNPVVJDRV9MSVNUIC0tIEEgZGV2aWNlLWRyaXZlciByZXNvdXJjZSBsaXN0LgogICAgICAgICBSRUdfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgogICAgIHZhbHVlOiBvYmplY3QKQEAgLTE2MzEsNyArMTY1Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2lucmVnX1NldFZhbHVlRXhfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqdmFsdWVfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlc2VydmVkLCBEV09SRCB0eXBlLCBQeU9iamVjdCAqdmFsdWUpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD1mMWIxNmNiY2MzZWQ0MTAxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9Yzg4Yzg0MjZiNmMwMGVjNyBpbnB1dD05MDBhOWUzOTkwYmZiMTk2XSovCiB7CiAgICAgQllURSAqZGF0YTsKICAgICBEV09SRCBsZW47CkBAIC0xOTE4LDYgKzE5NDQsOCBAQAogICAgIEFERF9JTlQoUkVHX0RXT1JEKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9MSVRUTEVfRU5ESUFOKTsKICAgICBBRERfSU5UKFJFR19EV09SRF9CSUdfRU5ESUFOKTsKKyAgICBBRERfSU5UKFJFR19RV09SRCk7CisgICAgQUREX0lOVChSRUdfUVdPUkRfTElUVExFX0VORElBTik7CiAgICAgQUREX0lOVChSRUdfTElOSyk7CiAgICAgQUREX0lOVChSRUdfTVVMVElfU1opOwogICAgIEFERF9JTlQoUkVHX1JFU09VUkNFX0xJU1QpOwpkaWZmIC0tZ2l0IGEvUEMvd2luc291bmQuYyBiL1BDL3dpbnNvdW5kLmMKaW5kZXggNmI3OWQyMy4uN2ZlZWJjYiAxMDA2NDQKLS0tIGEvUEMvd2luc291bmQuYworKysgYi9QQy93aW5zb3VuZC5jCkBAIC01Miw3ICs1Miw3IEBACiAiU05EX05PV0FJVCAtIFJldHVybiBpbW1lZGlhdGVseSBpZiB0aGUgc291bmQgZHJpdmVyIGlzIGJ1c3lcbiIgLy8gV2l0aG91dCBhbnkgZXJyb3JzCiAiXG4iCiAiQmVlcChmcmVxdWVuY3ksIGR1cmF0aW9uKSAtIE1ha2UgYSBiZWVwIHRocm91Z2ggdGhlIFBDIHNwZWFrZXIuXG4iCi0iTWVzc2FnZUJlZXAoeCkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CisiTWVzc2FnZUJlZXAodHlwZSkgLSBDYWxsIFdpbmRvd3MgTWVzc2FnZUJlZXAuIik7CiAKIC8qW2NsaW5pYyBpbnB1dF0KIG1vZHVsZSB3aW5zb3VuZApAQCAtNjQsMzIgKzY0LDU4IEBACiAvKltjbGluaWMgaW5wdXRdCiB3aW5zb3VuZC5QbGF5U291bmQKIAotICAgIHNvdW5kOiBQeV9VTklDT0RFKGFjY2VwdD17c3RyLCBOb25lVHlwZX0pCisgICAgc291bmQ6IG9iamVjdAogICAgICAgICBUaGUgc291bmQgdG8gcGxheTsgYSBmaWxlbmFtZSwgZGF0YSwgb3IgTm9uZS4KICAgICBmbGFnczogaW50CiAgICAgICAgIEZsYWcgdmFsdWVzLCBvcmVkIHRvZ2V0aGVyLiAgU2VlIG1vZHVsZSBkb2N1bWVudGF0aW9uLgotICAgIC8KIAogQSB3cmFwcGVyIGFyb3VuZCB0aGUgV2luZG93cyBQbGF5U291bmQgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfVU5JQ09ERSAqc291bmQsIGludCBmbGFncykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1lYzI0YjNhMmI0MzY4Mzc4IGlucHV0PTM0MTFiMWI3YzFmMzZkOTNdKi8KK3dpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VuZCwgaW50IGZsYWdzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ5YTBmZDE2YTM3MmViZWIgaW5wdXQ9YzYzZTFmMmQ4NDhkYTJmMl0qLwogewogICAgIGludCBvazsKKyAgICB3Y2hhcl90ICp3c291bmQ7CisgICAgUHlfYnVmZmVyIHZpZXcgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMgJiYgZmxhZ3MgJiBTTkRfTUVNT1JZKSB7Ci0gICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KLSAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNvdW5kID09IFB5X05vbmUpIHsKKyAgICAgICAgd3NvdW5kID0gTlVMTDsKKyAgICB9IGVsc2UgaWYgKGZsYWdzICYgU05EX01FTU9SWSkgeworICAgICAgICBpZiAoZmxhZ3MgJiBTTkRfQVNZTkMpIHsKKyAgICAgICAgICAgIC8qIFNpZGVzdGVwIHJlZmVyZW5jZSBjb3VudGluZyBoZWFkYWNoZTsgdW5mb3J0dW5hdGVseSB0aGlzIGFsc28KKyAgICAgICAgICAgICAgICBwcmV2ZW50IFNORF9MT09QIGZyb20gbWVtb3J5LiAqLworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHBsYXkgYXN5bmNocm9ub3VzbHkgZnJvbSBtZW1vcnkiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc291bmQsICZ2aWV3LCBQeUJVRl9TSU1QTEUpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgd3NvdW5kID0gKHdjaGFyX3QgKil2aWV3LmJ1ZjsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzb3VuZCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIidzb3VuZCcgbXVzdCBiZSBzdHIgb3IgTm9uZSwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoc291bmQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHdzb3VuZCA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHNvdW5kLCBOVUxMKTsKKyAgICAgICAgaWYgKHdzb3VuZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KIAorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIG9rID0gUGxheVNvdW5kVyhzb3VuZCwgTlVMTCwgZmxhZ3MpOworICAgIG9rID0gUGxheVNvdW5kVyh3c291bmQsIE5VTEwsIGZsYWdzKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmICh2aWV3Lm9iaikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICB9IGVsc2UgaWYgKHNvdW5kICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlNZW1fRnJlZSh3c291bmQpOworICAgIH0KICAgICBpZiAoIW9rKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGYWlsZWQgdG8gcGxheSBzb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArMTMxLDEzIEBACiAgICAgICAgIE11c3QgYmUgaW4gdGhlIHJhbmdlIDM3IHRocm91Z2ggMzIsNzY3LgogICAgIGR1cmF0aW9uOiBpbnQKICAgICAgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuCi0gICAgLwogCiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIEJlZXAgQVBJLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogd2luc291bmRfQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTYyOGE5OWQyZGRmNzM3OThdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1mMzIzODJlNTJlZTliMmZiIGlucHV0PTQwZTM2MGNmYTAwYTVjZjBdKi8KIHsKICAgICBCT09MIG9rOwogCkBAIC0xMzYsOCArMTYxLDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHdpbnNvdW5kLk1lc3NhZ2VCZWVwCiAKLSAgICB4OiBpbnQoY19kZWZhdWx0PSJNQl9PSyIpID0gTUJfT0sKLSAgICAvCisgICAgdHlwZTogaW50KGNfZGVmYXVsdD0iTUJfT0siKSA9IE1CX09LCiAKIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS4KIApAQCAtMTQ1LDEwICsxNjksMjAgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHgpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MWFkODllNGQ4ZDMwYTk1NyBpbnB1dD1hNzc2YzhhODVjOTg1M2Y2XSovCit3aW5zb3VuZF9NZXNzYWdlQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCB0eXBlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTEyMDg3NTQ1NTEyMTEyMWYgaW5wdXQ9ZGIxODVmNzQxYWUyMTQwMV0qLwogewotICAgIE1lc3NhZ2VCZWVwKHgpOworICAgIEJPT0wgb2s7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgb2sgPSBNZXNzYWdlQmVlcCh0eXBlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFvaykgeworICAgICAgICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19SdW50aW1lRXJyb3IsIDApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApkaWZmIC0tZ2l0IGEvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qIGIvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjY2EwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2oKQEAgLTAsMCArMSw3NyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezM4NEMyMjRBLTc0NzQtNDc2RS1BMDFCLTc1MEVBN0RFOTE4Q308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9hc3luY2lvPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYXN5bmNpb21vZHVsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19hc3luY2lvLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGExODZjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fYXN5bmNpby52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9udC5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezI0MjIyNzhlLWVlZWItNDI0MS04MTgyLTQzM2UyYmM1YTdmY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYXN5bmNpb21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2x6bWEudmN4cHJvaiBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagppbmRleCAxZjA2OTZkYS4uN2VjMjY5MiAxMDA2NDQKLS0tIGEvUENidWlsZC9fbHptYS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvagpAQCAtNjEsMTMgKzYxLDExIEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpc3JjL2xpYmx6bWEvYXBpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAnV2luMzInIj4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknID09ICd4NjQnIj4kKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Ci0gICAgICA8SW1hZ2VIYXNTYWZlRXhjZXB0aW9uSGFuZGxlcnM+ZmFsc2U8L0ltYWdlSGFzU2FmZUV4Y2VwdGlvbkhhbmRsZXJzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChPdXREaXIpL2xpYmx6bWEkKFB5RGVidWdFeHQpLmxpYjwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KQEAgLTgxLDggKzc5LDEyIEBACiAgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KICAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CiAgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImxpYmx6bWEudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57MTI3MjgyNTAtMTZlQy00ZGM2LTk0ZDctZTIxZGQ4ODk0N2Y4fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgogICA8L0l0ZW1Hcm91cD4KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzUxY2VkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvagpAQCAtMCwwICsxLDgzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfTwvUHJvamVjdEd1aWQ+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICAgIDxSb290TmFtZXNwYWNlPl90ZXN0Y29uc29sZTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz5mYWxzZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9InB5dGhvbi5wcm9wcyIgLz4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xfdGVzdGNvbnNvbGUuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMyNTEwMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDIyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RtdWx0aXBoYXNlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9wZ28uYmF0IGIvUENidWlsZC9idWlsZF9wZ28uYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzJjMzgyLi4wMDAwMDAwCi0tLSBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQGVjaG8gb2ZmDQotZWNoby5EZXByZWNhdGlvbldhcm5pbmc6DQotZWNoby4gICAgVGhpcyBzY3JpcHQgaXMgZGVwcmVjYXRlZCwgdXNlIGBidWlsZC5iYXQgLS1wZ29gIGluc3RlYWQuDQotZWNoby4NCi0NCi1jYWxsICIlfmRwMGJ1aWxkLmJhdCIgLS1wZ28gJSoNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0IGIvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAppbmRleCAxYzNjZGVlLi5hNTE4NWJlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CisrKyBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKQEAgLTU1LDExICs1NSwxMSBAQAogc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ6aXAyLTEuMC42DQogaWYgTk9UICIlSW5jbHVkZVNTTCUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgIG5hc20tMi4xMS4wNg0KIGlmIE5PVCAiJUluY2x1ZGVTU0wlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICBvcGVuc3NsLTEuMC4yag0KLXNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGUtMy44LjExLjANCi1pZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGNsLWNvcmUtOC42LjQuMg0KLWlmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0ay04LjYuNC4yDQorc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbGl0ZS0zLjE0LjIuMA0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0Y2wtY29yZS04LjYuNi4wDQoraWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRrLTguNi42LjANCiBpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGl4LTguNC4zLjYNCi1zZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHotNS4wLjUNCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHotNS4yLjINCiANCiBmb3IgJSVlIGluICglbGlicmFyaWVzJSkgZG8gKA0KICAgICBpZiBleGlzdCAlJWUgKA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvbGlibHptYS52Y3hwcm9qIGIvUENidWlsZC9saWJsem1hLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzExZjliZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvbGlibHptYS52Y3hwcm9qCkBAIC0wLDAgKzEsMjE2IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTI3MjgyNTAtMTZFQy00REM2LTk0RDctRTIxREQ4ODk0N0Y4fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+bGlibHptYTwvUm9vdE5hbWVzcGFjZT4KKyAgICA8U3VwcG9ydFBHTz50cnVlPC9TdXBwb3J0UEdPPgorICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisKKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5TdGF0aWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO0hBVkVfQ09ORklHX0g7X0RFQlVHO19MSUI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcil3aW5kb3dzOyQobHptYURpcilzcmMvbGlibHptYS9jb21tb247JChsem1hRGlyKXNyYy9jb21tb247JChsem1hRGlyKXNyYy9saWJsem1hL2FwaTskKGx6bWFEaXIpc3JjL2xpYmx6bWEvY2hlY2s7JChsem1hRGlyKXNyYy9saWJsem1hL2RlbHRhOyQobHptYURpcilzcmMvbGlibHptYS9sejskKGx6bWFEaXIpc3JjL2xpYmx6bWEvbHptYTskKGx6bWFEaXIpc3JjL2xpYmx6bWEvcmFuZ2Vjb2RlcjskKGx6bWFEaXIpc3JjL2xpYmx6bWEvc2ltcGxlPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY3B1Y29yZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9waHlzbWVtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY2hlY2suYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl9mYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmM2NF9mYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xzaGEyNTYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYWxvbmVfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhbG9uZV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGF1dG9fZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19idWZmZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfaGVhZGVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfaGVhZGVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfdXRpbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxjb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2RlY29kZXJfbWVtdXNhZ2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfZW5jb2Rlcl9tZW11c2FnZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X3ByZXNldC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2ZsYWdzX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2ZsYWdzX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caGFyZHdhcmVfY3B1dGhyZWFkcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxoYXJkd2FyZV9waHlzbWVtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9oYXNoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXG91dHF1ZXVlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9idWZmZXJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2VuY29kZXJfbXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2NvbW1vbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZmxhZ3NfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fZmxhZ3NfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblx2bGlfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblx2bGlfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblx2bGlfc2l6ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2NvbW1vbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxmYXN0cG9zX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hMl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hMl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX29wdGltdW1fZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX29wdGltdW1fbm9ybWFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXJfcHJlc2V0cy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlcl9tZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccHJpY2VfdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcYXJtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXGFybXRodW1iLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXGlhNjQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVccG93ZXJwYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc3BhcmMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVceDg2LmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cbXl0aHJlYWQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHN5c2RlZnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9jb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9jcHVjb3Jlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2ludGVnZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9waHlzbWVtLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWEuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxiYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcYmNqLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcYmxvY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxjaGVjay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGNvbnRhaW5lci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGRlbHRhLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcZmlsdGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcaGFyZHdhcmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxpbmRleC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGluZGV4X2hhc2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxsem1hMTIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxzdHJlYW1fZmxhZ3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVx2ZXJzaW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcdmxpLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY2hlY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl90YWJsZV9iZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX3RhYmxlX2xlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfdGFibGVfYmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmM2NF90YWJsZV9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyY19tYWNyb3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYWxvbmVfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19idWZmZXJfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfcHJlc2V0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxtZW1jbXBsZW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cb3V0cXVldWUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfcHJpdmF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcZmFzdHBvcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXJfcHJpdmF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlcl9oYXNoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlcl9oYXNoX3RhYmxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxwcmljZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxyYW5nZV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFccmFuZ2Vjb2RlclxyYW5nZV9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfcHJpdmF0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXdpbmRvd3NcY29uZmlnLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9vcGVuc3NsLnByb3BzIGIvUENidWlsZC9vcGVuc3NsLnByb3BzCmluZGV4IGUzNWMwZDkuLjBkZTRlNDMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvb3BlbnNzbC5wcm9wcworKysgYi9QQ2J1aWxkL29wZW5zc2wucHJvcHMKQEAgLTE5LDYgKzE5LDcgQEAKICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9USFJFQURTIiAvPgogICAgIDwhLS0gPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfU1lTTkFNRV9XSU4zMiIgLz4gLS0+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfSUEzMl9TU0UyIiAvPgorICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0JOX0FTTV9HRjJtIiAvPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJTSEExX0FTTSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMjU2X0FTTSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBNTEyX0FTTSIgLz4KQEAgLTM4LDcgKzM5LDYgQEAKICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9OT19EWU5BTUlDX0VOR0lORSIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj4KLSAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fR0YybSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fUEFSVF9XT1JEUyIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fTU9OVCIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iUk1EMTYwX0FTTSIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGNidWlsZC5wcm9qIGIvUENidWlsZC9wY2J1aWxkLnByb2oKaW5kZXggYzMyMDQzNC4uZTBlNmU5MyAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnByb2oKKysrIGIvUENidWlsZC9wY2J1aWxkLnByb2oKQEAgLTUxLDcgKzUxLDcgQEAKICAgICA8IS0tIF9mcmVlemVfaW1wb3J0bGliIC0tPgogICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJfZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIiAvPgogICAgIDwhLS0gRXh0ZW5zaW9uIG1vZHVsZXMgLS0+Ci0gICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlcztfZGVjaW1hbDtfZWxlbWVudHRyZWU7X21zaTtfbXVsdGlwcm9jZXNzaW5nO19vdmVybGFwcGVkO3B5ZXhwYXQ7c2VsZWN0O3VuaWNvZGVkYXRhO3dpbnNvdW5kIiAvPgorICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9Il9hc3luY2lvO19jdHlwZXM7X2RlY2ltYWw7X2VsZW1lbnR0cmVlO19tc2k7X211bHRpcHJvY2Vzc2luZztfb3ZlcmxhcHBlZDtweWV4cGF0O3NlbGVjdDt1bmljb2RlZGF0YTt3aW5zb3VuZCIgLz4KICAgICA8IS0tIEV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgcmVxdWlyZSBleHRlcm5hbCBzb3VyY2VzIC0tPgogICAgIDxFeHRlcm5hbE1vZHVsZXMgSW5jbHVkZT0iX2J6MjtfbHptYTtfc3FsaXRlMyIgLz4KICAgICA8IS0tIF9zc2wgd2lsbCBidWlsZCBfc29ja2V0IGFzIHdlbGwsIHdoaWNoIG1heSBjYXVzZSBjb25mbGljdHMgaW4gcGFyYWxsZWwgYnVpbGRzIC0tPgpAQCAtNjEsNyArNjEsNyBAQAogICAgIDxFeHRlbnNpb25Nb2R1bGVzIEluY2x1ZGU9IkAoRXh0ZXJuYWxNb2R1bGVzLT4nJShJZGVudGl0eSknKSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVFeHRlcm5hbHMpIiAvPgogICAgIDxQcm9qZWN0cyBJbmNsdWRlPSJAKEV4dGVuc2lvbk1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlRXh0ZW5zaW9ucykiIC8+CiAgICAgPCEtLSBUZXN0IG1vZHVsZXMgLS0+Ci0gICAgPFRlc3RNb2R1bGVzIEluY2x1ZGU9Il9jdHlwZXNfdGVzdDtfdGVzdGJ1ZmZlcjtfdGVzdGNhcGk7X3Rlc3RlbWJlZDtfdGVzdGltcG9ydG11bHRpcGxlO190ZXN0bXVsdGlwaGFzZSIgLz4KKyAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlc190ZXN0O190ZXN0YnVmZmVyO190ZXN0Y2FwaTtfdGVzdGVtYmVkO190ZXN0aW1wb3J0bXVsdGlwbGU7X3Rlc3RtdWx0aXBoYXNlO190ZXN0Y29uc29sZSIgLz4KICAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0ieHhsaW1pdGVkIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pJyA9PSAnUmVsZWFzZSciIC8+CiAgICAgPFByb2plY3RzIEluY2x1ZGU9IkAoVGVzdE1vZHVsZXMtPiclKElkZW50aXR5KS52Y3hwcm9qJykiIENvbmRpdGlvbj0iJChJbmNsdWRlVGVzdHMpIj4KICAgICAgIDwhLS0gRGlzYWJsZSBwYXJhbGxlbCBidWlsZCBmb3IgdGVzdCBtb2R1bGVzIC0tPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnNsbiBiL1BDYnVpbGQvcGNidWlsZC5zbG4KaW5kZXggNDJhNGQyYi4uMGU2NTgxMSAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnNsbgorKysgYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCkBAIC05Miw2ICs5MiwxMCBAQAogRW5kUHJvamVjdA0KIFByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlzaGVsbGV4dCIsICJweXNoZWxsZXh0LnZjeHByb2oiLCAiezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0iDQogRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3Rjb25zb2xlIiwgIl90ZXN0Y29uc29sZS52Y3hwcm9qIiwgIntCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9hc3luY2lvIiwgIl9hc3luY2lvLnZjeHByb2oiLCAiezM4NEMyMjRBLTc0NzQtNDc2RS1BMDFCLTc1MEVBN0RFOTE4Q30iDQorRW5kUHJvamVjdA0KIEdsb2JhbA0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbg0KIAkJRGVidWd8V2luMzIgPSBEZWJ1Z3xXaW4zMg0KQEAgLTcwOCw2ICs3MTIsMjIgQEAKIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJCXswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJRW5kR2xvYmFsU2VjdGlvbg0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KIAkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5iYXQgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdAppbmRleCAxYmU3M2U2Li4yZjQxYWU4IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdAorKysgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdApAQCAtMywxMCArMywxMCBAQAogICBpZiAiJTEiIEVRVSAiRGVidWciICgNCiAgICAgc2hpZnQNCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzVfZC5kbGwgZXhpdCAxDQorICAgIGlmIG5vdCBleGlzdCBweXRob24zNl9kLmRsbCBleGl0IDENCiAgICkgRUxTRSAoDQogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlDQotICAgIGlmIG5vdCBleGlzdCBweXRob24zNS5kbGwgZXhpdCAxDQorICAgIGlmIG5vdCBleGlzdCBweXRob24zNi5kbGwgZXhpdCAxDQogICApDQogKQ0KICVIT1NUX1BZVEhPTiUgIiV+ZHAwcHJlcGFyZV9zc2wucHkiICUxDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QucHJvcHMgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwppbmRleCBkMWFjOTk4Li43MDEyMTcwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcworKysgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpAQCAtNyw3ICs3LDYgQEAKICAgICA8T3V0RGlyIENvbmRpdGlvbj0iIUhhc1RyYWlsaW5nU2xhc2goJChPdXREaXIpKSI+JChPdXREaXIpXDwvT3V0RGlyPgogICAgIDxQeV9JbnREaXIgQ29uZGl0aW9uPSInJChQeV9JbnREaXIpJyA9PSAnJyI+JChNU0J1aWxkVGhpc0ZpbGVEaXJlY3Rvcnkpb2JqXDwvUHlfSW50RGlyPgogICAgIDxJbnREaXI+JChQeV9JbnREaXIpXCQoQXJjaE5hbWUpXyQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+Ci0gICAgPEludERpciBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKFB5X0ludERpcilcJChBcmNoTmFtZSlfUEdPXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgogICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoVGFyZ2V0TmFtZSknID09ICcnIj4kKFByb2plY3ROYW1lKTwvVGFyZ2V0TmFtZT4KICAgICA8VGFyZ2V0TmFtZT4kKFRhcmdldE5hbWUpJChQeURlYnVnRXh0KTwvVGFyZ2V0TmFtZT4KICAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KQEAgLTE0OCwxMSArMTQ3LDEzIEBACiAgICAgICAgICAgICAgVGFyZ2V0cz0iQ2xlYW5BbGwiIC8+CiAgIDwvVGFyZ2V0PgogCi0gIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4KLSAgICA8U2lnblRvb2xQYXRoIENvbmRpdGlvbj0iJyQoU2lnblRvb2xQYXRoKScgPT0gJycgb3IgIUV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdDgxKVxiaW5ceDg2XHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290KVxiaW5ceDg2XHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxNaWNyb3NvZnQgU0RLc1xXaW5kb3dzXHY3LjFBQEluc3RhbGxhdGlvbkZvbGRlcilcQmluXHNpZ250b29sLmV4ZTwvU2lnblRvb2xQYXRoPgotICAgIDxfU2lnbkNvbW1hbmQgQ29uZGl0aW9uPSJFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+IiQoU2lnblRvb2xQYXRoKSIgc2lnbiAvcSAvbiAiJChTaWduaW5nQ2VydGlmaWNhdGUpIiAvZmQgc2hhMjU2IC90IGh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltZXN0YW1wLmRsbCAvZCAiUHl0aG9uICQoUHl0aG9uVmVyc2lvbikiPC9fU2lnbkNvbW1hbmQ+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iJyQoU2RrQmluUGF0aCknID09ICcnIG9yICFFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290MTApXGJpblx4ODY8L1Nka0JpblBhdGg+CisgICAgPFNka0JpblBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdDgxKVxiaW5ceDg2PC9TZGtCaW5QYXRoPgorICAgIDxTZGtCaW5QYXRoIENvbmRpdGlvbj0iIUV4aXN0cygkKFNka0JpblBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3QpXGJpblx4ODY8L1Nka0JpblBhdGg+CisgICAgPFNka0JpblBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcTWljcm9zb2Z0IFNES3NcV2luZG93c1x2Ny4xQUBJbnN0YWxsYXRpb25Gb2xkZXIpXEJpblw8L1Nka0JpblBhdGg+CisgICAgPF9TaWduQ29tbWFuZCBDb25kaXRpb249IkV4aXN0cygkKFNka0JpblBhdGgpKSBhbmQgJyQoU2lnbmluZ0NlcnRpZmljYXRlKScgIT0gJycgYW5kICQoU3VwcG9ydFNpZ25pbmcpIj4iJChTZGtCaW5QYXRoKVxzaWdudG9vbC5leGUiIHNpZ24gL3EgL24gIiQoU2lnbmluZ0NlcnRpZmljYXRlKSIgL2ZkIHNoYTI1NiAvdCBodHRwOi8vdGltZXN0YW1wLnZlcmlzaWduLmNvbS9zY3JpcHRzL3RpbWVzdGFtcC5kbGwgL2QgIlB5dGhvbiAkKFB5dGhvblZlcnNpb24pIjwvX1NpZ25Db21tYW5kPgorICAgIDxfTWFrZUNhdENvbW1hbmQgQ29uZGl0aW9uPSJFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiIkKFNka0JpblBhdGgpXG1ha2VjYXQuZXhlIjwvX01ha2VDYXRDb21tYW5kPgogICA8L1Byb3BlcnR5R3JvdXA+CiAgIAogICA8VGFyZ2V0IE5hbWU9Il9TaWduQnVpbGQiIEFmdGVyVGFyZ2V0cz0iQWZ0ZXJCdWlsZCIgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyBhbmQgJChTdXBwb3J0U2lnbmluZykiPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24ucHJvcHMgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwppbmRleCAxNTUzNzMxLi5kZGU5NGY3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi5wcm9wcworKysgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwpAQCAtMjUsNyArMjUsNiBAQAogICAgIC0tPgogICAgIDxBcmNoTmFtZSBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJycgYW5kICQoUGxhdGZvcm0pID09ICd4NjQnIj5hbWQ2NDwvQXJjaE5hbWU+CiAgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyI+d2luMzI8L0FyY2hOYW1lPgotICAgIDxBcmNoTmFtZSBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgb3IgJChDb25maWd1cmF0aW9uKSA9PSAnUEdVcGRhdGUnIj4kKEFyY2hOYW1lKS1wZ288L0FyY2hOYW1lPgogICAgIAogICAgIDwhLS0gUm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHJlcG9zaXRvcnkgLS0+CiAgICAgPFB5U291cmNlUGF0aCBDb25kaXRpb249IickKFB5U291cmNlUGF0aCknID09ICcnIj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKCQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVwuLlwpKTwvUHlTb3VyY2VQYXRoPgpAQCAtNDMsOSArNDIsOSBAQAogICAgIAogICAgIDwhLS0gRGlyZWN0b3JpZXMgb2YgZXh0ZXJuYWwgcHJvamVjdHMuIHRjbHRrIGlzIGhhbmRsZWQgaW4gdGNsdGsucHJvcHMgLS0+CiAgICAgPEV4dGVybmFsc0Rpcj4kKFtTeXN0ZW0uSU8uUGF0aF06OkdldEZ1bGxQYXRoKGAkKFB5U291cmNlUGF0aClleHRlcm5hbHNcYCkpPC9FeHRlcm5hbHNEaXI+Ci0gICAgPHNxbGl0ZTNEaXI+JChFeHRlcm5hbHNEaXIpc3FsaXRlLTMuOC4xMS4wXDwvc3FsaXRlM0Rpcj4KKyAgICA8c3FsaXRlM0Rpcj4kKEV4dGVybmFsc0RpcilzcWxpdGUtMy4xNC4yLjBcPC9zcWxpdGUzRGlyPgogICAgIDxiejJEaXI+JChFeHRlcm5hbHNEaXIpYnppcDItMS4wLjZcPC9iejJEaXI+Ci0gICAgPGx6bWFEaXI+JChFeHRlcm5hbHNEaXIpeHotNS4wLjVcPC9sem1hRGlyPgorICAgIDxsem1hRGlyPiQoRXh0ZXJuYWxzRGlyKXh6LTUuMi4yXDwvbHptYURpcj4KICAgICA8b3BlbnNzbERpcj4kKEV4dGVybmFsc0RpcilvcGVuc3NsLTEuMC4yalw8L29wZW5zc2xEaXI+CiAgICAgPG9wZW5zc2xJbmNsdWRlRGlyPiQob3BlbnNzbERpcilpbmNsdWRlMzI8L29wZW5zc2xJbmNsdWRlRGlyPgogICAgIDxvcGVuc3NsSW5jbHVkZURpciBDb25kaXRpb249IickKEFyY2hOYW1lKScgPT0gJ2FtZDY0JyI+JChvcGVuc3NsRGlyKWluY2x1ZGU2NDwvb3BlbnNzbEluY2x1ZGVEaXI+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCmluZGV4IGU1ZTk2YWQuLjk2M2RhODkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KICAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KICAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgpAQCAtNjksNyArNjksNyBAQAogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO01TX0RMTF9JRD0iJChTeXNXaW5WZXIpIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjt3czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjtzaGx3YXBpLmxpYjt3czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CkBAIC0xMjQsNiArMTI0LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2RpY3RvYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Bjb2RlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zZGVmcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc21vZHVsZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBnZW4uaCIgLz4KQEAgLTIwOSw5ICsyMTAsMTMgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb25kdmFyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx3b3JkY29kZV9oZWxwZXJzLmgiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UybW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UyYl9pbXBsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2Uyc19pbXBsLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jc3YuYyIgLz4KQEAgLTIyMyw2ICsyMjgsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbWF0aC5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcGlja2xlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NoYTNcc2hhM21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3JlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdGF0LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdHJ1Y3QuYyIgLz4KQEAgLTI2NCw2ICsyNzAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHdpbmNvbnNvbGVpby5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiIC8+CkBAIC00MTYsNCArNDIzLDQgQEAKICAgPFRhcmdldCBOYW1lPSJfV2FybkFib3V0VG9vbHNldCIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSAhPSAndjE0MCciPgogICAgIDxXYXJuaW5nIFRleHQ9IlRvb2xzZXQgJChQbGF0Zm9ybVRvb2xzZXQpIGlzIG5vdCB1c2VkIGZvciBvZmZpY2lhbCBidWlsZHMuIFlvdXIgYnVpbGQgbWF5IGhhdmUgZXJyb3JzIG9yIGluY29tcGF0aWJpbGl0aWVzLiIgLz4KICAgPC9UYXJnZXQ+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggODM3YjczNi4uNzYyMjEwZCAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xLDQgKzEsNCBAQAot77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+CiA8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CiAgIDxJdGVtR3JvdXA+CiAgICAgPEZpbHRlciBJbmNsdWRlPSJJbmNsdWRlIj4KQEAgLTE3Nyw2ICsxNzcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvc2RlZnMuaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Ntb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGFyc2V0b2suaCI+CiAgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTQyMCw2ICs0MjMsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZF9udC5oIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cd29yZGNvZGVfaGVscGVycy5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25cY29uZHZhci5oIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00NDAsOSArNDQ2LDIxIEBACiAgICAgPC9DbEluY2x1ZGU+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYXN5bmNpb21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UybW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2UyYl9pbXBsLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9ibGFrZTJcYmxha2Uyc19pbXBsLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTQ3Niw2ICs0OTQsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zaGEzXHNoYTNtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NyZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNTg3LDYgKzYwOCw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x0ZXh0aW8uYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1x3aW5jb25zb2xlaW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC05ODAsNCArMTAwNCw0IEBACiAgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9SZXNvdXJjZUNvbXBpbGU+CiAgIDwvSXRlbUdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qIGIvUENidWlsZC9weXRob253LnZjeHByb2oKaW5kZXggY2FlZDFlOC4uZTQwZjY2YyAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob253LnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob253LnZjeHByb2oKQEAgLTYyLDcgKzYyLDcgQEAKICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KICAgPEl0ZW1Hcm91cD4KLSAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiIC8+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob253X2V4ZS5yYyIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xXaW5NYWluLmMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3JlYWRtZS50eHQgYi9QQ2J1aWxkL3JlYWRtZS50eHQKaW5kZXggMjQ2MjAxMi4uYzA0YmE0ZSAxMDA2NDQKLS0tIGEvUENidWlsZC9yZWFkbWUudHh0CisrKyBiL1BDYnVpbGQvcmVhZG1lLnR4dApAQCAtNDgsNyArNDgsNyBAQAogICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIHdpdGggZXh0cmEgZGVidWdnaW5nIGNhcGFiaWxpdGllcywgZXF1aXZhbGVudA0KICAgICB0byB1c2luZyAuL2NvbmZpZ3VyZSAtLXdpdGgtcHlkZWJ1ZyBvbiBVTklYLiAgQWxsIGJpbmFyaWVzIGJ1aWx0DQogICAgIHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbiBoYXZlICJfZCIgYWRkZWQgdG8gdGhlaXIgbmFtZToNCi0gICAgcHl0aG9uMzVfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uICBCb3RoIHRoZQ0KKyAgICBweXRob24zNl9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQogICAgIGJ1aWxkIGFuZCBydCAocnVuIHRlc3QpIGJhdGNoIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFjY2VwdCBhIC1kDQogICAgIG9wdGlvbiBmb3IgZGVidWcgYnVpbGRzLiAgSWYgeW91IGFyZSBidWlsZGluZyBQeXRob24gdG8gaGVscCB3aXRoDQogICAgIGRldmVsb3BtZW50IG9mIENQeXRob24sIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHVzZSB0aGlzIGNvbmZpZ3VyYXRpb24uDQpAQCAtMjA0LDExICsyMDQsMTEgQEAKICAgICBmdW5jdGlvbmFsaXR5IHRvIF9zc2wgb3IgX2hhc2hsaWIuIFRoZXkgd2lsbCBub3QgY2xlYW4gdXAgdGhlaXIgb3V0cHV0DQogICAgIHdpdGggdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IENsZWFuQWxsIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuDQogX3NxbGl0ZTMNCi0gICAgV3JhcHMgU1FMaXRlIDMuOC4xMS4wLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQorICAgIFdyYXBzIFNRTGl0ZSAzLjE0LjIuMCwgd2hpY2ggaXMgaXRzZWxmIGJ1aWx0IGJ5IHNxbGl0ZTMudmN4cHJvag0KICAgICBIb21lcGFnZToNCiAgICAgICAgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8NCiBfdGtpbnRlcg0KLSAgICBXcmFwcyB2ZXJzaW9uIDguNi40IG9mIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLg0KKyAgICBXcmFwcyB2ZXJzaW9uIDguNi42IG9mIHRoZSBUayB3aW5kb3dpbmcgc3lzdGVtLg0KICAgICBIb21lcGFnZToNCiAgICAgICAgIGh0dHA6Ly93d3cudGNsLnRrLw0KIA0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcnQuYmF0IGIvUENidWlsZC9ydC5iYXQKaW5kZXggMmQ5M2I4MC4uMzU4MjY3MiAxMDA2NDQKLS0tIGEvUENidWlsZC9ydC5iYXQKKysrIGIvUENidWlsZC9ydC5iYXQKQEAgLTQyLDEyICs0MiwxNSBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RhcmdzPSVyZWdydGVzdGFyZ3MlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiANCiBzZXQgZXhlPSVwcmVmaXglcHl0aG9uJXN1ZmZpeCUuZXhlDQotc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAiJXBjYnVpbGQlLi5cbGliXHRlc3RccmVncnRlc3QucHkiICVyZWdydGVzdGFyZ3MlDQorc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAtbSB0ZXN0ICVyZWdydGVzdGFyZ3MlDQogaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlDQogDQogZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQogIiVleGUlIiAiJXBjYnVpbGQlcm1weWMucHkiDQogDQorZWNobyBDbGVhbmluZyBfcHRoIGZpbGVzIC4uLg0KK2lmIGV4aXN0ICVwcmVmaXglKi5fcHRoIGRlbCAlcHJlZml4JSouX3B0aCANCisNCiBlY2hvIG9uDQogJWNtZCUNCiBAZWNobyBvZmYNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvaiBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCmluZGV4IGM4NDFjNWEuLjRmNWIxOTYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCisrKyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCkBAIC02Niw3ICs2Niw3IEBACiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+CiAgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Ci0gICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9FTkFCTEVfRlRTNDtTUUxJVEVfRU5BQkxFX0ZUUzU7U1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCk7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDE8L1dhcm5pbmdMZXZlbD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8UmVzb3VyY2VDb21waWxlPgpAQCAtODYsNCArODYsNCBAQAogICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgogICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgogICA8L0ltcG9ydEdyb3VwPgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvdGNsdGsucHJvcHMgYi9QQ2J1aWxkL3RjbHRrLnByb3BzCmluZGV4IDExZGJmZmIuLjU3YmI5OGEgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvdGNsdGsucHJvcHMKKysrIGIvUENidWlsZC90Y2x0ay5wcm9wcwpAQCAtNCw4ICs0LDggQEAKICAgPFByb3BlcnR5R3JvdXA+CiAgICAgPFRjbE1ham9yVmVyc2lvbj44PC9UY2xNYWpvclZlcnNpb24+CiAgICAgPFRjbE1pbm9yVmVyc2lvbj42PC9UY2xNaW5vclZlcnNpb24+Ci0gICAgPFRjbFBhdGNoTGV2ZWw+NDwvVGNsUGF0Y2hMZXZlbD4KLSAgICA8VGNsUmV2aXNpb24+MjwvVGNsUmV2aXNpb24+CisgICAgPFRjbFBhdGNoTGV2ZWw+NjwvVGNsUGF0Y2hMZXZlbD4KKyAgICA8VGNsUmV2aXNpb24+MDwvVGNsUmV2aXNpb24+CiAgICAgPFRrTWFqb3JWZXJzaW9uPiQoVGNsTWFqb3JWZXJzaW9uKTwvVGtNYWpvclZlcnNpb24+CiAgICAgPFRrTWlub3JWZXJzaW9uPiQoVGNsTWlub3JWZXJzaW9uKTwvVGtNaW5vclZlcnNpb24+CiAgICAgPFRrUGF0Y2hMZXZlbD4kKFRjbFBhdGNoTGV2ZWwpPC9Ua1BhdGNoTGV2ZWw+CkBAIC00Miw0ICs0Miw0IEBACiAgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChQbGF0Zm9ybVRvb2xzZXQpID09ICd2MTEwJyI+JChCdWlsZERpclRvcClfVkMxMTwvQnVpbGREaXJUb3A+CiAgICAgPEJ1aWxkRGlyVG9wIENvbmRpdGlvbj0iJChQbGF0Zm9ybVRvb2xzZXQpID09ICd2MTAwJyI+JChCdWlsZERpclRvcClfVkMxMDwvQnVpbGREaXJUb3A+CiAgIDwvUHJvcGVydHlHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagppbmRleCAwMTQ0ZmE5Li45ZGJkYzc3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCisrKyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKQEAgLTYyLDcgKzYyLDcgQEAKICAgPC9Qcm9wZXJ0eUdyb3VwPgogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpO1B5X0xJTUlURURfQVBJPTB4MDMwNTAwMDA8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPiUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpO1B5X0xJTUlURURfQVBJPTB4MDMwNjAwMDA8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICAgIDxMaW5rPgogICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KZGlmZiAtLWdpdCBhL1BhcnNlci9QeXRob24uYXNkbCBiL1BhcnNlci9QeXRob24uYXNkbAppbmRleCBjZDA4MzJkLi5mNDcwYWQxIDEwMDY0NAotLS0gYS9QYXJzZXIvUHl0aG9uLmFzZGwKKysrIGIvUGFyc2VyL1B5dGhvbi5hc2RsCkBAIC0xLDQgKzEsOCBAQAotLS0gQVNETCdzIHNpeCBidWlsdGluIHR5cGVzIGFyZSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgYnl0ZXMsIG9iamVjdCwgc2luZ2xldG9uCistLSBBU0RMJ3MgNyBidWlsdGluIHR5cGVzIGFyZToKKy0tIGlkZW50aWZpZXIsIGludCwgc3RyaW5nLCBieXRlcywgb2JqZWN0LCBzaW5nbGV0b24sIGNvbnN0YW50CistLQorLS0gc2luZ2xldG9uOiBOb25lLCBUcnVlIG9yIEZhbHNlCistLSBjb25zdGFudCBjYW4gYmUgTm9uZSwgd2hlcmVhcyBOb25lIG1lYW5zICJubyB2YWx1ZSIgZm9yIG9iamVjdC4KIAogbW9kdWxlIFB5dGhvbgogewpAQCAtMjQsNiArMjgsOCBAQAogICAgICAgICAgIHwgRGVsZXRlKGV4cHIqIHRhcmdldHMpCiAgICAgICAgICAgfCBBc3NpZ24oZXhwciogdGFyZ2V0cywgZXhwciB2YWx1ZSkKICAgICAgICAgICB8IEF1Z0Fzc2lnbihleHByIHRhcmdldCwgb3BlcmF0b3Igb3AsIGV4cHIgdmFsdWUpCisgICAgICAgICAgLS0gJ3NpbXBsZScgaW5kaWNhdGVzIHRoYXQgd2UgYW5ub3RhdGUgc2ltcGxlIG5hbWUgd2l0aG91dCBwYXJlbnMKKyAgICAgICAgICB8IEFubkFzc2lnbihleHByIHRhcmdldCwgZXhwciBhbm5vdGF0aW9uLCBleHByPyB2YWx1ZSwgaW50IHNpbXBsZSkKIAogICAgICAgICAgIC0tIHVzZSAnb3JlbHNlJyBiZWNhdXNlIGVsc2UgaXMgYSBrZXl3b3JkIGluIHRhcmdldCBsYW5ndWFnZXMKICAgICAgICAgICB8IEZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCkBAIC03MSw5ICs3NywxMiBAQAogICAgICAgICAgfCBDYWxsKGV4cHIgZnVuYywgZXhwciogYXJncywga2V5d29yZCoga2V5d29yZHMpCiAgICAgICAgICB8IE51bShvYmplY3QgbikgLS0gYSBudW1iZXIgYXMgYSBQeU9iamVjdC4KICAgICAgICAgIHwgU3RyKHN0cmluZyBzKSAtLSBuZWVkIHRvIHNwZWNpZnkgcmF3LCB1bmljb2RlLCBldGM/CisgICAgICAgICB8IEZvcm1hdHRlZFZhbHVlKGV4cHIgdmFsdWUsIGludD8gY29udmVyc2lvbiwgZXhwcj8gZm9ybWF0X3NwZWMpCisgICAgICAgICB8IEpvaW5lZFN0cihleHByKiB2YWx1ZXMpCiAgICAgICAgICB8IEJ5dGVzKGJ5dGVzIHMpCiAgICAgICAgICB8IE5hbWVDb25zdGFudChzaW5nbGV0b24gdmFsdWUpCiAgICAgICAgICB8IEVsbGlwc2lzCisgICAgICAgICB8IENvbnN0YW50KGNvbnN0YW50IHZhbHVlKQogCiAgICAgICAgICAtLSB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY2FuIGFwcGVhciBpbiBhc3NpZ25tZW50IGNvbnRleHQKICAgICAgICAgIHwgQXR0cmlidXRlKGV4cHIgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0IGN0eCkKQEAgLTEwMSw3ICsxMTAsNyBAQAogCiAgICAgY21wb3AgPSBFcSB8IE5vdEVxIHwgTHQgfCBMdEUgfCBHdCB8IEd0RSB8IElzIHwgSXNOb3QgfCBJbiB8IE5vdEluCiAKLSAgICBjb21wcmVoZW5zaW9uID0gKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIGV4cHIqIGlmcykKKyAgICBjb21wcmVoZW5zaW9uID0gKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIGV4cHIqIGlmcywgaW50IGlzX2FzeW5jKQogCiAgICAgZXhjZXB0aGFuZGxlciA9IEV4Y2VwdEhhbmRsZXIoZXhwcj8gdHlwZSwgaWRlbnRpZmllcj8gbmFtZSwgc3RtdCogYm9keSkKICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbC5weSBiL1BhcnNlci9hc2RsLnB5CmluZGV4IDEyMWNkYWIuLjYyZjVjMTkgMTAwNjQ0Ci0tLSBhL1BhcnNlci9hc2RsLnB5CisrKyBiL1BhcnNlci9hc2RsLnB5CkBAIC0zMyw3ICszMyw4IEBACiAjIFNlZSB0aGUgRUJORiBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlIHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljYWwgY29ubmVjdGlvbgogIyBiZXR3ZWVuIHRoZSB2YXJpb3VzIG5vZGUgdHlwZXMuCiAKLWJ1aWx0aW5fdHlwZXMgPSB7J2lkZW50aWZpZXInLCAnc3RyaW5nJywgJ2J5dGVzJywgJ2ludCcsICdvYmplY3QnLCAnc2luZ2xldG9uJ30KK2J1aWx0aW5fdHlwZXMgPSB7J2lkZW50aWZpZXInLCAnc3RyaW5nJywgJ2J5dGVzJywgJ2ludCcsICdvYmplY3QnLCAnc2luZ2xldG9uJywKKyAgICAgICAgICAgICAgICAgJ2NvbnN0YW50J30KIAogY2xhc3MgQVNUOgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsX2MucHkgYi9QYXJzZXIvYXNkbF9jLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggYWM5ZDJiNi4uNzI1ZDczYgotLS0gYS9QYXJzZXIvYXNkbF9jLnB5CisrKyBiL1BhcnNlci9hc2RsX2MucHkKQEAgLTg0MSw2ICs4NDEsNyBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKW87CiB9CiAjZGVmaW5lIGFzdDJvYmpfc2luZ2xldG9uIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfY29uc3RhbnQgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKQEAgLTg3OCw2ICs4NzksMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2NvbnN0YW50KFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAob2JqKSB7CisgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGFyZW5hLCBvYmopIDwgMCkgeworICAgICAgICAgICAgKm91dCA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgfQorICAgICpvdXQgPSBvYmo7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pZGVudGlmaWVyKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikgJiYgb2JqICE9IFB5X05vbmUpIHsKQEAgLTkxMyw3ICs5MjcsNyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBpID0gKGludClQeUxvbmdfQXNMb25nKG9iaik7CisgICAgaSA9IF9QeUxvbmdfQXNJbnQob2JqKTsKICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gMTsKICAgICAqb3V0ID0gaTsKZGlmZiAtLWdpdCBhL1BhcnNlci9ncmFtbWFyLmMgYi9QYXJzZXIvZ3JhbW1hci5jCmluZGV4IGI1OTgyOTQuLjc1ZmQ1YjkgMTAwNjQ0Ci0tLSBhL1BhcnNlci9ncmFtbWFyLmMKKysrIGIvUGFyc2VyL2dyYW1tYXIuYwpAQCAtMjgsNiArMjgsMjMgQEAKICAgICByZXR1cm4gZzsKIH0KIAordm9pZAorZnJlZWdyYW1tYXIoZ3JhbW1hciAqZykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZy0+Z19uZGZhczsgaSsrKSB7CisgICAgICAgIGZyZWUoZy0+Z19kZmFbaV0uZF9uYW1lKTsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBnLT5nX2RmYVtpXS5kX25zdGF0ZXM7IGorKykKKyAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19kZmFbaV0uZF9zdGF0ZVtqXS5zX2FyYyk7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19kZmFbaV0uZF9zdGF0ZSk7CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19kZmEpOworICAgIGZvciAoaSA9IDA7IGkgPCBnLT5nX2xsLmxsX25sYWJlbHM7IGkrKykKKyAgICAgICAgZnJlZShnLT5nX2xsLmxsX2xhYmVsW2ldLmxiX3N0cik7CisgICAgUHlPYmplY3RfRlJFRShnLT5nX2xsLmxsX2xhYmVsKTsKKyAgICBQeU9iamVjdF9GUkVFKGcpOworfQorCiBkZmEgKgogYWRkZGZhKGdyYW1tYXIgKmcsIGludCB0eXBlLCBjb25zdCBjaGFyICpuYW1lKQogewpAQCAtNjMsNyArODAsNyBAQAogICAgIHMtPnNfdXBwZXIgPSAwOwogICAgIHMtPnNfYWNjZWwgPSBOVUxMOwogICAgIHMtPnNfYWNjZXB0ID0gMDsKLSAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChzIC0gZC0+ZF9zdGF0ZSwgUHlfaW50cHRyX3QsIGludCk7CisgICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QocyAtIGQtPmRfc3RhdGUsIGludHB0cl90LCBpbnQpOwogfQogCiB2b2lkCkBAIC0xMDUsNyArMTIyLDcgQEAKICAgICBpZiAoUHlfRGVidWdGbGFnKQogICAgICAgICBwcmludGYoIkxhYmVsIEAgJThwLCAlZDogJXNcbiIsIGxsLCBsbC0+bGxfbmxhYmVscywKICAgICAgICAgICAgICAgIFB5R3JhbW1hcl9MYWJlbFJlcHIobGIpKTsKLSAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChsYiAtIGxsLT5sbF9sYWJlbCwgUHlfaW50cHRyX3QsIGludCk7CisgICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QobGIgLSBsbC0+bGxfbGFiZWwsIGludHB0cl90LCBpbnQpOwogfQogCiAvKiBTYW1lLCBidXQgcmF0aGVyIGRpZXMgdGhhbiBhZGRzICovCkBAIC0xMjIsNyArMTM5LDEzIEBACiAgICAgfQogICAgIGZwcmludGYoc3RkZXJyLCAiTGFiZWwgJWQvJyVzJyBub3QgZm91bmRcbiIsIHR5cGUsIHN0cik7CiAgICAgUHlfRmF0YWxFcnJvcigiZ3JhbW1hci5jOmZpbmRsYWJlbCgpIik7CisKKyAgICAvKiBQeV9GYXRhbEVycm9yKCkgaXMgZGVjbGFyZWQgd2l0aCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKS4KKyAgICAgICBHQ0MgZW1pdHMgYSB3YXJuaW5nIHdpdGhvdXQgInJldHVybiAwOyIgKGNvbXBpbGVyIGJ1ZyEpLCBidXQgQ2xhbmcgaXMKKyAgICAgICBzbWFydGVyIGFuZCBlbWl0cyBhIHdhcm5pbmcgb24gdGhlIHJldHVybi4uLiAqLworI2lmbmRlZiBfX2NsYW5nX18KICAgICByZXR1cm4gMDsgLyogTWFrZSBnY2MgLVdhbGwgaGFwcHkgKi8KKyNlbmRpZgogfQogCiAvKiBGb3J3YXJkICovCmRpZmYgLS1naXQgYS9QYXJzZXIvbXlyZWFkbGluZS5jIGIvUGFyc2VyL215cmVhZGxpbmUuYwppbmRleCAyOGM3YjZkLi45ZjNjMmUzIDEwMDY0NAotLS0gYS9QYXJzZXIvbXlyZWFkbGluZS5jCisrKyBiL1BhcnNlci9teXJlYWRsaW5lLmMKQEAgLTQxLDEwICs0MSw3IEBACiAgICAgICAgICAgICAodm9pZCkoUHlPU19JbnB1dEhvb2spKCk7CiAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgY2xlYXJlcnIoZnApOwotICAgICAgICBpZiAoX1B5VmVyaWZ5X2ZkKGZpbGVubyhmcCkpKQotICAgICAgICAgICAgcCA9IGZnZXRzKGJ1ZiwgbGVuLCBmcCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHAgPSBOVUxMOworICAgICAgICBwID0gZmdldHMoYnVmLCBsZW4sIGZwKTsKICAgICAgICAgaWYgKHAgIT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAwOyAvKiBObyBlcnJvciAqLwogICAgICAgICBlcnIgPSBlcnJubzsKQEAgLTEwMSw2ICs5OCwxMDAgQEAKICAgICAvKiBOT1RSRUFDSEVEICovCiB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCisvKiBSZWFkbGluZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBSZWFkQ29uc29sZVcgKi8KKworZXh0ZXJuIGNoYXIgX2dldF9jb25zb2xlX3R5cGUoSEFORExFIGhhbmRsZSk7CisKK2NoYXIgKgorX1B5T1NfV2luZG93c0NvbnNvbGVSZWFkbGluZShIQU5ETEUgaFN0ZEluKQoreworICAgIHN0YXRpYyB3Y2hhcl90IHdidWZfbG9jYWxbMTAyNCAqIDE2XTsKKyAgICBjb25zdCBEV09SRCBjaHVua19zaXplID0gMTAyNDsKKworICAgIERXT1JEIG5fcmVhZCwgdG90YWxfcmVhZCwgd2J1ZmxlbiwgdThsZW47CisgICAgd2NoYXJfdCAqd2J1ZjsKKyAgICBjaGFyICpidWYgPSBOVUxMOworICAgIGludCBlcnIgPSAwOworCisgICAgbl9yZWFkID0gMDsKKyAgICB0b3RhbF9yZWFkID0gMDsKKyAgICB3YnVmID0gd2J1Zl9sb2NhbDsKKyAgICB3YnVmbGVuID0gc2l6ZW9mKHdidWZfbG9jYWwpIC8gc2l6ZW9mKHdidWZfbG9jYWxbMF0pIC0gMTsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBpZiAoIVJlYWRDb25zb2xlVyhoU3RkSW4sICZ3YnVmW3RvdGFsX3JlYWRdLCB3YnVmbGVuIC0gdG90YWxfcmVhZCwgJm5fcmVhZCwgTlVMTCkpIHsKKyAgICAgICAgICAgIGVyciA9IEdldExhc3RFcnJvcigpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIGlmIChuX3JlYWQgPT0gMCkgeworICAgICAgICAgICAgaW50IHM7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gRVJST1JfT1BFUkFUSU9OX0FCT1JURUQpCisgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgZXJyID0gMDsKKyAgICAgICAgICAgIEhBTkRMRSBoSW50ZXJydXB0RXZlbnQgPSBfUHlPU19TaWdpbnRFdmVudCgpOworICAgICAgICAgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3RFeChoSW50ZXJydXB0RXZlbnQsIDEwMCwgRkFMU0UpCisgICAgICAgICAgICAgICAgICAgID09IFdBSVRfT0JKRUNUXzApIHsKKyAgICAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgICAgICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZChfUHlPU19SZWFkbGluZVRTdGF0ZSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBzID0gUHlFcnJfQ2hlY2tTaWduYWxzKCk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgICAgICAgICBQeUV2YWxfU2F2ZVRocmVhZCgpOworI2VuZGlmCisgICAgICAgICAgICAgICAgaWYgKHMgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHRvdGFsX3JlYWQgKz0gbl9yZWFkOworICAgICAgICBpZiAodG90YWxfcmVhZCA9PSAwIHx8IHdidWZbdG90YWxfcmVhZCAtIDFdID09IEwnXG4nKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB3YnVmbGVuICs9IGNodW5rX3NpemU7CisgICAgICAgIGlmICh3YnVmID09IHdidWZfbG9jYWwpIHsKKyAgICAgICAgICAgIHdidWZbdG90YWxfcmVhZF0gPSAnXDAnOworICAgICAgICAgICAgd2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2Mod2J1ZmxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBpZiAod2J1ZikKKyAgICAgICAgICAgICAgICB3Y3NjcHlfcyh3YnVmLCB3YnVmbGVuLCB3YnVmX2xvY2FsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICB3YnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd1JlYWxsb2Mod2J1Ziwgd2J1ZmxlbiAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgfQorCisgICAgaWYgKHdidWZbMF0gPT0gJ1x4MWEnKSB7CisgICAgICAgIGJ1ZiA9IFB5TWVtX1Jhd01hbGxvYygxKTsKKyAgICAgICAgaWYgKGJ1ZikKKyAgICAgICAgICAgIGJ1ZlswXSA9ICdcMCc7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICB1OGxlbiA9IFdpZGVDaGFyVG9NdWx0aUJ5dGUoQ1BfVVRGOCwgMCwgd2J1ZiwgdG90YWxfcmVhZCwgTlVMTCwgMCwgTlVMTCwgTlVMTCk7CisgICAgYnVmID0gUHlNZW1fUmF3TWFsbG9jKHU4bGVuICsgMSk7CisgICAgdThsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIHRvdGFsX3JlYWQsIGJ1ZiwgdThsZW4sIE5VTEwsIE5VTEwpOworICAgIGJ1Zlt1OGxlbl0gPSAnXDAnOworCitleGl0OgorICAgIGlmICh3YnVmICE9IHdidWZfbG9jYWwpCisgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1Zik7CisKKyAgICBpZiAoZXJyKSB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQoX1B5T1NfUmVhZGxpbmVUU3RhdGUpOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgUHlFdmFsX1NhdmVUaHJlYWQoKTsKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiBidWY7Cit9CisKKyNlbmRpZgorCiAKIC8qIFJlYWRsaW5lIGltcGxlbWVudGF0aW9uIHVzaW5nIGZnZXRzKCkgKi8KIApAQCAtMTEwLDYgKzIwMSw0NiBAQAogICAgIHNpemVfdCBuOwogICAgIGNoYXIgKnAsICpwcjsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoIVB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgJiYgc3lzX3N0ZGluID09IHN0ZGluKSB7CisgICAgICAgIEhBTkRMRSBoU3RkSW4sIGhTdGRFcnI7CisKKyAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgICAgICBoU3RkSW4gPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyhzeXNfc3RkaW4pKTsKKyAgICAgICAgaFN0ZEVyciA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZW5vKHN0ZGVycikpOworICAgICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAorCisgICAgICAgIGlmIChfZ2V0X2NvbnNvbGVfdHlwZShoU3RkSW4pID09ICdyJykgeworICAgICAgICAgICAgZmZsdXNoKHN5c19zdGRvdXQpOworICAgICAgICAgICAgaWYgKHByb21wdCkgeworICAgICAgICAgICAgICAgIGlmIChfZ2V0X2NvbnNvbGVfdHlwZShoU3RkRXJyKSA9PSAndycpIHsKKyAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqd2J1ZjsKKyAgICAgICAgICAgICAgICAgICAgaW50IHdsZW47CisgICAgICAgICAgICAgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHByb21wdCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh3bGVuICYmCisgICAgICAgICAgICAgICAgICAgICAgICAod2J1ZiA9IFB5TWVtX1Jhd01hbGxvYyh3bGVuICogc2l6ZW9mKHdjaGFyX3QpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdsZW4gPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHByb21wdCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdidWYsIHdsZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBuOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZmbHVzaChzdGRlcnIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdsZW4gaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdG9yLCBzbyBzdWJ0cmFjdCAxICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVDb25zb2xlVyhoU3RkRXJyLCB3YnVmLCB3bGVuIC0gMSwgJm4sIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZSh3YnVmKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXMiLCBwcm9tcHQpOworICAgICAgICAgICAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbGVhcmVycihzeXNfc3RkaW4pOworICAgICAgICAgICAgcmV0dXJuIF9QeU9TX1dpbmRvd3NDb25zb2xlUmVhZGxpbmUoaFN0ZEluKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgbiA9IDEwMDsKICAgICBwID0gKGNoYXIgKilQeU1lbV9SYXdNYWxsb2Mobik7CiAgICAgaWYgKHAgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL1BhcnNlci9ub2RlLmMgYi9QYXJzZXIvbm9kZS5jCmluZGV4IDAwMTAzMjQuLjI0MGQyOTAgMTAwNjQ0Ci0tLSBhL1BhcnNlci9ub2RlLmMKKysrIGIvUGFyc2VyL25vZGUuYwpAQCAtOTEsNyArOTEsNyBAQAogICAgIGlmIChjdXJyZW50X2NhcGFjaXR5IDwgMCB8fCByZXF1aXJlZF9jYXBhY2l0eSA8IDApCiAgICAgICAgIHJldHVybiBFX09WRVJGTE9XOwogICAgIGlmIChjdXJyZW50X2NhcGFjaXR5IDwgcmVxdWlyZWRfY2FwYWNpdHkpIHsKLSAgICAgICAgaWYgKChzaXplX3QpcmVxdWlyZWRfY2FwYWNpdHkgPiBQWV9TSVpFX01BWCAvIHNpemVvZihub2RlKSkgeworICAgICAgICBpZiAoKHNpemVfdClyZXF1aXJlZF9jYXBhY2l0eSA+IFNJWkVfTUFYIC8gc2l6ZW9mKG5vZGUpKSB7CiAgICAgICAgICAgICByZXR1cm4gRV9OT01FTTsKICAgICAgICAgfQogICAgICAgICBuID0gbjEtPm5fY2hpbGQ7CmRpZmYgLS1naXQgYS9QYXJzZXIvcGFyc2VyLmMgYi9QYXJzZXIvcGFyc2VyLmMKaW5kZXggNTZlYzUxNC4uNDEwNzJjNCAxMDA2NDQKLS0tIGEvUGFyc2VyL3BhcnNlci5jCisrKyBiL1BhcnNlci9wYXJzZXIuYwpAQCAtMTQwLDIxICsxNDAsMjAgQEAKICAgICBpbnQgbiA9IGctPmdfbGwubGxfbmxhYmVsczsKIAogICAgIGlmICh0eXBlID09IE5BTUUpIHsKLSAgICAgICAgY29uc3QgY2hhciAqcyA9IHN0cjsKICAgICAgICAgbGFiZWwgKmwgPSBnLT5nX2xsLmxsX2xhYmVsOwogICAgICAgICBpbnQgaTsKICAgICAgICAgZm9yIChpID0gbjsgaSA+IDA7IGktLSwgbCsrKSB7CiAgICAgICAgICAgICBpZiAobC0+bGJfdHlwZSAhPSBOQU1FIHx8IGwtPmxiX3N0ciA9PSBOVUxMIHx8Ci0gICAgICAgICAgICAgICAgbC0+bGJfc3RyWzBdICE9IHNbMF0gfHwKLSAgICAgICAgICAgICAgICBzdHJjbXAobC0+bGJfc3RyLCBzKSAhPSAwKQorICAgICAgICAgICAgICAgIGwtPmxiX3N0clswXSAhPSBzdHJbMF0gfHwKKyAgICAgICAgICAgICAgICBzdHJjbXAobC0+bGJfc3RyLCBzdHIpICE9IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAjaWZkZWYgUFlfUEFSU0VSX1JFUVVJUkVTX0ZVVFVSRV9LRVlXT1JECiAjaWYgMAogICAgICAgICAgICAgLyogTGVhdmluZyB0aGlzIGluIGFzIGFuIGV4YW1wbGUgKi8KICAgICAgICAgICAgIGlmICghKHBzLT5wX2ZsYWdzICYgQ09fRlVUVVJFX1dJVEhfU1RBVEVNRU5UKSkgewotICAgICAgICAgICAgICAgIGlmIChzWzBdID09ICd3JyAmJiBzdHJjbXAocywgIndpdGgiKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmIChzdHJbMF0gPT0gJ3cnICYmIHN0cmNtcChzdHIsICJ3aXRoIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG5vdCBhIGtleXdvcmQgeWV0ICovCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc1swXSA9PSAnYScgJiYgc3RyY21wKHMsICJhcyIpID09IDApCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RyWzBdID09ICdhJyAmJiBzdHJjbXAoc3RyLCAiYXMiKSA9PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsgLyogbm90IGEga2V5d29yZCB5ZXQgKi8KICAgICAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNldG9rLmMgYi9QYXJzZXIvcGFyc2V0b2suYwppbmRleCA2MjlkZWU1Li4xZjQ2N2Q2IDEwMDY0NAotLS0gYS9QYXJzZXIvcGFyc2V0b2suYworKysgYi9QYXJzZXIvcGFyc2V0b2suYwpAQCAtMTYxLDEwICsxNjEsMTAgQEAKIAogI2lmZGVmIFBZX1BBUlNFUl9SRVFVSVJFU19GVVRVUkVfS0VZV09SRAogI2lmIDAKLXN0YXRpYyBjaGFyIHdpdGhfbXNnW10gPQorc3RhdGljIGNvbnN0IGNoYXIgd2l0aF9tc2dbXSA9CiAiJXM6JWQ6IFdhcm5pbmc6ICd3aXRoJyB3aWxsIGJlY29tZSBhIHJlc2VydmVkIGtleXdvcmQgaW4gUHl0aG9uIDIuNlxuIjsKIAotc3RhdGljIGNoYXIgYXNfbXNnW10gPQorc3RhdGljIGNvbnN0IGNoYXIgYXNfbXNnW10gPQogIiVzOiVkOiBXYXJuaW5nOiAnYXMnIHdpbGwgYmVjb21lIGEgcmVzZXJ2ZWQga2V5d29yZCBpbiBQeXRob24gMi42XG4iOwogCiBzdGF0aWMgdm9pZApAQCAtMjU1LDcgKzI1NSw3IEBACiAjZW5kaWYKICAgICAgICAgaWYgKGEgPj0gdG9rLT5saW5lX3N0YXJ0KQogICAgICAgICAgICAgY29sX29mZnNldCA9IFB5X1NBRkVfRE9XTkNBU1QoYSAtIHRvay0+bGluZV9zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ludHB0cl90LCBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50cHRyX3QsIGludCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbF9vZmZzZXQgPSAtMTsKIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW4uYyBiL1BhcnNlci9wZ2VuLmMKaW5kZXggZjMwMzFhZS4uNjQ1MWExZCAxMDA2NDQKLS0tIGEvUGFyc2VyL3BnZW4uYworKysgYi9QYXJzZXIvcGdlbi5jCkBAIC0xMTcsNiArMTE3LDE2IEBACiAgICAgcmV0dXJuIGdyOwogfQogCitzdGF0aWMgdm9pZAorZnJlZW5mYWdyYW1tYXIobmZhZ3JhbW1hciAqZ3IpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnci0+Z3Jfbm5mYXM7IGkrKykgeworICAgICAgICBQeU9iamVjdF9GUkVFKGdyLT5ncl9uZmFbaV0tPm5mX3N0YXRlKTsKKyAgICB9CisgICAgUHlPYmplY3RfRlJFRShnci0+Z3JfbmZhKTsKKyAgICBQeU9iamVjdF9GUkVFKGdyKTsKK30KKwogc3RhdGljIG5mYSAqCiBhZGRuZmEobmZhZ3JhbW1hciAqZ3IsIGNoYXIgKm5hbWUpCiB7CkBAIC0xMzQsNyArMTQ0LDcgQEAKIAogI2lmZGVmIFB5X0RFQlVHCiAKLXN0YXRpYyBjaGFyIFJFUU5GTVRbXSA9ICJtZXRhY29tcGlsZTogbGVzcyB0aGFuICVkIGNoaWxkcmVuXG4iOworc3RhdGljIGNvbnN0IGNoYXIgUkVRTkZNVFtdID0gIm1ldGFjb21waWxlOiBsZXNzIHRoYW4gJWQgY2hpbGRyZW5cbiI7CiAKICNkZWZpbmUgUkVRTihpLCBjb3VudCkgZG8geyBcCiAgICAgaWYgKGkgPCBjb3VudCkgeyBcCkBAIC0zNzksNyArMzg5LDcgQEAKIAogLyogRm9yd2FyZCAqLwogc3RhdGljIHZvaWQgcHJpbnRzc2RmYShpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlLCBpbnQgbmJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNoYXIgKm1zZyk7CisgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNvbnN0IGNoYXIgKm1zZyk7CiBzdGF0aWMgdm9pZCBzaW1wbGlmeShpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlKTsKIHN0YXRpYyB2b2lkIGNvbnZlcnQoZGZhICpkLCBpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlKTsKIApAQCAtNDg4LDEzICs0OTgsMTcgQEAKIAogICAgIGNvbnZlcnQoZCwgeHhfbnN0YXRlcywgeHhfc3RhdGUpOwogCi0gICAgLyogWFhYIGNsZWFudXAgKi8KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHh4X25zdGF0ZXM7IGkrKykgeworICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHh4X3N0YXRlW2ldLnNzX25hcmNzOyBqKyspCisgICAgICAgICAgICBkZWxiaXRzZXQoeHhfc3RhdGVbaV0uc3NfYXJjW2pdLnNhX2JpdHNldCk7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoeHhfc3RhdGVbaV0uc3NfYXJjKTsKKyAgICB9CiAgICAgUHlPYmplY3RfRlJFRSh4eF9zdGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBwcmludHNzZGZhKGludCB4eF9uc3RhdGVzLCBzc19zdGF0ZSAqeHhfc3RhdGUsIGludCBuYml0cywKLSAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY2hhciAqbXNnKQorICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjb25zdCBjaGFyICptc2cpCiB7CiAgICAgaW50IGksIGliaXQsIGlhcmM7CiAgICAgc3Nfc3RhdGUgKnl5OwpAQCAtNjY5LDcgKzY4Myw3IEBACiAgICAgZyA9IG1ha2V0YWJsZXMoZ3IpOwogICAgIHRyYW5zbGF0ZWxhYmVscyhnKTsKICAgICBhZGRmaXJzdHNldHMoZyk7Ci0gICAgUHlPYmplY3RfRlJFRShncik7CisgICAgZnJlZW5mYWdyYW1tYXIoZ3IpOwogICAgIHJldHVybiBnOwogfQogCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbm1haW4uYyBiL1BhcnNlci9wZ2VubWFpbi5jCmluZGV4IDBmMDU1ZDYuLmUzODYyNDggMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VubWFpbi5jCisrKyBiL1BhcnNlci9wZ2VubWFpbi5jCkBAIC0yNyw3ICsyNyw3IEBACiBpbnQgUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnOwogCiAvKiBGb3J3YXJkICovCi1ncmFtbWFyICpnZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKTsKK2dyYW1tYXIgKmdldGdyYW1tYXIoY29uc3QgY2hhciAqZmlsZW5hbWUpOwogCiB2b2lkIFB5X0V4aXQoaW50KSBfUHlfTk9fUkVUVVJOOwogCkBAIC0zNyw2ICszNywxNSBAQAogICAgIGV4aXQoc3RzKTsKIH0KIAorI2lmZGVmIFdJVEhfVEhSRUFECisvKiBOZWVkZWQgYnkgb2JtYWxsb2MuYyAqLworaW50IFB5R0lMU3RhdGVfQ2hlY2sodm9pZCkKK3sgcmV0dXJuIDE7IH0KKyNlbmRpZgorCit2b2lkIF9QeU1lbV9EdW1wVHJhY2ViYWNrKGludCBmZCwgY29uc3Qgdm9pZCAqcHRyKQore30KKwogaW50CiBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKQEAgLTcxLDEyICs4MCwxMyBAQAogICAgICAgICBwcmludGYoIldyaXRpbmcgJXMgLi4uXG4iLCBncmFtaW5pdF9oKTsKICAgICBwcmludG5vbnRlcm1pbmFscyhnLCBmcCk7CiAgICAgZmNsb3NlKGZwKTsKKyAgICBmcmVlZ3JhbW1hcihnKTsKICAgICBQeV9FeGl0KDApOwogICAgIHJldHVybiAwOyAvKiBNYWtlIGdjYyAtV2FsbCBoYXBweSAqLwogfQogCiBncmFtbWFyICoKLWdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpCitnZXRncmFtbWFyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogICAgIEZJTEUgKmZwOwogICAgIG5vZGUgKm47CmRpZmYgLS1naXQgYS9QYXJzZXIvdG9rZW5pemVyLmMgYi9QYXJzZXIvdG9rZW5pemVyLmMKaW5kZXggNjEyY2IyMy4uODMxNzI5MyAxMDA2NDQKLS0tIGEvUGFyc2VyL3Rva2VuaXplci5jCisrKyBiL1BhcnNlci90b2tlbml6ZXIuYwpAQCAtMjAyLDggKzIwMiw4IEBACiB9CiAKIAotc3RhdGljIGNoYXIgKgotZ2V0X25vcm1hbF9uYW1lKGNoYXIgKnMpICAgICAgICAvKiBmb3IgdXRmLTggYW5kIGxhdGluLTEgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dldF9ub3JtYWxfbmFtZShjb25zdCBjaGFyICpzKSAgLyogZm9yIHV0Zi04IGFuZCBsYXRpbi0xICovCiB7CiAgICAgY2hhciBidWZbMTNdOwogICAgIGludCBpOwpAQCAtMjY0LDcgKzI2NCw3IEBACiAKICAgICAgICAgICAgIGlmIChiZWdpbiA8IHQpIHsKICAgICAgICAgICAgICAgICBjaGFyKiByID0gbmV3X3N0cmluZyhiZWdpbiwgdCAtIGJlZ2luLCB0b2spOwotICAgICAgICAgICAgICAgIGNoYXIqIHE7CisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcTsKICAgICAgICAgICAgICAgICBpZiAoIXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIHEgPSBnZXRfbm9ybWFsX25hbWUocik7CkBAIC0xMzM1LDYgKzEzMzUsMjggQEAKIH0KICNlbmRpZgogCitzdGF0aWMgaW50Cit0b2tfZGVjaW1hbF90YWlsKHN0cnVjdCB0b2tfc3RhdGUgKnRvaykKK3sKKyAgICBpbnQgYzsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgIGlmIChjICE9ICdfJykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICBpZiAoIWlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gYzsKK30KKwogLyogR2V0IG5leHQgdG9rZW4sIGFmdGVyIHNwYWNlIHN0cmlwcGluZyBldGMuICovCiAKIHN0YXRpYyBpbnQKQEAgLTEzNTUsMTcgKzEzNzcsMjAgQEAKICAgICAgICAgdG9rLT5hdGJvbCA9IDA7CiAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICcgJykKKyAgICAgICAgICAgIGlmIChjID09ICcgJykgewogICAgICAgICAgICAgICAgIGNvbCsrLCBhbHRjb2wrKzsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1x0JykgewogICAgICAgICAgICAgICAgIGNvbCA9IChjb2wvdG9rLT50YWJzaXplICsgMSkgKiB0b2stPnRhYnNpemU7CiAgICAgICAgICAgICAgICAgYWx0Y29sID0gKGFsdGNvbC90b2stPmFsdHRhYnNpemUgKyAxKQogICAgICAgICAgICAgICAgICAgICAqIHRvay0+YWx0dGFic2l6ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwMTQnKSAvKiBDb250cm9sLUwgKGZvcm1mZWVkKSAqLworICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXDAxNCcpICB7LyogQ29udHJvbC1MIChmb3JtZmVlZCkgKi8KICAgICAgICAgICAgICAgICBjb2wgPSBhbHRjb2wgPSAwOyAvKiBGb3IgRW1hY3MgdXNlcnMgKi8KLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgaWYgKGMgPT0gJyMnIHx8IGMgPT0gJ1xuJykgewpAQCAtMTM3NCwxMCArMTM5OSwxMiBAQAogICAgICAgICAgICAgICAgbm90IHBhc3NlZCB0byB0aGUgcGFyc2VyIGFzIE5FV0xJTkUgdG9rZW5zLAogICAgICAgICAgICAgICAgZXhjZXB0ICp0b3RhbGx5KiBlbXB0eSBsaW5lcyBpbiBpbnRlcmFjdGl2ZQogICAgICAgICAgICAgICAgbW9kZSwgd2hpY2ggc2lnbmFsIHRoZSBlbmQgb2YgYSBjb21tYW5kIGdyb3VwLiAqLwotICAgICAgICAgICAgaWYgKGNvbCA9PSAwICYmIGMgPT0gJ1xuJyAmJiB0b2stPnByb21wdCAhPSBOVUxMKQorICAgICAgICAgICAgaWYgKGNvbCA9PSAwICYmIGMgPT0gJ1xuJyAmJiB0b2stPnByb21wdCAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgYmxhbmtsaW5lID0gMDsgLyogTGV0IGl0IHRocm91Z2ggKi8KLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGJsYW5rbGluZSA9IDE7IC8qIElnbm9yZSBjb21wbGV0ZWx5ICovCisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBXZSBjYW4ndCBqdW1wIGJhY2sgcmlnaHQgaGVyZSBzaW5jZSB3ZSBzdGlsbAogICAgICAgICAgICAgICAgbWF5IG5lZWQgdG8gc2tpcCB0byB0aGUgZW5kIG9mIGEgY29tbWVudCAqLwogICAgICAgICB9CkBAIC0xMzg1LDggKzE0MTIsOSBAQAogICAgICAgICAgICAgaWYgKGNvbCA9PSB0b2stPmluZHN0YWNrW3Rvay0+aW5kZW50XSkgewogICAgICAgICAgICAgICAgIC8qIE5vIGNoYW5nZSAqLwogICAgICAgICAgICAgICAgIGlmIChhbHRjb2wgIT0gdG9rLT5hbHRpbmRzdGFja1t0b2stPmluZGVudF0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGNvbCA+IHRvay0+aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7CkBAIC0xMzk3LDggKzE0MjUsOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGFsdGNvbCA8PSB0b2stPmFsdGluZHN0YWNrW3Rvay0+aW5kZW50XSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRvay0+cGVuZGluKys7CiAgICAgICAgICAgICAgICAgdG9rLT5pbmRzdGFja1srK3Rvay0+aW5kZW50XSA9IGNvbDsKQEAgLTE0MTcsOCArMTQ0Niw5IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYWx0Y29sICE9IHRvay0+YWx0aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0NjQsOSArMTQ5NCwxMSBAQAogICAgIHRvay0+c3RhcnQgPSB0b2stPmN1ciAtIDE7CiAKICAgICAvKiBTa2lwIGNvbW1lbnQgKi8KLSAgICBpZiAoYyA9PSAnIycpCi0gICAgICAgIHdoaWxlIChjICE9IEVPRiAmJiBjICE9ICdcbicpCisgICAgaWYgKGMgPT0gJyMnKSB7CisgICAgICAgIHdoaWxlIChjICE9IEVPRiAmJiBjICE9ICdcbicpIHsKICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIC8qIENoZWNrIGZvciBFT0YgYW5kIGVycm9ycyBub3cgKi8KICAgICBpZiAoYyA9PSBFT0YpIHsKQEAgLTE0NzcsMzEgKzE1MDksNDEgQEAKICAgICBub25hc2NpaSA9IDA7CiAgICAgaWYgKGlzX3BvdGVudGlhbF9pZGVudGlmaWVyX3N0YXJ0KGMpKSB7CiAgICAgICAgIC8qIFByb2Nlc3MgYiIiLCByIiIsIHUiIiwgYnIiIiBhbmQgcmIiIiAqLwotICAgICAgICBpbnQgc2F3X2IgPSAwLCBzYXdfciA9IDAsIHNhd191ID0gMDsKKyAgICAgICAgaW50IHNhd19iID0gMCwgc2F3X3IgPSAwLCBzYXdfdSA9IDAsIHNhd19mID0gMDsKICAgICAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgICAgIGlmICghKHNhd19iIHx8IHNhd191KSAmJiAoYyA9PSAnYicgfHwgYyA9PSAnQicpKQorICAgICAgICAgICAgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X2YpICYmIChjID09ICdiJyB8fCBjID09ICdCJykpCiAgICAgICAgICAgICAgICAgc2F3X2IgPSAxOwogICAgICAgICAgICAgLyogU2luY2UgdGhpcyBpcyBhIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHN1cHBvcnQgbGl0ZXJhbCB3ZSBkb24ndAogICAgICAgICAgICAgICAgd2FudCB0byBzdXBwb3J0IGl0IGluIGFyYml0cmFyeSBvcmRlciBsaWtlIGJ5dGUgbGl0ZXJhbHMuICovCi0gICAgICAgICAgICBlbHNlIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19yKSAmJiAoYyA9PSAndScgfHwgYyA9PSAnVScpKQorICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfciB8fCBzYXdfZikKKyAgICAgICAgICAgICAgICAgICAgICYmIChjID09ICd1J3x8IGMgPT0gJ1UnKSkgewogICAgICAgICAgICAgICAgIHNhd191ID0gMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIHVyIiIgYW5kIHJ1IiIgYXJlIG5vdCBzdXBwb3J0ZWQgKi8KLSAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X3IgfHwgc2F3X3UpICYmIChjID09ICdyJyB8fCBjID09ICdSJykpCisgICAgICAgICAgICBlbHNlIGlmICghKHNhd19yIHx8IHNhd191KSAmJiAoYyA9PSAncicgfHwgYyA9PSAnUicpKSB7CiAgICAgICAgICAgICAgICAgc2F3X3IgPSAxOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfZiB8fCBzYXdfYiB8fCBzYXdfdSkgJiYgKGMgPT0gJ2YnIHx8IGMgPT0gJ0YnKSkgeworICAgICAgICAgICAgICAgIHNhd19mID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgaWYgKGMgPT0gJyInIHx8IGMgPT0gJ1wnJykKKyAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcJycpIHsKICAgICAgICAgICAgICAgICBnb3RvIGxldHRlcl9xdW90ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB3aGlsZSAoaXNfcG90ZW50aWFsX2lkZW50aWZpZXJfY2hhcihjKSkgewotICAgICAgICAgICAgaWYgKGMgPj0gMTI4KQorICAgICAgICAgICAgaWYgKGMgPj0gMTI4KSB7CiAgICAgICAgICAgICAgICAgbm9uYXNjaWkgPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICB9CiAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgaWYgKG5vbmFzY2lpICYmICF2ZXJpZnlfaWRlbnRpZmllcih0b2spKQorICAgICAgICBpZiAobm9uYXNjaWkgJiYgIXZlcmlmeV9pZGVudGlmaWVyKHRvaykpIHsKICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXI7CiAKQEAgLTE1MTAsMTAgKzE1NTIsMTIgQEAKICAgICAgICAgICAgIC8qIEN1cnJlbnQgdG9rZW4gbGVuZ3RoIGlzIDUuICovCiAgICAgICAgICAgICBpZiAodG9rLT5hc3luY19kZWYpIHsKICAgICAgICAgICAgICAgICAvKiBXZSdyZSBpbnNpZGUgYW4gJ2FzeW5jIGRlZicgZnVuY3Rpb24uICovCi0gICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXN5bmMiLCA1KSA9PSAwKQorICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVNZTkM7Ci0gICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXdhaXQiLCA1KSA9PSAwKQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhd2FpdCIsIDUpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFXQUlUOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXN5bmMiLCA1KSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgLyogVGhlIGN1cnJlbnQgdG9rZW4gaXMgJ2FzeW5jJy4KQEAgLTE1NDYsOCArMTU5MCw5IEBACiAgICAgLyogTmV3bGluZSAqLwogICAgIGlmIChjID09ICdcbicpIHsKICAgICAgICAgdG9rLT5hdGJvbCA9IDE7Ci0gICAgICAgIGlmIChibGFua2xpbmUgfHwgdG9rLT5sZXZlbCA+IDApCisgICAgICAgIGlmIChibGFua2xpbmUgfHwgdG9rLT5sZXZlbCA+IDApIHsKICAgICAgICAgICAgIGdvdG8gbmV4dGxpbmU7CisgICAgICAgIH0KICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwogICAgICAgICAqcF9lbmQgPSB0b2stPmN1ciAtIDE7IC8qIExlYXZlICdcbicgb3V0IG9mIHRoZSBzdHJpbmcgKi8KICAgICAgICAgdG9rLT5jb250X2xpbmUgPSAwOwpAQCAtMTU3MCwxMSArMTYxNSwxMyBAQAogICAgICAgICAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKICAgICAgICAgICAgICAgICByZXR1cm4gRUxMSVBTSVM7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssICcuJyk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgIH0KICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwpAQCAtMTU4Nyw2NCArMTYzNCw5NCBAQAogICAgICAgICBpZiAoYyA9PSAnMCcpIHsKICAgICAgICAgICAgIC8qIEhleCwgb2N0YWwgb3IgYmluYXJ5IC0tIG1heWJlLiAqLwogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgaWYgKGMgPT0gJy4nKQotICAgICAgICAgICAgICAgIGdvdG8gZnJhY3Rpb247Ci0gICAgICAgICAgICBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpCi0gICAgICAgICAgICAgICAgZ290byBpbWFnaW5hcnk7CiAgICAgICAgICAgICBpZiAoYyA9PSAneCcgfHwgYyA9PSAnWCcpIHsKLQogICAgICAgICAgICAgICAgIC8qIEhleCAqLwogICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzeGRpZ2l0KGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzeGRpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoaXN4ZGlnaXQoYykpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJ18nKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ28nIHx8IGMgPT0gJ08nKSB7CiAgICAgICAgICAgICAgICAgLyogT2N0YWwgKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPCAnMCcgfHwgYyA+PSAnOCcpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKLSAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoJzAnIDw9IGMgJiYgYyA8ICc4Jyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPj0gJzgnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgnMCcgPD0gYyAmJiBjIDwgJzgnKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICdfJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdiJyB8fCBjID09ICdCJykgewogICAgICAgICAgICAgICAgIC8qIEJpbmFyeSAqLwogICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICBpZiAoYyAhPSAnMCcgJiYgYyAhPSAnMScpIHsKLSAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKLSAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnMCcgfHwgYyA9PSAnMScpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSAnMCcgJiYgYyAhPSAnMScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJzAnIHx8IGMgPT0gJzEnKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICdfJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgbm9uemVybyA9IDA7CiAgICAgICAgICAgICAgICAgLyogbWF5YmUgb2xkLXN0eWxlIG9jdGFsOyBjIGlzIGZpcnN0IGNoYXIgb2YgaXQgKi8KICAgICAgICAgICAgICAgICAvKiBpbiBhbnkgY2FzZSwgYWxsb3cgJzAnIGFzIGEgbGl0ZXJhbCAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChjID09ICcwJykKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIHdoaWxlIChpc2RpZ2l0KGMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5vbnplcm8gPSAxOworICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykKKyAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICBub256ZXJvID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgICAgICAgICAgICAgZ290byBmcmFjdGlvbjsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdlJyB8fCBjID09ICdFJykKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBleHBvbmVudDsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdqJyB8fCBjID09ICdKJykKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBpbWFnaW5hcnk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5vbnplcm8pIHsKKyAgICAgICAgICAgICAgICAgICAgLyogT2xkLXN0eWxlIG9jdGFsOiBub3cgZGlzYWxsb3dlZC4gKi8KICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKQEAgLTE2NTMsMTcgKzE3MzAsMjIgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIERlY2ltYWwgKi8KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogQWNjZXB0IGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICovCiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgZnJhY3Rpb246CiAgICAgICAgICAgICAgICAgICAgIC8qIEZyYWN0aW9uICovCi0gICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjID09ICdlJyB8fCBjID09ICdFJykgewogICAgICAgICAgICAgICAgICAgICBpbnQgZTsKQEAgLTE2ODUsMTQgKzE3NjcsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTUJFUjsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIEltYWdpbmFyeSBwYXJ0ICovCiAgICAgICAgIGltYWdpbmFyeToKICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CkBAIC0xNzEyLDIyICsxNzk2LDI3IEBACiAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgaWYgKGMgPT0gcXVvdGUpIHsKICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09IHF1b3RlKQorICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpIHsKICAgICAgICAgICAgICAgICBxdW90ZV9zaXplID0gMzsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGVuZF9xdW90ZV9zaXplID0gMTsgICAgIC8qIGVtcHR5IHN0cmluZyBmb3VuZCAqLworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChjICE9IHF1b3RlKQorICAgICAgICBpZiAoYyAhPSBxdW90ZSkgewogICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICB9CiAKICAgICAgICAgLyogR2V0IHJlc3Qgb2Ygc3RyaW5nICovCiAgICAgICAgIHdoaWxlIChlbmRfcXVvdGVfc2l6ZSAhPSBxdW90ZV9zaXplKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICBpZiAoYyA9PSBFT0YpIHsKLSAgICAgICAgICAgICAgICBpZiAocXVvdGVfc2l6ZSA9PSAzKQorICAgICAgICAgICAgICAgIGlmIChxdW90ZV9zaXplID09IDMpIHsKICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9FT0ZTOwotICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfRU9MUzsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdG9rLT5jdXIgPSB0b2stPmlucDsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgIH0KQEAgLTE3MzYsMTIgKzE4MjUsMTQgQEAKICAgICAgICAgICAgICAgICB0b2stPmN1ciA9IHRvay0+aW5wOwogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpCisgICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkgewogICAgICAgICAgICAgICAgIGVuZF9xdW90ZV9zaXplICs9IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xcJykKLSAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7ICAvKiBza2lwIGVzY2FwZWQgY2hhciAqLworICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9rX25leHRjKHRvayk7ICAvKiBza2lwIGVzY2FwZWQgY2hhciAqLworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xNzcxLDcgKzE4NjIsOCBAQAogICAgICAgICAgICAgaW50IHRva2VuMyA9IFB5VG9rZW5fVGhyZWVDaGFycyhjLCBjMiwgYzMpOwogICAgICAgICAgICAgaWYgKHRva2VuMyAhPSBPUCkgewogICAgICAgICAgICAgICAgIHRva2VuID0gdG9rZW4zOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjMyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jIGIvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYwppbmRleCAwNzkzOTg0Li4xMDY5OTY2IDEwMDY0NAotLS0gYS9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCisrKyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKQEAgLTU4LDcgKzU4LDcgQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3QgZnN0YXQgJyVzJ1xuIiwgaW5wYXRoKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgdGV4dF9zaXplID0gc3RhdHVzLnN0X3NpemU7CisgICAgdGV4dF9zaXplID0gKHNpemVfdClzdGF0dXMuc3Rfc2l6ZTsKICAgICB0ZXh0ID0gKGNoYXIgKikgbWFsbG9jKHRleHRfc2l6ZSArIDEpOwogICAgIGlmICh0ZXh0ID09IE5VTEwpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3QgYWxsb2NhdGUgJWxkIGJ5dGVzXG4iLCAobG9uZykgdGV4dF9zaXplKTsKZGlmZiAtLWdpdCBhL1Byb2dyYW1zL190ZXN0ZW1iZWQuYyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwppbmRleCBhYjZhOGM3Li4zOTY4Mzk5IDEwMDY0NAotLS0gYS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKKysrIGIvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCkBAIC00MSw3ICs0MSw3IEBACiAjZW5kaWYKICAgICBpbnQgaSwgajsKIAotICAgIGZvciAoaT0wOyBpPDM7IGkrKykgeworICAgIGZvciAoaT0wOyBpPDE1OyBpKyspIHsKICAgICAgICAgcHJpbnRmKCItLS0gUGFzcyAlZCAtLS1cbiIsIGkpOwogICAgICAgICBfdGVzdGVtYmVkX1B5X0luaXRpYWxpemUoKTsKICAgICAgICAgbWFpbnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKZGlmZiAtLWdpdCBhL1Byb2dyYW1zL3B5dGhvbi5jIGIvUHJvZ3JhbXMvcHl0aG9uLmMKaW5kZXggMzdiMTBiOC4uYTdhZmJjNyAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvcHl0aG9uLmMKKysrIGIvUHJvZ3JhbXMvcHl0aG9uLmMKQEAgLTI0LDYgKzI0LDkgQEAKICAgICBpbnQgaSwgcmVzOwogICAgIGNoYXIgKm9sZGxvYzsKIAorICAgIC8qIEZvcmNlIG1hbGxvYygpIGFsbG9jYXRvciB0byBib290c3RyYXAgUHl0aG9uICovCisgICAgKHZvaWQpX1B5TWVtX1NldHVwQWxsb2NhdG9ycygibWFsbG9jIik7CisKICAgICBhcmd2X2NvcHkgPSAod2NoYXJfdCAqKilQeU1lbV9SYXdNYWxsb2Moc2l6ZW9mKHdjaGFyX3QqKSAqIChhcmdjKzEpKTsKICAgICBhcmd2X2NvcHkyID0gKHdjaGFyX3QgKiopUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiAoYXJnYysxKSk7CiAgICAgaWYgKCFhcmd2X2NvcHkgfHwgIWFyZ3ZfY29weTIpIHsKQEAgLTYyLDcgKzY1LDEzIEBACiAKICAgICBzZXRsb2NhbGUoTENfQUxMLCBvbGRsb2MpOwogICAgIFB5TWVtX1Jhd0ZyZWUob2xkbG9jKTsKKwogICAgIHJlcyA9IFB5X01haW4oYXJnYywgYXJndl9jb3B5KTsKKworICAgIC8qIEZvcmNlIGFnYWluIG1hbGxvYygpIGFsbG9jYXRvciB0byByZWxlYXNlIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCisgICAgICAgYmVmb3JlIFB5X01haW4oKSAqLworICAgICh2b2lkKV9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoIm1hbGxvYyIpOworCiAgICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewogICAgICAgICBQeU1lbV9SYXdGcmVlKGFyZ3ZfY29weTJbaV0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9QeXRob24tYXN0LmMgYi9QeXRob24vUHl0aG9uLWFzdC5jCmluZGV4IGFkNTNiYTM1Li5lMDYwN2JhIDEwMDY0NAotLS0gYS9QeXRob24vUHl0aG9uLWFzdC5jCisrKyBiL1B5dGhvbi9QeXRob24tYXN0LmMKQEAgLTg2LDYgKzg2LDE1IEBACiAgICAgIm9wIiwKICAgICAidmFsdWUiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkFubkFzc2lnbl90eXBlOworX1B5X0lERU5USUZJRVIoYW5ub3RhdGlvbik7CitfUHlfSURFTlRJRklFUihzaW1wbGUpOworc3RhdGljIGNoYXIgKkFubkFzc2lnbl9maWVsZHNbXT17CisgICAgInRhcmdldCIsCisgICAgImFubm90YXRpb24iLAorICAgICJ2YWx1ZSIsCisgICAgInNpbXBsZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRm9yX3R5cGU7CiBfUHlfSURFTlRJRklFUihpdGVyKTsKIF9QeV9JREVOVElGSUVSKG9yZWxzZSk7CkBAIC0yODUsNiArMjk0LDE4IEBACiBzdGF0aWMgY2hhciAqU3RyX2ZpZWxkc1tdPXsKICAgICAicyIsCiB9Oworc3RhdGljIFB5VHlwZU9iamVjdCAqRm9ybWF0dGVkVmFsdWVfdHlwZTsKK19QeV9JREVOVElGSUVSKGNvbnZlcnNpb24pOworX1B5X0lERU5USUZJRVIoZm9ybWF0X3NwZWMpOworc3RhdGljIGNoYXIgKkZvcm1hdHRlZFZhbHVlX2ZpZWxkc1tdPXsKKyAgICAidmFsdWUiLAorICAgICJjb252ZXJzaW9uIiwKKyAgICAiZm9ybWF0X3NwZWMiLAorfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkpvaW5lZFN0cl90eXBlOworc3RhdGljIGNoYXIgKkpvaW5lZFN0cl9maWVsZHNbXT17CisgICAgInZhbHVlcyIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQnl0ZXNfdHlwZTsKIHN0YXRpYyBjaGFyICpCeXRlc19maWVsZHNbXT17CiAgICAgInMiLApAQCAtMjk0LDYgKzMxNSwxMCBAQAogICAgICJ2YWx1ZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRWxsaXBzaXNfdHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkNvbnN0YW50X3R5cGU7CitzdGF0aWMgY2hhciAqQ29uc3RhbnRfZmllbGRzW109eworICAgICJ2YWx1ZSIsCit9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQXR0cmlidXRlX3R5cGU7CiBfUHlfSURFTlRJRklFUihhdHRyKTsKIF9QeV9JREVOVElGSUVSKGN0eCk7CkBAIC00MTAsMTAgKzQzNSwxMiBAQAogc3RhdGljIFB5VHlwZU9iamVjdCAqY29tcHJlaGVuc2lvbl90eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2NvbXByZWhlbnNpb24odm9pZCopOwogX1B5X0lERU5USUZJRVIoaWZzKTsKK19QeV9JREVOVElGSUVSKGlzX2FzeW5jKTsKIHN0YXRpYyBjaGFyICpjb21wcmVoZW5zaW9uX2ZpZWxkc1tdPXsKICAgICAidGFyZ2V0IiwKICAgICAiaXRlciIsCiAgICAgImlmcyIsCisgICAgImlzX2FzeW5jIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpleGNlcHRoYW5kbGVyX3R5cGU7CiBzdGF0aWMgY2hhciAqZXhjZXB0aGFuZGxlcl9hdHRyaWJ1dGVzW10gPSB7CkBAIC00NTAsNyArNDc3LDYgQEAKICAgICAiY29sX29mZnNldCIsCiB9OwogX1B5X0lERU5USUZJRVIoYXJnKTsKLV9QeV9JREVOVElGSUVSKGFubm90YXRpb24pOwogc3RhdGljIGNoYXIgKmFyZ19maWVsZHNbXT17CiAgICAgImFyZyIsCiAgICAgImFubm90YXRpb24iLApAQCAtNjk3LDYgKzcyMyw3IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCopbzsKIH0KICNkZWZpbmUgYXN0Mm9ial9zaW5nbGV0b24gYXN0Mm9ial9vYmplY3QKKyNkZWZpbmUgYXN0Mm9ial9jb25zdGFudCBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2lkZW50aWZpZXIgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9zdHJpbmcgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9ieXRlcyBhc3Qyb2JqX29iamVjdApAQCAtNzM0LDYgKzc2MSwxOSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfY29uc3RhbnQoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmIChvYmopIHsKKyAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYXJlbmEsIG9iaikgPCAwKSB7CisgICAgICAgICAgICAqb3V0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICB9CisgICAgKm91dCA9IG9iajsKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBvYmoyYXN0X2lkZW50aWZpZXIoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qob2JqKSAmJiBvYmogIT0gUHlfTm9uZSkgewpAQCAtNzY5LDcgKzgwOSw3IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIGkgPSAoaW50KVB5TG9uZ19Bc0xvbmcob2JqKTsKKyAgICBpID0gX1B5TG9uZ19Bc0ludChvYmopOwogICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiAxOwogICAgICpvdXQgPSBpOwpAQCAtODQzLDYgKzg4Myw4IEBACiAgICAgaWYgKCFBc3NpZ25fdHlwZSkgcmV0dXJuIDA7CiAgICAgQXVnQXNzaWduX3R5cGUgPSBtYWtlX3R5cGUoIkF1Z0Fzc2lnbiIsIHN0bXRfdHlwZSwgQXVnQXNzaWduX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFBdWdBc3NpZ25fdHlwZSkgcmV0dXJuIDA7CisgICAgQW5uQXNzaWduX3R5cGUgPSBtYWtlX3R5cGUoIkFubkFzc2lnbiIsIHN0bXRfdHlwZSwgQW5uQXNzaWduX2ZpZWxkcywgNCk7CisgICAgaWYgKCFBbm5Bc3NpZ25fdHlwZSkgcmV0dXJuIDA7CiAgICAgRm9yX3R5cGUgPSBtYWtlX3R5cGUoIkZvciIsIHN0bXRfdHlwZSwgRm9yX2ZpZWxkcywgNCk7CiAgICAgaWYgKCFGb3JfdHlwZSkgcmV0dXJuIDA7CiAgICAgQXN5bmNGb3JfdHlwZSA9IG1ha2VfdHlwZSgiQXN5bmNGb3IiLCBzdG10X3R5cGUsIEFzeW5jRm9yX2ZpZWxkcywgNCk7CkBAIC05MTcsNiArOTU5LDExIEBACiAgICAgaWYgKCFOdW1fdHlwZSkgcmV0dXJuIDA7CiAgICAgU3RyX3R5cGUgPSBtYWtlX3R5cGUoIlN0ciIsIGV4cHJfdHlwZSwgU3RyX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFTdHJfdHlwZSkgcmV0dXJuIDA7CisgICAgRm9ybWF0dGVkVmFsdWVfdHlwZSA9IG1ha2VfdHlwZSgiRm9ybWF0dGVkVmFsdWUiLCBleHByX3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXR0ZWRWYWx1ZV9maWVsZHMsIDMpOworICAgIGlmICghRm9ybWF0dGVkVmFsdWVfdHlwZSkgcmV0dXJuIDA7CisgICAgSm9pbmVkU3RyX3R5cGUgPSBtYWtlX3R5cGUoIkpvaW5lZFN0ciIsIGV4cHJfdHlwZSwgSm9pbmVkU3RyX2ZpZWxkcywgMSk7CisgICAgaWYgKCFKb2luZWRTdHJfdHlwZSkgcmV0dXJuIDA7CiAgICAgQnl0ZXNfdHlwZSA9IG1ha2VfdHlwZSgiQnl0ZXMiLCBleHByX3R5cGUsIEJ5dGVzX2ZpZWxkcywgMSk7CiAgICAgaWYgKCFCeXRlc190eXBlKSByZXR1cm4gMDsKICAgICBOYW1lQ29uc3RhbnRfdHlwZSA9IG1ha2VfdHlwZSgiTmFtZUNvbnN0YW50IiwgZXhwcl90eXBlLApAQCAtOTI0LDYgKzk3MSw4IEBACiAgICAgaWYgKCFOYW1lQ29uc3RhbnRfdHlwZSkgcmV0dXJuIDA7CiAgICAgRWxsaXBzaXNfdHlwZSA9IG1ha2VfdHlwZSgiRWxsaXBzaXMiLCBleHByX3R5cGUsIE5VTEwsIDApOwogICAgIGlmICghRWxsaXBzaXNfdHlwZSkgcmV0dXJuIDA7CisgICAgQ29uc3RhbnRfdHlwZSA9IG1ha2VfdHlwZSgiQ29uc3RhbnQiLCBleHByX3R5cGUsIENvbnN0YW50X2ZpZWxkcywgMSk7CisgICAgaWYgKCFDb25zdGFudF90eXBlKSByZXR1cm4gMDsKICAgICBBdHRyaWJ1dGVfdHlwZSA9IG1ha2VfdHlwZSgiQXR0cmlidXRlIiwgZXhwcl90eXBlLCBBdHRyaWJ1dGVfZmllbGRzLCAzKTsKICAgICBpZiAoIUF0dHJpYnV0ZV90eXBlKSByZXR1cm4gMDsKICAgICBTdWJzY3JpcHRfdHlwZSA9IG1ha2VfdHlwZSgiU3Vic2NyaXB0IiwgZXhwcl90eXBlLCBTdWJzY3JpcHRfZmllbGRzLCAzKTsKQEAgLTExMDEsNyArMTE1MCw3IEBACiAgICAgTm90SW5fc2luZ2xldG9uID0gUHlUeXBlX0dlbmVyaWNOZXcoTm90SW5fdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKCFOb3RJbl9zaW5nbGV0b24pIHJldHVybiAwOwogICAgIGNvbXByZWhlbnNpb25fdHlwZSA9IG1ha2VfdHlwZSgiY29tcHJlaGVuc2lvbiIsICZBU1RfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbl9maWVsZHMsIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX2ZpZWxkcywgNCk7CiAgICAgaWYgKCFjb21wcmVoZW5zaW9uX3R5cGUpIHJldHVybiAwOwogICAgIGlmICghYWRkX2F0dHJpYnV0ZXMoY29tcHJlaGVuc2lvbl90eXBlLCBOVUxMLCAwKSkgcmV0dXJuIDA7CiAgICAgZXhjZXB0aGFuZGxlcl90eXBlID0gbWFrZV90eXBlKCJleGNlcHRoYW5kbGVyIiwgJkFTVF90eXBlLCBOVUxMLCAwKTsKQEAgLTEzNzAsNiArMTQxOSwzNCBAQAogfQogCiBzdG10X3R5CitBbm5Bc3NpZ24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgYW5ub3RhdGlvbiwgZXhwcl90eSB2YWx1ZSwgaW50IHNpbXBsZSwgaW50CisgICAgICAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgc3RtdF90eSBwOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHRhcmdldCBpcyByZXF1aXJlZCBmb3IgQW5uQXNzaWduIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIWFubm90YXRpb24pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgYW5ub3RhdGlvbiBpcyByZXF1aXJlZCBmb3IgQW5uQXNzaWduIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKHN0bXRfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEFubkFzc2lnbl9raW5kOworICAgIHAtPnYuQW5uQXNzaWduLnRhcmdldCA9IHRhcmdldDsKKyAgICBwLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uID0gYW5ub3RhdGlvbjsKKyAgICBwLT52LkFubkFzc2lnbi52YWx1ZSA9IHZhbHVlOworICAgIHAtPnYuQW5uQXNzaWduLnNpbXBsZSA9IHNpbXBsZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK3N0bXRfdHkKIEZvcihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogb3JlbHNlLCBpbnQKICAgICBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKQEAgLTIwNjMsNiArMjE0MCw0MiBAQAogfQogCiBleHByX3R5CitGb3JtYXR0ZWRWYWx1ZShleHByX3R5IHZhbHVlLCBpbnQgY29udmVyc2lvbiwgZXhwcl90eSBmb3JtYXRfc3BlYywgaW50IGxpbmVubywKKyAgICAgICAgICAgICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB2YWx1ZSBpcyByZXF1aXJlZCBmb3IgRm9ybWF0dGVkVmFsdWUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gRm9ybWF0dGVkVmFsdWVfa2luZDsKKyAgICBwLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlID0gdmFsdWU7CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS5jb252ZXJzaW9uID0gY29udmVyc2lvbjsKKyAgICBwLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjID0gZm9ybWF0X3NwZWM7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CitKb2luZWRTdHIoYXNkbF9zZXEgKiB2YWx1ZXMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK3sKKyAgICBleHByX3R5IHA7CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBKb2luZWRTdHJfa2luZDsKKyAgICBwLT52LkpvaW5lZFN0ci52YWx1ZXMgPSB2YWx1ZXM7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitleHByX3R5CiBCeXRlcyhieXRlcyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgZXhwcl90eSBwOwpAQCAtMjExNCw2ICsyMjI3LDI1IEBACiB9CiAKIGV4cHJfdHkKK0NvbnN0YW50KGNvbnN0YW50IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIENvbnN0YW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IENvbnN0YW50X2tpbmQ7CisgICAgcC0+di5Db25zdGFudC52YWx1ZSA9IHZhbHVlOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQogQXR0cmlidXRlKGV4cHJfdHkgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0X3R5IGN0eCwgaW50IGxpbmVubywgaW50CiAgICAgICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0yMzE1LDcgKzI0NDcsOCBAQAogfQogCiBjb21wcmVoZW5zaW9uX3R5Ci1jb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogaWZzLCBQeUFyZW5hICphcmVuYSkKK2NvbXByZWhlbnNpb24oZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBpZnMsIGludCBpc19hc3luYywKKyAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgY29tcHJlaGVuc2lvbl90eSBwOwogICAgIGlmICghdGFyZ2V0KSB7CkBAIC0yMzM0LDYgKzI0NjcsNyBAQAogICAgIHAtPnRhcmdldCA9IHRhcmdldDsKICAgICBwLT5pdGVyID0gaXRlcjsKICAgICBwLT5pZnMgPSBpZnM7CisgICAgcC0+aXNfYXN5bmMgPSBpc19hc3luYzsKICAgICByZXR1cm4gcDsKIH0KIApAQCAtMjY0OCw2ICsyNzgyLDMwIEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQW5uQXNzaWduX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLnRhcmdldCk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLmFubm90YXRpb24pOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hbm5vdGF0aW9uLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5Bbm5Bc3NpZ24udmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+di5Bbm5Bc3NpZ24uc2ltcGxlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc2ltcGxlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoRm9yX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zMTY0LDYgKzMzMjIsMzQgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEZvcm1hdHRlZFZhbHVlX3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9ybWF0dGVkVmFsdWUudmFsdWUpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+di5Gb3JtYXR0ZWRWYWx1ZS5jb252ZXJzaW9uKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29udmVyc2lvbiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9mb3JtYXRfc3BlYywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEpvaW5lZFN0cl90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkpvaW5lZFN0ci52YWx1ZXMsIGFzdDJvYmpfZXhwcik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlcywgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQnl0ZXNfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQnl0ZXNfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTMxODYsNiArMzM3MiwxNSBAQAogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhFbGxpcHNpc190eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KENvbnN0YW50X3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9jb25zdGFudChvLT52LkNvbnN0YW50LnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgogICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhBdHRyaWJ1dGVfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKQEAgLTM1MzEsNiArMzcyNiwxMSBAQAogICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaWZzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5pc19hc3luYyk7CisgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pc19hc3luYywgdmFsdWUpID09IC0xKQorICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIHJldHVybiByZXN1bHQ7CiBmYWlsZWQ6CiAgICAgUHlfWERFQ1JFRih2YWx1ZSk7CkBAIC00NDU4LDYgKzQ2NTgsNjQgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQW5uQXNzaWduX3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBleHByX3R5IHRhcmdldDsKKyAgICAgICAgZXhwcl90eSBhbm5vdGF0aW9uOworICAgICAgICBleHByX3R5IHZhbHVlOworICAgICAgICBpbnQgc2ltcGxlOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidGFyZ2V0XCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYW5ub3RhdGlvbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhbm5vdGF0aW9uXCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhbHVlID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3NpbXBsZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc2ltcGxlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZzaW1wbGUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwic2ltcGxlXCIgbWlzc2luZyBmcm9tIEFubkFzc2lnbiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEFubkFzc2lnbih0YXJnZXQsIGFubm90YXRpb24sIHZhbHVlLCBzaW1wbGUsIGxpbmVubywgY29sX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUZvcl90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTYyMDUsNiArNjQ2Myw5MCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilGb3JtYXR0ZWRWYWx1ZV90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgaW50IGNvbnZlcnNpb247CisgICAgICAgIGV4cHJfdHkgZm9ybWF0X3NwZWM7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBGb3JtYXR0ZWRWYWx1ZSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2NvbnZlcnNpb24pKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbnZlcnNpb24pOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmNvbnZlcnNpb24sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29udmVyc2lvbiA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4aXN0c19ub3Rfbm9uZShvYmosICZQeUlkX2Zvcm1hdF9zcGVjKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9mb3JtYXRfc3BlYyk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmZvcm1hdF9zcGVjLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvcm1hdF9zcGVjID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gRm9ybWF0dGVkVmFsdWUodmFsdWUsIGNvbnZlcnNpb24sIGZvcm1hdF9zcGVjLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUpvaW5lZFN0cl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgYXNkbF9zZXEqIHZhbHVlczsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlcykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSm9pbmVkU3RyIGZpZWxkIFwidmFsdWVzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUodG1wKTsKKyAgICAgICAgICAgIHZhbHVlcyA9IF9QeV9hc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAodmFsdWVzID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiSm9pbmVkU3RyIGZpZWxkIFwidmFsdWVzXCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVCh2YWx1ZXMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZXNcIiBtaXNzaW5nIGZyb20gSm9pbmVkU3RyIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICAqb3V0ID0gSm9pbmVkU3RyKHZhbHVlcywgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUJ5dGVzX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNjI1OSw2ICs2NjAxLDI4IEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUNvbnN0YW50X3R5cGUpOworICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoaXNpbnN0YW5jZSkgeworICAgICAgICBjb25zdGFudCB2YWx1ZTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9jb25zdGFudCh0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBDb25zdGFudCIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IENvbnN0YW50KHZhbHVlLCBsaW5lbm8sIGNvbF9vZmZzZXQsIGFyZW5hKTsKKyAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgIHJldHVybiAwOworICAgIH0KICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopQXR0cmlidXRlX3R5cGUpOwogICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgIHJldHVybiAxOwpAQCAtNjk4Nyw2ICs3MzUxLDcgQEAKICAgICBleHByX3R5IHRhcmdldDsKICAgICBleHByX3R5IGl0ZXI7CiAgICAgYXNkbF9zZXEqIGlmczsKKyAgICBpbnQgaXNfYXN5bmM7CiAKICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKICAgICAgICAgaW50IHJlczsKQEAgLTcwMzgsNyArNzQwMywxOCBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpZnNcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgKm91dCA9IGNvbXByZWhlbnNpb24odGFyZ2V0LCBpdGVyLCBpZnMsIGFyZW5hKTsKKyAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2lzX2FzeW5jKSkgeworICAgICAgICBpbnQgcmVzOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXNfYXN5bmMpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZpc19hc3luYywgYXJlbmEpOworICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9DTEVBUih0bXApOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImlzX2FzeW5jXCIgbWlzc2luZyBmcm9tIGNvbXByZWhlbnNpb24iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgICpvdXQgPSBjb21wcmVoZW5zaW9uKHRhcmdldCwgaXRlciwgaWZzLCBpc19hc3luYywgYXJlbmEpOwogICAgIHJldHVybiAwOwogZmFpbGVkOgogICAgIFB5X1hERUNSRUYodG1wKTsKQEAgLTc1MDIsNiArNzg3OCw4IEBACiAgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBdWdBc3NpZ24iLCAoUHlPYmplY3QqKUF1Z0Fzc2lnbl90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQW5uQXNzaWduIiwgKFB5T2JqZWN0KilBbm5Bc3NpZ25fdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkZvciIsIChQeU9iamVjdCopRm9yX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBc3luY0ZvciIsIChQeU9iamVjdCopQXN5bmNGb3JfdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc1NjIsMTIgKzc5NDAsMTggQEAKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNhbGwiLCAoUHlPYmplY3QqKUNhbGxfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk51bSIsIChQeU9iamVjdCopTnVtX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTdHIiLCAoUHlPYmplY3QqKVN0cl90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRm9ybWF0dGVkVmFsdWUiLAorICAgICAgICAoUHlPYmplY3QqKUZvcm1hdHRlZFZhbHVlX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJKb2luZWRTdHIiLCAoUHlPYmplY3QqKUpvaW5lZFN0cl90eXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQnl0ZXMiLCAoUHlPYmplY3QqKUJ5dGVzX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJOYW1lQ29uc3RhbnQiLCAoUHlPYmplY3QqKU5hbWVDb25zdGFudF90eXBlKSA8CiAgICAgICAgIDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiRWxsaXBzaXMiLCAoUHlPYmplY3QqKUVsbGlwc2lzX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDb25zdGFudCIsIChQeU9iamVjdCopQ29uc3RhbnRfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkF0dHJpYnV0ZSIsIChQeU9iamVjdCopQXR0cmlidXRlX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTdWJzY3JpcHQiLCAoUHlPYmplY3QqKVN1YnNjcmlwdF90eXBlKSA8IDApCmRpZmYgLS1naXQgYS9QeXRob24vX3dhcm5pbmdzLmMgYi9QeXRob24vX3dhcm5pbmdzLmMKaW5kZXggOTc4YmFkMS4uNDBmNWM4ZSAxMDA2NDQKLS0tIGEvUHl0aG9uL193YXJuaW5ncy5jCisrKyBiL1B5dGhvbi9fd2FybmluZ3MuYwpAQCAtNDAsMTIgKzQwLDExIEBACiAgICBBIE5VTEwgcmV0dXJuIHZhbHVlIGNhbiBtZWFuIGZhbHNlIG9yIGFuIGVycm9yLgogKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfd2FybmluZ3NfYXR0cihjb25zdCBjaGFyICphdHRyKQorZ2V0X3dhcm5pbmdzX2F0dHIoY29uc3QgY2hhciAqYXR0ciwgaW50IHRyeV9pbXBvcnQpCiB7CiAgICAgc3RhdGljIFB5T2JqZWN0ICp3YXJuaW5nc19zdHIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICphbGxfbW9kdWxlczsKLSAgICBQeU9iamVjdCAqd2FybmluZ3NfbW9kdWxlOwotICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKndhcm5pbmdzX21vZHVsZSwgKm9iajsKIAogICAgIGlmICh3YXJuaW5nc19zdHIgPT0gTlVMTCkgewogICAgICAgICB3YXJuaW5nc19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygid2FybmluZ3MiKTsKQEAgLTUzLDE1ICs1MiwzNCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYWxsX21vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgcmVzdWx0ID0gUHlEaWN0X0NvbnRhaW5zKGFsbF9tb2R1bGVzLCB3YXJuaW5nc19zdHIpOwotICAgIGlmIChyZXN1bHQgPT0gLTEgfHwgcmVzdWx0ID09IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgd2FybmluZ3NfbW9kdWxlID0gUHlEaWN0X0dldEl0ZW0oYWxsX21vZHVsZXMsIHdhcm5pbmdzX3N0cik7Ci0gICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cikpCisgICAgLyogZG9uJ3QgdHJ5IHRvIGltcG9ydCBhZnRlciB0aGUgc3RhcnQgb2YgdGhlIFB5dGhvbiBmaW5hbGxpemF0aW9uICovCisgICAgaWYgKHRyeV9pbXBvcnQgJiYgX1B5X0ZpbmFsaXppbmcgPT0gTlVMTCkgeworICAgICAgICB3YXJuaW5nc19tb2R1bGUgPSBQeUltcG9ydF9JbXBvcnQod2FybmluZ3Nfc3RyKTsKKyAgICAgICAgaWYgKHdhcm5pbmdzX21vZHVsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBGYWxsYmFjayB0byB0aGUgQyBpbXBsZW1lbnRhdGlvbiBpZiB3ZSBjYW5ub3QgZ2V0CisgICAgICAgICAgICAgICB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uICovCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYWxsX21vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7CisKKyAgICAgICAgd2FybmluZ3NfbW9kdWxlID0gUHlEaWN0X0dldEl0ZW0oYWxsX21vZHVsZXMsIHdhcm5pbmdzX3N0cik7CisgICAgICAgIGlmICh3YXJuaW5nc19tb2R1bGUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIFB5X0lOQ1JFRih3YXJuaW5nc19tb2R1bGUpOworICAgIH0KKworICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpKSB7CisgICAgICAgIFB5X0RFQ1JFRih3YXJuaW5nc19tb2R1bGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cik7CisgICAgUHlfREVDUkVGKHdhcm5pbmdzX21vZHVsZSk7CisgICAgcmV0dXJuIG9iajsKIH0KIAogCkBAIC03MCw3ICs4OCw3IEBACiB7CiAgICAgUHlPYmplY3QgKnJlZ2lzdHJ5OwogCi0gICAgcmVnaXN0cnkgPSBnZXRfd2FybmluZ3NfYXR0cigib25jZXJlZ2lzdHJ5Iik7CisgICAgcmVnaXN0cnkgPSBnZXRfd2FybmluZ3NfYXR0cigib25jZXJlZ2lzdHJ5IiwgMCk7CiAgICAgaWYgKHJlZ2lzdHJ5ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTg3LDcgKzEwNSw3IEBACiB7CiAgICAgUHlPYmplY3QgKmRlZmF1bHRfYWN0aW9uOwogCi0gICAgZGVmYXVsdF9hY3Rpb24gPSBnZXRfd2FybmluZ3NfYXR0cigiZGVmYXVsdGFjdGlvbiIpOworICAgIGRlZmF1bHRfYWN0aW9uID0gZ2V0X3dhcm5pbmdzX2F0dHIoImRlZmF1bHRhY3Rpb24iLCAwKTsKICAgICBpZiAoZGVmYXVsdF9hY3Rpb24gPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTAsNyArMTI4LDcgQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlPYmplY3QgKndhcm5pbmdzX2ZpbHRlcnM7CiAKLSAgICB3YXJuaW5nc19maWx0ZXJzID0gZ2V0X3dhcm5pbmdzX2F0dHIoImZpbHRlcnMiKTsKKyAgICB3YXJuaW5nc19maWx0ZXJzID0gZ2V0X3dhcm5pbmdzX2F0dHIoImZpbHRlcnMiLCAwKTsKICAgICBpZiAod2FybmluZ3NfZmlsdGVycyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yODcsOCArMzA1LDggQEAKIH0KIAogc3RhdGljIHZvaWQKLXNob3dfd2FybmluZyhQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0ICp0ZXh0LCBQeU9iamVjdAotICAgICAgICAgICAgICAgICpjYXRlZ29yeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUpCitzaG93X3dhcm5pbmcoUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCAqdGV4dCwKKyAgICAgICAgICAgICBQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lKQogewogICAgIFB5T2JqZWN0ICpmX3N0ZGVycjsKICAgICBQeU9iamVjdCAqbmFtZTsKQEAgLTM1OSwxMCArMzc3LDY0IEBACiAgICAgUHlFcnJfQ2xlYXIoKTsKIH0KIAorc3RhdGljIGludAorY2FsbF9zaG93X3dhcm5pbmcoUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqdGV4dCwgUHlPYmplY3QgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sIFB5T2JqZWN0ICpsaW5lbm9fb2JqLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNvdXJjZWxpbmUsIFB5T2JqZWN0ICpzb3VyY2UpCit7CisgICAgUHlPYmplY3QgKnNob3dfZm4sICptc2csICpyZXMsICp3YXJubXNnX2NscyA9IE5VTEw7CisKKyAgICAvKiBJZiB0aGUgc291cmNlIHBhcmFtZXRlciBpcyBzZXQsIHRyeSB0byBnZXQgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICBUaGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIGlzIGFibGUgdG8gbG9nIHRoZSB0cmFjZWJhY2sgd2hlcmUgdGhlIHNvdXJjZQorICAgICAgIHdhcyBhbGxvY2F0ZWQsIHdoZXJlYXMgdGhlIEMgaW1wbGVtZW50YXRpb24gZG9lc250LiAqLworICAgIHNob3dfZm4gPSBnZXRfd2FybmluZ3NfYXR0cigiX3Nob3d3YXJubXNnIiwgc291cmNlICE9IE5VTEwpOworICAgIGlmIChzaG93X2ZuID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHNob3dfd2FybmluZyhmaWxlbmFtZSwgbGluZW5vLCB0ZXh0LCBjYXRlZ29yeSwgc291cmNlbGluZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhzaG93X2ZuKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5fc2hvd3dhcm5tc2coKSBtdXN0IGJlIHNldCB0byBhIGNhbGxhYmxlIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgd2Fybm1zZ19jbHMgPSBnZXRfd2FybmluZ3NfYXR0cigiV2FybmluZ01lc3NhZ2UiLCAwKTsKKyAgICBpZiAod2Fybm1zZ19jbHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZ2V0IHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgbXNnID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyh3YXJubXNnX2NscywgbWVzc2FnZSwgY2F0ZWdvcnksCisgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vX29iaiwgUHlfTm9uZSwgUHlfTm9uZSwgc291cmNlLAorICAgICAgICAgICAgTlVMTCk7CisgICAgUHlfREVDUkVGKHdhcm5tc2dfY2xzKTsKKyAgICBpZiAobXNnID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNob3dfZm4sIG1zZywgTlVMTCk7CisgICAgUHlfREVDUkVGKHNob3dfZm4pOworICAgIFB5X0RFQ1JFRihtc2cpOworCisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9ERUNSRUYocmVzKTsKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihzaG93X2ZuKTsKKyAgICByZXR1cm4gLTE7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiB3YXJuX2V4cGxpY2l0KFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKm1lc3NhZ2UsCiAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywKLSAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnJlZ2lzdHJ5LCBQeU9iamVjdCAqc291cmNlbGluZSkKKyAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnJlZ2lzdHJ5LCBQeU9iamVjdCAqc291cmNlbGluZSwKKyAgICAgICAgICAgICAgUHlPYmplY3QgKnNvdXJjZSkKIHsKICAgICBQeU9iamVjdCAqa2V5ID0gTlVMTCwgKnRleHQgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTCwgKmxpbmVub19vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICppdGVtID0gTlVMTDsKQEAgLTQ3MCwzMSArNTQyLDkgQEAKICAgICBpZiAocmMgPT0gMSkgIC8qIEFscmVhZHkgd2FybmVkIGZvciB0aGlzIG1vZHVsZS4gKi8KICAgICAgICAgZ290byByZXR1cm5fbm9uZTsKICAgICBpZiAocmMgPT0gMCkgewotICAgICAgICBQeU9iamVjdCAqc2hvd19meG4gPSBnZXRfd2FybmluZ3NfYXR0cigic2hvd3dhcm5pbmciKTsKLSAgICAgICAgaWYgKHNob3dfZnhuID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgICAgIHNob3dfd2FybmluZyhmaWxlbmFtZSwgbGluZW5vLCB0ZXh0LCBjYXRlZ29yeSwgc291cmNlbGluZSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVzOwotCi0gICAgICAgICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soc2hvd19meG4pKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsYWJsZSIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzaG93X2Z4bik7Ci0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNob3dfZnhuLCBtZXNzYWdlLCBjYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm9fb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc2hvd19meG4pOwotICAgICAgICAgICAgUHlfWERFQ1JFRihyZXMpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQorICAgICAgICBpZiAoY2FsbF9zaG93X3dhcm5pbmcoY2F0ZWdvcnksIHRleHQsIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm9fb2JqLCBzb3VyY2VsaW5lLCBzb3VyY2UpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKICAgICB9CiAgICAgZWxzZSAvKiBpZiAocmMgPT0gLTEpICovCiAgICAgICAgIGdvdG8gY2xlYW51cDsKQEAgLTczOCw3ICs3ODgsOCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZG9fd2FybihQeU9iamVjdCAqbWVzc2FnZSwgUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQorZG9fd2FybihQeU9iamVjdCAqbWVzc2FnZSwgUHlPYmplY3QgKmNhdGVnb3J5LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLAorICAgICAgICBQeU9iamVjdCAqc291cmNlKQogewogICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgKm1vZHVsZSwgKnJlZ2lzdHJ5LCAqcmVzOwogICAgIGludCBsaW5lbm87CkBAIC03NDcsNyArNzk4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXMgPSB3YXJuX2V4cGxpY2l0KGNhdGVnb3J5LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGUsIHJlZ2lzdHJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBzb3VyY2UpOwogICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CiAgICAgUHlfREVDUkVGKHJlZ2lzdHJ5KTsKICAgICBQeV9ERUNSRUYobW9kdWxlKTsKQEAgLTc1NywyNSArODA4LDI3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2FybmluZ3Nfd2FybihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBjaGFyICprd19saXN0W10gPSB7ICJtZXNzYWdlIiwgImNhdGVnb3J5IiwgInN0YWNrbGV2ZWwiLCAwIH07Ci0gICAgUHlPYmplY3QgKm1lc3NhZ2UsICpjYXRlZ29yeSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3X2xpc3RbXSA9IHsibWVzc2FnZSIsICJjYXRlZ29yeSIsICJzdGFja2xldmVsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqbWVzc2FnZSwgKmNhdGVnb3J5ID0gTlVMTCwgKnNvdXJjZSA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCA9IDE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPbjp3YXJuIiwga3dfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWVzc2FnZSwgJmNhdGVnb3J5LCAmc3RhY2tfbGV2ZWwpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9uTzp3YXJuIiwga3dfbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWVzc2FnZSwgJmNhdGVnb3J5LCAmc3RhY2tfbGV2ZWwsICZzb3VyY2UpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGNhdGVnb3J5ID0gZ2V0X2NhdGVnb3J5KG1lc3NhZ2UsIGNhdGVnb3J5KTsKICAgICBpZiAoY2F0ZWdvcnkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsKTsKKyAgICByZXR1cm4gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwsIHNvdXJjZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3YXJuaW5nc193YXJuX2V4cGxpY2l0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgc3RhdGljIGNoYXIgKmt3ZF9saXN0W10gPSB7Im1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAiZmlsZW5hbWUiLCAibGluZW5vIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSIsICJyZWdpc3RyeSIsICJtb2R1bGVfZ2xvYmFscyIsIDB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIiwgInJlZ2lzdHJ5IiwgIm1vZHVsZV9nbG9iYWxzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvdXJjZSIsIDB9OwogICAgIFB5T2JqZWN0ICptZXNzYWdlOwogICAgIFB5T2JqZWN0ICpjYXRlZ29yeTsKICAgICBQeU9iamVjdCAqZmlsZW5hbWU7CkBAIC03ODMsMTAgKzgzNiwxMSBAQAogICAgIFB5T2JqZWN0ICptb2R1bGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZWdpc3RyeSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm1vZHVsZV9nbG9iYWxzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc291cmNlb2JqID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT1VpfE9PTzp3YXJuX2V4cGxpY2l0IiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT09VaXxPT09POndhcm5fZXhwbGljaXQiLAogICAgICAgICAgICAgICAgIGt3ZF9saXN0LCAmbWVzc2FnZSwgJmNhdGVnb3J5LCAmZmlsZW5hbWUsICZsaW5lbm8sICZtb2R1bGUsCi0gICAgICAgICAgICAgICAgJnJlZ2lzdHJ5LCAmbW9kdWxlX2dsb2JhbHMpKQorICAgICAgICAgICAgICAgICZyZWdpc3RyeSwgJm1vZHVsZV9nbG9iYWxzLCAmc291cmNlb2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAobW9kdWxlX2dsb2JhbHMpIHsKQEAgLTg0MiwxNCArODk2LDE0IEBACiAKICAgICAgICAgLyogSGFuZGxlIHRoZSB3YXJuaW5nLiAqLwogICAgICAgICByZXR1cm5lZCA9IHdhcm5fZXhwbGljaXQoY2F0ZWdvcnksIG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBzb3VyY2VfbGluZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgc291cmNlX2xpbmUsIHNvdXJjZW9iaik7CiAgICAgICAgIFB5X0RFQ1JFRihzb3VyY2VfbGlzdCk7CiAgICAgICAgIHJldHVybiByZXR1cm5lZDsKICAgICB9CiAKICBzdGFuZGFyZF9jYWxsOgogICAgIHJldHVybiB3YXJuX2V4cGxpY2l0KGNhdGVnb3J5LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBOVUxMLCBzb3VyY2VvYmopOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtODY0LDE0ICs5MTgsMTQgQEAKIAogc3RhdGljIGludAogd2Fybl91bmljb2RlKFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKm1lc3NhZ2UsCi0gICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKKyAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLCBQeU9iamVjdCAqc291cmNlKQogewogICAgIFB5T2JqZWN0ICpyZXM7CiAKICAgICBpZiAoY2F0ZWdvcnkgPT0gTlVMTCkKICAgICAgICAgY2F0ZWdvcnkgPSBQeUV4Y19SdW50aW1lV2FybmluZzsKIAotICAgIHJlcyA9IGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsKTsKKyAgICByZXMgPSBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCwgc291cmNlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTg3OSwxMiArOTMzLDI4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK19QeUVycl9XYXJuRm9ybWF0VihQeU9iamVjdCAqc291cmNlLAorICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm1lc3NhZ2U7CisgICAgaW50IHJlczsKKworICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7CisgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmVzID0gd2Fybl91bmljb2RlKGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja19sZXZlbCwgc291cmNlKTsKKyAgICBQeV9ERUNSRUYobWVzc2FnZSk7CisgICAgcmV0dXJuIHJlczsKK30KKwogaW50CiBQeUVycl9XYXJuRm9ybWF0KFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7Ci0gICAgaW50IHJldDsKLSAgICBQeU9iamVjdCAqbWVzc2FnZTsKKyAgICBpbnQgcmVzOwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKICNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCkBAIC04OTIsMjUgKzk2MiwzOCBAQAogI2Vsc2UKICAgICB2YV9zdGFydCh2YXJncyk7CiAjZW5kaWYKLSAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGZvcm1hdCwgdmFyZ3MpOwotICAgIGlmIChtZXNzYWdlICE9IE5VTEwpIHsKLSAgICAgICAgcmV0ID0gd2Fybl91bmljb2RlKGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja19sZXZlbCk7Ci0gICAgICAgIFB5X0RFQ1JFRihtZXNzYWdlKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXQgPSAtMTsKKyAgICByZXMgPSBfUHlFcnJfV2FybkZvcm1hdFYoTlVMTCwgY2F0ZWdvcnksIHN0YWNrX2xldmVsLCBmb3JtYXQsIHZhcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJlczsKIH0KIAogaW50CitQeUVycl9SZXNvdXJjZVdhcm5pbmcoUHlPYmplY3QgKnNvdXJjZSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICBpbnQgcmVzOworICAgIHZhX2xpc3QgdmFyZ3M7CisKKyNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCisgICAgdmFfc3RhcnQodmFyZ3MsIGZvcm1hdCk7CisjZWxzZQorICAgIHZhX3N0YXJ0KHZhcmdzKTsKKyNlbmRpZgorICAgIHJlcyA9IF9QeUVycl9XYXJuRm9ybWF0Vihzb3VyY2UsIFB5RXhjX1Jlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tfbGV2ZWwsIGZvcm1hdCwgdmFyZ3MpOworICAgIHZhX2VuZCh2YXJncyk7CisgICAgcmV0dXJuIHJlczsKK30KKworCitpbnQKIFB5RXJyX1dhcm5FeChQeU9iamVjdCAqY2F0ZWdvcnksIGNvbnN0IGNoYXIgKnRleHQsIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCiB7CiAgICAgaW50IHJldDsKICAgICBQeU9iamVjdCAqbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHRleHQpOwogICAgIGlmIChtZXNzYWdlID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXQgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsKTsKKyAgICByZXQgPSB3YXJuX3VuaWNvZGUoY2F0ZWdvcnksIG1lc3NhZ2UsIHN0YWNrX2xldmVsLCBOVUxMKTsKICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTkyMSw3ICsxMDA0LDcgQEAKICN1bmRlZiBQeUVycl9XYXJuCiAKIFB5QVBJX0ZVTkMoaW50KQotUHlFcnJfV2FybihQeU9iamVjdCAqY2F0ZWdvcnksIGNoYXIgKnRleHQpCitQeUVycl9XYXJuKFB5T2JqZWN0ICpjYXRlZ29yeSwgY29uc3QgY2hhciAqdGV4dCkKIHsKICAgICByZXR1cm4gUHlFcnJfV2FybkV4KGNhdGVnb3J5LCB0ZXh0LCAxKTsKIH0KQEAgLTkzNiw3ICsxMDE5LDcgQEAKICAgICBpZiAoY2F0ZWdvcnkgPT0gTlVMTCkKICAgICAgICAgY2F0ZWdvcnkgPSBQeUV4Y19SdW50aW1lV2FybmluZzsKICAgICByZXMgPSB3YXJuX2V4cGxpY2l0KGNhdGVnb3J5LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTEwMDAsNyArMTA4Myw3IEBACiAgICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwogICAgICAgICByZXMgPSB3YXJuX2V4cGxpY2l0KGNhdGVnb3J5LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CiAgICAgICAgIGlmIChyZXMgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CmRpZmYgLS1naXQgYS9QeXRob24vYXNkbC5jIGIvUHl0aG9uL2FzZGwuYwppbmRleCBkZjM4N2IyLi5jMjExMDc4IDEwMDY0NAotLS0gYS9QeXRob24vYXNkbC5jCisrKyBiL1B5dGhvbi9hc2RsLmMKQEAgLTksMTQgKzksMTQgQEAKIAogICAgIC8qIGNoZWNrIHNpemUgaXMgc2FuZSAqLwogICAgIGlmIChzaXplIDwgMCB8fAotICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKKyAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChTSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwogCiAgICAgLyogY2hlY2sgaWYgc2l6ZSBjYW4gYmUgYWRkZWQgc2FmZWx5ICovCi0gICAgaWYgKG4gPiBQWV9TSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKKyAgICBpZiAobiA+IFNJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC00MCwxNCArNDAsMTQgQEAKIAogICAgIC8qIGNoZWNrIHNpemUgaXMgc2FuZSAqLwogICAgIGlmIChzaXplIDwgMCB8fAotICAgICAgICAoc2l6ZSAmJiAoKChzaXplX3Qpc2l6ZSAtIDEpID4gKFBZX1NJWkVfTUFYIC8gc2l6ZW9mKHZvaWQgKikpKSkpIHsKKyAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChTSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG4gPSAoc2l6ZSA/IChzaXplb2Yodm9pZCAqKSAqIChzaXplIC0gMSkpIDogMCk7CiAKICAgICAvKiBjaGVjayBpZiBzaXplIGNhbiBiZSBhZGRlZCBzYWZlbHkgKi8KLSAgICBpZiAobiA+IFBZX1NJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgeworICAgIGlmIChuID4gU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9hc3QuYyBiL1B5dGhvbi9hc3QuYwppbmRleCA2ZGEzM2Y3Li43NmRhZjZmIDEwMDY0NAotLS0gYS9QeXRob24vYXN0LmMKKysrIGIvUHl0aG9uL2FzdC5jCkBAIC0xMzIsNiArMTMyLDUyIEBACiB9CiAKIHN0YXRpYyBpbnQKK3ZhbGlkYXRlX2NvbnN0YW50KFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSB8fCB2YWx1ZSA9PSBQeV9FbGxpcHNpcykKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUZsb2F0X0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUNvbXBsZXhfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5Qm9vbF9DaGVjayh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlCeXRlc19DaGVja0V4YWN0KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHZhbHVlKSB8fCBQeUZyb3plblNldF9DaGVja0V4YWN0KHZhbHVlKSkgeworICAgICAgICBQeU9iamVjdCAqaXQ7CisKKyAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHZhbHVlKTsKKyAgICAgICAgaWYgKGl0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeUl0ZXJfTmV4dChpdCk7CisgICAgICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX2NvbnN0YW50KGl0ZW0pKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIH0KKworICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAogdmFsaWRhdGVfZXhwcihleHByX3R5IGV4cCwgZXhwcl9jb250ZXh0X3R5IGN0eCkKIHsKICAgICBpbnQgY2hlY2tfY3R4ID0gMTsKQEAgLTI0MCw2ICsyODYsMTQgQEAKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwuZnVuYywgTG9hZCkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5DYWxsLmFyZ3MsIExvYWQsIDApICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9rZXl3b3JkcyhleHAtPnYuQ2FsbC5rZXl3b3Jkcyk7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICBpZiAoIXZhbGlkYXRlX2NvbnN0YW50KGV4cC0+di5Db25zdGFudC52YWx1ZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhbiBpbnZhbGlkIHR5cGUgaW4gQ29uc3RhbnQ6ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGV4cC0+di5Db25zdGFudC52YWx1ZSktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CiAgICAgY2FzZSBOdW1fa2luZDogewogICAgICAgICBQeU9iamVjdCAqbiA9IGV4cC0+di5OdW0ubjsKICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2tFeGFjdChuKSAmJiAhUHlGbG9hdF9DaGVja0V4YWN0KG4pICYmCkBAIC0yNTcsNiArMzExLDE0IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQorICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuSm9pbmVkU3RyLnZhbHVlcywgTG9hZCwgMCk7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICBpZiAodmFsaWRhdGVfZXhwcihleHAtPnYuRm9ybWF0dGVkVmFsdWUudmFsdWUsIExvYWQpID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKGV4cC0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYykKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYywgTG9hZCk7CisgICAgICAgIHJldHVybiAxOwogICAgIGNhc2UgQnl0ZXNfa2luZDogewogICAgICAgICBQeU9iamVjdCAqYiA9IGV4cC0+di5CeXRlcy5zOwogICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2tFeGFjdChiKSkgewpAQCAtMzM1LDYgKzM5NywxNyBAQAogICAgIGNhc2UgQXVnQXNzaWduX2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXVnQXNzaWduLnRhcmdldCwgU3RvcmUpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXVnQXNzaWduLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICBpZiAoc3RtdC0+di5Bbm5Bc3NpZ24udGFyZ2V0LT5raW5kICE9IE5hbWVfa2luZCAmJgorICAgICAgICAgICAgc3RtdC0+di5Bbm5Bc3NpZ24uc2ltcGxlKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbm5Bc3NpZ24gd2l0aCBzaW1wbGUgbm9uLU5hbWUgdGFyZ2V0Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkFubkFzc2lnbi50YXJnZXQsIFN0b3JlKSAmJgorICAgICAgICAgICAgICAgKCFzdG10LT52LkFubkFzc2lnbi52YWx1ZSB8fAorICAgICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bbm5Bc3NpZ24udmFsdWUsIExvYWQpKSAmJgorICAgICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkFubkFzc2lnbi5hbm5vdGF0aW9uLCBMb2FkKTsKICAgICBjYXNlIEZvcl9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkZvci50YXJnZXQsIFN0b3JlKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkZvci5pdGVyLCBMb2FkKSAmJgpAQCAtNDEzLDggKzQ4Niw4IEBACiAgICAgY2FzZSBJbXBvcnRfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52LkltcG9ydC5uYW1lcywgIm5hbWVzIiwgIkltcG9ydCIpOwogICAgIGNhc2UgSW1wb3J0RnJvbV9raW5kOgotICAgICAgICBpZiAoc3RtdC0+di5JbXBvcnRGcm9tLmxldmVsIDwgLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW1wb3J0RnJvbSBsZXZlbCBsZXNzIHRoYW4gLTEiKTsKKyAgICAgICAgaWYgKHN0bXQtPnYuSW1wb3J0RnJvbS5sZXZlbCA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiTmVnYXRpdmUgSW1wb3J0RnJvbSBsZXZlbCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52LkltcG9ydEZyb20ubmFtZXMsICJuYW1lcyIsICJJbXBvcnRGcm9tIik7CkBAIC01MTIsOCArNTg1LDcgQEAKIAogLyogRGF0YSBzdHJ1Y3R1cmUgdXNlZCBpbnRlcm5hbGx5ICovCiBzdHJ1Y3QgY29tcGlsaW5nIHsKLSAgICBjaGFyICpjX2VuY29kaW5nOyAvKiBzb3VyY2UgZW5jb2RpbmcgKi8KLSAgICBQeUFyZW5hICpjX2FyZW5hOyAvKiBhcmVuYSBmb3IgYWxsb2NhdGluZyBtZW1lb3J5ICovCisgICAgUHlBcmVuYSAqY19hcmVuYTsgLyogQXJlbmEgZm9yIGFsbG9jYXRpbmcgbWVtb3J5LiAqLwogICAgIFB5T2JqZWN0ICpjX2ZpbGVuYW1lOyAvKiBmaWxlbmFtZSAqLwogICAgIFB5T2JqZWN0ICpjX25vcm1hbGl6ZTsgLyogTm9ybWFsaXphdGlvbiBmdW5jdGlvbiBmcm9tIHVuaWNvZGVkYXRhLiAqLwogICAgIFB5T2JqZWN0ICpjX25vcm1hbGl6ZV9hcmdzOyAvKiBOb3JtYWxpemF0aW9uIGFyZ3VtZW50IHR1cGxlLiAqLwpAQCAtNTM1LDkgKzYwNyw3IEBACiBzdGF0aWMgZXhwcl90eSBhc3RfZm9yX2NhbGwoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICosIGV4cHJfdHkpOwogCiBzdGF0aWMgUHlPYmplY3QgKnBhcnNlbnVtYmVyKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3QgY2hhciAqKTsKLXN0YXRpYyBQeU9iamVjdCAqcGFyc2VzdHIoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSk7Ci1zdGF0aWMgUHlPYmplY3QgKnBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKm4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmJ5dGVzbW9kZSk7CitzdGF0aWMgZXhwcl90eSBwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICpuKTsKIAogI2RlZmluZSBDT01QX0dFTkVYUCAgIDAKICNkZWZpbmUgQ09NUF9MSVNUQ09NUCAxCkBAIC03MDEsMjMgKzc3MSwxMSBAQAogICAgIGMuY19hcmVuYSA9IGFyZW5hOwogICAgIC8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLwogICAgIGMuY19maWxlbmFtZSA9IGZpbGVuYW1lOwotICAgIGMuY19ub3JtYWxpemUgPSBjLmNfbm9ybWFsaXplX2FyZ3MgPSBOVUxMOwotICAgIGlmIChmbGFncyAmJiBmbGFncy0+Y2ZfZmxhZ3MgJiBQeUNGX1NPVVJDRV9JU19VVEY4KSB7Ci0gICAgICAgIGMuY19lbmNvZGluZyA9ICJ1dGYtOCI7Ci0gICAgICAgIGlmIChUWVBFKG4pID09IGVuY29kaW5nX2RlY2wpIHsKLSNpZiAwCi0gICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImVuY29kaW5nIGRlY2xhcmF0aW9uIGluIFVuaWNvZGUgc3RyaW5nIik7Ci0gICAgICAgICAgICBnb3RvIG91dDsKLSNlbmRpZgotICAgICAgICAgICAgbiA9IENISUxEKG4sIDApOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChUWVBFKG4pID09IGVuY29kaW5nX2RlY2wpIHsKLSAgICAgICAgYy5jX2VuY29kaW5nID0gU1RSKG4pOworICAgIGMuY19ub3JtYWxpemUgPSBOVUxMOworICAgIGMuY19ub3JtYWxpemVfYXJncyA9IE5VTEw7CisKKyAgICBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKQogICAgICAgICBuID0gQ0hJTEQobiwgMCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogUEVQIDMxMjAgKi8KLSAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKLSAgICB9CiAKICAgICBrID0gMDsKICAgICBzd2l0Y2ggKFRZUEUobikpIHsKQEAgLTg2NCw3ICs5MjIsNyBAQAogICAgIH0KIH0KIAotc3RhdGljIGNvbnN0IGNoYXIqIEZPUkJJRERFTltdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBGT1JCSURERU5bXSA9IHsKICAgICAiTm9uZSIsCiAgICAgIlRydWUiLAogICAgICJGYWxzZSIsCkBAIC04ODAsOCArOTM4LDI4IEBACiAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgImFzeW5jIikgPT0gMCB8fAorICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAiYXdhaXQiKSA9PSAwKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygKKyAgICAgICAgICAgICInYXN5bmMnIGFuZCAnYXdhaXQnIHdpbGwgYmVjb21lIHJlc2VydmVkIGtleXdvcmRzIgorICAgICAgICAgICAgIiBpbiBQeXRob24gMy43Iik7CisgICAgICAgIGlmIChtZXNzYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoCisgICAgICAgICAgICAgICAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgYy0+Y19maWxlbmFtZSwKKyAgICAgICAgICAgICAgICBMSU5FTk8obiksCisgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICBOVUxMKSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQogICAgIGlmIChmdWxsX2NoZWNrcykgewotICAgICAgICBjb25zdCBjaGFyICoqcDsKKyAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0ICpwOwogICAgICAgICBmb3IgKHAgPSBGT1JCSURERU47ICpwOyBwKyspIHsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAqcCkgPT0gMCkgewogICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CkBAIC05NDMsMTMgKzEwMjEsOCBAQAogICAgICAgICAgICAgcyA9IGUtPnYuTGlzdC5lbHRzOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHVwbGVfa2luZDoKLSAgICAgICAgICAgIGlmIChhc2RsX3NlcV9MRU4oZS0+di5UdXBsZS5lbHRzKSkgIHsKLSAgICAgICAgICAgICAgICBlLT52LlR1cGxlLmN0eCA9IGN0eDsKLSAgICAgICAgICAgICAgICBzID0gZS0+di5UdXBsZS5lbHRzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXhwcl9uYW1lID0gIigpIjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGUtPnYuVHVwbGUuY3R4ID0gY3R4OworICAgICAgICAgICAgcyA9IGUtPnYuVHVwbGUuZWx0czsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIExhbWJkYV9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gImxhbWJkYSI7CkBAIC05ODYsNiArMTA1OSw4IEBACiAgICAgICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgICAgIGNhc2UgU3RyX2tpbmQ6CiAgICAgICAgIGNhc2UgQnl0ZXNfa2luZDoKKyAgICAgICAgY2FzZSBKb2luZWRTdHJfa2luZDoKKyAgICAgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgogICAgICAgICAgICAgZXhwcl9uYW1lID0gImxpdGVyYWwiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CkBAIC0xMjU5LDE2ICsxMzM0LDIwIEBACiAgICAgICAgYW5kIHZhcmFyZ3NsaXN0IChsYW1iZGEgZGVmaW5pdGlvbikuCiAKICAgICAgICBwYXJhbWV0ZXJzOiAnKCcgW3R5cGVkYXJnc2xpc3RdICcpJwotICAgICAgIHR5cGVkYXJnc2xpc3Q6ICgodGZwZGVmIFsnPScgdGVzdF0gJywnKSoKLSAgICAgICAgICAgKCcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyAnKionIHRmcGRlZl0KLSAgICAgICAgICAgfCAnKionIHRmcGRlZikKLSAgICAgICAgICAgfCB0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJ10pCisgICAgICAgdHlwZWRhcmdzbGlzdDogKHRmcGRlZiBbJz0nIHRlc3RdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsKKyAgICAgICAgICAgICAgICcqJyBbdGZwZGVmXSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgICAgIHwgJyoqJyB0ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyoqJyB0ZnBkZWYgWycsJ10pCiAgICAgICAgdGZwZGVmOiBOQU1FIFsnOicgdGVzdF0KLSAgICAgICB2YXJhcmdzbGlzdDogKCh2ZnBkZWYgWyc9JyB0ZXN0XSAnLCcpKgotICAgICAgICAgICAoJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiAgWycsJyAnKionIHZmcGRlZl0KLSAgICAgICAgICAgfCAnKionIHZmcGRlZikKLSAgICAgICAgICAgfCB2ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJ10pCisgICAgICAgdmFyYXJnc2xpc3Q6ICh2ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbCisgICAgICAgICAgICAgICAnKicgW3ZmcGRlZl0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgICAgICB8ICcqKicgdmZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHZmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqKicgdmZwZGVmIFsnLCddCisgICAgICAgKQogICAgICAgIHZmcGRlZjogTkFNRQorCiAgICAgKi8KICAgICBpbnQgaSwgaiwgaywgbnBvc2FyZ3MgPSAwLCBua3dvbmx5YXJncyA9IDA7CiAgICAgaW50IG5wb3NkZWZhdWx0cyA9IDAsIGZvdW5kX2RlZmF1bHQgPSAwOwpAQCAtMTM3MCw3ICsxNDQ5LDggQEAKICAgICAgICAgICAgICAgICBpICs9IDI7IC8qIHRoZSBuYW1lIGFuZCB0aGUgY29tbWEgKi8KICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU1RBUjoKLSAgICAgICAgICAgICAgICBpZiAoaSsxID49IE5DSChuKSkgeworICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pIHx8CisgICAgICAgICAgICAgICAgICAgIChpKzIgPT0gTkNIKG4pICYmIFRZUEUoQ0hJTEQobiwgaSsxKSkgPT0gQ09NTUEpKSB7CiAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChuLCBpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lZCBhcmd1bWVudHMgbXVzdCBmb2xsb3cgYmFyZSAqIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTY4NywxNCArMTc2NywyMSBAQAogY291bnRfY29tcF9mb3JzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7CiAgICAgaW50IG5fZm9ycyA9IDA7CisgICAgaW50IGlzX2FzeW5jOwogCiAgIGNvdW50X2NvbXBfZm9yOgorICAgIGlzX2FzeW5jID0gMDsKICAgICBuX2ZvcnMrKzsKICAgICBSRVEobiwgY29tcF9mb3IpOwotICAgIGlmIChOQ0gobikgPT0gNSkKLSAgICAgICAgbiA9IENISUxEKG4sIDQpOwotICAgIGVsc2UKKyAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gQVNZTkMpIHsKKyAgICAgICAgaXNfYXN5bmMgPSAxOworICAgIH0KKyAgICBpZiAoTkNIKG4pID09ICg1ICsgaXNfYXN5bmMpKSB7CisgICAgICAgIG4gPSBDSElMRChuLCA0ICsgaXNfYXN5bmMpOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgcmV0dXJuIG5fZm9yczsKKyAgICB9CiAgIGNvdW50X2NvbXBfaXRlcjoKICAgICBSRVEobiwgY29tcF9pdGVyKTsKICAgICBuID0gQ0hJTEQobiwgMCk7CkBAIC0xNzU3LDE0ICsxODQ0LDE5IEBACiAgICAgICAgIGFzZGxfc2VxICp0OwogICAgICAgICBleHByX3R5IGV4cHJlc3Npb24sIGZpcnN0OwogICAgICAgICBub2RlICpmb3JfY2g7CisgICAgICAgIGludCBpc19hc3luYyA9IDA7CiAKICAgICAgICAgUkVRKG4sIGNvbXBfZm9yKTsKIAotICAgICAgICBmb3JfY2ggPSBDSElMRChuLCAxKTsKKyAgICAgICAgaWYgKFRZUEUoQ0hJTEQobiwgMCkpID09IEFTWU5DKSB7CisgICAgICAgICAgICBpc19hc3luYyA9IDE7CisgICAgICAgIH0KKworICAgICAgICBmb3JfY2ggPSBDSElMRChuLCAxICsgaXNfYXN5bmMpOwogICAgICAgICB0ID0gYXN0X2Zvcl9leHBybGlzdChjLCBmb3JfY2gsIFN0b3JlKTsKICAgICAgICAgaWYgKCF0KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQobiwgMykpOworICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIDMgKyBpc19hc3luYykpOwogICAgICAgICBpZiAoIWV4cHJlc3Npb24pCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIApAQCAtMTc3MiwxOSArMTg2NCwyMCBAQAogICAgICAgICAgICAoeCBmb3IgeCwgaW4gLi4uKSBoYXMgMSBlbGVtZW50IGluIHQsIGJ1dCBzdGlsbCByZXF1aXJlcyBhIFR1cGxlLiAqLwogICAgICAgICBmaXJzdCA9IChleHByX3R5KWFzZGxfc2VxX0dFVCh0LCAwKTsKICAgICAgICAgaWYgKE5DSChmb3JfY2gpID09IDEpCi0gICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihmaXJzdCwgZXhwcmVzc2lvbiwgTlVMTCwgYy0+Y19hcmVuYSk7CisgICAgICAgICAgICBjb21wID0gY29tcHJlaGVuc2lvbihmaXJzdCwgZXhwcmVzc2lvbiwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2FzeW5jLCBjLT5jX2FyZW5hKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29tcCA9IGNvbXByZWhlbnNpb24oVHVwbGUodCwgU3RvcmUsIGZpcnN0LT5saW5lbm8sIGZpcnN0LT5jb2xfb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmNfYXJlbmEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb24sIE5VTEwsIGMtPmNfYXJlbmEpOworICAgICAgICAgICAgY29tcCA9IGNvbXByZWhlbnNpb24oVHVwbGUodCwgU3RvcmUsIGZpcnN0LT5saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdC0+Y29sX29mZnNldCwgYy0+Y19hcmVuYSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uLCBOVUxMLCBpc19hc3luYywgYy0+Y19hcmVuYSk7CiAgICAgICAgIGlmICghY29tcCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmIChOQ0gobikgPT0gNSkgeworICAgICAgICBpZiAoTkNIKG4pID09ICg1ICsgaXNfYXN5bmMpKSB7CiAgICAgICAgICAgICBpbnQgaiwgbl9pZnM7CiAgICAgICAgICAgICBhc2RsX3NlcSAqaWZzOwogCi0gICAgICAgICAgICBuID0gQ0hJTEQobiwgNCk7CisgICAgICAgICAgICBuID0gQ0hJTEQobiwgNCArIGlzX2FzeW5jKTsKICAgICAgICAgICAgIG5faWZzID0gY291bnRfY29tcF9pZnMoYywgbik7CiAgICAgICAgICAgICBpZiAobl9pZnMgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xOTkzLDcgKzIwODYsNiBAQAogICAgICAgIHwgJy4uLicgfCAnTm9uZScgfCAnVHJ1ZScgfCAnRmFsc2UnCiAgICAgKi8KICAgICBub2RlICpjaCA9IENISUxEKG4sIDApOwotICAgIGludCBieXRlc21vZGUgPSAwOwogCiAgICAgc3dpdGNoIChUWVBFKGNoKSkgewogICAgIGNhc2UgTkFNRTogewpAQCAtMjAxNSw3ICsyMTA3LDcgQEAKICAgICAgICAgcmV0dXJuIE5hbWUobmFtZSwgTG9hZCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgIH0KICAgICBjYXNlIFNUUklORzogewotICAgICAgICBQeU9iamVjdCAqc3RyID0gcGFyc2VzdHJwbHVzKGMsIG4sICZieXRlc21vZGUpOworICAgICAgICBleHByX3R5IHN0ciA9IHBhcnNlc3RycGx1cyhjLCBuKTsKICAgICAgICAgaWYgKCFzdHIpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycnR5cGUgPSBOVUxMOwogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVW5pY29kZUVycm9yKSkKQEAgLTIwMzIsNiArMjEyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiglcykgJXMiLCBlcnJ0eXBlLCBzKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVycnN0cik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiKCVzKSB1bmtub3duIGVycm9yIiwgZXJydHlwZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCBidWYpOwpAQCAtMjA0MSwxNCArMjEzNCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBzdHIpIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnl0ZXNtb2RlKQotICAgICAgICAgICAgcmV0dXJuIEJ5dGVzKHN0ciwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gU3RyKHN0ciwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBQeU9iamVjdCAqcHludW0gPSBwYXJzZW51bWJlcihjLCBTVFIoY2gpKTsKQEAgLTI4MDUsOCArMjg5MSw5IEBACiBhc3RfZm9yX2V4cHJfc3RtdChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewogICAgIFJFUShuLCBleHByX3N0bXQpOwotICAgIC8qIGV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpCi0gICAgICAgICAgICAgICAgfCAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0KSkqKQorICAgIC8qIGV4cHJfc3RtdDogdGVzdGxpc3Rfc3Rhcl9leHByIChhbm5hc3NpZ24gfCBhdWdhc3NpZ24gKHlpZWxkX2V4cHJ8dGVzdGxpc3QpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz0nICh5aWVsZF9leHByfHRlc3RsaXN0X3N0YXJfZXhwcikpKikKKyAgICAgICBhbm5hc3NpZ246ICc6JyB0ZXN0IFsnPScgdGVzdF0KICAgICAgICB0ZXN0bGlzdF9zdGFyX2V4cHI6ICh0ZXN0fHN0YXJfZXhwcikgKCcsJyB0ZXN0fHN0YXJfZXhwcikqIFsnLCddCiAgICAgICAgYXVnYXNzaWduOiAnKz0nIHwgJy09JyB8ICcqPScgfCAnQD0nIHwgJy89JyB8ICclPScgfCAnJj0nIHwgJ3w9JyB8ICdePScKICAgICAgICAgICAgICAgICB8ICc8PD0nIHwgJz4+PScgfCAnKio9JyB8ICcvLz0nCkBAIC0yODU4LDYgKzI5NDUsNzYgQEAKIAogICAgICAgICByZXR1cm4gQXVnQXNzaWduKGV4cHIxLCBuZXdvcGVyYXRvciwgZXhwcjIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKICAgICB9CisgICAgZWxzZSBpZiAoVFlQRShDSElMRChuLCAxKSkgPT0gYW5uYXNzaWduKSB7CisgICAgICAgIGV4cHJfdHkgZXhwcjEsIGV4cHIyLCBleHByMzsKKyAgICAgICAgbm9kZSAqY2ggPSBDSElMRChuLCAwKTsKKyAgICAgICAgbm9kZSAqZGVlcCwgKmFubiA9IENISUxEKG4sIDEpOworICAgICAgICBpbnQgc2ltcGxlID0gMTsKKworICAgICAgICAvKiB3ZSBrZWVwIHRyYWNrIG9mIHBhcmVucyB0byBxdWFsaWZ5ICh4KSBhcyBleHByZXNzaW9uIG5vdCBuYW1lICovCisgICAgICAgIGRlZXAgPSBjaDsKKyAgICAgICAgd2hpbGUgKE5DSChkZWVwKSA9PSAxKSB7CisgICAgICAgICAgICBkZWVwID0gQ0hJTEQoZGVlcCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5DSChkZWVwKSA+IDAgJiYgVFlQRShDSElMRChkZWVwLCAwKSkgPT0gTFBBUikgeworICAgICAgICAgICAgc2ltcGxlID0gMDsKKyAgICAgICAgfQorICAgICAgICBleHByMSA9IGFzdF9mb3JfdGVzdGxpc3QoYywgY2gpOworICAgICAgICBpZiAoIWV4cHIxKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKGV4cHIxLT5raW5kKSB7CisgICAgICAgICAgICBjYXNlIE5hbWVfa2luZDoKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgZXhwcjEtPnYuTmFtZS5pZCwgbiwgMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGV4cHIxLT52Lk5hbWUuY3R4ID0gU3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBleHByMS0+di5BdHRyaWJ1dGUuYXR0ciwgbiwgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGV4cHIxLT52LkF0dHJpYnV0ZS5jdHggPSBTdG9yZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CisgICAgICAgICAgICAgICAgZXhwcjEtPnYuU3Vic2NyaXB0LmN0eCA9IFN0b3JlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBMaXN0X2tpbmQ6CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAib25seSBzaW5nbGUgdGFyZ2V0IChub3QgbGlzdCkgY2FuIGJlIGFubm90YXRlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgY2FzZSBUdXBsZV9raW5kOgorICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgc2luZ2xlIHRhcmdldCAobm90IHR1cGxlKSBjYW4gYmUgYW5ub3RhdGVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImlsbGVnYWwgdGFyZ2V0IGZvciBhbm5vdGF0aW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXhwcjEtPmtpbmQgIT0gTmFtZV9raW5kKSB7CisgICAgICAgICAgICBzaW1wbGUgPSAwOworICAgICAgICB9CisgICAgICAgIGNoID0gQ0hJTEQoYW5uLCAxKTsKKyAgICAgICAgZXhwcjIgPSBhc3RfZm9yX2V4cHIoYywgY2gpOworICAgICAgICBpZiAoIWV4cHIyKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoTkNIKGFubikgPT0gMikgeworICAgICAgICAgICAgcmV0dXJuIEFubkFzc2lnbihleHByMSwgZXhwcjIsIE5VTEwsIHNpbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2ggPSBDSElMRChhbm4sIDMpOworICAgICAgICAgICAgZXhwcjMgPSBhc3RfZm9yX2V4cHIoYywgY2gpOworICAgICAgICAgICAgaWYgKCFleHByMykgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEFubkFzc2lnbihleHByMSwgZXhwcjIsIGV4cHIzLCBzaW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgfQorICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGFzZGxfc2VxICp0YXJnZXRzOwpAQCAtMjk5Miw5ICszMTQ5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBmbG93X3N0bXQ6ICVkIiwgVFlQRShjaCkpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAidW5oYW5kbGVkIGZsb3cgc3RhdGVtZW50Iik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBhbGlhc190eQpAQCAtMzIwOCwxNCArMzM2MiwxNCBAQAogICAgICAgICAgICAgYWxpYXNfdHkgaW1wb3J0X2FsaWFzID0gYWxpYXNfZm9yX2ltcG9ydF9uYW1lKGMsIG4sIDEpOwogICAgICAgICAgICAgaWYgKCFpbXBvcnRfYWxpYXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFsaWFzZXMsIDAsIGltcG9ydF9hbGlhcyk7CisgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgMCwgaW1wb3J0X2FsaWFzKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOQ0gobik7IGkgKz0gMikgewogICAgICAgICAgICAgICAgIGFsaWFzX3R5IGltcG9ydF9hbGlhcyA9IGFsaWFzX2Zvcl9pbXBvcnRfbmFtZShjLCBDSElMRChuLCBpKSwgMSk7CiAgICAgICAgICAgICAgICAgaWYgKCFpbXBvcnRfYWxpYXMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYWxpYXNlcywgaSAvIDIsIGltcG9ydF9hbGlhcyk7CisgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFsaWFzZXMsIGkgLyAyLCBpbXBvcnRfYWxpYXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChtb2QgIT0gTlVMTCkKQEAgLTM4ODEsNyArNDAzNSw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzKQorcGFyc2VudW1iZXJfcmF3KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMpCiB7CiAgICAgY29uc3QgY2hhciAqZW5kOwogICAgIGxvbmcgeDsKQEAgLTM5MjQsNiArNDA3OCwzMSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorcGFyc2VudW1iZXIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcykKK3sKKyAgICBjaGFyICpkdXAsICplbmQ7CisgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CisKKyAgICBhc3NlcnQocyAhPSBOVUxMKTsKKworICAgIGlmIChzdHJjaHIocywgJ18nKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBwYXJzZW51bWJlcl9yYXcoYywgcyk7CisgICAgfQorICAgIC8qIENyZWF0ZSBhIGR1cGxpY2F0ZSB3aXRob3V0IHVuZGVyc2NvcmVzLiAqLworICAgIGR1cCA9IFB5TWVtX01hbGxvYyhzdHJsZW4ocykgKyAxKTsKKyAgICBlbmQgPSBkdXA7CisgICAgZm9yICg7ICpzOyBzKyspIHsKKyAgICAgICAgaWYgKCpzICE9ICdfJykgeworICAgICAgICAgICAgKmVuZCsrID0gKnM7CisgICAgICAgIH0KKyAgICB9CisgICAgKmVuZCA9ICdcMCc7CisgICAgcmVzID0gcGFyc2VudW1iZXJfcmF3KGMsIGR1cCk7CisgICAgUHlNZW1fRnJlZShkdXApOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBkZWNvZGVfdXRmOChzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICoqc1B0ciwgY29uc3QgY2hhciAqZW5kKQogewogICAgIGNvbnN0IGNoYXIgKnMsICp0OwpAQCAtMzkzNSw4NCArNDExNCw4NjIgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlY29kZV91bmljb2RlKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4sIGludCByYXdtb2RlLCBjb25zdCBjaGFyICplbmNvZGluZykKK2RlY29kZV91bmljb2RlX3dpdGhfZXNjYXBlcyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQogewogICAgIFB5T2JqZWN0ICp2LCAqdTsKICAgICBjaGFyICpidWY7CiAgICAgY2hhciAqcDsKICAgICBjb25zdCBjaGFyICplbmQ7CiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICB1ID0gTlVMTDsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICBpZiAobGVuID4gUFlfU0laRV9NQVggLyA2KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qICLDpCIgKDIgYnl0ZXMpIG1heSBiZWNvbWUgIlxVMDAwMDAwRTQiICgxMCBieXRlcyksIG9yIDE6NQotICAgICAgICAgICAiXMOkIiAoMyBieXRlcykgbWF5IGJlY29tZSAiXHUwMDVjXFUwMDAwMDBFNCIgKDE2IGJ5dGVzKSwgb3IgfjE6NiAqLwotICAgICAgICB1ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbiAqIDYpOwotICAgICAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHAgPSBidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKHUpOwotICAgICAgICBlbmQgPSBzICsgbGVuOwotICAgICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICAgICAgaWYgKCpzID09ICdcXCcpIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gKnMrKzsKLSAgICAgICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmNweShwLCAidTAwNWMiKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSA1OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsgLyogWFhYIGluZWZmaWNpZW50ICovCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnc7Ci0gICAgICAgICAgICAgICAgaW50IGtpbmQ7Ci0gICAgICAgICAgICAgICAgdm9pZCAqZGF0YTsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKLSAgICAgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7Ci0gICAgICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOwotICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHcpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDh4IiwgY2hyKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSAxMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogU2hvdWxkIGJlIGltcG9zc2libGUgdG8gb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgICAgICBhc3NlcnQocCAtIGJ1ZiA8PSBQeV9TSVpFKHUpKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICpwKysgPSAqcysrOworICAgIC8qIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgaWYgKGxlbiA+IFNJWkVfTUFYIC8gNikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogIsOkIiAoMiBieXRlcykgbWF5IGJlY29tZSAiXFUwMDAwMDBFNCIgKDEwIGJ5dGVzKSwgb3IgMTo1CisgICAgICAgIlzDpCIgKDMgYnl0ZXMpIG1heSBiZWNvbWUgIlx1MDA1Y1xVMDAwMDAwRTQiICgxNiBieXRlcyksIG9yIH4xOjYgKi8KKyAgICB1ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGxlbiAqIDYpOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAgPSBidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKHUpOworICAgIGVuZCA9IHMgKyBsZW47CisgICAgd2hpbGUgKHMgPCBlbmQpIHsKKyAgICAgICAgaWYgKCpzID09ICdcXCcpIHsKKyAgICAgICAgICAgICpwKysgPSAqcysrOworICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgeworICAgICAgICAgICAgICAgIHN0cmNweShwLCAidTAwNWMiKTsKKyAgICAgICAgICAgICAgICBwICs9IDU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbGVuID0gcCAtIGJ1ZjsKLSAgICAgICAgcyA9IGJ1ZjsKKyAgICAgICAgaWYgKCpzICYgMHg4MCkgeyAvKiBYWFggaW5lZmZpY2llbnQgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICp3OworICAgICAgICAgICAgaW50IGtpbmQ7CisgICAgICAgICAgICB2b2lkICpkYXRhOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGk7CisgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7CisgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHUpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHcpOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodyk7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgIHNwcmludGYocCwgIlxcVSUwOHgiLCBjaHIpOworICAgICAgICAgICAgICAgIHAgKz0gMTA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBTaG91bGQgYmUgaW1wb3NzaWJsZSB0byBvdmVyZmxvdyAqLworICAgICAgICAgICAgYXNzZXJ0KHAgLSBidWYgPD0gUHlfU0laRSh1KSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqcCsrID0gKnMrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICBpZiAocmF3bW9kZSkKLSAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVSYXdVbmljb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICB2ID0gUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMKTsKKyAgICBsZW4gPSBwIC0gYnVmOworICAgIHMgPSBidWY7CisKKyAgICB2ID0gUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUocywgbGVuLCBOVUxMKTsKICAgICBQeV9YREVDUkVGKHUpOwogICAgIHJldHVybiB2OwogfQogCi0vKiBzIGlzIGEgUHl0aG9uIHN0cmluZyBsaXRlcmFsLCBpbmNsdWRpbmcgdGhlIGJyYWNrZXRpbmcgcXVvdGUgY2hhcmFjdGVycywKLSAqIGFuZCByICYvb3IgYiBwcmVmaXhlcyAoaWYgYW55KSwgYW5kIGVtYmVkZGVkIGVzY2FwZSBzZXF1ZW5jZXMgKGlmIGFueSkuCi0gKiBwYXJzZXN0ciBwYXJzZXMgaXQsIGFuZCByZXR1cm5zIHRoZSBkZWNvZGVkIFB5dGhvbiBzdHJpbmcgb2JqZWN0LgotICovCi1zdGF0aWMgUHlPYmplY3QgKgotcGFyc2VzdHIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpCisvKiBDb21waWxlIHRoaXMgZXhwcmVzc2lvbiBpbiB0byBhbiBleHByX3R5LiAgQWRkIHBhcmVucyBhcm91bmQgdGhlCisgICBleHByZXNzaW9uLCBpbiBvcmRlciB0byBhbGxvdyBsZWFkaW5nIHNwYWNlcyBpbiB0aGUgZXhwcmVzc2lvbi4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX2NvbXBpbGVfZXhwcihjb25zdCBjaGFyICpleHByX3N0YXJ0LCBjb25zdCBjaGFyICpleHByX2VuZCwKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCisKK3sKKyAgICBpbnQgYWxsX3doaXRlc3BhY2UgPSAxOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlDb21waWxlckZsYWdzIGNmOworICAgIG1vZF90eSBtb2Q7CisgICAgY2hhciAqc3RyOworICAgIFB5T2JqZWN0ICpvOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydChleHByX2VuZCA+PSBleHByX3N0YXJ0KTsKKyAgICBhc3NlcnQoKihleHByX3N0YXJ0LTEpID09ICd7Jyk7CisgICAgYXNzZXJ0KCpleHByX2VuZCA9PSAnfScgfHwgKmV4cHJfZW5kID09ICchJyB8fCAqZXhwcl9lbmQgPT0gJzonKTsKKworICAgIC8qIFdlIGtub3cgdGhlcmUgYXJlIG5vIGVzY2FwZXMgaGVyZSwgYmVjYXVzZSBiYWNrc2xhc2hlcyBhcmUgbm90IGFsbG93ZWQsCisgICAgICAgYW5kIHdlIGtub3cgaXQncyB1dGYtOCBlbmNvZGVkIChwZXIgUEVQIDI2MykuICBCdXQsIGluIG9yZGVyIHRvIGNoZWNrCisgICAgICAgdGhhdCBlYWNoIGNoYXIgaXMgbm90IHdoaXRlc3BhY2UsIHdlIG5lZWQgdG8gZGVjb2RlIGl0IHRvIHVuaWNvZGUuCisgICAgICAgV2hpY2ggaXMgdW5mb3J0dW5hdGUsIGJ1dCBzdWNoIGlzIGxpZmUuICovCisKKyAgICAvKiBJZiB0aGUgc3Vic3RyaW5nIGlzIGFsbCB3aGl0ZXNwYWNlLCBpdCdzIGFuIGVycm9yLiAgV2UgbmVlZCB0byBjYXRjaAorICAgICAgIHRoaXMgaGVyZSwgYW5kIG5vdCB3aGVuIHdlIGNhbGwgUHlQYXJzZXJfQVNURnJvbVN0cmluZywgYmVjYXVzZSB0dXJuaW5nCisgICAgICAgdGhlIGV4cHJlc3Npb24gJycgaW4gdG8gJygpJyB3b3VsZCBnbyBmcm9tIGJlaW5nIGludmFsaWQgdG8gdmFsaWQuICovCisgICAgLyogTm90ZSB0aGF0IHRoaXMgY29kZSBzYXlzIGFuIGVtcHR5IHN0cmluZyBpcyBhbGwgd2hpdGVzcGFjZS4gIFRoYXQncworICAgICAgIGltcG9ydGFudC4gIFRoZXJlJ3MgYSB0ZXN0IGZvciBpdDogZid7fScuICovCisgICAgbyA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGV4cHJfc3RhcnQsIGV4cHJfZW5kLWV4cHJfc3RhcnQsIE5VTEwpOworICAgIGlmIChvID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG8pOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEobyk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1NQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkgeworICAgICAgICAgICAgYWxsX3doaXRlc3BhY2UgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfREVDUkVGKG8pOworICAgIGlmIChhbGxfd2hpdGVzcGFjZSkgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBlbXB0eSBleHByZXNzaW9uIG5vdCBhbGxvd2VkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIFJldXNlIGxlbiB0byBiZSB0aGUgbGVuZ3RoIG9mIHRoZSB1dGYtOCBpbnB1dCBzdHJpbmcuICovCisgICAgbGVuID0gZXhwcl9lbmQgLSBleHByX3N0YXJ0OworICAgIC8qIEFsbG9jYXRlIDMgZXh0cmEgYnl0ZXM6IG9wZW4gcGFyZW4sIGNsb3NlIHBhcmVuLCBudWxsIGJ5dGUuICovCisgICAgc3RyID0gUHlNZW1fUmF3TWFsbG9jKGxlbiArIDMpOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHJbMF0gPSAnKCc7CisgICAgbWVtY3B5KHN0cisxLCBleHByX3N0YXJ0LCBsZW4pOworICAgIHN0cltsZW4rMV0gPSAnKSc7CisgICAgc3RyW2xlbisyXSA9IDA7CisKKyAgICBjZi5jZl9mbGFncyA9IFB5Q0ZfT05MWV9BU1Q7CisgICAgbW9kID0gUHlQYXJzZXJfQVNURnJvbVN0cmluZyhzdHIsICI8ZnN0cmluZz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZXZhbF9pbnB1dCwgJmNmLCBjLT5jX2FyZW5hKTsKKyAgICBQeU1lbV9SYXdGcmVlKHN0cik7CisgICAgaWYgKCFtb2QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBtb2QtPnYuRXhwcmVzc2lvbi5ib2R5OworfQorCisvKiBSZXR1cm4gLTEgb24gZXJyb3IuCisKKyAgIFJldHVybiAwIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgbGl0ZXJhbC4KKworICAgUmV0dXJuIDEgaWYgd2UgaGF2ZW4ndCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxpdGVyYWwsIGJ1dCB3ZSB3YW50CisgICB0aGUgY2FsbGVyIHRvIHByb2Nlc3MgdGhlIGxpdGVyYWwgdXAgdG8gdGhpcyBwb2ludC4gVXNlZCBmb3IKKyAgIGRvdWJsZWQgYnJhY2VzLgorKi8KK3N0YXRpYyBpbnQKK2ZzdHJpbmdfZmluZF9saXRlcmFsKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqbGl0ZXJhbCwgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBHZXQgYW55IGxpdGVyYWwgc3RyaW5nLiBJdCBlbmRzIHdoZW4gd2UgaGl0IGFuIHVuLWRvdWJsZWQgbGVmdAorICAgICAgIGJyYWNlICh3aGljaCBpc24ndCBwYXJ0IG9mIGEgdW5pY29kZSBuYW1lIGVzY2FwZSBzdWNoIGFzCisgICAgICAgIlxOe0VVTEVSIENPTlNUQU5UfSIpLCBvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovCisKKyAgICBjb25zdCBjaGFyICpsaXRlcmFsX3N0YXJ0ID0gKnN0cjsKKyAgICBjb25zdCBjaGFyICpsaXRlcmFsX2VuZDsKKyAgICBpbnQgaW5fbmFtZWRfZXNjYXBlID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKworICAgIGFzc2VydCgqbGl0ZXJhbCA9PSBOVUxMKTsKKyAgICBmb3IgKDsgKnN0ciA8IGVuZDsgKCpzdHIpKyspIHsKKyAgICAgICAgY2hhciBjaCA9ICoqc3RyOworICAgICAgICBpZiAoIWluX25hbWVkX2VzY2FwZSAmJiBjaCA9PSAneycgJiYgKCpzdHIpLWxpdGVyYWxfc3RhcnQgPj0gMiAmJgorICAgICAgICAgICAgKigqc3RyLTIpID09ICdcXCcgJiYgKigqc3RyLTEpID09ICdOJykgeworICAgICAgICAgICAgaW5fbmFtZWRfZXNjYXBlID0gMTsKKyAgICAgICAgfSBlbHNlIGlmIChpbl9uYW1lZF9lc2NhcGUgJiYgY2ggPT0gJ30nKSB7CisgICAgICAgICAgICBpbl9uYW1lZF9lc2NhcGUgPSAwOworICAgICAgICB9IGVsc2UgaWYgKGNoID09ICd7JyB8fCBjaCA9PSAnfScpIHsKKyAgICAgICAgICAgIC8qIENoZWNrIGZvciBkb3VibGVkIGJyYWNlcywgYnV0IG9ubHkgYXQgdGhlIHRvcCBsZXZlbC4gSWYKKyAgICAgICAgICAgICAgIHdlIGNoZWNrZWQgYXQgZXZlcnkgbGV2ZWwsIHRoZW4gZid7MDp7M319JyB3b3VsZCBmYWlsCisgICAgICAgICAgICAgICB3aXRoIHRoZSB0d28gY2xvc2luZyBicmFjZXMuICovCisgICAgICAgICAgICBpZiAocmVjdXJzZV9sdmwgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmICgqc3RyKzEgPCBlbmQgJiYgKigqc3RyKzEpID09IGNoKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHRlbGwgdGhlIGNhbGxlciB0aGF0IHRoZSBsaXRlcmFsIGVuZHMKKyAgICAgICAgICAgICAgICAgICAgICAgaGVyZSwgYnV0IHRoYXQgdGhleSBzaG91bGQgY29udGludWUgc2Nhbm5pbmcuIEJ1dCBhbHNvCisgICAgICAgICAgICAgICAgICAgICAgIHNraXAgb3ZlciB0aGUgc2Vjb25kIGJyYWNlIHdoZW4gd2UgcmVzdW1lIHNjYW5uaW5nLiAqLworICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZCA9ICpzdHIrMTsKKyAgICAgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogV2hlcmUgYSBzaW5nbGUgJ3snIGlzIHRoZSBzdGFydCBvZiBhIG5ldyBleHByZXNzaW9uLCBhCisgICAgICAgICAgICAgICAgICAgc2luZ2xlICd9JyBpcyBub3QgYWxsb3dlZC4gKi8KKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ30nKSB7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHNpbmdsZSAnfScgaXMgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFdlJ3JlIGVpdGhlciBhdCBhICd7Jywgd2hpY2ggbWVhbnMgd2UncmUgc3RhcnRpbmcgYW5vdGhlcgorICAgICAgICAgICAgICAgZXhwcmVzc2lvbjsgb3IgYSAnfScsIHdoaWNoIG1lYW5zIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhpcworICAgICAgICAgICAgICAgZi1zdHJpbmcgKGZvciBhIG5lc3RlZCBmb3JtYXRfc3BlYykuICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBsaXRlcmFsX2VuZCA9ICpzdHI7CisgICAgYXNzZXJ0KCpzdHIgPD0gZW5kKTsKKyAgICBhc3NlcnQoKnN0ciA9PSBlbmQgfHwgKipzdHIgPT0gJ3snIHx8ICoqc3RyID09ICd9Jyk7Citkb25lOgorICAgIGlmIChsaXRlcmFsX3N0YXJ0ICE9IGxpdGVyYWxfZW5kKSB7CisgICAgICAgIGlmIChyYXcpCisgICAgICAgICAgICAqbGl0ZXJhbCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwobGl0ZXJhbF9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsX2VuZC1saXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqbGl0ZXJhbCA9IGRlY29kZV91bmljb2RlX3dpdGhfZXNjYXBlcyhjLCBsaXRlcmFsX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbF9lbmQtbGl0ZXJhbF9zdGFydCk7CisgICAgICAgIGlmICghKmxpdGVyYWwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gYmVjYXVzZSBwYXJzaW5nIGlzIHJlY3Vyc2l2ZS4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX3BhcnNlKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKTsKKworLyogUGFyc2UgdGhlIGYtc3RyaW5nIGF0ICpzdHIsIGVuZGluZyBhdCBlbmQuICBXZSBrbm93ICpzdHIgc3RhcnRzIGFuCisgICBleHByZXNzaW9uIChzbyBpdCBtdXN0IGJlIGEgJ3snKS4gUmV0dXJucyB0aGUgRm9ybWF0dGVkVmFsdWUgbm9kZSwKKyAgIHdoaWNoIGluY2x1ZGVzIHRoZSBleHByZXNzaW9uLCBjb252ZXJzaW9uIGNoYXJhY3RlciwgYW5kCisgICBmb3JtYXRfc3BlYyBleHByZXNzaW9uLgorCisgICBOb3RlIHRoYXQgSSBkb24ndCBkbyBhIHBlcmZlY3Qgam9iIGhlcmU6IEkgZG9uJ3QgbWFrZSBzdXJlIHRoYXQgYQorICAgY2xvc2luZyBicmFjZSBkb2Vzbid0IG1hdGNoIGFuIG9wZW5pbmcgcGFyZW4sIGZvciBleGFtcGxlLiBJdAorICAgZG9lc24ndCBuZWVkIHRvIGVycm9yIG9uIGFsbCBpbnZhbGlkIGV4cHJlc3Npb25zLCBqdXN0IGNvcnJlY3RseQorICAgZmluZCB0aGUgZW5kIG9mIGFsbCB2YWxpZCBvbmVzLiBBbnkgZXJyb3JzIGluc2lkZSB0aGUgZXhwcmVzc2lvbgorICAgd2lsbCBiZSBjYXVnaHQgd2hlbiB3ZSBwYXJzZSBpdCBsYXRlci4gKi8KK3N0YXRpYyBpbnQKK2ZzdHJpbmdfZmluZF9leHByKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgZXhwcl90eSAqZXhwcmVzc2lvbiwgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICAvKiBSZXR1cm4gLTEgb24gZXJyb3IsIGVsc2UgMC4gKi8KKworICAgIGNvbnN0IGNoYXIgKmV4cHJfc3RhcnQ7CisgICAgY29uc3QgY2hhciAqZXhwcl9lbmQ7CisgICAgZXhwcl90eSBzaW1wbGVfZXhwcmVzc2lvbjsKKyAgICBleHByX3R5IGZvcm1hdF9zcGVjID0gTlVMTDsgLyogT3B0aW9uYWwgZm9ybWF0IHNwZWNpZmllci4gKi8KKyAgICBpbnQgY29udmVyc2lvbiA9IC0xOyAvKiBUaGUgY29udmVyc2lvbiBjaGFyLiAtMSBpZiBub3Qgc3BlY2lmaWVkLiAqLworCisgICAgLyogMCBpZiB3ZSdyZSBub3QgaW4gYSBzdHJpbmcsIGVsc2UgdGhlIHF1b3RlIGNoYXIgd2UncmUgdHJ5aW5nIHRvCisgICAgICAgbWF0Y2ggKHNpbmdsZSBvciBkb3VibGUgcXVvdGUpLiAqLworICAgIGNoYXIgcXVvdGVfY2hhciA9IDA7CisKKyAgICAvKiBJZiB3ZSdyZSBpbnNpZGUgYSBzdHJpbmcsIDE9bm9ybWFsLCAzPXRyaXBsZS1xdW90ZWQuICovCisgICAgaW50IHN0cmluZ190eXBlID0gMDsKKworICAgIC8qIEtlZXAgdHJhY2sgb2YgbmVzdGluZyBsZXZlbCBmb3IgYnJhY2VzL3BhcmVucy9icmFja2V0cyBpbgorICAgICAgIGV4cHJlc3Npb25zLiAqLworICAgIFB5X3NzaXplX3QgbmVzdGVkX2RlcHRoID0gMDsKKworICAgIC8qIENhbiBvbmx5IG5lc3Qgb25lIGxldmVsIGRlZXAuICovCisgICAgaWYgKHJlY3Vyc2VfbHZsID49IDIpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogZXhwcmVzc2lvbnMgbmVzdGVkIHRvbyBkZWVwbHkiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIFRoZSBmaXJzdCBjaGFyIG11c3QgYmUgYSBsZWZ0IGJyYWNlLCBvciB3ZSB3b3VsZG4ndCBoYXZlIGdvdHRlbgorICAgICAgIGhlcmUuIFNraXAgb3ZlciBpdC4gKi8KKyAgICBhc3NlcnQoKipzdHIgPT0gJ3snKTsKKyAgICAqc3RyICs9IDE7CisKKyAgICBleHByX3N0YXJ0ID0gKnN0cjsKKyAgICBmb3IgKDsgKnN0ciA8IGVuZDsgKCpzdHIpKyspIHsKKyAgICAgICAgY2hhciBjaDsKKworICAgICAgICAvKiBMb29wIGludmFyaWFudHMuICovCisgICAgICAgIGFzc2VydChuZXN0ZWRfZGVwdGggPj0gMCk7CisgICAgICAgIGFzc2VydCgqc3RyID49IGV4cHJfc3RhcnQgJiYgKnN0ciA8IGVuZCk7CisgICAgICAgIGlmIChxdW90ZV9jaGFyKQorICAgICAgICAgICAgYXNzZXJ0KHN0cmluZ190eXBlID09IDEgfHwgc3RyaW5nX3R5cGUgPT0gMyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChzdHJpbmdfdHlwZSA9PSAwKTsKKworICAgICAgICBjaCA9ICoqc3RyOworICAgICAgICAvKiBOb3doZXJlIGluc2lkZSBhbiBleHByZXNzaW9uIGlzIGEgYmFja3NsYXNoIGFsbG93ZWQuICovCisgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CisgICAgICAgICAgICAvKiBFcnJvcjogY2FuJ3QgaW5jbHVkZSBhIGJhY2tzbGFzaCBjaGFyYWN0ZXIsIGluc2lkZQorICAgICAgICAgICAgICAgcGFyZW5zIG9yIHN0cmluZ3Mgb3Igbm90LiAqLworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgaW5jbHVkZSBhIGJhY2tzbGFzaCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGlmIChxdW90ZV9jaGFyKSB7CisgICAgICAgICAgICAvKiBXZSdyZSBpbnNpZGUgYSBzdHJpbmcuIFNlZSBpZiB3ZSdyZSBhdCB0aGUgZW5kLiAqLworICAgICAgICAgICAgLyogVGhpcyBjb2RlIG5lZWRzIHRvIGltcGxlbWVudCB0aGUgc2FtZSBub24tZXJyb3IgbG9naWMKKyAgICAgICAgICAgICAgIGFzIHRva19nZXQgZnJvbSB0b2tlbml6ZXIuYywgYXQgdGhlIGxldHRlcl9xdW90ZQorICAgICAgICAgICAgICAgbGFiZWwuIFRvIGFjdHVhbGx5IHNoYXJlIHRoYXQgY29kZSB3b3VsZCBiZSBhCisgICAgICAgICAgICAgICBuaWdodG1hcmUuIEJ1dCwgaXQncyB1bmxpa2VseSB0byBjaGFuZ2UgYW5kIGlzIHNtYWxsLAorICAgICAgICAgICAgICAgc28gZHVwbGljYXRlIGl0IGhlcmUuIE5vdGUgd2UgZG9uJ3QgbmVlZCB0byBjYXRjaCBhbGwKKyAgICAgICAgICAgICAgIG9mIHRoZSBlcnJvcnMsIHNpbmNlIHRoZXknbGwgYmUgY2F1Z2h0IHdoZW4gcGFyc2luZyB0aGUKKyAgICAgICAgICAgICAgIGV4cHJlc3Npb24uIFdlIGp1c3QgbmVlZCB0byBtYXRjaCB0aGUgbm9uLWVycm9yCisgICAgICAgICAgICAgICBjYXNlcy4gVGh1cyB3ZSBjYW4gaWdub3JlIFxuIGluIHNpbmdsZS1xdW90ZWQgc3RyaW5ncywKKyAgICAgICAgICAgICAgIGZvciBleGFtcGxlLiBPciBub24tdGVybWluYXRlZCBzdHJpbmdzLiAqLworICAgICAgICAgICAgaWYgKGNoID09IHF1b3RlX2NoYXIpIHsKKyAgICAgICAgICAgICAgICAvKiBEb2VzIHRoaXMgbWF0Y2ggdGhlIHN0cmluZ190eXBlIChzaW5nbGUgb3IgdHJpcGxlCisgICAgICAgICAgICAgICAgICAgcXVvdGVkKT8gKi8KKyAgICAgICAgICAgICAgICBpZiAoc3RyaW5nX3R5cGUgPT0gMykgeworICAgICAgICAgICAgICAgICAgICBpZiAoKnN0cisyIDwgZW5kICYmICooKnN0cisxKSA9PSBjaCAmJiAqKCpzdHIrMikgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgYSB0cmlwbGUgcXVvdGVkIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICpzdHIgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlX2NoYXIgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBXZSdyZSBhdCB0aGUgZW5kIG9mIGEgbm9ybWFsIHN0cmluZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgcXVvdGVfY2hhciA9IDA7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdcJycgfHwgY2ggPT0gJyInKSB7CisgICAgICAgICAgICAvKiBJcyB0aGlzIGEgdHJpcGxlIHF1b3RlZCBzdHJpbmc/ICovCisgICAgICAgICAgICBpZiAoKnN0cisyIDwgZW5kICYmICooKnN0cisxKSA9PSBjaCAmJiAqKCpzdHIrMikgPT0gY2gpIHsKKyAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSA9IDM7CisgICAgICAgICAgICAgICAgKnN0ciArPSAyOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBTdGFydCBvZiBhIG5vcm1hbCBzdHJpbmcuICovCisgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogU3RhcnQgbG9va2luZyBmb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLworICAgICAgICAgICAgcXVvdGVfY2hhciA9IGNoOworICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdbJyB8fCBjaCA9PSAneycgfHwgY2ggPT0gJygnKSB7CisgICAgICAgICAgICBuZXN0ZWRfZGVwdGgrKzsKKyAgICAgICAgfSBlbHNlIGlmIChuZXN0ZWRfZGVwdGggIT0gMCAmJgorICAgICAgICAgICAgICAgICAgIChjaCA9PSAnXScgfHwgY2ggPT0gJ30nIHx8IGNoID09ICcpJykpIHsKKyAgICAgICAgICAgIG5lc3RlZF9kZXB0aC0tOworICAgICAgICB9IGVsc2UgaWYgKGNoID09ICcjJykgeworICAgICAgICAgICAgLyogRXJyb3I6IGNhbid0IGluY2x1ZGUgYSBjb21tZW50IGNoYXJhY3RlciwgaW5zaWRlIHBhcmVucworICAgICAgICAgICAgICAgb3Igbm90LiAqLworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgY2Fubm90IGluY2x1ZGUgJyMnIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0gZWxzZSBpZiAobmVzdGVkX2RlcHRoID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAoY2ggPT0gJyEnIHx8IGNoID09ICc6JyB8fCBjaCA9PSAnfScpKSB7CisgICAgICAgICAgICAvKiBGaXJzdCwgdGVzdCBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiAiIT0iLiBTaW5jZSAnPScgaXMKKyAgICAgICAgICAgICAgIG5vdCBhbiBhbGxvd2VkIGNvbnZlcnNpb24gY2hhcmFjdGVyLCBub3RoaW5nIGlzIGxvc3QgaW4KKyAgICAgICAgICAgICAgIHRoaXMgdGVzdC4gKi8KKyAgICAgICAgICAgIGlmIChjaCA9PSAnIScgJiYgKnN0cisxIDwgZW5kICYmICooKnN0cisxKSA9PSAnPScpIHsKKyAgICAgICAgICAgICAgICAvKiBUaGlzIGlzbid0IGEgY29udmVyc2lvbiBjaGFyYWN0ZXIsIGp1c3QgY29udGludWUuICovCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBOb3JtYWwgd2F5IG91dCBvZiB0aGlzIGxvb3AuICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIEp1c3QgY29uc3VtZSB0aGlzIGNoYXIgYW5kIGxvb3AgYXJvdW5kLiAqLworICAgICAgICB9CisgICAgfQorICAgIGV4cHJfZW5kID0gKnN0cjsKKyAgICAvKiBJZiB3ZSBsZWF2ZSB0aGlzIGxvb3AgaW4gYSBzdHJpbmcgb3Igd2l0aCBtaXNtYXRjaGVkIHBhcmVucywgd2UKKyAgICAgICBkb24ndCBjYXJlLiBXZSdsbCBnZXQgYSBzeW50YXggZXJyb3Igd2hlbiBjb21waWxpbmcgdGhlCisgICAgICAgZXhwcmVzc2lvbi4gQnV0LCB3ZSBjYW4gcHJvZHVjZSBhIGJldHRlciBlcnJvciBtZXNzYWdlLCBzbworICAgICAgIGxldCdzIGp1c3QgZG8gdGhhdC4qLworICAgIGlmIChxdW90ZV9jaGFyKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IHVudGVybWluYXRlZCBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAobmVzdGVkX2RlcHRoKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IG1pc21hdGNoZWQgJygnLCAneycsIG9yICdbJyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKworICAgIC8qIENvbXBpbGUgdGhlIGV4cHJlc3Npb24gYXMgc29vbiBhcyBwb3NzaWJsZSwgc28gd2Ugc2hvdyBlcnJvcnMKKyAgICAgICByZWxhdGVkIHRvIHRoZSBleHByZXNzaW9uIGJlZm9yZSBlcnJvcnMgcmVsYXRlZCB0byB0aGUKKyAgICAgICBjb252ZXJzaW9uIG9yIGZvcm1hdF9zcGVjLiAqLworICAgIHNpbXBsZV9leHByZXNzaW9uID0gZnN0cmluZ19jb21waWxlX2V4cHIoZXhwcl9zdGFydCwgZXhwcl9lbmQsIGMsIG4pOworICAgIGlmICghc2ltcGxlX2V4cHJlc3Npb24pCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIENoZWNrIGZvciBhIGNvbnZlcnNpb24gY2hhciwgaWYgcHJlc2VudC4gKi8KKyAgICBpZiAoKipzdHIgPT0gJyEnKSB7CisgICAgICAgICpzdHIgKz0gMTsKKyAgICAgICAgaWYgKCpzdHIgPj0gZW5kKQorICAgICAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAgICAgY29udmVyc2lvbiA9ICoqc3RyOworICAgICAgICAqc3RyICs9IDE7CisKKyAgICAgICAgLyogVmFsaWRhdGUgdGhlIGNvbnZlcnNpb24uICovCisgICAgICAgIGlmICghKGNvbnZlcnNpb24gPT0gJ3MnIHx8IGNvbnZlcnNpb24gPT0gJ3InCisgICAgICAgICAgICAgIHx8IGNvbnZlcnNpb24gPT0gJ2EnKSkgeworICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogaW52YWxpZCBjb252ZXJzaW9uIGNoYXJhY3RlcjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAncycsICdyJywgb3IgJ2EnIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBDaGVjayBmb3IgdGhlIGZvcm1hdCBzcGVjLCBpZiBwcmVzZW50LiAqLworICAgIGlmICgqc3RyID49IGVuZCkKKyAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisgICAgaWYgKCoqc3RyID09ICc6JykgeworICAgICAgICAqc3RyICs9IDE7CisgICAgICAgIGlmICgqc3RyID49IGVuZCkKKyAgICAgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgICAgIC8qIFBhcnNlIHRoZSBmb3JtYXQgc3BlYy4gKi8KKyAgICAgICAgZm9ybWF0X3NwZWMgPSBmc3RyaW5nX3BhcnNlKHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsKzEsIGMsIG4pOworICAgICAgICBpZiAoIWZvcm1hdF9zcGVjKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICgqc3RyID49IGVuZCB8fCAqKnN0ciAhPSAnfScpCisgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgLyogV2UncmUgYXQgYSByaWdodCBicmFjZS4gQ29uc3VtZSBpdC4gKi8KKyAgICBhc3NlcnQoKnN0ciA8IGVuZCk7CisgICAgYXNzZXJ0KCoqc3RyID09ICd9Jyk7CisgICAgKnN0ciArPSAxOworCisgICAgLyogQW5kIG5vdyBjcmVhdGUgdGhlIEZvcm1hdHRlZFZhbHVlIG5vZGUgdGhhdCByZXByZXNlbnRzIHRoaXMKKyAgICAgICBlbnRpcmUgZXhwcmVzc2lvbiB3aXRoIHRoZSBjb252ZXJzaW9uIGFuZCBmb3JtYXQgc3BlYy4gKi8KKyAgICAqZXhwcmVzc2lvbiA9IEZvcm1hdHRlZFZhbHVlKHNpbXBsZV9leHByZXNzaW9uLCBjb252ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Y19hcmVuYSk7CisgICAgaWYgKCEqZXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIDA7CisKK3VuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzoKKyAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBleHBlY3RpbmcgJ30nIik7CisgICAgcmV0dXJuIC0xOworfQorCisvKiBSZXR1cm4gLTEgb24gZXJyb3IuCisKKyAgIFJldHVybiAwIGlmIHdlIGhhdmUgYSBsaXRlcmFsIChwb3NzaWJsZSB6ZXJvIGxlbmd0aCkgYW5kIGFuCisgICBleHByZXNzaW9uICh6ZXJvIGxlbmd0aCBpZiBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCisKKyAgIFJldHVybiAxIGlmIHdlIGhhdmUgYSBsaXRlcmFsLCBidXQgbm8gZXhwcmVzc2lvbiwgYW5kIHdlIHdhbnQgdGhlCisgICBjYWxsZXIgdG8gY2FsbCB1cyBhZ2Fpbi4gVGhpcyBpcyB1c2VkIHRvIGRlYWwgd2l0aCBkb3VibGVkCisgICBicmFjZXMuCisKKyAgIFdoZW4gY2FsbGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzdHJpbmcgJ2F7e2J7MH1jJywgdGhpcyBmdW5jdGlvbgorICAgd2lsbCByZXR1cm46CisKKyAgIDEuIHRoZSBsaXRlcmFsICdheycgd2l0aCBubyBleHByZXNzaW9uLCBhbmQgYSByZXR1cm4gdmFsdWUKKyAgICAgIG9mIDEuIERlc3BpdGUgdGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vIGV4cHJlc3Npb24sIHRoZSByZXR1cm4KKyAgICAgIHZhbHVlIG9mIDEgbWVhbnMgd2UncmUgbm90IGZpbmlzaGVkIHlldC4KKworICAgMi4gdGhlIGxpdGVyYWwgJ2InIGFuZCB0aGUgZXhwcmVzc2lvbiAnMCcsIHdpdGggYSByZXR1cm4gdmFsdWUgb2YKKyAgICAgIDAuIFRoZSBmYWN0IHRoYXQgdGhlcmUncyBhbiBleHByZXNzaW9uIG1lYW5zIHdlJ3JlIG5vdCBmaW5pc2hlZC4KKworICAgMy4gbGl0ZXJhbCAnYycgd2l0aCBubyBleHByZXNzaW9uIGFuZCBhIHJldHVybiB2YWx1ZSBvZiAwLiBUaGUKKyAgICAgIGNvbWJpbmF0aW9uIG9mIHRoZSByZXR1cm4gdmFsdWUgb2YgMCB3aXRoIG5vIGV4cHJlc3Npb24gbWVhbnMKKyAgICAgIHdlJ3JlIGZpbmlzaGVkLgorKi8KK3N0YXRpYyBpbnQKK2ZzdHJpbmdfZmluZF9saXRlcmFsX2FuZF9leHByKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZWN1cnNlX2x2bCwgUHlPYmplY3QgKipsaXRlcmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSAqZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgaW50IHJlc3VsdDsKKworICAgIGFzc2VydCgqbGl0ZXJhbCA9PSBOVUxMICYmICpleHByZXNzaW9uID09IE5VTEwpOworCisgICAgLyogR2V0IGFueSBsaXRlcmFsIHN0cmluZy4gKi8KKyAgICByZXN1bHQgPSBmc3RyaW5nX2ZpbmRfbGl0ZXJhbChzdHIsIGVuZCwgcmF3LCBsaXRlcmFsLCByZWN1cnNlX2x2bCwgYywgbik7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBhc3NlcnQocmVzdWx0ID09IDAgfHwgcmVzdWx0ID09IDEpOworCisgICAgaWYgKHJlc3VsdCA9PSAxKQorICAgICAgICAvKiBXZSBoYXZlIGEgbGl0ZXJhbCwgYnV0IGRvbid0IGxvb2sgYXQgdGhlIGV4cHJlc3Npb24uICovCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKCpzdHIgPj0gZW5kIHx8ICoqc3RyID09ICd9JykKKyAgICAgICAgLyogV2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9yIHRoZSBlbmQgb2YgYSBuZXN0ZWQKKyAgICAgICAgICAgZi1zdHJpbmc6IG5vIGV4cHJlc3Npb24uIFRoZSB0b3AtbGV2ZWwgZXJyb3IgY2FzZSB3aGVyZSB3ZQorICAgICAgICAgICBleHBlY3QgdG8gYmUgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGJ1dCB3ZSdyZSBhdCBhICd9JyBpcworICAgICAgICAgICBoYW5kbGVkIGxhdGVyLiAqLworICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIFdlIG11c3Qgbm93IGJlIHRoZSBzdGFydCBvZiBhbiBleHByZXNzaW9uLCBvbiBhICd7Jy4gKi8KKyAgICBhc3NlcnQoKipzdHIgPT0gJ3snKTsKKworICAgIGlmIChmc3RyaW5nX2ZpbmRfZXhwcihzdHIsIGVuZCwgcmF3LCByZWN1cnNlX2x2bCwgZXhwcmVzc2lvbiwgYywgbikgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKCpsaXRlcmFsKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKyNkZWZpbmUgRVhQUkxJU1RfTl9DQUNIRUQgIDY0CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICAvKiBJbmNyZW1lbnRhbGx5IGJ1aWxkIGFuIGFycmF5IG9mIGV4cHJfdHksIHNvIGJlIHVzZWQgaW4gYW4KKyAgICAgICBhc2RsX3NlcS4gQ2FjaGUgc29tZSBzbWFsbCBidXQgcmVhc29uYWJseSBzaXplZCBudW1iZXIgb2YKKyAgICAgICBleHByX3R5J3MsIGFuZCB0aGVuIGFmdGVyIHRoYXQgc3RhcnQgZHluYW1pY2FsbHkgYWxsb2NhdGluZywKKyAgICAgICBkb3VibGluZyB0aGUgbnVtYmVyIGFsbG9jYXRlZCBlYWNoIHRpbWUuIE5vdGUgdGhhdCB0aGUgZi1zdHJpbmcKKyAgICAgICBmJ3swfWF7MX0nIGNvbnRhaW5zIDMgZXhwcl90eSdzOiAyIEZvcm1hdHRlZFZhbHVlJ3MsIGFuZCBvbmUKKyAgICAgICBTdHIgZm9yIHRoZSBsaXRlcmFsICdhJy4gU28geW91IGFkZCBleHByX3R5J3MgYWJvdXQgdHdpY2UgYXMKKyAgICAgICBmYXN0IGFzIHlvdSBhZGQgZXhyZXNzaW9ucyBpbiBhbiBmLXN0cmluZy4gKi8KKworICAgIFB5X3NzaXplX3QgYWxsb2NhdGVkOyAgLyogTnVtYmVyIHdlJ3ZlIGFsbG9jYXRlZC4gKi8KKyAgICBQeV9zc2l6ZV90IHNpemU7ICAgICAgIC8qIE51bWJlciB3ZSd2ZSB1c2VkLiAqLworICAgIGV4cHJfdHkgICAgKnA7ICAgICAgICAgLyogUG9pbnRlciB0byB0aGUgbWVtb3J5IHdlJ3JlIGFjdHVhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2luZy4gV2lsbCBwb2ludCB0byAnZGF0YScgdW50aWwgd2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0IGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcuICovCisgICAgZXhwcl90eSAgICBkYXRhW0VYUFJMSVNUX05fQ0FDSEVEXTsKK30gRXhwckxpc3Q7CisKKyNpZmRlZiBOREVCVUcKKyNkZWZpbmUgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKQorI2Vsc2UKK3N0YXRpYyB2b2lkCitFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKEV4cHJMaXN0ICpsKQoreworICAgIC8qIENoZWNrIG91ciBpbnZhcmlhbnRzLiBNYWtlIHN1cmUgdGhpcyBvYmplY3QgaXMgImxpdmUiLCBhbmQKKyAgICAgICBoYXNuJ3QgYmVlbiBkZWFsbG9jYXRlZC4gKi8KKyAgICBhc3NlcnQobC0+c2l6ZSA+PSAwKTsKKyAgICBhc3NlcnQobC0+cCAhPSBOVUxMKTsKKyAgICBpZiAobC0+c2l6ZSA8PSBFWFBSTElTVF9OX0NBQ0hFRCkKKyAgICAgICAgYXNzZXJ0KGwtPmRhdGEgPT0gbC0+cCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK0V4cHJMaXN0X0luaXQoRXhwckxpc3QgKmwpCit7CisgICAgbC0+YWxsb2NhdGVkID0gRVhQUkxJU1RfTl9DQUNIRUQ7CisgICAgbC0+c2l6ZSA9IDA7CisKKyAgICAvKiBVbnRpbCB3ZSBzdGFydCBhbGxvY2F0aW5nIGR5bmFtaWNhbGx5LCBwIHBvaW50cyB0byBkYXRhLiAqLworICAgIGwtPnAgPSBsLT5kYXRhOworCisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKK30KKworc3RhdGljIGludAorRXhwckxpc3RfQXBwZW5kKEV4cHJMaXN0ICpsLCBleHByX3R5IGV4cCkKK3sKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworICAgIGlmIChsLT5zaXplID49IGwtPmFsbG9jYXRlZCkgeworICAgICAgICAvKiBXZSBuZWVkIHRvIGFsbG9jIChvciByZWFsbG9jKSB0aGUgbWVtb3J5LiAqLworICAgICAgICBQeV9zc2l6ZV90IG5ld19zaXplID0gbC0+YWxsb2NhdGVkICogMjsKKworICAgICAgICAvKiBTZWUgaWYgd2UndmUgZXZlciBhbGxvY2F0ZWQgYW55dGhpbmcgZHluYW1pY2FsbHkuICovCisgICAgICAgIGlmIChsLT5wID09IGwtPmRhdGEpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIC8qIFdlJ3JlIHN0aWxsIHVzaW5nIHRoZSBjYWNoZWQgZGF0YS4gU3dpdGNoIHRvCisgICAgICAgICAgICAgICBhbGxvYy1pbmcuICovCisgICAgICAgICAgICBsLT5wID0gUHlNZW1fUmF3TWFsbG9jKHNpemVvZihleHByX3R5KSAqIG5ld19zaXplKTsKKyAgICAgICAgICAgIGlmICghbC0+cCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAvKiBDb3B5IHRoZSBjYWNoZWQgZGF0YSBpbnRvIHRoZSBuZXcgYnVmZmVyLiAqLworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGwtPnNpemU7IGkrKykKKyAgICAgICAgICAgICAgICBsLT5wW2ldID0gbC0+ZGF0YVtpXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIEp1c3QgcmVhbGxvYy4gKi8KKyAgICAgICAgICAgIGV4cHJfdHkgKnRtcCA9IFB5TWVtX1Jhd1JlYWxsb2MobC0+cCwgc2l6ZW9mKGV4cHJfdHkpICogbmV3X3NpemUpOworICAgICAgICAgICAgaWYgKCF0bXApIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKGwtPnApOworICAgICAgICAgICAgICAgIGwtPnAgPSBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGwtPnAgPSB0bXA7CisgICAgICAgIH0KKworICAgICAgICBsLT5hbGxvY2F0ZWQgPSBuZXdfc2l6ZTsKKyAgICAgICAgYXNzZXJ0KGwtPmFsbG9jYXRlZCA9PSAyICogbC0+c2l6ZSk7CisgICAgfQorCisgICAgbC0+cFtsLT5zaXplKytdID0gZXhwOworCisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK0V4cHJMaXN0X0RlYWxsb2MoRXhwckxpc3QgKmwpCit7CisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKworICAgIC8qIElmIHRoZXJlJ3MgYmVlbiBhbiBlcnJvciwgb3Igd2UndmUgbmV2ZXIgZHluYW1pY2FsbHkgYWxsb2NhdGVkLAorICAgICAgIGRvIG5vdGhpbmcuICovCisgICAgaWYgKCFsLT5wIHx8IGwtPnAgPT0gbC0+ZGF0YSkgeworICAgICAgICAvKiBEbyBub3RoaW5nLiAqLworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFdlIGhhdmUgZHluYW1pY2FsbHkgYWxsb2NhdGVkLiBGcmVlIHRoZSBtZW1vcnkuICovCisgICAgICAgIFB5TWVtX1Jhd0ZyZWUobC0+cCk7CisgICAgfQorICAgIGwtPnAgPSBOVUxMOworICAgIGwtPnNpemUgPSAtMTsKK30KKworc3RhdGljIGFzZGxfc2VxICoKK0V4cHJMaXN0X0ZpbmlzaChFeHByTGlzdCAqbCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgYXNkbF9zZXEgKnNlcTsKKworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7CisKKyAgICAvKiBBbGxvY2F0ZSB0aGUgYXNkbF9zZXEgYW5kIGNvcHkgdGhlIGV4cHJlc3Npb25zIGluIHRvIGl0LiAqLworICAgIHNlcSA9IF9QeV9hc2RsX3NlcV9uZXcobC0+c2l6ZSwgYXJlbmEpOworICAgIGlmIChzZXEpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbC0+c2l6ZTsgaSsrKQorICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHNlcSwgaSwgbC0+cFtpXSk7CisgICAgfQorICAgIEV4cHJMaXN0X0RlYWxsb2MobCk7CisgICAgcmV0dXJuIHNlcTsKK30KKworLyogVGhlIEZzdHJpbmdQYXJzZXIgaXMgZGVzaWduZWQgdG8gYWRkIGEgbWl4IG9mIHN0cmluZ3MgYW5kCisgICBmLXN0cmluZ3MsIGFuZCBjb25jYXQgdGhlbSB0b2dldGhlciBhcyBuZWVkZWQuIFVsdGltYXRlbHksIGl0CisgICBnZW5lcmF0ZXMgYW4gZXhwcl90eS4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdCAqbGFzdF9zdHI7CisgICAgRXhwckxpc3QgZXhwcl9saXN0OworfSBGc3RyaW5nUGFyc2VyOworCisjaWZkZWYgTkRFQlVHCisjZGVmaW5lIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSkKKyNlbHNlCitzdGF0aWMgdm9pZAorRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKEZzdHJpbmdQYXJzZXIgKnN0YXRlKQoreworICAgIGlmIChzdGF0ZS0+bGFzdF9zdHIpCisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdGF0ZS0+bGFzdF9zdHIpKTsKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKCZzdGF0ZS0+ZXhwcl9saXN0KTsKK30KKyNlbmRpZgorCitzdGF0aWMgdm9pZAorRnN0cmluZ1BhcnNlcl9Jbml0KEZzdHJpbmdQYXJzZXIgKnN0YXRlKQoreworICAgIHN0YXRlLT5sYXN0X3N0ciA9IE5VTEw7CisgICAgRXhwckxpc3RfSW5pdCgmc3RhdGUtPmV4cHJfbGlzdCk7CisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK0ZzdHJpbmdQYXJzZXJfRGVhbGxvYyhGc3RyaW5nUGFyc2VyICpzdGF0ZSkKK3sKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgUHlfWERFQ1JFRihzdGF0ZS0+bGFzdF9zdHIpOworICAgIEV4cHJMaXN0X0RlYWxsb2MoJnN0YXRlLT5leHByX2xpc3QpOworfQorCisvKiBNYWtlIGEgU3RyIG5vZGUsIGJ1dCBkZWNyZWYgdGhlIFB5VW5pY29kZSBvYmplY3QgYmVpbmcgYWRkZWQuICovCitzdGF0aWMgZXhwcl90eQorbWFrZV9zdHJfbm9kZV9hbmRfZGVsKFB5T2JqZWN0ICoqc3RyLCBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlKiBuKQoreworICAgIFB5T2JqZWN0ICpzID0gKnN0cjsKKyAgICAqc3RyID0gTlVMTDsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3QocykpOworICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIHMpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYocyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gU3RyKHMsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKK30KKworLyogQWRkIGEgbm9uLWYtc3RyaW5nICh0aGF0IGlzLCBhIHJlZ3VsYXIgbGl0ZXJhbCBzdHJpbmcpLiBzdHIgaXMKKyAgIGRlY3JlZidkLiAqLworc3RhdGljIGludAorRnN0cmluZ1BhcnNlcl9Db25jYXRBbmREZWwoRnN0cmluZ1BhcnNlciAqc3RhdGUsIFB5T2JqZWN0ICpzdHIpCit7CisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzdHIpKTsKKworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpID09IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgIC8qIFdlIGRpZG4ndCBoYXZlIGEgc3RyaW5nIGJlZm9yZSwgc28ganVzdCByZW1lbWJlciB0aGlzIG9uZS4gKi8KKyAgICAgICAgc3RhdGUtPmxhc3Rfc3RyID0gc3RyOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIENvbmNhdGVuYXRlIHRoaXMgd2l0aCB0aGUgcHJldmlvdXMgc3RyaW5nLiAqLworICAgICAgICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsKCZzdGF0ZS0+bGFzdF9zdHIsIHN0cik7CisgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworICAgIHJldHVybiAwOworfQorCisvKiBQYXJzZSBhbiBmLXN0cmluZy4gVGhlIGYtc3RyaW5nIGlzIGluICpzdHIgdG8gZW5kLCB3aXRoIG5vCisgICAnZicgb3IgcXVvdGVzLiAqLworc3RhdGljIGludAorRnN0cmluZ1BhcnNlcl9Db25jYXRGc3RyaW5nKEZzdHJpbmdQYXJzZXIgKnN0YXRlLCBjb25zdCBjaGFyICoqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKworICAgIC8qIFBhcnNlIHRoZSBmLXN0cmluZy4gKi8KKyAgICB3aGlsZSAoMSkgeworICAgICAgICBQeU9iamVjdCAqbGl0ZXJhbCA9IE5VTEw7CisgICAgICAgIGV4cHJfdHkgZXhwcmVzc2lvbiA9IE5VTEw7CisKKyAgICAgICAgLyogSWYgdGhlcmUncyBhIHplcm8gbGVuZ3RoIGxpdGVyYWwgaW4gZnJvbnQgb2YgdGhlCisgICAgICAgICAgIGV4cHJlc3Npb24sIGxpdGVyYWwgd2lsbCBiZSBOVUxMLiBJZiB3ZSdyZSBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgIHRoZSBmLXN0cmluZywgZXhwcmVzc2lvbiB3aWxsIGJlIE5VTEwgKHVubGVzcyByZXN1bHQgPT0gMSwKKyAgICAgICAgICAgc2VlIGJlbG93KS4gKi8KKyAgICAgICAgaW50IHJlc3VsdCA9IGZzdHJpbmdfZmluZF9saXRlcmFsX2FuZF9leHByKHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxpdGVyYWwsICZleHByZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywgbik7CisgICAgICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworCisgICAgICAgIC8qIEFkZCB0aGUgbGl0ZXJhbCwgaWYgYW55LiAqLworICAgICAgICBpZiAoIWxpdGVyYWwpIHsKKyAgICAgICAgICAgIC8qIERvIG5vdGhpbmcuIEp1c3QgbGVhdmUgbGFzdF9zdHIgYWxvbmUgKGFuZCBwb3NzaWJseQorICAgICAgICAgICAgICAgTlVMTCkuICovCisgICAgICAgIH0gZWxzZSBpZiAoIXN0YXRlLT5sYXN0X3N0cikgeworICAgICAgICAgICAgc3RhdGUtPmxhc3Rfc3RyID0gbGl0ZXJhbDsKKyAgICAgICAgICAgIGxpdGVyYWwgPSBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogV2UgaGF2ZSBhIGxpdGVyYWwsIGNvbmNhdGVuYXRlIGl0LiAqLworICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpdGVyYWwpICE9IDApOworICAgICAgICAgICAgaWYgKEZzdHJpbmdQYXJzZXJfQ29uY2F0QW5kRGVsKHN0YXRlLCBsaXRlcmFsKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgbGl0ZXJhbCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KCFzdGF0ZS0+bGFzdF9zdHIgfHwKKyAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0YXRlLT5sYXN0X3N0cikgIT0gMCk7CisKKyAgICAgICAgLyogV2UndmUgZGVhbHQgd2l0aCB0aGUgbGl0ZXJhbCBub3cuIEl0IGNhbid0IGJlIGxlYWtlZCBvbiBmdXJ0aGVyCisgICAgICAgICAgIGVycm9ycy4gKi8KKyAgICAgICAgYXNzZXJ0KGxpdGVyYWwgPT0gTlVMTCk7CisKKyAgICAgICAgLyogU2VlIGlmIHdlIHNob3VsZCBqdXN0IGxvb3AgYXJvdW5kIHRvIGdldCB0aGUgbmV4dCBsaXRlcmFsCisgICAgICAgICAgIGFuZCBleHByZXNzaW9uLCB3aGlsZSBpZ25vcmluZyB0aGUgZXhwcmVzc2lvbiB0aGlzCisgICAgICAgICAgIHRpbWUuIFRoaXMgaXMgdXNlZCBmb3IgdW4tZG91YmxpbmcgYnJhY2VzLCBhcyBhbgorICAgICAgICAgICBvcHRpbWl6YXRpb24uICovCisgICAgICAgIGlmIChyZXN1bHQgPT0gMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICghZXhwcmVzc2lvbikKKyAgICAgICAgICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGlzIGYtc3RyaW5nLiAqLworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyogV2Uga25vdyB3ZSBoYXZlIGFuIGV4cHJlc3Npb24uIENvbnZlcnQgYW55IGV4aXN0aW5nIHN0cmluZworICAgICAgICAgICB0byBhIFN0ciBub2RlLiAqLworICAgICAgICBpZiAoIXN0YXRlLT5sYXN0X3N0cikgeworICAgICAgICAgICAgLyogRG8gbm90aGluZy4gTm8gcHJldmlvdXMgbGl0ZXJhbC4gKi8KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIENvbnZlcnQgdGhlIGV4aXN0aW5nIGxhc3Rfc3RyIGxpdGVyYWwgdG8gYSBTdHIgbm9kZS4gKi8KKyAgICAgICAgICAgIGV4cHJfdHkgc3RyID0gbWFrZV9zdHJfbm9kZV9hbmRfZGVsKCZzdGF0ZS0+bGFzdF9zdHIsIGMsIG4pOworICAgICAgICAgICAgaWYgKCFzdHIgfHwgRXhwckxpc3RfQXBwZW5kKCZzdGF0ZS0+ZXhwcl9saXN0LCBzdHIpIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRXhwckxpc3RfQXBwZW5kKCZzdGF0ZS0+ZXhwcl9saXN0LCBleHByZXNzaW9uKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogSWYgcmVjdXJzZV9sdmwgaXMgemVybywgdGhlbiB3ZSBtdXN0IGJlIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgc3RyaW5nLiBPdGhlcndpc2UsIHdlIG11c3QgYmUgYXQgYSByaWdodCBicmFjZS4gKi8KKworICAgIGlmIChyZWN1cnNlX2x2bCA9PSAwICYmICpzdHIgPCBlbmQtMSkgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAocmVjdXJzZV9sdmwgIT0gMCAmJiAqKnN0ciAhPSAnfScpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29udmVydCB0aGUgcGFydGlhbCBzdGF0ZSByZWZsZWN0ZWQgaW4gbGFzdF9zdHIgYW5kIGV4cHJfbGlzdCB0byBhbgorICAgZXhwcl90eS4gVGhlIGV4cHJfdHkgY2FuIGJlIGEgU3RyLCBvciBhIEpvaW5lZFN0ci4gKi8KK3N0YXRpYyBleHByX3R5CitGc3RyaW5nUGFyc2VyX0ZpbmlzaChGc3RyaW5nUGFyc2VyICpzdGF0ZSwgc3RydWN0IGNvbXBpbGluZyAqYywKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgKm4pCit7CisgICAgYXNkbF9zZXEgKnNlcTsKKworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisKKyAgICAvKiBJZiB3ZSdyZSBqdXN0IGEgY29uc3RhbnQgc3RyaW5nIHdpdGggbm8gZXhwcmVzc2lvbnMsIHJldHVybgorICAgICAgIHRoYXQuICovCisgICAgaWYoc3RhdGUtPmV4cHJfbGlzdC5zaXplID09IDApIHsKKyAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgICAgIC8qIENyZWF0ZSBhIHplcm8gbGVuZ3RoIHN0cmluZy4gKi8KKyAgICAgICAgICAgIHN0YXRlLT5sYXN0X3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICAgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1ha2Vfc3RyX25vZGVfYW5kX2RlbCgmc3RhdGUtPmxhc3Rfc3RyLCBjLCBuKTsKKyAgICB9CisKKyAgICAvKiBDcmVhdGUgYSBTdHIgbm9kZSBvdXQgb2YgbGFzdF9zdHIsIGlmIG5lZWRlZC4gSXQgd2lsbCBiZSB0aGUKKyAgICAgICBsYXN0IG5vZGUgaW4gb3VyIGV4cHJlc3Npb24gbGlzdC4gKi8KKyAgICBpZiAoc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgIGV4cHJfdHkgc3RyID0gbWFrZV9zdHJfbm9kZV9hbmRfZGVsKCZzdGF0ZS0+bGFzdF9zdHIsIGMsIG4pOworICAgICAgICBpZiAoIXN0ciB8fCBFeHByTGlzdF9BcHBlbmQoJnN0YXRlLT5leHByX2xpc3QsIHN0cikgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgLyogVGhpcyBoYXMgYWxyZWFkeSBiZWVuIGZyZWVkLiAqLworICAgIGFzc2VydChzdGF0ZS0+bGFzdF9zdHIgPT0gTlVMTCk7CisKKyAgICBzZXEgPSBFeHByTGlzdF9GaW5pc2goJnN0YXRlLT5leHByX2xpc3QsIGMtPmNfYXJlbmEpOworICAgIGlmICghc2VxKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgLyogSWYgdGhlcmUncyBvbmx5IG9uZSBleHByZXNzaW9uLCByZXR1cm4gaXQuIE90aGVyd2lzZSwgd2UgbmVlZAorICAgICAgIHRvIGpvaW4gdGhlbSB0b2dldGhlci4gKi8KKyAgICBpZiAoc2VxLT5zaXplID09IDEpCisgICAgICAgIHJldHVybiBzZXEtPmVsZW1lbnRzWzBdOworCisgICAgcmV0dXJuIEpvaW5lZFN0cihzZXEsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKworZXJyb3I6CisgICAgRnN0cmluZ1BhcnNlcl9EZWFsbG9jKHN0YXRlKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogR2l2ZW4gYW4gZi1zdHJpbmcgKHdpdGggbm8gJ2YnIG9yIHF1b3RlcykgdGhhdCdzIGluICpzdHIgYW5kIGVuZHMKKyAgIGF0IGVuZCwgcGFyc2UgaXQgaW50byBhbiBleHByX3R5LiAgUmV0dXJuIE5VTEwgb24gZXJyb3IuICBBZGp1c3QKKyAgIHN0ciB0byBwb2ludCBwYXN0IHRoZSBwYXJzZWQgcG9ydGlvbi4gKi8KK3N0YXRpYyBleHByX3R5Citmc3RyaW5nX3BhcnNlKGNvbnN0IGNoYXIgKipzdHIsIGNvbnN0IGNoYXIgKmVuZCwgaW50IHJhdywgaW50IHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIEZzdHJpbmdQYXJzZXIgc3RhdGU7CisKKyAgICBGc3RyaW5nUGFyc2VyX0luaXQoJnN0YXRlKTsKKyAgICBpZiAoRnN0cmluZ1BhcnNlcl9Db25jYXRGc3RyaW5nKCZzdGF0ZSwgc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLCBuKSA8IDApIHsKKyAgICAgICAgRnN0cmluZ1BhcnNlcl9EZWFsbG9jKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBGc3RyaW5nUGFyc2VyX0ZpbmlzaCgmc3RhdGUsIGMsIG4pOworfQorCisvKiBuIGlzIGEgUHl0aG9uIHN0cmluZyBsaXRlcmFsLCBpbmNsdWRpbmcgdGhlIGJyYWNrZXRpbmcgcXVvdGUKKyAgIGNoYXJhY3RlcnMsIGFuZCByLCBiLCB1LCAmL29yIGYgcHJlZml4ZXMgKGlmIGFueSksIGFuZCBlbWJlZGRlZAorICAgZXNjYXBlIHNlcXVlbmNlcyAoaWYgYW55KS4gcGFyc2VzdHIgcGFyc2VzIGl0LCBhbmQgc2V0cyAqcmVzdWx0IHRvCisgICBkZWNvZGVkIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgSWYgdGhlIHN0cmluZyBpcyBhbiBmLXN0cmluZywgc2V0CisgICAqZnN0ciBhbmQgKmZzdHJsZW4gdG8gdGhlIHVucGFyc2VkIHN0cmluZyBvYmplY3QuICBSZXR1cm4gMCBpZiBubworICAgZXJyb3JzIG9jY3VycmVkLgorKi8KK3N0YXRpYyBpbnQKK3BhcnNlc3RyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlLCBpbnQgKnJhd21vZGUsCisgICAgICAgICBQeU9iamVjdCAqKnJlc3VsdCwgY29uc3QgY2hhciAqKmZzdHIsIFB5X3NzaXplX3QgKmZzdHJsZW4pCiB7CiAgICAgc2l6ZV90IGxlbjsKICAgICBjb25zdCBjaGFyICpzID0gU1RSKG4pOwogICAgIGludCBxdW90ZSA9IFB5X0NIQVJNQVNLKCpzKTsKLSAgICBpbnQgcmF3bW9kZSA9IDA7Ci0gICAgaW50IG5lZWRfZW5jb2Rpbmc7CisgICAgaW50IGZtb2RlID0gMDsKKyAgICAqYnl0ZXNtb2RlID0gMDsKKyAgICAqcmF3bW9kZSA9IDA7CisgICAgKnJlc3VsdCA9IE5VTEw7CisgICAgKmZzdHIgPSBOVUxMOwogICAgIGlmIChQeV9JU0FMUEhBKHF1b3RlKSkgewotICAgICAgICB3aGlsZSAoISpieXRlc21vZGUgfHwgIXJhd21vZGUpIHsKKyAgICAgICAgd2hpbGUgKCEqYnl0ZXNtb2RlIHx8ICEqcmF3bW9kZSkgewogICAgICAgICAgICAgaWYgKHF1b3RlID09ICdiJyB8fCBxdW90ZSA9PSAnQicpIHsKICAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CiAgICAgICAgICAgICAgICAgKmJ5dGVzbW9kZSA9IDE7CkBAIC00MDIyLDExNCArNDk3OSwxNjkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHF1b3RlID09ICdyJyB8fCBxdW90ZSA9PSAnUicpIHsKICAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7Ci0gICAgICAgICAgICAgICAgcmF3bW9kZSA9IDE7CisgICAgICAgICAgICAgICAgKnJhd21vZGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ2YnIHx8IHF1b3RlID09ICdGJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgICAgICBmbW9kZSA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICBpZiAoZm1vZGUgJiYgKmJ5dGVzbW9kZSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAocXVvdGUgIT0gJ1wnJyAmJiBxdW90ZSAhPSAnXCInKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICAvKiBTa2lwIHRoZSBsZWFkaW5nIHF1b3RlIGNoYXIuICovCiAgICAgcysrOwogICAgIGxlbiA9IHN0cmxlbihzKTsKICAgICBpZiAobGVuID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgdG8gcGFyc2UgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHNbLS1sZW5dICE9IHF1b3RlKSB7CisgICAgICAgIC8qIExhc3QgcXVvdGUgY2hhciBtdXN0IG1hdGNoIHRoZSBmaXJzdC4gKi8KICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChsZW4gPj0gNCAmJiBzWzBdID09IHF1b3RlICYmIHNbMV0gPT0gcXVvdGUpIHsKKyAgICAgICAgLyogQSB0cmlwbGUgcXVvdGVkIHN0cmluZy4gV2UndmUgYWxyZWFkeSBza2lwcGVkIG9uZSBxdW90ZSBhdAorICAgICAgICAgICB0aGUgc3RhcnQgYW5kIG9uZSBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuIE5vdyBza2lwIHRoZQorICAgICAgICAgICB0d28gYXQgdGhlIHN0YXJ0LiAqLwogICAgICAgICBzICs9IDI7CiAgICAgICAgIGxlbiAtPSAyOworICAgICAgICAvKiBBbmQgY2hlY2sgdGhhdCB0aGUgbGFzdCB0d28gbWF0Y2guICovCiAgICAgICAgIGlmIChzWy0tbGVuXSAhPSBxdW90ZSB8fCBzWy0tbGVuXSAhPSBxdW90ZSkgewogICAgICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoISpieXRlc21vZGUgJiYgIXJhd21vZGUpIHsKLSAgICAgICAgcmV0dXJuIGRlY29kZV91bmljb2RlKGMsIHMsIGxlbiwgcmF3bW9kZSwgYy0+Y19lbmNvZGluZyk7CisKKyAgICBpZiAoZm1vZGUpIHsKKyAgICAgICAgLyogSnVzdCByZXR1cm4gdGhlIGJ5dGVzLiBUaGUgY2FsbGVyIHdpbGwgcGFyc2UgdGhlIHJlc3VsdGluZworICAgICAgICAgICBzdHJpbmcuICovCisgICAgICAgICpmc3RyID0gczsKKyAgICAgICAgKmZzdHJsZW4gPSBsZW47CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKworICAgIC8qIE5vdCBhbiBmLXN0cmluZy4gKi8KKyAgICAvKiBBdm9pZCBpbnZva2luZyBlc2NhcGUgZGVjb2Rpbmcgcm91dGluZXMgaWYgcG9zc2libGUuICovCisgICAgKnJhd21vZGUgPSAqcmF3bW9kZSB8fCBzdHJjaHIocywgJ1xcJykgPT0gTlVMTDsKICAgICBpZiAoKmJ5dGVzbW9kZSkgewotICAgICAgICAvKiBEaXNhbGxvdyBub24tYXNjaWkgY2hhcmFjdGVycyAoYnV0IG5vdCBlc2NhcGVzKSAqLworICAgICAgICAvKiBEaXNhbGxvdyBub24tQVNDSUkgY2hhcmFjdGVycy4gKi8KICAgICAgICAgY29uc3QgY2hhciAqY2g7CiAgICAgICAgIGZvciAoY2ggPSBzOyAqY2g7IGNoKyspIHsKICAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqY2gpID49IDB4ODApIHsKICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImJ5dGVzIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAibGl0ZXJhbCBjaGFyYWN0ZXJzLiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoKnJhd21vZGUpCisgICAgICAgICAgICAqcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCBsZW4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqcmVzdWx0ID0gUHlCeXRlc19EZWNvZGVFc2NhcGUocywgbGVuLCBOVUxMLCAvKiBpZ25vcmVkICovIDAsIE5VTEwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICgqcmF3bW9kZSkKKyAgICAgICAgICAgICpyZXN1bHQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIGxlbiwgTlVMTCwgTlVMTCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpyZXN1bHQgPSBkZWNvZGVfdW5pY29kZV93aXRoX2VzY2FwZXMoYywgcywgbGVuKTsKICAgICB9Ci0gICAgbmVlZF9lbmNvZGluZyA9ICghKmJ5dGVzbW9kZSAmJiBjLT5jX2VuY29kaW5nICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChjLT5jX2VuY29kaW5nLCAidXRmLTgiKSAhPSAwKTsKLSAgICBpZiAocmF3bW9kZSB8fCBzdHJjaHIocywgJ1xcJykgPT0gTlVMTCkgewotICAgICAgICBpZiAobmVlZF9lbmNvZGluZykgewotICAgICAgICAgICAgUHlPYmplY3QgKnYsICp1ID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgbGVuLCBOVUxMKTsKLSAgICAgICAgICAgIGlmICh1ID09IE5VTEwgfHwgISpieXRlc21vZGUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHU7Ci0gICAgICAgICAgICB2ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1LCBjLT5jX2VuY29kaW5nLCBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9IGVsc2UgaWYgKCpieXRlc21vZGUpIHsKLSAgICAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHMsIGxlbik7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGMtPmNfZW5jb2RpbmcsICJ1dGYtOCIpID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUocywgbGVuKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIGxlbiwgTlVMTCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRfZW5jb2RpbmcgPyBjLT5jX2VuY29kaW5nIDogTlVMTCk7CisgICAgcmV0dXJuICpyZXN1bHQgPT0gTlVMTCA/IC0xIDogMDsKIH0KIAotLyogQnVpbGQgYSBQeXRob24gc3RyaW5nIG9iamVjdCBvdXQgb2YgYSBTVFJJTkcrIGF0b20uICBUaGlzIHRha2VzIGNhcmUgb2YKLSAqIGNvbXBpbGUtdGltZSBsaXRlcmFsIGNhdGVuYXRpb24sIGNhbGxpbmcgcGFyc2VzdHIoKSBvbiBlYWNoIHBpZWNlLCBhbmQKLSAqIHBhc3RpbmcgdGhlIGludGVybWVkaWF0ZSByZXN1bHRzIHRvZ2V0aGVyLgotICovCi1zdGF0aWMgUHlPYmplY3QgKgotcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlKQorLyogQWNjZXB0cyBhIFNUUklORysgYXRvbSwgYW5kIHByb2R1Y2VzIGFuIGV4cHJfdHkgbm9kZS4gUnVuIHRocm91Z2gKKyAgIGVhY2ggU1RSSU5HIGF0b20sIGFuZCBwcm9jZXNzIGl0IGFzIG5lZWRlZC4gRm9yIGJ5dGVzLCBqdXN0CisgICBjb25jYXRlbmF0ZSB0aGVtIHRvZ2V0aGVyLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGJlIGEgQnl0ZXMgbm9kZS4gRm9yCisgICBub3JtYWwgc3RyaW5ncyBhbmQgZi1zdHJpbmdzLCBjb25jYXRlbmF0ZSB0aGVtIHRvZ2V0aGVyLiBUaGUgcmVzdWx0CisgICB3aWxsIGJlIGEgU3RyIG5vZGUgaWYgdGhlcmUgd2VyZSBubyBmLXN0cmluZ3M7IGEgRm9ybWF0dGVkVmFsdWUKKyAgIG5vZGUgaWYgdGhlcmUncyBqdXN0IGFuIGYtc3RyaW5nICh3aXRoIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcKKyAgIGxpdGVyYWxzKSwgb3IgYSBKb2luZWRTdHIgbm9kZSBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgZi1zdHJpbmdzIG9yCisgICBhbnkgbGl0ZXJhbHMgaW52b2x2ZWQuICovCitzdGF0aWMgZXhwcl90eQorcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7Ci0gICAgUHlPYmplY3QgKnY7CisgICAgaW50IGJ5dGVzbW9kZSA9IDA7CisgICAgUHlPYmplY3QgKmJ5dGVzX3N0ciA9IE5VTEw7CiAgICAgaW50IGk7Ci0gICAgUkVRKENISUxEKG4sIDApLCBTVFJJTkcpOwotICAgIHYgPSBwYXJzZXN0cihjLCBDSElMRChuLCAwKSwgYnl0ZXNtb2RlKTsKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIC8qIFN0cmluZyBsaXRlcmFsIGNvbmNhdGVuYXRpb24gKi8KLSAgICAgICAgZm9yIChpID0gMTsgaSA8IE5DSChuKTsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqczsKLSAgICAgICAgICAgIGludCBzdWJibSA9IDA7Ci0gICAgICAgICAgICBzID0gcGFyc2VzdHIoYywgQ0hJTEQobiwgaSksICZzdWJibSk7Ci0gICAgICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIGlmICgqYnl0ZXNtb2RlICE9IHN1YmJtKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayh2KSAmJiBQeUJ5dGVzX0NoZWNrKHMpKSB7Ci0gICAgICAgICAgICAgICAgUHlCeXRlc19Db25jYXRBbmREZWwoJnYsIHMpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlVbmljb2RlX0NvbmNhdCh2LCBzKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIHYgPSB0ZW1wOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKworICAgIEZzdHJpbmdQYXJzZXIgc3RhdGU7CisgICAgRnN0cmluZ1BhcnNlcl9Jbml0KCZzdGF0ZSk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpKyspIHsKKyAgICAgICAgaW50IHRoaXNfYnl0ZXNtb2RlOworICAgICAgICBpbnQgdGhpc19yYXdtb2RlOworICAgICAgICBQeU9iamVjdCAqczsKKyAgICAgICAgY29uc3QgY2hhciAqZnN0cjsKKyAgICAgICAgUHlfc3NpemVfdCBmc3RybGVuID0gLTE7ICAvKiBTaWxlbmNlIGEgY29tcGlsZXIgd2FybmluZy4gKi8KKworICAgICAgICBSRVEoQ0hJTEQobiwgaSksIFNUUklORyk7CisgICAgICAgIGlmIChwYXJzZXN0cihjLCBDSElMRChuLCBpKSwgJnRoaXNfYnl0ZXNtb2RlLCAmdGhpc19yYXdtb2RlLCAmcywKKyAgICAgICAgICAgICAgICAgICAgICZmc3RyLCAmZnN0cmxlbikgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgLyogQ2hlY2sgdGhhdCB3ZSdyZSBub3QgbWl4aW5nIGJ5dGVzIHdpdGggdW5pY29kZS4gKi8KKyAgICAgICAgaWYgKGkgIT0gMCAmJiBieXRlc21vZGUgIT0gdGhpc19ieXRlc21vZGUpIHsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiY2Fubm90IG1peCBieXRlcyBhbmQgbm9uYnl0ZXMgbGl0ZXJhbHMiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZXNtb2RlID0gdGhpc19ieXRlc21vZGU7CisKKyAgICAgICAgaWYgKGZzdHIgIT0gTlVMTCkgeworICAgICAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgICAgIGFzc2VydChzID09IE5VTEwgJiYgIWJ5dGVzbW9kZSk7CisgICAgICAgICAgICAvKiBUaGlzIGlzIGFuIGYtc3RyaW5nLiBQYXJzZSBhbmQgY29uY2F0ZW5hdGUgaXQuICovCisgICAgICAgICAgICByZXN1bHQgPSBGc3RyaW5nUGFyc2VyX0NvbmNhdEZzdHJpbmcoJnN0YXRlLCAmZnN0ciwgZnN0citmc3RybGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfcmF3bW9kZSwgMCwgYywgbik7CisgICAgICAgICAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGJ5dGVzbW9kZSA/IFB5Qnl0ZXNfQ2hlY2tFeGFjdChzKSA6CisgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QocykpOworCisgICAgICAgICAgICAvKiBBIHN0cmluZyBvciBieXRlIHN0cmluZy4gKi8KKyAgICAgICAgICAgIGFzc2VydChzICE9IE5VTEwgJiYgZnN0ciA9PSBOVUxMKTsKKyAgICAgICAgICAgIGlmIChieXRlc21vZGUpIHsKKyAgICAgICAgICAgICAgICAvKiBGb3IgYnl0ZXMsIGNvbmNhdCBhcyB3ZSBnby4gKi8KKyAgICAgICAgICAgICAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZpcnN0IHRpbWUsIGp1c3QgcmVtZW1iZXIgdGhpcyB2YWx1ZS4gKi8KKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfc3RyID0gczsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0NvbmNhdEFuZERlbCgmYnl0ZXNfc3RyLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFieXRlc19zdHIpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KHMgIT0gTlVMTCAmJiBmc3RyID09IE5VTEwpOworICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgYSByZWd1bGFyIHN0cmluZy4gQ29uY2F0ZW5hdGUgaXQuICovCisgICAgICAgICAgICAgICAgaWYgKEZzdHJpbmdQYXJzZXJfQ29uY2F0QW5kRGVsKCZzdGF0ZSwgcykgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiB2OworICAgIGlmIChieXRlc21vZGUpIHsKKyAgICAgICAgLyogSnVzdCByZXR1cm4gdGhlIGJ5dGVzIG9iamVjdCBhbmQgd2UncmUgZG9uZS4gKi8KKyAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgYnl0ZXNfc3RyKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICByZXR1cm4gQnl0ZXMoYnl0ZXNfc3RyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgfQogCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRih2KTsKKyAgICAvKiBXZSdyZSBub3QgYSBieXRlcyBzdHJpbmcsIGJ5dGVzX3N0ciBzaG91bGQgbmV2ZXIgaGF2ZSBiZWVuIHNldC4gKi8KKyAgICBhc3NlcnQoYnl0ZXNfc3RyID09IE5VTEwpOworCisgICAgcmV0dXJuIEZzdHJpbmdQYXJzZXJfRmluaXNoKCZzdGF0ZSwgYywgbik7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoYnl0ZXNfc3RyKTsKKyAgICBGc3RyaW5nUGFyc2VyX0RlYWxsb2MoJnN0YXRlKTsKICAgICByZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKaW5kZXggOWY1ZGIyYS4uY2VlMDEzZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2JsdGlubW9kdWxlLmMKKysrIGIvUHl0aG9uL2JsdGlubW9kdWxlLmMKQEAgLTIxLDE2ICsyMSwxOCBAQAogICAgRG9uJ3QgZm9yZ2V0IHRvIG1vZGlmeSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KCkgaWYgeW91IHRvdWNoIGFueSBvZiB0aGUKICAgIHZhbHVlcyBmb3IgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyEKICovCi0jaWZkZWYgSEFWRV9NQkNTCi1jb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gIm1iY3MiOworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKKy8qIG1heSBiZSBjaGFuZ2VkIGJ5IGluaXRmc2VuY29kaW5nKCksIGJ1dCBzaG91bGQgbmV2ZXIgYmUgZnJlZSgpZCAqLwogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7CiAjZWxzZQogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IE5VTEw7IC8qIHNldCBieSBpbml0ZnNlbmNvZGluZygpICovCiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDA7CiAjZW5kaWYKK2NvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzID0gInN1cnJvZ2F0ZWVzY2FwZSI7CiAKIF9QeV9JREVOVElGSUVSKF9fYnVpbHRpbnNfXyk7CiBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CkBAIC01Miw3ICs1NCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9fX2J1aWxkX2NsYXNzX18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKm5hbWUsICpiYXNlcywgKm1rdywgKm1ldGEsICp3aW5uZXIsICpwcmVwLCAqbnMsICpjZWxsOworICAgIFB5T2JqZWN0ICpmdW5jLCAqbmFtZSwgKmJhc2VzLCAqbWt3LCAqbWV0YSwgKndpbm5lciwgKnByZXAsICpucywgKm5vbmU7CiAgICAgUHlPYmplY3QgKmNscyA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBuYXJnczsKICAgICBpbnQgaXNjbGFzcyA9IDA7ICAgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCkBAIC0xNTUsMTYgKzE1Nyw4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpwYXJncyA9IFB5VHVwbGVfUGFjaygyLCBuYW1lLCBiYXNlcyk7Ci0gICAgICAgIGlmIChwYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocHJlcCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobWV0YSk7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKG1rdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbnMgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhwcmVwLCBwYXJncywgbWt3KTsKLSAgICAgICAgUHlfREVDUkVGKHBhcmdzKTsKKyAgICAgICAgUHlPYmplY3QgKnBhcmdzWzJdID0ge25hbWUsIGJhc2VzfTsKKyAgICAgICAgbnMgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KHByZXAsIHBhcmdzLCAyLCBta3cpOwogICAgICAgICBQeV9ERUNSRUYocHJlcCk7CiAgICAgfQogICAgIGlmIChucyA9PSBOVUxMKSB7CkBAIC0xNzMsMTkgKzE2NywxMyBAQAogICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgY2VsbCA9IFB5RXZhbF9FdmFsQ29kZUV4KFB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyksIFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyksIG5zLAorICAgIG5vbmUgPSBQeUV2YWxfRXZhbENvZGVFeChQeUZ1bmN0aW9uX0dFVF9DT0RFKGZ1bmMpLCBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpLCBucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKSk7Ci0gICAgaWYgKGNlbGwgIT0gTlVMTCkgewotICAgICAgICBQeU9iamVjdCAqbWFyZ3M7Ci0gICAgICAgIG1hcmdzID0gUHlUdXBsZV9QYWNrKDMsIG5hbWUsIGJhc2VzLCBucyk7Ci0gICAgICAgIGlmIChtYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjbHMgPSBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhtZXRhLCBtYXJncywgbWt3KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtYXJncyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNscyAhPSBOVUxMICYmIFB5Q2VsbF9DaGVjayhjZWxsKSkKLSAgICAgICAgICAgIFB5Q2VsbF9TZXQoY2VsbCwgY2xzKTsKLSAgICAgICAgUHlfREVDUkVGKGNlbGwpOworICAgIGlmIChub25lICE9IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3QgKm1hcmdzWzNdID0ge25hbWUsIGJhc2VzLCBuc307CisgICAgICAgIGNscyA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QobWV0YSwgbWFyZ3MsIDMsIG1rdyk7CisgICAgICAgIFB5X0RFQ1JFRihub25lKTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5zKTsKICAgICBQeV9ERUNSRUYobWV0YSk7CkBAIC0zMzEsNyArMzE5LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoY21wID09IDEpIHsKKyAgICAgICAgaWYgKGNtcCA+IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICAgICAgfQpAQCAtNDY5LDYgKzQ1Nyw3IEBACiAgICAgUHlPYmplY3QgKml0ID0gbHotPml0OwogICAgIGxvbmcgb2s7CiAgICAgUHlPYmplY3QgKigqaXRlcm5leHQpKFB5T2JqZWN0ICopOworICAgIGludCBjaGVja3RydWUgPSBsei0+ZnVuYyA9PSBQeV9Ob25lIHx8IGx6LT5mdW5jID09IChQeU9iamVjdCAqKSZQeUJvb2xfVHlwZTsKIAogICAgIGl0ZXJuZXh0ID0gKlB5X1RZUEUoaXQpLT50cF9pdGVybmV4dDsKICAgICBmb3IgKDs7KSB7CkBAIC00NzYsMTIgKzQ2NSwxMSBAQAogICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgaWYgKGx6LT5mdW5jID09IFB5X05vbmUgfHwgbHotPmZ1bmMgPT0gKFB5T2JqZWN0ICopJlB5Qm9vbF9UeXBlKSB7CisgICAgICAgIGlmIChjaGVja3RydWUpIHsKICAgICAgICAgICAgIG9rID0gUHlPYmplY3RfSXNUcnVlKGl0ZW0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUHlPYmplY3QgKmdvb2Q7Ci0gICAgICAgICAgICBnb29kID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0sIE5VTEwpOworICAgICAgICAgICAgZ29vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobHotPmZ1bmMsIGl0ZW0sIE5VTEwpOwogICAgICAgICAgICAgaWYgKGdvb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExNjgsMjYgKzExNTYsNDMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYXBfbmV4dChtYXBvYmplY3QgKmx6KQogewotICAgIFB5T2JqZWN0ICp2YWw7Ci0gICAgUHlPYmplY3QgKmFyZ3R1cGxlOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgUHlfc3NpemVfdCBudW1hcmdzLCBpOworICAgIFB5T2JqZWN0ICpzbWFsbF9zdGFja1s1XTsKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3Qgbml0ZXJzLCBuYXJncywgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIG51bWFyZ3MgPSBQeVR1cGxlX1NpemUobHotPml0ZXJzKTsKLSAgICBhcmd0dXBsZSA9IFB5VHVwbGVfTmV3KG51bWFyZ3MpOwotICAgIGlmIChhcmd0dXBsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZvciAoaT0wIDsgaTxudW1hcmdzIDsgaSsrKSB7Ci0gICAgICAgIHZhbCA9IFB5SXRlcl9OZXh0KFB5VHVwbGVfR0VUX0lURU0obHotPml0ZXJzLCBpKSk7Ci0gICAgICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3R1cGxlKTsKKyAgICBuaXRlcnMgPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5pdGVycyk7CisgICAgaWYgKG5pdGVycyA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spKSB7CisgICAgICAgIHN0YWNrID0gc21hbGxfc3RhY2s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IFB5TWVtX01hbGxvYyhuaXRlcnMgKiBzaXplb2Yoc3RhY2tbMF0pKTsKKyAgICAgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3R1cGxlLCBpLCB2YWwpOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGx6LT5mdW5jLCBhcmd0dXBsZSwgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3R1cGxlKTsKKworICAgIG5hcmdzID0gMDsKKyAgICBmb3IgKGk9MDsgaSA8IG5pdGVyczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdCA9IFB5VHVwbGVfR0VUX0lURU0obHotPml0ZXJzLCBpKTsKKyAgICAgICAgUHlPYmplY3QgKnZhbCA9IFB5X1RZUEUoaXQpLT50cF9pdGVybmV4dChpdCk7CisgICAgICAgIGlmICh2YWwgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIHN0YWNrW2ldID0gdmFsOworICAgICAgICBuYXJncysrOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbChsei0+ZnVuYywgc3RhY2ssIG5hcmdzKTsKKworZXhpdDoKKyAgICBmb3IgKGk9MDsgaSA8IG5hcmdzOyBpKyspIHsKKyAgICAgICAgUHlfREVDUkVGKHN0YWNrW2ldKTsKKyAgICB9CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNzc5LDcgKzE3ODQsNyBAQAogICAgICAgICBpZiAoZG9fZmx1c2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZWxzZSBpZiAoZG9fZmx1c2gpIHsKLSAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgZWxzZQpAQCAtMTg0NSw3ICsxODUwLDcgQEAKICAgICB9CiAKICAgICAvKiBGaXJzdCBvZiBhbGwsIGZsdXNoIHN0ZGVyciAqLwotICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMTg1NCw3ICsxODU5LDcgQEAKICAgICAvKiBXZSBzaG91bGQgb25seSB1c2UgKEdOVSkgcmVhZGxpbmUgaWYgUHl0aG9uJ3Mgc3lzLnN0ZGluIGFuZAogICAgICAgIHN5cy5zdGRvdXQgYXJlIHRoZSBzYW1lIGFzIEMncyBzdGRpbiBhbmQgc3Rkb3V0LCBiZWNhdXNlIHdlCiAgICAgICAgbmVlZCB0byBwYXNzIGl0IHRob3NlLiAqLwotICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmluLCAmUHlJZF9maWxlbm8sICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbiwgJlB5SWRfZmlsZW5vLCBOVUxMKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgdHR5ID0gMDsKQEAgLTE4NjcsNyArMTg3Miw3IEBACiAgICAgICAgIHR0eSA9IGZkID09IGZpbGVubyhzdGRpbikgJiYgaXNhdHR5KGZkKTsKICAgICB9CiAgICAgaWYgKHR0eSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZpbGVubywgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHR0eSA9IDA7CkBAIC0xOTAyLDcgKzE5MDcsNyBAQAogICAgICAgICBzdGRpbl9lcnJvcnNfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhzdGRpbl9lcnJvcnMpOwogICAgICAgICBpZiAoIXN0ZGluX2VuY29kaW5nX3N0ciB8fCAhc3RkaW5fZXJyb3JzX3N0cikKICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQpAQCAtMTkyOSw5ICsxOTM0LDggQEAKICAgICAgICAgICAgIFB5X0NMRUFSKHN0cmluZ3BvKTsKICAgICAgICAgICAgIGlmIChwbyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKLSAgICAgICAgICAgIHByb21wdHN0ciA9IFB5Qnl0ZXNfQXNTdHJpbmcocG8pOwotICAgICAgICAgICAgaWYgKHByb21wdHN0ciA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gX3JlYWRsaW5lX2Vycm9yczsKKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHBvKSk7CisgICAgICAgICAgICBwcm9tcHRzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhwbyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwbyA9IE5VTEw7CkBAIC0xOTgzLDcgKzE5ODcsNyBAQAogICAgICAgICBpZiAoUHlGaWxlX1dyaXRlT2JqZWN0KHByb21wdCwgZm91dCwgUHlfUFJJTlRfUkFXKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgZWxzZQpAQCAtMjA4NywxMCArMjA5MSwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fc29ydGVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKm5ld2xpc3QsICp2LCAqc2VxLCAqa2V5ZnVuYz1OVUxMLCAqbmV3YXJnczsKKyAgICBQeU9iamVjdCAqbmV3bGlzdCwgKnYsICpzZXEsICprZXlmdW5jPU5VTEwsICoqbmV3YXJnczsKICAgICBQeU9iamVjdCAqY2FsbGFibGU7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJpdGVyYWJsZSIsICJrZXkiLCAicmV2ZXJzZSIsIDB9OwogICAgIGludCByZXZlcnNlOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAKICAgICAvKiBhcmdzIDEtMyBzaG91bGQgbWF0Y2ggbGlzdHNvcnQgaW4gT2JqZWN0cy9saXN0b2JqZWN0LmMgKi8KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPaTpzb3J0ZWQiLApAQCAtMjEwNywxNSArMjExMiw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG5ld2FyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIDQpOwotICAgIGlmIChuZXdhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG5ld2xpc3QpOwotICAgICAgICBQeV9ERUNSRUYoY2FsbGFibGUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICB2ID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgbmV3YXJncywga3dkcyk7Ci0gICAgUHlfREVDUkVGKG5ld2FyZ3MpOworICAgIG5ld2FyZ3MgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncykgLSAxOworICAgIHYgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGNhbGxhYmxlLCBuZXdhcmdzLCBuYXJncywga3dkcyk7CiAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdsaXN0KTsKQEAgLTI3MTAsMTAgKzI3MDksMTAgQEAKICAgICBTRVRCVUlMVElOKCJ6aXAiLCAgICAgICAgICAgICAgICAgICAmUHlaaXBfVHlwZSk7CiAgICAgZGVidWcgPSBQeUJvb2xfRnJvbUxvbmcoUHlfT3B0aW1pemVGbGFnID09IDApOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiX19kZWJ1Z19fIiwgZGVidWcpIDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKGRlYnVnKTsKKyAgICAgICAgUHlfREVDUkVGKGRlYnVnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIFB5X1hERUNSRUYoZGVidWcpOworICAgIFB5X0RFQ1JFRihkZWJ1Zyk7CiAKICAgICByZXR1cm4gbW9kOwogI3VuZGVmIEFERF9UT19BTEwKZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbC5jIGIvUHl0aG9uL2NldmFsLmMKaW5kZXggZTlkMGNiYi4uODJjYzlhMiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsLmMKKysrIGIvUHl0aG9uL2NldmFsLmMKQEAgLTE1LDg3ICsxNSwxMiBAQAogI2luY2x1ZGUgImRpY3RvYmplY3QuaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgogI2luY2x1ZGUgIm9wY29kZS5oIgorI2luY2x1ZGUgInB5ZHRyYWNlLmgiCiAjaW5jbHVkZSAic2V0b2JqZWN0LmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCi0jaWZuZGVmIFdJVEhfVFNDCi0KLSNkZWZpbmUgUkVBRF9USU1FU1RBTVAodmFyKQotCi0jZWxzZQotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB1aW50NjQ7Ci0KLS8qIFBvd2VyUEMgc3VwcG9ydC4KLSAgICJfX3BwY19fIiBhcHBlYXJzIHRvIGJlIHRoZSBwcmVwcm9jZXNzb3IgZGVmaW5pdGlvbiB0byBkZXRlY3Qgb24gT1MgWCwgd2hlcmVhcwotICAgIl9fcG93ZXJwY19fIiBhcHBlYXJzIHRvIGJlIHRoZSBjb3JyZWN0IG9uZSBmb3IgTGludXggd2l0aCBHQ0MKLSovCi0jaWYgZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkIChfX3Bvd2VycGNfXykKLQotI2RlZmluZSBSRUFEX1RJTUVTVEFNUCh2YXIpIHBwY19nZXRjb3VudGVyKCZ2YXIpCi0KLXN0YXRpYyB2b2lkCi1wcGNfZ2V0Y291bnRlcih1aW50NjQgKnYpCi17Ci0gICAgdW5zaWduZWQgbG9uZyB0YnUsIHRiLCB0YnUyOwotCi0gIGxvb3A6Ci0gICAgYXNtIHZvbGF0aWxlICgibWZ0YnUgJTAiIDogIj1yIiAodGJ1KSApOwotICAgIGFzbSB2b2xhdGlsZSAoIm1mdGIgICUwIiA6ICI9ciIgKHRiKSAgKTsKLSAgICBhc20gdm9sYXRpbGUgKCJtZnRidSAlMCIgOiAiPXIiICh0YnUyKSk7Ci0gICAgaWYgKF9fYnVpbHRpbl9leHBlY3QodGJ1ICE9IHRidTIsIDApKSBnb3RvIGxvb3A7Ci0KLSAgICAvKiBUaGUgc2xpZ2h0bHkgcGVjdWxpYXIgd2F5IG9mIHdyaXRpbmcgdGhlIG5leHQgbGluZXMgaXMKLSAgICAgICBjb21waWxlZCBiZXR0ZXIgYnkgR0NDIHRoYW4gYW55IG90aGVyIHdheSBJIHRyaWVkLiAqLwotICAgICgobG9uZyopKHYpKVswXSA9IHRidTsKLSAgICAoKGxvbmcqKSh2KSlbMV0gPSB0YjsKLX0KLQotI2VsaWYgZGVmaW5lZChfX2kzODZfXykKLQotLyogdGhpcyBpcyBmb3IgbGludXgveDg2IChhbmQgcHJvYmFibHkgYW55IG90aGVyIEdDQy94ODYgY29tYm8pICovCi0KLSNkZWZpbmUgUkVBRF9USU1FU1RBTVAodmFsKSBcCi0gICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZHRzYyIgOiAiPUEiICh2YWwpKQotCi0jZWxpZiBkZWZpbmVkKF9feDg2XzY0X18pCi0KLS8qIGZvciBnY2MveDg2XzY0LCB0aGUgIkEiIGNvbnN0cmFpbnQgaW4gREkgbW9kZSBtZWFucyAqZWl0aGVyKiByYXggKm9yKiByZHg7Ci0gICBub3QgZWR4OmVheCBhcyBpdCBkb2VzIGZvciBpMzg2LiAgU2luY2UgcmR0c2MgcHV0cyBpdHMgcmVzdWx0IGluIGVkeDplYXgKLSAgIGV2ZW4gaW4gNjQtYml0IG1vZGUsIHdlIG5lZWQgdG8gdXNlICJhIiBhbmQgImQiIGZvciB0aGUgbG93ZXIgYW5kIHVwcGVyCi0gICAzMi1iaXQgcGllY2VzIG9mIHRoZSByZXN1bHQuICovCi0KLSNkZWZpbmUgUkVBRF9USU1FU1RBTVAodmFsKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHVuc2lnbmVkIGludCBoLCBsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18oInJkdHNjIiA6ICI9YSIgKGwpLCAiPWQiIChoKSk7IFwKLSAgICAodmFsKSA9ICgodWludDY0KWwpIHwgKCgodWludDY0KWgpIDw8IDMyKTsgICAgICAgICAgXAotICAgIH0gd2hpbGUoMCkKLQotCi0jZWxzZQotCi0jZXJyb3IgIkRvbid0IGtub3cgaG93IHRvIGltcGxlbWVudCB0aW1lc3RhbXAgY291bnRlciBmb3IgdGhpcyBhcmNoaXRlY3R1cmUiCi0KLSNlbmRpZgotCi12b2lkIGR1bXBfdHNjKGludCBvcGNvZGUsIGludCB0aWNrZWQsIHVpbnQ2NCBpbnN0MCwgdWludDY0IGluc3QxLAotICAgICAgICAgICAgICB1aW50NjQgbG9vcDAsIHVpbnQ2NCBsb29wMSwgdWludDY0IGludHIwLCB1aW50NjQgaW50cjEpCi17Ci0gICAgdWludDY0IGludHIsIGluc3QsIGxvb3A7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKLSAgICBpZiAoIXRzdGF0ZS0+aW50ZXJwLT50c2NkdW1wKQotICAgICAgICByZXR1cm47Ci0gICAgaW50ciA9IGludHIxIC0gaW50cjA7Ci0gICAgaW5zdCA9IGluc3QxIC0gaW5zdDAgLSBpbnRyOwotICAgIGxvb3AgPSBsb29wMSAtIGxvb3AwIC0gaW50cjsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIm9wY29kZT0lMDNkIHQ9JWQgaW5zdD0lMDZsbGQgbG9vcD0lMDZsbGRcbiIsCi0gICAgICAgICAgICBvcGNvZGUsIHRpY2tlZCwgaW5zdCwgbG9vcCk7Ci19Ci0KLSNlbmRpZgotCiAvKiBUdXJuIHRoaXMgb24gaWYgeW91ciBjb21waWxlciBjaG9rZXMgb24gdGhlIGJpZyBzd2l0Y2g6ICovCiAvKiAjZGVmaW5lIENBU0VfVE9PX0JJRyAxICovCiAKQEAgLTEwOCwyNCArMzMsMTMgQEAKIHR5cGVkZWYgUHlPYmplY3QgKigqY2FsbHByb2MpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotI2lmZGVmIFdJVEhfVFNDCi1zdGF0aWMgUHlPYmplY3QgKiBjYWxsX2Z1bmN0aW9uKFB5T2JqZWN0ICoqKiwgaW50LCB1aW50NjQqLCB1aW50NjQqKTsKLSNlbHNlCi1zdGF0aWMgUHlPYmplY3QgKiBjYWxsX2Z1bmN0aW9uKFB5T2JqZWN0ICoqKiwgaW50KTsKLSNlbmRpZgotc3RhdGljIFB5T2JqZWN0ICogZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqLCBQeU9iamVjdCAqKiosIGludCwgaW50LCBpbnQpOwotc3RhdGljIFB5T2JqZWN0ICogZG9fY2FsbChQeU9iamVjdCAqLCBQeU9iamVjdCAqKiosIGludCwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCAqIGV4dF9kb19jYWxsKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKiwgaW50LCBpbnQsIGludCk7Ci1zdGF0aWMgUHlPYmplY3QgKiB1cGRhdGVfa2V5d29yZF9hcmdzKFB5T2JqZWN0ICosIGludCwgUHlPYmplY3QgKioqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKLXN0YXRpYyBQeU9iamVjdCAqIHVwZGF0ZV9zdGFyX2FyZ3MoaW50LCBpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqKik7Ci1zdGF0aWMgUHlPYmplY3QgKiBsb2FkX2FyZ3MoUHlPYmplY3QgKioqLCBpbnQpOwotI2RlZmluZSBDQUxMX0ZMQUdfVkFSIDEKLSNkZWZpbmUgQ0FMTF9GTEFHX0tXIDIKK3N0YXRpYyBQeU9iamVjdCAqIGNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqLCBQeV9zc2l6ZV90LCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqIGZhc3RfZnVuY3Rpb24oUHlPYmplY3QgKiwgUHlPYmplY3QgKiosIFB5X3NzaXplX3QsIFB5T2JqZWN0ICopOworc3RhdGljIFB5T2JqZWN0ICogZG9fY2FsbF9jb3JlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiAjaWZkZWYgTExUUkFDRQogc3RhdGljIGludCBsbHRyYWNlOwotc3RhdGljIGludCBwcnRyYWNlKFB5T2JqZWN0ICosIGNoYXIgKik7CitzdGF0aWMgaW50IHBydHJhY2UoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKTsKICNlbmRpZgogc3RhdGljIGludCBjYWxsX3RyYWNlKFB5X3RyYWNlZnVuYywgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKiwKQEAgLTEzNywxNCArNTEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgbWF5YmVfY2FsbF9saW5lX3RyYWNlKFB5X3RyYWNlZnVuYywgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqLCBpbnQgKiwgaW50ICosIGludCAqKTsKK3N0YXRpYyB2b2lkIG1heWJlX2R0cmFjZV9saW5lKFB5RnJhbWVPYmplY3QgKiwgaW50ICosIGludCAqLCBpbnQgKik7CitzdGF0aWMgdm9pZCBkdHJhY2VfZnVuY3Rpb25fZW50cnkoUHlGcmFtZU9iamVjdCAqKTsKK3N0YXRpYyB2b2lkIGR0cmFjZV9mdW5jdGlvbl9yZXR1cm4oUHlGcmFtZU9iamVjdCAqKTsKIAogc3RhdGljIFB5T2JqZWN0ICogY21wX291dGNvbWUoaW50LCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqIGltcG9ydF9uYW1lKFB5RnJhbWVPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgUHlPYmplY3QgKiBpbXBvcnRfZnJvbShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgaW1wb3J0X2FsbF9mcm9tKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIHZvaWQgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIGZvcm1hdF9leGNfdW5ib3VuZChQeUNvZGVPYmplY3QgKmNvLCBpbnQgb3BhcmcpOwogc3RhdGljIFB5T2JqZWN0ICogdW5pY29kZV9jb25jYXRlbmF0ZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICosIHVuc2lnbmVkIGNoYXIgKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnJhbWVPYmplY3QgKiwgY29uc3QgX1B5X0NPREVVTklUICopOwogc3RhdGljIFB5T2JqZWN0ICogc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKiwgX1B5X0lkZW50aWZpZXIgKik7CiAKICNkZWZpbmUgTkFNRV9FUlJPUl9NU0cgXApAQCAtNzk2LDExICs3MTQsMTggQEAKIFB5T2JqZWN0ICoKIFB5RXZhbF9FdmFsRnJhbWVFeChQeUZyYW1lT2JqZWN0ICpmLCBpbnQgdGhyb3dmbGFnKQogeworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgcmV0dXJuIHRzdGF0ZS0+aW50ZXJwLT5ldmFsX2ZyYW1lKGYsIHRocm93ZmxhZyk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdChQeUZyYW1lT2JqZWN0ICpmLCBpbnQgdGhyb3dmbGFnKQorewogI2lmZGVmIERYUEFJUlMKICAgICBpbnQgbGFzdG9wY29kZSA9IDA7CiAjZW5kaWYKICAgICBQeU9iamVjdCAqKnN0YWNrX3BvaW50ZXI7ICAvKiBOZXh0IGZyZWUgc2xvdCBpbiB2YWx1ZSBzdGFjayAqLwotICAgIHVuc2lnbmVkIGNoYXIgKm5leHRfaW5zdHI7CisgICAgY29uc3QgX1B5X0NPREVVTklUICpuZXh0X2luc3RyOwogICAgIGludCBvcGNvZGU7ICAgICAgICAvKiBDdXJyZW50IG9wY29kZSAqLwogICAgIGludCBvcGFyZzsgICAgICAgICAvKiBDdXJyZW50IG9wY29kZSBhcmd1bWVudCwgaWYgYW55ICovCiAgICAgZW51bSB3aHlfY29kZSB3aHk7IC8qIFJlYXNvbiBmb3IgYmxvY2sgc3RhY2sgdW53aW5kICovCkBAIC04MTgsNyArNzQzLDcgQEAKICAgICAgICB0aW1lIGl0IGlzIHRlc3RlZC4gKi8KICAgICBpbnQgaW5zdHJfdWIgPSAtMSwgaW5zdHJfbGIgPSAwLCBpbnN0cl9wcmV2ID0gLTE7CiAKLSAgICB1bnNpZ25lZCBjaGFyICpmaXJzdF9pbnN0cjsKKyAgICBjb25zdCBfUHlfQ09ERVVOSVQgKmZpcnN0X2luc3RyOwogICAgIFB5T2JqZWN0ICpuYW1lczsKICAgICBQeU9iamVjdCAqY29uc3RzOwogCkBAIC04ODYsMjQgKzgxMSwxMCBAQAogLyogSW1wb3J0IHRoZSBzdGF0aWMganVtcCB0YWJsZSAqLwogI2luY2x1ZGUgIm9wY29kZV90YXJnZXRzLmgiCiAKLS8qIFRoaXMgbWFjcm8gaXMgdXNlZCB3aGVuIHNldmVyYWwgb3Bjb2RlcyBkZWZlciB0byB0aGUgc2FtZSBpbXBsZW1lbnRhdGlvbgotICAgKGUuZy4gU0VUVVBfTE9PUCwgU0VUVVBfRklOQUxMWSkgKi8KLSNkZWZpbmUgVEFSR0VUX1dJVEhfSU1QTChvcCwgaW1wbCkgXAotICAgIFRBUkdFVF8jI29wOiBcCi0gICAgICAgIG9wY29kZSA9IG9wOyBcCi0gICAgICAgIGlmIChIQVNfQVJHKG9wKSkgXAotICAgICAgICAgICAgb3BhcmcgPSBORVhUQVJHKCk7IFwKLSAgICBjYXNlIG9wOiBcCi0gICAgICAgIGdvdG8gaW1wbDsgXAotCiAjZGVmaW5lIFRBUkdFVChvcCkgXAogICAgIFRBUkdFVF8jI29wOiBcCi0gICAgICAgIG9wY29kZSA9IG9wOyBcCi0gICAgICAgIGlmIChIQVNfQVJHKG9wKSkgXAotICAgICAgICAgICAgb3BhcmcgPSBORVhUQVJHKCk7IFwKICAgICBjYXNlIG9wOgogCi0KICNkZWZpbmUgRElTUEFUQ0goKSBcCiAgICAgeyBcCiAgICAgICAgIGlmICghX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmV2YWxfYnJlYWtlcikpIHsgICAgICBcCkBAIC05MTUsMTggKzgyNiwyMCBAQAogI2lmZGVmIExMVFJBQ0UKICNkZWZpbmUgRkFTVF9ESVNQQVRDSCgpIFwKICAgICB7IFwKLSAgICAgICAgaWYgKCFsbHRyYWNlICYmICFfUHlfVHJhY2luZ1Bvc3NpYmxlKSB7IFwKKyAgICAgICAgaWYgKCFsbHRyYWNlICYmICFfUHlfVHJhY2luZ1Bvc3NpYmxlICYmICFQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkgeyBcCiAgICAgICAgICAgICBmLT5mX2xhc3RpID0gSU5TVFJfT0ZGU0VUKCk7IFwKLSAgICAgICAgICAgIGdvdG8gKm9wY29kZV90YXJnZXRzWypuZXh0X2luc3RyKytdOyBcCisgICAgICAgICAgICBORVhUT1BBUkcoKTsgXAorICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbb3Bjb2RlXTsgXAogICAgICAgICB9IFwKICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOyBcCiAgICAgfQogI2Vsc2UKICNkZWZpbmUgRkFTVF9ESVNQQVRDSCgpIFwKICAgICB7IFwKLSAgICAgICAgaWYgKCFfUHlfVHJhY2luZ1Bvc3NpYmxlKSB7IFwKKyAgICAgICAgaWYgKCFfUHlfVHJhY2luZ1Bvc3NpYmxlICYmICFQeURUcmFjZV9MSU5FX0VOQUJMRUQoKSkgeyBcCiAgICAgICAgICAgICBmLT5mX2xhc3RpID0gSU5TVFJfT0ZGU0VUKCk7IFwKLSAgICAgICAgICAgIGdvdG8gKm9wY29kZV90YXJnZXRzWypuZXh0X2luc3RyKytdOyBcCisgICAgICAgICAgICBORVhUT1BBUkcoKTsgXAorICAgICAgICAgICAgZ290byAqb3Bjb2RlX3RhcmdldHNbb3Bjb2RlXTsgXAogICAgICAgICB9IFwKICAgICAgICAgZ290byBmYXN0X25leHRfb3Bjb2RlOyBcCiAgICAgfQpAQCAtOTM1LDEwICs4NDgsNyBAQAogI2Vsc2UKICNkZWZpbmUgVEFSR0VUKG9wKSBcCiAgICAgY2FzZSBvcDoKLSNkZWZpbmUgVEFSR0VUX1dJVEhfSU1QTChvcCwgaW1wbCkgXAotICAgIC8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgYGltcGxgIHVudXNlZCAqLyBcCi0gICAgaWYgKDApIGdvdG8gaW1wbDsgXAotICAgIGNhc2Ugb3A6CisKICNkZWZpbmUgRElTUEFUQ0goKSBjb250aW51ZQogI2RlZmluZSBGQVNUX0RJU1BBVENIKCkgZ290byBmYXN0X25leHRfb3Bjb2RlCiAjZW5kaWYKQEAgLTk1Miw3MCArODYyLDMzIEBACiAjZGVmaW5lIEdFVElURU0odiwgaSkgUHlUdXBsZV9HZXRJdGVtKCh2KSwgKGkpKQogI2VuZGlmCiAKLSNpZmRlZiBXSVRIX1RTQwotLyogVXNlIFBlbnRpdW0gdGltZXN0YW1wIGNvdW50ZXIgdG8gbWFyayBjZXJ0YWluIGV2ZW50czoKLSAgIGluc3QwIC0tIGJlZ2lubmluZyBvZiBzd2l0Y2ggc3RhdGVtZW50IGZvciBvcGNvZGUgZGlzcGF0Y2gKLSAgIGluc3QxIC0tIGVuZCBvZiBzd2l0Y2ggc3RhdGVtZW50IChtYXkgYmUgc2tpcHBlZCkKLSAgIGxvb3AwIC0tIHRoZSB0b3Agb2YgdGhlIG1haW5sb29wCi0gICBsb29wMSAtLSBwbGFjZSB3aGVyZSBjb250cm9sIHJldHVybnMgYWdhaW4gdG8gdG9wIG9mIG1haW5sb29wCi0gICAgICAgICAgICAobWF5IGJlIHNraXBwZWQpCi0gICBpbnRyMSAtLSBiZWdpbm5pbmcgb2YgbG9uZyBpbnRlcnJ1cHRpb24KLSAgIGludHIyIC0tIGVuZCBvZiBsb25nIGludGVycnVwdGlvbgotCi0gICBNYW55IG9wY29kZXMgY2FsbCBvdXQgdG8gaGVscGVyIEMgZnVuY3Rpb25zLiAgSW4gc29tZSBjYXNlcywgdGhlCi0gICB0aW1lIGluIHRob3NlIGZ1bmN0aW9ucyBzaG91bGQgYmUgY291bnRlZCB0b3dhcmRzIHRoZSB0aW1lIGZvciB0aGUKLSAgIG9wY29kZSwgYnV0IG5vdCBpbiBhbGwgY2FzZXMuICBGb3IgZXhhbXBsZSwgYSBDQUxMX0ZVTkNUSU9OIG9wY29kZQotICAgY2FsbHMgYW5vdGhlciBQeXRob24gZnVuY3Rpb247IHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY2hhcmdlIGFsbCB0aGUKLSAgIGJ5dGVjb2RlIGV4ZWN1dGVkIGJ5IHRoZSBjYWxsZWQgZnVuY3Rpb24gdG8gdGhlIGNhbGxlci4KLQotICAgSXQncyBoYXJkIHRvIG1ha2UgYSB1c2VmdWwganVkZ2VtZW50IHN0YXRpY2FsbHkuICBJbiB0aGUgcHJlc2VuY2UKLSAgIG9mIG9wZXJhdG9yIG92ZXJsb2FkaW5nLCBpdCdzIGltcG9zc2libGUgdG8gdGVsbCBpZiBhIGNhbGwgd2lsbAotICAgZXhlY3V0ZSBuZXcgUHl0aG9uIGNvZGUgb3Igbm90LgotCi0gICBJdCdzIGEgY2FzZS1ieS1jYXNlIGp1ZGdlbWVudC4gIEknbGwgdXNlIGludHIxIGZvciB0aGUgZm9sbG93aW5nCi0gICBjYXNlczoKLQotICAgSU1QT1JUX1NUQVIKLSAgIElNUE9SVF9GUk9NCi0gICBDQUxMX0ZVTkNUSU9OIChhbmQgZnJpZW5kcykKLQotICovCi0gICAgdWludDY0IGluc3QwLCBpbnN0MSwgbG9vcDAsIGxvb3AxLCBpbnRyMCA9IDAsIGludHIxID0gMDsKLSAgICBpbnQgdGlja2VkID0gMDsKLQotICAgIFJFQURfVElNRVNUQU1QKGluc3QwKTsKLSAgICBSRUFEX1RJTUVTVEFNUChpbnN0MSk7Ci0gICAgUkVBRF9USU1FU1RBTVAobG9vcDApOwotICAgIFJFQURfVElNRVNUQU1QKGxvb3AxKTsKLQotICAgIC8qIHNodXQgdXAgdGhlIGNvbXBpbGVyICovCi0gICAgb3Bjb2RlID0gMDsKLSNlbmRpZgotCiAvKiBDb2RlIGFjY2VzcyBtYWNyb3MgKi8KIAotI2RlZmluZSBJTlNUUl9PRkZTRVQoKSAgKChpbnQpKG5leHRfaW5zdHIgLSBmaXJzdF9pbnN0cikpCi0jZGVmaW5lIE5FWFRPUCgpICAgICAgICAoKm5leHRfaW5zdHIrKykKLSNkZWZpbmUgTkVYVEFSRygpICAgICAgIChuZXh0X2luc3RyICs9IDIsIChuZXh0X2luc3RyWy0xXTw8OCkgKyBuZXh0X2luc3RyWy0yXSkKLSNkZWZpbmUgUEVFS0FSRygpICAgICAgICgobmV4dF9pbnN0clsyXTw8OCkgKyBuZXh0X2luc3RyWzFdKQotI2RlZmluZSBKVU1QVE8oeCkgICAgICAgKG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0ciArICh4KSkKLSNkZWZpbmUgSlVNUEJZKHgpICAgICAgIChuZXh0X2luc3RyICs9ICh4KSkKKy8qIFRoZSBpbnRlZ2VyIG92ZXJmbG93IGlzIGNoZWNrZWQgYnkgYW4gYXNzZXJ0aW9uIGJlbG93LiAqLworI2RlZmluZSBJTlNUUl9PRkZTRVQoKSAgKHNpemVvZihfUHlfQ09ERVVOSVQpICogKGludCkobmV4dF9pbnN0ciAtIGZpcnN0X2luc3RyKSkKKyNkZWZpbmUgTkVYVE9QQVJHKCkgIGRvIHsgXAorICAgICAgICBfUHlfQ09ERVVOSVQgd29yZCA9ICpuZXh0X2luc3RyOyBcCisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUod29yZCk7IFwKKyAgICAgICAgb3BhcmcgPSBfUHlfT1BBUkcod29yZCk7IFwKKyAgICAgICAgbmV4dF9pbnN0cisrOyBcCisgICAgfSB3aGlsZSAoMCkKKyNkZWZpbmUgSlVNUFRPKHgpICAgICAgIChuZXh0X2luc3RyID0gZmlyc3RfaW5zdHIgKyAoeCkgLyBzaXplb2YoX1B5X0NPREVVTklUKSkKKyNkZWZpbmUgSlVNUEJZKHgpICAgICAgIChuZXh0X2luc3RyICs9ICh4KSAvIHNpemVvZihfUHlfQ09ERVVOSVQpKQogCiAvKiBPcENvZGUgcHJlZGljdGlvbiBtYWNyb3MKICAgICBTb21lIG9wY29kZXMgdGVuZCB0byBjb21lIGluIHBhaXJzIHRodXMgbWFraW5nIGl0IHBvc3NpYmxlIHRvCiAgICAgcHJlZGljdCB0aGUgc2Vjb25kIGNvZGUgd2hlbiB0aGUgZmlyc3QgaXMgcnVuLiAgRm9yIGV4YW1wbGUsCi0gICAgQ09NUEFSRV9PUCBpcyBvZnRlbiBmb2xsb3dlZCBieSBKVU1QX0lGX0ZBTFNFIG9yIEpVTVBfSUZfVFJVRS4gIEFuZCwKLSAgICB0aG9zZSBvcGNvZGVzIGFyZSBvZnRlbiBmb2xsb3dlZCBieSBhIFBPUF9UT1AuCisgICAgQ09NUEFSRV9PUCBpcyBvZnRlbiBmb2xsb3dlZCBieSBQT1BfSlVNUF9JRl9GQUxTRSBvciBQT1BfSlVNUF9JRl9UUlVFLgogCiAgICAgVmVyaWZ5aW5nIHRoZSBwcmVkaWN0aW9uIGNvc3RzIGEgc2luZ2xlIGhpZ2gtc3BlZWQgdGVzdCBvZiBhIHJlZ2lzdGVyCiAgICAgdmFyaWFibGUgYWdhaW5zdCBhIGNvbnN0YW50LiAgSWYgdGhlIHBhaXJpbmcgd2FzIGdvb2QsIHRoZW4gdGhlCiAgICAgcHJvY2Vzc29yJ3Mgb3duIGludGVybmFsIGJyYW5jaCBwcmVkaWNhdGlvbiBoYXMgYSBoaWdoIGxpa2VsaWhvb2Qgb2YKICAgICBzdWNjZXNzLCByZXN1bHRpbmcgaW4gYSBuZWFybHkgemVyby1vdmVyaGVhZCB0cmFuc2l0aW9uIHRvIHRoZQogICAgIG5leHQgb3Bjb2RlLiAgQSBzdWNjZXNzZnVsIHByZWRpY3Rpb24gc2F2ZXMgYSB0cmlwIHRocm91Z2ggdGhlIGV2YWwtbG9vcAotICAgIGluY2x1ZGluZyBpdHMgdHdvIHVucHJlZGljdGFibGUgYnJhbmNoZXMsIHRoZSBIQVNfQVJHIHRlc3QgYW5kIHRoZQotICAgIHN3aXRjaC1jYXNlLiAgQ29tYmluZWQgd2l0aCB0aGUgcHJvY2Vzc29yJ3MgaW50ZXJuYWwgYnJhbmNoIHByZWRpY3Rpb24sCi0gICAgYSBzdWNjZXNzZnVsIFBSRURJQ1QgaGFzIHRoZSBlZmZlY3Qgb2YgbWFraW5nIHRoZSB0d28gb3Bjb2RlcyBydW4gYXMgaWYKLSAgICB0aGV5IHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZSB3aXRoIHRoZSBib2RpZXMgY29tYmluZWQuCisgICAgaW5jbHVkaW5nIGl0cyB1bnByZWRpY3RhYmxlIHN3aXRjaC1jYXNlIGJyYW5jaC4gIENvbWJpbmVkIHdpdGggdGhlCisgICAgcHJvY2Vzc29yJ3MgaW50ZXJuYWwgYnJhbmNoIHByZWRpY3Rpb24sIGEgc3VjY2Vzc2Z1bCBQUkVESUNUIGhhcyB0aGUKKyAgICBlZmZlY3Qgb2YgbWFraW5nIHRoZSB0d28gb3Bjb2RlcyBydW4gYXMgaWYgdGhleSB3ZXJlIGEgc2luZ2xlIG5ldyBvcGNvZGUKKyAgICB3aXRoIHRoZSBib2RpZXMgY29tYmluZWQuCiAKICAgICBJZiBjb2xsZWN0aW5nIG9wY29kZSBzdGF0aXN0aWNzLCB5b3VyIGNob2ljZXMgYXJlIHRvIGVpdGhlciBrZWVwIHRoZQogICAgIHByZWRpY3Rpb25zIHR1cm5lZC1vbiBhbmQgaW50ZXJwcmV0IHRoZSByZXN1bHRzIGFzIGlmIHNvbWUgb3Bjb2RlcwpAQCAtMTAzMCwxMyArOTAzLDE5IEBACiAKICNpZiBkZWZpbmVkKERZTkFNSUNfRVhFQ1VUSU9OX1BST0ZJTEUpIHx8IFVTRV9DT01QVVRFRF9HT1RPUwogI2RlZmluZSBQUkVESUNUKG9wKSAgICAgICAgICAgICBpZiAoMCkgZ290byBQUkVEXyMjb3AKLSNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOgotI2RlZmluZSBQUkVESUNURURfV0lUSF9BUkcob3ApICBQUkVEXyMjb3A6CiAjZWxzZQotI2RlZmluZSBQUkVESUNUKG9wKSAgICAgICAgICAgICBpZiAoKm5leHRfaW5zdHIgPT0gb3ApIGdvdG8gUFJFRF8jI29wCi0jZGVmaW5lIFBSRURJQ1RFRChvcCkgICAgICAgICAgIFBSRURfIyNvcDogbmV4dF9pbnN0cisrCi0jZGVmaW5lIFBSRURJQ1RFRF9XSVRIX0FSRyhvcCkgIFBSRURfIyNvcDogb3BhcmcgPSBQRUVLQVJHKCk7IG5leHRfaW5zdHIgKz0gMworI2RlZmluZSBQUkVESUNUKG9wKSBcCisgICAgZG97IFwKKyAgICAgICAgX1B5X0NPREVVTklUIHdvcmQgPSAqbmV4dF9pbnN0cjsgXAorICAgICAgICBvcGNvZGUgPSBfUHlfT1BDT0RFKHdvcmQpOyBcCisgICAgICAgIGlmIChvcGNvZGUgPT0gb3ApeyBcCisgICAgICAgICAgICBvcGFyZyA9IF9QeV9PUEFSRyh3b3JkKTsgXAorICAgICAgICAgICAgbmV4dF9pbnN0cisrOyBcCisgICAgICAgICAgICBnb3RvIFBSRURfIyNvcDsgXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlKDApCiAjZW5kaWYKKyNkZWZpbmUgUFJFRElDVEVEKG9wKSAgICAgICAgICAgUFJFRF8jI29wOgogCiAKIC8qIFN0YWNrIG1hbmlwdWxhdGlvbiBtYWNyb3MgKi8KQEAgLTExMDAsNyArOTc5LDcgQEAKICAgICB9CiAKICNkZWZpbmUgVU5XSU5EX0VYQ0VQVF9IQU5ETEVSKGIpIFwKLSAgICB7IFwKKyAgICBkbyB7IFwKICAgICAgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRyYWNlYmFjazsgXAogICAgICAgICBhc3NlcnQoU1RBQ0tfTEVWRUwoKSA+PSAoYiktPmJfbGV2ZWwgKyAzKTsgXAogICAgICAgICB3aGlsZSAoU1RBQ0tfTEVWRUwoKSA+IChiKS0+Yl9sZXZlbCArIDMpIHsgXApAQCAtMTExNiw3ICs5OTUsNyBAQAogICAgICAgICBQeV9YREVDUkVGKHR5cGUpOyBcCiAgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOyBcCiAgICAgICAgIFB5X1hERUNSRUYodHJhY2ViYWNrKTsgXAotICAgIH0KKyAgICB9IHdoaWxlKDApCiAKIC8qIFN0YXJ0IG9mIGNvZGUgKi8KIApAQCAtMTE2MCwyMSArMTAzOSwyNCBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZX0VOQUJMRUQoKSkKKyAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX2VudHJ5KGYpOworCiAgICAgY28gPSBmLT5mX2NvZGU7CiAgICAgbmFtZXMgPSBjby0+Y29fbmFtZXM7CiAgICAgY29uc3RzID0gY28tPmNvX2NvbnN0czsKICAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwogICAgIGZyZWV2YXJzID0gZi0+Zl9sb2NhbHNwbHVzICsgY28tPmNvX25sb2NhbHM7Ci0gICAgZmlyc3RfaW5zdHIgPSAodW5zaWduZWQgY2hhciopIFB5Qnl0ZXNfQVNfU1RSSU5HKGNvLT5jb19jb2RlKTsKLSAgICAvKiBBbiBleHBsYW5hdGlvbiBpcyBpbiBvcmRlciBmb3IgdGhlIG5leHQgbGluZS4KKyAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhjby0+Y29fY29kZSkpOworICAgIGFzc2VydChQeUJ5dGVzX0dFVF9TSVpFKGNvLT5jb19jb2RlKSA8PSBJTlRfTUFYKTsKKyAgICBhc3NlcnQoUHlCeXRlc19HRVRfU0laRShjby0+Y29fY29kZSkgJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKKyAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcoY28tPmNvX2NvZGUpLCBzaXplb2YoX1B5X0NPREVVTklUKSkpOworICAgIGZpcnN0X2luc3RyID0gKF9QeV9DT0RFVU5JVCAqKSBQeUJ5dGVzX0FTX1NUUklORyhjby0+Y29fY29kZSk7CisgICAgLyoKKyAgICAgICBmLT5mX2xhc3RpIHJlZmVycyB0byB0aGUgaW5kZXggb2YgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24sCisgICAgICAgdW5sZXNzIGl0J3MgLTEgaW4gd2hpY2ggY2FzZSBuZXh0X2luc3RyIHNob3VsZCBiZSBmaXJzdF9pbnN0ci4KIAotICAgICAgIGYtPmZfbGFzdGkgbm93IHJlZmVycyB0byB0aGUgaW5kZXggb2YgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24KLSAgICAgICBleGVjdXRlZC4gIFlvdSBtaWdodCB0aGluayB0aGlzIHdhcyBvYnZpb3VzIGZyb20gdGhlIG5hbWUsIGJ1dAotICAgICAgIHRoaXMgd2Fzbid0IGFsd2F5cyB0cnVlIGJlZm9yZSAyLjMhICBQeUZyYW1lX05ldyBub3cgc2V0cwotICAgICAgIGYtPmZfbGFzdGkgdG8gLTEgKGkuZS4gdGhlIGluZGV4ICpiZWZvcmUqIHRoZSBmaXJzdCBpbnN0cnVjdGlvbikKLSAgICAgICBhbmQgWUlFTERfVkFMVUUgZG9lc24ndCBmaWRkbGUgd2l0aCBmX2xhc3RpIGFueSBtb3JlLiAgU28gdGhpcwotICAgICAgIGRvZXMgd29yay4gIFByb21pc2UuCi0gICAgICAgWUlFTERfRlJPTSBzZXRzIGZfbGFzdGkgdG8gaXRzZWxmLCBpbiBvcmRlciB0byByZXBlYXRlZCB5aWVsZAorICAgICAgIFlJRUxEX0ZST00gc2V0cyBmX2xhc3RpIHRvIGl0c2VsZiwgaW4gb3JkZXIgdG8gcmVwZWF0ZWRseSB5aWVsZAogICAgICAgIG11bHRpcGxlIHZhbHVlcy4KIAogICAgICAgIFdoZW4gdGhlIFBSRURJQ1QoKSBtYWNyb3MgYXJlIGVuYWJsZWQsIHNvbWUgb3Bjb2RlIHBhaXJzIGZvbGxvdyBpbgpAQCAtMTE4MywxNSArMTA2NSwyMCBAQAogICAgICAgIHdlcmUgYSBzaW5nbGUgbmV3IG9wY29kZTsgYWNjb3JkaW5nbHksZi0+Zl9sYXN0aSB3aWxsIHBvaW50IHRvCiAgICAgICAgdGhlIGZpcnN0IGNvZGUgaW4gdGhlIHBhaXIgKGZvciBpbnN0YW5jZSwgR0VUX0lURVIgZm9sbG93ZWQgYnkKICAgICAgICBGT1JfSVRFUiBpcyBlZmZlY3RpdmVseSBhIHNpbmdsZSBvcGNvZGUgYW5kIGYtPmZfbGFzdGkgd2lsbCBwb2ludAotICAgICAgIGF0IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbWJpbmVkIHBhaXIuKQorICAgICAgIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbWJpbmVkIHBhaXIuKQogICAgICovCi0gICAgbmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyICsgZi0+Zl9sYXN0aSArIDE7CisgICAgYXNzZXJ0KGYtPmZfbGFzdGkgPj0gLTEpOworICAgIG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0cjsKKyAgICBpZiAoZi0+Zl9sYXN0aSA+PSAwKSB7CisgICAgICAgIGFzc2VydChmLT5mX2xhc3RpICUgc2l6ZW9mKF9QeV9DT0RFVU5JVCkgPT0gMCk7CisgICAgICAgIG5leHRfaW5zdHIgKz0gZi0+Zl9sYXN0aSAvIHNpemVvZihfUHlfQ09ERVVOSVQpICsgMTsKKyAgICB9CiAgICAgc3RhY2tfcG9pbnRlciA9IGYtPmZfc3RhY2t0b3A7CiAgICAgYXNzZXJ0KHN0YWNrX3BvaW50ZXIgIT0gTlVMTCk7CiAgICAgZi0+Zl9zdGFja3RvcCA9IE5VTEw7ICAgICAgIC8qIHJlbWFpbnMgTlVMTCB1bmxlc3MgeWllbGQgc3VzcGVuZHMgZnJhbWUgKi8KICAgICBmLT5mX2V4ZWN1dGluZyA9IDE7CiAKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSkpIHsKKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKICAgICAgICAgaWYgKCF0aHJvd2ZsYWcgJiYgZi0+Zl9leGNfdHlwZSAhPSBOVUxMICYmIGYtPmZfZXhjX3R5cGUgIT0gUHlfTm9uZSkgewogICAgICAgICAgICAgLyogV2Ugd2VyZSBpbiBhbiBleGNlcHQgaGFuZGxlciB3aGVuIHdlIGxlZnQsCiAgICAgICAgICAgICAgICByZXN0b3JlIHRoZSBleGNlcHRpb24gc3RhdGUgd2hpY2ggd2FzIHB1dCBhc2lkZQpAQCAtMTIxOSwyMyArMTEwNiw2IEBACiAjZW5kaWYKIAogICAgIGZvciAoOzspIHsKLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICBpZiAoaW5zdDEgPT0gMCkgewotICAgICAgICAgICAgLyogQWxtb3N0IHN1cmVseSwgdGhlIG9wY29kZSBleGVjdXRlZCBhIGJyZWFrCi0gICAgICAgICAgICAgICBvciBhIGNvbnRpbnVlLCBwcmV2ZW50aW5nIGluc3QxIGZyb20gYmVpbmcgc2V0Ci0gICAgICAgICAgICAgICBvbiB0aGUgd2F5IG91dCBvZiB0aGUgbG9vcC4KLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MSk7Ci0gICAgICAgICAgICBsb29wMSA9IGluc3QxOwotICAgICAgICB9Ci0gICAgICAgIGR1bXBfdHNjKG9wY29kZSwgdGlja2VkLCBpbnN0MCwgaW5zdDEsIGxvb3AwLCBsb29wMSwKLSAgICAgICAgICAgICAgICAgaW50cjAsIGludHIxKTsKLSAgICAgICAgdGlja2VkID0gMDsKLSAgICAgICAgaW5zdDEgPSAwOwotICAgICAgICBpbnRyMCA9IDA7Ci0gICAgICAgIGludHIxID0gMDsKLSAgICAgICAgUkVBRF9USU1FU1RBTVAobG9vcDApOwotI2VuZGlmCiAgICAgICAgIGFzc2VydChzdGFja19wb2ludGVyID49IGYtPmZfdmFsdWVzdGFjayk7IC8qIGVsc2UgdW5kZXJmbG93ICovCiAgICAgICAgIGFzc2VydChTVEFDS19MRVZFTCgpIDw9IGNvLT5jb19zdGFja3NpemUpOyAgLyogZWxzZSBvdmVyZmxvdyAqLwogICAgICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwpAQCAtMTI0OSwxNCArMTExOSwxMSBAQAogICAgICAgICAgICBQeV9NYWtlUGVuZGluZ0NhbGxzKCkgYWJvdmUuICovCiAKICAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZldmFsX2JyZWFrZXIpKSB7Ci0gICAgICAgICAgICBpZiAoKm5leHRfaW5zdHIgPT0gU0VUVVBfRklOQUxMWSkgeworICAgICAgICAgICAgaWYgKF9QeV9PUENPREUoKm5leHRfaW5zdHIpID09IFNFVFVQX0ZJTkFMTFkpIHsKICAgICAgICAgICAgICAgICAvKiBNYWtlIHRoZSBsYXN0IG9wY29kZSBiZWZvcmUKICAgICAgICAgICAgICAgICAgICBhIHRyeTogZmluYWxseTogYmxvY2sgdW5pbnRlcnJ1cHRpYmxlLiAqLwogICAgICAgICAgICAgICAgIGdvdG8gZmFzdF9uZXh0X29wY29kZTsKICAgICAgICAgICAgIH0KLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICAgICAgdGlja2VkID0gMTsKLSNlbmRpZgogICAgICAgICAgICAgaWYgKF9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZwZW5kaW5nY2FsbHNfdG9fZG8pKSB7CiAgICAgICAgICAgICAgICAgaWYgKFB5X01ha2VQZW5kaW5nQ2FsbHMoKSA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xMjk2LDYgKzExNjMsOSBAQAogICAgIGZhc3RfbmV4dF9vcGNvZGU6CiAgICAgICAgIGYtPmZfbGFzdGkgPSBJTlNUUl9PRkZTRVQoKTsKIAorICAgICAgICBpZiAoUHlEVHJhY2VfTElORV9FTkFCTEVEKCkpCisgICAgICAgICAgICBtYXliZV9kdHJhY2VfbGluZShmLCAmaW5zdHJfbGIsICZpbnN0cl91YiwgJmluc3RyX3ByZXYpOworCiAgICAgICAgIC8qIGxpbmUtYnktbGluZSB0cmFjaW5nIHN1cHBvcnQgKi8KIAogICAgICAgICBpZiAoX1B5X1RyYWNpbmdQb3NzaWJsZSAmJgpAQCAtMTMyMiwxMSArMTE5Miw3IEBACiAKICAgICAgICAgLyogRXh0cmFjdCBvcGNvZGUgYW5kIGFyZ3VtZW50ICovCiAKLSAgICAgICAgb3Bjb2RlID0gTkVYVE9QKCk7Ci0gICAgICAgIG9wYXJnID0gMDsgICAvKiBhbGxvd3Mgb3BhcmcgdG8gYmUgc3RvcmVkIGluIGEgcmVnaXN0ZXIgYmVjYXVzZQotICAgICAgICAgICAgaXQgZG9lc24ndCBoYXZlIHRvIGJlIHJlbWVtYmVyZWQgYWNyb3NzIGEgZnVsbCBsb29wICovCi0gICAgICAgIGlmIChIQVNfQVJHKG9wY29kZSkpCi0gICAgICAgICAgICBvcGFyZyA9IE5FWFRBUkcoKTsKKyAgICAgICAgTkVYVE9QQVJHKCk7CiAgICAgZGlzcGF0Y2hfb3Bjb2RlOgogI2lmZGVmIERZTkFNSUNfRVhFQ1VUSU9OX1BST0ZJTEUKICNpZmRlZiBEWFBBSVJTCkBAIC0xMzUxLDkgKzEyMTcsNiBAQAogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICAvKiBNYWluIHN3aXRjaCBvbiBvcGNvZGUgKi8KLSAgICAgICAgUkVBRF9USU1FU1RBTVAoaW5zdDApOwotCiAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAKICAgICAgICAgLyogQkVXQVJFIQpAQCAtMTM3Nyw2ICsxMjQwLDcgQEAKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChMT0FEX0NPTlNUKTsKICAgICAgICAgVEFSR0VUKExPQURfQ09OU1QpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IEdFVElURU0oY29uc3RzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwpAQCAtMTM4NCw3ICsxMjQ4LDcgQEAKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhTVE9SRV9GQVNUKTsKKyAgICAgICAgUFJFRElDVEVEKFNUT1JFX0ZBU1QpOwogICAgICAgICBUQVJHRVQoU1RPUkVfRkFTVCkgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUE9QKCk7CiAgICAgICAgICAgICBTRVRMT0NBTChvcGFyZywgdmFsdWUpOwpAQCAtMTg2Myw2ICsxNzI3LDYxIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKFNUT1JFX0FOTk9UQVRJT04pIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICBQeU9iamVjdCAqYW5uX2RpY3Q7CisgICAgICAgICAgICBQeU9iamVjdCAqYW5uID0gUE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBpZiAoZi0+Zl9sb2NhbHMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCB3aGVuIHN0b3JpbmcgYW5ub3RhdGlvbiIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBmaXJzdCB0cnkgdG8gZ2V0IF9fYW5ub3RhdGlvbnNfXyBmcm9tIGxvY2Fscy4uLiAqLworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfbG9jYWxzKSkgeworICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphbm5fc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9sb2NhbHMsIGFubl9zdHIpOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19hbm5vdGF0aW9uc19fIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIC4uLmlmIHN1Y2NlZWRlZCwgX19hbm5vdGF0aW9uc19fW25hbWVdID0gYW5uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoYW5uX2RpY3QpKSB7CisgICAgICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oYW5uX2RpY3QsIG5hbWUsIGFubik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9TZXRJdGVtKGFubl9kaWN0LCBuYW1lLCBhbm4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhbm4pOworICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoREVMRVRFX1NVQlNDUikgewogICAgICAgICAgICAgUHlPYmplY3QgKnN1YiA9IFRPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRhaW5lciA9IFNFQ09ORCgpOwpAQCAtMjAwNiw2ICsxOTI1LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgU0VUX1RPUChhd2FpdGFibGUpOworICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMjAxNiw0MSArMTkzNiw1MiBAQAogICAgICAgICAgICAgUHlPYmplY3QgKmFpdGVyID0gVE9QKCk7CiAgICAgICAgICAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBQeV9UWVBFKGFpdGVyKTsKIAotICAgICAgICAgICAgaWYgKHR5cGUtPnRwX2FzX2FzeW5jICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgZ2V0dGVyID0gdHlwZS0+dHBfYXNfYXN5bmMtPmFtX2FuZXh0OwotCi0gICAgICAgICAgICBpZiAoZ2V0dGVyICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBuZXh0X2l0ZXIgPSAoKmdldHRlcikoYWl0ZXIpOwotICAgICAgICAgICAgICAgIGlmIChuZXh0X2l0ZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChhaXRlcikpIHsKKyAgICAgICAgICAgICAgICBhd2FpdGFibGUgPSB0eXBlLT50cF9hc19hc3luYy0+YW1fYW5leHQoYWl0ZXIpOworICAgICAgICAgICAgICAgIGlmIChhd2FpdGFibGUgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVxdWlyZXMgYW4gaXRlcmF0b3Igd2l0aCAiCi0gICAgICAgICAgICAgICAgICAgICJfX2FuZXh0X18gbWV0aG9kLCBnb3QgJS4xMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUtPnRwX2FzX2FzeW5jICE9IE5VTEwpeworICAgICAgICAgICAgICAgICAgICBnZXR0ZXIgPSB0eXBlLT50cF9hc19hc3luYy0+YW1fYW5leHQ7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhd2FpdGFibGUgPSBfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIobmV4dF9pdGVyKTsKLSAgICAgICAgICAgIGlmIChhd2FpdGFibGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVjZWl2ZWQgYW4gaW52YWxpZCBvYmplY3QgIgotICAgICAgICAgICAgICAgICAgICAiZnJvbSBfX2FuZXh0X186ICUuMTAwcyIsCi0gICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobmV4dF9pdGVyKS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRfaXRlciA9ICgqZ2V0dGVyKShhaXRlcik7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0X2l0ZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlcXVpcmVzIGFuIGl0ZXJhdG9yIHdpdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgIl9fYW5leHRfXyBtZXRob2QsIGdvdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIGF3YWl0YWJsZSA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihuZXh0X2l0ZXIpOworICAgICAgICAgICAgICAgIGlmIChhd2FpdGFibGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJ2FzeW5jIGZvcicgcmVjZWl2ZWQgYW4gaW52YWxpZCBvYmplY3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgImZyb20gX19hbmV4dF9fOiAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShuZXh0X2l0ZXIpLT50cF9uYW1lKTsKKworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFBVU0goYXdhaXRhYmxlKTsKKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKEdFVF9BV0FJVEFCTEUpOwogICAgICAgICBUQVJHRVQoR0VUX0FXQUlUQUJMRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKml0ZXJhYmxlID0gVE9QKCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqaXRlciA9IF9QeUNvcm9fR2V0QXdhaXRhYmxlSXRlcihpdGVyYWJsZSk7CkBAIC0yMDc4LDIxICsyMDA5LDIyIEBACiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoWUlFTERfRlJPTSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNpZXZlciA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlY2VpdmVyID0gVE9QKCk7CiAgICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QocmVjaWV2ZXIpIHx8IFB5Q29yb19DaGVja0V4YWN0KHJlY2lldmVyKSkgewotICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeUdlbl9TZW5kKChQeUdlbk9iamVjdCAqKXJlY2lldmVyLCB2KTsKKyAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2VpdmVyKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdChyZWNlaXZlcikpIHsKKyAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlHZW5fU2VuZCgoUHlHZW5PYmplY3QgKilyZWNlaXZlciwgdik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKHNlbmQpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IFB5X1RZUEUocmVjaWV2ZXIpLT50cF9pdGVybmV4dChyZWNpZXZlcik7CisgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IFB5X1RZUEUocmVjZWl2ZXIpLT50cF9pdGVybmV4dChyZWNlaXZlcik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhyZWNpZXZlciwgJlB5SWRfc2VuZCwgdiwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKHJlY2VpdmVyLCAmUHlJZF9zZW5kLCB2LCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkgewpAQCAtMjEwMyw3ICsyMDM1LDcgQEAKICAgICAgICAgICAgICAgICBlcnIgPSBfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCk7CiAgICAgICAgICAgICAgICAgaWYgKGVyciA8IDApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlY2lldmVyKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVjZWl2ZXIpOwogICAgICAgICAgICAgICAgIFNFVF9UT1AodmFsKTsKICAgICAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICAgICAgfQpAQCAtMjExMSwxMiArMjA0MywyMyBAQAogICAgICAgICAgICAgZi0+Zl9zdGFja3RvcCA9IHN0YWNrX3BvaW50ZXI7CiAgICAgICAgICAgICB3aHkgPSBXSFlfWUlFTEQ7CiAgICAgICAgICAgICAvKiBhbmQgcmVwZWF0Li4uICovCi0gICAgICAgICAgICBmLT5mX2xhc3RpLS07CisgICAgICAgICAgICBmLT5mX2xhc3RpIC09IHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgICAgICAgICAgZ290byBmYXN0X3lpZWxkOwogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKFlJRUxEX1ZBTFVFKSB7CiAgICAgICAgICAgICByZXR2YWwgPSBQT1AoKTsKKworICAgICAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX0FTWU5DX0dFTkVSQVRPUikgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp3ID0gX1B5QXN5bmNHZW5WYWx1ZVdyYXBwZXJOZXcocmV0dmFsKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgICAgICBpZiAodyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHZhbCA9IHc7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOwogICAgICAgICAgICAgd2h5ID0gV0hZX1lJRUxEOwogICAgICAgICAgICAgZ290byBmYXN0X3lpZWxkOwpAQCAtMjEzMyw2ICsyMDc2LDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoUE9QX0JMT0NLKTsKICAgICAgICAgVEFSR0VUKFBPUF9CTE9DSykgewogICAgICAgICAgICAgUHlUcnlCbG9jayAqYiA9IFB5RnJhbWVfQmxvY2tQb3AoZik7CiAgICAgICAgICAgICBVTldJTkRfQkxPQ0soYik7CkBAIC0yMjQ5LDcgKzIxOTMsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhVTlBBQ0tfU0VRVUVOQ0UpOworICAgICAgICBQUkVESUNURUQoVU5QQUNLX1NFUVVFTkNFKTsKICAgICAgICAgVEFSR0VUKFVOUEFDS19TRVFVRU5DRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnNlcSA9IFBPUCgpLCAqaXRlbSwgKippdGVtczsKICAgICAgICAgICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3Qoc2VxKSAmJgpAQCAtMjM1OCw3ICsyMzAyLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGxvY2FscywgbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCAmJiBfUHlFcnJfT0NDVVJSRUQoKSkgeworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0yMzk4LDI2ICsyMzQyLDMzIEBACiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwogICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfZ2xvYmFscykKLSAgICAgICAgICAgICAgICAmJiBQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkgeworICAgICAgICAgICAgICAgICYmIFB5RGljdF9DaGVja0V4YWN0KGYtPmZfYnVpbHRpbnMpKQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHYgPSBfUHlEaWN0X0xvYWRHbG9iYWwoKFB5RGljdE9iamVjdCAqKWYtPmZfZ2xvYmFscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURpY3RPYmplY3QgKilmLT5mX2J1aWx0aW5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIV9QeUVycl9PQ0NVUlJFRCgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoIV9QeUVycl9PQ0NVUlJFRCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBfUHlEaWN0X0xvYWRHbG9iYWwoKSByZXR1cm5zIE5VTEwgd2l0aG91dCByYWlzaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhbiBleGNlcHRpb24gaWYgdGhlIGtleSBkb2Vzbid0IGV4aXN0ICovCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZyhQeUV4Y19OYW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHYpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogU2xvdy1wYXRoIGlmIGdsb2JhbHMgb3IgYnVpbHRpbnMgaXMgbm90IGEgZGljdCAqLworCisgICAgICAgICAgICAgICAgLyogbmFtZXNwYWNlIDE6IGdsb2JhbHMgKi8KICAgICAgICAgICAgICAgICB2ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2dsb2JhbHMsIG5hbWUpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKKyAgICAgICAgICAgICAgICAgICAgLyogbmFtZXNwYWNlIDI6IGJ1aWx0aW5zICovCiAgICAgICAgICAgICAgICAgICAgIHYgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIG5hbWUpOwogICAgICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCkBAIC0yNDc3LDcgKzI0MjgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBQeU9iamVjdF9HZXRJdGVtKGxvY2FscywgbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjUxNiw2ICsyNDY3LDI0IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEJVSUxEX1NUUklORykgeworICAgICAgICAgICAgUHlPYmplY3QgKnN0cjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICplbXB0eSA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CisgICAgICAgICAgICBpZiAoZW1wdHkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdHIgPSBfUHlVbmljb2RlX0pvaW5BcnJheShlbXB0eSwgc3RhY2tfcG9pbnRlciAtIG9wYXJnLCBvcGFyZyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZW1wdHkpOworICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB3aGlsZSAoLS1vcGFyZyA+PSAwKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQT1AoKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQVVNIKHN0cik7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKICAgICAgICAgVEFSR0VUKEJVSUxEX1RVUExFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdHVwID0gUHlUdXBsZV9OZXcob3BhcmcpOwogICAgICAgICAgICAgaWYgKHR1cCA9PSBOVUxMKQpAQCAtMjU0MCwxMyArMjUwOSwxNCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQlVJTERfVFVQTEVfVU5QQUNLLCBfYnVpbGRfbGlzdF91bnBhY2spCi0gICAgICAgIFRBUkdFVChCVUlMRF9MSVNUX1VOUEFDSykKLSAgICAgICAgX2J1aWxkX2xpc3RfdW5wYWNrOiB7Ci0gICAgICAgICAgICBpbnQgY29udmVydF90b190dXBsZSA9IG9wY29kZSA9PSBCVUlMRF9UVVBMRV9VTlBBQ0s7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgVEFSR0VUKEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwpCisgICAgICAgIFRBUkdFVChCVUlMRF9UVVBMRV9VTlBBQ0spCisgICAgICAgIFRBUkdFVChCVUlMRF9MSVNUX1VOUEFDSykgeworICAgICAgICAgICAgaW50IGNvbnZlcnRfdG9fdHVwbGUgPSBvcGNvZGUgIT0gQlVJTERfTElTVF9VTlBBQ0s7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlMaXN0X05ldygwKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisKICAgICAgICAgICAgIGlmIChzdW0gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0yNTU1LDYgKzI1MjUsMTYgQEAKIAogICAgICAgICAgICAgICAgIG5vbmVfdmFsID0gX1B5TGlzdF9FeHRlbmQoKFB5TGlzdE9iamVjdCAqKXN1bSwgUEVFSyhpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vbmVfdmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUEVFSygxICsgb3BhcmcpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEVFSyhpKS0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU5OSw3ICsyNTc5LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChCVUlMRF9TRVRfVU5QQUNLKSB7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeVNldF9OZXcoTlVMTCk7CiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2MTgsNyArMjU5OCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoQlVJTERfTUFQKSB7Ci0gICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICptYXAgPSBfUHlEaWN0X05ld1ByZXNpemVkKChQeV9zc2l6ZV90KW9wYXJnKTsKICAgICAgICAgICAgIGlmIChtYXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjY0MSw4NyArMjYyMSwxNjIgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMLCBfYnVpbGRfbWFwX3VucGFjaykKLSAgICAgICAgVEFSR0VUKEJVSUxEX01BUF9VTlBBQ0spCi0gICAgICAgIF9idWlsZF9tYXBfdW5wYWNrOiB7Ci0gICAgICAgICAgICBpbnQgd2l0aF9jYWxsID0gb3Bjb2RlID09IEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMOwotICAgICAgICAgICAgaW50IG51bV9tYXBzOwotICAgICAgICAgICAgaW50IGk7CisgICAgICAgIFRBUkdFVChTRVRVUF9BTk5PVEFUSU9OUykgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICBQeU9iamVjdCAqYW5uX2RpY3Q7CisgICAgICAgICAgICBpZiAoZi0+Zl9sb2NhbHMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCB3aGVuIHNldHRpbmcgdXAgYW5ub3RhdGlvbnMiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogY2hlY2sgaWYgX19hbm5vdGF0aW9uc19fIGluIGxvY2FscygpLi4uICovCisgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9sb2NhbHMpKSB7CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogLi4uaWYgbm90LCBjcmVhdGUgYSBuZXcgb25lICovCisgICAgICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlcnIgPSBfUHlEaWN0X1NldEl0ZW1JZChmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19hbm5vdGF0aW9uc19fLCBhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIGRvIHRoZSBzYW1lIGlmIGxvY2FscygpIGlzIG5vdCBhIGRpY3QgKi8KKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYW5uX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9zdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfbG9jYWxzLCBhbm5fc3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeU9iamVjdF9TZXRJdGVtKGYtPmZfbG9jYWxzLCBhbm5fc3RyLCBhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX0NPTlNUX0tFWV9NQVApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICptYXA7CisgICAgICAgICAgICBQeU9iamVjdCAqa2V5cyA9IFRPUCgpOworICAgICAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3Qoa2V5cykgfHwKKyAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9TSVpFKGtleXMpICE9IChQeV9zc2l6ZV90KW9wYXJnKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIEJVSUxEX0NPTlNUX0tFWV9NQVAga2V5cyBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXAgPSBfUHlEaWN0X05ld1ByZXNpemVkKChQeV9zc2l6ZV90KW9wYXJnKTsKKyAgICAgICAgICAgIGlmIChtYXAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgICAgIGludCBlcnI7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFB5VHVwbGVfR0VUX0lURU0oa2V5cywgb3BhcmcgLSBpKTsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBQRUVLKGkgKyAxKTsKKyAgICAgICAgICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbShtYXAsIGtleSwgdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFwKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CisgICAgICAgICAgICB3aGlsZSAob3BhcmctLSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQVVNIKG1hcCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX01BUF9VTlBBQ0spIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeURpY3RfTmV3KCk7CiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG51bV9tYXBzID0gb3Bhcmc7Ci0gICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZvciAoaSA9IG51bV9tYXBzOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICBmb3IgKGkgPSBvcGFyZzsgaSA+IDA7IGktLSkgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQRUVLKGkpOwotICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmludGVyc2VjdGlvbiA9IF9QeURpY3RWaWV3X0ludGVyc2VjdChzdW0sIGFyZyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGludGVyc2VjdGlvbiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAhUHlNYXBwaW5nX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcykpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5U2V0X0dFVF9TSVpFKGludGVyc2VjdGlvbikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaWR4ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUEVFSyhmdW5jdGlvbl9sb2NhdGlvbiArIG51bV9tYXBzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwotICAgICAgICAgICAgICAgICAgICAgICAgX1B5U2V0X05leHRFbnRyeShpbnRlcnNlY3Rpb24sICZpZHgsICZrZXksICZoYXNoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgZ290IG11bHRpcGxlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJyVVJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGludGVyc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoc3VtLCBhcmcpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aXRoX2NhbGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25fbG9jYXRpb24gPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIG1hcHBpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKKyAgICAgICAgICAgIFBVU0goc3VtKTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKworICAgICAgICBUQVJHRVQoQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdW0gPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUEVFSyhpKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5RGljdF9NZXJnZUV4KHN1bSwgYXJnLCAyKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKDIgKyBvcGFyZyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCAmJiBQeVR1cGxlX0NoZWNrKHZhbCkgJiYgUHlUdXBsZV9HRVRfU0laRSh2YWwpID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUHlUdXBsZV9HRVRfSVRFTSh2YWwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGdvdCBtdWx0aXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0Yik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgYSBtYXBwaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbCwgdGIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwpAQCAtMjcyOSw3ICsyNzg0LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHdoaWxlIChudW1fbWFwcy0tKQorICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKFBPUCgpKTsKICAgICAgICAgICAgIFBVU0goc3VtKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CkBAIC0yNzc4LDQ1ICsyODMzLDEzIEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoSU1QT1JUX05BTUUpIHsKLSAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOwogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOwotICAgICAgICAgICAgUHlPYmplY3QgKmZyb20sICpsZXZlbCwgKmFyZ3MsICpyZXM7Ci0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbXBvcnRfXyBub3QgZm91bmQiKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICAgICAgZnJvbSA9IFBPUCgpOwotICAgICAgICAgICAgbGV2ZWwgPSBUT1AoKTsKLSAgICAgICAgICAgIGlmIChQeUxvbmdfQXNMb25nKGxldmVsKSAhPSAtMSB8fCBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2xvY2FscyA9PSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjayg0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUgOiBmLT5mX2xvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmxldmVsID0gVE9QKCk7CisgICAgICAgICAgICBQeU9iamVjdCAqcmVzOworICAgICAgICAgICAgcmVzID0gaW1wb3J0X25hbWUoZiwgbmFtZSwgZnJvbWxpc3QsIGxldmVsKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihsZXZlbCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnJvbSk7Ci0gICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFNUQUNLQURKKC0xKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjApOwotICAgICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgYXJncyk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbWxpc3QpOwogICAgICAgICAgICAgU0VUX1RPUChyZXMpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yODM1LDkgKzI4NTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAibm8gbG9jYWxzIGZvdW5kIGR1cmluZyAnaW1wb3J0IConIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKICAgICAgICAgICAgIGVyciA9IGltcG9ydF9hbGxfZnJvbShsb2NhbHMsIGZyb20pOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwogICAgICAgICAgICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZiwgMCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbSk7CiAgICAgICAgICAgICBpZiAoZXJyICE9IDApCkBAIC0yODQ5LDkgKzI4NzAsNyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbSA9IFRPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKICAgICAgICAgICAgIHJlcyA9IGltcG9ydF9mcm9tKGZyb20sIG5hbWUpOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwogICAgICAgICAgICAgUFVTSChyZXMpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yODYzLDcgKzI4ODIsNyBAQAogICAgICAgICAgICAgRkFTVF9ESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFBPUF9KVU1QX0lGX0ZBTFNFKTsKKyAgICAgICAgUFJFRElDVEVEKFBPUF9KVU1QX0lGX0ZBTFNFKTsKICAgICAgICAgVEFSR0VUKFBPUF9KVU1QX0lGX0ZBTFNFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29uZCA9IFBPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKQEAgLTI4ODcsNyArMjkwNiw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKFBPUF9KVU1QX0lGX1RSVUUpOworICAgICAgICBQUkVESUNURUQoUE9QX0pVTVBfSUZfVFJVRSk7CiAgICAgICAgIFRBUkdFVChQT1BfSlVNUF9JRl9UUlVFKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqY29uZCA9IFBPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKQEAgLTI5NjQsNyArMjk4Myw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKEpVTVBfQUJTT0xVVEUpOworICAgICAgICBQUkVESUNURUQoSlVNUF9BQlNPTFVURSk7CiAgICAgICAgIFRBUkdFVChKVU1QX0FCU09MVVRFKSB7CiAgICAgICAgICAgICBKVU1QVE8ob3BhcmcpOwogI2lmIEZBU1RfTE9PUFMKQEAgLTI5OTAsNiArMzAwOSw3IEBACiAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBQUkVESUNUKEZPUl9JVEVSKTsKKyAgICAgICAgICAgIFBSRURJQ1QoQ0FMTF9GVU5DVElPTik7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTMwMTgsMTAgKzMwMzgsMTEgQEAKICAgICAgICAgICAgICAgICBpZiAoaXRlciA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgUFJFRElDVChMT0FEX0NPTlNUKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoRk9SX0lURVIpOworICAgICAgICBQUkVESUNURUQoRk9SX0lURVIpOwogICAgICAgICBUQVJHRVQoRk9SX0lURVIpIHsKICAgICAgICAgICAgIC8qIGJlZm9yZTogW2l0ZXJdOyBhZnRlcjogW2l0ZXIsIGl0ZXIoKV0gKm9yKiBbXSAqLwogICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBUT1AoKTsKQEAgLTMwNDMsNiArMzA2NCw3IEBACiAgICAgICAgICAgICBTVEFDS0FESigtMSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcik7CiAgICAgICAgICAgICBKVU1QQlkob3BhcmcpOworICAgICAgICAgICAgUFJFRElDVChQT1BfQkxPQ0spOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zMDU5LDEwICszMDgxLDkgQEAKICAgICAgICAgICAgIGdvdG8gZmFzdF9ibG9ja19lbmQ7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKFNFVFVQX0xPT1AsIF9zZXR1cF9maW5hbGx5KQotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKFNFVFVQX0VYQ0VQVCwgX3NldHVwX2ZpbmFsbHkpCi0gICAgICAgIFRBUkdFVChTRVRVUF9GSU5BTExZKQotICAgICAgICBfc2V0dXBfZmluYWxseTogeworICAgICAgICBUQVJHRVQoU0VUVVBfTE9PUCkKKyAgICAgICAgVEFSR0VUKFNFVFVQX0VYQ0VQVCkKKyAgICAgICAgVEFSR0VUKFNFVFVQX0ZJTkFMTFkpIHsKICAgICAgICAgICAgIC8qIE5PVEU6IElmIHlvdSBhZGQgYW55IG5ldyBibG9jay1zZXR1cCBvcGNvZGVzIHRoYXQKICAgICAgICAgICAgICAgIGFyZSBub3QgdHJ5L2V4Y2VwdC9maW5hbGx5IGhhbmRsZXJzLCB5b3UgbWF5IG5lZWQKICAgICAgICAgICAgICAgIHRvIHVwZGF0ZSB0aGUgUHlHZW5fTmVlZHNGaW5hbGl6aW5nKCkgZnVuY3Rpb24uCkBAIC0zMDkzLDYgKzMxMTQsNyBAQAogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBQVVNIKHJlcyk7CisgICAgICAgICAgICBQUkVESUNUKEdFVF9BV0FJVEFCTEUpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zMjQxLDE3OCArMzI2MywxMzUgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoQ0FMTF9GVU5DVElPTik7CiAgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqKnNwLCAqcmVzOwogICAgICAgICAgICAgUENBTEwoUENBTExfQUxMKTsKICAgICAgICAgICAgIHNwID0gc3RhY2tfcG9pbnRlcjsKLSNpZmRlZiBXSVRIX1RTQwotICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCAmaW50cjAsICZpbnRyMSk7Ci0jZWxzZQotICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnKTsKLSNlbmRpZgorICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCBOVUxMKTsKICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgPSBzcDsKICAgICAgICAgICAgIFBVU0gocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChDQUxMX0ZVTkNUSU9OX1ZBUiwgX2NhbGxfZnVuY3Rpb25fdmFyX2t3KQotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKENBTExfRlVOQ1RJT05fS1csIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdykKLSAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fVkFSX0tXKQotICAgICAgICBfY2FsbF9mdW5jdGlvbl92YXJfa3c6IHsKLSAgICAgICAgICAgIGludCBuYSA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIGludCBuayA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgICAgICAgICAgaW50IGZsYWdzID0gKG9wY29kZSAtIENBTExfRlVOQ1RJT04pICYgMzsKLSAgICAgICAgICAgIGludCBuID0gbmEgKyAyICogbms7Ci0gICAgICAgICAgICBQeU9iamVjdCAqKnBmdW5jLCAqZnVuYywgKipzcCwgKnJlczsKKyAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fS1cpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqc3AsICpyZXMsICpuYW1lczsKKworICAgICAgICAgICAgbmFtZXMgPSBQT1AoKTsKKyAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QobmFtZXMpICYmIFB5VHVwbGVfR0VUX1NJWkUobmFtZXMpIDw9IG9wYXJnKTsKICAgICAgICAgICAgIFBDQUxMKFBDQUxMX0FMTCk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfVkFSKQotICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIENBTExfRkxBR19LVykKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICBwZnVuYyA9IHN0YWNrX3BvaW50ZXIgLSBuIC0gMTsKLSAgICAgICAgICAgIGZ1bmMgPSAqcGZ1bmM7Ci0KLSAgICAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKQotICAgICAgICAgICAgICAgICYmIFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgICAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9TRVRSRUYoKnBmdW5jLCBzZWxmKTsKLSAgICAgICAgICAgICAgICBuYSsrOwotICAgICAgICAgICAgICAgIC8qIG4rKzsgKi8KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKICAgICAgICAgICAgIHNwID0gc3RhY2tfcG9pbnRlcjsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKLSAgICAgICAgICAgIHJlcyA9IGV4dF9kb19jYWxsKGZ1bmMsICZzcCwgZmxhZ3MsIG5hLCBuayk7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMSk7CisgICAgICAgICAgICByZXMgPSBjYWxsX2Z1bmN0aW9uKCZzcCwgb3BhcmcsIG5hbWVzKTsKICAgICAgICAgICAgIHN0YWNrX3BvaW50ZXIgPSBzcDsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLQotICAgICAgICAgICAgd2hpbGUgKHN0YWNrX3BvaW50ZXIgPiBwZnVuYykgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG8pOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSChyZXMpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKworICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKE1BS0VfQ0xPU1VSRSwgX21ha2VfZnVuY3Rpb24pCi0gICAgICAgIFRBUkdFVChNQUtFX0ZVTkNUSU9OKQotICAgICAgICBfbWFrZV9mdW5jdGlvbjogewotICAgICAgICAgICAgaW50IHBvc2RlZmF1bHRzID0gb3BhcmcgJiAweGZmOwotICAgICAgICAgICAgaW50IGt3ZGVmYXVsdHMgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgIGludCBudW1fYW5ub3RhdGlvbnMgPSAob3BhcmcgPj4gMTYpICYgMHg3ZmZmOworICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTl9FWCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMsICpjYWxsYXJncywgKmt3YXJncyA9IE5VTEwsICpyZXN1bHQ7CisgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOworICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMSkgeworICAgICAgICAgICAgICAgIGt3YXJncyA9IFBPUCgpOworICAgICAgICAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3Qoa3dhcmdzKSkgeworICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGQgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKGQsIGt3YXJncykgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOworICAgICAgICAgICAgICAgICAgICAgICAgLyogUHlEaWN0X1VwZGF0ZSByYWlzZXMgYXR0cmlidXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBlcnJvciAocGVyY29sYXRlZCBmcm9tIGFuIGF0dGVtcHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRvIGdldCAna2V5cycgYXR0cmlidXRlKSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBhIHR5cGUgZXJyb3IgaWYgaXRzIHNlY29uZCBhcmd1bWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICogaXMgbm90IGEgbWFwcGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYyA9IFNFQ09ORCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzID0gZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KGt3YXJncykpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsbGFyZ3MgPSBQT1AoKTsKKyAgICAgICAgICAgIGZ1bmMgPSBUT1AoKTsKKyAgICAgICAgICAgIGlmICghUHlUdXBsZV9DaGVja0V4YWN0KGNhbGxhcmdzKSkgeworICAgICAgICAgICAgICAgIGlmIChQeV9UWVBFKGNhbGxhcmdzKS0+dHBfaXRlciA9PSBOVUxMICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhUHlTZXF1ZW5jZV9DaGVjayhjYWxsYXJncykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYXJncy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYXJncyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X1NFVFJFRihjYWxsYXJncywgUHlTZXF1ZW5jZV9UdXBsZShjYWxsYXJncykpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2tFeGFjdChjYWxsYXJncykpOwogCi0gICAgICAgICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBQT1AoKTsgLyogcXVhbG5hbWUgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICpjb2RlID0gUE9QKCk7IC8qIGNvZGUgb2JqZWN0ICovCi0gICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKGNvZGUsIGYtPmZfZ2xvYmFscywgcXVhbG5hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGNvZGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGRvX2NhbGxfY29yZShmdW5jLCBjYWxsYXJncywga3dhcmdzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjYWxsYXJncyk7CisgICAgICAgICAgICBQeV9YREVDUkVGKGt3YXJncyk7CiAKLSAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpCisgICAgICAgICAgICBTRVRfVE9QKHJlc3VsdCk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAob3Bjb2RlID09IE1BS0VfQ0xPU1VSRSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjbG9zdXJlID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0Q2xvc3VyZShmdW5jLCBjbG9zdXJlKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MgYnl0ZWNvZGUgaXMgY29ycnVwdC4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjbG9zdXJlKTsKKyAgICAgICAgVEFSR0VUKE1BS0VfRlVOQ1RJT04pIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKmNvZGVvYmogPSBQT1AoKTsKKyAgICAgICAgICAgIFB5RnVuY3Rpb25PYmplY3QgKmZ1bmMgPSAoUHlGdW5jdGlvbk9iamVjdCAqKQorICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lKGNvZGVvYmosIGYtPmZfZ2xvYmFscywgcXVhbG5hbWUpOworCisgICAgICAgICAgICBQeV9ERUNSRUYoY29kZW9iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOworICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChudW1fYW5ub3RhdGlvbnMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYW1lX2l4OwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcyA9IFBPUCgpOyAvKiBuYW1lcyBvZiBhcmdzIHdpdGggYW5ub3RhdGlvbnMgKi8KLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYW5ucyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoYW5ucyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmFtZV9peCA9IFB5VHVwbGVfU2l6ZShuYW1lcyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KG51bV9hbm5vdGF0aW9ucyA9PSBuYW1lX2l4KzEpOwotICAgICAgICAgICAgICAgIHdoaWxlIChuYW1lX2l4ID4gMCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgKnZhbHVlOwotICAgICAgICAgICAgICAgICAgICBpbnQgZXJyOwotICAgICAgICAgICAgICAgICAgICAtLW5hbWVfaXg7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKG5hbWVzLCBuYW1lX2l4KTsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQT1AoKTsKLSAgICAgICAgICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oYW5ucywgbmFtZSwgdmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyhmdW5jLCBhbm5zKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXRBbm5vdGF0aW9ucyBjaGFuZ2VzLiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5ucyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOworICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwOCkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jIC0+ZnVuY19jbG9zdXJlID0gUE9QKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3BhcmcgJiAweDA0KSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5RGljdF9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYy0+ZnVuY19hbm5vdGF0aW9ucyA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMikgeworICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMtPmZ1bmNfa3dkZWZhdWx0cyA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwMSkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jLT5mdW5jX2RlZmF1bHRzID0gUE9QKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8qIFhYWCBNYXliZSB0aGlzIHNob3VsZCBiZSBhIHNlcGFyYXRlIG9wY29kZT8gKi8KLSAgICAgICAgICAgIGlmIChrd2RlZmF1bHRzID4gMCkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWZzID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgICAgIGlmIChkZWZzID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3aGlsZSAoLS1rd2RlZmF1bHRzID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBQT1AoKTsgLyogZGVmYXVsdCB2YWx1ZSAqLwotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gUE9QKCk7IC8qIGt3IG9ubHkgYXJnIG5hbWUgKi8KLSAgICAgICAgICAgICAgICAgICAgaW50IGVyciA9IFB5RGljdF9TZXRJdGVtKGRlZnMsIGtleSwgdik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXRLd0RlZmF1bHRzKGZ1bmMsIGRlZnMpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcwotICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldEt3RGVmYXVsdHMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChwb3NkZWZhdWx0cyA+IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmcyA9IFB5VHVwbGVfTmV3KHBvc2RlZmF1bHRzKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2hpbGUgKC0tcG9zZGVmYXVsdHMgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShkZWZzLCBwb3NkZWZhdWx0cywgUE9QKCkpOwotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldERlZmF1bHRzKGZ1bmMsIGRlZnMpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FuJ3QgaGFwcGVuIHVubGVzcwotICAgICAgICAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX1NldERlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQVVNIKGZ1bmMpOworICAgICAgICAgICAgUFVTSCgoUHlPYmplY3QgKilmdW5jKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzQzNCw5ICszNDEzLDY4IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgVEFSR0VUKEZPUk1BVF9WQUxVRSkgeworICAgICAgICAgICAgLyogSGFuZGxlcyBmLXN0cmluZyB2YWx1ZSBmb3JtYXR0aW5nLiAqLworICAgICAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmbXRfc3BlYzsKKyAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICooKmNvbnZfZm4pKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaW50IHdoaWNoX2NvbnZlcnNpb24gPSBvcGFyZyAmIEZWQ19NQVNLOworICAgICAgICAgICAgaW50IGhhdmVfZm10X3NwZWMgPSAob3BhcmcgJiBGVlNfTUFTSykgPT0gRlZTX0hBVkVfU1BFQzsKKworICAgICAgICAgICAgZm10X3NwZWMgPSBoYXZlX2ZtdF9zcGVjID8gUE9QKCkgOiBOVUxMOworICAgICAgICAgICAgdmFsdWUgPSBQT1AoKTsKKworICAgICAgICAgICAgLyogU2VlIGlmIGFueSBjb252ZXJzaW9uIGlzIHNwZWNpZmllZC4gKi8KKyAgICAgICAgICAgIHN3aXRjaCAod2hpY2hfY29udmVyc2lvbikgeworICAgICAgICAgICAgY2FzZSBGVkNfU1RSOiAgIGNvbnZfZm4gPSBQeU9iamVjdF9TdHI7ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZWQ19SRVBSOiAgY29udl9mbiA9IFB5T2JqZWN0X1JlcHI7ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRlZDX0FTQ0lJOiBjb252X2ZuID0gUHlPYmplY3RfQVNDSUk7IGJyZWFrOworCisgICAgICAgICAgICAvKiBNdXN0IGJlIDAgKG1lYW5pbmcgbm8gY29udmVyc2lvbiksIHNpbmNlIG9ubHkgZm91cgorICAgICAgICAgICAgICAgdmFsdWVzIGFyZSBhbGxvd2VkIGJ5IChvcGFyZyAmIEZWQ19NQVNLKS4gKi8KKyAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICBjb252X2ZuID0gTlVMTDsgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiB0aGVyZSdzIGEgY29udmVyc2lvbiBmdW5jdGlvbiwgY2FsbCBpdCBhbmQgcmVwbGFjZQorICAgICAgICAgICAgICAgdmFsdWUgd2l0aCB0aGF0IHJlc3VsdC4gT3RoZXJ3aXNlLCBqdXN0IHVzZSB2YWx1ZSwKKyAgICAgICAgICAgICAgIHdpdGhvdXQgY29udmVyc2lvbi4gKi8KKyAgICAgICAgICAgIGlmIChjb252X2ZuICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb252X2ZuKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZtdF9zcGVjKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFsdWUgPSByZXN1bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIHZhbHVlIGlzIGEgdW5pY29kZSBvYmplY3QsIGFuZCB0aGVyZSdzIG5vIGZtdF9zcGVjLAorICAgICAgICAgICAgICAgdGhlbiB3ZSBrbm93IHRoZSByZXN1bHQgb2YgZm9ybWF0KHZhbHVlKSBpcyB2YWx1ZQorICAgICAgICAgICAgICAgaXRzZWxmLiBJbiB0aGF0IGNhc2UsIHNraXAgY2FsbGluZyBmb3JtYXQoKS4gSSBwbGFuIHRvCisgICAgICAgICAgICAgICBtb3ZlIHRoaXMgb3B0aW1pemF0aW9uIGluIHRvIFB5T2JqZWN0X0Zvcm1hdCgpCisgICAgICAgICAgICAgICBpdHNlbGYuICovCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodmFsdWUpICYmIGZtdF9zcGVjID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBEbyBub3RoaW5nLCBqdXN0IHRyYW5zZmVyIG93bmVyc2hpcCB0byByZXN1bHQuICovCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdmFsdWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qIEFjdHVhbGx5IGNhbGwgZm9ybWF0KCkuICovCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfRm9ybWF0KHZhbHVlLCBmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZtdF9zcGVjKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFBVU0gocmVzdWx0KTsKKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KKwogICAgICAgICBUQVJHRVQoRVhURU5ERURfQVJHKSB7Ci0gICAgICAgICAgICBvcGNvZGUgPSBORVhUT1AoKTsKLSAgICAgICAgICAgIG9wYXJnID0gb3Bhcmc8PDE2IHwgTkVYVEFSRygpOworICAgICAgICAgICAgaW50IG9sZG9wYXJnID0gb3Bhcmc7CisgICAgICAgICAgICBORVhUT1BBUkcoKTsKKyAgICAgICAgICAgIG9wYXJnIHw9IG9sZG9wYXJnIDw8IDg7CiAgICAgICAgICAgICBnb3RvIGRpc3BhdGNoX29wY29kZTsKICAgICAgICAgfQogCkBAIC0zNDYzLDcgKzM1MDEsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAKIGVycm9yOgotICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnN0MSk7CiAKICAgICAgICAgYXNzZXJ0KHdoeSA9PSBXSFlfTk9UKTsKICAgICAgICAgd2h5ID0gV0hZX0VYQ0VQVElPTjsKQEAgLTM1NjcsNyArMzYwNCw2IEBACiAKICAgICAgICAgaWYgKHdoeSAhPSBXSFlfTk9UKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKGxvb3AxKTsKIAogICAgICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogCkBAIC0zNTg2LDcgKzM2MjIsNyBAQAogICAgIGFzc2VydCgocmV0dmFsICE9IE5VTEwpIF4gKFB5RXJyX09jY3VycmVkKCkgIT0gTlVMTCkpOwogCiBmYXN0X3lpZWxkOgotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogCiAgICAgICAgIC8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgYmxvY2sgaXMgdG8gcHV0IGFzaWRlIHRoZSBnZW5lcmF0b3IncyBleGNlcHRpb24KICAgICAgICAgICAgc3RhdGUgYW5kIHJlc3RvcmUgdGhhdCBvZiB0aGUgY2FsbGluZyBmcmFtZS4gSWYgdGhlIGN1cnJlbnQKQEAgLTM1OTcsOSArMzYzMywxMSBAQAogICAgICAgICAgICBzdGF0ZSBjYW1lIGludG8gZXhpc3RlbmNlIGluIHRoaXMgZnJhbWUuIChBbiB1bmNhdWdodCBleGNlcHRpb24KICAgICAgICAgICAgd291bGQgaGF2ZSB3aHkgPT0gV0hZX0VYQ0VQVElPTiwgYW5kIHdlIHdvdWxkbid0IGJlIGhlcmUpLiAqLwogICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGYtPmZfaWJsb2NrOyBpKyspCi0gICAgICAgICAgICBpZiAoZi0+Zl9ibG9ja3N0YWNrW2ldLmJfdHlwZSA9PSBFWENFUFRfSEFORExFUikKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGYtPmZfaWJsb2NrOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmLT5mX2Jsb2Nrc3RhY2tbaV0uYl90eXBlID09IEVYQ0VQVF9IQU5ETEVSKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGkgPT0gZi0+Zl9pYmxvY2spCiAgICAgICAgICAgICAvKiBXZSBkaWQgbm90IGNyZWF0ZSB0aGlzIGV4Y2VwdGlvbi4gKi8KICAgICAgICAgICAgIHJlc3RvcmVfYW5kX2NsZWFyX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwpAQCAtMzY0MCw2ICszNjc4LDggQEAKIAogICAgIC8qIHBvcCBmcmFtZSAqLwogZXhpdF9ldmFsX2ZyYW1lOgorICAgIGlmIChQeURUcmFjZV9GVU5DVElPTl9SRVRVUk5fRU5BQkxFRCgpKQorICAgICAgICBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuKGYpOwogICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOwogICAgIGYtPmZfZXhlY3V0aW5nID0gMDsKICAgICB0c3RhdGUtPmZyYW1lID0gZi0+Zl9iYWNrOwpAQCAtMzcxMCwxMiArMzc1MCwxMiBAQAogfQogCiBzdGF0aWMgdm9pZAotbWlzc2luZ19hcmd1bWVudHMoUHlDb2RlT2JqZWN0ICpjbywgaW50IG1pc3NpbmcsIGludCBkZWZjb3VudCwKK21pc3NpbmdfYXJndW1lbnRzKFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgbWlzc2luZywgUHlfc3NpemVfdCBkZWZjb3VudCwKICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKIHsKLSAgICBpbnQgaSwgaiA9IDA7Ci0gICAgaW50IHN0YXJ0LCBlbmQ7Ci0gICAgaW50IHBvc2l0aW9uYWwgPSBkZWZjb3VudCAhPSAtMTsKKyAgICBQeV9zc2l6ZV90IGksIGogPSAwOworICAgIFB5X3NzaXplX3Qgc3RhcnQsIGVuZDsKKyAgICBpbnQgcG9zaXRpb25hbCA9IChkZWZjb3VudCAhPSAtMSk7CiAgICAgY29uc3QgY2hhciAqa2luZCA9IHBvc2l0aW9uYWwgPyAicG9zaXRpb25hbCIgOiAia2V5d29yZC1vbmx5IjsKICAgICBQeU9iamVjdCAqbWlzc2luZ19uYW1lczsKIApAQCAtMzc0OCwzMyArMzc4OCwzOSBAQAogfQogCiBzdGF0aWMgdm9pZAotdG9vX21hbnlfcG9zaXRpb25hbChQeUNvZGVPYmplY3QgKmNvLCBpbnQgZ2l2ZW4sIGludCBkZWZjb3VudCwgUHlPYmplY3QgKipmYXN0bG9jYWxzKQordG9vX21hbnlfcG9zaXRpb25hbChQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IGdpdmVuLCBQeV9zc2l6ZV90IGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCiB7CiAgICAgaW50IHBsdXJhbDsKLSAgICBpbnQga3dvbmx5X2dpdmVuID0gMDsKLSAgICBpbnQgaTsKKyAgICBQeV9zc2l6ZV90IGt3b25seV9naXZlbiA9IDA7CisgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICpzaWcsICprd29ubHlfc2lnOworICAgIFB5X3NzaXplX3QgY29fYXJnY291bnQgPSBjby0+Y29fYXJnY291bnQ7CiAKICAgICBhc3NlcnQoKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpID09IDApOwogICAgIC8qIENvdW50IG1pc3Npbmcga2V5d29yZC1vbmx5IGFyZ3MuICovCi0gICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OyBpKyspCi0gICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKQorICAgIGZvciAoaSA9IGNvX2FyZ2NvdW50OyBpIDwgY29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7IGkrKykgeworICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkgewogICAgICAgICAgICAga3dvbmx5X2dpdmVuKys7CisgICAgICAgIH0KKyAgICB9CiAgICAgaWYgKGRlZmNvdW50KSB7Ci0gICAgICAgIGludCBhdGxlYXN0ID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIFB5X3NzaXplX3QgYXRsZWFzdCA9IGNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CiAgICAgICAgIHBsdXJhbCA9IDE7Ci0gICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJmcm9tICVkIHRvICVkIiwgYXRsZWFzdCwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImZyb20gJXpkIHRvICV6ZCIsIGF0bGVhc3QsIGNvX2FyZ2NvdW50KTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHBsdXJhbCA9IGNvLT5jb19hcmdjb3VudCAhPSAxOwotICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJWQiLCBjby0+Y29fYXJnY291bnQpOworICAgICAgICBwbHVyYWwgPSAoY29fYXJnY291bnQgIT0gMSk7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlemQiLCBjb19hcmdjb3VudCk7CiAgICAgfQogICAgIGlmIChzaWcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChrd29ubHlfZ2l2ZW4pIHsKLSAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiOwotICAgICAgICBrd29ubHlfc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoZm9ybWF0LCBnaXZlbiAhPSAxID8gInMiIDogIiIsIGt3b25seV9naXZlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKKyAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlemQga2V5d29yZC1vbmx5IGFyZ3VtZW50JXMpIjsKKyAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuICE9IDEgPyAicyIgOiAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3b25seV9naXZlbiAhPSAxID8gInMiIDogIiIpOwogICAgICAgICBpZiAoa3dvbmx5X3NpZyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2lnKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM3ODYsNyArMzgzMiw3IEBACiAgICAgICAgIGFzc2VydChrd29ubHlfc2lnICE9IE5VTEwpOwogICAgIH0KICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlVSBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICVkJVUgJXMgZ2l2ZW4iLAorICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlVSBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICV6ZCVVICVzIGdpdmVuIiwKICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCiAgICAgICAgICAgICAgICAgIHNpZywKICAgICAgICAgICAgICAgICAgcGx1cmFsID8gInMiIDogIiIsCkBAIC0zODAzLDIwICszODQ5LDIyIEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoUHlPYmplY3QgKl9jbywgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsCi0gICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgaW50IGFyZ2NvdW50LCBQeU9iamVjdCAqKmt3cywgaW50IGt3Y291bnQsCi0gICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqa3dkZWZzLCBQeU9iamVjdCAqY2xvc3VyZSwKKyAgICAgICAgICAgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IGFyZ2NvdW50LAorICAgICAgICAgICBQeU9iamVjdCAqKmt3bmFtZXMsIFB5T2JqZWN0ICoqa3dhcmdzLAorICAgICAgICAgICBQeV9zc2l6ZV90IGt3Y291bnQsIGludCBrd3N0ZXAsCisgICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgUHlfc3NpemVfdCBkZWZjb3VudCwKKyAgICAgICAgICAgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCiAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcXVhbG5hbWUpCiB7CiAgICAgUHlDb2RlT2JqZWN0KiBjbyA9IChQeUNvZGVPYmplY3QqKV9jbzsKICAgICBQeUZyYW1lT2JqZWN0ICpmOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipmcmVldmFyczsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKICAgICBQeU9iamVjdCAqeCwgKnU7Ci0gICAgaW50IHRvdGFsX2FyZ3MgPSBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7Ci0gICAgaW50IGk7Ci0gICAgaW50IG4gPSBhcmdjb3VudDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKKyAgICBjb25zdCBQeV9zc2l6ZV90IHRvdGFsX2FyZ3MgPSBjby0+Y29fYXJnY291bnQgKyBjby0+Y29fa3dvbmx5YXJnY291bnQ7CisgICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5T2JqZWN0ICprd2RpY3Q7CiAKICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKQEAgLTM4MjQsMzYgKzM4NzIsNTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgLyogQ3JlYXRlIHRoZSBmcmFtZSAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAgICAgYXNzZXJ0KHRzdGF0ZSAhPSBOVUxMKTsKLSAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKICAgICBmID0gUHlGcmFtZV9OZXcodHN0YXRlLCBjbywgZ2xvYmFscywgbG9jYWxzKTsKLSAgICBpZiAoZiA9PSBOVUxMKQorICAgIGlmIChmID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KKyAgICB9CiAgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICBmcmVldmFycyA9IGYtPmZfbG9jYWxzcGx1cyArIGNvLT5jb19ubG9jYWxzOwogCi0gICAgLyogUGFyc2UgYXJndW1lbnRzLiAqLworICAgIC8qIENyZWF0ZSBhIGRpY3Rpb25hcnkgZm9yIGtleXdvcmQgcGFyYW1ldGVycyAoKiprd2FncykgKi8KICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMpIHsKICAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOwogICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGkgPSB0b3RhbF9hcmdzOwotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykKKyAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQogICAgICAgICBTRVRMT0NBTChpLCBrd2RpY3QpOwogICAgIH0KLSAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpCisgICAgZWxzZSB7CisgICAgICAgIGt3ZGljdCA9IE5VTEw7CisgICAgfQorCisgICAgLyogQ29weSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIGxvY2FsIHZhcmlhYmxlcyAqLworICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCkgewogICAgICAgICBuID0gY28tPmNvX2FyZ2NvdW50OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbiA9IGFyZ2NvdW50OworICAgIH0KICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIHggPSBhcmdzW2ldOwogICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgIFNFVExPQ0FMKGksIHgpOwogICAgIH0KKworICAgIC8qIFBhY2sgb3RoZXIgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byB0aGUgKmFyZ3MgYXJndW1lbnQgKi8KICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgewogICAgICAgICB1ID0gUHlUdXBsZV9OZXcoYXJnY291bnQgLSBuKTsKLSAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkgewogICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CiAgICAgICAgIFNFVExPQ0FMKHRvdGFsX2FyZ3MsIHUpOwogICAgICAgICBmb3IgKGkgPSBuOyBpIDwgYXJnY291bnQ7IGkrKykgewogICAgICAgICAgICAgeCA9IGFyZ3NbaV07CkBAIC0zODYxLDY5ICszOTIzLDgyIEBACiAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHUsIGktbiwgeCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkrKykgeworCisgICAgLyogSGFuZGxlIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBhcyB0d28gc3RyaWRlZCBhcnJheXMgKi8KKyAgICBrd2NvdW50ICo9IGt3c3RlcDsKKyAgICBmb3IgKGkgPSAwOyBpIDwga3djb3VudDsgaSArPSBrd3N0ZXApIHsKICAgICAgICAgUHlPYmplY3QgKipjb192YXJuYW1lczsKLSAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd3NbMippXTsKLSAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dzWzIqaSArIDFdOwotICAgICAgICBpbnQgajsKKyAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd25hbWVzW2ldOworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBrd2FyZ3NbaV07CisgICAgICAgIFB5X3NzaXplX3QgajsKKwogICAgICAgICBpZiAoa2V5d29yZCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soa2V5d29yZCkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSk7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKwogICAgICAgICAvKiBTcGVlZCBoYWNrOiBkbyByYXcgcG9pbnRlciBjb21wYXJlcy4gQXMgbmFtZXMgYXJlCiAgICAgICAgICAgIG5vcm1hbGx5IGludGVybmVkIHRoaXMgc2hvdWxkIGFsbW9zdCBhbHdheXMgaGl0LiAqLwogICAgICAgICBjb192YXJuYW1lcyA9ICgoUHlUdXBsZU9iamVjdCAqKShjby0+Y29fdmFybmFtZXMpKS0+b2JfaXRlbTsKICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICBpZiAobm0gPT0ga2V5d29yZCkKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpZiAobmFtZSA9PSBrZXl3b3JkKSB7CiAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIC8qIFNsb3cgZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqLwogICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKLSAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCi0gICAgICAgICAgICAgICAga2V5d29yZCwgbm0sIFB5X0VRKTsKLSAgICAgICAgICAgIGlmIChjbXAgPiAwKQorICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBjb192YXJuYW1lc1tqXTsKKyAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woIGtleXdvcmQsIG5hbWUsIFB5X0VRKTsKKyAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKSB7CiAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgfQogICAgICAgICB9CisKICAgICAgICAgaWYgKGogPj0gdG90YWxfYXJncyAmJiBrd2RpY3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgYW4gdW5leHBlY3RlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJyVTJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudCAnJVMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwga2V5d29yZCk7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXl3b3JkLCB2YWx1ZSkgPT0gLTEpIHsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogICAgICAgICBjb250aW51ZTsKKwogICAgICAga3dfZm91bmQ6CiAgICAgICAgIGlmIChHRVRMT0NBTChqKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3IgYXJndW1lbnQgJyVTJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJyVTJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsIGtleXdvcmQpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CiAgICAgICAgIFNFVExPQ0FMKGosIHZhbHVlKTsKICAgICB9CisKKyAgICAvKiBDaGVjayB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzICovCiAgICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50ICYmICEoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykpIHsKICAgICAgICAgdG9vX21hbnlfcG9zaXRpb25hbChjbywgYXJnY291bnQsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KKworICAgIC8qIEFkZCBtaXNzaW5nIHBvc2l0aW9uYWwgYXJndW1lbnRzIChjb3B5IGRlZmF1bHQgdmFsdWVzIGZyb20gZGVmcykgKi8KICAgICBpZiAoYXJnY291bnQgPCBjby0+Y29fYXJnY291bnQpIHsKLSAgICAgICAgaW50IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKLSAgICAgICAgaW50IG1pc3NpbmcgPSAwOwotICAgICAgICBmb3IgKGkgPSBhcmdjb3VudDsgaSA8IG07IGkrKykKLSAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKQorICAgICAgICBQeV9zc2l6ZV90IG0gPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICAgICAgUHlfc3NpemVfdCBtaXNzaW5nID0gMDsKKyAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgbWlzc2luZysrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChtaXNzaW5nKSB7CiAgICAgICAgICAgICBtaXNzaW5nX2FyZ3VtZW50cyhjbywgbWlzc2luZywgZGVmY291bnQsIGZhc3Rsb2NhbHMpOwogICAgICAgICAgICAgZ290byBmYWlsOwpAQCAtMzk0MCw4ICs0MDE1LDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvKiBBZGQgbWlzc2luZyBrZXl3b3JkIGFyZ3VtZW50cyAoY29weSBkZWZhdWx0IHZhbHVlcyBmcm9tIGt3ZGVmcykgKi8KICAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID4gMCkgewotICAgICAgICBpbnQgbWlzc2luZyA9IDA7CisgICAgICAgIFB5X3NzaXplX3QgbWlzc2luZyA9IDA7CiAgICAgICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IHRvdGFsX2FyZ3M7IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKQEAgLTM5ODIsMTMgKzQwNTksMTYgQEAKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgU0VUTE9DQUwoY28tPmNvX25sb2NhbHMgKyBpLCBjKTsKICAgICB9CisKKyAgICAvKiBDb3B5IGNsb3N1cmUgdmFyaWFibGVzIHRvIGZyZWUgdmFyaWFibGVzICovCiAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2ZyZWV2YXJzKTsgKytpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HRVRfSVRFTShjbG9zdXJlLCBpKTsKICAgICAgICAgUHlfSU5DUkVGKG8pOwogICAgICAgICBmcmVldmFyc1tQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19jZWxsdmFycykgKyBpXSA9IG87CiAgICAgfQogCi0gICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUpKSB7CisgICAgLyogSGFuZGxlIGdlbmVyYXRvci9jb3JvdXRpbmUvYXN5bmNocm9ub3VzIGdlbmVyYXRvciAqLworICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FIHwgQ09fQVNZTkNfR0VORVJBVE9SKSkgewogICAgICAgICBQeU9iamVjdCAqZ2VuOwogICAgICAgICBQeU9iamVjdCAqY29yb193cmFwcGVyID0gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKICAgICAgICAgaW50IGlzX2Nvcm8gPSBjby0+Y29fZmxhZ3MgJiBDT19DT1JPVVRJTkU7CkBAIC00MDEzLDYgKzQwOTMsOCBAQAogICAgICAgICAgKiBhbmQgcmV0dXJuIHRoYXQgYXMgdGhlIHZhbHVlLiAqLwogICAgICAgICBpZiAoaXNfY29ybykgewogICAgICAgICAgICAgZ2VuID0gUHlDb3JvX05ldyhmLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY28tPmNvX2ZsYWdzICYgQ09fQVNZTkNfR0VORVJBVE9SKSB7CisgICAgICAgICAgICBnZW4gPSBQeUFzeW5jR2VuX05ldyhmLCBuYW1lLCBxdWFsbmFtZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBnZW4gPSBQeUdlbl9OZXdXaXRoUXVhbE5hbWUoZiwgbmFtZSwgcXVhbG5hbWUpOwogICAgICAgICB9CkBAIC00MDUyLDggKzQxMzQsMTAgQEAKICAgICAgICAgICAgUHlPYmplY3QgKipkZWZzLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlKQogewogICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoX2NvLCBnbG9iYWxzLCBsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBhcmdjb3VudCwga3dzLCBrd2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmcywgZGVmY291bnQsIGt3ZGVmcywgY2xvc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGFyZ2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dzLCBrd3MgKyAxLCBrd2NvdW50LCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmcywgZGVmY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RlZnMsIGNsb3N1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKIH0KIApAQCAtNDMxMiw3ICs0Mzk2LDcgQEAKIAogI2lmZGVmIExMVFJBQ0UKIHN0YXRpYyBpbnQKLXBydHJhY2UoUHlPYmplY3QgKnYsIGNoYXIgKnN0cikKK3BydHJhY2UoUHlPYmplY3QgKnYsIGNvbnN0IGNoYXIgKnN0cikKIHsKICAgICBwcmludGYoIiVzICIsIHN0cik7CiAgICAgaWYgKFB5T2JqZWN0X1ByaW50KHYsIHN0ZG91dCwgMCkgIT0gMCkKQEAgLTQ0ODksNiArNDU3MywzOCBAQAogICAgIHJldHVybiB0c3RhdGUtPmNvcm91dGluZV93cmFwcGVyOwogfQogCit2b2lkCitfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKFB5T2JqZWN0ICpmaXJzdGl0ZXIpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKworICAgIFB5X1hJTkNSRUYoZmlyc3RpdGVyKTsKKyAgICBQeV9YU0VUUkVGKHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlciwgZmlyc3RpdGVyKTsKK30KKworUHlPYmplY3QgKgorX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcih2b2lkKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgcmV0dXJuIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlcjsKK30KKwordm9pZAorX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihQeU9iamVjdCAqZmluYWxpemVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9YSU5DUkVGKGZpbmFsaXplcik7CisgICAgUHlfWFNFVFJFRih0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXIsIGZpbmFsaXplcik7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0QXN5bmNHZW5GaW5hbGl6ZXIodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXI7Cit9CisKIFB5T2JqZWN0ICoKIFB5RXZhbF9HZXRCdWlsdGlucyh2b2lkKQogewpAQCAtNDU2MSwxMCArNDY3Nyw4IEBACiAgICBUaGUgYXJnIG11c3QgYmUgYSB0dXBsZSBvciBOVUxMLiAgVGhlIGt3IG11c3QgYmUgYSBkaWN0IG9yIE5VTEwuICovCiAKIFB5T2JqZWN0ICoKLVB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCitQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQogI2lmZGVmIFB5X0RFQlVHCiAgICAgLyogUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24KICAgICAgICBzZXQuIEl0IHJhaXNlcyBhIG5ldyBleGNlcHRpb24gaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZCBvciBpZgpAQCAtNDU3MiwzMCArNDY4NiwyMyBAQAogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAjZW5kaWYKIAotICAgIGlmIChhcmcgPT0gTlVMTCkgewotICAgICAgICBhcmcgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBOVUxMLCAwLCBrd2FyZ3MpOwogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpKSB7CisKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBsaXN0IG11c3QgYmUgYSB0dXBsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYoYXJnKTsKIAotICAgIGlmIChrdyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa3cpKSB7CisgICAgaWYgKGt3YXJncyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa3dhcmdzKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgbGlzdCBtdXN0IGJlIGEgZGljdGlvbmFyeSIpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmcsIGt3KTsKLSAgICBQeV9ERUNSRUYoYXJnKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywga3dhcmdzKTsKIH0KIAogY29uc3QgY2hhciAqCkBAIC00NjI0LDIxICs0NzMxLDYgQEAKICAgICAgICAgcmV0dXJuICIgb2JqZWN0IjsKIH0KIAotc3RhdGljIHZvaWQKLWVycl9hcmdzKFB5T2JqZWN0ICpmdW5jLCBpbnQgZmxhZ3MsIGludCBuYXJncykKLXsKLSAgICBpZiAoZmxhZ3MgJiBNRVRIX05PQVJHUykKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBubyBhcmd1bWVudHMgKCVkIGdpdmVuKSIsCi0gICAgICAgICAgICAgICAgICAgICAoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYyktPm1fbWwtPm1sX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICBuYXJncyk7Ci0gICAgZWxzZQotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcygpIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50ICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpLT5tX21sLT5tbF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpOwotfQotCiAjZGVmaW5lIENfVFJBQ0UoeCwgY2FsbCkgXAogaWYgKHRzdGF0ZS0+dXNlX3RyYWNpbmcgJiYgdHN0YXRlLT5jX3Byb2ZpbGVmdW5jKSB7IFwKICAgICBpZiAoY2FsbF90cmFjZSh0c3RhdGUtPmNfcHJvZmlsZWZ1bmMsIHRzdGF0ZS0+Y19wcm9maWxlb2JqLCBcCkBAIC00NjcxLDYwICs0NzYzLDI1IEBACiAgICAgfQogCiBzdGF0aWMgUHlPYmplY3QgKgotY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG9wYXJnCi0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgICAgICAgICAsIHVpbnQ2NCogcGludHIwLCB1aW50NjQqIHBpbnRyMQotI2VuZGlmCi0gICAgICAgICAgICAgICAgKQorY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKipwcF9zdGFjaywgUHlfc3NpemVfdCBvcGFyZywgUHlPYmplY3QgKmt3bmFtZXMpCiB7Ci0gICAgaW50IG5hID0gb3BhcmcgJiAweGZmOwotICAgIGludCBuayA9IChvcGFyZz4+OCkgJiAweGZmOwotICAgIGludCBuID0gbmEgKyAyICogbms7Ci0gICAgUHlPYmplY3QgKipwZnVuYyA9ICgqcHBfc3RhY2spIC0gbiAtIDE7CisgICAgUHlPYmplY3QgKipwZnVuYyA9ICgqcHBfc3RhY2spIC0gb3BhcmcgLSAxOwogICAgIFB5T2JqZWN0ICpmdW5jID0gKnBmdW5jOwogICAgIFB5T2JqZWN0ICp4LCAqdzsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5X3NzaXplX3QgbmFyZ3MgPSBvcGFyZyAtIG5rd2FyZ3M7CisgICAgUHlPYmplY3QgKipzdGFjazsKIAogICAgIC8qIEFsd2F5cyBkaXNwYXRjaCBQeUNGdW5jdGlvbiBmaXJzdCwgYmVjYXVzZSB0aGVzZSBhcmUKICAgICAgICBwcmVzdW1lZCB0byBiZSB0aGUgbW9zdCBmcmVxdWVudCBjYWxsYWJsZSBvYmplY3QuCiAgICAgKi8KLSAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykgJiYgbmsgPT0gMCkgewotICAgICAgICBpbnQgZmxhZ3MgPSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYyk7CisgICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CiAKICAgICAgICAgUENBTEwoUENBTExfQ0ZVTkNUSU9OKTsKLSAgICAgICAgaWYgKGZsYWdzICYgKE1FVEhfTk9BUkdTIHwgTUVUSF9PKSkgewotICAgICAgICAgICAgUHlDRnVuY3Rpb24gbWV0aCA9IFB5Q0Z1bmN0aW9uX0dFVF9GVU5DVElPTihmdW5jKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpzZWxmID0gUHlDRnVuY3Rpb25fR0VUX1NFTEYoZnVuYyk7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBNRVRIX05PQVJHUyAmJiBuYSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCAoKm1ldGgpKHNlbGYsTlVMTCkpOwogCi0gICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBNRVRIX08gJiYgbmEgPT0gMSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCAoKm1ldGgpKHNlbGYsYXJnKSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZyk7Ci0KLSAgICAgICAgICAgICAgICB4ID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgeCwgTlVMTCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJfYXJncyhmdW5jLCBmbGFncywgbmEpOwotICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKmNhbGxhcmdzOwotICAgICAgICAgICAgY2FsbGFyZ3MgPSBsb2FkX2FyZ3MocHBfc3RhY2ssIG5hKTsKLSAgICAgICAgICAgIGlmIChjYWxsYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMCk7Ci0gICAgICAgICAgICAgICAgQ19UUkFDRSh4LCBQeUNGdW5jdGlvbl9DYWxsKGZ1bmMsY2FsbGFyZ3MsTlVMTCkpOwotICAgICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjEpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoY2FsbGFyZ3MpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgc3RhY2sgPSAoKnBwX3N0YWNrKSAtIG5hcmdzIC0gbmt3YXJnczsKKyAgICAgICAgQ19UUkFDRSh4LCBfUHlDRnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7CkBAIC00NzM2LDIxICs0NzkzLDI2IEBACiAgICAgICAgICAgICBmdW5jID0gUHlNZXRob2RfR0VUX0ZVTkNUSU9OKGZ1bmMpOwogICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwogICAgICAgICAgICAgUHlfU0VUUkVGKCpwZnVuYywgc2VsZik7Ci0gICAgICAgICAgICBuYSsrOwotICAgICAgICAgICAgbisrOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5hcmdzKys7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjApOwotICAgICAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkKLSAgICAgICAgICAgIHggPSBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHBwX3N0YWNrLCBuLCBuYSwgbmspOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB4ID0gZG9fY2FsbChmdW5jLCBwcF9zdGFjaywgbmEsIG5rKTsKLSAgICAgICAgUkVBRF9USU1FU1RBTVAoKnBpbnRyMSk7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgfQogCi0gICAgICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKKyAgICAgICAgc3RhY2sgPSAoKnBwX3N0YWNrKSAtIG5hcmdzIC0gbmt3YXJnczsKKworICAgICAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICAgICAgeCA9IGZhc3RfZnVuY3Rpb24oZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHggPSBfUHlPYmplY3RfRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIH0KIAorICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKKwogICAgIC8qIENsZWFyIHRoZSBzdGFjayBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgQWxzbyByZW1vdmVzCiAgICAgICAgdGhlIGFyZ3VtZW50cyBpbiBjYXNlIHRoZXkgd2VyZW4ndCBjb25zdW1lZCBhbHJlYWR5CiAgICAgICAgKGZhc3RfZnVuY3Rpb24oKSBhbmQgZXJyX2FyZ3MoKSBsZWF2ZSB0aGVtIG9uIHRoZSBzdGFjaykuCkBAIC00NzYxLDcgKzQ4MjMsNiBAQAogICAgICAgICBQQ0FMTChQQ0FMTF9QT1ApOwogICAgIH0KIAotICAgIGFzc2VydCgoeCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKICAgICByZXR1cm4geDsKIH0KIApAQCAtNDc3NCwxNTkgKzQ4MzUsMTk3IEBACiAgICBkb25lIGJlZm9yZSBldmFsdWF0aW5nIHRoZSBmcmFtZS4KICovCiAKK3N0YXRpYyBQeU9iamVjdCoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpnbG9iYWxzKQoreworICAgIFB5RnJhbWVPYmplY3QgKmY7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHM7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBQQ0FMTChQQ0FMTF9GQVNURVJfRlVOQ1RJT04pOworICAgIGFzc2VydChnbG9iYWxzICE9IE5VTEwpOworICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBjcmVhdGUgYSBzcGVjaWFsaXplZAorICAgICAgIFB5RnJhbWVfTmV3KCkgdGhhdCBkb2Vzbid0IHRha2UgbG9jYWxzLCBidXQgZG9lcworICAgICAgIHRha2UgYnVpbHRpbnMgd2l0aG91dCBzYW5pdHkgY2hlY2tpbmcgdGhlbS4KKyAgICAgICAqLworICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7CisgICAgZiA9IFB5RnJhbWVfTmV3KHRzdGF0ZSwgY28sIGdsb2JhbHMsIE5VTEwpOworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKKworICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgIFB5X0lOQ1JFRigqYXJncyk7CisgICAgICAgIGZhc3Rsb2NhbHNbaV0gPSAqYXJncysrOworICAgIH0KKyAgICByZXN1bHQgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKKworICAgICsrdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7CisgICAgUHlfREVDUkVGKGYpOworICAgIC0tdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlPYmplY3QgKgotZmFzdF9mdW5jdGlvbihQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBuLCBpbnQgbmEsIGludCBuaykKK2Zhc3RfZnVuY3Rpb24oUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSAoUHlDb2RlT2JqZWN0ICopUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKTsKICAgICBQeU9iamVjdCAqZ2xvYmFscyA9IFB5RnVuY3Rpb25fR0VUX0dMT0JBTFMoZnVuYyk7CiAgICAgUHlPYmplY3QgKmFyZ2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9ERUZBVUxUUyhmdW5jKTsKLSAgICBQeU9iamVjdCAqa3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7Ci0gICAgUHlPYmplY3QgKm5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7Ci0gICAgUHlPYmplY3QgKnF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKLSAgICBQeU9iamVjdCAqKmQgPSBOVUxMOwotICAgIGludCBuZCA9IDA7CisgICAgUHlPYmplY3QgKmt3ZGVmcywgKmNsb3N1cmUsICpuYW1lLCAqcXVhbG5hbWU7CisgICAgUHlPYmplY3QgKipkOworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IChrd25hbWVzID09IE5VTEwpID8gMCA6IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgUHlfc3NpemVfdCBuZDsKKworICAgIGFzc2VydChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KGt3bmFtZXMgPT0gTlVMTCB8fCBQeVR1cGxlX0NoZWNrRXhhY3Qoa3duYW1lcykpOworICAgIGFzc2VydCgobmFyZ3MgPT0gMCAmJiBua3dhcmdzID09IDApIHx8IHN0YWNrICE9IE5VTEwpOworICAgIC8qIGt3bmFtZXMgbXVzdCBvbmx5IGNvbnRhaW5zIHN0ciBzdHJpbmdzLCBubyBzdWJjbGFzcywgYW5kIGFsbCBrZXlzIG11c3QKKyAgICAgICBiZSB1bmlxdWUgKi8KIAogICAgIFBDQUxMKFBDQUxMX0ZVTkNUSU9OKTsKICAgICBQQ0FMTChQQ0FMTF9GQVNUX0ZVTkNUSU9OKTsKLSAgICBpZiAoYXJnZGVmcyA9PSBOVUxMICYmIGNvLT5jb19hcmdjb3VudCA9PSBuICYmCi0gICAgICAgIGNvLT5jb19rd29ubHlhcmdjb3VudCA9PSAwICYmIG5rPT0wICYmCi0gICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkgewotICAgICAgICBQeUZyYW1lT2JqZWN0ICpmOwotICAgICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKLSAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKLSAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzLCAqKnN0YWNrOwotICAgICAgICBpbnQgaTsKIAotICAgICAgICBQQ0FMTChQQ0FMTF9GQVNURVJfRlVOQ1RJT04pOwotICAgICAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKLSAgICAgICAgLyogWFhYIFBlcmhhcHMgd2Ugc2hvdWxkIGNyZWF0ZSBhIHNwZWNpYWxpemVkCi0gICAgICAgICAgIFB5RnJhbWVfTmV3KCkgdGhhdCBkb2Vzbid0IHRha2UgbG9jYWxzLCBidXQgZG9lcwotICAgICAgICAgICB0YWtlIGJ1aWx0aW5zIHdpdGhvdXQgc2FuaXR5IGNoZWNraW5nIHRoZW0uCi0gICAgICAgICovCi0gICAgICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7Ci0gICAgICAgIGYgPSBQeUZyYW1lX05ldyh0c3RhdGUsIGNvLCBnbG9iYWxzLCBOVUxMKTsKLSAgICAgICAgaWYgKGYgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7Ci0gICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRigqc3RhY2spOwotICAgICAgICAgICAgZmFzdGxvY2Fsc1tpXSA9ICpzdGFjaysrOworICAgIGlmIChjby0+Y29fa3dvbmx5YXJnY291bnQgPT0gMCAmJiBua3dhcmdzID09IDAgJiYKKyAgICAgICAgY28tPmNvX2ZsYWdzID09IChDT19PUFRJTUlaRUQgfCBDT19ORVdMT0NBTFMgfCBDT19OT0ZSRUUpKQorICAgIHsKKyAgICAgICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbmFyZ3MpIHsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgc3RhY2ssIG5hcmdzLCBnbG9iYWxzKTsKICAgICAgICAgfQotICAgICAgICByZXR2YWwgPSBQeUV2YWxfRXZhbEZyYW1lRXgoZiwwKTsKLSAgICAgICAgKyt0c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKLSAgICAgICAgUHlfREVDUkVGKGYpOwotICAgICAgICAtLXRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOwotICAgICAgICByZXR1cm4gcmV0dmFsOworICAgICAgICBlbHNlIGlmIChuYXJncyA9PSAwICYmIGFyZ2RlZnMgIT0gTlVMTAorICAgICAgICAgICAgICAgICAmJiBjby0+Y29fYXJnY291bnQgPT0gUHlfU0laRShhcmdkZWZzKSkgeworICAgICAgICAgICAgLyogZnVuY3Rpb24gY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLCBidXQgYWxsIHBhcmFtZXRlcnMgaGF2ZQorICAgICAgICAgICAgICAgYSBkZWZhdWx0IHZhbHVlOiB1c2UgZGVmYXVsdCB2YWx1ZXMgYXMgYXJndW1lbnRzIC4qLworICAgICAgICAgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgc3RhY2ssIFB5X1NJWkUoYXJnZGVmcyksIGdsb2JhbHMpOworICAgICAgICB9CiAgICAgfQorCisgICAga3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgY2xvc3VyZSA9IFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyk7CisgICAgbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfbmFtZTsKKyAgICBxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CisKICAgICBpZiAoYXJnZGVmcyAhPSBOVUxMKSB7CiAgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKICAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOwogICAgIH0KLSAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilOVUxMLCAoKnBwX3N0YWNrKS1uLCBuYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcHBfc3RhY2spLTIqbmssIG5rLCBkLCBuZCwga3dkZWZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHF1YWxuYW1lKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXVwZGF0ZV9rZXl3b3JkX2FyZ3MoUHlPYmplY3QgKm9yaWdfa3dkaWN0LCBpbnQgbmssIFB5T2JqZWN0ICoqKnBwX3N0YWNrLAotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYykKLXsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBpZiAob3JpZ19rd2RpY3QgPT0gTlVMTCkKLSAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOwogICAgIGVsc2UgewotICAgICAgICBrd2RpY3QgPSBQeURpY3RfQ29weShvcmlnX2t3ZGljdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcmlnX2t3ZGljdCk7CisgICAgICAgIGQgPSBOVUxMOworICAgICAgICBuZCA9IDA7CiAgICAgfQotICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgd2hpbGUgKC0tbmsgPj0gMCkgewotICAgICAgICBpbnQgZXJyOwotICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5T2JqZWN0ICprZXkgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmIChQeURpY3RfR2V0SXRlbShrd2RpY3QsIGtleSkgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgZ290IG11bHRpcGxlIHZhbHVlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOworICAgIHJldHVybiBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywgKFB5T2JqZWN0ICopTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5rd2FyZ3MgPyAmUHlUdXBsZV9HRVRfSVRFTShrd25hbWVzLCAwKSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjayArIG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmt3YXJncywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQsIChpbnQpbmQsIGt3ZGVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3N1cmUsIG5hbWUsIHF1YWxuYW1lKTsKK30KKworUHlPYmplY3QgKgorX1B5RnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCit7CisgICAgcmV0dXJuIGZhc3RfZnVuY3Rpb24oZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKK30KKworUHlPYmplY3QgKgorX1B5RnVuY3Rpb25fRmFzdENhbGxEaWN0KFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeUNvZGVPYmplY3QgKmNvID0gKFB5Q29kZU9iamVjdCAqKVB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyk7CisgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOworICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7CisgICAgUHlPYmplY3QgKmt3ZGVmcywgKmNsb3N1cmUsICpuYW1lLCAqcXVhbG5hbWU7CisgICAgUHlPYmplY3QgKmt3dHVwbGUsICoqazsKKyAgICBQeU9iamVjdCAqKmQ7CisgICAgUHlfc3NpemVfdCBuZCwgbms7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQobmFyZ3MgPT0gMCB8fCBhcmdzICE9IE5VTEwpOworICAgIGFzc2VydChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dhcmdzKSk7CisKKyAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7CisgICAgUENBTEwoUENBTExfRkFTVF9GVU5DVElPTik7CisKKyAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID09IDAgJiYKKyAgICAgICAgKGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9TaXplKGt3YXJncykgPT0gMCkgJiYKKyAgICAgICAgY28tPmNvX2ZsYWdzID09IChDT19PUFRJTUlaRUQgfCBDT19ORVdMT0NBTFMgfCBDT19OT0ZSRUUpKQorICAgIHsKKyAgICAgICAgLyogRmFzdCBwYXRocyAqLworICAgICAgICBpZiAoYXJnZGVmcyA9PSBOVUxMICYmIGNvLT5jb19hcmdjb3VudCA9PSBuYXJncykgeworICAgICAgICAgICAgcmV0dXJuIF9QeUZ1bmN0aW9uX0Zhc3RDYWxsKGNvLCBhcmdzLCBuYXJncywgZ2xvYmFscyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobmFyZ3MgPT0gMCAmJiBhcmdkZWZzICE9IE5VTEwKKyAgICAgICAgICAgICAgICAgJiYgY28tPmNvX2FyZ2NvdW50ID09IFB5X1NJWkUoYXJnZGVmcykpIHsKKyAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywgYnV0IGFsbCBwYXJhbWV0ZXJzIGhhdmUKKyAgICAgICAgICAgICAgIGEgZGVmYXVsdCB2YWx1ZTogdXNlIGRlZmF1bHQgdmFsdWVzIGFzIGFyZ3VtZW50cyAuKi8KKyAgICAgICAgICAgIGFyZ3MgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgYXJncywgUHlfU0laRShhcmdkZWZzKSwgZ2xvYmFscyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoa3dhcmdzICE9IE5VTEwpIHsKKyAgICAgICAgUHlfc3NpemVfdCBwb3MsIGk7CisgICAgICAgIG5rID0gUHlEaWN0X1NpemUoa3dhcmdzKTsKKworICAgICAgICBrd3R1cGxlID0gUHlUdXBsZV9OZXcoMiAqIG5rKTsKKyAgICAgICAgaWYgKGt3dHVwbGUgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXksIHZhbHVlKTsKLSAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIGlmIChlcnIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihrd2RpY3QpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgayA9ICZQeVR1cGxlX0dFVF9JVEVNKGt3dHVwbGUsIDApOworICAgICAgICBwb3MgPSBpID0gMDsKKyAgICAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGt3YXJncywgJnBvcywgJmtbaV0sICZrW2krMV0pKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoa1tpXSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa1tpKzFdKTsKKyAgICAgICAgICAgIGkgKz0gMjsKICAgICAgICAgfQorICAgICAgICBuayA9IGkgLyAyOwogICAgIH0KLSAgICByZXR1cm4ga3dkaWN0OworICAgIGVsc2UgeworICAgICAgICBrd3R1cGxlID0gTlVMTDsKKyAgICAgICAgayA9IE5VTEw7CisgICAgICAgIG5rID0gMDsKKyAgICB9CisKKyAgICBrd2RlZnMgPSBQeUZ1bmN0aW9uX0dFVF9LV19ERUZBVUxUUyhmdW5jKTsKKyAgICBjbG9zdXJlID0gUHlGdW5jdGlvbl9HRVRfQ0xPU1VSRShmdW5jKTsKKyAgICBuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOworICAgIHF1YWxuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19xdWFsbmFtZTsKKworICAgIGlmIChhcmdkZWZzICE9IE5VTEwpIHsKKyAgICAgICAgZCA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ2RlZnMsIDApOworICAgICAgICBuZCA9IFB5X1NJWkUoYXJnZGVmcyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgbmQgPSAwOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZSgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLCAoUHlPYmplY3QgKilOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaywgayArIDEsIG5rLCAyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCBuZCwga3dkZWZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zdXJlLCBuYW1lLCBxdWFsbmFtZSk7CisgICAgUHlfWERFQ1JFRihrd3R1cGxlKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdXBkYXRlX3N0YXJfYXJncyhpbnQgbnN0YWNrLCBpbnQgbnN0YXIsIFB5T2JqZWN0ICpzdGFyYXJnLAotICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKipwcF9zdGFjaykKK2RvX2NhbGxfY29yZShQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmNhbGxhcmdzLCBQeU9iamVjdCAqa3dkaWN0KQogewotICAgIFB5T2JqZWN0ICpjYWxsYXJncywgKnc7Ci0KLSAgICBjYWxsYXJncyA9IFB5VHVwbGVfTmV3KG5zdGFjayArIG5zdGFyKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKG5zdGFyKSB7Ci0gICAgICAgIGludCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnN0YXI7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKmEgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXJhcmcsIGkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKGEpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjYWxsYXJncywgbnN0YWNrICsgaSwgYSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKC0tbnN0YWNrID49IDApIHsKLSAgICAgICAgdyA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShjYWxsYXJncywgbnN0YWNrLCB3KTsKLSAgICB9Ci0gICAgcmV0dXJuIGNhbGxhcmdzOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9hcmdzKFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbmEpCi17Ci0gICAgUHlPYmplY3QgKmFyZ3MgPSBQeVR1cGxlX05ldyhuYSk7Ci0gICAgUHlPYmplY3QgKnc7Ci0KLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB3aGlsZSAoLS1uYSA+PSAwKSB7Ci0gICAgICAgIHcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgbmEsIHcpOwotICAgIH0KLSAgICByZXR1cm4gYXJnczsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWRvX2NhbGwoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbmEsIGludCBuaykKLXsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgaWYgKG5rID4gMCkgewotICAgICAgICBrd2RpY3QgPSB1cGRhdGVfa2V5d29yZF9hcmdzKE5VTEwsIG5rLCBwcF9zdGFjaywgZnVuYyk7Ci0gICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gY2FsbF9mYWlsOwotICAgIH0KLSAgICBjYWxsYXJncyA9IGxvYWRfYXJncyhwcF9zdGFjaywgbmEpOwotICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKQotICAgICAgICBnb3RvIGNhbGxfZmFpbDsKICNpZmRlZiBDQUxMX1BST0ZJTEUKICAgICAvKiBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIHRvIGxvb2sgYXQgdGhlIHR5cGUgb2YgZnVuYyB0bwogICAgICAgIHVwZGF0ZSB0aGUgY2FsbCBzdGF0cyBwcm9wZXJseS4gIERvIGl0IGhlcmUgc28gYXMgdG8gYXZvaWQKQEAgLTQ5NDMsMTE1ICs1MDQyLDE2IEBACiAgICAgZWxzZQogICAgICAgICBQQ0FMTChQQ0FMTF9PVEhFUik7CiAjZW5kaWYKKwogICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgICAgICBDX1RSQUNFKHJlc3VsdCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKLWNhbGxfZmFpbDoKLSAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICBQeV9YREVDUkVGKGt3ZGljdCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWV4dF9kb19jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IGZsYWdzLCBpbnQgbmEsIGludCBuaykKLXsKLSAgICBpbnQgbnN0YXIgPSAwOwotICAgIFB5T2JqZWN0ICpjYWxsYXJncyA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnN0YXJhcmcgPSBOVUxMOwotICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX0tXKSB7Ci0gICAgICAgIGt3ZGljdCA9IEVYVF9QT1AoKnBwX3N0YWNrKTsKLSAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2soa3dkaWN0KSkgewotICAgICAgICAgICAgUHlPYmplY3QgKmQ7Ci0gICAgICAgICAgICBkID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgaWYgKGQgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShkLCBrd2RpY3QpICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgLyogUHlEaWN0X1VwZGF0ZSByYWlzZXMgYXR0cmlidXRlCi0gICAgICAgICAgICAgICAgICogZXJyb3IgKHBlcmNvbGF0ZWQgZnJvbSBhbiBhdHRlbXB0Ci0gICAgICAgICAgICAgICAgICogdG8gZ2V0ICdrZXlzJyBhdHRyaWJ1dGUpIGluc3RlYWQgb2YKLSAgICAgICAgICAgICAgICAgKiBhIHR5cGUgZXJyb3IgaWYgaXRzIHNlY29uZCBhcmd1bWVudAotICAgICAgICAgICAgICAgICAqIGlzIG5vdCBhIG1hcHBpbmcuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RpY3QtPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKLSAgICAgICAgICAgIGt3ZGljdCA9IGQ7Ci0gICAgICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7CiAgICAgfQotICAgIGlmIChuayA+IDApIHsKLSAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhrd2RpY3QsIG5rLCBwcF9zdGFjaywgZnVuYyk7Ci0gICAgICAgIGlmIChrd2RpY3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICB9Ci0KLSAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfVkFSKSB7Ci0gICAgICAgIHN0YXJhcmcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmICghUHlUdXBsZV9DaGVjayhzdGFyYXJnKSkgewotICAgICAgICAgICAgUHlPYmplY3QgKnQgPSBOVUxMOwotICAgICAgICAgICAgaWYgKFB5X1RZUEUoc3RhcmFyZyktPnRwX2l0ZXIgPT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICAgICAhUHlTZXF1ZW5jZV9DaGVjayhzdGFyYXJnKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJhcmctPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHQgPSBQeVNlcXVlbmNlX1R1cGxlKHN0YXJhcmcpOwotICAgICAgICAgICAgaWYgKHQgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGdvdG8gZXh0X2NhbGxfZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFyYXJnKTsKLSAgICAgICAgICAgIHN0YXJhcmcgPSB0OwotICAgICAgICB9Ci0gICAgICAgIG5zdGFyID0gUHlUdXBsZV9HRVRfU0laRShzdGFyYXJnKTsKLSAgICB9Ci0gICAgY2FsbGFyZ3MgPSB1cGRhdGVfc3Rhcl9hcmdzKG5hLCBuc3Rhciwgc3RhcmFyZywgcHBfc3RhY2spOwotICAgIGlmIChjYWxsYXJncyA9PSBOVUxMKQotICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0jaWZkZWYgQ0FMTF9QUk9GSUxFCi0gICAgLyogQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSB0eXBlIG9mIGZ1bmMgdG8KLSAgICAgICB1cGRhdGUgdGhlIGNhbGwgc3RhdHMgcHJvcGVybHkuICBEbyBpdCBoZXJlIHNvIGFzIHRvIGF2b2lkCi0gICAgICAgZXhwb3NpbmcgdGhlIGNhbGwgc3RhdHMgbWFjaGluZXJ5IG91dHNpZGUgY2V2YWwuYwotICAgICovCi0gICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX0ZVTkNUSU9OKTsKLSAgICBlbHNlIGlmIChQeU1ldGhvZF9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfTUVUSE9EKTsKLSAgICBlbHNlIGlmIChQeVR5cGVfQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX1RZUEUpOwotICAgIGVsc2UgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9DRlVOQ1RJT04pOwotICAgIGVsc2UKLSAgICAgICAgUENBTEwoUENBTExfT1RIRVIpOwotI2VuZGlmCi0gICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpKSB7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgICAgIENfVFJBQ0UocmVzdWx0LCBQeUNGdW5jdGlvbl9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOwotZXh0X2NhbGxfZmFpbDoKLSAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICBQeV9YREVDUkVGKGt3ZGljdCk7Ci0gICAgUHlfWERFQ1JFRihzdGFyYXJnKTsKLSAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBFeHRyYWN0IGEgc2xpY2UgaW5kZXggZnJvbSBhIFB5TG9uZyBvciBhbiBvYmplY3Qgd2l0aCB0aGUKQEAgLTUxNDEsNiArNTE0MSw0NiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgoraW1wb3J0X25hbWUoUHlGcmFtZU9iamVjdCAqZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpmcm9tbGlzdCwgUHlPYmplY3QgKmxldmVsKQoreworICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOworICAgIFB5T2JqZWN0ICppbXBvcnRfZnVuYywgKnJlczsKKyAgICBQeU9iamVjdCogc3RhY2tbNV07CisKKyAgICBpbXBvcnRfZnVuYyA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfYnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOworICAgIGlmIChpbXBvcnRfZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgIl9faW1wb3J0X18gbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEZhc3QgcGF0aCBmb3Igbm90IG92ZXJsb2FkZWQgX19pbXBvcnRfXy4gKi8KKyAgICBpZiAoaW1wb3J0X2Z1bmMgPT0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwLT5pbXBvcnRfZnVuYykgeworICAgICAgICBpbnQgaWxldmVsID0gX1B5TG9uZ19Bc0ludChsZXZlbCk7CisgICAgICAgIGlmIChpbGV2ZWwgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmVzID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/IFB5X05vbmUgOiBmLT5mX2xvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgaWxldmVsKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoaW1wb3J0X2Z1bmMpOworCisgICAgc3RhY2tbMF0gPSBuYW1lOworICAgIHN0YWNrWzFdID0gZi0+Zl9nbG9iYWxzOworICAgIHN0YWNrWzJdID0gZi0+Zl9sb2NhbHMgPT0gTlVMTCA/IFB5X05vbmUgOiBmLT5mX2xvY2FsczsKKyAgICBzdGFja1szXSA9IGZyb21saXN0OworICAgIHN0YWNrWzRdID0gbGV2ZWw7CisgICAgcmVzID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGltcG9ydF9mdW5jLCBzdGFjaywgNSk7CisgICAgUHlfREVDUkVGKGltcG9ydF9mdW5jKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogaW1wb3J0X2Zyb20oUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpuYW1lKQogewogICAgIFB5T2JqZWN0ICp4OwpAQCAtNTI3Niw3ICs1MzE2LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfY29uY2F0ZW5hdGUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LAotICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmLCB1bnNpZ25lZCBjaGFyICpuZXh0X2luc3RyKQorICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmLCBjb25zdCBfUHlfQ09ERVVOSVQgKm5leHRfaW5zdHIpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKICAgICBpZiAoUHlfUkVGQ05UKHYpID09IDIpIHsKQEAgLTUyODYsMTAgKzUzMjYsMTEgQEAKICAgICAgICAgICogJ3ZhcmlhYmxlJy4gIFdlIHRyeSB0byBkZWxldGUgdGhlIHZhcmlhYmxlIG5vdyB0byByZWR1Y2UKICAgICAgICAgICogdGhlIHJlZmNudCB0byAxLgogICAgICAgICAgKi8KLSAgICAgICAgc3dpdGNoICgqbmV4dF9pbnN0cikgeworICAgICAgICBpbnQgb3Bjb2RlLCBvcGFyZzsKKyAgICAgICAgTkVYVE9QQVJHKCk7CisgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgU1RPUkVfRkFTVDoKICAgICAgICAgewotICAgICAgICAgICAgaW50IG9wYXJnID0gUEVFS0FSRygpOwogICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwogICAgICAgICAgICAgaWYgKEdFVExPQ0FMKG9wYXJnKSA9PSB2KQogICAgICAgICAgICAgICAgIFNFVExPQ0FMKG9wYXJnLCBOVUxMKTsKQEAgLTUyOTksNyArNTM0MCw3IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqZnJlZXZhcnMgPSAoZi0+Zl9sb2NhbHNwbHVzICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9jb2RlLT5jb19ubG9jYWxzKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gZnJlZXZhcnNbUEVFS0FSRygpXTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjID0gZnJlZXZhcnNbb3BhcmddOwogICAgICAgICAgICAgaWYgKFB5Q2VsbF9HRVQoYykgPT0gdikKICAgICAgICAgICAgICAgICBQeUNlbGxfU2V0KGMsIE5VTEwpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MzA3LDcgKzUzNDgsNyBAQAogICAgICAgICBjYXNlIFNUT1JFX05BTUU6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lcyA9IGYtPmZfY29kZS0+Y29fbmFtZXM7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIFBFRUtBUkcoKSk7CisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpsb2NhbHMgPSBmLT5mX2xvY2FsczsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChsb2NhbHMpICYmCiAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0obG9jYWxzLCBuYW1lKSA9PSB2KSB7CkBAIC01MzY3LDMgKzU0MDgsNzkgQEAKIH0KIAogI2VuZGlmCisKK1B5X3NzaXplX3QKK19QeUV2YWxfUmVxdWVzdENvZGVFeHRyYUluZGV4KGZyZWVmdW5jIGZyZWUpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyAgICBQeV9zc2l6ZV90IG5ld19pbmRleDsKKworICAgIGlmICh0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgPT0gTUFYX0NPX0VYVFJBX1VTRVJTIC0gMSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG5ld19pbmRleCA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCsrOworICAgIHRzdGF0ZS0+Y29fZXh0cmFfZnJlZWZ1bmNzW25ld19pbmRleF0gPSBmcmVlOworICAgIHJldHVybiBuZXdfaW5kZXg7Cit9CisKK3N0YXRpYyB2b2lkCitkdHJhY2VfZnVuY3Rpb25fZW50cnkoUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBjaGFyKiBmaWxlbmFtZTsKKyAgICBjaGFyKiBmdW5jbmFtZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgIGZ1bmNuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX25hbWUpOworICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoZi0+Zl9jb2RlLCBmLT5mX2xhc3RpKTsKKworICAgIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vKTsKK30KKworc3RhdGljIHZvaWQKK2R0cmFjZV9mdW5jdGlvbl9yZXR1cm4oUHlGcmFtZU9iamVjdCAqZikKK3sKKyAgICBjaGFyKiBmaWxlbmFtZTsKKyAgICBjaGFyKiBmdW5jbmFtZTsKKyAgICBpbnQgbGluZW5vOworCisgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGYtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgIGZ1bmNuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX25hbWUpOworICAgIGxpbmVubyA9IFB5Q29kZV9BZGRyMkxpbmUoZi0+Zl9jb2RlLCBmLT5mX2xhc3RpKTsKKworICAgIFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTihmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVubyk7Cit9CisKKy8qIERUcmFjZSBlcXVpdmFsZW50IG9mIG1heWJlX2NhbGxfbGluZV90cmFjZS4gKi8KK3N0YXRpYyB2b2lkCittYXliZV9kdHJhY2VfbGluZShQeUZyYW1lT2JqZWN0ICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgIGludCAqaW5zdHJfbGIsIGludCAqaW5zdHJfdWIsIGludCAqaW5zdHJfcHJldikKK3sKKyAgICBpbnQgbGluZSA9IGZyYW1lLT5mX2xpbmVubzsKKyAgICBjaGFyICpjb19maWxlbmFtZSwgKmNvX25hbWU7CisKKyAgICAvKiBJZiB0aGUgbGFzdCBpbnN0cnVjdGlvbiBleGVjdXRlZCBpc24ndCBpbiB0aGUgY3VycmVudAorICAgICAgIGluc3RydWN0aW9uIHdpbmRvdywgcmVzZXQgdGhlIHdpbmRvdy4KKyAgICAqLworICAgIGlmIChmcmFtZS0+Zl9sYXN0aSA8ICppbnN0cl9sYiB8fCBmcmFtZS0+Zl9sYXN0aSA+PSAqaW5zdHJfdWIpIHsKKyAgICAgICAgUHlBZGRyUGFpciBib3VuZHM7CisgICAgICAgIGxpbmUgPSBfUHlDb2RlX0NoZWNrTGluZU51bWJlcihmcmFtZS0+Zl9jb2RlLCBmcmFtZS0+Zl9sYXN0aSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZib3VuZHMpOworICAgICAgICAqaW5zdHJfbGIgPSBib3VuZHMuYXBfbG93ZXI7CisgICAgICAgICppbnN0cl91YiA9IGJvdW5kcy5hcF91cHBlcjsKKyAgICB9CisgICAgLyogSWYgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gZmFsbHMgYXQgdGhlIHN0YXJ0IG9mIGEgbGluZSBvciBpZgorICAgICAgIGl0IHJlcHJlc2VudHMgYSBqdW1wIGJhY2t3YXJkcywgdXBkYXRlIHRoZSBmcmFtZSdzIGxpbmUKKyAgICAgICBudW1iZXIgYW5kIGNhbGwgdGhlIHRyYWNlIGZ1bmN0aW9uLiAqLworICAgIGlmIChmcmFtZS0+Zl9sYXN0aSA9PSAqaW5zdHJfbGIgfHwgZnJhbWUtPmZfbGFzdGkgPCAqaW5zdHJfcHJldikgeworICAgICAgICBmcmFtZS0+Zl9saW5lbm8gPSBsaW5lOworICAgICAgICBjb19maWxlbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUpOworICAgICAgICBpZiAoIWNvX2ZpbGVuYW1lKQorICAgICAgICAgICAgY29fZmlsZW5hbWUgPSAiPyI7CisgICAgICAgIGNvX25hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOworICAgICAgICBpZiAoIWNvX25hbWUpCisgICAgICAgICAgICBjb19uYW1lID0gIj8iOworICAgICAgICBQeURUcmFjZV9MSU5FKGNvX2ZpbGVuYW1lLCBjb19uYW1lLCBsaW5lKTsKKyAgICB9CisgICAgKmluc3RyX3ByZXYgPSBmcmFtZS0+Zl9sYXN0aTsKK30KZGlmZiAtLWdpdCBhL1B5dGhvbi9jZXZhbF9naWwuaCBiL1B5dGhvbi9jZXZhbF9naWwuaAppbmRleCA4ZDM4ZWU5Li5hM2I0NTBiIDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWxfZ2lsLmgKKysrIGIvUHl0aG9uL2NldmFsX2dpbC5oCkBAIC0xNzgsNyArMTc4LDcgQEAKICAgICAgICAgLyogU3ViLWludGVycHJldGVyIHN1cHBvcnQ6IHRocmVhZHMgbWlnaHQgaGF2ZSBiZWVuIHN3aXRjaGVkCiAgICAgICAgICAgIHVuZGVyIG91ciBmZWV0IHVzaW5nIFB5VGhyZWFkU3RhdGVfU3dhcCgpLiBGaXggdGhlIEdJTCBsYXN0CiAgICAgICAgICAgIGhvbGRlciB2YXJpYWJsZSBzbyB0aGF0IG91ciBoZXVyaXN0aWNzIHdvcmsuICovCi0gICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAoUHlfdWludHB0cl90KXRzdGF0ZSk7CisgICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAodWludHB0cl90KXRzdGF0ZSk7CiAgICAgfQogCiAgICAgTVVURVhfTE9DSyhnaWxfbXV0ZXgpOwpAQCAtMjQwLDcgKzI0MCw3IEBACiAgICAgX1B5X0FOTk9UQVRFX1JXTE9DS19BQ1FVSVJFRCgmZ2lsX2xvY2tlZCwgLyppc193cml0ZT0qLzEpOwogCiAgICAgaWYgKHRzdGF0ZSAhPSAoUHlUaHJlYWRTdGF0ZSopX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlcikpIHsKLSAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsIChQeV91aW50cHRyX3QpdHN0YXRlKTsKKyAgICAgICAgX1B5X2F0b21pY19zdG9yZV9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIsICh1aW50cHRyX3QpdHN0YXRlKTsKICAgICAgICAgKytnaWxfc3dpdGNoX251bWJlcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKaW5kZXggNGUyYjFmMS4uYzg4ZGVlZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKKysrIGIvUHl0aG9uL2NsaW5pYy9ibHRpbm1vZHVsZS5jLmgKQEAgLTkzLDggKzkzLDkgQEAKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfFU6Zm9ybWF0IiwKLSAgICAgICAgJnZhbHVlLCAmZm9ybWF0X3NwZWMpKQorICAgICAgICAmdmFsdWUsICZmb3JtYXRfc3BlYykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Zvcm1hdF9pbXBsKG1vZHVsZSwgdmFsdWUsIGZvcm1hdF9zcGVjKTsKIAogZXhpdDoKQEAgLTExOSw4ICsxMjAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCBpOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmNociIsICZpKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Y2hyIiwgJmkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jaHJfaW1wbChtb2R1bGUsIGkpOwogCiBleGl0OgpAQCAtMTQ2LDcgKzE0OCw3IEBACiAiaW4gYWRkaXRpb24gdG8gYW55IGZlYXR1cmVzIGV4cGxpY2l0bHkgc3BlY2lmaWVkLiIpOwogCiAjZGVmaW5lIEJVSUxUSU5fQ09NUElMRV9NRVRIT0RERUYgICAgXAotICAgIHsiY29tcGlsZSIsIChQeUNGdW5jdGlvbilidWlsdGluX2NvbXBpbGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBidWlsdGluX2NvbXBpbGVfX2RvY19ffSwKKyAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCBNRVRIX0ZBU1RDQUxMLCBidWlsdGluX2NvbXBpbGVfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fY29tcGlsZV9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpzb3VyY2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwKQEAgLTE1NCwxMCArMTU2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgb3B0aW1pemUpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnVpbHRpbl9jb21waWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnVpbHRpbl9jb21waWxlKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzb3VyY2UiLCAiZmlsZW5hbWUiLCAibW9kZSIsICJmbGFncyIsICJkb250X2luaGVyaXQiLCAib3B0aW1pemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzb3VyY2UiLCAiZmlsZW5hbWUiLCAibW9kZSIsICJmbGFncyIsICJkb250X2luaGVyaXQiLCAib3B0aW1pemUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPTyZzfGlpaTpjb21waWxlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc291cmNlOwogICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBjb25zdCBjaGFyICptb2RlOwpAQCAtMTY1LDkgKzE2OCwxMCBAQAogICAgIGludCBkb250X2luaGVyaXQgPSAwOwogICAgIGludCBvcHRpbWl6ZSA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT08mc3xpaWk6Y29tcGlsZSIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNvdXJjZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLCAmbW9kZSwgJmZsYWdzLCAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc291cmNlLCBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmZmlsZW5hbWUsICZtb2RlLCAmZmxhZ3MsICZkb250X2luaGVyaXQsICZvcHRpbWl6ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2NvbXBpbGVfaW1wbChtb2R1bGUsIHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIGZsYWdzLCBkb250X2luaGVyaXQsIG9wdGltaXplKTsKIAogZXhpdDoKQEAgLTE5NSw4ICsxOTksOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGl2bW9kIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJngsICZ5KSkKKyAgICAgICAgJngsICZ5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZGl2bW9kX2ltcGwobW9kdWxlLCB4LCB5KTsKIAogZXhpdDoKQEAgLTIzMiw4ICsyMzcsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZXZhbCIsCiAgICAgICAgIDEsIDMsCi0gICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkKKyAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9ldmFsX2ltcGwobW9kdWxlLCBzb3VyY2UsIGdsb2JhbHMsIGxvY2Fscyk7CiAKIGV4aXQ6CkBAIC0yNjksOCArMjc1LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV4ZWMiLAogICAgICAgICAxLCAzLAotICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXhlY19pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogCiBleGl0OgpAQCAtMzIxLDggKzMyOCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJoYXNhdHRyIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICAmb2JqLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2hhc2F0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0zNjYsOCArMzc0LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInNldGF0dHIiLAogICAgICAgICAzLCAzLAotICAgICAgICAmb2JqLCAmbmFtZSwgJnZhbHVlKSkKKyAgICAgICAgJm9iaiwgJm5hbWUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3NldGF0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtMzk3LDggKzQwNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJkZWxhdHRyIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJm5hbWUpKQorICAgICAgICAmb2JqLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2RlbGF0dHJfaW1wbChtb2R1bGUsIG9iaiwgbmFtZSk7CiAKIGV4aXQ6CkBAIC01MDYsOCArNTE2LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvdyIsCiAgICAgICAgIDIsIDMsCi0gICAgICAgICZ4LCAmeSwgJnopKQorICAgICAgICAmeCwgJnksICZ6KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fcG93X2ltcGwobW9kdWxlLCB4LCB5LCB6KTsKIAogZXhpdDoKQEAgLTU0MCw4ICs1NTEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaW5wdXQiLAogICAgICAgICAwLCAxLAotICAgICAgICAmcHJvbXB0KSkKKyAgICAgICAgJnByb21wdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lucHV0X2ltcGwobW9kdWxlLCBwcm9tcHQpOwogCiBleGl0OgpAQCAtNTg0LDggKzU5Niw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdW0iLAogICAgICAgICAxLCAyLAotICAgICAgICAmaXRlcmFibGUsICZzdGFydCkpCisgICAgICAgICZpdGVyYWJsZSwgJnN0YXJ0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fc3VtX2ltcGwobW9kdWxlLCBpdGVyYWJsZSwgc3RhcnQpOwogCiBleGl0OgpAQCAtNjE4LDggKzYzMSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJpc2luc3RhbmNlIiwKICAgICAgICAgMiwgMiwKLSAgICAgICAgJm9iaiwgJmNsYXNzX29yX3R1cGxlKSkKKyAgICAgICAgJm9iaiwgJmNsYXNzX29yX3R1cGxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5faXNpbnN0YW5jZV9pbXBsKG1vZHVsZSwgb2JqLCBjbGFzc19vcl90dXBsZSk7CiAKIGV4aXQ6CkBAIC02NTIsMTEgKzY2NiwxMiBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNzdWJjbGFzcyIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZjbHMsICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgICZjbHMsICZjbGFzc19vcl90dXBsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzc3ViY2xhc3NfaW1wbChtb2R1bGUsIGNscywgY2xhc3Nfb3JfdHVwbGUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTAzMTI3MGI2NGM3OTRiOCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NjM0ODNkZWI3NTgwNWY3YyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2ltcG9ydC5jLmggYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKaW5kZXggMDVkNzlhYy4uYjM0NjBiMCAxMDA2NDQKLS0tIGEvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCisrKyBiL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaApAQCAtODksOCArODksOSBAQAogICAgIFB5T2JqZWN0ICpwYXRoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIVU6X2ZpeF9jb19maWxlbmFtZSIsCi0gICAgICAgICZQeUNvZGVfVHlwZSwgJmNvZGUsICZwYXRoKSkKKyAgICAgICAgJlB5Q29kZV9UeXBlLCAmY29kZSwgJnBhdGgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9fZml4X2NvX2ZpbGVuYW1lX2ltcGwobW9kdWxlLCBjb2RlLCBwYXRoKTsKIAogZXhpdDoKQEAgLTE0Miw4ICsxNDMsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmluaXRfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfaW5pdF9mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMTY4LDggKzE3MCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9nZXRfZnJvemVuX29iamVjdF9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0xOTQsOCArMTk3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9wYWNrYWdlX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTIyMCw4ICsyMjQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2J1aWx0aW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMjQ2LDggKzI1MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19mcm96ZW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2lzX2Zyb3plbl9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0yNzcsOCArMjgzLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImNyZWF0ZV9keW5hbWljIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJnNwZWMsICZmaWxlKSkKKyAgICAgICAgJnNwZWMsICZmaWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfY3JlYXRlX2R5bmFtaWNfaW1wbChtb2R1bGUsIHNwZWMsIGZpbGUpOwogCiBleGl0OgpAQCAtMzA4LDggKzMxNSw5IEBACiAgICAgaW50IF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gX2ltcF9leGVjX2R5bmFtaWNfaW1wbChtb2R1bGUsIG1vZCk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZylfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTMzNyw4ICszNDUsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9pbXBfZXhlY19idWlsdGluX2ltcGwobW9kdWxlLCBtb2QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zNTIsNCArMzYxLDQgQEAKICNpZm5kZWYgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCiAgICAgI2RlZmluZSBfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChfSU1QX0VYRUNfRFlOQU1JQ19NRVRIT0RERUYpICovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTBhZDZlNTgzM2U2MTcwZCBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZDI0ZDdmNzM3MDJhOTA3ZiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QeXRob24vY29tcGlsZS5jIGIvUHl0aG9uL2NvbXBpbGUuYwppbmRleCA5M2Y0N2UwLi5jMGM4MWUxIDEwMDY0NAotLS0gYS9QeXRob24vY29tcGlsZS5jCisrKyBiL1B5dGhvbi9jb21waWxlLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJ3b3JkY29kZV9oZWxwZXJzLmgiCiAKICNkZWZpbmUgREVGQVVMVF9CTE9DS19TSVpFIDE2CiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tTIDgKQEAgLTQzLDcgKzQ0LDYgQEAKIHN0cnVjdCBpbnN0ciB7CiAgICAgdW5zaWduZWQgaV9qYWJzIDogMTsKICAgICB1bnNpZ25lZCBpX2pyZWwgOiAxOwotICAgIHVuc2lnbmVkIGlfaGFzYXJnIDogMTsKICAgICB1bnNpZ25lZCBjaGFyIGlfb3Bjb2RlOwogICAgIGludCBpX29wYXJnOwogICAgIHN0cnVjdCBiYXNpY2Jsb2NrXyAqaV90YXJnZXQ7IC8qIHRhcmdldCBibG9jayAoaWYganVtcCBpbnN0cnVjdGlvbikgKi8KQEAgLTE3MSw3ICsxNzEsNiBAQAogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9vKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9pKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIFB5X3NzaXplX3QpOwogc3RhdGljIGludCBjb21waWxlcl9hZGRvcF9qKHN0cnVjdCBjb21waWxlciAqLCBpbnQsIGJhc2ljYmxvY2sgKiwgaW50KTsKLXN0YXRpYyBiYXNpY2Jsb2NrICpjb21waWxlcl91c2VfbmV3X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfZXJyb3Ioc3RydWN0IGNvbXBpbGVyICosIGNvbnN0IGNoYXIgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX25hbWVvcChzdHJ1Y3QgY29tcGlsZXIgKiwgaWRlbnRpZmllciwgZXhwcl9jb250ZXh0X3R5KTsKIApAQCAtMTgwLDYgKzE3OSw3IEBACiBzdGF0aWMgaW50IGNvbXBpbGVyX3Zpc2l0X2tleXdvcmQoc3RydWN0IGNvbXBpbGVyICosIGtleXdvcmRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl92aXNpdF9leHByKHN0cnVjdCBjb21waWxlciAqLCBleHByX3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXVnYXNzaWduKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKK3N0YXRpYyBpbnQgY29tcGlsZXJfYW5uYXNzaWduKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdmlzaXRfc2xpY2Uoc3RydWN0IGNvbXBpbGVyICosIHNsaWNlX3R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkpOwogCkBAIC0xOTYsMTIgKzE5NiwyMiBAQAogc3RhdGljIGludCBjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOwogc3RhdGljIGludCBjb21waWxlcl9hc3luY193aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOwogc3RhdGljIGludCBjb21waWxlcl9hc3luY19mb3Ioc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwotc3RhdGljIGludCBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5X3NzaXplX3QgbiwKK3N0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBpbnQgbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICprZXl3b3Jkcyk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3RyeV9leGNlcHQoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogc3RhdGljIGludCBjb21waWxlcl9zZXRfcXVhbG5hbWUoc3RydWN0IGNvbXBpbGVyICopOwogCitzdGF0aWMgaW50IGNvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpOworCitzdGF0aWMgaW50IGNvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKTsKKwogc3RhdGljIFB5Q29kZU9iamVjdCAqYXNzZW1ibGUoc3RydWN0IGNvbXBpbGVyICosIGludCBhZGROb25lKTsKIHN0YXRpYyBQeU9iamVjdCAqX19kb2NfXzsKIApAQCAtNDc3LDkgKzQ4Nyw5IEBACiB7CiAgICAgYmFzaWNibG9jayAqYmxvY2s7CiAgICAgZm9yIChibG9jayA9IHUtPnVfYmxvY2tzOyBibG9jayAhPSBOVUxMOyBibG9jayA9IGJsb2NrLT5iX2xpc3QpIHsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGNiY2JjYmNiKTsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGZiZmJmYmZiKTsKLSAgICAgICAgYXNzZXJ0KCh2b2lkICopYmxvY2sgIT0gKHZvaWQgKikweGRiZGJkYmRiKTsKKyAgICAgICAgYXNzZXJ0KCh1aW50cHRyX3QpYmxvY2sgIT0gMHhjYmNiY2JjYlUpOworICAgICAgICBhc3NlcnQoKHVpbnRwdHJfdClibG9jayAhPSAweGZiZmJmYmZiVSk7CisgICAgICAgIGFzc2VydCgodWludHB0cl90KWJsb2NrICE9IDB4ZGJkYmRiZGJVKTsKICAgICAgICAgaWYgKGJsb2NrLT5iX2luc3RyICE9IE5VTEwpIHsKICAgICAgICAgICAgIGFzc2VydChibG9jay0+Yl9pYWxsb2MgPiAwKTsKICAgICAgICAgICAgIGFzc2VydChibG9jay0+Yl9pdXNlZCA+IDApOwpAQCAtNTIzLDYgKzUzMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NvcGVfdHlwZSwgdm9pZCAqa2V5LCBpbnQgbGluZW5vKQogewogICAgIHN0cnVjdCBjb21waWxlcl91bml0ICp1OworICAgIGJhc2ljYmxvY2sgKmJsb2NrOwogCiAgICAgdSA9IChzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqKVB5T2JqZWN0X01hbGxvYyhzaXplb2YoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxlcl91bml0KSk7CkBAIC02MjAsOCArNjMxLDExIEBACiAgICAgYy0+dSA9IHU7CiAKICAgICBjLT5jX25lc3RsZXZlbCsrOwotICAgIGlmIChjb21waWxlcl91c2VfbmV3X2Jsb2NrKGMpID09IE5VTEwpCisKKyAgICBibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBpZiAoYmxvY2sgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgYy0+dS0+dV9jdXJibG9jayA9IGJsb2NrOwogCiAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSAhPSBDT01QSUxFUl9TQ09QRV9NT0RVTEUpIHsKICAgICAgICAgaWYgKCFjb21waWxlcl9zZXRfcXVhbG5hbWUoYykpCkBAIC03MzEsNiArNzQ1LDcgQEAKICAgICByZXR1cm4gMTsKIH0KIAorCiAvKiBBbGxvY2F0ZSBhIG5ldyBibG9jayBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byBpdC4KICAgIFJldHVybnMgTlVMTCBvbiBlcnJvci4KICovCkBAIC03NTUsMTYgKzc3MCw2IEBACiB9CiAKIHN0YXRpYyBiYXNpY2Jsb2NrICoKLWNvbXBpbGVyX3VzZV9uZXdfYmxvY2soc3RydWN0IGNvbXBpbGVyICpjKQotewotICAgIGJhc2ljYmxvY2sgKmJsb2NrID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOwotICAgIGlmIChibG9jayA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBjLT51LT51X2N1cmJsb2NrID0gYmxvY2s7Ci0gICAgcmV0dXJuIGJsb2NrOwotfQotCi1zdGF0aWMgYmFzaWNibG9jayAqCiBjb21waWxlcl9uZXh0X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqYykKIHsKICAgICBiYXNpY2Jsb2NrICpibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKQEAgLTgxMCw3ICs4MTUsNyBAQAogICAgICAgICBvbGRzaXplID0gYi0+Yl9pYWxsb2MgKiBzaXplb2Yoc3RydWN0IGluc3RyKTsKICAgICAgICAgbmV3c2l6ZSA9IG9sZHNpemUgPDwgMTsKIAotICAgICAgICBpZiAob2xkc2l6ZSA+IChQWV9TSVpFX01BWCA+PiAxKSkgeworICAgICAgICBpZiAob2xkc2l6ZSA+IChTSVpFX01BWCA+PiAxKSkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtOTM5LDYgKzk0NCw4IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgSU1QT1JUX1NUQVI6CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGNhc2UgU0VUVVBfQU5OT1RBVElPTlM6CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBZSUVMRF9WQUxVRToKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIFlJRUxEX0ZST006CkBAIC05NzYsMTYgKzk4MywxOSBAQAogICAgICAgICBjYXNlIEJVSUxEX1RVUExFOgogICAgICAgICBjYXNlIEJVSUxEX0xJU1Q6CiAgICAgICAgIGNhc2UgQlVJTERfU0VUOgorICAgICAgICBjYXNlIEJVSUxEX1NUUklORzoKICAgICAgICAgICAgIHJldHVybiAxLW9wYXJnOwogICAgICAgICBjYXNlIEJVSUxEX0xJU1RfVU5QQUNLOgogICAgICAgICBjYXNlIEJVSUxEX1RVUExFX1VOUEFDSzoKKyAgICAgICAgY2FzZSBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMOgogICAgICAgICBjYXNlIEJVSUxEX1NFVF9VTlBBQ0s6CiAgICAgICAgIGNhc2UgQlVJTERfTUFQX1VOUEFDSzoKLSAgICAgICAgICAgIHJldHVybiAxIC0gb3Bhcmc7CiAgICAgICAgIGNhc2UgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEw6Ci0gICAgICAgICAgICByZXR1cm4gMSAtIChvcGFyZyAmIDB4RkYpOworICAgICAgICAgICAgcmV0dXJuIDEgLSBvcGFyZzsKICAgICAgICAgY2FzZSBCVUlMRF9NQVA6CiAgICAgICAgICAgICByZXR1cm4gMSAtIDIqb3Bhcmc7CisgICAgICAgIGNhc2UgQlVJTERfQ09OU1RfS0VZX01BUDoKKyAgICAgICAgICAgIHJldHVybiAtb3Bhcmc7CiAgICAgICAgIGNhc2UgTE9BRF9BVFRSOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgQ09NUEFSRV9PUDoKQEAgLTEwMjMsMjIgKzEwMzMsMjAgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgY2FzZSBERUxFVEVfRkFTVDoKICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjYXNlIFNUT1JFX0FOTk9UQVRJT046CisgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgY2FzZSBSQUlTRV9WQVJBUkdTOgogICAgICAgICAgICAgcmV0dXJuIC1vcGFyZzsKLSNkZWZpbmUgTkFSR1MobykgKCgobykgJSAyNTYpICsgMiooKChvKSAvIDI1NikgJSAyNTYpKQogICAgICAgICBjYXNlIENBTExfRlVOQ1RJT046Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKTsKLSAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX1ZBUjoKKyAgICAgICAgICAgIHJldHVybiAtb3Bhcmc7CiAgICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9LVzoKLSAgICAgICAgICAgIHJldHVybiAtTkFSR1Mob3BhcmcpLTE7Ci0gICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9WQVJfS1c6Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKS0yOworICAgICAgICAgICAgcmV0dXJuIC1vcGFyZy0xOworICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fRVg6CisgICAgICAgICAgICByZXR1cm4gLSAoKG9wYXJnICYgMHgwMSkgIT0gMCkgLSAoKG9wYXJnICYgMHgwMikgIT0gMCk7CiAgICAgICAgIGNhc2UgTUFLRV9GVU5DVElPTjoKLSAgICAgICAgICAgIHJldHVybiAtMSAtTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOwotICAgICAgICBjYXNlIE1BS0VfQ0xPU1VSRToKLSAgICAgICAgICAgIHJldHVybiAtMiAtIE5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKLSN1bmRlZiBOQVJHUworICAgICAgICAgICAgcmV0dXJuIC0xIC0gKChvcGFyZyAmIDB4MDEpICE9IDApIC0gKChvcGFyZyAmIDB4MDIpICE9IDApIC0KKyAgICAgICAgICAgICAgICAoKG9wYXJnICYgMHgwNCkgIT0gMCkgLSAoKG9wYXJnICYgMHgwOCkgIT0gMCk7CiAgICAgICAgIGNhc2UgQlVJTERfU0xJQ0U6CiAgICAgICAgICAgICBpZiAob3BhcmcgPT0gMykKICAgICAgICAgICAgICAgICByZXR1cm4gLTI7CkBAIC0xMDY2LDYgKzEwNzQsMTAgQEAKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICBjYXNlIEdFVF9ZSUVMRF9GUk9NX0lURVI6CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBGT1JNQVRfVkFMVUU6CisgICAgICAgICAgICAvKiBJZiB0aGVyZSdzIGEgZm10X3NwZWMgb24gdGhlIHN0YWNrLCB3ZSBnbyBmcm9tIDItPjEsCisgICAgICAgICAgICAgICBlbHNlIDEtPjEuICovCisgICAgICAgICAgICByZXR1cm4gKG9wYXJnICYgRlZTX01BU0spID09IEZWU19IQVZFX1NQRUMgPyAtMSA6IDA7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gUFlfSU5WQUxJRF9TVEFDS19FRkZFQ1Q7CiAgICAgfQpAQCAtMTA4MiwxMyArMTA5NCwxNCBAQAogICAgIGJhc2ljYmxvY2sgKmI7CiAgICAgc3RydWN0IGluc3RyICppOwogICAgIGludCBvZmY7CisgICAgYXNzZXJ0KCFIQVNfQVJHKG9wY29kZSkpOwogICAgIG9mZiA9IGNvbXBpbGVyX25leHRfaW5zdHIoYywgYy0+dS0+dV9jdXJibG9jayk7CiAgICAgaWYgKG9mZiA8IDApCiAgICAgICAgIHJldHVybiAwOwogICAgIGIgPSBjLT51LT51X2N1cmJsb2NrOwogICAgIGkgPSAmYi0+Yl9pbnN0cltvZmZdOwogICAgIGktPmlfb3Bjb2RlID0gb3Bjb2RlOwotICAgIGktPmlfaGFzYXJnID0gMDsKKyAgICBpLT5pX29wYXJnID0gMDsKICAgICBpZiAob3Bjb2RlID09IFJFVFVSTl9WQUxVRSkKICAgICAgICAgYi0+Yl9yZXR1cm4gPSAxOwogICAgIGNvbXBpbGVyX3NldF9saW5lbm8oYywgb2ZmKTsKQEAgLTExNjUsMTAgKzExNzgsMTUgQEAKICAgICBzdHJ1Y3QgaW5zdHIgKmk7CiAgICAgaW50IG9mZjsKIAotICAgIC8qIEludGVnZXIgYXJndW1lbnRzIGFyZSBsaW1pdCB0byAxNi1iaXQuIFRoZXJlIGlzIGFuIGV4dGVuc2lvbiBmb3IgMzItYml0Ci0gICAgICAgaW50ZWdlciBhcmd1bWVudHMuICovCi0gICAgYXNzZXJ0KCgtMjE0NzQ4MzY0Ny0xKSA8PSBvcGFyZyk7Ci0gICAgYXNzZXJ0KG9wYXJnIDw9IDIxNDc0ODM2NDcpOworICAgIC8qIG9wYXJnIHZhbHVlIGlzIHVuc2lnbmVkLCBidXQgYSBzaWduZWQgQyBpbnQgaXMgdXN1YWxseSB1c2VkIHRvIHN0b3JlCisgICAgICAgaXQgaW4gdGhlIEMgY29kZSAobGlrZSBQeXRob24vY2V2YWwuYykuCisKKyAgICAgICBMaW1pdCB0byAzMi1iaXQgc2lnbmVkIEMgaW50IChyYXRoZXIgdGhhbiBJTlRfTUFYKSBmb3IgcG9ydGFiaWxpdHkuCisKKyAgICAgICBUaGUgYXJndW1lbnQgb2YgYSBjb25jcmV0ZSBieXRlY29kZSBpbnN0cnVjdGlvbiBpcyBsaW1pdGVkIHRvIDgtYml0LgorICAgICAgIEVYVEVOREVEX0FSRyBpcyB1c2VkIGZvciAxNiwgMjQsIGFuZCAzMi1iaXQgYXJndW1lbnRzLiAqLworICAgIGFzc2VydChIQVNfQVJHKG9wY29kZSkpOworICAgIGFzc2VydCgwIDw9IG9wYXJnICYmIG9wYXJnIDw9IDIxNDc0ODM2NDcpOwogCiAgICAgb2ZmID0gY29tcGlsZXJfbmV4dF9pbnN0cihjLCBjLT51LT51X2N1cmJsb2NrKTsKICAgICBpZiAob2ZmIDwgMCkKQEAgLTExNzYsNyArMTE5NCw2IEBACiAgICAgaSA9ICZjLT51LT51X2N1cmJsb2NrLT5iX2luc3RyW29mZl07CiAgICAgaS0+aV9vcGNvZGUgPSBvcGNvZGU7CiAgICAgaS0+aV9vcGFyZyA9IFB5X1NBRkVfRE9XTkNBU1Qob3BhcmcsIFB5X3NzaXplX3QsIGludCk7Ci0gICAgaS0+aV9oYXNhcmcgPSAxOwogICAgIGNvbXBpbGVyX3NldF9saW5lbm8oYywgb2ZmKTsKICAgICByZXR1cm4gMTsKIH0KQEAgLTExODcsNiArMTIwNCw3IEBACiAgICAgc3RydWN0IGluc3RyICppOwogICAgIGludCBvZmY7CiAKKyAgICBhc3NlcnQoSEFTX0FSRyhvcGNvZGUpKTsKICAgICBhc3NlcnQoYiAhPSBOVUxMKTsKICAgICBvZmYgPSBjb21waWxlcl9uZXh0X2luc3RyKGMsIGMtPnUtPnVfY3VyYmxvY2spOwogICAgIGlmIChvZmYgPCAwKQpAQCAtMTE5NCw3ICsxMjEyLDYgQEAKICAgICBpID0gJmMtPnUtPnVfY3VyYmxvY2stPmJfaW5zdHJbb2ZmXTsKICAgICBpLT5pX29wY29kZSA9IG9wY29kZTsKICAgICBpLT5pX3RhcmdldCA9IGI7Ci0gICAgaS0+aV9oYXNhcmcgPSAxOwogICAgIGlmIChhYnNvbHV0ZSkKICAgICAgICAgaS0+aV9qYWJzID0gMTsKICAgICBlbHNlCkBAIC0xMjAzLDIyICsxMjIwLDEyIEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLS8qIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIE5FV19CTE9DSyBhbmQgTkVYVF9CTE9DSyBpcyBzdWJ0bGUuICAoSSdkCi0gICBsaWtlIHRvIGZpbmQgYmV0dGVyIG5hbWVzLikgIE5FV19CTE9DSygpIGNyZWF0ZXMgYSBuZXcgYmxvY2sgYW5kIHNldHMKLSAgIGl0IGFzIHRoZSBjdXJyZW50IGJsb2NrLiAgTkVYVF9CTE9DSygpIGFsc28gY3JlYXRlcyBhbiBpbXBsaWNpdCBqdW1wCi0gICBmcm9tIHRoZSBjdXJyZW50IGJsb2NrIHRvIHRoZSBuZXcgYmxvY2suCisvKiBORVhUX0JMT0NLKCkgY3JlYXRlcyBhbiBpbXBsaWNpdCBqdW1wIGZyb20gdGhlIGN1cnJlbnQgYmxvY2sKKyAgIHRvIHRoZSBuZXcgYmxvY2suCisKKyAgIFRoZSByZXR1cm5zIGluc2lkZSB0aGlzIG1hY3JvIG1ha2UgaXQgaW1wb3NzaWJsZSB0byBkZWNyZWYgb2JqZWN0cworICAgY3JlYXRlZCBpbiB0aGUgbG9jYWwgZnVuY3Rpb24uIExvY2FsIG9iamVjdHMgc2hvdWxkIHVzZSB0aGUgYXJlbmEuCiAqLwotCi0vKiBUaGUgcmV0dXJucyBpbnNpZGUgdGhlc2UgbWFjcm9zIG1ha2UgaXQgaW1wb3NzaWJsZSB0byBkZWNyZWYgb2JqZWN0cwotICAgY3JlYXRlZCBpbiB0aGUgbG9jYWwgZnVuY3Rpb24uICBMb2NhbCBvYmplY3RzIHNob3VsZCB1c2UgdGhlIGFyZW5hLgotKi8KLQotCi0jZGVmaW5lIE5FV19CTE9DSyhDKSB7IFwKLSAgICBpZiAoY29tcGlsZXJfdXNlX25ld19ibG9jaygoQykpID09IE5VTEwpIFwKLSAgICAgICAgcmV0dXJuIDA7IFwKLX0KLQogI2RlZmluZSBORVhUX0JMT0NLKEMpIHsgXAogICAgIGlmIChjb21waWxlcl9uZXh0X2Jsb2NrKChDKSkgPT0gTlVMTCkgXAogICAgICAgICByZXR1cm4gMDsgXApAQCAtMTI0MSw2ICsxMjQ4LDE1IEBACiAgICAgICAgIHJldHVybiAwOyBcCiB9CiAKKy8qIFNhbWUgYXMgQURET1BfTywgYnV0IHN0ZWFscyBhIHJlZmVyZW5jZS4gKi8KKyNkZWZpbmUgQURET1BfTihDLCBPUCwgTywgVFlQRSkgeyBcCisgICAgaWYgKCFjb21waWxlcl9hZGRvcF9vKChDKSwgKE9QKSwgKEMpLT51LT51XyAjIyBUWVBFLCAoTykpKSB7IFwKKyAgICAgICAgUHlfREVDUkVGKChPKSk7IFwKKyAgICAgICAgcmV0dXJuIDA7IFwKKyAgICB9IFwKKyAgICBQeV9ERUNSRUYoKE8pKTsgXAorfQorCiAjZGVmaW5lIEFERE9QX05BTUUoQywgT1AsIE8sIFRZUEUpIHsgXAogICAgIGlmICghY29tcGlsZXJfYWRkb3BfbmFtZSgoQyksIChPUCksIChDKS0+dS0+dV8gIyMgVFlQRSwgKE8pKSkgXAogICAgICAgICByZXR1cm4gMDsgXApAQCAtMTMwOSwxMCArMTMyNSwxMTAgQEAKIHsKICAgICBpZiAocy0+a2luZCAhPSBFeHByX2tpbmQpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzLT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQ7CisgICAgaWYgKHMtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHMtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBDb25zdGFudF9raW5kKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0NoZWNrRXhhY3Qocy0+di5FeHByLnZhbHVlLT52LkNvbnN0YW50LnZhbHVlKTsKKyAgICByZXR1cm4gMDsKIH0KIAotLyogQ29tcGlsZSBhIHNlcXVlbmNlIG9mIHN0YXRlbWVudHMsIGNoZWNraW5nIGZvciBhIGRvY3N0cmluZy4gKi8KK3N0YXRpYyBpbnQKK2lzX2NvbnN0KGV4cHJfdHkgZSkKK3sKKyAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgY2FzZSBOdW1fa2luZDoKKyAgICBjYXNlIFN0cl9raW5kOgorICAgIGNhc2UgQnl0ZXNfa2luZDoKKyAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CisgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X2NvbnN0X3ZhbHVlKGV4cHJfdHkgZSkKK3sKKyAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52LkNvbnN0YW50LnZhbHVlOworICAgIGNhc2UgTnVtX2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52Lk51bS5uOworICAgIGNhc2UgU3RyX2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52LlN0ci5zOworICAgIGNhc2UgQnl0ZXNfa2luZDoKKyAgICAgICAgcmV0dXJuIGUtPnYuQnl0ZXMuczsKKyAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CisgICAgICAgIHJldHVybiBQeV9FbGxpcHNpczsKKyAgICBjYXNlIE5hbWVDb25zdGFudF9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5OYW1lQ29uc3RhbnQudmFsdWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KCFpc19jb25zdChlKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworLyogU2VhcmNoIGlmIHZhcmlhYmxlIGFubm90YXRpb25zIGFyZSBwcmVzZW50IHN0YXRpY2FsbHkgaW4gYSBibG9jay4gKi8KKworc3RhdGljIGludAorZmluZF9hbm4oYXNkbF9zZXEgKnN0bXRzKQoreworICAgIGludCBpLCBqLCByZXMgPSAwOworICAgIHN0bXRfdHkgc3Q7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHN0bXRzKTsgaSsrKSB7CisgICAgICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHN0bXRzLCBpKTsKKyAgICAgICAgc3dpdGNoIChzdC0+a2luZCkgeworICAgICAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgRm9yX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5Gb3IuYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LkZvci5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQXN5bmNGb3Jfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LkFzeW5jRm9yLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5Bc3luY0Zvci5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2hpbGVfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LldoaWxlLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5XaGlsZS5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSWZfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LklmLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5JZi5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2l0aF9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuV2l0aC5ib2R5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFzeW5jV2l0aF9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuQXN5bmNXaXRoLmJvZHkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJ5X2tpbmQ6CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgYXNkbF9zZXFfTEVOKHN0LT52LlRyeS5oYW5kbGVycyk7IGorKykgeworICAgICAgICAgICAgICAgIGV4Y2VwdGhhbmRsZXJfdHkgaGFuZGxlciA9IChleGNlcHRoYW5kbGVyX3R5KWFzZGxfc2VxX0dFVCgKKyAgICAgICAgICAgICAgICAgICAgc3QtPnYuVHJ5LmhhbmRsZXJzLCBqKTsKKyAgICAgICAgICAgICAgICBpZiAoZmluZF9hbm4oaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLmJvZHkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LlRyeS5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuVHJ5LmZpbmFsYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LlRyeS5vcmVsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXMgPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChyZXMpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qIENvbXBpbGUgYSBzZXF1ZW5jZSBvZiBzdGF0ZW1lbnRzLCBjaGVja2luZyBmb3IgYSBkb2NzdHJpbmcKKyAgIGFuZCBmb3IgYW5ub3RhdGlvbnMuICovCiAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2JvZHkoc3RydWN0IGNvbXBpbGVyICpjLCBhc2RsX3NlcSAqc3RtdHMpCkBAIC0xMzIwLDYgKzE0MzYsMTkgQEAKICAgICBpbnQgaSA9IDA7CiAgICAgc3RtdF90eSBzdDsKIAorICAgIC8qIFNldCBjdXJyZW50IGxpbmUgbnVtYmVyIHRvIHRoZSBsaW5lIG51bWJlciBvZiBmaXJzdCBzdGF0ZW1lbnQuCisgICAgICAgVGhpcyB3YXkgbGluZSBudW1iZXIgZm9yIFNFVFVQX0FOTk9UQVRJT05TIHdpbGwgYWx3YXlzCisgICAgICAgY29pbmNpZGUgd2l0aCB0aGUgbGluZSBudW1iZXIgb2YgZmlyc3QgInJlYWwiIHN0YXRlbWVudCBpbiBtb2R1bGUuCisgICAgICAgSWYgYm9keSBpcyBlbXB5LCB0aGVuIGxpbmVubyB3aWxsIGJlIHNldCBsYXRlciBpbiBhc3NlbWJsZS4gKi8KKyAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX01PRFVMRSAmJgorICAgICAgICAhYy0+dS0+dV9saW5lbm8gJiYgYXNkbF9zZXFfTEVOKHN0bXRzKSkgeworICAgICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzdG10cywgMCk7CisgICAgICAgIGMtPnUtPnVfbGluZW5vID0gc3QtPmxpbmVubzsKKyAgICB9CisgICAgLyogRXZlcnkgYW5ub3RhdGVkIGNsYXNzIGFuZCBtb2R1bGUgc2hvdWxkIGhhdmUgX19hbm5vdGF0aW9uc19fLiAqLworICAgIGlmIChmaW5kX2FubihzdG10cykpIHsKKyAgICAgICAgQURET1AoYywgU0VUVVBfQU5OT1RBVElPTlMpOworICAgIH0KICAgICBpZiAoIWFzZGxfc2VxX0xFTihzdG10cykpCiAgICAgICAgIHJldHVybiAxOwogICAgIHN0ID0gKHN0bXRfdHkpYXNkbF9zZXFfR0VUKHN0bXRzLCAwKTsKQEAgLTEzNTcsNiArMTQ4Niw5IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRlcmFjdGl2ZV9raW5kOgorICAgICAgICBpZiAoZmluZF9hbm4obW9kLT52LkludGVyYWN0aXZlLmJvZHkpKSB7CisgICAgICAgICAgICBBRERPUChjLCBTRVRVUF9BTk5PVEFUSU9OUyk7CisgICAgICAgIH0KICAgICAgICAgYy0+Y19pbnRlcmFjdGl2ZSA9IDE7CiAgICAgICAgIFZJU0lUX1NFUV9JTl9TQ09QRShjLCBzdG10LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2QtPnYuSW50ZXJhY3RpdmUuYm9keSk7CkBAIC0xNDI2LDUzICsxNTU4LDUwIEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBpbGVyX21ha2VfY2xvc3VyZShzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgYXJncywgUHlPYmplY3QgKnF1YWxuYW1lKQorY29tcGlsZXJfbWFrZV9jbG9zdXJlKHN0cnVjdCBjb21waWxlciAqYywgUHlDb2RlT2JqZWN0ICpjbywgUHlfc3NpemVfdCBmbGFncywgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIFB5X3NzaXplX3QgaSwgZnJlZSA9IFB5Q29kZV9HZXROdW1GcmVlKGNvKTsKICAgICBpZiAocXVhbG5hbWUgPT0gTlVMTCkKICAgICAgICAgcXVhbG5hbWUgPSBjby0+Y29fbmFtZTsKIAotICAgIGlmIChmcmVlID09IDApIHsKLSAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCAoUHlPYmplY3QqKWNvLCBjb25zdHMpOwotICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHF1YWxuYW1lLCBjb25zdHMpOwotICAgICAgICBBRERPUF9JKGMsIE1BS0VfRlVOQ1RJT04sIGFyZ3MpOwotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGZyZWU7ICsraSkgewotICAgICAgICAvKiBCeXBhc3MgY29tX2FkZG9wX3Zhcm5hbWUgYmVjYXVzZSBpdCB3aWxsIGdlbmVyYXRlCi0gICAgICAgICAgIExPQURfREVSRUYgYnV0IExPQURfQ0xPU1VSRSBpcyBuZWVkZWQuCi0gICAgICAgICovCi0gICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fZnJlZXZhcnMsIGkpOwotICAgICAgICBpbnQgYXJnLCByZWZ0eXBlOworICAgIGlmIChmcmVlKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmcmVlOyArK2kpIHsKKyAgICAgICAgICAgIC8qIEJ5cGFzcyBjb21fYWRkb3BfdmFybmFtZSBiZWNhdXNlIGl0IHdpbGwgZ2VuZXJhdGUKKyAgICAgICAgICAgICAgIExPQURfREVSRUYgYnV0IExPQURfQ0xPU1VSRSBpcyBuZWVkZWQuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb19mcmVldmFycywgaSk7CisgICAgICAgICAgICBpbnQgYXJnLCByZWZ0eXBlOwogCi0gICAgICAgIC8qIFNwZWNpYWwgY2FzZTogSWYgYSBjbGFzcyBjb250YWlucyBhIG1ldGhvZCB3aXRoIGEKLSAgICAgICAgICAgZnJlZSB2YXJpYWJsZSB0aGF0IGhhcyB0aGUgc2FtZSBuYW1lIGFzIGEgbWV0aG9kLAotICAgICAgICAgICB0aGUgbmFtZSB3aWxsIGJlIGNvbnNpZGVyZWQgZnJlZSAqYW5kKiBsb2NhbCBpbiB0aGUKLSAgICAgICAgICAgY2xhc3MuICBJdCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgY2xvc3VyZSwgYXMKLSAgICAgICAgICAgd2VsbCBhcyBieSB0aGUgbm9ybWFsIG5hbWUgbG9vb2t1cCBsb2dpYy4KLSAgICAgICAgKi8KLSAgICAgICAgcmVmdHlwZSA9IGdldF9yZWZfdHlwZShjLCBuYW1lKTsKLSAgICAgICAgaWYgKHJlZnR5cGUgPT0gQ0VMTCkKLSAgICAgICAgICAgIGFyZyA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9jZWxsdmFycywgbmFtZSk7Ci0gICAgICAgIGVsc2UgLyogKHJlZnR5cGUgPT0gRlJFRSkgKi8KLSAgICAgICAgICAgIGFyZyA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9mcmVldmFycywgbmFtZSk7Ci0gICAgICAgIGlmIChhcmcgPT0gLTEpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICJsb29rdXAgJXMgaW4gJXMgJWQgJWRcbiIKLSAgICAgICAgICAgICAgICAiZnJlZXZhcnMgb2YgJXM6ICVzXG4iLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihuYW1lKSksCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjLT51LT51X25hbWUpLAotICAgICAgICAgICAgICAgIHJlZnR5cGUsIGFyZywKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KGNvLT5jb19uYW1lKSwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIoY28tPmNvX2ZyZWV2YXJzKSkpOwotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY29tcGlsZXJfbWFrZV9jbG9zdXJlKCkiKTsKKyAgICAgICAgICAgIC8qIFNwZWNpYWwgY2FzZTogSWYgYSBjbGFzcyBjb250YWlucyBhIG1ldGhvZCB3aXRoIGEKKyAgICAgICAgICAgICAgIGZyZWUgdmFyaWFibGUgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG1ldGhvZCwKKyAgICAgICAgICAgICAgIHRoZSBuYW1lIHdpbGwgYmUgY29uc2lkZXJlZCBmcmVlICphbmQqIGxvY2FsIGluIHRoZQorICAgICAgICAgICAgICAgY2xhc3MuICBJdCBzaG91bGQgYmUgaGFuZGxlZCBieSB0aGUgY2xvc3VyZSwgYXMKKyAgICAgICAgICAgICAgIHdlbGwgYXMgYnkgdGhlIG5vcm1hbCBuYW1lIGxvb29rdXAgbG9naWMuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgcmVmdHlwZSA9IGdldF9yZWZfdHlwZShjLCBuYW1lKTsKKyAgICAgICAgICAgIGlmIChyZWZ0eXBlID09IENFTEwpCisgICAgICAgICAgICAgICAgYXJnID0gY29tcGlsZXJfbG9va3VwX2FyZyhjLT51LT51X2NlbGx2YXJzLCBuYW1lKTsKKyAgICAgICAgICAgIGVsc2UgLyogKHJlZnR5cGUgPT0gRlJFRSkgKi8KKyAgICAgICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfZnJlZXZhcnMsIG5hbWUpOworICAgICAgICAgICAgaWYgKGFyZyA9PSAtMSkgeworICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAibG9va3VwICVzIGluICVzICVkICVkXG4iCisgICAgICAgICAgICAgICAgICAgICJmcmVldmFycyBvZiAlczogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihuYW1lKSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoYy0+dS0+dV9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgcmVmdHlwZSwgYXJnLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KGNvLT5jb19uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKGNvLT5jb19mcmVldmFycykpKTsKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjb21waWxlcl9tYWtlX2Nsb3N1cmUoKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQURET1BfSShjLCBMT0FEX0NMT1NVUkUsIGFyZyk7CiAgICAgICAgIH0KLSAgICAgICAgQURET1BfSShjLCBMT0FEX0NMT1NVUkUsIGFyZyk7CisgICAgICAgIGZsYWdzIHw9IDB4MDg7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIGZyZWUpOwogICAgIH0KLSAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBmcmVlKTsKICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIChQeU9iamVjdCopY28sIGNvbnN0cyk7CiAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBxdWFsbmFtZSwgY29uc3RzKTsKLSAgICBBRERPUF9JKGMsIE1BS0VfQ0xPU1VSRSwgYXJncyk7CisgICAgQURET1BfSShjLCBNQUtFX0ZVTkNUSU9OLCBmbGFncyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTE0OTQsMjYgKzE2MjMsNjAgQEAKIGNvbXBpbGVyX3Zpc2l0X2t3b25seWRlZmF1bHRzKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmt3b25seWFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa3dfZGVmYXVsdHMpCiB7Ci0gICAgLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGVmYXVsdHMgKyAxLgotICAgICAgIFJldHVybnMgMCBvbiBlcnJvci4KLSAgICAgKi8KLSAgICBpbnQgaSwgZGVmYXVsdF9jb3VudCA9IDA7CisgICAgLyogUHVzaCBhIGRpY3Qgb2Yga2V5d29yZC1vbmx5IGRlZmF1bHQgdmFsdWVzLgorCisgICAgICAgUmV0dXJuIDAgb24gZXJyb3IsIC0xIGlmIG5vIGRpY3QgcHVzaGVkLCAxIGlmIGEgZGljdCBpcyBwdXNoZWQuCisgICAgICAgKi8KKyAgICBpbnQgaTsKKyAgICBQeU9iamVjdCAqa2V5cyA9IE5VTEw7CisKICAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGt3b25seWFyZ3MpOyBpKyspIHsKICAgICAgICAgYXJnX3R5IGFyZyA9IGFzZGxfc2VxX0dFVChrd29ubHlhcmdzLCBpKTsKICAgICAgICAgZXhwcl90eSBkZWZhdWx0XyA9IGFzZGxfc2VxX0dFVChrd19kZWZhdWx0cywgaSk7CiAgICAgICAgIGlmIChkZWZhdWx0XykgewogICAgICAgICAgICAgUHlPYmplY3QgKm1hbmdsZWQgPSBfUHlfTWFuZ2xlKGMtPnUtPnVfcHJpdmF0ZSwgYXJnLT5hcmcpOwotICAgICAgICAgICAgaWYgKCFtYW5nbGVkKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBtYW5nbGVkLCBjb25zdHMpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1hbmdsZWQpOwotICAgICAgICAgICAgaWYgKCFjb21waWxlcl92aXNpdF9leHByKGMsIGRlZmF1bHRfKSkgewotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgaWYgKCFtYW5nbGVkKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlZmF1bHRfY291bnQrKzsKKyAgICAgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBrZXlzID0gUHlMaXN0X05ldygxKTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYW5nbGVkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShrZXlzLCAwLCBtYW5nbGVkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCByZXMgPSBQeUxpc3RfQXBwZW5kKGtleXMsIG1hbmdsZWQpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtYW5nbGVkKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjb21waWxlcl92aXNpdF9leHByKGMsIGRlZmF1bHRfKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRfY291bnQgKyAxOworICAgIGlmIChrZXlzICE9IE5VTEwpIHsKKyAgICAgICAgUHlfc3NpemVfdCBkZWZhdWx0X2NvdW50ID0gUHlMaXN0X0dFVF9TSVpFKGtleXMpOworICAgICAgICBQeU9iamVjdCAqa2V5c190dXBsZSA9IFB5TGlzdF9Bc1R1cGxlKGtleXMpOworICAgICAgICBQeV9ERUNSRUYoa2V5cyk7CisgICAgICAgIGlmIChrZXlzX3R1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5c190dXBsZSwgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBkZWZhdWx0X2NvdW50KTsKKyAgICAgICAgYXNzZXJ0KGRlZmF1bHRfY291bnQgPiAwKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CkBAIC0xNTU2LDExICsxNzE5LDEwIEBACiBjb21waWxlcl92aXNpdF9hbm5vdGF0aW9ucyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFyZ3VtZW50c190eSBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSByZXR1cm5zKQogewotICAgIC8qIFB1c2ggYXJnIGFubm90YXRpb25zIGFuZCBhIGxpc3Qgb2YgdGhlIGFyZ3VtZW50IG5hbWVzLiBSZXR1cm4gdGhlICMKLSAgICAgICBvZiBpdGVtcyBwdXNoZWQgKyAxLiBUaGUgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBvdXQtb2Ytb3JkZXIgd3J0IHRoZQotICAgICAgIHNvdXJjZSBjb2RlLgorICAgIC8qIFB1c2ggYXJnIGFubm90YXRpb24gZGljdC4KKyAgICAgICBUaGUgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBvdXQtb2Ytb3JkZXIgd3J0IHRoZSBzb3VyY2UgY29kZS4KIAotICAgICAgIE1vcmUgdGhhbiAyXjE2LTEgYW5ub3RhdGlvbnMgaXMgYSBTeW50YXhFcnJvci4gUmV0dXJucyAwIG9uIGVycm9yLgorICAgICAgIFJldHVybiAwIG9uIGVycm9yLCAtMSBpZiBubyBkaWN0IHB1c2hlZCwgMSBpZiBhIGRpY3QgaXMgcHVzaGVkLgogICAgICAgICovCiAgICAgc3RhdGljIGlkZW50aWZpZXIgcmV0dXJuX3N0cjsKICAgICBQeU9iamVjdCAqbmFtZXM7CkBAIC0xNTkyLDMyICsxNzU0LDIwIEBACiAgICAgfQogCiAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKG5hbWVzKTsKLSAgICBpZiAobGVuID4gNjU1MzQpIHsKLSAgICAgICAgLyogbGVuIG11c3QgZml0IGluIDE2IGJpdHMsIGFuZCBsZW4gaXMgaW5jcmVtZW50ZWQgYmVsb3cgKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5bnRheEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRvbyBtYW55IGFubm90YXRpb25zIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQogICAgIGlmIChsZW4pIHsKLSAgICAgICAgLyogY29udmVydCBuYW1lcyB0byBhIHR1cGxlIGFuZCBwbGFjZSBvbiBzdGFjayAqLwotICAgICAgICBQeU9iamVjdCAqZWx0OwotICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIFB5T2JqZWN0ICpzID0gUHlUdXBsZV9OZXcobGVuKTsKLSAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBlbHQgPSBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKGVsdCk7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHMsIGksIGVsdCk7CisgICAgICAgIFB5T2JqZWN0ICprZXl0dXBsZSA9IFB5TGlzdF9Bc1R1cGxlKG5hbWVzKTsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKyAgICAgICAgaWYgKGtleXR1cGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcywgY29uc3RzKTsKLSAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICBsZW4rKzsgLyogaW5jbHVkZSB0aGUganVzdC1wdXNoZWQgdHVwbGUgKi8KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBrZXl0dXBsZSwgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBsZW4pOworICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgUHlfREVDUkVGKG5hbWVzKTsKLQotICAgIC8qIFdlIGp1c3QgY2hlY2tlZCB0aGF0IGxlbiA8PSA2NTUzNSwgc2VlIGFib3ZlICovCi0gICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QobGVuICsgMSwgUHlfc3NpemVfdCwgaW50KTsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogZXJyb3I6CiAgICAgUHlfREVDUkVGKG5hbWVzKTsKQEAgLTE2MjUsNiArMTc3NSwzNiBAQAogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl92aXNpdF9kZWZhdWx0cyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFyZ3VtZW50c190eSBhcmdzKQoreworICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzLT5kZWZhdWx0cyk7CisgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKSk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citjb21waWxlcl9kZWZhdWx0X2FyZ3VtZW50cyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFyZ3VtZW50c190eSBhcmdzKQoreworICAgIFB5X3NzaXplX3QgZnVuY2ZsYWdzID0gMDsKKyAgICBpZiAoYXJncy0+ZGVmYXVsdHMgJiYgYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKSA+IDApIHsKKyAgICAgICAgaWYgKCFjb21waWxlcl92aXNpdF9kZWZhdWx0cyhjLCBhcmdzKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgZnVuY2ZsYWdzIHw9IDB4MDE7CisgICAgfQorICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7CisgICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOworICAgICAgICBpZiAocmVzID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChyZXMgPiAwKSB7CisgICAgICAgICAgICBmdW5jZmxhZ3MgfD0gMHgwMjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZnVuY2ZsYWdzOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9mdW5jdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcywgaW50IGlzX2FzeW5jKQogewogICAgIFB5Q29kZU9iamVjdCAqY287CkBAIC0xNjM1LDEyICsxODE1LDExIEBACiAgICAgYXNkbF9zZXEqIGRlY29zOwogICAgIGFzZGxfc2VxICpib2R5OwogICAgIHN0bXRfdHkgc3Q7Ci0gICAgUHlfc3NpemVfdCBpLCBuLCBhcmdsZW5ndGg7Ci0gICAgaW50IGRvY3N0cmluZywga3dfZGVmYXVsdF9jb3VudCA9IDA7Ci0gICAgaW50IG51bV9hbm5vdGF0aW9uczsKKyAgICBQeV9zc2l6ZV90IGksIG4sIGZ1bmNmbGFnczsKKyAgICBpbnQgZG9jc3RyaW5nOworICAgIGludCBhbm5vdGF0aW9uczsKICAgICBpbnQgc2NvcGVfdHlwZTsKIAotCiAgICAgaWYgKGlzX2FzeW5jKSB7CiAgICAgICAgIGFzc2VydChzLT5raW5kID09IEFzeW5jRnVuY3Rpb25EZWZfa2luZCk7CiAKQEAgLTE2NjUsMzAgKzE4NDQsMzIgQEAKIAogICAgIGlmICghY29tcGlsZXJfZGVjb3JhdG9ycyhjLCBkZWNvcykpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhcmdzLT5kZWZhdWx0cykKLSAgICAgICAgVklTSVRfU0VRKGMsIGV4cHIsIGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBpZiAoYXJncy0+a3dvbmx5YXJncykgewotICAgICAgICBpbnQgcmVzID0gY29tcGlsZXJfdmlzaXRfa3dvbmx5ZGVmYXVsdHMoYywgYXJncy0+a3dvbmx5YXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmt3X2RlZmF1bHRzKTsKLSAgICAgICAgaWYgKHJlcyA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGt3X2RlZmF1bHRfY291bnQgPSByZXMgLSAxOwotICAgIH0KLSAgICBudW1fYW5ub3RhdGlvbnMgPSBjb21waWxlcl92aXNpdF9hbm5vdGF0aW9ucyhjLCBhcmdzLCByZXR1cm5zKTsKLSAgICBpZiAobnVtX2Fubm90YXRpb25zID09IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIG51bV9hbm5vdGF0aW9ucy0tOwotICAgIGFzc2VydCgobnVtX2Fubm90YXRpb25zICYgMHhGRkZGKSA9PSBudW1fYW5ub3RhdGlvbnMpOwogCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVfdHlwZSwgKHZvaWQgKilzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vKSkKKyAgICBmdW5jZmxhZ3MgPSBjb21waWxlcl9kZWZhdWx0X2FyZ3VtZW50cyhjLCBhcmdzKTsKKyAgICBpZiAoZnVuY2ZsYWdzID09IC0xKSB7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGFubm90YXRpb25zID0gY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoYywgYXJncywgcmV0dXJucyk7CisgICAgaWYgKGFubm90YXRpb25zID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgaWYgKGFubm90YXRpb25zID4gMCkgeworICAgICAgICBmdW5jZmxhZ3MgfD0gMHgwNDsKKyAgICB9CisKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIHNjb3BlX3R5cGUsICh2b2lkICopcywgcy0+bGluZW5vKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAKICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChib2R5LCAwKTsKICAgICBkb2NzdHJpbmcgPSBjb21waWxlcl9pc2RvY3N0cmluZyhzdCk7Ci0gICAgaWYgKGRvY3N0cmluZyAmJiBjLT5jX29wdGltaXplIDwgMikKLSAgICAgICAgZmlyc3RfY29uc3QgPSBzdC0+di5FeHByLnZhbHVlLT52LlN0ci5zOworICAgIGlmIChkb2NzdHJpbmcgJiYgYy0+Y19vcHRpbWl6ZSA8IDIpIHsKKyAgICAgICAgaWYgKHN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gQ29uc3RhbnRfa2luZCkKKyAgICAgICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5Db25zdGFudC52YWx1ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmlyc3RfY29uc3QgPSBzdC0+di5FeHByLnZhbHVlLT52LlN0ci5zOworICAgIH0KICAgICBpZiAoY29tcGlsZXJfYWRkX28oYywgYy0+dS0+dV9jb25zdHMsIGZpcnN0X2NvbnN0KSA8IDApICAgICAgewogICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE3MTIsMTIgKzE4OTMsNyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBhcmdsZW5ndGggPSBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpOwotICAgIGFyZ2xlbmd0aCB8PSBrd19kZWZhdWx0X2NvdW50IDw8IDg7Ci0gICAgYXJnbGVuZ3RoIHw9IG51bV9hbm5vdGF0aW9ucyA8PCAxNjsKLSAgICBpZiAoaXNfYXN5bmMpCi0gICAgICAgIGNvLT5jb19mbGFncyB8PSBDT19DT1JPVVRJTkU7Ci0gICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgsIHF1YWxuYW1lKTsKKyAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGZ1bmNmbGFncywgcXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIApAQCAtMTc5Miw3ICsxOTY4LDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX25lZWRzX2NsYXNzX2Nsb3N1cmUpIHsKLSAgICAgICAgICAgIC8qIHJldHVybiB0aGUgKGVtcHR5KSBfX2NsYXNzX18gY2VsbCAqLworICAgICAgICAgICAgLyogc3RvcmUgX19jbGFzc2NlbGxfXyBpbnRvIGNsYXNzIG5hbWVzcGFjZSAqLwogICAgICAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fY2xhc3NfXyIpOwogICAgICAgICAgICAgaWYgKHN0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKQEAgLTE4MDUsMTUgKzE5ODEsMjAgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGFzc2VydChpID09IDApOwotICAgICAgICAgICAgLyogUmV0dXJuIHRoZSBjZWxsIHdoZXJlIHRvIHN0b3JlIF9fY2xhc3NfXyAqLworCiAgICAgICAgICAgICBBRERPUF9JKGMsIExPQURfQ0xPU1VSRSwgaSk7CisgICAgICAgICAgICBzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19jbGFzc2NlbGxfXyIpOworICAgICAgICAgICAgaWYgKCFzdHIgfHwgIWNvbXBpbGVyX25hbWVvcChjLCBzdHIsIFN0b3JlKSkgeworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKKyAgICAgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBUaGlzIGhhcHBlbnMgd2hlbiBub2JvZHkgcmVmZXJlbmNlcyB0aGUgY2VsbC4gKi8KICAgICAgICAgICAgIGFzc2VydChQeURpY3RfU2l6ZShjLT51LT51X2NlbGx2YXJzKSA9PSAwKTsKLSAgICAgICAgICAgIC8qIFRoaXMgaGFwcGVucyB3aGVuIG5vYm9keSByZWZlcmVuY2VzIHRoZSBjZWxsLiBSZXR1cm4gTm9uZS4gKi8KLSAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKICAgICAgICAgfQotICAgICAgICBBRERPUF9JTl9TQ09QRShjLCBSRVRVUk5fVkFMVUUpOwogICAgICAgICAvKiBjcmVhdGUgdGhlIGNvZGUgb2JqZWN0ICovCiAgICAgICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CiAgICAgfQpAQCAtMTg3Nyw4ICsyMDU4LDcgQEAKICAgICBQeUNvZGVPYmplY3QgKmNvOwogICAgIFB5T2JqZWN0ICpxdWFsbmFtZTsKICAgICBzdGF0aWMgaWRlbnRpZmllciBuYW1lOwotICAgIGludCBrd19kZWZhdWx0X2NvdW50ID0gMDsKLSAgICBQeV9zc2l6ZV90IGFyZ2xlbmd0aDsKKyAgICBQeV9zc2l6ZV90IGZ1bmNmbGFnczsKICAgICBhcmd1bWVudHNfdHkgYXJncyA9IGUtPnYuTGFtYmRhLmFyZ3M7CiAgICAgYXNzZXJ0KGUtPmtpbmQgPT0gTGFtYmRhX2tpbmQpOwogCkBAIC0xODg4LDE0ICsyMDY4LDExIEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBpZiAoYXJncy0+ZGVmYXVsdHMpCi0gICAgICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzLT5kZWZhdWx0cyk7Ci0gICAgaWYgKGFyZ3MtPmt3b25seWFyZ3MpIHsKLSAgICAgICAgaW50IHJlcyA9IGNvbXBpbGVyX3Zpc2l0X2t3b25seWRlZmF1bHRzKGMsIGFyZ3MtPmt3b25seWFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5rd19kZWZhdWx0cyk7Ci0gICAgICAgIGlmIChyZXMgPT0gMCkgcmV0dXJuIDA7Ci0gICAgICAgIGt3X2RlZmF1bHRfY291bnQgPSByZXMgLSAxOworICAgIGZ1bmNmbGFncyA9IGNvbXBpbGVyX2RlZmF1bHRfYXJndW1lbnRzKGMsIGFyZ3MpOworICAgIGlmIChmdW5jZmxhZ3MgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCiAgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBDT01QSUxFUl9TQ09QRV9MQU1CREEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWUsIGUtPmxpbmVubykpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTkyMSw5ICsyMDk4LDcgQEAKICAgICBpZiAoY28gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBhcmdsZW5ndGggPSBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpOwotICAgIGFyZ2xlbmd0aCB8PSBrd19kZWZhdWx0X2NvdW50IDw8IDg7Ci0gICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgsIHF1YWxuYW1lKTsKKyAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGZ1bmNmbGFncywgcXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIApAQCAtMjAwMiwxNCArMjE3NywxNCBAQAogc3RhdGljIGludAogY29tcGlsZXJfYXN5bmNfZm9yKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqc3RvcGl0ZXJfZXJyb3IgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKFN0b3BBc3luY0l0ZXJhdGlvbik7CisKICAgICBiYXNpY2Jsb2NrICp0cnksICpleGNlcHQsICplbmQsICphZnRlcl90cnksICp0cnlfY2xlYW51cCwKICAgICAgICAgICAgICAgICphZnRlcl9sb29wLCAqYWZ0ZXJfbG9vcF9lbHNlOwogCi0gICAgaWYgKHN0b3BpdGVyX2Vycm9yID09IE5VTEwpIHsKLSAgICAgICAgc3RvcGl0ZXJfZXJyb3IgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiU3RvcEFzeW5jSXRlcmF0aW9uIik7Ci0gICAgICAgIGlmIChzdG9waXRlcl9lcnJvciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgUHlPYmplY3QgKnN0b3BfYWl0ZXJfZXJyb3IgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9TdG9wQXN5bmNJdGVyYXRpb24pOworICAgIGlmIChzdG9wX2FpdGVyX2Vycm9yID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgdHJ5ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOwpAQCAtMjA1MSw3ICsyMjI2LDcgQEAKIAogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGV4Y2VwdCk7CiAgICAgQURET1AoYywgRFVQX1RPUCk7Ci0gICAgQURET1BfTyhjLCBMT0FEX0dMT0JBTCwgc3RvcGl0ZXJfZXJyb3IsIG5hbWVzKTsKKyAgICBBRERPUF9PKGMsIExPQURfR0xPQkFMLCBzdG9wX2FpdGVyX2Vycm9yLCBuYW1lcyk7CiAgICAgQURET1BfSShjLCBDT01QQVJFX09QLCBQeUNtcF9FWENfTUFUQ0gpOwogICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIHRyeV9jbGVhbnVwKTsKIApAQCAtMjU5OSw2ICsyNzc0LDI1IEBACiB9CiAKIHN0YXRpYyBpbnQKK2NvbXBpbGVyX3Zpc2l0X3N0bXRfZXhwcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgdmFsdWUpCit7CisgICAgaWYgKGMtPmNfaW50ZXJhY3RpdmUgJiYgYy0+Y19uZXN0bGV2ZWwgPD0gMSkgeworICAgICAgICBWSVNJVChjLCBleHByLCB2YWx1ZSk7CisgICAgICAgIEFERE9QKGMsIFBSSU5UX0VYUFIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoaXNfY29uc3QodmFsdWUpKSB7CisgICAgICAgIC8qIGlnbm9yZSBjb25zdGFudCBzdGF0ZW1lbnQgKi8KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgVklTSVQoYywgZXhwciwgdmFsdWUpOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl92aXNpdF9zdG10KHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQogewogICAgIFB5X3NzaXplX3QgaSwgbjsKQEAgLTI2MTcsNiArMjgxMSw5IEBACiAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX3R5cGUgIT0gRnVuY3Rpb25CbG9jaykKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3JldHVybicgb3V0c2lkZSBmdW5jdGlvbiIpOwogICAgICAgICBpZiAocy0+di5SZXR1cm4udmFsdWUpIHsKKyAgICAgICAgICAgIGlmIChjLT51LT51X3N0ZS0+c3RlX2Nvcm91dGluZSAmJiBjLT51LT51X3N0ZS0+c3RlX2dlbmVyYXRvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIGMsICIncmV0dXJuJyB3aXRoIHZhbHVlIGluIGFzeW5jIGdlbmVyYXRvciIpOwogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5SZXR1cm4udmFsdWUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTI2MzgsNiArMjgzNSw4IEBACiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQXVnQXNzaWduX2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9hdWdhc3NpZ24oYywgcyk7CisgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2FubmFzc2lnbihjLCBzKTsKICAgICBjYXNlIEZvcl9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfZm9yKGMsIHMpOwogICAgIGNhc2UgV2hpbGVfa2luZDoKQEAgLTI2NjgsMTYgKzI4NjcsNyBAQAogICAgIGNhc2UgTm9ubG9jYWxfa2luZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBFeHByX2tpbmQ6Ci0gICAgICAgIGlmIChjLT5jX2ludGVyYWN0aXZlICYmIGMtPmNfbmVzdGxldmVsIDw9IDEpIHsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuRXhwci52YWx1ZSk7Ci0gICAgICAgICAgICBBRERPUChjLCBQUklOVF9FWFBSKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzLT52LkV4cHIudmFsdWUtPmtpbmQgIT0gU3RyX2tpbmQgJiYKLSAgICAgICAgICAgICAgICAgcy0+di5FeHByLnZhbHVlLT5raW5kICE9IE51bV9raW5kKSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkV4cHIudmFsdWUpOwotICAgICAgICAgICAgQURET1AoYywgUE9QX1RPUCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBjb21waWxlcl92aXNpdF9zdG10X2V4cHIoYywgcy0+di5FeHByLnZhbHVlKTsKICAgICBjYXNlIFBhc3Nfa2luZDoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBCcmVha19raW5kOgpAQCAtMzA3OSw5ICszMjY5LDUzIEBACiB9CiAKIHN0YXRpYyBpbnQKK2FyZV9hbGxfaXRlbXNfY29uc3QoYXNkbF9zZXEgKnNlcSwgUHlfc3NpemVfdCBiZWdpbiwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBrZXkgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsKKyAgICAgICAgaWYgKGtleSA9PSBOVUxMIHx8ICFpc19jb25zdChrZXkpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Citjb21waWxlcl9zdWJkaWN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlLCBQeV9zc2l6ZV90IGJlZ2luLCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBlbmQgLSBiZWdpbjsKKyAgICBQeU9iamVjdCAqa2V5cywgKmtleTsKKyAgICBpZiAobiA+IDEgJiYgYXJlX2FsbF9pdGVtc19jb25zdChlLT52LkRpY3Qua2V5cywgYmVnaW4sIGVuZCkpIHsKKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKKyAgICAgICAgfQorICAgICAgICBrZXlzID0gUHlUdXBsZV9OZXcobik7CisgICAgICAgIGlmIChrZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGtleSA9IGdldF9jb25zdF92YWx1ZSgoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShrZXlzLCBpIC0gYmVnaW4sIGtleSk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBrZXlzLCBjb25zdHMpOworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX0NPTlNUX0tFWV9NQVAsIG4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LnZhbHVlcywgaSkpOworICAgICAgICB9CisgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX2RpY3Qoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBuLCBjb250YWluZXJzLCBlbGVtZW50czsKKyAgICBQeV9zc2l6ZV90IGksIG4sIGVsZW1lbnRzOworICAgIGludCBjb250YWluZXJzOwogICAgIGludCBpc191bnBhY2tpbmcgPSAwOwogICAgIG4gPSBhc2RsX3NlcV9MRU4oZS0+di5EaWN0LnZhbHVlcyk7CiAgICAgY29udGFpbmVycyA9IDA7CkBAIC0zMDg5LDcgKzMzMjMsOCBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgaXNfdW5wYWNraW5nID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSA9PSBOVUxMOwogICAgICAgICBpZiAoZWxlbWVudHMgPT0gMHhGRkZGIHx8IChlbGVtZW50cyAmJiBpc191bnBhY2tpbmcpKSB7Ci0gICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgZWxlbWVudHMpOworICAgICAgICAgICAgaWYgKCFjb21waWxlcl9zdWJkaWN0KGMsIGUsIGkgLSBlbGVtZW50cywgaSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBjb250YWluZXJzKys7CiAgICAgICAgICAgICBlbGVtZW50cyA9IDA7CiAgICAgICAgIH0KQEAgLTMwOTgsMTMgKzMzMzMsMTIgQEAKICAgICAgICAgICAgIGNvbnRhaW5lcnMrKzsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkpOwotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKICAgICAgICAgICAgIGVsZW1lbnRzKys7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGVsZW1lbnRzIHx8IGNvbnRhaW5lcnMgPT0gMCkgewotICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgZWxlbWVudHMpOworICAgICAgICBpZiAoIWNvbXBpbGVyX3N1YmRpY3QoYywgZSwgbiAtIGVsZW1lbnRzLCBuKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjb250YWluZXJzKys7CiAgICAgfQogICAgIC8qIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZGljdCwgdGhleSBuZWVkIHRvIGJlIG1lcmdlZCBpbnRvIGEgbmV3CkBAIC0zMTczLDI4ICszNDA3LDEyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLT52LkNhbGwua2V5d29yZHMpOwogfQogCitzdGF0aWMgaW50Citjb21waWxlcl9qb2luZWRfc3RyKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQoreworICAgIFZJU0lUX1NFUShjLCBleHByLCBlLT52LkpvaW5lZFN0ci52YWx1ZXMpOworICAgIEFERE9QX0koYywgQlVJTERfU1RSSU5HLCBhc2RsX3NlcV9MRU4oZS0+di5Kb2luZWRTdHIudmFsdWVzKSk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIFVzZWQgdG8gaW1wbGVtZW50IGYtc3RyaW5ncy4gRm9ybWF0IGEgc2luZ2xlIHZhbHVlLiAqLworc3RhdGljIGludAorY29tcGlsZXJfZm9ybWF0dGVkX3ZhbHVlKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQoreworICAgIC8qIE91ciBvcGFyZyBlbmNvZGVzIDIgcGllY2VzIG9mIGluZm9ybWF0aW9uOiB0aGUgY29udmVyc2lvbgorICAgICAgIGNoYXJhY3RlciwgYW5kIHdoZXRoZXIgb3Igbm90IGEgZm9ybWF0X3NwZWMgd2FzIHByb3ZpZGVkLgorCisgICAgICAgQ29udmVydCB0aGUgY29udmVyc2lvbiBjaGFyIHRvIDIgYml0czoKKyAgICAgICBOb25lOiAwMDAgIDB4MCAgRlZDX05PTkUKKyAgICAgICAhcyAgOiAwMDEgIDB4MSAgRlZDX1NUUgorICAgICAgICFyICA6IDAxMCAgMHgyICBGVkNfUkVQUgorICAgICAgICFhICA6IDAxMSAgMHgzICBGVkNfQVNDSUkKKworICAgICAgIG5leHQgYml0IGlzIHdoZXRoZXIgb3Igbm90IHdlIGhhdmUgYSBmb3JtYXQgc3BlYzoKKyAgICAgICB5ZXMgOiAxMDAgIDB4NAorICAgICAgIG5vICA6IDAwMCAgMHgwCisgICAgKi8KKworICAgIGludCBvcGFyZzsKKworICAgIC8qIEV2YWx1YXRlIHRoZSBleHByZXNzaW9uIHRvIGJlIGZvcm1hdHRlZC4gKi8KKyAgICBWSVNJVChjLCBleHByLCBlLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlKTsKKworICAgIHN3aXRjaCAoZS0+di5Gb3JtYXR0ZWRWYWx1ZS5jb252ZXJzaW9uKSB7CisgICAgY2FzZSAncyc6IG9wYXJnID0gRlZDX1NUUjsgICBicmVhazsKKyAgICBjYXNlICdyJzogb3BhcmcgPSBGVkNfUkVQUjsgIGJyZWFrOworICAgIGNhc2UgJ2EnOiBvcGFyZyA9IEZWQ19BU0NJSTsgYnJlYWs7CisgICAgY2FzZSAtMTogIG9wYXJnID0gRlZDX05PTkU7ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5yZWNvZ25pemVkIGNvbnZlcnNpb24gY2hhcmFjdGVyIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoZS0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYykgeworICAgICAgICAvKiBFdmFsdWF0ZSB0aGUgZm9ybWF0IHNwZWMsIGFuZCB1cGRhdGUgb3VyIG9wY29kZSBhcmcuICovCisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBvcGFyZyB8PSBGVlNfSEFWRV9TUEVDOworICAgIH0KKworICAgIC8qIEFuZCBwdXNoIG91ciBvcGNvZGUgYW5kIG9wYXJnICovCisgICAgQURET1BfSShjLCBGT1JNQVRfVkFMVUUsIG9wYXJnKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfc3Via3dhcmdzKHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKmtleXdvcmRzLCBQeV9zc2l6ZV90IGJlZ2luLCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBlbmQgLSBiZWdpbjsKKyAgICBrZXl3b3JkX3R5IGt3OworICAgIFB5T2JqZWN0ICprZXlzLCAqa2V5OworICAgIGFzc2VydChuID4gMCk7CisgICAgaWYgKG4gPiAxKSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAga2V5cyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSAoKGtleXdvcmRfdHkpIGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSkpLT5hcmc7CisgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5cywgaSAtIGJlZ2luLCBrZXkpOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5cywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGEgZm9yIGxvb3Agb25seSBleGVjdXRlcyBvbmNlICovCisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwga3ctPmFyZywgY29uc3RzKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG4pOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogLyogc2hhcmVkIGNvZGUgYmV0d2VlbiBjb21waWxlcl9jYWxsIGFuZCBjb21waWxlcl9jbGFzcyAqLwogc3RhdGljIGludAogY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLAotICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuLCAvKiBBcmdzIGFscmVhZHkgcHVzaGVkICovCisgICAgICAgICAgICAgICAgICAgICBpbnQgbiwgLyogQXJncyBhbHJlYWR5IHB1c2hlZCAqLwogICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmFyZ3MsCiAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpCiB7Ci0gICAgaW50IGNvZGUgPSAwOwotICAgIFB5X3NzaXplX3QgbmVsdHMsIGksIG5zZWVuLCBua3c7CisgICAgUHlfc3NpemVfdCBpLCBuc2VlbiwgbmVsdHMsIG5rd2VsdHM7CisgICAgaW50IG11c3RkaWN0dW5wYWNrID0gMDsKIAogICAgIC8qIHRoZSBudW1iZXIgb2YgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgb24gdGhlIHN0YWNrICovCiAgICAgUHlfc3NpemVfdCBuc3ViYXJncyA9IDAsIG5zdWJrd2FyZ3MgPSAwOwogCi0gICAgbmt3ID0gMDsKLSAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIG9uIHRoZSBzdGFjayAqLwogICAgIG5lbHRzID0gYXNkbF9zZXFfTEVOKGFyZ3MpOworICAgIG5rd2VsdHMgPSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOworCisgICAgZm9yIChpID0gMDsgaSA8IG5rd2VsdHM7IGkrKykgeworICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgaWYgKGt3LT5hcmcgPT0gTlVMTCkgeworICAgICAgICAgICAgbXVzdGRpY3R1bnBhY2sgPSAxOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBuc2VlbiA9IG47ICAvKiB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIG9uIHRoZSBzdGFjayAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7CiAgICAgICAgIGV4cHJfdHkgZWx0ID0gYXNkbF9zZXFfR0VUKGFyZ3MsIGkpOwogICAgICAgICBpZiAoZWx0LT5raW5kID09IFN0YXJyZWRfa2luZCkgewogICAgICAgICAgICAgLyogQSBzdGFyLWFyZy4gSWYgd2UndmUgc2VlbiBwb3NpdGlvbmFsIGFyZ3VtZW50cywKLSAgICAgICAgICAgICAgIHBhY2sgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gYQotICAgICAgICAgICAgICAgdHVwbGUuICovCisgICAgICAgICAgICAgICBwYWNrIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIGEgdHVwbGUuICovCiAgICAgICAgICAgICBpZiAobnNlZW4pIHsKICAgICAgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CiAgICAgICAgICAgICAgICAgbnNlZW4gPSAwOwpAQCAtMzIwMyw5MiArMzUzMyw3OCBAQAogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0LT52LlN0YXJyZWQudmFsdWUpOwogICAgICAgICAgICAgbnN1YmFyZ3MrKzsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChuc3ViYXJncykgewotICAgICAgICAgICAgLyogV2UndmUgc2VlbiBzdGFyLWFyZ3MgYWxyZWFkeSwgc28gd2UKLSAgICAgICAgICAgICAgIGNvdW50IHRvd2FyZHMgaXRlbXMtdG8tcGFjay1pbnRvLXR1cGxlLiAqLworICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CiAgICAgICAgICAgICBuc2VlbisrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogUG9zaXRpb25hbCBhcmd1bWVudHMgYmVmb3JlIHN0YXItYXJndW1lbnRzCi0gICAgICAgICAgICAgICBhcmUgbGVmdCBvbiB0aGUgc3RhY2suICovCi0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOwotICAgICAgICAgICAgbisrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuc2VlbikgewotICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gKi8KLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOwotICAgICAgICBuc3ViYXJncysrOwotICAgIH0KLSAgICBpZiAobnN1YmFyZ3MpIHsKLSAgICAgICAgY29kZSB8PSAxOwotICAgICAgICBpZiAobnN1YmFyZ3MgPiAxKSB7Ci0gICAgICAgICAgICAvKiBJZiB3ZSBlbmRlZCB1cCB3aXRoIG1vcmUgdGhhbiBvbmUgc3RhcmFyZywgd2UgbmVlZAotICAgICAgICAgICAgICAgdG8gY29uY2F0ZW5hdGUgdGhlbSBpbnRvIGEgc2luZ2xlIHNlcXVlbmNlLiAqLwotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9MSVNUX1VOUEFDSywgbnN1YmFyZ3MpOwotICAgICAgICB9CiAgICAgfQogCiAgICAgLyogU2FtZSBkYW5jZSBhZ2FpbiBmb3Iga2V5d29yZCBhcmd1bWVudHMgKi8KLSAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIGtleXdvcmQgYXJndW1lbnRzIG9uIHRoZSBzdGFjayBmb2xsb3dpbmcgKi8KLSAgICBuZWx0cyA9IGFzZGxfc2VxX0xFTihrZXl3b3Jkcyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5lbHRzOyBpKyspIHsKLSAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7Ci0gICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIEEga2V5d29yZCBhcmd1bWVudCB1bnBhY2tpbmcuICovCi0gICAgICAgICAgICBpZiAobnNlZW4pIHsKLSAgICAgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbnNlZW4pOwotICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKKyAgICBpZiAobnN1YmFyZ3MgfHwgbXVzdGRpY3R1bnBhY2spIHsKKyAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG5zZWVuKTsKKyAgICAgICAgICAgIG5zdWJhcmdzKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5zdWJhcmdzID4gMSkgeworICAgICAgICAgICAgLyogSWYgd2UgZW5kZWQgdXAgd2l0aCBtb3JlIHRoYW4gb25lIHN0YXJhcmcsIHdlIG5lZWQKKyAgICAgICAgICAgICAgIHRvIGNvbmNhdGVuYXRlIHRoZW0gaW50byBhIHNpbmdsZSBzZXF1ZW5jZS4gKi8KKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1YmFyZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5zdWJhcmdzID09IDApIHsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIDApOworICAgICAgICB9CisgICAgICAgIG5zZWVuID0gMDsgIC8qIHRoZSBudW1iZXIgb2Yga2V5d29yZCBhcmd1bWVudHMgb24gdGhlIHN0YWNrIGZvbGxvd2luZyAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmt3ZWx0czsgaSsrKSB7CisgICAgICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLworICAgICAgICAgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXBpbGVyX3N1Ymt3YXJncyhjLCBrZXl3b3JkcywgaSAtIG5zZWVuLCBpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBuc3Via3dhcmdzKys7CisgICAgICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKICAgICAgICAgICAgICAgICBuc3Via3dhcmdzKys7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbnNlZW4rKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgIC8qIFBhY2sgdXAgYW55IHRyYWlsaW5nIGtleXdvcmQgYXJndW1lbnRzLiAqLworICAgICAgICAgICAgaWYgKCFjb21waWxlcl9zdWJrd2FyZ3MoYywga2V5d29yZHMsIG5rd2VsdHMgLSBuc2Vlbiwgbmt3ZWx0cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBuc3Via3dhcmdzKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnN1Ymt3YXJncykgewotICAgICAgICAgICAgLyogQSBrZXl3b3JkIGFyZ3VtZW50IGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBkaWN0LiAqLwotICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBrdy0+YXJnLCBjb25zdHMpOwotICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKLSAgICAgICAgICAgIG5zZWVuKys7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBrZXl3b3JkIGFyZ3VtZW50ICovCi0gICAgICAgICAgICBWSVNJVChjLCBrZXl3b3JkLCBrdykKLSAgICAgICAgICAgIG5rdysrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChuc2VlbikgewotICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBrZXl3b3JkIGFyZ3VtZW50cy4gKi8KLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKLSAgICAgICAgbnN1Ymt3YXJncysrOwotICAgIH0KLSAgICBpZiAobnN1Ymt3YXJncykgewotICAgICAgICBjb2RlIHw9IDI7CiAgICAgICAgIGlmIChuc3Via3dhcmdzID4gMSkgewogICAgICAgICAgICAgLyogUGFjayBpdCBhbGwgdXAgKi8KLSAgICAgICAgICAgIGludCBmdW5jdGlvbl9wb3MgPSBuICsgKGNvZGUgJiAxKSArIDIgKiBua3cgKyAxOwotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1Ymt3YXJncyB8IChmdW5jdGlvbl9wb3MgPDwgOCkpOworICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgbnN1Ymt3YXJncyk7CiAgICAgICAgIH0KKyAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX0VYLCBuc3Via3dhcmdzID4gMCk7CisgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICBhc3NlcnQobiA8IDE8PDgpOwotICAgIGFzc2VydChua3cgPCAxPDwyNCk7Ci0gICAgbiB8PSBua3cgPDwgODsKLQotICAgIHN3aXRjaCAoY29kZSkgewotICAgIGNhc2UgMDoKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fVkFSLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fS1csIG4pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDM6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9WQVJfS1csIG4pOwotICAgICAgICBicmVhazsKKyAgICBlbHNlIGlmIChua3dlbHRzKSB7CisgICAgICAgIFB5T2JqZWN0ICpuYW1lczsKKyAgICAgICAgVklTSVRfU0VRKGMsIGtleXdvcmQsIGtleXdvcmRzKTsKKyAgICAgICAgbmFtZXMgPSBQeVR1cGxlX05ldyhua3dlbHRzKTsKKyAgICAgICAgaWYgKG5hbWVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBua3dlbHRzOyBpKyspIHsKKyAgICAgICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOworICAgICAgICAgICAgUHlfSU5DUkVGKGt3LT5hcmcpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuYW1lcywgaSwga3ctPmFyZyk7CisgICAgICAgIH0KKyAgICAgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBuYW1lcywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX0tXLCBuICsgbmVsdHMgKyBua3dlbHRzKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIHJldHVybiAxOworICAgIGVsc2UgeworICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIG4gKyBuZWx0cyk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KIH0KIAogCkBAIC0zMzA3LDExICszNjIzLDI4IEBACiAgICAgLSBpdGVyYXRlIG92ZXIgdGhlIGdlbmVyYXRvciBzZXF1ZW5jZSBpbnN0ZWFkIG9mIHVzaW5nIHJlY3Vyc2lvbgogKi8KIAorCiBzdGF0aWMgaW50CiBjb21waWxlcl9jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihzdHJ1Y3QgY29tcGlsZXIgKmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpCiB7CisgICAgY29tcHJlaGVuc2lvbl90eSBnZW47CisgICAgZ2VuID0gKGNvbXByZWhlbnNpb25fdHkpYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIGdlbl9pbmRleCk7CisgICAgaWYgKGdlbi0+aXNfYXN5bmMpIHsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgYywgZ2VuZXJhdG9ycywgZ2VuX2luZGV4LCBlbHQsIHZhbCwgdHlwZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoCisgICAgICAgICAgICBjLCBnZW5lcmF0b3JzLCBnZW5faW5kZXgsIGVsdCwgdmFsLCB0eXBlKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3N5bmNfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3Ioc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSkKK3sKICAgICAvKiBnZW5lcmF0ZSBjb2RlIGZvciB0aGUgaXRlcmF0b3IsIHRoZW4gZWFjaCBvZiB0aGUgaWZzLAogICAgICAgIGFuZCB0aGVuIHdyaXRlIHRvIHRoZSBlbGVtZW50ICovCiAKQEAgLTMzOTgsMjAgKzM3MzEsMTY3IEBACiB9CiAKIHN0YXRpYyBpbnQKK2NvbXBpbGVyX2FzeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpCit7CisgICAgX1B5X0lERU5USUZJRVIoU3RvcEFzeW5jSXRlcmF0aW9uKTsKKworICAgIGNvbXByZWhlbnNpb25fdHkgZ2VuOworICAgIGJhc2ljYmxvY2sgKmFuY2hvciwgKnNraXAsICppZl9jbGVhbnVwLCAqdHJ5LAorICAgICAgICAgICAgICAgKmFmdGVyX3RyeSwgKmV4Y2VwdCwgKnRyeV9jbGVhbnVwOworICAgIFB5X3NzaXplX3QgaSwgbjsKKworICAgIFB5T2JqZWN0ICpzdG9wX2FpdGVyX2Vycm9yID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICBpZiAoc3RvcF9haXRlcl9lcnJvciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHRyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhZnRlcl90cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgdHJ5X2NsZWFudXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgZXhjZXB0ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIHNraXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgaWZfY2xlYW51cCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBhbmNob3IgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisKKyAgICBpZiAoc2tpcCA9PSBOVUxMIHx8IGlmX2NsZWFudXAgPT0gTlVMTCB8fCBhbmNob3IgPT0gTlVMTCB8fAorICAgICAgICAgICAgdHJ5ID09IE5VTEwgfHwgYWZ0ZXJfdHJ5ID09IE5VTEwgfHwKKyAgICAgICAgICAgIGV4Y2VwdCA9PSBOVUxMIHx8IGFmdGVyX3RyeSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGdlbiA9IChjb21wcmVoZW5zaW9uX3R5KWFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCBnZW5faW5kZXgpOworCisgICAgaWYgKGdlbl9pbmRleCA9PSAwKSB7CisgICAgICAgIC8qIFJlY2VpdmUgb3V0ZXJtb3N0IGl0ZXIgYXMgYW4gaW1wbGljaXQgYXJndW1lbnQgKi8KKyAgICAgICAgYy0+dS0+dV9hcmdjb3VudCA9IDE7CisgICAgICAgIEFERE9QX0koYywgTE9BRF9GQVNULCAwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFN1Yi1pdGVyIC0gY2FsY3VsYXRlIG9uIHRoZSBmbHkgKi8KKyAgICAgICAgVklTSVQoYywgZXhwciwgZ2VuLT5pdGVyKTsKKyAgICAgICAgQURET1AoYywgR0VUX0FJVEVSKTsKKyAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICB9CisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCB0cnkpOworCisKKyAgICBBRERPUF9KUkVMKGMsIFNFVFVQX0VYQ0VQVCwgZXhjZXB0KTsKKyAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEVYQ0VQVCwgdHJ5KSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBRERPUChjLCBHRVRfQU5FWFQpOworICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICBBRERPUChjLCBZSUVMRF9GUk9NKTsKKyAgICBWSVNJVChjLCBleHByLCBnZW4tPnRhcmdldCk7CisgICAgQURET1AoYywgUE9QX0JMT0NLKTsKKyAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEVYQ0VQVCwgdHJ5KTsKKyAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgYWZ0ZXJfdHJ5KTsKKworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgZXhjZXB0KTsKKyAgICBBRERPUChjLCBEVVBfVE9QKTsKKyAgICBBRERPUF9PKGMsIExPQURfR0xPQkFMLCBzdG9wX2FpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfSShjLCBDT01QQVJFX09QLCBQeUNtcF9FWENfTUFUQ0gpOworICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIHRyeV9jbGVhbnVwKTsKKworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIEFERE9QKGMsIFBPUF9FWENFUFQpOyAvKiBmb3IgU0VUVVBfRVhDRVBUICovCisgICAgQURET1BfSkFCUyhjLCBKVU1QX0FCU09MVVRFLCBhbmNob3IpOworCisKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCB0cnlfY2xlYW51cCk7CisgICAgQURET1AoYywgRU5EX0ZJTkFMTFkpOworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYWZ0ZXJfdHJ5KTsKKworICAgIG4gPSBhc2RsX3NlcV9MRU4oZ2VuLT5pZnMpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZXhwcl90eSBlID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGdlbi0+aWZzLCBpKTsKKyAgICAgICAgVklTSVQoYywgZXhwciwgZSk7CisgICAgICAgIEFERE9QX0pBQlMoYywgUE9QX0pVTVBfSUZfRkFMU0UsIGlmX2NsZWFudXApOworICAgICAgICBORVhUX0JMT0NLKGMpOworICAgIH0KKworICAgIGlmICgrK2dlbl9pbmRleCA8IGFzZGxfc2VxX0xFTihnZW5lcmF0b3JzKSkKKyAgICAgICAgaWYgKCFjb21waWxlcl9jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcnMsIGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHQsIHZhbCwgdHlwZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogb25seSBhcHBlbmQgYWZ0ZXIgdGhlIGxhc3QgZm9yIGdlbmVyYXRvciAqLworICAgIGlmIChnZW5faW5kZXggPj0gYXNkbF9zZXFfTEVOKGdlbmVyYXRvcnMpKSB7CisgICAgICAgIC8qIGNvbXByZWhlbnNpb24gc3BlY2lmaWMgY29kZSAqLworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBDT01QX0dFTkVYUDoKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUChjLCBZSUVMRF9WQUxVRSk7CisgICAgICAgICAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTVBfTElTVENPTVA6CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1BfSShjLCBMSVNUX0FQUEVORCwgZ2VuX2luZGV4ICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT01QX1NFVENPTVA6CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1BfSShjLCBTRVRfQURELCBnZW5faW5kZXggKyAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENPTVBfRElDVENPTVA6CisgICAgICAgICAgICAvKiBXaXRoICdkW2tdID0gdicsIHYgaXMgZXZhbHVhdGVkIGJlZm9yZSBrLCBzbyB3ZSBkbworICAgICAgICAgICAgICAgdGhlIHNhbWUuICovCisgICAgICAgICAgICBWSVNJVChjLCBleHByLCB2YWwpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QX0koYywgTUFQX0FERCwgZ2VuX2luZGV4ICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgc2tpcCk7CisgICAgfQorICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGlmX2NsZWFudXApOworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgdHJ5KTsKKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBhbmNob3IpOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX2NvbXByZWhlbnNpb24oc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUsIGludCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWUsIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBleHByX3R5IGVsdCwKICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWwpCiB7CiAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IE5VTEw7Ci0gICAgZXhwcl90eSBvdXRlcm1vc3RfaXRlcjsKKyAgICBjb21wcmVoZW5zaW9uX3R5IG91dGVybW9zdDsKICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBOVUxMOworICAgIGludCBpc19hc3luY19mdW5jdGlvbiA9IGMtPnUtPnVfc3RlLT5zdGVfY29yb3V0aW5lOworICAgIGludCBpc19hc3luY19nZW5lcmF0b3IgPSAwOwogCi0gICAgb3V0ZXJtb3N0X2l0ZXIgPSAoKGNvbXByZWhlbnNpb25fdHkpCi0gICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIDApKS0+aXRlcjsKKyAgICBvdXRlcm1vc3QgPSAoY29tcHJlaGVuc2lvbl90eSkgYXNkbF9zZXFfR0VUKGdlbmVyYXRvcnMsIDApOwogCiAgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBDT01QSUxFUl9TQ09QRV9DT01QUkVIRU5TSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQorICAgIHsKICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpc19hc3luY19nZW5lcmF0b3IgPSBjLT51LT51X3N0ZS0+c3RlX2Nvcm91dGluZTsKKworICAgIGlmIChpc19hc3luY19nZW5lcmF0b3IgJiYgIWlzX2FzeW5jX2Z1bmN0aW9uKSB7CisgICAgICAgIGlmIChlLT5saW5lbm8gPiBjLT51LT51X2xpbmVubykgeworICAgICAgICAgICAgYy0+dS0+dV9saW5lbm8gPSBlLT5saW5lbm87CisgICAgICAgICAgICBjLT51LT51X2xpbmVub19zZXQgPSAwOworICAgICAgICB9CisgICAgICAgIGNvbXBpbGVyX2Vycm9yKGMsICJhc3luY2hyb25vdXMgY29tcHJlaGVuc2lvbiBvdXRzaWRlIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiIpOworICAgICAgICBnb3RvIGVycm9yX2luX3Njb3BlOworICAgIH0KIAogICAgIGlmICh0eXBlICE9IENPTVBfR0VORVhQKSB7CiAgICAgICAgIGludCBvcDsKQEAgLTM0NTQsOSArMzkzNCwyNCBAQAogICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAotICAgIFZJU0lUKGMsIGV4cHIsIG91dGVybW9zdF9pdGVyKTsKLSAgICBBRERPUChjLCBHRVRfSVRFUik7CisgICAgVklTSVQoYywgZXhwciwgb3V0ZXJtb3N0LT5pdGVyKTsKKworICAgIGlmIChvdXRlcm1vc3QtPmlzX2FzeW5jKSB7CisgICAgICAgIEFERE9QKGMsIEdFVF9BSVRFUik7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQURET1AoYywgR0VUX0lURVIpOworICAgIH0KKwogICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgMSk7CisKKyAgICBpZiAoaXNfYXN5bmNfZ2VuZXJhdG9yICYmIHR5cGUgIT0gQ09NUF9HRU5FWFApIHsKKyAgICAgICAgQURET1AoYywgR0VUX0FXQUlUQUJMRSk7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgfQorCiAgICAgcmV0dXJuIDE7CiBlcnJvcl9pbl9zY29wZToKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwpAQCAtMzUzMSw3ICs0MDI2LDYgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX3Zpc2l0X2tleXdvcmQoc3RydWN0IGNvbXBpbGVyICpjLCBrZXl3b3JkX3R5IGspCiB7Ci0gICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBrLT5hcmcsIGNvbnN0cyk7CiAgICAgVklTSVQoYywgZXhwciwgay0+dmFsdWUpOwogICAgIHJldHVybiAxOwogfQpAQCAtMzU0OSw2ICs0MDQzLDggQEAKICAgICBzd2l0Y2ggKGUtPmtpbmQpIHsKICAgICBjYXNlIEVsbGlwc2lzX2tpbmQ6CiAgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0lzVHJ1ZShlLT52LkNvbnN0YW50LnZhbHVlKTsKICAgICBjYXNlIE51bV9raW5kOgogICAgICAgICByZXR1cm4gUHlPYmplY3RfSXNUcnVlKGUtPnYuTnVtLm4pOwogICAgIGNhc2UgU3RyX2tpbmQ6CkBAIC0zNTkyLDkgKzQwODgsOSBAQAogICAgICAgIEJMT0NLCiAgICBmaW5hbGx5OgogICAgICAgIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkOgotICAgICAgIGV4YyA9IGNvcHkgb2YgKGV4Y2VwdGlvbiwgaW5zdGFuY2UsIHRyYWNlYmFjaykKKyAgICAgICAgICAgZXhjID0gY29weSBvZiAoZXhjZXB0aW9uLCBpbnN0YW5jZSwgdHJhY2ViYWNrKQogICAgICAgIGVsc2U6Ci0gICAgICAgZXhjID0gKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgICAgIGV4YyA9IChOb25lLCBOb25lLCBOb25lKQogICAgICAgIGlmIG5vdCAoYXdhaXQgZXhpdCgqZXhjKSk6CiAgICAgICAgICAgIHJhaXNlCiAgKi8KQEAgLTM3OTQsOCArNDI5MCw2IEBACiAgICAgY2FzZSBZaWVsZF9raW5kOgogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIid5aWVsZCcgb3V0c2lkZSBmdW5jdGlvbiIpOwotICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQotICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIGluc2lkZSBhc3luYyBmdW5jdGlvbiIpOwogICAgICAgICBpZiAoZS0+di5ZaWVsZC52YWx1ZSkgewogICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5ZaWVsZC52YWx1ZSk7CiAgICAgICAgIH0KQEAgLTM4MjAsMTEgKzQzMTQsOCBAQAogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidhd2FpdCcgb3V0c2lkZSBmdW5jdGlvbiIpOwogCi0gICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTikKLSAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcigKLSAgICAgICAgICAgICAgICBjLCAiJ2F3YWl0JyBleHByZXNzaW9ucyBpbiBjb21wcmVoZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCIpOwotCi0gICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04pCisgICAgICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQVNZTkNfRlVOQ1RJT04gJiYKKyAgICAgICAgICAgICAgICBjLT51LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTikKICAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ2F3YWl0JyBvdXRzaWRlIGFzeW5jIGZ1bmN0aW9uIik7CiAKICAgICAgICAgVklTSVQoYywgZXhwciwgZS0+di5Bd2FpdC52YWx1ZSk7CkBAIC0zODM2LDEyICs0MzI3LDE5IEBACiAgICAgICAgIHJldHVybiBjb21waWxlcl9jb21wYXJlKGMsIGUpOwogICAgIGNhc2UgQ2FsbF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfY2FsbChjLCBlKTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5Db25zdGFudC52YWx1ZSwgY29uc3RzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52Lk51bS5uLCBjb25zdHMpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFN0cl9raW5kOgogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuU3RyLnMsIGNvbnN0cyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9qb2luZWRfc3RyKGMsIGUpOworICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKKyAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Zvcm1hdHRlZF92YWx1ZShjLCBlKTsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5CeXRlcy5zLCBjb25zdHMpOwogICAgICAgICBicmVhazsKQEAgLTM5NzYsNiArNDQ3NCwxNDQgQEAKIH0KIAogc3RhdGljIGludAorY2hlY2tfYW5uX2V4cHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IGUpCit7CisgICAgVklTSVQoYywgZXhwciwgZSk7CisgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX2Fubm90YXRpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpCit7CisgICAgLyogQW5ub3RhdGlvbnMgYXJlIG9ubHkgZXZhbHVhdGVkIGluIGEgbW9kdWxlIG9yIGNsYXNzLiAqLworICAgIGlmIChjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFIHx8CisgICAgICAgIGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUykgeworICAgICAgICByZXR1cm4gY2hlY2tfYW5uX2V4cHIoYywgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitjaGVja19hbm5fc2xpY2Uoc3RydWN0IGNvbXBpbGVyICpjLCBzbGljZV90eSBzbCkKK3sKKyAgICBzd2l0Y2goc2wtPmtpbmQpIHsKKyAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgICAgIHJldHVybiBjaGVja19hbm5fZXhwcihjLCBzbC0+di5JbmRleC52YWx1ZSk7CisgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICBpZiAoc2wtPnYuU2xpY2UubG93ZXIgJiYgIWNoZWNrX2Fubl9leHByKGMsIHNsLT52LlNsaWNlLmxvd2VyKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNsLT52LlNsaWNlLnVwcGVyICYmICFjaGVja19hbm5fZXhwcihjLCBzbC0+di5TbGljZS51cHBlcikpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChzbC0+di5TbGljZS5zdGVwICYmICFjaGVja19hbm5fZXhwcihjLCBzbC0+di5TbGljZS5zdGVwKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgc2xpY2Uga2luZCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NoZWNrX2Fubl9zdWJzY3Ioc3RydWN0IGNvbXBpbGVyICpjLCBzbGljZV90eSBzbCkKK3sKKyAgICAvKiBXZSBjaGVjayB0aGF0IGV2ZXJ5dGhpbmcgaW4gYSBzdWJzY3JpcHQgaXMgZGVmaW5lZCBhdCBydW50aW1lLiAqLworICAgIFB5X3NzaXplX3QgaSwgbjsKKworICAgIHN3aXRjaCAoc2wtPmtpbmQpIHsKKyAgICBjYXNlIEluZGV4X2tpbmQ6CisgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICBpZiAoIWNoZWNrX2Fubl9zbGljZShjLCBzbCkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXh0U2xpY2Vfa2luZDoKKyAgICAgICAgbiA9IGFzZGxfc2VxX0xFTihzbC0+di5FeHRTbGljZS5kaW1zKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgc2xpY2VfdHkgc3Vic2wgPSAoc2xpY2VfdHkpYXNkbF9zZXFfR0VUKHNsLT52LkV4dFNsaWNlLmRpbXMsIGkpOworICAgICAgICAgICAgc3dpdGNoIChzdWJzbC0+a2luZCkgeworICAgICAgICAgICAgY2FzZSBJbmRleF9raW5kOgorICAgICAgICAgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICAgICAgICAgIGlmICghY2hlY2tfYW5uX3NsaWNlKGMsIHN1YnNsKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEV4dFNsaWNlX2tpbmQ6CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4dGVuZGVkIHNsaWNlIGludmFsaWQgaW4gbmVzdGVkIHNsaWNlIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgc3Vic2NyaXB0IGtpbmQgJWQiLCBzbC0+a2luZCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfYW5uYXNzaWduKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQoreworICAgIGV4cHJfdHkgdGFyZyA9IHMtPnYuQW5uQXNzaWduLnRhcmdldDsKKyAgICBQeU9iamVjdCogbWFuZ2xlZDsKKworICAgIGFzc2VydChzLT5raW5kID09IEFubkFzc2lnbl9raW5kKTsKKworICAgIC8qIFdlIHBlcmZvcm0gdGhlIGFjdHVhbCBhc3NpZ25tZW50IGZpcnN0LiAqLworICAgIGlmIChzLT52LkFubkFzc2lnbi52YWx1ZSkgeworICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkFubkFzc2lnbi52YWx1ZSk7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIHRhcmcpOworICAgIH0KKyAgICBzd2l0Y2ggKHRhcmctPmtpbmQpIHsKKyAgICBjYXNlIE5hbWVfa2luZDoKKyAgICAgICAgLyogSWYgd2UgaGF2ZSBhIHNpbXBsZSBuYW1lIGluIGEgbW9kdWxlIG9yIGNsYXNzLCBzdG9yZSBhbm5vdGF0aW9uLiAqLworICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24uc2ltcGxlICYmCisgICAgICAgICAgICAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX01PRFVMRSB8fAorICAgICAgICAgICAgIGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9DTEFTUykpIHsKKyAgICAgICAgICAgIG1hbmdsZWQgPSBfUHlfTWFuZ2xlKGMtPnUtPnVfcHJpdmF0ZSwgdGFyZy0+di5OYW1lLmlkKTsKKyAgICAgICAgICAgIGlmICghbWFuZ2xlZCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgICAgICAvKiBBRERPUF9OIGRlY3JlZnMgaXRzIGFyZ3VtZW50ICovCisgICAgICAgICAgICBBRERPUF9OKGMsIFNUT1JFX0FOTk9UQVRJT04sIG1hbmdsZWQsIG5hbWVzKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgorICAgICAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnZhbHVlICYmCisgICAgICAgICAgICAhY2hlY2tfYW5uX2V4cHIoYywgdGFyZy0+di5BdHRyaWJ1dGUudmFsdWUpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnZhbHVlICYmCisgICAgICAgICAgICAoIWNoZWNrX2Fubl9leHByKGMsIHRhcmctPnYuU3Vic2NyaXB0LnZhbHVlKSB8fAorICAgICAgICAgICAgICFjaGVja19hbm5fc3Vic2NyKGMsIHRhcmctPnYuU3Vic2NyaXB0LnNsaWNlKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBub2RlIHR5cGUgKCVkKSBmb3IgYW5ub3RhdGVkIGFzc2lnbm1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgdGFyZy0+a2luZCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgLyogQW5ub3RhdGlvbiBpcyBldmFsdWF0ZWQgbGFzdC4gKi8KKyAgICBpZiAoIXMtPnYuQW5uQXNzaWduLnNpbXBsZSAmJiAhY2hlY2tfYW5ub3RhdGlvbihjLCBzKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIGNvbXBpbGVyX3B1c2hfZmJsb2NrKHN0cnVjdCBjb21waWxlciAqYywgZW51bSBmYmxvY2t0eXBlIHQsIGJhc2ljYmxvY2sgKmIpCiB7CiAgICAgc3RydWN0IGZibG9ja2luZm8gKmY7CkBAIC00MjczLDcgKzQ5MDksNyBAQAogICAgIGEtPmFfbG5vdGFiID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBERUZBVUxUX0xOT1RBQl9TSVpFKTsKICAgICBpZiAoIWEtPmFfbG5vdGFiKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKHNpemVfdCluYmxvY2tzID4gUFlfU0laRV9NQVggLyBzaXplb2YoYmFzaWNibG9jayAqKSkgeworICAgIGlmICgoc2l6ZV90KW5ibG9ja3MgPiBTSVpFX01BWCAvIHNpemVvZihiYXNpY2Jsb2NrICopKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTQyOTUsMTggKzQ5MzEsNiBAQAogICAgICAgICBQeU9iamVjdF9GcmVlKGEtPmFfcG9zdG9yZGVyKTsKIH0KIAotLyogUmV0dXJuIHRoZSBzaXplIG9mIGEgYmFzaWMgYmxvY2sgaW4gYnl0ZXMuICovCi0KLXN0YXRpYyBpbnQKLWluc3Ryc2l6ZShzdHJ1Y3QgaW5zdHIgKmluc3RyKQotewotICAgIGlmICghaW5zdHItPmlfaGFzYXJnKQotICAgICAgICByZXR1cm4gMTsgICAgICAgICAgICAgICAvKiAxIGJ5dGUgZm9yIHRoZSBvcGNvZGUqLwotICAgIGlmIChpbnN0ci0+aV9vcGFyZyA+IDB4ZmZmZikKLSAgICAgICAgcmV0dXJuIDY7ICAgICAgICAgICAgICAgLyogMSAob3Bjb2RlKSArIDEgKEVYVEVOREVEX0FSRyBvcGNvZGUpICsgMiAob3BhcmcpICsgMihvcGFyZyBleHRlbmRlZCkgKi8KLSAgICByZXR1cm4gMzsgICAgICAgICAgICAgICAgICAgLyogMSAob3Bjb2RlKSArIDIgKG9wYXJnKSAqLwotfQotCiBzdGF0aWMgaW50CiBibG9ja3NpemUoYmFzaWNibG9jayAqYikKIHsKQEAgLTQzMTQsNyArNDkzOCw3IEBACiAgICAgaW50IHNpemUgPSAwOwogCiAgICAgZm9yIChpID0gMDsgaSA8IGItPmJfaXVzZWQ7IGkrKykKLSAgICAgICAgc2l6ZSArPSBpbnN0cnNpemUoJmItPmJfaW5zdHJbaV0pOworICAgICAgICBzaXplICs9IGluc3Ryc2l6ZShiLT5iX2luc3RyW2ldLmlfb3BhcmcpOwogICAgIHJldHVybiBzaXplOwogfQogCkBAIC00MzI5LDExICs0OTUzLDEwIEBACiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgdW5zaWduZWQgY2hhciAqbG5vdGFiOwogCi0gICAgZF9ieXRlY29kZSA9IGEtPmFfb2Zmc2V0IC0gYS0+YV9saW5lbm9fb2ZmOworICAgIGRfYnl0ZWNvZGUgPSAoYS0+YV9vZmZzZXQgLSBhLT5hX2xpbmVub19vZmYpICogc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgZF9saW5lbm8gPSBpLT5pX2xpbmVubyAtIGEtPmFfbGluZW5vOwogCiAgICAgYXNzZXJ0KGRfYnl0ZWNvZGUgPj0gMCk7Ci0gICAgYXNzZXJ0KGRfbGluZW5vID49IDApOwogCiAgICAgaWYoZF9ieXRlY29kZSA9PSAwICYmIGRfbGluZW5vID09IDApCiAgICAgICAgIHJldHVybiAxOwpAQCAtNDM2Myw5ICs0OTg2LDIxIEBACiAgICAgICAgIGRfYnl0ZWNvZGUgLT0gbmNvZGVzICogMjU1OwogICAgICAgICBhLT5hX2xub3RhYl9vZmYgKz0gbmNvZGVzICogMjsKICAgICB9Ci0gICAgYXNzZXJ0KGRfYnl0ZWNvZGUgPD0gMjU1KTsKLSAgICBpZiAoZF9saW5lbm8gPiAyNTUpIHsKLSAgICAgICAgaW50IGosIG5ieXRlcywgbmNvZGVzID0gZF9saW5lbm8gLyAyNTU7CisgICAgYXNzZXJ0KDAgPD0gZF9ieXRlY29kZSAmJiBkX2J5dGVjb2RlIDw9IDI1NSk7CisKKyAgICBpZiAoZF9saW5lbm8gPCAtMTI4IHx8IDEyNyA8IGRfbGluZW5vKSB7CisgICAgICAgIGludCBqLCBuYnl0ZXMsIG5jb2RlcywgazsKKyAgICAgICAgaWYgKGRfbGluZW5vIDwgMCkgeworICAgICAgICAgICAgayA9IC0xMjg7CisgICAgICAgICAgICAvKiB1c2UgZGl2aXNpb24gb24gcG9zaXRpdmUgbnVtYmVycyAqLworICAgICAgICAgICAgbmNvZGVzID0gKC1kX2xpbmVubykgLyAxMjg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBrID0gMTI3OworICAgICAgICAgICAgbmNvZGVzID0gZF9saW5lbm8gLyAxMjc7CisgICAgICAgIH0KKyAgICAgICAgZF9saW5lbm8gLT0gbmNvZGVzICogazsKKyAgICAgICAgYXNzZXJ0KG5jb2RlcyA+PSAxKTsKICAgICAgICAgbmJ5dGVzID0gYS0+YV9sbm90YWJfb2ZmICsgMiAqIG5jb2RlczsKICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShhLT5hX2xub3RhYik7CiAgICAgICAgIGlmIChuYnl0ZXMgPj0gbGVuKSB7CkBAIC00MzgzLDE1ICs1MDE4LDE1IEBACiAgICAgICAgIGxub3RhYiA9ICh1bnNpZ25lZCBjaGFyICopCiAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoYS0+YV9sbm90YWIpICsgYS0+YV9sbm90YWJfb2ZmOwogICAgICAgICAqbG5vdGFiKysgPSBkX2J5dGVjb2RlOwotICAgICAgICAqbG5vdGFiKysgPSAyNTU7CisgICAgICAgICpsbm90YWIrKyA9IGs7CiAgICAgICAgIGRfYnl0ZWNvZGUgPSAwOwogICAgICAgICBmb3IgKGogPSAxOyBqIDwgbmNvZGVzOyBqKyspIHsKICAgICAgICAgICAgICpsbm90YWIrKyA9IDA7Ci0gICAgICAgICAgICAqbG5vdGFiKysgPSAyNTU7CisgICAgICAgICAgICAqbG5vdGFiKysgPSBrOwogICAgICAgICB9Ci0gICAgICAgIGRfbGluZW5vIC09IG5jb2RlcyAqIDI1NTsKICAgICAgICAgYS0+YV9sbm90YWJfb2ZmICs9IG5jb2RlcyAqIDI7CiAgICAgfQorICAgIGFzc2VydCgtMTI4IDw9IGRfbGluZW5vICYmIGRfbGluZW5vIDw9IDEyNyk7CiAKICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGEtPmFfbG5vdGFiKTsKICAgICBpZiAoYS0+YV9sbm90YWJfb2ZmICsgMiA+PSBsZW4pIHsKQEAgLTQ0MjMsMzggKzUwNTgsMjMgQEAKIHN0YXRpYyBpbnQKIGFzc2VtYmxlX2VtaXQoc3RydWN0IGFzc2VtYmxlciAqYSwgc3RydWN0IGluc3RyICppKQogewotICAgIGludCBzaXplLCBhcmcgPSAwLCBleHQgPSAwOworICAgIGludCBzaXplLCBhcmcgPSAwOwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShhLT5hX2J5dGVjb2RlKTsKLSAgICBjaGFyICpjb2RlOworICAgIF9QeV9DT0RFVU5JVCAqY29kZTsKIAotICAgIHNpemUgPSBpbnN0cnNpemUoaSk7Ci0gICAgaWYgKGktPmlfaGFzYXJnKSB7Ci0gICAgICAgIGFyZyA9IGktPmlfb3Bhcmc7Ci0gICAgICAgIGV4dCA9IGFyZyA+PiAxNjsKLSAgICB9CisgICAgYXJnID0gaS0+aV9vcGFyZzsKKyAgICBzaXplID0gaW5zdHJzaXplKGFyZyk7CiAgICAgaWYgKGktPmlfbGluZW5vICYmICFhc3NlbWJsZV9sbm90YWIoYSwgaSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhLT5hX29mZnNldCArIHNpemUgPj0gbGVuKSB7CisgICAgaWYgKGEtPmFfb2Zmc2V0ICsgc2l6ZSA+PSBsZW4gLyAoaW50KXNpemVvZihfUHlfQ09ERVVOSVQpKSB7CiAgICAgICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS0+YV9ieXRlY29kZSwgbGVuICogMikgPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGNvZGUgPSBQeUJ5dGVzX0FTX1NUUklORyhhLT5hX2J5dGVjb2RlKSArIGEtPmFfb2Zmc2V0OworICAgIGNvZGUgPSAoX1B5X0NPREVVTklUICopUHlCeXRlc19BU19TVFJJTkcoYS0+YV9ieXRlY29kZSkgKyBhLT5hX29mZnNldDsKICAgICBhLT5hX29mZnNldCArPSBzaXplOwotICAgIGlmIChzaXplID09IDYpIHsKLSAgICAgICAgYXNzZXJ0KGktPmlfaGFzYXJnKTsKLSAgICAgICAgKmNvZGUrKyA9IChjaGFyKUVYVEVOREVEX0FSRzsKLSAgICAgICAgKmNvZGUrKyA9IGV4dCAmIDB4ZmY7Ci0gICAgICAgICpjb2RlKysgPSBleHQgPj4gODsKLSAgICAgICAgYXJnICY9IDB4ZmZmZjsKLSAgICB9Ci0gICAgKmNvZGUrKyA9IGktPmlfb3Bjb2RlOwotICAgIGlmIChpLT5pX2hhc2FyZykgewotICAgICAgICBhc3NlcnQoc2l6ZSA9PSAzIHx8IHNpemUgPT0gNik7Ci0gICAgICAgICpjb2RlKysgPSBhcmcgJiAweGZmOwotICAgICAgICAqY29kZSsrID0gYXJnID4+IDg7Ci0gICAgfQorICAgIHdyaXRlX29wX2FyZyhjb2RlLCBpLT5pX29wY29kZSwgYXJnLCBzaXplKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtNDQ2Miw3ICs1MDgyLDcgQEAKIGFzc2VtYmxlX2p1bXBfb2Zmc2V0cyhzdHJ1Y3QgYXNzZW1ibGVyICphLCBzdHJ1Y3QgY29tcGlsZXIgKmMpCiB7CiAgICAgYmFzaWNibG9jayAqYjsKLSAgICBpbnQgYnNpemUsIHRvdHNpemUsIGV4dGVuZGVkX2FyZ19jb3VudCA9IDAsIGxhc3RfZXh0ZW5kZWRfYXJnX2NvdW50OworICAgIGludCBic2l6ZSwgdG90c2l6ZSwgZXh0ZW5kZWRfYXJnX3JlY29tcGlsZTsKICAgICBpbnQgaTsKIAogICAgIC8qIENvbXB1dGUgdGhlIHNpemUgb2YgZWFjaCBibG9jayBhbmQgZml4dXAganVtcCBhcmdzLgpAQCAtNDQ3NSwyNyArNTA5NSwyNyBAQAogICAgICAgICAgICAgYi0+Yl9vZmZzZXQgPSB0b3RzaXplOwogICAgICAgICAgICAgdG90c2l6ZSArPSBic2l6ZTsKICAgICAgICAgfQotICAgICAgICBsYXN0X2V4dGVuZGVkX2FyZ19jb3VudCA9IGV4dGVuZGVkX2FyZ19jb3VudDsKLSAgICAgICAgZXh0ZW5kZWRfYXJnX2NvdW50ID0gMDsKKyAgICAgICAgZXh0ZW5kZWRfYXJnX3JlY29tcGlsZSA9IDA7CiAgICAgICAgIGZvciAoYiA9IGMtPnUtPnVfYmxvY2tzOyBiICE9IE5VTEw7IGIgPSBiLT5iX2xpc3QpIHsKICAgICAgICAgICAgIGJzaXplID0gYi0+Yl9vZmZzZXQ7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYi0+Yl9pdXNlZDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgc3RydWN0IGluc3RyICppbnN0ciA9ICZiLT5iX2luc3RyW2ldOworICAgICAgICAgICAgICAgIGludCBpc2l6ZSA9IGluc3Ryc2l6ZShpbnN0ci0+aV9vcGFyZyk7CiAgICAgICAgICAgICAgICAgLyogUmVsYXRpdmUganVtcHMgYXJlIGNvbXB1dGVkIHJlbGF0aXZlIHRvCiAgICAgICAgICAgICAgICAgICAgdGhlIGluc3RydWN0aW9uIHBvaW50ZXIgYWZ0ZXIgZmV0Y2hpbmcKICAgICAgICAgICAgICAgICAgICB0aGUganVtcCBpbnN0cnVjdGlvbi4KICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGJzaXplICs9IGluc3Ryc2l6ZShpbnN0cik7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX2phYnMpCisgICAgICAgICAgICAgICAgYnNpemUgKz0gaXNpemU7CisgICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX2phYnMgfHwgaW5zdHItPmlfanJlbCkgewogICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyA9IGluc3RyLT5pX3RhcmdldC0+Yl9vZmZzZXQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdHItPmlfanJlbCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgZGVsdGEgPSBpbnN0ci0+aV90YXJnZXQtPmJfb2Zmc2V0IC0gYnNpemU7Ci0gICAgICAgICAgICAgICAgICAgIGluc3RyLT5pX29wYXJnID0gZGVsdGE7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9qcmVsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyAtPSBic2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluc3Ryc2l6ZShpbnN0ci0+aV9vcGFyZykgIT0gaXNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZGVkX2FyZ19yZWNvbXBpbGUgPSAxOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGluc3RyLT5pX29wYXJnID4gMHhmZmZmKQotICAgICAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmdfY291bnQrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC00NTA1LDcgKzUxMjUsNyBAQAogCiAgICAgICAgIFRoZSBpc3N1ZSBpcyB0aGF0IGluIHRoZSBmaXJzdCBsb29wIGJsb2Nrc2l6ZSgpIGlzIGNhbGxlZAogICAgICAgICB3aGljaCBjYWxscyBpbnN0cnNpemUoKSB3aGljaCByZXF1aXJlcyBpX29wYXJnIGJlIHNldAotICAgICAgICBhcHByb3ByaWF0ZWx5LiAgICAgICAgICBUaGVyZSBpcyBhIGJvb3RzdHJhcCBwcm9ibGVtIGJlY2F1c2UKKyAgICAgICAgYXBwcm9wcmlhdGVseS4gVGhlcmUgaXMgYSBib290c3RyYXAgcHJvYmxlbSBiZWNhdXNlCiAgICAgICAgIGlfb3BhcmcgaXMgY2FsY3VsYXRlZCBpbiB0aGUgc2Vjb25kIGxvb3AgYWJvdmUuCiAKICAgICAgICAgU28gd2UgbG9vcCB1bnRpbCB3ZSBzdG9wIHNlZWluZyBuZXcgRVhURU5ERURfQVJHcy4KQEAgLTQ1MTMsNyArNTEzMyw3IEBACiAgICAgICAgIG9uZXMgaW4ganVtcCBpbnN0cnVjdGlvbnMuICBTbyB0aGlzIHNob3VsZCBjb252ZXJnZQogICAgICAgICBmYWlybHkgcXVpY2tseS4KICAgICAqLwotICAgIH0gd2hpbGUgKGxhc3RfZXh0ZW5kZWRfYXJnX2NvdW50ICE9IGV4dGVuZGVkX2FyZ19jb3VudCk7CisgICAgfSB3aGlsZSAoZXh0ZW5kZWRfYXJnX3JlY29tcGlsZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTQ5LDggKzUxNjksMTIgQEAKICAgICAgICAgZmxhZ3MgfD0gQ09fTkVXTE9DQUxTIHwgQ09fT1BUSU1JWkVEOwogICAgICAgICBpZiAoc3RlLT5zdGVfbmVzdGVkKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fTkVTVEVEOwotICAgICAgICBpZiAoc3RlLT5zdGVfZ2VuZXJhdG9yKQorICAgICAgICBpZiAoc3RlLT5zdGVfZ2VuZXJhdG9yICYmICFzdGUtPnN0ZV9jb3JvdXRpbmUpCiAgICAgICAgICAgICBmbGFncyB8PSBDT19HRU5FUkFUT1I7CisgICAgICAgIGlmICghc3RlLT5zdGVfZ2VuZXJhdG9yICYmIHN0ZS0+c3RlX2Nvcm91dGluZSkKKyAgICAgICAgICAgIGZsYWdzIHw9IENPX0NPUk9VVElORTsKKyAgICAgICAgaWYgKHN0ZS0+c3RlX2dlbmVyYXRvciAmJiBzdGUtPnN0ZV9jb3JvdXRpbmUpCisgICAgICAgICAgICBmbGFncyB8PSBDT19BU1lOQ19HRU5FUkFUT1I7CiAgICAgICAgIGlmIChzdGUtPnN0ZV92YXJhcmdzKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fVkFSQVJHUzsKICAgICAgICAgaWYgKHN0ZS0+c3RlX3ZhcmtleXdvcmRzKQpAQCAtNDY1OSw5ICs1MjgzLDkgQEAKICAgICBjaGFyIGFyZ1sxMjhdOwogCiAgICAgKmFyZyA9ICdcMCc7Ci0gICAgaWYgKGktPmlfaGFzYXJnKQorICAgIGlmIChIQVNfQVJHKGktPmlfb3Bjb2RlKSkgewogICAgICAgICBzcHJpbnRmKGFyZywgImFyZzogJWQgIiwgaS0+aV9vcGFyZyk7Ci0KKyAgICB9CiAgICAgZnByaW50ZihzdGRlcnIsICJsaW5lOiAlZCwgb3Bjb2RlOiAlZCAlcyVzJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGktPmlfbGluZW5vLCBpLT5pX29wY29kZSwgYXJnLCBqYWJzLCBqcmVsKTsKIH0KQEAgLTQ3MTEsNyArNTMzNSw3IEBACiAKICAgICAvKiBTZXQgZmlyc3RsaW5lbm8gaWYgaXQgd2Fzbid0IGV4cGxpY2l0bHkgc2V0LiAqLwogICAgIGlmICghYy0+dS0+dV9maXJzdGxpbmVubykgewotICAgICAgICBpZiAoZW50cnlibG9jayAmJiBlbnRyeWJsb2NrLT5iX2luc3RyKQorICAgICAgICBpZiAoZW50cnlibG9jayAmJiBlbnRyeWJsb2NrLT5iX2luc3RyICYmIGVudHJ5YmxvY2stPmJfaW5zdHItPmlfbGluZW5vKQogICAgICAgICAgICAgYy0+dS0+dV9maXJzdGxpbmVubyA9IGVudHJ5YmxvY2stPmJfaW5zdHItPmlfbGluZW5vOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjLT51LT51X2ZpcnN0bGluZW5vID0gMTsKQEAgLTQ3MzMsNyArNTM1Nyw3IEBACiAKICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLmFfbG5vdGFiLCBhLmFfbG5vdGFiX29mZikgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEuYV9ieXRlY29kZSwgYS5hX29mZnNldCkgPCAwKQorICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEuYV9ieXRlY29kZSwgYS5hX29mZnNldCAqIHNpemVvZihfUHlfQ09ERVVOSVQpKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBjbyA9IG1ha2Vjb2RlKGMsICZhKTsKQEAgLTQ3NDksNCArNTM3MywzIEBACiB7CiAgICAgcmV0dXJuIFB5QVNUX0NvbXBpbGVFeChtb2QsIGZpbGVuYW1lLCBmbGFncywgLTEsIGFyZW5hKTsKIH0KLQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbmR2YXIuaCBiL1B5dGhvbi9jb25kdmFyLmgKaW5kZXggY2VkOTEwZi4uOWE3MWIxNyAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbmR2YXIuaAorKysgYi9QeXRob24vY29uZHZhci5oCkBAIC04OSw3ICs4OSw3IEBACiAKIC8qIHJldHVybiAwIGZvciBzdWNjZXNzLCAxIG9uIHRpbWVvdXQsIC0xIG9uIGVycm9yICovCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY29uZCwgUHlNVVRFWF9UICptdXQsIFBZX0xPTkdfTE9ORyB1cykKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmNvbmQsIFB5TVVURVhfVCAqbXV0LCBsb25nIGxvbmcgdXMpCiB7CiAgICAgaW50IHI7CiAgICAgc3RydWN0IHRpbWVzcGVjIHRzOwpAQCAtMjcwLDcgKzI3MCw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShpbnQpCi1QeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgUFlfTE9OR19MT05HIHVzKQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIGxvbmcgbG9uZyB1cykKIHsKICAgICByZXR1cm4gX1B5Q09ORF9XQUlUX01TKGN2LCBjcywgKERXT1JEKSh1cy8xMDAwKSk7CiB9CkBAIC0zNjMsNyArMzYzLDcgQEAKICAqIDIgdG8gaW5kaWNhdGUgdGhhdCB3ZSBkb24ndCBrbm93LgogICovCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIFBZX0xPTkdfTE9ORyB1cykKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBsb25nIGxvbmcgdXMpCiB7CiAgICAgcmV0dXJuIFNsZWVwQ29uZGl0aW9uVmFyaWFibGVTUlcoY3YsIGNzLCAoRFdPUkQpKHVzLzEwMDApLCAwKSA/IDIgOiAtMTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9kdG9hLmMgYi9QeXRob24vZHRvYS5jCmluZGV4IDNkYTU0NmUuLmVmY2FkYzMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9kdG9hLmMKKysrIGIvUHl0aG9uL2R0b2EuYwpAQCAtMTUxLDE4ICsxNTEsOSBAQAogI2VuZGlmCiAKIAotI2lmIGRlZmluZWQoSEFWRV9VSU5UMzJfVCkgJiYgZGVmaW5lZChIQVZFX0lOVDMyX1QpCi10eXBlZGVmIFBZX1VJTlQzMl9UIFVMb25nOwotdHlwZWRlZiBQWV9JTlQzMl9UIExvbmc7Ci0jZWxzZQotI2Vycm9yICJGYWlsZWQgdG8gZmluZCBhbiBleGFjdC13aWR0aCAzMi1iaXQgaW50ZWdlciB0eXBlIgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEhBVkVfVUlOVDY0X1QpCi0jZGVmaW5lIFVMTG9uZyBQWV9VSU5UNjRfVAotI2Vsc2UKLSN1bmRlZiBVTExvbmcKLSNlbmRpZgordHlwZWRlZiB1aW50MzJfdCBVTG9uZzsKK3R5cGVkZWYgaW50MzJfdCBMb25nOwordHlwZWRlZiB1aW50NjRfdCBVTExvbmc7CiAKICN1bmRlZiBERUJVRwogI2lmZGVmIFB5X0RFQlVHCkBAIC00NTcsMTMgKzQ0OCw4IEBACiBtdWx0YWRkKEJpZ2ludCAqYiwgaW50IG0sIGludCBhKSAgICAgICAvKiBtdWx0aXBseSBieSBtIGFuZCBhZGQgYSAqLwogewogICAgIGludCBpLCB3ZHM7Ci0jaWZkZWYgVUxMb25nCiAgICAgVUxvbmcgKng7CiAgICAgVUxMb25nIGNhcnJ5LCB5OwotI2Vsc2UKLSAgICBVTG9uZyBjYXJyeSwgKngsIHk7Ci0gICAgVUxvbmcgeGksIHo7Ci0jZW5kaWYKICAgICBCaWdpbnQgKmIxOwogCiAgICAgd2RzID0gYi0+d2RzOwpAQCAtNDcxLDE3ICs0NTcsOSBAQAogICAgIGkgPSAwOwogICAgIGNhcnJ5ID0gYTsKICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgIHkgPSAqeCAqIChVTExvbmcpbSArIGNhcnJ5OwogICAgICAgICBjYXJyeSA9IHkgPj4gMzI7CiAgICAgICAgICp4KysgPSAoVUxvbmcpKHkgJiBGRkZGRkZGRik7Ci0jZWxzZQotICAgICAgICB4aSA9ICp4OwotICAgICAgICB5ID0gKHhpICYgMHhmZmZmKSAqIG0gKyBjYXJyeTsKLSAgICAgICAgeiA9ICh4aSA+PiAxNikgKiBtICsgKHkgPj4gMTYpOwotICAgICAgICBjYXJyeSA9IHogPj4gMTY7Ci0gICAgICAgICp4KysgPSAoeiA8PCAxNikgKyAoeSAmIDB4ZmZmZik7Ci0jZW5kaWYKICAgICB9CiAgICAgd2hpbGUoKytpIDwgd2RzKTsKICAgICBpZiAoY2FycnkpIHsKQEAgLTY0MiwxMiArNjIwLDcgQEAKICAgICBpbnQgaywgd2EsIHdiLCB3YzsKICAgICBVTG9uZyAqeCwgKnhhLCAqeGFlLCAqeGIsICp4YmUsICp4YywgKnhjMDsKICAgICBVTG9uZyB5OwotI2lmZGVmIFVMTG9uZwogICAgIFVMTG9uZyBjYXJyeSwgejsKLSNlbHNlCi0gICAgVUxvbmcgY2FycnksIHo7Ci0gICAgVUxvbmcgejI7Ci0jZW5kaWYKIAogICAgIGlmICgoIWEtPnhbMF0gJiYgYS0+d2RzID09IDEpIHx8ICghYi0+eFswXSAmJiBiLT53ZHMgPT0gMSkpIHsKICAgICAgICAgYyA9IEJhbGxvYygwKTsKQEAgLTY3OSw3ICs2NTIsNiBAQAogICAgIHhiID0gYi0+eDsKICAgICB4YmUgPSB4YiArIHdiOwogICAgIHhjMCA9IGMtPng7Ci0jaWZkZWYgVUxMb25nCiAgICAgZm9yKDsgeGIgPCB4YmU7IHhjMCsrKSB7CiAgICAgICAgIGlmICgoeSA9ICp4YisrKSkgewogICAgICAgICAgICAgeCA9IHhhOwpAQCAtNjk0LDM5ICs2NjYsNiBAQAogICAgICAgICAgICAgKnhjID0gKFVMb25nKWNhcnJ5OwogICAgICAgICB9CiAgICAgfQotI2Vsc2UKLSAgICBmb3IoOyB4YiA8IHhiZTsgeGIrKywgeGMwKyspIHsKLSAgICAgICAgaWYgKHkgPSAqeGIgJiAweGZmZmYpIHsKLSAgICAgICAgICAgIHggPSB4YTsKLSAgICAgICAgICAgIHhjID0geGMwOwotICAgICAgICAgICAgY2FycnkgPSAwOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIHogPSAoKnggJiAweGZmZmYpICogeSArICgqeGMgJiAweGZmZmYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6ID4+IDE2OwotICAgICAgICAgICAgICAgIHoyID0gKCp4KysgPj4gMTYpICogeSArICgqeGMgPj4gMTYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6MiA+PiAxNjsKLSAgICAgICAgICAgICAgICBTdG9yZWluYyh4YywgejIsIHopOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUoeCA8IHhhZSk7Ci0gICAgICAgICAgICAqeGMgPSBjYXJyeTsKLSAgICAgICAgfQotICAgICAgICBpZiAoeSA9ICp4YiA+PiAxNikgewotICAgICAgICAgICAgeCA9IHhhOwotICAgICAgICAgICAgeGMgPSB4YzA7Ci0gICAgICAgICAgICBjYXJyeSA9IDA7Ci0gICAgICAgICAgICB6MiA9ICp4YzsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB6ID0gKCp4ICYgMHhmZmZmKSAqIHkgKyAoKnhjID4+IDE2KSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0geiA+PiAxNjsKLSAgICAgICAgICAgICAgICBTdG9yZWluYyh4YywgeiwgejIpOwotICAgICAgICAgICAgICAgIHoyID0gKCp4KysgPj4gMTYpICogeSArICgqeGMgJiAweGZmZmYpICsgY2Fycnk7Ci0gICAgICAgICAgICAgICAgY2FycnkgPSB6MiA+PiAxNjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlKHggPCB4YWUpOwotICAgICAgICAgICAgKnhjID0gejI7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKICAgICBmb3IoeGMwID0gYy0+eCwgeGMgPSB4YzAgKyB3Yzsgd2MgPiAwICYmICEqLS14YzsgLS13YykgOwogICAgIGMtPndkcyA9IHdjOwogICAgIHJldHVybiBjOwpAQCAtNzQ3LDcgKzY4Niw3IEBACiB7CiAgICAgQmlnaW50ICpiMSwgKnA1LCAqcDUxOwogICAgIGludCBpOwotICAgIHN0YXRpYyBpbnQgcDA1WzNdID0geyA1LCAyNSwgMTI1IH07CisgICAgc3RhdGljIGNvbnN0IGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKIAogICAgIGlmICgoaSA9IGsgJiAzKSkgewogICAgICAgICBiID0gbXVsdGFkZChiLCBwMDVbaS0xXSwgMCk7CkBAIC04MDMsNyArNzQyLDcgQEAKIHsKICAgICBCaWdpbnQgKmIxLCAqcDUsICpwNTE7CiAgICAgaW50IGk7Ci0gICAgc3RhdGljIGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKKyAgICBzdGF0aWMgY29uc3QgaW50IHAwNVszXSA9IHsgNSwgMjUsIDEyNSB9OwogCiAgICAgaWYgKChpID0gayAmIDMpKSB7CiAgICAgICAgIGIgPSBtdWx0YWRkKGIsIHAwNVtpLTFdLCAwKTsKQEAgLTkzNSwxMiArODc0LDcgQEAKICAgICBCaWdpbnQgKmM7CiAgICAgaW50IGksIHdhLCB3YjsKICAgICBVTG9uZyAqeGEsICp4YWUsICp4YiwgKnhiZSwgKnhjOwotI2lmZGVmIFVMTG9uZwogICAgIFVMTG9uZyBib3Jyb3csIHk7Ci0jZWxzZQotICAgIFVMb25nIGJvcnJvdywgeTsKLSAgICBVTG9uZyB6OwotI2VuZGlmCiAKICAgICBpID0gY21wKGEsYik7CiAgICAgaWYgKCFpKSB7CkBAIC05NzEsNyArOTA1LDYgQEAKICAgICB4YmUgPSB4YiArIHdiOwogICAgIHhjID0gYy0+eDsKICAgICBib3Jyb3cgPSAwOwotI2lmZGVmIFVMTG9uZwogICAgIGRvIHsKICAgICAgICAgeSA9IChVTExvbmcpKnhhKysgLSAqeGIrKyAtIGJvcnJvdzsKICAgICAgICAgYm9ycm93ID0geSA+PiAzMiAmIChVTG9uZykxOwpAQCAtOTgzLDIzICs5MTYsNiBAQAogICAgICAgICBib3Jyb3cgPSB5ID4+IDMyICYgKFVMb25nKTE7CiAgICAgICAgICp4YysrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwogICAgIH0KLSNlbHNlCi0gICAgZG8gewotICAgICAgICB5ID0gKCp4YSAmIDB4ZmZmZikgLSAoKnhiICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgeiA9ICgqeGErKyA+PiAxNikgLSAoKnhiKysgPj4gMTYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICBTdG9yZWluYyh4YywgeiwgeSk7Ci0gICAgfQotICAgIHdoaWxlKHhiIDwgeGJlKTsKLSAgICB3aGlsZSh4YSA8IHhhZSkgewotICAgICAgICB5ID0gKCp4YSAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgIHogPSAoKnhhKysgPj4gMTYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICBTdG9yZWluYyh4YywgeiwgeSk7Ci0gICAgfQotI2VuZGlmCiAgICAgd2hpbGUoISotLXhjKQogICAgICAgICB3YS0tOwogICAgIGMtPndkcyA9IHdhOwpAQCAtMTI0NCwxMiArMTE2MCw3IEBACiB7CiAgICAgaW50IG47CiAgICAgVUxvbmcgKmJ4LCAqYnhlLCBxLCAqc3gsICpzeGU7Ci0jaWZkZWYgVUxMb25nCiAgICAgVUxMb25nIGJvcnJvdywgY2FycnksIHksIHlzOwotI2Vsc2UKLSAgICBVTG9uZyBib3Jyb3csIGNhcnJ5LCB5LCB5czsKLSAgICBVTG9uZyBzaSwgeiwgenM7Ci0jZW5kaWYKIAogICAgIG4gPSBTLT53ZHM7CiAjaWZkZWYgREVCVUcKQEAgLTEyNzEsMjMgKzExODIsMTEgQEAKICAgICAgICAgYm9ycm93ID0gMDsKICAgICAgICAgY2FycnkgPSAwOwogICAgICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgICAgICB5cyA9ICpzeCsrICogKFVMTG9uZylxICsgY2Fycnk7CiAgICAgICAgICAgICBjYXJyeSA9IHlzID4+IDMyOwogICAgICAgICAgICAgeSA9ICpieCAtICh5cyAmIEZGRkZGRkZGKSAtIGJvcnJvdzsKICAgICAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKICAgICAgICAgICAgICpieCsrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwotI2Vsc2UKLSAgICAgICAgICAgIHNpID0gKnN4Kys7Ci0gICAgICAgICAgICB5cyA9IChzaSAmIDB4ZmZmZikgKiBxICsgY2Fycnk7Ci0gICAgICAgICAgICB6cyA9IChzaSA+PiAxNikgKiBxICsgKHlzID4+IDE2KTsKLSAgICAgICAgICAgIGNhcnJ5ID0genMgPj4gMTY7Ci0gICAgICAgICAgICB5ID0gKCpieCAmIDB4ZmZmZikgLSAoeXMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHkgJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIHogPSAoKmJ4ID4+IDE2KSAtICh6cyAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgICAgICBib3Jyb3cgPSAoeiAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICAgICAgU3RvcmVpbmMoYngsIHosIHkpOwotI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgd2hpbGUoc3ggPD0gc3hlKTsKICAgICAgICAgaWYgKCEqYnhlKSB7CkBAIC0xMzA0LDIzICsxMjAzLDExIEBACiAgICAgICAgIGJ4ID0gYi0+eDsKICAgICAgICAgc3ggPSBTLT54OwogICAgICAgICBkbyB7Ci0jaWZkZWYgVUxMb25nCiAgICAgICAgICAgICB5cyA9ICpzeCsrICsgY2Fycnk7CiAgICAgICAgICAgICBjYXJyeSA9IHlzID4+IDMyOwogICAgICAgICAgICAgeSA9ICpieCAtICh5cyAmIEZGRkZGRkZGKSAtIGJvcnJvdzsKICAgICAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKICAgICAgICAgICAgICpieCsrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwotI2Vsc2UKLSAgICAgICAgICAgIHNpID0gKnN4Kys7Ci0gICAgICAgICAgICB5cyA9IChzaSAmIDB4ZmZmZikgKyBjYXJyeTsKLSAgICAgICAgICAgIHpzID0gKHNpID4+IDE2KSArICh5cyA+PiAxNik7Ci0gICAgICAgICAgICBjYXJyeSA9IHpzID4+IDE2OwotICAgICAgICAgICAgeSA9ICgqYnggJiAweGZmZmYpIC0gKHlzICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICB6ID0gKCpieCA+PiAxNikgLSAoenMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIFN0b3JlaW5jKGJ4LCB6LCB5KTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHdoaWxlKHN4IDw9IHN4ZSk7CiAgICAgICAgIGJ4ID0gYi0+eDsKQEAgLTIzMTUsNyArMjIwMiw3IEBACiB9CiAKIHN0YXRpYyBjaGFyICoKLW5ydl9hbGxvYyhjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKK25ydl9hbGxvYyhjb25zdCBjaGFyICpzLCBjaGFyICoqcnZlLCBpbnQgbikKIHsKICAgICBjaGFyICpydiwgKnQ7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX3dpbi5jIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKaW5kZXggZjJjNzk2ZS4uMDUwNTBjZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfd2luLmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfd2luLmMKQEAgLTI0LDEyICsyNCwxMCBAQAogI2RlZmluZSBQWURfREVCVUdfU1VGRklYICIiCiAjZW5kaWYKIAotI2RlZmluZSBTVFJJTkdJWkUyKHgpICN4Ci0jZGVmaW5lIFNUUklOR0laRSh4KSBTVFJJTkdJWkUyKHgpCiAjaWZkZWYgUFlEX1BMQVRGT1JNX1RBRwotI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFNUUklOR0laRShQWV9NQUpPUl9WRVJTSU9OKSBTVFJJTkdJWkUoUFlfTUlOT1JfVkVSU0lPTikgIi0iIFBZRF9QTEFURk9STV9UQUcgIi5weWQiCisjZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgUHlfU1RSSU5HSUZZKFBZX01BSk9SX1ZFUlNJT04pIFB5X1NUUklOR0lGWShQWV9NSU5PUl9WRVJTSU9OKSAiLSIgUFlEX1BMQVRGT1JNX1RBRyAiLnB5ZCIKICNlbHNlCi0jZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgU1RSSU5HSVpFKFBZX01BSk9SX1ZFUlNJT04pIFNUUklOR0laRShQWV9NSU5PUl9WRVJTSU9OKSAiLnB5ZCIKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgogI2VuZGlmCiAKICNkZWZpbmUgUFlEX1VOVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIucHlkIgpAQCAtNDMsNyArNDEsNyBAQAogLyogQ2FzZSBpbnNlbnNpdGl2ZSBzdHJpbmcgY29tcGFyZSwgdG8gYXZvaWQgYW55IGRlcGVuZGVuY2llcyBvbiBwYXJ0aWN1bGFyCiAgICBDIFJUTCBpbXBsZW1lbnRhdGlvbnMgKi8KIAotc3RhdGljIGludCBzdHJjYXNlY21wIChjaGFyICpzdHJpbmcxLCBjaGFyICpzdHJpbmcyKQorc3RhdGljIGludCBzdHJjYXNlY21wIChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaGFyICpzdHJpbmcyKQogewogICAgIGludCBmaXJzdCwgc2Vjb25kOwogCmRpZmYgLS1naXQgYS9QeXRob24vZXJyb3JzLmMgYi9QeXRob24vZXJyb3JzLmMKaW5kZXggNmNjMGMyMC4uOTE4ZjRkZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2Vycm9ycy5jCisrKyBiL1B5dGhvbi9lcnJvcnMuYwpAQCAtNTIsNiArNTIsMjAgQEAKICAgICBQeV9YREVDUkVGKG9sZHRyYWNlYmFjayk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCoKK19QeUVycl9DcmVhdGVFeGNlcHRpb24oUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoZXhjZXB0aW9uKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGwoZXhjZXB0aW9uLCB2YWx1ZSwgTlVMTCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxBcmcxKGV4Y2VwdGlvbiwgdmFsdWUpOworICAgIH0KK30KKwogdm9pZAogUHlFcnJfU2V0T2JqZWN0KFB5T2JqZWN0ICpleGNlcHRpb24sIFB5T2JqZWN0ICp2YWx1ZSkKIHsKQEAgLTY2LDYgKzgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKICAgICBleGNfdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKICAgICBpZiAoZXhjX3ZhbHVlICE9IE5VTEwgJiYgZXhjX3ZhbHVlICE9IFB5X05vbmUpIHsKQEAgLTczLDI4ICs4OCwyMSBAQAogICAgICAgICBQeV9JTkNSRUYoZXhjX3ZhbHVlKTsKICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgICAgICAvKiBXZSBtdXN0IG5vcm1hbGl6ZSB0aGUgdmFsdWUgcmlnaHQgbm93ICovCi0gICAgICAgICAgICBQeU9iamVjdCAqYXJncywgKmZpeGVkX3ZhbHVlOworICAgICAgICAgICAgUHlPYmplY3QgKmZpeGVkX3ZhbHVlOwogCi0gICAgICAgICAgICAvKiBJc3N1ZSAjMjM1NzE6IFB5RXZhbF9DYWxsT2JqZWN0KCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KKyAgICAgICAgICAgIC8qIElzc3VlICMyMzU3MTogZnVuY3Rpb25zIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuCiAgICAgICAgICAgICAgICBleGNlcHRpb24gc2V0ICovCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCB2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7Ci0gICAgICAgICAgICBmaXhlZF92YWx1ZSA9IGFyZ3MgPwotICAgICAgICAgICAgICAgIFB5RXZhbF9DYWxsT2JqZWN0KGV4Y2VwdGlvbiwgYXJncykgOiBOVUxMOwotICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIGZpeGVkX3ZhbHVlID0gX1B5RXJyX0NyZWF0ZUV4Y2VwdGlvbihleGNlcHRpb24sIHZhbHVlKTsKICAgICAgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgaWYgKGZpeGVkX3ZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBpZiAoZml4ZWRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgdmFsdWUgPSBmaXhlZF92YWx1ZTsKICAgICAgICAgfQorCiAgICAgICAgIC8qIEF2b2lkIHJlZmVyZW5jZSBjeWNsZXMgdGhyb3VnaCB0aGUgY29udGV4dCBjaGFpbi4KICAgICAgICAgICAgVGhpcyBpcyBPKGNoYWluIGxlbmd0aCkgYnV0IGNvbnRleHQgY2hhaW5zIGFyZQogICAgICAgICAgICB1c3VhbGx5IHZlcnkgc2hvcnQuIFNlbnNpdGl2ZSByZWFkZXJzIG1heSB0cnkKQEAgLTExMCw3ICsxMTgsOCBAQAogICAgICAgICAgICAgICAgIG8gPSBjb250ZXh0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWx1ZSwgZXhjX3ZhbHVlKTsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihleGNfdmFsdWUpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjU4LDI1ICsyNjcsMTUgQEAKICAgICAgICAgICAgY2xhc3MuCiAgICAgICAgICovCiAgICAgICAgIGlmICghaW5jbGFzcyB8fCAhaXNfc3ViY2xhc3MpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzOworICAgICAgICAgICAgUHlPYmplY3QgKmZpeGVkX3ZhbHVlOwogCi0gICAgICAgICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlOworICAgICAgICAgICAgZml4ZWRfdmFsdWUgPSBfUHlFcnJfQ3JlYXRlRXhjZXB0aW9uKHR5cGUsIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChmaXhlZF92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKLSAgICAgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KHR5cGUsIGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICB2YWx1ZSA9IHJlczsKKyAgICAgICAgICAgIHZhbHVlID0gZml4ZWRfdmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgLyogaWYgdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZSBkb2Vzbid0IGV4YWN0bHkgbWF0Y2ggdGhlCiAgICAgICAgICAgIGNsYXNzIG9mIHRoZSB0eXBlLCBiZWxpZXZlIHRoZSBpbnN0YW5jZQpAQCAtNDAyLDYgKzQwMSw0NyBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK19QeUVycl9Gb3JtYXRWRnJvbUNhdXNlKFB5T2JqZWN0ICpleGNlcHRpb24sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKK3sKKyAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdmFsMiwgKnRiOworCisgICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOworICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwsICZ0Yik7CisgICAgaWYgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrKHZhbCwgdGIpOworICAgICAgICBQeV9ERUNSRUYodGIpOworICAgIH0KKyAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOworCisgICAgUHlFcnJfRm9ybWF0VihleGNlcHRpb24sIGZvcm1hdCwgdmFyZ3MpOworCisgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7CisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwyLCAmdGIpOworICAgIFB5X0lOQ1JFRih2YWwpOworICAgIFB5RXhjZXB0aW9uX1NldENhdXNlKHZhbDIsIHZhbCk7CisgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOworICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwyLCB0Yik7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QgKgorX1B5RXJyX0Zvcm1hdEZyb21DYXVzZShQeU9iamVjdCAqZXhjZXB0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICB2YV9saXN0IHZhcmdzOworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgZm9ybWF0KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCisgICAgX1B5RXJyX0Zvcm1hdFZGcm9tQ2F1c2UoZXhjZXB0aW9uLCBmb3JtYXQsIHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworICAgIHJldHVybiBOVUxMOworfQorCiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gc2V0IGEgdHlwZSBlcnJvciBleGNlcHRpb24gYW5kIHJldHVybiAwICovCiAKIGludApAQCAtNzAxLDUxICs3NDEsNjEgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5T2JqZWN0ICoKLVB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK1B5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKm1zZywKKyAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICprd2FyZ3MsICplcnJvcjsKKyAgICBpbnQgaXNzdWJjbGFzczsKKyAgICBQeU9iamVjdCAqa3dhcmdzLCAqZXJyb3I7CiAKLSAgICBpZiAobXNnID09IE5VTEwpCisgICAgaXNzdWJjbGFzcyA9IFB5T2JqZWN0X0lzU3ViY2xhc3MoZXhjZXB0aW9uLCBQeUV4Y19JbXBvcnRFcnJvcik7CisgICAgaWYgKGlzc3ViY2xhc3MgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgfQorICAgIGVsc2UgaWYgKCFpc3N1YmNsYXNzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBhIHN1YmNsYXNzIG9mIEltcG9ydEVycm9yIik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIGlmIChtc2cgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0ZWQgYSBtZXNzYWdlIGFyZ3VtZW50Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChuYW1lID09IE5VTEwpIHsKICAgICAgICAgbmFtZSA9IFB5X05vbmU7CiAgICAgfQotCiAgICAgaWYgKHBhdGggPT0gTlVMTCkgewogICAgICAgICBwYXRoID0gUHlfTm9uZTsKICAgICB9CiAKLSAgICBQeV9JTkNSRUYobXNnKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIG1zZyk7Ci0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAibmFtZSIsIG5hbWUpIDwgMCkKKyAgICBrd2FyZ3MgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGt3YXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAibmFtZSIsIG5hbWUpIDwgMCkgewogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgInBhdGgiLCBwYXRoKSA8IDApCisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJwYXRoIiwgcGF0aCkgPCAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CiAKLSAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGwoUHlFeGNfSW1wb3J0RXJyb3IsIGFyZ3MsIGt3YXJncyk7CisgICAgZXJyb3IgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGV4Y2VwdGlvbiwgJm1zZywgMSwga3dhcmdzKTsKICAgICBpZiAoZXJyb3IgIT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRPYmplY3QoKFB5T2JqZWN0ICopUHlfVFlQRShlcnJvciksIGVycm9yKTsKICAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKICAgICB9CiAKIGRvbmU6Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwogICAgIHJldHVybiBOVUxMOwogfQogCitQeU9iamVjdCAqCitQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqbXNnLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgcmV0dXJuIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlFeGNfSW1wb3J0RXJyb3IsIG1zZywgbmFtZSwgcGF0aCk7Cit9CisKIHZvaWQKIF9QeUVycl9CYWRJbnRlcm5hbENhbGwoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pCiB7CmRpZmYgLS1naXQgYS9QeXRob24vZmlsZXV0aWxzLmMgYi9QeXRob24vZmlsZXV0aWxzLmMKaW5kZXggMjNlZWQ3MS4uZTNiZmIwYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2ZpbGV1dGlscy5jCisrKyBiL1B5dGhvbi9maWxldXRpbHMuYwpAQCAtNDQsNyArNDQsNyBAQAogI2VuZGlmCiAgICAgaW50IHZhbGlkOwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKLSAgICB2YWxpZCA9IF9QeVZlcmlmeV9mZChmZCkgJiYgaXNhdHR5KGZkKTsKKyAgICB2YWxpZCA9IGlzYXR0eShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKICAgICBpZiAoIXZhbGlkKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTEwNCwyMyArMTA0LDI0IEBACiAgICAgY2hhciAqbG9jOwogI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCiAgICAgY2hhciAqY29kZXNldCwgKiphbGlhczsKLSAgICBjaGFyIGVuY29kaW5nWzEwMF07CisgICAgY2hhciBlbmNvZGluZ1syMF07ICAgLyogbG9uZ2VzdCBuYW1lOiAiaXNvXzY0Ni5pcnZfMTk5MVwwIiAqLwogICAgIGludCBpc19hc2NpaTsKICAgICB1bnNpZ25lZCBpbnQgaTsKICAgICBjaGFyKiBhc2NpaV9hbGlhc2VzW10gPSB7CiAgICAgICAgICJhc2NpaSIsCisgICAgICAgIC8qIEFsaWFzZXMgZnJvbSBMaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkgKi8KICAgICAgICAgIjY0NiIsCi0gICAgICAgICJhbnNpLXgzLjQtMTk2OCIsCi0gICAgICAgICJhbnNpLXgzLTQtMTk2OCIsCi0gICAgICAgICJhbnNpLXgzLjQtMTk4NiIsCisgICAgICAgICJhbnNpX3gzLjRfMTk2OCIsCisgICAgICAgICJhbnNpX3gzLjRfMTk4NiIsCisgICAgICAgICJhbnNpX3gzXzRfMTk2OCIsCiAgICAgICAgICJjcDM2NyIsCiAgICAgICAgICJjc2FzY2lpIiwKICAgICAgICAgImlibTM2NyIsCi0gICAgICAgICJpc282NDYtdXMiLAotICAgICAgICAiaXNvLTY0Ni5pcnYtMTk5MSIsCi0gICAgICAgICJpc28taXItNiIsCisgICAgICAgICJpc282NDZfdXMiLAorICAgICAgICAiaXNvXzY0Ni5pcnZfMTk5MSIsCisgICAgICAgICJpc29faXJfNiIsCiAgICAgICAgICJ1cyIsCi0gICAgICAgICJ1cy1hc2NpaSIsCisgICAgICAgICJ1c19hc2NpaSIsCiAgICAgICAgIE5VTEwKICAgICB9OwogI2VuZGlmCkBAIC02MTMsMTMgKzYxNCw5IEBACiAgICAgSEFORExFIGg7CiAgICAgaW50IHR5cGU7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIGggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICBlbHNlIHsKLSAgICAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgICAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7Ci0gICAgICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgfQorICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICBoID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKIAogICAgIGlmIChoID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CiAgICAgICAgIC8qIGVycm5vIGlzIGFscmVhZHkgc2V0IGJ5IF9nZXRfb3NmaGFuZGxlLCBidXQgd2UgYWxzbyBzZXQKQEAgLTY4Myw2ICs2ODAsMTAgQEAKIHsKICAgICBpbnQgcmVzOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IF9QeV9mc3RhdF9ub3JhaXNlKGZkLCBzdGF0dXMpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCkBAIC03MzgsMTIgKzczOSw2IEBACiAgICAgSEFORExFIGhhbmRsZTsKICAgICBEV09SRCBmbGFnczsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAocmFpc2UpCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTc5NCw3ICs3ODksNyBAQAogICAgIGludCByZXF1ZXN0OwogICAgIGludCBlcnI7CiAjZW5kaWYKLSAgICBpbnQgZmxhZ3M7CisgICAgaW50IGZsYWdzLCBuZXdfZmxhZ3M7CiAgICAgaW50IHJlczsKICNlbmRpZgogCkBAIC04MTUsMTIgKzgxMCw2IEBACiAgICAgfQogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAocmFpc2UpCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAgICAgaGFuZGxlID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmZCk7CiAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKQEAgLTg4NSwxMCArODc0LDE4IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAoaW5oZXJpdGFibGUpCi0gICAgICAgIGZsYWdzICY9IH5GRF9DTE9FWEVDOwotICAgIGVsc2UKLSAgICAgICAgZmxhZ3MgfD0gRkRfQ0xPRVhFQzsKKyAgICBpZiAoaW5oZXJpdGFibGUpIHsKKyAgICAgICAgbmV3X2ZsYWdzID0gZmxhZ3MgJiB+RkRfQ0xPRVhFQzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG5ld19mbGFncyA9IGZsYWdzIHwgRkRfQ0xPRVhFQzsKKyAgICB9CisKKyAgICBpZiAobmV3X2ZsYWdzID09IGZsYWdzKSB7CisgICAgICAgIC8qIEZEX0NMT0VYRUMgZmxhZyBhbHJlYWR5IHNldC9jbGVhcmVkOiBub3RoaW5nIHRvIGRvICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIHJlcyA9IGZjbnRsKGZkLCBGX1NFVEZELCBmbGFncyk7CiAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgaWYgKHJhaXNlKQpAQCAtMTE2OSwxOSArMTE2NiwxNSBAQAogICAgIGludCBlcnI7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICAvKiBfUHlfcmVhZCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsIG90aGVyd2lzZSB0aGUKICAgICAgKiBjYWxsZXIgbWF5IHRoaW5rIHRoYXQgcmVhZCgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgdGhlIHNpZ25hbAogICAgICAqIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gKi8KICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KLSAgICAgICAgZXJyID0gZXJybm87Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGNvdW50ID4gSU5UX01BWCkgewogICAgICAgICAvKiBPbiBXaW5kb3dzLCB0aGUgY291bnQgcGFyYW1ldGVyIG9mIHJlYWQoKSBpcyBhbiBpbnQgKi8KQEAgLTEyMzUsMTYgKzEyMjgsNiBAQAogICAgIGludCBlcnI7CiAgICAgaW50IGFzeW5jX2VyciA9IDA7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgaWYgKGdpbF9oZWxkKSB7Ci0gICAgICAgICAgICAvKiBzYXZlL3Jlc3RvcmUgZXJybm8gYmVjYXVzZSBQeUVycl9TZXRGcm9tRXJybm8oKSBjYW4gbW9kaWZ5IGl0ICovCi0gICAgICAgICAgICBlcnIgPSBlcnJubzsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgIGVycm5vID0gZXJyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGlmIChjb3VudCA+IDMyNzY3ICYmIGlzYXR0eShmZCkpIHsKQEAgLTEzMjQsNiArMTMwNywxMCBAQAogUHlfc3NpemVfdAogX1B5X3dyaXRlKGludCBmZCwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgY291bnQpCiB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgorCiAgICAgLyogX1B5X3dyaXRlKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwgb3RoZXJ3aXNlIHRoZQogICAgICAqIGNhbGxlciBtYXkgdGhpbmsgdGhhdCB3cml0ZSgpIHdhcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCBhbmQgdGhlIHNpZ25hbAogICAgICAqIGhhbmRsZXIgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gKi8KQEAgLTE0NzMsMTAgKzE0NjAsOSBAQAogICAgIERXT1JEIGZ0eXBlOwogI2VuZGlmCiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICkBAIC0xNjAwLDg0ICsxNTg2LDMgQEAKICAgICByZXR1cm4gLTE7CiB9CiAjZW5kaWYKLQotI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgX01TQ19WRVIgPj0gMTQwMCAmJiBfTVNDX1ZFUiA8IDE5MDAKLS8qIExlZ2FjeSBpbXBsZW1lbnRhdGlvbiBvZiBfUHlWZXJpZnlfZmQgd2hpbGUgdHJhbnNpdGlvbmluZyB0bwotICogTVNWQyAxNC4wLiBUaGlzIHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQuIChpc3N1ZTIzNTI0KQotICovCi0KLS8qIE1pY3Jvc29mdCBDUlQgaW4gVlMyMDA1IGFuZCBoaWdoZXIgd2lsbCB2ZXJpZnkgdGhhdCBhIGZpbGVoYW5kbGUgaXMKLSAqIHZhbGlkIGFuZCByYWlzZSBhbiBhc3NlcnRpb24gaWYgaXQgaXNuJ3QuCi0gKiBOb3JtYWxseSwgYW4gaW52YWxpZCBmZCBpcyBsaWtlbHkgdG8gYmUgYSBDIHByb2dyYW0gZXJyb3IgYW5kIHRoZXJlZm9yZQotICogYW4gYXNzZXJ0aW9uIGNhbiBiZSB1c2VmdWwsIGJ1dCBpdCBkb2VzIGNvbnRyYWRpY3QgdGhlIFBPU0lYIHN0YW5kYXJkCi0gKiB3aGljaCBmb3Igd3JpdGUoMikgc3RhdGVzOgotICogICAgIk90aGVyd2lzZSwgLTEgc2hhbGwgYmUgcmV0dXJuZWQgYW5kIGVycm5vIHNldCB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuIgotICogICAgIltFQkFERl0gVGhlIGZpbGRlcyBhcmd1bWVudCBpcyBub3QgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3Igb3BlbiBmb3IKLSAqICAgICB3cml0aW5nLiIKLSAqIEZ1cnRoZXJtb3JlLCBweXRob24gYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGFueSBvbGQgaW50ZWdlcgotICogYXMgYSBmZCBhbmQgc2hvdWxkIG1lcmVseSByYWlzZSBhIHB5dGhvbiBleGNlcHRpb24gb24gZXJyb3IuCi0gKiBUaGUgTWljcm9zb2Z0IENSVCBkb2Vzbid0IHByb3ZpZGUgYW4gb2ZmaWNpYWwgd2F5IHRvIGNoZWNrIGZvciB0aGUKLSAqIHZhbGlkaXR5IG9mIGEgZmlsZSBkZXNjcmlwdG9yLCBidXQgd2UgY2FuIGVtdWxhdGUgaXRzIGludGVybmFsIGJlaGF2aW91cgotICogYnkgdXNpbmcgdGhlIGV4cG9ydGVkIF9fcGluZm8gZGF0YSBtZW1iZXIgYW5kIGtub3dsZWRnZSBvZiB0aGUKLSAqIGludGVybmFsIHN0cnVjdHVyZXMgaW52b2x2ZWQuCi0gKiBUaGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIHVwZGF0ZWQgZm9yIGVhY2ggdmVyc2lvbiBvZiB2aXN1YWwgc3R1ZGlvCi0gKiBhY2NvcmRpbmcgdG8gdGhlIGZpbGUgaW50ZXJuYWwuaCBpbiB0aGUgQ1JUIHNvdXJjZSwgdW50aWwgTVMgY29tZXMKLSAqIHVwIHdpdGggYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0aGlzLgotICogKGFsbCBvZiB0aGlzIGlzIHRvIGF2b2lkIGdsb2JhbGx5IG1vZGlmeWluZyB0aGUgQ1JUIGJlaGF2aW91ciB1c2luZwotICogX3NldF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyKCkgYW5kIF9DcnRTZXRSZXBvcnRNb2RlKCkpCi0gKi8KLS8qIFRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUgc3RydWN0dXJlIGlzIGRldGVybWluZWQgYXQgcnVudGltZS4KLSAqIE9ubHkgdGhlIGZpcnN0IGl0ZW1zIG11c3QgYmUgcHJlc2VudC4KLSAqLwotdHlwZWRlZiBzdHJ1Y3QgewotICAgIGludHB0cl90IG9zZmhuZDsKLSAgICBjaGFyIG9zZmlsZTsKLX0gbXlfaW9pbmZvOwotCi1leHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpIGNoYXIgKiBfX3Bpb2luZm9bXTsKLSNkZWZpbmUgSU9JTkZPX0wyRSA1Ci0jZGVmaW5lIElPSU5GT19BUlJBWVMgNjQKLSNkZWZpbmUgSU9JTkZPX0FSUkFZX0VMVFMgICAoMSA8PCBJT0lORk9fTDJFKQotI2RlZmluZSBfTkhBTkRMRV8gICAgICAgICAgIChJT0lORk9fQVJSQVlTICogSU9JTkZPX0FSUkFZX0VMVFMpCi0jZGVmaW5lIEZPUEVOIDB4MDEKLSNkZWZpbmUgX05PX0NPTlNPTEVfRklMRU5PIChpbnRwdHJfdCktMgotCi0vKiBUaGlzIGZ1bmN0aW9uIGVtdWxhdGVzIHdoYXQgdGhlIHdpbmRvd3MgQ1JUIGRvZXMgdG8gdmFsaWRhdGUgZmlsZSBoYW5kbGVzICovCi1pbnQKLV9QeVZlcmlmeV9mZChpbnQgZmQpCi17Ci0gICAgY29uc3QgaW50IGkxID0gZmQgPj4gSU9JTkZPX0wyRTsKLSAgICBjb25zdCBpbnQgaTIgPSBmZCAmICgoMSA8PCBJT0lORk9fTDJFKSAtIDEpOwotCi0gICAgc3RhdGljIHNpemVfdCBzaXplb2ZfaW9pbmZvID0gMDsKLQotICAgIC8qIERldGVybWluZSB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGlvaW5mbyBzdHJ1Y3R1cmUsCi0gICAgICogYXMgdXNlZCBieSB0aGUgQ1JUIGxvYWRlZCBpbiBtZW1vcnkKLSAgICAgKi8KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwICYmIF9fcGlvaW5mb1swXSAhPSBOVUxMKSB7Ci0gICAgICAgIHNpemVvZl9pb2luZm8gPSBfbXNpemUoX19waW9pbmZvWzBdKSAvIElPSU5GT19BUlJBWV9FTFRTOwotICAgIH0KLSAgICBpZiAoc2l6ZW9mX2lvaW5mbyA9PSAwKSB7Ci0gICAgICAgIC8qIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uLi4gKi8KLSAgICAgICAgZ290byBmYWlsOwotICAgIH0KLQotICAgIC8qIFNlZSB0aGF0IGl0IGlzbid0IGEgc3BlY2lhbCBDTEVBUiBmaWxlbm8gKi8KLSAgICBpZiAoZmQgIT0gX05PX0NPTlNPTEVfRklMRU5PKSB7Ci0gICAgICAgIC8qIE1pY3Jvc29mdCBDUlQgd291bGQgY2hlY2sgdGhhdCAwPD1mZDxfbmhhbmRsZSBidXQgd2UgY2FuJ3QgZG8gdGhhdC4gIEluc3RlYWQKLSAgICAgICAgICogd2UgY2hlY2sgcG9pbnRlciB2YWxpZGl0eSBhbmQgb3RoZXIgaW5mbwotICAgICAgICAgKi8KLSAgICAgICAgaWYgKDAgPD0gaTEgJiYgaTEgPCBJT0lORk9fQVJSQVlTICYmIF9fcGlvaW5mb1tpMV0gIT0gTlVMTCkgewotICAgICAgICAgICAgLyogZmluYWxseSwgY2hlY2sgdGhhdCB0aGUgZmlsZSBpcyBvcGVuICovCi0gICAgICAgICAgICBteV9pb2luZm8qIGluZm8gPSAobXlfaW9pbmZvKikoX19waW9pbmZvW2kxXSArIGkyICogc2l6ZW9mX2lvaW5mbyk7Ci0gICAgICAgICAgICBpZiAoaW5mby0+b3NmaWxlICYgRk9QRU4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgZmFpbDoKLSAgICBlcnJubyA9IEVCQURGOwotICAgIHJldHVybiAwOwotfQotCi0jZW5kaWYgLyogZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTkwMCAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwppbmRleCA2MTdkNThiLi5hMmMyYjM2IDEwMDY0NAotLS0gYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYworKysgYi9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYwpAQCAtMzIsMTQgKzMyLDIwIEBACiB7CiAgICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyB3aXRoICclYycuIiwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgb3IgJ18nIHdpdGggJyVjJy4iLAogICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUpOwogICAgIGVsc2UKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJ1xceCV4Jy4iLAorICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5ICcsJyBvciAnXycgd2l0aCAnXFx4JXgnLiIsCiAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXByZXNlbnRhdGlvbl90eXBlKTsKIH0KIAorc3RhdGljIHZvaWQKK2ludmFsaWRfY29tbWFfYW5kX3VuZGVyc2NvcmUodm9pZCkKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5vdCBzcGVjaWZ5IGJvdGggJywnIGFuZCAnXycuIik7Cit9CisKIC8qCiAgICAgZ2V0X2ludGVnZXIgY29uc3VtZXMgMCBvciBtb3JlIGRlY2ltYWwgZGlnaXQgY2hhcmFjdGVycyBmcm9tIGFuCiAgICAgaW5wdXQgc3RyaW5nLCB1cGRhdGVzICpyZXN1bHQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGl2ZQpAQCAtNDgsMTYgKzU0LDE3IEBACiAgICAgcmV0dXJucyAtMSBvbiBlcnJvci4KICovCiBzdGF0aWMgaW50Ci1nZXRfaW50ZWdlcihQeU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90ICpwb3MsIFB5X3NzaXplX3QgZW5kLAorZ2V0X2ludGVnZXIoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCAqcHBvcywgUHlfc3NpemVfdCBlbmQsCiAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpyZXN1bHQpCiB7Ci0gICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWw7CisgICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWwsIHBvcyA9ICpwcG9zOwogICAgIGludCBudW1kaWdpdHM7CisgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworCiAgICAgYWNjdW11bGF0b3IgPSBudW1kaWdpdHMgPSAwOwotICAgIGZvciAoOzsoKnBvcykrKywgbnVtZGlnaXRzKyspIHsKLSAgICAgICAgaWYgKCpwb3MgPj0gZW5kKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRpZ2l0dmFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlVbmljb2RlX1JFQURfQ0hBUihzdHIsICpwb3MpKTsKKyAgICBmb3IgKDsgcG9zIDwgZW5kOyBwb3MrKywgbnVtZGlnaXRzKyspIHsKKyAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpKTsKICAgICAgICAgaWYgKGRpZ2l0dmFsIDwgMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAvKgpAQCAtNjksMTAgKzc2LDEyIEBACiAgICAgICAgIGlmIChhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9vIG1hbnkgZGVjaW1hbCBkaWdpdHMgaW4gZm9ybWF0IHN0cmluZyIpOworICAgICAgICAgICAgKnBwb3MgPSBwb3M7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWw7CiAgICAgfQorICAgICpwcG9zID0gcG9zOwogICAgICpyZXN1bHQgPSBhY2N1bXVsYXRvcjsKICAgICByZXR1cm4gbnVtZGlnaXRzOwogfQpAQCAtMTA1LDYgKzExNCwxNCBAQAogICAgIH0KIH0KIAorLyogTG9jYWxlIHR5cGUgY29kZXMuIExUX05PX0xPQ0FMRSBtdXN0IGJlIHplcm8uICovCitlbnVtIExvY2FsZVR5cGUgeworICAgIExUX05PX0xPQ0FMRSA9IDAsCisgICAgTFRfREVGQVVMVF9MT0NBTEUsCisgICAgTFRfVU5ERVJTQ09SRV9MT0NBTEUsCisgICAgTFRfVU5ERVJfRk9VUl9MT0NBTEUsCisgICAgTFRfQ1VSUkVOVF9MT0NBTEUKK307CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeV9VQ1M0IGZpbGxfY2hhcjsKQEAgLTExMiw3ICsxMjksNyBAQAogICAgIGludCBhbHRlcm5hdGU7CiAgICAgUHlfVUNTNCBzaWduOwogICAgIFB5X3NzaXplX3Qgd2lkdGg7Ci0gICAgaW50IHRob3VzYW5kc19zZXBhcmF0b3JzOworICAgIGVudW0gTG9jYWxlVHlwZSB0aG91c2FuZHNfc2VwYXJhdG9yczsKICAgICBQeV9zc2l6ZV90IHByZWNpc2lvbjsKICAgICBQeV9VQ1M0IHR5cGU7CiB9IEludGVybmFsRm9ybWF0U3BlYzsKQEAgLTE1MCw5ICsxNjcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfYWxpZ24pCiB7CiAgICAgUHlfc3NpemVfdCBwb3MgPSBzdGFydDsKKyAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKGZvcm1hdF9zcGVjKTsKKyAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoZm9ybWF0X3NwZWMpOwogICAgIC8qIGVuZC1wb3MgaXMgdXNlZCB0aHJvdWdob3V0IHRoaXMgY29kZSB0byBzcGVjaWZ5IHRoZSBsZW5ndGggb2YKICAgICAgICB0aGUgaW5wdXQgc3RyaW5nICovCi0jZGVmaW5lIFJFQURfc3BlYyhpbmRleCkgUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYywgaW5kZXgpCisjZGVmaW5lIFJFQURfc3BlYyhpbmRleCkgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaW5kZXgpCiAKICAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwogICAgIGludCBhbGlnbl9zcGVjaWZpZWQgPSAwOwpAQCAtMTYzLDcgKzE4Miw3IEBACiAgICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAwOwogICAgIGZvcm1hdC0+c2lnbiA9ICdcMCc7CiAgICAgZm9ybWF0LT53aWR0aCA9IC0xOwotICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAwOworICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9OT19MT0NBTEU7CiAgICAgZm9ybWF0LT5wcmVjaXNpb24gPSAtMTsKICAgICBmb3JtYXQtPnR5cGUgPSBkZWZhdWx0X3R5cGU7CiAKQEAgLTIxOCw5ICsyMzcsMjIgQEAKIAogICAgIC8qIENvbW1hIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KICAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLCcpIHsKLSAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IDE7CisgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9ERUZBVUxUX0xPQ0FMRTsKICAgICAgICAgKytwb3M7CiAgICAgfQorICAgIC8qIFVuZGVyc2NvcmUgc2lnbmlmaWVzIGFkZCB0aG91c2FuZHMgc2VwYXJhdG9ycyAqLworICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICdfJykgeworICAgICAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyAhPSBMVF9OT19MT0NBTEUpIHsKKyAgICAgICAgICAgIGludmFsaWRfY29tbWFfYW5kX3VuZGVyc2NvcmUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSBMVF9VTkRFUlNDT1JFX0xPQ0FMRTsKKyAgICAgICAgKytwb3M7CisgICAgfQorICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcsJykgeworICAgICAgICBpbnZhbGlkX2NvbW1hX2FuZF91bmRlcnNjb3JlKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIC8qIFBhcnNlIGZpZWxkIHByZWNpc2lvbiAqLwogICAgIGlmIChlbmQtcG9zICYmIFJFQURfc3BlYyhwb3MpID09ICcuJykgewpAQCAtMjcwLDYgKzMwMiwxNiBAQAogICAgICAgICBjYXNlICdcMCc6CiAgICAgICAgICAgICAvKiBUaGVzZSBhcmUgYWxsb3dlZC4gU2VlIFBFUCAzNzguKi8KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgY2FzZSAnbyc6CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgIC8qIFVuZGVyc2NvcmVzIGFyZSBhbGxvd2VkIGluIGJpbi9vY3QvaGV4LiBTZWUgUEVQIDUxNS4gKi8KKyAgICAgICAgICAgIGlmIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID09IExUX1VOREVSU0NPUkVfTE9DQUxFKSB7CisgICAgICAgICAgICAgICAgLyogRXZlcnkgZm91ciBkaWdpdHMsIG5vdCBldmVyeSB0aHJlZSwgaW4gYmluL29jdC9oZXguICovCisgICAgICAgICAgICAgICAgZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA9IExUX1VOREVSX0ZPVVJfTE9DQUxFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgaW52YWxpZF9jb21tYV90eXBlKGZvcm1hdC0+dHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTM0NiwxMyArMzg4LDYgQEAKIC8qKioqKioqKioqKiBjb21tb24gcm91dGluZXMgZm9yIG51bWVyaWMgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCi0vKiBMb2NhbGUgdHlwZSBjb2Rlcy4gKi8KLWVudW0gTG9jYWxlVHlwZSB7Ci0gICAgTFRfQ1VSUkVOVF9MT0NBTEUsCi0gICAgTFRfREVGQVVMVF9MT0NBTEUsCi0gICAgTFRfTk9fTE9DQUxFCi19OwotCiAvKiBMb2NhbGUgaW5mbyBuZWVkZWQgZm9yIGZvcm1hdHRpbmcgaW50ZWdlcnMgYW5kIHRoZSBwYXJ0IG9mIGZsb2F0cwogICAgYmVmb3JlIGFuZCBpbmNsdWRpbmcgdGhlIGRlY2ltYWwuIE5vdGUgdGhhdCBsb2NhbGVzIG9ubHkgc3VwcG9ydAogICAgOC1iaXQgY2hhcnMsIG5vdCB1bmljb2RlLiAqLwpAQCAtNDA0LDEzICs0MzksMTUgQEAKICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3JlbWFpbmRlciwgaW50ICpoYXNfZGVjaW1hbCkKIHsKICAgICBQeV9zc2l6ZV90IHJlbWFpbmRlcjsKKyAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHMpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzKTsKIAotICAgIHdoaWxlIChwb3M8ZW5kICYmIFB5X0lTRElHSVQoUHlVbmljb2RlX1JFQURfQ0hBUihzLCBwb3MpKSkKKyAgICB3aGlsZSAocG9zPGVuZCAmJiBQeV9JU0RJR0lUKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcykpKQogICAgICAgICArK3BvczsKICAgICByZW1haW5kZXIgPSBwb3M7CiAKICAgICAvKiBEb2VzIHJlbWFpbmRlciBzdGFydCB3aXRoIGEgZGVjaW1hbCBwb2ludD8gKi8KLSAgICAqaGFzX2RlY2ltYWwgPSBwb3M8ZW5kICYmIFB5VW5pY29kZV9SRUFEX0NIQVIocywgcmVtYWluZGVyKSA9PSAnLic7CisgICAgKmhhc19kZWNpbWFsID0gcG9zPGVuZCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCByZW1haW5kZXIpID09ICcuJzsKIAogICAgIC8qIFNraXAgdGhlIGRlY2ltYWwgcG9pbnQuICovCiAgICAgaWYgKCpoYXNfZGVjaW1hbCkKQEAgLTY1OCwxMiArNjk1LDEyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKK3N0YXRpYyBjb25zdCBjaGFyIG5vX2dyb3VwaW5nWzFdID0ge0NIQVJfTUFYfTsKIAogLyogRmluZCB0aGUgZGVjaW1hbCBwb2ludCBjaGFyYWN0ZXIocz8pLCB0aG91c2FuZHNfc2VwYXJhdG9yKHM/KSwgYW5kCiAgICBncm91cGluZyBkZXNjcmlwdGlvbiwgZWl0aGVyIGZvciB0aGUgY3VycmVudCBsb2NhbGUgaWYgdHlwZSBpcwotICAgTFRfQ1VSUkVOVF9MT0NBTEUsIGEgaGFyZC1jb2RlZCBsb2NhbGUgaWYgTFRfREVGQVVMVF9MT0NBTEUsIG9yCi0gICBub25lIGlmIExUX05PX0xPQ0FMRS4gKi8KKyAgIExUX0NVUlJFTlRfTE9DQUxFLCBhIGhhcmQtY29kZWQgbG9jYWxlIGlmIExUX0RFRkFVTFRfTE9DQUxFIG9yCisgICBMVF9VTkRFUlNDT1JFX0xPQ0FMRS9MVF9VTkRFUl9GT1VSX0xPQ0FMRSwgb3Igbm9uZSBpZiBMVF9OT19MT0NBTEUuICovCiBzdGF0aWMgaW50CiBnZXRfbG9jYWxlX2luZm8oZW51bSBMb2NhbGVUeXBlIHR5cGUsIExvY2FsZUluZm8gKmxvY2FsZV9pbmZvKQogewpAQCAtNjg0LDEzICs3MjEsMTkgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTFRfREVGQVVMVF9MT0NBTEU6CisgICAgY2FzZSBMVF9VTkRFUlNDT1JFX0xPQ0FMRToKKyAgICBjYXNlIExUX1VOREVSX0ZPVVJfTE9DQUxFOgogICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLicpOwotICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnLCcpOworICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgKKyAgICAgICAgICAgIHR5cGUgPT0gTFRfREVGQVVMVF9MT0NBTEUgPyAnLCcgOiAnXycpOwogICAgICAgICBpZiAoIWxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50IHx8ICFsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlwzIjsgLyogR3JvdXAgZXZlcnkgMyBjaGFyYWN0ZXJzLiAgVGhlCisgICAgICAgIGlmICh0eXBlICE9IExUX1VOREVSX0ZPVVJfTE9DQUxFKQorICAgICAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlwzIjsgLyogR3JvdXAgZXZlcnkgMyBjaGFyYWN0ZXJzLiAgVGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbXBsaWNpdCkgdHJhaWxpbmcgMCBtZWFucyByZXBlYXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVseS4gKi8KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlw0IjsgLyogQmluL29jdC9oZXggZ3JvdXAgZXZlcnkgZm91ci4gKi8KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMVF9OT19MT0NBTEU6CiAgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcuJyk7CkBAIC05MzcsOSArOTgwLDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTA4NCw5ICsxMTI1LDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApAQCAtMTI2Miw5ICsxMzAxLDcgQEAKIAogICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KICAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCiAgICAgICAgIGdvdG8gZG9uZTsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbi5jIGIvUHl0aG9uL2Zyb3plbi5jCmluZGV4IDY3NmYzOTUuLjdlMDRmM2MgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW4uYworKysgYi9QeXRob24vZnJvemVuLmMKQEAgLTE0LDE3ICsxNCwxNSBAQAogICAgdGhlIGFwcHJvcHJpYXRlIGJ5dGVzIGZyb20gTV9fX21haW5fXy5jLiAqLwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBNX19faGVsbG9fX1tdID0gewotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDIwLDAsMCwwLDEwMCwyLDAsOTAsMSwwLAotICAgIDEwMSwyLDAsMTAwLDAsMCwxMzEsMSwwLDEsMTAwLDEsMCw4Myw0MCwzLAotICAgIDAsMCwwLDExNywxMiwwLDAsMCw3MiwxMDEsMTA4LDEwOCwxMTEsMzIsMTE5LDExMSwKLSAgICAxMTQsMTA4LDEwMCwzMyw3OCw4NCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLAotICAgIDg0LDExNCwxMTcsMTAxLDExNywxMSwwLDAsMCwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKLSAgICAxMDUsMTIyLDEwMSwxMDAsMTE3LDUsMCwwLDAsMTEyLDExNCwxMDUsMTEwLDExNiw0MCwwLAotICAgIDAsMCwwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsNywwLAotICAgIDAsMCwxMDIsMTA4LDk3LDEwMyw0NiwxMTIsMTIxLDExNyw4LDAsMCwwLDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDEsMCwwLDAsMTE1LDIsMCwwLDAsNiwKLSAgICAxLAorICAgIDIyNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMCw5MCwwLDEwMSwxLAorICAgIDEwMCwxLDEzMSwxLDEsMCwxMDAsMiw4MywwLDQxLDMsODQsMTIyLDEyLDcyLAorICAgIDEwMSwxMDgsMTA4LDExMSwzMiwxMTksMTExLDExNCwxMDgsMTAwLDMzLDc4LDQxLDIsMjE4LDExLAorICAgIDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwyMTgsNSwxMTIsMTE0LDEwNSwKKyAgICAxMTAsMTE2LDE2OSwwLDExNCwzLDAsMCwwLDExNCwzLDAsMCwwLDI1MCwyMiwKKyAgICA0Niw0Nyw4NCwxMTEsMTExLDEwOCwxMTUsNDcsMTAyLDExNCwxMDEsMTAxLDEyMiwxMDEsNDcsMTAyLAorICAgIDEwOCw5NywxMDMsNDYsMTEyLDEyMSwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwKKyAgICAxLDAsMCwwLDExNSwyLDAsMCwwLDQsMSwKIH07CiAKICNkZWZpbmUgU0laRSAoaW50KXNpemVvZihNX19faGVsbG9fXykKZGlmZiAtLWdpdCBhL1B5dGhvbi9mcm96ZW5tYWluLmMgYi9QeXRob24vZnJvemVubWFpbi5jCmluZGV4IGRlOGJkMzUuLjc2OWIzM2QgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW5tYWluLmMKKysrIGIvUHl0aG9uL2Zyb3plbm1haW4uYwpAQCAtOTksNyArOTksOSBAQAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBQeVdpbkZyZWV6ZV9FeGVUZXJtKCk7CiAjZW5kaWYKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHN0cyA9IDEyMDsKKyAgICB9CiAKIGVycm9yOgogICAgIFB5TWVtX1Jhd0ZyZWUoYXJndl9jb3B5KTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9mdXR1cmUuYyBiL1B5dGhvbi9mdXR1cmUuYwppbmRleCAxNjNmODdmLi43NWYyMTA3IDEwMDY0NAotLS0gYS9QeXRob24vZnV0dXJlLmMKKysrIGIvUHl0aG9uL2Z1dHVyZS5jCkBAIC03OSw3ICs3OSwxMCBAQAogCiAgICAgaSA9IDA7CiAgICAgZmlyc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQobW9kLT52Lk1vZHVsZS5ib2R5LCBpKTsKLSAgICBpZiAoZmlyc3QtPmtpbmQgPT0gRXhwcl9raW5kICYmIGZpcnN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQpCisgICAgaWYgKGZpcnN0LT5raW5kID09IEV4cHJfa2luZAorICAgICAgICAmJiAoZmlyc3QtPnYuRXhwci52YWx1ZS0+a2luZCA9PSBTdHJfa2luZAorICAgICAgICAgICAgfHwgKGZpcnN0LT52LkV4cHIudmFsdWUtPmtpbmQgPT0gQ29uc3RhbnRfa2luZAorICAgICAgICAgICAgICAgICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KGZpcnN0LT52LkV4cHIudmFsdWUtPnYuQ29uc3RhbnQudmFsdWUpKSkpCiAgICAgICAgIGkrKzsKIAogCmRpZmYgLS1naXQgYS9QeXRob24vZ2V0YXJncy5jIGIvUHl0aG9uL2dldGFyZ3MuYwppbmRleCA4YWFiMDY3Li40MzY1NmViIDEwMDY0NAotLS0gYS9QeXRob24vZ2V0YXJncy5jCisrKyBiL1B5dGhvbi9nZXRhcmdzLmMKQEAgLTE4LDE2ICsxOCwyOCBAQAogaW50IFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCk7CiAKK2ludCBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqLCBQeU9iamVjdCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCAuLi4pOworaW50IF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgdmFfbGlzdCk7CisKICNpZmRlZiBIQVZFX0RFQ0xTUEVDX0RMTAogLyogRXhwb3J0IGZ1bmN0aW9ucyAqLwotUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqLCBjaGFyICosIC4uLik7Ci1QeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQoUHlPYmplY3QgKiwgY2hhciAqLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLik7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlU3RhY2tfU2l6ZVQoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pOworUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgLi4uKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5X0J1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCAuLi4pOwotUHlBUElfRlVOQyhpbnQpIF9QeUFyZ19WYVBhcnNlX1NpemVUKFB5T2JqZWN0ICosIGNoYXIgKiwgdmFfbGlzdCk7CitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGNoYXIgKiosIHZhX2xpc3QpOworCitQeUFQSV9GVU5DKGludCkgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3RfU2l6ZVQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKiwgLi4uKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0X1NpemVUKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICosIHZhX2xpc3QpOwogI2VuZGlmCiAKICNkZWZpbmUgRkxBR19DT01QQVQgMQpAQCAtNTYsMTggKzY4LDI0IEBACiAvKiBGb3J3YXJkICovCiBzdGF0aWMgaW50IHZnZXRhcmdzMShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QgKiwgaW50KTsKIHN0YXRpYyB2b2lkIHNldGVycm9yKFB5X3NzaXplX3QsIGNvbnN0IGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0aXRlbShQeU9iamVjdCAqLCBjb25zdCBjaGFyICoqLCB2YV9saXN0ICosIGludCwgaW50ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIGZyZWVsaXN0X3QgKik7Ci1zdGF0aWMgY2hhciAqY29udmVydHR1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiwgY2hhciAqLCBzaXplX3QsIGludCwgZnJlZWxpc3RfdCAqKTsKLXN0YXRpYyBjaGFyICpjb252ZXJ0c2ltcGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIGZyZWVsaXN0X3QgKik7Ci1zdGF0aWMgUHlfc3NpemVfdCBjb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICosIHZvaWQgKipwLCBjaGFyICoqKTsKLXN0YXRpYyBpbnQgZ2V0YnVmZmVyKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBjaGFyKiopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnRpdGVtKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBpbnQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKK3N0YXRpYyBjb25zdCBjaGFyICpjb252ZXJ0dHVwbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqLCBjaGFyICosIHNpemVfdCwgaW50LCBmcmVlbGlzdF90ICopOworc3RhdGljIGNvbnN0IGNoYXIgKmNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICosIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKK3N0YXRpYyBQeV9zc2l6ZV90IGNvbnZlcnRidWZmZXIoUHlPYmplY3QgKiwgdm9pZCAqKnAsIGNvbnN0IGNoYXIgKiopOworc3RhdGljIGludCBnZXRidWZmZXIoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGNvbnN0IGNoYXIqKik7CiAKIHN0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3JkcyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQpOwotc3RhdGljIGNoYXIgKnNraXBpdGVtKGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50KTsKK3N0YXRpYyBpbnQgdmdldGFyZ3NrZXl3b3Jkc2Zhc3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqLCB2YV9saXN0ICosIGludCk7CitzdGF0aWMgaW50IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5d29yZHMsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpOworc3RhdGljIGNvbnN0IGNoYXIgKnNraXBpdGVtKGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50KTsKIAogaW50CiBQeUFyZ19QYXJzZShQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCkBAIC04Miw3ICsxMDAsNyBAQAogfQogCiBpbnQKLV9QeUFyZ19QYXJzZV9TaXplVChQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCAuLi4pCitfUHlBcmdfUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIGludCByZXR2YWw7CiAgICAgdmFfbGlzdCB2YTsKQEAgLTEwNyw3ICsxMjUsNyBAQAogfQogCiBpbnQKLV9QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjaGFyICpmb3JtYXQsIC4uLikKK19QeUFyZ19QYXJzZVR1cGxlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICBpbnQgcmV0dmFsOwogICAgIHZhX2xpc3QgdmE7CkBAIC0xMjMsMjAgKzE0MSwyNiBAQAogUHlBcmdfVmFQYXJzZShQeU9iamVjdCAqYXJncywgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhKQogewogICAgIHZhX2xpc3QgbHZhOworICAgIGludCByZXR2YWw7CiAKLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICB2YV9jb3B5KGx2YSwgdmEpOwogCi0gICAgcmV0dXJuIHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIDApOworICAgIHJldHZhbCA9IHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIDApOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7CiB9CiAKIGludAotX1B5QXJnX1ZhUGFyc2VfU2l6ZVQoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSkKK19QeUFyZ19WYVBhcnNlX1NpemVUKFB5T2JqZWN0ICphcmdzLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmEpCiB7CiAgICAgdmFfbGlzdCBsdmE7CisgICAgaW50IHJldHZhbDsKIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKLSAgICByZXR1cm4gdmdldGFyZ3MxKGFyZ3MsIGZvcm1hdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHJldHZhbCA9IHZnZXRhcmdzMShhcmdzLCBmb3JtYXQsICZsdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQobHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOwogfQogCiAKQEAgLTIwOCw3ICsyMzIsNyBAQAogICAgIGludCBlbmRmbXQgPSAwOwogICAgIGNvbnN0IGNoYXIgKmZvcm1hdHNhdmUgPSBmb3JtYXQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW47Ci0gICAgY2hhciAqbXNnOworICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICBpbnQgY29tcGF0ID0gZmxhZ3MgJiBGTEFHX0NPTVBBVDsKICAgICBmcmVlbGlzdGVudHJ5X3Qgc3RhdGljX2VudHJpZXNbU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVNdOwogICAgIGZyZWVsaXN0X3QgZnJlZWxpc3Q7CkBAIC0zOTQsNyArNDE4LDEyIEBACiAgICAgICAgIFB5T1Nfc25wcmludGYocCwgc2l6ZW9mKGJ1ZikgLSAocCAtIGJ1ZiksICIgJS4yNTZzIiwgbXNnKTsKICAgICAgICAgbWVzc2FnZSA9IGJ1ZjsKICAgICB9Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbWVzc2FnZSk7CisgICAgaWYgKG1zZ1swXSA9PSAnKCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCBtZXNzYWdlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc3NhZ2UpOworICAgIH0KIH0KIAogCkBAIC00MTYsNyArNDQ1LDcgQEAKICAgICAgIGFuZCBtc2didWYgaXMgcmV0dXJuZWQuCiAqLwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiBjb252ZXJ0dHVwbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGludCB0b3BsZXZlbCwKICAgICAgICAgICAgICBmcmVlbGlzdF90ICpmcmVlbGlzdCkKQEAgLTQ3NCw3ICs1MDMsNyBAQAogCiAgICAgZm9ybWF0ID0gKnBfZm9ybWF0OwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgY2hhciAqbXNnOworICAgICAgICBjb25zdCBjaGFyICptc2c7CiAgICAgICAgIFB5T2JqZWN0ICppdGVtOwogICAgICAgICBpdGVtID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGFyZywgaSk7CiAgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKQEAgLTUwMSwxMSArNTMwLDExIEBACiAKIC8qIENvbnZlcnQgYSBzaW5nbGUgaXRlbS4gKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydGl0ZW0oUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7Ci0gICAgY2hhciAqbXNnOworICAgIGNvbnN0IGNoYXIgKm1zZzsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CiAKICAgICBpZiAoKmZvcm1hdCA9PSAnKCcgLyogJyknICovKSB7CkBAIC01MzAsNyArNTU5LDcgQEAKIAogLyogRm9ybWF0IGFuIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGNvbnZlcnRzaW1wbGUoKS4gKi8KIAotc3RhdGljIGNoYXIgKgorc3RhdGljIGNvbnN0IGNoYXIgKgogY29udmVydGVycihjb25zdCBjaGFyICpleHBlY3RlZCwgUHlPYmplY3QgKmFyZywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSkKIHsKICAgICBhc3NlcnQoZXhwZWN0ZWQgIT0gTlVMTCk7CkBAIC01NzIsNyArNjAxLDcgQEAKICAgIFdoZW4geW91IGFkZCBuZXcgZm9ybWF0IGNvZGVzLCBwbGVhc2UgZG9uJ3QgZm9yZ2V0IHBvb3Igc2tpcGl0ZW0oKSBiZWxvdy4KICovCiAKLXN0YXRpYyBjaGFyICoKK3N0YXRpYyBjb25zdCBjaGFyICoKIGNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewpAQCAtNzUyLDE0ICs3ODEsMTMgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdMJzogey8qIFBZX0xPTkdfTE9ORyAqLwotICAgICAgICBQWV9MT05HX0xPTkcgKnAgPSB2YV9hcmcoICpwX3ZhLCBQWV9MT05HX0xPTkcgKiApOwotICAgICAgICBQWV9MT05HX0xPTkcgaXZhbDsKKyAgICBjYXNlICdMJzogey8qIGxvbmcgbG9uZyAqLworICAgICAgICBsb25nIGxvbmcgKnAgPSB2YV9hcmcoICpwX3ZhLCBsb25nIGxvbmcgKiApOworICAgICAgICBsb25nIGxvbmcgaXZhbDsKICAgICAgICAgaWYgKGZsb2F0X2FyZ3VtZW50X2Vycm9yKGFyZykpCiAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBpdmFsID0gUHlMb25nX0FzTG9uZ0xvbmcoYXJnKTsKLSAgICAgICAgaWYgKGl2YWwgPT0gKFBZX0xPTkdfTE9ORyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoaXZhbCA9PSAobG9uZyBsb25nKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICAqcCA9IGl2YWw7CkBAIC03NjcsOCArNzk1LDggQEAKICAgICB9CiAKICAgICBjYXNlICdLJzogeyAvKiBsb25nIGxvbmcgc2l6ZWQgYml0ZmllbGQgKi8KLSAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HICpwID0gdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcgKik7Ci0gICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBpdmFsOworICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgKnAgPSB2YV9hcmcoKnBfdmEsIHVuc2lnbmVkIGxvbmcgbG9uZyAqKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGl2YWw7CiAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkKICAgICAgICAgICAgIGl2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhhcmcpOwogICAgICAgICBlbHNlCkBAIC03NzYsNyArODA0LDYgQEAKICAgICAgICAgKnAgPSBpdmFsOwogICAgICAgICBicmVhazsKICAgICB9Ci0jZW5kaWYKIAogICAgIGNhc2UgJ2YnOiB7LyogZmxvYXQgKi8KICAgICAgICAgZmxvYXQgKnAgPSB2YV9hcmcoKnBfdmEsIGZsb2F0ICopOwpAQCAtODU3LDcgKzg4NCw3IEBACiAKICAgICBjYXNlICd5Jzogey8qIGFueSBieXRlcy1saWtlIG9iamVjdCAqLwogICAgICAgICB2b2lkICoqcCA9ICh2b2lkICoqKXZhX2FyZygqcF92YSwgY2hhciAqKik7Ci0gICAgICAgIGNoYXIgKmJ1ZjsKKyAgICAgICAgY29uc3QgY2hhciAqYnVmOwogICAgICAgICBQeV9zc2l6ZV90IGNvdW50OwogICAgICAgICBpZiAoKmZvcm1hdCA9PSAnKicpIHsKICAgICAgICAgICAgIGlmIChnZXRidWZmZXIoYXJnLCAoUHlfYnVmZmVyKilwLCAmYnVmKSA8IDApCkBAIC05MDQsNyArOTMxLDcgQEAKICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBhcmcsIHNhcmcsIGxlbiwgMSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYW55IGJ5dGVzLWxpa2Ugb2JqZWN0ICovCi0gICAgICAgICAgICAgICAgY2hhciAqYnVmOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBpZiAoZ2V0YnVmZmVyKGFyZywgcCwgJmJ1ZikgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihidWYsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIH0KQEAgLTkzNCw3ICs5NjEsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIHJlYWQtb25seSBieXRlcy1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgICAgIC8qIFhYWCBSZWFsbHk/ICovCi0gICAgICAgICAgICAgICAgY2hhciAqYnVmOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGNvdW50ID0gY29udmVydGJ1ZmZlcihhcmcsIHAsICZidWYpOwogICAgICAgICAgICAgICAgIGlmIChjb3VudCA8IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKGJ1ZiwgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwpAQCAtMTA1MSwzNSArMTA3OCwyNSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCIoQXNDaGFyQnVmZmVyIGZhaWxlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp1OwotCi0gICAgICAgICAgICAvKiBDb252ZXJ0IG9iamVjdCB0byBVbmljb2RlICovCi0gICAgICAgICAgICB1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QoYXJnKTsKLSAgICAgICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgICJzdHJpbmcgb3IgdW5pY29kZSBvciB0ZXh0IGJ1ZmZlciIsCi0gICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLQorICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewogICAgICAgICAgICAgLyogRW5jb2RlIG9iamVjdDsgdXNlIGRlZmF1bHQgZXJyb3IgaGFuZGxpbmcgKi8KLSAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsCisgICAgICAgICAgICBzID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHUpOwogICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiKGVuY29kaW5nIGZhaWxlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKLSAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhzKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgIihlbmNvZGVyIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMpIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2socykpOwogICAgICAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocyk7CiAgICAgICAgICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzKTsKICAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBwdHIgPSAiIjsKICAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAorICAgICAgICAgICAgICAgIHJlY29kZV9zdHJpbmdzID8gInN0ciIgOiAic3RyLCBieXRlcyBvciBieXRlYXJyYXkiLAorICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIFdyaXRlIG91dHB1dDsgb3V0cHV0IGlzIGd1YXJhbnRlZWQgdG8gYmUgMC10ZXJtaW5hdGVkICovCiAgICAgICAgIGlmICgqZm9ybWF0ID09ICcjJykgewpAQCAtMTEyOSw3ICsxMTQ2LDcgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKHNpemUgKyAxID4gQlVGRkVSX0xFTikgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgc3RyaW5nIHRvbyBsb25nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoJXpkLCBtYXhpbXVtIGxlbmd0aCAlemQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KXNpemUsIChQeV9zc2l6ZV90KShCVUZGRVJfTEVOLTEpKTsKQEAgLTEyODMsNyArMTMwMCw3IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1jb252ZXJ0YnVmZmVyKFB5T2JqZWN0ICphcmcsIHZvaWQgKipwLCBjaGFyICoqZXJybXNnKQorY29udmVydGJ1ZmZlcihQeU9iamVjdCAqYXJnLCB2b2lkICoqcCwgY29uc3QgY2hhciAqKmVycm1zZykKIHsKICAgICBQeUJ1ZmZlclByb2NzICpwYiA9IFB5X1RZUEUoYXJnKS0+dHBfYXNfYnVmZmVyOwogICAgIFB5X3NzaXplX3QgY291bnQ7CkBAIC0xMzA1LDcgKzEzMjIsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1nZXRidWZmZXIoUHlPYmplY3QgKmFyZywgUHlfYnVmZmVyICp2aWV3LCBjaGFyICoqZXJybXNnKQorZ2V0YnVmZmVyKFB5T2JqZWN0ICphcmcsIFB5X2J1ZmZlciAqdmlldywgY29uc3QgY2hhciAqKmVycm1zZykKIHsKICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGFyZywgdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKSB7CiAgICAgICAgICplcnJtc2cgPSAiYnl0ZXMtbGlrZSBvYmplY3QiOwpAQCAtMTM5MSw5ICsxNDA4LDEwIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgICAgICBQeV9WQV9DT1BZKGx2YSwgdmEpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CiAKICAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzKGFyZ3MsIGtleXdvcmRzLCBmb3JtYXQsIGt3bGlzdCwgJmx2YSwgMCk7CisgICAgdmFfZW5kKGx2YSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMTQxNSwxMCArMTQzMywxMzggQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgICAgIFB5X1ZBX0NPUFkobHZhLCB2YSk7CisgICAgdmFfY29weShsdmEsIHZhKTsKIAogICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHMoYXJncywga2V5d29yZHMsIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmx2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc0Zhc3QoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChhcmdzID09IE5VTEwgfHwgIVB5VHVwbGVfQ2hlY2soYXJncykpIHx8CisgICAgICAgIChrZXl3b3JkcyAhPSBOVUxMICYmICFQeURpY3RfQ2hlY2soa2V5d29yZHMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgcGFyc2VyKTsKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdChhcmdzLCBrZXl3b3JkcywgcGFyc2VyLCAmdmEsIDApOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIC4uLikKK3sKKyAgICBpbnQgcmV0dmFsOworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAoKGFyZ3MgPT0gTlVMTCB8fCAhUHlUdXBsZV9DaGVjayhhcmdzKSkgfHwKKyAgICAgICAgKGtleXdvcmRzICE9IE5VTEwgJiYgIVB5RGljdF9DaGVjayhrZXl3b3JkcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZ2YSwgRkxBR19TSVpFX1QpOworICAgIHZhX2VuZCh2YSk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworaW50CitfUHlBcmdfUGFyc2VTdGFjayhQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnBhcnNlciwgLi4uKQoreworICAgIGludCByZXR2YWw7CisgICAgdmFfbGlzdCB2YTsKKworICAgIGlmICgoa3duYW1lcyAhPSBOVUxMICYmICFQeVR1cGxlX0NoZWNrKGt3bmFtZXMpKSB8fAorICAgICAgICBwYXJzZXIgPT0gTlVMTCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2YV9zdGFydCh2YSwgcGFyc2VyKTsKKyAgICByZXR2YWwgPSB2Z2V0YXJnc2tleXdvcmRzZmFzdF9pbXBsKGFyZ3MsIG5hcmdzLCBOVUxMLCBrd25hbWVzLCBwYXJzZXIsICZ2YSwgMCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitpbnQKK19QeUFyZ19QYXJzZVN0YWNrX1NpemVUKFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLCAuLi4pCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IHZhOworCisgICAgaWYgKChrd25hbWVzICE9IE5VTEwgJiYgIVB5VHVwbGVfQ2hlY2soa3duYW1lcykpIHx8CisgICAgICAgIHBhcnNlciA9PSBOVUxMKQorICAgIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBwYXJzZXIpOworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoYXJncywgbmFyZ3MsIE5VTEwsIGt3bmFtZXMsIHBhcnNlciwgJnZhLCBGTEFHX1NJWkVfVCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCisKK2ludAorX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgdmEpCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IGx2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfY29weShsdmEsIHZhKTsKKworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZsdmEsIDApOworICAgIHZhX2VuZChsdmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK2ludAorX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzRmFzdF9TaXplVChQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgdmEpCit7CisgICAgaW50IHJldHZhbDsKKyAgICB2YV9saXN0IGx2YTsKKworICAgIGlmICgoYXJncyA9PSBOVUxMIHx8ICFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB8fAorICAgICAgICAoa2V5d29yZHMgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGtleXdvcmRzKSkgfHwKKyAgICAgICAgcGFyc2VyID09IE5VTEwpCisgICAgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfY29weShsdmEsIHZhKTsKKworICAgIHJldHZhbCA9IHZnZXRhcmdza2V5d29yZHNmYXN0KGFyZ3MsIGtleXdvcmRzLCBwYXJzZXIsICZsdmEsIEZMQUdfU0laRV9UKTsKKyAgICB2YV9lbmQobHZhKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCkBAIC0xNDQ4LDcgKzE1OTQsOCBAQAogICAgIGNvbnN0IGNoYXIgKmZuYW1lLCAqbXNnLCAqY3VzdG9tX21zZywgKmtleXdvcmQ7CiAgICAgaW50IG1pbiA9IElOVF9NQVg7CiAgICAgaW50IG1heCA9IElOVF9NQVg7Ci0gICAgaW50IGksIGxlbjsKKyAgICBpbnQgaSwgcG9zLCBsZW47CisgICAgaW50IHNraXAgPSAwOwogICAgIFB5X3NzaXplX3QgbmFyZ3MsIG5rZXl3b3JkczsKICAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CiAgICAgZnJlZWxpc3RlbnRyeV90IHN0YXRpY19lbnRyaWVzW1NUQVRJQ19GUkVFTElTVF9FTlRSSUVTXTsKQEAgLTE0NzYsOSArMTYyMywxNyBAQAogICAgICAgICAgICAgY3VzdG9tX21zZysrOwogICAgIH0KIAorICAgIC8qIHNjYW4ga3dsaXN0IGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzICovCisgICAgZm9yIChwb3MgPSAwOyBrd2xpc3RbcG9zXSAmJiAhKmt3bGlzdFtwb3NdOyBwb3MrKykgeworICAgIH0KICAgICAvKiBzY2FuIGt3bGlzdCBhbmQgZ2V0IGdyZWF0ZXN0IHBvc3NpYmxlIG5iciBvZiBhcmdzICovCi0gICAgZm9yIChsZW49MDsga3dsaXN0W2xlbl07IGxlbisrKQotICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGxlbiA9IHBvczsga3dsaXN0W2xlbl07IGxlbisrKSB7CisgICAgICAgIGlmICghKmt3bGlzdFtsZW5dKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IGtleXdvcmQgcGFyYW1ldGVyIG5hbWUiKTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICB9CisgICAgfQogCiAgICAgaWYgKGxlbiA+IFNUQVRJQ19GUkVFTElTVF9FTlRSSUVTKSB7CiAgICAgICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBsZW4pOwpAQCAtMTUwNyw3ICsxNjYyLDcgQEAKICAgICAgICAga2V5d29yZCA9IGt3bGlzdFtpXTsKICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CiAgICAgICAgICAgICBpZiAobWluICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAofCBzcGVjaWZpZWQgdHdpY2UpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CkBAIC0xNTE2LDE0ICsxNjcxLDE0IEBACiAgICAgICAgICAgICBmb3JtYXQrKzsKIAogICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKCQgYmVmb3JlIHwpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CiAgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBzcGVjaWZpZWQgdHdpY2UpIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgICAgICB9CkBAIC0xNTMxLDYgKzE2ODYsMTcgQEAKICAgICAgICAgICAgIG1heCA9IGk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKIAorICAgICAgICAgICAgaWYgKG1heCA8IHBvcykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVtcHR5IHBhcmFtZXRlciBuYW1lIGFmdGVyICQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChza2lwKSB7CisgICAgICAgICAgICAgICAgLyogTm93IHdlIGtub3cgdGhlIG1pbmltYWwgYW5kIHRoZSBtYXhpbWFsIG51bWJlcnMgb2YKKyAgICAgICAgICAgICAgICAgKiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhbmQgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoCisgICAgICAgICAgICAgICAgICogaW5mb3JtYXRpdmUgbWVzc2FnZSAoc2VlIGJlbG93KS4gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtYXggPCBuYXJncykgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKQEAgLTE1NDEsNjYgKzE3MDcsOTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSBrZXl3b3JkIGxpc3QgZW50cmllcyAoJWQpIHRoYW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVycyAoJWQpIiwgbGVuLCBpKTsKICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKLSAgICAgICAgaWYgKG5rZXl3b3JkcykgewotICAgICAgICAgICAgY3VycmVudF9hcmcgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrZXl3b3Jkcywga2V5d29yZCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7Ci0gICAgICAgICAgICAtLW5rZXl3b3JkczsKLSAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKLSAgICAgICAgICAgICAgICAvKiBhcmcgcHJlc2VudCBpbiB0dXBsZSBhbmQgaW4gZGljdCAqLwotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJXMnKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgIGlmICghc2tpcCkgeworICAgICAgICAgICAgY3VycmVudF9hcmcgPSBOVUxMOworICAgICAgICAgICAgaWYgKG5rZXl3b3JkcyAmJiBpID49IHBvcykgeworICAgICAgICAgICAgICAgIGN1cnJlbnRfYXJnID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoa2V5d29yZHMsIGtleXdvcmQpOworICAgICAgICAgICAgICAgIGlmICghY3VycmVudF9hcmcgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgICAgICAtLW5rZXl3b3JkczsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIGFyZyBwcmVzZW50IGluIHR1cGxlIGFuZCBpbiBkaWN0ICovCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXJndW1lbnQgZ2l2ZW4gYnkgbmFtZSAoJyVzJykgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGkgPCBuYXJncykKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CisKKyAgICAgICAgICAgIGlmIChjdXJyZW50X2FyZykgeworICAgICAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIGN1c3RvbV9tc2cpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpIDwgbWluKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPCBwb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChtaW4gPT0gSU5UX01BWCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAobWF4ID09IElOVF9NQVgpOworICAgICAgICAgICAgICAgICAgICBza2lwID0gMTsKKyAgICAgICAgICAgICAgICAgICAgLyogQXQgdGhhdCBtb21lbnQgd2Ugc3RpbGwgZG9uJ3Qga25vdyB0aGUgbWluaW1hbCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICogdGhlIG1heGltYWwgbnVtYmVycyBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIFJhaXNpbmcKKyAgICAgICAgICAgICAgICAgICAgICogYW4gZXhjZXB0aW9uIGlzIGRlZmVycmVkIHVudGlsIHdlIGVuY291bnRlciB8IGFuZCAkCisgICAgICAgICAgICAgICAgICAgICAqIG9yIHRoZSBlbmQgb2YgdGhlIGZvcm1hdC4gKi8KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIChwb3MgJWQpIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGN1cnJlbnQgY29kZSByZXBvcnRzIHN1Y2Nlc3Mgd2hlbiBhbGwgcmVxdWlyZWQgYXJncworICAgICAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCisgICAgICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCFua2V5d29yZHMgJiYgIXNraXApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChua2V5d29yZHMgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwotICAgICAgICBlbHNlIGlmIChpIDwgbmFyZ3MpCi0gICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7Ci0KLSAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7Ci0gICAgICAgICAgICBtc2cgPSBjb252ZXJ0aXRlbShjdXJyZW50X2FyZywgJmZvcm1hdCwgcF92YSwgZmxhZ3MsCi0gICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwotICAgICAgICAgICAgaWYgKG1zZykgewotICAgICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIGZuYW1lLCBjdXN0b21fbXNnKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGkgPCBtaW4pIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgKHBvcyAlZCkgbm90IGZvdW5kIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgLyogY3VycmVudCBjb2RlIHJlcG9ydHMgc3VjY2VzcyB3aGVuIGFsbCByZXF1aXJlZCBhcmdzCi0gICAgICAgICAqIGZ1bGZpbGxlZCBhbmQgbm8ga2V5d29yZCBhcmdzIGxlZnQsIHdpdGggbm8gZnVydGhlcgotICAgICAgICAgKiB2YWxpZGF0aW9uLiBYWFggTWF5YmUgc2tpcCB0aGlzIGluIGRlYnVnIGJ1aWxkID8KLSAgICAgICAgICovCi0gICAgICAgIGlmICghbmtleXdvcmRzKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiAKICAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKICAgICAgICAgICoga2V5d29yZCBhcmdzICovCiAgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIHBfdmEsIGZsYWdzKTsKICAgICAgICAgaWYgKG1zZykgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzOiAnJXMnIiwgbXNnLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAiJXM6ICclcyciLCBtc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KTsKICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHNraXApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAoUHlfTUlOKHBvcywgbWluKSA8IGkpID8gImF0IGxlYXN0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X01JTihwb3MsIG1pbiksIG5hcmdzKTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgfQorCiAgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAibW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgIgogICAgICAgICAgICAgIihyZW1haW5pbmcgZm9ybWF0OiclcycpIiwgZm9ybWF0KTsKICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CkBAIC0xNjE4LDcgKzE4MDgsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksIGt3bGlzdFtpXSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoKmt3bGlzdFtpXSAmJiAhUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCBrd2xpc3RbaV0pKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hdGNoID0gMTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTYzNyw3ICsxODI3LDM4OCBAQAogfQogCiAKLXN0YXRpYyBjaGFyICoKKy8qIExpc3Qgb2Ygc3RhdGljIHBhcnNlcnMuICovCitzdGF0aWMgc3RydWN0IF9QeUFyZ19QYXJzZXIgKnN0YXRpY19hcmdfcGFyc2VycyA9IE5VTEw7CisKK3N0YXRpYyBpbnQKK3BhcnNlcl9pbml0KHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIpCit7CisgICAgY29uc3QgY2hhciAqIGNvbnN0ICprZXl3b3JkczsKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsICptc2c7CisgICAgaW50IGksIGxlbiwgbWluLCBtYXgsIG5rdzsKKyAgICBQeU9iamVjdCAqa3d0dXBsZTsKKworICAgIGFzc2VydChwYXJzZXItPmZvcm1hdCAhPSBOVUxMKTsKKyAgICBhc3NlcnQocGFyc2VyLT5rZXl3b3JkcyAhPSBOVUxMKTsKKyAgICBpZiAocGFyc2VyLT5rd3R1cGxlICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyogZ3JhYiB0aGUgZnVuY3Rpb24gbmFtZSBvciBjdXN0b20gZXJyb3IgbXNnIGZpcnN0IChtdXR1YWxseSBleGNsdXNpdmUpICovCisgICAgcGFyc2VyLT5mbmFtZSA9IHN0cmNocihwYXJzZXItPmZvcm1hdCwgJzonKTsKKyAgICBpZiAocGFyc2VyLT5mbmFtZSkgeworICAgICAgICBwYXJzZXItPmZuYW1lKys7CisgICAgICAgIHBhcnNlci0+Y3VzdG9tX21zZyA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwYXJzZXItPmN1c3RvbV9tc2cgPSBzdHJjaHIocGFyc2VyLT5mb3JtYXQsJzsnKTsKKyAgICAgICAgaWYgKHBhcnNlci0+Y3VzdG9tX21zZykKKyAgICAgICAgICAgIHBhcnNlci0+Y3VzdG9tX21zZysrOworICAgIH0KKworICAgIGtleXdvcmRzID0gcGFyc2VyLT5rZXl3b3JkczsKKyAgICAvKiBzY2FuIGtleXdvcmRzIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzICovCisgICAgZm9yIChpID0gMDsga2V5d29yZHNbaV0gJiYgISprZXl3b3Jkc1tpXTsgaSsrKSB7CisgICAgfQorICAgIHBhcnNlci0+cG9zID0gaTsKKyAgICAvKiBzY2FuIGtleXdvcmRzIGFuZCBnZXQgZ3JlYXRlc3QgcG9zc2libGUgbmJyIG9mIGFyZ3MgKi8KKyAgICBmb3IgKDsga2V5d29yZHNbaV07IGkrKykgeworICAgICAgICBpZiAoISprZXl3b3Jkc1tpXSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBrZXl3b3JkIHBhcmFtZXRlciBuYW1lIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBsZW4gPSBpOworCisgICAgbWluID0gbWF4ID0gSU5UX01BWDsKKyAgICBmb3JtYXQgPSBwYXJzZXItPmZvcm1hdDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CisgICAgICAgICAgICBpZiAobWluICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZvcm1hdCBzdHJpbmcgKHwgc3BlY2lmaWVkIHR3aWNlKSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIGJlZm9yZSB8KSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWluID0gaTsKKyAgICAgICAgICAgIGZvcm1hdCsrOworICAgICAgICB9CisgICAgICAgIGlmICgqZm9ybWF0ID09ICckJykgeworICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIHNwZWNpZmllZCB0d2ljZSkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpIDwgcGFyc2VyLT5wb3MpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBwYXJhbWV0ZXIgbmFtZSBhZnRlciAkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXggPSBpOworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKElTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSBrZXl3b3JkIGxpc3QgZW50cmllcyAoJWQpIHRoYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVycyAoJWQpIiwgbGVuLCBpKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgbXNnID0gc2tpcGl0ZW0oJmZvcm1hdCwgTlVMTCwgMCk7CisgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwgIiVzOiAnJXMnIiwgbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBwYXJzZXItPm1pbiA9IFB5X01JTihtaW4sIGxlbik7CisgICAgcGFyc2VyLT5tYXggPSBQeV9NSU4obWF4LCBsZW4pOworCisgICAgaWYgKCFJU19FTkRfT0ZfRk9STUFUKCpmb3JtYXQpICYmICgqZm9ybWF0ICE9ICd8JykgJiYgKCpmb3JtYXQgIT0gJyQnKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAibW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgIgorICAgICAgICAgICAgIihyZW1haW5pbmcgZm9ybWF0OiclcycpIiwgZm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbmt3ID0gbGVuIC0gcGFyc2VyLT5wb3M7CisgICAga3d0dXBsZSA9IFB5VHVwbGVfTmV3KG5rdyk7CisgICAgaWYgKGt3dHVwbGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAga2V5d29yZHMgPSBwYXJzZXItPmtleXdvcmRzICsgcGFyc2VyLT5wb3M7CisgICAgZm9yIChpID0gMDsgaSA8IG5rdzsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhrZXl3b3Jkc1tpXSk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGt3dHVwbGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJnN0cik7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa3d0dXBsZSwgaSwgc3RyKTsKKyAgICB9CisgICAgcGFyc2VyLT5rd3R1cGxlID0ga3d0dXBsZTsKKworICAgIGFzc2VydChwYXJzZXItPm5leHQgPT0gTlVMTCk7CisgICAgcGFyc2VyLT5uZXh0ID0gc3RhdGljX2FyZ19wYXJzZXJzOworICAgIHN0YXRpY19hcmdfcGFyc2VycyA9IHBhcnNlcjsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlcl9jbGVhcihzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyKQoreworICAgIFB5X0NMRUFSKHBhcnNlci0+a3d0dXBsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZpbmRfa2V5d29yZChQeU9iamVjdCAqa3duYW1lcywgUHlPYmplY3QgKiprd3N0YWNrLCBQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3QgaSwgbmt3YXJnczsKKworICAgIG5rd2FyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIGZvciAoaT0wOyBpIDwgbmt3YXJnczsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICprd25hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIGkpOworCisgICAgICAgIC8qIHB0cj09cHRyIHNob3VsZCBtYXRjaCBpbiBtb3N0IGNhc2VzIHNpbmNlIGtleXdvcmQga2V5cworICAgICAgICAgICBzaG91bGQgYmUgaW50ZXJuZWQgc3RyaW5ncyAqLworICAgICAgICBpZiAoa3duYW1lID09IGtleSkgeworICAgICAgICAgICAgcmV0dXJuIGt3c3RhY2tbaV07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa3duYW1lKSkgeworICAgICAgICAgICAgLyogaWdub3JlIG5vbi1zdHJpbmcga2V5d29yZCBrZXlzOgorICAgICAgICAgICAgICAgYW4gZXJyb3Igd2lsbCBiZSByYWlzZWQgYWJvdmUgKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlVbmljb2RlX0VRKGt3bmFtZSwga2V5KSkgeworICAgICAgICAgICAgcmV0dXJuIGt3c3RhY2tbaV07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK3ZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5d29yZHMsIFB5T2JqZWN0ICprd25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgX1B5QXJnX1BhcnNlciAqcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MpCit7CisgICAgUHlPYmplY3QgKmt3dHVwbGU7CisgICAgY2hhciBtc2didWZbNTEyXTsKKyAgICBpbnQgbGV2ZWxzWzMyXTsKKyAgICBjb25zdCBjaGFyICpmb3JtYXQ7CisgICAgY29uc3QgY2hhciAqbXNnOworICAgIFB5T2JqZWN0ICprZXl3b3JkOworICAgIGludCBpLCBwb3MsIGxlbjsKKyAgICBQeV9zc2l6ZV90IG5rZXl3b3JkczsKKyAgICBQeU9iamVjdCAqY3VycmVudF9hcmc7CisgICAgZnJlZWxpc3RlbnRyeV90IHN0YXRpY19lbnRyaWVzW1NUQVRJQ19GUkVFTElTVF9FTlRSSUVTXTsKKyAgICBmcmVlbGlzdF90IGZyZWVsaXN0OworICAgIFB5T2JqZWN0ICoqa3dzdGFjayA9IE5VTEw7CisKKyAgICBmcmVlbGlzdC5lbnRyaWVzID0gc3RhdGljX2VudHJpZXM7CisgICAgZnJlZWxpc3QuZmlyc3RfYXZhaWxhYmxlID0gMDsKKyAgICBmcmVlbGlzdC5lbnRyaWVzX21hbGxvY2VkID0gMDsKKworICAgIGFzc2VydChrZXl3b3JkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrZXl3b3JkcykpOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVjayhrd25hbWVzKSk7CisgICAgYXNzZXJ0KChrZXl3b3JkcyAhPSBOVUxMIHx8IGt3bmFtZXMgIT0gTlVMTCkKKyAgICAgICAgICAgfHwgKGtleXdvcmRzID09IE5VTEwgJiYga3duYW1lcyA9PSBOVUxMKSk7CisgICAgYXNzZXJ0KHBhcnNlciAhPSBOVUxMKTsKKyAgICBhc3NlcnQocF92YSAhPSBOVUxMKTsKKworICAgIGlmICghcGFyc2VyX2luaXQocGFyc2VyKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBrd3R1cGxlID0gcGFyc2VyLT5rd3R1cGxlOworICAgIHBvcyA9IHBhcnNlci0+cG9zOworICAgIGxlbiA9IHBvcyArIFB5VHVwbGVfR0VUX1NJWkUoa3d0dXBsZSk7CisKKyAgICBpZiAobGVuID4gU1RBVElDX0ZSRUVMSVNUX0VOVFJJRVMpIHsKKyAgICAgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIGxlbik7CisgICAgICAgIGlmIChmcmVlbGlzdC5lbnRyaWVzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmcmVlbGlzdC5lbnRyaWVzX21hbGxvY2VkID0gMTsKKyAgICB9CisKKyAgICBpZiAoa2V5d29yZHMgIT0gTlVMTCkgeworICAgICAgICBua2V5d29yZHMgPSBQeURpY3RfU2l6ZShrZXl3b3Jkcyk7CisgICAgfQorICAgIGVsc2UgaWYgKGt3bmFtZXMgIT0gTlVMTCkgeworICAgICAgICBua2V5d29yZHMgPSBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgICAgICBrd3N0YWNrID0gYXJncyArIG5hcmdzOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbmtleXdvcmRzID0gMDsKKyAgICB9CisgICAgaWYgKG5hcmdzICsgbmtleXdvcmRzID4gbGVuKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXMlcyB0YWtlcyBhdCBtb3N0ICVkIGFyZ3VtZW50JXMgKCV6ZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgKHBhcnNlci0+Zm5hbWUgPT0gTlVMTCkgPyAiZnVuY3Rpb24iIDogcGFyc2VyLT5mbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPmZuYW1lID09IE5VTEwpID8gIiIgOiAiKCkiLAorICAgICAgICAgICAgICAgICAgICAgbGVuLAorICAgICAgICAgICAgICAgICAgICAgKGxlbiA9PSAxKSA/ICIiIDogInMiLAorICAgICAgICAgICAgICAgICAgICAgbmFyZ3MgKyBua2V5d29yZHMpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICB9CisgICAgaWYgKHBhcnNlci0+bWF4IDwgbmFyZ3MpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB0YWtlcyAlcyAlZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPm1pbiAhPSBJTlRfTUFYKSA/ICJhdCBtb3N0IiA6ICJleGFjdGx5IiwKKyAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bWF4LCBuYXJncyk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgIH0KKworICAgIGZvcm1hdCA9IHBhcnNlci0+Zm9ybWF0OworICAgIC8qIGNvbnZlcnQgdHVwbGUgYXJncyBhbmQga2V5d29yZCBhcmdzIGluIHNhbWUgbG9vcCwgdXNpbmcga3d0dXBsZSB0byBkcml2ZSBwcm9jZXNzICovCisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIGtleXdvcmQgPSAoaSA+PSBwb3MpID8gUHlUdXBsZV9HRVRfSVRFTShrd3R1cGxlLCBpIC0gcG9zKSA6IE5VTEw7CisgICAgICAgIGlmICgqZm9ybWF0ID09ICd8JykgeworICAgICAgICAgICAgZm9ybWF0Kys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyQnKSB7CisgICAgICAgICAgICBmb3JtYXQrKzsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkpOworCisgICAgICAgIGN1cnJlbnRfYXJnID0gTlVMTDsKKyAgICAgICAgaWYgKG5rZXl3b3JkcyAmJiBpID49IHBvcykgeworICAgICAgICAgICAgaWYgKGtleXdvcmRzICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5RGljdF9HZXRJdGVtKGtleXdvcmRzLCBrZXl3b3JkKTsKKyAgICAgICAgICAgICAgICBpZiAoIWN1cnJlbnRfYXJnICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY3VycmVudF9hcmcgPSBmaW5kX2tleXdvcmQoa3duYW1lcywga3dzdGFjaywga2V5d29yZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGN1cnJlbnRfYXJnKSB7CisgICAgICAgICAgICAtLW5rZXl3b3JkczsKKyAgICAgICAgICAgIGlmIChpIDwgbmFyZ3MpIHsKKyAgICAgICAgICAgICAgICAvKiBhcmcgcHJlc2VudCBpbiB0dXBsZSBhbmQgaW4gZGljdCAqLworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBcmd1bWVudCBnaXZlbiBieSBuYW1lICgnJVUnKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgcG9zaXRpb24gKCVkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoaSA8IG5hcmdzKSB7CisgICAgICAgICAgICBjdXJyZW50X2FyZyA9IGFyZ3NbaV07CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudF9hcmcpIHsKKyAgICAgICAgICAgIG1zZyA9IGNvbnZlcnRpdGVtKGN1cnJlbnRfYXJnLCAmZm9ybWF0LCBwX3ZhLCBmbGFncywKKyAgICAgICAgICAgICAgICBsZXZlbHMsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CisgICAgICAgICAgICBpZiAobXNnKSB7CisgICAgICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgcGFyc2VyLT5mbmFtZSwgcGFyc2VyLT5jdXN0b21fbXNnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGkgPCBwYXJzZXItPm1pbikgeworICAgICAgICAgICAgLyogTGVzcyBhcmd1bWVudHMgdGhhbiByZXF1aXJlZCAqLworICAgICAgICAgICAgaWYgKGkgPCBwb3MpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgJXMgJWQgcG9zaXRpb25hbCBhcmd1bWVudHMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKCVkIGdpdmVuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9NSU4ocG9zLCBwYXJzZXItPm1pbikgPCBwYXJzZXItPm1heCkgPyAiYXQgbGVhc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9NSU4ocG9zLCBwYXJzZXItPm1pbiksIG5hcmdzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIChwb3MgJWQpIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIGkrMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgfQorICAgICAgICAvKiBjdXJyZW50IGNvZGUgcmVwb3J0cyBzdWNjZXNzIHdoZW4gYWxsIHJlcXVpcmVkIGFyZ3MKKyAgICAgICAgICogZnVsZmlsbGVkIGFuZCBubyBrZXl3b3JkIGFyZ3MgbGVmdCwgd2l0aCBubyBmdXJ0aGVyCisgICAgICAgICAqIHZhbGlkYXRpb24uIFhYWCBNYXliZSBza2lwIHRoaXMgaW4gZGVidWcgYnVpbGQgPworICAgICAgICAgKi8KKyAgICAgICAgaWYgKCFua2V5d29yZHMpIHsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCAmZnJlZWxpc3QpOworICAgICAgICB9CisKKyAgICAgICAgLyogV2UgYXJlIGludG8gb3B0aW9uYWwgYXJncywgc2tpcCB0aHJ1IHRvIGFueSByZW1haW5pbmcKKyAgICAgICAgICoga2V5d29yZCBhcmdzICovCisgICAgICAgIG1zZyA9IHNraXBpdGVtKCZmb3JtYXQsIHBfdmEsIGZsYWdzKTsKKyAgICAgICAgYXNzZXJ0KG1zZyA9PSBOVUxMKTsKKyAgICB9CisKKyAgICBhc3NlcnQoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSB8fCAoKmZvcm1hdCA9PSAnfCcpIHx8ICgqZm9ybWF0ID09ICckJykpOworCisgICAgLyogbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBleHRyYW5lb3VzIGtleXdvcmQgYXJndW1lbnRzICovCisgICAgaWYgKG5rZXl3b3JkcyA+IDApIHsKKyAgICAgICAgaWYgKGtleXdvcmRzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcG9zID0gMDsKKyAgICAgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChrZXl3b3JkcywgJnBvcywgJmtleSwgJnZhbHVlKSkgeworICAgICAgICAgICAgICAgIGludCBtYXRjaDsKKyAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtYXRjaCA9IFB5U2VxdWVuY2VfQ29udGFpbnMoa3d0dXBsZSwga2V5KTsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2ggPD0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJVUnIGlzIGFuIGludmFsaWQga2V5d29yZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgaiwgbmt3YXJnczsKKworICAgICAgICAgICAgbmt3YXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgICAgICAgICBmb3IgKGo9MDsgaiA8IG5rd2FyZ3M7IGorKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKGt3bmFtZXMsIGopOworICAgICAgICAgICAgICAgIGludCBtYXRjaDsKKworICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbWF0Y2ggPSBQeVNlcXVlbmNlX0NvbnRhaW5zKGt3dHVwbGUsIGtleSk7CisgICAgICAgICAgICAgICAgaWYgKG1hdGNoIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVVJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKK30KKworc3RhdGljIGludAordmdldGFyZ3NrZXl3b3Jkc2Zhc3QoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICpwYXJzZXIsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqKnN0YWNrOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisKKyAgICBhc3NlcnQoYXJncyAhPSBOVUxMICYmIFB5VHVwbGVfQ2hlY2soYXJncykpOworCisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKKyAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisgICAgcmV0dXJuIHZnZXRhcmdza2V5d29yZHNmYXN0X2ltcGwoc3RhY2ssIG5hcmdzLCBrZXl3b3JkcywgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIsIHBfdmEsIGZsYWdzKTsKK30KKworCitzdGF0aWMgY29uc3QgY2hhciAqCiBza2lwaXRlbShjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBmbGFncykKIHsKICAgICBjb25zdCBjaGFyICpmb3JtYXQgPSAqcF9mb3JtYXQ7CkBAIC0xNjU4LDEwICsyMjI5LDggQEAKICAgICBjYXNlICdJJzogLyogaW50IHNpemVkIGJpdGZpZWxkICovCiAgICAgY2FzZSAnbCc6IC8qIGxvbmcgaW50ICovCiAgICAgY2FzZSAnayc6IC8qIGxvbmcgaW50IHNpemVkIGJpdGZpZWxkICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICBjYXNlICdMJzogLyogUFlfTE9OR19MT05HICovCi0gICAgY2FzZSAnSyc6IC8qIFBZX0xPTkdfTE9ORyBzaXplZCBiaXRmaWVsZCAqLwotI2VuZGlmCisgICAgY2FzZSAnTCc6IC8qIGxvbmcgbG9uZyAqLworICAgIGNhc2UgJ0snOiAvKiBsb25nIGxvbmcgc2l6ZWQgYml0ZmllbGQgKi8KICAgICBjYXNlICduJzogLyogUHlfc3NpemVfdCAqLwogICAgIGNhc2UgJ2YnOiAvKiBmbG9hdCAqLwogICAgIGNhc2UgJ2QnOiAvKiBkb3VibGUgKi8KQEAgLTE2NzMsNyArMjI0Miw5IEBACiAgICAgY2FzZSAnWSc6IC8qIHN0cmluZyBvYmplY3QgKi8KICAgICBjYXNlICdVJzogLyogdW5pY29kZSBzdHJpbmcgb2JqZWN0ICovCiAgICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTE2ODEsNyArMjI1Miw5IEBACiAKICAgICBjYXNlICdlJzogLyogc3RyaW5nIHdpdGggZW5jb2RpbmcgKi8KICAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgY29uc3QgY2hhciAqKTsKKyAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEoKmZvcm1hdCA9PSAncycgfHwgKmZvcm1hdCA9PSAndCcpKQogICAgICAgICAgICAgICAgIC8qIGFmdGVyICdlJywgb25seSAncycgYW5kICd0JyBpcyBhbGxvd2VkICovCiAgICAgICAgICAgICAgICAgZ290byBlcnI7CkBAIC0xNjk2LDEyICsyMjY5LDE2IEBACiAgICAgY2FzZSAnWic6IC8qIHVuaWNvZGUgc3RyaW5nIG9yIE5vbmUgKi8KICAgICBjYXNlICd3JzogLyogYnVmZmVyLCByZWFkLXdyaXRlICovCiAgICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNoYXIgKiopOworICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNoYXIgKiopOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyMnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRkxBR19TSVpFX1QpCi0gICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5X3NzaXplX3QgKik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCBpbnQgKik7CisgICAgICAgICAgICAgICAgaWYgKHBfdmEgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGTEFHX1NJWkVfVCkKKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5X3NzaXplX3QgKik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGludCAqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKChjID09ICdzJyB8fCBjID09ICd6JyB8fCBjID09ICd5JykgJiYgKmZvcm1hdCA9PSAnKicpIHsKICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKQEAgLTE3MTMsMjQgKzIyOTAsMzAgQEAKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyEnKSB7CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlUeXBlT2JqZWN0Kik7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlUeXBlT2JqZWN0Kik7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICgqZm9ybWF0ID09ICcmJykgewogICAgICAgICAgICAgICAgIHR5cGVkZWYgaW50ICgqY29udmVydGVyKShQeU9iamVjdCAqLCB2b2lkICopOwotICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnZlcnRlcik7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgdm9pZCAqKTsKKyAgICAgICAgICAgICAgICBpZiAocF92YSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGNvbnZlcnRlcik7CisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIHZvaWQgKik7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvcm1hdCsrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIGlmIChwX3ZhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICBjYXNlICcoJzogICAgICAgICAgIC8qIGJ5cGFzcyB0dXBsZSwgbm90IGhhbmRsZWQgYXQgYWxsIHByZXZpb3VzbHkgKi8KICAgICAgICAgewotICAgICAgICAgICAgY2hhciAqbXNnOworICAgICAgICAgICAgY29uc3QgY2hhciAqbXNnOwogICAgICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgICAgIGlmICgqZm9ybWF0PT0nKScpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTc2NiwxNiArMjM0OSw5IEBACiAgICAgUHlPYmplY3QgKipvOwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0gICAgdmFfc3RhcnQodmFyZ3MsIG1heCk7Ci0jZWxzZQotICAgIHZhX3N0YXJ0KHZhcmdzKTsKLSNlbmRpZgotCiAgICAgYXNzZXJ0KG1pbiA+PSAwKTsKICAgICBhc3NlcnQobWluIDw9IG1heCk7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICJQeUFyZ19VbnBhY2tUdXBsZSgpIGFyZ3VtZW50IGxpc3QgaXMgbm90IGEgdHVwbGUiKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzkzLDkgKzIzNjksMTAgQEAKICAgICAgICAgICAgICAgICAidW5wYWNrZWQgdHVwbGUgc2hvdWxkIGhhdmUgJXMlemQgZWxlbWVudHMsIgogICAgICAgICAgICAgICAgICIgYnV0IGhhcyAlemQiLAogICAgICAgICAgICAgICAgIChtaW4gPT0gbWF4ID8gIiIgOiAiYXQgbGVhc3QgIiksIG1pbiwgbCk7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpZiAobCA9PSAwKQorICAgICAgICByZXR1cm4gMTsKICAgICBpZiAobCA+IG1heCkgewogICAgICAgICBpZiAobmFtZSAhPSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KApAQCAtMTgwOCw5ICsyMzg1LDE0IEBACiAgICAgICAgICAgICAgICAgInVucGFja2VkIHR1cGxlIHNob3VsZCBoYXZlICVzJXpkIGVsZW1lbnRzLCIKICAgICAgICAgICAgICAgICAiIGJ1dCBoYXMgJXpkIiwKICAgICAgICAgICAgICAgICAobWluID09IG1heCA/ICIiIDogImF0IG1vc3QgIiksIG1heCwgbCk7Ci0gICAgICAgIHZhX2VuZCh2YXJncyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKworI2lmZGVmIEhBVkVfU1REQVJHX1BST1RPVFlQRVMKKyAgICB2YV9zdGFydCh2YXJncywgbWF4KTsKKyNlbHNlCisgICAgdmFfc3RhcnQodmFyZ3MpOworI2VuZGlmCiAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykgewogICAgICAgICBvID0gdmFfYXJnKHZhcmdzLCBQeU9iamVjdCAqKik7CiAgICAgICAgICpvID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKQEAgLTE4NjAsNiArMjQ0MiwxOSBAQAogICAgIHJldHVybiAwOwogfQogCit2b2lkCitfUHlBcmdfRmluaSh2b2lkKQoreworICAgIHN0cnVjdCBfUHlBcmdfUGFyc2VyICp0bXAsICpzID0gc3RhdGljX2FyZ19wYXJzZXJzOworICAgIHdoaWxlIChzKSB7CisgICAgICAgIHRtcCA9IHMtPm5leHQ7CisgICAgICAgIHMtPm5leHQgPSBOVUxMOworICAgICAgICBwYXJzZXJfY2xlYXIocyk7CisgICAgICAgIHMgPSB0bXA7CisgICAgfQorICAgIHN0YXRpY19hcmdfcGFyc2VycyA9IE5VTEw7Cit9CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dyYW1pbml0LmMgYi9QeXRob24vZ3JhbWluaXQuYwppbmRleCA4MjEyYjJhLi5mMjU4NGUwIDEwMDY0NAotLS0gYS9QeXRob24vZ3JhbWluaXQuYworKysgYi9QeXRob24vZ3JhbWluaXQuYwpAQCAtMjA0LDExICsyMDQsMTMgQEAKICAgICB7MzIsIDd9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV83WzJdID0geworc3RhdGljIGFyYyBhcmNzXzlfN1szXSA9IHsKICAgICB7MzAsIDEyfSwKICAgICB7MzQsIDN9LAorICAgIHswLCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV84WzFdID0geworc3RhdGljIGFyYyBhcmNzXzlfOFsyXSA9IHsKKyAgICB7MzIsIDEzfSwKICAgICB7MCwgOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfOVsyXSA9IHsKQEAgLTIyMSwzNSArMjIzLDM5IEBACiAgICAgezAsIDEwfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfOV8xMVszXSA9IHsKLSAgICB7MzAsIDEzfSwKLSAgICB7MzIsIDE0fSwKKyAgICB7MzAsIDE0fSwKKyAgICB7MzIsIDE1fSwKICAgICB7MCwgMTF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc185XzEyWzNdID0gewogICAgIHszMiwgN30sCi0gICAgezMxLCAxNX0sCisgICAgezMxLCAxNn0sCiAgICAgezAsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfOV8xM1syXSA9IHsKLSAgICB7MzIsIDE0fSwKK3N0YXRpYyBhcmMgYXJjc185XzEzWzFdID0gewogICAgIHswLCAxM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzlfMTRbMl0gPSB7Ci0gICAgezMwLCAxNn0sCi0gICAgezM0LCAzfSwKKyAgICB7MzIsIDE1fSwKKyAgICB7MCwgMTR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc185XzE1WzFdID0geworc3RhdGljIGFyYyBhcmNzXzlfMTVbM10gPSB7CisgICAgezMwLCAxN30sCisgICAgezM0LCAzfSwKKyAgICB7MCwgMTV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc185XzE2WzFdID0gewogICAgIHsyNiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTZbM10gPSB7Ci0gICAgezMyLCAxNH0sCi0gICAgezMxLCAxN30sCi0gICAgezAsIDE2fSwKK3N0YXRpYyBhcmMgYXJjc185XzE3WzNdID0geworICAgIHszMiwgMTV9LAorICAgIHszMSwgMTh9LAorICAgIHswLCAxN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzlfMTdbMV0gPSB7Ci0gICAgezI2LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfOV8xOFsxXSA9IHsKKyAgICB7MjYsIDE0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzlbMThdID0geworc3RhdGljIHN0YXRlIHN0YXRlc185WzE5XSA9IHsKICAgICB7MywgYXJjc185XzB9LAogICAgIHszLCBhcmNzXzlfMX0sCiAgICAgezMsIGFyY3NfOV8yfSwKQEAgLTI1NywxNyArMjYzLDE4IEBACiAgICAgezEsIGFyY3NfOV80fSwKICAgICB7NCwgYXJjc185XzV9LAogICAgIHsyLCBhcmNzXzlfNn0sCi0gICAgezIsIGFyY3NfOV83fSwKLSAgICB7MSwgYXJjc185Xzh9LAorICAgIHszLCBhcmNzXzlfN30sCisgICAgezIsIGFyY3NfOV84fSwKICAgICB7MiwgYXJjc185Xzl9LAogICAgIHszLCBhcmNzXzlfMTB9LAogICAgIHszLCBhcmNzXzlfMTF9LAogICAgIHszLCBhcmNzXzlfMTJ9LAotICAgIHsyLCBhcmNzXzlfMTN9LAorICAgIHsxLCBhcmNzXzlfMTN9LAogICAgIHsyLCBhcmNzXzlfMTR9LAotICAgIHsxLCBhcmNzXzlfMTV9LAotICAgIHszLCBhcmNzXzlfMTZ9LAotICAgIHsxLCBhcmNzXzlfMTd9LAorICAgIHszLCBhcmNzXzlfMTV9LAorICAgIHsxLCBhcmNzXzlfMTZ9LAorICAgIHszLCBhcmNzXzlfMTd9LAorICAgIHsxLCBhcmNzXzlfMTh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMF8wWzFdID0gewogICAgIHsyMywgMX0sCkBAIC0zMTksMTEgKzMyNiwxMyBAQAogICAgIHszMiwgN30sCiAgICAgezAsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV83WzJdID0geworc3RhdGljIGFyYyBhcmNzXzExXzdbM10gPSB7CiAgICAgezM2LCAxMn0sCiAgICAgezM0LCAzfSwKKyAgICB7MCwgN30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzhbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMTFfOFsyXSA9IHsKKyAgICB7MzIsIDEzfSwKICAgICB7MCwgOH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzlbMl0gPSB7CkBAIC0zMzYsMzUgKzM0NSwzOSBAQAogICAgIHswLCAxMH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzExWzNdID0gewotICAgIHszNiwgMTN9LAotICAgIHszMiwgMTR9LAorICAgIHszNiwgMTR9LAorICAgIHszMiwgMTV9LAogICAgIHswLCAxMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzExXzEyWzNdID0gewogICAgIHszMiwgN30sCi0gICAgezMxLCAxNX0sCisgICAgezMxLCAxNn0sCiAgICAgezAsIDEyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTNbMl0gPSB7Ci0gICAgezMyLCAxNH0sCitzdGF0aWMgYXJjIGFyY3NfMTFfMTNbMV0gPSB7CiAgICAgezAsIDEzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMTFfMTRbMl0gPSB7Ci0gICAgezM2LCAxNn0sCi0gICAgezM0LCAzfSwKKyAgICB7MzIsIDE1fSwKKyAgICB7MCwgMTR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xMV8xNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xMV8xNVszXSA9IHsKKyAgICB7MzYsIDE3fSwKKyAgICB7MzQsIDN9LAorICAgIHswLCAxNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzExXzE2WzFdID0gewogICAgIHsyNiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzExXzE2WzNdID0gewotICAgIHszMiwgMTR9LAotICAgIHszMSwgMTd9LAotICAgIHswLCAxNn0sCitzdGF0aWMgYXJjIGFyY3NfMTFfMTdbM10gPSB7CisgICAgezMyLCAxNX0sCisgICAgezMxLCAxOH0sCisgICAgezAsIDE3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTFfMTdbMV0gPSB7Ci0gICAgezI2LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfMTFfMThbMV0gPSB7CisgICAgezI2LCAxNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xMVsxOF0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzExWzE5XSA9IHsKICAgICB7MywgYXJjc18xMV8wfSwKICAgICB7MywgYXJjc18xMV8xfSwKICAgICB7MywgYXJjc18xMV8yfSwKQEAgLTM3MiwxNyArMzg1LDE4IEBACiAgICAgezEsIGFyY3NfMTFfNH0sCiAgICAgezQsIGFyY3NfMTFfNX0sCiAgICAgezIsIGFyY3NfMTFfNn0sCi0gICAgezIsIGFyY3NfMTFfN30sCi0gICAgezEsIGFyY3NfMTFfOH0sCisgICAgezMsIGFyY3NfMTFfN30sCisgICAgezIsIGFyY3NfMTFfOH0sCiAgICAgezIsIGFyY3NfMTFfOX0sCiAgICAgezMsIGFyY3NfMTFfMTB9LAogICAgIHszLCBhcmNzXzExXzExfSwKICAgICB7MywgYXJjc18xMV8xMn0sCi0gICAgezIsIGFyY3NfMTFfMTN9LAorICAgIHsxLCBhcmNzXzExXzEzfSwKICAgICB7MiwgYXJjc18xMV8xNH0sCi0gICAgezEsIGFyY3NfMTFfMTV9LAotICAgIHszLCBhcmNzXzExXzE2fSwKLSAgICB7MSwgYXJjc18xMV8xN30sCisgICAgezMsIGFyY3NfMTFfMTV9LAorICAgIHsxLCBhcmNzXzExXzE2fSwKKyAgICB7MywgYXJjc18xMV8xN30sCisgICAgezEsIGFyY3NfMTFfMTh9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xMl8wWzFdID0gewogICAgIHsyMywgMX0sCkBAIC00NDUsNTQgKzQ1OSw3NyBAQAogc3RhdGljIGFyYyBhcmNzXzE2XzBbMV0gPSB7CiAgICAgezQ3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTZfMVszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xNl8xWzRdID0gewogICAgIHs0OCwgMn0sCi0gICAgezMxLCAzfSwKKyAgICB7NDksIDN9LAorICAgIHszMSwgNH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl8yWzJdID0gewotICAgIHs0OSwgNH0sCi0gICAgezksIDR9LAorc3RhdGljIGFyYyBhcmNzXzE2XzJbMV0gPSB7CisgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xNl8zWzJdID0gewotICAgIHs0OSwgNX0sCisgICAgezUwLCAyfSwKKyAgICB7OSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE2XzRbMl0gPSB7CisgICAgezUwLCA1fSwKICAgICB7NDcsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18xNl80WzFdID0gewotICAgIHswLCA0fSwKLX07CiBzdGF0aWMgYXJjIGFyY3NfMTZfNVsyXSA9IHsKLSAgICB7MzEsIDN9LAorICAgIHszMSwgNH0sCiAgICAgezAsIDV9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTZbNl0gPSB7CiAgICAgezEsIGFyY3NfMTZfMH0sCi0gICAgezMsIGFyY3NfMTZfMX0sCi0gICAgezIsIGFyY3NfMTZfMn0sCisgICAgezQsIGFyY3NfMTZfMX0sCisgICAgezEsIGFyY3NfMTZfMn0sCiAgICAgezIsIGFyY3NfMTZfM30sCi0gICAgezEsIGFyY3NfMTZfNH0sCisgICAgezIsIGFyY3NfMTZfNH0sCiAgICAgezIsIGFyY3NfMTZfNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE3XzBbMl0gPSB7Ci0gICAgezI2LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzE3XzBbMV0gPSB7CisgICAgezI3LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMTdfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18xN18xWzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE3XzJbMl0gPSB7CisgICAgezMxLCAzfSwKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE3XzNbMV0gPSB7CisgICAgezI2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMTdfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18xN1s1XSA9IHsKKyAgICB7MSwgYXJjc18xN18wfSwKKyAgICB7MSwgYXJjc18xN18xfSwKKyAgICB7MiwgYXJjc18xN18yfSwKKyAgICB7MSwgYXJjc18xN18zfSwKKyAgICB7MSwgYXJjc18xN180fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMThfMFsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHs1MSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzE4XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE3XzJbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfMThfMlszXSA9IHsKICAgICB7MjYsIDF9LAotICAgIHs1MCwgMX0sCisgICAgezUxLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18xN1szXSA9IHsKLSAgICB7MiwgYXJjc18xN18wfSwKLSAgICB7MiwgYXJjc18xN18xfSwKLSAgICB7MywgYXJjc18xN18yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMThbM10gPSB7CisgICAgezIsIGFyY3NfMThfMH0sCisgICAgezIsIGFyY3NfMThfMX0sCisgICAgezMsIGFyY3NfMThfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzE4XzBbMTNdID0gewotICAgIHs1MSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfMTlfMFsxM10gPSB7CiAgICAgezUyLCAxfSwKICAgICB7NTMsIDF9LAogICAgIHs1NCwgMX0sCkBAIC01MDUsNjAgKzU0Miw1MSBAQAogICAgIHs2MSwgMX0sCiAgICAgezYyLCAxfSwKICAgICB7NjMsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18xOF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzE4WzJdID0gewotICAgIHsxMywgYXJjc18xOF8wfSwKLSAgICB7MSwgYXJjc18xOF8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMTlfMFsxXSA9IHsKICAgICB7NjQsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18xOV8xWzFdID0gewotICAgIHs2NSwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzE5XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbM10gPSB7Ci0gICAgezEsIGFyY3NfMTlfMH0sCi0gICAgezEsIGFyY3NfMTlfMX0sCi0gICAgezEsIGFyY3NfMTlfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzIwXzBbMV0gPSB7Ci0gICAgezY2LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjBfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yMFsyXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMTlbMl0gPSB7CisgICAgezEzLCBhcmNzXzE5XzB9LAorICAgIHsxLCBhcmNzXzE5XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yMF8wWzFdID0geworICAgIHs2NSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzIwXzFbMV0gPSB7CisgICAgezY2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjBfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yMFszXSA9IHsKICAgICB7MSwgYXJjc18yMF8wfSwKICAgICB7MSwgYXJjc18yMF8xfSwKKyAgICB7MSwgYXJjc18yMF8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjFfMFs1XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yMV8wWzFdID0gewogICAgIHs2NywgMX0sCi0gICAgezY4LCAxfSwKLSAgICB7NjksIDF9LAotICAgIHs3MCwgMX0sCi0gICAgezcxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjFfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18yMVsyXSA9IHsKLSAgICB7NSwgYXJjc18yMV8wfSwKKyAgICB7MSwgYXJjc18yMV8wfSwKICAgICB7MSwgYXJjc18yMV8xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjJfMFsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yMl8wWzVdID0geworICAgIHs2OCwgMX0sCisgICAgezY5LCAxfSwKKyAgICB7NzAsIDF9LAorICAgIHs3MSwgMX0sCiAgICAgezcyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjJfMVsxXSA9IHsKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc18yMlsyXSA9IHsKLSAgICB7MSwgYXJjc18yMl8wfSwKKyAgICB7NSwgYXJjc18yMl8wfSwKICAgICB7MSwgYXJjc18yMl8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjNfMFsxXSA9IHsKQEAgLTU3NCwxNDIgKzYwMiwxMzMgQEAKIHN0YXRpYyBhcmMgYXJjc18yNF8wWzFdID0gewogICAgIHs3NCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI0XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjRfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yNFsyXSA9IHsKKyAgICB7MSwgYXJjc18yNF8wfSwKKyAgICB7MSwgYXJjc18yNF8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjVfMFsxXSA9IHsKKyAgICB7NzUsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yNV8xWzJdID0gewogICAgIHs5LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI0XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjVfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNFszXSA9IHsKLSAgICB7MSwgYXJjc18yNF8wfSwKLSAgICB7MiwgYXJjc18yNF8xfSwKLSAgICB7MSwgYXJjc18yNF8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjVfMFsxXSA9IHsKLSAgICB7NDksIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yNV8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI1WzJdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18yNVszXSA9IHsKICAgICB7MSwgYXJjc18yNV8wfSwKLSAgICB7MSwgYXJjc18yNV8xfSwKKyAgICB7MiwgYXJjc18yNV8xfSwKKyAgICB7MSwgYXJjc18yNV8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjZfMFsxXSA9IHsKLSAgICB7NzUsIDF9LAorICAgIHs1MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjZfMVsxXSA9IHsKKyAgICB7MCwgMX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yNlsyXSA9IHsKKyAgICB7MSwgYXJjc18yNl8wfSwKKyAgICB7MSwgYXJjc18yNl8xfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjdfMFsxXSA9IHsKKyAgICB7NzYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yN18xWzJdID0gewogICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18yNl8yWzJdID0gewotICAgIHs3NiwgM30sCitzdGF0aWMgYXJjIGFyY3NfMjdfMlsyXSA9IHsKKyAgICB7NzcsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMjZfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc18yN18zWzFdID0gewogICAgIHsyNiwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI2XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfMjdfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18yNls1XSA9IHsKLSAgICB7MSwgYXJjc18yNl8wfSwKLSAgICB7MiwgYXJjc18yNl8xfSwKLSAgICB7MiwgYXJjc18yNl8yfSwKLSAgICB7MSwgYXJjc18yNl8zfSwKLSAgICB7MSwgYXJjc18yNl80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbNV0gPSB7CisgICAgezEsIGFyY3NfMjdfMH0sCisgICAgezIsIGFyY3NfMjdfMX0sCisgICAgezIsIGFyY3NfMjdfMn0sCisgICAgezEsIGFyY3NfMjdfM30sCisgICAgezEsIGFyY3NfMjdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzI3XzBbMl0gPSB7Ci0gICAgezc3LCAxfSwKK3N0YXRpYyBhcmMgYXJjc18yOF8wWzJdID0gewogICAgIHs3OCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI3XzFbMV0gPSB7Ci0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMjdbMl0gPSB7Ci0gICAgezIsIGFyY3NfMjdfMH0sCi0gICAgezEsIGFyY3NfMjdfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI4XzBbMV0gPSB7CiAgICAgezc5LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMjhfMVsxXSA9IHsKLSAgICB7ODAsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOF8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzI4WzNdID0gewotICAgIHsxLCBhcmNzXzI4XzB9LAotICAgIHsxLCBhcmNzXzI4XzF9LAotICAgIHsxLCBhcmNzXzI4XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV8wWzFdID0gewotICAgIHs3NiwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzFbM10gPSB7Ci0gICAgezgxLCAyfSwKLSAgICB7ODIsIDJ9LAotICAgIHsxMiwgM30sCi19Owotc3RhdGljIGFyYyBhcmNzXzI5XzJbNF0gPSB7Ci0gICAgezgxLCAyfSwKLSAgICB7ODIsIDJ9LAotICAgIHsxMiwgM30sCi0gICAgezc5LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfM1sxXSA9IHsKLSAgICB7NzksIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV80WzNdID0gewotICAgIHszMywgNX0sCi0gICAgezEzLCA2fSwKLSAgICB7ODMsIDV9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV81WzFdID0gewotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMjlfNlsxXSA9IHsKLSAgICB7ODMsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18yOV83WzFdID0gewotICAgIHsxNSwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18yOVs4XSA9IHsKLSAgICB7MSwgYXJjc18yOV8wfSwKLSAgICB7MywgYXJjc18yOV8xfSwKLSAgICB7NCwgYXJjc18yOV8yfSwKLSAgICB7MSwgYXJjc18yOV8zfSwKLSAgICB7MywgYXJjc18yOV80fSwKLSAgICB7MSwgYXJjc18yOV81fSwKLSAgICB7MSwgYXJjc18yOV82fSwKLSAgICB7MSwgYXJjc18yOV83fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzBfMFsxXSA9IHsKLSAgICB7MjMsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zMF8xWzJdID0gewotICAgIHs4NSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc18zMF8yWzFdID0gewotICAgIHsyMywgM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzI4WzJdID0geworICAgIHsyLCBhcmNzXzI4XzB9LAorICAgIHsxLCBhcmNzXzI4XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18yOV8wWzFdID0geworICAgIHs4MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzI5XzFbMV0gPSB7CisgICAgezgxLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMjlfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18yOVszXSA9IHsKKyAgICB7MSwgYXJjc18yOV8wfSwKKyAgICB7MSwgYXJjc18yOV8xfSwKKyAgICB7MSwgYXJjc18yOV8yfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfMFsxXSA9IHsKKyAgICB7NzcsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF8xWzNdID0geworICAgIHs4MiwgMn0sCisgICAgezgzLCAyfSwKKyAgICB7MTIsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF8yWzRdID0geworICAgIHs4MiwgMn0sCisgICAgezgzLCAyfSwKKyAgICB7MTIsIDN9LAorICAgIHs4MCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMwXzNbMV0gPSB7Ci0gICAgezAsIDN9LAorICAgIHs4MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMFs0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zMF80WzNdID0geworICAgIHszMywgNX0sCisgICAgezEzLCA2fSwKKyAgICB7ODQsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF81WzFdID0geworICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzBfNlsxXSA9IHsKKyAgICB7ODQsIDd9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMF83WzFdID0geworICAgIHsxNSwgNX0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc18zMFs4XSA9IHsKICAgICB7MSwgYXJjc18zMF8wfSwKLSAgICB7MiwgYXJjc18zMF8xfSwKLSAgICB7MSwgYXJjc18zMF8yfSwKKyAgICB7MywgYXJjc18zMF8xfSwKKyAgICB7NCwgYXJjc18zMF8yfSwKICAgICB7MSwgYXJjc18zMF8zfSwKKyAgICB7MywgYXJjc18zMF80fSwKKyAgICB7MSwgYXJjc18zMF81fSwKKyAgICB7MSwgYXJjc18zMF82fSwKKyAgICB7MSwgYXJjc18zMF83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMFsxXSA9IHsKLSAgICB7MTIsIDF9LAorICAgIHsyMywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMxXzFbMl0gPSB7Ci0gICAgezg1LCAyfSwKKyAgICB7ODYsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzFfMlsxXSA9IHsKQEAgLTcyNSwzNyArNzQ0LDQ1IEBACiAgICAgezEsIGFyY3NfMzFfM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzMyXzBbMV0gPSB7Ci0gICAgezg0LCAxfSwKKyAgICB7MTIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zMl8xWzJdID0geworICAgIHs4NiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zMl8yWzFdID0geworICAgIHsyMywgM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMyXzNbMV0gPSB7CisgICAgezAsIDN9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzJbNF0gPSB7CisgICAgezEsIGFyY3NfMzJfMH0sCisgICAgezIsIGFyY3NfMzJfMX0sCisgICAgezEsIGFyY3NfMzJfMn0sCisgICAgezEsIGFyY3NfMzJfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzMzXzBbMV0gPSB7CisgICAgezg1LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzNfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzJfMlsyXSA9IHsKLSAgICB7ODQsIDF9LAorc3RhdGljIGFyYyBhcmNzXzMzXzJbMl0gPSB7CisgICAgezg1LCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc18zMlszXSA9IHsKLSAgICB7MSwgYXJjc18zMl8wfSwKLSAgICB7MiwgYXJjc18zMl8xfSwKLSAgICB7MiwgYXJjc18zMl8yfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfMzNfMFsxXSA9IHsKLSAgICB7ODYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zM18xWzJdID0gewotICAgIHszMiwgMH0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzNbMl0gPSB7CitzdGF0aWMgc3RhdGUgc3RhdGVzXzMzWzNdID0gewogICAgIHsxLCBhcmNzXzMzXzB9LAogICAgIHsyLCBhcmNzXzMzXzF9LAorICAgIHsyLCBhcmNzXzMzXzJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNF8wWzFdID0gewotICAgIHsyMywgMX0sCisgICAgezg3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzRfMVsyXSA9IHsKLSAgICB7ODEsIDB9LAorICAgIHszMiwgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzRbMl0gPSB7CkBAIC03NjMsMTkgKzc5MCwxNSBAQAogICAgIHsyLCBhcmNzXzM0XzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc18zNV8wWzFdID0gewotICAgIHs4NywgMX0sCisgICAgezIzLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzVfMVsxXSA9IHsKLSAgICB7MjMsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM1XzFbMl0gPSB7CisgICAgezgyLCAwfSwKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzM1XzJbMl0gPSB7Ci0gICAgezMyLCAxfSwKLSAgICB7MCwgMn0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc18zNVszXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzVbMl0gPSB7CiAgICAgezEsIGFyY3NfMzVfMH0sCi0gICAgezEsIGFyY3NfMzVfMX0sCi0gICAgezIsIGFyY3NfMzVfMn0sCisgICAgezIsIGFyY3NfMzVfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM2XzBbMV0gPSB7CiAgICAgezg4LCAxfSwKQEAgLTc5Niw5NyArODE5LDc2IEBACiAgICAgezg5LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfMzdfMVsxXSA9IHsKLSAgICB7MjYsIDJ9LAorICAgIHsyMywgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzM3XzJbMl0gPSB7Ci0gICAgezMyLCAzfSwKKyAgICB7MzIsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzdfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zN180WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM3WzVdID0geworc3RhdGljIHN0YXRlIHN0YXRlc18zN1szXSA9IHsKICAgICB7MSwgYXJjc18zN18wfSwKICAgICB7MSwgYXJjc18zN18xfSwKICAgICB7MiwgYXJjc18zN18yfSwKLSAgICB7MSwgYXJjc18zN18zfSwKLSAgICB7MSwgYXJjc18zN180fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfMzhfMFs5XSA9IHsKK3N0YXRpYyBhcmMgYXJjc18zOF8wWzFdID0gewogICAgIHs5MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzM4XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfMlsyXSA9IHsKKyAgICB7MzIsIDN9LAorICAgIHswLCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfMzhfM1sxXSA9IHsKKyAgICB7MjYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOF80WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzVdID0geworICAgIHsxLCBhcmNzXzM4XzB9LAorICAgIHsxLCBhcmNzXzM4XzF9LAorICAgIHsyLCBhcmNzXzM4XzJ9LAorICAgIHsxLCBhcmNzXzM4XzN9LAorICAgIHsxLCBhcmNzXzM4XzR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc18zOV8wWzldID0gewogICAgIHs5MSwgMX0sCiAgICAgezkyLCAxfSwKICAgICB7OTMsIDF9LAogICAgIHs5NCwgMX0sCisgICAgezk1LCAxfSwKICAgICB7MTksIDF9LAogICAgIHsxOCwgMX0sCiAgICAgezE3LCAxfSwKLSAgICB7OTUsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOF8xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzM4WzJdID0gewotICAgIHs5LCBhcmNzXzM4XzB9LAotICAgIHsxLCBhcmNzXzM4XzF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc18zOV8wWzFdID0gewotICAgIHsyMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzFbM10gPSB7Ci0gICAgezE5LCAyfSwKLSAgICB7OTQsIDJ9LAotICAgIHs5MiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzM5XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbM10gPSB7Ci0gICAgezEsIGFyY3NfMzlfMH0sCi0gICAgezMsIGFyY3NfMzlfMX0sCi0gICAgezEsIGFyY3NfMzlfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzBbMV0gPSB7CiAgICAgezk2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfMVsxXSA9IHsKLSAgICB7MjYsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzM5XzFbMV0gPSB7CisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfMzlbMl0gPSB7CisgICAgezksIGFyY3NfMzlfMH0sCisgICAgezEsIGFyY3NfMzlfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQwXzBbMV0gPSB7CisgICAgezIxLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDBfMVszXSA9IHsKKyAgICB7MTksIDJ9LAorICAgIHs5NSwgMn0sCisgICAgezkzLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDBfMlsxXSA9IHsKLSAgICB7MjcsIDN9LAorICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfM1sxXSA9IHsKLSAgICB7MjgsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF80WzNdID0gewotICAgIHs5NywgMX0sCi0gICAgezk4LCA1fSwKLSAgICB7MCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQwXzVbMV0gPSB7Ci0gICAgezI3LCA2fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDBfNlsxXSA9IHsKLSAgICB7MjgsIDd9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180MF83WzFdID0gewotICAgIHswLCA3fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQwWzhdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180MFszXSA9IHsKICAgICB7MSwgYXJjc180MF8wfSwKLSAgICB7MSwgYXJjc180MF8xfSwKKyAgICB7MywgYXJjc180MF8xfSwKICAgICB7MSwgYXJjc180MF8yfSwKLSAgICB7MSwgYXJjc180MF8zfSwKLSAgICB7MywgYXJjc180MF80fSwKLSAgICB7MSwgYXJjc180MF81fSwKLSAgICB7MSwgYXJjc180MF82fSwKLSAgICB7MSwgYXJjc180MF83fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfMFsxXSA9IHsKLSAgICB7OTksIDF9LAorICAgIHs5NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQxXzFbMV0gPSB7CiAgICAgezI2LCAyfSwKQEAgLTg5Nyw4ICs4OTksOSBAQAogc3RhdGljIGFyYyBhcmNzXzQxXzNbMV0gPSB7CiAgICAgezI4LCA0fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDFfNFsyXSA9IHsKLSAgICB7OTgsIDV9LAorc3RhdGljIGFyYyBhcmNzXzQxXzRbM10gPSB7CisgICAgezk4LCAxfSwKKyAgICB7OTksIDV9LAogICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDFfNVsxXSA9IHsKQEAgLTkxNSw3ICs5MTgsNyBAQAogICAgIHsxLCBhcmNzXzQxXzF9LAogICAgIHsxLCBhcmNzXzQxXzJ9LAogICAgIHsxLCBhcmNzXzQxXzN9LAotICAgIHsyLCBhcmNzXzQxXzR9LAorICAgIHszLCBhcmNzXzQxXzR9LAogICAgIHsxLCBhcmNzXzQxXzV9LAogICAgIHsxLCBhcmNzXzQxXzZ9LAogICAgIHsxLCBhcmNzXzQxXzd9LApAQCAtOTI0LDI1OCArOTI3LDI3MCBAQAogICAgIHsxMDAsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8xWzFdID0gewotICAgIHs2NSwgMn0sCisgICAgezI2LCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfMlsxXSA9IHsKLSAgICB7MTAxLCAzfSwKKyAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml8zWzFdID0gewotICAgIHs5LCA0fSwKKyAgICB7MjgsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml80WzFdID0gewotICAgIHsyNywgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDJfNFsyXSA9IHsKKyAgICB7OTksIDV9LAorICAgIHswLCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDJfNVsxXSA9IHsKLSAgICB7MjgsIDZ9LAorICAgIHsyNywgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQyXzZbMl0gPSB7Ci0gICAgezk4LCA3fSwKLSAgICB7MCwgNn0sCitzdGF0aWMgYXJjIGFyY3NfNDJfNlsxXSA9IHsKKyAgICB7MjgsIDd9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Ml83WzFdID0gewotICAgIHsyNywgOH0sCisgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Ml84WzFdID0gewotICAgIHsyOCwgOX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQyXzlbMV0gPSB7Ci0gICAgezAsIDl9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDJbMTBdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180Mls4XSA9IHsKICAgICB7MSwgYXJjc180Ml8wfSwKICAgICB7MSwgYXJjc180Ml8xfSwKICAgICB7MSwgYXJjc180Ml8yfSwKICAgICB7MSwgYXJjc180Ml8zfSwKLSAgICB7MSwgYXJjc180Ml80fSwKKyAgICB7MiwgYXJjc180Ml80fSwKICAgICB7MSwgYXJjc180Ml81fSwKLSAgICB7MiwgYXJjc180Ml82fSwKKyAgICB7MSwgYXJjc180Ml82fSwKICAgICB7MSwgYXJjc180Ml83fSwKLSAgICB7MSwgYXJjc180Ml84fSwKLSAgICB7MSwgYXJjc180Ml85fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfMFsxXSA9IHsKLSAgICB7MTAyLCAxfSwKKyAgICB7MTAxLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfMVsxXSA9IHsKLSAgICB7MjcsIDJ9LAorICAgIHs2NiwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzJbMV0gPSB7Ci0gICAgezI4LCAzfSwKKyAgICB7MTAyLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfM1syXSA9IHsKLSAgICB7MTAzLCA0fSwKLSAgICB7MTA0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc180M18zWzFdID0geworICAgIHs5LCA0fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfNFsxXSA9IHsKLSAgICB7MjcsIDZ9LAorICAgIHsyNywgNX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQzXzVbMV0gPSB7Ci0gICAgezI3LCA3fSwKKyAgICB7MjgsIDZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180M182WzFdID0gewotICAgIHsyOCwgOH0sCitzdGF0aWMgYXJjIGFyY3NfNDNfNlsyXSA9IHsKKyAgICB7OTksIDd9LAorICAgIHswLCA2fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfN1sxXSA9IHsKLSAgICB7MjgsIDl9LAorICAgIHsyNywgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzhbNF0gPSB7Ci0gICAgezEwMywgNH0sCi0gICAgezk4LCAxMH0sCi0gICAgezEwNCwgNX0sCi0gICAgezAsIDh9LAorc3RhdGljIGFyYyBhcmNzXzQzXzhbMV0gPSB7CisgICAgezI4LCA5fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDNfOVsxXSA9IHsKICAgICB7MCwgOX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQzXzEwWzFdID0gewotICAgIHsyNywgMTF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180M18xMVsxXSA9IHsKLSAgICB7MjgsIDEyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDNfMTJbMl0gPSB7Ci0gICAgezEwNCwgNX0sCi0gICAgezAsIDEyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQzWzEzXSA9IHsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDNbMTBdID0gewogICAgIHsxLCBhcmNzXzQzXzB9LAogICAgIHsxLCBhcmNzXzQzXzF9LAogICAgIHsxLCBhcmNzXzQzXzJ9LAotICAgIHsyLCBhcmNzXzQzXzN9LAorICAgIHsxLCBhcmNzXzQzXzN9LAogICAgIHsxLCBhcmNzXzQzXzR9LAogICAgIHsxLCBhcmNzXzQzXzV9LAotICAgIHsxLCBhcmNzXzQzXzZ9LAorICAgIHsyLCBhcmNzXzQzXzZ9LAogICAgIHsxLCBhcmNzXzQzXzd9LAotICAgIHs0LCBhcmNzXzQzXzh9LAorICAgIHsxLCBhcmNzXzQzXzh9LAogICAgIHsxLCBhcmNzXzQzXzl9LAotICAgIHsxLCBhcmNzXzQzXzEwfSwKLSAgICB7MSwgYXJjc180M18xMX0sCi0gICAgezIsIGFyY3NfNDNfMTJ9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8wWzFdID0gewotICAgIHsxMDUsIDF9LAorICAgIHsxMDMsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180NF8xWzFdID0gewotICAgIHsxMDYsIDJ9LAorICAgIHsyNywgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzJbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDRfMlsxXSA9IHsKKyAgICB7MjgsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8zWzJdID0geworICAgIHsxMDQsIDR9LAorICAgIHsxMDUsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF80WzFdID0geworICAgIHsyNywgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzVbMV0gPSB7CisgICAgezI3LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfNlsxXSA9IHsKKyAgICB7MjgsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF83WzFdID0geworICAgIHsyOCwgOX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzhbNF0gPSB7CisgICAgezEwNCwgNH0sCisgICAgezk5LCAxMH0sCisgICAgezEwNSwgNX0sCisgICAgezAsIDh9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF85WzFdID0geworICAgIHswLCA5fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDRfMTBbMV0gPSB7CisgICAgezI3LCAxMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzQ0XzExWzFdID0geworICAgIHsyOCwgMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NF8xMlsyXSA9IHsKKyAgICB7MTA1LCA1fSwKKyAgICB7MCwgMTJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDRbMTNdID0geworICAgIHsxLCBhcmNzXzQ0XzB9LAorICAgIHsxLCBhcmNzXzQ0XzF9LAorICAgIHsxLCBhcmNzXzQ0XzJ9LAorICAgIHsyLCBhcmNzXzQ0XzN9LAorICAgIHsxLCBhcmNzXzQ0XzR9LAorICAgIHsxLCBhcmNzXzQ0XzV9LAorICAgIHsxLCBhcmNzXzQ0XzZ9LAorICAgIHsxLCBhcmNzXzQ0Xzd9LAorICAgIHs0LCBhcmNzXzQ0Xzh9LAorICAgIHsxLCBhcmNzXzQ0Xzl9LAorICAgIHsxLCBhcmNzXzQ0XzEwfSwKKyAgICB7MSwgYXJjc180NF8xMX0sCisgICAgezIsIGFyY3NfNDRfMTJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8wWzFdID0geworICAgIHsxMDYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8xWzFdID0geworICAgIHsxMDcsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180NV8yWzJdID0gewogICAgIHszMiwgMX0sCiAgICAgezI3LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDRfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180NV8zWzFdID0gewogICAgIHsyOCwgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ0XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDVfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180NFs1XSA9IHsKLSAgICB7MSwgYXJjc180NF8wfSwKLSAgICB7MSwgYXJjc180NF8xfSwKLSAgICB7MiwgYXJjc180NF8yfSwKLSAgICB7MSwgYXJjc180NF8zfSwKLSAgICB7MSwgYXJjc180NF80fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDVfMFsxXSA9IHsKLSAgICB7MjYsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8xWzJdID0gewotICAgIHs4NSwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8yWzFdID0gewotICAgIHsxMDcsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc180NV8zWzFdID0gewotICAgIHswLCAzfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ1WzRdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180NVs1XSA9IHsKICAgICB7MSwgYXJjc180NV8wfSwKLSAgICB7MiwgYXJjc180NV8xfSwKLSAgICB7MSwgYXJjc180NV8yfSwKKyAgICB7MSwgYXJjc180NV8xfSwKKyAgICB7MiwgYXJjc180NV8yfSwKICAgICB7MSwgYXJjc180NV8zfSwKKyAgICB7MSwgYXJjc180NV80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDZfMFsxXSA9IHsKLSAgICB7MTA4LCAxfSwKKyAgICB7MjYsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc180Nl8xWzJdID0geworICAgIHs4NiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Nl8yWzFdID0geworICAgIHsxMDgsIDN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180Nl8zWzFdID0geworICAgIHswLCAzfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzQ2WzRdID0geworICAgIHsxLCBhcmNzXzQ2XzB9LAorICAgIHsyLCBhcmNzXzQ2XzF9LAorICAgIHsxLCBhcmNzXzQ2XzJ9LAorICAgIHsxLCBhcmNzXzQ2XzN9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180N18wWzFdID0geworICAgIHsxMDksIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180N18xWzJdID0gewogICAgIHsyNiwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180Nl8yWzJdID0gewotICAgIHs4NSwgM30sCitzdGF0aWMgYXJjIGFyY3NfNDdfMlsyXSA9IHsKKyAgICB7ODYsIDN9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDZfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180N18zWzFdID0gewogICAgIHsyMywgNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ2XzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDdfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc180Nls1XSA9IHsKLSAgICB7MSwgYXJjc180Nl8wfSwKLSAgICB7MiwgYXJjc180Nl8xfSwKLSAgICB7MiwgYXJjc180Nl8yfSwKLSAgICB7MSwgYXJjc180Nl8zfSwKLSAgICB7MSwgYXJjc180Nl80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbNV0gPSB7CisgICAgezEsIGFyY3NfNDdfMH0sCisgICAgezIsIGFyY3NfNDdfMX0sCisgICAgezIsIGFyY3NfNDdfMn0sCisgICAgezEsIGFyY3NfNDdfM30sCisgICAgezEsIGFyY3NfNDdfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ3XzBbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDhfMFsyXSA9IHsKICAgICB7MywgMX0sCiAgICAgezIsIDJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180N18xWzFdID0gewotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfMlsxXSA9IHsKLSAgICB7MTA5LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNDdfM1sxXSA9IHsKLSAgICB7NiwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ3XzRbMl0gPSB7Ci0gICAgezYsIDR9LAotICAgIHsxMTAsIDF9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDdbNV0gPSB7Ci0gICAgezIsIGFyY3NfNDdfMH0sCi0gICAgezEsIGFyY3NfNDdfMX0sCi0gICAgezEsIGFyY3NfNDdfMn0sCi0gICAgezEsIGFyY3NfNDdfM30sCi0gICAgezIsIGFyY3NfNDdfNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ4XzBbMl0gPSB7Ci0gICAgezExMSwgMX0sCi0gICAgezExMiwgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzQ4XzFbMl0gPSB7Ci0gICAgezk2LCAzfSwKK3N0YXRpYyBhcmMgYXJjc180OF8xWzFdID0gewogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDhfMlsxXSA9IHsKLSAgICB7MCwgMn0sCisgICAgezExMCwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzQ4XzNbMV0gPSB7Ci0gICAgezExMSwgNH0sCisgICAgezYsIDR9LAogfTsKLXN0YXRpYyBhcmMgYXJjc180OF80WzFdID0gewotICAgIHs5OCwgNX0sCitzdGF0aWMgYXJjIGFyY3NfNDhfNFsyXSA9IHsKKyAgICB7NiwgNH0sCisgICAgezExMSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzQ4XzVbMV0gPSB7Ci0gICAgezI2LCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzQ4WzZdID0geworc3RhdGljIHN0YXRlIHN0YXRlc180OFs1XSA9IHsKICAgICB7MiwgYXJjc180OF8wfSwKLSAgICB7MiwgYXJjc180OF8xfSwKKyAgICB7MSwgYXJjc180OF8xfSwKICAgICB7MSwgYXJjc180OF8yfSwKICAgICB7MSwgYXJjc180OF8zfSwKLSAgICB7MSwgYXJjc180OF80fSwKLSAgICB7MSwgYXJjc180OF81fSwKKyAgICB7MiwgYXJjc180OF80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNDlfMFsyXSA9IHsKLSAgICB7MTExLCAxfSwKLSAgICB7MTE0LCAxfSwKKyAgICB7MTEyLCAxfSwKKyAgICB7MTEzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNDlfMVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc180OV8xWzJdID0geworICAgIHs5NywgM30sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNDlbMl0gPSB7Ci0gICAgezIsIGFyY3NfNDlfMH0sCi0gICAgezEsIGFyY3NfNDlfMX0sCitzdGF0aWMgYXJjIGFyY3NfNDlfMlsxXSA9IHsKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUwXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNDlfM1sxXSA9IHsKKyAgICB7MTEyLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNDlfNFsxXSA9IHsKKyAgICB7OTksIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc180OV81WzFdID0geworICAgIHsyNiwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc180OVs2XSA9IHsKKyAgICB7MiwgYXJjc180OV8wfSwKKyAgICB7MiwgYXJjc180OV8xfSwKKyAgICB7MSwgYXJjc180OV8yfSwKKyAgICB7MSwgYXJjc180OV8zfSwKKyAgICB7MSwgYXJjc180OV80fSwKKyAgICB7MSwgYXJjc180OV81fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTBfMFsyXSA9IHsKKyAgICB7MTEyLCAxfSwKICAgICB7MTE1LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfMVsyXSA9IHsKLSAgICB7MzUsIDJ9LAotICAgIHsyNywgM30sCitzdGF0aWMgYXJjIGFyY3NfNTBfMVsxXSA9IHsKKyAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzUwXzJbMV0gPSB7Ci0gICAgezI3LCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTBfM1sxXSA9IHsKLSAgICB7MjYsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181MF80WzFdID0gewotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUwWzVdID0gewotICAgIHsxLCBhcmNzXzUwXzB9LAotICAgIHsyLCBhcmNzXzUwXzF9LAotICAgIHsxLCBhcmNzXzUwXzJ9LAotICAgIHsxLCBhcmNzXzUwXzN9LAotICAgIHsxLCBhcmNzXzUwXzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc181MFsyXSA9IHsKKyAgICB7MiwgYXJjc181MF8wfSwKKyAgICB7MSwgYXJjc181MF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfMFsxXSA9IHsKLSAgICB7MTE1LCAxfSwKKyAgICB7MTE2LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTFfMVsyXSA9IHsKICAgICB7MzUsIDJ9LApAQCAtMTE4NSw3ICsxMjAwLDcgQEAKICAgICB7MjcsIDN9LAogfTsKIHN0YXRpYyBhcmMgYXJjc181MV8zWzFdID0gewotICAgIHsxMTMsIDR9LAorICAgIHsyNiwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUxXzRbMV0gPSB7CiAgICAgezAsIDR9LApAQCAtMTIwMSwxMDggKzEyMTYsMTIwIEBACiAgICAgezExNiwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzUyXzFbMl0gPSB7Ci0gICAgezExNywgMH0sCi0gICAgezAsIDF9LAorICAgIHszNSwgMn0sCisgICAgezI3LCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzUyWzJdID0geworc3RhdGljIGFyYyBhcmNzXzUyXzJbMV0gPSB7CisgICAgezI3LCAzfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTJfM1sxXSA9IHsKKyAgICB7MTE0LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTJfNFsxXSA9IHsKKyAgICB7MCwgNH0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181Mls1XSA9IHsKICAgICB7MSwgYXJjc181Ml8wfSwKICAgICB7MiwgYXJjc181Ml8xfSwKKyAgICB7MSwgYXJjc181Ml8yfSwKKyAgICB7MSwgYXJjc181Ml8zfSwKKyAgICB7MSwgYXJjc181Ml80fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMFsxXSA9IHsKLSAgICB7MTE4LCAxfSwKKyAgICB7MTE3LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTNfMVsyXSA9IHsKLSAgICB7MTE5LCAwfSwKKyAgICB7MTE4LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181M1syXSA9IHsKICAgICB7MSwgYXJjc181M18wfSwKICAgICB7MiwgYXJjc181M18xfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNTRfMFsyXSA9IHsKLSAgICB7MTIwLCAxfSwKLSAgICB7MTIxLCAyfSwKK3N0YXRpYyBhcmMgYXJjc181NF8wWzFdID0geworICAgIHsxMTksIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181NF8xWzFdID0gewotICAgIHsxMTgsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NF8yWzFdID0gewotICAgIHswLCAyfSwKLX07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzU0WzNdID0gewotICAgIHsyLCBhcmNzXzU0XzB9LAotICAgIHsxLCBhcmNzXzU0XzF9LAotICAgIHsxLCBhcmNzXzU0XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NV8wWzFdID0gewotICAgIHsxMDcsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181NV8xWzJdID0gewotICAgIHsxMjIsIDB9LAorc3RhdGljIGFyYyBhcmNzXzU0XzFbMl0gPSB7CisgICAgezEyMCwgMH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTVbMl0gPSB7Ci0gICAgezEsIGFyY3NfNTVfMH0sCi0gICAgezIsIGFyY3NfNTVfMX0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzU0WzJdID0geworICAgIHsxLCBhcmNzXzU0XzB9LAorICAgIHsyLCBhcmNzXzU0XzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc181Nl8wWzEwXSA9IHsKLSAgICB7MTIzLCAxfSwKK3N0YXRpYyBhcmMgYXJjc181NV8wWzJdID0geworICAgIHsxMjEsIDF9LAorICAgIHsxMjIsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181NV8xWzFdID0geworICAgIHsxMTksIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181NV8yWzFdID0geworICAgIHswLCAyfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU1WzNdID0geworICAgIHsyLCBhcmNzXzU1XzB9LAorICAgIHsxLCBhcmNzXzU1XzF9LAorICAgIHsxLCBhcmNzXzU1XzJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Nl8wWzFdID0geworICAgIHsxMDgsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181Nl8xWzJdID0geworICAgIHsxMjMsIDB9LAorICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzU2WzJdID0geworICAgIHsxLCBhcmNzXzU2XzB9LAorICAgIHsyLCBhcmNzXzU2XzF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc181N18wWzEwXSA9IHsKICAgICB7MTI0LCAxfSwKICAgICB7MTI1LCAxfSwKICAgICB7MTI2LCAxfSwKICAgICB7MTI3LCAxfSwKICAgICB7MTI4LCAxfSwKICAgICB7MTI5LCAxfSwKLSAgICB7MTAxLCAxfSwKLSAgICB7MTIwLCAyfSwKLSAgICB7MTMwLCAzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNTZfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzJbMV0gPSB7Ci0gICAgezEwMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU2XzNbMl0gPSB7Ci0gICAgezEyMCwgMX0sCi0gICAgezAsIDN9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTZbNF0gPSB7Ci0gICAgezEwLCBhcmNzXzU2XzB9LAotICAgIHsxLCBhcmNzXzU2XzF9LAotICAgIHsxLCBhcmNzXzU2XzJ9LAotICAgIHsyLCBhcmNzXzU2XzN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc181N18wWzFdID0gewotICAgIHszMywgMX0sCisgICAgezEzMCwgMX0sCisgICAgezEwMiwgMX0sCisgICAgezEyMSwgMn0sCisgICAgezEzMSwgM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzU3XzFbMV0gPSB7Ci0gICAgezEwNywgMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU3XzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNTdbM10gPSB7Ci0gICAgezEsIGFyY3NfNTdfMH0sCi0gICAgezEsIGFyY3NfNTdfMX0sCi0gICAgezEsIGFyY3NfNTdfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU4XzBbMV0gPSB7Ci0gICAgezEzMSwgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzU4XzFbMl0gPSB7Ci0gICAgezEzMiwgMH0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNThbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNTdfMlsxXSA9IHsKKyAgICB7MTAyLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNTdfM1syXSA9IHsKKyAgICB7MTIxLCAxfSwKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181N1s0XSA9IHsKKyAgICB7MTAsIGFyY3NfNTdfMH0sCisgICAgezEsIGFyY3NfNTdfMX0sCisgICAgezEsIGFyY3NfNTdfMn0sCisgICAgezIsIGFyY3NfNTdfM30sCit9Oworc3RhdGljIGFyYyBhcmNzXzU4XzBbMV0gPSB7CisgICAgezMzLCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNThfMVsxXSA9IHsKKyAgICB7MTA4LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNThfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc181OFszXSA9IHsKICAgICB7MSwgYXJjc181OF8wfSwKLSAgICB7MiwgYXJjc181OF8xfSwKKyAgICB7MSwgYXJjc181OF8xfSwKKyAgICB7MSwgYXJjc181OF8yfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTlfMFsxXSA9IHsKLSAgICB7MTMzLCAxfSwKKyAgICB7MTMyLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNTlfMVsyXSA9IHsKLSAgICB7MTM0LCAwfSwKKyAgICB7MTMzLCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc181OVsyXSA9IHsKQEAgLTEzMTAsMTAgKzEzMzcsMTAgQEAKICAgICB7MiwgYXJjc181OV8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjBfMFsxXSA9IHsKLSAgICB7MTM1LCAxfSwKKyAgICB7MTM0LCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjBfMVsyXSA9IHsKLSAgICB7MTM2LCAwfSwKKyAgICB7MTM1LCAwfSwKICAgICB7MCwgMX0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc182MFsyXSA9IHsKQEAgLTEzMjEsMjMgKzEzNDgsMjIgQEAKICAgICB7MiwgYXJjc182MF8xfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjFfMFsxXSA9IHsKLSAgICB7MTM3LCAxfSwKKyAgICB7MTM2LCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjFfMVszXSA9IHsKLSAgICB7MTM4LCAwfSwKLSAgICB7MTM5LCAwfSwKK3N0YXRpYyBhcmMgYXJjc182MV8xWzJdID0geworICAgIHsxMzcsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYxWzJdID0gewogICAgIHsxLCBhcmNzXzYxXzB9LAotICAgIHszLCBhcmNzXzYxXzF9LAorICAgIHsyLCBhcmNzXzYxXzF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182Ml8wWzFdID0gewotICAgIHsxNDAsIDF9LAorICAgIHsxMzgsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc182Ml8xWzNdID0gewotICAgIHsxNDEsIDB9LAotICAgIHsxNDIsIDB9LAorICAgIHsxMzksIDB9LAorICAgIHsxNDAsIDB9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgc3RhdGUgc3RhdGVzXzYyWzJdID0gewpAQCAtMTM0NSw1MjggKzEzNzEsNTQ1IEBACiAgICAgezMsIGFyY3NfNjJfMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzYzXzBbMV0gPSB7Ci0gICAgezE0MywgMX0sCisgICAgezE0MSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzYzXzFbNl0gPSB7Ci0gICAgezMzLCAwfSwKLSAgICB7MTEsIDB9LAotICAgIHsxNDQsIDB9LAotICAgIHsxNDUsIDB9LAotICAgIHsxNDYsIDB9LAorc3RhdGljIGFyYyBhcmNzXzYzXzFbM10gPSB7CisgICAgezE0MiwgMH0sCisgICAgezE0MywgMH0sCiAgICAgezAsIDF9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjNbMl0gPSB7CiAgICAgezEsIGFyY3NfNjNfMH0sCi0gICAgezYsIGFyY3NfNjNfMX0sCisgICAgezMsIGFyY3NfNjNfMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzBbNF0gPSB7Ci0gICAgezE0MSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjRfMFsxXSA9IHsKKyAgICB7MTQ0LCAxfSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjRfMVs2XSA9IHsKKyAgICB7MzMsIDB9LAorICAgIHsxMSwgMH0sCisgICAgezE0NSwgMH0sCisgICAgezE0NiwgMH0sCisgICAgezE0NywgMH0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNjRbMl0gPSB7CisgICAgezEsIGFyY3NfNjRfMH0sCisgICAgezYsIGFyY3NfNjRfMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY1XzBbNF0gPSB7CiAgICAgezE0MiwgMX0sCi0gICAgezE0NywgMX0sCi0gICAgezE0OCwgMn0sCisgICAgezE0MywgMX0sCisgICAgezE0OCwgMX0sCisgICAgezE0OSwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY0XzFbMV0gPSB7Ci0gICAgezE0MywgMn0sCitzdGF0aWMgYXJjIGFyY3NfNjVfMVsxXSA9IHsKKyAgICB7MTQ0LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjRfMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182NV8yWzFdID0gewogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY0WzNdID0gewotICAgIHs0LCBhcmNzXzY0XzB9LAotICAgIHsxLCBhcmNzXzY0XzF9LAotICAgIHsxLCBhcmNzXzY0XzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc182NVszXSA9IHsKKyAgICB7NCwgYXJjc182NV8wfSwKKyAgICB7MSwgYXJjc182NV8xfSwKKyAgICB7MSwgYXJjc182NV8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfMFsxXSA9IHsKLSAgICB7MTQ5LCAxfSwKK3N0YXRpYyBhcmMgYXJjc182Nl8wWzFdID0geworICAgIHsxNTAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182NV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzY2XzFbMl0gPSB7CiAgICAgezM0LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY1XzJbMV0gPSB7Ci0gICAgezE0MywgM30sCitzdGF0aWMgYXJjIGFyY3NfNjZfMlsxXSA9IHsKKyAgICB7MTQ0LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjVfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182Nl8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY1WzRdID0gewotICAgIHsxLCBhcmNzXzY1XzB9LAotICAgIHsyLCBhcmNzXzY1XzF9LAotICAgIHsxLCBhcmNzXzY1XzJ9LAotICAgIHsxLCBhcmNzXzY1XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc182Nls0XSA9IHsKKyAgICB7MSwgYXJjc182Nl8wfSwKKyAgICB7MiwgYXJjc182Nl8xfSwKKyAgICB7MSwgYXJjc182Nl8yfSwKKyAgICB7MSwgYXJjc182Nl8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMFsyXSA9IHsKLSAgICB7MTUwLCAxfSwKLSAgICB7MTUxLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMVsxXSA9IHsKLSAgICB7MTUxLCAyfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjZfMlsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc182N18wWzJdID0geworICAgIHsxNTEsIDF9LAogICAgIHsxNTIsIDJ9LAotICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY2WzNdID0gewotICAgIHsyLCBhcmNzXzY2XzB9LAotICAgIHsxLCBhcmNzXzY2XzF9LAotICAgIHsyLCBhcmNzXzY2XzJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N18wWzEwXSA9IHsKLSAgICB7MTMsIDF9LAotICAgIHsxNTQsIDJ9LAotICAgIHsxNTYsIDN9LAotICAgIHsyMywgNH0sCi0gICAgezE1OSwgNH0sCi0gICAgezE2MCwgNX0sCi0gICAgezgyLCA0fSwKLSAgICB7MTYxLCA0fSwKLSAgICB7MTYyLCA0fSwKLSAgICB7MTYzLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfMVszXSA9IHsKLSAgICB7NDksIDZ9LAotICAgIHsxNTMsIDZ9LAotICAgIHsxNSwgNH0sCitzdGF0aWMgYXJjIGFyY3NfNjdfMVsxXSA9IHsKKyAgICB7MTUyLCAyfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfNjdfMlsyXSA9IHsKLSAgICB7MTUzLCA3fSwKLSAgICB7MTU1LCA0fSwKKyAgICB7MTUzLCAyfSwKKyAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY3XzNbMl0gPSB7Ci0gICAgezE1NywgOH0sCi0gICAgezE1OCwgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzY3XzRbMV0gPSB7Ci0gICAgezAsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N181WzJdID0gewotICAgIHsxNjAsIDV9LAotICAgIHswLCA1fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNjdfNlsxXSA9IHsKLSAgICB7MTUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N183WzFdID0gewotICAgIHsxNTUsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc182N184WzFdID0gewotICAgIHsxNTgsIDR9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjdbOV0gPSB7Ci0gICAgezEwLCBhcmNzXzY3XzB9LAotICAgIHszLCBhcmNzXzY3XzF9LAorc3RhdGljIHN0YXRlIHN0YXRlc182N1szXSA9IHsKKyAgICB7MiwgYXJjc182N18wfSwKKyAgICB7MSwgYXJjc182N18xfSwKICAgICB7MiwgYXJjc182N18yfSwKLSAgICB7MiwgYXJjc182N18zfSwKLSAgICB7MSwgYXJjc182N180fSwKLSAgICB7MiwgYXJjc182N181fSwKLSAgICB7MSwgYXJjc182N182fSwKLSAgICB7MSwgYXJjc182N183fSwKLSAgICB7MSwgYXJjc182N184fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjhfMFsyXSA9IHsKLSAgICB7MjYsIDF9LAotICAgIHs1MCwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNjhfMFsxMF0gPSB7CisgICAgezEzLCAxfSwKKyAgICB7MTU1LCAyfSwKKyAgICB7MTU3LCAzfSwKKyAgICB7MjMsIDR9LAorICAgIHsxNjAsIDR9LAorICAgIHsxNjEsIDV9LAorICAgIHs4MywgNH0sCisgICAgezE2MiwgNH0sCisgICAgezE2MywgNH0sCisgICAgezE2NCwgNH0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzY4XzFbM10gPSB7Ci0gICAgezE2NCwgMn0sCisgICAgezUwLCA2fSwKKyAgICB7MTU0LCA2fSwKKyAgICB7MTUsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF8yWzJdID0geworICAgIHsxNTQsIDd9LAorICAgIHsxNTYsIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF8zWzJdID0geworICAgIHsxNTgsIDh9LAorICAgIHsxNTksIDR9LAorfTsKK3N0YXRpYyBhcmMgYXJjc182OF80WzFdID0geworICAgIHswLCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfNVsyXSA9IHsKKyAgICB7MTYxLCA1fSwKKyAgICB7MCwgNX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY4XzZbMV0gPSB7CisgICAgezE1LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfN1sxXSA9IHsKKyAgICB7MTU2LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjhfOFsxXSA9IHsKKyAgICB7MTU5LCA0fSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzY4WzldID0geworICAgIHsxMCwgYXJjc182OF8wfSwKKyAgICB7MywgYXJjc182OF8xfSwKKyAgICB7MiwgYXJjc182OF8yfSwKKyAgICB7MiwgYXJjc182OF8zfSwKKyAgICB7MSwgYXJjc182OF80fSwKKyAgICB7MiwgYXJjc182OF81fSwKKyAgICB7MSwgYXJjc182OF82fSwKKyAgICB7MSwgYXJjc182OF83fSwKKyAgICB7MSwgYXJjc182OF84fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNjlfMFsyXSA9IHsKKyAgICB7MjYsIDF9LAorICAgIHs1MSwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzY5XzFbM10gPSB7CisgICAgezE2NSwgMn0sCiAgICAgezMyLCAzfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzJbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzNbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfM1szXSA9IHsKICAgICB7MjYsIDR9LAotICAgIHs1MCwgNH0sCisgICAgezUxLCA0fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY4XzRbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNjlfNFsyXSA9IHsKICAgICB7MzIsIDN9LAogICAgIHswLCA0fSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzY4WzVdID0gewotICAgIHsyLCBhcmNzXzY4XzB9LAotICAgIHszLCBhcmNzXzY4XzF9LAotICAgIHsxLCBhcmNzXzY4XzJ9LAotICAgIHszLCBhcmNzXzY4XzN9LAotICAgIHsyLCBhcmNzXzY4XzR9LAorc3RhdGljIHN0YXRlIHN0YXRlc182OVs1XSA9IHsKKyAgICB7MiwgYXJjc182OV8wfSwKKyAgICB7MywgYXJjc182OV8xfSwKKyAgICB7MSwgYXJjc182OV8yfSwKKyAgICB7MywgYXJjc182OV8zfSwKKyAgICB7MiwgYXJjc182OV80fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfMFszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF8wWzNdID0gewogICAgIHsxMywgMX0sCi0gICAgezE1NCwgMn0sCi0gICAgezgxLCAzfSwKKyAgICB7MTU1LCAyfSwKKyAgICB7ODIsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzFbMl0gPSB7CiAgICAgezE0LCA0fSwKICAgICB7MTUsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV8yWzFdID0gewotICAgIHsxNjUsIDZ9LAorc3RhdGljIGFyYyBhcmNzXzcwXzJbMV0gPSB7CisgICAgezE2NiwgNn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzY5XzNbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzBfM1sxXSA9IHsKICAgICB7MjMsIDV9LAogfTsKLXN0YXRpYyBhcmMgYXJjc182OV80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzcwXzRbMV0gPSB7CiAgICAgezE1LCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183MF81WzFdID0gewogICAgIHswLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNjlfNlsxXSA9IHsKLSAgICB7MTU1LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183MF82WzFdID0geworICAgIHsxNTYsIDV9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNjlbN10gPSB7Ci0gICAgezMsIGFyY3NfNjlfMH0sCi0gICAgezIsIGFyY3NfNjlfMX0sCi0gICAgezEsIGFyY3NfNjlfMn0sCi0gICAgezEsIGFyY3NfNjlfM30sCi0gICAgezEsIGFyY3NfNjlfNH0sCi0gICAgezEsIGFyY3NfNjlfNX0sCi0gICAgezEsIGFyY3NfNjlfNn0sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzcwWzddID0geworICAgIHszLCBhcmNzXzcwXzB9LAorICAgIHsyLCBhcmNzXzcwXzF9LAorICAgIHsxLCBhcmNzXzcwXzJ9LAorICAgIHsxLCBhcmNzXzcwXzN9LAorICAgIHsxLCBhcmNzXzcwXzR9LAorICAgIHsxLCBhcmNzXzcwXzV9LAorICAgIHsxLCBhcmNzXzcwXzZ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MF8wWzFdID0gewotICAgIHsxNjYsIDF9LAorc3RhdGljIGFyYyBhcmNzXzcxXzBbMV0gPSB7CisgICAgezE2NywgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcwXzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzFfMVsyXSA9IHsKICAgICB7MzIsIDJ9LAogICAgIHswLCAxfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzBfMlsyXSA9IHsKLSAgICB7MTY2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183MV8yWzJdID0geworICAgIHsxNjcsIDF9LAogICAgIHswLCAyfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzcwWzNdID0gewotICAgIHsxLCBhcmNzXzcwXzB9LAotICAgIHsyLCBhcmNzXzcwXzF9LAotICAgIHsyLCBhcmNzXzcwXzJ9LAorc3RhdGljIHN0YXRlIHN0YXRlc183MVszXSA9IHsKKyAgICB7MSwgYXJjc183MV8wfSwKKyAgICB7MiwgYXJjc183MV8xfSwKKyAgICB7MiwgYXJjc183MV8yfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMFsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml8wWzJdID0gewogICAgIHsyNiwgMX0sCiAgICAgezI3LCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzFfMVsyXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Ml8xWzJdID0gewogICAgIHsyNywgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183MV8yWzNdID0geworc3RhdGljIGFyYyBhcmNzXzcyXzJbM10gPSB7CiAgICAgezI2LCAzfSwKLSAgICB7MTY3LCA0fSwKKyAgICB7MTY4LCA0fSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzNbMl0gPSB7Ci0gICAgezE2NywgNH0sCitzdGF0aWMgYXJjIGFyY3NfNzJfM1syXSA9IHsKKyAgICB7MTY4LCA0fSwKICAgICB7MCwgM30sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcxXzRbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzJfNFsxXSA9IHsKICAgICB7MCwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183MVs1XSA9IHsKLSAgICB7MiwgYXJjc183MV8wfSwKLSAgICB7MiwgYXJjc183MV8xfSwKLSAgICB7MywgYXJjc183MV8yfSwKLSAgICB7MiwgYXJjc183MV8zfSwKLSAgICB7MSwgYXJjc183MV80fSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzJbNV0gPSB7CisgICAgezIsIGFyY3NfNzJfMH0sCisgICAgezIsIGFyY3NfNzJfMX0sCisgICAgezMsIGFyY3NfNzJfMn0sCisgICAgezIsIGFyY3NfNzJfM30sCisgICAgezEsIGFyY3NfNzJfNH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzBbMV0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzNfMFsxXSA9IHsKICAgICB7MjcsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183Ml8xWzJdID0geworc3RhdGljIGFyYyBhcmNzXzczXzFbMl0gPSB7CiAgICAgezI2LCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzcyXzJbMV0gPSB7Ci0gICAgezAsIDJ9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzJbM10gPSB7Ci0gICAgezEsIGFyY3NfNzJfMH0sCi0gICAgezIsIGFyY3NfNzJfMX0sCi0gICAgezEsIGFyY3NfNzJfMn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzczXzBbMl0gPSB7Ci0gICAgezEwNywgMX0sCi0gICAgezUwLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMVsyXSA9IHsKLSAgICB7MzIsIDJ9LAotICAgIHswLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzNfMlszXSA9IHsKLSAgICB7MTA3LCAxfSwKLSAgICB7NTAsIDF9LAorc3RhdGljIGFyYyBhcmNzXzczXzJbMV0gPSB7CiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzNbM10gPSB7Ci0gICAgezIsIGFyY3NfNzNfMH0sCisgICAgezEsIGFyY3NfNzNfMH0sCiAgICAgezIsIGFyY3NfNzNfMX0sCi0gICAgezMsIGFyY3NfNzNfMn0sCisgICAgezEsIGFyY3NfNzNfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzBbMV0gPSB7Ci0gICAgezI2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183NF8wWzJdID0geworICAgIHsxMDgsIDF9LAorICAgIHs1MSwgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc0XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc0XzJbMl0gPSB7Ci0gICAgezI2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc183NF8yWzNdID0geworICAgIHsxMDgsIDF9LAorICAgIHs1MSwgMX0sCiAgICAgezAsIDJ9LAogfTsKIHN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzRbM10gPSB7Ci0gICAgezEsIGFyY3NfNzRfMH0sCisgICAgezIsIGFyY3NfNzRfMH0sCiAgICAgezIsIGFyY3NfNzRfMX0sCi0gICAgezIsIGFyY3NfNzRfMn0sCisgICAgezMsIGFyY3NfNzRfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzBbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzVfMFsxXSA9IHsKKyAgICB7MjYsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8xWzJdID0geworICAgIHszMiwgMn0sCisgICAgezAsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183NV8yWzJdID0geworICAgIHsyNiwgMX0sCisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzVbM10gPSB7CisgICAgezEsIGFyY3NfNzVfMH0sCisgICAgezIsIGFyY3NfNzVfMX0sCisgICAgezIsIGFyY3NfNzVfMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc2XzBbM10gPSB7CiAgICAgezI2LCAxfSwKICAgICB7MzQsIDJ9LAotICAgIHs1MCwgM30sCisgICAgezUxLCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMVs0XSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xWzRdID0gewogICAgIHsyNywgNH0sCi0gICAgezE2NCwgNX0sCisgICAgezE2NSwgNX0sCiAgICAgezMyLCA2fSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzJbMV0gPSB7Ci0gICAgezEwNywgN30sCitzdGF0aWMgYXJjIGFyY3NfNzZfMlsxXSA9IHsKKyAgICB7MTA4LCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfM1szXSA9IHsKLSAgICB7MTY0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183Nl8zWzNdID0geworICAgIHsxNjUsIDV9LAogICAgIHszMiwgNn0sCiAgICAgezAsIDN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV80WzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzRbMV0gPSB7CiAgICAgezI2LCA3fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfNVsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl81WzFdID0gewogICAgIHswLCA1fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfNlszXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl82WzNdID0gewogICAgIHsyNiwgOH0sCi0gICAgezUwLCA4fSwKKyAgICB7NTEsIDh9LAogICAgIHswLCA2fSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfN1szXSA9IHsKLSAgICB7MTY0LCA1fSwKK3N0YXRpYyBhcmMgYXJjc183Nl83WzNdID0geworICAgIHsxNjUsIDV9LAogICAgIHszMiwgOX0sCiAgICAgezAsIDd9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV84WzJdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzhbMl0gPSB7CiAgICAgezMyLCA2fSwKICAgICB7MCwgOH0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzlbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfOVszXSA9IHsKICAgICB7MjYsIDEwfSwKICAgICB7MzQsIDExfSwKICAgICB7MCwgOX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc1XzEwWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc2XzEwWzFdID0gewogICAgIHsyNywgMTJ9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xMVsxXSA9IHsKLSAgICB7MTA3LCAxM30sCitzdGF0aWMgYXJjIGFyY3NfNzZfMTFbMV0gPSB7CisgICAgezEwOCwgMTN9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183NV8xMlsxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183Nl8xMlsxXSA9IHsKICAgICB7MjYsIDEzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzVfMTNbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzZfMTNbMl0gPSB7CiAgICAgezMyLCA5fSwKICAgICB7MCwgMTN9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzVbMTRdID0gewotICAgIHszLCBhcmNzXzc1XzB9LAotICAgIHs0LCBhcmNzXzc1XzF9LAotICAgIHsxLCBhcmNzXzc1XzJ9LAotICAgIHszLCBhcmNzXzc1XzN9LAotICAgIHsxLCBhcmNzXzc1XzR9LAotICAgIHsxLCBhcmNzXzc1XzV9LAotICAgIHszLCBhcmNzXzc1XzZ9LAotICAgIHszLCBhcmNzXzc1Xzd9LAotICAgIHsyLCBhcmNzXzc1Xzh9LAotICAgIHszLCBhcmNzXzc1Xzl9LAotICAgIHsxLCBhcmNzXzc1XzEwfSwKLSAgICB7MSwgYXJjc183NV8xMX0sCi0gICAgezEsIGFyY3NfNzVfMTJ9LAotICAgIHsyLCBhcmNzXzc1XzEzfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMFsxXSA9IHsKLSAgICB7MTY4LCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfMVsxXSA9IHsKLSAgICB7MjMsIDJ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl8yWzJdID0gewotICAgIHsxMywgM30sCi0gICAgezI3LCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfM1syXSA9IHsKLSAgICB7MTQsIDV9LAotICAgIHsxNSwgNn0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzRbMV0gPSB7Ci0gICAgezI4LCA3fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzZfNVsxXSA9IHsKLSAgICB7MTUsIDZ9LAotfTsKLXN0YXRpYyBhcmMgYXJjc183Nl82WzFdID0gewotICAgIHsyNywgNH0sCi19Owotc3RhdGljIGFyYyBhcmNzXzc2XzdbMV0gPSB7Ci0gICAgezAsIDd9LAotfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfNzZbOF0gPSB7Ci0gICAgezEsIGFyY3NfNzZfMH0sCi0gICAgezEsIGFyY3NfNzZfMX0sCi0gICAgezIsIGFyY3NfNzZfMn0sCi0gICAgezIsIGFyY3NfNzZfM30sCitzdGF0aWMgc3RhdGUgc3RhdGVzXzc2WzE0XSA9IHsKKyAgICB7MywgYXJjc183Nl8wfSwKKyAgICB7NCwgYXJjc183Nl8xfSwKKyAgICB7MSwgYXJjc183Nl8yfSwKKyAgICB7MywgYXJjc183Nl8zfSwKICAgICB7MSwgYXJjc183Nl80fSwKICAgICB7MSwgYXJjc183Nl81fSwKLSAgICB7MSwgYXJjc183Nl82fSwKLSAgICB7MSwgYXJjc183Nl83fSwKKyAgICB7MywgYXJjc183Nl82fSwKKyAgICB7MywgYXJjc183Nl83fSwKKyAgICB7MiwgYXJjc183Nl84fSwKKyAgICB7MywgYXJjc183Nl85fSwKKyAgICB7MSwgYXJjc183Nl8xMH0sCisgICAgezEsIGFyY3NfNzZfMTF9LAorICAgIHsxLCBhcmNzXzc2XzEyfSwKKyAgICB7MiwgYXJjc183Nl8xM30sCiB9Owogc3RhdGljIGFyYyBhcmNzXzc3XzBbMV0gPSB7CiAgICAgezE2OSwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc3XzFbMl0gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzdfMVsxXSA9IHsKKyAgICB7MjMsIDJ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N18yWzJdID0geworICAgIHsxMywgM30sCisgICAgezI3LCA0fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfM1syXSA9IHsKKyAgICB7MTQsIDV9LAorICAgIHsxNSwgNn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzRbMV0gPSB7CisgICAgezI4LCA3fSwKK307CitzdGF0aWMgYXJjIGFyY3NfNzdfNVsxXSA9IHsKKyAgICB7MTUsIDZ9LAorfTsKK3N0YXRpYyBhcmMgYXJjc183N182WzFdID0geworICAgIHsyNywgNH0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc3XzdbMV0gPSB7CisgICAgezAsIDd9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzdbOF0gPSB7CisgICAgezEsIGFyY3NfNzdfMH0sCisgICAgezEsIGFyY3NfNzdfMX0sCisgICAgezIsIGFyY3NfNzdfMn0sCisgICAgezIsIGFyY3NfNzdfM30sCisgICAgezEsIGFyY3NfNzdfNH0sCisgICAgezEsIGFyY3NfNzdfNX0sCisgICAgezEsIGFyY3NfNzdfNn0sCisgICAgezEsIGFyY3NfNzdfN30sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzBbMV0gPSB7CisgICAgezE3MCwgMX0sCit9Oworc3RhdGljIGFyYyBhcmNzXzc4XzFbMl0gPSB7CiAgICAgezMyLCAyfSwKICAgICB7MCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc3XzJbMl0gPSB7Ci0gICAgezE2OSwgMX0sCitzdGF0aWMgYXJjIGFyY3NfNzhfMlsyXSA9IHsKKyAgICB7MTcwLCAxfSwKICAgICB7MCwgMn0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc183N1szXSA9IHsKLSAgICB7MSwgYXJjc183N18wfSwKLSAgICB7MiwgYXJjc183N18xfSwKLSAgICB7MiwgYXJjc183N18yfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfNzhbM10gPSB7CisgICAgezEsIGFyY3NfNzhfMH0sCisgICAgezIsIGFyY3NfNzhfMX0sCisgICAgezIsIGFyY3NfNzhfMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzc4XzBbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfNzlfMFszXSA9IHsKICAgICB7MjYsIDF9LAogICAgIHszNCwgMn0sCiAgICAgezMzLCAyfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfMVszXSA9IHsKLSAgICB7MTY0LCAzfSwKK3N0YXRpYyBhcmMgYXJjc183OV8xWzNdID0geworICAgIHsxNjUsIDN9LAogICAgIHszMSwgMn0sCiAgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc183OF8yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzc5XzJbMV0gPSB7CiAgICAgezI2LCAzfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzhfM1sxXSA9IHsKK3N0YXRpYyBhcmMgYXJjc183OV8zWzFdID0gewogICAgIHswLCAzfSwKIH07Ci1zdGF0aWMgc3RhdGUgc3RhdGVzXzc4WzRdID0gewotICAgIHszLCBhcmNzXzc4XzB9LAotICAgIHszLCBhcmNzXzc4XzF9LAotICAgIHsxLCBhcmNzXzc4XzJ9LAotICAgIHsxLCBhcmNzXzc4XzN9LAorc3RhdGljIHN0YXRlIHN0YXRlc183OVs0XSA9IHsKKyAgICB7MywgYXJjc183OV8wfSwKKyAgICB7MywgYXJjc183OV8xfSwKKyAgICB7MSwgYXJjc183OV8yfSwKKyAgICB7MSwgYXJjc183OV8zfSwKIH07Ci1zdGF0aWMgYXJjIGFyY3NfNzlfMFsyXSA9IHsKLSAgICB7MTY0LCAxfSwKLSAgICB7MTcxLCAxfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfNzlfMVsxXSA9IHsKLSAgICB7MCwgMX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc183OVsyXSA9IHsKLSAgICB7MiwgYXJjc183OV8wfSwKLSAgICB7MSwgYXJjc183OV8xfSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfMFsxXSA9IHsKLSAgICB7MTAwLCAxfSwKK3N0YXRpYyBhcmMgYXJjc184MF8wWzJdID0geworICAgIHsxNjUsIDF9LAorICAgIHsxNzIsIDF9LAogfTsKIHN0YXRpYyBhcmMgYXJjc184MF8xWzFdID0gewotICAgIHs2NSwgMn0sCisgICAgezAsIDF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184MF8yWzFdID0gewotICAgIHsxMDEsIDN9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF8zWzFdID0gewotICAgIHsxMTEsIDR9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184MF80WzJdID0gewotICAgIHsxNzAsIDV9LAotICAgIHswLCA0fSwKLX07Ci1zdGF0aWMgYXJjIGFyY3NfODBfNVsxXSA9IHsKLSAgICB7MCwgNX0sCi19Owotc3RhdGljIHN0YXRlIHN0YXRlc184MFs2XSA9IHsKLSAgICB7MSwgYXJjc184MF8wfSwKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODBbMl0gPSB7CisgICAgezIsIGFyY3NfODBfMH0sCiAgICAgezEsIGFyY3NfODBfMX0sCi0gICAgezEsIGFyY3NfODBfMn0sCi0gICAgezEsIGFyY3NfODBfM30sCi0gICAgezIsIGFyY3NfODBfNH0sCi0gICAgezEsIGFyY3NfODBfNX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgxXzBbMV0gPSB7Ci0gICAgezk2LCAxfSwKK3N0YXRpYyBhcmMgYXJjc184MV8wWzJdID0geworICAgIHsyMSwgMX0sCisgICAgezEwMSwgMn0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgxXzFbMV0gPSB7Ci0gICAgezExMywgMn0sCisgICAgezEwMSwgMn0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzgxXzJbMl0gPSB7Ci0gICAgezE3MCwgM30sCi0gICAgezAsIDJ9LAorc3RhdGljIGFyYyBhcmNzXzgxXzJbMV0gPSB7CisgICAgezY2LCAzfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODFfM1sxXSA9IHsKLSAgICB7MCwgM30sCisgICAgezEwMiwgNH0sCiB9Owotc3RhdGljIHN0YXRlIHN0YXRlc184MVs0XSA9IHsKLSAgICB7MSwgYXJjc184MV8wfSwKK3N0YXRpYyBhcmMgYXJjc184MV80WzFdID0geworICAgIHsxMTIsIDV9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184MV81WzJdID0geworICAgIHsxNzEsIDZ9LAorICAgIHswLCA1fSwKK307CitzdGF0aWMgYXJjIGFyY3NfODFfNlsxXSA9IHsKKyAgICB7MCwgNn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184MVs3XSA9IHsKKyAgICB7MiwgYXJjc184MV8wfSwKICAgICB7MSwgYXJjc184MV8xfSwKLSAgICB7MiwgYXJjc184MV8yfSwKKyAgICB7MSwgYXJjc184MV8yfSwKICAgICB7MSwgYXJjc184MV8zfSwKKyAgICB7MSwgYXJjc184MV80fSwKKyAgICB7MiwgYXJjc184MV81fSwKKyAgICB7MSwgYXJjc184MV82fSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODJfMFsxXSA9IHsKLSAgICB7MjMsIDF9LAorICAgIHs5NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgyXzFbMV0gPSB7Ci0gICAgezAsIDF9LAorICAgIHsxMTQsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODJbMl0gPSB7Ci0gICAgezEsIGFyY3NfODJfMH0sCi0gICAgezEsIGFyY3NfODJfMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgzXzBbMV0gPSB7Ci0gICAgezE3MywgMX0sCi19Owotc3RhdGljIGFyYyBhcmNzXzgzXzFbMl0gPSB7Ci0gICAgezE3NCwgMn0sCi0gICAgezAsIDF9LAotfTsKLXN0YXRpYyBhcmMgYXJjc184M18yWzFdID0geworc3RhdGljIGFyYyBhcmNzXzgyXzJbMl0gPSB7CisgICAgezE3MSwgM30sCiAgICAgezAsIDJ9LAogfTsKLXN0YXRpYyBzdGF0ZSBzdGF0ZXNfODNbM10gPSB7CitzdGF0aWMgYXJjIGFyY3NfODJfM1sxXSA9IHsKKyAgICB7MCwgM30sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184Mls0XSA9IHsKKyAgICB7MSwgYXJjc184Ml8wfSwKKyAgICB7MSwgYXJjc184Ml8xfSwKKyAgICB7MiwgYXJjc184Ml8yfSwKKyAgICB7MSwgYXJjc184Ml8zfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODNfMFsxXSA9IHsKKyAgICB7MjMsIDF9LAorfTsKK3N0YXRpYyBhcmMgYXJjc184M18xWzFdID0geworICAgIHswLCAxfSwKK307CitzdGF0aWMgc3RhdGUgc3RhdGVzXzgzWzJdID0gewogICAgIHsxLCBhcmNzXzgzXzB9LAotICAgIHsyLCBhcmNzXzgzXzF9LAotICAgIHsxLCBhcmNzXzgzXzJ9LAorICAgIHsxLCBhcmNzXzgzXzF9LAogfTsKLXN0YXRpYyBhcmMgYXJjc184NF8wWzJdID0gewotICAgIHs3NiwgMX0sCi0gICAgezksIDJ9LAorc3RhdGljIGFyYyBhcmNzXzg0XzBbMV0gPSB7CisgICAgezE3NCwgMX0sCiB9Owotc3RhdGljIGFyYyBhcmNzXzg0XzFbMV0gPSB7Ci0gICAgezI2LCAyfSwKK3N0YXRpYyBhcmMgYXJjc184NF8xWzJdID0geworICAgIHsxNzUsIDJ9LAorICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODRfMlsxXSA9IHsKICAgICB7MCwgMn0sCiB9Owogc3RhdGljIHN0YXRlIHN0YXRlc184NFszXSA9IHsKLSAgICB7MiwgYXJjc184NF8wfSwKLSAgICB7MSwgYXJjc184NF8xfSwKKyAgICB7MSwgYXJjc184NF8wfSwKKyAgICB7MiwgYXJjc184NF8xfSwKICAgICB7MSwgYXJjc184NF8yfSwKIH07Ci1zdGF0aWMgZGZhIGRmYXNbODVdID0geworc3RhdGljIGFyYyBhcmNzXzg1XzBbMl0gPSB7CisgICAgezc3LCAxfSwKKyAgICB7OSwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzg1XzFbMV0gPSB7CisgICAgezI2LCAyfSwKK307CitzdGF0aWMgYXJjIGFyY3NfODVfMlsxXSA9IHsKKyAgICB7MCwgMn0sCit9Oworc3RhdGljIHN0YXRlIHN0YXRlc184NVszXSA9IHsKKyAgICB7MiwgYXJjc184NV8wfSwKKyAgICB7MSwgYXJjc184NV8xfSwKKyAgICB7MSwgYXJjc184NV8yfSwKK307CitzdGF0aWMgZGZhIGRmYXNbODZdID0gewogICAgIHsyNTYsICJzaW5nbGVfaW5wdXQiLCAwLCAzLCBzdGF0ZXNfMCwKLSAgICAgIlwwMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwNVwyMzdcMjA0XDAwM1wxMzFcMDAyXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwNDEifSwKKyAgICAgIlwwMDRcMDUwXDM0MFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAxMlwwNzZcMDExXDAwN1wyNjJcMDA0XDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wxMDIifSwKICAgICB7MjU3LCAiZmlsZV9pbnB1dCIsIDAsIDIsIHN0YXRlc18xLAotICAgICAiXDIwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDEzMVwwMDJcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MSJ9LAorICAgICAiXDIwNFwwNTBcMzQwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDI2MlwwMDRcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMiJ9LAogICAgIHsyNTgsICJldmFsX2lucHV0IiwgMCwgMywgc3RhdGVzXzIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCiAgICAgezI1OSwgImRlY29yYXRvciIsIDAsIDcsIHN0YXRlc18zLAogICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjAsICJkZWNvcmF0b3JzIiwgMCwgMiwgc3RhdGVzXzQsCkBAIC0xODc5LDE3OSArMTkyMiwxODEgQEAKICAgICAgIlwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKICAgICB7MjY0LCAicGFyYW1ldGVycyIsIDAsIDQsIHN0YXRlc184LAogICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjUsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc185LAorICAgIHsyNjUsICJ0eXBlZGFyZ3NsaXN0IiwgMCwgMTksIHN0YXRlc185LAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjYsICJ0ZnBkZWYiLCAwLCA0LCBzdGF0ZXNfMTAsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2NywgInZhcmFyZ3NsaXN0IiwgMCwgMTgsIHN0YXRlc18xMSwKKyAgICB7MjY3LCAidmFyYXJnc2xpc3QiLCAwLCAxOSwgc3RhdGVzXzExLAogICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAogICAgIHsyNjgsICJ2ZnBkZWYiLCAwLCAyLCBzdGF0ZXNfMTIsCiAgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCiAgICAgezI2OSwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTMsCi0gICAgICJcMDAwXDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDVcMjM3XDIwNFwwMDNcMTMxXDAwMlwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDQxIn0sCisgICAgICJcMDAwXDA1MFwzNDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMjYyXDAwNFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAyIn0sCiAgICAgezI3MCwgInNpbXBsZV9zdG10IiwgMCwgNCwgc3RhdGVzXzE0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMCJ9LAogICAgIHsyNzEsICJzbWFsbF9zdG10IiwgMCwgMiwgc3RhdGVzXzE1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDEyXDA3NlwwMTFcMDA3XDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDEwMCJ9LAogICAgIHsyNzIsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTYsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezI3MywgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xNywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7Mjc0LCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE4LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM3MFwzNzdcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzUsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc2LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzcsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDE3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwIn0sCi0gICAgezI3OCwgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI3OSwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4MCwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzI0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODEsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MCJ9LAotICAgIHsyODIsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODMsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg0LCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4NSwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzI5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODYsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg3LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzEsCi0gICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OCwgImltcG9ydF9hc19uYW1lcyIsIDAsIDMsIHN0YXRlc18zMiwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg5LCAiZG90dGVkX2FzX25hbWVzIiwgMCwgMiwgc3RhdGVzXzMzLAotICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTAsICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zNCwKLSAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjkxLCAiZ2xvYmFsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MiwgIm5vbmxvY2FsX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MywgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTQsICJjb21wb3VuZF9zdG10IiwgMCwgMiwgc3RhdGVzXzM4LAotICAgICAiXDAwMFwwMTBcMTQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEzMVwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMSJ9LAotICAgIHsyOTUsICJhc3luY19zdG10IiwgMCwgMywgc3RhdGVzXzM5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTYsICJpZl9zdG10IiwgMCwgOCwgc3RhdGVzXzQwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTcsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzQxLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTgsICJmb3Jfc3RtdCIsIDAsIDEwLCBzdGF0ZXNfNDIsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OSwgInRyeV9zdG10IiwgMCwgMTMsIHN0YXRlc180MywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzAwLCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQ0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDEsICJ3aXRoX2l0ZW0iLCAwLCA0LCBzdGF0ZXNfNDUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwMiwgImV4Y2VwdF9jbGF1c2UiLCAwLCA1LCBzdGF0ZXNfNDYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMywgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ3LAotICAgICAiXDAwNFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDA1XDIzN1wyMDRcMDAzXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDA0MCJ9LAotICAgIHszMDQsICJ0ZXN0IiwgMCwgNiwgc3RhdGVzXzQ4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMDUsICJ0ZXN0X25vY29uZCIsIDAsIDIsIHN0YXRlc180OSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzA2LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc181MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzA3LCAibGFtYmRlZl9ub2NvbmQiLCAwLCA1LCBzdGF0ZXNfNTEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwOCwgIm9yX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMwOSwgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUzLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTAsICJub3RfdGVzdCIsIDAsIDMsIHN0YXRlc181NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzExLCAiY29tcGFyaXNvbiIsIDAsIDIsIHN0YXRlc181NSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzEyLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwzNzFcMDA3XDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzEzLCAic3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzU3LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTQsICJleHByIiwgMCwgMiwgc3RhdGVzXzU4LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMTUsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzE2LCAiYW5kX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxNywgInNoaWZ0X2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjEsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxOCwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjIsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMxOSwgInRlcm0iLCAwLCAyLCBzdGF0ZXNfNjMsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMCwgImZhY3RvciIsIDAsIDMsIHN0YXRlc182NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIxLCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjUsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMyMiwgImF0b21fZXhwciIsIDAsIDMsIHN0YXRlc182NiwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzIzLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI0LCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182OCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI1LCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182OSwKLSAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDAifSwKLSAgICB7MzI2LCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc183MCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzI3LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzcxLAotICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMjgsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzcyLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHsyNzMsICJhbm5hc3NpZ24iLCAwLCA1LCBzdGF0ZXNfMTcsCiAgICAgICJcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMyOSwgImV4cHJsaXN0IiwgMCwgMywgc3RhdGVzXzczLAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzAsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183NCwKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzMxLCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxNCwgc3RhdGVzXzc1LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAotICAgIHszMzIsICJjbGFzc2RlZiIsIDAsIDgsIHN0YXRlc183NiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDEifSwKLSAgICB7MzMzLCAiYXJnbGlzdCIsIDAsIDMsIHN0YXRlc183NywKLSAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAxMFwwMDFcMDAwXDE0MFwxMTBcMjI0XDAxN1wwMDAifSwKLSAgICB7MzM0LCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzgsCi0gICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMTBcMDAxXDAwMFwxNDBcMTEwXDIyNFwwMTdcMDAwIn0sCi0gICAgezMzNSwgImNvbXBfaXRlciIsIDAsIDIsIHN0YXRlc183OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM2LCAiY29tcF9mb3IiLCAwLCA2LCBzdGF0ZXNfODAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNywgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfODEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzOCwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfODIsCisgICAgezI3NCwgInRlc3RsaXN0X3N0YXJfZXhwciIsIDAsIDMsIHN0YXRlc18xOCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7Mjc1LCAiYXVnYXNzaWduIiwgMCwgMiwgc3RhdGVzXzE5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM2MFwzNzdcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzYsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18yMCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc3LCAicGFzc19zdG10IiwgMCwgMiwgc3RhdGVzXzIxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzgsICJmbG93X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDM2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwIn0sCisgICAgezI3OSwgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MCwgImNvbnRpbnVlX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MSwgInJldHVybl9zdG10IiwgMCwgMywgc3RhdGVzXzI1LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODIsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMCJ9LAorICAgIHsyODMsICJyYWlzZV9zdG10IiwgMCwgNSwgc3RhdGVzXzI3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODQsICJpbXBvcnRfc3RtdCIsIDAsIDIsIHN0YXRlc18yOCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg1LCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NiwgImltcG9ydF9mcm9tIiwgMCwgOCwgc3RhdGVzXzMwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODcsICJpbXBvcnRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMSwKICAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM5LCAieWllbGRfZXhwciIsIDAsIDMsIHN0YXRlc184MywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDAifSwKLSAgICB7MzQwLCAieWllbGRfYXJnIiwgMCwgMywgc3RhdGVzXzg0LAotICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDRcMDAwXDAwMFwwMDBcMDEwXDAwMVwwMDBcMTQwXDExMFwyMjRcMDE3XDAwMCJ9LAorICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMiwKKyAgICAgIlwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg5LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMzLAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTAsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzQsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MSwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzM1LAorICAgICAiXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTIsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkzLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk0LCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NSwgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzksCisgICAgICJcMDAwXDAxMFwxNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjYyXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyIn0sCisgICAgezI5NiwgImFzeW5jX3N0bXQiLCAwLCAzLCBzdGF0ZXNfNDAsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NywgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDEsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OCwgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfNDIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OSwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAwLCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQ0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDEsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMwMiwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzAzLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA0LCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDgsCisgICAgICJcMDA0XDA0MFwyMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMTJcMDc2XDAxMVwwMDdcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMTAwIn0sCisgICAgezMwNSwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMwNiwgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzUwLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMDcsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzUxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDgsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc181MiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA5LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzEwLCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTQsCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxMSwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzU1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTIsICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzU2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTMsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDM2MlwwMTdcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTQsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxNSwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMxNiwgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzYwLAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMTcsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc182MSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE4LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc182MiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzE5LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MywKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIwLCAidGVybSIsIDAsIDIsIHN0YXRlc182NCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIxLCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzY1LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjIsICJwb3dlciIsIDAsIDQsIHN0YXRlc182NiwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzIzLCAiYXRvbV9leHByIiwgMCwgMywgc3RhdGVzXzY3LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjQsICJhdG9tIiwgMCwgOSwgc3RhdGVzXzY4LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjUsICJ0ZXN0bGlzdF9jb21wIiwgMCwgNSwgc3RhdGVzXzY5LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjYsICJ0cmFpbGVyIiwgMCwgNywgc3RhdGVzXzcwLAorICAgICAiXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMCJ9LAorICAgIHszMjcsICJzdWJzY3JpcHRsaXN0IiwgMCwgMywgc3RhdGVzXzcxLAorICAgICAiXDAwMFwwNDBcMjAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMjgsICJzdWJzY3JpcHQiLCAwLCA1LCBzdGF0ZXNfNzIsCisgICAgICJcMDAwXDA0MFwyMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMyOSwgInNsaWNlb3AiLCAwLCAzLCBzdGF0ZXNfNzMsCisgICAgICJcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzMCwgImV4cHJsaXN0IiwgMCwgMywgc3RhdGVzXzc0LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzEsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzMyLCAiZGljdG9yc2V0bWFrZXIiLCAwLCAxNCwgc3RhdGVzXzc2LAorICAgICAiXDAwMFwwNDBcMjAwXDAwMFwwMDZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDIwXDAwMlwwMDBcMzAwXDIyMFwwNTBcMDM3XDAwMCJ9LAorICAgIHszMzMsICJjbGFzc2RlZiIsIDAsIDgsIHN0YXRlc183NywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDIifSwKKyAgICB7MzM0LCAiYXJnbGlzdCIsIDAsIDMsIHN0YXRlc183OCwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKKyAgICB7MzM1LCAiYXJndW1lbnQiLCAwLCA0LCBzdGF0ZXNfNzksCisgICAgICJcMDAwXDA0MFwyMDBcMDAwXDAwNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMjBcMDAyXDAwMFwzMDBcMjIwXDA1MFwwMzdcMDAwIn0sCisgICAgezMzNiwgImNvbXBfaXRlciIsIDAsIDIsIHN0YXRlc184MCwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzM3LCAiY29tcF9mb3IiLCAwLCA3LCBzdGF0ZXNfODEsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzOCwgImNvbXBfaWYiLCAwLCA0LCBzdGF0ZXNfODIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzOSwgImVuY29kaW5nX2RlY2wiLCAwLCAyLCBzdGF0ZXNfODMsCisgICAgICJcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezM0MCwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwIn0sCisgICAgezM0MSwgInlpZWxkX2FyZyIsIDAsIDMsIHN0YXRlc184NSwKKyAgICAgIlwwMDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDEwXDAwMFwwMDBcMDAwXDAyMFwwMDJcMDAwXDMwMFwyMjBcMDUwXDAzN1wwMDAifSwKIH07Ci1zdGF0aWMgbGFiZWwgbGFiZWxzWzE3NV0gPSB7CitzdGF0aWMgbGFiZWwgbGFiZWxzWzE3Nl0gPSB7CiAgICAgezAsICJFTVBUWSJ9LAogICAgIHsyNTYsIDB9LAogICAgIHs0LCAwfSwKICAgICB7MjcwLCAwfSwKLSAgICB7Mjk0LCAwfSwKKyAgICB7Mjk1LCAwfSwKICAgICB7MjU3LCAwfSwKICAgICB7MjY5LCAwfSwKICAgICB7MCwgMH0sCiAgICAgezI1OCwgMH0sCi0gICAgezMzMCwgMH0sCisgICAgezMzMSwgMH0sCiAgICAgezI1OSwgMH0sCiAgICAgezQ5LCAwfSwKLSAgICB7MjkwLCAwfSwKKyAgICB7MjkxLCAwfSwKICAgICB7NywgMH0sCi0gICAgezMzMywgMH0sCisgICAgezMzNCwgMH0sCiAgICAgezgsIDB9LAogICAgIHsyNjAsIDB9LAogICAgIHsyNjEsIDB9LAotICAgIHszMzIsIDB9LAorICAgIHszMzMsIDB9LAogICAgIHsyNjMsIDB9LAogICAgIHsyNjIsIDB9LAogICAgIHs1NSwgMH0sCkBAIC0yMDU5LDkgKzIxMDQsOSBAQAogICAgIHsxLCAwfSwKICAgICB7MjY0LCAwfSwKICAgICB7NTEsIDB9LAotICAgIHszMDQsIDB9LAorICAgIHszMDUsIDB9LAogICAgIHsxMSwgMH0sCi0gICAgezMwMywgMH0sCisgICAgezMwNCwgMH0sCiAgICAgezI2NSwgMH0sCiAgICAgezI2NiwgMH0sCiAgICAgezIyLCAwfSwKQEAgLTIwNzMsMTcgKzIxMTgsMTggQEAKICAgICB7MjcxLCAwfSwKICAgICB7MTMsIDB9LAogICAgIHsyNzIsIDB9LAotICAgIHsyNzUsIDB9LAogICAgIHsyNzYsIDB9LAogICAgIHsyNzcsIDB9LAotICAgIHsyODMsIDB9LAotICAgIHsyOTEsIDB9LAorICAgIHsyNzgsIDB9LAorICAgIHsyODQsIDB9LAogICAgIHsyOTIsIDB9LAogICAgIHsyOTMsIDB9LAotICAgIHsyNzMsIDB9LAorICAgIHsyOTQsIDB9LAogICAgIHsyNzQsIDB9LAotICAgIHszMzksIDB9LAotICAgIHszMTMsIDB9LAorICAgIHsyNzMsIDB9LAorICAgIHsyNzUsIDB9LAorICAgIHszNDAsIDB9LAorICAgIHszMTQsIDB9LAogICAgIHszNiwgMH0sCiAgICAgezM3LCAwfSwKICAgICB7MzgsIDB9LApAQCAtMjA5OCwzNyArMjE0NCwzNyBAQAogICAgIHs0NiwgMH0sCiAgICAgezQ4LCAwfSwKICAgICB7MSwgImRlbCJ9LAotICAgIHszMjksIDB9LAorICAgIHszMzAsIDB9LAogICAgIHsxLCAicGFzcyJ9LAotICAgIHsyNzgsIDB9LAogICAgIHsyNzksIDB9LAogICAgIHsyODAsIDB9LAotICAgIHsyODIsIDB9LAogICAgIHsyODEsIDB9LAorICAgIHsyODMsIDB9LAorICAgIHsyODIsIDB9LAogICAgIHsxLCAiYnJlYWsifSwKICAgICB7MSwgImNvbnRpbnVlIn0sCiAgICAgezEsICJyZXR1cm4ifSwKICAgICB7MSwgInJhaXNlIn0sCiAgICAgezEsICJmcm9tIn0sCi0gICAgezI4NCwgMH0sCiAgICAgezI4NSwgMH0sCisgICAgezI4NiwgMH0sCiAgICAgezEsICJpbXBvcnQifSwKLSAgICB7Mjg5LCAwfSwKKyAgICB7MjkwLCAwfSwKICAgICB7MjMsIDB9LAogICAgIHs1MiwgMH0sCi0gICAgezI4OCwgMH0sCi0gICAgezI4NiwgMH0sCi0gICAgezEsICJhcyJ9LAorICAgIHsyODksIDB9LAogICAgIHsyODcsIDB9LAorICAgIHsxLCAiYXMifSwKKyAgICB7Mjg4LCAwfSwKICAgICB7MSwgImdsb2JhbCJ9LAogICAgIHsxLCAibm9ubG9jYWwifSwKICAgICB7MSwgImFzc2VydCJ9LAotICAgIHsyOTYsIDB9LAogICAgIHsyOTcsIDB9LAogICAgIHsyOTgsIDB9LAogICAgIHsyOTksIDB9LAogICAgIHszMDAsIDB9LAotICAgIHsyOTUsIDB9LAorICAgIHszMDEsIDB9LAorICAgIHsyOTYsIDB9LAogICAgIHsxLCAiaWYifSwKICAgICB7MSwgImVsaWYifSwKICAgICB7MSwgImVsc2UifSwKQEAgLTIxMzYsMjYgKzIxODIsMjYgQEAKICAgICB7MSwgImZvciJ9LAogICAgIHsxLCAiaW4ifSwKICAgICB7MSwgInRyeSJ9LAotICAgIHszMDIsIDB9LAorICAgIHszMDMsIDB9LAogICAgIHsxLCAiZmluYWxseSJ9LAogICAgIHsxLCAid2l0aCJ9LAotICAgIHszMDEsIDB9LAotICAgIHszMTQsIDB9LAorICAgIHszMDIsIDB9LAorICAgIHszMTUsIDB9LAogICAgIHsxLCAiZXhjZXB0In0sCiAgICAgezUsIDB9LAogICAgIHs2LCAwfSwKLSAgICB7MzA4LCAwfSwKLSAgICB7MzA2LCAwfSwKLSAgICB7MzA1LCAwfSwKLSAgICB7MzA3LCAwfSwKLSAgICB7MSwgImxhbWJkYSJ9LAogICAgIHszMDksIDB9LAotICAgIHsxLCAib3IifSwKKyAgICB7MzA3LCAwfSwKKyAgICB7MzA2LCAwfSwKKyAgICB7MzA4LCAwfSwKKyAgICB7MSwgImxhbWJkYSJ9LAogICAgIHszMTAsIDB9LAorICAgIHsxLCAib3IifSwKKyAgICB7MzExLCAwfSwKICAgICB7MSwgImFuZCJ9LAogICAgIHsxLCAibm90In0sCi0gICAgezMxMSwgMH0sCiAgICAgezMxMiwgMH0sCisgICAgezMxMywgMH0sCiAgICAgezIwLCAwfSwKICAgICB7MjEsIDB9LAogICAgIHsyNywgMH0sCkBAIC0yMTY0LDU0ICsyMjEwLDU0IEBACiAgICAgezI4LCAwfSwKICAgICB7MjgsIDB9LAogICAgIHsxLCAiaXMifSwKLSAgICB7MzE1LCAwfSwKLSAgICB7MTgsIDB9LAogICAgIHszMTYsIDB9LAotICAgIHszMiwgMH0sCisgICAgezE4LCAwfSwKICAgICB7MzE3LCAwfSwKLSAgICB7MTksIDB9LAorICAgIHszMiwgMH0sCiAgICAgezMxOCwgMH0sCisgICAgezE5LCAwfSwKKyAgICB7MzE5LCAwfSwKICAgICB7MzMsIDB9LAogICAgIHszNCwgMH0sCi0gICAgezMxOSwgMH0sCisgICAgezMyMCwgMH0sCiAgICAgezE0LCAwfSwKICAgICB7MTUsIDB9LAotICAgIHszMjAsIDB9LAorICAgIHszMjEsIDB9LAogICAgIHsxNywgMH0sCiAgICAgezI0LCAwfSwKICAgICB7NDcsIDB9LAogICAgIHszMSwgMH0sCi0gICAgezMyMSwgMH0sCiAgICAgezMyMiwgMH0sCi0gICAgezU0LCAwfSwKICAgICB7MzIzLCAwfSwKLSAgICB7MzI1LCAwfSwKKyAgICB7NTQsIDB9LAogICAgIHszMjQsIDB9LAorICAgIHszMjYsIDB9LAorICAgIHszMjUsIDB9LAogICAgIHs5LCAwfSwKICAgICB7MTAsIDB9LAogICAgIHsyNSwgMH0sCi0gICAgezMzMSwgMH0sCisgICAgezMzMiwgMH0sCiAgICAgezI2LCAwfSwKICAgICB7MiwgMH0sCiAgICAgezMsIDB9LAogICAgIHsxLCAiTm9uZSJ9LAogICAgIHsxLCAiVHJ1ZSJ9LAogICAgIHsxLCAiRmFsc2UifSwKLSAgICB7MzM2LCAwfSwKLSAgICB7MzI2LCAwfSwKKyAgICB7MzM3LCAwfSwKICAgICB7MzI3LCAwfSwKICAgICB7MzI4LCAwfSwKKyAgICB7MzI5LCAwfSwKICAgICB7MSwgImNsYXNzIn0sCi0gICAgezMzNCwgMH0sCiAgICAgezMzNSwgMH0sCi0gICAgezMzNywgMH0sCisgICAgezMzNiwgMH0sCiAgICAgezMzOCwgMH0sCisgICAgezMzOSwgMH0sCiAgICAgezEsICJ5aWVsZCJ9LAotICAgIHszNDAsIDB9LAorICAgIHszNDEsIDB9LAogfTsKIGdyYW1tYXIgX1B5UGFyc2VyX0dyYW1tYXIgPSB7Ci0gICAgODUsCisgICAgODYsCiAgICAgZGZhcywKLSAgICB7MTc1LCBsYWJlbHN9LAorICAgIHsxNzYsIGxhYmVsc30sCiAgICAgMjU2CiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydC5jIGIvUHl0aG9uL2ltcG9ydC5jCmluZGV4IDdlOTQ3ZWMuLmRmZGQ5NDAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnQuYworKysgYi9QeXRob24vaW1wb3J0LmMKQEAgLTM4LDE0ICszOCw2IEBACiAKICNpbmNsdWRlICJjbGluaWMvaW1wb3J0LmMuaCIKIAotLypbcHl0aG9uIGlucHV0XQotY2xhc3MgZnNfdW5pY29kZV9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeU9iamVjdCAqJwotICAgIGNvbnZlcnRlciA9ICdQeVVuaWNvZGVfRlNEZWNvZGVyJwotCi1bcHl0aG9uIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltweXRob24gZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD05ZDY3ODYyMzAxNjYwMDZlXSovCi0KIC8qIEluaXRpYWxpemUgdGhpbmdzICovCiAKIHZvaWQKQEAgLTMyMCw3ICszMTIsNyBAQAogCiAKIC8qIExpc3Qgb2YgbmFtZXMgdG8gY2xlYXIgaW4gc3lzICovCi1zdGF0aWMgY2hhciogc3lzX2RlbGV0ZXNbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc3lzX2RlbGV0ZXNbXSA9IHsKICAgICAicGF0aCIsICJhcmd2IiwgInBzMSIsICJwczIiLAogICAgICJsYXN0X3R5cGUiLCAibGFzdF92YWx1ZSIsICJsYXN0X3RyYWNlYmFjayIsCiAgICAgInBhdGhfaG9va3MiLCAicGF0aF9pbXBvcnRlcl9jYWNoZSIsICJtZXRhX3BhdGgiLApAQCAtMzMwLDcgKzMyMiw3IEBACiAgICAgTlVMTAogfTsKIAotc3RhdGljIGNoYXIqIHN5c19maWxlc1tdID0geworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBzeXNfZmlsZXNbXSA9IHsKICAgICAic3RkaW4iLCAiX19zdGRpbl9fIiwKICAgICAic3Rkb3V0IiwgIl9fc3Rkb3V0X18iLAogICAgICJzdGRlcnIiLCAiX19zdGRlcnJfXyIsCkBAIC0zNDcsNyArMzM5LDcgQEAKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IGludGVycC0+bW9kdWxlczsKICAgICBQeU9iamVjdCAqd2Vha2xpc3QgPSBOVUxMOwotICAgIGNoYXIgKipwOworICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqcDsKIAogICAgIGlmIChtb2R1bGVzID09IE5VTEwpCiAgICAgICAgIHJldHVybjsgLyogQWxyZWFkeSBkb25lICovCkBAIC04ODMsMTAgKzg3NSw4IEBACiAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlKGNvLT5jb19maWxlbmFtZSwgb2xkbmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRtcCA9IGNvLT5jb19maWxlbmFtZTsKLSAgICBjby0+Y29fZmlsZW5hbWUgPSBuZXduYW1lOwotICAgIFB5X0lOQ1JFRihjby0+Y29fZmlsZW5hbWUpOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X0lOQ1JFRihuZXduYW1lKTsKKyAgICBQeV9YU0VUUkVGKGNvLT5jb19maWxlbmFtZSwgbmV3bmFtZSk7CiAKICAgICBjb25zdGFudHMgPSBjby0+Y29fY29uc3RzOwogICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGNvbnN0YW50cyk7CkBAIC0xMDg3LDYgKzEwNzcsMTAgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgcG9pbnRlciB0byBtb2R1bGUgaW5pdCBmdW5jdGlvbi4gKi8KICAgICAgICAgICAgICAgICBkZWYgPSBQeU1vZHVsZV9HZXREZWYobW9kKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZGVmLT5tX2Jhc2UubV9pbml0ID0gcC0+aW5pdGZ1bmM7CiAgICAgICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWUsIG5hbWUpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZSk7CkBAIC0xMzMyLDEwICsxMzI2LDggQEAKICAgICAgICAgICAgIChhbHdheXNfdHJpbSB8fAogICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGNvZGUtPmNvX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ZyYW1lcykgPT0gMCkpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSAqb3V0ZXJfbGluazsKLSAgICAgICAgICAgICpvdXRlcl9saW5rID0gbmV4dDsKICAgICAgICAgICAgIFB5X1hJTkNSRUYobmV4dCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgICAgIFB5X1hTRVRSRUYoKm91dGVyX2xpbmssIG5leHQpOwogICAgICAgICAgICAgcHJldl9saW5rID0gb3V0ZXJfbGluazsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKQEAgLTEzNDgsNjEgKzEzNDAsMTcwIEBACiB9CiAKIAotUHlPYmplY3QgKgotUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpnaXZlbl9nbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmdpdmVuX2Zyb21saXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsKQorc3RhdGljIFB5T2JqZWN0ICoKK3Jlc29sdmVfbmFtZShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIGludCBsZXZlbCkKIHsKLSAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX3NwZWNfXyk7Ci0gICAgX1B5X0lERU5USUZJRVIoX2luaXRpYWxpemluZyk7CiAgICAgX1B5X0lERU5USUZJRVIoX19wYWNrYWdlX18pOwogICAgIF9QeV9JREVOVElGSUVSKF9fcGF0aF9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisgICAgX1B5X0lERU5USUZJRVIocGFyZW50KTsKKyAgICBQeU9iamVjdCAqYWJzX25hbWU7CisgICAgUHlPYmplY3QgKnBhY2thZ2UgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzcGVjOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIFB5X3NzaXplX3QgbGFzdF9kb3Q7CisgICAgUHlPYmplY3QgKmJhc2U7CisgICAgaW50IGxldmVsX3VwOworCisgICAgaWYgKGdsb2JhbHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmICghUHlEaWN0X0NoZWNrKGdsb2JhbHMpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJnbG9iYWxzIG11c3QgYmUgYSBkaWN0Iik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhY2thZ2VfXyk7CisgICAgaWYgKHBhY2thZ2UgPT0gUHlfTm9uZSkgeworICAgICAgICBwYWNrYWdlID0gTlVMTDsKKyAgICB9CisgICAgc3BlYyA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fc3BlY19fKTsKKworICAgIGlmIChwYWNrYWdlICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInBhY2thZ2UgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzcGVjICE9IE5VTEwgJiYgc3BlYyAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBpbnQgZXF1YWw7CisgICAgICAgICAgICBQeU9iamVjdCAqcGFyZW50ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzcGVjLCAmUHlJZF9wYXJlbnQpOworICAgICAgICAgICAgaWYgKHBhcmVudCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXF1YWwgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocGFja2FnZSwgcGFyZW50LCBQeV9FUSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocGFyZW50KTsKKyAgICAgICAgICAgIGlmIChlcXVhbCA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWwgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfSW1wb3J0V2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQiLCAxKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoc3BlYyAhPSBOVUxMICYmIHNwZWMgIT0gUHlfTm9uZSkgeworICAgICAgICBwYWNrYWdlID0gX1B5T2JqZWN0X0dldEF0dHJJZChzcGVjLCAmUHlJZF9wYXJlbnQpOworICAgICAgICBpZiAocGFja2FnZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJfX3NwZWNfXy5wYXJlbnQgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19JbXBvcnRXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcmVzb2x2ZSBwYWNrYWdlIGZyb20gX19zcGVjX18gb3IgX19wYWNrYWdlX18sICIKKyAgICAgICAgICAgICAgICAgICAgImZhbGxpbmcgYmFjayBvbiBfX25hbWVfXyBhbmQgX19wYXRoX18iLCAxKSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19uYW1lX18pOworICAgICAgICBpZiAocGFja2FnZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fbmFtZV9fIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYXRoX18pID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgZG90OworCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhY2thZ2UpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgocGFja2FnZSksIC0xKTsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTIpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZG90ID49IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYWNrYWdlLCAwLCBkb3QpOworICAgICAgICAgICAgICAgIGlmIChzdWJzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9TRVRSRUYocGFja2FnZSwgc3Vic3RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocGFja2FnZSk7CisgICAgaWYgKGxhc3RfZG90ID09IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IHdpdGggbm8ga25vd24gcGFyZW50IHBhY2thZ2UiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBwYWNrYWdlKSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAiUGFyZW50IG1vZHVsZSAlUiBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCisgICAgICAgICAgICAgICAgImltcG9ydCIsIHBhY2thZ2UpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGZvciAobGV2ZWxfdXAgPSAxOyBsZXZlbF91cCA8IGxldmVsOyBsZXZlbF91cCArPSAxKSB7CisgICAgICAgIGxhc3RfZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKHBhY2thZ2UsICcuJywgMCwgbGFzdF9kb3QsIC0xKTsKKyAgICAgICAgaWYgKGxhc3RfZG90ID09IC0yKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGxhc3RfZG90ID09IC0xKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2FnZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJhc2UgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhY2thZ2UsIDAsIGxhc3RfZG90KTsKKyAgICBQeV9ERUNSRUYocGFja2FnZSk7CisgICAgaWYgKGJhc2UgPT0gTlVMTCB8fCBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA9PSAwKSB7CisgICAgICAgIHJldHVybiBiYXNlOworICAgIH0KKworICAgIGFic19uYW1lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVLiVVIiwgYmFzZSwgbmFtZSk7CisgICAgUHlfREVDUkVGKGJhc2UpOworICAgIHJldHVybiBhYnNfbmFtZTsKKworICBlcnJvcjoKKyAgICBQeV9YREVDUkVGKHBhY2thZ2UpOworICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCAqCitQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbE9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCit7CiAgICAgX1B5X0lERU5USUZJRVIoX2ZpbmRfYW5kX2xvYWQpOwogICAgIF9QeV9JREVOVElGSUVSKF9oYW5kbGVfZnJvbWxpc3QpOwotICAgIF9QeV9JREVOVElGSUVSKF9sb2NrX3VubG9ja19tb2R1bGUpOwotICAgIF9QeV9zdGF0aWNfc3RyaW5nKHNpbmdsZV9kb3QsICIuIik7CiAgICAgUHlPYmplY3QgKmFic19uYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqYnVpbHRpbnNfaW1wb3J0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqZmluYWxfbW9kID0gTlVMTDsKICAgICBQeU9iamVjdCAqbW9kID0gTlVMTDsKICAgICBQeU9iamVjdCAqcGFja2FnZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmdsb2JhbHMgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmcm9tbGlzdCA9IE5VTEw7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CiAgICAgaW50IGhhc19mcm9tOwogCi0gICAgLyogTWFrZSBzdXJlIHRvIHVzZSBkZWZhdWx0IHZhbHVlcyBzbyBhcyB0byBub3QgaGF2ZQotICAgICAgIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKCkgdHJ1bmNhdGUgdGhlIHBhcmFtZXRlciBsaXN0IGJlY2F1c2Ugb2YgYQotICAgICAgIE5VTEwgYXJndW1lbnQuICovCi0gICAgaWYgKGdpdmVuX2dsb2JhbHMgPT0gTlVMTCkgewotICAgICAgICBnbG9iYWxzID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBPbmx5IGhhdmUgdG8gY2FyZSB3aGF0IGdpdmVuX2dsb2JhbHMgaXMgaWYgaXQgd2lsbCBiZSB1c2VkCi0gICAgICAgICAgIGZvciBzb21ldGhpbmcuICovCi0gICAgICAgIGlmIChsZXZlbCA+IDAgJiYgIVB5RGljdF9DaGVjayhnaXZlbl9nbG9iYWxzKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdsb2JhbHMgbXVzdCBiZSBhIGRpY3QiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgZ2xvYmFscyA9IGdpdmVuX2dsb2JhbHM7Ci0gICAgICAgIFB5X0lOQ1JFRihnbG9iYWxzKTsKLSAgICB9Ci0KLSAgICBpZiAoZ2l2ZW5fZnJvbWxpc3QgPT0gTlVMTCkgewotICAgICAgICBmcm9tbGlzdCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgICAgIGlmIChmcm9tbGlzdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmcm9tbGlzdCA9IGdpdmVuX2Zyb21saXN0OwotICAgICAgICBQeV9JTkNSRUYoZnJvbWxpc3QpOwotICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTE0MTUsMTQwICsxNTE2LDQ0IEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtb2R1bGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSA8IDApIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG5hbWUpIDwgMCkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBpZiAobGV2ZWwgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibGV2ZWwgbXVzdCBiZSA+PSAwIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGVsc2UgaWYgKGxldmVsID4gMCkgewotICAgICAgICBwYWNrYWdlID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYWNrYWdlX18pOwotICAgICAgICBpZiAocGFja2FnZSAhPSBOVUxMICYmIHBhY2thZ2UgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOwotICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicGFja2FnZSBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX25hbWVfXyk7Ci0gICAgICAgICAgICBpZiAocGFja2FnZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0tleUVycm9yLCAiJ19fbmFtZV9fJyBub3QgaW4gZ2xvYmFscyIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHBhY2thZ2UpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fbmFtZV9fIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOwogCi0gICAgICAgICAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYXRoX18pID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGFydGl0aW9uID0gTlVMTDsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOwotICAgICAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYXJ0aXRpb24gPSBQeVVuaWNvZGVfUlBhcnRpdGlvbihwYWNrYWdlLCBib3Jyb3dlZF9kb3QpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYWNrYWdlKTsKLSAgICAgICAgICAgICAgICBpZiAocGFydGl0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFja2FnZSA9IFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAwKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBwYWNrYWdlKSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICVSIG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKLSAgICAgICAgICAgICAgICAgICAgImltcG9ydCIsIHBhY2thZ2UpOworICAgIGlmIChsZXZlbCA+IDApIHsKKyAgICAgICAgYWJzX25hbWUgPSByZXNvbHZlX25hbWUobmFtZSwgZ2xvYmFscywgbGV2ZWwpOworICAgICAgICBpZiAoYWJzX25hbWUgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7ICAvKiBsZXZlbCA9PSAwICovCiAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA9PSAwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkVtcHR5IG1vZHVsZSBuYW1lIik7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIHBhY2thZ2UgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7Ci0gICAgfQotCi0gICAgaWYgKGxldmVsID4gMCkgewotICAgICAgICBQeV9zc2l6ZV90IGxhc3RfZG90ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocGFja2FnZSk7Ci0gICAgICAgIFB5T2JqZWN0ICpiYXNlID0gTlVMTDsKLSAgICAgICAgaW50IGxldmVsX3VwID0gMTsKLQotICAgICAgICBmb3IgKGxldmVsX3VwID0gMTsgbGV2ZWxfdXAgPCBsZXZlbDsgbGV2ZWxfdXAgKz0gMSkgewotICAgICAgICAgICAgbGFzdF9kb3QgPSBQeVVuaWNvZGVfRmluZENoYXIocGFja2FnZSwgJy4nLCAwLCBsYXN0X2RvdCwgLTEpOwotICAgICAgICAgICAgaWYgKGxhc3RfZG90ID09IC0yKSB7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGxhc3RfZG90ID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3AtbGV2ZWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2FnZSIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBiYXNlID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYWNrYWdlLCAwLCBsYXN0X2RvdCk7Ci0gICAgICAgIGlmIChiYXNlID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA+IDApIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QsICpzZXEgPSBOVUxMOwotCi0gICAgICAgICAgICBib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7Ci0gICAgICAgICAgICBzZXEgPSBQeVR1cGxlX1BhY2soMiwgYmFzZSwgbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYmFzZSk7Ci0gICAgICAgICAgICBpZiAoYm9ycm93ZWRfZG90ID09IE5VTEwgfHwgc2VxID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBhYnNfbmFtZSA9IFB5VW5pY29kZV9Kb2luKGJvcnJvd2VkX2RvdCwgc2VxKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOwotICAgICAgICAgICAgaWYgKGFic19uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYWJzX25hbWUgPSBiYXNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewogICAgICAgICBhYnNfbmFtZSA9IG5hbWU7CiAgICAgICAgIFB5X0lOQ1JFRihhYnNfbmFtZSk7CiAgICAgfQogCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKLSNlbmRpZgotICAgLyogRnJvbSB0aGlzIHBvaW50IGZvcndhcmQsIGdvdG8gZXJyb3Jfd2l0aF91bmxvY2shICovCi0gICAgLyogWFhYIGludGVycC0+YnVpbHRpbnNfY29weSBpcyBOVUxMIGluIHN1YmludGVycHJldGVyISAqLwotICAgIGJ1aWx0aW5zX2ltcG9ydCA9IF9QeURpY3RfR2V0SXRlbUlkKGludGVycC0+YnVpbHRpbnNfY29weSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwLT5idWlsdGluc19jb3B5IDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPmJ1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKLSAgICBpZiAoYnVpbHRpbnNfaW1wb3J0ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiX19pbXBvcnRfXyBub3QgZm91bmQiKTsKLSAgICAgICAgZ290byBlcnJvcl93aXRoX3VubG9jazsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKGJ1aWx0aW5zX2ltcG9ydCk7Ci0KICAgICBtb2QgPSBQeURpY3RfR2V0SXRlbShpbnRlcnAtPm1vZHVsZXMsIGFic19uYW1lKTsKICAgICBpZiAobW9kID09IFB5X05vbmUpIHsKICAgICAgICAgUHlPYmplY3QgKm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJpbXBvcnQgb2YgJVIgaGFsdGVkOyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBpbiBzeXMubW9kdWxlcyIsIGFic19uYW1lKTsKICAgICAgICAgaWYgKG1zZyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRJbXBvcnRFcnJvcihtc2csIGFic19uYW1lLCBOVUxMKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvciwgbXNnLAorICAgICAgICAgICAgICAgICAgICBhYnNfbmFtZSwgTlVMTCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobXNnKTsKICAgICAgICAgfQogICAgICAgICBtb2QgPSBOVUxMOwotICAgICAgICBnb3RvIGVycm9yX3dpdGhfdW5sb2NrOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBlbHNlIGlmIChtb2QgIT0gTlVMTCkgeworICAgICAgICBfUHlfSURFTlRJRklFUihfX3NwZWNfXyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9pbml0aWFsaXppbmcpOworICAgICAgICBfUHlfSURFTlRJRklFUihfbG9ja191bmxvY2tfbW9kdWxlKTsKICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKnNwZWM7CiAgICAgICAgIGludCBpbml0aWFsaXppbmcgPSAwOwpAQCAtMTU3MSw5MSArMTU3Niw4MyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChpbml0aWFsaXppbmcgPT0gLTEpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoaW5pdGlhbGl6aW5nID4gMCkgewotICAgICAgICAgICAgLyogX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCi0gICAgICAgICAgICB2YWx1ZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fbG9ja191bmxvY2tfbW9kdWxlLCBhYnNfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpbml0aWFsaXppbmcgPiAwKSB7CiAjaWZkZWYgV0lUSF9USFJFQUQKLSAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKICNlbmRpZgorICAgICAgICAgICAgICAgIC8qIF9ib290c3RyYXAuX2xvY2tfdW5sb2NrX21vZHVsZSgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLworICAgICAgICAgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fbG9ja191bmxvY2tfbW9kdWxlLCBhYnNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAgICAgX1B5SW1wb3J0X0FjcXVpcmVMb2NrKCk7CisjZW5kaWYKICAgICAgICAgLyogX2Jvb3RzdHJhcC5fZmluZF9hbmRfbG9hZCgpIHJlbGVhc2VzIHRoZSBpbXBvcnQgbG9jayAqLwogICAgICAgICBtb2QgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX2ZpbmRfYW5kX2xvYWQsIGFic19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluc19pbXBvcnQsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnAtPmltcG9ydF9mdW5jLCBOVUxMKTsKICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIEZyb20gbm93IG9uIHdlIGRvbid0IGhvbGQgdGhlIGltcG9ydCBsb2NrIGFueW1vcmUuICovCiAKLSAgICBoYXNfZnJvbSA9IFB5T2JqZWN0X0lzVHJ1ZShmcm9tbGlzdCk7Ci0gICAgaWYgKGhhc19mcm9tIDwgMCkKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBoYXNfZnJvbSA9IDA7CisgICAgaWYgKGZyb21saXN0ICE9IE5VTEwgJiYgZnJvbWxpc3QgIT0gUHlfTm9uZSkgeworICAgICAgICBoYXNfZnJvbSA9IFB5T2JqZWN0X0lzVHJ1ZShmcm9tbGlzdCk7CisgICAgICAgIGlmIChoYXNfZnJvbSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KICAgICBpZiAoIWhhc19mcm9tKSB7Ci0gICAgICAgIGlmIChsZXZlbCA9PSAwIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmZyb250ID0gTlVMTDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOwotICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKKyAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKTsKKyAgICAgICAgaWYgKGxldmVsID09IDAgfHwgbGVuID4gMCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBkb3Q7CiAKLSAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKG5hbWUsICcuJywgMCwgbGVuLCAxKTsKKyAgICAgICAgICAgIGlmIChkb3QgPT0gLTIpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwYXJ0aXRpb24gPSBQeVVuaWNvZGVfUGFydGl0aW9uKG5hbWUsIGJvcnJvd2VkX2RvdCk7Ci0gICAgICAgICAgICBpZiAocGFydGl0aW9uID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDEpKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoZG90ID09IC0xKSB7CiAgICAgICAgICAgICAgICAgLyogTm8gZG90IGluIG1vZHVsZSBuYW1lLCBzaW1wbGUgZXhpdCAqLwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOwogICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IG1vZDsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmcm9udCA9IFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAwKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihmcm9udCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKLQogICAgICAgICAgICAgaWYgKGxldmVsID09IDApIHsKLSAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGJ1aWx0aW5zX2ltcG9ydCwgZnJvbnQsIE5VTEwpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9udCA9IFB5VW5pY29kZV9TdWJzdHJpbmcobmFtZSwgMCwgZG90KTsKKyAgICAgICAgICAgICAgICBpZiAoZnJvbnQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KGZyb250LCBOVUxMLCBOVUxMLCBOVUxMLCAwKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjdXRfb2ZmID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGZyb250KTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGN1dF9vZmYgPSBsZW4gLSBkb3Q7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBhYnNfbmFtZV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChhYnNfbmFtZSk7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvX3JldHVybiA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWJzX25hbWUsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFic19uYW1lX2xlbiAtIGN1dF9vZmYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CiAgICAgICAgICAgICAgICAgaWYgKHRvX3JldHVybiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgZmluYWxfbW9kID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0b19yZXR1cm4pOwogICAgICAgICAgICAgICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJVIgbm90IGluIHN5cy5tb2R1bGVzIGFzIGV4cGVjdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZmluYWxfbW9kKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHRvX3JldHVybik7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZpbmFsX21vZCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xNjY2LDI0ICsxNjYzLDE0IEBACiAgICAgZWxzZSB7CiAgICAgICAgIGZpbmFsX21vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKGludGVycC0+aW1wb3J0bGliLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9faGFuZGxlX2Zyb21saXN0LCBtb2QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBidWlsdGluc19pbXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBpbnRlcnAtPmltcG9ydF9mdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICB9Ci0gICAgZ290byBlcnJvcjsKIAotICBlcnJvcl93aXRoX3VubG9jazoKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChfUHlJbXBvcnRfUmVsZWFzZUxvY2soKSA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOwotICAgIH0KLSNlbmRpZgogICBlcnJvcjoKICAgICBQeV9YREVDUkVGKGFic19uYW1lKTsKLSAgICBQeV9YREVDUkVGKGJ1aWx0aW5zX2ltcG9ydCk7CiAgICAgUHlfWERFQ1JFRihtb2QpOwogICAgIFB5X1hERUNSRUYocGFja2FnZSk7Ci0gICAgUHlfWERFQ1JFRihnbG9iYWxzKTsKLSAgICBQeV9YREVDUkVGKGZyb21saXN0KTsKICAgICBpZiAoZmluYWxfbW9kID09IE5VTEwpCiAgICAgICAgIHJlbW92ZV9pbXBvcnRsaWJfZnJhbWVzKCk7CiAgICAgcmV0dXJuIGZpbmFsX21vZDsKQEAgLTE5NTksMTkgKzE5NDYsMTUgQEAKIAogICAgIGRlZiA9IFB5TW9kdWxlX0dldERlZihtb2QpOwogICAgIGlmIChkZWYgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIHN0YXRlID0gUHlNb2R1bGVfR2V0U3RhdGUobW9kKTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmIChzdGF0ZSkgewogICAgICAgICAvKiBBbHJlYWR5IGluaXRpYWxpemVkOyBza2lwIHJlbG9hZCAqLwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisKICAgICByZXR1cm4gUHlNb2R1bGVfRXhlY0RlZihtb2QsIGRlZik7CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5jIGIvUHl0aG9uL2ltcG9ydGRsLmMKaW5kZXggMWFhNTg1ZC4uYWMwMzI4OSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmMKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmMKQEAgLTIzLDggKzIzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApOwogI2VuZGlmCiAKLXN0YXRpYyBjb25zdCBjaGFyICphc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOwotc3RhdGljIGNvbnN0IGNoYXIgKm5vbmFzY2lpX3ByZWZpeCA9ICJQeUluaXRVIjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgYXNjaWlfb25seV9wcmVmaXggPSAiUHlJbml0IjsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgbm9uYXNjaWlfcHJlZml4ID0gIlB5SW5pdFUiOwogCiAvKiBHZXQgdGhlIHZhcmlhYmxlIHBhcnQgb2YgYSBtb2R1bGUncyBleHBvcnQgc3ltYm9sIG5hbWUuCiAgKiBSZXR1cm5zIGEgYnl0ZXMgaW5zdGFuY2UuIEZvciBub24tQVNDSUktbmFtZWQgbW9kdWxlcywgdGhlIG5hbWUgaXMKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRsaWIuaCBiL1B5dGhvbi9pbXBvcnRsaWIuaAppbmRleCBhNWZjOTM2Li4xOTVmYmZkIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0bGliLmgKKysrIGIvUHl0aG9uL2ltcG9ydGxpYi5oCkBAIC0xLDEyMjYgKzEsMTIxOSBAQAogLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNiwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMTY5LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAotICAgIDEwMCwxLDAsOTcsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDIsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwzLDAsNzEsMTAwLAotICAgIDYsMCwxMDAsNywwLDEzMiwwLDAsMTAwLDcsMCwxMzEsMiwwLDkwLDQsCi0gICAgMCwxMDUsMCwwLDkwLDUsMCwxMDUsMCwwLDkwLDYsMCw3MSwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTMyLDAsMCwxMDAsOSwwLDEwMSw3LDAsMTMxLDMsMCwKLSAgICA5MCw4LDAsNzEsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCwxMDAsMTEsMCwKLSAgICAxMzEsMiwwLDkwLDksMCw3MSwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLAotICAgIDEwMCwxMywwLDEzMSwyLDAsOTAsMTAsMCw3MSwxMDAsMTQsMCwxMDAsMTUsMCwKLSAgICAxMzIsMCwwLDEwMCwxNSwwLDEzMSwyLDAsOTAsMTEsMCwxMDAsMTYsMCwxMDAsCi0gICAgMTcsMCwxMzIsMCwwLDkwLDEyLDAsMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsCi0gICAgMCw5MCwxMywwLDEwMCwyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsMTQsMCwKLSAgICAxMDAsMjIsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMDAsMjUsMCwxMzIsMCwxLDkwLAotICAgIDE1LDAsMTAwLDI2LDAsMTAwLDI3LDAsMTMyLDAsMCw5MCwxNiwwLDEwMCwyOCwKLSAgICAwLDEwMCwyOSwwLDEzMiwwLDAsOTAsMTcsMCwxMDAsMzAsMCwxMDAsMzEsMCwKLSAgICAxMzIsMCwwLDkwLDE4LDAsMTAwLDMyLDAsMTAwLDMzLDAsMTMyLDAsMCw5MCwKLSAgICAxOSwwLDcxLDEwMCwzNCwwLDEwMCwzNSwwLDEzMiwwLDAsMTAwLDM1LDAsMTMxLAotICAgIDIsMCw5MCwyMCwwLDcxLDEwMCwzNiwwLDEwMCwzNywwLDEzMiwwLDAsMTAwLAotICAgIDM3LDAsMTMxLDIsMCw5MCwyMSwwLDEwMCwzOCwwLDEwMCwxLDAsMTAwLDM5LAotICAgIDAsMTAwLDEsMCwxMDAsNDAsMCwxMDAsNDEsMCwxMzIsMCwyLDkwLDIyLDAsCi0gICAgMTAxLDIzLDAsMTMxLDAsMCw5MCwyNCwwLDEwMCwxLDAsMTAwLDEsMCwxMDAsCi0gICAgNDIsMCwxMDAsNDMsMCwxMzIsMiwwLDkwLDI1LDAsMTAwLDQ0LDAsMTAwLDQ1LAotICAgIDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTMyLDAsMSw5MCwyNiwwLDEwMCw0OCwwLAotICAgIDEwMCw0OSwwLDEzMiwwLDAsOTAsMjcsMCwxMDAsNTAsMCwxMDAsNTEsMCwxMzIsCi0gICAgMCwwLDkwLDI4LDAsMTAwLDUyLDAsMTAwLDUzLDAsMTMyLDAsMCw5MCwyOSwKLSAgICAwLDEwMCw1NCwwLDEwMCw1NSwwLDEzMiwwLDAsOTAsMzAsMCwxMDAsNTYsMCwKLSAgICAxMDAsNTcsMCwxMzIsMCwwLDkwLDMxLDAsMTAwLDU4LDAsMTAwLDU5LDAsMTMyLAotICAgIDAsMCw5MCwzMiwwLDcxLDEwMCw2MCwwLDEwMCw2MSwwLDEzMiwwLDAsMTAwLAotICAgIDYxLDAsMTMxLDIsMCw5MCwzMywwLDcxLDEwMCw2MiwwLDEwMCw2MywwLDEzMiwKLSAgICAwLDAsMTAwLDYzLDAsMTMxLDIsMCw5MCwzNCwwLDcxLDEwMCw2NCwwLDEwMCwKLSAgICA2NSwwLDEzMiwwLDAsMTAwLDY1LDAsMTMxLDIsMCw5MCwzNSwwLDEwMCw2NiwKLSAgICAwLDEwMCw2NywwLDEzMiwwLDAsOTAsMzYsMCwxMDAsNjgsMCwxMDAsNjksMCwKLSAgICAxMzIsMCwwLDkwLDM3LDAsMTAwLDEsMCwxMDAsNzAsMCwxMDAsNzEsMCwxMzIsCi0gICAgMSwwLDkwLDM4LDAsMTAwLDcyLDAsMTAwLDczLDAsMTMyLDAsMCw5MCwzOSwKLSAgICAwLDEwMCw3NCwwLDkwLDQwLDAsMTAxLDQwLDAsMTAwLDc1LDAsMjMsOTAsNDEsCi0gICAgMCwxMDAsNzYsMCwxMDAsNzcsMCwxMzIsMCwwLDkwLDQyLDAsMTAwLDc4LDAsCi0gICAgMTAwLDc5LDAsMTMyLDAsMCw5MCw0MywwLDEwMCwxLDAsMTAwLDgwLDAsMTAwLAotICAgIDgxLDAsMTAwLDgyLDAsMTMyLDIsMCw5MCw0NCwwLDEwMCw4MywwLDEwMCw4NCwKLSAgICAwLDEzMiwwLDAsOTAsNDUsMCwxMDAsODUsMCwxMDAsODYsMCwxMzIsMCwwLAotICAgIDkwLDQ2LDAsMTAwLDEsMCwxMDAsMSwwLDEwMiwwLDAsMTAwLDgwLDAsMTAwLAotICAgIDg3LDAsMTAwLDg4LDAsMTMyLDQsMCw5MCw0NywwLDEwMCw4OSwwLDEwMCw5MCwKLSAgICAwLDEzMiwwLDAsOTAsNDgsMCwxMDAsOTEsMCwxMDAsOTIsMCwxMzIsMCwwLAotICAgIDkwLDQ5LDAsMTAwLDkzLDAsMTAwLDk0LDAsMTMyLDAsMCw5MCw1MCwwLDEwMCwKLSAgICAxLDAsODMsNDEsOTUsOTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LAotICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLDk3LAotICAgIDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsCi0gICAgMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLDEwNCwKLSAgICA5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwKLSAgICAzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LDk3LAotICAgIDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwxMDEsCi0gICAgMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw2NSwKLSAgICAxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsCi0gICAgMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LAotICAgIDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDEwLAotICAgIDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLAotICAgIDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsOTksCi0gICAgMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDc4LDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDkyLDAsMCwwLDEyMCw2NiwwLDEwMCwxLDAsMTAwLDIsCi0gICAgMCwxMDAsMywwLDEwMCw0LDAsMTAzLDQsMCw2OCw5Myw0NiwwLDEyNSwyLAotICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsMTksMCwKLSAgICAxMTYsMSwwLDEyNCwwLDAsMTI0LDIsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LAotICAgIDIsMCwxMzEsMiwwLDEzMSwzLDAsMSwxMTMsMTksMCw4NywxMjQsMCwwLAotICAgIDEwNiwzLDAsMTA2LDQsMCwxMjQsMSwwLDEwNiwzLDAsMTMxLDEsMCwxLAotICAgIDEwMCw1LDAsODMsNDEsNiwxMjIsNDcsODMsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiwxMTUsCi0gICAgMTE3LDk4LDExNSwxMTYsMTA1LDExNiwxMTcsMTE2LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMDIsMTE3LAotICAgIDExMCw5OSwxMTYsMTExLDExMSwxMDgsMTE1LDQ2LDExNywxMTIsMTAwLDk3LDExNiwxMDEsOTUsMTE5LAotICAgIDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDYsMjE4LDEwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCwxMiw5NSwKLSAgICA5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsNyw5NSw5NSwxMDAsCi0gICAgMTExLDk5LDk1LDk1LDc4LDQxLDUsMjE4LDcsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwKLSAgICAyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsCi0gICAgMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLAotICAgIDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLAotICAgIDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTY5LDAsMTE0LDEwLDAsMCwwLAotICAgIDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsCi0gICAgNSw5NSwxMTksMTE0LDk3LDExMiwyNywwLDAsMCwxMTUsOCwwLDAsMCwwLAotICAgIDIsMjUsMSwxNSwxLDI5LDEsMTE0LDEyLDAsMCwwLDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwwLDEyNCwKLSAgICAwLDAsMTMxLDEsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsMTE2LDEyMSwxMTIsCi0gICAgMTAxLDIxOCwzLDExNSwxMjEsMTE1LDQxLDEsMjE4LDQsMTEwLDk3LDEwOSwxMDEsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDExLDk1LAotICAgIDExMCwxMDEsMTE5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM1LDAsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsMSwxMTQsMTYsMCwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgNTgsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKLSAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCw4Myw0MSw5LAotICAgIDIxOCwxMyw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsMTIyLAotICAgIDYzLDc3LDk3LDExMCw5NywxMDMsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTExLDExNSwKLSAgICAxMTUsMTA1LDk4LDEwOCwxMDEsMzIsOTksMTA4LDEwMSw5NywxMTAsNDUsMTE3LDExMiwzMiwxMTEsCi0gICAgMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDIsMTExLAotICAgIDExNCwzMiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSw0NiwKLSAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsMSwwLDEyNCwwLDAsCi0gICAgOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwxLDIxOCw1LDk1LDExMCwKLSAgICA5NywxMDksMTAxLDQxLDIsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxNSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCi0gICAgOCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDMsMCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwxLDEyMiwyMiw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LAotICAgIDExMSw5NywxMDAsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDI1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMTYsMSwwLDEwNiwKLSAgICAyLDAsMTA3LDYsMCwxMjQsMCwwLDk1LDMsMCwxMDAsMCwwLDgzLDQxLAotICAgIDEsNzgsNDEsNCwxMTQsMTgsMCwwLDAsMTE0LDE0LDAsMCwwLDIxOCw3LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwyMTgsMTAsOTUsMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwKLSAgICAxMTEsOTcsMTAwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LDk1LDk1LDEwMSwxMTAsMTE2LAotICAgIDEwMSwxMTQsOTUsOTUsNDYsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKLSAgICAyMyw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwxMSwwLDAsMCw3MSwwLDAsMCwxMTUsNzcsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMSwKLSAgICAwLDY4LDEzMSwxLDAsMTMxLDEsMCwxMTQsNzMsMCwxMjQsMCwwLDEwNiwxLAotICAgIDAsMTIsMTE0LDczLDAsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwwLAotICAgIDAsMTA2LDQsMCw2MSw4NywxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsCi0gICAgMTE0LDcyLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLAotICAgIDMsNzgsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKLSAgICAwLDAsMCwxMTUsMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsCi0gICAgMTcsMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOSwwLDg2LDEsCi0gICAgMTEzLDMsMCwxMDAsMCwwLDgzLDQxLDEsNzgsMTE0LDEwLDAsMCwwLDQxLAotICAgIDIsMjE4LDIsNDYsNDgsMjE4LDMsOTcsMTE0LDEwMywxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsCi0gICAgMTIwLDExMiwxMTQsNjIsNTAsMCwwLDAsMTE1LDIsMCwwLDAsNiwwLDEyMiwKLSAgICA0MSw5NSw3Nyw5NywxMTAsOTcsMTAzLDEwMSw4MiwxMDEsMTA4LDExMSw5NywxMDAsNDYsOTUsCi0gICAgOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKLSAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNDEsNiwyMTgsMyw5NywxMTAsCi0gICAgMTIxLDExNCwyMiwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAotICAgIDExNCwxOCwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCw0MSwKLSAgICAyLDExNCwxOSwwLDAsMCwyMTgsNCw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSw5NSwxMDEsCi0gICAgMTIwLDEwNSwxMTYsOTUsOTUsNDksMCwwLDAsMTE1LDEwLDAsMCwwLDAsMSwKLSAgICAzNSwxLDMsMSwxNywxLDEzLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsCi0gICAgMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsCi0gICAgNzgsNDEsNywxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLAotICAgIDAsMCwxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKLSAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE3LDAsMCwwLDM5LAotICAgIDAsMCwwLDExNSw4LDAsMCwwLDEyLDIsNiwyLDEyLDMsMTIsMywKLSAgICAxMTQsMTcsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCw2NCwwLDAsMCwxMTUsMTYsMCwwLDAsMTAxLAotICAgIDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDIxOCwxNCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAotICAgIDExNCw3OCw0MSwzLDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMzEsMCwwLDAsNjQsMCwwLDAsCi0gICAgMTE1LDIsMCwwLDAsMTIsMSwxMTQsMzEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsODIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLAotICAgIDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwKLSAgICAxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsCi0gICAgOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLAotICAgIDAsOTAsOCwwLDEwMCwxMiwwLDgzLDQxLDEzLDIxOCwxMSw5NSw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsCi0gICAgMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LAotICAgIDExNSwzMiw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwKLSAgICAzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsMzIsMzIsNDAsCi0gICAgMTAxLDQ2LDEwMyw0NiwzMiwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsCi0gICAgMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwKLSAgICAxMDcsMTE1LDMyLDY1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiw5NywxMTAsMTAwLAotICAgIDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsCi0gICAgMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNywxMTUsMzIsNjYsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LDEwLDMyLDMyLAotICAgIDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDcwLDAsMCwwLDExNiwwLDAsMTA2LAotICAgIDEsMCwxMzEsMCwwLDEyNCwwLDAsOTUsMiwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMzEsMCwwLDEyNCwwLDAsOTUsMywwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSw0LDAsMTAwLDAsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMSwwLDEyNCwKLSAgICAwLDAsOTUsNiwwLDEwMCwxLDAsMTI0LDAsMCw5NSw3LDAsMTAwLDAsCi0gICAgMCw4Myw0MSwyLDc4LDIzMywwLDAsMCwwLDQxLDgsMjE4LDcsOTUsMTE2LAotICAgIDEwNCwxMTQsMTAxLDk3LDEwMCw5MCwxMyw5NywxMDgsMTA4LDExMSw5OSw5NywxMTYsMTAxLDk1LAotICAgIDEwOCwxMTEsOTksMTA3LDIxOCw0LDEwOCwxMTEsOTksMTA3LDIxOCw2LDExOSw5NywxMDcsMTAxLAotICAgIDExNywxMTIsMTE0LDE1LDAsMCwwLDIxOCw1LDExMSwxMTksMTEwLDEwMSwxMTQsMjE4LDUsCi0gICAgOTksMTExLDExNywxMTAsMTE2LDIxOCw3LDExOSw5NywxMDUsMTE2LDEwMSwxMTQsMTE1LDQxLDIsCi0gICAgMTE0LDE5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNzQsMCwKLSAgICAwLDAsMTE1LDEyLDAsMCwwLDAsMSwxNSwxLDE1LDEsOSwxLDksCi0gICAgMSw5LDEsMTIyLDIwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKLSAgICA0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDQsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsODgsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LDEsMCwxMjQsCi0gICAgMCwwLDEwNiwyLDAsMTI1LDIsMCwxMjAsNjAsMCwxMTYsMywwLDEwNiw0LAotICAgIDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTI0LDMsMCwxMDAsMCwwLAotICAgIDEwNyw4LDAsMTE0LDU1LDAsMTAwLDEsMCw4MywxMjQsMywwLDEwNiwyLDAsCi0gICAgMTI1LDIsMCwxMjQsMiwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsMjQsMCwxMDAsCi0gICAgMiwwLDgzLDExMywyNCwwLDg3LDEwMCwwLDAsODMsNDEsMyw3OCw3MCw4NCwKLSAgICA0MSw1LDExNCwzNCwwLDAsMCwyMTgsOSwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLDEwMSwKLSAgICAxMTAsMTE2LDExNCwzNywwLDAsMCwyMTgsMTIsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LAotICAgIDExMCwxMDMsOTUsMTExLDExMCwyMTgsMywxMDMsMTAxLDExNiw0MSw0LDExNCwxOSwwLDAsCi0gICAgMCw5MCwyLDEwOSwxMDEsMjE4LDMsMTE2LDEwNSwxMDAsMTE0LDM1LDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMiwKLSAgICAxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDgyLDAsMCwwLAotICAgIDExNSwxOCwwLDAsMCwwLDIsMTIsMSw5LDEsMywxLDE1LDEsMTIsCi0gICAgMSw0LDEsOSwxLDEyLDEsMTIyLDI0LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNzYsMTExLDk5LDEwNyw0NiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksCi0gICAgMTA3LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDE2LDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwyMTAsMCwwLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwwLDAsMTI1LDEsMCwxMjQsMCwwLDExNiwyLDAsMTI0LDEsMCwKLSAgICA2MCwxMjIsMTczLDAsMTIwLDE2NiwwLDEyNCwwLDAsMTA2LDMsMCwxNDMsMTI0LDAsCi0gICAgMSwxMjQsMCwwLDEwNiw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNSw2OCwwLAotICAgIDEyNCwwLDAsMTA2LDUsMCwxMjQsMSwwLDEwNywyLDAsMTE0LDk2LDAsMTI0LAotICAgIDEsMCwxMjQsMCwwLDk1LDUsMCwxMjQsMCwwLDQsMTA2LDQsMCwxMDAsCi0gICAgMiwwLDU1LDIsOTUsNCwwLDEwMCwzLDAsODMsMTI0LDAsMCwxMDYsNiwKLSAgICAwLDEzMSwwLDAsMTE0LDEyNCwwLDExNiw3LDAsMTAwLDQsMCwxMjQsMCwwLAotICAgIDIyLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEwNiw4LDAsMTA2LDksMCwKLSAgICAxMDAsNSwwLDEzMSwxLDAsMTE0LDE1NywwLDEyNCwwLDAsNCwxMDYsMTAsMCwKLSAgICAxMDAsMiwwLDU1LDIsOTUsMTAsMCw4NywxMDAsNiwwLDgxLDgyLDg4LDEyNCwKLSAgICAwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwxMjQsMCwwLDEwNiwKLSAgICA4LDAsMTA2LDExLDAsMTMxLDAsMCwxLDExMywyOCwwLDg3LDg3LDEwMCw2LAotICAgIDAsMTE2LDIsMCwxMjQsMSwwLDYxLDg4LDEwMCw2LDAsODMsNDEsNywxMjIsCi0gICAgMTg1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwKLSAgICAxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSwKLSAgICA5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsCi0gICAgMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LAotICAgIDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICA4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsCi0gICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDMzLDAsMCwwLDIzMywKLSAgICAxLDAsMCwwLDg0LDEyMiwyMywxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwKLSAgICAxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDM3LDExNCw3MCw3OCwKLSAgICA0MSwxMiwxMTQsMzQsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCw0MSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwzNywwLDAsMCwKLSAgICAxMTQsNDQsMCwwLDAsMTE0LDMxLDAsMCwwLDExNCwzNiwwLDAsMCwyMTgsCi0gICAgNyw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNCwzOSwwLDAsMCwyMTgsNywxMTQsCi0gICAgMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MSwyLDExNCwxOSwwLDAsMCwxMTQsNDMsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDQ2LDAsMCwwLDk0LDAsMCwwLDExNSwzMiwwLDAsMCwwLAotICAgIDYsMTIsMSwxMCwxLDMsMSwzLDEsMTAsMSwzMCwxLDksMSwxNSwKLSAgICAxLDQsMSwxMiwxLDE2LDEsMTgsMSwyMiwyLDEzLDEsMjEsMiwxMjIsCi0gICAgMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywKLSAgICAxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDE1NywwLDAsMCwxMTYsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDIsMCwKLSAgICAxNDMsMTI5LDAsMSwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwxMDcsMywwLAotICAgIDExNCw0OSwwLDExNiw0LDAsMTAwLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LAotICAgIDAsMCwxMDYsNSwwLDEwMCwyLDAsMTA3LDQsMCwxMTUsNzAsMCwxMTYsNiwKLSAgICAwLDEzMCwxLDAsMTI0LDAsMCw0LDEwNiw1LDAsMTAwLDMsMCw1NiwyLAotICAgIDk1LDUsMCwxMjQsMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsMiwwLDExNCwKLSAgICAxNDYsMCwxMDAsMCwwLDEyNCwwLDAsOTUsMywwLDEyNCwwLDAsMTA2LDcsCi0gICAgMCwxMTQsMTQ2LDAsMTI0LDAsMCw0LDEwNiw3LDAsMTAwLDMsMCw1NiwyLAotICAgIDk1LDcsMCwxMjQsMCwwLDEwNiw4LDAsMTA2LDksMCwxMzEsMCwwLDEsCi0gICAgODcsMTAwLDAsMCw4MSw4Miw4OCwxMDAsMCwwLDgzLDQxLDQsNzgsMTIyLDMxLAotICAgIDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsCi0gICAgMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwKLSAgICAzMywwLDAsMCwxMTQsNDUsMCwwLDAsNDEsMTAsMTE0LDM0LDAsMCwwLAotICAgIDExNCw0MCwwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwKLSAgICAxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsCi0gICAgMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwxMTQsMzksMCwwLDAsMTE0LDM2LDAsMCwwLDExNCw0NywwLDAsCi0gICAgMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsNDMsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDExOSwwLDAsMCwxMTUsMjIsMCwwLDAsMCwxLDEyLDEsMTAsMSwKLSAgICAxNSwxLDEyLDEsMjEsMSwxNSwxLDE1LDEsOSwxLDksMSwxNSwxLAotICAgIDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwKLSAgICAxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTAwLAotICAgIDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMTYsMiwwLDEyNCwwLAotICAgIDAsMTMxLDEsMCwxMzEsMiwwLDgzLDQxLDIsNzgsMTIyLDIzLDk1LDc3LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywKLSAgICAxMTYsMzIsMTIzLDEyNSw0MSwzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE0LDE1LAotICAgIDAsMCwwLDIxOCwyLDEwNSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsOTUsCi0gICAgOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDEzMiwwLDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDEsMTIyLDIwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwKLSAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsOSwxMTQsMSwwLDAsMCwKLSAgICAxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwxMTQsCi0gICAgMjAsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNDcsCi0gICAgMCwwLDAsMTE0LDUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzIsMCwwLAotICAgIDAsNjgsMCwwLDAsMTE1LDEyLDAsMCwwLDEyLDQsNiwyLDEyLDgsCi0gICAgMTIsMTIsMTIsMjUsMTIsMTMsMTE0LDMyLDAsMCwwLDk5LDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsCi0gICAgMTE1LDcwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwKLSAgICAwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLAotICAgIDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLAotICAgIDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksCi0gICAgMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MSwxMSwyMTgsMTYsOTUsCi0gICAgNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsCi0gICAgODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsCi0gICAgMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LAotICAgIDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsCi0gICAgMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwxLDAsMTI0LDAsMCwKLSAgICA5NSwxLDAsMTAwLDAsMCw4Myw0MSwyLDc4LDExNCwzMywwLDAsMCw0MSwKLSAgICAyLDExNCwxNSwwLDAsMCwxMTQsMzgsMCwwLDAsNDEsMiwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxNDAsMCwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCwxLDksMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDIwMiwxLDAsMCwxMDAsMCw5MCwwLDEwMCwxLAorICAgIDk3LDEsMTAwLDIsMTAwLDMsMTMyLDAsOTAsMiwxMDAsNCwxMDAsNSwxMzIsMCwKKyAgICA5MCwzLDEwNSwwLDkwLDQsMTA1LDAsOTAsNSw3MSwwLDEwMCw2LDEwMCw3LAorICAgIDEzMiwwLDEwMCw3LDEwMSw2LDEzMSwzLDkwLDcsNzEsMCwxMDAsOCwxMDAsOSwKKyAgICAxMzIsMCwxMDAsOSwxMzEsMiw5MCw4LDcxLDAsMTAwLDEwLDEwMCwxMSwxMzIsMCwKKyAgICAxMDAsMTEsMTMxLDIsOTAsOSw3MSwwLDEwMCwxMiwxMDAsMTMsMTMyLDAsMTAwLDEzLAorICAgIDEzMSwyLDkwLDEwLDEwMCwxNCwxMDAsMTUsMTMyLDAsOTAsMTEsMTAwLDE2LDEwMCwxNywKKyAgICAxMzIsMCw5MCwxMiwxMDAsMTgsMTAwLDE5LDEzMiwwLDkwLDEzLDEwMCwyMCwxMDAsMjEsCisgICAgMTU2LDEsMTAwLDIyLDEwMCwyMywxMzIsMiw5MCwxNCwxMDAsMjQsMTAwLDI1LDEzMiwwLAorICAgIDkwLDE1LDEwMCwyNiwxMDAsMjcsMTMyLDAsOTAsMTYsMTAwLDI4LDEwMCwyOSwxMzIsMCwKKyAgICA5MCwxNywxMDAsMzAsMTAwLDMxLDEzMiwwLDkwLDE4LDcxLDAsMTAwLDMyLDEwMCwzMywKKyAgICAxMzIsMCwxMDAsMzMsMTMxLDIsOTAsMTksNzEsMCwxMDAsMzQsMTAwLDM1LDEzMiwwLAorICAgIDEwMCwzNSwxMzEsMiw5MCwyMCwxMDAsMSwxMDAsMSwxMDAsMzYsMTU2LDIsMTAwLDM3LAorICAgIDEwMCwzOCwxMzIsMiw5MCwyMSwxMDEsMjIsMTMxLDAsOTAsMjMsMTAwLDkyLDEwMCwzOSwKKyAgICAxMDAsNDAsMTMyLDEsOTAsMjQsMTAwLDQxLDEwMCw0MiwxNTYsMSwxMDAsNDMsMTAwLDQ0LAorICAgIDEzMiwyLDkwLDI1LDEwMCw0NSwxMDAsNDYsMTMyLDAsOTAsMjYsMTAwLDQ3LDEwMCw0OCwKKyAgICAxMzIsMCw5MCwyNywxMDAsNDksMTAwLDUwLDEzMiwwLDkwLDI4LDEwMCw1MSwxMDAsNTIsCisgICAgMTMyLDAsOTAsMjksMTAwLDUzLDEwMCw1NCwxMzIsMCw5MCwzMCwxMDAsNTUsMTAwLDU2LAorICAgIDEzMiwwLDkwLDMxLDcxLDAsMTAwLDU3LDEwMCw1OCwxMzIsMCwxMDAsNTgsMTMxLDIsCisgICAgOTAsMzIsNzEsMCwxMDAsNTksMTAwLDYwLDEzMiwwLDEwMCw2MCwxMzEsMiw5MCwzMywKKyAgICA3MSwwLDEwMCw2MSwxMDAsNjIsMTMyLDAsMTAwLDYyLDEzMSwyLDkwLDM0LDEwMCw2MywKKyAgICAxMDAsNjQsMTMyLDAsOTAsMzUsMTAwLDY1LDEwMCw2NiwxMzIsMCw5MCwzNiwxMDAsOTMsCisgICAgMTAwLDY3LDEwMCw2OCwxMzIsMSw5MCwzNywxMDAsNjksMTAwLDcwLDEzMiwwLDkwLDM4LAorICAgIDEwMCw3MSw5MCwzOSwxMDEsMzksMTAwLDcyLDIzLDAsOTAsNDAsMTAwLDczLDEwMCw3NCwKKyAgICAxMzIsMCw5MCw0MSwxMDAsNzUsMTAwLDc2LDEzMiwwLDkwLDQyLDEwMCw5NCwxMDAsNzgsCisgICAgMTAwLDc5LDEzMiwxLDkwLDQzLDEwMCw4MCwxMDAsODEsMTMyLDAsOTAsNDQsMTAwLDgyLAorICAgIDEwMCw4MywxMzIsMCw5MCw0NSwxMDAsMSwxMDAsMSwxMDIsMCwxMDAsNzcsMTAyLDQsCisgICAgMTAwLDg0LDEwMCw4NSwxMzIsMSw5MCw0NiwxMDAsODYsMTAwLDg3LDEzMiwwLDkwLDQ3LAorICAgIDEwMCw4OCwxMDAsODksMTMyLDAsOTAsNDgsMTAwLDkwLDEwMCw5MSwxMzIsMCw5MCw0OSwKKyAgICAxMDAsMSw4MywwLDQxLDk1LDk3LDgzLDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsCisgICAgMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LDEwMSwKKyAgICA5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsCisgICAgMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwzMiwKKyAgICAxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwKKyAgICAxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiw5OSwKKyAgICA5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTIsCisgICAgMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5NywKKyAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsCisgICAgNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwKKyAgICAxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LAorICAgIDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwKKyAgICAxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LAorICAgIDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLAorICAgIDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLDk3LAorICAgIDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLAorICAgIDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCw3OCw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw3LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw2MCwwLDAsMCwxMjAsNDAsMTAwLDYsNjgsMCw5MywKKyAgICAzMiwxMjUsMiwxMTYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMTQsNiwxMTYsMSwxMjQsCisgICAgMCwxMjQsMiwxMTYsMiwxMjQsMSwxMjQsMiwxMzEsMiwxMzEsMywxLDAsMTEzLAorICAgIDYsODcsMCwxMjQsMCwxMDYsMywxMDYsNCwxMjQsMSwxMDYsMywxMzEsMSwxLAorICAgIDAsMTAwLDUsODMsMCw0MSw3LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLAorICAgIDExNSwxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwKKyAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLAorICAgIDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LAorICAgIDEwMCwxMTEsOTksOTUsOTUsNzgsNDEsNCwxMTQsMCwwLDAsMCwxMTQsMSwwLAorICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCw0MSw1LDIxOCw3LAorICAgIDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTE1LDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsCisgICAgMjE4LDcsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDgsOTUsOTUsMTAwLDEwNSw5OSwKKyAgICAxMTYsOTUsOTUsMjE4LDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw0MSwzLDkwLDMsMTEwLAorICAgIDEwMSwxMTksOTAsMywxMTEsMTA4LDEwMCwyMTgsNywxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLAorICAgIDE2OSwwLDExNCwxMCwwLDAsMCwyNTAsMjksNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMjE4LDUsOTUsMTE5LDExNCw5NywxMTIsMjcsMCwwLAorICAgIDAsMTE1LDgsMCwwLDAsMCwyLDEwLDEsMTAsMSwyMiwxLDExNCwxMiwKKyAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMTYsCisgICAgMSwxMzEsMSwxMjQsMCwxMzEsMSw4MywwLDQxLDEsNzgsNDEsMiwyMTgsNCwKKyAgICAxMTYsMTIxLDExMiwxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTEsOTUsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDY0LDAsCisgICAgMCwwLDExNSwxMiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLAorICAgIDEsODMsMCw0MSwyLDIxOCwxNCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LAorICAgIDY5LDExNCwxMTQsMTExLDExNCw3OCw0MSwzLDExNCwxLDAsMCwwLDExNCwwLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsCisgICAgNDcsMCwwLDAsMTE1LDIsMCwwLDAsOCwxLDExNCwxNywwLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSw1NiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLAorICAgIDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LAorICAgIDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwxMDAsOCwKKyAgICAxMDAsOSwxMzIsMCw5MCw3LDEwMCwxMCwxMDAsMTEsMTMyLDAsOTAsOCwxMDAsMTIsCisgICAgODMsMCw0MSwxMywyMTgsMTEsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksCisgICAgMTA3LDEyMiwxNjksNjUsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LDEwMSwzMiwxMDgsCisgICAgMTExLDk5LDEwNywzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNSwxMTUsMzIsOTcsOTgsMTA4LDEwMSwKKyAgICAzMiwxMTYsMTExLDMyLDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMzIsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsMTE1LDEwLDMyLDMyLDMyLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsMTE2LAorICAgIDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw0OSwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMTYsCisgICAgMTExLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw2NSwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsNjYsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDExNCwxMDEsOTcsCisgICAgMTAwLDMyLDUwLDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMTAsMzIsMzIsCisgICAgMzIsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY2LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiw2NSw0MSw0NiwxMCwzMiwzMiwzMiwzMiw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw0OCwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxMjQsMCw5NSwyLAorICAgIDExNiwwLDEwNiwxLDEzMSwwLDEyNCwwLDk1LDMsMTI0LDEsMTI0LDAsOTUsNCwKKyAgICAxMDAsMCwxMjQsMCw5NSw1LDEwMCwxLDEyNCwwLDk1LDYsMTAwLDEsMTI0LDAsCisgICAgOTUsNywxMDAsMCw4MywwLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwKKyAgICAyMTgsNyw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LAorICAgIDk3LDExNiwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsCisgICAgMTE5LDk3LDEwNywxMDEsMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsCisgICAgMTAxLDExNCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLAorICAgIDExNCwxMTUsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LAorICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw1NywwLDAsMCwxMTUsMTIsMCwwLAorICAgIDAsMCwxLDEwLDEsMTAsMSw2LDEsNiwxLDYsMSwxMjIsMjAsOTUsCiAgICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LAotICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxOSwwLDAsMCwxMjQsMCwwLAotICAgIDQsMTA2LDAsMCwxMDAsMSwwLDU1LDIsOTUsMCwwLDEwMCwyLDAsODMsCi0gICAgNDEsMyw3OCwxMTQsNDUsMCwwLDAsODQsNDEsMSwxMTQsMzgsMCwwLDAsCi0gICAgNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDQ2LDAsMCwwLDE0NCwwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsMTUsMSwxMjIsMjQsOTUsNjgsMTE3LDEwOSwxMDksMTIxLAotICAgIDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsMTE3LDEwNSwKLSAgICAxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQ2LDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMDAsMSwwLDEwNywyLDAsMTE0LDI3LDAsMTE2LDEsMCwxMDAsMiwKLSAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsMywKLSAgICAwLDU2LDIsOTUsMCwwLDEwMCwwLDAsODMsNDEsNCw3OCwxMTQsMzMsMCwKLSAgICAwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsCi0gICAgMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwKLSAgICAxMTEsOTksMTA3LDExNCw0NSwwLDAsMCw0MSwyLDExNCwzOCwwLDAsMCwxMTQsCi0gICAgNDgsMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQ3LDAsMCwwLDE0OCwKLSAgICAwLDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsMSwxMiwxLDEyMiwyNCwKKyAgICAxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgMiwwLDAsMCw2NywwLDAsMCwxMTUsNjQsMCwwLDAsMTE2LDAsMTA2LAorICAgIDEsMTMxLDAsMTI1LDEsMTI0LDAsMTA2LDIsMTI1LDIsMTIwLDQ0LDExNiwzLDEwNiwKKyAgICA0LDEyNCwyLDEzMSwxLDEyNSwzLDEyNCwzLDEwMCwwLDEwNyw4LDExNCwzOCwxMDAsCisgICAgMSw4MywwLDEyNCwzLDEwNiwyLDEyNSwyLDEyNCwyLDEyNCwxLDEwNywyLDExNCwKKyAgICAxNiwxMDAsMiw4MywwLDExMywxNiw4NywwLDEwMCwwLDgzLDAsNDEsMyw3OCwKKyAgICA3MCw4NCw0MSw1LDExNCwyMCwwLDAsMCwyMTgsOSwxMDMsMTAxLDExNiw5NSwxMDUsCisgICAgMTAwLDEwMSwxMTAsMTE2LDExNCwyMywwLDAsMCwyMTgsMTIsOTUsOTgsMTA4LDExMSw5OSwKKyAgICAxMDcsMTA1LDExMCwxMDMsOTUsMTExLDExMCwyMTgsMywxMDMsMTAxLDExNiw0MSw0LDExNCwyNiwKKyAgICAwLDAsMCw5MCwyLDEwOSwxMDEsMjE4LDMsMTE2LDEwNSwxMDAsMTE0LDIxLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY1LDAsCisgICAgMCwwLDExNSwxOCwwLDAsMCwwLDIsOCwxLDYsMSwyLDEsMTAsCisgICAgMSw4LDEsNCwxLDYsMSw4LDEsMTIyLDI0LDk1LDc3LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDE2LDAsMCwwLDY3LDAsMCwwLDExNSwxNjgsMCwwLDAsMTE2LDAsMTA2LAorICAgIDEsMTMxLDAsMTI1LDEsMTI0LDAsMTE2LDIsMTI0LDEsNjAsMCwxMjIsMTM4LDEyMCwKKyAgICAxMzIsMTI0LDAsMTA2LDMsMTQzLDk2LDEsMCwxMjQsMCwxMDYsNCwxMDAsMSwxMDcsCisgICAgMiwxMTUsNDgsMTI0LDAsMTA2LDUsMTI0LDEsMTA3LDIsMTE0LDcyLDEyNCwxLDEyNCwKKyAgICAwLDk1LDUsMTI0LDAsNCwwLDEwNiw0LDEwMCwyLDU1LDAsMiwwLDk1LAorICAgIDQsMTAwLDMsODMsMCwxMjQsMCwxMDYsNiwxMzEsMCwxMTQsOTIsMTE2LDcsMTAwLAorICAgIDQsMTI0LDAsMjIsMCwxMzEsMSwxMzAsMSwxMjQsMCwxMDYsOCwxMDYsOSwxMDAsCisgICAgNSwxMzEsMSwxMTQsMTE4LDEyNCwwLDQsMCwxMDYsMTAsMTAwLDIsNTUsMCwyLAorICAgIDAsOTUsMTAsODcsMCwxMDAsNiw4MSwwLDgyLDAsODgsMCwxMjQsMCwxMDYsCisgICAgOCwxMDYsOSwxMzEsMCwxLDAsMTI0LDAsMTA2LDgsMTA2LDExLDEzMSwwLDEsCisgICAgMCwxMTMsMjAsODcsMCw4NywwLDEwMCw2LDExNiwyLDEyNCwxLDYxLDAsODgsCisgICAgMCwxMDAsNiw4MywwLDQxLDcsMTIyLDE4NSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywKKyAgICAzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDQ0LAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDMyLDk1LDY4LDEwMSw5NywxMDAsCisgICAgMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwKKyAgICAxMTUsMTAxLDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LAorICAgIDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTksMTA3LAorICAgIDMyLDEwNSwxMTUsMzIsOTcsMTA4LDExOSw5NywxMjEsMTE1LDMyLDk3LDk5LDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTAwLDMyLDk3LDExMCwxMDAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDExNSwzMiwKKyAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDExNCwxOSwwLDAsMCwyMzMsMSwwLDAsMCw4NCwxMjIsMjMsMTAwLAorICAgIDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLAorICAgIDMyLDk4LDEyMSwzMiwzNywxMTQsNzAsNzgsNDEsMTIsMTE0LDIwLDAsMCwwLDExNCwKKyAgICAyOCwwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwyNCwKKyAgICAwLDAsMCwxMTQsMjMsMCwwLDAsMTE0LDMyLDAsMCwwLDExNCwxNywwLAorICAgIDAsMCwxMTQsMjIsMCwwLDAsMjE4LDcsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwKKyAgICAxMTQsMjUsMCwwLDAsMjE4LDcsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsNDEsMiwKKyAgICAxMTQsMjYsMCwwLDAsMTE0LDMxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzNCwwLDAsMCw3NywwLAorICAgIDAsMCwxMTUsMzIsMCwwLDAsMCw2LDgsMSw4LDEsMiwxLDIsCisgICAgMSw4LDEsMjAsMSw2LDEsMTQsMSw0LDEsOCwxLDEyLDEsMTIsCisgICAgMSwyNCwyLDEwLDEsMTgsMiwxMjIsMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyMiwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxMjUsMSwxMjQsMCwKKyAgICAxMDYsMiwxNDMsOTgsMSwwLDEyNCwwLDEwNiwzLDEyNCwxLDEwNywzLDExNCwzNCwKKyAgICAxMTYsNCwxMDAsMSwxMzEsMSwxMzAsMSwxMjQsMCwxMDYsNSwxMDAsMiwxMDcsNCwKKyAgICAxMTUsNDgsMTE2LDYsMTMwLDEsMTI0LDAsNCwwLDEwNiw1LDEwMCwzLDU2LDAsCisgICAgMiwwLDk1LDUsMTI0LDAsMTA2LDUsMTAwLDIsMTA3LDIsMTE0LDEwOCwxMDAsMCwKKyAgICAxMjQsMCw5NSwzLDEyNCwwLDEwNiw3LDExNCwxMDgsMTI0LDAsNCwwLDEwNiw3LAorICAgIDEwMCwzLDU2LDAsMiwwLDk1LDcsMTI0LDAsMTA2LDgsMTA2LDksMTMxLDAsCisgICAgMSwwLDg3LDAsMTAwLDAsODEsMCw4MiwwLDg4LDAsMTAwLDAsODMsMCwKKyAgICA0MSw0LDc4LDEyMiwzMSw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLAorICAgIDk3LDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwKKyAgICAxMDgsMTExLDk5LDEwNywxMTQsMTksMCwwLDAsMTE0LDMzLDAsMCwwLDQxLDEwLAorICAgIDExNCwyMCwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwKKyAgICAyMywwLDAsMCwyMTgsMTIsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwxMDEsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDExNCwyNCwwLDAsMCwyMTgsMTQsNjUsMTE1LDExNSwxMDEsMTE0LDExNiwxMDUsCisgICAgMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDI1LDAsMCwwLDExNCwyMiwwLDAsCisgICAgMCwxMTQsMzUsMCwwLDAsNDEsMiwxMTQsMjYsMCwwLDAsMTE0LDMxLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMDIsMCwwLDAsMTE1LDIyLDAsMCwwLDAsCisgICAgMSw4LDEsOCwxLDEwLDEsOCwxLDE0LDEsMTQsMSwxMCwxLDYsCisgICAgMSw2LDEsMTQsMSwxMjIsMTksOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE4LDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDExNiwyLDEyNCwwLAorICAgIDEzMSwxLDEzMSwyLDgzLDAsNDEsMiw3OCwxMjIsMjMsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwKKyAgICAxMjMsMTI1LDQxLDMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTQsMTUsMCwwLAorICAgIDAsMjE4LDIsMTA1LDEwMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSw5NSwxMTQsCisgICAgMTAxLDExMiwxMTQsOTUsOTUsMTE1LDAsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LAorICAgIDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LDExNCwxLDAsMCwwLDExNCwwLAorICAgIDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwyNywwLAorICAgIDAsMCwxMTQsMzIsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCwzNSwwLDAsCisgICAgMCwxMTQsNDAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxOCwwLDAsMCw1MSwKKyAgICAwLDAsMCwxMTUsMTIsMCwwLDAsOCw0LDQsMiw4LDgsOCwxMiwKKyAgICA4LDI1LDgsMTMsMTE0LDE4LDAsMCwwLDk5LDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ4LAorICAgIDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwKKyAgICAyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsCisgICAgNiwxMDAsNywxMzIsMCw5MCw2LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLAorICAgIDEwLDgzLDAsNDEsMTEsMjE4LDE2LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTIyLDg2LDY1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsCisgICAgMTAxLDMyLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywzMiwxMDEsMTEzLAorICAgIDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiw4MCwxMjEsMTE2LAorICAgIDEwNCwxMTEsMTEwLDMyLDk4LDExNywxMDUsMTA4LDEwMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDExMSwKKyAgICAxMTcsMTE2LDEwLDMyLDMyLDMyLDMyLDEwOSwxMTcsMTA4LDExNiwxMDUsNDUsMTE2LDEwNCwxMTQsCisgICAgMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsNDYsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwxMDAsCisgICAgMSwxMjQsMCw5NSwxLDEwMCwwLDgzLDAsNDEsMiw3OCwxMTQsMTksMCwwLAorICAgIDAsNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDI0LDAsMCwwLDQxLDIsMTE0LAorICAgIDI2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjcsMCwwLDAsMTIzLDAsMCwKKyAgICAwLDExNSw0LDAsMCwwLDAsMSw2LDEsMTIyLDI1LDk1LDY4LDExNywxMDksCisgICAgMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE4LDAsMCwwLDEyNCwKKyAgICAwLDQsMCwxMDYsMCwxMDAsMSw1NSwwLDIsMCw5NSwwLDEwMCwyLDgzLAorICAgIDAsNDEsMyw3OCwxMTQsMzMsMCwwLDAsODQsNDEsMSwxMTQsMjQsMCwwLAorICAgIDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDM0LDAsMCwwLDEyNywwLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwwLDEsMTQsMSwxMjIsMjQsOTUsNjgsMTE3LDEwOSwxMDksCisgICAgMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5Nyw5OSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwwLDEyNCwwLDEwNiwKKyAgICAwLDEwMCwxLDEwNywyLDExNCwxOCwxMTYsMSwxMDAsMiwxMzEsMSwxMzAsMSwxMjQsCisgICAgMCw0LDAsMTA2LDAsMTAwLDMsNTYsMCwyLDAsOTUsMCwxMDAsMCw4MywKKyAgICAwLDQxLDQsNzgsMTE0LDE5LDAsMCwwLDEyMiwzMSw5OSw5NywxMTAsMTEwLDExMSwKKyAgICAxMTYsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE3LDExMCw0NSw5Nyw5OSwxMTMsCisgICAgMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMDgsMTExLDk5LDEwNywxMTQsMzMsMCwwLDAsNDEsCisgICAgMiwxMTQsMjQsMCwwLDAsMTE0LDM2LDAsMCwwLDQxLDEsMTE0LDI2LDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCwxMzEsMCwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICAxLDEwLDEsOCwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE4LDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwKKyAgICAxLDExNiwyLDEyNCwwLDEzMSwxLDEzMSwyLDgzLDAsNDEsMiw3OCwxMjIsMjgsCiAgICAgOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKLSAgICA0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLAotICAgIDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjgsCi0gICAgOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKLSAgICA0MCwxMjMsMzMsMTE0LDEyNSw0MSwzMiw5NywxMTYsMzIsMTIzLDEyNSw0MSwzLDExNCw1MCwKLSAgICAwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDUxLDAsMCwwLDQxLDEsMTE0LAotICAgIDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCw1MiwwLDAsMCwxNTMsMCwwLDAsMTE1LDIsMCwwLAorICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDM4LAorICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMzksMCwwLDAsNDEsMSwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDQwLDAsMCwwLDEzNiwwLDAsMCwxMTUsMiwwLDAsCiAgICAgMCwwLDEsMTIyLDI1LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsCiAgICAgMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLAogICAgIDgsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCi0gICAgNDcsMCwwLDAsMTE0LDUyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTMsMCwKLSAgICAwLDAsMTM2LDAsMCwwLDExNSwxMCwwLDAsMCwxMiwyLDYsMiwxMiwKLSAgICA0LDEyLDQsMTIsNSwxMTQsNTMsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDExNCwzLDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LAorICAgIDM1LDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQxLDAsCisgICAgMCwwLDExOSwwLDAsMCwxMTUsMTAsMCwwLDAsOCwyLDQsMiw4LAorICAgIDQsOCw0LDgsNSwxMTQsNDEsMCwwLDAsOTksMCwwLDAsMCwwLAogICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLDAsMTAwLAotICAgIDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsCi0gICAgMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxOCw5NSw3NywxMTEsMTAwLAorICAgIDM2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSwxMDAsMiwKKyAgICAxMzIsMCw5MCwzLDEwMCwzLDEwMCw0LDEzMiwwLDkwLDQsMTAwLDUsMTAwLDYsCisgICAgMTMyLDAsOTAsNSwxMDAsNyw4MywwLDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsCiAgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsOTksMiwKICAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsCi0gICAgMCwxMDAsMCwwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDEsMSwKLSAgICA3OCw0MSwyLDExNCwxOCwwLDAsMCwyMTgsNSw5NSwxMDgsMTExLDk5LDEwNyw0MSwKLSAgICAyLDExNCwxOSwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE1OSwKLSAgICAwLDAsMCwxMTUsNCwwLDAsMCwwLDEsOSwxLDEyMiwyNyw5NSw3NywKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsNTMsCi0gICAgMCwwLDAsMTIyLDIyLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAotICAgIDEsMCwxMjQsMCwwLDk1LDIsMCw4NywxMDAsMCwwLDExNiwzLDAsMTA2LAotICAgIDQsMCwxMzEsMCwwLDEsODgsMTI0LDAsMCwxMDYsMiwwLDEwNiw1LDAsCi0gICAgMTMxLDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCwxNiw5NSwKLSAgICAxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsCi0gICAgMTgsMCwwLDAsMTE0LDU1LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLDIxOCwKLSAgICAxMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsNDYsMCwKLSAgICAwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDE2MywwLDAsCi0gICAgMCwxMTUsOCwwLDAsMCwwLDEsMywxLDIyLDIsMTEsMSwxMjIsMjgsCi0gICAgOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsCi0gICAgMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDEsMCwwLDAsNzksMCwwLAotICAgIDAsMTE1LDE3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAwLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsNTUsMCwwLAotICAgIDAsMTE0LDQ3LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLDExNCwyOSwwLAotICAgIDAsMCw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDE3MCwwLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsCi0gICAgMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsCi0gICAgMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCwyMywwLAotICAgIDAsMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1NCwwLDAsMCwKLSAgICAxNTcsMCwwLDAsMTE1LDYsMCwwLDAsMTIsMiwxMiw0LDEyLDcsMTE0LAotICAgIDU0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwKLSAgICAwLDExLDAsMCwwLDMsMCwwLDAsMTE1LDEzOSwwLDAsMCwxMDAsMSwKLSAgICAwLDEyNSwxLDAsMTIxLDE3LDAsMTE2LDAsMCwxMzYsMCwwLDI1LDEzMSwwLAotICAgIDAsMTI1LDEsMCw4NywxMTAsMTgsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LAotICAgIDQzLDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsMTM1LDAsMTE2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAotICAgIDgzLDAsMTE2LDMsMCwxMzYsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMTAsMTIsCi0gICAgMCwxMTYsNCwwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDEzNSwwLDAsCi0gICAgMTAyLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTM0LDAsMCwxMjUsMiwwLDExNiwKLSAgICA1LDAsMTA2LDYsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMTYsMCwKLSAgICAwLDEzNiwwLDAsNjAsMTI0LDEsMCw4Myw0MSw0LDEyMiwxMDksNzEsMTAxLDExNiwKLSAgICAzMiwxMTEsMTE0LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywKLSAgICAzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywKLSAgICAxMDksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCi0gICAgMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LAotICAgIDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwKLSAgICAxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDE5LDAsMCwwLAotICAgIDExNSwxMSwwLDAsMCwxMTYsMCwwLDEzNiwwLDAsNjEsMTAwLDAsMCw4MywKLSAgICA0MSwxLDc4LDQxLDEsMjE4LDEzLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwKLSAgICAxMTEsOTksMTA3LDExNSw0MSwxLDIxOCwxLDk1LDQxLDEsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDIsOTksOTgsMTkwLDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsOTUsMTAzLDEwMSwxMTYsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsNDYsNjAsMTA4LDExMSw5OSwKLSAgICA5NywxMDgsMTE1LDYyLDQ2LDk5LDk4LDQxLDcsMTE0LDU5LDAsMCwwLDExNCwyOCwKLSAgICAwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwzMiwwLAotICAgIDAsMCwyMTgsOCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCwzLDExNCwxMDEsCi0gICAgMTAyLDQxLDMsMTE0LDE1LDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsNjEsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LDE1LDAsMCwwLDExNCwxMSwKLSAgICAwLDAsMCwxMTQsNTYsMCwwLDAsMTc2LDAsMCwwLDExNSwyNCwwLDAsCi0gICAgMCwwLDQsNiwxLDMsMSwxNywxLDEzLDEsNSwxLDEyLDEsMTIsCi0gICAgMSwxNSwyLDEyLDEsMTgsMiwyMiwxLDExNCw1NiwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNzEsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTMxLDAsMCwxLDEyMSwxNCwKLSAgICAwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMCwwLDEsODcsMTEwLDE4LDAsNCwKLSAgICAxMTYsNCwwLDEwNywxMCwwLDExNCw1NiwwLDEsMSwxLDg5LDExMCwxMSwwLAotICAgIDg4LDEyNCwxLDAsMTA2LDUsMCwxMzEsMCwwLDEsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDk3LDIxLDEsMCwwLDgyLDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwOCwxMTEsOTksMTA3LDQ0LDMyLDk3LDExMCwxMDAsMzIsOTcsOTksMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLAotICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwKKyAgICAwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwxMDAsMCwKKyAgICAxMjQsMCw5NSwxLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLDIsMTE0LDI2LDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwxMTQsMjcsMCwwLDAsMTQyLDAsMCwwLDExNSwKKyAgICA0LDAsMCwwLDAsMSw2LDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTA1LAorICAgIDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMjIsCisgICAgMTYsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDEsMTI0LDAsOTUsMiw4NywwLDEwMCwKKyAgICAwLDExNiwzLDEwNiw0LDEzMSwwLDEsMCw4OCwwLDEyNCwwLDEwNiwyLDEwNiwKKyAgICA1LDEzMSwwLDEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsNiwyMTgsMTYsCisgICAgOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsCisgICAgMTE0LDQzLDAsMCwwLDExNCw0NCwwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwKKyAgICAyMTgsMTIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE0LDM0LAorICAgIDAsMCwwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LDk1LDk1LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMTQsOTUsOTUsMTQ2LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwyLAorICAgIDEsMTYsMiwxMCwxLDEyMiwyOCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgMSwwLDAsMCw3OSwwLDAsMCwxMTUsMTQsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTA2LDEsMTMxLDAsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwyLAorICAgIDExNCw0NCwwLDAsMCwxMTQsMzUsMCwwLDAsNDEsMywxMTQsMjYsMCwwLAorICAgIDAsMjE4LDQsOTcsMTE0LDEwMywxMTUsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LAorICAgIDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwxNTMsMCwwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxLDEyMiwyNyw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCisgICAgNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKKyAgICA3OCw0MSw2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCisgICAgMCwwLDExNCwyNywwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwxMTQsNDIsMCwwLDAsMTQwLDAsMCwwLDExNSw2LAorICAgIDAsMCwwLDgsMiw4LDQsOCw3LDExNCw0MiwwLDAsMCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCwzLAorICAgIDAsMCwwLDExNSwxMDYsMCwwLDAsMTAwLDEsMTI1LDEsMTIxLDE0LDExNiwwLAorICAgIDEzNiwwLDI1LDAsMTMxLDAsMTI1LDEsODcsMCwxMTAsMjAsNCwwLDExNiwxLAorICAgIDEwNywxMCwxMTQsMzgsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLAorICAgIDEyNCwxLDEwMCwxLDEwNyw4LDExNCwxMDIsMTE2LDIsMTAwLDEsMTA3LDgsMTE0LDY2LAorICAgIDExNiwzLDEzNiwwLDEzMSwxLDEyNSwxLDExMCw4LDExNiw0LDEzNiwwLDEzMSwxLAorICAgIDEyNSwxLDEzNSwwLDEwMiwxLDEwMCwyLDEwMCwzLDEzMiw4LDEyNSwyLDExNiw1LAorICAgIDEwNiw2LDEyNCwxLDEyNCwyLDEzMSwyLDExNiwwLDEzNiwwLDYwLDAsMTI0LDEsCisgICAgODMsMCw0MSw0LDEyMiwxMDksNzEsMTAxLDExNiwzMiwxMTEsMTE0LDMyLDk5LDExNCwxMDEsCisgICAgOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsCiAgICAgMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LDEwLDMyLDMyLDMyLAotICAgIDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsMTA4LDEyMSwzMiwxMDUsCi0gICAgMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsMTA1LDExMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTYsMzIsCi0gICAgMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAotICAgIDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMTQsCi0gICAgMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLAotICAgIDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLAotICAgIDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKLSAgICAxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsNDEsNiwxMTQsNTYsCi0gICAgMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNDYsMCwKLSAgICAwLDAsMTE0LDMxLDAsMCwwLDExNCw0NywwLDAsMCw0MSwyLDExNCwxNSwKLSAgICAwLDAsMCwxMTQsMzUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsOTksMTA3LDk1LDExNywKLSAgICAxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTk1LDAsMCwwLAotICAgIDExNSwxNCwwLDAsMCwwLDcsMTIsMSwxMCwxLDMsMSwxNCwxLDEzLAotICAgIDMsNSwyLDExNCw2MywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCwzLDAsMCwwLDc5LDAsMCwwLDExNSwxMywwLAotICAgIDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxNDIsMCwwLDgzLDQxLAotICAgIDEsOTcsNDYsMSwwLDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsOTksMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDk3LAotICAgIDEwOCwxMTksOTcsMTIxLDExNSwzMiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwzMiwxMTUsMTAxLDExMywKLSAgICAxMTcsMTAxLDExMCw5OSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDExNiwKLSAgICAxMDQsOTcsMTE2LDMyLDEwMSwxMTAsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiw5NywzMiw5OSwKLSAgICA5NywxMDgsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LAotICAgIDExNiwxMDUsMTExLDExMCwxMCwxMCwzMiwzMiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwNSwxMTYsCi0gICAgMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsMzIsMTExLDEwMiwzMiw5NywzMiwxMTAsMTExLAotICAgIDExNCwxMDksOTcsMTA4LDMyLDk5LDk3LDEwOCwxMDgsMzIsMTA1LDExMCwzMiwxMTIsMTA4LDk3LAotICAgIDk5LDEwMSwxMTUsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLAotICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCi0gICAgOTgsMTAsMzIsMzIsMzIsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsMTEwLDExNiwKLSAgICAxMTQsMTExLDEwMCwxMTcsOTksMTAxLDExNSwzMiwxMTcsMTEwLDExOSw5NywxMTAsMTE2LDEwMSwxMDAsCi0gICAgMzIsMTEwLDExMSwxMDUsMTE1LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTE2LDExNCw5Nyw5OSwxMDEsOTgsOTcsOTksMTA3LDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsCi0gICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMCwxMDMsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDEsMTAsCi0gICAgMzIsMzIsMzIsMzIsMTE0LDEwLDAsMCwwLDQxLDMsMjE4LDEsMTAyLDExNCwyOSwKLSAgICAwLDAsMCw5MCw0LDEwNywxMTksMTAwLDExNSwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsOTksOTcsMTA4LDEwOCw5NSwKLSAgICAxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsCi0gICAgMTE4LDEwMSwxMDAsMjE0LDAsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTQsNjUsCi0gICAgMCwwLDAsMjE4LDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LDEyMSwxMTQsNDUsCi0gICAgMCwwLDAsOTksMSwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsCi0gICAgNCwwLDAsMCw3MSwwLDAsMCwxMTUsNzUsMCwwLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDEwNiwyLDAsMTI0LDEsMCwxMDcsNSwwLDExNCw3MSwwLDEyNCwKLSAgICAwLDAsMTA2LDMsMCwxMDAsNiwwLDEzMSwxLDAsMTE1LDQzLDAsMTAwLDMsCi0gICAgMCwxMjQsMCwwLDIzLDEyNSwwLDAsMTE2LDQsMCwxMjQsMCwwLDEwNiw1LAotICAgIDAsMTI0LDIsMCwxNDAsMCwwLDEwMCw0LDAsMTE2LDAsMCwxMDYsNiwwLAotICAgIDEzMSwxLDEsMSwxMDAsNSwwLDgzLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLAotICAgIDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLAotICAgIDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LAotICAgIDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LAotICAgIDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMjIsMiwzNSwzMiw5MCw0LDEwMiwxMDUsMTA4LDEwMSw3OCwKLSAgICA0MSwyLDExNCw2NywwLDAsMCwxMTQsNjgsMCwwLDAsNDEsNywxMTQsMTQsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLAorICAgIDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywKKyAgICAxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDIsMCwwLDAsMTksMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLAorICAgIDEzNiwwLDYxLDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDEsMjE4LDEzLDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNSw0MSwxLDIxOCwxLAorICAgIDk1LDQxLDEsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDIsOTksOTgsMTczLDAsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMSwxMjIsMjgsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAorICAgIDExMSw5OSwxMDcsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk5LDk4LDQxLAorICAgIDcsMTE0LDUxLDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDExNCwyMCwwLDAsMCwxMTQsNDEsMCwwLDAsMTE0LDE4LDAsMCwwLDIxOCwKKyAgICA4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwxMDIsNDEsMywKKyAgICAxMTQsMTUsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCw1MywwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDExNCw0NSwwLDAsMCwxNTksMCwwLDAsMTE1LDI0LDAsMCwwLDAsNCwKKyAgICA0LDEsMiwxLDE0LDEsMTQsMSw2LDEsOCwxLDgsMSwxMCwyLAorICAgIDgsMSwxMiwyLDE2LDEsMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw2MiwwLDAsMCwxMTYsMCwxMjQsMCwxMzEsMSwxMjUsMSwxMTYsMSwxMDYsCisgICAgMiwxMzEsMCwxLDAsMTIxLDEyLDEyNCwxLDEwNiwzLDEzMSwwLDEsMCw4NywKKyAgICAwLDExMCwyMCw0LDAsMTE2LDQsMTA3LDEwLDExNCw0OCwxLDAsMSwwLDEsCisgICAgMCw4OSwwLDExMCwxMCw4OCwwLDEyNCwxLDEwNiw1LDEzMSwwLDEsMCwxMDAsCisgICAgMSw4MywwLDQxLDIsOTcsMjEsMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LAorICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwKKyAgICAxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLAorICAgIDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsMTAzLDEwNSwKKyAgICAxMTgsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLAorICAgIDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMTAsMTE1LDExNywxMTQsMTAxLDMyLDk3LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTksMTExLDEwOSwxMTIsMTA4LDEwMSwxMTYsMTAxLAorICAgIDEwOCwxMjEsMzIsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMTAwLDQ0LDMyLAorICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTAxLDExOCwxMDEsMTEwLDExNiwKKyAgICAzMiwxMDUsMTE2LDMyLDEwNSwxMTUsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk3LDExMCwxMTEsMTE2LDEwNCwxMDEsMTE0LAorICAgIDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LAorICAgIDExMSwxMTcsMTA4LDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwKKyAgICAxMDgsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LAorICAgIDQxLDYsMTE0LDQ1LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNDcsMCwwLAorICAgIDAsMTE0LDM0LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsMzUsMCwwLDAsCisgICAgNDEsMiwxMTQsMTUsMCwwLDAsMTE0LDIxLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOSw5NSwxMDgsMTExLAorICAgIDk5LDEwNyw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDE3OCwwLDAsMCwxMTUsMTQsMCwwLDAsMCw3LDgsMSw4LDEsMiwKKyAgICAxLDEyLDEsMTQsMyw2LDIsMTE0LDU2LDAsMCwwLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLAorICAgIDAsMTE1LDEwLDAsMCwwLDEyNCwwLDEyNCwxLDEyNCwyLDE0MiwxLDgzLDAsCisgICAgNDEsMSw5Nyw0NiwxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsCisgICAgOTcsMTA4LDExOSw5NywxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsCisgICAgMTEzLDExNywxMDEsMTEwLDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsCisgICAgMTE2LDEwNCw5NywxMTYsMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLAorICAgIDk5LDk3LDEwOCwxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsCisgICAgOTksMTE2LDEwNSwxMTEsMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LAorICAgIDExNiwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwKKyAgICAxMTEsMTE0LDEwOSw5NywxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsCisgICAgOTcsOTksMTAxLDExNSwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywKKyAgICAxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCwxMCwzMiwzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsCisgICAgMTE2LDExNCwxMTEsMTAwLDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLAorICAgIDEwMCwzMiwxMTAsMTExLDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwKKyAgICAzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwKKyAgICAzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTAsMCwwLDAsNDEsMywyMTgsMSwxMDIsMTE0LAorICAgIDQ5LDAsMCwwLDkwLDQsMTA3LDExOSwxMDAsMTE1LDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywxMDgsMTA4LAorICAgIDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LAorICAgIDExMSwxMTgsMTAxLDEwMCwxOTcsMCwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNCwKKyAgICA1OCwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsMSwyMTgsOSwxMTgsMTAxLDExNCwKKyAgICA5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDk5LDEsMCwwLDAsMSwwLDAsMCwzLAorICAgIDAsMCwwLDUsMCwwLDAsNzEsMCwwLDAsMTE1LDU0LDAsMCwwLAorICAgIDExNiwwLDEwNiwxLDEwNiwyLDEyNCwxLDEwNyw1LDExNCw1MCwxMjQsMCwxMDYsMywKKyAgICAxMDAsNiwxMzEsMSwxMTUsMzAsMTAwLDMsMTI0LDAsMjMsMCwxMjUsMCwxMTYsNCwKKyAgICAxMjQsMCwxMDYsNSwxMjQsMiwxNDIsMCwxMTYsMCwxMDYsNiwxMDAsNCwxNDEsMiwKKyAgICAxLDAsMTAwLDUsODMsMCw0MSw3LDEyMiw2MSw4MCwxMTQsMTA1LDExMCwxMTYsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwzMiwxMTUsCisgICAgMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCw0Nyw4MCw4OSw4NCw3MiwKKyAgICA3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsMTE1LDMyLDExNiwxMTcsMTE0LAorICAgIDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLDcsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsNDEsMSw5MCw0LDEwMiwxMDUsMTA4LDEwMSw3OCwKKyAgICA0MSwyLDExNCw2MCwwLDAsMCwxMTQsNjEsMCwwLDAsNDEsNywxMTQsMTQsCiAgICAgMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LDIxOCw3LDExOCwxMDEsMTE0LDk4LAogICAgIDExMSwxMTUsMTAxLDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LDExOSwxMDUsMTE2LDEwNCwyMTgsCi0gICAgNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCw1MCwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwKLSAgICAxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCw2NiwKLSAgICAwLDAsMCwxMTQsMjksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDUsMTEyLDExNCwxMDUsMTEwLDExNiwxMTQsMzgsMCwwLDAsMjE4LDYsMTE1LDExNiwxMDAsCisgICAgMTAxLDExNCwxMTQsNDEsMywyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTQsNTksCisgICAgMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKICAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LAotICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMjUsMCwwLDAsMTE1LDgsMCwKLSAgICAwLDAsMCwyLDE4LDEsMTUsMSwxMCwxLDExNCw3NSwwLDAsMCw5OSwKKyAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMjA4LDAsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsMiwxMiwxLDEwLDEsOCwxLDExNCw2OCwwLDAsMCw5OSwKICAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAotICAgIDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsCi0gICAgMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsCi0gICAgMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQxLDMsMTIyLDQ5LAotICAgIDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsCi0gICAgMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsCi0gICAgNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLAotICAgIDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLDAsMTI0LDEsMCwxMTYsMCwKLSAgICAwLDEwNiwxLDAsMTA3LDcsMCwxMTQsNDIsMCwxMTYsMiwwLDEwMCwxLDAsCi0gICAgMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwKLSAgICAxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwKLSAgICAwLDgzLDQxLDMsNzgsMTIyLDI5LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LDE0LDAsMCwwLAotICAgIDIxOCwyMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwyMTgsCi0gICAgOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDEsMSwyMTgsMywxMDIsMTIwLDExMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSwxMTQsMTAxLDExMywKLSAgICAxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsCi0gICAgOTcsMTEyLDExMiwxMDEsMTE0LDIzNSwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsCi0gICAgMTUsMSwxOCwxLDksMSwxMjIsNTIsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLAotICAgIDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LAotICAgIDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwKLSAgICAwLDAsMCw0MSwyLDExNCw3OSwwLDAsMCwxMTQsODAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDQxLDEsMTE0LDc5LDAsMCwwLDExNCwxMSwwLDAsMCwKLSAgICAyMTgsMTcsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCwyMzMsMCwwLDAsMTE1LDYsMCwwLDAsMCwyLDE4LDUsCi0gICAgMTMsMSwxMTQsODEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwzNSwwLDAsCi0gICAgMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsCi0gICAgMTI1LDEsMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsCi0gICAgMTI0LDEsMCw4Myw0MSwzLDEyMiw0Nyw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLAotICAgIDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMCw5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLAotICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDU1LDAsMCwKLSAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTE1LDQyLDAsCi0gICAgMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMTI0LDEsMCwxMzEsMSwxLDEzMCwxLDAsMTM2LDAsMCwxMjQsMCwKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwzLDc4LDEyMiwyNywxMjMsMzMsMTE0LAotICAgIDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwKLSAgICA1NywwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNCwKLSAgICA3NywwLDAsMCwxMTQsNTAsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsCi0gICAgMTE0LDc4LDAsMCwwLDQxLDEsMTE0LDc5LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMywwLDAsMCwxMTUsMjYsMCwwLDAsMTM1LDAsMTAyLDEsMTAwLDEsMTAwLAorICAgIDIsMTMyLDgsMTI1LDEsMTE2LDAsMTI0LDEsMTM2LDAsMTMxLDIsMSwwLDEyNCwKKyAgICAxLDgzLDAsNDEsMywxMjIsNDksNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsCisgICAgMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0Niw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw0LDAsMCwwLDE5LDAsMCwwLDExNSwzOCwwLAorICAgIDAsMCwxMjQsMSwxMTYsMCwxMDYsMSwxMDcsNywxMTQsMjgsMTE2LDIsMTAwLDEsCisgICAgMTA2LDMsMTI0LDEsMTMxLDEsMTI0LDEsMTAwLDIsMTQxLDIsMTMwLDEsMTM2LDAsCisgICAgMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw0MSwzLDc4LDEyMiwyOSwxMjMsMzMsMTE0LAorICAgIDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiwKKyAgICA0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEsMTE0LDE1LDAsMCwKKyAgICAwLDQxLDQsMTE0LDE0LDAsMCwwLDIxOCwyMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMjE4LDExLAorICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNCwzOCwwLDAsMCwKKyAgICA0MSwyLDExNCwyNiwwLDAsMCwyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwKKyAgICAxMDEsNDEsMSwyMTgsMywxMDIsMTIwLDExMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCisgICAgMCwwLDIxOCwyNSw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDIxOCwwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDEsMTAsMSwxMCwxLDgsMSwxMjIsNTIsCisgICAgOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LAorICAgIDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3MiwwLAorICAgIDAsMCwxMTQsNzMsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LDcyLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwKKyAgICAxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwyMTYsMCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwyLDEyLDUsMTAsMSwxMTQsNzQsMCwwLDAsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwyNiwwLDAsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsCisgICAgMiwxMzIsOCwxMjUsMSwxMTYsMCwxMjQsMSwxMzYsMCwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSwzLDEyMiw0Nyw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKKyAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICA5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDM4LDAsMCwwLAorICAgIDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDExNSwyOCwxMTYsMiwxMDAsMSwxMDYsMywKKyAgICAxMjQsMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMzYsMCwxMjQsMCwKKyAgICAxMjQsMSwxMzEsMiw4MywwLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LDMyLAorICAgIDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsCisgICAgNDYsMCwwLDAsMjE4LDksMTA1LDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTQsCisgICAgNzAsMCwwLDAsMTE0LDM4LDAsMCwwLDQxLDIsMTE0LDI2LDAsMCwwLAorICAgIDExNCw3MSwwLDAsMCw0MSwxLDExNCw3MiwwLDAsMCwxMTQsMTAsMCwwLAogICAgIDAsMTE0LDExLDAsMCwwLDIxOCwyNCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCiAgICAgMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LAotICAgIDI0NiwwLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxOCwxLDksCisgICAgMjI5LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxMCwxLDEwLDEsOCwKICAgICAxLDEyMiw1MCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLAogICAgIDEyMiwxMDEsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLAogICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsCi0gICAgOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDc5LAotICAgIDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsCi0gICAgNzksMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMTQsMTAxLDExMywxMTcsCi0gICAgMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDI0NCwwLDAsMCwxMTUsCi0gICAgNiwwLDAsMCwwLDIsMTgsNSwxMywxLDExNCw4NCwwLDAsMCw5OSwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsMCwwLDAsNDEsMiwxMTQsNzIsCisgICAgMCwwLDAsMTE0LDc2LDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwKKyAgICA3MiwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExNCwxMDEsMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMjI3LDAsMCwwLDExNSwKKyAgICA2LDAsMCwwLDAsMiwxMiw1LDEwLDEsMTE0LDc3LDAsMCwwLDk5LAogICAgIDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDgxLDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMjQsCi0gICAgMCwwLDEzMSwyLDAsMTI1LDIsMCwxMjQsMSwwLDExNiwxLDAsMTA2LDIsCi0gICAgMCwxMDcsNiwwLDExNCw2NywwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLAotICAgIDI1LDEyNSwzLDAsMTE2LDMsMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDIsMCwKLSAgICAxLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDI1LDgzLDExNiw0LDAsMTI0LAotICAgIDIsMCwxMzEsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTI4LDc2LDExMSwKLSAgICA5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTEwLDExNiwxMTEsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMzIsMTA1LDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAotICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKLSAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAotICAgIDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDQxLAotICAgIDUsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMjE4LDUsOTUsCi0gICAgMTAxLDEyMCwxMDEsOTksMjE4LDUsOTUsMTA4LDExMSw5NywxMDAsNDEsNCwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDc4LDAsMCwwLDIxOCw0LDExNSwxMTIsMTAxLDk5LDIxOCw2LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMCwxLDAsMCwxMTUsMTIsMCwwLDAsCi0gICAgMCw2LDE1LDEsMTUsMSwxMywxLDEzLDEsMTEsMiwxMTQsOTAsMCwwLAotICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMzUsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDYsMSwwLDAsMTE2LDAsMCwxMjQsMCwKLSAgICAwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEyNSwxLDAsMTE2LDEsMCwKLSAgICAxMjQsMSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsNzEsMCwxMjEsMTcsMCwxMjQsCi0gICAgMSwwLDEwNiwyLDAsMTI0LDAsMCwxMzEsMSwwLDgzLDg3LDExMCwxOCwwLAotICAgIDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNzAsMCwxLDEsMSw4OSwxMTAsMSwKLSAgICAwLDg4LDEyMSwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMCwKLSAgICAxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksCi0gICAgMTEwLDIzLDAsODgsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEyNywwLAotICAgIDExNiw2LDAsMTI0LDIsMCwxMzEsMSwwLDgzLDEyMSwxMywwLDEyNCwwLDAsCi0gICAgMTA2LDcsMCwxMjUsMywwLDg3LDExMCwyNCwwLDQsMTE2LDUsMCwxMDcsMTAsCi0gICAgMCwxMTQsMTY2LDAsMSwxLDEsMTAwLDMsMCwxMjUsMywwLDg5LDExMCwxLAotICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsOCwwLDEyNSw0LDAsODcsMTEwLAotICAgIDU5LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwyNDEsMCwxLDEsMSwxMjQsCi0gICAgMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTAwLDQsMCwxMDYsOSwKLSAgICAwLDEyNCwzLDAsMTMxLDEsMCw4MywxMDAsNSwwLDEwNiw5LDAsMTI0LDMsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsODMsODksMTEwLDE3LDAsODgsMTAwLDYsMCwKLSAgICAxMDYsOSwwLDEyNCwzLDAsMTI0LDQsMCwxMzEsMiwwLDgzLDEwMCwwLDAsCi0gICAgODMsNDEsNyw3OCwyMTgsMTAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwKLSAgICAyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDI1MCwxLDYzLAotICAgIDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsCi0gICAgMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLAotICAgIDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywKLSAgICAzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw2Miw0MSwxMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsOTIsMCwwLDAsMjE4LAotICAgIDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDIxOCw4LDk1LDk1LDExNSwxMTIsCi0gICAgMTAxLDk5LDk1LDk1LDIxOCwxNCw2NSwxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDIxOCwyMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLAotICAgIDExMiwxMTQsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTIsMTAxLDk5LDExNCwxLDAsMCwKLSAgICAwLDIxOCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwxMTQsNTAsMCwwLDAsCi0gICAgNDEsNSwxMTQsODksMCwwLDAsMjE4LDYsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsCi0gICAgODgsMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwyMTgsMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LAotICAgIDE2LDEsMCwwLDExNSw0NiwwLDAsMCwwLDIsMTgsMSwxNSw0LDMsCi0gICAgMSwxNywxLDEzLDEsNSwxLDMsMSwxMywxLDEzLDEsNSwyLDEyLAotICAgIDEsMTAsNCwzLDEsMTMsMSwxMywxLDExLDEsMywxLDEzLDEsMTMsCi0gICAgMSwxMiwxLDEzLDIsMjEsMiwxMTQsMTAxLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDUyLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDAsMywKLSAgICAwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDUsMCwxMDAsNiwwLAotICAgIDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsODMsNDEsOCwyMTgsMTcsOTUsMTA1LAotICAgIDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDk5LAotICAgIDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDI1LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKLSAgICAwLDAsMTI0LDEsMCwxMDYsMSwwLDEyNCwwLDAsOTUsMiwwLDEwMCwwLAotICAgIDAsODMsNDEsMSw3OCw0MSwzLDIxOCw3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNCw5NSwwLDAsMCwyMTgsNSw5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDExNCwxOSwKLSAgICAwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDU0LDEsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwwLDAsMTAwLAotICAgIDEsMCwxMjQsMCwwLDEwNiwwLDAsOTUsMSwwLDEyNCwwLDAsMTA2LDIsCi0gICAgMCwxMTYsMywwLDEwNiw0LDAsMTI0LDAsMCwxMDYsMCwwLDEwNiw1LDAsCi0gICAgNjAsMTAwLDAsMCw4Myw0MSwyLDc4LDg0LDQxLDYsMTE0LDEwNCwwLDAsMCwKLSAgICAyMTgsMTMsOTUsMTA1LDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDUsMTEwLDEwMywxMTQsCi0gICAgMTAzLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDE1LAotICAgIDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMywwLDAsMCw1OCwxLAotICAgIDAsMCwxMTUsNCwwLDAsMCwwLDQsMTIsMSwxMjIsMjcsOTUsMTA1LDExMCwKLSAgICAxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LAotICAgIDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsMTcsMCwwLDAsNzEsMCwwLDAsMTE1LDEyMSwwLAotICAgIDAsMCwxMjIsMTAxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsMTE2LDEsCi0gICAgMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCwxMjQsMSwwLDY4LDEzMSwxLAotICAgIDAsMTMxLDEsMCwxMTQsNzgsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsCi0gICAgMTI0LDIsMCwxMDYsNCwwLDYxLDg3LDExMywxMDAsMCw0LDExNiw1LDAsMTA3LAotICAgIDEwLDAsMTE0LDc0LDAsMSwxLDEsODksMTEzLDEwMCwwLDg4LDExMCwyMiwwLAotICAgIDExNiw2LDAsMTAwLDMsMCwxMjQsMiwwLDEwNiw0LDAsMTI0LDIsMCwxMDYsCi0gICAgNywwLDEzMSwzLDAsMSw4NywxMDAsMCwwLDEwMCw0LDAsMTI0LDAsMCwKLSAgICAxMDYsMCwwLDk1LDgsMCw4OCwxMDAsMCwwLDgzLDQxLDUsNzgsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsCi0gICAgMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwwLDAsOTMsMTcsMCwxMjUsMSwKLSAgICAwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOSwwLDg2LDEsMTEzLDMsMCwxMDAsCi0gICAgMCwwLDgzLDQxLDEsNzgsMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDI0LDAsCi0gICAgMCwwLDExNCwyNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsMjYsMCwwLDAsNjgsMSwwLDAsMTE1LAotICAgIDIsMCwwLDAsNiwwLDEyMiw0NSw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwKLSAgICAxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LAotICAgIDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwKLSAgICAxMDEsMTIwLDExMiwxMTQsNjIsMTIyLDE4LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMywzMywKLSAgICAxMTQsMTI1LDMyLDM1LDMyLDEyMywzMywxMTQsMTI1LDcwLDQxLDksMTE0LDEwNCwwLDAsCi0gICAgMCwxMTQsMjcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwKLSAgICAxMTQsMTUsMCwwLDAsMTE0LDI4LDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsCi0gICAgOTksMCwwLDAsMTE0LDEwNSwwLDAsMCw0MSwzLDExNCwxOSwwLDAsMCwKLSAgICAxMTQsMjksMCwwLDAsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMCwwLDAsMCw2NSwxLAotICAgIDAsMCwxMTUsMTgsMCwwLDAsMCwxLDMsMSw5LDEsMjUsMSwzLAotICAgIDEsMTcsMSwxMywxLDgsMiwyNiwyLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsCi0gICAgOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLAotICAgIDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwKLSAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDIwLDAsMCwwLDExNCwyMywwLDAsCi0gICAgMCwxMTQsMzAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMDIsMCwwLDAsNTIsCi0gICAgMSwwLDAsMTE1LDYsMCwwLDAsMTIsMiwxMiw0LDEyLDcsMTE0LDEwMiwKLSAgICAwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICA4LDAsMCwwLDY0LDAsMCwwLDExNSwxNzIsMCwwLDAsMTAxLDAsMCwKLSAgICA5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEwMCw0LDAsMTAwLDMsMCwxMDAsNSwwLDEwMCwzLAotICAgIDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDMsOTAsNCwwLDEwMCw4LDAsCi0gICAgMTAwLDksMCwxMzIsMCwwLDkwLDUsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsCi0gICAgMCwwLDkwLDYsMCwxMDEsNywwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLAotICAgIDAsMTMxLDEsMCw5MCw4LDAsMTAxLDgsMCwxMDYsOSwwLDEwMCwxNCwwLAotICAgIDEwMCwxMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsCi0gICAgMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsNywKLSAgICAwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMSwwLAotICAgIDEwMSwxMSwwLDEwNiw5LDAsMTAwLDE5LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsCi0gICAgMSwwLDkwLDExLDAsMTAwLDMsMCw4Myw0MSwyMCwyMTgsMTAsNzcsMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDk3LDIwOCw1LDAsMCw4NCwxMDQsMTAxLDMyLAotICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTExLAotICAgIDExNCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTcsMTE1LDEwMSwxMDAsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNjUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExNSwxMTIsCi0gICAgMTAxLDk5LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgMzIsOTcsOTgsMTExLDExNywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsMzIsMzIsNzAsMTExLDExNCwxMCwzMiwzMiwzMiwzMiwxMDAsOTcsMTE2LDk3LAotICAgIDMyLDk3LDExNSwxMTUsMTExLDk5LDEwNSw5NywxMTYsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDExMCw5OSwKLSAgICAxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ0LDMyLDExNywKLSAgICAxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwxMCwzMiwzMiwKLSAgICAzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LAotICAgIDExMCw5NywxMDksMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsOTcsOTgsMTE1LAotICAgIDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMDgsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLAotICAgIDExNCwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExOSwxMDQsMTAxLAotICAgIDExMCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk2LDMyLAotICAgIDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsCi0gICAgMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDQ2LAotICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLAotICAgIDEwMCwxMDEsMTE0LDEwNSwxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTA1LDExNSw5NSwKLSAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTYsMzIsMTAwLDEwMSwxMTYsMTAxLDExNCwxMDksMTA1LAotICAgIDExMCwxMDEsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiwKLSAgICA5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTExLDExNCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTAsMTExLDExNiw0NiwzMiwzMiw3OSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsOTksCi0gICAgMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw5NiwzMiwxMDUsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOCwKLSAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNywxMTUsMTAxLDEwMCwzMiw5OCwxMjEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwKLSAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTA1LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ2LDMyLAotICAgIDMyLDg3LDEwNCwxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDUsCi0gICAgMTE1LDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTE2LDQ0LDMyLDExMSwxMTQsMTA1LDEwMywxMDUsCi0gICAgMTEwLDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMDksOTcsMTE2LDk5LDEwNCw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw5NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAotICAgIDk2LDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwKLSAgICAzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMzQsMTExLDExNCwxMDUsMTAzLDEwNSwKLSAgICAxMTAsMzQsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTE1LDMyLDk3LDMyLDEwOCwxMTEsCi0gICAgOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDMyLDMyLDMyLDMyLDg3LDEwNCwxMDEsMTEwLAotICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDg0LDExNCwxMTcsMTAxLDQ0LDMyLDk2LAotICAgIDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCi0gICAgMTE3LDExNiwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMDEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk2LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsCi0gICAgMTA1LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwzMiw5NywxMTAsMTIxLDQ2LDMyLDMyLDczLDExNiwKLSAgICAxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwxMTUsCi0gICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDEwMCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICAxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LAotICAgIDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksCi0gICAgMTAxLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEwNSwxMDEsCi0gICAgMTE1LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLAotICAgIDExOSwxMDQsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMTUsCi0gICAgMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsMTE1LAotICAgIDEwMSwxMTYsNDQsMzIsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE1LAotICAgIDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDg0LDExNCwxMTcsCi0gICAgMTAxLDQ1LDQ1LDk3LDExMCwxMDAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTExLDExNiwxMDQsCi0gICAgMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODAsOTcsOTksCi0gICAgMTA3LDk3LDEwMywxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDQwLDEwOSwKLSAgICA5NywxMjEsNDEsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDEwLAotICAgIDMyLDMyLDMyLDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTEwLDExMSwxMTAsNDUsNzgsMTExLAotICAgIDExMCwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTAsMzIsOTYsMTE1LDExNyw5OCwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLAotICAgIDExOSwxMDUsMTA4LDEwOCwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsCi0gICAgMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMTIsOTcsCi0gICAgOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LDExMCwxMDgsCi0gICAgMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwzMiw0MCwxMTUsMTAxLDEwMSwzMiwxMDUsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LDk5LDQ2LDc3LDEwMSwxMTYsCi0gICAgOTcsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsCi0gICAgMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5Nyw5OCwKLSAgICA5OSw0Niw4MCw5NywxMTYsMTA0LDY5LDExMCwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDQxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTIxLAotICAgIDMyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSwzMiwxMDUsMTEwLDExNSwxMTYsCi0gICAgOTcsMTEwLDk5LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMjE4LDYsMTExLDExNCwKLSAgICAxMDUsMTAzLDEwNSwxMTAsNzgsMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE1LDExNiwKLSAgICA5NywxMTYsMTAxLDIxOCwxMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKLSAgICAzLDAsMCwwLDMsMCwwLDAsNiwwLDAsMCwyLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw3OSwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCi0gICAgMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTI0LDMsMCwxMjQsMCwKLSAgICAwLDk1LDIsMCwxMjQsNCwwLDEyNCwwLDAsOTUsMywwLDEyNCw1LDAsCi0gICAgMTE0LDQ4LDAsMTAzLDAsMCwxMTAsMywwLDEwMCwwLDAsMTI0LDAsMCw5NSwKLSAgICA0LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDUsMCwxMDAsMCwwLDEyNCwwLAotICAgIDAsOTUsNiwwLDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxNSwKLSAgICAwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsCi0gICAgMCwwLDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsCi0gICAgOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLAotICAgIDk1LDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSwKLSAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCw0MSw2LDExNCwxOSwwLDAsMCwxMTQsMTUsMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLDAsCi0gICAgMCwxMTQsMTA5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCwxMTYsMSwwLDAsMTE1LDE0LAotICAgIDAsMCwwLDAsMiw5LDEsOSwxLDksMSw5LDEsMjEsMyw5LAotICAgIDEsMTIyLDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwKLSAgICAxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQ3LDAsMCwwLAotICAgIDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMTAzLDIsCi0gICAgMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDMsMCwxMDAsMCwwLDEwNyw5LDAsCi0gICAgMTE0LDc2LDAsMTI0LDEsMCwxMDYsNCwwLDEwMCwzLDAsMTA2LDAsMCwxMjQsCi0gICAgMCwwLDEwNiwzLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDAsMCwxMDYsCi0gICAgNSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTE2LDAsMTI0LDEsMCwxMDYsNCwKLSAgICAwLDEwMCw0LDAsMTA2LDAsMCwxMjQsMCwwLDEwNiw1LDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDEsMTAwLDUsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDYsMCwKLSAgICAxMDYsNywwLDEwMCw2LDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSw3LDc4LDEyMiw5LDExMCw5NywxMDksMTAxLDYxLDEyMywzMywxMTQsCi0gICAgMTI1LDEyMiwxMSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDYxLDEyMywzMywxMTQsMTI1LDEyMiwxMSwKLSAgICAxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMjksMTE1LDExNyw5OCwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDYxLDEyMywxMjUsMTIyLDYsMTIzLDEyNSw0MCwxMjMsCi0gICAgMTI1LDQxLDEyMiwyLDQ0LDMyLDQxLDksMTE0LDUwLDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwyMTgsNiw5NywxMTIsCi0gICAgMTEyLDEwMSwxMTAsMTAwLDExNCwxMTAsMCwwLDAsMjE4LDksOTUsOTUsOTksMTA4LDk3LAotICAgIDExNSwxMTUsOTUsOTUsMTE0LDEsMCwwLDAsMjE4LDQsMTA2LDExMSwxMDUsMTEwLDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTIsMCwwLDAsMTI4LAotICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMTUsMSwyMSwxLDE1LDEsCi0gICAgMjUsMSwxNSwxLDEyLDEsMTMsMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTQ1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLAotICAgIDEyMSwxMDcsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywKLSAgICAyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEwNiwyLAotICAgIDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMywwLDEyNCwxLDAsCi0gICAgMTA2LDMsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTA2LAotICAgIDAsMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCwxMDYsNCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDUsMCwKLSAgICAxMjQsMSwwLDEwNiw1LDAsMTA3LDIsMCw4Myw4NywxMTAsMjIsMCw0LDExNiwKLSAgICA2LDAsMTA3LDEwLDAsMTE0LDE0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCi0gICAgMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDIsNzgsNzAsNDEsNywxMTQsMTEwLAotICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLAotICAgIDAsMCwyMTgsNiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwyMTgsMTIsMTA0LDk3LDExNSw5NSwKLSAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsOTYsMCwwLDAsNDEsMywxMTQsCi0gICAgMTksMCwwLDAsOTAsNSwxMTEsMTE2LDEwNCwxMDEsMTE0LDkwLDQsMTE1LDEwOSwxMTUsCi0gICAgMTA4LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAotICAgIDIxOCw2LDk1LDk1LDEwMSwxMTMsOTUsOTUsMTM4LDEsMCwwLDExNSwyMCwwLDAsCi0gICAgMCwwLDEsOSwxLDMsMSwxOCwxLDE4LDEsMTgsMSwxNSwxLDE4LAotICAgIDEsMjAsMSwxMywxLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsCi0gICAgOTksNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4NSwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw3OCwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDc4LDAsCi0gICAgMTI0LDAsMCwxMDYsMiwwLDExNCw3OCwwLDExNiwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw1NywwLDExNiw0LDAsMTMwLDEsMCwxMTYsMywwLDEwNiw1LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMCwwLDgzLDQxLDEsNzgsNDEsNiwxMTQsMTEyLDAsMCwKLSAgICAwLDExNCwxMDcsMCwwLDAsMTE0LDExMSwwLDAsMCwyMTgsMTksOTUsOTgsMTExLAotICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwKLSAgICAyMTgsMTksNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDkwLDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTAwLDQxLDEsMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMTYsMCwwLDAsMTUwLDEsMCwKLSAgICAwLDExNSwxMiwwLDAsMCwwLDIsMTUsMSwyNCwxLDEyLDEsNiwxLAotICAgIDIxLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsMCwwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwKLSAgICAxLDExNCwxMTIsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LDExNiwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsMTE2LDAsMCwwLDE1OSwxLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMzUsMCwxMjQsMCwwLDEwNiwxLDAsCi0gICAgMTA2LDIsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDMsMCwyNSw4MywxMjQsMCwKLSAgICAwLDEwNiwxLDAsODMsMTAwLDEsMCw4Myw0MSw0LDEyMiwzMiw4NCwxMDQsMTAxLAotICAgIDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDYsNzgsMjE4LDEsCi0gICAgNDYsMTE0LDMzLDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTUsMCwKLSAgICAwLDAsMjE4LDEwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDQxLDEsCi0gICAgMTE0LDE5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDIxOCw2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTYzLDEsMCwwLAotICAgIDExNSw2LDAsMCwwLDAsMywxNSwxLDIwLDIsMTIyLDE3LDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDgzLDQxLAotICAgIDEsNzgsNDEsMSwxMTQsMTExLDAsMCwwLDQxLDEsMTE0LDE5LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw2MiwwLDAsMCwxMTYsMCwxMjQsMSwxMjQsMCwxMzEsCisgICAgMiwxMjUsMiwxMjQsMSwxMTYsMSwxMDYsMiwxMDcsNiwxMTQsNTAsMTE2LDEsMTA2LAorICAgIDIsMTI0LDEsMjUsMCwxMjUsMywxMTYsMywxMjQsMiwxMjQsMywxMzEsMiwxLAorICAgIDAsMTE2LDEsMTA2LDIsMTI0LDEsMjUsMCw4MywwLDExNiw0LDEyNCwyLDEzMSwKKyAgICAxLDgzLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwxMjgsNzYsMTExLDk3LDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwKKyAgICAzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKKyAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwxMTUsCisgICAgMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwyMTgsMTYsCisgICAgMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMTE0LDE0LDAsMCwwLDIxOCw3LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwyMTgsNSwKKyAgICA5NSwxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LDExNCwyNiwKKyAgICAwLDAsMCwxMTQsNzEsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDYsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwyMzksMCwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDAsNiwxMCwxLDEwLDEsMTAsMSwxMCwxLDEwLDIsMTE0LDg0LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDM1LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyMTYsMCwwLDAsMTE2LDAsMTI0LDAsCisgICAgMTAwLDEsMTAwLDAsMTMxLDMsMTI1LDEsMTE2LDEsMTI0LDEsMTAwLDIsMTMxLDIsCisgICAgMTE0LDU0LDEyMSwxMCwxMjQsMSwxMDYsMiwxMjQsMCwxMzEsMSw4MywwLDQsMCwKKyAgICAxMTYsMywxMDcsMTAsMTE0LDUyLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsCisgICAgODgsMCwxMjEsMTAsMTI0LDAsMTA2LDQsMTI1LDIsODcsMCwxMTAsMjAsNCwwLAorICAgIDExNiw1LDEwNywxMCwxMTQsODQsMSwwLDEsMCwxLDAsODksMCwxMTAsMTgsCisgICAgODgsMCwxMjQsMiwxMDAsMCwxMDcsOSwxMTQsMTAyLDExNiw2LDEyNCwyLDEzMSwxLAorICAgIDgzLDAsMTIxLDEwLDEyNCwwLDEwNiw3LDEyNSwzLDg3LDAsMTEwLDI0LDQsMCwKKyAgICAxMTYsNSwxMDcsMTAsMTE0LDEzNiwxLDAsMSwwLDEsMCwxMDAsMywxMjUsMywKKyAgICA4OSwwLDExMCwyLDg4LDAsMTIxLDEwLDEyNCwwLDEwNiw4LDEyNSw0LDg3LDAsCisgICAgMTEwLDUwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDE5OCwxLDAsMSwwLDEsMCwKKyAgICAxMjQsMSwxMDAsMCwxMDcsOCwxMTQsMTgyLDEwMCw0LDEwNiw5LDEyNCwzLDEzMSwxLAorICAgIDgzLDAsMTAwLDUsMTA2LDksMTI0LDMsMTI0LDEsMTMxLDIsODMsMCw4OSwwLAorICAgIDExMCwxNCw4OCwwLDEwMCw2LDEwNiw5LDEyNCwzLDEyNCw0LDEzMSwyLDgzLDAsCisgICAgMTAwLDAsODMsMCw0MSw3LDc4LDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDk1LDk1LDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgMjUwLDEsNjMsMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsCisgICAgMTI1LDYyLDEyMiwyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwKKyAgICAzMiw0MCwxMjMsMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LAorICAgIDYyLDQxLDEwLDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw4NiwwLAorICAgIDAsMCwyMTgsOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMjE4LDgsOTUsCisgICAgOTUsMTE1LDExMiwxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCisgICAgMTE2LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LDIyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNCwxMDEsMTEyLDExNCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksMTE0LAorICAgIDEsMCwwLDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCwzOCwKKyAgICAwLDAsMCw0MSw1LDExNCw4MywwLDAsMCwyMTgsNiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDExNCw4MiwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDgsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDIxOCwxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsCisgICAgMTAxLDExMiwxMTQsMjU1LDAsMCwwLDExNSw0NiwwLDAsMCwwLDIsMTIsMSwKKyAgICAxMCw0LDIsMSwxMCwxLDE0LDEsNiwxLDIsMSwxMCwxLDE0LDEsCisgICAgNiwyLDgsMSw4LDQsMiwxLDEwLDEsMTQsMSwxMCwxLDIsMSwKKyAgICAxMCwxLDE0LDEsOCwxLDEwLDIsMTgsMiwxMTQsOTUsMCwwLDAsOTksCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICA2NCwwLDAsMCwxMTUsMzYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwKKyAgICAyLDEwMCwxLDEwMCwyLDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsCisgICAgNCwxMDAsNSwxMDAsNiwxMzIsMCw5MCw1LDEwMCw3LDgzLDAsNDEsOCwyMTgsCisgICAgMTcsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwKKyAgICAxMDgsMTIxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDE4LDAsMCwwLDEyNCwxLDEyNCwwLAorICAgIDk1LDAsMTI0LDEsMTA2LDEsMTI0LDAsOTUsMiwxMDAsMCw4MywwLDQxLDEsCisgICAgNzgsNDEsMywyMTgsNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsODksMCwwLAorICAgIDAsMjE4LDUsOTUsMTE1LDExMiwxMDEsOTksNDEsMiwxMTQsMjYsMCwwLDAsMTE0LAorICAgIDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwyNywwLDAsMCwzNywxLDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDEsNiwxLDEyMiwyNiw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsCisgICAgMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LAorICAgIDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDI4LDAsMCwwLDEwMCwxLDEyNCwwLDEwNiwKKyAgICAwLDk1LDEsMTI0LDAsMTA2LDIsMTE2LDMsMTA2LDQsMTI0LDAsMTA2LDAsMTA2LAorICAgIDUsNjAsMCwxMDAsMCw4MywwLDQxLDIsNzgsODQsNDEsNiwxMTQsOTgsMCwKKyAgICAwLDAsMjE4LDEzLDk1LDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTA1LDExMCwKKyAgICAxMDMsMTE0LDk3LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLDAsCisgICAgMTE0LDE1LDAsMCwwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw0OCwwLDAsMCwKKyAgICA0MSwxLDAsMCwxMTUsNCwwLDAsMCwwLDQsOCwxLDEyMiwyNyw5NSwKKyAgICAxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsCisgICAgNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsCisgICAgOTgsMCwwLDAsMTIyLDgyLDEyNCwwLDEwNiwwLDEyNSwyLDExNiwxLDEwMCwxLAorICAgIDEwMCwyLDEzMiwwLDEyNCwxLDY4LDAsMTMxLDEsMTMxLDEsMTE0LDY0LDEyMSwxNCwKKyAgICAxMTYsMiwxMDYsMywxMjQsMiwxMDYsNCw2MSwwLDg3LDAsMTEzLDgwLDQsMCwKKyAgICAxMTYsNSwxMDcsMTAsMTE0LDYwLDEsMCwxLDAsMSwwLDg5LDAsMTEzLDgwLAorICAgIDg4LDAsMTEwLDE2LDExNiw2LDEwMCwzLDEyNCwyLDEwNiw0LDEyNCwyLDEwNiw3LAorICAgIDEzMSwzLDEsMCw4NywwLDEwMCwwLDEwMCw0LDEyNCwwLDEwNiwwLDk1LDgsCisgICAgODgsMCwxMDAsMCw4MywwLDQxLDUsNzgsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwwLDAsMTE1LDIyLAorICAgIDAsMCwwLDEyNCwwLDkzLDE0LDEyNSwxLDEyNCwxLDEwMCwwLDEwNyw5LDg2LAorICAgIDAsMSwwLDExMywyLDEwMCwwLDgzLDAsNDEsMSw3OCwxMTQsMTAsMCwwLAorICAgIDAsNDEsMiw5MCwyLDQ2LDQ4LDkwLDMsOTcsMTE0LDEwMywxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyNTAsOSw2MCwxMDMsMTAxLAorICAgIDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNTEsMSwwLDAsMTE1LDIsMCwwLDAsNCwKKyAgICAwLDEyMiw0NSw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywKKyAgICAxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwKKyAgICAxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsCisgICAgMTIyLDE4LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMywzMywxMTQsMTI1LDMyLDM1LDMyLAorICAgIDEyMywzMywxMTQsMTI1LDcwLDQxLDksMTE0LDk4LDAsMCwwLDIxOCwzLDk3LDExMCwKKyAgICAxMjEsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsMTUsMCwwLDAsCisgICAgMTE0LDU0LDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LAorICAgIDk5LDAsMCwwLDQxLDMsMTE0LDI2LDAsMCwwLDExNCw0OSwwLDAsMCwKKyAgICAxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCisgICAgMTEsMCwwLDAsMTE0LDUwLDAsMCwwLDQ4LDEsMCwwLDExNSwxOCwwLAorICAgIDAsMCwwLDEsMiwxLDYsMSwxOCwxLDIsMSwxNCwxLDE0LDEsCisgICAgOCwyLDIwLDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsCisgICAgOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsCisgICAgNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLAorICAgIDAsMCwxMTQsMjcsMCwwLDAsMTE0LDQ4LDAsMCwwLDExNCw1MCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDk2LDAsMCwwLDM1LDEsMCwwLDExNSw2LAorICAgIDAsMCwwLDgsMiw4LDQsOCw3LDExNCw5NiwwLDAsMCw5OSwwLAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDY0LAorICAgIDAsMCwwLDExNSwxMTQsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLAorICAgIDEwMCwxLDkwLDMsMTAwLDIsMTAwLDIsMTAwLDIsMTAwLDMsMTU2LDMsMTAwLDQsCisgICAgMTAwLDUsMTMyLDIsOTAsNCwxMDAsNiwxMDAsNywxMzIsMCw5MCw1LDEwMCw4LAorICAgIDEwMCw5LDEzMiwwLDkwLDYsMTAxLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCwxMzEsMSwKKyAgICA5MCw4LDEwMSw4LDEwNiw5LDEwMCwxMiwxMDAsMTEsMTMyLDAsMTMxLDEsOTAsOCwKKyAgICAxMDEsNywxMDAsMTMsMTAwLDE0LDEzMiwwLDEzMSwxLDkwLDEwLDEwMSw3LDEwMCwxNSwKKyAgICAxMDAsMTYsMTMyLDAsMTMxLDEsOTAsMTEsMTAxLDExLDEwNiw5LDEwMCwxNywxMDAsMTYsCisgICAgMTMyLDAsMTMxLDEsOTAsMTEsMTAwLDIsODMsMCw0MSwxOCwyMTgsMTAsNzcsMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDk3LDIwOCw1LDAsMCw4NCwxMDQsMTAxLAorICAgIDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDIsCisgICAgMTExLDExNCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwxMDMsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsNjUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExNSwKKyAgICAxMTIsMTAxLDk5LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsOTcsOTgsMTExLDExNywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDYsMzIsMzIsNzAsMTExLDExNCwxMCwzMiwzMiwzMiwzMiwxMDAsOTcsMTE2LAorICAgIDk3LDMyLDk3LDExNSwxMTUsMTExLDk5LDEwNSw5NywxMTYsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwKKyAgICAxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LDExMCwKKyAgICA5OSwxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDQ0LDMyLAorICAgIDExNywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDk2LDExMCw5NywxMDksMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsOTcsOTgsCisgICAgMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExOSwxMDQsCisgICAgMTAxLDExMCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk2LAorICAgIDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwKKyAgICAxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwxMDUsMTEwLAorICAgIDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LAorICAgIDMyLDEwMCwxMDEsMTE0LDEwNSwxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTA1LDExNSwKKyAgICA5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTYsMzIsMTAwLDEwMSwxMTYsMTAxLDExNCwxMDksCisgICAgMTA1LDExMCwxMDEsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwKKyAgICAzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTExLDExNCwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTAsMTExLDExNiw0NiwzMiwzMiw3OSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTAyLDEwOCwxMDEsCisgICAgOTksMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw5NiwzMiwKKyAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLAorICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNywxMTUsMTAxLDEwMCwzMiw5OCwxMjEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTE0LDExMSwxMDksCisgICAgMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTA1LAorICAgIDEwMiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTA1LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ2LAorICAgIDMyLDMyLDg3LDEwNCwxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwKKyAgICAxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTE2LDQ0LDMyLDExMSwxMTQsMTA1LDEwMywKKyAgICAxMDUsMTEwLDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMDksOTcsMTE2LDk5LDEwNCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw5NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDk2LDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDExNSwzMiwxMTYsMTA0LDk3LAorICAgIDExNiwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMzQsMTExLDExNCwxMDUsMTAzLAorICAgIDEwNSwxMTAsMzQsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTE1LDMyLDk3LDMyLDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDMyLDMyLDMyLDMyLDg3LDEwNCwxMDEsCisgICAgMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDg0LDExNCwxMTcsMTAxLDQ0LDMyLAorICAgIDk2LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsCisgICAgOTgsMTE3LDExNiwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMDEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDk2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwzMiw5NywxMTAsMTIxLDQ2LDMyLDMyLDczLAorICAgIDExNiwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwKKyAgICAxMTUsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDEwMCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMTE1LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsCisgICAgOTksMTAxLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEwNSwKKyAgICAxMDEsMTE1LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LAorICAgIDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsCisgICAgMTE1LDEwMSwxMTYsNDQsMzIsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsCisgICAgMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDg0LDExNCwKKyAgICAxMTcsMTAxLDQ1LDQ1LDk3LDExMCwxMDAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTExLDExNiwKKyAgICAxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODAsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwKKyAgICAxMjEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LDMyLDQwLAorICAgIDEwOSw5NywxMjEsNDEsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExNyw5OCwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDEwLDMyLDMyLDMyLDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTEwLDExMSwxMTAsNDUsNzgsCisgICAgMTExLDExMCwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTAsMzIsOTYsMTE1LDExNywKKyAgICA5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LAorICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc5LDExMCwKKyAgICAxMDgsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwzMiw0MCwxMTUsMTAxLDEwMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LDk5LDQ2LDc3LDEwMSwKKyAgICAxMTYsOTcsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsCisgICAgMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NywKKyAgICA5OCw5OSw0Niw4MCw5NywxMTYsMTA0LDY5LDExMCwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsCisgICAgMTIxLDMyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsOTcsMTEwLDk5LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsMywKKyAgICAyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA5NSwxMTUsMTE2LDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDk5LDMsMCwwLDAsMywwLDAsMCw2LDAsMCwwLDIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU0LDAsMCwwLDEyNCwxLDEyNCwwLAorICAgIDk1LDAsMTI0LDIsMTI0LDAsOTUsMSwxMjQsMywxMjQsMCw5NSwyLDEyNCw0LAorICAgIDEyNCwwLDk1LDMsMTI0LDUsMTE0LDMyLDEwMywwLDExMCwyLDEwMCwwLDEyNCwwLAorICAgIDk1LDQsMTAwLDEsMTI0LDAsOTUsNSwxMDAsMCwxMjQsMCw5NSw2LDEwMCwwLAorICAgIDgzLDAsNDEsMiw3OCw3MCw0MSw3LDExNCwxNSwwLDAsMCwxMTQsOTMsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA0LDAsMCwwLDIxOCwyNiwxMTUsMTE3LAorICAgIDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLDk1LDExNSwxMDEsMTE2LDk1LDEwMiwKKyAgICAxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwKKyAgICA0MSw2LDExNCwyNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDkzLDAsMCwKKyAgICAwLDExNCwxMDMsMCwwLDAsMTE0LDEwNCwwLDAsMCwxMTQsMTA1LDAsMCwwLAogICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKLSAgICAxMTcsMCwwLDAsMTcxLDEsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsCi0gICAgMjMsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDEwNCw5NywxMTUsOTUsCi0gICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTksMCwKLSAgICAwLDAsMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI0LDAsMCw5NSwxLAotICAgIDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsOTgsMTExLDExMSwxMDgsCi0gICAgMTE0LDExMSwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwyMTgsNSwxMTgsOTcsCi0gICAgMTA4LDExNywxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKLSAgICAwLDAsMTE0LDExNywwLDAsMCwxNzUsMSwwLDAsMTE1LDIsMCwwLDAsCi0gICAgMCwyLDQxLDEyLDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLAotICAgIDAsMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsNTIsMCwKLSAgICAwLDAsMTE0LDExOCwwLDAsMCwyMTgsOCwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwxMTYsCi0gICAgMTIxLDExNCwxMTYsMCwwLDAsMjE4LDYsMTE1LDEwMSwxMTYsMTE2LDEwMSwxMTQsMTE0LDEyMywKLSAgICAwLDAsMCwxMTQsMTE3LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTA2LDAsMCwKLSAgICAwLDc5LDEsMCwwLDExNSwyMCwwLDAsMCwxMiwzNSw2LDIsMTUsMSwKLSAgICAxNSwxMSwxMiwxMCwxMiwxMiwxOCw5LDIxLDQsMTgsOCwxOCw0LDExNCwxMDYsCi0gICAgMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA5LDAsMCwwLDk5LDIsMCwKLSAgICAwLDAsMiwwLDAsMCw2LDAsMCwwLDE1LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwyMTcsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEwMCwxLDAsCi0gICAgMTMxLDIsMCwxMTQsMTEwLDAsMTE2LDEsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LAotICAgIDMzLDAsMTE2LDIsMCwxMzAsMSwwLDExNiwxLDAsMTA2LDMsMCwxMjUsNCwKLSAgICAwLDEyNCwzLDAsMTAwLDIsMCwxMDcsOCwwLDExNCw3MCwwLDEyNCw0LDAsCi0gICAgMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTMxLDEsMSw4MywxMjQsMywwLAotICAgIDExNCw4MiwwLDEwMywwLDAsMTEwLDMsMCwxMDAsMiwwLDEyNSw1LDAsMTI0LAotICAgIDQsMCwxMjQsMCwwLDEwMCwzLDAsMTI0LDEsMCwxMDAsNCwwLDEyNCw1LAotICAgIDAsMTMxLDEsMiw4MywxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTkyLAotICAgIDAsMTE2LDAsMCwxMjQsMSwwLDEwMCw1LDAsMTMxLDIsMCwxMTQsMTg2LDAsCi0gICAgMTIxLDE5LDAsMTI0LDEsMCwxMDYsNCwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsCi0gICAgMywwLDg3LDExMywxOTIsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE4MiwwLAotICAgIDEsMSwxLDEwMCwyLDAsMTI1LDMsMCw4OSwxMTMsMTkyLDAsODgsMTEwLDYsCi0gICAgMCwxMDAsNiwwLDEyNSwzLDAsMTE2LDYsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgMTAwLDcsMCwxMjQsMiwwLDEwMCw1LDAsMTI0LDMsMCwxMzEsMiwyLDgzLAotICAgIDQxLDgsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLAotICAgIDExMCwzMiwxMTgsOTcsMTE0LDEwNSwxMTEsMTE3LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5MCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsCi0gICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsMTE0LDk5LDAsMCwwLDExNCwxMTAsMCwKLSAgICAwLDAsMTE0LDEwOSwwLDAsMCw3MCwxMTQsMTA3LDAsMCwwLDQxLDcsMTE0LAotICAgIDQsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIwLDAsMCwwLDIxOCwyMywKLSAgICAxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwKLSAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMDksMCwwLDAsMTE0LDc3LDAsMCwKLSAgICAwLDExNCwxMDYsMCwwLDAsNDEsNiwxMTQsMTUsMCwwLDAsMTE0LDk5LDAsCi0gICAgMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsMTI4LDAsMCwKLSAgICAwLDkwLDYsMTE1LDEwMSw5NywxMTQsOTksMTA0LDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4NSwwLDAsMCwxODAsMSwwLAotICAgIDAsMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDEyLDEsNiwxLDksMiwKLSAgICAxMiwxLDE2LDEsMTgsMSwxNSwxLDcsMiwxMiwxLDE1LDEsMywxLAotICAgIDE5LDEsMTMsMSwxNCwzLDYsMiwxMTQsODUsMCwwLDAsOTksMywwLAotICAgIDAsMCwwLDAsMCwwLDgsMCwwLDAsNTMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDExOCwxLDAsMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTI1LDMsMCw4NywxMTAsMTgsMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDMzLAotICAgIDAsMSwxLDEsODksMTEwLDE3LDAsODgsMTI0LDMsMCwxMDAsMCwwLDEwNywKLSAgICA5LDAsMTE0LDUwLDAsMTI0LDMsMCw4MywxMjQsMCwwLDEwNiwyLDAsMTI1LAotICAgIDQsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTA1LDAsMTIxLDEzLAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsCi0gICAgMSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LAotICAgIDEyMSwxMywwLDEyNCwwLDAsMTA2LDQsMCwxMjUsNSwwLDg3LDExMCwyNCwwLAotICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMTQ0LDAsMSwxLDEsMTAwLDAsMCwKLSAgICAxMjUsNSwwLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMDAsMCwwLDEwNyw4LAotICAgIDAsMTE0LDIxOCwwLDEyNCw1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMTIsMCwKLSAgICAxMjEsMTMsMCwxMjQsMSwwLDEwNiw1LDAsMTI1LDIsMCw4NywxMTMsMjE4LDAsCi0gICAgNCwxMTYsMSwwLDEwNywxMCwwLDExNCwyMDgsMCwxLDEsMSwxMDAsMCwwLAotICAgIDEyNSwyLDAsODksMTEzLDIxOCwwLDg4LDExMCw2LDAsMTI0LDUsMCwxMjUsMiwKLSAgICAwLDEyMSwxMywwLDEyNCwwLDAsMTA2LDYsMCwxMjUsNiwwLDg3LDExMCwyNCwKLSAgICAwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMSwxLDEsMSwxLDEwMCwwLAotICAgIDAsMTI1LDYsMCw4OSwxMTAsMSwwLDg4LDEyMSwxOSwwLDExNiw3LDAsMTI0LAotICAgIDAsMCwxMDYsOCwwLDEzMSwxLDAsMTI1LDcsMCw4NywxMTAsMjQsMCw0LAotICAgIDExNiwxLDAsMTA3LDEwLDAsMTE0LDQ3LDEsMSwxLDEsMTAwLDAsMCwxMjUsCi0gICAgNywwLDg5LDExMCwxLDAsODgsMTE2LDksMCwxMjQsNCwwLDEyNCwxLDAsCi0gICAgMTAwLDEsMCwxMjQsMiwwLDEzMSwyLDEsMTI1LDMsMCwxMjQsNSwwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsODcsMSwxMDAsMiwwLDExMCwzLDAsMTAwLDMsCi0gICAgMCwxMjQsMywwLDk1LDEwLDAsMTI0LDYsMCwxMjQsMywwLDk1LDExLDAsCi0gICAgMTI0LDcsMCwxMjQsMywwLDk1LDEyLDAsMTI0LDMsMCw4Myw0MSw0LDc4LAotICAgIDExNCwxMDcsMCwwLDAsNzAsODQsNDEsMTMsMTE0LDk1LDAsMCwwLDExNCw5NiwKLSAgICAwLDAsMCwxMTQsMSwwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDk4LDAsCi0gICAgMCwwLDkwLDcsOTUsNzksODIsNzMsNzEsNzMsNzgsMjE4LDEwLDk1LDk1LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDIxOCw0LDEwOCwxMDUsMTE1LDExNiwyMTgsOCw5NSwKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTQsMTA2LDAsMCwwLDExNCwxMTEsMCwwLAotICAgIDAsMTE0LDExNiwwLDAsMCwxMTQsMTEwLDAsMCwwLDQxLDgsMTE0LDg5LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCw4OCwwLDAsCi0gICAgMCwxMTQsMTUsMCwwLDAsOTAsOCwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwKLSAgICAxMTQsMTE2LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDExNSwxMTIsMTAxLDk5LAotICAgIDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMDksMSwwLDAsCi0gICAgMTE1LDcyLDAsMCwwLDAsMiwzLDEsMTMsMSwxMywxLDUsMiwxMiwKLSAgICAxLDQsMiw5LDEsMTIsMSwzLDEsMTMsMSwxMywyLDUsMSwzLAotICAgIDEsMTMsMSwxMywxLDExLDEsMTIsMSwxMiwxLDMsMSwxMywxLDEzLAotICAgIDEsMTQsMiw2LDEsMywxLDEzLDEsMTMsMSwxMSwxLDMsMSwxOSwKLSAgICAxLDEzLDEsMTEsMiwyMSwxLDI3LDEsOSwxLDksMSwxMTQsMTMyLDAsCi0gICAgMCwwLDIxOCw4LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsNzAsOTksMiwwLAotICAgIDAsMCwxLDAsMCwwLDUsMCwwLDAsNTksMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDU0LDIsMCwwLDEyNCwyLDAsMTE1LDMwLDAsMTE2LDAsMCwKLSAgICAxMjQsMSwwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsNjcsMCwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsCi0gICAgMCw5NSwyLDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwKLSAgICA2NiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsOTcsMCwKLSAgICAxMTYsMCwwLDEyNCwxLDAsMTAwLDIsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDMsCi0gICAgMCwxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTg3LDAsMTI0LDAsMCwKLSAgICAxMDYsNSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTg3LDAsMTE2LDYsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDE1MSwwLDExNiw3LDAsMTMwLDEsMCwxMTYsNiwKLSAgICAwLDEwNiw4LDAsMTI1LDQsMCwxMjQsNCwwLDEwNiw5LDAsMTI0LDQsMCwKLSAgICAxMzEsMSwwLDEyNSwzLDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwzLDAsOTUsCi0gICAgMTAsMCwxMjEsMTMsMCwxMjQsMywwLDEyNCwxLDAsOTUsMTEsMCw4NywxMTAsCi0gICAgMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDIyMCwwLDEsMSwxLDg5LAotICAgIDExMCwxLDAsODgsMTI0LDIsMCwxMTUsMjUxLDAsMTE2LDAsMCwxMjQsMSwwLAotICAgIDEwMCwzLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCi0gICAgMzIsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNCwxLDAsOTUsMTMsCi0gICAgMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDMxLDEsMSwKLSAgICAxLDEsODksMTEwLDEsMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEyNCwxLDAsCi0gICAgOTUsMTQsMCw4NywxMTAsMTgsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDY1LAotICAgIDEsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSw5NiwxLDExNiwKLSAgICAwLDAsMTI0LDEsMCwxMDAsNCwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDE0OCwxLDEyNCwwLDAsMTA2LDUsMCwxMDAsMCwwLAotICAgIDEwNyw5LDAsMTE0LDE0OCwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDUsMCwxMjQsCi0gICAgMSwwLDk1LDE1LDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLAotICAgIDExNCwxNDcsMSwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwwLDAsMTA2LDE2LAotICAgIDAsMTE0LDUwLDIsMTI0LDIsMCwxMTUsMTg3LDEsMTE2LDAsMCwxMjQsMSwwLAotICAgIDEwMCw1LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCi0gICAgMjI0LDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTcsMCwxMjQsMSwwLDk1LDE4LAotICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwyMjMsMSwxLAotICAgIDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDI1NCwxLDExNiwwLDAsCi0gICAgMTI0LDEsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDUwLDIsMTI0LDAsMCwxMDYsMTksMCwxMDAsMCwwLDEwNyw5LAotICAgIDAsMTE0LDUwLDIsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTksMCwxMjQsMSwwLAotICAgIDk1LDIwLDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw0OSwKLSAgICAyLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDEsMCw4Myw0MSw3LDc4LAotICAgIDExNCwxLDAsMCwwLDExNCw5MSwwLDAsMCwyMTgsMTEsOTUsOTUsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNCwxMzEsMCwwLDAsMTE0LDk4LDAsMCwKLSAgICAwLDExNCwxMjksMCwwLDAsNDEsMjEsMTE0LDYsMCwwLDAsMTE0LDE1LDAsCi0gICAgMCwwLDExNCwxLDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsOTksMCwwLAotICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMjAsMCwwLDAsCi0gICAgMjE4LDE2LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDIxOCw3LDk1LDk1LDExMCwxMDEsMTE5LDk1LDk1LDkwLDUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsMTE0LDkxLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDEzNCwwLDAsCi0gICAgMCwxMTQsOTUsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsMTE3LDAsMCwwLAotICAgIDExNCwxMDcsMCwwLDAsMTE0LDk4LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LAotICAgIDEyOSwwLDAsMCw0MSw1LDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsCi0gICAgMTE0LDEzMywwLDAsMCwxMTQsOTksMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTgsCi0gICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwxMTYsCi0gICAgMTE0LDExNSwyNTQsMSwwLDAsMTE1LDkyLDAsMCwwLDAsNCwzMCwxLDMsCi0gICAgMSwxNiwxLDEzLDEsNSwyLDMwLDEsOSwxLDEyLDIsMTUsMSwxMiwKLSAgICAxLDYsMSw5LDIsMTUsMSwxMiwxLDMsMSwxMywxLDEzLDEsNSwKLSAgICAyLDMwLDEsMywxLDE2LDEsMTMsMSw1LDIsMywxLDEzLDEsMTMsCi0gICAgMSw1LDIsMzAsMSwxNSwxLDMsMSwxNiwxLDEzLDEsNSwyLDksCi0gICAgMSwzMCwxLDMsMSwxNiwxLDEzLDEsNSwyLDMwLDEsMTUsMSwzLAotICAgIDEsMTYsMSwxMywxLDUsMSwxMTQsMTM3LDAsMCwwLDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwyLDAsMCwwLDUsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDEyOSwwLDAsMCwxMDAsMSwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMCwwLDEwNiwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw0NSwwLDEyNCwwLAotICAgIDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLAotICAgIDExMCw0MCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLAotICAgIDIsMCwxMTQsODUsMCwxMTYsMywwLDEwNiw0LDAsMTAwLDQsMCwxMTYsNSwKLSAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMiwxLDEsMTI0LDEsMCwxMDAsMSwKLSAgICAwLDEwNyw4LDAsMTE0LDExMiwwLDExNiw2LDAsMTI0LDAsMCwxMDYsNywwLAotICAgIDEzMSwxLDAsMTI1LDEsMCwxMTYsOCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMiwwLDEsMTI0LDEsMCw4Myw0MSw3LDEyMiw0Myw2NywxMTQsMTAxLDk3LDExNiwKLSAgICAxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsCi0gICAgMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwxMDEsMTAwLAotICAgIDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDEyMiw4NywxMTUsMTE2LDk3LDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTA1LDExMCwKLSAgICAzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDUxLDQ2LDU0LDQ0LDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsMTE1LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTAxLDEyMCwKLSAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA5LDExNywxMTUsMTE2LAotICAgIDMyLDk3LDEwOCwxMTUsMTExLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDMyLDk5LDExNCwxMDEsCi0gICAgOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSw5MCwxMCwxMTUsMTE2LAotICAgIDk3LDk5LDEwNywxMDgsMTAxLDExOCwxMDEsMTA4LDIzMywyLDAsMCwwLDQxLDksMTE0LAotICAgIDQsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMzgsMCwwLDAsMjE4LDksCi0gICAgOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwKLSAgICAxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDg3LDk3LDExNCwxMTAsCi0gICAgMTA1LDExMCwxMDMsMTE0LDE2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTM3LDAsCi0gICAgMCwwLDQxLDIsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTIsMTAxLDk5LDU4LAotICAgIDIsMCwwLDExNSwyMCwwLDAsMCwwLDMsNiwxLDE4LDMsMjEsMSwKLSAgICAxOCwxLDksMiwxMywxLDEyLDEsMTUsMSwxMywxLDExNCwxNDQsMCwwLAotICAgIDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTQ5LDAsMCwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDIxLDAsMTAwLDIsMCwxMTAsNiwwLAotICAgIDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsCi0gICAgMSwwLDEwNyw4LDAsMTE0LDk1LDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsNzMsMCwxMDAsMywwLDEwNiwzLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDgzLDEwMCw0LDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLDAsCi0gICAgMTA2LDIsMCwxMzEsMiwwLDgzLDExMCw1MCwwLDEyNCwwLDAsMTA2LDQsMCwKLSAgICAxMTQsMTIzLDAsMTAwLDUsMCwxMDYsMywwLDEyNCwxLDAsMTI0LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwyLDAsODMsMTAwLDYsMCwxMDYsMywwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDIsMCw4MywxMDAsMSwwLDgzLAotICAgIDQxLDcsMTIyLDM4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LAotICAgIDEwMSwxMTIsMTE0LDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTE0LDkzLDAsMCwwLAotICAgIDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsCi0gICAgMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLAotICAgIDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywKLSAgICAzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMTgsCi0gICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDEyNSwKLSAgICA0MSw2Miw0MSw1LDExNCwxNSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCw5OSwKLSAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDExNywwLDAsMCw0MSwyLDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDk3LDAsMCwwLDc2LDIsMCwKLSAgICAwLDExNSwxNiwwLDAsMCwwLDMsMzAsMSwxNSwxLDE1LDEsMTMsMiwKLSAgICAyMiwyLDksMSwxOSwyLDExNCw5NywwLDAsMCw5OSwyLDAsMCwwLAotICAgIDAsMCwwLDAsNCwwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMjUzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMiwwLDExNiwxLAotICAgIDAsMTA2LDIsMCwxMzEsMCwwLDEsMTE2LDMsMCwxMjQsMiwwLDEzMSwxLAotICAgIDAsMTQzLDIwOCwwLDEsMTE2LDQsMCwxMDYsNSwwLDEwNiw2LDAsMTI0LDIsCi0gICAgMCwxMzEsMSwwLDEyNCwxLDAsMTA3LDksMCwxMTQsODksMCwxMDAsMSwwLAotICAgIDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsCi0gICAgMywwLDEwMCwyLDAsMTI0LDIsMCwxMzEsMSwxLDEzMCwxLDAsMTI0LDAsCi0gICAgMCwxMDYsOSwwLDEwMCwzLDAsMTA3LDgsMCwxMTQsMTYzLDAsMTI0LDAsMCwKLSAgICAxMDYsMTAsMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE0MCwwLDExNiw4LDAsMTAwLAotICAgIDQsMCwxMDAsMiwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMSwxLDEzMCwxLAotICAgIDAsMTE2LDExLDAsMTI0LDAsMCwxMjQsMSwwLDEwMCw1LDAsMTAwLDYsMCwKLSAgICAxMzEsMiwxLDEsMTI0LDEsMCw4MywxMTYsMTEsMCwxMjQsMCwwLDEyNCwxLAotICAgIDAsMTAwLDUsMCwxMDAsNiwwLDEzMSwyLDEsMSwxMTYsMTIsMCwxMjQsMCwKLSAgICAwLDEwNiw5LDAsMTAwLDcsMCwxMzEsMiwwLDExNSwyMTksMCwxMjQsMCwwLAotICAgIDEwNiw5LDAsMTA2LDEzLDAsMTI0LDIsMCwxMzEsMSwwLDEsMTEwLDE2LDAsCi0gICAgMTI0LDAsMCwxMDYsOSwwLDEwNiwxNCwwLDEyNCwxLDAsMTMxLDEsMCwxLAotICAgIDg3LDEwMCwzLDAsODEsODIsODgsMTE2LDQsMCwxMDYsNSwwLDEyNCwyLDAsCi0gICAgMjUsODMsNDEsOCwxMjIsNTEsNjksMTIwLDEwMSw5OSwxMTcsMTE2LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiwxMDUsMTEwLDMyLDk3LDExMCwzMiwxMDEsMTIwLDEwNSwKLSAgICAxMTUsMTE2LDEwNSwxMTAsMTAzLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0NiwxMjIsMzAsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwxMTUsMTIxLAotICAgIDExNSw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE0LDE1LDAsMCwwLDc4LDEyMiwKLSAgICAxNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsCi0gICAgMTMzLDAsMCwwLDg0LDExNCwxMzksMCwwLDAsNDEsMTUsMTE0LDE1LDAsMCwKLSAgICAwLDExNCw1NywwLDAsMCwyMTgsMTIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwKLSAgICAxMDgsMTExLDk5LDEwNywxMTQsNTQsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwKLSAgICAwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw3NywwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTM3LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDIxOCwxMSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsMTM5LDAsMCwwLDQxLDQsMTE0LDg4LDAsMCwwLDExNCwKLSAgICA4OSwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDMsMTA5LDExNSwxMDMsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg2LDAsCi0gICAgMCwwLDkzLDIsMCwwLDExNSwzMiwwLDAsMCwwLDIsOSwxLDEwLAotICAgIDEsMTMsMSwyNCwxLDE1LDEsMTgsMSwxNSwxLDE1LDEsMjEsMiwxOSwKLSAgICAxLDQsMSwxOSwxLDE4LDQsMTksMiwyMywxLDExNCw4NiwwLDAsMCwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyNywwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMywxLDAsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTA2LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxLDExNiwzLDAsCi0gICAgMTA2LDQsMCwxMjQsMCwwLDEwNiwyLDAsMjUsMTI1LDEsMCwxMTYsNSwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw5NiwwLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwKLSAgICAwLDk1LDYsMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LAotICAgIDk1LDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMTYsNSwwLDEyNCwxLDAsCi0gICAgMTAwLDIsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwKLSAgICAxOTcsMCwxMjEsNTYsMCwxMjQsMSwwLDEwNiw4LDAsMTI0LDEsMCw5NSw5LAotICAgIDAsMTE2LDEwLDAsMTI0LDEsMCwxMDAsMywwLDEzMSwyLDAsMTE1LDE3NSwwLAotICAgIDEyNCwwLDAsMTA2LDIsMCwxMDYsMTEsMCwxMDAsNCwwLDEzMSwxLDAsMTAwLAotICAgIDUsMCwyNSwxMjQsMSwwLDk1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LAotICAgIDAsMTA3LDEwLDAsMTE0LDE5NiwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LAotICAgIDUsMCwxMjQsMSwwLDEwMCw2LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMjU1LDAsMTIxLDEzLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDk1LDEyLDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwyNTQsCi0gICAgMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsODMsNDEsNyw3OCwKLSAgICAxMTQsOTEsMCwwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTMxLDAsMCwwLDExNCwKLSAgICAxMjEsMCwwLDAsMTE0LDMzLDAsMCwwLDExNCw5NSwwLDAsMCw0MSwxMywKLSAgICAxMTQsOTksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LAotICAgIDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsOTEsCi0gICAgMCwwLDAsMTE0LDk2LDAsMCwwLDExNCwxLDAsMCwwLDExNCwxMzQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDEyMiwwLDAsMCwxMTQsOTUsMCwwLAotICAgIDAsNDEsMiwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsOTUsOTksMTExLDEwOSwKLSAgICAxMTIsOTcsMTE2LDEwNSw5OCwxMDgsMTAxLDExOCwyLDAsMCwxMTUsNDAsMCwwLDAsCi0gICAgMCw0LDE5LDIsMTYsMSwyNCwxLDMsMSwxNiwxLDEzLDEsNSwxLAotICAgIDI0LDEsMyw0LDEyLDEsMTUsMSwyOSwxLDEzLDEsNSwxLDI0LDEsCi0gICAgMywxLDEzLDEsMTMsMSw1LDEsMTE0LDE0OCwwLDAsMCw5OSwxLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMTU5LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLAotICAgIDEwNyw5LDAsMTE0LDQzLDAsMTE2LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLAotICAgIDEsMCwxMzEsMiwwLDExNSw0MywwLDExNiwyLDAsMTI0LDAsMCwxMzEsMSwKLSAgICAwLDgzLDExNiwzLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTE2LDQsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMTQzLDc1LDAsMSwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMjIsMCwxMjQsMCwwLDEwNiw1LDAsCi0gICAgMTAwLDAsMCwxMDcsOCwwLDExNCwxMzgsMCwxMTYsNiwwLDEwMCwyLDAsMTAwLAotICAgIDMsMCwxMjQsMCwwLDEwNiw3LDAsMTMxLDEsMSwxMzAsMSwwLDExMCwxNiwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwKLSAgICAxLDg3LDEwMCwwLDAsODEsODIsODgsMTE2LDksMCwxMDYsMTAsMCwxMjQsMCwKLSAgICAwLDEwNiw3LDAsMjUsODMsNDEsNCw3OCwxMTQsMTM5LDAsMCwwLDEyMiwxNCwKLSAgICAxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMTUsCi0gICAgMCwwLDAsNDEsMTEsMTE0LDk5LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICAxNDgsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTM5LDAsCi0gICAgMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsNDEsMiwxMTQsODgsCi0gICAgMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxNCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsCi0gICAgMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTQ3LDIsMCwwLDExNSwyMCwwLDAsMCwKLSAgICAwLDIsMTUsMiwxOCwxLDEwLDIsMTIsMSwxMywxLDE1LDEsMTUsMSwKLSAgICAyNCwzLDIzLDUsMTE0LDE0OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCw5LDAsMCwwLDY3LDAsMCwwLDExNSw0NywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxLDExNiwyLDAsCi0gICAgMTI0LDAsMCwxMDYsMywwLDEzMSwxLDAsMTQzLDE1LDAsMSwxMTYsNCwwLAotICAgIDEyNCwwLDAsMTMxLDEsMCw4Myw4NywxMDAsMSwwLDgxLDgyLDg4LDEwMCwxLAotICAgIDAsODMsNDEsMiwxMjIsMTkxLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTEwLAotICAgIDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LAotICAgIDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLAotICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAotICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDUsCi0gICAgMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAotICAgIDczLDEwMiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LAotICAgIDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDEyMCwxMDUsMTE1LAotICAgIDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLDExNiwxMTUsCi0gICAgMTAsMzIsMzIsMzIsMzIsOTksMTA4LDExMSw5OCw5OCwxMDEsMTE0LDEwMSwxMDAsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwxMTQsNTcsMCwwLDAsMTE0LDE0NSwwLAotICAgIDAsMCwxMTQsNTQsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxNDksMCwwLAotICAgIDAsNDEsMSwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg3LDAsMCwwLDE3MCwyLDAsMCwKLSAgICAxMTUsNiwwLDAsMCwwLDksMTAsMSwxNiwxLDExNCw4NywwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwyMDUsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCi0gICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNiwKLSAgICAwLDEwMCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDIsMCwKLSAgICAxMzEsMSwwLDkwLDcsMCwxMDEsNiwwLDEwMCw0LDAsMTAwLDcsMCwxMDAsCi0gICAgOCwwLDEzMiwxLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDYsMCwxMDAsOSwKLSAgICAwLDEwMCwxMCwwLDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDYsMCwKLSAgICAxMDAsMTEsMCwxMDAsMTIsMCwxMzIsMCwwLDEzMSwxLDAsOTAsMTAsMCwxMDEsCi0gICAgNiwwLDEwMSwxMSwwLDEwMCwxMywwLDEwMCwxNCwwLDEzMiwwLDAsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDkwLDEyLDAsMTAxLDYsMCwxMDEsMTEsMCwxMDAsMTUsMCwKLSAgICAxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxMywwLDEwMSwKLSAgICA2LDAsMTAxLDExLDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDEzMSwxLDAsOTAsMTQsMCwxMDEsNiwwLDEwMSwxNSwwLDEzMSwxLDAsCi0gICAgOTAsMTYsMCwxMDAsNCwwLDgzLDQxLDE5LDIxOCwxNSw2NiwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0NCw3NywxMDEsMTE2LDk3LAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsMTE0LAotICAgIDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDI3LDAsMCwwLDk5LDEsMCwwLDExNSwxNCwwLDAsMCwwLDIsNiwKKyAgICAxLDYsMSw2LDEsNiwxLDE0LDMsNiwxLDEyMiwxOSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEwMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwKKyAgICAxMDYsMSwxMzEsMSwxMDAsMiwxMDYsMCwxMjQsMCwxMDYsMiwxMzEsMSwxMDMsMiwKKyAgICAxMjUsMSwxMjQsMCwxMDYsMywxMDAsMCwxMDcsOSwxMTQsNTIsMTI0LDEsMTA2LDQsCisgICAgMTAwLDMsMTA2LDAsMTI0LDAsMTA2LDMsMTMxLDEsMTMxLDEsMSwwLDEyNCwwLAorICAgIDEwNiw1LDEwMCwwLDEwNyw5LDExNCw4MCwxMjQsMSwxMDYsNCwxMDAsNCwxMDYsMCwKKyAgICAxMjQsMCwxMDYsNSwxMzEsMSwxMzEsMSwxLDAsMTAwLDUsMTA2LDAsMTI0LDAsCisgICAgMTA2LDYsMTA2LDcsMTAwLDYsMTA2LDgsMTI0LDEsMTMxLDEsMTMxLDIsODMsMCwKKyAgICA0MSw3LDc4LDEyMiw5LDExMCw5NywxMDksMTAxLDYxLDEyMywzMywxMTQsMTI1LDEyMiwxMSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDYxLDEyMywzMywxMTQsMTI1LDEyMiwxMSwxMTEsMTE0LDEwNSwKKyAgICAxMDMsMTA1LDExMCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsMjksMTE1LDExNyw5OCwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsCisgICAgMTA1LDExMSwxMTAsMTE1LDYxLDEyMywxMjUsMTIyLDYsMTIzLDEyNSw0MCwxMjMsMTI1LDQxLDEyMiwKKyAgICAyLDQ0LDMyLDQxLDksMTE0LDM4LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsCisgICAgOTMsMCwwLDAsMTE0LDEwMywwLDAsMCwyMTgsNiw5NywxMTIsMTEyLDEwMSwxMTAsCisgICAgMTAwLDExNCwxMDYsMCwwLDAsMjE4LDksOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsCisgICAgOTUsMTE0LDEsMCwwLDAsMjE4LDQsMTA2LDExMSwxMDUsMTEwLDQxLDIsMTE0LDI2LAorICAgIDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsNDAsMCwwLDAsMTExLDEsMCwwLAorICAgIDExNSwxNiwwLDAsMCwwLDEsMTAsMSwxNCwxLDEwLDEsMTgsMSwxMCwKKyAgICAxLDgsMSwxMCwxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsCisgICAgOTksNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxMDIsMCwwLDAsMTI0LDAsMTA2LDAsMTI1LDIsMTIxLDcwLDEyNCwwLDEwNiwxLAorICAgIDEyNCwxLDEwNiwxLDEwNywyLDExMSw3NiwxMjQsMCwxMDYsMiwxMjQsMSwxMDYsMiwKKyAgICAxMDcsMiwxMTEsNzYsMTI0LDAsMTA2LDMsMTI0LDEsMTA2LDMsMTA3LDIsMTExLDc2LAorICAgIDEyNCwyLDEyNCwxLDEwNiwwLDEwNywyLDExMSw3NiwxMjQsMCwxMDYsNCwxMjQsMSwKKyAgICAxMDYsNCwxMDcsMiwxMTEsNzYsMTI0LDAsMTA2LDUsMTI0LDEsMTA2LDUsMTA3LDIsCisgICAgODMsMCw0LDAsMTE2LDYsMTA3LDEwLDExNCw5NiwxLDAsMSwwLDEsMCwKKyAgICAxMDAsMSw4MywwLDg4LDAsMTAwLDAsODMsMCw0MSwyLDc4LDcwLDQxLDcsCisgICAgMTE0LDEwNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMDMsMCwwLDAsMjE4LDYsOTksOTcsOTksMTA0LDEwMSwxMDAsMjE4LDEyLDEwNCw5NywKKyAgICAxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE0LDkwLDAsMCwwLDQxLAorICAgIDMsMTE0LDI2LDAsMCwwLDkwLDUsMTExLDExNiwxMDQsMTAxLDExNCw5MCw0LDExNSwKKyAgICAxMDksMTE1LDEwOCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDEyMSwxLDAsMCwxMTUsMjAsCisgICAgMCwwLDAsMCwxLDYsMSwyLDEsMTIsMSwxMiwxLDEyLDEsMTAsCisgICAgMSwxMiwxLDEyLDEsMTQsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywKKyAgICAxMTIsMTAxLDk5LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNTgsMCwwLDAsMTI0LDAsMTA2LDAsMTAwLDAsMTA3LDgsMTE0LDUyLDEyNCwwLAorICAgIDEwNiwxLDEwMCwwLDEwNyw5LDExNCw1MiwxMjQsMCwxMDYsMiwxMTQsNTIsMTE2LDMsCisgICAgMTAwLDAsMTA3LDgsMTE0LDM4LDExNiw0LDEzMCwxLDExNiwzLDEwNiw1LDEyNCwwLAorICAgIDEwNiwxLDEzMSwxLDEyNCwwLDk1LDAsMTI0LDAsMTA2LDAsODMsMCw0MSwxLAorICAgIDc4LDQxLDYsMTE0LDEwOCwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxMDcsMCwKKyAgICAwLDAsMjE4LDE5LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsCisgICAgMTIwLDExNiwxMDEsMTE0LDExMCw5NywxMDgsMjE4LDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsCisgICAgMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCw5MCwxMSw5NSwxMDMsCisgICAgMTAxLDExNiw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw0MSwxLDExNCwyNiwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCisgICAgMTEyLDAsMCwwLDEzMywxLDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEwLAorICAgIDEsMTYsMSw4LDEsNCwxLDE0LDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsODMsMTEyLDEwMSw5OSw0Niw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwwLDgzLDAsCisgICAgNDEsMSw3OCw0MSwxLDExNCwxMDgsMCwwLDAsNDEsMiwxMTQsMjYsMCwwLAorICAgIDAsMTE0LDExMiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwxMTQsMTEyLDAsMCwwLDE0MiwxLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDIsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTI0LAorICAgIDAsMTA2LDAsMTAwLDEsMTA3LDgsMTE0LDI2LDEyNCwwLDEwNiwxLDEwNiwyLDEwMCwKKyAgICAyLDEzMSwxLDEwMCwzLDI1LDAsODMsMCwxMjQsMCwxMDYsMSw4MywwLDEwMCwKKyAgICAxLDgzLDAsNDEsNCwxMjIsMzIsODQsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwKKyAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwKKyAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ2LDc4LDIxOCwxLDQ2LDExNCwxOSwwLDAsMCwKKyAgICA0MSwzLDExNCwxMDYsMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCwxMCwxMTQsMTEyLAorICAgIDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsNiwKKyAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDE0NiwxLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDMsMTAsMSwxNiwyLDEyMiwxNyw3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsCisgICAgOTksNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw2LDAsCisgICAgMCwwLDEyNCwwLDEwNiwwLDgzLDAsNDEsMSw3OCw0MSwxLDExNCwxMDcsMCwKKyAgICAwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExMywwLDAsMCwxNTQsMSwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyMyw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDgzLDExMiwxMDEsOTksNDYsMTA0LDk3LDExNSw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLAorICAgIDExMCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxNCwwLDAsMCwxMTYsMCwxMjQsMSwxMzEsCisgICAgMSwxMjQsMCw5NSwxLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw0LAorICAgIDk4LDExMSwxMTEsMTA4LDExNCwxMDcsMCwwLDAsNDEsMiwxMTQsMjYsMCwwLDAsCisgICAgMjE4LDUsMTE4LDk3LDEwOCwxMTcsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwxMTMsMCwwLDAsMTU4LDEsMCwwLDExNSwKKyAgICAyLDAsMCwwLDAsMiw0MSwxMiwxMTQsMSwwLDAsMCwxMTQsMCwwLAorICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLDAsMCwxMTQsMjcsMCwwLAorICAgIDAsMTE0LDQwLDAsMCwwLDExNCwxMTQsMCwwLDAsMjE4LDgsMTEyLDExNCwxMTEsCisgICAgMTEyLDEwMSwxMTQsMTE2LDEyMSwxMTQsMTEyLDAsMCwwLDIxOCw2LDExNSwxMDEsMTE2LDExNiwKKyAgICAxMDEsMTE0LDExNCwxMTksMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDEwMiwwLDAsMCw2MiwxLDAsMCwxMTUsMjAsMCwwLDAsOCwzNSwKKyAgICA0LDIsNCwxLDE0LDExLDgsMTAsOCwxMiwxMiw5LDE0LDQsMTIsOCwKKyAgICAxMiw0LDExNCwxMDIsMCwwLDAsNDEsMiwxMTQsMTAzLDAsMCwwLDExNCwxMDUsCisgICAgMCwwLDAsOTksMiwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsCisgICAgMTQsMCwwLDAsNjcsMCwwLDAsMTE1LDE1NCwwLDAsMCwxMTYsMCwxMjQsCisgICAgMSwxMDAsMSwxMzEsMiwxMTQsNzQsMTE2LDEsMTAwLDIsMTA3LDgsMTE0LDIyLDExNiwKKyAgICAyLDEzMCwxLDExNiwxLDEwNiwzLDEyNSw0LDEyNCwzLDEwMCwyLDEwNyw4LDExNCwKKyAgICA0OCwxMjQsNCwxMjQsMCwxMjQsMSwxMDAsMywxNDEsMiw4MywwLDEyNCwzLDExNCwKKyAgICA1NiwxMDMsMCwxMTAsMiwxMDAsMiwxMjUsNSwxMjQsNCwxMjQsMCwxMjQsMSwxMjQsCisgICAgNSwxMDAsNCwxNDEsMyw4MywwLDEyNCwzLDEwMCwyLDEwNyw4LDExNCwxMzgsMTE2LAorICAgIDAsMTI0LDEsMTAwLDUsMTMxLDIsMTE0LDEzNCwxMjEsMTQsMTI0LDEsMTA2LDQsMTI0LAorICAgIDAsMTMxLDEsMTI1LDMsODcsMCwxMTMsMTM4LDQsMCwxMTYsNSwxMDcsMTAsMTE0LAorICAgIDEzMCwxLDAsMSwwLDEsMCwxMDAsMiwxMjUsMyw4OSwwLDExMywxMzgsODgsCisgICAgMCwxMTAsNCwxMDAsNiwxMjUsMywxMTYsNiwxMjQsMCwxMjQsMSwxMjQsMiwxMjQsCisgICAgMywxMDAsNywxNDEsNCw4MywwLDQxLDgsMTIyLDUzLDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsCisgICAgOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTgsOTcsMTE0LDEwNSwxMTEsMTE3LDExNSwKKyAgICAzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSw0NiwKKyAgICA5MCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsCisgICAgMSwxMTQsOTMsMCwwLDAsNDEsMiwxMTQsOTMsMCwwLDAsMTE0LDEwNiwwLAorICAgIDAsMCwxMTQsMTA1LDAsMCwwLDcwLDQxLDIsMTE0LDEwMywwLDAsMCwxMTQsCisgICAgMTA1LDAsMCwwLDQxLDcsMTE0LDQsMCwwLDAsMTE0LDExNSwwLDAsMCwKKyAgICAxMTQsMTE2LDAsMCwwLDIxOCwyMywxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksCisgICAgOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMDUsCisgICAgMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxMDIsMCwwLDAsNDEsNiwxMTQsCisgICAgMTUsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEwNSwKKyAgICAwLDAsMCwxMTQsMTI0LDAsMCwwLDkwLDYsMTE1LDEwMSw5NywxMTQsOTksMTA0LAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICA3OCwwLDAsMCwxNjMsMSwwLDAsMTE1LDM0LDAsMCwwLDAsMiwxMCwKKyAgICAxLDgsMSw0LDEsNiwyLDgsMSwxMiwxLDEyLDEsNiwxLDgsCisgICAgMiw4LDEsMTAsMSwyLDEsMTQsMSwxNCwxLDEyLDMsNCwyLDExNCwKKyAgICA3OCwwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsOCwwLDAsCisgICAgMCw1MywwLDAsMCw2NywwLDAsMCwxMTUsNTYsMSwwLDAsMTIxLDEwLAorICAgIDEyNCwwLDEwNiwwLDEyNSwzLDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwxMDcsMTAsCisgICAgMTE0LDMwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDE0LDg4LDAsMTI0LDMsCisgICAgMTAwLDAsMTA3LDksMTE0LDQ0LDEyNCwzLDgzLDAsMTI0LDAsMTA2LDIsMTI1LDQsCisgICAgMTI0LDEsMTAwLDAsMTA3LDgsMTE0LDkwLDEyMSwxMCwxMjQsMCwxMDYsMywxMjUsMSwKKyAgICA4NywwLDExMCwyMCw0LDAsMTE2LDEsMTA3LDEwLDExNCw4OCwxLDAsMSwwLAorICAgIDEsMCw4OSwwLDExMCwyLDg4LDAsMTIxLDEwLDEyNCwwLDEwNiw0LDEyNSw1LAorICAgIDg3LDAsMTEwLDI0LDQsMCwxMTYsMSwxMDcsMTAsMTE0LDEyNCwxLDAsMSwwLAorICAgIDEsMCwxMDAsMCwxMjUsNSw4OSwwLDExMCwyLDg4LDAsMTI0LDIsMTAwLDAsCisgICAgMTA3LDgsMTE0LDE4NCwxMjQsNSwxMDAsMCwxMDcsOCwxMTQsMTgwLDEyMSwxMCwxMjQsMSwKKyAgICAxMDYsNSwxMjUsMiw4NywwLDExMywxODQsNCwwLDExNiwxLDEwNywxMCwxMTQsMTc2LAorICAgIDEsMCwxLDAsMSwwLDEwMCwwLDEyNSwyLDg5LDAsMTEzLDE4NCw4OCwwLAorICAgIDExMCw0LDEyNCw1LDEyNSwyLDEyMSwxMCwxMjQsMCwxMDYsNiwxMjUsNiw4NywwLAorICAgIDExMCwyNCw0LDAsMTE2LDEsMTA3LDEwLDExNCwyMTgsMSwwLDEsMCwxLDAsCisgICAgMTAwLDAsMTI1LDYsODksMCwxMTAsMiw4OCwwLDEyMSwxNCwxMTYsNywxMjQsMCwKKyAgICAxMDYsOCwxMzEsMSwxMjUsNyw4NywwLDExMCwyNiw0LDAsMTE2LDEsMTA3LDEwLAorICAgIDE0NCwxLDExNCw0LDEsMCwxLDAsMSwwLDEwMCwwLDEyNSw3LDg5LDAsCisgICAgMTEwLDIsODgsMCwxMTYsOSwxMjQsNCwxMjQsMSwxMjQsMiwxMDAsMSwxNDEsMywKKyAgICAxMjUsMywxMjQsNSwxMDAsMCwxMDcsOCwxNDQsMSwxMTQsMzQsMTAwLDIsMTEwLDIsCisgICAgMTAwLDMsMTI0LDMsOTUsMTAsMTI0LDYsMTI0LDMsOTUsMTEsMTI0LDcsMTI0LDMsCisgICAgOTUsMTIsMTI0LDMsODMsMCw0MSw0LDc4LDQxLDEsMTE0LDEwMywwLDAsMCwKKyAgICA3MCw4NCw0MSwxMywxMTQsODksMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwxLAorICAgIDAsMCwwLDExNCw4NSwwLDAsMCwxMTQsOTIsMCwwLDAsOTAsNyw5NSwKKyAgICA3OSw4Miw3Myw3MSw3Myw3OCwyMTgsMTAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsCisgICAgOTUsOTUsMjE4LDQsMTA4LDEwNSwxMTUsMTE2LDIxOCw4LDk1LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDk1LDExNCwxMDIsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTEyLDAsMCwKKyAgICAwLDExNCwxMDYsMCwwLDAsNDEsOCwxMTQsODMsMCwwLDAsMTE0LDkzLDAsCisgICAgMCwwLDExNCwxMDMsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxNSwwLDAsCisgICAgMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMTIsMCwwLDAsCisgICAgMTE0LDEwNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwyMTgsMTcsOTUsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5MiwxLDAsMCwxMTUsNzIsMCwwLDAsCisgICAgMCwyLDIsMSwxMCwxLDE0LDEsNiwyLDgsMSw0LDIsNiwxLAorICAgIDgsMSwyLDEsMTAsMSwxNCwyLDYsMSwyLDEsMTAsMSwxNCwxLAorICAgIDEwLDEsOCwxLDgsMSwyLDEsMTAsMSwxNCwxLDEyLDIsNCwxLAorICAgIDIsMSwxMCwxLDE0LDEsMTAsMSwyLDEsMTQsMSwxNiwxLDEwLDIsCisgICAgMTQsMSwyMCwxLDYsMSw2LDEsMTE0LDEyOCwwLDAsMCw3MCw0MSwxLAorICAgIDIxOCw4LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsOTksMiwwLDAsMCwxLAorICAgIDAsMCwwLDUsMCwwLDAsNTksMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDIxMiwxLDAsMCwxMjQsMiwxMTUsMjAsMTE2LDAsMTI0LDEsMTAwLDEsMTAwLDAsCisgICAgMTMxLDMsMTAwLDAsMTA3LDgsMTE0LDU0LDEyMSwxMiwxMjQsMCwxMDYsMSwxMjQsMSwKKyAgICA5NSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsMywxMDcsMTAsMTE0LDUyLDEsMCwKKyAgICAxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMTUsNzQsMTE2LDAsCisgICAgMTI0LDEsMTAwLDIsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LDE2NiwxMjQsMCwKKyAgICAxMDYsNCwxMjUsMywxMjQsMywxMDAsMCwxMDcsOCwxMTQsMTM0LDEyNCwwLDEwNiw1LAorICAgIDEwMCwwLDEwNyw5LDExNCwxMzQsMTE2LDYsMTAwLDAsMTA3LDgsMTE0LDExMCwxMTYsNywKKyAgICAxMzAsMSwxMTYsNiwxMDYsOCwxMjUsNCwxMjQsNCwxMDYsOSwxMjQsNCwxMzEsMSwKKyAgICAxMjUsMywxMjQsMCwxMDYsNSwxMjQsMyw5NSwxMCwxMjEsMTAsMTI0LDMsMTI0LDEsCisgICAgOTUsMTEsODcsMCwxMTAsMjAsNCwwLDExNiwzLDEwNywxMCwxMTQsMTY0LDEsMCwKKyAgICAxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMTUsMTg2LDExNiwwLAorICAgIDEyNCwxLDEwMCwzLDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwyMjAsMTIxLDEyLAorICAgIDEyNCwwLDEwNiwxMiwxMjQsMSw5NSwxMyw4NywwLDExMCwyMCw0LDAsMTE2LDMsCisgICAgMTA3LDEwLDExNCwyMTgsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLAorICAgIDEyMSwxMCwxMjQsMCwxMjQsMSw5NSwxNCw4NywwLDExMCwyMCw0LDAsMTE2LDMsCisgICAgMTA3LDEwLDExNCwyNTAsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLAorICAgIDEyNCwyLDE0NCwxLDExNSwyMCwxMTYsMCwxMjQsMSwxMDAsNCwxMDAsMCwxMzEsMywKKyAgICAxMDAsMCwxMDcsOCwxNDQsMSwxMTQsNjgsMTI0LDAsMTA2LDUsMTAwLDAsMTA3LDksCisgICAgMTQ0LDEsMTE0LDY4LDEyMSwxMiwxMjQsMCwxMDYsNSwxMjQsMSw5NSwxNSw4NywwLAorICAgIDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLDExNCw2NiwxLDAsMSwwLAorICAgIDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LDAsMTA2LDE2LDE0NCwxLDExNCwyMDgsCisgICAgMTI0LDIsMTQ0LDEsMTE1LDEwMCwxMTYsMCwxMjQsMSwxMDAsNSwxMDAsMCwxMzEsMywKKyAgICAxMDAsMCwxMDcsOCwxNDQsMSwxMTQsMTM2LDEyMSwxMiwxMjQsMCwxMDYsMTcsMTI0LDEsCisgICAgOTUsMTgsODcsMCwxMTAsMjIsNCwwLDExNiwzLDEwNywxMCwxNDQsMSwxMTQsMTM0LAorICAgIDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxNDQsMSwKKyAgICAxMTUsMTYwLDExNiwwLDEyNCwxLDEwMCw2LDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LAorICAgIDE0NCwxLDExNCwyMDgsMTI0LDAsMTA2LDE5LDEwMCwwLDEwNyw5LDE0NCwxLDExNCwyMDgsCisgICAgMTIxLDEyLDEyNCwwLDEwNiwxOSwxMjQsMSw5NSwyMCw4NywwLDExMCwyMiw0LDAsCisgICAgMTE2LDMsMTA3LDEwLDE0NCwxLDExNCwyMDYsMSwwLDEsMCwxLDAsODksMCwKKyAgICAxMTAsMiw4OCwwLDEyNCwxLDgzLDAsNDEsNyw3OCwxMTQsMSwwLDAsMCwKKyAgICAxMTQsODUsMCwwLDAsMjE4LDExLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA5NSw5NSwxMTQsMTI3LDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsMTI1LDAsMCwKKyAgICAwLDQxLDIxLDExNCw2LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMSwwLAorICAgIDAsMCwxMTQsOTAsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMDYsMCwwLAorICAgIDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDIxOCwxNiw5NSw3OCw5NywKKyAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwyMTgsNyw5NSwKKyAgICA5NSwxMTAsMTAxLDExOSw5NSw5NSw5MCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCw4NSwwLAorICAgIDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDg5LDAsMCwKKyAgICAwLDExNCwxMjcsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTAzLDAsMCwwLAorICAgIDExNCw5MiwwLDAsMCwxMTQsMTEyLDAsMCwwLDExNCwxMjUsMCwwLDAsNDEsCisgICAgNSwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMjksMCwwLDAsCisgICAgMTE0LDkzLDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LDExNCwxMTUsMjM3LDEsMCwKKyAgICAwLDExNSw5MiwwLDAsMCwwLDQsMjAsMSwyLDEsMTIsMSwxNCwxLAorICAgIDYsMiwyMCwxLDYsMSw4LDIsMTAsMSw4LDEsNCwxLDYsMiwKKyAgICAxMCwxLDgsMSwyLDEsMTAsMSwxNCwxLDYsMiwyMCwxLDIsMSwKKyAgICAxMiwxLDE0LDEsNiwyLDIsMSwxMCwxLDE0LDEsNiwyLDI0LDEsCisgICAgMTIsMSwyLDEsMTIsMSwxNiwxLDYsMiw4LDEsMjQsMSwyLDEsCisgICAgMTIsMSwxNiwxLDYsMiwyNCwxLDEyLDEsMiwxLDEyLDEsMTYsMSwKKyAgICA2LDEsMTE0LDEzMywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw4MiwwLDAsCisgICAgMCwxMDAsMSwxMjUsMSwxMTYsMCwxMjQsMCwxMDYsMSwxMDAsMiwxMzEsMiwxMTQsCisgICAgMzAsMTI0LDAsMTA2LDEsMTA2LDIsMTI0LDAsMTMxLDEsMTI1LDEsMTEwLDIwLDExNiwKKyAgICAwLDEyNCwwLDEwNiwxLDEwMCwzLDEzMSwyLDExNCw1MCwxMTYsMywxMDAsNCwxMzEsCisgICAgMSwxMzAsMSwxMjQsMSwxMDAsMSwxMDcsOCwxMTQsNjgsMTE2LDQsMTI0LDAsMTA2LAorICAgIDUsMTMxLDEsMTI1LDEsMTE2LDYsMTI0LDAsMTI0LDEsMTMxLDIsMSwwLDEyNCwKKyAgICAxLDgzLDAsNDEsNSwxMjIsNDMsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTE4LDEwNSwxMDAsMTAxLDEwMCwzMiwxMTUsMTEyLDEwMSwKKyAgICA5OSw0Niw3OCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsCisgICAgNjYsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAwLDEwMSwKKyAgICAxMDIsMTA1LDExMCwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDAsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk3LDEwOCwxMTUsMTExLDMyLDEwMCwxMDEsMTAyLAorICAgIDEwNSwxMTAsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0MCw0MSw0MSw3LDExNCw0LDAsMCwwLDExNCw5MywwLDAsMCwxMTQsCisgICAgMTM0LDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsMTYsMCwwLDAsMTE0LDE1LAorICAgIDAsMCwwLDExNCwxMzMsMCwwLDAsNDEsMiwxMTQsODIsMCwwLDAsMTE0LAorICAgIDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDIxOCwxNiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksCisgICAgOTUsMTE1LDExMiwxMDEsOTksNDEsMiwwLDAsMTE1LDE4LDAsMCwwLDAsMywKKyAgICA0LDEsMTIsMywxNCwxLDEyLDEsOCwyLDgsMSwxMCwxLDEwLDEsCisgICAgMTE0LDEzNiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMDYsMCwwLDAsMTI0LAorICAgIDAsMTA2LDAsMTAwLDEsMTA3LDgsMTE0LDE0LDEwMCwyLDExMCw0LDEyNCwwLDEwNiwKKyAgICAwLDEyNSwxLDEyNCwwLDEwNiwxLDEwMCwxLDEwNyw4LDExNCw2NiwxMjQsMCwxMDYsCisgICAgMiwxMDAsMSwxMDcsOCwxMTQsNTAsMTAwLDMsMTA2LDMsMTI0LDEsMTMxLDEsODMsCisgICAgMCwxMDAsNCwxMDYsMywxMjQsMSwxMjQsMCwxMDYsMiwxMzEsMiw4MywwLDExMCwKKyAgICAzNiwxMjQsMCwxMDYsNCwxMTQsODYsMTAwLDUsMTA2LDMsMTI0LDEsMTI0LDAsMTA2LAorICAgIDEsMTMxLDIsODMsMCwxMDAsNiwxMDYsMywxMjQsMCwxMDYsMCwxMjQsMCwxMDYsCisgICAgMSwxMzEsMiw4MywwLDEwMCwxLDgzLDAsNDEsNywxMjIsMzgsODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTE2LDExMSwzMiwKKyAgICAxMTcsMTE1LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw0Niw3OCwxMTQsODcsMCwwLDAsMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsCisgICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwxOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsMTI1LDQxLDYyLDQxLDUsMTE0LDE1LDAsCisgICAgMCwwLDExNCwxMDMsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwzOCwwLDAsCisgICAgMCwxMTQsMTEzLDAsMCwwLDQxLDIsMTE0LDgyLDAsMCwwLDExNCwxNSwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwxMTQsOTEsMCwwLDAsNTgsMiwwLDAsMTE1LDE2LDAsMCwwLDAsCisgICAgMywyMCwxLDEwLDEsMTAsMSwxMCwyLDE2LDIsNiwxLDE0LDIsMTE0LAorICAgIDkxLDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCw0LDAsMCwKKyAgICAwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxODYsMCwwLDAsMTI0LDAsCisgICAgMTA2LDAsMTI1LDIsMTE2LDEsMTA2LDIsMTMxLDAsMSwwLDExNiwzLDEyNCwyLAorICAgIDEzMSwxLDE0MywxNDgsMSwwLDExNiw0LDEwNiw1LDEwNiw2LDEyNCwyLDEzMSwxLAorICAgIDEyNCwxLDEwNyw5LDExNCw2MiwxMDAsMSwxMDYsNywxMjQsMiwxMzEsMSwxMjUsMywKKyAgICAxMTYsOCwxMjQsMywxMjQsMiwxMDAsMiwxNDEsMiwxMzAsMSwxMjQsMCwxMDYsOSwKKyAgICAxMDAsMywxMDcsOCwxMTQsMTE0LDEyNCwwLDEwNiwxMCwxMDAsMywxMDcsOCwxMTQsOTYsCisgICAgMTE2LDgsMTAwLDQsMTI0LDAsMTA2LDAsMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDExLAorICAgIDEyNCwwLDEyNCwxLDEwMCw1LDEwMCw2LDE0MSwzLDEsMCwxMjQsMSw4MywwLAorICAgIDExNiwxMSwxMjQsMCwxMjQsMSwxMDAsNSwxMDAsNiwxNDEsMywxLDAsMTE2LDEyLAorICAgIDEyNCwwLDEwNiw5LDEwMCw3LDEzMSwyLDExNSwxNTQsMTI0LDAsMTA2LDksMTA2LDEzLAorICAgIDEyNCwyLDEzMSwxLDEsMCwxMTAsMTIsMTI0LDAsMTA2LDksMTA2LDE0LDEyNCwxLAorICAgIDEzMSwxLDEsMCw4NywwLDEwMCwzLDgxLDAsODIsMCw4OCwwLDExNiw0LAorICAgIDEwNiw1LDEyNCwyLDI1LDAsODMsMCw0MSw4LDEyMiw3MCw2OSwxMjAsMTAxLDk5LAorICAgIDExNywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMTUsCisgICAgMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAorICAgIDEwNSwxMTAsMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTA1LDExMCwxMDMsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDQ2LDEyMiwzMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSw0MSwxLDExNCwxNSwwLDAsMCw3OCwxMjIsMTQsMTA5LDEwNSwxMTUsMTE1LAorICAgIDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsODQsNDEsMSwxMTQsMTI5LDAsCisgICAgMCwwLDExNCwxMzUsMCwwLDAsNDEsMTUsMTE0LDE1LDAsMCwwLDExNCw0NiwKKyAgICAwLDAsMCwyMTgsMTIsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5NSwxMDgsMTExLDk5LAorICAgIDEwNywxMTQsNDIsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwKKyAgICAxMTQsMzAsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsCisgICAgOTMsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMTMzLDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDIxOCwxMSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTQsMTM1LDAsMCwwLDQxLDQsMTE0LDgyLDAsMCwwLDExNCw4MywwLDAsCisgICAgMCwxMTQsMTUsMCwwLDAsMjE4LDMsMTA5LDExNSwxMDMsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDgwLDAsMCwwLDc1LAorICAgIDIsMCwwLDExNSwzMiwwLDAsMCwwLDIsNiwxLDgsMSwxMCwxLAorICAgIDE2LDEsMTAsMSwxMiwxLDEwLDEsMTAsMSwxNCwyLDE0LDEsNCwxLAorICAgIDE0LDEsMTIsNCwxNCwyLDIyLDEsMTE0LDgwLDAsMCwwLDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDI3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyMDYsMCwwLDAsMTI0LDAsMTA2LDAsMTA2LDEsMTI0LDAsMTA2LAorICAgIDIsMTMxLDEsMSwwLDExNiwzLDEwNiw0LDEyNCwwLDEwNiwyLDI1LDAsMTI1LAorICAgIDEsMTE2LDUsMTI0LDEsMTAwLDEsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LAorICAgIDc2LDEyMSwxMiwxMjQsMCwxMDYsMCwxMjQsMSw5NSw2LDg3LDAsMTEwLDIwLDQsCisgICAgMCwxMTYsNywxMDcsMTAsMTE0LDc0LDEsMCwxLDAsMSwwLDg5LDAsMTEwLAorICAgIDIsODgsMCwxMTYsNSwxMjQsMSwxMDAsMiwxMDAsMCwxMzEsMywxMDAsMCwxMDcsCisgICAgOCwxMTQsMTU0LDEyMSw0MCwxMjQsMSwxMDYsOCwxMjQsMSw5NSw5LDExNiwxMCwxMjQsCisgICAgMSwxMDAsMywxMzEsMiwxMTUsMTMwLDEyNCwwLDEwNiwyLDEwNiwxMSwxMDAsNCwxMzEsCisgICAgMSwxMDAsNSwyNSwwLDEyNCwxLDk1LDksODcsMCwxMTAsMjAsNCwwLDExNiwKKyAgICA3LDEwNywxMCwxMTQsMTUyLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsCisgICAgMCwxMTYsNSwxMjQsMSwxMDAsNiwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsCisgICAgMjAyLDEyMSwxMCwxMjQsMCwxMjQsMSw5NSwxMiw4NywwLDExMCwyMCw0LDAsMTE2LAorICAgIDcsMTA3LDEwLDExNCwyMDAsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwKKyAgICAwLDEyNCwxLDgzLDAsNDEsNyw3OCwxMTQsODUsMCwwLDAsMTE0LDEzMCwwLAorICAgIDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxMTcsMCwwLDAsMTE0LDE5LDAsMCwKKyAgICAwLDExNCw4OSwwLDAsMCw0MSwxMywxMTQsOTMsMCwwLDAsMTE0LDEzOCwwLAorICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsODUsMCwwLDAsMTE0LDkwLDAsMCwwLAorICAgIDExNCwxLDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDExOCwwLDAsMCwxMTQsODksMCwwLDAsNDEsMiwxMTQsODIsMCwwLDAsCisgICAgMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDExLDAsMCwwLDIxOCwyNSw5NSwxMDgsMTExLDk3LDEwMCw5NSw5OCw5Nyw5OSwxMDcsCisgICAgMTE5LDk3LDExNCwxMDAsOTUsOTksMTExLDEwOSwxMTIsOTcsMTE2LDEwNSw5OCwxMDgsMTAxLDEwMCwKKyAgICAyLDAsMCwxMTUsNDAsMCwwLDAsMCw0LDE0LDIsMTIsMSwxNiwxLAorICAgIDIsMSwxMiwxLDE0LDEsNiwxLDE2LDEsMiw0LDgsMSwxMCwxLAorICAgIDIyLDEsMTQsMSw2LDEsMTYsMSwyLDEsMTAsMSwxNCwxLDYsMSwKKyAgICAxMTQsMTQwLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSwxMTgsMCwwLDAsMTI0LAorICAgIDAsMTA2LDAsMTAwLDAsMTA3LDksMTE0LDMwLDExNiwxLDEyNCwwLDEwNiwwLDEwMCwKKyAgICAxLDEzMSwyLDExNSwzMCwxMTYsMiwxMjQsMCwxMzEsMSw4MywwLDExNiwzLDEyNCwKKyAgICAwLDEzMSwxLDEyNSwxLDExNiw0LDEyNCwxLDEzMSwxLDE0Myw1NCwxLDAsMTI0LAorICAgIDAsMTA2LDAsMTAwLDAsMTA3LDgsMTE0LDg0LDEyNCwwLDEwNiw1LDEwMCwwLDEwNywKKyAgICA4LDExNCw5NiwxMTYsNiwxMDAsMiwxMjQsMCwxMDYsNywxMDAsMywxNDEsMiwxMzAsCisgICAgMSwxMTAsMTIsMTI0LDAsMTA2LDAsMTA2LDgsMTI0LDEsMTMxLDEsMSwwLDg3LAorICAgIDAsMTAwLDAsODEsMCw4MiwwLDg4LDAsMTE2LDksMTA2LDEwLDEyNCwwLDEwNiwKKyAgICA3LDI1LDAsODMsMCw0MSw0LDc4LDExNCwxMzUsMCwwLDAsMTIyLDE0LDEwOSwKKyAgICAxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDEsMTE0LAorICAgIDE1LDAsMCwwLDQxLDExLDExNCw5MywwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsMTQwLDAsMCwwLDExNCwxMzYsMCwwLDAsMTE0LDk2LDAsMCwwLDExNCwKKyAgICAxMDYsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTM1LAorICAgIDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLDAsNDEsMiwxMTQsCisgICAgODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNCw5NSwxMDgsMTExLDk3LDEwMCw5NSwKKyAgICAxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTI5LDIsMCwwLDExNSwyMCwwLDAsCisgICAgMCwwLDIsMTAsMiwxMiwxLDgsMiw4LDEsMTAsMSwxMCwxLDEwLAorICAgIDEsMTYsMywyMiw1LDExNCwxNDEsMCwwLDAsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMzgsMCwwLDAsMTE2LDAsMTA2LDEsMTMxLDAsMSwwLDExNiwyLDEyNCwwLAorICAgIDEwNiwzLDEzMSwxLDE0MywxMCwxLDAsMTE2LDQsMTI0LDAsMTMxLDEsODMsMCwKKyAgICA4MSwwLDgyLDAsODgsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDE5MSw4MiwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDExMCwxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0NCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLAorICAgIDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTAwLAorICAgIDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwNSwKKyAgICAxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwKKyAgICAxMDQsOTcsMTE2LDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTAzLDEwMSwxMTYsMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDEwOCwxMTEsCisgICAgOTgsOTgsMTAxLDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDQxLDUsCisgICAgMTE0LDQ2LDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCwKKyAgICAxNSwwLDAsMCwxMTQsMTQxLDAsMCwwLDQxLDEsMTE0LDgyLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICA4MSwwLDAsMCwxNTIsMiwwLDAsMTE1LDYsMCwwLDAsMCw5LDgsCisgICAgMSwxMiwxLDExNCw4MSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwxMzYsMCwKKyAgICAwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAxLDQsCisgICAgMTAwLDIsMTAwLDMsMTMyLDAsMTMxLDEsOTAsNSwxMDEsNiwxMDAsMTksMTAwLDUsCisgICAgMTAwLDYsMTMyLDEsMTMxLDEsOTAsNywxMDEsNiwxMDAsMjAsMTAwLDcsMTAwLDgsCisgICAgMTMyLDEsMTMxLDEsOTAsOCwxMDEsNiwxMDAsOSwxMDAsMTAsMTMyLDAsMTMxLDEsCisgICAgOTAsOSwxMDEsNiwxMDAsMTEsMTAwLDEyLDEzMiwwLDEzMSwxLDkwLDEwLDEwMSw2LAorICAgIDEwMSwxMSwxMDAsMTMsMTAwLDE0LDEzMiwwLDEzMSwxLDEzMSwxLDkwLDEyLDEwMSw2LAorICAgIDEwMSwxMSwxMDAsMTUsMTAwLDE2LDEzMiwwLDEzMSwxLDEzMSwxLDkwLDEzLDEwMSw2LAorICAgIDEwMSwxMSwxMDAsMTcsMTAwLDE4LDEzMiwwLDEzMSwxLDEzMSwxLDkwLDE0LDEwMSw2LAorICAgIDEwMSwxNSwxMzEsMSw5MCwxNiwxMDAsNCw4MywwLDQxLDIxLDIxOCwxNSw2NiwxMTcsCisgICAgMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0NCw3NywKKyAgICAxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwMiwxMTEsMTE0LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsCisgICAgMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LAorICAgIDk5LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsCisgICAgMTA1LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiw5OSwxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwxMDYsCisgICAgMSwxMzEsMSw4MywwLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAorICAgIDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsCisgICAgMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLAorICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LAorICAgIDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjQsNjAsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsMzgsMCwwLDAsMTE0LDEsMCwKKyAgICAwLDAsNDEsMSwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDg2LDAsMCwwLDE3NywyLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsMCwwLDQsCisgICAgMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNDQsMCwwLDAsCisgICAgMTI0LDIsMTAwLDAsMTA3LDksMTE0LDEyLDEwMCwwLDgzLDAsMTE2LDAsMTA2LDEsCisgICAgMTI0LDEsMTMxLDEsMTE0LDM2LDExNiwyLDEyNCwxLDEyNCwwLDEwMCwxLDEwMCwyLAorICAgIDE0MSwzLDgzLDAsMTAwLDAsODMsMCwxMDAsMCw4MywwLDQxLDMsNzgsMTIyLAorICAgIDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMSwxMTQsMTAzLDAsMCwwLAorICAgIDQxLDMsMTE0LDQ2LDAsMCwwLDkwLDEwLDEwNSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDEwNSwxMTAsMTE0LDc4LDAsMCwwLDQxLDQsMjE4LDMsOTksMTA4LDExNSwxMTQsCisgICAgNzEsMCwwLDAsMjE4LDQsMTEyLDk3LDExNiwxMDQsMjE4LDYsMTE2LDk3LDExNCwxMDMsCisgICAgMTAxLDExNiwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCisgICAgMCwyMTgsOSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMTg2LDIsMCwwLAorICAgIDExNSwxMCwwLDAsMCwwLDIsOCwxLDQsMSwxMCwxLDE0LDIsMTIyLAorICAgIDI1LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKKyAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMzAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLDIsMTI1LDMsCisgICAgMTI0LDMsMTAwLDEsMTA3LDksMTE0LDI2LDEyNCwzLDEwNiwxLDgzLDAsMTAwLDEsCisgICAgODMsMCw0MSwyLDEyMiwxNzUsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDM5LDExMiw5NywxMTYsCisgICAgMTA0LDM5LDMyLDEwNSwxMTUsMzIsMTAxLDExOCwxMDEsMTE0LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwKKyAgICAxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMDEsCisgICAgOTcsMTE0LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwKKyAgICAxMDEsMTAwLDMyLDk3LDMyLDEwMiw5NywxMDUsMTA4LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwKKyAgICAxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwKKyAgICA0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwKKyAgICA0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCwxNDYsMCwwLDAsMTE0LDkzLDAsCisgICAgMCwwLDQxLDQsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDE0NCwKKyAgICAwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxOTUsMiwwLDAsMTE1LDQsMCwwLDAsMCw5LDEyLAorICAgIDEsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDEsMTA2LDAsMTE2LDEsMTA2LDIsCisgICAgMTA3LDcsMTE0LDM0LDExNiwzLDEwMCwxLDEwNiw0LDEyNCwxLDEwNiwwLDEzMSwxLAorICAgIDEyNCwxLDEwNiwwLDEwMCwyLDE0MSwyLDEzMCwxLDExNiw1LDExNiw2LDEwNiw3LAorICAgIDEyNCwxLDEzMSwyLDgzLDAsNDEsMywxMjIsMjQsNjcsMTE0LDEwMSw5NywxMTYsMTAxLAorICAgIDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDEyMiwyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLAorICAgIDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQxLDEsMTE0LDE1LDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDExNCwKKyAgICAxNCwwLDAsMCwxMTQsNjksMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwzOCwKKyAgICAwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LDQ2LDAsMCwwLDkwLDE0LDk5LAorICAgIDExNCwxMDEsOTcsMTE2LDEwMSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwKKyAgICAyNiwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEzNCwwLDAsMCwyMDcsMiwwLAorICAgIDAsMTE1LDgsMCwwLDAsMCwzLDEyLDEsMTIsMSwxMCwxLDEyMiwyOSwKKyAgICA2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDExNiwxLDEwNiwyLDEyNCwxLDEzMSwKKyAgICAyLDEsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDIyLDY5LDEyMCwxMDEsOTksMzIsCisgICAgOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNzgsNDEsMywxMTQsNTgsMCwwLDAsMTE0LDQ2LDAsMCwwLDkwLDEyLAorICAgIDEwMSwxMjAsMTAxLDk5LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDI2LAorICAgIDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM1LDAsMCwwLDIxNSwyLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDMsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLAorICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLAorICAgIDgzLDAsNDEsMiwxMjIsNTcsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLAorICAgIDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwKKyAgICAxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNSw0Niw3OCwKKyAgICAxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsOCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwyMjAsMiwwLDAsMTE1LDIsCisgICAgMCwwLDAsMCw0LDEyMiwyNCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLAorICAgIDU2LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLAorICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDEwLDAsMCwwLDQxLAorICAgIDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LAorICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjI2LDIsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDUyLDgyLAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsOTcsMTE1LDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKKyAgICA5NywxMTQsMTAxLDMyLDExMCwxMDEsMTE4LDEwMSwxMTQsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDExNSw0Niw3MCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTQzLDAsMCwwLAorICAgIDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsMTA1LDAsMCwwLDIzMiwyLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDQsMTIyLDI2LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA0MSwyLDc4LDc4LDQxLDEsNzgsNDEsMTcsMTE0LDEsMCwwLDAsMTE0LDAsCisgICAgMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMjE4LDEyLDExNSwKKyAgICAxMTYsOTcsMTE2LDEwNSw5OSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsODYsMCwwLDAsCisgICAgMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNDYsMCwKKyAgICAwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTM0LDAsMCwwLDExNCwxMzUsMCwwLAorICAgIDAsMTE0LDc0LDAsMCwwLDExNCwxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwKKyAgICAxMTQsMTA1LDAsMCwwLDExNCw4NCwwLDAsMCwxMTQsMTM4LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsMTQyLDAsMCwwLDE2OCwyLDAsMCwxMTUsMzAsMCwwLAorICAgIDAsOCw3LDQsMiwxMiw5LDIsMSwxMiw4LDIsMSwxMiwxMSwxMiwKKyAgICA4LDEyLDUsMiwxLDE0LDUsMiwxLDE0LDUsMiwxLDE0LDUsMTE0LAorICAgIDE0MiwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwxNDAsMCwwLDAsMTAxLDAsCisgICAgOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAxLDQsMTAwLDIsMTAwLDMsCisgICAgMTMyLDAsMTMxLDEsOTAsNSwxMDEsNiwxMDAsMjEsMTAwLDUsMTAwLDYsMTMyLDEsCisgICAgMTMxLDEsOTAsNywxMDEsNiwxMDAsMjIsMTAwLDcsMTAwLDgsMTMyLDEsMTMxLDEsCisgICAgOTAsOCwxMDEsNiwxMDAsOSwxMDAsMTAsMTMyLDAsMTMxLDEsOTAsOSwxMDEsNCwKKyAgICAxMDAsMTEsMTAwLDEyLDEzMiwwLDEzMSwxLDkwLDEwLDEwMSw2LDEwMCwxMywxMDAsMTQsCisgICAgMTMyLDAsMTMxLDEsOTAsMTEsMTAxLDYsMTAxLDEyLDEwMCwxNSwxMDAsMTYsMTMyLDAsCisgICAgMTMxLDEsMTMxLDEsOTAsMTMsMTAxLDYsMTAxLDEyLDEwMCwxNywxMDAsMTgsMTMyLDAsCisgICAgMTMxLDEsMTMxLDEsOTAsMTQsMTAxLDYsMTAxLDEyLDEwMCwxOSwxMDAsMjAsMTMyLDAsCisgICAgMTMxLDEsMTMxLDEsOTAsMTUsMTAwLDQsODMsMCw0MSwyMywyMTgsMTQsNzAsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0Miw3NywxMDEsCisgICAgMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAogICAgIDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwKICAgICAxMTEsMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LAogICAgIDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwKQEAgLTEyMjksNzYwICsxMjIyLDYwMSBAQAogICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAogICAgIDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLAogICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwKLSAgICAxLDAsMTMxLDEsMCw4Myw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwKLSAgICAzMiwxMTQsMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCi0gICAgMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLAotICAgIDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLAotICAgIDExMSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLAotICAgIDEwOCwxMDIsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDI0LDYwLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDk4LDExNywxMDUsCi0gICAgMTA4LDExNiw0NSwxMDUsMTEwLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxLAotICAgIDAsMCwwLDQxLDEsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5MiwwLDAsMCwxOTUsMiwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNyw2NiwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsMCwwLDAsMCwwLDAsMCwKLSAgICA0LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwKLSAgICAwLDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxNiwwLDEwMCwwLDAsCi0gICAgODMsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTQsNTAsMCwKLSAgICAxMTYsMiwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLAotICAgIDIsMSw4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMyw3OCwxMTQsMTA3LAotICAgIDAsMCwwLDEyMiw4LDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQxLDMsMTE0LAotICAgIDU3LDAsMCwwLDkwLDEwLDEwNSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsCi0gICAgMTE0LDg1LDAsMCwwLDQxLDQsMjE4LDMsOTksMTA4LDExNSwxMTQsNzgsMCwwLAotICAgIDAsMjE4LDQsMTEyLDk3LDExNiwxMDQsMjE4LDYsMTE2LDk3LDExNCwxMDMsMTAxLDExNiwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOSwKLSAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMjA0LDIsMCwwLDExNSwxMCwwLAotICAgIDAsMCwwLDIsMTIsMSw0LDEsMTUsMSwxOSwyLDEyMiwyNSw2NiwxMTcsCi0gICAgMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwwLDAsMCwwLDAsMCwKLSAgICA0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQxLDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwKLSAgICAxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwzNywwLDEyNCwKLSAgICAzLDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDE3NSw3MCwxMDUsCi0gICAgMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LDExNSwzMiwxMDEsMTE4LAotICAgIDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwKLSAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LDMyLDEwNSwxMTUsMzIsCi0gICAgOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsMzIsMTAyLDk3LDEwNSwKLSAgICAxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAotICAgIDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCi0gICAgOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsCi0gICAgMTE0LDE1NCwwLDAsMCwxMTQsOTksMCwwLDAsNDEsNCwxMTQsMTUxLDAsMCwKLSAgICAwLDExNCw3OCwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCw4OCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCi0gICAgMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxMywyLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwwLDksMTgsMSwxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw2NywwLDAsMCwKLSAgICAxMjQsMSwwLDEwNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEwNyw3LDAsMTE0LAotICAgIDUxLDAsMTE2LDMsMCwxMDAsMSwwLDEwNiw0LDAsMTI0LDEsMCwxMDYsMCwKLSAgICAwLDEzMSwxLDAsMTAwLDIsMCwxMjQsMSwwLDEwNiwwLDAsMTMxLDEsMSwKLSAgICAxMzAsMSwwLDExNiw1LDAsMTE2LDYsMCwxMDYsNywwLDEyNCwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSwzLDEyMiwyNCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsCi0gICAgOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLAotICAgIDI5LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LAotICAgIDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsCi0gICAgNzYsMCwwLDAsMTE0LDc3LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNjUsCi0gICAgMCwwLDAsMTE0LDU3LDAsMCwwLDkwLDE0LDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKLSAgICA5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsCi0gICAgODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDEzOCwwLDAsMCwyMjUsMiwwLDAsMTE1LDgsMCwwLAotICAgIDAsMCwzLDE4LDEsMjEsMSwxMiwxLDEyMiwyOSw2NiwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsOTksMTE0LDEwMSw5NywxMTYsCi0gICAgMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDIwLDAsCi0gICAgMCwwLDExNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsCi0gICAgMCwxLDEwMCwxLDAsODMsNDEsMiwxMjIsMjIsNjksMTIwLDEwMSw5OSwzMiw5NywKLSAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3OCw0MSwzLDExNCw2NSwwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTIsMTAxLAotICAgIDEyMCwxMDEsOTksOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLDAsMjMzLDIsMCwwLDExNSwKLSAgICAyLDAsMCwwLDAsMywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCwKLSAgICA4Myw0MSwyLDEyMiw1Nyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLAotICAgIDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwKLSAgICAzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDQ2LDc4LDExNCwKLSAgICAxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDIzOCwyLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDQsMTIyLDI0LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTYsCi0gICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsMiwKLSAgICAxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyNDQsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LAotICAgIDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTIsODIsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LAotICAgIDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCi0gICAgMTE1LDQ2LDcwLDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCwxMDksMCwwLDAsMjUwLDIsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLAotICAgIDE3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAotICAgIDExNCwzLDAsMCwwLDIxOCwxMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMTE0LDkyLDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTU0LDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LAotICAgIDEzOCwwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsMTU2LAotICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsOTAsMCwKLSAgICAwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1MCwwLDAsMCwKLSAgICAxODYsMiwwLDAsMTE1LDMwLDAsMCwwLDEyLDcsNiwyLDE4LDksMywKLSAgICAxLDIxLDgsMywxLDE4LDExLDE4LDgsMTgsNSwzLDEsMjEsNSwzLAotICAgIDEsMjEsNSwzLDEsMjEsNSwxMTQsMTUwLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDIxMSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDQsMCwKLSAgICAxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLDEzMSwxLDAsOTAsCi0gICAgNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDEsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LDAsMTAwLDEwLDAsCi0gICAgMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMSwwLDEwMCwKLSAgICAxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw2LDAsMTAwLDEzLAotICAgIDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDYsMCwKLSAgICAxMDEsMTIsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAotICAgIDEsMCw5MCwxMywwLDEwMSw2LDAsMTAxLDEyLDAsMTAwLDE3LDAsMTAwLDE4LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTQsMCwxMDEsNiwwLAotICAgIDEwMSwxMiwwLDEwMCwxOSwwLDEwMCwyMCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDE1LDAsMTAwLDQsMCw4Myw0MSwyMSwyMTgsMTQsNzAsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0Miw3NywxMDEsMTE2LAotICAgIDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCi0gICAgMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDEwOCwKLSAgICA5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwxMDEsCi0gICAgMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCi0gICAgMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKLSAgICAxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCi0gICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsCi0gICAgMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyMiw2MCwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsCi0gICAgMTAxLDExMCw0MSw2Miw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMSwwLDAsMCwKLSAgICA0MSwxLDIxOCwxLDEwOSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIsMywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgNzgsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNDIsMCwwLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMzQsMCwxMTYsMiwwLDEyNCwxLDAsCi0gICAgMTI0LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLDIsMSw4MywxMDAsMCwwLAotICAgIDgzLDEwMCwwLDAsODMsNDEsMyw3OCwxMTQsMTA3LDAsMCwwLDkwLDYsMTAyLAotICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsMywxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwKLSAgICAwLDExNCw4NSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsCi0gICAgMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU0LDAsMCwwLAotICAgIDIxLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxNSwxLDE5LDIsMTIyLAotICAgIDI0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCwKLSAgICAxOSwwLDEyNCwwLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiw5Myw3MCwxMDUsCisgICAgMCwxMTUsMTIsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LDEsMTMxLDEsCisgICAgODMsMCw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsMTAxLDExMiwKKyAgICAxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsCisgICAgMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDIyLDYwLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDQxLAorICAgIDYyLDQxLDIsMTE0LDM4LDAsMCwwLDExNCwxLDAsMCwwLDQxLDEsMjE4LAorICAgIDEsMTA5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCw4NiwwLDAsMCwyNTAsMiwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICA3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwKKyAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsCisgICAgMTE0LDI0LDExNiwyLDEyNCwxLDEyNCwwLDEwMCwxLDEwMCwyLDE0MSwzLDgzLDAsCisgICAgMTAwLDAsODMsMCwxMDAsMCw4MywwLDQxLDMsNzgsOTAsNiwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCw0MSwxLDExNCwxMDMsMCwwLDAsNDEsMywxMTQsNDYsMCwwLAorICAgIDAsMTE0LDc1LDAsMCwwLDExNCw3OCwwLDAsMCw0MSw0LDExNCwxNDMsMCwKKyAgICAwLDAsMTE0LDcxLDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDE0NSwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAxMTQsMTQ2LDAsMCwwLDMsMywwLDAsMTE1LDYsMCwwLDAsMCwyLAorICAgIDEwLDEsMTQsMiwxMjIsMjQsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE4LDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLAorICAgIDExNCwxNCwxMjQsMCw4MywwLDEwMCwxLDgzLDAsNDEsMiwxMjIsOTMsNzAsMTA1LAogICAgIDExMCwxMDAsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAogICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwKICAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCiAgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsCiAgICAgMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDU3LAotICAgIDAsMCwwLDExNCw4MiwwLDAsMCw0MSwzLDExNCwxNTEsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1NSwwLDAsMCwyOCwzLDAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsNDYsCisgICAgMCwwLDAsMTE0LDc1LDAsMCwwLDQxLDMsMTE0LDE0MywwLDAsMCwxMTQsCisgICAgNzEsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQ3LDAsMCwwLDEwLDMsMCwKICAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKICAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCiAgICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKICAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCisgICAgODMsMCw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCiAgICAgMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwKICAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0NiwKLSAgICA3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw4OCwwLAorICAgIDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDgyLDAsCiAgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCwxMzgsMCwwLDAsMzcsMywwLDAsMTE1LDAsMCwwLDAsMTIyLAorICAgIDAsMTE0LDEzNCwwLDAsMCwxOSwzLDAsMCwxMTUsMCwwLDAsMCwxMjIsCiAgICAgMjgsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsCiAgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDEsMCwKICAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDQsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDkyLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLAotICAgIDEyNSwxLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMTUsCi0gICAgNTQsMCwxMTYsNCwwLDEwMCwxLDAsMTA2LDUsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTYsNiwwLAotICAgIDExNiwyLDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwxMTYsCi0gICAgOCwwLDEyNCwyLDAsMTI0LDAsMCwxMDYsOSwwLDEzMSwyLDAsMSwxMDAsCi0gICAgMCwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsCi0gICAgMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDEwLDExNCw5NSwwLDAsMCwxMTQsCi0gICAgMTUsMCwwLDAsMTE0LDU3LDAsMCwwLDExNCw4MiwwLDAsMCwxMTQsNzcsCi0gICAgMCwwLDAsMTE0LDUwLDAsMCwwLDExNCw2NSwwLDAsMCwyMTgsMTcsMTAzLAotICAgIDEwMSwxMTYsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LAotICAgIDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCw3LDAsMCwwLDQxLDMsMTE0LDg5LDAsCi0gICAgMCwwLDExNCwxNSwwLDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTM5LDAsMCwKLSAgICAwLDQxLDMsMCwwLDExNSwxMiwwLDAsMCwwLDIsMTIsMSwxNSwxLAotICAgIDE4LDEsOSwxLDE4LDEsMTIyLDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTI0LAotICAgIDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSwxMjIsOTUsNzYsMTExLDk3LAotICAgIDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsCi0gICAgOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LAotICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwxLDExNCw5MCwKLSAgICAwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNDYsCi0gICAgMCwwLDAsNTAsMywwLDAsMTE1LDIsMCwwLDAsMCw3LDEyMiwyNiwKLSAgICA3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDgsCi0gICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxMywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLAotICAgIDgzLDQxLDEsMTIyLDQ1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMCwwLDExNSw2NCwwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwxMjUsMSwxMTYsCisgICAgMiwxMDYsMywxMjQsMSwxMzEsMSwxMTUsMzYsMTE2LDQsMTAwLDEsMTA2LDUsMTI0LAorICAgIDEsMTMxLDEsMTI0LDEsMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDYsMTE2LDIsMTA2LAorICAgIDcsMTI0LDEsMTMxLDIsMTI1LDIsMTE2LDgsMTI0LDIsMTI0LDAsMTA2LDksMTMxLAorICAgIDIsMSwwLDEwMCwwLDgzLDAsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsCisgICAgMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSwxMCwKKyAgICAxMTQsODksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCisgICAgNzUsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsNTgsCisgICAgMCwwLDAsMjE4LDE3LDEwMywxMDEsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LAorICAgIDExMSw5OCwxMDYsMTAxLDk5LDExNiwyMTgsNCwxMDEsMTIwLDEwMSw5OSwxMTQsNywwLDAsCisgICAgMCw0MSwzLDExNCw4MywwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDQsOTksCisgICAgMTExLDEwMCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMTE0LDEzNSwwLDAsMCwyMywzLDAsMCwxMTUsMTIsMCwwLDAsCisgICAgMCwyLDgsMSwxMCwxLDEwLDEsOCwxLDEyLDEsMTIyLDI2LDcwLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLAorICAgIDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsCisgICAgMCwwLDExNiwwLDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsNDEsMSwxMjIsOTUsCisgICAgNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsCisgICAgMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwKKyAgICAxLDExNCw4NCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKKyAgICAwLDExNCwxMzgsMCwwLDAsMzIsMywwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICA3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSw4MywKKyAgICAwLDQxLDEsMTIyLDQ1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCiAgICAgOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLAogICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDQxLDIsMTE0LDU3LDAsMCwwLDExNCwxNjIsMCwwLDAsNDEsMiwKLSAgICAxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU2LDAsMCwwLDU5LDMsCisgICAgMTAxLDQ2LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCwxNTQsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQ4LDAsMCwwLDQxLDMsCiAgICAgMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjMsNzAsMTE0LDExMSwxMjIsMTAxLAogICAgIDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLAogICAgIDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsCiAgICAgNDEsMiwxMjIsNTQsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwKICAgICA5NywxMTUsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCiAgICAgMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwKICAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU3LDAsMCwwLAotICAgIDY1LDMsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKKyAgICA0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNDksMCwwLDAsCisgICAgNDcsMywwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLAogICAgIDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwKICAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDEsMSwxMjIsCi0gICAgNDYsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDQxLAotICAgIDIsMTE0LDU3LDAsMCwwLDkwLDE3LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsMTE0LDE1MSwwLDAsMCwKLSAgICAxMTQsNzgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMTE0LDEwOSwwLDAsMCw3MSwzLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDQsMTIyLDI1LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLAotICAgIDE2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAotICAgIDExNCwzLDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwKLSAgICAxNTksMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsMTU1LDAsMCwwLDExNCwxMzgsCi0gICAgMCwwLDAsMTE0LDEzOSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCw4NCwwLAotICAgIDAsMCwxMTQsMTU2LDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDEwOSwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDE2MCwwLDAsMCwzLDMsMCwwLDExNSwzMCwKLSAgICAwLDAsMCwxMiw3LDYsMiwxOCw5LDMsMSwyMSw2LDMsMSwxOCwKLSAgICA4LDE4LDQsMTgsOSwxOCw5LDMsMSwyMSw1LDMsMSwyMSw1LDMsCi0gICAgMSwxMTQsMTYwLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDQ2LDAsMCwwLAotICAgIDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsCi0gICAgMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwKLSAgICAwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsMCw4Myw0MSw3LAotICAgIDIxOCwxOCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwKLSAgICAxMTYsMTAxLDEyMCwxMTYsMTIyLDM2LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDMyLDEwOSw5NywKLSAgICAxMTAsOTcsMTAzLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsOTksMSwwLDAsMCwwLAotICAgIDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDI0LDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDEsCi0gICAgMiwxMTQsNTcsMCwwLDAsMTE0LDE0NSwwLDAsMCw0MSwxLDExNCwxOSwwLAorICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLAorICAgIDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDgzLDAsNDEsMSwxMjIsNDYsODIsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKKyAgICAxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDQxLDIsMTE0LDQ2LAorICAgIDAsMCwwLDkwLDE3LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwKICAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDIzLDAsMCwwLDg0LDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwKLSAgICAxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksCi0gICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAwLDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsMTAxLDk3LAotICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSwKLSAgICA5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsMTExLDEwMiwKLSAgICAzMiw5NywxMTAsMTIxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCw5OSwxMDEsCi0gICAgMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsNzgsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LAotICAgIDU4LDAsMCwwLDQxLDQsMTE0LDE5LDAsMCwwLDkwLDgsMTAxLDEyMCw5OSwKLSAgICA5NSwxMTYsMTIxLDExMiwxMDEsOTAsOSwxMDEsMTIwLDk5LDk1LDExOCw5NywxMDgsMTE3LDEwMSwKLSAgICA5MCwxMywxMDEsMTIwLDk5LDk1LDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsCi0gICAgMCwwLDAsODgsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyNywKLSAgICA5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLAotICAgIDEyMCwxMTYsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsCi0gICAgMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwKLSAgICAwLDAsMTE0LDIzLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCi0gICAgMTE0LDE2NSwwLDAsMCw4MCwzLDAsMCwxMTUsNiwwLDAsMCwxMiwyLAotICAgIDYsMiwxMiw0LDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLDAsCi0gICAgMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODgsCi0gICAgMCwwLDAsMTI0LDEsMCwxMDYsMCwwLDEwMCwxLDAsMTI0LDIsMCwxMDAsCi0gICAgMiwwLDI0LDEzMSwyLDAsMTI1LDMsMCwxMTYsMSwwLDEyNCwzLDAsMTMxLAotICAgIDEsMCwxMjQsMiwwLDEwNywwLDAsMTE0LDUyLDAsMTE2LDIsMCwxMDAsMywKLSAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMywwLDEwMCw0LDAsMjUsMTI1LDQsCi0gICAgMCwxMjQsMCwwLDExNCw4NCwwLDEwMCw1LDAsMTA2LDMsMCwxMjQsNCwwLAotICAgIDEyNCwwLDAsMTMxLDIsMCw4MywxMjQsNCwwLDgzLDQxLDYsMTIyLDUwLDgyLAotICAgIDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LAotICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLAotICAgIDMyLDk3LDExMCwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSwKLSAgICA0NiwxMTQsMTIxLDAsMCwwLDExNCw0NSwwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLAotICAgIDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsCi0gICAgMzMsMCwwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LAotICAgIDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDMsMTA4LDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsCi0gICAgMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNTAsMCwwLDAsNDEsNSwxMTQsMTUsMCwKLSAgICAwLDAsMjE4LDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LAotICAgIDEwMSwxMDgsOTAsNCw5OCwxMDUsMTE2LDExNSw5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LAotICAgIDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw5MywzLDAsMCwKLSAgICAxMTUsMTAsMCwwLDAsMCwyLDIyLDEsMTgsMSwxMiwxLDEwLDEsMTE0LAotICAgIDE3MSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsCi0gICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw0NywwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwKLSAgICAxMjQsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsMCwwLDgzLAotICAgIDExNiwxLDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSw3OCwKLSAgICA0MSwyLDExNCwxNTUsMCwwLDAsMTE0LDg1LDAsMCwwLDQxLDQsMjE4LDYsCi0gICAgMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDE1LDAsMCwwLDExNCwxNTIsMCwwLDAsCi0gICAgMTE0LDk5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksCi0gICAgOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDEwMiwzLDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDMsMTgsMSwxMiwxLDQsMSwxMTQsMTczLDAsMCwwLDk5LDMsMCwKLSAgICAwLDAsMCwwLDAsMCw5LDAsMCwwLDI3LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw0MiwxLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOSwwLDExNCw0MSwwLDExNiwwLDAsMTA2LDEsMCwxMiwxMTQsNDEsMCwKLSAgICAxMTYsMiwwLDEwNiwzLDAsMTAwLDIsMCwxMTYsNCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMCwwLDExNiwwLDAsMTA2LDUsMCwxMDcsNiwwLDEyNSwzLDAsMTIwLAotICAgIDIzNSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5MywyMjAsMCwxMjUsNCwwLDExNiwKLSAgICA2LDAsMTMxLDAsMCwxNDMsOTAsMCwxLDEyMSwxMywwLDEyNCw0LDAsMTA2LAotICAgIDcsMCwxMjUsNSwwLDg3LDExMCw1MSwwLDQsMTE2LDgsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTQ4LDAsMSwxLDEsMTE2LDksMCwxMjQsNCwwLDEyNCwwLDAsMTI0LAotICAgIDEsMCwxMzEsMywwLDEyNSw2LDAsMTI0LDYsMCwxMDAsMSwwLDEwNyw4LAotICAgIDAsMTE0LDE0NCwwLDExOSw2NiwwLDg5LDExMCwxOSwwLDg4LDEyNCw1LDAsMTI0LAotICAgIDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsNiwwLDg3LDEwMCwKLSAgICAxLDAsODEsODIsODgsMTI0LDYsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDY2LAotICAgIDAsMTI0LDMsMCwxMiwxMTQsMjYsMSwxMjQsMCwwLDExNiwwLDAsMTA2LDUsCi0gICAgMCwxMDcsNiwwLDExNCwyNiwxLDExNiwwLDAsMTA2LDUsMCwxMjQsMCwwLAotICAgIDI1LDEyNSw3LDAsMTIxLDEzLDAsMTI0LDcsMCwxMDYsMTAsMCwxMjUsOCwwLAotICAgIDg3LDExMCwyMiwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMiwxLDEsMSwKLSAgICAxLDEyNCw2LDAsODMsODksMTEzLDMwLDEsODgsMTI0LDgsMCwxMDAsMSwwLAotICAgIDEwNyw4LDAsMTE0LDE5LDEsMTI0LDYsMCw4MywxMjQsOCwwLDgzLDExMyw2NiwKLSAgICAwLDEyNCw2LDAsODMsMTEzLDY2LDAsODcsMTAwLDEsMCw4MywxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDIzLDcwLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDc4LDEyMiwyMiwxMTUsCi0gICAgMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLAotICAgIDEwMSwxMDksMTEyLDExNiwxMjEsNDEsMTEsMTE0LDE0LDAsMCwwLDIxOCw5LDEwOSwxMDEsCi0gICAgMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNDEsMCwwLDAsMTE0LDE0MiwwLDAsCi0gICAgMCwyMTgsMTMsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLAotICAgIDExNCwyMSwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LAotICAgIDk2LDAsMCwwLDExNCwxNzMsMCwwLDAsMTE0LDk1LDAsMCwwLDQxLDksCi0gICAgMTE0LDE1LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCw5MCwKLSAgICA5LDEwNSwxMTUsOTUsMTE0LDEwMSwxMDgsMTExLDk3LDEwMCwxMTQsMTcyLDAsMCwwLDExNCwKLSAgICAxNTQsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsOTUsCisgICAgMCwxMTQsMTA1LDAsMCwwLDUzLDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgNCwxMjIsMjUsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDEsMiw3OCw3OCwKKyAgICA0MSwxLDc4LDQxLDE2LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwKKyAgICAyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwxNTAsMCwwLDAsMTE0LDg2LAorICAgIDAsMCwwLDExNCwxNTEsMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTQ3LDAsCisgICAgMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsMTM4LDAsMCwKKyAgICAwLDExNCw3NywwLDAsMCwxMTQsMTQ4LDAsMCwwLDExNCwxNDksMCwwLDAsCisgICAgMTE0LDEwNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1MiwwLDAsMCwyNDEsMiwKKyAgICAwLDAsMTE1LDMwLDAsMCwwLDgsNyw0LDIsMTIsOSwyLDEsMTIsCisgICAgNiwyLDEsMTIsOCwxMiw0LDEyLDksMTIsOSwyLDEsMTQsNSwyLAorICAgIDEsMTQsNSwyLDEsMTE0LDE1MiwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICAzMiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywKKyAgICAxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsCisgICAgMTAwLDYsODMsMCw0MSw3LDIxOCwxOCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LAorICAgIDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMTIyLDM2LDY3LDExMSwxMTAsMTE2LAorICAgIDEwMSwxMjAsMTE2LDMyLDEwOSw5NywxMTAsOTcsMTAzLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTA2LDEsMTMxLDAsCisgICAgMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsMjQsNjUsOTksMTEzLDExNywxMDUsMTE0LAorICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LAorICAgIDEwNyw0Niw3OCw0MSwyLDExNCw0NiwwLDAsMCwxMTQsMTM3LDAsMCwwLDQxLAorICAgIDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw0OCwwLDAsMCw2NiwzLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDIsMTIyLDI4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLAorICAgIDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiw0Niw5NSw5NSwxMDEsMTEwLDExNiwxMDEsCisgICAgMTE0LDk1LDk1LDk5LDQsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAorICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwKKyAgICAxLDEzMSwwLDEsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsCisgICAgMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgMTA4LDExMSw5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsCisgICAgMTExLDEwMiwzMiw5NywxMTAsMTIxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCwKKyAgICA5OSwxMDEsMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsNzgsNDEsMiwxMTQsNDYsMCwwLAorICAgIDAsMTE0LDQ3LDAsMCwwLDQxLDQsMTE0LDI2LDAsMCwwLDkwLDgsMTAxLAorICAgIDEyMCw5OSw5NSwxMTYsMTIxLDExMiwxMDEsOTAsOSwxMDEsMTIwLDk5LDk1LDExOCw5NywxMDgsCisgICAgMTE3LDEwMSw5MCwxMywxMDEsMTIwLDk5LDk1LDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LAorICAgIDEwNywxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAxMTQsNTAsMCwwLDAsNzAsMywwLDAsMTE1LDIsMCwwLDAsMCwyLAorICAgIDEyMiwyNyw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwKKyAgICAxMTYsMTAxLDEyMCwxMTYsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsCisgICAgMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LAorICAgIDMsMCwwLDAsMTE0LDQ4LDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsMTAsCiAgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKLSAgICAwLDAsMjE4LDEwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxMTEsMywKLSAgICAwLDAsMTE1LDQ4LDAsMCwwLDAsMiwyNSwxLDE2LDQsMTUsMSwxNiwKLSAgICAxLDEwLDEsMywxLDEzLDEsMTMsMSwxOCwxLDEyLDEsOCwyLDI1LAotICAgIDEsMTIsMiwyMiwxLDEzLDEsMywxLDEzLDEsMTMsNCw5LDIsMTIsCi0gICAgMSw0LDIsNywyLDgsMiwxMTQsMTc2LDAsMCwwLDk5LDMsMCwwLAotICAgIDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE4NSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMzEsCi0gICAgMiwwLDExNSw0MiwwLDExNiwyLDAsMTAwLDEsMCwxMDYsMywwLDExNiw0LAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLAotICAgIDEyNCwyLDAsMTAwLDIsMCwxMDcsMCwwLDExNCw2NiwwLDExNiw1LDAsMTAwLAotICAgIDMsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDIsMCwxMDAsMiwwLDEwNyw0LAotICAgIDAsMTE0LDE1MCwwLDExNiwwLDAsMTI0LDEsMCwxMTYsMSwwLDEzMSwyLDAsCi0gICAgMTE1LDEwOCwwLDExNiwyLDAsMTAwLDQsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLAotICAgIDQyLDAsMTI0LDEsMCwxMTYsNiwwLDEwNiw3LDAsMTA3LDcsMCwxMTQsMTUwLAotICAgIDAsMTAwLDUsMCwxMjUsMywwLDExNiw4LDAsMTI0LDMsMCwxMDYsMywwLAotICAgIDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDAsMCwxMiwKLSAgICAxMTQsMTgxLDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDE4MSwwLDExNiwKLSAgICA1LDAsMTAwLDYsMCwxMzEsMSwwLDEzMCwxLDAsMTAwLDcsMCw4Myw0MSwKLSAgICA4LDEyMiwyOCw4NiwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwzNCwxMTUsOTcsMTEwLDEwMSwzNCw0NiwxMjIsCi0gICAgMzEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTA5LDExNywxMTUsCi0gICAgMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTE2LDExNCw0NCwzMiwxMTAsMTExLDExNiwzMiwxMjMsMTI1LAotICAgIDExNCwzMywwLDAsMCwxMjIsMTgsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTE3LDExNSwKLSAgICAxMTYsMzIsOTgsMTAxLDMyLDYyLDYxLDMyLDQ4LDEyMiwzMSw5NSw5NSwxMTIsOTcsOTksCi0gICAgMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTEwLDExMSwxMTYsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LAotICAgIDExMSwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMjIsNjEsODAsOTcsMTE0LDEwMSwKLSAgICAxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsNDQsMzIsOTksOTcsMTEwLDExMCwxMTEsCi0gICAgMTE2LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAotICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTIyLDE3LDY5LDEwOSwxMTIsMTE2LDEyMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw3OCw0MSw5LDIxOCwKLSAgICAxMCwxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwzLDExNSwxMTYsMTE0LAotICAgIDIxOCw5LDg0LDEyMSwxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsNTAsMCwwLDAsCi0gICAgMTE0LDEzLDAsMCwwLDExNCwxNjgsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwKLSAgICAyMSwwLDAsMCwyMTgsMTEsODMsMTIxLDExNSwxMTYsMTAxLDEwOSw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsNDEsNCwxMTQsMTUsMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsMTcwLDAsCi0gICAgMCwwLDExNCwxNDcsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsOTUsCi0gICAgOTksMTA0LDEwMSw5OSwxMDcsMTUxLDMsMCwwLDExNSwyNCwwLDAsMCwwLDIsCi0gICAgMTUsMSwyNywxLDEyLDEsMTIsMSwxMiwxLDE1LDEsMTUsMSwxNSwxLAotICAgIDYsMiwyMSwxLDE5LDEsMTE0LDE4MSwwLDAsMCwxMjIsMTYsNzgsMTExLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwxMjIsNCwxMjMsCi0gICAgMzMsMTE0LDEyNSw5OSwyLDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwKLSAgICAxMiwwLDAsMCw2NywwLDAsMCwxMTUsNDAsMSwwLDAsMTAwLDAsMCwKLSAgICAxMjUsMiwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwyNSwxMjUsMywwLDEyNCwzLDAsMTE0LDE3NSwwLDEyNCwzLDAsMTE2LAotICAgIDEsMCwxMDYsMiwwLDEwNyw3LDAsMTE0LDU5LDAsMTE2LDMsMCwxMjQsMSwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCwxLDEyNCwwLDAsMTE2LDEsMCwxMDYsMiwKLSAgICAwLDEwNyw2LDAsMTE0LDg1LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwwLDAsCi0gICAgMjUsODMsMTE2LDEsMCwxMDYsMiwwLDEyNCwzLDAsMjUsMTI1LDQsMCwxMjEsCi0gICAgMTMsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LDIsMCw4NywxMTAsNjEsMCw0LAotICAgIDExNiw1LDAsMTA3LDEwLDAsMTE0LDE3NCwwLDEsMSwxLDExNiw2LDAsMTAwLAotICAgIDMsMCwyMywxMDYsNywwLDEyNCwwLDAsMTI0LDMsMCwxMzEsMiwwLDEyNSwKLSAgICA1LDAsMTE2LDgsMCwxMjQsNSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwKLSAgICAxLDEwMCwwLDAsMTMwLDIsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LAotICAgIDAsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwwLAotICAgIDAsMTA3LDgsMCwxMTQsMjMyLDAsMTE2LDgsMCwxMTYsNiwwLDEwNiw3LDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwKLSAgICAxLDAsMTEwLDEyLDAsMTE2LDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEyNSw3LAotICAgIDAsMTI0LDMsMCwxMTQsMzYsMSwxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwKLSAgICAyNSwxMjUsNCwwLDExNiwxMSwwLDEyNCw0LDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEwMCwxLDAsMTMxLDEsMCwxMDAsNSwwLDI1LDEyNCw3LDAsMTMxLDMsMCwKLSAgICAxLDEyNCw3LDAsODMsNDEsNiw3OCwxMTQsMTIxLDAsMCwwLDExNCwzMywwLAotICAgIDAsMCwxMjIsMjMsNTksMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLAotICAgIDExNiwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxNDAsMCwwLDAsNDEsMTIsMTE0LDEyMiwwLDAsMCwxMTQsMTQsMCwwLAotICAgIDAsMTE0LDIxLDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsMTMxLDAsMCwwLAotICAgIDExNCw5NiwwLDAsMCwyMTgsOCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTQsCi0gICAgNTAsMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE0OSwKLSAgICAwLDAsMCwxMTQsNSwwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwyMTgsCi0gICAgNywxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMTQsMTUyLDAsMCwwLDExNCwxMjMsMCwKLSAgICAwLDAsOTAsMTMsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMTQsMTQ3LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LAotICAgIDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNzEsMywwLDAsMTE1LDQyLDAsMCwKLSAgICAwLDAsMSw2LDEsMTksMSw2LDEsMTUsMSwxMywyLDE1LDEsMTEsCi0gICAgMSwxMywxLDMsMSwxMywxLDEzLDEsMjIsMSwyNiwxLDE1LDEsMTIsCi0gICAgMSwzMCwyLDEyLDEsNiwyLDEzLDEsMjksMSwxMTQsMTg0LDAsMCwwLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEwLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwzNywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxNDMsMTgsMCwxLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsODMsODcsMTAwLDEsMCw4MSw4Miw4OCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMTIyLDU0LDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwKLSAgICAzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLDExNCw1NCwwLDAsCi0gICAgMCwxMTQsMTg0LDAsMCwwLDQxLDIsMTE0LDE1LDAsMCwwLDExNCwxODMsMCwKKyAgICAwLDAsMTE0LDE1NywwLDAsMCw2MiwzLDAsMCwxMTUsNiwwLDAsMCwKKyAgICA4LDIsNCwyLDgsNCwxMTQsMTU3LDAsMCwwLDk5LDMsMCwwLDAsCisgICAgMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDY0LDAsMCwwLDEyNCwxLDEwNiwwLDEwMCwxLDEyNCwyLDEwMCwyLDI0LAorICAgIDAsMTMxLDIsMTI1LDMsMTE2LDEsMTI0LDMsMTMxLDEsMTI0LDIsMTA3LDAsMTE0LAorICAgIDM2LDExNiwyLDEwMCwzLDEzMSwxLDEzMCwxLDEyNCwzLDEwMCw0LDI1LDAsMTI1LAorICAgIDQsMTI0LDAsMTE0LDYwLDEwMCw1LDEwNiwzLDEyNCw0LDEyNCwwLDEzMSwyLDgzLAorICAgIDAsMTI0LDQsODMsMCw0MSw2LDEyMiw1MCw4MiwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSwKKyAgICAzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsOTcsOTgsCisgICAgMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTExLDExMCwxMDEsNDYsMTE0LDExNywwLDAsMCwKKyAgICAxMTQsMzMsMCwwLDAsMTIyLDUwLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsCisgICAgMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDk4LDEwMSwxMjEsMTExLDExMCwxMDAsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLAorICAgIDEwOCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDE5LDAsMCwwLDEyMiw1LAorICAgIDEyMywxMjUsNDYsMTIzLDEyNSw0MSw0LDIxOCw2LDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDIxOCwKKyAgICAzLDEwOCwxMDEsMTEwLDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDM4LDAsMCwwLDQxLDUsMTE0LDE1LDAsMCwwLDIxOCw3LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwyMTgsNSwxMDgsMTAxLDExOCwxMDEsMTA4LDkwLDQsOTgsMTA1LAorICAgIDExNiwxMTUsOTAsNCw5OCw5NywxMTUsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxMyw5NSwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwKKyAgICAxMDEsOTUsMTEwLDk3LDEwOSwxMDEsNzUsMywwLDAsMTE1LDEwLDAsMCwwLDAsCisgICAgMiwxNiwxLDEyLDEsOCwxLDgsMSwxMTQsMTYzLDAsMCwwLDk5LDMsCisgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDM0LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEyNCwyLAorICAgIDEzMSwyLDEyNSwzLDEyNCwzLDEwMCwwLDEwNyw4LDExNCwyNCwxMDAsMCw4MywwLAorICAgIDExNiwxLDEyNCwxLDEyNCwzLDEzMSwyLDgzLDAsNDEsMSw3OCw0MSwyLDExNCwKKyAgICAxNDcsMCwwLDAsMTE0LDc4LDAsMCwwLDQxLDQsMjE4LDYsMTAyLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsMTE0LDE1LDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDkzLDAsCiAgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDIxOCwxNCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LAotICAgIDEwMCwxOTgsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDEzLDEsMTE0LDE4NSwKLSAgICAwLDAsMCwxMTQsMzMsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwKLSAgICAwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTY2LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsCi0gICAgMCwxLDEyNCwyLDAsMTAwLDEsMCwxMDcsNCwwLDExNCw0NiwwLDExNiwxLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDMsMCwxMjUsMCwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMzEsMCwwLDEsMTI0LDAsMCwxMTYsNCwwLAotICAgIDEwNiw1LDAsMTA3LDcsMCwxMTQsODQsMCwxMTYsNiwwLDEyNCwwLDAsMTE2LAotICAgIDcsMCwxMzEsMiwwLDgzLDExNiw0LDAsMTA2LDUsMCwxMjQsMCwwLDI1LAotICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE1MiwwLDExNiwKLSAgICAyLDAsMTA2LDgsMCwxMzEsMCwwLDEsMTAwLDMsMCwxMDYsOSwwLDEyNCwKLSAgICAwLDAsMTMxLDEsMCwxMjUsNCwwLDExNiwxMCwwLDEyNCw0LDAsMTAwLDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDEsMTMwLDEsMCwxMTYsMTEsMCwxMjQsMCwwLAotICAgIDEzMSwxLDAsMSwxMjQsMywwLDgzLDQxLDUsOTcsNTAsMSwwLDAsNzMsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsMzIsMTA1LDExNiwxMTUsMzIsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDk3LDEwOCwxMDgsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsCi0gICAgMzIsMTA5LDk3LDEwMCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDQ0LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw5NywxMDAsMTA2LDExNywxMTUsMTE2LAotICAgIDEwOSwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwKLSAgICAxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLAotICAgIDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMTQsMTAxLDk3LDExNiwxMDEsMTE1LDExNiwKLSAgICAzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDEwMCwxMDEsMTEwLDExMSwxMDksMTA1LDExMCw5NywKLSAgICAxMTYsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw5NywKLSAgICAxMDgsMTA1LDExNiwxMjEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDExNiwxMTksMTAxLDEwMSwxMTAsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTcsCi0gICAgMTEwLDEwMCwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSw0NiwzMiw4NCwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDEwOCwxMTcsMTAwLDEwMSwxMTUsMzIsMTE1LDEwMSwxMTYsCi0gICAgMTE2LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwKLSAgICAzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAwLDEwNSwxMDAsMzIsMTEwLDExMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTE0LDMzLDAsMCwwLDc4LDEyMiw0MCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKLSAgICAxMTEsMTAyLDMyLDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsMTAxLDEwMCw1OSwzMiw3OCwxMTEsCi0gICAgMTEwLDEwMSwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwxMTQsMTUsMCwwLDAsNDEsMTIsMTE0LDE4MSwwLDAsMCwxMTQsMTcxLDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCwxMTQsMTQ1LDAsMCwwLDExNCwxNCwwLDAsCi0gICAgMCwxMTQsMjEsMCwwLDAsMTE0LDE4NSwwLDAsMCwyMTgsMTEsOTUsMTAzLDk5LAotICAgIDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTQsNTgsMCwwLDAsMTE0LDUwLDAsCi0gICAgMCwwLDExNCw3NywwLDAsMCwxMTQsNjMsMCwwLDAsNDEsNSwxMTQsMTUsCi0gICAgMCwwLDAsMTE0LDE2OSwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLAotICAgIDAsMCwxMTQsNzQsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDE4NiwwLDAsMCwyMDQsMywwLDAsMTE1LAotICAgIDI4LDAsMCwwLDAsOSwxNiwxLDEyLDEsMTgsMSwxMCwxLDE1LDEsCi0gICAgMTMsMSwxMywxLDEyLDEsMTAsMSw2LDEsOSwxLDE4LDEsMTAsMSwKLSAgICAxMTQsMTg2LDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsCi0gICAgMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwyMzksMCwwLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCwxMTQsMjM1LDAsMTAwLDIsCi0gICAgMCwxMjQsMSwwLDEwNyw2LDAsMTE0LDgzLDAsMTE2LDEsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwyLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEsMTE2LDAsMCwxMjQsMCwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsCi0gICAgODMsMCwxMjQsMSwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEzMSwxLAotICAgIDAsMSwxMjAsMTQ5LDAsMTI0LDEsMCw2OCw5MywxNDEsMCwxMjUsMywwLDExNiwKLSAgICAwLDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsMTE1LDkwLDAsMTAwLDQsCi0gICAgMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEzMSwyLDAsCi0gICAgMTI1LDQsMCwxMjEsMTcsMCwxMTYsNywwLDEyNCwyLDAsMTI0LDQsMCwxMzEsCi0gICAgMiwwLDEsODcsMTEzLDkwLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyMzAsCi0gICAgMCwxLDEyNSw1LDAsMSwxMjIsNDcsMCwxMTYsOSwwLDEyNCw1LDAsMTMxLAotICAgIDEsMCwxMDYsMTAsMCwxMTYsMTEsMCwxMzEsMSwwLDExNCwyMDksMCwxMjQsNSwKLSAgICAwLDEwNiwxMiwwLDEyNCw0LDAsMTA3LDIsMCwxMTQsMjA5LDAsMTE5LDkwLDAsCi0gICAgMTMwLDAsMCw4Nyw4OSwxMDAsNSwwLDEwMCw1LDAsMTI1LDUsMCwxMjYsNSwKLSAgICAwLDg4LDExMyw5MCwwLDg4LDExMyw5MCwwLDg3LDEyNCwwLDAsODMsNDEsNiwKLSAgICAxMjIsMjM4LDcwLDEwNSwxMDMsMTE3LDExNCwxMDEsMzIsMTExLDExNywxMTYsMzIsMTE5LDEwNCw5NywKLSAgICAxMTYsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsMzIsMTE1LDEwNCwxMTEsCi0gICAgMTE3LDEwOCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwzMiwxMTIsOTcsMTE0LAotICAgIDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywzMiw5OSw5NywxMDgsMTA4LAotICAgIDk3LDk4LDEwOCwxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiw5NywxMDcsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsNDYsMzIsNzMsMTE2LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLAotICAgIDEwMCwzMiwxMTYsMTExLDMyLDEwMCwxMDEsOTksMTExLDExNywxMTIsMTA4LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLAotICAgIDk3LDExNSwxMTUsMTE3LDEwOSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCi0gICAgMTA1LDk4LDM5LDExNSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKLSAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTE0LDEzMSwwLDAsMCwyNTAsMSw0MiwyMTgsNyw5NSw5NSw5NywxMDgsMTA4LDk1LAotICAgIDk1LDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw3OCw0MSwxMywxMTQsNCwwLDAsMCwKLSAgICAxMTQsMTMwLDAsMCwwLDIxOCw2LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDIxOCw2LDEwMSwKLSAgICAxMjAsMTE2LDEwMSwxMTAsMTAwLDExNCwxODgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwKLSAgICAxLDAsMCwwLDExNCw2NSwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3OCwKLSAgICAwLDAsMCwxMTQsNzEsMCwwLDAsMjE4LDE1LDk1LDY5LDgyLDgyLDk1LDc3LAotICAgIDgzLDcxLDk1LDgwLDgyLDY5LDcwLDczLDg4LDExNCwxNSwwLDAsMCw0MSw2LAotICAgIDExNCw4OSwwLDAsMCwyMTgsOCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNCwKLSAgICAxODMsMCwwLDAsMjE4LDEsMTIwLDkwLDksMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywKLSAgICAxMDksMTAxLDkwLDMsMTAxLDEyMCw5OSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSw5NSwKLSAgICAxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDIyOCwzLDAsMCwxMTUsMzQsMCwwLAotICAgIDAsMCwxMCwxNSwxLDEyLDEsMTIsMSwxMywxLDE1LDEsMTYsMSwxMywKLSAgICAxLDE1LDEsMjEsMSwzLDEsMTcsMSwxOCw0LDIxLDEsMTUsMSwzLAotICAgIDEsMjYsMSwxMTQsMTk0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDcyLDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwxLDAsMTI1LDEsCi0gICAgMCwxMjQsMSwwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNjgsMCwxMjQsMCwwLAotICAgIDEwMCwzLDAsMjUsMTI1LDEsMCwxMDAsNCwwLDEyNCwwLDAsMTA3LDcsMCwKLSAgICAxMTQsNjgsMCwxMjQsMSwwLDEwNiwxLDAsMTAwLDUsMCwxMzEsMSwwLDEwMCwKLSAgICA2LDAsMjUsMTI1LDEsMCwxMjQsMSwwLDgzLDQxLDcsMTIyLDE2Nyw2Nyw5NywKLSAgICAxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICA5OCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKLSAgICAxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsCi0gICAgOTcsMTEwLDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwKLSAgICAxMDUsMTEwLDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLAotICAgIDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTE2LDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LAotICAgIDk3LDExNiwzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsCi0gICAgMTA4LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE0LDEzNCwwLDAsMCw3OCwxMTQsMSwwLDAsMCwKLSAgICAxMTQsMTMxLDAsMCwwLDExNCwxMjEsMCwwLDAsMTE0LDMzLDAsMCwwLDQxLAotICAgIDIsMTE0LDQyLDAsMCwwLDExNCwxMjIsMCwwLDAsNDEsMiwyMTgsNywxMDMsCi0gICAgMTA4LDExMSw5OCw5NywxMDgsMTE1LDExNCwxNjksMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDk5LDk3LDEwOCwKLSAgICA5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsNCw0LDAsCi0gICAgMCwxMTUsMTIsMCwwLDAsMCw3LDE1LDEsMTIsMSwxMCwxLDEyLDEsCi0gICAgMTksMSwxMTQsMTk2LDAsMCwwLDk5LDUsMCwwLDAsMCwwLDAsMCwKLSAgICA5LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDIyNywwLDAsCi0gICAgMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMCwwLAotICAgIDEyNCwwLDAsMTMxLDEsMCwxMjUsNSwwLDExMCw1NCwwLDEyNCwxLDAsMTAwLAotICAgIDIsMCwxMDcsOSwwLDExNCw0NSwwLDEyNCwxLDAsMTEwLDMsMCwxMDUsMCwKLSAgICAwLDEyNSw2LDAsMTE2LDEsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsMCwKLSAgICAxMTYsMCwwLDEyNCwwLDAsMTI0LDcsMCwxMjQsNCwwLDEzMSwzLDAsMTI1LAotICAgIDUsMCwxMjQsMywwLDExNSwyMDcsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsCi0gICAgMCwxMTQsMTIyLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwKLSAgICAxMzEsMSwwLDEwMCwxLDAsMjUsMTMxLDEsMCw4MywxMjQsMCwwLDExNSwxMzIsCi0gICAgMCwxMjQsNSwwLDgzLDExNiwzLDAsMTI0LDAsMCwxMzEsMSwwLDExNiwzLAotICAgIDAsMTI0LDAsMCwxMDYsMiwwLDEwMCwzLDAsMTMxLDEsMCwxMDAsMSwwLAotICAgIDI1LDEzMSwxLDAsMjQsMTI1LDgsMCwxMTYsNCwwLDEwNiw1LDAsMTI0LDUsCi0gICAgMCwxMDYsNiwwLDEwMCwyLDAsMTE2LDMsMCwxMjQsNSwwLDEwNiw2LDAsCi0gICAgMTMxLDEsMCwxMjQsOCwwLDI0LDEzMywyLDAsMjUsMjUsODMsMTEwLDE2LDAsCi0gICAgMTE2LDcsMCwxMjQsNSwwLDEyNCwzLDAsMTE2LDAsMCwxMzEsMywwLDgzLAotICAgIDEwMCwyLDAsODMsNDEsNCw5NywyMTUsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsCi0gICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LAotICAgIDExNywxMTQsMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTYsMTExLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwKLSAgICAxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLAotICAgIDM5LDEwOCwxMTEsOTksOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwKLSAgICAxMTYsMzIsMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LAotICAgIDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAotICAgIDEwNSwxMDEsMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLAotICAgIDEwMSwxMjAsMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCi0gICAgMTE2LDEwMSwxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLAotICAgIDEwOSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKLSAgICA2MCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLAotICAgIDg0LDEwNCwxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiwKLSAgICA5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLAotICAgIDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwKLSAgICAxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LAotICAgIDk3LDExNiwxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwKLSAgICAxMTIsMTA3LDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwKLSAgICAzMiwxMTksMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwxMTQsMzMsMCwwLDAsNzgsMTE0LDEyMSwwLDAsMCw0MSw4LDExNCwKLSAgICAxODYsMCwwLDAsMTE0LDE5NiwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDExNCwxNjcsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwKLSAgICAwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTk0LDAsMCwwLDQxLDksMTE0LAotICAgIDE1LDAsMCwwLDExNCwxOTUsMCwwLDAsMjE4LDYsMTA4LDExMSw5OSw5NywxMDgsCi0gICAgMTE1LDExNCwxOTIsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsODksMCwwLDAsCi0gICAgOTAsOCwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LDExNCwxNjksMCwwLDAsOTAsCi0gICAgNyw5OSwxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw5NSw5NSwxOSw0LDAsMCwxMTUsMjYsMCwwLDAsMCwxMSwxMiwxLAotICAgIDE1LDIsMjQsMSwxMiwxLDE4LDEsNiwzLDEyLDEsMjMsMSw2LDEsCi0gICAgNCw0LDM1LDMsNDAsMiwxMTQsMTk5LDAsMCwwLDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDUzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMCwwLDEzMSwxLAotICAgIDAsMTI1LDEsMCwxMjQsMSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsNDMsMCwKLSAgICAxMTYsMiwwLDEwMCwxLDAsMTI0LDAsMCwyMywxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTE2LDMsMCwxMjQsMSwwLDEzMSwxLDAsODMsNDEsMiw3OCwxMjIsMjUsMTEwLAotICAgIDExMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsNCwxMTQsMTUwLDAsMCwwLDExNCwKLSAgICAxNTQsMCwwLDAsMTE0LDc3LDAsMCwwLDExNCwxNDksMCwwLDAsNDEsMiwKLSAgICAxMTQsMTUsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsNTQsNCwwLAotICAgIDAsMTE1LDgsMCwwLDAsMCwxLDE1LDEsMTIsMSwxNiwxLDExNCwyMDAsCi0gICAgMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLAotICAgIDEyLDAsMCwwLDY3LDAsMCwwLDExNSw3NCwxLDAsMCwxMjQsMSwwLAotICAgIDk3LDAsMCwxMjQsMCwwLDk3LDEsMCwxMTYsMiwwLDExNiwxLDAsMTMxLAotICAgIDEsMCwxMjUsMiwwLDEyMCwxMjMsMCwxMTYsMSwwLDEwNiwzLDAsMTA2LDQsCi0gICAgMCwxMzEsMCwwLDY4LDkzLDEwNiwwLDkyLDIsMCwxMjUsMywwLDEyNSw0LAotICAgIDAsMTE2LDUsMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDIsMCwxMTQsNDAsMCwKLSAgICAxMjQsMywwLDExNiwxLDAsMTA2LDYsMCwxMDcsNiwwLDExNCw5MSwwLDExNiwKLSAgICA3LDAsMTI1LDUsMCwxMTAsMjcsMCwxMTYsMCwwLDEwNiw4LDAsMTI0LDMsCi0gICAgMCwxMzEsMSwwLDExNCw0MCwwLDExNiw5LDAsMTI1LDUsMCwxMTAsMywwLAotICAgIDExMyw0MCwwLDExNiwxMCwwLDEyNCw0LDAsMTI0LDUsMCwxMzEsMiwwLDEyNSwKLSAgICA2LDAsMTE2LDExLDAsMTI0LDYsMCwxMjQsNCwwLDEzMSwyLDAsMSwxMTMsCi0gICAgNDAsMCw4NywxMTYsMSwwLDEwNiwzLDAsMTE2LDEyLDAsMjUsMTI1LDcsMCwKLSAgICAxMjAsNzMsMCwxMDAsNSwwLDY4LDkzLDY1LDAsMTI1LDgsMCwxMjQsOCwwLAotICAgIDExNiwxLDAsMTA2LDMsMCwxMDcsNywwLDExNCwyMDYsMCwxMTYsMTMsMCwxMjQsCi0gICAgOCwwLDEzMSwxLDAsMTI1LDksMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwzLAotICAgIDAsMTI0LDgsMCwyNSwxMjUsOSwwLDExNiwxNCwwLDEyNCw3LDAsMTI0LDgsCi0gICAgMCwxMjQsOSwwLDEzMSwzLDAsMSwxMTMsMTcwLDAsODcsMTIxLDE2LDAsMTE2LAotICAgIDEzLDAsMTAwLDIsMCwxMzEsMSwwLDEyNSwxMCwwLDg3LDExMCwyNCwwLDQsCi0gICAgMTE2LDE1LDAsMTA3LDEwLDAsMTE0LDI1LDEsMSwxLDEsMTAwLDMsMCwxMjUsCi0gICAgMTAsMCw4OSwxMTAsMSwwLDg4LDExNiwxNCwwLDEyNCw3LDAsMTAwLDIsMCwKLSAgICAxMjQsMTAsMCwxMzEsMywwLDEsMTE2LDEzLDAsMTAwLDQsMCwxMzEsMSwwLAotICAgIDEyNSwxMSwwLDExNiwxNCwwLDEyNCw3LDAsMTAwLDQsMCwxMjQsMTEsMCwxMzEsCi0gICAgMywwLDEsMTAwLDMsMCw4Myw0MSw2LDEyMiwyNTAsODMsMTAxLDExNiwxMTcsMTEyLAotICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LAotICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTA5LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTE1LDMyLDExNSwxMjEsMTE1LDMyLDEwNSwxMTUsCi0gICAgMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDEyMSwxMTUsNDYsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDk3LAotICAgIDExMCwxMDAsMzIsOTUsMTA1LDEwOSwxMTIsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAotICAgIDEwMCwzMiwxMTYsMTExLDMyLDEwOCwxMTEsOTcsMTAwLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwKLSAgICAxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwKLSAgICAxMTYsMTA0LDExMSwxMTUsMTAxLDMyLDExNiwxMTksMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDEwMSwxMjAsMTEyLDEwOCwxMDUsOTksCi0gICAgMTA1LDExNiwxMDgsMTIxLDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTQxLDAsMCwwLDExNCwzNCwwLDAsMCw3OCwKLSAgICAxMTQsNjIsMCwwLDAsNDEsMSwxMTQsMTQxLDAsMCwwLDQxLDE2LDExNCw1NywKLSAgICAwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDEzLDAsMCwwLDExNCwyMSwwLAotICAgIDAsMCwyMTgsNSwxMDUsMTE2LDEwMSwxMDksMTE1LDExNCwxNzcsMCwwLDAsMTE0LDc2LAotICAgIDAsMCwwLDExNCwxNTAsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxNjAsMCwKLSAgICAwLDAsMTE0LDEzMiwwLDAsMCwxMTQsMTM3LDAsMCwwLDExNCwxLDAsMCwKLSAgICAwLDExNCwyMDAsMCwwLDAsMTE0LDUsMCwwLDAsMTE0LDc3LDAsMCwwLAotICAgIDQxLDEyLDIxOCwxMCwxMTUsMTIxLDExNSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTgsMTEsCi0gICAgOTUsMTA1LDEwOSwxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTEsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNCwxNSwwLDAsMCwxMTQsODksMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCw4OCwwLDAsMCw5MCwxMSwxMTUsMTAxLAotICAgIDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMSwwLDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDYxLDQsMCwKLSAgICAwLDExNSw1MCwwLDAsMCwwLDksNiwxLDYsMywxMiwxLDI4LDEsCi0gICAgMTUsMSwxNSwxLDksMSwxNSwxLDksMiwzLDEsMTUsMSwxNywzLAotICAgIDEzLDEsMTMsMSwxNSwxLDE1LDIsMTMsMSwyMCwzLDMsMSwxNiwxLAotICAgIDEzLDIsMTEsMSwxNiwzLDEyLDEsMTE0LDIwNCwwLDAsMCw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw4NywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICAxMzEsMiwwLDEsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE2LDQsMCwKLSAgICAxMzEsMSwwLDEsMTE2LDEsMCwxMDYsMiwwLDEwNiwzLDAsMTE2LDUsMCwKLSAgICAxMzEsMSwwLDEsMTAwLDEsMCwxMDAsMiwwLDEwOCw2LDAsMTI1LDIsMCwKLSAgICAxMjQsMiwwLDk3LDcsMCwxMjQsMiwwLDEwNiw4LDAsMTE2LDEsMCwxMDYsCi0gICAgOSwwLDExNiwxMCwwLDI1LDEzMSwxLDAsMSwxMDAsMiwwLDgzLDQxLDMsCi0gICAgMTIyLDUwLDczLDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCi0gICAgMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsNDYsMTE0LDMzLDAsMCwwLDc4LDQxLDExLDExNCwyMDQsMCwwLAotICAgIDAsMTE0LDE0LDAsMCwwLDExNCwxNzQsMCwwLDAsMTE0LDExMywwLDAsMCwKLSAgICAxMTQsMTUwLDAsMCwwLDExNCwxNjAsMCwwLDAsMjE4LDI2LDk1LDEwMiwxMTQsMTExLAotICAgIDEyMiwxMDEsMTEwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAxLDEyMCwKLSAgICAxMTYsMTAxLDExNCwxMTAsOTcsMTA4LDExNCwxMTksMCwwLDAsMjE4LDgsOTUsMTA1LDExMCwKLSAgICAxMTUsMTE2LDk3LDEwOCwxMDgsMTE0LDIxLDAsMCwwLDExNCwxLDAsMCwwLDQxLAotICAgIDMsMTE0LDIwMiwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwyMDUsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAotICAgIDIwNiwwLDAsMCwxMDgsNCwwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMywKLSAgICAyLDE2LDEsMTYsMywxMiwxLDYsMSwxMTQsMjA2LDAsMCwwLDQxLDUxLAotICAgIDExNCwzLDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyLDAsMCwwLDExNCwKLSAgICAxNiwwLDAsMCwxMTQsMTcsMCwwLDAsMTE0LDU5LDAsMCwwLDExNCw0MSwKLSAgICAwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDMxLDAsMCwwLDExNCwzMiwwLAotICAgIDAsMCwxMTQsNTMsMCwwLDAsMTE0LDU0LDAsMCwwLDExNCw1NiwwLDAsCi0gICAgMCwxMTQsNjMsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw3NSwwLDAsMCwKLSAgICAxMTQsODEsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCw5MCwwLDAsMCwxMTQsCi0gICAgMTAxLDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsODUsCi0gICAgMCwwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksMTE2LDkwLDksOTUsODAsNzksCi0gICAgODAsODUsNzYsNjUsODQsNjksMTE0LDEzMiwwLDAsMCwxMTQsMTM3LDAsMCwwLAotICAgIDExNCwxNDQsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCw4NiwwLDAsMCwxMTQsCi0gICAgMTQ4LDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LDg3LDAsMCwwLDExNCwxNTAsCi0gICAgMCwwLDAsMTE0LDE2MCwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzEsMCwKLSAgICAwLDAsMTE0LDE3MywwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwxODEsMCwwLAotICAgIDAsMTE0LDE5MSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODQsMCwwLDAsCi0gICAgMTE0LDE4NSwwLDAsMCwxMTQsMTg2LDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LAotICAgIDE5NiwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDIwNCwKLSAgICAwLDAsMCwxMTQsMjA2LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw2MCwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSw5NiwwLDAsMCw2LAotICAgIDE3LDYsMiwxMiw4LDEyLDQsMTksMjAsNiwyLDYsMywyMiw0LDE5LAotICAgIDY4LDE5LDIxLDE5LDE5LDEyLDE5LDEyLDE5LDEyLDExLDE4LDgsMTIsMTEsMTIsCi0gICAgMTIsMTIsMTYsMTIsMzYsMTksMjcsMTksMTAxLDI0LDI2LDksMywxOCw0NSwxOCwKLSAgICA2MCwxMiwxOCwxMiwxNywxMiwyNSwxMiwyOSwxMiwyMywxMiwxNiwxOSw3MywxOSwKLSAgICA3NywxOSwxMywxMiw5LDEyLDksMTUsNDAsMTIsMTcsNiwxLDEwLDIsMTIsCi0gICAgMjcsMTIsNiwxOCwyNCwxMiwzMiwxMiwxNSwyNCwzNSwxMiw3LDEyLDQ3LAorICAgIDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5NSwxMDgsMTAxLAorICAgIDEwMyw5Nyw5OSwxMjEsODQsMywwLDAsMTE1LDgsMCwwLDAsMCwzLDEyLAorICAgIDEsOCwxLDQsMSwxMTQsMTY1LDAsMCwwLDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCwxMCwwLDAsMCwyNywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMjQyLDAsMCwwLDExNiwwLDEwNiwxLDEyNSwzLDEyNCwzLDEwMCwxLDEwNyw4LAorICAgIDExNCwyMiwxMTYsMiwxMDAsMiwxMzEsMSwxMzAsMSwxMjQsMywxMTUsMzgsMTE2LDMsCisgICAgMTA2LDQsMTAwLDMsMTE2LDUsMTMxLDIsMSwwLDEyNCwwLDExNiwwLDEwNiw2LAorICAgIDEwNyw2LDEyNSw0LDEyMCwxODgsMTI0LDMsNjgsMCw5MywxNzYsMTI1LDUsMTE2LDcsCisgICAgMTMxLDAsMTQzLDcyLDEsMCwxMjEsMTAsMTI0LDUsMTA2LDgsMTI1LDYsODcsMCwKKyAgICAxMTAsNDIsNCwwLDExNiw5LDEwNywxMCwxMTQsMTE4LDEsMCwxLDAsMSwwLAorICAgIDExNiwxMCwxMjQsNSwxMjQsMCwxMjQsMSwxMzEsMywxMjUsNywxMjQsNywxMDAsMSwKKyAgICAxMDcsOCwxMTQsMTE0LDExOSw1NCw4OSwwLDExMCwxNCw4OCwwLDEyNCw2LDEyNCwwLAorICAgIDEyNCwxLDEyNCwyLDEzMSwzLDEyNSw3LDg3LDAsMTAwLDEsODEsMCw4MiwwLAorICAgIDg4LDAsMTI0LDcsMTAwLDEsMTA3LDksMTE0LDU0LDEyNCw0LDEyLDAsMTE0LDIyNiwKKyAgICAxMjQsMCwxMTYsMCwxMDYsNiwxMDcsNiwxMTQsMjI2LDExNiwwLDEwNiw2LDEyNCwwLAorICAgIDI1LDAsMTI1LDgsMTIxLDEwLDEyNCw4LDEwNiwxMSwxMjUsOSw4NywwLDExMCwyMCwKKyAgICA0LDAsMTE2LDksMTA3LDEwLDExNCwyMDYsMSwwLDEsMCwxLDAsMTI0LDcsCisgICAgODMsMCw4OCwwLDEyNCw5LDEwMCwxLDEwNyw4LDExNCwyMjAsMTI0LDcsODMsMCwKKyAgICAxMjQsOSw4MywwLDExMyw1NCwxMjQsNyw4MywwLDExMyw1NCw4NywwLDEwMCwxLAorICAgIDgzLDAsMTAwLDEsODMsMCw0MSw0LDEyMiwyMSw3MCwxMDUsMTEwLDEwMCwzMiw5NywKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwxMDEsOTksNDYsNzgsCisgICAgMTIyLDUzLDExNSwxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLAorICAgIDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsNDQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiwKKyAgICAxMDUsMTE1LDMyLDEwOCwxMDUsMTA3LDEwMSwxMDgsMTIxLDMyLDExNSwxMDQsMTE3LDExNiwxMTYsMTA1LAorICAgIDExMCwxMDMsMzIsMTAwLDExMSwxMTksMTEwLDEyMiwyMiwxMTUsMTIxLDExNSw0NiwxMDksMTAxLDExNiwKKyAgICA5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsNDEsCisgICAgMTIsMTE0LDE0LDAsMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCw3MCwwLDAsMCwyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywKKyAgICAxMTUsMjE4LDQsMTE5LDk3LDExNCwxMTAsMjE4LDEzLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsCisgICAgOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTQsNzksMCwwLDAsMTE0LDE1NywwLDAsMCwKKyAgICAxMTQsMTQ2LDAsMCwwLDExNCw5MCwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwKKyAgICA4OSwwLDAsMCw0MSwxMCwxMTQsMTUsMCwwLDAsMTE0LDE0NCwwLDAsMCwKKyAgICAxMTQsMTQ1LDAsMCwwLDExNCwxNjYsMCwwLDAsOTAsOSwxMDUsMTE1LDk1LDExNCwKKyAgICAxMDEsMTA4LDExMSw5NywxMDAsMTE0LDE2NCwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwKKyAgICA4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxMCw5NSwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTMsMywwLDAsMTE1LDU0LDAsCisgICAgMCwwLDAsMiw2LDEsOCwyLDgsMyw0LDEsMTIsNSwxMCwxLAorICAgIDEwLDEsOCwxLDIsMSwxMCwxLDE0LDEsMTIsMSw4LDEsOCwyLAorICAgIDIyLDEsOCwyLDE2LDEsMTAsMSwyLDEsMTAsMSwxNCw0LDYsMiwKKyAgICA4LDEsNCwyLDYsMiw4LDIsMTE0LDE3MCwwLDAsMCw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsNCwwLDAsMCw0LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNDAsMCwwLDAsMTE2LDAsMTI0LDAsMTE2LDEsMTMxLDIsMTE1LAorICAgIDI4LDExNiwyLDEwMCwxLDEwNiwzLDExNiw0LDEyNCwwLDEzMSwxLDEzMSwxLDEzMSwKKyAgICAxLDEzMCwxLDEyNCwyLDEwMCwyLDEwNywwLDExNCw0NCwxMTYsNSwxMDAsMywxMzEsCisgICAgMSwxMzAsMSwxMjQsMiwxMDAsMiwxMDcsNCwxMTQsMTE0LDExNiwwLDEyNCwxLDExNiwKKyAgICAxLDEzMSwyLDExNSw3MiwxMTYsMiwxMDAsNCwxMzEsMSwxMzAsMSwxMTAsNDIsMTI0LAorICAgIDEsMTE1LDg2LDExNiw2LDEwMCw1LDEzMSwxLDEzMCwxLDExMCwyOCwxMjQsMSwxMTYsCisgICAgNywxMDYsOCwxMDcsNywxMTQsMTE0LDEwMCw2LDEyNSwzLDExNiw5LDEyNCwzLDEwNiwKKyAgICAzLDEyNCwxLDEzMSwxLDEzMSwxLDEzMCwxLDEyNCwwLDEyLDAsMTE0LDEzNiwxMjQsCisgICAgMiwxMDAsMiwxMDcsMiwxMTQsMTM2LDExNiw1LDEwMCw3LDEzMSwxLDEzMCwxLDEwMCwKKyAgICA4LDgzLDAsNDEsOSwxMjIsMjgsODYsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiw5NywxMTQsCisgICAgMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMzQsMTE1LDk3LDExMCwKKyAgICAxMDEsMzQsNDYsMTIyLDMxLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLAorICAgIDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDExNiwxMTQsNDQsMzIsMTEwLDExMSwKKyAgICAxMTYsMzIsMTIzLDEyNSwxMTQsMTksMCwwLDAsMTIyLDE4LDEwOCwxMDEsMTE4LDEwMSwxMDgsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw2Miw2MSwzMiw0OCwxMjIsMzEsOTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwKKyAgICAxMDEsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTIyLDU0LAorICAgIDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwKKyAgICAxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTAsCisgICAgMTExLDMyLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTIyLDYxLDgwLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMTAsMTExLDExNiwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTAwLDQ0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTIsMTAxLAorICAgIDExNCwxMDIsMTExLDExNCwxMDksMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEyMiwxNyw2OSwxMDksMTEyLDExNiwxMjEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTAsMjE4LDEwLDEwNSwxMTUsMTA1LAorICAgIDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LDksODQsMTIxLAorICAgIDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCwzOCwwLDAsMCwxMTQsMTMsMCwwLAorICAgIDAsMTE0LDE2MCwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDE0LDAsMCwwLAorICAgIDExNCw3OSwwLDAsMCwyMTgsMTEsODMsMTIxLDExNSwxMTYsMTAxLDEwOSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsNDEsNCwxMTQsMTUsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsMTYyLAorICAgIDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LDExNSw5NywxMTAsMTA1LDExNiwxMjEsCisgICAgOTUsOTksMTA0LDEwMSw5OSwxMDcsMTQwLDMsMCwwLDExNSwyOCwwLDAsMCwwLAorICAgIDIsMTAsMSwxOCwxLDgsMSw4LDEsOCwxLDEwLDEsMTAsMSw0LAorICAgIDEsMTAsMiwxMCwxLDQsMiwxNCwxLDE0LDEsMTE0LDE3NSwwLDAsMCwKKyAgICAxMjIsMTYsNzgsMTExLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLAorICAgIDEwMCwzMiwxMjIsNCwxMjMsMzMsMTE0LDEyNSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsOCwwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMjIwLDAsCisgICAgMCwwLDEwMCwwLDEyNSwyLDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLDEwMCwyLAorICAgIDI1LDAsMTI1LDMsMTI0LDMsMTE0LDEzNCwxMjQsMywxMTYsMSwxMDYsMiwxMDcsNywKKyAgICAxMTQsNDIsMTE2LDMsMTI0LDEsMTI0LDMsMTMxLDIsMSwwLDEyNCwwLDExNiwxLAorICAgIDEwNiwyLDEwNyw2LDExNCw2MiwxMTYsMSwxMDYsMiwxMjQsMCwyNSwwLDgzLDAsCisgICAgMTE2LDEsMTA2LDIsMTI0LDMsMjUsMCwxMjUsNCwxMjEsMTAsMTI0LDQsMTA2LDQsCisgICAgMTI1LDIsODcsMCwxMTAsNTAsNCwwLDExNiw1LDEwNywxMCwxMTQsMTMyLDEsMCwKKyAgICAxLDAsMSwwLDExNiw2LDEwMCwzLDIzLDAsMTA2LDcsMTI0LDAsMTI0LDMsCisgICAgMTMxLDIsMTI1LDUsMTE2LDgsMTI0LDUsMTI0LDAsMTAwLDQsMTQxLDIsMTAwLDAsCisgICAgMTMwLDIsODksMCwxMTAsMiw4OCwwLDExNiw5LDEyNCwwLDEyNCwyLDEzMSwyLAorICAgIDEyNSw2LDEyNCw2LDEwMCwwLDEwNyw4LDExNCwxNzIsMTE2LDgsMTE2LDYsMTA2LDcsCisgICAgMTI0LDAsMTMxLDEsMTI0LDAsMTAwLDQsMTQxLDIsMTMwLDEsMTEwLDgsMTE2LDEwLAorICAgIDEyNCw2LDEzMSwxLDEyNSw3LDEyNCwzLDExNCwyMTYsMTE2LDEsMTA2LDIsMTI0LDMsCisgICAgMjUsMCwxMjUsNCwxMTYsMTEsMTI0LDQsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsCisgICAgMTAwLDUsMjUsMCwxMjQsNywxMzEsMywxLDAsMTI0LDcsODMsMCw0MSw2LAorICAgIDc4LDExNCwxMTcsMCwwLDAsMTE0LDE5LDAsMCwwLDEyMiwyMyw1OSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw0MSwxLDExNCwxNSwwLDAsMCwyMzMsMiwwLDAsMCwKKyAgICA0MSwxMiwxMTQsMTE4LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLAorICAgIDAsMTE0LDU4LDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDkwLDAsMCwwLAorICAgIDIxOCw4LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCwzOCwwLDAsMCwyMTgsCisgICAgMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE0LDE3MCwwLDAsMCwxMTQsMTQxLDAsMCwwLDExNCw1LAorICAgIDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDIxOCw3LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDk1LDExNCwxNDQsMCwwLDAsMTE0LDExOSwwLDAsMCw5MCwxMywxMTIsCisgICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMzksMCwwLAorICAgIDAsMTE0LDgyLDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjMsOTUsMTAyLDEwNSwxMTAsCisgICAgMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LAorICAgIDEwNywxMDEsMTAwLDE2MywzLDAsMCwxMTUsNDIsMCwwLDAsMCwxLDQsMSwKKyAgICAxNCwxLDQsMSwxMCwxLDEwLDIsMTAsMSwxMCwxLDEwLDEsMiwxLAorICAgIDEwLDEsMTQsMSwxNiwxLDIwLDEsMTAsMSw4LDEsMjAsMiw4LDEsCisgICAgNCwyLDEwLDEsMjIsMSwxMTQsMTgwLDAsMCwwLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwzMCwwLDAsMCwxMTYsMCwxMjQsMCwxMzEsMSwxNDMsMTIsMSwwLDExNiwKKyAgICAxLDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsODEsMCw4MiwwLDg4LDAsMTAwLAorICAgIDEsODMsMCw0MSwyLDEyMiw1NCw3MCwxMDUsMTEwLDEwMCwzMiw5NywxMTAsMTAwLDMyLAorICAgIDEwOCwxMTEsOTcsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LAorICAgIDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDEsMiwKKyAgICAxMTQsNDIsMCwwLDAsMTE0LDE4MCwwLDAsMCw0MSwyLDExNCwxNSwwLDAsCisgICAgMCwxMTQsMTc5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDIxOCwxNCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxOTAsMywwLDAsMTE1LDQsMCwwLDAsMCwyLAorICAgIDEwLDEsMTE0LDE4MSwwLDAsMCwxMTQsMTksMCwwLDAsOTksMywwLDAsCisgICAgMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIwLDAsMCwwLDExNiwwLDEyNCwwLDEyNCwxLDEyNCwyLDEzMSwzLAorICAgIDEsMCwxMjQsMiwxMDAsMSwxMDcsNCwxMTQsMzIsMTE2LDEsMTI0LDAsMTI0LDEsCisgICAgMTI0LDIsMTMxLDMsMTI1LDAsMTE2LDIsMTA2LDMsMTMxLDAsMSwwLDEyNCwwLAorICAgIDExNiw0LDEwNiw1LDEwNyw3LDExNCw2MCwxMTYsNiwxMjQsMCwxMTYsNywxMzEsMiwKKyAgICA4MywwLDExNiw0LDEwNiw1LDEyNCwwLDI1LDAsMTI1LDMsMTI0LDMsMTAwLDIsCisgICAgMTA3LDgsMTE0LDEwOCwxMTYsMiwxMDYsOCwxMzEsMCwxLDAsMTAwLDMsMTA2LDksCisgICAgMTI0LDAsMTMxLDEsMTI1LDQsMTE2LDEwLDEyNCw0LDEyNCwwLDEwMCw0LDE0MSwyLAorICAgIDEzMCwxLDExNiwxMSwxMjQsMCwxMzEsMSwxLDAsMTI0LDMsODMsMCw0MSw1LAorICAgIDk3LDUwLDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDEwNSwxMTYsMTE1LDMyLDExMCwKKyAgICA5NywxMDksMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsCisgICAgMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwOSw5NywxMDAsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICA0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsCisgICAgOTcsMTAwLDEwNiwxMTcsMTE1LDExNiwxMDksMTAxLDExMCwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwKKyAgICAxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTE0LAorICAgIDEwMSw5NywxMTYsMTAxLDExNSwxMTYsMzIsOTksMTExLDEwOSwxMDksMTExLDExMCwzMiwxMDAsMTAxLAorICAgIDExMCwxMTEsMTA5LDEwNSwxMTAsOTcsMTE2LDExMSwxMTQsMzIsMTExLDEwMiwzMiwxMDIsMTE3LDExMCwKKyAgICA5OSwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDEwNSwxMTYsMTIxLDEwLDMyLDMyLDMyLDMyLDk4LAorICAgIDEwMSwxMTYsMTE5LDEwMSwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDk3LDExMCwxMDAsMzIsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTUsOTUsNDYsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwKKyAgICAxMDEsMTE1LDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMCwxMDUsMTAwLDMyLDExMCwxMTEsMTE2LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxOSwwLDAsMCw3OCwxMjIsNDAsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTExLDEwMiwzMiwxMjMsMTI1LDMyLDEwNCw5NywxMDgsMTE2LAorICAgIDEwMSwxMDAsNTksMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDEsMSwxMTQsMTUsMCwwLDAsNDEsMTIsCisgICAgMTE0LDE3NSwwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsCisgICAgMTM3LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsNzksMCwwLDAsMTE0LDE4MSwKKyAgICAwLDAsMCwyMTgsMTEsOTUsMTAzLDk5LDEwMCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMTQsNDcsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwxNzgsMCwwLDAsMTE0LAorICAgIDU2LDAsMCwwLDQxLDUsMTE0LDE1LDAsMCwwLDExNCwxNjEsMCwwLDAsCisgICAgMTE0LDE2MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxODIsCisgICAgMCwwLDAsMTk2LDMsMCwwLDExNSwyOCwwLDAsMCwwLDksMTIsMSwKKyAgICA4LDEsMTIsMSw4LDEsMTAsMSwxMCwxLDEwLDEsOCwxLDgsMSwKKyAgICA0LDEsNiwxLDEyLDEsOCwxLDExNCwxODIsMCwwLDAsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDYsMCwwLDAsMTcsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE2NCwwLDAsMCwxMTYsMCwxMjQsMCwxMDAsMSwxMzEsMiwxMTQsCisgICAgMTYwLDEwMCwyLDEyNCwxLDEwNyw2LDExNCw1OCwxMTYsMSwxMjQsMSwxMzEsMSwxMjUsCisgICAgMSwxMjQsMSwxMDYsMiwxMDAsMiwxMzEsMSwxLDAsMTE2LDAsMTI0LDAsMTAwLAorICAgIDMsMTMxLDIsMTE0LDU4LDEyNCwxLDEwNiwzLDEyNCwwLDEwNiw0LDEzMSwxLDEsCisgICAgMCwxMjAsMTAwLDEyNCwxLDY4LDAsOTMsOTIsMTI1LDMsMTE2LDAsMTI0LDAsMTI0LAorICAgIDMsMTMxLDIsMTE1LDY0LDEwMCw0LDEwNiw1LDEyNCwwLDEwNiw2LDEyNCwzLDEzMSwKKyAgICAyLDEyNSw0LDEyMSwxNCwxMTYsNywxMjQsMiwxMjQsNCwxMzEsMiwxLDAsODcsCisgICAgMCwxMTMsNjQsNCwwLDExNiw4LDEwNywxMCwxMTQsMTU0LDEsMCwxMjUsNSwxLAorICAgIDAsMTIyLDIwLDEyNCw1LDEwNiw5LDEyNCw0LDEwNywyLDExNCwxMzYsMTE5LDY0LDEzMCwKKyAgICAwLDg3LDAsODksMCwxMDAsNSwxMDAsNSwxMjUsNSwxMjYsNSw4OCwwLDExMywKKyAgICA2NCw4OCwwLDExMyw2NCw4NywwLDEyNCwwLDgzLDAsNDEsNiwxMjIsMjM4LDcwLAorICAgIDEwNSwxMDMsMTE3LDExNCwxMDEsMzIsMTExLDExNywxMTYsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsCisgICAgMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywzMiw5OSw5NywxMDgsMTA4LDk3LDk4LDEwOCwKKyAgICAxMDEsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiw5NywxMDcsMTAxLDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsCisgICAgNzMsMTE2LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiwxMTYsCisgICAgMTExLDMyLDEwMCwxMDEsOTksMTExLDExNywxMTIsMTA4LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCisgICAgMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDExNSwxMTUsCisgICAgMTE3LDEwOSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDM5LAorICAgIDExNSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTA5LDExMiwKKyAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiwxMDAsCisgICAgMTAxLDExNSwxMDUsMTE0LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDEyNywwLAorICAgIDAsMCwyNTAsMSw0MiwyMTgsNyw5NSw5NSw5NywxMDgsMTA4LDk1LDk1LDEyMiw1LAorICAgIDEyMywxMjUsNDYsMTIzLDEyNSw3OCw0MSwxMCwxMTQsNCwwLDAsMCwxMTQsMTI2LDAsCisgICAgMCwwLDIxOCw2LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDIxOCw2LDEwMSwxMjAsMTE2LDEwMSwKKyAgICAxMTAsMTAwLDExNCwxODQsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwxLDAsMCwKKyAgICAwLDExNCw1OCwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxNSwwLDAsMCwKKyAgICA0MSw2LDExNCw4MywwLDAsMCwyMTgsOCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsCisgICAgMTE2LDExNCwxNzksMCwwLDAsMjE4LDEsMTIwLDkwLDksMTAyLDExNCwxMTEsMTA5LDk1LAorICAgIDExMCw5NywxMDksMTAxLDkwLDMsMTAxLDEyMCw5OSwxMTQsMTAsMCwwLDAsMTE0LDEwLAorICAgIDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTA0LDk3LDExMCwxMDAsMTA4LAorICAgIDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDIyMSwzLDAsMCwxMTUsMzIsCisgICAgMCwwLDAsMCwxMCwxMCwxLDgsMSw4LDEsMTAsMSwxMCwxLDEyLAorICAgIDEsMTAsMSwxMCwxLDE0LDEsMiwxLDE0LDEsMTYsNCwxMCwxLDIsCisgICAgMSwyNCwxLDExNCwxODksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDMsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTQ2LDAsCisgICAgMCwwLDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLDEyNSwxLDEyNCwwLDEwNiwwLAorICAgIDEwMCwyLDEzMSwxLDEyNSwyLDEyNCwxLDEwMCwzLDEwNyw5LDExNCw4MiwxMjQsMiwKKyAgICAxMDAsMywxMDcsOSwxMTQsNzgsMTI0LDEsMTI0LDIsMTA2LDEsMTA3LDMsMTE0LDc4LAorICAgIDExNiwyLDEwNiwzLDEwMCw0LDEyNCwxLDE1NSwyLDEwMCw1LDEyNCwyLDEwNiwxLAorICAgIDE1NSwyLDEwMCw2LDE1Nyw1LDExNiw0LDEwMCw3LDEwMCw4LDE0MSwzLDEsMCwKKyAgICAxMjQsMSw4MywwLDEyNCwyLDEwMCwzLDEwNyw5LDExNCw5NiwxMjQsMiwxMDYsMSwKKyAgICA4MywwLDExNiwyLDEwNiwzLDEwMCw5LDExNiw0LDEwMCw3LDEwMCw4LDE0MSwzLAorICAgIDEsMCwxMjQsMCwxMDAsMTAsMjUsMCwxMjUsMSwxMDAsMTEsMTI0LDAsMTA3LDcsCisgICAgMTE0LDE0MiwxMjQsMSwxMDYsNSwxMDAsMTIsMTMxLDEsMTAwLDEzLDI1LDAsMTI1LDEsCisgICAgMTI0LDEsODMsMCw0MSwxNCwxMjIsMTY3LDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwKKyAgICAxMDEsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDMsMTE3LDk3LDExNCw5NywxMTAsMTE2LDEwMSwxMDEsMTAwLAorICAgIDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsCisgICAgMTE0LDMyLDk5LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LAorICAgIDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNCwxMDEsCisgICAgMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMTE1LAorICAgIDMyLDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LAorICAgIDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsCisgICAgMTMwLDAsMCwwLDExNCw4OSwwLDAsMCw3OCwxMjIsMzIsOTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDMzLDYxLDMyLDk1LDk1LDExNSwxMTIsMTAxLAorICAgIDk5LDk1LDk1LDQ2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsNDAsMTIyLDQsMzIsMzMsCisgICAgNjEsMzIsMjUwLDEsNDEsMjMzLDMsMCwwLDAsNDEsMSw5MCwxMCwxMTUsMTE2LAorICAgIDk3LDk5LDEwNywxMDgsMTAxLDExOCwxMDEsMTA4LDEyMiw4OSw5OSw5NywxMTAsMzksMTE2LDMyLAorICAgIDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsCisgICAgMTAyLDExNCwxMTEsMTA5LDMyLDk1LDk1LDExNSwxMTIsMTAxLDk5LDk1LDk1LDMyLDExMSwxMTQsCisgICAgMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDQ0LDMyLDEwMiw5NywKKyAgICAxMDgsMTA4LDEwNSwxMTAsMTAzLDMyLDk4LDk3LDk5LDEwNywzMiwxMTEsMTEwLDMyLDk1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDMyLDk3LDExMCwxMDAsMzIsOTUsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsOTUsMTE0LDEsMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsMTE3LDAsCisgICAgMCwwLDExNCwxOSwwLDAsMCw0MSw2LDExNCwzMCwwLDAsMCwxMTQsMTE5LAorICAgIDAsMCwwLDExNCwxNjcsMCwwLDAsMTE0LDE2OCwwLDAsMCwxMTQsMTY5LDAsCisgICAgMCwwLDExNCwxMTgsMCwwLDAsNDEsMywyMTgsNywxMDMsMTA4LDExMSw5OCw5NywKKyAgICAxMDgsMTE1LDExNCwxNjEsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSw5OSw5NywKKyAgICAxMDgsOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDI1MiwzLAorICAgIDAsMCwxMTUsMzAsMCwwLDAsMCw3LDEwLDEsMTAsMSw4LDEsMTgsCisgICAgMSwyMiwyLDEwLDEsNCwxLDgsMSw2LDIsNiwyLDEwLDEsOCwKKyAgICAxLDgsMSwxNCwxLDExNCwxOTMsMCwwLDAsOTksNSwwLDAsMCwwLAorICAgIDAsMCwwLDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTY2LDAsMCwwLDEyNCw0LDEwMCwxLDEwNywyLDExNCwxOCwxMTYsMCwxMjQsMCwKKyAgICAxMzEsMSwxMjUsNSwxMTAsMzYsMTI0LDEsMTAwLDIsMTA3LDksMTE0LDMwLDEyNCwxLAorICAgIDExMCwyLDEwNSwwLDEyNSw2LDExNiwxLDEyNCw2LDEzMSwxLDEyNSw3LDExNiwwLAorICAgIDEyNCwwLDEyNCw3LDEyNCw0LDEzMSwzLDEyNSw1LDEyNCwzLDExNSwxNTAsMTI0LDQsCisgICAgMTAwLDEsMTA3LDIsMTE0LDg0LDExNiwwLDEyNCwwLDEwNiwyLDEwMCwzLDEzMSwxLAorICAgIDEwMCwxLDI1LDAsMTMxLDEsODMsMCwxMjQsMCwxMTUsOTIsMTI0LDUsODMsMCwKKyAgICAxMTYsMywxMjQsMCwxMzEsMSwxMTYsMywxMjQsMCwxMDYsMiwxMDAsMywxMzEsMSwKKyAgICAxMDAsMSwyNSwwLDEzMSwxLDI0LDAsMTI1LDgsMTE2LDQsMTA2LDUsMTI0LDUsCisgICAgMTA2LDYsMTAwLDIsMTE2LDMsMTI0LDUsMTA2LDYsMTMxLDEsMTI0LDgsMjQsMCwKKyAgICAxMzMsMiwyNSwwLDI1LDAsODMsMCwxMTAsMTIsMTE2LDcsMTI0LDUsMTI0LDMsCisgICAgMTE2LDAsMTMxLDMsODMsMCwxMDAsMiw4MywwLDQxLDQsOTcsMjE1LDEsMCwKKyAgICAwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDMsMTA4LDExMSw5OCwKKyAgICA5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LAorICAgIDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwNSwxMTAsMTAyLDEwMSwxMTQsMzIsMTE5LAorICAgIDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDUsMTE1LDMyLDExMSw5OSw5OSwxMTcsMTE0LDExNCwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLAorICAgIDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsCisgICAgNDYsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsMzksMzIsOTcsCisgICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTA1LDEwMywxMTAsMTExLDExNCwKKyAgICAxMDEsMTAwLDQ2LDMyLDg0LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMzksMTAyLDExNCwxMTEsCisgICAgMTA5LDEwOCwxMDUsMTE1LDExNiwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsCisgICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDExNSwzMiwxMTksMTA0LDk3LDExNiwzMiwxMTUsCisgICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDMyLDk3LDExNSwzMiw5NywKKyAgICAxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsCisgICAgMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsNDAsMTAxLDQ2LDEwMyw0NiwKKyAgICAzMiw5Niw5NiwxMDIsMTE0LDExMSwxMDksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMzIsNjAsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiw2MiwKKyAgICA5Niw5Niw0MSw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwxMDgsCisgICAgMzksMTAsMzIsMzIsMzIsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNCwKKyAgICAxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMzIsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LAorICAgIDExMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTA1LDExMCwKKyAgICAzMiw5NywzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMTAsMzIsMzIsMzIsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5Niw5NiwxMDIsCisgICAgMTE0LDExMSwxMDksMzIsNDYsNDYsMTEyLDEwNywxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsMTA5LDExMSwxMDAsOTYsOTYsMzIsMTE5LDExMSwxMTcsMTA4LDEwMCwzMiwxMDQsOTcsMTE4LAorICAgIDEwMSwzMiw5NywzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDMyLDExMSwxMDIsMzIsNTAsCisgICAgNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE5LDAsMCwwLDc4LDExNCwxMTcsCisgICAgMCwwLDAsNDEsOCwxMTQsMTgyLDAsMCwwLDExNCwxOTMsMCwwLDAsMjE4LAorICAgIDksMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMTU5LDAsMCwwLDExNCwKKyAgICAxNCwwLDAsMCwxMTQsNzksMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDE4OSwKKyAgICAwLDAsMCw0MSw5LDExNCwxNSwwLDAsMCwxMTQsMTkyLDAsMCwwLDIxOCwKKyAgICA2LDEwOCwxMTEsOTksOTcsMTA4LDExNSwxMTQsMTg3LDAsMCwwLDExNCwxNjIsMCwwLAorICAgIDAsMTE0LDgzLDAsMCwwLDkwLDgsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSw5NSwKKyAgICAxMTQsMTYxLDAsMCwwLDkwLDcsOTksMTE3LDExNiw5NSwxMTEsMTAyLDEwMiwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsOTUsCisgICAgOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsMjMsNCwwLDAsMTE1LDI2LDAsCisgICAgMCwwLDAsMTEsOCwxLDEwLDIsMTYsMSw4LDEsMTIsMSw0LDMsCisgICAgOCwxLDE4LDEsNCwxLDQsNCwyNiwzLDMyLDIsMTE0LDE5NiwwLDAsCisgICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsCisgICAgMCwxMzEsMSwxMjUsMSwxMjQsMSwxMDAsMCwxMDcsOCwxMTQsMzAsMTE2LDIsMTAwLAorICAgIDEsMTI0LDAsMjMsMCwxMzEsMSwxMzAsMSwxMTYsMywxMjQsMSwxMzEsMSw4MywKKyAgICAwLDQxLDIsNzgsMTIyLDI1LDExMCwxMTEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDQxLAorICAgIDQsMTE0LDE0MiwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCw3MCwwLDAsMCwKKyAgICAxMTQsMTQxLDAsMCwwLDQxLDIsMTE0LDE1LDAsMCwwLDExNCw4MiwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKKyAgICAyMTgsMTgsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LAorICAgIDExMCw5NywxMDksMTAxLDU4LDQsMCwwLDExNSw4LDAsMCwwLDAsMSwxMCwKKyAgICAxLDgsMSwxMiwxLDExNCwxOTcsMCwwLDAsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDEyLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyNDQsMCwwLDAsMTI0LDEsOTcsMCwxMjQsMCw5NywxLDExNiwyLDExNiwxLAorICAgIDEzMSwxLDEyNSwyLDEyMCw4NiwxMTYsMSwxMDYsMywxMDYsNCwxMzEsMCw2OCwwLAorICAgIDkzLDcyLDkyLDIsMTI1LDMsMTI1LDQsMTE2LDUsMTI0LDQsMTI0LDIsMTMxLDIsCisgICAgMTE0LDI4LDEyNCwzLDExNiwxLDEwNiw2LDEwNyw2LDExNCw2MiwxMTYsNywxMjUsNSwKKyAgICAxMTAsMTgsMTE2LDAsMTA2LDgsMTI0LDMsMTMxLDEsMTE0LDI4LDExNiw5LDEyNSw1LAorICAgIDExMCwyLDExMywyOCwxMTYsMTAsMTI0LDQsMTI0LDUsMTMxLDIsMTI1LDYsMTE2LDExLAorICAgIDEyNCw2LDEyNCw0LDEzMSwyLDEsMCwxMTMsMjgsODcsMCwxMTYsMSwxMDYsMywKKyAgICAxMTYsMTIsMjUsMCwxMjUsNywxMjAsNTQsMTAwLDUsNjgsMCw5Myw0NiwxMjUsOCwKKyAgICAxMjQsOCwxMTYsMSwxMDYsMywxMDcsNywxMTQsMTQ0LDExNiwxMywxMjQsOCwxMzEsMSwKKyAgICAxMjUsOSwxMTAsMTAsMTE2LDEsMTA2LDMsMTI0LDgsMjUsMCwxMjUsOSwxMTYsMTQsCisgICAgMTI0LDcsMTI0LDgsMTI0LDksMTMxLDMsMSwwLDExMywxMjAsODcsMCwxMjEsMTIsCisgICAgMTE2LDEzLDEwMCwyLDEzMSwxLDEyNSwxMCw4NywwLDExMCwyNCw0LDAsMTE2LDE1LAorICAgIDEwNywxMCwxMTQsMjA2LDEsMCwxLDAsMSwwLDEwMCwzLDEyNSwxMCw4OSwwLAorICAgIDExMCwyLDg4LDAsMTE2LDE0LDEyNCw3LDEwMCwyLDEyNCwxMCwxMzEsMywxLDAsCisgICAgMTE2LDEzLDEwMCw0LDEzMSwxLDEyNSwxMSwxMTYsMTQsMTI0LDcsMTAwLDQsMTI0LDExLAorICAgIDEzMSwzLDEsMCwxMDAsMyw4MywwLDQxLDYsMTIyLDI1MCw4MywxMDEsMTE2LDExNywKKyAgICAxMTIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsCisgICAgMTA0LDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsCisgICAgOTcsMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwKKyAgICAxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LAorICAgIDMyLDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSwKKyAgICA5OSwxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxNjcsMCwwLDAsMTE0LDIwLDAsMCwwLAorICAgIDc4LDExNCw1NSwwLDAsMCw0MSwxLDExNCwxNjcsMCwwLDAsNDEsMTYsMTE0LAorICAgIDQ2LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDc5LAorICAgIDAsMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE3MSwwLDAsMCwxMTQsCisgICAgNjksMCwwLDAsMTE0LDE0MiwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDE1MiwKKyAgICAwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDEsMCwKKyAgICAwLDAsMTE0LDE5NywwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzAsMCwwLAorICAgIDAsNDEsMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwKKyAgICAxMSw5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LDAsMCwwLDExNCw4MywKKyAgICAwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDgyLDAsMCwwLDkwLDExLDExNSwKKyAgICAxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjUsNCwKKyAgICAwLDAsMTE1LDUwLDAsMCwwLDAsOSw0LDEsNCwzLDgsMSwyMCwKKyAgICAxLDEwLDEsMTAsMSw2LDEsMTAsMSw2LDIsMiwxLDEwLDEsMTQsCisgICAgMywxMCwxLDEwLDEsMTAsMSwxMCwyLDEwLDEsMTYsMywyLDEsMTIsCisgICAgMSwxNCwyLDEwLDEsMTIsMyw4LDEsMTE0LDIwMSwwLDAsMCw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw2NiwwLDAsMCwxMTYsMCwxMjQsMCwxMjQsMSwxMzEsMiwKKyAgICAxLDAsMTE2LDEsMTA2LDIsMTA2LDMsMTE2LDQsMTMxLDEsMSwwLDExNiwxLAorICAgIDEwNiwyLDEwNiwzLDExNiw1LDEzMSwxLDEsMCwxMDAsMSwxMDAsMiwxMDgsNiwKKyAgICAxMjUsMiwxMjQsMiw5Nyw3LDEyNCwyLDEwNiw4LDExNiwxLDEwNiw5LDExNiwxMCwKKyAgICAyNSwwLDEzMSwxLDEsMCwxMDAsMiw4MywwLDQxLDMsMTIyLDUwLDczLDExMCwKKyAgICAxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwKKyAgICA5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsCisgICAgMTE0LDE5LDAsMCwwLDc4LDQxLDExLDExNCwyMDEsMCwwLDAsMTE0LDE0LDAsCisgICAgMCwwLDExNCwxNjYsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsMTQyLDAsMCwKKyAgICAwLDExNCwxNTIsMCwwLDAsMjE4LDI2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsCisgICAgOTcsMTA4LDExNCwxMTUsMCwwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwKKyAgICAxMDgsMTE0LDc5LDAsMCwwLDExNCwxLDAsMCwwLDQxLDMsMTE0LDE5OSwwLAorICAgIDAsMCwxMTQsMjAwLDAsMCwwLDExNCwyMDIsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIwMywwLDAsMCwKKyAgICAxMTIsNCwwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMCwyLDEyLDEsMTIsCisgICAgMyw4LDEsNCwxLDExNCwyMDMsMCwwLDAsNDEsMiw3OCw3OCw0MSwxLAorICAgIDc4LDQxLDIsNzgsMTE0LDE5LDAsMCwwLDQxLDUwLDExNCwzLDAsMCwwLAorICAgIDExNCwxMTUsMCwwLDAsMTE0LDEyLDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsCisgICAgNTEsMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwzNiwwLDAsMCwxMTQsMTcsCisgICAgMCwwLDAsMTE0LDE4LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwKKyAgICAwLDAsMTE0LDQ1LDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNTgsMCwwLAorICAgIDAsMTE0LDY4LDAsMCwwLDExNCw3NCwwLDAsMCwxMTQsNzcsMCwwLDAsCisgICAgMTE0LDg0LDAsMCwwLDExNCw5NSwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LAorICAgIDEwMiwwLDAsMCwxMTQsNzgsMCwwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksCisgICAgMTE2LDkwLDksOTUsODAsNzksODAsODUsNzYsNjUsODQsNjksMTE0LDEyOCwwLDAsCisgICAgMCwxMTQsMTMzLDAsMCwwLDExNCwxMzYsMCwwLDAsMTE0LDkxLDAsMCwwLAorICAgIDExNCw4MCwwLDAsMCwxMTQsMTQwLDAsMCwwLDExNCwxNDEsMCwwLDAsMTE0LAorICAgIDgxLDAsMCwwLDExNCwxNDIsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTU3LAorICAgIDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTcwLDAsCisgICAgMCwwLDExNCwxNzUsMCwwLDAsOTAsMTUsOTUsNjksODIsODIsOTUsNzcsODMsCisgICAgNzEsOTUsODAsODIsNjksNzAsNzMsODgsMTE0LDE3NywwLDAsMCwxMTQsMTgwLDAsCisgICAgMCwwLDExNCwxODEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTg5LDAsMCwKKyAgICAwLDExNCwxOTMsMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTk3LDAsMCwwLAorICAgIDExNCwyMDEsMCwwLDAsMTE0LDIwMywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsOTQsMCwwLAorICAgIDAsNCwxNyw0LDIsOCw4LDgsNyw0LDIsNCwzLDE2LDQsMTQsCisgICAgNjgsMTQsMjEsMTQsMTksOCwxOSw4LDE5LDgsMTEsMTQsOCw4LDExLDgsCisgICAgMTIsOCwxNiw4LDM2LDE0LDI3LDE0LDEwMSwxNiwyNiw2LDMsMTAsNDUsMTQsCisgICAgNjAsOCwxNyw4LDE3LDgsMjUsOCwyOSw4LDIzLDgsMTYsMTQsNzMsMTQsCisgICAgNzcsMTQsMTMsOCw5LDgsOSwxMCw0Nyw4LDIwLDQsMSw4LDIsOCwKKyAgICAyNyw4LDYsMTAsMjUsOCwzMSw4LDI3LDE4LDM1LDgsNyw4LDQ3LAogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaCBiL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAppbmRleCA1ZWU4NDNhLi5jNWViYzYwIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKKysrIGIvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCkBAIC0xLDc5MSArMSw3MTcgQEAKIC8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMgKi8KIGNvbnN0IHVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYl9leHRlcm5hbFtdID0gewotICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDcsMCwwLAotICAgIDAsNjQsMCwwLDAsMTE1LDI0NCwyLDAsMCwxMDAsMCwwLDkwLDAsMCwKLSAgICAxMDAsOTYsMCw5MCwxLDAsMTAwLDk3LDAsOTAsMiwwLDEwMSwyLDAsMTAxLAotICAgIDEsMCwyMyw5MCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDUsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDEwLDAsMTAwLDExLDAsCi0gICAgMTMyLDAsMCw5MCw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwKLSAgICA4LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCw5LDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxOCwwLDEwMCwxOSwwLAotICAgIDEzMiwwLDAsOTAsMTEsMCwxMDAsMjAsMCwxMDAsMjEsMCwxMzIsMCwwLDkwLAotICAgIDEyLDAsMTAwLDIyLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTMyLDEsMCw5MCwxMywKLSAgICAwLDEwMSwxNCwwLDEwMSwxMywwLDEwNiwxNSwwLDEzMSwxLDAsOTAsMTYsMCwKLSAgICAxMDAsMjUsMCwxMDYsMTcsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzEsMiwwLDEwMCwKLSAgICAyOCwwLDIzLDkwLDE4LDAsMTAxLDE5LDAsMTA2LDIwLDAsMTAxLDE4LDAsMTAwLAotICAgIDI3LDAsMTMxLDIsMCw5MCwyMSwwLDEwMCwyOSwwLDkwLDIyLDAsMTAwLDMwLAotICAgIDAsOTAsMjMsMCwxMDAsMzEsMCwxMDMsMSwwLDkwLDI0LDAsMTAwLDMyLDAsCi0gICAgMTAzLDEsMCw5MCwyNSwwLDEwMSwyNSwwLDQsOTAsMjYsMCw5MCwyNywwLAotICAgIDEwMCwzMywwLDEwMCwzNCwwLDEwMCwzMywwLDEwMCwzNSwwLDEwMCwzNiwwLDEzMiwKLSAgICAxLDEsOTAsMjgsMCwxMDAsMzcsMCwxMDAsMzgsMCwxMzIsMCwwLDkwLDI5LAotICAgIDAsMTAwLDM5LDAsMTAwLDQwLDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw0MSwwLAotICAgIDEwMCw0MiwwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNDMsMCwxMDAsNDQsMCwxMzIsCi0gICAgMCwwLDkwLDMyLDAsMTAwLDQ1LDAsMTAwLDQ2LDAsMTAwLDQ3LDAsMTAwLDQ4LAotICAgIDAsMTMyLDAsMSw5MCwzMywwLDEwMCw0OSwwLDEwMCw1MCwwLDEzMiwwLDAsCi0gICAgOTAsMzQsMCwxMDAsNTEsMCwxMDAsNTIsMCwxMzIsMCwwLDkwLDM1LDAsMTAwLAotICAgIDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDUzLDAsMTAwLDU0LDAsMTMyLDMsCi0gICAgMCw5MCwzNiwwLDEwMCwzMywwLDEwMCwzMywwLDEwMCwzMywwLDEwMCw1NSwwLAotICAgIDEwMCw1NiwwLDEzMiwzLDAsOTAsMzcsMCwxMDAsNTcsMCwxMDAsNTcsMCwxMDAsCi0gICAgNTgsMCwxMDAsNTksMCwxMzIsMiwwLDkwLDM4LDAsMTAwLDYwLDAsMTAwLDYxLAotICAgIDAsMTMyLDAsMCw5MCwzOSwwLDEwMSw0MCwwLDEzMSwwLDAsOTAsNDEsMCwKLSAgICAxMDAsMzMsMCwxMDAsNjIsMCwxMDAsMzMsMCwxMDAsNjMsMCwxMDEsNDEsMCwxMDAsCi0gICAgNjQsMCwxMDAsNjUsMCwxMzIsMSwyLDkwLDQyLDAsNzEsMTAwLDY2LDAsMTAwLAotICAgIDY3LDAsMTMyLDAsMCwxMDAsNjcsMCwxMzEsMiwwLDkwLDQzLDAsNzEsMTAwLAotICAgIDY4LDAsMTAwLDY5LDAsMTMyLDAsMCwxMDAsNjksMCwxMzEsMiwwLDkwLDQ0LAotICAgIDAsNzEsMTAwLDcwLDAsMTAwLDcxLDAsMTMyLDAsMCwxMDAsNzEsMCwxMDEsNDQsCi0gICAgMCwxMzEsMywwLDkwLDQ1LDAsNzEsMTAwLDcyLDAsMTAwLDczLDAsMTMyLDAsCi0gICAgMCwxMDAsNzMsMCwxMzEsMiwwLDkwLDQ2LDAsNzEsMTAwLDc0LDAsMTAwLDc1LAotICAgIDAsMTMyLDAsMCwxMDAsNzUsMCwxMDEsNDYsMCwxMDEsNDUsMCwxMzEsNCwwLAotICAgIDkwLDQ3LDAsNzEsMTAwLDc2LDAsMTAwLDc3LDAsMTMyLDAsMCwxMDAsNzcsMCwKLSAgICAxMDEsNDYsMCwxMDEsNDQsMCwxMzEsNCwwLDkwLDQ4LDAsMTAzLDAsMCw5MCwKLSAgICA0OSwwLDcxLDEwMCw3OCwwLDEwMCw3OSwwLDEzMiwwLDAsMTAwLDc5LDAsMTAxLAotICAgIDQ2LDAsMTAxLDQ0LDAsMTMxLDQsMCw5MCw1MCwwLDcxLDEwMCw4MCwwLDEwMCwKLSAgICA4MSwwLDEzMiwwLDAsMTAwLDgxLDAsMTMxLDIsMCw5MCw1MSwwLDcxLDEwMCwKLSAgICA4MiwwLDEwMCw4MywwLDEzMiwwLDAsMTAwLDgzLDAsMTMxLDIsMCw5MCw1MiwKLSAgICAwLDcxLDEwMCw4NCwwLDEwMCw4NSwwLDEzMiwwLDAsMTAwLDg1LDAsMTMxLDIsCi0gICAgMCw5MCw1MywwLDcxLDEwMCw4NiwwLDEwMCw4NywwLDEzMiwwLDAsMTAwLDg3LAotICAgIDAsMTMxLDIsMCw5MCw1NCwwLDEwMCwzMywwLDEwMCw4OCwwLDEwMCw4OSwwLAotICAgIDEzMiwxLDAsOTAsNTUsMCwxMDAsOTAsMCwxMDAsOTEsMCwxMzIsMCwwLDkwLAotICAgIDU2LDAsMTAwLDkyLDAsMTAwLDkzLDAsMTMyLDAsMCw5MCw1NywwLDEwMCw5NCwKLSAgICAwLDEwMCw5NSwwLDEzMiwwLDAsOTAsNTgsMCwxMDAsMzMsMCw4Myw0MSw5OCwKLSAgICA5Nyw5NCwxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwKLSAgICA0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCwKLSAgICA4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LAotICAgIDc5LDg0LDMyLDEwOSwxMDEsOTcsMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsCi0gICAgMTA1LDExNCwxMDEsOTksMTE2LDEwOCwxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKLSAgICAzMywzMiw3MywxMTYsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLAotICAgIDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDEwNSwxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsCi0gICAgMTE2LDExNCw5NywxMTIsMTEyLDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsCi0gICAgMTA0LDExMSwxMTAsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLAotICAgIDExMSwxMTQsMTE2LDQ2LDMyLDY1LDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLAotICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsCi0gICAgMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDk5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LAotICAgIDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwKLSAgICAxMDEsMTE0LDMyLDExNiwxMTEsMTAsMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsCi0gICAgMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsMTA4LDEwNSw5OCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsCi0gICAgMTA1LDk5LDQ1LDEwMiw5Nyw5OSwxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDYsMTAsMTAsMjE4LDMsMTE5LDEwNSwxMTAsMjE4LDYsOTksMTIxLDEwMywxMTksMTA1LDExMCwKLSAgICAyMTgsNiwxMDAsOTcsMTE0LDExOSwxMDUsMTEwLDk5LDAsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDMsMCwwLDAsMywwLDAsMCwxMTUsODgsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTE2LDMsMCwxMzEsMSwKLSAgICAwLDExNCw3MiwwLDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDExNiw0LDAsCi0gICAgMTMxLDEsMCwxMTQsNDUsMCwxMDAsMSwwLDEzNywwLDAsMTEwLDYsMCwxMDAsCi0gICAgMiwwLDEzNywwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwzLDAsMTAwLDQsCi0gICAgMCwxMzQsMCwwLDEyNSwwLDAsMTEwLDEyLDAsMTAwLDUsMCwxMDAsNCwwLAotICAgIDEzMiwwLDAsMTI1LDAsMCwxMjQsMCwwLDgzLDQxLDYsNzgsOTAsMTIsODAsCi0gICAgODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsMTE1LDEyLDAsMCwwLAotICAgIDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLDY5LDc5LDc1LDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTksMCwwLAotICAgIDAsMTE1LDEzLDAsMCwwLDEzNiwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNywKLSAgICA2LDAsODMsNDEsMSwxMjIsNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsCi0gICAgMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsCi0gICAgMzIsOTksMTA0LDEwMSw5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsCi0gICAgMTE1LDEwMSwxMTAsMTE1LDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0Niw0MSwyLDIxOCwzLAotICAgIDk1LDExMSwxMTUsOTAsNywxMDEsMTEwLDExOCwxMDUsMTE0LDExMSwxMTAsMTY5LDAsNDEsMSwKLSAgICAyMTgsMywxMDcsMTAxLDEyMSwxMTQsNCwwLDAsMCwyNTAsMzgsNjAsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKLSAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsCi0gICAgMTA4LDYyLDIxOCwxMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzNywKLSAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDM3LDk1LDEwOSw5NywxMDcsCi0gICAgMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDQ2LDYwLDEwOCwxMTEsCi0gICAgOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAotICAgIDEwMSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDgzLDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsCi0gICAgMiwxMjIsNTMsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsOTksMTA0LDEwMSwKLSAgICA5OSwxMDcsMTAxLDEwMCwzMiw5OSw5NywxMTUsMTAxLDQ1LDEwNSwxMTAsMTE1LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTYsMTA1LDExOCwxMDEsMTA4LDEyMSw0Niw3MCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsNywwLDAsMCw0MSwwLDAsMCwxMTUsMiwwLDAsMCwKLSAgICAwLDIsNDEsNSwyMTgsMywxMTUsMTIxLDExNSwyMTgsOCwxMTIsMTA4LDk3LDExNiwxMDIsCi0gICAgMTExLDExNCwxMDksMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwKLSAgICAyNyw5NSw2Nyw2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3MywKLSAgICA4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4MywyMTgsMzUsOTUsNjcsCi0gICAgNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsNzMsODYsNjksOTUsCi0gICAgODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsOTUsODMsODQsODIsOTUsNzUsNjksCi0gICAgODksNDEsMSwxMTQsNywwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwKLSAgICA1LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwxMDksOTcsMTA3LDEwMSwKLSAgICA5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwzMCwwLDAsMCwxMTUsCi0gICAgMTQsMCwwLDAsMCwxLDE4LDEsMTgsMSw5LDIsNiwyLDIxLDQsCi0gICAgMTIsMywxMTQsMTMsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAotICAgIDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLAotICAgIDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCw2NCwxMDYsMSwKLSAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMzEsMiwwLDgzLDQxLDQsMTIyLDQyLDY3LAotICAgIDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsCi0gICAgMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwKLSAgICAxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LAotICAgIDI1NSwxMjcsMywwLDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsCi0gICAgMTAxLDQxLDIsMjE4LDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LAotICAgIDEwMSwxMTUsNDEsMSwyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0NywKLSAgICAwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDE5LDAsMCwwLDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsCi0gICAgMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwyLDEyMiw0Nyw2NywxMTEsMTEwLAotICAgIDExOCwxMDEsMTE0LDExNiwzMiw1MiwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwKLSAgICAxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCw0NiwxMTQsMTUsMCwwLAotICAgIDAsNDEsMiwxMTQsMTYsMCwwLDAsMjE4LDEwLDEwMiwxMTQsMTExLDEwOSw5NSw5OCwKLSAgICAxMjEsMTE2LDEwMSwxMTUsNDEsMSw5MCw5LDEwNSwxMTAsMTE2LDk1LDk4LDEyMSwxMTYsMTAxLAotICAgIDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsNyw5NSwxMTQsOTUsMTA4LDExMSwxMTAsMTAzLDUyLDAsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMiwxMTQsMjEsMCwwLDAsOTksMCwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsMywwLDAsMCw3MSwwLDAsMCwxMTUsMjYsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsCi0gICAgMCwwLDEyNCwwLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDgzLDQxLDMsMTIyLAotICAgIDMxLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDYsMTExLDEwNSwxMTAsNDAsNDEsNDYsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsCi0gICAgMCw4MywwLDAsMCwxMTUsMzcsMCwwLDAsMTAzLDAsMCwxMjQsMCwwLAotICAgIDkzLDI3LDAsMTI1LDEsMCwxMjQsMSwwLDExNCw2LDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDExNiwxLDAsMTMxLDEsMCwxNDUsMiwwLDExMyw2LDAsODMsMTE0LAotICAgIDQsMCwwLDAsNDEsMiwyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwKLSAgICAyLDIxOCwyLDQ2LDQ4LDIxOCw0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwKLSAgICAxMTYsOTksMTExLDEwOSwxMTIsNjIsNTksMCwwLDAsMTE1LDIsMCwwLDAsOSwKLSAgICAxLDEyMiwzMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LAotICAgIDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiwKLSAgICA2Miw0MSwyLDIxOCw4LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwKLSAgICAxMTEsMTA1LDExMCw0MSwxLDIxOCwxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwKLSAgICAxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1NywwLDAsMCwKLSAgICAxMTUsNCwwLDAsMCwwLDIsMTUsMSwxMTQsMzAsMCwwLDAsOTksMSwKLSAgICAwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsMTM0LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwKLSAgICAwLDEwMCwxLDAsMTA3LDIsMCwxMTQsNTIsMCwxMjQsMCwwLDEwNiwyLDAsCi0gICAgMTE2LDMsMCwxMzEsMSwwLDkyLDMsMCwxMjUsMSwwLDEyNSwyLDAsMTI1LAotICAgIDMsMCwxMjQsMSwwLDEyNCwzLDAsMTAyLDIsMCw4MywxMjAsNjksMCwxMTYsCi0gICAgNCwwLDEyNCwwLDAsMTMxLDEsMCw2OCw5Myw1NSwwLDEyNSw0LDAsMTI0LAotICAgIDQsMCwxMTYsMSwwLDEwNyw2LDAsMTE0LDY1LDAsMTI0LDAsMCwxMDYsNSwKLSAgICAwLDEyNCw0LDAsMTAwLDIsMCwxMDAsMSwwLDEzMSwxLDEsOTIsMiwwLAotICAgIDEyNSwxLDAsMTI1LDMsMCwxMjQsMSwwLDEyNCwzLDAsMTAyLDIsMCw4MywKLSAgICAxMTMsNjUsMCw4NywxMDAsMywwLDEyNCwwLDAsMTAyLDIsMCw4Myw0MSw0LAotICAgIDEyMiwzMiw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTE1LDExMiwxMDgsMTA1LDExNiw0MCwKLSAgICA0MSw0NiwyMzMsMSwwLDAsMCw5MCw4LDEwOSw5NywxMjAsMTE1LDExMiwxMDgsMTA1LAotICAgIDExNiwyMTgsMCw0MSw2LDIxOCwzLDEwOCwxMDEsMTEwLDExNCwyMywwLDAsMCwyMTgsCi0gICAgMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE0LDI3LDAsMCwwLAotICAgIDIxOCw4LDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsMjE4LDYsMTE0LDExNSwxMTIsMTA4LAotICAgIDEwNSwxMTYsNDEsNSwyMTgsNCwxMTIsOTcsMTE2LDEwNCw5MCw1LDEwMiwxMTQsMTExLDExMCwKLSAgICAxMTYsMjE4LDEsOTUsMjE4LDQsMTE2LDk3LDEwNSwxMDgsMTE0LDE4LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwKLSAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDYzLDAsMCwwLDExNSwKLSAgICAxNiwwLDAsMCwwLDIsMTgsMSwyNCwxLDEwLDEsMTksMSwxMiwxLAotICAgIDI3LDEsMTQsMSwxMTQsNDAsMCwwLDAsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTMsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCw4MywKLSAgICA0MSwxLDEyMiwxMjYsODMsMTE2LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAotICAgIDEwNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3Nyw5NywxMDAsMTAxLDMyLDk3LDMyLDExNSwKLSAgICAxMDEsMTEyLDk3LDExNCw5NywxMTYsMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiwxMTYsMTExLDMyLDEwOSw5NywxMDcsMTAxLDMyLDEwNSwxMTYsMzIsMTAxLDk3LDExNSwxMDUsCi0gICAgMTAxLDExNCwzMiwxMTYsMTExLDMyLDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LAotICAgIDExMCwzMiwxMDEsMTIwLDExMiwxMDEsMTE0LDEwNSwxMDksMTAxLDExMCwxMTYsMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMTUsMTE2LAotICAgIDk3LDExNiwzMiwxMTQsMTAxLDExNSwxMTcsMTA4LDExNiwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsNDEsMiwxMTQsMywwLDAsMCw5MCw0LDExNSwxMTYsOTcsMTE2LDQxLAotICAgIDEsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDIxOCwxMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LAotICAgIDExNiw3NSwwLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTE0LDQxLDAsMCwKLSAgICAwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw1OCwwLDAsMCwxMjEsMTYsMCwxMTYsMCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMiwwLDg3LDExMCwyMiwwLDQsMTE2LAotICAgIDEsMCwxMDcsMTAsMCwxMTQsNDAsMCwxLDEsMSwxMDAsMSwwLDgzLDg5LAotICAgIDExMCwxLDAsODgsMTI0LDIsMCwxMDYsMiwwLDEwMCwyLDAsNjQsMTI0LDEsCi0gICAgMCwxMDcsMiwwLDgzLDQxLDMsMTIyLDQ5LDg0LDEwMSwxMTUsMTE2LDMyLDExOSwxMDQsCi0gICAgMTAxLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTAxLDMyLDExNiwxMjEsMTEyLDEwMSw0Niw3MCwxMDUsMCwyNDAsMCwwLAotICAgIDQxLDMsMTE0LDQxLDAsMCwwLDIxOCw3LDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwKLSAgICAyMTgsNywxMTUsMTE2LDk1LDEwOSwxMTEsMTAwLDEwMSw0MSwzLDExNCwzNywwLDAsMCwKLSAgICAyMTgsNCwxMDksMTExLDEwMCwxMDEsOTAsOSwxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwKLSAgICAxMTEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDE4LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LAotICAgIDExNiwxMjEsMTEyLDEwMSw4NSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwyLDMsCi0gICAgMSwxNiwxLDEzLDEsOSwxLDExNCw0NSwwLDAsMCw5OSwxLDAsMCwKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwyNDgsMSwwLDAsMTAwLDAsOTAsMCwxMDAsOTEsCisgICAgOTAsMSwxMDAsOTIsOTAsMiwxMDEsMiwxMDEsMSwyMywwLDkwLDMsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsOTAsNCwxMDAsNiwxMDAsNywxMzIsMCw5MCw1LDEwMCw4LAorICAgIDEwMCw5LDEzMiwwLDkwLDYsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw3LDEwMCwxMiwKKyAgICAxMDAsMTMsMTMyLDAsOTAsOCwxMDAsMTQsMTAwLDE1LDEzMiwwLDkwLDksMTAwLDE2LAorICAgIDEwMCwxNywxMzIsMCw5MCwxMCwxMDAsMTgsMTAwLDE5LDEzMiwwLDkwLDExLDEwMCwyMCwKKyAgICAxMDAsMjEsMTMyLDAsOTAsMTIsMTAwLDkzLDEwMCwyMywxMDAsMjQsMTMyLDEsOTAsMTMsCisgICAgMTAxLDE0LDEwMSwxMywxMDYsMTUsMTMxLDEsOTAsMTYsMTAwLDI1LDEwNiwxNywxMDAsMjYsCisgICAgMTAwLDI3LDEzMSwyLDEwMCwyOCwyMywwLDkwLDE4LDEwMSwxOSwxMDYsMjAsMTAxLDE4LAorICAgIDEwMCwyNywxMzEsMiw5MCwyMSwxMDAsMjksOTAsMjIsMTAwLDMwLDkwLDIzLDEwMCwzMSwKKyAgICAxMDMsMSw5MCwyNCwxMDAsMzIsMTAzLDEsOTAsMjUsMTAxLDI1LDQsMCw5MCwyNiwKKyAgICA5MCwyNywxMDAsOTQsMTAwLDMzLDEwMCwzNCwxNTYsMSwxMDAsMzUsMTAwLDM2LDEzMiwzLAorICAgIDkwLDI4LDEwMCwzNywxMDAsMzgsMTMyLDAsOTAsMjksMTAwLDM5LDEwMCw0MCwxMzIsMCwKKyAgICA5MCwzMCwxMDAsNDEsMTAwLDQyLDEzMiwwLDkwLDMxLDEwMCw0MywxMDAsNDQsMTMyLDAsCisgICAgOTAsMzIsMTAwLDQ1LDEwMCw0NiwxMzIsMCw5MCwzMywxMDAsNDcsMTAwLDQ4LDEzMiwwLAorICAgIDkwLDM0LDEwMCw5NSwxMDAsNDksMTAwLDUwLDEzMiwxLDkwLDM1LDEwMCw5NiwxMDAsNTEsCisgICAgMTAwLDUyLDEzMiwxLDkwLDM2LDEwMCw5NywxMDAsNTQsMTAwLDU1LDEzMiwxLDkwLDM3LAorICAgIDEwMCw1NiwxMDAsNTcsMTMyLDAsOTAsMzgsMTAxLDM5LDEzMSwwLDkwLDQwLDEwMCw5OCwKKyAgICAxMDAsMzMsMTAxLDQwLDEwMCw1OCwxNTYsMiwxMDAsNTksMTAwLDYwLDEzMiwzLDkwLDQxLAorICAgIDcxLDAsMTAwLDYxLDEwMCw2MiwxMzIsMCwxMDAsNjIsMTMxLDIsOTAsNDIsNzEsMCwKKyAgICAxMDAsNjMsMTAwLDY0LDEzMiwwLDEwMCw2NCwxMzEsMiw5MCw0Myw3MSwwLDEwMCw2NSwKKyAgICAxMDAsNjYsMTMyLDAsMTAwLDY2LDEwMSw0MywxMzEsMyw5MCw0NCw3MSwwLDEwMCw2NywKKyAgICAxMDAsNjgsMTMyLDAsMTAwLDY4LDEzMSwyLDkwLDQ1LDcxLDAsMTAwLDY5LDEwMCw3MCwKKyAgICAxMzIsMCwxMDAsNzAsMTAxLDQ1LDEwMSw0NCwxMzEsNCw5MCw0Niw3MSwwLDEwMCw3MSwKKyAgICAxMDAsNzIsMTMyLDAsMTAwLDcyLDEwMSw0NSwxMDEsNDMsMTMxLDQsOTAsNDcsMTAzLDAsCisgICAgOTAsNDgsNzEsMCwxMDAsNzMsMTAwLDc0LDEzMiwwLDEwMCw3NCwxMDEsNDUsMTAxLDQzLAorICAgIDEzMSw0LDkwLDQ5LDcxLDAsMTAwLDc1LDEwMCw3NiwxMzIsMCwxMDAsNzYsMTMxLDIsCisgICAgOTAsNTAsNzEsMCwxMDAsNzcsMTAwLDc4LDEzMiwwLDEwMCw3OCwxMzEsMiw5MCw1MSwKKyAgICA3MSwwLDEwMCw3OSwxMDAsODAsMTMyLDAsMTAwLDgwLDEzMSwyLDkwLDUyLDcxLDAsCisgICAgMTAwLDgxLDEwMCw4MiwxMzIsMCwxMDAsODIsMTMxLDIsOTAsNTMsMTAwLDk5LDEwMCw4MywKKyAgICAxMDAsODQsMTMyLDEsOTAsNTQsMTAwLDg1LDEwMCw4NiwxMzIsMCw5MCw1NSwxMDAsODcsCisgICAgMTAwLDg4LDEzMiwwLDkwLDU2LDEwMCw4OSwxMDAsOTAsMTMyLDAsOTAsNTcsMTAwLDMzLAorICAgIDgzLDAsNDEsMTAwLDk3LDk0LDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAorICAgIDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsCisgICAgOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsCisgICAgMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsCisgICAgMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsCisgICAgMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LAorICAgIDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwKKyAgICAxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LAorICAgIDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLAorICAgIDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsCisgICAgNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsCisgICAgMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwyMTgsMywxMTksMTA1LDExMCwyMTgsNiw5OSwxMjEsCisgICAgMTAzLDExOSwxMDUsMTEwLDIxOCw2LDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwzLDAsMCwKKyAgICAwLDExNSw2MCwwLDAsMCwxMTYsMCwxMDYsMSwxMDYsMiwxMTYsMywxMzEsMSwKKyAgICAxMTQsNDgsMTE2LDAsMTA2LDEsMTA2LDIsMTE2LDQsMTMxLDEsMTE0LDMwLDEwMCwxLAorICAgIDEzNywwLDExMCw0LDEwMCwyLDEzNywwLDEzNSwwLDEwMiwxLDEwMCwzLDEwMCw0LAorICAgIDEzMiw4LDEyNSwwLDExMCw4LDEwMCw1LDEwMCw0LDEzMiwwLDEyNSwwLDEyNCwwLAorICAgIDgzLDAsNDEsNiw3OCw5MCwxMiw4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4MywKKyAgICA2OSw3OSw3NSwxMTUsMTIsMCwwLDAsODAsODksODQsNzIsNzksNzgsNjcsNjUsCisgICAgODMsNjksNzksNzUsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwxOSwwLDAsMCwxMTUsMTAsMCwwLDAsMTM2LDAsCisgICAgMTE2LDAsMTA2LDEsMTA3LDYsODMsMCw0MSwxLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwKKyAgICAzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywKKyAgICAxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LAorICAgIDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLAorICAgIDQ2LDQxLDIsMjE4LDMsOTUsMTExLDExNSw5MCw3LDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLAorICAgIDExMCwxNjksMCw0MSwxLDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDI1MCwKKyAgICAzOCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLAorICAgIDExNiwxMDEsMTE0LDExMCw5NywxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSwKKyAgICA5OSw5NywxMTUsMTAxLDM3LDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsCisgICAgMzcsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwKKyAgICAxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTA4LDk3LAorICAgIDEyMCw5NSw5OSw5NywxMTUsMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsODMsMCwwLDAsMTE1LDQsMCwwLDAsCisgICAgMTAwLDEsODMsMCw0MSwyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLAorICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LAorICAgIDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LAorICAgIDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCw3LDAsMCwwLDQxLDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiw0MSw1LDIxOCwzLDExNSwxMjEsMTE1LDIxOCw4LAorICAgIDExMiwxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwKKyAgICAxMTksMTA1LDExNiwxMDQsMjE4LDI3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LAorICAgIDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LAorICAgIDgzLDIxOCwzNSw5NSw2Nyw2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3MywKKyAgICA4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4Myw5NSw4MywKKyAgICA4NCw4Miw5NSw3NSw2OSw4OSw0MSwxLDExNCw3LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDQxLDEsMTE0LDUsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LAorICAgIDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLAorICAgIDMwLDAsMCwwLDExNSwxNCwwLDAsMCwwLDEsMTIsMSwxMiwxLDYsCisgICAgMiw0LDIsMTQsNCw4LDMsMTE0LDEzLDAsMCwwLDk5LDEsMCwwLAogICAgIDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDEzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwKLSAgICAyLDAsODMsNDEsMiwxMjIsMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwKLSAgICAxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLDEyOCwwLDAsNDEsMSwxMTQsNDUsMCwKLSAgICAwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLDk1LDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk0LDAsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMTQsNDYsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDEsCi0gICAgMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzEsMCwwLDAsCi0gICAgMTI0LDAsMCwxMTUsMTgsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsCi0gICAgMCwwLDExNiwyLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLDAsODMsNDEsCi0gICAgMiwxMjIsMzAsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsCi0gICAgNDYsMTA1LDAsNjQsMCwwLDQxLDMsMTE0LDMsMCwwLDAsMjE4LDYsMTAzLAotICAgIDEwMSwxMTYsOTksMTE5LDEwMCwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDExLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsOTksMCwwLAotICAgIDAsMTE1LDYsMCwwLDAsMCwyLDYsMSwxMiwxLDExNCw0OCwwLDAsCi0gICAgMCwxMDUsMTgyLDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LAotICAgIDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwxOTMsMCwwLDAsCi0gICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsMTMxLDIsMCwxMjUsMywwLDExNiwyLDAsMTA2LDMsMCwxMjQsMywKLSAgICAwLDExNiwyLDAsMTA2LDQsMCwxMTYsMiwwLDEwNiw1LDAsNjYsMTE2LDIsCi0gICAgMCwxMDYsNiwwLDY2LDEyNCwyLDAsMTAwLDIsMCw2NCwxMzEsMywwLDEyNSwKLSAgICA0LDAsMTIxLDYxLDAsMTE2LDcsMCwxMDYsOCwwLDEyNCw0LDAsMTAwLDMsCi0gICAgMCwxMzEsMiwwLDE0MywyMCwwLDEyNSw1LDAsMTI0LDUsMCwxMDYsOSwwLAotICAgIDEyNCwxLDAsMTMxLDEsMCwxLDg3LDEwMCw0LDAsODEsODIsODgsMTE2LDIsCi0gICAgMCwxMDYsMTAsMCwxMjQsMywwLDEyNCwwLDAsMTMxLDIsMCwxLDg3LDExMCwKLSAgICA1OSwwLDQsMTE2LDExLDAsMTA3LDEwLDAsMTE0LDE4OCwwLDEsMSwxLDEyMSwKLSAgICAxNywwLDExNiwyLDAsMTA2LDEyLDAsMTI0LDMsMCwxMzEsMSwwLDEsODcsCi0gICAgMTEwLDE4LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsMTgwLDAsMSwxLDEsCi0gICAgODksMTEwLDEsMCw4OCwxMzAsMCwwLDg5LDExMCwxLDAsODgsMTAwLDQsMCwKLSAgICA4Myw0MSw1LDEyMiwxNjIsNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsCi0gICAgMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsCi0gICAgMTE2LDEwMSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsOTcsMTE2LDExMSwxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLAotICAgIDMyLDMyLDY2LDEwMSwzMiwxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwKLSAgICAxMDUsMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCwKLSAgICA5OSwxMTcsMTE0LDExNCwxMDEsMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsCi0gICAgMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLAotICAgIDExNCw5NywxMTQsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEwMSwxMDAsNDYsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsCi0gICAgMSwwLDAsOTAsMiwxMTksOTgsNzgsNDEsMTMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LAotICAgIDk3LDExNiwyMTgsMiwxMDUsMTAwLDExNCwzLDAsMCwwLDkwLDQsMTExLDExMiwxMDEsCi0gICAgMTEwLDkwLDYsNzksOTUsNjksODgsNjcsNzYsOTAsNyw3OSw5NSw2Nyw4Miw2OSwKLSAgICA2NSw4NCw5MCw4LDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDIxOCwzLDk1LDEwNSwKLSAgICAxMTEsMjE4LDYsNzAsMTA1LDEwOCwxMDEsNzMsNzksMjE4LDUsMTE5LDExNCwxMDUsMTE2LDEwMSwKLSAgICAyMTgsNywxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDExNCw0MiwwLDAsMCw5MCw2LAotICAgIDExNywxMTAsMTA4LDEwNSwxMTAsMTA3LDQxLDYsMTE0LDM3LDAsMCwwLDIxOCw0LDEwMCwKLSAgICA5NywxMTYsOTcsMTE0LDQ0LDAsMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsOTUsMTE2LAotICAgIDEwOSwxMTIsOTAsMiwxMDIsMTAwLDIxOCw0LDEwMiwxMDUsMTA4LDEwMSwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsOTUsMTE5LDExNCwKLSAgICAxMDUsMTE2LDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTA2LDAsMCwwLDExNSwyNiwKLSAgICAwLDAsMCwwLDUsMjQsMSw5LDEsMzMsMSwzLDMsMjEsMSwyMCwKLSAgICAxLDIwLDEsMTMsMSwzLDEsMTcsMSwxMywxLDUsMSwxMTQsNTcsMCwKLSAgICAwLDAsMTA1LDIzLDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTUsMCwwLAotICAgIDAsMTE1LDIsMCwwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDk1LDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsCi0gICAgMTIyLDQsNDYsMTEyLDEyMSw5OSw3OCwyMTgsMTIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLAorICAgIDAsMTE1LDIwLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEwMCwxLDY0LDAsCisgICAgMTA2LDEsMTAwLDIsMTAwLDMsMTMxLDIsODMsMCw0MSw0LDEyMiw0Miw2NywxMTEsCisgICAgMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw1MSw1MCw0NSw5OCwxMDUsMTE2LDMyLDEwNSwKKyAgICAxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCwzMiwxMTYsMTExLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsNDYsMTA4LDMsMCwwLDAsMjU1LDEyNywyNTUsCisgICAgMTI3LDMsMCwyMzMsNCwwLDAsMCwyMTgsNiwxMDgsMTA1LDExNiwxMTYsMTA4LDEwMSwKKyAgICA0MSwyLDIxOCwzLDEwNSwxMTAsMTE2LDIxOCw4LDExNiwxMTEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgMTE1LDQxLDEsMjE4LDEsMTIwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCw3LDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsNDcsMCwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCwxOSwwLDAsMCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMCwxMDAsMSwKKyAgICAxMzEsMiw4MywwLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLAorICAgIDUyLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsCisgICAgMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsMTA1LAorICAgIDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDExNCwxNSwwLDAsMCw0MSwyLDExNCwxNiwKKyAgICAwLDAsMCwyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDExNSw0MSwKKyAgICAxLDkwLDksMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw3LDk1LDExNCw5NSwKKyAgICAxMDgsMTExLDExMCwxMDMsNTIsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNCwKKyAgICAyMSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCwzLDAsMCwwLDcxLDAsMCwwLDExNSwyMCwwLDAsMCwxMTYsMCwKKyAgICAxMDYsMSwxMDAsMSwxMDAsMiwxMzIsMCwxMjQsMCw2OCwwLDEzMSwxLDEzMSwxLAorICAgIDgzLDAsNDEsMywxMjIsMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsCisgICAgMTA1LDExMCw0MCw0MSw0Niw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCw0LDAsMCwwLDgzLDAsMCwwLDExNSwyNiwwLDAsMCwxMDMsCisgICAgMCwxMjQsMCw5MywxOCwxMjUsMSwxMjQsMSwxMTQsNCwxMjQsMSwxMDYsMCwxMTYsCisgICAgMSwxMzEsMSwxNDUsMiwxMTMsNCw4MywwLDExNCw0LDAsMCwwLDQxLDIsCisgICAgMjE4LDYsMTE0LDExNSwxMTYsMTE0LDEwNSwxMTIsMjE4LDE1LDExMiw5NywxMTYsMTA0LDk1LDExNSwKKyAgICAxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsNDEsMiwyMTgsMiw0Niw0OCwyMTgsCisgICAgNCwxMTIsOTcsMTE0LDExNiwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyNTAsMTAsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLDYyLAorICAgIDU5LDAsMCwwLDExNSwyLDAsMCwwLDYsMSwxMjIsMzAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKKyAgICA0Niw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNDEsMiwyMTgsOCwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsMSwyMTgsCisgICAgMTAsMTEyLDk3LDExNiwxMDQsOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNTcsMCwwLDAsMTE1LDQsMCwwLDAsMCwKKyAgICAyLDEwLDEsMTE0LDMwLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDk2LDAsCisgICAgMCwwLDExNiwwLDExNiwxLDEzMSwxLDEwMCwxLDEwNywyLDExNCwzNiwxMjQsMCwKKyAgICAxMDYsMiwxMTYsMywxMzEsMSw5MiwzLDEyNSwxLDEyNSwyLDEyNSwzLDEyNCwxLAorICAgIDEyNCwzLDEwMiwyLDgzLDAsMTIwLDUwLDExNiw0LDEyNCwwLDEzMSwxLDY4LDAsCisgICAgOTMsMzgsMTI1LDQsMTI0LDQsMTE2LDEsMTA3LDYsMTE0LDQ2LDEyNCwwLDEwNiw1LAorICAgIDEyNCw0LDEwMCwxLDEwMCwyLDE0MSwyLDkyLDIsMTI1LDEsMTI1LDMsMTI0LDEsCisgICAgMTI0LDMsMTAyLDIsODMsMCwxMTMsNDYsODcsMCwxMDAsMywxMjQsMCwxMDIsMiwKKyAgICA4MywwLDQxLDQsMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLAorICAgIDEwOCwxMDUsMTE2LDQwLDQxLDQ2LDIzMywxLDAsMCwwLDQxLDEsOTAsOCwxMDksCisgICAgOTcsMTIwLDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDAsNDEsNiwyMTgsMywxMDgsMTAxLDExMCwKKyAgICAxMTQsMjMsMCwwLDAsMjE4LDEwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsCisgICAgMTEwLDExNCwyNywwLDAsMCwyMTgsOCwxMTQsMTAxLDExOCwxMDEsMTE0LDExNSwxMDEsMTAwLAorICAgIDIxOCw2LDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LDQxLDUsMjE4LDQsMTEyLDk3LDExNiwxMDQsCisgICAgOTAsNSwxMDIsMTE0LDExMSwxMTAsMTE2LDIxOCwxLDk1LDIxOCw0LDExNiw5NywxMDUsMTA4LAorICAgIDExNCwxOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LAorICAgIDExNiw2MywwLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDEyLDEsMTYsMSwKKyAgICA4LDEsMTQsMSw4LDEsMTgsMSwxMiwxLDExNCw0MCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMCwxMzEsCisgICAgMSw4MywwLDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc3LDk3LDEwMCwxMDEsMzIsCisgICAgOTcsMzIsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsMzIsMTA1LDExNiwzMiwxMDEsCisgICAgOTcsMTE1LDEwNSwxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LDEwOSwxMDEsMTEwLDExNiwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDMyLDExNSwxMTYsOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDExNSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw0MSwyLDExNCwzLDAsMCwwLDkwLDQsMTE1LDExNiwKKyAgICA5NywxMTYsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDExNSwxMTYsOTcsMTE2LDc1LDAsMCwwLDExNSwyLDAsMCwwLDAsNywxMTQsCisgICAgNDEsMCwwLDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDQ4LDAsMCwwLDEyMSwxMiwKKyAgICAxMTYsMCwxMjQsMCwxMzEsMSwxMjUsMiw4NywwLDExMCwyMCw0LDAsMTE2LDEsCisgICAgMTA3LDEwLDExNCwzMiwxLDAsMSwwLDEsMCwxMDAsMSw4MywwLDg4LDAsCisgICAgMTI0LDIsMTA2LDIsMTAwLDIsNjQsMCwxMjQsMSwxMDcsMiw4MywwLDQxLDMsCisgICAgMTIyLDQ5LDg0LDEwMSwxMTUsMTE2LDMyLDExOSwxMDQsMTAxLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwKKyAgICAxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExNiwxMjEsCisgICAgMTEyLDEwMSw0Niw3MCwxMDUsMCwyNDAsMCwwLDQxLDMsMTE0LDQxLDAsMCwwLAorICAgIDIxOCw3LDc5LDgzLDY5LDExNCwxMTQsMTExLDExNCwyMTgsNywxMTUsMTE2LDk1LDEwOSwxMTEsCisgICAgMTAwLDEwMSw0MSwzLDExNCwzNywwLDAsMCwyMTgsNCwxMDksMTExLDEwMCwxMDEsOTAsCisgICAgOSwxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwxMTEsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE4LDk1LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw4NSwwLDAsCisgICAgMCwxMTUsMTAsMCwwLDAsMCwyLDIsMSwxMiwxLDE0LDEsNiwxLAorICAgIDExNCw0NSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAorICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsCisgICAgMCwxMjQsMCwxMDAsMSwxMzEsMiw4MywwLDQxLDIsMTIyLDMxLDgyLDEwMSwxMTIsCisgICAgMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLDExNSw0NiwKKyAgICAxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMCwxMjgsMCwKKyAgICAwLDQxLDEsMTE0LDQ1LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw5NCwwLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDIsMTE0LDQ2LDAsMCwwLDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDIyLDAsMCwwLDEyNCwwLDExNSwxMiwxMTYsMCwxMDYsMSwxMzEsMCwKKyAgICAxMjUsMCwxMTYsMiwxMjQsMCwxMDAsMSwxMzEsMiw4MywwLDQxLDIsMTIyLDMwLAorICAgIDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMCwxMDUsMTE0LDQ2LDEwNSwwLAorICAgIDY0LDAsMCw0MSwzLDExNCwzLDAsMCwwLDIxOCw2LDEwMywxMDEsMTE2LDk5LAorICAgIDExOSwxMDAsMTE0LDQ1LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDk5LDAsMCwwLDExNSw2LAorICAgIDAsMCwwLDAsMiw0LDEsOCwxLDExNCw0OCwwLDAsMCwyMzMsMTgyLAorICAgIDEsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLAorICAgIDE3LDAsMCwwLDY3LDAsMCwwLDExNSwxNjIsMCwwLDAsMTAwLDEsMTA2LAorICAgIDAsMTI0LDAsMTE2LDEsMTI0LDAsMTMxLDEsMTMxLDIsMTI1LDMsMTE2LDIsMTA2LAorICAgIDMsMTI0LDMsMTE2LDIsMTA2LDQsMTE2LDIsMTA2LDUsNjYsMCwxMTYsMiwxMDYsCisgICAgNiw2NiwwLDEyNCwyLDEwMCwyLDY0LDAsMTMxLDMsMTI1LDQsMTIxLDUwLDExNiwKKyAgICA3LDEwNiw4LDEyNCw0LDEwMCwzLDEzMSwyLDE0MywxNiwxMjUsNSwxMjQsNSwxMDYsCisgICAgOSwxMjQsMSwxMzEsMSwxLDAsODcsMCwxMDAsNCw4MSwwLDgyLDAsODgsCisgICAgMCwxMTYsMiwxMDYsMTAsMTI0LDMsMTI0LDAsMTMxLDIsMSwwLDg3LDAsMTEwLAorICAgIDU4LDQsMCwxMTYsMTEsMTA3LDEwLDExNCwxNTYsMSwwLDEsMCwxLDAsMTIxLAorICAgIDE0LDExNiwyLDEwNiwxMiwxMjQsMywxMzEsMSwxLDAsODcsMCwxMTAsMjAsNCwKKyAgICAwLDExNiwxMSwxMDcsMTAsMTE0LDE0OCwxLDAsMSwwLDEsMCw4OSwwLDExMCwKKyAgICAyLDg4LDAsMTMwLDAsODksMCwxMTAsMiw4OCwwLDEwMCw0LDgzLDAsNDEsCisgICAgNSwxMjIsMTYyLDY2LDEwMSwxMTUsMTE2LDQ1LDEwMSwxMDIsMTAyLDExMSwxMTQsMTE2LDMyLDEwMiwKKyAgICAxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsCisgICAgMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDk3LDExNiwxMTEsMTA5LDEwNSw5OSw5NywxMDgsMTA4LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiwKKyAgICA2NiwxMDEsMzIsMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA0LAorICAgIDk3LDExMCwxMDAsMTA4LDEwMSwzMiw5NywzMiw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwKKyAgICAxMTYsMTE1LDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTAyLDMyLDk5LDExMSwxMTAsOTksMTE3LAorICAgIDExNCwxMTQsMTAxLDExMCwxMTYsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsCisgICAgMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsCisgICAgMTE0LDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMTYsMTE2LDEwMSwxMDksCisgICAgMTEyLDExNiwxMDEsMTAwLDQ2LDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSwxMDUsMTgyLDEsMCwKKyAgICAwLDkwLDIsMTE5LDk4LDc4LDQxLDEzLDIxOCw2LDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsCisgICAgMjE4LDIsMTA1LDEwMCwxMTQsMywwLDAsMCw5MCw0LDExMSwxMTIsMTAxLDExMCw5MCwKKyAgICA2LDc5LDk1LDY5LDg4LDY3LDc2LDkwLDcsNzksOTUsNjcsODIsNjksNjUsODQsCisgICAgOTAsOCw3OSw5NSw4Nyw4Miw3OSw3OCw3Niw4OSwyMTgsMyw5NSwxMDUsMTExLDIxOCwKKyAgICA2LDcwLDEwNSwxMDgsMTAxLDczLDc5LDIxOCw1LDExOSwxMTQsMTA1LDExNiwxMDEsMjE4LDcsCisgICAgMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMTQsNDIsMCwwLDAsOTAsNiwxMTcsMTEwLAorICAgIDEwOCwxMDUsMTEwLDEwNyw0MSw2LDExNCwzNywwLDAsMCwyMTgsNCwxMDAsOTcsMTE2LAorICAgIDk3LDExNCw0NCwwLDAsMCw5MCw4LDExMiw5NywxMTYsMTA0LDk1LDExNiwxMDksMTEyLAorICAgIDkwLDIsMTAyLDEwMCwyMTgsNCwxMDIsMTA1LDEwOCwxMDEsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDk1LDExOSwxMTQsMTA1LDExNiwKKyAgICAxMDEsOTUsOTcsMTE2LDExMSwxMDksMTA1LDk5LDEwNiwwLDAsMCwxMTUsMjYsMCwwLAorICAgIDAsMCw1LDE2LDEsNiwxLDI2LDEsMiwzLDE0LDEsMjAsMSwxNiwKKyAgICAxLDE0LDEsMiwxLDE0LDEsMTQsMSw2LDEsMTE0LDU4LDAsMCwwLAorICAgIDEwNSw1MCwxMywwLDAsMjMzLDIsMCwwLDAsMTE0LDE1LDAsMCwwLDExNSwKKyAgICAyLDAsMCwwLDEzLDEwLDkwLDExLDk1LDk1LDExMiwxMjEsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSw5NSwxMjIsNCwxMTEsMTEyLDExNiw0NSwxMjIsMyw0NiwxMTIsMTIxLDEyMiw0LAorICAgIDQ2LDExMiwxMjEsOTksNzgsNDEsMSwyMTgsMTIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLAogICAgIDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDEsMCwwLDAsMTEsMCwKLSAgICAwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsODcsMSwwLDAsMTI0LAotICAgIDEsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDc2LDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEwMCwyLDAsMTE2LDIsMCwxMzEsMiwwLDEsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw5LDAsMTE0LDU4LDAsMTAwLDMsMCwxMjUsMywwLDExNiwzLDAsCi0gICAgMTI0LDMsMCwxMzEsMSwwLDEzMCwxLDAsMTI0LDEsMCwxMTQsNzAsMCwxMDAsCi0gICAgNCwwLDExMCwzLDAsMTAwLDUsMCwxMjUsMiwwLDExNiw0LDAsMTI0LDAsCi0gICAgMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSw1LDAsMTI0LDUsMCwKLSAgICAxMDYsNSwwLDEwMCw2LDAsMTMxLDEsMCw5MiwzLDAsMTI1LDYsMCwxMjUsCi0gICAgNywwLDEyNSw4LDAsMTE2LDYsMCwxMDYsNywwLDEwNiw4LDAsMTI1LDksCi0gICAgMCwxMjQsOSwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsMTU0LDAsMTE2LDksMCwKLSAgICAxMDAsNywwLDEzMSwxLDAsMTMwLDEsMCwxMDAsNCwwLDEwNiwxMCwwLDEyNCwKLSAgICA2LDAsMTE0LDE3MiwwLDEyNCw2LDAsMTEwLDMsMCwxMjQsOCwwLDEyNCw3LAotICAgIDAsMTI0LDksMCwxMDMsMywwLDEzMSwxLDAsMTI1LDEwLDAsMTI0LDIsMCwKLSAgICAxMDAsMSwwLDEwNyw4LDAsMTE0LDI0MSwwLDExNiw2LDAsMTA2LDExLDAsMTA2LAotICAgIDEyLDAsMTAwLDgsMCwxMDcsMiwwLDExNCwyMjksMCwxMDAsNCwwLDEyNSwyLAotICAgIDAsMTEwLDEyLDAsMTE2LDYsMCwxMDYsMTEsMCwxMDYsMTIsMCwxMjUsMiwwLAotICAgIDExNiwxMywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMiwwLDEyNCwyLDAsMTAwLAotICAgIDQsMCwxMDcsMywwLDExNCw2MywxLDEyNCwyLDAsMTA2LDE0LDAsMTMxLDAsCi0gICAgMCwxMTUsNDIsMSwxMTYsMTUsMCwxMDAsOSwwLDEwNiwxNiwwLDEyNCwyLDAsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTAwLDEwLDAsMTA2LDE2LDAsMTI0LAotICAgIDEwLDAsMTE2LDE3LDAsMTI0LDIsMCwxMzEsMywwLDEyNSwxMCwwLDExNiwxOCwKLSAgICAwLDEyNCw0LDAsMTE2LDE5LDAsMTI0LDEwLDAsMTE2LDIwLDAsMTAwLDgsMCwKLSAgICAyNSwyMywxMzEsMywwLDgzLDQxLDExLDk3LDI1NCwyLDAsMCw3MSwxMDUsMTE4LAotICAgIDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywKLSAgICAzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsCi0gICAgMTE1LDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLAotICAgIDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLAotICAgIDEwMSwxMjAsMTA1LDExNSwxMTYsNTksMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwKLSAgICAxMDgsMTIxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCi0gICAgOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDQ2LAotICAgIDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LAotICAgIDExNiwxMDEsMTAwLDMyLDk3LDExNSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwKLSAgICAxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExOSwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksCi0gICAgMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTIsOTcsCi0gICAgMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsOTksMTExLDExMCwxMTYsMTE0LDExMSwxMDgsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTAxLDExNSwxMTcsMTA5LDEwMSwxMDAsMzIsMTExLDExMiwKLSAgICAxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LAotICAgIDMyLDExMSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsCi0gICAgOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLDczLDEwMiwzMiwzOSwxMTEsCi0gICAgMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTUsMzIsCi0gICAgMTEwLDExMSwxMTYsMzIsNzgsMTExLDExMCwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExNiwKLSAgICAxMTQsMTA1LDExMCwxMDMsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDEwLDMyLDMyLDMyLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsOTcsCi0gICAgMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE2LDk3LDEwNywxMDEsMTEwLAotICAgIDMyLDk3LDExMCwxMDAsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDk4LDEwMSwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwKLSAgICAzMiw0MCwxMDEsMTA4LDExNSwxMDEsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0MSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMywKLSAgICA5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwKLSAgICAxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwKLSAgICAxMDAsNDYsMzIsNzMsMTAyLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsCi0gICAgMTE0LDEwNSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsNzgsMTExLDExMCwxMDEsCi0gICAgNDQsMTAsMzIsMzIsMzIsMzIsOTcsMzIsODQsMTE0LDExNywxMDEsMzIsMTE4LDk3LDEwOCwKLSAgICAxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsOTcsCi0gICAgMTE1LDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsMTA5LAotICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEyMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDk3LDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDExOCwKLSAgICA5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDEwMSwxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwKLSAgICAxMTAsMTE2LDMyLDExNiwxMTEsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwKLSAgICAzOSw0OSwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsCi0gICAgMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsCi0gICAgMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiw3MCwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwKLSAgICAzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDAsMTAxLAotICAgIDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDU5LDMyLDExNywxMTUsMTAxLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExMCwxMTUsCi0gICAgMTE2LDEwMSw5NywxMDAsMTIyLDUwLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsCi0gICAgMTE0LDEwNSwxMDAsMTAxLDMyLDExMSwxMTQsMzIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LAotICAgIDExNiwxMDUsMTExLDExMCwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMDEsMTE2LAotICAgIDMyLDExNiwxMTEsMzIsNzgsMTExLDExMCwxMDEsMTE0LDMyLDAsMCwwLDExNCwzMSwwLAotICAgIDAsMCwyMTgsMSw0NiwxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsCi0gICAgMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDIzMywwLDAsMCwwLAotICAgIDEyMiwyNCwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwKLSAgICAxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDEyMiw3LDEyMywxMjUsNDYsMTIzLAotICAgIDEyNSwxMjMsMTI1LDQxLDIxLDIxOCw5LDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwKLSAgICAyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDIxOCw5LDg0LDEyMSwxMTIsMTAxLAotICAgIDY5LDExNCwxMTQsMTExLDExNCwxMTQsNDAsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCwKLSAgICA4LDAsMCwwLDIxOCwxNCwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKLSAgICAxMTYsMTA1LDExMSwxMTAsMjE4LDksOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwKLSAgICAxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMTE0LDI4LDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwKLSAgICAyMTgsOCwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCwKLSAgICA3LDEwNSwxMTUsOTcsMTA4LDExMCwxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMTE0LDQ5LDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwKLSAgICAzMCwwLDAsMCwyMTgsOCw5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsCi0gICAgNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksCi0gICAgODMsNDEsMTEsMTE0LDM3LDAsMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwKLSAgICAxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDExNCw1OSwwLDAsMCwyMTgsNywxMDksCi0gICAgMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzksMCwwLAotICAgIDAsOTAsNCw5OCw5NywxMTUsMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsCi0gICAgMTE1LDExNiw5MCwzLDExNiw5NywxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLAotICAgIDExNCwxMTEsMTA5LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjU0LDAsMCwwLDExNSw0NiwKLSAgICAwLDAsMCwwLDE4LDEyLDEsOSwxLDcsMSwxMiwxLDYsMSwxMiwKLSAgICAxLDE4LDEsMTgsMSwyNCwxLDEyLDEsMTIsMSwxMiwxLDM2LDEsMTIsCi0gICAgMSwxOCwxLDksMiwxMiwxLDEyLDEsMTIsMSwxMiwxLDIxLDEsMjEsCi0gICAgMSwxMTQsODEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDgsCi0gICAgMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNjIsMSwwLDAsCi0gICAgMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKLSAgICAzMCwwLDExNiwzLDAsMTAwLDIsMCwxMzEsMSwwLDEzMCwxLDAsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwwLDEyNSwxLDAsMTI1LDIsMCwKLSAgICAxMTYsNCwwLDEyNCwxLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsCi0gICAgMywwLDEyNCwzLDAsMTE2LDUsMCwxMDcsMywwLDExNCwxMDIsMCwxMTYsNiwKLSAgICAwLDEwMCwzLDAsMTA2LDcsMCwxMTYsNSwwLDEyNCwwLDAsMTMxLDIsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTI0LDIsMCwxMDYsOCwwLDEwMCw0LDAsMTMxLAotICAgIDEsMCwxMjUsNCwwLDEyNCw0LDAsMTAwLDExLDAsMTA3LDcsMCwxMTQsMTUzLAotICAgIDAsMTE2LDYsMCwxMDAsNywwLDEwNiw3LDAsMTI0LDIsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMTAsMTI1LDAsMTI0LDQsMCwxMDAsNiwwLDEwNywKLSAgICAyLDAsMTE0LDIyLDEsMTI0LDIsMCwxMDYsOSwwLDEwMCw0LDAsMTAwLDUsCi0gICAgMCwxMzEsMiwwLDEwMCwxMiwwLDI1LDEyNSw1LDAsMTI0LDUsMCwxMDYsMTAsCi0gICAgMCwxMTYsMTEsMCwxMzEsMSwwLDExNSwyMjMsMCwxMTYsNiwwLDEwMCw4LDAsCi0gICAgMTA2LDcsMCwxMTYsMTEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCi0gICAgNSwwLDExNiwxMiwwLDExNiwxMSwwLDEzMSwxLDAsMTAwLDEsMCwxMzMsMiwKLSAgICAwLDI1LDEyNSw2LDAsMTI0LDYsMCwxMDYsMTMsMCwxMzEsMCwwLDExNSwyMiwKLSAgICAxLDExNiw2LDAsMTAwLDksMCwxMDYsNywwLDEyNCw1LDAsMTMxLDEsMCwKLSAgICAxMzEsMSwwLDEzMCwxLDAsMTI0LDIsMCwxMDYsMTQsMCwxMDAsNCwwLDEzMSwKLSAgICAxLDAsMTAwLDEwLDAsMjUsMTI1LDcsMCwxMTYsMTUsMCwxMjQsMSwwLDEyNCwKLSAgICA3LDAsMTE2LDE2LDAsMTAwLDEwLDAsMjUsMjMsMTMxLDIsMCw4Myw0MSwxMywKLSAgICA5NywxMTAsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSw5OSw0NiwzMiwxMDIsCi0gICAgMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwxMTIsMTIxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDQ2LAotICAgIDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLAotICAgIDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDU5LAotICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTExLDMyLAotICAgIDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsMzIsNzMsMTAyLAotICAgIDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsMTExLDMyLDgwLDY5LAotICAgIDgwLDMyLDUxLDQ5LDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwxMTEsMTE0LDEwOSw5NywKLSAgICAxMTYsNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDUsCi0gICAgMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwzMiw3MywxMDIsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAotICAgIDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LAotICAgIDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiw3OCwKLSAgICAxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDc4LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsCi0gICAgOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LDEyMywxMjUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLAotICAgIDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSwxMTQsNjAsMCwwLDAsMTE0LDU4LDAsMCwwLDIzMywzLDAsMCwwLAotICAgIDEyMiwzMywxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLDExMCwxMDgsMTIxLDMyLAotICAgIDUwLDMyLDExMSwxMTQsMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMTIyLDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDExMCw5NywxMDksMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTUsCi0gICAgMTE2LDk3LDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LDEyMiw1MiwKLSAgICAxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LAotICAgIDEwMSwxMDgsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywKLSAgICAxMTAsMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDExNCw2MSwwLDAsMCw2MiwyLDAsMCwwLDExNCw1OCwKLSAgICAwLDAsMCwxMTQsODIsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LDI1NSw0MSwxNywxMTQsCi0gICAgOCwwLDAsMCwxMTQsNjYsMCwwLDAsMTE0LDY3LDAsMCwwLDExNCw2OCwKLSAgICAwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw3MywwLAotICAgIDAsMCwxMTQsNDksMCwwLDAsMjE4LDUsOTksMTExLDExNywxMTAsMTE2LDExNCwzNiwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDc0LDAsMCwwLDExNCwzMywwLAotICAgIDAsMCwxMTQsNzIsMCwwLDAsMjE4LDksMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsCi0gICAgMTExLDExMCwxMTQsMzAsMCwwLDAsMjE4LDE1LDgzLDc5LDg1LDgyLDY3LDY5LDk1LAotICAgIDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDgsMTE0LDM3LDAsMCwwLDExNCwKLSAgICA3OCwwLDAsMCw5MCwxNiwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDkwLDcsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDkwLAotICAgIDksMTAwLDExMSwxMTYsOTUsOTksMTExLDExNywxMTAsMTE2LDExNCw1OSwwLDAsMCw5MCwKLSAgICA5LDExMSwxMTIsMTE2LDk1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsMTMsOTgsOTcsMTE1LDEwMSwKLSAgICA5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDIsMSwwLDAsMTE1LAotICAgIDQ0LDAsMCwwLDAsOSwxOCwxLDEyLDEsMTgsMSwxOCwxLDEyLDEsCi0gICAgOSwxLDE1LDEsMTUsMSwxMiwxLDksMSwxNSwxLDEyLDEsMjIsMSwKLSAgICAxNSwxLDksMSwxMiwxLDIyLDEsMTIsMSw5LDEsMTIsMSwxOSwxLAotICAgIDExNCw4NywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLAotICAgIDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMTY0LDAsMCwwLDExNiwKLSAgICAwLDAsMTI0LDAsMCwxMzEsMSwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjIsCi0gICAgMCwxMDAsMiwwLDgzLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwxLAotICAgIDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwxLDAsCi0gICAgMTIsMTE1LDgxLDAsMTI0LDMsMCwxMDYsMiwwLDEzMSwwLDAsMTAwLDcsMCwKLSAgICAxMDAsOCwwLDEzMywyLDAsMjUsMTAwLDYsMCwxMDcsMywwLDExNCw4NSwwLAotICAgIDEyNCwwLDAsODMsMTIxLDE2LDAsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsCi0gICAgMTI1LDQsMCw4NywxMTAsNDAsMCw0LDExNiw0LDAsMTE2LDUsMCwxMDIsMiwKLSAgICAwLDEwNywxMCwwLDExNCwxNDMsMCwxLDEsMSwxMjQsMCwwLDEwMCwyLDAsCi0gICAgMTAwLDksMCwxMzMsMiwwLDI1LDEyNSw0LDAsODksMTEwLDEsMCw4OCwxMTYsCi0gICAgNiwwLDEyNCw0LDAsMTMxLDEsMCwxMTQsMTYwLDAsMTI0LDQsMCw4MywxMjQsCi0gICAgMCwwLDgzLDQxLDEwLDEyMiwxODgsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LAotICAgIDEwMSw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LAotICAgIDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywKLSAgICAxMTQsMTAxLDEwOCwxMjEsMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsCi0gICAgMTAwLDExNSw0NSw5OSwxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsCi0gICAgMzIsMTAyLDExMSwxMTQsMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwKLSAgICAxMTYsOTUsNjksMTIwLDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDg3LDEwNSwxMTYsMTA0LDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwKLSAgICAxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDExNCw2MSwwLDAsMCw3OCwxMTQsNjAsMCwwLDAsMTE0LDgyLAotICAgIDAsMCwwLDExNCwzMSwwLDAsMCw5MCwyLDExMiwxMjEsMjMzLDI1MywyNTUsMjU1LAotICAgIDI1NSwyMzMsMjU1LDI1NSwyNTUsMjU1LDExNCw4OSwwLDAsMCw0MSw3LDExNCwzMywwLAotICAgIDAsMCwxMTQsMzQsMCwwLDAsMjE4LDUsMTA4LDExMSwxMTksMTAxLDExNCwxMTQsODcsCi0gICAgMCwwLDAsMTE0LDY4LDAsMCwwLDExNCw3MywwLDAsMCwxMTQsNDYsMCwKLSAgICAwLDAsNDEsNSwyMTgsMTMsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsMTE0LDgwLDAsMCwwLDExNCwzOCwwLDAsMCw5MCw5LDEwMSwKLSAgICAxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDIxOCwxNSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksCi0gICAgMTAxLDEwMiwxMDUsMTA4LDEwMSw3NSwxLDAsMCwxMTUsMjAsMCwwLDAsMCw3LAotICAgIDE4LDEsNCwxLDI0LDEsMzUsMSw0LDEsMywxLDE2LDEsMTksMSwKLSAgICAyMSwxLDExNCw5MywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsOTIsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTE2LDIsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTE0LDU5LDAsMTIxLDE0LDAsMTE2LDMsMCwxMjQsMCwwLDEzMSwKLSAgICAxLDAsODMsODcsMTEzLDg4LDAsNCwxMTYsNCwwLDEwNywxMCwwLDExNCw1NSwKLSAgICAwLDEsMSwxLDg5LDExMyw4OCwwLDg4LDExMCwyOSwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMTYsMSwwLDExNiw1LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4NCwKLSAgICAwLDEyNCwwLDAsODMsMTAwLDAsMCw4MywxMDAsMCwwLDgzLDQxLDEsNzgsCi0gICAgNDEsNiwyMTgsOCwxMDEsMTEwLDEwMCwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCw1LDExNiwxMTcsCi0gICAgMTEyLDEwOCwxMDEsMTE0LDg2LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsNjgsMCwKLSAgICAwLDAsMTE0LDc2LDAsMCwwLDQxLDEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwxMSw5NSwxMDMsMTAxLDExNiw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NCwKLSAgICAxLDAsMCwxMTUsMTYsMCwwLDAsMCwxLDIxLDEsMywxLDE0LDEsCi0gICAgMTMsMSw4LDEsMjEsMSw0LDIsMTE0LDk3LDAsMCwwLDk5LDEsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw2MCwwLDAsMCwxMjEsMTksMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxMDYsMSwwLDEyNSwxLDAsODcsMTEwLDI0LDAsNCwxMTYsMiwKLSAgICAwLDEwNywxMCwwLDExNCw0NSwwLDEsMSwxLDEwMCwxLDAsMTI1LDEsMCwKLSAgICA4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDIsMCw3OSwxMjUsMSwwLDEyNCwKLSAgICAxLDAsODMsNDEsMywxMjIsNTEsNjcsOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwKKyAgICAwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMjQ0LDAsMCwwLDEyNCwKKyAgICAxLDEwMCwxLDEwNyw5LDExNCw1MiwxMTYsMCwxMDYsMSwxMDAsMiwxMTYsMiwxMzEsCisgICAgMiwxLDAsMTI0LDIsMTAwLDEsMTA3LDksMTE0LDQwLDEwMCwzLDEyNSwzLDExNiwKKyAgICAzLDEyNCwzLDEzMSwxLDEzMCwxLDEyNCwxLDExNCw0OCwxMDAsNCwxMTAsMiwxMDAsCisgICAgNSwxMjUsMiwxMTYsNCwxMDYsNSwxMjQsMCwxMzEsMSwxMjUsMCwxMTYsNiwxMjQsCisgICAgMCwxMzEsMSw5MiwyLDEyNSw0LDEyNSw1LDEyNCw1LDEwNiw3LDEwMCw2LDEzMSwKKyAgICAxLDkyLDMsMTI1LDYsMTI1LDcsMTI1LDgsMTE2LDgsMTA2LDksMTA2LDEwLDEyNSwKKyAgICA5LDEyNCw5LDEwMCwxLDEwNyw4LDExNCwxMTQsMTE2LDExLDEwMCw3LDEzMSwxLDEzMCwKKyAgICAxLDEwMCw0LDEwNiwxMiwxMjQsNiwxMTQsMTI2LDEyNCw2LDExMCwyLDEyNCw4LDEyNCwKKyAgICA3LDEyNCw5LDEwMywzLDEzMSwxLDEyNSwxMCwxMjQsMiwxMDAsMSwxMDcsOCwxMTQsCisgICAgMTcyLDExNiw4LDEwNiwxMywxMDYsMTQsMTAwLDgsMTA3LDIsMTE0LDE2NCwxMDAsNCwxMjUsCisgICAgMiwxMTAsOCwxMTYsOCwxMDYsMTMsMTA2LDE0LDEyNSwyLDExNiwxNSwxMjQsMiwxMzEsCisgICAgMSwxMjUsMiwxMjQsMiwxMDAsNCwxMDcsMywxMTQsMjI0LDEyNCwyLDEwNiwxNiwxMzEsCisgICAgMCwxMTUsMjEwLDExNiwxNywxMDAsOSwxMDYsMTgsMTI0LDIsMTMxLDEsMTMxLDEsMTMwLAorICAgIDEsMTAwLDEwLDEwNiwxOCwxMjQsMTAsMTE2LDE5LDEyNCwyLDEzMSwzLDEyNSwxMCwxMTYsCisgICAgMjAsMTI0LDQsMTE2LDIxLDEyNCwxMCwxMTYsMjIsMTAwLDgsMjUsMCwyMywwLDEzMSwKKyAgICAzLDgzLDAsNDEsMTEsOTcsMjU0LDIsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwKKyAgICAxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsNDYsCisgICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsCisgICAgMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsCisgICAgMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsCisgICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsMTEyLDEyMSw5OSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsCisgICAgMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwKKyAgICAxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExMiw5NywxMTQsOTcsMTA5LAorICAgIDEwMSwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTEwLDExNiwxMTQsMTExLDEwOCwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDExNCwxMDEsMTE1LDExNywxMDksMTAxLDEwMCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LAorICAgIDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTExLDEwMiwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwKKyAgICAxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LDExNCwxMDUsMTEwLAorICAgIDEwMywzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5NywxMTQsMTAzLDExNywKKyAgICAxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTYsOTcsMTA3LDEwMSwxMTAsMzIsOTcsMTEwLAorICAgIDEwMCwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLAorICAgIDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDQwLDEwMSwKKyAgICAxMDgsMTE1LDEwMSwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsCisgICAgMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LAorICAgIDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwKKyAgICA3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwxMCwzMiwKKyAgICAzMiwzMiwzMiw5NywzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsCisgICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsOTcsMTA5LDEwMSwzMiw5NywxMTUsMzIsMTE1LAorICAgIDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDEsMTA5LDExMiwKKyAgICAxMTYsMTIxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDExOSwxMDQsCisgICAgMTA1LDEwOCwxMDEsMzIsOTcsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsMzIsCisgICAgMTE2LDExMSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDM5LDQ5LDM5LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICAxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwKKyAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDcwLDExNiwxMDQsMTAxLDMyLDEwMCwKKyAgICAxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDMyLDExMiw5NywKKyAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsCisgICAgOTksOTcsMTE2LDEwMSwxMDAsNTksMzIsMTE3LDExNSwxMDEsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LAorICAgIDEwMCwxMjIsNTAsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwKKyAgICAxMDEsMzIsMTExLDExNCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSwxMTQsMzIsMCwwLDAsMTE0LDMxLDAsMCwwLDIxOCwKKyAgICAxLDQ2LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLAorICAgIDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMjMzLDAsMCwwLDAsMTIyLDI0LDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LDExMiwxMDQsOTcsCisgICAgMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMTIyLDcsMTIzLDEyNSw0NiwxMjMsMTI1LDEyMywxMjUsCisgICAgNDEsMjMsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDIxOCw0LDExOSwKKyAgICA5NywxMTQsMTEwLDIxOCwxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMjE4LDksODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDExNCwzLDAsMCwwLDIxOCw2LDEwMiwxMTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDQwLDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsOCwwLDAsMCwyMTgsMTQsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDIxOCw5LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LDEwMywyMTgsMTksNzgsMTExLDExNiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwyOCwKKyAgICAwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDgsMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDEwMSwyMTgsMywxMTUsMTE2LDExNCwyMTgsNywxMDUsMTE1LDk3LDEwOCwxMTAsCisgICAgMTE3LDEwOSwyMTgsMTAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwKKyAgICAwLDAsMCwyMTgsNCw5NSw3OSw4MCw4NCwxMTQsMzAsMCwwLDAsMjE4LDgsCisgICAgOTUsODAsODksNjcsNjUsNjcsNzIsNjksMjE4LDE3LDY2LDg5LDg0LDY5LDY3LDc5LAorICAgIDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDExLDExNCwzNywwLAorICAgIDAsMCw5MCwxNCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsCisgICAgMTAwLDEwMSwxMTQsNjAsMCwwLDAsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsCisgICAgMjE4LDQsMTA0LDEwMSw5NywxMDAsMTE0LDM5LDAsMCwwLDkwLDQsOTgsOTcsMTE1LAorICAgIDEwMSwyMTgsMywxMTUsMTAxLDExMiwyMTgsNCwxMTQsMTAxLDExNSwxMTYsOTAsMywxMTYsOTcsCisgICAgMTAzLDkwLDE1LDk3LDEwOCwxMDksMTExLDExNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDIxOCwxNyw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDYsMSwwLDAsMTE1LDQ4LDAsMCwwLDAsMTgsOCwKKyAgICAxLDYsMSw2LDEsOCwxLDQsMSw4LDEsMTIsMSwxMCwxLDEyLAorICAgIDEsMTYsMSw4LDEsOCwxLDgsMSwyNCwxLDgsMSwxMiwxLDYsCisgICAgMiw4LDEsOCwxLDgsMSw4LDEsMTQsMSwxNCwxLDExNCw4MywwLAorICAgIDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsOCwwLDAsMCw1LAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyMzAsMCwwLDAsMTE2LDAsMTA2LDEsCisgICAgMTA2LDIsMTAwLDEsMTA3LDgsMTE0LDIwLDExNiwzLDEwMCwyLDEzMSwxLDEzMCwxLAorICAgIDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEyNSwwLDExNiw2LDEyNCwwLDEzMSwxLAorICAgIDkyLDIsMTI1LDEsMTI1LDIsMTE2LDYsMTI0LDEsMTMxLDEsOTIsMiwxMjUsMSwKKyAgICAxMjUsMywxMjQsMywxMTYsNywxMDcsMywxMTQsNzgsMTE2LDgsMTAwLDMsMTA2LDksCisgICAgMTE2LDcsMTI0LDAsMTMxLDIsMTMxLDEsMTMwLDEsMTI0LDIsMTA2LDEwLDEwMCw0LAorICAgIDEzMSwxLDEyNSw0LDEyNCw0LDEwMCwxMSwxMDcsNywxMTQsMTEyLDExNiw4LDEwMCw3LAorICAgIDEwNiw5LDEyNCwyLDEzMSwxLDEzMSwxLDEzMCwxLDExMCw4NiwxMjQsNCwxMDAsNiwKKyAgICAxMDcsMiwxMTQsMTk4LDEyNCwyLDEwNiwxMSwxMDAsNCwxMDAsNSwxMzEsMiwxMDAsMTIsCisgICAgMjUsMCwxMjUsNSwxMjQsNSwxMDYsMTIsMTE2LDEzLDEzMSwxLDExNSwxNjAsMTE2LDgsCisgICAgMTAwLDgsMTA2LDksMTE2LDEzLDEzMSwxLDEzMSwxLDEzMCwxLDEyNCw1LDExNiwxNCwKKyAgICAxMTYsMTMsMTMxLDEsMTAwLDEsMTMzLDIsMjUsMCwxMjUsNiwxMjQsNiwxMDYsMTUsCisgICAgMTMxLDAsMTE1LDE5OCwxMTYsOCwxMDAsOSwxMDYsOSwxMjQsNSwxMzEsMSwxMzEsMSwKKyAgICAxMzAsMSwxMjQsMiwxMDYsMTYsMTAwLDQsMTMxLDEsMTAwLDEwLDI1LDAsMTI1LDcsCisgICAgMTE2LDE3LDEyNCwxLDEyNCw3LDExNiwxOCwxMDAsMTAsMjUsMCwyMywwLDEzMSwyLAorICAgIDgzLDAsNDEsMTMsOTcsMTEwLDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsCisgICAgOTksNDYsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsCisgICAgNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwKKyAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwKKyAgICAxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsCisgICAgMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwKKyAgICAzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsCisgICAgMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsCisgICAgMTExLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LAorICAgIDMyLDMyLDczLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsCisgICAgMzIsMzIsMzIsMTEwLDExMSwxMTYsMzIsOTksMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LAorICAgIDExMSwzMiw4MCw2OSw4MCwzMiw1MSw0OSw1Miw1NSw0Nyw1Miw1Niw1NiwzMiwxMDIsCisgICAgMTExLDExNCwxMDksOTcsMTE2LDQ0LDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsCisgICAgNDYsMzIsNzMsMTAyLDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwKKyAgICAxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsMzYsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDEyMiwzNywKKyAgICAxMjMsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDk4LDExMSwxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsCisgICAgMzIsMTIzLDMzLDExNCwxMjUsMTE0LDYxLDAsMCwwLDExNCw1OSwwLDAsMCwyMzMsCisgICAgMywwLDAsMCwxMjIsMzMsMTAxLDEyMCwxMTIsMTAxLDk5LDExNiwxMDEsMTAwLDMyLDExMSwKKyAgICAxMTAsMTA4LDEyMSwzMiw1MCwzMiwxMTEsMTE0LDMyLDUxLDMyLDEwMCwxMTEsMTE2LDExNSwzMiwKKyAgICAxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiw1NywxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsMTE1LDExNiw5NywxMTQsMTE2LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMjMsMzMsCisgICAgMTE0LDEyNSwxMjIsNTIsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLAorICAgIDExMSwxMTYsMzIsOTcsMTEwLDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsCisgICAgMTA1LDk5LDMyLDExOCw5NywxMDgsMTE3LDEwMSwxMTQsNjIsMCwwLDAsNjIsMiwwLAorICAgIDAsMCwxMTQsNTksMCwwLDAsMTE0LDg0LDAsMCwwLDIzMywyNTQsMjU1LDI1NSwKKyAgICAyNTUsNDEsMTksMTE0LDgsMCwwLDAsMTE0LDY4LDAsMCwwLDExNCw2OSwwLAorICAgIDAsMCwxMTQsNzAsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDY3LDAsMCwKKyAgICAwLDExNCw0MCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDc1LDAsMCwwLAorICAgIDExNCw1MCwwLDAsMCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDM2LDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDMzLDAsMCwwLAorICAgIDExNCw3NCwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExNCwzMCwwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsODMsODUsCisgICAgNzAsNzAsNzMsODgsNjksODMsNDEsOCwxMTQsMzcsMCwwLDAsMTE0LDgwLDAsCisgICAgMCwwLDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsOSwxMDAsCisgICAgMTExLDExNiw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDYwLDAsMCwwLDkwLDksMTExLAorICAgIDExMiwxMTYsOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLDk1LDEwMiwKKyAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMDIsCisgICAgMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw1MSwxLDAsMCwxMTUsNDYsMCwKKyAgICAwLDAsMCw5LDEyLDEsOCwxLDEwLDEsMTIsMSwxMiwxLDgsMSwKKyAgICA2LDEsMTAsMSwxMCwxLDgsMSw2LDEsMTAsMSw4LDEsMTYsMSwKKyAgICAxMCwxLDYsMSw4LDEsMTYsMSw4LDEsNiwxLDgsMSwxNCwxLAorICAgIDExNCw4OSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLAorICAgIDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMTI4LDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEzMSwxLDEwMCwxLDEwNywyLDExNCwxNiwxMDAsMiw4MywwLDEyNCwKKyAgICAwLDEwNiwxLDEwMCwzLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LDMsMTI0LAorICAgIDEsMTIsMCwxMTUsNTgsMTI0LDMsMTA2LDIsMTMxLDAsMTAwLDcsMTAwLDgsMTMzLAorICAgIDIsMjUsMCwxMDAsNiwxMDcsMywxMTQsNjIsMTI0LDAsODMsMCwxMjEsMTIsMTE2LAorICAgIDMsMTI0LDAsMTMxLDEsMTI1LDQsODcsMCwxMTAsMzYsNCwwLDExNiw0LDExNiwKKyAgICA1LDEwMiwyLDEwNywxMCwxMTQsMTEwLDEsMCwxLDAsMSwwLDEyNCwwLDEwMCwKKyAgICAyLDEwMCw5LDEzMywyLDI1LDAsMTI1LDQsODksMCwxMTAsMiw4OCwwLDExNiwKKyAgICA2LDEyNCw0LDEzMSwxLDExNCwxMjQsMTI0LDQsODMsMCwxMjQsMCw4MywwLDQxLAorICAgIDEwLDEyMiwxODgsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywxMTQsMTAxLDEwOCwxMjEsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDExNSw0NSw5OSwKKyAgICAxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsMzIsMTAyLDExMSwxMTQsCisgICAgMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwxMTYsOTUsNjksMTIwLAorICAgIDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDg3LDEwNSwxMTYsMTA0LAorICAgIDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwKKyAgICA2MiwwLDAsMCw3OCwxMTQsNjEsMCwwLDAsMTE0LDg0LDAsMCwwLDExNCwKKyAgICAzMSwwLDAsMCw5MCwyLDExMiwxMjEsMjMzLDI1MywyNTUsMjU1LDI1NSwyMzMsMjU1LDI1NSwKKyAgICAyNTUsMjU1LDExNCw5MSwwLDAsMCw0MSw3LDExNCwzMywwLDAsMCwxMTQsMzQsCisgICAgMCwwLDAsMjE4LDUsMTA4LDExMSwxMTksMTAxLDExNCwxMTQsODksMCwwLDAsMTE0LAorICAgIDcwLDAsMCwwLDExNCw3NSwwLDAsMCwxMTQsNDYsMCwwLDAsNDEsNSwKKyAgICAyMTgsMTMsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LAorICAgIDgyLDAsMCwwLDExNCwzOCwwLDAsMCw5MCw5LDEwMSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDIxOCwxMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwxNSw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LAorICAgIDEwMSw4NSwxLDAsMCwxMTUsMjAsMCwwLDAsMCw3LDEyLDEsNCwxLAorICAgIDE2LDEsMjYsMSw0LDEsMiwxLDEyLDEsMTgsMSwxOCwxLDExNCw5NSwKKyAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAxMSwwLDAsMCw2NywwLDAsMCwxMTUsNzIsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTE2LDEsMTE2LDIsMTMxLDEsMTMxLDEsMTE0LDQ2LDEyMSw4LDExNiwzLDEyNCwKKyAgICAwLDEzMSwxLDgzLDAsNCwwLDExNiw0LDEwNywxMCwxMTQsNDIsMSwwLDEsCisgICAgMCwxLDAsODksMCwxMTMsNjgsODgsMCwxMTAsMjIsMTI0LDAsMTA2LDAsMTE2LAorICAgIDEsMTE2LDUsMTMxLDEsMTMxLDEsMTE0LDY0LDEyNCwwLDgzLDAsMTAwLDAsODMsCisgICAgMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsNiwyMTgsOCwxMDEsMTEwLDEwMCwxMTUsCisgICAgMTE5LDEwNSwxMTYsMTA0LDIxOCw1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE0LDg4LDAsMCwwLAorICAgIDExNCw4MywwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDc4LDAsMCwwLDQxLAorICAgIDEsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMDMsMTAxLDExNiwKKyAgICA5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwxMDQsMSwwLDAsMTE1LDE2LDAsMCwwLAorICAgIDAsMSwxNCwxLDIsMSw4LDEsMTQsMSw4LDEsMTQsMSw0LDIsCisgICAgMTE0LDk5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw1MiwwLDAsMCwxMjEsCisgICAgMTQsMTE2LDAsMTI0LDAsMTMxLDEsMTA2LDEsMTI1LDEsODcsMCwxMTAsMjQsNCwKKyAgICAwLDExNiwyLDEwNywxMCwxMTQsMzgsMSwwLDEsMCwxLDAsMTAwLDEsMTI1LAorICAgIDEsODksMCwxMTAsMiw4OCwwLDEyNCwxLDEwMCwyLDc5LDAsMTI1LDEsMTI0LAorICAgIDEsODMsMCw0MSwzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAogICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwKICAgICAxMTUsMTA1LDExMSwxMTAsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDk4LDEyMSwxMTYsMTAxLAogICAgIDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMTgyLDEsMCwwLDIzMywKICAgICAxMjgsMCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsMTE0LDQzLDAsMCwwLAogICAgIDExNCw0MiwwLDAsMCw0MSwyLDExNCwzNywwLDAsMCwxMTQsNDQsMCwwLAogICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDEwLDk1LDk5LDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsMTA2LDEsMCwwLAotICAgIDExNSwxMiwwLDAsMCwwLDIsMywxLDE5LDEsMTMsMSwxMSwzLDEwLAotICAgIDEsMTE0LDk5LDAsMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwKLSAgICAxMjEsMTE0LDMxLDAsMCwwLDk5LDEsMCwwLDAsMSwwLDAsMCwzLAotICAgIDAsMCwwLDQsMCwwLDAsNzEsMCwwLDAsMTE1LDc1LDAsMCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LDUsMCwxMTQsCi0gICAgNzEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwwLDExNSw0MywKLSAgICAwLDEwMCwzLDAsMTI0LDAsMCwyMywxMjUsMCwwLDExNiw0LDAsMTI0LDAsCi0gICAgMCwxMDYsNSwwLDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLDExNiwwLDAsCi0gICAgMTA2LDYsMCwxMzEsMSwxLDEsMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwKLSAgICAxMTQsMTA1LDExMCwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsCi0gICAgMzIsMTE2LDExMSwzMiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCwKLSAgICA0Nyw4MCw4OSw4NCw3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsCi0gICAgMTE1LDMyLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLAotICAgIDcsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsMTE0LDU2LDAsMCwKLSAgICAwLDc4LDQxLDIsMTE0LDEwMSwwLDAsMCwxMTQsMTAyLDAsMCwwLDQxLDcsCi0gICAgMTE0LDgsMCwwLDAsMTE0LDY5LDAsMCwwLDIxOCw3LDExOCwxMDEsMTE0LDk4LAotICAgIDExMSwxMTUsMTAxLDExNCwxMCwwLDAsMCwyMTgsNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCwKLSAgICA0OSwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCw0MSwzLDExNCw3NywKLSAgICAwLDAsMCwxMTQsMTAwLDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTgsCi0gICAgMSwwLDAsMTE1LDgsMCwwLDAsMCwyLDE4LDEsMTUsMSwxMCwxLAotICAgIDExNCwxMDcsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsODQsMCwwLDAsMTAwLAotICAgIDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTMsMCwxMTYsMCwwLDEwNiwxLDAsMTI1LDIsMCwKLSAgICA4NywxMTAsMzAsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDY2LDAsMSwxLAotICAgIDEsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTI1LDIsMCw4OSwxMTAsMSwKLSAgICAwLDg4LDEyNCwyLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsCi0gICAgMSwwLDgzLDQxLDYsMTIyLDI1Miw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKLSAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsOTcsMTE2LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsMTE2LDk5LDEwNCwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDMyLDEwNCw5NywKLSAgICAxMTAsMTAwLDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw0MCwxMTUsCi0gICAgMTAxLDEwOCwxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLAotICAgIDMyLDk1LDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTUsMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKLSAgICAzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDEsMTAwLAotICAgIDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLDk3LDEwNSwxMDgsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLAotICAgIDAsNSwwLDAsMCwzMSwwLDAsMCwxMTUsODksMCwwLDAsMTI0LDEsCi0gICAgMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEyNSwxLDAsMTEwLDQ2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA3LAotICAgIDMsMCwxMTQsNzAsMCwxMTYsMSwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEyNCwxLDAsMTAyLDIsMCwyMiwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxNDIsMiwwLDgzLDQxLDMsNzgsMTIyLDMwLDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzcsMTE1LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwKLSAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDM3LDExNSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwKLSAgICA0MSwyLDExNCwxMDgsMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDQxLDQsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxMDgsMCwwLAotICAgIDAsMTE0LDEwNiwwLDAsMCw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsNDEsMSwKLSAgICAyMTgsNiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTksOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCi0gICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMTM0LDEsMCwwLDExNSwxMiwwLDAsMCwKLSAgICAwLDEsMTIsMSwxMiwxLDE1LDEsNiwxLDI1LDEsMTIyLDQwLDk1LDk5LAotICAgIDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywKLSAgICAwLDAsMCw3LDAsMCwwLDgzLDAsMCwwLDExNSw5MiwwLDAsMCwKLSAgICAxMjAsNjYsMCwxMDAsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMywKLSAgICA0LDAsNjgsOTMsNDYsMCwxMjUsMiwwLDExNiwwLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTE0LDE5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwyLAotICAgIDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMzEsMywwLAotICAgIDEsMTEzLDE5LDAsODcsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCwxMDYsMywwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDUsNzgsMjE4LAotICAgIDEwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCwKLSAgICA5NywxMDksMTAxLDk1LDk1LDIxOCwxMiw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAotICAgIDEwMSw5NSw5NSwyMTgsNyw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDQxLDUsMjE4LDcsCi0gICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKLSAgICAyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LAotICAgIDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsCi0gICAgMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDExNCw1NCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsNSw5NSwxMTksMTE0LAotICAgIDk3LDExMiwxNDUsMSwwLDAsMTE1LDgsMCwwLDAsMCwxLDI1LDEsMTUsCi0gICAgMSwyOSwxLDEyMiwyNiw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwKLSAgICA0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE5LDExNCw5NywxMTIsNDEsCi0gICAgMywyMTgsMTAsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExNCwxMjIsMCwKLSAgICAwLDAsMjE4LDksNzgsOTcsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMywxMTQsCi0gICAgMTExLDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEyMiwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCw0MSwxLDExNCwxMTEsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAotICAgIDExLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDEyNiwxLDAsMCwKLSAgICAxMTUsMTQsMCwwLDAsMCw4LDIxLDcsMywxLDEzLDEsMTMsMiwxNywKLSAgICA1LDEzLDEsMTE0LDEyNSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4NCwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsCi0gICAgMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsCi0gICAgMTE0LDgwLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgwLDAsMTAwLAotICAgIDIsMCwxMjUsNCwwLDExNiwyLDAsMTA2LDMsMCwxMjQsNCwwLDEwNiw0LAotICAgIDAsMTI0LDMsMCwxMDAsMywwLDI1LDEzMSwxLDAsMTE2LDUsMCwxMzEsMiwKLSAgICAwLDEsMTI0LDIsMCw4Myw0MSw0LDEyMiwxNTUsODQsMTE0LDEyMSwzMiwxMTYsMTExLAotICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsMTIxLDMyLDEwMCwxMDEsMTA4LDEwMSwxMDMsCi0gICAgOTcsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMDgsCi0gICAgMTAyLDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCi0gICAgMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCwzMiwKLSAgICAxMDUsMTEwLDMyLDEwMiw5NywxMTgsMTExLDExNCwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNDQsNzgsMTExLDExNiwzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLAotICAgIDEyMywxMjUsNTgsMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDk1LDk1LDEwNSwxMTAsCi0gICAgMTA1LDExNiw5NSw5NSwxMTQsNjEsMCwwLDAsNDEsNiwyMTgsMTEsMTAyLDEwNSwxMTAsCi0gICAgMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDMzLDAsMCwwLDExNCw2MiwwLAotICAgIDAsMCwxMTQsNjMsMCwwLDAsMTE0LDQ5LDAsMCwwLDIxOCwxMyw3MywxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsNDEsNSwxMTQsMTEwLDAsCi0gICAgMCwwLDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwyMTgsNiwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDIxOCw4LDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDMsCi0gICAgMTA5LDExNSwxMDMsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA5NSwxMTUsMTA0LDEwNSwxMDksMTU0LDEsMCwwLDExNSwxMCwwLDAsMCwwLDEwLAotICAgIDIxLDEsMjQsMSw2LDEsMjksMSwxMTQsMTMyLDAsMCwwLDk5LDQsMCwKLSAgICAwLDAsMCwwLDAsMCwxMSwwLDAsMCwxOSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMjQwLDEsMCwwLDEwNSwwLDAsMTI1LDQsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTA3LDksMCwxMTQsMzEsMCwxMjQsMiwwLDEyNCw0LDAsMTAwLAotICAgIDIsMCw2MCwxMTAsNiwwLDEwMCwzLDAsMTI1LDIsMCwxMjQsMywwLDEwMCwKLSAgICAxLDAsMTA3LDksMCwxMTQsNTksMCwxMjQsMywwLDEyNCw0LDAsMTAwLDQsCi0gICAgMCw2MCwxMjQsMCwwLDEwMCwxLDAsMTAwLDUsMCwxMzMsMiwwLDI1LDEyNSwKLSAgICA1LDAsMTI0LDAsMCwxMDAsNSwwLDEwMCw2LDAsMTMzLDIsMCwyNSwxMjUsCi0gICAgNiwwLDEyNCwwLDAsMTAwLDYsMCwxMDAsNywwLDEzMywyLDAsMjUsMTI1LAotICAgIDcsMCwxMjQsNSwwLDExNiwwLDAsMTA3LDMsMCwxMTQsMTY4LDAsMTAwLDgsCi0gICAgMCwxMDYsMSwwLDEyNCwyLDAsMTI0LDUsMCwxMzEsMiwwLDEyNSw4LDAsCi0gICAgMTE2LDIsMCwxMDAsOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiwzLDAsCi0gICAgMTI0LDgsMCwxMjQsNCwwLDE0MSwxLDAsMTMwLDEsMCwxMTAsMTE5LDAsMTE2LAotICAgIDQsMCwxMjQsNiwwLDEzMSwxLDAsMTAwLDUsMCwxMDcsMywwLDExNCwyMjksCi0gICAgMCwxMDAsMTAsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLAotICAgIDExNiwyLDAsMTAwLDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsNSwwLAotICAgIDEyNCw4LDAsMTMxLDEsMCwxMzAsMSwwLDExMCw1OCwwLDExNiw0LDAsMTI0LAotICAgIDcsMCwxMzEsMSwwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMzEsMSwxMDAsMTEsCi0gICAgMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsCi0gICAgMTAwLDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsNSwwLDEyNCw4LDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDEyNCwxLDAsMTAwLDEsMCwxMDcsOSwwLDExNCwKLSAgICAyMjYsMSwxMjEsMjAsMCwxMTYsNiwwLDEyNCwxLDAsMTAwLDEyLDAsMjUsMTMxLAotICAgIDEsMCwxMjUsOSwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwKLSAgICAxMTQsODMsMSwxLDEsMSw4OSwxMTAsNjIsMCw4OCwxMTYsOCwwLDEyNCw2LAotICAgIDAsMTMxLDEsMCwxMjQsOSwwLDEwNywzLDAsMTE0LDE0NSwxLDEwMCwxMywwLAotICAgIDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw4LDAsMTE2LDIsMCwxMDAsCi0gICAgOSwwLDEyNCw4LDAsMTMxLDIsMCwxLDExNiwzLDAsMTI0LDgsMCwxMjQsCi0gICAgNCwwLDE0MSwxLDAsMTMwLDEsMCwxMjEsMTgsMCwxMjQsMSwwLDEwMCwxNCwKLSAgICAwLDI1LDEwMCwxNSwwLDY0LDEyNSwxMCwwLDg3LDExMCwxOCwwLDQsMTE2LDcsCi0gICAgMCwxMDcsMTAsMCwxMTQsMTgzLDEsMSwxLDEsODksMTEwLDQzLDAsODgsMTE2LAotICAgIDgsMCwxMjQsNywwLDEzMSwxLDAsMTI0LDEwLDAsMTA3LDMsMCwxMTQsMjI2LAotICAgIDEsMTE2LDMsMCwxMDAsMTMsMCwxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwKLSAgICAxMjQsNCwwLDE0MSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEwMCw3LDAsMTAwLAotICAgIDEsMCwxMzMsMiwwLDI1LDgzLDQxLDE2LDk3LDEyMiwxLDAsMCw4Niw5NywKLSAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwKLSAgICAxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE1LDExNSwxMDEsMTAwLDQ1LAotICAgIDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTAzLDk3LDEwNSwKLSAgICAxMTAsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwKLSAgICAzMiw0MCwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsNDEsMzIsCi0gICAgOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAotICAgIDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwKLSAgICA5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwzMiwKLSAgICA5OCwxMjEsMzIsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDAsNDEsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDk3LDExNCwxMDMsCi0gICAgMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCi0gICAgMTE2LDExMSwzMiwxMDEsMTEwLDEwNCw5NywxMTAsOTksMTAxLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsCi0gICAgMzIsMTE0LDEwMSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwKLSAgICAxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTA1LDExMCw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDExNSwxMTYsOTcsCi0gICAgMTA4LDEwMSw0NiwzMiw2OSw3OSw3MCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwKLSAgICAxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDAsOTcsMTE2LDk3LDMyLDEwNSwxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDk4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTE0LDExNywxMTAsOTksOTcsMTE2LDEwMSwKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTE0LDEwOCwwLDAsMCwxMjIsMTAsCi0gICAgNjAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsNjIsMTE0LDM3LDAsMCwwLDExNCwKLSAgICAxNCwwLDAsMCwyMzMsOCwwLDAsMCwyMzMsMTIsMCwwLDAsMTIyLDMwLAotICAgIDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LAotICAgIDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDIsCi0gICAgMTIzLDEyNSwxMjIsNDMsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSw3OSw3MCwzMiwKLSAgICAxMTksMTA0LDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDUsCi0gICAgMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsCi0gICAgNDgsMTE0LDEwMSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw2OSw3OSw3MCwzMiwxMTksMTA0LDEwNSwKLSAgICAxMDgsMTAxLDMyLDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMDUsMTIyLDEwMSwzMiwKLSAgICAxMTEsMTAyLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSwyMTgsNSwxMDksMTE2LDEwNSwxMDksMTAxLDEyMiwyNiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMTYsOTcsMTA4LDEwMSwzMiwxMDIsMTExLDExNCwzMiwKLSAgICAxMjMsMzMsMTE0LDEyNSwyMTgsNCwxMTUsMTA1LDEyMiwxMDEsMTA4LDMsMCwwLDAsMjU1LAotICAgIDEyNywyNTUsMTI3LDMsMCw0MSw5LDIxOCwxMiw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCwKLSAgICA4NSw3Nyw2Niw2OSw4MiwxMTQsNDksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsCi0gICAgMTA5LDAsMCwwLDExNCwzMywwLDAsMCwyMTgsOCw2OSw3OSw3MCw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMTE0LDE2LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDExNCwyMSwwLDAsMCw0MSwxMSwxMTQsNTUsMCwwLDAsMjE4LDEyLAotICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDExNCwxMDgsMCwwLAotICAgIDAsMTE0LDM3LDAsMCwwLDkwLDExLDEwMSwxMjAsOTksOTUsMTAwLDEwMSwxMTYsOTcsCi0gICAgMTA1LDEwOCwxMTUsOTAsNSwxMDksOTcsMTAzLDEwNSw5OSw5MCwxMywxMTQsOTcsMTE5LDk1LAotICAgIDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsOTAsOCwxMTQsOTcsMTE5LDk1LDExNSwKLSAgICAxMDUsMTIyLDEwMSwxMTQsNzcsMCwwLDAsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMTEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsCi0gICAgMTA1LDEyMiwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDI1LDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwKLSAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMTcxLDEsMCwKLSAgICAwLDExNSw3NiwwLDAsMCwwLDExLDYsMSwxMiwxLDEzLDMsNiwxLAotICAgIDEyLDEsMTAsMSwxNiwxLDE2LDEsMTYsMSwxMiwxLDE4LDEsMTMsMSwKLSAgICAxOCwxLDE4LDEsMTUsMSwxMywxLDE1LDEsMTgsMSwxNSwxLDEzLDEsCi0gICAgMTIsMSwxMiwxLDMsMSwyMCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwKLSAgICAxMywxLDE1LDEsMywxLDE4LDEsMTMsMSw1LDIsMTgsMSwxNSwxLAotICAgIDksMSwxMTQsMTQzLDAsMCwwLDk5LDQsMCwwLDAsMCwwLDAsMCwKLSAgICA1LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDExMiwwLDAsCi0gICAgMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSw0LDAsCi0gICAgMTE2LDIsMCwxMjQsNCwwLDExNiwzLDAsMTMxLDIsMCwxMTQsNzUsMCwxMTYsCi0gICAgNCwwLDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwwLDEsMTI0LDMsMCwxMDAsCi0gICAgMiwwLDEwNyw5LDAsMTE0LDcxLDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDEsMTI0LDQsMCw4MywxMTYsNywwLDEwMCwKLSAgICAzLDAsMTA2LDgsMCwxMjQsMiwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMSwKLSAgICAwLDEwMCw1LDAsMTI0LDIsMCwxMzEsMSwyLDEzMCwxLDAsMTAwLDIsMCwKLSAgICA4Myw0MSw2LDEyMiw2MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiw5OCwxMjEsMTE2LAotICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiw5NywxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLAotICAgIDEwMCwzMiw5OCwxMjEsMzIsOTUsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTgsCi0gICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTA0LDEwMSw5NywxMDAsMTAxLDExNCw0MCw0MSwKLSAgICA0NiwxMjIsMjEsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwMiwKLSAgICAxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw3OCwxMjIsMjMsNzgsMTExLDExMCw0NSw5OSwKLSAgICAxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwzMiwxMjMsMzMsCi0gICAgMTE0LDEyNSwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCw0MSw5LDIxOCw3LAotICAgIDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsOTAsNSwxMDgsMTExLDk3LDEwMCwxMTUsMjE4LDEwLAotICAgIDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDEwLDk1LDk5LDExMSwxMDAsCi0gICAgMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTQsMTA3LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksCi0gICAgMTEyLDkwLDE2LDk1LDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDEwOSwwLDAsMCwxMTQsNDksMCwwLDAsNDEsNSwxMTQsCi0gICAgNTUsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDkyLAotICAgIDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTA5LDExMiwxMDUsCi0gICAgMTA4LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMjYsMSwwLDAsMTE1LAotICAgIDE2LDAsMCwwLDAsMiwxNSwxLDE1LDEsMTMsMSwxMiwxLDE2LDEsCi0gICAgNCwyLDE4LDEsMTE0LDE0OSwwLDAsMCwxMTQsNjEsMCwwLDAsOTksMywKLSAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNzYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLAotICAgIDAsMTI1LDMsMCwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwxMTYsMywwLAotICAgIDEyNCwyLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LDMsMCwxMDYsMiwwLAotICAgIDExNiw0LDAsMTA2LDUsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxLAotICAgIDEyNCwzLDAsODMsNDEsMSwxMjIsODAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsCi0gICAgOTcsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsCi0gICAgMTE2LDExMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTExLDExNCwzMiwKLSAgICAxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDExNywxMTYsMzIsMTE2LDExMSwzMiw5NywKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw0NSw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDQxLDYsMjE4LDksOTgsMTIxLDExNiwxMDEsCi0gICAgOTcsMTE0LDExNCw5NywxMjEsMTE0LDEzNywwLDAsMCwyMTgsNiwxMDEsMTIwLDExNiwxMDEsCi0gICAgMTEwLDEwMCwxMTQsMTksMCwwLDAsMTE0LDE0NCwwLDAsMCw5MCw1LDEwMCwxMTcsCi0gICAgMTA5LDExMiwxMTUsNDEsNCwxMTQsMTQ4LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LAotICAgIDE0MiwwLDAsMCwxMTQsNTUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE3LDk1LDk5LDExMSwxMDAsMTAxLDk1LAotICAgIDExNiwxMTEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjM4LDEsMCwwLDExNSwKLSAgICAxMCwwLDAsMCwwLDMsMTIsMSwxOSwxLDE5LDEsMjIsMSwxMTQsMTUyLAotICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLAotICAgIDQsMCwwLDAsNjcsMCwwLDAsMTE1LDg5LDAsMCwwLDEwMCwxLDAsCi0gICAgMTAwLDIsMCwxMDgsMCwwLDEyNSwxLDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwKLSAgICAwLDAsMTMxLDEsMCwxMDYsMywwLDEyNSwyLDAsMTI0LDEsMCwxMDYsNCwKLSAgICAwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiwxLDAsMTA2LDUsMCwKLSAgICAxMDAsMiwwLDEwMCwzLDAsMTMxLDIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LAotICAgIDYsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDMsMCwxMDAsMSwwLDI1LDEzMSwKLSAgICAxLDAsMTMxLDEsMCw4Myw0MSw0LDEyMiwxMjEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDIxOCwxMCw5NSw5OSw5NywxMDgsOTksOTUsMTA5LDExMSwxMDAsMTAxLDExNiwxLDAsMCwKKyAgICAxMTUsMTIsMCwwLDAsMCwyLDIsMSwxNCwxLDE0LDEsMTAsMyw4LAorICAgIDEsMTE0LDEwMSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMywKKyAgICAwLDAsMCwxMSwwLDAsMCwzLDAsMCwwLDExNSw2OCwwLDAsMCwKKyAgICAxMDAsNiwxMzUsMCwxMDIsMSwxMDAsMiwxMDAsMywxMzIsOSwxMjUsMSwxMjEsMTAsCisgICAgMTE2LDAsMTA2LDEsMTI1LDIsODcsMCwxMTAsMjgsNCwwLDExNiwyLDEwNywxMCwKKyAgICAxMTQsNTIsMSwwLDEsMCwxLDAsMTAwLDQsMTAwLDUsMTMyLDAsMTI1LDIsCisgICAgODksMCwxMTAsMiw4OCwwLDEyNCwyLDEyNCwxLDEzNiwwLDEzMSwyLDEsMCwKKyAgICAxMjQsMSw4MywwLDQxLDcsMTIyLDI1Miw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLAorICAgIDExNCwzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsOTcsMTE2LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwxMDUsMTEwLAorICAgIDEwMywzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsMTE2LDk5LAorICAgIDEwNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDMyLDEwNCwKKyAgICA5NywxMTAsMTAwLDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwKKyAgICAxMDIsMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw0MCwKKyAgICAxMTUsMTAxLDEwOCwxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsCisgICAgMTAxLDMyLDk1LDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDEsCisgICAgMTAwLDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLDk3LDEwNSwKKyAgICAxMDgsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsNzgsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwKKyAgICAwLDAsNCwwLDAsMCwzMSwwLDAsMCwxMTUsNjYsMCwwLDAsMTI0LAorICAgIDEsMTAwLDAsMTA3LDgsMTE0LDE2LDEyNCwwLDEwNiwwLDEyNSwxLDExMCwzMiwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMDcsMywxMTQsNDgsMTE2LDEsMTAwLDEsMTI0LDAsMTA2LAorICAgIDAsMTI0LDEsMTAyLDIsMjIsMCwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMzYsCisgICAgMCwxMjQsMCwxMjQsMSwxMDIsMiwxMjQsMiwxNTgsMiwxMjQsMywxNDIsMSw4MywKKyAgICAwLDQxLDMsNzgsMTIyLDMwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMzcsMTE1LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsCisgICAgMTAxLDMyLDM3LDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksMTAxLDQxLDIsMTE0LDEwMiwKKyAgICAwLDAsMCwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgNDEsNCwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDEwMiwwLDAsMCwyMTgsNCw5NywKKyAgICAxMTQsMTAzLDExNSw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsNDEsMSwyMTgsNiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgMTksOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywKKyAgICAxMTIsMTEyLDEwMSwxMTQsMTM2LDEsMCwwLDExNSwxMiwwLDAsMCwwLDEsOCwKKyAgICAxLDgsMSwxMCwxLDQsMSwxOCwxLDEyMiw0MCw5NSw5OSwxMDQsMTAxLDk5LAorICAgIDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCisgICAgOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgNywwLDAsMCw4MywwLDAsMCwxMTUsNjAsMCwwLDAsMTIwLDQwLDEwMCwKKyAgICA1LDY4LDAsOTMsMzIsMTI1LDIsMTE2LDAsMTI0LDEsMTI0LDIsMTMxLDIsMTE0LAorICAgIDYsMTE2LDEsMTI0LDAsMTI0LDIsMTE2LDIsMTI0LDEsMTI0LDIsMTMxLDIsMTMxLAorICAgIDMsMSwwLDExMyw2LDg3LDAsMTI0LDAsMTA2LDMsMTA2LDQsMTI0LDEsMTA2LAorICAgIDMsMTMxLDEsMSwwLDEwMCwwLDgzLDAsNDEsNiw3OCwyMTgsMTAsOTUsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsCisgICAgOTUsOTUsMjE4LDEyLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LAorICAgIDIxOCw3LDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsNDEsNCwxMTQsMTA4LDAsMCwwLAorICAgIDExNCwxMDksMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDQxLAorICAgIDUsMjE4LDcsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywKKyAgICAxMTYsMTE2LDExNCwyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwKKyAgICAxMDAsMTA1LDk5LDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsCisgICAgOTAsMywxMTAsMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDExNCw1NSwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsNSwKKyAgICA5NSwxMTksMTE0LDk3LDExMiwxNDcsMSwwLDAsMTE1LDgsMCwwLDAsMCwxLAorICAgIDEwLDEsMTAsMSwyMiwxLDEyMiwyNiw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE5LDExNCwKKyAgICA5NywxMTIsNDEsMSw3OCw0MSwzLDIxOCwxMCw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsMTE0LDExNywwLDAsMCwyMTgsOSw3OCw5NywxMDksMTAxLDY5LDExNCwKKyAgICAxMTQsMTExLDExNCw0MSwzLDExNCwxMDYsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsCisgICAgMTE3LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDEwNiwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwyMTgsMTEsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsMTI4LDEsMCwwLDExNSwxNCwwLDAsMCwwLDgsMTQsNywyLAorICAgIDEsMTAsMSwxNCwyLDE0LDUsMTAsMSwxMTQsMTIwLDAsMCwwLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDYwLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEzMSwxLAorICAgIDkyLDIsMTI1LDIsMTI1LDMsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LDU2LDExNiwxLAorICAgIDEyNCwzLDEzMSwxLDExNCw1NiwxMDAsMiwxMjUsNCwxMTYsMiwxMDYsMywxMjQsNCwKKyAgICAxMDYsNCwxMjQsMywxMDAsMywyNSwwLDEzMSwxLDExNiw1LDEzMSwyLDEsMCwKKyAgICAxMjQsMiw4MywwLDQxLDQsMTIyLDE1NSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLAorICAgIDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMjEsMzIsMTAwLDEwMSwxMDgsMTAxLDEwMyw5NywxMTYsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCisgICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDMyLDEwNSwxMTAsCisgICAgMzIsMTAyLDk3LDExOCwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDc4LDEyMiw0NCw3OCwxMTEsMTE2LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwNSwxMTAsMTAzLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTIzLDEyNSwKKyAgICA1OCwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LAorICAgIDk1LDk1LDExNCw2MiwwLDAsMCw0MSw2LDIxOCwxMSwxMDIsMTA1LDExMCwxMDAsOTUsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsMzMsMCwwLDAsMTE0LDYzLDAsMCwwLAorICAgIDExNCw2NCwwLDAsMCwxMTQsNTAsMCwwLDAsMjE4LDEzLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMyw0MSw1LDExNCwxMDQsMCwwLDAsCisgICAgMjE4LDgsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDIxOCw2LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMjE4LDgsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMywxMDksMTE1LAorICAgIDEwMywxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAyMTgsMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwKKyAgICAxMDQsMTA1LDEwOSwxNTYsMSwwLDAsMTE1LDEwLDAsMCwwLDAsMTAsMTQsMSwKKyAgICAxNiwxLDQsMSwyMiwxLDExNCwxMjcsMCwwLDAsOTksNCwwLDAsMCwKKyAgICAwLDAsMCwwLDExLDAsMCwwLDIyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxMzYsMSwwLDAsMTA1LDAsMTI1LDQsMTI0LDIsMTAwLDEsMTA3LDksMTE0LAorICAgIDIyLDEyNCwyLDEyNCw0LDEwMCwyLDYwLDAsMTEwLDQsMTAwLDMsMTI1LDIsMTI0LAorICAgIDMsMTAwLDEsMTA3LDksMTE0LDQyLDEyNCwzLDEyNCw0LDEwMCw0LDYwLDAsMTI0LAorICAgIDAsMTAwLDEsMTAwLDUsMTMzLDIsMjUsMCwxMjUsNSwxMjQsMCwxMDAsNSwxMDAsCisgICAgNiwxMzMsMiwyNSwwLDEyNSw2LDEyNCwwLDEwMCw2LDEwMCw3LDEzMywyLDI1LAorICAgIDAsMTI1LDcsMTI0LDUsMTE2LDAsMTA3LDMsMTE0LDEyNCwxMDAsOCwxMDYsMSwxMjQsCisgICAgMiwxMjQsNSwxMzEsMiwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsCisgICAgMiwxLDAsMTE2LDQsMTI0LDgsMTAyLDEsMTI0LDQsMTQyLDEsMTMwLDEsMTEwLAorICAgIDg2LDExNiw1LDEyNCw2LDEzMSwxLDEwMCw1LDEwNywzLDExNCwxNjgsMTAwLDEwLDEwNiwKKyAgICAxLDEyNCwyLDEzMSwxLDEyNSw4LDExNiwyLDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwKKyAgICAyLDEsMCwxMTYsNiwxMjQsOCwxMzEsMSwxMzAsMSwxMTAsNDIsMTE2LDUsMTI0LAorICAgIDcsMTMxLDEsMTAwLDUsMTA3LDMsMTE0LDIxMCwxMDAsMTEsMTA2LDEsMTI0LDIsMTMxLAorICAgIDEsMTI1LDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LDgsMTMxLDIsMSwwLDExNiwKKyAgICA2LDEyNCw4LDEzMSwxLDEzMCwxLDEyNCwxLDEwMCwxLDEwNyw5LDE0NCwxLDExNCwKKyAgICAxMjQsMTIxLDE2LDExNiw3LDEyNCwxLDEwMCwxMiwyNSwwLDEzMSwxLDEyNSw5LDg3LAorICAgIDAsMTEwLDIyLDQsMCwxMTYsOCwxMDcsMTAsMTQ0LDEsMTE0LDIsMSwwLDEsCisgICAgMCwxLDAsODksMCwxMTAsNTAsODgsMCwxMTYsOSwxMjQsNiwxMzEsMSwxMjQsCisgICAgOSwxMDcsMywxNDQsMSwxMTQsNTIsMTAwLDEzLDEwNiwxLDEyNCwyLDEzMSwxLDEyNSwKKyAgICA4LDExNiwyLDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwyLDEsMCwxMTYsNCwxMjQsCisgICAgOCwxMDIsMSwxMjQsNCwxNDIsMSwxMzAsMSwxMjEsMTYsMTI0LDEsMTAwLDE0LDI1LAorICAgIDAsMTAwLDE1LDY0LDAsMTI1LDEwLDg3LDAsMTEwLDIyLDQsMCwxMTYsOCwxMDcsCisgICAgMTAsMTQ0LDEsMTE0LDkwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDM0LDg4LAorICAgIDAsMTE2LDksMTI0LDcsMTMxLDEsMTI0LDEwLDEwNywzLDE0NCwxLDExNCwxMjQsMTE2LAorICAgIDQsMTAwLDEzLDEwNiwxLDEyNCwyLDEzMSwxLDEwMiwxLDEyNCw0LDE0MiwxLDEzMCwKKyAgICAxLDEyNCwwLDEwMCw3LDEwMCwxLDEzMywyLDI1LDAsODMsMCw0MSwxNiw5NywKKyAgICAxMjIsMSwwLDAsODYsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAorICAgIDk3LDExNSwxMTUsMTAxLDEwMCw0NSwxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5NSwxMTUsMTE2LDk3LDExNiwxMTUsMzIsNDAsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMDMsCisgICAgMTA1LDExOCwxMDEsMTEwLDQxLDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LAorICAgIDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLAorICAgIDQwLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTExLDExNiwxMDQsCisgICAgMTAxLDExNCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsCisgICAgMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMDQsOTcsMTEwLDk5LDEwMSwKKyAgICAzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsCisgICAgMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwzMiwKKyAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLAorICAgIDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLAorICAgIDk4LDEwMSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsNDYsMzIsNjksNzksNzAsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMDUsMTE1LDMyLDEwMiwxMTEsCisgICAgMTE3LDExMCwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExNCwKKyAgICAxMTcsMTEwLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDExNCwKKyAgICAxMDIsMCwwLDAsMTIyLDEwLDYwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDYyLAorICAgIDExNCwzNywwLDAsMCwxMTQsMTQsMCwwLDAsMjMzLDgsMCwwLDAsMjMzLAorICAgIDEyLDAsMCwwLDEyMiwzMCw5OCw5NywxMDAsMzIsMTA5LDk3LDEwMywxMDUsOTksMzIsCisgICAgMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLAorICAgIDEyMywzMywxMTQsMTI1LDEyMiwyLDEyMywxMjUsMTIyLDQzLDExNCwxMDEsOTcsOTksMTA0LDEwMSwKKyAgICAxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDEwNSwxMTAsCisgICAgMzIsMTIzLDMzLDExNCwxMjUsMTIyLDQ4LDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksCisgICAgNzksNzAsMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTUsMTA1LDEyMiwxMDEsMzIsMTExLDEwMiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAorICAgIDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMjE4LDUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMjIsMjYsCisgICAgOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTE2LDk3LDEwOCwKKyAgICAxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTIzLDMzLDExNCwxMjUsMjE4LDQsMTE1LDEwNSwxMjIsMTAxLAorICAgIDEwOCwzLDAsMCwwLDI1NSwxMjcsMjU1LDEyNywzLDAsNDEsMTAsMjE4LDEyLDc3LAorICAgIDY1LDcxLDczLDY3LDk1LDc4LDg1LDc3LDY2LDY5LDgyLDExNCw1MCwwLDAsMCwKKyAgICAxMTQsMTE4LDAsMCwwLDIxOCwxNiw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwKKyAgICAxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTQsMTAzLDAsMCwwLDExNCwzMywwLDAsCisgICAgMCwyMTgsOCw2OSw3OSw3MCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDE2LDAsMCwwLAorICAgIDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNCwyMSwwLDAsMCw0MSwKKyAgICAxMSwxMTQsNTYsMCwwLDAsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LAorICAgIDExNiw5NywxMTYsMTE1LDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDExLAorICAgIDEwMSwxMjAsOTksOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsNSwxMDksOTcsMTAzLAorICAgIDEwNSw5OSw5MCwxMywxMTQsOTcsMTE5LDk1LDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwKKyAgICAxMTIsOTAsOCwxMTQsOTcsMTE5LDk1LDExNSwxMDUsMTIyLDEwMSwxMTQsNzksMCwwLDAsCisgICAgMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMTEsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDI1LDk1LDExOCw5NywxMDgsCisgICAgMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwKKyAgICAxMDEsOTcsMTAwLDEwMSwxMTQsMTczLDEsMCwwLDExNSw3NiwwLDAsMCwwLDExLAorICAgIDQsMSw4LDEsMTAsMyw0LDEsOCwxLDgsMSwxMiwxLDEyLDEsCisgICAgMTIsMSw4LDEsMTIsMSwxMiwxLDE0LDEsMTIsMSwxMCwxLDEyLDEsCisgICAgMTAsMSwxMiwxLDEwLDEsMTIsMSw4LDEsMTAsMSwyLDEsMTYsMSwKKyAgICAxNiwxLDYsMiwxNCwxLDEwLDEsMTIsMSwxMiwxLDIsMSwxNiwxLAorICAgIDE2LDEsNiwyLDE0LDEsMTIsMSw2LDEsMTE0LDEzOSwwLDAsMCw5OSwKKyAgICA0LDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw4MCwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMCwxMzEsCisgICAgMSwxMjUsNCwxMTYsMiwxMjQsNCwxMTYsMywxMzEsMiwxMTQsNTYsMTE2LDQsMTA2LAorICAgIDUsMTAwLDEsMTI0LDIsMTMxLDIsMSwwLDEyNCwzLDEwMCwyLDEwNyw5LDExNCwKKyAgICA1MiwxMTYsNiwxMDYsNywxMjQsNCwxMjQsMywxMzEsMiwxLDAsMTI0LDQsODMsCisgICAgMCwxMTYsOCwxMDAsMywxMDYsOSwxMjQsMiwxMzEsMSwxMjQsMSwxMjQsMiwxMDAsCisgICAgNCwxNDEsMywxMzAsMSwxMDAsMiw4MywwLDQxLDUsMTIyLDYwLDY3LDExMSwxMDksCisgICAgMTEyLDEwNSwxMDgsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDExNSwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5NSwxMTgsOTcsCisgICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwKKyAgICAxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDQwLDQxLDQ2LDEyMiwyMSw5OSwxMTEsMTAwLDEwMSwzMiwKKyAgICAxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LAorICAgIDc4LDEyMiwyMyw3OCwxMTEsMTEwLDQ1LDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLAorICAgIDk5LDExNiwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDQxLDIsMTE0LDEwMiwwLDAsCisgICAgMCwxMTQsMzcsMCwwLDAsNDEsMTAsMjE4LDcsMTA5LDk3LDExNCwxMTUsMTA0LDk3LAorICAgIDEwOCw5MCw1LDEwOCwxMTEsOTcsMTAwLDExNSwyMTgsMTAsMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsCisgICAgOTcsMTEwLDk5LDEwMSwyMTgsMTAsOTUsOTksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLAorICAgIDExNCwxMTgsMCwwLDAsMTE0LDEzMywwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LDExMiwKKyAgICA5MCwxNiw5NSwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDExNCwxMDMsMCwwLDAsMTE0LDUwLDAsMCwwLDQxLDUsMTE0LDU2LAorICAgIDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCw5NCwwLAorICAgIDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwKKyAgICAxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjI4LDEsMCwwLDExNSwxNiwKKyAgICAwLDAsMCwwLDIsMTAsMSwxMCwxLDEyLDEsOCwxLDEyLDEsNCwKKyAgICAyLDEwLDEsMTE0LDE0NSwwLDAsMCwxMTQsNjIsMCwwLDAsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNTYsMCwwLDAsMTE2LDAsMTE2LDEsMTMxLDEsMTI1LDMsMTI0LAorICAgIDMsMTA2LDIsMTE2LDMsMTI0LDEsMTMxLDEsMTMxLDEsMSwwLDEyNCwzLDEwNiwKKyAgICAyLDExNiwzLDEyNCwyLDEzMSwxLDEzMSwxLDEsMCwxMjQsMywxMDYsMiwxMTYsCisgICAgNCwxMDYsNSwxMjQsMCwxMzEsMSwxMzEsMSwxLDAsMTI0LDMsODMsMCw0MSwKKyAgICAxLDEyMiw4MCw2NywxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTA1LDExMCwxMTYsMTExLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsCisgICAgMTEwLDEwMywzMiwxMTEsMTE3LDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDk4LDEyMSwxMTYsMTAxLAorICAgIDQ1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDEwMCwxMCwzMiwzMiwzMiwzMiwxMDIsMTA1LAorICAgIDEwOCwxMDEsNDYsNDEsNiwyMTgsOSw5OCwxMjEsMTE2LDEwMSw5NywxMTQsMTE0LDk3LDEyMSwKKyAgICAxMTQsMTMyLDAsMCwwLDIxOCw2LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNCwxOSwwLAorICAgIDAsMCwxMTQsMTQwLDAsMCwwLDkwLDUsMTAwLDExNywxMDksMTEyLDExNSw0MSw0LAorICAgIDExNCwxNDQsMCwwLDAsMTE0LDEzMCwwLDAsMCwxMTQsMTM4LDAsMCwwLDExNCwKKyAgICA1NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwMCwxMDEsOTUsMTE2LDExMSw5NSw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyNDAsMSwwLDAsMTE1LDEwLDAsMCwwLDAsCisgICAgMyw4LDEsMTQsMSwxNCwxLDE2LDEsMTE0LDE0OCwwLDAsMCw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw2MiwwLDAsMCwxMDAsMSwxMDAsMiwxMDgsMCwxMjUsMSwKKyAgICAxMTYsMSwxMDYsMiwxMjQsMCwxMzEsMSwxMDYsMywxMjUsMiwxMjQsMSwxMDYsNCwKKyAgICAxMjQsMiwxMzEsMSwxMjUsMywxMTYsMSwxMDYsNSwxMDAsMiwxMDAsMywxMzEsMiwKKyAgICAxMjUsNCwxMjQsNCwxMDYsNiwxMjQsMCwxMDYsNiwxMjQsMywxMDAsMSwyNSwwLAorICAgIDEzMSwxLDEzMSwxLDgzLDAsNDEsNCwxMjIsMTIxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwKICAgICAzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsCiAgICAgMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwKICAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwKQEAgLTc5Myw5OCArNzE5LDkyIEBACiAgICAgMTAxLDExNCwxMTUsOTcsMTA4LDMyLDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSwzMiwxMTUsMTE3LAogICAgIDExMiwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTA1LDExMCwKICAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE0LDYxLDAsMCwwLDc4LDg0LDQxLDcsMjE4LDgsMTE2LDExMSwKLSAgICAxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNTEsMCwwLDAsOTAsNyw2NiwxMjEsMTE2LAorICAgIDMyLDMyLDMyLDExNCw2MiwwLDAsMCw3OCw4NCw0MSw3LDIxOCw4LDExNiwxMTEsCisgICAgMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE0LDUyLDAsMCwwLDkwLDcsNjYsMTIxLDExNiwKICAgICAxMDEsMTE1LDczLDc5LDkwLDgsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDkwLDE1LAogICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLAogICAgIDI1LDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLDExOSwxMDgsCiAgICAgMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMTgsNiwxMDAsMTAxLDk5LDExMSwKICAgICAxMDAsMTAxLDQxLDUsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwKLSAgICAxMDEsMTE1LDExNCwxNTMsMCwwLDAsOTAsMjEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKKyAgICAxMDEsMTE1LDExNCwxNDksMCwwLDAsOTAsMjEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKICAgICA5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDIxOCw4LAogICAgIDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw5MCwxNSwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwKICAgICAxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsCiAgICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsCi0gICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNDgsMSwwLDAsMTE1LDEwLDAsMCwwLAotICAgIDAsNSwxMiwxLDE4LDEsMTUsMSwxOCwxLDExNCwxNTcsMCwwLDAsMTE0LAotICAgIDEyOSwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICAxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LAotICAgIDk5LDIsMCwwLDAsMiwwLDAsMCw5LDAsMCwwLDE5LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw4OSwxLDAsMCwxMjQsMSwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsNzMsMCwxMDAsMiwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMiwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsNzMsMCwxMjEsMTksMCwxMjQsMiwKLSAgICAwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsODcsMTEwLDE4LAotICAgIDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw3MiwwLDEsMSwxLDg5LDExMCwKLSAgICAxLDAsODgsMTE2LDMsMCwxMDYsNCwwLDEyNCwwLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEyNCwxLDAsMTMxLDIsMSwxMjUsNCwwLDEwMCw1LDAsMTI0LDQsCi0gICAgMCw5NSw1LDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE5NCwwLAotICAgIDEyMCw3MywwLDExNiw2LDAsMTMxLDAsMCw2OCw5Myw1OCwwLDkyLDIsMCwKLSAgICAxMjUsNSwwLDEyNSw2LDAsMTI0LDEsMCwxMDYsNywwLDExNiw4LDAsMTI0LAotICAgIDYsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDEyOCwwLDEyNCw1LDAsMTI0LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCw0LDAsCi0gICAgOTUsOSwwLDgwLDExMywxMjgsMCw4NywxMDAsMSwwLDgzLDEyNCwzLDAsMTE2LAotICAgIDEwLDAsMTA3LDgsMCwxMTQsMjMsMSwxMTYsMCwwLDEyNCwyLDAsMTAwLDYsCi0gICAgMCwxMzEsMiwwLDExNCwzMiwxLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDExLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDE4LDAsNCwxMTYsMiwKLSAgICAwLDEwNywxMCwwLDExNCw0LDEsMSwxLDEsODksMTEzLDMyLDEsODgsMTI0LAotICAgIDcsMCwxMTQsMzIsMSwxMDMsMCwwLDEyNCw0LDAsOTUsMTIsMCwxMTAsOSwKLSAgICAwLDEyNCwzLDAsMTI0LDQsMCw5NSwxMiwwLDEyNCw0LDAsMTA2LDEyLDAsCi0gICAgMTAzLDAsMCwxMDcsMiwwLDExNCw4NSwxLDEyNCwxLDAsMTE0LDg1LDEsMTE2LAotICAgIDEzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCw3LDAsMjUsMTI1LDgsMCwxMjQsCi0gICAgNCwwLDEwNiwxMiwwLDEwNiwxNCwwLDEyNCw4LDAsMTMxLDEsMCwxLDEyNCwKLSAgICA0LDAsODMsNDEsOCw5Nyw2MSwxLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LAotICAgIDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwKLSAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDExMSwKLSAgICAzMiwxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NCwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE2LDExMSwzMiw5NywzMiwKLSAgICAxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsCi0gICAgMTIxLDMyLDExMiw5NywxMTYsMTA0LDExNSw0NiwzMiwzMiw2NSwxMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTA1LDExNSwzMiwxMTUsCi0gICAgMTE3LDEwMiwxMDIsMTA1LDk5LDEwNSwxMDEsMTEwLDExNiw0NCwzMiwxMTYsMTA0LDExMSwxMTcsMTAzLAotICAgIDEwNCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwKLSAgICAxMDUsMTE1LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDIsMTE3LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNSwxMjEsMTE1LAotICAgIDExNiwxMDEsMTA5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE2LDk3LDEwNywxMDEsMzIsOTcsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDEwNSwxMTYsMTE1LDMyLDExMSwxMTAsMTA4LAotICAgIDEyMSwzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsNDEsMzIsOTcsMTE0LDEwMywKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsOSw2MCwxMTcsMTEwLDEwNywxMTAsMTExLAotICAgIDExOSwxMTAsNjIsMjE4LDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAotICAgIDEwMSwyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDYxLDAsMCwwLDQxLDE1LDExNCwxMTcsMCwKLSAgICAwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMjMsMCwwLAotICAgIDAsMjE4LDEwLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5MCwxMyw5NSwKLSAgICAxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDI3LDk1LDEwMywKLSAgICAxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LAotICAgIDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsOTQsMCwwLDAsMTE0LDk1LAotICAgIDAsMCwwLDExNCwxMjksMCwwLDAsMjE4LDksOTUsODAsNzksODAsODUsNzYsCi0gICAgNjUsODQsNjksMTE0LDE2MSwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw0MCwwLAotICAgIDAsMCwyMTgsNiw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDQxLDksMTE0LDEwOCwwLDAsCi0gICAgMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMjksMCwwLDAsCi0gICAgMTE0LDE1OCwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsMTIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw5NSw5OSwxMDgsOTcsMTE1LDExNSwyMTgsOCwxMTUsMTE3LDEwMiwxMDIsMTA1LAotICAgIDEyMCwxMDEsMTE1LDExNCwxNjEsMCwwLDAsOTAsNywxMDAsMTA1LDExNCwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMjMsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5LDIsMCwwLDExNSw2MCwwLAotICAgIDAsMCwwLDEyLDEyLDQsNiwxLDE1LDIsMywxLDE5LDEsMTMsMSwKLSAgICA1LDgsMjQsMSw5LDMsMTIsMSwyMiwxLDIxLDEsMTUsMSw5LDEsCi0gICAgNSwyLDQsMywxMiwyLDE1LDEsMywxLDE5LDEsMTMsMSw1LDIsCi0gICAgNiwxLDEyLDIsOSwxLDE1LDEsNiwxLDE2LDEsMTYsMiwxMTQsMTY5LAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDUsMCwwLDAsNjQsMCwwLDAsMTE1LDEyMSwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDkwLDQsMCwxMDAsMywwLDkwLDUsMCwxMDAsNCwwLDkwLDYsCi0gICAgMCwxMDEsNywwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsCi0gICAgOTAsOCwwLDEwMSw3LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCw5MCw5LDAsMTAxLDcsMCwxMDAsOSwwLDEwMCw5LDAsMTAwLDEwLAotICAgIDAsMTAwLDExLDAsMTMyLDIsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsMCwKLSAgICAxMDAsOSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwxLDAsMTMxLDEsMCw5MCwKLSAgICAxMSwwLDEwMCw5LDAsODMsNDEsMTQsMjE4LDIxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCisgICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNTAsMSwwLDAsMTE1LDEwLDAsMCwwLAorICAgIDAsNSw4LDEsMTIsMSwxMCwxLDEyLDEsMTE0LDE1MywwLDAsMCw0MSwKKyAgICAyLDExNCwxMjQsMCwwLDAsMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDExNSw5OSwyLDAsMCwwLDIsMCwwLDAsOSwwLDAsMCwxOSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTgsMSwwLDAsMTI0LDEsMTAwLDEsCisgICAgMTA3LDgsMTE0LDYwLDEwMCwyLDEyNSwxLDExNiwwLDEyNCwyLDEwMCwzLDEzMSwyLAorICAgIDExNCw3MCwxMjEsMTQsMTI0LDIsMTA2LDEsMTI0LDAsMTMxLDEsMTI1LDEsODcsMCwKKyAgICAxMTMsNzAsNCwwLDExNiwyLDEwNywxMCwxMTQsNTYsMSwwLDEsMCwxLDAsCisgICAgODksMCwxMTMsNzAsODgsMCwxMTAsMTAsMTE2LDMsMTA2LDQsMTI0LDEsMTMxLDEsCisgICAgMTI1LDEsMTE2LDUsMTA2LDYsMTI0LDAsMTI0LDIsMTI0LDEsMTAwLDQsMTQxLDMsCisgICAgMTI1LDQsMTAwLDUsMTI0LDQsOTUsNywxMjQsMiwxMDAsMSwxMDcsOCwxMTQsMTU2LAorICAgIDEyMCw1NCwxMTYsOCwxMzEsMCw2OCwwLDkzLDQwLDkyLDIsMTI1LDUsMTI1LDYsCisgICAgMTI0LDEsMTA2LDksMTE2LDEwLDEyNCw2LDEzMSwxLDEzMSwxLDExNCwxMDgsMTI0LDUsCisgICAgMTI0LDAsMTI0LDEsMTMxLDIsMTI1LDIsMTI0LDIsMTI0LDQsOTUsMTEsODAsMCwKKyAgICAxMTMsMTA4LDg3LDAsMTAwLDEsODMsMCwxMjQsMywxMTYsMTIsMTA3LDgsMTE0LDIyMiwKKyAgICAxMTYsMCwxMjQsMiwxMDAsNiwxMzEsMiwxMTQsMjI4LDEyMSwxNCwxMjQsMiwxMDYsMTMsCisgICAgMTI0LDAsMTMxLDEsMTI1LDcsODcsMCwxMTAsMjAsNCwwLDExNiwyLDEwNywxMCwKKyAgICAxMTQsMjA4LDEsMCwxLDAsMSwwLDg5LDAsMTEzLDIyOCw4OCwwLDEyNCw3LAorICAgIDExNCwyMjgsMTAzLDAsMTI0LDQsOTUsMTQsMTEwLDYsMTI0LDMsMTI0LDQsOTUsMTQsCisgICAgMTI0LDQsMTA2LDE0LDEwMywwLDEwNywyLDE0NCwxLDExNCwxNCwxMjQsMSwxNDQsMSwKKyAgICAxMTQsMTQsMTE2LDE1LDEyNCwxLDEzMSwxLDEwMCw3LDI1LDAsMTI1LDgsMTI0LDQsCisgICAgMTA2LDE0LDEwNiwxNiwxMjQsOCwxMzEsMSwxLDAsMTI0LDQsODMsMCw0MSw4LAorICAgIDk3LDYxLDEsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsCisgICAgMTExLDExMCwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LDExMSw5OSw5NywxMTYsMTA1LAorICAgIDExMSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTExLDMyLDEwNSwxMTAsMTAwLDEwNSwKKyAgICA5OSw5NywxMTYsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsCisgICAgMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMTcsOTgsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDExNSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwOCwxMDUsMTE1LDExNiwzMiwKKyAgICAxMTEsMTAyLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE1LDQ2LDMyLDMyLDY1LDExMCwxMCwzMiwzMiwzMiwzMiwxMDEsMTA5LDExMiwxMTYsCisgICAgMTIxLDMyLDEwOCwxMDUsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsOTksCisgICAgMTA1LDEwMSwxMTAsMTE2LDQ0LDMyLDExNiwxMDQsMTExLDExNywxMDMsMTA0LDMyLDEwNSwxMTYsMTE1LAorICAgIDMyLDExMCwxMTEsMTE2LDMyLDExMSwxMTYsMTA0LDEwMSwxMTQsMTE5LDEwNSwxMTUsMTAxLDMyLDExNywKKyAgICAxMTUsMTAxLDEwMiwxMTcsMTA4LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAorICAgIDEwOSwxMTcsMTE1LDExNiwzMiwxMTYsOTcsMTA3LDEwMSwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwKKyAgICAzMiw5NywxMTUsMzIsMTA1LDExNiwxMTUsMzIsMTExLDExMCwxMDgsMTIxLDMyLDk1LDk1LDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSw5NSw0MCw0MSwzMiw5NywxMTQsMTAzLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDc4LDEyMiw5LDYwLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw2MiwyMTgsMTIsCisgICAgMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDQxLDEsMjE4LDYsCisgICAgMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsODQsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDExNCw2MiwwLDAsMCw0MSwxNywxMTQsMTEyLDAsMCwwLDExNCwKKyAgICAxNTUsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMywwLDAsMCwxMTQsNjcsCisgICAgMCwwLDAsMTE0LDExOCwwLDAsMCwyMTgsMTAsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA4MywxMTIsMTAxLDk5LDkwLDEzLDk1LDExNSwxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywKKyAgICAxMTYsMTE2LDExNCwyMTgsMjcsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LAorICAgIDExNCw5NiwwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LDEyNCwwLDAsMCwyMTgsCisgICAgOSw5NSw4MCw3OSw4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTU3LDAsMCwwLDExNCwKKyAgICAxNTQsMCwwLDAsMTE0LDQwLDAsMCwwLDIxOCw2LDk3LDExMiwxMTIsMTAxLDExMCwKKyAgICAxMDAsNDEsOSwxMTQsMTAyLDAsMCwwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LAorICAgIDExMSwxMTAsMTE0LDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDIxOCw0LDExNSwxMTIsCisgICAgMTAxLDk5LDIxOCwxMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk5LDEwOCw5NywxMTUsMTE1LAorICAgIDIxOCw4LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMTE0LDE1NywwLDAsMCw5MCwKKyAgICA3LDEwMCwxMDUsMTE0LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwyMywxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LAorICAgIDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDExLDIsMCwwLDExNSw2MiwwLDAsMCwwLDEyLDgsNCw0LDEsMTAsCisgICAgMiwyLDEsMTQsMSwxNCwxLDgsMiwxMCw4LDE2LDEsNiwzLDgsCisgICAgMSwxNiwxLDE0LDEsMTAsMSw2LDEsNiwyLDQsMyw4LDIsMTAsCisgICAgMSwyLDEsMTQsMSwxNCwxLDYsMiw0LDEsOCwyLDYsMSwxMiwKKyAgICAxLDYsMSwxMiwxLDEyLDIsMTE0LDE2NSwwLDAsMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDY0LDAsMCwKKyAgICAwLDExNSw4MCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsCisgICAgOTAsMywxMDAsMiw5MCw0LDEwMCwzLDkwLDUsMTAwLDQsOTAsNiwxMDEsNywKKyAgICAxMDAsNSwxMDAsNiwxMzIsMCwxMzEsMSw5MCw4LDEwMSw3LDEwMCw3LDEwMCw4LAorICAgIDEzMiwwLDEzMSwxLDkwLDksMTAxLDcsMTAwLDE0LDEwMCwxMCwxMDAsMTEsMTMyLDEsCisgICAgMTMxLDEsOTAsMTAsMTAxLDcsMTAwLDE1LDEwMCwxMiwxMDAsMTMsMTMyLDEsMTMxLDEsCisgICAgOTAsMTEsMTAwLDksODMsMCw0MSwxNiwyMTgsMjEsODcsMTA1LDExMCwxMDAsMTExLDExOSwKICAgICAxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLAogICAgIDYyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwKICAgICAxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMCwxMDEsCkBAIC04OTksMTA2ICs4MTksMTAwIEBACiAgICAgMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLAogICAgIDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsOTIsNjgsMTAxLDk4LDExNywxMDMsNzAsCiAgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDY3LDAsMCwwLDEyMSwyMywwLDExNiwwLDAsCi0gICAgMTA2LDEsMCwxMTYsMCwwLDEwNiwyLDAsMTI0LDEsMCwxMzEsMiwwLDgzLAotICAgIDg3LDExMCwzNywwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNjIsMCwxLDEsCi0gICAgMSwxMTYsMCwwLDEwNiwxLDAsMTE2LDAsMCwxMDYsNCwwLDEyNCwxLDAsCi0gICAgMTMxLDIsMCw4Myw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICA0MSw1LDIxOCw3LDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsNzksMTEyLDEwMSwKLSAgICAxMTAsNzUsMTAxLDEyMSw5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSwKLSAgICA3OCw4NCw5NSw4NSw4Myw2OSw4MiwxMTQsNDIsMCwwLDAsOTAsMTgsNzIsNzUsCi0gICAgNjksODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsNzMsNzgsNjksCi0gICAgNDEsMiwyMTgsMyw5OSwxMDgsMTE1LDExNCw1LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMTEsMTEyLAotICAgIDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw4NywyLDAsMCwxMTUsCi0gICAgOCwwLDAsMCwwLDIsMywxLDIzLDEsMTMsMSwxMjIsMzYsODcsMTA1LAorICAgIDAsNjcsMCwwLDAsMTE1LDUwLDAsMCwwLDEyMSwxNCwxMTYsMCwxMDYsMSwKKyAgICAxMTYsMCwxMDYsMiwxMjQsMSwxMzEsMiw4MywwLDQsMCwxMTYsMywxMDcsMTAsCisgICAgMTE0LDQ0LDEsMCwxLDAsMSwwLDExNiwwLDEwNiwxLDExNiwwLDEwNiw0LAorICAgIDEyNCwxLDEzMSwyLDgzLDAsODgsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsCisgICAgNSwyMTgsNyw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5MCw3LDc5LDExMiwxMDEsMTEwLAorICAgIDc1LDEwMSwxMjEsOTAsMTcsNzIsNzUsNjksODksOTUsNjcsODUsODIsODIsNjksNzgsCisgICAgODQsOTUsODUsODMsNjksODIsMTE0LDQyLDAsMCwwLDkwLDE4LDcyLDc1LDY5LAorICAgIDg5LDk1LDc2LDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LDQxLAorICAgIDIsMjE4LDMsOTksMTA4LDExNSwxMTQsNSwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsOTUsMTExLDExMiwxMDEsCisgICAgMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTEsMiwwLDAsMTE1LDgsCisgICAgMCwwLDAsMCwyLDIsMSwxNCwxLDE0LDEsMTIyLDM2LDg3LDEwNSwxMTAsCisgICAgMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQ2LDk1LDExMSwxMTIsMTAxLDExMCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsCisgICAgMTIxLDk5LDIsMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDE2LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwxMTIsMCwwLDAsMTI0LDAsMTA2LDAsMTE0LAorICAgIDE0LDEyNCwwLDEwNiwxLDEyNSwyLDExMCw2LDEyNCwwLDEwNiwyLDEyNSwyLDEyNCwKKyAgICAyLDEwNiwzLDEyNCwxLDEwMCwxLDExNiw0LDEwNiw1LDEwMCwwLDEwMCwyLDEzMywKKyAgICAyLDI1LDAsMjIsMCwxMDAsMywxNDEsMiwxMjUsMywxMjEsMzgsMTI0LDAsMTA2LAorICAgIDYsMTI0LDMsMTMxLDEsMTQzLDE4LDEyNSw0LDExNiw3LDEwNiw4LDEyNCw0LDEwMCwKKyAgICA0LDEzMSwyLDEyNSw1LDg3LDAsMTAwLDAsODEsMCw4MiwwLDg4LDAsODcsCisgICAgMCwxMTAsMjAsNCwwLDExNiw5LDEwNywxMCwxMTQsMTA2LDEsMCwxLDAsMSwKKyAgICAwLDEwMCwwLDgzLDAsODgsMCwxMjQsNSw4MywwLDQxLDUsNzgsMTIyLDUsCisgICAgMzcsMTAwLDQ2LDM3LDEwMCwxMTQsNTksMCwwLDAsNDEsMiwxMTQsMTIzLDAsMCwKKyAgICAwLDkwLDExLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTQsMzIsCisgICAgMCwwLDAsNDEsMTAsMjE4LDExLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg1LDczLAorICAgIDc2LDY4LDIxOCwxOCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwKKyAgICA5NSw2OCw2OSw2Niw4NSw3MSwyMTgsMTIsODIsNjksNzEsNzMsODMsODQsODIsODksCisgICAgOTUsNzUsNjksODksMTE0LDUwLDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxMiwKKyAgICAxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsOTUsMTA1LDExMCwxMDIsMTExLDExNCwxNjksMCwwLAorICAgIDAsMTE0LDE2NywwLDAsMCw5MCwxMCw4MSwxMTcsMTAxLDExNCwxMjEsODYsOTcsMTA4LAorICAgIDExNywxMDEsMTE0LDQyLDAsMCwwLDQxLDYsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLAorICAgIDAsMCwwLDkwLDEyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTUsMTA3LDEwMSwKKyAgICAxMjEsMTE0LDUsMCwwLDAsOTAsNCwxMDQsMTA3LDEwMSwxMjEsMjE4LDgsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDExMiw5NywxMTYsMTA0LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCwxNiw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LAorICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5OCwyLDAsMCwxMTUsMjIsMCwwLDAsCisgICAgMCwyLDYsMSw4LDIsNiwxLDYsMSwyMiwxLDIsMSwxMiwxLAorICAgIDI2LDEsMTQsMSw2LDEsMTIyLDM4LDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLAorICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExNSwKKyAgICAxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDc4LDk5LAorICAgIDQsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDE0LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxMjAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTMxLAorICAgIDEsMTI1LDQsMTI0LDQsMTAwLDAsMTA3LDgsMTE0LDIyLDEwMCwwLDgzLDAsMTIxLAorICAgIDEyLDExNiwxLDEyNCw0LDEzMSwxLDEsMCw4NywwLDExMCwyMCw0LDAsMTE2LAorICAgIDIsMTA3LDEwLDExNCw1NCwxLDAsMSwwLDEsMCwxMDAsMCw4MywwLDg4LAorICAgIDAsMTIwLDU4LDExNiwzLDEzMSwwLDY4LDAsOTMsNDgsOTIsMiwxMjUsNSwxMjUsCisgICAgNiwxMjQsNCwxMDYsNCwxMTYsNSwxMjQsNiwxMzEsMSwxMzEsMSwxMTQsNjQsMTE2LAorICAgIDYsMTA2LDcsMTI0LDEsMTI0LDUsMTI0LDEsMTI0LDQsMTMxLDIsMTI0LDQsMTAwLAorICAgIDEsMTQxLDMsMTI1LDcsMTI0LDcsODMsMCwxMTMsNjQsODcsMCwxMDAsMCw4MywKKyAgICAwLDQxLDIsNzgsNDEsMSwxMTQsMTU2LDAsMCwwLDQxLDgsMTE0LDE3NSwwLAorICAgIDAsMCwxMTQsNDEsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCwxNTksMCwwLAorICAgIDAsMTE0LDk2LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsMTE4LDAsMCwwLAorICAgIDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw0MSw4LDExNCwxNjgsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsCisgICAgMCwwLDAsMjE4LDYsMTE2LDk3LDExNCwxMDMsMTAxLDExNiwxMTQsMTc0LDAsMCwwLAorICAgIDExNCwxMjQsMCwwLDAsMTE0LDE2NCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw5LAorICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxMTMsMiwwLDAsMTE1LDI2LDAsCisgICAgMCwwLDAsMiwxMCwxLDgsMSw0LDEsMiwxLDEyLDEsMTQsMSwKKyAgICA2LDEsMTYsMSwxNCwxLDYsMSw4LDEsOCwxLDEyMiwzMSw4NywxMDUsCiAgICAgMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCw0Niw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsCi0gICAgMTE0LDEyMSw5OSwyLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTQzLDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMTQsMjEsMCwxMjQsMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTAsOSwKLSAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDMsMCwKLSAgICAxMDAsMSwwLDEyNCwxLDAsMTAwLDIsMCwxMTYsNCwwLDEwNiw1LDAsMTAwLAotICAgIDAsMCwxMDAsMywwLDEzMywyLDAsMjUsMTMxLDAsMiwxMjUsMywwLDEyMSwKLSAgICA0NywwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEzMSwxLDAsMTQzLDI1LAotICAgIDAsMTI1LDQsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsNCwwLAotICAgIDEzMSwyLDAsMTI1LDUsMCw4NywxMDAsMCwwLDgxLDgyLDg4LDg3LDExMCwyMiwKLSAgICAwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMTM4LDAsMSwxLDEsMTAwLDAsCi0gICAgMCw4Myw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsODMsNDEsNSw3OCwxMTQsMTI4LAotICAgIDAsMCwwLDkwLDExLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwKLSAgICAxMTQsODIsMCwwLDAsMTE0LDMyLDAsMCwwLDQxLDEwLDIxOCwxMSw2OCw2OSwKLSAgICA2Niw4NSw3MSw5NSw2Niw4NSw3Myw3Niw2OCwyMTgsMTgsODIsNjksNzEsNzMsODMsCi0gICAgODQsODIsODksOTUsNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMjE4LDEyLDgyLAotICAgIDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDExNCw0OSwwLDAsMCwKLSAgICAxMTQsOCwwLDAsMCwyMTgsNywxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDE3MywKLSAgICAwLDAsMCwxMTQsMTcxLDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4NiwKLSAgICA5NywxMDgsMTE3LDEwMSwxMTQsNDIsMCwwLDAsNDEsNiwxMTQsMTcyLDAsMCwwLAotICAgIDExNCwxMjgsMCwwLDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwKLSAgICAxMDcsMTAxLDEyMSwxMTQsNSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk0LDIsMCwwLDExNSwyMiwwLAotICAgIDAsMCwwLDIsOSwxLDEyLDIsOSwxLDE1LDEsMjIsMSwzLDEsCi0gICAgMTgsMSwyOSwxLDEzLDEsOSwxLDEyMiwzOCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAotICAgIDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKLSAgICA5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwKLSAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwxNCwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTU4LDAsMCwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsMzEsMCwxMDAsMCwwLDgzLDEyMSwxNCwwLDExNiwxLDAsCi0gICAgMTI0LDQsMCwxMzEsMSwwLDEsODcsMTEwLDIyLDAsNCwxMTYsMiwwLDEwNywKLSAgICAxMCwwLDExNCw2OSwwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLDEsMCwKLSAgICA4OCwxMjAsODEsMCwxMTYsMywwLDEzMSwwLDAsNjgsOTMsNzAsMCw5MiwyLAotICAgIDAsMTI1LDUsMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDQsMCwxMTYsNSwwLAotICAgIDEyNCw2LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4MCwwLDExNiw2LDAsMTA2LAotICAgIDcsMCwxMjQsMSwwLDEyNCw1LDAsMTI0LDEsMCwxMjQsNCwwLDEzMSwyLAotICAgIDAsMTAwLDEsMCwxMjQsNCwwLDEzMSwyLDEsMTI1LDcsMCwxMjQsNywwLAotICAgIDgzLDExMyw4MCwwLDg3LDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsMTYwLDAsMCwKLSAgICAwLDQxLDgsMTE0LDE3OSwwLDAsMCwxMTQsNDEsMCwwLDAsMTE0LDQyLDAsCi0gICAgMCwwLDExNCwxNjMsMCwwLDAsMTE0LDk0LDAsMCwwLDExNCw5NSwwLDAsCi0gICAgMCwxMTQsMTIzLDAsMCwwLDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwKLSAgICAxMDksOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSw4LDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LDYsMTE2LDk3LDExNCwxMDMsMTAxLAotICAgIDExNiwxMTQsMTc4LDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDE2OCwwLDAsMCwKLSAgICAxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxMDksCi0gICAgMiwwLDAsMTE1LDI2LDAsMCwwLDAsMiwxNSwxLDEyLDEsNCwxLAotICAgIDMsMSwxNCwxLDEzLDEsOSwxLDIyLDEsMjEsMSw5LDEsMTUsMSwKLSAgICA5LDEsMTIyLDMxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwKLSAgICAxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsCi0gICAgMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSw0NSwwLDAsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsMzcsMCwxMjQsMywwLDEwNiwxLAotICAgIDAsODMsMTAwLDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDEwOCw3MCwxMDUsCi0gICAgMTEwLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsCi0gICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKLSAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE4MiwwLAotICAgIDAsMCwxMTQsMTI5LDAsMCwwLDQxLDQsMTE0LDE3MiwwLDAsMCwxMTQsMTI4LAotICAgIDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTI1LDIsMCwwLDExNSw4LDAsCi0gICAgMCwwLDAsNywxOCwxLDEyLDEsNywyLDEyMiwzMyw4NywxMDUsMTEwLDEwMCwKLSAgICAxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLAotICAgIDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMTIsMTE0LAotICAgIDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwKLSAgICAwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwxNzUsMCwwLDAsMTE0LDE3NCwwLAotICAgIDAsMCwyMTgsMTEsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LAotICAgIDE3MywwLDAsMCwxMTQsMTc5LDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4MywKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTcwLDAsMCwwLDc1LDIsMCwwLAotICAgIDExNSwyMCwwLDAsMCwxMiwyLDYsMyw2LDMsNiwyLDYsMiwxOCwKLSAgICA3LDE4LDE1LDMsMSwyMSwxNSwzLDEsMTE0LDE3MCwwLDAsMCw5OSwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LAotICAgIDAsMCwwLDExNSw3MCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwKLSAgICAwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsCi0gICAgMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCi0gICAgNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsODMsNDEsMTEsCisgICAgMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDM0LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEyNCwyLDEzMSwKKyAgICAyLDEyNSwzLDEyNCwzLDEwMCwxLDEwNyw5LDExNCwyNiwxMjQsMywxMDYsMSw4MywKKyAgICAwLDEwMCwxLDgzLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwxMDgsNzAsMTA1LDExMCwKKyAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwNSwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLAorICAgIDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LAorICAgIDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCwxNzgsMCwwLAorICAgIDAsMTE0LDEyNCwwLDAsMCw0MSw0LDExNCwxNjgsMCwwLDAsMTE0LDEyMywwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsCisgICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyOSwyLDAsMCwxMTUsOCwwLDAsCisgICAgMCwwLDcsMTIsMSw4LDEsNiwyLDEyMiwzMyw4NywxMDUsMTEwLDEwMCwxMTEsCisgICAgMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMiw3OCw3OCwKKyAgICA0MSwxLDc4LDQxLDEyLDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsCisgICAgMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE3MiwwLDAsMCwxMTQsMTcxLAorICAgIDAsMCwwLDExNCwxNzAsMCwwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNjksMCwwLDAsMTE0LDE3NSwwLDAsMCwxMTQsCisgICAgMTc4LDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE2NiwwLAorICAgIDAsMCw3OSwyLDAsMCwxMTUsMjAsMCwwLDAsOCwyLDQsMyw0LAorICAgIDMsNCwyLDQsMiwxMiw3LDEyLDE1LDIsMSwxMiwxNSwyLDEsMTE0LAorICAgIDE2NiwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0OCwwLDAsMCwxMDEsMCwKKyAgICA5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCwKKyAgICA5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsCisgICAgOTAsNiwxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LDEwMCwxMCw4MywwLDQxLDExLAogICAgIDIxOCwxMyw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTIyLAogICAgIDgzLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwKICAgICAxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCkBAIC0xMDA2LDExMCArOTIwLDEwNiBAQAogICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLAogICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAogICAgIDEwMCwxMDEsMTE0LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLAotICAgIDEwMCwxLDAsMjUsMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCwKLSAgICAxMDAsMSwwLDEzMSwyLDAsMTAwLDMsMCwyNSwxMjUsMywwLDEyNCwxLDAsCi0gICAgMTA2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDQsMCwyNSwxMjUsNCwwLAotICAgIDEyNCwzLDAsMTAwLDUsMCwxMDcsMiwwLDExMSw4NywwLDEyNCw0LDAsMTAwLAotICAgIDUsMCwxMDcsMywwLDgzLDQxLDYsMTIyLDE0MSw2NywxMTEsMTEwLDk5LDExNCwxMDEsCi0gICAgMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5OCwxMjEsCi0gICAgMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwxMDMsMzIsMTA1LDEwMiwxMCwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTQsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwzOSw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCi0gICAgOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMTQsMzEsMCwwLDAsMTE0LDYwLDAsMCwKLSAgICAwLDExNCw2MSwwLDAsMCwxMTQsNTgsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LAotICAgIDExMCwxMDUsMTE2LDk1LDk1LDQxLDQsMTE0LDQwLDAsMCwwLDExNCwxNTksMCwwLAotICAgIDAsMTE0LDM2LDAsMCwwLDExNCwzNCwwLDAsMCw0MSw1LDExNCwxMTAsMCwKLSAgICAwLDAsMTE0LDEyOCwwLDAsMCwxMTQsOTYsMCwwLDAsOTAsMTMsMTAyLDEwNSwKLSAgICAxMDgsMTAxLDExMCw5NywxMDksMTAxLDk1LDk4LDk3LDExNSwxMDEsOTAsOSwxMTYsOTcsMTA1LAotICAgIDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsMTYxLDAsMCwwLDE0NCwyLDAsMCwxMTUsOCwKLSAgICAwLDAsMCwwLDMsMjUsMSwyMiwxLDE5LDEsMTIyLDI0LDk1LDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAotICAgIDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwKLSAgICAxLDAsODMsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsCi0gICAgMTA4LDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxNjYsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxNTIsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODAsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDU0LDAsMTE2LAotICAgIDIsMCwxMDAsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExNiw0LDAsMTA2LDUsMCwxMTYsNiwwLAotICAgIDEyNCwyLDAsMTI0LDEsMCwxMDYsNywwLDEzMSwzLDAsMSwxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCisgICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMTYsMCwKKyAgICAxMjQsMCwxMDYsMSwxMjQsMSwxMzEsMSwxMzEsMSwxMDAsMSwyNSwwLDEyNSwyLAorICAgIDEyNCwyLDEwNiwyLDEwMCwyLDEwMCwxLDEzMSwyLDEwMCwzLDI1LDAsMTI1LDMsCisgICAgMTI0LDEsMTA2LDMsMTAwLDIsMTMxLDEsMTAwLDQsMjUsMCwxMjUsNCwxMjQsMywKKyAgICAxMDAsNSwxMDcsMiwxMTEsNjIsMTI0LDQsMTAwLDUsMTA3LDMsODMsMCw0MSw2LAorICAgIDEyMiwxNDEsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKKyAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwKKyAgICAxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsMzIsOTgsMTIxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwNSwxMTAsCisgICAgMTAzLDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwzMiw5OCwKKyAgICAxMjEsMzIsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNCwKKyAgICA5NywxMTUsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsCisgICAgMzIsMzksOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDExMiwxMjEsMzksNDYsMTE0LAorICAgIDMxLDAsMCwwLDExNCw2MSwwLDAsMCwxMTQsNjIsMCwwLDAsMTE0LDU5LAorICAgIDAsMCwwLDIxOCw4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MSw0LDExNCwKKyAgICA0MCwwLDAsMCwxMTQsMTU1LDAsMCwwLDExNCwzNiwwLDAsMCwxMTQsMzQsCisgICAgMCwwLDAsNDEsNSwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAorICAgIDk4LDAsMCwwLDkwLDEzLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSw5OCwKKyAgICA5NywxMTUsMTAxLDkwLDksMTE2LDk3LDEwNSwxMDgsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE1NywwLAorICAgIDAsMCwxNDgsMiwwLDAsMTE1LDgsMCwwLDAsMCwzLDE4LDEsMTYsCisgICAgMSwxNCwxLDEyMiwyNCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSwKKyAgICA5OSwxMTUsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDQyLDg1LAorICAgIDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLAorICAgIDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLAorICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDc4LDExNCw0LDAsMCwwLDQxLAorICAgIDIsMTE0LDEwNCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMyw5OSwxMTQsMTAxLDk3LAorICAgIDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTU2LDIsMCwwLDExNSwwLDAsCisgICAgMCwwLDEyMiwyNyw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwKKyAgICAxMTUsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDQsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDU2LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwxLDEwNiwKKyAgICAxLDEzMSwxLDEyNSwyLDEyNCwyLDEwMCwxLDEwNyw4LDExNCwzNiwxMTYsMiwxMDAsCisgICAgMiwxMDYsMywxMjQsMSwxMDYsMSwxMzEsMSwxMzEsMSwxMzAsMSwxMTYsNCwxMDYsCisgICAgNSwxMTYsNiwxMjQsMiwxMjQsMSwxMDYsNywxMzEsMywxLDAsMTAwLDEsODMsCisgICAgMCw0MSwzLDEyMiwxOSw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLAogICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDEyMiw1Miw5OSw5NywxMTAsMTEwLDExMSwKICAgICAxMTYsMzIsMTA4LDExMSw5NywxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAogICAgIDExNCwxMjUsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLAogICAgIDQwLDQxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw3OCwxMTEsMTEwLDEwMSw0MSwKLSAgICA4LDIxOCw4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNCwxMTQsMCwwLDAsCi0gICAgMTE0LDEwOSwwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEyMywwLDAsMCwyMTgsCisgICAgOCwyMTgsOCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTQsMTA5LDAsMCwwLAorICAgIDExNCwxMDMsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMTgsMCwwLDAsMjE4LAogICAgIDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LAogICAgIDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDIxOCw0LDEwMSwxMjAsMTAxLDk5LAotICAgIDExNCwxMjAsMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDIxOCw2LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDExNCwxNDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMTE0LDExNSwwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsMjE4LDYsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMTE0LDE0NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKICAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTAxLDEyMCwxMDEsOTksOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTU1LDIsMCwwLDExNSwxMCwwLDAsMCwwLDIsCi0gICAgMTgsMSwxMiwxLDksMSwxNSwxLDEyMiwyNSw5NSw3NiwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDE1OSwyLDAsMCwxMTUsMTAsMCwwLDAsMCwyLAorICAgIDEyLDEsOCwxLDYsMSwxMCwxLDEyMiwyNSw5NSw3NiwxMTEsOTcsMTAwLDEwMSwKICAgICAxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsCiAgICAgMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwKLSAgICAxMDYsMSwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDEsNzgsCi0gICAgNDEsMiwxMTQsMTIzLDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksNDEsMiwxMTQsMTEwLDAsMCwKLSAgICAwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDE2MywyLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LAotICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDgsMTExLDk3LAotICAgIDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSw4LDExNCwxMTQsMCwwLDAsCi0gICAgMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LAotICAgIDE2MSwwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCwxOTIsMCwwLDAsMTE0LDE5NCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg1LDAsMCwwLDEzOSwyLDAsMCwKLSAgICAxMTUsMTAsMCwwLDAsMTIsMyw2LDIsMTIsOCwxMiwzLDEyLDgsMTE0LAotICAgIDE4NSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgMCw0LDAsMCwwLDY0LDAsMCwwLDExNSwxMDYsMCwwLDAsMTAxLDAsCi0gICAgMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCwxMDAsMiwwLAotICAgIDEzMiwwLDAsOTAsMywwLDEwMCwzLDAsMTAwLDQsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDcsCi0gICAgMCwxMDAsOCwwLDEzMiwwLDAsOTAsNiwwLDEwMCw5LDAsMTAwLDEwLDAsCi0gICAgMTMyLDAsMCw5MCw3LDAsMTAwLDExLDAsMTAwLDE4LDAsMTAwLDEzLDAsMTAwLAotICAgIDE0LDAsMTMyLDAsMSw5MCw4LDAsMTAwLDE1LDAsMTAwLDE2LDAsMTMyLDAsCi0gICAgMCw5MCw5LDAsMTAwLDE3LDAsODMsNDEsMTksMjE4LDEyLDgzLDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwKLSAgICAwLDAsMTE2LDAsMCwxMzAsMSwwLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc4LAotICAgIDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAotICAgIDExNiwxMDQsOTcsMTE2LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDEwNSwKLSAgICAxMDksMTAxLDMyLDQwLDk3LDExMCwzMiwxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLDExNCwzMiwKLSAgICAxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSwKLSAgICAxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsMTAxLDExNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LDExNCw0NiwKLSAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4Miw5NywxMDUsMTE1LDEwMSwxMTUsCi0gICAgMzIsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsMTAxLAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDc4LDQxLDEsMjE4LDcsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDQxLDIsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LAotICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsMTY5LDIsMCwwLDExNSwyLDAsMCwwLDAsNiwKLSAgICAxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDk5LDIsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LAotICAgIDAsMCwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMDUsMSwwLDgzLDQxLDIsOTcsMTcwLDEsMCwwLDc5LDExMiwxMTYsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTA2LAorICAgIDEsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw0MSwxLDEyMiwyNiw4NCwxMDQsMTA1LAorICAgIDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKKyAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsNDEsMiwxMTQsMTE4LDAsMCwwLDIxOCwxNywKKyAgICA5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwKKyAgICAxMDksNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwOCwxMTEsCisgICAgOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE2NywyLDAsMCwxMTUsMiwwLAorICAgIDAsMCwwLDIsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsCisgICAgMTA1LDk5LDExNSw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCwKKyAgICA0MSw4LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwKKyAgICAwLDExNCwxMTEsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTgzLDAsMCwwLAorICAgIDExNCwxODgsMCwwLDAsMTE0LDE5MCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTgxLAorICAgIDAsMCwwLDE0MywyLDAsMCwxMTUsMTAsMCwwLDAsOCwzLDQsMiwKKyAgICA4LDgsOCwzLDgsOCwxMTQsMTgxLDAsMCwwLDk5LDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLDAsCisgICAgMTE1LDc0LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSwxMDAsCisgICAgMiwxMzIsMCw5MCwzLDEwMCwzLDEwMCw0LDEzMiwwLDkwLDQsMTAwLDUsMTAwLAorICAgIDYsMTMyLDAsOTAsNSwxMDAsNywxMDAsOCwxMzIsMCw5MCw2LDEwMCw5LDEwMCwKKyAgICAxMCwxMzIsMCw5MCw3LDEwMCwxOCwxMDAsMTIsMTU2LDEsMTAwLDEzLDEwMCwxNCwxMzIsCisgICAgMiw5MCw4LDEwMCwxNSwxMDAsMTYsMTMyLDAsOTAsOSwxMDAsMTcsODMsMCw0MSwKKyAgICAxOSwyMTgsMTIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw4LDAsMCwwLDExNiwwLDEzMCwxLDEwMCwxLDgzLAorICAgIDAsNDEsMiwxMjIsMTc4LDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDMyLDExNiwxMDQsOTcsMTE2LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSw5OSw5NywxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTE2LDEwNSwxMDksMTAxLDMyLDQwLDk3LDExMCwzMiwxMDUsMTEwLDExNiw0MSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDQ0LAorICAgIDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiw5NywKKyAgICAzMiwxMTUsMTE2LDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwKKyAgICA5NywxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDMyLDExOSwxMDQsCisgICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMTAsMTEwLAorICAgIDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMTAwLDQ2LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDEsMjE4LDcsNzMsNzksNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTc0LDIsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsNiwxMjIsMjMsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE0LDAsMCwwLDEwMCwxLDEyNCwwLDEwNiwwLDEyNCwxLAorICAgIDEzMSwxLDEwNSwxLDgzLDAsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwKICAgICAxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsCiAgICAgMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsOTcsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiwKICAgICA5NywzMiwxMDAsMTA1LDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCkBAIC0xMTM2LDE0NzAgKzEwNDYsMTM5MSBAQAogICAgIDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwKICAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsCiAgICAgMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzNSwwLDAsMCw0MSwxLDExNCwxOTcsCi0gICAgMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzMCwwLDAsMCw0MSwxLDExNCwxOTMsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCiAgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE3NywyLDAsMCwxMTUsMiwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMTgyLDIsMCwwLDExNSwyLAogICAgIDAsMCwwLDAsMTEsMTIyLDIzLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsCiAgICAgMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsCiAgICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiwyMjgsNzksMTEyLDExNiwxMDUsCi0gICAgMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksCi0gICAgMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsCi0gICAgMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLAotICAgIDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LAotICAgIDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTEyLDk3LAotICAgIDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLAotICAgIDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwzMiw5OSwxMTEsMTE0LDExNCwxMDEsOTksMTE2LAotICAgIDEwOCwxMjEsMzIsMTE2LDExNCw5NywxMTAsMTE1LDEwMiwxMDEsMTE0LDMyLDExMiwxMDEsMTE0LDEwOSwKLSAgICAxMDUsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNDEsMSwyMTgsOCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDQsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsOTIsMCwwLDAsOTAsMTAsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsNTUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTkwLDIsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsOCwxMjIsMjgsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDEsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4MywKLSAgICA0MSwyLDEyMiwxNTAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LAotICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsMTE1LDQxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDk3LDMyLAotICAgIDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLAotICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwKLSAgICAxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDExNSwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsNCwwLDAsMCwKLSAgICA0MSwzLDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTk5LDAsMCwwLDIwMCwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjEsCi0gICAgODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiwKLSAgICA5NSwxMDAsOTcsMTE2LDk3LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDE2LDAsMCwwLDY3LDAsMCwwLDExNSwxMDUsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMSwxOSwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwKLSAgICA4NywxMTAsNTgsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxMjUsCi0gICAgNCwwLDEsMTIyLDI2LDAsMTE2LDMsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LAotICAgIDEsMCwxMzEsMSwxLDEyNCw0LDAsMTMwLDIsMCw4Nyw4OSwxMDAsMywwLAotICAgIDEwMCwzLDAsMTI1LDQsMCwxMjYsNCwwLDg4LDExMCwxLDAsODgsMTE2LDQsCi0gICAgMCwxMjQsMywwLDEzMSwxLDAsODMsNDEsNCwxMjIsNTIsNjcsMTExLDExMCw5OSwKLSAgICAxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwKLSAgICAxMjIsMzksMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsCi0gICAgMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsCi0gICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDQxLDExNCwxMDgsMCwwLDAsNzgsNDEsCi0gICAgNSwxMTQsMTU5LDAsMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsCi0gICAgMTE0LDQyLDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDE1NywwLDAsMCw0MSwKLSAgICA1LDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgMTE0LDE1NSwwLDAsMCwyMTgsMywxMDEsMTIwLDk5LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDIwNywyLDAsMCwxMTUsMTQsMCwwLDAsMCwyLAotICAgIDE1LDEsMywxLDE5LDEsMTgsMSw5LDEsMzEsMSwxMjIsMjMsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDIxOCw5LDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsCi0gICAgMTE0LDMxLDAsMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw0LDAsCi0gICAgMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEyNCwzLDAsMTMxLDQsMiwKLSAgICA4Myw0MSw1LDEyMiwxMzAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsOTksMTExLDEwOSwxMTIsCi0gICAgMTA1LDEwOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksCi0gICAgMTAwLDk3LDExNiw5NywzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsOTksCi0gICAgOTcsMTEwLDMyLDk4LDEwMSwzMiw5NywxMTAsMTIxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAzMiwxMTYsMTIxLDExMiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsNDAsNDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDExNSw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTkwLDAsMCwwLDIxOCwxMiwxMDAsMTExLAotICAgIDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LDg0LDExNCw3MCwwLDAsMCwKLSAgICA0MSwzLDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwyMTgsNyw5OSwxMTEsCi0gICAgMTA5LDExMiwxMDUsMTA4LDEwMSw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDU1LDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjA0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsMjE3LDIsMCwwLDExNSw0LAotICAgIDAsMCwwLDAsNSwyMSwxLDEyMiwyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSwKLSAgICA5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMTAsMCwwLAotICAgIDAsNDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE3NCwxLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsMCwKLSAgICAxMjUsMywwLDEyMSwxNiwwLDExNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwKLSAgICA0LDAsODcsMTEwLDI0LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2MywwLAotICAgIDEsMSwxLDEwMCwxLDAsMTI1LDQsMCw4OSwxMTAsMjAyLDAsODgsMTIxLDE5LAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNSwwLAotICAgIDg3LDExMCwxOCwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMTAzLDAsMSwxLAotICAgIDEsODksMTEwLDE2MiwwLDg4LDExNiw1LDAsMTI0LDUsMCwxMDAsMiwwLDI1LAotICAgIDEzMSwxLDAsMTI1LDMsMCwxMjEsMTksMCwxMjQsMCwwLDEwNiw2LDAsMTI0LAotICAgIDQsMCwxMzEsMSwwLDEyNSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLAotICAgIDEwNywxMCwwLDExNCwxNTksMCwxLDEsMSw4OSwxMTAsMTA2LDAsODgsMTIxLDM0LAotICAgIDAsMTE2LDgsMCwxMjQsNiwwLDEwMCwzLDAsMTI0LDUsMCwxMDAsNCwwLAotICAgIDEyNCwxLDAsMTAwLDUsMCwxMjQsNCwwLDEzMSwxLDMsMTI1LDcsMCw4NywKLSAgICAxMTAsMjQsMCw0LDExNiw5LDAsMTE2LDEwLDAsMTAyLDIsMCwxMDcsMTAsMCwKLSAgICAxMTQsMjIwLDAsMSwxLDEsODksMTEwLDQ1LDAsODgsMTE2LDExLDAsMTAwLDYsCi0gICAgMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDMsMCwxLDExNiwxMiwwLDEyNCw3LAotICAgIDAsMTAwLDQsMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDQsMCwxMDAsOCwwLAotICAgIDEyNCwyLDAsMTMxLDEsMyw4MywxMjQsMCwwLDEwNiw2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEyNSw4LDAsMTI0LDAsMCwxMDYsMTMsMCwxMjQsOCwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxMjUsOSwwLDExNiwxMSwwLDEwMCw5LDAsMTI0LDIsCi0gICAgMCwxMzEsMiwwLDEsMTE2LDE0LDAsMTA2LDE1LDAsMTIsMTE0LDE3MCwxLDEyNCwKLSAgICA0LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNzAsMSwxMjQsMywwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsMTcwLDEsMTE2LDE2LDAsMTI0LDksMCwxMjQsMywwLAotICAgIDExNiwxNywwLDEyNCw4LDAsMTMxLDEsMCwxMzEsMywwLDEyNSw2LDAsMTIxLAotICAgIDM2LDAsMTI0LDAsMCwxMDYsMTgsMCwxMjQsMiwwLDEyNCw0LDAsMTI0LDYsCi0gICAgMCwxMzEsMywwLDEsMTE2LDExLDAsMTAwLDEwLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAwLDEsODcsMTEwLDE4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCwxNjksMSwKLSAgICAxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCw5LDAsODMsNDEsMTEsMTIyLDE5MCwKLSAgICA2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsCi0gICAgOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLAotICAgIDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICA0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwKLSAgICA5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKLSAgICAxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsCi0gICAgMTM1LDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTIyLDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwzMiwKLSAgICAxMjMsMTI1LDExNCw5MSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIyLDE5LDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDEyNSwxMjIsMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxOSwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMjAxLDAsCi0gICAgMCwwLDExNCw0MiwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEzOCwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxNDksMCwwLDAsCi0gICAgMTE0LDIwNywwLDAsMCwxMTQsOCwwLDAsMCwyMTgsMTksMTAwLDExMSwxMTAsMTE2LAotICAgIDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LAotICAgIDE1MiwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDIwMCwwLDAsMCw0MSwxMCwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwKLSAgICAxNDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwyLDExNSwxMTYsMTE0LDU1LDAsCi0gICAgMCwwLDIxOCwxMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LDExNiw5NywxMTQsMTU1LAotICAgIDAsMCwwLDkwLDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCi0gICAgMTg4LDAsMCwwLDIyNSwyLDAsMCwxMTUsNzgsMCwwLDAsMCw3LDE1LAotICAgIDEsNiwxLDMsMSwxNiwxLDEzLDEsMTEsMiwzLDEsMTksMSwxMywKLSAgICAxLDUsMiwxNiwxLDMsMSwxOSwxLDEzLDEsNSwyLDMsMSw5LAotICAgIDEsMTIsMSwxMywxLDE5LDEsNSwyLDksMSw3LDEsMTUsMSw2LAotICAgIDEsNywxLDE1LDEsMTgsMSwxMywxLDIyLDEsMTIsMSw5LDEsMTUsCi0gICAgMSwzLDEsMTksMSwxNywxLDEzLDEsNSwxLDEyMiwyMSw4MywxMTEsMTE3LAotICAgIDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwKLSAgICAxMDAsMTAxLDc4LDExNCw4OSwwLDAsMCw0MSwxMCwxMTQsMTE0LDAsMCwwLDExNCwKLSAgICAxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwyMDMsMCwKLSAgICAwLDAsMTE0LDIwNywwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwxOTUsMCwwLDAsMTY3LDIsMCwwLDExNSwxNCwwLDAsMCwxMiwyLAotICAgIDEyLDgsMTIsMTMsMTIsMTAsMTIsNywxMiwxMCwxOCw4LDExNCwxOTUsMCwwLAotICAgIDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLAotICAgIDAsMCwwLDAsMCwwLDExNSwxMTIsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCi0gICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAxLDcsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDgsMCwxMDAsOSwwLAotICAgIDEzNCwwLDAsMTMxLDEsMCw5MCw4LDAsMTAxLDcsMCwxMDAsMTAsMCwxMDAsCi0gICAgMTEsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMCwxMiwwLDEwMCwxMywKLSAgICAwLDEzMiwwLDAsOTAsMTAsMCwxMzUsMCwwLDgzLDQxLDE0LDIxOCwxMCw3MCwKLSAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2Niw5NywxMTUsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsCi0gICAgMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAotICAgIDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTIsMTE0LAotICAgIDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwKLSAgICAxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE3LDExNSw5NywxMDMsCi0gICAgMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwwLDEyNCwxLDAsMTI0LAotICAgIDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDc1LDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LAotICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0Niw3OCw0MSwyLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LAotICAgIDAsMCwwLDI2LDMsMCwwLDExNSw0LDAsMCwwLDAsMyw5LDEsCi0gICAgMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKLSAgICAwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzQsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDcsMiwwLDExMSwzMywKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LDIsMCwKLSAgICA4Myw0MSwxLDc4LDQxLDIsMjE4LDksOTUsOTUsOTksMTA4LDk3LDExNSwxMTUsOTUsCi0gICAgOTUsMTE0LDEyMCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMjE4LDUsMTExLAotICAgIDExNiwxMDQsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwyMTgsNiw5NSw5NSwxMDEsMTEzLDk1LDk1LDMyLDMsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSwxOCwxLDEyMiwxNyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwKLSAgICAwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsNDEsCi0gICAgMSw3OCw0MSwzLDIxOCw0LDEwNCw5NywxMTUsMTA0LDExNCwxMDgsMCwwLDAsMTE0LAotICAgIDM3LDAsMCwwLDQxLDEsMTE0LDExMCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOCw5NSw5NSwxMDQsOTcsCi0gICAgMTE1LDEwNCw5NSw5NSwzNiwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDQsOTcsCi0gICAgMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDIyLDAsMCwwLDExNiwwLAotICAgIDAsMTE2LDEsMCwxMjQsMCwwLDEzMSwyLDAsMTA2LDIsMCwxMjQsMSwwLAotICAgIDEzMSwxLDAsODMsNDEsMSwxMjIsMTAwLDc2LDExMSw5NywxMDAsMzIsOTcsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk3LDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsCi0gICAgOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsMTIwLDEwMSw5OSwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LAotICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwzLDIxOCw1LAotICAgIDExNSwxMTcsMTEyLDEwMSwxMTQsMTE0LDIxMSwwLDAsMCwxMTQsMTk0LDAsMCwwLDQxLAotICAgIDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDQxLDEsMTE0LDIxMiwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk0LDAsMCwKLSAgICAwLDM5LDMsMCwwLDExNSwyLDAsMCwwLDAsMTAsMTIyLDIyLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMiwxMjQsMywKKyAgICAxMzEsMiw4MywwLDQxLDEsMTIyLDIyOCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwKKyAgICAxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsCisgICAgNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICAxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsCisgICAgMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LAorICAgIDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsCisgICAgMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLAorICAgIDExNCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMTYsCisgICAgMTE0LDk3LDExMCwxMTUsMTAyLDEwMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MSwxLDIxOCw4LAorICAgIDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICA5NCwwLDAsMCw5MCwxMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExMiw5NywxMTYsMTA0LAorICAgIDExNCw1NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyMTgsMTUsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwxOTUsMiwwLDAsMTE1LDIsMCwwLDAsMCw4LAorICAgIDEyMiwyOCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDE1MCwKKyAgICA3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiwKKyAgICA5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsCisgICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCw0LDAsMCwwLDQxLDMsMTE0LDEwNCwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTUsMCwwLAorICAgIDAsMjA1LDIsMCwwLDExNSwwLDAsMCwwLDEyMiwyMSw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsCisgICAgOTcsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsMTYsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwKKyAgICAxLDEzMSwxLDEyNSwyLDEyMSwxNCwxMjQsMCwxMDYsMSwxMjQsMiwxMzEsMSwxMjUsCisgICAgMyw4NywwLDExMCw0OCw0LDAsMTE2LDIsMTA3LDEwLDExNCw3MiwxLDAsMTI1LAorICAgIDQsMSwwLDEyMiwyMCwxMTYsMywxMDAsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMjQsCisgICAgNCwxMzAsMiw4NywwLDg5LDAsMTAwLDMsMTAwLDMsMTI1LDQsMTI2LDQsODgsCisgICAgMCwxMTAsMiw4OCwwLDExNiw0LDEyNCwzLDEzMSwxLDgzLDAsNDEsNCwxMjIsCisgICAgNTIsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCisgICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsCisgICAgMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw0NiwxMjIsMzksMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLAorICAgIDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwKKyAgICAxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDQxLDQxLDEsCisgICAgMTE0LDEwMiwwLDAsMCw3OCw0MSw1LDExNCwxNTUsMCwwLDAsMjE4LDgsMTAzLAorICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTQsNDIsMCwwLDAsMTE0LDEwMywwLDAsCisgICAgMCwxMTQsMTUzLDAsMCwwLDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwxMTQsMTUxLDAsMCwwLDIxOCwzLDEwMSwxMjAsCisgICAgOTksMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjEyLDIsMCwwLAorICAgIDExNSwxNCwwLDAsMCwwLDIsMTAsMSwyLDEsMTQsMSwxNiwxLDQsCisgICAgMSwyOCwxLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTE0LDMxLDAsMCwKKyAgICAwLDQxLDEsMjE4LDksOTUsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSw5OSwzLAorICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw4LDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwxMDYsMSwxMTYsMiwxMjQsMSwKKyAgICAxMjQsMiwxMDAsMSwxMDAsMiwxMjQsMywxMDAsMywxNDEsNiw4MywwLDQxLDQsCisgICAgMTIyLDEzMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwxMDAsOTcsMTE2LAorICAgIDk3LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw5OSw5NywxMTAsMzIsCisgICAgOTgsMTAxLDMyLDk3LDExMCwxMjEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDExNiwxMjEsCisgICAgMTEyLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw0MCwKKyAgICA0MSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDExNCwxODYsMCwwLDAsODQsNDEsMiwyMTgsMTIsMTAwLDExMSwKKyAgICAxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwxMTQsNzIsMCwwLDAsNDEsCisgICAgMywxMTQsMTE4LDAsMCwwLDExNCwxODUsMCwwLDAsMjE4LDcsOTksMTExLDEwOSwKKyAgICAxMTIsMTA1LDEwOCwxMDEsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCw1NiwwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDIyMiwyLDAsMCwxMTUsNCwwLAorICAgIDAsMCwwLDUsMTIsMSwxMjIsMjcsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNiwxMTEsOTUsOTksCisgICAgMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDEwLDAsMCwwLAorICAgIDQzLDAsMCwwLDY3LDAsMCwwLDExNSw5NCwxLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMjQsMSwxMzEsMSwxMjUsMiwxMDAsMSwxMjUsMywxMjEsMTIsMTE2LDEsMTI0LAorICAgIDIsMTMxLDEsMTI1LDQsODcsMCwxMTAsMjQsNCwwLDExNiwyLDEwNywxMCwxMTQsCisgICAgNTAsMSwwLDEsMCwxLDAsMTAwLDEsMTI1LDQsODksMCwxMTAsMTYyLDg4LAorICAgIDAsMTIxLDE0LDEyNCwwLDEwNiwzLDEyNCwyLDEzMSwxLDEyNSw1LDg3LDAsMTEwLAorICAgIDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDg2LDEsMCwxLDAsMSwwLDg5LAorICAgIDAsMTEwLDEyNiw4OCwwLDExNiw1LDEyNCw1LDEwMCwyLDI1LDAsMTMxLDEsMTI1LAorICAgIDMsMTIxLDE0LDEyNCwwLDEwNiw2LDEyNCw0LDEzMSwxLDEyNSw2LDg3LDAsMTEwLAorICAgIDIwLDQsMCwxMTYsNywxMDcsMTAsMTE0LDEzNCwxLDAsMSwwLDEsMCw4OSwKKyAgICAwLDExMCw3OCw4OCwwLDEyMSwyMCwxMTYsOCwxMjQsNiwxMjQsNSwxMjQsMSwxMjQsCisgICAgNCwxMDAsMywxNDEsNCwxMjUsNyw4NywwLDExMCwyNCw0LDAsMTE2LDksMTE2LAorICAgIDEwLDEwMiwyLDEwNywxMCwxMTQsMTgwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLAorICAgIDMyLDg4LDAsMTE2LDExLDEwNiwxMiwxMDAsNCwxMjQsNCwxMjQsMiwxMzEsMywxLAorICAgIDAsMTE2LDEzLDEyNCw3LDEyNCwxLDEyNCw0LDEyNCwyLDEwMCw1LDE0MSw0LDgzLAorICAgIDAsMTI0LDAsMTA2LDYsMTI0LDIsMTMxLDEsMTI1LDgsMTI0LDAsMTA2LDE0LDEyNCwKKyAgICA4LDEyNCwyLDEzMSwyLDEyNSw5LDExNiwxMSwxMDYsMTIsMTAwLDYsMTI0LDIsMTMxLAorICAgIDIsMSwwLDExNiwxNSwxMDYsMTYsMTIsMCwxNDQsMSwxMTQsOTAsMTI0LDQsMTAwLAorICAgIDEsMTA3LDksMTQ0LDEsMTE0LDkwLDEyNCwzLDEwMCwxLDEwNyw5LDE0NCwxLDExNCwKKyAgICA5MCwxMTYsMTcsMTI0LDksMTI0LDMsMTE2LDE4LDEyNCw4LDEzMSwxLDEzMSwzLDEyNSwKKyAgICA2LDEyMSwzMCwxMjQsMCwxMDYsMTksMTI0LDIsMTI0LDQsMTI0LDYsMTMxLDMsMSwKKyAgICAwLDExNiwxMSwxMDYsMTIsMTAwLDcsMTI0LDQsMTMxLDIsMSwwLDg3LDAsMTEwLAorICAgIDIyLDQsMCwxMTYsMiwxMDcsMTAsMTQ0LDEsMTE0LDg4LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDIsODgsMCwxMjQsOSw4MywwLDQxLDgsMTIyLDE5MCw2NywKKyAgICAxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsOTksCisgICAgMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLDEwNSwKKyAgICAxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE0LAorICAgIDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LAorICAgIDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLAorICAgIDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw0NCwKKyAgICAzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5NywKKyAgICAxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsMTMwLAorICAgIDAsMCwwLDQxLDMsMTE0LDEzNiwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwKKyAgICAzNywwLDAsMCwxMjIsMTMsMTIzLDEyNSwzMiwxMDksOTcsMTE2LDk5LDEwNCwxMDEsMTE1LAorICAgIDMyLDEyMywxMjUsNDEsMywxMTQsMTAyLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsCisgICAgOTQsMCwwLDAsMTIyLDE5LDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LAorICAgIDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMjIsMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSw0MSwyMCwxMTQsMTU1LDAsMCwwLDExNCw4MywwLDAsCisgICAgMCwxMTQsNzAsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsMTkyLDAsMCwwLAorICAgIDExNCwxNiwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsCisgICAgMTM5LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEzNCwwLDAsMCwxMTQsMTE4LAorICAgIDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDE0NSwwLDAsMCwxMTQsMjAzLDAsCisgICAgMCwwLDExNCw4LDAsMCwwLDIxOCwxOSwxMDAsMTExLDExMCwxMTYsOTUsMTE5LDExNCwKKyAgICAxMDUsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTQ4LDAsMCwKKyAgICAwLDExNCwzMywwLDAsMCwxMTQsMTk2LDAsMCwwLDQxLDEwLDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDEyMywwLDAsMCwxMTQsOTQsMCwwLDAsMTE0LDEzNywwLDAsCisgICAgMCwxMTQsOTMsMCwwLDAsMjE4LDIsMTE1LDExNiwxMTQsNTYsMCwwLDAsMjE4LAorICAgIDEwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LDk3LDExNCwxNTEsMCwwLDAsCisgICAgOTAsMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODQsMCwwLAorICAgIDAsMjMwLDIsMCwwLDExNSw3OCwwLDAsMCwwLDcsMTAsMSw0LDEsCisgICAgMiwxLDEyLDEsMTQsMSwxMCwyLDIsMSwxNCwxLDE0LDEsNiwyLAorICAgIDEyLDEsMiwxLDE0LDEsMTQsMSw2LDIsMiwxLDQsMSw0LDEsCisgICAgMTIsMSwxOCwxLDYsMiw4LDEsNiwxLDYsMSwyLDEsOCwxLAorICAgIDEwLDEsMTIsMSwxMiwxLDIwLDEsMTAsMSw2LDEsMTAsMSwyLDEsCisgICAgMTQsMSwxNiwxLDE2LDEsNiwxLDEyMiwyMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDc4LAorICAgIDExNCw5MSwwLDAsMCw0MSwxMCwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLAorICAgIDAsMTE0LDExMCwwLDAsMCwxMTQsMTkzLDAsMCwwLDExNCwxOTQsMCwwLDAsCisgICAgMTE0LDE5NiwwLDAsMCwxMTQsMTk1LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LAorICAgIDIwMywwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTEsMCwKKyAgICAwLDAsMTcyLDIsMCwwLDExNSwxNCwwLDAsMCw4LDIsOCw4LDgsCisgICAgMTMsOCwxMCw4LDcsOCwxMCwxNCw4LDExNCwxOTEsMCwwLDAsOTksMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwwLAorICAgIDAsMCwwLDExNSw4MCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsCisgICAgMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LAorICAgIDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwxMDEsNywxMzUsMCwKKyAgICAxMDIsMSwxMDAsOCwxMDAsOSwxMzIsOCwxMzEsMSw5MCw4LDEwMSw3LDEwMCwxMCwKKyAgICAxMDAsMTEsMTMyLDAsMTMxLDEsOTAsOSwxMDAsMTIsMTAwLDEzLDEzMiwwLDkwLDEwLAorICAgIDEzNSwwLDkwLDExLDEwMCwxNCw4MywwLDQxLDE1LDIxOCwxMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2Niw5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExOSwKKyAgICAxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTIsMTE0LDExMSwxMTYsMTExLAorICAgIDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAorICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE3LDExNSw5NywxMDMsMTAxLDQ2LDk5LAorICAgIDMsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwxLDEyNCwwLDk1LDAsMTI0LAorICAgIDIsMTI0LDAsOTUsMSwxMDAsMSw4MywwLDQxLDIsMTIyLDc1LDY3LDk3LDk5LAorICAgIDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNywxMTAsCisgICAgMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MSwyLDExNCwxMDIsMCwwLDAsCisgICAgMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLDMxLDMsMCwwLDExNSw0LAorICAgIDAsMCwwLDAsMyw2LDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTA2LDAsMTA3LDIsCisgICAgMTExLDIyLDEyNCwwLDEwNiwxLDEyNCwxLDEwNiwxLDEwNywyLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LDk1LDExNCwxMTUsCisgICAgMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDIxOCw1LDExMSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwzNywzLDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDEsMTIsMSwxMjIsMTcsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjAsMCwKKyAgICAwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDEsMTE2LDAsMTI0LDAsMTA2LDIsCisgICAgMTMxLDEsNjUsMCw4MywwLDQxLDEsNzgsNDEsMywyMTgsNCwxMDQsOTcsMTE1LAorICAgIDEwNCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwxLDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDgsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsNDEsMywwLDAsMTE1LAorICAgIDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLAorICAgIDExNSwxNiwwLDAsMCwxMTYsMCwxMTYsMSwxMjQsMCwxMzEsMiwxMDYsMiwxMjQsCisgICAgMSwxMzEsMSw4MywwLDQxLDEsMTIyLDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LAorICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCisgICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsCisgICAgOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKKyAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsCisgICAgNSwxMTUsMTE3LDExMiwxMDEsMTE0LDExNCwyMDcsMCwwLDAsMTE0LDE5MCwwLDAsMCwKKyAgICA0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCw0MSwxLDExNCwyMDgsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5MCwwLAorICAgIDAsMCw0NCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEwLDEyMiwyMiw3MCwKKyAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCw4MywwLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCiAgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKICAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywxMTUsMzIsMTAyLAogICAgIDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLAotICAgIDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwKLSAgICAwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDE1OSwwLDAsMCw1MSwzLDAsMCwxMTUsMiwKKyAgICAxMDEsMTE0LDQ2LDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDExNCwxNTUsMCwwLDAsNTYsMywwLDAsMTE1LDIsCiAgICAgMCwwLDAsMCwzLDEyMiwyMyw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKICAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDk5LDIsCiAgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDksMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQyLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwKLSAgICAwLDEwMCwxLDAsMTMxLDIsMCwxNDMsMTcsMCwxMjUsMiwwLDEyNCwyLDAsCi0gICAgMTA2LDIsMCwxMzEsMCwwLDgzLDg3LDEwMCwyLDAsODEsODIsODgsMTAwLDIsCi0gICAgMCw4Myw0MSwzLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwMCw5NywxMTYsOTcsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLAotICAgIDk3LDExNSwzMiwxMTQsOTcsMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwyMTgsMSwxMTQsCi0gICAgNzgsNDEsMywxMTQsNTEsMCwwLDAsMTE0LDUyLDAsMCwwLDkwLDQsMTE0LAotICAgIDEwMSw5NywxMDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNTYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDIwMSwwLDAsMCw1NiwzLDAsMCwxMTUsNCwwLDAsCi0gICAgMCwwLDIsMjEsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsMTEsMTE0LDExNCwwLDAsCi0gICAgMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwKLSAgICAxMTQsMTg2LDAsMCwwLDExNCwyMTQsMCwwLDAsMTE0LDIxNiwwLDAsMCwxMTQsCi0gICAgMTI1LDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMjAxLAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LAotICAgIDIxMiwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjExLDAsMCwwLDIxLDMsCi0gICAgMCwwLDExNSwxNCwwLDAsMCwxMiwzLDYsMiwxMiw2LDEyLDQsMTIsCi0gICAgMywyNCwxMiwxOCw1LDExNCwyMTEsMCwwLDAsOTksMCwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsCi0gICAgNjQsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCi0gICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKLSAgICAwLDEwMCw3LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDEsOTAsNiwwLAotICAgIDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LAotICAgIDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw2Miw2NywxMTEsMTEwLDk5LDExNCwxMDEsCi0gICAgMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwKLSAgICAxMTAsMzIsMTExLDEwMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLAotICAgIDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDQ2LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsCi0gICAgMCwxMjQsMiwwLDEwNiwxLDAsMTAwLDIsMCwxMjQsMiwwLDEwNiwyLDAsCi0gICAgMTA1LDIsMCw4Myw0MSwzLDEyMiwzMyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsMTE0LDEzNSwwLDAsMCwxMTQsMTM2LAotICAgIDAsMCwwLDQxLDMsMTE0LDQxLDAsMCwwLDIxOCw4LDExNSwxMTYsOTUsMTA5LAotICAgIDExNiwxMDUsMTA5LDEwMSw5MCw3LDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQxLDMsMTE0LAotICAgIDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDIwOSwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk4LDAsCi0gICAgMCwwLDY2LDMsMCwwLDExNSw0LDAsMCwwLDAsMiwxMiwxLDEyMiwKLSAgICAyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwKLSAgICAwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsCi0gICAgNCwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMjQsNCwwLDEzMSwyLDEsODMsNDEsMiw3OCwyMTgsNSw5NSwxMDksMTExLAotICAgIDEwMCwxMDEsNDEsMiwxMTQsOTksMCwwLDAsMTE0LDE5OSwwLDAsMCw0MSw1LAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCw5MSwwLDAsMCwxMTQsCi0gICAgNTUsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMDAsMCwwLDAsNzEsMywwLAotICAgIDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLDMyLDgzLDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsCi0gICAgOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMjIxLDAsMCwKLSAgICAwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwxLDAsMCwwLDksCi0gICAgMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDEsMCwwLAotICAgIDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsNCwwLDEyNSwKLSAgICA1LDAsMTAzLDAsMCwxMjUsNiwwLDEyMCw1NCwwLDEyNCw0LDAsMTE0LDgwLAotICAgIDAsMTE2LDEsMCwxMjQsNCwwLDEzMSwxLDAsMTIsMTE0LDgwLDAsMTE2LDAsCi0gICAgMCwxMjQsNCwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDcsMCwKLSAgICAxMjQsNiwwLDEwNiwyLDAsMTI0LDcsMCwxMzEsMSwwLDEsMTEzLDI3LDAsCi0gICAgODcsMTIwLDEzMiwwLDExNiwzLDAsMTI0LDYsMCwxMzEsMSwwLDY4LDkzLDExOCwKLSAgICAwLDEyNSw3LDAsMTE2LDQsMCwxMjQsNCwwLDEyNCw3LDAsMTMxLDIsMCwKLSAgICAxMjUsNCwwLDEyMSwxNywwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwwLDEzMSwKLSAgICAxLDAsMSw4NywxMTMsOTQsMCw0LDExNiw3LDAsMTA3LDEwLDAsMTE0LDE1NSwKLSAgICAwLDEsMSwxLDExOSw5NCwwLDg5LDExMyw5NCwwLDQsMTE2LDgsMCwxMDcsCi0gICAgMTAsMCwxMTQsMjExLDAsMSwxMjUsOCwwLDEsMTIyLDI1LDAsMTE2LDksMCwKLSAgICAxMDAsMSwwLDEyNCw0LDAsMTI0LDgsMCwxMzEsMywwLDEsMTAwLDIsMCwKLSAgICA4Myw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsMTI1LDgsMCwxMjYsOCwwLDg4LAotICAgIDExMyw5NCwwLDg4LDExMyw5NCwwLDg3LDEyMSwzMywwLDExNiwxMCwwLDEyNCwxLAotICAgIDAsMTI0LDIsMCwxMjQsMywwLDEzMSwzLDAsMSwxMTYsOSwwLDEwMCwzLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDEsODcsMTEwLDUzLDAsNCwxMTYsOCwwLAotICAgIDEwNywxMCwwLDExNCw0OCwxLDEsMTI1LDgsMCwxLDEyMiwyMSwwLDExNiw5LAotICAgIDAsMTAwLDEsMCwxMjQsMSwwLDEyNCw4LDAsMTMxLDMsMCwxLDg3LDg5LAotICAgIDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsMTEwLDEsMCwKLSAgICA4OCwxMDAsMiwwLDgzLDQxLDQsMTIyLDI3LDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwKLSAgICAxMjEsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NiwxMjIsMjcsOTksMTExLDExNywxMDgsMTAwLDMyLDExMCwxMTEsMTE2LDMyLAotICAgIDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSw3OCwxMjIsMTIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSwKLSAgICA0MSwxMSwxMTQsNDAsMCwwLDAsMTE0LDQ4LDAsMCwwLDExNCwxNjUsMCwwLAotICAgIDAsMTE0LDM1LDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMywwLDAsMCwKLSAgICA5MCw1LDEwOSwxMDcsMTAwLDEwNSwxMTQsMjE4LDE1LDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsCi0gICAgMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNCw0MiwwLDAsMCwxMTQsMTA3LDAsCi0gICAgMCwwLDExNCw1NywwLDAsMCw0MSw5LDExNCwxMTAsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsMjIxLDAsMCwwLDIxOCw2LDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsMTE0LDk2LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsCi0gICAgMjUsMCwwLDAsMTE0LDIwMiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk5LDAsMCwwLDc2LDMsMCwKLSAgICAwLDExNSwzOCwwLDAsMCwwLDIsMTgsMSw2LDIsMjIsMSwxOCwxLAotICAgIDE3LDIsMTksMSwxNSwxLDMsMSwxNywxLDEzLDIsNywxLDE4LDMsCi0gICAgMTYsMSwyNywxLDMsMSwxNiwxLDE3LDEsMTgsMiwxMjIsMjUsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsCi0gICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LDQxLDcsMTE0LDExNCwwLDAsMCwxMTQsCi0gICAgMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwxMTQsMjE5LDAsMCwwLDYyLDMsMCwwLDExNSw4LDAsMCwwLDEyLAotICAgIDIsNiwyLDEyLDUsMTIsNSwxMTQsMjE5LDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDQ2LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCi0gICAgMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwKLSAgICAwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsCi0gICAgMTAwLDYsMCw4Myw0MSw3LDIxOCwyMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwKLSAgICAxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNDUsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsCi0gICAgMTAxLDExNSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LAotICAgIDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCw1LDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDc2LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEzMSwxLAotICAgIDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDIsMCwxMzEsMSwwLAotICAgIDEyNSwzLDAsMTE2LDIsMCwxMjQsMywwLDEwMCwxLDAsMTI0LDEsMCwxMDAsCi0gICAgMiwwLDEyNCwyLDAsMTMxLDEsMiwxMjUsNCwwLDExNiwzLDAsMTI0LDQsCi0gICAgMCwxMDAsMSwwLDEyNCwxLDAsMTAwLDMsMCwxMjQsMiwwLDEzMSwxLDIsCi0gICAgODMsNDEsNCw3OCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsOTEsCi0gICAgMCwwLDAsNDEsNCwxMTQsMTU5LDAsMCwwLDExNCwyMDEsMCwwLDAsMTE0LAotICAgIDE0MywwLDAsMCwxMTQsMTQ5LDAsMCwwLDQxLDUsMTE0LDExMCwwLDAsMCwKLSAgICAxMTQsMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTUsMCwwLDAsMTE0LAotICAgIDIxMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTg4LDAsMCwwLDEwOSwzLDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDEsMTUsMSwxNSwxLDI0LDEsMTIyLDI5LDgzLDExMSwxMTcsMTE0LDk5LAotICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKLSAgICAwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLAotICAgIDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyMDMsMCwwLDAsMTE1LDMsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiwxMjIsMzEsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwKLSAgICAxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsCi0gICAgMjAzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTA1LDMsMCwKLSAgICAwLDExNSw2LDAsMCwwLDEyLDIsNiwyLDEyLDYsMTE0LDIyNCwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDY0LDAsMCwwLDExNSwxMzYsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCi0gICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwKLSAgICAwLDAsOTAsOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsCi0gICAgMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsCi0gICAgMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLAotICAgIDIwLDAsODMsNDEsMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw5Myw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAotICAgIDEwNCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LDExMSwxMTQsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE5LDExMSwKLSAgICAxMTQsMTA3LDMyLDExOSwxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLAotICAgIDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMTA4LAotICAgIDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMzIsMywwLAotICAgIDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsCi0gICAgMCwxMTEsMzMsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLAotICAgIDEwNywyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwKLSAgICAwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDIxMywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjE0LAotICAgIDAsMCwwLDEzNiwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTgsMSwKLSAgICAxMjIsMjYsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsCi0gICAgNDEsMSw3OCw0MSwzLDExNCwyMTUsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsCi0gICAgMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTYsMCwwLDAsMTQwLAotICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDEzMSwyLDAsMTI1LDIsMCwxMTYsNCwwLDEwMCwxLDAsMTI0LDEsMCwKLSAgICAxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLDEsMTI0LDIsMCwKLSAgICA4Myw0MSwyLDEyMiwzOCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMTEwLDMyLDExNywKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLAotICAgIDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsMzgsMTAxLDEyMCwxMTYsCi0gICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDMzLDExNCwxMjUsNDEsNywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LAotICAgIDE0NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTAwLDEyMSwxMTAsCi0gICAgOTcsMTA5LDEwNSw5OSwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwKLSAgICAxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxNDMsMywwLDAsMTE1LDEwLDAsMCwKLSAgICAwLDAsMiw2LDEsMTUsMSw2LDEsMTYsMSwxMjIsMzMsNjksMTIwLDExNiwKLSAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDQ1LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMTYsMiwKLSAgICAwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMiwwLDEsMTE2LDQsMCwxMDAsMSwKLSAgICAwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMCwwLDEwNiw2LDAsMTMxLDMsMCwKLSAgICAxLDEwMCwyLDAsODMsNDEsMywxMjIsMzAsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKLSAgICAxMDUsMTIyLDEwMSwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDQwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKLSAgICAxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMSwKLSAgICAxMjAsMTAxLDk5LDExNywxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsNzgsNDEsNywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LDE0NywKLSAgICAwLDAsMCw5MCwxMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LAotICAgIDk5LDExNCwxMDcsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxOTEsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5MiwwLDAsMCwKLSAgICAxNTEsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE5LDEsNiwxLDEyMiwKLSAgICAzMSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsMTE1LDQ4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMDYsMSwwLDEzMSwxLDAsMTAwLDEsMCwyNSwxMzcsMCwwLDExNiwyLDAsCi0gICAgMTM1LDAsMCwxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDExNiwKLSAgICAzLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDgzLDQxLDQsMTIyLDQ5LDgyLDEwMSwKLSAgICAxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMTQsCi0gICAgMzEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsNCwwLDAsMCw1MSwwLDAsMCwxMTUsMzEsMCwwLDAsMTI0LDAsCi0gICAgMCw5MywyMSwwLDEyNSwxLDAsMTM2LDAsMCwxMDAsMCwwLDEyNCwxLDAsCi0gICAgMjMsMTA3LDIsMCw4NiwxLDExMywzLDAsMTAwLDEsMCw4Myw0MSwyLDExNCwKLSAgICAxODYsMCwwLDAsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMjQsMCwwLAotICAgIDAsMjE4LDYsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsNDEsMSwyMTgsOSwxMDIsMTA1LDEwOCwKLSAgICAxMDEsOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjUwLDksNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDE2MCwzLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDEsMTIyLDQ5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKLSAgICAxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwKLSAgICA2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNDEsNCwxMTQsNDAsMCwwLDAsCi0gICAgMTE0LDM3LDAsMCwwLDIxOCwzLDk3LDExMCwxMjEsMjE4LDE4LDY5LDg4LDg0LDY5LAotICAgIDc4LDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDQxLDIsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDQxLAotICAgIDEsMTE0LDIyNywwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTYxLDAsMCwwLAotICAgIDE1NywzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSwxOCwxLDEyMiwKLSAgICAzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKLSAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCi0gICAgNjMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCi0gICAgOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwKLSAgICAxMDEsMzIsOTcsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDQ2LAotICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwxODgsMCwwLDAsMTYzLDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMjIsMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsMTIyLAotICAgIDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLAotICAgIDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgMzIsOTksMTExLDEwMCwxMDEsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLAotICAgIDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDIwMywwLDAsMCwxNjcsMywwLDAsCi0gICAgMTE1LDIsMCwwLDAsMCwyLDEyMiwzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKLSAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKLSAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDcsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDgzLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsCi0gICAgMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE1OSwwLDAsMCwxNzEsMywwLAotICAgIDAsMTE1LDIsMCwwLDAsMCwzLDEyMiwzMiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LAotICAgIDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAotICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTQsMTE0LDExNCwwLAotICAgIDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsCi0gICAgMCwxMTQsMTg2LDAsMCwwLDExNCwyMTQsMCwwLDAsMTE0LDIxNiwwLDAsMCwKLSAgICAxMTQsMTg3LDAsMCwwLDExNCwxOTIsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsCi0gICAgMTg4LDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDEyNSwwLDAsMCwxMTQsMTU5LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwyMjUsMCwwLDAsMTI0LDMsMCwwLAotICAgIDExNSwyMCwwLDAsMCwxMiw2LDYsMiwxMiw0LDEyLDQsMTIsMywxMiwKLSAgICA4LDEyLDYsMTIsNiwxMiw0LDEyLDQsMTE0LDIyNSwwLDAsMCw5OSwwLAorICAgIDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMDAsMSwKKyAgICAxMzEsMiwxNDMsMTAsMTI1LDIsMTI0LDIsMTA2LDIsMTMxLDAsODMsMCw4MSwwLAorICAgIDgyLDAsODgsMCwxMDAsMiw4MywwLDQxLDMsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDk3LDExNiw5NywzMiwxMDIsMTE0LDExMSwxMDksCisgICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTE1LDMyLDExNCw5NywxMTksMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDQ2LDIxOCwxLDExNCw3OCw0MSwzLDExNCw1MiwwLDAsMCwxMTQsNTMsCisgICAgMCwwLDAsOTAsNCwxMTQsMTAxLDk3LDEwMCw0MSwzLDExNCwxMDQsMCwwLDAsCisgICAgMTE0LDM3LDAsMCwwLDExNCw1NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk3LDAsMCwwLDYxLDMsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMiwxNCwxLDEyMiwxOSw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywKKyAgICA3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLAorICAgIDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDIxMCwwLDAsCisgICAgMCwxMTQsMjEyLDAsMCwwLDExNCwxMjAsMCwwLDAsMTE0LDE5MCwwLDAsMCwKKyAgICAxMTQsMTU1LDAsMCwwLDExNCwxOTcsMCwwLDAsOTAsMTMsOTUsOTUsOTksMTA4LAorICAgIDk3LDExNSwxMTUsOTksMTAxLDEwOCwxMDgsOTUsOTUsMTE0LDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsNDEsMSwxMTQsMjA4LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKKyAgICAyMDcsMCwwLDAsMjYsMywwLDAsMTE1LDE0LDAsMCwwLDgsMyw0LAorICAgIDIsOCw2LDgsNCw4LDMsMTYsMTIsMTIsNSwxMTQsMjA3LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDQ2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsCisgICAgOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxNTYsMSwxMDAsOCwxMDAsOSwKKyAgICAxMzIsMiw5MCw2LDEwMCwxMCw4MywwLDQxLDExLDIxOCwxNiw4MywxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw2Miw2NywxMTEsCisgICAgMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDQ2LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDIyLDAsMCwwLDExNiwwLDEyNCwxLDEzMSwxLDEyNSwyLDEyNCwyLAorICAgIDEwNiwxLDEyNCwyLDEwNiwyLDEwMCwxLDE1NiwyLDgzLDAsNDEsMiwxMjIsMzMsCisgICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNiw5NywxMDAsCisgICAgOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDQ2LDQxLDIsMTE0LDEzMCwwLDAsMCwxMTQsMTMxLDAsMCwwLDQxLDMsMTE0LAorICAgIDQxLDAsMCwwLDIxOCw4LDExNSwxMTYsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSw5MCw3LAorICAgIDExNSwxMTYsOTUsMTE1LDEwNSwxMjIsMTAxLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsMzcsCisgICAgMCwwLDAsMTE0LDIwNSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk0LDAsMCwwLDcxLDMsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMiw4LDEsMTIyLDI3LDgzLDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLDAsMCwwLDAsMCw1LAorICAgIDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LDI0LDAsMCwwLAorICAgIDExNiwwLDEyNCwxLDEzMSwxLDEyNSw0LDEyNCwwLDEwNiwxLDEyNCwyLDEyNCwzLAorICAgIDEyNCw0LDEwMCwxLDE0MSwzLDgzLDAsNDEsMiw3OCw0MSwxLDIxOCw1LDk1LAorICAgIDEwOSwxMTEsMTAwLDEwMSw0MSwyLDExNCwxMDEsMCwwLDAsMTE0LDE5NSwwLDAsMCwKKyAgICA0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDk0LDAsMCwwLDExNCw5MywwLDAsCisgICAgMCwxMTQsNTYsMCwwLDAsMTE0LDQ0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTYsMCwwLDAsNzYsCisgICAgMywwLDAsMTE1LDQsMCwwLDAsMCwyLDgsMSwxMjIsMzIsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDEwNSwxODIsCisgICAgMSwwLDAsNDEsMSwxMTQsMjE3LDAsMCwwLDk5LDMsMCwwLDAsMSwKKyAgICAwLDAsMCw5LDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAyNTAsMCwwLDAsMTE2LDAsMTI0LDEsMTMxLDEsOTIsMiwxMjUsNCwxMjUsNSwKKyAgICAxMDMsMCwxMjUsNiwxMjAsNDAsMTI0LDQsMTE0LDU2LDExNiwxLDEyNCw0LDEzMSwxLAorICAgIDEyLDAsMTE0LDU2LDExNiwwLDEyNCw0LDEzMSwxLDkyLDIsMTI1LDQsMTI1LDcsCisgICAgMTI0LDYsMTA2LDIsMTI0LDcsMTMxLDEsMSwwLDExMywxOCw4NywwLDEyMCwxMDgsCisgICAgMTE2LDMsMTI0LDYsMTMxLDEsNjgsMCw5Myw5NiwxMjUsNywxMTYsNCwxMjQsNCwKKyAgICAxMjQsNywxMzEsMiwxMjUsNCwxMjEsMTQsMTE2LDUsMTA2LDYsMTI0LDQsMTMxLDEsCisgICAgMSwwLDg3LDAsMTEzLDY4LDQsMCwxMTYsNywxMDcsMTAsMTE0LDExOCwxLDAsCisgICAgMSwwLDEsMCwxMTksNjgsODksMCwxMTMsNjgsNCwwLDExNiw4LDEwNywxMCwKKyAgICAxMTQsMTYyLDEsMCwxMjUsOCwxLDAsMTIyLDE4LDExNiw5LDEwNiwxMCwxMDAsMSwKKyAgICAxMjQsNCwxMjQsOCwxMzEsMywxLDAsMTAwLDIsODMsMCwxMDAsMiwxMjUsOCwKKyAgICAxMjYsOCw4OCwwLDExMyw2OCw4OCwwLDExMyw2OCw4NywwLDEyMSwyOCwxMTYsMTEsCisgICAgMTI0LDEsMTI0LDIsMTI0LDMsMTMxLDMsMSwwLDExNiw5LDEwNiwxMCwxMDAsMywKKyAgICAxMjQsMSwxMzEsMiwxLDAsODcsMCwxMTAsNDgsNCwwLDExNiw4LDEwNywxMCwKKyAgICAxMTQsMjQ0LDEsMCwxMjUsOCwxLDAsMTIyLDIwLDExNiw5LDEwNiwxMCwxMDAsMSwKKyAgICAxMjQsMSwxMjQsOCwxMzEsMywxLDAsODcsMCw4OSwwLDEwMCwyLDEwMCwyLAorICAgIDEyNSw4LDEyNiw4LDg4LDAsMTEwLDIsODgsMCwxMDAsMiw4MywwLDQxLDQsCisgICAgMTIyLDI3LDg3LDExNCwxMDUsMTE2LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LAorICAgIDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMjIsMjcsOTksCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw1OCwzMiwxMjMsMzMsMTE0LDEyNSw3OCwxMjIsMTIsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDEwMCwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxMiwxMTQsNDAsMCwwLDAsCisgICAgMTE0LDQ4LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCwKKyAgICAzMCwwLDAsMCwxMTQsMywwLDAsMCw5MCw1LDEwOSwxMDcsMTAwLDEwNSwxMTQsCisgICAgMjE4LDE1LDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LDExNiwxMTUsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDExNCw0MiwwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsMCwwLDAsCisgICAgMTE0LDU4LDAsMCwwLDQxLDksMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLAorICAgIDAsMTE0LDU2LDAsMCwwLDExNCwyMTcsMCwwLDAsMjE4LDYsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiwxMTQsOTgsMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwyNSwwLAorICAgIDAsMCwxMTQsMTk4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwxOTUsMCwwLDAsODEsMywwLDAsMTE1LAorICAgIDQyLDAsMCwwLDAsMiwxMiwxLDQsMiwxNiwxLDEyLDEsMTQsMiwKKyAgICAxNCwxLDEwLDEsMiwxLDE0LDEsMTQsMiw2LDEsMTYsMyw2LDEsCisgICAgOCwxLDIwLDEsMiwxLDEyLDEsMTYsMSwxNiwyLDgsMSwxMjIsMjUsCisgICAgODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICA0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LDQxLDcsMTE0LDEwOSwwLDAsCisgICAgMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwKKyAgICAxMTQsMTk0LDAsMCwwLDExNCwxOTYsMCwwLDAsMTE0LDE5NSwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwxMTQsMjE1LDAsMCwwLDY3LDMsMCwwLDExNSw4LDAsMCwKKyAgICAwLDgsMiw0LDIsOCw1LDgsNSwxMTQsMjE1LDAsMCwwLDk5LDAsCiAgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNjQsCi0gICAgMCwwLDAsMTE1LDEzMCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwKLSAgICAwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsCi0gICAgMTMyLDAsMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsCi0gICAgNSwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwKLSAgICAwLDEwMCw5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsCi0gICAgMTMyLDAsMCw5MCw4LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsMCw5MCwKLSAgICA5LDAsMTAwLDE0LDAsMTAwLDE1LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNiwKLSAgICAwLDEwMCwxNywwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMTgsMCwxMDAsMTksMCwKLSAgICAxMzIsMCwwLDkwLDEyLDAsMTAwLDIwLDAsODMsNDEsMjEsMjE4LDE0LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw5NywzOCwxLDAsCi0gICAgMCw4MiwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiw5NywzMiwxMTAsOTcsCi0gICAgMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzksCi0gICAgMTE1LDMyLDExMiw5NywxMTYsMTA0LDQ2LDMyLDMyLDczLDExNiwzMiwxMTcsMTE1LDEwMSwxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCi0gICAgMTAsMzIsMzIsMzIsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsMTA1LDExNiwxMTUsCi0gICAgMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwKLSAgICAxMTYsMzIsMTA4LDExMSwxMTEsMTA3LDExNSwzMiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDk1LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDk1LDk1LDQ2LDMyLDMyLDg3LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTA1LDExNSwKLSAgICAzMiw5OSwxMDQsOTcsMTEwLDEwMywxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDM5LDExNSwzMiwxMTEsMTE5LDExMCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKLSAgICAxMDUsMTE1LDMyLDExNCwxMDEsOTksMTExLDEwOSwxMTIsMTE3LDExNiwxMDEsMTAwLDQ0LDEwLDMyLAotICAgIDMyLDMyLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMzIsMzIsNzAsMTExLDExNCwzMiwxMTYsMTExLDExMiw0NSwxMDgsCi0gICAgMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDM5LAotICAgIDExNSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwxMDUsMTE1LDMyLDExNSwxMjEsCi0gICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDk5LDQsMCwwLDAsMCwwLDAsMCwKLSAgICA0LDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDUyLDAsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsMCwwLAotICAgIDk1LDEsMCwxMTYsMiwwLDEyNCwwLDAsMTA2LDMsMCwxMzEsMCwwLDEzMSwKLSAgICAxLDAsMTI0LDAsMCw5NSw0LDAsMTI0LDMsMCwxMjQsMCwwLDk1LDUsCi0gICAgMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsNiwyMTgsNSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwyMTgsNSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsOTUsMCwwLDAsMjE4LDE2LDk1LAotICAgIDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LAotICAgIDE3LDk1LDEwOCw5NywxMTUsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsMjE4LDEyLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LAotICAgIDQxLDQsMTE0LDExMCwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsCi0gICAgMCwyMTgsMTEsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwwLAotICAgIDAsMCwxODQsMywwLDAsMTE1LDgsMCwwLDAsMCwxLDksMSw5LAotICAgIDEsMjEsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKLSAgICA5NywxMTYsMTA0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw1MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsMCwxMDAsCi0gICAgMSwwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsMywKLSAgICAwLDEyNCwyLDAsMTAwLDIsMCwxMDcsMiwwLDExNCw0MywwLDEwMCw2LDAsCi0gICAgODMsMTI0LDEsMCwxMDAsNSwwLDEwMiwyLDAsODMsNDEsNywxMjIsNjIsODIsCi0gICAgMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiwxMTEsCi0gICAgMTAyLDMyLDQwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDUsMTEwLDk3LDEwOSwxMDEsNDQsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMTIsOTcsCi0gICAgMTE2LDEwNCw0NSw5NywxMTYsMTE2LDExNCw0NSwxMTAsOTcsMTA5LDEwMSw0MSwxMTQsNjAsMCwKLSAgICAwLDAsMTE0LDMyLDAsMCwwLDExNCw4LDAsMCwwLDExNCwzNywwLDAsCi0gICAgMCw5MCw4LDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQxLDIsMTE0LDgsMCwKLSAgICAwLDAsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDIzMiwwLDAsMCwxMTQsMzQsCi0gICAgMCwwLDAsNDEsNCwxMTQsMTEwLDAsMCwwLDExNCwyMjMsMCwwLDAsMjE4LAotICAgIDMsMTAwLDExMSwxMTYsOTAsMiwxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsCi0gICAgMTkwLDMsMCwwLDExNSw4LDAsMCwwLDAsMiwyNywxLDEyLDIsNCwKLSAgICAzLDEyMiwzOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwKLSAgICAxMDQsNDYsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LAotICAgIDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMzEsMCwwLDkyLDIsMCwxMjUsCi0gICAgMSwwLDEyNSwyLDAsMTE2LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsCi0gICAgMCwyNSwxMjQsMiwwLDEzMSwyLDAsODMsNDEsMSw3OCw0MSw0LDExNCwyMzksCi0gICAgMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsOCwwLDAsMCwyMTgsNywxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDEsMywxMTQsMTEwLDAsMCwwLDkwLDE4LDExMiwKLSAgICA5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsOTAsMTQsMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LDExNiwxMTQsOTUsMTEwLDk3LDEwOSwKLSAgICAxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDIzNCwwLDAsMCwyMDAsMywwLDAsMTE1LDQsMCwwLDAsMCwxLAotICAgIDE4LDEsMTIyLDMxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsCi0gICAgMTE2LDEwNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiwKLSAgICA5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDExOCwwLDAsMCwxMTYsMCwwLAotICAgIDEyNCwwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsMTI1LDEsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDIsMCwxMDcsMywwLDExNCwxMTEsMCwxMjQsMCwKLSAgICAwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNCwxLDAsMTMxLDIsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMDIsMCwxMjQsCi0gICAgMiwwLDEwNiw1LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwxMDIsMCwxMjQsMiwKLSAgICAwLDEwNiw2LDAsMTE0LDEwMiwwLDEyNCwyLDAsMTA2LDYsMCwxMjQsMCwwLAotICAgIDk1LDcsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMiwwLDEyNCwwLDAsMTA2LAotICAgIDcsMCw4Myw0MSwxLDc4LDQxLDgsMTE0LDk1LDAsMCwwLDExNCwyMzQsMCwKLSAgICAwLDAsMTE0LDIzNSwwLDAsMCwxMTQsMjM2LDAsMCwwLDExNCwyMzIsMCwwLAotICAgIDAsMTE0LDEyOSwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwyMzMsMCwwLDAsCi0gICAgNDEsMywxMTQsMTEwLDAsMCwwLDkwLDExLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTE0LDEwMSw5OSw5NywxMDgsCi0gICAgOTksMTE3LDEwOCw5NywxMTYsMTAxLDIwNCwzLDAsMCwxMTUsMTYsMCwwLDAsMCwKLSAgICAyLDE4LDEsMTUsMSwyMSwzLDI3LDEsOSwxLDEyLDEsOSwxLDEyMiwKLSAgICAyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsCi0gICAgOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAwLDAsMTMxLDEsMCw4Myw0MSwxLDc4LDQxLDIsMjE4LDQsMTA1LDExNiwxMDEsCi0gICAgMTE0LDExNCwyNDEsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LDk1LAotICAgIDEwNSwxMTYsMTAxLDExNCw5NSw5NSwyMTcsMywwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwKLSAgICAxMDQsNDYsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsCi0gICAgMTMxLDEsMCw4Myw0MSwxLDc4LDQxLDIsMTE0LDMzLDAsMCwwLDExNCwyNDEsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw3LDk1LDk1LDEwOCwxMDEsMTEwLAotICAgIDk1LDk1LDIyMCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLDk1LAotICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwKLSAgICAxMDgsMTAxLDExMCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsCi0gICAgMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsCi0gICAgMiw3OCwxMjIsMjAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywKLSAgICAxMTYsMTA0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LDQ5LDAsMCwwLDExNCwKLSAgICAyMzMsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSw5NSwyMjMsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKLSAgICAyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsCi0gICAgOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsMTA3LDYsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDEsMTE0LDI0MSwwLDAsMCw0MSwyLDExNCwxMTAsCisgICAgMCwwLDAsMTE1LDMyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwKKyAgICAxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsCisgICAgMTMyLDAsOTAsNSwxMDAsNiw4MywwLDQxLDcsMjE4LDIwLDgzLDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDEyMiw0NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNCwKKyAgICA5NywxMTAsMTAwLDEwOCwxMDEsMTE1LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsCisgICAgMTE1LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNDgsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTMxLAorICAgIDEsMTI1LDIsMTI0LDAsMTA2LDEsMTI0LDIsMTMxLDEsMTI1LDMsMTE2LDIsMTI0LAorICAgIDMsMTI0LDEsMTI0LDIsMTAwLDEsMTQxLDMsMTI1LDQsMTE2LDMsMTI0LDQsMTI0LAorICAgIDEsMTI0LDIsMTAwLDIsMTQxLDMsODMsMCw0MSwzLDc4LDQxLDIsMTE0LDEwMiwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTAyLDAsMCwwLDExNCwKKyAgICA5MywwLDAsMCw0MSw0LDExNCwxNTUsMCwwLDAsMTE0LDE5NywwLDAsMCwKKyAgICAxMTQsMTM5LDAsMCwwLDExNCwxNDUsMCwwLDAsNDEsNSwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NiwwLDAsMCwKKyAgICAxMTQsMjA2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDExNCwxODQsMCwwLDAsMTE2LDMsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsMSwxMCwxLDEwLDEsMTQsMSwxMjIsMjksODMsMTExLDExNywxMTQsCisgICAgOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwKKyAgICAwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDM5LDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsCisgICAgMTA1LDExNSwzMiwxMTAsMTExLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTksMTExLDEwMCwKKyAgICAxMDEsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwKKyAgICAxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDE5OSwwLDAsMCwxMjIsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwyLDEyMiwzMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLAorICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc4LDQxLDYsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTg0LDAsMCwwLAorICAgIDExNCwxOTksMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyMCwwLDAsMCwxMTIsMywKKyAgICAwLDAsMTE1LDYsMCwwLDAsOCwyLDQsMiw4LDYsMTE0LDIyMCwwLAorICAgIDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDY0LDAsMCwwLDExNSw5MiwwLDAsMCwxMDEsMCw5MCwxLAorICAgIDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LAorICAgIDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwKKyAgICAxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LDEwMCwxMCwxMDAsMTEsMTMyLDAsOTAsOCwKKyAgICAxMDAsMTIsMTAwLDEzLDEzMiwwLDkwLDksMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCwxMCwKKyAgICAxMDAsMTYsMTAwLDE3LDEzMiwwLDkwLDExLDEwMSwxMiwxMDAsMTgsMTAwLDE5LDEzMiwwLAorICAgIDEzMSwxLDkwLDEzLDEwMCwyMCw4MywwLDQxLDIxLDIxOCwxOSw2OSwxMjAsMTE2LDEwMSwKKyAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsCisgICAgOTMsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwKKyAgICAxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LDExMSwxMTAsMTE1LDExNiwxMTQsMTE3LDk5LAorICAgIDExNiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwKKyAgICAxMTYsMTExLDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksMTA1LDExNiwxMDQsMzIsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwzLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEyNCwyLAorICAgIDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMTE0LDEwMiwwLAorICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxMDIsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODIsMCwwLDAsMTM5LDMsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMSw2LDEsMTIyLDI4LDY5LDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyNCwwLDAsCisgICAgMCwxMjQsMCwxMDYsMCwxMjQsMSwxMDYsMCwxMDcsMiwxMTEsMjIsMTI0LDAsMTA2LAorICAgIDEsMTI0LDEsMTA2LDEsMTA3LDIsODMsMCw0MSwxLDc4LDQxLDIsMTE0LDIwOCwKKyAgICAwLDAsMCwxMTQsMTE1LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgMjA5LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwyMTAsMCwwLDAsMTQzLDMsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMSwxMiwxLDEyMiwyNiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDEsMTEzLDk1LAorICAgIDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDIwLDAsMCwwLDExNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwxLDExNiwwLDEyNCwwLDEwNiwyLDEzMSwxLDY1LDAsODMsMCw0MSwKKyAgICAxLDc4LDQxLDMsMTE0LDIxMSwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwzNywKKyAgICAwLDAsMCw0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIxMiwwLDAsMCwxNDcsMywKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSwKKyAgICA5NSwxMDQsOTcsMTE1LDEwNCw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLDAsCisgICAgMCwxMTYsMCwxMDYsMSwxMTYsMiwxMDYsMywxMjQsMSwxMzEsMiwxMjUsMiwxMTYsCisgICAgMCwxMDYsNCwxMDAsMSwxMjQsMSwxMDYsNSwxMjQsMCwxMDYsNiwxMzEsMywxLAorICAgIDAsMTI0LDIsODMsMCw0MSwyLDEyMiwzOCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsCisgICAgOTcsMTEwLDMyLDExNywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwzMiwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsCisgICAgMzgsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LAorICAgIDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNDEsNywxMTQsMTE4LDAsMCwwLDExNCwxODUsCisgICAgMCwwLDAsMTE0LDE0MywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCisgICAgOTUsMTAwLDEyMSwxMTAsOTcsMTA5LDEwNSw5OSwxMTQsMTMzLDAsMCwwLDExNCwxMDIsMCwKKyAgICAwLDAsMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsMTYyLAorICAgIDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MywwLDAsMCwxNTAsMywwLDAsCisgICAgMTE1LDEwLDAsMCwwLDAsMiw0LDEsMTAsMSw2LDEsMTIsMSwxMjIsCisgICAgMzMsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwwLDExNiwwLDEwNiwxLAorICAgIDExNiwyLDEwNiwzLDEyNCwxLDEzMSwyLDEsMCwxMTYsMCwxMDYsNCwxMDAsMSwKKyAgICAxMjQsMCwxMDYsNSwxMjQsMCwxMDYsNiwxMzEsMywxLDAsMTAwLDIsODMsMCwKKyAgICA0MSwzLDEyMiwzMCw3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDMyLDk3LAorICAgIDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMjIsNDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwKKyAgICAxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSw3OCw0MSw3LDExNCwKKyAgICAxMTgsMCwwLDAsMTE0LDE4NSwwLDAsMCwxMTQsMTQzLDAsMCwwLDkwLDEyLAorICAgIDEwMSwxMjAsMTAxLDk5LDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE0LDEzMywwLDAsCisgICAgMCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwwLDE1OCwzLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDIsMTQsMSw2LDEsMTIyLDMxLDY5LDEyMCwxMTYsMTAxLAorICAgIDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICAxMTUsMzYsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDEsMTAwLDEsMjUsCisgICAgMCwxMzcsMCwxMTYsMiwxMzUsMCwxMDIsMSwxMDAsMiwxMDAsMywxMzIsOCwxMTYsCisgICAgMyw2OCwwLDEzMSwxLDEzMSwxLDgzLDAsNDEsNCwxMjIsNDksODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDExNCwzMSwKKyAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICA0LDAsMCwwLDUxLDAsMCwwLDExNSwyNiwwLDAsMCwxMjQsMCw5MywKKyAgICAxOCwxMjUsMSwxMzYsMCwxMDAsMCwxMjQsMSwyMywwLDEwNywyLDg2LDAsMSwKKyAgICAwLDExMywyLDEwMCwxLDgzLDAsNDEsMiwxMTQsMTgyLDAsMCwwLDc4LDExNCwKKyAgICA0LDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDIxOCw2LDExNSwxMTcsMTAyLAorICAgIDEwMiwxMDUsMTIwLDQxLDEsMjE4LDksMTAyLDEwNSwxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLAorICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxNjcsMywwLDAsMTE1LDIsMCwwLDAsNCwxLAorICAgIDEyMiw0OSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwKKyAgICAxMTIsMTE0LDYyLDQxLDQsMTE0LDQwLDAsMCwwLDExNCwzNywwLDAsMCwyMTgsCisgICAgMyw5NywxMTAsMTIxLDIxOCwxOCw2OSw4OCw4NCw2OSw3OCw4Myw3Myw3OSw3OCw5NSwKKyAgICA4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LAorICAgIDEyMywwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwyMjMsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE1NywwLDAsMCwxNjQsMywwLDAsMTE1LDYsCisgICAgMCwwLDAsMCwyLDE0LDEsMTIsMSwxMjIsMzAsNjksMTIwLDExNiwxMDEsMTEwLAorICAgIDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LAorICAgIDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwKKyAgICAwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDYzLDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSw5NywKKyAgICAxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiw0Niw3OCwxMTQsNCwwLDAsMCwKKyAgICA0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg0LDAsMCwwLAorICAgIDE3MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDY5LDEyMCwxMTYsCisgICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsCisgICAgMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA0LDk3LDExOCwxMDEsCisgICAgMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LAorICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCwxOTksMCwwLDAsMTc0LDMsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw2LDAsMCwwLDEyNCwwLDEwNiwwLDgzLAorICAgIDAsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsMTExLDExNywxMTAsMTAwLAorICAgIDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw0MSwKKyAgICAxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwxMTQsMTU1LDAsMCwwLDE3OCwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDMsMTIyLDMyLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsCisgICAgOTcsMTA5LDEwMSw3OCw0MSwxNCwxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsCisgICAgMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LAorICAgIDIxMCwwLDAsMCwxMTQsMjEyLDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDE4OCwKKyAgICAwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxODQsMCwwLDAsMTE0LDE5OSwwLAorICAgIDAsMCwxMTQsMTIwLDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMTE0LDIyMSwwLDAsMCwxMzEsMywwLDAsMTE1LDIwLDAsMCwwLDgsNiwKKyAgICA0LDIsOCw0LDgsNCw4LDMsOCw4LDgsNiw4LDYsOCw0LAorICAgIDgsNCwxMTQsMjIxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDk2LDAsMCwKKyAgICAwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwKKyAgICAzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsCisgICAgNywxMzIsMCw5MCw2LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwKKyAgICAxMSwxMzIsMCw5MCw4LDEwMCwxMiwxMDAsMTMsMTMyLDAsOTAsOSwxMDAsMTQsMTAwLAorICAgIDE1LDEzMiwwLDkwLDEwLDEwMCwxNiwxMDAsMTcsMTMyLDAsOTAsMTEsMTAwLDE4LDEwMCwKKyAgICAxOSwxMzIsMCw5MCwxMiwxMDAsMjAsMTAwLDIxLDEzMiwwLDkwLDEzLDEwMCwyMiw4MywKKyAgICAwLDQxLDIzLDIxOCwxNCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAorICAgIDk3LDExNiwxMDQsOTcsMzgsMSwwLDAsODIsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLAorICAgIDExNiwxMTUsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDM5LDExNSwzMiwxMTIsOTcsMTE2LDEwNCw0NiwzMiwzMiwKKyAgICA3MywxMTYsMzIsMTE3LDExNSwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTAyLAorICAgIDEwNSwxMTAsMTAwLDMyLDEwNSwxMTYsMTE1LDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCisgICAgMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwOCwxMTEsMTExLDEwNywxMTUsMzIsMTE3LAorICAgIDExMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDM5LDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSw0NiwzMiwzMiw4NywxMDQsCisgICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsOTksMTA0LDk3LDExMCwxMDMsMTAxLDExNSw0NCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTExLDExOSwKKyAgICAxMTAsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDk5LDExMSwxMDksMTEyLAorICAgIDExNywxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDMyLDMyLDcwLDExMSwKKyAgICAxMTQsMzIsMTE2LDExMSwxMTIsNDUsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0Niw5OSw0LAorICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwzNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEyNCwyLAorICAgIDEyNCwwLDk1LDEsMTE2LDIsMTI0LDAsMTA2LDMsMTMxLDAsMTMxLDEsMTI0LDAsCisgICAgOTUsNCwxMjQsMywxMjQsMCw5NSw1LDEwMCwwLDgzLDAsNDEsMSw3OCw0MSwKKyAgICA2LDIxOCw1LDk1LDExMCw5NywxMDksMTAxLDIxOCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCwKKyAgICA5NywwLDAsMCwyMTgsMTYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLDk3LAorICAgIDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCwxMDIsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwxMSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMTgyLDAsMCwwLDE5MSwzLDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDEsNiwxLDYsMSwxNCwxLDEyMiwyMyw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLAorICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LDAsMCwwLDEyNCwwLDEwNiwKKyAgICAwLDEwNiwxLDEwMCwxLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LDMsMTI0LAorICAgIDIsMTAwLDIsMTA3LDIsMTE0LDMwLDEwMCw2LDgzLDAsMTI0LDEsMTAwLDUsMTAyLAorICAgIDIsODMsMCw0MSw3LDEyMiw2Miw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywKKyAgICAzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsCisgICAgOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LAorICAgIDExMCw5NywxMDksMTAxLDQxLDExNCw2MSwwLDAsMCwxMTQsMzIsMCwwLDAsMTE0LAorICAgIDgsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDgsOTUsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsOTUsNDEsMiwxMTQsOCwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsCisgICAgMiwxMTQsMjI4LDAsMCwwLDExNCwzNCwwLDAsMCw0MSw0LDExNCwxMDQsMCwKKyAgICAwLDAsMTE0LDIxOSwwLDAsMCwyMTgsMywxMDAsMTExLDExNiw5MCwyLDEwOSwxMDEsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAorICAgIDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwxOTcsMywwLDAsMTE1LDgsMCwwLAorICAgIDAsMCwyLDE4LDEsOCwyLDQsMywxMjIsMzgsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLAorICAgIDExNSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwyOCwwLDAsMCwxMjQsMCwxMDYsMCwxMzEsCisgICAgMCw5MiwyLDEyNSwxLDEyNSwyLDExNiwxLDExNiwyLDEwNiwzLDEyNCwxLDI1LAorICAgIDAsMTI0LDIsMTMxLDIsODMsMCw0MSwxLDc4LDQxLDQsMTE0LDIzNSwwLDAsCisgICAgMCwxMTQsMTE0LDAsMCwwLDExNCw4LDAsMCwwLDIxOCw3LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0MSwzLDExNCwxMDQsMCwwLDAsOTAsMTgsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw5MCwKKyAgICAxNCwxMTIsOTcsMTE2LDEwNCw5NSw5NywxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjMwLAorICAgIDAsMCwwLDIwNywzLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTIsMSwKKyAgICAxMjIsMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LAorICAgIDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsODAsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LAorICAgIDEsMTMxLDAsMTMxLDEsMTI1LDEsMTI0LDEsMTI0LDAsMTA2LDIsMTA3LDMsMTE0LAorICAgIDc0LDEyNCwwLDEwNiwzLDEyNCwwLDEwNiw0LDEyNCwxLDEzMSwyLDEyNSwyLDEyNCwKKyAgICAyLDEwMCwwLDEwNyw5LDExNCw2OCwxMjQsMiwxMDYsNSwxMDAsMCwxMDcsOCwxMTQsCisgICAgNjgsMTI0LDIsMTA2LDYsMTE0LDY4LDEyNCwyLDEwNiw2LDEyNCwwLDk1LDcsMTI0LAorICAgIDEsMTI0LDAsOTUsMiwxMjQsMCwxMDYsNyw4MywwLDQxLDEsNzgsNDEsOCwKKyAgICAxMTQsOTcsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMjMxLDAsMCwwLDExNCwKKyAgICAyMzIsMCwwLDAsMTE0LDIyOCwwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsCisgICAgMCwwLDAsMTE0LDIyOSwwLDAsMCw0MSwzLDExNCwxMDQsMCwwLDAsOTAsCisgICAgMTEsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTYyLDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwxMiw5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMjExLDMsCisgICAgMCwwLDExNSwxNiwwLDAsMCwwLDIsMTIsMSwxMCwxLDE0LDMsMTgsCisgICAgMSw2LDEsOCwxLDYsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAorICAgIDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywKKyAgICAxMDgsOTcsMTE2LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwKKyAgICAxMjQsMCwxMDYsMSwxMzEsMCwxMzEsMSw4MywwLDQxLDEsNzgsNDEsMiwyMTgsCisgICAgNCwxMDUsMTE2LDEwMSwxMTQsMTE0LDIzNywwLDAsMCw0MSwxLDExNCwxMDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDgsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDIyNCwzLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTQsMCwwLDAsMTI0LDIsMTI0LDAsMTA2LDAsMTI0LDEsCisgICAgNjAsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwxMTQsMjI5LDAsMCwwLAorICAgIDQxLDMsMTE0LDEwNCwwLDAsMCwyMTgsNSwxMDUsMTEwLDEwMCwxMDEsMTIwLDExNCwzNywKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwyMTgsMTEsOTUsOTUsMTE1LDEwMSwxMTYsMTA1LDExNiwxMDEsMTA5LDk1LDk1LDIyNywKKyAgICAzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI2LDk1LDc4LDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMTUsMTAxLDExNiwKKyAgICAxMDUsMTE2LDEwMSwxMDksOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsCisgICAgMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsCisgICAgMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDAsMTMxLDEsODMsMCw0MSwxLDc4LDQxLAorICAgIDIsMTE0LDMzLDAsMCwwLDExNCwyMzcsMCwwLDAsNDEsMSwxMTQsMTA0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDIxOCw3LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDIzMCwzLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDEsMTIyLDIyLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsMCwxMjQsMCwxMDYsMSwxMzEsCisgICAgMSw4MywwLDQxLDIsNzgsMTIyLDIwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLDExNCw1MCwKKyAgICAwLDAsMCwxMTQsMjI5LDAsMCwwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOCwKKyAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMjMzLDMsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCwKKyAgICA5NywxMTYsMTA0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMiwwLDAsMCwxMjQsMSwxMjQsMCwxMDYsMCwxMzEsMCwxMDcsNiwKKyAgICA4MywwLDQxLDEsNzgsNDEsMSwxMTQsMjM3LDAsMCwwLDQxLDIsMTE0LDEwNCwKICAgICAwLDAsMCwyMTgsNCwxMDUsMTE2LDEwMSwxMDksMTE0LDQsMCwwLDAsMTE0LDQsCiAgICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLDk1LDk1LDk5LDExMSwxMTAsMTE2LAotICAgIDk3LDEwNSwxMTAsMTE1LDk1LDk1LDIyNiwzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDk3LDEwNSwxMTAsMTE1LDk1LDk1LDIzNiwzLDAsMCwxMTUsMiwwLDAsMCwwLAogICAgIDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAogICAgIDEwNCw0Niw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSw5OSwyLAogICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsCi0gICAgMiwxMTQsMjMzLDAsMCwwLDExNCwxNjUsMCwwLDAsNDEsMiwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwyNDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE2NSwwLDAsMCwyMjksMywwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwxLDEyMiwyMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw3OCw0MSwxMywKLSAgICAxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsCi0gICAgMTE2LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDIzOSwwLDAsMCwxMTQsMjM0LAotICAgIDAsMCwwLDExNCwyNDEsMCwwLDAsMTE0LDI0MywwLDAsMCwxMTQsMjQ0LDAsCi0gICAgMCwwLDExNCwyNDUsMCwwLDAsMTE0LDI0NywwLDAsMCwxMTQsMTY1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwyMzEsMCwwLDAsMTc3LDMsMCwwLDExNSwyMCwKLSAgICAwLDAsMCwxMiw1LDYsMiwxMiw2LDEyLDEwLDEyLDQsMTIsMTMsMTIsCi0gICAgMywxMiwzLDEyLDMsMTIsMywxMTQsMjMxLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDExOCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAxLDQsCi0gICAgMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwKLSAgICAxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDcsMCwxMDAsCi0gICAgOCwwLDEzMiwwLDAsOTAsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw5LDAsCi0gICAgMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNSwwLDEwMCwKLSAgICAxNiwwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMTcsMCw4Myw0MSwxOCwyMTgsMTYsCi0gICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEyNCwwLDAsOTUsMSwwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMzEsMCwwLDAsMTE0LDIzMywwLAotICAgIDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDIzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDIzNSwzLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwKLSAgICAwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LAotICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLAotICAgIDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsCi0gICAgMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLAotICAgIDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDEyMiwyNSw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2Miw0MSwyLAotICAgIDExNCw0OSwwLDAsMCwxMTQsMTE0LDAsMCwwLDQxLDIsMTE0LDE3MiwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLAotICAgIDExMiwxMTQsMjM4LDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjgsOTUsCisgICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwwLDEwNiwwLDEwNiwxLDEyNCwxLAorICAgIDEzMSwxLDEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMiwxMTQsMjI5LDAsCisgICAgMCwwLDExNCwxNjEsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwyNDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMTE0LDE2MSwwLDAsMCwyMzksMywwLDAsMTE1LDIsMCwwLDAsCisgICAgMCwxLDEyMiwyMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAorICAgIDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw3OCw0MSwxNCwxMTQsMTA5LDAsMCwKKyAgICAwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLAorICAgIDExNCwxODIsMCwwLDAsMTE0LDIzNSwwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwKKyAgICAyMzcsMCwwLDAsMTE0LDIzOSwwLDAsMCwxMTQsMjQxLDAsMCwwLDExNCwyNDIsCisgICAgMCwwLDAsMTE0LDI0MywwLDAsMCwxMTQsMjQ1LDAsMCwwLDExNCwxNjEsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMTE0LDIyNywwLDAsMCwxODQsMywwLDAsMTE1LAorICAgIDIyLDAsMCwwLDgsNSw0LDIsOCw2LDgsMTAsOCw0LDgsMTMsCisgICAgOCwzLDgsMyw4LDMsOCwzLDgsMywxMTQsMjI3LDAsMCwwLDk5LAorICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCisgICAgNjQsMCwwLDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsCisgICAgMiwxMDAsMSwxMDAsMiwxMzIsMCw5MCwzLDEwMSw0LDEwMCwzLDEwMCw0LDEzMiwKKyAgICAwLDEzMSwxLDkwLDUsMTAwLDUsMTAwLDYsMTMyLDAsOTAsNiwxMDAsNywxMDAsCisgICAgOCwxMzIsMCw5MCw3LDEwMCw5LDEwMCwxMCwxMzIsMCw5MCw4LDEwMCwxMSwxMDAsCisgICAgMTIsMTMyLDAsOTAsOSwxMDAsMTMsMTAwLDE0LDEzMiwwLDkwLDEwLDEwMCwxNSwxMDAsCisgICAgMTYsMTMyLDAsOTAsMTEsMTAwLDE3LDgzLDAsNDEsMTgsMjE4LDE2LDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDQsMCwKKyAgICAwLDAsMCwwLDAsMCw0LDAsMCwwLDQsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE4LDAsMCwwLDExNiwwLDEyNCwxLDEyNCwyLDEyNCwzLDEzMSwKKyAgICAzLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMTE0LDIyNywKKyAgICAwLDAsMCwxMTQsMjI5LDAsMCwwLDQxLDQsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgMTAyLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMjMzLDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODIsMCwKKyAgICAwLDAsMjQ1LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsCiAgICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDc4LDg0LDExNCw0LDAsCi0gICAgMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNjEsMCwKLSAgICAwLDAsMjQ3LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsMTE0LDMyLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwyMDMsMCwwLDAsMjUwLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwKLSAgICAxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsCi0gICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEwMCw0LDAsMTAwLDUsMCwxMzEsMywxLDgzLDQxLDYsNzgsCi0gICAgMTE0LDMyLDAsMCwwLDEyMiw4LDYwLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDYyLDExNCwKLSAgICAxOTAsMCwwLDAsMTE0LDIwNSwwLDAsMCw4NCw0MSwxLDExNCwyMDYsMCwwLAotICAgIDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4OCwwLDAsCi0gICAgMCwyNTMsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSw3OCwKLSAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsCi0gICAgMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwKLSAgICAwLDEwMCwxLDAsODMsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiwKLSAgICA5NywxMTcsMTA4LDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LAotICAgIDExMSwxMTAsNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLAotICAgIDExNCwxNjYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMTE0LDE4NywwLDAsMCwwLDQsMCwwLDExNSwwLDAsCi0gICAgMCwwLDEyMiwzMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwKLSAgICAxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE5MiwwLDAsMCwzLDQsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsMSwxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsMCwxMDAsMSwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwwLDEsMTE2LDIsMCwxMDYsMywKLSAgICAwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDk4LDc2LAotICAgIDExMSw5NywxMDAsMzIsOTcsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwKLSAgICAxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsCi0gICAgMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LAotICAgIDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMTIyLDM4LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDEyMywzMywxMTQsMTI1LDQxLDQsMTE0LDEwNywwLDAsMCwKLSAgICAxMTQsMjMzLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDE5MywwLDAsMCw0MSwKLSAgICAyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk0LDAsMCwwLDYsCi0gICAgNCwwLDAsMTE1LDQsMCwwLDAsMCw3LDE2LDEsMTIyLDI4LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDEyLDExNCwxMTQsMCwKLSAgICAwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxODYsMCwwLAotICAgIDAsMTE0LDE4NCwwLDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwxNjEsMCwwLDAsCi0gICAgMTE0LDIwMywwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LAotICAgIDE5MiwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDgsMCwKLSAgICAwLDAsMjM0LDMsMCwwLDExNSwxNiwwLDAsMCwxMiwxLDEyLDMsMTgsCi0gICAgOSwxMiwzLDEyLDMsMTIsMywxMiwzLDEyLDMsMTE0LDI0OCwwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCi0gICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwKLSAgICAwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwwLAotICAgIDEwMSw0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCwKLSAgICA3LDAsMTAxLDQsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDkwLDgsMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwwLAotICAgIDEzMiwxLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsCi0gICAgMTAsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsCi0gICAgMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwxLDAsCi0gICAgMTMxLDEsMCw5MCwxMSwwLDEwMCwxMCwwLDgzLDQxLDE3LDIxOCwxMCw4MCw5NywKLSAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE1LAotICAgIDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LAotICAgIDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsOTcsMTE2LDExNiwKLSAgICAxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw1NSwwLAotICAgIDAsMCwxMjAsNDgsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMzEsMCwKLSAgICAwLDY4LDkzLDMxLDAsMTI1LDEsMCwxMTYsMywwLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMzEsMiwwLDExNCwxNiwwLDEyNCwxLDAsMTA2LDQsMCwxMzEsMCwwLAotICAgIDEsMTEzLDE2LDAsODcsMTAwLDIsMCw4Myw0MSwzLDEyMiwxMjUsNjcsOTcsMTA4LAotICAgIDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLAotICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwKLSAgICAxMTQsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCw5NywKLSAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLDUsCi0gICAgMTE0LDgsMCwwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LDExNywKLSAgICAxMDEsMTE1LDExNCwxMTcsMCwwLDAsMTE0LDI1MSwwLDAsMCw0MSwyLDExNCwxNzIsCi0gICAgMCwwLDAsMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI1MSwwLDAsMCwyMywKLSAgICA0LDAsMCwxMTUsNiwwLDAsMCwwLDQsMjIsMSwxNSwxLDEyMiwyOCwKLSAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LAotICAgIDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwxMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTA3LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEwNywKLSAgICA5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLDExNiwKLSAgICAyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLDEyMCwKLSAgICA1OSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5Myw0NCwwLDEyNSwyLDAsMTIxLAotICAgIDE0LDAsMTI0LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsODcsMTEzLDUxLDAsCi0gICAgNCwxMTYsNSwwLDEwNywxMCwwLDExNCw5NCwwLDEsMSwxLDExOSw1MSwwLAotICAgIDg5LDExMyw1MSwwLDg4LDExMyw1MSwwLDg3LDEwMCwxLDAsODMsMTAwLDEsMCwKLSAgICA4Myw0MSwzLDEyMiwxMTMsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsMTE3LAotICAgIDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLAotICAgIDExNCwzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwKLSAgICAxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiw5NywKLSAgICAxMDgsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsCi0gICAgNDEsNiwxMTQsOCwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwxMTQsNjIsMCwwLDAsMTE0LDYzLDAsMCwwLDExNCwxMjcsMCwKLSAgICAwLDAsMTE0LDEwOSwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDkwLDQsMTA0LDExMSwxMTEsMTA3LDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDQsMTExLDExMSwxMDcsMTE1LDMxLDQsMCwwLDExNSwxNiwwLDAsMCwwLDcsCi0gICAgMjUsMSwxNiwxLDE2LDEsMywxLDE0LDEsMTMsMSwxMiwyLDEyMiwyMiwKLSAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywKLSAgICAwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMTIzLDAsMCwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MywwLDEyMSwxNiwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDIyLDAsNCwKLSAgICAxMTYsMiwwLDEwNywxMCwwLDExNCw1MiwwLDEsMSwxLDEwMCwyLDAsODMsCi0gICAgODksMTEwLDEsMCw4OCwxMjEsMTcsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCwyNSwxMjUsMiwwLDg3LDExMCw0NiwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTE4LDAsMSwxLDEsMTI0LDAsMCwxMDYsNiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMjUsMiwwLDEyNCwyLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLAotICAgIDAsNjAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDgzLDQxLDMsMTIyLDIxMCw3MSwKLSAgICAxMDEsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsCi0gICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAotICAgIDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSw0NCwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsOTcsMTEyLDExMiwxMTQsMTExLDExMiwxMTQsMTA1LAotICAgIDk3LDExNiwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsOTcsMTEwLDEwMCwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDEwNSwxMTYsNDYsCi0gICAgMzIsNzMsMTAyLDMyLDExMCwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwKLSAgICAzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDQ0LDMyLDExNSwxMTYsMTExLDExNCwKLSAgICAxMDEsMzIsNzgsMTExLDExMCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMTE0LDMyLDAsMCwwLDc4LDQxLDcsMTE0LDMsMCwwLDAsMTE0LDQ3LAotICAgIDAsMCwwLDIxOCwxNyw3MCwxMDUsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLAotICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDI1MiwwLDAsMCwKLSAgICAxMTQsMTM5LDAsMCwwLDExNCwwLDEsMCwwLDQxLDMsMTE0LDE3MiwwLDAsCi0gICAgMCwxMTQsMzcsMCwwLDAsMTE0LDI1NCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMjAsOTUsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDQ4LDQsMCwwLDExNSwyMiwwLDAsMCwwLDgsMTIsMSwzLDEsMTYsCi0gICAgMSwxMywzLDksMSwzLDEsMTcsMSwxMywxLDE1LDEsMTgsMSwxMjIsCi0gICAgMzEsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwzLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwxMTksMCwwLDAsMTE2LDAsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMTQsMzksMCwxMjQsMiwwLDEwNiwxLDAsMTI0LAotICAgIDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTEwLDIxLAotICAgIDAsMTI0LDIsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywwLAotICAgIDEwMywwLDAsMTI1LDQsMCwxMjQsMywwLDEwMCwwLDAsMTA3LDksMCwxMTQsCi0gICAgODgsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLAotICAgIDAsODMsMTE2LDMsMCwxMDYsNSwwLDEyNCwxLDAsMTAwLDAsMCwxMzEsMiwKLSAgICAwLDEyNSw1LDAsMTI0LDQsMCwxMjQsNSwwLDk1LDYsMCwxMjQsNSwwLAotICAgIDgzLDQxLDIsNzgsMTE0LDEyNiwwLDAsMCw0MSw3LDExNCwxMTcsMCwwLDAsCi0gICAgMTE0LDEyNiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAotICAgIDE4MCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxNTgsMCwwLDAsNDEsNiwKLSAgICAxMTQsMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDI1NCwwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDcwLAotICAgIDQsMCwwLDExNSwxOCwwLDAsMCwwLDQsMTUsMSwyNCwyLDE1LDEsCi0gICAgNiwxLDEyLDEsMTYsMSwxOCwxLDksMSwxMjIsMjcsODAsOTcsMTE2LDEwNCwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwxMDMsCi0gICAgMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSw0LDAsMCwwLDAsMCwwLAotICAgIDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNDMsMCwKLSAgICAwLDAsMTAzLDAsMCwxMjUsNCwwLDEyMCwyMzAsMCwxMjQsMiwwLDY4LDkzLAotICAgIDE5MSwwLDEyNSw1LDAsMTE2LDAsMCwxMjQsNSwwLDExNiwxLDAsMTE2LDIsCi0gICAgMCwxMDIsMiwwLDEzMSwyLDAsMTE1LDQzLDAsMTEzLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsMywwLDEyNCw1LDAsMTMxLDEsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLAotICAgIDEsMCwxMDcsOSwwLDExNCwxMywwLDExNiw0LDAsMTI0LDYsMCwxMDAsMiwKLSAgICAwLDEzMSwyLDAsMTE0LDEwNiwwLDEyNCw2LDAsMTA2LDUsMCwxMjQsMSwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExMCwxOCwwLDEyNCwwLDAsMTA2LAotICAgIDYsMCwxMjQsMSwwLDEyNCw2LDAsMTMxLDIsMCwxMjUsNywwLDEyNCw3LAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxMzksMCwxMTMsMTMsMCwxMjQsNywwLAotICAgIDEwNiw3LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNTgsMCwxMjQsNywwLDgzLAotICAgIDEyNCw3LDAsMTA2LDgsMCwxMjUsOCwwLDEyNCw4LDAsMTAwLDEsMCwxMDcsCi0gICAgOCwwLDExNCwxOTEsMCwxMTYsOSwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwKLSAgICAwLDEyNCw0LDAsMTA2LDEwLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEzLAotICAgIDAsODcsMTE2LDExLDAsMTA2LDEyLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLAotICAgIDAsMTI1LDcsMCwxMjQsNCwwLDEyNCw3LDAsOTUsOCwwLDEyNCw3LDAsCi0gICAgODMsMTAwLDEsMCw4Myw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTgyLDAsMCwwLDEyMiwxOSwKLSAgICAxMTUsMTEyLDEwMSw5OSwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0MSwxMywxMTQsMTQ1LDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsCi0gICAgNSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDIsMSwwLDAsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTgyLDAsMCwwLDExNCwzLDEsMCwwLDExNCwxMjksMCwwLDAsMTE0LAotICAgIDE1OCwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNTEsMCwwLDAsMTE0LDEyMywKLSAgICAwLDAsMCwxMTQsMTYyLDAsMCwwLDQxLDksMTE0LDE3MiwwLDAsMCwxMTQsCi0gICAgMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTgxLDAsMCwwLDIxOCwxNCwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw5MCw1LAotICAgIDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDI1NCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwKLSAgICAxMzAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksODUsNCwKLSAgICAwLDAsMTE1LDQwLDAsMCwwLDAsNSw2LDEsMTMsMSwyMSwxLDMsCi0gICAgMSwxNSwxLDEyLDEsMTUsMSwyMSwyLDE4LDEsMTIsMSwzLDEsMTUsCi0gICAgMSw0LDEsOSwxLDEyLDEsMTIsNSwxNywyLDE4LDEsOSwxLDEyMiwKLSAgICAyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTE1LDExMiwxMDEsOTksOTksNCwwLDAsMCwwLDAsMCwwLDYsMCwKLSAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQwLDAsMCwwLDEyNCwKLSAgICAyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxMzEsMywwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMSwwLDEwNywKLSAgICA4LDAsMTE0LDU4LDAsMTAwLDEsMCw4MywxMjQsNCwwLDEwNiwzLDAsMTAwLAotICAgIDEsMCwxMDcsOCwwLDExNCwxMzIsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LDUsCi0gICAgMCwxMjQsNSwwLDExNCwxMjUsMCwxMDAsMiwwLDEyNCw0LDAsOTUsNSwwLAotICAgIDExNiw2LDAsMTI0LDEsMCwxMjQsNSwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsCi0gICAgMywwLDEyNCw0LDAsOTUsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCw4MywKLSAgICAxMTAsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCw4Myw0MSwzLDEyMiw5OCwxMDIsCi0gICAgMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLAotICAgIDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiwKLSAgICA5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLAotICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsCi0gICAgMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwKLSAgICA0Niw3OCw5MCw5LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQxLDcsMTE0LAotICAgIDgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw2LDEsMCwwLDExNCwxMjksCi0gICAgMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwyMzEsMCwKLSAgICAwLDAsNDEsNiwxMTQsMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDExNCwxODEsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsNSwxLAorICAgIDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLAorICAgIDAsMCwxMDAsMSwxMDYsMCwxMjQsMSwxMDYsMSwxMzEsMSw4MywwLDQxLDIsCisgICAgMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCisgICAgMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwKKyAgICAzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwKKyAgICAxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwxMjIsMjUsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsNDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNjIsCisgICAgNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEwOSwwLDAsMCw0MSwyLDExNCwxNjgsCisgICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDI0OCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLAorICAgIDI4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiw3OCw4NCwxMTQsCisgICAgNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsCisgICAgMTU3LDAsMCwwLDEsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKKyAgICAyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiw3OCwxMTQsMzIsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMTE0LDE5OSwwLDAsMCw0LDQsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwxMDAsMSwxMDAsMiwxMDAsCisgICAgMywxMDAsNCwxMDAsNSwxNDEsNCw4MywwLDQxLDYsNzgsMTE0LDMyLDAsMCwKKyAgICAwLDEyMiw4LDYwLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDYyLDExNCwxODYsMCwwLDAsCisgICAgODQsNDEsMSwxMTQsMjAxLDAsMCwwLDQxLDEsMTE0LDIwMiwwLDAsMCw0MSwKKyAgICAyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg0LDAsMCwwLDcsCisgICAgNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyNSw5NSw3OCw5NywxMDksCisgICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKKyAgICA5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiwxMjIsNDIsODUsMTE1LDEwMSwzMiwxMDAsMTAxLDEwMiw5NywxMTcsCisgICAgMTA4LDExNiwzMiwxMTUsMTAxLDEwOSw5NywxMTAsMTE2LDEwNSw5OSwxMTUsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgNDYsNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxNjIsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMTE0LDE4MywwLDAsMCwxMCw0LDAsMCwxMTUsMCwwLDAsMCwKKyAgICAxMjIsMzAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDAsODMsMCw0MSwxLAorICAgIDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwNCwwLDAsMCwxMTQsMTg3LDAsCiAgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwxODIsMCwwLDAsMTE3LDQsMCwwLDExNSwyNiwwLDAsMCwwLAotICAgIDQsMTIsMSw5LDEsMjEsMSwxMiwxLDQsMSwxNSwxLDksMSw2LAotICAgIDMsOSwxLDI0LDEsNCwyLDcsMiwxMjIsMjAsODAsOTcsMTE2LDEwNCw3MCwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwKLSAgICAzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0MSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LAotICAgIDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMzQsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDEsCi0gICAgMCw4Myw0MSwyLDEyMiwxNzAsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLAotICAgIDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCi0gICAgMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAwLDExNCwxODgsMCwwLDAsMTMsNCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwyNiwwLDAsMCwxMTYsMCwxMDYsMSwxMDAsMSwxMjQsCisgICAgMCwxMDYsMiwxMzEsMiwxLDAsMTE2LDAsMTA2LDMsMTI0LDAsMTI0LDEsMTMxLAorICAgIDIsODMsMCw0MSwyLDEyMiw5OCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDExMCw5NywKKyAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsCisgICAgMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwzOCwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMjMsMzMsMTE0LAorICAgIDEyNSw0MSw0LDExNCwxMTgsMCwwLDAsMTE0LDEzMywwLDAsMCwxMTQsMjI5LDAsCisgICAgMCwwLDExNCwxODksMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMTE0LDE5MCwwLDAsMCwxNiw0LDAsMCwxMTUsNiwwLDAsMCwKKyAgICAwLDcsNiwxLDgsMSwxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNzgsNDEsMTIsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwKKyAgICAwLDExNCwxMTAsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgwLDAsMCwwLAorICAgIDExNCwyNDcsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCwKKyAgICAxODQsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxOTAsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDI0NiwwLDAsMCwyNDQsMywwLDAsCisgICAgMTE1LDE2LDAsMCwwLDgsMSw4LDMsMTIsOSw4LDMsOCwzLDgsCisgICAgMyw4LDMsOCwzLDExNCwyNDYsMCwwLDAsOTksMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw2NCwwLDAsMCwxMTUsCisgICAgMTA2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLAorICAgIDEwMSw0LDEwMCwyLDEwMCwzLDEzMiwwLDEzMSwxLDkwLDUsMTAxLDQsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsMTMxLDEsOTAsNiwxMDEsNCwxMDAsNiwxMDAsNywxMzIsMCwKKyAgICAxMzEsMSw5MCw3LDEwMSw0LDEwMCw4LDEwMCw5LDEzMiwwLDEzMSwxLDkwLDgsCisgICAgMTAxLDQsMTAwLDE3LDEwMCwxMSwxMDAsMTIsMTMyLDEsMTMxLDEsOTAsOSwxMDEsNCwKKyAgICAxMDAsMTgsMTAwLDEzLDEwMCwxNCwxMzIsMSwxMzEsMSw5MCwxMCwxMDEsNCwxMDAsMTksCisgICAgMTAwLDE1LDEwMCwxNiwxMzIsMSwxMzEsMSw5MCwxMSwxMDAsMTAsODMsMCw0MSwyMCwKKyAgICAyMTgsMTAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiw2Miw3NywxMDEsCisgICAgMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LAorICAgIDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsNDYsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsNDIsMCwwLDAsMTIwLDM2LDExNiwwLDEwNiwxLDEwNiwyLDEzMSwwLAorICAgIDY4LDAsOTMsMjIsMTI1LDEsMTE2LDMsMTI0LDEsMTAwLDEsMTMxLDIsMTE0LDEyLAorICAgIDEyNCwxLDEwNiw0LDEzMSwwLDEsMCwxMTMsMTIsODcsMCwxMDAsMiw4MywwLAorICAgIDQxLDMsMTIyLDEyNSw2Nyw5NywxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTE4LAorICAgIDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsNDAsNDEsCisgICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTExLDExMCwzMiw5NywxMDgsMTA4LDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCisgICAgMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTYsMTExLDExNCwxMDEsMTAwLAorICAgIDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwzMiw0MCwxMTksMTA0LAorICAgIDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNDEsCisgICAgNDYsMjE4LDE3LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsCisgICAgOTksMTA0LDEwMSwxMTUsNzgsNDEsNSwxMTQsOCwwLDAsMCwyMTgsMTksMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDIxOCw2LDExOCw5NywxMDgsMTE3LDEwMSwxMTUsMTE0LDExMiwwLDAsMCwxMTQsMjQ5LAorICAgIDAsMCwwLDQxLDIsMTE0LDE2OCwwLDAsMCwyMTgsNiwxMDIsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwxMTQsMjQ5LDAsMCwwLDM0LDQsMCwwLDExNSw2LDAsMCwwLDAsCisgICAgNCwxNiwxLDEwLDEsMTIyLDI4LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLAorICAgIDEyLDAsMCwwLDY3LDAsMCwwLDExNSw4NiwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMDAsMSwxMDcsOSwxMTQsMzAsMTE2LDAsMTA2LDEsMTIsMCwxMTQsMzAsMTE2LAorICAgIDIsMTA2LDMsMTAwLDIsMTE2LDQsMTMxLDIsMSwwLDEyMCw1MCwxMTYsMCwxMDYsCisgICAgMSw2OCwwLDkzLDM2LDEyNSwyLDEyMSw4LDEyNCwyLDEyNCwxLDEzMSwxLDgzLAorICAgIDAsNCwwLDExNiw1LDEwNywxMCwxMTQsNzIsMSwwLDEsMCwxLDAsMTE5LAorICAgIDM4LDg5LDAsMTEzLDM4LDg4LDAsMTEzLDM4LDg3LDAsMTAwLDEsODMsMCwxMDAsCisgICAgMSw4MywwLDQxLDMsMTIyLDQ2LDgzLDEwMSw5NywxMTQsOTksMTA0LDMyLDExNSwxMjEsCisgICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsOTcsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzksMTEyLAorICAgIDk3LDExNiwxMDQsMzksNDYsNzgsMTIyLDIzLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAorICAgIDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDQxLAorICAgIDYsMTE0LDgsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNywxMTUsMTE0LDYzLDAsMCwwLDExNCw2NCwwLDAsMCwxMTQsMTIyLDAsMCwKKyAgICAwLDExNCwxMDMsMCwwLDAsNDEsMywxMTQsMTY4LDAsMCwwLDExNCwzNywwLAorICAgIDAsMCw5MCw0LDEwNCwxMTEsMTExLDEwNywxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA0LAorICAgIDExMSwxMTEsMTA3LDExNSw0Miw0LDAsMCwxMTUsMTYsMCwwLDAsMCwzLDE4LAorICAgIDEsMTIsMSwxMiwxLDIsMSw4LDEsMTQsMSwxMiwyLDEyMiwyMiw4MCwKKyAgICA5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMTAyLDAsMCwwLDEyNCwKKyAgICAxLDEwMCwxLDEwNywyLDExNCw0MiwxMjEsMTIsMTE2LDAsMTA2LDEsMTMxLDAsMTI1LAorICAgIDEsODcsMCwxMTAsMjAsNCwwLDExNiwyLDEwNywxMCwxMTQsNDAsMSwwLDEsCisgICAgMCwxLDAsMTAwLDIsODMsMCw4OCwwLDEyMSwxNCwxMTYsMywxMDYsNCwxMjQsCisgICAgMSwyNSwwLDEyNSwyLDg3LDAsMTEwLDQwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LAorICAgIDk2LDEsMCwxLDAsMSwwLDEyNCwwLDEwNiw2LDEyNCwxLDEzMSwxLDEyNSwKKyAgICAyLDEyNCwyLDExNiwzLDEwNiw0LDEyNCwxLDYwLDAsODksMCwxMTAsMiw4OCwKKyAgICAwLDEyNCwyLDgzLDAsNDEsMywxMjIsMjEwLDcxLDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsCiAgICAgMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAogICAgIDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsCi0gICAgMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsCi0gICAgMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLAotICAgIDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA3OCw0MSwyLDExNCwxODIsMCwwLDAsMTE0LDEyOSwwLDAsMCw0MSw0LDExNCwKLSAgICAxNzIsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE2NiwKKyAgICAzMiwzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwKKyAgICAxMTYsMTE0LDEyMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsOTksOTcsOTksMTA0LDEwMSw0NCwzMiwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsOTcsMTEyLDExMiwxMTQsMTExLDExMiwxMTQsMTA1LDk3LDExNiwxMDEsMzIsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMTEwLDEwMCwKKyAgICAzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDEwNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExMCwxMTEsCisgICAgMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCwKKyAgICA5Nyw5OCwxMDgsMTAxLDQ0LDMyLDExNSwxMTYsMTExLDExNCwxMDEsMzIsNzgsMTExLDExMCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDMyLDAsMCwwLAorICAgIDc4LDQxLDcsMTE0LDMsMCwwLDAsMTE0LDQ3LDAsMCwwLDIxOCwxNyw3MCwKKyAgICAxMDUsMTA4LDEwMSw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDgsMCwwLDAsMTE0LDI1MCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKKyAgICAyNTQsMCwwLDAsNDEsMywxMTQsMTY4LDAsMCwwLDExNCwzNywwLDAsMCwKKyAgICAxMTQsMjUyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwyMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNTUsNCwwLDAsMTE1LDIyLAorICAgIDAsMCwwLDAsOCw4LDEsMiwxLDEyLDEsMTQsMyw2LDEsMiwKKyAgICAxLDE0LDEsMTQsMSwxMCwxLDE2LDEsMTIyLDMxLDgwLDk3LDExNiwxMDQsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMywwLDAsMCwwLAorICAgIDAsMCwwLDYsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgODIsMCwwLDAsMTE2LDAsMTI0LDIsMTAwLDEsMTMxLDIsMTE0LDI2LDEyNCwyLAorICAgIDEwNiwxLDEyNCwxLDEzMSwxLDkyLDIsMTI1LDMsMTI1LDQsMTEwLDE0LDEyNCwyLAorICAgIDEwNiwyLDEyNCwxLDEzMSwxLDEyNSwzLDEwMywwLDEyNSw0LDEyNCwzLDEwMCwwLAorICAgIDEwNyw5LDExNCw2MCwxMTYsMywxMDYsNCwxMjQsMSwxMjQsMywxMzEsMiw4MywwLAorICAgIDExNiwzLDEwNiw1LDEyNCwxLDEwMCwwLDEzMSwyLDEyNSw1LDEyNCw0LDEyNCw1LAorICAgIDk1LDYsMTI0LDUsODMsMCw0MSwyLDc4LDExNCwxMjEsMCwwLDAsNDEsNywKKyAgICAxMTQsMTEyLDAsMCwwLDExNCwxMjEsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsCisgICAgMTE4LDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE1OCwwLDAsMCwxMTQsMTU0LAorICAgIDAsMCwwLDQxLDYsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwKKyAgICAyNTIsMCwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsMTI1LDAsMCwwLDExNCwxNjIsCiAgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDE4MywwLDAsMCwxMzksNCwwLDAsMTE1LDgsMCwwLDAsCi0gICAgMCw4LDE4LDEsMTIsMSw0LDEsMTIyLDIyLDgwLDk3LDExNiwxMDQsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDEsMTIsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLAotICAgIDAsMTE0LDExNiwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwyNTEsMCwwLDAsCi0gICAgMTE0LDAsMSwwLDAsMTE0LDIsMSwwLDAsMTE0LDMsMSwwLDAsMTE0LAotICAgIDYsMSwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyNTAsMCwwLDAsMTksNCwwLDAsMTE1LDIyLDAsMCwwLAotICAgIDEyLDIsNiwyLDE4LDgsMTgsMTcsMTgsMjIsMTgsMTUsMywxLDE4LDMxLAotICAgIDMsMSwyMSwyMSwzLDEsMTE0LDI1MCwwLDAsMCw5OSwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLAotICAgIDExNSwxMzMsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsCi0gICAgNiwwLDkwLDcsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw4LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLDAsOTAsMTAsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsMTAwLDE1LDAsMTAwLDE2LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLDE3LDAsMTAwLDE4LDAsCi0gICAgMTMyLDAsMCw5MCwxNCwwLDEwMCwxMCwwLDgzLDQxLDE5LDIxOCwxMCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LAotICAgIDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwKLSAgICAxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLAotICAgIDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwKLSAgICAxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsCi0gICAgMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsCi0gICAgMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsCi0gICAgMCwwLDAsNSwwLDAsMCw3LDAsMCwwLDExNSwxMjIsMCwwLDAsCi0gICAgMTAzLDAsMCwxMjUsMywwLDEyMCw1MiwwLDEyNCwyLDAsNjgsOTMsNDQsMCwKLSAgICA5MiwyLDAsMTM3LDAsMCwxMjUsNCwwLDEyNCwzLDAsMTA2LDAsMCwxMzUsCi0gICAgMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI0LDQsCi0gICAgMCw2OCwxMzEsMSwwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMjQsMywwLAotICAgIDEyNCwwLDAsOTUsMSwwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsCi0gICAgMCwwLDk1LDIsMCwxMDAsNiwwLDEyNCwwLDAsOTUsMywwLDExNiw0LAotICAgIDAsMTMxLDAsMCwxMjQsMCwwLDk1LDUsMCwxMTYsNCwwLDEzMSwwLDAsCi0gICAgMTI0LDAsMCw5NSw2LDAsMTAwLDUsMCw4Myw0MSw3LDEyMiwxNTQsNzMsMTEwLAotICAgIDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LAotICAgIDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwKLSAgICAxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKLSAgICAzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwKLSAgICAxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjcsMCwKLSAgICAwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwKLSAgICAwLDEwMiwyLDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsMjI2LDAsMCwKLSAgICAwLDQxLDEsMTE0LDEyOSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMjI4LDAsMCwwLDE2OCw0LDAsMCwxMTUsMiwwLDAsMCwKLSAgICA2LDAsMTIyLDM4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsCi0gICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKLSAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAzMSwwLDAsMCw3OCwxMTQsODksMCwwLDAsNDEsNywxMTQsMTUxLDAsMCwKLSAgICAwLDIxOCw4LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwzNywwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsCi0gICAgMTAxLDExNiwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsCi0gICAgMTksOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSw0MSw1LDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDIxOCwxNCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LAotICAgIDkwLDcsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDE2OCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCw0MSwxLDExNCwxMjksMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDE4NiwwLDAsMCwxNjIsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNCw2LAotICAgIDEsMTksMSwzNiwxLDksMiwxNSwxLDksMSwxMiwxLDEyMiwxOSw3MCwKLSAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMywwLDEyNCwKLSAgICAwLDAsOTUsMCwwLDEwMCwyLDAsODMsNDEsNCwxMjIsMzEsNzMsMTEwLDExOCwKLSAgICA5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA5LDExNiwxMDUsMTA5LDEwMSw0NiwxMTQsMzEsMCwwLAotICAgIDAsNzgsMTE0LDg5LDAsMCwwLDQxLDEsMTE0LDksMSwwLDAsNDEsMSwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDExNCwyNTEsMCwwLDAsMTc2LDQsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMiwxMjIsMjgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU5LDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMzcsMCwxMDAsMSwwLDEwMywwLDAsMTAyLDIsMCwKLSAgICA4MywxMjQsMiwwLDEwNiwxLDAsMTI0LDIsMCwxMDYsMiwwLDExMiw1NSwwLAotICAgIDEwMywwLDAsMTAyLDIsMCw4Myw0MSwyLDEyMiwxOTcsODQsMTE0LDEyMSwzMiwxMTYsCi0gICAgMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKLSAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKLSAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwKLSAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsCi0gICAgMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDc4LDQxLDMsMTE0LDE4MiwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwKLSAgICAwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDE2NiwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMTI2LDAsMCwwLDE4Miw0LDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDcsMTUsMSwxMiwxLDEwLDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTksNiwwLDAsMCwwLDAsMCwwLDcsMCwwLDAsNywwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNDAsMCwwLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNiwwLDExNiwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTI0LDYsMCwxMDAsMiwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMiw4Myw0MSwzLDc4LDExNCwxMjksMCwwLDAsMTE0LDE1OCwwLDAsMCw0MSwKLSAgICAxLDExNCwxNjksMCwwLDAsNDEsNywxMTQsMTEwLDAsMCwwLDExNCwxNjcsMCwKLSAgICAwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsNCwxMTUsMTA5LAotICAgIDExNSwxMDgsMTE0LDE4MSwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCw2LDEsMCwwLAotICAgIDE5NCw0LDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyMiwKLSAgICAyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDMsMCwwLDAsMCwwLDAsMCwxNCwKLSAgICAwLDAsMCwxNSwwLDAsMCw2NywwLDAsMCwxMTUsMjM0LDEsMCwwLAotICAgIDEwMCwxLDAsMTI1LDMsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEwMCwzLDAsMjUsMTI1LDQsMCwxMjEsMzQsMCwxMTYsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMTIsNDksMCwxMTYsMywwLDEwNiw0LDAsMTMxLDAsCi0gICAgMCwxMzEsMSwwLDEwNiw1LDAsMTI1LDUsMCw4NywxMTAsMjQsMCw0LDExNiwKLSAgICA2LDAsMTA3LDEwLDAsMTE0LDg1LDAsMSwxLDEsMTAwLDEwLDAsMTI1LDUsCi0gICAgMCw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsMTI0LDAsMCwxMDYsNywwLDEwNywKLSAgICAzLDAsMTE0LDEyMCwwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMCwwLDEsMTI0LAotICAgIDUsMCwxMjQsMCwwLDk1LDcsMCwxMTYsOSwwLDEzMSwwLDAsMTE0LDE1MywKLSAgICAwLDEyNCwwLDAsMTA2LDEwLDAsMTI1LDYsMCwxMjQsNCwwLDEwNiwxMSwwLAotICAgIDEzMSwwLDAsMTI1LDcsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNSwKLSAgICA2LDAsMTI0LDQsMCwxMjUsNywwLDEyNCw3LDAsMTI0LDYsMCwxMDcsNiwKLSAgICAwLDExNCw0NSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLAotICAgIDEzMSwyLDAsMTI1LDgsMCwxMjAsMTAwLDAsMTI0LDAsMCwxMDYsMTQsMCw2OCwKLSAgICA5Myw3NywwLDkyLDIsMCwxMjUsOSwwLDEyNSwxMCwwLDEwMCw1LDAsMTI0LAotICAgIDksMCwyMywxMjUsMTEsMCwxMTYsMTMsMCwxMjQsOCwwLDEyNCwxMSwwLDEzMSwKLSAgICAyLDAsMTI1LDEyLDAsMTE2LDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMjA4LAotICAgIDAsMTI0LDAsMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLAotICAgIDEyNCw4LDAsMTAzLDEsMCwxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDIwOCwwLAotICAgIDg3LDExNiwxNywwLDEyNCw4LDAsMTMxLDEsMCwxMjUsMywwLDEyMCwxMjMsMCwKLSAgICAxMjQsMCwwLDEwNiwxNCwwLDY4LDkzLDExMiwwLDkyLDIsMCwxMjUsOSwwLAotICAgIDEyNSwxMCwwLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLDEyNCwKLSAgICA5LDAsMjMsMTMxLDIsMCwxMjUsMTIsMCwxMTYsMTgsMCwxMDAsNiwwLDEwNiwKLSAgICAxOSwwLDEyNCwxMiwwLDEzMSwxLDAsMTAwLDcsMCwxMDAsMywwLDEzMSwxLAotICAgIDEsMSwxMjQsNywwLDEyNCw5LDAsMjMsMTI0LDYsMCwxMDcsNiwwLDExNCwKLSAgICA1NSwxLDExNiwxNSwwLDEyNCwxMiwwLDEzMSwxLDAsMTE0LDU1LDEsMTI0LDAsCi0gICAgMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEwMCw4LDAsCi0gICAgMTI0LDIsMCwxMzEsNSwwLDgzLDExMyw1NSwxLDg3LDEyNCwzLDAsMTE0LDIzMCwKLSAgICAxLDExNiwxOCwwLDEwMCw5LDAsMTA2LDE5LDAsMTI0LDgsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMTYsMjAsMCwxMDYsMjEsMCwxMjQsMSwwLDEwMCw4LDAsCi0gICAgMTMxLDIsMCwxMjUsMTMsMCwxMjQsOCwwLDEwMywxLDAsMTI0LDEzLDAsOTUsCi0gICAgMjIsMCwxMjQsMTMsMCw4MywxMDAsOCwwLDgzLDQxLDExLDEyMiwxMDIsODQsMTE0LAotICAgIDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwKLSAgICAxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDgyLDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAzLDMyLDExNSwxMTIsMTAxLDk5LDQ0LDMyLDExMSwKLSAgICAxMTQsMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDEwMiwzMiwxMTAsMTExLDExNiwzMiwxMDIsMTExLAotICAgIDExNywxMTAsMTAwLDQ2LDcwLDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LAotICAgIDMxLDAsMCwwLDExNCwxODYsMCwwLDAsMTIyLDksMTE2LDExNCwxMjEsMTA1LDExMCwKLSAgICAxMDMsMzIsMTIzLDEyNSwxMTQsMTAwLDAsMCwwLDc4LDEyMiwyNSwxMTIsMTExLDExNSwxMTUsCi0gICAgMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsODksMCwwLDAsNDEsMjMsMTE0LDM0LDAsMCwKLSAgICAwLDExNCw0MSwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsCi0gICAgMTE0LDQ3LDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCwKLSAgICA5LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMTQsNywwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LDkwLDAsMCwwLAotICAgIDExNCwxMSwxLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDgsMSwwLDAsMTE0LAotICAgIDQ2LDAsMCwwLDExNCw2LDEsMCwwLDExNCw0OCwwLDAsMCwxMTQsMTA3LAotICAgIDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxNjIsMCwKLSAgICAwLDAsMTE0LDE1OCwwLDAsMCw0MSwxNCwxMTQsMTEwLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDE4MSwwLDAsMCw5MCwxMiwxMDUsMTE1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDkwLDExLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxMzUsMCwwLDAsOTAsNSw5OSw5Nyw5OSwxMDQsMTAxLDkwLAotICAgIDEyLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsOSw5OCwKLSAgICA5NywxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCwyMjYsMCwwLDAsMTE0LDE2NywwLAotICAgIDAsMCw5MCwxMywxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCi0gICAgMTAxLDkwLDksMTAyLDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjYsMCwwLAorICAgIDAsMCwyMTgsMTYsOTUsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LAorICAgIDExNSwxMTIsMTAxLDk5LDc3LDQsMCwwLDExNSwxOCwwLDAsMCwwLDQsMTAsCisgICAgMSwxNiwyLDEwLDEsNCwxLDgsMSwxMiwxLDEyLDEsNiwxLDEyMiwKKyAgICAyNyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTA4LDEwMSwxMDMsCisgICAgOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDQsMCwKKyAgICAwLDAsMCwwLDAsMCw5LDAsMCwwLDUsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDE3MCwwLDAsMCwxMDMsMCwxMjUsNCwxMjAsMTYwLDEyNCwyLDY4LAorICAgIDAsOTMsMTMwLDEyNSw1LDExNiwwLDEyNCw1LDExNiwxLDExNiwyLDEwMiwyLDEzMSwKKyAgICAyLDExNSwzMCwxMTMsMTAsMTI0LDAsMTA2LDMsMTI0LDUsMTMxLDEsMTI1LDYsMTI0LAorICAgIDYsMTAwLDEsMTA3LDksMTE0LDEwLDExNiw0LDEyNCw2LDEwMCwyLDEzMSwyLDExNCwKKyAgICA3MiwxMjQsNiwxMDYsNSwxMjQsMSwxMjQsMywxMzEsMiwxMjUsNywxMTAsMTIsMTI0LAorICAgIDAsMTA2LDYsMTI0LDEsMTI0LDYsMTMxLDIsMTI1LDcsMTI0LDcsMTAwLDEsMTA3LAorICAgIDgsMTE0LDk0LDExMywxMCwxMjQsNywxMDYsNywxMDAsMSwxMDcsOSwxMTQsMTA4LDEyNCwKKyAgICA3LDgzLDAsMTI0LDcsMTA2LDgsMTI1LDgsMTI0LDgsMTAwLDEsMTA3LDgsMTE0LAorICAgIDEzMCwxMTYsOSwxMDAsMywxMzEsMSwxMzAsMSwxMjQsNCwxMDYsMTAsMTI0LDgsMTMxLAorICAgIDEsMSwwLDExMywxMCw4NywwLDExNiwxMSwxMDYsMTIsMTI0LDEsMTAwLDEsMTMxLAorICAgIDIsMTI1LDcsMTI0LDQsMTI0LDcsOTUsOCwxMjQsNyw4MywwLDEwMCwxLDgzLAorICAgIDAsNDEsNCwxMjIsNjMsNzAsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwzMiwxMTEsMTE0LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDk1LDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTA1LDExNSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsNDYsNzgsMTE0LDE3OCwwLDAsMCwxMjIsMTksMTE1LDExMiwxMDEsOTksCisgICAgMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDEsCisgICAgMTMsMTE0LDE0MSwwLDAsMCwxMTQsNzMsMCwwLDAsMjE4LDUsOTgsMTIxLDExNiwKKyAgICAxMDEsMTE1LDExNCwwLDEsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDE3OCwwLDAsCisgICAgMCwxMTQsMSwxLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsCisgICAgMTE0LDEwMywwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwxMTgsMCwwLDAsMTE0LAorICAgIDE1OCwwLDAsMCw0MSw5LDExNCwxNjgsMCwwLDAsMTE0LDEyMywwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDE3NywwLDAsMCwyMTgsMTQsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsOTAsNSwxMDEsMTEwLDExNiwxMTQsCisgICAgMTIxLDExNCwyNTIsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMTI1LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKKyAgICA5LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDkyLDQsMCwwLDExNSw0MCwKKyAgICAwLDAsMCwwLDUsNCwxLDEwLDEsMTQsMSwyLDEsMTAsMSw4LAorICAgIDEsMTAsMSwxNCwyLDEyLDEsOCwxLDIsMSwxMCwxLDQsMSw2LAorICAgIDEsOCwxLDgsNSwxNCwyLDEyLDEsNiwxLDEyMiwyMCw4MCw5NywxMTYsCisgICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsCisgICAgOTksOTksNCwwLDAsMCwwLDAsMCwwLDYsMCwwLDAsNCwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTAwLDAsMCwwLDEyNCwyLDEwMCwxLDEwNywKKyAgICA4LDExNCwxNCwxMTYsMCwxMDYsMSwxMjUsMiwxMjQsMCwxMDYsMiwxMjQsMSwxMjQsCisgICAgMiwxMjQsMywxMzEsMywxMjUsNCwxMjQsNCwxMDAsMSwxMDcsOCwxMTQsNDAsMTAwLAorICAgIDEsODMsMCwxMjQsNCwxMDYsMywxMDAsMSwxMDcsOCwxMTQsOTIsMTI0LDQsMTA2LAorICAgIDQsMTI1LDUsMTI0LDUsMTE0LDg2LDEwMCwyLDEyNCw0LDk1LDUsMTE2LDYsMTI0LAorICAgIDEsMTI0LDUsMTI0LDAsMTA2LDIsMTMxLDMsMTI0LDQsOTUsNCwxMjQsNCw4MywKKyAgICAwLDEwMCwxLDgzLDAsMTEwLDQsMTI0LDQsODMsMCwxMDAsMSw4MywwLDQxLAorICAgIDMsMTIyLDE0MSw4NCwxMTQsMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LAorICAgIDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwMiwxMTEsMTE0LDMyLDM5LDEwMiwxMTcsMTA4LDEwOCwxMTAsCisgICAgOTcsMTA5LDEwMSwzOSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAorICAgIDMyLDExMSwxMTQsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsCisgICAgMTA1LDExNSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTUsCisgICAgMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgNzgsOTAsOSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw3LDExNCw4LAorICAgIDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwxLDAsMCwxMTQsMTI0LDAsCisgICAgMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMjI3LDAsMCwKKyAgICAwLDQxLDYsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLAorICAgIDAsMCwxMTQsMTc3LDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDMsMSwwLAogICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDE4MiwwLDAsMCwxOTksNCwwLDAsMTE1LDY4LDAsMCwwLDAsMywKLSAgICA2LDEsMTksMSwzLDEsMzQsMSwxMywxLDExLDEsMTUsMSwxMCwxLAotICAgIDksMiw5LDEsOSwxLDE1LDIsOSwxLDYsMiwxMiwxLDE4LDEsCi0gICAgMjIsMSwxMCwxLDE1LDEsMTIsMSwzMiw0LDEyLDIsMjIsMSwyMiwxLAotICAgIDI1LDEsMTYsMSwxMiwxLDI5LDEsNiwxLDE5LDEsMTgsMSwxMiwxLAotICAgIDQsMSwxMjIsMjAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDksMCwwLDAsMTMsMCwwLDAsNjcsMCwwLDAsMTE1LDExLDEsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjUsMSwwLDEyMSwzMSwwLDExNiwxLAotICAgIDAsMTA2LDIsMCwxMjQsMSwwLDExMiwzMywwLDExNiwxLDAsMTA2LDMsMCwKLSAgICAxMzEsMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMTAsMzMsMCw0LDExNiw0LAotICAgIDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwzLDAsMTA3LDEwLDAsMTE0LDc1LDAsCi0gICAgMSwxLDEsMTAzLDAsMCwxMjUsMiwwLDg5LDExMCwxLDAsODgsMTE2LDcsCi0gICAgMCwxMDYsOCwwLDEwNiw5LDAsMTAwLDEsMCwxMzEsMSwwLDExNSwxMTIsMCwKLSAgICAxMTYsMTAsMCwxMjQsMiwwLDEzMSwxLDAsMTI0LDAsMCw5NSwxMSwwLDExMCwKLSAgICAxMTEsMCwxMTYsMTAsMCwxMzEsMCwwLDEyNSwzLDAsMTIwLDkwLDAsMTI0LDIsCi0gICAgMCw2OCw5Myw4MiwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsMTIsMCwxMDAsMiwKLSAgICAwLDEzMSwxLDAsOTIsMywwLDEyNSw1LDAsMTI1LDYsMCwxMjUsNywwLAotICAgIDEyNCw2LDAsMTE0LDE5MSwwLDEwMCwzLDAsMTA2LDEzLDAsMTI0LDUsMCwxMjQsCi0gICAgNywwLDEwNiwxNCwwLDEzMSwwLDAsMTMxLDIsMCwxMjUsOCwwLDExMCw2LAotICAgIDAsMTI0LDUsMCwxMjUsOCwwLDEyNCwzLDAsMTA2LDE1LDAsMTI0LDgsMCwKLSAgICAxMzEsMSwwLDEsMTEzLDEyOCwwLDg3LDEyNCwzLDAsMTI0LDAsMCw5NSwxMSwKLSAgICAwLDExNiw3LDAsMTA2LDgsMCwxMDYsOSwwLDExNiwxNiwwLDEzMSwxLDAsCi0gICAgMTE0LDcsMSwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwxMjQsMiwwLDY4LAotICAgIDEzMSwxLDAsMTI0LDAsMCw5NSwxNywwLDEwMCw2LDAsODMsNDEsNywxMjIsCi0gICAgNjgsNzAsMTA1LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksMTA0LDEwMSwzMiwKLSAgICAxMTEsMTAyLDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAotICAgIDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LAotICAgIDExNiwxMTEsMTE0LDEyMSw0NiwxMTQsMCwwLDAsMCwxMTQsNjAsMCwwLDAsMTIyLAotICAgIDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLDAsMCwyLAotICAgIDAsMCwwLDMsMCwwLDAsODMsMCwwLDAsMTE1LDI4LDAsMCwwLAotICAgIDEwNCwwLDAsMTI0LDAsMCw5MywxOCwwLDEyNSwxLDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDEzMSwwLDAsMTQ2LDIsMCwxMTMsNiwwLDgzLDExNCw0LDAsMCwKLSAgICAwLDQxLDEsMTE0LDkwLDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDkwLAotICAgIDIsMTAyLDExMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyNTAsOSw2MCwxMTUsMTAxLDExNiw5OSwxMTEsMTA5LDExMiw2MiwxNyw1LDAsCi0gICAgMCwxMTUsMiwwLDAsMCw5LDAsMTIyLDQxLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDExNSwxMDEsMTE2LDk5LDExMSwKLSAgICAxMDksMTEyLDYyLDc4LDQxLDE4LDExNCwzNywwLDAsMCwxMTQsMywwLDAsMCwKLSAgICA5MCw3LDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LDExNCwxMTQsNDcsMCwwLDAsMTE0LDEsCi0gICAgMSwwLDAsMjE4LDE1LDgwLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwyMTgsMTgsNzgsMTExLDExNiw2NSw2OCwxMDUsMTE0LDEwMSw5OSwxMTYsCi0gICAgMTExLDExNCwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw4LDAsMCwwLDExNCw5LDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMSwwLDAsMTE0LDExLDEsMCwKLSAgICAwLDExNCw4NSwwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDkwLDAsMCwwLAotICAgIDIxOCwzLDk3LDEwMCwxMDAsMTE0LDExLDAsMCwwLDExNCwxMiwxLDAsMCw0MSwKLSAgICA5LDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDgsOTksMTExLDExMCwKLSAgICAxMTYsMTAxLDExMCwxMTYsMTE1LDkwLDIxLDEwOCwxMTEsMTE5LDEwMSwxMTQsOTUsMTE1LDExNywxMDIsCi0gICAgMTAyLDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNCwyNDYsMCwwLAotICAgIDAsMTE0LDEwOCwwLDAsMCwxMTQsMjM4LDAsMCwwLDExNCwyMjYsMCwwLDAsCi0gICAgOTAsOCwxMTAsMTAxLDExOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTQsMSwwLDAsMjQ0LDQsCi0gICAgMCwwLDExNSwzNCwwLDAsMCwwLDIsOSwxLDMsMSwzMSwxLDIyLAotICAgIDMsMTEsMywxOCwxLDE4LDcsOSwxLDEzLDEsMjQsMSw2LDEsMjcsCi0gICAgMiw2LDEsMTcsMSw5LDEsMTgsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsCi0gICAgMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCi0gICAgMCwwLDcsMCwwLDAsMTE1LDI1LDAsMCwwLDEzNSwwLDAsMTM1LDEsCi0gICAgMCwxMDIsMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwyLDAsCi0gICAgMTI0LDIsMCw4Myw0MSwzLDk3LDIwLDEsMCwwLDY1LDMyLDk5LDEwOCw5NywKLSAgICAxMTUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwKLSAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwKLSAgICAxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LAotICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDMyLDk3LDExMCwzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwzMiwKLSAgICAxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMDAsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMDgsMTExLDExNSwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw3MywxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsOTksOTcsMTA4LAotICAgIDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LAotICAgIDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDAsMTA1LDExNCwxMDEsCi0gICAgOTksMTE2LDExMSwxMTQsMTIxLDQ0LDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDk3LAotICAgIDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OSwKLSAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLAotICAgIDE5LDAsMCwwLDExNSw0MywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMTUsMzAsMCwxMTYsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLDAsMTM2LDEsMCwKLSAgICAxNDAsMSwwLDgzLDQxLDMsMTIyLDQ1LDgwLDk3LDExNiwxMDQsMzIsMTA0LDExMSwxMTEsCi0gICAgMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCi0gICAgMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTIyLDMwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsMTA1LDExNCwxMDEsCi0gICAgOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsCi0gICAgMTExLDExNCwxMTYsMTAxLDEwMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsNDgsMCwwLAotICAgIDAsMTE0LDEwOSwwLDAsMCw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwKLSAgICAxNzIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDIxOCwyNCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLAotICAgIDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwyOSw1LDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDIsMTIsMSwxOCwxLDEyMiw1NCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCi0gICAgMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsNDEsMywxMTQsMTcyLDAsMCwwLAotICAgIDExNCwxMywxLDAsMCwxMTQsMTksMSwwLDAsMTE0LDQsMCwwLDAsNDEsCi0gICAgMiwxMTQsMTcyLDAsMCwwLDExNCwxMywxLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsOSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTksNSwwLDAsMTE1LAotICAgIDQsMCwwLDAsMCwxMCwyMSw2LDEyMiwyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5OSwxLAorICAgIDExNCwxNzgsMCwwLDAsMTI0LDQsMCwwLDExNSwyNiwwLDAsMCwwLDYsCisgICAgOCwxLDYsMSwxNCwxLDgsMSw0LDEsMTAsMSw2LDEsNCwzLAorICAgIDYsMSwxNiwxLDQsMiw2LDIsMTIyLDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywKKyAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMzAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsCisgICAgMTMxLDIsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDgsMTE0LDI0LDEwMCwxLDgzLDAsCisgICAgMTI0LDMsMTA2LDEsODMsMCw0MSwyLDEyMiwxNzAsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsCisgICAgNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwKKyAgICA5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LAorICAgIDMyLDMyLDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLAorICAgIDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE3OCwwLDAsMCwxMTQsMTI0LDAsMCwKKyAgICAwLDQxLDQsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLAorICAgIDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwxNzksMCwwLDAsMTQ4LDQsMCwwLDExNSwKKyAgICA4LDAsMCwwLDAsOCwxMiwxLDgsMSw0LDEsMTIyLDIyLDgwLDk3LAorICAgIDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDEsMSw3OCw0MSwyLDc4LDc4LDQxLDEsNzgsNDEsMTIsCisgICAgMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LAorICAgIDExMSwwLDAsMCwxMTQsMTgwLDAsMCwwLDExNCwyNDksMCwwLDAsMTE0LDI1NCwKKyAgICAwLDAsMCwxMTQsMCwxLDAsMCwxMTQsMSwxLDAsMCwxMTQsNCwxLAorICAgIDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMTE0LDI0OCwwLDAsMCwzMCw0LDAsMCwxMTUsMjIsMCwwLDAsOCwyLAorICAgIDQsMiwxMiw4LDEyLDEzLDEyLDIyLDEyLDE1LDIsMSwxMiwzMSwyLDEsCisgICAgMTIsMjMsMiwxLDExNCwyNDgsMCwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsOTAsCisgICAgMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLAorICAgIDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMSwKKyAgICA2LDkwLDcsMTAwLDYsMTAwLDcsMTMyLDAsOTAsOCwxMDAsOCwxMDAsOSwxMzIsCisgICAgMCw5MCw5LDEwMCwxOSwxMDAsMTEsMTAwLDEyLDEzMiwxLDkwLDEwLDEwMCwxMywxMDAsCisgICAgMTQsMTMyLDAsOTAsMTEsMTAxLDEyLDEwMCwxNSwxMDAsMTYsMTMyLDAsMTMxLDEsOTAsCisgICAgMTMsMTAwLDE3LDEwMCwxOCwxMzIsMCw5MCwxNCwxMDAsMTAsODMsMCw0MSwyMCwyMTgsCisgICAgMTAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwxMjIsMTcyLDcwLDEwNSwxMDgsCisgICAgMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDczLDExMCwxMTYsMTAxLDExNCw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsCisgICAgMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsCisgICAgMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsOTcsMTE0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTIsMTAxLDExNCwxMDIsMTExLDExNCwxMDksOTcsMTEwLDk5LAorICAgIDEwMSw0NCwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMDIsCisgICAgMTE0LDEwMSwxMTUsMTA0LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTA1LDExMCwxMDMsCisgICAgMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSwKKyAgICAxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCw1LDAsMCwwLDUsMCwwLDAsNywwLDAsMCwxMTUsODgsCisgICAgMCwwLDAsMTAzLDAsMTI1LDMsMTIwLDQwLDEyNCwyLDY4LDAsOTMsMzIsOTIsCisgICAgMiwxMzcsMCwxMjUsNCwxMjQsMywxMDYsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsCisgICAgMiwxMzIsOCwxMjQsNCw2OCwwLDEzMSwxLDEzMSwxLDEsMCwxMTMsMTAsODcsCisgICAgMCwxMjQsMywxMjQsMCw5NSwxLDEyNCwxLDExMiw1OCwxMDAsMywxMjQsMCw5NSwKKyAgICAyLDEwMCw2LDEyNCwwLDk1LDMsMTE2LDQsMTMxLDAsMTI0LDAsOTUsNSwxMTYsCisgICAgNCwxMzEsMCwxMjQsMCw5NSw2LDEwMCw1LDgzLDAsNDEsNywxMjIsMTU0LDczLAorICAgIDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE1LDEwMSw5NywxMTQsOTksCisgICAgMTA0LDMyLDExMSwxMTAsMzIsOTcsMTEwLDEwMCwzMiw5NywzMiwxMTgsOTcsMTE0LDEwNSw5NywKKyAgICA5OCwxMDgsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTExLDEwMiwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw1MCw0NSwxMTYsMTE3LDExMiwxMDgsMTAxLDExNSwzMiw5OSwKKyAgICAxMTEsMTEwLDExNiw5NywxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxMDEsCisgICAgOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsNTEsMCwwLDAsMTE1LDIyLAorICAgIDAsMCwwLDEyNCwwLDkzLDE0LDEyNSwxLDEyNCwxLDEzNiwwLDEwMiwyLDg2LAorICAgIDAsMSwwLDExMywyLDEwMCwwLDgzLDAsNDEsMSw3OCwxMTQsNCwwLDAsCisgICAgMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsMjIyLDAsMCwwLDQxLDEsMTE0LAorICAgIDEyNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI0LAorICAgIDAsMCwwLDE3Nyw0LDAsMCwxMTUsMiwwLDAsMCw0LDAsMTIyLDM4LAorICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLAorICAgIDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYxLDAsMCwwLDExNCwzMSwwLDAsMCwKKyAgICA3OCwxMTQsOTEsMCwwLDAsNDEsNywxMTQsMTQ3LDAsMCwwLDIxOCw4LDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwzNywwLDAsMCwyMTgsMTEsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsMTAxLDExNiwyMTgsMTEsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsMTksOTUsMTE0LDEwMSwKKyAgICAxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwKKyAgICA0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLDIxOCwxNCwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDcsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTUsMTE0LDE2NCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwKKyAgICAxLDExNCwxMjQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwKKyAgICAxNzEsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNCw0LDEsMTQsMSwyOCwKKyAgICAxLDYsMiwxMCwxLDYsMSw4LDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsCiAgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwxNiw3MCwxMDUsMTA4LAotICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LAotICAgIDQ5LDAsMCwwLDExNCwzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsCisgICAgMCwwLDAsMTE1LDEwLDAsMCwwLDEwMCwzLDEyNCwwLDk1LDAsMTAwLDIsCisgICAgODMsMCw0MSw0LDEyMiwzMSw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDksCisgICAgMTE2LDEwNSwxMDksMTAxLDQ2LDExNCwzMSwwLDAsMCw3OCwxMTQsOTEsMCwwLDAsCisgICAgNDEsMSwxMTQsNywxLDAsMCw0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI0OSwwLAorICAgIDAsMCwxODUsNCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyOCw3MCwKKyAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsCisgICAgMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksMTA0LDEwMSwxMTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNDIsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTMxLDEsMTI1LDIsMTI0LAorICAgIDIsMTAwLDEsMTA3LDgsMTE0LDI2LDEwMCwxLDEwMywwLDEwMiwyLDgzLDAsMTI0LAorICAgIDIsMTA2LDEsMTI0LDIsMTA2LDIsMTEyLDM4LDEwMywwLDEwMiwyLDgzLDAsNDEsCisgICAgMiwxMjIsMTk3LDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ0LDMyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDMyLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDYsMzIsODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwxMTUsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMDgsMTA1LAorICAgIDExNSwxMTYsNDUsMTExLDEwMiw0NSwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKKyAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsCisgICAgMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwzLDExNCwxNzgsMCwwLDAsCisgICAgMTE0LDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMTIzLDAsMCwwLDExNCwxNjIsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDEyMSwwLDAsMCwxOTEsCisgICAgNCwwLDAsMTE1LDgsMCwwLDAsMCw3LDEwLDEsOCwxLDgsMSwKKyAgICAxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5OSw2LDAsMCwwLDAsMCwwLAorICAgIDAsNywwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLAorICAgIDAsMCwxMjQsMSwxMjQsMiwxMjQsMywxMzEsMiwxMjUsNiwxMTYsMCwxMjQsMiwKKyAgICAxMjQsMywxMjQsNiwxMjQsNCwxMDAsMSwxNDEsNCw4MywwLDQxLDIsNzgsNDEsCisgICAgMiwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsNDEsMSwxMTQsMTY1LDAsCisgICAgMCwwLDQxLDcsMTE0LDEwNCwwLDAsMCwxMTQsMTYzLDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDQsMTE1LDEwOSwxMTUsMTA4LDExNCwxNzcsCisgICAgMCwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsNCwxLDAsMCwyMDMsNCwwLDAsCisgICAgMTE1LDYsMCwwLDAsMCwxLDEwLDEsOCwxLDEyMiwyMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLAorICAgIDk5LDc4LDk5LDMsMCwwLDAsMCwwLDAsMCwxNCwwLDAsMCwxNSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsOTgsMSwwLDAsMTAwLDEsMTI1LDMsCisgICAgMTI0LDEsMTA2LDAsMTAwLDIsMTMxLDEsMTAwLDMsMjUsMCwxMjUsNCwxMjEsMjQsCisgICAgMTE2LDEsMTI0LDAsMTA2LDIsMTEyLDM0LDExNiwzLDEwNiw0LDEzMSwwLDEzMSwxLAorICAgIDEwNiw1LDEyNSw1LDg3LDAsMTEwLDI0LDQsMCwxMTYsNiwxMDcsMTAsMTE0LDY2LAorICAgIDEsMCwxLDAsMSwwLDEwMCwxMCwxMjUsNSw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDUsMTI0LDAsMTA2LDcsMTA3LDMsMTE0LDkyLDEyNCwwLDEwNiw4LDEzMSwwLAorICAgIDEsMCwxMjQsNSwxMjQsMCw5NSw3LDExNiw5LDEzMSwwLDExNCwxMTQsMTI0LDAsCisgICAgMTA2LDEwLDEyNSw2LDEyNCw0LDEwNiwxMSwxMzEsMCwxMjUsNywxMTAsMTAsMTI0LDAsCisgICAgMTA2LDEyLDEyNSw2LDEyNCw0LDEyNSw3LDEyNCw3LDEyNCw2LDEwNyw2LDExNCwyMTgsCisgICAgMTE2LDEzLDEyNCwwLDEwNiwyLDEyNCw0LDEzMSwyLDEyNSw4LDEyMCw3MiwxMjQsMCwKKyAgICAxMDYsMTQsNjgsMCw5Myw1NCw5MiwyLDEyNSw5LDEyNSwxMCwxMDAsNSwxMjQsOSwKKyAgICAyMywwLDEyNSwxMSwxMTYsMTMsMTI0LDgsMTI0LDExLDEzMSwyLDEyNSwxMiwxMTYsMTUsCisgICAgMTI0LDEyLDEzMSwxLDExNCwxNTIsMTI0LDAsMTA2LDE2LDEyNCwxMCwxMjQsMSwxMjQsMTIsCisgICAgMTI0LDgsMTAzLDEsMTI0LDIsMTMxLDUsODMsMCwxMTMsMTUyLDg3LDAsMTE2LDE3LAorICAgIDEyNCw4LDEzMSwxLDEyNSwzLDEyMCw4OCwxMjQsMCwxMDYsMTQsNjgsMCw5Myw3OCwKKyAgICA5MiwyLDEyNSw5LDEyNSwxMCwxMTYsMTMsMTI0LDAsMTA2LDIsMTI0LDQsMTI0LDksCisgICAgMjMsMCwxMzEsMiwxMjUsMTIsMTE2LDE4LDEwNiwxOSwxMDAsNiwxMjQsMTIsMTAwLDMsCisgICAgMTAwLDcsMTQxLDMsMSwwLDEyNCw3LDEyNCw5LDIzLDAsMTI0LDYsMTA3LDYsCisgICAgMTE0LDIyNiwxMTYsMTUsMTI0LDEyLDEzMSwxLDExNCwyMjYsMTI0LDAsMTA2LDE2LDEyNCwxMCwKKyAgICAxMjQsMSwxMjQsMTIsMTAwLDgsMTI0LDIsMTMxLDUsODMsMCwxMTMsMjI2LDg3LDAsCisgICAgMTI0LDMsMTQ0LDEsMTE0LDk0LDExNiwxOCwxMDYsMTksMTAwLDksMTI0LDgsMTMxLDIsCisgICAgMSwwLDExNiwxOCwxMDYsMjAsMTI0LDEsMTAwLDgsMTMxLDIsMTI1LDEzLDEyNCw4LAorICAgIDEwMywxLDEyNCwxMyw5NSwyMSwxMjQsMTMsODMsMCwxMDAsOCw4MywwLDQxLDExLAorICAgIDEyMiwxMTEsODQsMTE0LDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwKKyAgICAxMTUsMTEyLDEwMSw5OSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSwKKyAgICA5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAzLDMyLDExNSwxMTIsMTAxLAorICAgIDk5LDQ0LDMyLDExMSwxMTQsMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDEwMiwzMiwxMTAsMTExLAorICAgIDExNiwzMiwxMDIsMTExLDExNywxMTAsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDcwLDExNCw2MSwwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDMxLDAsMCwKKyAgICAwLDExNCwxODIsMCwwLDAsMTIyLDksMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTIzLAorICAgIDEyNSw0MSwxLDkwLDksMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDUsMTE2LDEyMSw3OCwxMjIsCisgICAgMjUsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEyMywxMjUsMTE0LDkxLDAsMCwwLDQxLAorICAgIDIyLDExNCwzNCwwLDAsMCwxMTQsNDEsMCwwLDAsMTE0LDM3LDAsMCwwLAorICAgIDExNCwzLDAsMCwwLDExNCw0NywwLDAsMCwxMTQsMjE2LDAsMCwwLDExNCwKKyAgICA0MiwwLDAsMCwxMTQsNywxLDAsMCwyMTgsMTEsOTUsMTAyLDEwNSwxMDgsMTA4LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE0LDcsMCwwLDAsMTE0LDEwLDEsMCwwLAorICAgIDExNCw5MiwwLDAsMCwxMTQsOSwxLDAsMCwxMTQsMzAsMCwwLDAsMTE0LAorICAgIDYsMSwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0LDEsMCwwLDExNCw0OCwKKyAgICAwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDE1OCwwLAorICAgIDAsMCwxMTQsMTU0LDAsMCwwLDQxLDE0LDExNCwxMDQsMCwwLDAsMTE0LDEyMywKKyAgICAwLDAsMCwxMTQsMTc3LDAsMCwwLDkwLDEyLDEwNSwxMTUsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTAsMTEsMTE2LDk3LDEwNSwxMDgsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE0LDEzMCwwLDAsMCw5MCw1LDk5LDk3LDk5LDEwNCwxMDEsOTAsCisgICAgMTIsOTksOTcsOTksMTA0LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCw5LDk4LAorICAgIDk3LDExNSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDIyMiwwLDAsMCwxMTQsMTYzLDAsCisgICAgMCwwLDkwLDEzLDEwNSwxMTAsMTA1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTAsOSwxMDIsMTE3LDEwOCwxMDgsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2MiwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKKyAgICAxMTQsMTc4LDAsMCwwLDIwOCw0LDAsMCwxMTUsNzAsMCwwLDAsMCw1LAorICAgIDQsMSwxNCwxLDIsMSwyNCwxLDE0LDEsMTAsMSwxMCwxLDgsMSwKKyAgICA2LDIsNiwxLDYsMSwxMCwyLDYsMSw0LDIsOCwxLDEyLDEsCisgICAgMTYsMSw4LDEsMTAsMSw4LDEsMjQsNCw4LDIsMTYsMSwxNiwxLAorICAgIDE2LDEsMTIsMSw4LDEsMTAsMSwxMiwxLDYsMSwxMiwxLDEyLDEsCisgICAgOCwxLDQsMSwxMjIsMjAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDksMCwwLDAsMTMsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE5NCwwLDAsMCwxMjQsMCwxMDYsMCwxMjUsMSwxMjEsMjIsMTE2LDEsMTA2LDIsCisgICAgMTI0LDEsMTEyLDIyLDExNiwxLDEwNiwzLDEzMSwwLDEzMSwxLDEyNSwyLDg3LDAsCisgICAgMTEwLDMwLDQsMCwxMTYsNCwxMTYsNSwxMTYsNiwxMDIsMywxMDcsMTAsMTE0LDU4LAorICAgIDEsMCwxLDAsMSwwLDEwMywwLDEyNSwyLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMTYsNywxMDYsOCwxMDYsOSwxMDAsMSwxMzEsMSwxMTUsODQsMTE2LDEwLDEyNCwyLAorICAgIDEzMSwxLDEyNCwwLDk1LDExLDExMCw3OCwxMTYsMTAsMTMxLDAsMTI1LDMsMTIwLDY0LAorICAgIDEyNCwyLDY4LDAsOTMsNTYsMTI1LDQsMTI0LDQsMTA2LDEyLDEwMCwyLDEzMSwxLAorICAgIDkyLDMsMTI1LDUsMTI1LDYsMTI1LDcsMTI0LDYsMTE0LDEzOCwxMDAsMywxMDYsMTMsCisgICAgMTI0LDUsMTI0LDcsMTA2LDE0LDEzMSwwLDEzMSwyLDEyNSw4LDExMCw0LDEyNCw1LAorICAgIDEyNSw4LDEyNCwzLDEwNiwxNSwxMjQsOCwxMzEsMSwxLDAsMTEzLDk2LDg3LDAsCisgICAgMTI0LDMsMTI0LDAsOTUsMTEsMTE2LDcsMTA2LDgsMTA2LDksMTE2LDE2LDEzMSwxLAorICAgIDExNCwxOTAsMTAwLDQsMTAwLDUsMTMyLDAsMTI0LDIsNjgsMCwxMzEsMSwxMjQsMCwKKyAgICA5NSwxNywxMDAsNiw4MywwLDQxLDcsMTIyLDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsCisgICAgMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsCisgICAgMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAorICAgIDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsCisgICAgMCwwLDAsMTE0LDYxLDAsMCwwLDEyMiw1LDEyMywxMjUsNDYsMTIzLDEyNSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDgzLDAsMCwwLDExNSwyMCwwLDAsMCwxMDQsMCwxMjQsMCw5MywxMiwxMjUsCisgICAgMSwxMjQsMSwxMDYsMCwxMzEsMCwxNDYsMiwxMTMsNCw4MywwLDExNCw0LDAsCisgICAgMCwwLDQxLDEsMTE0LDkyLDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLAorICAgIDkwLDIsMTAyLDExMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKKyAgICAwLDAsMCwyNTAsOSw2MCwxMTUsMTAxLDExNiw5OSwxMTEsMTA5LDExMiw2MiwyOSw1LAorICAgIDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLDQxLDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDExNSwxMDEsMTE2LDk5LAorICAgIDExMSwxMDksMTEyLDYyLDc4LDQxLDE4LDExNCwzNywwLDAsMCwxMTQsMywwLDAsCisgICAgMCw5MCw3LDEwOCwxMDUsMTE1LDExNiwxMDAsMTA1LDExNCwxMTQsNDcsMCwwLDAsMTE0LAorICAgIDI1NSwwLDAsMCwyMTgsMTUsODAsMTAxLDExNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDIxOCwxOCw3OCwxMTEsMTE2LDY1LDY4LDEwNSwxMTQsMTAxLDk5LAorICAgIDExNiwxMTEsMTE0LDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDksCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCw4LDEsMCwwLDExNCw5LDEsCisgICAgMCwwLDExNCw4NywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDkyLDAsMCwKKyAgICAwLDIxOCwzLDk3LDEwMCwxMDAsMTE0LDExLDAsMCwwLDExNCwxMCwxLDAsMCwKKyAgICA0MSw5LDExNCwxMDQsMCwwLDAsMTE0LDM3LDAsMCwwLDkwLDgsOTksMTExLAorICAgIDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDkwLDIxLDEwOCwxMTEsMTE5LDEwMSwxMTQsOTUsMTE1LDExNywKKyAgICAxMDIsMTAyLDEwNSwxMjAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMTE1LDExNCwyNDQsMCwKKyAgICAwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMjM0LDAsMCwwLDExNCwyMjIsMCwwLAorICAgIDAsOTAsOCwxMTAsMTAxLDExOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTIsMSwwLDAsMCwKKyAgICA1LDAsMCwxMTUsMzQsMCwwLDAsMCwyLDYsMSwyLDEsMjIsMSwKKyAgICAyMCwzLDEwLDMsMTIsMSwxMiw3LDYsMSwxMCwxLDE2LDEsNCwxLAorICAgIDE4LDIsNCwxLDE0LDEsNiwxLDEyLDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywKKyAgICAwLDAsMCw3LDAsMCwwLDExNSwxOCwwLDAsMCwxMzUsMCwxMzUsMSwKKyAgICAxMDIsMiwxMDAsMSwxMDAsMiwxMzIsOCwxMjUsMiwxMjQsMiw4MywwLDQxLDMsCisgICAgOTcsMjAsMSwwLDAsNjUsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTA5LDEwMSwxMTYsCisgICAgMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLAorICAgIDExNSwzMiw5NywzMiw5OSwxMDgsMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMTYsMTExLDMyLDExNywKKyAgICAxMTUsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LAorICAgIDExMSwxMTEsMTA3LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExOSwxMDQsMTA1LDk5LAorICAgIDEwNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMTEwLAorICAgIDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDMyLDExNywxMTUsMTA1LDExMCwxMDMsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDExNSwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LDk3LDEwOCwxMDgsMTAxLAorICAgIDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTExLDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsMTExLDExNSwxMTcsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsNDQsCisgICAgMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwxMCwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDM0LAorICAgIDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDExNSwyMCwxMTYsMSwxMDAsMSwxMjQsCisgICAgMCwxMDAsMiwxNDEsMiwxMzAsMSwxMzYsMCwxMjQsMCwxMDIsMSwxMzYsMSwxNTgsCisgICAgMiwxNDIsMCw4MywwLDQxLDMsMTIyLDQ1LDgwLDk3LDExNiwxMDQsMzIsMTA0LDExMSwKKyAgICAxMTEsMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgNDYsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDQ2LDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTIyLDMwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsMTA1LDExNCwKKyAgICAxMDEsOTksMTE2LDExMSwxMTQsMTA1LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTE3LDExMiwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwKKyAgICA0OCwwLDAsMCwxMTQsMTAzLDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLAorICAgIDQxLDIsMTE0LDE2OCwwLDAsMCwxMTQsMTEsMSwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLAorICAgIDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDQxLDUsMCwwLDExNSw2LDAsMCwwLDAsMiw4LDEsMTIsMSwxMjIsCisgICAgNTQsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDQsMTExLDExMSwxMDcsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LAorICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNCw0LDAsMCwwLDQxLDMsMTE0LDE2OCwKKyAgICAwLDAsMCwxMTQsMTEsMSwwLDAsMTE0LDE3LDEsMCwwLDExNCw0LDAsCisgICAgMCwwLDQxLDIsMTE0LDE2OCwwLDAsMCwxMTQsMTEsMSwwLDAsMTE0LDYsCisgICAgMCwwLDAsMjE4LDksMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDMxLDUsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMTAsMTQsNiwxMjIsMjAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwKKyAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LAorICAgIDAsMTA2LDEsMTMxLDEsODMsMCw0MSwyLDc4LDEyMiwxNiw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LDUwLAorICAgIDAsMCwwLDExNCwzNywwLDAsMCw0MSwxLDExNCwxMDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI0MywKKyAgICAwLDAsMCw0OSw1LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDE5LAorICAgIDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsCisgICAgMTE0LDk1LDk1LDQxLDEsNzgsNDEsMTUsMTE0LDEwOSwwLDAsMCwxMTQsMTA4LDAsCisgICAgMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwxMTQsMTgyLDAsMCwKKyAgICAwLDExNCwyNDksMCwwLDAsMTE0LDEyNywwLDAsMCwxMTQsMTc5LDAsMCwwLAorICAgIDExNCwxMjEsMCwwLDAsMTE0LDQsMSwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsCisgICAgMTIsMSwwLDAsMTE0LDE4MCwwLDAsMCwxMTQsMTgsMSwwLDAsMTE0LDI0MywKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsNSwxLDAsMCwxNjIsNCwwLDAsCisgICAgMTE1LDIwLDAsMCwwLDgsNyw0LDIsOCwxNCw4LDQsNCwyLDgsCisgICAgMTIsOCw1LDEwLDQ4LDgsMzEsMTIsMTgsMTE0LDUsMSwwLDAsOTksNCwKKyAgICAwLDAsMCwwLDAsMCwwLDYsMCwwLDAsMTEsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE0NiwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwKKyAgICAxMjUsNCwxMjQsMCwxMDYsMCwxMDAsMiwxMzEsMSwxMjUsNSwxMjQsNCwxMTUsNjYsCisgICAgMTI0LDUsMTE0LDM2LDEyNCw1LDEwNiwxLDEyNSw0LDExMCwzMCwxMjQsMiwxMjQsMywKKyAgICAxMDcsMiwxMTQsNTYsMTE2LDIsMTI0LDEsMTI0LDIsMTMxLDIsMTI1LDQsMTEwLDEwLAorICAgIDExNiwzLDEyNCwxLDEyNCwyLDEzMSwyLDEyNSw0LDEyNCw1LDExNSw4NCwxMTYsNCwKKyAgICAxMjQsMSwxMjQsMiwxMjQsNCwxMDAsMywxNDEsMywxMjUsNSwxMjEsMzYsMTI0LDUsCisgICAgMTI0LDAsMTAwLDIsNjAsMCwxMjQsNCwxMjQsMCwxMDAsMSw2MCwwLDEyNCwyLAorICAgIDEyNCwwLDEwMCw0LDYwLDAsMTI0LDMsMTI0LDAsMTAwLDUsNjAsMCw4NywwLAorICAgIDExMCwyMCw0LDAsMTE2LDUsMTA3LDEwLDExNCwxNDAsMSwwLDEsMCwxLDAsCisgICAgODksMCwxMTAsMiw4OCwwLDEwMCwwLDgzLDAsNDEsNiw3OCwyMTgsMTAsOTUsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsOCw5NSw5NSwxMTUsMTEyLDEwMSwKKyAgICA5OSw5NSw5NSw0MSwxLDExNCwxMjQsMCwwLDAsOTAsOCw5NSw5NSwxMDIsMTA1LAorICAgIDEwOCwxMDEsOTUsOTUsOTAsMTAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsCisgICAgNDEsNiwyMTgsMywxMDMsMTAxLDExNiwxMTQsMTI0LDAsMCwwLDExNCwyMjAsMCwwLAorICAgIDAsMTE0LDIxNSwwLDAsMCwxMTQsMTY1LDAsMCwwLDIxOCw5LDY5LDEyMCw5OSwKKyAgICAxMDEsMTEyLDExNiwxMDUsMTExLDExMCw0MSw2LDkwLDIsMTEwLDExNSwxMTQsMTAyLDAsMCwKKyAgICAwLDkwLDgsMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsOTAsOSw5OSwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTI0LDAsMCwwLDExNCwxNjIsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAorICAgIDE0LDk1LDEwMiwxMDUsMTIwLDk1LDExNywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNTUsCisgICAgNSwwLDAsMTE1LDM0LDAsMCwwLDAsMiwxMCwxLDEwLDEsNCwxLAorICAgIDQsMSw4LDEsOCwxLDEyLDIsMTAsMSw0LDEsMTQsMSwyLDEsCisgICAgOCwxLDgsMSw4LDEsMTIsMSwxNCwyLDExNCwyMywxLDAsMCw5OSwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMTYsMCwxMTYsMSwxMDYsMiwxMzEsCisgICAgMCwxMDIsMiwxMjUsMCwxMTYsMywxMTYsNCwxMDIsMiwxMjUsMSwxMTYsNSwxMTYsCisgICAgNiwxMDIsMiwxMjUsMiwxMjQsMCwxMjQsMSwxMjQsMiwxMDMsMyw4MywwLDQxLAorICAgIDEsMTIyLDk1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDEwOCwxMDUsMTE1LAorICAgIDExNiwzMiwxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw2OSw5Nyw5OSwxMDQsMzIsMTA1LDExNiwxMDEsMTA5LDMyLDEwNSwKKyAgICAxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDQ0LDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDEsNDYsMTAsMzIsMzIsCisgICAgMzIsMzIsNDEsNywxMTQsMjIxLDAsMCwwLDExNCwxNDMsMCwwLDAsMjE4LDE4LAorICAgIDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLAorICAgIDEwMSwxMTUsMTE0LDIxNSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDIyMCwwLDAsCisgICAgMCwxMTQsNzgsMCwwLDAsNDEsMyw5MCwxMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCwxMTUsOTAsNiwxMTUsMTExLDExNywxMTQsOTksMTAxLDkwLDgsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE1OSwwLDAsMCw3OCw1LDAsMCwxMTUsOCwKKyAgICAwLDAsMCwwLDUsMTIsMSw4LDEsOCwxLDExNCwxNTksMCwwLDAsCisgICAgOTksMSwwLDAsMCwwLDAsMCwwLDEyLDAsMCwwLDEyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwxODgsMSwwLDAsMTI0LDAsOTcsMCwxMTYsMCwKKyAgICAxMDYsMSw5NywxLDExNiwwLDEwNiwyLDk3LDIsMTE2LDEsMTA2LDMsMTE2LDQsCisgICAgMjUsMCwxMjUsMSwxMjAsNTYsMTAwLDI2LDY4LDAsOTMsNDgsMTI1LDIsMTI0LDIsCisgICAgMTE2LDEsMTA2LDMsMTA3LDcsMTE0LDU4LDExNiwwLDEwNiw1LDEyNCwyLDEzMSwxLAorICAgIDEyNSwzLDExMCwxMCwxMTYsMSwxMDYsMywxMjQsMiwyNSwwLDEyNSwzLDExNiw2LAorICAgIDEyNCwxLDEyNCwyLDEyNCwzLDEzMSwzLDEsMCwxMTMsMzIsODcsMCwxMDAsNSwKKyAgICAxMDAsNiwxMDMsMSwxMDIsMiwxMDAsNywxMDAsOCwxMDAsNiwxMDMsMiwxMDIsMiwKKyAgICAxMDIsMiwxMjUsNCwxMjAsMTE4LDEyNCw0LDY4LDAsOTMsMTAyLDkyLDIsMTI1LDUsCisgICAgMTI1LDYsMTE2LDcsMTAwLDksMTAwLDEwLDEzMiwwLDEyNCw2LDY4LDAsMTMxLDEsCisgICAgMTMxLDEsMTE1LDE0MiwxMTYsOCwxMzAsMSwxMjQsNiwxMDAsMTEsMjUsMCwxMjUsNywKKyAgICAxMjQsNSwxMTYsMSwxMDYsMywxMDcsNiwxMTQsMTc0LDExNiwxLDEwNiwzLDEyNCw1LAorICAgIDI1LDAsMTI1LDgsODAsMCwxMTMsMTEyLDEyMSwxNiwxMTYsMCwxMDYsNSwxMjQsNSwKKyAgICAxMzEsMSwxMjUsOCw4MCwwLDg3LDAsMTEzLDExMiw0LDAsMTE2LDksMTA3LDEwLAorICAgIDExNCwyMTIsMSwwLDEsMCwxLDAsMTE5LDExMiw4OSwwLDExMywxMTIsODgsMCwKKyAgICAxMTMsMTEyLDg3LDAsMTE2LDksMTAwLDEyLDEzMSwxLDEzMCwxLDExNiw2LDEyNCwxLAorICAgIDEwMCwxMywxMjQsOCwxMzEsMywxLDAsMTE2LDYsMTI0LDEsMTAwLDE0LDEyNCw3LAorICAgIDEzMSwzLDEsMCwxMTYsNiwxMjQsMSwxMDAsMTUsMTAwLDE2LDEwNiwxMCwxMjQsNiwKKyAgICAxMzEsMSwxMzEsMywxLDAsMTIxLDE0LDExNiwwLDEwNiw1LDEwMCwxNywxMzEsMSwKKyAgICAxMjUsOSw4NywwLDExMCwyNiw0LDAsMTE2LDksMTA3LDEwLDE0NCwxLDExNCw1MiwKKyAgICAxLDAsMSwwLDEsMCwxMDAsMTgsMTI1LDksODksMCwxMTAsMiw4OCwwLAorICAgIDExNiw2LDEyNCwxLDEwMCwxNywxMjQsOSwxMzEsMywxLDAsMTE2LDAsMTA2LDUsCisgICAgMTAwLDE5LDEzMSwxLDEyNSwxMCwxMTYsNiwxMjQsMSwxMDAsMTksMTI0LDEwLDEzMSwzLAorICAgIDEsMCwxMjQsNSwxMDAsNywxMDcsMiwxNDQsMSwxMTQsMTIwLDExNiwwLDEwNiw1LAorICAgIDEwMCwyMCwxMzEsMSwxMjUsMTEsMTE2LDYsMTI0LDEsMTAwLDIxLDEyNCwxMSwxMzEsMywKKyAgICAxLDAsMTE2LDYsMTI0LDEsMTAwLDIyLDExNiwxMSwxMzEsMCwxMzEsMywxLDAsCisgICAgMTE2LDEyLDEwNiwxMywxMTYsMiwxMDYsMTQsMTMxLDAsMTMxLDEsMSwwLDEyNCw1LAorICAgIDEwMCw3LDEwNywyLDE0NCwxLDExNCwxODQsMTE2LDE1LDEwNiwxNiwxMDAsMjMsMTMxLDEsCisgICAgMSwwLDEwMCwyNCwxMTYsMTIsMTA3LDYsMTQ0LDEsMTE0LDE4NCwxMDAsMjUsMTE2LDE3LAorICAgIDk1LDE4LDEwMCwxOCw4MywwLDQxLDI3LDEyMiwyMDUsODMsMTAxLDExNiwxMTcsMTEyLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwKKyAgICA5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTA5LDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCwKKyAgICA5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLAorICAgIDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEyMCwxMTYsMTE0LDk3LDk5LDExNiwxMDEsCisgICAgMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTE0LDEwMSwzMiwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDUyLDAsMCwwLDExNCw2MywwLDAsCisgICAgMCwyMTgsOCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTUsMTE0LDE0MCwwLDAsMCwKKyAgICA5MCw1LDExMiwxMTEsMTE1LDEwNSwxMjAsMjUwLDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSwKKyAgICA5Miw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCisgICAgMCwwLDExNSwwLDAsMCwxMTUsMjYsMCwwLDAsMTI0LDAsOTMsMTgsMTI1LAorICAgIDEsMTE2LDAsMTI0LDEsMTMxLDEsMTAwLDAsMTA3LDIsODYsMCwxLDAsMTEzLAorICAgIDIsMTAwLDEsODMsMCw0MSwyLDExNCwzMSwwLDAsMCw3OCw0MSwxLDExNCwKKyAgICAzMywwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsODEsMCwwLDAsCiAgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDI0NSwwLDAsMCwzNyw1LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDE5LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTE0LDEwMSwKLSAgICAxMTIsMTE0LDk1LDk1LDQxLDE1LDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwKLSAgICAxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMTQsCi0gICAgMjUxLDAsMCwwLDExNCwxMzIsMCwwLDAsMTE0LDE4MywwLDAsMCwxMTQsMTI2LAotICAgIDAsMCwwLDExNCw2LDEsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE0LDEsCi0gICAgMCwwLDExNCwxODQsMCwwLDAsMTE0LDIwLDEsMCwwLDExNCwyNDUsMCwwLAotICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMTE0LDcsMSwwLDAsMTUzLDQsMCwwLDExNSwyMCwKLSAgICAwLDAsMCwxMiw3LDYsMiwxMiwxNCwxMiw0LDYsMiwxMiwxMiwxMiwKLSAgICA1LDE1LDQ1LDEyLDMxLDE4LDE4LDExNCw3LDEsMCwwLDk5LDQsMCwwLAotICAgIDAsMCwwLDAsMCw2LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxOTUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLAotICAgIDEsMCwxMjUsNCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMiwwLDEzMSwxLAotICAgIDAsMTI1LDUsMCwxMjQsNCwwLDExNSw5OSwwLDEyNCw1LDAsMTE0LDU0LDAsCi0gICAgMTI0LDUsMCwxMDYsMSwwLDEyNSw0LDAsMTEwLDQ1LDAsMTI0LDIsMCwxMjQsCi0gICAgMywwLDEwNywyLDAsMTE0LDg0LDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTMxLDIsMCwxMjUsNCwwLDExMCwxNSwwLDExNiwzLDAsMTI0LDEsMCwKLSAgICAxMjQsMiwwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNSwwLDExNSwxMjYsMCwxMTYsCi0gICAgNCwwLDEyNCwxLDAsMTI0LDIsMCwxMDAsMywwLDEyNCw0LDAsMTMxLDIsCi0gICAgMSwxMjUsNSwwLDEyMSw0NCwwLDEyNCw1LDAsMTI0LDAsMCwxMDAsMiwwLAotICAgIDYwLDEyNCw0LDAsMTI0LDAsMCwxMDAsMSwwLDYwLDEyNCwyLDAsMTI0LDAsCi0gICAgMCwxMDAsNCwwLDYwLDEyNCwzLDAsMTI0LDAsMCwxMDAsNSwwLDYwLDg3LAotICAgIDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTkwLDAsMSwxLDEsCi0gICAgODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDYsNzgsMjE4LDEwLDk1LDk1LAotICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMjE4LDgsOTUsOTUsMTE1LDExMiwxMDEsOTksCi0gICAgOTUsOTUsMTE0LDEyOSwwLDAsMCw5MCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwKLSAgICA5NSw5MCwxMCw5NSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSw0MSw2LDIxOCwKLSAgICAzLDEwMywxMDEsMTE2LDExNCwxMjksMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsMjE5LAotICAgIDAsMCwwLDExNCwxNjksMCwwLDAsMjE4LDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LAotICAgIDEwNSwxMTEsMTEwLDQxLDYsOTAsMiwxMTAsMTE1LDExNCwxMDgsMCwwLDAsOTAsOCwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTAsOTcsMTA5LDEwMSw5MCw5LDk5LDExMiw5NywxMTYsMTA0LDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMjksMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsOTUsMTAyLAotICAgIDEwNSwxMjAsOTUsMTE3LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Myw1LDAsMCwKLSAgICAxMTUsMzQsMCwwLDAsMCwyLDE1LDEsMTUsMSw2LDEsNiwxLDEyLAotICAgIDEsMTIsMSwxOCwyLDE1LDEsNiwxLDIxLDEsMywxLDEwLDEsMTAsCi0gICAgMSwxMCwxLDE0LDEsMTMsMiwxMTQsMjUsMSwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsNTUsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEwNiwyLDAsMTMxLAotICAgIDAsMCwxMDIsMiwwLDEyNSwwLDAsMTE2LDMsMCwxMTYsNCwwLDEwMiwyLAotICAgIDAsMTI1LDEsMCwxMTYsNSwwLDExNiw2LDAsMTAyLDIsMCwxMjUsMiwwLAotICAgIDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEwMywzLDAsODMsNDEsMSwxMjIsCi0gICAgOTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLAotICAgIDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksMzIsMTA1LDExNSwzMiwKLSAgICA5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDQsCi0gICAgMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0MSw0NiwxMCwzMiwzMiwzMiwzMiwKLSAgICA0MSw3LDExNCwyMjUsMCwwLDAsMTE0LDE0NywwLDAsMCwyMTgsMTgsMTAxLDEyMCwKLSAgICAxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwKLSAgICAxMTQsMjE5LDAsMCwwLDExNCw4NiwwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwKLSAgICA3NiwwLDAsMCw0MSwzLDkwLDEwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCi0gICAgMTEwLDExNSw5MCw2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTAsOCw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTYzLDAsMCwwLDY2LDUsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsNSwxOCwxLDEyLDEsMTIsMSwxMTQsMTYzLDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwxMiwwLDAsMCwxMiwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNzAsMiwwLDAsMTI0LDAsMCw5NywwLDAsMTE2LDAsCi0gICAgMCwxMDYsMSwwLDk3LDEsMCwxMTYsMCwwLDEwNiwyLDAsOTcsMiwwLAotICAgIDExNiwxLDAsMTA2LDMsMCwxMTYsNCwwLDI1LDEyNSwxLDAsMTIwLDc2LDAsCi0gICAgMTAwLDI2LDAsNjgsOTMsNjgsMCwxMjUsMiwwLDEyNCwyLDAsMTE2LDEsMCwKLSAgICAxMDYsMywwLDEwNyw3LDAsMTE0LDgzLDAsMTE2LDAsMCwxMDYsNSwwLDEyNCwKLSAgICAyLDAsMTMxLDEsMCwxMjUsMywwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsCi0gICAgMCwxMjQsMiwwLDI1LDEyNSwzLDAsMTE2LDYsMCwxMjQsMSwwLDEyNCwyLAotICAgIDAsMTI0LDMsMCwxMzEsMywwLDEsMTEzLDQ0LDAsODcsMTAwLDUsMCwxMDAsCi0gICAgNiwwLDEwMywxLDAsMTAyLDIsMCwxMDAsNywwLDEwMCw4LDAsMTAwLDYsCi0gICAgMCwxMDMsMiwwLDEwMiwyLDAsMTAyLDIsMCwxMjUsNCwwLDEyMCwxNDksMCwKLSAgICAxMjQsNCwwLDY4LDkzLDEyOSwwLDkyLDIsMCwxMjUsNSwwLDEyNSw2LDAsCi0gICAgMTE2LDcsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsMTI0LDYsMCw2OCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTE1LDE5OSwwLDExNiw4LDAsMTMwLDEsMCwxMjQsCi0gICAgNiwwLDEwMCwxMSwwLDI1LDEyNSw3LDAsMTI0LDUsMCwxMTYsMSwwLDEwNiwKLSAgICAzLDAsMTA3LDYsMCwxMTQsMjQxLDAsMTE2LDEsMCwxMDYsMywwLDEyNCw1LAotICAgIDAsMjUsMTI1LDgsMCw4MCwxMTMsMTU2LDAsMTIxLDIwLDAsMTE2LDAsMCwxMDYsCi0gICAgNSwwLDEyNCw1LDAsMTMxLDEsMCwxMjUsOCwwLDgwLDg3LDExMywxNTYsMCwKLSAgICA0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDI4LDEsMSwxLDEsMTE5LDE1NiwwLAotICAgIDg5LDExMywxNTYsMCw4OCwxMTMsMTU2LDAsODcsMTE2LDksMCwxMDAsMTIsMCwxMzEsCi0gICAgMSwwLDEzMCwxLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwxMywwLDEyNCw4LAotICAgIDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsMTQsMCwxMjQsNywKLSAgICAwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDE1LDAsMTAwLDE2LAotICAgIDAsMTA2LDEwLDAsMTI0LDYsMCwxMzEsMSwwLDEzMSwzLDAsMSwxMjEsMTksCi0gICAgMCwxMTYsMCwwLDEwNiw1LDAsMTAwLDE3LDAsMTMxLDEsMCwxMjUsOSwwLAotICAgIDg3LDExMCwyNCwwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMTQ3LDEsMSwxLAotICAgIDEsMTAwLDE4LDAsMTI1LDksMCw4OSwxMTAsMSwwLDg4LDExNiw2LDAsMTI0LAotICAgIDEsMCwxMDAsMTcsMCwxMjQsOSwwLDEzMSwzLDAsMSwxMTYsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDE5LDAsMTMxLDEsMCwxMjUsMTAsMCwxMTYsNiwwLDEyNCwxLAotICAgIDAsMTAwLDE5LDAsMTI0LDEwLDAsMTMxLDMsMCwxLDEyNCw1LDAsMTAwLDcsCi0gICAgMCwxMDcsMiwwLDExNCwyMzgsMSwxMTYsMCwwLDEwNiw1LDAsMTAwLDIwLDAsCi0gICAgMTMxLDEsMCwxMjUsMTEsMCwxMTYsNiwwLDEyNCwxLDAsMTAwLDIxLDAsMTI0LAotICAgIDExLDAsMTMxLDMsMCwxLDExNiw2LDAsMTI0LDEsMCwxMDAsMjIsMCwxMTYsCi0gICAgMTEsMCwxMzEsMCwwLDEzMSwzLDAsMSwxMTYsMTIsMCwxMDYsMTMsMCwxMTYsCi0gICAgMiwwLDEwNiwxNCwwLDEzMSwwLDAsMTMxLDEsMCwxLDEyNCw1LDAsMTAwLAotICAgIDcsMCwxMDcsMiwwLDExNCw2NiwyLDExNiwxNSwwLDEwNiwxNiwwLDEwMCwyMywKLSAgICAwLDEzMSwxLDAsMSwxMDAsMjQsMCwxMTYsMTIsMCwxMDcsNiwwLDExNCw2NiwKLSAgICAyLDEwMCwyNSwwLDExNiwxNywwLDk1LDE4LDAsMTAwLDE4LDAsODMsNDEsMjcsCi0gICAgMTIyLDIwNSw4MywxMDEsMTE2LDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCi0gICAgNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTUsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwKLSAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLAotICAgIDEwMSwxMDAsMTAsMzIsMzIsMzIsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLAotICAgIDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwxMDksMzIsMTA1LDExMCwxMTYsMTExLDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsCi0gICAgMTEyLDk3LDk5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsCi0gICAgMzIsOTksMTExLDEwOSwxMTIsMTExLDExMCwxMDEsMTEwLDExNiwxMTUsMzIsOTcsMTE0LDEwMSwzMiwKLSAgICAxMDEsMTIwLDExNiwxMTQsOTcsOTksMTE2LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDk5LDExMSwxMTQsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAotICAgIDExMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsCi0gICAgNTEsMCwwLDAsMTE0LDYyLDAsMCwwLDIxOCw4LDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDExNSwxMTQsMTQ0LDAsMCwwLDkwLDUsMTEyLDExMSwxMTUsMTA1LDEyMCwyNTAsCi0gICAgMSw0NywyMTgsMiwxMTAsMTE2LDI1MCwxLDkyLDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLDExNSwzMywKLSAgICAwLDAsMCwxMjQsMCwwLDkzLDIzLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKLSAgICAxLDAsMTMxLDEsMCwxMDAsMCwwLDEwNywyLDAsODYsMSwxMTMsMywwLAotICAgIDEwMCwxLDAsODMsNDEsMiwxMTQsMzEsMCwwLDAsNzgsNDEsMSwxMTQsMzMsCi0gICAgMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjgsCi0gICAgMCwwLDAsMTAyLDUsMCwwLDExNSwyLDAsMCwwLDYsMCwxMjIsMjUsCi0gICAgOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCi0gICAgNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw2MSwwLDAsMCwxMjIsMzAsCi0gICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwKLSAgICAxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNCwzLAotICAgIDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMjMsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDkwLDcsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw3OCw5MCw4LDk1LDExOSwKLSAgICAxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDYsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE0LDE3MSwKLSAgICAwLDAsMCwxMTQsNywwLDAsMCwxMjIsNCw0NiwxMTIsMTIxLDExOSwxMjIsNiwKLSAgICA5NSwxMDAsNDYsMTEyLDEyMSwxMDAsODQsNDEsNCwxMTQsNTEsMCwwLDAsMTE0LDYyLAotICAgIDAsMCwwLDExNCwyNywxLDAsMCwxMTQsMTQ0LDAsMCwwLDQxLDE5LDExNCwKLSAgICAxMjMsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDE0NywwLDAsMCwxMTQsMjQwLAotICAgIDAsMCwwLDExNCwxMTQsMCwwLDAsOTAsMTgsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksMTAxLDExNCwxMTgsMCwwLAotICAgIDAsMjE4LDMsOTcsMTA4LDEwOCwyMTgsMTQsNjUsMTE1LDExNSwxMDEsMTE0LDExNiwxMDUsMTExLAotICAgIDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDEwOSwwLDAsMCwxMTQsMjgsMCwwLDAsCi0gICAgMTE0LDEzLDAsMCwwLDExNCwyMzAsMCwwLDAsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgMjYsMSwwLDAsMTE0LDg2LDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MCwKLSAgICAwLDAsMCwxMTQsMTc0LDAsMCwwLDQxLDEyLDIxOCwxNyw5NSw5OCwxMTEsMTExLAotICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTEsMTE1LAotICAgIDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCi0gICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEwLDExMSwxMTUsOTUsMTAwLDEwMSwxMTYsCi0gICAgOTcsMTA1LDEwOCwxMTUsOTAsMTAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTExLDExNSwKLSAgICAxMTQsMjMsMCwwLDAsMTE0LDI3LDAsMCwwLDkwLDksMTExLDExNSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDkwLDEzLDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNzcsNSwwLDAsMTE1LDgyLAotICAgIDAsMCwwLDAsOCw2LDEsOSwxLDksMywxMywxLDEzLDEsMTUsCi0gICAgMSwxOCwyLDEzLDEsMjAsMywzMywxLDE5LDIsMzEsMSwxMCwxLDE1LAotICAgIDEsMTMsMSw0LDIsMywxLDE1LDEsNSwxLDEzLDEsMTIsMiwxMiwKLSAgICAxLDE2LDEsMTYsMSwyNSwzLDMsMSwxOSwxLDEzLDIsMTEsMSwxNiwKLSAgICAzLDE1LDEsMTYsMywxMiwxLDE1LDEsMTYsMywxOSwxLDE5LDEsMTIsCi0gICAgMSwxMywxLDEyLDEsMTE0LDM0LDEsMCwwLDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDExNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxLDExNiwxLAotICAgIDAsMTMxLDAsMCwxMjUsMSwwLDExNiwyLDAsMTA2LDMsMCwxMDYsNCwwLAotICAgIDExNiw1LDAsMTA2LDYsMCwxMjQsMSwwLDE0MCwwLDAsMTAzLDEsMCwxMzEsCi0gICAgMSwwLDEsMTE2LDcsMCwxMDYsOCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsCi0gICAgNzgsMCwxMTYsMiwwLDEwNiw5LDAsMTA2LDEwLDAsMTE2LDExLDAsMTMxLDEsCi0gICAgMCwxLDExNiwyLDAsMTA2LDksMCwxMDYsMTAsMCwxMTYsMTIsMCwxMzEsMSwKLSAgICAwLDEsMTE2LDUsMCwxMjQsMCwwLDk1LDUsMCwxMTYsMTMsMCwxMjQsMCwKLSAgICAwLDk1LDEzLDAsMTAwLDIsMCw4Myw0MSwzLDEyMiw0MSw3MywxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ1LDk4LDk3LDExNSwKLSAgICAxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsCi0gICAgMTAxLDExMCwxMTYsMTE1LDQ2LDExNCwyOSwxLDAsMCw3OCw0MSwxNCwxMTQsMzQsMSwKLSAgICAwLDAsMTE0LDE2MywwLDAsMCwxMTQsOCwwLDAsMCwxMTQsMjU1LDAsMCwKLSAgICAwLDExNCwxNTEsMCwwLDAsMTE0LDcsMSwwLDAsMTE0LDIwLDEsMCwwLAotICAgIDExNCwzLDAsMCwwLDExNCwxMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwxMTYsOTcsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE2NSwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCwKLSAgICAyNTAsMCwwLDAsMTE0LDIxOSwwLDAsMCw0MSwyLDExNCwzMywxLDAsMCwKKyAgICAyMjQsMCwwLDAsMTE0LDUsMCwwLDExNSwyLDAsMCwwLDQsMCwxMjIsCisgICAgMjUsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsCisgICAgNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNCw2MiwwLDAsMCwxMjIsCisgICAgMzAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDMyLDExMiwxMTEsMTE1LDEwNSwxMjAsMzIsMTExLDExNCwzMiwxMTAsMTE2LDExNCwKKyAgICAzLDAsMCwwLDExNCwyNywwLDAsMCwxMTQsMjMsMCwwLDAsMTE0LDMyLAorICAgIDAsMCwwLDkwLDcsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw3OCw5MCw4LDk1LAorICAgIDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDYsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE0LAorICAgIDE2NywwLDAsMCwxMTQsNywwLDAsMCwxMjIsNCw0NiwxMTIsMTIxLDExOSwxMjIsCisgICAgNiw5NSwxMDAsNDYsMTEyLDEyMSwxMDAsODQsNDEsNCwxMTQsNTIsMCwwLDAsMTE0LAorICAgIDYzLDAsMCwwLDExNCwyNSwxLDAsMCwxMTQsMTQwLDAsMCwwLDQxLDE5LAorICAgIDExNCwxMTgsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDE0MywwLDAsMCwxMTQsCisgICAgMjM2LDAsMCwwLDExNCwxMDksMCwwLDAsOTAsMTgsOTUsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDEwNSwxMTAsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExMCw5NywxMDksMTAxLDExNCwxMTMsMCwKKyAgICAwLDAsMjE4LDMsOTcsMTA4LDEwOCwyMTgsMTQsNjUsMTE1LDExNSwxMDEsMTE0LDExNiwxMDUsCisgICAgMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDEwMywwLDAsMCwxMTQsMjgsMCwwLAorICAgIDAsMTE0LDEzLDAsMCwwLDExNCwyMjYsMCwwLDAsMTE0LDE0NywwLDAsMCwKKyAgICAxMTQsMjQsMSwwLDAsMTE0LDg4LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LAorICAgIDE2NiwwLDAsMCwxMTQsMTcwLDAsMCwwLDQxLDEyLDIxOCwxNyw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTEsCisgICAgMTE1LDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsCisgICAgMTA4LDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEwLDExMSwxMTUsOTUsMTAwLDEwMSwKKyAgICAxMTYsOTcsMTA1LDEwOCwxMTUsOTAsMTAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTExLAorICAgIDExNSwxMTQsMjMsMCwwLDAsMTE0LDI3LDAsMCwwLDkwLDksMTExLDExNSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDkwLDEzLDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsODksNSwwLDAsMTE1LAorICAgIDgyLDAsMCwwLDAsOCw0LDEsNiwxLDYsMywxMCwxLDEwLDEsCisgICAgMTAsMSwxMiwyLDEwLDEsMTYsMywyMiwxLDE0LDIsMjIsMSw4LDEsCisgICAgMTAsMSwxMCwxLDQsMiwyLDEsMTAsMSw2LDEsMTQsMSwxMiwyLAorICAgIDgsMSwxMiwxLDEyLDEsMTgsMywyLDEsMTQsMSwxNiwyLDEwLDEsCisgICAgMTIsMywxMCwxLDEyLDMsMTAsMSwxMCwxLDEyLDMsMTQsMSwxNCwxLAorICAgIDEwLDEsMTAsMSwxMCwxLDExNCwzMiwxLDAsMCw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw3MiwwLDAsMCwxMTYsMCwxMjQsMCwxMzEsMSwxLDAsMTE2LDEsMTMxLAorICAgIDAsMTI1LDEsMTE2LDIsMTA2LDMsMTA2LDQsMTE2LDUsMTA2LDYsMTI0LDEsMTQyLAorICAgIDAsMTAzLDEsMTMxLDEsMSwwLDExNiw3LDEwNiw4LDEwMCwxLDEwNywyLDExNCwKKyAgICA1NiwxMTYsMiwxMDYsOSwxMDYsMTAsMTE2LDExLDEzMSwxLDEsMCwxMTYsMiwxMDYsCisgICAgOSwxMDYsMTAsMTE2LDEyLDEzMSwxLDEsMCwxMDAsMiw4MywwLDQxLDMsMTIyLAorICAgIDQxLDczLDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTksCisgICAgMTExLDEwOSwxMTIsMTExLDExMCwxMDEsMTEwLDExNiwxMTUsNDYsMTE0LDI3LDEsMCwwLDc4LAorICAgIDQxLDEzLDExNCwzMiwxLDAsMCwxMTQsMTU5LDAsMCwwLDExNCw4LDAsMCwKKyAgICAwLDExNCwyNTMsMCwwLDAsMTE0LDE0NywwLDAsMCwxMTQsNSwxLDAsMCwKKyAgICAxMTQsMTgsMSwwLDAsMTE0LDMsMCwwLDAsMTE0LDEwOSwwLDAsMCwyMTgsCisgICAgOSwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTYxLDAsMCwwLDExNCwKKyAgICAxNjYsMCwwLDAsMTE0LDI0OCwwLDAsMCw0MSwyLDExNCwzMSwxLDAsMCwKICAgICA5MCwxNywxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKICAgICAxMDEsMTE0LDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxNDUsNSwwLDAsCi0gICAgMTE1LDE2LDAsMCwwLDAsMiwxMCwxLDksMSwyOCwxLDE1LDEsMTYsCi0gICAgMSwxNiw0LDksMSwxMTQsMzYsMSwwLDAsNDEsMSwxMTQsMCwwLDAsCi0gICAgMCw0MSwyLDExNCwxLDAsMCwwLDExNCwyLDAsMCwwLDQxLDU5LDExNCwKLSAgICAxMTYsMCwwLDAsMTE0LDEyLDAsMCwwLDkwLDM3LDk1LDY3LDY1LDgzLDY5LAotICAgIDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LAotICAgIDg0LDcwLDc5LDgyLDc3LDgzLDk1LDY2LDg5LDg0LDY5LDgzLDk1LDc1LDY5LDg5LAotICAgIDExNCwxMSwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDE5LDAsMCwwLDExNCwKLSAgICAyMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCw0MSwKLSAgICAwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0OCwwLAotICAgIDAsMCwxMTQsNTcsMCwwLDAsMjE4LDQsMTE2LDEyMSwxMTIsMTAxLDIxOCw4LDk1LAotICAgIDk1LDk5LDExMSwxMDAsMTAxLDk1LDk1LDExNCwxNDYsMCwwLDAsMTE0LDE3LDAsMCwKLSAgICAwLDExNCwxMzcsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwyMCwwLDAsMCwKLSAgICA5MCwxNyw5NSw4Miw2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3NywKLSAgICA2Niw2OSw4MiwxMTQsNzUsMCwwLDAsMTE0LDc0LDAsMCwwLDExNCw4NiwwLAotICAgIDAsMCwxMTQsNzYsMCwwLDAsOTAsMjMsNjgsNjksNjYsODUsNzEsOTUsNjYsCi0gICAgODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsCi0gICAgOTAsMjcsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksODQsNjksCi0gICAgNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE0LDgxLDAsCi0gICAgMCwwLDExNCw4NywwLDAsMCwxMTQsOTMsMCwwLDAsMTE0LDk3LDAsMCwKLSAgICAwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMjUsMCwwLDAsCi0gICAgMTE0LDEzMiwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwxNDksMCwwLDAsMTE0LAotICAgIDE1MiwwLDAsMCwxMTQsMTU3LDAsMCwwLDIxOCw2LDExMSw5OCwxMDYsMTAxLDk5LAotICAgIDExNiwxMTQsMTY0LDAsMCwwLDExNCwxNjksMCwwLDAsMTE0LDE3MCwwLDAsMCwKLSAgICAxMTQsMTg1LDAsMCwwLDExNCwxOTUsMCwwLDAsMTE0LDIxMSwwLDAsMCwxMTQsCi0gICAgMjE5LDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LDIzMCwwLDAsMCwxMTQsMjI1LAotICAgIDAsMCwwLDExNCwyMzEsMCwwLDAsMTE0LDI0OCwwLDAsMCwxMTQsMjUwLDAsCi0gICAgMCwwLDExNCw3LDEsMCwwLDExNCwyNSwxLDAsMCwxMTQsMTYzLDAsMCwKLSAgICAwLDExNCwzNCwxLDAsMCwxMTQsMzYsMSwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAotICAgIDgsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsMTA2LDAsCi0gICAgMCwwLDYsMTYsNiwxLDYsMSwzLDEsNywzLDEyLDE3LDEyLDUsCi0gICAgMTIsNSwxMiw2LDEyLDEyLDEyLDEwLDEyLDksMTIsNSwxMiw3LDE1LDIyLAotICAgIDE1LDExNCwyMiwxLDE4LDIsNiwxLDYsMiw5LDIsOSwyLDEwLDIsCi0gICAgMjEsNDQsMTIsMzMsMTIsMTksMTIsMTIsMTIsMTIsMTgsOCwxMiwyOCwxMiwxNywKLSAgICAyMSw1NSwyMSwxMiwxOCwxMCwxMiwxNCw5LDMsMTIsMSwxNSw2NSwxOSw2NCwKLSAgICAxOSwyOCwyMiwxMTAsMTksNDEsMjUsNDMsMjUsMTYsNiwzLDI1LDUzLDE5LDU3LAotICAgIDE5LDQxLDE5LDEzNCwxOSwxNDYsMTUsMjMsMTIsMTEsMTIsNjgsCisgICAgMCwwLDIxOCw4LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE1Nyw1LDAsMCwKKyAgICAxMTUsMTIsMCwwLDAsMCwyLDgsMSw2LDEsMjAsMSwxMCwxLDEyLAorICAgIDEsMTE0LDM0LDEsMCwwLDQxLDEsMTE0LDAsMCwwLDAsNDEsMiwxMTQsCisgICAgMSwwLDAsMCwxMTQsMiwwLDAsMCw0MSwxLDExNCw0OSwwLDAsMCwKKyAgICA0MSwxLDc4LDQxLDMsNzgsNzgsNzgsNDEsMyw3OCw3OCw3OCw0MSwyLDExNCwKKyAgICA2MiwwLDAsMCwxMTQsNjIsMCwwLDAsNDEsMSw3OCw0MSwxLDc4LDQxLAorICAgIDU4LDExNCwxMTEsMCwwLDAsMTE0LDEyLDAsMCwwLDkwLDM3LDk1LDY3LDY1LAorICAgIDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLAorICAgIDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDk1LDY2LDg5LDg0LDY5LDgzLDk1LDc1LAorICAgIDY5LDg5LDExNCwxMSwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDE5LDAsMCwKKyAgICAwLDExNCwyMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDQwLDAsMCwwLAorICAgIDExNCw0MSwwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA0OCwwLDAsMCwxMTQsNTgsMCwwLDAsMjE4LDQsMTE2LDEyMSwxMTIsMTAxLDIxOCwKKyAgICA4LDk1LDk1LDk5LDExMSwxMDAsMTAxLDk1LDk1LDExNCwxNDIsMCwwLDAsMTE0LDE3LAorICAgIDAsMCwwLDExNCwxMzIsMCwwLDAsMTE0LDE2LDAsMCwwLDExNCwyMCwwLAorICAgIDAsMCw5MCwxNyw5NSw4Miw2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCwKKyAgICA4NSw3Nyw2Niw2OSw4MiwxMTQsNzcsMCwwLDAsMTE0LDc2LDAsMCwwLDExNCwKKyAgICA4OCwwLDAsMCwxMTQsNzgsMCwwLDAsOTAsMjMsNjgsNjksNjYsODUsNzEsCisgICAgOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsCisgICAgNjksODMsOTAsMjcsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksCisgICAgODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE0LAorICAgIDgzLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsOTUsMCwwLDAsMTE0LDk5LAorICAgIDAsMCwwLDExNCwxMDEsMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTI3LDAsCisgICAgMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NSwwLDAsMCwxMTQsMTQ4LDAsMCwKKyAgICAwLDExNCwxNTMsMCwwLDAsMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCwxNjAsCisgICAgMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxODEsMCwKKyAgICAwLDAsMTE0LDE5MSwwLDAsMCwxMTQsMjA3LDAsMCwwLDExNCwyMTUsMCwwLAorICAgIDAsMTE0LDIyMCwwLDAsMCwxMTQsMjI2LDAsMCwwLDExNCwyMjEsMCwwLDAsCisgICAgMTE0LDIyNywwLDAsMCwxMTQsMjQ2LDAsMCwwLDExNCwyNDgsMCwwLDAsMTE0LAorICAgIDUsMSwwLDAsMTE0LDIzLDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDMyLAorICAgIDEsMCwwLDExNCwzNCwxLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsOCw2MCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw2Miw4LDAsMCwwLDExNSwxMDgsMCwwLDAsNCwKKyAgICAxNiw0LDEsNCwxLDIsMSw2LDMsOCwxNyw4LDUsOCw1LDgsCisgICAgNiw4LDEyLDgsMTAsOCw5LDgsNSw4LDcsMTAsMjIsMTAsMTIyLDE2LAorICAgIDEsMTIsMiw0LDEsNCwyLDYsMiw2LDIsOCwyLDE2LDQ1LDgsCisgICAgMzQsOCwxOSw4LDEyLDgsMTIsOCwyOCw4LDE3LDEwLDU1LDEwLDEyLDEwLAorICAgIDEwLDgsMTQsNiwzLDQsMSwxNCw2NywxNCw2NCwxNCwyOSwxNiwxMTAsMTQsCisgICAgNDEsMTgsNDUsMTgsMTYsNCwzLDE4LDUzLDE0LDYwLDE0LDQyLDE0LDEyNywwLAorICAgIDUsMTQsMTI3LDAsMjIsMTAsMjMsOCwxMSw4LDY4LAogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weSBiL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQppbmRleCBkOWEwODU1Li4wMjNjOWU2IDEwMDc1NQotLS0gYS9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKKysrIGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CkBAIC0zLDI0ICszLDM0IEBACiAoZm9yIGNvbXBpbGVycyBzdXBwb3J0aW5nIGNvbXB1dGVkIGdvdG9zIG9yICJsYWJlbHMtYXMtdmFsdWVzIiwgc3VjaCBhcyBnY2MpLgogIiIiCiAKLSMgVGhpcyBjb2RlIHNob3VsZCBzdGF5IGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi4zLCBhdCBsZWFzdCB3aGlsZQotIyBzb21lIG9mIHRoZSBidWlsZGJvdHMgaGF2ZSBQeXRob24gMi4zIGFzIHRoZWlyIHN5c3RlbSBQeXRob24uCi0KLWltcG9ydCBpbXAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogCiAKLWRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKLSAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KLSAgICAiIiIKLSAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAotICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiKQotICAgIHJldHVybiBpbXAubG9hZF9tb2R1bGUobW9kbmFtZSwgKmltcC5maW5kX21vZHVsZShtb2RuYW1lLCBbbW9kcGF0aF0pKQordHJ5OgorICAgIGZyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBpbXAKKworICAgIGRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKKyAgICAgICAgIiIiRmluZHMgYW5kIHJldHVybnMgYSBtb2R1bGUgaW4gdGhlIGxvY2FsIGRpc3QvY2hlY2tvdXQuCisgICAgICAgICIiIgorICAgICAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAiTGliIikKKyAgICAgICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShtb2RuYW1lLCAqaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUsIFttb2RwYXRoXSkpCitlbHNlOgorICAgIGRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKKyAgICAgICAgIiIiRmluZHMgYW5kIHJldHVybnMgYSBtb2R1bGUgaW4gdGhlIGxvY2FsIGRpc3QvY2hlY2tvdXQuCisgICAgICAgICIiIgorICAgICAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAiTGliIiwgbW9kbmFtZSArICIucHkiKQorICAgICAgICByZXR1cm4gU291cmNlRmlsZUxvYWRlcihtb2RuYW1lLCBtb2RwYXRoKS5sb2FkX21vZHVsZSgpCisKIAogZGVmIHdyaXRlX2NvbnRlbnRzKGYpOgogICAgICIiIldyaXRlIEMgY29kZSBjb250ZW50cyB0byB0aGUgdGFyZ2V0IGZpbGUgb2JqZWN0LgogICAgICIiIgotICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCJvcGNvZGUiKQorICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCdvcGNvZGUnKQogICAgIHRhcmdldHMgPSBbJ191bmtub3duX29wY29kZSddICogMjU2CiAgICAgZm9yIG9wbmFtZSwgb3AgaW4gb3Bjb2RlLm9wbWFwLml0ZW1zKCk6CiAgICAgICAgIHRhcmdldHNbb3BdID0gIlRBUkdFVF8lcyIgJSBvcG5hbWUKQEAgLTI5LDE1ICszOSwxNyBAQAogICAgIGYud3JpdGUoIlxufTtcbiIpCiAKIAotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpbXBvcnQgc3lzCi0gICAgYXNzZXJ0IGxlbihzeXMuYXJndikgPCAzLCAiVG9vIG1hbnkgYXJndW1lbnRzIgorZGVmIG1haW4oKToKKyAgICBpZiBsZW4oc3lzLmFyZ3YpID49IDM6CisgICAgICAgIHN5cy5leGl0KCJUb28gbWFueSBhcmd1bWVudHMiKQogICAgIGlmIGxlbihzeXMuYXJndikgPT0gMjoKICAgICAgICAgdGFyZ2V0ID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICB0YXJnZXQgPSAiUHl0aG9uL29wY29kZV90YXJnZXRzLmgiCi0gICAgZiA9IG9wZW4odGFyZ2V0LCAidyIpCi0gICAgdHJ5OgorICAgIHdpdGggb3Blbih0YXJnZXQsICJ3IikgYXMgZjoKICAgICAgICAgd3JpdGVfY29udGVudHMoZikKLSAgICBmaW5hbGx5OgotICAgICAgICBmLmNsb3NlKCkKKyAgICBwcmludCgiSnVtcCB0YWJsZSB3cml0dGVuIGludG8gJXMiICUgdGFyZ2V0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9QeXRob24vbWFyc2hhbC5jIGIvUHl0aG9uL21hcnNoYWwuYwppbmRleCA1YjhkZTk5Li44N2E0YjI0IDEwMDY0NAotLS0gYS9QeXRob24vbWFyc2hhbC5jCisrKyBiL1B5dGhvbi9tYXJzaGFsLmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgIG0gPSBwLT5lbmQgLSBwLT5wdHI7CiAgICAgaWYgKHAtPmZwICE9IE5VTEwpIHsKICAgICAgICAgaWYgKG4gPD0gbSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBtZW1jcHkocC0+cHRyLCBzLCBuKTsKICAgICAgICAgICAgIHAtPnB0ciArPSBuOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAobiA8PSBtIHx8IHdfcmVzZXJ2ZShwLCBuIC0gbSkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLT5wdHIsIHMsIG4pOworICAgICAgICAgICAgbWVtY3B5KHAtPnB0ciwgcywgbik7CiAgICAgICAgICAgICBwLT5wdHIgKz0gbjsKICAgICAgICAgfQogICAgIH0KQEAgLTI2MywxMCArMjYzLDEwIEBACiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAxKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkocC0+aGFzaHRhYmxlLCB2KTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHAtPmhhc2h0YWJsZSwgdik7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgLyogd3JpdGUgdGhlIHJlZmVyZW5jZSBpbmRleCB0byB0aGUgc3RyZWFtICovCi0gICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHAtPmhhc2h0YWJsZSwgJncsIHNpemVvZih3KSwgZW50cnkpOworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShwLT5oYXNodGFibGUsIGVudHJ5LCB3KTsKICAgICAgICAgLyogd2UgZG9uJ3Qgc3RvcmUgImxvbmciIGluZGljZXMgaW4gdGhlIGRpY3QgKi8KICAgICAgICAgYXNzZXJ0KDAgPD0gdyAmJiB3IDw9IDB4N2ZmZmZmZmYpOwogICAgICAgICB3X2J5dGUoVFlQRV9SRUYsIHApOwpAQCAtNTcxLDcgKzU3MSw4IEBACiB3X2luaXRfcmVmcyhXRklMRSAqd2YsIGludCB2ZXJzaW9uKQogewogICAgIGlmICh2ZXJzaW9uID49IDMpIHsKLSAgICAgICAgd2YtPmhhc2h0YWJsZSA9IF9QeV9oYXNodGFibGVfbmV3KHNpemVvZihpbnQpLCBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAorICAgICAgICB3Zi0+aGFzaHRhYmxlID0gX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZW9mKFB5T2JqZWN0ICopLCBzaXplb2YoaW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKICAgICAgICAgaWYgKHdmLT5oYXNodGFibGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTU4Miw5ICs1ODMsMTMgQEAKIH0KIAogc3RhdGljIGludAotd19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqUHlfVU5VU0VEKGRhdGEpKQord19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgIHZvaWQgKlB5X1VOVVNFRChkYXRhKSkKIHsKLSAgICBQeV9YREVDUkVGKGVudHJ5LT5rZXkpOworICAgIFB5T2JqZWN0ICplbnRyeV9rZXk7CisKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgZW50cnlfa2V5KTsKKyAgICBQeV9YREVDUkVGKGVudHJ5X2tleSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY0Myw3ICs2NDgsNyBAQAogICAgIFB5T2JqZWN0ICpyZWZzOyAgLyogYSBsaXN0ICovCiB9IFJGSUxFOwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiByX3N0cmluZyhQeV9zc2l6ZV90IG4sIFJGSUxFICpwKQogewogICAgIFB5X3NzaXplX3QgcmVhZCA9IC0xOwpAQCAtNzI5LDcgKzczNCw3IEBACiAgICAgICAgIGMgPSBnZXRjKHAtPmZwKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGNoYXIgKnB0ciA9IHJfc3RyaW5nKDEsIHApOworICAgICAgICBjb25zdCBjaGFyICpwdHIgPSByX3N0cmluZygxLCBwKTsKICAgICAgICAgaWYgKHB0ciAhPSBOVUxMKQogICAgICAgICAgICAgYyA9ICoodW5zaWduZWQgY2hhciAqKSBwdHI7CiAgICAgfQpAQCAtNzQwLDkgKzc0NSw5IEBACiByX3Nob3J0KFJGSUxFICpwKQogewogICAgIHNob3J0IHggPSAtMTsKLSAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCi0gICAgYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoMiwgcCk7CisgICAgYnVmZmVyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoMiwgcCk7CiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgICAgIHggPSBidWZmZXJbMF07CiAgICAgICAgIHggfD0gYnVmZmVyWzFdIDw8IDg7CkBAIC03NTYsOSArNzYxLDkgQEAKIHJfbG9uZyhSRklMRSAqcCkKIHsKICAgICBsb25nIHggPSAtMTsKLSAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCi0gICAgYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoNCwgcCk7CisgICAgYnVmZmVyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoNCwgcCk7CiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgICAgIHggPSBidWZmZXJbMF07CiAgICAgICAgIHggfD0gKGxvbmcpYnVmZmVyWzFdIDw8IDg7CkBAIC05NzgsNyArOTgzLDggQEAKIAogICAgIGNhc2UgVFlQRV9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZbMjU2XSwgKnB0cjsKKyAgICAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBkb3VibGUgZHg7CiAgICAgICAgICAgICBuID0gcl9ieXRlKHApOwogICAgICAgICAgICAgaWYgKG4gPT0gRU9GKSB7CkBAIC0xMDAxLDkgKzEwMDcsOSBAQAogCiAgICAgY2FzZSBUWVBFX0JJTkFSWV9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgICAgICAgZG91YmxlIHg7Ci0gICAgICAgICAgICBidWYgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKKyAgICAgICAgICAgIGJ1ZiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOwogICAgICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgeCA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKQEAgLTEwMTYsNyArMTAyMiw4IEBACiAKICAgICBjYXNlIFRZUEVfQ09NUExFWDoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZbMjU2XSwgKnB0cjsKKyAgICAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBQeV9jb21wbGV4IGM7CiAgICAgICAgICAgICBuID0gcl9ieXRlKHApOwogICAgICAgICAgICAgaWYgKG4gPT0gRU9GKSB7CkBAIC0xMDUzLDE1ICsxMDYwLDE1IEBACiAKICAgICBjYXNlIFRZUEVfQklOQVJZX0NPTVBMRVg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZjsKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZjsKICAgICAgICAgICAgIFB5X2NvbXBsZXggYzsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjLnJlYWwgPSBfUHlGbG9hdF9VbnBhY2s4KGJ1ZiwgMSk7CiAgICAgICAgICAgICBpZiAoYy5yZWFsID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjLmltYWcgPSBfUHlGbG9hdF9VbnBhY2s4KGJ1ZiwgMSk7CkBAIC0xMDc0LDcgKzEwODEsNyBAQAogCiAgICAgY2FzZSBUWVBFX1NUUklORzoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciAqcHRyOworICAgICAgICAgICAgY29uc3QgY2hhciAqcHRyOwogICAgICAgICAgICAgbiA9IHJfbG9uZyhwKTsKICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExOSw3ICsxMTI2LDcgQEAKICAgICAgICAgfQogICAgIF9yZWFkX2FzY2lpOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpwdHI7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBwdHIgPSByX3N0cmluZyhuLCBwKTsKICAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzcsNyArMTE0NCw3IEBACiAgICAgICAgIGlzX2ludGVybmVkID0gMTsKICAgICBjYXNlIFRZUEVfVU5JQ09ERToKICAgICAgICAgewotICAgICAgICBjaGFyICpidWZmZXI7CisgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlcjsKIAogICAgICAgICBuID0gcl9sb25nKHApOwogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTEyNjQsNDEgKzEyNzEsNTIgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYmFkIG1hcnNoYWwgZGF0YSAoc2V0IHNpemUgb3V0IG9mIHJhbmdlKSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdiA9ICh0eXBlID09IFRZUEVfU0VUKSA/IFB5U2V0X05ldyhOVUxMKSA6IFB5RnJvemVuU2V0X05ldyhOVUxMKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9TRVQpIHsKLSAgICAgICAgICAgIFJfUkVGKHYpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogbXVzdCB1c2UgZGVsYXllZCByZWdpc3RyYXRpb24gb2YgZnJvemVuc2V0cyBiZWNhdXNlIHRoZXkgbXVzdAotICAgICAgICAgICAgICogYmUgaW5pdCB3aXRoIGEgcmVmY291bnQgb2YgMQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOwotICAgICAgICAgICAgaWYgKGlkeCA8IDApCi0gICAgICAgICAgICAgICAgUHlfQ0xFQVIodik7IC8qIHNpZ25hbCBlcnJvciAqLwotICAgICAgICB9Ci0gICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICB2MiA9IHJfb2JqZWN0KHApOwotICAgICAgICAgICAgaWYgKCB2MiA9PSBOVUxMICkgewotICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJOVUxMIG9iamVjdCBpbiBtYXJzaGFsIGRhdGEgZm9yIHNldCIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICB2ID0gTlVMTDsKKyAgICAgICAgaWYgKG4gPT0gMCAmJiB0eXBlID09IFRZUEVfRlJPWkVOU0VUKSB7CisgICAgICAgICAgICAvKiBjYWxsIGZyb3plbnNldCgpIHRvIGdldCB0aGUgZW1wdHkgZnJvemVuc2V0IHNpbmdsZXRvbiAqLworICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKSZQeUZyb3plblNldF9UeXBlLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHYsIHYyKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodjIpOwotICAgICAgICAgICAgICAgIHYgPSBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgIFJfUkVGKHYpOworICAgICAgICAgICAgcmV0dmFsID0gdjsKICAgICAgICAgfQotICAgICAgICBpZiAodHlwZSAhPSBUWVBFX1NFVCkKLSAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKLSAgICAgICAgcmV0dmFsID0gdjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2ID0gKHR5cGUgPT0gVFlQRV9TRVQpID8gUHlTZXRfTmV3KE5VTEwpIDogUHlGcm96ZW5TZXRfTmV3KE5VTEwpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9TRVQpIHsKKyAgICAgICAgICAgICAgICBSX1JFRih2KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbXVzdCB1c2UgZGVsYXllZCByZWdpc3RyYXRpb24gb2YgZnJvemVuc2V0cyBiZWNhdXNlIHRoZXkgbXVzdAorICAgICAgICAgICAgICAgICAqIGJlIGluaXQgd2l0aCBhIHJlZmNvdW50IG9mIDEKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOworICAgICAgICAgICAgICAgIGlmIChpZHggPCAwKQorICAgICAgICAgICAgICAgICAgICBQeV9DTEVBUih2KTsgLyogc2lnbmFsIGVycm9yICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgdjIgPSByX29iamVjdChwKTsKKyAgICAgICAgICAgICAgICBpZiAoIHYyID09IE5VTEwgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgb2JqZWN0IGluIG1hcnNoYWwgZGF0YSBmb3Igc2V0Iik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHYsIHYyKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2Mik7CisgICAgICAgICAgICAgICAgICAgIHYgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0eXBlICE9IFRZUEVfU0VUKQorICAgICAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKKyAgICAgICAgICAgIHJldHZhbCA9IHY7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERToKZGlmZiAtLWdpdCBhL1B5dGhvbi9tb2RzdXBwb3J0LmMgYi9QeXRob24vbW9kc3VwcG9ydC5jCmluZGV4IDBkMDkzNzEuLmFhYmVlOGYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tb2RzdXBwb3J0LmMKKysrIGIvUHl0aG9uL21vZHN1cHBvcnQuYwpAQCAtMjYwLDEzICsyNjAsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhuKTsKICAgICAgICAgfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgY2FzZSAnTCc6Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXZhX2FyZygqcF92YSwgUFlfTE9OR19MT05HKSk7CisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXZhX2FyZygqcF92YSwgbG9uZyBsb25nKSk7CiAKICAgICAgICAgY2FzZSAnSyc6Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKChQWV9MT05HX0xPTkcpdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygobG9uZyBsb25nKXZhX2FyZygqcF92YSwgdW5zaWduZWQgbG9uZyBsb25nKSk7CisKICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwpAQCAtMzE4LDcgKzMxNyw3IEBACiAgICAgICAgIGNhc2UgJ1UnOiAgIC8qIFhYWCBkZXByZWNhdGVkIGFsaWFzICovCiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOworICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICAgICAgaWYgKCoqcF9mb3JtYXQgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgKysqcF9mb3JtYXQ7CkBAIC0zNTEsNyArMzUwLDcgQEAKICAgICAgICAgY2FzZSAneSc6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOworICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICAgICAgaWYgKCoqcF9mb3JtYXQgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgKysqcF9mb3JtYXQ7CkBAIC00NjgsOCArNDY3LDcgQEAKICAgICBjb25zdCBjaGFyICpmID0gZm9ybWF0OwogICAgIGludCBuID0gY291bnRmb3JtYXQoZiwgJ1wwJyk7CiAgICAgdmFfbGlzdCBsdmE7Ci0KLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICBQeU9iamVjdCAqcmV0dmFsOwogCiAgICAgaWYgKG4gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ3Nyw5ICs0NzUsMTQgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKG4gPT0gMSkKLSAgICAgICAgcmV0dXJuIGRvX21rdmFsdWUoJmYsICZsdmEsIGZsYWdzKTsKLSAgICByZXR1cm4gZG9fbWt0dXBsZSgmZiwgJmx2YSwgJ1wwJywgbiwgZmxhZ3MpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CisgICAgaWYgKG4gPT0gMSkgeworICAgICAgICByZXR2YWwgPSBkb19ta3ZhbHVlKCZmLCAmbHZhLCBmbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gZG9fbWt0dXBsZSgmZiwgJmx2YSwgJ1wwJywgbiwgZmxhZ3MpOworICAgIH0KKyAgICB2YV9lbmQobHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOwogfQogCiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9teXN0cnRvdWwuYyBiL1B5dGhvbi9teXN0cnRvdWwuYwppbmRleCA5ODQyOWQ0Li5hODU3OTBlIDEwMDY0NAotLS0gYS9QeXRob24vbXlzdHJ0b3VsLmMKKysrIGIvUHl0aG9uL215c3RydG91bC5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBzbWFsbG1heFtiYXNlXSBpcyB0aGUgbGFyZ2VzdCB1bnNpZ25lZCBsb25nIGkgc3VjaCB0aGF0CiAgKiBpICogYmFzZSBkb2Vzbid0IG92ZXJmbG93IHVuc2lnbmVkIGxvbmcuCiAgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHNtYWxsbWF4W10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBzbWFsbG1heFtdID0gewogICAgIDAsIC8qIGJhc2VzIDAgYW5kIDEgYXJlIGludmFsaWQgKi8KICAgICAwLAogICAgIFVMT05HX01BWCAvIDIsCkBAIC02MiwxNCArNjIsMTQgQEAKICAqIE5vdGUgdGhhdCB0aGlzIGlzIHBlc3NpbWlzdGljIGlmIHNpemVvZihsb25nKSA+IDQuCiAgKi8KICNpZiBTSVpFT0ZfTE9ORyA9PSA0Ci1zdGF0aWMgaW50IGRpZ2l0bGltaXRbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgZGlnaXRsaW1pdFtdID0gewogICAgIDAsICAwLCAzMiwgMjAsIDE2LCAxMywgMTIsIDExLCAxMCwgMTAsICAvKiAgMCAtICA5ICovCiAgICAgOSwgIDksICA4LCAgOCwgIDgsICA4LCAgOCwgIDcsICA3LCAgNywgIC8qIDEwIC0gMTkgKi8KICAgICA3LCAgNywgIDcsICA3LCAgNiwgIDYsICA2LCAgNiwgIDYsICA2LCAgLyogMjAgLSAyOSAqLwogICAgIDYsICA2LCAgNiwgIDYsICA2LCAgNiwgIDZ9OyAgICAgICAgICAgICAvKiAzMCAtIDM2ICovCiAjZWxpZiBTSVpFT0ZfTE9ORyA9PSA4CiAvKiBbaW50KG1hdGguZmxvb3IobWF0aC5sb2coMioqNjQsIGkpKSkgZm9yIGkgaW4gcmFuZ2UoMiwgMzcpXSAqLwotc3RhdGljIGludCBkaWdpdGxpbWl0W10gPSB7CitzdGF0aWMgY29uc3QgaW50IGRpZ2l0bGltaXRbXSA9IHsKICAgICAgICAgIDAsICAgMCwgNjQsIDQwLCAzMiwgMjcsIDI0LCAyMiwgMjEsIDIwLCAgLyogIDAgLSAgOSAqLwogICAgIDE5LCAgMTgsIDE3LCAxNywgMTYsIDE2LCAxNiwgMTUsIDE1LCAxNSwgIC8qIDEwIC0gMTkgKi8KICAgICAxNCwgIDE0LCAxNCwgMTQsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsICAvKiAyMCAtIDI5ICovCmRpZmYgLS1naXQgYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaCBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCmluZGV4IDE5MjU5ZTEuLjcyZDI0MDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCisrKyBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCkBAIC04NCw3ICs4NCw3IEBACiAgICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQX0ZJTklTSCwKICAgICAmJlRBUkdFVF9SRVRVUk5fVkFMVUUsCiAgICAgJiZUQVJHRVRfSU1QT1JUX1NUQVIsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfU0VUVVBfQU5OT1RBVElPTlMsCiAgICAgJiZUQVJHRVRfWUlFTERfVkFMVUUsCiAgICAgJiZUQVJHRVRfUE9QX0JMT0NLLAogICAgICYmVEFSR0VUX0VORF9GSU5BTExZLApAQCAtMTI2LDIyICsxMjYsMjIgQEAKICAgICAmJlRBUkdFVF9MT0FEX0ZBU1QsCiAgICAgJiZUQVJHRVRfU1RPUkVfRkFTVCwKICAgICAmJlRBUkdFVF9ERUxFVEVfRkFTVCwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9TVE9SRV9BTk5PVEFUSU9OLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX1JBSVNFX1ZBUkFSR1MsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTiwKICAgICAmJlRBUkdFVF9NQUtFX0ZVTkNUSU9OLAogICAgICYmVEFSR0VUX0JVSUxEX1NMSUNFLAotICAgICYmVEFSR0VUX01BS0VfQ0xPU1VSRSwKKyAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9MT0FEX0NMT1NVUkUsCiAgICAgJiZUQVJHRVRfTE9BRF9ERVJFRiwKICAgICAmJlRBUkdFVF9TVE9SRV9ERVJFRiwKICAgICAmJlRBUkdFVF9ERUxFVEVfREVSRUYsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9WQVIsCisgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9LVywKLSAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX1ZBUl9LVywKKyAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX0VYLAogICAgICYmVEFSR0VUX1NFVFVQX1dJVEgsCiAgICAgJiZUQVJHRVRfRVhURU5ERURfQVJHLAogICAgICYmVEFSR0VUX0xJU1RfQVBQRU5ELApAQCAtMTU0LDEwICsxNTQsMTAgQEAKICAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0ssCiAgICAgJiZUQVJHRVRfQlVJTERfU0VUX1VOUEFDSywKICAgICAmJlRBUkdFVF9TRVRVUF9BU1lOQ19XSVRILAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0ZPUk1BVF9WQUxVRSwKKyAgICAmJlRBUkdFVF9CVUlMRF9DT05TVF9LRVlfTUFQLAorICAgICYmVEFSR0VUX0JVSUxEX1NUUklORywKKyAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLApkaWZmIC0tZ2l0IGEvUHl0aG9uL3BlZXBob2xlLmMgYi9QeXRob24vcGVlcGhvbGUuYwppbmRleCA0ZTY1N2ZhLi5kZDhmM2U0IDEwMDY0NAotLS0gYS9QeXRob24vcGVlcGhvbGUuYworKysgYi9QeXRob24vcGVlcGhvbGUuYwpAQCAtOCw4ICs4LDggQEAKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJ3b3JkY29kZV9oZWxwZXJzLmgiCiAKLSNkZWZpbmUgR0VUQVJHKGFyciwgaSkgKChpbnQpKChhcnJbaSsyXTw8OCkgKyBhcnJbaSsxXSkpCiAjZGVmaW5lIFVOQ09ORElUSU9OQUxfSlVNUChvcCkgIChvcD09SlVNUF9BQlNPTFVURSB8fCBvcD09SlVNUF9GT1JXQVJEKQogI2RlZmluZSBDT05ESVRJT05BTF9KVU1QKG9wKSAob3A9PVBPUF9KVU1QX0lGX0ZBTFNFIHx8IG9wPT1QT1BfSlVNUF9JRl9UUlVFIFwKICAgICB8fCBvcD09SlVNUF9JRl9GQUxTRV9PUl9QT1AgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCkBAIC0xNywyMiArMTcsMTYgQEAKICAgICB8fCBvcD09UE9QX0pVTVBfSUZfRkFMU0UgfHwgb3A9PVBPUF9KVU1QX0lGX1RSVUUgXAogICAgIHx8IG9wPT1KVU1QX0lGX0ZBTFNFX09SX1BPUCB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKICNkZWZpbmUgSlVNUFNfT05fVFJVRShvcCkgKG9wPT1QT1BfSlVNUF9JRl9UUlVFIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQotI2RlZmluZSBHRVRKVU1QVEdUKGFyciwgaSkgKEdFVEFSRyhhcnIsaSkgKyAoQUJTT0xVVEVfSlVNUChhcnJbaV0pID8gMCA6IGkrMykpCi0jZGVmaW5lIFNFVEFSRyhhcnIsIGksIHZhbCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYXNzZXJ0KDAgPD0gdmFsICYmIHZhbCA8PSAweGZmZmYpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYXJyW2krMl0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKT4+OCk7ICAgICBcCi0gICAgYXJyW2krMV0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKSAmIDI1NSk7ICBcCi19IHdoaWxlKDApCi0jZGVmaW5lIENPREVTSVpFKG9wKSAgKEhBU19BUkcob3ApID8gMyA6IDEpCi0jZGVmaW5lIElTQkFTSUNCTE9DSyhibG9ja3MsIHN0YXJ0LCBieXRlcykgXAotICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3Nbc3RhcnQrYnl0ZXMtMV0pCisjZGVmaW5lIEdFVEpVTVBUR1QoYXJyLCBpKSAoZ2V0X2FyZyhhcnIsIGkpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyBcCisgICAgICAgIChBQlNPTFVURV9KVU1QKF9QeV9PUENPREUoYXJyW2ldKSkgPyAwIDogaSsxKSkKKyNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGVuZCkgXAorICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3NbZW5kXSkKIAogCiAjZGVmaW5lIENPTlNUX1NUQUNLX0NSRUFURSgpIHsgXAogICAgIGNvbnN0X3N0YWNrX3NpemUgPSAyNTY7IFwKICAgICBjb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeU9iamVjdCAqLCBjb25zdF9zdGFja19zaXplKTsgXAotICAgIGxvYWRfY29uc3Rfc3RhY2sgPSBQeU1lbV9OZXcoUHlfc3NpemVfdCwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKLSAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICBpZiAoIWNvbnN0X3N0YWNrKSB7IFwKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsgXAogICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAogICAgIH0gXApAQCAtNDEsMjcgKzM1LDIzIEBACiAjZGVmaW5lIENPTlNUX1NUQUNLX0RFTEVURSgpIGRvIHsgXAogICAgIGlmIChjb25zdF9zdGFjaykgXAogICAgICAgICBQeU1lbV9GcmVlKGNvbnN0X3N0YWNrKTsgXAotICAgIGlmIChsb2FkX2NvbnN0X3N0YWNrKSBcCi0gICAgICAgIFB5TWVtX0ZyZWUobG9hZF9jb25zdF9zdGFjayk7IFwKICAgICB9IHdoaWxlKDApCiAKLSNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKGNvbnN0X3N0YWNrX3RvcCArIDEpCisjZGVmaW5lIENPTlNUX1NUQUNLX0xFTigpICgodW5zaWduZWQpKGNvbnN0X3N0YWNrX3RvcCArIDEpKQogCiAjZGVmaW5lIENPTlNUX1NUQUNLX1BVU0hfT1AoaSkgZG8geyBcCiAgICAgUHlPYmplY3QgKl94OyBcCi0gICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7IFwKLSAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCi0gICAgX3ggPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCisgICAgYXNzZXJ0KF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTE9BRF9DT05TVCk7IFwKKyAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiAoUHlfc3NpemVfdClnZXRfYXJnKGNvZGVzdHIsIGkpKTsgXAorICAgIF94ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgZ2V0X2FyZyhjb2Rlc3RyLCBpKSk7IFwKICAgICBpZiAoKytjb25zdF9zdGFja190b3AgPj0gY29uc3Rfc3RhY2tfc2l6ZSkgeyBcCiAgICAgICAgIGNvbnN0X3N0YWNrX3NpemUgKj0gMjsgXAogICAgICAgICBQeU1lbV9SZXNpemUoY29uc3Rfc3RhY2ssIFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgICAgIFB5TWVtX1Jlc2l6ZShsb2FkX2NvbnN0X3N0YWNrLCBQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAotICAgICAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICAgICAgaWYgKCFjb25zdF9zdGFjaykgeyBcCiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCiAgICAgICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAogICAgICAgICB9IFwKICAgICB9IFwKLSAgICBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0gPSBpOyBcCiAgICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IF94OyBcCiAgICAgaW5fY29uc3RzID0gMTsgXAogICAgIH0gd2hpbGUoMCkKQEAgLTcwLDIyICs2MCwxMTQgQEAKICAgICBjb25zdF9zdGFja190b3AgPSAtMTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19UT1AoKSBcCi0gICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXQotCiAjZGVmaW5lIENPTlNUX1NUQUNLX0xBU1ROKGkpIFwKLSAgICAmY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wIC0gaSArIDFdCisgICAgJmNvbnN0X3N0YWNrW0NPTlNUX1NUQUNLX0xFTigpIC0gaV0KIAogI2RlZmluZSBDT05TVF9TVEFDS19QT1AoaSkgZG8geyBcCi0gICAgYXNzZXJ0KGNvbnN0X3N0YWNrX3RvcCArIDEgPj0gaSk7IFwKKyAgICBhc3NlcnQoQ09OU1RfU1RBQ0tfTEVOKCkgPj0gaSk7IFwKICAgICBjb25zdF9zdGFja190b3AgLT0gaTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19PUF9MQVNUTihpKSBcCi0gICAgKChjb25zdF9zdGFja190b3AgPj0gaSAtIDEpID8gbG9hZF9jb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0gOiAtMSkKKy8qIFNjYW5zIGJhY2sgTiBjb25zZWN1dGl2ZSBMT0FEX0NPTlNUIGluc3RydWN0aW9ucywgc2tpcHBpbmcgTk9QcywKKyAgIHJldHVybnMgaW5kZXggb2YgdGhlIE50aCBsYXN0J3MgTE9BRF9DT05TVCdzIEVYVEVOREVEX0FSRyBwcmVmaXguCisgICBDYWxsZXJzIGFyZSByZXNwb25zaWJsZSB0byBjaGVjayBDT05TVF9TVEFDS19MRU4gYmVmb3JlaGFuZC4KKyovCitzdGF0aWMgUHlfc3NpemVfdAorbGFzdG5fY29uc3Rfc3RhcnQoY29uc3QgX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbikKK3sKKyAgICBhc3NlcnQobiA+IDApOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaS0tOworICAgICAgICBhc3NlcnQoaSA+PSAwKTsKKyAgICAgICAgaWYgKF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTE9BRF9DT05TVCkgeworICAgICAgICAgICAgaWYgKCEtLW4pIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaSA+IDAgJiYgX1B5X09QQ09ERShjb2Rlc3RyW2ktMV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTk9QIHx8CisgICAgICAgICAgICAgICAgICAgX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBFWFRFTkRFRF9BUkcpOworICAgICAgICB9CisgICAgfQorfQogCisvKiBTY2FucyB0aHJvdWdoIEVYVEVOREVEIEFSR3MsIHNlZWtpbmcgdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlICovCitzdGF0aWMgUHlfc3NpemVfdAorZmluZF9vcChjb25zdCBfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgaSkKK3sKKyAgICB3aGlsZSAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgaSsrOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KIAotLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIC4uLiBMT0FEX0NPTlNUIGNuIEJVSUxEX1RVUExFIG4KKy8qIEdpdmVuIHRoZSBpbmRleCBvZiB0aGUgZWZmZWN0aXZlIG9wY29kZSwKKyAgIHNjYW4gYmFjayB0byBjb25zdHJ1Y3QgdGhlIG9wYXJnIHdpdGggRVhURU5ERURfQVJHICovCitzdGF0aWMgdW5zaWduZWQgaW50CitnZXRfYXJnKGNvbnN0IF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpKQoreworICAgIF9QeV9DT0RFVU5JVCB3b3JkOworICAgIHVuc2lnbmVkIGludCBvcGFyZyA9IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICBpZiAoaSA+PSAxICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0xXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgIG9wYXJnIHw9IF9QeV9PUEFSRyh3b3JkKSA8PCA4OworICAgICAgICBpZiAoaSA+PSAyICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0yXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICBvcGFyZyB8PSBfUHlfT1BBUkcod29yZCkgPDwgMTY7CisgICAgICAgICAgICBpZiAoaSA+PSAzICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0zXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICAgICAgb3BhcmcgfD0gX1B5X09QQVJHKHdvcmQpIDw8IDI0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvcGFyZzsKK30KKworLyogRmlsbCB0aGUgcmVnaW9uIHdpdGggTk9Qcy4gKi8KK3N0YXRpYyB2b2lkCitmaWxsX25vcHMoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBtZW1zZXQoY29kZXN0ciArIHN0YXJ0LCBOT1AsIChlbmQgLSBzdGFydCkgKiBzaXplb2YoX1B5X0NPREVVTklUKSk7Cit9CisKKy8qIEdpdmVuIHRoZSBpbmRleCBvZiB0aGUgZWZmZWN0aXZlIG9wY29kZSwKKyAgIGF0dGVtcHQgdG8gcmVwbGFjZSB0aGUgYXJndW1lbnQsIHRha2luZyBpbnRvIGFjY291bnQgRVhURU5ERURfQVJHLgorICAgUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBvciB0aGUgbmV3IG9wIGluZGV4IG9uIHN1Y2Nlc3MgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitzZXRfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpLCB1bnNpZ25lZCBpbnQgb3BhcmcpCit7CisgICAgdW5zaWduZWQgaW50IGN1cmFyZyA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgaW50IGN1cmlsZW4sIG5ld2lsZW47CisgICAgaWYgKGN1cmFyZyA9PSBvcGFyZykKKyAgICAgICAgcmV0dXJuIGk7CisgICAgY3VyaWxlbiA9IGluc3Ryc2l6ZShjdXJhcmcpOworICAgIG5ld2lsZW4gPSBpbnN0cnNpemUob3BhcmcpOworICAgIGlmIChjdXJpbGVuIDwgbmV3aWxlbikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd3JpdGVfb3BfYXJnKGNvZGVzdHIgKyBpICsgMSAtIGN1cmlsZW4sIF9QeV9PUENPREUoY29kZXN0cltpXSksIG9wYXJnLCBuZXdpbGVuKTsKKyAgICBmaWxsX25vcHMoY29kZXN0ciwgaSArIDEgLSBjdXJpbGVuICsgbmV3aWxlbiwgaSArIDEpOworICAgIHJldHVybiBpLWN1cmlsZW4rbmV3aWxlbjsKK30KKworLyogQXR0ZW1wdCB0byB3cml0ZSBvcC9hcmcgYXQgZW5kIG9mIHNwZWNpZmllZCByZWdpb24gb2YgbWVtb3J5LgorICAgUHJlY2VkaW5nIG1lbW9yeSBpbiB0aGUgcmVnaW9uIGlzIG92ZXJ3cml0dGVuIHdpdGggTk9Qcy4KKyAgIFJldHVybnMgLTEgb24gZmFpbHVyZSwgb3AgaW5kZXggb24gc3VjY2VzcyAqLworc3RhdGljIFB5X3NzaXplX3QKK2NvcHlfb3BfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpLCB1bnNpZ25lZCBjaGFyIG9wLAorICAgICAgICAgICAgdW5zaWduZWQgaW50IG9wYXJnLCBQeV9zc2l6ZV90IG1heGkpCit7CisgICAgaW50IGlsZW4gPSBpbnN0cnNpemUob3BhcmcpOworICAgIGlmIChpICsgaWxlbiA+IG1heGkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIG1heGkgLSBpbGVuLCBvcCwgb3BhcmcsIGlsZW4pOworICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpLCBtYXhpIC0gaWxlbik7CisgICAgcmV0dXJuIG1heGkgLSAxOworfQorCisvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEsIExPQURfQ09OU1QgYzIgLi4uIExPQURfQ09OU1QgY24sIEJVSUxEX1RVUExFIG4KICAgIHdpdGggICAgTE9BRF9DT05TVCAoYzEsIGMyLCAuLi4gY24pLgogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQogICAgbmV3IGNvbnN0YW50IChjMSwgYzIsIC4uLiBjbikgY2FuIGJlIGFwcGVuZGVkLgpAQCAtOTQsOSArMTc2LDEwIEBACiAgICBBbHNvIHdvcmtzIGZvciBCVUlMRF9MSVNUIGFuZCBCVUlMVF9TRVQgd2hlbiBmb2xsb3dlZCBieSBhbiAiaW4iIG9yICJub3QgaW4iCiAgICB0ZXN0OyBmb3IgQlVJTERfU0VUIGl0IGFzc2VtYmxlcyBhIGZyb3plbnNldCByYXRoZXIgdGhhbiBhIHR1cGxlLgogKi8KLXN0YXRpYyBpbnQKLXR1cGxlX29mX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeV9zc2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfdHVwbGVfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvcGNvZGVfZW5kLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcywgaW50IG4pCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqY29uc3RhbnQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW5fY29uc3RzOwpAQCAtMTA2LDkgKzE4OSw5IEBACiAKICAgICAvKiBCdWlsZHVwIG5ldyB0dXBsZSBvZiBjb25zdGFudHMgKi8KICAgICBuZXdjb25zdCA9IFB5VHVwbGVfTmV3KG4pOwotICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CisgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewogICAgICAgICBjb25zdGFudCA9IG9ianNbaV07CiAgICAgICAgIFB5X0lOQ1JFRihjb25zdGFudCk7CkBAIC0xMTYsMzAgKzE5OSwyNiBAQAogICAgIH0KIAogICAgIC8qIElmIGl0J3MgYSBCVUlMRF9TRVQsIHVzZSB0aGUgUHlUdXBsZSB3ZSBqdXN0IGJ1aWx0IHRvIGNyZWF0ZSBhCi0gICAgICBQeUZyb3plblNldCwgYW5kIHVzZSB0aGF0IGFzIHRoZSBjb25zdGFudCBpbnN0ZWFkOiAqLwotICAgIGlmIChjb2Rlc3RyWzBdID09IEJVSUxEX1NFVCkgewotICAgICAgICBQeU9iamVjdCAqdHVwbGUgPSBuZXdjb25zdDsKLSAgICAgICAgbmV3Y29uc3QgPSBQeUZyb3plblNldF9OZXcodHVwbGUpOwotICAgICAgICBQeV9ERUNSRUYodHVwbGUpOwotICAgICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCisgICAgaWYgKG9wY29kZSA9PSBCVUlMRF9TRVQpIHsKKyAgICAgICAgUHlfU0VUUkVGKG5ld2NvbnN0LCBQeUZyb3plblNldF9OZXcobmV3Y29uc3QpKTsKKyAgICAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgb250byBjb25zdHMgKi8KKyAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUHMgb3ZlciBvbGQgTE9BRF9DT05TVFMgYW5kCi0gICAgICAgYWRkIGEgbmV3IExPQURfQ09OU1QgbmV3Y29uc3Qgb24gdG9wIG9mIHRoZSBCVUlMRF9UVVBMRSBuICovCi0gICAgY29kZXN0clswXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDAsIGxlbl9jb25zdHMpOwotICAgIHJldHVybiAxOworICAgIHJldHVybiBjb3B5X29wX2FyZyhjb2Rlc3RyLCBjX3N0YXJ0LCBMT0FEX0NPTlNULCBsZW5fY29uc3RzLCBvcGNvZGVfZW5kKTsKIH0KIAotLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIEJJTk9QCisvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEsIExPQURfQ09OU1QgYzIsIEJJTk9QCiAgICB3aXRoICAgIExPQURfQ09OU1QgYmlub3AoYzEsYzIpCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgY2FuIGJlIGFwcGVuZGVkLgpAQCAtMTQ5LDIwICsyMjgsMjEgQEAKICAgIGlzIGJlbG93IGEgdGhyZXNob2xkIHZhbHVlLiAgVGhhdCBrZWVwcyBweWMgZmlsZXMgZnJvbQogICAgYmVjb21pbmcgbGFyZ2UgaW4gdGhlIHByZXNlbmNlIG9mIGNvZGUgbGlrZTogIChOb25lLCkqMTAwMC4KICovCi1zdGF0aWMgaW50Ci1mb2xkX2Jpbm9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfYmlub3BzX29uX2NvbnN0YW50cyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgY19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9wY29kZV9lbmQsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcykKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICp2LCAqdzsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHMsIHNpemU7Ci0gICAgaW50IG9wY29kZTsKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KICAgICB2ID0gb2Jqc1swXTsKICAgICB3ID0gb2Jqc1sxXTsKLSAgICBvcGNvZGUgPSBjb2Rlc3RyWzBdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9Qb3dlcih2LCB3LCBQeV9Ob25lKTsKQEAgLTIwOCw1MCArMjg4LDQ4IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGJpbmFyeSBvcGVyYXRpb24gJWQgb24gYSBjb25zdGFudCIsCiAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkKKyAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNpemUgPSBQeU9iamVjdF9TaXplKG5ld2NvbnN0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9IGVsc2UgaWYgKHNpemUgPiAyMCkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgaW50byBjb25zdHMgdGFibGUgKi8KLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUCBOT1AgTk9QIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgY29kZXN0clstMl0gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCAtMiwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCi1zdGF0aWMgaW50Ci1mb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKK3N0YXRpYyBQeV9zc2l6ZV90Citmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgY19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb3Bjb2RlX2VuZCwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3Q7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzOwotICAgIGludCBvcGNvZGU7CiAKICAgICAvKiBQcmUtY29uZGl0aW9ucyAqLwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChjb25zdHMpKTsKLSAgICBhc3NlcnQoY29kZXN0clswXSA9PSBMT0FEX0NPTlNUKTsKKyAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAKICAgICAvKiBDcmVhdGUgbmV3IGNvbnN0YW50ICovCi0gICAgb3Bjb2RlID0gY29kZXN0clszXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKQEAgLTI2NywzNSArMzQ1LDMxIEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHVuYXJ5IG9wZXJhdGlvbiAlZCBvbiBhIGNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKQorICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBBcHBlbmQgZm9sZGVkIGNvbnN0YW50IGludG8gY29uc3RzIHRhYmxlICovCi0gICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogICAgIGlmIChQeUxpc3RfQXBwZW5kKGNvbnN0cywgbmV3Y29uc3QpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAKLSAgICAvKiBXcml0ZSBOT1AgTE9BRF9DT05TVCBuZXdjb25zdCAqLwotICAgIGNvZGVzdHJbMF0gPSBOT1A7Ci0gICAgY29kZXN0clsxXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDEsIGxlbl9jb25zdHMpOwotICAgIHJldHVybiAxOworICAgIHJldHVybiBjb3B5X29wX2FyZyhjb2Rlc3RyLCBjX3N0YXJ0LCBMT0FEX0NPTlNULCBsZW5fY29uc3RzLCBvcGNvZGVfZW5kKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCAqCi1tYXJrYmxvY2tzKHVuc2lnbmVkIGNoYXIgKmNvZGUsIFB5X3NzaXplX3QgbGVuKQorbWFya2Jsb2NrcyhfUHlfQ09ERVVOSVQgKmNvZGUsIFB5X3NzaXplX3QgbGVuKQogewogICAgIHVuc2lnbmVkIGludCAqYmxvY2tzID0gUHlNZW1fTmV3KHVuc2lnbmVkIGludCwgbGVuKTsKLSAgICBpbnQgaSxqLCBvcGNvZGUsIGJsb2NrY250ID0gMDsKKyAgICBpbnQgaSwgaiwgb3Bjb2RlLCBibG9ja2NudCA9IDA7CiAKICAgICBpZiAoYmxvY2tzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMwNCw4ICszNzgsOCBAQAogICAgIG1lbXNldChibG9ja3MsIDAsIGxlbipzaXplb2YoaW50KSk7CiAKICAgICAvKiBNYXJrIGxhYmVscyBpbiB0aGUgZmlyc3QgcGFzcyAqLwotICAgIGZvciAoaT0wIDsgaTxsZW4gOyBpKz1DT0RFU0laRShvcGNvZGUpKSB7Ci0gICAgICAgIG9wY29kZSA9IGNvZGVbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUoY29kZVtpXSk7CiAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgICAgICBjYXNlIEZPUl9JVEVSOgogICAgICAgICAgICAgY2FzZSBKVU1QX0ZPUldBUkQ6CkBAIC0zMjEsMTIgKzM5NSwxMyBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgICAgIGogPSBHRVRKVU1QVEdUKGNvZGUsIGkpOworICAgICAgICAgICAgICAgIGFzc2VydChqIDwgbGVuKTsKICAgICAgICAgICAgICAgICBibG9ja3Nbal0gPSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIC8qIEJ1aWxkIGJsb2NrIG51bWJlcnMgaW4gdGhlIHNlY29uZCBwYXNzICovCi0gICAgZm9yIChpPTAgOyBpPGxlbiA7IGkrKykgeworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBibG9ja2NudCArPSBibG9ja3NbaV07ICAgICAgICAgIC8qIGluY3JlbWVudCBibG9ja2NudCBvdmVyIGxhYmVscyAqLwogICAgICAgICBibG9ja3NbaV0gPSBibG9ja2NudDsKICAgICB9CkBAIC0zMzcsMzMgKzQxMiwyNyBAQAogICAgVGhlIGNvbnN0cyBvYmplY3Qgc2hvdWxkIHN0aWxsIGJlIGluIGxpc3QgZm9ybSB0byBhbGxvdyBuZXcgY29uc3RhbnRzCiAgICB0byBiZSBhcHBlbmRlZC4KIAotICAgVG8ga2VlcCB0aGUgb3B0aW1pemVyIHNpbXBsZSwgaXQgYmFpbHMgb3V0IChkb2VzIG5vdGhpbmcpIGZvciBjb2RlIHRoYXQKLSAgIGhhcyBhIGxlbmd0aCBvdmVyIDMyLDcwMCwgYW5kIGRvZXMgbm90IGNhbGN1bGF0ZSBleHRlbmRlZCBhcmd1bWVudHMuCi0gICBUaGF0IGFsbG93cyB1cyB0byBhdm9pZCBvdmVyZmxvdyBhbmQgc2lnbiBpc3N1ZXMuIExpa2V3aXNlLCBpdCBiYWlscyB3aGVuCi0gICB0aGUgbGluZW5vIHRhYmxlIGhhcyBjb21wbGV4IGVuY29kaW5nIGZvciBnYXBzID49IDI1NS4gRVhURU5ERURfQVJHIGNhbgotICAgYXBwZWFyIGJlZm9yZSBNQUtFX0ZVTkNUSU9OOyBpbiB0aGlzIGNhc2UgYm90aCBvcGNvZGVzIGFyZSBza2lwcGVkLgotICAgRVhURU5ERURfQVJHIHByZWNlZGluZyBhbnkgb3RoZXIgb3Bjb2RlIGNhdXNlcyB0aGUgb3B0aW1pemVyIHRvIGJhaWwuCisgICBUbyBrZWVwIHRoZSBvcHRpbWl6ZXIgc2ltcGxlLCBpdCBiYWlscyB3aGVuIHRoZSBsaW5lbm8gdGFibGUgaGFzIGNvbXBsZXgKKyAgIGVuY29kaW5nIGZvciBnYXBzID49IDI1NS4KIAogICAgT3B0aW1pemF0aW9ucyBhcmUgcmVzdHJpY3RlZCB0byBzaW1wbGUgdHJhbnNmb3JtYXRpb25zIG9jY3VycmluZyB3aXRoaW4gYQogICAgc2luZ2xlIGJhc2ljIGJsb2NrLiAgQWxsIHRyYW5zZm9ybWF0aW9ucyBrZWVwIHRoZSBjb2RlIHNpemUgdGhlIHNhbWUgb3IKICAgIHNtYWxsZXIuICBGb3IgdGhvc2UgdGhhdCByZWR1Y2Ugc2l6ZSwgdGhlIGdhcHMgYXJlIGluaXRpYWxseSBmaWxsZWQgd2l0aAogICAgTk9Qcy4gIExhdGVyIHRob3NlIE5PUHMgYXJlIHJlbW92ZWQgYW5kIHRoZSBqdW1wIGFkZHJlc3NlcyByZXRhcmdldGVkIGluCi0gICBhIHNpbmdsZSBwYXNzLiAgTGluZSBudW1iZXJpbmcgaXMgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuICovCisgICBhIHNpbmdsZSBwYXNzLiAqLwogCiBQeU9iamVjdCAqCiBQeUNvZGVfT3B0aW1pemUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0KiBjb25zdHMsIFB5T2JqZWN0ICpuYW1lcywKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbGluZW5vX29iaikKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG5vdGFiX29iaikKIHsKLSAgICBQeV9zc2l6ZV90IGksIGosIGNvZGVsZW47Ci0gICAgaW50IG5vcHMsIGgsIGFkajsKLSAgICBpbnQgdGd0LCB0Z3R0Z3QsIG9wY29kZTsKLSAgICB1bnNpZ25lZCBjaGFyICpjb2Rlc3RyID0gTlVMTDsKLSAgICB1bnNpZ25lZCBjaGFyICpsaW5lbm87Ci0gICAgaW50ICphZGRybWFwID0gTlVMTDsKLSAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZTsKKyAgICBQeV9zc2l6ZV90IGgsIGksIG5leHRpLCBvcF9zdGFydCwgY29kZWxlbiwgdGd0OworICAgIHVuc2lnbmVkIGludCBqLCBub3BzOworICAgIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLCBuZXh0b3A7CisgICAgX1B5X0NPREVVTklUICpjb2Rlc3RyID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpsbm90YWI7CisgICAgdW5zaWduZWQgaW50IGN1bV9vcmlnX29mZnNldCwgbGFzdF9vZmZzZXQ7CiAgICAgUHlfc3NpemVfdCB0YWJzaXo7CiAgICAgUHlPYmplY3QgKipjb25zdF9zdGFjayA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCAqbG9hZF9jb25zdF9zdGFjayA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja190b3AgPSAtMTsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3NpemUgPSAwOwogICAgIGludCBpbl9jb25zdHMgPSAwOyAgLyogd2hldGhlciB3ZSBhcmUgaW4gYSBMT0FEX0NPTlNUIHNlcXVlbmNlICovCkBAIC0zNzMsNDIgKzQ0MiwzMCBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKIAotICAgIC8qIEJ5cGFzcyBvcHRpbWl6YXRpb24gd2hlbiB0aGUgbGluZW5vIHRhYmxlIGlzIHRvbyBjb21wbGV4ICovCi0gICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobGluZW5vX29iaikpOwotICAgIGxpbmVubyA9ICh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhsaW5lbm9fb2JqKTsKLSAgICB0YWJzaXogPSBQeUJ5dGVzX0dFVF9TSVpFKGxpbmVub19vYmopOwotICAgIGlmIChtZW1jaHIobGluZW5vLCAyNTUsIHRhYnNpeikgIT0gTlVMTCkKKyAgICAvKiBCeXBhc3Mgb3B0aW1pemF0aW9uIHdoZW4gdGhlIGxub3RhYiB0YWJsZSBpcyB0b28gY29tcGxleCAqLworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGxub3RhYl9vYmopKTsKKyAgICBsbm90YWIgPSAodW5zaWduZWQgY2hhciopUHlCeXRlc19BU19TVFJJTkcobG5vdGFiX29iaik7CisgICAgdGFic2l6ID0gUHlCeXRlc19HRVRfU0laRShsbm90YWJfb2JqKTsKKyAgICBhc3NlcnQodGFic2l6ID09IDAgfHwgUHlfUkVGQ05UKGxub3RhYl9vYmopID09IDEpOworICAgIGlmIChtZW1jaHIobG5vdGFiLCAyNTUsIHRhYnNpeikgIT0gTlVMTCkgeworICAgICAgICAvKiAyNTUgdmFsdWUgYXJlIHVzZWQgZm9yIG11bHRpYnl0ZSBieXRlY29kZSBpbnN0cnVjdGlvbnMgKi8KICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOworICAgIH0KKyAgICAvKiBOb3RlOiAtMTI4IGFuZCAxMjcgc3BlY2lhbCB2YWx1ZXMgZm9yIGxpbmUgbnVtYmVyIGRlbHRhIGFyZSBvaywKKyAgICAgICB0aGUgcGVlcGhvbGUgb3B0aW1pemVyIGRvZXNuJ3QgbW9kaWZ5IGxpbmUgbnVtYmVycy4gKi8KIAotICAgIC8qIEF2b2lkIHNpdHVhdGlvbnMgd2hlcmUganVtcCByZXRhcmdldGluZyBjb3VsZCBvdmVyZmxvdyAqLwogICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvZGUpKTsKICAgICBjb2RlbGVuID0gUHlCeXRlc19HRVRfU0laRShjb2RlKTsKLSAgICBpZiAoY29kZWxlbiA+IDMyNzAwKQotICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgYXNzZXJ0KGNvZGVsZW4gJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKIAogICAgIC8qIE1ha2UgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIGNvZGUgc3RyaW5nICovCi0gICAgY29kZXN0ciA9ICh1bnNpZ25lZCBjaGFyICopUHlNZW1fTWFsbG9jKGNvZGVsZW4pOworICAgIGNvZGVzdHIgPSAoX1B5X0NPREVVTklUICopUHlNZW1fTWFsbG9jKGNvZGVsZW4pOwogICAgIGlmIChjb2Rlc3RyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0RXJyb3I7CiAgICAgfQotICAgIGNvZGVzdHIgPSAodW5zaWduZWQgY2hhciAqKW1lbWNweShjb2Rlc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhjb2RlKSwgY29kZWxlbik7Ci0KLSAgICAvKiBWZXJpZnkgdGhhdCBSRVRVUk5fVkFMVUUgdGVybWluYXRlcyB0aGUgY29kZXN0cmluZy4gICAgICBUaGlzIGFsbG93cwotICAgICAgIHRoZSB2YXJpb3VzIHRyYW5zZm9ybWF0aW9uIHBhdHRlcm5zIHRvIGxvb2sgYWhlYWQgc2V2ZXJhbAotICAgICAgIGluc3RydWN0aW9ucyB3aXRob3V0IGFkZGl0aW9uYWwgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBub3QKLSAgICAgICBsb29raW5nIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBjb2RlIHN0cmluZy4KLSAgICAqLwotICAgIGlmIChjb2Rlc3RyW2NvZGVsZW4tMV0gIT0gUkVUVVJOX1ZBTFVFKQotICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7Ci0KLSAgICAvKiBNYXBwaW5nIHRvIG5ldyBqdW1wIHRhcmdldHMgYWZ0ZXIgTk9QcyBhcmUgcmVtb3ZlZCAqLwotICAgIGFkZHJtYXAgPSBQeU1lbV9OZXcoaW50LCBjb2RlbGVuKTsKLSAgICBpZiAoYWRkcm1hcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXhpdEVycm9yOwotICAgIH0KKyAgICBtZW1jcHkoY29kZXN0ciwgUHlCeXRlc19BU19TVFJJTkcoY29kZSksIGNvZGVsZW4pOworICAgIGNvZGVsZW4gLz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAKICAgICBibG9ja3MgPSBtYXJrYmxvY2tzKGNvZGVzdHIsIGNvZGVsZW4pOwogICAgIGlmIChibG9ja3MgPT0gTlVMTCkKQEAgLTQxNyw5ICs0NzQsMTcgQEAKIAogICAgIENPTlNUX1NUQUNLX0NSRUFURSgpOwogCi0gICAgZm9yIChpPTAgOyBpPGNvZGVsZW4gOyBpICs9IENPREVTSVpFKGNvZGVzdHJbaV0pKSB7Ci0gICAgICByZW9wdGltaXplX2N1cnJlbnQ6Ci0gICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CisgICAgZm9yIChpPWZpbmRfb3AoY29kZXN0ciwgMCkgOyBpPGNvZGVsZW4gOyBpPW5leHRpKSB7CisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUoY29kZXN0cltpXSk7CisgICAgICAgIG9wX3N0YXJ0ID0gaTsKKyAgICAgICAgd2hpbGUgKG9wX3N0YXJ0ID49IDEgJiYgX1B5X09QQ09ERShjb2Rlc3RyW29wX3N0YXJ0LTFdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgIG9wX3N0YXJ0LS07CisgICAgICAgIH0KKworICAgICAgICBuZXh0aSA9IGkgKyAxOworICAgICAgICB3aGlsZSAobmV4dGkgPCBjb2RlbGVuICYmIF9QeV9PUENPREUoY29kZXN0cltuZXh0aV0pID09IEVYVEVOREVEX0FSRykKKyAgICAgICAgICAgIG5leHRpKys7CisgICAgICAgIG5leHRvcCA9IG5leHRpIDwgY29kZWxlbiA/IF9QeV9PUENPREUoY29kZXN0cltuZXh0aV0pIDogMDsKIAogICAgICAgICBpZiAoIWluX2NvbnN0cykgewogICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKQEAgLTQzMCwxNCArNDk1LDEyIEBACiAgICAgICAgICAgICAvKiBSZXBsYWNlIFVOQVJZX05PVCBQT1BfSlVNUF9JRl9GQUxTRQogICAgICAgICAgICAgICAgd2l0aCAgICBQT1BfSlVNUF9JRl9UUlVFICovCiAgICAgICAgICAgICBjYXNlIFVOQVJZX05PVDoKLSAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzFdICE9IFBPUF9KVU1QX0lGX0ZBTFNFCi0gICAgICAgICAgICAgICAgICAgIHx8ICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSsxKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUE9QX0pVTVBfSUZfVFJVRTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7Ci0gICAgICAgICAgICAgICAgY29kZXN0cltpKzNdID0gTk9QOwotICAgICAgICAgICAgICAgIGdvdG8gcmVvcHRpbWl6ZV9jdXJyZW50OworICAgICAgICAgICAgICAgIGlmIChuZXh0b3AgIT0gUE9QX0pVTVBfSUZfRkFMU0UKKyAgICAgICAgICAgICAgICAgICAgfHwgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgaSArIDEpOworICAgICAgICAgICAgICAgIGNvZGVzdHJbbmV4dGldID0gUEFDS09QQVJHKFBPUF9KVU1QX0lGX1RSVUUsIF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogbm90IGEgaXMgYiAtLT4gIGEgaXMgbm90IGIKICAgICAgICAgICAgICAgICAgICBub3QgYSBpbiBiIC0tPiAgYSBub3QgaW4gYgpAQCAtNDQ1LDc4ICs1MDgsNzYgQEAKICAgICAgICAgICAgICAgICAgICBub3QgYSBub3QgaW4gYiAtLT4gIGEgaW4gYgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjYXNlIENPTVBBUkVfT1A6Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoaiA8IDYgIHx8ICBqID4gOSAgfHwKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzNdICE9IFVOQVJZX05PVCAgfHwKLSAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIChqXjEpKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gPSBOT1A7CisgICAgICAgICAgICAgICAgaiA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGogPCA2IHx8IGogPiA5IHx8CisgICAgICAgICAgICAgICAgICAgIG5leHRvcCAhPSBVTkFSWV9OT1QgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQQUNLT1BBUkcob3Bjb2RlLCBqXjEpOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBMT0FEX0NPTlNUIHRydWVjb25zdAotICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiBUaGlzIGltcHJvdmVzCi0gICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAqLworICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiAgVGhpcyBpbXByb3ZlcworICAgICAgICAgICAgICAgICAgICJ3aGlsZSAxIiBwZXJmb3JtYW5jZS4gICovCiAgICAgICAgICAgICBjYXNlIExPQURfQ09OU1Q6CiAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKLSAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gUE9QX0pVTVBfSUZfRkFMU0UgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNikgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgaikpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpLCBOT1AsIDYpOwotICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CisgICAgICAgICAgICAgICAgaWYgKG5leHRvcCAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkgIHx8CisgICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgZ2V0X2FyZyhjb2Rlc3RyLCBpKSkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQsIG5leHRpICsgMSk7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgLyogVHJ5IHRvIGZvbGQgdHVwbGVzIG9mIGNvbnN0YW50cyAoaW5jbHVkZXMgYSBjYXNlIGZvciBsaXN0cyBhbmQgc2V0cwotICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBvbmx5IHVzZWQgZm9yICJpbiIgYW5kICJub3QgaW4iIHRlc3RzKS4KKyAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzCisgICAgICAgICAgICAgICAgICAgYW5kIHNldHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBmb3IgImluIiBhbmQgIm5vdCBpbiIgdGVzdHMpLgogICAgICAgICAgICAgICAgICAgIFNraXAgb3ZlciBCVUlMRF9TRVFOIDEgVU5QQUNLX1NFUU4gMS4KICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIEJVSUxEX1NFUU4gMiBVTlBBQ0tfU0VRTiAyIHdpdGggUk9UMi4KICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIEJVSUxEX1NFUU4gMyBVTlBBQ0tfU0VRTiAzIHdpdGggUk9UMyBST1QyLiAqLwogICAgICAgICAgICAgY2FzZSBCVUlMRF9UVVBMRToKICAgICAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgICAgIGNhc2UgQlVJTERfU0VUOgotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGogPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKGopOwotICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgaikpOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYgaiA+IDAgJiYgaiA8PSBDT05TVF9TVEFDS19MRU4oKSAmJgotICAgICAgICAgICAgICAgICAgICAoKG9wY29kZSA9PSBCVUlMRF9UVVBMRSAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCszKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM109PUNPTVBBUkVfT1AgJiYKLSAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrNikgJiYKLSAgICAgICAgICAgICAgICAgICAgICAoR0VUQVJHKGNvZGVzdHIsaSszKT09NiB8fAotICAgICAgICAgICAgICAgICAgICAgICBHRVRBUkcoY29kZXN0cixpKzMpPT03KSkpICYmCi0gICAgICAgICAgICAgICAgICAgIHR1cGxlX29mX2NvbnN0YW50cygmY29kZXN0cltpXSwgaiwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTihqKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaiA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGogPiAwICYmIENPTlNUX1NUQUNLX0xFTigpID49IGopIHsKKyAgICAgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCBqKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChvcGNvZGUgPT0gQlVJTERfVFVQTEUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChuZXh0b3A9PUNPTVBBUkVfT1AgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkgPT0gUHlDbXBfSU4gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkgPT0gUHlDbXBfTk9UX0lOKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dG9wID09IEdFVF9JVEVSKSAmJiBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpICsgMSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF90dXBsZV9vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1Aoaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gVU5QQUNLX1NFUVVFTkNFICB8fAotICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDYpIHx8Ci0gICAgICAgICAgICAgICAgICAgIGogIT0gR0VUQVJHKGNvZGVzdHIsIGkrMykgfHwKKyAgICAgICAgICAgICAgICBpZiAobmV4dG9wICE9IFVOUEFDS19TRVFVRU5DRSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkgfHwKKyAgICAgICAgICAgICAgICAgICAgaiAhPSBnZXRfYXJnKGNvZGVzdHIsIG5leHRpKSB8fAogICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPT0gQlVJTERfU0VUKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoaiA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChqIDwgMikgeworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9UV087Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA1KTsKKyAgICAgICAgICAgICAgICAgICAgY29kZXN0cltvcF9zdGFydF0gPSBQQUNLT1BBUkcoUk9UX1RXTywgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDEsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDMpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9USFJFRTsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzFdID0gUk9UX1RXTzsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsyLCBOT1AsIDQpOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhST1RfVEhSRUUsIDApOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0ICsgMV0gPSBQQUNLT1BBUkcoUk9UX1RXTywgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDIsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogRm9sZCBiaW5hcnkgb3BzIG9uIGNvbnN0YW50cy4KLSAgICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIGMxIExPQURfQ09OU1QgYzIgQklOT1AgLS0+ICBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKSAqLworICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgTE9BRF9DT05TVCBjMiBCSU5PUCAtLT4gTE9BRF9DT05TVCBiaW5vcChjMSxjMikgKi8KICAgICAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgY2FzZSBCSU5BUllfTVVMVElQTFk6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9UUlVFX0RJVklERToKQEAgLTUzMCwzNSArNTkxLDM0IEBACiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9BTkQ6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9YT1I6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9PUjoKLSAgICAgICAgICAgICAgICAvKiBOT1RFOiBMT0FEX0NPTlNUIGlzIHNhdmVkIGF0IGBpLTJgIHNpbmNlIGl0IGhhcyBhbiBhcmcKLSAgICAgICAgICAgICAgICAgICB3aGlsZSBCSU5PUCBoYXNuJ3QgKi8KLSAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oMik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCAyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMSkgICYmCi0gICAgICAgICAgICAgICAgICAgIGZvbGRfYmlub3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpXSwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJmNvZGVzdHJbaF0sIE5PUCwgaSAtIGgpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDIpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOworICAgICAgICAgICAgICAgIGlmIChDT05TVF9TVEFDS19MRU4oKSA8IDIpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBsYXN0bl9jb25zdF9zdGFydChjb2Rlc3RyLCBvcF9zdGFydCwgMik7CisgICAgICAgICAgICAgICAgaWYgKElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIG9wX3N0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKGNvZGVzdHIsIGgsIGkgKyAxLCBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUCgyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBGb2xkIHVuYXJ5IG9wcyBvbiBjb25zdGFudHMuCi0gICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSAgVU5BUllfT1AgLS0+ICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCB1bmFyeV9vcChjKSAqLworICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgIFVOQVJZX09QIC0tPiBMT0FEX0NPTlNUIHVuYXJ5X29wKGMpICovCiAgICAgICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX1BPU0lUSVZFOgotICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDEpKTsKLSAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS0zXSwgY29uc3RzLCBDT05TVF9TVEFDS19UT1AoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOworICAgICAgICAgICAgICAgIGlmIChDT05TVF9TVEFDS19MRU4oKSA8IDEpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBsYXN0bl9jb25zdF9zdGFydChjb2Rlc3RyLCBvcF9zdGFydCwgMSk7CisgICAgICAgICAgICAgICAgaWYgKElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIG9wX3N0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cywgKkNPTlNUX1NUQUNLX0xBU1ROKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTczLDM5ICs2MzMsMzYgQEAKICAgICAgICAgICAgICAgICAgICB4OkpVTVBfSUZfRkFMU0VfT1JfUE9QIHkgICB5OkpVTVBfSUZfRkFMU0VfT1JfUE9QIHoKICAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgegogICAgICAgICAgICAgICAgICAgIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgeSAgIHk6SlVNUF9JRl9UUlVFX09SX1BPUCB6Ci0gICAgICAgICAgICAgICAgICAgICAgLS0+ICB4OlBPUF9KVU1QX0lGX0ZBTFNFIHkrMwotICAgICAgICAgICAgICAgICAgIHdoZXJlIHkrMyBpcyB0aGUgaW5zdHJ1Y3Rpb24gZm9sbG93aW5nIHRoZSBzZWNvbmQgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6UE9QX0pVTVBfSUZfRkFMU0UgeSsxCisgICAgICAgICAgICAgICAgICAgd2hlcmUgeSsxIGlzIHRoZSBpbnN0cnVjdGlvbiBmb2xsb3dpbmcgdGhlIHNlY29uZCB0ZXN0LgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfRkFMU0VfT1JfUE9QOgogICAgICAgICAgICAgY2FzZSBKVU1QX0lGX1RSVUVfT1JfUE9QOgotICAgICAgICAgICAgICAgIHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaiA9IGNvZGVzdHJbdGd0XTsKKyAgICAgICAgICAgICAgICBoID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKSAvIHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgIHRndCA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CisKKyAgICAgICAgICAgICAgICBqID0gX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pOwogICAgICAgICAgICAgICAgIGlmIChDT05ESVRJT05BTF9KVU1QKGopKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIE5PVEU6IGFsbCBwb3NzaWJsZSBqdW1wcyBoZXJlIGFyZQotICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZSEgKi8KKyAgICAgICAgICAgICAgICAgICAgLyogTk9URTogYWxsIHBvc3NpYmxlIGp1bXBzIGhlcmUgYXJlIGFic29sdXRlLiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoSlVNUFNfT05fVFJVRShqKSA9PSBKVU1QU19PTl9UUlVFKG9wY29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCB3aWxsIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlbiBpZmYgdGhlIGZpcnN0IGlzLiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgdGd0dGd0ID0gR0VUSlVNUFRHVChjb2Rlc3RyLCB0Z3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIGN1cnJlbnQgb3Bjb2RlIGluaGVyaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpdHMgdGFyZ2V0J3Mgc3RhY2sgYmVoYXZpb3VyICovCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCB0Z3R0Z3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgd2lsbCBiZSB0YWtlbiBpZmYgdGhlIGZpcnN0IGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQgb3Bjb2RlIGluaGVyaXRzIGl0cyB0YXJnZXQncworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgZWZmZWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBoID0gc2V0X2FyZyhjb2Rlc3RyLCBpLCBnZXRfYXJnKGNvZGVzdHIsIHRndCkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNlY29uZCBqdW1wIGlzIG5vdCB0YWtlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpcnN0IGlzIChzbyBqdW1wIHBhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0KSwgYW5kIGFsbCBjb25kaXRpb25hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcHMgcG9wIHRoZWlyIGFyZ3VtZW50IHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXkncmUgbm90IHRha2VuIChzbyBjaGFuZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBqdW1wIHRvIHBvcCBpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IHdoZW4gaXQncyB0YWtlbikuICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSlVNUFNfT05fVFJVRShvcGNvZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9UUlVFOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9GQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCAodGd0ICsgMykpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgaXMgbm90IHRha2VuIGlmIHRoZSBmaXJzdCBpcyAoc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgcGFzdCBpdCksIGFuZCBhbGwgY29uZGl0aW9uYWwganVtcHMgcG9wIHRoZWlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCB3aGVuIHRoZXkncmUgbm90IHRha2VuIChzbyBjaGFuZ2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBqdW1wIHRvIHBvcCBpdHMgYXJndW1lbnQgd2hlbiBpdCdzIHRha2VuKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzZXRfYXJnKGNvZGVzdHIsIGksICh0Z3QgKyAxKSAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGogPSBvcGNvZGUgPT0gSlVNUF9JRl9UUlVFX09SX1BPUCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfVFJVRSA6IFBPUF9KVU1QX0lGX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGkgPSBoOworICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltuZXh0aV0gPSBQQUNLT1BBUkcoaiwgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBJbnRlbnRpb25hbCBmYWxsdGhyb3VnaCAqLwpAQCAtNjIyLDczICs2NzksNzQgQEAKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKLSAgICAgICAgICAgICAgICB0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOworICAgICAgICAgICAgICAgIGggPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOworICAgICAgICAgICAgICAgIHRndCA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CiAgICAgICAgICAgICAgICAgLyogUmVwbGFjZSBKVU1QXyogdG8gYSBSRVRVUk4gaW50byBqdXN0IGEgUkVUVVJOICovCiAgICAgICAgICAgICAgICAgaWYgKFVOQ09ORElUSU9OQUxfSlVNUChvcGNvZGUpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbdGd0XSA9PSBSRVRVUk5fVkFMVUUpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJFVFVSTl9WQUxVRTsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDIpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pID09IFJFVFVSTl9WQUxVRSkgeworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhSRVRVUk5fVkFMVUUsIDApOworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQgKyAxLCBpICsgMSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChVTkNPTkRJVElPTkFMX0pVTVAoX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pKSkgeworICAgICAgICAgICAgICAgICAgICBqID0gR0VUSlVNUFRHVChjb2Rlc3RyLCB0Z3QpOworICAgICAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEpVTVBfRk9SV0FSRCkgeyAvKiBKTVBfQUJTIGNhbiBnbyBiYWNrd2FyZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IEpVTVBfQUJTT0xVVEU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUFCU09MVVRFX0pVTVAob3Bjb2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChQeV9zc2l6ZV90KWogPCBpICsgMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgLyogTm8gYmFja3dhcmQgcmVsYXRpdmUganVtcHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGogLT0gaSArIDE7ICAgICAgICAgIC8qIENhbGMgcmVsYXRpdmUganVtcCBhZGRyICovCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaiAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgICAgICAgICAgICAgY29weV9vcF9hcmcoY29kZXN0ciwgb3Bfc3RhcnQsIG9wY29kZSwgaiwgaSArIDEpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIVVOQ09ORElUSU9OQUxfSlVNUChjb2Rlc3RyW3RndF0pKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB0Z3R0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBKVU1QX0ZPUldBUkQpIC8qIEpNUF9BQlMgY2FuIGdvIGJhY2t3YXJkcyAqLwotICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBKVU1QX0FCU09MVVRFOwotICAgICAgICAgICAgICAgIGlmICghQUJTT0xVVEVfSlVNUChvcGNvZGUpKQotICAgICAgICAgICAgICAgICAgICB0Z3R0Z3QgLT0gaSArIDM7ICAgICAvKiBDYWxjIHJlbGF0aXZlIGp1bXAgYWRkciAqLwotICAgICAgICAgICAgICAgIGlmICh0Z3R0Z3QgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vIGJhY2t3YXJkIHJlbGF0aXZlIGp1bXBzICovCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBvcGNvZGU7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIHRndHRndCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgRVhURU5ERURfQVJHOgotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gTUFLRV9GVU5DVElPTikKLSAgICAgICAgICAgICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOwotICAgICAgICAgICAgICAgIC8qIGRvbid0IHZpc2l0IE1BS0VfRlVOQ1RJT04gYXMgR0VUQVJHIHdpbGwgYmUgd3JvbmcgKi8KLSAgICAgICAgICAgICAgICBpICs9IDM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvKiBSZXBsYWNlIFJFVFVSTiBMT0FEX0NPTlNUIE5vbmUgUkVUVVJOIHdpdGgganVzdCBSRVRVUk4gKi8KLSAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdW5yZWFjaGFibGUgSlVNUHMgYWZ0ZXIgUkVUVVJOICovCisgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHVucmVhY2hhYmxlIG9wcyBhZnRlciBSRVRVUk4gKi8KICAgICAgICAgICAgIGNhc2UgUkVUVVJOX1ZBTFVFOgotICAgICAgICAgICAgICAgIGlmIChpKzQgPj0gY29kZWxlbikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSs0XSA9PSBSRVRVUk5fVkFMVUUgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDUpKQotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzEsIE5PUCwgNCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoVU5DT05ESVRJT05BTF9KVU1QKGNvZGVzdHJbaSsxXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLGksNCkpCi0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCAzKTsKKyAgICAgICAgICAgICAgICBoID0gaSArIDE7CisgICAgICAgICAgICAgICAgd2hpbGUgKGggPCBjb2RlbGVuICYmIElTQkFTSUNCTE9DSyhibG9ja3MsIGksIGgpKSB7CisgICAgICAgICAgICAgICAgICAgIGgrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGggPiBpICsgMSkgeworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgaSArIDEsIGgpOworICAgICAgICAgICAgICAgICAgICBuZXh0aSA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogRml4dXAgbGluZW5vdGFiICovCi0gICAgZm9yIChpPTAsIG5vcHM9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKKyAgICAvKiBGaXh1cCBsbm90YWIgKi8KKyAgICBmb3IgKGkgPSAwLCBub3BzID0gMDsgaSA8IGNvZGVsZW47IGkrKykgewogICAgICAgICBhc3NlcnQoaSAtIG5vcHMgPD0gSU5UX01BWCk7Ci0gICAgICAgIGFkZHJtYXBbaV0gPSAoaW50KShpIC0gbm9wcyk7Ci0gICAgICAgIGlmIChjb2Rlc3RyW2ldID09IE5PUCkKKyAgICAgICAgLyogb3JpZ2luYWwgY29kZSBvZmZzZXQgPT4gbmV3IGNvZGUgb2Zmc2V0ICovCisgICAgICAgIGJsb2Nrc1tpXSA9IGkgLSBub3BzOworICAgICAgICBpZiAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBOT1ApCiAgICAgICAgICAgICBub3BzKys7CiAgICAgfQotICAgIGN1bV9vcmlnX2xpbmUgPSAwOwotICAgIGxhc3RfbGluZSA9IDA7CisgICAgY3VtX29yaWdfb2Zmc2V0ID0gMDsKKyAgICBsYXN0X29mZnNldCA9IDA7CiAgICAgZm9yIChpPTAgOyBpIDwgdGFic2l6IDsgaSs9MikgewotICAgICAgICBjdW1fb3JpZ19saW5lICs9IGxpbmVub1tpXTsKLSAgICAgICAgbmV3X2xpbmUgPSBhZGRybWFwW2N1bV9vcmlnX2xpbmVdOwotICAgICAgICBhc3NlcnQgKG5ld19saW5lIC0gbGFzdF9saW5lIDwgMjU1KTsKLSAgICAgICAgbGluZW5vW2ldID0oKHVuc2lnbmVkIGNoYXIpKG5ld19saW5lIC0gbGFzdF9saW5lKSk7Ci0gICAgICAgIGxhc3RfbGluZSA9IG5ld19saW5lOworICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0X2RlbHRhLCBuZXdfb2Zmc2V0OworICAgICAgICBjdW1fb3JpZ19vZmZzZXQgKz0gbG5vdGFiW2ldOworICAgICAgICBhc3NlcnQoY3VtX29yaWdfb2Zmc2V0ICUgc2l6ZW9mKF9QeV9DT0RFVU5JVCkgPT0gMCk7CisgICAgICAgIG5ld19vZmZzZXQgPSBibG9ja3NbY3VtX29yaWdfb2Zmc2V0IC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCldICoKKyAgICAgICAgICAgICAgICBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgb2Zmc2V0X2RlbHRhID0gbmV3X29mZnNldCAtIGxhc3Rfb2Zmc2V0OworICAgICAgICBhc3NlcnQob2Zmc2V0X2RlbHRhIDw9IDI1NSk7CisgICAgICAgIGxub3RhYltpXSA9ICh1bnNpZ25lZCBjaGFyKW9mZnNldF9kZWx0YTsKKyAgICAgICAgbGFzdF9vZmZzZXQgPSBuZXdfb2Zmc2V0OwogICAgIH0KIAogICAgIC8qIFJlbW92ZSBOT1BzIGFuZCBmaXh1cCBqdW1wIHRhcmdldHMgKi8KLSAgICBmb3IgKGk9MCwgaD0wIDsgaTxjb2RlbGVuIDsgKSB7Ci0gICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CisgICAgZm9yIChvcF9zdGFydCA9IGkgPSBoID0gMDsgaSA8IGNvZGVsZW47IGkrKywgb3Bfc3RhcnQgPSBpKSB7CisgICAgICAgIGogPSBfUHlfT1BBUkcoY29kZXN0cltpXSk7CisgICAgICAgIHdoaWxlIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgaiA9IGo8PDggfCBfUHlfT1BBUkcoY29kZXN0cltpXSk7CisgICAgICAgIH0KKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2Rlc3RyW2ldKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgIGNhc2UgTk9QOgotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNhc2UgTk9QOmNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlIEpVTVBfQUJTT0xVVEU6CiAgICAgICAgICAgICBjYXNlIENPTlRJTlVFX0xPT1A6CkBAIC02OTYsOCArNzU0LDcgQEAKICAgICAgICAgICAgIGNhc2UgUE9QX0pVTVBfSUZfVFJVRToKICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9GQUxTRV9PUl9QT1A6CiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfVFJVRV9PUl9QT1A6Ci0gICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpXTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7CisgICAgICAgICAgICAgICAgaiA9IGJsb2Nrc1tqIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCldICogc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgRk9SX0lURVI6CkBAIC03MDcsMzQgKzc2NCwzMiBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgotICAgICAgICAgICAgICAgIGogPSBhZGRybWFwW0dFVEFSRyhjb2Rlc3RyLCBpKSArIGkgKyAzXSAtIGFkZHJtYXBbaV0gLSAzOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKKyAgICAgICAgICAgICAgICBqID0gYmxvY2tzW2ogLyBzaXplb2YoX1B5X0NPREVVTklUKSArIGkgKyAxXSAtIGJsb2Nrc1tpXSAtIDE7CisgICAgICAgICAgICAgICAgaiAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBhZGogPSBDT0RFU0laRShvcGNvZGUpOwotICAgICAgICB3aGlsZSAoYWRqLS0pCi0gICAgICAgICAgICBjb2Rlc3RyW2grK10gPSBjb2Rlc3RyW2krK107CisgICAgICAgIG5leHRpID0gaSAtIG9wX3N0YXJ0ICsgMTsKKyAgICAgICAgaWYgKGluc3Ryc2l6ZShqKSA+IG5leHRpKQorICAgICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOworICAgICAgICAvKiBJZiBpbnN0cnNpemUoaikgPCBuZXh0aSwgd2UnbGwgZW1pdCBFWFRFTkRFRF9BUkcgMCAqLworICAgICAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIGgsIG9wY29kZSwgaiwgbmV4dGkpOworICAgICAgICBoICs9IG5leHRpOwogICAgIH0KLSAgICBhc3NlcnQoaCArIG5vcHMgPT0gY29kZWxlbik7CisgICAgYXNzZXJ0KGggKyAoUHlfc3NpemVfdClub3BzID09IGNvZGVsZW4pOwogCi0gICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoKTsKICAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKLSAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwotICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlNZW1fRnJlZShibG9ja3MpOworICAgIGNvZGUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopY29kZXN0ciwgaCAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKKyAgICBQeU1lbV9GcmVlKGNvZGVzdHIpOwogICAgIHJldHVybiBjb2RlOwogCiAgZXhpdEVycm9yOgogICAgIGNvZGUgPSBOVUxMOwogCiAgZXhpdFVuY2hhbmdlZDoKLSAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKLSAgICBpZiAoYmxvY2tzICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKLSAgICBpZiAoYWRkcm1hcCAhPSBOVUxMKQotICAgICAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwotICAgIGlmIChjb2Rlc3RyICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlfWElOQ1JFRihjb2RlKTsKKyAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKKyAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CisgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICByZXR1cm4gY29kZTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weWhhc2guYyBiL1B5dGhvbi9weWhhc2guYwppbmRleCA5N2NiNTQ3Li41N2EyZGE3IDEwMDY0NAotLS0gYS9QeXRob24vcHloYXNoLmMKKysrIGIvUHl0aG9uL3B5aGFzaC5jCkBAIC0zMTgsNDAgKzMxOCwzNyBAQAogCiAgTW9kaWZpZWQgZm9yIFB5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzOgogICAgIC0gQzg5IC8gTVNWQyBjb21wYXRpYmlsaXR5Ci0gICAgLSBQWV9VSU5UNjRfVCwgUFlfVUlOVDMyX1QgYW5kIFBZX1VJTlQ4X1QKICAgICAtIF9yb3RsNjQoKSBvbiBXaW5kb3dzCiAgICAgLSBsZXRvaDY0KCkgZmFsbGJhY2sKICovCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciBQWV9VSU5UOF9UOwotCiAvKiBieXRlIHN3YXAgbGl0dGxlIGVuZGlhbiB0byBob3N0IGVuZGlhbgogICogRW5kaWFuIGNvbnZlcnNpb24gbm90IG9ubHkgZW5zdXJlcyB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUKICAqIHZhbHVlIG9uIGFsbCBwbGF0Zm9ybXMuIEl0IGlzIGFsc28gcmVxdWlyZWQgdG8gZm9yIGEgZ29vZCBkaXNwZXJzaW9uIG9mCiAgKiB0aGUgaGFzaCB2YWx1ZXMnIGxlYXN0IHNpZ25pZmljYW50IGJpdHMuCiAgKi8KICNpZiBQWV9MSVRUTEVfRU5ESUFOCi0jICBkZWZpbmUgX2xlNjR0b2goeCkgKChQWV9VSU5UNjRfVCkoeCkpCisjICBkZWZpbmUgX2xlNjR0b2goeCkgKCh1aW50NjRfdCkoeCkpCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKICMgIGRlZmluZSBfbGU2NHRvaCh4KSBPU1N3YXBMaXR0bGVUb0hvc3RJbnQ2NCh4KQogI2VsaWYgZGVmaW5lZChIQVZFX0xFVE9INjQpCiAjICBkZWZpbmUgX2xlNjR0b2goeCkgbGU2NHRvaCh4KQogI2Vsc2UKLSMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKChQWV9VSU5UNjRfVCkoeCkgPDwgNTYpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA0MCkgJiAweGZmMDAwMDAwMDAwMDAwVUxMKSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAoKChQWV9VSU5UNjRfVCkoeCkgPDwgMjQpICYgMHhmZjAwMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA4KSAgJiAweGZmMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiA4KSAgJiAweGZmMDAwMDAwVUxMKSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAoKChQWV9VSU5UNjRfVCkoeCkgPj4gMjQpICYgMHhmZjAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiA0MCkgJiAweGZmMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoUFlfVUlOVDY0X1QpKHgpICA+PiA1NikpCisjICBkZWZpbmUgX2xlNjR0b2goeCkgKCgodWludDY0X3QpKHgpIDw8IDU2KSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgNDApICYgMHhmZjAwMDAwMDAwMDAwMFVMTCkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgKCgodWludDY0X3QpKHgpIDw8IDI0KSAmIDB4ZmYwMDAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgOCkgICYgMHhmZjAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gOCkgICYgMHhmZjAwMDAwMFVMTCkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgKCgodWludDY0X3QpKHgpID4+IDI0KSAmIDB4ZmYwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gNDApICYgMHhmZjAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ2NF90KSh4KSAgPj4gNTYpKQogI2VuZGlmCiAKIAogI2lmZGVmIF9NU0NfVkVSCiAjICBkZWZpbmUgUk9UQVRFKHgsIGIpICBfcm90bDY0KHgsIGIpCiAjZWxzZQotIyAgZGVmaW5lIFJPVEFURSh4LCBiKSAoUFlfVUlOVDY0X1QpKCAoKHgpIDw8IChiKSkgfCAoICh4KSA+PiAoNjQgLSAoYikpKSApCisjICBkZWZpbmUgUk9UQVRFKHgsIGIpICh1aW50NjRfdCkoICgoeCkgPDwgKGIpKSB8ICggKHgpID4+ICg2NCAtIChiKSkpICkKICNlbmRpZgogCiAjZGVmaW5lIEhBTEZfUk9VTkQoYSxiLGMsZCxzLHQpICAgICAgICAgXApAQCAtMzY5LDIyICszNjYsMjIgQEAKIAogc3RhdGljIFB5X2hhc2hfdAogc2lwaGFzaDI0KGNvbnN0IHZvaWQgKnNyYywgUHlfc3NpemVfdCBzcmNfc3opIHsKLSAgICBQWV9VSU5UNjRfVCBrMCA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazApOwotICAgIFBZX1VJTlQ2NF9UIGsxID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMSk7Ci0gICAgUFlfVUlOVDY0X1QgYiA9IChQWV9VSU5UNjRfVClzcmNfc3ogPDwgNTY7Ci0gICAgY29uc3QgUFlfVUlOVDY0X1QgKmluID0gKFBZX1VJTlQ2NF9UKilzcmM7CisgICAgdWludDY0X3QgazAgPSBfbGU2NHRvaChfUHlfSGFzaFNlY3JldC5zaXBoYXNoLmswKTsKKyAgICB1aW50NjRfdCBrMSA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazEpOworICAgIHVpbnQ2NF90IGIgPSAodWludDY0X3Qpc3JjX3N6IDw8IDU2OworICAgIGNvbnN0IHVpbnQ2NF90ICppbiA9ICh1aW50NjRfdCopc3JjOwogCi0gICAgUFlfVUlOVDY0X1QgdjAgPSBrMCBeIDB4NzM2ZjZkNjU3MDczNjU3NVVMTDsKLSAgICBQWV9VSU5UNjRfVCB2MSA9IGsxIF4gMHg2NDZmNzI2MTZlNjQ2ZjZkVUxMOwotICAgIFBZX1VJTlQ2NF9UIHYyID0gazAgXiAweDZjNzk2NzY1NmU2NTcyNjFVTEw7Ci0gICAgUFlfVUlOVDY0X1QgdjMgPSBrMSBeIDB4NzQ2NTY0NjI3OTc0NjU3M1VMTDsKKyAgICB1aW50NjRfdCB2MCA9IGswIF4gMHg3MzZmNmQ2NTcwNzM2NTc1VUxMOworICAgIHVpbnQ2NF90IHYxID0gazEgXiAweDY0NmY3MjYxNmU2NDZmNmRVTEw7CisgICAgdWludDY0X3QgdjIgPSBrMCBeIDB4NmM3OTY3NjU2ZTY1NzI2MVVMTDsKKyAgICB1aW50NjRfdCB2MyA9IGsxIF4gMHg3NDY1NjQ2Mjc5NzQ2NTczVUxMOwogCi0gICAgUFlfVUlOVDY0X1QgdDsKLSAgICBQWV9VSU5UOF9UICpwdDsKLSAgICBQWV9VSU5UOF9UICptOworICAgIHVpbnQ2NF90IHQ7CisgICAgdWludDhfdCAqcHQ7CisgICAgdWludDhfdCAqbTsKIAogICAgIHdoaWxlIChzcmNfc3ogPj0gOCkgewotICAgICAgICBQWV9VSU5UNjRfVCBtaSA9IF9sZTY0dG9oKCppbik7CisgICAgICAgIHVpbnQ2NF90IG1pID0gX2xlNjR0b2goKmluKTsKICAgICAgICAgaW4gKz0gMTsKICAgICAgICAgc3JjX3N6IC09IDg7CiAgICAgICAgIHYzIF49IG1pOwpAQCAtMzkzLDEzICszOTAsMTMgQEAKICAgICB9CiAKICAgICB0ID0gMDsKLSAgICBwdCA9IChQWV9VSU5UOF9UICopJnQ7Ci0gICAgbSA9IChQWV9VSU5UOF9UICopaW47CisgICAgcHQgPSAodWludDhfdCAqKSZ0OworICAgIG0gPSAodWludDhfdCAqKWluOwogICAgIHN3aXRjaCAoc3JjX3N6KSB7CiAgICAgICAgIGNhc2UgNzogcHRbNl0gPSBtWzZdOwogICAgICAgICBjYXNlIDY6IHB0WzVdID0gbVs1XTsKICAgICAgICAgY2FzZSA1OiBwdFs0XSA9IG1bNF07Ci0gICAgICAgIGNhc2UgNDogUHlfTUVNQ1BZKHB0LCBtLCBzaXplb2YoUFlfVUlOVDMyX1QpKTsgYnJlYWs7CisgICAgICAgIGNhc2UgNDogbWVtY3B5KHB0LCBtLCBzaXplb2YodWludDMyX3QpKTsgYnJlYWs7CiAgICAgICAgIGNhc2UgMzogcHRbMl0gPSBtWzJdOwogICAgICAgICBjYXNlIDI6IHB0WzFdID0gbVsxXTsKICAgICAgICAgY2FzZSAxOiBwdFswXSA9IG1bMF07CmRpZmYgLS1naXQgYS9QeXRob24vcHlsaWZlY3ljbGUuYyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCmluZGV4IGNlNTI5OTAuLjViNWNjMmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWxpZmVjeWNsZS5jCisrKyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCkBAIC0zMSw2ICszMSw5IEBACiAjaWZkZWYgTVNfV0lORE9XUwogI3VuZGVmIEJZVEUKICNpbmNsdWRlICJ3aW5kb3dzLmgiCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisjZGVmaW5lIFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhvcCkgKFB5T2JqZWN0X1R5cGVDaGVjaygob3ApLCAmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUpKQogI2VuZGlmCiAKIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKQEAgLTkwLDYgKzkzLDEwIEBACiBpbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLwogaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KIGludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCisjaWZkZWYgTVNfV0lORE9XUworaW50IFB5X0xlZ2FjeVdpbmRvd3NGU0VuY29kaW5nRmxhZyA9IDA7IC8qIFVzZXMgbWJjcyBpbnN0ZWFkIG9mIHV0Zi04ICovCitpbnQgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IDA7IC8qIFVzZXMgRmlsZUlPIGluc3RlYWQgb2YgV2luZG93c0NvbnNvbGVJTyAqLworI2VuZGlmCiAKIFB5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKIApAQCAtMTUxLDExICsxNTgsMTcgQEAKICAgICAgICAgICAgIHJldHVybiAtMzsKICAgICAgICAgfQogICAgIH0KKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7CisgICAgICAgIC8qIE92ZXJyaWRpbmcgdGhlIHN0cmVhbSBlbmNvZGluZyBpbXBsaWVzIGxlZ2FjeSBzdHJlYW1zICovCisgICAgICAgIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgPSAxOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiAwOwogfQogCi0vKiBHbG9iYWwgaW5pdGlhbGl6YXRpb25zLiAgQ2FuIGJlIHVuZG9uZSBieSBQeV9GaW5hbGl6ZSgpLiAgRG9uJ3QKLSAgIGNhbGwgdGhpcyB0d2ljZSB3aXRob3V0IGFuIGludGVydmVuaW5nIFB5X0ZpbmFsaXplKCkgY2FsbC4gIFdoZW4KKy8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplRXgoKS4gIERvbid0CisgICBjYWxsIHRoaXMgdHdpY2Ugd2l0aG91dCBhbiBpbnRlcnZlbmluZyBQeV9GaW5hbGl6ZUV4KCkgY2FsbC4gIFdoZW4KICAgIGluaXRpYWxpemF0aW9ucyBmYWlsLCBhIGZhdGFsIGVycm9yIGlzIGlzc3VlZCBhbmQgdGhlIGZ1bmN0aW9uIGRvZXMKICAgIG5vdCByZXR1cm4uICBPbiByZXR1cm4sIHRoZSBmaXJzdCB0aHJlYWQgYW5kIGludGVycHJldGVyIHN0YXRlIGhhdmUKICAgIGJlZW4gY3JlYXRlZC4KQEAgLTIyMyw2ICsyMzYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVzZXQpOworI2VsaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoIlVURi04Iik7CiAjZWxzZQogICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNTIsNiArMjY3LDExIEBACiAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBpbXBvcnRsaWI7CiAgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0bGliKTsKIAorICAgIGludGVycC0+aW1wb3J0X2Z1bmMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhpbnRlcnAtPmJ1aWx0aW5zLCAiX19pbXBvcnRfXyIpOworICAgIGlmIChpbnRlcnAtPmltcG9ydF9mdW5jID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IF9faW1wb3J0X18gbm90IGZvdW5kIik7CisgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0X2Z1bmMpOworCiAgICAgLyogSW1wb3J0IHRoZSBfaW1wIG1vZHVsZSAqLwogICAgIGltcG1vZCA9IFB5SW5pdF9pbXAoKTsKICAgICBpZiAoaW1wbW9kID09IE5VTEwpIHsKQEAgLTMxNCw2ICszMzQsMTIgQEAKICAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KICAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCiAgICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IGFkZF9mbGFnKFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZywgcCk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkciKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnID0gYWRkX2ZsYWcoUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnLCBwKTsKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkxFR0FDWVdJTkRPV1NTVERJTyIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnID0gYWRkX2ZsYWcoUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZywgcCk7CisjZW5kaWYKIAogICAgIF9QeVJhbmRvbV9Jbml0KCk7CiAKQEAgLTMyNywxMSArMzUzLDExIEBACiAgICAgKHZvaWQpIFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZSBiZWNhdXNlCisgICAgLyogV2UgY2FuJ3QgY2FsbCBfUHlFdmFsX0ZpbmlUaHJlYWRzKCkgaW4gUHlfRmluYWxpemVFeCBiZWNhdXNlCiAgICAgICAgZGVzdHJveWluZyB0aGUgR0lMIG1pZ2h0IGZhaWwgd2hlbiBpdCBpcyBiZWluZyByZWZlcmVuY2VkIGZyb20KICAgICAgICBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkIChzZWUgaXNzdWUgIzk5MDEpLgogICAgICAgIEluc3RlYWQgd2UgZGVzdHJveSB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEdJTCBoZXJlLCB3aGljaCBlbnN1cmVzCi0gICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemUgbXVsdGlwbGUgdGltZXMuICovCisgICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemVFeCBtdWx0aXBsZSB0aW1lcy4gKi8KICAgICBfUHlFdmFsX0ZpbmlUaHJlYWRzKCk7CiAKICAgICAvKiBBdXRvLXRocmVhZC1zdGF0ZSBBUEkgKi8KQEAgLTQ3NywyOCArNTAzLDM1IEBACiAgICAgcmV0dXJuIHIgPiAwOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogZmx1c2hfc3RkX2ZpbGVzKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKmZvdXQgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0KTsKICAgICBQeU9iamVjdCAqZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKKyAgICAgICAgICAgIHN0YXR1cyA9IC0xOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAogICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IC0xOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qIFVuZG8gdGhlIGVmZmVjdCBvZiBQeV9Jbml0aWFsaXplKCkuCkBAIC01MTUsMTQgKzU0OCwxNSBAQAogCiAqLwogCi12b2lkCi1QeV9GaW5hbGl6ZSh2b2lkKQoraW50CitQeV9GaW5hbGl6ZUV4KHZvaWQpCiB7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzdGF0dXMgPSAwOwogCiAgICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3RhdHVzOwogCiAgICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7CiAKQEAgLTU0Nyw3ICs1ODEsOSBAQAogICAgIGluaXRpYWxpemVkID0gMDsKIAogICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKyAgICBpZiAoZmx1c2hfc3RkX2ZpbGVzKCkgPCAwKSB7CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KIAogICAgIC8qIERpc2FibGUgc2lnbmFsIGhhbmRsaW5nICovCiAgICAgUHlPU19GaW5pSW50ZXJydXB0cygpOwpAQCAtNTY0LDE5ICs2MDAsMjEgQEAKICAgICAgKiBYWFggYnV0IEknbSB1bmNsZWFyIG9uIGV4YWN0bHkgaG93IHRoYXQgb25lIGhhcHBlbnMuICBJbiBhbnkgY2FzZSwKICAgICAgKiBYWFggSSBoYXZlbid0IHNlZW4gYSByZWFsLWxpZmUgcmVwb3J0IG9mIGVpdGhlciBvZiB0aGVzZS4KICAgICAgKi8KLSAgICBQeUdDX0NvbGxlY3QoKTsKKyAgICBfUHlHQ19Db2xsZWN0SWZFbmFibGVkKCk7CiAjaWZkZWYgQ09VTlRfQUxMT0NTCiAgICAgLyogV2l0aCBDT1VOVF9BTExPQ1MsIGl0IGhlbHBzIHRvIHJ1biBHQyBtdWx0aXBsZSB0aW1lczoKICAgICAgICBlYWNoIGNvbGxlY3Rpb24gbWlnaHQgcmVsZWFzZSBzb21lIHR5cGVzIGZyb20gdGhlIHR5cGUKICAgICAgICBsaXN0LCBzbyB0aGV5IGJlY29tZSBnYXJiYWdlLiAqLwotICAgIHdoaWxlIChQeUdDX0NvbGxlY3QoKSA+IDApCisgICAgd2hpbGUgKF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKSA+IDApCiAgICAgICAgIC8qIG5vdGhpbmcgKi87CiAjZW5kaWYKICAgICAvKiBEZXN0cm95IGFsbCBtb2R1bGVzICovCiAgICAgUHlJbXBvcnRfQ2xlYW51cCgpOwogCiAgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAoYWdhaW4sIGluIGNhc2UgbW9yZSB3YXMgcHJpbnRlZCkgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKyAgICBpZiAoZmx1c2hfc3RkX2ZpbGVzKCkgPCAwKSB7CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KIAogICAgIC8qIENvbGxlY3QgZmluYWwgZ2FyYmFnZS4gIFRoaXMgZGlzcG9zZXMgb2YgY3ljbGVzIGNyZWF0ZWQgYnkKICAgICAgKiBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCkBAIC01OTQsNyArNjMyLDcgQEAKICAgICAgKiBYWFggUHl0aG9uIGNvZGUgZ2V0dGluZyBjYWxsZWQuCiAgICAgICovCiAjaWYgMAotICAgIFB5R0NfQ29sbGVjdCgpOworICAgIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKTsKICNlbmRpZgogCiAgICAgLyogRGlzYWJsZSB0cmFjZW1hbGxvYyBhZnRlciBhbGwgUHl0aG9uIG9iamVjdHMgaGF2ZSBiZWVuIGRlc3Ryb3llZCwKQEAgLTYxMiw3ICs2NTAsNyBAQAogCiAgICAgLyogRGVidWdnaW5nIHN0dWZmICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgZHVtcF9jb3VudHMoc3Rkb3V0KTsKKyAgICBkdW1wX2NvdW50cyhzdGRlcnIpOwogI2VuZGlmCiAgICAgLyogZHVtcCBoYXNoIHN0YXRzICovCiAgICAgX1B5SGFzaF9GaW5pKCk7CkBAIC02NTUsNiArNjkzLDggQEAKICAgICBQeVNsaWNlX0ZpbmkoKTsKICAgICBfUHlHQ19GaW5pKCk7CiAgICAgX1B5UmFuZG9tX0ZpbmkoKTsKKyAgICBfUHlBcmdfRmluaSgpOworICAgIFB5QXN5bmNHZW5fRmluaSgpOwogCiAgICAgLyogQ2xlYW51cCBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCiAgICAgX1B5VW5pY29kZV9GaW5pKCk7CkBAIC02ODAsNiArNzIwLDcgQEAKIAogICAgIC8qIERlbGV0ZSBjdXJyZW50IHRocmVhZC4gQWZ0ZXIgdGhpcywgbWFueSBDIEFQSSBjYWxscyBiZWNvbWUgY3Jhc2h5LiAqLwogICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKKwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKIAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKQEAgLTY5MCwxMiArNzMxLDIyIEBACiAgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKICAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7CiAjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgaWYgKF9QeU1lbV9QeW1hbGxvY0VuYWJsZWQoKSkgeworICAgICAgICBjaGFyICpvcHQgPSBQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIik7CisgICAgICAgIGlmIChvcHQgIT0gTlVMTCAmJiAqb3B0ICE9ICdcMCcpCisgICAgICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworICAgIH0KICNlbmRpZgogCiAgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCit2b2lkCitQeV9GaW5hbGl6ZSh2b2lkKQoreworICAgIFB5X0ZpbmFsaXplRXgoKTsKIH0KIAogLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCkBAIC03MjEsNiArNzcyLDEyIEBACiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfTmV3SW50ZXJwcmV0ZXI6IGNhbGwgUHlfSW5pdGlhbGl6ZSBmaXJzdCIpOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBJc3N1ZSAjMTA5MTUsICMxNTc1MTogVGhlIEdJTCBBUEkgZG9lc24ndCB3b3JrIHdpdGggbXVsdGlwbGUKKyAgICAgICBpbnRlcnByZXRlcnM6IGRpc2FibGUgUHlHSUxTdGF0ZV9DaGVjaygpLiAqLworICAgIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgPSAwOworI2VuZGlmCisKICAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7CiAgICAgaWYgKGludGVycCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3Nyw3ICs4MzQsNyBAQAogCiAgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKKyAgICAgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwogICAgICAgICBpbml0bWFpbihpbnRlcnApOwogICAgICAgICBpZiAoIVB5X05vU2l0ZUZsYWcpCiAgICAgICAgICAgICBpbml0c2l0ZSgpOwpAQCAtODAzLDcgKzg2MCw3IEBACiAgICBmcmFtZXMsIGFuZCB0aGF0IGl0IGlzIGl0cyBpbnRlcnByZXRlcidzIG9ubHkgcmVtYWluaW5nIHRocmVhZC4KICAgIEl0IGlzIGEgZmF0YWwgZXJyb3IgdG8gdmlvbGF0ZSB0aGVzZSBjb25zdHJhaW50cy4KIAotICAgKFB5X0ZpbmFsaXplKCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKKyAgIChQeV9GaW5hbGl6ZUV4KCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKICAgIGV2ZXJ5dGhpbmcsIHJlZ2FyZGxlc3MuKQogCiAgICBMb2NraW5nOiBhcyBhYm92ZS4KQEAgLTg4MSwxMSArOTM4LDE3IEBACiBzdGF0aWMgdm9pZAogaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCiB7Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOworICAgIFB5T2JqZWN0ICptLCAqZCwgKmxvYWRlciwgKmFubl9kaWN0OwogICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmICgoYW5uX2RpY3QgPT0gTlVMTCkgfHwKKyAgICAgICAgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2Fubm90YXRpb25zX18iLCBhbm5fZGljdCkgPCAwKSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2Fubm90YXRpb25zX18iKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIpID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOwogICAgICAgICBpZiAoYmltb2QgPT0gTlVMTCkgewpAQCAtOTIxLDYgKzk4NCwxOCBAQAogewogICAgIFB5T2JqZWN0ICpjb2RlYzsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnKQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAicmVwbGFjZSI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJzdXJyb2dhdGVwYXNzIjsKKyAgICB9CisjZWxzZQogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCiAgICAgewogICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOwpAQCAtOTMxLDYgKzEwMDYsNyBAQAogICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisjZW5kaWYKIAogICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwogICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwpAQCAtOTY5LDkgKzEwNDUsMTIgQEAKIGlzX3ZhbGlkX2ZkKGludCBmZCkKIHsKICAgICBpbnQgZmQyOwotICAgIGlmIChmZCA8IDAgfHwgIV9QeVZlcmlmeV9mZChmZCkpCisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIC8qIFByZWZlciBkdXAoKSBvdmVyIGZzdGF0KCkuIGZzdGF0KCkgY2FuIHJlcXVpcmUgaW5wdXQvb3V0cHV0IHdoZXJlYXMKKyAgICAgICBkdXAoKSBkb2Vzbid0LCB0aGVyZSBpcyBhIGxvdyByaXNrIG9mIEVNRklMRS9FTkZJTEUgYXQgUHl0aG9uCisgICAgICAgc3RhcnR1cC4gKi8KICAgICBmZDIgPSBkdXAoZmQpOwogICAgIGlmIChmZDIgPj0gMCkKICAgICAgICAgY2xvc2UoZmQyKTsKQEAgLTk4Miw4ICsxMDYxLDggQEAKIC8qIHJldHVybnMgUHlfTm9uZSBpZiB0aGUgZmQgaXMgbm90IHZhbGlkICovCiBzdGF0aWMgUHlPYmplY3QqCiBjcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAotICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCi0gICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKKyAgICBpbnQgZmQsIGludCB3cml0ZV9tb2RlLCBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBlcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEwsICpzdHJlYW0gPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyYXcgPSBOVUxMLCAqcmVzOwogICAgIGNvbnN0IGNoYXIqIG1vZGU7CkBAIC0xMDEzLDcgKzEwOTIsOCBAQAogICAgICAgICBtb2RlID0gInJiIjsKICAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCAvKiBlbmNvZGluZywgZXJyb3JzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCAwKTsgLyogbmV3bGluZSwgY2xvc2VmZCAqLwogICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTAyOCwxMCArMTEwOCwxNiBAQAogICAgICAgICBQeV9JTkNSRUYocmF3KTsKICAgICB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogV2luZG93cyBjb25zb2xlIElPIGlzIGFsd2F5cyBVVEYtOCBlbmNvZGVkICovCisgICAgaWYgKFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhyYXcpKQorICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCI7CisjZW5kaWYKKwogICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKICAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTEyNDMsMjUgKzEzMjksMTEgQEAKIHN0YXRpYyB2b2lkCiBfUHlfRmF0YWxFcnJvcl9EdW1wVHJhY2ViYWNrcyhpbnQgZmQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpIHdvcmtzIGV2ZW4gaWYgdGhlIEdJTCB3YXMgcmVsZWFzZWQgKi8KLSAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOwotI2Vsc2UKLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotI2VuZGlmCi0gICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygpIHJlcXVpcmVzIHRoZSB0aHJlYWQgc3RhdGUgdG8gZGlzcGxheQotICAgICAgICAgKiBmcmFtZXMgKi8KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CiAgICAgZmZsdXNoKHN0ZGVycik7CiAKICAgICAvKiBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjayAqLwotICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgdHN0YXRlLT5pbnRlcnAsIHRzdGF0ZSk7CisgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCBOVUxMKTsKIH0KIAogLyogUHJpbnQgdGhlIGN1cnJlbnQgZXhjZXB0aW9uIChpZiBhbiBleGNlcHRpb24gaXMgc2V0KSB3aXRoIGl0cyB0cmFjZWJhY2ssCkBAIC0xMzE2LDcgKzEzODgsNyBAQAogICAgIFB5X1hERUNSRUYodGIpOwogCiAgICAgLyogc3lzLnN0ZGVyciBtYXkgYmUgYnVmZmVyZWQ6IGNhbGwgc3lzLnN0ZGVyci5mbHVzaCgpICovCi0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xMzg4LDcgKzE0NjAsNyBAQAogLyogQ2xlYW4gdXAgYW5kIGV4aXQgKi8KIAogI2lmZGVmIFdJVEhfVEhSRUFECi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKKyMgIGluY2x1ZGUgInB5dGhyZWFkLmgiCiAjZW5kaWYKIAogc3RhdGljIHZvaWQgKCpweWV4aXRmdW5jKSh2b2lkKSA9IE5VTEw7CkBAIC0xNDI2LDcgKzE0OTgsNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX3NodXRkb3duLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CiAgICAgfQpAQCAtMTQ2Miw3ICsxNTM0LDkgQEAKIHZvaWQKIFB5X0V4aXQoaW50IHN0cykKIHsKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHN0cyA9IDEyMDsKKyAgICB9CiAKICAgICBleGl0KHN0cyk7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdGF0ZS5jIGIvUHl0aG9uL3B5c3RhdGUuYwppbmRleCAyNGUyMGMzLi42NWMyNDRlIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdGF0ZS5jCisrKyBiL1B5dGhvbi9weXN0YXRlLmMKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIEdFVF9UU1RBVEUoKSBcCiAgICAgKChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCkpCiAjZGVmaW5lIFNFVF9UU1RBVEUodmFsdWUpIFwKLSAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQsIChQeV91aW50cHRyX3QpKHZhbHVlKSkKKyAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQsICh1aW50cHRyX3QpKHZhbHVlKSkKICNkZWZpbmUgR0VUX0lOVEVSUF9TVEFURSgpIFwKICAgICAoR0VUX1RTVEFURSgpLT5pbnRlcnApCiAKQEAgLTI1LDcgKzI1LDcgQEAKICNpZmRlZiBIQVZFX0RMRkNOX0gKICNpbmNsdWRlIDxkbGZjbi5oPgogI2VuZGlmCi0jaWZuZGVmIFJUTERfTEFaWQorI2lmICFIQVZFX0RFQ0xfUlRMRF9MQVpZCiAjZGVmaW5lIFJUTERfTEFaWSAxCiAjZW5kaWYKICNlbmRpZgpAQCAtMzQsNiArMzQsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAoraW50IF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgPSAxOworCiAjaWZkZWYgV0lUSF9USFJFQUQKICNpbmNsdWRlICJweXRocmVhZC5oIgogc3RhdGljIFB5VGhyZWFkX3R5cGVfbG9jayBoZWFkX211dGV4ID0gTlVMTDsgLyogUHJvdGVjdHMgaW50ZXJwLT50c3RhdGVfaGVhZCAqLwpAQCAtNDUsNyArNDcsNyBAQAogICAgR0lMU3RhdGUgaW1wbGVtZW50YXRpb24KICovCiBzdGF0aWMgUHlJbnRlcnByZXRlclN0YXRlICphdXRvSW50ZXJwcmV0ZXJTdGF0ZSA9IE5VTEw7Ci1zdGF0aWMgaW50IGF1dG9UTFNrZXkgPSAwOworc3RhdGljIGludCBhdXRvVExTa2V5ID0gLTE7CiAjZWxzZQogI2RlZmluZSBIRUFEX0lOSVQoKSAvKiBOb3RoaW5nICovCiAjZGVmaW5lIEhFQURfTE9DSygpIC8qIE5vdGhpbmcgKi8KQEAgLTg4LDE2ICs5MCwxNSBAQAogICAgICAgICBpbnRlcnAtPmNvZGVjc19pbml0aWFsaXplZCA9IDA7CiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDA7CiAgICAgICAgIGludGVycC0+aW1wb3J0bGliID0gTlVMTDsKKyAgICAgICAgaW50ZXJwLT5pbXBvcnRfZnVuYyA9IE5VTEw7CisgICAgICAgIGludGVycC0+ZXZhbF9mcmFtZSA9IF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdDsKICNpZmRlZiBIQVZFX0RMT1BFTgotI2lmZGVmIFJUTERfTk9XCisjaWYgSEFWRV9ERUNMX1JUTERfTk9XCiAgICAgICAgIGludGVycC0+ZGxvcGVuZmxhZ3MgPSBSVExEX05PVzsKICNlbHNlCiAgICAgICAgIGludGVycC0+ZGxvcGVuZmxhZ3MgPSBSVExEX0xBWlk7CiAjZW5kaWYKICNlbmRpZgotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgIGludGVycC0+dHNjZHVtcCA9IDA7Ci0jZW5kaWYKIAogICAgICAgICBIRUFEX0xPQ0soKTsKICAgICAgICAgaW50ZXJwLT5uZXh0ID0gaW50ZXJwX2hlYWQ7CkBAIC0xMjYsNiArMTI3LDcgQEAKICAgICBQeV9DTEVBUihpbnRlcnAtPmJ1aWx0aW5zKTsKICAgICBQeV9DTEVBUihpbnRlcnAtPmJ1aWx0aW5zX2NvcHkpOwogICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0bGliKTsKKyAgICBQeV9DTEVBUihpbnRlcnAtPmltcG9ydF9mdW5jKTsKIH0KIAogCkBAIC0yMjIsNiArMjI0LDEwIEBACiAKICAgICAgICAgdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlciA9IE5VTEw7CiAgICAgICAgIHRzdGF0ZS0+aW5fY29yb3V0aW5lX3dyYXBwZXIgPSAwOworICAgICAgICB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgPSAwOworCisgICAgICAgIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlciA9IE5VTEw7CisgICAgICAgIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplciA9IE5VTEw7CiAKICAgICAgICAgaWYgKGluaXQpCiAgICAgICAgICAgICBfUHlUaHJlYWRTdGF0ZV9Jbml0KHRzdGF0ZSk7CkBAIC00MDIsNiArNDA4LDggQEAKICAgICBQeV9DTEVBUih0c3RhdGUtPmNfdHJhY2VvYmopOwogCiAgICAgUHlfQ0xFQVIodHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcik7CisgICAgUHlfQ0xFQVIodHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyKTsKKyAgICBQeV9DTEVBUih0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXIpOwogfQogCiAKQEAgLTQ1MSwxMCArNDU5LDEwIEBACiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQogICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgIlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudDogbm8gY3VycmVudCB0c3RhdGUiKTsKLSAgICBTRVRfVFNUQVRFKE5VTEwpOworICAgIHRzdGF0ZV9kZWxldGVfY29tbW9uKHRzdGF0ZSk7CiAgICAgaWYgKGF1dG9JbnRlcnByZXRlclN0YXRlICYmIFB5VGhyZWFkX2dldF9rZXlfdmFsdWUoYXV0b1RMU2tleSkgPT0gdHN0YXRlKQogICAgICAgICBQeVRocmVhZF9kZWxldGVfa2V5X3ZhbHVlKGF1dG9UTFNrZXkpOwotICAgIHRzdGF0ZV9kZWxldGVfY29tbW9uKHRzdGF0ZSk7CisgICAgU0VUX1RTVEFURShOVUxMKTsKICAgICBQeUV2YWxfUmVsZWFzZUxvY2soKTsKIH0KICNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwpAQCAtNjk4LDcgKzcwNiw3IEBACiB9CiAKIC8qIEludGVybmFsIGluaXRpYWxpemF0aW9uL2ZpbmFsaXphdGlvbiBmdW5jdGlvbnMgY2FsbGVkIGJ5Ci0gICBQeV9Jbml0aWFsaXplL1B5X0ZpbmFsaXplCisgICBQeV9Jbml0aWFsaXplL1B5X0ZpbmFsaXplRXgKICovCiB2b2lkCiBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaSwgUHlUaHJlYWRTdGF0ZSAqdCkKQEAgLTcxNCwxMCArNzIyLDE3IEBACiAgICAgX1B5R0lMU3RhdGVfTm90ZVRocmVhZFN0YXRlKHQpOwogfQogCitQeUludGVycHJldGVyU3RhdGUgKgorX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSh2b2lkKQoreworICAgIHJldHVybiBhdXRvSW50ZXJwcmV0ZXJTdGF0ZTsKK30KKwogdm9pZAogX1B5R0lMU3RhdGVfRmluaSh2b2lkKQogewogICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXkoYXV0b1RMU2tleSk7CisgICAgYXV0b1RMU2tleSA9IC0xOwogICAgIGF1dG9JbnRlcnByZXRlclN0YXRlID0gTlVMTDsKIH0KIApAQCAtNzg2LDggKzgwMSwxOSBAQAogaW50CiBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gR0VUX1RTVEFURSgpOwotICAgIHJldHVybiB0c3RhdGUgJiYgKHRzdGF0ZSA9PSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKKyAgICBpZiAoIV9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKGF1dG9UTFNrZXkgPT0gLTEpCisgICAgICAgIHJldHVybiAxOworCisgICAgdHN0YXRlID0gR0VUX1RTVEFURSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gKHRzdGF0ZSA9PSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpKTsKIH0KIAogUHlHSUxTdGF0ZV9TVEFURQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RydG9kLmMgYi9QeXRob24vcHlzdHJ0b2QuYwppbmRleCAyMDljOTA4Li42NGQwYzUyIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdHJ0b2QuYworKysgYi9QeXRob24vcHlzdHJ0b2QuYwpAQCAtMzcwLDYgKzM3MCw3MiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qIFJlbW92ZSB1bmRlcnNjb3JlcyB0aGF0IGZvbGxvdyB0aGUgdW5kZXJzY29yZSBwbGFjZW1lbnQgcnVsZSBmcm9tCisgICB0aGUgc3RyaW5nIGFuZCB0aGVuIGNhbGwgdGhlIGBpbm5lcmZ1bmNgIGZ1bmN0aW9uIG9uIHRoZSByZXN1bHQuCisgICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IG9iamVjdCBvciBOVUxMIG9uIGV4Y2VwdGlvbi4KKworICAgYHdoYXRgIGlzIHVzZWQgZm9yIHRoZSBlcnJvciBtZXNzYWdlIGVtaXR0ZWQgd2hlbiB1bmRlcnNjb3JlcyBhcmUgZGV0ZWN0ZWQKKyAgIHRoYXQgZG9uJ3QgZm9sbG93IHRoZSBydWxlLiBgYXJnYCBpcyBhbiBvcGFxdWUgcG9pbnRlciBwYXNzZWQgdG8gdGhlIGlubmVyCisgICBmdW5jdGlvbi4KKworICAgVGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB1bmRlcnNjb3JlLWFnbm9zdGljIGNvbnZlcnNpb24gZm9yIGZsb2F0cworICAgYW5kIGNvbXBsZXggbnVtYmVycy4KKyovCitQeU9iamVjdCAqCitfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKAorICAgIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgb3JpZ19sZW4sIGNvbnN0IGNoYXIgKndoYXQsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmFyZywKKyAgICBQeU9iamVjdCAqKCppbm5lcmZ1bmMpKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgdm9pZCAqKSkKK3sKKyAgICBjaGFyIHByZXY7CisgICAgY29uc3QgY2hhciAqcCwgKmxhc3Q7CisgICAgY2hhciAqZHVwLCAqZW5kOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoc3RyY2hyKHMsICdfJykgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gaW5uZXJmdW5jKHMsIG9yaWdfbGVuLCBhcmcpOworICAgIH0KKworICAgIGR1cCA9IFB5TWVtX01hbGxvYyhvcmlnX2xlbiArIDEpOworICAgIGVuZCA9IGR1cDsKKyAgICBwcmV2ID0gJ1wwJzsKKyAgICBsYXN0ID0gcyArIG9yaWdfbGVuOworICAgIGZvciAocCA9IHM7ICpwOyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICdfJykgeworICAgICAgICAgICAgLyogVW5kZXJzY29yZXMgYXJlIG9ubHkgYWxsb3dlZCBhZnRlciBkaWdpdHMuICovCisgICAgICAgICAgICBpZiAoIShwcmV2ID49ICcwJyAmJiBwcmV2IDw9ICc5JykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgKmVuZCsrID0gKnA7CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgb25seSBhbGxvd2VkIGJlZm9yZSBkaWdpdHMuICovCisgICAgICAgICAgICBpZiAocHJldiA9PSAnXycgJiYgISgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJldiA9ICpwOworICAgIH0KKyAgICAvKiBVbmRlcnNjb3JlcyBhcmUgbm90IGFsbG93ZWQgYXQgdGhlIGVuZC4gKi8KKyAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgLyogTm8gZW1iZWRkZWQgTlVMcyBhbGxvd2VkLiAqLworICAgIGlmIChwICE9IGxhc3QpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgKmVuZCA9ICdcMCc7CisgICAgcmVzdWx0ID0gaW5uZXJmdW5jKGR1cCwgZW5kIC0gZHVwLCBhcmcpOworICAgIFB5TWVtX0ZyZWUoZHVwKTsKKyAgICByZXR1cm4gcmVzdWx0OworCisgIGVycm9yOgorICAgIFB5TWVtX0ZyZWUoZHVwKTsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKwkJICJjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gJXM6ICIKKwkJICIlUiIsIHdoYXQsIG9iaik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKICNpZmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCiAKIC8qIEdpdmVuIGEgc3RyaW5nIHRoYXQgbWF5IGhhdmUgYSBkZWNpbWFsIHBvaW50IGluIHRoZSBjdXJyZW50CkBAIC04ODEsMTIgKzk0NywxMiBAQAogI2RlZmluZSBPRlNfRSAyCiAKIC8qIFRoZSBsZW5ndGhzIG9mIHRoZXNlIGFyZSBrbm93biB0byB0aGUgY29kZSBiZWxvdywgc28gZG9uJ3QgY2hhbmdlIHRoZW0gKi8KLXN0YXRpYyBjaGFyICpsY19mbG9hdF9zdHJpbmdzW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKICAgICAiaW5mIiwKICAgICAibmFuIiwKICAgICAiZSIsCiB9Owotc3RhdGljIGNoYXIgKnVjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdWNfZmxvYXRfc3RyaW5nc1tdID0gewogICAgICJJTkYiLAogICAgICJOQU4iLAogICAgICJFIiwKQEAgLTkyNSw3ICs5OTEsOCBAQAogZm9ybWF0X2Zsb2F0X3Nob3J0KGRvdWJsZSBkLCBjaGFyIGZvcm1hdF9jb2RlLAogICAgICAgICAgICAgICAgICAgIGludCBtb2RlLCBpbnQgcHJlY2lzaW9uLAogICAgICAgICAgICAgICAgICAgIGludCBhbHdheXNfYWRkX3NpZ24sIGludCBhZGRfZG90XzBfaWZfaW50ZWdlciwKLSAgICAgICAgICAgICAgICAgICBpbnQgdXNlX2FsdF9mb3JtYXR0aW5nLCBjaGFyICoqZmxvYXRfc3RyaW5ncywgaW50ICp0eXBlKQorICAgICAgICAgICAgICAgICAgIGludCB1c2VfYWx0X2Zvcm1hdHRpbmcsIGNvbnN0IGNoYXIgKiBjb25zdCAqZmxvYXRfc3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpCiB7CiAgICAgY2hhciAqYnVmID0gTlVMTDsKICAgICBjaGFyICpwID0gTlVMTDsKQEAgLTExNzYsNyArMTI0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0eXBlKQogewotICAgIGNoYXIgKipmbG9hdF9zdHJpbmdzID0gbGNfZmxvYXRfc3RyaW5nczsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKmZsb2F0X3N0cmluZ3MgPSBsY19mbG9hdF9zdHJpbmdzOwogICAgIGludCBtb2RlOwogCiAgICAgLyogVmFsaWRhdGUgZm9ybWF0X2NvZGUsIGFuZCBtYXAgdXBwZXIgYW5kIGxvd2VyIGNhc2UuIENvbXB1dGUgdGhlCmRpZmYgLS1naXQgYS9QeXRob24vcHl0aG9ucnVuLmMgYi9QeXRob24vcHl0aG9ucnVuLmMKaW5kZXggN2ZiZjA2ZS4uMWZjODZjMCAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5dGhvbnJ1bi5jCisrKyBiL1B5dGhvbi9weXRob25ydW4uYwpAQCAtNDMxLDcgKzQzMSw3IEBACiBwYXJzZV9zeW50YXhfZXJyb3IoUHlPYmplY3QgKmVyciwgUHlPYmplY3QgKiptZXNzYWdlLCBQeU9iamVjdCAqKmZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIGludCAqbGluZW5vLCBpbnQgKm9mZnNldCwgUHlPYmplY3QgKip0ZXh0KQogewotICAgIGxvbmcgaG9sZDsKKyAgICBpbnQgaG9sZDsKICAgICBQeU9iamVjdCAqdjsKICAgICBfUHlfSURFTlRJRklFUihtc2cpOwogICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKQEAgLTQ2NCwxMSArNDY0LDExIEBACiAgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9saW5lbm8pOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOworICAgIGhvbGQgPSBfUHlMb25nX0FzSW50KHYpOwogICAgIFB5X0RFQ1JFRih2KTsKICAgICBpZiAoaG9sZCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICpsaW5lbm8gPSAoaW50KWhvbGQ7CisgICAgKmxpbmVubyA9IGhvbGQ7CiAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX29mZnNldCk7CiAgICAgaWYgKCF2KQpAQCAtNDc3LDExICs0NzcsMTEgQEAKICAgICAgICAgKm9mZnNldCA9IC0xOwogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaG9sZCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgICAgIGhvbGQgPSBfUHlMb25nX0FzSW50KHYpOwogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGlmIChob2xkIDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAqb2Zmc2V0ID0gKGludClob2xkOworICAgICAgICAqb2Zmc2V0ID0gaG9sZDsKICAgICB9CiAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX3RleHQpOwpAQCAtNjMwLDggKzYzMCwxMyBAQAogICAgIH0KICAgICBob29rID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX2V4Y2VwdGhvb2spOwogICAgIGlmIChob29rKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9QYWNrKDMsIGV4Y2VwdGlvbiwgdiwgdGIpOwotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QoaG9vaywgYXJncyk7CisgICAgICAgIFB5T2JqZWN0KiBzdGFja1szXTsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgICAgICBzdGFja1swXSA9IGV4Y2VwdGlvbjsKKyAgICAgICAgc3RhY2tbMV0gPSB2OworICAgICAgICBzdGFja1syXSA9IHRiOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoaG9vaywgc3RhY2ssIDMpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNlcHRpb24yLCAqdjIsICp0YjI7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeXN0ZW1FeGl0KSkgewpAQCAtNjYwLDcgKzY2NSw2IEBACiAgICAgICAgICAgICBQeV9YREVDUkVGKHRiMik7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJzeXMuZXhjZXB0aG9vayBpcyBtaXNzaW5nXG4iKTsKICAgICAgICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKQEAgLTc5MSwxMSArNzk1LDExIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjYXVzZV9tZXNzYWdlID0KK3N0YXRpYyBjb25zdCBjaGFyIGNhdXNlX21lc3NhZ2VbXSA9CiAgICAgIlxuVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAiCiAgICAgIm9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4iOwogCi1zdGF0aWMgY29uc3QgY2hhciAqY29udGV4dF9tZXNzYWdlID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvbnRleHRfbWVzc2FnZVtdID0KICAgICAiXG5EdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgIgogICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuIjsKIApAQCAtOTQ2LDcgKzk1MCw3IEBACiAKICAgICBmID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC05NTQsNyArOTU4LDcgQEAKICAgICB9CiAgICAgZiA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTE0NCw4ICsxMTQ4LDggQEAKIAogbW9kX3R5CiBQeVBhcnNlcl9BU1RGcm9tRmlsZU9iamVjdChGSUxFICpmcCwgUHlPYmplY3QgKmZpbGVuYW1lLCBjb25zdCBjaGFyKiBlbmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNoYXIgKnBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBjb25zdCBjaGFyICpwczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwczIsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsIGludCAqZXJyY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQogewogICAgIG1vZF90eSBtb2Q7CkBAIC0xMTc3LDggKzExODEsOCBAQAogCiBtb2RfdHkKIFB5UGFyc2VyX0FTVEZyb21GaWxlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZV9zdHIsIGNvbnN0IGNoYXIqIGVuYywKLSAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY2hhciAqcHMxLAotICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNvbnN0IGNoYXIgKnBzMSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgbW9kX3R5IG1vZDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRpbWUuYyBiL1B5dGhvbi9weXRpbWUuYwppbmRleCA3ZjY1ODI0Li4zMDE1YTZiIDEwMDY0NAotLS0gYS9QeXRob24vcHl0aW1lLmMKKysrIGIvUHl0aG9uL3B5dGltZS5jCkBAIC03LDYgKzcsMTEgQEAKICNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPiAgIC8qIG1hY2hfYWJzb2x1dGVfdGltZSgpLCBtYWNoX3RpbWViYXNlX2luZm8oKSAqLwogI2VuZGlmCiAKKyNkZWZpbmUgX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3coYSwgYikgXAorICAgIChhc3NlcnQoYiA+IDApLCBcCisgICAgIChfUHlUaW1lX3QpKGEpIDwgX1B5VGltZV9NSU4gLyAoX1B5VGltZV90KShiKSBcCisgICAgIHx8IF9QeVRpbWVfTUFYIC8gKF9QeVRpbWVfdCkoYikgPCAoX1B5VGltZV90KShhKSkKKwogLyogVG8gbWlsbGlzZWNvbmQgKDEwXi0zKSAqLwogI2RlZmluZSBTRUNfVE9fTVMgMTAwMAogCkBAIC0zMywxMiArMzgsMTIgQEAKIHRpbWVfdAogX1B5TG9uZ19Bc1RpbWVfdChQeU9iamVjdCAqb2JqKQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB2YWw7CisjaWYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgbG9uZyBsb25nIHZhbDsKICAgICB2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOwogI2Vsc2UKICAgICBsb25nIHZhbDsKLSAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKICAgICB2YWwgPSBQeUxvbmdfQXNMb25nKG9iaik7CiAjZW5kaWYKICAgICBpZiAodmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTUyLDU4ICs1Nyw5MSBAQAogUHlPYmplY3QgKgogX1B5TG9uZ19Gcm9tVGltZV90KHRpbWVfdCB0KQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdCk7CisjaWYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl0KTsKICNlbHNlCi0gICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKICNlbmRpZgogfQogCisvKiBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgKF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSAqLworc3RhdGljIGRvdWJsZQorX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGRvdWJsZSB4KQoreworICAgIGRvdWJsZSByb3VuZGVkID0gcm91bmQoeCk7CisgICAgaWYgKGZhYnMoeC1yb3VuZGVkKSA9PSAwLjUpCisgICAgICAgIC8qIGhhbGZ3YXkgY2FzZTogcm91bmQgdG8gZXZlbiAqLworICAgICAgICByb3VuZGVkID0gMi4wKnJvdW5kKHgvMi4wKTsKKyAgICByZXR1cm4gcm91bmRlZDsKK30KKworc3RhdGljIGRvdWJsZQorX1B5VGltZV9Sb3VuZChkb3VibGUgeCwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICB2b2xhdGlsZSBkb3VibGUgZDsKKworICAgIGQgPSB4OworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikKKyAgICAgICAgZCA9IF9QeVRpbWVfUm91bmRIYWxmRXZlbihkKTsKKyAgICBlbHNlIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCisgICAgICAgIGQgPSBjZWlsKGQpOworICAgIGVsc2UKKyAgICAgICAgZCA9IGZsb29yKGQpOworICAgIHJldHVybiBkOworfQorCitzdGF0aWMgaW50CitfUHlUaW1lX0RvdWJsZVRvRGVub21pbmF0b3IoZG91YmxlIGQsIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgZG91YmxlIGludHBhcnQsIGVycjsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKKworICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOworCisgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOworICAgIGZsb2F0cGFydCA9IF9QeVRpbWVfUm91bmQoZmxvYXRwYXJ0LCByb3VuZCk7CisgICAgaWYgKGZsb2F0cGFydCA+PSBkZW5vbWluYXRvcikgeworICAgICAgICBmbG9hdHBhcnQgLT0gZGVub21pbmF0b3I7CisgICAgICAgIGludHBhcnQgKz0gMS4wOworICAgIH0KKyAgICBlbHNlIGlmIChmbG9hdHBhcnQgPCAwKSB7CisgICAgICAgIGZsb2F0cGFydCArPSBkZW5vbWluYXRvcjsKKyAgICAgICAgaW50cGFydCAtPSAxLjA7CisgICAgfQorICAgIGFzc2VydCgwLjAgPD0gZmxvYXRwYXJ0ICYmIGZsb2F0cGFydCA8IGRlbm9taW5hdG9yKTsKKworICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKKworICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKKyAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQKIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnVtZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZW5vbWluYXRvciwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewotICAgIGFzc2VydChkZW5vbWluYXRvciA8PSBMT05HX01BWCk7CisgICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IChkb3VibGUpTE9OR19NQVgpOworCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewotICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOwotICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgdW5zYWZlIG9wdGltaXphdGlvbiBvbiBmbG9hdCBlbmFibGVkIGJ5IGdjYyAtTzMgKi8KLSAgICAgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKLQotICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOwotICAgICAgICBmbG9hdHBhcnQgPSBtb2RmKGQsICZpbnRwYXJ0KTsKLSAgICAgICAgaWYgKGZsb2F0cGFydCA8IDApIHsKLSAgICAgICAgICAgIGZsb2F0cGFydCA9IDEuMCArIGZsb2F0cGFydDsKLSAgICAgICAgICAgIGludHBhcnQgLT0gMS4wOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7Ci0gICAgICAgICAgICBmbG9hdHBhcnQgPSBjZWlsKGZsb2F0cGFydCk7Ci0gICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMC4wOwotICAgICAgICAgICAgICAgIGludHBhcnQgKz0gMS4wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZmxvYXRwYXJ0ID0gZmxvb3IoZmxvYXRwYXJ0KTsKLSAgICAgICAgfQotCi0gICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7Ci0gICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7Ci0gICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7Ci0gICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotCi0gICAgICAgICpudW1lcmF0b3IgPSAobG9uZylmbG9hdHBhcnQ7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBkb3VibGUgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgcmV0dXJuIF9QeVRpbWVfRG91YmxlVG9EZW5vbWluYXRvcihkLCBzZWMsIG51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW5vbWluYXRvciwgcm91bmQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgKm51bWVyYXRvciA9IDA7CiAgICAgICAgIGlmICgqc2VjID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKm51bWVyYXRvciA9IDA7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTExMiwxMyArMTUwLDEyIEBACiBfUHlUaW1lX09iamVjdFRvVGltZV90KFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewotICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOworICAgICAgICBkb3VibGUgaW50cGFydCwgZXJyOworICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgICAgIHZvbGF0aWxlIGRvdWJsZSBkOwogCiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCi0gICAgICAgICAgICBkID0gY2VpbChkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZCA9IGZsb29yKGQpOworICAgICAgICBkID0gX1B5VGltZV9Sb3VuZChkLCByb3VuZCk7CiAgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOwogCiAgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CkBAIC0xNDEsMTQgKzE3OCwyMCBAQAogX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpuc2VjLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKLSAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTksIHJvdW5kKTsKKyAgICBpbnQgcmVzOworICAgIHJlcyA9IF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgbnNlYywgMWU5LCByb3VuZCk7CisgICAgYXNzZXJ0KDAgPD0gKm5zZWMgJiYgKm5zZWMgPCBTRUNfVE9fTlMpOworICAgIHJldHVybiByZXM7CiB9CiAKIGludAogX1B5VGltZV9PYmplY3RUb1RpbWV2YWwoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKnVzZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7Ci0gICAgcmV0dXJuIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CisgICAgaW50IHJlczsKKyAgICByZXMgPSBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNiwgcm91bmQpOworICAgIGFzc2VydCgwIDw9ICp1c2VjICYmICp1c2VjIDwgU0VDX1RPX1VTKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTYyLDIxICsyMDUsMjQgQEAKIF9QeVRpbWVfRnJvbVNlY29uZHMoaW50IHNlY29uZHMpCiB7CiAgICAgX1B5VGltZV90IHQ7CisgICAgdCA9IChfUHlUaW1lX3Qpc2Vjb25kczsKICAgICAvKiBlbnN1cmUgdGhhdCBpbnRlZ2VyIG92ZXJmbG93IGNhbm5vdCBoYXBwZW4sIGludCB0eXBlIHNob3VsZCBoYXZlIDMyCiAgICAgICAgYml0cywgd2hlcmVhcyBfUHlUaW1lX3QgdHlwZSBoYXMgYXQgbGVhc3QgNjQgYml0cyAoU0VDX1RPX01TIHRha2VzIDMwCiAgICAgICAgYml0cykuICovCi0gICAgYXNzZXJ0KChzZWNvbmRzID49IDAgJiYgc2Vjb25kcyA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUykKLSAgICAgICAgICAgfHwgKHNlY29uZHMgPCAwICYmIHNlY29uZHMgPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpKTsKLSAgICB0ID0gKF9QeVRpbWVfdClzZWNvbmRzICogU0VDX1RPX05TOworICAgIFB5X0JVSUxEX0FTU0VSVChJTlRfTUFYIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoSU5UX01JTiA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUyk7CisgICAgYXNzZXJ0KCh0ID49IDAgJiYgdCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUykKKyAgICAgICAgICAgfHwgKHQgPCAwICYmIHQgPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpKTsKKyAgICB0ICo9IFNFQ19UT19OUzsKICAgICByZXR1cm4gdDsKIH0KIAogX1B5VGltZV90Ci1fUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpCitfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhsb25nIGxvbmcgbnMpCiB7CiAgICAgX1B5VGltZV90IHQ7Ci0gICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgUFlfTE9OR19MT05HLCBfUHlUaW1lX3QpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IFB5X1NBRkVfRE9XTkNBU1QobnMsIGxvbmcgbG9uZywgX1B5VGltZV90KTsKICAgICByZXR1cm4gdDsKIH0KIApAQCAtMTg3LDEyICsyMzMsMTUgQEAKICAgICBfUHlUaW1lX3QgdDsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIHQgPSAoX1B5VGltZV90KXRzLT50dl9zZWMgKiBTRUNfVE9fTlM7Ci0gICAgaWYgKHQgLyBTRUNfVE9fTlMgIT0gdHMtPnR2X3NlYykgeworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodHMtPnR2X3NlYykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXRzLT50dl9zZWM7CisKKyAgICBpZiAoX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3codCwgU0VDX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgICB0ID0gdCAqIFNFQ19UT19OUzsKIAogICAgIHQgKz0gdHMtPnR2X25zZWM7CiAKQEAgLTIwNiwxMiArMjU1LDE1IEBACiAgICAgX1B5VGltZV90IHQ7CiAgICAgaW50IHJlcyA9IDA7CiAKLSAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjICogU0VDX1RPX05TOwotICAgIGlmICh0IC8gU0VDX1RPX05TICE9IHR2LT50dl9zZWMpIHsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHR2LT50dl9zZWMpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjOworCisgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHQsIFNFQ19UT19OUykpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwogICAgICAgICByZXMgPSAtMTsKICAgICB9CisgICAgdCA9IHQgKiBTRUNfVE9fTlM7CiAKICAgICB0ICs9IChfUHlUaW1lX3QpdHYtPnR2X3VzZWMgKiBVU19UT19OUzsKIApAQCAtMjIxLDUwICsyNzMsNTIgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21GbG9hdE9iamVjdChfUHlUaW1lX3QgKnQsIGRvdWJsZSB2YWx1ZSwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1bml0X3RvX25zKQoreworICAgIGRvdWJsZSBlcnI7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgLyogY29udmVydCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAqLworICAgIGQgPSB2YWx1ZTsKKyAgICBkICo9IChkb3VibGUpdW5pdF90b19uczsKKyAgICBkID0gX1B5VGltZV9Sb3VuZChkLCByb3VuZCk7CisKKyAgICAqdCA9IChfUHlUaW1lX3QpZDsKKyAgICBlcnIgPSBkIC0gKGRvdWJsZSkqdDsKKyAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgeworICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKIF9QeVRpbWVfRnJvbU9iamVjdChfUHlUaW1lX3QgKnQsIFB5T2JqZWN0ICpvYmosIF9QeVRpbWVfcm91bmRfdCByb3VuZCwKLSAgICAgICAgICAgICAgICAgICBsb25nIHRvX25hbm9zZWNvbmRzKQorICAgICAgICAgICAgICAgICAgIGxvbmcgdW5pdF90b19ucykKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLwotICAgICAgICB2b2xhdGlsZSBkb3VibGUgZCwgZXJyOwotCi0gICAgICAgIC8qIGNvbnZlcnQgdG8gYSBudW1iZXIgb2YgbmFub3NlY29uZHMgKi8KKyAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGQgKj0gdG9fbmFub3NlY29uZHM7Ci0KLSAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKLSAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gZmxvb3IoZCk7Ci0KLSAgICAgICAgKnQgPSAoX1B5VGltZV90KWQ7Ci0gICAgICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OwotICAgICAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgewotICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gX1B5VGltZV9Gcm9tRmxvYXRPYmplY3QodCwgZCwgcm91bmQsIHVuaXRfdG9fbnMpOwogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICBQWV9MT05HX0xPTkcgc2VjOworICAgICAgICBsb25nIGxvbmcgc2VjOworICAgICAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKGxvbmcgbG9uZykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworCiAgICAgICAgIHNlYyA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7Ci0gICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7Ci0jZWxzZQotICAgICAgICBsb25nIHNlYzsKLSAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZyhvYmopOwotICAgICAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOwotI2VuZGlmCiAgICAgICAgIGlmIChzZWMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgICp0ID0gc2VjICogdG9fbmFub3NlY29uZHM7Ci0gICAgICAgIGlmICgqdCAvIHRvX25hbm9zZWNvbmRzICE9IHNlYykgeworCisgICAgICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyhzZWMsIHVuaXRfdG9fbnMpKSB7CiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KKyAgICAgICAgKnQgPSBzZWMgKiB1bml0X3RvX25zOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CkBAIC0yODQsMjQgKzMzOCwyOCBAQAogZG91YmxlCiBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShfUHlUaW1lX3QgdCkKIHsKLSAgICBfUHlUaW1lX3Qgc2VjLCBuczsKLSAgICAvKiBEaXZpZGUgdXNpbmcgaW50ZWdlcnMgdG8gYXZvaWQgcm91bmRpbmcgaXNzdWVzIG9uIHRoZSBpbnRlZ2VyIHBhcnQuCi0gICAgICAgMWUtOSBjYW5ub3QgYmUgc3RvcmVkIGV4YWN0bHkgaW4gSUVFRSA2NC1iaXQuICovCi0gICAgc2VjID0gdCAvIFNFQ19UT19OUzsKLSAgICBucyA9IHQgJSBTRUNfVE9fTlM7Ci0gICAgcmV0dXJuIChkb3VibGUpc2VjICsgKGRvdWJsZSlucyAqIDFlLTk7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgaWYgKHQgJSBTRUNfVE9fTlMgPT0gMCkgeworICAgICAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICAgICAgLyogRGl2aWRlIHVzaW5nIGludGVnZXJzIHRvIGF2b2lkIHJvdW5kaW5nIGlzc3VlcyBvbiB0aGUgaW50ZWdlciBwYXJ0LgorICAgICAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KKyAgICAgICAgc2VjcyA9IHQgLyBTRUNfVE9fTlM7CisgICAgICAgIGQgPSAoZG91YmxlKXNlY3M7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkID0gKGRvdWJsZSl0OworICAgICAgICBkIC89IDFlOTsKKyAgICB9CisgICAgcmV0dXJuIGQ7CiB9CiAKIFB5T2JqZWN0ICoKIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdChfUHlUaW1lX3QgdCkKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA+PSBzaXplb2YoX1B5VGltZV90KSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKLSNlbHNlCi0gICAgYXNzZXJ0KHNpemVvZihsb25nKSA+PSBzaXplb2YoX1B5VGltZV90KSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKLSNlbmRpZgorICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA+PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl0KTsKIH0KIAogc3RhdGljIF9QeVRpbWVfdApAQCAtMzA5LDcgKzM2NywyMCBAQAogICAgICAgICAgICAgICAgY29uc3QgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewogICAgIGFzc2VydChrID4gMSk7Ci0gICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgeworICAgICAgICBfUHlUaW1lX3QgeCwgciwgYWJzX3I7CisgICAgICAgIHggPSB0IC8gazsKKyAgICAgICAgciA9IHQgJSBrOworICAgICAgICBhYnNfciA9IFB5X0FCUyhyKTsKKyAgICAgICAgaWYgKGFic19yID4gayAvIDIgfHwgKGFic19yID09IGsgLyAyICYmIChQeV9BQlMoeCkgJiAxKSkpIHsKKyAgICAgICAgICAgIGlmICh0ID49IDApCisgICAgICAgICAgICAgICAgeCsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHgtLTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisgICAgZWxzZSBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CiAgICAgICAgIGlmICh0ID49IDApCiAgICAgICAgICAgICByZXR1cm4gKHQgKyBrIC0gMSkgLyBrOwogICAgICAgICBlbHNlCkBAIC0zNzMsNyArNDQ0LDcgQEAKIF9QeVRpbWVfQXNUaW1ldmFsU3RydWN0X2ltcGwoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1ldmFsICp0diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kLCBpbnQgcmFpc2UpCiB7Ci0gICAgX1B5VGltZV90IHNlY3M7CisgICAgX1B5VGltZV90IHNlY3MsIHNlY3MyOwogICAgIGludCB1czsKICAgICBpbnQgcmVzOwogCkBAIC0zODYsNyArNDU3LDggQEAKICNlbmRpZgogICAgIHR2LT50dl91c2VjID0gdXM7CiAKLSAgICBpZiAocmVzIDwgMCB8fCAoX1B5VGltZV90KXR2LT50dl9zZWMgIT0gc2VjcykgeworICAgIHNlY3MyID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjOworICAgIGlmIChyZXMgPCAwIHx8IHNlY3MyICE9IHNlY3MpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTQyNCw2ICs0OTYsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKICNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKIGludAogX1B5VGltZV9Bc1RpbWVzcGVjKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQpAQCAtNDM3LDEzICs1MTAsMTMgQEAKICAgICAgICAgc2VjcyAtPSAxOwogICAgIH0KICAgICB0cy0+dHZfc2VjID0gKHRpbWVfdClzZWNzOwotICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgewotICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgYXNzZXJ0KDAgPD0gbnNlYyAmJiBuc2VjIDwgU0VDX1RPX05TKTsKICAgICB0cy0+dHZfbnNlYyA9IG5zZWM7CiAKLSAgICBhc3NlcnQoMCA8PSB0cy0+dHZfbnNlYyAmJiB0cy0+dHZfbnNlYyA8PSA5OTk5OTk5OTkpOworICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtNTU3LDE5ICs2MzAsMjAgQEAKICAgICByZXR1cm4gcHlnZXR0aW1lb2ZkYXkodCwgaW5mbywgMSk7CiB9CiAKLQogc3RhdGljIGludAogcHltb25vdG9uaWMoX1B5VGltZV90ICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgaW50IHJhaXNlKQogewogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICBVTE9OR0xPTkcgcmVzdWx0OworICAgIFVMT05HTE9ORyB0aWNrczsKKyAgICBfUHlUaW1lX3QgdDsKIAogICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOwogCi0gICAgcmVzdWx0ID0gR2V0VGlja0NvdW50NjQoKTsKKyAgICB0aWNrcyA9IEdldFRpY2tDb3VudDY0KCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0aWNrcykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXRpY2tzOwogCi0gICAgKnRwID0gcmVzdWx0ICogTVNfVE9fTlM7Ci0gICAgaWYgKCp0cCAvIE1TX1RPX05TICE9IHJlc3VsdCkgeworICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyh0LCBNU19UT19OUykpIHsKICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC01NzcsNiArNjUxLDcgQEAKICAgICAgICAgLyogSGVsbG8sIHRpbWUgdHJhdmVsZXIhICovCiAgICAgICAgIGFzc2VydCgwKTsKICAgICB9CisgICAgKnRwID0gdCAqIE1TX1RPX05TOwogCiAgICAgaWYgKGluZm8pIHsKICAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CkBAIC02ODksOCArNzY0LDU3IEBACiAgICAgaWYgKF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2tXaXRoSW5mbygmdCwgTlVMTCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBjaGVjayB0aGF0IF9QeVRpbWVfRnJvbVNlY29uZHMoKSBjYW5ub3Qgb3ZlcmZsb3cgKi8KLSAgICBhc3NlcnQoSU5UX01BWCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUyk7Ci0gICAgYXNzZXJ0KElOVF9NSU4gPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpOwogICAgIHJldHVybiAwOwogfQorCitpbnQKK19QeVRpbWVfbG9jYWx0aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGxvY2FsdGltZV9zKHRtLCAmdCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KKyAgICBpZiAobG9jYWx0aW1lX3IoJnQsIHRtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK30KKworaW50CitfUHlUaW1lX2dtdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaW50IGVycm9yOworCisgICAgZXJyb3IgPSBnbXRpbWVfcyh0bSwgJnQpOworICAgIGlmIChlcnJvciAhPSAwKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbHNlIC8qICFNU19XSU5ET1dTICovCisgICAgaWYgKGdtdGltZV9yKCZ0LCB0bSkgPT0gTlVMTCkgeworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCit9CmRpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKaW5kZXggZjJhZGE1Zi4uNmY5ZjcxMSAxMDA2NDQKLS0tIGEvUHl0aG9uL3JhbmRvbS5jCisrKyBiL1B5dGhvbi9yYW5kb20uYwpAQCAtMSw2ICsxLDkgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpZmRlZiBNU19XSU5ET1dTCiAjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisvKiBBbGwgc2FtcGxlIE1TRE4gd2luY3J5cHQgcHJvZ3JhbXMgaW5jbHVkZSB0aGUgaGVhZGVyIGJlbG93LiBJdCBpcyBhdCBsZWFzdAorICogcmVxdWlyZWQgd2l0aCBNaW4gR1cuICovCisjICBpbmNsdWRlIDx3aW5jcnlwdC5oPgogI2Vsc2UKICMgIGluY2x1ZGUgPGZjbnRsLmg+CiAjICBpZmRlZiBIQVZFX1NZU19TVEFUX0gKQEAgLTM2LDEwICszOSw5IEBACiAgICAgcmV0dXJuIDA7CiAKIGVycm9yOgotICAgIGlmIChyYWlzZSkKKyAgICBpZiAocmFpc2UpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgZWxzZQotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBXaW5kb3dzIHJhbmRvbSBBUEkgKENyeXB0b0dlbikiKTsKKyAgICB9CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC01Miw4ICs1NCw5IEBACiAKICAgICBpZiAoaENyeXB0UHJvdiA9PSAwKQogICAgIHsKLSAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpCisgICAgICAgIGlmICh3aW4zMl91cmFuZG9tX2luaXQocmFpc2UpID09IC0xKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAKICAgICB3aGlsZSAoc2l6ZSA+IDApCkBAIC02MiwxMSArNjUsOSBAQAogICAgICAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKGhDcnlwdFByb3YsIChEV09SRCljaHVuaywgYnVmZmVyKSkKICAgICAgICAgewogICAgICAgICAgICAgLyogQ3J5cHRHZW5SYW5kb20oKSBmYWlsZWQgKi8KLSAgICAgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplZCB0aGUgcmFuZG9taXplZCBoYXNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXQgdXNpbmcgQ3J5cHRvR2VuKSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlciArPSBjaHVuazsKQEAgLTgzLDI5ICs4NCwyOCBAQAogLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKS4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgogCi0gICBJZiBmYXRhbCBpcyBub256ZXJvLCBjYWxsIFB5X0ZhdGFsRXJyb3IoKSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uCi0gICBvbiBlcnJvci4gKi8KKyAgIElmIHJhaXNlIGlzIHplcm8sIGRvbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLXB5X2dldGVudHJvcHkodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCBmYXRhbCkKK3B5X2dldGVudHJvcHkoY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKIHsKICAgICB3aGlsZSAoc2l6ZSA+IDApIHsKICAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKICAgICAgICAgaW50IHJlczsKIAotICAgICAgICBpZiAoIWZhdGFsKSB7CisgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwKQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldGVudHJvcHkoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAogICAgICAgICBidWZmZXIgKz0gbGVuOwpAQCAtMTI4LDI1ICsxMjgsMjIgQEAKICAgICAgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRUlOVFIgYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuCiAgICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCiBzdGF0aWMgaW50Ci1weV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKK3B5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8gU2V0IHRvIDAgaWYgZ2V0cmFuZG9tKCkKICAgICAgICBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uIE5lZWQgTGludXgga2VybmVsIDMuMTcgb3IgbmV3ZXIsIG9yIFNvbGFyaXMKICAgICAgICAxMS4zIG9yIG5ld2VyICovCiAgICAgc3RhdGljIGludCBnZXRyYW5kb21fd29ya3MgPSAxOwotCi0gICAgLyogZ2V0cmFuZG9tKCkgb24gTGludXggd2lsbCBibG9jayBpZiBjYWxsZWQgYmVmb3JlIHRoZSBrZXJuZWwgaGFzCi0gICAgICogaW5pdGlhbGl6ZWQgdGhlIHVyYW5kb20gZW50cm9weSBwb29sLiBUaGlzIHdpbGwgY2F1c2UgUHl0aG9uCi0gICAgICogdG8gaGFuZyBvbiBzdGFydHVwIGlmIGNhbGxlZCB2ZXJ5IGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MgLQotICAgICAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2ODM5LiBUbyBhdm9pZCB0aGlzLCB1c2UgdGhlCi0gICAgICogR1JORF9OT05CTE9DSyBmbGFnLiAqLwotICAgIGNvbnN0IGludCBmbGFncyA9IEdSTkRfTk9OQkxPQ0s7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgKmRlc3Q7CiAgICAgbG9uZyBuOwogCiAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgZmxhZ3MgPSBibG9ja2luZyA/IDAgOiBHUk5EX05PTkJMT0NLOworICAgIGRlc3QgPSBidWZmZXI7CiAgICAgd2hpbGUgKDAgPCBzaXplKSB7CiAjaWZkZWYgc3VuCiAgICAgICAgIC8qIElzc3VlICMyNjczNTogT24gU29sYXJpcywgZ2V0cmFuZG9tKCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAKQEAgLTE2MCwyMyArMTU3LDIzIEBACiAjaWZkZWYgSEFWRV9HRVRSQU5ET00KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbiA9IGdldHJhbmRvbShidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICAvKiBPbiBMaW51eCwgdXNlIHRoZSBzeXNjYWxsKCkgZnVuY3Rpb24gYmVjYXVzZSB0aGUgR05VIGxpYmMgZG9lc24ndAotICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0gICAgICAgICAqIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE3MjUyICovCisgICAgICAgICAgIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKKyAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTE4OCw0MCArMTg1LDMzIEBACiAgICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKLSAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpYXplZCB5ZXQuIEluIHRoaXMgY2FzZSwgZmFsbCBiYWNrIG9uCi0gICAgICAgICAgICAgICAgICAgcmVhZGluZyBmcm9tIC9kZXYvdXJhbmRvbS4KIAotICAgICAgICAgICAgICAgICAgIE5vdGU6IEluIHRoaXMgY2FzZSB0aGUgZGF0YSByZWFkIHdpbGwgbm90IGJlIHJhbmRvbSBzbwotICAgICAgICAgICAgICAgICAgIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgY3J5cHRvZ3JhcGhpYyBwdXJwb3Nlcy4gUmV0YWluaW5nCi0gICAgICAgICAgICAgICAgICAgdGhlIGV4aXN0aW5nIHNlbWFudGljcyBmb3IgcHJhY3RpY2FsIHB1cnBvc2VzLiAqLwotICAgICAgICAgICAgICAgIGdldHJhbmRvbV93b3JrcyA9IDA7CisgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbSB1cmFuZG9tCisgICAgICAgICAgICAgICBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gRm9yIF9QeVJhbmRvbV9Jbml0KCksIHdlIGlnbm9yZSB0aGVpcgorICAgICAgICAgICAgICAgZXJyb3IgYW5kIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSB3aGljaCBuZXZlciBibG9ja3MsCisgICAgICAgICAgICAgICBldmVuIGlmIHRoZSBzeXN0ZW0gdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiAqLworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiAmJiAhcmFpc2UgJiYgIWJsb2NraW5nKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOworICAgICAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgZmFpbGVkIik7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgZGVzdCArPSBuOwogICAgICAgICBzaXplIC09IG47CiAgICAgfQogICAgIHJldHVybiAxOwpAQCAtMjM4LDY0ICsyMjgsMjEgQEAKIC8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCiAgICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KIAotICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi1zdGF0aWMgdm9pZAotZGV2X3VyYW5kb21fbm9yYWlzZSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBpbnQgZmQ7Ci0gICAgUHlfc3NpemVfdCBuOwotCi0gICAgYXNzZXJ0ICgwIDwgc2l6ZSk7Ci0KLSNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICBpZiAocHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCkgPT0gMSkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8qIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTSwKLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KLSNlbmRpZgotCi0gICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0gICAgaWYgKGZkIDwgMCkgewotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoMCA8IHNpemUpCi0gICAgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0KLSAgICAgICAgaWYgKG4gPD0gMCkgewotICAgICAgICAgICAgLyogcmVhZCgpIGZhaWxlZCBvciByZXR1cm5lZCAwIGJ5dGVzICovCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmVhZCBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9Ci0gICAgY2xvc2UoZmQpOwotfQotCi0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQotICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCi0KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMQorICAgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCitkZXZfdXJhbmRvbShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwogI2lmZGVmIFBZX0dFVFJBTkRPTQogICAgIGludCByZXM7CiAjZW5kaWYKIAotICAgIGlmIChzaXplIDw9IDApCi0gICAgICAgIHJldHVybiAwOworICAgIGFzc2VydChzaXplID4gMCk7CiAKICNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKKyAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCBibG9ja2luZywgcmFpc2UpOwogICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0zMDYsNjQgKzI1Myw5MCBAQAogICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwogI2VuZGlmCiAKLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0gICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLSAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKLSAgICAgICAgICAgIHx8IHN0LnN0X2RldiAhPSB1cmFuZG9tX2NhY2hlLnN0X2RldgotICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7Ci0gICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKLSAgICAgICAgICAgICAgIHNpbmNlIGl0IHByb2JhYmx5IHBvaW50cyB0byBzb21ldGhpbmcgaW1wb3J0YW50IGZvciBzb21lCi0gICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KLSAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKKworICAgIGlmIChyYWlzZSkgeworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworCisgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKKyAgICAgICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KKyAgICAgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCisgICAgICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2CisgICAgICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7CisgICAgICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCisgICAgICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKKyAgICAgICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KKyAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKKyAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CisgICAgICAgICAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAorICAgICAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQorICAgICAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCisgICAgICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7CisgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkbyB7CisgICAgICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgICAgIGlmIChuID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICAgICAgc2l6ZSAtPSBuOworICAgICAgICB9IHdoaWxlICgwIDwgc2l6ZSk7CiAgICAgfQotICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCi0gICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKICAgICBlbHNlIHsKLSAgICAgICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworICAgICAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKICAgICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAotICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLSAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKLSAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCi0gICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3QpKSB7CisKKyAgICAgICAgd2hpbGUgKDAgPCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKKworICAgICAgICAgICAgaWYgKG4gPD0gMCkgeworICAgICAgICAgICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCiAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSBmZDsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2RldiA9IHN0LnN0X2RldjsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyICs9IG47CisgICAgICAgICAgICBzaXplIC09IG47CiAgICAgICAgIH0KKyAgICAgICAgY2xvc2UoZmQpOwogICAgIH0KLQotICAgIGRvIHsKLSAgICAgICAgbiA9IF9QeV9yZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIGlmIChuID09IC0xKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG4gPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCi0gICAgICAgICAgICAgICAgICAgIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzk5LDI5ICszNzIsNjIgQEAKICAgICB9CiB9CiAKKy8qIElmIHJhaXNlIGlzIHplcm86CisgICAtIERvbid0IHJhaXNlIGV4Y2VwdGlvbnMgb24gZXJyb3IKKyAgIC0gRG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSBvbiBFSU5UUiAocmV0cnkgZGlyZWN0bHkgdGhlIGludGVycnVwdGVkCisgICAgIHN5c2NhbGwpCisgICAtIERvbid0IHJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHN5c2NhbGxzLiAqLworc3RhdGljIGludAorcHl1cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKK3sKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKKyAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbHNlCisgICAgcmV0dXJuIGRldl91cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgYmxvY2tpbmcsIHJhaXNlKTsKKyNlbmRpZgorfQorCiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQogICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwogICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgogCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyLCB0aGUgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyB1c2VkIGluIGJsb2NraW5nIG1vZGU6CisgICBibG9jayB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkICgxMjggYml0cyBhcmUKKyAgIGNvbGxlY3RlZCBieSB0aGUga2VybmVsKS4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBpbnQKIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEsIDEpOworfQogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl91cmFuZG9tKCh1bnNpZ25lZCBjaGFyICopYnVmZmVyLCBzaXplLCAxKTsKLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLSAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIDApOwotI2Vsc2UKLSAgICByZXR1cm4gZGV2X3VyYW5kb21fcHl0aG9uKChjaGFyKilidWZmZXIsIHNpemUpOwotI2VuZGlmCisvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQorICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgbm90IHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyICh3aGVuIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgdXNlZCksIGlmIHRoZSBzeXN0ZW0KKyAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpemVkIHlldCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgIndlYWsiIGVudHJvcHkgcmVhZAorICAgZnJvbSAvZGV2L3VyYW5kb20uCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlPU19VUmFuZG9tTm9uYmxvY2sodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDAsIDEpOwogfQogCiB2b2lkCkBAIC00MzAsNyArNDM2LDcgQEAKICAgICBjaGFyICplbnY7CiAgICAgdW5zaWduZWQgY2hhciAqc2VjcmV0ID0gKHVuc2lnbmVkIGNoYXIgKikmX1B5X0hhc2hTZWNyZXQudWM7CiAgICAgUHlfc3NpemVfdCBzZWNyZXRfc2l6ZSA9IHNpemVvZihfUHlfSGFzaFNlY3JldF90KTsKLSAgICBhc3NlcnQoc2VjcmV0X3NpemUgPT0gc2l6ZW9mKF9QeV9IYXNoU2VjcmV0LnVjKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihfUHlfSGFzaFNlY3JldF90KSA9PSBzaXplb2YoX1B5X0hhc2hTZWNyZXQudWMpKTsKIAogICAgIGlmIChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDYyLDEzICs0NjgsMTcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICh2b2lkKXdpbjMyX3VyYW5kb20oc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMCk7Ci0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0gICAgICAgICh2b2lkKXB5X2dldGVudHJvcHkoc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMSk7Ci0jZWxzZQotICAgICAgICBkZXZfdXJhbmRvbV9ub3JhaXNlKHNlY3JldCwgc2VjcmV0X3NpemUpOwotI2VuZGlmCisgICAgICAgIGludCByZXM7CisKKyAgICAgICAgLyogX1B5UmFuZG9tX0luaXQoKSBpcyBjYWxsZWQgdmVyeSBlYXJseSBpbiB0aGUgUHl0aG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgIGFuZCBzbyBleGNlcHRpb25zIGNhbm5vdCBiZSB1c2VkICh1c2UgcmFpc2U9MCkuCisKKyAgICAgICAgICAgX1B5UmFuZG9tX0luaXQoKSBtdXN0IG5vdCBibG9jayBQeXRob24gaW5pdGlhbGl6YXRpb246IGNhbGwKKyAgICAgICAgICAgcHl1cmFuZG9tKCkgaXMgbm9uLWJsb2NraW5nIG1vZGUgKGJsb2NraW5nPTApOiBzZWUgdGhlIFBFUCA1MjQuICovCisgICAgICAgIHJlcyA9IHB5dXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwLCAwKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWxlZCB0byBnZXQgcmFuZG9tIG51bWJlcnMgdG8gaW5pdGlhbGl6ZSBQeXRob24iKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3N0cnVjdG1lbWJlci5jIGIvUHl0aG9uL3N0cnVjdG1lbWJlci5jCmluZGV4IGFmMDI5NmQuLjg2ZDRjNjYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYworKysgYi9QeXRob24vc3RydWN0bWVtYmVyLmMKQEAgLTc0LDE0ICs3NCwxMiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBsLT5uYW1lKTsKICAgICAgICAgUHlfWElOQ1JFRih2KTsKICAgICAgICAgYnJlYWs7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCooUFlfTE9OR19MT05HICopYWRkcik7CisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCoobG9uZyBsb25nICopYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVF9VTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKih1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhZGRyKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFkZHIpOwogICAgICAgICBicmVhazsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogICAgIGNhc2UgVF9OT05FOgogICAgICAgICB2ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMjY2LDI3ICsyNjQsMjUgQEAKICAgICBjYXNlIFRfU1RSSU5HX0lOUExBQ0U6CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZWFkb25seSBhdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIC0xOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSBUX0xPTkdMT05HOnsKLSAgICAgICAgUFlfTE9OR19MT05HIHZhbHVlOwotICAgICAgICAqKFBZX0xPTkdfTE9ORyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CisgICAgICAgIGxvbmcgbG9uZyB2YWx1ZTsKKyAgICAgICAgKihsb25nIGxvbmcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdMb25nKHYpOwogICAgICAgICBpZiAoKHZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIGNhc2UgVF9VTE9OR0xPTkc6ewotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZTsKICAgICAgICAgLyogPz8/IFB5TG9uZ19Bc0xvbmdMb25nIGFjY2VwdHMgYW4gaW50LCBidXQgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwogICAgICAgICAgICAgZG9lc24ndCA/Pz8gKi8KICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkKLSAgICAgICAgICAgICoodW5zaWduZWQgUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOworICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nIGxvbmcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICoodW5zaWduZWQgUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nKHYpOwotICAgICAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICAgICAgaWYgKCh2YWx1ZSA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBicmVhazsKICAgICAgICAgfQotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImJhZCBtZW1iZXJkZXNjciB0eXBlIGZvciAlcyIsIGwtPm5hbWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5bXRhYmxlLmMgYi9QeXRob24vc3ltdGFibGUuYwppbmRleCAxNTkxYTIwLi5iZjMwZWNjIDEwMDY0NAotLS0gYS9QeXRob24vc3ltdGFibGUuYworKysgYi9QeXRob24vc3ltdGFibGUuYwpAQCAtNiwxNiArNiwyMiBAQAogCiAvKiBlcnJvciBzdHJpbmdzIHVzZWQgZm9yIHdhcm5pbmdzICovCiAjZGVmaW5lIEdMT0JBTF9BRlRFUl9BU1NJR04gXAotIm5hbWUgJyUuNDAwcycgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBOT05MT0NBTF9BRlRFUl9BU1NJR04gXAotIm5hbWUgJyUuNDAwcycgaXMgYXNzaWduZWQgdG8gYmVmb3JlIG5vbmxvY2FsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgbm9ubG9jYWwgZGVjbGFyYXRpb24iCiAKICNkZWZpbmUgR0xPQkFMX0FGVEVSX1VTRSBcCi0ibmFtZSAnJS40MDBzJyBpcyB1c2VkIHByaW9yIHRvIGdsb2JhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBnbG9iYWwgZGVjbGFyYXRpb24iCiAKICNkZWZpbmUgTk9OTE9DQUxfQUZURVJfVVNFIFwKLSJuYW1lICclLjQwMHMnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24iCisibmFtZSAnJVUnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24iCisKKyNkZWZpbmUgR0xPQkFMX0FOTk9UIFwKKyJhbm5vdGF0ZWQgbmFtZSAnJVUnIGNhbid0IGJlIGdsb2JhbCIKKworI2RlZmluZSBOT05MT0NBTF9BTk5PVCBcCisiYW5ub3RhdGVkIG5hbWUgJyVVJyBjYW4ndCBiZSBub25sb2NhbCIKIAogI2RlZmluZSBJTVBPUlRfU1RBUl9XQVJOSU5HICJpbXBvcnQgKiBvbmx5IGFsbG93ZWQgYXQgbW9kdWxlIGxldmVsIgogCkBAIC02Myw2ICs2OSw3IEBACiAgICAgICAgIHN0ZS0+c3RlX25lc3RlZCA9IDE7CiAgICAgc3RlLT5zdGVfY2hpbGRfZnJlZSA9IDA7CiAgICAgc3RlLT5zdGVfZ2VuZXJhdG9yID0gMDsKKyAgICBzdGUtPnN0ZV9jb3JvdXRpbmUgPSAwOwogICAgIHN0ZS0+c3RlX3JldHVybnNfdmFsdWUgPSAwOwogICAgIHN0ZS0+c3RlX25lZWRzX2NsYXNzX2Nsb3N1cmUgPSAwOwogCkBAIC0xNjAsNyArMTY3LDYgQEAKIH07CiAKIHN0YXRpYyBpbnQgc3ltdGFibGVfYW5hbHl6ZShzdHJ1Y3Qgc3ltdGFibGUgKnN0KTsKLXN0YXRpYyBpbnQgc3ltdGFibGVfd2FybihzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBjaGFyICptc2csIGludCBsaW5lbm8pOwogc3RhdGljIGludCBzeW10YWJsZV9lbnRlcl9ibG9jayhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpZGVudGlmaWVyIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9ibG9ja190eSBibG9jaywgdm9pZCAqYXN0LCBpbnQgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCk7CkBAIC0zNzgsNyArMzg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShkYXRhLCAyKSkpOwogCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSAgIAorICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJCVUc6IGludGVybmFsIGRpcmVjdGl2ZSBib29ra2VlcGluZyBicm9rZW4iKTsKQEAgLTY1Miw3ICs2NTgsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgLyogSGFuZGxlIGdsb2JhbCBzeW1ib2wgKi8KLSAgICAgICAgaWYgKCFQeVNldF9Db250YWlucyhib3VuZCwgbmFtZSkpIHsKKyAgICAgICAgaWYgKGJvdW5kICYmICFQeVNldF9Db250YWlucyhib3VuZCwgbmFtZSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAvKiBpdCdzIGEgZ2xvYmFsICovCiAgICAgICAgIH0KQEAgLTkwNiwyNyArOTEyLDYgQEAKICAgICByZXR1cm4gcjsKIH0KIAotCi1zdGF0aWMgaW50Ci1zeW10YWJsZV93YXJuKHN0cnVjdCBzeW10YWJsZSAqc3QsIGNoYXIgKm1zZywgaW50IGxpbmVubykKLXsKLSAgICBQeU9iamVjdCAqbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1zZyk7Ci0gICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdChQeUV4Y19TeW50YXhXYXJuaW5nLCBtZXNzYWdlLCBzdC0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIE5VTEwsIE5VTEwpIDwgMCkgICAgIHsKLSAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeW50YXhXYXJuaW5nKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5bnRheEVycm9yLCBtc2cpOwotICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLCBzdC0+c3RfY3VyLT5zdGVfbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2NvbF9vZmZzZXQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KIC8qIHN5bXRhYmxlX2VudGVyX2Jsb2NrKCkgZ2V0cyBhIHJlZmVyZW5jZSB2aWEgc3RlX25ldy4KICAgIFRoaXMgcmVmZXJlbmNlIGlzIHJlbGVhc2VkIHdoZW4gdGhlIGJsb2NrIGlzIGV4aXRlZCwgdmlhIHRoZSBERUNSRUYKICAgIGluIHN5bXRhYmxlX2V4aXRfYmxvY2soKS4KQEAgLTEyMDEsNiArMTE4Niw0MyBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQXNzaWduLnRhcmdldHMpOwogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3NpZ24udmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24udGFyZ2V0LT5raW5kID09IE5hbWVfa2luZCkgeworICAgICAgICAgICAgZXhwcl90eSBlX25hbWUgPSBzLT52LkFubkFzc2lnbi50YXJnZXQ7CisgICAgICAgICAgICBsb25nIGN1ciA9IHN5bXRhYmxlX2xvb2t1cChzdCwgZV9uYW1lLT52Lk5hbWUuaWQpOworICAgICAgICAgICAgaWYgKGN1ciA8IDApIHsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoY3VyICYgKERFRl9HTE9CQUwgfCBERUZfTk9OTE9DQUwpKQorICAgICAgICAgICAgICAgICYmIHMtPnYuQW5uQXNzaWduLnNpbXBsZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyICYgREVGX0dMT0JBTCA/IEdMT0JBTF9BTk5PVCA6IE5PTkxPQ0FMX0FOTk9ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlX25hbWUtPnYuTmFtZS5pZCk7CisgICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi5zaW1wbGUgJiYKKyAgICAgICAgICAgICAgICAhc3ltdGFibGVfYWRkX2RlZihzdCwgZV9uYW1lLT52Lk5hbWUuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0FOTk9UIHwgREVGX0xPQ0FMKSkgeworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlCisgICAgICAgICAgICAgICAgICAgICYmICFzeW10YWJsZV9hZGRfZGVmKHN0LCBlX25hbWUtPnYuTmFtZS5pZCwgREVGX0xPQ0FMKSkgeworICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24udGFyZ2V0KTsKKyAgICAgICAgfQorICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi52YWx1ZSkgeworICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5BdWdBc3NpZ24udGFyZ2V0KTsKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQXVnQXNzaWduLnZhbHVlKTsKQEAgLTEyNTgsMjEgKzEyODAsMjEgQEAKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX0FTU0lHTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9BRlRFUl9VU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3dhcm4oc3QsIGJ1Ziwgcy0+bGluZW5vKSkKLSAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSB8IERFRl9BTk5PVCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyKiBtc2c7CisgICAgICAgICAgICAgICAgaWYgKGN1ciAmIFVTRSkgeworICAgICAgICAgICAgICAgICAgICBtc2cgPSBHTE9CQUxfQUZURVJfVVNFOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyICYgREVGX0FOTk9UKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BTk5PVDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAgLyogREVGX0xPQ0FMICovCisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BRlRFUl9BU1NJR047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBuYW1lLCBERUZfR0xPQkFMKSkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKQEAgLTEyODksMjEgKzEzMTEsMjAgQEAKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfQVNTSUdOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfVVNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzeW10YWJsZV93YXJuKHN0LCBidWYsIHMtPmxpbmVubykpCi0gICAgICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UgfCBERUZfQU5OT1QpKSB7CisgICAgICAgICAgICAgICAgY2hhciogbXNnOworICAgICAgICAgICAgICAgIGlmIChjdXIgJiBVU0UpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQUZURVJfVVNFOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyICYgREVGX0FOTk9UKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IE5PTkxPQ0FMX0FOTk9UOworICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvKiBERUZfTE9DQUwgKi8KKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQUZURVJfQVNTSUdOOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsIG1zZywgbmFtZSk7CisgICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgbmFtZSwgREVGX05PTkxPQ0FMKSkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKQEAgLTEzNDEsNiArMTM2Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKilzLCBzLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCkpCiAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CiAgICAgICAgIFZJU0lUKHN0LCBhcmd1bWVudHMsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCkBAIC0xNDM2LDcgKzE0NTgsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEF3YWl0X2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKLSAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IDE7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9jb3JvdXRpbmUgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKQEAgLTE0NDcsNiArMTQ2OSwxNSBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQ2FsbC5hcmdzKTsKICAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwga2V5d29yZCwgZS0+di5DYWxsLmtleXdvcmRzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisgICAgICAgIGlmIChlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKQorICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuSm9pbmVkU3RyLnZhbHVlcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKICAgICBjYXNlIE51bV9raW5kOgogICAgIGNhc2UgU3RyX2tpbmQ6CiAgICAgY2FzZSBCeXRlc19raW5kOgpAQCAtMTY0Nyw2ICsxNjc4LDkgQEAKICAgICBWSVNJVChzdCwgZXhwciwgbGMtPnRhcmdldCk7CiAgICAgVklTSVQoc3QsIGV4cHIsIGxjLT5pdGVyKTsKICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGxjLT5pZnMpOworICAgIGlmIChsYy0+aXNfYXN5bmMpIHsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CisgICAgfQogICAgIHJldHVybiAxOwogfQogCkBAIC0xNjk5LDYgKzE3MzMsOSBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IGlzX2dlbmVyYXRvcjsKKyAgICBpZiAob3V0ZXJtb3N0LT5pc19hc3luYykgeworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKKyAgICB9CiAgICAgLyogT3V0ZXJtb3N0IGl0ZXIgaXMgcmVjZWl2ZWQgYXMgYW4gYXJndW1lbnQgKi8KICAgICBpZiAoIXN5bXRhYmxlX2ltcGxpY2l0X2FyZyhzdCwgMCkpIHsKICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCBmNjg4MzQ5Li41ZGQwZDEwIDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAogI2luY2x1ZGUgIm9zZGVmcy5oIgorI2luY2x1ZGUgPGxvY2FsZS5oPgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCkBAIC0zMyw3ICszNCw2IEBACiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAotI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPGxhbmdpbmZvLmg+CiAjZW5kaWYKIApAQCAtMzExLDYgKzMxMSwyMyBAQAogKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK3N5c19nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycykKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAiZmlsZXN5c3RlbSBlbmNvZGluZyBpcyBub3QgaW5pdGlhbGl6ZWQiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNfZG9jLAorICAgICJnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCkgLT4gc3RyaW5nXG5cCitcblwKK1JldHVybiB0aGUgZXJyb3IgbW9kZSB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZSBmaWxlbmFtZXMgaW5cblwKK29wZXJhdGluZyBzeXN0ZW0gZmlsZW5hbWVzLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBzeXNfaW50ZXJuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqczsKQEAgLTM0Niw4ICszNjMsMTAgQEAKIHN0YXRpYyBpbnQKIHRyYWNlX2luaXQodm9pZCkKIHsKLSAgICBzdGF0aWMgY2hhciAqd2hhdG5hbWVzWzddID0geyJjYWxsIiwgImV4Y2VwdGlvbiIsICJsaW5lIiwgInJldHVybiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY19jYWxsIiwgImNfZXhjZXB0aW9uIiwgImNfcmV0dXJuIn07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB3aGF0bmFtZXNbN10gPSB7CisgICAgICAgICJjYWxsIiwgImV4Y2VwdGlvbiIsICJsaW5lIiwgInJldHVybiIsCisgICAgICAgICJjX2NhbGwiLCAiY19leGNlcHRpb24iLCAiY19yZXR1cm4iCisgICAgfTsKICAgICBQeU9iamVjdCAqbmFtZTsKICAgICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgKytpKSB7CkBAIC0zNjYsMzQgKzM4NSwyNSBAQAogY2FsbF90cmFtcG9saW5lKFB5T2JqZWN0KiBjYWxsYmFjaywKICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmcmFtZSwgaW50IHdoYXQsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgUHlPYmplY3QgKndoYXRzdHI7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc3RhY2tbM107CiAKLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBpZiAoUHlGcmFtZV9GYXN0VG9Mb2NhbHNXaXRoRXJyb3IoZnJhbWUpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlGcmFtZV9GYXN0VG9Mb2NhbHNXaXRoRXJyb3IoZnJhbWUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgUHlfSU5DUkVGKGZyYW1lKTsKLSAgICB3aGF0c3RyID0gd2hhdHN0cmluZ3Nbd2hhdF07Ci0gICAgUHlfSU5DUkVGKHdoYXRzdHIpOwotICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgYXJnID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoYXJnKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCAqKWZyYW1lKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHdoYXRzdHIpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMiwgYXJnKTsKKyAgICBzdGFja1swXSA9IChQeU9iamVjdCAqKWZyYW1lOworICAgIHN0YWNrWzFdID0gd2hhdHN0cmluZ3Nbd2hhdF07CisgICAgc3RhY2tbMl0gPSAoYXJnICE9IE5VTEwpID8gYXJnIDogUHlfTm9uZTsKIAogICAgIC8qIGNhbGwgdGhlIFB5dGhvbi1sZXZlbCBmdW5jdGlvbiAqLwotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KGNhbGxiYWNrLCBhcmdzKTsKLSAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmcmFtZSwgMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBQeVRyYWNlQmFja19IZXJlKGZyYW1lKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGJhY2ssIHN0YWNrLCAzKTsKIAotICAgIC8qIGNsZWFudXAgKi8KLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZnJhbWUsIDEpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeVRyYWNlQmFja19IZXJlKGZyYW1lKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzQsMTAgKzQ0NCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHJlc3VsdCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gZnJhbWUtPmZfdHJhY2U7Ci0gICAgICAgIGZyYW1lLT5mX3RyYWNlID0gTlVMTDsKLSAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgZnJhbWUtPmZfdHJhY2UgPSByZXN1bHQ7CisgICAgICAgIFB5X1hTRVRSRUYoZnJhbWUtPmZfdHJhY2UsIHJlc3VsdCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTYwMiwzMyArNjA5LDYgQEAKIAogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCiAKLSNpZmRlZiBXSVRIX1RTQwotc3RhdGljIFB5T2JqZWN0ICoKLXN5c19zZXR0c2NkdW1wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgYm9vbDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNldHRzY2R1bXAiLCAmYm9vbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChib29sKQotICAgICAgICB0c3RhdGUtPmludGVycC0+dHNjZHVtcCA9IDE7Ci0gICAgZWxzZQotICAgICAgICB0c3RhdGUtPmludGVycC0+dHNjZHVtcCA9IDA7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi19Ci0KLVB5RG9jX1NUUlZBUihzZXR0c2NkdW1wX2RvYywKLSJzZXR0c2NkdW1wKGJvb2wpXG5cCi1cblwKLUlmIHRydWUsIHRlbGwgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byBkdW1wIFZNIG1lYXN1cmVtZW50cyB0b1xuXAotc3RkZXJyLiAgSWYgZmFsc2UsIHR1cm4gb2ZmIGR1bXAuICBUaGUgbWVhc3VyZW1lbnRzIGFyZSBiYXNlZCBvbiB0aGVcblwKLXByb2Nlc3NvcidzIHRpbWUtc3RhbXAgY291bnRlci4iCi0pOwotI2VuZGlmIC8qIFRTQyAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3lzX3NldHJlY3Vyc2lvbmxpbWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTcxMCw2ICs2OTAsMTEzIEBACiApOwogCiAKK3N0YXRpYyBQeVR5cGVPYmplY3QgQXN5bmNHZW5Ib29rc1R5cGU7CisKK1B5RG9jX1NUUlZBUihhc3luY2dlbl9ob29rc19kb2MsCisiYXN5bmNnZW5faG9va3NcblwKK1xuXAorQSBzdHJ1Y3Qgc2VxdWVuY2UgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGFzeW5ocm9ub3VzXG5cCitnZW5lcmF0b3JzIGhvb2tzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgYXN5bmNnZW5faG9va3NfZmllbGRzW10gPSB7CisgICAgeyJmaXJzdGl0ZXIiLCAiSG9vayB0byBpbnRlcmNlcHQgZmlyc3QgaXRlcmF0aW9uIn0sCisgICAgeyJmaW5hbGl6ZXIiLCAiSG9vayB0byBpbnRlcmNlcHQgZmluYWxpemF0aW9uIn0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIGFzeW5jZ2VuX2hvb2tzX2Rlc2MgPSB7CisgICAgImFzeW5jZ2VuX2hvb2tzIiwgICAgICAgICAgLyogbmFtZSAqLworICAgIGFzeW5jZ2VuX2hvb2tzX2RvYywgICAgICAgIC8qIGRvYyAqLworICAgIGFzeW5jZ2VuX2hvb2tzX2ZpZWxkcyAsICAgIC8qIGZpZWxkcyAqLworICAgIDIKK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19zZXRfYXN5bmNnZW5faG9va3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImZpcnN0aXRlciIsICJmaW5hbGl6ZXIiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKAorICAgICAgICAgICAgYXJncywga3csICJ8T08iLCBrZXl3b3JkcywKKyAgICAgICAgICAgICZmaXJzdGl0ZXIsICZmaW5hbGl6ZXIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmaW5hbGl6ZXIgJiYgZmluYWxpemVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZpbmFsaXplcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGZpbmFsaXplciBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZpbmFsaXplciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihmaW5hbGl6ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChmaW5hbGl6ZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmluYWxpemVyKE5VTEwpOworICAgIH0KKworICAgIGlmIChmaXJzdGl0ZXIgJiYgZmlyc3RpdGVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZpcnN0aXRlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGZpcnN0aXRlciBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZpcnN0aXRlciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihmaXJzdGl0ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChmaXJzdGl0ZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKE5VTEwpOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0X2FzeW5jZ2VuX2hvb2tzX2RvYywKKyJzZXRfYXN5bmNnZW5faG9va3MoKiwgZmlyc3RpdGVyPU5vbmUsIGZpbmFsaXplcj1Ob25lKVxuXAorXG5cCitTZXQgYSBmaW5hbGl6ZXIgZm9yIGFzeW5jIGdlbmVyYXRvcnMgb2JqZWN0cy4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2dldF9hc3luY2dlbl9ob29rcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyID0gX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcigpOworICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXIgPSBfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKCk7CisKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmQXN5bmNHZW5Ib29rc1R5cGUpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmlyc3RpdGVyID09IE5VTEwpIHsKKyAgICAgICAgZmlyc3RpdGVyID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBpZiAoZmluYWxpemVyID09IE5VTEwpIHsKKyAgICAgICAgZmluYWxpemVyID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZmlyc3RpdGVyKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgZmlyc3RpdGVyKTsKKworICAgIFB5X0lOQ1JFRihmaW5hbGl6ZXIpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAxLCBmaW5hbGl6ZXIpOworCisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSKGdldF9hc3luY2dlbl9ob29rc19kb2MsCisiZ2V0X2FzeW5jZ2VuX2hvb2tzKClcblwKK1xuXAorUmV0dXJuIGEgbmFtZWR0dXBsZSBvZiBpbnN0YWxsZWQgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMgaG9va3MgXAorKGZpcnN0aXRlciwgZmluYWxpemVyKS4iCispOworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgSGFzaF9JbmZvVHlwZTsKIAogUHlEb2NfU1RSVkFSKGhhc2hfaW5mb19kb2MsCkBAIC04MDcsMTAgKzg5NCwxMSBAQAogVGhlIG1lbWJlcnMgYXJlIG5hbWVkOiBtYWpvciwgbWlub3IsIGJ1aWxkLCBwbGF0Zm9ybSwgc2VydmljZV9wYWNrLFxuXAogc2VydmljZV9wYWNrX21ham9yLCBzZXJ2aWNlX3BhY2tfbWlub3IsIHN1aXRlX21hc2ssIGFuZCBwcm9kdWN0X3R5cGUuIEZvclxuXAogYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgb25seSB0aGUgZmlyc3QgNSBpdGVtcyBhcmUgYXZhaWxhYmxlIGJ5IGluZGV4aW5nLlxuXAotQWxsIGVsZW1lbnRzIGFyZSBudW1iZXJzLCBleGNlcHQgc2VydmljZV9wYWNrIHdoaWNoIGlzIGEgc3RyaW5nLiBQbGF0Zm9ybVxuXAotbWF5IGJlIDAgZm9yIHdpbjMycywgMSBmb3IgV2luZG93cyA5eC9NRSwgMiBmb3IgV2luZG93cyBOVC8yMDAwL1hQL1Zpc3RhLzcsXG5cCi0zIGZvciBXaW5kb3dzIENFLiBQcm9kdWN0X3R5cGUgbWF5IGJlIDEgZm9yIGEgd29ya3N0YXRpb24sIDIgZm9yIGEgZG9tYWluXG5cCi1jb250cm9sbGVyLCAzIGZvciBhIHNlcnZlci4iCitBbGwgZWxlbWVudHMgYXJlIG51bWJlcnMsIGV4Y2VwdCBzZXJ2aWNlX3BhY2sgYW5kIHBsYXRmb3JtX3R5cGUgd2hpY2ggYXJlXG5cCitzdHJpbmdzLCBhbmQgcGxhdGZvcm1fdmVyc2lvbiB3aGljaCBpcyBhIDMtdHVwbGUuIFBsYXRmb3JtIGlzIGFsd2F5cyAyLlxuXAorUHJvZHVjdF90eXBlIG1heSBiZSAxIGZvciBhIHdvcmtzdGF0aW9uLCAyIGZvciBhIGRvbWFpbiBjb250cm9sbGVyLCAzIGZvciBhXG5cCitzZXJ2ZXIuIFBsYXRmb3JtX3ZlcnNpb24gaXMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgYSB2ZXJzaW9uIG51bWJlciB0aGF0IGlzXG5cCitpbnRlbmRlZCBmb3IgaWRlbnRpZnlpbmcgdGhlIE9TIHJhdGhlciB0aGFuIGZlYXR1cmUgZGV0ZWN0aW9uLiIKICk7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgV2luZG93c1ZlcnNpb25UeXBlID0gezAsIDAsIDAsIDAsIDAsIDB9OwpAQCAtODI1LDcgKzkxMyw3IEBACiAgICAgeyJzZXJ2aWNlX3BhY2tfbWlub3IiLCAiU2VydmljZSBQYWNrIG1pbm9yIHZlcnNpb24gbnVtYmVyIn0sCiAgICAgeyJzdWl0ZV9tYXNrIiwgIkJpdCBtYXNrIGlkZW50aWZ5aW5nIGF2YWlsYWJsZSBwcm9kdWN0IHN1aXRlcyJ9LAogICAgIHsicHJvZHVjdF90eXBlIiwgIlN5c3RlbSBwcm9kdWN0IHR5cGUifSwKLSAgICB7Il9wbGF0Zm9ybV92ZXJzaW9uIiwgIkRpYWdub3N0aWMgdmVyc2lvbiBudW1iZXIifSwKKyAgICB7InBsYXRmb3JtX3ZlcnNpb24iLCAiRGlhZ25vc3RpYyB2ZXJzaW9uIG51bWJlciJ9LAogICAgIHswfQogfTsKIApAQCAtOTEzLDYgKzEwMDEsMjQgQEAKIAogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAorUHlEb2NfU1RSVkFSKGVuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nX2RvYywKKyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoKVxuXAorXG5cCitDaGFuZ2VzIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gbWJjczpyZXBsYWNlIGZvciBjb25zaXN0ZW5jeVxuXAord2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbi4gU2VlIFBFUCA1MjkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cCitcblwKK1RoaXMgaXMgZXF1aXZhbGVudCB0byBkZWZpbmluZyB0aGUgUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkcgXG5cCitlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgbGF1bmNoaW5nIFB5dGhvbi4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAicmVwbGFjZSI7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKICNpZmRlZiBIQVZFX0RMT1BFTgpAQCAtMTE4OSw4ICsxMjk1LDEwIEBACiBzeXNfZGVidWdtYWxsb2NzdGF0cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAjaWZkZWYgV0lUSF9QWU1BTExPQwotICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7Ci0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBpZiAoX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCgpKSB7CisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgfQogI2VuZGlmCiAgICAgX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKHN0ZGVycik7CiAKQEAgLTEyNzAsNiArMTM3OCw4IEBACiAjZW5kaWYKICAgICB7ImdldGZpbGVzeXN0ZW1lbmNvZGluZyIsIChQeUNGdW5jdGlvbilzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kaW5nLAogICAgICBNRVRIX05PQVJHUywgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nX2RvY30sCisgICAgeyAiZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycyIsIChQeUNGdW5jdGlvbilzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycywKKyAgICAgTUVUSF9OT0FSR1MsIGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNfZG9jIH0sCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogICAgIHsiZ2V0b2JqZWN0cyIsICAgICAgX1B5X0dldE9iamVjdHMsIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKQEAgLTEyODUsNiArMTM5NSw4IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsiZ2V0d2luZG93c3ZlcnNpb24iLCAoUHlDRnVuY3Rpb24pc3lzX2dldHdpbmRvd3N2ZXJzaW9uLCBNRVRIX05PQVJHUywKICAgICAgZ2V0d2luZG93c3ZlcnNpb25fZG9jfSwKKyAgICB7Il9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZyIsIChQeUNGdW5jdGlvbilzeXNfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcsCisgICAgIE1FVEhfTk9BUkdTLCBlbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ19kb2MgfSwKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgeyJpbnRlcm4iLCAgICAgICAgICBzeXNfaW50ZXJuLCAgICAgTUVUSF9WQVJBUkdTLCBpbnRlcm5fZG9jfSwKICAgICB7ImlzX2ZpbmFsaXppbmciLCAgIHN5c19pc19maW5hbGl6aW5nLCBNRVRIX05PQVJHUywgaXNfZmluYWxpemluZ19kb2N9LApAQCAtMTMwOSw5ICsxNDIxLDYgQEAKICAgICB7ImdldHByb2ZpbGUiLCAgICAgIHN5c19nZXRwcm9maWxlLCBNRVRIX05PQVJHUywgZ2V0cHJvZmlsZV9kb2N9LAogICAgIHsic2V0cmVjdXJzaW9ubGltaXQiLCBzeXNfc2V0cmVjdXJzaW9ubGltaXQsIE1FVEhfVkFSQVJHUywKICAgICAgc2V0cmVjdXJzaW9ubGltaXRfZG9jfSwKLSNpZmRlZiBXSVRIX1RTQwotICAgIHsic2V0dHNjZHVtcCIsIHN5c19zZXR0c2NkdW1wLCBNRVRIX1ZBUkFSR1MsIHNldHRzY2R1bXBfZG9jfSwKLSNlbmRpZgogICAgIHsic2V0dHJhY2UiLCAgICAgICAgc3lzX3NldHRyYWNlLCBNRVRIX08sIHNldHRyYWNlX2RvY30sCiAgICAgeyJnZXR0cmFjZSIsICAgICAgICBzeXNfZ2V0dHJhY2UsIE1FVEhfTk9BUkdTLCBnZXR0cmFjZV9kb2N9LAogICAgIHsiY2FsbF90cmFjaW5nIiwgc3lzX2NhbGxfdHJhY2luZywgTUVUSF9WQVJBUkdTLCBjYWxsX3RyYWNpbmdfZG9jfSwKQEAgLTEzMjEsNiArMTQzMCwxMCBAQAogICAgICBzZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKICAgICB7ImdldF9jb3JvdXRpbmVfd3JhcHBlciIsIHN5c19nZXRfY29yb3V0aW5lX3dyYXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBnZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKKyAgICB7InNldF9hc3luY2dlbl9ob29rcyIsIChQeUNGdW5jdGlvbilzeXNfc2V0X2FzeW5jZ2VuX2hvb2tzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzZXRfYXN5bmNnZW5faG9va3NfZG9jfSwKKyAgICB7ImdldF9hc3luY2dlbl9ob29rcyIsIHN5c19nZXRfYXN5bmNnZW5faG9va3MsIE1FVEhfTk9BUkdTLAorICAgICBnZXRfYXN5bmNnZW5faG9va3NfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTUwMSwxNCArMTYxNCwyMSBAQAogdmVyc2lvbl9pbmZvIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gYXMgYSBuYW1lZCB0dXBsZVxuXAogIgogKQotI2lmZGVmIE1TX1dJTkRPV1MKKyNpZmRlZiBNU19DT1JFRExMCiAvKiBjb25jYXRlbmF0aW5nIHN0cmluZyBoZXJlICovCiBQeURvY19TVFIoCiAiZGxsaGFuZGxlIC0tIFtXaW5kb3dzIG9ubHldIGludGVnZXIgaGFuZGxlIG9mIHRoZSBQeXRob24gRExMXG5cCiB3aW52ZXIgLS0gW1dpbmRvd3Mgb25seV0gdmVyc2lvbiBudW1iZXIgb2YgdGhlIFB5dGhvbiBETExcblwKICIKICkKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogTVNfQ09SRURMTCAqLworI2lmZGVmIE1TX1dJTkRPV1MKKy8qIGNvbmNhdGVuYXRpbmcgc3RyaW5nIGhlcmUgKi8KK1B5RG9jX1NUUigKKyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcgLS0gW1dpbmRvd3Mgb25seV0gXG5cCisiCispCisjZW5kaWYKIFB5RG9jX1NUUigKICJfX3N0ZGluX18gLS0gdGhlIG9yaWdpbmFsIHN0ZGluOyBkb24ndCB0b3VjaCFcblwKIF9fc3Rkb3V0X18gLS0gdGhlIG9yaWdpbmFsIHN0ZG91dDsgZG9uJ3QgdG91Y2ghXG5cCkBAIC0xNjgwLDE1ICsxODAwLDExIEBACiAvKiBzeXMuaW1wbGVtZW50YXRpb24gdmFsdWVzICovCiAjZGVmaW5lIE5BTUUgImNweXRob24iCiBjb25zdCBjaGFyICpfUHlTeXNfSW1wbE5hbWUgPSBOQU1FOwotI2RlZmluZSBRVU9URShhcmcpICNhcmcKLSNkZWZpbmUgU1RSSUZZKG5hbWUpIFFVT1RFKG5hbWUpCi0jZGVmaW5lIE1BSk9SIFNUUklGWShQWV9NQUpPUl9WRVJTSU9OKQotI2RlZmluZSBNSU5PUiBTVFJJRlkoUFlfTUlOT1JfVkVSU0lPTikKKyNkZWZpbmUgTUFKT1IgUHlfU1RSSU5HSUZZKFBZX01BSk9SX1ZFUlNJT04pCisjZGVmaW5lIE1JTk9SIFB5X1NUUklOR0lGWShQWV9NSU5PUl9WRVJTSU9OKQogI2RlZmluZSBUQUcgTkFNRSAiLSIgTUFKT1IgTUlOT1IKIGNvbnN0IGNoYXIgKl9QeVN5c19JbXBsQ2FjaGVUYWcgPSBUQUc7CiAjdW5kZWYgTkFNRQotI3VuZGVmIFFVT1RFCi0jdW5kZWYgU1RSSUZZCiAjdW5kZWYgTUFKT1IKICN1bmRlZiBNSU5PUgogI3VuZGVmIFRBRwpAQCAtMTczMyw2ICsxODQ5LDE2IEBACiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKKyNpZmRlZiBNVUxUSUFSQ0gKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKE1VTFRJQVJDSCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAiX211bHRpYXJjaCIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworI2VuZGlmCisKICAgICAvKiBkaWN0IHJlYWR5ICovCiAKICAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoaW1wbF9pbmZvKTsKQEAgLTE5NDMsNiArMjA2OSwxNCBAQAogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInRocmVhZF9pbmZvIiwgUHlUaHJlYWRfR2V0SW5mbygpKTsKICNlbmRpZgogCisgICAgLyogaW5pdGlhbGl6ZSBhc3luY2dlbl9ob29rcyAqLworICAgIGlmIChBc3luY0dlbkhvb2tzVHlwZS50cF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKAorICAgICAgICAgICAgICAgICZBc3luY0dlbkhvb2tzVHlwZSwgJmFzeW5jZ2VuX2hvb2tzX2Rlc2MpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKICN1bmRlZiBTRVRfU1lTX0ZST01fU1RSSU5HCiAjdW5kZWYgU0VUX1NZU19GUk9NX1NUUklOR19CT1JST1cKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTIwMzksNyArMjE3Myw3IEBACiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfUkVBTFBBVEgpCiAgICAgd2NoYXJfdCBmdWxscGF0aFtNQVhQQVRITEVOXTsKLSNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoTVNfV0lOQ0UpCisjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2NoYXJfdCBmdWxscGF0aFtNQVhfUEFUSF07CiAjZW5kaWYKIApAQCAtMjA3OCwxMCArMjIxMiw4IEBACiAjaWYgU0VQID09ICdcXCcgLyogU3BlY2lhbCBjYXNlIGZvciBNUyBmaWxlbmFtZSBzeW50YXggKi8KICAgICBpZiAoX0hBVkVfU0NSSVBUX0FSR1VNRU5UKGFyZ2MsIGFyZ3YpKSB7CiAgICAgICAgIHdjaGFyX3QgKnE7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChNU19XSU5DRSkKLSAgICAgICAgLyogVGhpcyBjb2RlIGhlcmUgcmVwbGFjZXMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYXJndiB3aXRoIHRoZSBmdWxsCi0gICAgICAgIHBhdGggdGhhdCBpdCByZXByZXNlbnRzLiBVbmRlciBDRSwgdGhlcmUgYXJlIG5vIHJlbGF0aXZlIHBhdGhzIHNvCi0gICAgICAgIHRoZSBhcmd1bWVudCBtdXN0IGJlIHRoZSBmdWxsIHBhdGggYW55d2F5LiAqLworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgLyogUmVwbGFjZSB0aGUgZmlyc3QgZWxlbWVudCBpbiBhcmd2IHdpdGggdGhlIGZ1bGwgcGF0aC4gKi8KICAgICAgICAgd2NoYXJfdCAqcHRlbXA7CiAgICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWVXKGFyZ3YwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGZ1bGxwYXRoKSwKQEAgLTIxNTEsNyArMjI4Myw3IEBACiBzdGF0aWMgaW50CiBzeXNfcHlmaWxlX3dyaXRlX3VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICpmaWxlKQogewotICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqYXJncyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgZXJyOwogCiAgICAgaWYgKGZpbGUgPT0gTlVMTCkKQEAgLTIxNjEsMTEgKzIyOTMsNyBAQAogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdW5pY29kZSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHdyaXRlciwgYXJncyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKHdyaXRlciwgdW5pY29kZSk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfSBlbHNlIHsKQEAgLTIxNzcsNyArMjMwNSw2IEBACiAgICAgZXJyID0gLTE7CiBmaW5hbGx5OgogICAgIFB5X1hERUNSRUYod3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICByZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9udC5oIGIvUHl0aG9uL3RocmVhZF9udC5oCmluZGV4IGIyOWIxYjYuLjc0YTZlZTggMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfbnQuaAorKysgYi9QeXRob24vdGhyZWFkX250LmgKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgLyogd2FpdCBhdCBsZWFzdCB1bnRpbCB0aGUgdGFyZ2V0ICovCiAgICAgICAgIERXT1JEIG5vdywgdGFyZ2V0ID0gR2V0VGlja0NvdW50KCkgKyBtaWxsaXNlY29uZHM7CiAgICAgICAgIHdoaWxlIChtdXRleC0+bG9ja2VkKSB7Ci0gICAgICAgICAgICBpZiAoUHlDT05EX1RJTUVEV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzLCAoUFlfTE9OR19MT05HKW1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIChsb25nIGxvbmcpbWlsbGlzZWNvbmRzKjEwMDApIDwgMCkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBSVRfRkFJTEVEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTYxLDExICsxNjEsNyBAQAogCiAvKiB0aHVua2VyIHRvIGNhbGwgYWRhcHQgYmV0d2VlbiB0aGUgZnVuY3Rpb24gdHlwZSB1c2VkIGJ5IHRoZSBzeXN0ZW0ncwogdGhyZWFkIHN0YXJ0IGZ1bmN0aW9uIGFuZCB0aGUgaW50ZXJuYWxseSB1c2VkIG9uZS4gKi8KLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotc3RhdGljIERXT1JEIFdJTkFQSQotI2Vsc2UKIHN0YXRpYyB1bnNpZ25lZCBfX3N0ZGNhbGwKLSNlbmRpZgogYm9vdHN0cmFwKHZvaWQgKmNhbGwpCiB7CiAgICAgY2FsbG9iaiAqb2JqID0gKGNhbGxvYmoqKWNhbGw7CkBAIC0xOTMsMzIgKzE4OSwxOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgb2JqLT5mdW5jID0gZnVuYzsKICAgICBvYmotPmFyZyA9IGFyZzsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgIGhUaHJlYWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoX3B5dGhyZWFkX3N0YWNrc2l6ZSwgUHlfc3NpemVfdCwgU0laRV9UKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCwgb2JqLCAwLCAmdGhyZWFkSUQpOwotI2Vsc2UKICAgICBoVGhyZWFkID0gKEhBTkRMRSlfYmVnaW50aHJlYWRleCgwLAogICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoX3B5dGhyZWFkX3N0YWNrc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QsIHVuc2lnbmVkIGludCksCiAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwLCBvYmosCiAgICAgICAgICAgICAgICAgICAgICAgMCwgJnRocmVhZElEKTsKLSNlbmRpZgogICAgIGlmIChoVGhyZWFkID09IDApIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgICAgICAvKiBTYXZlIGVycm9yIGluIHZhcmlhYmxlLCB0byBwcmV2ZW50IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQKLSAgICAgICAgICAgZnJvbSBjbG9iYmVyaW5nIGl0LiAqLwotICAgICAgICB1bnNpZ25lZCBlID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgZmFpbGVkLCB3aW4zMiBlcnJvciBjb2RlICV1XG4iLAotICAgICAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGUpKTsKLSNlbHNlCiAgICAgICAgIC8qIEkndmUgc2VlbiBlcnJubyA9PSBFQUdBSU4gaGVyZSwgd2hpY2ggbWVhbnMgInRoZXJlIGFyZQogICAgICAgICAgKiB0b28gbWFueSB0aHJlYWRzIi4KICAgICAgICAgICovCiAgICAgICAgIGludCBlID0gZXJybm87CiAgICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgZmFpbGVkLCBlcnJubyAlZFxuIiwKICAgICAgICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBlKSk7Ci0jZW5kaWYKICAgICAgICAgdGhyZWFkSUQgPSAodW5zaWduZWQpLTE7CiAgICAgICAgIEhlYXBGcmVlKEdldFByb2Nlc3NIZWFwKCksIDAsIG9iaik7CiAgICAgfQpAQCAtMjQ5LDExICsyMzEsNyBAQAogICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgZXhpdCgwKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgIEV4aXRUaHJlYWQoMCk7Ci0jZWxzZQogICAgIF9lbmR0aHJlYWRleCgwKTsKLSNlbmRpZgogfQogCiAvKgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RyYWNlYmFjay5jIGIvUHl0aG9uL3RyYWNlYmFjay5jCmluZGV4IDllN2ZlM2IuLjlmOGM1NjggMTAwNjQ0Ci0tLSBhL1B5dGhvbi90cmFjZWJhY2suYworKysgYi9QeXRob24vdHJhY2ViYWNrLmMKQEAgLTMyMCw3ICszMjAsNyBAQAogICAgIGlmIChmb2IgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYmluYXJ5LCAmUHlJZF9jbG9zZSwgIiIpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJpbmFyeSwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoYmluYXJ5KTsKICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMzQwLDcgKzM0MCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgIGlmIChyZXMpCiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIGVsc2UKQEAgLTQxOCw2ICs0MTgsMTEgQEAKIHsKICAgICBpbnQgZXJyID0gMDsKICAgICBsb25nIGRlcHRoID0gMDsKKyAgICBQeU9iamVjdCAqbGFzdF9maWxlID0gTlVMTDsKKyAgICBpbnQgbGFzdF9saW5lID0gLTE7CisgICAgUHlPYmplY3QgKmxhc3RfbmFtZSA9IE5VTEw7CisgICAgbG9uZyBjbnQgPSAwOworICAgIFB5T2JqZWN0ICpsaW5lOwogICAgIFB5VHJhY2ViYWNrT2JqZWN0ICp0YjEgPSB0YjsKICAgICB3aGlsZSAodGIxICE9IE5VTEwpIHsKICAgICAgICAgZGVwdGgrKzsKQEAgLTQyNSwxNiArNDMwLDQxIEBACiAgICAgfQogICAgIHdoaWxlICh0YiAhPSBOVUxMICYmIGVyciA9PSAwKSB7CiAgICAgICAgIGlmIChkZXB0aCA8PSBsaW1pdCkgewotICAgICAgICAgICAgZXJyID0gdGJfZGlzcGxheWxpbmUoZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgICAgICAgICBpZiAobGFzdF9maWxlICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUgPT0gbGFzdF9maWxlICYmCisgICAgICAgICAgICAgICAgbGFzdF9saW5lICE9IC0xICYmIHRiLT50Yl9saW5lbm8gPT0gbGFzdF9saW5lICYmCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSA9PSBsYXN0X25hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgY250Kys7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNudCA+IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICIgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVkIG1vcmUgdGltZXNdXG4iLCBjbnQtMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVPYmplY3QobGluZSwgZiwgUHlfUFJJTlRfUkFXKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBsYXN0X2ZpbGUgPSB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IHRiLT50Yl9saW5lbm87CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA9IHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lOworICAgICAgICAgICAgICAgICAgICBjbnQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbnQgPCAzKQorICAgICAgICAgICAgICAgIGVyciA9IHRiX2Rpc3BsYXlsaW5lKGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOwogICAgICAgICB9CiAgICAgICAgIGRlcHRoLS07CiAgICAgICAgIHRiID0gdGItPnRiX25leHQ7CiAgICAgICAgIGlmIChlcnIgPT0gMCkKICAgICAgICAgICAgIGVyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpOwogICAgIH0KKyAgICBpZiAoY250ID4gMykgeworICAgICAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICIgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVkIG1vcmUgdGltZXNdXG4iLCBjbnQtMyk7CisgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChsaW5lLCBmLCBQeV9QUklOVF9SQVcpOworICAgICAgICBQeV9ERUNSRUYobGluZSk7CisgICAgfQogICAgIHJldHVybiBlcnI7CiB9CiAKQEAgLTQ4NSw0MCArNTE1LDI2IEBACiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKLXN0YXRpYyB2b2lkCi1yZXZlcnNlX3N0cmluZyhjaGFyICp0ZXh0LCBjb25zdCBzaXplX3QgbGVuKQordm9pZAorX1B5X0R1bXBEZWNpbWFsKGludCBmZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKIHsKLSAgICBjaGFyIHRtcDsKLSAgICBzaXplX3QgaSwgajsKLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKGk9MCwgaj1sZW4tMTsgaSA8IGo7IGkrKywgai0tKSB7Ci0gICAgICAgIHRtcCA9IHRleHRbaV07Ci0gICAgICAgIHRleHRbaV0gPSB0ZXh0W2pdOwotICAgICAgICB0ZXh0W2pdID0gdG1wOwotICAgIH0KLX0KKyAgICAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZCBvciAlcC4KKyAgICAgICBXZSBuZWVkIGF0IG1vc3QgY2VpbChsb2cxMCgyNTYpKlNJWkVPRl9MT05HX0xPTkcpIGRpZ2l0cywKKyAgICAgICBwbHVzIDEgZm9yIHRoZSBudWxsIGJ5dGUuICA1My8yMiBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nMTAoMjU2KS4gKi8KKyAgICBjaGFyIGJ1ZmZlclsxICsgKHNpemVvZih1bnNpZ25lZCBsb25nKSo1My0xKSAvIDIyICsgMV07CisgICAgY2hhciAqcHRyLCAqZW5kOwogCi0vKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgOTk5OTk5XSB0byBkZWNpbWFsLAotICAgYW5kIHdyaXRlIGl0IGludG8gdGhlIGZpbGUgZmQuCi0KLSAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCi0KLXN0YXRpYyB2b2lkCi1kdW1wX2RlY2ltYWwoaW50IGZkLCBpbnQgdmFsdWUpCi17Ci0gICAgY2hhciBidWZmZXJbN107Ci0gICAgaW50IGxlbjsKLSAgICBpZiAodmFsdWUgPCAwIHx8IDk5OTk5OSA8IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgbGVuID0gMDsKKyAgICBlbmQgPSAmYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChidWZmZXIpIC0gMV07CisgICAgcHRyID0gZW5kOworICAgICpwdHIgPSAnXDAnOwogICAgIGRvIHsKLSAgICAgICAgYnVmZmVyW2xlbl0gPSAnMCcgKyAodmFsdWUgJSAxMCk7CisgICAgICAgIC0tcHRyOworICAgICAgICBhc3NlcnQocHRyID49IGJ1ZmZlcik7CisgICAgICAgICpwdHIgPSAnMCcgKyAodmFsdWUgJSAxMCk7CiAgICAgICAgIHZhbHVlIC89IDEwOwotICAgICAgICBsZW4rKzsKICAgICB9IHdoaWxlICh2YWx1ZSk7Ci0gICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CisKKyAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgcHRyLCBlbmQgLSBwdHIpOwogfQogCiAvKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMHhmZmZmZmZmZl0gdG8gaGV4YWRlY2ltYWwgb2YgJ3dpZHRoJyBkaWdpdHMsCkBAIC01MjYsMjcgKzU0MiwzMSBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCi1zdGF0aWMgdm9pZAotZHVtcF9oZXhhZGVjaW1hbChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIGludCB3aWR0aCkKK3ZvaWQKK19QeV9EdW1wSGV4YWRlY2ltYWwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBQeV9zc2l6ZV90IHdpZHRoKQogewotICAgIGludCBsZW47Ci0gICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdOwotICAgIGxlbiA9IDA7CisgICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdLCAqcHRyLCAqZW5kOworICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZSA9IFB5X0FSUkFZX0xFTkdUSChidWZmZXIpIC0gMTsKKworICAgIGlmICh3aWR0aCA+IHNpemUpCisgICAgICAgIHdpZHRoID0gc2l6ZTsKKyAgICAvKiBpdCdzIG9rIGlmIHdpZHRoIGlzIG5lZ2F0aXZlICovCisKKyAgICBlbmQgPSAmYnVmZmVyW3NpemVdOworICAgIHB0ciA9IGVuZDsKKyAgICAqcHRyID0gJ1wwJzsKICAgICBkbyB7Ci0gICAgICAgIGJ1ZmZlcltsZW5dID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOworICAgICAgICAtLXB0cjsKKyAgICAgICAgYXNzZXJ0KHB0ciA+PSBidWZmZXIpOworICAgICAgICAqcHRyID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOwogICAgICAgICB2YWx1ZSA+Pj0gNDsKLSAgICAgICAgbGVuKys7Ci0gICAgfSB3aGlsZSAobGVuIDwgd2lkdGggfHwgdmFsdWUpOwotICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgYnVmZmVyLCBsZW4pOworICAgIH0gd2hpbGUgKChlbmQgLSBwdHIpIDwgd2lkdGggfHwgdmFsdWUpOworCisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHB0ciwgZW5kIC0gcHRyKTsKIH0KIAotLyogV3JpdGUgYW4gdW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBmZCB1c2luZyBhc2NpaStiYWNrc2xhc2hyZXBsYWNlLgotCi0gICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwotCi1zdGF0aWMgdm9pZAotZHVtcF9hc2NpaShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQordm9pZAorX1B5X0R1bXBBU0NJSShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQogewogICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKil0ZXh0OwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKQEAgLTU1NiwzMiArNTc2LDM2IEBACiAgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CiAgICAgUHlfVUNTNCBjaDsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHRleHQpKQorICAgICAgICByZXR1cm47CisKICAgICBzaXplID0gYXNjaWktPmxlbmd0aDsKICAgICBraW5kID0gYXNjaWktPnN0YXRlLmtpbmQ7Ci0gICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KSB7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOworICAgIH0KKyAgICBlbHNlIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkgewogICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKQogICAgICAgICAgICAgZGF0YSA9ICgoUHlBU0NJSU9iamVjdCopdGV4dCkgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkYXRhID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kil0ZXh0KSArIDE7CiAgICAgfQotICAgIGVsc2UgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICBlbHNlIHsKICAgICAgICAgZGF0YSA9ICgoUHlVbmljb2RlT2JqZWN0ICopdGV4dCktPmRhdGEuYW55OwogICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOwotICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOwotICAgIH0KIAogICAgIGlmIChNQVhfU1RSSU5HX0xFTkdUSCA8IHNpemUpIHsKICAgICAgICAgc2l6ZSA9IE1BWF9TVFJJTkdfTEVOR1RIOwogICAgICAgICB0cnVuY2F0ZWQgPSAxOwogICAgIH0KLSAgICBlbHNlCisgICAgZWxzZSB7CiAgICAgICAgIHRydW5jYXRlZCA9IDA7CisgICAgfQogCiAgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCkBAIC01OTUsMTkgKzYxOSwyMCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHgiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHUiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXFUiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA4KTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCA4KTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodHJ1bmNhdGVkKQorICAgIGlmICh0cnVuY2F0ZWQpIHsKICAgICAgICAgUFVUUyhmZCwgIi4uLiIpOworICAgIH0KIH0KIAogLyogV3JpdGUgYSBmcmFtZSBpbnRvIHRoZSBmaWxlIGZkOiAiRmlsZSAieHh4IiwgbGluZSB4eHggaW4geHh4Ii4KQEAgLTYyNiw3ICs2NTEsNyBAQAogICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fZmlsZW5hbWUpKQogICAgIHsKICAgICAgICAgUFVUUyhmZCwgIlwiIik7Ci0gICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgX1B5X0R1bXBBU0NJSShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOwogICAgICAgICBQVVRTKGZkLCAiXCIiKTsKICAgICB9IGVsc2UgewogICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CkBAIC02MzUsMTQgKzY2MCwyMSBAQAogICAgIC8qIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjcuMCBhbmQgMy4yLjAgKi8KICAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGNvZGUsIGZyYW1lLT5mX2xhc3RpKTsKICAgICBQVVRTKGZkLCAiLCBsaW5lICIpOwotICAgIGR1bXBfZGVjaW1hbChmZCwgbGluZW5vKTsKKyAgICBpZiAobGluZW5vID49IDApIHsKKyAgICAgICAgX1B5X0R1bXBEZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZylsaW5lbm8pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KICAgICBQVVRTKGZkLCAiIGluICIpOwogCiAgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19uYW1lICE9IE5VTEwKLSAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKQotICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19uYW1lKTsKLSAgICBlbHNlCisgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKSB7CisgICAgICAgIF9QeV9EdW1wQVNDSUkoZmQsIGNvZGUtPmNvX25hbWUpOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KIAogICAgIFBVVFMoZmQsICJcbiIpOwogfQpAQCAtNjk4LDcgKzczMCw5IEBACiAgICAgICAgIFBVVFMoZmQsICJDdXJyZW50IHRocmVhZCAweCIpOwogICAgIGVsc2UKICAgICAgICAgUFVUUyhmZCwgIlRocmVhZCAweCIpOwotICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLCBzaXplb2YodW5zaWduZWQgbG9uZykqMik7CisgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMik7CiAgICAgUFVUUyhmZCwgIiAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKIH0KIApAQCAtNzEwLDExICs3NDQsNTYgQEAKICAgIGhhbmRsZXJzIGlmIHNpZ25hbHMgd2VyZSByZWNlaXZlZC4gKi8KIGNvbnN0IGNoYXIqCiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RzdGF0ZSkKIHsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgdW5zaWduZWQgaW50IG50aHJlYWRzOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoKSBpcyBjYWxsZWQgZnJvbSBzaWduYWwgaGFuZGxlcnMgYnkKKyAgICAgICAgICAgZmF1bHRoYW5kbGVyLgorCisgICAgICAgICAgIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgYXJlIHN5bmNocm9ub3VzIHNpZ25hbHMKKyAgICAgICAgICAgYW5kIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZQorICAgICAgICAgICBQeXRob24gdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgICAgICAgICBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIHRocmVhZCB0aGF0IGNhdXNlZAorICAgICAgICAgICB0aGUgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbgorICAgICAgICAgICBjYW5ub3QgYmUgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAorICAgICAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLworICAgICAgICBjdXJyZW50X3RzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisgICAgfQorCisgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpbnRlcnAgPSBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKCk7CisgICAgICAgICAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBXZSBuZWVkIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB0byBnZXQgUHl0aG9uIHRocmVhZHMgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gInVuYWJsZSB0byBnZXQgdGhlIGludGVycHJldGVyIHN0YXRlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludGVycCA9IGN1cnJlbnRfdHN0YXRlLT5pbnRlcnA7CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIENhbGwgX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCkgaW5zdGVhZCBvZiBQeVRocmVhZFN0YXRlX0dldCgpCisgICAgICAgICAgIHRvIG5vdCBmYWlsIHdpdGggYSBmYXRhbCBlcnJvciBpZiB0aGUgdGhyZWFkIHN0YXRlIGlzIE5VTEwuICovCisgICAgICAgIGN1cnJlbnRfdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CisgICAgfQorCisgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBXZSBuZWVkIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB0byBnZXQgUHl0aG9uIHRocmVhZHMgKi8KKyAgICAgICAgICAgIHJldHVybiAidW5hYmxlIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUiOworICAgICAgICB9CisgICAgICAgIGludGVycCA9IGN1cnJlbnRfdHN0YXRlLT5pbnRlcnA7CisgICAgfQorI2VuZGlmCisgICAgYXNzZXJ0KGludGVycCAhPSBOVUxMKTsKKwogICAgIC8qIEdldCB0aGUgY3VycmVudCBpbnRlcnByZXRlciBmcm9tIHRoZSBjdXJyZW50IHRocmVhZCAqLwogICAgIHRzdGF0ZSA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9UaHJlYWRIZWFkKGludGVycCk7CiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQpAQCAtNzMyLDcgKzgxMSw3IEBACiAgICAgICAgICAgICBQVVRTKGZkLCAiLi4uXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHdyaXRlX3RocmVhZF9pZChmZCwgdHN0YXRlLCB0c3RhdGUgPT0gY3VycmVudF90aHJlYWQpOworICAgICAgICB3cml0ZV90aHJlYWRfaWQoZmQsIHRzdGF0ZSwgdHN0YXRlID09IGN1cnJlbnRfdHN0YXRlKTsKICAgICAgICAgZHVtcF90cmFjZWJhY2soZmQsIHRzdGF0ZSwgMCk7CiAgICAgICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV4dCh0c3RhdGUpOwogICAgICAgICBudGhyZWFkcysrOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3dvcmRjb2RlX2hlbHBlcnMuaCBiL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlM2E5MQotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmgKQEAgLTAsMCArMSw0MSBAQAorLyogVGhpcyBmaWxlIGNvbnRhaW5zIGNvZGUgc2hhcmVkIGJ5IHRoZSBjb21waWxlciBhbmQgdGhlIHBlZXBob2xlCisgICBvcHRpbWl6ZXIuCisgKi8KKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnKSAoKF9QeV9DT0RFVU5JVCkoKChvcGNvZGUpIDw8IDgpIHwgKG9wYXJnKSkpCisjZWxzZQorIyAgZGVmaW5lIFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnKSAoKF9QeV9DT0RFVU5JVCkoKChvcGFyZykgPDwgOCkgfCAob3Bjb2RlKSkpCisjZW5kaWYKKworLyogTWluaW11bSBudW1iZXIgb2YgY29kZSB1bml0cyBuZWNlc3NhcnkgdG8gZW5jb2RlIGluc3RydWN0aW9uIHdpdGgKKyAgIEVYVEVOREVEX0FSR3MgKi8KK3N0YXRpYyBpbnQKK2luc3Ryc2l6ZSh1bnNpZ25lZCBpbnQgb3BhcmcpCit7CisgICAgcmV0dXJuIG9wYXJnIDw9IDB4ZmYgPyAxIDoKKyAgICAgICAgb3BhcmcgPD0gMHhmZmZmID8gMiA6CisgICAgICAgIG9wYXJnIDw9IDB4ZmZmZmZmID8gMyA6CisgICAgICAgIDQ7Cit9CisKKy8qIFNwaXRzIG91dCBvcC9vcGFyZyBwYWlyIHVzaW5nIGlsZW4gYnl0ZXMuIGNvZGVzdHIgc2hvdWxkIGJlIHBvaW50ZWQgYXQgdGhlCisgICBkZXNpcmVkIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBFWFRFTkRFRF9BUkcgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9vcF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICB1bnNpZ25lZCBpbnQgb3BhcmcsIGludCBpbGVuKQoreworICAgIHN3aXRjaCAoaWxlbikgeworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDI0KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDE2KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDgpICYgMHhmZik7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcob3Bjb2RlLCBvcGFyZyAmIDB4ZmYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDQxNGI2NTguLjA5YjhiMzQgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNSArMSw1IEBACi1UaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuNS4zIHJlbGVhc2UgY2FuZGlkYXRlIDEKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjYuMCBiZXRhIDIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjgsOSArMjgsOSBAQAogZWxzZXdoZXJlIGl0J3MganVzdCBweXRob24uCiAKIE9uIE1hYyBPUyBYLCBpZiB5b3UgaGF2ZSBjb25maWd1cmVkIFB5dGhvbiB3aXRoIC0tZW5hYmxlLWZyYW1ld29yaywgeW91IHNob3VsZAotdXNlICJtYWtlIGZyYW1ld29ya2luc3RhbGwiIHRvIGRvIHRoZSBpbnN0YWxsYXRpb24uICBOb3RlIHRoYXQgdGhpcyBpbnN0YWxscwotdGhlIFB5dGhvbiBleGVjdXRhYmxlIGluIGEgcGxhY2UgdGhhdCBpcyBub3Qgbm9ybWFsbHkgb24geW91ciBQQVRILCB5b3UgbWF5Ci13YW50IHRvIHNldCB1cCBhIHN5bWxpbmsgaW4gL3Vzci9sb2NhbC9iaW4uCit1c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzIHRoZQorUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkgd2FudCB0bworc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KIAogT24gV2luZG93cywgc2VlIFBDYnVpbGQvcmVhZG1lLnR4dC4KIApAQCAtODksOSArODksOSBAQAogLS0tLS0tLS0tLQogCiBXZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgY2hhbmdlcyBpbiB0aGUgIldoYXQncyBOZXcgaW4KLVB5dGhvbiAzLjUiIGRvY3VtZW50LCBmb3VuZCBhdAorUHl0aG9uIDMuNiIgZG9jdW1lbnQsIGZvdW5kIGF0CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS93aGF0c25ldy8zLjUuaHRtbAorICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi93aGF0c25ldy8zLjYuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sCiBpcyBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNwpAQCAtMTA0LDkgKzEwNCw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjUgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNiBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS8KKyAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvCiAKIEl0IGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4gbWFueSBmb3JtYXRzIGZvciBmYXN0ZXIgYWNjZXNzLiAgVGhlIGRvY3VtZW50YXRpb24KIGlzIGRvd25sb2FkYWJsZSBpbiBIVE1MLCBQREYsIGFuZCByZVN0cnVjdHVyZWRUZXh0IGZvcm1hdHM7IHRoZSBsYXR0ZXIgdmVyc2lvbgpAQCAtMTE2LDcgKzExNiw3IEBACiBJZiB5b3Ugd291bGQgbGlrZSB0byBjb250cmlidXRlIHRvIHRoZSBkZXZlbG9wbWVudCBvZiBQeXRob24sIHJlbGV2YW50CiBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdDoKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCisgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCiAKIEZvciBpbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBQeXRob24ncyBkb2N1bWVudGF0aW9uLCByZWZlciB0byBEb2MvUkVBRE1FLnR4dC4KIApAQCAtMTMxLDcgKzEzMSw3IEBACiBBIHNvdXJjZS10by1zb3VyY2UgdHJhbnNsYXRpb24gdG9vbCwgIjJ0bzMiLCBjYW4gdGFrZSBjYXJlIG9mIHRoZSBtdW5kYW5lIHRhc2sKIG9mIGNvbnZlcnRpbmcgbGFyZ2UgYW1vdW50cyBvZiBzb3VyY2UgY29kZS4gIEl0IGlzIG5vdCBhIGNvbXBsZXRlIHNvbHV0aW9uIGJ1dAogaXMgY29tcGxlbWVudGVkIGJ5IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBpbiAyLjYuICBTZWUKLWh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAKIFRlc3RpbmcKQEAgLTE2MSwxNiArMTYxLDE2IEBACiAKIE9uIFVuaXggYW5kIE1hYyBzeXN0ZW1zIGlmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24KIHVzaW5nIHRoZSBzYW1lIGluc3RhbGxhdGlvbiBwcmVmaXggKC0tcHJlZml4IGFyZ3VtZW50IHRvIHRoZSBjb25maWd1cmUgc2NyaXB0KQoteW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieQotdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQKLXVzaW5nICJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCi1zaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycwotdG8gJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcKLXRoZSBzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IgotdmVyc2lvbi4gIEluc3RhbGwgdGhhdCB2ZXJzaW9uIHVzaW5nICJtYWtlIGluc3RhbGwiLiAgSW5zdGFsbCBhbGwgb3RoZXIKLXZlcnNpb25zIHVzaW5nICJtYWtlIGFsdGluc3RhbGwiLgoreW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieSB0aGUKK2luc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQgdXNpbmcKKyJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCitzaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycyB0bworJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcgdGhlCitzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IiB2ZXJzaW9uLgorSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZworIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy41IHdpdGggMi43IGJlaW5nIHRoZQorRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjYgd2l0aCAyLjcgYmVpbmcgdGhlCiBwcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi43IGJ1aWxkIGRpcmVjdG9yeQogYW5kICJtYWtlIGFsdGluc3RhbGwiIGluIHRoZSBvdGhlcnMuCiAKQEAgLTE4MSw3ICsxODEsNyBAQAogV2UncmUgc29saWNpdGluZyBidWcgcmVwb3J0cyBhYm91dCBhbGwgYXNwZWN0cyBvZiB0aGUgbGFuZ3VhZ2UuICBGaXhlcyBhcmUgYWxzbwogd2VsY29tZSwgcHJlZmVyYWJseSBpbiB1bmlmaWVkIGRpZmYgZm9ybWF0LiAgUGxlYXNlIHVzZSB0aGUgaXNzdWUgdHJhY2tlcjoKIAotICAgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvCisgICAgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvCiAKIElmIHlvdSdyZSBub3Qgc3VyZSB3aGV0aGVyIHlvdSdyZSBkZWFsaW5nIHdpdGggYSBidWcgb3IgYSBmZWF0dXJlLCB1c2UgdGhlCiBtYWlsaW5nIGxpc3Q6CkBAIC0xOTAsMjMgKzE5MCwyMyBAQAogCiBUbyBzdWJzY3JpYmUgdG8gdGhlIGxpc3QsIHVzZSB0aGUgbWFpbG1hbiBmb3JtOgogCi0gICAgaHR0cDovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1kZXYvCisgICAgaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tZGV2LwogCiAKIFByb3Bvc2FscyBmb3IgZW5oYW5jZW1lbnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSWYgeW91IGhhdmUgYSBwcm9wb3NhbCB0byBjaGFuZ2UgUHl0aG9uLCB5b3UgbWF5IHdhbnQgdG8gc2VuZCBhbiBlbWFpbCB0byB0aGUKLWNvbXAubGFuZy5weXRob24gb3IgcHl0aG9uLWlkZWFzIG1haWxpbmcgbGlzdHMgZm9yIGluaXRhbCBmZWVkYmFjay4gIEEgUHl0aG9uCitjb21wLmxhbmcucHl0aG9uIG9yIHB5dGhvbi1pZGVhcyBtYWlsaW5nIGxpc3RzIGZvciBpbml0aWFsIGZlZWRiYWNrLiAgQSBQeXRob24KIEVuaGFuY2VtZW50IFByb3Bvc2FsIChQRVApIG1heSBiZSBzdWJtaXR0ZWQgaWYgeW91ciBpZGVhIGdhaW5zIGdyb3VuZC4gIEFsbAogY3VycmVudCBQRVBzLCBhcyB3ZWxsIGFzIGd1aWRlbGluZXMgZm9yIHN1Ym1pdHRpbmcgYSBuZXcgUEVQLCBhcmUgbGlzdGVkIGF0Ci1odHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvLgoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy8uCiAKIAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDQ3OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzgvCitTZWUgUEVQIDQ5NCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDk0LwogCiAKIENvcHlyaWdodCBhbmQgTGljZW5zZSBJbmZvcm1hdGlvbgpAQCAtMjMwLDMgKzIzMCw0IEBACiBjb2RlIGJ1dCB0aGVzZSBhcmUgZW50aXJlbHkgb3B0aW9uYWwuCiAKIEFsbCB0cmFkZW1hcmtzIHJlZmVyZW5jZWQgaGVyZWluIGFyZSBwcm9wZXJ0eSBvZiB0aGVpciByZXNwZWN0aXZlIGhvbGRlcnMuCisKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc3NDA3Yi4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNvbXBpbGUiIHN0ZXAuDQotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlDQotQGVjaG8gICAgIFBDYnVpbGRcYnVpbGQuYmF0IC1kIC1lIC1rIC1wIHg2NA0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtcCB4NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1M2M3YzEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1AcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UgYGNsZWFuLmJhdGAgZnJvbSB0aGlzDQotQGVjaG8gZGlyZWN0b3J5IGFuZCBwYXNzIGAtcCB4NjRgIGFzIHR3byBhcmd1bWVudHMuDQotY2FsbCAiJX5kcDBjbGVhbi5iYXQiIC1wIHg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAppbmRleCAwZmM2OGZkLi4xM2U2Njc5IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CkBAIC0xNCwzICsxNCw0IEBACiANCiBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLg0KIHJtZGlyIC9zIC9xICIlcm9vdCVcYnVpbGQiDQorZGVsIC9zICIlcGNidWlsZCVccHl0aG9uKi56aXAiDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvdGVzdC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ4MzI5Yy4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UNCi1AZWNobyAgICAgUENidWlsZFxydC5iYXQgLXEgLWQgLXg2NCAtdWFsbCAtcndXDQotQGVjaG8gb3IgdXNlIGB0ZXN0LmJhdGAgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIHBhc3MgYC14NjRgIGFzIGFuIGFyZ3VtZW50Lg0KLWNhbGwgIiV+ZHAwdGVzdC5iYXQiIC14NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CmluZGV4IGZmN2QxNjcuLmEzMmQzOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CkBAIC00LDcgKzQsNyBAQAogDQogc2V0IGhlcmU9JX5kcDANCiBzZXQgcnRfb3B0cz0tcSAtZA0KLXNldCByZWdydGVzdF9hcmdzPQ0KK3NldCByZWdydGVzdF9hcmdzPS1qMQ0KIA0KIDpDaGVja09wdHMNCiBpZiAiJTEiPT0iLXg2NCIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQpAQCAtMTYsNCArMTYsNCBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RfYXJncz0lcmVncnRlc3RfYXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KIGVjaG8gb24NCi1jYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLS10aW1lb3V0PTM2MDAgJXJlZ3J0ZXN0X2FyZ3MlDQorY2FsbCAiJWhlcmUlLi5cLi5cUENidWlsZFxydC5iYXQiICVydF9vcHRzJSAtdWFsbCAtcndXIC0tc2xvd2VzdCAtLXRpbWVvdXQ9MTIwMCAlcmVncnRlc3RfYXJncyUNCmRpZmYgLS1naXQgYS9Ub29scy9jbGluaWMvY2xpbmljLnB5IGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQppbmRleCBmNjE1ZWQ5Li43NWFjNjczIDEwMDc1NQotLS0gYS9Ub29scy9jbGluaWMvY2xpbmljLnB5CisrKyBiL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKQEAgLTY0NCw3ICs2NDQsNyBAQAogICAgICAgICBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXIgPSAobm90IGYucmV0dXJuX2NvbnZlcnRlciBvcgogICAgICAgICAgICAgZi5yZXR1cm5fY29udmVydGVyLnR5cGUgPT0gJ1B5T2JqZWN0IConKQogCi0gICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCAocGFyYW1ldGVyc1stMV0ua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCBwYXJhbWV0ZXJzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBhbGxfYm9yaW5nX29iamVjdHMgPSBGYWxzZSAjIHllcywgdGhpcyB3aWxsIGJlIGZhbHNlIGlmIHRoZXJlIGFyZSAwIHBhcmFtZXRlcnMsIGl0J3MgZmluZQogICAgICAgICBmaXJzdF9vcHRpb25hbCA9IGxlbihwYXJhbWV0ZXJzKQogICAgICAgICBmb3IgaSwgcCBpbiBlbnVtZXJhdGUocGFyYW1ldGVycyk6CkBAIC02NjEsNyArNjYxLDcgQEAKICAgICAgICAgbmV3X29yX2luaXQgPSBmLmtpbmQgaW4gKE1FVEhPRF9ORVcsIE1FVEhPRF9JTklUKQogCiAgICAgICAgIG1ldGhfbyA9IChsZW4ocGFyYW1ldGVycykgPT0gMSBhbmQKLSAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSBhbmQKKyAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5pc19wb3NpdGlvbmFsX29ubHkoKSBhbmQKICAgICAgICAgICAgICAgbm90IGNvbnZlcnRlcnNbMF0uaXNfb3B0aW9uYWwoKSBhbmQKICAgICAgICAgICAgICAgbm90IG5ld19vcl9pbml0KQogCkBAIC03MDUsNiArNzA1LDExIEBACiAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe3NlbGZfdHlwZX17c2VsZl9uYW1lfSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiAgICAgICAgICAgICAiIiIpCiAKKyAgICAgICAgcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbCA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgorICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQorICAgICAgICAgICAgIiIiKQorCiAgICAgICAgIHBhcnNlcl9wcm90b3R5cGVfdmFyYXJncyA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqYXJncykKQEAgLTc0Myw3ICs3NDgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQoKQogCiAgICAgICAgIGRlZiBpbnNlcnRfa2V5d29yZHMocyk6Ci0gICAgICAgICAgICByZXR1cm4gbGluZWFyX2Zvcm1hdChzLCBkZWNsYXJhdGlvbnM9InN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHt7e2tleXdvcmRzfSwgTlVMTH19O1xue2RlY2xhcmF0aW9uc30iKQorICAgICAgICAgICAgcmV0dXJuIGxpbmVhcl9mb3JtYXQocywgZGVjbGFyYXRpb25zPQorICAgICAgICAgICAgICAgICdzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0ge3t7a2V5d29yZHN9LCBOVUxMfX07XG4nCisgICAgICAgICAgICAgICAgJ3N0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7eyJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsIDB9fTtcbicKKyAgICAgICAgICAgICAgICAne2RlY2xhcmF0aW9uc30nKQogCiAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgIyBubyBwYXJhbWV0ZXJzLCBNRVRIX05PQVJHUwpAQCAtNzk3LDggKzgwNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUpCiAKICAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIgJSBhcmduYW1lLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBoYXNfb3B0aW9uX2dyb3VwczoKQEAgLTgyMiw4ICs4MzEsOSBAQAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ7bmFtZX0iLAogICAgICAgICAgICAgICAgICAgICB7dW5wYWNrX21pbn0sIHt1bnBhY2tfbWF4fSwKLSAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgIGVsaWYgcG9zaXRpb25hbDoKQEAgLTgzNSwxMCArODQ1LDI0IEBACiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKKyAgICAgICAgZWxpZiBub3QgbmV3X29yX2luaXQ6CisgICAgICAgICAgICBmbGFncyA9ICJNRVRIX0ZBU1RDQUxMIgorCisgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbAorCisgICAgICAgICAgICBib2R5ID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgYm9keSkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gaW5zZXJ0X2tleXdvcmRzKHBhcnNlcl9kZWZpbml0aW9uKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBwb3NpdGlvbmFsLW9yLWtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgICAgICBmbGFncyA9ICJNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUyIKQEAgLTg0NiwxNSArODcwLDEyIEBACiAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9rZXl3b3JkCiAKICAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKLSAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKKyAgICAgICAgICAgICAgICB9fQorICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpCisgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIGJvZHkpCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IGluc2VydF9rZXl3b3JkcyhwYXJzZXJfZGVmaW5pdGlvbikKIAogCkBAIC04NzgsMTMgKzg5OSwxNSBAQAogCiAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX2tleXdvcmRzOgogICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9LZXl3b3Jkcygie25hbWV9Iiwga3dhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHtzZWxmX3R5cGVfY2hlY2t9IV9QeUFyZ19Ob0tleXdvcmRzKCJ7bmFtZX0iLCBrd2FyZ3MpKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX3Bvc2l0aW9uYWw6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsICpmaWVsZHMpCkBAIC0xMDMyLDggKzEwNTUsOSBAQAogCiAgICAgICAgICAgICBzID0gIiIiCiAgICAgY2FzZSB7Y291bnR9OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH19CiAgICAgICAgIHtncm91cF9ib29sZWFuc30KICAgICAgICAgYnJlYWs7CiAiIiJbMTpdCkBAIC0xMDY3LDcgKzEwOTEsNyBAQAogCiAgICAgICAgIGxhc3RfZ3JvdXAgPSAwCiAgICAgICAgIGZpcnN0X29wdGlvbmFsID0gbGVuKHNlbGZsZXNzKQotICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWQorICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBuZXdfb3JfaW5pdCA9IGYua2luZCBpbiAoTUVUSE9EX05FVywgTUVUSE9EX0lOSVQpCiAgICAgICAgIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlciA9IChub3QgZi5yZXR1cm5fY29udmVydGVyIG9yCiAgICAgICAgICAgICBmLnJldHVybl9jb252ZXJ0ZXIudHlwZSA9PSAnUHlPYmplY3QgKicpCkBAIC0xMjE2LDcgKzEyNDAsNyBAQAogCiBkZWYgY3JlYXRlX3JlZ2V4KGJlZm9yZSwgYWZ0ZXIsIHdvcmQ9VHJ1ZSwgd2hvbGVfbGluZT1UcnVlKToKICAgICAiIiJDcmVhdGUgYW4gcmUgb2JqZWN0IGZvciBtYXRjaGluZyBtYXJrZXIgbGluZXMuIiIiCi0gICAgZ3JvdXBfcmUgPSAiXHcrIiBpZiB3b3JkIGVsc2UgIi4rIgorICAgIGdyb3VwX3JlID0gciJcdysiIGlmIHdvcmQgZWxzZSAiLisiCiAgICAgcGF0dGVybiA9IHIne30oe30pe30nCiAgICAgaWYgd2hvbGVfbGluZToKICAgICAgICAgcGF0dGVybiA9ICdeJyArIHBhdHRlcm4gKyAnJCcKQEAgLTIzNTksNyArMjM4MywxMCBAQAogICAgICAgICAgICAgZGF0YS5tb2RpZmljYXRpb25zLmFwcGVuZCgnLyogbW9kaWZpY2F0aW9ucyBmb3IgJyArIG5hbWUgKyAnICovXG4nICsgbW9kaWZpY2F0aW9ucy5yc3RyaXAoKSkKIAogICAgICAgICAjIGtleXdvcmRzCi0gICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQorICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICBkYXRhLmtleXdvcmRzLmFwcGVuZCgnJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQogCiAgICAgICAgICMgZm9ybWF0X3VuaXRzCiAgICAgICAgIGlmIHNlbGYuaXNfb3B0aW9uYWwoKSBhbmQgJ3wnIG5vdCBpbiBkYXRhLmZvcm1hdF91bml0czoKQEAgLTI1NzIsMjEgKzI1OTksMjEgQEAKICAgICAgICAgaWYgbm90IGJpdHdpc2U6CiAgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBsb25ncyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCiAKLWNsYXNzIFBZX0xPTkdfTE9OR19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQWV9MT05HX0xPTkcnCitjbGFzcyBsb25nX2xvbmdfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnbG9uZyBsb25nJwogICAgIGRlZmF1bHRfdHlwZSA9IGludAogICAgIGZvcm1hdF91bml0ID0gJ0wnCiAgICAgY19pZ25vcmVkX2RlZmF1bHQgPSAiMCIKIAotY2xhc3MgdW5zaWduZWRfUFlfTE9OR19MT05HX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ3Vuc2lnbmVkIFBZX0xPTkdfTE9ORycKK2NsYXNzIHVuc2lnbmVkX2xvbmdfbG9uZ19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICd1bnNpZ25lZCBsb25nIGxvbmcnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnSycKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCiAgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGJpdHdpc2U9RmFsc2UpOgogICAgICAgICBpZiBub3QgYml0d2lzZToKLSAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIFBZX0xPTkdfTE9OR3MgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQorICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgbG9uZyBsb25nIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAogY2xhc3MgUHlfc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeV9zc2l6ZV90JwpAQCAtMjY3Niw3ICsyNzAzLDcgQEAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgaWYgc2VsZi5lbmNvZGluZzoKICAgICAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKLSAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpXG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xuIl0pCisgICAgICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiKSB7XG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xufVxuIl0pCiAKICMKICMgVGhpcyBpcyB0aGUgZm91cnRoIG9yIGZpZnRoIHJld3JpdGUgb2YgcmVnaXN0ZXJpbmcgYWxsIHRoZQpAQCAtMjc4Niw3ICsyODEzLDcgQEAKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBuYW1lID0gZW5zdXJlX2xlZ2FsX2NfaWRlbnRpZmllcihzZWxmLm5hbWUpCi0gICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIub2JqKVxuICAgUHlCdWZmZXJfUmVsZWFzZSgmIiwgbmFtZSwgIik7XG4iXSkKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIi5vYmopIHtcbiAgIFB5QnVmZmVyX1JlbGVhc2UoJiIsIG5hbWUsICIpO1xufVxuIl0pCiAKIAogZGVmIGNvcnJlY3RfbmFtZV9mb3Jfc2VsZihmKToKQEAgLTI5NTksMTAgKzI5ODYsMTAgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fdmFsdWUgPSBuYW1lCiAKICAgICBkZWYgZXJyX29jY3VycmVkX2lmKHNlbGYsIGV4cHIsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKCh7fSkgJiYgUHlFcnJfT2NjdXJyZWQoKSlcbiAgICBnb3RvIGV4aXQ7XG4nLmZvcm1hdChleHByKSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoJ2lmICgoe30pICYmIFB5RXJyX09jY3VycmVkKCkpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KGV4cHIpKQogCiAgICAgZGVmIGVycl9vY2N1cnJlZF9pZl9udWxsX3BvaW50ZXIoc2VsZiwgdmFyaWFibGUsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpXG4gICAgZ290byBleGl0O1xuJy5mb3JtYXQodmFyaWFibGUpKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KHZhcmlhYmxlKSkKIAogICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgogICAgICAgICAiIiIKQEAgLTI5NzcsOCArMzAwNCw5IEBACiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnJycKLWlmIChfcmV0dXJuX3ZhbHVlICE9IFB5X05vbmUpCitpZiAoX3JldHVybl92YWx1ZSAhPSBQeV9Ob25lKSB7CiAgICAgZ290byBleGl0OworfQogcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKIFB5X0lOQ1JFRihQeV9Ob25lKTsKICcnJy5zdHJpcCgpKQpAQCAtMzE4Myw2ICszMjExLDcgQEAKICAgICAgICAgc2VsZi5zdGF0ZSA9IHNlbGYuc3RhdGVfZHNsX3N0YXJ0CiAgICAgICAgIHNlbGYucGFyYW1ldGVyX2luZGVudCA9IE5vbmUKICAgICAgICAgc2VsZi5rZXl3b3JkX29ubHkgPSBGYWxzZQorICAgICAgICBzZWxmLnBvc2l0aW9uYWxfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYuZ3JvdXAgPSAwCiAgICAgICAgIHNlbGYucGFyYW1ldGVyX3N0YXRlID0gc2VsZi5wc19zdGFydAogICAgICAgICBzZWxmLnNlZW5fcG9zaXRpb25hbF93aXRoX2RlZmF1bHQgPSBGYWxzZQpAQCAtMzU2MSw4ICszNTkwLDggQEAKICAgICAjICJwYXJhbWV0ZXJfc3RhdGUiLiAgKFByZXZpb3VzbHkgdGhlIGNvZGUgd2FzIGEgbWlhc21hIG9mIGlmcyBhbmQKICAgICAjIHNlcGFyYXRlIGJvb2xlYW4gc3RhdGUgdmFyaWFibGVzLikgIFRoZSBzdGF0ZXMgYXJlOgogICAgICMKLSAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdIC8gICA8LSBsaW5lCi0gICAgIyAwMSAgIDIgICAgICAgICAgMyAgICAgICA0ICAgIDUgICAgICAgICAgIDYgICA3ICAgPC0gc3RhdGUgdHJhbnNpdGlvbnMKKyAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdICAgPC0gbGluZQorICAgICMgMDEgICAyICAgICAgICAgIDMgICAgICAgNCAgICA1ICAgICAgICAgICA2ICAgICA8LSBzdGF0ZSB0cmFuc2l0aW9ucwogICAgICMKICAgICAjIDA6IHBzX3N0YXJ0LiAgYmVmb3JlIHdlJ3ZlIHNlZW4gYW55dGhpbmcuICBsZWdhbCB0cmFuc2l0aW9ucyBhcmUgdG8gMSBvciAzLgogICAgICMgMTogcHNfbGVmdF9zcXVhcmVfYmVmb3JlLiAgbGVmdCBzcXVhcmUgYnJhY2tldHMgYmVmb3JlIHJlcXVpcmVkIHBhcmFtZXRlcnMuCkBAIC0zNTczLDkgKzM2MDIsOCBAQAogICAgICMgICAgbm93IG11c3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy4KICAgICAjIDU6IHBzX2dyb3VwX2FmdGVyLiAgaW4gYSBncm91cCwgYWZ0ZXIgcmVxdWlyZWQgcGFyYW1ldGVycy4KICAgICAjIDY6IHBzX3JpZ2h0X3NxdWFyZV9hZnRlci4gIHJpZ2h0IHNxdWFyZSBicmFja2V0cyBhZnRlciByZXF1aXJlZCBwYXJhbWV0ZXJzLgotICAgICMgNzogcHNfc2Vlbl9zbGFzaC4gIHNlZW4gc2xhc2guCiAgICAgcHNfc3RhcnQsIHBzX2xlZnRfc3F1YXJlX2JlZm9yZSwgcHNfZ3JvdXBfYmVmb3JlLCBwc19yZXF1aXJlZCwgXAotICAgIHBzX29wdGlvbmFsLCBwc19ncm91cF9hZnRlciwgcHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBwc19zZWVuX3NsYXNoID0gcmFuZ2UoOCkKKyAgICBwc19vcHRpb25hbCwgcHNfZ3JvdXBfYWZ0ZXIsIHBzX3JpZ2h0X3NxdWFyZV9hZnRlciA9IHJhbmdlKDcpCiAKICAgICBkZWYgc3RhdGVfcGFyYW1ldGVyc19zdGFydChzZWxmLCBsaW5lKToKICAgICAgICAgaWYgc2VsZi5pZ25vcmVfbGluZShsaW5lKToKQEAgLTM4NTQsOSArMzg4Miw2IEBACiAgICAgICAgIHJldHVybiBuYW1lLCBGYWxzZSwga3dhcmdzCiAKICAgICBkZWYgcGFyc2Vfc3BlY2lhbF9zeW1ib2woc2VsZiwgc3ltYm9sKToKLSAgICAgICAgaWYgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPT0gc2VsZi5wc19zZWVuX3NsYXNoOgotICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgc3BlY2lmaWVzICIgKyBzeW1ib2wgKyAiIGFmdGVyIC8sIHdoaWNoIGlzIHVuc3VwcG9ydGVkLiIpCi0KICAgICAgICAgaWYgc3ltYm9sID09ICcqJzoKICAgICAgICAgICAgIGlmIHNlbGYua2V5d29yZF9vbmx5OgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIHVzZXMgJyonIG1vcmUgdGhhbiBvbmNlLiIpCkBAIC0zODgzLDEzICszOTA4LDE1IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiB1bnN1cHBvcnRlZCBncm91cCBjb25maWd1cmF0aW9uLiAoVW5leHBlY3RlZCBzdGF0ZSAiICsgc3RyKHNlbGYucGFyYW1ldGVyX3N0YXRlKSArICIuYykiKQogICAgICAgICBlbGlmIHN5bWJvbCA9PSAnLyc6CisgICAgICAgICAgICBpZiBzZWxmLnBvc2l0aW9uYWxfb25seToKKyAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiB1c2VzICcvJyBtb3JlIHRoYW4gb25jZS4iKQorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbmFsX29ubHkgPSBUcnVlCiAgICAgICAgICAgICAjIHBzX3JlcXVpcmVkIGFuZCBwc19vcHRpb25hbCBhcmUgYWxsb3dlZCBoZXJlLCB0aGF0IGFsbG93cyBwb3NpdGlvbmFsLW9ubHkgd2l0aG91dCBvcHRpb24gZ3JvdXBzCiAgICAgICAgICAgICAjIHRvIHdvcmsgKGFuZCBoYXZlIGRlZmF1bHQgdmFsdWVzISkKICAgICAgICAgICAgIGlmIChzZWxmLnBhcmFtZXRlcl9zdGF0ZSBub3QgaW4gKHNlbGYucHNfcmVxdWlyZWQsIHNlbGYucHNfb3B0aW9uYWwsIHNlbGYucHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBzZWxmLnBzX2dyb3VwX2JlZm9yZSkpIG9yIHNlbGYuZ3JvdXA6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIHVuc3VwcG9ydGVkIGdyb3VwIGNvbmZpZ3VyYXRpb24uIChVbmV4cGVjdGVkIHN0YXRlICIgKyBzdHIoc2VsZi5wYXJhbWV0ZXJfc3RhdGUpICsgIi5kKSIpCiAgICAgICAgICAgICBpZiBzZWxmLmtleXdvcmRfb25seToKICAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBtaXhlcyBrZXl3b3JkLW9ubHkgYW5kIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCB3aGljaCBpcyB1bnN1cHBvcnRlZC4iKQotICAgICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPSBzZWxmLnBzX3NlZW5fc2xhc2gKICAgICAgICAgICAgICMgZml4dXAgcHJlY2VkaW5nIHBhcmFtZXRlcnMKICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuZnVuY3Rpb24ucGFyYW1ldGVycy52YWx1ZXMoKToKICAgICAgICAgICAgICAgICBpZiAocC5raW5kICE9IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCBhbmQgbm90IGlzaW5zdGFuY2UocC5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKSk6CkBAIC0zOTc3LDIzICs0MDA0LDIwIEBACiAgICAgICAgICMgcG9wdWxhdGUgInJpZ2h0X2JyYWNrZXRfY291bnQiIGZpZWxkIGZvciBldmVyeSBwYXJhbWV0ZXIKICAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnMsICJXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBzZWxmIHBhcmFtZXRlci4gIiArIHJlcHIoZikKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyYW1ldGVyc1swXS5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKQorICAgICAgICAjIHNlbGYgaXMgYWx3YXlzIHBvc2l0aW9uYWwtb25seS4KKyAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnNbMF0uaXNfcG9zaXRpb25hbF9vbmx5KCkKICAgICAgICAgcGFyYW1ldGVyc1swXS5yaWdodF9icmFja2V0X2NvdW50ID0gMAotICAgICAgICBwYXJhbWV0ZXJzX2FmdGVyX3NlbGYgPSBwYXJhbWV0ZXJzWzE6XQotICAgICAgICBpZiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAjIGZvciBub3csIHRoZSBvbmx5IHdheSBDbGluaWMgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMKLSAgICAgICAgICAgICMgaXMgaWYgYWxsIG9mIHRoZW0gYXJlIHBvc2l0aW9uYWwtb25seS4uLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAuLi4gZXhjZXB0IGZvciBzZWxmISAgc2VsZiBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5LgotCi0gICAgICAgICAgICBwb3NpdGlvbmFsX29ubHlfcGFyYW1ldGVycyA9IFtwLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGZvciBwIGluIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZl0KLSAgICAgICAgICAgIGlmIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZlswXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWToKLSAgICAgICAgICAgICAgICBhc3NlcnQgYWxsKHBvc2l0aW9uYWxfb25seV9wYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQorICAgICAgICBwb3NpdGlvbmFsX29ubHkgPSBUcnVlCisgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnNbMTpdOgorICAgICAgICAgICAgaWYgbm90IHAuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICAgICAgcG9zaXRpb25hbF9vbmx5ID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHBvc2l0aW9uYWxfb25seQorICAgICAgICAgICAgaWYgcG9zaXRpb25hbF9vbmx5OgorICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIGRvbid0IHB1dCBhbnkgcmlnaHQgYnJhY2tldHMgYXJvdW5kIG5vbi1wb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycywgZXZlci4KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IDAKKyAgICAgICAgICAgICAgICBwLnJpZ2h0X2JyYWNrZXRfY291bnQgPSAwCiAKICAgICAgICAgcmlnaHRfYnJhY2tldF9jb3VudCA9IDAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZGVtby9zczEucHkgYi9Ub29scy9kZW1vL3NzMS5weQppbmRleCBjNTFmMDQxLi5iZjg4ODIwIDEwMDc1NQotLS0gYS9Ub29scy9kZW1vL3NzMS5weQorKysgYi9Ub29scy9kZW1vL3NzMS5weQpAQCAtNDEzLDcgKzQxMyw3IEBACiAKICAgICBkZWYgcmVudW1iZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIGR4LCBkeSk6CiAgICAgICAgIG91dCA9IFtdCi0gICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KCcoXHcrKScsIHNlbGYuZm9ybXVsYSk6CisgICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KHInKFx3KyknLCBzZWxmLmZvcm11bGEpOgogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCdeKFtBLVpdKykoWzEtOV1bMC05XSopJCcsIHBhcnQpCiAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN4LCBzeSA9IG0uZ3JvdXBzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CmluZGV4IDQ0ZWRkNTcuLmQ2MDJmNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQpAQCAtMTI0LDkgKzEyNCw3IEBACiAKICAgICAjIGRlZmF1bHQgdGhlIGV4Y2x1ZGUgbGlzdCBmb3IgZWFjaCBwbGF0Zm9ybQogICAgIGlmIHdpbjogZXhjbHVkZSA9IGV4Y2x1ZGUgKyBbCi0gICAgICAgICdkb3MnLCAnZG9zcGF0aCcsICdtYWMnLCAnbWFjcGF0aCcsICdtYWNmcycsICdNQUNGUycsICdwb3NpeCcsCi0gICAgICAgICdjZScsCi0gICAgICAgIF0KKyAgICAgICAgJ2RvcycsICdkb3NwYXRoJywgJ21hYycsICdtYWNwYXRoJywgJ21hY2ZzJywgJ01BQ0ZTJywgJ3Bvc2l4JywgXQogCiAgICAgZmFpbF9pbXBvcnQgPSBleGNsdWRlWzpdCiAKQEAgLTIxOCw3ICsyMTYsNyBAQAogICAgIGlzaG9tZSA9IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwcmVmaXgsICdQeXRob24nLCAnY2V2YWwuYycpKQogCiAgICAgIyBsb2NhdGlvbnMgZGVyaXZlZCBmcm9tIG9wdGlvbnMKLSAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb25bOjNdCisgICAgdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgIGZsYWdnZWRfdmVyc2lvbiA9IHZlcnNpb24gKyBzeXMuYWJpZmxhZ3MKICAgICBpZiB3aW46CiAgICAgICAgIGV4dGVuc2lvbnNfYyA9ICdmcm96ZW5fZXh0ZW5zaW9ucy5jJwpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weSBiL1Rvb2xzL2ZyZWV6ZS93aW5tYWtlbWFrZWZpbGUucHkKaW5kZXggMzkwZDhhYy4uOWJiM2U2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weQorKysgYi9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5CkBAIC05NSw3ICs5NSw3IEBACiAgICAgcHJpbnQoKQogCiAgICAgcHJpbnQoJyQodGVtcF9kaXIpOicpCi0gICAgcHJpbnQoJyAgaWYgbm90IGV4aXN0ICQodGVtcF9kaXIpXC4gbWtkaXIgJCh0ZW1wX2RpciknKQorICAgIHByaW50KHInICBpZiBub3QgZXhpc3QgJCh0ZW1wX2RpcilcLiBta2RpciAkKHRlbXBfZGlyKScpCiAgICAgcHJpbnQoKQogCiAgICAgb2JqZWN0cyA9IFtdCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGUpCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGJhc2UpCiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChiYXNlICsgIi5vYmoiKQotICAgICAgICAgICAgcHJpbnQoJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCisgICAgICAgICAgICBwcmludChyJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCiAgICAgICAgICAgICBwcmludCgiXHRAJChDQykgLWMgLW5vbG9nbyAvRm8kKiAkKGNkbCkgJChjX2RlYnVnKSAvRCBCVUlMRF9GUkVFWkUiLCBlbmQ9JyAnKQogICAgICAgICAgICAgcHJpbnQoJyItSSQocHl0aG9uaG9tZSkvSW5jbHVkZSIgICItSSQocHl0aG9uaG9tZSkvUEMiIFxcJykKICAgICAgICAgICAgIHByaW50KCJcdFx0JChjZmxhZ3MpICQoY2RlYnVnKSAkKGNpbmNsdWRlKSBcXCIpCkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICBwcmludCgpIDsgcHJpbnQoKQogCiAgICAgcHJpbnQoIk9CSlM9IiwgZW5kPScgJykKLSAgICBmb3Igb2JqIGluIG9iamVjdHM6IHByaW50KCciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQorICAgIGZvciBvYmogaW4gb2JqZWN0czogcHJpbnQociciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQogICAgIHByaW50KCkgOyBwcmludCgpCiAKICAgICBwcmludCgiTElCUz0iLCBlbmQ9JyAnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weSBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKaW5kZXggNzVmMWNjYi4uM2U5NWI0NCAxMDA3NTUKLS0tIGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQorKysgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CkBAIC00NCw3ICs0NCw3IEBACiAjIE5PVEU6IHNvbWUgZ2RicyBhcmUgbGlua2VkIHdpdGggUHl0aG9uIDMsIHNvIHRoaXMgZmlsZSBzaG91bGQgYmUgZHVhbC1zeW50YXgKICMgY29tcGF0aWJsZSAoMi42KyBhbmQgMy4wKykuICBTZWUgIzE5MzA4LgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uLCB3aXRoX3N0YXRlbWVudAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGdkYgogaW1wb3J0IG9zCiBpbXBvcnQgbG9jYWxlCmRpZmYgLS1naXQgYS9Ub29scy9oZy9oZ3RvdWNoLnB5IGIvVG9vbHMvaGcvaGd0b3VjaC5weQppbmRleCAxMTlkODEyLi5mYmNhNDY5IDEwMDY0NAotLS0gYS9Ub29scy9oZy9oZ3RvdWNoLnB5CisrKyBiL1Rvb2xzL2hnL2hndG91Y2gucHkKQEAgLTcsNyArNyw2IEBACiAKIEluIGFkZGl0aW9uIHRvIHRoZSBkZXBlbmRlbmN5IHN5bnRheCwgIy1jb21tZW50cyBhcmUgc3VwcG9ydGVkLgogIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBpbXBvcnQgZXJybm8KIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5IGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKaW5kZXggZGE0MjQzOC4uOGVmNWZmOCAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkKKysrIGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKQEAgLTE1Niw3ICsxNTYsOCBAQAogIiIiKQogCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCBnbG9iCiBpbXBvcnQgdGltZQpAQCAtMjYzLDggKzI2NCw3IEBACiAgICAgIyBnZXQgZXh0ZW5zaW9uIGZvciBweXRob24gc291cmNlIGZpbGVzCiAgICAgaWYgJ19weV9leHQnIG5vdCBpbiBnbG9iYWxzKCk6CiAgICAgICAgIGdsb2JhbCBfcHlfZXh0Ci0gICAgICAgIF9weV9leHQgPSBbdHJpcGxlWzBdIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpCi0gICAgICAgICAgICAgICAgICAgaWYgdHJpcGxlWzJdID09IGltcC5QWV9TT1VSQ0VdWzBdCisgICAgICAgIF9weV9leHQgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1swXQogCiAgICAgIyBkb24ndCByZWN1cnNlIGludG8gQ1ZTIGRpcmVjdG9yaWVzCiAgICAgaWYgJ0NWUycgaW4gbmFtZXM6CkBAIC0yNzcsNDUgKzI3Nyw2IEBACiAgICAgICAgICkKIAogCi1kZWYgX2dldF9tb2Rwa2dfcGF0aChkb3R0ZWRfbmFtZSwgcGF0aGxpc3Q9Tm9uZSk6Ci0gICAgIiIiR2V0IHRoZSBmaWxlc3lzdGVtIHBhdGggZm9yIGEgbW9kdWxlIG9yIGEgcGFja2FnZS4KLQotICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCB0byBhIGZpbGUgZm9yIGEgbW9kdWxlLCBhbmQgdG8gYSBkaXJlY3RvcnkgZm9yCi0gICAgYSBwYWNrYWdlLiBSZXR1cm4gTm9uZSBpZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIG9yIGlzIGEgYnVpbHRpbiBvcgotICAgIGV4dGVuc2lvbiBtb2R1bGUuCi0gICAgIiIiCi0gICAgIyBzcGxpdCBvZmYgdG9wLW1vc3QgbmFtZQotICAgIHBhcnRzID0gZG90dGVkX25hbWUuc3BsaXQoJy4nLCAxKQotCi0gICAgaWYgbGVuKHBhcnRzKSA+IDE6Ci0gICAgICAgICMgd2UgaGF2ZSBhIGRvdHRlZCBwYXRoLCBpbXBvcnQgdG9wLWxldmVsIHBhY2thZ2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKHBhcnRzWzBdLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6IGZpbGUuY2xvc2UoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICMgY2hlY2sgaWYgaXQncyBpbmRlZWQgYSBwYWNrYWdlCi0gICAgICAgIGlmIGRlc2NyaXB0aW9uWzJdID09IGltcC5QS0dfRElSRUNUT1JZOgotICAgICAgICAgICAgIyByZWN1cnNpdmVseSBoYW5kbGUgdGhlIHJlbWFpbmluZyBuYW1lIHBhcnRzCi0gICAgICAgICAgICBwYXRobmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgocGFydHNbMV0sIFtwYXRobmFtZV0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICBlbHNlOgotICAgICAgICAjIHBsYWluIG5hbWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKAotICAgICAgICAgICAgICAgIGRvdHRlZF9uYW1lLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBpZiBkZXNjcmlwdGlvblsyXSBub3QgaW4gW2ltcC5QWV9TT1VSQ0UsIGltcC5QS0dfRElSRUNUT1JZXToKLSAgICAgICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGF0aG5hbWUgPSBOb25lCi0KLSAgICByZXR1cm4gcGF0aG5hbWUKLQotCiBkZWYgZ2V0RmlsZXNGb3JOYW1lKG5hbWUpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgbW9kdWxlIGZpbGVzIGZvciBhIGZpbGVuYW1lLCBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsCiAgICAgb3IgYSBkaXJlY3RvcnkuCkBAIC0zMzAsNyArMjkxLDExIEBACiAgICAgICAgICAgICByZXR1cm4gbGlzdAogCiAgICAgICAgICMgdHJ5IHRvIGZpbmQgbW9kdWxlIG9yIHBhY2thZ2UKLSAgICAgICAgbmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgobmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICAgICAgbmFtZSA9IHNwZWMub3JpZ2luCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKaW5kZXggMWZhMmRjYi4uZTdkMjI1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKKysrIGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKQEAgLTM1LDcgKzM1LDcgQEAKIHNldCBCVUlMRFg2ND0NCiBzZXQgVEFSR0VUPVJlYnVpbGQNCiBzZXQgVEVTVFRBUkdFVERJUj0NCi1zZXQgUEdPPQ0KK3NldCBQR089ZGVmYXVsdA0KIHNldCBCVUlMRE5VR0VUPTENCiBzZXQgQlVJTERaSVA9MQ0KIA0KQEAgLTU3LDYgKzU3LDcgQEAKIGlmICIlMSIgRVFVICIteDg2IiAoc2V0IEJVSUxEWDg2PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi14NjQiIChzZXQgQlVJTERYNjQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiBpZiAiJTEiIEVRVSAiLS1wZ28iIChzZXQgUEdPPSV+MikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCitpZiAiJTEiIEVRVSAiLS1za2lwLXBnbyIgKHNldCBQR089KSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIGlmICIlMSIgRVFVICItLXNraXAtbnVnZXQiIChzZXQgQlVJTEROVUdFVD0pICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi0tc2tpcC16aXAiIChzZXQgQlVJTERaSVA9KSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIA0KQEAgLTEwOSwyMCArMTEwLDE1IEBACiANCiBpZiAiJTEiIEVRVSAieDg2IiAoDQogICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KKyAgICBzZXQgUEdPPQ0KICAgICBzZXQgQlVJTEQ9JVBDQlVJTEQld2luMzJcDQogICAgIHNldCBCVUlMRF9QTEFUPVdpbjMyDQogICAgIHNldCBPVVRESVJfUExBVD13aW4zMg0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDg2DQotKSBlbHNlIGlmICIlfjIiIE5FUSAiIiAoDQotICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQotICAgIHNldCBQR089JX4yDQotICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NC1wZ29cDQotICAgIHNldCBCVUlMRF9QTEFUPXg2NA0KLSAgICBzZXQgT1VURElSX1BMQVQ9YW1kNjQNCi0gICAgc2V0IE9CSkRJUl9QTEFUPXg2NA0KICkgZWxzZSAoDQogICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQogICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NFwNCisgICAgc2V0IFBHTz0lfjINCiAgICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQogICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQpAQCAtMTc4LDEyICsxNzQsMTggQEAKICAgICBAZWNobyBvZmYNCiApDQogDQotc2V0IEJVSUxET1BUUz0vcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCi1pZiAiJVBHTyUiIE5FUSAiIiBzZXQgQlVJTERPUFRTPSVCVUlMRE9QVFMlIC9wOlBHT0J1aWxkUGF0aD0lQlVJTEQlDQotbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQotbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2Vsb2NhbC53aXhwcm9qIiAvdDpSZWJ1aWxkIC9wOlBsYXRmb3JtPSUxICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD10cnVlDQoraWYgIiVPVVRESVJfUExBVCUiIEVRVSAid2luMzIiICgNCisgICAgbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKSBlbHNlIGlmIG5vdCBleGlzdCAiJVBDQlVJTEQld2luMzJcZW4tdXNcbGF1bmNoZXIubXNpIiAoDQorICAgIG1zYnVpbGQgIiVEJWxhdW5jaGVyXGxhdW5jaGVyLndpeHByb2oiIC9wOlBsYXRmb3JtPXg4NiAlQ0VSVE9QVFMlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitzZXQgQlVJTERPUFRTPS9wOlBsYXRmb3JtPSUxIC9wOkJ1aWxkRm9yUmVsZWFzZT10cnVlIC9wOkRvd25sb2FkVXJsPSVET1dOTE9BRF9VUkwlIC9wOkRvd25sb2FkVXJsQmFzZT0lRE9XTkxPQURfVVJMX0JBU0UlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9dHJ1ZQ0KIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQotbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvaiIgL3Q6UmVidWlsZCAvcDpQbGF0Zm9ybT0lMSAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9ZmFsc2UNCittc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZXdlYi53aXhwcm9qIiAvdDpSZWJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD1mYWxzZQ0KIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQogDQogaWYgZGVmaW5lZCBCVUlMRFpJUCAoDQpAQCAtMjA5LDcgKzIxMSw3IEBACiANCiA6SGVscA0KIGVjaG8gYnVpbGRyZWxlYXNlLmJhdCBbLS1vdXQgRElSXSBbLXg4Nl0gWy14NjRdIFstLWNlcnRpZmljYXRlIENFUlROQU1FXSBbLS1idWlsZF0gWy0tcGdvIENPTU1BTkRdDQotZWNobyAgICAgICAgICAgICAgICAgIFstLXNraXAtYnVpbGRdIFstLXNraXAtZG9jXSBbLS1za2lwLW51Z2V0XSBbLS1za2lwLXppcF0NCitlY2hvICAgICAgICAgICAgICAgICAgWy0tc2tpcC1idWlsZF0gWy0tc2tpcC1kb2NdIFstLXNraXAtbnVnZXRdIFstLXNraXAtemlwXSBbLS1za2lwLXBnb10NCiBlY2hvICAgICAgICAgICAgICAgICAgWy0tZG93bmxvYWQgRE9XTkxPQUQgVVJMXSBbLS10ZXN0IFRBUkdFVERJUl0NCiBlY2hvICAgICAgICAgICAgICAgICAgWy1oXQ0KIGVjaG8uDQpAQCAtMjE5LDYgKzIyMSw4IEBACiBlY2hvICAgIC0tYnVpbGQgKC1iKSAgICAgICAgSW5jcmVtZW50YWxseSBidWlsZCBQeXRob24gcmF0aGVyIHRoYW4gcmVidWlsZGluZw0KIGVjaG8gICAgLS1za2lwLWJ1aWxkICgtQikgICBEbyBub3QgYnVpbGQgUHl0aG9uIChqdXN0IGRvIHRoZSBpbnN0YWxsZXJzKQ0KIGVjaG8gICAgLS1za2lwLWRvYyAoLUQpICAgICBEbyBub3QgYnVpbGQgZG9jdW1lbnRhdGlvbg0KK2VjaG8gICAgLS1wZ28gICAgICAgICAgICAgICBTcGVjaWZ5IFBHTyBjb21tYW5kIGZvciB4NjQgaW5zdGFsbGVycw0KK2VjaG8gICAgLS1za2lwLXBnbyAgICAgICAgICBCdWlsZCB4NjQgaW5zdGFsbGVycyB1c2luZyBQR08NCiBlY2hvICAgIC0tc2tpcC1udWdldCAgICAgICAgRG8gbm90IGJ1aWxkIE51Z2V0IHBhY2thZ2VzDQogZWNobyAgICAtLXNraXAtemlwICAgICAgICAgIERvIG5vdCBidWlsZCBlbWJlZGRhYmxlIHBhY2thZ2UNCiBlY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgdXNpbmcgUEdPDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobSBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KaW5kZXggNGQ5Yzk3YS4uMWMwYmQwOCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQorKysgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtCkBAIC0xMTYsMTAgKzExNiwxMSBAQAogICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM2IiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc0hlYWRlcik8L1RleHQ+CiAgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTc4IiBIZWlnaHQ9IjM4MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgogCi0gICAgICAgIDxIeXBlcnRleHQgTmFtZT0iU3VjY2Vzc1RleHQiIFg9IjIwNSIgWT0iNzEiIFdpZHRoPSItMzEiIEhlaWdodD0iMTAwIiBGb250SWQ9IjMiIERpc2FibGVQcmVmaXg9InllcyI+PC9IeXBlcnRleHQ+CisgICAgICAgIDxIeXBlcnRleHQgTmFtZT0iU3VjY2Vzc1RleHQiIFg9IjIwNSIgWT0iNzEiIFdpZHRoPSItNzEiIEhlaWdodD0iMTUwIiBGb250SWQ9IjMiIERpc2FibGVQcmVmaXg9InllcyI+PC9IeXBlcnRleHQ+CiAKLSAgICAgICAgPFRleHQgTmFtZT0iU3VjY2Vzc1Jlc3RhcnRUZXh0IiBYPSIyMDUiIFk9Ii0xMDAiIFdpZHRoPSItMTEiIEhlaWdodD0iMzQiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0VGV4dCk8L1RleHQ+Ci0gICAgICAgIDxCdXR0b24gTmFtZT0iTGF1bmNoQnV0dG9uIiBYPSIxODUiIFk9Ii01MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEYiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc0xhdW5jaEJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJTdWNjZXNzTWF4UGF0aEJ1dHRvbiIgWD0iMTg1IiBZPSItNzAiIFdpZHRoPSItMTEiIEhlaWdodD0iODEiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhFIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NNYXhQYXRoQnV0dG9uKTwvQnV0dG9uPgorCisgICAgICAgIDxUZXh0IE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgWD0iMjA1IiBZPSItNDAiIFdpZHRoPSItMTEiIEhlaWdodD0iMzQiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0VGV4dCk8L1RleHQ+CiAgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc1Jlc3RhcnRCdXR0b24iIFg9Ii0xMDEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydEJ1dHRvbik8L0J1dHRvbj4KICAgICAgICAgPEJ1dHRvbiBOYW1lPSJTdWNjZXNzQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2xvc2VCdXR0b24pPC9CdXR0b24+CiAgICAgPC9QYWdlPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bCBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKaW5kZXggZWQ3OTI0Ni4uNDM1MDZkNiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bAorKysgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCkBAIC0xNDIsNCArMTQyLDcgQEAKICAgPFN0cmluZyBJZD0iRmFpbHVyZVdTMkszT3JFYXJsaWVyIj5XaW5kb3dzIFNlcnZlciAyMDA4IFNQMiBvciBsYXRlciBpcyByZXF1aXJlZCB0byBpbnN0YWxsIGFuZCB1c2UgW1dpeEJ1bmRsZU5hbWVdLgogCiBWaXNpdCAmbHQ7YSBocmVmPSJodHRwczovL3d3dy5weXRob24ub3JnLyImZ3Q7cHl0aG9uLm9yZyZsdDsvYSZndDsgdG8gZG93bmxvYWQgUHl0aG9uIDMuNC48L1N0cmluZz4KKworICA8U3RyaW5nIElkPSJTdWNjZXNzTWF4UGF0aEJ1dHRvbiI+RGlzYWJsZSBwYXRoIGxlbmd0aCBsaW1pdDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzTWF4UGF0aEJ1dHRvbk5vdGUiPkNoYW5nZXMgeW91ciBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gdG8gYWxsb3cgcHJvZ3JhbXMsIGluY2x1ZGluZyBQeXRob24sIHRvIGJ5cGFzcyB0aGUgMjYwIGNoYXJhY3RlciAiTUFYX1BBVEgiIGxpbWl0YXRpb24uPC9TdHJpbmc+CiA8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcCBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcAppbmRleCA2YTY3ZWUyLi5lODg5ODFmIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCkBAIC0xMSwxMCArMTEsNiBAQAogI2luY2x1ZGUgInBjaC5oIgogCiBzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1dJTkRPV19DTEFTUyA9IEwiUHl0aG9uQkEiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEggPSBMIkxhdW5jaFRhcmdldCI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQgPSBMIkxhdW5jaFRhcmdldEVsZXZhdGVkSWQiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTID0gTCJMYXVuY2hBcmd1bWVudHMiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfSElEREVOID0gTCJMYXVuY2hIaWRkZW4iOwogc3RhdGljIGNvbnN0IERXT1JEIFBZQkFfQUNRVUlSRV9QRVJDRU5UQUdFID0gMzA7CiBzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0JVTkRMRV9GSUxFX1ZFUlNJT04gPSBMIldpeEJ1bmRsZUZpbGVWZXJzaW9uIjsKIApAQCAtMTI5LDExICsxMjUsMTEgQEAKICAgICBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLAogCiAgICAgLy8gU3VjY2VzcyBwYWdlCi0gICAgSURfTEFVTkNIX0JVVFRPTiwKICAgICBJRF9TVUNDRVNTX1RFWFQsCiAgICAgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsCiAgICAgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwKICAgICBJRF9TVUNDRVNTX0NBTkNFTF9CVVRUT04sCisgICAgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sCiAKICAgICAvLyBGYWlsdXJlIHBhZ2UKICAgICBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywKQEAgLTE4OCwxMSArMTg0LDExIEBACiAgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsIEwiT3ZlcmFsbFByb2dyZXNzVGV4dCIgfSwKICAgICB7IElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sIEwiUHJvZ3Jlc3NDYW5jZWxCdXR0b24iIH0sCiAKLSAgICB7IElEX0xBVU5DSF9CVVRUT04sIEwiTGF1bmNoQnV0dG9uIiB9LAogICAgIHsgSURfU1VDQ0VTU19URVhULCBMIlN1Y2Nlc3NUZXh0IiB9LAogICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsIEwiU3VjY2Vzc1Jlc3RhcnRUZXh0IiB9LAogICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwgTCJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgfSwKICAgICB7IElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJTdWNjZXNzQ2FuY2VsQnV0dG9uIiB9LAorICAgIHsgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEwiU3VjY2Vzc01heFBhdGhCdXR0b24iIH0sCiAKICAgICB7IElEX0ZBSUxVUkVfTE9HRklMRV9MSU5LLCBMIkZhaWx1cmVMb2dGaWxlTGluayIgfSwKICAgICB7IElEX0ZBSUxVUkVfTUVTU0FHRV9URVhULCBMIkZhaWx1cmVNZXNzYWdlVGV4dCIgfSwKQEAgLTQzNiw2ICs0MzIsMTEgQEAKICAgICAgICAgY2FzZSBJRF9VTklOU1RBTExfQlVUVE9OOgogICAgICAgICAgICAgT25QbGFuKEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMKTsKICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT046CisgICAgICAgICAgICBFbmFibGVNYXhQYXRoU3VwcG9ydCgpOworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICBMRXhpdDoKQEAgLTUzMyw5ICs1MzQsOCBAQAogICAgIH0KIAogICAgIHZvaWQgU3VjY2Vzc1BhZ2VfU2hvdygpIHsKLSAgICAgICAgLy8gb24gdGhlICJTdWNjZXNzIiBwYWdlLCBjaGVjayBpZiB0aGUgcmVzdGFydCBvciBsYXVuY2ggYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkLgorICAgICAgICAvLyBvbiB0aGUgIlN1Y2Nlc3MiIHBhZ2UsIGNoZWNrIGlmIHRoZSByZXN0YXJ0IGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZC4KICAgICAgICAgQk9PTCBzaG93UmVzdGFydEJ1dHRvbiA9IEZBTFNFOwotICAgICAgICBCT09MIGxhdW5jaFRhcmdldEV4aXN0cyA9IEZBTFNFOwogICAgICAgICBMT0NfU1RSSU5HICpzdWNjZXNzVGV4dCA9IG51bGxwdHI7CiAgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOwogICAgICAgICAKQEAgLTU0Myw4ICs1NDMsNiBAQAogICAgICAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRVNUQVJUX1BST01QVCA9PSBfY29tbWFuZC5yZXN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgc2hvd1Jlc3RhcnRCdXR0b24gPSBUUlVFOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKFRoZW1lQ29udHJvbEV4aXN0cyhfdGhlbWUsIElEX0xBVU5DSF9CVVRUT04pKSB7Ci0gICAgICAgICAgICBsYXVuY2hUYXJnZXRFeGlzdHMgPSBCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCk7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKF9wbGFubmVkQWN0aW9uKSB7CkBAIC01NzEsOSArNTY5LDQxIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9MQVVOQ0hfQlVUVE9OLCBsYXVuY2hUYXJnZXRFeGlzdHMgJiYgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwgPCBfcGxhbm5lZEFjdGlvbik7CiAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULCBzaG93UmVzdGFydEJ1dHRvbik7CiAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sIHNob3dSZXN0YXJ0QnV0dG9uKTsKKworICAgICAgICBpZiAoX2NvbW1hbmQuYWN0aW9uICE9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTCB8fAorICAgICAgICAgICAgIUlzV2luZG93c1ZlcnNpb25PckdyZWF0ZXIoMTAsIDAsIDApKSB7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgRkFMU0UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgRFdPUkQgZGF0YVR5cGUgPSAwLCBidWZmZXIgPSAwLCBidWZmZXJMZW4gPSBzaXplb2YoYnVmZmVyKTsKKyAgICAgICAgICAgIEhLRVkgaEtleTsKKyAgICAgICAgICAgIExSRVNVTFQgcmVzID0gUmVnT3BlbktleUV4VygKKyAgICAgICAgICAgICAgICBIS0VZX0xPQ0FMX01BQ0hJTkUsCisgICAgICAgICAgICAgICAgTCJTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxGaWxlU3lzdGVtIiwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIEtFWV9SRUFELAorICAgICAgICAgICAgICAgICZoS2V5CisgICAgICAgICAgICApOworICAgICAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgcmVzID0gUmVnUXVlcnlWYWx1ZUV4VyhoS2V5LCBMIkxvbmdQYXRoc0VuYWJsZWQiLCBudWxscHRyLCAmZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpJmJ1ZmZlciwgJmJ1ZmZlckxlbik7CisgICAgICAgICAgICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkZhaWxlZCB0byBvcGVuIFNZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXEZpbGVTeXN0ZW06IGVycm9yIGNvZGUgJWQiLCByZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTICYmIGRhdGFUeXBlID09IFJFR19EV09SRCAmJiBidWZmZXIgPT0gMCkgeworICAgICAgICAgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIFRSVUUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkZhaWxlZCB0byByZWFkIExvbmdQYXRoc0VuYWJsZWQgdmFsdWU6IGVycm9yIGNvZGUgJWQiLCByZXMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJIaWRpbmcgTUFYX1BBVEggYnV0dG9uIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBlbmFibGVkIik7CisgICAgICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgRmFpbHVyZVBhZ2VfU2hvdygpIHsKQEAgLTYyNiw2ICs2NTYsMzQgQEAKICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfRkFJTFVSRV9SRVNUQVJUX0JVVFRPTiwgc2hvd1Jlc3RhcnRCdXR0b24pOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIEVuYWJsZU1heFBhdGhTdXBwb3J0KCkgeworICAgICAgICBMUFdTVFIgdGFyZ2V0RGlyID0gbnVsbHB0ciwgZGVmYXVsdERpciA9IG51bGxwdHI7CisgICAgICAgIEhSRVNVTFQgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShMIlRhcmdldERpciIsICZ0YXJnZXREaXIpOworICAgICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhdGFyZ2V0RGlyIHx8ICF0YXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiRmFpbGVkIHRvIGdldCBUYXJnZXREaXIiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIExQV1NUUiBweXRob253ID0gbnVsbHB0cjsKKyAgICAgICAgU3RyQWxsb2NGb3JtYXR0ZWQoJnB5dGhvbncsIEwiJWxzXFxweXRob253LmV4ZSIsIHRhcmdldERpcik7CisgICAgICAgIGlmICghcHl0aG9udyB8fCAhcHl0aG9ud1swXSkgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJGYWlsZWQgdG8gY29uc3RydWN0IHB5dGhvbncuZXhlIHBhdGgiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIExQQ1dTVFIgYXJndW1lbnRzID0gTCItYyBcImltcG9ydCB3aW5yZWc7ICIKKyAgICAgICAgICAgICJ3aW5yZWcuU2V0VmFsdWVFeCgiCisgICAgICAgICAgICAgICAgIndpbnJlZy5DcmVhdGVLZXkod2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwgIgorICAgICAgICAgICAgICAgICAgICAicidTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxGaWxlU3lzdGVtJyksICIKKyAgICAgICAgICAgICAgICAiJ0xvbmdQYXRoc0VuYWJsZWQnLCAiCisgICAgICAgICAgICAgICAgIk5vbmUsICIKKyAgICAgICAgICAgICAgICAid2lucmVnLlJFR19EV09SRCwgIgorICAgICAgICAgICAgICAgICIxIgorICAgICAgICAgICAgIilcIiI7CisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRXhlY3V0aW5nICVscyAlbHMiLCBweXRob253LCBhcmd1bWVudHMpOworICAgICAgICBISU5TVEFOQ0UgcmVzID0gU2hlbGxFeGVjdXRlVygwLCBMInJ1bmFzIiwgcHl0aG9udywgYXJndW1lbnRzLCBOVUxMLCBTV19ISURFKTsKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJyZXR1cm4gY29kZSAweCUwOHgiLCByZXMpOworICAgIH0KIAogcHVibGljOiAvLyBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24KICAgICB2aXJ0dWFsIFNURE1FVEhPRElNUCBPblN0YXJ0dXAoKSB7CkBAIC0xMjE2LDEyICsxMjc0LDYgQEAKICAgICB9CiAKICAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8odm9pZCkgT25MYXVuY2hBcHByb3ZlZEV4ZUNvbXBsZXRlKF9faW4gSFJFU1VMVCBoclN0YXR1cywgX19pbiBEV09SRCAvKnByb2Nlc3NJZCovKSB7Ci0gICAgICAgIGlmIChIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfQUNDRVNTX0RFTklFRCkgPT0gaHJTdGF0dXMpIHsKLSAgICAgICAgICAgIC8vdHJ5IHdpdGggU2hlbEV4ZWMgbmV4dCB0aW1lCi0gICAgICAgICAgICBPbkNsaWNrTGF1bmNoQnV0dG9uKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOwotICAgICAgICB9CiAgICAgfQogCiAKQEAgLTE4NjcsMTAgKzE5MTksNiBAQAogICAgICAgICAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICAgICAgLy8gQ3VzdG9taXplIGNvbW1hbmRzCiAgICAgICAgICAgICAvLyBTdWNjZXNzL2ZhaWx1cmUgY29tbWFuZHMKLSAgICAgICAgICAgIGNhc2UgSURfTEFVTkNIX0JVVFRPTjoKLSAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLQogICAgICAgICAgICAgY2FzZSBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOwogICAgICAgICAgICAgY2FzZSBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OOgogICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja1Jlc3RhcnRCdXR0b24oKTsKQEAgLTIzNzIsNjkgKzI0MjAsNiBAQAogICAgIH0KIAogCi0gICAgLy8KLSAgICAvLyBPbkNsaWNrTGF1bmNoQnV0dG9uIC0gbGF1bmNoIHRoZSBhcHAgZnJvbSB0aGUgc3VjY2VzcyBwYWdlLgotICAgIC8vCi0gICAgdm9pZCBPbkNsaWNrTGF1bmNoQnV0dG9uKCkgewotICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKLSAgICAgICAgTFBXU1RSIHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjekxhdW5jaFRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjekFyZ3VtZW50cyA9IG51bGxwdHI7Ci0gICAgICAgIGludCBuQ21kU2hvdyA9IFNXX1NIT1dOT1JNQUw7Ci0KLSAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCwgJnNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKLSAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCB0YXJnZXQgdmFyaWFibGUgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgpOwotCi0gICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0LCAmc2N6TGF1bmNoVGFyZ2V0KTsKLSAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0IGxhdW5jaCB0YXJnZXQgdmFyaWFibGU6ICVscyIsIHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKLQotICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEKSkgewotICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQsICZzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKLSAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggdGFyZ2V0IGVsZXZhdGVkIGlkICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTKSkgewotICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMsICZzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIGFyZ3VtZW50cyAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTikpIHsKLSAgICAgICAgICAgIG5DbWRTaG93ID0gU1dfSElERTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkICYmICFfdHJpZWRUb0xhdW5jaEVsZXZhdGVkKSB7Ci0gICAgICAgICAgICBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkID0gVFJVRTsKLSAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+TGF1bmNoQXBwcm92ZWRFeGUoX2hXbmQsIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQsIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzLCAwKTsKLSAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7Ci0gICAgICAgICAgICAgICAgQmFsTG9nRXJyb3IoaHIsICJGYWlsZWQgdG8gbGF1bmNoIGVsZXZhdGVkIHRhcmdldDogJWxzIiwgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7Ci0KLSAgICAgICAgICAgICAgICAvL3RyeSB3aXRoIFNoZWxFeGVjIG5leHQgdGltZQotICAgICAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cykgewotICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzLCAmc2N6QXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgbGF1bmNoIGFyZ3VtZW50cyB2YXJpYWJsZTogJWxzIiwgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBociA9IFNoZWxFeGVjKHNjekxhdW5jaFRhcmdldCwgc2N6QXJndW1lbnRzLCBMIm9wZW4iLCBudWxscHRyLCBuQ21kU2hvdywgX2hXbmQsIG51bGxwdHIpOwotICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbGF1bmNoIHRhcmdldDogJWxzIiwgc2N6TGF1bmNoVGFyZ2V0KTsKLQotICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKLSAgICAgICAgfQotCi0gICAgTEV4aXQ6Ci0gICAgICAgIFN0clNlY3VyZVplcm9GcmVlU3RyaW5nKHNjekFyZ3VtZW50cyk7Ci0gICAgICAgIFJlbGVhc2VTdHIoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOwotICAgICAgICBSZWxlYXNlU3RyKHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOwotICAgICAgICBTdHJTZWN1cmVaZXJvRnJlZVN0cmluZyhzY3pMYXVuY2hUYXJnZXQpOwotICAgICAgICBSZWxlYXNlU3RyKHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAKICAgICAvLwogICAgIC8vIE9uQ2xpY2tSZXN0YXJ0QnV0dG9uIC0gYWxsb3dzIHRoZSByZXN0YXJ0IGFuZCBjbG9zZXMgdGhlIGFwcC4KQEAgLTMxNTcsNyArMzE0Miw2IEBACiAgICAgICAgIF90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2UgPSBVSU5UX01BWDsKICAgICAgICAgX3Rhc2tiYXJCdXR0b25PSyA9IEZBTFNFOwogICAgICAgICBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZSA9IEZBTFNFOwotICAgICAgICBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkID0gRkFMU0U7CiAKICAgICAgICAgX3N1cHByZXNzUGFpbnQgPSBGQUxTRTsKIApAQCAtMzI0Miw3ICszMjI2LDYgQEAKICAgICBVSU5UIF90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2U7CiAgICAgQk9PTCBfdGFza2JhckJ1dHRvbk9LOwogICAgIEJPT0wgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2U7Ci0gICAgQk9PTCBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkOwogCiAgICAgQk9PTCBfc3VwcHJlc3NQYWludDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWI2MjllLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cwppbmRleCAzODMwN2UwLi5jODllNmVlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCkBAIC00LDcgKzQsNyBAQAogICA8QnVuZGxlIE5hbWU9IiEobG9jLkZ1bGxQcm9kdWN0TmFtZSkiCiAgICAgICAgICAgVXBncmFkZUNvZGU9IiQodmFyLkNvcmVVcGdyYWRlQ29kZSkiCiAgICAgICAgICAgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiCi0gICAgICAgICAgSWNvblNvdXJjZUZpbGU9ImJ1bmRsZS5pY28iCisgICAgICAgICAgSWNvblNvdXJjZUZpbGU9Ii4uXC4uXC4uXFBDXGljb25zXHNldHVwLmljbyIKICAgICAgICAgICBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiCiAgICAgICAgICAgQWJvdXRVcmw9Imh0dHA6Ly93d3cucHl0aG9uLm9yZy8iCiAgICAgICAgICAgRGlzYWJsZU1vZGlmeT0iYnV0dG9uIgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvbW1vbi53eHMgYi9Ub29scy9tc2kvY29tbW9uLnd4cwppbmRleCA0ZWZhZDY1Li4zOThkOTRhIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvY29tbW9uLnd4cworKysgYi9Ub29scy9tc2kvY29tbW9uLnd4cwpAQCAtMSw2ICsxLDEwIEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CiAgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHkgSWQ9IlJPT1RSRUdJU1RSWUtFWSIgVmFsdWU9IlNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlIiAvPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgogICAgICAgICA8UHJvcGVydHkgSWQ9IlJFR0lTVFJZS0VZIiBWYWx1ZT0iU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlB5QXJjaEV4dCkkKHZhci5QeVRlc3RFeHQpIiAvPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCkBAIC0xNiwxMCArMjAsMTIgQEAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iVXBncmFkZVRhYmxlIiBWYWx1ZT0iMSIgLz4KICAgICAgICAgCisgICAgICAgIDw/aWZuZGVmIFN1cHByZXNzVXBncmFkZVRhYmxlID8+CiAgICAgICAgIDxVcGdyYWRlIElkPSIkKHZhci5VcGdyYWRlQ29kZSkiPgogICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJET1dOR1JBREUiIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ibm8iIE9ubHlEZXRlY3Q9InllcyIgLz4KICAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iVVBHUkFERSIgTWluaW11bT0iJCh2YXIuVXBncmFkZU1pbmltdW1WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09InllcyIgTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNYXhpbXVtPSJubyIgLz4KICAgICAgICAgPC9VcGdyYWRlPgorICAgICAgICA8P2VuZGlmID8+CiAgICAgICAgIAogICAgICAgICA8P2lmZGVmIENvcmVVcGdyYWRlQ29kZSA/PgogICAgICAgICA8P2lmICQodmFyLlVwZ3JhZGVDb2RlKSE9JCh2YXIuQ29yZVVwZ3JhZGVDb2RlKSA/PgpAQCAtNDAsNyArNDYsNyBAQAogICAgIAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPCEtLSBJbmNsdWRlIGFuIGljb24gZm9yIHRoZSBQcm9ncmFtcyBhbmQgRmVhdHVyZXMgZGlhbG9nIC0tPgotICAgICAgICA8SWNvbiBJZD0iQVJQSWNvbiIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpUENccHljb24uaWNvIiAvPgorICAgICAgICA8SWNvbiBJZD0iQVJQSWNvbiIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHl0aG9uLmljbyIgLz4KICAgICAgICAgPFByb3BlcnR5IElkPSJBUlBQUk9EVUNUSUNPTiIgVmFsdWU9IkFSUEljb24iIC8+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQTk9NT0RJRlkiIFZhbHVlPSIxIiAvPgogICAgICAgICA8UHJvcGVydHkgSWQ9IkRJU0FCTEVBRFZUU0hPUlRDVVRTIiBWYWx1ZT0iMSIgLz4KQEAgLTU3LDcgKzYzLDkgQEAKICAgICA8IS0tIFRvcC1sZXZlbCBkaXJlY3RvcmllcyAtLT4KICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgotICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iRExMcyIgTmFtZT0iRExMcyIgLz4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkRMTHMiIE5hbWU9IkRMTHMiPgorICAgICAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkNhdGFsb2dzIiAvPgorICAgICAgICAgICAgPC9EaXJlY3Rvcnk+CiAgICAgICAgIDwvRGlyZWN0b3J5UmVmPgogICAgIDwvRnJhZ21lbnQ+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUKaW5kZXggOGQwMzUyNi4uYzk1YzI3MSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUKKysrIGIvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTE0LDQgKzE0LDUgQEAKICAgICA8U3RyaW5nIElkPSJOb0Rvd25ncmFkZSI+QSBuZXdlciB2ZXJzaW9uIG9mICEobG9jLlByb2R1Y3ROYW1lKSBpcyBhbHJlYWR5IGluc3RhbGxlZC48L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJJbmNvcnJlY3RDb3JlIj5BbiBpbmNvcnJlY3QgdmVyc2lvbiBvZiBhIHByZXJlcXVpc2l0ZSBwYWNrYWdlIGlzIGluc3RhbGxlZC4gUGxlYXNlIHVuaW5zdGFsbCBhbnkgb3RoZXIgdmVyc2lvbnMgb2YgIShsb2MuUHJvZHVjdE5hbWUpIGFuZCB0cnkgaW5zdGFsbGluZyB0aGlzIGFnYWluLjwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9Ik5vVGFyZ2V0RGlyIj5UaGUgVEFSR0VURElSIHZhcmlhYmxlIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBpbnZva2luZyB0aGlzIGluc3RhbGxlci48L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJNYW51ZmFjdHVyZXJTdXBwb3J0VXJsIj5odHRwOi8vd3d3LnB5dGhvbi5vcmcvPC9TdHJpbmc+CiA8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCmluZGV4IGQyNmE2MDMuLjI0ZGYwZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagpAQCAtMTQsNiArMTQsNyBAQAogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZS53eHMiIC8+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9yZWcud3hzIiAvPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGUud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGUud3hzCmluZGV4IDE1NGNlZTUuLjAzZDQzYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlLnd4cworKysgYi9Ub29scy9tc2kvZXhlL2V4ZS53eHMKQEAgLTksNiArOSw3IEBACiAgICAgICAgIAogICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob24iIFByaW1hcnk9InllcyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3JlZyIgUHJpbWFyeT0ieWVzIiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfdHh0IiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfaWNvbnMiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CkBAIC0yNCw3ICsyNSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIC8+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iUmVtb3ZlX01lbnVEaXIiIERpcmVjdG9yeT0iTWVudURpciIgT249InVuaW5zdGFsbCIgLz4KICAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KLSAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsUGF0aFxJbnN0YWxsR3JvdXAiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLlByb2R1Y3ROYW1lKSIgS2V5UGF0aD0ieWVzIiAvPgogICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxlZEZlYXR1cmVzIiBOYW1lPSJTaG9ydGN1dHMiIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLlZlcnNpb24pIiAvPgogICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagppbmRleCAyNzU0NWNhLi5jZjA4NWJlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCkBAIC0xMCw2ICsxMCw3IEBACiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2Qud3hzIiAvPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcmVnLnd4cyIgLz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZSBiL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQppbmRleCA1NzdmYmU1Li4xZjllMjkwIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCkBAIC00LDQgKzQsNSBAQAogICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+ZXhlY3V0YWJsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0TmFtZSI+UHl0aG9uIHt7U2hvcnRWZXJzaW9ufX0gKHt7Qml0bmVzc319KTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0RGVzY3JpcHRpb24iPkxhdW5jaGVzIHRoZSAhKGxvYy5Qcm9kdWN0TmFtZSkgaW50ZXJwcmV0ZXIuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU3VwcG9ydFVybCI+aHR0cDovL3d3dy5weXRob24ub3JnLzwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKaW5kZXggOWU0N2I1ZC4uMDEzODU4NyAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cwpAQCAtMjgsNiArMjgsOSBAQAogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob253LmV4ZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5QeXRob253RXhlQ29tcG9uZW50R3VpZCkiPgogICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbncuZXhlIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbFBhdGgiIE5hbWU9IldpbmRvd2VkRXhlY3V0YWJsZVBhdGgiIFR5cGU9InN0cmluZyIgVmFsdWU9IlsjcHl0aG9udy5leGVdIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ2Y3J1bnRpbWUxNDAuZGxsIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgogICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InZjcnVudGltZTE0MC5kbGwiIFNvdXJjZT0iIShiaW5kcGF0aC5yZWRpc3QpdmNydW50aW1lMTQwLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgpAQCAtNjYsMTAgKzY5LDEzIEBACiAgICAgPEZyYWdtZW50PgogICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9pY29ucyI+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweS5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHkuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXHB5LmljbyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5LmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweS5pY28iIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHljLmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweWMuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXHB5Yy5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweWMuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5Yy5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHlkLmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweWQuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5ZC5pY28iIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCmluZGV4IDRmNGM4NjkuLmJmMTIxM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCkBAIC0xMCw2ICsxMCw3IEBACiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3BkYi53eHMiIC8+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9yZWcud3hzIiAvPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfcmVnLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlX3JlZy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0M2MyMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX3JlZy53eHMKQEAgLTAsMCArMSwyNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJST09UUkVHSVNUUllLRVkiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9yZWciPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iQ29tbW9uUHl0aG9uUmVnaXN0cmF0aW9uIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IiQodmFyLkNvbW1vblB5dGhvblJlZ0NvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUk9PVFJFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IkRpc3BsYXlOYW1lIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlN1cHBvcnRVcmwiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLk1hbnVmYWN0dXJlclN1cHBvcnRVcmwpIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJQeXRob25SZWdpc3RyYXRpb24iIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9uUmVnQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuU2hvcnRjdXROYW1lKSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTdXBwb3J0VXJsIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5TdXBwb3J0VXJsKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlZlcnNpb24iIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLkxvbmdWZXJzaW9uKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlN5c1ZlcnNpb24iIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLlNob3J0VmVyc2lvbikiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTeXNBcmNoaXRlY3R1cmUiIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLlBsYXRmb3JtQXJjaGl0ZWN0dXJlKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKaW5kZXggMDFhOWRjYi4uODkzNWNlOCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKQEAgLTUsNyArNSw3IEBACiAgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KICAgICAgICAgPE91dHB1dE5hbWU+bGF1bmNoZXI8L091dHB1dE5hbWU+CiAgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+Ci0gICAgICAgIDxEZWZpbmVDb25zdGFudHM+VXBncmFkZUNvZGU9MUI2OEEwRUMtNEREMy01MTM0LTg0MEUtNzM4NTRCMDg2M0YxOyQoRGVmaW5lQ29uc3RhbnRzKTwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPlVwZ3JhZGVDb2RlPTFCNjhBMEVDLTRERDMtNTEzNC04NDBFLTczODU0QjA4NjNGMTtTdXBwcmVzc1VwZ3JhZGVUYWJsZT0xOyQoRGVmaW5lQ29uc3RhbnRzKTwvRGVmaW5lQ29uc3RhbnRzPgogICAgICAgICA8SWdub3JlQ29tbW9uV3hsVGVtcGxhdGVzPnRydWU8L0lnbm9yZUNvbW1vbld4bFRlbXBsYXRlcz4KICAgICAgICAgPFN1cHByZXNzSUNFcz5JQ0U4MDwvU3VwcHJlc3NJQ0VzPgogICAgIDwvUHJvcGVydHlHcm91cD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCmluZGV4IGViZDg3NWMuLjdkZTEzMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cwpAQCAtNSw3ICs1LDEwIEBACiAgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CiAgICAgICAgIAogICAgICAgICA8UHJvcGVydHkgSWQ9IlN1cHByZXNzX1RBUkdFVERJUl9DaGVjayIgVmFsdWU9IjEiIC8+Ci0gICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iQVJQUFJPRFVDVElDT04iIC8+CisgICAgICAgIDxJY29uIElkPSJBUlBJY29uIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xsYXVuY2hlci5pY28iIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQUFJPRFVDVElDT04iIFZhbHVlPSJBUlBJY29uIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUE5PTU9ESUZZIiBWYWx1ZT0iMSIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJESVNBQkxFQURWVFNIT1JUQ1VUUyIgVmFsdWU9IjEiIC8+CiAKICAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsYXVuY2hlcl9leGUiIFByaW1hcnk9InllcyIgLz4KQEAgLTI2LDE4ICsyOSwyMSBAQAogICAgICAgICAgICAgPEN1c3RvbSBCZWZvcmU9IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUxNIiBBY3Rpb249IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUNVIj5OT1QgSW5zdGFsbGVkIEFORCBOT1QgQUxMVVNFUlM9MTwvQ3VzdG9tPgogICAgICAgICAgICAgPEN1c3RvbSBCZWZvcmU9IkNvc3RGaW5hbGl6ZSIgQWN0aW9uPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSI+Tk9UIEluc3RhbGxlZCBBTkQgQUxMVVNFUlM9MTwvQ3VzdG9tPgogCi0gICAgICAgICAgICA8UmVtb3ZlRXhpc3RpbmdQcm9kdWN0cyBBZnRlcj0iSW5zdGFsbFZhbGlkYXRlIj5VUEdSQURFIG9yIFJFTU9WRV8zNTBfTEFVTkNIRVI8L1JlbW92ZUV4aXN0aW5nUHJvZHVjdHM+CisgICAgICAgICAgICA8UmVtb3ZlRXhpc3RpbmdQcm9kdWN0cyBBZnRlcj0iSW5zdGFsbFZhbGlkYXRlIj5VUEdSQURFIG9yIFJFTU9WRV8zNTBfTEFVTkNIRVIgb3IgUkVNT1ZFXzM2MEExX0xBVU5DSEVSPC9SZW1vdmVFeGlzdGluZ1Byb2R1Y3RzPgogICAgICAgICA8L0luc3RhbGxFeGVjdXRlU2VxdWVuY2U+CiAKKyAgICAgICAgPCEtLSBVcGdyYWRlIGFsbCB2ZXJzaW9ucyBvZiB0aGUgbGF1bmNoZXIgLS0+CisgICAgICAgIDxVcGdyYWRlIElkPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJET1dOR1JBREUiIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ibm8iIE9ubHlEZXRlY3Q9InllcyIgLz4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iVVBHUkFERSIgTWluaW11bT0iMC4wLjAuMCIgSW5jbHVkZU1pbmltdW09InllcyIgTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNYXhpbXVtPSJubyIgLz4KKyAgICAgICAgPC9VcGdyYWRlPgogICAgICAgICA8IS0tIFB5dGhvbiAzLjUuMCBzaGlwcGVkIHdpdGggYSBkaWZmZXJlbnQgVXBncmFkZUNvZGUgLS0+CiAgICAgICAgIDxVcGdyYWRlIElkPSJBNzE1MzBCOS1FODlELTUzREItOUMyRC1DNkQ3NTUxODc2RDgiPgogICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIE1pbmltdW09IjAuMC4wLjAiIFByb3BlcnR5PSJSRU1PVkVfMzUwX0xBVU5DSEVSIiAvPgogICAgICAgICA8L1VwZ3JhZGU+CiAgICAgICAgIDwhLS0gUHl0aG9uIDMuNi4wYTEgc2hpcHBlZCB3aXRoIGEgZGlmZmVyZW50IFVwZ3JhZGVDb2RlIC0tPgogICAgICAgICA8VXBncmFkZSBJZD0iMzk0NzUwQzAtNzg4MC01QThGLTk5OUYtOTMzOTY1RkJDRkI0Ij4KLSAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNYXhpbXVtPSIkKHZhci5WZXJzaW9uKSIgUHJvcGVydHk9IlJFTU9WRV8zNjBBMV9MQVVOQ0hFUiIgLz4KLSAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgUHJvcGVydHk9IkJMT0NLXzM2MEExX0xBVU5DSEVSIiAvPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIE1pbmltdW09IjAuMC4wLjAiIFByb3BlcnR5PSJSRU1PVkVfMzYwQTFfTEFVTkNIRVIiIC8+CiAgICAgICAgIDwvVXBncmFkZT4KLSAgICAgICAgPENvbmRpdGlvbiBNZXNzYWdlPSIhKGxvYy5Ob0Rvd25ncmFkZSkiPkluc3RhbGxlZCBPUiBOT1QgQkxPQ0tfMzYwQTFfTEFVTkNIRVI8L0NvbmRpdGlvbj4KICAgICA8L1Byb2R1Y3Q+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCmluZGV4IGU0YzFhYWEuLmE3ZTM4MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bApAQCAtMTEsNiArMTEsNyBAQAogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIEZpbGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJQeXRob25Ob0NvbkZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIEZpbGUgKG5vIGNvbnNvbGUpPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uQ29tcGlsZWRGaWxlRGVzY3JpcHRpb24iPkNvbXBpbGVkIFB5dGhvbiBGaWxlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHl0aG9uRXh0ZW5zaW9uRGVzY3JpcHRpb24iPlB5dGhvbiBFeHRlbnNpb24gTW9kdWxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIFppcCBBcHBsaWNhdGlvbiBGaWxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uIj5QeXRob24gWmlwIEFwcGxpY2F0aW9uIEZpbGUgKG5vIGNvbnNvbGUpPC9TdHJpbmc+CiA8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKaW5kZXggOTgxOTYxYS4uZGFjZTk3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKQEAgLTI3LDE0ICsyNywxOCBAQAogICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgogICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLkNvbXBpbGVkRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0ie0JFQTIxOEQyLTY5NTAtNDk3Qi05NDM0LTYxNjgzRUMwNjVGRX0iIFR5cGU9InN0cmluZyIgLz4KIAotICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLkV4dGVuc2lvbiIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkV4dGVuc2lvbkRlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjMiPgorICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweWQiIC8+CisgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CisKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjUiPgogICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweXoiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxWZXJiIElkPSJvcGVuIiBUYXJnZXRGaWxlPSJweS5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KICAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CiAgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CiAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSJQeXRob24uQXJjaGl2ZUZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9IntCRUEyMThEMi02OTUwLTQ5N0ItOTQzNC02MTY4M0VDMDY1RkV9IiBUeXBlPSJzdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLk5vQ29uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Ob0NvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLk5vQ29uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Ob0NvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iNSI+CiAgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9InB5enciIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxWZXJiIElkPSJvcGVuIiBUYXJnZXRGaWxlPSJweXcuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CiAgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvaiBiL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKaW5kZXggNjRlNTg3OC4uMjYzMTFlYSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvagorKysgYi9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKFB5U291cmNlUGF0aClMaWI8L1RhcmdldEJhc2U+CiAgICAgICAgICAgICA8VGFyZ2V0Xz5MaWJcPC9UYXJnZXRfPgogICAgICAgICAgICAgPEdyb3VwPmxpYl9weTwvR3JvdXA+CisgICAgICAgICAgICA8SW5jbHVkZUluQ2F0PnRydWU8L0luY2x1ZGVJbkNhdD4KICAgICAgICAgPC9JbnN0YWxsRmlsZXM+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYi53eHMgYi9Ub29scy9tc2kvbGliL2xpYi53eHMKaW5kZXggMmIwNGJjYi4uMmEzYjllYyAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xpYi9saWIud3hzCisrKyBiL1Rvb2xzL21zaS9saWIvbGliLnd4cwpAQCAtMTEsNiArMTEsNyBAQAogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfcHkiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9maWxlcyIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2V4dGVuc2lvbnMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9jYXQiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CiAgICAgICAgIDwvRmVhdHVyZT4KICAgICA8L1Byb2R1Y3Q+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMgYi9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKaW5kZXggYTk5Mjc4NC4uYTgzZjU0NCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cwpAQCAtMSw2ICsxLDYgQEAKIO+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CiA8V2l4IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpeC8yMDA2L3dpIj4KLSAgICA8P2RlZmluZSBleHRzPXB5ZXhwYXQ7c2VsZWN0O3VuaWNvZGVkYXRhO3dpbnNvdW5kO19iejI7X2VsZW1lbnR0cmVlO19zb2NrZXQ7X3NzbDtfbXNpO19jdHlwZXM7X2hhc2hsaWI7X211bHRpcHJvY2Vzc2luZztfbHptYTtfZGVjaW1hbDtfb3ZlcmxhcHBlZDtfc3FsaXRlMyA/PgorICAgIDw/ZGVmaW5lIGV4dHM9cHlleHBhdDtzZWxlY3Q7dW5pY29kZWRhdGE7d2luc291bmQ7X2J6MjtfZWxlbWVudHRyZWU7X3NvY2tldDtfc3NsO19tc2k7X2N0eXBlcztfaGFzaGxpYjtfbXVsdGlwcm9jZXNzaW5nO19sem1hO19kZWNpbWFsO19vdmVybGFwcGVkO19zcWxpdGUzO19hc3luY2lvID8+CiAgICAgPEZyYWdtZW50PgogICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImxpYl9leHRlbnNpb25zIj4KICAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgpAQCAtNjMsMTYgKzYzLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iUHl0aG9uUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iW0xpYl07W0RMTHNdIiAvPgogICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzX1JFQURNRSIgRGlyZWN0b3J5PSJMaWJfc2l0ZV9wYWNrYWdlcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzX1JFQURNRSIgTmFtZT0iUkVBRE1FLnR4dCIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylMaWJcc2l0ZS1wYWNrYWdlc1xSRUFETUUiIEtleVBhdGg9InllcyIgLz4KLSAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlIiBEaXJlY3Rvcnk9IkxpYl9saWIydG8zIiBHdWlkPSIkKHZhci5SZW1vdmVMaWIydG8zUGlja2xlQ29tcG9uZW50R3VpZCkiPgogICAgICAgICAgICAgICAgIDxSZW1vdmVGaWxlIElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmVfZmlsZXMiIE5hbWU9IioucGlja2xlIiBPbj0idW5pbnN0YWxsIiAvPgogICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZV9mb2xkZXIiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KLSAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iTGliIj4KLSAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzIiBOYW1lPSJzaXRlLXBhY2thZ2VzIiAvPgotICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsaWJfY2F0Ij4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImxpYl9jYXQiIERpcmVjdG9yeT0iQ2F0YWxvZ3MiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl9saWIuY2F0IiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbWFrZV96aXAucHJvaiBiL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qCmluZGV4IDEzZjc1YmEuLmQyZTAzMWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qCisrKyBiL1Rvb2xzL21zaS9tYWtlX3ppcC5wcm9qCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgICAgIDxUYXJnZXRQYXRoPiQoT3V0cHV0UGF0aClcZW4tdXNcJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvVGFyZ2V0UGF0aD4KICAgICAgICAgPENsZWFuQ29tbWFuZD5ybWRpciAvcS9zICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHppcF8kKEFyY2hOYW1lKSI8L0NsZWFuQ29tbWFuZD4KICAgICAgICAgPEFyZ3VtZW50cz4iJChQeXRob25FeGUpIiAiJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXG1ha2VfemlwLnB5IjwvQXJndW1lbnRzPgotICAgICAgICA8QXJndW1lbnRzPiQoQXJndW1lbnRzKSAtZSAtbyAiJChUYXJnZXRQYXRoKSIgLXQgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClcemlwXyQoQXJjaE5hbWUpIiAtYiAiJChPdXREaXIuVHJpbUVuZCgnXCcpKSI8L0FyZ3VtZW50cz4KKyAgICAgICAgPEFyZ3VtZW50cz4kKEFyZ3VtZW50cykgLWUgLW8gIiQoVGFyZ2V0UGF0aCkiIC10ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHppcF8kKEFyY2hOYW1lKSIgLWEgJChBcmNoTmFtZSk8L0FyZ3VtZW50cz4KICAgICAgICAgPEVudmlyb25tZW50PnNldCBET0NfRklMRU5BTUU9cHl0aG9uJChQeXRob25WZXJzaW9uKS5jaG0KIHNldCBWQ1JFRElTVF9QQVRIPSQoVlMxNDBDT01OVE9PTFMpXC4uXC4uXFZDXHJlZGlzdFwkKFBsYXRmb3JtKVxNaWNyb3NvZnQuVkMxNDAuQ1JUPC9FbnZpcm9ubWVudD4KICAgICA8L1Byb3BlcnR5R3JvdXA+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbWFrZV96aXAucHkgYi9Ub29scy9tc2kvbWFrZV96aXAucHkKaW5kZXggMGU4YTRhNi4uZjA3MGNiOSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21ha2VfemlwLnB5CisrKyBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQpAQCAtMTksNiArMTksNyBAQAogICAgICdfY3R5cGVzX3Rlc3QnLAogICAgICdfdGVzdGJ1ZmZlcicsCiAgICAgJ190ZXN0Y2FwaScsCisgICAgJ190ZXN0Y29uc29sZScsCiAgICAgJ190ZXN0aW1wb3J0bXVsdGlwbGUnLAogICAgICdfdGVzdG11bHRpcGhhc2UnLAogICAgICd4eGxpbWl0ZWQnLApAQCAtNDYsNiArNDcsMTAgQEAKICAgICAncHl0aG9uM3N0dWInLAogfQogCitFWENMVURFRF9GSUxFUyA9IHsKKyAgICAncHlzaGVsbGV4dCcsCit9CisKIGRlZiBpc19ub3RfZGVidWcocCk6CiAgICAgaWYgREVCVUdfUkUuc2VhcmNoKHAubmFtZSk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtNTMsNyArNTgsNyBAQAogICAgIGlmIFRLVENMX1JFLnNlYXJjaChwLm5hbWUpOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIHJldHVybiBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gREVCVUdfRklMRVMKKyAgICByZXR1cm4gcC5zdGVtLmxvd2VyKCkgbm90IGluIERFQlVHX0ZJTEVTIGFuZCBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gRVhDTFVERURfRklMRVMKIAogZGVmIGlzX25vdF9kZWJ1Z19vcl9weXRob24ocCk6CiAgICAgcmV0dXJuIGlzX25vdF9kZWJ1ZyhwKSBhbmQgbm90IFBZVEhPTl9ETExfUkUuc2VhcmNoKHAubmFtZSkKQEAgLTYzLDggKzY4LDYgQEAKICAgICBpZiBwLmlzX2RpcigpOgogICAgICAgICBpZiBuYW1lIGluIEVYQ0xVREVfRlJPTV9MSUJSQVJZOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgncGxhdC0nKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBuYW1lID09ICd0ZXN0JyBhbmQgcC5wYXJ0c1stMl0ubG93ZXIoKSA9PSAnbGliJzoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBuYW1lIGluIHsndGVzdCcsICd0ZXN0cyd9IGFuZCBwLnBhcnRzWy0zXS5sb3dlcigpID09ICdsaWInOgpAQCAtODksMjUgKzkyLDI3IEBACiAKICAgICByZXR1cm4gcC5zdWZmaXgubG93ZXIoKSBpbiB7Jy5weScsICcucHl3JywgJy50eHQnfQogCitCQVNFX05BTUUgPSAncHl0aG9uezAubWFqb3J9ezAubWlub3J9Jy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbykKKwogRlVMTF9MQVlPVVQgPSBbCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob24uZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbncuZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbnswLm1ham9yfS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbnswLm1ham9yfXswLm1pbm9yfS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgaXNfbm90X2RlYnVnKSwKLSAgICAoJ0RMTHMvJywgJyRidWlsZCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCdETExzLycsICckYnVpbGQnLCAnKi5kbGwnLCBpc19ub3RfZGVidWdfb3JfcHl0aG9uKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24uZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob253LmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9ue30uZGxsJy5mb3JtYXQoc3lzLnZlcnNpb25faW5mby5tYWpvciksIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAne30uZGxsJy5mb3JtYXQoQkFTRV9OQU1FKSwgaXNfbm90X2RlYnVnKSwKKyAgICAoJ0RMTHMvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1Z19vcl9weXRob24pLAogICAgICgnaW5jbHVkZS8nLCAnaW5jbHVkZScsICcqLmgnLCBOb25lKSwKICAgICAoJ2luY2x1ZGUvJywgJ1BDJywgJ3B5Y29uZmlnLmgnLCBOb25lKSwKICAgICAoJ0xpYi8nLCAnTGliJywgJyoqLyonLCBpbmNsdWRlX2luX2xpYiksCi0gICAgKCdsaWJzLycsICckYnVpbGQnLCAnKi5saWInLCBpbmNsdWRlX2luX2xpYnMpLAorICAgICgnbGlicy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmxpYicsIGluY2x1ZGVfaW5fbGlicyksCiAgICAgKCdUb29scy8nLCAnVG9vbHMnLCAnKiovKicsIGluY2x1ZGVfaW5fdG9vbHMpLAogXQogCiBFTUJFRF9MQVlPVVQgPSBbCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCdweXRob257MC5tYWpvcn17MC5taW5vcn0uemlwJy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbyksICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ3t9LnppcCcuZm9ybWF0KEJBU0VfTkFNRSksICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKIF0KIAogaWYgb3MuZ2V0ZW52KCdET0NfRklMRU5BTUUnKToKQEAgLTE2OCwxOCArMTczLDE4IEBACiBkZWYgbWFpbigpOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXNvdXJjZScsIG1ldGF2YXI9J2RpcicsIGhlbHA9J1RoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcmVwb3NpdG9yeSByb290JywgdHlwZT1QYXRoKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0JywgbWV0YXZhcj0nZmlsZScsIGhlbHA9J1RoZSBuYW1lIG9mIHRoZSBvdXRwdXQgYXJjaGl2ZScsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0JywgbWV0YXZhcj0nZmlsZScsIGhlbHA9J1RoZSBuYW1lIG9mIHRoZSBvdXRwdXQgc2VsZi1leHRyYWN0aW5nIGFyY2hpdmUnLCB0eXBlPVBhdGgsIGRlZmF1bHQ9Tm9uZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdCcsICctLXRlbXAnLCBtZXRhdmFyPSdkaXInLCBoZWxwPSdBIGRpcmVjdG9yeSB0byB0ZW1wb3JhcmlseSBleHRyYWN0IGZpbGVzIGludG8nLCB0eXBlPVBhdGgsIGRlZmF1bHQ9Tm9uZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZScsICctLWVtYmVkJywgaGVscD0nQ3JlYXRlIGFuIGVtYmVkZGluZyBsYXlvdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnVpbGQnLCBoZWxwPSdTcGVjaWZ5IHRoZSBidWlsZCBkaXJlY3RvcnknLCB0eXBlPVBhdGgpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1hcmNoJywgaGVscD0nU3BlY2lmeSB0aGUgYXJjaGl0ZWN0dXJlIHRvIHVzZSAod2luMzIvYW1kNjQpJywgdHlwZT1zdHIsIGRlZmF1bHQ9IndpbjMyIikKICAgICBucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAogICAgIHNvdXJjZSA9IG5zLnNvdXJjZSBvciAoUGF0aChfX2ZpbGVfXykucmVzb2x2ZSgpLnBhcmVudC5wYXJlbnQucGFyZW50KQogICAgIG91dCA9IG5zLm91dAotICAgIGJ1aWxkID0gbnMuYnVpbGQKKyAgICBhcmNoID0gbnMuYXJjaAogICAgIGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZSwgUGF0aCkKICAgICBhc3NlcnQgbm90IG91dCBvciBpc2luc3RhbmNlKG91dCwgUGF0aCkKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShidWlsZCwgUGF0aCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShhcmNoLCBzdHIpCiAKICAgICBpZiBucy50ZW1wOgogICAgICAgICB0ZW1wID0gbnMudGVtcApAQCAtMjAyLDE1ICsyMDcsMTcgQEAKIAogICAgIHRyeToKICAgICAgICAgZm9yIHQsIHMsIHAsIGMgaW4gbGF5b3V0OgotICAgICAgICAgICAgaWYgcyA9PSAnJGJ1aWxkJzoKLSAgICAgICAgICAgICAgICBzID0gYnVpbGQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcyA9IHNvdXJjZSAvIHMKKyAgICAgICAgICAgIHMgPSBzb3VyY2UgLyBzLnJlcGxhY2UoIiRhcmNoIiwgYXJjaCkKICAgICAgICAgICAgIGNvcGllZCA9IGNvcHlfdG9fbGF5b3V0KHRlbXAgLyB0LnJzdHJpcCgnLycpLCByZ2xvYihzLCBwLCBjKSkKICAgICAgICAgICAgIHByaW50KCdDb3BpZWQge30gZmlsZXMnLmZvcm1hdChjb3BpZWQpKQogCi0gICAgICAgIHdpdGggb3BlbihzdHIodGVtcCAvICdweXZlbnYuY2ZnJyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIHByaW50KCdhcHBsb2NhbCA9IHRydWUnLCBmaWxlPWYpCisgICAgICAgIGlmIG5zLmVtYmVkOgorICAgICAgICAgICAgd2l0aCBvcGVuKHN0cih0ZW1wIC8gKEJBU0VfTkFNRSArICcuX3B0aCcpKSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIHByaW50KEJBU0VfTkFNRSArICcuemlwJywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcuJywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJyMgVW5jb21tZW50IHRvIHJ1biBzaXRlLm1haW4oKSBhdXRvbWF0aWNhbGx5JywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcjaW1wb3J0IHNpdGUnLCBmaWxlPWYpCiAKICAgICAgICAgaWYgb3V0OgogICAgICAgICAgICAgdG90YWwgPSBjb3B5X3RvX2xheW91dChvdXQsIHJnbG9iKHRlbXAsICcqKi8qJywgTm9uZSkpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnByb3BzIGIvVG9vbHMvbXNpL21zaS5wcm9wcwppbmRleCAwY2Y3Yzc3Li42MGFiYmExIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbXNpLnByb3BzCisrKyBiL1Rvb2xzL21zaS9tc2kucHJvcHMKQEAgLTExLDYgKzExLDcgQEAKICAgICAgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CiAgICAgICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPng4NjwvUGxhdGZvcm0+CiAgICAgICAgIDxJbnN0YWxsU2NvcGUgQ29uZGl0aW9uPSInJChJbnN0YWxsU2NvcGUpJyAhPSAncGVyTWFjaGluZSciPnBlclVzZXI8L0luc3RhbGxTY29wZT4KKyAgICAgICAgPF9NYWtlQ2F0Q29tbWFuZCBDb25kaXRpb249IickKF9NYWtlQ2F0Q29tbWFuZCknID09ICcnIj5tYWtlY2F0PC9fTWFrZUNhdENvbW1hbmQ+CiAgICAgPC9Qcm9wZXJ0eUdyb3VwPgogCiAgICAgPEltcG9ydCBQcm9qZWN0PSJ3aXgucHJvcHMiIC8+CkBAIC02OSw2ICs3MCw4IEBACiAgICAgPFByb3BlcnR5R3JvdXA+CiAgICAgICAgIDxCaXRuZXNzPjMyLWJpdDwvQml0bmVzcz4KICAgICAgICAgPEJpdG5lc3MgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+NjQtYml0PC9CaXRuZXNzPgorICAgICAgICA8UGxhdGZvcm1BcmNoaXRlY3R1cmU+MzJiaXQ8L1BsYXRmb3JtQXJjaGl0ZWN0dXJlPgorICAgICAgICA8UGxhdGZvcm1BcmNoaXRlY3R1cmUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+NjRiaXQ8L1BsYXRmb3JtQXJjaGl0ZWN0dXJlPgogICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPgogICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOwogICAgICAgICAgICAgVmVyc2lvbj0kKEluc3RhbGxlclZlcnNpb24pOwpAQCAtNzksNiArODIsNyBAQAogICAgICAgICAgICAgVXBncmFkZU1pbmltdW1WZXJzaW9uPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuMC4wOwogICAgICAgICAgICAgTmV4dE1ham9yVmVyc2lvbk51bWJlcj0kKE1ham9yVmVyc2lvbk51bWJlcikuJChbbXNidWlsZF06OkFkZCgkKE1pbm9yVmVyc2lvbk51bWJlciksIDEpKS4wLjA7CiAgICAgICAgICAgICBCaXRuZXNzPSQoQml0bmVzcyk7CisgICAgICAgICAgICBQbGF0Zm9ybUFyY2hpdGVjdHVyZT0kKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKTsKICAgICAgICAgICAgIFB5RGVidWdFeHQ9JChQeURlYnVnRXh0KTsKICAgICAgICAgICAgIFB5QXJjaEV4dD0kKFB5QXJjaEV4dCk7CiAgICAgICAgICAgICBQeVRlc3RFeHQ9JChQeVRlc3RFeHQpOwpAQCAtMTAwLDYgKzEwNCw3IEBACiAgICAgICAgICAgICA8R3JvdXA+Z2VuZXJhdGVkX2ZpbGVsaXN0PC9Hcm91cD4KICAgICAgICAgICAgIDxDb25kaXRpb24+PC9Db25kaXRpb24+CiAgICAgICAgICAgICA8RGlza0lkPjwvRGlza0lkPgorICAgICAgICAgICAgPEluY2x1ZGVJbkNhdD5mYWxzZTwvSW5jbHVkZUluQ2F0PgogICAgICAgICA8L0luc3RhbGxGaWxlcz4KICAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzPgogICAgICAgICAgICAgPFZpc2libGU+ZmFsc2U8L1Zpc2libGU+CkBAIC0xNTUsNiArMTYwLDEyIEBACiAgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJSZW1vdmVMaWIydG8zUGlja2xlQ29tcG9uZW50R3VpZCI+CiAgICAgICAgICAgICA8VXJpPmxpYjJ0bzMvcGlja2xlczwvVXJpPgogICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iQ29tbW9uUHl0aG9uUmVnQ29tcG9uZW50R3VpZCI+CisgICAgICAgICAgICA8VXJpPnJlZ2lzdHJ5PC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJQeXRob25SZWdDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cmVnaXN0cnkvJChPdXRwdXROYW1lKTwvVXJpPgorICAgICAgICA8L19VdWlkPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxUYXJnZXQgTmFtZT0iX0dlbmVyYXRlR3VpZHMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBDb25kaXRpb249IiQoVGFyZ2V0TmFtZSkgIT0gJ2xhdW5jaGVyJyI+CiAgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaS50YXJnZXRzIGIvVG9vbHMvbXNpL21zaS50YXJnZXRzCmluZGV4IDg2YmUzNWIuLjkyODNhMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kudGFyZ2V0cworKysgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKQEAgLTEyLDggKzEyLDEwIEBACiAgICAgICAgICAgICAgICAgPF9Tb3VyY2U+JShTb3VyY2UpJChbbXNidWlsZF06Ok1ha2VSZWxhdGl2ZSglKFNvdXJjZUJhc2UpLCAlKEZ1bGxQYXRoKSkpPC9fU291cmNlPgogICAgICAgICAgICAgICAgIDxfVGFyZ2V0PiUoVGFyZ2V0XykkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoVGFyZ2V0QmFzZSksICUoRnVsbFBhdGgpKSk8L19UYXJnZXQ+CiAgICAgICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPF9DYXRhbG9nRmlsZXMgSW5jbHVkZT0iQChJbnN0YWxsRmlsZXMpIiBDb25kaXRpb249IiUoSW5zdGFsbEZpbGVzLkluY2x1ZGVJbkNhdCkgYW5kICcnIT0kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoSW5zdGFsbEZpbGVzLkZ1bGxQYXRoKSkpIiAvPgogICAgICAgICA8L0l0ZW1Hcm91cD4KLSAgICAgICAgCisKICAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChfRmlsZUxpc3RUYXJnZXQpIiBMaW5lcz0iQChJbnN0YWxsRmlsZXMtPicmcXVvdDslKF9Tb3VyY2UpJnF1b3Q7LCZxdW90OyUoX1RhcmdldCkmcXVvdDssJnF1b3Q7JShHcm91cCkmcXVvdDssJnF1b3Q7JShEaXNrSWQpJnF1b3Q7LCZxdW90OyUoQ29uZGl0aW9uKSZxdW90OycpIiBPdmVyd3JpdGU9InRydWUiIC8+CiAgICAgICAgIDxFeGVjIENvbW1hbmQ9JyIkKFB5dGhvbkV4ZSkiIGNzdl90b193eHMucHkgIiQoX0ZpbGVMaXN0VGFyZ2V0KSIgIiQoX0luc3RhbGxGaWxlc1RhcmdldCkiJwogICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiIC8+CkBAIC0yNCw2ICsyNiwzNSBAQAogICAgICAgICA8L0l0ZW1Hcm91cD4KICAgICA8L1RhcmdldD4KIAorICAgIDxUYXJnZXQgTmFtZT0iR2VuZXJhdGVDYXRhbG9nIiBBZnRlclRhcmdldHM9IlByb2Nlc3NJbnN0YWxsRmlsZXMiIENvbmRpdGlvbj0iJ0AoX0NhdGFsb2dGaWxlcyknICE9ICcnIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8X0NhdEZpbGVTb3VyY2VUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoTVNCdWlsZFByb2plY3ROYW1lKS5jZGY8L19DYXRGaWxlU291cmNlVGFyZ2V0PgorICAgICAgICAgICAgPF9DYXRGaWxlVGFyZ2V0PiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClweXRob25fJChNU0J1aWxkUHJvamVjdE5hbWUpLmNhdDwvX0NhdEZpbGVUYXJnZXQ+CisgICAgICAgICAgICA8X0NhdEZpbGU+W0NhdGFsb2dIZWFkZXJdCitOYW1lPSQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RmlsZU5hbWUoJChfQ2F0RmlsZVRhcmdldCkpKQorUmVzdWx0RGlyPSQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RGlyZWN0b3J5TmFtZSgkKF9DYXRGaWxlVGFyZ2V0KSkpCitQdWJsaWNWZXJzaW9uPTEKK0NhdGFsb2dWZXJzaW9uPTIKK0hhc2hBbGdvcml0aG1zPVNIQTI1NgorUGFnZUhhc2hlcz1mYWxzZQorRW5jb2RpbmdUeXBlPQorCitbQ2F0YWxvZ0ZpbGVzXQorQChfQ2F0YWxvZ0ZpbGVzLT4nJmx0O0hBU0gmZ3Q7JShGaWxlbmFtZSklKEV4dGVuc2lvbik9JShGdWxsUGF0aCknLCcKKycpCis8L19DYXRGaWxlPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChfQ2F0RmlsZVNvdXJjZVRhcmdldCkiIExpbmVzPSIkKF9DYXRGaWxlKSIgT3ZlcndyaXRlPSJ0cnVlIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSckKF9NYWtlQ2F0Q29tbWFuZCkgIiQoX0NhdEZpbGVTb3VyY2VUYXJnZXQpIicgV29ya2luZ0RpcmVjdG9yeT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSckKF9TaWduQ29tbWFuZCkgIiQoX0NhdEZpbGVUYXJnZXQpIicgV29ya2luZ0RpcmVjdG9yeT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpIgorICAgICAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygkKF9DYXRGaWxlVGFyZ2V0KSkgYW5kICckKF9TaWduQ29tbWFuZCknICE9ICcnIiAvPgorCisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8RmlsZVdyaXRlcyBJbmNsdWRlPSIkKF9DYXRGaWxlU291cmNlVGFyZ2V0KTskKF9DYXRGaWxlVGFyZ2V0KSIgLz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgPC9UYXJnZXQ+CisKICAgICA8VGFyZ2V0IE5hbWU9Il9UcmFuc2Zvcm1XeGxUZW1wbGF0ZXMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBJbnB1dHM9IkAoV3hsVGVtcGxhdGUpOyQoUHlTb3VyY2VQYXRoKWluY2x1ZGVccGF0Y2hsZXZlbC5oIiBPdXRwdXRzPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShGaWxlbmFtZSkud3hsIj4KICAgICAgICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInQChXeGxUZW1wbGF0ZSknICE9ICcnIj4KICAgICAgICAgICAgIDxfQ29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoV3hsVGVtcGxhdGUuRnVsbFBhdGgpKS5SZXBsYWNlKGB7e1Nob3J0VmVyc2lvbn19YCwgYCQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikkKFB5VGVzdEV4dClgKS5SZXBsYWNlKGB7e0xvbmdWZXJzaW9ufX1gLCBgJChQeXRob25WZXJzaW9uKSQoUHlUZXN0RXh0KWApLlJlcGxhY2UoYHt7Qml0bmVzc319YCwgYCQoQml0bmVzcylgKSk8L19Db250ZW50PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9maWxlcy53eHMgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cwppbmRleCBlODAzYWEwLi44MmE5MTE1IDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cworKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cwpAQCAtMSw3NyArMSw0MiBAQAog77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KIDxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDw/ZGVmaW5lIGV4dHM9X3Rlc3RjYXBpO19jdHlwZXNfdGVzdDtfdGVzdGJ1ZmZlcjtfdGVzdGltcG9ydG11bHRpcGxlO190ZXN0bXVsdGlwaGFzZTtfdGVzdGNvbnNvbGUgPz4KICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxDb21wb25lbnRHcm91cCBJZD0idGVzdF9leHRlbnNpb25zIj4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaS5weWQiIE5hbWU9Il90ZXN0Y2FwaS5weWQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDw/Zm9yZWFjaCBleHQgaW4gJCh2YXIuZXh0cyk/PgorICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dCkucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il9jdHlwZXNfdGVzdC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdC5weWQiIE5hbWU9Il9jdHlwZXNfdGVzdC5weWQiIEtleVBhdGg9InllcyIgLz4KLSAgICAgICAgICAgIDwvQ29tcG9uZW50PgotICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RidWZmZXIucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGJ1ZmZlci5weWQiIE5hbWU9Il90ZXN0YnVmZmVyLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5weWQiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGUucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+Ci0gICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0bXVsdGlwaGFzZS5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZS5weWQiIE5hbWU9Il90ZXN0bXVsdGlwaGFzZS5weWQiIEtleVBhdGg9InllcyIgLz4KLSAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8P2VuZGZvcmVhY2ggPz4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgogICAgIAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0ZXN0X2V4dGVuc2lvbnNfc3ltYm9scyI+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGkucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNhcGkucGRiIiBOYW1lPSJfdGVzdGNhcGkucGRiIiAvPgorICAgICAgICAgICAgPD9mb3JlYWNoIGV4dCBpbiAkKHZhci5leHRzKT8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IiQodmFyLmV4dCkucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9IiQodmFyLmV4dCkucGRiIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfY3R5cGVzX3Rlc3QucGRiIiBOYW1lPSJfY3R5cGVzX3Rlc3QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlci5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0YnVmZmVyLnBkYiIgTmFtZT0iX3Rlc3RidWZmZXIucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RpbXBvcnRtdWx0aXBsZS5wZGIiIE5hbWU9Il90ZXN0aW1wb3J0bXVsdGlwbGUucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2UucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdG11bHRpcGhhc2UucGRiIiBOYW1lPSJfdGVzdG11bHRpcGhhc2UucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCiAgICAgPEZyYWdtZW50PgogICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRlc3RfZXh0ZW5zaW9uc19kIj4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9Il90ZXN0Y2FwaV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RjYXBpX2QucHlkIiBOYW1lPSJfdGVzdGNhcGlfZC5weWQiIC8+CisgICAgICAgICAgICA8P2ZvcmVhY2ggZXh0IGluICQodmFyLmV4dHMpPz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KV9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSIkKHZhci5leHQpX2QucHlkIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3RfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdF9kLnB5ZCIgTmFtZT0iX2N0eXBlc190ZXN0X2QucHlkIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iJCh2YXIuZXh0KV9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSIkKHZhci5leHQpX2QucGRiIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlcl9kLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXJfZC5weWQiIE5hbWU9Il90ZXN0YnVmZmVyX2QucHlkIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucHlkIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGlfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgTmFtZT0iX3Rlc3RjYXBpX2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfY3R5cGVzX3Rlc3RfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il9jdHlwZXNfdGVzdF9kLnBkYiIgTmFtZT0iX2N0eXBlc190ZXN0X2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGJ1ZmZlcl9kLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RidWZmZXJfZC5wZGIiIE5hbWU9Il90ZXN0YnVmZmVyX2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgotICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiBOYW1lPSJfdGVzdGltcG9ydG11bHRpcGxlX2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+Ci0gICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiAvPgotICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDw/ZW5kZm9yZWFjaCA/PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29scy53aXhwcm9qIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2oKaW5kZXggZjQzY2YzMy4uYjdmYzQxZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2oKQEAgLTM2LDYgKzM2LDcgQEAKICAgICAgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKFB5U291cmNlUGF0aCk8L1RhcmdldEJhc2U+CiAgICAgICAgICAgICAgICAgPFRhcmdldF8+PC9UYXJnZXRfPgogICAgICAgICAgICAgICAgIDxHcm91cD50b29sc19weTwvR3JvdXA+CisgICAgICAgICAgICAgICAgPEluY2x1ZGVJbkNhdD50cnVlPC9JbmNsdWRlSW5DYXQ+CiAgICAgICAgIDwvSW5zdGFsbEZpbGVzPgogICAgIDwvSXRlbUdyb3VwPgogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cyBiL1Rvb2xzL21zaS90b29scy90b29scy53eHMKaW5kZXggOGY4NDE4YS4uN2E4MDVkMCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cworKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCkBAIC05LDYgKzksNyBAQAogICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX3B5IiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19zY3JpcHRzIiAvPgorICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJ0b29sc19jYXQiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CiAgICAgICAgIDwvRmVhdHVyZT4KICAgICA8L1Byb2R1Y3Q+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cwppbmRleCAzYWUwZGIyLi45Yzc2YjFiIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKQEAgLTEzLDQgKzEzLDExIEBACiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJ0b29sc19jYXQiPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0idG9vbHNfY2F0IiBEaXJlY3Rvcnk9IkNhdGFsb2dzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweXRob25fdG9vbHMuY2F0IiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KKyAgICA8L0ZyYWdtZW50PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qIGIvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagppbmRleCA5NmY1NGRjLi5jM2NkNDNhIDEwMDY0NAotLS0gYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCisrKyBiL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKQEAgLTE0LDYgKzE0LDcgQEAKICAgICA8UHJvcGVydHlHcm91cD4KICAgICAgICAgPE51Z2V0IENvbmRpdGlvbj0iJChOdWdldCkgPT0gJyciPiQoRXh0ZXJuYWxzRGlyKVx3aW5kb3dzLWluc3RhbGxlclxudWdldFxudWdldC5leGU8L051Z2V0PgogICAgICAgICA8TnVzcGVjVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKTwvTnVzcGVjVmVyc2lvbj4KKyAgICAgICAgPE51c3BlY1ZlcnNpb24gQ29uZGl0aW9uPSIkKFJlbGVhc2VMZXZlbE5hbWUpICE9ICcnIj4kKE51c3BlY1ZlcnNpb24pLSQoUmVsZWFzZUxldmVsTmFtZSk8L051c3BlY1ZlcnNpb24+CiAgICAgICAgIDxTaWduT3V0cHV0PmZhbHNlPC9TaWduT3V0cHV0PgogICAgICAgICA8VGFyZ2V0TmFtZT4kKE91dHB1dE5hbWUpLiQoTnVzcGVjVmVyc2lvbik8L1RhcmdldE5hbWU+CiAgICAgICAgIDxUYXJnZXRFeHQ+Lm51cGtnPC9UYXJnZXRFeHQ+CkBAIC0yMyw3ICsyNCw3IEBACiAgICAgICAgIDxDbGVhbkNvbW1hbmQ+cm1kaXIgL3EvcyAiJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSI8L0NsZWFuQ29tbWFuZD4KICAgICAgICAgCiAgICAgICAgIDxQeXRob25Bcmd1bWVudHM+IiQoUHl0aG9uRXhlKSIgIiQoTVNCdWlsZFRoaXNGaWxlRGlyZWN0b3J5KVwuLlxtc2lcbWFrZV96aXAucHkiPC9QeXRob25Bcmd1bWVudHM+Ci0gICAgICAgIDxQeXRob25Bcmd1bWVudHM+JChQeXRob25Bcmd1bWVudHMpIC10ICIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpIiAtYiAiJChPdXREaXIuVHJpbUVuZCgnXCcpKVwuLiI8L1B5dGhvbkFyZ3VtZW50cz4KKyAgICAgICAgPFB5dGhvbkFyZ3VtZW50cz4kKFB5dGhvbkFyZ3VtZW50cykgLXQgIiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aCkiIC1hICQoQXJjaE5hbWUpPC9QeXRob25Bcmd1bWVudHM+CiAgICAgICAgIAogICAgICAgICA8UGlwQXJndW1lbnRzPiIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpXHB5dGhvbi5leGUiIC1CIC1jICJpbXBvcnQgc3lzOyBzeXMucGF0aC5hcHBlbmQocickKFB5U291cmNlUGF0aClcTGliJyk7IGltcG9ydCBlbnN1cmVwaXA7IGVuc3VyZXBpcC5fbWFpbigpIjwvUGlwQXJndW1lbnRzPgogICAgICAgICA8UGFja2FnZUFyZ3VtZW50cyBDb25kaXRpb249IiQoUGFja2FnZXMpICE9ICcnIj4iJChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKVxweXRob24uZXhlIiAtQiAtbSBwaXAgaW5zdGFsbCAtVSAkKFBhY2thZ2VzKTwvUGFja2FnZUFyZ3VtZW50cz4KZGlmZiAtLWdpdCBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5IGIvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKaW5kZXggMjg1MDMwZS4uN2UxY2M0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKKysrIGIvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKQEAgLTEwNCw2ICsxMDQsMTkgQEAKICAgICAgICAgc2VsZi53cml0ZSgiICIrc2VsZi5iaW5vcFt0Lm9wLl9fY2xhc3NfXy5fX25hbWVfX10rIj0gIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQogCisgICAgZGVmIF9Bbm5Bc3NpZ24oc2VsZiwgdCk6CisgICAgICAgIHNlbGYuZmlsbCgpCisgICAgICAgIGlmIG5vdCB0LnNpbXBsZSBhbmQgaXNpbnN0YW5jZSh0LnRhcmdldCwgYXN0Lk5hbWUpOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnKCcpCisgICAgICAgIHNlbGYuZGlzcGF0Y2godC50YXJnZXQpCisgICAgICAgIGlmIG5vdCB0LnNpbXBsZSBhbmQgaXNpbnN0YW5jZSh0LnRhcmdldCwgYXN0Lk5hbWUpOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnKScpCisgICAgICAgIHNlbGYud3JpdGUoIjogIikKKyAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmFubm90YXRpb24pCisgICAgICAgIGlmIHQudmFsdWU6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgPSAiKQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQorCiAgICAgZGVmIF9SZXR1cm4oc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgicmV0dXJuIikKICAgICAgICAgaWYgdC52YWx1ZToKQEAgLTMyMiw5ICszMzUsNzIgQEAKICAgICBkZWYgX1N0cihzZWxmLCB0cmVlKToKICAgICAgICAgc2VsZi53cml0ZShyZXByKHRyZWUucykpCiAKKyAgICBkZWYgX0pvaW5lZFN0cihzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiZiIpCisgICAgICAgIHN0cmluZyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5fZnN0cmluZ19Kb2luZWRTdHIodCwgc3RyaW5nLndyaXRlKQorICAgICAgICBzZWxmLndyaXRlKHJlcHIoc3RyaW5nLmdldHZhbHVlKCkpKQorCisgICAgZGVmIF9Gb3JtYXR0ZWRWYWx1ZShzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiZiIpCisgICAgICAgIHN0cmluZyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5fZnN0cmluZ19Gb3JtYXR0ZWRWYWx1ZSh0LCBzdHJpbmcud3JpdGUpCisgICAgICAgIHNlbGYud3JpdGUocmVwcihzdHJpbmcuZ2V0dmFsdWUoKSkpCisKKyAgICBkZWYgX2ZzdHJpbmdfSm9pbmVkU3RyKHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgZm9yIHZhbHVlIGluIHQudmFsdWVzOgorICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgIl9mc3RyaW5nXyIgKyB0eXBlKHZhbHVlKS5fX25hbWVfXykKKyAgICAgICAgICAgIG1ldGgodmFsdWUsIHdyaXRlKQorCisgICAgZGVmIF9mc3RyaW5nX1N0cihzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIHZhbHVlID0gdC5zLnJlcGxhY2UoInsiLCAie3siKS5yZXBsYWNlKCJ9IiwgIn19IikKKyAgICAgICAgd3JpdGUodmFsdWUpCisKKyAgICBkZWYgX2ZzdHJpbmdfQ29uc3RhbnQoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0LnZhbHVlLCBzdHIpCisgICAgICAgIHZhbHVlID0gdC52YWx1ZS5yZXBsYWNlKCJ7IiwgInt7IikucmVwbGFjZSgifSIsICJ9fSIpCisgICAgICAgIHdyaXRlKHZhbHVlKQorCisgICAgZGVmIF9mc3RyaW5nX0Zvcm1hdHRlZFZhbHVlKHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgd3JpdGUoInsiKQorICAgICAgICBleHByID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBVbnBhcnNlcih0LnZhbHVlLCBleHByKQorICAgICAgICBleHByID0gZXhwci5nZXR2YWx1ZSgpLnJzdHJpcCgiXG4iKQorICAgICAgICBpZiBleHByLnN0YXJ0c3dpdGgoInsiKToKKyAgICAgICAgICAgIHdyaXRlKCIgIikgICMgU2VwYXJhdGUgcGFpciBvZiBvcGVuaW5nIGJyYWNrZXRzIGFzICJ7IHsiCisgICAgICAgIHdyaXRlKGV4cHIpCisgICAgICAgIGlmIHQuY29udmVyc2lvbiAhPSAtMToKKyAgICAgICAgICAgIGNvbnZlcnNpb24gPSBjaHIodC5jb252ZXJzaW9uKQorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnNpb24gaW4gInNyYSIKKyAgICAgICAgICAgIHdyaXRlKGYiIXtjb252ZXJzaW9ufSIpCisgICAgICAgIGlmIHQuZm9ybWF0X3NwZWM6CisgICAgICAgICAgICB3cml0ZSgiOiIpCisgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCAiX2ZzdHJpbmdfIiArIHR5cGUodC5mb3JtYXRfc3BlYykuX19uYW1lX18pCisgICAgICAgICAgICBtZXRoKHQuZm9ybWF0X3NwZWMsIHdyaXRlKQorICAgICAgICB3cml0ZSgifSIpCisKICAgICBkZWYgX05hbWUoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUodC5pZCkKIAorICAgIGRlZiBfd3JpdGVfY29uc3RhbnQoc2VsZiwgdmFsdWUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAoZmxvYXQsIGNvbXBsZXgpKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUocmVwcih2YWx1ZSkucmVwbGFjZSgiaW5mIiwgSU5GU1RSKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUocmVwcih2YWx1ZSkpCisKKyAgICBkZWYgX0NvbnN0YW50KHNlbGYsIHQpOgorICAgICAgICB2YWx1ZSA9IHQudmFsdWUKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiKCIpCisgICAgICAgICAgICBpZiBsZW4odmFsdWUpID09IDE6CisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uc3RhbnQodmFsdWVbMF0pCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLl93cml0ZV9jb25zdGFudCwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLndyaXRlKCIpIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbnN0YW50KHQudmFsdWUpCisKICAgICBkZWYgX05hbWVDb25zdGFudChzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZShyZXByKHQudmFsdWUpKQogCkBAIC0zNjgsNyArNDQ0LDEwIEBACiAgICAgICAgIHNlbGYud3JpdGUoIn0iKQogCiAgICAgZGVmIF9jb21wcmVoZW5zaW9uKHNlbGYsIHQpOgotICAgICAgICBzZWxmLndyaXRlKCIgZm9yICIpCisgICAgICAgIGlmIHQuaXNfYXN5bmM6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgYXN5bmMgZm9yICIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgZm9yICIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC50YXJnZXQpCiAgICAgICAgIHNlbGYud3JpdGUoIiBpbiAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQuaXRlcikKQEAgLTQxMyw3ICs0OTIsNyBAQAogICAgIGRlZiBfVHVwbGUoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUoIigiKQogICAgICAgICBpZiBsZW4odC5lbHRzKSA9PSAxOgotICAgICAgICAgICAgKGVsdCwpID0gdC5lbHRzCisgICAgICAgICAgICBlbHQgPSB0LmVsdHNbMF0KICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2goZWx0KQogICAgICAgICAgICAgc2VsZi53cml0ZSgiLCIpCiAgICAgICAgIGVsc2U6CkBAIC00NjAsNyArNTM5LDggQEAKICAgICAgICAgIyBTcGVjaWFsIGNhc2U6IDMuX19hYnNfXygpIGlzIGEgc3ludGF4IGVycm9yLCBzbyBpZiB0LnZhbHVlCiAgICAgICAgICMgaXMgYW4gaW50ZWdlciBsaXRlcmFsIHRoZW4gd2UgbmVlZCB0byBlaXRoZXIgcGFyZW50aGVzaXplCiAgICAgICAgICMgaXQgb3IgYWRkIGFuIGV4dHJhIHNwYWNlIHRvIGdldCAzIC5fX2Fic19fKCkuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodC52YWx1ZSwgYXN0Lk51bSkgYW5kIGlzaW5zdGFuY2UodC52YWx1ZS5uLCBpbnQpOgorICAgICAgICBpZiAoKGlzaW5zdGFuY2UodC52YWx1ZSwgYXN0Lk51bSkgYW5kIGlzaW5zdGFuY2UodC52YWx1ZS5uLCBpbnQpKQorICAgICAgICAgICBvciAoaXNpbnN0YW5jZSh0LnZhbHVlLCBhc3QuQ29uc3RhbnQpIGFuZCBpc2luc3RhbmNlKHQudmFsdWUudmFsdWUsIGludCkpKToKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQogICAgICAgICBzZWxmLndyaXRlKCIuIikKICAgICAgICAgc2VsZi53cml0ZSh0LmF0dHIpCmRpZmYgLS1naXQgYS9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5IGIvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weQppbmRleCAwNzNjY2EwLi41NGE4YmE3IDEwMDY0NAotLS0gYS9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5CisrKyBiL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkKQEAgLTk5LDggKzk5LDggQEAKICMgQWxpYXMKIGdldHBhc3N3ZCA9IGludmlzaWJsZV9pbnB1dAogCi1faW50ZWdlclJFID0gcmUuY29tcGlsZSgnXHMqKC0/XGQrKVxzKiQnKQotX2ludGVnZXJSYW5nZVJFID0gcmUuY29tcGlsZSgnXHMqKC0/XGQrKVxzKi1ccyooLT9cZCspXHMqJCcpCitfaW50ZWdlclJFID0gcmUuY29tcGlsZShyJ1xzKigtP1xkKylccyokJykKK19pbnRlZ2VyUmFuZ2VSRSA9IHJlLmNvbXBpbGUocidccyooLT9cZCspXHMqLVxzKigtP1xkKylccyokJykKIAogZGVmIHNyYW5nZShzLAogCmRpZmYgLS1naXQgYS9Ub29scy9weWJlbmNoL1dpdGgucHkgYi9Ub29scy9weWJlbmNoL1dpdGgucHkKaW5kZXggNWY1OWU4Yy4uMzBjZDNjMiAxMDA2NDQKLS0tIGEvVG9vbHMvcHliZW5jaC9XaXRoLnB5CisrKyBiL1Rvb2xzL3B5YmVuY2gvV2l0aC5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGZyb20gcHliZW5jaCBpbXBvcnQgVGVzdAogCiBjbGFzcyBXaXRoRmluYWxseShUZXN0KToKZGlmZiAtLWdpdCBhL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5IGIvVG9vbHMvcHluY2hlL0NvbG9yREIucHkKaW5kZXggNWNlZDBlNy4uMDM0ODE0OCAxMDA2NDQKLS0tIGEvVG9vbHMvcHluY2hlL0NvbG9yREIucHkKKysrIGIvVG9vbHMvcHluY2hlL0NvbG9yREIucHkKQEAgLTEzNCwxNyArMTM0LDE3IEBACiAMCiBjbGFzcyBSR0JDb2xvckRCKENvbG9yREIpOgogICAgIF9yZSA9IHJlLmNvbXBpbGUoCi0gICAgICAgICdccyooP1A8cmVkPlxkKylccysoP1A8Z3JlZW4+XGQrKVxzKyg/UDxibHVlPlxkKylccysoP1A8bmFtZT4uKiknKQorICAgICAgICByJ1xzKig/UDxyZWQ+XGQrKVxzKyg/UDxncmVlbj5cZCspXHMrKD9QPGJsdWU+XGQrKVxzKyg/UDxuYW1lPi4qKScpCiAKIAogY2xhc3MgSFRNTDQwREIoQ29sb3JEQik6Ci0gICAgX3JlID0gcmUuY29tcGlsZSgnKD9QPG5hbWU+XFMrKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCisgICAgX3JlID0gcmUuY29tcGlsZShyJyg/UDxuYW1lPlxTKylccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQogCiAgICAgZGVmIF9leHRyYWN0cmdiKHNlbGYsIG1vKToKICAgICAgICAgcmV0dXJuIHJyZ2diYl90b190cmlwbGV0KG1vLmdyb3VwKCdoZXhyZ2InKSkKIAogY2xhc3MgTGlnaHRsaW5rREIoSFRNTDQwREIpOgotICAgIF9yZSA9IHJlLmNvbXBpbGUoJyg/UDxuYW1lPiguKykpXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKKyAgICBfcmUgPSByZS5jb21waWxlKHInKD9QPG5hbWU+KC4rKSlccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQogCiAgICAgZGVmIF9leHRyYWN0bmFtZShzZWxmLCBtbyk6CiAgICAgICAgIHJldHVybiBtby5ncm91cCgnbmFtZScpLnN0cmlwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkgYi9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5CmluZGV4IGUxMGU0OWEuLjdjYTk1MjYgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weQpAQCAtNiw3ICs2LDcgQEAKIEEgaGVscGVyIGZvciBhbmFseXppbmcgUFlUSE9ORFVNUFJFRlMgb3V0cHV0LgogCiBXaGVuIHRoZSBQWVRIT05EVU1QUkVGUyBlbnZhciBpcyBzZXQgaW4gYSBkZWJ1ZyBidWlsZCwgYXQgUHl0aG9uIHNodXRkb3duCi10aW1lIFB5X0ZpbmFsaXplKCkgcHJpbnRzIHRoZSBsaXN0IG9mIGFsbCBsaXZlIG9iamVjdHMgdHdpY2U6ICBmaXJzdCBpdAordGltZSBQeV9GaW5hbGl6ZUV4KCkgcHJpbnRzIHRoZSBsaXN0IG9mIGFsbCBsaXZlIG9iamVjdHMgdHdpY2U6ICBmaXJzdCBpdAogcHJpbnRzIHRoZSByZXByKCkgb2YgZWFjaCBvYmplY3Qgd2hpbGUgdGhlIGludGVycHJldGVyIGlzIHN0aWxsIGZ1bGx5IGludGFjdC4KIEFmdGVyIGNsZWFuaW5nIHVwIGV2ZXJ5dGhpbmcgaXQgY2FuLCBpdCBwcmludHMgYWxsIHJlbWFpbmluZyBsaXZlIG9iamVjdHMKIGFnYWluLCBidXQgdGhlIHNlY29uZCB0aW1lIGp1c3QgcHJpbnRzIHRoZWlyIGFkZHJlc3NlcywgcmVmY291bnRzLCBhbmQgdHlwZQpAQCAtNDEsNyArNDEsNyBAQAogb2JqZWN0cyBzaG93biBpbiB0aGUgcmVwcjogIHRoZSByZXByIHdhcyBjYXB0dXJlZCBmcm9tIHRoZSBmaXJzdCBvdXRwdXQgYmxvY2ssCiBhbmQgc29tZSBvZiB0aGUgY29udGFpbmVlcyBtYXkgaGF2ZSBiZWVuIHJlbGVhc2VkIHNpbmNlIHRoZW4uICBGb3IgZXhhbXBsZSwKIGl0J3MgY29tbW9uIGZvciB0aGUgbGluZSBzaG93aW5nIHRoZSBkaWN0IG9mIGludGVybmVkIHN0cmluZ3MgdG8gZGlzcGxheQotc3RyaW5ncyB0aGF0IG5vIGxvbmdlciBleGlzdCBhdCB0aGUgZW5kIG9mIFB5X0ZpbmFsaXplOyB0aGlzIGNhbiBiZSByZWNvZ25pemVkCitzdHJpbmdzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGF0IHRoZSBlbmQgb2YgUHlfRmluYWxpemVFeDsgdGhpcyBjYW4gYmUgcmVjb2duaXplZAogKGFsYmVpdCBwYWluZnVsbHkpIGJlY2F1c2Ugc3VjaCBjb250YWluZWVzIGRvbid0IGhhdmUgYSBsaW5lIG9mIHRoZWlyIG93bi4KIAogVGhlIG9iamVjdHMgYXJlIGxpc3RlZCBpbiBhbGxvY2F0aW9uIG9yZGVyLCB3aXRoIG1vc3QtcmVjZW50bHkgYWxsb2NhdGVkCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2RpZmYucHkgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKaW5kZXggOTcyMGE0My4uOTYxOTliOCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQpAQCAtOCw3ICs4LDcgQEAKIAogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBhcmdwYXJzZQoraW1wb3J0IHN5cywgb3MsIGRpZmZsaWIsIGFyZ3BhcnNlCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUKIAogZGVmIGZpbGVfbXRpbWUocGF0aCk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weSBiL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5CmluZGV4IDIwZjMzODYuLjEyMTNhNGUgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5CkBAIC0xNzQsOCArMTc0LDggQEAKICAgICBzeXMuc3RkZXJyLndyaXRlKCJVc2FnZTogJXMgWy1tXSB3YXJuaW5nc1xuIiAlIHN5cy5hcmd2WzBdKQogICAgIHN5cy5zdGRlcnIud3JpdGUoIlRyeSBgJXMgLWgnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiAlIHN5cy5hcmd2WzBdKQogCi1QQVRURVJOID0gKCJeKC4rPyk6KFxkKyk6IERlcHJlY2F0aW9uV2FybmluZzogIgotICAgICAgICAgICAiY2xhc3NpYyAoaW50fGxvbmd8ZmxvYXR8Y29tcGxleCkgZGl2aXNpb24kIikKK1BBVFRFUk4gPSAociJeKC4rPyk6KFxkKyk6IERlcHJlY2F0aW9uV2FybmluZzogIgorICAgICAgICAgICByImNsYXNzaWMgKGludHxsb25nfGZsb2F0fGNvbXBsZXgpIGRpdmlzaW9uJCIpCiAKIGRlZiByZWFkd2FybmluZ3Mod2FybmluZ3NmaWxlKToKICAgICBwcm9nID0gcmUuY29tcGlsZShQQVRURVJOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSBiL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKaW5kZXggYzYyZjlhNS4uOTQ4YjU2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQorKysgYi9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CkBAIC0xLDcgKzEsNSBAQAogIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIG9wY29kZS5oIGhlYWRlciBmaWxlLgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIGltcG9ydCBzeXMKIGhlYWRlciA9ICIiIi8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFRvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkgKi8KICNpZm5kZWYgUHlfT1BDT0RFX0gKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaDJweS5weSBiL1Rvb2xzL3NjcmlwdHMvaDJweS5weQppbmRleCAwOTY3ZmMyLi40MzYzYzBjIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2gycHkucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9oMnB5LnB5CkBAIC0yMywxMyArMjMsMTMgQEAKIAogaW1wb3J0IHN5cywgcmUsIGdldG9wdCwgb3MKIAotcF9kZWZpbmUgPSByZS5jb21waWxlKCdeW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKyhbYS16QS1aMC05X10rKVtcdCBdKycpCitwX2RlZmluZSA9IHJlLmNvbXBpbGUocideW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKyhbYS16QS1aMC05X10rKVtcdCBdKycpCiAKIHBfbWFjcm8gPSByZS5jb21waWxlKAotICAnXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsnCi0gICcoW2EtekEtWjAtOV9dKylcKChbX2EtekEtWl1bX2EtekEtWjAtOV0qKVwpW1x0IF0rJykKKyAgcideW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKycKKyAgcicoW2EtekEtWjAtOV9dKylcKChbX2EtekEtWl1bX2EtekEtWjAtOV0qKVwpW1x0IF0rJykKIAotcF9pbmNsdWRlID0gcmUuY29tcGlsZSgnXltcdCBdKiNbXHQgXSppbmNsdWRlW1x0IF0rPChbXj5cbl0rKT4nKQorcF9pbmNsdWRlID0gcmUuY29tcGlsZShyJ15bXHQgXSojW1x0IF0qaW5jbHVkZVtcdCBdKzwoW14+XG5dKyk+JykKIAogcF9jb21tZW50ID0gcmUuY29tcGlsZShyJy9cKihbXipdK3xcKitbXi9dKSooXCorLyk/JykKIHBfY3BwX2NvbW1lbnQgPSByZS5jb21waWxlKCcvLy4qJykKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5IGIvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKaW5kZXggNjZhZDg2OC4uOTI3MmZlZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKQEAgLTE0NywxNCArMTQ3LDE0IEBACiAjIyMjIExhVGVYIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogZGVmYXVsdF9sYXRleF9jb21tYW5kcyA9IHsKLSAgICAnY29tbWVudCc6ICd7XGNvbG9ye3JlZH0jMX0nLAotICAgICdzdHJpbmcnOiAne1xjb2xvcntGb3Jlc3RHcmVlbn0jMX0nLAotICAgICdkb2NzdHJpbmcnOiAne1xlbXBoe1xjb2xvcntGb3Jlc3RHcmVlbn0jMX19JywKLSAgICAna2V5d29yZCc6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAotICAgICdidWlsdGluJzogJ3tcY29sb3J7cHVycGxlfSMxfScsCi0gICAgJ2RlZmluaXRpb24nOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKLSAgICAnZGVmbmFtZSc6ICd7XGNvbG9ye2JsdWV9IzF9JywKLSAgICAnb3BlcmF0b3InOiAne1xjb2xvcnticm93bn0jMX0nLAorICAgICdjb21tZW50Jzogcid7XGNvbG9ye3JlZH0jMX0nLAorICAgICdzdHJpbmcnOiByJ3tcY29sb3J7Rm9yZXN0R3JlZW59IzF9JywKKyAgICAnZG9jc3RyaW5nJzogcid7XGVtcGh7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfX0nLAorICAgICdrZXl3b3JkJzogcid7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdidWlsdGluJzogcid7XGNvbG9ye3B1cnBsZX0jMX0nLAorICAgICdkZWZpbml0aW9uJzogcid7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdkZWZuYW1lJzogcid7XGNvbG9ye2JsdWV9IzF9JywKKyAgICAnb3BlcmF0b3InOiByJ3tcY29sb3J7YnJvd259IzF9JywKIH0KIAogZGVmYXVsdF9sYXRleF9kb2N1bWVudCA9IHInJycKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaWRsZTMgYi9Ub29scy9zY3JpcHRzL2lkbGUzCmluZGV4IDhlZTkyYzIuLmQ3MzMyYmMgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvaWRsZTMKKysrIGIvVG9vbHMvc2NyaXB0cy9pZGxlMwpAQCAtMSw1ICsxLDUgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCiAKLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBtYWluCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgbWFpbgogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5IGIvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkKaW5kZXggYWViNDUxZS4uNjM1ZTU0OCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkKQEAgLTg4LDcgKzg4LDcgQEAKICMgbm8gbW9yZSBleHByZXNzaW9ucyBhcmUgc2VhcmNoZWQgZm9yLiAgU28sIG9yZGVyIGlzIGltcG9ydGFudC4KIGVtcGFyc2VfbGlzdF9yZWFzb24gPSBbCiAgICAgcideNVxkezJ9IDw+XC5cLlwuICg/UDxyZWFzb24+LiopJywKLSAgICAnPD5cLlwuXC4gKD9QPHJlYXNvbj4uKiknLAorICAgIHInPD5cLlwuXC4gKD9QPHJlYXNvbj4uKiknLAogICAgIHJlLmNvbXBpbGUocidePDw8IDVcZHsyfSAoP1A8cmVhc29uPi4qKScsIHJlLk1VTFRJTElORSksCiAgICAgcmUuY29tcGlsZSgnPT09PT0gc3RkZXJyIHdhcyA9PT09PVxucm1haWw6ICg/UDxyZWFzb24+LiopJyksCiAgICAgcmUuY29tcGlsZSgnXkRpYWdub3N0aWMtQ29kZTogKD9QPHJlYXNvbj4uKiknLCByZS5NVUxUSUxJTkUpLApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkgYi9Ub29scy9zY3JpcHRzL25tMmRlZi5weQppbmRleCA4ZjA3NTU5Li44M2JiY2Q3IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL25tMmRlZi5weQorKysgYi9Ub29scy9zY3JpcHRzL25tMmRlZi5weQpAQCAtMzYsOCArMzYsOCBAQAogIiIiCiBpbXBvcnQgb3MsIHN5cwogCi1QWVRIT05MSUIgPSAnbGlicHl0aG9uJytzeXMudmVyc2lvbls6M10rJy5hJwotUENfUFlUSE9OTElCID0gJ1B5dGhvbicrc3lzLnZlcnNpb25bMF0rc3lzLnZlcnNpb25bMl0rJy5kbGwnCitQWVRIT05MSUIgPSAnbGlicHl0aG9uJWQuJWQuYScgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQorUENfUFlUSE9OTElCID0gJ1B5dGhvbiVkJWQuZGxsJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiBOTSA9ICdubSAtcCAtZyAlcycgICAgICAgICAgICAgICAgICAgICAgIyBGb3IgTGludXgsIHVzZSAibm0gLWcgJXMiCiAKIGRlZiBzeW1ib2xzKGxpYj1QWVRIT05MSUIsdHlwZXM9KCdUJywnQycsJ0QnKSk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkgYi9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkKaW5kZXggYTA0MmQxYy4uYzY4NmIwMiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weQpAQCAtMTQsNyArMTQsNyBAQAogIiIiCiBpbXBvcnQgcmUsc3lzCiAKLWVudGl0eVJFID0gcmUuY29tcGlsZSgnPCFFTlRJVFkgKyhcdyspICtDREFUQSArIihbXiJdKykiICstLSArKCg/Oi58XG4pKz8pICotLT4nKQorZW50aXR5UkUgPSByZS5jb21waWxlKHInPCFFTlRJVFkgKyhcdyspICtDREFUQSArIihbXiJdKykiICstLSArKCg/Oi58XG4pKz8pICotLT4nKQogCiBkZWYgcGFyc2UodGV4dCxwb3M9MCxlbmRwb3M9Tm9uZSk6CiAKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgaWYgY2hhcmNvZGVbOjJdID09ICcmIyc6CiAgICAgICAgICAgICBjb2RlID0gaW50KGNoYXJjb2RlWzI6LTFdKQogICAgICAgICAgICAgaWYgY29kZSA8IDI1NjoKLSAgICAgICAgICAgICAgICBjaGFyY29kZSA9ICInXCVvJyIgJSBjb2RlCisgICAgICAgICAgICAgICAgY2hhcmNvZGUgPSByIidcJW8nIiAlIGNvZGUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY2hhcmNvZGUgPSByZXByKGNoYXJjb2RlKQogICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5IGIvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CmluZGV4IDIyNDMyZDEuLjU2MmJiYzcgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKQEAgLTY0LDcgKzY0LDcgQEAKICAgICAgICAgICAgIGlmIGZpeChhcmcpOiBiYWQgPSAxCiAgICAgc3lzLmV4aXQoYmFkKQogCi1pc3B5dGhvbnByb2cgPSByZS5jb21waWxlKCdeW2EtekEtWjAtOV9dK1wucHkkJykKK2lzcHl0aG9ucHJvZyA9IHJlLmNvbXBpbGUocideW2EtekEtWjAtOV9dK1wucHkkJykKIGRlZiBpc3B5dGhvbihuYW1lKToKICAgICByZXR1cm4gYm9vbChpc3B5dGhvbnByb2cubWF0Y2gobmFtZSkpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkgYi9Ub29scy9zY3JpcHRzL3B0YWdzLnB5CmluZGV4IGNhNjQzYjMuLjM5NmNiZDAgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wdGFncy5weQpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICBmb3IgcyBpbiB0YWdzOiBmcC53cml0ZShzKQogCiAKLWV4cHIgPSAnXlsgXHRdKihkZWZ8Y2xhc3MpWyBcdF0rKFthLXpBLVowLTlfXSspWyBcdF0qWzpcKF0nCitleHByID0gcideWyBcdF0qKGRlZnxjbGFzcylbIFx0XSsoW2EtekEtWjAtOV9dKylbIFx0XSpbOlwoXScKIG1hdGNoZXIgPSByZS5jb21waWxlKGV4cHIpCiAKIGRlZiB0cmVhdF9maWxlKGZpbGVuYW1lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHl2ZW52IGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKaW5kZXggOTc4ZDY5MS4uMWZiNDJjNiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9weXZlbnYKKysrIGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKQEAgLTEsNiArMSwxMiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgc3lzCisgICAgaW1wb3J0IHBhdGhsaWIKKworICAgIGV4ZWN1dGFibGUgPSBwYXRobGliLlBhdGgoc3lzLmV4ZWN1dGFibGUgb3IgJ3B5dGhvbjMnKS5uYW1lCisgICAgcHJpbnQoJ1dBUk5JTkc6IHRoZSBweWVudiBzY3JpcHQgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgJworICAgICAgICAgIGYnYHtleGVjdXRhYmxlfSAtbSB2ZW52YCcsIGZpbGU9c3lzLnN0ZGVycikKKwogICAgIHJjID0gMQogICAgIHRyeToKICAgICAgICAgaW1wb3J0IHZlbnYKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5IGIvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkKaW5kZXggOGFiZGQwMS4uNmM3MGRhOSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkKQEAgLTEsNiArMSw2IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi0iIiIKK3IiIiIKIFNWTiBoZWxwZXIgc2NyaXB0LgogCiBUcnkgdG8gc2V0IHRoZSBzdm46ZW9sLXN0eWxlIHByb3BlcnR5IHRvICJuYXRpdmUiIG9uIGV2ZXJ5IC5weSwgLnR4dCwgLmMgYW5kCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weSBiL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CmluZGV4IDk5ODM1MjguLjljMWU5ZmUgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CkBAIC03OCwxMSArNzgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBydW5uaW5nIHRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1lbnUgaXRlbSAoWXVjayEpCi1taXByb2cgPSByZS5jb21waWxlKCdeXCogKFteOl0qKTooOnxbIFx0XSooW15cdCxcbi5dKykoW14gXHRcbl0qKSlbIFx0XG5dKicpCi0jICAgICAgICAgICAgICAgICAgIDAgICAgMSAgICAgMSAyICAgICAgICAzICAgICAgICAgIDM0ICAgICAgICAgNDIgICAgICAgIDAKLSMgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gICAgICAgICAgICAtLS0tLS0tLS0tICAtLS0tLS0tLS0KLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbWlwcm9nID0gcmUuY29tcGlsZShyJ15cKiAoW146XSopOig6fFsgXHRdKihbXlx0LFxuLl0rKShbXiBcdFxuXSopKVsgXHRcbl0qJykKKyMgICAgICAgICAgICAgICAgICAgIDAgICAgMSAgICAgMSAyICAgICAgICAzICAgICAgICAgIDM0ICAgICAgICAgNDIgICAgICAgIDAKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tICAgICAgICAgICAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkgYi9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weQppbmRleCBkZDU3ZGNmLi4zMGQ1ZmNmIDEwMDY0NAotLS0gYS9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weQorKysgYi9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weQpAQCAtMTA1LDExICsxMDUsMTEgQEAKIAogICAgIGRlZiBfc3VicHJvY2Vzc19jYWxsKHNlbGYsIGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCwgZW52PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICAgICBsb2cuZGVidWcoIkNhbGwgJ3t9JyIuZm9ybWF0KCIgIi5qb2luKGNtZCkpKQorICAgICAgICBsb2cuZGVidWcoIkNhbGwgJyVzJyIsICIgIi5qb2luKGNtZCkpCiAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzdGRvdXQ9c3Rkb3V0LCBlbnY9ZW52LCAqKmt3YXJncykKIAogICAgIGRlZiBfc3VicHJvY2Vzc19vdXRwdXQoc2VsZiwgY21kLCBlbnY9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBsb2cuZGVidWcoIkNhbGwgJ3t9JyIuZm9ybWF0KCIgIi5qb2luKGNtZCkpKQorICAgICAgICBsb2cuZGVidWcoIkNhbGwgJyVzJyIsICIgIi5qb2luKGNtZCkpCiAgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgZW52PWVudikKICAgICAgICAgcmV0dXJuIG91dC5zdHJpcCgpLmRlY29kZSgidXRmLTgiKQogCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmhhc19zcmM6CiAgICAgICAgICAgICAgICAgc2VsZi5fZG93bmxvYWRfb3BlbnNzbCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQWxyZWFkeSBoYXMgc3JjIHt9Ii5mb3JtYXQoc2VsZi5zcmNfZmlsZSkpCisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJBbHJlYWR5IGhhcyBzcmMgJXMiLCBzZWxmLnNyY19maWxlKQogICAgICAgICAgICAgc2VsZi5fdW5wYWNrX29wZW5zc2woKQogICAgICAgICAgICAgc2VsZi5fYnVpbGRfb3BlbnNzbCgpCiAgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX29wZW5zc2woKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdHovemR1bXAucHkgYi9Ub29scy90ei96ZHVtcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTRiNDgzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvdHovemR1bXAucHkKQEAgLTAsMCArMSw4MSBAQAoraW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgc3RydWN0Citmcm9tIGFycmF5IGltcG9ydCBhcnJheQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQorCit0dGluZm8gPSBuYW1lZHR1cGxlKCd0dGluZm8nLCBbJ3R0X2dtdG9mZicsICd0dF9pc2RzdCcsICd0dF9hYmJyaW5kJ10pCisKK2NsYXNzIFRaSW5mbzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHJhbnNpdGlvbnMsIHR5cGVfaW5kaWNlcywgdHRpcywgYWJicnMpOgorICAgICAgICBzZWxmLnRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnMKKyAgICAgICAgc2VsZi50eXBlX2luZGljZXMgPSB0eXBlX2luZGljZXMKKyAgICAgICAgc2VsZi50dGlzID0gdHRpcworICAgICAgICBzZWxmLmFiYnJzID0gYWJicnMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tZmlsZShjbHMsIGZpbGVvYmopOgorICAgICAgICBpZiBmaWxlb2JqLnJlYWQoNCkuZGVjb2RlKCkgIT0gIlRaaWYiOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm90IGEgem9uZWluZm8gZmlsZSIpCisgICAgICAgIGZpbGVvYmouc2VlaygyMCkKKyAgICAgICAgaGVhZGVyID0gZmlsZW9iai5yZWFkKDI0KQorICAgICAgICB0emggPSAodHpoX3R0aXNnbXRjbnQsIHR6aF90dGlzc3RkY250LCB0emhfbGVhcGNudCwKKyAgICAgICAgICAgICAgIHR6aF90aW1lY250LCB0emhfdHlwZWNudCwgdHpoX2NoYXJjbnQpID0gc3RydWN0LnVucGFjaygiPjZsIiwgaGVhZGVyKQorICAgICAgICB0cmFuc2l0aW9ucyA9IGFycmF5KCdpJykKKyAgICAgICAgdHJhbnNpdGlvbnMuZnJvbWZpbGUoZmlsZW9iaiwgdHpoX3RpbWVjbnQpCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgIT0gJ2JpZyc6CisgICAgICAgICAgICB0cmFuc2l0aW9ucy5ieXRlc3dhcCgpCisKKyAgICAgICAgdHlwZV9pbmRpY2VzID0gYXJyYXkoJ0InKQorICAgICAgICB0eXBlX2luZGljZXMuZnJvbWZpbGUoZmlsZW9iaiwgdHpoX3RpbWVjbnQpCisKKyAgICAgICAgdHRpcyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKHR6aF90eXBlY250KToKKyAgICAgICAgICAgIHR0aXMuYXBwZW5kKHR0aW5mby5fbWFrZShzdHJ1Y3QudW5wYWNrKCI+bGJiIiwgZmlsZW9iai5yZWFkKDYpKSkpCisKKyAgICAgICAgYWJicnMgPSBmaWxlb2JqLnJlYWQodHpoX2NoYXJjbnQpCisKKyAgICAgICAgc2VsZiA9IGNscyh0cmFuc2l0aW9ucywgdHlwZV9pbmRpY2VzLCB0dGlzLCBhYmJycykKKyAgICAgICAgc2VsZi50emggPSB0emgKKworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGR1bXAoc2VsZiwgc3RyZWFtLCBzdGFydD1Ob25lLCBlbmQ9Tm9uZSk6CisgICAgICAgIGZvciBqLCAodHJhbnMsIGkpIGluIGVudW1lcmF0ZSh6aXAoc2VsZi50cmFuc2l0aW9ucywgc2VsZi50eXBlX2luZGljZXMpKToKKyAgICAgICAgICAgIHV0YyA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodHJhbnMpCisgICAgICAgICAgICB0dGkgPSBzZWxmLnR0aXNbaV0KKyAgICAgICAgICAgIGxtdCA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodHJhbnMgKyB0dGkudHRfZ210b2ZmKQorICAgICAgICAgICAgYWJicmluZCA9IHR0aS50dF9hYmJyaW5kCisgICAgICAgICAgICBhYmJyID0gc2VsZi5hYmJyc1thYmJyaW5kOnNlbGYuYWJicnMuZmluZCgwLCBhYmJyaW5kKV0uZGVjb2RlKCkKKyAgICAgICAgICAgIGlmIGogPiAwOgorICAgICAgICAgICAgICAgIHByZXZfdHRpID0gc2VsZi50dGlzW3NlbGYudHlwZV9pbmRpY2VzW2ogLSAxXV0KKyAgICAgICAgICAgICAgICBzaGlmdCA9ICIgJStnIiAlICgodHRpLnR0X2dtdG9mZiAtIHByZXZfdHRpLnR0X2dtdG9mZikgLyAzNjAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzaGlmdCA9ICcnCisgICAgICAgICAgICBwcmludCgiJXMgVVRDID0gJXMgJS01cyBpc2RzdD0lZCIgJSAodXRjLCBsbXQsIGFiYnIsIHR0aVsxXSkgKyBzaGlmdCwgZmlsZT1zdHJlYW0pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgem9uZWxpc3QoY2xzLCB6b25lZGlyPScvdXNyL3NoYXJlL3pvbmVpbmZvJyk6CisgICAgICAgIHpvbmVzID0gW10KKyAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoem9uZWRpcik6CisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBwID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHAsICdyYicpIGFzIG86CisgICAgICAgICAgICAgICAgICAgIG1hZ2ljID0gIG8ucmVhZCg0KQorICAgICAgICAgICAgICAgIGlmIG1hZ2ljID09IGInVFppZic6CisgICAgICAgICAgICAgICAgICAgIHpvbmVzLmFwcGVuZChwW2xlbih6b25lZGlyKSArIDE6XSkKKyAgICAgICAgcmV0dXJuIHpvbmVzCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaWYgbGVuKHN5cy5hcmd2KSA8IDI6CisgICAgICAgIHpvbmVzID0gVFpJbmZvLnpvbmVsaXN0KCkKKyAgICAgICAgZm9yIHogaW4gem9uZXM6CisgICAgICAgICAgICBwcmludCh6KQorICAgICAgICBzeXMuZXhpdCgpCisgICAgZmlsZXBhdGggPSBzeXMuYXJndlsxXQorICAgIGlmIG5vdCBmaWxlcGF0aC5zdGFydHN3aXRoKCcvJyk6CisgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5qb2luKCcvdXNyL3NoYXJlL3pvbmVpbmZvJywgZmlsZXBhdGgpCisgICAgd2l0aCBvcGVuKGZpbGVwYXRoLCAncmInKSBhcyBmaWxlb2JqOgorICAgICAgICB0emkgPSBUWkluZm8uZnJvbWZpbGUoZmlsZW9iaikKKyAgICB0emkuZHVtcChzeXMuc3Rkb3V0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weSBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKaW5kZXggNGMyMTQ2OS4uMzFmMDExMiAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQorKysgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CkBAIC0zNywxMSArMzcsMTEgQEAKICMgUGxhY2Vob2xkZXIgZm9yIGEgbWlzc2luZyBjb2RlIHBvaW50CiBNSVNTSU5HX0NPREUgPSAtMQogCi1tYXBSRSA9IHJlLmNvbXBpbGUoJygoPzoweFswLTlhLWZBLUZdK1wrPykrKScKLSAgICAgICAgICAgICAgICAgICAnXHMrJwotICAgICAgICAgICAgICAgICAgICcoKD86KD86MHhbMC05YS1mQS1aXSt8PFtBLVphLXpdKz4pXCs/KSopJwotICAgICAgICAgICAgICAgICAgICdccyonCi0gICAgICAgICAgICAgICAgICAgJygjLispPycpCittYXBSRSA9IHJlLmNvbXBpbGUocicoKD86MHhbMC05YS1mQS1GXStcKz8pKyknCisgICAgICAgICAgICAgICAgICAgcidccysnCisgICAgICAgICAgICAgICAgICAgcicoKD86KD86MHhbMC05YS1mQS1aXSt8PFtBLVphLXpdKz4pXCs/KSopJworICAgICAgICAgICAgICAgICAgIHInXHMqJworICAgICAgICAgICAgICAgICAgIHInKCMuKyk/JykKIAogZGVmIHBhcnNlY29kZXMoY29kZXMsIGxlbj1sZW4sIHJhbmdlPXJhbmdlKToKIApkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQppbmRleCA3MTNlMTc1Li41ZDgwMTRhIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQorKysgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQpAQCAtNDIsNyArNDIsNyBAQAogIyAgICogRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0LCBhbmQKICMgICAqIERvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAogIyAgICogRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCAodHdvIG9jY3VycmVuY2VzKQotVU5JREFUQV9WRVJTSU9OID0gIjguMC4wIgorVU5JREFUQV9WRVJTSU9OID0gIjkuMC4wIgogVU5JQ09ERV9EQVRBID0gIlVuaWNvZGVEYXRhJXMudHh0IgogQ09NUE9TSVRJT05fRVhDTFVTSU9OUyA9ICJDb21wb3NpdGlvbkV4Y2x1c2lvbnMlcy50eHQiCiBFQVNUQVNJQU5fV0lEVEggPSAiRWFzdEFzaWFuV2lkdGglcy50eHQiCkBAIC03OTYsNiArNzk2LDcgQEAKICAgICBjYXRlZ29yeV9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCiAgICAgZGVjaW1hbF9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCiAgICAgbWlycm9yZWRfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAorICAgIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAogICAgICMgSW4gbnVtZXJpYyBkYXRhLCAwIG1lYW5zICJubyBjaGFuZ2UiLAogICAgICMgLTEgbWVhbnMgImRpZCBub3QgaGF2ZSBhIG51bWVyaWMgdmFsdWUKICAgICBudW1lcmljX2NoYW5nZXMgPSBbMF0gKiAweDExMDAwMApAQCAtODYyLDYgKzg2Myw5IEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAxNDoKICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhbmdlIHRvIHNpbXBsZSB0aXRsZWNhc2UgbWFwcGluZzsgaWdub3JlCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAxNToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhbmdlIHRvIGVhc3QgYXNpYW4gd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlc1tpXSA9IEVBU1RBU0lBTldJRFRIX05BTUVTLmluZGV4KHZhbHVlKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMTY6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIGRlcml2ZWQgcHJvcGVydHkgY2hhbmdlczsgbm90IHlldAogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwpAQCAtODczLDggKzg3Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBEaWZmZXJlbmNlKEV4Y2VwdGlvbik6cGFzcwogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGlmZmVyZW5jZShoZXgoaSksIGssIG9sZC50YWJsZVtpXSwgbmV3LnRhYmxlW2ldKQogICAgIG5ldy5jaGFuZ2VkLmFwcGVuZCgodmVyc2lvbiwgbGlzdCh6aXAoYmlkaXJfY2hhbmdlcywgY2F0ZWdvcnlfY2hhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX2NoYW5nZXMsIG1pcnJvcmVkX2NoYW5nZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19jaGFuZ2VzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX2NoYW5nZXMsIG1pcnJvcmVkX2NoYW5nZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX2NoYW5nZXMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6YXRpb25fY2hhbmdlcykpCiAKIGRlZiBvcGVuX2RhdGEodGVtcGxhdGUsIHZlcnNpb24pOgpkaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKaW5kZXggMmE3NDVlNS4uOWE5Y2M1NSAxMDA2NDQKLS0tIGEvYWNsb2NhbC5tNAorKysgYi9hY2xvY2FsLm00CkBAIC0xMyw3ICsxMyw3IEBACiAKIG00X2lmbmRlZihbQUNfQ09ORklHX01BQ1JPX0RJUlNdLCBbbTRfZGVmdW4oW19BTV9DT05GSUdfTUFDUk9fRElSU10sIFtdKW00X2RlZnVuKFtBQ19DT05GSUdfTUFDUk9fRElSU10sIFtfQU1fQ09ORklHX01BQ1JPX0RJUlMoJEApXSldKQogZG5sIHBrZy5tNCAtIE1hY3JvcyB0byBsb2NhdGUgYW5kIHV0aWxpc2UgcGtnLWNvbmZpZy4gICAtKi0gQXV0b2NvbmYgLSotCi1kbmwgc2VyaWFsIDExIChwa2ctY29uZmlnLTAuMjkuMSkKK2RubCBzZXJpYWwgMTEgKHBrZy1jb25maWctMC4yOSkKIGRubAogZG5sIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QG5ldHNwbGl0LmNvbT4uCiBkbmwgQ29weXJpZ2h0IMKpIDIwMTItMjAxNSBEYW4gTmljaG9sc29uIDxkYm4ubGlzdHNAZ21haWwuY29tPgpAQCAtNTUsNyArNTUsNyBAQAogZG5sIFNlZSB0aGUgIlNpbmNlIiBjb21tZW50IGZvciBlYWNoIG1hY3JvIHlvdSB1c2UgdG8gc2VlIHdoYXQgdmVyc2lvbgogZG5sIG9mIHRoZSBtYWNyb3MgeW91IHJlcXVpcmUuCiBtNF9kZWZ1bihbUEtHX1BSRVJFUV0sCi1bbTRfZGVmaW5lKFtQS0dfTUFDUk9TX1ZFUlNJT05dLCBbMC4yOS4xXSkKK1ttNF9kZWZpbmUoW1BLR19NQUNST1NfVkVSU0lPTl0sIFswLjI5XSkKIG00X2lmKG00X3ZlcnNpb25fY29tcGFyZShQS0dfTUFDUk9TX1ZFUlNJT04sIFskMV0pLCAtMSwKICAgICBbbTRfZmF0YWwoW3BrZy5tNCB2ZXJzaW9uICQxIG9yIGhpZ2hlciBpcyByZXF1aXJlZCBidXQgXVBLR19NQUNST1NfVkVSU0lPTlsgZm91bmRdKV0pCiBdKWRubCBQS0dfUFJFUkVRCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggMTlmY2JkMS4uMDAwOTg2ZiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw2ICsxLDYgQEAKICMhIC9iaW4vc2gKICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBweXRob24gMy41LgorIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjYuCiAjCiAjIFJlcG9ydCBidWdzIHRvIDxodHRwczovL2J1Z3MucHl0aG9uLm9yZy8+LgogIwpAQCAtNTgwLDggKzU4MCw4IEBACiAjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KIFBBQ0tBR0VfTkFNRT0ncHl0aG9uJwogUEFDS0FHRV9UQVJOQU1FPSdweXRob24nCi1QQUNLQUdFX1ZFUlNJT049JzMuNScKLVBBQ0tBR0VfU1RSSU5HPSdweXRob24gMy41JworUEFDS0FHRV9WRVJTSU9OPSczLjYnCitQQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuNicKIFBBQ0tBR0VfQlVHUkVQT1JUPSdodHRwczovL2J1Z3MucHl0aG9uLm9yZy8nCiBQQUNLQUdFX1VSTD0nJwogCkBAIC02NDIsMTEgKzY0MiwxMyBAQAogTUFDSERFUF9PQkpTCiBEWU5MT0FERklMRQogRExJTkNMRElSCitEVFJBQ0VfT0JKUworRFRSQUNFX0hFQURFUlMKK0RGTEFHUworRFRSQUNFCiBUSFJFQURPQkoKIExETEFTVAogVVNFX1RIUkVBRF9NT0RVTEUKLVNJR05BTF9PQkpTCi1VU0VfU0lHTkFMX01PRFVMRQogVENMVEtfTElCUwogVENMVEtfSU5DTFVERVMKIExJQkZGSV9JTkNMVURFRElSCkBAIC03MDgsMTIgKzcxMCwxMyBAQAogQlVJTERFWEVFWFQKIEVHUkVQCiBOT19BU19ORUVERUQKK01VTFRJQVJDSF9DUFBGTEFHUwogUExBVEZPUk1fVFJJUExFVAotUExBVERJUgogTVVMVElBUkNICiBhY19jdF9DWFgKIE1BSU5DQwogQ1hYCitTRUQKIEdSRVAKIENQUAogT0JKRVhUCkBAIC03ODEsNyArNzg0LDYgQEAKIGRvY2Rpcgogb2xkaW5jbHVkZWRpcgogaW5jbHVkZWRpcgotcnVuc3RhdGVkaXIKIGxvY2Fsc3RhdGVkaXIKIHNoYXJlZHN0YXRlZGlyCiBzeXNjb25mZGlyCkBAIC04MjcsMTQgKzgyOSwxMyBAQAogd2l0aF90Y2x0a19pbmNsdWRlcwogd2l0aF90Y2x0a19saWJzCiB3aXRoX2RibWxpYm9yZGVyCi13aXRoX3NpZ25hbF9tb2R1bGUKIHdpdGhfdGhyZWFkcwogd2l0aF90aHJlYWQKIGVuYWJsZV9pcHY2CiB3aXRoX2RvY19zdHJpbmdzCi13aXRoX3RzYwogd2l0aF9weW1hbGxvYwogd2l0aF92YWxncmluZAord2l0aF9kdHJhY2UKIHdpdGhfZnBlY3RsCiB3aXRoX2xpYm0KIHdpdGhfbGliYwpAQCAtODkzLDcgKzg5NCw2IEBACiBzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJwogc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCiBsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJwotcnVuc3RhdGVkaXI9JyR7bG9jYWxzdGF0ZWRpcn0vcnVuJwogaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCiBvbGRpbmNsdWRlZGlyPScvdXNyL2luY2x1ZGUnCiBkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0VfVEFSTkFNRX0nCkBAIC0xMTQ2LDE1ICsxMTQ2LDYgQEAKICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCiAgICAgc2lsZW50PXllcyA7OwogCi0gIC1ydW5zdGF0ZWRpciB8IC0tcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGkgfCAtLXJ1bnN0YXRlZCBcCi0gIHwgLS1ydW5zdGF0ZSB8IC0tcnVuc3RhdCB8IC0tcnVuc3RhIHwgLS1ydW5zdCB8IC0tcnVucyBcCi0gIHwgLS1ydW4gfCAtLXJ1IHwgLS1yKQotICAgIGFjX3ByZXY9cnVuc3RhdGVkaXIgOzsKLSAgLXJ1bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRlZGk9KiB8IC0tcnVuc3RhdGVkPSogXAotICB8IC0tcnVuc3RhdGU9KiB8IC0tcnVuc3RhdD0qIHwgLS1ydW5zdGE9KiB8IC0tcnVuc3Q9KiB8IC0tcnVucz0qIFwKLSAgfCAtLXJ1bj0qIHwgLS1ydT0qIHwgLS1yPSopCi0gICAgcnVuc3RhdGVkaXI9JGFjX29wdGFyZyA7OwotCiAgIC1zYmluZGlyIHwgLS1zYmluZGlyIHwgLS1zYmluZGkgfCAtLXNiaW5kIHwgLS1zYmluIHwgLS1zYmkgfCAtLXNiKQogICAgIGFjX3ByZXY9c2JpbmRpciA7OwogICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXApAQCAtMTI5Miw3ICsxMjgzLDcgQEAKIGZvciBhY192YXIgaW4JZXhlY19wcmVmaXggcHJlZml4IGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YXJvb3RkaXIgXAogCQlkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwKIAkJb2xkaW5jbHVkZWRpciBkb2NkaXIgaW5mb2RpciBodG1sZGlyIGR2aWRpciBwZGZkaXIgcHNkaXIgXAotCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpciBydW5zdGF0ZWRpcgorCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpcgogZG8KICAgZXZhbCBhY192YWw9XCQkYWNfdmFyCiAgICMgUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMuCkBAIC0xNDA1LDcgKzEzOTYsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjUgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNiB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNDQ1LDcgKzE0MzYsNiBAQAogICAtLXN5c2NvbmZkaXI9RElSICAgICAgICByZWFkLW9ubHkgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL2V0Y10KICAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbUFJFRklYL2NvbV0KICAgLS1sb2NhbHN0YXRlZGlyPURJUiAgICAgbW9kaWZpYWJsZSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvdmFyXQotICAtLXJ1bnN0YXRlZGlyPURJUiAgICAgICBtb2RpZmlhYmxlIHBlci1wcm9jZXNzIGRhdGEgW0xPQ0FMU1RBVEVESVIvcnVuXQogICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgW0VQUkVGSVgvbGliXQogICAtLWluY2x1ZGVkaXI9RElSICAgICAgICBDIGhlYWRlciBmaWxlcyBbUFJFRklYL2luY2x1ZGVdCiAgIC0tb2xkaW5jbHVkZWRpcj1ESVIgICAgIEMgaGVhZGVyIGZpbGVzIGZvciBub24tZ2NjIFsvdXNyL2luY2x1ZGVdCkBAIC0xNDcyLDcgKzE0NjIsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjU6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy42OiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE1MzEsMTUgKzE1MjEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gY2hlY2sgZGIgYmFja2VuZHMgZm9yIGRibS4gVmFsaWQgdmFsdWUgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbiBzZXBhcmF0ZWQgc3RyaW5nIHdpdGggdGhlIGJhY2tlbmQgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgYG5kYm0nLCBgZ2RibScgYW5kIGBiZGInLgotICAtLXdpdGgtc2lnbmFsLW1vZHVsZSAgICBkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlCiAgIC0td2l0aChvdXQpLXRocmVhZHNbPURJUkVDVE9SWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZS9lbmFibGUgdGhyZWFkIHN1cHBvcnQKICAgLS13aXRoKG91dCktdGhyZWFkWz1ESVJFQ1RPUlldCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHJlY2F0ZWQ7IHVzZSAtLXdpdGgob3V0KS10aHJlYWRzCiAgIC0td2l0aChvdXQpLWRvYy1zdHJpbmdzIGRpc2FibGUvZW5hYmxlIGRvY3VtZW50YXRpb24gc3RyaW5ncwotICAtLXdpdGgob3V0KS10c2MgICAgICAgICBlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlCiAgIC0td2l0aChvdXQpLXB5bWFsbG9jICAgIGRpc2FibGUvZW5hYmxlIHNwZWNpYWxpemVkIG1hbGxvY3MKICAgLS13aXRoLXZhbGdyaW5kICAgICAgICAgRW5hYmxlIFZhbGdyaW5kIHN1cHBvcnQKKyAgLS13aXRoKG91dCktZHRyYWNlICAgICAgZGlzYWJsZS9lbmFibGUgRFRyYWNlIHN1cHBvcnQKICAgLS13aXRoLWZwZWN0bCAgICAgICAgICAgZW5hYmxlIFNJR0ZQRSBjYXRjaGluZwogICAtLXdpdGgtbGlibT1TVFJJTkcgICAgICBtYXRoIGxpYnJhcnkKICAgLS13aXRoLWxpYmM9U1RSSU5HICAgICAgQyBsaWJyYXJ5CkBAIC0xNjMxLDcgKzE2MjAsNyBAQAogdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCiBpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgIGNhdCA8PFxfQUNFT0YKLXB5dGhvbiBjb25maWd1cmUgMy41CitweXRob24gY29uZmlndXJlIDMuNgogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5CiAKIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTE5ODQsMTM2ICsxOTczLDYgQEAKIAogfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQogCi0jIGFjX2ZuX2NfZmluZF91aW50WF90IExJTkVOTyBCSVRTIFZBUgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRmluZHMgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIKLSMgYWNjb3JkaW5nbHkuCi1hY19mbl9jX2ZpbmRfdWludFhfdCAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVpbnQkMl90IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciB1aW50JDJfdC4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGV2YWwgIiQzPW5vIgotICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAtIG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKLSAgICAgIyB0aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KLSAgICAgZm9yIGFjX3R5cGUgaW4gdWludCQyX3QgJ3Vuc2lnbmVkIGludCcgJ3Vuc2lnbmVkIGxvbmcgaW50JyBcCi0JICd1bnNpZ25lZCBsb25nIGxvbmcgaW50JyAndW5zaWduZWQgc2hvcnQgaW50JyAndW5zaWduZWQgY2hhcic7IGRvCi0gICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCgkYWNfdHlwZSkgLTEgPj4gKCQyIC8gMiAtIDEpKSA+PiAoJDIgLyAyIC0gMSkgPT0gMyldOwotdGVzdF9hcnJheSBbMF0gPSAwOwotcmV0dXJuIHRlc3RfYXJyYXkgWzBdOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgY2FzZSAkYWNfdHlwZSBpbiAjKAotICB1aW50JDJfdCkgOgotICAgIGV2YWwgIiQzPXllcyIgOzsgIygKLSAgKikgOgotICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKLWVzYWMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYnJlYWsKLWZpCi0gICAgIGRvbmUKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2ZpbmRfdWludFhfdAotCi0jIGFjX2ZuX2NfZmluZF9pbnRYX3QgTElORU5PIEJJVFMgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEZpbmRzIGEgc2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHdpZHRoIEJJVFMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSCi0jIGFjY29yZGluZ2x5LgotYWNfZm5fY19maW5kX2ludFhfdCAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGludCQyX3QiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGludCQyX3QuLi4gIiA+JjY7IH0KLWlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBldmFsICIkMz1ubyIKLSAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVjayBhIHR5cGUgdGhhdCBpcyBwb3RlbnRpYWxseSBzbWFsbGVyCi0gICAgICMgdGhhbiBoYWxmIG9mIHRoZSBleHBlY3RlZCB0YXJnZXQgd2lkdGguCi0gICAgIGZvciBhY190eXBlIGluIGludCQyX3QgJ2ludCcgJ2xvbmcgaW50JyBcCi0JICdsb25nIGxvbmcgaW50JyAnc2hvcnQgaW50JyAnc2lnbmVkIGNoYXInOyBkbwotICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0JICAgICBlbnVtIHsgTiA9ICQyIC8gMiAtIDEgfTsKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoMCA8ICgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDEpKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotCSAgICAgICAgZW51bSB7IE4gPSAkMiAvIDIgLSAxIH07Ci1pbnQKLW1haW4gKCkKLXsKLXN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDEpCi0JCSA8ICgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDIpKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gIGNhc2UgJGFjX3R5cGUgaW4gIygKLSAgaW50JDJfdCkgOgotICAgIGV2YWwgIiQzPXllcyIgOzsgIygKLSAgKikgOgotICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKLWVzYWMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYnJlYWsKLWZpCi0gICAgIGRvbmUKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2ZpbmRfaW50WF90Ci0KICMgYWNfZm5fY19jb21wdXRlX2ludCBMSU5FTk8gRVhQUiBWQVIgSU5DTFVERVMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVHJpZXMgdG8gZmluZCB0aGUgY29tcGlsZS10aW1lIHZhbHVlIG9mIEVYUFIgaW4gYSBwcm9ncmFtIHRoYXQgaW5jbHVkZXMKQEAgLTI0NzAsNyArMjMyOSw3IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjUsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtMzA1OSw3ICsyOTE4LDcgQEAKICAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KICAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbwogCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQotCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywzKSknOyB0aGVuCisJICAgIGlmICRpbnRlcnAgLWMgImltcG9ydCBzeXM7c3lzLmV4aXQobm90ICcuJy5qb2luKHN0cihuKSBmb3IgbiBpbiBzeXMudmVyc2lvbl9pbmZvWzoyXSkgPT0gJyRQQUNLQUdFX1ZFUlNJT04nKSI7IHRoZW4KIAkgICAgICAgIGJyZWFrCiAJICAgIGZpCiAgICAgICAgICAgICBpbnRlcnA9CkBAIC0zMDY5LDcgKzI5MjgsNyBAQAogCWZpCiAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaW50ZXJwIiA+JjUKICRhc19lY2hvICIkaW50ZXJwIiA+JjY7IH0KLQlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliLyQoUExBVERJUikgJyRpbnRlcnAKKwlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYiBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT1fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKSAnJGludGVycAogICAgIGZpCiAgICAgIyBVc2VkIHRvIGNvbW1lbnQgb3V0IHN0dWZmIGZvciByZWJ1aWxkaW5nIGdlbmVyYXRlZCBmaWxlcwogICAgIEdFTkVSQVRFRF9DT01NRU5UPScjJwpAQCAtMzA5Nyw3ICsyOTU2LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuNQorVkVSU0lPTj0zLjYKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtNDcxNiw2ICs0NTc1LDc1IEBACiAgR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9TRUQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAgICAgICAgICAgYWNfc2NyaXB0PXMvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLworICAgICBmb3IgYWNfaSBpbiAxIDIgMyA0IDUgNiA3OyBkbworICAgICAgIGFjX3NjcmlwdD0iJGFjX3NjcmlwdCRhc19ubCRhY19zY3JpcHQiCisgICAgIGRvbmUKKyAgICAgZWNobyAiJGFjX3NjcmlwdCIgMj4vZGV2L251bGwgfCBzZWQgOTlxID5jb25mdGVzdC5zZWQKKyAgICAgeyBhY19zY3JpcHQ9OyB1bnNldCBhY19zY3JpcHQ7fQorICAgICBpZiB0ZXN0IC16ICIkU0VEIjsgdGhlbgorICBhY19wYXRoX1NFRF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gc2VkIGdzZWQ7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX1NFRD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfU0VEIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfU0VEIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9TRUQKK2Nhc2UgYCIkYWNfcGF0aF9TRUQiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0aF9TRUQiIGFjX3BhdGhfU0VEX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICcnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfU0VEIiAtZiBjb25mdGVzdC5zZWQgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX1NFRF9tYXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRoX1NFRCIKKyAgICAgIGFjX3BhdGhfU0VEX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3BhdGhfU0VEX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9TRUQ9JFNFRAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9TRUQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX1NFRCIgPiY2OyB9CisgU0VEPSIkYWNfY3ZfcGF0aF9TRUQiCisgIHJtIC1mIGNvbmZ0ZXN0LnNlZAorCiAKIAogCkBAIC01Mjg5LDcgKzUyMTcsMzEgQEAKICN1bmRlZiBwb3dlcnBjCiAjdW5kZWYgc3BhcmMKICN1bmRlZiB1bml4Ci0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorICAgICAgICB4ODZfNjQtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAgIGk2ODYtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NC1saW51eC1hbmRyb2lkCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWFuZHJvaWRlYWJpCisjIGVsaWYgZGVmaW5lZChfX21pcHNfaGFyZF9mbG9hdCkgJiYgZGVmaW5lZChfTUlQU0VMKQorIyAgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgICAgICAgbWlwc2VsLWxpbnV4LWFuZHJvaWQKKyMgIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorICAgICAgICBtaXBzNjRlbC1saW51eC1hbmRyb2lkCisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQogICAgICAgICB4ODZfNjQtbGludXgtZ251CiAjIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fSUxQMzJfXykKQEAgLTU0MDUsMTAgKzUzNTcsMTMgQEAKICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KICAgICBhc19mbl9lcnJvciAkPyAiaW50ZXJuYWwgY29uZmlndXJlIGVycm9yIGZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCwgcGxlYXNlIGZpbGUgYSBidWcgcmVwb3J0IiAiJExJTkVOTyIgNQogICBmaQorZWxpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggPSB4OyB0aGVuCisgIE1VTFRJQVJDSD0kUExBVEZPUk1fVFJJUExFVAogZmkKLVBMQVRESVI9cGxhdC0kTUFDSERFUAogCi0KK2lmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgorICBNVUxUSUFSQ0hfQ1BQRkxBR1M9Ii1ETVVMVElBUkNIPVxcXCIkTVVMVElBUkNIXFxcIiIKK2ZpCiAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLVdsLC0tbm8tYXMtbmVlZGVkIiA+JjUKQEAgLTU3MDIsNiArNTY1NywzMiBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdGhlIEFuZHJvaWQgQVBJIGxldmVsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwuLi4gIiA+JjY7IH0KK2NhdCA+PiBjb25mdGVzdC5jIDw8RU9GCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorX19BTkRST0lEX0FQSV9fCisjZWxzZQorI2Vycm9yIG5vdCBBbmRyb2lkCisjZW5kaWYKK0VPRgorCitpZiAkQ1BQICRDUFBGTEFHUyBjb25mdGVzdC5jID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgQU5EUk9JRF9BUElfTEVWRUw9YGdyZXAgLXYgJ14jJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICdeICokJ2AKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBTkRST0lEX0FQSV9MRVZFTCIgPiY1CiskYXNfZWNobyAiJEFORFJPSURfQVBJX0xFVkVMIiA+JjY7IH0KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBBTkRST0lEX0FQSV9MRVZFTCAkQU5EUk9JRF9BUElfTEVWRUwKK19BQ0VPRgorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub3QgQW5kcm9pZCIgPiY1CiskYXNfZWNobyAibm90IEFuZHJvaWQiID4mNjsgfQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKICMgQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIHN5c3RlbXMKIGNhc2UgJGFjX3N5c19zeXN0ZW0vJGFjX3N5c19yZWxlYXNlIGluCiBhdGhlb3MqfExpbnV4Ki8xKikKQEAgLTY2MDQsMTMgKzY1ODUsMjAgQEAKIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgogICBjYXNlICRDQyBpbgogICAgICpjbGFuZyopCi0gICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgRGFyd2luKikKKyAgICAgICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICA7OworICAgICAgZXNhYwogICAgICAgOzsKICAgICAqZ2NjKikKICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KICAgICAgICAgRGFyd2luKikKLSAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1XbCwtZXhwb3J0X2R5bmFtaWMiCiAgICAgICAgICAgOzsKICAgICAgICAgKikKICAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLWZ1c2UtbGlua2VyLXBsdWdpbiAtZmZhdC1sdG8tb2JqZWN0cyAtZmx0by1wYXJ0aXRpb249bm9uZSIKQEAgLTY5MTgsNiArNjkwNiw0OSBAQAogIyB0d2VhayBCQVNFQ0ZMQUdTIGJhc2VkIG9uIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybQogY2FzZSAkR0NDIGluCiB5ZXMpCisgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLXN0ZD1jOTkiCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2V4dHJhIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2V4dHJhLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV2V4dHJhIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZXh0cmFfd2FybmluZ3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyAgICAgICAgICAgYWNfY3ZfZXh0cmFfd2FybmluZ3M9eWVzCisKK2Vsc2UKKworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4dHJhX3dhcm5pbmdzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZXh0cmFfd2FybmluZ3MiID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZXh0cmFfd2FybmluZ3MgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2V4dHJhIgorICAgIGZpCisKICAgICAjIFB5dGhvbiBkb2Vzbid0IHZpb2xhdGUgQzk5IGFsaWFzaW5nIHJ1bGVzLCBidXQgb2xkZXIgdmVyc2lvbnMgb2YKICAgICAjIEdDQyBwcm9kdWNlIHdhcm5pbmdzIGZvciBsZWdhbCBQeXRob24gY29kZS4gIEVuYWJsZQogICAgICMgLWZuby1zdHJpY3QtYWxpYXNpbmcgb24gdmVyc2lvbnMgb2YgR0NDIHRoYXQgc3VwcG9ydCBidXQgcHJvZHVjZQpAQCAtNzAzOCwxNCArNzA2OSwxNCBAQAogICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nID0geWVzCiAgICAgdGhlbgogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVduby11bnVzZWQtcmVzdWx0IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcmVzdWx0IgogICAgIGZpCiAKLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQuLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nLi4uICIgPiY2OyB9CiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIGlmICR7YWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgorICAgICBDQz0iJENDIC1XdW51c2VkLXBhcmFtZXRlciAtV2Vycm9yIgorICAgICBpZiAke2FjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtNzA2MywyNCArNzA5NCw2NCBAQAogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcwogCiBlbHNlCiAKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9bm8KKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9bm8KIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIAotICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmciID4mNQotJGFzX2VjaG8gIiRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nIiA+JjY7IH0KIAotICAgIGlmIHRlc3QgJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nID0geWVzCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCi0gICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXBhcmFtZXRlciIKKyAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXJzIHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzIiA+JjY7IH0KKworICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIgogICAgIGZpCiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZyIgPiY1CkBAIC03NzEwLDcgKzc3ODEsNyBAQAogZm9yIGFjX2hlYWRlciBpbiBhc20vdHlwZXMuaCBjb25pby5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKIGllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAogcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCiBzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKQEAgLTc3MTksNyArNzc5MCw3IEBACiBzeXMvc3RhdC5oIHN5cy9zeXNjYWxsLmggc3lzL3N5c19kb21haW4uaCBzeXMvdGVybWlvLmggc3lzL3RpbWUuaCBcCiBzeXMvdGltZXMuaCBzeXMvdHlwZXMuaCBzeXMvdWlvLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIFwKIGxpYnV0aWwuaCBzeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCi1ibHVldG9vdGgvYmx1ZXRvb3RoLmggbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKK2xpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCiBzeXMvZW5kaWFuLmgKIGRvIDoKICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYApAQCAtNzk0Miw2ICs4MDEzLDI0IEBACiBmaQogCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorZm9yIGFjX2hlYWRlciBpbiBibHVldG9vdGgvYmx1ZXRvb3RoLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImJsdWV0b290aC9ibHVldG9vdGguaCIgImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0JMVUVUT09USF9CTFVFVE9PVEhfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBmb3IgYWNfaGVhZGVyIGluIG5ldC9pZi5oCiBkbyA6CkBAIC04MTQ3LDYgKzgyMzYsMTEgQEAKICAgdXNlX2xmcz1ubwogZmkKIAorIyBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkCitjYXNlICRhY19zeXNfc3lzdGVtIGluIEdOVSopCisgIHVzZV9sZnM9bm8KK2VzYWMKKwogaWYgdGVzdCAiJHVzZV9sZnMiID0gInllcyI7IHRoZW4KICMgVHdvIGRlZmluZXMgbmVlZGVkIHRvIGVuYWJsZSBsYXJnZWZpbGUgc3VwcG9ydCBvbiB2YXJpb3VzIHBsYXRmb3JtcwogIyBUaGVzZSBtYXkgYWZmZWN0IHNvbWUgdHlwZWRlZnMKQEAgLTgyNTMsOTUgKzgzNDcsNiBAQAogZmkKIAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJ1aW50MzJfdCIgImFjX2N2X3R5cGVfdWludDMyX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91aW50MzJfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotYWNfZm5fY19maW5kX3VpbnRYX3QgIiRMSU5FTk8iICIzMiIgImFjX2N2X2NfdWludDMyX3QiCi1jYXNlICRhY19jdl9jX3VpbnQzMl90IGluICMoCi0gIG5vfHllcykgOzsgIygKLSAgKikKLQotJGFzX2VjaG8gIiNkZWZpbmUgX1VJTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgdWludDMyX3QgJGFjX2N2X2NfdWludDMyX3QKLV9BQ0VPRgotOzsKLSAgZXNhYwotCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnQ2NF90IiAiYWNfY3ZfdHlwZV91aW50NjRfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX3VpbnQ2NF90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1VJTlQ2NF9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjY0IiAiYWNfY3ZfY191aW50NjRfdCIKLWNhc2UgJGFjX2N2X2NfdWludDY0X3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi0kYXNfZWNobyAiI2RlZmluZSBfVUlOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSB1aW50NjRfdCAkYWNfY3ZfY191aW50NjRfdAotX0FDRU9GCi07OwotICBlc2FjCi0KLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiaW50MzJfdCIgImFjX2N2X3R5cGVfaW50MzJfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX2ludDMyX3QiID0geHllczsgdGhlbiA6Ci0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotYWNfZm5fY19maW5kX2ludFhfdCAiJExJTkVOTyIgIjMyIiAiYWNfY3ZfY19pbnQzMl90IgotY2FzZSAkYWNfY3ZfY19pbnQzMl90IGluICMoCi0gIG5vfHllcykgOzsgIygKLSAgKikKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBpbnQzMl90ICRhY19jdl9jX2ludDMyX3QKLV9BQ0VPRgotOzsKLWVzYWMKLQotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJpbnQ2NF90IiAiYWNfY3ZfdHlwZV9pbnQ2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50NjRfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX2ludDY0X3QiCi1jYXNlICRhY19jdl9jX2ludDY0X3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIGludDY0X3QgJGFjX2N2X2NfaW50NjRfdAotX0FDRU9GCi07OwotZXNhYwotCi0KIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNzaXplX3QiICJhY19jdl90eXBlX3NzaXplX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKIGlmIHRlc3QgIngkYWNfY3ZfdHlwZV9zc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgogCkBAIC04NDI5LDYgKzg0MzQsMzkgQEAKICMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKICMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgogIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmcuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgbG9uZykpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorCitlbHNlCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX2xvbmdfbG9uZyIgPSB5ZXM7IHRoZW4KKyAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGxvbmcpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorICAgZWxzZQorICAgICBhY19jdl9zaXplb2ZfbG9uZ19sb25nPTAKKyAgIGZpCitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY2OyB9CisKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcKK19BQ0VPRgorCisKKyMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCisjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCisjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KKyMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2Ygdm9pZCAqIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2Ygdm9pZCAqLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X3NpemVvZl92b2lkX3ArOn0gZmFsc2U7IHRoZW4gOgpAQCAtODY1Niw2NyArODY5NCwzOSBAQAogX0FDRU9GCiAKIAotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGxvbmcgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9uZyBsb25nIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWhhdmVfbG9uZ19sb25nPW5vCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLQotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxIiA+PmNvbmZkZWZzLmgKLQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2xvbmdfbG9uZyIgPiY1Ci0kYXNfZWNobyAiJGhhdmVfbG9uZ19sb25nIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZy4uLiAiID4mNjsgfQotaWYgJHthY19jdl9zaXplb2ZfbG9uZ19sb25nKzp9IGZhbHNlOyB0aGVuIDoKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiB1aW50cHRyX3QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiB1aW50cHRyX3QuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0gIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgbG9uZykpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mICh1aW50cHRyX3QpKSIgImFjX2N2X3NpemVvZl91aW50cHRyX3QiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKIAogZWxzZQotICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9sb25nX2xvbmciID0geWVzOyB0aGVuCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX3VpbnRwdHJfdCIgPSB5ZXM7IHRoZW4KICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGxvbmcpCithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mICh1aW50cHRyX3QpCiBTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZWxzZQotICAgICBhY19jdl9zaXplb2ZfbG9uZ19sb25nPTAKKyAgICAgYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdD0wCiAgICBmaQogZmkKIAogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgPiY2OyB9CiAKIAogCiBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcKKyNkZWZpbmUgU0laRU9GX1VJTlRQVFJfVCAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdAogX0FDRU9GCiAKIAotZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydC4uLiAiID4mNjsgfQpAQCAtODc3OSwzMyArODc4OSw2IEBACiAKIGZpCiAKLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0Jvb2wgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgX0Jvb2wgc3VwcG9ydC4uLiAiID4mNjsgfQotaGF2ZV9jOTlfYm9vbD1ubwotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLV9Cb29sIHg7IHggPSAoX0Jvb2wpMDsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQzk5X0JPT0wgMSIgPj5jb25mZGVmcy5oCi0KLSAgaGF2ZV9jOTlfYm9vbD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2M5OV9ib29sIiA+JjUKLSRhc19lY2hvICIkaGF2ZV9jOTlfYm9vbCIgPiY2OyB9Ci1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCkBAIC04ODM5LDU2ICs4ODIyLDYgQEAKIF9BQ0VPRgogCiAKLWZpCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnRwdHJfdCIgImFjX2N2X3R5cGVfdWludHB0cl90IiAiI2lmZGVmIEhBVkVfU1RESU5UX0gKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAgICAgICAjZW5kaWYKLSAgICAgICAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgICAgICAgI2VuZGlmCi0iCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHh5ZXM7IHRoZW4gOgotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIEhBVkVfVUlOVFBUUl9UIDEKLV9BQ0VPRgotCi0jIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgotIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwotIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCi0jIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9zaXplb2ZfdWludHB0cl90Kzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAodWludHB0cl90KSkiICJhY19jdl9zaXplb2ZfdWludHB0cl90IiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6Ci0KLWVsc2UKLSAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHllczsgdGhlbgotICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKHVpbnRwdHJfdCkKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci0gICBlbHNlCi0gICAgIGFjX2N2X3NpemVvZl91aW50cHRyX3Q9MAotICAgZmkKLWZpCi0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNQotJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjY7IH0KLQotCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgU0laRU9GX1VJTlRQVFJfVCAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdAotX0FDRU9GCi0KLQotZmkKLQogCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwpAQCAtODkzMSw4ICs4ODY0LDYgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbGFyZ2UgZmlsZSBzdXBwb3J0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogCkBAIC04OTQ0LDEwICs4ODc1LDYgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCiAKICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCkBAIC0xMDEwNSwxMSArMTAwMzIsMjcgQEAKICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtX2ZmaSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfc3lzdGVtX2ZmaStzZXR9IiA9IHNldDsgdGhlbiA6CiAgIHdpdGh2YWw9JHdpdGhfc3lzdGVtX2ZmaTsKLWVsc2UKLSAgd2l0aF9zeXN0ZW1fZmZpPSJubyIKIGZpCiAKIAorY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBhc19mbl9lcnJvciAkPyAiLS13aXRoLXN5c3RlbS1mZmkgYWNjZXB0cyBubyBhcmd1bWVudHMiICIkTElORU5PIiA1CisgICAgICAgIDs7Citlc2FjCisKIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9mZmkiID0gInllcyIgJiYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCiAgICAgTElCRkZJX0lOQ0xVREVESVI9ImAiJFBLR19DT05GSUciIGxpYmZmaSAtLWNmbGFncy1vbmx5LUkgMj4vZGV2L251bGwgfCBzZWQgLWUgJ3MvXi1JLy87cy8gKiQvLydgIgogZWxzZQpAQCAtMTAyMTIsMzIgKzEwMTU1LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kYm1saWJvcmRlciIgPiY1CiAkYXNfZWNobyAiJHdpdGhfZGJtbGlib3JkZXIiID4mNjsgfQogCi0jIERldGVybWluZSBpZiBzaWduYWxtb2R1bGUgc2hvdWxkIGJlIHVzZWQuCi0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXNpZ25hbC1tb2R1bGUiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc2lnbmFsLW1vZHVsZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfc2lnbmFsX21vZHVsZTsKLWZpCi0KLQotaWYgdGVzdCAteiAiJHdpdGhfc2lnbmFsX21vZHVsZSIKLXRoZW4gd2l0aF9zaWduYWxfbW9kdWxlPSJ5ZXMiCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3NpZ25hbF9tb2R1bGUiID4mNQotJGFzX2VjaG8gIiR3aXRoX3NpZ25hbF9tb2R1bGUiID4mNjsgfQotCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZX0iID0gInllcyI7IHRoZW4KLQlVU0VfU0lHTkFMX01PRFVMRT0iIgotCVNJR05BTF9PQkpTPSIiCi1lbHNlCi0JVVNFX1NJR05BTF9NT0RVTEU9IiMiCi0JU0lHTkFMX09CSlM9IlBhcnNlci9pbnRyY2hlY2subyBQeXRob24vc2lnY2hlY2subyIKLWZpCi0KICMgVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIFNldHVwLmNvbmZpZwogCiBVU0VfVEhSRUFEX01PRFVMRT0iIgpAQCAtMTEwNTQsMzcgKzEwOTcxLDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIuLi4gIiA+JjY7IH0KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotaW50Ci1tYWluICgpCi17Ci1GU0lPUmVmTnVtIGZSZWYgPSAwCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfT1NYMTA1X1NESyAxIiA+PmNvbmZkZWZzLmgKLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotCi1lbHNlCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQogIyBDaGVjayBmb3IgLS13aXRoLWRvYy1zdHJpbmdzCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncy4uLiAiID4mNjsgfQpAQCAtMTExMDcsMjkgKzEwOTkzLDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kb2Nfc3RyaW5ncyIgPiY1CiAkYXNfZWNobyAiJHdpdGhfZG9jX3N0cmluZ3MiID4mNjsgfQogCi0jIENoZWNrIGlmIGV2YWwgbG9vcCBzaG91bGQgdXNlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGluZwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXRzYyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXRzYy4uLiAiID4mNjsgfQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXRzYyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfdHNjK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF90c2M7Ci1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9UU0MgMSIgPj5jb25mZGVmcy5oCi0KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotZWxzZSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1weW1hbGxvYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXB5bWFsbG9jLi4uICIgPiY2OyB9CkBAIC0xMTE4Miw2ICsxMTA0NSwxMDIgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZHRyYWNlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9kdHJhY2Urc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2R0cmFjZTsKK2Vsc2UKKyAgd2l0aF9kdHJhY2U9bm8KK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kdHJhY2UiID4mNQorJGFzX2VjaG8gIiR3aXRoX2R0cmFjZSIgPiY2OyB9CisKKworCisKKworRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkdHJhY2UiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGR0cmFjZTsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfRFRSQUNFKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkRFRSQUNFIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0RUUkFDRT0iJERUUkFDRSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfRFRSQUNFPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0RUUkFDRSIgJiYgYWNfY3ZfcGF0aF9EVFJBQ0U9Im5vdCBmb3VuZCIKKyAgOzsKK2VzYWMKK2ZpCitEVFJBQ0U9JGFjX2N2X3BhdGhfRFRSQUNFCitpZiB0ZXN0IC1uICIkRFRSQUNFIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERUUkFDRSIgPiY1CiskYXNfZWNobyAiJERUUkFDRSIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgaWYgdGVzdCAiJERUUkFDRSIgPSAibm90IGZvdW5kIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiZHRyYWNlIGNvbW1hbmQgbm90IGZvdW5kIG9uIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgICBmaQorCiskYXNfZWNobyAiI2RlZmluZSBXSVRIX0RUUkFDRSAxIiA+PmNvbmZkZWZzLmgKKworICAgIERUUkFDRV9IRUFERVJTPSJJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oIgorCisgICAgIyBPbiBPUyBYLCBEVHJhY2UgcHJvdmlkZXJzIGRvIG5vdCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgY29tcGlsZWQgYW5kCisgICAgIyBsaW5rZWQgaW50byB0aGUgYmluYXJ5LiBDb3JyZXNwb25kaW5nbHksIGR0cmFjZSgxKSBpcyBtaXNzaW5nIHRoZSBFTEYKKyAgICAjIGdlbmVyYXRpb24gZmxhZyAnLUcnLiBXZSBjaGVjayBmb3IgcHJlc2VuY2Ugb2YgdGhpcyBmbGFnLCByYXRoZXIgdGhhbgorICAgICMgaGFyZGNvZGluZyBzdXBwb3J0IGJ5IE9TLCBpbiB0aGUgaW50ZXJlc3Qgb2Ygcm9idXN0bmVzcy4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBEVHJhY2UgcHJvYmVzIHJlcXVpcmUgbGlua2luZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9kdHJhY2VfbGluays6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPW5vCisgICAgICAgICAgICBlY2hvICdCRUdJTicgPiBjb25mdGVzdC5kCisgICAgICAgICAgICAiJERUUkFDRSIgLUcgLXMgY29uZnRlc3QuZCAtbyBjb25mdGVzdC5vID4gL2Rldi9udWxsIDI+JjEgJiYgXAorICAgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPXllcworCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kdHJhY2VfbGluayIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2R0cmFjZV9saW5rIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICIkYWNfY3ZfZHRyYWNlX2xpbmsiID0gInllcyI7IHRoZW4KKyAgICAgICAgRFRSQUNFX09CSlM9IlB5dGhvbi9weWR0cmFjZS5vIgorICAgIGZpCitmaQorCiAjIC1JJHtETElOQ0xESVJ9IGlzIGFkZGVkIHRvIHRoZSBjb21waWxlIHJ1bGUgZm9yIGltcG9ydGRsLm8KIAogRExJTkNMRElSPS4KQEAgLTEyNjEyLDYgKzEyNTcxLDY0IEBACiBkb25lCiAKIAorZm9yIGFjX2Z1bmMgaW4gY2xvY2tfc2V0dGltZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJjbG9ja19zZXR0aW1lIiAiYWNfY3ZfZnVuY19jbG9ja19zZXR0aW1lIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX3NldHRpbWUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9DTE9DS19TRVRUSU1FIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19zZXR0aW1lIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX3NldHRpbWUgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX3NldHRpbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19zZXR0aW1lICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWUiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19TRVRUSU1FIDEiID4+Y29uZmRlZnMuaAorCisKK2ZpCisKKworZmkKK2RvbmUKKworCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBtYWpvciIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbWFqb3IuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTEzMDI5LDYgKzEzMDQ2LDMzIEBACiAKIGZpCiAKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHBhc3N3ZCIgInB3X2dlY29zIiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfZ2Vjb3MiICIKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CisKKyIKK2lmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfZ2Vjb3MiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX0dFQ09TIDEKK19BQ0VPRgorCisKK2ZpCithY19mbl9jX2NoZWNrX21lbWJlciAiJExJTkVOTyIgInN0cnVjdCBwYXNzd2QiICJwd19wYXNzd2QiICJhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19wYXNzd2QiICIKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CisKKyIKK2lmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfcGFzc3dkIiA9IHh5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QgMQorX0FDRU9GCisKKworZmkKKwogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRpbWUuaCB0aGF0IGRlZmluZXMgYWx0em9uZS4uLiAiID4mNjsgfQpAQCAtMTMxNjAsNiArMTMyMDQsNDEgQEAKIAogZmkKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc29ja2FkZHJfYWxnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzb2NrYWRkcl9hbGcuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworIwkJaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjCQlpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjCQlpbmNsdWRlIDxsaW51eC9pZl9hbGcuaD4KK2ludAorbWFpbiAoKQoreworc3RydWN0IHNvY2thZGRyX2FsZyBzCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZz15ZXMKK2Vsc2UKKyAgYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZyIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU09DS0FERFJfQUxHIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAjIGNoZWNrcyBmb3IgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBjaGFyIGlzIHVuc2lnbmVkIiA+JjUKQEAgLTEzNDQ4LDQwICsxMzUyNyw2IEBACiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAKLXZhX2xpc3RfaXNfYXJyYXk9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdmFfbGlzdCBpcyBhbiBhcnJheS4uLiAiID4mNjsgfQotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0jaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDx2YXJhcmdzLmg+Ci0jZW5kaWYKLQotaW50Ci1tYWluICgpCi17Ci12YV9saXN0IGxpc3QxLCBsaXN0MjsgbGlzdDEgPSBsaXN0MjsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0KLQotJGFzX2VjaG8gIiNkZWZpbmUgVkFfTElTVF9JU19BUlJBWSAxIiA+PmNvbmZkZWZzLmgKLQotIHZhX2xpc3RfaXNfYXJyYXk9eWVzCi0KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkdmFfbGlzdF9pc19hcnJheSIgPiY1Ci0kYXNfZWNobyAiJHZhX2xpc3RfaXNfYXJyYXkiID4mNjsgfQotCiAjIHNpZ2ggLS0gZ2V0aG9zdGJ5bmFtZV9yIGlzIGEgbWVzczsgaXQgY2FuIGhhdmUgMywgNSBvciA2IGFyZ3VtZW50cyA6LSgKIAogCkBAIC0xNDMzOSw2ICsxNDM4NCw4NSBAQAogCiBmaQogCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX0xBWlkiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9MQVpZIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0xBWlkiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX0xBWlkgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX05PVyIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PVyIgIiNpbmNsdWRlIDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9OT1ciID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX05PVyAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfR0xPQkFMIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfR0xPQkFMIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0dMT0JBTCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfR0xPQkFMICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9MT0NBTCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0xPQ0FMIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0xPQ0FMIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9MT0NBTCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9ERUxFVEUiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9OT0RFTEVURSIgIiNpbmNsdWRlIDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9OT0RFTEVURSIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX05PTE9BRCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PTE9BRCIgIiNpbmNsdWRlIDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9OT0xPQUQiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX05PTE9BRCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfREVFUEJJTkQiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9ERUVQQklORCIgIiNpbmNsdWRlIDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9ERUVQQklORCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQgJGFjX2hhdmVfZGVjbAorX0FDRU9GCisKKwogIyBkZXRlcm1pbmUgd2hhdCBzaXplIGRpZ2l0IHRvIHVzZSBmb3IgUHl0aG9uJ3MgbG9uZ3MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3MuLi4gIiA+JjY7IH0KQEAgLTE0NzcyLDcgKzE0ODk2LDExIEBACiAkYXNfZWNobyAiJExEVkVSU0lPTiIgPiY2OyB9CiAKIAotTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCitpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCA9IHg7IHRoZW4KKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCitlbHNlCisgIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059LSR7UExBVEZPUk1fVFJJUExFVH0iCitmaQogCiAKICMgQ2hlY2sgd2hldGhlciByaWdodCBzaGlmdGluZyBhIG5lZ2F0aXZlIGludGVnZXIgZXh0ZW5kcyB0aGUgc2lnbiBiaXQKQEAgLTE1ODQ1LDEwMiArMTU5NzMsNiBAQAogCiBmaQogCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICVsbGQgYW5kICVsbHUgcHJpbnRmKCkgZm9ybWF0IHN1cHBvcnQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICVsbGQgYW5kICVsbHUgcHJpbnRmKCkgZm9ybWF0IHN1cHBvcnQuLi4gIiA+JjY7IH0KLSAgaWYgJHthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCi0gICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgotICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKLSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCi0KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCi0gICBmaQotZWxzZQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgI2luY2x1ZGUgPHN0cmluZy5oPgotCi0gICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICi0gICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgI2VuZGlmCi0KLSAgaW50IG1haW4oKQotICB7Ci0gICAgICBjaGFyIGJ1ZmZlclsyNTZdOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiLTEyMyIpKQotICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIHJldHVybiAwOwotICB9Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLWVsc2UKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vCi1maQotcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAotICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAotZmkKLQotCi1maQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0IiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0IiA+JjY7IH0KLWZpCi0KLWlmIHRlc3QgIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID0geWVzCi10aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIFBZX0ZPUk1BVF9MT05HX0xPTkcgXCJsbFwiIiA+PmNvbmZkZWZzLmgKLQotZmkKLQogaWYgdGVzdCAkYWNfc3lzX3N5c3RlbSA9IERhcndpbgogdGhlbgogCUxJQlM9IiRMSUJTIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24iCkBAIC0xNzAxNCw3ICsxNzA0Niw3IEBACiAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCiBhY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuNSwgd2hpY2ggd2FzCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy42LCB3aGljaCB3YXMKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKQEAgLTE3MDc2LDcgKzE3MTA4LDcgQEAKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQogYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIKIGFjX2NzX3ZlcnNpb249IlxcCi1weXRob24gY29uZmlnLnN0YXR1cyAzLjUKK3B5dGhvbiBjb25maWcuc3RhdHVzIDMuNgogY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LAogICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKIApAQCAtMTc4MjgsNyArMTc4NjAsNyBAQAogaWYgdGVzdCAiJFB5X09QVCIgPSAnZmFsc2UnIC1hICIkUHlfREVCVUciICE9ICd0cnVlJzsgdGhlbgogICAgIGVjaG8gIiIgPiY2CiAgICAgZWNobyAiIiA+JjYKLSAgICBlY2hvICJJZiB5b3Ugd2FudCBhIHJlbGVhc2UgYnVpbGQgd2l0aCBhbGwgb3B0aW1pemF0aW9ucyBhY3RpdmUgKExUTywgUEdPLCBldGMpLCIKKyAgICBlY2hvICJJZiB5b3Ugd2FudCBhIHJlbGVhc2UgYnVpbGQgd2l0aCBhbGwgb3B0aW1pemF0aW9ucyBhY3RpdmUgKExUTywgUEdPLCBldGMpLCIgPiY2CiAgICAgZWNobyAicGxlYXNlIHJ1biAuL2NvbmZpZ3VyZSAtLXdpdGgtb3B0aW1pemF0aW9ucyIgPiY2CiAgICAgZWNobyAiIiA+JjYKICAgICBlY2hvICIiID4mNgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDM4MWJhYjAuLjhjZTJhZTkgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTMsNyArMyw3IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNSkKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy42KQogCiBBQ19QUkVSRVEoMi42NSkKIApAQCAtNjksNyArNjksNyBAQAogICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgogICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCiAJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCi0JICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AID49ICgzLDMpKSc7IHRoZW4KKwkgICAgaWYgJGludGVycCAtYyAiaW1wb3J0IHN5cztzeXMuZXhpdChub3QgJy4nLmpvaW4oc3RyKG4pIGZvciBuIGluIHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AKSA9PSAnJFBBQ0tBR0VfVkVSU0lPTicpIjsgdGhlbgogCSAgICAgICAgYnJlYWsKIAkgICAgZmkKICAgICAgICAgICAgIGludGVycD0KQEAgLTc4LDcgKzc4LDcgQEAKIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCiAJZmkKICAgICAgICAgQUNfTVNHX1JFU1VMVCgkaW50ZXJwKQotCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAnJGludGVycAorCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliIF9QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FPV9zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpXyQoTUFDSERFUClfJChNVUxUSUFSQ0gpICckaW50ZXJwCiAgICAgZmkKICAgICAjIFVzZWQgdG8gY29tbWVudCBvdXQgc3R1ZmYgZm9yIHJlYnVpbGRpbmcgZ2VuZXJhdGVkIGZpbGVzCiAgICAgR0VORVJBVEVEX0NPTU1FTlQ9JyMnCkBAIC02OTQsNiArNjk0LDcgQEAKIEFDX1BST0dfQ0MKIEFDX1BST0dfQ1BQCiBBQ19QUk9HX0dSRVAKK0FDX1BST0dfU0VECiAKIEFDX1NVQlNUKENYWCkKIEFDX1NVQlNUKE1BSU5DQykKQEAgLTc2OCw3ICs3NjksMzEgQEAKICN1bmRlZiBwb3dlcnBjCiAjdW5kZWYgc3BhcmMKICN1bmRlZiB1bml4Ci0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorICAgICAgICB4ODZfNjQtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAgIGk2ODYtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NC1saW51eC1hbmRyb2lkCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWFuZHJvaWRlYWJpCisjIGVsaWYgZGVmaW5lZChfX21pcHNfaGFyZF9mbG9hdCkgJiYgZGVmaW5lZChfTUlQU0VMKQorIyAgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgICAgICAgbWlwc2VsLWxpbnV4LWFuZHJvaWQKKyMgIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorICAgICAgICBtaXBzNjRlbC1saW51eC1hbmRyb2lkCisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQogICAgICAgICB4ODZfNjQtbGludXgtZ251CiAjIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fSUxQMzJfXykKQEAgLTg4MiwxMSArOTA3LDE0IEBACiAgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCiAgICAgQUNfTVNHX0VSUk9SKFtpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnRdKQogICBmaQorZWxpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggPSB4OyB0aGVuCisgIE1VTFRJQVJDSD0kUExBVEZPUk1fVFJJUExFVAogZmkKLVBMQVRESVI9cGxhdC0kTUFDSERFUAotQUNfU1VCU1QoUExBVERJUikKIEFDX1NVQlNUKFBMQVRGT1JNX1RSSVBMRVQpCi0KK2lmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgorICBNVUxUSUFSQ0hfQ1BQRkxBR1M9Ii1ETVVMVElBUkNIPVxcXCIkTVVMVElBUkNIXFxcIiIKK2ZpCitBQ19TVUJTVChNVUxUSUFSQ0hfQ1BQRkxBR1MpCiAKIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtOTAzLDYgKzkzMSwyNSBAQAogIyBjaGVja3MgZm9yIFVOSVggdmFyaWFudHMgdGhhdCBzZXQgQyBwcmVwcm9jZXNzb3IgdmFyaWFibGVzCiBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKIAorQUNfTVNHX0NIRUNLSU5HKFtmb3IgdGhlIEFuZHJvaWQgQVBJIGxldmVsXSkKK2NhdCA+PiBjb25mdGVzdC5jIDw8RU9GCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorX19BTkRST0lEX0FQSV9fCisjZWxzZQorI2Vycm9yIG5vdCBBbmRyb2lkCisjZW5kaWYKK0VPRgorCitpZiAkQ1BQICRDUFBGTEFHUyBjb25mdGVzdC5jID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgQU5EUk9JRF9BUElfTEVWRUw9YGdyZXAgLXYgJ14jJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICdeICokJ2AKKyAgQUNfTVNHX1JFU1VMVChbJEFORFJPSURfQVBJX0xFVkVMXSkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKEFORFJPSURfQVBJX0xFVkVMLCAkQU5EUk9JRF9BUElfTEVWRUwsIFtUaGUgQW5kcm9pZCBBUEkgbGV2ZWwuXSkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChbbm90IEFuZHJvaWRdKQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKICMgQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIHN5c3RlbXMKIGNhc2UgJGFjX3N5c19zeXN0ZW0vJGFjX3N5c19yZWxlYXNlIGluCiBhdGhlb3MqfExpbnV4Ki8xKikKQEAgLTEyNzcsMTMgKzEzMjQsMjAgQEAKIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgogICBjYXNlICRDQyBpbgogICAgICpjbGFuZyopCi0gICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgRGFyd2luKikKKyAgICAgICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICA7OworICAgICAgZXNhYwogICAgICAgOzsKICAgICAqZ2NjKikKICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KICAgICAgICAgRGFyd2luKikKLSAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1XbCwtZXhwb3J0X2R5bmFtaWMiCiAgICAgICAgICAgOzsKICAgICAgICAgKikKICAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLWZ1c2UtbGlua2VyLXBsdWdpbiAtZmZhdC1sdG8tb2JqZWN0cyAtZmx0by1wYXJ0aXRpb249bm9uZSIKQEAgLTE0NjEsNiArMTUxNSwyOCBAQAogIyB0d2VhayBCQVNFQ0ZMQUdTIGJhc2VkIG9uIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybQogY2FzZSAkR0NDIGluCiB5ZXMpCisgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLXN0ZD1jOTkiCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC1XZXh0cmEpCisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV2V4dHJhIC1XZXJyb3IiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9leHRyYV93YXJuaW5ncywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKyAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZXh0cmFfd2FybmluZ3M9eWVzCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZXh0cmFfd2FybmluZ3M9bm8KKyAgICAgICAgIF0pKQorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZXh0cmFfd2FybmluZ3MpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9leHRyYV93YXJuaW5ncyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXh0cmEiCisgICAgZmkKKwogICAgICMgUHl0aG9uIGRvZXNuJ3QgdmlvbGF0ZSBDOTkgYWxpYXNpbmcgcnVsZXMsIGJ1dCBvbGRlciB2ZXJzaW9ucyBvZgogICAgICMgR0NDIHByb2R1Y2Ugd2FybmluZ3MgZm9yIGxlZ2FsIFB5dGhvbiBjb2RlLiAgRW5hYmxlCiAgICAgIyAtZm5vLXN0cmljdC1hbGlhc2luZyBvbiB2ZXJzaW9ucyBvZiBHQ0MgdGhhdCBzdXBwb3J0IGJ1dCBwcm9kdWNlCkBAIC0xNTI1LDI4ICsxNjAxLDQ3IEBACiAgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLXVudXNlZC1yZXN1bHQiCiAgICAgZmkKIAotICAgIEFDX01TR19DSEVDS0lORyhmb3IgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQpCisgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nKQogICAgICBhY19zYXZlX2NjPSIkQ0MiCi0gICAgIENDPSIkQ0MgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQiCi0gICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcsCisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcGFyYW1ldGVyIC1XZXJyb3IiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZywKICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKICAgICAgICAgIFsKLQkgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKLQkgXSxbCi0gICAgICAgICAgIGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nPXllcwotCSBdLFsKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9bm8KLQkgXSkpCi0gICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZz1ubworICAgICAgICAgXSkpCiAgICAgIENDPSIkYWNfc2F2ZV9jYyIKLSAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZykKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZykKIAotICAgIGlmIHRlc3QgJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nID0geWVzCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCi0gICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXBhcmFtZXRlciIKKyAgICBmaQorCisgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgbWlzc2luZyBmaWVsZCBpbml0aWFsaXplcnMgd2FybmluZykKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMsCisgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICBbCisgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnM9eWVzCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz1ubworICAgICAgICAgXSkpCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzKQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiCiAgICAgZmkKIAogICAgIEFDX01TR19DSEVDS0lORyhpZiB3ZSBjYW4gdHVybiBvbiAkQ0MgbWl4ZWQgc2lnbiBjb21wYXJpc29uIHdhcm5pbmcpCkBAIC0xOTQxLDcgKzIwMzYsNyBAQAogQUNfQ0hFQ0tfSEVBREVSUyhhc20vdHlwZXMuaCBjb25pby5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKIGllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAogcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCiBzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKQEAgLTE5NTAsMTEgKzIwNDUsMTggQEAKIHN5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKIHN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAogbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKLWJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAorbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKIHN5cy9lbmRpYW4uaCkKIEFDX0hFQURFUl9ESVJFTlQKIEFDX0hFQURFUl9NQUpPUgogCisjIGJsdWV0b290aC9ibHVldG9vdGguaCBoYXMgYmVlbiBrbm93biB0byBub3QgY29tcGlsZSB3aXRoIC1zdGQ9Yzk5LgorIyBodHRwOi8vcGVybWFsaW5rLmdtYW5lLm9yZy9nbWFuZS5saW51eC5ibHVlei5rZXJuZWwvMjIyOTQKK1NBVkVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iLXN0ZD1jOTkgJENGTEFHUyIKK0FDX0NIRUNLX0hFQURFUlMoYmx1ZXRvb3RoL2JsdWV0b290aC5oKQorQ0ZMQUdTPSRTQVZFX0NGTEFHUworCiAjIE9uIERhcndpbiAoT1MgWCkgbmV0L2lmLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oIHRvIGJlIGltcG9ydGVkIGZpcnN0LgogQUNfQ0hFQ0tfSEVBREVSUyhbbmV0L2lmLmhdLCBbXSwgW10sCiBbI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0yMDQ4LDYgKzIxNTAsMTEgQEAKICAgdXNlX2xmcz1ubwogZmkKIAorIyBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkCitjYXNlICRhY19zeXNfc3lzdGVtIGluIEdOVSopCisgIHVzZV9sZnM9bm8KK2VzYWMKKwogaWYgdGVzdCAiJHVzZV9sZnMiID0gInllcyI7IHRoZW4KICMgVHdvIGRlZmluZXMgbmVlZGVkIHRvIGVuYWJsZSBsYXJnZWZpbGUgc3VwcG9ydCBvbiB2YXJpb3VzIHBsYXRmb3JtcwogIyBUaGVzZSBtYXkgYWZmZWN0IHNvbWUgdHlwZWRlZnMKQEAgLTIwNzgsMjkgKzIxODUsNiBAQAogQUNfVFlQRV9TSVpFX1QKIEFDX1RZUEVfVUlEX1QKIAotIyBUaGVyZSBhcmUgdHdvIHNlcGFyYXRlIGNoZWNrcyBmb3IgZWFjaCBvZiB0aGUgZXhhY3Qtd2lkdGggaW50ZWdlciB0eXBlcyB3ZQotIyBuZWVkLiAgRmlyc3Qgd2UgY2hlY2sgd2hldGhlciB0aGUgdHlwZSBpcyBhdmFpbGFibGUgdXNpbmcgdGhlIHVzdWFsCi0jIEFDX0NIRUNLX1RZUEUgbWFjcm8gd2l0aCB0aGUgZGVmYXVsdCBpbmNsdWRlcyAod2hpY2ggaW5jbHVkZXMgPGludHR5cGVzLmg+Ci0jIGFuZCA8c3RkaW50Lmg+IHdoZXJlIGF2YWlsYWJsZSkuICBXZSB0aGVuIGFsc28gdXNlIHRoZSBzcGVjaWFsIHR5cGUgY2hlY2tzIG9mCi0jIHRoZSBmb3JtIEFDX1RZUEVfVUlOVDMyX1QsIHdoaWNoIGluIHRoZSBjYXNlIHRoYXQgdWludDMyX3QgaXMgbm90IGF2YWlsYWJsZQotIyBkaXJlY3RseSwgI2RlZmluZSdzIHVpbnQzMl90IHRvIGJlIGEgc3VpdGFibGUgdHlwZS4KLQotQUNfQ0hFQ0tfVFlQRSh1aW50MzJfdCwKLSAgQUNfREVGSU5FKEhBVkVfVUlOVDMyX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyB1aW50MzJfdC5dKSwsKQotQUNfVFlQRV9VSU5UMzJfVAotCi1BQ19DSEVDS19UWVBFKHVpbnQ2NF90LAotICBBQ19ERUZJTkUoSEFWRV9VSU5UNjRfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQ2NF90Ll0pLCwpCi1BQ19UWVBFX1VJTlQ2NF9UCi0KLUFDX0NIRUNLX1RZUEUoaW50MzJfdCwKLSAgQUNfREVGSU5FKEhBVkVfSU5UMzJfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIGludDMyX3QuXSksLCkKLUFDX1RZUEVfSU5UMzJfVAotCi1BQ19DSEVDS19UWVBFKGludDY0X3QsCi0gIEFDX0RFRklORShIQVZFX0lOVDY0X1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQ2NF90Ll0pLCwpCi1BQ19UWVBFX0lOVDY0X1QKLQogQUNfQ0hFQ0tfVFlQRShzc2l6ZV90LAogICBBQ19ERUZJTkUoSEFWRV9TU0laRV9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgc3NpemVfdF0pLCwpCiBBQ19DSEVDS19UWVBFKF9fdWludDEyOF90LApAQCAtMjExMCw2ICsyMTk0LDcgQEAKICMgQU5TSSBDIHJlcXVpcmVzIHNpemVvZihjaGFyKSA9PSAxLCBzbyBubyBuZWVkIHRvIGNoZWNrIGl0CiBBQ19DSEVDS19TSVpFT0YoaW50LCA0KQogQUNfQ0hFQ0tfU0laRU9GKGxvbmcsIDQpCitBQ19DSEVDS19TSVpFT0YobG9uZyBsb25nLCA4KQogQUNfQ0hFQ0tfU0laRU9GKHZvaWQgKiwgNCkKIEFDX0NIRUNLX1NJWkVPRihzaG9ydCwgMikKIEFDX0NIRUNLX1NJWkVPRihmbG9hdCwgNCkKQEAgLTIxMTcsMTcgKzIyMDIsNyBAQAogQUNfQ0hFQ0tfU0laRU9GKGZwb3NfdCwgNCkKIEFDX0NIRUNLX1NJWkVPRihzaXplX3QsIDQpCiBBQ19DSEVDS19TSVpFT0YocGlkX3QsIDQpCi0KLUFDX01TR19DSEVDS0lORyhmb3IgbG9uZyBsb25nIHN1cHBvcnQpCi1oYXZlX2xvbmdfbG9uZz1ubwotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW2xvbmcgbG9uZyB4OyB4ID0gKGxvbmcgbG9uZykwO11dKV0sWwotICBBQ19ERUZJTkUoSEFWRV9MT05HX0xPTkcsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBsb25nIGxvbmcuXSkKLSAgaGF2ZV9sb25nX2xvbmc9eWVzCi1dLFtdKQotQUNfTVNHX1JFU1VMVCgkaGF2ZV9sb25nX2xvbmcpCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzIDsgdGhlbgotQUNfQ0hFQ0tfU0laRU9GKGxvbmcgbG9uZywgOCkKLWZpCitBQ19DSEVDS19TSVpFT0YodWludHB0cl90KQogCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGxvbmcgZG91YmxlIHN1cHBvcnQpCiBoYXZlX2xvbmdfZG91YmxlPW5vCkBAIC0yMTQwLDI2ICsyMjE1LDcgQEAKIEFDX0NIRUNLX1NJWkVPRihsb25nIGRvdWJsZSwgMTYpCiBmaQogCi0KLUFDX01TR19DSEVDS0lORyhmb3IgX0Jvb2wgc3VwcG9ydCkKLWhhdmVfYzk5X2Jvb2w9bm8KLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tfQm9vbCB4OyB4ID0gKF9Cb29sKTA7XV0pXSxbCi0gIEFDX0RFRklORShIQVZFX0M5OV9CT09MLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgX0Jvb2wuXSkKLSAgaGF2ZV9jOTlfYm9vbD15ZXMKLV0sW10pCi1BQ19NU0dfUkVTVUxUKCRoYXZlX2M5OV9ib29sKQotaWYgdGVzdCAiJGhhdmVfYzk5X2Jvb2wiID0geWVzIDsgdGhlbgogQUNfQ0hFQ0tfU0laRU9GKF9Cb29sLCAxKQotZmkKLQotQUNfQ0hFQ0tfVFlQRVModWludHB0cl90LAotICAgW0FDX0NIRUNLX1NJWkVPRih1aW50cHRyX3QsIDQpXSwKLSAgIFtdLCBbI2lmZGVmIEhBVkVfU1RESU5UX0gKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAgICAgICAjZW5kaWYKLSAgICAgICAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgICAgICAgI2VuZGlmXSkKIAogQUNfQ0hFQ0tfU0laRU9GKG9mZl90LCBbXSwgWwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKQEAgLTIxNjgsOCArMjIyNCw2IEBACiBdKQogCiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBlbmFibGUgbGFyZ2UgZmlsZSBzdXBwb3J0KQotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwotdGhlbgogaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9vZmZfdCIgLWd0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciIC1hIFwKIAkiJGFjX2N2X3NpemVvZl9sb25nX2xvbmciIC1nZSAiJGFjX2N2X3NpemVvZl9vZmZfdCI7IHRoZW4KICAgQUNfREVGSU5FKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQsIDEsCkBAIC0yMTgxLDkgKzIyMzUsNiBAQAogZWxzZQogICBBQ19NU0dfUkVTVUxUKG5vKQogZmkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLWZpCiAKIEFDX0NIRUNLX1NJWkVPRih0aW1lX3QsIFtdLCBbCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSApAQCAtMjc0Miw5ICsyNzkzLDI1IEBACiAjIENoZWNrIGZvciB1c2Ugb2YgdGhlIHN5c3RlbSBsaWJmZmkgbGlicmFyeQogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtc3lzdGVtLWZmaSkKIEFDX0FSR19XSVRIKHN5c3RlbV9mZmksCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbS1mZmldLCBbYnVpbGQgX2N0eXBlcyBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGZmaSBsaWJyYXJ5XSksCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFt3aXRoX3N5c3RlbV9mZmk9Im5vIl0pCisgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbS1mZmldLCBbYnVpbGQgX2N0eXBlcyBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGZmaSBsaWJyYXJ5XSksLCwpCisKK2Nhc2UgIiR3aXRoX3N5c3RlbV9mZmkiIGluCisgICAgIiIpCisgICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgICAgIERhcndpbikKKyAgICAgICAgICAgICAgICB3aXRoX3N5c3RlbV9mZmk9Im5vIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ieWVzIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKyAgICB5ZXN8bm8pCisgICAgICAgIDs7CisgICAgKikKKyAgICAgICAgQUNfTVNHX0VSUk9SKFstLXdpdGgtc3lzdGVtLWZmaSBhY2NlcHRzIG5vIGFyZ3VtZW50c10pCisgICAgICAgIDs7Citlc2FjCiAKIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9mZmkiID0gInllcyIgJiYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCiAgICAgTElCRkZJX0lOQ0xVREVESVI9ImAiJFBLR19DT05GSUciIGxpYmZmaSAtLWNmbGFncy1vbmx5LUkgMj4vZGV2L251bGwgfCBzZWQgLWUgJ3MvXi1JLy87cy8gKiQvLydgIgpAQCAtMjgxOSwyNiArMjg4Niw2IEBACiBmaV0pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2RibWxpYm9yZGVyKQogCi0jIERldGVybWluZSBpZiBzaWduYWxtb2R1bGUgc2hvdWxkIGJlIHVzZWQuCi1BQ19TVUJTVChVU0VfU0lHTkFMX01PRFVMRSkKLUFDX1NVQlNUKFNJR05BTF9PQkpTKQotQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtc2lnbmFsLW1vZHVsZSkKLUFDX0FSR19XSVRIKHNpZ25hbC1tb2R1bGUsCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXNpZ25hbC1tb2R1bGVdLCBbZGlzYWJsZS9lbmFibGUgc2lnbmFsIG1vZHVsZV0pKQotCi1pZiB0ZXN0IC16ICIkd2l0aF9zaWduYWxfbW9kdWxlIgotdGhlbiB3aXRoX3NpZ25hbF9tb2R1bGU9InllcyIKLWZpCi1BQ19NU0dfUkVTVUxUKCR3aXRoX3NpZ25hbF9tb2R1bGUpCi0KLWlmIHRlc3QgIiR7d2l0aF9zaWduYWxfbW9kdWxlfSIgPSAieWVzIjsgdGhlbgotCVVTRV9TSUdOQUxfTU9EVUxFPSIiCi0JU0lHTkFMX09CSlM9IiIKLWVsc2UKLQlVU0VfU0lHTkFMX01PRFVMRT0iIyIKLQlTSUdOQUxfT0JKUz0iUGFyc2VyL2ludHJjaGVjay5vIFB5dGhvbi9zaWdjaGVjay5vIgotZmkKLQogIyBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgU2V0dXAuY29uZmlnCiBBQ19TVUJTVChVU0VfVEhSRUFEX01PRFVMRSkKIFVTRV9USFJFQURfTU9EVUxFPSIiCkBAIC0zMjA4LDE2ICszMjU1LDYgQEAKICAgQUNfTVNHX1JFU1VMVChubykKIF0pCiAKLUFDX01TR19DSEVDS0lORyhmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyKQotQUNfQ09NUElMRV9JRkVMU0UoWwotICBBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPl1dLCBbW0ZTSU9SZWZOdW0gZlJlZiA9IDBdXSkKLV0sWwotICBBQ19ERUZJTkUoSEFWRV9PU1gxMDVfU0RLLCAxLCBbRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBNYWNPUyBYIDEwLjUgU0RLIG9yIGxhdGVyLl0pCi0gIEFDX01TR19SRVNVTFQoeWVzKQotXSxbCi0gIEFDX01TR19SRVNVTFQobm8pCi1dKQotCiAjIENoZWNrIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWRvYy1zdHJpbmdzKQogQUNfQVJHX1dJVEgoZG9jLXN0cmluZ3MsCkBAIC0zMjMzLDE5ICszMjcwLDYgQEAKIGZpCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2RvY19zdHJpbmdzKQogCi0jIENoZWNrIGlmIGV2YWwgbG9vcCBzaG91bGQgdXNlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGluZwotQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtdHNjKQotQUNfQVJHX1dJVEgodHNjLAotCSAgICBBU19IRUxQX1NUUklORyhbLS13aXRoKG91dCktdHNjXSxbZW5hYmxlL2Rpc2FibGUgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsZV0pLFsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubwotdGhlbgotICBBQ19ERUZJTkUoV0lUSF9UU0MsIDEsCi0gICAgW0RlZmluZSB0byBwcm9maWxlIHdpdGggdGhlIFBlbnRpdW0gdGltZXN0YW1wIGNvdW50ZXJdKQotICAgIEFDX01TR19SRVNVTFQoeWVzKQotZWxzZSBBQ19NU0dfUkVTVUxUKG5vKQotZmldLAotW0FDX01TR19SRVNVTFQobm8pXSkKLQogIyBDaGVjayBmb3IgUHl0aG9uLXNwZWNpZmljIG1hbGxvYyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1weW1hbGxvYykKIEFDX0FSR19XSVRIKHB5bWFsbG9jLApAQCAtMzI3Nyw2ICszMzAxLDQ3IEBACiAgICAgT1BUPSItRERZTkFNSUNfQU5OT1RBVElPTlNfRU5BQkxFRD0xICRPUFQiCiBmaQogCisjIENoZWNrIGZvciBEVHJhY2Ugc3VwcG9ydAorQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtZHRyYWNlKQorQUNfQVJHX1dJVEgoZHRyYWNlLAorICBBQ19IRUxQX1NUUklORygtLXdpdGgob3V0KS1kdHJhY2UsIFtkaXNhYmxlL2VuYWJsZSBEVHJhY2Ugc3VwcG9ydF0pLCwKKyAgd2l0aF9kdHJhY2U9bm8pCitBQ19NU0dfUkVTVUxUKCR3aXRoX2R0cmFjZSkKKworQUNfU1VCU1QoRFRSQUNFKQorQUNfU1VCU1QoREZMQUdTKQorQUNfU1VCU1QoRFRSQUNFX0hFQURFUlMpCitBQ19TVUJTVChEVFJBQ0VfT0JKUykKK0RUUkFDRT0KK0RGTEFHUz0KK0RUUkFDRV9IRUFERVJTPQorRFRSQUNFX09CSlM9CisKK2lmIHRlc3QgIiR3aXRoX2R0cmFjZSIgPSAieWVzIgordGhlbgorICAgIEFDX1BBVEhfUFJPRyhEVFJBQ0UsIFtkdHJhY2VdLCBbbm90IGZvdW5kXSkKKyAgICBpZiB0ZXN0ICIkRFRSQUNFIiA9ICJub3QgZm91bmQiOyB0aGVuCisgICAgICAgIEFDX01TR19FUlJPUihbZHRyYWNlIGNvbW1hbmQgbm90IGZvdW5kIG9uIFwkUEFUSF0pCisgICAgZmkKKyAgICBBQ19ERUZJTkUoV0lUSF9EVFJBQ0UsIDEsIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gY29tcGlsZSBpbiBEVHJhY2Ugc3VwcG9ydF0pCisgICAgRFRSQUNFX0hFQURFUlM9IkluY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmgiCisKKyAgICAjIE9uIE9TIFgsIERUcmFjZSBwcm92aWRlcnMgZG8gbm90IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjb21waWxlZCBhbmQKKyAgICAjIGxpbmtlZCBpbnRvIHRoZSBiaW5hcnkuIENvcnJlc3BvbmRpbmdseSwgZHRyYWNlKDEpIGlzIG1pc3NpbmcgdGhlIEVMRgorICAgICMgZ2VuZXJhdGlvbiBmbGFnICctRycuIFdlIGNoZWNrIGZvciBwcmVzZW5jZSBvZiB0aGlzIGZsYWcsIHJhdGhlciB0aGFuCisgICAgIyBoYXJkY29kaW5nIHN1cHBvcnQgYnkgT1MsIGluIHRoZSBpbnRlcmVzdCBvZiByb2J1c3RuZXNzLgorICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIERUcmFjZSBwcm9iZXMgcmVxdWlyZSBsaW5raW5nXSwKKyAgICAgICAgW2FjX2N2X2R0cmFjZV9saW5rXSwgW2RubAorICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9bm8KKyAgICAgICAgICAgIGVjaG8gJ0JFR0lOJyA+IGNvbmZ0ZXN0LmQKKyAgICAgICAgICAgICIkRFRSQUNFIiAtRyAtcyBjb25mdGVzdC5kIC1vIGNvbmZ0ZXN0Lm8gPiAvZGV2L251bGwgMj4mMSAmJiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9eWVzCisgICAgICBdKQorICAgIGlmIHRlc3QgIiRhY19jdl9kdHJhY2VfbGluayIgPSAieWVzIjsgdGhlbgorICAgICAgICBEVFJBQ0VfT0JKUz0iUHl0aG9uL3B5ZHRyYWNlLm8iCisgICAgZmkKK2ZpCisKICMgLUkke0RMSU5DTERJUn0gaXMgYWRkZWQgdG8gdGhlIGNvbXBpbGUgcnVsZSBmb3IgaW1wb3J0ZGwubwogQUNfU1VCU1QoRExJTkNMRElSKQogRExJTkNMRElSPS4KQEAgLTM2NjksNiArMzczNCwxMiBAQAogICAgIF0pCiBdKQogCitBQ19DSEVDS19GVU5DUyhjbG9ja19zZXR0aW1lLCBbXSwgWworICAgIEFDX0NIRUNLX0xJQihydCwgY2xvY2tfc2V0dGltZSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19TRVRUSU1FLCAxKQorICAgIF0pCitdKQorCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1ham9yLCBtaW5vciwgYW5kIG1ha2VkZXYpCiBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKQEAgLTM4MzAsNiArMzkwMSwxMCBAQAogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfZ2VuXSkKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2JpcnRodGltZV0pCiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9ibG9ja3NdKQorQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHBhc3N3ZC5wd19nZWNvcywgc3RydWN0IHBhc3N3ZC5wd19wYXNzd2RdLCBbXSwgW10sIFtbCisgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgI2luY2x1ZGUgPHB3ZC5oPgorXV0pCiAKIEFDX01TR19DSEVDS0lORyhmb3IgdGltZS5oIHRoYXQgZGVmaW5lcyBhbHR6b25lKQogQUNfQ0FDSEVfVkFMKGFjX2N2X2hlYWRlcl90aW1lX2FsdHpvbmUsWwpAQCAtMzg3OCw2ICszOTUzLDE5IEBACiAJQUNfREVGSU5FKEhBVkVfU09DS0FERFJfU1RPUkFHRSwgMSwgW3N0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIChzeXMvc29ja2V0LmgpXSkKIGZpCiAKK0FDX01TR19DSEVDS0lORyhmb3Igc29ja2FkZHJfYWxnKQorQUNfQ0FDSEVfVkFMKGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcsCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjCQlpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMJCWluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyMJCWluY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPl1dLCBbW3N0cnVjdCBzb2NrYWRkcl9hbGcgc11dKV0sCisgIFthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPXllc10sCisgIFthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPW5vXSkpCitBQ19NU0dfUkVTVUxUKCRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnKQoraWYgdGVzdCAkYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZyA9IHllczsgdGhlbgorCUFDX0RFRklORShIQVZFX1NPQ0tBRERSX0FMRywgMSwgW3N0cnVjdCBzb2NrYWRkcl9hbGcgKGxpbnV4L2lmX2FsZy5oKV0pCitmaQorCiAjIGNoZWNrcyBmb3IgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCiAKIEFDX0NfQ0hBUl9VTlNJR05FRApAQCAtMzk1MCwyMCArNDAzOCw2IEBACiAgIFtBQ19NU0dfUkVTVUxUKG5vKV0KICkKIAotdmFfbGlzdF9pc19hcnJheT1ubwotQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgdmFfbGlzdCBpcyBhbiBhcnJheSkKLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgotXV0sIFtbdmFfbGlzdCBsaXN0MSwgbGlzdDI7IGxpc3QxID0gbGlzdDI7XV0pXSxbXSxbCi0gQUNfREVGSU5FKFZBX0xJU1RfSVNfQVJSQVksIDEsIFtEZWZpbmUgaWYgYSB2YV9saXN0IGlzIGFuIGFycmF5IG9mIHNvbWUga2luZF0pCi0gdmFfbGlzdF9pc19hcnJheT15ZXMKLV0pCi1BQ19NU0dfUkVTVUxUKCR2YV9saXN0X2lzX2FycmF5KQotCiAjIHNpZ2ggLS0gZ2V0aG9zdGJ5bmFtZV9yIGlzIGEgbWVzczsgaXQgY2FuIGhhdmUgMywgNSBvciA2IGFyZ3VtZW50cyA6LSgKIEFIX1RFTVBMQVRFKEhBVkVfR0VUSE9TVEJZTkFNRV9SLAogICBbRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgc29tZSB2ZXJzaW9uIG9mIGdldGhvc3RieW5hbWVfcigpXSkKQEAgLTQ0MDYsNiArNDQ4MCw4IEBACiAgIFtkZWZpbmUgdG8gMSBpZiB5b3VyIHNlbV9nZXR2YWx1ZSBpcyBicm9rZW4uXSkKIGZpCiAKK0FDX0NIRUNLX0RFQ0xTKFtSVExEX0xBWlksIFJUTERfTk9XLCBSVExEX0dMT0JBTCwgUlRMRF9MT0NBTCwgUlRMRF9OT0RFTEVURSwgUlRMRF9OT0xPQUQsIFJUTERfREVFUEJJTkRdLCBbXSwgW10sIFtbI2luY2x1ZGUgPGRsZmNuLmg+XV0pCisKICMgZGV0ZXJtaW5lIHdoYXQgc2l6ZSBkaWdpdCB0byB1c2UgZm9yIFB5dGhvbidzIGxvbmdzCiBBQ19NU0dfQ0hFQ0tJTkcoW2RpZ2l0IHNpemUgZm9yIFB5dGhvbidzIGxvbmdzXSkKIEFDX0FSR19FTkFCTEUoYmlnLWRpZ2l0cywKQEAgLTQ1MjQsNyArNDYwMCwxMSBAQAogCiBkbmwgZGVmaW5lIExJQlBMIGFmdGVyIEFCSUZMQUdTIGFuZCBMRFZFUlNJT04gaXMgZGVmaW5lZC4KIEFDX1NVQlNUKFBZX0VOQUJMRV9TSEFSRUQpCi1MSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUID0geDsgdGhlbgorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2Vsc2UKKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKK2ZpCiBBQ19TVUJTVChMSUJQTCkKIAogIyBDaGVjayB3aGV0aGVyIHJpZ2h0IHNoaWZ0aW5nIGEgbmVnYXRpdmUgaW50ZWdlciBleHRlbmRzIHRoZSBzaWduIGJpdApAQCAtNDkyMiw3MCArNTAwMiw2IEBACiAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuXSkKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgQUNfTVNHX0NIRUNLSU5HKGZvciAlbGxkIGFuZCAlbGx1IHByaW50ZigpIGZvcm1hdCBzdXBwb3J0KQotICBBQ19DQUNIRV9WQUwoYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0LAotICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW1sKLSAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgI2luY2x1ZGUgPHN0cmluZy5oPgotCi0gICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICi0gICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgI2VuZGlmCi0KLSAgaW50IG1haW4oKQotICB7Ci0gICAgICBjaGFyIGJ1ZmZlclsyNTZdOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiLTEyMyIpKQotICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIHJldHVybiAwOwotICB9Ci0gIF1dXSldLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllc10sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm9dLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgICAgIF1dLCBbWwotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLSAgICAgIF1dKV0sCi0gICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCi0gICAgKQotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpXSkKLSAgKQotICBBQ19NU0dfUkVTVUxUKCRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQpCi1maQotCi1pZiB0ZXN0ICIkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0IiA9IHllcwotdGhlbgotICBBQ19ERUZJTkUoUFlfRk9STUFUX0xPTkdfTE9ORywgImxsIiwKLSAgW0RlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBsb25nIGxvbmcgdHlwZV0pCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTUzNzgsNyArNTM5NCw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICdmYWxzZScgLWEgIiRQeV9ERUJVRyIgIT0gJ3RydWUnOyB0aGVuCiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAotICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIgorICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICJwbGVhc2UgcnVuIC4vY29uZmlndXJlIC0td2l0aC1vcHRpbWl6YXRpb25zIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECmRpZmYgLS1naXQgYS9weWNvbmZpZy5oLmluIGIvcHljb25maWcuaC5pbgppbmRleCBiZjRiYTViLi5lN2E4MzZjIDEwMDY0NAotLS0gYS9weWNvbmZpZy5oLmluCisrKyBiL3B5Y29uZmlnLmguaW4KQEAgLTEyLDYgKzEyLDkgQEAKICAgIHN1cHBvcnQgZm9yIEFJWCBDKysgc2hhcmVkIGV4dGVuc2lvbiBtb2R1bGVzLiAqLwogI3VuZGVmIEFJWF9HRU5VSU5FX0NQTFVTUExVUwogCisvKiBUaGUgQW5kcm9pZCBBUEkgbGV2ZWwuICovCisjdW5kZWYgQU5EUk9JRF9BUElfTEVWRUwKKwogLyogRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZCBpbiBBUk0KICAgIG1peGVkLWVuZGlhbiBvcmRlciAoYnl0ZSBvcmRlciA0NTY3MDEyMykgKi8KICN1bmRlZiBET1VCTEVfSVNfQVJNX01JWEVEX0VORElBTl9JRUVFNzU0CkBAIC0xMDQsOSArMTA3LDYgQEAKIC8qIEhhcyBidWlsdGluIGF0b21pY3MgKi8KICN1bmRlZiBIQVZFX0JVSUxUSU5fQVRPTUlDCiAKLS8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIF9Cb29sLiAqLwotI3VuZGVmIEhBVkVfQzk5X0JPT0wKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlICdjaGZsYWdzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0NIRkxBR1MKIApAQCAtMTI1LDYgKzEyNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX2dldHRpbWUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX3NldHRpbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfU0VUVElNRQorCiAvKiBEZWZpbmUgaWYgdGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuICovCiAjdW5kZWYgSEFWRV9DT01QVVRFRF9HT1RPUwogCkBAIC0xNjcsNiArMTcwLDM0IEBACiAgICAqLwogI3VuZGVmIEhBVkVfREVDTF9JU05BTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfREVFUEJJTkQnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0RFRVBCSU5ECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9HTE9CQUwnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0dMT0JBTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTEFaWScsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTEFaWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTE9DQUwnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0xPQ0FMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9OT0RFTEVURScsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PTE9BRCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9MT0FECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9OT1cnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX05PVworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYHR6bmFtZScsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4KICAgICovCiAjdW5kZWYgSEFWRV9ERUNMX1RaTkFNRQpAQCAtNDUzLDEyICs0ODQsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpbml0Z3JvdXBzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0lOSVRHUk9VUFMKIAotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC4gKi8KLSN1bmRlZiBIQVZFX0lOVDMyX1QKLQotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50NjRfdC4gKi8KLSN1bmRlZiBIQVZFX0lOVDY0X1QKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lOVFRZUEVTX0gKIApAQCAtNTYxLDkgKzU4Niw2IEBACiAvKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBsb25nIGRvdWJsZS4gKi8KICN1bmRlZiBIQVZFX0xPTkdfRE9VQkxFCiAKLS8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy4gKi8KLSN1bmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxzdGF0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xTVEFUCiAKQEAgLTYzMCw5ICs2NTIsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVucHR5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX09QRU5QVFkKIAotLyogRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBNYWNPUyBYIDEwLjUgU0RLIG9yIGxhdGVyLiAqLwotI3VuZGVmIEhBVkVfT1NYMTA1X1NESwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBhdGhjb25mJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BBVEhDT05GCiAKQEAgLTg2MSw2ICs4ODAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzbnByaW50ZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TTlBSSU5URgogCisvKiBzdHJ1Y3Qgc29ja2FkZHJfYWxnIChsaW51eC9pZl9hbGcuaCkgKi8KKyN1bmRlZiBIQVZFX1NPQ0tBRERSX0FMRworCiAvKiBEZWZpbmUgaWYgc29ja2FkZHIgaGFzIHNhX2xlbiBtZW1iZXIgKi8KICN1bmRlZiBIQVZFX1NPQ0tBRERSX1NBX0xFTgogCkBAIC05MTYsNiArOTM4LDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cm9wdHMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TVFJPUFRTX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgYHB3X2dlY29zJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHBhc3N3ZCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX0dFQ09TCisKKy8qIERlZmluZSB0byAxIGlmIGBwd19wYXNzd2QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcGFzc3dkJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfUEFTU1dECisKIC8qIERlZmluZSB0byAxIGlmIGBzdF9iaXJ0aHRpbWUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CSVJUSFRJTUUKIApAQCAtMTEwMywxNSArMTEzMSw2IEBACiAvKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0Y2wgYW5kIFRDTF9VVEZfTUFYPT02ICovCiAjdW5kZWYgSEFWRV9VQ1M0X1RDTAogCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyB1aW50MzJfdC4gKi8KLSN1bmRlZiBIQVZFX1VJTlQzMl9UCi0KLS8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQ2NF90LiAqLwotI3VuZGVmIEhBVkVfVUlOVDY0X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVpbnRwdHJfdCcuICovCi0jdW5kZWYgSEFWRV9VSU5UUFRSX1QKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmFtZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9VTkFNRQogCkBAIC0xMjIyLDkgKzEyNDEsNiBAQAogLyogRGVmaW5lIGFzIHRoZSBwcmVmZXJyZWQgc2l6ZSBpbiBiaXRzIG9mIGxvbmcgZGlnaXRzICovCiAjdW5kZWYgUFlMT05HX0JJVFNfSU5fRElHSVQKIAotLyogRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIGxvbmcgbG9uZyB0eXBlICovCi0jdW5kZWYgUFlfRk9STUFUX0xPTkdfTE9ORwotCiAvKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgUHlfc3NpemVfdCAqLwogI3VuZGVmIFBZX0ZPUk1BVF9TSVpFX1QKIApAQCAtMTM0NSw5ICsxMzYxLDYgQEAKICNlbmRpZgogCiAKLS8qIERlZmluZSBpZiBhIHZhX2xpc3QgaXMgYW4gYXJyYXkgb2Ygc29tZSBraW5kICovCi0jdW5kZWYgVkFfTElTVF9JU19BUlJBWQotCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgU0lHRlBFIGhhbmRsZWQgKHNlZSBJbmNsdWRlL3B5ZnBlLmgpLiAqLwogI3VuZGVmIFdBTlRfU0lHRlBFX0hBTkRMRVIKIApAQCAtMTM1Nyw2ICsxMzcwLDkgQEAKIC8qIERlZmluZSBpZiB5b3Ugd2FudCBkb2N1bWVudGF0aW9uIHN0cmluZ3MgaW4gZXh0ZW5zaW9uIG1vZHVsZXMgKi8KICN1bmRlZiBXSVRIX0RPQ19TVFJJTkdTCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIERUcmFjZSBzdXBwb3J0ICovCisjdW5kZWYgV0lUSF9EVFJBQ0UKKwogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgbmV3LXN0eWxlIChPcGVuc3RlcCwgUmhhcHNvZHksIE1hY09TKSBkeW5hbWljCiAgICBsaW5rZXIgKGR5bGQpIGluc3RlYWQgb2YgdGhlIG9sZC1zdHlsZSAoTmV4dFN0ZXApIGR5bmFtaWMgbGlua2VyIChybGQpLgogICAgRHlsZCBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydCBmcmFtZXdvcmtzLiAqLwpAQCAtMTM3NSw5ICsxMzkxLDYgQEAKIC8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIHJ1ZGltZW50YXJ5IHRocmVhZCBzdXBwb3J0ICovCiAjdW5kZWYgV0lUSF9USFJFQUQKIAotLyogRGVmaW5lIHRvIHByb2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciAqLwotI3VuZGVmIFdJVEhfVFNDCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCBweW1hbGxvYyB0byBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgdmFsZ3JpbmQgKi8KICN1bmRlZiBXSVRIX1ZBTEdSSU5ECiAKQEAgLTE0NDIsMTYgKzE0NTUsNiBAQAogLyogRGVmaW5lIHRvIGZvcmNlIHVzZSBvZiB0aHJlYWQtc2FmZSBlcnJubywgaF9lcnJubywgYW5kIG90aGVyIGZ1bmN0aW9ucyAqLwogI3VuZGVmIF9SRUVOVFJBTlQKIAotLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50MzJfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKLSAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQotICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KLSN1bmRlZiBfVUlOVDMyX1QKLQotLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50NjRfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKLSAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQotICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KLSN1bmRlZiBfVUlOVDY0X1QKLQogLyogRGVmaW5lIHRvIHRoZSBsZXZlbCBvZiBYL09wZW4gdGhhdCB5b3VyIHN5c3RlbSBzdXBwb3J0cyAqLwogI3VuZGVmIF9YT1BFTl9TT1VSQ0UKIApAQCAtMTQ4MSwxNCArMTQ4NCw2IEBACiAjdW5kZWYgaW5saW5lCiAjZW5kaWYKIAotLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDMyIGJpdHMgaWYKLSAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCi0jdW5kZWYgaW50MzJfdAotCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiBpbnQ2NF90Ci0KIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KICN1bmRlZiBtb2RlX3QKIApAQCAtMTUxMCwxNCArMTUwNSw2IEBACiAvKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gKi8KICN1bmRlZiB1aWRfdAogCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiB1aW50MzJfdAotCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiB1aW50NjRfdAotCiAvKiBEZWZpbmUgdG8gZW1wdHkgaWYgdGhlIGtleXdvcmQgZG9lcyBub3Qgd29yay4gKi8KICN1bmRlZiB2b2xhdGlsZQogCmRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CmluZGV4IDQwZjhiZjIuLmFmOWE0MTQgMTAwNjQ0Ci0tLSBhL3NldHVwLnB5CisrKyBiL3NldHVwLnB5CkBAIC0xODUsNyArMTg1LDcgQEAKICAgICBpZiBub3QgbGlzdDoKICAgICAgICAgcmV0dXJuIG1vZHVsZQogICAgIGlmIGxlbihsaXN0KSA+IDE6Ci0gICAgICAgIGxvZy5pbmZvKCJXQVJOSU5HOiBtdWx0aXBsZSBjb3BpZXMgb2YgJXMgZm91bmQiJW1vZHVsZSkKKyAgICAgICAgbG9nLmluZm8oIldBUk5JTkc6IG11bHRpcGxlIGNvcGllcyBvZiAlcyBmb3VuZCIsIG1vZHVsZSkKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpc3RbMF0sIG1vZHVsZSkKIAogY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgpAQCAtNjUxLDkgKzY1MSwxMiBAQAogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndW5pY29kZWRhdGEnLCBbJ3VuaWNvZGVkYXRhLmMnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd1bmljb2RlZGF0YScsIFsndW5pY29kZWRhdGEuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Wyd1bmljb2RlZGF0YV9kYi5oJywgJ3VuaWNvZGVuYW1lX2RiLmgnXSkgKQogICAgICAgICAjIF9vcGNvZGUgbW9kdWxlCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19vcGNvZGUnLCBbJ19vcGNvZGUuYyddKSApCisgICAgICAgICMgYXN5bmNpbyBzcGVlZHVwcworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCJfYXN5bmNpbyIsIFsiX2FzeW5jaW9tb2R1bGUuYyJdKSApCiAKICAgICAgICAgIyBNb2R1bGVzIHdpdGggc29tZSBVTklYIGRlcGVuZGVuY2llcyAtLSBvbiBieSBkZWZhdWx0OgogICAgICAgICAjIChJZiB5b3UgaGF2ZSBhIHJlYWxseSBiYWNrd2FyZCBVTklYLCBzZWxlY3QgYW5kIHNvY2tldCBtYXkgbm90IGJlCkBAIC04MzcsNyArODQwLDcgQEAKICAgICAgICAgIyBmaW5kIG91dCB3aGljaCB2ZXJzaW9uIG9mIE9wZW5TU0wgd2UgaGF2ZQogICAgICAgICBvcGVuc3NsX3ZlciA9IDAKICAgICAgICAgb3BlbnNzbF92ZXJfcmUgPSByZS5jb21waWxlKAotICAgICAgICAgICAgJ15ccyojXHMqZGVmaW5lXHMrT1BFTlNTTF9WRVJTSU9OX05VTUJFUlxzKygweFswLTlhLWZBLUZdKyknICkKKyAgICAgICAgICAgIHInXlxzKiNccypkZWZpbmVccytPUEVOU1NMX1ZFUlNJT05fTlVNQkVSXHMrKDB4WzAtOWEtZkEtRl0rKScgKQogCiAgICAgICAgICMgbG9vayBmb3IgdGhlIG9wZW5zc2wgdmVyc2lvbiBoZWFkZXIgb24gdGhlIGNvbXBpbGVyIHNlYXJjaCBwYXRoLgogICAgICAgICBvcGVuc3Nsdl9oID0gZmluZF9maWxlKCdvcGVuc3NsL29wZW5zc2x2LmgnLCBbXSwKQEAgLTg4OCw2ICs4OTEsMjkgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTEnLCBbJ3NoYTFtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQogCisgICAgICAgIGJsYWtlMl9kZXBzID0gZ2xvYihvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHNyY2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fYmxha2UyL2ltcGwvKicpKQorICAgICAgICBibGFrZTJfZGVwcy5hcHBlbmQoJ2hhc2hsaWIuaCcpCisKKyAgICAgICAgYmxha2UyX21hY3JvcyA9IFtdCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmcgYW5kIG9zLnVuYW1lKCkubWFjaGluZSA9PSAieDg2XzY0IjoKKyAgICAgICAgICAgICMgRXZlcnkgeDg2XzY0IG1hY2hpbmUgaGFzIGF0IGxlYXN0IFNTRTIuCisgICAgICAgICAgICBibGFrZTJfbWFjcm9zLmFwcGVuZCgoJ0JMQUtFMl9VU0VfU1NFJywgJzEnKSkKKworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfYmxha2UyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19ibGFrZTIvYmxha2UybW9kdWxlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2JsYWtlMi9ibGFrZTJiX2ltcGwuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfYmxha2UyL2JsYWtlMnNfaW1wbC5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1ibGFrZTJfbWFjcm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Ymxha2UyX2RlcHMpICkKKworICAgICAgICBzaGEzX2RlcHMgPSBnbG9iKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fc2hhMy9rY3AvKicpKQorICAgICAgICBzaGEzX2RlcHMuYXBwZW5kKCdoYXNobGliLmgnKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfc2hhMy9zaGEzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPXNoYTNfZGVwcykpCisKICAgICAgICAgIyBNb2R1bGVzIHRoYXQgcHJvdmlkZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnktbGlrZSBzZW1hbnRpY3MuICBZb3Ugd2lsbAogICAgICAgICAjIHByb2JhYmx5IHdhbnQgdG8gYXJyYW5nZSBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdG8gYmUgYXZhaWxhYmxlIG9uCiAgICAgICAgICMgeW91ciBtYWNoaW5lLCB0aG91Z2ggbm9uZSBhcmUgZGVmaW5lZCBieSBkZWZhdWx0IGJlY2F1c2Ugb2YgbGlicmFyeQpAQCAtMTcwMCw3ICsxNzI2LDcgQEAKICAgICAgICAgIyBBbGwgZXhpc3RpbmcgZnJhbWV3b3JrIGJ1aWxkcyBvZiBUY2wvVGsgZG9uJ3Qgc3VwcG9ydCA2NC1iaXQKICAgICAgICAgIyBhcmNoaXRlY3R1cmVzLgogICAgICAgICBjZmxhZ3MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdDRkxBR1MnKVswXQotICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFx3KyknLCBjZmxhZ3MpCisgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbChyJy1hcmNoXHMrKFx3KyknLCBjZmxhZ3MpCiAKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICd0ay5hcmNoJykKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CkBAIC0xODg3LDYgKzE5MTMsOSBAQAogICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb25maWd1cmVfY3R5cGVzX2RhcndpbihleHQpCiAKKyAgICAgICAgICAgIHByaW50KCd3YXJuaW5nOiBidWlsZGluZyB3aXRoIHRoZSBidW5kbGVkIGNvcHkgb2YgbGliZmZpIGlzJworICAgICAgICAgICAgICAgICAgJyBkZXByZWNhdGVkIG9uIHRoaXMgcGxhdGZvcm0uICBJdCB3aWxsIG5vdCBiZScKKyAgICAgICAgICAgICAgICAgICcgZGlzdHJpYnV0ZWQgd2l0aCBQeXRob24gMy43JykKICAgICAgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKICAgICAgICAgICAgIGZmaV9idWlsZGRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdsaWJmZmknKQogICAgICAgICAgICAgZmZpX3NyY2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLCAnTW9kdWxlcycsCkBAIC0xOTgzLDEzICsyMDEyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKQogICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKFtleHQsIGV4dF90ZXN0XSkKIAotICAgICAgICBpZiBub3QgJy0td2l0aC1zeXN0ZW0tZmZpJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6Ci0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgaWYgJy0td2l0aC1zeXN0ZW0tZmZpJyBub3QgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIyBPUyBYIDEwLjUgY29tZXMgd2l0aCBsaWJmZmkuZHlsaWI7IHRoZSBpbmNsdWRlIGZpbGVzIGFyZQogICAgICAgICAgICAgIyBpbiAvdXNyL2luY2x1ZGUvZmZpCiAgICAgICAgICAgICBpbmNfZGlycy5hcHBlbmQoJy91c3IvaW5jbHVkZS9mZmknKQorICAgICAgICBlbGlmICctLXdpdGhvdXQtc3lzdGVtLWZmaScgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZmZpX2luYyA9IFtzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkxJQkZGSV9JTkNMVURFRElSIildCiAgICAgICAgIGlmIG5vdCBmZmlfaW5jIG9yIGZmaV9pbmNbMF0gPT0gJyc6CkBAIC0yMDA4LDcgKzIwMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAnZmZpX3dyYXBwZXJfaCcuZm9ybWF0KGZmaV9oKSkKICAgICAgICAgZmZpX2xpYiA9IE5vbmUKICAgICAgICAgaWYgZmZpX2luYyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBsaWJfbmFtZSBpbiAoJ2ZmaV9jb252ZW5pZW5jZScsICdmZmlfcGljJywgJ2ZmaScpOgorICAgICAgICAgICAgZm9yIGxpYl9uYW1lIGluICgnZmZpJywgJ2ZmaV9waWMnKToKICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgbGliX25hbWUpKToKICAgICAgICAgICAgICAgICAgICAgZmZpX2xpYiA9IGxpYl9uYW1lCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0yMDYxLDcgKzIwOTEsNyBAQAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm50LmgnLAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9pby5oJywKLSAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgnLApAQCAtMjEyNywxNSArMjE1Nyw2IEBACiAgICAgICAgIGlmIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6CiAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ1dJVEhPVVRfVEhSRUFEUycsIDEpKQogCi0gICAgICAgICMgSW5jcmVhc2Ugd2FybmluZyBsZXZlbCBmb3IgZ2NjOgotICAgICAgICBpZiAnZ2NjJyBpbiBjYzoKLSAgICAgICAgICAgIGNtZCA9ICgiZWNobyAnJyB8ICVzIC1XZXh0cmEgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtRSAtICIKLSAgICAgICAgICAgICAgICAgICAiPiAvZGV2L251bGwgMj4mMSIgJSBjYykKLSAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbShjbWQpCi0gICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgotICAgICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5leHRlbmQoWyctV2V4dHJhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyddKQotCiAgICAgICAgICMgVW5jb21tZW50IGZvciBleHRyYSBmdW5jdGlvbmFsaXR5OgogICAgICAgICAjZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdFWFRSQV9GVU5DVElPTkFMSVRZJywgMSkpCiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbiAoCkBAIC0yMjE0LDcgKzIyMzUsNyBAQAogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBmdWxsdmVyc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgbWlub3Jvbmx5Ci0gICAgICAgICAgICBsb2cuaW5mbygncmVuYW1pbmcge30gdG8ge30nLmZvcm1hdChmaWxlbmFtZSwgbmV3ZmlsZW5hbWUpKQorICAgICAgICAgICAgbG9nLmluZm8oJ3JlbmFtaW5nICVzIHRvICVzJywgZmlsZW5hbWUsIG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgb3MucmVuYW1lKGZpbGVuYW1lLCBuZXdmaWxlbmFtZSkKICAgICAgICAgICAgIG5ld291dGZpbGVzLmFwcGVuZChuZXdmaWxlbmFtZSkKICAgICAgICAgICAgIGlmIGZpbGVuYW1lIGluIHVwZGF0ZWRfZmlsZXM6CkBAIC0yMjU2LDcgKzIyNzcsNyBAQAogICAgIHNldHVwKCMgUHlQSSBNZXRhZGF0YSAoUEVQIDMwMSkKICAgICAgICAgICBuYW1lID0gIlB5dGhvbiIsCiAgICAgICAgICAgdmVyc2lvbiA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0sCi0gICAgICAgICAgdXJsID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy8lcyIgJSBzeXMudmVyc2lvbls6M10sCisgICAgICAgICAgdXJsID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy8lZC4lZCIgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICBtYWludGFpbmVyID0gIkd1aWRvIHZhbiBSb3NzdW0gYW5kIHRoZSBQeXRob24gY29tbXVuaXR5IiwKICAgICAgICAgICBtYWludGFpbmVyX2VtYWlsID0gInB5dGhvbi1kZXZAcHl0aG9uLm9yZyIsCiAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiQSBoaWdoLWxldmVsIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZSIsCg==